Built motion from commit e82053f2.|2.6.3
authorAndrea Amorese <andrea.amorese@xenialab.it>
Tue, 8 Mar 2022 15:10:46 +0000 (16:10 +0100)
committerAndrea Amorese <andrea.amorese@xenialab.it>
Tue, 8 Mar 2022 15:10:46 +0000 (16:10 +0100)
1256 files changed:
apidoc/api_project.js
apidoc/api_project.json
package.json
public/app/forgot/i18n/pt-BR.json
public/app/login/i18n/pt-BR.json
public/app/main/apps/analytics/i18n/de.json
public/app/main/apps/analytics/i18n/nl.json
public/app/main/apps/analytics/i18n/pt-BR.json
public/app/main/apps/callysquare/i18n/de.json
public/app/main/apps/callysquare/i18n/nl.json
public/app/main/apps/callysquare/i18n/pt-BR.json
public/app/main/apps/chat/i18n/de.json
public/app/main/apps/chat/i18n/nl.json
public/app/main/apps/contactmanager/i18n/de.json
public/app/main/apps/contactmanager/i18n/nl.json
public/app/main/apps/contactmanager/i18n/pt-BR.json
public/app/main/apps/dashboards/i18n/de.json
public/app/main/apps/dashboards/i18n/nl.json
public/app/main/apps/dashboards/i18n/sv.json
public/app/main/apps/fax/i18n/de.json
public/app/main/apps/fax/i18n/nl.json
public/app/main/apps/integrations/i18n/ar.json
public/app/main/apps/integrations/i18n/cs.json
public/app/main/apps/integrations/i18n/da.json
public/app/main/apps/integrations/i18n/de.json
public/app/main/apps/integrations/i18n/en.json
public/app/main/apps/integrations/i18n/es.json
public/app/main/apps/integrations/i18n/et.json
public/app/main/apps/integrations/i18n/fa.json
public/app/main/apps/integrations/i18n/fi.json
public/app/main/apps/integrations/i18n/fr.json
public/app/main/apps/integrations/i18n/he.json
public/app/main/apps/integrations/i18n/hi.json
public/app/main/apps/integrations/i18n/hu.json
public/app/main/apps/integrations/i18n/id.json
public/app/main/apps/integrations/i18n/it.json
public/app/main/apps/integrations/i18n/ja.json
public/app/main/apps/integrations/i18n/ko.json
public/app/main/apps/integrations/i18n/lt.json
public/app/main/apps/integrations/i18n/lv.json
public/app/main/apps/integrations/i18n/nl.json
public/app/main/apps/integrations/i18n/no.json
public/app/main/apps/integrations/i18n/pl.json
public/app/main/apps/integrations/i18n/pt-BR.json
public/app/main/apps/integrations/i18n/pt-PT.json
public/app/main/apps/integrations/i18n/ru.json
public/app/main/apps/integrations/i18n/sv.json
public/app/main/apps/integrations/i18n/tr.json
public/app/main/apps/integrations/i18n/zh-CN.json
public/app/main/apps/integrations/i18n/zh-TW.json
public/app/main/apps/jscripty/i18n/de.json
public/app/main/apps/mail/i18n/de.json
public/app/main/apps/mail/i18n/pt-BR.json
public/app/main/apps/motiondialer/i18n/de.json
public/app/main/apps/openchannel/i18n/de.json
public/app/main/apps/openchannel/i18n/pt-BR.json
public/app/main/apps/settings/i18n/de.json
public/app/main/apps/sms/i18n/de.json
public/app/main/apps/staff/i18n/de.json
public/app/main/apps/staff/i18n/pt-BR.json
public/app/main/apps/tools/i18n/de.json
public/app/main/apps/voice/i18n/de.json
public/app/main/apps/voice/i18n/pt-BR.json
public/app/main/apps/whatsapp/i18n/de.json
public/app/quick-panel/i18n/pt-BR.json
public/app/toolbar/i18n/pt-BR.json
public/index.html
public/scripts/app.ce99877e.js [moved from public/scripts/app.c856476f.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/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/license/service.js
server/components/parsers/advancedSearch.js
server/components/parsers/qs.js
server/config/express.js
server/config/license/hardware.js
server/config/license/index.js
server/config/license/util.js
server/config/local.env.js
server/config/logger.js
server/config/pm2/config.js
server/config/pm2/index.js
server/config/schedule/chat.js
server/config/schedule/cloud-provider.js
server/config/schedule/index.js
server/config/schedule/transcribe.js
server/config/schedule/whatsapp.js
server/config/seedContact.js
server/config/seedUsers.js
server/config/socketio.js
server/config/triggers/index.js
server/config/utils.js
server/errors/api.js
server/errors/index.js
server/migrations/2.6.4.js [deleted file]
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/action.js
server/services/ami/dialer/agentComplete.js
server/services/ami/dialer/final.js
server/services/ami/dialer/hangup.js
server/services/ami/dialer/history.js
server/services/ami/dialer/index.js
server/services/ami/dialer/queueCallerAbandon.js
server/services/ami/fax/action.js
server/services/ami/fax/index.js
server/services/ami/fax/rpcDb.js
server/services/ami/fax/util/gs.js
server/services/ami/fax/util/util.js
server/services/ami/index.js
server/services/ami/model/agent.js
server/services/ami/model/campaign.js
server/services/ami/model/channel.js
server/services/ami/model/deskAccount.js
server/services/ami/model/dynamics365Account.js
server/services/ami/model/faxAccount.js
server/services/ami/model/freshdeskAccount.js
server/services/ami/model/freshsalesAccount.js
server/services/ami/model/queueReport.js
server/services/ami/model/salesforceAccount.js
server/services/ami/model/servicenowAccount.js
server/services/ami/model/sugarcrmAccount.js
server/services/ami/model/telephone.js
server/services/ami/model/template.js
server/services/ami/model/trigger.js
server/services/ami/model/trunk.js
server/services/ami/model/voiceExtension.js
server/services/ami/model/voiceQueue.js
server/services/ami/model/vtigerAccount.js
server/services/ami/model/zendeskAccount.js
server/services/ami/model/zohoAccount.js
server/services/ami/preview/action.js
server/services/ami/preview/index.js
server/services/ami/preview/rpcDb.js
server/services/ami/preview/util/util.js
server/services/ami/properties.js
server/services/ami/realtime/index.js
server/services/ami/report/index.js
server/services/ami/report/userReport.js
server/services/ami/report/voiceAgentReport.js
server/services/ami/report/voiceCallReport.js
server/services/ami/report/voiceDialReport.js
server/services/ami/report/voiceQueueReport.js
server/services/ami/rpc/agentReportPreview.js
server/services/ami/rpc/attachment.js
server/services/ami/rpc/campaign.js
server/services/ami/rpc/cmContact.js
server/services/ami/rpc/cmHopper.js
server/services/ami/rpc/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/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/loggers.js
server/utils/mask-sensitive-data.js
server/utils/safe-template.js

index 5a64f5a..52a9145 100644 (file)
@@ -1,6 +1,6 @@
 define({
   "name": "xCALLY Motion API",
-  "version": "2.6.4",
+  "version": "2.6.3",
   "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.",
   "title": "xCALLY MOTION API",
   "header": {
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-03-08T08:56:00.881Z",
+    "time": "2022-03-08T14:58:32.553Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index d26ca54..756c061 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "xCALLY Motion API",
-  "version": "2.6.4",
+  "version": "2.6.3",
   "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.",
   "title": "xCALLY MOTION API",
   "header": {
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-03-08T08:56:00.881Z",
+    "time": "2022-03-08T14:58:32.553Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index afd2342..740648b 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.6.4",
+  "version": "2.6.3",
   "description": "xCALLY Motion is the new Realtime asynchronous solution for your multichannel contact center over Asterisk.",
   "main": "server/app.js",
   "engines": {
index f024ec7..caa1d08 100644 (file)
@@ -2,7 +2,7 @@
   "FORGOTPASSWORD": {
     "TITLE": "Recupere sua senha",
     "EMAIL_ADRESS": "Endereço de e-mail",
-    "SEND_RESET_LINK": "Enviar link para reset",
+    "SEND_RESET_LINK": "ENVIAR LINK PARA RESET",
     "GO_BACK": "Volte para o login",
     "LINK_SENT": "Link enviado",
     "LINNK_SENT_MESSAGE": "Um e-mail contendo um link para redefinir sua senha foi enviado para o seu endereço!",
index d9f974d..bffb47d 100644 (file)
@@ -10,7 +10,7 @@
     "REMEMBER_ME": "Lembrar-me",
     "FORGOT_PASSWORD": "Esqueceu a senha?",
     "LOG_IN": "Entrar",
-    "OR": "Ou",
+    "OR": "OU",
     "WITH_GOOGLE": "Logar com o Google",
     "WITH_FACEBOOK": "Logar com o Facebook",
     "DONT_HAVE_ACCOUNT": "Não tem conta?",
index e6b577a..f771c4b 100644 (file)
@@ -1,20 +1,20 @@
 {
   "ANALYTICS": {
     "NAME": "Name",
-    "ANALYTICS": "Analytics",
-    "METRICS": "Kennzahlen",
-    "ID": "Id",
+    "ANALYTICS": "Reporting",
+    "METRICS": "Eigene Kennzahlen",
+    "ID": "ID",
     "TABLE": "Tabelle",
     "DESCRIPTION": "Beschreibung",
     "SEARCH_FOR_ANYONE": "Suche",
-    "METRIC": "Metrik",
+    "METRIC": "MYSQL-Ausdruck. Beispiel: DATE(queuecallerjoinat)",
     "ERRORS": {
-      "NAME_REQUIRED": "Pflichtfeld",
-      "METRIC_REQUIRED": "Pflichtfeld",
-      "COLUMN_REQUIRED": "Pflichtfeld",
-      "VALUE_REQUIRED": "Pflichtfeld",
-      "CUSTOM_METRIC_REQUIRED": "Pflichtfeld",
-      "ALIAS_REQUIRED": "Pflichtfeld"
+      "NAME_REQUIRED": "Name erforderlich",
+      "METRIC_REQUIRED": "Metrik erforderlich",
+      "COLUMN_REQUIRED": "Spalte erforderlich",
+      "VALUE_REQUIRED": "Wert erforderlich",
+      "CUSTOM_METRIC_REQUIRED": "Benutzerdef. Metrik erforderlich",
+      "ALIAS_REQUIRED": "Alias erforderlich"
     },
     "NEW_METRIC": "Neue Metrik",
     "ADD_METRIC": "Metrik hinzufügen",
     "DELETE_METRIC": "Metrik löschen",
     "SAVE": "Speichern",
     "BACK": "Zurück",
-    "SELECTED": "Ausgewählte",
+    "SELECTED": "Ausgewählt",
     "SELECT_ALL": "Alles auswählen",
     "SELECT_NONE": "Nichts auswählen",
     "TYPE": "Typ",
-    "EXTRACTEDREPORTS": "Extrahierte Berichte",
+    "EXTRACTEDREPORTS": "Ausgeführte Berichte",
     "DATE_RANGE_FROM": "Datum von",
     "DATE_RANGE_TO": "Datum bis",
     "GENERATED_AT": "Generiert am",
@@ -38,7 +38,7 @@
     "NEW_REPORT": "Neuer Bericht",
     "ADD_REPORT": "Bericht hinzufügen",
     "COPY_REPORT": "Bericht kopieren",
-    "PREVIEW_REPORT": "Berichtvorschau",
+    "PREVIEW_REPORT": "Vorschau Bericht",
     "RUN_REPORT": "Bericht ausführen",
     "DOWNLOAD_JSON_REPORT": "Bericht exportieren JSON",
     "EDIT_REPORT": "Bericht bearbeiten",
@@ -50,7 +50,7 @@
     "ERROR": "Fehler",
     "QUERY_ERROR": "Abfragefehler",
     "MESSAGE": "Nachricht",
-    "CLOSE": "Schliessen",
+    "CLOSE": "Schließen",
     "FORMAT": "Format",
     "SETTINGS": "Einstellungen",
     "GENERAL": "Allgemein",
@@ -61,7 +61,7 @@
     "COLUMN": "Spalte",
     "VALUE": "Wert",
     "PREVIEW": "Vorschau",
-    "LIMITED_RESULT": "Ergebins begrenzt",
+    "LIMITED_RESULT": "Ansicht begrenzt",
     "NO_DATA": "Keine Daten",
     "CONDITIONS": "Bedingungen",
     "ALIAS": "Alias",
@@ -75,9 +75,9 @@
     "NO_METRIC_FOUND": "Keine Metrik gefunden",
     "NO_AVAILABLE_INFO": "keine Informationen verfügbar",
     "CUSTOM_METRIC": "Benutzerdefinierte Metrik",
-    "DELETE_EXTRACTEDREPORT": "Extrahierte Berichte löschen",
-    "EDIT_EXTRACTEDREPORT": "Extrahierte Berichte bearbeiten",
-    "DOWNLOAD_EXTRACTEDREPORT": "Extrahierte Berichte herunterladen",
+    "DELETE_EXTRACTEDREPORT": "Bericht löschen",
+    "EDIT_EXTRACTEDREPORT": "Bericht bearbeiten",
+    "DOWNLOAD_EXTRACTEDREPORT": "Bericht herunterladen",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
     "OF": "von",
index c214138..784ce48 100644 (file)
@@ -1,56 +1,56 @@
 {
   "ANALYTICS": {
     "NAME": "Naam",
-    "ANALYTICS": "Analytics",
-    "METRICS": "Metrieken",
+    "ANALYTICS": "Analyses",
+    "METRICS": "Statistieken",
     "ID": "Id",
     "TABLE": "Tabel",
     "DESCRIPTION": "Beschrijving",
-    "SEARCH_FOR_ANYONE": "Zoeken voor iedereen",
-    "METRIC": "Metrisch",
+    "SEARCH_FOR_ANYONE": "Zoeken",
+    "METRIC": "Statistiek",
     "ERRORS": {
-      "NAME_REQUIRED": "De naam is verplicht",
-      "METRIC_REQUIRED": "De metrische is vereist",
-      "COLUMN_REQUIRED": "De kolom is vereist",
-      "VALUE_REQUIRED": "De waarde is vereist",
-      "CUSTOM_METRIC_REQUIRED": "De aangepaste metrisch is vereist",
-      "ALIAS_REQUIRED": "De alias is vereist"
+      "NAME_REQUIRED": "Verplicht veld",
+      "METRIC_REQUIRED": "Verplicht veld",
+      "COLUMN_REQUIRED": "Verplicht veld",
+      "VALUE_REQUIRED": "Verplicht veld",
+      "CUSTOM_METRIC_REQUIRED": "Verplicht veld",
+      "ALIAS_REQUIRED": "Verplicht veld"
     },
-    "NEW_METRIC": "Nieuwe metrisch",
-    "ADD_METRIC": "Voeg metrisch",
-    "EDIT_METRIC": "Edit metrisch",
-    "DELETE_METRIC": "Verwijder metrisch",
+    "NEW_METRIC": "Nieuwe Statistiek",
+    "ADD_METRIC": "Statistiek Toevoegen",
+    "EDIT_METRIC": "Statistiek Bewerken",
+    "DELETE_METRIC": "Statistiek Verwijderen",
     "SAVE": "Opslaan",
     "BACK": "Terug",
     "SELECTED": "Geselecteerd",
-    "SELECT_ALL": "Alles selecteren",
-    "SELECT_NONE": "Selecteer None (Geen).",
+    "SELECT_ALL": "Selecteer Alles",
+    "SELECT_NONE": "Selecteer Geen",
     "TYPE": "Type",
-    "EXTRACTEDREPORTS": "Uitgepakte rapporten",
+    "EXTRACTEDREPORTS": "Resultaten",
     "DATE_RANGE_FROM": "Datumbereik Van",
     "DATE_RANGE_TO": "Datumbereik Tot",
-    "GENERATED_AT": "Gegenereerd.",
+    "GENERATED_AT": "Gegenereerd Op",
     "STATUS": "Status",
-    "OUTPUT": "Uitgang",
+    "OUTPUT": "Resultaat",
     "REPORTS": "Rapporten",
     "SEARCH_FOR_FOLDER": "Zoeken naar map",
-    "CREATED_AT": "Gemaakt op",
-    "NEW_REPORT": "Nieuw rapport",
-    "ADD_REPORT": "Rapport toevoegen",
-    "COPY_REPORT": "Kopie rapport",
-    "PREVIEW_REPORT": "Voorbeeldrapport.",
-    "RUN_REPORT": "Rapport uitvoeren",
-    "DOWNLOAD_JSON_REPORT": "Rapportgegevens exporteren JSON",
-    "EDIT_REPORT": "Rapport bewerken",
-    "DELETE_REPORT": "Rapport verwijderen",
-    "CREATE": "Map maken",
-    "RENAME": "Naam van map wijzigen",
-    "REMOVE": "Map verwijderen",
-    "SELECT_NODE": "Map selecteren",
+    "CREATED_AT": "Gegenereerd Op",
+    "NEW_REPORT": "Nieuw Rapport",
+    "ADD_REPORT": "Rapport Toevoegen",
+    "COPY_REPORT": "Raport Kopiëren",
+    "PREVIEW_REPORT": "Voorbeeldrapport",
+    "RUN_REPORT": "Rapport Genereren",
+    "DOWNLOAD_JSON_REPORT": "Rapportgegevens Exporteren JSON",
+    "EDIT_REPORT": "Rapport Bewerken",
+    "DELETE_REPORT": "Rapport Verwijderen",
+    "CREATE": "Map Nanmaken",
+    "RENAME": "Map Hernoemen",
+    "REMOVE": "Map Verwijderen",
+    "SELECT_NODE": "Map Selecteren",
     "ERROR": "Fout",
     "QUERY_ERROR": "Query fout",
     "MESSAGE": "Bericht",
-    "CLOSE": "Dicht",
+    "CLOSE": "Sluiten",
     "FORMAT": "Formaat",
     "SETTINGS": "Instellingen",
     "GENERAL": "Algemeen",
     "VALUE": "Waarde",
     "PREVIEW": "Afdrukvoorbeeld",
     "LIMITED_RESULT": "*Beperkte resultaten",
-    "NO_DATA": "Geen gegevens resultaten",
+    "NO_DATA": "Geen resultaten gevonden",
     "CONDITIONS": "Voorwaarden",
     "ALIAS": "Alias",
     "FUNCTION": "Functie",
-    "GROUP_BY": "Groeperen op",
-    "ORDER_BY": "Order By",
+    "GROUP_BY": "Groeperen Op",
+    "ORDER_BY": "Sorteren op Op",
     "ADD_REPORTFIELD": "Veld toevoegen",
-    "EDIT_REPORTFIELD": "Invoerveld",
-    "DELETE_REPORTFIELD": "Veld wissen",
-    "METRIC_NAME": "Metrisch",
-    "NO_METRIC_FOUND": "Geen metrische gevonden",
+    "EDIT_REPORTFIELD": "Invoerveld Bewerken",
+    "DELETE_REPORTFIELD": "Veld Verwijderen",
+    "METRIC_NAME": "Statistiek",
+    "NO_METRIC_FOUND": "Geen statistieken gevonden",
     "NO_AVAILABLE_INFO": "Geen beschikbare informatie",
-    "CUSTOM_METRIC": "Aangepaste metrisch",
-    "DELETE_EXTRACTEDREPORT": "Verwijder geëxtraheerd verslag",
-    "EDIT_EXTRACTEDREPORT": "Edit geëxtraheerd verslag",
-    "DOWNLOAD_EXTRACTEDREPORT": "Download geëxtraheerd verslag",
+    "CUSTOM_METRIC": "Aangepaste Statistiek",
+    "DELETE_EXTRACTEDREPORT": "Rapport Verwijderen",
+    "EDIT_EXTRACTEDREPORT": "Rapport Bewerken",
+    "DOWNLOAD_EXTRACTEDREPORT": "Rapport Downloaden",
     "PAGE": "Pagina",
     "ROWSPERPAGE": "Rijen per pagina",
     "OF": "Van",
index 4a4f088..1128309 100644 (file)
@@ -41,8 +41,8 @@
     "NEW_REPORT": "Novo relatório",
     "ADD_REPORT": "Adicionar relatório",
     "COPY_REPORT": "Copiar relatório",
-    "PREVIEW_REPORT": "Relatório de pré-visualização",
-    "RUN_REPORT": "Executar relatório",
+    "PREVIEW_REPORT": "Pré-visualizar relatório",
+    "RUN_REPORT": "Gerar relatório",
     "DOWNLOAD_JSON_REPORT": "Exportar relatório JSON",
     "EDIT_REPORT": "Editar relatório",
     "DELETE_REPORT": "Excluir relatório",
@@ -64,7 +64,7 @@
     "COLUMN": "Coluna",
     "VALUE": "Valor",
     "PREVIEW": "Visualizar",
-    "LIMITED_RESULT": "* Resultados limitados",
+    "LIMITED_RESULT": "Resultados limitados",
     "NO_DATA": "Nenhum resultado de dados",
     "CONDITIONS": "Condições",
     "ALIAS": "Alias",
index 43d5be6..e40e468 100644 (file)
@@ -1,20 +1,20 @@
 {
   "CALLYSQUARE": {
-    "ACCOUNT_ID": "Account",
-    "ADDUSER_PROJECTS": "Benutzer zu dem Projekt hinzufügen",
+    "ACCOUNT_ID": "Konto",
+    "ADDUSER_PROJECTS": "Benutzer zum Projekt hinzufügen",
     "ADD_ODBC": "ODBC hinzufügen",
     "ADD_PROJECT": "Projekt hinzufügen",
-    "ADD_VARIABLE": "Variable hinzufügen",
+    "ADD_VARIABLE": "Variabel hinzufügen",
     "AGENTS": "Agenten",
-    "AGI": "AGI",
+    "AGI": "Skript",
     "ALL_USERS": "Alle Benutzer",
     "ANSWER": "Antwort",
     "APIKEY": "API-Schlüssel",
     "APPID": "App-ID",
-    "APPLICATION": "Application",
-    "APPSECRET": "App Geheimnis",
-    "ARGS": "Arguments",
-    "ATTACHMENT_NAME": "Name des Anhangs",
+    "APPLICATION": "Anwendung",
+    "APPSECRET": "App-Secret",
+    "ARGS": "Argumente",
+    "ATTACHMENT_NAME": "Anhangsname",
     "ATTACHMENT_PATH": "Anhangspfad",
     "ATTACHMENT_TYPE": "Anhangstyp",
     "AUDIO": "Audio",
     "AWSLEX": "Amazon Lex",
     "AWSPOLLY": "AWS Polly",
     "AWS_ACCESS_KEY_ID": "Zugangsschlüssel-ID",
-    "AWS_BOT_NAME": "Bot-Name",
-    "AWS_LEX_REGION": "Region",
-    "AWS_POLLY_REGION": "Region",
-    "AWS_POLLY_VOICE": "Sprache",
+    "AWS_BOT_NAME": "BOT-Name",
+    "AWS_LEX_REGION": "Lex-Region",
+    "AWS_POLLY_REGION": "Polly-Region",
+    "AWS_POLLY_VOICE": "Polly-Sprache",
     "AWS_SECRET_ACCESS_KEY": "Geheimer Zugangsschlüssel",
     "AWS_TEXT_TYPE": "Texttyp",
     "BACK": "Zurück",
     "BODY": "Body",
     "CALLBACK": "Rückruf",
     "CALLBACK_PRIORITY": "Priorität",
-    "CALLYSQUARE": "Cally Square",
+    "CALLYSQUARE": "Callflow-Editor",
     "CC": "CC",
     "CHOOSE_ATTACHMENT": "Anhang wählen",
     "CLOSE": "Schließen",
-    "COMMAND": "Befehlen",
-    "COMPUTEDVARIABLES": "Skriptpfad für berechnete Variablen",
-    "CONDITION": "Voraussetzung",
+    "COMMAND": "Eingabe",
+    "COMPUTEDVARIABLES": "Skriptpfad für berechnete Variabeln",
+    "CONDITION": "Bedingung",
     "CONTEXT": "Kontext",
     "COPY": "Kopieren",
     "COPY_PROJECT": "Projekt kopieren",
@@ -61,7 +61,7 @@
     "DIGIT": "Maximale Ziffern",
     "DIGITS": "Ziffern",
     "DOWNLOAD_SQUARERECORDING": "Aufnahme hochladen",
-    "DROP_TO_UPLOAD": "ABLEGEN ZUM UPLOADEN",
+    "DROP_TO_UPLOAD": "HIER ABLEGEN ZUM UPLOADEN",
     "DROP_TO_UPLOAD_MESSAGE": "Sie können hier auch Dateien hochladen. Nur XML- max.5 MB",
     "DSN": "DSN",
     "EDIT": "Bearbeiten",
     "EDIT_XML": "XML bearbeiten",
     "END": "Ende",
     "ERRORS": {
-      "DSN_REQUIRED": "Pflichtfeld",
-      "FIELD_REQUIRED": "Pflichtfeld",
-      "NAME_REQUIRED": "Pflichtfeld",
-      "PROJECT_REQUIRED": "Pflichtfeld",
-      "URL_REQUIRED": "Pflichtfeld"
+      "DSN_REQUIRED": "DSN erforderlich",
+      "FIELD_REQUIRED": "Feld erforderlich",
+      "NAME_REQUIRED": "Name erforderlich",
+      "PROJECT_REQUIRED": "Projekt erforderlich",
+      "URL_REQUIRED": "URL erforderlich"
     },
     "ESCAPE_DIGITS": "Escape Digits",
     "EXTEN": "Erweitern",
-    "EXTENSION": "Erweiterung",
+    "EXTENSION": "Nebenstelle/Ziel",
     "EXT_DIAL": "Wählen extern",
-    "FILE": "Dateiname",
+    "FILE": "Datei",
     "FILENAME": "Dateiname",
-    "FILE_ID": "Audio",
-    "FINALLY": "Schliesslich",
+    "FILE_ID": "Datei ID",
+    "FINALLY": "Am Ende",
     "FINDBY": "Suchen nach",
     "GETDIGITS": "Ziffern erhalten",
     "GETSECRETDIGITS": "Geheime Ziffern erhalten",
     "LUMENVOXTTS": "Lumenvox Text-To-Speech",
     "MACRO": "Macro",
     "MAILBOX": "Mailbox",
-    "MATH": "Math",
+    "MATH": "Mathematik",
     "MAXDIGIT": "Maximum Ziffern",
     "MENU": "Menü",
     "METHOD": "Methode",
     "OPERATION": "Operation",
     "OPTIONS": "Optionen",
     "OPTS": "Optionen",
-    "OUTPUT": "Ausgang",
+    "OUTPUT": "Ausgabe",
     "PAGE": "Seite",
     "PASSWORD": "Passwort",
     "PAUSE": "Pause",
-    "PAUSE_ID": "Pause ID",
+    "PAUSE_ID": "Pausen ID",
     "PERMISSIONADD_PROJECTS": "Benutzer zu dem Projekt hinzufügen",
     "PHONE": "Telefon",
     "PLAYBACK": "Wiedergabe",
     "PRIORITY": "Priorität",
     "PROJECT": "Projekt",
     "PROJECTS": "Projekte",
-    "PROJECT_ID": "Projekt",
-    "QUERY": "Abfrage",
+    "PROJECT_ID": "Projekt ID",
+    "QUERY": "Query",
     "QUEUE": "Warteschlange",
-    "QUEUE_ID": "Warteschlange ID",
-    "RAWBODY": "Body",
+    "QUEUE_ID": "Warteschlangen ID",
+    "RAWBODY": "Textkörper",
     "RAWHEADERS": "Überschriften",
-    "RECORD": "Aufnahme",
-    "RECORDINGFORMAT": "Aufnahme Format",
+    "RECORD": "Aufzeichnung",
+    "RECORDINGFORMAT": "Aufzeichnungsformat",
     "RESPONSE": "Antwort Timeout",
     "RESTAPI": "Rest API",
-    "RETRY": "Wiederholungen",
+    "RETRY": "Wiederholen",
     "ROWSPERPAGE": "Zeilen pro Seite",
     "SAVE": "Speichern",
-    "SAYDIGITS": "Say Digits",
-    "SAYNUMBER": "Say number",
-    "SAYPHONETIC": "Say Phonetics",
+    "SAYDIGITS": "Ziffern sagen",
+    "SAYNUMBER": "Nummer sagen",
+    "SAYPHONETIC": "Phonetische Ansage",
     "SEARCH_FOR_ANYONE": "Suchen",
     "SELECTED": "Ausgewählt",
     "SELECTED_USERS": "Ausgewählte Benutzer",
     "SESTEKTTS": "Sestek TTS",
     "SET": "Set",
     "SIP_ID": "SIP",
-    "SMS_ACCOUNT_ID": "Konto",
+    "SMS_ACCOUNT_ID": "ID Konto für SMS",
     "SMS_TEXT": "Text",
-    "SPEED": "Speed",
-    "SQUARERECORDINGS": "Aufnahmen",
-    "SSMLGENDER": "Geschlecht",
+    "SPEED": "Geschwindigkeit",
+    "SQUARERECORDINGS": "Aufzeichnungen",
+    "SSMLGENDER": "Geschlecht Stimme",
     "START": "Start",
     "SUBJECT": "Betreff",
     "SUBPROJECT": "Sub-Projekt",
     "SYSTEM": "System",
     "TELEPHONES": "Telefone",
-    "TEMPLATE_ID": "Vorlage",
+    "TEMPLATE_ID": "Vorlagen ID",
     "TEST_ODBC": "Test ODBC",
     "TEXT": "Text",
     "TILDEASR": "Tilde ASR",
     "TIMEOUT": "Timeout",
-    "TO": "To",
+    "TO": "An",
     "TRUNK_NAME": "Trunk",
     "TTS": "Google Text-To-Speech",
     "UNIQUEID": "Eindeutige ID",
     "UNPAUSE": "Pause beenden",
-    "UPDATE_DESCRIPTION": "Update Beschreibung",
+    "UPDATE_DESCRIPTION": "Beschreibung aktualisieren",
     "UPDATE_INFO": "Info aktualisieren",
     "URI": "URI",
     "URL": "URL",
     "DIALOGFLOWV2": "DialogflowV2",
     "DIALOGFLOWV2_LANGUAGE": "Sprache",
     "DIALOGFLOWV2_PROJECT_ID": "Projekt-ID",
-    "PRIVATE_KEY": "Privat Schlüssel",
+    "PRIVATE_KEY": "Privater Schlüssel",
     "DIALTIMEZONE": "Zeitzone wählen"
   }
 }
index 0f1fe4e..dbe19f3 100644 (file)
   "CALLYSQUARE": {
     "ACCOUNT_ID": "Account",
     "ADDUSER_PROJECTS": "Gebruikers toevoegen aan project",
-    "ADD_ODBC": "Voeg ODBC",
-    "ADD_PROJECT": "Voeg Project",
-    "ADD_VARIABLE": "Variabele toevoegen",
+    "ADD_ODBC": "ODBC Toevoegen",
+    "ADD_PROJECT": "Project Toevoegen",
+    "ADD_VARIABLE": "Variabele Toevoegen",
     "AGENTS": "Agenten",
     "AGI": "AGI",
     "ALL_USERS": "Alle gebruikers",
-    "ANSWER": "Answer",
-    "APIKEY": "API sleutel",
+    "ANSWER": "Antwoorden",
+    "APIKEY": "API key",
     "APPID": "App ID",
-    "APPLICATION": "Application",
-    "APPSECRET": "App geheim",
+    "APPLICATION": "Applicatie",
+    "APPSECRET": "App secret",
     "ARGS": "Arguments",
     "ATTACHMENT_NAME": "Bijlagenaam",
-    "ATTACHMENT_PATH": "Attachment pad",
-    "ATTACHMENT_TYPE": "Type aansluiting",
+    "ATTACHMENT_PATH": "Bijlage pad",
+    "ATTACHMENT_TYPE": "Type bijlage",
     "AUDIO": "Audio",
     "AUDIOENCODING": "Audiocodering",
     "AWSLEX": "Amazon Lex",
-    "AWSPOLLY": "AWS Polly",
-    "AWS_ACCESS_KEY_ID": "Toegangstoets ID",
+    "AWSPOLLY": "Amazon Polly",
+    "AWS_ACCESS_KEY_ID": "Access key ID",
     "AWS_BOT_NAME": "Botnaam",
     "AWS_LEX_REGION": "Regio",
     "AWS_POLLY_REGION": "Regio",
     "AWS_POLLY_VOICE": "Spraak",
-    "AWS_SECRET_ACCESS_KEY": "Geheime sleutel",
-    "AWS_TEXT_TYPE": "Bericht soort",
+    "AWS_SECRET_ACCESS_KEY": "Access key",
+    "AWS_TEXT_TYPE": "Soort bericht",
     "BACK": "Terug",
     "BCC": "BCC",
     "BEEP": "Beep",
-    "BODY": "Lichaam",
-    "CALLBACK": "Callback",
+    "BODY": "Inhoud",
+    "CALLBACK": "Terugbellen",
     "CALLBACK_PRIORITY": "Prioriteit",
-    "CALLYSQUARE": "Schrijfsnelheid Square",
+    "CALLYSQUARE": "Cally Square",
     "CC": "CC",
-    "CHOOSE_ATTACHMENT": "Kies voorzetstuk",
-    "CLOSE": "Dicht",
-    "COMMAND": "Command",
+    "CHOOSE_ATTACHMENT": "Kies een bijlage",
+    "CLOSE": "Sluiten",
+    "COMMAND": "Commando",
     "COMPUTEDVARIABLES": "Scriptpad voor berekende variabelen",
-    "CONDITION": "Condition",
+    "CONDITION": "Voorwaarde",
     "CONTEXT": "Context",
     "COPY": "Kopiëren",
-    "COPY_PROJECT": "Kopieer Project",
-    "CREATED_AT": "Gemaakt op",
-    "CUSTOM_ACTION": "Aangepaste actie",
-    "CUSTOM_ACTION_DATA": "Aangepaste actiegegevens",
-    "CUSTOM_APP": "Custom Application",
+    "COPY_PROJECT": "Project Kopiëren",
+    "CREATED_AT": "Gemaakt Op",
+    "CUSTOM_ACTION": "Aangepaste Actie",
+    "CUSTOM_ACTION_DATA": "Aangepaste Actiegegevens",
+    "CUSTOM_APP": "Aangepaste Applicatie",
     "DATABASE": "Database",
-    "DELAY": "Delay",
+    "DELAY": "Vertraging",
     "DELETE": "Verwijderen",
-    "DELETE_ODBC": "Verwijderen van ODBC",
-    "DELETE_PROJECT": "Project verwijderen",
-    "DELETE_SQUARERECORDING": "Wis vierkant opnemen",
+    "DELETE_ODBC": "ODBC Verwijderen",
+    "DELETE_PROJECT": "Project Verwijderen",
+    "DELETE_SQUARERECORDING": "Opname Verwijderen",
     "DESCRIPTION": "Beschrijving",
-    "DIAL": "Dial",
-    "DIALOGFLOW": "Dialogflow",
+    "DIAL": "Bel",
+    "DIALOGFLOW": "Dialoogstroom",
     "DIALOGFLOW_LANGUAGE": "Taal",
-    "DIGIT": "Max Digits",
-    "DIGITS": "Digits",
-    "DOWNLOAD_SQUARERECORDING": "Download vierkante opnemen",
-    "DROP_TO_UPLOAD": "DROP om te uploaden",
-    "DROP_TO_UPLOAD_MESSAGE": "U kunt ook bestanden hier neer te uploaden. Alleen XML - Max. 5MB",
+    "DIGIT": "Maximaal aantal cijfers",
+    "DIGITS": "Cijfers",
+    "DOWNLOAD_SQUARERECORDING": "Opnames Downloaden",
+    "DROP_TO_UPLOAD": "Bestanden slepen om te uploaden",
+    "DROP_TO_UPLOAD_MESSAGE": "U kunt ook bestanden hiernaartoe slepen om ze te uploaden. Alleen XML - Max. 5MB",
     "DSN": "DSN",
-    "EDIT": "Edit",
-    "EDIT_ODBC": "Edit ODBC",
-    "EDIT_PROJECT": "Edit Project",
-    "EDIT_SQUARERECORDING": "Edit plein opnemen",
-    "EDIT_XML": "Edit XML",
-    "END": "End",
+    "EDIT": "Bewerken",
+    "EDIT_ODBC": "ODBC Bewerken",
+    "EDIT_PROJECT": "Project Bewerken",
+    "EDIT_SQUARERECORDING": "Opnames Bewerken",
+    "EDIT_XML": "XML aanpassen",
+    "END": "Einde",
     "ERRORS": {
-      "DSN_REQUIRED": "Het DSN is vereist",
-      "FIELD_REQUIRED": "Het is een verplicht veld",
-      "NAME_REQUIRED": "De naam is verplicht",
-      "PROJECT_REQUIRED": "Het project is vereist",
+      "DSN_REQUIRED": "Verplicht veld",
+      "FIELD_REQUIRED": "Verplicht veld",
+      "NAME_REQUIRED": "Verplicht veld",
+      "PROJECT_REQUIRED": "Verplicht veld",
       "URL_REQUIRED": "Verplicht veld"
     },
-    "ESCAPE_DIGITS": "Escape Digits",
+    "ESCAPE_DIGITS": "Escape cijfers",
     "EXTEN": "Uitbreiding",
-    "EXTENSION": "Extension",
-    "EXT_DIAL": "External Dial",
-    "FILE": "Filename",
+    "EXTENSION": "Extensie",
+    "EXT_DIAL": "Bellen naar extern",
+    "FILE": "Bestand",
     "FILENAME": "Bestandsnaam",
     "FILE_ID": "Audio",
-    "FINALLY": "Finally",
+    "FINALLY": "Ten slotte",
     "FINDBY": "Zoek naar",
-    "GETDIGITS": "Get Digits",
-    "GETSECRETDIGITS": "Get Secret Digits",
-    "GOAL": "Goal",
-    "GOALNAME": "Goal Name",
+    "GETDIGITS": "Cijfers opvragen",
+    "GETSECRETDIGITS": "Geheime cijfers opvragen",
+    "GOAL": "Doel",
+    "GOALNAME": "Doelnaam",
     "GOOGLEASR": "GoogleASR",
     "GOOGLE_ASR_LANGUAGE": "Taal",
     "GOOGLE_CLOUD_TTS": "Google Cloud TTS",
-    "GOOGLE_CLOUD_TTS_TEXT_TYPE": "Bericht soort",
-    "GOOGLE_TTS_LANGUAGE": "Language",
+    "GOOGLE_CLOUD_TTS_TEXT_TYPE": "Soort bericht",
+    "GOOGLE_TTS_LANGUAGE": "Taal",
     "GOSUB": "GoSub",
     "GOTOC": "GoTo",
     "GOTOIF": "GoToIf",
     "GOTOIFTIME": "GoToIfTime",
     "GO_TO_PROJECTS": "Ga naar projecten",
     "GRAMMAR": "Grammatica",
-    "HANGUP": "Hangup",
+    "HANGUP": "Ophangen",
     "HEADERS": "Kopteksten",
     "HELP": {
-      "BCC": "U kunt meerdere adressen met een komma (bijvoorbeeld John.doe@xcally.com, jane.miller@xcally.com)",
-      "CC": "U kunt meerdere adressen met een komma (bijvoorbeeld John.doe@xcally.com, jane.miller@xcally.com)",
+      "BCC": "U kunt meerdere adressen toevoegen door ze te scheiden met een komma (bijvoorbeeld John.doe@xcally.com, jane.miller@xcally.com)",
+      "CC": "U kunt meerdere adressen toevoegen door ze te scheiden met een komma (bijvoorbeeld John.doe@xcally.com, jane.miller@xcally.com)",
       "DSN": "Voorbeeld: DRIVER=MySQL;SERVER=127.0.0.1;uid=xcall;pwd=wachtwoord;DATABASE=motion",
       "MAILBOX": "Mailbox@context",
       "MAX_TEXT_TTS": "Het maximale aantal ondersteunde tekens is 200",
-      "TO": "U kunt meerdere adressen met een komma (bijvoorbeeld John.doe@xcally.com, jane.miller@xcally.com)"
+      "TO": "U kunt meerdere adressen toevoegen door ze te scheiden met een komma  (bijvoorbeeld John.doe@xcally.com, jane.miller@xcally.com)"
     },
-    "HIDDENDIGITSNUM": "Hiddden Digits Number",
-    "HIDDENDIGITSPOS": "Hidden Digits Position",
-    "ID": "Id",
+    "HIDDENDIGITSNUM": "Verborgen Cijfer Nummer",
+    "HIDDENDIGITSPOS": "Verborgen Cijfer Positie",
+    "ID": "ID",
     "IMPORT": "Importeren",
-    "IMPORT_XML": "Import XML",
+    "IMPORT_XML": "Importeer XML",
     "INTERVAL_ID": "Interval",
-    "INTKEY": "Interrupt Key",
+    "INTKEY": "Toets voor onderbreken",
     "ISPEECHASR": "ISpeech ASR",
     "ISPEECHTTS": "ISpeech Text-To-Speech",
-    "ISPEECH_ASR_LANGUAGE": "Language",
-    "ISPEECH_TTS_LANGUAGE": "Language",
-    "KEY": "Key",
+    "ISPEECH_ASR_LANGUAGE": "Taal",
+    "ISPEECH_TTS_LANGUAGE": "Taal",
+    "KEY": "Sleutel",
     "LABEL": "Label",
     "LANGUAGECODE": "Taalcode",
-    "LASTNAME": "Last Name",
-    "LIST_ID": "List",
-    "LOGIN": "Log in",
+    "LASTNAME": "Achternaam",
+    "LIST_ID": "Lijst",
+    "LOGIN": "Inloggen",
     "LOGOUT": "Uitloggen",
     "LUMENVOXASR": "Lumenvox ASR",
     "LUMENVOXTTS": "Lumenvox Text-To-Speech",
     "MACRO": "Macro",
     "MAILBOX": "Mailbox",
-    "MATH": "Math",
-    "MAXDIGIT": "Maximum Digits",
+    "MATH": "Wiskundefuncties",
+    "MAXDIGIT": "Maximaal aantal cijfers",
     "MENU": "Menu",
     "METHOD": "Methode",
-    "MINDIGIT": "Minimum Digits",
+    "MINDIGIT": "Minimaal aantal cijfers",
     "MODEL": "Model",
     "MRCPRECOG": "MRCPRecog",
     "MRCPSYNTH": "MRCPSynth",
     "NAME": "Naam",
     "NDAACTIVITY_TYPE": "Soort activiteit",
-    "NDAGENERATE_AUDIO": "Genereer audiobestand",
+    "NDAGENERATE_AUDIO": "Audiobestand genereren",
     "NDASSISTANT_URL": "NDASSISTANT URL",
     "NDAUTH_URL": "NDAUTH-URL",
-    "NEW": "Nieuwe",
-    "NEW_ODBC": "Nieuwe ODBC verbinding",
-    "NEW_PROJECT": "Nieuw project",
-    "NEW_VARIABLE": "Nieuwe variabele",
+    "NEW": "Nieuw",
+    "NEW_ODBC": "Nieuwe ODBC Verbinding",
+    "NEW_PROJECT": "Nieuw Project",
+    "NEW_VARIABLE": "Nieuwe Variabele",
     "NOOP": "NoOp",
     "NOTES": "Aantekeningen",
     "NO_AVAILABLE_INFO": "Geen beschikbare informatie",
-    "NUMBER": "Number",
+    "NUMBER": "Nummer",
     "ODBC": "ODBC",
-    "ODBC_ID": "ODBC Connection",
+    "ODBC_ID": "ODBC Verbinding",
     "OF": "Van",
     "OPEN": "Open",
     "OPEN_NEW_WINDOW": "Open in een nieuw venster",
-    "OPEN_PROJECT": "Project openen",
-    "OPERATION": "Operation",
-    "OPTIONS": "Options",
-    "OPTS": "Options",
-    "OUTPUT": "Output",
+    "OPEN_PROJECT": "Project Openen",
+    "OPERATION": "Operatie",
+    "OPTIONS": "Opties",
+    "OPTS": "Opties",
+    "OUTPUT": "Resultaat",
     "PAGE": "Pagina",
     "PASSWORD": "Wachtwoord",
     "PAUSE": "Pauze",
-    "PAUSE_ID": "Pauzeer type",
+    "PAUSE_ID": "Soort pauze",
     "PERMISSIONADD_PROJECTS": "Gebruikers toevoegen aan project",
     "PHONE": "Telefoon",
-    "PLAYBACK": "Playback",
-    "POSITION": "Position",
-    "PRIORITY": "Priority",
+    "PLAYBACK": "Afspelen",
+    "POSITION": "Positie",
+    "PRIORITY": "Prioriteit",
     "PROJECT": "Project",
     "PROJECTS": "Projecten",
     "PROJECT_ID": "Project",
     "QUERY": "Query",
     "QUEUE": "Queue",
     "QUEUE_ID": "Queue",
-    "RAWBODY": "Lichaam",
+    "RAWBODY": "Inhoud",
     "RAWHEADERS": "Kopteksten",
-    "RECORD": "Record",
-    "RECORDINGFORMAT": "Recording Format",
-    "RESPONSE": "Response Timeout",
+    "RECORD": "Opname",
+    "RECORDINGFORMAT": "Opnameformaat",
+    "RESPONSE": "Reactie Timeout",
     "RESTAPI": "Rest API",
-    "RETRY": "Retries",
+    "RETRY": "Pogingen",
     "ROWSPERPAGE": "Rijen per pagina",
     "SAVE": "Opslaan",
-    "SAYDIGITS": "Say Digits",
-    "SAYNUMBER": "Say number",
-    "SAYPHONETIC": "Say Phonetics",
-    "SEARCH_FOR_ANYONE": "Zoeken voor iedereen",
+    "SAYDIGITS": "Cijfers uitspreken",
+    "SAYNUMBER": "Nummer uitspreken",
+    "SAYPHONETIC": "Fonetisch uitspreken",
+    "SEARCH_FOR_ANYONE": "Zoeken",
     "SELECTED": "Geselecteerd",
-    "SELECTED_USERS": "Geselecteerde gebruikers",
-    "SELECT_ALL": "Alles selecteren",
-    "SELECT_NONE": "Selecteer None (Geen).",
+    "SELECTED_USERS": "Geselecteerde Gebruikers",
+    "SELECT_ALL": "Selecteer Alles ",
+    "SELECT_NONE": "Selecteer Geen.",
     "SENDFAX": "Fax verzenden",
-    "SENDMAIL": "Send Mail",
-    "SENDSMS": "Send SMS",
+    "SENDMAIL": "Mail verzenden",
+    "SENDSMS": "SMS verzenden",
     "SESTEKASR": "Sestek ASR",
     "SESTEKNDA": "Sestek NDA",
     "SESTEKTTS": "Sestek TTS",
     "SMS_ACCOUNT_ID": "Account",
     "SMS_TEXT": "Text",
     "SPEED": "Speed",
-    "SQUARERECORDINGS": "Vierkante opnamen",
+    "SQUARERECORDINGS": "Opnames",
     "SSMLGENDER": "Geslacht",
     "START": "Start",
-    "SUBJECT": "Subject",
+    "SUBJECT": "Onderwerp",
     "SUBPROJECT": "Sub Project",
-    "SYSTEM": "System",
+    "SYSTEM": "Systeem",
     "TELEPHONES": "Telefoons",
-    "TEMPLATE_ID": "Template",
+    "TEMPLATE_ID": "Sjabloon",
     "TEST_ODBC": "Test ODBC",
     "TEXT": "Text",
     "TILDEASR": "Tilde ASR",
     "TIMEOUT": "Timeout",
-    "TO": "To",
+    "TO": "Naar",
     "TRUNK_NAME": "Trunk",
     "TTS": "Google Text-To-Speech",
     "UNIQUEID": "Unieke ID",
     "UNPAUSE": "Einde pauze",
     "UPDATE_DESCRIPTION": "Beschrijving van update",
-    "UPDATE_INFO": "Gegevens bijwerken",
+    "UPDATE_INFO": "Gegevens Bijwerken",
     "URI": "URI",
     "URL": "URL",
     "USERNAME": "Gebruikersnaam",
     "USERS": "Gebruikers",
-    "VARIABLE_ID": "Variable",
-    "VARIABLE_VALUE": "Value",
+    "VARIABLE_ID": "Variabele",
+    "VARIABLE_VALUE": "Waarde",
     "VOICEMAIL": "Voicemail",
-    "VSWITCH": "Variable Switch",
+    "VSWITCH": "Variabele schakelaar",
     "CLIENT_EMAIL": "E-mail van de klant",
     "DIALOGFLOWV2": "DialogflowV2",
     "DIALOGFLOWV2_LANGUAGE": "Taal",
     "DIALOGFLOWV2_PROJECT_ID": "Project-ID",
-    "PRIVATE_KEY": "Prive sleutel",
+    "PRIVATE_KEY": "Geheime sleutel",
     "DIALTIMEZONE": "Kies tijdzone"
   }
 }
index 65af7ca..97801f3 100644 (file)
@@ -3,8 +3,8 @@
     "ACCOUNT_ID": "Conta",
     "ADDUSER_PROJECTS": "Adicionar usuários ao projeto",
     "ADD_ODBC": "Adicionar ODBC",
-    "ADD_PROJECT": "Adicionar Projeto",
-    "ADD_VARIABLE": "Adicionar Variável",
+    "ADD_PROJECT": "Adicionar projeto",
+    "ADD_VARIABLE": "Adicionar variável",
     "AGENTS": "Agentes",
     "AGI": "AGI",
     "ALL_USERS": "Todos os usuários",
     "APIKEY": "Chave API",
     "APPID": "ID do aplicativo",
     "APPLICATION": "Aplicação",
-    "APPSECRET": "App Secret",
+    "APPSECRET": "App Senha",
     "ARGS": "Argumentos",
-    "ATTACHMENT_NAME": "Nome do Anexo",
-    "ATTACHMENT_PATH": "Caminho de Anexos",
-    "ATTACHMENT_TYPE": "Tipo de Anexo",
+    "ATTACHMENT_NAME": "Nome do anexo",
+    "ATTACHMENT_PATH": "Caminho de anexos",
+    "ATTACHMENT_TYPE": "Tipo de anexo",
     "AUDIO": "Audio",
     "AUDIOENCODING": "Codificação de áudio",
-    "AWSLEX": "Amazon Lex",
+    "AWSLEX": "AWS Lex",
     "AWSPOLLY": "AWS Polly",
     "AWS_ACCESS_KEY_ID": "Access Key ID",
     "AWS_BOT_NAME": "Nome BOT",
     "DELAY": "delay [min]",
     "DELETE": "Excluir",
     "DELETE_ODBC": "Deletar ODBC",
-    "DELETE_PROJECT": "Deletar Projeto",
+    "DELETE_PROJECT": "Deletar projeto",
     "DELETE_SQUARERECORDING": "Excluir gravação",
     "DESCRIPTION": "Descrição",
     "DIAL": "Discar",
     "DIALOGFLOW": "Dialogflow",
     "DIALOGFLOW_LANGUAGE": "Idioma",
-    "DIGIT": "Max Dígitos",
+    "DIGIT": "Dígito",
     "DIGITS": "Dígitos",
-    "DOWNLOAD_SQUARERECORDING": "Download Gravação",
-    "DROP_TO_UPLOAD": "DROP TO UPLOAD",
+    "DOWNLOAD_SQUARERECORDING": "Download gravação",
+    "DROP_TO_UPLOAD": "Soltar para UPLOAD",
     "DROP_TO_UPLOAD_MESSAGE": "Você também pode soltar arquivos aqui para fazer o upload. Apenas XML - Máx. 5MB",
     "DSN": "DSN",
     "EDIT": "Editar",
     "EDIT_ODBC": "Editar ODBC",
-    "EDIT_PROJECT": "Editar Projeto",
+    "EDIT_PROJECT": "Editar projeto",
     "EDIT_SQUARERECORDING": "Editar gravação",
     "EDIT_XML": "Editar XML",
     "END": "Fim",
@@ -83,7 +83,7 @@
     "EXT_DIAL": "Discagem Externa",
     "FILE": "Nome do arquivo",
     "FILENAME": "Nome do arquivo",
-    "FILE_ID": "Audio",
+    "FILE_ID": "Áudio",
     "FINALLY": "Finalmente",
     "FINDBY": "Encontrar por",
     "GETDIGITS": "Obter dígitos",
     "LOGIN": "Login",
     "LOGOUT": "Logout",
     "LUMENVOXASR": "Lumenvox ASR",
-    "LUMENVOXTTS": "Lumenvox Text-To-Speech",
+    "LUMENVOXTTS": "Lumenvox TTS",
     "MACRO": "Macro",
     "MAILBOX": "Caixa de correio",
     "MATH": "Math",
-    "MAXDIGIT": "Dígitos Máximos",
+    "MAXDIGIT": "Dígitos máximos",
     "MENU": "Menu",
     "METHOD": "Método",
-    "MINDIGIT": "Dígitos Mínimos",
+    "MINDIGIT": "Dígitos mínimos",
     "MODEL": "Modelo",
     "MRCPRECOG": "MRCPRecog",
     "MRCPSYNTH": "MRCPSynth",
     "NEW": "Novo",
     "NEW_ODBC": "Nova conexão ODBC",
     "NEW_PROJECT": "Novo projeto",
-    "NEW_VARIABLE": "Nova Variável",
+    "NEW_VARIABLE": "Nova variável",
     "NOOP": "NoOp",
     "NOTES": "Notas",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "RETRY": "Repetições",
     "ROWSPERPAGE": "Linhas por página",
     "SAVE": "Salvar",
-    "SAYDIGITS": "Say Digits",
-    "SAYNUMBER": "Say number",
+    "SAYDIGITS": "Falar Digitos",
+    "SAYNUMBER": "Falar número",
     "SAYPHONETIC": "Say Phonetics",
     "SEARCH_FOR_ANYONE": "Procurar",
     "SELECTED": "Selecionado",
-    "SELECTED_USERS": "Usuários Selecionados",
+    "SELECTED_USERS": "Usuários selecionados",
     "SELECT_ALL": "Selecionar tudo",
     "SELECT_NONE": "Selecione nenhum",
-    "SENDFAX": "Enviar Fax",
-    "SENDMAIL": "Enviar Email",
+    "SENDFAX": "Enviar fax",
+    "SENDMAIL": "Enviar email",
     "SENDSMS": "Enviar SMS",
     "SESTEKASR": "Sestek ASR",
     "SESTEKNDA": "Sestek NDA",
     "SESTEKTTS": "Sestek TTS",
-    "SET": "Set",
+    "SET": "Aplicar",
     "SIP_ID": "SIP",
     "SMS_ACCOUNT_ID": "Conta",
     "SMS_TEXT": "Texto",
     "TIMEOUT": "Timeout",
     "TO": "To",
     "TRUNK_NAME": "Tronco",
-    "TTS": "Google Text-To-Speech",
+    "TTS": "Google TTS",
     "UNIQUEID": "Unique ID",
     "UNPAUSE": "Fim da Pausa",
     "UPDATE_DESCRIPTION": "Atualizar descrição",
-    "UPDATE_INFO": "Informação de atualização",
+    "UPDATE_INFO": "Atualizar informação",
     "URI": "URI",
     "URL": "URL",
     "USERNAME": "Nome de usuário",
index 9fd2be8..112cad3 100644 (file)
   "CHAT": {
     "AMAZONLEX": "Amazon Lex",
     "TEXT": "Text",
-    "TIMES": "Anzahl der Zeiten pro Interaktion",
+    "TIMES": "Anzeigehäufigkeit automatische Antwort",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
     "NEW_CHATDISPOSITION": "Neue Chat-Qualifizierung",
-    "ENABLECUSTOMERATTACHMENT": "Kundenanhänge aktivieren",
-    "OFFLINE_CHAT_BUTTON": "Button Chat offline",
-    "OFFLINESTATUS": "Offline Status",
+    "ENABLECUSTOMERATTACHMENT": "Kunde darf Anhänge im Chat hochladen",
+    "OFFLINE_CHAT_BUTTON": "Text auf dem Button zum Hinterlassen einer Nachricht, wenn Chat offline",
+    "OFFLINESTATUS": "Verhalten - Chat ist offline (Außerhalb Geschäftszeiten)",
     "NAME": "Name",
     "CHATQUEUES": "Chat-Warteschlangen",
     "SEARCH_FOR_ANYONE": "Suche",
-    "STRATEGY": "Strategie",
-    "AGENT_TIMEOUT": "Agent Timeout",
+    "STRATEGY": "Verteilungsstrategie an freie Agenten",
+    "AGENT_TIMEOUT": "Klingelzeit (in Sekunden), bevor Weiterleitung an den nächsten Agenten erfolgt",
     "DESCRIPTION": "Beschreibung",
-    "KEY": "Schlüssel",
+    "KEY": "Kurzname",
     "ALIAS": "Alias-Name",
-    "VARIABLE": "Variable",
-    "INTERVAL": "Intervall",
-    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "VARIABLE": "Variabel",
+    "INTERVAL": "Zeitplanung",
+    "EDIT_CLOSE": "Interaktion schließen und Qualifizierung hinzufügen",
     "TIMEZONE": "Zeitzone",
     "MESSAGE": "Nachricht",
-    "ADVANCED": "Erweitert",
-    "FORWARDTRANSCRIPT": "Transkript weiterleiten",
-    "FORWARDTRANSCRIPTMESSAGE": "Transkript-Nachricht weiterleiten",
-    "SKIPMESSAGEBUTTON": "Nachrichtenbutton überspringen",
+    "ADVANCED": "Skript und Zeitplanung",
+    "FORWARDTRANSCRIPT": "Kunde kann Chatverlauf per E-Mail anfordern",
+    "FORWARDTRANSCRIPTMESSAGE": "Einleitungstext für die automatische E-Mail",
+    "SKIPMESSAGEBUTTON": "Text auf dem Button zum Überspringen der Bewertung/Feedback nach einem Chat",
     "EDIT_MESSAGE": "Nachricht bearbeiten",
-    "CONDITION_AGREEMENT": "Konditionelle Vereinbarung",
+    "CONDITION_AGREEMENT": "Chatbedingungen zustimmen",
     "NONE": "Nichts",
     "PRIORITY": "Priorität",
-    "ONLINESTATUS": "Online Status",
-    "UNMANAGEDSTATUS": "Status nicht bearbeitet",
-    "AUTOCLOSE": "Automatisches Schließen aktivieren",
-    "ENABLEUNMANAGEDNOTE": "Unbearbeitete Nachricht aktivieren",
-    "UNMANAGEDMESSAGE": "Unbearbeitete Nachricht",
-    "SKIPUNMANAGED": "Nachricht überspringen",
-    "SENDUNMANAGED": "Nachricht senden",
+    "ONLINESTATUS": "Verhalten - Chat ist online",
+    "UNMANAGEDSTATUS": "Verhalten - Chat ist nicht verfügbar",
+    "AUTOCLOSE": "Automatisches Abweisen, wenn kein Agent verfügbar",
+    "ENABLEUNMANAGEDNOTE": "Automatische Nachricht, wenn Chat nicht verfügbar",
+    "UNMANAGEDMESSAGE": "Hier Nachricht für den Kunden eingeben, wenn der Chat nicht verfügbar ist",
+    "SKIPUNMANAGED": "Text auf dem Button zum Beenden des Chats ohne Hinterlassen einer Nachricht",
+    "SENDUNMANAGED": "Text auf dem Button zum Beenden des Chats mit Hinterlassen einer Nachricht",
     "WEBSITESCRIPT": "Webseiten-Skript",
     "DELETE_OFFLINEMESSAGE": "Löschen",
-    "OFFLINEMESSAGES": "Offline Nachrichten",
-    "FORWARD_OFFLINE": "Offline weiterleiten",
+    "OFFLINEMESSAGES": "Offline-Nachrichten",
+    "FORWARD_OFFLINE": "Offline-Nachrichten per E-Mail weiterleiten (extern)",
     "SHOW_OFFLINEMESSAGE": "Anzeigen",
-    "FORWARD_OFFLINE_ADDRESS": "Offline-Adresse weiterleiten",
-    "CLOSINGFORM": "Formular schließen",
-    "ENABLERATING": "Bewertung aktivieren",
+    "FORWARD_OFFLINE_ADDRESS": "Empfängeradresse eingeben",
+    "CLOSINGFORM": "Verhalten bei Chatende",
+    "ENABLERATING": "Bewertung ermöglichen",
     "ENABLECUSTOMERWRITING": "Kunde kann schreiben, bevor Chat akzeptiert wird",
-    "ENABLEFEEDBACK": "Feedback aktivieren",
+    "ENABLEFEEDBACK": "Feedback ermöglichen",
     "RATINGTYPE": "Bewertungstyp",
-    "CLOSINGMESSAGE": "Abschluss Nachricht",
-    "CLOSINGMESSAGEBUTTON": "Button für Abschluss Nachricht",
-    "RATINGSTARSNUMBER": "Anzahl der Bewertungssterne",
-    "EDIT_GOTOIF": "GotoIf bearbeiten",
+    "CLOSINGMESSAGE": "Nachricht bei Chatende",
+    "CLOSINGMESSAGEBUTTON": "Text auf dem Button zum Beenden des Chats",
+    "RATINGSTARSNUMBER": "Anzahl der Bewertungssterne (1-5)",
+    "EDIT_GOTOIF": "Bedingung bearbeiten und Priorität zuweisen",
     "CONDITION": "Bedingung",
-    "TRUEPRIORITY": "Wahre Priorität",
-    "FALSEPRIORITY": "Falsche Priorität",
+    "TRUEPRIORITY": "Priorität, wenn erfüllt (true)",
+    "FALSEPRIORITY": "Priorität, wenn nicht erfüllt (false)",
     "VALUE": "Wert",
     "WEBSITEALIAS": "Website-Alias",
     "ERRORS": {
-      "TEXT_REQUIRED": "Pflichtfeld",
-      "SENDUNMANAGED_REQUIRED": "Pflichtfeld",
-      "SENDUNMANAGED_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "SKIPUNMANAGED_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "UNMANAGEDMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "WEBSITEALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "AGENT_REQUIRED": "Pflichtfeld",
-      "QUEUE_REQUIRED": "Pflichtfeld",
-      "CONDITION_REQUIRED": "Pflichtfeld",
-      "PRIORITY_REQUIRED": "Pflichtfeld",
-      "TRUEPRIORITY_REQUIRED": "Pflichtfeld",
-      "FALSEPRIORITY_REQUIRED": "Pflichtfeld",
-      "NAME_REQUIRED": "Pflichtfeld",
-      "LIST_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_REQUIRED": "Pflichtfeld",
-      "MOTIONADDRESS_REQUIRED": "Pflichtfeld",
-      "DISPOSITION_REQUIRED": "Pflichtfeld",
-      "MOTIONADDRESS_MUST_VALID_URL": "Falsches Format",
-      "EMAIL_MUST_BE_VALID": "Falsches Format",
-      "ADDRESS_REQUIRED": "Pflichtfeld",
-      "ADDRESS_MUST_VALID_URL": "Falsches Format",
-      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Pflichtfeld",
-      "ACCEPTURL_MUST_VALID_URL": "Falsches Format",
-      "TIMEOUT_REQUIRED": "Pflichtfeld",
-      "REJECTURL_MUST_VALID_URL": "Falsches Format",
-      "CLOSEURL_MUST_VALID_URL": "Falsches Format",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "WAITINGMESSAGE_REQUIRED": "Pflichtfeld",
-      "WAITINGTITLE_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "KEY_REQUIRED": "Pflichtfeld",
-      "WAITINGMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "WAITINGTITLE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "HEADER_OFFLINE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "CLOSINGQUESTION_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "TEXT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "VALUE_REQUIRED": "Pflichtfeld",
-      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "OFFLINEMESSAGEBODY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "PLACEHOLDERMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "NOTETITLE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "FONTSIZE_REQUIRED": "Pflichtfeld",
-      "COMMAND_REQUIRED": "Pflichtfeld",
+      "TEXT_REQUIRED": "Text erforderlich",
+      "SENDUNMANAGED_REQUIRED": "Text erforderlich",
+      "SENDUNMANAGED_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
+      "SKIPUNMANAGED_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
+      "UNMANAGEDMESSAGE_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
+      "WEBSITEALIAS_MAX_LENGTH": "Name darf nicht länger als {{max}} Zeichen sein",
+      "AGENT_REQUIRED": "Agent erforderlich",
+      "QUEUE_REQUIRED": "Warteschlange erforderlich",
+      "CONDITION_REQUIRED": "Bedingung (Variabel oder Wert) erforderlich",
+      "PRIORITY_REQUIRED": "Priorität erforderlich",
+      "TRUEPRIORITY_REQUIRED": "Priorität bei zutreffender Bedingung erforderlich",
+      "FALSEPRIORITY_REQUIRED": "Priorität bei nicht zutreffender Bedingung erforderlich",
+      "NAME_REQUIRED": "Name erforderlich",
+      "LIST_REQUIRED": "Liste erforderlich",
+      "AGENT_TIMEOUT_REQUIRED": "Zeitüberschreitung Agent erforderlich",
+      "MOTIONADDRESS_REQUIRED": "Adresse erforderlich",
+      "DISPOSITION_REQUIRED": "Qualifizierung erforderlich",
+      "MOTIONADDRESS_MUST_VALID_URL": "URL Format ungültig",
+      "EMAIL_MUST_BE_VALID": "E-Mail Format ungültig",
+      "ADDRESS_REQUIRED": "Adresse erforderlich",
+      "ADDRESS_MUST_VALID_URL": "URL Format ungültig",
+      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "E-Mail Adresse erforderlich",
+      "ACCEPTURL_MUST_VALID_URL": "URL Format ungültig",
+      "TIMEOUT_REQUIRED": "Zeitüberschreitung erforderlich",
+      "REJECTURL_MUST_VALID_URL": "URL Format ungültig",
+      "CLOSEURL_MUST_VALID_URL": "URL Format ungültig",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität muss größer oder gleich sein als",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität bei Bedingung erfüllt muss größer oder gleich sein als",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität bei Bedingung nicht erfüllt muss größer oder gleich sein als",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss größer oder gleich sein als",
+      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Aktualisierungsintervall muss größer oder gleich sein als",
+      "WAITINGMESSAGE_REQUIRED": "Wartenachricht erforderlich",
+      "WAITINGTITLE_REQUIRED": "Titel während Warten erforderlich",
+      "KEY_MAX_LENGTH": "Wert darf nicht länger als {{max}} Zeichen sein",
+      "KEY_REQUIRED": "Eingabe erforderlich",
+      "WAITINGMESSAGE_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
+      "WAITINGTITLE_MAX_LENGTH": "Titel darf nicht länger als {{max}} Zeichen sein",
+      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Anzahl muss größer oder gleich sein als",
+      "HEADER_OFFLINE_MAX_LENGTH": "Titel darf nicht länger als {{max}} Zeichen sein",
+      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
+      "CLOSINGQUESTION_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
+      "TEXT_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
+      "VALUE_REQUIRED": "Wert erforderlich",
+      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
+      "OFFLINEMESSAGEBODY_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
+      "PLACEHOLDERMESSAGE_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
+      "NOTETITLE_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
+      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
+      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Schriftgröße muss größer oder gleich sein als",
+      "FONTSIZE_REQUIRED": "Schriftgröße erforderlich",
+      "COMMAND_REQUIRED": "Eingabe erforderlich",
       "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "NAME_MUST_VALID_PATTERN": "Falsches Format",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "NAME_MUST_VALID_PATTERN": "Ungültiges Format Name",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung Agent muss kleiner oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung Agent muss kleiner oder gleich sein als",
       "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Auf zugewiesenen Agenten warten erforderlich",
       "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "VERTICALPOSITION_REQUIRED": "Pflichtfeld",
-      "CUSTOMERALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "TAG_REQUIRED": "Pflichtfeld",
-      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "MESSAGEFONTSIZE_REQUIRED": "Pflichtfeld",
-      "AGENTALIAS_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "CUSTOMERALIAS_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "SYSTEMALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "SYSTEMALIAS_REQUIRED": "Pflichtfeld",
-      "ACCESSKEYID_REQUIRED": "Pflichtfeld",
-      "BOTNAME_REQUIRED": "Pflichtfeld",
-      "SECRETACCESSKEY_REQUIRED": "Pflichtfeld",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
-      "VIDAOOAPIKEY_REQUIRED": "Pflichtfeld",
-      "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
-      "PRIVATEKEY_REQUIRED": "Pflichtfeld",
-      "PROJECTID_REQUIRED": "Pflichtfeld",
-      "VIDAOOTOPIC_REQUIRED": "Pflichtfeld",
-      "EMAIL_ACCOUNT_REQUIRED": "Pflichtfeld"
+      "VERTICALPOSITION_REQUIRED": "Eingabe erforderlich",
+      "CUSTOMERALIAS_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
+      "TAG_REQUIRED": "Eingabe erforderlich",
+      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Schriftgröße muss größer oder gleich sein als",
+      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Schriftgröße muss kleiner oder gleich sein als",
+      "MESSAGEFONTSIZE_REQUIRED": "Schriftgröße erforderlich",
+      "AGENTALIAS_REQUIRED": "Agenten-Alias erforderlich",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss größer oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss kleiner oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Zeitüberschreitung erforderlich",
+      "CUSTOMERALIAS_REQUIRED": "Kunden-Alias erforderlich",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss größer oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss kleiner oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Zeitüberschreitung erforderlich",
+      "SYSTEMALIAS_MAX_LENGTH": "Name darf nicht länger als {{max}} Zeichen sein",
+      "SYSTEMALIAS_REQUIRED": "System-Alias erforderlich",
+      "ACCESSKEYID_REQUIRED": "ZugangsID erforderlich",
+      "BOTNAME_REQUIRED": "Name des BOT-Assistenten erforderlich",
+      "SECRETACCESSKEY_REQUIRED": "Eingabe erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "PausenID während Qualifizierung erforderlich",
+      "VIDAOOAPIKEY_REQUIRED": "Vidaoo API-Zugang erforderlich",
+      "CLIENTEMAIL_REQUIRED": "E-Mail des Kunden erforderlich",
+      "PRIVATEKEY_REQUIRED": "Privater Schlüssel erforderlich",
+      "PROJECTID_REQUIRED": "Projekt-ID erforderlich",
+      "VIDAOOTOPIC_REQUIRED": "Vidaoo-Thema erforderlich",
+      "EMAIL_ACCOUNT_REQUIRED": "E-Mail erforderlich"
     },
     "CM_FIELD": "Kontaktmanager-Feld",
     "CHATPROACTIVEACTIONS": "Proaktive Anfragen",
     "NO_CHATPROACTIVEACTION_AVAILABLE": "Keine proaktiven Anfragen verfügbar",
     "NO_OFFLINEMESSAGE_AVAILABLE": "Keine Offline-Nachrichten verfügbar",
     "MOUSEOVER": "Mouse-Over",
-    "TIMEOUT": "Timeout",
+    "TIMEOUT": "Zeitüberschreitung",
     "TYPE": "Typ",
-    "SELECTOR": "Selektion",
+    "SELECTOR": "Auswahl/Bereich",
     "AGENT": "Agent",
-    "GOTO": "Goto",
-    "GOTOIF": "GotoIf",
-    "NOOP": "Noop",
+    "GOTO": "GeheZu (GoTo)",
+    "GOTOIF": "GeheZuWenn (GoToIf)",
+    "NOOP": "Log erstellen (NoOp)",
     "QUEUE": "Warteschlange",
-    "BUILDER": "Builder",
+    "BUILDER": "Formularerstellung",
     "PREVIEW": "Vorschau",
     "EDIT_AGENT": "Agenten bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "EDIT_GOTO": "Goto bearbeiten",
-    "EDIT_GOTOIf": "GotoIf bearbeiten",
-    "EDIT_NOOP": "Noop bearbeiten",
+    "EDIT_GOTO": "GeheZu bearbeiten",
+    "EDIT_GOTOIf": "GeheZuWenn bearbeiten",
+    "EDIT_NOOP": "Log-Erstellung bearbeiten",
     "ADD_CHATQUEUE": "Chat-Warteschlange hinzufügen",
     "EDIT_CHATQUEUE": "Chat-Warteschlange bearbeiten",
     "DELETE_CHATQUEUE": "Chat-Warteschlange löschen",
-    "SETTINGS": "Einstellungen",
+    "SETTINGS": "Allg. Einstellungen",
     "SAVE": "Speichern",
     "SCRIPT": "Skript",
     "TOKEN": "Token",
     "EDIT_CHATWEBSITE": "Chat-Webseite bearbeiten",
     "DELETE_CHATWEBSITE": "Chat-Webseite löschen",
     "LIST": "Liste",
-    "SNIPPET": "Snippet",
+    "SNIPPET": "Chat-Widget",
     "FORMS": "Formulare",
     "UP": "Nach Oben",
     "DOWN": "Nach Unten",
     "PROACTIVEACTIONS": "Proaktive Anfragen",
     "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Aktionen",
+    "ACTIONS": "Routing",
     "FIDELITY": "Treue",
-    "APPEARANCE": "Darstellung",
+    "APPEARANCE": "Darstellung Widget",
     "MAINCOLOR": "Hauptfarbe",
     "FOCUSCOLOR": "Fokusfarbe",
     "BUTTONCOLOR": "Buttonfarbe",
     "DEFAULT": "Standard",
     "WHITELABEL": "White Label",
     "LOGO": "Logo",
-    "DOWNLOADTRANSCRIPT": "Transkript herunterladen",
-    "ENQUIRY_ENABLE": "Anfrage aktivieren",
+    "DOWNLOADTRANSCRIPT": "Kunde darf Chatverlauf herunterladen (.csv-Datei)",
+    "ENQUIRY_ENABLE": "Anfrage ermöglichen",
     "ENQUIRY_FORWARDING": "Weiterleitung von Anfragen",
-    "ENQUIRY_FORWARDING_ADDRESS": "Anfrage-Weiterleitungsadresse",
+    "ENQUIRY_FORWARDING_ADDRESS": "Weiterleitungsadresse für Anfragen",
     "LABELS": "Labels",
-    "HEADER_ONLINE": "Online-Kopfzeile",
-    "ONLINE_MESSAGE": "Online Nachricht",
-    "NAME_TITLE": "Name Titel",
-    "USERNAME_PLACEHOLDER": "Platzhalter für Nutzernamen",
+    "HEADER_ONLINE": "Kopfzeile auf Widget, wenn Chat geöffnet",
+    "ONLINE_MESSAGE": "Nachricht wenn online",
+    "NAME_TITLE": "Titel",
+    "USERNAME_PLACEHOLDER": "Nutzernamen",
     "EMAIL_TITLE": "E-Mail Titel",
-    "EMAIL_PLACEHOLDER": "Platzhalter für E-Mail Adresse",
-    "START_CHAT_BUTTON": "'Chat starten' Button",
-    "AGENTS_BUSY": "Agenten besetzt",
-    "HEADER_OFFLINE": "Offline-Kopfzeile",
-    "OFFLINE_MESSAGE": "Offline Nachricht",
-    "MESSAGE_TITLE": "Nachricht Titel",
-    "ENQUIRY_MESSAGE_PLACEHOLDER": "Platzhalter für Nachrichteneingabe",
-    "ENQUIRY_BUTTON": "Anfrage-Button",
-    "RATING_MESSAGE": "Bewertungsnachricht",
-    "RATING_SEND": "Button Bewertung senden",
-    "RATING_SKIP": "Button Bewertung überspringen",
-    "ONLINE": "Online",
-    "OFFLINE": "Offline",
-    "PROACTIVE": "Proaktiv",
+    "EMAIL_PLACEHOLDER": "E-Mail Adresse",
+    "START_CHAT_BUTTON": "Text auf dem Button zum Starten des Chats",
+    "AGENTS_BUSY": "Alle Agenten besetzt",
+    "HEADER_OFFLINE": "Kopfzeile auf Widget, wenn Chat nicht geöffnet",
+    "OFFLINE_MESSAGE": "Nachricht wenn offline",
+    "MESSAGE_TITLE": "Titel der Nachricht",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Nachricht",
+    "ENQUIRY_BUTTON": "Text auf dem Button zum Starten der Anfrage",
+    "RATING_MESSAGE": "Nachricht zur Bewertung",
+    "RATING_SEND": "Bewertung absenden",
+    "RATING_SKIP": "Bewertung überspringen",
+    "ONLINE": "Formularbuilder online",
+    "OFFLINE": "Formularbuilder offline",
+    "PROACTIVE": "Proaktive Anfrage",
     "ACCEPT": "Akzeptieren",
     "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schließen",
+    "CLOSE": "Schließen und Qualifizieren",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
     "EMBEDDING": "Einbetten",
     "GENERAL": "Allgemein",
-    "SELECTED": "Ausgewählte",
+    "SELECTED": "Ausgewählt",
     "SELECT_ALL": "Alles auswählen",
     "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "HELP": {
       "MAPKEY": "Das folgende Feld aus dem Kontaktmanager:",
-      "FROMKEY": "wird in dem Chat-Snippet wie folgt zugeordnet:",
+      "FROMKEY": "wird in dem Chat-Widget wie folgt zugeordnet:",
       "TOKEN": "Automatisch generierter Token zur Verwendung im Skript",
       "COPYSCRIPTTOCLIPBOARD": "Kopieren Sie den Skripttext und fügen Sie ihn in Ihre Website ein",
-      "FORWARD_OFFLINE": "Sie können mehrere durch Kommas getrennte Adressen hinzufügen (z. B. john.doe@xcally.com, jane.miller@xcally.com)",
+      "FORWARD_OFFLINE": "Sie können mehrere durch Kommas getrennte Adressen hinzufügen (z. B. john.doe@test.com, jane.miller@test.com)",
       "MOTIONADDRESS": "Das Feld muss das folgende Format haben: ≪protocol>://<IP-Adresse>[:<port>]. Beispiel: https://X.Y.Z.W",
       "MOTIONPROXY": "Das Feld muss das folgende Format haben: ≪Protocol>:// ≪IP-Adresse>: ≪port>]. Beispiel: https://X.Y.Z.W",
-      "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
+      "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt",
       "LIST": "Liste für die Zuordnung aus dem Kontaktmanager",
-      "KEY": "Website-Kurzname (5 Zeichen), der auf der Registerkarte \"Agent\" angezeigt wird",
-      "INTEVAL": "Wählen aus der Liste der verfügbaren Intervalle",
+      "KEY": "Der Kurzname der Chat-Webseite (max. 5 Zeichen), welcher im Agententab bei eingehender Interaktion angezeigt wird",
+      "INTEVAL": "Wählen Sie hier aus einem in den Werkzeugen definiertem Zeitintervall aus",
       "TIMEZONE": "Zeitzone auswählen (Standard = lokale Zeitzone)",
       "ENABLERATING": "Bewertung nach Chat durch Kunden aktivieren",
       "ENABLEFEEDBACK": "Feedback nach Chat durch Kunden aktivieren (Max. 150 Zeichen)",
-      "FORWARDTRANSCRIPT": "Chatprotokoll nach Abschluss per E-Mail senden",
-      "AUTOCLOSE": "Aktivieren Sie diese Option, wenn Chat-Sitzungen als nicht bearbeitet geschlossen werden sollen, sofern kein Agent verfügbar ist.",
+      "FORWARDTRANSCRIPT": "Dem Kunden anbieten, den Chatverlauf nach Abschluss per E-Mail zu versenden",
+      "AUTOCLOSE": "Trennt die Verbindung zum Chat, wenn innerhalb der Öffnungszeiten kein Agent verfügbar ist. Der Kunde kann optional eine Nachricht hinterlassen",
       "ENABLEUNMANAGEDNOTE": "Automatische Nachricht an den Kunden, wenn alle Agenten besetzt sind und somit der Chat nicht verfügbar ist",
-      "ENABLECUSTOMERWRITING": "Legt fest, ob der Kunde bereits im Chat schreiben kann, bevor ein Agent den Chat entgegen nimmmt. Hinweis: Dadurch kein Status \"unbearbeitet\"",
-      "INTERVAL": "Bitte aus der Liste wählen",
-      "HIDEWHENOFFLINE": "Snippet ausblenden, wenn offline",
-      "AGENTIDENTIFIER": "Agentenkennung innerhalb der Chat-Sitzung im Snippet",
+      "ENABLECUSTOMERWRITING": "Legt fest, ob der Kunde bereits im Chat schreiben kann, bevor ein Agent den Chat entgegen nimmt. Hinweis: Hierdurch werden keine Chats in den Status \"unbearbeitet\" gesetzt",
+      "INTERVAL": "Zeitintervall auswählen",
+      "HIDEWHENOFFLINE": "Blendet das Widget aus, wenn der Chat offline ist",
+      "AGENTIDENTIFIER": "Agentenkennung innerhalb der Chat-Sitzung im Widget",
       "WEBSITEALIAS": "Ein Präfix, mit dem der Agentenname (Präfix + Agenten-ID) erstellt wird, der dem Webbesucher während der Chat-Sitzung angezeigt wird",
       "VERTICALPOSITION": "Prozentualer Abstand in Prozent vom oberen Bildschirmrand",
-      "WELCOMEMESSAGE": "Leer lassen, um keine Nachricht zu senden",
+      "WELCOMEMESSAGE": "Automatische Begrüßungsnachricht. Leer lassen, um keine automatische Nachricht zu senden",
       "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
       "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
     },
     "ADDRESS": "Adresse",
-    "ONLINESTATE": "Online Status",
-    "OFFLINESTATE": "Offline Status",
-    "RATINGSTATE": "Bewertungsstatus",
+    "ONLINESTATE": "Status Online",
+    "OFFLINESTATE": "Status Offline",
+    "RATINGSTATE": "Status Bewertung",
     "ENQUIRY": "Anfrage",
-    "OFFLINETEMPLATE": "Offline Vorlage",
+    "OFFLINETEMPLATE": "Vorlage wenn offline",
     "CHATDISPOSITIONS": "Chat-Qualifizierungen",
     "NO_CHATDISPOSITION_AVAILABLE": "Keine Qualifizierung verfügbar",
     "ADD_CHATDISPOSITION": "Qualifizierung hinzufügen",
     "NOTES": "Notizen",
     "NO_INTERACTION_AVAILABLE": "Keine Interaktionen verfügbar",
     "SELECTED_WEBSITE": "Ausgewählte Webseite",
-    "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Gotop bearbeiten",
+    "GOTOP": "Priorität setzen (GoToP)",
+    "EDIT_GOTOP": "GoToP bearbeiten",
     "SELECT_WEBSITE": "Webseite auswählen",
     "INFO": "Info",
-    "OFFLINEMESSAGES_CHATWEBSITE": "Zu Offline-Nachrichten gehen",
-    "WAITINGTITLE": "Titel während Warten",
-    "WAITINGMESSAGE": "Wartenachricht",
+    "OFFLINEMESSAGES_CHATWEBSITE": "Direkt zu Offline-Nachrichten",
+    "WAITINGTITLE": "Kopfzeile während auf einen freien Agenten gewartet wird",
+    "WAITINGMESSAGE": "Nachricht während Warten",
     "RATING": "Bewertung",
     "NO_RATINGVALUE": "Keine Bewertung",
     "AGENTSADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
     "AGENTS": "Agenten",
     "FULLNAME": "Vollständiger Name",
     "INTERNAL": "Intern",
-    "PHONE_STATE": "Telefonstatus",
-    "PHONE_STATUS": "Telefonstatus",
+    "PHONE_STATE": "Status Nebenstelle",
+    "PHONE_STATUS": "Status SIP",
     "LOGOUT": "Abmelden",
     "UNPAUSE": "Pause beenden",
     "AGENTADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
     "IN_USE": "In Verwendung",
     "VOICE": "Anrufe",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_CHATQUEUE": "Zur Echtzeit-Warteschlange für Chat gehen",
+    "GOTOREALTIME_CHATQUEUE": "Direkt zur Echtzeit-Warteschlange",
     "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
-    "IDLE": "Inaktiv",
+    "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
     "SHOWAGENTAVATAR": "Persönlichen Agenten-Avatar anzeigen",
     "AGENTAVATAR": "Agenten-Avatar",
-    "SPYINTERACTION": "Mitlesen",
-    "INTERACTIONS_CHATWEBSITE": "Zu den Interaktionen gehen",
+    "SPYINTERACTION": "Chat anzeigen",
+    "INTERACTIONS_CHATWEBSITE": "Direkt zu Interaktionen",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "CLOSINGQUESTION": "Abschlussfrage",
+    "CLOSINGQUESTION": "Frage beim Beenden des Chats",
     "WEBSCRIPT": "Webskript",
     "NO_CHATCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
     "NEW_CHATCANNEDANSWER": "Neue Textvorlage",
     "ADD_CHATCANNEDANSWER": "Textvorlage hinzufügen",
     "EDIT_CHATCANNEDANSWER": "Textvorlage bearbeiten",
     "DELETE_CHATCANNEDANSWER": "Textvorlage löschen",
-    "OFFLINEMESSAGESUBJECT": "Betreff der Nachricht bei Offline",
-    "OFFLINEMESSAGEBODY": "Test der Nachricht bei Offline",
-    "FORMSUBMITSUCCESSMESSAGE": "Meldung Formular erfolgreich gesendet",
-    "FORMSUBMITFAILUREMESSAGE": "Meldung Fehler beim Senden des Formulars",
-    "PLACEHOLDERMESSAGE": "Nachricht für Platzhalter",
-    "NOTETITLE": "Titel der Notiz",
+    "OFFLINEMESSAGESUBJECT": "Betreff der Nachricht für Offline-Interaktionen",
+    "OFFLINEMESSAGEBODY": "Text der Nachricht für Offline-Interaktionen",
+    "FORMSUBMITSUCCESSMESSAGE": "Nachricht, wenn Formular erfolgreich versendet",
+    "FORMSUBMITFAILUREMESSAGE": "Nachricht bei Fehlern im Formular",
+    "PLACEHOLDERMESSAGE": "Nachricht",
+    "NOTETITLE": "Text für Nachrichtenbereich",
     "DELETE_INTERACTION": "Interaktion löschen",
     "FONTSIZE": "Schriftgröße",
     "TEXTCOLOR": "Textfarbe",
     "COMMAND": "Eingabe",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
-    "NOTIFICATION": "Benachrichtigung",
+    "NOTIFICATION": "Benachrichtigung für Agenten",
     "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Klingeln",
+    "NOTIFICATIONSOUND": "Sound abspielen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "HIDEWHENOFFLINE": "Ausblenden, wenn offline",
     "INSERT_MESSAGE_HERE": "Nachricht hier eingeben",
-    "AGENTALIAS": "Agent Alias",
+    "AGENTALIAS": "Agenten-Alias",
     "AGENTFULLNAME": "Vollständiger Name des Agenten",
-    "AGENTIDENTIFIER": "Identifikator",
-    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Mitarbeiter",
-    "ALIGNMENT": "Ausrichtung",
-    "BOTTOM_RIGHT": "Unten rechts",
-    "LEFT": "Links",
-    "RIGHT": "Richtig",
+    "AGENTIDENTIFIER": "Identifikation Agent",
+    "WAITFORTHEASSIGNEDAGENT": "Zeit (in Sekunden), wie lange ein aktiver Chat bei einem Agenten verbleibt, wenn sich dieser abmeldet",
+    "ALIGNMENT": "Ausrichtung Widget",
+    "BOTTOM_RIGHT": "Unten Rechts",
+    "LEFT": "Linker Bildschirmrand",
+    "RIGHT": "Linker Bildschirmrand",
     "VERTICALALIGNMENT": "Vertikale Ausrichtung",
     "POSITION": "Position",
     "VERTICALPOSITION": "Vertikale Position",
-    "SNIPPETSWIPEOUT": "Snippet ausschieben",
-    "ALTERNATE": "Wechseln",
+    "SNIPPETSWIPEOUT": "Widget ausklappen",
+    "ALTERNATE": "Abwechselnd",
     "CENTERED": "Zentriert",
     "CUSTOMERAVATAR": "Kunden-Avatar",
     "DEFAULTTITLE": "Standardtitel",
     "AGENTADD_CHATWEBSITE": "Agenten zur Chat-Website hinzufügen",
     "BACKGROUNDCOLOR": "Hintergrundfarbe",
     "MESSAGEFONTSIZE": "Schriftgröße der Nachricht",
-    "AGENTTRANSFER": "Agententransfer",
-    "AGENTTRANSFERTIMEOUT": "Agententransfer-Timeout",
-    "DIALOGFLOW": "Dialogflow",
+    "AGENTTRANSFER": "Transfer an Agenten erlauben",
+    "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung für Agententransfer",
+    "DIALOGFLOW": "Google Dialogflow",
     "EDIT_DIALOGFLOW": "Dialogflow bearbeiten",
     "LANGUAGE": "Sprache",
-    "QUEUETRANSFER": "Transfer in Warteschlange",
-    "QUEUETRANSFERTIMEOUT": "Timeout bei der Warteschlangenübertragung",
-    "SYSTEMALIAS": "Systemalias",
+    "QUEUETRANSFER": "Transfer in Warteschlange erlauben",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
+    "SYSTEMALIAS": "System-Alias",
     "SYSTEMAVATAR": "System-Avatar",
     "TRANSFER": "Transfer",
     "WELCOMEMESSAGE": "Willkommensnachricht",
-    "ENABLECUSTOMERCHECKMARKS": "Bestätigung Nachricht erhalten/gelesen",
+    "ENABLECUSTOMERCHECKMARKS": "Bestätigung Nachricht erhalten/gelesen anzeigen",
     "CANNEDANSWERS": "Textvorlagen",
-    "CHATCANNEDANSWERS": "Textvorlagen",
+    "CHATCANNEDANSWERS": "Chat-Textbausteine",
     "DOWNLOAD_INTERACTION": "Herunterladen",
     "LOGIN_TIME": "Zeit angemeldet",
     "PAUSE_TIME": "Zeit in Pause",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
-    "BOTNAME": "Botname",
+    "BOTNAME": "Name des BOTs",
     "EDIT_AMAZONLEX": "Amazon Lex bearbeiten",
     "LEXREGION": "Region",
     "SECRETACCESSKEY": "Geheimer Zugangsschlüssel",
     "TEAMS_ASSOCIATION": "Teamzuweisung",
     "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "PausenID, wenn Qualifizierung erforderlich",
-    "ENABLESENDBUTTON": "Senden-Button aktivieren",
-    "FEEDBACKTITLE": "Feedback-Titel",
+    "MANDATORYDISPOSITIONPAUSEID": "PausenID während Qualifizierung",
+    "ENABLESENDBUTTON": "\"Nachricht senden\" Button für Kunden anzeigen (ansonsten Senden nur durch ENTER)",
+    "FEEDBACKTITLE": "Text auf dem Button für Feedback",
     "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
     "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
     "VIDAOOESCALATION": "Videoanruf starten",
     "VIDAOOSESSION": "Videoanruf starten",
     "VIDEO": "Video",
-    "CLIENTEMAIL": "Kunden-E-Mail",
-    "DIALOGFLOWV2": "Dialogflow V2",
+    "CLIENTEMAIL": "E-Mail des Kunden",
+    "DIALOGFLOWV2": "Google Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
     "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID",
-    "EMAIL_ACCOUNT": "Email-Konto",
-    "OPEN_NEW_INTERACTION": "Neue Interaktion öffnen",
+    "EMAIL_ACCOUNT": "E-Mail Konto",
+    "OPEN_NEW_INTERACTION": "Offline-Nachrichten per E-Mail innerhalb des Systems verwalten",
     "SUBJECT": "Betreff",
     "ADD_NOTE": "Notiz hinzufügen",
     "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
     "VIDAOOTOPIC": "Vidaoo-Thema",
     "CHANNELID": "Kanal ID",
     "EDIT_TVOX": "TVox bearbeiten",
-    "MOTIONTITLE": "Bewegungstitel",
-    "MOTIONURL": "Bewegungs-URL",
-    "MOTIONURLONANSWER": "Bewegungs-URL bei Antwort",
-    "MOTIONURLONRING": "Bewegungs-URL auf Ring",
+    "MOTIONTITLE": "Motion-Titel",
+    "MOTIONURL": "Motion-URL",
+    "MOTIONURLONANSWER": "Motion-URLL bei Antwort",
+    "MOTIONURLONRING": "Motion-URL bei Klingeln",
     "SERVICEID": "Service-ID",
-    "SERVICENAME": "Dienstname",
+    "SERVICENAME": "Servicename",
     "TVOX": "TVox",
     "TVOXIP": "TVox IP-Adresse",
     "TVOXLOGINURL": "TVox-Login-REST-URL",
index d094697..20f6e0a 100644 (file)
@@ -3,15 +3,15 @@
     "AMAZONLEX": "Amazon Lex",
     "TEXT": "Tekst",
     "TIMES": "Aantal keren per interactie",
-    "EDIT_AUTOREPLY": "Edit automatisch antwoord",
-    "AUTOREPLY": "Automatisch antwoord",
-    "NEW_CHATDISPOSITION": "Nieuwe chat dispositie",
-    "ENABLECUSTOMERATTACHMENT": "Kan een klant voorzetstukken",
+    "EDIT_AUTOREPLY": "Automatisch Antwoord Bewerken",
+    "AUTOREPLY": "Automatisch Antwoord",
+    "NEW_CHATDISPOSITION": "Nieuwe Chat Dispositie",
+    "ENABLECUSTOMERATTACHMENT": "Klantbijlage Inschakelen",
     "OFFLINE_CHAT_BUTTON": "'Offline Chat' knop",
-    "OFFLINESTATUS": "Status offline",
+    "OFFLINESTATUS": "Status Offline",
     "NAME": "Naam",
     "CHATQUEUES": "Chatwachtrijen",
-    "SEARCH_FOR_ANYONE": "Zoeken voor iedereen",
+    "SEARCH_FOR_ANYONE": "Zoeken",
     "STRATEGY": "Strategie",
     "AGENT_TIMEOUT": "Time-out agent",
     "DESCRIPTION": "Beschrijving",
     "ALIAS": "Alias",
     "VARIABLE": "Variabele",
     "INTERVAL": "Interval",
-    "EDIT_CLOSE": "Edit dicht",
+    "EDIT_CLOSE": "Bewerken Sluiten",
     "TIMEZONE": "Tijdzone",
     "MESSAGE": "Bericht",
     "ADVANCED": "Geavanceerd",
-    "FORWARDTRANSCRIPT": "Vooruit transcript",
-    "FORWARDTRANSCRIPTMESSAGE": "Vooruit Transcript bericht",
-    "SKIPMESSAGEBUTTON": "Bericht overslaan knop",
-    "EDIT_MESSAGE": "Bericht wijzigen",
-    "CONDITION_AGREEMENT": "Voorwaarde akkoord",
+    "FORWARDTRANSCRIPT": "Transcriptie doorsturen",
+    "FORWARDTRANSCRIPTMESSAGE": "Transcriptie bericht doorsturen",
+    "SKIPMESSAGEBUTTON": "Bericht Overslaan Knop",
+    "EDIT_MESSAGE": "Bericht Bewerken",
+    "CONDITION_AGREEMENT": "Akkoord met de voorwaarden",
     "NONE": "Geen",
     "PRIORITY": "Prioriteit",
-    "ONLINESTATUS": "Online status",
+    "ONLINESTATUS": "Online Status",
     "UNMANAGEDSTATUS": "Onbeheerde Status",
-    "AUTOCLOSE": "Autoclose inschakelen",
-    "ENABLEUNMANAGEDNOTE": "Om onbeheerde bericht",
+    "AUTOCLOSE": "Automatisch Sluiten Inschakelen",
+    "ENABLEUNMANAGEDNOTE": "Onbeheerd Bericht Inschakelen",
     "UNMANAGEDMESSAGE": "Bericht",
     "SKIPUNMANAGED": "Bericht overslaan",
     "SENDUNMANAGED": "Bericht verzenden",
     "WEBSITESCRIPT": "Website Script",
     "DELETE_OFFLINEMESSAGE": "Verwijderen",
     "OFFLINEMESSAGES": "Offline berichten",
-    "FORWARD_OFFLINE": "Vooruit Offline",
-    "SHOW_OFFLINEMESSAGE": "Toon",
-    "FORWARD_OFFLINE_ADDRESS": "Vooruit Offline adresboek",
-    "CLOSINGFORM": "Formulier sluiten",
-    "ENABLERATING": "Rating inschakelen",
-    "ENABLECUSTOMERWRITING": "Laat de klant tevoren schriftelijk gemachtigde accepteren",
+    "FORWARD_OFFLINE": "Offline doorsturen",
+    "SHOW_OFFLINEMESSAGE": "Offline Bericht Weergeven",
+    "FORWARD_OFFLINE_ADDRESS": "Offline adresboek doorsturen",
+    "CLOSINGFORM": "Formulier Sluiten",
+    "ENABLERATING": "Rating Inschakelen",
+    "ENABLECUSTOMERWRITING": "Laat de klant schrijven voordat de agent accepteert",
     "ENABLEFEEDBACK": "Feedback mogelijk",
-    "RATINGTYPE": "Waardering Type",
+    "RATINGTYPE": "Type Rating",
     "CLOSINGMESSAGE": "Bericht sluiten",
-    "CLOSINGMESSAGEBUTTON": "Sluiten Berichtentoets",
-    "RATINGSTARSNUMBER": "Rating Stars nummer",
-    "EDIT_GOTOIF": "GotoIf bewerken",
+    "CLOSINGMESSAGEBUTTON": "Knop om het bericht te sluiten",
+    "RATINGSTARSNUMBER": "Rating",
+    "EDIT_GOTOIF": "GotoIf Bewerken",
     "CONDITION": "Voorwaarde",
-    "TRUEPRIORITY": "Echte prioriteit",
-    "FALSEPRIORITY": "False prioriteit",
+    "TRUEPRIORITY": "Prioriteit",
+    "FALSEPRIORITY": "Geen prioriteit",
     "VALUE": "Waarde",
     "WEBSITEALIAS": "Website Alias",
     "ERRORS": {
-      "TEXT_REQUIRED": "De tekst is vereist",
-      "SENDUNMANAGED_REQUIRED": "Het is een verplicht veld",
-      "SENDUNMANAGED_MAX_LENGTH": "Het gebied moet een maximale lengte van {{max.}}",
-      "SKIPUNMANAGED_MAX_LENGTH": "Het gebied moet een maximale lengte van {{max.}}",
-      "UNMANAGEDMESSAGE_MAX_LENGTH": "Het gebied moet een maximale lengte van {{max.}}",
-      "WEBSITEALIAS_MAX_LENGTH": "Alias moet hebben een maximale lengte van {{max.}}",
-      "AGENT_REQUIRED": "De Agent is vereist",
-      "QUEUE_REQUIRED": "De wachtrij is vereist",
-      "CONDITION_REQUIRED": "De conditie is vereist",
-      "PRIORITY_REQUIRED": "De prioriteit is vereist.",
-      "TRUEPRIORITY_REQUIRED": "De prioriteit is vereist.",
-      "FALSEPRIORITY_REQUIRED": "De prioriteit is vereist.",
-      "NAME_REQUIRED": "De naam is verplicht",
-      "LIST_REQUIRED": "De lijst is vereist",
-      "AGENT_TIMEOUT_REQUIRED": "De Agent Timeout is vereist",
-      "MOTIONADDRESS_REQUIRED": "De Motion Adres is vereist.",
-      "DISPOSITION_REQUIRED": "De Dispositie is vereist",
-      "MOTIONADDRESS_MUST_VALID_URL": "De Motion adres moet worden geschreven in een geldige indeling",
-      "EMAIL_MUST_BE_VALID": "E-mail moet een geldig e-mailadres in.",
-      "ADDRESS_REQUIRED": "Het adres is vereist.",
-      "ADDRESS_MUST_VALID_URL": "Het adres moet worden geschreven in een geldige indeling",
-      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Het onderzoek Doorstuuradres is vereist",
-      "ACCEPTURL_MUST_VALID_URL": "Accepteer URL moet worden geschreven in een geldige indeling",
-      "TIMEOUT_REQUIRED": "De timeout is vereist",
-      "REJECTURL_MUST_VALID_URL": "De afwijzing URL moet worden geschreven in een geldige indeling",
-      "CLOSEURL_MUST_VALID_URL": "De nauwe URL moet worden geschreven in een geldige indeling",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De prioriteit moet groter zijn dan of gelijk aan",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De echte prioriteit moet groter zijn dan of gelijk aan",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De valse prioriteit moet groter zijn dan of gelijk aan",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De time-out moet groter zijn dan of gelijk aan",
-      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De polling moet groter zijn dan of gelijk aan",
-      "WAITINGMESSAGE_REQUIRED": "De Wachtmelding is vereist",
-      "WAITINGTITLE_REQUIRED": "De wachtende Titel is vereist",
-      "KEY_MAX_LENGTH": "Sleutel moet een lengte gelijk aan {{max.}}",
-      "KEY_REQUIRED": "De sleutel is vereist",
-      "WAITINGMESSAGE_MAX_LENGTH": "De Wachtmelding moet beschikken over een maximale lengte van {{max.}}",
-      "WAITINGTITLE_MAX_LENGTH": "De wachtende titel moeten een maximale lengte van {{max.}}",
-      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De Rating Stars nummer moet kleiner dan of gelijk aan",
-      "HEADER_OFFLINE_MAX_LENGTH": "De waarde moet hebben een maximale lengte van {{max.}}",
-      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "De waarde moet hebben een maximale lengte van {{max.}}",
-      "CLOSINGQUESTION_MAX_LENGTH": "De waarde moet hebben een maximale lengte van {{max.}}",
-      "TEXT_MAX_LENGTH": "De waarde moet een maximale lengte hebben die gelijk is aan {{max}}",
+      "TEXT_REQUIRED": "Verplicht veld",
+      "SENDUNMANAGED_REQUIRED": "Verplicht veld",
+      "SENDUNMANAGED_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
+      "SKIPUNMANAGED_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
+      "UNMANAGEDMESSAGE_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
+      "WEBSITEALIAS_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
+      "AGENT_REQUIRED": "Verplicht veld",
+      "QUEUE_REQUIRED": "Verplicht veld",
+      "CONDITION_REQUIRED": "Verplicht veld",
+      "PRIORITY_REQUIRED": "Verplicht veld",
+      "TRUEPRIORITY_REQUIRED": "Verplicht veld",
+      "FALSEPRIORITY_REQUIRED": "Verplicht veld",
+      "NAME_REQUIRED": "Verplicht veld",
+      "LIST_REQUIRED": "Verplicht veld",
+      "AGENT_TIMEOUT_REQUIRED": "Verplicht veld",
+      "MOTIONADDRESS_REQUIRED": "Verplicht veld",
+      "DISPOSITION_REQUIRED": "Verplicht veld",
+      "MOTIONADDRESS_MUST_VALID_URL": "Ongeldig formaat",
+      "EMAIL_MUST_BE_VALID": "Verplicht veld",
+      "ADDRESS_REQUIRED": "Verplicht veld",
+      "ADDRESS_MUST_VALID_URL": "Ongeldig formaat",
+      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Verplicht veld",
+      "ACCEPTURL_MUST_VALID_URL": "Ongeldig formaat",
+      "TIMEOUT_REQUIRED": "Verplicht veld",
+      "REJECTURL_MUST_VALID_URL": "Ongeldig formaat",
+      "CLOSEURL_MUST_VALID_URL": "Ongeldig formaat",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De waarde moet groter zijn dan of gelijk aan",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De waarde moet groter zijn dan of gelijk aan",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De waarde moet groter zijn dan of gelijk aan",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De waarde moet groter zijn dan of gelijk aann",
+      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De waarde moet groter zijn dan of gelijk aan",
+      "WAITINGMESSAGE_REQUIRED": "Verplicht veld",
+      "WAITINGTITLE_REQUIRED": "Verplicht veld",
+      "KEY_MAX_LENGTH": "Verplicht veld",
+      "KEY_REQUIRED": "Verplicht veld",
+      "WAITINGMESSAGE_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
+      "WAITINGTITLE_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
+      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk aan",
+      "HEADER_OFFLINE_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
+      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
+      "CLOSINGQUESTION_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
+      "TEXT_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
       "VALUE_REQUIRED": "Verplicht veld",
-      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "De waarde moet een maximale lengte hebben die gelijk is aan {{max}}",
-      "OFFLINEMESSAGEBODY_MAX_LENGTH": "De waarde moet een maximale lengte hebben die gelijk is aan {{max}}",
-      "PLACEHOLDERMESSAGE_MAX_LENGTH": "De waarde moet een maximale lengte hebben die gelijk is aan {{max}}",
-      "NOTETITLE_MAX_LENGTH": "De waarde moet een maximale lengte hebben die gelijk is aan {{max}}",
-      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "De waarde moet een maximale lengte hebben die gelijk is aan {{max}}",
-      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "De waarde moet een maximale lengte hebben die gelijk is aan {{max}}",
+      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
+      "OFFLINEMESSAGEBODY_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
+      "PLACEHOLDERMESSAGE_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
+      "NOTETITLE_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
+      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
+      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
       "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De waarde moet groter zijn dan of gelijk aan",
       "FONTSIZE_REQUIRED": "Verplicht veld",
       "COMMAND_REQUIRED": "Verplicht veld",
       "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De waarde moet groter zijn dan of gelijk aan",
       "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk aan",
       "VERTICALPOSITION_REQUIRED": "Verplicht veld",
-      "CUSTOMERALIAS_MAX_LENGTH": "De waarde moet een maximale lengte hebben die gelijk is aan {{max}}",
+      "CUSTOMERALIAS_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
       "TAG_REQUIRED": "Verplicht veld",
       "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De waarde moet groter zijn dan of gelijk aan",
       "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk aan",
       "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De waarde moet groter zijn dan of gelijk aan",
       "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk aan",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Verplicht veld",
-      "SYSTEMALIAS_MAX_LENGTH": "De waarde moet een maximale lengte hebben die gelijk is aan {{max}}",
+      "SYSTEMALIAS_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
       "SYSTEMALIAS_REQUIRED": "Verplicht veld",
       "ACCESSKEYID_REQUIRED": "Verplicht veld",
       "BOTNAME_REQUIRED": "Verplicht veld",
       "EMAIL_ACCOUNT_REQUIRED": "Verplicht veld"
     },
     "CM_FIELD": "Contact Manager veld",
-    "CHATPROACTIVEACTIONS": "Proactieve acties",
-    "NEW_CHATPROACTIVEACTION": "Nieuwe proactieve actie",
-    "EDIT_CHATPROACTIVEACTION": "Edit Pro-actief optreden",
-    "DELETE_CHATPROACTIVEACTION": "Verwijder proactief optreden",
-    "ADD_CHATPROACTIVEACTION": "Voeg proactief optreden",
+    "CHATPROACTIVEACTIONS": "Proactieve Acties",
+    "NEW_CHATPROACTIVEACTION": "Nieuwe Proactieve Actie",
+    "EDIT_CHATPROACTIVEACTION": "Proactieve Actie Bewerken",
+    "DELETE_CHATPROACTIVEACTION": "Proactieve Actie Verwijderen",
+    "ADD_CHATPROACTIVEACTION": "Proactieve Actie Toevoegen",
     "NO_CHATPROACTIVEACTION_AVAILABLE": "Geen proactieve acties beschikbaar.",
-    "NO_OFFLINEMESSAGE_AVAILABLE": "Geen Offline berichten beschikbaar.",
+    "NO_OFFLINEMESSAGE_AVAILABLE": "Geen offline berichten beschikbaar.",
     "MOUSEOVER": "Muis Over",
     "TIMEOUT": "Timeout",
     "TYPE": "Type",
     "QUEUE": "Wachtrij",
     "BUILDER": "Builder",
     "PREVIEW": "Afdrukvoorbeeld",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_QUEUE": "Wachtrij bewerken",
-    "EDIT_GOTO": "Ga naar bewerken",
-    "EDIT_GOTOIf": "GotoIf bewerken",
-    "EDIT_NOOP": "Noop bewerken",
-    "ADD_CHATQUEUE": "Voeg wachtrij voor chatten",
-    "EDIT_CHATQUEUE": "Edit wachtrij voor chatten",
-    "DELETE_CHATQUEUE": "Verwijder Chat wachtrij",
+    "EDIT_AGENT": "Agent Bewerken",
+    "EDIT_QUEUE": "Wachtrij Bewerken",
+    "EDIT_GOTO": "Ga naar Bewerken",
+    "EDIT_GOTOIf": "GotoIf Bewerken",
+    "EDIT_NOOP": "Noop Bewerken",
+    "ADD_CHATQUEUE": "Chat Wachtrij Toevoegen",
+    "EDIT_CHATQUEUE": "Chat Wachtrij Bewerken",
+    "DELETE_CHATQUEUE": "Chat wachtrij Verwijderen",
     "SETTINGS": "Instellingen",
     "SAVE": "Opslaan",
     "SCRIPT": "Script",
     "CHATWEBSITES": "Chat websites",
     "MOTIONADDRESS": "Motion adres",
     "MOTIONPROXY": "Proxy of Motion domein",
-    "ADD_CHATWEBSITE": "Voeg Chat Website",
-    "EDIT_CHATWEBSITE": "Edit Chat Website",
-    "DELETE_CHATWEBSITE": "Verwijder Chat Website",
+    "ADD_CHATWEBSITE": "Chat Website Toevoegen",
+    "EDIT_CHATWEBSITE": "Chat Website Bewerken",
+    "DELETE_CHATWEBSITE": "Chat Website verwijderen",
     "LIST": "Lijst",
     "SNIPPET": "Snapshot",
     "FORMS": "Formulieren",
     "MAINCOLOR": "Hoofdkleur",
     "FOCUSCOLOR": "Focuskleur",
     "BUTTONCOLOR": "Kleur",
-    "HEADERSHAPE": "Vorm van het maaibord",
+    "HEADERSHAPE": "Koptekst opmaak",
     "ANIMATION": "Animatie",
     "DEFAULT": "Standaard",
     "WHITELABEL": "White Label",
     "LOGO": "Logo",
-    "DOWNLOADTRANSCRIPT": "Download transcript",
-    "ENQUIRY_ENABLE": "Onderzoek inschakelen",
-    "ENQUIRY_FORWARDING": "Onderzoek doorsturen",
-    "ENQUIRY_FORWARDING_ADDRESS": "Onderzoek Doorstuuradres",
+    "DOWNLOADTRANSCRIPT": "Transcriptie downloaden",
+    "ENQUIRY_ENABLE": "Navragen inschakelen",
+    "ENQUIRY_FORWARDING": "Navraag doorsturen",
+    "ENQUIRY_FORWARDING_ADDRESS": "Doorstuuradres voor navraag",
     "LABELS": "Labels",
-    "HEADER_ONLINE": "Online voorzetstuk",
+    "HEADER_ONLINE": "Online koptekst",
     "ONLINE_MESSAGE": "Online bericht",
-    "NAME_TITLE": "Naam Input Label",
-    "USERNAME_PLACEHOLDER": "Gebruikersnaam Input Placeholder",
-    "EMAIL_TITLE": "E-mail input label",
-    "EMAIL_PLACEHOLDER": "E-mail Input Placeholder",
+    "NAME_TITLE": "Naam Label",
+    "USERNAME_PLACEHOLDER": "Gebruikersnaam Placeholder",
+    "EMAIL_TITLE": "E-mail label",
+    "EMAIL_PLACEHOLDER": "E-mail Placeholder",
     "START_CHAT_BUTTON": "'Start Chat' knop",
-    "AGENTS_BUSY": "Drukbezette Agents bericht",
-    "HEADER_OFFLINE": "Offline voorzetstuk",
+    "AGENTS_BUSY": "Agent zijn drukbezet bericht",
+    "HEADER_OFFLINE": "Offline koptekst",
     "OFFLINE_MESSAGE": "Offline berichten",
     "MESSAGE_TITLE": "Bericht Label",
-    "ENQUIRY_MESSAGE_PLACEHOLDER": "Onderzoek bericht Input Placeholder",
-    "ENQUIRY_BUTTON": "Onderzoek knop tekst",
-    "RATING_MESSAGE": "Waardering bericht",
-    "RATING_SEND": "Rating Verzendknop tekst",
-    "RATING_SKIP": "Rating Skip knop tekst",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Navraag bericht Placeholder",
+    "ENQUIRY_BUTTON": "Navraag knoptekst",
+    "RATING_MESSAGE": "Rating Bericht",
+    "RATING_SEND": "Rating Verzendknop Tekst",
+    "RATING_SKIP": "Rating Overslaan Knoptekst",
     "ONLINE": "Online",
     "OFFLINE": "Offline",
     "PROACTIVE": "Proactief",
     "ACCEPT": "Accepteren",
-    "ACCEPTMETHOD": "Accepteren methode",
+    "ACCEPTMETHOD": "Methode accepteren",
     "ACCEPTURL": "URL accepteren",
     "REJECT": "Afwijzen",
     "REJECTMETHOD": "Methode afwijzen",
     "REJECTURL": "URL afwijzen",
     "CLOSE": "Dicht",
-    "CLOSEMETHOD": "Sluit methode",
-    "CLOSEURL": "Sluit URL",
+    "CLOSEMETHOD": "Methode sluiten",
+    "CLOSEURL": "URL sluiten",
     "EMBEDDING": "Insluiten",
     "GENERAL": "Algemeen",
     "SELECTED": "Geselecteerd",
-    "SELECT_ALL": "Alles selecteren",
-    "SELECT_NONE": "Selecteer None (Geen).",
+    "SELECT_ALL": "Selecteer Alles",
+    "SELECT_NONE": "Selecteer Geen",
     "BACK": "Terug",
     "HELP": {
-      "MAPKEY": "De volgende motie Contact Manager veld:",
-      "FROMKEY": "Wordt toegewezen die u in uw ontwerpresolutie Chat fragment zoals:",
+      "MAPKEY": "Het volgende Motion Contact Manager veld:",
+      "FROMKEY": "zal worden toegewezen aan uw Motion Chat snippet als:",
       "TOKEN": "Website Motion Token",
       "COPYSCRIPTTOCLIPBOARD": "Kopieer en plak dit script in uw website",
-      "FORWARD_OFFLINE": "U kunt meerdere adressen met een komma (bijvoorbeeld John.doe@xcally.com, jane.miller@xcally.com)",
-      "MOTIONADDRESS": "Voer in de volgende notatie: <protocol>://<ipaddress>[:<port>]. Voorbeeld: https://X.Y.Z.W",
-      "MOTIONPROXY": "Voer in de volgende notatie: <protocol>://<ipaddress>[:<port>]. Voorbeeld: https://X.Y.Z.W",
+      "FORWARD_OFFLINE": "U kunt meerdere adressen toevoegen door ze te scheiden met een komma (bijvoorbeeld John.doe@xcally.com, jane.miller@xcally.com)",
+      "MOTIONADDRESS": "Gebruik de volgende notatie: <protocol>://<ipaddress>[:<port>]. Voorbeeld: https://X.Y.Z.W",
+      "MOTIONPROXY": "Gebruik volgende notatie: <protocol>://<ipaddress>[:<port>]. Voorbeeld: https://X.Y.Z.W",
       "NAME": "Alleen cijfers, letters en speciale tekens (_) worden ondersteund",
-      "LIST": "Contact Manager lijst gebruikt om contactpersonen koppelen",
-      "KEY": "Website korte naam (5 tekens) weergegeven op het tabblad Agent",
-      "INTEVAL": "Die moeten worden gekozen uit de lijst van beschikbare intervallen",
+      "LIST": "Contact Manager lijst wordt gebruikt om contactpersonen te koppelen",
+      "KEY": "De korte naam (5 tekens) van de Website die wordt weergegeven op het Agent tabblad",
+      "INTEVAL": "Moet worden geselecteerd uit de lijst van beschikbare intervallen",
       "TIMEZONE": "Selecteer één optie in de lijst (standaard=local timezone)",
-      "ENABLERATING": "Het inschakelen als u wilt dat de website bezoeker kan de interactie op het einde",
-      "ENABLEFEEDBACK": "Het inschakelen als u wilt dat de website bezoeker kan een terugkoppeling (maximaal 150 tekens) aan het einde",
-      "FORWARDTRANSCRIPT": "Het inschakelen als u wilt dat de website bezoeker wordt gevraagd een Transcript voor chatten via mail",
-      "AUTOCLOSE": "Inschakelen als u dat wilt chatsessies worden gesloten als onbeheerde indien er geen agent beschikbaar is. Meer informatie over: https://wiki.xcallymotion.com/display/XMV/Chat Websites#ChatWebsites-Snippet",
-      "ENABLEUNMANAGEDNOTE": "Het inschakelen als u wilt dat de bezoeker een bericht wanneer alle agenten bezig zijn en de chat gets onbeheerde",
-      "ENABLECUSTOMERWRITING": "Het inschakelen als u wilt dat de chat begint zonder te wachten op een beschikbare agent (let op: als u, uw chats nooit onbeheerd). Meer informatie vindt u op: https://wiki.xcallymotion.com/display/XMV/Chat Websites#ChatWebsites-Snippet",
+      "ENABLERATING": "Inschakelen als u wilt dat de website bezoeker een Rating kan achterlaten",
+      "ENABLEFEEDBACK": "Inschakelen als u wilt dat de website bezoeker feedback kan achterlaten (maximaal 150 tekens)",
+      "FORWARDTRANSCRIPT": "Inschakelen als u wilt dat de website bezoeker wordt gevraagd om de een transcriptie van de chat te ontvangen via e-mail",
+      "AUTOCLOSE": "Inschakelen als u dat wilt chatsessies worden gesloten als Onbeheerd indien er geen agent beschikbaar is. Meer informatie over: https://wiki.xcallymotion.com/display/XMV/Chat Websites#ChatWebsites-Snippet",
+      "ENABLEUNMANAGEDNOTE": "Inschakelen als u wilt dat de bezoeker een bericht ontvangt wanneer alle agenten bezet zijn en de chat onbeheerd is",
+      "ENABLECUSTOMERWRITING": "Inschakelen als u wilt dat de chat begint zonder te wachten op een beschikbare agent (let op: wanneer ingeschakeld, zullen chats nooit onbeheerd zijn). Meer informatie vindt u op: https://wiki.xcallymotion.com/display/XMV/Chat Websites#ChatWebsites-Snippet",
       "INTERVAL": "Selecteer één optie in de lijst",
-      "HIDEWHENOFFLINE": "Verbergt het fragment wanneer het offline is",
-      "AGENTIDENTIFIER": "Vertegenwoordigt de agent-ID in de chatsessie in het fragment",
-      "WEBSITEALIAS": "Een voorvoegsel gebruikt om samen de agentnaam (voorvoegsel Agentnummer) afgebeeld op het web bezoeker tijdens de chatsessie",
+      "HIDEWHENOFFLINE": "Verbergt de Chat snippet wanneer deze offline is",
+      "AGENTIDENTIFIER": "Vertegenwoordigt de agent-ID in de chatsessie in de Chat snippet",
+      "WEBSITEALIAS": "Een prefix voor het samenstellen van de agentnaam (prefix + Agentnummer) zichtbaar voor de web bezoeker tijdens de chatsessie",
       "VERTICALPOSITION": "Vertegenwoordigt de afstand in percentage vanaf de bovenkant",
-      "WELCOMEMESSAGE": "Laat leeg als u geen welkomstbericht wilt verzenden",
-      "MANDATORYDISPOSITION": "Verplichte regeling",
+      "WELCOMEMESSAGE": "Leeglaten als u geen welkomstbericht wilt verzenden",
+      "MANDATORYDISPOSITION": "Verplichte Dispositie",
       "MANDATORYDISPOSITIONPAUSEID": "Pauze om te gebruiken als verplichte dispositie is ingeschakeld"
     },
     "ADDRESS": "Adres",
-    "ONLINESTATE": "De status Online (Actief)",
-    "OFFLINESTATE": "Offline staat",
-    "RATINGSTATE": "Rating staat",
-    "ENQUIRY": "Onderzoek",
-    "OFFLINETEMPLATE": "Offline Template",
-    "CHATDISPOSITIONS": "Chat dispositieven",
-    "NO_CHATDISPOSITION_AVAILABLE": "No Chat Dispositieven beschikbaar",
-    "ADD_CHATDISPOSITION": "Voeg Chat dispositie",
+    "ONLINESTATE": "Online status",
+    "OFFLINESTATE": "Offline status",
+    "RATINGSTATE": "Waarding status",
+    "ENQUIRY": "Navraag",
+    "OFFLINETEMPLATE": "Offline sjabloon",
+    "CHATDISPOSITIONS": "Chat Disposities",
+    "NO_CHATDISPOSITION_AVAILABLE": "Geen disposities beschikbaar voor chat",
+    "ADD_CHATDISPOSITION": "Chat dispositie Toevoegen",
     "DELETE": "Verwijderen",
-    "EDIT_CHATDISPOSITION": "Edit Chat dispositie",
-    "DELETE_CHATDISPOSITION": "Verwijder Chat dispositie",
+    "EDIT_CHATDISPOSITION": "Chat dispositie Bewerken",
+    "DELETE_CHATDISPOSITION": "Chat dispositie Verwijderen",
     "CHAT": "Chat",
     "ID": "Id",
-    "NEW_CHATQUEUE": "Nieuwe wachtrij voor chatten",
+    "NEW_CHATQUEUE": "Nieuwe chat wachtrij",
     "NEW_CHATWEBSITE": "Nieuwe Chat Website",
     "ROUNDED": "Afgerond",
     "SQUARED": "Kwadraat",
     "SELECT_STATUS": "Selecteer een status",
     "FILTER": "Filter",
     "FILTERS": "Filters",
-    "TEAMADD_CHATQUEUE": "Toevoegen aan wachtrij voor chatten",
-    "AGENTADD_CHATQUEUE": "Voeg Agent naar wachtrij voor chatten",
+    "TEAMADD_CHATQUEUE": "Team aan chat wachtrij Toevoegen",
+    "AGENTADD_CHATQUEUE": "Agent aan chat wachtrij Toevoegen",
     "ALL_AGENTS": "Alle gebruikers zijn agenten",
     "SELECTED_AGENTS": "Geselecteerde agenten",
     "CLOSEDAT": "Gesloten",
     "CREATEDAT": "Gemaakt op",
     "NOTES": "Aantekeningen",
     "NO_INTERACTION_AVAILABLE": "Geen interacties beschikbaar",
-    "SELECTED_WEBSITE": "Kies een website",
+    "SELECTED_WEBSITE": "Selecteer een website",
     "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Gotop bewerken",
-    "SELECT_WEBSITE": "Kies een website",
+    "EDIT_GOTOP": "Gotop Bewerken",
+    "SELECT_WEBSITE": "Selecteer een website",
     "INFO": "Info",
     "OFFLINEMESSAGES_CHATWEBSITE": "Ga naar offline-meldingen",
-    "WAITINGTITLE": "Waiting titel",
+    "WAITINGTITLE": "Wachtmelding titel",
     "WAITINGMESSAGE": "Wachtmelding",
-    "RATING": "Waardering",
-    "NO_RATINGVALUE": "Geen waardering",
-    "AGENTSADD_QUEUE": "Voeg Agent naar wachtrij voor chatten",
+    "RATING": "Rating",
+    "NO_RATINGVALUE": "Geen Rating",
+    "AGENTSADD_QUEUE": "Agent aan chat wachtrij toevoegen",
     "QUEUES": "Wachtrijen",
     "LOGGED_IN": "Aangemeld",
     "PAUSED": "Gepauzeerd",
     "PHONE_STATUS": "Telefoonstatus",
     "LOGOUT": "Afmelden",
     "UNPAUSE": "Einde pauze",
-    "AGENTADD_QUEUE": "Voeg Agent naar wachtrij voor chatten",
+    "AGENTADD_QUEUE": "Agent toevoegen aan chat wachtrij",
     "DEFAULT_PAUSE": "Standaardinstellingen voor pauze",
     "UNKNOWN": "Onbekend",
-    "UNREGISTERED": "Unregistered",
+    "UNREGISTERED": "Niet geregistreerd",
     "UNAVAILABLE": "Niet beschikbaar",
     "NOT_INUSE": "Niet in gebruik",
     "REACHABLE": "Bereikbaar",
     "VOICE": "Spraak",
     "NO_AGENT_ONLINE": "Geen Agent Online",
     "GOTOREALTIME_CHATQUEUE": "Ga naar Realtime wachtrij voor chatten",
-    "PARTIALPAUSE": "Gedeeltelijk onderbreken",
+    "PARTIALPAUSE": "Tijdelijk onderbreken",
     "BUSY": "Bezet",
     "TIMER": "Timer",
-    "IDLE": "Stationair toerental",
+    "IDLE": "Idle",
     "CAPACITY": "Capaciteit",
     "TAGS": "Tags",
-    "SHOWAGENTAVATAR": "Persoonlijke agent avatar",
+    "SHOWAGENTAVATAR": "Agent Avatar Weergeven",
     "AGENTAVATAR": "Agent Avatar",
     "SPYINTERACTION": "Spy",
     "INTERACTIONS_CHATWEBSITE": "Ga naar interacties",
-    "REFRESH_INTERACTIONS": "Interacties vernieuwen",
-    "CLOSINGQUESTION": "Sluiten vraag",
+    "REFRESH_INTERACTIONS": "Interacties Vernieuwen",
+    "CLOSINGQUESTION": "Vraag Sluiten",
     "WEBSCRIPT": "Web Script",
-    "NO_CHATCANNEDANSWER_AVAILABLE": "Geen ingeblikte antwoorden beschikbaar",
-    "NEW_CHATCANNEDANSWER": "Nieuw ingebouwd antwoord",
-    "ADD_CHATCANNEDANSWER": "Voeg ingebed antwoord toe",
-    "EDIT_CHATCANNEDANSWER": "Bewerk",
-    "DELETE_CHATCANNEDANSWER": "Verwijder",
-    "OFFLINEMESSAGESUBJECT": "Bericht Onderwerp",
-    "OFFLINEMESSAGEBODY": "Bericht lichaam",
-    "FORMSUBMITSUCCESSMESSAGE": "Formulier verzendingssuccesbericht",
+    "NO_CHATCANNEDANSWER_AVAILABLE": "Geen standaard antwoorden beschikbaar",
+    "NEW_CHATCANNEDANSWER": "Nieuw Standaard Antwoord",
+    "ADD_CHATCANNEDANSWER": "Standaard Antwoord Toevoegen",
+    "EDIT_CHATCANNEDANSWER": "Standaard Antwoord Bewerken",
+    "DELETE_CHATCANNEDANSWER": "Standaard Antwoord Verwijderen",
+    "OFFLINEMESSAGESUBJECT": "Onderwerp",
+    "OFFLINEMESSAGEBODY": "Inhoud",
+    "FORMSUBMITSUCCESSMESSAGE": "Formulier verzenden succesbericht",
     "FORMSUBMITFAILUREMESSAGE": "Formulier verzenden mislukt bericht",
-    "PLACEHOLDERMESSAGE": "Plaatsaanduiding voor berichten",
-    "NOTETITLE": "De titel van Note",
-    "DELETE_INTERACTION": "Interactie verwijderen",
+    "PLACEHOLDERMESSAGE": "Placeholder bericht",
+    "NOTETITLE": "Notitie Titel",
+    "DELETE_INTERACTION": "Interactie Verwijderen",
     "FONTSIZE": "Lettertypegrootte",
     "TEXTCOLOR": "Tekst kleur",
     "COMMAND": "Opdracht",
-    "EDIT_SYSTEM": "Systeem bewerken",
+    "EDIT_SYSTEM": "Systeem Bewerken",
     "SYSTEM": "Systeem",
     "NOTIFICATION": "Kennisgeving",
     "NOTIFICATIONSHAKE": "Schudden",
     "HIDEWHENOFFLINE": "Verbergen",
     "INSERT_MESSAGE_HERE": "Voer hier uw sms-bericht in",
     "AGENTALIAS": "Agent Alias",
-    "AGENTFULLNAME": "Agent Volledige naam",
+    "AGENTFULLNAME": "Agent volledige naam",
     "AGENTIDENTIFIER": "Identifier",
     "WAITFORTHEASSIGNEDAGENT": "Wacht op de toegewezen agent",
-    "ALIGNMENT": "opstelling",
+    "ALIGNMENT": "Uitlijning",
     "BOTTOM_RIGHT": "Rechts onder",
     "LEFT": "Links",
     "RIGHT": "Rechts",
     "CENTERED": "centered",
     "CUSTOMERAVATAR": "Avatar klant",
     "DEFAULTTITLE": "Standaard titel",
-    "MESSAGESALIGNMENT": "Berichten Afstemming",
-    "SHOWCUSTOMERAVATAR": "Toon klantavatar",
+    "MESSAGESALIGNMENT": "Bericht Uitlijning",
+    "SHOWCUSTOMERAVATAR": "Klantavatar Weergeven",
     "EDIT_TAG": "Bewerk label",
     "TAG": "Label",
     "CUSTOMERALIAS": "Klantalias",
-    "AGENTADD_CHATWEBSITE": "Agent toevoegen aan chatwebsite",
+    "AGENTADD_CHATWEBSITE": "Agent aan chatwebsite Toevoegen",
     "BACKGROUNDCOLOR": "Achtergrond kleur",
     "MESSAGEFONTSIZE": "Grootte van berichtlettertype",
     "AGENTTRANSFER": "Agent Transfer",
     "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
     "DIALOGFLOW": "Dialogflow",
-    "EDIT_DIALOGFLOW": "Bewerk Dialogflow",
+    "EDIT_DIALOGFLOW": "Dialogflow Bewerken",
     "LANGUAGE": "Taal",
-    "QUEUETRANSFER": "Wachtrijoverdracht",
-    "QUEUETRANSFERTIMEOUT": "Wachtrij Transfer Timeout",
+    "QUEUETRANSFER": "Wachtrij Overdracht",
+    "QUEUETRANSFERTIMEOUT": "Wachtrij Overdracht Timeout",
     "SYSTEMALIAS": "Systeemalias",
     "SYSTEMAVATAR": "Systeemavatar",
     "TRANSFER": "Overdracht",
-    "WELCOMEMESSAGE": "Welkoms bericht",
-    "ENABLECUSTOMERCHECKMARKS": "Schakel door klant geleverde / gelezen meldingen in",
-    "CANNEDANSWERS": "Ingeblikte antwoorden",
-    "CHATCANNEDANSWERS": "Ingeblikte antwoorden",
-    "DOWNLOAD_INTERACTION": "Download",
+    "WELCOMEMESSAGE": "Welkomstbericht",
+    "ENABLECUSTOMERCHECKMARKS": "Afgeleverd/gelezen door klant melding inschakelen",
+    "CANNEDANSWERS": "Standaard Antwoorden",
+    "CHATCANNEDANSWERS": "Standaard Antwoorden",
+    "DOWNLOAD_INTERACTION": "Interactie Downloaden",
     "LOGIN_TIME": "Aanmeldtijd",
     "PAUSE_TIME": "Pauzetijd",
     "ACCESSKEYID": "Toegang Key ID",
     "BOTNAME": "Botnaam",
     "EDIT_AMAZONLEX": "Bewerk Amazon Lex",
     "LEXREGION": "Regio",
-    "SECRETACCESSKEY": "Geheime toegangssleutel",
+    "SECRETACCESSKEY": "Geheime Sleutel",
     "TEAMS_ASSOCIATION": "Teams Association",
     "MANDATORYDISPOSITION": "Verplichte regeling",
     "MANDATORYDISPOSITIONPAUSEID": "Pauze om te gebruiken als verplichte dispositie is ingeschakeld",
-    "ENABLESENDBUTTON": "Schakel de verzendknop in",
+    "ENABLESENDBUTTON": "Verzendknop Inschakelen",
     "FEEDBACKTITLE": "Feedbacktitel",
     "TOOLTIP_SCREENRECORDING_OFF": "Schermopname beschikbaar",
     "TOOLTIP_SCREENRECORDING_ON": "Schermopname bezig",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download zonder bijlagen",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Download met bijlagen",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Zonder bijlagen Downloaden",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Met bijlagen Downloaden",
     "LASTMESSAGE": "Laatste bericht",
     "VIDAOO": "Vidaoo",
     "VIDAOOAPIKEY": "Vidaoo Api-sleutel",
     "VIDEO": "Video",
     "CLIENTEMAIL": "E-mail van de klant",
     "DIALOGFLOWV2": "Dialogflow V2",
-    "EDIT_DIALOGFLOWV2": "Bewerk Dialogflow V2",
-    "PRIVATEKEY": "Prive sleutel",
+    "EDIT_DIALOGFLOWV2": "Dialogflow V2 Bewerken",
+    "PRIVATEKEY": "Privé-sleutel",
     "PROJECTID": "Project-ID",
     "EMAIL_ACCOUNT": "Email account",
-    "OPEN_NEW_INTERACTION": "Open nieuwe interactie",
+    "OPEN_NEW_INTERACTION": "Nieuwe interactie Openen",
     "SUBJECT": "Onderwerpen",
-    "ADD_NOTE": "Notitie toevoegen",
+    "ADD_NOTE": "Notitie Toevoegen",
     "CANNED_ANSWER_NOT_FOUND": "Er zijn geen standaardantwoorden gevonden",
     "NOTE": "Opmerking",
     "VIDAOOMETADATA": "Vidaoo-metagegevens",
     "VIDAOONOTE": "Vidaoo Opmerking",
     "VIDAOOTOPIC": "Vidaoo-onderwerp",
     "CHANNELID": "Kanaal Nr",
-    "EDIT_TVOX": "TVox bewerken",
-    "MOTIONTITLE": "Bewegingstitel",
+    "EDIT_TVOX": "TVox Bewerken",
+    "MOTIONTITLE": "Titel",
     "MOTIONURL": "Bewegings-URL",
     "MOTIONURLONANSWER": "Bewegings-URL bij antwoord",
     "MOTIONURLONRING": "Bewegings-URL op bel",
index dc22557..c3d27cc 100644 (file)
@@ -1,6 +1,6 @@
 {
   "CONTACTMANAGER": {
-    "VOICEQUEUEID": "ID Warteschlange für Sprachanrufe",
+    "VOICEQUEUEID": "ID Anruf-Warteschlange",
     "CAMPAIGNID": "Kampagnen-ID",
     "STATE": "Status",
     "NAME": "Name",
@@ -9,36 +9,36 @@
     "STATUS": "Status",
     "STARTTIME": "Startzeit",
     "ENDTIME": "Endzeit",
-    "MOTION_BULL": "Motion Bull",
-    "HOPPER": "Hopper",
-    "FINAL": "Hopper final",
-    "HISTORY": "Hopper historisch",
+    "MOTION_BULL": "Outbound-Dialer",
+    "HOPPER": "Kontakte in Ausführung",
+    "FINAL": "Kontakte abgeschlossen",
+    "HISTORY": "Kontaktverlauf",
     "SCHEDULEDAT": "Geplant am",
     "SEARCH_FOR_ANYONE": "Suche",
     "EDIT_LIST": "Liste bearbeiten",
-    "EDIT_HOPPER": "Hopper bearbeiten",
+    "EDIT_HOPPER": "Kontakte in Ausführung bearbeiten",
     "DELETE_LIST": "Liste löschen",
-    "DELETE_HOPPER": "Hopper löschen",
-    "RELOAD": "Neu laden",
-    "NO_COMPANIES": "Kein Unternehmen",
+    "DELETE_HOPPER": "Kontakte in Ausführung löschen",
+    "RELOAD": "Neu Laden",
+    "NO_COMPANIES": "Keine Unternehmen vorhanden",
     "NO_AVAILABLE_ITEMS": "Keine Einträge verfügbar",
     "ADD": "Hinzufügen",
     "ERRORS": {
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "FIRSTNAME_REQUIRED": "Vorname ist erforderlich",
-      "PHONE_REQUIRED": "Telefonnummer ist erforderlich",
-      "ALIAS_REQUIRED": "Alias ist erforderlich",
-      "VALUE_REQUIRED": "Wert ist erforderlich",
-      "EMAIL_MUST_VALID": "Falsches Format",
+      "NAME_REQUIRED": "Nachname erforderlich",
+      "FIRSTNAME_REQUIRED": "Vorname erforderlich",
+      "PHONE_REQUIRED": "Telefonnummer erforderlich",
+      "ALIAS_REQUIRED": "Alias erforderlich",
+      "VALUE_REQUIRED": "Wert erforderlich",
+      "EMAIL_MUST_VALID": "Ungültiges Format E-Mail",
       "PHONEBAR_API": "Statusprüfung für die MotionBar und des Remote-Switches für den Agenten",
-      "ACTIONTYPE_REQUIRED": "Pflichtfeld",
-      "CLICKTOACTION_REQUIRED": "Pflichtfeld"
+      "ACTIONTYPE_REQUIRED": "Aktionstyp erforderlich",
+      "CLICKTOACTION_REQUIRED": "Aktion bei Klick erforderlich"
     },
     "DESCRIPTION": "Beschreibung",
     "DISPOSITION": "Qualifizierung",
     "DISPOSITIONS": "Qualifizierungen",
-    "VOICEDISPOSITIONS": "Anrufqualifizierungen",
-    "NEW_VOICEDISPOSITION": "Neue Anrufqualifizierung",
+    "VOICEDISPOSITIONS": "Anruf-Qualifizierungen",
+    "NEW_VOICEDISPOSITION": "Neue Qualifizierung",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "ADD_LIST": "Liste hinzufügen",
     "BACK": "Zurück",
@@ -64,8 +64,8 @@
     "DELETE_CONTACT": "Kontakt löschen",
     "CREATED_AT": "Erstellt am",
     "SAVE": "Speichern",
-    "DETAIL": "Detail",
-    "PERSONAL_INFO": "Persönliche Infos",
+    "DETAIL": "Details",
+    "PERSONAL_INFO": "Persönliche Informationen",
     "MOBILE": "Mobiltelefon",
     "FAX": "Fax",
     "TAGS": "Tags",
@@ -84,7 +84,7 @@
     "CUSTOMFIELDS": "Benutzerdefinierte Felder",
     "NO_CUSTOMFIELD_AVAILABLE": "Keine benutzerdefinierten Felder verfügbar",
     "ADD_TAG": "Tag hinzufügen",
-    "NO_TAG": "Keine Tags",
+    "NO_TAG": "Keine Tags vorhanden",
     "ALIAS": "Alias",
     "TYPE": "Typ",
     "VALUE": "Wert",
     "POSTAL_CODE": "Postleitzahl",
     "SHIPMENTADDRESS": "Lieferadresse",
     "COPY_CONTACT": "Kontakt kopieren",
-    "GOTOCONTACTS_LIST": "Kontakte anzeigen",
+    "GOTOCONTACTS_LIST": "Zur Kontaktliste gehen",
     "GOTOCONTACTS_COMPANY": "Kontakte anzeigen",
     "ADD_AGENT_TO_LIST": "Agenten zur Liste hinzufügen",
     "AGENTADD_LIST": "Agenten zur Liste hinzufügen",
     "NONE": "Nichts",
     "FULLNAME": "Vollständiger Name",
     "CHECK_DUPLICATES": "auf Duplikate prüfen",
-    "DUPLICATES": "Duplikate",
+    "DUPLICATES": "Duplikate prüfen",
     "UPLOAD_CSV": "Hochladen von CSV-Datei",
     "TAG": "Tag",
     "UPLOAD": "Hochladen",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
     "OF": "von",
-    "SOCIAL": "Social",
+    "SOCIAL": "Social Media",
     "ROW": "Reihe",
     "EXPORT_ERRORS": "Fehler-Log exportieren",
     "UPLOAD_COMPLETED": "Hochladen abgeschlossen",
-    "STOP": "Stopp",
+    "STOP": "Anhalten",
     "SELECT_FILE": "Datei auswählen",
     "IMPORT_CONTACTS": "Kontakte importieren",
-    "MOTIONDIALER": "Motion Bull",
+    "MOTIONDIALER": "Outbound-Dialer",
     "PREFIX": "Vorwahl wählen",
     "PRIORITY": "Priorität",
     "USERID": "Agent-ID abrufen",
index 6a8b39d..caf032b 100644 (file)
     "ENDTIME": "Eindtijd",
     "MOTION_BULL": "Motion Bull",
     "HOPPER": "Trechter",
-    "FINAL": "Hopper def.",
-    "HISTORY": "Hopper Geschiedenis",
+    "FINAL": "Trechter def.",
+    "HISTORY": "Trechter Geschiedenis",
     "SCHEDULEDAT": "Gepland op",
-    "SEARCH_FOR_ANYONE": "Zoeken voor iedereen",
-    "EDIT_LIST": "Edit List (Lijst bewerken",
-    "EDIT_HOPPER": "Edit Hopper",
-    "DELETE_LIST": "Lijst wissen",
-    "DELETE_HOPPER": "Hopper verwijderen",
-    "RELOAD": "Reload",
+    "SEARCH_FOR_ANYONE": "Zoeken",
+    "EDIT_LIST": "Lijst bewerken Bewerken",
+    "EDIT_HOPPER": "Trechter",
+    "DELETE_LIST": "Lijst Verwijderen",
+    "DELETE_HOPPER": "Trechter Verwijderen",
+    "RELOAD": "Herladen",
     "NO_COMPANIES": "Geen enkele onderneming",
     "NO_AVAILABLE_ITEMS": "Geen beschikbare items",
     "ADD": "Toevoegen",
     "ERRORS": {
-      "NAME_REQUIRED": "De naam is verplicht",
-      "FIRSTNAME_REQUIRED": "De Voornaam is verplicht",
-      "PHONE_REQUIRED": "Het telefoonnummer is verplicht",
-      "ALIAS_REQUIRED": "De alias is vereist",
-      "VALUE_REQUIRED": "De waarde is vereist",
-      "EMAIL_MUST_VALID": "Het e-mailadres moet worden geschreven in een geldige indeling",
+      "NAME_REQUIRED": "Verplicht veld",
+      "FIRSTNAME_REQUIRED": "Verplicht veld",
+      "PHONE_REQUIRED": "Verplicht veld",
+      "ALIAS_REQUIRED": "Verplicht veld",
+      "VALUE_REQUIRED": "Verplicht veld",
+      "EMAIL_MUST_VALID": "Ongeldig formaat",
       "PHONEBAR_API": "Controleer of de MotionBar draait en dat de afstandsbediening voor de agent is ingeschakeld",
       "ACTIONTYPE_REQUIRED": "Verplicht veld",
       "CLICKTOACTION_REQUIRED": "Verplicht veld"
     },
     "DESCRIPTION": "Beschrijving",
-    "DISPOSITION": "Afvoeren",
-    "DISPOSITIONS": "Dispositions",
-    "VOICEDISPOSITIONS": "Voice dispositieven",
-    "NEW_VOICEDISPOSITION": "Nieuw spraakbericht dispositie",
-    "CUSTOM_FIELDS": "Aangepaste velden",
-    "ADD_LIST": "Lijst toevoegen",
+    "DISPOSITION": "Dispositie",
+    "DISPOSITIONS": "Disposities",
+    "VOICEDISPOSITIONS": "Spraak disposities",
+    "NEW_VOICEDISPOSITION": "Nieuw spraak dispositie",
+    "CUSTOM_FIELDS": "Aangepaste Velden",
+    "ADD_LIST": "Lijst Toevoegen",
     "BACK": "Terug",
     "SELECTED": "Geselecteerd",
-    "SELECT_ALL": "Alles selecteren",
-    "SELECT_NONE": "Selecteer None (Geen).",
+    "SELECT_ALL": "Selecteer Alles",
+    "SELECT_NONE": "Selecteer Geen",
     "COMPANIES": "Bedrijven",
-    "EDIT_COMPANY": "Bedrijf wijzigen",
-    "DELETE_COMPANY": "Bedrijf verwijderen",
+    "EDIT_COMPANY": "Bedrijf Bewerken",
+    "DELETE_COMPANY": "Bedrijf Verwijderen",
     "PHONE": "Telefoon",
     "EMAIL": "E-mail",
-    "ADD_COMPANY": "Bedrijf toevoegen",
+    "ADD_COMPANY": "Bedrijf Toevoegen",
     "CONTACTS": "Contactpersonen",
-    "NEW_LIST": "Nieuwe lijst",
+    "NEW_LIST": "Nieuwe Lijst",
     "FIRSTNAME": "Voornaam",
     "LASTNAME": "Achternaam",
     "LIST": "Lijst",
     "COMPANY": "Bedrijf",
-    "ADD_CONTACT": "Contactpersoon toevoegen",
-    "EDIT_CONTACT": "Contactpersoon bewerken",
+    "ADD_CONTACT": "Contactpersoon Toevoegen",
+    "EDIT_CONTACT": "Contactpersoon Bewerken",
     "MERGE_CONTACT": "Merge Contact",
     "DUPLICATE_CONTACT": "Dubbele contactpersoon",
-    "DELETE_CONTACT": "Contactpersoon verwijderen",
+    "DELETE_CONTACT": "Contactpersoon Verwijderen",
     "CREATED_AT": "Gemaakt op",
     "SAVE": "Opslaan",
     "DETAIL": "Detail",
     "STREET": "Straat",
     "POSTALCODE": "Postcode",
     "DELETE": "Verwijderen",
-    "DELETE_ALL": "Alles verwijderen",
+    "DELETE_ALL": "Alles Verwijderen",
     "CONTACTMANAGER": "Contact Manager",
     "ID": "Id",
     "SETTINGS": "Instellingen",
     "GENERAL": "Algemeen",
-    "CUSTOMFIELDS": "Aangepaste velden",
+    "CUSTOMFIELDS": "Aangepaste Velden",
     "NO_CUSTOMFIELD_AVAILABLE": "Geen aangepaste velden",
-    "ADD_TAG": "Tag toevoegen",
+    "ADD_TAG": "Tag Toevoegen",
     "NO_TAG": "Geen Tags",
     "ALIAS": "Alias",
     "TYPE": "Type",
     "VALUE": "Waarde",
-    "ADD_CUSTOMFIELD": "Aangepast veld toevoegen",
-    "EDIT_CUSTOMFIELD": "Bewerk aangepaste veld",
-    "DELETE_CUSTOMFIELD": "Verwijder aangepaste veld",
+    "ADD_CUSTOMFIELD": "Aangepast veld Toevoegen",
+    "EDIT_CUSTOMFIELD": "Aangepaste veld Bewerken",
+    "DELETE_CUSTOMFIELD": "Aangepaste veld Bewerken",
     "NEW_COMPANY": "Nieuwe onderneming",
     "NEW_CONTACT": "Nieuwe contactpersoon",
     "NEW_TAG": "Nieuwe Tag",
-    "UPLOAD_CONTACTS": "Upload Contact",
-    "FINISH": "Afwerking",
+    "UPLOAD_CONTACTS": "Contact uploadeden",
+    "FINISH": "Voltooid",
     "SUCCESS": "Succes",
     "FAILURE": "Defect",
     "ALL_CONTACTS": "Alle contactpersonen",
     "NEW_CUSTOMFIELD": "Nieuwe aangepaste veld",
-    "NO_VOICEDISPOSITION_AVAILABLE": "Geen spraakmemo dispositieven beschikbaar",
-    "ADD_VOICEDISPOSITION": "Voeg spraak dispositie",
-    "EDIT_VOICEDISPOSITION": "Edit Voice dispositie",
-    "DELETE_VOICEDISPOSITION": "Alle spraakberichten dispositie",
+    "NO_VOICEDISPOSITION_AVAILABLE": "Geen spraakmemo disposities beschikbaar",
+    "ADD_VOICEDISPOSITION": "Spraak dispositie Toevoegen",
+    "EDIT_VOICEDISPOSITION": "Spraak dispositie Bewerken",
+    "DELETE_VOICEDISPOSITION": "Spraak dispositie Verwijderen",
     "VAT": "Btw",
     "COMPANYID": "Bedrijf ID",
     "WEBSITE": "Website",
     "DATEOFBIRTH": "Geboortedatum",
     "NOTES": "Aantekeningen",
     "EXPORTCSVCONTACTS_LIST": "Exporteren naar CSV",
-    "GOTO_LIST": "Contactpersonen weergeven",
-    "GOTO_COMPANY": "Contactpersonen weergeven",
+    "GOTO_LIST": "Contactpersonen Weergeven",
+    "GOTO_COMPANY": "Contactpersonen Weergeven",
     "REQUIRED": "Vereist",
-    "GLOBALCUSTOMFIELDS": "Wereldwijde Aangepaste velden",
-    "NEW_GLOBALCUSTOMFIELD": "Nieuwe aangepaste velden",
-    "ADD_GLOBALCUSTOMFIELD": "Aangepast veld toevoegen",
-    "EDIT_GLOBALCUSTOMFIELD": "Bewerk aangepaste veld",
-    "DELETE_GLOBALCUSTOMFIELD": "Verwijder aangepaste veld",
+    "GLOBALCUSTOMFIELDS": "Aangepaste Velden",
+    "NEW_GLOBALCUSTOMFIELD": "Nieuw aangepast veld",
+    "ADD_GLOBALCUSTOMFIELD": "Aangepast veld Toevoegen",
+    "EDIT_GLOBALCUSTOMFIELD": "Aangepaste veld Bewerken",
+    "DELETE_GLOBALCUSTOMFIELD": "Aangepaste veld Verwijderen",
     "JSCRIPTY": "Jscripty",
     "SESSIONS": "Sessies",
     "AGENT": "Agent",
     "SELECT_TAGS": "Selecteer één of meer tags",
     "HELP": {
       "PHONEBAR_API": "Om klik-en-bel een telefoonnummer en controleert u of de afstandsbediening is ingeschakeld voor de agent",
-      "PHONEBAR_API_MESSAGE": "Als u click-to-call wilt inschakelen, voegt u een telefoonnummer in en vinkt u de afstandsbedieningsschakelaar aan om de agent in te schakelen"
+      "PHONEBAR_API_MESSAGE": "Als u click-to-call wilt inschakelen, voegt u een telefoonnummer in en vinkt u het bedienen op afstand aan om de agent in te schakelen"
     },
     "PAGE": "Pagina",
     "ROWSPERPAGE": "Rijen per pagina",
     "CUSTOMER_JOURNEY": "Customer Journey",
     "SELECT_TAG": "Selecteer tags",
     "ALL": "Allemaal",
-    "BILLINGINFORMATION": "facturatie gegevens",
+    "BILLINGINFORMATION": "Facturatie gegevens",
     "COMPANY_FISCAL_TYPE": "Bedrijf Fiscaal Type",
-    "CREATE": "creëren",
+    "CREATE": "Aanmaken",
     "EUROPE": "Europa",
     "EXPIREDAY": "Vervaldagen",
     "FLATDISCOUNT": "Bedrijfskorting",
index b84d6b8..ad3aafe 100644 (file)
@@ -5,7 +5,7 @@
     "USERID": "Lembrar ID do agente",
     "PRIORITY": "Prioridade",
     "MOTIONDIALER": "Motion Bull",
-    "IMPORT_CONTACTS": "Importar Contatos",
+    "IMPORT_CONTACTS": "Importar contatos",
     "PREFIX": "Prefixo de discagem",
     "VOICEQUEUEID": "ID da Fila de Voz",
     "CAMPAIGNID": "ID da campanha",
     "MOTION_BULL": "Motion Bull",
     "HOPPER": "Funil",
     "FINAL": "Final do funil",
-    "HISTORY": "História do funil",
+    "HISTORY": "Histórico do funil",
     "SCHEDULEDAT": "Agendado em",
     "SEARCH_FOR_ANYONE": "Procurar",
-    "EDIT_LIST": "Editar Lista",
-    "EDIT_HOPPER": "Editar Funil",
-    "DELETE_LIST": "Excluir Lista",
-    "DELETE_HOPPER": "Excluir Funil",
+    "EDIT_LIST": "Editar lista",
+    "EDIT_HOPPER": "Editar funil",
+    "DELETE_LIST": "Excluir lista",
+    "DELETE_HOPPER": "Excluir funil",
     "RELOAD": "Recarregar",
     "NO_COMPANIES": "Nenhuma empresa",
     "NO_AVAILABLE_ITEMS": "Nenhum item disponível",
     "DISPOSITIONS": "Descrição",
     "VOICEDISPOSITIONS": "Disposições de voz",
     "NEW_VOICEDISPOSITION": "Nova disposição de voz",
-    "CUSTOM_FIELDS": "Os campos personalizados",
-    "ADD_LIST": "Adicionar Lista",
+    "CUSTOM_FIELDS": "Campos personalizados",
+    "ADD_LIST": "Adicionar lista",
     "BACK": "Voltar",
     "SELECTED": "Selecionado",
     "SELECT_ALL": "Selecionar todos",
     "SELECT_NONE": "Selecionar Nenhum",
     "COMPANIES": "Empresas",
-    "EDIT_COMPANY": "Editar Empresa",
-    "DELETE_COMPANY": "Excluir Empresa",
+    "EDIT_COMPANY": "Editar empresa",
+    "DELETE_COMPANY": "Excluir empresa",
     "PHONE": "Telefone",
     "EMAIL": "Email",
-    "ADD_COMPANY": "Adicionar Empresa",
+    "ADD_COMPANY": "Adicionar empresa",
     "CONTACTS": "Contatos",
     "NEW_LIST": "Nova Lista",
     "FIRSTNAME": "Primeiro Nome",
     "LASTNAME": "Sobrenome",
     "LIST": "Lista",
     "COMPANY": "Empresa",
-    "ADD_CONTACT": "Adicionar Contato",
-    "EDIT_CONTACT": "Editar Contato",
-    "MERGE_CONTACT": "Mesclar Contato",
-    "DUPLICATE_CONTACT": "Duplicar Contato",
-    "DELETE_CONTACT": "Excluir Contato",
+    "ADD_CONTACT": "Adicionar contato",
+    "EDIT_CONTACT": "Editar contato",
+    "MERGE_CONTACT": "Mesclar contato",
+    "DUPLICATE_CONTACT": "Duplicar contato",
+    "DELETE_CONTACT": "Excluir contato",
     "CREATED_AT": "Criado em",
     "SAVE": "Salvar",
     "DETAIL": "Detalhes",
     "POSTALCODE": "CEP",
     "DELETE": "Excluir",
     "DELETE_ALL": "Excluir tudo",
-    "CONTACTMANAGER": "Gerente de contatos",
+    "CONTACTMANAGER": "Gestão de contatos",
     "ID": "Id",
     "SETTINGS": "Configurações",
     "GENERAL": "Geral",
-    "CUSTOMFIELDS": "Os campos personalizados",
+    "CUSTOMFIELDS": "Campos personalizados",
     "NO_CUSTOMFIELD_AVAILABLE": "Nenhum campo personalizado disponível",
-    "ADD_TAG": "Adicionar Tag",
+    "ADD_TAG": "Adicionar tag",
     "NO_TAG": "Sem Tags",
     "ALIAS": "Apelido",
     "TYPE": "Tipo",
     "NEW_COMPANY": "Nova Empresa",
     "NEW_CONTACT": "Novo Contato",
     "NEW_TAG": "Nova Tag",
-    "UPLOAD_CONTACTS": "Atualizar Contatos",
+    "UPLOAD_CONTACTS": "Atualizar contatos",
     "FINISH": "Terminar",
     "SUCCESS": "Sucesso",
     "FAILURE": "Falha",
     "GOTO_LIST": "Mostrar contatos",
     "GOTO_COMPANY": "Mostrar contatos",
     "REQUIRED": "Requeridos",
-    "GLOBALCUSTOMFIELDS": "Campos personalizados globais",
+    "GLOBALCUSTOMFIELDS": "Campos personalizados",
     "NEW_GLOBALCUSTOMFIELD": "Novos campos personalizados",
     "ADD_GLOBALCUSTOMFIELD": "Adicionar campo personalizado",
     "EDIT_GLOBALCUSTOMFIELD": "Editar campo personalizado",
     "ALL": "Tudo",
     "BILLINGINFORMATION": "Informações de pagamento",
     "COMPANY_FISCAL_TYPE": "Tipo fiscal da empresa",
-    "CREATE": "Crio",
+    "CREATE": "Criado",
     "EUROPE": "Europa",
-    "EXPIREDAY": "Dias de Vencimento",
+    "EXPIREDAY": "Dias para vencimento",
     "FLATDISCOUNT": "Desconto da empresa",
     "INVOICEARTICLE": "Artigos de Direito",
-    "ISOCODE": "Código Nacional ISO",
+    "ISOCODE": "Código ISO",
     "PAYMENTMETHOD": "Forma de pagamento",
     "PIVA": "Número de IVA",
     "RELATIONSHIP": "Relacionamento ...",
     "RELATIONSHIPCOMPANY": " ... com",
     "SDICODE": "Código SDI",
     "SOCIAL_CAPITAL": "Capital social",
-    "VATNUMBER_CF": "Codice Fiscale / IVA",
+    "VATNUMBER_CF": "Código fiscal / IVA",
     "RECALLME": "Lembre-me",
     "ACTIONTYPE": "Tipo de acão",
     "CLICKTOACTION": "Clique para ação",
index 6015548..a193596 100644 (file)
     "SUBJECT": "Betreff",
     "REFERER": "Referer",
     "ACCOUNT": "Konto",
-    "WEBSITE": "Website",
+    "WEBSITE": "Webseite",
     "AGENT": "Agent",
     "CREATED_AT": "Erstellt am",
     "CLOSED_AT": "Geschlossen am",
     "DISPOSITION": "Qualifizierung",
     "CONTACT": "Kontakt",
     "INTERACTION": "Interaktion",
-    "BROWSER_NAME": "Browser Name",
-    "BROWSER_VERSION": "Browser Version",
-    "OS_NAME": "Betriebssystem Name",
-    "OS_VERSION": "Betriebssystem Version",
+    "BROWSER_NAME": "Name Browser",
+    "BROWSER_VERSION": "Version Broweer",
+    "OS_NAME": "Name Betriebssystem",
+    "OS_VERSION": "Version Betriebssystem",
     "DEVICE_MODEL": "Gerätemodell",
     "DEVICE_VENDOR": "Gerätehersteller",
     "DEVICE_TYPE": "Gerätetyp",
-    "RECALLME": "Rückruf anfordern",
-    "DROP_RATE": "Abbruchrate Anrufe",
-    "DROPPED": "Abgebrochen",
-    "DROPPED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
-    "DETAIL": "Detail",
-    "MOTION_BULL": "Motion Bull",
+    "RECALLME": "Pers. Wiedervorlage",
+    "DROP_RATE": "Drop-Rate",
+    "DROPPED": "Abgebrochen (Drop)",
+    "DROPPED_TEXT": "Anzahl vom System aufgelegt",
+    "DETAIL": "Details",
+    "MOTION_BULL": "Outbound Dialer",
     "LIMITED": "Limitiert",
     "LIMITED_TEXT": "IVR-Kampagnen Anrufe getätigt/limitiert",
     "DASHBOARDS": "Dashboards",
     "RECORDINGS": "Aufzeichnungen",
-    "TODAY_MOTION_BULL_STATS": "Tagesstatistiken Warteschlangen",
-    "ORIGINATED": "Gewählt",
-    "ORIGINATED_TEXT": "Anrufe aus der Warteschlange gewählt",
+    "TODAY_MOTION_BULL_STATS": "Tagesstatistiken - ausgehende Warteschlangen",
+    "ORIGINATED": "Angewählt",
+    "ORIGINATED_TEXT": "Anzahl angewählter Anrufe",
     "UPDATE": "Aktualisieren",
     "MORE": "Mehr",
-    "MOTIONDIALER": "Motion Dialer",
+    "MOTIONDIALER": "Outbound Dialer",
     "DISPOSE": "Qualifizieren",
     "QUEUES": "Warteschlangen",
     "DIALER_CALL": "Dialer-Anruf",
@@ -58,8 +58,8 @@
     "PERSONAL_INFO": "Persönliche Infos",
     "SOLD": "Verkauft",
     "SPECIAL": "Speziell",
-    "BLACKLIST": "Blacklist",
-    "RESCHEDULE": "erneut Planen",
+    "BLACKLIST": "Schwarze Liste",
+    "RESCHEDULE": "Allg. Wiedervorlage",
     "FIRSTNAME": "Vorname",
     "LASTNAME": "Nachname",
     "MOBILE": "Mobilnummer",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "GENERAL": "Allgemein",
     "VOICE": "Sprachanrufe",
-    "TODAY_IVR_CAMPAIGNS_STATS": "IVR-Tagesstatistiken",
+    "TODAY_IVR_CAMPAIGNS_STATS": "Tagesstatistiken - IVR-Kampagnen",
     "TODAY_INBOUND_STATS": "Tagesstatistiken - eingehende Warteschlangen",
     "TODAY_OUTBOUND_STATS": "Tagesstatistiken - ausgehende Warteschlangen",
-    "WAITING": "Anrufe in Warteschlange",
+    "WAITING": "Wartend",
     "TALKING": "Im Gespräch",
     "INBOUND_ANSWERED": "Angenommen eingehend",
     "OUTBOUND_ANSWERED": "Angenommen ausgehend",
     "ABANDONED": "Abgebrochen",
     "TOTAL_OFFERED": "Gesamt angeboten",
-    "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
+    "AVG_HOLD_TIME": "DS. Wartezeit",
     "INBOUND_ANSWER_RATE": "Antwortrate eingehend",
     "OUTBOUND_ANSWER_RATE": "Antwortrate ausgehend",
     "ABANDON_RATE": "Abbruchrate",
     "TOT_DURATION": "Gesamtdauer",
     "AVG_DURATION": "Durchschnittliche Dauer",
     "HELP": {
-      "ORIGINATEDLIMITED": "IVR Kampagnen gewählt/limitiert",
-      "DROPPED": "Gesamtzahl abgebrochener Anrufe innerhalb der Warteschlange",
-      "DROP_RATE": "Abbruchrate aller Anrufe in der Warteschlange",
-      "WAITING": "Gesamtzahl der wartenden Anrufe aus der Warteschlange",
-      "OUTBOUND_ANSWERED": "Gesamtzahl der angenommenen ausgehenden Anrufe",
-      "ABANDONED": "Gesamtzahl der abgebrochenen Anrufe innerhalb der Warteschlange",
-      "TOTAL_OFFERED": "Gesamtzahl der angebotenen Anrufe in der Warteschlange (angenommen + abgebrochen + nicht bearbeitet in der letzten Warteschlange des Callflows). Hinweis: Anrufe innerhalb der IVR werden nicht berücksichtigt.",
+      "ORIGINATEDLIMITED": "Übersicht zu automatischen Outbound-Kampagnen per IVR. Anzahl Anrufe gewählt zu Anzahl Anrufe unvollständig (keine freien Leitungen, keine Agenten, etc.)",
+      "DROPPED": "Gesamtzahl der vom System aufgelegten Anrufe, weil zum Zeitpunkt der Verbindung kein Agent frei war (Drop-Call)",
+      "DROP_RATE": "Abbruchrate der vom System aufgelegten Anrufe (Drop-Calls) im Vergleich zu allen Anrufen ",
+      "WAITING": "Gesamtzahl aller wartenden Interaktionen in der Warteschlange",
+      "OUTBOUND_ANSWERED": "Gesamtzahl aller ausgehenden Anrufe, welche von der Gegenstelle beantwortet wurden",
+      "ABANDONED": "Gesamtzahl der Chats, welche vom Kunden nicht beendet wurden",
+      "TOTAL_OFFERED": "Gesamtanzahl aller angebotenen Interaktionen. (Je nach Kanal Summe aus \"Geöffnet\", \"Bearbeitet\", \"Ausgelaufen\" und \"nicht Bearbeitet\")",
       "AVG_HOLD_TIME": "Durchschnittliche Wartezeit einer Interaktion bis zur Beantwortung durch einen Agenten.",
-      "OUTBOUND_ANSWER_RATE": "Rate aller angenommenen ausgehenden Anrufe",
-      "ABANDON_RATE": "Rate aller abgebrochener Anrufe innerhalb der Warteschlange",
-      "UNMANAGED": "Gesamtzahl der nicht bearbeiteten Anrufe für alle Warteschlangen. Enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen wurden (siehe Asterisk-Dokumentation für weitere Informationen).",
-      "TOTAL": "Gesamtzahl der ausgehenden Anrufe",
-      "TOT_DURATION": "Gesamtdauer aller ausgehenden Anrufe",
-      "AVG_DURATION": "Durchschnittliche Dauer aller angenommenen ausgehenden Anrufe",
-      "ORIGINATED": "Gesamtzahl der in den Warteschlangen-Kampagnen gewählten Anrufe",
-      "ABANDONED_RATE": "Rate aller abgebrochenen Interaktionen",
-      "AVG_MANAGED_TIME": "Durchschnittliche Bearbeitungszeit einer Interaktion",
-      "MANAGED": "Gesamtzahl der abgeschlossenen Interaktionen",
-      "MANAGED_RATE": "Rate aller bearbeiteten Anrufe",
-      "OPENED": "Gesamtzahl der aktiven Interaktionen",
-      "UNMANAGED_RATE": "Rate aller unbearbeiteten Interaktionen",
-      "VOICE_ABANDONED": "Gesamtzahl der abgebrochenen Anrufe in der Warteschlange unter Berücksichtigung aller vorhandenen Warteschlangen. Hinweis: Anrufe, die wegen Timeout und joinempty abgebrochen wurden, werden nicht berücksichtigt.",
-      "VOICE_ANSWERED": "Gesamtzahl der abgeschlossenen Anrufe für alle vorhandenen Warteschlangen",
-      "VOICE_ANSWER_RATE": "Antwortrate aller Anrufe in der Warteschlange",
-      "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit bis zur Beantwortung durch einen Agenten für alle vorhandenen Warteschlangen",
-      "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit für alle Anrufe aus der Warteschlange ",
-      "VOICE_TALKING": "Gesamtzahl der aktiven Anrufe für alle vorhandenen Warteschlangen",
-      "VOICE_TOTAL_OFFERED": "Gesamtzahl der Anrufe der Warteschlangen (angenommen + abgebrochen + nicht bearbeitet in der letzten Warteschlange des Callflows). Hinweis: Anrufe innerhalb der IVR werden nicht berücksichtigt.",
-      "VOICE_UNMANAGED": "Gesamtzahl der nicht bearbeiteten Anrufe für alle vorhandenen Warteschlangen. Enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen wurden (siehe Asterisk-Dokumentation für weitere Informationen).",
-      "VOICE_WAITING": "Gesamtanzahl der aktuell wartenden Anrufe für alle vorhandenen Warteschlangen",
+      "OUTBOUND_ANSWER_RATE": "Rate aller ausgehenden Anrufe mit Antwort der Gegenstelle im Vergleich zu allen ausgehenden Anrufen",
+      "ABANDON_RATE": "Rate aller eingehenden Anrufe, bei denen der Kunde aufgelegt hat, bevor mit einem Agenten gesprochen wurde im Vergleich zu allen eingehenden Anrufen",
+      "UNMANAGED": "Gesamtzahl aller Chats, welche vom Kunden abgebrochen wurden, bevor ein Agent verfügbar war.",
+      "TOTAL": "Gesamtzahl aller ausgehenden Anrufe, welche von Agenten gewählt wurden",
+      "TOT_DURATION": "esamtdauer aller ausgehenden Anrufe, welche von Agenten gewählt wurden",
+      "AVG_DURATION": "Durchschnittliche Dauer aller ausgehenden Anrufe",
+      "ORIGINATED": "Gesamtzahl aller Wählversuche für ausgehende Anrufe. Beinhaltet auch Systemergebnisse wie z.B. \"Besetzt\", Anrufbeantworter\", etc.",
+      "ABANDONED_RATE": "Rate aller eingehenden Chats, welche vor der Verbindung mit einem Agenten vom Kunden abgebrochen wurden im Vergleich zu allen eingehenden Chats",
+      "AVG_MANAGED_TIME": "Die durchschnittliche Zeit welche ein Agent für die Bearbeitung eines Chats benötigt hat. (Klingeln beim Agenten + Bearbeitung des Chats + Nacharbeit)",
+      "MANAGED": "Gesamtzahl der durch einen Agenten bearbeiteten Interaktionen. (Status: geschlossen)",
+      "MANAGED_RATE": "Rate aller bearbeiteten Interaktionen (Status: geschlossen) im Vergleich zu allen eingehenden Interaktionen",
+      "OPENED": "Gesamtanzahl aller derzeit geöffneten Interaktionen",
+      "UNMANAGED_RATE": "Rate der heutigen Interaktionen, welche noch nicht bearbeitet wurden im Vergleich zu allen eingegangenen Interaktionen",
+      "VOICE_ABANDONED": "Gesamtzahl aller in der Warteschlange abgebrochenen Anrufe im Vergleich zu allen eingehenden Anrufen. Hinweis: Anrufe, die wegen voreingestellter Zeitüberschreitung und \"Betreten der Warteschlange, obwohl keine Agenten angemeldet waren\" abgebrochen sind, werden nicht berücksichtigt.",
+      "VOICE_ANSWERED": "Gesamtanzahl aller eingehenden Anrufe, welche durch einen Agenten entgegengenommen wurden",
+      "VOICE_ANSWER_RATE": "Rate aller durch einen Agenten beantworteten Anrufe im Vergleich zu allen eingehenden Anrufen",
+      "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit in der Warteschlange bis zur Beantwortung des Anrufes durch einen Agenten",
+      "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit für alle eingehenden Anrufe",
+      "VOICE_TALKING": "Gesamtzahl der aktiven Gespräche über alle eingehenden Warteschlangen",
+      "VOICE_TOTAL_OFFERED": "Gesamtzahl aller angebotenen Anrufe (\"Abgeschlossen\", \"Verloren\" und \"nicht Bearbeitet\"). Hinweis: Anrufe, welche bereits in der IVR abgebrochen sind, werden nicht berücksichtigt.",
+      "VOICE_UNMANAGED": "Gesamtzahl aller nicht bearbeiteten Anrufe, welche durch die Systemeinstellungen abgebrochen wurden. (Bsp: Zeitüberschreitung innerhalb der Warteschlange; Überlauf in eine andere Warteschlange; Betreten oder Verbleiben in der Warteschlange, wenn keine Agenten mehr angemeldet sind.)",
+      "VOICE_WAITING": "Gesamtzahl der aktuell wartenden Anrufe über alle eingehenden Warteschlangen",
       "MANDATORY_DISPOSITION_ENABLED": "Kontaktqualifizierung erforderlich",
-      "EXACT_MATCH_FILTER": "Suche nach einer genauen Übereinstimmung der Suchbegriffe",
-      "LIKE_FILTER": "Suche nach variablen Übereinstimmungen der Suchbegriffe"
+      "EXACT_MATCH_FILTER": "Genaue Übereinstimmung der Suchbegriffe",
+      "LIKE_FILTER": "Variable Übereinstimmung der Suchbegriffe"
     },
     "ERRORS": {
-      "FIRSTNAME_REQUIRED": "Der erste Name ist erforderlich",
-      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
-      "DISPOSITION_REQUIRED": "Pflichtfeld",
-      "AGENT_REQUIRED": "Pflichtfeld",
-      "QUEUE_REQUIRED": "Pflichtfeld",
-      "CAMPAIGN_REQUIRED": "Pflichtfeld",
-      "FAILED_INITIALIZATION": "Fehler während der Initialisierung"
+      "FIRSTNAME_REQUIRED": "Vorname erforderlich",
+      "PHONE_REQUIRED": "Telefonnummer erforderlich",
+      "DISPOSITION_REQUIRED": "Qualifizierung erforderlich",
+      "AGENT_REQUIRED": "Agent erforderlich",
+      "QUEUE_REQUIRED": "Warteschlange erforderlich",
+      "CAMPAIGN_REQUIRED": "Kampagne erforderlich",
+      "FAILED_INITIALIZATION": "Fehler während Initialisierung"
     },
-    "NO_AVAILABLE_INFO": "Keine Information vorhanden",
-    "WELCOME_TO_MOTION": "Willkommen zu Motion",
+    "NO_AVAILABLE_INFO": "Keine Informationen vorhanden",
+    "WELCOME_TO_MOTION": "Willkommen!",
     "WELCOME_MESSAGE": "Verwenden Sie die linke Seitenleiste, um durch die verfügbaren Abschnitte zu navigieren",
     "ADD": "Hinzufügen",
     "CONTACTMANAGER": "Kontaktmanager",
     "NEW_CONTACT": "Neuer Kontakt",
     "PHONE": "Telefon",
     "SAVE": "Speichern",
-    "INBOUND_WAITING_CALLS": "Wartende Anrufe (Eingehend)",
-    "CONTACTS": "Kontakte",
-    "MYCONTACTS": "Meine Kontakte",
+    "INBOUND_WAITING_CALLS": "Liste der wartenden Anrufe",
+    "CONTACTS": "Globale Kontakte",
+    "MYCONTACTS": "Von mir bearbeitete Kontakte",
     "ADD_CONTACT": "Kontakt hinzufügen",
     "RELOAD": "Neu Laden",
     "WAITING_TEXT": "Wartende Interaktionen",
     "TALKING_TEXT": "Aktive Anrufe",
     "INBOUND_ANSWERED_TEXT": "Angenommene Anrufe",
-    "ABANDONED_TEXT": "Abgebrochene Anrufe",
-    "DROP_RATE_TEXT": "Abbruchrate",
+    "ABANDONED_TEXT": "Gesamt abgebrochene Interaktionen",
+    "DROP_RATE_TEXT": "Rate vom System aufgelegt",
     "TOTAL_OFFERED_TEXT": "Gesamt angebotene Interaktionen",
     "AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit",
     "AVG_TALK_TIME_TEXT": "Durchschnittliche Gesprächszeit",
     "TOTAL_TEXT": "Gesamt ausgehende Anrufe",
     "OUTBOUND_ANSWERED_TEXT": "Beantwortete Anrufe (Ausgehend) ",
     "TOT_DURATION_TEXT": "Gesamtdauer ausgehender Anrufe ",
-    "AVG_DURATION_TEXT": "Durchschnittliche Dauer ausgehender Anrufe",
-    "OUTBOUND_ANSWER_RATE_TEXT": "Rate angenommener ausgehender Anrufe",
+    "AVG_DURATION_TEXT": "Durchschnittl. Dauer (Ausgehend)",
+    "OUTBOUND_ANSWER_RATE_TEXT": "Antwortrate ausgehende Anrufe",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
     "OF": "von",
-    "REPLY_PLACEHOLDER": "Text eingeben und ENTER drücken zum Senden",
+    "REPLY_PLACEHOLDER": "Text eingeben und Senden mit Eingabetaste",
     "CONTACT_INFO": "Kontaktinformationen",
     "CLOSE_AND_DISPOSE": "Schließen und Qualifizieren",
     "DISPOSITIONS": "Qualifizierungen",
     "REJECT": "Ablehnen",
     "CLOSED": "Geschlossen",
     "INFO": "Information",
-    "NOTE": "Hinweis",
+    "NOTE": "Anmerkung",
     "ACCEPT_ELSEWHERE": "Von anderem Teilnehmer angenommen",
     "ATTENTION": "Achtung",
-    "SOCIAL": "Sozial",
+    "SOCIAL": "Social-Media",
     "NO_JSCRIPTY_PROJECTS_AVAILABLE": "Keine Jscripty-Projekte verfügbar",
     "OPENED": "Geöffnet",
     "FILTER": "Filter",
     "INTERACTIONS": "Interaktionen",
     "STARTEDAT": "Begonnen am",
     "STATUS": "Status",
-    "OPEN": "Öffnen",
+    "OPEN": "Offen",
     "SHOW": "Anzeigen",
     "ME": "ICH",
     "NOT_ASSIGNED": "Nicht zugewiesen",
     "HIDE_DETAILS": "Details ausblenden",
     "EXTERNAL_URL": "Externer Link",
     "SET_AS": "Festlegen als",
-    "PENDING": "Ausstehend",
+    "PENDING": "Warten auf Rückmeldung",
     "CANNED_ANSWER_NOT_FOUND": "Keine Textbausteine gefunden",
     "CANNED_ANSWER_SEARCH": "Hier nach einem Textbaustein suchen",
     "NO_MAIL_ACCOUNTS_AVAILABLE": "Keine E-Mail-Konten verfügbar",
     "NO_FAX_ACCOUNTS_AVAILABLE": "Keine Fax-Konten verfügbar",
     "NO_SMS_ACCOUNTS_AVAILABLE": "Keine SMS-Konten verfügbar",
-    "FILTER_VOICE_QUEUES": "Anrufwarteschlangen filtern",
+    "FILTER_VOICE_QUEUES": "Warteschlangen filtern",
     "LOADING_INTERACTION": "Interaktion wird geladen",
     "JANUARY": "Januar",
     "FEBRUARY": "Februar",
     "YESTERDAY": "Gestern",
     "TODAY": "Heute",
     "SELECT_DATE": "Datum auswählen",
-    "SELECT_DATE_RANGE": "Wählen Sie einen Datumsbereich",
-    "CLEAR": "Löschen",
-    "CALL_NUMBER": "Anrufen",
-    "TRANSFER_NUMBER": "Transfer",
+    "SELECT_DATE_RANGE": "Datumsbereich wählen",
+    "CLEAR": "Zurücksetzen",
+    "CALL_NUMBER": "Nummer Anrufen",
+    "TRANSFER_NUMBER": "Transfer an Nummer",
     "CALL_SAVED": "Anruf erfolgreich gespeichert",
     "CALL_DISPOSED": "Anruf erfolgreich qualifiziert",
-    "CHANNEL_WAITING_TEXT": "Wartende Interaktionen",
+    "CHANNEL_WAITING_TEXT": "Liste der wartenden Interaktionen",
     "CHANNEL_QUEUE": "Warteschlange",
-    "CHANNEL_FROM": "von",
+    "CHANNEL_FROM": "Von",
     "MARK_AS_UNREAD": "Als ungelesen markieren",
     "SELECT_AGENT": "Agenten auswählen",
     "READ": "Gelesen",
     "SELECT_READ_UNREAD": "Wählen ob Lesen/Ungelesen",
     "SELECT_SUBSTATUS": "Zwischenstatus auswählen",
     "UNREAD": "Ungelesen",
-    "ABANDONAT": "Abgebrochen",
+    "ABANDONAT": "Abgebrochen am",
     "ABANDONEDQUEUECALLS": "Abgebrochene Anrufe",
     "FREE": "Frei",
     "LASTASSIGNEDTO": "Zuletzt zugewiesen an",
     "QUEUE": "Warteschlange",
-    "QUEUECALLEREXITAT": "Abgebrochen",
+    "QUEUECALLEREXITAT": "Warteschlange verlassen am",
     "QUEUECALLEREXITREASON": "Grund",
     "RESERVED": "Reserviert",
     "SELECT_CAMPAIGN": "Warteschlange auswählen",
     "ASSIGNTO": "Zuweisen",
-    "CLICKRELOAD": "Verpasste Anrufe! Bitte Seite erneut laden",
+    "CLICKRELOAD": "Sie haben neue verpasste Anrufe. Bitte Seite neu Laden.",
     "NOTAVAILABLE": "Nicht verfügbar",
     "CURRENTLY_IN_USE_BY": "Derzeit verwendet von",
     "CUSTOMER_JOURNEY": "Kundenhistorie",
     "NO_DATA_AVAILABLE": "Keine Daten verfügbar",
     "AGENTS": "Agenten",
     "TRANSFER": "Transfer",
-    "NO_DISPOSITION_SET": "Keine Qualifizierungen definiert",
-    "ABANDONED_RATE": "Abbruchrate",
-    "ABANDONED_RATE_TEXT": "Rate der abgebrochenen Anrufe innerhalb der Warteschlange",
-    "AVG_MANAGED_TIME": "Durchschnittliche Bearbeitungszeit",
-    "AVG_MANAGED_TIME_TEXT": "Durchschnittliche Bearbeitungszeit aller Interkationen",
+    "NO_DISPOSITION_SET": "Keine Qualifizierung ausgewählt",
+    "ABANDONED_RATE": "Abbruchrate Chat",
+    "ABANDONED_RATE_TEXT": "Abgebrochene Chats",
+    "AVG_MANAGED_TIME": "DS. Bearbeitungszeit",
+    "AVG_MANAGED_TIME_TEXT": "Durchschnittliche Bearbeitungszeit",
     "MANAGED": "Bearbeitet",
     "MANAGED_RATE": "Bearbeitungsrate",
-    "MANAGED_RATE_TEXT": "Rate der bearbeiteten Interaktionen",
-    "MANAGED_TEXT": "Interaktionen bearbeitet",
-    "OPENED_TEXT": "Interaktionen geöffnet",
-    "TODAY_INTERACTIONS_STATS": "Interaktionen Tagesstatistiken",
+    "MANAGED_RATE_TEXT": "Rate bearbeitete Interaktionen",
+    "MANAGED_TEXT": "Ges. Interaktionen bearbeitet",
+    "OPENED_TEXT": "Ges. Interaktionen geöffnet",
+    "TODAY_INTERACTIONS_STATS": "Tagesstatistiken - weitere Kanäle",
     "UNMANAGED_RATE": "Rate nicht Bearbeitet",
-    "UNMANAGED_RATE_TEXT": "Rate der nicht bearbeiteten Interaktionen in der Warteschlange",
-    "VOICE_ABANDONED": "Abgebrochen",
-    "VOICE_ABANDONED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
+    "UNMANAGED_RATE_TEXT": "Rate nicht bearbeitete Interaktionen",
+    "VOICE_ABANDONED": "Gesamt Abgebrochen",
+    "VOICE_ABANDONED_TEXT": "Gesamt abgebrochene Anrufe",
     "VOICE_ABANDON_RATE": "Abbruchrate",
-    "VOICE_ABANDON_RATE_TEXT": "Rate der abgebrochenen Anrufe innerhalb der Warteschlange",
-    "VOICE_ANSWERED": "Angenommen",
-    "VOICE_ANSWERED_TEXT": "Angenommene Anrufe in der Warteschlange",
+    "VOICE_ABANDON_RATE_TEXT": "Rate abgebrochene Anrufe",
+    "VOICE_ANSWERED": "Gesamt Angenommen",
+    "VOICE_ANSWERED_TEXT": "Gesamt angenommene Anrufe",
     "VOICE_ANSWER_RATE": "Antwortrate",
-    "VOICE_ANSWER_RATE_TEXT": "Rate angenommener Anrufe in der Warteschlange",
-    "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "VOICE_AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit aller Sprachanrufe",
-    "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit",
-    "VOICE_AVG_TALK_TIME_TEXT": "Durchschnittliche Gesprächszeit aller Anrufe nach der Warteschleife",
-    "VOICE_TALKING": "IM GESPRÄCH",
-    "VOICE_TALKING_TEXT": "Aktive Anrufe in der Warteschlange",
+    "VOICE_ANSWER_RATE_TEXT": "Rate angenommener Anrufe",
+    "VOICE_AVG_HOLD_TIME": "DS. Wartezeit",
+    "VOICE_AVG_HOLD_TIME_TEXT": "DS. Wartezeit (Eingehend)",
+    "VOICE_AVG_TALK_TIME": "DS. Gesprächszeit",
+    "VOICE_AVG_TALK_TIME_TEXT": "Durchschnittl. Gesprächszeit",
+    "VOICE_TALKING": "Derzeit im Gespräch",
+    "VOICE_TALKING_TEXT": "Gesamt aktive Anrufe",
     "VOICE_TOTAL_OFFERED": "Gesamt angeboten",
-    "VOICE_TOTAL_OFFERED_TEXT": "Gesamtzahl der angebotenen Anrufe in der Warteschlange",
+    "VOICE_TOTAL_OFFERED_TEXT": "Gesamt angebotene Anrufe (Eingehend)",
     "VOICE_UNMANAGED": "Nicht bearbeitet",
-    "VOICE_UNMANAGED_TEXT": "Nicht bearbeitete Anrufe in der Warteschlange",
+    "VOICE_UNMANAGED_TEXT": "Ges. nicht bearbeitete Anrufe",
     "VOICE_WAITING": "Wartende Anrufe",
-    "VOICE_WAITING_TEXT": "Wartende Anrufe in der Warteschlange",
+    "VOICE_WAITING_TEXT": "Gesamt wartende Anrufe",
     "DOWNLOAD": "Herunterladen",
     "SCHEDULED_CALLS": "Geplante Anrufe",
     "PRIVATE": "Persönlich",
     "INTERACTION_CLOSED": "Interaktion erfolgreich geschlossen",
     "INTERACTION_CLOSED_DISPOSED": "Interaktion erfolgreich geschlossen und qualifiziert",
     "INTERACTION_DISPOSED": "Interaktion erfolgreich qualifiziert",
-    "ASSIGNED_TO_OTHERS": "An Andere zugewiesen",
+    "ASSIGNED_TO_OTHERS": "Einem anderen Nutzer zugewiesen",
     "SELECT_ALL": "Alles auswählen",
-    "CHAT_INTERACTIONS": "Chat-Interaktionen",
-    "FAX_INTERACTIONS": "Fax-Interaktionen",
+    "CHAT_INTERACTIONS": "Interaktionen per Chat",
+    "FAX_INTERACTIONS": "Interaktionen per Fax",
     "ID": "ID",
-    "MAIL_INTERACTIONS": "E-Mail-Interaktionen",
-    "OPENCHANNEL_INTERACTIONS": "Offener-Kanal-Interaktionen",
-    "SMS_INTERACTIONS": "SMS-Interaktionen",
+    "MAIL_INTERACTIONS": "Interaktionen per E-Mail",
+    "OPENCHANNEL_INTERACTIONS": "Interaktionen über den offenen Kanal",
+    "SMS_INTERACTIONS": "Interaktionen per SMS",
     "CANCEL": "Abbrechen",
     "DRAFT": "Entwurf speichern",
     "DRAFT_SAVE_WARNING_MESSAGE": "Für diese Interaktion ist bereits ein Entwurf gespeichert. Möchten Sie diesen überschreiben?",
     "ADD_PRODUCTPRICELIST": "PRODUKT HINZUFÜGEN",
     "AGENTFULLNAME": "Agent",
     "ALL_COMPANIES": "Alle Unternehmen",
-    "ALL_PRODUCTS": "Alles",
-    "ALL_STATUS": "Alles",
-    "ALL_STEP": "Alles",
+    "ALL_PRODUCTS": "Alle Produkte",
+    "ALL_STATUS": "Alle Status",
+    "ALL_STEP": "Alle Schritte",
     "ALL_WORKFLOW": "Alle Arbeitsabläufe",
     "ATTENDACELASTINVOICE": "Letzte Rechnung",
     "ATTENDACENEXTINVOICE": "Nächste Rechnung",
     "COMPANYCITY": "Stadt",
     "COMPANYCOUNTRY": "Land",
     "COMPANYDESC": "Beschreibung",
-    "COMPANYEMAIL": "Email",
+    "COMPANYEMAIL": "E-Mail",
     "COMPANYFAX": "Fax",
     "COMPANYNAME": "Unternehmen",
     "COMPANYNATION": "Staat",
     "DOSSIER_INFO": "Information",
     "ENDDATE": "Ablaufdatum",
     "FROM": "von",
-    "GRAPHINVOICES": "Diagramm der Rechnungsemission",
+    "GRAPHINVOICES": "Diagramm der Rechnung",
     "INASSET": "Kapital",
     "INVOICE": "RECHNUNG",
     "INVOICEDETAILS": "RECHNUNGS-DETAILS",
     "NEXTINVOICE": "Nächste Rechnung",
     "NOTES": "Notizen",
     "NO_PRODUCTINVOICE_AVAILABLE": "Kein Produkt verfügbar",
-    "NO_PRODUCTPRICELIST_AVAILABLE": "Keine Daten verfügbar",
-    "NO_PRODUCTPROFORMA_AVAILABLE": "Keine Daten verfügbar",
+    "NO_PRODUCTPRICELIST_AVAILABLE": "Keine Preislisten verfügbar",
+    "NO_PRODUCTPROFORMA_AVAILABLE": "Keine Pro-Forma verfügbar",
     "NUMBER": "Nummer",
     "OPENDATE": "Öffnungsdatum",
     "ORDER": "Bestellung",
     "ORDERCLIENTCODE": "Kundennummer",
-    "ORDERID": "Bestellung ID ",
+    "ORDERID": "Bestellnummer",
     "ORDERNOTES": "Notizen",
     "ORDERSTATUS": "Status",
     "ORDER_INFO": "Bestellung",
     "SELECT_WORKFLOWSTEPS": "Arbeitsablaufstatus auswählen",
     "STARTDATE": "Rechnungsdatum",
     "STATE": "Status",
-    "STEP": "Stufe",
+    "STEP": "Schritt",
     "SUBSCRIPTIONDETAIL": "Detail",
     "SUBSCRIPTIONNAME": "Abonnement",
     "SUBSCRIPTIONS": "KUNDENPLAN",
     "TAX": "MwSt",
-    "TO": "Zu",
+    "TO": "auf",
     "TOTALPAYMENTS": "Gesamtzahlungen",
     "UPDATED_AT": "Geändert am",
     "UPDATE_PRODUCT": "Produkt aktualisieren",
     "ENDING_DATE": "Enddatum",
     "ENDING_VALUE": "Endwert",
     "ENDS_WITH": "endet mit",
-    "EQUALS": "gleich",
+    "EQUALS": "ist gleich",
     "IS_AMONG": "ist unter",
     "IS_BETWEEN": "ist zwischen",
     "IS_GREATER_THAN": "ist größer als",
     "SELECT_QUEUE": "Warteschlange auswählen",
     "VIDAOOSESSION": "Videoanruf starten",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPP_INTERACTIONS": "WhatsApp-Interaktionen",
+    "WHATSAPP_INTERACTIONS": "Interaktionen per WhatsApp",
     "LAST_UPDATED": "Zuletzt aktualisiert",
     "MATCHING_FIELD": "Übereinstimmendes Feld",
     "MULTIPLE_CONTACTS_FOUND": "Mehrere Kontakte für Nummer gefunden",
     "SELECT_CONTACT": "Kontakt auswählen",
     "WHICH_ONE_TO_USE": "Welcher Eintrag soll verwendet werden?",
     "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Kein WhatsApp-Konto verfügbar",
-    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Qualifizierung der dritten Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Qualifizierung Ebene 2",
+    "THIRD_LEVEL_DISPOSITION": "Qualifizierung Ebene 3",
     "LICENSE_EXPIRE_REMAINING_DAYS": "Ihre Lizenz läuft bald ab! Bitte wenden Sie sich an Ihren Administrator",
-    "CREATEDAT": "Hergestellt in",
+    "CREATEDAT": "Erstellt am",
     "ELAPSED_ANSWERED": "Verstrichene Zeit seit dem Start des Anrufs",
     "ELAPSED_DISPOSED": "Verstrichene Zeit seit Beendigung des Anrufs",
     "LOST_CONNECTION": "Probleme mit der Netzwerkkonnektivität. Bitte Internetverbindung prüfen.",
     "NO_RESULTS_AVAILABLE": "Keine Ergebnisse verfügbar",
-    "AVAILABLE": "Erhältlich",
+    "AVAILABLE": "Verfügbar",
     "CONFIRM": "Bestätigen Sie",
     "FILTERS": "Filter",
     "FILTER_CHAT_WEBSITES": "Chat-Websites filtern",
index 55e3cf9..d0a7ac7 100644 (file)
@@ -2,48 +2,48 @@
   "DASHBOARDS": {
     "HOME": "Home",
     "CHAT": "Chat",
-    "MAIL": "Email",
+    "MAIL": "E-mail",
     "SMS": "Sms",
-    "OPENCHANNEL": "Open Channel",
+    "OPENCHANNEL": "Open Kanaal",
     "FAX": "Fax",
-    "RATING": "Waardering",
+    "RATING": "Rating",
     "FEEDBACK": "Feedback",
     "SUBJECT": "Onderwerp",
-    "REFERER": "Referer",
+    "REFERER": "Referentie",
     "ACCOUNT": "Account",
     "WEBSITE": "Website",
     "AGENT": "Agent",
     "CREATED_AT": "Gemaakt op",
     "CLOSED_AT": "Gesloten",
-    "DISPOSITION": "Afvoeren",
+    "DISPOSITION": "Dispositie",
     "CONTACT": "Neem contact op met",
     "INTERACTION": "Interactie",
     "BROWSER_NAME": "Browsernaam",
     "BROWSER_VERSION": "Browserversie",
     "OS_NAME": "Naam besturingssysteem",
     "OS_VERSION": "Versie van besturingssysteem",
-    "DEVICE_MODEL": "Apparaatmodel",
+    "DEVICE_MODEL": "Apparaat model",
     "DEVICE_VENDOR": "Apparaat",
-    "DEVICE_TYPE": "Apparaattype",
-    "RECALLME": "Recall Me",
-    "DROP_RATE": "Daalsnelheid",
+    "DEVICE_TYPE": "Apparaat type",
+    "RECALLME": "Bel mij terug",
+    "DROP_RATE": "Wegvalpercentage",
     "DROPPED": "Weggevallen",
-    "DROPPED_TEXT": "Verbrede Wachtrij oproepen",
+    "DROPPED_TEXT": "Weggevallen wachtrij oproepen",
     "DETAIL": "Detail",
     "MOTION_BULL": "Motion Bull",
     "LIMITED": "Beperkt",
-    "LIMITED_TEXT": "Campagnes afkomstige gesprekken/Limited",
+    "LIMITED_TEXT": "Afkomst/limiet gesprekken afkomstig uit IVR-Campagnes",
     "DASHBOARDS": "Dashboards",
     "RECORDINGS": "Opnamen",
-    "TODAY_MOTION_BULL_STATS": "Vandaag Motion Bull Stats",
+    "TODAY_MOTION_BULL_STATS": "De Motion Bull stats. van vandaag",
     "ORIGINATED": "Oorsprong",
-    "ORIGINATED_TEXT": "Wachtrij afkomstige gesprekken",
+    "ORIGINATED_TEXT": "Gesprekken afkomstig uit wachtrij",
     "UPDATE": "Update",
     "MORE": "Meer",
     "MOTIONDIALER": "Motion Bull",
-    "DISPOSE": "Afvoeren",
+    "DISPOSE": "Opruimen",
     "QUEUES": "Wachtrijen",
-    "DIALER_CALL": "Oproepen beller",
+    "DIALER_CALL": "Dialer",
     "ELAPSED_TIME": "Verstreken tijd",
     "EDIT": "Bewerken",
     "MERGE": "Samenvoegen",
     "POSTALCODE": "Postcode",
     "CUSTOM_FIELDS": "Aangepaste velden",
     "GENERAL": "Algemeen",
-    "VOICE": "Spraak",
-    "TODAY_IVR_CAMPAIGNS_STATS": "Vandaag Ivr campagnes Stats",
-    "TODAY_INBOUND_STATS": "Vandaag Inbound Stats",
-    "TODAY_OUTBOUND_STATS": "Vandaag Outbound Stats",
-    "WAITING": "Wachten",
-    "TALKING": "Spreken",
+    "VOICE": "Telefonie",
+    "TODAY_IVR_CAMPAIGNS_STATS": "IVR-campagne Statistieken Van vandaag",
+    "TODAY_INBOUND_STATS": "Inkomende Statistieken (Wachtrij) Van Vandaag",
+    "TODAY_OUTBOUND_STATS": "Uitgaande Statistieken Van Vandaag ",
+    "WAITING": "Wachtend",
+    "TALKING": "In gesprek",
     "INBOUND_ANSWERED": "Beantwoord",
     "OUTBOUND_ANSWERED": "Beantwoord",
     "ABANDONED": "Verlaten",
-    "TOTAL_OFFERED": "Totaal beschikbaar",
-    "AVG_HOLD_TIME": "Gemiddelde wachttijd",
-    "INBOUND_ANSWER_RATE": "Antwoord tarief",
-    "OUTBOUND_ANSWER_RATE": "Antwoord tarief",
-    "ABANDON_RATE": "Snelheid verlaten",
-    "UNMANAGED": "Onbeheerde",
+    "TOTAL_OFFERED": "Tot. aangeboden",
+    "AVG_HOLD_TIME": "Gem. wachttijd",
+    "INBOUND_ANSWER_RATE": "Antwoordpercentage",
+    "OUTBOUND_ANSWER_RATE": "Antwoordpercentage",
+    "ABANDON_RATE": "Verlatingspercentage",
+    "UNMANAGED": "Onbeheerd",
     "TOTAL": "Totaal",
     "TOT_DURATION": "Totale duur",
     "AVG_DURATION": "Gemiddelde duur",
     "HELP": {
       "ORIGINATEDLIMITED": "Campagnes afkomstige gesprekken/Limited",
-      "DROPPED": "Het totale aantal daalde wachtrij oproepen, gezien alle gemaakte wachtrijen.",
-      "DROP_RATE": "Om de terugvalsnelheid van de wachtrij oproepen",
-      "WAITING": "Het totale aantal Wachtrij oproepen, gezien alle gemaakte wachtrijen",
+      "DROPPED": "Het totale aantal weggevallen wachtrij oproepen, gezien alle gemaakte wachtrijen.",
+      "DROP_RATE": "Het wegvalpercentage van wachtrij oproepen",
+      "WAITING": "Het totale aantal wachtrij oproepen, gezien alle gemaakte wachtrijen",
       "OUTBOUND_ANSWERED": "Het totale aantal voltooide uitgaande gesprekken",
-      "ABANDONED": "Het totale aantal verlaten oproepen wachtrij, gezien alle gemaakte wachtrijen. Merk op dat de oproepen die worden verlaten voor time-out en joinempty worden niet meegeteld bij deze waarde",
-      "TOTAL_OFFERED": "Het totale aantal oproepen wachtrij (voltooide verlaten). Merk op dat de gesprekken die eindigde in de IVR, zonder dat u in de wachtrij, worden niet meegeteld bij deze waarde",
-      "AVG_HOLD_TIME": "De gemiddelde wachtrij wachttijd, zijnde de gemiddelde tijd van het gesprek te wachten voor een agent wordt beantwoord, gezien alle wachtrijen",
-      "OUTBOUND_ANSWER_RATE": "Het antwoord van alle uitgaande oproepen",
-      "ABANDON_RATE": "De Snelheid verlaten van alle Oproepen wachtrij",
+      "ABANDONED": "Het totale aantal verlaten wachtrij oproepen, gezien alle gemaakte wachtrijen. Oproepen die worden verlaten voor time-out en joinempty worden niet meegeteld bij deze waarde",
+      "TOTAL_OFFERED": "Het totale aantal aangeboden wachtrij oproepen (voltooide + verlaten). Gesprekken die eindigde in de IVR en niet in de wachtrij komen, worden niet meegeteld bij deze waarde",
+      "AVG_HOLD_TIME": "De gemiddelde wachttijd van de wachtrij, gemiddelde wachttijd van het gesprek voor het door een agent wordt beantwoord, gezien alle wachtrijen",
+      "OUTBOUND_ANSWER_RATE": "Het antwoordpercentage van van alle uitgaande oproepen",
+      "ABANDON_RATE": "Het verlatingspercentage van alle wachtrij oproepen",
       "UNMANAGED": "Het totale aantal onbeheerde wachtrij oproepen, gezien alle gemaakte wachtrijen. Het bevat de oproepen die worden verlaten voor time-out, joinempty, leavewhenempty en exitwithkey",
       "TOTAL": "Het totale aantal uitgaande gesprekken",
       "TOT_DURATION": "De totale duur van alle uitgaande oproepen",
       "AVG_DURATION": "De gemiddelde duur van alle uitgaande oproepen",
-      "ORIGINATED": "Het totale aantal gesprekken dat uit de wachtrij campagnes",
-      "ABANDONED_RATE": "De vertrekfrequentie van alle interacties",
-      "AVG_MANAGED_TIME": "De gemiddelde interactie Beheerde tijd, namelijk de gemiddelde tijd doorgebracht tijdens een gesprek",
+      "ORIGINATED": "Het totale aantal gesprekken uit de wachtrij",
+      "ABANDONED_RATE": "De verlatingsperentage van alle interacties",
+      "AVG_MANAGED_TIME": "De gemiddelde interactie tijd, de gemiddelde tijd doorgebracht tijdens een gesprek",
       "MANAGED": "Het totale aantal voltooide interacties",
-      "MANAGED_RATE": "De beheerde snelheid van alle interacties",
+      "MANAGED_RATE": "De beheerde afhandelingssnelheid van alle interacties",
       "OPENED": "Het totale aantal actieve interacties",
-      "UNMANAGED_RATE": "De onbeheerde snelheid van alle interacties",
-      "VOICE_ABANDONED": "Het totale aantal verlaten wachtrij-oproepen, rekening houdend met alle bestaande wachtrijen. Merk op dat de oproepen die worden verlaten wegens time-out en joinempty niet worden overwogen",
-      "VOICE_ANSWERED": "Het totale aantal voltooide wachtrij-oproepen, voor alle bestaande wachtrijen",
-      "VOICE_ANSWER_RATE": "Het antwoordpercentage van alle wachtrijsoproepen",
-      "VOICE_AVG_HOLD_TIME": "De wachttijd van de gemiddelde wachtrij, namelijk de gemiddelde tijd besteed aan het wachten op een agent om te antwoorden, voor alle bestaande wachtrijen",
-      "VOICE_AVG_TALK_TIME": "De gemiddelde wachttijd voor de wachtrij, namelijk de gemiddelde tijd die tijdens het gesprek is doorgebracht, voor alle bestaande wachtrijen",
-      "VOICE_TALKING": "Het totale aantal actieve wachtrij-oproepen voor alle bestaande wachtrijen",
-      "VOICE_TOTAL_OFFERED": "Het totale aantal wachtrijgesprekken (voltooid + verlaten). Merk op dat de oproepen die binnenkomen in een IVR en niet in een wachtrij, niet zullen worden beschouwd",
-      "VOICE_UNMANAGED": "Het totale aantal onbeheerde wachtrij-oproepen, voor alle bestaande wachtrijen. Het bevat de oproepen die worden verlaten wegens time-out, joinempty, leavewanneerempty en exitwithkey (zie asterisk-document voor meer informatie)",
-      "VOICE_WAITING": "Het totale aantal wachtende wachtrij-oproepen, voor alle bestaande wachtrijen",
+      "UNMANAGED_RATE": "De onbeheerde afhandelingssnelheid van alle interacties",
+      "VOICE_ABANDONED": "Het totale aantal verlaten wachtrij oproepen, rekening houdend met alle bestaande wachtrijen. Oproepen die worden verlaten wegens time-out en joinempty niet worden overwogen",
+      "VOICE_ANSWERED": "Het totale aantal voltooide wachtrij oproepen, voor alle bestaande wachtrijen",
+      "VOICE_ANSWER_RATE": "Het antwoordpercentage van alle wachtrij oproepen",
+      "VOICE_AVG_HOLD_TIME": "De gemiddelde wachttijd voor wachtrij oproepen, de gemiddelde besteden tijd bij het wachten op een agent, voor alle bestaande wachtrijen",
+      "VOICE_AVG_TALK_TIME": "De gemiddelde gespreksduur van wachtrij oproepen, namelijk de gemiddelde tijd die tijdens het gesprek is doorgebracht, voor alle bestaande wachtrijen",
+      "VOICE_TALKING": "Het totale aantal actieve wachtrij oproepen voor alle bestaande wachtrijen",
+      "VOICE_TOTAL_OFFERED": "Het totale aantal wachtrijgesprekken (voltooid + verlaten). Oproepen die binnenkomen in een IVR en niet uitkomen in een wachtrij, niet zullen worden beschouwd",
+      "VOICE_UNMANAGED": "Het totale aantal onbeheerde wachtrij oproepen, voor alle bestaande wachtrijen. Het bevat de oproepen die worden verlaten wegens time-out, joinempty, leavewhenempty en exitwithkey (zie asterisk-document voor meer informatie)",
+      "VOICE_WAITING": "Het totale aantal wachtende wachtrij oproepen, voor alle bestaande wachtrijen",
       "MANDATORY_DISPOSITION_ENABLED": "Verplichte plaatsing ingeschakeld voor dit account",
       "EXACT_MATCH_FILTER": "Zoek naar een exacte overeenkomst",
       "LIKE_FILTER": "Zoek naar het opgegeven patroon"
     },
     "ERRORS": {
-      "FIRSTNAME_REQUIRED": "De Voornaam is verplicht",
-      "PHONE_REQUIRED": "Het telefoonnummer is verplicht",
+      "FIRSTNAME_REQUIRED": "Verplicht veld",
+      "PHONE_REQUIRED": "Verplicht veld",
       "DISPOSITION_REQUIRED": "Verplicht veld",
       "AGENT_REQUIRED": "Verplicht veld",
       "QUEUE_REQUIRED": "Verplicht veld",
     "ADD": "Toevoegen",
     "CONTACTMANAGER": "Contact Manager",
     "DASHBOARD": "Dashboard",
-    "EDIT_CONTACT": "Contactpersoon bewerken",
+    "EDIT_CONTACT": "Contactpersoon Bewerken",
     "EMAIL": "E-mail",
-    "FULLNAME": "Fullname",
+    "FULLNAME": "Volledige naam",
     "LIST": "Lijst",
-    "NEW_CONTACT": "Nieuwe contactpersoon",
+    "NEW_CONTACT": "Nieuw contactpersoon",
     "PHONE": "Telefoon",
     "SAVE": "Opslaan",
-    "INBOUND_WAITING_CALLS": "Inkomende gesprekken in wachtstand",
+    "INBOUND_WAITING_CALLS": "Inkomende oproepen in wachtstand",
     "CONTACTS": "Contactpersonen",
     "MYCONTACTS": "Mijn contactpersonen",
-    "ADD_CONTACT": "Contactpersoon toevoegen",
-    "RELOAD": "Reload",
+    "ADD_CONTACT": "Contactpersoon Toevoegen",
+    "RELOAD": "Herladen",
     "WAITING_TEXT": "Wachtrij oproepen",
     "TALKING_TEXT": "Actieve Wachtrij oproepen",
-    "INBOUND_ANSWERED_TEXT": "Beantwoord oproepen wachtrij",
+    "INBOUND_ANSWERED_TEXT": "Beantwoorde wachtrij oproepen",
     "ABANDONED_TEXT": "Wachtrij verlaten oproepen",
-    "DROP_RATE_TEXT": "Oproepen wachtrij daalsnelheid",
+    "DROP_RATE_TEXT": "Oproepen wachtrij wegvalsnelheid",
     "TOTAL_OFFERED_TEXT": "Totale gesprekken",
     "AVG_HOLD_TIME_TEXT": "Wachtrij gesprekken - Gem. tijd in wacht",
     "AVG_TALK_TIME_TEXT": "Wachtrij Spreektijd gesprekken",
-    "INBOUND_ANSWER_RATE_TEXT": "Wachtrij oproepen beantwoorden tarief",
+    "INBOUND_ANSWER_RATE_TEXT": "Antwoordpercentage wachtrij oproepen",
     "UNMANAGED_TEXT": "Onbeheerde Wachtrij oproepen",
     "TOTAL_TEXT": "Totaal uitgaande gesprekken",
     "OUTBOUND_ANSWERED_TEXT": "Uitgaande beantwoorde gesprekken",
     "OF": "Van",
     "REPLY_PLACEHOLDER": "Typ en druk op enter om een bericht te verzenden.",
     "CONTACT_INFO": "Contact Info",
-    "CLOSE_AND_DISPOSE": "Dicht en afvoeren",
-    "DISPOSITIONS": "Dispositions",
+    "CLOSE_AND_DISPOSE": "Afronden",
+    "DISPOSITIONS": "Disposities",
     "CLOSE_WITHOUT_DISPOSE": "Sluiten zonder lever",
     "ACCEPT": "Accepteren",
     "REJECT": "Afwijzen",
     "OPENED": "Open",
     "FILTER": "Filter",
     "SELECT_STATUS": "Selecteer Status.",
-    "SELECT_ACCOUNT": "Account selecteren",
-    "SELECT_WEBSITE": "Selecteer website",
+    "SELECT_ACCOUNT": "Selecteren Account",
+    "SELECT_WEBSITE": "Selecteer Website",
     "ALL": "Alle",
     "INTERACTIONS": "Interacties",
     "STARTEDAT": "Gestart op",
     "STATUS": "Status",
     "OPEN": "Open",
-    "SHOW": "Toon",
+    "SHOW": "Weergeven",
     "ME": "Me",
     "NOT_ASSIGNED": "Niet toegewezen",
     "UNKNOWN": "Onbekend",
     "LAST_MESSAGE": "Laatste bericht",
     "USER": "Gebruiker",
     "TAGS": "Tags",
-    "SELECT_TAG": "Selecteer label",
+    "SELECT_TAG": "Selecteer Label",
     "TYPE": "Type",
     "SOURCE": "Bron",
     "DESTINATION": "Bestemming",
     "CALLERID": "Beller-ID",
     "END_AT": "Eindigt op",
     "DURATION": "Duur",
-    "SHOW_DETAILS": "Details weergeven",
-    "HIDE_DETAILS": "Details verbergen",
+    "SHOW_DETAILS": "Details Weergeven",
+    "HIDE_DETAILS": "Details Verbergen",
     "EXTERNAL_URL": "Externe link",
     "SET_AS": "Instellen als",
     "PENDING": "In afwachting",
-    "CANNED_ANSWER_NOT_FOUND": "Geen ingeblikte antwoorden gevonden",
-    "CANNED_ANSWER_SEARCH": "Voer een tekst te zoeken in een ingeblikt antwoord",
+    "CANNED_ANSWER_NOT_FOUND": "Geen standaard antwoorden gevonden",
+    "CANNED_ANSWER_SEARCH": "Voer een tekst in om te zoeken in een standaard antwoord",
     "NO_MAIL_ACCOUNTS_AVAILABLE": "Geen e-mailaccounts beschikbaar",
     "NO_FAX_ACCOUNTS_AVAILABLE": "Geen Fax rekeningen beschikbaar",
     "NO_SMS_ACCOUNTS_AVAILABLE": "Geen SMS Accounts beschikbaar",
-    "FILTER_VOICE_QUEUES": "Filter Voice Wachtrijen",
+    "FILTER_VOICE_QUEUES": "Filter voice wachtrijen",
     "LOADING_INTERACTION": "We laden de interactie ...",
-    "JANUARY": "januari-",
-    "FEBRUARY": "februari",
-    "MARCH": "maart",
-    "APRIL": "april",
-    "MAY": "mei",
-    "JUNE": "juni-",
-    "JULY": "juli-",
-    "AUGUST": "augustus",
-    "SEPTEMBER": "september",
-    "OCTOBER": "oktober",
-    "NOVEMBER": "november",
-    "DECEMBER": "december",
-    "MON": "ma",
-    "TUE": "Din",
-    "WED": "trouwen",
-    "THU": "Don",
-    "FRI": "vr",
+    "JANUARY": "Januari",
+    "FEBRUARY": "Februari",
+    "MARCH": "Maart",
+    "APRIL": "April",
+    "MAY": "Mei",
+    "JUNE": "Juni",
+    "JULY": "Juli",
+    "AUGUST": "Augustus",
+    "SEPTEMBER": "September",
+    "OCTOBER": "Oktober",
+    "NOVEMBER": "November",
+    "DECEMBER": "December",
+    "MON": "Ma",
+    "TUE": "Di",
+    "WED": "Wo",
+    "THU": "Do",
+    "FRI": "Vr",
     "SAT": "Za",
-    "SUN": "Zon",
+    "SUN": "Zo",
     "DELETE": "Verwijder",
     "LAST_3_DAYS": "Laatste 3 dagen",
     "LAST_YEAR": "Afgelopen jaar",
     "YESTERDAY": "Gisteren",
     "TODAY": "Vandaag",
     "SELECT_DATE": "Selecteer Startdatum",
-    "SELECT_DATE_RANGE": "Selecteer datumbereik",
-    "CLEAR": "Duidelijk",
-    "CALL_NUMBER": "telefoontje",
-    "TRANSFER_NUMBER": "Overdracht",
-    "CALL_SAVED": "Bel correct opgeslagen",
-    "CALL_DISPOSED": "Roep op de juiste manier",
-    "CHANNEL_WAITING_TEXT": "Waiting Queue Interactions",
+    "SELECT_DATE_RANGE": "Selecteer Datumbereik",
+    "CLEAR": "Leegmaken",
+    "CALL_NUMBER": "Telefoonnummer",
+    "TRANSFER_NUMBER": "Overdrachtsnummer",
+    "CALL_SAVED": "Gesprek correct opgeslagen",
+    "CALL_DISPOSED": "Gesprec correct afgesloten",
+    "CHANNEL_WAITING_TEXT": "Wachtende interacties",
     "CHANNEL_QUEUE": "Wachtrij",
     "CHANNEL_FROM": "Van",
-    "MARK_AS_UNREAD": "markeren als ongelezen",
+    "MARK_AS_UNREAD": "Markeren als Ongelezen",
     "SELECT_AGENT": "Selecteer Agent",
     "READ": "Lezen",
-    "SELECT_READ_UNREAD": "Selecteer Lezen / ongelezen",
+    "SELECT_READ_UNREAD": "Selecteer gelezen / ongelezen",
     "SELECT_SUBSTATUS": "Selecteer Substatus",
     "UNREAD": "Ongelezen",
     "ABANDONAT": "Verlaten",
     "FREE": "Gratis",
     "LASTASSIGNEDTO": "Laatst toegewezen aan",
     "QUEUE": "Wachtrij",
-    "QUEUECALLEREXITAT": "Liet vallen",
+    "QUEUECALLEREXITAT": "Beller heeft wachtrij verlaten om",
     "QUEUECALLEREXITREASON": "Reden",
     "RESERVED": "Gereserveerd",
-    "SELECT_CAMPAIGN": "Selecteer een wachtrij",
+    "SELECT_CAMPAIGN": "Selecteer een Wachtrij",
     "ASSIGNTO": "Toewijzen",
-    "CLICKRELOAD": "Nieuwe achtergelaten oproepen! Herladen alstublieft",
+    "CLICKRELOAD": "Nieuwe verlaten oproepenu0021 Herladen alstublieft",
     "NOTAVAILABLE": "Niet beschikbaar",
     "CURRENTLY_IN_USE_BY": "Momenteel in gebruik door",
     "CUSTOMER_JOURNEY": "Customer Journey",
     "NO_DATA_AVAILABLE": "Geen gegevens beschikbaar",
-    "AGENTS": "agenten",
+    "AGENTS": "Agenten",
     "TRANSFER": "Overdracht",
     "NO_DISPOSITION_SET": "Geen dispositie ingesteld",
     "ABANDONED_RATE": "Verlaten tarief",
     "INTERACTION_CLOSED_DISPOSED": "Interactie correct gesloten en weggegooid",
     "INTERACTION_DISPOSED": "Interactie correct verwijderd",
     "ASSIGNED_TO_OTHERS": "Toegewezen aan anderen",
-    "SELECT_ALL": "Selecteer alles",
+    "SELECT_ALL": "Selecteer Alles",
     "CHAT_INTERACTIONS": "Chat interacties",
     "FAX_INTERACTIONS": "Fax interacties",
     "ID": "ID",
     "MAIL_INTERACTIONS": "E-mail interacties",
     "OPENCHANNEL_INTERACTIONS": "Open kanaal interacties",
     "SMS_INTERACTIONS": "SMS-interacties",
-    "CANCEL": "annuleren",
+    "CANCEL": "Annuleren",
     "DRAFT": "Droogte",
     "DRAFT_SAVE_WARNING_MESSAGE": "Er is al een concept opgeslagen voor deze interactie. Weet je zeker dat je het wilt overschrijven?",
     "DRAFT_SAVE_WARNING_TITLE": "Bestaand concept overschrijven?",
-    "OVERWRITE": "overschrijven",
+    "OVERWRITE": "Overschrijven",
     "SAVE_AS_DRAFT": "Opslaan als concept",
     "UNTITLED": "Ongetiteld",
-    "UPDATE_DRAFT": "Concept bijwerken",
+    "UPDATE_DRAFT": "Concept Bijwerken",
     "NO_AVAILABLE_INTERACTION": "Geen beschikbare interactie",
     "ACCOUNTINGDOC": "boekhouding",
-    "ADD_PRODUCTPRICELIST": "PRODUCT TOEVOEGEN",
-    "AGENTFULLNAME": "Middel",
+    "ADD_PRODUCTPRICELIST": "Product Toevoegen",
+    "AGENTFULLNAME": "Agent",
     "ALL_COMPANIES": "Alle bedrijven",
     "ALL_PRODUCTS": "Allemaal",
     "ALL_STATUS": "Allemaal",
     "CREDITNOTE": "KREDIET NOTA",
     "CREDITNOTEDETAILS": "Detail creditnota",
     "CREDITNOTE_INFO": "Credit Note",
-    "DELETE_PRODUCT": "Product verwijderen",
+    "DELETE_PRODUCT": "Product Verwijderen",
     "DEPOSIT": "STORTING",
     "DETAILS": "Details",
     "DISCOUNT": "Korting",
     "REQUESTNAME": "Verzoek naam",
     "REQUESTNOTES": "Verzoek om opmerkingen",
     "REQUEST_INFO": "Verzoek",
-    "SELECT_COMPANY": "Selecteer bedrijf",
-    "SELECT_PERIOD": "Selecteer bereik",
+    "SELECT_COMPANY": "Selecteer Bedrijf",
+    "SELECT_PERIOD": "Selecteer Bereik",
     "SELECT_PERIOD_CREATION": "Selecteer Aanmaakdatum",
     "SELECT_PERIOD_EXPIRE": "Selecteer Vervaldatum",
-    "SELECT_PERIOD_START": "Selecteer een datum",
-    "SELECT_PRODUCT": "Selecteer product",
-    "SELECT_PRODUCTTYPE": "Selecteer type",
-    "SELECT_WORKFLOW": "Selecteer workflow",
-    "SELECT_WORKFLOWSTEPS": "Selecteer Werkstroomstatus",
+    "SELECT_PERIOD_START": "Selecteer een Datum",
+    "SELECT_PRODUCT": "Selecteer Product",
+    "SELECT_PRODUCTTYPE": "Selecteer Type",
+    "SELECT_WORKFLOW": "Selecteer Workflow",
+    "SELECT_WORKFLOWSTEPS": "Selecteer Workflow stappen",
     "STARTDATE": "Factuur datum",
     "STATE": "Staat",
     "STEP": "Stap",
     "SUBSCRIPTIONDETAIL": "Detail",
     "SUBSCRIPTIONNAME": "Abonnement",
-    "SUBSCRIPTIONS": "KLANTenschema",
+    "SUBSCRIPTIONS": "Abonnementen",
     "TAX": "Belasting",
     "TO": "Naar",
     "TOTALPAYMENTS": "Totaal betalingen",
     "UPDATED_AT": "Gewijzigd op",
-    "UPDATE_PRODUCT": "Product bijwerken",
+    "UPDATE_PRODUCT": "Product Bijwerken",
     "WORKFLOW": "Selecteer workflow",
     "YEARS": "jaren",
     "CUSTOMER_IP": "Oorspronkelijk IP-adres",
     "IS_NOT_EQUAL": "Is niet gelijk aan",
     "MEET_ALL_CONDITIONS": "Voldoe aan alle voorwaarden",
     "MEET_ANY_CONDITIONS": "Voldoe aan minstens één voorwaarde",
-    "NEW_CONDITION": "nieuwe conditie",
-    "SELECT_FIELD": "Selecteer veld",
-    "SELECT_OPERATOR": "Selecteer operator",
+    "NEW_CONDITION": "nieuwe voorwaarden",
+    "SELECT_FIELD": "Selecteer Veld",
+    "SELECT_OPERATOR": "Selecteer Operator",
     "STARTING_DATE": "Begin datum",
     "STARTING_VALUE": "Startwaarde",
     "STARTS_WITH": "Begint met",
     "CHOOSE": "Kiezen",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download zonder bijlagen",
     "DOWNLOAD_WITH_ATTACHMENTS": "Download met bijlagen",
-    "SELECT_QUEUE": "Selecteer een wachtrij",
+    "SELECT_QUEUE": "Selecteer een Wachtrij",
     "VIDAOOSESSION": "Start videogesprek",
     "WHATSAPP": "WhatsApp-aansluiting",
     "WHATSAPP_INTERACTIONS": "WhatsApp Connector-interacties",
     "MATCHING_FIELD": "Overeenkomend veld",
     "MULTIPLE_CONTACTS_FOUND": "Meerdere contacten gevonden voor nummer",
     "SELECT": "Selecteer",
-    "SELECT_CONTACT": "Selecteer contact",
+    "SELECT_CONTACT": "Selecteer Contact",
     "WHICH_ONE_TO_USE": "Welke wil je gebruiken?",
     "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Geen Whatsapp-account beschikbaar",
     "SECOND_LEVEL_DISPOSITION": "Tweede niveau dispositie",
     "THIRD_LEVEL_DISPOSITION": "Dispositie op het derde niveau",
-    "LICENSE_EXPIRE_REMAINING_DAYS": "Uw licentie verloopt bijna! Neem contact op met uw beheerder",
+    "LICENSE_EXPIRE_REMAINING_DAYS": "Uw licentie verloopt bijnau0021 Neem contact op met uw beheerder",
     "CREATEDAT": "Gemaakt bij",
     "ELAPSED_ANSWERED": "Verstreken tijd sinds het gesprek is gestart",
     "ELAPSED_DISPOSED": "Verstreken tijd sinds het gesprek is beëindigd",
     "LOST_CONNECTION": "Problemen met netwerkconnectiviteit ervaren. Controleer uw internetverbinding.",
     "NO_RESULTS_AVAILABLE": "Geen resultaten beschikbaar",
-    "AUTOCLOSE": "Sluit het contacttabblad automatisch na verwijdering",
+    "AUTOCLOSE": "Het contacttabblad automatisch sluiten na verwijdering",
     "AGENT_PRESENCE": "Aanwezigheid van agent",
-    "SELECT_TEAM": "Selecteer team",
+    "SELECT_TEAM": "Selecteer Team",
     "AVAILABLE": "Beschikbaar",
     "CONFIRM": "Bevestigen",
     "FILTERS": "Filters",
index a7727f7..cdc4504 100644 (file)
     "TODAY": "I dag",
     "SELECT_DATE": "Välj Startdatum",
     "SELECT_DATE_RANGE": "Välj datumintervall",
-    "CLEAR": "Rensa",
+    "CLEAR": "Klar",
     "CALL_NUMBER": "Ring upp",
     "TRANSFER_NUMBER": "Överföra",
     "CALL_SAVED": "Ring korrekt sparad",
index e63ae66..d1303ac 100644 (file)
@@ -1,88 +1,88 @@
 {
   "FAX": {
-    "TEAMADD_FAXQUEUE": "Team zur Faxwarteschlange hinzufügen",
-    "AGENTADD_FAXQUEUE": "Agent Fax Warteschlange hinzufügen",
+    "TEAMADD_FAXQUEUE": "Team zur Warteschlange hinzufügen",
+    "AGENTADD_FAXQUEUE": "Agenten zur Warteschlange hinzufügen",
     "NAME": "Name",
-    "FAXQUEUES": "Fax Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "FAXQUEUES": "Fax-Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche",
     "ERRORS": {
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "AGENT_TIMEOUT_REQUIRED": "Der Agent Timeout ist erforderlich",
-      "MOTIONADDRESS_REQUIRED": "Die Adresse ist erforderlich",
-      "MOTIONADDRESS_MUST_VALID_URL": "Die Adresse muss in einem gültigen Format",
-      "LOCALSTATIONID_REQUIRED": "Die lokale Station-ID ist erforderlich",
-      "MODEM_REQUIRED": "Das Modem erforderlich.",
-      "GATEWAY_REQUIRED": "Das Gateway ist erforderlich",
-      "FAXDETECT_REQUIRED": "Die FAX Erkennung erforderlich ist",
-      "T38TIMEOUT_REQUIRED": "Die T.38-Timeout ist erforderlich",
-      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
-      "HEADERINFO_REQUIRED": "Die Information in der Kopfzeile sind erforderlich",
-      "TRUNK_REQUIRED": "Der Stamm ist erforderlich",
-      "LIST_REQUIRED": "Die Liste ist erforderlich",
-      "KEY_MAX_LENGTH": "Schlüssel muss eine maximale Länge von {{max}}",
-      "KEY_REQUIRED": "Der Schlüssel ist erforderlich",
-      "AGENT_REQUIRED": "Pflichtfeld",
-      "QUEUE_REQUIRED": "Pflichtfeld",
-      "TRUEPRIORITY_REQUIRED": "Pflichtfeld",
-      "FALSEPRIORITY_REQUIRED": "Pflichtfeld",
-      "CONDITION_REQUIRED": "Pflichtfeld",
-      "PRIORITY_REQUIRED": "Pflichtfeld",
-      "DISPOSITION_REQUIRED": "Pflichtfeld",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
-      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
-      "TEXT_REQUIRED": "Pflichtfeld",
-      "VALUE_REQUIRED": "Pflichtfeld",
-      "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "NAME_MUST_VALID_PATTERN": "Falsches Format",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
-      "TAG_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Sie sollten einen Pausenstatus angeben, wenn Sie eine Zwangsdisposition haben"
+      "NAME_REQUIRED": "Name erforderlich",
+      "AGENT_TIMEOUT_REQUIRED": "Zeitüberschreitung Agent erforderlich",
+      "MOTIONADDRESS_REQUIRED": "Adresse erforderlich",
+      "MOTIONADDRESS_MUST_VALID_URL": "Ungültiges Format Adresse",
+      "LOCALSTATIONID_REQUIRED": "Lokale Nebenstelle erforderlich",
+      "MODEM_REQUIRED": "Modem/Fax-Adapter erforderlich",
+      "GATEWAY_REQUIRED": "Gateway erforderlich",
+      "FAXDETECT_REQUIRED": "FAX-Erkennung erforderlich",
+      "T38TIMEOUT_REQUIRED": "T.38-Timeout erforderlich",
+      "TIMEOUT_REQUIRED": "Zeitüberschreitung erforderlich",
+      "HEADERINFO_REQUIRED": "Kopfzeile erforderlich",
+      "TRUNK_REQUIRED": "Trunk erforderlich",
+      "LIST_REQUIRED": "Liste erforderlich",
+      "KEY_MAX_LENGTH": "Wert darf nicht länger als {{max}} Zeichen sein",
+      "KEY_REQUIRED": "Schlüssel erforderlich",
+      "AGENT_REQUIRED": "Agent erforderlich",
+      "QUEUE_REQUIRED": "Warteschlange erforderlich",
+      "TRUEPRIORITY_REQUIRED": "Priorität bei zutreffender Bedingung erforderlich",
+      "FALSEPRIORITY_REQUIRED": "Priorität bei nicht zutreffender Bedingung erforderlich",
+      "CONDITION_REQUIRED": "Bedingung erforderlich",
+      "PRIORITY_REQUIRED": "Priorität erforderlich",
+      "DISPOSITION_REQUIRED": "Qualifizierung erforderlich",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität muss größer oder gleich sein als",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität bei Bedingung erfüllt muss größer oder gleich sein als",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität bei Bedingung nicht erfüllt muss größer oder gleich sein als",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss größer oder gleich sein als",
+      "TEXT_MAX_LENGTH": "Wert darf nicht länger als {{max}} Zeichen sein",
+      "TEXT_REQUIRED": "Text erforderlich",
+      "VALUE_REQUIRED": "Wert erforderlich",
+      "COMMAND_REQUIRED": "Eingabe erforderlich",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "NAME_MUST_VALID_PATTERN": "Ungültiges Format Name",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss kleiner oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung Agent muss kleiner oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Auf zugewiesenen Agenten warten erforderlich",
+      "TAG_REQUIRED": "Tag erforderlich",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss größer oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss kleiner oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Zeitüberschreitung Agententransfer erforderlich",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss größer oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss kleiner oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Zeitüberschreitung Warteschlangentransfer erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "PausenID während Qualifizierung erforderlich"
     },
-    "STRATEGY": "Strategie",
-    "AGENT_TIMEOUT": "Agent Timeout",
+    "STRATEGY": "Verteilungsstrategie",
+    "AGENT_TIMEOUT": "Zeitüberschreitung Agent",
     "DESCRIPTION": "Beschreibung",
-    "ADD_FAXQUEUE": "Warteschlange hinzufügen Fax",
-    "EDIT_FAXQUEUE": "Bearbeiten Fax Warteschlange",
-    "DELETE_FAXQUEUE": "Fax Löschen der Warteschlange",
+    "ADD_FAXQUEUE": "Fax-Warteschlange hinzufügen",
+    "EDIT_FAXQUEUE": "Fax-Warteschlange bearbeiten",
+    "DELETE_FAXQUEUE": "Fax-Warteschlange löschen",
     "CREATED_AT": "Erstellt am",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
     "GENERAL": "Allgemein",
-    "FAXACCOUNTS": "Fax Konten",
+    "FAXACCOUNTS": "Fax-Konten",
     "MOTIONADDRESS": "Motion Adresse",
-    "ADD_FAXACCOUNT": "Fax Konto hinzufügen",
-    "EDIT_FAXACCOUNT": "Fax Konto bearbeiten",
-    "DELETE_FAXACCOUNT": "Fax Konto löschen.",
-    "DISPOSITIONS": "Bestimmungen",
+    "ADD_FAXACCOUNT": "Fax-Konto hinzufügen",
+    "EDIT_FAXACCOUNT": "Fax-Konto bearbeiten",
+    "DELETE_FAXACCOUNT": "Fax-Konto löschen",
+    "DISPOSITIONS": "Bedingungen",
     "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Aktionen",
+    "ACTIONS": "Routing",
     "LIST": "Liste",
     "FIDELITY": "Treue",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Die Methode",
+    "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "In der Nähe",
-    "CLOSEMETHOD": "In der Nähe Methode",
-    "CLOSEURL": "Der URL",
-    "TRUNK": "Amtsleitung",
-    "LOCALSTATIONID": "Lokale Station Identifier",
+    "CLOSE": "Schließen und Qualifizieren",
+    "CLOSEMETHOD": "Methode schließen",
+    "CLOSEURL": "URL schließen",
+    "TRUNK": "SIP-Trunk",
+    "LOCALSTATIONID": "ID lokale Nebenstelle",
     "HELP": {
       "LOCALSTATIONID": "Lokale Station Identifier (Telefonnummer).",
       "HEADERINFO": "Ausgehende Faxkopfzeile.",
       "MINRATE": "Minimale Übertragungsrate eingestellt, bevor das Getriebe. Mögliche Werte sind: 2400, 4800, 7200, 9600, 12000 oder 14400.",
       "MAXRATE": "Maximale Übertragungsrate eingestellt, bevor das Getriebe. Mögliche Werte sind: 2400, 4800, 7200, 9600, 12000 oder 14400.",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "MANDATORYDISPOSITION": "Zwingende Disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Status für Zwangsdisposition anhalten"
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "Pausenstatus während der Qualifizierung"
     },
-    "ADVANCED": "Erweiterte",
+    "ADVANCED": "Erweitert",
     "ECM": "ECM",
     "MINRATE": "Min. Geschwindigkeit",
     "MAXRATE": "Max. Geschwindigkeit",
     "GATEWAY": "Gateway",
     "FAXDETECT": "Fax Erkennung",
     "T38TIMEOUT": "T.38-Timeout",
-    "SIP": "Technologie",
+    "SIP": "SIP",
     "HEADERINFO": "Header-info",
-    "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECTED": "Ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "FAX": "Fax",
-    "ID": "Id",
-    "TIMEOUT": "Timeout",
-    "FAXDISPOSITIONS": "Fax Disposition",
-    "NO_FAXDISPOSITION_AVAILABLE": "Kein Fax Dispositionen verfügbar",
-    "NEW_FAXDISPOSITION": "Neue Fax Disposition",
-    "ADD_FAXDISPOSITION": "Fax Disposition hinzufügen",
-    "EDIT_FAXDISPOSITION": "Fax Disposition bearbeiten",
-    "DELETE_FAXDISPOSITION": "Fax Disposition löschen",
+    "ID": "ID",
+    "TIMEOUT": "Zeitüberschreitung",
+    "FAXDISPOSITIONS": "Qualifizierung",
+    "NO_FAXDISPOSITION_AVAILABLE": "Keine Qualifizierung verfügbar",
+    "NEW_FAXDISPOSITION": "Neue Qualifizierung",
+    "ADD_FAXDISPOSITION": "Qualifizierung hinzufügen",
+    "EDIT_FAXDISPOSITION": "Qualifizierung bearbeiten",
+    "DELETE_FAXDISPOSITION": "Qualifizierung löschen",
     "NEW_FAXQUEUE": "Neue Warteschlange",
-    "NEW_FAXACCOUNT": "Neue Fax Konto",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "NEW_FAXACCOUNT": "Neues Fax-Konto",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "DELETE": "Löschen",
     "KEY": "Schlüssel",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "FILTER": "Filter",
     "SELECT_STATUS": "Status auswählen",
-    "ALL": "Alle",
+    "ALL": "Alles",
     "CLOSED": "Geschlossen",
-    "OPENED": "Geöffnet",
+    "OPENED": "Offen",
     "SELECT_ACCOUNT": "Konto auswählen",
-    "INTERACTIONS": "Wechselwirkungen",
+    "INTERACTIONS": "Interaktionen",
     "CONTACT": "Kontakt",
     "STARTEDAT": "Gestartet am",
     "STATUS": "Status",
     "ACCOUNT": "Konto",
-    "GOTO_FAXACCOUNT": "In Echtzeit, Faxgerät",
+    "GOTO_FAXACCOUNT": "Direkt zur Echtzeit-Warteschlange",
     "ACCOUNTS": "Konten",
-    "GOTOREALTIME_FAXACCOUNT": "In Echtzeit, Faxgerät",
+    "GOTOREALTIME_FAXACCOUNT": "Direkt zur Echtzeitansicht Fax-Konten",
     "TRUNK_STATUS": "Trunk Status",
-    "TRUNKS": "Amtsleitungen",
+    "TRUNKS": "SIP-Trunks",
     "REGISTRY": "Registrierung",
-    "NO_REGISTRY": "Keine Registry",
+    "NO_REGISTRY": "Nicht registriert",
     "PAUSE": "Pause",
-    "INFO": "Info",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Interne",
-    "PHONE_STATE": "Telefonstatus",
-    "PHONE_STATUS": "Telefonstatus",
+    "INFO": "Informationen",
+    "FULLNAME": "Vollständiger Name",
+    "INTERNAL": "Intern",
+    "PHONE_STATE": "Statis Nebenstelle",
+    "PHONE_STATUS": "SIP-Status Nebenstelle",
     "LOGOUT": "An-/Abmelden",
-    "DEFAULT_PAUSE": "Standard Pause",
-    "AGENTADD_QUEUE": "Agent Fax Warteschlange hinzufügen",
-    "AGENTSADD_QUEUE": "Agenten zu Fax Warteschlange hinzufügen",
-    "UNPAUSE": "Pause",
+    "DEFAULT_PAUSE": "Standardpause",
+    "AGENTADD_QUEUE": "Agent zur Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "UNPAUSE": "Pause abbrechen",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
     "LOGGED_IN": "Angemeldet",
-    "PAUSED": "Angehalten",
+    "PAUSED": "in Pause",
     "READY": "Bereit",
     "WAITING": "Warten",
     "PRIORITY": "Priorität",
-    "CONDITION": "Zustand",
-    "TRUEPRIORITY": "Wahre Priorität",
-    "FALSEPRIORITY": "Falsche Priorität",
+    "CONDITION": "Bedingung",
+    "TRUEPRIORITY": "Priorität, wenn erfüllt (true)",
+    "FALSEPRIORITY": "Priorität, wenn nicht erfüllt (false)",
     "VALUE": "Wert",
-    "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_GOTO": "Bearbeiten Gehe zu",
-    "EDIT_NOOP": "Bearbeiten Noop",
-    "EDIT_GOTOP": "GotoP bearbeiten",
-    "EDIT_GOTOIF": "Bearbeiten GotoIf",
-    "EDIT_QUEUE": "Fax Warteschlange bearbeiten",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "EDIT_AGENT": "Agenten bearbeiten",
+    "EDIT_GOTO": "\"GeheZu\" bearbeiten",
+    "EDIT_NOOP": "Log-Erstellung bearbeiten",
+    "EDIT_GOTOP": "GoToP bearbeiten",
+    "EDIT_GOTOIF": "Bedingung bearbeiten und Priorität zuweisen",
+    "EDIT_QUEUE": "Warteschlange bearbeiten",
+    "EDIT_CLOSE": "Verhalten bei Schließen bearbeiten",
     "QUEUE": "Warteschlange",
-    "GOTOIF": "GotoIf",
-    "GOTOP": "GotoP",
-    "NOOP": "Noop",
+    "GOTOIF": "GeheZuWenn (GoToIf)",
+    "GOTOP": "Priorität zuweisen (GoToP)",
+    "NOOP": "Log erstellen (NoOp)",
     "AGENT": "Agent",
-    "NOTES": "Hinweise",
-    "CLOSEDAT": "Geschlossen",
-    "DISPOSITION": "Disposition",
+    "NOTES": "Anmerkungen",
+    "CLOSEDAT": "Geschlossen am",
+    "DISPOSITION": "Qualifizierung",
     "REALTIME": "Echtzeit",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Gebrauch",
+    "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "Im Einsatz",
-    "VOICE": "Voice",
+    "IN_USE": "In Verwendung",
+    "VOICE": "Anrufe",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_FAXQUEUE": "In Echtzeit Fax Warteschlange",
-    "EDIT_TRUNK": "Bearbeiten Trunk",
+    "GOTOREALTIME_FAXQUEUE": "Zur Echtzeitansicht Warteschlange",
+    "EDIT_TRUNK": "Trunk bearbeiten",
     "REGISTERED": "Registriert",
-    "EDIT_ACCOUNT": "Fax Konto bearbeiten",
-    "PARTIALPAUSE": "Teilweise Pause",
+    "EDIT_ACCOUNT": "Fax-Konto bearbeiten",
+    "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
-    "TOTAL": "Insgesamt",
-    "IN": "In",
-    "OUT": "Aus",
-    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
+    "TOTAL": "Gesamt",
+    "IN": "Eingehend",
+    "OUT": "Ausgehend",
+    "NO_INTERACTION_AVAILABLE": "Keine Interaktionen verfügbar",
     "TAGS": "Tags",
     "REPLY": "Antwort",
     "SEND": "Senden",
-    "TO": "Zu",
+    "TO": "An",
     "FROM": "Von",
-    "INTERACTIONS_FAXACCOUNT": "Zu Wechselwirkungen gehen",
-    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
-    "NO_FAXCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
-    "NEW_FAXCANNEDANSWER": "Neue vordefinierte Antwort",
-    "ADD_FAXCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "EDIT_CHATCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
-    "DELETE_CHATCANNEDANSWER": "Vordefinierte Antwort löschen",
-    "SPYINTERACTION": "Spion",
+    "INTERACTIONS_FAXACCOUNT": "Direkt zu den Interaktionen",
+    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
+    "NO_FAXCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
+    "NEW_FAXCANNEDANSWER": "Neue Textvorlage",
+    "ADD_FAXCANNEDANSWER": "Textvorlage hinzufügen",
+    "EDIT_CHATCANNEDANSWER": "Textvorlage bearbeiten",
+    "DELETE_CHATCANNEDANSWER": "Textvorlage löschen",
+    "SPYINTERACTION": "Anzeigen",
     "DELETE_INTERACTION": "Interaktion löschen",
-    "COMMAND": "Befehl",
+    "COMMAND": "Eingabe",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
-    "VARIABLE": "Variable",
+    "VARIABLE": "Variabel",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klingen",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Sound abspielen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
+    "WAITFORTHEASSIGNEDAGENT": "Auf zugewiesenen Agenten warten",
     "EDIT_TAG": "Tag bearbeiten",
-    "TAG": "Etikett",
-    "AGENTADD_FAXACCOUNT": "Fügen Sie dem Faxkonto einen Agenten hinzu",
-    "AGENTTRANSFER": "Agent Transfer",
+    "TAG": "Tag",
+    "AGENTADD_FAXACCOUNT": "Agenten zum Fax-Konto hinzufügen",
+    "AGENTTRANSFER": "Transfer an Agenten erlauben",
     "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung für Agententransfer",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
-    "QUEUETRANSFERTIMEOUT": "Warteschlangenübertragungs-Timeout",
+    "QUEUETRANSFER": "Transfer in Warteschlange erlauben",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
     "TRANSFER": "Transfer",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
-    "DOWNLOAD_INTERACTION": "Herunterladen",
-    "FAXCANNEDANSWERS": "Vordefinierte Antworten",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
-    "MANDATORYDISPOSITION": "Zwingende Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Status pausieren, wenn die Disposition obligatorisch ist",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
+    "CANNEDANSWERS": "Textvorlagen",
+    "DOWNLOAD_INTERACTION": "Interaktion herunterladen",
+    "FAXCANNEDANSWERS": "Textvorlagen für Fax",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "PausenID während Qualifizierung",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschiemaufzeichnung verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
     "LASTMESSAGE": "Letzte Nachricht"
   }
 }
index 1bff537..5eed611 100644 (file)
@@ -1,26 +1,26 @@
 {
   "FAX": {
-    "TEAMADD_FAXQUEUE": "Voeg Team Fax wachtrij",
-    "AGENTADD_FAXQUEUE": "Voeg Agent Fax wachtrij",
+    "TEAMADD_FAXQUEUE": "Team aan Fax wachtrij Toevoegen",
+    "AGENTADD_FAXQUEUE": "Agent aan Fax wachtrij Toevoegen",
     "NAME": "Naam",
     "FAXQUEUES": "Faxwachtrijen",
-    "SEARCH_FOR_ANYONE": "Zoeken voor iedereen",
+    "SEARCH_FOR_ANYONE": "Zoeken",
     "ERRORS": {
-      "NAME_REQUIRED": "De naam is verplicht",
-      "AGENT_TIMEOUT_REQUIRED": "De Agent Timeout is vereist",
-      "MOTIONADDRESS_REQUIRED": "De Motion Adres is vereist.",
-      "MOTIONADDRESS_MUST_VALID_URL": "De Motion adres moet worden geschreven in een geldige indeling",
-      "LOCALSTATIONID_REQUIRED": "Het lokale station-id is vereist",
-      "MODEM_REQUIRED": "De modem vereist.",
-      "GATEWAY_REQUIRED": "De gateway is vereist",
-      "FAXDETECT_REQUIRED": "De Fax detectie is vereist",
-      "T38TIMEOUT_REQUIRED": "Het T.38 Timeout is vereist",
-      "TIMEOUT_REQUIRED": "De timeout is vereist",
-      "HEADERINFO_REQUIRED": "De header info zijn vereist",
-      "TRUNK_REQUIRED": "De kofferruimte is vereist",
-      "LIST_REQUIRED": "De lijst is vereist",
+      "NAME_REQUIRED": "Verplicht veld",
+      "AGENT_TIMEOUT_REQUIRED": "Verplicht veld",
+      "MOTIONADDRESS_REQUIRED": "Verplicht veld",
+      "MOTIONADDRESS_MUST_VALID_URL": "Verplicht veld",
+      "LOCALSTATIONID_REQUIRED": "Verplicht veld",
+      "MODEM_REQUIRED": "Verplicht veld",
+      "GATEWAY_REQUIRED": "Verplicht veld",
+      "FAXDETECT_REQUIRED": "Verplicht veld",
+      "T38TIMEOUT_REQUIRED": "Verplicht veld",
+      "TIMEOUT_REQUIRED": "Verplicht veld",
+      "HEADERINFO_REQUIRED": "Verplicht veld",
+      "TRUNK_REQUIRED": "Verplicht veld",
+      "LIST_REQUIRED": "Verplicht veld",
       "KEY_MAX_LENGTH": "Sleutel moet een lengte gelijk aan {{max.}}",
-      "KEY_REQUIRED": "De sleutel is vereist",
+      "KEY_REQUIRED": "Verplicht veld",
       "AGENT_REQUIRED": "Verplicht veld",
       "QUEUE_REQUIRED": "Verplicht veld",
       "TRUEPRIORITY_REQUIRED": "Verplicht veld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "U moet een pauzestatus opgeven wanneer u zich in een verplichte opstelling bevindt"
     },
     "STRATEGY": "Strategie",
-    "AGENT_TIMEOUT": "Time-out agent",
+    "AGENT_TIMEOUT": "Time-out Agent",
     "DESCRIPTION": "Beschrijving",
-    "ADD_FAXQUEUE": "Voeg Fax wachtrij",
-    "EDIT_FAXQUEUE": "Edit Fax wachtrij",
-    "DELETE_FAXQUEUE": "Verwijder Fax wachtrij",
+    "ADD_FAXQUEUE": "Fax Wachtrij Toevoegen",
+    "EDIT_FAXQUEUE": "Fax Wachtrij Bewerken",
+    "DELETE_FAXQUEUE": "Fax Wachtrij Verwijderen",
     "CREATED_AT": "Gemaakt op",
     "SAVE": "Opslaan",
     "SETTINGS": "Instellingen",
     "GENERAL": "Algemeen",
     "FAXACCOUNTS": "Fax Accounts",
-    "MOTIONADDRESS": "Motion adres",
-    "ADD_FAXACCOUNT": "Voeg Fax Account",
-    "EDIT_FAXACCOUNT": "Edit Fax Account",
-    "DELETE_FAXACCOUNT": "Verwijder Fax Account",
+    "MOTIONADDRESS": "Motion Adres",
+    "ADD_FAXACCOUNT": "Fax Account Toevoegen",
+    "EDIT_FAXACCOUNT": "Fax Account Bewerken",
+    "DELETE_FAXACCOUNT": "Fax Account Verwijderen",
     "DISPOSITIONS": "Dispositions",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Acties",
     "LIST": "Lijst",
     "FIDELITY": "Hifi-geluid",
     "ACCEPT": "Accepteren",
-    "ACCEPTMETHOD": "Accepteren methode",
-    "ACCEPTURL": "URL accepteren",
+    "ACCEPTMETHOD": "Mehode Accepteren",
+    "ACCEPTURL": "URL Sccepteren",
     "REJECT": "Afwijzen",
     "REJECTMETHOD": "Methode afwijzen",
     "REJECTURL": "URL afwijzen",
     "CLOSE": "Dicht",
-    "CLOSEMETHOD": "Sluit methode",
-    "CLOSEURL": "Sluit URL",
-    "TRUNK": "Transmissielijn",
+    "CLOSEMETHOD": "Methode Sluiten",
+    "CLOSEURL": "URL Sluiten",
+    "TRUNK": "Trunk",
     "LOCALSTATIONID": "Lokaal station Identifier",
     "HELP": {
       "LOCALSTATIONID": "Lokaal station Identifier (telefoonnummer).",
       "FAXDETECT": "Fax inschakelen detectie met optionele timeout in seconden (ja/t38/CNG/[out]/NO).",
       "T38TIMEOUT": "De time-out wordt gebruikt voor T.38 onderhandeling. De minimumwaarde is 1000.",
       "ECM": "Fout Connection Mode (ECM).",
-      "MINRATE": "Min overdrachtssnelheid instellen voordat de versnellingsbak. Mogelijke waarden zijn: 2400, 4800, 7200, 9600, 12000 of 14400.",
+      "MINRATE": "Min overdrachtssnelheid instellen. Mogelijke waarden zijn: 2400, 4800, 7200, 9600, 12000 of 14400.",
       "MAXRATE": "Maximale overdrachtsnelheid ingesteld voor verzending. Mogelijke waarden zijn: 2400, 4800, 7200, 9600, 12000 of 14400.",
       "NAME": "Alleen cijfers, letters en speciale tekens (_) worden ondersteund",
       "MANDATORYDISPOSITION": "Verplichte regeling",
-      "MANDATORYDISPOSITIONPAUSEID": "Pauzestatus voor verplichte dispositie"
+      "MANDATORYDISPOSITIONPAUSEID": "Pauzestatus voor verplichte Dispositie"
     },
     "ADVANCED": "Geavanceerd",
     "ECM": "ECM",
     "SIP": "Technologie",
     "HEADERINFO": "Header Info",
     "SELECTED": "Geselecteerd",
-    "SELECT_ALL": "Alles selecteren",
-    "SELECT_NONE": "Selecteer None (Geen).",
+    "SELECT_ALL": "Selecteer Alles",
+    "SELECT_NONE": "Selecteer Geen",
     "BACK": "Terug",
     "FAX": "Fax",
     "ID": "Id",
     "TIMEOUT": "Timeout",
-    "FAXDISPOSITIONS": "Fax dispositieven",
-    "NO_FAXDISPOSITION_AVAILABLE": "Geen Fax Dispositieven beschikbaar",
-    "NEW_FAXDISPOSITION": "Nieuwe fax dispositie",
+    "FAXDISPOSITIONS": "Fax Disposities",
+    "NO_FAXDISPOSITION_AVAILABLE": "Geen Fax Disposities beschikbaar",
+    "NEW_FAXDISPOSITION": "Nieuwe Fax Dispositie",
     "ADD_FAXDISPOSITION": "Voeg Fax dispositie",
-    "EDIT_FAXDISPOSITION": "Edit Fax dispositie",
-    "DELETE_FAXDISPOSITION": "Verwijder Fax dispositie",
-    "NEW_FAXQUEUE": "Nieuwe fax wachtrij",
-    "NEW_FAXACCOUNT": "Nieuwe fax Account",
+    "EDIT_FAXDISPOSITION": "Edit Fax Dispositie",
+    "DELETE_FAXDISPOSITION": "Verwijder Fax Dispositie",
+    "NEW_FAXQUEUE": "Nieuwe Fax Wachtrij",
+    "NEW_FAXACCOUNT": "Nieuw Fax Account",
     "NO_AVAILABLE_INFO": "Geen beschikbare informatie",
-    "ALL_TEAMS": "Alle teams",
-    "SELECTED_TEAMS": "Geselecteerde teams",
+    "ALL_TEAMS": "Alle Teams",
+    "SELECTED_TEAMS": "Geselecteerde Teams",
     "PAGE": "Pagina",
     "ROWSPERPAGE": "Rijen per pagina",
     "OF": "Van",
     "DELETE": "Verwijderen",
     "KEY": "Sleutel",
     "ALL_AGENTS": "Alle gebruikers zijn agenten",
-    "SELECTED_AGENTS": "Geselecteerde agenten",
+    "SELECTED_AGENTS": "Geselecteerde Agenten",
     "FILTER": "Filter",
     "SELECT_STATUS": "Selecteer Status.",
     "ALL": "Alle",
     "CLOSED": "Gesloten",
     "OPENED": "Geopend",
-    "SELECT_ACCOUNT": "Account selecteren",
+    "SELECT_ACCOUNT": "Selecteer Account",
     "INTERACTIONS": "Interacties",
     "CONTACT": "Neem contact op met",
     "STARTEDAT": "Gestart op",
     "TRUEPRIORITY": "Echte prioriteit",
     "FALSEPRIORITY": "False prioriteit",
     "VALUE": "Waarde",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_GOTO": "Ga naar bewerken",
+    "EDIT_AGENT": "Agent Bewerken",
+    "EDIT_GOTO": "Ga naar Bewerken",
     "EDIT_NOOP": "Noop bewerken",
     "EDIT_GOTOP": "GotoP bewerken",
     "EDIT_GOTOIF": "GotoIf bewerken",
-    "EDIT_QUEUE": "Edit Fax wachtrij",
-    "EDIT_CLOSE": "Edit dicht",
+    "EDIT_QUEUE": "Fax wachtrij Bewerken",
+    "EDIT_CLOSE": "Bewerken Sluiten",
     "QUEUE": "Wachtrij",
     "GOTOIF": "GotoIf",
     "GOTOP": "GotoP",
     "DISPOSITION": "Afvoeren",
     "REALTIME": "Realtime",
     "UNKNOWN": "Onbekend",
-    "UNREGISTERED": "Unregistered",
+    "UNREGISTERED": "Niet geregistreerd",
     "UNAVAILABLE": "Niet beschikbaar",
     "NOT_INUSE": "Niet in gebruik",
     "REACHABLE": "Bereikbaar",
     "IN_USE": "In gebruik",
-    "VOICE": "Spraak",
+    "VOICE": "Telefonie",
     "CHAT": "Chat",
     "MAIL": "Mail",
     "SMS": "SMS",
     "REFRESH_INTERACTIONS": "Interacties vernieuwen",
     "NO_FAXCANNEDANSWER_AVAILABLE": "Geen ingeblikte antwoorden beschikbaar",
     "NEW_FAXCANNEDANSWER": "Nieuw ingebouwd antwoord",
-    "ADD_FAXCANNEDANSWER": "Voeg ingebed antwoord toe",
-    "EDIT_CHATCANNEDANSWER": "Ingebouwd antwoord bewerken",
-    "DELETE_CHATCANNEDANSWER": "Ingebouwd antwoord verwijderen",
+    "ADD_FAXCANNEDANSWER": "Standaard antwoord Toevoegen",
+    "EDIT_CHATCANNEDANSWER": "Standaard antwoord bewerken",
+    "DELETE_CHATCANNEDANSWER": "Standaard antwoord verwijderen",
     "SPYINTERACTION": "Spion",
-    "DELETE_INTERACTION": "Interactie verwijderen",
+    "DELETE_INTERACTION": "Interactie Verwijderen",
     "COMMAND": "Opdracht",
-    "EDIT_SYSTEM": "Systeem bewerken",
+    "EDIT_SYSTEM": "Systeem Bewerken",
     "SYSTEM": "Systeem",
     "VARIABLE": "veranderlijk",
     "NOTIFICATION": "Kennisgeving",
     "NOTIFICATIONSOUND": "Geluid",
     "NOTIFICATIONTEMPLATE": "Sjabloon",
     "WAITFORTHEASSIGNEDAGENT": "Wacht op de toegewezen agent",
-    "EDIT_TAG": "Bewerk label",
+    "EDIT_TAG": "Label Bewerken",
     "TAG": "Label",
-    "AGENTADD_FAXACCOUNT": "Agent toevoegen aan faxaccount",
+    "AGENTADD_FAXACCOUNT": "Agent aan faxaccount Toevoegen",
     "AGENTTRANSFER": "Agent Transfer",
     "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
     "QUEUETRANSFER": "Wachtrijoverdracht",
     "QUEUETRANSFERTIMEOUT": "Wachtrij Transfer Timeout",
     "TRANSFER": "Overdracht",
-    "CANNEDANSWERS": "Ingeblikte antwoorden",
+    "CANNEDANSWERS": "Standaard antwoorden",
     "DOWNLOAD_INTERACTION": "Download",
-    "FAXCANNEDANSWERS": "Ingeblikte antwoorden",
+    "FAXCANNEDANSWERS": "Standaard antwoorden",
     "LOGIN_TIME": "Aanmeldtijd",
     "PAUSE_TIME": "Pauzetijd",
     "TEAMS_ASSOCIATION": "Teams Association",
index 8b1e203..67fc149 100644 (file)
     "LEADID": "معرف الرصاص",
     "DYNAMIC365CONTACT": "اتصل",
     "DYNAMIC365NOTHING": "لا شئ",
-    "MODERN_AUTHENTICATION": "المصادقة الحديثة",
-    "OPENNEWTAB": "افتح علامة تبويب جديدة"
+    "MODERN_AUTHENTICATION": "المصادقة الحديثة"
   }
 }
index a3bcf64..0e5af04 100644 (file)
     "LEADID": "ID potenciálního zákazníka",
     "DYNAMIC365CONTACT": "Kontakt",
     "DYNAMIC365NOTHING": "Nic",
-    "MODERN_AUTHENTICATION": "Moderní ověřování",
-    "OPENNEWTAB": "Otevřít novou kartu"
+    "MODERN_AUTHENTICATION": "Moderní ověřování"
   }
 }
index f296eb5..eb27153 100644 (file)
     "LEADID": "Lead Id",
     "DYNAMIC365CONTACT": "Kontakt",
     "DYNAMIC365NOTHING": "Ikke noget",
-    "MODERN_AUTHENTICATION": "Moderne godkendelse",
-    "OPENNEWTAB": "Åbn ny fane"
+    "MODERN_AUTHENTICATION": "Moderne godkendelse"
   }
 }
index 83085e4..8794876 100644 (file)
     "LEADID": "Lead Id",
     "DYNAMIC365CONTACT": "Kontakt",
     "DYNAMIC365NOTHING": "Gar nichts",
-    "MODERN_AUTHENTICATION": "Moderne Authentifizierung",
-    "OPENNEWTAB": "Neue Registerkarte öffnen"
+    "MODERN_AUTHENTICATION": "Moderne Authentifizierung"
   }
 }
index da1fa10..3f8ed0b 100644 (file)
     "TASK": "Task",
     "DYNAMIC365CONTACT": "Contact",
     "DYNAMIC365NOTHING": "Nothing",
-    "MODERN_AUTHENTICATION": "Modern Authentication",
-    "OPENNEWTAB": "Open new tab"
+    "MODERN_AUTHENTICATION": "Modern Authentication"
   }
 }
index de36955..1433538 100644 (file)
     "LEADID": "ID de cliente potencial",
     "DYNAMIC365CONTACT": "Contacto",
     "DYNAMIC365NOTHING": "Nada",
-    "MODERN_AUTHENTICATION": "Autenticación moderna",
-    "OPENNEWTAB": "Abrir nueva pestaña"
+    "MODERN_AUTHENTICATION": "Autenticación moderna"
   }
 }
index 0a98fe6..391cbdc 100644 (file)
     "LEADID": "Plii ID",
     "DYNAMIC365CONTACT": "Võtke ühendust",
     "DYNAMIC365NOTHING": "Mitte midagi",
-    "MODERN_AUTHENTICATION": "Kaasaegne autentimine",
-    "OPENNEWTAB": "Ava uus vaheleht"
+    "MODERN_AUTHENTICATION": "Kaasaegne autentimine"
   }
 }
index db991dd..3f81904 100644 (file)
     "LEADID": "شناسه سرب",
     "DYNAMIC365CONTACT": "مخاطب",
     "DYNAMIC365NOTHING": "هیچ چیزی",
-    "MODERN_AUTHENTICATION": "احراز هویت مدرن",
-    "OPENNEWTAB": "برگه جدید را باز کنید"
+    "MODERN_AUTHENTICATION": "احراز هویت مدرن"
   }
 }
index 0c86791..04e25f8 100644 (file)
     "LEADID": "Liidin tunnus",
     "DYNAMIC365CONTACT": "Ottaa yhteyttä",
     "DYNAMIC365NOTHING": "Ei mitään",
-    "MODERN_AUTHENTICATION": "Moderni todennus",
-    "OPENNEWTAB": "Avaa uusi välilehti"
+    "MODERN_AUTHENTICATION": "Moderni todennus"
   }
 }
index e786071..da37a10 100644 (file)
     "LEADID": "ID de prospect",
     "DYNAMIC365CONTACT": "Contact",
     "DYNAMIC365NOTHING": "Rien",
-    "MODERN_AUTHENTICATION": "Authentification moderne",
-    "OPENNEWTAB": "Ouvrir un nouvel onglet"
+    "MODERN_AUTHENTICATION": "Authentification moderne"
   }
 }
index e9cc926..229177a 100644 (file)
     "LEADID": "מזהה מוביל",
     "DYNAMIC365CONTACT": "איש קשר",
     "DYNAMIC365NOTHING": "שום דבר",
-    "MODERN_AUTHENTICATION": "אימות מודרני",
-    "OPENNEWTAB": "פתח כרטיסייה חדשה"
+    "MODERN_AUTHENTICATION": "אימות מודרני"
   }
 }
index ad24af2..25bf6df 100644 (file)
     "LEADID": "लीड आईडी",
     "DYNAMIC365CONTACT": "संपर्क",
     "DYNAMIC365NOTHING": "कुछ भी तो नहीं",
-    "MODERN_AUTHENTICATION": "आधुनिक प्रमाणीकरण",
-    "OPENNEWTAB": "नया टैब खोलें"
+    "MODERN_AUTHENTICATION": "आधुनिक प्रमाणीकरण"
   }
 }
index 68f6fd3..05ec700 100644 (file)
     "MODULECREATE": "Module Create",
     "DYNAMIC365CONTACT": "Kapcsolatba lépni",
     "DYNAMIC365NOTHING": "Semmi",
-    "MODERN_AUTHENTICATION": "Modern hitelesítés",
-    "OPENNEWTAB": "Új lap megnyitása"
+    "MODERN_AUTHENTICATION": "Modern hitelesítés"
   }
 }
index 0b7a54f..fd170e5 100644 (file)
     "LEADID": "Id Pimpinan",
     "DYNAMIC365CONTACT": "Kontak",
     "DYNAMIC365NOTHING": "Tidak",
-    "MODERN_AUTHENTICATION": "Otentikasi Modern",
-    "OPENNEWTAB": "Buka tab baru"
+    "MODERN_AUTHENTICATION": "Otentikasi Modern"
   }
 }
index 3cb7aa9..49378b5 100644 (file)
     "MODULECREATE": "Modulo Creazione",
     "DYNAMIC365CONTACT": "Contatto",
     "DYNAMIC365NOTHING": "Niente",
-    "MODERN_AUTHENTICATION": "Autenticazione moderna",
-    "OPENNEWTAB": "Apri nuova tab"
+    "MODERN_AUTHENTICATION": "Autenticazione moderna"
   }
 }
index c753e7f..e11f75b 100644 (file)
     "LEADID": "リードID",
     "DYNAMIC365CONTACT": "コンタクト",
     "DYNAMIC365NOTHING": "何もない",
-    "MODERN_AUTHENTICATION": "最新の認証",
-    "OPENNEWTAB": "新しいタブを開く"
+    "MODERN_AUTHENTICATION": "最新の認証"
   }
 }
index bd217bf..55326a1 100644 (file)
     "LEADID": "리드 ID",
     "DYNAMIC365CONTACT": "연락하다",
     "DYNAMIC365NOTHING": "아무것도",
-    "MODERN_AUTHENTICATION": "최신 인증",
-    "OPENNEWTAB": "새 탭 열기"
+    "MODERN_AUTHENTICATION": "최신 인증"
   }
 }
index e8c6ab7..abb479f 100644 (file)
     "LEADID": "Potencialių klientų ID",
     "DYNAMIC365CONTACT": "kontaktas",
     "DYNAMIC365NOTHING": "Nieko",
-    "MODERN_AUTHENTICATION": "Šiuolaikinis autentifikavimas",
-    "OPENNEWTAB": "Atidaryti naują skirtuką"
+    "MODERN_AUTHENTICATION": "Šiuolaikinis autentifikavimas"
   }
 }
index 9937e44..222d4b8 100644 (file)
     "LEADID": "Svina ID",
     "DYNAMIC365CONTACT": "Sazināties",
     "DYNAMIC365NOTHING": "Nekas",
-    "MODERN_AUTHENTICATION": "Mūsdienu autentifikācija",
-    "OPENNEWTAB": "Atveriet jaunu cilni"
+    "MODERN_AUTHENTICATION": "Mūsdienu autentifikācija"
   }
 }
index 2f157fc..f907009 100644 (file)
@@ -8,42 +8,42 @@
     "URI": "URL",
     "BACK": "Terug",
     "SELECTED": "Geselecteerd",
-    "SELECT_ALL": "Alles selecteren",
-    "SELECT_NONE": "Selecteer None (Geen).",
-    "EDIT_ZENDESKACCOUNT": "Edit Zendesk Account",
-    "DELETE_ZENDESKACCOUNT": "Verwijder Zendesk Account",
-    "NEW_ZENDESKACCOUNT": "Nieuwe Zendesk Account",
+    "SELECT_ALL": "Selecteer Alles",
+    "SELECT_NONE": "Selecteer Geen",
+    "EDIT_ZENDESKACCOUNT": "Zendesk Account Bewerken",
+    "DELETE_ZENDESKACCOUNT": "Zendesk Account Verwijderen",
+    "NEW_ZENDESKACCOUNT": "Nieuw Zendesk Account",
     "AUTHTYPE": "Authentication Type (Verificatietype)",
     "PASSWORD": "Wachtwoord",
-    "CONFIRM_PASSWORD": "Wachtwoord bevestigen",
+    "CONFIRM_PASSWORD": "Wachtwoord Bevestigen",
     "TOKEN": "Token",
-    "MOTIONPROXYADDRESS": "Beweging of Proxy IP Adres",
+    "MOTIONPROXYADDRESS": "Motion of Proxy IP Adres",
     "DESCRIPTION": "Beschrijving",
-    "ADD_ZENDESKACCOUNT": "Voeg Zendesk Account",
+    "ADD_ZENDESKACCOUNT": "Zendesk Account Toevoegen",
     "ERRORS": {
-      "NAME_REQUIRED": "De naam is verplicht",
-      "USERNAME_REQUIRED": "De gebruikersnaam is vereist",
-      "URI_REQUIRED": "De URL is vereist",
+      "NAME_REQUIRED": "Verplicht veld",
+      "USERNAME_REQUIRED": "Verplicht veld",
+      "URI_REQUIRED": "Verplicht veld",
       "URI_MUST_VALID_URL": "De URL (Uniform Resource Identifier) moet worden geschreven in een geldige indeling",
-      "PASSWORD_REQUIRED": "Het wachtwoord is vereist",
-      "CONFIRM_NOT_MATCH": "De wachtwoorden Don' t match",
+      "PASSWORD_REQUIRED": "Verplicht veld",
+      "CONFIRM_NOT_MATCH": "De wachtwoorden komen niet overeen",
       "TOKEN_REQUIRED": "Het token is vereist",
       "MOTIONPROXYADDRESS_MUST_VALID_URL": "Het adres moet worden geschreven in een geldige indeling",
       "CLIENTID_REQUIRED": "De klant-ID is vereist.",
       "CLIENTSECRET_REQUIRED": "De Cliënt geheim is vereist",
       "SECURITYTOKEN_REQUIRED": "De Security token is vereist",
-      "APIKEY_REQUIRED": "De API Key nodig",
-      "CONTENT_REQUIRED": "De inhoud is vereist",
-      "VARIABLENAME_REQUIRED": "De variabele is vereist",
-      "KEY_REQUIRED": "De sleutel is vereist",
-      "TYPE_REQUIRED": "Het type is vereist",
-      "VALUE_REQUIRED": "De waarde is vereist",
-      "FIELD_REQUIRED": "Het is een verplicht veld",
-      "CONSUMERKEY_REQUIRED": "De consument sleutel is vereist",
-      "CONSUMERSECRET_REQUIRED": "De consument geheim is vereist",
-      "TOKENSECRET_REQUIRED": "Het token geheim is vereist",
-      "HOST_REQUIRED": "De host is vereist",
-      "AUTHTOKEN_REQUIRED": "De exporteur Token is vereist",
+      "APIKEY_REQUIRED": "Verplicht veld",
+      "CONTENT_REQUIRED": "Verplicht veld",
+      "VARIABLENAME_REQUIRED": "Verplicht veld",
+      "KEY_REQUIRED": "Verplicht veld",
+      "TYPE_REQUIRED": "Verplicht veld",
+      "VALUE_REQUIRED": "Verplicht veld",
+      "FIELD_REQUIRED": "Verplicht veld",
+      "CONSUMERKEY_REQUIRED": "Verplicht veld",
+      "CONSUMERSECRET_REQUIRED": "Verplicht veld",
+      "TOKENSECRET_REQUIRED": "Verplicht veld",
+      "HOST_REQUIRED": "Verplicht veld",
+      "AUTHTOKEN_REQUIRED": "Verplicht veld",
       "ACCESS_KEY_REQUIRED": "Verplicht veld",
       "VTIGER_USER_NAME_REQUIRED": "Verplicht veld",
       "TENANTID_REQUIRED": "Verplicht veld",
     "GENERAL": "Algemeen",
     "CREATED_AT": "Gemaakt op",
     "SAVE": "Opslaan",
-    "NO_ZENDESKCONFIGURATION_AVAILABLE": "Nee Zendesk configuraties beschikbaar",
+    "NO_ZENDESKCONFIGURATION_AVAILABLE": "Geen Zendesk configuraties beschikbaar",
     "NEW_ZENDESKCONFIGURATION": "Nieuwe Zendesk configuratie",
-    "ADD_ZENDESKCONFIGURATION": "Voeg Zendesk configuratie",
-    "EDIT_ZENDESKCONFIGURATION": "Edit Zendesk configuratie",
-    "DELETE_ZENDESKCONFIGURATION": "Verwijder Zendesk configuratie",
+    "ADD_ZENDESKCONFIGURATION": "Zendesk configuratie Toevoegen",
+    "EDIT_ZENDESKCONFIGURATION": "Zendesk configuratie Bewerken",
+    "DELETE_ZENDESKCONFIGURATION": "Zendesk configuratie Verwijderen",
     "NO_SALESFORCECONFIGURATION_AVAILABLE": "Geen Salesforce-configuraties beschikbaar",
     "NEW_SALESFORCECONFIGURATION": "Nieuwe Salesforce-configuratie",
-    "ADD_SALESFORCECONFIGURATION": "Voeg Salesforce-configuratie",
-    "EDIT_SALESFORCECONFIGURATION": "Edit Salesforce-configuratie",
-    "DELETE_SALESFORCECONFIGURATION": "Verwijder Salesforce-configuratie",
-    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "Nee SugarCRM configuraties beschikbaar",
+    "ADD_SALESFORCECONFIGURATION": "Salesforce-configuratie Toevoegen",
+    "EDIT_SALESFORCECONFIGURATION": "Salesforce-configuratie Bewerken",
+    "DELETE_SALESFORCECONFIGURATION": "Salesforce-configuratie Verwijderen",
+    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "Geen SugarCRM configuraties beschikbaar",
     "NEW_SUGARCRMCONFIGURATION": "Nieuwe SugarCRM Configuratie",
-    "ADD_SUGARCRMCONFIGURATION": "Voeg SugarCRM Configuratie",
-    "EDIT_SUGARCRMCONFIGURATION": "Edit SugarCRM Configuratie",
-    "DELETE_SUGARCRMCONFIGURATION": "Verwijder SugarCRM Configuratie",
-    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "Nee Freshdesk configuraties beschikbaar",
+    "ADD_SUGARCRMCONFIGURATION": "SugarCRM Configuratie Toevoegen",
+    "EDIT_SUGARCRMCONFIGURATION": "SugarCRM Configuratie Bewerken",
+    "DELETE_SUGARCRMCONFIGURATION": "SugarCRM Configuratie Verwijderen",
+    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "Geen Freshdesk configuraties beschikbaar",
     "NEW_FRESHDESKCONFIGURATION": "Nieuwe Freshdesk configuratie",
-    "ADD_FRESHDESKCONFIGURATION": "Voeg Freshdesk configuratie",
-    "EDIT_FRESHDESKCONFIGURATION": "Edit Freshdesk configuratie",
-    "DELETE_FRESHDESKCONFIGURATION": "Verwijder Freshdesk configuratie",
+    "ADD_FRESHDESKCONFIGURATION": "Freshdesk configuratie Toevoegen",
+    "EDIT_FRESHDESKCONFIGURATION": "Freshdesk configuratie Bewerken",
+    "DELETE_FRESHDESKCONFIGURATION": "Freshdesk configuratie Verwijderen",
     "SALESFORCEACCOUNTS": "Salesforce-accounts",
-    "EDIT_SALESFORCEACCOUNT": "Edit Salesforce-account",
-    "DELETE_SALESFORCEACCOUNT": "Verwijder Salesforce-account",
-    "NEW_SALESFORCEACCOUNT": "Nieuwe Salesforce-account",
-    "ADD_SALESFORCEACCOUNT": "Voeg Salesforce-account",
+    "EDIT_SALESFORCEACCOUNT": "Salesforce-account Bewerken",
+    "DELETE_SALESFORCEACCOUNT": "Salesforce-account Verwijderen",
+    "NEW_SALESFORCEACCOUNT": "Nieuw Salesforce-account",
+    "ADD_SALESFORCEACCOUNT": "Salesforce-account Toevoegen",
     "CLIENTID": "Klantnr.",
     "CLIENTSECRET": "Opdrachtgever geheim",
     "SECURITYTOKEN": "Beveiligingstoken",
     "SEARCH_FOR_ANYONE": "Zoeken voor iedereen",
     "APIKEY": "Api-sleutel",
     "FRESHDESKACCOUNTS": "Freshdesk Accounts",
-    "EDIT_FRESHDESKACCOUNT": "Edit Freshdesk Account",
-    "DELETE_FRESHDESKACCOUNT": "Verwijder Freshdesk Account",
-    "NEW_FRESHDESKACCOUNT": "Nieuwe Freshdesk Account",
-    "ADD_FRESHDESKACCOUNT": "Voeg Freshdesk Account",
+    "EDIT_FRESHDESKACCOUNT": "Freshdesk Account Bewerken",
+    "DELETE_FRESHDESKACCOUNT": "Freshdesk Account Verwijderen",
+    "NEW_FRESHDESKACCOUNT": "Nieuw Freshdesk Account",
+    "ADD_FRESHDESKACCOUNT": "Freshdesk Account Toevoegen",
     "SUGARCRMACCOUNTS": "SugarCRM Accounts",
-    "EDIT_SUGARCRMACCOUNT": "Edit SugarCRM Account",
-    "DELETE_SUGARCRMACCOUNT": "Verwijder SugarCRM Account",
-    "NEW_SUGARCRMACCOUNT": "Nieuwe SugarCRM Account",
-    "ADD_SUGARCRMACCOUNT": "Voeg SugarCRM Account",
+    "EDIT_SUGARCRMACCOUNT": "SugarCRM Account Bewerken",
+    "DELETE_SUGARCRMACCOUNT": "SugarCRM Account Verwijderen",
+    "NEW_SUGARCRMACCOUNT": "Nieuw SugarCRM Account",
+    "ADD_SUGARCRMACCOUNT": "SugarCRM Account Toevoegen",
     "CONFIGURATIONS": "Configuraties",
     "NO_CONFIGURATION_AVAILABLE": "Geen configuraties beschikbaar",
     "NEW_CONFIGURATION": "Nieuwe configuratie",
-    "ADD_CONFIGURATION": "Dialoogvenster Configuratie toevoegen",
-    "EDIT_CONFIGURATION": "Configuratie bewerken",
-    "DELETE_CONFIGURATION": "Configuratie verwijderen",
+    "ADD_CONFIGURATION": "Dialoogvenster Configuratie Toevoegen",
+    "EDIT_CONFIGURATION": "Configuratie Bewerken",
+    "DELETE_CONFIGURATION": "Configuratie Verwijderen",
     "SUBJECTS": "Onderwerpen",
     "DESCRIPTIONS": "Beschrijvingen",
     "FIELDS": "Velden",
     "TAGS": "Tags",
     "TYPE": "Type",
     "CONTENT": "Inhoud",
-    "EDIT_SUBJECT": "Onderwerp bewerken",
-    "DELETE_SUBJECT": "Onderwerp verwijderen",
+    "EDIT_SUBJECT": "Onderwerp Bewerken",
+    "DELETE_SUBJECT": "Onderwerp Verwijderen",
     "NEW_SUBJECT": "Nieuw onderwerp",
-    "ADD_SUBJECT": "Onderwerp toevoegen",
-    "EDIT_DESCRIPTION": "Edit description (beschrijving bewerken)",
-    "DELETE_DESCRIPTION": "Beschrijving verwijderen",
+    "ADD_SUBJECT": "Onderwerp Toevoegen",
+    "EDIT_DESCRIPTION": "Beschrijving Bewerken",
+    "DELETE_DESCRIPTION": "Beschrijving Verwijderen",
     "NEW_DESCRIPTION": "Nieuwe beschrijving",
-    "ADD_DESCRIPTION": "Voeg de beschrijving",
-    "EDIT_FIELD": "Invoerveld",
-    "DELETE_FIELD": "Veld wissen",
+    "ADD_DESCRIPTION": "Beschrijving Toevoegen",
+    "EDIT_FIELD": "Invoerveld Bewerken",
+    "DELETE_FIELD": "Veld Verwijderen",
     "NEW_FIELD": "Nieuw veld",
-    "ADD_FIELD": "Veld toevoegen",
+    "ADD_FIELD": "Veld Toevoegen",
     "ADD": "Toevoegen",
     "VOICE": "Spraak",
     "MAIL": "Mail",
     "INTEGRATION_TAB": "Tabblad integratie",
     "NEW_TAB": "Nieuw tabblad",
     "DESKACCOUNTS": "Bureau Accounts",
-    "EDIT_DESKACCOUNT": "Edit Desk Account",
+    "EDIT_DESKACCOUNT": "Desk Account Bewerken",
     "TEST_DESKACCOUNT": "Test Desk Account",
-    "DELETE_DESKACCOUNT": "Verwijder Desk Account",
+    "DELETE_DESKACCOUNT": "Desk Account Verwijderen",
     "CONSUMERKEY": "Toets voor consumenten",
     "CONSUMERSECRET": "Consument geheim",
     "TOKENSECRET": "Token geheim",
-    "ADD_DESKACCOUNT": "Voeg Desk Account",
-    "NEW_DESKACCOUNT": "Nieuwe Desk Account",
-    "ADD_DESKCONFIGURATION": "Voeg Desk-configuratie",
+    "ADD_DESKACCOUNT": "Desk Account Toevoegen",
+    "NEW_DESKACCOUNT": "Nieuw Desk Account",
+    "ADD_DESKCONFIGURATION": "Desk-configuratie Toevoegen",
     "NEW_DESKCONFIGURATION": "Nieuwe Desk-configuratie",
-    "DELETE_DESKCONFIGURATION": "Verwijder Desk-configuratie",
+    "DELETE_DESKCONFIGURATION": "Desk-configuratie Verwijderen",
     "ZOHOACCOUNTS": "Zoho Accounts",
-    "EDIT_ZOHOACCOUNT": "Edit Zoho Account",
+    "EDIT_ZOHOACCOUNT": "Zoho Account Bewerken",
     "TEST_ZOHOACCOUNT": "Test Zoho Account",
-    "DELETE_ZOHOACCOUNT": "Verwijder Zoho Account",
-    "ADD_ZOHOACCOUNT": "Voeg Zoho Account",
-    "NEW_ZOHOACCOUNT": "Nieuwe Zoho Account",
-    "ADD_ZOHOCONFIGURATION": "Voeg Zoho configuratie",
+    "DELETE_ZOHOACCOUNT": "Zoho Account Verwijderen",
+    "ADD_ZOHOACCOUNT": "Zoho Account Toevoegen",
+    "NEW_ZOHOACCOUNT": "Nieuw Zoho Account",
+    "ADD_ZOHOCONFIGURATION": "Zoho configuratie Toevoegen",
     "NEW_ZOHOCONFIGURATION": "Nieuwe Zoho configuratie",
     "AUTHTOKEN": "Autorisatie Token",
     "HOST": "Host",
-    "DELETE_ZOHOCONFIGURATION": "Verwijder Zoho configuratie",
+    "DELETE_ZOHOCONFIGURATION": "Zoho configuratie Verwijderen",
     "PAGE": "Pagina",
     "ROWSPERPAGE": "Rijen per pagina",
     "OF": "Van",
     "MODULE_SEARCH": "Module zoeken",
     "MODULE_CREATE": "Module aanmaken",
     "ACCESS_KEY": "vTiger Toegangssleutel",
-    "ADD_VTIGERACCOUNT": "Voeg een nieuw vTiger-account toe",
-    "ADD_VTIGERCONFIGURATION": "Voeg vTiger-configuratie toe",
-    "DELETE_VTIGERACCOUNT": "Verwijder vTiger Account",
-    "DELETE_VTIGERCONFIGURATION": "Verwijder vTiger-configuratie",
-    "EDIT_VTIGERACCOUNT": "Bewerk vTiger-account",
+    "ADD_VTIGERACCOUNT": "vTiger-account Toevoegen",
+    "ADD_VTIGERCONFIGURATION": "vTiger-configuratie Toevoegen",
+    "DELETE_VTIGERACCOUNT": "vTiger Account Verwijderen",
+    "DELETE_VTIGERCONFIGURATION": "vTiger-configuratie Verwijderen",
+    "EDIT_VTIGERACCOUNT": "vTiger-account Bewerken",
     "MODULE_NAME": "vTiger Module naam",
     "NEW_VTIGERACCOUNT": "Nieuw vTiger-account",
-    "NEW_VTIGERCONFIGURATION": "Maak vTiger-configuratie",
+    "NEW_VTIGERCONFIGURATION": "Nieuwe vTiger-configuratie",
     "TEST_VTIGERACCOUNT": "Test vTiger-account",
     "VTIGERACCOUNTS": "vTiger-accounts",
     "VTIGER_USER_NAME": "vTiger-gebruikersnaam",
-    "ADD_DYNAMICS365ACCOUNT": "Voeg een nieuw Dynamics365-account toe",
-    "ADD_DYNAMICS365CONFIGURATION": "Dynamics365-configuratie toevoegen",
+    "ADD_DYNAMICS365ACCOUNT": "Dynamics365-account Toevoegen",
+    "ADD_DYNAMICS365CONFIGURATION": "Dynamics365-configuratie Toevoegen",
     "CASE": "Geval",
-    "DELETE_DYNAMICS365ACCOUNT": "Dynamics365-account verwijderen",
-    "DELETE_DYNAMICS365CONFIGURATION": "Dynamics365-configuratie verwijderen",
+    "DELETE_DYNAMICS365ACCOUNT": "Dynamics365-account Verwijderen",
+    "DELETE_DYNAMICS365CONFIGURATION": "Dynamics365-configuratie Verwijderen",
     "DYNAMICS365ACCOUNTS": "Dynamics365-accounts",
-    "EDIT_DYNAMICS365ACCOUNT": "Dynamics365-account bewerken",
+    "EDIT_DYNAMICS365ACCOUNT": "Dynamics365-account Bewerken",
     "NEW_DYNAMICS365ACCOUNT": "Nieuw Dynamics365-account",
-    "NEW_DYNAMICS365CONFIGURATION": "Maak een Dynamics365-configuratie",
+    "NEW_DYNAMICS365CONFIGURATION": "Nieuwe Dynamics365-configuratie",
     "PHONECALL": "Telefoongesprek",
     "TENANTID": "Huurder-ID",
     "TEST_DYNAMICS365ACCOUNT": "Test Dynamics365-account",
     "TICKETTYPE": "Tickettype",
-    "ADD_SERVICENOWACCOUNT": "Nieuw ServiceNow-account toevoegen",
-    "ADD_SERVICENOWCONFIGURATION": "ServiceNow-configuratie toevoegen",
-    "DELETE_SERVICENOWACCOUNT": "ServiceNow-account verwijderen",
-    "DELETE_SERVICENOWCONFIGURATION": "ServiceNow-configuratie verwijderen",
-    "EDIT_SERVICENOWACCOUNT": "ServiceNow-account bewerken",
+    "ADD_SERVICENOWACCOUNT": "Nieuw ServiceNow-account Toevoegen",
+    "ADD_SERVICENOWCONFIGURATION": "ServiceNow-configuratie Toevoegen",
+    "DELETE_SERVICENOWACCOUNT": "ServiceNow-account Verwijderen",
+    "DELETE_SERVICENOWCONFIGURATION": "ServiceNow-configuratie Verwijderen",
+    "EDIT_SERVICENOWACCOUNT": "ServiceNow-account Bewerken",
     "EMAIL": "E-mail",
     "NEW_SERVICENOWACCOUNT": "Nieuw ServiceNow-account",
-    "NEW_SERVICENOWCONFIGURATION": "Maak ServiceNow-configuratie",
+    "NEW_SERVICENOWCONFIGURATION": "Nieuw ServiceNow-configuratie",
     "SERVICENOWACCOUNTS": "ServiceNow Accounts",
     "TEST_SERVICENOWACCOUNT": "Test ServiceNow Account",
     "TASK": "Taak",
     "CONTACTS": "Contact",
     "LEADS": "Lood",
     "MODULECREATE": "Module maken",
-    "ADD_FRESHSALESACCOUNT": "Voeg Freshsales-account toe",
-    "ADD_FRESHSALESCONFIGURATION": "Voeg Freshsales-configuratie toe",
-    "DELETE_FRESHSALESACCOUNT": "Freshsales-account verwijderen",
-    "DELETE_FRESHSALESCONFIGURATION": "Verwijder Freshsales Configuration",
-    "EDIT_FRESHSALESACCOUNT": "Bewerk Freshsales-account",
-    "EDIT_FRESHSALESCONFIGURATION": "Bewerk Freshsales-configuratie",
+    "ADD_FRESHSALESACCOUNT": "Freshsales-account Toevoegen",
+    "ADD_FRESHSALESCONFIGURATION": "Freshsales-configuratie Toevoegen",
+    "DELETE_FRESHSALESACCOUNT": "Freshsales-account Verwijderen",
+    "DELETE_FRESHSALESCONFIGURATION": "Freshsales Configuration Verwijderen",
+    "EDIT_FRESHSALESACCOUNT": "Freshsales-account Bewerken",
+    "EDIT_FRESHSALESCONFIGURATION": "Freshsales-configuratie Bewerken",
     "FRESHSALESACCOUNTS": "Freshsales Accounts",
     "NEW_FRESHSALESACCOUNT": "Nieuw Freshsales-account",
     "NEW_FRESHSALESCONFIGURATION": "Nieuwe Freshsales-configuratie",
     "LEADID": "Lead-ID",
     "DYNAMIC365CONTACT": "Contact",
     "DYNAMIC365NOTHING": "Niets",
-    "MODERN_AUTHENTICATION": "Moderne authenticatie",
-    "OPENNEWTAB": "Nieuw tabblad openen"
+    "MODERN_AUTHENTICATION": "Moderne authenticatie"
   }
 }
index 3f89d94..b6b3c37 100644 (file)
     "LEADID": "Lead Id",
     "DYNAMIC365CONTACT": "Kontakt",
     "DYNAMIC365NOTHING": "Ingenting",
-    "MODERN_AUTHENTICATION": "Moderne autentisering",
-    "OPENNEWTAB": "Åpne ny fane"
+    "MODERN_AUTHENTICATION": "Moderne autentisering"
   }
 }
index 9beca76..b1e59a3 100644 (file)
     "LEADID": "Lead Id",
     "DYNAMIC365CONTACT": "Kontakt",
     "DYNAMIC365NOTHING": "Nic",
-    "MODERN_AUTHENTICATION": "Nowoczesne uwierzytelnianie",
-    "OPENNEWTAB": "Otwórz nową kartę"
+    "MODERN_AUTHENTICATION": "Nowoczesne uwierzytelnianie"
   }
 }
index 791db6c..7c99ef6 100644 (file)
     "LEADID": "Id de chumbo",
     "DYNAMIC365CONTACT": "Contato",
     "DYNAMIC365NOTHING": "Nenhuma coisa",
-    "MODERN_AUTHENTICATION": "Autenticação Moderna",
-    "OPENNEWTAB": "Abrir nova guia"
+    "MODERN_AUTHENTICATION": "Autenticação Moderna"
   }
 }
index 925f45b..0741416 100644 (file)
     "LEADID": "Id de chumbo",
     "DYNAMIC365CONTACT": "Contato",
     "DYNAMIC365NOTHING": "Nenhuma coisa",
-    "MODERN_AUTHENTICATION": "Autenticação Moderna",
-    "OPENNEWTAB": "Abrir nova guia"
+    "MODERN_AUTHENTICATION": "Autenticação Moderna"
   }
 }
index 70dbf1c..6da8523 100644 (file)
     "LEADID": "Lead Id",
     "DYNAMIC365CONTACT": "Контакт",
     "DYNAMIC365NOTHING": "Ничего такого",
-    "MODERN_AUTHENTICATION": "Современная аутентификация",
-    "OPENNEWTAB": "Открыть новую вкладку"
+    "MODERN_AUTHENTICATION": "Современная аутентификация"
   }
 }
index 5453d96..5837a3f 100644 (file)
     "LEADID": "Lead Id",
     "DYNAMIC365CONTACT": "Kontakt",
     "DYNAMIC365NOTHING": "Ingenting",
-    "MODERN_AUTHENTICATION": "Modern autentisering",
-    "OPENNEWTAB": "Öppna ny flik"
+    "MODERN_AUTHENTICATION": "Modern autentisering"
   }
 }
index b698605..a9bd789 100644 (file)
     "LEADID": "Potansiyel Müşteri Kimliği",
     "DYNAMIC365CONTACT": "Temas",
     "DYNAMIC365NOTHING": "Hiçbir şey değil",
-    "MODERN_AUTHENTICATION": "Modern Kimlik Doğrulama",
-    "OPENNEWTAB": "Yeni sekme aç"
+    "MODERN_AUTHENTICATION": "Modern Kimlik Doğrulama"
   }
 }
index f3cec1f..f2fd139 100644 (file)
     "LEADID": "潜在客户编号",
     "DYNAMIC365CONTACT": "接触",
     "DYNAMIC365NOTHING": "没有什么",
-    "MODERN_AUTHENTICATION": "现代认证",
-    "OPENNEWTAB": "打开新标签"
+    "MODERN_AUTHENTICATION": "现代认证"
   }
 }
index c726205..f9d5b42 100644 (file)
     "LEADID": "潛在客戶編號",
     "DYNAMIC365CONTACT": "接觸",
     "DYNAMIC365NOTHING": "沒有什麼",
-    "MODERN_AUTHENTICATION": "現代認證",
-    "OPENNEWTAB": "打開新標籤"
+    "MODERN_AUTHENTICATION": "現代認證"
   }
 }
index 40b33e8..25c5da4 100644 (file)
@@ -1,17 +1,17 @@
 {
   "JSCRIPTY": {
     "NAME": "Name",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "SEARCH_FOR_ANYONE": "Suche",
     "BACK": "Zurück",
-    "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECTED": "Ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "DESCRIPTION": "Beschreibung",
     "ERRORS": {
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "PROJECT_REQUIRED": "Das Projekt ist erforderlich",
-      "FIELD_REQUIRED": "Das Feld ist erforderlich.",
-      "NAME_MUST_VALID_PATTERN": "Der Name muss in einem gültigen Format geschrieben werden"
+      "NAME_REQUIRED": "Name erforderlich",
+      "PROJECT_REQUIRED": "Projekt erforderlich",
+      "FIELD_REQUIRED": "Feld erforderlich",
+      "NAME_MUST_VALID_PATTERN": "Ungültiges Format Name"
     },
     "SAVE": "Speichern",
     "PROJECTS": "Projekte",
@@ -19,7 +19,7 @@
     "EDIT_PROJECT": "Projekt bearbeiten",
     "DELETE_PROJECT": "Projekt löschen",
     "JSCRIPTY": "Jscripty",
-    "ID": "Id",
+    "ID": "ID",
     "PROJECT": "Projekt",
     "CREATED_AT": "Erstellt am",
     "NEW_PROJECT": "Neues Projekt",
     "OPEN_CONTACT": "Kontakt öffnen",
     "HELP": {
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "ENABLEUNCOMPLETESAVE": "Die dem Bedienplatz-Sitzung zu speichern, auch wenn die Umfrage ist noch nicht abgeschlossen",
-      "SENDUNPAUSEONSUBMIT": "Beenden Sie am Ende der Umfrage automatisch die Pause des Agenten"
+      "ENABLEUNCOMPLETESAVE": "Speichert die Eingaben, auch wenn Formular noch nicht abgeschlossen",
+      "SENDUNPAUSEONSUBMIT": "Agentenpause nach Absenden des Formulars beenden"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "JSCRIPTYSESSIONS": "Projektsitzungen",
+    "OF": "von",
+    "JSCRIPTYSESSIONS": "Script-Sitzungen",
     "SESSIONS": "Sitzungen",
     "STARTTIME": "Startzeit",
     "ENDTIME": "Endzeit",
     "MEMBERNAME": "Mitgliedsname",
-    "CALLERIDNUM": "Rufnummer des Anrufers",
+    "CALLERIDNUM": "Telefonnummer des Anrufers",
     "NO_SESSION_AVAILABLE": "Keine Sitzungen verfügbar",
-    "SESSION_RESULTS": "Sitzung Ergebnisse",
-    "SHOW_QUESTIONS_SESSION": "Sitzung Ergebnisse anzeigen",
+    "SESSION_RESULTS": "Ergebnisse",
+    "SHOW_QUESTIONS_SESSION": "Ergebnisse anzeigen",
     "ANSWERS": "Antworten",
     "NO_RESULTS_AVAILABLE": "Keine Ergebnisse verfügbar",
-    "TOTAL": "Insgesamt",
+    "TOTAL": "Gesamt",
     "ANSWER": "Antwort",
-    "EXPORT_TO_CSV": "Export in CSV",
+    "EXPORT_TO_CSV": "In CSV-Datei exportieren",
     "NO_ANSWERS_AVAILABLE": "Keine Antworten vorhanden",
-    "DELETE_SESSION": "Session löschen",
+    "DELETE_SESSION": "Sitzung löschen",
     "RESET_SESSION": "Sitzung neu starten",
     "YES": "Ja",
-    "NO": "Keine",
-    "DO_YOU_WANT_TO_RESET_SESSION": "Möchten Sie die Sitzung zurücksetzen?",
+    "NO": "Nein",
+    "DO_YOU_WANT_TO_RESET_SESSION": "Sitzung wirklich zurücksetzen?",
     "ALL_SURVEY_DATA_WILL_BE_LOST": "Alle Antworten auf die Umfragen gehen verloren!",
-    "ENABLEUNCOMPLETESAVE": "Aktivieren Sie unvollständig speichern",
+    "ENABLEUNCOMPLETESAVE": "Speichern wenn unvollständig",
     "SUBMIT": "Senden",
     "PROJECT_NOT_AVAILABLE": "Projekt ist nicht verfügbar. Bitte wenden Sie sich an den Administrator",
-    "COMPLETE": "Komplette",
-    "CLONE_PROJECT": "Klonprojekt",
-    "SESSIONS_PROJECT": "Gehe zu den Sitzungen",
-    "SENDUNPAUSEONSUBMIT": "Agent beim Senden abschalten"
+    "COMPLETE": "Abgeschlossen",
+    "CLONE_PROJECT": "Projekt duplizieren",
+    "SESSIONS_PROJECT": "Direkt zu den Sitzungen gehen",
+    "SENDUNPAUSEONSUBMIT": "Agentenpause nach Absenden beenden"
   },
   "mwForm": {
     "form": {
-      "name": "Title",
-      "name.placeholder": "Form title",
-      "description": "Description"
+      "name": "Titel",
+      "name.placeholder": "Titel hier eingeben",
+      "description": "Beschreibung"
     },
     "buttons": {
-      "addPage": "Add page",
-      "moveDown": "Move down",
-      "moveUp": "Move up",
-      "removePage": "Remove page",
-      "remove": "Remove",
-      "addElement": "Add element",
-      "questionReady": "Ready",
-      "next": "Next",
-      "back": "Back",
-      "submit": "Submit",
-      "begin": "Begin",
-      "fold": "Fold",
-      "unfold": "Unfold",
-      "edit": "Edit",
-      "clone": "Clone",
-      "view": "View"
+      "addPage": "Seite hinzufügen",
+      "moveDown": "Nach Unten bewegen",
+      "moveUp": "Nach Oben bewegen",
+      "removePage": "Seite löschen",
+      "remove": "Löschen",
+      "addElement": "Element hinzufügen",
+      "questionReady": "Bereit",
+      "next": "Weiter",
+      "back": "Zurück",
+      "submit": "Übermitteln",
+      "begin": "Start",
+      "fold": "Einklappen",
+      "unfold": "Ausklappen",
+      "edit": "Anpassen",
+      "clone": "Duplizieren",
+      "view": "Ansicht"
     },
     "page": {
       "tab": {
-        "heading": "Page {{page}} of {{allPages}}"
+        "heading": "Seite {{page}} von {{allPages}}"
       },
       "elements": {
-        "empty": "Empty page"
+        "empty": "Leere Seite"
       },
-      "pageWithNameCheckbox": "named",
-      "name": "Page name"
+      "pageWithNameCheckbox": "Benannt",
+      "name": "Seitenname"
     },
     "pageFlow": {
-      "afterPage": "After page {{page}}:",
-      "afterQuestionAnswer": "Go to page based on answer",
-      "goToPage": "Go to page {{page.number}}",
-      "goToNextPage": "Continue to next page",
-      "submitForm": "Submit form"
+      "afterPage": "Nächste Seite {{page}}:",
+      "afterQuestionAnswer": "Seitenwechsel basierend auf Antwort",
+      "goToPage": "Gehe zu Seite {{page.number}}",
+      "goToNextPage": "Zur nächsten Seite",
+      "submitForm": "Formular übermitteln"
     },
     "elements": {
-      "question": "Question",
-      "image": "Image",
-      "paragraph": "Paragraph"
+      "question": "Frage",
+      "image": "Bild",
+      "paragraph": "Paragraf"
     },
     "question": {
       "types": {
         "text": {
-          "name": "Short text"
+          "name": "Kurztext"
         },
         "textarea": {
-          "name": "Long text"
+          "name": "Langer Text"
         },
         "radio": {
-          "name": "Radio"
+          "name": "Radio-Button"
         },
         "select": {
-          "name": "Select"
+          "name": "Auswahl"
         },
         "checkbox": {
-          "name": "Checkboxes"
+          "name": "Checkboxen"
         },
         "grid": {
-          "name": "Grid"
+          "name": "Raster"
         },
         "priority": {
-          "name": "Priority"
+          "name": "Priorität"
         },
         "division": {
-          "name": "Division"
+          "name": "Abteilung"
         },
         "number": {
-          "name": "Number"
+          "name": "Nummer"
         },
         "date": {
-          "name": "Date"
+          "name": "Datum"
         },
         "datetime": {
-          "name": "Datetime"
+          "name": "Zeitstempel"
         },
         "time": {
-          "name": "Time"
+          "name": "Zeit"
         },
         "email": {
-          "name": "Email"
+          "name": "E-Mail"
         },
         "range": {
-          "name": "Range"
+          "name": "Bereich"
         },
         "url": {
           "name": "URL"
         }
       },
-      "text": "Question text",
-      "type": "Question type",
-      "required": "Required",
+      "text": "Fragetext",
+      "type": "Fragetyp",
+      "required": "Erforderlich",
       "preview": {
-        "text": "Short answer text",
-        "textarea": "Long answer text",
-        "otherAnswer": "Other"
+        "text": "Kurztext",
+        "textarea": "Langer Text",
+        "otherAnswer": "Weitere"
       },
       "division": {
-        "quantity": "Quantity",
-        "unit": "Unit label",
-        "assignedSumLabel": "Assigned",
-        "fromRequiredLabel": "from required"
+        "quantity": "Anzahl",
+        "unit": "Einheit",
+        "assignedSumLabel": "Label Zugewiesen",
+        "fromRequiredLabel": "Label Absender erforderlich"
       },
       "priority": {
-        "sorted": "Sorted",
-        "available": "Available",
-        "clickToAddItem": "Click to add item"
+        "sorted": "Sortiert",
+        "available": "Verfügbar",
+        "clickToAddItem": "Klicken, um Element hinzuzufügen"
       },
       "grid": {
-        "cellInputType": "Cell input type",
+        "cellInputType": "Eingabetyp",
         "cellInputTypes": {
-          "radio": "Radio",
+          "radio": "Radio-Button",
           "checkbox": "Checkbox",
           "text": "Text",
-          "number": "Number",
-          "date": "Date",
-          "time": "Time"
+          "number": "Checkbox",
+          "date": "Datum",
+          "time": "Zeit"
         },
-        "rowLabel": "Row {{row}}",
-        "clickToAddRow": "Click to add row",
-        "columnLabel": "Column {{col}}",
-        "clickToAddColumn": "Click to add column"
+        "rowLabel": "Zeile {{row}}",
+        "clickToAddRow": "Klicken, um Zeile hinzuzufügen",
+        "columnLabel": "Spalte {{col}}",
+        "clickToAddColumn": "Klicken, um Spalte hinzuzufügen"
       },
       "range": {
-        "from": "Range from",
-        "to": "to"
+        "from": "Bereich von",
+        "to": "bis"
       },
       "number": {
         "min": "Min",
         "max": "Max"
       },
-      "orLabel": "or ",
-      "otherLabel": "Other: ",
-      "userAnswer": "User answer",
+      "orLabel": "oder ",
+      "otherLabel": "Weitere: ",
+      "userAnswer": "Antwort Nutzer",
       "buttons": {
-        "addOption": "Click to add option",
-        "addOther": "Add 'Other'"
+        "addOption": "Klicken, um Option hinzuzufügen",
+        "addOther": "Weitere hinzufügen"
       }
     },
     "image": {
-      "selectImageButton": "Select image",
-      "caption": "Image caption"
+      "selectImageButton": "Bild auswählen",
+      "caption": "Screenshot einfügen"
     },
     "paragraph": {
-      "placeholder": "Enter paragraph text"
+      "placeholder": "Text für Paragrafen eingeben"
     },
     "confirmationPage": {
-      "title": "Confirmation page",
-      "customMessage": "Custom confirmation message",
-      "defaultMessage": "Your response has been saved",
-      "errorMessage": "Error! Your response has not been saved",
-      "pendingMessage": "Your response is being saved."
+      "title": "Bestätigungsseite",
+      "customMessage": "Nachricht erfolgreiche Übermittlung",
+      "defaultMessage": "Ihre Eingaben wurden gespeichert",
+      "errorMessage": "Fehler beim Speichern Ihrer Eingaben",
+      "pendingMessage": "Ihre Eingaben werden gespeichert"
     }
   }
 }
index e258a20..c2b9ea0 100644 (file)
 {
   "MAIL": {
     "TEXT": "Text",
-    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
-    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
+    "TIMES": "Zeitstempel",
+    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
-    "SHOW_AUTOREPLY": "Die automatische Antwort anzeigen",
+    "SHOW_AUTOREPLY": "Automatische Antwort anzeigen",
     "SHOW_DETAILS": "Details anzeigen",
     "HIDE_DETAILS": "Details ausblenden",
-    "TO": "Zu",
+    "TO": "An",
     "FROM": "Von",
     "DATE": "Datum",
-    "CC": "Cc",
-    "REPLY": "Antwort",
+    "CC": "CC",
+    "REPLY": "Antworten",
     "REPLY_ALL": "Allen antworten",
-    "FORWARD": "Vorwärts",
+    "FORWARD": "Weiterleiten",
     "SUBJECT": "Betreff",
-    "BCC": "Bcc",
+    "BCC": "BCC",
     "SEND": "Senden",
     "ATTACHMENT": "Anhang",
     "ATTACHMENTS": "Anhänge",
     "NAME": "Name",
     "MAILQUEUES": "E-Mail Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "SEARCH_FOR_ANYONE": "Suche",
     "STRATEGY": "Strategie",
     "ERRORS": {
-      "TEXT_REQUIRED": "Das Feld \"Text\" ist erforderlich",
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "AGENT_TIMEOUT_REQUIRED": "Der Agent Timeout ist erforderlich",
-      "EMAIL_ADDRESS_REQUIRED": "Die E-Mail-Adresse ist erforderlich",
-      "EMAIL_ADDRESS_MUST_VALID": "Die E-Mail Adresse muss in einem gültigen Format",
-      "HOST_REQUIRED": "Der Host wird benötigt",
-      "USERNAME_REQUIRED": "Der Benutzername ist erforderlich",
-      "PORT_REQUIRED": "Der Port ist erforderlich",
-      "CONNTIMEOUT_REQUIRED": "Timeout der Verbindung ist erforderlich",
-      "AUTHTIMEOUT_REQUIRED": "Das Zeitlimit für die Authentifizierung erforderlich ist",
-      "ACCEPTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
-      "REJECTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "CLOSEURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "AGENT_REQUIRED": "Der Agent ist erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Timeout muss größer als oder gleich",
-      "DISPOSITION_REQUIRED": "Die Disposition ist erforderlich",
-      "CONDITION_REQUIRED": "Der Zustand ist erforderlich",
-      "TRUEPRIORITY_REQUIRED": "Die wahre Priorität ist erforderlich",
-      "FALSEPRIORITY_REQUIRED": "Die falsche Priorität ist erforderlich",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die wahre Priorität muss größer als oder gleich",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die falsche Priorität muss größer als oder gleich",
-      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Priorität muss größer als oder gleich",
-      "QUEUE_REQUIRED": "Die Warteschlange ist erforderlich",
-      "LIST_REQUIRED": "Die Liste ist erforderlich",
-      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
-      "SERVICE_REQUIRED": "Der Dienst ist erforderlich,",
-      "IMAP_HOST_REQUIRED": "Der IMAP-Host wird benötigt",
-      "IMAP_PORT_REQUIRED": "Der IMAP-Anschluss erforderlich",
-      "SMTP_HOST_REQUIRED": "Der SMTP-Host ist erforderlich",
-      "SMTP_PORT_REQUIRED": "Der SMTP-Port ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter nicht übereinstimmen",
-      "KEY_MAX_LENGTH": "Schlüssel muss eine maximale Länge von {{max}}",
-      "KEY_REQUIRED": "Der Schlüssel ist erforderlich",
-      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
-      "VALUE_REQUIRED": "Pflichtfeld",
-      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "FONT_SIZE_REQUIRED": "Pflichtfeld",
-      "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "NAME_MUST_VALID_PATTERN": "Falsches Format",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
-      "TAG_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
-      "REPLY_TYPE_REQUIRED": "Pflichtfeld",
+      "TEXT_REQUIRED": "Text erforderlich",
+      "NAME_REQUIRED": "Name erforderlich",
+      "AGENT_TIMEOUT_REQUIRED": "Zeitüberschreitung Agent erforderlich",
+      "EMAIL_ADDRESS_REQUIRED": "E-Mail Adresse erforderlich",
+      "EMAIL_ADDRESS_MUST_VALID": "Ungültiges Format E-Mail",
+      "HOST_REQUIRED": "Host erforderlich",
+      "USERNAME_REQUIRED": "Nutzername erforderlich",
+      "PORT_REQUIRED": "Port erforderlich",
+      "CONNTIMEOUT_REQUIRED": "Zeitüberschreitung Verbindung erforderlich",
+      "AUTHTIMEOUT_REQUIRED": "Zeitüberschreitung für Authentifizierung erforderlich",
+      "ACCEPTURL_MUST_VALID_URL": "Format ungültig URL",
+      "TIMEOUT_REQUIRED": "Zeitüberschreitung erforderlich",
+      "REJECTURL_MUST_VALID_URL": "Format Ungültig URL bei Ablehnen",
+      "CLOSEURL_MUST_VALID_URL": "Format ungültig URL bei Schließen",
+      "AGENT_REQUIRED": "Agent erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss größer oder gleich sein als",
+      "DISPOSITION_REQUIRED": "Qualifizierung erforderlich",
+      "CONDITION_REQUIRED": "Bedingung erforderlich",
+      "TRUEPRIORITY_REQUIRED": "Priorität bei \"true\" erforderlich",
+      "FALSEPRIORITY_REQUIRED": "Priorität bei \"false\" erforderlich",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität bei \"true\" muss größer oder gleich sein als",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität bei \"false\" muss größer oder gleich sein als",
+      "PRIORITY_REQUIRED": "Priorität erforderlich",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität muss größer oder gleich sein als",
+      "QUEUE_REQUIRED": "Warteschlange erforderlich",
+      "LIST_REQUIRED": "Liste erforderlich",
+      "PASSWORD_REQUIRED": "Passwort erforderlich",
+      "SERVICE_REQUIRED": "Dienst erforderlich,",
+      "IMAP_HOST_REQUIRED": "IMAP-Host erforderlich",
+      "IMAP_PORT_REQUIRED": "IMAP-Port erforderlich",
+      "SMTP_HOST_REQUIRED": "SMTP-Host erforderlich",
+      "SMTP_PORT_REQUIRED": "SMTP-Port erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
+      "KEY_MAX_LENGTH": "Schlüssel darf eine maximale Länge von {{max}} haben",
+      "KEY_REQUIRED": "Schlüssel erforderlich",
+      "TEXT_MAX_LENGTH": "Text darf eine maximale Länge von {{max}} haben",
+      "VALUE_REQUIRED": "Wert erforderlich",
+      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Schriftgröße muss größer oder gleich sein als",
+      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Schriftgröße muss kleiner oder gleich sein als",
+      "FONT_SIZE_REQUIRED": "Schriftgröße erforderlich",
+      "COMMAND_REQUIRED": "Eingabe erforderlich",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung Agent muss größer oder gleich sein als",
+      "NAME_MUST_VALID_PATTERN": "Format ungültig Name",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss kleiner oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung Agent muss kleiner oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wartezeit Agent muss größer oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wartezeit Agent muss kleiner oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Wartezeit Agent erforderlich",
+      "TAG_REQUIRED": "Tag erforderlich",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung Transfer an Agent muss größer oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung Transfer an Agent muss kleiner oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Zeitüberschreitung Transfer an Agent erforderlich",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung Transfer an Warteschlange muss größer oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung Transfer an Warteschlange muss kleiner oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Zeitüberschreitung Transfer an Warteschlange erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "PausenID bei Qualifizierung erforderlich",
+      "REPLY_TYPE_REQUIRED": "Antworttyp erforderlich",
       "FIELD_REQUIRED": "Pflichtfeld"
     },
-    "AGENT_TIMEOUT": "Agent Timeout",
+    "AGENT_TIMEOUT": "Zeitüberschreitung Agent",
     "DESCRIPTION": "Beschreibung",
     "ADD_MAILQUEUE": "E-Mail Warteschlange hinzufügen",
     "EDIT_MAILQUEUE": "E-Mail Warteschlange bearbeiten",
     "DELETE_MAILQUEUE": "E-Mail Warteschlange löschen",
     "SETTINGS": "Einstellungen",
-    "GENERAL": "Allgemein",
+    "GENERAL": "Allgemeine Einstellungen",
     "SAVE": "Speichern",
     "MAILACCOUNTS": "E-Mail Konten",
     "EMAIL_ADDRESS": "E-Mail Adresse",
     "ADD_MAILACCOUNT": "E-Mail Konto hinzufügen",
-    "EDIT_MAILACCOUNT": "E-Mail-Konto bearbeiten",
-    "DELETE_MAILACCOUNT": "E-Mail-Konten löschen",
-    "DISPOSITIONS": "Bestimmungen",
+    "EDIT_MAILACCOUNT": "E-Mail Konto bearbeiten",
+    "DELETE_MAILACCOUNT": "E-Mail Konto löschen",
+    "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Aktionen",
-    "OTHERS": "Andere",
+    "ACTIONS": "Routing",
+    "OTHERS": "Weitere",
     "LIST": "Liste",
     "TEMPLATE": "Vorlage",
     "FIDELITY": "Treue",
-    "SERVICE": "Service",
+    "SERVICE": "Dienst",
     "CREATED_AT": "Erstellt am",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Die Methode",
+    "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "In der Nähe",
-    "CLOSEMETHOD": "In der Nähe Methode",
-    "CLOSEURL": "Der URL",
-    "WHITELABEL": "White Label",
-    "SIGNATURE": "Unterschrift",
+    "CLOSE": "Schließen",
+    "CLOSEMETHOD": "Methode schließen",
+    "CLOSEURL": "URL schließen",
+    "WHITELABEL": "WhiteLabel",
+    "SIGNATURE": "Signatur",
     "IMAP": "IMAP",
     "HOST": "Host",
-    "USERNAME": "Benutzername",
-    "PORT": "Hafen",
+    "USERNAME": "Nutzername",
+    "PORT": "Port",
     "MAILBOX": "Mailbox",
     "FILTER": "Filter",
-    "CONNTIMEOUT": "Connection Timeout [sek]",
-    "AUTHTIMEOUT": "Authentication Timeout [sek]",
+    "CONNTIMEOUT": "Zeitüberschreitung Verbindung (Sek)",
+    "AUTHTIMEOUT": "Zeitüberschreitung Authentifizierung (Sek)",
     "DELETE": "E-Mails vom Server löschen",
     "SSL": "SSL",
     "KEEPALIVE": "Keepalive",
-    "POLLING": "Polling",
+    "POLLING": "Abfrageintervall",
     "SMTP": "SMTP",
-    "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECTED": "Ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "MAIL": "E-Mail",
-    "ID": "Id",
-    "TIMEOUT": "Timeout",
+    "ID": "ID",
+    "TIMEOUT": "Zeitüberschreitung",
     "PASSWORD": "Passwort",
-    "NO_MAILDISPOSITION_AVAILABLE": "Keine E-Mail zur Verfügung Verfügungen",
-    "ADD_MAILDISPOSITION": "E-Mail hinzufügen Disposition",
-    "NEW_MAILDISPOSITION": "Neue E-Mail zur Verfügung",
-    "EDIT_MAILDISPOSITION": "Bearbeiten von E-Mail zur Verfügung",
-    "DELETE_MAILDISPOSITION": "Löschen von E-Mail zur Verfügung",
-    "MAILDISPOSITIONS": "E-Mail Verfügungen",
+    "NO_MAILDISPOSITION_AVAILABLE": "Keine E-Mail Qualifizierung verfügbar",
+    "ADD_MAILDISPOSITION": "Qualifizierung hinzufügen",
+    "NEW_MAILDISPOSITION": "Neue E-Mail Qualifizierung",
+    "EDIT_MAILDISPOSITION": "Qualifizierung bearbeiten",
+    "DELETE_MAILDISPOSITION": "Qualifizierung löschen",
+    "MAILDISPOSITIONS": "E-Mail Qualifizierungen",
     "NEW_MAILQUEUE": "Neue E-Mail Warteschlange",
-    "NEW_MAILACCOUNT": "Neue E-Mail Konto",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "NEW_MAILACCOUNT": "Neues E-Mail Konto",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "HELP": {
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "USERNAME": "Benutzername für die Authentifizierung verwendet werden",
-      "PASSWORD": "Kennwort für die Authentifizierung verwendet werden",
-      "SECURE": "Bei true wird die Verbindung TLS verwenden, wenn eine Verbindung zu Server",
-      "FONT_FAMILY": "Standardschriftfamilie",
+      "USERNAME": "Benutzername für die Authentifizierung",
+      "PASSWORD": "Passwort für die Authentifizierung",
+      "SECURE": "Bei true wird die Verbindung TLS verwenden, wenn eine Verbindung zum Server aufgebaut wird",
+      "FONT_FAMILY": "Standard-Schriften",
       "FONT_SIZE": "Standard Schriftgröße",
-      "MARK_AS_UNREAD": "Agent aktivieren / deaktivieren, um die letzte Nachricht einer Interaktion als ungelesen zu markieren",
-      "MANDATORYDISPOSITION": "Zwingende Disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Anhalten, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
+      "MARK_AS_UNREAD": "Deaktivieren/Aktivieren um die letzte Nachricht einer Interaktion als ungelesen zu markieren",
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID während Qualifizierung",
       "CLOUD_PROVIDER": "Für die Authentifizierung verwendeter Cloud-Anbieter"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "TEAMADD_MAILQUEUE": "Team Chat Warteschlange hinzufügen",
-    "AGENTADD_MAILQUEUE": "Agent zu Chatten Warteschlange hinzufügen",
+    "OF": "von",
+    "TEAMADD_MAILQUEUE": "Team zur Warteschlange hinzufügen",
+    "AGENTADD_MAILQUEUE": "Agenten zur Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "AGENT": "Agent",
-    "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
-    "DISPOSITION": "Disposition",
-    "GOTOIF": "GotoIf",
-    "EDIT_GOTOIF": "Bearbeiten GotoIf",
-    "CONDITION": "Zustand",
-    "TRUEPRIORITY": "Wahre Priorität",
-    "FALSEPRIORITY": "Falsche Priorität",
-    "GOTOP": "GotoP",
-    "EDIT_GOTOP": "GotoP bearbeiten",
+    "EDIT_AGENT": "Agenten bearbeiten",
+    "EDIT_CLOSE": "Verhalten bei Schließen bearbeiten",
+    "DISPOSITION": "Qualifizierung",
+    "GOTOIF": "GeheZuWenn (GoToIf)",
+    "EDIT_GOTOIF": "Bedingung bearbeiten und Priorität zuweisen",
+    "CONDITION": "Bedingung",
+    "TRUEPRIORITY": "Priorität, wenn erfüllt (true)",
+    "FALSEPRIORITY": "Priorität, wenn nicht erfüllt (false)",
+    "GOTOP": "Priorität setzen (GoToP)",
+    "EDIT_GOTOP": "GoToP bearbeiten",
     "PRIORITY": "Priorität",
-    "NOOP": "Noop",
-    "EDIT_NOOP": "Bearbeiten Noop",
+    "NOOP": "Log erstellen (NoOp)",
+    "EDIT_NOOP": "Log-Erstellung bearbeiten",
     "VALUE": "Wert",
     "QUEUE": "Warteschlange",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "INTERACTIONS": "Wechselwirkungen",
-    "STARTEDAT": "Gestartet am",
+    "INTERACTIONS": "Interaktionen",
+    "STARTEDAT": "Startdatum",
     "CONTACT": "Kontakt",
-    "CLOSEDAT": "Geschlossen",
-    "NOTES": "Hinweise",
-    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
+    "CLOSEDAT": "Geschlossen am",
+    "NOTES": "Anmerkungen",
+    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
     "ACTIVE": "Aktiv",
-    "SECURE": "Sichere",
+    "SECURE": "Sicher",
     "AUTHENTICATION": "Authentifizierung",
     "SMTP_HOST": "SMTP-Host",
     "SMTP_PORT": "SMTP-Port",
     "IMAP_PORT": "IMAP-Port",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "SELECT_STATUS": "Status auswählen",
-    "OPENED": "Öffnen",
+    "OPENED": "Geöffnet",
     "CLOSED": "Geschlossen",
     "ALL": "Alle",
     "SELECT_ACCOUNT": "Konto auswählen",
     "STATUS": "Status",
     "ACCOUNT": "Konto",
-    "OPEN": "Öffnen",
+    "OPEN": "Offen",
     "KEY": "Schlüssel",
     "SMTPSERVICE": "SMTP-Dienst",
-    "UNPAUSE": "Pause beenden",
-    "DEFAULT_PAUSE": "Standard Pause",
+    "UNPAUSE": "Pause abbrechen",
+    "DEFAULT_PAUSE": "Standardpause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agent E-Mail Warteschlange hinzufügen",
-    "VOICE": "Voice",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "VOICE": "Anrufe",
     "CHAT": "Chat",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Channel öffnen",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
     "ACCOUNTS": "Konten",
-    "FULLNAME": "Voller Name",
-    "INTERNAL": "Interne",
-    "PHONE_STATE": "Telefonstatus",
-    "PHONE_STATUS": "Telefonstatus",
+    "FULLNAME": "Vollständiger Name",
+    "INTERNAL": "Intern",
+    "PHONE_STATE": "Status Nebenstelle",
+    "PHONE_STATUS": "SIP-Status Nebenstelle",
     "PAUSE": "Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
     "WAITING": "Warten",
-    "TOTAL": "Insgesamt",
-    "IN": "In",
-    "OUT": "Aus",
+    "TOTAL": "Gesamt",
+    "IN": "Eingehend",
+    "OUT": "Ausgehend",
     "IMAP_STATUS": "IMAP-Status",
     "SMTP_STATUS": "SMTP-Status",
     "DISABLED": "Deaktiviert",
     "CONNECTED": "Verbunden",
-    "NEVER_VERIFIED": "Nie verifiziert",
+    "NEVER_VERIFIED": "Noch nicht verifiziert",
     "ERROR": "Fehler",
     "EDIT_ACCOUNT": "Konto bearbeiten",
-    "VERIFY_SMTP": "Überprüfen Sie die SMTP-",
+    "VERIFY_SMTP": "SMTP-Einstellungen prüfen",
     "VERIFIED": "Überprüft",
-    "VERIFYSMTP_MAILACCOUNT": "Überprüfen Sie die SMTP-",
-    "GOTOREALTIME_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
-    "GOTO_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
+    "VERIFYSMTP_MAILACCOUNT": "SMTP-Accounteinstellungen prüfen",
+    "GOTOREALTIME_MAILACCOUNT": "Direkt zur Echtzeitansicht Konto",
+    "GOTO_MAILACCOUNT": "Zum E-Mail Konto gehen",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Gebrauch",
+    "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "Im Einsatz",
-    "AGENTSADD_QUEUE": "Agenten zu Warteschlange hinzufügen",
-    "INFO": "Info",
+    "IN_USE": "In Verwendung",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "INFO": "Information",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_MAILQUEUE": "In Echtzeit, E-Mail Warteschlange",
-    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
+    "GOTOREALTIME_MAILQUEUE": "Direkt zur Echtzeit-Warteschlange",
+    "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
-    "SPYINTERACTION": "Spy",
+    "SPYINTERACTION": "Anzeigen",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Hinweis",
+    "NOTE": "Notiz",
     "TAGS": "Tags",
-    "INTERACTIONS_MAILACCOUNT": "Zu Wechselwirkungen gehen",
-    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
-    "PENDING": "Ausstehend",
-    "SEND_AS_PENDING": "Senden als Ausstehend",
-    "SEND_AND_CLOSE": "Senden und Schließen",
-    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
-    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
-    "NO_MAILCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
-    "NEW_MAILCANNEDANSWER": "Neue vordefinierte Antowrt",
-    "ADD_MAILCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "EDIT_MAILCANNEDANSWER": "Vordefiierte Antwort bearbeiten",
-    "DELETE_MAILCANNEDANSWER": "Vordefinierte Antwort löschen",
+    "INTERACTIONS_MAILACCOUNT": "Direkt zu den Interaktionen",
+    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
+    "PENDING": "Warten auf Rückmeldung",
+    "SEND_AS_PENDING": "Senden und auf Rückmeldung warten",
+    "SEND_AND_CLOSE": "Senden und schließen",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
+    "CANNED_ANSWER_SEARCH": "Nach Textvorlagen suchen",
+    "NO_MAILCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
+    "NEW_MAILCANNEDANSWER": "Neue Textvorlage",
+    "ADD_MAILCANNEDANSWER": "Textvorlage hinzufügen",
+    "EDIT_MAILCANNEDANSWER": "Textvorlage bearbeiten",
+    "DELETE_MAILCANNEDANSWER": "Textvorlage löschen",
     "SHOW_ORIGINAL_MESSAGE": "Ursprüngliche Nachricht anzeigen",
     "DELETE_INTERACTION": "Interaktion löschen",
     "ACCEPTED": "Akzeptiert",
     "FONT_FAMILY": "Schriftfamilie",
     "FONT_SIZE": "Schriftgröße",
-    "MARK_AS_UNREAD": "als ungelesen markieren",
-    "ADD_MAILSUBSTATUS": "Unterstatus hinzufügen",
-    "DELETE_MAILSUBSTATUS": "Löschen",
-    "EDIT_MAILSUBSTATUS": "Bearbeiten",
-    "MAILSUBSTATUSES": "E-Mail-Unterstatus",
-    "NEW_MAILSUBSTATUS": "Neuer Unterstatus",
-    "SEND_AS": "Senden Als",
-    "COMMAND": "Befehl",
+    "MARK_AS_UNREAD": "Als ungelesen markieren",
+    "ADD_MAILSUBSTATUS": "Zwischenstatus hinzufügen",
+    "DELETE_MAILSUBSTATUS": "Zwischenstatus löschen",
+    "EDIT_MAILSUBSTATUS": "Zwischenstatus bearbeiten",
+    "MAILSUBSTATUSES": "E-Mail Zwischenstatus",
+    "NEW_MAILSUBSTATUS": "Neuer Zwischenstatus",
+    "SEND_AS": "Senden als",
+    "COMMAND": "Eingabe",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
-    "VARIABLE": "Variable",
+    "VARIABLE": "Variabel",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klingen",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Sound abspielen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
+    "WAITFORTHEASSIGNEDAGENT": "Auf zugewiesenen Agenten warten",
     "EDIT_TAG": "Tag bearbeiten",
-    "TAG": "Etikett",
-    "AGENTTRANSFER": "Agentenübertragung",
-    "AGENTTRANSFERTIMEOUT": "Zeitlimit für Agentenübertragungen",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangenübertragung",
-    "TRANSFER": "Transfer",
-    "AGENTADD_MAILACCOUNT": "Fügen Sie dem E-Mail-Konto Agent hinzu",
+    "TAG": "Tag",
+    "AGENTTRANSFER": "Transfer an Agenten erlauben",
+    "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung für Agententransfer",
+    "QUEUETRANSFER": "Transfer in Warteschlange erlauben",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
+    "TRANSFER": "Weiterleitung",
+    "AGENTADD_MAILACCOUNT": "Agenten zum E-Mail Konto hinzufügen",
     "YOU_ARE_REGISTERED_AS_A": "Sie sind registriert als",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
-    "DOWNLOAD_INTERACTION": "Herunterladen",
-    "MAILCANNEDANSWERS": "Vordefinierte Antworten",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "CANNEDANSWERS": "Textvorlagen",
+    "DOWNLOAD_INTERACTION": "Interaktion herunterladen",
+    "MAILCANNEDANSWERS": "E-Mail Textvorlagen",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "DOWNLOAD": "Herunterladen",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
-    "MANDATORYDISPOSITION": "Zwingende Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
-    "ADVANCED": "Fortgeschritten",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Ohne Anhang herunterladen",
-    "DOWNLOAD_WITH_ATTACHMENT": "Download mit Anhang",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "PausenID während Qualifizierung",
+    "ADVANCED": "Erweitert",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung angehalten",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Herunterladen ohne Anhang",
+    "DOWNLOAD_WITH_ATTACHMENT": "Herunterladen inkl. Anhang",
     "LASTMESSAGE": "Letzte Nachricht",
     "REPLY_TYPE": "Antworttyp",
     "CLOUD_PROVIDER": "Cloud-Anbieter",
index 62b01dd..702bc58 100644 (file)
@@ -24,9 +24,9 @@
     "COMMAND": "Comando",
     "VARIABLE": "Variável",
     "SEND_AS": "Enviar como",
-    "NEW_MAILSUBSTATUS": "Novo Sub Status",
-    "ADD_MAILSUBSTATUS": "Adicionar status de sub",
-    "MAILSUBSTATUSES": "Sub-status do email",
+    "NEW_MAILSUBSTATUS": "Novo substatus",
+    "ADD_MAILSUBSTATUS": "Adicionar substatus",
+    "MAILSUBSTATUSES": "Substatus do email",
     "EDIT_MAILSUBSTATUS": "Editar",
     "DELETE_MAILSUBSTATUS": "Excluir",
     "FONT_FAMILY": "Família de fontes",
@@ -43,7 +43,7 @@
     "SHOW_ORIGINAL_MESSAGE": "Mostrar mensagem original",
     "PENDING": "Pendente",
     "SEND_AS_PENDING": "Enviar como pendente",
-    "SEND_AND_CLOSE": "Enviar e Fechar",
+    "SEND_AND_CLOSE": "Enviar e fechar",
     "CANNED_ANSWER_NOT_FOUND": "Nenhuma resposta predefinida foi encontrada",
     "CANNED_ANSWER_SEARCH": "Digite um texto para pesquisar uma resposta automática",
     "SPYINTERACTION": "Espião",
@@ -52,7 +52,7 @@
     "TAGS": "Tags",
     "NO_AGENT_ONLINE": "Nenhum agente online",
     "GOTOREALTIME_MAILQUEUE": "Ir para a fila de email em tempo real",
-    "PARTIALPAUSE": "Pausa Parcial",
+    "PARTIALPAUSE": "Pausa parcial",
     "BUSY": "Ocupado",
     "TIMER": "Cronômetro",
     "IDLE": "Ocioso",
     "AGENTADD_QUEUE": "Adicionar agente à fila de email",
     "VOICE": "Voz",
     "CHAT": "Chat",
-    "SMS": "Sms",
+    "SMS": "SMS",
     "OPENCHANNEL": "Open channel",
     "FAX": "Fax",
-    "REALTIME": "Tempo Real",
+    "REALTIME": "Tempo real",
     "AGENTS": "Agentes",
     "QUEUES": "Filas",
     "ACCOUNTS": "Contas",
     "SMTP_STATUS": "SMTP Status",
     "DISABLED": "Desativado",
     "CONNECTED": "Conectado",
-    "NEVER_VERIFIED": "Nunca Verificado",
+    "NEVER_VERIFIED": "Nunca verificado",
     "ERROR": "Erro",
     "EDIT_ACCOUNT": "Editar conta",
-    "VERIFY_SMTP": "Verificar o SMTP",
+    "VERIFY_SMTP": "Verificar SMTP",
     "VERIFIED": "Verificado",
-    "VERIFYSMTP_MAILACCOUNT": "Verificar o SMTP",
+    "VERIFYSMTP_MAILACCOUNT": "Verificar SMTP",
     "GOTOREALTIME_MAILACCOUNT": "Ir para a conta de e-mail em tempo real",
     "GOTO_MAILACCOUNT": "Ir para a conta de e-mail em tempo real",
     "TEXT": "Texto",
     "REPLY": "Resposta",
     "REPLY_ALL": "Responder todos",
     "FORWARD": "Frente",
-    "SUBJECT": "Sujeito",
+    "SUBJECT": "Assunto",
     "BCC": "Bcc",
     "SEND": "Enviar",
     "ATTACHMENT": "Anexo",
     "NAME": "Nome",
     "MAILQUEUES": "Fila de Emails",
     "SEARCH_FOR_ANYONE": "Procurar",
-    "STRATEGY": "Estrategia",
+    "STRATEGY": "Estratégia",
     "ERRORS": {
       "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
       "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
     "SAVE": "Salvar",
     "MAILACCOUNTS": "Contas de Email",
     "EMAIL_ADDRESS": "Endereço de Email",
-    "ADD_MAILACCOUNT": "Adicionar conta de Email",
+    "ADD_MAILACCOUNT": "Adicionar conta de email",
     "EDIT_MAILACCOUNT": "Editar conta de Email",
     "DELETE_MAILACCOUNT": "Excluir conta de Email",
     "DISPOSITIONS": "Disposições",
     "ACCEPTMETHOD": "Aceite o método",
     "ACCEPTURL": "Aceitar URL",
     "REJECT": "Rejeitar",
-    "REJECTMETHOD": "Rejeitar Método",
+    "REJECTMETHOD": "Rejeitar método",
     "REJECTURL": "Rejeitar URL",
     "CLOSE": "Fechar",
     "CLOSEMETHOD": "Fechar Metodo",
     "CLOSEURL": "Fechar URL",
-    "WHITELABEL": "White Label",
+    "WHITELABEL": "Campo em branco",
     "SIGNATURE": "Assinatura",
     "IMAP": "IMAP",
     "HOST": "Host",
     "NEW_MAILACCOUNT": "Nova conta de email",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "ALL_TEAMS": "Todas as equipes",
-    "SELECTED_TEAMS": "Equipes Selecionadas",
+    "SELECTED_TEAMS": "Equipes selecionadas",
     "HELP": {
       "FONT_FAMILY": "Default Font Family",
       "FONT_SIZE": "Default Font Size",
       "MANDATORYDISPOSITIONPAUSEID": "Pausar para usar quando a disposição obrigatória estiver ativada",
       "CLOUD_PROVIDER": "Provedor de nuvem usado para autenticação"
     },
-    "PAGE": "Pagina",
-    "ROWSPERPAGE": "Linhas por Página",
+    "PAGE": "Página",
+    "ROWSPERPAGE": "Linhas por página",
     "OF": "do",
     "TEAMADD_MAILQUEUE": "Adicionar equipe à fila de email",
     "AGENTADD_MAILQUEUE": "Adicionar agente à fila de email",
     "ALL_AGENTS": "Todos os agentes",
-    "SELECTED_AGENTS": "Agentes Selecionados",
+    "SELECTED_AGENTS": "Agentes selecionados",
     "AGENT": "Agente",
     "EDIT_AGENT": "Editar agente",
     "EDIT_CLOSE": "Editar Fechar",
     "IMAP_PORT": "IMAP Port",
     "CONFIRM_PASSWORD": "Confirme a Senha",
     "SELECT_STATUS": "Selecione o status",
-    "OPENED": "Abrir",
+    "OPENED": "Aberto",
     "CLOSED": "Fechadas",
     "ALL": "Todos",
     "SELECT_ACCOUNT": "Selecione uma conta",
     "AGENTSADD_QUEUE": "Adicionar agentes à fila de email",
     "INFO": "Info",
     "INTERACTIONS_MAILACCOUNT": "Ir para Interações",
-    "REFRESH_INTERACTIONS": "Atualizar Interações",
+    "REFRESH_INTERACTIONS": "Atualizar interações",
     "DELETE_INTERACTION": "Excluir interação",
     "AGENTADD_MAILACCOUNT": "Adicionar agente à conta de email",
     "TEAMS_ASSOCIATION": "Associação de equipes",
     "MANDATORYDISPOSITION": "Disposição obrigatória",
-    "MANDATORYDISPOSITIONPAUSEID": "Pausar para usar se a disposição obrigatória estiver ativada",
+    "MANDATORYDISPOSITIONPAUSEID": "Pausa obrigatória para disposição",
     "ADVANCED": "Avançado",
     "TOOLTIP_SCREENRECORDING_OFF": "Gravação de tela disponível",
     "TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento",
     "DOWNLOAD_WITHOUT_ATTACHMENT": "Download sem anexo",
     "DOWNLOAD_WITH_ATTACHMENT": "Download com anexo",
     "LASTMESSAGE": "Última mensagem",
-    "REPLY_TYPE": "Tipo de Resposta",
+    "REPLY_TYPE": "Tipo de resposta",
     "CLOUD_PROVIDER": "Provedor de nuvem",
     "CREDENTIALS": "Credenciais",
     "CUSTOM": "Personalizado",
index 52050f2..3c09c82 100644 (file)
 {
   "MOTIONDIALER": {
-    "MOVE_HOPPERFINAL": "Kontakt wiederherstellen",
+    "MOVE_HOPPERFINAL": "Kontakt bewegen zu Abgeschlossen",
     "RESTORECONTACTS": "Kontakte wiederherstellen",
-    "NO_SUCH_NUMBER": "Keine solche Nummer",
-    "DIALORDERBYSCHEDULEDAT": "Bestellung Durch scheduledat",
-    "ASC": "ASC",
-    "DESC": "DESC",
-    "RECALLAGENT": "Agent abrufen",
-    "DIALRECALLINQUEUE": "In der Warteschlange abrufen",
-    "DIALRECALLMETIMEOUT": "Erinnere mich Timeout [min]",
-    "RECALLME": "Mich erinnern",
+    "NO_SUCH_NUMBER": "Gegenstelle nicht gefunden",
+    "DIALORDERBYSCHEDULEDAT": "Reihenfolge Wählen nach Planungsdatum",
+    "ASC": "Aufsteigend",
+    "DESC": "Absteigend",
+    "RECALLAGENT": "Agenten erneut anrufen",
+    "DIALRECALLINQUEUE": "In der Warteschlange anrufen",
+    "DIALRECALLMETIMEOUT": "Zeitlimit Reservierung Anruf [min]",
+    "RECALLME": "Wiedervorlage an Agenten",
     "RECALLFAILEDTIMEOUT": "Rückruf fehlgeschlagen",
-    "PREVIEW_CAMPAIGN": "Vorschau Kampagnen",
-    "PREVIEW_CAMPAIGNS": "Vorschau Kampagnen",
-    "AMD": "Sternchen Anrufbeantwortererkennung (AMD)",
-    "AMDTOTALANALYSISTIME": "Insgesamt Analyse Zeit",
-    "AMDACTIVE": "AMD",
-    "AMDINITIALSILENCE": "Erste Stille",
-    "AMDGREETING": "Gruß",
+    "PREVIEW_CAMPAIGN": "Vorschau-Kampagne",
+    "PREVIEW_CAMPAIGNS": "Vorschau-Kampagnen",
+    "AMD": "Anrufbeantwortererkennung (AMD)",
+    "AMDTOTALANALYSISTIME": "Zeit für Analyse AB",
+    "AMDACTIVE": "AB-Erkennung aktiv",
+    "AMDINITIALSILENCE": "AB-Erkennung Stille bei Aufbau",
+    "AMDGREETING": "AB-Erkennung Nachricht",
     "AMDAFTERGREETINGSILENCE": "Stille nach Begrüßung",
-    "AMDSILENCETHRESHOLD": "Stille Schwellenwert",
-    "AMDMINWORDLENGTH": "Min. Wort Länge",
-    "AMDBETWEENWORDSSILENCE": "Die Stille zwischen den Worten",
-    "AMDMAXIMUMWORDLENGTH": "Maximale Wortlänge",
-    "AMDMAXIMUMNUMBEROFWORDS": "Maximale Anzahl der Wörter",
-    "GOTO_QUEUECAMPAIGN": "In Echtzeit, wenn Warteschlange Kampagnen gehen",
-    "GOTOREALTIME_QUEUECAMPAIGN": "In Echtzeit, wenn Warteschlange Kampagnen gehen",
-    "GOTO_IVRCAMPAIGN": "In Echtzeit, Ivr-Kampagnen gehen",
-    "GOTOREALTIME_IVRCAMPAIGN": "In Echtzeit, Ivr-Kampagnen gehen",
+    "AMDSILENCETHRESHOLD": "Stille Schwellwert",
+    "AMDMINWORDLENGTH": "Min. Wortlänge",
+    "AMDBETWEENWORDSSILENCE": "Stille zwischen 2 Worten",
+    "AMDMAXIMUMWORDLENGTH": "Max. Wortlänge",
+    "AMDMAXIMUMNUMBEROFWORDS": "Maximale Anzahl Wörter",
+    "GOTO_QUEUECAMPAIGN": "Direkt zur Warteschlange",
+    "GOTOREALTIME_QUEUECAMPAIGN": "Direkt zur Echtzeit-Warteschlange",
+    "GOTO_IVRCAMPAIGN": "Direkt zur IVR-Kampagne",
+    "GOTOREALTIME_IVRCAMPAIGN": "Direkt zur Echtzeit-Warteschlange (IVR)",
     "LOGOUT": "An-/Abmelden",
     "EDIT_CAMPAIGN": "Kampagne bearbeiten",
-    "LIMITED": "Begrenzt",
-    "IVR_CAMPAIGNS": "Ivr-Kampagnen",
-    "MOTIONDIALER": "Motion Bull",
-    "QUEUECAMPAIGNS": "Warteschlange Kampagnen",
+    "LIMITED": "Limitiert",
+    "IVR_CAMPAIGNS": "IVR-Kampagnen",
+    "MOTIONDIALER": "Outbound-Dialer",
+    "QUEUECAMPAIGNS": "Kampagnen",
     "IVRCAMPAIGNS": "IVR-Kampagnen",
     "MANAGED": "Verwaltet",
     "AVAILABLE_CONTACTS_FINISHED": "Kontakte abgeschlossen",
-    "HISTORY": "Geschichte",
-    "SCHEDULEDAT": "Geplant für",
-    "HOPPERBLACKS": "Hopper Blacklist",
-    "NO_HOPPERBLACK_AVAILABLE": "Keine Reihen verfügbar",
-    "HOPPERFINALS": "Hopper Endg.",
-    "NO_HOPPERFINAL_AVAILABLE": "Keine Reihen verfügbar",
-    "HOPPERHISTORIES": "Hopper Geschichte",
-    "NO_HOPPERHISTORY_AVAILABLE": "Keine Reihen verfügbar",
-    "DELETE_HOPPERHISTORY": "Löschen",
-    "DELETE_HOPPERFINAL": "Löschen",
-    "CONTACTID": "Kontakt-ID",
+    "HISTORY": "Verlauf",
+    "SCHEDULEDAT": "Geplant am",
+    "HOPPERBLACKS": "Schwarze Liste Kontakte in Ausführung",
+    "NO_HOPPERBLACK_AVAILABLE": "Keine Einträge vorhanden",
+    "HOPPERFINALS": "Kontakte abgeschlossen",
+    "NO_HOPPERFINAL_AVAILABLE": "Keine Einträge vorhanden",
+    "HOPPERHISTORIES": "Kontaktverlauf",
+    "NO_HOPPERHISTORY_AVAILABLE": "Keine Einträge vorhanden",
+    "DELETE_HOPPERHISTORY": "Verlauf löschen",
+    "DELETE_HOPPERFINAL": "Abgeschlossenen Kontakt löschen",
+    "CONTACTID": "KontaktID",
     "STARTTIME": "Startzeit",
-    "RESPONSETIME": "Reaktionszeit",
+    "RESPONSETIME": "Antwortzeit",
     "ENDTIME": "Endzeit",
     "STATUS": "Status",
-    "HOPPERS": "Hopper",
-    "NO_HOPPER_AVAILABLE": "Keine Reihen verfügbar",
-    "EDIT_HOPPER": "Bearbeiten Hopper",
-    "DELETE_HOPPER": "Löschen Hopper",
-    "FINAL": "Endg.",
+    "HOPPERS": "Kontakte in Ausführung",
+    "NO_HOPPER_AVAILABLE": "Keine Informationen verfügbar",
+    "EDIT_HOPPER": "Kontakte in Ausführung bearbeiten",
+    "DELETE_HOPPER": "Kontakte in Ausführung löschen",
+    "FINAL": "Abgeschlossen",
     "BLACKLIST": "Schwarze Liste",
     "NAME": "Name",
-    "VOICEQUEUES": "Voice Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "VOICEQUEUES": "Anruf-Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche",
     "BACK": "Zurück",
-    "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
-    "DELETE_VOICEDISPOSITION": "Löschen Stimme Disposition",
-    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-    "EDIT_VOICEQUEUE": "Edit Voice Warteschlange",
+    "SELECTED": "Ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
+    "DELETE_VOICEDISPOSITION": "Qualifizierung für Anrufe löschen",
+    "EDIT_VOICEDISPOSITION": "Qualifizierung für Anrufe bearbeiten",
+    "EDIT_VOICEQUEUE": "Warteschlange bearbeiten",
     "DELETE_VOICEQUEUE": "Warteschlange löschen",
-    "MOHSOUNDS": "Moh-Sounds",
+    "MOHSOUNDS": "Wartemusik",
     "STRATEGY": "Strategie",
     "DESCRIPTION": "Beschreibung",
     "INTERVAL": "Zeitintervall",
-    "ADD_VOICEQUEUE": "Voice Warteschlange hinzufügen",
-    "NEW_QUEUECAMPAIGN": "Neue Warteschlange Kampagne",
+    "ADD_VOICEQUEUE": "Anruf-Warteschlange hinzufügen",
+    "NEW_QUEUECAMPAIGN": "Neue Warteschlangen-Kampagne",
     "ACTIVE": "Aktiv",
     "METHOD": "Methode",
-    "POWERLEVEL": "Leistung",
-    "DROPRATE": "Absenkgeschwindigkeit",
-    "AGENTBUSYFACTOR": "Agent besetzt Faktor",
-    "PREDICTIVEOPTIMIZATION": "Prädiktive Optimierung",
-    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Prädiktive Optimierung Prozentsatz",
-    "PREDICTIVEINTERVAL": "Predictive Intervall",
-    "ADD_QUEUECAMPAIGN": "Warteschlange hinzufügen Kampagne",
+    "POWERLEVEL": "Level Power-Dialing",
+    "DROPRATE": "Droprate",
+    "AGENTBUSYFACTOR": "Faktor Agent besetzt",
+    "PREDICTIVEOPTIMIZATION": "Optimierung Predictive-Dialing",
+    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Prozentsatz Optimierung Predictive-Dialing",
+    "PREDICTIVEINTERVAL": "Intervall Predictive-Dialing",
+    "ADD_QUEUECAMPAIGN": "Kampagne hinzufügen",
     "CAMPAIGN": "Kampagne",
     "MAXCONCURRENTCALLS": "Max. Anzahl gleichzeitiger Anrufe",
-    "CONCURRENTCALLS": "Max. Anzahl gleichzeitiger Anrufe",
-    "ORIGINATE": "Stammen",
-    "ORIGINATECALLERIDNAME": "Die Anrufer-ID-Namen",
-    "ORIGINATECALLERIDNUMBER": "Anrufer-ID-Nummer",
-    "ORIGINATETIMEOUT": "Stammen Timeout",
+    "CONCURRENTCALLS": "Anzahl gleichzeitiger Anrufe",
+    "ORIGINATE": "Rufaufbau",
+    "ORIGINATECALLERIDNAME": "Name Anrufer-ID",
+    "ORIGINATECALLERIDNUMBER": "Angezeigte Nummer",
+    "ORIGINATETIMEOUT": "Zeitüberschreitung Rufaufbau",
     "QUEUEOPTIONS": "Warteschlangenoptionen",
-    "QUEUETIMEOUT": "Warteschlange Timeout",
-    "CALLYSQUAREPROJECT": "Cally Square Projekt",
-    "RETRYANDFREQUENCY": "Wiederholen Sie Einstellungen",
+    "QUEUETIMEOUT": "Zeitüberschreitung Warteschlange",
+    "CALLYSQUAREPROJECT": "Call-Flow Projekt",
+    "RETRYANDFREQUENCY": "Automatische Wiedervorlage",
     "GLOBAL": "Global",
-    "GLOBALMAXRETRY": "Max. Wiederholungen",
-    "CONGESTION": "Überlastung",
-    "CONGESTIONMAXRETRY": "Max. Wiederholungen",
-    "CONGESTIONRETRYTIME": "Wiederholen Zeit [min]",
-    "BUSYMAXRETRY": "Max. Wiederholungen",
-    "BUSYRETRYTIME": "Wiederholen Zeit [min]",
+    "GLOBALMAXRETRY": "Max. Wiederversuche",
+    "CONGESTION": "Leitungen belegt",
+    "CONGESTIONMAXRETRY": "Max. Wiederversuche bei \"Leitungen belegt\"",
+    "CONGESTIONRETRYTIME": "Erneuter Versuch nach (Minuten)",
+    "BUSYMAXRETRY": "Max. Wiederversuche bei \"Besetzt\"",
+    "BUSYRETRYTIME": "Erneuter Versuch nach (Minuten)",
     "NOANSWER": "Keine Antwort",
-    "NOANSWERMAXRETRY": "Max. Wiederholungen",
-    "NOANSWERRETRYTIME": "Wiederholen Zeit [min]",
-    "QUEUE_PARAMS": "Queue Parameter",
-    "ORIGINATED": "Entstanden",
+    "NOANSWERMAXRETRY": "Max. Wiederversuche bei \"keine Antwort\"",
+    "NOANSWERRETRYTIME": "Erneuter Versuch nach (Minuten)",
+    "QUEUE_PARAMS": "Warteschlangen-Parameter",
+    "ORIGINATED": "Ursprung",
     "MESSAGE": "Nachricht",
-    "DROPPED": "Zurück",
+    "DROPPED": "Vom System aufgelegt (Drop)",
     "CREATED_AT": "Erstellt am",
     "LEGEND": {
       "CUSTOM_APPLICATION": "(*) - Benutzerdefinierte Anwendung."
     },
     "ERRORS": {
-      "DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
-      "DIALRECALLMETIMEOUT_REQUIRED": "Pflichtfeld",
-      "NAME_MUST_VALID_PATTERN": "Name gültig sein muss eine gültige Muster",
-      "PREFIX_MUST_VALID_PATTERN": "Präfix gültig sein muss eine gültige Muster",
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
-      "PHONENUMBER_REQUIRED": "Die Telefonnummer ist erforderlich",
-      "CONTEXT_REQUIRED": "Der Kontext ist erforderlich",
-      "DESTINATIONPATTERN_REQUIRED": "Das Ziel-pattern ist erforderlich",
-      "FULLNAME_REQUIRED": "Der vollständige Name ist erforderlich",
-      "EMAIL_REQUUIRED": "Die E-Mail ist erforderlich",
-      "EMAIL_MUST_VALID": "Die E-Mail muss ein gültiges Format geschrieben werden",
-      "MAILBOX_REQUIRED": "Die Mailbox muss angegeben werden",
-      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
+      "DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss gröpßer oder gleich sein als",
+      "DIALRECALLMETIMEOUT_REQUIRED": "Zeitüberschreitung Wiederversuch erforderlich",
+      "NAME_MUST_VALID_PATTERN": "Ungültiges Format Name",
+      "PREFIX_MUST_VALID_PATTERN": "Ungültiges Format Präfix",
+      "NAME_REQUIRED": "Name erforderlich",
+      "TIMEOUT_REQUIRED": "Zeitüberschreitung erforderlich",
+      "PHONENUMBER_REQUIRED": "Telefonnummer erforderlich",
+      "CONTEXT_REQUIRED": "Kontext erforderlich",
+      "DESTINATIONPATTERN_REQUIRED": "Ziel-Pattern erforderlich",
+      "FULLNAME_REQUIRED": "Vollständiger Name erforderlich",
+      "EMAIL_REQUUIRED": "E-Mail erforderlich",
+      "EMAIL_MUST_VALID": "Ungültiges Format E-Mail",
+      "MAILBOX_REQUIRED": "Mailbox erforderlich",
+      "PASSWORD_REQUIRED": "Passwort erforderlich",
       "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein.",
-      "TIMEZONE_REQUIRED": "Die Zeitzone ist erforderlich",
-      "PREFIX_REQUIRED": "Das Präfix ist erforderlich,",
-      "OPTIONS_REQUIRED": "Die Optionen sind Erforderlich",
-      "AFTERCALLWORKDURATION_REQUIRED": "Die Arbeit nach Anruf Dauer ist erforderlich",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Die Technologie/Ressource ist erforderlich",
-      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
-      "VALUE_REQUIRED": "Der Wert ist erforderlich",
-      "EXTENSION_REQUIRED": "Die Verlängerung ist erforderlich",
-      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
-      "GLOBALMAXRETRY_REQUIRED": "Max. Wiederholungen ist erforderlich",
-      "CONGESTIONMAXRETRY_REQUIRED": "Max. Wiederholungen ist erforderlich",
-      "CONGESTIONRETRYTIME_REQUIRED": "Zeit für Wiederholungen ist erforderlich",
-      "BUSYMAXRETRY_REQUIRED": "Max. Wiederholungen ist erforderlich",
-      "BUSYRETRYTIME_REQUIRED": "Zeit für Wiederholungen ist erforderlich",
-      "NOANSWERMAXRETRY_REQUIRED": "Max. Wiederholungen ist erforderlich",
-      "NOANSWERRETRYTIME_REQUIRED": "Zeit für Wiederholungen ist erforderlich",
-      "QUEUETIMEOUT_REQUIRED": "Warteschlange Timeout ist erforderlich",
-      "ORIGINATETIMEOUT_REQUIRED": "Stammen Timeout ist erforderlich",
-      "GLOBALINTERVAL_REQUIRED": "Globale Intervall ist erforderlich",
-      "MAXCONCURRENTCALLS_REQUIRED": "Der Wert für die maximale Anzahl gleichzeitiger Anrufe ist erforderlich",
-      "CONCURRENTCALLS_REQUIRED": "Der Wert für die Anzahl gleichzeitiger Anrufe ist erforderlich",
-      "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Leistung muss größer als oder gleich",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die prädiktive Optimierung Prozentsatz muss größer als oder gleich",
-      "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die prädiktive Intervall muss größer als oder gleich",
-      "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die maximale Anzahl gleichzeitiger Anrufe muss größer als oder gleich",
-      "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die stammen Timeout muss größer als oder gleich",
-      "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Warteschlange Timeout muss größer als oder gleich",
-      "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Agent Timeout muss größer als oder gleich",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Wiederholung muss größer als oder gleich",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Nachlese Zeit muss größer als oder gleich",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Das Gewicht muss größer als oder gleich",
-      "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die globale Max wiederholen muss größer als oder gleich",
-      "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Überlastung Max wiederholen muss größer als oder gleich",
-      "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Verkehrsüberlastung erneut Zeit muss größer als oder gleich",
-      "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die geschäftige Max wiederholen muss größer als oder gleich",
-      "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die geschäftige Zeit für Wiederholungen muss größer als oder gleich",
-      "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Antwort Nein Max wiederholen muss größer als oder gleich",
-      "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Zeitüberschreitung für keine Antwort Zeit für Wiederholungen muss größer als oder gleich",
-      "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die gleichzeitige Anrufe muss größer als oder gleich",
-      "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Leistung muss kleiner als oder gleich",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die prädiktive Optimierung Prozentsatz muss kleiner als oder gleich",
-      "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die prädiktive Intervall muss kleiner als oder gleich",
-      "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die maximale Anzahl gleichzeitiger Anrufe muss kleiner als oder gleich",
-      "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die stammen Timeout muss kleiner als oder gleich",
-      "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Warteschlange Timeout muss kleiner als oder gleich",
-      "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die globale Max wiederholen muss kleiner als oder gleich",
-      "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Überlastung Max wiederholen muss kleiner als oder gleich",
-      "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Überlastung Zeit für Wiederholungen muss kleiner als oder gleich",
-      "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die geschäftige Max wiederholen muss kleiner als oder gleich",
-      "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die geschäftige Zeit für Wiederholungen muss kleiner als oder gleich",
-      "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Antwort Nein Max wiederholen muss kleiner als oder gleich",
-      "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Zeitüberschreitung für keine Antwort Zeit für Wiederholungen muss kleiner als oder gleich",
-      "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die gleichzeitige Anrufe muss kleiner als oder gleich",
-      "EMAIL_REQUIRED": "Pflichtfeld",
-      "AGENTTIMEOUT_REQUIRED": "Pflichtfeld",
-      "INTERVAL_REQUIRED": "Pflichtfeld",
-      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED": "Pflichtfeld",
-      "CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "CUTDIGIT_REQUIRED": "Pflichtfeld",
-      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "AGENT_REQUIRED": "Pflichtfeld",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
-      "ABANDONEDMAXRETRY_REQUIRED": "Pflichtfeld",
-      "ABANDONEDRETRYTIME_REQUIRED": "Pflichtfeld",
-      "AGENTREJECTMAXRETRY_REQUIRED": "Pflichtfeld",
-      "AGENTREJECTRETRYTIME_REQUIRED": "Pflichtfeld",
-      "DROPMAXRETRY_REQUIRED": "Pflichtfeld",
-      "DROPRETRYTIME_REQUIRED": "Pflichtfeld",
-      "MACHINEMAXRETRY_REQUIRED": "Pflichtfeld",
-      "MACHINERETRYTIME_REQUIRED": "Pflichtfeld",
-      "NOSUCHNUMBERMAXRETRY_REQUIRED": "Pflichtfeld",
-      "NOSUCHNUMBERRETRYTIME_REQUIRED": "Pflichtfeld",
-      "CALLYSQUAREPROJECT_REQUIRED": "Pflichtfeld",
-      "TRUNK_REQUIRED": "Pflichtfeld",
-      "ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "TIMEZONE_REQUIRED": "Zeitzone erforderlich",
+      "PREFIX_REQUIRED": "Präfix erforderlich",
+      "OPTIONS_REQUIRED": "Optionen erforderlich",
+      "AFTERCALLWORKDURATION_REQUIRED": "Dauer Nacharbeit erforderlich",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Ressource erforderlich",
+      "PHONE_REQUIRED": "Telefonnummer erforderlich",
+      "VALUE_REQUIRED": "Wert erforderlich",
+      "EXTENSION_REQUIRED": "Nebenstelle erforderlich",
+      "PRIORITY_REQUIRED": "Priorität erforderlich",
+      "GLOBALMAXRETRY_REQUIRED": "Max. Wiederversuche erforderlich",
+      "CONGESTIONMAXRETRY_REQUIRED": "Max. Wiederversuche erforderlich",
+      "CONGESTIONRETRYTIME_REQUIRED": "Zeit für frühesten Wiederversuch erforderlich",
+      "BUSYMAXRETRY_REQUIRED": "Max. Wiederversuche erforderlich",
+      "BUSYRETRYTIME_REQUIRED": "Zeit für frühesten Wiederversuch erforderlich",
+      "NOANSWERMAXRETRY_REQUIRED": "Max. Wiederversuche erforderlich",
+      "NOANSWERRETRYTIME_REQUIRED": "Zeit für frühesten Wiederversuch erforderlich",
+      "QUEUETIMEOUT_REQUIRED": "Zeitüberschreitung Warteschlange erforderlich",
+      "ORIGINATETIMEOUT_REQUIRED": "Zeitüberschreitung Rufaufbau erforderlich",
+      "GLOBALINTERVAL_REQUIRED": "Globale Zeitplanung erforderlich",
+      "MAXCONCURRENTCALLS_REQUIRED": "Wert für max. Anzahl gleichzeitiger Anrufe erforderlich",
+      "CONCURRENTCALLS_REQUIRED": "Wert für Anzahl gleichzeitiger Anrufe erforderlich",
+      "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Optimierung Predictive-Dialing muss größer oder gleich sein als",
+      "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Intervall Predictive-Dialing muss größer oder gleich sein als",
+      "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Anzahl gleichzeitiger Anrufe muss größer oder gleich sein als",
+      "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung Rufaufbau muss größer oder gleich sein als",
+      "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung Warteschlange muss größer oder gleich sein als",
+      "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung Agent muss größer oder gleich sein als",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wiederversuch muss größer oder gleich sein als",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nacharbeitszeit muss größer oder gleich sein als",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gewichtung muss größer oder gleich sein als",
+      "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Globaler Wert für Wiederholungen muss größer oder gleich sein als",
+      "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Wiederversuche bei Leitungsstau muss größer oder gleich sein als",
+      "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeit für Wiederversuche bei Leitungsstau muss größer oder gleich sein als",
+      "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Anzahl Wiederversuche bei Besetzt muss größer oder gleich sein als",
+      "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeit für Wiederversuch bei Besetzt muss größer oder gleich sein als",
+      "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Anzahl Wiederversuche bei keiner Antwort muss größer oder gleich sein als",
+      "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung bei keiner Antwort muss größer oder gleich sein als",
+      "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert gleichzeitige Anrufe muss größer oder gleich sein als",
+      "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Level bei Power-Dialing muss kleiner oder gleich sein als",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Prozentsatz Optimierung Predictive-Dialing muss kleiner oder gleich sein als",
+      "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Intervall bei Predictive-Dialing muss kleiner oder gleich sein als",
+      "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Anzahl gleichzeitiger Anrufe muss kleiner oder gleich sein als",
+      "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung bei Rufaufbau muss kleiner oder gleich sein als",
+      "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung Warteschlange muss kleiner oder gleich sein als",
+      "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Anzahl globaler Wiederversuche muss kleiner oder gleich sein als",
+      "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Wiederversuche bei Leitungsstau muss kleiner oder gleich sein als",
+      "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung bei Leitungsstau muss kleiner oder gleich sein als",
+      "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Anzahl Wiederversuche bei Besetzt muss kleiner oder gleich sein als",
+      "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeit Wiederversuch bei Besetzt muss kleiner oder gleich sein als",
+      "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Anzahl Wiederversuche bei keiner Antwort muss kleiner oder gleich sein als",
+      "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung bei keiner Antwort muss kleiner oder gleich sein als",
+      "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Anzahl gleichzeitiger Anrufe muss kleiner oder gleich sein als",
+      "EMAIL_REQUIRED": "E-Mail erforderlich",
+      "AGENTTIMEOUT_REQUIRED": "Zeitüberschreitung Agent erforderlich",
+      "INTERVAL_REQUIRED": "Zeitintervall erforderlich",
+      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zufällige letzte Ziffer muss kleiner oder gleich sein als",
+      "RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED": "Zufällige letzte Ziffer erforderlich",
+      "CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Abgeschnittene Nummer muss größer oder gleich sein als",
+      "CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Abgeschnittene Nummer muss kleiner oder gleich sein als",
+      "CUTDIGIT_REQUIRED": "Abgeschnittene Nummer erforderlich",
+      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "AGENT_REQUIRED": "Agent erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pausen-ID bei Qualifizierung erforderlich",
+      "ABANDONEDMAXRETRY_REQUIRED": "Wert erforderlich",
+      "ABANDONEDRETRYTIME_REQUIRED": "Wert erforderlich",
+      "AGENTREJECTMAXRETRY_REQUIRED": "Max. Wiederversuche Agent erforderlich",
+      "AGENTREJECTRETRYTIME_REQUIRED": "Zeitüberschreitung Agent erforderlich",
+      "DROPMAXRETRY_REQUIRED": "Max. Drop-Rate erforderlich",
+      "DROPRETRYTIME_REQUIRED": "Zeit für Wiederversuch bei Drop-Call erforderlich",
+      "MACHINEMAXRETRY_REQUIRED": "Max. Anzahl Wiederversuche bei Anrufbeantworter erforderlich",
+      "MACHINERETRYTIME_REQUIRED": "Zeitüberschreitung bei Anrufbeantworter erforderlich",
+      "NOSUCHNUMBERMAXRETRY_REQUIRED": "Max. Anzahl Wiederversuche bei falscher Nummer erforderlich",
+      "NOSUCHNUMBERRETRYTIME_REQUIRED": "Zeit nach falscher Nummer erforderlich",
+      "CALLYSQUAREPROJECT_REQUIRED": "Call-Flow Projekt erforderlich",
+      "TRUNK_REQUIRED": "SIP-Trunk erforderlich",
+      "ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Anzahl Wiederversuche bei Nummer nicht erreicht muss kleiner oder gleich sein als",
+      "ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeit bei Nummer nicht erreicht muss kleiner oder gleich sein als",
+      "AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Anzahl Wiederversuche bei Ablehnung durch Agenten muss kleiner oder gleich sein als",
+      "AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeit bei Ablehnung durch Agenten muss kleiner oder gleich sein als",
+      "DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Wiederversuche bei Drop-Call muss kleiner oder gleich sein als",
+      "DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeit nach Drop-Call muss kleiner oder gleich sein als",
+      "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Anzahl Wiederversuche bei Anrufbeantworter muss kleiner oder gleich sein als",
+      "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeit bei Anrufbeantworter muss kleiner oder gleich sein als",
+      "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Anzahl Wiederversuche bei falscher Nummer muss kleiner oder gleich sein als",
+      "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeit bei falscher Nummer muss kleiner oder gleich sein als",
       "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Rufen Sie add.phone nach min. sollte größer oder gleich sein",
       "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Pflichtfeld"
     },
     "GENERAL": "Allgemein",
-    "AGENTTIMEOUT": "Agent Timeout",
+    "AGENTTIMEOUT": "Zeitüberschreitung Agent",
     "MAXLENGTH": "Maximale Länge",
     "RETRY": "Erneut versuchen",
-    "WRAPUPTIME": "Wrapup Zeit",
-    "WEIGHT": "Gewicht",
-    "JOINWHENEMPTY": "Melden Sie wenn sie leer",
+    "WRAPUPTIME": "Zeit Nacharbeit",
+    "WEIGHT": "Gewichtung",
+    "JOINWHENEMPTY": "Beitreten, wenn leer",
     "LEAVEWHENEMPTY": "Verlassen, wenn leer",
     "HELP": {
-      "DIALORDERBYSCHEDULEDAT": "Sie Kontakte von Hopper (absteigend oder aufsteigend).",
-      "DIALRECALLINQUEUE": "Planen Sie für die Agenten in der Warteschlange",
-      "DIALRECALLMETIMEOUT": "Zeitintervall (in Minuten), für die mir der Gültigkeitsdauer",
-      "PRIORITY": "Priorität in der Liste",
-      "AMDMAXIMUMWORDLENGTH": "Zulässige Höchstdauer von einer einzigen Stimme auszusprechen.",
-      "AMDMINWORDLENGTH": "Minimale Dauer eines Voice ein Wort betrachtet zu werden.",
-      "AMDSILENCETHRESHOLD": "Wenn die durchschnittliche Höhe der Lärm in einer Probe, die diesen Wert nicht erreichen, aus einer Skala von 0 bis 32767, dann werden wir es als Stille betrachten",
-      "AMDTOTALANALYSISTIME": "Maximale Zeit für den Algorithmus, ob die Audio stellt ein Mensch oder eine Maschine zu entscheiden erlaubt",
-      "AMDAFTERGREETINGSILENCE": "Stille nach der Feststellung einer Begrüßung. Wenn die Zeit überschritten wird, dann ist das Ergebnis der Erkennung als Mensch",
-      "AMDGREETING": "Maximale Länge für eine Grußansage. Wenn die Zeit überschritten wird, dann ist das Ergebnis der Erkennung als Maschine",
-      "AMDINITIALSILENCE": "\"Längstmögliche Stille Dauer, bevor Sie die Grußansage auf. Wenn die Zeit überschritten wird, dann ist das Ergebnis der Erkennung als Maschine",
-      "AMDACTIVE": "Aktivieren oder Deaktivieren von Anrufbeantwortern Erkennung Versuche",
-      "AMDBETWEENWORDSSILENCE": "Minimale Dauer der Stille nach einem Wort, die Audio, die als neues Wort folgt in Betracht zu ziehen",
-      "AMDMAXIMUMNUMBEROFWORDS": "Maximale Anzahl der Wörter in der Begrüßung. Wenn es erreicht wird, dann ist das Ergebnis der Erkennung als Maschine",
-      "CALLYSQUAREPROJECT": "Wenn Sie ein IVR-Projekt aus der Liste aus, das Wählsystem den Anruf an den IVR-Dienst, bevor Sie ihn in einer Warteschlange.",
-      "PREFIX": "Vorwahl",
+      "DIALORDERBYSCHEDULEDAT": "Reihenfolge Anwahl nach Planung",
+      "DIALRECALLINQUEUE": "Anwahl in Warteschlange",
+      "DIALRECALLMETIMEOUT": "Zeit (Min) für Reservierung des Anrufes an Agenten",
+      "PRIORITY": "Priorität",
+      "AMDMAXIMUMWORDLENGTH": "Maximale Wortlänge für die Anrufbeantworter-Erkennung",
+      "AMDMINWORDLENGTH": "Minimale Wortlänge für die Anrufbeantworter-Erkennung",
+      "AMDSILENCETHRESHOLD": "Sobald die durchschnittliche Lautstärke von Geräuschen diesen Wert (Skala 0 bis 32767) unterschreitet, wird Stille interpretiert",
+      "AMDTOTALANALYSISTIME": "Maximale Zeit für eine Erkennung von Anrufbeantworter oder reale Person",
+      "AMDAFTERGREETINGSILENCE": "Stille nach der Feststellung einer Begrüßung. Wenn überschritten, wird der Anruf als \"reale Person\" klassifiziert",
+      "AMDGREETING": "Maximale Länge für eine Begrüßungsnachricht. Wenn überschritten, wird der Anruf als Anrufbeantworter klassifiziert",
+      "AMDINITIALSILENCE": "Maximale Stille vor der Begrüßungsnachricht. Wenn überschritten, wird der Anruf als Anrufbeantworter klassifiziert",
+      "AMDACTIVE": "Aktivieren oder Deaktivieren der Anrufbeantworter-Erkennung",
+      "AMDBETWEENWORDSSILENCE": "Minimale Dauer der Pause nach einem Wort, bevor ein neues Wort erkannt werden kann",
+      "AMDMAXIMUMNUMBEROFWORDS": "Maximale Anzahl der Wörter in der Begrüßung. Wenn erreicht, wird der Anruf als Anrufbeantworter klassifiziert",
+      "CALLYSQUAREPROJECT": "Legen Sie hier einen Call-Flow für den ausgehenden Anruf fest, bevor dieser in die Warteschleife geleitet wird",
+      "PREFIX": "Vorwahl (Präfix)",
       "ACTIVE": "Aktiv",
-      "AGENTTIMEOUT": "Gibt die Anzahl von Sekunden, die ein Agent Gerät klingeln.",
-      "MAXLENGTH": "Gibt die maximale Anzahl der Anrufer in der Wartezeit in der Warteschlange. Ein Wert von Null bedeutet, dass eine unbegrenzte Anzahl von Anrufern in der Warteschlange erlaubt sind.",
-      "RETRY": "Gibt die Anzahl der Sekunden, bevor das nächste Mitglied in der Warteschlange, wenn der Wert für das Zeitlimit ausgeschöpft ist, während versucht wird, eine Mitglied der Warteschlange, um an den Zahnkranz zu warten.",
-      "WRAPUPTIME": "Die Anzahl der Sekunden, die ein Mitglied in einer Warteschlange nicht mehr verfügbar, nachdem Sie einen Anruf halten.",
-      "WEIGHT": "Legt das Gewicht einer Warteschlange. Eine Warteschlange mit einem höheren Gewicht definiert wird erste Priorität erhalten, wenn die Mitglieder mit mehreren Warteschlangen zugeordnet sind.",
-      "JOINWHENEMPTY": "Steuert, ob ein Anrufer in der Warteschlange hinzugefügt wird, wenn keine Mitglieder vorhanden sind.",
-      "LEAVEWHENEMPTY": "Verwendet, um zu steuern, ob Anrufer aus der Warteschlange gekickt werden, wenn Mitglieder nicht mehr Anrufe verfügbar sind.",
-      "ANNOUNCEFREQUENCY": "Legt fest, wie oft wir die Position des Anrufers und/verkünden sollten oder geschätzte Wartezeit in der Warteschlange. Stellen Sie diesen Wert auf Null zu deaktivieren.",
-      "MINANNOUNCEFREQUENCY": "Gibt die minimale Zeit, die verstreichen muss, bevor wir die Position des Anrufers in der Warteschlange erneut zu verkünden. Dies wird verwendet, wenn der Anrufer häufig ändern kann, wird der Anrufer hören mehrere Updates in einem kurzen Zeitraum zu verhindern.",
-      "PERIODICANNOUNCEFREQUENCY": "Gibt an, wie oft wir in regelmäßigen Abständen Mitteilungen an den Anrufer machen sollte.",
-      "ANNOUNCEPOSITIONLIMIT": "Wenn Sie definiert haben verkünden - Position als entweder einzuschränken oder mehr.",
-      "AFTERCALLWORKDURATION": "Die Dauer der Pause durch die Option \"Arbeit nach Anruf ausgelöst",
-      "MEMBERDELAY": "Verwendet, wenn es eine Verzögerung, bevor der Anrufer und Warteschlange Mitglied miteinander verbunden werden möchten.",
-      "MUSICONHOLD": "Setzt die Musik klasse von einer bestimmten Warteschlange verwendet werden.",
-      "ANNOUNCETOAGENT": "Für das Spielen eine Ansage, die auf den Agenten, der den Anruf entgegengenommen, in der Regel verwendet, um ihn wissen zu lassen, was der Anrufer Warteschlange kommt.",
-      "RANDOMPERIODICANNOUNCE": "Wenn \"yes\" festgelegt ist, wird die definierte in regelmäßigen Abständen Mitteilungen in einer zufälligen Reihenfolge wiedergeben.",
-      "ANNOUNCEHOLDTIME": "Legt fest, ob die geschätzte Wartezeit zusammen mit dem in regelmäßigen Abständen Mitteilungen gespielt werden sollte.",
-      "ANNOUNCECALLERPOSITION": "Legt fest, ob die Position des Anrufers in der Warteschlange zu Ihrem angekündigt werden sollte. Ist Nein eingestellt, wird die Position wird nie bekannt gegeben. Wenn Sie auf \"Ja\" setzen, wird die Position des Anrufers wird immer bekannt gegeben werden. Wenn der Wert eingestellt ist, wird der Anrufer ihre Position in der Warteschlange hört nur, wenn er sich innerhalb der Grenze von verkünden - Position - Grenzwert festgelegt werden. Wenn der Wert auf mehr eingestellt ist, wird der Anrufer ihre Position zu hören, wenn Sie über die Anzahl von verkünden - Position - Grenzwert definiert ist.",
-      "REPORTHOLDTIMEAGENT": "Ermöglicht die Berichterstattung des Anrufers Haltezeit auf die Warteschlange, die vor dem Bridging.",
-      "PERIODICANNOUNCE": "Eine Reihe von in regelmäßigen Abständen Mitteilungen gespielt zu werden, spielte in der Reihenfolge, in der sie definiert sind.",
-      "HOLDTIMEANNOUNCE": "Wenn nicht angegeben, wird der Standardwert spielen (\"hold\"). Wenn auf einen leeren Wert gesetzt ist, wird die Aufforderung nicht gespielt werden.",
-      "YOUARENEXTANNOUNCE": "Wenn nicht angegeben, wird der Standardwert (\" Jetzt sind Sie in erster Linie\"). Wenn auf einen leeren Wert gesetzt ist, wird die Aufforderung nicht gespielt werden.",
-      "THEREAREANNOUNCE": "Wenn nicht angegeben, wird der Standardwert spielen (\"Es gibt\"). Wenn auf einen leeren Wert gesetzt ist, wird die Aufforderung nicht gespielt werden.",
-      "WAITINGCALLSANNOUNCE": "Wenn nicht angegeben, wird der Standardwert (\"Wartende Anrufe\"). Wenn auf einen leeren Wert gesetzt ist, wird die Aufforderung nicht gespielt werden.",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Wenn nicht angegeben, wird der Standardwert spielen (\"Das Voraussichtliche Wartezeit\"). Wenn auf einen leeren Wert gesetzt ist, wird die Aufforderung nicht gespielt werden.",
-      "MINUTESANNOUNCE": "Wenn nicht angegeben, wird der Standardwert spielen (\"min\"). Wenn auf einen leeren Wert gesetzt ist, wird die Aufforderung nicht gespielt werden.",
-      "MINUTEANNOUNCE": "Wenn nicht angegeben, wird der Standardwert (\"Minute\"). Wenn auf einen leeren Wert gesetzt ist, wird die Aufforderung nicht gespielt werden.",
-      "SECONDSANNOUNCE": "Wenn nicht angegeben, wird der Standardwert spielen (\"Sekunden\"). Wenn auf einen leeren Wert gesetzt ist, wird die Aufforderung nicht gespielt werden.",
-      "THANKYOUANNOUNCE": "Wenn nicht angegeben, wird der Standardwert spielen (\"Vielen Dank für Ihr Geduld\"). Wenn auf einen leeren Wert gesetzt ist, wird die Aufforderung nicht gespielt werden.",
-      "AFTERCALLWORK": "Wenn aktiv, wird für den Agenten in Pause nach einer abgeschlossenen Anruf in die Warteschlange eingestellt werden.",
-      "AUTOPAUSE": "Aktiviert/deaktiviert das automatische Anhalten der Mitglieder, die es versäumen, um einen Anruf zu beantworten. Wenn aktiv Ursachen dieses Mitglied in allen Warteschlangen er ist Mitglied der angehalten zu werden.",
-      "RINGINUSE": "Verwendet Senden von Anrufen an Mitglieder, deren Status im Einsatz ist zu vermeiden.",
-      "TIMEOUTRESTART": "Wenn die Einstellung Ja lautet, setzt den Timeout für einen Agenten zu beantworten, wenn entweder ein Besetztzeichen oder Staus Status aus dem Kanal empfangen wird.",
-      "MONITORFORMAT": "Gibt das Dateiformat zu verwenden, wenn Sie die Aufnahme. Wenn der Monitor-Format deaktiviert ist, werden die Anrufe nicht aufgezeichnet werden.",
-      "CONTEXT": "Kann ein Anrufer in die Warteschlange verlassen Sie durch Drücken einer einzigen MFV-Ziffer. Wenn ein Kontext angegeben ist und der Anrufer gibt eine Reihe, kann diese Ziffer wird der Versuch unternommen, im Rahmen angegebenen ausgeziffert werden, und Nummernplan Ausführung wird es weiter.",
-      "SETINTERFACEVARIABLES": "Wenn die Einstellung Ja lautet, gerade vor der Anrufer mit einer Warteschlange Mitglied überbrückt werden einige Variablen gesetzt werden (siehe Wiki)",
-      "SETQUEUEVARIABLES": "Wenn die Einstellung Ja lautet, gerade vor der Anrufer mit einer Warteschlange Mitglied überbrückt werden, und kurz vor dem Anrufer die Warteschlange verlassen einige Variablen gesetzt werden (siehe Wiki)",
-      "SETQUEUEENTRYVARIABLES": "Wenn die Einstellung Ja lautet, gerade vor der Anrufer mit einer Warteschlange Mitglied überbrückt werden einige Variablen gesetzt werden (siehe Wiki)",
-      "RECORDING": "Die Anrufaufzeichnung aktivieren",
-      "VOICEMAIL_CONTEXT": "Im Zusammenhang mit der relativen Erweiterung.",
-      "METHOD": "Outbound Dialer Methode.",
-      "POWERLEVEL": "Anzahl der Kontakte, für einen verfügbaren Agenten.",
-      "PREDICTIVEOPTIMIZATION": "Ein Faktor in der vorbestimmten Algorithmus zu optimieren.",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Prozentsatz, der auf die ausgewählten prädiktive Optimierung Faktor",
-      "PREDICTIVEINTERVAL": "Zeitintervall in Minuten mit prädiktiver Algorithmus berücksichtigt werden Anrufe zu berechnen für die Optimierung der prädiktive Optimierung Faktor zu generieren",
-      "MAXCONCURRENTCALLS": "Die maximale Anzahl gleichzeitiger Anrufe, die vom Outbound Dialer entstanden sein wird.",
-      "CONCURRENTCALLS": "Die maximale Anzahl gleichzeitiger Anrufe, die vom Outbound Dialer für diese Kampagne entstanden sein wird.",
-      "ORIGINATECALLERIDNAME": "Ausgehende Anrufer-ID-Namen",
-      "ORIGINATECALLERIDNUMBER": "Ausgehende Anrufer-ID-Nummer",
-      "ORIGINATETIMEOUT": "Zeit in Sekunden, die ausgehende Anrufe mit Ursprung Verbindung herzustellen. Wenn die Busverbindungen nicht hergestellt ist, wird der Status stammen, wird keine Antwort sein.",
-      "QUEUETIMEOUT": "Zeit (in Sekunden) ein Anruf in der Warteschlange warten, bevor es gelöscht wird (Min 1 und Max. 999)",
-      "GLOBALMAXRETRY": "Maximale Anzahl, wie oft ein Kontakt genannt wird, bevor es geschlossen",
-      "CONGESTIONMAXRETRY": "Maximale Anzahl, wie oft ein Kontakt konnte nicht für Staus Grund genannt wird, bevor es geschlossen",
-      "CONGESTIONRETRYTIME": "Zeit in Minuten, bevor Sie es erneut versuchen einen Kontakt für Staus Grund fehlgeschlagen zu erreichen.",
-      "NOANSWERMAXRETRY": "Maximale Anzahl, wie oft ein Kontakt konnte nicht für Keine Antwort Grund genannt wird, bevor es geschlossen",
-      "NOANSWERRETRYTIME": "Zeit in Minuten, bevor Sie es erneut versuchen einen Kontakt für Keine Antwort Reason zu erreichen.",
-      "GLOBALINTERVAL": "Globale Zeit, in der sich der Dialer erlaubt ist, Kontakte zu nennen. Bitte achten Sie, wenn Sie dieses Feld nicht ändern. Wir sind nicht verantwortlich oder haftbar für die Nichteinhaltung mit Autodialer Gesetze und Bestimmungen einzuhalten.",
+      "AGENTTIMEOUT": "Definiert die Zeit (in Sekunden), in der die Nebenstelle des Agenten klingelt",
+      "MAXLENGTH": "Maximale Anzahl von Anrufen in der Warteschlange (0 = keine Begrenzung)",
+      "RETRY": "Definiert wie Lange (Sekunden) auf eine Antwort des Agenten gewartet wird, bevor der Anruf beim nächsten Agenten klingelt",
+      "WRAPUPTIME": "Zeit (in Sekunden), in welcher der Agent nach einem Anruf nicht verfügbar ist",
+      "WEIGHT": "Gewichtung der Warteschlangen untereinander, sofern die Agenten auf mehr als einer Warteschlange arbeiten",
+      "JOINWHENEMPTY": "Definiert, ob ein Anruf in die Warteschleife eintreten kann, wenn keine Agenten verfügbar sind",
+      "LEAVEWHENEMPTY": "Trennt den Anruf in der Warteschleife, sofern keine Agenten verfügbar sind",
+      "ANNOUNCEFREQUENCY": "Definiert, wie oft dem Anrufer die aktuelle Warteposition und/oder die erwartete Wartezeit angesagt wird. (0 zum Deaktivieren dieser Funktion)",
+      "MINANNOUNCEFREQUENCY": "Minimale Ansage der Warteposition/Wartezeit. Nützlich, wenn der Anrufer die Warteposition oft wechselt",
+      "PERIODICANNOUNCEFREQUENCY": "Intervall für sich Widerholende Ansagen an den Anrufer",
+      "ANNOUNCEPOSITIONLIMIT": "Warteposition wird nur ab dem eingestellten Wert angesagt",
+      "AFTERCALLWORKDURATION": "Die Dauer der Nacharbeit nach einem Anruf (Sekunden)",
+      "MEMBERDELAY": "Verzögert die Zustellung des Anrufes an den Agenten um den eingestellten Wert (Sekunden)",
+      "MUSICONHOLD": "Definiert die Wartemusik innerhalb der Warteschlange",
+      "ANNOUNCETOAGENT": "Spielt dem Agenten eine Mitteilung über den Ursprung des Anrufes vor der Annahme",
+      "RANDOMPERIODICANNOUNCE": "Bei \"Ja\" werden die definierten Ansagen in einer zufälligen Reihenfolge abgespielt",
+      "ANNOUNCEHOLDTIME": "Definiert, ob die geschätzte Wartezeit zusätzlich zur Wartemusik abgespielt wird. (Ja/Nein/nur ein Mal)",
+      "ANNOUNCECALLERPOSITION": "Definiert, ob die aktuelle Warteposition des Anrufers angesagt wird. Nein = Niemals; Ja = Immer; Limit = nur wenn innerhalb des Limits für Warteposition; Mehr = wenn überhalb des Limits für Warteposition",
+      "REPORTHOLDTIMEAGENT": "Ermöglicht dem Agenten, die Wartezeit des Anrufers zu hören",
+      "PERIODICANNOUNCE": "Reihenfolge der Ansagen innerhalb der Warteschlange",
+      "HOLDTIMEANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für die Ansage der Wartezeit. Bsp: \"Ihre geschätzte Wartezeit beträgt\" Wenn leer, wird keine Ansage abgespielt",
+      "YOUARENEXTANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für die Ansage der ersten Position in der Warteschlange. Bsp: \"Der nächste freie Mitarbeiter wird Ihren Anruf in Kürze entgegennehmen\" Wenn leer, wird keine Ansage abgespielt",
+      "THEREAREANNOUNCE": "Erster Teil der Ansage für die bereits wartenden Anrufe. Bsp: \"Vor Ihnen befinden sich noch..:\"; Wenn leer, wird keine Ansage abgespielt",
+      "WAITINGCALLSANNOUNCE": "Zweiter Teil der Ansage für die bereits wartenden Anrufe. Bsp: \"...Anrufe in der Warteschlange\"; Wenn leer, wird keine Ansage abgespielt",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für die Ansage der geschätzten Wartezeit. Bsp: \"Ihre aktuelle Wartezeit beträgt ca....\" Wenn leer, wird keine Ansage abgespielt",
+      "MINUTESANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für das Wort \"Minuten\". Wenn leer, wird keine Ansage abgespielt",
+      "MINUTEANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für das Wort \"Minute\". Wenn leer, wird keine Ansage abgespielt",
+      "SECONDSANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für das Wort \"Sekunden\". Wenn leer, wird keine Ansage abgespielt",
+      "THANKYOUANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für eine Ansage zum Dank. Bsp: \"Vielen Dank für Ihre Geduld\" Wenn leer, wird keine Ansage abgespielt",
+      "AFTERCALLWORK": "Wenn aktiviert, wird der Agent nach jedem Anruf in eine definierbare Pause zur Nacharbeit gesetzt",
+      "AUTOPAUSE": "Legt fest, ob der Agent in eine automatische pause gesetzt wird, sofern dieser den aktuellen Anruf nicht innerhalb der definierten Zeit entgegennimmt. Wenn ja, wird der Agent in allen zugewiesenen Kampagnen auf Pause gesetzt. ",
+      "RINGINUSE": "Aktivieren/Deaktivieren der Anrufzustellung wenn der Status der Nebenstelle Besetzt ist",
+      "TIMEOUTRESTART": "Wenn ja, wird die Zeitüberschreitung bei Agenten mit \"Besetzt\" oder \"Verbindungsfehler\"-Status übersprungen",
+      "MONITORFORMAT": "Definiert das Dateiformat für Gesprächsaufzeichnungen. Wenn leer, findet keine Gesprächsaufzeichnung statt.",
+      "CONTEXT": "Ermöglicht einem Anrufer, durch Drücken einer einzelnen Taste, die Warteschlange zu verlassen.",
+      "SETINTERFACEVARIABLES": "Wenn aktiviert, können aufgenommene Variabeln vor einem Anruf an den Agenten weitergegeben werden. (Siehe Wiki)",
+      "SETQUEUEVARIABLES": "Wenn aktiviert, können aufgenommene Variabeln nach dem Verlassen der Warteschlange an den Agenten weitergegeben werden. (Siehe Wiki)",
+      "SETQUEUEENTRYVARIABLES": "Wenn aktiviert, können aufgenommene Variabeln beim Eintreten in die Warteschlange an den Agenten weitergegeben werden. (Siehe Wiki)",
+      "RECORDING": "Automatische Gesprächsaufzeichnung Deaktivieren/Aktivieren",
+      "VOICEMAIL_CONTEXT": "Kontext für Voicemail",
+      "METHOD": "Wählform für Outbound-Dialing",
+      "POWERLEVEL": "Anzahl der anzurufenden Kontakte pro verfügbarem Agent",
+      "PREDICTIVEOPTIMIZATION": "Faktor zur Optimierung des Predictive-Dialing",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Prozentsatz basierend auf dem eingestellten Optimierungsfaktor",
+      "PREDICTIVEINTERVAL": "Zeitintervall (in Minuten) innerhalb dessen die Berechnung der angebotenen (Predictive-) Anrufe stattfindet",
+      "MAXCONCURRENTCALLS": "Maximale Anzahl gleichzeitiger Anwahlen für die Outboundkampagne (0 = keine Begrenzung)",
+      "CONCURRENTCALLS": "Anzahl gleichzeitiger Anwahlen für die Outboundkampagne",
+      "ORIGINATECALLERIDNAME": "Name (ID) des ausgehenden Anrufes",
+      "ORIGINATECALLERIDNUMBER": "Angezeigte Nummer des ausgehenden Anrufes",
+      "ORIGINATETIMEOUT": "Zeit (in Sekunden) für die Entgegennahme eines ausgehenden Anrufes. Nach Ablauf der Zeit wird der Anruf als \"keine Antwort\" klassifiziert",
+      "QUEUETIMEOUT": "Zeit (in Sekunden) in welcher ein ausgehender Anruf in der Warteschleife gehalten wird, bevor das System auflegt (Drop-Call). Min: 1 Sek - Max: 999 Sek",
+      "GLOBALMAXRETRY": "Maximale Anzahl an Anrufversuchen, bevor der Kontakt verworfen wird",
+      "CONGESTIONMAXRETRY": "Maximale Anzahl an Anrufversuchen, bevor der Kontakt verworfen wird. (Sofern der Anruf in einen Leitungsstau führt)",
+      "CONGESTIONRETRYTIME": "Zeit (in Minuten), bevor ein Anruf resultierend aus Leitungsstau erneut gewählt wird.",
+      "NOANSWERMAXRETRY": "Maximale Anzahl Wiederversuche bei keiner Antwort",
+      "NOANSWERRETRYTIME": "Min. Zeit (in Minuten), für einen Wiederversuch nach Ergebnis \"keine Antwort\"",
+      "GLOBALINTERVAL": "Globales Zeitintervall, in welchem der Dialer ausgehende Anrufe tätigt. ",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "TIMEOUT": "Gibt die Anzahl von Sekunden an, die ein Gerät klingeln.",
-      "CALLYSQUAREPROJECTPREVIEW": "Wenn Sie ein IVR-Projekt auswählen, leitet der Dialer den Anruf an das IVR weiter, wenn ein Agent antwortet (das IVR wird an den Agenten weitergeleitet).",
-      "CALLYSQUAREPROJECTPREVIEW2": "Wenn Sie ein IVR-Projekt auswählen, leitet der Dialer den Anruf an das IVR weiter, wenn ein Client aufgelegt oder nicht erreichbar ist (das IVR wird an den Agenten weitergeleitet).",
-      "RUNIFHANGUPAGENT": "Führen Sie Cally Square Project nach, auch wenn der Agent den Anruf auflegt",
-      "CALLYSQUAREPROJECT2": "Wenn Sie ein IVR-Projekt auswählen, leitet der Dialer den Anruf nach der Warteschlange an das IVR weiter. (Wenn die Warteschlange nach einer Zeitüberschreitung endet)",
-      "RANDOMLASTDIGITCALLERIDNUMBER": "Wenn es größer als 0 ist, erzeugt es die letzten Nummern zufällig aus der Nummer der abgehenden Anrufer-ID",
-      "BUSYMAXRETRY": "Maximale Anzahl, wie oft ein Kontakt angerufen wird, bevor er als geschlossen betrachtet wird, wenn der Anruf wegen Besetzt fehlschlägt",
-      "BUSYRETRYTIME": "Zeit in Minuten, bevor erneut versucht wird, einen fehlgeschlagenen Kontakt anzurufen, weil er beschäftigt ist",
-      "MANDATORYDISPOSITIONPAUSEID": "Pausenstatus, der während der Zwangsdisposition festgelegt werden soll",
-      "PREDICTIVEMAXTHRESHOLD": "Wenn der Prozentsatz der im Zeitfenster verfügbaren Agenten im Vergleich zu den zum Zeitpunkt der Vorhersage verfügbaren Agenten den konfigurierten Maximalwert überschreitet, berechnet die Vorhersage die Vorhersage neu.",
-      "PREDICTIVEMINTHRESHOLD": "Wenn der Prozentsatz der im Zeitfenster verfügbaren Agenten im Vergleich zu den zum Zeitpunkt der Vorhersage verfügbaren Agenten den konfigurierten Mindestgrenzwert überschreitet, berechnet die Vorhersage die Vorhersage neu.",
-      "ABANDONEDMAXRETRY": "Maximale Häufigkeit, mit der ein Kontakt angerufen wird, bevor er als geschlossen betrachtet wird, wenn der Anruf zum Abbrechen fehlgeschlagen ist",
-      "ABANDONEDRETRYTIME": "Zeit in Minuten, bevor versucht wird, einen fehlgeschlagenen Kontakt aufgrund eines Abbruchs erneut anzurufen",
-      "AGENTREJECTMAXRETRY": "Maximale Häufigkeit, mit der ein Kontakt angerufen wird, bevor er als geschlossen betrachtet wird, wenn der Anruf für die Ablehnung des Agenten fehlgeschlagen ist",
-      "AGENTREJECTRETRYTIME": "Zeit in Minuten, bevor versucht wird, einen fehlgeschlagenen Kontakt aufgrund einer Ablehnung des Agenten erneut anzurufen",
-      "DROPMAXRETRY": "Maximale Häufigkeit, mit der ein Kontakt angerufen wird, bevor er als geschlossen betrachtet wird, wenn der Anruf nicht beendet werden konnte",
-      "DROPRETRYTIME": "Zeit in Minuten, bevor versucht wird, einen fehlgeschlagenen Kontakt aufgrund eines Verbindungsabbruchs erneut anzurufen",
-      "MACHINEMAXRETRY": "Maximale Häufigkeit, mit der ein Kontakt angerufen wird, bevor er als geschlossen betrachtet wird, wenn der Anruf für die Maschine fehlgeschlagen ist",
-      "MACHINERETRYTIME": "Zeit in Minuten, bevor versucht wird, einen fehlgeschlagenen Kontakt aufgrund der Maschine erneut anzurufen",
-      "NOSUCHNUMBERETRYTIME": "Zeit in Minuten, bevor versucht wird, einen fehlgeschlagenen Kontakt erneut anzurufen, da keine solche Nummer vorhanden ist",
-      "NOSUCHNUMBERMAXRETRY": "Maximale Häufigkeit, mit der ein Kontakt angerufen wird, bevor er als geschlossen betrachtet wird, wenn der Anruf für keine solche Nummer fehlgeschlagen ist",
-      "NOSUCHNUMBERRETRYTIME": "Zeit in Minuten, bevor versucht wird, einen fehlgeschlagenen Kontakt erneut anzurufen, da keine solche Nummer vorhanden ist",
+      "TIMEOUT": "Anzahl Sekunden in denen ein Anruf bei einem Agenten klingelt, bevor der nächste Agent angefragt wird",
+      "CALLYSQUAREPROJECTPREVIEW": "Call-Flow wird vor der Zustellung an einen Agenten verwendet (Outbound-IVR)",
+      "CALLYSQUAREPROJECTPREVIEW2": "Call-Flow für den Transfer, wenn Anrufer aufgelegt hat oder nicht erreichbar ist",
+      "RUNIFHANGUPAGENT": "Call-Flow auch dann starten, wenn der Agent aufgelegt hat",
+      "CALLYSQUAREPROJECT2": "Call-Flow zur Weiterleitung des Anrufes nach der Warteschlange - Definiert durch Zeitüberschreitung",
+      "RANDOMLASTDIGITCALLERIDNUMBER": "Wenn der Wert größer als 0, werden die jeweils letzten Ziffern der ausgehenden Nummer zufällig generiert. (Hinweis: es dürfen nur real existierende und registrierte Nummern verwendet werden)",
+      "BUSYMAXRETRY": "Maximale Anzahl Wiederversuche bei \"Besetzt\" oder \"Fehlgeschlagen\"",
+      "BUSYRETRYTIME": "Zeit (in Minuten), für Wiederversuch bei \"Besetzt\" oder \"Fehlgeschlagen\"",
+      "MANDATORYDISPOSITIONPAUSEID": "Agentenstatus während der Qualifizierung eines Kontaktes",
+      "PREDICTIVEMAXTHRESHOLD": "Sofern der Prozentsatz der freien Agenten innerhalb des definierten Zeitraumes höher als der vorhergesagte Zeitraum ist, findet eine neue Kalkulation statt.",
+      "PREDICTIVEMINTHRESHOLD": "Sofern der Prozentsatz der freien Agenten innerhalb des definierten Zeitraumes niedriger als der vorhergesagte Zeitraum ist, findet eine neue Kalkulation statt.",
+      "ABANDONEDMAXRETRY": "Maximale Anzahl Wiederversuche bei \"Verlassen\"",
+      "ABANDONEDRETRYTIME": "Zeit (in Minuten), für Wiederversuch bei \"Verlassen\"",
+      "AGENTREJECTMAXRETRY": "Maximale Anzahl Wiederversuche, sofern der Anruf von einem Agenten abgelehnt wurde",
+      "AGENTREJECTRETRYTIME": "Zeit (in Minuten), vor einem Wiederversuch, wenn der Anruf von einem Agenten abgelehnt wurde",
+      "DROPMAXRETRY": "Maximale Anzahl Wiederversuche, beim Auflegen des System (Drop-Call)",
+      "DROPRETRYTIME": "Zeit (in Minuten), vor einem Wiederversuch beim Auflegen des Systems (Drop-Call)",
+      "MACHINEMAXRETRY": "Maximale Anzahl Wiederversuche wenn ein Anrufbeantworter erkannt wurde",
+      "MACHINERETRYTIME": "Zeit (in Minuten), vor einem Wiederversuch wenn ein Anrufbeantworter erkannt wurde",
+      "NOSUCHNUMBERETRYTIME": "Zeit (in Minuten), vor einem Wiederversuch bei \"Nummer falsch\" ",
+      "NOSUCHNUMBERMAXRETRY": "Maximale Anzahl Wiederversuche bei \"Nummer falsch\"",
+      "NOSUCHNUMBERRETRYTIME": "Zeit (in Minuten), vor einem Wiederversuch bei \"Nummer falsch\" ",
       "PREVIEW_AUTO_RECALL_ME": "Wenn aktiviert, generiert das System automatisch die Wiederanrufe für den Agent automatisch. Wenn deaktiviert, müssen diese Anrufe manuell geplant werden",
       "PREVIEW_RECALL_ME_REMINDER": "Wenn aktiviert, sendet das System n Minuten (entsprechend dem in den allgemeinen Einstellungen eingestellten Zeitintervall) eine Benachrichtigung an den Agenten, bevor die Rückrufnachricht generiert wird",
       "TIMEZONE": "Zeitzone angeben"
     },
-    "MUSICONHOLD": "Musik auf Halten",
-    "ANNOUNCETOAGENT": "Verkünden auf Agenten",
-    "ANNOUNCEMENTS": "Ankündigungen",
-    "ADVANCEDPREVIEW": "Erweiterte",
-    "ADVANCED": "Erweiterte",
-    "ADVANCE": "Erweiterte",
-    "ANNOUNCEFREQUENCY": "Frequenz ankündigen",
-    "MINANNOUNCEFREQUENCY": "Minimale verkünden Frequenz",
-    "PERIODICANNOUNCEFREQUENCY": "Periodische verkünden Frequenz",
-    "RANDOMPERIODICANNOUNCE": "Random Periodische verkünden",
-    "ANNOUNCEHOLDTIME": "Verkünden. Haltezeit",
-    "ANNOUNCECALLERPOSITION": "Verkünden Anrufer Position",
-    "ANNOUNCEPOSITIONLIMIT": "Verkünden Position Limit",
-    "REPORTHOLDTIMEAGENT": "Bericht Bedienplatz Haltezeit",
-    "PERIODICANNOUNCE": "Periodische verkünden",
-    "HOLDTIMEANNOUNCE": "Hold Zeit verkünden",
-    "YOUARENEXTANNOUNCE": "\"Sie sind weiter' verkünden",
-    "THEREAREANNOUNCE": "'Es gibt' verkünden",
-    "WAITINGCALLSANNOUNCE": "Wartende Anrufe verkünden",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Halten Sie die geschätzte Zeit verkünden",
-    "MINUTESANNOUNCE": "Minuten ankündigen",
-    "MINUTEANNOUNCE": "Minute verkünden",
-    "SECONDSANNOUNCE": "Sekunden verkünden",
-    "THANKYOUANNOUNCE": "\"Danke\" ankündigen",
-    "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "Arbeit nach Anruf",
-    "AFTERCALLWORKDURATION": "Arbeit nach Anruf Dauer",
-    "RINGINUSE": "Ring im Einsatz",
-    "MEMBERDELAY": "Die Verzögerung",
-    "TIMEOUTRESTART": "Timeout neu starten",
-    "MONITORFORMAT": "Aufzeichnungsformat",
-    "SETINTERFACEVARIABLES": "Set Interface Variablen",
-    "SETQUEUEVARIABLES": "Stellen Variablen",
-    "SETQUEUEENTRYVARIABLES": "Stellen ENTRY-Variablen",
-    "CONTEXT": "Kontext",
+    "MUSICONHOLD": "Wartemusik",
+    "ANNOUNCETOAGENT": "Ansagenachricht für Agenten",
+    "ANNOUNCEMENTS": "Ansagen",
+    "ADVANCEDPREVIEW": "Erweitert",
+    "ADVANCED": "Erweiterte Einstellungen",
+    "ADVANCE": "Erweitert",
+    "ANNOUNCEFREQUENCY": "Ansagefrequenz",
+    "MINANNOUNCEFREQUENCY": "Min. Frequenz Ansage",
+    "PERIODICANNOUNCEFREQUENCY": "Frequenz wiederkehrende Ansagen",
+    "RANDOMPERIODICANNOUNCE": "Zufälliges Abspielen der Ansagen",
+    "ANNOUNCEHOLDTIME": "Wartezeit ansagen",
+    "ANNOUNCECALLERPOSITION": "Warteposition ansagen",
+    "ANNOUNCEPOSITIONLIMIT": "Limit für Ansage Warteposition",
+    "REPORTHOLDTIMEAGENT": "Wartezeit dem Agenten ansagen",
+    "PERIODICANNOUNCE": "Wiederkehrende Ansagen",
+    "HOLDTIMEANNOUNCE": "Audiodatei für Ansage Wartezeit",
+    "YOUARENEXTANNOUNCE": "Audiodatei für Ansage der ersten Position",
+    "THEREAREANNOUNCE": "1. Teil Audiodatei für Ansage der bereits wartenden Anrufer",
+    "WAITINGCALLSANNOUNCE": "2. Teil Audiodatei für Ansage der bereits wartenden Anrufer",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Audiodatei für die Information zur geschätzten Wartezeit",
+    "MINUTESANNOUNCE": "Audiodatei für die Ansage \"Minuten\"",
+    "MINUTEANNOUNCE": "Audiodatei für die Ansage \"Minute\" ",
+    "SECONDSANNOUNCE": "Audiodatei für die Ansage \"Sekunden\"",
+    "THANKYOUANNOUNCE": "Audiodatei für die Ansage mit Dank für Geduld",
+    "AUTOPAUSE": "Automatische Pause bei keiner Antwort",
+    "AFTERCALLWORK": "Nacharbeit",
+    "AFTERCALLWORKDURATION": "Dauer Nacharbeit",
+    "RINGINUSE": "Klingeln bei Besetzt",
+    "MEMBERDELAY": "Anrufsverzögerung",
+    "TIMEOUTRESTART": "Zeitüberschreitung neu Starten",
+    "MONITORFORMAT": "Format für Gesprächsaufzeichnungen",
+    "SETINTERFACEVARIABLES": "Interface Variabeln definieren",
+    "SETQUEUEVARIABLES": "Warteschlangenvariabeln definieren",
+    "SETQUEUEENTRYVARIABLES": "Variabeln bei Eintritt definieren",
+    "CONTEXT": "Kontext Austritt aus Warteschlange",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
-    "INBOUNDROUTES": "Ankommende Routen",
+    "INBOUNDROUTES": "Eingehende Routen",
     "PHONENUMBER": "Telefonnummer",
-    "ADD_INBOUNDROUTE": "Ankommende Route hinzufügen",
-    "EDIT_INBOUNDROUTE": "Bearbeiten Sie Eingehende Route",
-    "DELETE_INBOUNDROUTE": "Löschen Sie Eingehende Route",
-    "ACTIONS": "Aktionen",
-    "OUTBOUNDROUTES": "Abgehende Routen",
-    "DESTINATIONPATTERN": "Ziel Muster",
-    "ADD_OUTBOUNDROUTE": "Abgehende Route hinzufügen",
-    "EDIT_OUTBOUNDROUTE": "Abgehende Route bearbeiten",
-    "DELETE_OUTBOUNDROUTE": "Abgehende Route löschen",
-    "CUTDIGITS": "Schneiden Sie Ziffern",
-    "RECORDING": "Aufnahme",
+    "ADD_INBOUNDROUTE": "Eingehende Route hinzufügen",
+    "EDIT_INBOUNDROUTE": "Eingehende Route bearbeiten",
+    "DELETE_INBOUNDROUTE": "Eingehende Route löschen",
+    "ACTIONS": "Routing",
+    "OUTBOUNDROUTES": "Ausgehende Routen",
+    "DESTINATIONPATTERN": "Ziel-Pattern",
+    "ADD_OUTBOUNDROUTE": "Ausgehende Route hinzufügen",
+    "EDIT_OUTBOUNDROUTE": "Ausgehende Route bearbeiten",
+    "DELETE_OUTBOUNDROUTE": "Ausgehende Route löschen",
+    "CUTDIGITS": "Ziffern abschneiden",
+    "RECORDING": "Gesprächsaufzeichnung",
     "RECORDINGFORMAT": "Aufzeichnungsformat",
     "INTERNALROUTES": "Interne Routen",
-    "ADD_INTERNALROUTE": "Fügen Sie interne Route",
+    "ADD_INTERNALROUTE": "Interne Route hinzufügen",
     "EDIT_INTERNALROUTE": "Interne Route bearbeiten",
     "DELETE_INTERNALROUTE": "Interne Route löschen",
     "CONTEXTS": "Kontexte",
-    "ADD_CONTEXT": "Rahmen hinzufügen",
-    "EDIT_CONTEXT": "Bearbeiten Kontext",
-    "DELETE_CONTEXT": "Löschen von Rahmen",
+    "ADD_CONTEXT": "Kontext hinzufügen",
+    "EDIT_CONTEXT": "Kontext bearbeiten",
+    "DELETE_CONTEXT": "Kontext löschen",
     "VOICEMAILS": "Voicemails",
     "ADD_VOICEMAIL": "Voicemail hinzufügen",
-    "EDIT_VOICEMAIL": "Bearbeiten von Voicemail",
+    "EDIT_VOICEMAIL": "Voicemail bearbeiten",
     "DELETE_VOICEMAIL": "Voicemail löschen",
-    "FULLNAME": "Voller Name",
+    "FULLNAME": "Vollständiger Name",
     "EMAIL": "E-Mail",
     "MAILBOX": "Mailbox",
-    "PASSWORD": "Kennwort",
+    "PASSWORD": "Passwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "TIMEZONE": "Zeitzone",
-    "ATTACH": "Befestigen",
-    "ENVELOPE": "Umschlag",
+    "ATTACH": "Voicemail als E-Mail-Anhang senden",
+    "ENVELOPE": "Zeit und Datum ansagen",
     "DELETE": "Löschen",
-    "EMAILBODY": "E-Mail-Text",
+    "EMAILBODY": "E-Mail Text",
     "EMAILSUBJECT": "E-Mail Betreff",
-    "MAXSECONDS": "Max Sekunden",
-    "MAXMESSAGES": "Max. Nachrichten",
+    "MAXSECONDS": "Max. Dauer (Sekunden) Voicemail",
+    "MAXMESSAGES": "Max. Nachrichten pro Mailbox",
     "MESSAGES": "Nachrichten",
     "SORT": "Sortieren",
-    "ADD_MUSICONHOLD": "Musik auf Halten",
-    "MUSICONHOLDS": "Musik auf Halten",
-    "EDIT_MUSICONHOLD": "Bearbeiten Musik auf Halten",
-    "DELETE_MUSICONHOLD": "Löschen Sie Musik auf Halten",
-    "DIRECTORY": "Verzeichnis",
+    "ADD_MUSICONHOLD": "Wartemusik hinzufügen",
+    "MUSICONHOLDS": "Wartemusik",
+    "EDIT_MUSICONHOLD": "Wartemusik bearbeiten",
+    "DELETE_MUSICONHOLD": "Wartemusik löschen",
+    "DIRECTORY": "Lokales Verzeichnis",
     "AUDIOFILES": "Audiodateien",
-    "RECORDINGS": "Aufnahmen",
-    "CHANSPY": "ChanSpy",
+    "RECORDINGS": "Aufzeichnungen",
+    "CHANSPY": "Listen-In (Chanspy)",
     "PREFIX": "Präfix",
     "OPTIONS": "Optionen",
-    "AUTH": "Auth",
-    "ADD_CHANSPY": "Chanspy hinzufügen",
-    "EDIT_CHANSPY": "Bearbeiten ChanSpy",
-    "DELETE_CHANSPY": "Löschen ChanSpy",
+    "AUTH": "Authentifizierung",
+    "ADD_CHANSPY": "Listen-In hinzufügen",
+    "EDIT_CHANSPY": "Listen-In bearbeiten",
+    "DELETE_CHANSPY": "Listen-In löschen",
     "AGENTS": "Agenten",
     "TELEPHONES": "Telefone",
     "QUEUES": "Warteschlangen",
-    "QUEUE_CALLS": "Anrufe aus der Warteschlange",
-    "QUEUE_PARAMETERS": "Queue Parameter",
+    "QUEUE_CALLS": "Anrufe in Warteschlange",
+    "QUEUE_PARAMETERS": "Warteschlangen-Parameter",
     "ABANDONED_CALLS": "Abgebrochene Anrufe",
     "OUTBOUND_CALLS": "Ausgehende Anrufe",
-    "AGI": "AGI",
+    "AGI": "Skript",
     "DIAL": "Wählen",
-    "INTERNALDIAL": "Interne Wahl",
-    "EXTERNALDIAL": "Externes Wählen",
-    "RINGGROUP": "Ring Gruppe",
+    "INTERNALDIAL": "Intern wählen",
+    "EXTERNALDIAL": "Extern wählen",
+    "RINGGROUP": "Rufgruppe zuweisen",
     "PLAYBACK": "Wiedergabe",
     "QUEUE": "Warteschlange",
-    "SET": "Einstellen",
+    "SET": "Einstellen (Set)",
     "VOICEMAIL": "Voicemail",
     "GOTO": "Gehe zu",
     "HANGUP": "Auflegen",
-    "CUSTOM": "Benutzerdefinierte",
-    "PROJECT": "Cally-Square Projekt",
-    "TECHNOLOGY/RESOURCE": "Technologie / Ressource",
+    "CUSTOM": "Benutzerdefiniert",
+    "PROJECT": "Call-Flow Projekt",
+    "TECHNOLOGY/RESOURCE": "Technologie / Ressource (z.B.: SIP/1003)",
     "URL": "URL",
-    "EDIT_APP": "Bearbeiten Anwendung",
-    "EDIT_INTERVAL": "Bearbeiten Intervall",
+    "EDIT_APP": "Anwendung bearbeiten",
+    "EDIT_INTERVAL": "Zeitintervall bearbeiten",
     "DELETE_APP": "Anwendung löschen",
-    "INTERVALS": "Intervalle",
+    "INTERVALS": "Zeitintervalle",
     "USER": "Benutzer",
-    "TRUNK": "Amtsleitung",
+    "TRUNK": "SIP-Trunk",
     "PHONE": "Telefon",
     "AUDIO_FILES": "Audiodateien",
-    "ANNOUNCE_OVERRIDES": "Verkünden überschreibt",
+    "ANNOUNCE_OVERRIDES": "Ansage überschreiben",
     "MACRO": "Makro",
     "GOSUB": "GoSub",
     "RULE": "Regel",
     "POSITION": "Position",
     "ANSWER": "Antwort",
     "VALUE": "Wert",
-    "MAILBOX@CONTEXT": "Mailbox @ Rahmen",
-    "EXTENSION": "Erweiterung",
+    "MAILBOX@CONTEXT": "Mailbox@Context",
+    "EXTENSION": "Nebenstelle",
     "PRIORITY": "Priorität",
-    "HANGUP_CAUSE": "Auflegen verursachen",
-    "OUTBOUNDDIAL": "Für ausgehende Anrufe wählen",
+    "HANGUP_CAUSE": "Auflegegrund",
+    "OUTBOUNDDIAL": "Ausgehend wählen",
     "CALLER_ID": "Anrufer-ID",
     "NO_MESSAGE_AVAILABLE": "Keine Meldungen vorhanden",
     "NO_SOUND_AVAILABLE": "Kein Ton verfügbar",
-    "VOICERECORDINGS": "Sprachaufnahmen",
-    "CHANSPIES": "ChanSpy",
-    "VOICE": "Voice",
+    "VOICERECORDINGS": "Sprachaufzeichnungen",
+    "CHANSPIES": "Listen-Ins",
+    "VOICE": "Anrufe",
     "REALTIME": "Echtzeit",
-    "ID": "Id",
+    "ID": "ID",
     "VOICEMAIL_CONTEXT": "Kontext",
     "NO_MOHSOUND_AVAILABLE": "Keine Wartemusik verfügbar",
     "FILE": "Datei",
-    "ADD_MOHSOUND": "Musik hinzufügen Auf Klang",
-    "DOWNLOAD_MOHSOUND": "Download Music On Hold Sound",
-    "DELETE_MOHSOUND": "Löschen Sie Musik auf Halten Sound",
+    "ADD_MOHSOUND": "Wartemusik hinzufügen",
+    "DOWNLOAD_MOHSOUND": "Wartemusik herunterladen",
+    "DELETE_MOHSOUND": "Wartemusik löschen",
     "UNIQUEID": "Eindeutige ID",
     "AGENT": "Agent",
     "TYPE": "Typ",
     "RATING": "Bewertung",
     "AUDIO": "Audio",
     "DATE": "Datum",
-    "NEW_VOICEQUEUE": "Neue Stimme Warteschlange",
+    "NEW_VOICEQUEUE": "Neue Anruf-Warteschlange",
     "NEW_INBOUNDROUTE": "Neue eingehende Route",
     "NEW_OUTBOUNDROUTE": "Neue ausgehende Route",
     "NEW_INTERNALROUTE": "Neue interne Route",
-    "NEW_CONTEXT": "Neuen Kontext",
+    "NEW_CONTEXT": "Neuer Kontext",
     "NEW_VOICEMAIL": "Neue Voicemail",
-    "NEW_MUSICONHOLD": "Neue Musik auf Halten",
-    "NEW_CHANSPY": "Neue ChanSpy",
-    "PENALTY": "Strafe",
-    "ADD_TEAM_TO_VOICEQUEUE": "Team Voice Warteschlange hinzufügen",
-    "ADD_AGENT_TO_VOICEQUEUE": "Agent Voice Warteschlange hinzufügen",
+    "NEW_MUSICONHOLD": "Neue Wartemusik",
+    "NEW_CHANSPY": "Neues Listen-In",
+    "PENALTY": "Verzögerung",
+    "ADD_TEAM_TO_VOICEQUEUE": "Team zu Warteschlange hinzufügen",
+    "ADD_AGENT_TO_VOICEQUEUE": "Agenten zu Warteschlange hinzufügen",
     "EDIT_DIAL": "Kurzwahl bearbeiten",
-    "EDIT_AGI": "Bearbeiten AGI",
+    "EDIT_AGI": "Skript bearbeiten",
     "EDIT_INTERNALDIAL": "Interne Kurzwahl bearbeiten",
     "EDIT_EXTERNALDIAL": "Externe Kurzwahl bearbeiten",
-    "EDIT_RINGGROUP": "Gruppe bearbeiten",
-    "EDIT_PLAYBACK": "Bearbeiten Wiedergabe",
+    "EDIT_RINGGROUP": "Rufgruppe bearbeiten",
+    "EDIT_PLAYBACK": "Wiedergabe bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
     "EDIT_SET": "Bearbeiten",
-    "EDIT_GOTO": "Bearbeiten Gehe zu",
-    "EDIT_HANGUP": "Bearbeiten auflegen",
-    "EDIT_CUSTOM": "Bearbeiten Benutzerdefinierte",
+    "EDIT_GOTO": "\"Gehe-zu\" bearbeiten",
+    "EDIT_HANGUP": "Auflegen bearbeiten",
+    "EDIT_CUSTOM": "Benutzerdef. Einstellungen bearbeiten",
     "DURATION": "Dauer",
     "RECEIVED_AT": "Eingegangen am",
     "YES": "Ja",
-    "NO": "Keine",
-    "HANGUPCAUSE_1": "1 = Nicht zugewiesene Nummer",
-    "HANGUPCAUSE_16": "16=Normail Anruf löschen",
-    "HANGUPCAUSE_17": "17 = Benutzer besetzt",
-    "HANGUPCAUSE_18": "18 = Kein Benutzer reagiert (Telefon Gerät nicht angeschlossen)",
-    "HANGUPCAUSE_21": "21 = Anruf abgewiesen",
-    "HANGUPCAUSE_22": "22 = Anzahl geändert",
-    "HANGUPCAUSE_27": "27 = Ziel nicht in Ordnung",
+    "NO": "Nein",
+    "HANGUPCAUSE_1": "1 = Nummer nicht zugewiesen",
+    "HANGUPCAUSE_16": "16 = Beenden durch Nutzer",
+    "HANGUPCAUSE_17": "17 = Besetzt",
+    "HANGUPCAUSE_18": "18 = Keine Antwort (Nebenstelle nicht verbunden)",
+    "HANGUPCAUSE_21": "21 = Anruf abgelehnt",
+    "HANGUPCAUSE_22": "22 = Nummer geändert",
+    "HANGUPCAUSE_27": "27 = Ziel außer Funktion",
     "HANGUPCAUSE_38": "38 = Netzwerk nicht in der richtigen Reihenfolge",
     "HANGUPCAUSE_41": "41 = Temporärer Ausfall",
-    "RANDOM": "Random",
+    "RANDOM": "Zufall",
     "ALPHABETICAL": "Alphabetisch",
     "NO_APPS_AVAILABLE": "Keine Anwendungen verfügbar",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
-    "DELETE_VOICERECORDING": "Löschen Sprachaufzeichnung",
-    "INTERNAL": "Interne",
-    "PHONE_STATE": "Telefonstatus",
-    "PHONE_STATUS": "Telefonstatus",
+    "DOWNLOAD_VOICERECORDING": "Sprachaufzeichnung herunterladen",
+    "DELETE_VOICERECORDING": "Sprachaufzeichnung löschen",
+    "INTERNAL": "Intern",
+    "PHONE_STATE": "Status Nebenstelle",
+    "PHONE_STATUS": "SIP-Status Nebenstelle",
     "REGISTERED": "Registriert",
-    "UNREGISTERED": "Unregistrierte",
-    "LAGGED": "Zurück",
+    "UNREGISTERED": "Nicht registriert",
+    "LAGGED": "Verzögert",
     "REACHABLE": "Erreichbar",
     "UNREACHABLE": "Nicht erreichbar",
     "UNKNOWN": "Unbekannt",
-    "NOT_INUSE": "Nicht in Gebrauch",
-    "INUSE": "Im Einsatz",
+    "NOT_INUSE": "Nicht in Verwendung",
+    "INUSE": "In Verwendung",
     "BUSY": "Besetzt",
     "INVALID": "Ungültig",
     "UNAVAILABLE": "Nicht verfügbar",
     "RINGING": "Klingeln",
-    "ONHOLD": "Auf Halten",
-    "RING": "Ring",
-    "UP": "Bis",
-    "INFO": "Info",
-    "TRUNKS": "Amtsleitungen",
+    "ONHOLD": "Halten",
+    "RING": "Klingeln",
+    "UP": "Status",
+    "INFO": "Information",
+    "TRUNKS": "SIP-Trunks",
     "REGISTRY": "Registrierung",
-    "NO_REGISTRY": "Keine registry",
+    "NO_REGISTRY": "Keine Registrierung",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
-    "DISPOSITION": "Disposition",
+    "DISPOSITION": "Qualifizierung",
     "WAITING": "Warten",
-    "TALKING": "Sprechen",
-    "DID": "Haben",
+    "TALKING": "Im Gespräch",
+    "DID": "DID",
     "CALLER": "Anrufer",
-    "TOTAL": "Insgesamt",
+    "TOTAL": "Gesamt",
     "ANSWERED": "Beantwortet",
     "ABANDONED": "Abgebrochen",
-    "UNMANAGED": "Nicht verwaltete",
+    "UNMANAGED": "Nicht verwaltet",
     "REDIRECT_TO_NUMBER": "Umleitung zu einer Nummer",
-    "REDIRECT_TO_AGENT": "Umleiten zu: Ein Agent",
+    "REDIRECT_TO_AGENT": "Umleiten zu einem Agenten",
     "CLOSING": "Schließen",
-    "AVG_HOLD_TIME": "Durchschnittl. Warteschleifenzeit",
-    "AVG_DURATION": "Av-Dauer",
-    "AVG_BILLABLE": "Avg Fakturierbaren",
+    "AVG_HOLD_TIME": "Durchschnittl. Wartezeit",
+    "AVG_DURATION": "Durchschnittl. Dauer",
+    "AVG_BILLABLE": "Durchschnittl. fakturierbar",
     "SOURCE": "Quelle",
     "DESTINATION": "Ziel",
     "REJECTED": "Abgelehnt",
     "FAILED": "Fehlgeschlagen",
-    "CALLED": "Aufgerufen",
+    "CALLED": "Angerufen",
     "CONNECTED": "Verbunden",
     "NO_RATING": "Keine Bewertung",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
+    "EDIT_VOICERECORDING": "Sprachaufzeichnung bearbeiten/bewerten",
     "APPLICATION_NAME": "Name der Anwendung",
     "ARGUMENTS": "Argumente",
     "EDIT_QUEUECAMPAIGN": "Kampagne bearbeiten",
     "LISTADD_QUEUECAMPAIGN": "Liste hinzufügen",
-    "BLACKLISTADD_QUEUECAMPAIGN": "Blacklist hinzufügen",
-    "TEAMADD_QUEUECAMPAIGN": "Gruppe hinzufügen",
+    "BLACKLISTADD_QUEUECAMPAIGN": "Schwarze Liste hinzufügen",
+    "TEAMADD_QUEUECAMPAIGN": "Team hinzufügen",
     "AGENTADD_QUEUECAMPAIGN": "Agent hinzufügen",
     "DELETE_QUEUECAMPAIGN": "Kampagne löschen",
-    "DELETE_IVRCAMPAIGN": "Kampagne löschen",
+    "DELETE_IVRCAMPAIGN": "IVR-Kampagne löschen",
     "EDIT_IVRCAMPAIGN": "Kampagne bearbeiten",
     "NEW_IVRCAMPAIGN": "Neue IVR-Kampagne",
-    "ADD_IVRCAMPAIGN": "Hinzufügen IVR-Kampagne",
+    "ADD_IVRCAMPAIGN": "IVR-Kampagne hinzufügen",
     "LISTADD_IVRCAMPAIGN": "Liste hinzufügen",
-    "BLACKLISTADD_IVRCAMPAIGN": "Blacklist hinzufügen",
-    "ENABLED": "Aktiviert",
+    "BLACKLISTADD_IVRCAMPAIGN": "Schwarze Liste hinzufügen",
+    "ENABLED": "Aktiv",
     "READY": "Bereit",
     "PAUSE": "Pause",
-    "UNPAUSE": "Pause",
-    "DEFAULT_PAUSE": "Standard Pause",
-    "AGENTADD_QUEUE": "Kampagne hinzufügen Agent in der Warteschlange",
-    "AGENTSADD_QUEUE": "Agents hinzufügen Kampagne in die Warteschlange",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "UNPAUSE": "Pause abbrechen",
+    "DEFAULT_PAUSE": "Standardpause",
+    "AGENTADD_QUEUE": "Agent zur Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "ALL_LISTS": "Alle Listen",
     "SELECTED_LISTS": "Ausgewählte Listen",
     "WAITING_FOR_AGENT": "Warten auf Agenten",
     "TOTAL_OFFERED": "Insgesamt",
     "RUNNING": "Ausgeführt",
-    "TRUNK_IS_NOT_REACHABLE": "Trunk ist nicht erreichbar.",
-    "AGENTS_NOT_LOGGED": "Agent nicht angemeldet",
+    "TRUNK_IS_NOT_REACHABLE": "SIP-Trunk nicht erreichbar",
+    "AGENTS_NOT_LOGGED": "Keine Agenten angemeldet",
     "NOT_ACTIVE": "Nicht Aktiv",
-    "IS_DISACTIVED": "Ist Disactived",
-    "BACKUPTRUNK": "Backup Trunk",
-    "GLOBALINTERVAL": "Globale Intervall",
-    "RESCHEDULED_CONTACTS": "Neu geplanten Kontakte",
-    "INTERVAL_IS_OVERTIME": "Intervall ist Überstunden",
-    "GLOBAL_INTERVAL_IS_OVERTIME": "Aus Intervall (Global)",
+    "IS_DISACTIVED": "Deaktiviert",
+    "BACKUPTRUNK": "Backup SIP-Trunk",
+    "GLOBALINTERVAL": "Globales Intervall",
+    "RESCHEDULED_CONTACTS": "Erneut geplante Kontakte",
+    "INTERVAL_IS_OVERTIME": "Intervall außerhalb der Begrenzung",
+    "GLOBAL_INTERVAL_IS_OVERTIME": "Globales Intervall außerhalb der Begrenzung",
     "INTERVAL_IS_NULL": "Intervall ist Null",
-    "TIMEZONE_UNKNOW": "Zeitzone Unknow",
+    "TIMEZONE_UNKNOW": "Zeitzone unbekannt",
     "INTERVAL_IS_EMPTY": "Intervall ist leer",
-    "TOTAL_MANAGED": "Insgesamt verwaltet",
-    "OPEN": "Öffnen",
-    "FRESH": "Frische",
+    "TOTAL_MANAGED": "Insgesamt bearbeitet",
+    "OPEN": "Offen",
+    "FRESH": "Neu",
     "CLOSED": "Geschlossen",
     "ALWAYS": "Immer",
-    "NEVER": "Nie",
+    "NEVER": "Niemals",
     "ONLY_IF_OPEN": "Nur wenn offen",
-    "CHECKDUPLICATE": "Duplizieren",
+    "CHECKDUPLICATE": "Auf Duplikate prüfen",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "TIMEOUT": "Timeout",
+    "OF": "von",
+    "TIMEOUT": "Zeitüberschreitung",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
+    "PARTIALPAUSE": "Teilpause",
     "ALL": "Alle",
     "IDLE": "Leerlauf",
     "TIMER": "Timer",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
-    "CALLYSQUAREPROJECTPREVIEW": "Cally Square Projektvorschau",
-    "CALLYSQUAREPROJECTPREVIEW2": "Cally Square Projekt nach Vorschau",
-    "RUNIFHANGUPAGENT": "Führen Sie Cally Square Project nach, auch wenn der Agent den Anruf auflegt",
-    "CALLYSQUAREPROJECT2": "Cally Square Projekt nach der Warteschlange",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "CALLYSQUAREPROJECTPREVIEW": "Call-Flow bei Vorschau ",
+    "CALLYSQUAREPROJECTPREVIEW2": "Call-Flow nach Vorschau",
+    "RUNIFHANGUPAGENT": "Ausführen, nachdem Agent aufgelegt hat",
+    "CALLYSQUAREPROJECT2": "Call-Flow nach Warteschlange",
     "RESET": "Zurücksetzen",
-    "RESETLIST": "Listen zurücksetzen",
-    "RESETLIST_IVRCAMPAIGN": "Listen zurücksetzen",
-    "RESETLIST_QUEUECAMPAIGN": "Listen zurücksetzen",
-    "SELECTALL": "Wählen Sie Alle",
-    "UNSELECTALL": "Alles wiederufen",
+    "RESETLIST": "Liste zurücksetzen",
+    "RESETLIST_IVRCAMPAIGN": "Listen IVR-Kampagne zurücksetzen ",
+    "RESETLIST_QUEUECAMPAIGN": "Listen Kampagne zurücksetzen",
+    "SELECTALL": "Alles auswählen",
+    "UNSELECTALL": "Nichts auswählen",
     "HOPPERWIDGET": "Zusammenfassung",
-    "ABANDONEDCALLS": "Verlassene Warteschlangenanrufe",
-    "CLONE_QUEUECAMPAIGN": "Warteschlangen-Kampagne klonen",
-    "CLONE_IVRCAMPAIGN": "Kampagne klonen",
-    "RANDOMLASTDIGITCALLERIDNUMBER": "Zufällige ausgehende Anrufer-ID-Nummer",
-    "CUTDIGIT": "Ziffern ausschneiden",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "ABANDONEDCALLS": "Abgebrochene Anrufe",
+    "CLONE_QUEUECAMPAIGN": "Kampagne duplizieren",
+    "CLONE_IVRCAMPAIGN": "IVR-Kampagne duplizieren",
+    "RANDOMLASTDIGITCALLERIDNUMBER": "Zufällige letzte Ziffer ausgehende Nummer",
+    "CUTDIGIT": "Ziffern abschneiden",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "RECALLINQUEUE": "Rückruf in der Warteschlange",
     "REFRESH_SCHEDULED_CALLS": "Geplante Anrufe aktualisieren",
     "SCHEDULED_CALLS": "Geplante Anrufe",
-    "SELECT_CAMPAIGN": "Wählen Sie Kampagne",
+    "SELECT_CAMPAIGN": "Kampagne auswählen",
     "SELECT_DATE": "Datum auswählen",
-    "SELECT_TYPE": "Art auswählen",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
-    "ANSWERING_MACHINE": "Antwortmaschine",
-    "MANDATORYDISPOSITION": "Zwingende Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Status der obligatorischen Dispositionspause",
+    "SELECT_TYPE": "Typ auswählen",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "ANSWERING_MACHINE": "Anrufbeantworter",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "Pause während Qualifizierung",
     "ANSWERED_CALLS": "Beantwortete Anrufe",
     "AVG_TALK_TIME": "Durchschnittliche Gesprächszeit",
     "CURRENT_INTERVAL": "Aktuelles Intervall",
     "DATA_COLLECTION_IN_PROGRESSIVE": "Datenerfassung in Progressive",
-    "ONE_CALL_EVERY": "Ein Anruf für jeden",
-    "PREDICTIVEMAXTHRESHOLD": "Voraussagender maximaler Schwellenwert [%]",
-    "PREDICTIVEMINTHRESHOLD": "Predictive Min Threshold [%]",
-    "PREDICTIVE_IS_NOT_RUNNING": "Predictive läuft nicht",
-    "PREDICTIVE_IS_RUNNING": "Predictive läuft",
+    "ONE_CALL_EVERY": "Ein Anruf pro Teilnehmer",
+    "PREDICTIVEMAXTHRESHOLD": "Max Schwellwert für Predictive (%)",
+    "PREDICTIVEMINTHRESHOLD": "Min Schwellwert für Predictive (%)",
+    "PREDICTIVE_IS_NOT_RUNNING": "Predictive-Dialing nicht aktiv",
+    "PREDICTIVE_IS_RUNNING": "Predictive-Dialing aktiv",
     "PREVIOUS_INTERVAL": "Vorheriges Intervall",
-    "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Vorhersage-Info anzeigen",
-    "THRESHOLDS": "Schwellenwerte",
-    "TOTAL_CALLS": "Anrufe insgesamt",
-    "ABANDONEDMAXRETRY": "Max Wiederholungen",
-    "ABANDONEDRETRYTIME": "Wiederholungszeit [min]",
-    "AGENTREJECT": "Agent ablehnen",
-    "AGENTREJECTMAXRETRY": "Max Wiederholungen",
-    "AGENTREJECTRETRYTIME": "Wiederholungszeit [min]",
-    "DROP": "Fallen",
-    "DROPMAXRETRY": "Max Wiederholungen",
-    "DROPRETRYTIME": "Wiederholungszeit [min]",
-    "MACHINE": "Maschine",
-    "MACHINEMAXRETRY": "Max Wiederholungen",
-    "MACHINERETRYTIME": "Wiederholungszeit [min]",
-    "NOSUCHNUMBER": "Keine solche Nummer",
-    "NOSUCHNUMBERMAXRETRY": "Max Wiederholungen",
-    "NOSUCHNUMBERRETRYTIME": "Wiederholungszeit [min]",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
+    "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Informationen bei Vorschau zeigen",
+    "THRESHOLDS": "Schwellwerte",
+    "TOTAL_CALLS": "Anrufe gesamt",
+    "ABANDONEDMAXRETRY": "Max. Wiederversuche bei \"Abandon\"",
+    "ABANDONEDRETRYTIME": "Frühester Wiederversuch nach (Min)",
+    "AGENTREJECT": "Ablehnung durch Agenten",
+    "AGENTREJECTMAXRETRY": "Max. Wiederversuche bei \"Ablehnung durch Agenten\"",
+    "AGENTREJECTRETRYTIME": "Frühester Wiederversuch nach (Min)",
+    "DROP": "Aufgelegt vom System (Drop-Call)",
+    "DROPMAXRETRY": "Max Wiederversuche bei Drop-Calls",
+    "DROPRETRYTIME": "Frühester Wiederversuch nach (Min)",
+    "MACHINE": "Anrufbeantworter",
+    "MACHINEMAXRETRY": "Max Wiederversuche bei Anrufbeantworter",
+    "MACHINERETRYTIME": "Frühester Wiederversuch nach (Min)",
+    "NOSUCHNUMBER": "Gegenstelle nicht gefunden",
+    "NOSUCHNUMBERMAXRETRY": "Max Wiederversuche bei Gegenstelle nicht gefunden",
+    "NOSUCHNUMBERRETRYTIME": "Frühester Wiederversuch nach (Min)",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
+    "SECOND_LEVEL_DISPOSITION": "Qualifizierung 2. Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Qualifikation 3. Ebene",
     "PREVIEW_AUTO_RECALL_ME": "Rückrufe automatisieren",
     "PREVIEW_RECALL_ME_REMINDER": "Recall Me Erinnerung",
     "ADDITIONALPHONES": "Zusätzliche Telefone",
index 0ef1225..d234e7a 100644 (file)
 {
   "OPENCHANNEL": {
     "TEXT": "Text",
-    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
-    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
+    "TIMES": "Zeitstempel",
+    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
     "NAME": "Name",
-    "OPENCHANNELQUEUES": "Offener Kanal Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "OPENCHANNELQUEUES": "Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche",
     "ERRORS": {
-      "TEXT_REQUIRED": "Das Feld \"Text\" ist erforderlich",
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "AGENT_TIMEOUT_REQUIRED": "Der Agent Timeout ist erforderlich",
-      "MOTIONADDRESS_REQUIRED": "Die Adresse ist erforderlich",
-      "MOTIONADDRESS_MUST_VALID_URL": "Die Adresse muss in einem gültigen Format",
-      "ACCEPTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
-      "REJECTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "CLOSEURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "REPLYURI_REQUIRED": "Die Antwort URL ist erforderlich",
-      "REPLYURI_MUST_VALID_URL": "Die Antwort URL muss im gültigen Format geschrieben werden",
-      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
-      "CONDITION_REQUIRED": "Der Zustand ist erforderlich",
-      "TRUEPRIORITY_REQUIRED": "Die wahre Priorität ist erforderlich",
-      "FALSEPRIORITY_REQUIRED": "Die falsche Priorität ist erforderlich",
-      "AGENT_REQUIRED": "Pflichtfeld",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
-      "DISPOSITION_REQUIRED": "Pflichtfeld",
-      "QUEUE_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Schlüssel muss eine maximale Länge von {{max}}",
-      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
-      "VALUE_REQUIRED": "Pflichtfeld",
-      "COMMAND_REQUIRED": "Pflichtfeld",
-      "LIST_REQUIRED": "Pflichtfeld",
-      "KEY_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "NAME_MUST_VALID_PATTERN": "Falsches Format",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
-      "TAG_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
-      "ACCESSKEYID_REQUIRED": "Zugangsschlüssel-ID ist erforderlich",
-      "BOTNAME_REQUIRED": "Der Bot-Name ist erforderlich",
-      "SECRETACCESSKEY_REQUIRED": "Zugangsschlüssel geheim ist erforderlich",
-      "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
-      "PRIVATEKEY_REQUIRED": "Pflichtfeld",
-      "PROJECTID_REQUIRED": "Pflichtfeld"
+      "TEXT_REQUIRED": "Text erforderlich",
+      "NAME_REQUIRED": "Name erforderlich",
+      "AGENT_TIMEOUT_REQUIRED": "Zeitüberschreitung Agent erforderlich",
+      "MOTIONADDRESS_REQUIRED": "Adresse erforderlich",
+      "MOTIONADDRESS_MUST_VALID_URL": "Ungültiges Format Adresse",
+      "ACCEPTURL_MUST_VALID_URL": "Ungültiges Format URL",
+      "TIMEOUT_REQUIRED": "Zeitüberschreitung erforderlich",
+      "REJECTURL_MUST_VALID_URL": "Ungültiges Format URL bei Erhalt",
+      "CLOSEURL_MUST_VALID_URL": "Ungültiges Format URL bei Schließen",
+      "REPLYURI_REQUIRED": "URL bei Antwort erforderlich",
+      "REPLYURI_MUST_VALID_URL": "Ungültiges Format URL bei Antwort",
+      "PRIORITY_REQUIRED": "Priorität erforderlich",
+      "CONDITION_REQUIRED": "Bedingung erforderlich",
+      "TRUEPRIORITY_REQUIRED": "Priorität bei zutreffender Bedingung erforderlich",
+      "FALSEPRIORITY_REQUIRED": "Priorität bei nicht zutreffender Bedingung erforderlich",
+      "AGENT_REQUIRED": "Agent erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss größer oder gleich sein als",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität muss größer oder gleich sein als",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität bei Bedingung erfüllt muss größer oder gleich sein als",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität bei Bedingung nicht erfüllt muss größer oder gleich sein als",
+      "DISPOSITION_REQUIRED": "Qualifizierung erforderlich",
+      "QUEUE_REQUIRED": "Warteschlange erforderlich",
+      "KEY_MAX_LENGTH": "Wert darf nicht länger als {{max}} Zeichen sein",
+      "TEXT_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
+      "VALUE_REQUIRED": "Wert erforderlich",
+      "COMMAND_REQUIRED": "Eingabe erforderlich",
+      "LIST_REQUIRED": "Liste erforderlich",
+      "KEY_REQUIRED": "Schlüssel erforderlich",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung Agent muss größer oder gleich sein als",
+      "NAME_MUST_VALID_PATTERN": "Ungültiges Format Name",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss kleiner oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung Agent muss kleiner oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Auf zugewiesenen Agenten warten erforderlich",
+      "TAG_REQUIRED": "Tag erforderlich",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss größer oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss kleiner oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Zeitüberschreitung Agententransfer erforderlich",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss größer oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss kleiner oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Zeitüberschreitung Warteschlangentransfer erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "PausenID während Qualifizierung erforderlich",
+      "ACCESSKEYID_REQUIRED": "Zugangsschlüssel-ID erforderlich",
+      "BOTNAME_REQUIRED": "BOT-Name erforderlich",
+      "SECRETACCESSKEY_REQUIRED": "Geheimer Schlüssel erforderlich",
+      "CLIENTEMAIL_REQUIRED": "Kunden E-Mail erforderlich",
+      "PRIVATEKEY_REQUIRED": "Privater Schlüssel erforderlich",
+      "PROJECTID_REQUIRED": "ProjektID erforderlich"
     },
-    "STRATEGY": "Strategie",
+    "STRATEGY": "Verteilungsstrategie",
     "AGENT": "Agent",
-    "GOTO": "Gehe zu",
-    "GOTOIF": "Gotoif",
-    "NOOP": "Noop",
+    "GOTO": "GeheZu (GoTo)",
+    "GOTOIF": "GeheZuWenn (GoToIf)",
+    "NOOP": "Log erstellen (NoOp)",
     "QUEUE": "Warteschlange",
-    "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_GOTO": "Bearbeiten Gehe zu",
-    "EDIT_NOOP": "Bearbeiten Noop",
-    "EDIT_GOTOIF": "Bearbeiten Gotoif",
+    "EDIT_AGENT": "Agenten bearbeiten",
+    "EDIT_GOTO": "\"GeheZu\" bearbeiten",
+    "EDIT_NOOP": "Log-Erstellung bearbeiten",
+    "EDIT_GOTOIF": "Bedingung bearbeiten und Priorität zuweisen",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "CONDITION": "Zustand",
-    "TRUEPRIORITY": "Wahre Priorität",
-    "FALSEPRIORITY": "Falsche Priorität",
+    "CONDITION": "Bedingung",
+    "TRUEPRIORITY": "Priorität, wenn erfüllt (true)",
+    "FALSEPRIORITY": "Priorität, wenn nicht erfüllt (false)",
     "VALUE": "Wert",
     "PRIORITY": "Priorität",
-    "AGENT_TIMEOUT": "Agent Timeout",
+    "AGENT_TIMEOUT": "Zeitüberschreitung Agent",
     "DESCRIPTION": "Beschreibung",
-    "ADD_OPENCHANNELQUEUE": "Fügen Sie im Offenen Kanal Warteschlange",
-    "EDIT_OPENCHANNELQUEUE": "Offener Kanal Warteschlange bearbeiten",
-    "DELETE_OPENCHANNELQUEUE": "Löschen der Warteschlange im Offenen Kanal",
-    "PENALTY": "Strafe",
+    "ADD_OPENCHANNELQUEUE": "Warteschlange hinzufügen",
+    "EDIT_OPENCHANNELQUEUE": "Warteschlange bearbeiten",
+    "DELETE_OPENCHANNELQUEUE": "Warteschlange löschen",
+    "PENALTY": "Verzögerung",
     "TEAMADD_OPENCHANNELQUEUE": "Team zur Warteschlange hinzufügen",
-    "AGENTADD_OPENCHANNELQUEUE": "Agent zur Warteschlange hinzufügen",
+    "AGENTADD_OPENCHANNELQUEUE": "Agenten zur Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CREATED_AT": "Erstellt am",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
     "GENERAL": "Allgemein",
-    "OPENCHANNELACCOUNTS": "Offener Kanal Konten",
+    "OPENCHANNELACCOUNTS": "Konten offener Kanal",
     "MOTIONADDRESS": "Motion Adresse",
-    "ADD_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account hinzufügen",
-    "EDIT_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account bearbeiten",
-    "DELETE_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account löschen.",
+    "ADD_OPENCHANNELACCOUNT": "Konto offener Kanal hinzufügen",
+    "EDIT_OPENCHANNELACCOUNT": "Konto offener Kanal bearbeiten",
+    "DELETE_OPENCHANNELACCOUNT": "Konto offener Kanal löschen",
     "API": "API",
-    "DISPOSITIONS": "Bestimmungen",
+    "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Aktionen",
+    "ACTIONS": "Routing",
     "LIST": "Liste",
     "FIDELITY": "Treue",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Die Methode",
+    "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "In der Nähe",
-    "CLOSEMETHOD": "In der Nähe Methode",
-    "CLOSEURL": "Der URL",
-    "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "CLOSE": "Schließen",
+    "CLOSEMETHOD": "Methode schließen",
+    "CLOSEURL": "URL schließen",
+    "SELECTED": "Ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "OPENCHANNEL": "Offener Kanal",
-    "ID": "Id",
-    "TIMEOUT": "Timeout",
-    "OPENCHANNELDISPOSITIONS": "Offener Kanal Verfügungen",
-    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Keine offenen Kanal Dispositionen verfügbar",
-    "NEW_OPENCHANNELDISPOSITION": "Neue Offene Kanal inspektion",
-    "ADD_OPENCHANNELDISPOSITION": "Fügen Sie im Offenen Kanal inspektion",
-    "EDIT_OPENCHANNELDISPOSITION": "Bearbeiten Sie im Offenen Kanal inspektion",
-    "DELETE_OPENCHANNELDISPOSITION": "Löschen Sie im Offenen Kanal inspektion",
-    "NEW_OPENCHANNELQUEUE": "Neue Offene Kanal Warteschlange",
-    "NEW_OPENCHANNELACCOUNT": "Neue Open Channel Account",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "ID": "ID",
+    "TIMEOUT": "Zeitüberschreitung",
+    "OPENCHANNELDISPOSITIONS": "Qualifizierungen offener Kanal",
+    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Keine Qualifizierungen verfügbar",
+    "NEW_OPENCHANNELDISPOSITION": "Neue Qualifizierung",
+    "ADD_OPENCHANNELDISPOSITION": "Qualifizierung hinzufügen",
+    "EDIT_OPENCHANNELDISPOSITION": "Qualifizierung bearbeiten",
+    "DELETE_OPENCHANNELDISPOSITION": "Qualifizierung löschen",
+    "NEW_OPENCHANNELQUEUE": "Neue Warteschlange offener Kanal",
+    "NEW_OPENCHANNELACCOUNT": "Neues Konto offener Kanal",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "REPLYURI": "Antwort URL",
-    "RECEIVEURI": "Erhalten URL",
+    "RECEIVEURI": "URL bei Erhalt",
     "HELP": {
-      "RECEIVEURI": "Dies ist die automatisch generierte API-String müssen Sie die Nachrichten in Ihrem offenen Kanal zu erhalten von der externen Anwendung (POST-Methode verwendet werden muss). Drücken Sie die Zwischenablage, um Sie in die Zwischenablage zu kopieren.",
-      "REPLYURI": "Dies ist die URL der Offene Kanal wird beim Senden oder Beantworten von Nachrichten",
+      "RECEIVEURI": "Automatisch generierter API-String, um die Nachrichten über den offenen Kanal zu erhalten (POST-Methode). Zum Kopieren in die Zwischenablage klicken",
+      "REPLYURI": "URL des offenen Kanals zum Senden und Empfangen von Nachrichten",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "LIST": "Contact Manager Liste zu verknüpfen von Kontakten",
       "TOKEN": "Fügen Sie diese Eigenschaft als Abfragezeichenfolge in Ihrer Web-Service-URL hinzu. Weitere Informationen finden Sie im Dokument doc <a target = \"_ blank\" href = \"https://wiki.xcallymotion.com/display/XMV/New Channels Configuration Steps",
-      "MANDATORYDISPOSITION": "Zwingende Disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
-      "WELCOMEMESSAGE": "Dies ist die erste Nachricht, die an das Schütz gesendet wird"
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
+      "WELCOMEMESSAGE": "Willkommensnachricht beim Eintreffen der ersten Anfrage"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "CONTACT": "Kontakt",
-    "STARTEDAT": "Gestartet am",
+    "STARTEDAT": "Startdatum",
     "STATUS": "Status",
     "CLOSED": "Geschlossen",
-    "OPENED": "Öffnen",
-    "OPEN": "Öffnen",
+    "OPENED": "Geöffnet",
+    "OPEN": "Offen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
-    "INTERACTIONS": "Wechselwirkungen",
+    "INTERACTIONS": "Interaktionen",
     "ALL": "Alle",
-    "SELECT_STATUS": "Wählen Sie einen Status",
+    "SELECT_STATUS": "Status auswählen",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "CLOSEDAT": "Geschlossen",
-    "DISPOSITION": "Disposition",
-    "NOTES": "Hinweise",
-    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
-    "SELECT_ACCOUNT": "Wählen Sie ein Konto",
-    "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Gotop bearbeiten",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
-    "INFO": "Info",
+    "DISPOSITION": "Qualifizierung",
+    "NOTES": "Anmerkungen",
+    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
+    "SELECT_ACCOUNT": "Konto auswählen",
+    "GOTOP": "Priorität zuweisen (GoToP)",
+    "EDIT_GOTOP": "GoToP bearbeiten",
+    "EDIT_CLOSE": "Verhalten bei Schließen bearbeiten",
+    "INFO": "Information",
     "KEY": "Schlüssel",
     "REALTIME": "Echtzeit",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Gebrauch",
+    "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "Im Einsatz",
+    "IN_USE": "In Verwendung",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Interne",
-    "PHONE_STATE": "Telefonstatus",
-    "PHONE_STATUS": "Telefonstatus",
+    "FULLNAME": "Vollständiger Name",
+    "INTERNAL": "Intern",
+    "PHONE_STATE": "Status Nebenstelle",
+    "PHONE_STATUS": "SIP-Status Nebenstelle",
     "PAUSE": "Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agent zu Offenen Kanal Warteschlange hinzufügen",
-    "UNPAUSE": "Pause beenden",
-    "DEFAULT_PAUSE": "Standard Pause",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
+    "UNPAUSE": "Pause abbrechen",
+    "DEFAULT_PAUSE": "Standardpause",
     "LOGGED_IN": "Angemeldet",
-    "PAUSED": "Angehalten",
+    "PAUSED": "in Pause",
     "READY": "Bereit",
     "WAITING": "Warten",
-    "VOICE": "Voice",
+    "VOICE": "Anrufe",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "SMS": "SMS",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Agenten, die Offenen Kanal Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_OPENCHANNELQUEUE": "In Echtzeit, offenen Kanal Warteschlange",
-    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
+    "GOTOREALTIME_OPENCHANNELQUEUE": "Direkt zur Echtzeit-Warteschlange",
+    "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
-    "SPYINTERACTION": "Spy",
-    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Wechselwirkungen gehen",
-    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
+    "SPYINTERACTION": "Anzeigen",
+    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu den Interaktionen gehen",
+    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
     "DELETE": "Löschen",
-    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
-    "NEW_OPENCHANNELCANNEDANSWER": "Neue vordefinierte Antwort",
-    "ADD_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "EDIT_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
-    "DELETE_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort löschen",
-    "DELIVERYREPORTURL": "Zustellungsbericht-URL",
+    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
+    "NEW_OPENCHANNELCANNEDANSWER": "Neue Textvorlage",
+    "ADD_OPENCHANNELCANNEDANSWER": "Textvorlage hinzufügen",
+    "EDIT_OPENCHANNELCANNEDANSWER": "Textvorlage bearbeiten",
+    "DELETE_OPENCHANNELCANNEDANSWER": "Textvorlage löschen",
+    "DELIVERYREPORTURL": "URL für Zustellungsbericht",
     "DELETE_INTERACTION": "Interaktion löschen",
-    "COMMAND": "Befehl",
+    "COMMAND": "Eingabe",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
-    "VARIABLE": "Variable",
+    "VARIABLE": "Variabel",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klingen",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Sound abspielen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
-    "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
-    "ADVANCED": "Fortgeschritten",
+    "INSERT_MESSAGE_HERE": "Textnachricht hier eingeben",
+    "WAITFORTHEASSIGNEDAGENT": "Auf zugewiesenen Agenten warten",
+    "ADVANCED": "Erweitert",
     "PROXY": "Proxy",
-    "TOKEN": "Zeichen",
+    "TOKEN": "Token",
     "EDIT_TAG": "Tag bearbeiten",
-    "TAG": "Etikett",
-    "AGENTADD_OPENCHANNELACCOUNT": "Fügen Sie Agent zu Openchannel Account hinzu",
-    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
-    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
-    "MAPKEY": "Karten Schlüssel",
+    "TAG": "Tag",
+    "AGENTADD_OPENCHANNELACCOUNT": "Konto offener Kanal hinzufügen",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
+    "CANNED_ANSWER_SEARCH": "Nach Textvorlagen suchen",
+    "MAPKEY": "MAP-KEY",
     "SEND": "Senden",
-    "TO": "Zu",
-    "AGENTTRANSFER": "Agent Transfer",
+    "TO": "An",
+    "AGENTTRANSFER": "Transfer an Agenten erlauben",
     "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung für Agententransfer",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
-    "QUEUETRANSFERTIMEOUT": "Warteschlangenübertragungs-Timeout",
-    "TRANSFER": "Transfer",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
-    "DOWNLOAD_INTERACTION": "Herunterladen",
-    "OPENCHANNELCANNEDANSWERS": "Vordefinierte Antworten",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
-    "MANDATORYDISPOSITION": "Zwingende Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
-    "DIALOGFLOW": "Dialogablauf",
-    "EDIT_DIALOGFLOW": "Bearbeiten Sie die Dialogflow-Konfiguration",
+    "QUEUETRANSFER": "Transfer in Warteschlange erlauben",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
+    "TRANSFER": "Weiterleitung",
+    "CANNEDANSWERS": "Textvorlagen",
+    "DOWNLOAD_INTERACTION": "Interaktion herunterladen",
+    "OPENCHANNELCANNEDANSWERS": "Textvorlagen offener Kanal",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "PausenID während Qualifizierung",
+    "DIALOGFLOW": "Google DialogFlow",
+    "EDIT_DIALOGFLOW": "DialogFlow bearbeiten",
     "LANGUAGE": "Sprache",
-    "WELCOMEMESSAGE": "Willkommen Messsage",
+    "WELCOMEMESSAGE": "Willkommensnachricht",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
     "AMAZONLEX": "AmazonLex",
-    "BOTNAME": "Bot-Name",
-    "EDIT_AMAZONLEX": "Bearbeiten Sie die Lex-Konfiguration",
-    "LEXREGION": "Region",
-    "SECRETACCESSKEY": "Zugangsschlüssel geheim",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
+    "BOTNAME": "BOT-Name",
+    "EDIT_AMAZONLEX": "Lex-Konfiguration bearbeiten",
+    "LEXREGION": "Lex Region",
+    "SECRETACCESSKEY": "Geheimer Schlüssel",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung angehalten",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
     "LASTMESSAGE": "Letzte Nachricht",
-    "CLIENTEMAIL": "Kunden-E-Mail",
+    "CLIENTEMAIL": "Kunden E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privat Schlüssel",
+    "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Hinweis"
+    "NOTE": "Notiz"
   }
 }
index f0036b7..2e79caa 100644 (file)
@@ -9,43 +9,43 @@
     "AGENTTRANSFER": "Transferência de Agente",
     "AGENTTRANSFERTIMEOUT": "Tempo limite de transferência do agente",
     "TAG": "Tag",
-    "EDIT_TAG": "Editar Tag",
+    "EDIT_TAG": "Editar tag",
     "ADVANCED": "Avançado",
     "PROXY": "Proxy",
     "TOKEN": "Token",
     "WAITFORTHEASSIGNEDAGENT": "Aguarde o agente atribuído",
     "INSERT_MESSAGE_HERE": "Insira sua mensagem de texto aqui",
     "NOTIFICATION": "Notificação",
-    "NOTIFICATIONSOUND": "Som",
-    "NOTIFICATIONSHAKE": "Tremer",
-    "NOTIFICATIONTEMPLATE": "Modelo",
+    "NOTIFICATIONSOUND": "Som de notificação",
+    "NOTIFICATIONSHAKE": "Vibrar para notificar",
+    "NOTIFICATIONTEMPLATE": "Modelo de notificação",
     "SYSTEM": "Sistema",
-    "EDIT_SYSTEM": "Editar Sistema",
+    "EDIT_SYSTEM": "Editar sistema",
     "COMMAND": "Comando",
     "VARIABLE": "Variável",
     "DELETE": "Excluir",
-    "CANNEDANSWERS": "Respostas Prontas",
-    "OPENCHANNELCANNEDANSWERS": "Respostas Prontas",
+    "CANNEDANSWERS": "Respostas prontas",
+    "OPENCHANNELCANNEDANSWERS": "Respostas prontas do Open Channel",
     "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Não há respostas prontas disponíveis",
-    "NEW_OPENCHANNELCANNEDANSWER": "Nova Resposta Pronta",
-    "ADD_OPENCHANNELCANNEDANSWER": "Adicionar resposta Pronta",
-    "EDIT_OPENCHANNELCANNEDANSWER": "Editar",
+    "NEW_OPENCHANNELCANNEDANSWER": "Nova resposta pronta",
+    "ADD_OPENCHANNELCANNEDANSWER": "Adicionar resposta pronta",
+    "EDIT_OPENCHANNELCANNEDANSWER": "Editar respostas prontas do Open Channel",
     "DELETE_OPENCHANNELCANNEDANSWER": "Excluir",
     "DELIVERYREPORTURL": "URL do relatório de entrega",
     "TAGS": "Tags",
     "SPYINTERACTION": "Espião",
-    "NO_AGENT_ONLINE": "Sem Agente Online",
+    "NO_AGENT_ONLINE": "Sem agente Online",
     "GOTOREALTIME_OPENCHANNELQUEUE": "Ir para a fila de Open Channel em tempo real",
     "PARTIALPAUSE": "Pausa parcial",
     "BUSY": "Ocupado",
     "TIMER": "Cronômetro",
     "IDLE": "Ocioso",
     "CAPACITY": "Capacidade",
-    "REALTIME": "Tempo Real",
+    "REALTIME": "Tempo real",
     "TEXT": "Texto",
     "TIMES": "Número de vezes por interação",
     "EDIT_AUTOREPLY": "Editar resposta automática",
-    "AUTOREPLY": "Resposta automatica",
+    "AUTOREPLY": "Resposta automática",
     "NAME": "Nome",
     "OPENCHANNELQUEUES": "Filas Open Channel",
     "SEARCH_FOR_ANYONE": "Procurar",
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
     "QUEUE": "Fila",
-    "EDIT_AGENT": "Editar Agente",
+    "EDIT_AGENT": "Editar agente",
     "EDIT_GOTO": "Editar Goto",
     "EDIT_NOOP": "Editar Noop",
     "EDIT_GOTOIF": "Editar Gotoif",
-    "EDIT_QUEUE": "Editar Fila",
+    "EDIT_QUEUE": "Editar fila",
     "CONDITION": "Condição",
     "TRUEPRIORITY": "Verdadeira prioridade",
-    "FALSEPRIORITY": "Falsa Prioridade",
+    "FALSEPRIORITY": "Prioridade falsa",
     "VALUE": "Valor",
     "PRIORITY": "Prioridade",
     "AGENT_TIMEOUT": "Tempo limite do agente",
     "DESCRIPTION": "Descrição",
-    "ADD_OPENCHANNELQUEUE": "Adicionar fila de canal aberto",
+    "ADD_OPENCHANNELQUEUE": "Adicionar fila",
     "EDIT_OPENCHANNELQUEUE": "Editar fila do Open Channel",
     "DELETE_OPENCHANNELQUEUE": "Excluir fila do Open Channel",
     "PENALTY": "Prioridade",
-    "TEAMADD_OPENCHANNELQUEUE": "Adicionar equipe para abrir a fila do Open Channel",
-    "AGENTADD_OPENCHANNELQUEUE": "Adicionar agente para abrir a fila do Open Channel",
-    "ALL_AGENTS": "Todos os Agentes",
-    "SELECTED_AGENTS": "Agentes Selecionados",
+    "TEAMADD_OPENCHANNELQUEUE": "Adicionar equipe a fila do Open Channel",
+    "AGENTADD_OPENCHANNELQUEUE": "Adicionar agente à fila do Openchannel",
+    "ALL_AGENTS": "Todos os agentes",
+    "SELECTED_AGENTS": "Agentes selecionados",
     "CREATED_AT": "Criado em",
     "SAVE": "Salvar",
     "SETTINGS": "Configurações",
     "LIST": "Lista",
     "FIDELITY": "Fidelidade",
     "ACCEPT": "Aceitar",
-    "ACCEPTMETHOD": "Aceite o Método",
+    "ACCEPTMETHOD": "Aceite o método",
     "ACCEPTURL": "Aceitar URL",
     "REJECT": "Rejeitar",
-    "REJECTMETHOD": "Rejeitar Método",
+    "REJECTMETHOD": "Rejeitar método",
     "REJECTURL": "Rejeitar URL",
     "CLOSE": "Fechar",
-    "CLOSEMETHOD": "Fechar Método",
+    "CLOSEMETHOD": "Método de fechamento",
     "CLOSEURL": "Fechar URL",
     "SELECTED": "Selecionado",
     "SELECT_ALL": "Selecionar todos",
     "ADD_OPENCHANNELDISPOSITION": "Adicionar disposição do Open Channel",
     "EDIT_OPENCHANNELDISPOSITION": "Editar disposição do Open Channel",
     "DELETE_OPENCHANNELDISPOSITION": "Excluir disposição do Open Channel",
-    "NEW_OPENCHANNELQUEUE": "Nova Fila do Open channel",
-    "NEW_OPENCHANNELACCOUNT": "Nova Conta do Open channel",
+    "NEW_OPENCHANNELQUEUE": "Nova fila do Open channel",
+    "NEW_OPENCHANNELACCOUNT": "Nova conta do Open channel",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "ALL_TEAMS": "Todas as equipes",
-    "SELECTED_TEAMS": "Equipes Selecionadas",
-    "REPLYURI": "URL de resposta",
-    "RECEIVEURI": "Receber URL",
+    "SELECTED_TEAMS": "Equipes selecionadas",
+    "REPLYURI": "URI de resposta",
+    "RECEIVEURI": "URI recebido",
     "HELP": {
       "TOKEN": "Adicione esta propriedade como string de consulta em sua URL do serviço da Web. Para obter mais detalhes, consulte o documento <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\"> aqui </ um>",
       "RECEIVEURI": "Cadeia de caracteres da API gerada automaticamente para ser usada para receber mensagens dentro de seu canal aberto a partir do aplicativo externo (usando o método POST). Clique no botão da área de transferência para copiá-lo",
       "REPLYURI": "O URL que o canal aberto irá chamar ao enviar ou responder a uma mensagem. Para obter mais detalhes, consulte o documento <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\"> aqui </ um>",
       "NAME": "Somente números, letras e caracteres específicos (._) são suportados",
-      "LIST": "Lista de contatos do gerenciador usada para associar contatos",
+      "LIST": "Lista de contatos",
       "MANDATORYDISPOSITION": "Disposição obrigatória",
       "MANDATORYDISPOSITIONPAUSEID": "Pausar para usar se a disposição obrigatória estiver ativada",
       "WELCOMEMESSAGE": "Esta é a primeira mensagem enviada ao contator"
     },
     "PAGE": "Página",
-    "ROWSPERPAGE": "Linhas por Página",
+    "ROWSPERPAGE": "Linhas por página",
     "OF": "do",
     "CONTACT": "Contato",
     "STARTEDAT": "Começou às",
     "SELECT_ACCOUNT": "Selecione uma conta",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Editar Gotop",
-    "EDIT_CLOSE": "Editar Fechar",
+    "EDIT_CLOSE": "Editar fechamento",
     "INFO": "Informação",
-    "KEY": "Key",
+    "KEY": "Chave",
     "UNKNOWN": "Desconhecido",
     "UNREGISTERED": "Não registrado",
     "UNAVAILABLE": "Indisponível",
     "IN_USE": "Em uso",
     "AGENTS": "Agentes",
     "QUEUES": "Filas",
-    "FULLNAME": "Nome Completo",
+    "FULLNAME": "Nome completo",
     "INTERNAL": "Interno",
     "PHONE_STATE": "Estado do telefone",
     "PHONE_STATUS": "Status do telefone",
     "PAUSE": "Pausa",
     "LOGOUT": "Sair",
     "AGENTADD_QUEUE": "Adicionar agente à fila de Open Channel",
-    "UNPAUSE": "Finalizar Pausa",
+    "UNPAUSE": "Sair da pausa",
     "DEFAULT_PAUSE": "Pausa padrão",
     "LOGGED_IN": "Logado",
     "PAUSED": "Pausado",
     "MAIL": "Email",
     "SMS": "SMS",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Adicionar agentes à fila de Open Channel",
-    "INTERACTIONS_OPENCHANNELACCOUNT": "Ir para Interações",
-    "REFRESH_INTERACTIONS": "Atualizar Interações",
+    "AGENTSADD_QUEUE": "Adicionar agentes à fila do Open Channel",
+    "INTERACTIONS_OPENCHANNELACCOUNT": "Ir para interações",
+    "REFRESH_INTERACTIONS": "Atualizar interações",
     "DELETE_INTERACTION": "Excluir interação",
     "AGENTADD_OPENCHANNELACCOUNT": "Adicionar agente à conta do Openchannel",
-    "CANNED_ANSWER_SEARCH": "Digite um texto para pesquisar uma resposta automática",
-    "CANNED_ANSWER_NOT_FOUND": "Nenhuma resposta automática foi encontrada",
+    "CANNED_ANSWER_SEARCH": "Digite um texto para pesquisar uma resposta pronta",
+    "CANNED_ANSWER_NOT_FOUND": "Nenhuma resposta pronta foi encontrada",
     "SEND": "Enviar",
     "TO": "Para",
-    "MAPKEY": "Map Key",
+    "MAPKEY": "Mapkey",
     "TEAMS_ASSOCIATION": "Associação de equipes",
     "MANDATORYDISPOSITION": "Disposição obrigatória",
-    "MANDATORYDISPOSITIONPAUSEID": "Pausar para usar se a disposição obrigatória estiver ativada",
-    "DIALOGFLOW": "Fluxo de Diálogo",
-    "EDIT_DIALOGFLOW": "Editar configuração do fluxo de diálogo",
+    "MANDATORYDISPOSITIONPAUSEID": "ID de pausa de disposição obrigatória",
+    "DIALOGFLOW": "Dialogflow",
+    "EDIT_DIALOGFLOW": "Editar configuração do Dialogflow",
     "LANGUAGE": "Língua",
     "WELCOMEMESSAGE": "Mensagem de boas-vindas",
     "ACCESSKEYID": "ID da chave de acesso",
     "AMAZONLEX": "AmazonLex",
-    "BOTNAME": "Nome do bot",
+    "BOTNAME": "Nome do BOT",
     "EDIT_AMAZONLEX": "Editar configuração de Lex",
-    "LEXREGION": "Região",
+    "LEXREGION": "Região de LEX",
     "SECRETACCESSKEY": "Segredo da chave de acesso",
     "TOOLTIP_SCREENRECORDING_OFF": "Gravação de tela disponível",
     "TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento",
     "LASTMESSAGE": "Última mensagem",
     "CLIENTEMAIL": "Email do cliente",
     "DIALOGFLOWV2": "Dialogflow V2",
-    "EDIT_DIALOGFLOWV2": "Editar Dialogflow V2",
+    "EDIT_DIALOGFLOWV2": "Editar DialogflowV2",
     "PRIVATEKEY": "Chave privada",
     "PROJECTID": "ID do projeto",
     "ADD_NOTE": "Adicionar nota",
index aa643d6..6b076e6 100644 (file)
@@ -1,69 +1,69 @@
 {
   "SETTINGS": {
-    "PREFERRED": "Preferred Logo",
-    "DEFAULT_PREFERRED": "Default Preferred Logo",
+    "PREFERRED": "Bevorzugtes Logo",
+    "DEFAULT_PREFERRED": "Standard bevorzugtes Logo",
     "MOTIONBAR": "Motionbar",
     "WEBRTC": "WebRTC",
     "RELOAD": "Neu laden",
-    "VERIFY": "Überprüfen Sie, ob",
+    "VERIFY": "Einstellungen testen",
     "INTERFACE": "Schnittstelle",
     "UPDATING": "Aktualisierung",
     "REMOTE_VERSION": "Remote-Version",
     "NO_NEW_VERSION_AVAILABLE": "Keine neue Version verfügbar",
-    "TOP_N_PROCESSES": "Top {{Wert}} Prozesse",
-    "SYSTEM": "System",
-    "FILE_SYSTEM": "File System",
+    "TOP_N_PROCESSES": "Top {{value}} Prozesse",
+    "SYSTEM": "System und Server",
+    "FILE_SYSTEM": "Dateisystem",
     "PROCESSES": "Prozesse",
-    "MOUNT_POINT": "Berg",
-    "AVG_LOAD": "AVG Laden",
+    "MOUNT_POINT": "Mount",
+    "AVG_LOAD": "Durchschnittliche Auslastung",
     "TOTAL": "Gesamt",
-    "USED": "Verwendet",
-    "FREE": "Kostenlos",
+    "USED": "in Verwendung",
+    "FREE": "Frei",
     "NAME": "Name",
     "STATE": "Zustand",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
-    "MESSAGING": "Sms",
+    "MESSAGING": "SMS",
     "FAX": "Fax",
     "OPENCHANNEL": "Offener Kanal",
     "AGENTS": "Agenten",
     "USERS": "Benutzer",
-    "TELEPHONES": "Telefone",
+    "TELEPHONES": "Endgeräte",
     "STAFF": "Personal",
-    "CHANNELS": "Tv",
+    "CHANNELS": "Kanäle",
     "MODULES": "Module",
-    "CM": "Contacts Manager",
+    "CM": "Kontaktmanager",
     "DIALER": "Dialer",
     "JSCRIPTY": "Jscripty",
-    "CUSTOM": "Anpassung",
-    "UPDATE": "Update",
+    "CUSTOM": "WhiteLabel",
+    "UPDATE": "Aktualisieren",
     "OTHERS": "Andere",
     "SETTINGS": "Einstellungen",
     "GENERAL": "Allgemein",
-    "SMTP": "SMTP",
+    "SMTP": "SMTP-Einstellungen",
     "NETWORKS": "Netzwerke",
-    "UPDATES": "Aktuelles",
+    "UPDATES": "System-Updates",
     "LICENSE": "Lizenz",
-    "ID": "Id",
-    "MIN_INTERNAL": "Min. Interne",
-    "MIN_MAILBOX": "Min Mailbox",
+    "ID": "ID",
+    "MIN_INTERNAL": "Min. interne Durchwahl",
+    "MIN_MAILBOX": "Min Mailbox-ID",
     "INSTALLED_AT": "Installiert",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
-    "EDIT_GENERAL": "Allgemein bearbeiten",
-    "SECURE_PASSWORD": "Sicheres Kennwort",
+    "SEARCH_FOR_ANYONE": "Suche",
+    "EDIT_GENERAL": "Bearbeiten Allgemein",
+    "SECURE_PASSWORD": "Sicheres Passwort",
     "LOGO": "Logo",
-    "DEFAULT_LOGO": "Standard Logo",
-    "DEFAULT_LOGIN_LOGO": "Login Logo",
-    "WHITELABEL": "White Label",
+    "DEFAULT_LOGO": "Logo für Anwendung",
+    "DEFAULT_LOGIN_LOGO": "Logo auf Anmeldebildschirm",
+    "WHITELABEL": "WhiteLabel",
     "CREATED_AT": "Erstellt am",
     "SAVE": "Speichern",
-    "SMTP_SERVICE": "Service",
+    "SMTP_SERVICE": "SMTP-Dienst",
     "SMTP_HOST": "SMTP-Host",
     "SMTP_USERNAME": "SMTP-Benutzername",
     "DESCRIPTION": "Beschreibung",
     "SMTP_PASSWORD": "SMTP-Passwort",
     "SMTP_PORT": "SMTP-Port",
-    "SMTP_SECURE": "Sichere",
+    "SMTP_SECURE": "Sicheren SMTP verwenden",
     "TYPE": "Typ",
     "ADDRESS": "Adresse",
     "NEW_NETWORK": "Neues Netzwerk",
     "HELP": {
       "ADDRESS": "Die Adresse des Netzwerks",
       "LOCALNETADDRESS": "IP-Adresse/Subnetzmaske",
-      "SMTP_SECURE": "Bei true wird die Verbindung TLS verwenden, wenn eine Verbindung zu Server",
-      "SMTP_USERNAME": "Benutzername für die Authentifizierung verwendet werden",
-      "SMTP_PASSWORD": "Kennwort für die Authentifizierung verwendet werden",
-      "EMAILADDRESS": "Geben Sie die E-Mail-Adresse der Nachricht (von)",
+      "SMTP_SECURE": "TLS für SMTP deaktivieren/aktivieren",
+      "SMTP_USERNAME": "Nutzername für die Authentifizierung",
+      "SMTP_PASSWORD": "Passwort für die Authentifizierung",
+      "EMAILADDRESS": "E-Mail Adresse für die Authentifizierung (Von-Feld)",
       "SECURITY_SUITE": "Aktiviert das sichere Passwort-Format, das obligatorische Zurücksetzen des Passworts nach der ersten Anmeldung und den Ablauf des Passworts nach 90 Tagen",
-      "MOTIONBARREMEMBERME": "Aktivieren / Deaktivieren der Funktion \"Merken\" in Motion Phonebar",
+      "MOTIONBARREMEMBERME": "Aktivieren/Deaktivieren der Funktion \"Merken\" in MotionPhonebar",
       "RTLSUPPORT": "Aktiviert die RTL-Unterstützung für Arabisch, Persisch und Hebräisch",
-      "DEFAULTSCREENRECORDINGPATH": "Geben Sie den Pfad ein, in dem die Bildschirmaufzeichnungsdateien auf dem Agent-Computer gespeichert werden sollen (leer lassen für den Standardpfad für den Videoordner).",
-      "LOGINMAILFREQUENCY": "Bitte denken Sie daran, den EMAIL-Dienst jedes Mal neu zu starten, wenn dieser Parameter geändert wurde",
+      "DEFAULTSCREENRECORDINGPATH": "Interner Pfad für die Speicherung von Bildschirmaufzeichnungen (leer lassen für den Standardpfad des Videoordners)",
+      "LOGINMAILFREQUENCY": "Bitte den E-Mail Dienst nach Änderung der Frequenz neu starten",
       "PASSWORD": "Passwort",
       "USERNAME": "Nutzername",
-      "ENFORCE_PASSWORD_HISTORY": "Aktiviert die Validierung anhand zuvor verwendeter Kennwörter",
-      "PASSWORD_HISTORY_LIMIT": "Anzahl der zuletzt zu überprüfenden eindeutigen Kennwörter",
-      "SEARCH_ON_ENTER_KEY": "Beginnen Sie erst mit der Suche, nachdem der Agent die Eingabetaste gedrückt hat",
-      "INTERACTIONS_RELOAD_TIMEOUT": "Zeitintervall in Sekunden, nach dem Interaktionen neu geladen werden (0 = Echtzeitaktualisierung)",
+      "ENFORCE_PASSWORD_HISTORY": "Passwortverlauf prüfen",
+      "PASSWORD_HISTORY_LIMIT": "Max. Anzahl der zuletzt verwendeten Passwörter",
+      "SEARCH_ON_ENTER_KEY": "Suche nach Drücken der Eingabetaste starten",
+      "INTERACTIONS_RELOAD_TIMEOUT": "Zeitintervall in Sekunden, in welchem Interaktionen neu geladen werden (0 = Echtzeitaktualisierung)",
       "PRIVACY_POLICY": "Anzahl der Zeichen, die durch ein Sternchen (*) ersetzt werden (0 = alle Zeichen)",
       "CLIENT_SECRET": "Das Geheimnis ist nach dem Speichern der Konfiguration nicht mehr sichtbar. Bewahren Sie es sicher auf, wenn Sie es woanders verwenden möchten.",
       "LIMIT_TABS": "Maximale Anzahl möglicher geöffneter Interaktionsregisterkarten",
       "PREVIEW_RECALLME_REMINDER_INTERVAL": "Zeitintervall in Minuten, vor dem eine Benachrichtigung an den Agenten gesendet wird, die ihn über den durchzuführenden Vorschaurückruf informiert"
     },
     "ERRORS": {
-      "ADDRESS_REQUIRED": "Die Adresse ist erforderlich",
-      "MIN_INTERNAL_REQUIRED": "Die minimale interne ist erforderlich",
-      "MIN_MAILBOX_REQUIRED": "Die Mailbox ist erforderlich",
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "HEADER_WHITELABEL_REQUIRED": "Die whitelabel ist erforderlich",
+      "ADDRESS_REQUIRED": "Adresse erforderlich",
+      "MIN_INTERNAL_REQUIRED": "Minimale interne Durchwahl erforderlich",
+      "MIN_MAILBOX_REQUIRED": "Mailbox erforderlich",
+      "NAME_REQUIRED": "Name erforderlich",
+      "HEADER_WHITELABEL_REQUIRED": "WhiteLabel erforderlich",
       "LOCALNETADDRESS_REQUIRED": "Localnet Adresse erforderlich",
-      "LOCALNETADDRESS_MUST_VALID_PATTERN": "Localnet gültig sein muss eine gültige Muster",
-      "ADDRESS_MUST_VALID_PATTERN": "Adresse muss eine gültige Muster sein",
-      "ACCOUNTNAME_REQUIRED": "Das Konto Name ist erforderlich",
-      "SMTP_USERNAME_REQUIRED": "Der Benutzername ist erforderlich",
-      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
-      "SMTP_HOST_REQUIRED": "Der Host wird benötigt",
-      "SMTP_PORT_REQUIRED": "Der Port ist erforderlich",
-      "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Min-internen muss größer als oder gleich",
-      "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Min-Mailbox muss größer als oder gleich",
-      "PAGE_TITLE_REQUIRED": "Pflichtfeld",
-      "EMAIL_REQUIRED": "Pflichtfeld",
-      "PLAN_REQUIRED": "Pflichtfeld",
-      "MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Falsches Format",
-      "MOTIONBARAUTOUPDATERURL_REQUIRED": "Pflichtfeld",
-      "EMAIL_MUST_VALID": "Falsches Format",
-      "LICENSE_REQUIRED": "Pflichtfeld",
-      "CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "CHATTIMEOUT_REQUIRED": "Pflichtfeld",
-      "ALLOWEDLOGINATTEMPTS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "ALLOWEDLOGINATTEMPTS_REQUIRED": "Pflichtfeld",
-      "BLOCKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "BLOCKDURATION_REQUIRED": "Pflichtfeld",
-      "LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "LOGINMAILFREQUENCY_REQUIRED": "Pflichtfeld",
-      "USERNAME_REQUIRED": "Pflichtfeld",
-      "ACCESSKEY_REQUIRED": "Pflichtfeld",
-      "BUCKET_REQUIRED": "Pflichtfeld",
-      "LANGUAGE_REQUIRED": "Pflichtfeld",
-      "SECRETACCESSKEY_REQUIRED": "Pflichtfeld",
-      "SENTIMENTACCOUNT_REQUIRED": "Pflichtfeld",
-      "SENTIMENTREGION_REQUIRED": "Pflichtfeld",
-      "SERVICE_REQUIRED": "Pflichtfeld",
-      "TRANSCRIBEACCOUNT_REQUIRED": "Pflichtfeld",
-      "TRANSCRIBEREGION_REQUIRED": "Pflichtfeld",
+      "LOCALNETADDRESS_MUST_VALID_PATTERN": "Ungültiges Format Localnet Adresse",
+      "ADDRESS_MUST_VALID_PATTERN": "Ungültiges Format Adresse",
+      "ACCOUNTNAME_REQUIRED": "Kontoname erforderlich",
+      "SMTP_USERNAME_REQUIRED": "Benutzername erforderlich",
+      "PASSWORD_REQUIRED": "Passwort erforderlich",
+      "SMTP_HOST_REQUIRED": "SMTP-Host erforderlich",
+      "SMTP_PORT_REQUIRED": "SMTP-Port erforderlich",
+      "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min. interne Durchwahl muss größer oder gleich sein als",
+      "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min. Mailbox muss größer oder gleich sein als",
+      "PAGE_TITLE_REQUIRED": "Seitentitel erforderlich",
+      "EMAIL_REQUIRED": "E-Mail erforderlich",
+      "PLAN_REQUIRED": "Plan erforderlich",
+      "MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Ungültiges Format URL",
+      "MOTIONBARAUTOUPDATERURL_REQUIRED": "URL MotionBar erforderlich",
+      "EMAIL_MUST_VALID": "Ungültiges Format E-Mail",
+      "LICENSE_REQUIRED": "Lizenz erforderlich",
+      "CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "CHATTIMEOUT_REQUIRED": "Zeitüberschreitung Chat erforderlich",
+      "ALLOWEDLOGINATTEMPTS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "ALLOWEDLOGINATTEMPTS_REQUIRED": "Max. Anzahl Anmeldeversuche erforderlich",
+      "BLOCKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "BLOCKDURATION_REQUIRED": "Dauer der Sperrung erforderlich",
+      "LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "LOGINMAILFREQUENCY_REQUIRED": "Frequenz für Abrufen E-Mail erforderlich",
+      "USERNAME_REQUIRED": "Nutzername erforderlich",
+      "ACCESSKEY_REQUIRED": "Zugangsschlüssel erforderlich",
+      "BUCKET_REQUIRED": "Eingabe erforderlich",
+      "LANGUAGE_REQUIRED": "Sprache erforderlich",
+      "SECRETACCESSKEY_REQUIRED": "Geheimer Zugangsschlüssel erforderlich",
+      "SENTIMENTACCOUNT_REQUIRED": "Konto für Sentimentanalyse erforderlich",
+      "SENTIMENTREGION_REQUIRED": "Region für Sentimentanalyse erforderlich",
+      "SERVICE_REQUIRED": "Dienst erforderlich",
+      "TRANSCRIBEACCOUNT_REQUIRED": "Konto zur Transkribierung erforderlich",
+      "TRANSCRIBEREGION_REQUIRED": "Region für Transkribierung erforderlich",
       "FIELD_REQUIRED": "Pflichtfeld",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Pflichtfeld",
       "WRONG_FORMAT": "Falsches Format",
     "EDIT_NETWORK": "Netzwerk bearbeiten",
     "DELETE_NETWORK": "Netzwerk löschen",
     "BACK": "Zurück",
-    "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECTED": "Ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "EXPIRATION_DATE": "Ablaufdatum",
     "REQUEST_LICENSE": "Lizenz anfordern",
     "EMAIL": "E-Mail",
     "SEND": "Senden",
     "PLAN": "Plan",
-    "MONTH_TO_MONTH": "Von Monat zu Monat",
-    "MOTION_PROCESS_MANAGEMENT": "Motion Process Management",
+    "MONTH_TO_MONTH": "Monatlich",
+    "MOTION_PROCESS_MANAGEMENT": "Prozessverwaltung",
     "USEFUL_COMMANDS": "Nützliche Befehle",
     "COMMAND": "Befehl",
     "PM2_LIST": "Eine Liste aller Prozesse",
     "PM2_START": "Starten eines Prozesses durch ID oder Name",
-    "PM2_STOP": "Stoppen Sie einen Prozess-ID oder Name, fügen Sie \"Alle\", um alle aktiven Prozesse",
+    "PM2_STOP": "Stoppen Sie einen Prozess-ID oder Name, fügen Sie\n\"All\", um alle aktiven Prozesse zu stoppen",
     "PM2_RESTART": "Starten Sie einen Prozess, durch ID oder Name",
     "PM2_LOGS": "Alle Protokolle Stream Datei, oder spezifische eines Prozess-ID oder Name",
     "PASSWORD": "Passwort",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "STUNADDR": "Die STUN-Adresse",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "STUNADDR": "STUN-Adresse",
     "CHANGELOG": "Changelog",
     "CURRENT_VERSION": "Aktuelle Version",
-    "CUSTOMIZATIONS": "Anpassungen",
+    "CUSTOMIZATIONS": "WhiteLabel",
     "LOCALNETADDRESS": "Localnet Adresse",
     "NEW_VERSION": "Neue Version",
     "TRIAL_VERSION": "Testversion",
     "TOKEN": "Token",
-    "NEW_TOKEN_DETECTED": "Neue Token erkannt",
-    "EXPIRATION_GRAY_PERIOD": "Grau Zeitraum Ablauf",
-    "NEW_TOKEN": "Neue Token",
+    "NEW_TOKEN_DETECTED": "Neuer Token erkannt",
+    "EXPIRATION_GRAY_PERIOD": "Ablauf Testperiode",
+    "NEW_TOKEN": "Neuer Token",
     "PRICES": "Preise",
     "UPDATE_LICENSE": "Lizenz aktualisieren",
-    "LOGOLOGIN": "Login Logo",
-    "EXPIRATION_REASON": "Ablauf Grund",
-    "GLOBAL": "Global",
+    "LOGOLOGIN": "Login-Logo",
+    "EXPIRATION_REASON": "Ablaufgrund",
+    "GLOBAL": "Globale Einstellungen",
     "SMTP_AUTHENTICATION": "Authentifizierung",
-    "LICENSE_REQUEST_SENT": "Vielen Dank! Die Lizenzierung Team wird Sie in Ihrem Konto so schnell wie möglich um Ihre Wünsche zu genehmigen: erhalten Sie eine e-Mail, wenn die Änderungen wirksam werden. Lesen Sie bitte für weitere Informationen an License@xcally.com.",
-    "ACCOUNTNAME": "Konto Name",
-    "EMAILADDRESS": "E-mail Adresse",
-    "OLD_TOKEN": "Alte Token",
+    "LICENSE_REQUEST_SENT": "Vielen Dank! Die Lizenz wurde angefragt. Bei Fragen wenden Sie sich bitte an unseren Support.",
+    "ACCOUNTNAME": "Kontoname",
+    "EMAILADDRESS": "E-Mail Adresse",
+    "OLD_TOKEN": "Alter Token",
     "SEND_EMAIL_TO": "E-Mail senden an",
-    "JIRA_ERROR_MESSAGE": "Fehler während der Lizenz anfordern. Bitte kontaktieren Sie unser Team bei License@xcally.com mit Ihrer Anfrage",
+    "JIRA_ERROR_MESSAGE": "Fehler bei der Anforderung der Lizenz. Bitte kontaktieren Sie unseren Support.",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "SMTP_SSL": "SMTP-SSL",
+    "OF": "von",
+    "SMTP_SSL": "SMTP verwendet SSL-Verschlüsselung",
     "ENABLED": "Aktiviert",
     "DISABLED": "Deaktiviert",
     "UNLIMITED_CHANNELS": "Unbegrenzte Anzahl von Kanälen",
-    "PAGE_TITLE": "Titel der Seite",
-    "DEFAULT_PAGE_TITLE": "Standard Seitentitel",
-    "CALLYSQUARE": "Cally Square",
-    "DEFAULT_HEADER_WHITELABEL": "White Label Standardfußzeile",
-    "HEADER_WHITELABEL": "White Label Fußzeile",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Ihre Maschine eindeutige Id wurde aufgrund einer Änderung an Ihrem System aktualisiert. Kontakt xCALLY Motion Support Team Ihre alte und Ihre neue uuid zu senden.",
-    "CALL_RECORDING_ENCRYPTION": "Sprachaufnahme-Verschlüsselung",
-    "TURNADDR": "Adresse",
-    "TURN_USERNAME": "TURN Benutzername",
-    "TURN_PASSWORD": "Passwort ändern",
-    "PERPETUAL": "Unaufhörlich",
+    "PAGE_TITLE": "Seitentitel",
+    "DEFAULT_PAGE_TITLE": "Standard-Seitentitel",
+    "CALLYSQUARE": "CallySquare",
+    "DEFAULT_HEADER_WHITELABEL": "WhiteLabel Standardfußzeile",
+    "HEADER_WHITELABEL": "WhiteLabel Fußzeile",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "Die eindeutige ID des Systems wurde aufgrund der Änderungen aktualisiert. Bitte kontaktieren Sie unseren Support.",
+    "CALL_RECORDING_ENCRYPTION": "Verschlüsselung Gesprächsaufzeichnungen",
+    "TURNADDR": "TURN-Adresse",
+    "TURN_USERNAME": "TURN-Nutzername",
+    "TURN_PASSWORD": "TURN-Passwort",
+    "PERPETUAL": "Dauerlizenz",
     "SECURITY_SUITE": "Sicherheitssuite",
     "ANNUALLY": "Jährlich",
-    "MOTIONBARAUTOUPDATER": "Automatischer Updater",
-    "MOTIONBARAUTOUPDATERURL": "Automatische Updater-URL",
-    "JAWS": "Jaws",
+    "MOTIONBARAUTOUPDATER": "Automatisches Updates MotionBar",
+    "MOTIONBARAUTOUPDATERURL": "URL für automatische Updates",
+    "JAWS": "JAWS",
     "ENABLEEMAILPREVIEW": "E-Mail-Vorschau aktivieren",
     "REPORT": "Bericht",
-    "SPLIT": "Bericht teilen",
-    "SPLITSIZECSV": "Berichtgröße teilen [CSV-Datensätze]",
-    "SPLITSIZEPDF": "Split-Berichtsgröße [PDF-Datensätze]",
-    "SPLITSIZEXLSX": "Split-Berichtsgröße [XLSX-Datensätze]",
-    "AGENTOMNIDESKTOPINTERFACE": "Agent Omni Desktopschnittstelle",
+    "SPLIT": "Teilen",
+    "SPLITSIZECSV": "Berichtgröße teilen [CSV-Format]",
+    "SPLITSIZEPDF": "Berichtgröße teilen [PDF-Format]",
+    "SPLITSIZEXLSX": "Berichtgröße teilen [XLSX-Format]",
+    "AGENTOMNIDESKTOPINTERFACE": "Omnichannel Agentenanwendung",
     "MESSAGESALIGNMENT": "Nachrichtenausrichtung",
-    "ENTER_LICENSE": "Geben Sie Ihre Lizenz ein",
-    "EXPIRATION_CHANGED_ADVISE": "Wenden Sie sich an das xCALLY Motion License Team und senden Sie Ihre alte und Ihre neue Uuid.",
+    "ENTER_LICENSE": "Lizenz einfügen",
+    "EXPIRATION_CHANGED_ADVISE": "Bitte wenden Sie sich an unseren Support und halten Sie Ihre alte und neue UUID bereit.",
     "EXPIRATION_REASON_MESSAGE_DISABLED": "Ihre Lizenz wurde deaktiviert.",
     "UPDATE_LICENSE_MANUALLY": "Möchten Sie Ihre Lizenz manuell aktualisieren?",
     "ADDONS": "Add-Ons",
     "SESSIONS": "Sitzungen",
-    "VIRTUAL": "Plaudern",
-    "VOICE": "Stimme",
-    "CHATTIMEOUT": "Chat schließt Interaktionszeitlimit",
-    "MOTIONBARREMEMBERME": "Erinnere dich an mich",
+    "VIRTUAL": "Chat",
+    "VOICE": "Sprachanrufe",
+    "CHATTIMEOUT": "Automatisches Schließen Chat nach",
+    "MOTIONBARREMEMBERME": "Anmeldedaten merken",
     "RTLSUPPORT": "RTL-Unterstützung",
-    "DEFAULTSCREENRECORDINGPATH": "Bildschirmaufzeichnungspfad",
-    "SCREENRECORDING": "Bildschirmaufnahme",
+    "DEFAULTSCREENRECORDINGPATH": "Pfad für Bildschirmaufzeichnungen",
+    "SCREENRECORDING": "Bildschirmaufzeichnung",
     "VIDEO": "Video",
-    "BLOCKDURATION": "Minuten vor dem automatischen Entsperren warten",
+    "BLOCKDURATION": "Dauer automatisches Sperren (Minuten)",
     "SECURITY": "Sicherheit",
-    "ALLOWEDLOGINATTEMPTS": "Zulässige Anmeldeversuche vor dem Sperren des Benutzers / Agenten",
+    "ALLOWEDLOGINATTEMPTS": "Zulässige Anmeldeversuche vor dem Sperren des Benutzers/Agenten",
     "DEFAULT_FAVICON": "Standard-Favicon",
     "FAVICON": "Favicon",
-    "IMAPGENERALSETTINGS": "IMAP",
-    "LOGINMAILFREQUENCY": "Anmelde-Mail-Häufigkeit (Sek.)",
+    "IMAPGENERALSETTINGS": "IMAP-Einstellungen",
+    "LOGINMAILFREQUENCY": "Frequenz Mail-Login (Sek.)",
     "USERNAME": "Nutzername",
     "GOOGLE_SSO_ENABLED": "Google SSO aktiviert",
     "SSO": "SSO",
     "AI": "A.I. Werkzeuge",
     "AITOOLS": "A.I. Werkzeuge",
     "APPZONE": "App Zone",
-    "BUCKET": "Eimer",
+    "BUCKET": "Korb",
     "DELETE": "Löschen",
     "DELETE_CLOUDPROVIDER": "Konto löschen",
     "EDIT_CLOUDPROVIDER": "Konto bearbeiten",
     "LANGUAGE": "Sprache",
     "NEW_CLOUDPROVIDER": "Neues Konto",
     "SECRETACCESSKEY": "Geheimer Zugangsschlüssel",
-    "SENTIMENTACCOUNT": "Sentiment Analysis Account",
-    "SENTIMENTANALYSIS": "Stimmungsanalyse",
-    "SENTIMENTREGION": "Sentiment Analysis Region",
-    "SERVICE": "Bedienung",
+    "SENTIMENTACCOUNT": "Konto für Sentimentanalyse",
+    "SENTIMENTANALYSIS": "Sentimentanalyse",
+    "SENTIMENTREGION": "Region für Sentimentanalyse",
+    "SERVICE": "Dienst",
     "TRANSCRIBE": "Transkribieren",
-    "TRANSCRIBEACCOUNT": "Konto transkribieren",
-    "TRANSCRIBEREGION": "Region transkribieren",
+    "TRANSCRIBEACCOUNT": "Transkription Konto",
+    "TRANSCRIBEREGION": "Transkription Region",
     "WHATSAPP": "WhatsApp Connector",
-    "ENFORCE_PASSWORD_HISTORY": "Kennwortverlauf erzwingen",
-    "PASSWORD_HISTORY_LIMIT": "Kennwortverlaufslimit",
-    "SEARCH_ON_ENTER_KEY": "Suchen Sie mit der Eingabetaste",
-    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Zeitüberschreitung beim erneuten Laden von Chat-Interaktionen",
+    "ENFORCE_PASSWORD_HISTORY": "Speichern Passwortverlauf",
+    "PASSWORD_HISTORY_LIMIT": "Max gespeicherte Passwörter",
+    "SEARCH_ON_ENTER_KEY": "Suche durch Drücken der Eingabetaste starten",
+    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Zeitlimit für das erneute Laden von Chat-Interaktionen",
     "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "Zeitlimit für das erneute Laden von E-Mail-Interaktionen",
-    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Zeitüberschreitung beim erneuten Laden von Open Channel-Interaktionen",
-    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "Zeitüberschreitung beim erneuten Laden von SMS-Interaktionen",
-    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "WhatsApp Connector-Interaktionen laden das Zeitlimit neu",
-    "PRIVACY_POLICY_EMAIL": "Datenschutzerklärung für E-Mail-Adressen",
-    "PRIVACY_POLICY_NAME": "Datenschutzerklärung für Namen",
-    "PRIVACY_POLICY_NUMBER": "Datenschutzerklärung für Nummern",
-    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Beenden Sie die Aufzeichnung bei Sprachanrufweiterleitung",
+    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Zeitlimit für das erneute Laden von Open Channel-Interaktionen",
+    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "Zeitlimit für das erneute Laden von SMS-Interaktionen",
+    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "Zeitlimit für das erneute Laden von WhatsApp-Interaktionen ",
+    "PRIVACY_POLICY_EMAIL": "Maskierung von E-Mail Adressen",
+    "PRIVACY_POLICY_NAME": "Maskierung von Kundennamen",
+    "PRIVACY_POLICY_NUMBER": "Maskierung von Nummern",
+    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Gesprächsaufzeichnung bei Transfer stoppen",
     "AD_SSO_ENABLED": "Active Directory SSO aktiviert",
     "APPLICATION_ID": "Anwendungs-ID",
     "AUTHENTICATE": "Authentifizieren",
index cddbe68..9a01507 100644 (file)
@@ -3,72 +3,72 @@
     "KEY": "Schlüssel",
     "NAME": "Name",
     "SMSQUEUES": "SMS-Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
-    "STRATEGY": "Strategie",
+    "SEARCH_FOR_ANYONE": "Suche",
+    "STRATEGY": "Verteilungsstrategie",
     "ERRORS": {
-      "KEY_MAX_LENGTH": "Schlüssel muss eine maximale Länge von {{max}}",
-      "KEY_REQUIRED": "Schlüssel ist erforderlich",
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "AGENT_TIMEOUT_REQUIRED": "Der Agent Timeout ist erforderlich",
-      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
-      "SID_REQUIRED": "Die SID ist erforderlich",
-      "TOKEN_REQUIRED": "Das Token ist erforderlich",
-      "USERNAME_REQUIRED": "Der Benutzername ist erforderlich",
-      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
-      "MOTIONADDRESS_REQUIRED": "Die Adresse ist erforderlich",
-      "MOTIONADDRESS_MUST_VALID_URL": "Die Adresse muss in einem gültigen Format",
-      "ACCEPTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
-      "REJECTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "CLOSEURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "TYPE_REQUIRED": "Der Typ ist erforderlich",
-      "LIST_REQUIRED": "Die Liste ist erforderlich",
-      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
-      "CONDITION_REQUIRED": "Der Zustand ist erforderlich",
-      "TRUEPRIORITY_REQUIRED": "Die wahre Priorität ist erforderlich",
-      "FALSEPRIORITY_REQUIRED": "Die falsche Priorität ist erforderlich",
-      "AGENT_REQUIRED": "Der Agent ist erforderlich",
-      "QUEUE_REQUIRED": "Die Warteschlange ist erforderlich",
-      "DISPOSITION_REQUIRED": "Die Disposition ist erforderlich",
-      "ACCOUNTSID_REQUIRED": "Konto SID ist erforderlich",
-      "AUTHTOKEN_REQUIRED": "Auth Token ist erforderlich",
-      "MOTIONPROXY_REQUIRED": "Pflichtfeld",
-      "MOTIONPROXY_MUST_VALID_URL": "Falsches Format",
-      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
-      "TEXT_REQUIRED": "Pflichtfeld",
-      "VALUE_REQUIRED": "Pflichtfeld",
-      "SENDERSTRING_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
-      "SENDERSTRING_MUST_VALID_PATTERN": "Falsches Format",
-      "METHOD_REQUIRED": "Pflichtfeld",
-      "AUTHID_REQUIRED": "Pflichtfeld",
-      "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "NAME_MUST_VALID_PATTERN": "Falsches Format",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
-      "TAG_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "APIKEY_REQUIRED": "Pflichtfeld",
-      "BASEURL_REQUIRED": "Pflichtfeld",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
-      "ACCESSKEYID_REQUIRED": "Die Zugangsschlüssel-ID ist erforderlich",
-      "BOTNAME_REQUIRED": "Bot Name ist erforderlich",
-      "SECRETACCESSKEY_REQUIRED": "Zugriffsschlüsselgeheimnis ist erforderlich",
-      "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
-      "PRIVATEKEY_REQUIRED": "Pflichtfeld",
-      "PROJECTID_REQUIRED": "Pflichtfeld",
-      "ACCOUNTID_REQUIRED": "Pflichtfeld",
-      "APPLICATIONID_REQUIRED": "Pflichtfeld"
+      "KEY_MAX_LENGTH": "Wert darf nicht länger als {{max}} Zeichen sein",
+      "KEY_REQUIRED": "Schlüssel erforderlich",
+      "NAME_REQUIRED": "Name erforderlich",
+      "AGENT_TIMEOUT_REQUIRED": "Zeitüberschreitung Agent erforderlich",
+      "PHONE_REQUIRED": "Telefonnummer erforderlich",
+      "SID_REQUIRED": "SID erforderlich",
+      "TOKEN_REQUIRED": "Token erforderlich",
+      "USERNAME_REQUIRED": "Nutzername erforderlich",
+      "PASSWORD_REQUIRED": "Passwort erforderlich",
+      "MOTIONADDRESS_REQUIRED": "Adresse erforderlich",
+      "MOTIONADDRESS_MUST_VALID_URL": "Ungültiges Format Adresse",
+      "ACCEPTURL_MUST_VALID_URL": "Ungültiges Format URL",
+      "TIMEOUT_REQUIRED": "Zeitüberschreitung erforderlich",
+      "REJECTURL_MUST_VALID_URL": "Ungültiges Format URL bei Ablehnen",
+      "CLOSEURL_MUST_VALID_URL": "Ungültiges Format URL bei Schließen",
+      "TYPE_REQUIRED": "Typ erforderlich",
+      "LIST_REQUIRED": "Liste erforderlich",
+      "PRIORITY_REQUIRED": "Priorität erforderlich",
+      "CONDITION_REQUIRED": "Bedingung erforderlich",
+      "TRUEPRIORITY_REQUIRED": "Priorität bei zutreffender Bedingung erforderlich",
+      "FALSEPRIORITY_REQUIRED": "Priorität bei nicht zutreffender Bedingung erforderlich",
+      "AGENT_REQUIRED": "Agent erforderlich",
+      "QUEUE_REQUIRED": "Warteschlange erforderlich",
+      "DISPOSITION_REQUIRED": "Qualifizierung erforderlich",
+      "ACCOUNTSID_REQUIRED": "Konto-SID erforderlich",
+      "AUTHTOKEN_REQUIRED": "Token für Authentifizierung erforderlich",
+      "MOTIONPROXY_REQUIRED": "Proxy erforderlich",
+      "MOTIONPROXY_MUST_VALID_URL": "Ungültiges Format Proxy",
+      "TEXT_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
+      "TEXT_REQUIRED": "Text erforderlich",
+      "VALUE_REQUIRED": "Wert erforderlich",
+      "SENDERSTRING_MAX_LENGTH": "Wert darf nicht länger als {{max}} Zeichen sein",
+      "SENDERSTRING_MUST_VALID_PATTERN": "Ungültiges Format SENDER",
+      "METHOD_REQUIRED": "Methode erforderlich",
+      "AUTHID_REQUIRED": "AUTH_ID erforderlich",
+      "COMMAND_REQUIRED": "Eingabe erforderlich",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung Agent muss größer oder gleich sein als",
+      "NAME_MUST_VALID_PATTERN": "Ungültiges Format Name",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss kleiner oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung Agent muss kleiner oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Auf zugewiesenen Agenten warten erforderlich",
+      "TAG_REQUIRED": "Tag erforderlich",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss größer oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss kleiner oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Zeitüberschreitung Agententransfer erforderlich",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss größer oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss kleiner oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Zeitüberschreitung Warteschlangentransfer erforderlich",
+      "APIKEY_REQUIRED": "API-Key erforderlich",
+      "BASEURL_REQUIRED": "Base_URL erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "PausenID während Qualifizierung erforderlich",
+      "ACCESSKEYID_REQUIRED": "Zugangsschlüssel-ID erforderlich",
+      "BOTNAME_REQUIRED": "BOTName erforderlich",
+      "SECRETACCESSKEY_REQUIRED": "Geheimer Zugangsschlüssen erforderlich",
+      "CLIENTEMAIL_REQUIRED": "Kunden E-Mail erforderlich",
+      "PRIVATEKEY_REQUIRED": "Privater Schlüssel erforderlich",
+      "PROJECTID_REQUIRED": "ProjektID erforderlich",
+      "ACCOUNTID_REQUIRED": "AccountID erforderlich",
+      "APPLICATIONID_REQUIRED": "AnwendungsID erforderlich"
     },
-    "AGENT_TIMEOUT": "Agent Timeout",
+    "AGENT_TIMEOUT": "Zeitüberschreitung Agent",
     "DESCRIPTION": "Beschreibung",
     "ADD_SMSQUEUE": "SMS-Warteschlange hinzufügen",
     "EDIT_SMSQUEUE": "SMS-Warteschlange bearbeiten",
     "SID": "SID",
     "TOKEN": "Token",
     "SMSTYPE": "SMS-Typ",
-    "USERNAME": "Benutzername",
+    "USERNAME": "Nutzername",
     "PASSWORD": "Passwort",
     "MOTIONADDRESS": "Motion Adresse",
     "ADD_SMSACCOUNT": "SMS-Konto hinzufügen",
     "EDIT_SMSACCOUNT": "SMS-Konto bearbeiten",
-    "DELETE_SMSACCOUNT": "SMS-Konto löschen.",
+    "DELETE_SMSACCOUNT": "SMS-Konto löschen",
     "LIST": "Liste",
     "FIDELITY": "Treue",
     "API": "API",
-    "DISPOSITIONS": "Bestimmungen",
+    "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Aktionen",
+    "ACTIONS": "Routing",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Die Methode",
+    "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "In der Nähe",
-    "CLOSEMETHOD": "In der Nähe Methode",
-    "CLOSEURL": "Der URL",
-    "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "CLOSE": "Schließen und Qualifizieren",
+    "CLOSEMETHOD": "Methode schließen",
+    "CLOSEURL": "URL schließen",
+    "SELECTED": "Ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "SMS": "SMS",
-    "ID": "Id",
+    "ID": "ID",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
-    "SMSDISPOSITIONS": "SMS-Bestimmungen",
-    "NO_SMSDISPOSITION_AVAILABLE": "Keine SMS-Verfügungen zur Verfügung",
-    "NEW_SMSDISPOSITION": "Neue SMS-Disposition",
-    "ADD_SMSDISPOSITION": "SMS-Disposition",
-    "EDIT_SMSDISPOSITION": "Bearbeiten Sie SMS-Disposition",
-    "DELETE_SMSDISPOSITION": "SMS löschen Disposition",
+    "SMSDISPOSITIONS": "SMS-Qualifizierungen",
+    "NO_SMSDISPOSITION_AVAILABLE": "Keine Qualifizierungen vorhanden",
+    "NEW_SMSDISPOSITION": "Neue Qualifizierung",
+    "ADD_SMSDISPOSITION": "Qualifizierung hinzufügen",
+    "EDIT_SMSDISPOSITION": "Qualifizierung bearbeiten",
+    "DELETE_SMSDISPOSITION": "Qualifizierung löschen",
     "NEW_SMSQUEUE": "Neue SMS-Warteschlange",
     "NEW_SMSACCOUNT": "Neue SMS-Konto",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "HELP": {
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "LIST": "Contact Manager Liste zu verknüpfen von Kontakten",
+      "LIST": "Kontaktmanage- Liste zu verknüpfen von Kontakten",
       "RECEIVEURL": "Dies ist die automatisch generierte API-String müssen Sie die Nachrichten in Ihrem Konto von Ihrem SMS-Anbieter zu erhalten (POST-Methode verwendet werden muss). Drücken Sie die Zwischenablage, um Sie in die Zwischenablage zu kopieren.",
       "MOTIONPROXY": "Das Feld muss das folgende Format haben: <Protokoll>://<IP-Adresse>[:<Port>]. Beispiel: https://X.Y.Z.W",
       "DELIVERYREPORTURL": "Dies ist die automatisch generierte API-Zeichenfolge, die Sie verwenden müssen, um den Zustellungsbericht gesendeter Nachrichten von Ihrem SMS-Anbieter zu empfangen (die POST-Methode muss verwendet werden): Klicken Sie auf die Zwischenablage, um sie zu kopieren",
-      "MANDATORYDISPOSITION": "Zwingende Disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Anhalten, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
-      "WELCOMEMESSAGE": "Dies ist die erste Antwortnachricht, die an neue Interaktionen gesendet wird"
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "Pausenstatus während der Qualifizierung",
+      "WELCOMEMESSAGE": "Erste Nachricht bei neuen Interaktionen"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "TEAMADD_SMSQUEUE": "Team zur Warteschlange hinzufügen",
-    "AGENTADD_SMSQUEUE": "Agent zur Warteschlange hinzufügen",
+    "AGENTADD_SMSQUEUE": "Agenten zur Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
-    "RECEIVEURL": "Erhalten URL",
+    "RECEIVEURL": "URL erhalten",
     "INTERACTION": "Interaktion",
-    "INTERACTIONS": "Wechselwirkungen",
-    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
+    "INTERACTIONS": "Interaktionen",
+    "NO_INTERACTION_AVAILABLE": "Keine Interaktionen vorhanden",
     "CONTACT": "Kontakt",
     "STARTEDAT": "Gestartet am",
     "AGENT": "Agent",
-    "CLOSEDAT": "Geschlossen",
-    "DISPOSITION": "Disposition",
-    "NOTES": "Hinweise",
-    "GOTO": "Gehe zu",
-    "GOTOIF": "Gotoif",
-    "NOOP": "Noop",
+    "CLOSEDAT": "Geschlossen am",
+    "DISPOSITION": "Qualifizierung",
+    "NOTES": "Anmerkungen",
+    "GOTO": "GeheZu (GoTo)",
+    "GOTOIF": "GeheZuWenn (GoToIf)",
+    "NOOP": "Log erstellen (NoOp)",
     "QUEUE": "Warteschlange",
-    "TIMEOUT": "Timeout",
+    "TIMEOUT": "Zeitüberschreitung",
     "VALUE": "Wert",
-    "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_GOTO": "Bearbeiten Gehe zu",
-    "EDIT_NOOP": "Bearbeiten Noop",
-    "EDIT_GOTOIF": "Bearbeiten Gotoif",
+    "EDIT_AGENT": "Agenten bearbeiten",
+    "EDIT_GOTO": "\"GeheZu\" bearbeiten",
+    "EDIT_NOOP": "Log-Erstellung bearbeiten",
+    "EDIT_GOTOIF": "Bedingung bearbeiten und Priorität zuweisen",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "CONDITION": "Zustand",
-    "TRUEPRIORITY": "Wahre Priorität",
-    "FALSEPRIORITY": "Falsche Priorität",
+    "CONDITION": "Bedingung",
+    "TRUEPRIORITY": "Priorität bei zutreffender Bedingung erforderlich",
+    "FALSEPRIORITY": "Priorität bei nicht zutreffender Bedingung erforderlich",
     "PRIORITY": "Priorität",
-    "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Gotop bearbeiten",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "GOTOP": "Priorität zuweisen (GoToP)",
+    "EDIT_GOTOP": "GoToP bearbeiten",
+    "EDIT_CLOSE": "Verhalten bei Schließen bearbeiten",
     "FILTER": "Filter",
-    "SELECT_STATUS": "Wählen Sie einen Status",
-    "ALL": "Alle",
-    "SELECT_ACCOUNT": "Wählen Sie ein Konto",
-    "OPENED": "Öffnen",
+    "SELECT_STATUS": "Status wählen",
+    "ALL": "Alles",
+    "SELECT_ACCOUNT": "Konto wählen",
+    "OPENED": "Geöffnet",
     "CLOSED": "Geschlossen",
     "STATUS": "Status",
     "ACCOUNT": "Konto",
-    "OPEN": "Öffnen",
-    "INFO": "Info",
+    "OPEN": "Offen",
+    "INFO": "Information",
     "ACCOUNTSID": "Konto SID",
     "AUTHTOKEN": "Auth Token",
     "PROXY": "Proxy",
-    "ADVANCED": "Erweiterte",
+    "ADVANCED": "Erweitert",
     "MOTIONPROXY": "Proxy oder Motion Domain",
     "REALTIME": "Echtzeit",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Gebrauch",
+    "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "Im Einsatz",
+    "IN_USE": "In Verwendung",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Interne",
-    "PHONE_STATE": "Telefonstatus",
-    "PHONE_STATUS": "Telefonstatus",
+    "FULLNAME": "Vollständiger Name",
+    "INTERNAL": "Intern",
+    "PHONE_STATE": "Status Nebenstelle",
+    "PHONE_STATUS": "SIP-Status Nebenstelle",
     "PAUSE": "Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agent SMS-Warteschlange hinzufügen",
-    "UNPAUSE": "Pause beenden",
-    "DEFAULT_PAUSE": "Standard Pause",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "UNPAUSE": "Pause abbrechen",
+    "DEFAULT_PAUSE": "Standardpause",
     "LOGGED_IN": "Angemeldet",
-    "PAUSED": "Angehalten",
+    "PAUSED": "in Pause",
     "READY": "Bereit",
     "WAITING": "Warten",
-    "VOICE": "Voice",
+    "VOICE": "Anrufe",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
-    "OPENCHANNEL": "Channel öffnen",
+    "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Agenten zu SMS-Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur SMS-Warteschlange hinzufügen",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_SMSQUEUE": "In Echtzeit, SMS-Warteschlange",
-    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
+    "GOTOREALTIME_SMSQUEUE": "Direkt zur Echtzeit-Warteschlange",
+    "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
     "SEND": "Senden",
-    "TO": "Zu",
+    "TO": "An",
     "MESSAGE": "Nachricht",
     "TAGS": "Tags",
-    "INTERACTIONS_SMSACCOUNT": "Zu Wechselwirkungen gehen",
-    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
-    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
-    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinerte Antwort zu suchen",
-    "NO_SMSDISPOSITIONS_AVAILABLE": "Keine Sms-Disposition verfügbar",
-    "NO_SMSCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
-    "NEW_SMSCANNEDANSWER": "Neue vordefinierte Antwort",
-    "ADD_SMSCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "EDIT_SMSCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
-    "DELETE_SMSCANNEDANSWER": "Vordefinierte Antwort löschen",
-    "DELIVERYREPORTURL": "Zustellungsbericht-URL",
+    "INTERACTIONS_SMSACCOUNT": "Zu den Interaktionen gehen",
+    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen verfügbar",
+    "CANNED_ANSWER_SEARCH": "Nach Textvorlagen suchen",
+    "NO_SMSDISPOSITIONS_AVAILABLE": "Keine Qualifizierungen verfügbar",
+    "NO_SMSCANNEDANSWER_AVAILABLE": "Keine Textvorlagen vorhanden",
+    "NEW_SMSCANNEDANSWER": "Neue Textvorlage",
+    "ADD_SMSCANNEDANSWER": "Textvorlage hinzufügen",
+    "EDIT_SMSCANNEDANSWER": "Textvorlage bearbeiten",
+    "DELETE_SMSCANNEDANSWER": "Textvorlage löschen",
+    "DELIVERYREPORTURL": "URL bei Erhalt",
     "DELETE": "Löschen",
-    "SENDERSTRING": "Absenderzeichenfolge",
+    "SENDERSTRING": "Absenderkennung",
     "DELIVERYREPORT": "Sendebericht",
     "METHOD": "Methode",
     "ADD_NOTE": "Notiz hinzufügen",
     "NOTE": "Hinweis",
-    "SPYINTERACTION": "Spion",
+    "SPYINTERACTION": "Anzeigen",
     "AUTOREPLY": "Automatische Antwort",
-    "EDIT_AUTOREPLY": "Bearbeiten Sie die automatische Antwort",
-    "TIMES": "Anzahl der Male pro Interaktion",
+    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
+    "TIMES": "Zeiten",
     "TEXT": "Text",
-    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
+    "INSERT_MESSAGE_HERE": "Nachricht hier einfügen",
     "DELETE_INTERACTION": "Interaktion löschen",
     "AUTHID": "Authentifizierungs-ID",
-    "COMMAND": "Befehl",
+    "COMMAND": "Eingabe",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
-    "VARIABLE": "Variable",
+    "VARIABLE": "Variabel",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klingen",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Sound abspielen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
+    "WAITFORTHEASSIGNEDAGENT": "Auf zugewiesenen Agenten warten",
     "EDIT_TAG": "Tag bearbeiten",
-    "TAG": "Etikett",
-    "AGENTADD_SMSACCOUNT": "Fügen Sie einen Agenten zum SMS-Konto hinzu",
-    "AGENTTRANSFER": "Agent Transfer",
+    "TAG": "Tag",
+    "AGENTADD_SMSACCOUNT": "Agenten zum SMS-Konto hinzufügen",
+    "AGENTTRANSFER": "Transfer an Agenten erlauben",
     "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung für Agententransfer",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
-    "QUEUETRANSFERTIMEOUT": "Warteschlangenübertragungs-Timeout",
+    "QUEUETRANSFER": "Transfer in Warteschlange erlauben",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
     "TRANSFER": "Transfer",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
-    "DOWNLOAD_INTERACTION": "Herunterladen",
-    "SMSCANNEDANSWERS": "Vordefinierte Antworten",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "CANNEDANSWERS": "Textvorlagen",
+    "DOWNLOAD_INTERACTION": "Interaktion herunterladen",
+    "SMSCANNEDANSWERS": "SMS-Textvorlagen",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "APIKEY": "API-Schlüssel",
-    "BASEURL": "Basis-URL",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
-    "MANDATORYDISPOSITION": "Zwingende Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Anhalten, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
+    "BASEURL": "Base_URL",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "PausenID während Qualifizierung",
     "ACCESSKEYID": "Zugriffsschlüssel-ID",
     "AMAZONLEX": "AmazonLex",
-    "BOTNAME": "Bot Name",
-    "DIALOGFLOW": "DialogFlow",
-    "EDIT_AMAZONLEX": "Bearbeiten Sie die Lex-Konfiguration",
-    "EDIT_DIALOGFLOW": "Bearbeiten Sie die DialogFlow-Konfiguration",
+    "BOTNAME": "BOT-Name",
+    "DIALOGFLOW": "Google DialogFlow",
+    "EDIT_AMAZONLEX": "Lex-Konfiguration bearbeiten",
+    "EDIT_DIALOGFLOW": "DialogFlow-Konfiguration bearbeiten",
     "LANGUAGE": "Sprache",
-    "LEXREGION": "Region",
-    "SECRETACCESSKEY": "Zugriffsschlüsselgeheimnis",
+    "LEXREGION": "Lex Region",
+    "SECRETACCESSKEY": "Geheimer Zugangsschlüssel",
     "WELCOMEMESSAGE": "Willkommensnachricht",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Ohne Anhang herunterladen",
-    "DOWNLOAD_WITH_ATTACHMENT": "Download mit Anhang",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Herunterladen ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENT": "Herunterladen inkl. Anhänge",
     "LASTMESSAGE": "Letzte Nachricht",
-    "CLIENTEMAIL": "Kunden-E-Mail",
+    "CLIENTEMAIL": "Kunden E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privat Schlüssel",
+    "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID",
     "ACCOUNTID": "Konto-ID",
     "APPLICATIONID": "Anwendungs-ID"
index a46e611..163a056 100644 (file)
 {
   "STAFF": {
-    "CONTEXT": "Kontext",
-    "RINGINUSE": "Ring im Einsatz",
+    "CONTEXT": "Kontext (Wählplan)",
+    "RINGINUSE": "Nebenstelle klingelt auch wenn Nutzer Besetzt",
     "USERS": "Benutzer",
     "AGENTS": "Agenten",
-    "TOGGLE_SIDENAV": "Um sidenav",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "TOGGLE_SIDENAV": "Navigationsleiste umschalten",
+    "SEARCH_FOR_ANYONE": "Suche",
     "BACK": "Zurück",
-    "MULTI_SELECT_TOGGLE": "Wählen Sie toggle multi",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
-    "SELECTED": "Ausgewählte",
+    "MULTI_SELECT_TOGGLE": "Mehrfachauswahl ja/nein",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
+    "SELECTED": "Ausgewählt",
     "DELETE_SELECTED": "Auswahl löschen",
     "EXPORT_SELECTED": "Auswahl exportieren",
     "ALL_USERS": "Alle Benutzer",
     "ALL_AGENTS": "Alle Agenten",
     "SORT": "Sortieren",
     "NAME": "Name",
-    "FULLNAME": "Voller Name",
+    "FULLNAME": "Vollständiger Name",
     "A_TO_Z": "(A bis Z)",
     "Z_TO_A": "(Z bis A)",
     "MORE": "Mehr",
     "DELETE_USER": "Benutzer löschen",
     "EDIT_USER": "Benutzer bearbeiten",
-    "DELETE_AGENT": "Bedienplatz löschen",
-    "EDIT_AGENT": "Agent bearbeiten",
+    "DELETE_AGENT": "Agenten löschen",
+    "EDIT_AGENT": "Agenten bearbeiten",
     "DELETE": "Löschen",
     "SAVE": "Speichern",
     "ADD_USER": "Benutzer hinzufügen",
     "ADD_AGENT": "AGENT HINZUFÜGEN",
-    "NO_RESULTS": "Keine Ergebnisse.",
+    "NO_RESULTS": "Keine Ergebnisse",
     "CLOSE_DIALOG": "Dialog schließen",
-    "NAME_REQUIRED": "Name (erforderlich).",
-    "USERNAME": "Benutzername",
+    "NAME_REQUIRED": "Name (erforderlich)",
+    "USERNAME": "Nutzername",
     "SHOW_ALL_FIELDS": "Alle Felder anzeigen",
     "PHONE_NUMBER": "Telefonnummer",
     "EMAIL": "E-Mail",
     "PASSWORD": "Passwort",
     "ERRORS": {
-      "FULLNAME_REQUIRED": "Der Fullname ist erforderlich",
-      "USERNAME_REQUIRED": "Der Benutzername ist erforderlich",
-      "EMAIL_REQUIRED": "Die E-Mail ist erforderlich",
-      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Kennwörter stimmen nicht überein.",
-      "EMAIL_MUST_VALID": "Die e-Mail muss in einem gültigen Format",
-      "ACCOUNTNAME_REQUIRED": "Der Account ist erforderlich.",
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "HOST_REQUIRED": "Der Host wird benötigt",
-      "CHATCAPACITY_REQUIRED": "Die Kapazität ist erforderlich",
-      "MAILCAPACITY_REQUIRED": "Die E-Mail Kapazität erforderlich ist",
-      "FAXCAPACITY_REQUIRED": "Die Kapazität ist erforderlich",
-      "SMSCAPACITY_REQUIRED": "Die SMS-Kapazität erforderlich ist",
-      "OPENCHANNELCAPACITY_REQUIRED": "Der Offene Kanal Kapazität erforderlich ist",
-      "SIPEXPIRES_REQUIRED": "Der SIP-Ablauf ist erforderlich",
-      "SIPPORT_REQUIRED": "Die SIP-Port erforderlich.",
-      "UNCONDITIONALNUMBER_REQUIRED": "Die Zielrufnummer ist erforderlich",
-      "NOREPLYNUMBER_REQUIRED": "Die Nummer ist keine Antwort erforderlich",
-      "BUSYNUMBER_REQUIRED": "Die besetzt ist erforderlich",
-      "USERNAME_MUST_VALID_PATTERN": "Der Benutzername muss gültige {{regex}}.",
-      "REMOTECONTROLPORT_REQUIRED": "Die Fernbedienung Anschluss erforderlich",
-      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Chat Kapazität muss größer als oder gleich",
-      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die E-Mail Kapazität muss größer als oder gleich",
-      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Das Fax Kapazität muss größer als oder gleich",
-      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der offene Kanal Kapazität muss größer als oder gleich",
-      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
-      "AUTOANSWERDELAY_REQUIRED": "Pflichtfeld",
-      "MONITOREXTENSION_REQUIRED": "Pflichtfeld",
+      "FULLNAME_REQUIRED": "Vollständiger Name erforderlich",
+      "USERNAME_REQUIRED": "Benutzername erforderlich",
+      "EMAIL_REQUIRED": "E-Mail erforderlich",
+      "PASSWORD_REQUIRED": "Passwort erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
+      "EMAIL_MUST_VALID": "E-Mail Format ungültig",
+      "ACCOUNTNAME_REQUIRED": "Konto erforderlich",
+      "NAME_REQUIRED": "Name erforderlich",
+      "HOST_REQUIRED": "Host erforderlich",
+      "CHATCAPACITY_REQUIRED": "Kapazität Chat erforderlich",
+      "MAILCAPACITY_REQUIRED": "Kapazität E-Msil erforderlich",
+      "FAXCAPACITY_REQUIRED": "Kapazität Fax erforderlich",
+      "SMSCAPACITY_REQUIRED": "Kapazität SMS erforderlich",
+      "OPENCHANNELCAPACITY_REQUIRED": "Kapazität offener Kanal erforderlich",
+      "SIPEXPIRES_REQUIRED": "SIP-Ablaufdatum erforderlich",
+      "SIPPORT_REQUIRED": "SIP-Port erforderlich",
+      "UNCONDITIONALNUMBER_REQUIRED": "Zielrufnummer erforderlich",
+      "NOREPLYNUMBER_REQUIRED": "Nummer bei keiner Antwort erforderlich",
+      "BUSYNUMBER_REQUIRED": "Nummer bei Besetzt erforderlich",
+      "USERNAME_MUST_VALID_PATTERN": "Benutzername ungültig {{regex}}.",
+      "REMOTECONTROLPORT_REQUIRED": "Port für Remote erforderlich",
+      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität Chat muss größer oder gleich sein als",
+      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität E-Mail muss größer oder gleich sein als",
+      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität Fax muss größer oder gleich sein als",
+      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität offener Kanal muss größer oder gleich sein als",
+      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "AUTOANSWERDELAY_REQUIRED": "Verzögerung bei automatischer Antwort erforderlich",
+      "MONITOREXTENSION_REQUIRED": "Nebenstelle erforderlich",
       "ENCRYPTION": "SRTP (Secure Realtime Protocol) Verschlüsselung",
-      "DTLSCERTFILE_REQUIRED": "Pflichtfeld",
-      "DTLSPRIVATEKEY_REQUIRED": "Pflichtfeld",
-      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen haben ~! @",
-      "ALLOWCODECS_REQUIRED": "Pflichtfeld",
-      "CRUDPERMISSIONS_REQUIRED": "Pflichtfeld",
-      "USERPROFILE_REQUIRED": "Pflichtfeld",
-      "PASSWORD_OLDPASSWORD_MATCH": "Das neue Passwort muss sich vom vorherigen Passwort unterscheiden",
-      "CONFIRM_REQUIRED": "Pflichtfeld",
-      "WHATSAPPCAPACITY_REQUIRED": "Pflichtfeld"
+      "DTLSCERTFILE_REQUIRED": "Zertifikat erforderlich",
+      "DTLSPRIVATEKEY_REQUIRED": "Privater Schlüssel erforderlich",
+      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstaben, 1 Großbuchstaben, 1 Zahl und 1 Sonderzeichen enthalten",
+      "ALLOWCODECS_REQUIRED": "Erlaubte Codecs erforderlich",
+      "CRUDPERMISSIONS_REQUIRED": "Berechtigungen erforderlich",
+      "USERPROFILE_REQUIRED": "Nutzerprofil erforderlich",
+      "PASSWORD_OLDPASSWORD_MATCH": "Neues und altes Passwort dürfen nicht gleich sein",
+      "CONFIRM_REQUIRED": "Bestätigung erforderlich",
+      "WHATSAPPCAPACITY_REQUIRED": "Kapazität WhatsApp erforderlich"
     },
-    "ACCOUNT": "Konto",
-    "VOICE": "Voice",
+    "ACCOUNT": "Nutzerdaten",
+    "VOICE": "Einstellungen Telefonie",
     "CREATED_AT": "Erstellt am",
     "ROLE": "Rolle",
-    "PERSONAL_INFO": "Persönliche Infos",
+    "PERSONAL_INFO": "Persönliche Informationen",
     "DESCRIPTION": "Beschreibung",
-    "CHANGE_AVATAR": "Avatar ändern.",
+    "CHANGE_AVATAR": "Avatar ändern",
     "GENERAL": "Allgemein",
-    "INTERNAL": "Interne",
-    "TRANSPORT": "Verkehr",
-    "ALLOWCODECS": "Codecs erlaubt",
+    "INTERNAL": "Interne Durchwahl",
+    "TRANSPORT": "Transport",
+    "ALLOWCODECS": "Erlaubte Codecs",
     "HELP": {
-      "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge ihrer Präferenz",
-      "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.",
-      "HOST": "Wie finden Sie die Client-IP oder den Host-Namen. Wenn Sie möchten, dass das Telefon zu registrieren, verwenden Sie das Schlüsselwort Dynamic anstelle von Host-IP.",
-      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall.Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
+      "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge der Auflistung",
+      "TRANSPORT": "Festlegen der Standardeinstellungen für das Transportprotokoll. Die Reihenfolge bestimmt den primären Standard.",
+      "HOST": "Definiert die Ermittlung des Clients. Wenn sich die Nebenstelle selbst registrieren soll \"dynamic\" anstelle der Host-IP verwenden ",
+      "NAT": "Ändert das Verhaltes des Asterisk-Telefonieservers für Nebenstellen hinter einer Firewall- Sofern eine der per Komma getrennten Optionen 'no', werden alle anderen Einstellungen ignoriert und der Server setzt ein 'nat=no'",
       "SIPEXPIRES": "Standardeinstellung: 160",
       "SIPPORT": "Standardeinstellung: 5160",
-      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: Wird verwendet, um die Authentifizierung für eingehende - Peer: für ausgehende Anrufe - Freund: Deckt sowohl die Eigenschaften der oben genannten.",
-      "CHATCAPACITY": "Null bedeutet unbegrenzt.",
-      "MAILCAPACITY": "Null bedeutet unbegrenzt.",
-      "FAXCAPACITY": "Null bedeutet unbegrenzt.",
-      "SMSCAPACITY": "Null bedeutet unbegrenzt.",
-      "OPENCHANNELCAPACITY": "Null bedeutet unbegrenzt.",
-      "CALLGROUP": "Legt der Agent callgroup",
-      "PICKUPGROUP": "Definiert die Gruppen in denen der Agent Anrufe annehmen können",
+      "TYPE": "Definiert die Rolle des SIP innerhalb des Telefoniservers. User: eingehende Authentifizierung - Peer: ausgehende Authentifizierung - Friend: beide Varianten",
+      "CHATCAPACITY": "Maximale Anzahl an gleichzeitigen Chat-Interaktionen pro Agent. (0 = unbegrenzt)",
+      "MAILCAPACITY": "Maximale Anzahl an gleichzeitigen E-Mail-Interaktionen pro Agent. (0 = unbegrenzt)",
+      "FAXCAPACITY": "Maximale Anzahl an gleichzeitigen Fax-Interaktionen pro Agent. (0 = unbegrenzt)",
+      "SMSCAPACITY": "Maximale Anzahl an gleichzeitigen SMS-Interaktionen pro Agent. (0 = unbegrenzt)",
+      "OPENCHANNELCAPACITY": "Maximale Anzahl an gleichzeitigen Interaktionen im offenen Kanal pro Agent. (0 = unbegrenzt)",
+      "CALLGROUP": "Rufgruppe",
+      "PICKUPGROUP": "Übernahmegruppe",
       "USERNAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "ENCRYPTION": "SRTP (Secure Realtime Protocol) Verschlüsselung",
       "LAST_PASSWORD_RESET_AT": "Letztes Datum und Uhrzeit, zu der das Passwort geändert wurde. Wenn die Allgemeinen Einstellungen für Secure Suite aktiviert sind, läuft das Passwort nach 90 Tagen ab.",
-      "DTLSCERTFILE": "Verknüpfen Sie mit dem gültigen TLS-Zertifikat (.crt-Datei). Standardwert: '/etc/pki/tls/certs/motion.crt'.",
-      "DTLSPRIVATEKEY": "Verknüpfen Sie mit dem privaten Schlüssel des Zertifikats (.key-Datei). Standardwert: '/etc/pki/tls/private/motion.key'.",
+      "DTLSCERTFILE": "Verknüpfen Sie das gültige TLS-Zertifikat (.crt-Datei). Standardwert: '/etc/pki/tls/certs/motion.crt'.",
+      "DTLSPRIVATEKEY": "Verknüpfen Sie den privaten Schlüssel des Zertifikats (.key-Datei). Standardwert: '/etc/pki/tls/private/motion.key'.",
       "SAVE_PERMISSIONS": "Jeder Abschnitt, der ausstehende Änderungen enthält, wird gespeichert",
-      "CUSTOM_DASHBOARDS_PERMISSIONS": "Berechtigungen für benutzerdefinierte Dashboards werden im Modul Tools verwaltet",
+      "CUSTOM_DASHBOARDS_PERMISSIONS": "Berechtigungen für benutzerdefinierte Dashboards werden im Werkzeuge-Modul verwaltet",
       "APIKEY": "Verwenden Sie die Schaltfläche \"API-Schlüsselmanager\" in der Symbolleiste, um diesen Schlüssel zu verwalten",
-      "ENABLEAUTOMATICSCREENRECORDING": "Die Funktionalität ist nur für Sprachkanäle verfügbar",
-      "BLOCKED": "Zugriff sperren / entsperren",
-      "DISABLED": "Zum Deaktivieren auswählen / Zum Reaktivieren deaktivieren",
-      "WHATSAPPCAPACITY": "Maximale Anzahl gleichzeitiger Kanalinteraktionen pro Agent (0 = unbegrenzt)",
+      "ENABLEAUTOMATICSCREENRECORDING": "Funktionalität ist nur für Sprachkanäle verfügbar",
+      "BLOCKED": "Zugriff auf System ermöglichen/sperren",
+      "DISABLED": "Nutzer Aktivieren/Deaktivieren",
+      "WHATSAPPCAPACITY": "Maximale Anzahl an gleichzeitigen WhatsApp-Interaktionen pro Agent. 0 für unbegrenzt",
       "MASK_SENSITIVE_DATA": "Maskieren Sie vertrauliche Daten in der gesamten Anwendung (z. B. Telefonnummern und E-Mail-Adressen).",
       "WSS_PORT": "Standard: 8089",
       "AD_SSO_ENABLED": "Melden Sie sich mit Ihren Active Directory-Anmeldeinformationen an"
     },
-    "NEW_PASSWORD": "Neues Kennwort",
+    "NEW_PASSWORD": "Neues Passwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "CHANGE_PASSWORD": "Passwort ändern",
-    "CHANGEPASSWORD_AGENT": "Passwort ändern",
-    "CHANGEPASSWORD_USER": "Passwort ändern",
-    "CHANGEPASSWORD_TELEPHONE": "Passwort ändern",
-    "LOGININPAUSE": "Geben Sie Ihren Benutzernamen und Ihr Passwort In der Pause",
+    "CHANGEPASSWORD_AGENT": "Passwort für Agenten ändern",
+    "CHANGEPASSWORD_USER": "Passwort für Nutzer ändern",
+    "CHANGEPASSWORD_TELEPHONE": "Passwort für Endgerät ändern",
+    "LOGININPAUSE": "Pause nach Anmelden",
     "HOST": "Host",
     "NAT": "NAT",
-    "CHANSPY": "ChanSpy",
-    "OTHER_CHANNELS": "Andere Kanäle",
-    "CHATCAPACITY": "Chat Kapazität",
-    "MAILCAPACITY": "E-Kapazität",
-    "FAXCAPACITY": "Fax Kapazität",
-    "SMSCAPACITY": "Sms-Kapazität",
-    "OPENCHANNELCAPACITY": "Offener Kanal Kapazität",
+    "CHANSPY": "Mithören zulassen",
+    "OTHER_CHANNELS": "Parallele Kanäle",
+    "CHATCAPACITY": "Kapazität Chat",
+    "MAILCAPACITY": "Kapazität E-Mail",
+    "FAXCAPACITY": "Kapazität Fax",
+    "SMSCAPACITY": "Kapazität SMS",
+    "OPENCHANNELCAPACITY": "Kapazität offener Kanal",
     "MOTIONBAR": "Motion Bar",
     "SETTINGS": "Einstellungen",
-    "AUTOANSWER": "\"Autom. Antwort\"",
-    "ENABLESETTINGS": "Einstellungen aktivieren",
+    "AUTOANSWER": "Anruf automatisch annehmen",
+    "ENABLESETTINGS": "Darf Einstellungen sehen",
     "CALL_FORWARDING": "Anrufweiterleitung",
-    "UNCONDITIONAL": "Unbedingte",
-    "UNCONDITIONALNUMBER": "Uneingeschränkte Anzahl",
-    "NOREPLY": "Keine Antwort",
-    "NOREPLYNUMBER": "\"Keine Antwort\"-Nummer",
-    "BUSY": "Besetzt",
-    "BUSYNUMBER": "Nummer besetzt",
-    "REMOTE_CONTROL": "Fernbedienung",
-    "REMOTECONTROL": "Fernbedienung",
-    "REMOTECONTROLPORT": "Fernbedienung",
+    "UNCONDITIONAL": "Generelle Anrufweiterleitung",
+    "UNCONDITIONALNUMBER": "Nummer für generelle Weiterleitung",
+    "NOREPLY": "Bei keiner Antwort",
+    "NOREPLYNUMBER": "Nummer Weiterleitung keine Antwort",
+    "BUSY": "Bei Besetzt",
+    "BUSYNUMBER": "Nummer Weiterleitung Besetzt",
+    "REMOTE_CONTROL": "Externe Steuerung (z.B. für Click2Dial)",
+    "REMOTECONTROL": "Externe Steuerung erlauben",
+    "REMOTECONTROLPORT": "Port für externe Steuerung (Standard: 9888)",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP läuft [sec]",
+    "SIPEXPIRES": "SIP-Aktualisierungsintervall",
     "SIPPORT": "SIP-Port",
-    "PENALTY": "Strafe",
-    "ACCOUNTNAME": "Account Name",
-    "ADD_TELEPHONE": "Telefon hinzufügen",
-    "EDIT_TELEPHONE": "Telefon bearbeiten",
-    "DELETE_TELEPHONE": "Telefon löschen",
+    "PENALTY": "Verzögerung",
+    "ACCOUNTNAME": "Kontoname",
+    "ADD_TELEPHONE": "Endgerät hinzufügen",
+    "EDIT_TELEPHONE": "Endgerät bearbeiten",
+    "DELETE_TELEPHONE": "Endgerät löschen",
     "TEAMS": "Teams",
     "DELETE_TEAM": "Team löschen",
-    "AGENTADD_TEAM": "Hinzufügen von Agenten zu einer Gruppe",
-    "EDIT_TEAM": "Team bearbeiten.",
+    "AGENTADD_TEAM": "Agenten zu einem Team hinzufügen",
+    "EDIT_TEAM": "Team bearbeiten",
     "TYPE": "Typ",
-    "TELEPHONES": "Telefone",
-    "CALLERID": "Die Anrufer-ID",
-    "ENABLERECORDING": "Aktivieren der Aufzeichnung",
+    "TELEPHONES": "Endgeräte",
+    "CALLERID": "Standard angezeigte Nummer (Caller-ID)",
+    "ENABLERECORDING": "Darf Aufzeichnung starten/stoppen",
     "STAFF": "Personal",
-    "ID": "Id",
+    "ID": "ID",
     "NEW_USER": "Neuer Benutzer",
     "NEW_AGENT": "Neuer Agent",
     "NEW_TELEPHONE": "Neues Telefon",
     "NEW_TEAM": "Neues Team",
     "ADD_TEAM": "Team hinzufügen",
-    "JOIN_QUEUE": "Melden Sie Warteschlange",
-    "CAPACITY": "Kapazität",
+    "JOIN_QUEUE": "In Warteschlange beitreten",
+    "CAPACITY": "Gleichzeitige Bearbeitung der Kommunikationskanäle",
     "AUTOINTERNAL": "Interne Nummer automatisch generieren",
-    "ADD_AGENT_TO_TEAM": "Hinzufügen von Agenten zu einer Gruppe",
-    "TEAMADD_AGENT": "Agent zu Gruppe hinzufügen",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ADD_AGENT_TO_TEAM": "Agenten zum Team hinzufügen",
+    "TEAMADD_AGENT": "Zum Team hinzufügen",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
     "PERMISSIONS": "Berechtigungen",
-    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
+    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
     "ALL_MODULES_AVAILABLE": "Alle Module verfügbar",
-    "CALLGROUP": "Gruppenruf",
-    "PICKUPGROUP": "Übernahmegruppe",
+    "CALLGROUP": "Anrufgruppe",
+    "PICKUPGROUP": "Pick-Up Gruppe",
     "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Agenten hinzufügen - ausgehende Anrufe",
     "ADD_AGENT_TO_VOICE_QUEUES": "Agenten hinzufügen - eingehende Anrufe",
     "ADD_AGENT_TO_CHAT_QUEUES": "Agenten hinzufügen - Chat-Warteschlangen",
     "ADD_AGENT_TO_SMS_QUEUES": "Agenten hinzufügen - SMS-Warteschlangen",
     "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Agenten hinzufügen - offener Kanal-Warteschlangen",
     "ADD_AGENT_TO_FAX_QUEUES": "Agenten hinzufügen - Fax-Warteschlangen",
-    "QUEUEADD_USER_VOICE_INBOUND": "Benutzer stimme Warteschlangen hinzufügen",
-    "QUEUEADD_USER_CHAT_INBOUND": "Benutzer zu chatten Warteschlangen hinzufügen",
-    "QUEUEADD_USER_MAIL_INBOUND": "Benutzer Mail Warteschlangen hinzufügen",
-    "QUEUEADD_USER_SMS_INBOUND": "Benutzer von SMS-Warteschlangen hinzufügen",
-    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Benutzer zum offenen Kanal Warteschlangen hinzufügen",
-    "QUEUEADD_USER_FAX_INBOUND": "Benutzer fax Warteschlangen hinzufügen",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "QUEUEADD_USER_VOICE_INBOUND": "Nutzer hinzufügen - eingehende Anrufe",
+    "QUEUEADD_USER_CHAT_INBOUND": "Nutzer hinzufügen - eingehende Chats",
+    "QUEUEADD_USER_MAIL_INBOUND": "Nutzer hinzufügen - eingehende E-Mails",
+    "QUEUEADD_USER_SMS_INBOUND": "Nutzer hinzufügen - eingehende SMS",
+    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Nutzer hinzufügen - eingehender offener Kanal",
+    "QUEUEADD_USER_FAX_INBOUND": "Nutzer hinzufügen - eingehende Faxe",
+    "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "ALL_QUEUE_CAMPAIGNS": "Alle Warteschlangen - ausgehende Anrufe",
     "ALL_FAX_QUEUES": "Alle Warteschlangen - Fax",
     "SELECTED_FAX_QUEUES": "Ausgewählte Warteschlangen - Fax",
     "VOICEMAIL": "Voicemail",
-    "SHOWWEBCONTROL": "Anzeigen Web Control",
+    "SHOWWEBCONTROL": "Verbindungstyp",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "CALLFORWARDING": "Anrufweiterleitung",
-    "DND": "Während der Pause nicht stören",
-    "UNANSWEREDCALLBADGE": "Zeige unbeantwortete Anruf Abzeichen",
-    "ENABLEDTMFTONE": "Dtmf-Töne aktivieren",
-    "AUTOANSWERDELAY": "Auto Antwortverzögerung",
+    "DND": "Darf \"Nicht Stören\" Status setzen",
+    "UNANSWEREDCALLBADGE": "Unbeantwortete Anrufe im Icon anzeigen",
+    "ENABLEDTMFTONE": "Darf DTMF-Töne senden",
+    "AUTOANSWERDELAY": "Automatische Antwort nach",
     "ENCRYPTION": "Verschlüsselung",
     "CHANNELS": "Kanäle",
     "CHAT": "Chat",
-    "SMS": "Sms",
+    "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Benutzer in Warteschlange Kampagnen hinzufügen",
-    "MONITOREXTENSION": "Anrufe an die Nebenstelle des Benutzers aufzeichnen",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Nutzer zu ausgehender Warteschlange hinzufügen",
+    "MONITOREXTENSION": "Nebenstelle des Nutzers aufzeichnen",
     "NO_PASSWORD_CHANGE": "Keine Passwortänderung",
     "SECURITY_SUITE": "Sicherheitssuite",
-    "LAST_PASSWORD_RESET_AT": "Letzte Passwort zurücksetzen um",
-    "SIP_WEBRTC": "Schluck",
-    "SETTINGS_WEBRTC": "die Einstellungen",
+    "LAST_PASSWORD_RESET_AT": "Passwort zuletzt zurückgesetzt am:",
+    "SIP_WEBRTC": "SIP/WebRTC",
+    "SETTINGS_WEBRTC": "Einstellungen",
     "WEBRTC": "WebRTC",
     "DTLSCERTFILE": "TLS-Zertifikat",
-    "DTLSPRIVATEKEY": "Der private Schlüssel des TLS-Zertifikats",
-    "EDITPERMISSIONS": "Bearbeiten von Berechtigungen",
-    "READANDEDIT": "Lesen, Bearbeiten",
-    "READANDEDITANDDELETE": "Lesen, Bearbeiten, Löschen",
-    "GENERAL_PERMISSIONS": "Allgemeines",
-    "ENABLEMESSENGER": "Aktivieren Sie den internen Messenger",
-    "OUTBOUNDPROXY": "Oubound-Proxy",
+    "DTLSPRIVATEKEY": "Privater Schlüssel des TLS-Zertifikats",
+    "EDITPERMISSIONS": "Berechtigungen verwalten",
+    "READANDEDIT": "Lesen und Bearbeiten",
+    "READANDEDITANDDELETE": "Lesen, Bearbeiten und Löschen",
+    "GENERAL_PERMISSIONS": "Allgemein",
+    "ENABLEMESSENGER": "Internen Messenger aktivieren",
+    "OUTBOUNDPROXY": "Outbound-Proxy",
     "PHONE": "Telefon",
     "MOBILE": "Handy, Mobiltelefon",
     "ALIAS": "Alias",
     "ENABLEJAWSINTEGRATION": "Jaws-Integration aktivieren",
     "PREFIXREQUIRED": "Präfix erforderlich",
-    "ENABLEVIDEORECORDING": "Aktiviere Videoaufnahme",
+    "ENABLEVIDEORECORDING": "Videoaufzeichnung aktivieren",
     "OLD_PASSWORD": "Altes Passwort",
     "ALL_CHATQUEUES": "Alle Chat-Warteschlangen",
-    "ALL_CHATWEBSITES": "Alle Chat-Websites",
-    "ALL_FAXACCOUNTS": "Alle Faxkonten",
-    "ALL_FAXQUEUES": "Alle Faxwarteschlangen",
+    "ALL_CHATWEBSITES": "Alle Chat-Webseiten",
+    "ALL_FAXACCOUNTS": "Alle Fax-Konten",
+    "ALL_FAXQUEUES": "Alle Fax-Warteschlangen",
     "ALL_MAILACCOUNTS": "Alle E-Mail-Konten",
     "ALL_MAILQUEUES": "Alle E-Mail-Warteschlangen",
-    "ALL_OPENCHANNELACCOUNTS": "Alle offenen Channel-Konten",
-    "ALL_OPENCHANNELQUEUES": "Alle offenen Kanalwarteschlangen",
+    "ALL_OPENCHANNELACCOUNTS": "Alle offener Kanal-Konten",
+    "ALL_OPENCHANNELQUEUES": "Alle offener Kanal-Warteschlangen",
     "ALL_PROJECTS": "Alle Cally Square-Projekte",
     "ALL_QUEUECAMPAIGNS": "Alle Queue-Kampagnen",
     "ALL_SMSACCOUNTS": "Alle SMS-Konten",
     "MANAGE_PERMISSIONS": "Berechtigungen verwalten",
     "SELECTED_CHATQUEUES": "Ausgewählte E-Mail-Warteschlangen",
     "SELECTED_CHATWEBSITES": "Ausgewählte Chat-Websites",
-    "SELECTED_FAXACCOUNTS": "Ausgewählte Faxkonten",
-    "SELECTED_FAXQUEUES": "Ausgewählte Faxwarteschlangen",
+    "SELECTED_FAXACCOUNTS": "Ausgewählte Fax-Konten",
+    "SELECTED_FAXQUEUES": "Ausgewählte Fax-Warteschlangen",
     "SELECTED_MAILACCOUNTS": "Ausgewählte E-Mail-Konten",
     "SELECTED_MAILQUEUES": "Ausgewählte Chat-Warteschlangen",
-    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offene Channel-Konten",
-    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanalwarteschlangen",
+    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offener Kanal-Konten",
+    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanal-Warteschlangen",
     "SELECTED_PROJECTS": "Ausgewählte Projekte von Cally Square",
     "SELECTED_QUEUECAMPAIGNS": "Ausgewählte Queue-Kampagnen",
     "SELECTED_SMSACCOUNTS": "Ausgewählte SMS-Konten",
     "SELECTED_SMSQUEUES": "Ausgewählte SMS-Warteschlangen",
-    "SELECTED_VOICEQUEUES": "Ausgewählte Sprachwarteschlangen",
+    "SELECTED_VOICEQUEUES": "Ausgewählte Anruf-Warteschlangen",
     "USERADD_CHATQUEUES": "Chat-Warteschlange zum Benutzer hinzufügen",
     "USERADD_CHATWEBSITES": "Chat-Website zum Benutzer hinzufügen",
     "USERADD_FAXACCOUNTS": "Faxkonto zum Benutzer hinzufügen",
-    "USERADD_FAXQUEUES": "Faxwarteschlange zum Benutzer hinzufügen",
+    "USERADD_FAXQUEUES": "Fax-Warteschlange zum Benutzer hinzufügen",
     "USERADD_MAILACCOUNTS": "E-Mail-Konto zum Benutzer hinzufügen",
     "USERADD_MAILQUEUES": "E-Mail-Warteschlange zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELACCOUNTS": "Open Channel-Konto zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELQUEUES": "Open Channel-Warteschlange zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELACCOUNTS": "Offener Kanal-Konto zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELQUEUES": "Offener Kanal-Warteschlange zum Benutzer hinzufügen",
     "USERADD_PROJECTS": "Cally Square-Projekt zum Benutzer hinzufügen",
     "USERADD_QUEUECAMPAIGNS": "Queue-Kampagne zum Benutzer hinzufügen",
     "USERADD_SMSACCOUNTS": "SMS-Konto zum Benutzer hinzufügen",
     "USERADD_SMSQUEUES": "SMS-Warteschlange zum Benutzer hinzufügen",
-    "USERADD_VOICEQUEUES": "Sprachwarteschlange zum Benutzer hinzufügen",
-    "HOTDESK": "Heißer Schreibtisch",
+    "USERADD_VOICEQUEUES": "Anruf-Warteschlange zum Benutzer hinzufügen",
+    "HOTDESK": "Wechselnder Arbeitsplatz",
     "ADD_USERPROFILE": "Benutzerprofil hinzufügen",
-    "CANCEL": "Stornieren",
+    "CANCEL": "Abbrechen",
     "CLONE_USERPROFILE": "Benutzerprofil klonen",
     "CLOSE": "Schließen",
     "CONFIRM": "Bestätigen",
     "PERMISSIONS_ALL_RESOURCES": "Alle Ressourcen",
     "PERMISSIONS_AUTO_ASSOCIATION_INFO": "Ordnen Sie dem Benutzerprofil automatisch alle aktuellen und zukünftigen Ressourcen dieses Abschnitts zu",
     "PERMISSIONS_MANAGE": "Verwalten",
-    "PERMISSIONS_PLACEHOLDER_SEARCH": "Suche...",
+    "PERMISSIONS_PLACEHOLDER_SEARCH": "Suche",
     "PERMISSIONS_SECTION_HIDE": "Abschnitt für den Benutzer ausblenden",
     "PERMISSIONS_SECTION_SHOW": "Abschnitt dem Benutzer anzeigen",
     "PERMISSIONS_SECTION_TITLE": "{{sectionName}} Berechtigungen",
     "PERMISSIONS_SELECTED_RESOURCES": "Ausgewählte Ressourcen",
-    "PERMISSIONS_SELECT_REPORT_TYPE": "Wählen Sie den Berichtstyp",
-    "PERMISSIONS_SELECT_SECTION": "Wählen Sie einen Abschnitt aus",
-    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Sie dürfen nicht auf den ausgewählten Bereich zugreifen",
+    "PERMISSIONS_SELECT_REPORT_TYPE": "Berichtstyp wählen",
+    "PERMISSIONS_SELECT_SECTION": "Abschnitt auswählen",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Kein Zugriff auf den ausgewählten Bereich",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Unbefugte Handlung",
-    "PERMISSIONS_WARNING_CLOSE": "Du hast nicht gespeicherte Änderungen. Möchten Sie den Vorgang wirklich ohne Speichern beenden?",
+    "PERMISSIONS_WARNING_CLOSE": "Es wurden Änderungen nicht gespeichert. Fortfahren?",
     "PERMISSIONS_WARNING_ENABLE_ALL": "Alle {{sectionName}} Unterabschnitte und ihre Ressourcen werden aktiviert. Sind Sie sicher, dass Sie fortfahren möchten?",
-    "QUEUES_ASSOCIATION": "{{channel}} Queues Association",
+    "QUEUES_ASSOCIATION": "{{channel}} Warteschlangen-Zuweisung",
     "READ_PERMISSION": "Lesen",
     "REPORT_TYPE": "Berichtstyp",
     "SECTIONS": "Abschnitte",
     "SUMMARY": "Zusammenfassung",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
     "USERPROFILE": "Benutzerprofil",
-    "USERPROFILES": "Benutzerprofil",
-    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Sie dürfen die Ressource nicht erstellen",
-    "VIDEOSUPPORT": "Video-Unterstützung",
+    "USERPROFILES": "Benutzerprofile",
+    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Keine Berechtigung zum Erstellen der Ressource",
+    "VIDEOSUPPORT": "Videounterstützung aktivieren",
     "APIKEY": "API-Schlüssel",
-    "APIKEYMANAGER_USER": "API Key Manager",
-    "GENERATE": "(Regenerieren",
+    "APIKEYMANAGER_USER": "API-Schlüsselverwaltung",
+    "GENERATE": "Erneut generieren",
     "MANAGE_API_KEY": "API-Schlüsselmanager",
-    "REMOVE": "Löschen",
-    "ENABLEAUTOMATICSCREENRECORDING": "Aktivieren Sie die automatische Bildschirmaufnahme",
-    "ENABLESCREENRECORDINGBYAGENT": "Aktivieren Sie die Bildschirmaufzeichnung nach Agent",
-    "ENABLEVIDEOECORDING": "Videoaufnahme aktivieren",
+    "REMOVE": "Entfernen",
+    "ENABLEAUTOMATICSCREENRECORDING": "Automatische Bildschirmaufzeichnung aktivieren",
+    "ENABLESCREENRECORDINGBYAGENT": "Bildschirmaufzeichnung durch Agenten aktivieren",
+    "ENABLEVIDEOECORDING": "Videoaufzeichnung aktivieren",
     "BLOCKED": "Gesperrt",
     "DISABLED": "Deaktiviert",
-    "REGENERATE": "Regenerieren",
+    "REGENERATE": "Erneut generieren",
     "ALL_WHATSAPP_QUEUES": "Alle WhatsApp-Warteschlangen",
     "ALL_WHATSAPPACCOUNTS": "Alle WhatsApp-Konten",
     "ALL_WHATSAPPQUEUES": "Alle Whataspp-Warteschlangen",
     "SELECTED_WHATSAPPACCOUNTS": "Ausgewählte WhatsApp-Konten",
     "SELECTED_WHATSAPPQUEUES": "Ausgewählte WhatsApp-Warteschlangen",
     "USERADD_WHATSAPPACCOUNTS": "WhatsApp-Konto zum Benutzer hinzufügen",
-    "USERADD_WHATSAPPQUEUES": "Fügen Sie dem Benutzer die Whataspp-Warteschlange hinzu",
+    "USERADD_WHATSAPPQUEUES": "Whataspp-Warteschlange dem Benutzer hinzufügen",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPPCAPACITY": "WhatsApp Connector-Kapazität",
-    "MASK_SENSITIVE_DATA": "Sensitive Daten maskieren",
+    "WHATSAPPCAPACITY": "Kapazität Whatsapp",
+    "MASK_SENSITIVE_DATA": "Pers. Kundendaten verbergen",
     "WSS_PORT": "WSS-Port",
-    "ATTACHMENTS": "Anhänge",
-    "CALLYSQUARE_RECORDINGS": "Cally Square-Aufnahmen",
-    "CONTACT_MANAGER_LISTS": "Kontaktmanagerlisten",
+    "ATTACHMENTS": "Darf Anhänge herunterladen",
+    "CALLYSQUARE_RECORDINGS": "Darf Aufzeichnungen aus dem CallFlow herunterladen",
+    "CONTACT_MANAGER_LISTS": "Darf Listen aus dem Kontaktmanager herunterladen",
     "DOWNLOADS": "Downloads",
     "DOWNLOAD_PERMISSIONS": "Download-Berechtigungen",
-    "JSCRIPTY_SESSIONS": "Jscripty-Sitzungen",
-    "OMNICHANNEL_INTERACTIONS": "Omnichannel-Interaktionen",
-    "SCREEN_RECORDINGS": "Bildschirmaufnahmen",
-    "VOICE_RECORDINGS": "Sprachaufnahmen",
+    "JSCRIPTY_SESSIONS": "Darf Jscripty-Sitzungen herunterladen",
+    "OMNICHANNEL_INTERACTIONS": "Darf alle Kanalübergreifenden Interaktionen herunterladen",
+    "SCREEN_RECORDINGS": "Darf Bildschirmaufzeichnungen herunterladen",
+    "VOICE_RECORDINGS": "Darf Sprachaufzeichnungen herunterladen",
     "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Darf Outbound-Preview auch während Pause durchführen",
     "SELECT_RECALLME_CAMPAIGN": "Darf Auswahl für Outbound-Kampagne treffen",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Agent in der Warteschlange Kampagnen hinzufügen",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Agent Voice Warteschlangen hinzufügen",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Agent zu chatten Warteschlangen hinzufügen",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Agent Mail Warteschlangen hinzufügen",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Agent sms-Warteschlangen hinzufügen",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Agent zu offenen Kanal Warteschlangen hinzufügen",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Agent fax Warteschlangen hinzufügen",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Alle Queue Kampagnen",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Ausgewählte Warteschlange Kampagnen",
-    "ALL_QUEUES_VOICE_INBOUND": "Alle Warteschlangen",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Ausgewählte Voice Warteschlangen",
-    "ALL_QUEUES_CHAT_INBOUND": "Alle Chat Warteschlangen",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Ausgewählte Chat-warteschlangen",
-    "ALL_QUEUES_MAIL_INBOUND": "Alle E-Mail-Warteschlangen",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Ausgewählte Mail Warteschlangen",
-    "ALL_QUEUES_SMS_INBOUND": "Alle SMS-Warteschlangen",
-    "SELECTED_QUEUES_SMS_INBOUND": "Ausgewählte SMS-Warteschlangen",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alle offenen Kanal Warteschlangen",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Ausgewählten Offenen Kanal Warteschlangen",
-    "ALL_QUEUES_FAX_INBOUND": "Alle Fax Warteschlangen",
-    "SELECTED_QUEUES_FAX_INBOUND": "Ausgewählte Fax Warteschlangen",
+    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Agenten hinzufügen - ausgehende Anrufe",
+    "QUEUEADD_AGENT_VOICE_INBOUND": "Agenten hinzufügen - eingehende Anrufe",
+    "QUEUEADD_AGENT_CHAT_INBOUND": "Agenten hinzufügen - Chat-Warteschlangen",
+    "QUEUEADD_AGENT_MAIL_INBOUND": "Agenten hinzufügen - E-Mail-Warteschlangen",
+    "QUEUEADD_AGENT_SMS_INBOUND": "Agenten hinzufügen - SMS-Warteschlangen",
+    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Agenten hinzufügen - offener Kanal-Warteschlangen",
+    "QUEUEADD_AGENT_FAX_INBOUND": "Agenten hinzufügen - Fax-Warteschlangen",
+    "ALL_QUEUES_VOICE_OUTBOUND": "Alle Warteschlangen - ausgehende Anrufe",
+    "SELECTED_QUEUES_VOICE_OUTBOUND": "Gewählte Warteschlangen - ausgehende Anrufe",
+    "ALL_QUEUES_VOICE_INBOUND": "Alle Warteschlangen - eingehende Anrufe",
+    "SELECTED_QUEUES_VOICE_INBOUND": "Ausgewählte Warteschlangen - eingehende Anrufe",
+    "ALL_QUEUES_CHAT_INBOUND": "Alle Warteschlangen - Chat",
+    "SELECTED_QUEUES_CHAT_INBOUND": "Ausgewählte Warteschlangen - Chat",
+    "ALL_QUEUES_MAIL_INBOUND": "Alle Warteschlangen - E-Mail",
+    "SELECTED_QUEUES_MAIL_INBOUND": "Ausgewählte Warteschlangen - E-Mail",
+    "ALL_QUEUES_SMS_INBOUND": "Alle Warteschlangen - SMS",
+    "SELECTED_QUEUES_SMS_INBOUND": "Ausgewählte Warteschlangen - SMS",
+    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alle Warteschlangen - offener Kanal",
+    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Ausgewählte Warteschlangen - offener Kanal",
+    "ALL_QUEUES_FAX_INBOUND": "Alle Warteschlangen - Fax",
+    "SELECTED_QUEUES_FAX_INBOUND": "Ausgewählte Warteschlangen - Fax",
     "ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-Warteschlangen",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agent zu WhatsApp-Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agenten zu WhatsApp-Warteschlangen hinzufügen",
     "SELECTED_QUEUES_WHATSAPP_INBOUND": "Ausgewählte WhatsApp-Warteschlangen",
     "AD_SSO_ENABLED": "Active Directory-SSO",
     "AUTHENTICATION": "Authentifizierung",
index 3c87ee1..31c8d9c 100644 (file)
     "SIPPORT": "Porta SIP",
     "PENALTY": "Prioridade",
     "ACCOUNTNAME": "Nome da conta",
-    "ADD_TELEPHONE": "Adicionar Telefone",
-    "EDIT_TELEPHONE": "Editar Telefone",
-    "DELETE_TELEPHONE": "Excluir Telefone",
-    "TEAMS": "Equipes",
-    "DELETE_TEAM": "Excluir Equipe",
-    "AGENTADD_TEAM": "Adicionar agentes na equipe",
-    "EDIT_TEAM": "Editar Equipe",
+    "ADD_TELEPHONE": "Adicionar Ramal",
+    "EDIT_TELEPHONE": "Editar Ramal",
+    "DELETE_TELEPHONE": "Excluir Ramal",
+    "TEAMS": "Grupos",
+    "DELETE_TEAM": "Excluir Grupo",
+    "AGENTADD_TEAM": "Adicionar agentes no grupo",
+    "EDIT_TEAM": "Editar Grupo",
     "TYPE": "Tipo",
-    "TELEPHONES": "Telefones",
+    "TELEPHONES": "Ramais",
     "CALLERID": "Identificador de chamadas",
     "ENABLERECORDING": "Ativar gravação",
-    "STAFF": "Pessoal",
+    "STAFF": "Equipe",
     "ID": "Id",
     "NEW_USER": "Novo Usuário",
     "NEW_AGENT": "Novo Agente",
-    "NEW_TELEPHONE": "Novo Telefone",
-    "NEW_TEAM": "Nova Equipe",
-    "ADD_TEAM": "Adicionar Equipe",
+    "NEW_TELEPHONE": "Novo Ramal",
+    "NEW_TEAM": "Novo Grupo",
+    "ADD_TEAM": "Adicionar Grupo",
     "JOIN_QUEUE": "Junte-se à fila",
     "CAPACITY": "Capacidade",
     "AUTOINTERNAL": "Auto gerar número interno",
-    "ADD_AGENT_TO_TEAM": "Adicionar agente na equipe",
-    "TEAMADD_AGENT": "Adicionar agente na equipe",
+    "ADD_AGENT_TO_TEAM": "Adicionar agente no grupo",
+    "TEAMADD_AGENT": "Adicionar agente no grupo",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "PERMISSIONS": "Permissões",
     "ADD_AGENT_TO_QUEUE": "Adicionar agente à fila",
     "QUEUEADD_USER_SMS_INBOUND": "Adicionar usuário às filas do SMS",
     "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Adicionar usuário para filas do Open Channel",
     "QUEUEADD_USER_FAX_INBOUND": "Adicionar usuário às filas de fax",
-    "ALL_TEAMS": "Todas as equipes",
-    "SELECTED_TEAMS": "Equipes Selecionadas",
+    "ALL_TEAMS": "Todos os grupos",
+    "SELECTED_TEAMS": "Grupos Selecionados",
     "SELECTED_AGENTS": "Agentes Selecionados",
     "ALL_QUEUE_CAMPAIGNS": "Todas as campanhas de filas",
     "SELECTED_QUEUE_CAMPAIGNS": "Campanhas de Filas Selecionadas",
     "REPORT_TYPE": "Tipo de relatório",
     "SECTIONS": "Seções",
     "SUMMARY": "Resumo",
-    "TEAMS_ASSOCIATION": "Associação de equipes",
+    "TEAMS_ASSOCIATION": "Associação de grupos",
     "USERPROFILE": "Perfil de usuário",
     "USERPROFILES": "Perfis de usuário",
     "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Você não tem permissão para criar o recurso",
index 4904d14..4489cf0 100644 (file)
 {
   "TOOLS": {
-    "BOT": "Voicebot",
+    "BOT": "BOT",
     "CALL": "Anruf",
     "NAME": "Name",
-    "TRUNKS": "Amtsleitungen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "TRUNKS": "SIP-Trunks",
+    "SEARCH_FOR_ANYONE": "Suche",
     "ERRORS": {
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "HOST_REQUIRED": "Der Host wird benötigt",
-      "DEFAULTUSER_REQUIRED": "Der Standardbenutzer ist erforderlich",
-      "CALLERID_REQUIRED": "Die Anrufer-ID ist erforderlich",
-      "KEY_REQUIRED": "Der Schlüssel ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Kennwörter nicht übereinstimmen",
-      "VALIDITYSTART_REQUIRED": "Die Startzeit ist erforderlich",
-      "VALIDITYEND_REQUIRED": "Das Ende der Zeit ist erforderlich",
-      "MONTHDAY_REQUIRED": "Tag des Monats ist erforderlich",
-      "HOUR_REQUIRED": "Die Stunde ist erforderlich",
-      "CONTENT_REQUIRED": "Der Inhalt ist erforderlich",
-      "URL_REQUIRED": "Die URL ist erforderlich",
-      "URL_MUST_VALID_URL": "Die URL muss gültig sein",
-      "APPLICATION_REQUIRED": "Die Anwendung ist erforderlich",
-      "ARGUMENTS_REQUIRED": "Die Argumente sind erforderlich",
-      "NAME_MUST_VALID_PATTERN": "Der Name muss in einem gültigen Format geschrieben werden",
-      "POLLING_INTERVAL_REQUIRED": "Das Abfrageintervall ist erforderlich",
-      "TITLE_REQUIRED": "Der Titel ist erforderlich",
-      "EMAILADDRESS_REQUIRED": "Die E-Mail Adresse ist erforderlich",
-      "EVENTVARIABLES_REQUIRED": "Pflichtfeld",
-      "TYPE_REQUIRED": "Pflichtfeld",
-      "VALUE_REQUIRED": "Pflichtfeld",
-      "ACCOUNT_REQUIRED": "Pflichtfeld",
-      "FIELD_REQUIRED": "Pflichtfeld",
-      "INTEGRATION_REQUIRED": "Pflichtfeld",
-      "LIST_REQUIRED": "Pflichtfeld",
-      "TEMPLATE_REQUIRED": "Pflichtfeld",
-      "AUTOCREATECONTACT_REQUIRED": "Pflichtfeld",
-      "OUTBOUNDROUTE_REQUIRED": "Pflichtfeld",
-      "QUEUE_REQUIRED": "Pflichtfeld",
-      "TIME_RANGE_TO_REQUIRED": "Pflichtfeld",
-      "WEEK_DAYS_TO_REQUIRED": "Pflichtfeld",
-      "MONTH_DAYS_TO_REQUIRED": "Pflichtfeld",
-      "MONTH_TO_REQUIRED": "Pflichtfeld",
+      "NAME_REQUIRED": "Name erforderlich",
+      "HOST_REQUIRED": "Host erforderlich",
+      "DEFAULTUSER_REQUIRED": "Standardnutzer erforderlich",
+      "CALLERID_REQUIRED": "CallerID erforderlich",
+      "KEY_REQUIRED": "Schlüssel erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
+      "VALIDITYSTART_REQUIRED": "Startzeit erforderlich",
+      "VALIDITYEND_REQUIRED": "Endzeit erforderlich",
+      "MONTHDAY_REQUIRED": "Monats-Tag erforderlich",
+      "HOUR_REQUIRED": "Stunde erforderlich",
+      "CONTENT_REQUIRED": "Inhalt erforderlich",
+      "URL_REQUIRED": "URL erfoderlich",
+      "URL_MUST_VALID_URL": "Ungültiges Format URL",
+      "APPLICATION_REQUIRED": "Anwendung erforderlich",
+      "ARGUMENTS_REQUIRED": "Bedingungen erforderlich",
+      "NAME_MUST_VALID_PATTERN": "Ungültiges Format Name",
+      "POLLING_INTERVAL_REQUIRED": "Abfrageintervall erforderlich",
+      "TITLE_REQUIRED": "Titel erforderlich",
+      "EMAILADDRESS_REQUIRED": "E-Mail Adresse erforderlich",
+      "EVENTVARIABLES_REQUIRED": "Variablen erforderlich",
+      "TYPE_REQUIRED": "Typ erforderlich",
+      "VALUE_REQUIRED": "Wert erforderlich",
+      "ACCOUNT_REQUIRED": "Konto erforderlich",
+      "FIELD_REQUIRED": "Feld erforderlich",
+      "INTEGRATION_REQUIRED": "Integration erforderlich",
+      "LIST_REQUIRED": "Liste erforderlich",
+      "TEMPLATE_REQUIRED": "Vorlage erforderlich",
+      "AUTOCREATECONTACT_REQUIRED": "Kontakterstellung erforderlich",
+      "OUTBOUNDROUTE_REQUIRED": "Ausgehende Route erforderlich",
+      "QUEUE_REQUIRED": "Warteschlange erforderlich",
+      "TIME_RANGE_TO_REQUIRED": "Zeitintervall erforderlich",
+      "WEEK_DAYS_TO_REQUIRED": "Wochentage erforderlich",
+      "MONTH_DAYS_TO_REQUIRED": "Monats-Tag erforderlich",
+      "MONTH_TO_REQUIRED": "Monat erforderlich",
       "TIME_RANGE_FROM_INVALID": "Falsches Format",
       "TIME_RANGE_TO_INVALID": "Falsches Format",
       "CHANNEL_REQUIRED": "Pflichtfeld",
-      "ACTION_REQUIRED": "Pflichtfeld",
-      "CONFIGURATION_REQUIRED": "Pflichtfeld",
-      "PROJECT_REQUIRED": "Pflichtfeld",
-      "LOCATION_REQUIRED": "Pflichtfeld",
-      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "FONTSIZE_REQUIRED": "Pflichtfeld",
-      "PATH_REQUIRED": "Pflichtfeld",
-      "FORMAT_REQUIRED": "Pflichtfeld",
-      "REPORT_REQUIRED": "Pflichtfeld",
-      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "REFRESH_REQUIRED": "Pflichtfeld",
-      "TITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
-      "NAME_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
-      "OUTPUT_REQUIRED": "Pflichtfeld",
-      "REPORTFOLDER_REQUIRED": "Pflichtfeld",
-      "REPORTSUBFOLDER_REQUIRED": "Pflichtfeld",
-      "REPORTTYPE_REQUIRED": "Pflichtfeld",
-      "AGENT_REQUIRED": "Pflichtfeld",
-      "INFO_REQUIRED": "Pflichtfeld",
-      "SCRIPT_REQUIRED": "Pflichtfeld",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "TIMEOUT_REQUIRED": "Pflichtfeld",
-      "AUTOCREATE_FIELD_REQUIRED": "Pflichtfeld",
+      "ACTION_REQUIRED": "Aktion erforderlich",
+      "CONFIGURATION_REQUIRED": "Konfiguration erforderlich",
+      "PROJECT_REQUIRED": "Projekt erforderlich",
+      "LOCATION_REQUIRED": "Standort erforderlich",
+      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "FONTSIZE_REQUIRED": "Schriftgröße erforderlich",
+      "PATH_REQUIRED": "Pfad erforderlich",
+      "FORMAT_REQUIRED": "Format erforderlich",
+      "REPORT_REQUIRED": "Report erforderlich",
+      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "REFRESH_REQUIRED": "Aktualisierungsintervall erforderlich",
+      "TITLE_MAX_LENGTH": "Titel darf eine maximale Länge von {{max}} haben",
+      "NAME_MAX_LENGTH": "Name darf eine maximale Länge von {{max}} haben",
+      "OUTPUT_REQUIRED": "Ausgabeformat erforderlich",
+      "REPORTFOLDER_REQUIRED": "Ordner erforderlich",
+      "REPORTSUBFOLDER_REQUIRED": "Unterordner erforderlich",
+      "REPORTTYPE_REQUIRED": "Reporttyp erforderlich",
+      "AGENT_REQUIRED": "Agent erforderlich",
+      "INFO_REQUIRED": "Information erforderlich",
+      "SCRIPT_REQUIRED": "Skript erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "TIMEOUT_REQUIRED": "Timeout erforderlich",
+      "AUTOCREATE_FIELD_REQUIRED": "Automatisches Erstellen erforderlich",
       "IGNOREDIALERCONTACTID_REQUIRED": "KontaktID erforderlich"
     },
     "HOST": "Host",
-    "SECRET": "Geheimnis",
-    "DEFAULTUSER": "Default User",
+    "SECRET": "Secret",
+    "DEFAULTUSER": "Standardnutzer",
     "DESCRIPTION": "Beschreibung",
-    "ADD_TRUNK": "Amtsleitung hinzufügen",
+    "ADD_TRUNK": "Trunk hinzufügen",
     "HELP": {
-      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Anbieter.",
+      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Systemadministrator.",
       "HOST": "Die Domäne oder den Hostnamen für den Anbieter.",
-      "DEFAULTUSER": "Authentifizierung Benutzernamen, wenden Sie sich an den Anbieter.",
+      "DEFAULTUSER": "Authentifizierung Benutzername, wenden Sie sich an Ihren Anbieter.",
       "CALLERID": "Die Anrufer-ID im Format \"name\" <Nummer>.",
-      "REGISTRY": "Die amtsleitung Registry, die von einigen Anbietern, die in der Regel defaultuser:Secret@host.",
-      "FROMDOMAIN": "Legt Standardeinstellungen von:domain in SIP-Nachrichten als SIP-ua (Client). Einige Ziele können die obligatorische Identität Name anstatt nur die IP-Adresse.",
-      "FROMUSER": "Rovider wie ihr sie kennt. Dies ist der Benutzer, um anstelle der Anrufer-ID beim Tätigen von Anrufen zu anderen Peer (SIP-Proxy). Nur gültig für den Typ=peer.",
-      "OUTBOUNDPROXY": "IP-Adresse oder DNS-SRV-Ressourceneintrag name (ausgenommen die _sip._udp-Präfix): SRV Name, den Hostnamen oder die IP-Adresse des ausgehenden SIP-Proxy. Senden Sie ausgehende Signale zu diesem Proxy und nicht direkt an die Geräte. Nur gültig für den Typ=peer.",
-      "PORT": "Die Nummer des Ports, zu dem Sie eine Verbindung herstellen möchten wir auf der anderen Seite.",
-      "CONTEXT": "Die nutzbaren Rahmen für den Trunk.",
-      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: Wird verwendet, um die Authentifizierung für eingehende - Peer: für ausgehende Anrufe - Freund: Deckt sowohl die Eigenschaften der oben genannten.",
-      "DTMFMODE": "Wie DTMF (Dual-Tone Multi-Frequency): RFC2833: Die Standardeinstellung, die DTMF gesendet mit RTP, aber außerhalb der Audio Stream. INBAND DTMF gesendet wird: Die in der Audio Stream des aktuellen Gesprächs, wird über die Lautsprecher hörbar. Erfordert eine hohe CPU-Last. INFO: Diese Methode ist zwar sehr zuverlässig, es ist nicht für alle TK-Anlagen und viele SIP-Trunk.",
-      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall.Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
-      "QUALIFY": "Legt fest, wann die SIP erreichbar ist.",
-      "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge ihrer Präferenz.",
-      "INSECURE": "Legt fest, wie Verbindungen mit Peer, dass unsichere Einstellungen.",
-      "CALL_LIMIT": "Die Anzahl der eingehenden und abgehenden Anrufe, die zu einer Zeit.",
-      "DIRECTMEDIA": "Sternchen standardmäßig versucht, die RTP-Stream direkt aus den Anrufer an den Angerufenen. Einige Geräte werden nicht unterstützt wird (vor allem, wenn einer von Ihnen hinter einem NAT-Gerät befindet). Die Standardeinstellung ist Ja. Wenn Sie alle Clients hinter einem NAT-Gerät befindet, oder aus einem anderen Grund nicht möchten, dass Sternchen in der Audiospur, können Sie diese ausschalten.",
-      "CALLCOUNTER": "Aktivieren Sie die Zähler auf Geräte.",
-      "ADD_PHONE_TO_URI": "Legen Sie fest, ob die Provider ';user=Telefon\" an den URL.",
-      "TRUST_REMOTE_PARTY_ID": "Wenn Remote-Party-ID definieren sollte.",
-      "SEND_REMOTE_PARTY_ID_HEADER": "Status",
-      "ENCRYPTION": "Festlegen, ob die Remote-Party-ID gesendet werden soll (standardmäßig auf Nein).",
+      "REGISTRY": "Die SIP-Registry, in der Regel: defaultuser:Secret@host.",
+      "FROMDOMAIN": "Legt Standardeinstellungen von:domain in SIP-Nachrichten als SIP-ua (Client).",
+      "FROMUSER": "SIP-Nutzereinstellungen. Nur gültig für den Typ=peer.",
+      "OUTBOUNDPROXY": "IP-Adresse oder DNS-SRV-Ressourceneintrag. Senden Sie ausgehende Anrufe zu diesem Server, anstelle direkt zum Endgerät. Nur gültig für Typ \"Peer\".",
+      "PORT": "Die Nummer des Ports, zu dem Sie eine Verbindung herstellen möchten.",
+      "CONTEXT": "Der zu verwendende Kontext für den Trunk",
+      "TYPE": "Definiert die SIP-Rolle innerhalb der Anwendung. User: Authentifizierung für eingehende Verbindungen; Peer: für ausgehende Verbindungen - Friend: Beide Eigenschaften werden erfüllt",
+      "DTMFMODE": "Sendeart von DTMF-Tönen (Dual-Tone Multi-Frequency): RFC2833: Standardeinstellung, DMTF wird über RTP gesendet (außerhalb des Audiostreams) - INBAND DTMF wird innerhalb des Audiostreams gesendet, über die Lautsprecher hörbar. Dadurch höhere CPU-Belastung",
+      "NAT": "Ändert das Verhaltes des Asterisk-Telefonieservers für Nebenstellen hinter einer Firewall- Sofern eine der per Komma getrennten Optionen 'no', werden alle anderen Einstellungen ignoriert und der Server setzt ein 'nat=no'",
+      "QUALIFY": "Wenn aktiv, sendet der Telefonieserver in regelmäßigen Abständen ein Kommando, um die Erreichbarkeit der Gegenstelle zu überwachen",
+      "ALLOWCODECS": "Erlaubte Codecs in der Reihenfolge der Auflistung",
+      "INSECURE": "Erlaubt unsichere Einstellungen für peer",
+      "CALL_LIMIT": "Maximale Anzahl aller gleichzeitigen Anrufe (Ein- und Ausgehend)",
+      "DIRECTMEDIA": "Der Asterisk versucht, den RTP-Stream im Standard direkt zwischen dem Anrufer und dem Angerufenen aufzubauen. Manche Geräte (z.B. Firewalls) unterstützen diese Funktion nicht. Daher kann hier eine Umstellung erfolgen.",
+      "CALLCOUNTER": "Aktivieren der Anrufzähler für die Geräte",
+      "ADD_PHONE_TO_URI": "Fügt im SIP den user=phone zur URL hinzu",
+      "TRUST_REMOTE_PARTY_ID": "Soll der URL der anderen Partei vertraut werden?",
+      "SEND_REMOTE_PARTY_ID_HEADER": "Soll die ID der anderen Partei gesendet werden?",
+      "ENCRYPTION": "Legt fest, ob die Verbindung über SRTP verschlüsselt vorliegt. Sollte das peer kein SRTP unterstützen, werden Anrufe mit dem HANGUPCAUSE=58 beendet.",
       "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.",
-      "OTHERFIELDS": "Weitere Felder hinzufügen, in der Amtsleitungen conf-Dateien. In Sternchen format (key=value), jedes Feld auf einer Zeile.",
-      "EMAILADDRESS": "Sie können mehrere Adressen mit Kommata (z. b. John.doe@xcally.com, jane.miller@xcally.com)",
+      "OTHERFIELDS": "Weitere Felder zum Konfiguration des SIP-Trunks hinzufügen. Standard Asterisk-Format (key=value). Neue Zeile erstellen pro neuem Feld",
+      "EMAILADDRESS": "Mehrere Adressen mit Komma getrennt eingeben: (z. b. John.doe@xcally.com, jane.miller@xcally.com)",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "EVENTVARIABLES": "Wenn aktiviert, Es fügt alle Event Variablen an die Url",
+      "EVENTVARIABLES": "Fügt die Event-Variablen der URL hinzu",
       "T38PT_UDPTL": "Es: Ja, Redundanz, maxdatagram = 400",
       "EMAILBCCADDRESS": "Fügen Sie eine oder mehrere durch Kommas getrennte Adressen hinzu (z. B. john.doe@xcally.com, jane.miller@xcally.com).",
       "EMAILCCADDRESS": "Fügen Sie eine oder mehrere durch Kommas getrennte Adressen hinzu (z. B. john.doe@xcally.com, jane.miller@xcally.com).",
-      "BODY": "Wenn nicht ausgefüllt, wird der Standardwert gesendet",
+      "BODY": "(RAW-JSON-Format) Wenn nicht ausgefüllt, wird der Standardwert verwendet",
       "INFO": "Titel einfügen",
       "SCRIPT": "Skript einfügen",
       "SCRIPT_INFO": "Fügen Sie eine Beschreibung für das Skript ein",
       "SCRIPT_TYPE": "Geben Sie eine Typologie für das Skript ein (zB curl, bash ...)",
       "MANAGED": "Die Gesamtzahl der abgeschlossenen Interaktionen",
       "OPENED": "Die Gesamtzahl der aktiven Interaktionen",
-      "HEADERS": "Hinweis: Der Header-Abschnitt muss im RAW-JSON-Format {\"key\": \"value\"} vorliegen.\nHinweis: Wenn nicht ausgefüllt, wird der Standardwert gesendet",
-      "TIMEOUT": "Zeitüberschreitung in Sekunden anfordern. Der Wert muss zwischen 1 und 10 liegen und der Standardwert ist 5."
+      "HEADERS": "Hinweis: Der Header-Abschnitt muss im RAW-JSON-Format {\"key\": \"value\"} vorliegen. Hinweis: Wenn nicht ausgefüllt, wird der Standardwert verwendet",
+      "TIMEOUT": "Zeitüberschreitung in Sekunden anfordern. Der Wert muss zwischen 1 und 10 liegen - Standardwert ist 5."
     },
     "EDIT_TRUNK": "Trunk bearbeiten",
-    "DELETE_TRUNK": "Löschen Sie Trunk",
+    "DELETE_TRUNK": "Trunk löschen",
     "CREATED_AT": "Erstellt am",
     "SETTINGS": "Einstellungen",
-    "ADVANCED": "Erweiterte",
+    "ADVANCED": "Erweitert",
     "OTHER": "Andere",
     "ACTIVE": "Aktiv",
     "CONTEXT": "Kontext",
-    "CALLERID": "Die Anrufer-ID",
+    "CALLERID": "Anruferidentifikation (Caller-ID)",
     "TYPE": "Typ",
-    "DTMFMODE": "Mfv-Modus",
+    "DTMFMODE": "DTMF-Modus",
     "NAT": "NAT",
-    "QUALIFY": "Qualifizieren",
-    "ALLOWCODECS": "Codecs erlaubt",
+    "QUALIFY": "Trunk überwachen (SIP-Qualify)",
+    "ALLOWCODECS": "Erlaubte Codecs",
     "INSECURE": "Unsicher",
     "REGISTRY": "Registrierung",
-    "DIRECTMEDIA": "Direkte Medien",
+    "DIRECTMEDIA": "Direct Media",
     "CALLCOUNTER": "Anrufzähler",
-    "FROMDOMAIN": "Aus der Domäne",
-    "FROMUSER": "Vom Benutzer",
-    "OUTBOUNDPROXY": "Ausgehender Proxy",
-    "ADD_PHONE_TO_URI": "Telefon hinzufügen, URL",
-    "TRUST_REMOTE_PARTY_ID": "Vertrauen Gegenstelle ID",
-    "SEND_REMOTE_PARTY_ID_HEADER": "Senden einer Partner-ID Header",
+    "FROMDOMAIN": "From Domain",
+    "FROMUSER": "From Nutzer",
+    "OUTBOUNDPROXY": "Outbound Proxy",
+    "ADD_PHONE_TO_URI": "Telefon zur URL hinzufügen",
+    "TRUST_REMOTE_PARTY_ID": "Trust Remote Party ID",
+    "SEND_REMOTE_PARTY_ID_HEADER": "Remote Party im Header senden",
     "ENCRYPTION": "Verschlüsselung",
-    "PORT": "Hafen",
-    "TRANSPORT": "Verkehr",
+    "PORT": "Port",
+    "TRANSPORT": "Transport",
     "SAVE": "Speichern",
-    "VARIABLES": "Variablen",
-    "ADD_VARIABLE": "Variable hinzufügen",
-    "EDIT_VARIABLE": "Variable bearbeiten",
-    "DELETE_VARIABLE": "Variable löschen",
-    "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "VARIABLES": "Variabeln",
+    "ADD_VARIABLE": "Variabel hinzufügen",
+    "EDIT_VARIABLE": "Variabel bearbeiten",
+    "DELETE_VARIABLE": "Variabel löschen",
+    "SELECTED": "Ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "TAGS": "Tags",
-    "ADD_TAG": "Variable hinzufügen",
-    "EDIT_TAG": "Variable bearbeiten",
-    "DELETE_TAG": "Variable löschen",
+    "ADD_TAG": "Tag hinzufügen",
+    "EDIT_TAG": "Tag bearbeiten",
+    "DELETE_TAG": "Tag löschen",
     "PAUSES": "Pausen",
     "ADD_PAUSE": "Pause hinzufügen",
     "EDIT_PAUSE": "Pause bearbeiten",
     "DELETE_PAUSE": "Pause löschen",
-    "ADD_CANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "EDIT_CANNEDANSWER": "Vordefinierte Antwort bearbeiten",
-    "DELETE_CANNEDANSWER": "Vordefinierte Antwort löschen",
+    "ADD_CANNEDANSWER": "Textbaustein hinzufügen",
+    "EDIT_CANNEDANSWER": "Textbaustein bearbeiten",
+    "DELETE_CANNEDANSWER": "Textbaustein löschen",
     "KEY": "Schlüssel",
     "VALUE": "Wert",
-    "SOUNDS": "Sounds",
-    "EDIT_SOUND": "Ton bearbeiten",
-    "DELETE_SOUND": "Sound löschen",
-    "FINISH": "Fertig stellen",
-    "DROP_TO_UPLOAD": "Drop hochladen",
+    "SOUNDS": "Audiodateien",
+    "EDIT_SOUND": "Audiodatei bearbeiten",
+    "DELETE_SOUND": "Audiodatei löschen",
+    "FINISH": "Beenden",
+    "DROP_TO_UPLOAD": "Hier hineinziehen für Upload",
     "TRIGGERS": "Trigger",
-    "EDIT_TRIGGER": "Auslöser bearbeiten",
-    "DELETE_TRIGGER": "Auslöser löschen",
+    "EDIT_TRIGGER": "Trigger bearbeiten",
+    "DELETE_TRIGGER": "Trigger löschen",
     "ADD_TRIGGER": "Trigger hinzufügen",
     "DELETE": "Löschen",
-    "AUTOMATIONS": "Automatisierungen",
-    "EDIT_AUTOMATION": "Bearbeiten einer Automation",
+    "AUTOMATIONS": "Automation",
+    "EDIT_AUTOMATION": "Automation bearbeiten",
     "DELETE_AUTOMATION": "Automation löschen",
     "ADD_AUTOMATION": "Automation hinzufügen",
-    "INTERVALS": "Intervalle",
+    "INTERVALS": "Zeitintervalle",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_INTERVAL": "Intervall für Löschen.",
+    "DELETE_INTERVAL": "Intervall löschen",
     "ADD_INTERVAL": "Intervall hinzufügen",
     "TOOLS": "Werkzeuge",
-    "ID": "Id",
+    "ID": "ID",
     "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Download Sound",
-    "UPLOAD_SOUND": "Werkzeuge",
+    "DOWNLOAD_SOUND": "Audiodatei herunterladen",
+    "UPLOAD_SOUND": "Audiodatei hochladen",
     "CHANNEL": "Kanal",
-    "NEW_TRIGGER": "Neue Trigger",
+    "NEW_TRIGGER": "Neuer Trigger",
     "GENERAL": "Allgemein",
-    "STATUS": "Status",
+    "STATUS": "Trigger aktiv",
     "CONDITIONS&ACTIONS": "Bedingungen und Aktionen",
-    "ALLCONDITIONS": "Alle diese Bedingungen erfüllen:",
-    "ANYCONDITIONS": "Treffen diese Voraussetzungen:",
-    "ACTIONS": "Aktionen:",
+    "ALLCONDITIONS": "Alle Bedingungen werden erfüllt",
+    "ANYCONDITIONS": "Einige Bedingungen werden erfüllt",
+    "ACTIONS": "Aktionen",
     "NEW_AUTOMATION": "Neue Automation",
-    "TIMEOUT": "Timeout",
+    "TIMEOUT": "Zeitüberschreitung",
     "PEERSTATUS": "Peer Status",
-    "CALL_LIMIT": "Anrufe beschränken",
-    "OTHERFIELDS": "Andere Felder",
-    "NEW_VARIABLE": "Neue Variable",
+    "CALL_LIMIT": "Anrufe limitieren",
+    "OTHERFIELDS": "Zusätzliche SIP-Felder",
+    "NEW_VARIABLE": "Neue Variabel",
     "NEW_TAG": "Neuer Tag",
     "NEW_PAUSE": "Neue Pause",
-    "NEW_CANNEDANSWER": "Neue vordefinierte Antwort",
+    "NEW_CANNEDANSWER": "Neue Textvorlage",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
-    "NEW_TRUNK": "Neue Leitung",
-    "FROM": "Von",
-    "TO": "Zu",
-    "WEEKDAY": "Woche Tag",
-    "MONTHDAY": "Monat Tag",
+    "NEW_TRUNK": "Neuer Trunk",
+    "FROM": "von",
+    "TO": "an",
+    "WEEKDAY": "Wochentag",
+    "MONTHDAY": "Monatstag",
     "MONTH": "Monat",
     "ALWAYS": "Immer",
     "MON": "Montag",
     "NOV": "November",
     "DEC": "Dezember",
     "PASSWORD": "Passwort",
-    "CUSTOMDASHBOARDS": "Benutzerdefinierte Dashboards",
+    "CUSTOMDASHBOARDS": "Benutzerdef. Dashboards",
     "NEW_CUSTOMDASHBOARD": "Neues benutzerdefiniertes Dashboard",
-    "ADD_CUSTOMDASHBOARD": "Hinzufügen von benutzerdefinierten Dashboard",
-    "EDIT_CUSTOMDASHBOARD": "Benutzerdefinierte Dashboards bearbeiten",
-    "DELETE_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard löschen.",
-    "SCHEDULER": "Scheduler",
-    "NEW_SCHEDULE": "Neuer Zeitplan",
-    "ADD_SCHEDULE": "Zeitplan hinzufügen",
-    "EDIT_SCHEDULE": "Zeitplan bearbeiten",
-    "DELETE_SCHEDULE": "Zeitplan löschen",
+    "ADD_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard hinzufügen",
+    "EDIT_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard bearbeiten",
+    "DELETE_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard löschen",
+    "SCHEDULER": "Berichtsplanung",
+    "NEW_SCHEDULE": "Neue Planung",
+    "ADD_SCHEDULE": "Planung hinzufügen",
+    "EDIT_SCHEDULE": "Planung bearbeiten",
+    "DELETE_SCHEDULE": "Planung löschen",
     "SENDMAIL": "E-Mail senden",
     "CONFIGURATION": "Konfiguration",
     "MAIL": "E-Mail",
     "REPORTTYPE": "Berichtstyp",
     "REPORT": "Bericht",
-    "OUTPUT": "Ausgang",
+    "OUTPUT": "Ausgabeformat",
     "EXECUTEON": "Ausführung",
-    "REPORTRANGE": "Berichtsbereich",
+    "REPORTRANGE": "Bereich",
     "VALIDITYSTART": "Startzeit",
     "VALIDITYEND": "Endzeit",
     "EXECUTEEVERY": "Alle ausführen",
     "WEEKLY": "Wöchentlich",
     "MONTHLY": "Monatlich",
     "PREVIOUS_DAY": "Vorheriger Tag",
-    "LAST_SEVEN_DAYS": "Letzte sieben Tage",
-    "LAST_THIRTY_DAYS": "33 verbotenen letzte Tage",
+    "LAST_SEVEN_DAYS": "Letzte 7 Tage",
+    "LAST_THIRTY_DAYS": "Letzte 30 Tage",
     "LAST_MONTH": "Letzter Monat",
-    "WEEKDAYS": "Woche Tage",
+    "WEEKDAYS": "Wochentage",
     "HOUR": "Stunde",
     "DEFAULT": "Standard",
     "CSV": "CSV",
     "15MIN": "15 Minuten",
     "30MIN": "30 Minuten",
     "1H": "1 Stunde",
-    "VOICE": "Voice",
+    "VOICE": "Sprachanrufe",
     "CHAT": "Chat",
     "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "ADD_TEMPLATE": "Vorlage hinzufügen",
     "CONTENT": "Inhalt",
     "FIELD": "Feld",
-    "NO_ANYCONDITION_AVAILABLE": "Keine Bedingungen verfügbar",
-    "NO_ALLCONDITION_AVAILABLE": "Keine Bedingungen verfügbar",
+    "NO_ANYCONDITION_AVAILABLE": "Keine Bedingung verfügbar",
+    "NO_ALLCONDITION_AVAILABLE": "Keine Bedingung verfügbar",
     "NO_ACTION_AVAILABLE": "Keine Aktionen verfügbar",
     "ACTION": "Aktion",
     "EDIT_ANYCONDITION": "Bedingung bearbeiten",
     "ADD_ALLCONDITION": "Bedingung hinzufügen",
     "EDIT_ACTION": "Aktion bearbeiten",
     "DELETE_ACTION": "Aktion löschen",
-    "NEW_ACTION": "Neue Maßnahme",
+    "NEW_ACTION": "Neue Aktion",
     "ADD_ACTION": "Aktion hinzufügen",
     "QUEUE": "Warteschlange",
     "CALL_STATUS": "Anrufstatus",
-    "OUTBOUNDROUTE": "Abgehende Routen",
-    "EQUALS": "Ist gleich",
-    "NOT_EQUALS": "Nicht gleich",
-    "CONTACT_MANAGER": "Contacts Manager",
+    "OUTBOUNDROUTE": "Ausgehende Routen",
+    "EQUALS": "ist gleich",
+    "NOT_EQUALS": "ist nicht gleich",
+    "CONTACT_MANAGER": "Kontaktmanager",
     "INTEGRATIONS": "Integrationen",
     "MOTIONBAR": "Motion Bar",
     "JSCRIPTY": "Jscripty",
-    "URL_FORWARD": "URL Weiterleitung",
-    "WEB_POPUP": "Web Popup",
+    "URL_FORWARD": "URL-Weiterleitung",
+    "WEB_POPUP": "Web-Popup",
     "LIST": "Liste",
     "INTEGRATION": "Integration",
     "TEMPLATE": "Vorlage",
     "ARGUMENTS": "Argumente",
     "NO_APPS_AVAILABLE": "Keine Anwendungen verfügbar",
     "NEW_INTERVAL": "Neues Intervall",
-    "OPERATOR": "Betreiber",
+    "OPERATOR": "Operator",
     "NO_INTERVALS_AVAILABLE": "Keine Intervalle zur Verfügung",
     "YES": "Ja",
-    "NO": "Keine",
+    "NO": "Nein",
     "SUBJECT": "Betreff",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
     "BROWSER": "Browser",
     "INTERVAL": "Intervall",
-    "INFO": "Info",
+    "INFO": "Information",
     "TIME_RANGE": "Zeitbereich",
-    "WEEK_DAYS": "Woche Tage",
-    "MONTH_DAYS": "Monat Tage",
+    "WEEK_DAYS": "Wochentage",
+    "MONTH_DAYS": "Monatstage",
     "MONTHS": "Monate",
-    "DROP_TO_UPLOAD_MESSAGE": "Sie können auch Audiodateien hier ablegen\" hochzuladen. Nur MP3-, WAV-, GSM-Max. 15 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Dateien hier hinein ziehen zum Hochladen. Unterstütze Formate: .mp3, .wav, .gsm; Max. Dateigröße: 15 MB",
     "POLLING_INTERVAL": "Abfrageintervall (Sekunden)",
-    "DASHBOARD": "Armaturenbrett",
-    "NEW_DASHBOARDITEM": "Neue Dashboard Widget",
+    "DASHBOARD": "Dashboard",
+    "NEW_DASHBOARDITEM": "Neues Dashboard-Widget",
     "COUNTER": "Zähler",
     "IFRAME": "IFrame",
     "CLOCK": "Uhr",
-    "ADD_DASHBOARDITEM": "Dashboard Widget hinzufügen",
-    "EDIT_WIDGET": "Bearbeiten Widget",
-    "DELETE_WIDGET": "Löschen Widget",
-    "FLIP_WIDGET": "Flip Widget",
+    "ADD_DASHBOARDITEM": "Dashboard-Widget hinzufügen",
+    "EDIT_WIDGET": "Widget bearbeiten",
+    "DELETE_WIDGET": "Widget löschen",
+    "FLIP_WIDGET": "Widget drehen",
     "TITLE": "Titel",
     "UPDATE": "Aktualisieren",
     "LAYOUT": "Layout",
     "BACKGROUND_COLOR": "Hintergrundfarbe",
     "FOREGROUND_COLOR": "Vordergrundfarbe",
-    "FOREGROUND_TITLE_COLOR": "Vordergrund Titel Farbe",
-    "THEME": "Thema",
-    "LIGHT": "Licht",
+    "FOREGROUND_TITLE_COLOR": "Titelfarbe",
+    "THEME": "Design-Thema",
+    "LIGHT": "Hell",
     "DARK": "Dunkel",
     "TIMEZONE": "Zeitzone",
-    "DIGITAL_FORMAT": "Digitale Datum Format",
+    "DIGITAL_FORMAT": "Digitales Datumsformat",
     "TOOLS_QUERY": "Abfrage",
-    "SELECT": "Wählen Sie",
-    "WHERE": "Wo",
+    "SELECT": "Auswählen",
+    "WHERE": "where",
     "BACK": "Zurück",
     "PROJECT": "Projekt",
-    "GOTOREALTIME_TRUNK": "In Echtzeit, Trunk gehen",
-    "GOTO_TRUNK": "Um die Leitungsbündel gehen",
-    "CRON": "Cron",
+    "GOTOREALTIME_TRUNK": "Direkt zum Echtzeitmonitoring für SIP-Trunks",
+    "GOTO_TRUNK": "Direkt zum SIP-Trunk gehen",
+    "CRON": "Versand",
     "MINUTES": "Minuten",
     "HOURLY": "Stündlich",
     "YEARLY": "Jährlich",
-    "EVERY": "Jede",
+    "EVERY": "Jede(n)",
     "MINUTE": "Minute",
-    "ON_SECOND": "Im 2.",
-    "HOUR_ON_MINUTE": "Stunde Minute",
-    "AND_SECOND": "Und 2.",
-    "DAY_AT": "Tag an",
+    "ON_SECOND": "Zur Sekunde",
+    "HOUR_ON_MINUTE": "Stunde zur Minute",
+    "AND_SECOND": "und Sekunde",
+    "DAY_AT": "Am Tag",
     "START_TIME": "Startzeit",
-    "ON_THE": "Auf der",
-    "OF_EVERY": "Jedes",
+    "ON_THE": "Am",
+    "OF_EVERY": "An jedem",
     "MONTH_AT": "Monat",
-    "AT": "An",
+    "AT": "um",
     "LAST": "Letzte",
     "LASTUNIT": "Einheit",
     "MAILACCOUNT": "E-Mail Konto",
-    "OF": "Von",
-    "PAST_THE_HOUR": "Nach der vollen Stunde",
+    "OF": "von",
+    "PAST_THE_HOUR": "Minuten nach voller Stunde",
     "DAY": "Tag",
     "WEEK": "Woche",
     "YEAR": "Jahr",
-    "ON": "Auf",
+    "ON": "Am",
     "PAI": "P-Asserted-Identity",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OUTBOUND_ROUTE": "Abgehende Routen",
-    "EVENTVARIABLES": "Bei Variablen",
+    "OUTBOUND_ROUTE": "Ausgehende Routen",
+    "EVENTVARIABLES": "Event-Variablen",
     "FAX": "Fax",
     "INTERACTION": "Interaktion",
     "MESSAGE": "Nachricht",
-    "T38PT_UDPTL": "T38 pt Udptl",
-    "AUTOCREATECONTACT": "Erstellen Sie automatisch",
+    "T38PT_UDPTL": "Redundanz, maxdatagram = 400",
+    "AUTOCREATECONTACT": "Automatische Kontakterstellung",
     "COLOR": "Farbe",
-    "LOCATION": "Lage",
-    "NEW_TAB": "Neue Registerkarte",
+    "LOCATION": "Standort",
+    "NEW_TAB": "Neuer Tab",
     "NEW_WINDOW": "Neues Fenster",
-    "WINDOWWIDTH": "Fenster Breite (px)",
+    "WINDOWWIDTH": "Fensterbreite (px)",
     "WINDOWHEIGHT": "Fensterhöhe (px)",
     "EDIT_DASHBOARDITEM": "Dashboard-Widget bearbeiten",
     "FONTSIZE": "Schriftgröße",
     "FOREGROUND": "Vordergrund",
     "NONE": "Keiner",
     "TOTAL": "Gesamt",
-    "ABANDONED": "Verlassen",
+    "ABANDONED": "Abgebrochen",
     "WAITING": "Warten",
-    "TALKING": "Reden",
-    "ANSWERED": "Antwortete",
-    "UNMANAGED": "Nicht verwaltet",
+    "TALKING": "im Gespräch",
+    "ANSWERED": "Beantwortet",
+    "UNMANAGED": "Nicht bearbeitet",
     "CUSTOMTYPE": "Benutzerdefiniert [Pfad]",
-    "WEBREPORT": "Webbericht",
+    "WEBREPORT": "Interner Report",
     "PIECHART": "Kuchendiagramm",
     "MULTIBARCHART": "Multibar-Diagramm",
     "MOVE_WIDGET": "Widget verschieben",
-    "USERADD_CUSTOMDASHBOARD": "Hinzufügen von Benutzerberechtigungen",
-    "GOTODASHBOARD_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
-    "GOTO_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
-    "METRIC": "Metrisch",
-    "FILTERVOICEQUEUES": "Voice-Warteschlangen filtern",
+    "USERADD_CUSTOMDASHBOARD": "Berechtigungen hinzufügen",
+    "GOTODASHBOARD_CUSTOMDASHBOARD": "Vorschau Dashboard",
+    "GOTO_CUSTOMDASHBOARD": "Vorschau Dashboard",
+    "METRIC": "Metrik",
+    "FILTERVOICEQUEUES": "Anruf-Warteschlangen filtern",
     "SERIE1": "Serie 1",
     "SERIE2": "Serie 2",
     "SERIE3": "Serie 3",
-    "REFRESH": "Aktualisieren [s]",
+    "REFRESH": "Aktualisieren [S]",
     "FORMAT": "Format",
     "PATH": "Absoluter Pfad",
     "ALL_USERS": "Alle Nutzer",
-    "SELECTED_USERS": "Ausgewählte Benutzer",
+    "SELECTED_USERS": "Ausgewählte Nutzer",
     "ADD_WIDGET": "Widget hinzufügen",
-    "NEXTCONTACT": "Nächster",
+    "NEXTCONTACT": "Nächster Kontakt",
     "SENDIFEMPTY": "Senden, wenn leer",
-    "CANCEL": "Stornieren",
+    "CANCEL": "Abbrechen",
     "UPLOADING": "Hochladen",
-    "EMAILBCCADDRESS": "Bcc",
-    "EMAILCCADDRESS": "Cc",
-    "RUN_SCHEDULE": "Zeitplan ausführen",
-    "ADD_DISPOSITION": "Disposition hinzufügen",
-    "DELETE_DISPOSITION": "Disposition löschen",
-    "DISPOSITIONS": "Dispositionen",
-    "EDIT_DISPOSITION": "Disposition bearbeiten",
-    "NEW_DISPOSITION": "Neue Disposition",
-    "CLONE_TRUNK": "Klon-Trunk",
-    "BODY": "Karosserie",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "EMAILBCCADDRESS": "BCC",
+    "EMAILCCADDRESS": "CC",
+    "RUN_SCHEDULE": "Ausführen",
+    "ADD_DISPOSITION": "Qualifizierung hinzufügen",
+    "DELETE_DISPOSITION": "Qualifizierung löschen",
+    "DISPOSITIONS": "Qualifizierungen",
+    "EDIT_DISPOSITION": "Qualifizierung bearbeiten",
+    "NEW_DISPOSITION": "Neue Qualifizierung",
+    "CLONE_TRUNK": "Trunk klonen",
+    "BODY": "Textinhalt",
+    "CANNEDANSWERS": "Globale Textbausteine",
     "REPORTFOLDER": "Berichtsordner",
-    "REPORTSUBFOLDER": "Unterordner melden",
-    "PREVIOUSCONTACT": "Bisherige",
+    "REPORTSUBFOLDER": "Unterordner",
+    "PREVIOUSCONTACT": "Vorheriger Kontakt",
     "VIDEOSUPPORT": "Video-Unterstützung",
     "AGENT": "Agent",
     "HEADERS": "Überschriften",
     "SCRIPT": "Skript",
-    "SCRIPT_INFO": "Info",
+    "SCRIPT_INFO": "Information",
     "SCRIPT_TYPE": "Art",
     "MOTION_TAB": "Neue Registerkarte \"Agent Dashboard\"",
     "WHATSAPP": "WhatsApp Connector",
     "AUTOCREATE_FIELD": "Feld automatisch erstellen",
-    "GLOBALS": "Globals",
+    "GLOBALS": "Globale Werte",
     "SEARCH_FIELDS": "Suchfelder",
     "STANDARD": "Standard",
     "MOTION_BAR": "Motion Bar",
     "ALL": "Alle",
-    "ALL_DISPOSITIONS": "Alle Dispositionen",
-    "FIRST_LEVEL_DISPOSITION": "First Level Disposition",
-    "LEVEL": "Niveau",
-    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
-    "SELECT_LEVEL": "Wählen Sie eine Ebene",
-    "TITLEFONTSIZE": "Schrifttitelgröße",
+    "ALL_DISPOSITIONS": "Alle Qualifizierungen",
+    "FIRST_LEVEL_DISPOSITION": "Qualifizierung Ebene 1",
+    "LEVEL": "Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Qualifizierung Ebene 2",
+    "SELECT_LEVEL": "Ebene auswählen",
+    "TITLEFONTSIZE": "Schriftgröße Titel",
     "ADD_CONTACTITEMTYPE": "Hinzufügen",
     "CONTACTITEMTYPE": "Kontaktartikeltypen",
     "NEW_CONTACTITEMTYPE": "Neuer Kontaktelementtyp",
index 832ae56..0339802 100644 (file)
 {
   "VOICE": {
-    "GOTO_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
-    "GOTOREALTIME_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
+    "GOTO_VOICEQUEUE": "Zur Anruf-Warteschlange gehen",
+    "GOTOREALTIME_VOICEQUEUE": "Direkt zur Echtzeit-Warteschlange",
     "NAME": "Name",
     "LOGOUT": "An-/Abmelden",
-    "VOICEQUEUES": "Voice Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "VOICEQUEUES": "Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche",
     "BACK": "Zurück",
-    "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
-    "DELETE_VOICEDISPOSITION": "Disposition löschen",
-    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-    "EDIT_VOICEQUEUE": "Edit Voice Warteschlange",
+    "SELECTED": "Ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
+    "DELETE_VOICEDISPOSITION": "Qualifizierung löschen",
+    "EDIT_VOICEDISPOSITION": "Qualifizierung bearbeiten",
+    "EDIT_VOICEQUEUE": "Warteschlange bearbeiten",
     "DELETE_VOICEQUEUE": "Warteschlange löschen",
-    "MOHSOUNDS": "Die MOH-Sounds",
-    "STRATEGY": "Strategie",
+    "MOHSOUNDS": "Wartemusik",
+    "STRATEGY": "Verteilungsstrategie",
     "DESCRIPTION": "Beschreibung",
-    "ADD_VOICEQUEUE": "Hinzufügen von Warteschlangen",
+    "ADD_VOICEQUEUE": "Warteschlangen hinzufügen",
     "CREATED_AT": "Erstellt am",
-    "CANT_PLAY_GSM_AUDIO_FILES": "Nicht gsm-Audiodateien",
+    "CANT_PLAY_GSM_AUDIO_FILES": "GMS-Audiodateien können nicht abgespielt werden",
     "APPLICATIONS_LIST": "Liste der Anwendungen",
     "LEGEND": {
       "CUSTOM_APPLICATION": "(*) - Benutzerdefinierte Anwendung."
     },
     "ERRORS": {
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "APPLICATION_NAME_REQUIRED": "Der Name der Anwendung ist erforderlich",
-      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
-      "PHONENUMBER_REQUIRED": "Die Telefonnummer ist erforderlich",
-      "CONTEXT_REQUIRED": "Der Rahmen ist erforderlich",
-      "DESTINATIONPATTERN_REQUIRED": "Das Ziel-pattern ist erforderlich",
-      "FULLNAME_REQUIRED": "Der vollständige Name ist erforderlich",
-      "EMAIL_REQUIRED": "Die E-Mail ist erforderlich",
-      "EMAIL_MUST_VALID": "Die e-Mail muss in einem gültigen Format",
-      "MAILBOX_REQUIRED": "Die Mailbox ist erforderlich",
-      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Kennwörter stimmen nicht überein.",
-      "TIMEZONE_REQUIRED": "Die Zeitzone ist erforderlich",
-      "PREFIX_REQUIRED": "Das Präfix ist erforderlich",
-      "OPTIONS_REQUIRED": "Die Optionen sind Erforderlich",
-      "AFTERCALLWORKDURATION_REQUIRED": "Die Arbeit nach Anruf Dauer ist erforderlich",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Die Technologie/Ressource erforderlich ist",
-      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
-      "VALUE_REQUIRED": "Der Wert ist erforderlich",
-      "EXTENSION_REQUIRED": "Die Verlängerung ist erforderlich",
-      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
-      "NAME_MUST_VALID_PATTERN": "Der Name muss in einem gültigen Format geschrieben werden",
-      "APPLICATION_REQUIRED": "Die Anwendung ist erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Timeout muss größer als oder gleich",
-      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die max. Länge muss größer als oder gleich",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Wiederholung muss größer als oder gleich",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Nachlese Zeit muss größer als oder gleich",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Das Gewicht muss größer als oder gleich",
-      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Häufigkeit verkünden muss größer als oder gleich",
-      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Min Frequenz ankündigen muss größer als oder gleich",
-      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die periodische Frequenz ankündigen muss größer als oder gleich",
-      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Arbeit nach Anruf Dauer muss größer als oder gleich",
-      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Verzögerung muss größer als oder gleich",
-      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Position muss größer als oder gleich",
-      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den Schnitt stellen muss größer als oder gleich",
-      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Muss die Max Sekunden größer als oder gleich",
-      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Max Meldungen muss größer als oder gleich",
-      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Max Meldungen muss kleiner als oder gleich",
-      "CALLERIDALL_MUST_VALID_PATTERN": "Falsches Format",
-      "OUTBOUNDROUTE_REQUIRED": "Pflichtfeld",
-      "VARIABLE_REQUIRED": "Pflichtfeld",
-      "CALLER_ID_MUST_VALID_PATTERN": "Falsches Format",
-      "TRUNK_REQUIRED": "Pflichtfeld",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
-      "PROJECT_REQUIRED": "Pflichtfeld",
-      "PENALTY_REQUIRED": "Sie müssen einen Wert für die Strafe angeben"
+      "NAME_REQUIRED": "Name erforderlich",
+      "APPLICATION_NAME_REQUIRED": "Name der Anwendung erforderlich",
+      "TIMEOUT_REQUIRED": "Timeout erforderlich",
+      "PHONENUMBER_REQUIRED": "Telefonnummer erforderlich",
+      "CONTEXT_REQUIRED": "Kontext erforderlich",
+      "DESTINATIONPATTERN_REQUIRED": "Ziel-Pattern erforderlich",
+      "FULLNAME_REQUIRED": "Vollständiger Name erforderlich",
+      "EMAIL_REQUIRED": "E-Mail erforderlich",
+      "EMAIL_MUST_VALID": "Ungültiges Format E-Mail",
+      "MAILBOX_REQUIRED": "Mailbox erforderlich",
+      "PASSWORD_REQUIRED": "Passwort erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
+      "TIMEZONE_REQUIRED": "Zeitzone erforderlich",
+      "PREFIX_REQUIRED": "Präfix erforderlich",
+      "OPTIONS_REQUIRED": "Bedingungen  Erforderlich",
+      "AFTERCALLWORKDURATION_REQUIRED": "Dauer Nacharbeit erforderlich",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Ressource erforderlich",
+      "PHONE_REQUIRED": "Telefonnummer erforderlich",
+      "VALUE_REQUIRED": "Wert erforderlich",
+      "EXTENSION_REQUIRED": "Nebenstelle erforderlich",
+      "PRIORITY_REQUIRED": "Priorität erforderlich",
+      "NAME_MUST_VALID_PATTERN": "Ungültiger Name Format",
+      "APPLICATION_REQUIRED": "Anwendung erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Timeout muss größer oder gleich sein als",
+      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die max. Länge muss größer oder gleich sein als",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wiederversuche muss größer oder gleich sein als",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nacharbeit Zeit muss größer oder gleich sein als",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gewichtung muss größer oder gleich sein als",
+      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Frequenz der Ansagen muss größer oder gleich sein als",
+      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min. Frequenz der Ansagen muss größer oder gleich sein als",
+      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wiederholende Frequenz der Ansagen muss größer oder gleich sein als",
+      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nacharbeit Zeit muss größer oder gleich sein als",
+      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Verzögerung muss größer oder gleich sein als",
+      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Position muss größer oder gleich sein als",
+      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Schnitt muss größer oder gleich sein als",
+      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Sekundenmuss größer oder gleich sein als",
+      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Nachrichten muss größer oder gleich sein als",
+      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Nachrichten muss kleiner oder gleich sein als",
+      "CALLERIDALL_MUST_VALID_PATTERN": "Format ungültig Anrufer-ID (alle)",
+      "OUTBOUNDROUTE_REQUIRED": "Ausgehende Route erforderlich",
+      "VARIABLE_REQUIRED": "Variabel erforderlich",
+      "CALLER_ID_MUST_VALID_PATTERN": "Format ungültig Anrufer-ID",
+      "TRUNK_REQUIRED": "SIP-Trunk erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "PausenID während Qualifizierung erforderlich",
+      "PROJECT_REQUIRED": "Projekt erforderlich",
+      "PENALTY_REQUIRED": "Wert für Verzögerung erforderlich"
     },
     "GENERAL": "Allgemein",
-    "TIMEOUT": "Timeout",
+    "TIMEOUT": "Max. Klingelzeit Nebenstelle",
     "MAXLENGTH": "Maximale Länge",
-    "RETRY": "Versuchen Sie es erneut",
-    "WRAPUPTIME": "-Zeit",
-    "WEIGHT": "Gewicht",
-    "JOINWHENEMPTY": "Melden Sie wenn sie leer sind",
-    "LEAVEWHENEMPTY": "Wenn sie leer lassen",
+    "RETRY": "Erneut versuchen",
+    "WRAPUPTIME": "Nacharbeitszeit",
+    "WEIGHT": "Gewichtung",
+    "JOINWHENEMPTY": "Beitreten, wenn leer",
+    "LEAVEWHENEMPTY": "Verlassen, wenn leer",
     "HELP": {
-      "TIMEOUT": "Gibt die Anzahl von Sekunden an, die das Gerät.",
-      "MAXLENGTH": "Gibt die maximale Anzahl der Anrufer, die in der Warteschlange. Ein Wert von Null bedeutet, dass eine unbegrenzte Anzahl von Anrufern in der Warteschlange sind erlaubt.",
-      "RETRY": "Gibt die Anzahl der Sekunden, die gewartet wird, bevor das nächste Mitglied in die Warteschlange, wenn der Wert für die Zeitüberschreitung erschöpft ist, während versucht wird, den ein Mitglied der Warteschlange.",
-      "WRAPUPTIME": "Die Anzahl der Sekunden, die ein Mitglied in einer Warteschlange verfügbar, nachdem Sie einen Anruf.",
-      "WEIGHT": "Legt das Gewicht einer Warteschlange. Eine Warteschlange mit einem höheren Gewicht definiert werden erste Priorität, wenn Mitglieder, die mit mehreren Warteschlangen.",
-      "JOINWHENEMPTY": "Steuert, ob ein Anrufer wird zur Warteschlange hinzugefügt werden, wenn keine Mitglieder verfügbar sind.",
-      "LEAVEWHENEMPTY": "Zur Kontrolle, ob die Anrufer aus der Warteschlange, wenn die Mitglieder nicht mehr bereit sind, Anrufe zu beantworten.",
-      "ANNOUNCEFREQUENCY": "Legt fest, wie oft sollten wir den Anrufer ankündigen und/oder geschätzte Wartezeit in der Warteschlange. Setzen Sie diesen Wert auf Null, um die Funktion zu deaktivieren.",
-      "MINANNOUNCEFREQUENCY": "Gibt die minimale Zeit, die verstreichen müssen, bevor wir Ihnen die Anrufer in der Warteschlange wieder. Dieser wird verwendet, wenn der Anrufer die Position kann sich häufig ändern, um zu verhindern, dass der Anrufer hören mehrere Updates in einem kurzen Zeitraum.",
-      "PERIODICANNOUNCEFREQUENCY": "Gibt an, wie oft wir sollten regelmäßige Ansagen, die dem Anrufer vorgespielt werden.",
-      "ANNOUNCEPOSITIONLIMIT": "Sie kann verwendet werden, wenn Sie definiert haben, verkünden-Position entweder als Begrenzung oder mehr.",
-      "AFTERCALLWORKDURATION": "Die Dauer der Pause durch die Option \"Arbeit nach Anruf",
-      "MEMBERDELAY": "Sie kann verwendet werden, wenn Sie wollen, dass es eine Verzögerung, bevor der Anrufer und Mitglied der Warteschlange, die miteinander verbunden sind.",
-      "MUSICONHOLD": "Setzt die Musik klasse verwendet werden, die von einer bestimmten Warteschlange an.",
-      "ANNOUNCETOAGENT": "Für die Wiedergabe einer Ansage auf den Agenten, der den Anruf entgegengenommen hat, ihn wissen zu lassen, was der Anrufer die Warteschlange aus.",
-      "RANDOMPERIODICANNOUNCE": "Falls auf Ja eingestellt, wird die festgelegte regelmäßige Mitteilungen in einer zufälligen Reihenfolge.",
-      "ANNOUNCEHOLDTIME": "Legt fest, ob die geschätzte Wartezeit gespielt werden sollte zusammen mit den regelmäßigen Ankündigungen.",
-      "ANNOUNCECALLERPOSITION": "Legt fest, ob es sich bei dem Anrufer seine Position in der Warteschlange mitgeteilt werden sollten. Wenn die Einstellung Nein lautet, die Position wird nicht bekannt gegeben. Falls auf Ja eingestellt, wird die Position des Anrufers wird immer bekannt gegeben. Wenn der Wert überschritten wird, wird der Anrufer hört ihre Position in der Warteschlange nur, wenn er sich innerhalb der Grenze von AK-Position. Wenn der Wert auf Mehr, hört der Anrufer ihre Position, wenn es über die Zahl von AK-Position.",
-      "REPORTHOLDTIMEAGENT": "Die Berichterstattung über die CLI des Anrufers mit der Zeit in der Warteschleife in der Warteschlange vor.",
-      "PERIODICANNOUNCE": "Eine Reihe von regelmäßigen Mitteilungen gespielt zu werden, in der Reihenfolge wiedergegeben, in der sie definiert sind.",
-      "HOLDTIMEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Hold\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "YOUARENEXTANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Sie sind jetzt in erster Linie\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "THEREAREANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Es gibt\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "WAITINGCALLSANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Wartende Anrufe\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Die voraussichtliche Wartezeit ist\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "MINUTESANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"min\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "MINUTEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"min\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "SECONDSANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Sekunden\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "THANKYOUANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Vielen Dank für Ihre Geduld.\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "AFTERCALLWORK": "Wenn der Agent aktiv ist, wird auf eine Pause nach einer abgeschlossenen Anruf in der Warteschlange",
-      "AUTOPAUSE": "Aktiviert/Deaktiviert die automatische Unterbrechung der Mitglieder, die es versäumen, um einen Anruf zu beantworten. Wenn aktiv, wird diese Mitgliedstaaten angehalten zu werden in allen Warteschlangen er Mitglied ist.",
-      "RINGINUSE": "Verwendet werden, um zu vermeiden, Senden von Anrufen an Mitglieder, deren Status im Einsatz ist.",
-      "TIMEOUTRESTART": "Falls auf Ja eingestellt, wird das Timeout für einen Agenten zu beantworten, wenn entweder ein Besetztzeichen oder wird mit dem Status \"Überlastung des Kanals.",
-      "CONTEXT": "Ermöglicht einem Anrufer zu beenden, die die Warteschlange durch Drücken einer einzigen Taste MFV-Ziffer. Wenn Sie einen Kontext angegeben ist und der Anrufer gibt eine Zahl, Ziffer wird versuchen, die angepasst werden können, im Rahmen festgelegt, und es wird auch weiterhin die Ausführung Nummernplan.",
-      "SETINTERFACEVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange, die einige Variablen werden(siehe wiki)",
-      "SETQUEUEVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange und kurz vor dem Anrufer die Warteschlange verlassen einige Variablen werden(siehe wiki)",
-      "SETQUEUEENTRYVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange, die einige Variablen werden(siehe wiki)",
-      "RECORDING": "Aktivieren der Aufzeichnung",
-      "VOICEMAIL_CONTEXT": "Im Rahmen der relativen Erweiterung.",
+      "TIMEOUT": "Zeitüberschreitung Klingeln (Sekunden)",
+      "MAXLENGTH": "Maximaler Anrufer in der Warteschlange. Wenn Wert 0, dann keine Begrenzung.",
+      "RETRY": "Definiert wie Lange (Sekunden) auf eine Antwort des Agenten gewartet wird, bevor der Anruf beim nächsten Agenten klingelt",
+      "WRAPUPTIME": "Zeit (in Sekunden), in welcher der Agent nach einem Anruf nicht verfügbar ist",
+      "WEIGHT": "Gewichtung der Warteschlangen untereinander, sofern die Agenten auf mehr als einer Warteschlange arbeiten",
+      "JOINWHENEMPTY": "Definiert, ob ein Anruf in die Warteschleife eintreten kann, wenn keine Agenten verfügbar sind",
+      "LEAVEWHENEMPTY": "Trennt den Anruf in der Warteschleife, sofern keine Agenten verfügbar sind",
+      "ANNOUNCEFREQUENCY": "Definiert, wie oft dem Anrufer die aktuelle Warteposition und/oder die erwartete Wartezeit angesagt wird. (0 zum Deaktivieren dieser Funktion)",
+      "MINANNOUNCEFREQUENCY": "Minimale Ansage der Warteposition/Wartezeit. Nützlich, wenn der Anrufer die Warteposition oft wechselt",
+      "PERIODICANNOUNCEFREQUENCY": "Intervall für sich Wiederholende Ansagen an den Anrufer",
+      "ANNOUNCEPOSITIONLIMIT": "Warteposition wird nur ab dem eingestellten Wert angesagt",
+      "AFTERCALLWORKDURATION": "Die Dauer der Nacharbeit nach einem Anruf (Sekunden)",
+      "MEMBERDELAY": "Verzögert die Zustellung des Anrufes an den Agenten um den eingestellten Wert (Sekunden)",
+      "MUSICONHOLD": "Definiert die Wartemusik innerhalb der Warteschlange",
+      "ANNOUNCETOAGENT": "Spielt dem Agenten eine Mitteilung über den Ursprung des Anrufes vor der Annahme",
+      "RANDOMPERIODICANNOUNCE": "Bei \"Ja\" werden die definierten Ansagen in einer zufälligen Reihenfolge abgespielt",
+      "ANNOUNCEHOLDTIME": "Definiert, ob die geschätzte Wartezeit zusätzlich zur Wartemusik abgespielt wird. (Ja/Nein/nur ein Mal)",
+      "ANNOUNCECALLERPOSITION": "Definiert, ob die aktuelle Warteposition des Anrufers angesagt wird. Nein = Niemals; Ja = Immer; Limit = nur wenn innerhalb des Limits für Warteposition; Mehr = wenn überhalb des Limits für Warteposition",
+      "REPORTHOLDTIMEAGENT": "Der Agent bekommt nach dem Annehmen und Verbinden des Anrufes die Wartezeit des Kunden angesagt",
+      "PERIODICANNOUNCE": "Reihenfolge der Ansagen innerhalb der Warteschlange",
+      "HOLDTIMEANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für die Ansage der Wartezeit. Bsp: \"Ihre geschätzte Wartezeit beträgt\" Wenn leer, wird keine Ansage abgespielt",
+      "YOUARENEXTANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für die Ansage der ersten Position in der Warteschlange. Bsp: \"Der nächste freie Mitarbeiter wird Ihren Anruf in Kürze entgegennehmen\" Wenn leer, wird keine Ansage abgespielt",
+      "THEREAREANNOUNCE": "Erster Teil der Ansage für die bereits wartenden Anrufe. Bsp: \"Vor Ihnen befinden sich noch..:\"; Wenn leer, wird keine Ansage abgespielt",
+      "WAITINGCALLSANNOUNCE": "Zweiter Teil der Ansage für die bereits wartenden Anrufe. Bsp: \"...Anrufe in der Warteschlange\"; Wenn leer, wird keine Ansage abgespielt",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für die Ansage der geschätzten Wartezeit. Bsp: \"Ihre aktuelle Wartezeit beträgt ca....\" Wenn leer, wird keine Ansage abgespielt",
+      "MINUTESANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für das Wort \"Minuten\". Wenn leer, wird keine Ansage abgespielt",
+      "MINUTEANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für das Wort \"Minute\". Wenn leer, wird keine Ansage abgespielt",
+      "SECONDSANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für das Wort \"Sekunden\". Wenn leer, wird keine Ansage abgespielt",
+      "THANKYOUANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für eine Ansage zum Dank. Bsp: \"Vielen Dank für Ihre Geduld\" Wenn leer, wird keine Ansage abgespielt",
+      "AFTERCALLWORK": "Wenn aktiviert, wird der Agent nach jedem Anruf in eine zeitlich definierbare Pause zur Nacharbeit gesetzt",
+      "AUTOPAUSE": "Legt fest, ob der Agent in eine automatische Pause gesetzt wird, sofern dieser den aktuellen Anruf nicht innerhalb der definierten Zeit entgegennimmt. Wenn ja, wird der Agent in allen zugewiesenen Kampagnen auf Pause gesetzt. ",
+      "RINGINUSE": "Aktivieren/Deaktivieren der Anrufzustellung wenn der Status der Nebenstelle Besetzt ist",
+      "TIMEOUTRESTART": "Wenn ja, wird die Zeitüberschreitung bei Agenten mit \"Besetzt\" oder \"Verbindungsfehler\"-Status übersprungen",
+      "CONTEXT": "Ermöglicht einem Anrufer, durch Drücken einer einzelnen Taste, die Warteschlange zu verlassen.",
+      "SETINTERFACEVARIABLES": "Wenn aktiviert, können aufgenommene Variabeln vor einem Anruf an den Agenten weitergegeben werden. (Siehe Wiki)",
+      "SETQUEUEVARIABLES": "Wenn aktiviert, können aufgenommene Variabeln nach dem Verlassen der Warteschlange an den Agenten weitergegeben werden. (Siehe Wiki)",
+      "SETQUEUEENTRYVARIABLES": "Wenn aktiviert, können aufgenommene Variabeln beim Eintreten in die Warteschlange an den Agenten weitergegeben werden. (Siehe Wiki)",
+      "RECORDING": "Automatische Gesprächsaufzeichnung Aktivieren/Deaktivieren",
+      "VOICEMAIL_CONTEXT": "Kontext für Voicemail",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "CALLERIDALL": "Unterstützte Formate: \"CallerId\" & lt; number & gt;",
       "CALLER_ID": "Unterstützte Formate: \"CallerId\" & lt; number & gt;",
-      "MANDATORYDISPOSITIONPAUSEID": "Pausenstatus, der während der Zwangsdisposition festgelegt werden soll",
-      "SERVICELEVEL": "Zweite Einstellungen für Service Level (Standard = 0, kein SL). Wird für Service Level-Statistiken verwendet (Anrufe werden innerhalb des Service Level-Zeitrahmens beantwortet)",
-      "MONITORFORMAT": "Gibt das Format der Aufnahmedatei an. Wenn es auf 'inaktiv' gesetzt ist, werden Anrufe nicht aufgezeichnet",
+      "MANDATORYDISPOSITIONPAUSEID": "Agentenstatus während der Qualifizierung eines Kontaktes",
+      "SERVICELEVEL": "Einstellungen für Service-Level (Standard = 0, kein SL).  (Anrufe werden innerhalb des Service Level-Zeitrahmens beantwortet)",
+      "MONITORFORMAT": "Definiert das Dateiformat für Gesprächsaufzeichnungen. Wenn leer, findet keine Gesprächsaufzeichnung statt.",
       "SAVE_ROUTES": "Die Einstellungen der Route wurden geändert. Bitte nicht vergessen, zu Speichern."
     },
-    "MUSICONHOLD": "Musik auf Halten",
-    "ANNOUNCETOAGENT": "Geben Sie Agent",
-    "ANNOUNCEMENTS": "Ankündigungen",
-    "ADVANCED": "Erweiterte",
-    "ANNOUNCEFREQUENCY": "Frequenz ankündigen",
-    "MINANNOUNCEFREQUENCY": "Minimale Frequenz ankündigen",
-    "PERIODICANNOUNCEFREQUENCY": "Periodische Frequenz ankündigen",
-    "RANDOMPERIODICANNOUNCE": "Random Periodische verkünden",
-    "ANNOUNCEHOLDTIME": "Geben Sie Zeit",
-    "ANNOUNCECALLERPOSITION": "Position des Anrufers bekannt",
-    "ANNOUNCEPOSITIONLIMIT": "Geben Position Limit",
-    "REPORTHOLDTIMEAGENT": "Bericht Agenten",
-    "PERIODICANNOUNCE": "Periodische verkünden",
-    "HOLDTIMEANNOUNCE": "Zeit in der Warteschleife verkünden",
-    "YOUARENEXTANNOUNCE": "\"Sie sind weiter' verkünden",
-    "THEREAREANNOUNCE": "'Es gibt' verkünden",
-    "WAITINGCALLSANNOUNCE": "Wartende Anrufe,",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Geschätzte Zeit halten,",
-    "MINUTESANNOUNCE": "Minuten ankündigen",
-    "MINUTEANNOUNCE": "Minute verkünden",
-    "SECONDSANNOUNCE": "Sekunden,",
-    "THANKYOUANNOUNCE": "'Vielen Dank' verkünden",
-    "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "Arbeit nach Anruf",
-    "AFTERCALLWORKDURATION": "Arbeit nach Anruf Dauer",
-    "RINGINUSE": "Ring in Verwendung",
-    "MEMBERDELAY": "Die Verzögerung",
-    "TIMEOUTRESTART": "Timeout starten",
-    "MONITORFORMAT": "Aufzeichnungsformat",
-    "SETINTERFACEVARIABLES": "Die Interface- Variablen",
-    "SETQUEUEVARIABLES": "Die Warteschlange Variablen",
-    "SETQUEUEENTRYVARIABLES": "Die Warteschlange ENTRY-Variablen",
+    "MUSICONHOLD": "Wartemusik",
+    "ANNOUNCETOAGENT": "Ansagenachricht für Agenten",
+    "ANNOUNCEMENTS": "Ansagen",
+    "ADVANCED": "Erweitert",
+    "ANNOUNCEFREQUENCY": "Ansagefrequenz",
+    "MINANNOUNCEFREQUENCY": "Min. Frequenz Ansage",
+    "PERIODICANNOUNCEFREQUENCY": "Frequenz wiederkehrende Ansagen",
+    "RANDOMPERIODICANNOUNCE": "Zufälliges Abspielen der Ansagen",
+    "ANNOUNCEHOLDTIME": "Wartezeit ansagen",
+    "ANNOUNCECALLERPOSITION": "Warteposition ansagen",
+    "ANNOUNCEPOSITIONLIMIT": "Limit für Ansage Warteposition",
+    "REPORTHOLDTIMEAGENT": "Wartezeit dem Agenten ansagen",
+    "PERIODICANNOUNCE": "Wiederkehrende Ansagen",
+    "HOLDTIMEANNOUNCE": "Audiodatei für Ansage Wartezeit",
+    "YOUARENEXTANNOUNCE": "Audiodatei für Ansage der ersten Position",
+    "THEREAREANNOUNCE": "1. Teil Audiodatei für Ansage der bereits wartenden Anrufer",
+    "WAITINGCALLSANNOUNCE": "2. Teil Audiodatei für Ansage der bereits wartenden Anrufer",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Audiodatei für die Information zur geschätzten Wartezeit",
+    "MINUTESANNOUNCE": "Audiodatei für die Ansage \"Minuten\"",
+    "MINUTEANNOUNCE": "Audiodatei für die Ansage \"Minute\" ",
+    "SECONDSANNOUNCE": "Audiodatei für die Ansage \"Sekunden\"",
+    "THANKYOUANNOUNCE": "Audiodatei für die Ansage mit Dank für Geduld",
+    "AUTOPAUSE": "Automatische Pause bei keiner Antwort",
+    "AFTERCALLWORK": "Nacharbeit",
+    "AFTERCALLWORKDURATION": "Dauer Nacharbeit",
+    "RINGINUSE": "Klingeln bei Besetzt",
+    "MEMBERDELAY": "Anrufsverzögerung",
+    "TIMEOUTRESTART": "Zeitüberschreitung neu Starten",
+    "MONITORFORMAT": "Format für Gesprächsaufzeichnungen",
+    "SETINTERFACEVARIABLES": "Interface Variabeln definieren",
+    "SETQUEUEVARIABLES": "Warteschlangenvariabeln definieren",
+    "SETQUEUEENTRYVARIABLES": "Variabeln bei Eintritt definieren",
     "VARIABLE": "Variable",
-    "CONTEXT": "Kontext",
+    "CONTEXT": "Kontext Austritt aus Warteschlange",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
-    "INBOUNDROUTES": "Ankommende Routen",
+    "INBOUNDROUTES": "Eingehende Routen",
     "PHONENUMBER": "Telefonnummer",
     "ADD_INBOUNDROUTE": "Eingehende Route hinzufügen",
-    "EDIT_INBOUNDROUTE": "Route für eingehende Anrufe bearbeiten.",
-    "DELETE_INBOUNDROUTE": "Löschen der Route für eingehende Anrufe",
-    "ACTIONS": "Aktionen",
-    "OUTBOUNDROUTES": "Abgehende Routen",
-    "DESTINATIONPATTERN": "Ziel Muster",
+    "EDIT_INBOUNDROUTE": "Eingehende Route bearbeiten",
+    "DELETE_INBOUNDROUTE": "Eingehende Route löschen",
+    "ACTIONS": "Routing",
+    "OUTBOUNDROUTES": "Ausgehende Routen",
+    "DESTINATIONPATTERN": "Ziel-Pattern",
     "ADD_OUTBOUNDROUTE": "Ausgehende Route hinzufügen",
-    "EDIT_OUTBOUNDROUTE": "Abgehende Route bearbeiten",
-    "DELETE_OUTBOUNDROUTE": "Abgehende Route löschen",
-    "CUTDIGITS": "Die Ziffern",
-    "RECORDING": "Aufnahme",
+    "EDIT_OUTBOUNDROUTE": "Ausgehende Route bearbeiten",
+    "DELETE_OUTBOUNDROUTE": "Ausgehende Route löschen",
+    "CUTDIGITS": "Ziffern abschneiden",
+    "RECORDING": "Aufzeichnung",
     "RECORDINGFORMAT": "Aufzeichnungsformat",
     "INTERNALROUTES": "Interne Routen",
-    "ADD_INTERNALROUTE": "Fügen Sie interne Routen",
+    "ADD_INTERNALROUTE": "Interne Route hinzufügen",
     "EDIT_INTERNALROUTE": "Interne Route bearbeiten",
-    "DELETE_INTERNALROUTE": "Interne Routen löschen",
+    "DELETE_INTERNALROUTE": "Interne Route löschen",
     "CONTEXTS": "Kontexte",
-    "ADD_CONTEXT": "Rahmen hinzufügen",
+    "ADD_CONTEXT": "Kontext hinzufügen",
     "EDIT_CONTEXT": "Kontext bearbeiten",
-    "DELETE_CONTEXT": "Löschen von Rahmen",
-    "VOICEMAILS": "Von Voicemails",
-    "ADD_VOICEMAIL": "Fügen Sie Voicemail",
-    "EDIT_VOICEMAIL": "Bearbeiten von Voicemail",
+    "DELETE_CONTEXT": "Kontext löschen",
+    "VOICEMAILS": "Voicemails",
+    "ADD_VOICEMAIL": "Voicemail hinzufügen",
+    "EDIT_VOICEMAIL": "Voicemail bearbeiten",
     "DELETE_VOICEMAIL": "Voicemail löschen",
-    "FULLNAME": "Voller Name",
+    "FULLNAME": "Vollständiger Name",
     "EMAIL": "E-Mail",
     "MAILBOX": "Mailbox",
     "PASSWORD": "Passwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "TIMEZONE": "Zeitzone",
-    "ATTACH": "Befestigen Sie",
-    "ENVELOPE": "Umschlag",
-    "DELETE": "Löschen",
+    "ATTACH": "Anhang",
+    "ENVELOPE": "Datum und Zeit ansagen",
+    "DELETE": "Datei Löschen nach E-Mailversand",
     "EMAILBODY": "E-Mail-Text",
-    "EMAILSUBJECT": "Betreff der E-Mail",
-    "MAXSECONDS": "In Sekunden",
-    "MAXMESSAGES": "Max. Nachrichten",
+    "EMAILSUBJECT": "E-Mail Betreff",
+    "MAXSECONDS": "Max. Länge der Nachricht (Sekunden)",
+    "MAXMESSAGES": "Max. Nachrichten in Mailbox",
     "MESSAGES": "Nachrichten",
     "SORT": "Sortieren",
-    "ADD_MUSICONHOLD": "Hinzufügen von Musik auf Halten",
-    "MUSICONHOLDS": "Musik auf Halten",
-    "EDIT_MUSICONHOLD": "Bearbeiten Musik auf Halten",
-    "DELETE_MUSICONHOLD": "Löschen Sie Musik auf Halten",
+    "ADD_MUSICONHOLD": "Wartemusik hinzufügen",
+    "MUSICONHOLDS": "Wartemusik",
+    "EDIT_MUSICONHOLD": "Wartemusik bearbeiten",
+    "DELETE_MUSICONHOLD": "Wartemusik löschen",
     "DIRECTORY": "Verzeichnis",
     "AUDIOFILES": "Audiodateien",
-    "RECORDINGS": "Aufnahmen",
-    "CHANSPY": "ChanSpy",
+    "RECORDINGS": "Aufzeichnungen",
+    "CHANSPY": "Listen-In (Chanspy)",
     "PREFIX": "Präfix",
     "OPTIONS": "Optionen",
-    "AUTH": "Auth",
-    "ADD_CHANSPY": "Fügen Sie ChanSpy",
-    "EDIT_CHANSPY": "Bearbeiten Sie ChanSpy",
-    "DELETE_CHANSPY": "Löschen Sie ChanSpy",
+    "AUTH": "Authentifizierung",
+    "ADD_CHANSPY": "Listen-In hinzufügen",
+    "EDIT_CHANSPY": "Listen-In bearbeiten",
+    "DELETE_CHANSPY": "Listen-In löschen",
     "AGENTS": "Agenten",
     "TELEPHONES": "Telefone",
     "QUEUES": "Warteschlangen",
-    "QUEUE_CALLS": "Anrufe aus einer Warteschlange",
-    "QUEUE_PARAMETERS": "Queue Parameter",
+    "QUEUE_CALLS": "Anrufe in Warteschlange",
+    "QUEUE_PARAMETERS": "Warteschlangen-Parameter",
     "ABANDONED_CALLS": "Abgebrochene Anrufe",
     "OUTBOUND_CALLS": "Ausgehende Anrufe",
     "AGI": "AGI",
-    "DIAL": "Kurzwahl",
+    "DIAL": "Wählen",
     "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Interne Wahl",
-    "EXTERNALDIAL": "Externes Wählen",
-    "RINGGROUP": "Ring-Gruppe",
+    "INTERNALDIAL": "Intern wählen",
+    "EXTERNALDIAL": "Extern wählen",
+    "RINGGROUP": "Rufgruppe",
     "PLAYBACK": "Wiedergabe",
     "QUEUE": "Warteschlange",
-    "SET": "Set",
+    "SET": "Einstellen (Set)",
     "VOICEMAIL": "Voicemail",
     "GOTO": "Gehe zu",
     "HANGUP": "Auflegen",
-    "CUSTOM": "Benutzerdefinierte",
-    "PROJECT": "Cally-Square Projekt",
-    "TECHNOLOGY/RESOURCE": "Technologie-/Ressourcen",
+    "CUSTOM": "Benutzerdefiniert",
+    "PROJECT": "Call-Flow Projekt",
+    "TECHNOLOGY/RESOURCE": "Technologie-/Ressource (Z.B. SIP/1003)",
     "URL": "URL",
-    "EDIT_APP": "Anwendung bearbeiten.",
-    "EDIT_INTERVAL": "Intervall bearbeiten",
+    "EDIT_APP": "Anwendung bearbeiten",
+    "EDIT_INTERVAL": "Zeitintervall bearbeiten",
     "DELETE_APP": "Anwendung löschen",
-    "INTERVALS": "Intervalle",
+    "INTERVALS": "Zeitintervalle",
     "USER": "Benutzer",
-    "TRUNK": "Amtsleitung",
+    "TRUNK": "SIP-Trunk",
     "PHONE": "Telefon",
     "AUDIO_FILES": "Audiodateien",
-    "ANNOUNCE_OVERRIDES": "Überschreibt ankündigen",
+    "ANNOUNCE_OVERRIDES": "Ansage überschreiben",
     "MACRO": "Makro",
     "GOSUB": "GoSub",
     "RULE": "Regel",
     "POSITION": "Position",
-    "ANSWER": "Antwort",
+    "ANSWER": "Antwort vom System",
     "VALUE": "Wert",
     "MAILBOX@CONTEXT": "Mailbox@Kontext",
-    "EXTENSION": "Erweiterung",
+    "EXTENSION": "Nebenstelle",
     "PRIORITY": "Priorität",
-    "HANGUP_CAUSE": "Ursache auflegen",
-    "OUTBOUNDDIAL": "Wählen Sie für abgehende Anrufe",
-    "CALLER_ID": "Die Anrufer-ID",
+    "HANGUP_CAUSE": "Auflegegrund",
+    "OUTBOUNDDIAL": "Ausgehend wählen",
+    "CALLER_ID": "Anrufer-ID",
     "NO_MESSAGE_AVAILABLE": "Keine Meldungen vorhanden",
     "NO_SOUND_AVAILABLE": "Kein Ton verfügbar",
-    "VOICERECORDINGS": "Sprachaufnahmen",
-    "CHANSPIES": "Chan Spies",
-    "VOICE": "Voice",
+    "VOICERECORDINGS": "Sprachaufzeichnungen",
+    "CHANSPIES": "Listen-Ins",
+    "VOICE": "Anrufe",
     "REALTIME": "Echtzeit",
-    "ID": "Id",
+    "ID": "ID",
     "VOICEMAIL_CONTEXT": "Kontext",
     "NO_MOHSOUND_AVAILABLE": "Keine Wartemusik verfügbar",
     "FILE": "Datei",
-    "ADD_MOHSOUND": "Hinzufügen von Musik auf Halten sound",
-    "DOWNLOAD_MOHSOUND": "Download Music-on-Hold sound",
-    "DELETE_MOHSOUND": "Löschen Sie Music On Hold sound",
+    "ADD_MOHSOUND": "Wartemusik hinzufügen",
+    "DOWNLOAD_MOHSOUND": "Wartemusik herunterladen",
+    "DELETE_MOHSOUND": "Wartemusik löschen",
     "UNIQUEID": "Eindeutige ID",
     "AGENT": "Agent",
     "TYPE": "Typ",
     "RATING": "Bewertung",
     "AUDIO": "Audio",
     "DATE": "Datum",
-    "NEW_VOICEQUEUE": "Neue Stimme der Warteschlange",
-    "NEW_INBOUNDROUTE": "Neue Route für eingehende Anrufe",
-    "NEW_OUTBOUNDROUTE": "Neue abgehende Route",
-    "NEW_INTERNALROUTE": "Neue interne Routen",
-    "NEW_CONTEXT": "Neue Kontext",
+    "NEW_VOICEQUEUE": "Neue Anruf-Warteschlange",
+    "NEW_INBOUNDROUTE": "Neue eingehende Route",
+    "NEW_OUTBOUNDROUTE": "Neue ausgehende Route",
+    "NEW_INTERNALROUTE": "Neue interne Route",
+    "NEW_CONTEXT": "Neuer Kontext",
     "NEW_VOICEMAIL": "Neue Voicemail",
-    "NEW_MUSICONHOLD": "Neue Musik auf Halten",
-    "NEW_CHANSPY": "Neue ChanSpy",
-    "PENALTY": "Strafe",
-    "ADD_TEAM_TO_VOICEQUEUE": "Team hinzufügen, Warteschlange",
-    "ADD_AGENT_TO_VOICEQUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
-    "EDIT_DIAL": "Wählen Sie Bearbeiten.",
+    "NEW_MUSICONHOLD": "Neue Wartemusik",
+    "NEW_CHANSPY": "Neues Listen-In",
+    "PENALTY": "Verzögerung",
+    "ADD_TEAM_TO_VOICEQUEUE": "Team zur Warteschlange hinzufügen",
+    "ADD_AGENT_TO_VOICEQUEUE": "Agenten zur Warteschlange hinzufügen",
+    "EDIT_DIAL": "Kurzwahl bearbeiten",
     "EDIT_AGI": "AGI bearbeiten",
-    "EDIT_INTERNALDIAL": "Interne Wahl bearbeiten.",
-    "EDIT_EXTERNALDIAL": "Wählen Sie Externen bearbeiten",
-    "EDIT_RINGGROUP": "Gruppe bearbeiten",
-    "EDIT_PLAYBACK": "Bearbeiten Sie die Wiedergabe",
-    "EDIT_QUEUE": "Bearbeiten von Warteschlangen",
-    "EDIT_SET": "Bearbeiten",
-    "EDIT_GOTO": "Gehe zu bearbeiten.",
-    "EDIT_HANGUP": "Bearbeiten Sie Auflegen",
-    "EDIT_CUSTOM": "Bearbeiten von benutzerdefinierten",
+    "EDIT_INTERNALDIAL": "Interne Kurzwahl bearbeiten",
+    "EDIT_EXTERNALDIAL": "Externe Kurzwahl bearbeiten",
+    "EDIT_RINGGROUP": "Rufgruppe bearbeiten",
+    "EDIT_PLAYBACK": "Wiedergabe bearbeiten",
+    "EDIT_QUEUE": "Warteschlange bearbeiten",
+    "EDIT_SET": "Set bearbeiten",
+    "EDIT_GOTO": "\"Gehe-zu\" bearbeiten",
+    "EDIT_HANGUP": "Auflegen bearbeiten",
+    "EDIT_CUSTOM": "Benutzerdef. Einstellungen bearbeiten",
     "DURATION": "Dauer",
-    "RECEIVED_AT": "Empfangen am",
+    "RECEIVED_AT": "Eingegangen am",
     "YES": "Ja",
-    "NO": "Keine",
-    "HANGUPCAUSE_1": "1 = Nicht zugewiesene Nummer",
-    "HANGUPCAUSE_16": "16 = Normail Anruf löschen",
-    "HANGUPCAUSE_17": "17 = Benutzer besetzt",
-    "HANGUPCAUSE_18": "18 = Keine Reaktion (Telefon Gerät nicht verbunden)",
+    "NO": "Nein",
+    "HANGUPCAUSE_1": "1 = Nummer nicht zugewiesen",
+    "HANGUPCAUSE_16": "16 = Beenden durch Nutzer",
+    "HANGUPCAUSE_17": "17 = Besetzt",
+    "HANGUPCAUSE_18": "18 = Keine Antwort (Nebenstelle nicht verbunden)",
     "HANGUPCAUSE_21": "21 = Anruf abgelehnt",
-    "HANGUPCAUSE_22": "22 = Anzahl geändert",
-    "HANGUPCAUSE_27": "27 = Ziel nicht in Ordnung",
-    "HANGUPCAUSE_38": "38 = Netzwerk aus, um",
+    "HANGUPCAUSE_22": "22 = Nummer geändert",
+    "HANGUPCAUSE_27": "27 = Ziel nicht verfügbar",
+    "HANGUPCAUSE_38": "38 = Netzwerk nicht verfügbar",
     "HANGUPCAUSE_41": "41 = vorübergehende Störung",
-    "RANDOM": "Random",
+    "RANDOM": "Zufall",
     "ALPHABETICAL": "Alphabetisch",
     "NO_APPS_AVAILABLE": "Keine Anwendungen verfügbar",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
-    "DELETE_VOICERECORDING": "Löschen von Voice Recording",
-    "INTERNAL": "Interne",
-    "PHONE_STATE": "Telefonstatus",
-    "PHONE_STATUS": "Telefonstatus",
-    "TRUNK_STATUS": "Trunk Status",
+    "DOWNLOAD_VOICERECORDING": "Sprachaufzeichnung herunterladen",
+    "DELETE_VOICERECORDING": "Sprachaufzeichnung löschen",
+    "INTERNAL": "Intern",
+    "PHONE_STATE": "Status Nebenstelle",
+    "PHONE_STATUS": "SIP-Status Nebenstelle",
+    "TRUNK_STATUS": "Status Trunk",
     "REGISTERED": "Registriert",
-    "UNREGISTERED": "Unregistrierte",
-    "LAGGED": "Zurück",
+    "UNREGISTERED": "Nicht registriert",
+    "LAGGED": "Verzögert",
     "REACHABLE": "Erreichbar",
     "UNREACHABLE": "Nicht erreichbar",
     "UNKNOWN": "Unbekannt",
-    "NOT_INUSE": "Nicht in Gebrauch",
-    "INUSE": "Im Einsatz",
+    "NOT_INUSE": "Nicht in Verwendung",
+    "INUSE": "In Verwendung",
     "BUSY": "Besetzt",
     "INVALID": "Ungültig",
     "UNAVAILABLE": "Nicht verfügbar",
     "RINGING": "Klingeln",
-    "ONHOLD": "Auf Halten",
-    "RING": "Ring",
-    "UP": "Bis",
-    "INFO": "Info",
-    "TRUNKS": "Amtsleitungen",
+    "ONHOLD": "Halten",
+    "RING": "Klingeln",
+    "UP": "Status",
+    "INFO": "Information",
+    "TRUNKS": "SIP-Trunks",
     "REGISTRY": "Registrierung",
-    "NO_REGISTRY": "Keine registry",
+    "NO_REGISTRY": "Keine Registrierung",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
-    "WAITING": "Warten",
-    "TALKING": "Sprechen",
-    "DID": "Haben",
+    "WAITING": "Wartezustand",
+    "TALKING": "Im Gespräch",
+    "DID": "DID",
     "CALLER": "Anrufer",
-    "TOTAL": "Insgesamt",
+    "TOTAL": "Gesamt",
     "ANSWERED": "Beantwortet",
     "ABANDONED": "Abgebrochen",
-    "UNMANAGED": "Nicht verwaltete",
-    "AVG_HOLD_TIME": "Durchschnittl. Warteschleifenzeit",
-    "AVG_DURATION": "Av-Dauer",
-    "AVG_BILLABLE": "Avg Fakturierbaren",
-    "SOURCE": "Quelle",
+    "UNMANAGED": "Nicht bearbeitet",
+    "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
+    "AVG_DURATION": "Durchschnittliche Dauer",
+    "AVG_BILLABLE": "Durchschnittliche abrechenbare Zeit",
+    "SOURCE": "Ursprung",
     "DESTINATION": "Ziel",
     "REJECTED": "Abgelehnt",
     "FAILED": "Fehlgeschlagen",
-    "CALLED": "Aufgerufen",
+    "CALLED": "Angerufen",
     "CONNECTED": "Verbunden",
     "NO_RATING": "Keine Bewertung",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
+    "EDIT_VOICERECORDING": "Sprachaufzeichnung bearbeiten",
     "APPLICATION_NAME": "Name der Anwendung",
     "ARGUMENTS": "Argumente",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
-    "DEFAULT_PAUSE": "Standard PAUSE",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "DEFAULT_PAUSE": "Standard Pause",
     "PAUSE": "Pause",
-    "UNPAUSE": "Pause",
-    "REDIRECT_TO_NUMBER": "Umleiten zu: Anzahl",
-    "REDIRECT_TO_AGENT": "Umleiten zu: Agent",
-    "AGENTADD_VOICEQUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
+    "UNPAUSE": "Fortsetzen",
+    "REDIRECT_TO_NUMBER": "Weiterleiten an Nummer",
+    "REDIRECT_TO_AGENT": "Weiterleiten an Agenten",
+    "AGENTADD_VOICEQUEUE": "Agenten zu Warteschlange hinzufügen",
     "APPLICATION": "Anwendung",
     "FILES": "Dateien",
     "FORMAT": "Format",
     "MODE": "Modus",
     "RECORD": "Datensatz",
-    "TEAMADD_VOICEQUEUE": "Hinzufügen Team voicequeue",
-    "NEW_MOHSOUND": "Neue Musik auf Halten",
-    "DOWNLOAD_MESSAGE": "Download",
+    "TEAMADD_VOICEQUEUE": "Team zur Warteschlange hinzufügen",
+    "NEW_MOHSOUND": "Neue Wartemusik",
+    "DOWNLOAD_MESSAGE": "Herunterladen",
     "DELETE_MESSAGE": "Löschen",
     "QUEUE_PARAMS": "Queue Parameter",
-    "TOTAL_OFFERED": "Insgesamt",
+    "TOTAL_OFFERED": "Gesamt",
     "READY": "Bereit",
-    "AGENTADD_QUEUE": "Agent hinzufügen Warteschlangen zu Voice",
-    "AGENTSADD_QUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlangen hinzufügen",
+    "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CLOSING": "Schließen",
     "TAGS": "Tags",
     "WAITING_FOR_AGENT": "Warten auf Agenten",
-    "EDIT_OUTBOUNDDIAL": "Bearbeiten ausgehenden DFÜ",
-    "ACCOUNTNAME": "Konto Name",
+    "EDIT_OUTBOUNDDIAL": "Wählverhalten ausgehend bearbeiten",
+    "ACCOUNTNAME": "Kontoname",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "DISPOSITION": "Disposition",
+    "OF": "von",
+    "DISPOSITION": "Qualifizierung",
     "WAITING_FOR_AGENTS": "Warten auf Agenten",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "PARTIALPAUSE": "Teilweise Pause",
+    "PARTIALPAUSE": "Teilpause",
     "STATUS": "Status",
     "TIMER": "Timer",
     "ALL": "Alle",
     "IDLE": "Leerlauf",
-    "EDIT_TRUNK": "Bearbeiten Trunk",
+    "EDIT_TRUNK": "Trunk bearbeiten",
     "ACTIVE": "Aktiv",
-    "CLEAR": "klar",
+    "CLEAR": "Leeren",
     "CALLS": "Anrufe",
-    "STARTEDAT": "Fing an bei",
-    "ENDEDAT": "Beendet bei",
-    "TAG": "Etikett",
-    "DETAILS": "Einzelheiten",
+    "STARTEDAT": "Startdatum",
+    "ENDEDAT": "Enddatum",
+    "TAG": "Tag",
+    "DETAILS": "Details",
     "BILLABLESECONDS": "Abrechenbare Sekunden",
-    "ANSWEREDAT": "Beantwortet bei",
-    "NOTE": "Hinweis",
+    "ANSWEREDAT": "Beantwortet am",
+    "NOTE": "Notiz",
     "CLOSE": "Schließen",
-    "SELECT_DATE": "Wählen Sie Startdatum",
-    "SELECT_TYPE": "Art auswählen",
-    "ABANDONEDCALLS": "Verlassene Warteschlangenanrufe",
+    "SELECT_DATE": "Startdatum auswählen",
+    "SELECT_TYPE": "Typ auswählen",
+    "ABANDONEDCALLS": "Abgebrochene Anrufe",
     "ADD_VOICEPREFIX": "Präfix hinzufügen",
-    "AGENTADD_VOICEPREFIX": "Fügen Sie Agent zu Präfix hinzu",
+    "AGENTADD_VOICEPREFIX": "Agentenpräfix hinzufügen",
     "DELETE_VOICEPREFIX": "Präfix löschen",
     "EDIT_VOICEPREFIX": "Präfix bearbeiten",
     "NEW_VOICEPREFIX": "Neues Präfix",
-    "VOICEPREFIXES": "Vorgegebene Präfixe",
+    "VOICEPREFIXES": "Präfixe für Sprachanrufe",
     "CALLERIDALL": "Anruferidentifikation",
     "OUTBOUNDROUTE": "Ausgehende Route",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "DIALER": "Dialer",
-    "INBOUND": "Eingehende",
+    "INBOUND": "Eingehend",
     "OUTBOUND": "Ausgehend",
-    "MANDATORYDISPOSITION": "Zwingende Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Status der obligatorischen Dispositionspause",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "MANDATORYDISPOSITION": "Qualifikation erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
     "CANT_DOWNLOAD_THIS_FILE": "Diese Datei kann nicht heruntergeladen werden",
     "FILE_NOT_FOUND": "Datei nicht gefunden",
     "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
-    "START_SCREENRECORDING": "Starten Sie die Bildschirmaufnahme",
-    "STOP_SCREENRECORDING": "Beenden Sie die Bildschirmaufnahme",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "WRONG_EXTENSION": "Die Datei weist die falsche Erweiterung auf",
+    "START_SCREENRECORDING": "Bildschirmaufzeichnung starten",
+    "STOP_SCREENRECORDING": "Bildschirmaufzeichnung beenden",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
+    "WRONG_EXTENSION": "Ungültige Dateiendung",
     "DOWNLOADTRANSCRIBE_VOICERECORDING": "Transkript herunterladen",
     "FAILUREREASON": "Fehlergrund",
-    "RUNSENTIMENT_VOICERECORDING": "Führen Sie Sentiment",
-    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Führen Sie Transcribe & Sentiment aus",
-    "RUNTRANSCRIBE_VOICERECORDING": "Führen Sie Transcribe aus",
-    "SENTIMENT": "Gefühl",
-    "SENTIMENTANALYSIS": "Stimmungsanalyse",
+    "RUNSENTIMENT_VOICERECORDING": "Starten Sprachaufzeichnung inkl. Sentiment",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Transkription und Sentinemtaufzeichnung starten",
+    "RUNTRANSCRIBE_VOICERECORDING": "Transkription starten",
+    "SENTIMENT": "Sentiment",
+    "SENTIMENTANALYSIS": "Sentiment-Analyse",
     "SENTIMENT_MIXED": "Gemischt",
     "SENTIMENT_NEGATIVE": "Negativ",
     "SENTIMENT_NEUTRAL": "Neutral",
     "SENTIMENT_POSITIVE": "Positiv",
     "TEXT": "Text",
     "TRANSCRIBE": "Transkribieren",
-    "TRANSCRIBESTATUS_COMPLETED": "Abgeschlossen",
-    "TRANSCRIBESTATUS_FAILED": "Gescheitert",
+    "TRANSCRIBESTATUS_COMPLETED": "Transkription abgeschlossen",
+    "TRANSCRIBESTATUS_FAILED": "Transkription fehlgeschlagen",
     "TRANSCRIBESTATUS_IN_PROGRESS": "In Bearbeitung",
     "TRANSCRIBESTATUS_NEW": "Neu",
     "TRANSCRIPT": "Transkript",
     "TRANSCRIPTANALYSIS": "Transkript & Analyse",
     "SERVICELEVEL": "Service Level",
-    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Qualifizierung 2. Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Qualifizierung 3. Ebene",
     "TEAMADD_VOICEPREFIX": "Team zum Präfix hinzufügen",
     "ALIAS": "Alias",
     "MAXCAPACITY": "Max. Kapazität erreicht",
index 971bf53..91c94ea 100644 (file)
     "VOICERECORDINGS": "Gravações de voz",
     "CHANSPIES": "Espião",
     "VOICE": "Voz",
-    "REALTIME": "Tempo Real",
+    "REALTIME": "Tempo real",
     "ID": "Id",
     "VOICEMAIL_CONTEXT": "Contexto",
     "NO_MOHSOUND_AVAILABLE": "Não há música na espera disponível",
     "RING": "Tocar",
     "UP": "Cima",
     "INFO": "Informação",
-    "TRUNKS": "Trunks",
+    "TRUNKS": "Troncos",
     "REGISTRY": "Registro",
     "NO_REGISTRY": "Nenhum registro",
     "LOGGED_IN": "Conectado (SIP conectado)",
index 978ed15..be4500b 100644 (file)
 {
   "WHATSAPP": {
     "ERRORS": {
-      "ACCESSKEYID_REQUIRED": "Pflichtfeld",
-      "ACCOUNTSID_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "AGENT_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_REQUIRED": "Pflichtfeld",
-      "AUTHTOKEN_REQUIRED": "Pflichtfeld",
-      "BOTNAME_REQUIRED": "Pflichtfeld",
-      "COMMAND_REQUIRED": "Pflichtfeld",
-      "CONDITION_REQUIRED": "Pflichtfeld",
-      "DESCRIPTION_REQUIRED": "Pflichtfeld",
-      "DISPOSITION_REQUIRED": "Pflichtfeld",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "FALSEPRIORITY_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
-      "KEY_REQUIRED": "Pflichtfeld",
-      "LANGUAGE_REQUIRED": "Pflichtfeld",
-      "LEXREGION_REQUIRED": "Pflichtfeld",
-      "LIST_REQUIRED": "Pflichtfeld",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
-      "NAME_REQUIRED": "Pflichtfeld",
-      "PHONE_REQUIRED": "Pflichtfeld",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "PRIORITY_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "QUEUE_REQUIRED": "Pflichtfeld",
-      "SECRETACCESSKEY_REQUIRED": "Pflichtfeld",
-      "TAG_REQUIRED": "Pflichtfeld",
-      "TEXT_REQUIRED": "Pflichtfeld",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "TIMEOUT_REQUIRED": "Pflichtfeld",
-      "TIMES_REQUIRED": "Pflichtfeld",
-      "TOKEN_REQUIRED": "Pflichtfeld",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "TRUEPRIORITY_REQUIRED": "Pflichtfeld",
-      "TYPE_REQUIRED": "Pflichtfeld",
-      "VALUE_REQUIRED": "Pflichtfeld",
-      "VARIABLE_REQUIRED": "Pflichtfeld",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
-      "WELCOMEMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
-      "WELCOMEMESSAGE_REQUIRED": "Pflichtfeld",
-      "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
-      "PRIVATEKEY_REQUIRED": "Pflichtfeld",
-      "PROJECTID_REQUIRED": "Pflichtfeld",
+      "ACCESSKEYID_REQUIRED": "Zugangsschlüssel erforderlich",
+      "ACCOUNTSID_REQUIRED": "Konto-ID erforderlich",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung Transfer muss größer oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung Transfer muss kleiner oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Zeitüberschreitung erforderlich",
+      "AGENT_REQUIRED": "Agent erforderlich",
+      "AGENT_TIMEOUT_REQUIRED": "Zeitüberschreitung Agent erforderlich",
+      "AUTHTOKEN_REQUIRED": "Token für Authentifizierung erforderlich",
+      "BOTNAME_REQUIRED": "BOT-Name erforderlich",
+      "COMMAND_REQUIRED": "Eingabe erforderlich",
+      "CONDITION_REQUIRED": "Bedingung erforderlich",
+      "DESCRIPTION_REQUIRED": "Beschreibung erforderlich",
+      "DISPOSITION_REQUIRED": "Qualifizierung erforderlich",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität bei Bedingung nicht erfüllt muss größer oder gleich sein als",
+      "FALSEPRIORITY_REQUIRED": "Priorität bei nicht zutreffender Bedingung erforderlich",
+      "KEY_MAX_LENGTH": "Wert darf nicht länger als {{max}} Zeichen sein",
+      "KEY_REQUIRED": "Schlüssel erforderlich",
+      "LANGUAGE_REQUIRED": "Sprache erforderlich",
+      "LEXREGION_REQUIRED": "Lex-Region erforderlich",
+      "LIST_REQUIRED": "Liste erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "PausenID während Qualifizierung erforderlich",
+      "NAME_REQUIRED": "Name erforderlich",
+      "PHONE_REQUIRED": "Telefonnummer erforderlich",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "PRIORITY_REQUIRED": "Priorität erforderlich",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung Warteschlangentransfer muss größer oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung Warteschlangentransfer muss kleiner oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Zeitüberschreitung erforderlich",
+      "QUEUE_REQUIRED": "Warteschlange erforderlich",
+      "SECRETACCESSKEY_REQUIRED": "Geheimer Zugangsschlüssel erforderlich",
+      "TAG_REQUIRED": "Tag erforderlich",
+      "TEXT_REQUIRED": "Text erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss größer oder gleich sein als",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss kleiner oder gleich sein als",
+      "TIMEOUT_REQUIRED": "Zeitüberschreitung erforderlich",
+      "TIMES_REQUIRED": "Zeiten erforderlich",
+      "TOKEN_REQUIRED": "Token erforderlich",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität bei Bedingung erfüllt muss größer oder gleich sein als",
+      "TRUEPRIORITY_REQUIRED": "Priorität bei zutreffender Bedingung erforderlich",
+      "TYPE_REQUIRED": "Typ erforderlich",
+      "VALUE_REQUIRED": "Wert erforderlich",
+      "VARIABLE_REQUIRED": "Variabel erforderlich",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Auf zugewiesenen Agenten warten erforderlich",
+      "WELCOMEMESSAGE_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
+      "WELCOMEMESSAGE_REQUIRED": "Willkommensnachricht erforderlich",
+      "CLIENTEMAIL_REQUIRED": "Kunden E-Mail erforderlich",
+      "PRIVATEKEY_REQUIRED": "Privater Schlüssel erforderlich",
+      "PROJECTID_REQUIRED": "Projekt-ID erforderlich",
       "BASEURL_REQUIRED": "Base_URL erforderlich"
     },
     "HELP": {
-      "LIST": "Kontaktmanagerliste zum Zuordnen von Kontakten",
-      "MANDATORYDISPOSITION": "Obligatorische Disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
+      "LIST": "Liste für die Zuordnung von Kontakten",
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
       "MOTIONPROXY": "Das Feld muss das folgende Format haben: <Protokoll>: // <IP-Adresse> [: <Port>]. Beispiel: https: //X.Y.Z.W",
-      "NAME": "Es werden nur Zahlen, Buchstaben und bestimmte Zeichen (._) unterstützt",
+      "NAME": "Es werden nur Zahlen, Buchstaben und Sonderzeichen (._) unterstützt",
       "RECEIVEURL": "Dies ist die automatisch generierte API-Zeichenfolge, die Sie zum Empfangen der Nachrichten in Ihrem Konto von Ihrem WhatsApp Connector-Anbieter verwenden müssen (POST-Methode muss verwendet werden): Klicken Sie auf die Schaltfläche in der Zwischenablage, um sie zu kopieren",
-      "WELCOMEMESSAGE": "Dies ist die erste Antwortnachricht, die an neue Interaktionen gesendet wird"
+      "WELCOMEMESSAGE": "Erste Nachricht bei eintreffen einer neuen Interaktion"
     },
-    "ACCESSKEYID": "Zugriffsschlüssel-ID",
-    "ACCOUNTSID": "Konto-SID",
-    "ACTIONS": "Aktionen",
+    "ACCESSKEYID": "Access-Key ID",
+    "ACCOUNTSID": "Konto-ID",
+    "ACTIONS": "Routing",
     "ADD_NOTE": "Notiz hinzufügen",
-    "ADD_WHATSAPPACCOUNT": "Hinzufügen",
-    "ADD_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "ADD_WHATSAPPDISPOSITION": "WhatsApp Disposition hinzufügen",
+    "ADD_WHATSAPPACCOUNT": "WhatsApp-Konto hinzufügen",
+    "ADD_WHATSAPPCANNEDANSWER": "WhatsApp Textvorlage hinzufügen",
+    "ADD_WHATSAPPDISPOSITION": "WhatsApp Qualifizierung hinzufügen",
     "ADD_WHATSAPPQUEUE": "WhatsApp-Warteschlange hinzufügen",
-    "ADVANCED": "Fortgeschrittene",
+    "ADVANCED": "Erweitert",
     "AGENT": "Agent",
-    "AGENTADD_QUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
-    "AGENTADD_WHATSAPPACCOUNT": "Agent zum WhatsApp-Konto hinzufügen",
-    "AGENTADD_WHATSAPPQUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTADD_WHATSAPPACCOUNT": "Agenten zum WhatsApp-Konto hinzufügen",
+    "AGENTADD_WHATSAPPQUEUE": "Agenten zur Warteschlange hinzufügen",
     "AGENTS": "Agenten",
-    "AGENTSADD_QUEUE": "Hinzufügen von Agenten zur WhatsApp-Warteschlange",
-    "AGENTTRANSFER": "Agententransfer",
-    "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung bei der Agentenübertragung",
-    "AGENT_TIMEOUT": "Agent Timeout",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTTRANSFER": "Transfer an Agenten erlauben",
+    "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung Agententransfer",
+    "AGENT_TIMEOUT": "Zeitüberschreitung Agent",
     "ALL": "Alles",
     "ALL_AGENTS": "Alle Agenten",
     "ALL_TEAMS": "Alle Teams",
     "AMAZONLEX": "AmazonLex",
-    "AUTHTOKEN": "Auth Token",
+    "AUTHTOKEN": "Authentifizierungs-Token",
     "AUTOREPLY": "Automatische Antwort",
     "BACK": "Zurück",
-    "BOTNAME": "Bot Name",
+    "BOTNAME": "BOT-Name",
     "BUSY": "Beschäftigt",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
-    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
-    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
+    "CANNEDANSWERS": "Textvorlagen",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
+    "CANNED_ANSWER_SEARCH": "Nach Textvorlagen suchen",
     "CAPACITY": "Kapazität",
     "CLOSE": "Schließen",
     "CLOSED": "Geschlossen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
-    "COMMAND": "Befehl",
+    "COMMAND": "Eingabe",
     "CONDITION": "Bedingung",
     "CONTACT": "Kontakt",
-    "CREATED_AT": "Hergestellt in",
-    "DEFAULT_PAUSE": "STANDARD PAUSE",
+    "CREATED_AT": "Erstellt am",
+    "DEFAULT_PAUSE": "Standardpause",
     "DELETE": "Löschen",
     "DELETE_INTERACTION": "Interaktion löschen",
     "DELETE_SELECTED": "Ausgewählte löschen",
     "DELETE_WHATSAPPACCOUNT": "WhatsApp-Konto löschen",
-    "DELETE_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort löschen",
-    "DELETE_WHATSAPPDISPOSITION": "WhatsApp-Disposition löschen",
+    "DELETE_WHATSAPPCANNEDANSWER": "Textvorlage löschen",
+    "DELETE_WHATSAPPDISPOSITION": "Qualifizierung löschen",
     "DELETE_WHATSAPPQUEUE": "WhatsApp-Warteschlange löschen",
     "DESCRIPTION": "Beschreibung",
-    "DIALOGFLOW": "DialogFlow",
-    "DISPOSITION": "Anordnung",
-    "DISPOSITIONS": "Dispositionen",
-    "DOWNLOAD_INTERACTION": "Herunterladen",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Ohne Anhänge herunterladen",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
-    "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_AMAZONLEX": "Bearbeiten Sie die Lex-Konfiguration",
+    "DIALOGFLOW": "Google DialogFlow",
+    "DISPOSITION": "Qualifizierung",
+    "DISPOSITIONS": "Qualifizierungen",
+    "DOWNLOAD_INTERACTION": "Interaktion herunterladen",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
+    "EDIT_AGENT": "Agenten bearbeiten",
+    "EDIT_AMAZONLEX": "Lex-Konfiguration bearbeiten",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
-    "EDIT_DIALOGFLOW": "Bearbeiten Sie die DialogFlow-Konfiguration",
-    "EDIT_GOTOIF": "Bearbeiten Sie Gotoif",
-    "EDIT_GOTOP": "Gotop bearbeiten",
-    "EDIT_NOOP": "Noop bearbeiten",
+    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "EDIT_DIALOGFLOW": "DialogFlow-Konfiguration bearbeiten",
+    "EDIT_GOTOIF": "Bedingung bearbeiten und Priorität zuweisen",
+    "EDIT_GOTOP": "\"GeheZu\" bearbeiten",
+    "EDIT_NOOP": "Log-Erstellung bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
     "EDIT_SYSTEM": "System bearbeiten",
     "EDIT_TAG": "Tag bearbeiten",
     "EDIT_WHATSAPPACCOUNT": "WhatsApp-Konto bearbeiten",
-    "EDIT_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
-    "EDIT_WHATSAPPDISPOSITION": "WhatsApp-Disposition bearbeiten",
-    "EDIT_WHATSAPPQUEUE": "Bearbeiten Sie die WhatsApp-Warteschlange",
-    "FALSEPRIORITY": "Falsche Priorität",
-    "GENERAL": "Allgemeines",
-    "GOTOIF": "Gotoif",
-    "GOTOP": "Zum Seitenanfang",
-    "GOTOREALTIME_WHATSAPPQUEUE": "Wechseln Sie zur WhatsApp-Warteschlange in Echtzeit",
-    "GO_TO_WHATSAPPACCOUNTS": "Gehe zu Konto",
-    "ID": "Ich würde",
+    "EDIT_WHATSAPPCANNEDANSWER": "Textvorlage bearbeiten",
+    "EDIT_WHATSAPPDISPOSITION": "Whatsapp-Qualifizierung bearbeiten",
+    "EDIT_WHATSAPPQUEUE": "Whatsapp Warteschlange bearbeiten",
+    "FALSEPRIORITY": "Priorität, wenn nicht erfüllt (false)",
+    "GENERAL": "Allgemein",
+    "GOTOIF": "GeheZuWenn (GoToIf)",
+    "GOTOP": "Priorität zuweisen (GoToP)",
+    "GOTOREALTIME_WHATSAPPQUEUE": "Direkt zur Echtzeit-Warteschlange",
+    "GO_TO_WHATSAPPACCOUNTS": "Direkt zum WhatsApp-Konto",
+    "ID": "ID",
     "IDLE": "Leerlauf",
     "INSERT_MESSAGE_HERE": "Nachricht hier einfügen",
     "INTERACTIONS": "Interaktionen",
-    "INTERACTIONS_WHATSAPPACCOUNT": "Gehen Sie zu Interaktionen",
+    "INTERACTIONS_WHATSAPPACCOUNT": "Zu den Interaktionen gehen",
     "KEY": "Schlüssel",
     "LANGUAGE": "Sprache",
     "LASTMESSAGE": "Letzte Nachricht",
-    "LEXREGION": "Region",
-    "LIST": "Aufführen",
-    "LOGGED_IN": "Eingeloggt (SIP verbunden)",
-    "LOGIN_TIME": "Anmeldezeit",
-    "LOGOUT": "Ausloggen",
-    "MANDATORYDISPOSITION": "Obligatorische Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
+    "LEXREGION": "LexRegion",
+    "LIST": "Liste",
+    "LOGGED_IN": "Angemeldet",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "LOGOUT": "Abgemeldet",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "PausenID während Qualifizierung",
     "MORE": "Mehr",
-    "MOTIONPROXY": "Proxy- oder Bewegungsdomäne",
+    "MOTIONPROXY": "Proxy",
     "MULTI_SELECT_TOGGLE": "Mehrfachauswahl umschalten",
     "NAME": "Name",
     "NEW_WHATSAPPACCOUNT": "Neues WhatsApp-Konto",
-    "NEW_WHATSAPPCANNEDANSWER": "Neue vordefinierte WhatsApp-Antwort",
-    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Disposition",
+    "NEW_WHATSAPPCANNEDANSWER": "Neue WhatsApp-Textvorlage",
+    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Qualifizierung",
     "NEW_WHATSAPPQUEUE": "Neue WhatsApp-Warteschlange",
-    "NOOP": "Noop",
-    "NOTE": "Hinweis",
+    "NOOP": "Log erstellen (NoOp)",
+    "NOTE": "Anmerkung",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klang",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Sound abspielen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "NO_AGENT_ONLINE": "Kein Agent online",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
-    "NO_INTERACTION_AVAILABLE": "Keine Interaktionen verfügbar",
-    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "Keine vordefinierten WhatsApp-Antworten verfügbar",
-    "NO_WHATSAPPDISPOSITION_AVAILABLE": "Keine WhatsApp-Dispositionen verfügbar",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
+    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
+    "NO_WHATSAPPDISPOSITION_AVAILABLE": "Keine Qualifizierungen verfügbar",
     "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Keine WhatsApp-Konten verfügbar",
     "OF": "von",
     "OPENED": "Geöffnet",
     "PAGE": "Seite",
     "PARTIALPAUSE": "Teilpause",
     "PAUSE": "Pause",
-    "PAUSED": "Pause",
-    "PAUSE_TIME": "Pausenzeit",
+    "PAUSED": "in Pause",
+    "PAUSE_TIME": "Zeit in Pause",
     "PHONE": "Telefon",
     "PRIORITY": "Priorität",
     "PROXY": "Proxy",
     "QUEUE": "Warteschlange",
     "QUEUES": "Warteschlangen",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangenübertragung",
+    "QUEUETRANSFER": "Transfer an Warteschlange erlauben",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
     "READY": "Bereit",
     "REALTIME": "Echtzeit",
-    "RECEIVEURL": "URL erhalten",
+    "RECEIVEURL": "URL für Erhalt",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "REMOTE": "Fernbedienung",
+    "REMOTE": "Remote",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "SAVE": "sparen",
-    "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
+    "SAVE": "Speichern",
+    "SCREENRECORDING": "Bildschirmaufzeichnung",
     "SEARCH_FOR_ANYONE": "Suche",
-    "SECRETACCESSKEY": "Zugriffsschlüsselgeheimnis",
+    "SECRETACCESSKEY": "Geheimer Schlüssel",
     "SELECTED": "Ausgewählt",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "SELECTED_TEAMS": "Ausgewählte Teams",
-    "SELECT_ALL": "Wählen Sie Alle",
-    "SELECT_NONE": "Nichts ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "SEND": "Senden",
-    "SETTINGS": "die Einstellungen",
-    "SPYINTERACTION": "Spionage-Interaktion",
-    "STARTEDAT": "Fing an bei",
-    "START_SCREENRECORDING": "Bildschirmaufnahme starten",
+    "SETTINGS": "Einstellungen",
+    "SPYINTERACTION": "Anzeigen",
+    "STARTEDAT": "Startdatum",
+    "START_SCREENRECORDING": "Bildschirmaufzeichnung starten",
     "STATUS": "Status",
     "STOP_SCREENRECORDING": "Bildschirmaufzeichnung stoppen",
-    "STRATEGY": "Strategie",
+    "STRATEGY": "Verteilungsstrategie",
     "SYSTEM": "System",
-    "TAG": "Etikett",
-    "TAGS": "Stichworte",
+    "TAG": "Tag",
+    "TAGS": "Tags",
     "TEAMADD_WHATSAPPQUEUE": "Team zur WhatsApp-Warteschlange hinzufügen",
-    "TEAMS_ASSOCIATION": "Mannschaftsverband",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
     "TEXT": "Text",
-    "TIMEOUT": "Auszeit",
+    "TIMEOUT": "Zeitüberschreitung",
     "TIMER": "Timer",
-    "TIMES": "Mal",
-    "TO": "Zu",
-    "TOKEN": "Zeichen",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "TRANSFER": "Transfer",
-    "TRUEPRIORITY": "Wahre Priorität",
-    "TYPE": "Art",
-    "UNPAUSE": "Pause beenden",
+    "TIMES": "Zeiten",
+    "TO": "an",
+    "TOKEN": "Token",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
+    "TRANSFER": "Weiterleiten",
+    "TRUEPRIORITY": "Priorität, wenn erfüllt (true)",
+    "TYPE": "Typ",
+    "UNPAUSE": "Pause abbrechen",
     "VALUE": "Wert",
-    "VARIABLE": "Variable",
-    "WAITFORTHEASSIGNEDAGENT": "Warten Sie auf den zugewiesenen Agenten",
+    "VARIABLE": "Variabel",
+    "WAITFORTHEASSIGNEDAGENT": "Auf zugewiesenen Agenten warten",
     "WAITING": "Warten",
     "WELCOMEMESSAGE": "Willkommensnachricht",
     "WHATSAPP": "WhatsApp Connector",
     "WHATSAPPACCOUNTS": "WhatsApp-Konten",
-    "WHATSAPPCANNEDANSWERS": "WhatsApp vordefinierte Antworten",
-    "WHATSAPPDISPOSITIONS": "WhatsApp Dispositionen",
+    "WHATSAPPCANNEDANSWERS": "WhatsApp-Textvorlagen",
+    "WHATSAPPDISPOSITIONS": "WhatsApp-Qualifizierungen",
     "WHATSAPPQUEUES": "WhatsApp-Warteschlangen",
-    "CLIENTEMAIL": "Kunden-E-Mail",
+    "CLIENTEMAIL": "Kunden E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privat Schlüssel",
+    "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID",
     "BASEURL": "Base_URL",
     "DELIVERYREPORTURL": "URL für Erhalt"
index c7b067f..477aad5 100644 (file)
@@ -35,7 +35,7 @@
     "NOVEMBER": "Novembro",
     "DECEMBER": "Dezembro",
     "CHAT": "CHAT",
-    "ACTIVITY": "Atividade",
+    "ACTIVITY": "ATIVIDADE",
     "FRIENDS": "Amigos",
     "APP_SERVERS": "Servidores de Aplicativos",
     "USER_STATS": "Estatísticas do usuário",
     "NOTES": "Notas",
     "QUICK_SETTINGS": "Configurações rápidas",
     "NOTIFICATIONS": "Notificações",
-    "CLOUD_SYNC": "Sincronizar nuvem",
-    "RETRO_THRUSTERS": "Retro propulsores",
+    "CLOUD_SYNC": "Sincronizar Nuvem",
+    "RETRO_THRUSTERS": "Retro Propulsores",
     "RECENT": "Recente",
     "START_NEW_CHAT": "Começar novo Chat",
     "BACK": "Voltar",
     "CALL": "Chamada",
     "MORE": "Mais",
-    "SEND_MESSAGE": "Enviar mensagem",
+    "SEND_MESSAGE": "Enviar Mensagem",
     "REPLY_PLACEHOLDER": "Digite e aperte enter para enviar mensagem",
     "CONTACT_XCALLY_MOTION_SUPPORT": "Entre em contato com xCALLY Motion Support",
     "EXPIRATION_DATE": "Data de validade",
@@ -67,7 +67,7 @@
     "MESSENGER_DISABLED": "A mensagem interna está desativada para este agente!",
     "WARNING": "Aviso",
     "ERRORS": {
-      "NAME_REQUIRED": "Campo obrigatório"
+      "NAME_REQUIRED": "Campo Obrigatório"
     }
   }
 }
index 5ce0d41..c33884e 100644 (file)
@@ -22,7 +22,7 @@
     "TRANSFER": "Transferir",
     "TARGET": "Objetivo",
     "CANCEL": "Cancelar",
-    "FILENAME": "Nome do arquivo",
+    "FILENAME": "Nome do Arquivo",
     "STATUS": "Status",
     "ACTIONS": "Ações",
     "SPEAKER": "Alto-falante",
     "PERSIAN": "Persa",
     "LATVIAN": "Latvian",
     "POLISH": "Polonês",
-    "LOGIN_TIME": "Hora do login",
+    "LOGIN_TIME": "Hora do Login",
     "PAUSE_TIME": "Tempo de pausa",
     "PREVIEW": "Visualizar",
-    "CONFIRM_PASSWORD": "Confirme a senha",
+    "CONFIRM_PASSWORD": "Confirme a Senha",
     "NEW_PASSWORD": "Nova senha",
     "OLD_PASSWORD": "Senha antiga",
     "SAVE": "Salvar",
index 9878435..43df89c 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.c856476f.js"></script>
+  <script src="scripts/app.ce99877e.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 53%
rename from public/scripts/app.c856476f.js
rename to public/scripts/app.ce99877e.js
index 3e60fc7..f22e562 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,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,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,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",params:{channel:"chat"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth","$window",function(e,n,t,a){var i=t.getCurrentUser();return null===a.localStorage.getItem("motion2.user:"+i.id)&&a.localStorage.setItem("motion2.user:"+i.id,JSON.stringify({authenticationType:"google"})),t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,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,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,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,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",params:{channel:"fax"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,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,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver",function(e){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",params:{channel:"mail"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,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",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer,adSsoEnabled,disabledCookie,previewRecallmeReminderInterval,limitTabs",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{mailAccounts:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,provider,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver",function(e){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",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",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",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",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",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",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";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)})})}};function n(){return e.get("motion.token")}function u(){return m}function p(e){return o(function(n,t){r.user.login({id:m.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function g(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:m.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function v(){e.remove("motion.token"),m&&(i.localStorage.removeItem("motion.user:"+m.id),m=null)}function h(){return"agent"===m.role}function f(){return"admin"===m.role}function b(){return"user"===m.role}function t(e){return!!m&&_.includes(m.permissions,e)}function A(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function E(){return o(function(n,t){A(m.userProfileId).then(function(e){m.permissions=e,n()}).catch(function(e){t(e)})})}function y(e){var n=u(),t={authenticationType:e};i.localStorage.setItem("motion2.user:"+n.id,JSON.stringify(t))}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";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(s,o,e,t){var r=this;function n(){var a=r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators),i=r.selectedField.options&&!_.isEmpty(r.selectedField.options.excludedOperators);r.availableOperators=_.filter(r.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,r.selectedField.type);n.isExtra=a&&_.some(r.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,r.selectedField.type)||i&&_.includes(r.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function l(n){return e[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return e.rows;var n=r.searchText?_.filter(e.rows,function(e){e.displayValue="";for(var n=0;n<r.selectedField.options.searchFields.length;n++){var t=e[r.selectedField.options.searchFields[n]]||"";e.displayValue+=t+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return o.when(n)}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function a(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator?r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0:r.isValidCondition=!1}function i(){"number"===r.selectedField.type?_.isNumber(r.endRangeValue)?r.isValidRange=Number(r.endRangeValue)>Number(r.value):r.isValidRange=!0:"date"===r.selectedField.type&&(r.maxDateRange=moment(r.endRangeValue).subtract(1,"day"),r.isValidRange=!0),a()}function d(){var e=m();r.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),p(),r.pendingCondition.style=null,r.pendingCondition=void 0}function m(){return{name:r.selectedField.name,operator:s.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:u(r.value),displayEndValue:u(r.endRangeValue),query:{column:r.selectedField.column,operator:r.selectedOperator.type,value:function(){var e,n=r.value,t=r.endRangeValue;switch(r.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===r.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===r.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=r.selectedField.options.field||"name";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=r.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function u(e){var n;if(e){switch(r.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===r.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=r.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function p(){r.value=null,r.endRangeValue=null,r.minDateRange=null,r.maxDateRange=null,r.isValidCondition=!1}r.operators=r.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],r.addCondition=d,r.editCondition=function(e){r.pendingCondition=e,r.pendingCondition.style="md-amber-200-bg",r.selectedField=_.find(r.options.fields,["name",r.pendingCondition.name]),n(),r.selectedOperator=_.find(r.availableOperators,["type",r.pendingCondition.query.operator]),"date"===r.selectedField.type&&"string"==typeof r.pendingCondition.value?(r.value=new Date(r.pendingCondition.value),r.minDateRange=moment(r.value).add(1,"day"),r.endRangeValue=r.pendingCondition.endValue?new Date(r.pendingCondition.endValue):void 0):(r.value=r.pendingCondition.value,r.endRangeValue=r.pendingCondition.endValue);r.isValidRange=!0,r.isValidCondition=!0},r.updateCondition=c,r.cancelUpdateCondition=function(){r.pendingCondition.style=null,r.pendingCondition=void 0},r.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},r.removeCondition=function(){_.isEmpty(r.options.conditions)&&r.clearFilter()},r.getValues=function(){{if(r.selectedField.options.routes&&Array.isArray(r.selectedField.options.routes)){var e=angular.copy(r.selectedField.options.routes),n=_.map(e,function(e){return l(e)});return o.all(n).then(function(e){r.selectedField.values=_.flatten(e)})}var t=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var a=0;a<Object.keys(t.params).length;a++){var i=Object.keys(t.params)[a];"@autocomplete"===t.params[i]&&(t.params[i]=r.searchText)}if(!r.selectedField.values)return l(t).then(function(e){r.selectedField.values=_.flatten(e)});r.selectedField.values.forEach(function(e){e.translate&&(e.name=s.instant(e.translate))})}},r.onFieldChange=function(){r.value=void 0,r.endRangeValue=void 0,r.searchText=void 0,r.isValidCondition=!1,n(),r.autoSelectOperator=1===r.availableOperators.length,r.autoSelectOperator||(r.selectedOperator=void 0)},r.onOperatorChange=function(e){r.isValidRange=!0,r.selectedOperator&&(e?e.applyTo?0<_.difference(r.selectedOperator.applyTo,e.applyTo).length&&(r.value=null):r.selectedOperator.applyTo&&(r.value=null):r.value||(r.value=null),"between"!=r.selectedOperator.type&&(r.endRangeValue=null),r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators)&&(r.selectedOperator.isExtra=_.some(r.selectedField.options.extraOperators,function(e){return e===r.selectedOperator.type})));a()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?i():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),a()):a()},r.checkRange=i,r.handleKeyboardAction=function(){r.pendingCondition?c():d()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";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")})}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:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t){var a=this;function i(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=i(n,"audiooutput","ringingId"),s.speakerId=i(n,"audiooutput","speakerId"),s.microphoneId=i(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,a.conf=angular.copy(s),a.devices=n,a.activeSessions=t,a.saveSettings=function(){e.hide(a.conf)},a.closeDialog=function(){e.hide()},a.isCompatibleBrowser=function(){return"chrome"===a.conf.browserName.toLowerCase()||"opera"===a.conf.browserName.toLowerCase()||"safari"===a.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(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()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(a,e,n,i,t){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),a.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(a.serverDateOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){n(function(n,t){try{if(a.serverDateOffset)return void n(l());i.setting.getDate().$promise.then(function(e){a.serverDateOffset=e.offset,n(moment(e.now))})}catch(e){t(e)}}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),a.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),a.$on("timer-start",function(){r.startTime=void 0,o()}),e.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","api","toasty"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"=",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 s=this;s.filter=[],s.filtered=!1,s.fontSize=20,s.label="",s.getCount=function(a){var i=0;if(a){s.fontSize=a.attrs[2]&&a.attrs[2].value?parseInt(a.attrs[2].value)-parseInt(a.attrs[2].value)%2:20;var e=a.attrs.find(function(e){return"attrChannel"===e.name});e||a.attrs.push({name:"attrChannel",value:"voice"}),a.attrs.forEach(function(e,n){if("voice"!==a.attrs[3].value?"talking"===a.attrs[0].value?s.label="Opened":"answered"===a.attrs[0].value?s.label="Managed":s.label=a.attrs[0].value:s.label=a.attrs[0].value,!_.isEmpty(e.value))if(e.name.toLowerCase().includes("voice")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.voiceQueuesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.voiceQueuesSelected);for(var t=0;t<a.voiceQueues.rows.length;t+=1)_.includes(s.filter,a.voiceQueues.rows[t].id)&&(i+=a.voiceQueues.rows[t][a.attrs[0].value]?parseInt(a.voiceQueues.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("chat")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.chatWebsitesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.chatWebsitesSelected);for(var t=0;t<a.chatWebsites.rows.length;t+=1)_.includes(s.filter,a.chatWebsites.rows[t].id)&&(i+=a.chatWebsites.rows[t][a.attrs[0].value]?parseInt(a.chatWebsites.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("fax")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.faxAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.faxAccountsSelected);for(var t=0;t<a.faxAccounts.rows.length;t+=1)_.includes(s.filter,a.faxAccounts.rows[t].id)&&(i+=a.faxAccounts.rows[t][a.attrs[0].value]?parseInt(a.faxAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("mail")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.mailAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.mailAccountsSelected);for(var t=0;t<a.mailAccounts.rows.length;t+=1)_.includes(s.filter,a.mailAccounts.rows[t].id)&&(i+=a.mailAccounts.rows[t][a.attrs[0].value]?parseInt(a.mailAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("openchannel")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.openchannelAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.openchannelAccountsSelected);for(var t=0;t<a.openchannelAccounts.rows.length;t+=1)_.includes(s.filter,a.openchannelAccounts.rows[t].id)&&(i+=a.openchannelAccounts.rows[t][a.attrs[0].value]?parseInt(a.openchannelAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("whatsapp")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.whatsappAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.whatsappAccountsSelected);for(var t=0;t<a.whatsappAccounts.rows.length;t+=1)_.includes(s.filter,a.whatsappAccounts.rows[t].id)&&(i+=a.whatsappAccounts.rows[t][a.attrs[0].value]?parseInt(a.whatsappAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("sms")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.smsAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.smsAccountsSelected);for(var t=0;t<a.smsAccounts.rows.length;t+=1)_.includes(s.filter,a.smsAccounts.rows[t].id)&&(i+=a.smsAccounts.rows[t][a.attrs[0].value]?parseInt(a.smsAccounts.rows[t][a.attrs[0].value]):0)}})}return i}})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected)}if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default:for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0)}o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(d,c,t,v){function h(e,n){return"motion2.home."+e+":"+n}function f(e){return _.capitalize(e)+("chat"===e?"Website":"Account")+"Id"}function m(e){return"chat"===e?"Website":"Account"}function b(e,n,t){var a=h(n,t);v.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=f(r),g=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","Account"]).options=l.rows,g){var o=(t=d,a=h(n=r,u),i=f(n),(s=v.get(a)).query&&s.query[i]&&s.query[i].push(t),s);o&&b(o,r,u),m[p].push(d)}return g})},removeAccount:function(t,e){var n=e.accounts,a=e.accountId,i=e.filters,s=e.query,o=e.userId,r=f(t),l=s[r].includes(a);return c.resolve().then(function(){var e=function(e,n,t){var a=h(e,n),i=f(e),s=v.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=m(t);return e.name===n}).options=n.rows,1===n.count&&(e.query[r]=[n.rows[0].id],s[r]=[n.rows[0].id]),b(e,t,o)}).then(function(){var e=m(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,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(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(i){function s(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function o(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:s,set:o,update:function(e,n,t){var a=s(e);t?a[t]=n:a=n;return o(e,a)}}}e.$inject=["$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(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(t){var e={getAgentStatus:function(e){var n="unknown";n=o(e)?"pause":o(e,!0)?"*pause":function(e){if("idle"!==e.voiceStatus&&e.voicePause)return!(e.voiceStatus="pause");return _.every([e.chatStatus,e.faxStatus,e.mailStatus,e.openchannelStatus,e.smsStatus,e.voiceStatus,e.whatsappStatus],r)}(e)?"idle":"busy";return n},setAgentStatusDisplayValue:function(e){var n=e.globalStatus;"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE")));e.globalStatusDisplayValue=n},updateBusyCounter:s,updateQueue:function(e,n,t,a){var i=t.paused;!1===e.online?(t.online=!1,n.loggedInDb-=1,t.paused?(t.paused=!1,n.paused-=1):n.available-=1):t.online?!e[a+"Pause"]||t.paused||o(e,!0)?!e[a+"Pause"]&&t.paused?(t.paused=!1,t.talking||t.busy||(n.paused-=1,n.available+=1)):e[a+"Pause"]&&t.paused&&(t.talking||t.busy||(n.busy-=1,i||(n.paused+=1))):(t.paused=!0,t.talking||t.busy||(i||(n.paused+=1),0<n.available&&(n.available-=1))):(t.online=!0,n.loggedInDb+=1,n.available+=1);s(n)},updateVoiceQueue:function(e,n){e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting);var t=e.loggedIn-e.available-e.talking-e.waiting-n.paused;t<0?(n.paused-=Math.abs(t),n.waitingOrTalking=!0):0<t&&n.waitingOrTalking&&(n.paused+=1,delete n.waitingOrTalking);_.merge(n,_.pick(e,"inbound"===n.type?a:i)),"outbound"===n.type&&_.isNil(e.startPredictive)&&(n.startPredictive=void 0);s(n)}},a=["loggedIn","available","waiting","talking","paused"],i=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"];function s(e){var n=_.filter(e.agents,["busy",!0]).length,t=e.loggedInDb-e.available-e.paused-e.talking-e.waiting;t<0&&(t=0),e.busy=t<n?n:t}function o(e,n){var t=[e.chatPause,e.faxPause,e.mailPause,e.openchannelPause,e.smsPause,e.voicePause,e.whatsappPause];if(!n)return _.every(t);var a=_.filter(t);return 0<a.length&&a.length<t.length}function r(e){if(_.isNil(e))return!0;return _.includes(["idle","unknown","unavailable","ringing"],e)}return e}e.$inject=["$translate"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";angular.module("app.core").factory("settingsManager",function(){var n={};return{get:function(){return n},set:function(e){e&&(n=e.toJSON())}}})}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)}):c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("getOptionByValue",function(){return function(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}},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}},getEmailProviders:function(){return[{name:"Custom",value:"custom"},{name:"Gmail",value:"gmail"},{name:"Hotmail",value:"hotmail"},{name:"Yahoo",value:"yahoo"},{name:"Outlook365",value:"outlook365"}]}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n,t){var a=this;a.currentUser=e.getCurrentUser(),a.cookieAlertHide=n.get("motion.cookieAlertHide:"+a.currentUser.id)||!1,a.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+a.currentUser.id,!0)},a.onInit=function(){t.setting.get({id:1}).$promise.then(function(e){e&&(a.cookieAlertHide=!e.disabledCookie)})},a.onInit()}e.$inject=["Auth","$cookies","api"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"},activedirectory:{method:"post",url:r.baseUrl+"auth/activedirectory"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getSquareProjects:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/square_projects"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},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"}},addUsers:{isArray:!0,method:"post",url:r.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:r.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"square/projects/:id/users"}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}},downloadLogFile:{isArray:!1,method:"get",url:r.baseUrl+"license/download_log_file",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},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,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,i,s,e,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=e,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){return r.user.addSquareProjects({id:i.getCurrentUser().id,ids:[e.id]}).$promise,e}).then(function(e){c.projects.unshift(e),s.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),s.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){return r.squareProject.getUsers({id:c.project.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(n)}).then(function(){_.remove(c.projects,{id:c.project.id}),s.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,O,C,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.sms_account_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(O,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.pause_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(C,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(O,"id","name"),pause_id:U(C,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"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(e,t,a,n,i,s,o){var r=this;function l(){return a.squareProject.getUsers({id:r.project.id,fields:"id,name,fullname,internal",nolimit:!0,role:"user"}).$promise.then(function(e){return r.selectedItems=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.selectedItems=r.selectedItems,a.user.get({fields:"id,fullname,name,internal",role:"user",nolimit:!0}).$promise}).then(function(e){r.items=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.items=_.differenceBy(r.items,r.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=n,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,n){a.squareProject[n?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){t.success({title:"Project properly "+(n?"removed":"added"),msg:"Project has been "+(n?"removed":"added")+"!"}),n||l()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:squareProjects.ADDUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},l()}e.$inject=["$mdDialog","toasty","api","project","projects","$translate","Auth"],angular.module("app.callysquare").controller("ProjectspermissionaddController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,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,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,labelText:"CHAT",messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:m.chatWebsite.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,p).$promise}function v(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getChatWebsiteInteractions=g,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=v,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){v(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("CHAT.CHATQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("chat_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userChatQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userChatQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"chat")})}),e.$on("$destroy",function(){r.removeAllListeners("chat_queue:save"),r.removeAllListeners("userChatQueue:remove"),r.removeAllListeners("userChatQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){O(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=O,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){O(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.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=h,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){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=y,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=b,g.getFinals=A,g.getHistories=E,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)})}),b(),A(),E()}).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?h():void 0}).finally(function(){g.contact&&g.contact.id&&(S(),g.contact.dateOfBirth=y(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=S,g.loadMoreJourney=function(){return i(function(e){var n=g.journey.length;return e(S(n))})};var v=n.getLogger("agent.general.contact");function h(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function f(n){return function(e){g[n]=e||{count:0,rows:[]}}}function b(){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,f("hoppers")).$promise)}function A(){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,f("finals")).$promise)}function E(){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,f("histories")).$promise)}function y(e){return null===e?void 0:new Date(e)}function S(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&&(b(),A(),E())});var T=!0,I=1;m.$watch("queryHopper.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=I),b())}),m.$watch("queryFinal.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=I),A())}),m.$watch("queryHistory.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=I),E())})}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",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;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,r,l,e,d,c,m,u,p){var g=this;g.user=e.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,l.user.getChatWebsites({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.chatAccounts=e||{count:0,rows:[]},l.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(){r.resolve().then(function(){var e=m.get("motion2.home.chat:"+g.user.id,"query");e&&(g.query=_.merge(g.query,e),g.query.sort&&0<=g.query.sort.indexOf("lastMessage")&&(g.query=_.omit(g.query,"sort")),g.query.includeAll=!0,g.isSearchBarVisible=!(g.query.search||!g.query.filter)),1===g.chatAccounts.rows.length&&(g.query.ChatWebsiteId=[g.chatAccounts.rows[0].id])}).catch(function(e){v.error(e)}).then(function(){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){l.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&&l.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=l.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,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(a,t,i,s,o,n,r,l,e,d,c,m,u,p){var g=this;g.user=e.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,l.user.getFaxAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.faxAccounts=e||{count:0,rows:[]},l.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(){r.resolve().then(function(){var e=m.get("motion2.home.fax:"+g.user.id,"query");e&&(g.query=_.merge(g.query,e),g.query.sort&&0<=g.query.sort.indexOf("lastMessage")&&(g.query=_.omit(g.query,"sort")),g.query.includeAll=!0,g.isSearchBarVisible=!(g.query.search||!g.query.filter)),1===g.faxAccounts.rows.length&&(g.query.FaxAccountId=[g.faxAccounts.rows[0].id])}).catch(function(e){v.error(e)}).then(function(){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){l.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&&l.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 l.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=l.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,a,d,e,i,c,u,s,p,g){var v=this;v.user=e.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(){a.resolve().then(function(){var e=s.get("motion2.home.mail:"+v.user.id,"query");e&&(v.query=_.merge(v.query,e),v.query.sort&&0<=v.query.sort.indexOf("lastMessage")&&(v.query=_.omit(v.query,"sort")),v.query.includeAll=!0,v.isSearchBarVisible=!(v.query.search||!v.query.filter)),1===v.mailAccounts.rows.length&&(v.query.MailAccountId=[v.mailAccounts.rows[0].id])}).catch(function(e){h.error(e)}).then(function(){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,r,l,e,d,c,m,u,p){var g=this;g.user=e.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,l.user.getOpenchannelAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.openchannelAccounts=e||{count:0,rows:[]},l.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(){r.resolve().then(function(){var e=m.get("motion2.home.openchannel:"+g.user.id,"query");e&&(g.query=_.merge(g.query,e),g.query.sort&&0<=g.query.sort.indexOf("lastMessage")&&(g.query=_.omit(g.query,"sort")),g.query.includeAll=!0,g.isSearchBarVisible=!(g.query.search||!g.query.filter)),1===g.openchannelAccounts.rows.length&&(g.query.OpenchannelAccountId=[g.openchannelAccounts.rows[0].id])}).catch(function(e){v.error(e)}).then(function(){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){l.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&&l.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 l.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=l.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,r,l,e,d,c,m,u,p){var g=this;g.user=e.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,l.user.getSmsAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.smsAccounts=e||{count:0,rows:[]},l.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(){r.resolve().then(function(){var e=m.get("motion2.home.sms:"+g.user.id,"query");e&&(g.query=_.merge(g.query,e),g.query.sort&&0<=g.query.sort.indexOf("lastMessage")&&(g.query=_.omit(g.query,"sort")),g.query.includeAll=!0,g.isSearchBarVisible=!(g.query.search||!g.query.filter)),1===g.smsAccounts.rows.length&&(g.query.SmsAccountId=[g.smsAccounts.rows[0].id])}).catch(function(e){v.error(e)}).then(function(){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){l.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&&l.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 l.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=l.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,r,l,e,d,c,m,u,p){var g=this;g.user=e.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,l.user.getWhatsappAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.whatsappAccounts=e||{count:0,rows:[]},l.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(){r.resolve().then(function(){var e=m.get("motion2.home.whatsapp:"+g.user.id,"query");e&&(g.query=_.merge(g.query,e),g.query.sort&&0<=g.query.sort.indexOf("lastMessage")&&(g.query=_.omit(g.query,"sort")),g.query.includeAll=!0,g.isSearchBarVisible=!(g.query.search||!g.query.filter)),1===g.whatsappAccounts.rows.length&&(g.query.WhatsappAccountId=[g.whatsappAccounts.rows[0].id])}).catch(function(e){v.error(e)}).then(function(){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){l.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&&l.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 l.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=l.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=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.trim()))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage&&!g.isDraft?g.message.body+T(g.message.type):g.message.body,inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"faxAccount",action:"getDispositions",field:"name",params:{id:m.faxAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,p).$promise}function v(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getFaxAccountInteractions=g,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=v,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){v(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("FAX.FAXQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("fax_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userFaxQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userFaxQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"fax")})}),e.$on("$destroy",function(){r.removeAllListeners("fax_queue:save"),r.removeAllListeners("userFaxQueue:remove"),r.removeAllListeners("userFaxQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,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,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,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},g.editstate=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:g.crudPermissions})},g.verifySMTP=function(e){return e&&e.id?d.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){c.success({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString()})}):c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:o.instant("MAIL.NOTIFICATIONS.UNKNOWN_SMTP_SERVER")})},g.goToInteractions=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:"custom"===e.provider?7:6})},g.goToRealtime=function(){return m.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):d.userProfileSection.get({userProfileId:m.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});c.info({title:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},g.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:g.mailAccounts?g.mailAccounts.rows:[],crudPermissions:g.crudPermissions,realtime:!1}})},g.deleteconfirm=function(e,n){var t=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete mail account").targetEvent(n).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.success=v,g.getMailAccounts=h,g.createOrEditMailAccount=function(e,n){a.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:g.mailAccounts.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]}})},g.deleteMailAccount=f,g.exportSelectedMailAccounts=function(){var e=angular.copy(g.selectedMailAccounts);return g.selectedMailAccounts=[],e},g.deleteSelectedMailAccounts=function(e){var n=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_MESSAGE",{total:g.selectedMailAccounts.length})).ariaLabel("delete mail accounts").targetEvent(e).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedMailAccounts.forEach(function(e){f(e)}),g.selectedMailAccounts=[],c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETED_SUCCESS_TITLE")})})},g.deselectMailAccounts=function(){g.selectedMailAccounts=[]},g.selectAllMailAccounts=function(){g.selectedMailAccounts=g.mailAccounts.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?s(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("MAIL.MAILQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("mail_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userMailQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userMailQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"mail")})}),e.$on("$destroy",function(){r.removeAllListeners("mail_queue:save"),r.removeAllListeners("userMailQueue:remove"),r.removeAllListeners("userMailQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,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(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},u.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueueRt:save",function(e){var n=_.find(u.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueueRt:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:m.openchannelAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,p).$promise}function v(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getOpenchannelAccountInteractions=g,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=v,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){v(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("OPENCHANNEL.OPENCHANNELQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("openchannel_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userOpenchannelQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userOpenchannelQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"openchannel")})}),e.$on("$destroy",function(){r.removeAllListeners("openchannel_queue:save"),r.removeAllListeners("userOpenchannelQueue:remove"),r.removeAllListeners("userOpenchannelQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this,h=t(function(){},999);function f(){v.agents.rows.forEach(function(e){g.setAgentStatusDisplayValue(e)})}function b(){v.query.offset=(v.query.page-1)*v.query.limit,v.promise=l.realtime.getAgents(v.query).$promise.then(function(e){v.agents=e,f()}).catch(function(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function A(){b()}function E(e){_.remove(v.agents.rows,["id",e.UserId])}function y(e){_.remove(v.agents.rows,["id",e.id])}v.currentUser=u.getCurrentUser(),v.channel=n.params.channel,v.queueType=n.params.direction,v.agents=o,v.pauses=r||{count:0,rows:[]},v.license=p,v.userProfileSection=m&&1==m.count?m.rows[0]:null,v.crudPermissions=u.parseCrudPermissions(v.userProfileSection?v.userProfileSection.crudPermissions:null),v.query={limit:10,page:1,sort:"fullname",globalStatusFilter:"",pauseTypeFilter:"",globalQueueFilter:[],channel:v.channel},v.getAgents=b,v.logout=function(e){return l.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){y(e),c.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:v.channel,direction:v.queueType,crudPermissions:v.crudPermissions}})},v.pause=function(e,n){return l.user.pause({id:e.id,type:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.unpause=function(e){return l.user.unpause({id:e.id}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.manageScreenRecording=function(e,n){return l.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.clearSelection=function(){v.query.globalQueueFilter=[]},v.selectAll=function(){_.forEach(v.queues.rows,function(e){v.query.globalQueueFilter.push(e.name)})},v.getQueuesByChannel=function(){if(v.queues&&0<v.queues.count)return;var e={type:v.queueType||"inbound",fields:"id,name",sort:"name",nolimit:"true"},n=v.channel+"Queue";return l.getResourcesByRole(v.currentUser,n,e,null).then(function(e){v.queues=e}).catch(function(e){c.error({title:s.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},d.on("user:save",function(e){var n=_.find(v.agents.rows,["id",e.id]);n?(_.merge(n,e),n.globalStatus=g.getAgentStatus(n),g.setAgentStatusDisplayValue(n),(0<v.query.globalQueueFilter.length||!_.isEmpty(v.query.globalStatusFilter))&&b()):e.online&&b()}),d.on("user:update",function(e){var n=_.find(v.agents.rows,["id",e.id]);if(n){if(!1===e.online)return y(n);b()}else e.online&&b()}),d.on("user:agentconnect",function(e){var n=_.find(v.agents.rows,["id",e.id]);if(n){if(!e.agentconnected)return;_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"]))}(0<v.query.globalQueueFilter.length||!_.isEmpty(v.query.globalStatusFilter))&&b()}),d.on("user:agentcomplete",function(e){if("ATTENDED"===e.transfer)return;var n=_.find(v.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias);(0<v.query.globalQueueFilter.length||!_.isEmpty(v.query.globalStatusFilter))&&b()}),d.on("userVoiceQueue:save",A),d.on("userVoiceQueue:remove",E),d.on("userChatQueue:save",A),d.on("userChatQueue:remove",E),d.on("userSmsQueue:save",A),d.on("userSmsQueue:remove",E),d.on("userMailQueue:save",A),d.on("userMailQueue:remove",E),d.on("userFaxQueue:save",A),d.on("userFaxQueue:remove",E),d.on("userOpenchannelQueue:save",A),d.on("userOpenchannelQueue:remove",E),d.on("userWhatsappQueue:save",A),d.on("userWhatsappQueue:remove",E),f(),e.$on("$destroy",function(){d.removeAllListeners("user:save"),d.removeAllListeners("user:update"),d.removeAllListeners("user:agentconnect"),d.removeAllListeners("user:agentcomplete"),d.removeAllListeners("userVoiceQueue:save"),d.removeAllListeners("userVoiceQueue:remove"),d.removeAllListeners("userChatQueue:save"),d.removeAllListeners("userChatQueue:remove"),d.removeAllListeners("userSmsQueue:save"),d.removeAllListeners("userSmsQueue:remove"),d.removeAllListeners("userMailQueue:save"),d.removeAllListeners("userMailQueue:remove"),d.removeAllListeners("userFaxQueue:save"),d.removeAllListeners("userFaxQueue:remove"),d.removeAllListeners("userOpenchannelQueue:save"),d.removeAllListeners("userOpenchannelQueue:remove"),d.removeAllListeners("userWhatsappQueue:save"),d.removeAllListeners("userWhatsappQueue:remove"),h&&t.cancel(h)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.cloudProviders=e||{count:0,rows:[]}}function v(e){r.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(p.cloudProviders.rows,{id:e.id}),p.cloudProviders.count-=1,p.cloudProviders.rows.length||p.getAiTools(),d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.cloudProviders=o||{count:0,rows:[]},p.selectedAiTools=[],p.query={fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data5,data6",sort:"-updatedAt",limit:10,page:1},p.services={AmazonAWS:"AmazonAWS",MicrosoftAzure:"Microsoft Azure"},p.editdialog=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:p.cloudProviders.rows,license:p.license,setting:null,crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete cloud provider").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){v(e)})},p.success=g,p.getAiTools=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=r.cloudProvider.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="AiTools",p.promise=r.userProfile.getResources(p.query,g).$promise)},p.createOrEditCloudProvider=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:p.cloudProviders.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteCloudProvider=v,p.exportSelectedAiTools=function(){var e=angular.copy(p.selectedAiTools);return p.selectedAiTools=[],e},p.deleteSelectedAiTools=function(e){var n=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_MESSAGE",{total:p.selectedAiTools.length})).ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){p.selectedAiTools.forEach(function(e){v(e)}),p.selectedAiTools=[],d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE")})})},p.deselectAiTools=function(){p.selectedAiTools=[]},p.selectAllAiTools=function(){p.selectedAiTools=p.cloudProviders.rows},p.authenticateToMicrosoftIdentityPlatform=function(e){return r.cloudProvider.oauth2MicrosoftAuthorize({id:e.id}).$promise.then(function(e){p.loginWindow=n.open(e.url,"_blank","width=800,height=600")})},p.updateClientSecret=function(n,e){return a.show({controller:"UpdateClientSecretController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{cloudProvider:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,service,data3",id:n.id})}]}})},l.on("microsoftAuthorization:success",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.success({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_SUCCESS")}))}),l.on("microsoftAuthorization:error",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.error({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_FAIL")}))}),e.$on("$destroy",function(){l.removeAllListeners("microsoftAuthorization:success"),l.removeAllListeners("microsoftAuthorization:error")});var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAiTools())})}e.$inject=["$scope","$window","$mdDialog","$document","$timeout","$translate","cloudProviders","api","socket","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r){var l=this;function d(e){t.hide(e)}l.currentUser=o.getCurrentUser(),l.license=r,l.cloudProvider=angular.copy(n),l.cloudProviders=e,l.newCloudProvider=!1,l.errors=[],l.cloudProvider||(l.cloudProvider={},l.newCloudProvider=!0),l.addNewCloudProvider=function(){l.errors=[],s.cloudProvider.save(l.cloudProvider).$promise.then(function(e){l.cloudProviders.unshift(e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_CREATED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.saveCloudProvider=function(){l.errors=[],s.cloudProvider.update({id:l.cloudProvider.id},l.cloudProvider).$promise.then(function(e){var n=_.find(l.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SAVED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.deleteCloudProvider=function(e){l.errors=[];var n=t.confirm().title(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:l.cloudProvider.name})).ariaLabel("Delete Cloud Provider").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.cloudProvider.delete({id:l.cloudProvider.id}).$promise.then(function(){_.remove(l.cloudProviders,{id:l.cloudProvider.id}),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")}),d(l.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},l.closeDialog=d}e.$inject=["$mdDialog","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.cloudProvider=i,s.errors=[],s.saveSecret=function(){return s.errors=[],a.cloudProvider.update({id:i.id},{data3:s.newSecret}).$promise.then(function(){t.success({title:n.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE")}),o()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},s.closeDialog=o}e.$inject=["$mdDialog","$translate","toasty","api","cloudProvider"],angular.module("app.settings").controller("UpdateClientSecretController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l){var d=this;d.license=i||{},d.agents=0,d.users=0,d.telephones=0,d.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],d.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],d.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],d.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],d.others=[{name:"update",icon:"icon-cloud-download"}],d.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:d.channels,modules:d.modules,addons:d.addons,sessions:d.sessions,others:d.others}})},d.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},d.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},d.alert=s.info,d.downloadLogFile=function(){return o.license.downloadLogFile().$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","license-info.log"),document.body.appendChild(a),a.click(),s.success({title:l.instant("SETTINGS.LICENSE_LOG_FILE"),msg:l.instant("SETTINGS.LICENSE_LOG_FILE_DOWNLOADED")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.isAdmin=r.isAdmin(),o.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return d.agents=e&&e.count?e.count:0,o.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return d.users=e&&e.count?e.count:0,o.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){d.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$window","$mdDialog","$state","license","toasty","api","Auth","$translate"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;l.currentUser=o.getCurrentUser(),l.license=s,l.providers=r.getEmailProviders(),l.mailAccounts=e||{rows:[],count:0},l.cloudProviders=t||{rows:[],count:0},l.mailAccount={service:!0,Smtp:{}},0<l.mailAccounts.count&&(l.mailAccount=l.mailAccounts.rows[0]),l.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,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("SMS.SMSQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("sms_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userSmsQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userSmsQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"sms")})}),e.$on("$destroy",function(){r.removeAllListeners("sms_queue:save"),r.removeAllListeners("userSmsQueue:remove"),r.removeAllListeners("userSmsQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"smsAccount",action:"getDispositions",field:"name",params:{id:m.smsAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,p).$promise}function v(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getSmsAccountInteractions=g,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=v,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){v(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,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;function l(e,n,t){return o.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}r.customDashboard={},r.init=function(e,n){r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.customDashboard=e,r.customDashboard.draggable={enabled:!0,handle:".draggable",stop:l},r.customDashboard.resizable={enabled:!0,handle:".resizable",stop:l},r.customDashboard.widgets=[];var t=_.map(["chat","fax","mail","openchannel","sms","voice","whatsapp"],function(e){return"voice"===e?o.rpc.getVoiceQueues({fields:"id,name"}).$promise.then(function(e){r.voiceQueues=e}):(a=(t="chat"===(n=e)?n+"Website":n+"Account")+"s",o[t].get({fields:"id,name"}).$promise.then(function(e){r[a]=e||{count:0,rows:[]}}));var n,t,a});return i.all(t).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:MailAccounts}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)}));for(var i=0;i<g.mailAccount.length;i++)a&&g.mailAccount[i].id===a.id&&(g.mailAccount[i].canSelect=!1,t.push(g.mailAccount[i]));g.mailAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FAXACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:FaxAccounts}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.faxAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.faxAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.faxAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)}));for(var i=0;i<g.faxAccount.length;i++)a&&g.faxAccount[i].id===a.id&&(g.faxAccount[i].canSelect=!1,t.push(g.faxAccount[i]));g.faxAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SMSACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:SmsAccounts}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.smsAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.smsAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.smsAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)}));for(var i=0;i<g.smsAccount.length;i++)a&&g.smsAccount[i].id===a.id&&(g.smsAccount[i].canSelect=!1,t.push(g.smsAccount[i]));g.smsAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OPENCHANNELACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:OpenchannelAccounts}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.openchannelAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.openchannelAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.openchannelAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)}));for(var i=0;i<g.openchannelAccount.length;i++)a&&g.openchannelAccount[i].id===a.id&&(g.openchannelAccount[i].canSelect=!1,t.push(g.openchannelAccount[i]));g.openchannelAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_WHATSAPPACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:WhatsappAccounts}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.whatsappAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.whatsappAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.whatsappAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)}));for(var i=0;i<g.whatsappAccount.length;i++)a&&g.whatsappAccount[i].id===a.id&&(g.whatsappAccount[i].canSelect=!1,t.push(g.whatsappAccount[i]));g.whatsappAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CHATWEBSITE",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:ChatWebsites}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.chatWebsite,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.chatWebsite,{id:t.id});a.canSelect=!1,n.push(a)}g.chatWebsite=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)}));for(var i=0;i<g.chatWebsite.length;i++)a&&g.chatWebsite[i].id===a.id&&(g.chatWebsite[i].canSelect=!1,t.push(g.chatWebsite[i]));g.chatWebsite=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var n="disposition";l?n=l.route:"user"===m.currentUser.role&&(n="userProfile");var t="get";l?t="getDispositions":"user"===m.currentUser.role&&(t="getResources");var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"};(a=n,i=t,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",n,t].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.allCondition.value=void 0,g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.anyCondition.value=void 0,g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-voip-provider"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userVoiceQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueue:remove"),r.removeAllListeners("userVoiceQueue:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.voiceRecording=c||e.params.voiceRecording||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfile","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h,f){var b=this;function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function y(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){O(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=O,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){O(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function O(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("WHATSAPP.WHATSAPPQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("whatsapp_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userWhatsappQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userWhatsappQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"whatsapp")})}),e.$on("$destroy",function(){r.removeAllListeners("whatsapp_queue:save"),r.removeAllListeners("userWhatsappQueue:remove"),r.removeAllListeners("userWhatsappQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),h(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=h,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:m.whatsappAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,p).$promise}function v(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getWhatsappAccountInteractions=g,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=v,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){v(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.baseUrl=[{name:"US Production",url:"https://us1.whatsapp.api.sinch.com"},{name:"EU Production",url:"https://eu1.whatsapp.api.sinch.com"}],p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){"twilio"===p.whatsappAccount.type&&(p.whatsappAccount.baseUrl=null);r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Sinch",value:"'sinch'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,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(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var n=angular.element("#chat-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){n.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){n.error({title:"PhoneBar API Error",msg:d.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}u.currentUser=i.getCurrentUser(),u.user=void 0,u.users={count:0,rows:[]},u.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),u.unreadMessage={},u.replyMessage="",u.disabled=!1,u.init=function(e){u.license=e},u.toggleChat=function(e){if(e){if(!e.allowmessenger&&"agent"===e.role)return n.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",t.chatInternalMessage.get({sort:"createdAt",FromId:u.currentUser.id+","+e.id,ToId:u.currentUser.id+","+e.id,ChatGroupId:"null"}).$promise.then(function(e){if(e&&e.rows){u.user.messages=e;for(var n=0;n<u.user.messages.rows.length;n+=1)!1===u.user.messages.rows[n].read&&u.user.messages.rows[n].ToId===u.currentUser.id&&t.chatInternalMessage.update({id:u.user.messages.rows[n].id,read:!0})}}).finally(function(){p(0)})}else u.user=void 0},u.reply=function(){u.disabled=!0;Date.now();if(""===u.replyMessage)return void(u.disabled=!1);var e={FromId:u.currentUser.id,ToId:u.user.id,body:u.replyMessage,read:!1};u.replyMessage="",t.chatInternalMessage.save(e).$promise.then(function(e){u.user.messages.rows.push(e),u.user.lastMessageAt=e.createdAt,u.user.lastMessage=e,p(400)}).catch(function(e){}).finally(function(){u.disabled=!1})},u.onMessageSave=function(e){if(e.ToId===u.currentUser.id&&!e.ChatGroupId){u.user&&u.user.id===e.FromId?(u.user.messages.rows.push(e),p(0),t.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var n=_.find(u.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var n=_.find(u.user.messages.rows,{id:e.id});n&&_.merge(n,e)}var t=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var n=_.find(u.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))},u.webcall=function(e){c.$broadcast("webrtc::call",{target:g(e)})},u.call=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},u.transfer=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},s.on("chatInternalMessage:save",u.onMessageSave),s.on("chatInternalMessage:update",u.onMessageUpdate),s.on("user:update",u.onUserUpdate),o("quick-panel").onClose(function(){u.user=void 0}),t.chatInternalMessage.get({fields:"FromId",ToId:u.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){u.unreadMessage=_.countBy(e.rows,"FromId")}).catch(function(e){}),t.chatInternalMessage.getUsers().$promise.then(function(e){u.users=e}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){s.removeAllListeners("chatInternalMessage:save"),s.removeAllListeners("chatInternalMessage:update"),s.removeAllListeners("user:update")})}e.$inject=["$scope","toasty","api","$timeout","Auth","socket","$mdSidenav","$q","$interval","$translate","$rootScope","$http"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(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.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},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"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},hu:{title:"Hungarian",translation:"TOOLBAR.HUNGARIAN",code:"hu",flag:"hu"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}};var O=["ar","fa","he"],C=S.getLogger("toolbar");function w(){h.connect(),h.on("user:update",I.onUserUpdate),h.on("user:called",I.onUserCalled),h.on("chatInternalMessage:save",I.onInternalMessageSave),h.on("chatInternalMessage:update",I.onInternalMessageUpdate),h.on("userVoiceQueue:save",I.onUserVoiceQueue),h.on("voiceQueue:save",I.onVoiceQueue),h.on("userVoiceQueue:remove",I.onUserVoiceQueue),h.on("voiceQueue:remove",I.onVoiceQueue),h.on("voiceQueue:update",I.onVoiceQueue),h.on("user:forcelogout",M),h.on("userNotification:send",U),h.on("userNotification:recalc:"+I.user.id,F)}function R(){h.disconnect("logout")}function x(e){I.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function N(){I.promise=f.user.getQueues(I.query,x).$promise}function D(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 P(){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 L(e){return R(),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 k(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 M(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return R(),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 U(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 F(e){f.user.get({id:I.currentUser.id}).$promise.then(function(e){I.currentUser.permissions=e.permissions,I.autoanswerIconColor=P()?"green-700-fg":"gray-700-fg"})}I.toggleSidenav=function(e){i(e).toggle()},I.logout=L,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=k,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},I.onUserUpdate=function(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;R();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(){w(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),L(!0)})}else L(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)},I.onUserCalled=function(e){if(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})}},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"}):D(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){if(P()){I.autoanswerNotifications;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}})}else 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.onInternalMessageSave=function(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++},I.onInternalMessageUpdate=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--},I.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&N()},I.onVoiceQueue=function(){N()},I.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},function(){I.user=v.getCurrentUser(),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)?k(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 k(null,!0);F()}(),N(),w(),I.openPreviewDialog=D,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("userAutoanswerNotification:send"),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="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","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-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()" 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-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' +  vm.label | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="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 track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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/permissionadd/permissionadd.html",'<md-dialog class="projects-dialog" aria-label="projects">\n  <form name="projectsForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CALLYSQUARE.PERMISSIONADD_PROJECTS">Add User Permissions</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions"></ms-dual-multiselect>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="newForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.COPY_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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              <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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header 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\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="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-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex 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              <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!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column">\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      <div ng-if="vm.dynamics365Account.modernAuthentication == false">\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        <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              <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.USERNAME">Username</label>\n                  \x3c!-- <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit"> --\x3e\n                  <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="vm.dynamics365Account.modernAuthentication == false" 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\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              <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.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center">\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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              <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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/realtime/views/agents/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools 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 = \'\'; vm.getAgents()">\n      <md-option ng-value="\'\'">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.query.globalStatusFilter === \'pause\' || vm.query.globalStatusFilter === \'*pause\'" ng-model="vm.query.pauseTypeFilter" class="md-caption ml-16" ng-change="vm.getAgents()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n    <md-select ng-model="vm.query.globalQueueFilter" 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.selectAll()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows">{{\n        queue.name }}</md-option>\n      <md-button ng-click="vm.clearSelection()" 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.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n      <tr md-row>\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.agents.count > 0">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{agent.userpic && \'api/users/\'+ agent.id +\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{agent.fullname}}</span>\n              <span>{{agent.internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (agent.phoneBarEnableScreenRecordingByAgent || agent.phoneBarEnableAutomaticScreenRecording)">\n            <div class="column">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" ng-class="agent.screenrecording ? \'green-fg\' : \'grey-fg\'" aria-hidden="true">\n                  <md-tooltip>\n                    {{ agent.screenrecording ? \'VOICE.TOOLTIP_SCREENRECORDING_ON\' : \'VOICE.TOOLTIP_SCREENRECORDING_OFF\'\n                    | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt text-center">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[agent.globalStatus]\">\n            <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\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\" start-time=\"agent.lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl text-center\">\n          <span ng-if=\"!agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[agent.voiceStatus]\">\n            {{ 'VOICE.' + (agent.voiceStatus | uppercase) | translate | uppercase }}</span>\n          <span ng-if=\"agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">\n            {{ 'VOICE.ONHOLD' | translate | uppercase }}</span>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\" ng-if=\"agent.voiceStatus === 'talking' || agent.voiceStatus === 'ringing'\">\n            <span ng-if=\"agent.queue\" class=\"padding-5\" ng-class=\"{'idle':'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\" 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' }}\">\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.rows.length}}\" md-on-paginate=\"vm.getAgents\" md-page-select></md-table-pagination>"),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CLOUD_PROVIDERS">Cloud Providers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header 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="36" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n                <md-button type="submit" ng-if="vm.isAdmin" ng-click="vm.downloadLogFile()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.DOWNLOAD_LICENSE_LOG_FILE">Download license log file</span></md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" id="licenseUuid" class="hover-token text-italic text-bold">{{vm.license.uuid}}</span>\n            \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n            <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>\n            <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n          </md-button>--\x3e\n          </span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span id="licenseMachineUuid" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" class="hover-token text-italic text-bold">{{vm.license.machineUuid}}</span>\n              \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>                \n                <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n              </md-button>--\x3e\n            </span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="36"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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="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.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        </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_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span>{{channel.calleridname}}, {{channel.calleridnum}}</span>\n        </td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.busy }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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              <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">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" placeholder="Search by fullname.." translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  \x3c!-- <select ng-model="vm_ct.filterOnline" class="height-50 no-padding no-margin">\n            <option ng-value="undefined">All</option>\n            <option ng-value="true"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online</option>\n            <option ng-value="false"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline</option>\n        </select> --\x3e\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id != vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter:vm_ct.search" ng-click="vm_ct.toggleChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessage[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessage[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper"></md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="!user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check-all md-accent"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n      </div>\n    </md-list-item>\n  </md-list>\n</div>\n\n<div class="chat" ng-show="vm_ct.user" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.toggleChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings id="chat-dialog">\n    <div layout="row" ng-repeat="message in vm_ct.user.messages.rows" class="md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n      <img ng-if="message.FromId === vm_ct.currentUser.id" class="avatar" ng-src="{{vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="!message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\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" 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">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ lang.translation | translate | startcase }}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\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,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,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,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",params:{channel:"chat"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth","$window",function(e,n,t,a){var i=t.getCurrentUser();return null===a.localStorage.getItem("motion2.user:"+i.id)&&a.localStorage.setItem("motion2.user:"+i.id,JSON.stringify({authenticationType:"google"})),t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,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,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,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,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",params:{channel:"fax"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,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,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver",function(e){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",params:{channel:"mail"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,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",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer,adSsoEnabled,disabledCookie,previewRecallmeReminderInterval,limitTabs",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{mailAccounts:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,provider,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver",function(e){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",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",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",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",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",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",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";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)})})}};function n(){return e.get("motion.token")}function u(){return m}function p(e){return o(function(n,t){r.user.login({id:m.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function g(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:m.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function v(){e.remove("motion.token"),m&&(i.localStorage.removeItem("motion.user:"+m.id),m=null)}function h(){return"agent"===m.role}function f(){return"admin"===m.role}function b(){return"user"===m.role}function t(e){return!!m&&_.includes(m.permissions,e)}function A(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function E(){return o(function(n,t){A(m.userProfileId).then(function(e){m.permissions=e,n()}).catch(function(e){t(e)})})}function y(e){var n=u(),t={authenticationType:e};i.localStorage.setItem("motion2.user:"+n.id,JSON.stringify(t))}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";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(s,o,e,t){var r=this;function n(){var a=r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators),i=r.selectedField.options&&!_.isEmpty(r.selectedField.options.excludedOperators);r.availableOperators=_.filter(r.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,r.selectedField.type);n.isExtra=a&&_.some(r.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,r.selectedField.type)||i&&_.includes(r.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function l(n){return e[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return e.rows;var n=r.searchText?_.filter(e.rows,function(e){e.displayValue="";for(var n=0;n<r.selectedField.options.searchFields.length;n++){var t=e[r.selectedField.options.searchFields[n]]||"";e.displayValue+=t+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return o.when(n)}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function a(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator?r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0:r.isValidCondition=!1}function i(){"number"===r.selectedField.type?_.isNumber(r.endRangeValue)?r.isValidRange=Number(r.endRangeValue)>Number(r.value):r.isValidRange=!0:"date"===r.selectedField.type&&(r.maxDateRange=moment(r.endRangeValue).subtract(1,"day"),r.isValidRange=!0),a()}function d(){var e=m();r.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),p(),r.pendingCondition.style=null,r.pendingCondition=void 0}function m(){return{name:r.selectedField.name,operator:s.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:u(r.value),displayEndValue:u(r.endRangeValue),query:{column:r.selectedField.column,operator:r.selectedOperator.type,value:function(){var e,n=r.value,t=r.endRangeValue;switch(r.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===r.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===r.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=r.selectedField.options.field||"name";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=r.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function u(e){var n;if(e){switch(r.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===r.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=r.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function p(){r.value=null,r.endRangeValue=null,r.minDateRange=null,r.maxDateRange=null,r.isValidCondition=!1}r.operators=r.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],r.addCondition=d,r.editCondition=function(e){r.pendingCondition=e,r.pendingCondition.style="md-amber-200-bg",r.selectedField=_.find(r.options.fields,["name",r.pendingCondition.name]),n(),r.selectedOperator=_.find(r.availableOperators,["type",r.pendingCondition.query.operator]),"date"===r.selectedField.type&&"string"==typeof r.pendingCondition.value?(r.value=new Date(r.pendingCondition.value),r.minDateRange=moment(r.value).add(1,"day"),r.endRangeValue=r.pendingCondition.endValue?new Date(r.pendingCondition.endValue):void 0):(r.value=r.pendingCondition.value,r.endRangeValue=r.pendingCondition.endValue);r.isValidRange=!0,r.isValidCondition=!0},r.updateCondition=c,r.cancelUpdateCondition=function(){r.pendingCondition.style=null,r.pendingCondition=void 0},r.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},r.removeCondition=function(){_.isEmpty(r.options.conditions)&&r.clearFilter()},r.getValues=function(){{if(r.selectedField.options.routes&&Array.isArray(r.selectedField.options.routes)){var e=angular.copy(r.selectedField.options.routes),n=_.map(e,function(e){return l(e)});return o.all(n).then(function(e){r.selectedField.values=_.flatten(e)})}var t=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var a=0;a<Object.keys(t.params).length;a++){var i=Object.keys(t.params)[a];"@autocomplete"===t.params[i]&&(t.params[i]=r.searchText)}if(!r.selectedField.values)return l(t).then(function(e){r.selectedField.values=_.flatten(e)});r.selectedField.values.forEach(function(e){e.translate&&(e.name=s.instant(e.translate))})}},r.onFieldChange=function(){r.value=void 0,r.endRangeValue=void 0,r.searchText=void 0,r.isValidCondition=!1,n(),r.autoSelectOperator=1===r.availableOperators.length,r.autoSelectOperator||(r.selectedOperator=void 0)},r.onOperatorChange=function(e){r.isValidRange=!0,r.selectedOperator&&(e?e.applyTo?0<_.difference(r.selectedOperator.applyTo,e.applyTo).length&&(r.value=null):r.selectedOperator.applyTo&&(r.value=null):r.value||(r.value=null),"between"!=r.selectedOperator.type&&(r.endRangeValue=null),r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators)&&(r.selectedOperator.isExtra=_.some(r.selectedField.options.extraOperators,function(e){return e===r.selectedOperator.type})));a()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?i():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),a()):a()},r.checkRange=i,r.handleKeyboardAction=function(){r.pendingCondition?c():d()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";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")})}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:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t){var a=this;function i(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=i(n,"audiooutput","ringingId"),s.speakerId=i(n,"audiooutput","speakerId"),s.microphoneId=i(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,a.conf=angular.copy(s),a.devices=n,a.activeSessions=t,a.saveSettings=function(){e.hide(a.conf)},a.closeDialog=function(){e.hide()},a.isCompatibleBrowser=function(){return"chrome"===a.conf.browserName.toLowerCase()||"opera"===a.conf.browserName.toLowerCase()||"safari"===a.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(t,a){var i=this;function s(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){s(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=function(e,n){n&&(s(e),i.search())},i.onDateRangeSelection=function(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0;i.search()},i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],s(e),i.search()},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),s(e),i.search()}}function n(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}n.$inject=["$filter","dateFilterLocalizationFactory"],e.$inject=["dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}}).factory("dateRangeManager",n)}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner"></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 s=this;s.filter=[],s.filtered=!1,s.fontSize=20,s.label="",s.getCount=function(a){var i=0;if(a){s.fontSize=a.attrs[2]&&a.attrs[2].value?parseInt(a.attrs[2].value)-parseInt(a.attrs[2].value)%2:20;var e=a.attrs.find(function(e){return"attrChannel"===e.name});e||a.attrs.push({name:"attrChannel",value:"voice"}),a.attrs.forEach(function(e,n){if("voice"!==a.attrs[3].value?"talking"===a.attrs[0].value?s.label="Opened":"answered"===a.attrs[0].value?s.label="Managed":s.label=a.attrs[0].value:s.label=a.attrs[0].value,!_.isEmpty(e.value))if(e.name.toLowerCase().includes("voice")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.voiceQueuesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.voiceQueuesSelected);for(var t=0;t<a.voiceQueues.rows.length;t+=1)_.includes(s.filter,a.voiceQueues.rows[t].id)&&(i+=a.voiceQueues.rows[t][a.attrs[0].value]?parseInt(a.voiceQueues.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("chat")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.chatWebsitesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.chatWebsitesSelected);for(var t=0;t<a.chatWebsites.rows.length;t+=1)_.includes(s.filter,a.chatWebsites.rows[t].id)&&(i+=a.chatWebsites.rows[t][a.attrs[0].value]?parseInt(a.chatWebsites.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("fax")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.faxAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.faxAccountsSelected);for(var t=0;t<a.faxAccounts.rows.length;t+=1)_.includes(s.filter,a.faxAccounts.rows[t].id)&&(i+=a.faxAccounts.rows[t][a.attrs[0].value]?parseInt(a.faxAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("mail")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.mailAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.mailAccountsSelected);for(var t=0;t<a.mailAccounts.rows.length;t+=1)_.includes(s.filter,a.mailAccounts.rows[t].id)&&(i+=a.mailAccounts.rows[t][a.attrs[0].value]?parseInt(a.mailAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("openchannel")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.openchannelAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.openchannelAccountsSelected);for(var t=0;t<a.openchannelAccounts.rows.length;t+=1)_.includes(s.filter,a.openchannelAccounts.rows[t].id)&&(i+=a.openchannelAccounts.rows[t][a.attrs[0].value]?parseInt(a.openchannelAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("whatsapp")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.whatsappAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.whatsappAccountsSelected);for(var t=0;t<a.whatsappAccounts.rows.length;t+=1)_.includes(s.filter,a.whatsappAccounts.rows[t].id)&&(i+=a.whatsappAccounts.rows[t][a.attrs[0].value]?parseInt(a.whatsappAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("sms")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.smsAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.smsAccountsSelected);for(var t=0;t<a.smsAccounts.rows.length;t+=1)_.includes(s.filter,a.smsAccounts.rows[t].id)&&(i+=a.smsAccounts.rows[t][a.attrs[0].value]?parseInt(a.smsAccounts.rows[t][a.attrs[0].value]):0)}})}return i}})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected)}if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default:for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0)}o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return o.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(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(i){function s(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function o(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:s,set:o,update:function(e,n,t){var a=s(e);t?a[t]=n:a=n;return o(e,a)}}}e.$inject=["$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(e,s){return{setPlaceholder:function(a){var i;return e(function(n,e){try{if(_.isEmpty(a.resources))i=s.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))i=a.placeholder?s.instant(a.placeholder):s.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)i=s.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";i=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(i)}catch(e){console.log("QuickFilterManager::setPlaceholder",e),n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(t,e){var n={checkEveryChannelPauseStatus:function(n){e.getChannels().forEach(function(e){n[e+"Pause"]&&(n[e+"Status"]="pause")})},getAgentStatus:function(e){var n="unknown";n=o(e)?"pause":o(e,!0)?"*pause":function(e){if("idle"!==e.voiceStatus&&e.voicePause)return!(e.voiceStatus="pause");return _.every([e.chatStatus,e.faxStatus,e.mailStatus,e.openchannelStatus,e.smsStatus,e.voiceStatus,e.whatsappStatus],r)}(e)?"idle":"busy";return n},getAgentStatusDisplayValue:function(e){var n=e.globalStatus;"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE")));return n},getUserUpdateEventOrigin:function(e){var n="call";e.lastLoginAt?n="login":!1===e.online?n="logout":e.pauseType&&(n="pause");return n},sortAgentsByStatus:function(e,t){return e.sort(function(e,n){return e.globalStatus===n.globalStatus?"pause"===e.globalStatus?"DESC"===t?(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"===t?e.fullname.toLowerCase()<n.fullname.toLowerCase()?1:-1:e.fullname.toLowerCase()<n.fullname.toLowerCase()?-1:1:"DESC"===t?e.globalStatus<n.globalStatus?1:-1:e.globalStatus<n.globalStatus?-1:1})},updateBusyCounter:s,updateQueue:function(e,n,t,a){var i=t.paused;!1===e.online?(t.online=!1,n.loggedInDb-=1,t.paused?(t.paused=!1,n.paused-=1):n.available-=1):t.online?!e[a+"Pause"]||t.paused||o(e,!0)?!e[a+"Pause"]&&t.paused?(t.paused=!1,t.talking||t.busy||(n.paused-=1,n.available+=1)):e[a+"Pause"]&&t.paused&&(t.talking||t.busy||(n.busy-=1,i||(n.paused+=1))):(t.paused=!0,t.talking||t.busy||(i||(n.paused+=1),0<n.available&&(n.available-=1))):(t.online=!0,n.loggedInDb+=1,n.available+=1);s(n)},updateVoiceQueue:function(e,n){e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting);var t=e.loggedIn-e.available-e.talking-e.waiting-n.paused;t<0?(n.paused-=Math.abs(t),n.waitingOrTalking=!0):0<t&&n.waitingOrTalking&&(n.paused+=1,delete n.waitingOrTalking);_.merge(n,_.pick(e,"inbound"===n.type?a:i)),"outbound"===n.type&&_.isNil(e.startPredictive)&&(n.startPredictive=void 0);s(n)}},a=["loggedIn","available","waiting","talking","paused"],i=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"];function s(e){var n=_.filter(e.agents,["busy",!0]).length,t=e.loggedInDb-e.available-e.paused-e.talking-e.waiting;t<0&&(t=0),e.busy=t<n?n:t}function o(e,n){var t=[e.chatPause,e.faxPause,e.mailPause,e.openchannelPause,e.smsPause,e.voicePause,e.whatsappPause];if(!n)return _.every(t);var a=_.filter(t);return 0<a.length&&a.length<t.length}function r(e){if(_.isNil(e))return!0;return _.includes(["idle","unknown","unavailable","ringing"],e)}return n}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"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getSquareProjects:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/square_projects"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},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"}},addUsers:{isArray:!0,method:"post",url:r.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:r.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"square/projects/:id/users"}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}},downloadLogFile:{isArray:!1,method:"get",url:r.baseUrl+"license/download_log_file",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},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,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,i,s,e,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=e,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){return r.user.addSquareProjects({id:i.getCurrentUser().id,ids:[e.id]}).$promise,e}).then(function(e){c.projects.unshift(e),s.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),s.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){return r.squareProject.getUsers({id:c.project.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(n)}).then(function(){_.remove(c.projects,{id:c.project.id}),s.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,O,C,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.sms_account_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(O,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.pause_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(C,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(O,"id","name"),pause_id:U(C,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"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(e,t,a,n,i,s,o){var r=this;function l(){return a.squareProject.getUsers({id:r.project.id,fields:"id,name,fullname,internal",nolimit:!0,role:"user"}).$promise.then(function(e){return r.selectedItems=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.selectedItems=r.selectedItems,a.user.get({fields:"id,fullname,name,internal",role:"user",nolimit:!0}).$promise}).then(function(e){r.items=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.items=_.differenceBy(r.items,r.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=n,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,n){a.squareProject[n?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){t.success({title:"Project properly "+(n?"removed":"added"),msg:"Project has been "+(n?"removed":"added")+"!"}),n||l()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:squareProjects.ADDUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},l()}e.$inject=["$mdDialog","toasty","api","project","projects","$translate","Auth"],angular.module("app.callysquare").controller("ProjectspermissionaddController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,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,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,labelText:"CHAT",messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:m.chatWebsite.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,p).$promise}function v(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getChatWebsiteInteractions=g,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=v,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){v(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("CHAT.CHATQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("chat_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userChatQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userChatQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"chat")})}),e.$on("$destroy",function(){r.removeAllListeners("chat_queue:save"),r.removeAllListeners("userChatQueue:remove"),r.removeAllListeners("userChatQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){O(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=O,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){O(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.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=h,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){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=y,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=b,g.getFinals=A,g.getHistories=E,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)})}),b(),A(),E()}).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?h():void 0}).finally(function(){g.contact&&g.contact.id&&(S(),g.contact.dateOfBirth=y(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=S,g.loadMoreJourney=function(){return i(function(e){var n=g.journey.length;return e(S(n))})};var v=n.getLogger("agent.general.contact");function h(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function f(n){return function(e){g[n]=e||{count:0,rows:[]}}}function b(){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,f("hoppers")).$promise)}function A(){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,f("finals")).$promise)}function E(){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,f("histories")).$promise)}function y(e){return null===e?void 0:new Date(e)}function S(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&&(b(),A(),E())});var T=!0,I=1;m.$watch("queryHopper.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=I),b())}),m.$watch("queryFinal.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=I),A())}),m.$watch("queryHistory.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=I),E())})}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",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;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,r,e,l,d){var c=this;function m(){var e={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},n={ChatWebsiteId:_.map(c.chatAccounts.rows,"id"),createdAt:e};c.query=_.merge(c.query,n)}function u(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(c.chatAccounts.rows,function(e){return{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function p(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&y(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)v(c.chatInteractions.rows[n])}function g(e,n){c.searchInProgress=!0,e||(c.query.page=1),c.query.offset=(c.query.page-1)*c.query.limit;var t=a.localStorage.getItem("motion2.home.chat:"+c.user.id);(t=t?JSON.parse(t):{}).query=c.query,a.localStorage.setItem("motion2.home.chat:"+c.user.id,JSON.stringify(t)),c.promise=r.chatInteraction.get(c.query,p).$promise}function v(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),c.query.sort){var t=_.startsWith(c.query.sort,"-")?"desc":"asc";c.chatInteractions.rows=_.orderBy(c.chatInteractions.rows,_.trimStart(c.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===c.setting.chatInteractionsReloadTimeout&&g(c.query.page)}}function A(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function y(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||g()},1e3*c.setting.chatInteractionsReloadTimeout)}c.user=e.getCurrentUser(),c.license={},c.setting={},c.tags={count:0,rows:[]},c.chatInteractions={count:0,rows:[]},c.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},c.sectionColor="green-A700",c.onInit=function(e,n){return c.license=e,c.setting=n,r.user["get"+_.upperFirst("ChatWebsites")]({id:c.user.id,nolimit:!0}).$promise.then(function(e){return c.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){c.tags=e||{count:0,rows:[]}}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:c.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:c.tags.rows,placeholder:"DASHBOARDS.TAGS"}],c.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:c.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]}}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(e)try{e=JSON.parse(e);var n=_.map(c.chatAccounts.rows,function(e){return e.id});_.isEqual(n,e.query.ChatWebsiteId)?e.query&&(c.query=_.merge(c.query,e.query),_.isEmpty(c.chatAccounts.rows)?c.query.ChatWebsiteId=[]:_.isEmpty(c.query.ChatWebsiteId)&&(c.query.ChatWebsiteId=_(c.chatAccounts.rows).map("id").take().value()),c.query.sort&&0<=c.query.sort.indexOf("lastMessage")&&(c.query=_.omit(c.query,"sort")),c.query.includeAll=!0,c.isSearchBarVisible=!(c.query.search||!c.query.filter)):m()}catch(e){console.error(e)}else m();l.on("chatInteraction:save",b),l.on("chatInteraction:update",b),l.on("chatInteractionTags:save",A),l.on("chatMessage:save",E),l.on("chatMessage:update",E),l.on("user_has_chat_interactions:save",h),l.on("user_has_chat_interactions:remove",f),g(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&y()})},c.success=p,c.getChatInteractions=g,c.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},c.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.disposeInteraction=function(e,t){var a=c.user.voicePause||c.user.chatPause||c.user.mailPause||c.user.openchannelPause||c.user.faxPause,n=!t.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){c.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:c.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:c.user,channel:"chat",interaction:t}})},c.getContactLabel=v,c.getAgentLabel=function(e){if(e.UserId)return e.UserId===c.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},c.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},c.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:c.sectionColor,fields:c.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){c.isSearchBarVisible=!(e.value||!c.query.filter),e.apply&&(c.query.search=e.value,g())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.on("userChatWebsite:save",function(e){var n=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(n){var t=(n=JSON.parse(n)).query.ChatWebsiteId.indexOf(e.ChatWebsiteId);t<0&&(n.query.ChatWebsiteId.push(e.ChatWebsiteId),c.query.ChatWebsiteId=n.query.ChatWebsiteId)}}),l.on("userChatWebsite:remove",function(e){var n=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(n){var t=(n=JSON.parse(n)).query.ChatWebsiteId.indexOf(e.ChatWebsiteId);-1<t&&(n.query.ChatWebsiteId.splice(t,1),c.query.ChatWebsiteId=n.query.ChatWebsiteId)}}),t.$on("$destroy",function(){l.removeAllListeners("chatMessage:save"),l.removeAllListeners("chatMessage:update"),l.removeAllListeners("chatInteraction:save"),l.removeAllListeners("chatInteractionTags:save"),l.removeAllListeners("chatInteraction:update"),l.removeAllListeners("user_has_chat_interactions:save"),l.removeAllListeners("user_has_chat_interactions:remove"),c.interactionsInterval&&n.cancel(c.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(i,t,s,o,a,n,r,e,l,d,c){var m=this;function u(){var e={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},n={FaxAccountId:_.map(m.faxAccounts.rows,"id"),createdAt:e};m.query=_.merge(m.query,n)}function p(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.faxAccounts.rows,function(e){return{model:"faxAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function g(e){!m.reloadingInteractions&&0<m.setting.faxInteractionsReloadTimeout&&function(e){e&&m.interactionsInterval&&t.cancel(m.interactionsInterval);m.interactionsInterval=t(function(){m.reloadingInteractions=!0,m.searchInProgress||v()},1e3*m.setting.faxInteractionsReloadTimeout)}(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxInteractions.rows.length;n+=1)h(m.faxInteractions.rows[n])}function v(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.fax:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.fax:"+m.user.id,JSON.stringify(t)),m.promise=r.faxInteraction.get(m.query,g).$promise}function h(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function f(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function b(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function A(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.faxInteractions.rows=_.orderBy(m.faxInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else v(m.query.page)}}function E(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function y(e){if(e&&!e.secret){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.faxInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.sectionColor="blue-grey",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("faxAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}],m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:p("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:p("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:p("third")}}]}}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(e)try{e=JSON.parse(e);var n=_.map(m.faxAccounts.rows,function(e){return e.id});_.isEqual(n,e.query.FaxAccountId)?e.query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.faxAccounts.rows)?m.query.FaxAccountId=[]:_.isEmpty(m.query.FaxAccountId)&&(m.query.FaxAccountId=_(m.faxAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter)):u()}catch(e){console.error(e)}else u();l.on("faxInteraction:save",A),l.on("faxInteraction:update",A),l.on("faxInteractionTags:save",E),l.on("faxMessage:save",y),l.on("faxMessage:update",y),l.on("user_has_fax_interactions:save",f),l.on("user_has_fax_interactions:remove",b),v(m.query.page)})},m.success=g,m.getFaxInteractions=v,m.showFaxInteraction=function(e,n){i.$parent.vm.addInteractionTab("fax",n)},m.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"fax",interaction:t}})},m.getContactLabel=h,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},m.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},m.composeFaxInteraction=function(e,a){s.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.faxAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}var t={channel:"fax",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,v())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.on("userFaxAccount:save",function(e){var n=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(n){var t=(n=JSON.parse(n)).query.FaxAccountId.indexOf(e.FaxAccountId);t<0&&(n.query.FaxAccountId.push(e.FaxAccountId),m.query.FaxAccountId=n.query.FaxAccountId)}}),l.on("userFaxAccount:remove",function(e){var n=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(n){var t=(n=JSON.parse(n)).query.FaxAccountId.indexOf(e.FaxAccountId);-1<t&&(n.query.FaxAccountId.splice(t,1),m.query.FaxAccountId=n.query.FaxAccountId)}}),i.$on("$destroy",function(){l.removeAllListeners("faxMessage:save"),l.removeAllListeners("faxMessage:update"),l.removeAllListeners("faxInteraction:save"),l.removeAllListeners("faxInteractionTags:save"),l.removeAllListeners("faxInteraction:update"),l.removeAllListeners("user_has_fax_interactions:save"),l.removeAllListeners("user_has_fax_interactions:remove"),m.interactionsInterval&&t.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,m,t,d,e,a,c,u){var p=this;function i(){var e={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},n={MailAccountId:_.map(p.mailAccounts.rows,"id"),createdAt:e};p.query=_.merge(p.query,n)}function s(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(p.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 g(e){!p.reloadingInteractions&&0<p.setting.mailInteractionsReloadTimeout&&T(!0),p.searchInProgress=!1,p.reloadingInteractions=!1,p.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<p.mailInteractions.rows.length;n+=1)f(p.mailInteractions.rows[n])}function v(e,n){p.searchInProgress=!0,e||(p.query.page=1),(void 0===p.query.closed||null===p.query.closed||p.query.closed)&&delete p.query.substatus,p.query.offset=(p.query.page-1)*p.query.limit;var t=m.localStorage.getItem("motion2.home.mail:"+p.user.id);(t=t?JSON.parse(t):{}).query=p.query,m.localStorage.setItem("motion2.home.mail:"+p.user.id,JSON.stringify(t)),p.promise=d.mailInteraction.get(p.query,g).$promise}function h(e,n){o.$parent.vm.addInteractionTab("mail",n)}function f(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 b(e){var n=_.find(p.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function A(e){var n=_.find(p.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function E(e){if(e){var n=_.find(p.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),p.query.sort){var t=_.startsWith(p.query.sort,"-")?"desc":"asc";p.mailInteractions.rows=_.orderBy(p.mailInteractions.rows,_.trimStart(p.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===p.setting.mailInteractionsReloadTimeout&&v(p.query.page)}}function y(e){if(e){var n=_.find(p.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function S(e){if(e&&!e.secret){var n=_.find(p.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 T(e){e&&p.interactionsInterval&&n.cancel(p.interactionsInterval),p.interactionsInterval=n(function(){p.reloadingInteractions=!0,p.searchInProgress||v()},1e3*p.setting.mailInteractionsReloadTimeout)}p.user=e.getCurrentUser(),p.license={},p.setting={},p.tags={count:0,rows:[]},p.mailInteractions={count:0,rows:[]},p.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},p.sectionColor="teal",p.onInit=function(e,n){return p.license=e,p.setting=n,d.user["get"+_.upperFirst("mailAccounts")]({id:p.user.id,nolimit:!0}).$promise.then(function(e){return p.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){p.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){p.subStatuses=e||{count:0,rows:[]}}).then(function(){p.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:p.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:p.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:p.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:p.tags.rows,placeholder:"DASHBOARDS.TAGS"}],p.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:p.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:s("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:s("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:s("third")}}]}}).catch(function(e){console.error(e)}).finally(function(){var e=m.localStorage.getItem("motion2.home.mail:"+p.user.id);if(e)try{e=JSON.parse(e);var n=_.map(p.mailAccounts.rows,function(e){return e.id});_.isEqual(n,e.query.MailAccountId)?e.query&&(p.query=_.merge(p.query,e.query),_.isEmpty(p.mailAccounts.rows)?p.query.MailAccountId=[]:_.isEmpty(p.query.MailAccountId)&&(p.query.MailAccountId=_(p.mailAccounts.rows).map("id").take().value()),p.query.sort&&0<=p.query.sort.indexOf("lastMessage")&&(p.query=_.omit(p.query,"sort")),p.query.includeAll=!0,p.isSearchBarVisible=!(p.query.search||!p.query.filter)):i()}catch(e){console.error(e)}else i();a.on("mailInteraction:save",E),a.on("mailInteraction:update",E),a.on("mailInteractionTags:save",y),a.on("mailMessage:save",S),a.on("mailMessage:update",S),a.on("user_has_mail_interactions:save",b),a.on("user_has_mail_interactions:remove",A),v(p.query.page),0<p.setting.mailInteractionsReloadTimeout&&T()})},p.success=g,p.getMailInteractions=v,p.showMailInteraction=h,p.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()})})},p.disposeInteraction=function(e,t){var a=p.user.voicePause||p.user.chatPause||p.user.mailPause||p.user.openchannelPause||p.user.faxPause,n=!t.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){p.user&&t.Account.mandatoryDisposition&&!a&&d.user.unpause({id:p.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:p.user,channel:"mail",interaction:t}})},p.getContactLabel=f,p.getAgentLabel=function(e){if(e.UserId)return e.UserId===p.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},p.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},p.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=p.user.voicePause||p.user.chatPause||p.user.mailPause||p.user.openchannelPause||p.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){p.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:p.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:p.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)}})},p.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:p.sectionColor,fields:p.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){p.isSearchBarVisible=!(e.value||!p.query.filter),e.apply&&(p.query.search=e.value,v())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,h(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=p.user.voicePause||p.user.chatPause||p.user.mailPause||p.user.openchannelPause||p.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){p.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:p.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:p.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)}})}),a.on("userMailAccount:save",function(e){var n=m.localStorage.getItem("motion2.home.mail:"+p.user.id);if(n){var t=(n=JSON.parse(n)).query.MailAccountId.indexOf(e.MailAccountId);t<0&&(n.query.MailAccountId.push(e.MailAccountId),p.query.MailAccountId=n.query.MailAccountId)}}),a.on("userMailAccount:remove",function(e){var n=m.localStorage.getItem("motion2.home.mail:"+p.user.id);if(n){var t=(n=JSON.parse(n)).query.MailAccountId.indexOf(e.MailAccountId);-1<t&&(n.query.MailAccountId.splice(t,1),p.query.MailAccountId=n.query.MailAccountId)}}),p.resetTooltipPosition=function(e){var n=angular.element(e.currentTarget).children()[1],t=angular.element(n);t.css("top",""),t.css("left",""),t.css("bottom","")},p.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(){a.removeAllListeners("mailMessage:save"),a.removeAllListeners("mailMessage:update"),a.removeAllListeners("mailInteraction:save"),a.removeAllListeners("mailInteractionTags:save"),a.removeAllListeners("mailInteraction:update"),a.removeAllListeners("user_has_mail_interactions:save"),a.removeAllListeners("user_has_mail_interactions:remove"),p.interactionsInterval&&n.cancel(p.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(){var e={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},n={OpenchannelAccountId:_.map(m.openchannelAccounts.rows,"id"),createdAt:e};m.query=_.merge(m.query,n)}function p(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.openchannelAccounts.rows,function(e){return{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function g(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&S(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)h(m.openchannelInteractions.rows[n])}function v(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.openchannel:"+m.user.id,JSON.stringify(t)),m.promise=r.openchannelInteraction.get(m.query,g).$promise}function h(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function f(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function b(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function A(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.openchannelInteractions.rows=_.orderBy(m.openchannelInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.openchannelInteractionsReloadTimeout&&v(m.query.page)}}function E(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function y(e){if(e&&!e.secret){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function S(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||v()},1e3*m.setting.openchannelInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.openchannelInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.sectionColor="amber",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("openchannelAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}],m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:p("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:p("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:p("third")}}]}}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(e)try{e=JSON.parse(e);var n=_.map(m.openchannelAccounts.rows,function(e){return e.id});_.isEqual(n,e.query.openchannel)?e.query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.openchannelAccounts.rows)?m.query.OpenchannelAccountId=[]:_.isEmpty(m.query.OpenchannelAccountId)&&(m.query.OpenchannelAccountId=_(m.openchannelAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter)):u()}catch(e){console.error(e)}else u();l.on("openchannelInteraction:save",A),l.on("openchannelInteraction:update",A),l.on("openchannelInteractionTags:save",E),l.on("openchannelMessage:save",y),l.on("openchannelMessage:update",y),l.on("user_has_openchannel_interactions:save",f),l.on("user_has_openchannel_interactions:remove",b),v(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&S()})},m.success=g,m.getOpenchannelInteractions=v,m.showOpenchannelInteraction=function(e,n){i.$parent.vm.addInteractionTab("openchannel",n)},m.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"openchannel",interaction:t}})},m.getContactLabel=h,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeOpenchannelInteraction=function(e,a){s.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.openchannelAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"openchannel",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,v())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.on("useropenchannelAccount:save",function(e){var n=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(n){var t=(n=JSON.parse(n)).query.OpenchannelAccountId.indexOf(e.OpenchannelAccountId);t<0&&(n.query.OpenchannelAccountId.push(e.OpenchannelAccountId),m.query.OpenchannelAccountId=n.query.OpenchannelAccountId)}}),l.on("useropenchannelAccount:remove",function(e){var n=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(n){var t=(n=JSON.parse(n)).query.OpenchannelAccountId.indexOf(e.OpenchannelAccountId);-1<t&&(n.query.OpenchannelAccountId.splice(t,1),m.query.OpenchannelAccountId=n.query.OpenchannelAccountId)}}),i.$on("$destroy",function(){l.removeAllListeners("openchannelMessage:save"),l.removeAllListeners("openchannelMessage:update"),l.removeAllListeners("openchannelInteraction:save"),l.removeAllListeners("openchannelInteractionTags:save"),l.removeAllListeners("openchannelInteraction:update"),l.removeAllListeners("user_has_openchannel_interactions:save"),l.removeAllListeners("user_has_openchannel_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId,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(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(){var e={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},n={SmsAccountId:_.map(m.smsAccounts.rows,"id"),createdAt:e};m.query=_.merge(m.query,n)}function p(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.smsAccounts.rows,function(e){return{model:"smsAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function g(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&S(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)h(m.smsInteractions.rows[n])}function v(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.sms:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.sms:"+m.user.id,JSON.stringify(t)),m.promise=r.smsInteraction.get(m.query,g).$promise}function h(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function f(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function b(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function A(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.smsInteractions.rows=_.orderBy(m.smsInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.smsInteractionsReloadTimeout&&v(m.query.page)}}function E(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function y(e){if(e&&!e.secret){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function S(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||v()},1e3*m.setting.smsInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.smsInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.sectionColor="orange",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("smsAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}],m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:p("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:p("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:p("third")}}]}}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(e)try{e=JSON.parse(e);var n=_.map(m.smsAccounts.rows,function(e){return e.id});_.isEqual(n,e.query.SmsAccountId)?e.query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.smsAccounts.rows)?m.query.SmsAccountId=[]:_.isEmpty(m.query.SmsAccountId)&&(m.query.SmsAccountId=_(m.smsAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter)):u()}catch(e){console.error(e)}else u();l.on("smsInteraction:save",A),l.on("smsInteraction:update",A),l.on("smsInteractionTags:save",E),l.on("smsMessage:save",y),l.on("smsMessage:update",y),l.on("user_has_sms_interactions:save",f),l.on("user_has_sms_interactions:remove",b),v(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&S()})},m.success=g,m.getSmsInteractions=v,m.showSmsInteraction=function(e,n){i.$parent.vm.addInteractionTab("sms",n)},m.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"sms",interaction:t}})},m.getContactLabel=h,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeSmsInteraction=function(e,a){s.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.smsAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"sms",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,v())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.on("userSmsAccount:save",function(e){var n=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(n){var t=(n=JSON.parse(n)).query.SmsAccountId.indexOf(e.SmsAccountId);t<0&&(n.query.SmsAccountId.push(e.SmsAccountId),m.query.SmsAccountId=n.query.SmsAccountId)}}),l.on("userSmsAccount:remove",function(e){var n=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(n){var t=(n=JSON.parse(n)).query.SmsAccountId.indexOf(e.SmsAccountId);-1<t&&(n.query.SmsAccountId.splice(t,1),m.query.SmsAccountId=n.query.SmsAccountId)}}),i.$on("$destroy",function(){l.removeAllListeners("smsMessage:save"),l.removeAllListeners("smsMessage:update"),l.removeAllListeners("smsInteraction:save"),l.removeAllListeners("smsInteractionTags:save"),l.removeAllListeners("smsInteraction:update"),l.removeAllListeners("user_has_sms_interactions:save"),l.removeAllListeners("user_has_sms_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get({sort:"name"}).$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(){var e={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},n={WhatsappAccountId:_.map(m.whatsappAccounts.rows,"id"),createdAt:e};m.query=_.merge(m.query,n)}function p(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.whatsappAccounts.rows,function(e){return{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function g(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&S(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)h(m.whatsappInteractions.rows[n])}function v(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.whatsapp:"+m.user.id,JSON.stringify(t)),m.promise=r.whatsappInteraction.get(m.query,g).$promise}function h(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function f(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function b(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function A(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.whatsappInteractions.rows=_.orderBy(m.whatsappInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.whatsappInteractionsReloadTimeout&&v(m.query.page)}}function E(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function y(e){if(e&&!e.secret){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function S(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||v()},1e3*m.setting.whatsappInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.whatsappInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.sectionColor="lime-A700",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("whatsappAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}],m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:p("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:p("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:p("third")}}]}}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(e)try{e=JSON.parse(e);var n=_.map(m.whatsappAccounts.rows,function(e){return e.id});_.isEqual(n,e.query.WhatsappAccountId)?e.query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.whatsappAccounts.rows)?m.query.WhatsappAccountId=[]:_.isEmpty(m.query.WhatsappAccountId)&&(m.query.WhatsappAccountId=_(m.whatsappAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter)):u()}catch(e){console.error(e)}else u();l.on("whatsappInteraction:save",A),l.on("whatsappInteraction:update",A),l.on("whatsappInteractionTags:save",E),l.on("whatsappMessage:save",y),l.on("whatsappMessage:update",y),l.on("user_has_whatsapp_interactions:save",f),l.on("user_has_whatsapp_interactions:remove",b),v(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&S()})},m.success=g,m.getWhatsappInteractions=v,m.showWhatsappInteraction=function(e,n){i.$parent.vm.addInteractionTab("whatsapp",n)},m.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"whatsapp",interaction:t}})},m.getContactLabel=h,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeWhatsappInteraction=function(e,a){s.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.whatsappAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"whatsapp",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,v())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.on("userWhatsappAccount:save",function(e){var n=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(n){var t=(n=JSON.parse(n)).query.WhatsappAccountId.indexOf(e.WhatsappAccountId);t<0&&(n.query.WhatsappAccountId.push(e.WhatsappAccountId),m.query.WhatsappAccountId=n.query.WhatsappAccountId)}}),l.on("userWhatsappAccount:remove",function(e){var n=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(n){var t=(n=JSON.parse(n)).query.WhatsappAccountId.indexOf(e.WhatsappAccountId);-1<t&&(n.query.WhatsappAccountId.splice(t,1),m.query.WhatsappAccountId=n.query.WhatsappAccountId)}}),i.$on("$destroy",function(){l.removeAllListeners("whatsappMessage:save"),l.removeAllListeners("whatsappMessage:update"),l.removeAllListeners("whatsappInteraction:save"),l.removeAllListeners("whatsappInteractionTags:save"),l.removeAllListeners("whatsappInteraction:update"),l.removeAllListeners("user_has_whatsapp_interactions:save"),l.removeAllListeners("user_has_whatsapp_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.trim()))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage&&!g.isDraft?g.message.body+T(g.message.type):g.message.body,inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"faxAccount",action:"getDispositions",field:"name",params:{id:m.faxAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,p).$promise}function v(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getFaxAccountInteractions=g,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=v,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){v(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("FAX.FAXQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("fax_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userFaxQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userFaxQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"fax")})}),e.$on("$destroy",function(){r.removeAllListeners("fax_queue:save"),r.removeAllListeners("userFaxQueue:remove"),r.removeAllListeners("userFaxQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,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,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.newMailAccount=!0),e.params.id&&(g.mailAccount.MailAccountId=e.params.id),g.addNewMailAccount=function(){g.errors=[],r.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_CREATED_SUCCESS_TITLE")}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],r.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return i.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=t.confirm().title(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:g.mailAccount.name})).ariaLabel("Delete Mail Account").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.onProviderChange=function(){"custom"!==g.mailAccount.provider&&(g.mailAccount.authentication=!0);"outlook365"!==g.mailAccount.provider&&(g.mailAccount.modernAuthentication=!1)},g.closeDialog=v,p=[{key:"id",value:Number(g.mailAccount.ListId)}],r.getResourcesByRole(g.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},p).then(function(e){g.lists=e.rows}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$mdDialog","$translate","toasty","mailAccounts","mailAccount","cloudProviders","api","Auth","license","setting","crudPermissions","msUtils"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"mailAccount",action:"getDispositions",field:"name",params:{id:m.mailAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,p).$promise}function v(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.email||""):e.contactName=i.instant("MAIL.UNKNOWN"):(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0])}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getMailAccountInteractions=g,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=v,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){v(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,a,i,s,e,n,o,r,l,d,c,m,u,p,g){var v,h,f=this;f.currentUser=d.getCurrentUser(),f.license=n,f.setting=o,f.passwordPattern=f.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",f.mailAccount=c||t.params.mailAccount||{},f.cloudProviders=m||{rows:[],count:0},f.userProfile=u,f.userProfileSection=p&&1==p.count?p.rows[0]:null,f.crudPermissions=d.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.hasModulePermissions={},f.selectedTab=t.params.tab||0,f.providers=g.getEmailProviders(),f.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,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},g.editstate=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:g.crudPermissions})},g.verifySMTP=function(e){return e&&e.id?d.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){c.success({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString()})}):c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:o.instant("MAIL.NOTIFICATIONS.UNKNOWN_SMTP_SERVER")})},g.goToInteractions=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:"custom"===e.provider?7:6})},g.goToRealtime=function(){return m.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):d.userProfileSection.get({userProfileId:m.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});c.info({title:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},g.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:g.mailAccounts?g.mailAccounts.rows:[],crudPermissions:g.crudPermissions,realtime:!1}})},g.deleteconfirm=function(e,n){var t=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete mail account").targetEvent(n).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.success=v,g.getMailAccounts=h,g.createOrEditMailAccount=function(e,n){a.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:g.mailAccounts.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]}})},g.deleteMailAccount=f,g.exportSelectedMailAccounts=function(){var e=angular.copy(g.selectedMailAccounts);return g.selectedMailAccounts=[],e},g.deleteSelectedMailAccounts=function(e){var n=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_MESSAGE",{total:g.selectedMailAccounts.length})).ariaLabel("delete mail accounts").targetEvent(e).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedMailAccounts.forEach(function(e){f(e)}),g.selectedMailAccounts=[],c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETED_SUCCESS_TITLE")})})},g.deselectMailAccounts=function(){g.selectedMailAccounts=[]},g.selectAllMailAccounts=function(){g.selectedMailAccounts=g.mailAccounts.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?s(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("MAIL.MAILQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("mail_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userMailQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userMailQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"mail")})}),e.$on("$destroy",function(){r.removeAllListeners("mail_queue:save"),r.removeAllListeners("userMailQueue:remove"),r.removeAllListeners("userMailQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,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(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},u.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueueRt:save",function(e){var n=_.find(u.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueueRt:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:m.openchannelAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,p).$promise}function v(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getOpenchannelAccountInteractions=g,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=v,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){v(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("OPENCHANNEL.OPENCHANNELQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("openchannel_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userOpenchannelQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userOpenchannelQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"openchannel")})}),e.$on("$destroy",function(){r.removeAllListeners("openchannel_queue:save"),r.removeAllListeners("userOpenchannelQueue:remove"),r.removeAllListeners("userOpenchannelQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this,b=t(function(){},999);function A(){f.agents.rows.forEach(function(e){e.globalStatusDisplayValue=v.getAgentStatusDisplayValue(e)})}function E(){return f.query.offset=(f.query.page-1)*f.query.limit,d.realtime.getAgents(f.query).$promise.then(function(e){f.agents=e,A()}).catch(function(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function y(e,n){if(n)return f.agents.count>f.agents.rows.length?E():(a=n,i=_.remove(f.agents.rows,["id",a]),void(f.agents.count-=i.length));if(!f.query.sort.includes("globalStatus")||f.query.globalStatusFilter&&"busy"!==f.query.globalStatusFilter)E();else{var t="-"===f.query.sort[0]?"DESC":"ASC";if(!1===e)return E();if(!0===e)f.agents.rows=v.sortAgentsByStatus(f.agents.rows,t);else{if(f.agents.count>f.agents.rows.length)return E();f.agents.rows=v.sortAgentsByStatus(f.agents.rows,t)}}var a,i}function S(e){if(0!==f.query.globalQueueFilter.length){var n=e[_.capitalize(f.channel)+"QueueId"];f.query.globalQueueFilter.includes(n)&&E()}}function T(e){if(0!==f.query.globalQueueFilter.length){var n=e[_.capitalize(f.channel)+"QueueId"];f.query.globalQueueFilter.includes(n)&&y(!1,e.UserId)}}f.currentUser=p.getCurrentUser(),f.channel=n.params.channel,f.queueType=n.params.direction,f.agents=r,f.pauses=l||{count:0,rows:[]},f.license=g,f.userProfileSection=u&&1==u.count?u.rows[0]:null,f.crudPermissions=p.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.utcOffset=h,f.query={limit:10,page:1,sort:"fullname",globalStatusFilter:null,pauseTypeFilter:null,globalQueueFilter:[],channel:f.channel},f.getAgents=E,f.logout=function(e){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:f.channel,direction:f.queueType,crudPermissions:f.crudPermissions}})},f.pause=function(e,n){return d.user.pause({id:e.id,type:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.unpause=function(e){return d.user.unpause({id:e.id}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.manageScreenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.clearQueuesSelection=function(){f.query.globalQueueFilter=[]},f.selectAllQueues=function(){f.query.globalQueueFilter=f.queues.rows.map(function(e){return e.id})},f.getQueuesByChannel=function(){if(f.queues&&0<f.queues.count)return;var e={type:f.queueType||"inbound",fields:"id,name",sort:"name",nolimit:"true"},n=f.channel+"Queue";return d.getResourcesByRole(f.currentUser,n,e,null).then(function(e){f.queues=e}).catch(function(e){m.error({title:o.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.on("user:save",function(e){var n=_.find(f.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=v.getAgentStatus(n),n.globalStatusDisplayValue=v.getAgentStatusDisplayValue(n))}),c.on("user:update",function(e){var n=v.getUserUpdateEventOrigin(e);try{switch(n){case"login":!function(e){var n=!1;f.query.globalStatusFilter?e.loginInPause&&"pause"===f.query.globalStatusFilter?n=!0:e.loginInPause||"idle"!==f.query.globalStatusFilter||(n=!0):n=!0;if(n)E()}(e);break;case"logout":!function(e){if(0===f.agents.count)return;var n=_.find(f.agents.rows,["id",e.id]);{if(!n)return E();y(!1,n.id)}}(e);break;case"pause":t=e,(a=_.find(f.agents.rows,["id",t.id]))?(_.merge(a,t),a.globalStatus=v.getAgentStatus(a),v.checkEveryChannelPauseStatus(a),f.query.globalStatusFilter&&a.globalStatus!==f.query.globalStatusFilter?y(!1,a.id):a.globalStatusDisplayValue=v.getAgentStatusDisplayValue(a)):E()}}catch(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.toString()})}var t,a}),c.on("user:agentconnect",function(e){try{var n=_.find(f.agents.rows,["id",e.id]);y(!0),e.agentconnected?n?(_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"])),y()):y(!1):"busy"!==f.query.globalStatusFilter||n||E()}catch(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.toString()})}}),c.on("user:agentcomplete",function(e){if("ATTENDED"===e.transfer)return;var n=_.find(f.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias,"busy"===f.query.globalStatusFilter?y(!1,e.id):y())}),c.on("userVoiceQueue:save",S),c.on("userVoiceQueue:remove",T),c.on("userChatQueue:save",S),c.on("userChatQueue:remove",T),c.on("userSmsQueue:save",S),c.on("userSmsQueue:remove",T),c.on("userMailQueue:save",S),c.on("userMailQueue:remove",T),c.on("userFaxQueue:save",S),c.on("userFaxQueue:remove",T),c.on("userOpenchannelQueue:save",S),c.on("userOpenchannelQueue:remove",T),c.on("userWhatsappQueue:save",S),c.on("userWhatsappQueue:remove",T),A(),e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),c.removeAllListeners("userVoiceQueue:save"),c.removeAllListeners("userVoiceQueue:remove"),c.removeAllListeners("userChatQueue:save"),c.removeAllListeners("userChatQueue:remove"),c.removeAllListeners("userSmsQueue:save"),c.removeAllListeners("userSmsQueue:remove"),c.removeAllListeners("userMailQueue:save"),c.removeAllListeners("userMailQueue:remove"),c.removeAllListeners("userFaxQueue:save"),c.removeAllListeners("userFaxQueue:remove"),c.removeAllListeners("userOpenchannelQueue:save"),c.removeAllListeners("userOpenchannelQueue:remove"),c.removeAllListeners("userWhatsappQueue:save"),c.removeAllListeners("userWhatsappQueue:remove"),b&&t.cancel(b)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$q","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager","utcOffset"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.cloudProviders=e||{count:0,rows:[]}}function v(e){r.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(p.cloudProviders.rows,{id:e.id}),p.cloudProviders.count-=1,p.cloudProviders.rows.length||p.getAiTools(),d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.cloudProviders=o||{count:0,rows:[]},p.selectedAiTools=[],p.query={fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data5,data6",sort:"-updatedAt",limit:10,page:1},p.services={AmazonAWS:"AmazonAWS",MicrosoftAzure:"Microsoft Azure"},p.editdialog=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:p.cloudProviders.rows,license:p.license,setting:null,crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete cloud provider").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){v(e)})},p.success=g,p.getAiTools=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=r.cloudProvider.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="AiTools",p.promise=r.userProfile.getResources(p.query,g).$promise)},p.createOrEditCloudProvider=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:p.cloudProviders.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteCloudProvider=v,p.exportSelectedAiTools=function(){var e=angular.copy(p.selectedAiTools);return p.selectedAiTools=[],e},p.deleteSelectedAiTools=function(e){var n=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_MESSAGE",{total:p.selectedAiTools.length})).ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){p.selectedAiTools.forEach(function(e){v(e)}),p.selectedAiTools=[],d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE")})})},p.deselectAiTools=function(){p.selectedAiTools=[]},p.selectAllAiTools=function(){p.selectedAiTools=p.cloudProviders.rows},p.authenticateToMicrosoftIdentityPlatform=function(e){return r.cloudProvider.oauth2MicrosoftAuthorize({id:e.id}).$promise.then(function(e){p.loginWindow=n.open(e.url,"_blank","width=800,height=600")})},p.updateClientSecret=function(n,e){return a.show({controller:"UpdateClientSecretController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{cloudProvider:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,service,data3",id:n.id})}]}})},l.on("microsoftAuthorization:success",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.success({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_SUCCESS")}))}),l.on("microsoftAuthorization:error",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.error({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_FAIL")}))}),e.$on("$destroy",function(){l.removeAllListeners("microsoftAuthorization:success"),l.removeAllListeners("microsoftAuthorization:error")});var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAiTools())})}e.$inject=["$scope","$window","$mdDialog","$document","$timeout","$translate","cloudProviders","api","socket","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r){var l=this;function d(e){t.hide(e)}l.currentUser=o.getCurrentUser(),l.license=r,l.cloudProvider=angular.copy(n),l.cloudProviders=e,l.newCloudProvider=!1,l.errors=[],l.cloudProvider||(l.cloudProvider={},l.newCloudProvider=!0),l.addNewCloudProvider=function(){l.errors=[],s.cloudProvider.save(l.cloudProvider).$promise.then(function(e){l.cloudProviders.unshift(e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_CREATED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.saveCloudProvider=function(){l.errors=[],s.cloudProvider.update({id:l.cloudProvider.id},l.cloudProvider).$promise.then(function(e){var n=_.find(l.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SAVED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.deleteCloudProvider=function(e){l.errors=[];var n=t.confirm().title(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:l.cloudProvider.name})).ariaLabel("Delete Cloud Provider").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.cloudProvider.delete({id:l.cloudProvider.id}).$promise.then(function(){_.remove(l.cloudProviders,{id:l.cloudProvider.id}),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")}),d(l.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},l.closeDialog=d}e.$inject=["$mdDialog","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.cloudProvider=i,s.errors=[],s.saveSecret=function(){return s.errors=[],a.cloudProvider.update({id:i.id},{data3:s.newSecret}).$promise.then(function(){t.success({title:n.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE")}),o()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},s.closeDialog=o}e.$inject=["$mdDialog","$translate","toasty","api","cloudProvider"],angular.module("app.settings").controller("UpdateClientSecretController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l){var d=this;d.license=i||{},d.agents=0,d.users=0,d.telephones=0,d.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],d.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],d.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],d.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],d.others=[{name:"update",icon:"icon-cloud-download"}],d.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:d.channels,modules:d.modules,addons:d.addons,sessions:d.sessions,others:d.others}})},d.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},d.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},d.alert=s.info,d.downloadLogFile=function(){return o.license.downloadLogFile().$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","license-info.log"),document.body.appendChild(a),a.click(),s.success({title:l.instant("SETTINGS.LICENSE_LOG_FILE"),msg:l.instant("SETTINGS.LICENSE_LOG_FILE_DOWNLOADED")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.isAdmin=r.isAdmin(),o.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return d.agents=e&&e.count?e.count:0,o.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return d.users=e&&e.count?e.count:0,o.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){d.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$window","$mdDialog","$state","license","toasty","api","Auth","$translate"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;l.currentUser=o.getCurrentUser(),l.license=s,l.providers=r.getEmailProviders(),l.mailAccounts=e||{rows:[],count:0},l.cloudProviders=t||{rows:[],count:0},l.mailAccount={service:!0,Smtp:{}},0<l.mailAccounts.count&&(l.mailAccount=l.mailAccounts.rows[0]),l.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,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("SMS.SMSQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("sms_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userSmsQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userSmsQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"sms")})}),e.$on("$destroy",function(){r.removeAllListeners("sms_queue:save"),r.removeAllListeners("userSmsQueue:remove"),r.removeAllListeners("userSmsQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"smsAccount",action:"getDispositions",field:"name",params:{id:m.smsAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,p).$promise}function v(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getSmsAccountInteractions=g,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=v,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){v(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,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;function l(e,n,t){return o.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}r.customDashboard={},r.init=function(e,n){r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.customDashboard=e,r.customDashboard.draggable={enabled:!0,handle:".draggable",stop:l},r.customDashboard.resizable={enabled:!0,handle:".resizable",stop:l},r.customDashboard.widgets=[];var t=_.map(["chat","fax","mail","openchannel","sms","voice","whatsapp"],function(e){return"voice"===e?o.rpc.getVoiceQueues({fields:"id,name"}).$promise.then(function(e){r.voiceQueues=e}):(a=(t="chat"===(n=e)?n+"Website":n+"Account")+"s",o[t].get({fields:"id,name"}).$promise.then(function(e){r[a]=e||{count:0,rows:[]}}));var n,t,a});return i.all(t).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:MailAccounts}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)}));for(var i=0;i<g.mailAccount.length;i++)a&&g.mailAccount[i].id===a.id&&(g.mailAccount[i].canSelect=!1,t.push(g.mailAccount[i]));g.mailAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FAXACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:FaxAccounts}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.faxAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.faxAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.faxAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)}));for(var i=0;i<g.faxAccount.length;i++)a&&g.faxAccount[i].id===a.id&&(g.faxAccount[i].canSelect=!1,t.push(g.faxAccount[i]));g.faxAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SMSACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:SmsAccounts}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.smsAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.smsAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.smsAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)}));for(var i=0;i<g.smsAccount.length;i++)a&&g.smsAccount[i].id===a.id&&(g.smsAccount[i].canSelect=!1,t.push(g.smsAccount[i]));g.smsAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OPENCHANNELACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:OpenchannelAccounts}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.openchannelAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.openchannelAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.openchannelAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)}));for(var i=0;i<g.openchannelAccount.length;i++)a&&g.openchannelAccount[i].id===a.id&&(g.openchannelAccount[i].canSelect=!1,t.push(g.openchannelAccount[i]));g.openchannelAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_WHATSAPPACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:WhatsappAccounts}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.whatsappAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.whatsappAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.whatsappAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)}));for(var i=0;i<g.whatsappAccount.length;i++)a&&g.whatsappAccount[i].id===a.id&&(g.whatsappAccount[i].canSelect=!1,t.push(g.whatsappAccount[i]));g.whatsappAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CHATWEBSITE",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:ChatWebsites}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.chatWebsite,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.chatWebsite,{id:t.id});a.canSelect=!1,n.push(a)}g.chatWebsite=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)}));for(var i=0;i<g.chatWebsite.length;i++)a&&g.chatWebsite[i].id===a.id&&(g.chatWebsite[i].canSelect=!1,t.push(g.chatWebsite[i]));g.chatWebsite=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var n="disposition";l?n=l.route:"user"===m.currentUser.role&&(n="userProfile");var t="get";l?t="getDispositions":"user"===m.currentUser.role&&(t="getResources");var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"};(a=n,i=t,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",n,t].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.allCondition.value=void 0,g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.anyCondition.value=void 0,g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-voip-provider"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userVoiceQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueue:remove"),r.removeAllListeners("userVoiceQueue:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.voiceRecording=c||e.params.voiceRecording||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfile","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h,f){var b=this;function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function y(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){O(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=O,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){O(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function O(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("WHATSAPP.WHATSAPPQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("whatsapp_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userWhatsappQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userWhatsappQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"whatsapp")})}),e.$on("$destroy",function(){r.removeAllListeners("whatsapp_queue:save"),r.removeAllListeners("userWhatsappQueue:remove"),r.removeAllListeners("userWhatsappQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),h(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=h,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:m.whatsappAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,p).$promise}function v(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getWhatsappAccountInteractions=g,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=v,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){v(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.baseUrl=[{name:"US Production",url:"https://us1.whatsapp.api.sinch.com"},{name:"EU Production",url:"https://eu1.whatsapp.api.sinch.com"}],p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){"twilio"===p.whatsappAccount.type&&(p.whatsappAccount.baseUrl=null);r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Sinch",value:"'sinch'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,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(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var n=angular.element("#chat-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){n.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){n.error({title:"PhoneBar API Error",msg:d.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}u.currentUser=i.getCurrentUser(),u.user=void 0,u.users={count:0,rows:[]},u.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),u.unreadMessage={},u.replyMessage="",u.disabled=!1,u.init=function(e){u.license=e},u.toggleChat=function(e){if(e){if(!e.allowmessenger&&"agent"===e.role)return n.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",t.chatInternalMessage.get({sort:"createdAt",FromId:u.currentUser.id+","+e.id,ToId:u.currentUser.id+","+e.id,ChatGroupId:"null"}).$promise.then(function(e){if(e&&e.rows){u.user.messages=e;for(var n=0;n<u.user.messages.rows.length;n+=1)!1===u.user.messages.rows[n].read&&u.user.messages.rows[n].ToId===u.currentUser.id&&t.chatInternalMessage.update({id:u.user.messages.rows[n].id,read:!0})}}).finally(function(){p(0)})}else u.user=void 0},u.reply=function(){u.disabled=!0;Date.now();if(""===u.replyMessage)return void(u.disabled=!1);var e={FromId:u.currentUser.id,ToId:u.user.id,body:u.replyMessage,read:!1};u.replyMessage="",t.chatInternalMessage.save(e).$promise.then(function(e){u.user.messages.rows.push(e),u.user.lastMessageAt=e.createdAt,u.user.lastMessage=e,p(400)}).catch(function(e){}).finally(function(){u.disabled=!1})},u.onMessageSave=function(e){if(e.ToId===u.currentUser.id&&!e.ChatGroupId){u.user&&u.user.id===e.FromId?(u.user.messages.rows.push(e),p(0),t.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var n=_.find(u.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var n=_.find(u.user.messages.rows,{id:e.id});n&&_.merge(n,e)}var t=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var n=_.find(u.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))},u.webcall=function(e){c.$broadcast("webrtc::call",{target:g(e)})},u.call=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},u.transfer=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},s.on("chatInternalMessage:save",u.onMessageSave),s.on("chatInternalMessage:update",u.onMessageUpdate),s.on("user:update",u.onUserUpdate),o("quick-panel").onClose(function(){u.user=void 0}),t.chatInternalMessage.get({fields:"FromId",ToId:u.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){u.unreadMessage=_.countBy(e.rows,"FromId")}).catch(function(e){}),t.chatInternalMessage.getUsers().$promise.then(function(e){u.users=e}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){s.removeAllListeners("chatInternalMessage:save"),s.removeAllListeners("chatInternalMessage:update"),s.removeAllListeners("user:update")})}e.$inject=["$scope","toasty","api","$timeout","Auth","socket","$mdSidenav","$q","$interval","$translate","$rootScope","$http"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(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.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},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"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},hu:{title:"Hungarian",translation:"TOOLBAR.HUNGARIAN",code:"hu",flag:"hu"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}};var O=["ar","fa","he"],C=S.getLogger("toolbar");function w(){h.connect(),h.on("user:update",I.onUserUpdate),h.on("user:called",I.onUserCalled),h.on("chatInternalMessage:save",I.onInternalMessageSave),h.on("chatInternalMessage:update",I.onInternalMessageUpdate),h.on("userVoiceQueue:save",I.onUserVoiceQueue),h.on("voiceQueue:save",I.onVoiceQueue),h.on("userVoiceQueue:remove",I.onUserVoiceQueue),h.on("voiceQueue:remove",I.onVoiceQueue),h.on("voiceQueue:update",I.onVoiceQueue),h.on("user:forcelogout",M),h.on("userNotification:send",U),h.on("userNotification:recalc:"+I.user.id,F)}function R(){h.disconnect("logout")}function x(e){I.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function N(){I.promise=f.user.getQueues(I.query,x).$promise}function D(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 P(){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 L(e){return R(),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 k(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 M(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return R(),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 U(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 F(e){f.user.get({id:I.currentUser.id}).$promise.then(function(e){I.currentUser.permissions=e.permissions,I.autoanswerIconColor=P()?"green-700-fg":"gray-700-fg"})}I.toggleSidenav=function(e){i(e).toggle()},I.logout=L,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=k,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},I.onUserUpdate=function(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;R();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(){w(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),L(!0)})}else L(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)},I.onUserCalled=function(e){if(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})}},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"}):D(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){if(P()){I.autoanswerNotifications;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}})}else 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.onInternalMessageSave=function(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++},I.onInternalMessageUpdate=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--},I.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&N()},I.onVoiceQueue=function(){N()},I.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},function(){I.user=v.getCurrentUser(),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)?k(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 k(null,!0);F()}(),N(),w(),I.openPreviewDialog=D,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("userAutoanswerNotification:send"),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="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","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-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-disabled="vm.activeSessions.length==0" ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpened)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpened = true" md-on-close="isOpened = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar()" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results">\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-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' +  vm.label | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="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 track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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/permissionadd/permissionadd.html",'<md-dialog class="projects-dialog" aria-label="projects">\n  <form name="projectsForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CALLYSQUARE.PERMISSIONADD_PROJECTS">Add User Permissions</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions"></ms-dual-multiselect>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="newForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.COPY_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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              <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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header 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\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="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-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex 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              <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!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column">\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      <div ng-if="vm.dynamics365Account.modernAuthentication == false">\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        <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              <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.USERNAME">Username</label>\n                  \x3c!-- <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit"> --\x3e\n                  <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="vm.dynamics365Account.modernAuthentication == false" 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\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                          <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              <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.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center">\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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              <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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/realtime/views/agents/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools 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.getAgents">\n      <tr md-row>\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.agents.count > 0">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{agent.userpic && \'api/users/\'+ agent.id +\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{agent.fullname}}</span>\n              <span>{{agent.internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (agent.phoneBarEnableScreenRecordingByAgent || agent.phoneBarEnableAutomaticScreenRecording)">\n            <div class="column">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" ng-class="agent.screenrecording ? \'green-fg\' : \'grey-fg\'" aria-hidden="true">\n                  <md-tooltip>\n                    {{ agent.screenrecording ? \'VOICE.TOOLTIP_SCREENRECORDING_ON\' : \'VOICE.TOOLTIP_SCREENRECORDING_OFF\'\n                    | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt text-center">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[agent.globalStatus]\">\n            <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.getAgents\" md-page-select></md-table-pagination>"),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CLOUD_PROVIDERS">Cloud Providers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header 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="36" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n                <md-button type="submit" ng-if="vm.isAdmin" ng-click="vm.downloadLogFile()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.DOWNLOAD_LICENSE_LOG_FILE">Download license log file</span></md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" id="licenseUuid" class="hover-token text-italic text-bold">{{vm.license.uuid}}</span>\n            \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n            <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>\n            <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n          </md-button>--\x3e\n          </span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span id="licenseMachineUuid" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" class="hover-token text-italic text-bold">{{vm.license.machineUuid}}</span>\n              \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>                \n                <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n              </md-button>--\x3e\n            </span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="36"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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="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.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        </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_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span>{{channel.calleridname}}, {{channel.calleridnum}}</span>\n        </td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.busy }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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              <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">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" placeholder="Search by fullname.." translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  \x3c!-- <select ng-model="vm_ct.filterOnline" class="height-50 no-padding no-margin">\n            <option ng-value="undefined">All</option>\n            <option ng-value="true"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online</option>\n            <option ng-value="false"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline</option>\n        </select> --\x3e\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id != vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter:vm_ct.search" ng-click="vm_ct.toggleChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessage[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessage[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper"></md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="!user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check-all md-accent"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n      </div>\n    </md-list-item>\n  </md-list>\n</div>\n\n<div class="chat" ng-show="vm_ct.user" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.toggleChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings id="chat-dialog">\n    <div layout="row" ng-repeat="message in vm_ct.user.messages.rows" class="md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n      <img ng-if="message.FromId === vm_ct.currentUser.id" class="avatar" ng-src="{{vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="!message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\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" 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">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ lang.translation | translate | startcase }}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\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 82c2d24..ef7608d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39f5=['contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','urlForward[headers],\x20browser[wsindowHeight]','sequelize','exports','VIRTUAL','getDataValue','action','contactManager','jscripty','urlForward','browser','bot','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','STRING','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]'];(function(_0x3d4da6,_0xefd169){var _0xf37d87=function(_0x549157){while(--_0x549157){_0x3d4da6['push'](_0x3d4da6['shift']());}};_0xf37d87(++_0xefd169);}(_0x39f5,0xe3));var _0x539f=function(_0x198db2,_0x452f2c){_0x198db2=_0x198db2-0x0;var _0x2a854b=_0x39f5[_0x198db2];return _0x2a854b;};'use strict';var Sequelize=require(_0x539f('0x0'));module[_0x539f('0x1')]={'name':{'type':Sequelize[_0x539f('0x2')],'get':function(_0x27d89d){return this[_0x539f('0x3')](_0x539f('0x4'));}},'action':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'isIn':{'args':[[_0x539f('0x5'),'integration','motionbar',_0x539f('0x6'),_0x539f('0x7'),_0x539f('0x8'),_0x539f('0x9'),'script']],'msg':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'}},'comment':_0x539f('0xa')},'data1':{'type':Sequelize[_0x539f('0xb')](0x1000),'comment':_0x539f('0xc')},'data2':{'type':Sequelize[_0x539f('0xb')](0x1000),'comment':_0x539f('0xd')},'data3':{'type':Sequelize['STRING'](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[_0x539f('0xb')](0x1000),'comments':'browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]'},'data5':{'type':Sequelize['STRING'](0x1000),'comments':_0x539f('0xe')},'data6':{'type':Sequelize['STRING'],'comments':_0x539f('0xf')},'data7':{'type':Sequelize['TEXT'],'comments':'urlForward[body]'}};
\ No newline at end of file
+var _0x00e1=['contactManager','integration','motionbar','jscripty','urlForward','bot','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','TEXT','urlForward[body]','exports','VIRTUAL','getDataValue','action','STRING'];(function(_0xb9f614,_0x51ea0a){var _0x4458b8=function(_0x229389){while(--_0x229389){_0xb9f614['push'](_0xb9f614['shift']());}};_0x4458b8(++_0x51ea0a);}(_0x00e1,0x151));var _0x100e=function(_0x326a03,_0x6cfe4f){_0x326a03=_0x326a03-0x0;var _0xb22882=_0x00e1[_0x326a03];return _0xb22882;};'use strict';var Sequelize=require('sequelize');module[_0x100e('0x0')]={'name':{'type':Sequelize[_0x100e('0x1')],'get':function(_0x3e36fd){return this[_0x100e('0x2')](_0x100e('0x3'));}},'action':{'type':Sequelize[_0x100e('0x4')],'allowNull':![],'validate':{'isIn':{'args':[[_0x100e('0x5'),_0x100e('0x6'),_0x100e('0x7'),_0x100e('0x8'),_0x100e('0x9'),'browser',_0x100e('0xa'),'script']],'msg':_0x100e('0xb')}},'comment':_0x100e('0xb')},'data1':{'type':Sequelize['STRING'](0x1000),'comment':_0x100e('0xc')},'data2':{'type':Sequelize[_0x100e('0x4')](0x1000),'comment':_0x100e('0xd')},'data3':{'type':Sequelize[_0x100e('0x4')](0x1000),'comment':_0x100e('0xe')},'data4':{'type':Sequelize[_0x100e('0x4')](0x1000),'comments':_0x100e('0xf')},'data5':{'type':Sequelize[_0x100e('0x4')](0x1000),'comments':_0x100e('0x10')},'data6':{'type':Sequelize[_0x100e('0x4')],'comments':'urlForward[headers],\x20browser[wsindowHeight]'},'data7':{'type':Sequelize[_0x100e('0x11')],'comments':_0x100e('0x12')}};
\ No newline at end of file
index f6070e5..d246c35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e7c=['fs-extra','lodash','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','end','stack','name','send','body','Action','find','catch','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs'];(function(_0x2c1ac1,_0x3dfb07){var _0x240e2d=function(_0x5e6afd){while(--_0x5e6afd){_0x2c1ac1['push'](_0x2c1ac1['shift']());}};_0x240e2d(++_0x3dfb07);}(_0x2e7c,0x146));var _0xc2e7=function(_0x3305de,_0x16582f){_0x3305de=_0x3305de-0x0;var _0x3b5a84=_0x2e7c[_0x3305de];return _0x3b5a84;};'use strict';var emlformat=require(_0xc2e7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc2e7('0x1'));var jsonpatch=require(_0xc2e7('0x2'));var rp=require(_0xc2e7('0x3'));var moment=require(_0xc2e7('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xc2e7('0x5'));var path=require(_0xc2e7('0x6'));var sox=require(_0xc2e7('0x7'));var csv=require(_0xc2e7('0x8'));var ejs=require(_0xc2e7('0x9'));var fs=require('fs');var fs_extra=require(_0xc2e7('0xa'));var _=require(_0xc2e7('0xb'));var squel=require(_0xc2e7('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xc2e7('0xd'));var toCsv=require(_0xc2e7('0x8'));var querystring=require(_0xc2e7('0xe'));var Papa=require('papaparse');var Redis=require(_0xc2e7('0xf'));var authService=require(_0xc2e7('0x10'));var qs=require(_0xc2e7('0x11'));var as=require(_0xc2e7('0x12'));var hardwareService=require(_0xc2e7('0x13'));var logger=require(_0xc2e7('0x14'))('api');var utils=require(_0xc2e7('0x15'));var config=require(_0xc2e7('0x16'));var licenseUtil=require(_0xc2e7('0x17'));var db=require(_0xc2e7('0x18'))['db'];function respondWithStatusCode(_0x1eef65,_0x46f434){_0x46f434=_0x46f434||0xcc;return function(_0x503351){if(_0x503351){return _0x1eef65[_0xc2e7('0x19')](_0x46f434);}return _0x1eef65[_0xc2e7('0x1a')](_0x46f434)['end']();};}function respondWithResult(_0x4be0ee,_0x1f35ae){_0x1f35ae=_0x1f35ae||0xc8;return function(_0x187071){if(_0x187071){return _0x4be0ee[_0xc2e7('0x1a')](_0x1f35ae)[_0xc2e7('0x1b')](_0x187071);}};}function respondWithFilteredResult(_0x17aa88,_0x4d9953){return function(_0x27caea){if(_0x27caea){var _0x4997fc=typeof _0x4d9953[_0xc2e7('0x1c')]===_0xc2e7('0x1d')&&typeof _0x4d9953[_0xc2e7('0x1e')]===_0xc2e7('0x1d');var _0x229b15=_0x27caea[_0xc2e7('0x1f')];var _0x1c5c6e=_0x4997fc?0x0:_0x4d9953[_0xc2e7('0x1c')];var _0x1c9615=_0x4997fc?_0x27caea[_0xc2e7('0x1f')]:_0x4d9953['offset']+_0x4d9953['limit'];var _0x46efc9;if(_0x1c9615>=_0x229b15){_0x1c9615=_0x229b15;_0x46efc9=0xc8;}else{_0x46efc9=0xce;}_0x17aa88['status'](_0x46efc9);return _0x17aa88['set'](_0xc2e7('0x20'),_0x1c5c6e+'-'+_0x1c9615+'/'+_0x229b15)['json'](_0x27caea);}return null;};}function patchUpdates(_0x5b8849){return function(_0x11e15a){try{jsonpatch[_0xc2e7('0x21')](_0x11e15a,_0x5b8849,!![]);}catch(_0x45956a){return BPromise[_0xc2e7('0x22')](_0x45956a);}return _0x11e15a[_0xc2e7('0x23')]();};}function saveUpdates(_0x412a94,_0x23591c){return function(_0x41a987){if(_0x41a987){return _0x41a987[_0xc2e7('0x24')](_0x412a94)[_0xc2e7('0x25')](function(_0xb20296){return _0xb20296;});}return null;};}function removeEntity(_0x573144,_0x16098e){return function(_0x2ce373){if(_0x2ce373){return _0x2ce373[_0xc2e7('0x26')]()[_0xc2e7('0x25')](function(){_0x573144[_0xc2e7('0x1a')](0xcc)[_0xc2e7('0x27')]();});}};}function handleEntityNotFound(_0x252620,_0x492836){return function(_0xe8c758){if(!_0xe8c758){_0x252620[_0xc2e7('0x19')](0x194);}return _0xe8c758;};}function handleError(_0x257147,_0x4cbc42){_0x4cbc42=_0x4cbc42||0x1f4;return function(_0xa19873){logger['error'](_0xa19873[_0xc2e7('0x28')]);if(_0xa19873[_0xc2e7('0x29')]){delete _0xa19873[_0xc2e7('0x29')];}_0x257147[_0xc2e7('0x1a')](_0x4cbc42)[_0xc2e7('0x2a')](_0xa19873);};}exports[_0xc2e7('0x24')]=function(_0x2f41af,_0x22b3f0){if(_0x2f41af[_0xc2e7('0x2b')]['id']){delete _0x2f41af[_0xc2e7('0x2b')]['id'];}return db[_0xc2e7('0x2c')][_0xc2e7('0x2d')]({'where':{'id':_0x2f41af['params']['id']}})[_0xc2e7('0x25')](handleEntityNotFound(_0x22b3f0,null))[_0xc2e7('0x25')](saveUpdates(_0x2f41af[_0xc2e7('0x2b')],null))[_0xc2e7('0x25')](respondWithResult(_0x22b3f0,null))[_0xc2e7('0x2e')](handleError(_0x22b3f0,null));};exports[_0xc2e7('0x26')]=function(_0x508551,_0x1e3efb){return db[_0xc2e7('0x2c')]['find']({'where':{'id':_0x508551[_0xc2e7('0x2f')]['id']}})[_0xc2e7('0x25')](handleEntityNotFound(_0x1e3efb,null))[_0xc2e7('0x25')](removeEntity(_0x1e3efb,null))['catch'](handleError(_0x1e3efb,null));};
\ No newline at end of file
+var _0xb25a=['eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','reject','update','destroy','then','error','stack','name','send','body','Action','find','params','catch'];(function(_0x187279,_0x26d152){var _0x3da59d=function(_0x41c808){while(--_0x41c808){_0x187279['push'](_0x187279['shift']());}};_0x3da59d(++_0x26d152);}(_0xb25a,0x96));var _0xab25=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xb25a[_0x57b54c];return _0x59cc19;};'use strict';var emlformat=require(_0xab25('0x0'));var rimraf=require(_0xab25('0x1'));var zipdir=require(_0xab25('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xab25('0x3'));var moment=require(_0xab25('0x4'));var BPromise=require(_0xab25('0x5'));var Mustache=require(_0xab25('0x6'));var util=require(_0xab25('0x7'));var path=require(_0xab25('0x8'));var sox=require(_0xab25('0x9'));var csv=require('to-csv');var ejs=require(_0xab25('0xa'));var fs=require('fs');var fs_extra=require(_0xab25('0xb'));var _=require(_0xab25('0xc'));var squel=require(_0xab25('0xd'));var crypto=require(_0xab25('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xab25('0xf'));var toCsv=require(_0xab25('0x10'));var querystring=require(_0xab25('0x11'));var Papa=require(_0xab25('0x12'));var Redis=require(_0xab25('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xab25('0x14'));var as=require(_0xab25('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xab25('0x16'))(_0xab25('0x17'));var utils=require(_0xab25('0x18'));var config=require(_0xab25('0x19'));var licenseUtil=require(_0xab25('0x1a'));var db=require(_0xab25('0x1b'))['db'];function respondWithStatusCode(_0x370e42,_0xb5310c){_0xb5310c=_0xb5310c||0xcc;return function(_0x369f91){if(_0x369f91){return _0x370e42[_0xab25('0x1c')](_0xb5310c);}return _0x370e42[_0xab25('0x1d')](_0xb5310c)[_0xab25('0x1e')]();};}function respondWithResult(_0x356741,_0x91921f){_0x91921f=_0x91921f||0xc8;return function(_0x19b99d){if(_0x19b99d){return _0x356741[_0xab25('0x1d')](_0x91921f)[_0xab25('0x1f')](_0x19b99d);}};}function respondWithFilteredResult(_0x19c094,_0x245761){return function(_0x28b5dd){if(_0x28b5dd){var _0x5ed65e=typeof _0x245761[_0xab25('0x20')]==='undefined'&&typeof _0x245761[_0xab25('0x21')]==='undefined';var _0x1d1677=_0x28b5dd['count'];var _0x5b8d31=_0x5ed65e?0x0:_0x245761['offset'];var _0x407079=_0x5ed65e?_0x28b5dd[_0xab25('0x22')]:_0x245761[_0xab25('0x20')]+_0x245761['limit'];var _0x291a8d;if(_0x407079>=_0x1d1677){_0x407079=_0x1d1677;_0x291a8d=0xc8;}else{_0x291a8d=0xce;}_0x19c094['status'](_0x291a8d);return _0x19c094[_0xab25('0x23')](_0xab25('0x24'),_0x5b8d31+'-'+_0x407079+'/'+_0x1d1677)[_0xab25('0x1f')](_0x28b5dd);}return null;};}function patchUpdates(_0x3c5ee2){return function(_0x4f9797){try{jsonpatch['apply'](_0x4f9797,_0x3c5ee2,!![]);}catch(_0x1512b5){return BPromise[_0xab25('0x25')](_0x1512b5);}return _0x4f9797['save']();};}function saveUpdates(_0x40ad90,_0x3451f7){return function(_0xeeedec){if(_0xeeedec){return _0xeeedec[_0xab25('0x26')](_0x40ad90)['then'](function(_0x247445){return _0x247445;});}return null;};}function removeEntity(_0x4f6bb2,_0x56b9ac){return function(_0x3694b0){if(_0x3694b0){return _0x3694b0[_0xab25('0x27')]()[_0xab25('0x28')](function(){_0x4f6bb2[_0xab25('0x1d')](0xcc)[_0xab25('0x1e')]();});}};}function handleEntityNotFound(_0x5c9d8e,_0x4c4f0e){return function(_0x48dbd8){if(!_0x48dbd8){_0x5c9d8e['sendStatus'](0x194);}return _0x48dbd8;};}function handleError(_0x570143,_0x12853b){_0x12853b=_0x12853b||0x1f4;return function(_0x1c159f){logger[_0xab25('0x29')](_0x1c159f[_0xab25('0x2a')]);if(_0x1c159f[_0xab25('0x2b')]){delete _0x1c159f[_0xab25('0x2b')];}_0x570143[_0xab25('0x1d')](_0x12853b)[_0xab25('0x2c')](_0x1c159f);};}exports[_0xab25('0x26')]=function(_0x41ba02,_0x9c40d3){if(_0x41ba02[_0xab25('0x2d')]['id']){delete _0x41ba02['body']['id'];}return db[_0xab25('0x2e')]['find']({'where':{'id':_0x41ba02['params']['id']}})[_0xab25('0x28')](handleEntityNotFound(_0x9c40d3,null))['then'](saveUpdates(_0x41ba02[_0xab25('0x2d')],null))[_0xab25('0x28')](respondWithResult(_0x9c40d3,null))['catch'](handleError(_0x9c40d3,null));};exports[_0xab25('0x27')]=function(_0x4ab127,_0x5398cd){return db[_0xab25('0x2e')][_0xab25('0x2f')]({'where':{'id':_0x4ab127[_0xab25('0x30')]['id']}})[_0xab25('0x28')](handleEntityNotFound(_0x5398cd,null))[_0xab25('0x28')](removeEntity(_0x5398cd,null))[_0xab25('0x31')](handleError(_0x5398cd,null));};
\ No newline at end of file
index b09539a..126e174 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b85=['exports','define','Action','tools_actions','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','./action.attributes'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x5b85,0x18a));var _0x55b8=function(_0x429ec2,_0x5eae84){_0x429ec2=_0x429ec2-0x0;var _0x52f888=_0x5b85[_0x429ec2];return _0x52f888;};'use strict';var _=require(_0x55b8('0x0'));var util=require(_0x55b8('0x1'));var logger=require(_0x55b8('0x2'))(_0x55b8('0x3'));var moment=require(_0x55b8('0x4'));var BPromise=require('bluebird');var rp=require(_0x55b8('0x5'));var fs=require('fs');var path=require(_0x55b8('0x6'));var rimraf=require(_0x55b8('0x7'));var config=require('../../config/environment');var attributes=require(_0x55b8('0x8'));module[_0x55b8('0x9')]=function(_0x18060f,_0x18adc0){return _0x18060f[_0x55b8('0xa')](_0x55b8('0xb'),attributes,{'tableName':_0x55b8('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9824=['util','../../config/logger','moment','bluebird','path','../../config/environment','./action.attributes','exports','tools_actions','lodash'];(function(_0x13192c,_0x52cf73){var _0x4b32fe=function(_0x3203d9){while(--_0x3203d9){_0x13192c['push'](_0x13192c['shift']());}};_0x4b32fe(++_0x52cf73);}(_0x9824,0xef));var _0x4982=function(_0x11be34,_0x25a4a2){_0x11be34=_0x11be34-0x0;var _0x213e8f=_0x9824[_0x11be34];return _0x213e8f;};'use strict';var _=require(_0x4982('0x0'));var util=require(_0x4982('0x1'));var logger=require(_0x4982('0x2'))('api');var moment=require(_0x4982('0x3'));var BPromise=require(_0x4982('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4982('0x5'));var rimraf=require('rimraf');var config=require(_0x4982('0x6'));var attributes=require(_0x4982('0x7'));module[_0x4982('0x8')]=function(_0x41616f,_0x17cfea){return _0x41616f['define']('Action',attributes,{'tableName':_0x4982('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 34092b4..a7d60e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','client','then','info','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash'];(function(_0x301f2e,_0x49aedb){var _0x1dd208=function(_0x4acb85){while(--_0x4acb85){_0x301f2e['push'](_0x301f2e['shift']());}};_0x1dd208(++_0x49aedb);}(_0xabce,0x103));var _0xeabc=function(_0x3899d1,_0x4aa04c){_0x3899d1=_0x3899d1-0x0;var _0xeb4a7d=_0xabce[_0x3899d1];return _0xeb4a7d;};'use strict';var _=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var moment=require(_0xeabc('0x2'));var BPromise=require(_0xeabc('0x3'));var rs=require(_0xeabc('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xeabc('0x5'));var logger=require(_0xeabc('0x6'))(_0xeabc('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xeabc('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x229ba4,_0x52ede8,_0x3bdc29){return new BPromise(function(_0x9417af,_0x8434c5){return client['request'](_0x229ba4,_0x3bdc29)[_0xeabc('0x9')](function(_0x341f16){logger[_0xeabc('0xa')](_0xeabc('0xb'),_0x52ede8,_0xeabc('0xc'));logger[_0xeabc('0xd')](_0xeabc('0xe'),_0x52ede8,_0xeabc('0xc'),JSON[_0xeabc('0xf')](_0x341f16));if(_0x341f16[_0xeabc('0x10')]){if(_0x341f16[_0xeabc('0x10')][_0xeabc('0x11')]===0x1f4){logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);return _0x8434c5(_0x341f16['error'][_0xeabc('0x12')]);}logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16['error']['message']);return _0x9417af(_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);}else{logger[_0xeabc('0xa')]('Action,\x20%s,\x20%s',_0x52ede8,_0xeabc('0xc'));_0x9417af(_0x341f16[_0xeabc('0x13')]['message']);}})['catch'](function(_0x10fa8e){logger['error'](_0xeabc('0xb'),_0x52ede8,_0x10fa8e);_0x8434c5(_0x10fa8e);});});}
\ No newline at end of file
+var _0x5fc3=['../../config/environment','jayson/promise','request','then','info','request\x20sent','debug','stringify','error','code','message','Action,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x4d5ee1,_0x29359c){var _0x31cb7d=function(_0x3e0ccd){while(--_0x3e0ccd){_0x4d5ee1['push'](_0x4d5ee1['shift']());}};_0x31cb7d(++_0x29359c);}(_0x5fc3,0xa8));var _0x35fc=function(_0x3b594b,_0x5835c3){_0x3b594b=_0x3b594b-0x0;var _0x1ea5f8=_0x5fc3[_0x3b594b];return _0x1ea5f8;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var moment=require('moment');var BPromise=require(_0x35fc('0x2'));var rs=require(_0x35fc('0x3'));var fs=require('fs');var Redis=require(_0x35fc('0x4'));var db=require(_0x35fc('0x5'))['db'];var utils=require(_0x35fc('0x6'));var logger=require('../../config/logger')(_0x35fc('0x7'));var config=require(_0x35fc('0x8'));var jayson=require(_0x35fc('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x19a0d1,_0x508b32,_0x16e153){return new BPromise(function(_0x27524f,_0xc72d93){return client[_0x35fc('0xa')](_0x19a0d1,_0x16e153)[_0x35fc('0xb')](function(_0xf9d3a6){logger[_0x35fc('0xc')]('Action,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'));logger[_0x35fc('0xe')]('Action,\x20%s,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'),JSON[_0x35fc('0xf')](_0xf9d3a6));if(_0xf9d3a6['error']){if(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x11')]===0x1f4){logger['error']('Action,\x20%s,\x20%s',_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0xc72d93(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x12')]);}logger[_0x35fc('0x10')](_0x35fc('0x13'),_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0x27524f(_0xf9d3a6['error']['message']);}else{logger['info'](_0x35fc('0x13'),_0x508b32,_0x35fc('0xd'));_0x27524f(_0xf9d3a6[_0x35fc('0x14')][_0x35fc('0x12')]);}})[_0x35fc('0x15')](function(_0x1121fa){logger['error'](_0x35fc('0x13'),_0x508b32,_0x1121fa);_0xc72d93(_0x1121fa);});});}
\ No newline at end of file
index 1732cc2..9070dbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc13=['../../components/interaction/service','../../config/environment','./action.controller','/:id','isAuthenticated','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x3f4ca5,_0x5918d3){var _0xbd77a6=function(_0x35cee3){while(--_0x35cee3){_0x3f4ca5['push'](_0x3f4ca5['shift']());}};_0xbd77a6(++_0x5918d3);}(_0xdc13,0x69));var _0x3dc1=function(_0x3dcb2e,_0x81b33f){_0x3dcb2e=_0x3dcb2e-0x0;var _0x158dcf=_0xdc13[_0x3dcb2e];return _0x158dcf;};'use strict';var multer=require(_0x3dc1('0x0'));var util=require(_0x3dc1('0x1'));var path=require(_0x3dc1('0x2'));var timeout=require(_0x3dc1('0x3'));var express=require(_0x3dc1('0x4'));var router=express[_0x3dc1('0x5')]();var fs_extra=require(_0x3dc1('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x3dc1('0x7'));var config=require(_0x3dc1('0x8'));var controller=require(_0x3dc1('0x9'));router['put'](_0x3dc1('0xa'),auth[_0x3dc1('0xb')](),controller[_0x3dc1('0xc')]);router[_0x3dc1('0xd')](_0x3dc1('0xa'),auth[_0x3dc1('0xb')](),controller[_0x3dc1('0xe')]);module[_0x3dc1('0xf')]=router;
\ No newline at end of file
+var _0xd993=['../../config/environment','./action.controller','put','isAuthenticated','update','/:id','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x467cb0,_0x303070){var _0x2153f7=function(_0x51775a){while(--_0x51775a){_0x467cb0['push'](_0x467cb0['shift']());}};_0x2153f7(++_0x303070);}(_0xd993,0xa1));var _0x3d99=function(_0x2e36fc,_0x2933eb){_0x2e36fc=_0x2e36fc-0x0;var _0x37d933=_0xd993[_0x2e36fc];return _0x37d933;};'use strict';var multer=require(_0x3d99('0x0'));var util=require(_0x3d99('0x1'));var path=require(_0x3d99('0x2'));var timeout=require(_0x3d99('0x3'));var express=require(_0x3d99('0x4'));var router=express[_0x3d99('0x5')]();var fs_extra=require(_0x3d99('0x6'));var auth=require(_0x3d99('0x7'));var interaction=require(_0x3d99('0x8'));var config=require(_0x3d99('0x9'));var controller=require(_0x3d99('0xa'));router[_0x3d99('0xb')]('/:id',auth[_0x3d99('0xc')](),controller[_0x3d99('0xd')]);router['delete'](_0x3d99('0xe'),auth[_0x3d99('0xc')](),controller[_0x3d99('0xf')]);module[_0x3d99('0x10')]=router;
\ No newline at end of file
index be36a57..e8e6ec1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbf5=['exports','STRING','TEXT'];(function(_0x439b57,_0x359664){var _0x188f7d=function(_0x1be542){while(--_0x1be542){_0x439b57['push'](_0x439b57['shift']());}};_0x188f7d(++_0x359664);}(_0xdbf5,0x18c));var _0x5dbf=function(_0x1f2bf0,_0x3b664a){_0x1f2bf0=_0x1f2bf0-0x0;var _0x5d9339=_0xdbf5[_0x1f2bf0];return _0x5d9339;};'use strict';var Sequelize=require('sequelize');module[_0x5dbf('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x5dbf('0x1')]},'table':{'type':Sequelize[_0x5dbf('0x1')]},'conditions':{'type':Sequelize[_0x5dbf('0x2')]},'joins':{'type':Sequelize[_0x5dbf('0x2')]}};
\ No newline at end of file
+var _0xe14b=['exports','STRING','TEXT','sequelize'];(function(_0x15b05a,_0x3648d1){var _0x17cc28=function(_0x4f7125){while(--_0x4f7125){_0x15b05a['push'](_0x15b05a['shift']());}};_0x17cc28(++_0x3648d1);}(_0xe14b,0x93));var _0xbe14=function(_0x5e8466,_0x15af89){_0x5e8466=_0x5e8466-0x0;var _0xac341b=_0xe14b[_0x5e8466];return _0xac341b;};'use strict';var Sequelize=require(_0xbe14('0x0'));module[_0xbe14('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0xbe14('0x2')]},'table':{'type':Sequelize[_0xbe14('0x2')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0xbe14('0x3')]}};
\ No newline at end of file
index 20cc20e..dff84e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdace=['child_process','../../components/export/','join','../../files/reports','savename','select','countTable','COUNT(*)','run','runReport','SEC_TO_TIME(%s)','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','dbH','sendStatus','end','status','json','offset','undefined','limit','count','apply','reject','save','then','get','CustomReports','UserProfileResource','error','stack','name','index','AnalyticCustomReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','params','include','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','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\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','condition','value','Sequelize','AnalyticMetric','keyBy','from','MetricId','metric','field','replace','function','groupBy','orderBy','DESC','alias','joins','parse','parentKey','foreignTable','%s.%s\x20=\x20%s.%s','table','conditions','group','clone','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','left_join','SUM(%s)','getFields','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','format','foreignKey','fullPath','%s-%s.%s','randomstring','output','custom','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','startDate','Run\x20Query:'];(function(_0xb59853,_0x33378b){var _0x1b4954=function(_0x5f23b1){while(--_0x5f23b1){_0xb59853['push'](_0xb59853['shift']());}};_0x1b4954(++_0x33378b);}(_0xdace,0xad));var _0xedac=function(_0x51674a,_0x77ccff){_0x51674a=_0x51674a-0x0;var _0x13fca6=_0xdace[_0x51674a];return _0x13fca6;};'use strict';var emlformat=require(_0xedac('0x0'));var rimraf=require(_0xedac('0x1'));var zipdir=require(_0xedac('0x2'));var jsonpatch=require(_0xedac('0x3'));var rp=require(_0xedac('0x4'));var moment=require(_0xedac('0x5'));var BPromise=require(_0xedac('0x6'));var Mustache=require(_0xedac('0x7'));var util=require(_0xedac('0x8'));var path=require(_0xedac('0x9'));var sox=require(_0xedac('0xa'));var csv=require(_0xedac('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xedac('0xc'));var _=require(_0xedac('0xd'));var squel=require(_0xedac('0xe'));var crypto=require('crypto');var jsforce=require(_0xedac('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xedac('0xb'));var querystring=require('querystring');var Papa=require(_0xedac('0x10'));var Redis=require(_0xedac('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xedac('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xedac('0x13'));var logger=require(_0xedac('0x14'))(_0xedac('0x15'));var utils=require('../../config/utils');var config=require(_0xedac('0x16'));var licenseUtil=require(_0xedac('0x17'));var db=require(_0xedac('0x18'))['db'];var dbH=require(_0xedac('0x18'))[_0xedac('0x19')];function respondWithStatusCode(_0x2b2884,_0x251c79){_0x251c79=_0x251c79||0xcc;return function(_0x40413d){if(_0x40413d){return _0x2b2884[_0xedac('0x1a')](_0x251c79);}return _0x2b2884['status'](_0x251c79)[_0xedac('0x1b')]();};}function respondWithResult(_0x210b75,_0x14fc72){_0x14fc72=_0x14fc72||0xc8;return function(_0x58c3ed){if(_0x58c3ed){return _0x210b75[_0xedac('0x1c')](_0x14fc72)[_0xedac('0x1d')](_0x58c3ed);}};}function respondWithFilteredResult(_0x515e16,_0x4234fa){return function(_0x3f8dfe){if(_0x3f8dfe){var _0x2ad86a=typeof _0x4234fa[_0xedac('0x1e')]===_0xedac('0x1f')&&typeof _0x4234fa[_0xedac('0x20')]==='undefined';var _0x2060d6=_0x3f8dfe[_0xedac('0x21')];var _0x3908ba=_0x2ad86a?0x0:_0x4234fa[_0xedac('0x1e')];var _0x18342f=_0x2ad86a?_0x3f8dfe[_0xedac('0x21')]:_0x4234fa['offset']+_0x4234fa[_0xedac('0x20')];var _0x301292;if(_0x18342f>=_0x2060d6){_0x18342f=_0x2060d6;_0x301292=0xc8;}else{_0x301292=0xce;}_0x515e16[_0xedac('0x1c')](_0x301292);return _0x515e16['set']('Content-Range',_0x3908ba+'-'+_0x18342f+'/'+_0x2060d6)[_0xedac('0x1d')](_0x3f8dfe);}return null;};}function patchUpdates(_0x533db6){return function(_0x4dc953){try{jsonpatch[_0xedac('0x22')](_0x4dc953,_0x533db6,!![]);}catch(_0x166dbf){return BPromise[_0xedac('0x23')](_0x166dbf);}return _0x4dc953[_0xedac('0x24')]();};}function saveUpdates(_0xf74567,_0x6168e7){return function(_0x32fbea){if(_0x32fbea){return _0x32fbea['update'](_0xf74567)[_0xedac('0x25')](function(_0xe73c){return _0xe73c;});}return null;};}function removeEntity(_0xb57b6d,_0x50c2b1){return function(_0x264137){if(_0x264137){return _0x264137['destroy']()[_0xedac('0x25')](function(){var _0x45f90b=_0x264137[_0xedac('0x26')]({'plain':!![]});var _0x29552a=_0xedac('0x27');return db[_0xedac('0x28')]['destroy']({'where':{'type':_0x29552a,'resourceId':_0x45f90b['id']}})[_0xedac('0x25')](function(){return _0x264137;});})[_0xedac('0x25')](function(){_0xb57b6d[_0xedac('0x1c')](0xcc)[_0xedac('0x1b')]();});}};}function handleEntityNotFound(_0x120243,_0x50d971){return function(_0x3a410f){if(!_0x3a410f){_0x120243[_0xedac('0x1a')](0x194);}return _0x3a410f;};}function handleError(_0x1c4a39,_0x142e3b){_0x142e3b=_0x142e3b||0x1f4;return function(_0x138fde){logger[_0xedac('0x29')](_0x138fde[_0xedac('0x2a')]);if(_0x138fde[_0xedac('0x2b')]){delete _0x138fde['name'];}_0x1c4a39[_0xedac('0x1c')](_0x142e3b)['send'](_0x138fde);};}exports[_0xedac('0x2c')]=function(_0x1f4a5f,_0x3864df){var _0x52a0dc={},_0x18c622={},_0x24f2bd={'count':0x0,'rows':[]};var _0x39117a=_['map'](db[_0xedac('0x2d')][_0xedac('0x2e')],function(_0x3a219a){return{'name':_0x3a219a[_0xedac('0x2f')],'type':_0x3a219a[_0xedac('0x30')][_0xedac('0x31')]};});_0x18c622[_0xedac('0x32')]=_['map'](_0x39117a,_0xedac('0x2b'));_0x18c622[_0xedac('0x33')]=_[_0xedac('0x34')](_0x1f4a5f['query']);_0x18c622['filters']=_[_0xedac('0x35')](_0x18c622[_0xedac('0x32')],_0x18c622[_0xedac('0x33')]);_0x52a0dc[_0xedac('0x36')]=_['intersection'](_0x18c622['model'],qs[_0xedac('0x37')](_0x1f4a5f[_0xedac('0x33')][_0xedac('0x37')]));_0x52a0dc['attributes']=_0x52a0dc['attributes'][_0xedac('0x38')]?_0x52a0dc[_0xedac('0x36')]:_0x18c622['model'];if(!_0x1f4a5f[_0xedac('0x33')][_0xedac('0x39')]('nolimit')){_0x52a0dc[_0xedac('0x20')]=qs[_0xedac('0x20')](_0x1f4a5f[_0xedac('0x33')]['limit']);_0x52a0dc[_0xedac('0x1e')]=qs[_0xedac('0x1e')](_0x1f4a5f[_0xedac('0x33')][_0xedac('0x1e')]);}_0x52a0dc[_0xedac('0x3a')]=qs[_0xedac('0x3b')](_0x1f4a5f[_0xedac('0x33')]['sort']);_0x52a0dc[_0xedac('0x3c')]=qs[_0xedac('0x3d')](_[_0xedac('0x3e')](_0x1f4a5f['query'],_0x18c622['filters']),_0x39117a);if(_0x1f4a5f['query'][_0xedac('0x3f')]){_0x52a0dc['where']=_[_0xedac('0x40')](_0x52a0dc[_0xedac('0x3c')],{'$or':_['map'](_0x39117a,function(_0xc435ca){if(_0xc435ca['type']!==_0xedac('0x41')){var _0x2ea5f2={};_0x2ea5f2[_0xc435ca[_0xedac('0x2b')]]={'$like':'%'+_0x1f4a5f[_0xedac('0x33')][_0xedac('0x3f')]+'%'};return _0x2ea5f2;}})});}_0x52a0dc=_['merge']({},_0x52a0dc,_0x1f4a5f[_0xedac('0x42')]);var _0x5d419e={'where':_0x52a0dc[_0xedac('0x3c')]};return db[_0xedac('0x2d')]['count'](_0x5d419e)[_0xedac('0x25')](function(_0x24aa54){_0x24f2bd[_0xedac('0x21')]=_0x24aa54;if(_0x1f4a5f[_0xedac('0x33')][_0xedac('0x43')]){_0x52a0dc['include']=[{'all':!![]}];}return db[_0xedac('0x2d')][_0xedac('0x44')](_0x52a0dc);})[_0xedac('0x25')](function(_0x37c82e){_0x24f2bd[_0xedac('0x45')]=_0x37c82e;return _0x24f2bd;})[_0xedac('0x25')](respondWithFilteredResult(_0x3864df,_0x52a0dc))[_0xedac('0x46')](handleError(_0x3864df,null));};exports['show']=function(_0x2520ed,_0x4e7387){var _0x498428={'raw':![],'where':{'id':_0x2520ed[_0xedac('0x47')]['id']}},_0x3589ac={};_0x3589ac[_0xedac('0x32')]=_[_0xedac('0x34')](db['AnalyticCustomReport'][_0xedac('0x2e')]);_0x3589ac['query']=_['keys'](_0x2520ed[_0xedac('0x33')]);_0x3589ac[_0xedac('0x3d')]=_[_0xedac('0x35')](_0x3589ac[_0xedac('0x32')],_0x3589ac['query']);_0x498428[_0xedac('0x36')]=_['intersection'](_0x3589ac[_0xedac('0x32')],qs[_0xedac('0x37')](_0x2520ed[_0xedac('0x33')]['fields']));_0x498428[_0xedac('0x36')]=_0x498428[_0xedac('0x36')][_0xedac('0x38')]?_0x498428[_0xedac('0x36')]:_0x3589ac[_0xedac('0x32')];if(_0x2520ed['query'][_0xedac('0x43')]){_0x498428[_0xedac('0x48')]=[{'all':!![]}];}_0x498428=_[_0xedac('0x40')]({},_0x498428,_0x2520ed[_0xedac('0x42')]);return db[_0xedac('0x2d')]['find'](_0x498428)['then'](handleEntityNotFound(_0x4e7387,null))['then'](respondWithResult(_0x4e7387,null))['catch'](handleError(_0x4e7387,null));};exports['create']=function(_0x3dfa00,_0x2d6352){return db[_0xedac('0x2d')][_0xedac('0x49')](_0x3dfa00[_0xedac('0x4a')],{})[_0xedac('0x25')](function(_0x314e41){var _0x3ebcdb=_0x3dfa00[_0xedac('0x4b')][_0xedac('0x26')]({'plain':!![]});if(!_0x3ebcdb)throw new Error(_0xedac('0x4c'));if(_0x3ebcdb['role']===_0xedac('0x4b')){var _0x125a9e=_0x314e41[_0xedac('0x26')]({'plain':!![]});var _0x1b8b8b='Reports';return db['UserProfileSection'][_0xedac('0x4d')]({'where':{'name':_0x1b8b8b,'userProfileId':_0x3ebcdb[_0xedac('0x4e')]},'raw':!![]})[_0xedac('0x25')](function(_0x193e7d){if(_0x193e7d&&_0x193e7d[_0xedac('0x4f')]===0x0){return db['UserProfileResource'][_0xedac('0x49')]({'name':_0x125a9e[_0xedac('0x2b')],'resourceId':_0x125a9e['id'],'type':_0xedac('0x27'),'sectionId':_0x193e7d['id']},{})[_0xedac('0x25')](function(){return _0x314e41;});}else{return _0x314e41;}})[_0xedac('0x46')](function(_0x31c52c){logger[_0xedac('0x29')](_0xedac('0x50'),_0x31c52c);throw _0x31c52c;});}return _0x314e41;})['then'](respondWithResult(_0x2d6352,0xc9))[_0xedac('0x46')](handleError(_0x2d6352,null));};exports['update']=function(_0x116c0f,_0x2b4e85){if(_0x116c0f[_0xedac('0x4a')]['id']){delete _0x116c0f['body']['id'];}return db[_0xedac('0x2d')]['find']({'where':{'id':_0x116c0f[_0xedac('0x47')]['id']}})[_0xedac('0x25')](handleEntityNotFound(_0x2b4e85,null))[_0xedac('0x25')](saveUpdates(_0x116c0f[_0xedac('0x4a')],null))[_0xedac('0x25')](respondWithResult(_0x2b4e85,null))[_0xedac('0x46')](handleError(_0x2b4e85,null));};exports[_0xedac('0x51')]=function(_0x1bcd59,_0x1fdd3c){return db[_0xedac('0x2d')][_0xedac('0x4d')]({'where':{'id':_0x1bcd59['params']['id']}})[_0xedac('0x25')](handleEntityNotFound(_0x1fdd3c,null))[_0xedac('0x25')](removeEntity(_0x1fdd3c,null))['catch'](handleError(_0x1fdd3c,null));};exports['preview']=function(_0x4e7cb1,_0x778965){var _0x5382ff=0xa;var _0xbe86b6=['join','left_join',_0xedac('0x52'),_0xedac('0x53')];var _0x5c0795={'SUM':'SUM(%s)','COUNT':_0xedac('0x54'),'COUNT DISTINCT':_0xedac('0x55'),'MAX':_0xedac('0x56'),'MIN':_0xedac('0x57'),'AVG':_0xedac('0x58'),'GROUP_CONCAT':_0xedac('0x59'),'GROUP_CONCAT ASC':_0xedac('0x5a'),'GROUP_CONCAT DESC':_0xedac('0x5b')};var _0x3bacfd={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xedac('0x5c'),'HOUR':_0xedac('0x5d'),'ROUND':_0xedac('0x5e'),'UNIX_TIMESTAMP':_0xedac('0x5f')};var _0x3662d8=function(_0x53d212){return!_[_0xedac('0x60')]([_0xedac('0x61'),_0xedac('0x62'),_0xedac('0x63'),_0xedac('0x64')],_0x53d212);};var _0x2474c7=function(_0x178333){if(!_0x178333||!_0x178333[_0xedac('0x65')][_0xedac('0x38')]){return'';}for(var _0x4609c5='(',_0x1f2c77=0x0;_0x1f2c77<_0x178333['rules'][_0xedac('0x38')];_0x1f2c77+=0x1){_0x1f2c77>0x0&&(_0x4609c5+='\x20'+_0x178333[_0xedac('0x66')]+'\x20');_0x4609c5+=_0x178333[_0xedac('0x65')][_0x1f2c77]['group']?_0x2474c7(_0x178333[_0xedac('0x65')][_0x1f2c77]['group']):_0x178333[_0xedac('0x65')][_0x1f2c77]['field']+'\x20'+_0x178333[_0xedac('0x65')][_0x1f2c77][_0xedac('0x67')]+(_0x3662d8(_0x178333[_0xedac('0x65')][_0x1f2c77][_0xedac('0x67')])?'\x20'+_0x178333[_0xedac('0x65')][_0x1f2c77][_0xedac('0x68')]:'');}return _0x4609c5+')';};var _0x5577f={'where':{'id':_0x4e7cb1[_0xedac('0x47')]['id']}},_0x48da8a,_0x57c3e2,_0x3856b0,_0x3deb47,_0x37130e;_0x5577f=_[_0xedac('0x40')]({},_0x5577f,_0x4e7cb1['options']);return db[_0xedac('0x2d')][_0xedac('0x4d')](_0x5577f)[_0xedac('0x25')](function(_0x309a32){if(_0x309a32){_0x48da8a=_0x309a32;return _0x309a32['getFields']();}return null;})['then'](function(_0x12ace6){if(_0x12ace6){if(!_0x12ace6[_0xedac('0x38')]){throw new db[(_0xedac('0x69'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x57c3e2=_0x12ace6;return db[_0xedac('0x6a')][_0xedac('0x44')]({'raw':!![]});}return null;})['then'](function(_0x277861){if(_0x277861){_0x3856b0=_[_0xedac('0x6b')](_0x277861,'id');var _0x55883f;var _0x87b3bb=squel['select']();_0x87b3bb[_0xedac('0x6c')](_0x48da8a['table']);for(var _0x3c2b83=0x0;_0x3c2b83<_0x57c3e2[_0xedac('0x38')];_0x3c2b83+=0x1){_0x55883f=_0x57c3e2[_0x3c2b83][_0xedac('0x6d')]?_0x3856b0[_0x57c3e2[_0x3c2b83][_0xedac('0x6d')]][_0xedac('0x6e')]:_0x57c3e2[_0x3c2b83][_0xedac('0x6f')];_0x55883f=_0x57c3e2[_0x3c2b83]['function']?_[_0xedac('0x70')](_0x5c0795[_0x57c3e2[_0x3c2b83][_0xedac('0x71')]],'%s',_0x55883f):_0x55883f;_0x55883f=_0x57c3e2[_0x3c2b83]['format']?_['replace'](_0x3bacfd[_0x57c3e2[_0x3c2b83]['format']],'%s',_0x55883f):_0x55883f;if(_0x57c3e2[_0x3c2b83][_0xedac('0x72')]){_0x87b3bb['group'](_0x55883f);}_0x57c3e2[_0x3c2b83][_0xedac('0x73')]&&_0x87b3bb[_0xedac('0x3a')](_0x55883f,_0x57c3e2[_0x3c2b83][_0xedac('0x73')]===_0xedac('0x74')?![]:!![]);_0x87b3bb[_0xedac('0x6f')](_0x55883f,_0x57c3e2[_0x3c2b83][_0xedac('0x75')]||_0x55883f);}if(_0x48da8a['joins']){_0x48da8a[_0xedac('0x76')]=JSON[_0xedac('0x77')](_0x48da8a[_0xedac('0x76')]);for(var _0x14fb8d=0x0;_0x14fb8d<_0x48da8a['joins'][_0xedac('0x38')];_0x14fb8d+=0x1){if(_0x48da8a['joins'][_0x14fb8d][_0xedac('0x30')]&&_[_0xedac('0x60')](_0xbe86b6,_0x48da8a[_0xedac('0x76')][_0x14fb8d]['type'])&&_0x48da8a[_0xedac('0x76')][_0x14fb8d][_0xedac('0x78')]&&_0x48da8a['joins'][_0x14fb8d][_0xedac('0x79')]&&_0x48da8a[_0xedac('0x76')][_0x14fb8d]['foreignKey']){_0x87b3bb[_0x48da8a[_0xedac('0x76')][_0x14fb8d][_0xedac('0x30')]](_0x48da8a[_0xedac('0x76')][_0x14fb8d][_0xedac('0x79')],null,util['format'](_0xedac('0x7a'),_0x48da8a[_0xedac('0x7b')],_0x48da8a[_0xedac('0x76')][_0x14fb8d]['parentKey'],_0x48da8a['joins'][_0x14fb8d][_0xedac('0x79')],_0x48da8a['joins'][_0x14fb8d]['foreignKey']));}}}if(_0x48da8a[_0xedac('0x7c')]){_0x48da8a['conditions']=JSON[_0xedac('0x77')](_0x48da8a[_0xedac('0x7c')]);_0x87b3bb[_0xedac('0x3c')](_0x2474c7(_0x48da8a[_0xedac('0x7c')][_0xedac('0x7d')]));}_0x37130e=_0x87b3bb[_0xedac('0x7e')]();_0x87b3bb['limit'](_0x5382ff);_0x87b3bb[_0xedac('0x1e')](0x0);logger['debug'](_0xedac('0x7f'),_0x87b3bb[_0xedac('0x80')]());return dbH['sequelize'][_0xedac('0x33')](_0x87b3bb['toString'](),{'type':dbH[_0xedac('0x81')][_0xedac('0x82')][_0xedac('0x83')]});}})['then'](respondWithResult(_0x778965,null))[_0xedac('0x46')](handleError(_0x778965,null));};function runReport(_0x2bdcc2,_0xc1a003,_0xd00864){var _0x39facf=_0xc1a003['name'];var _0x4aef06=0xa;var _0x5122a1=['join',_0xedac('0x84'),_0xedac('0x52'),_0xedac('0x53')];var _0x5b10dd={'SUM':_0xedac('0x85'),'COUNT':_0xedac('0x54'),'COUNT DISTINCT':_0xedac('0x55'),'MAX':_0xedac('0x56'),'MIN':'MIN(%s)','AVG':_0xedac('0x58'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xedac('0x5a'),'GROUP_CONCAT DESC':_0xedac('0x5b')};var _0xc397f9={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':_0xedac('0x5d'),'ROUND':_0xedac('0x5e'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x286b94=function(_0x5235db){return!_[_0xedac('0x60')]([_0xedac('0x61'),_0xedac('0x62'),_0xedac('0x63'),'IS\x20NOT\x20EMPTY'],_0x5235db);};var _0x385229=function(_0x1412ea){if(!_0x1412ea||!_0x1412ea['rules']['length']){return'';}for(var _0x2d6b1f='(',_0x3941c0=0x0;_0x3941c0<_0x1412ea[_0xedac('0x65')][_0xedac('0x38')];_0x3941c0+=0x1){_0x3941c0>0x0&&(_0x2d6b1f+='\x20'+_0x1412ea[_0xedac('0x66')]+'\x20');_0x2d6b1f+=_0x1412ea[_0xedac('0x65')][_0x3941c0]['group']?_0x385229(_0x1412ea[_0xedac('0x65')][_0x3941c0][_0xedac('0x7d')]):_0x1412ea[_0xedac('0x65')][_0x3941c0][_0xedac('0x6f')]+'\x20'+_0x1412ea[_0xedac('0x65')][_0x3941c0][_0xedac('0x67')]+(_0x286b94(_0x1412ea[_0xedac('0x65')][_0x3941c0][_0xedac('0x67')])?'\x20'+_0x1412ea[_0xedac('0x65')][_0x3941c0][_0xedac('0x68')]:'');}return _0x2d6b1f+')';};var _0xe6c7a7={'where':{'id':_0x2bdcc2['id']}},_0x1a0fde,_0x56f213,_0x40440d,_0x3e5cd2,_0x50bed2;_0xe6c7a7=_[_0xedac('0x40')]({},_0xe6c7a7,_0xd00864);return db[_0xedac('0x2d')][_0xedac('0x4d')](_0xe6c7a7)[_0xedac('0x25')](function(_0x4fc5fa){if(_0x4fc5fa){_0x1a0fde=_0x4fc5fa;return _0x4fc5fa[_0xedac('0x86')]();}return null;})['then'](function(_0xdeac4f){if(_0xdeac4f){if(!_0xdeac4f[_0xedac('0x38')]){throw new db[(_0xedac('0x69'))][(_0xedac('0x87'))](_0xedac('0x88'),0x193);}_0x56f213=_0xdeac4f;return db['AnalyticMetric'][_0xedac('0x44')]({'raw':!![]});}return null;})['then'](function(_0xda4e52){if(_0xda4e52){_0x40440d=_[_0xedac('0x6b')](_0xda4e52,'id');var _0x11501f;var _0x435ad7=squel['select']();_0x435ad7[_0xedac('0x6c')](_0x1a0fde[_0xedac('0x7b')]);for(var _0x137fb7=0x0;_0x137fb7<_0x56f213[_0xedac('0x38')];_0x137fb7+=0x1){_0x11501f=_0x56f213[_0x137fb7][_0xedac('0x6d')]?_0x40440d[_0x56f213[_0x137fb7][_0xedac('0x6d')]][_0xedac('0x6e')]:_0x56f213[_0x137fb7][_0xedac('0x6f')];_0x11501f=_0x56f213[_0x137fb7][_0xedac('0x71')]?_[_0xedac('0x70')](_0x5b10dd[_0x56f213[_0x137fb7][_0xedac('0x71')]],'%s',_0x11501f):_0x11501f;_0x11501f=_0x56f213[_0x137fb7][_0xedac('0x89')]?_[_0xedac('0x70')](_0xc397f9[_0x56f213[_0x137fb7][_0xedac('0x89')]],'%s',_0x11501f):_0x11501f;if(_0x56f213[_0x137fb7]['groupBy']){_0x435ad7['group'](_0x11501f);}_0x56f213[_0x137fb7][_0xedac('0x73')]&&_0x435ad7['order'](_0x11501f,_0x56f213[_0x137fb7][_0xedac('0x73')]===_0xedac('0x74')?![]:!![]);_0x435ad7[_0xedac('0x6f')](_0x11501f,_0x56f213[_0x137fb7][_0xedac('0x75')]||_0x11501f);}if(_0x1a0fde[_0xedac('0x76')]){_0x1a0fde[_0xedac('0x76')]=JSON[_0xedac('0x77')](_0x1a0fde[_0xedac('0x76')]);for(var _0x1a6680=0x0;_0x1a6680<_0x1a0fde[_0xedac('0x76')]['length'];_0x1a6680+=0x1){if(_0x1a0fde[_0xedac('0x76')][_0x1a6680]['type']&&_[_0xedac('0x60')](_0x5122a1,_0x1a0fde['joins'][_0x1a6680]['type'])&&_0x1a0fde['joins'][_0x1a6680]['parentKey']&&_0x1a0fde[_0xedac('0x76')][_0x1a6680][_0xedac('0x79')]&&_0x1a0fde[_0xedac('0x76')][_0x1a6680][_0xedac('0x8a')]){_0x435ad7[_0x1a0fde[_0xedac('0x76')][_0x1a6680][_0xedac('0x30')]](_0x1a0fde['joins'][_0x1a6680][_0xedac('0x79')],null,util['format'](_0xedac('0x7a'),_0x1a0fde[_0xedac('0x7b')],_0x1a0fde['joins'][_0x1a6680][_0xedac('0x78')],_0x1a0fde['joins'][_0x1a6680][_0xedac('0x79')],_0x1a0fde['joins'][_0x1a6680]['foreignKey']));}}}if(_0x1a0fde[_0xedac('0x7c')]){_0x1a0fde[_0xedac('0x7c')]=JSON[_0xedac('0x77')](_0x1a0fde[_0xedac('0x7c')]);_0x435ad7['where'](_0x385229(_0x1a0fde[_0xedac('0x7c')][_0xedac('0x7d')]));}_0x50bed2=_0x435ad7[_0xedac('0x7e')]();_0x435ad7[_0xedac('0x20')](_0x4aef06);_0x435ad7[_0xedac('0x1e')](0x0);return;}})[_0xedac('0x25')](function(){if(_0xc1a003['output']==='web'){return null;}var _0x172d7c=_[_0xedac('0x40')](_0xc1a003,{'name':_0xc1a003[_0xedac('0x8b')]||_0xc1a003['name']||_0x1a0fde[_0xedac('0x2b')],'basename':_0x39facf,'savename':util[_0xedac('0x89')](_0xedac('0x8c'),_0xc1a003[_0xedac('0x2b')]||_0x1a0fde[_0xedac('0x2b')],require(_0xedac('0x8d'))['generate'](0x4),_0xc1a003[_0xedac('0x8e')]||'csv'),'reportId':_0x1a0fde['id'],'reportType':_0xedac('0x8f')});return db[_0xedac('0x90')]['create'](_0x172d7c,{'raw':!![]});})[_0xedac('0x25')](function(_0x143a62){if(_0x1a0fde['table']===_0xedac('0x91')){_0x50bed2[_0xedac('0x3c')](_0x1a0fde[_0xedac('0x7b')]+_0xedac('0x92'),_0xc1a003['startDate'],_0xc1a003[_0xedac('0x93')]);}else{_0x50bed2[_0xedac('0x3c')](_0x1a0fde['table']+_0xedac('0x94'),_0xc1a003[_0xedac('0x95')],_0xc1a003['endDate']);}if(_0x143a62){logger['info'](_0xedac('0x96'),_0x50bed2['toString']());require(_0xedac('0x97'))['fork'](path['join'](__dirname,_0xedac('0x98'),_0x143a62['output']),[_0x143a62['id'],_0x50bed2[_0xedac('0x80')](),path[_0xedac('0x99')](__dirname,_0xedac('0x9a'),_0x143a62[_0xedac('0x9b')]),_0x39facf]);return _0x143a62;}else{var _0x1d3c38=squel[_0xedac('0x9c')]();_0x1d3c38[_0xedac('0x6c')]('('+_0x50bed2[_0xedac('0x80')]()+')',_0xedac('0x9d'));_0x1d3c38['field'](_0xedac('0x9e'),_0xedac('0x21'));_0x50bed2[_0xedac('0x20')](_0xc1a003[_0xedac('0x20')]||_0x4aef06);_0x50bed2['offset'](_0xc1a003['offset']||0x0);return dbH[_0xedac('0x81')][_0xedac('0x33')](_0x1d3c38[_0xedac('0x80')](),{'type':dbH[_0xedac('0x81')]['QueryTypes'][_0xedac('0x83')]})[_0xedac('0x25')](function(_0x4c53e5){if(!_0x4c53e5['length']){_0x3e5cd2=0x0;}else{_0x3e5cd2=_0x4c53e5[0x0]['count']||0x0;}return dbH[_0xedac('0x81')][_0xedac('0x33')](_0x50bed2[_0xedac('0x80')](),{'type':dbH[_0xedac('0x81')][_0xedac('0x82')][_0xedac('0x83')]});})['then'](function(_0x43270d){return{'rows':_0x43270d||[],'count':_0x3e5cd2};});}});}exports[_0xedac('0x9f')]=function(_0x3fb822,_0x22f5c9){return runReport(_0x3fb822[_0xedac('0x47')],_0x3fb822[_0xedac('0x33')],_0x3fb822[_0xedac('0x42')])[_0xedac('0x25')](respondWithResult(_0x22f5c9,null))[_0xedac('0x46')](handleError(_0x22f5c9,null));};exports[_0xedac('0xa0')]=runReport;exports[_0xedac('0x33')]=function(_0x4c37ff,_0xcb4f0b){var _0x2c2d68=0xa;var _0x2b80ab=['join',_0xedac('0x84'),'right_join',_0xedac('0x53')];var _0x3ef765={'SUM':_0xedac('0x85'),'COUNT':_0xedac('0x54'),'COUNT DISTINCT':_0xedac('0x55'),'MAX':_0xedac('0x56'),'MIN':_0xedac('0x57'),'AVG':_0xedac('0x58'),'GROUP_CONCAT':_0xedac('0x59'),'GROUP_CONCAT ASC':_0xedac('0x5a'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x33fd44={'SEC_TO_TIME':_0xedac('0xa1'),'DATE':_0xedac('0x5c'),'HOUR':_0xedac('0x5d'),'ROUND':_0xedac('0x5e'),'UNIX_TIMESTAMP':_0xedac('0x5f')};var _0x135a38=function(_0x524a9e){return!_[_0xedac('0x60')]([_0xedac('0x61'),_0xedac('0x62'),_0xedac('0x63'),_0xedac('0x64')],_0x524a9e);};var _0x207ba4=function(_0x23022b){if(!_0x23022b||!_0x23022b[_0xedac('0x65')][_0xedac('0x38')]){return'';}for(var _0x575c96='(',_0x11d09c=0x0;_0x11d09c<_0x23022b['rules'][_0xedac('0x38')];_0x11d09c+=0x1){_0x11d09c>0x0&&(_0x575c96+='\x20'+_0x23022b['operator']+'\x20');_0x575c96+=_0x23022b[_0xedac('0x65')][_0x11d09c][_0xedac('0x7d')]?_0x207ba4(_0x23022b[_0xedac('0x65')][_0x11d09c]['group']):_0x23022b[_0xedac('0x65')][_0x11d09c]['field']+'\x20'+_0x23022b[_0xedac('0x65')][_0x11d09c]['condition']+(_0x135a38(_0x23022b['rules'][_0x11d09c][_0xedac('0x67')])?'\x20'+_0x23022b[_0xedac('0x65')][_0x11d09c][_0xedac('0x68')]:'');}return _0x575c96+')';};var _0x607ef5={'where':{'id':_0x4c37ff['params']['id']}},_0x220aae,_0x3f8265,_0x5075dd,_0x4a777c,_0x11be6e;_0x607ef5=_[_0xedac('0x40')]({},_0x607ef5,_0x4c37ff['options']);return db[_0xedac('0x2d')][_0xedac('0x4d')](_0x607ef5)[_0xedac('0x25')](function(_0x283e80){if(_0x283e80){_0x220aae=_0x283e80;return _0x283e80['getFields']();}return null;})[_0xedac('0x25')](function(_0x1e1d71){if(_0x1e1d71){if(!_0x1e1d71[_0xedac('0x38')]){throw new db[(_0xedac('0x69'))][(_0xedac('0x87'))](_0xedac('0x88'),0x193);}_0x3f8265=_0x1e1d71;return db[_0xedac('0x6a')][_0xedac('0x44')]({'raw':!![]});}return null;})[_0xedac('0x25')](function(_0x16b0e7){if(_0x16b0e7){_0x5075dd=_[_0xedac('0x6b')](_0x16b0e7,'id');var _0x147c29;var _0x373d69=squel['select']();_0x373d69['from'](_0x220aae[_0xedac('0x7b')]);for(var _0x38625c=0x0;_0x38625c<_0x3f8265['length'];_0x38625c+=0x1){_0x147c29=_0x3f8265[_0x38625c][_0xedac('0x6d')]?_0x5075dd[_0x3f8265[_0x38625c][_0xedac('0x6d')]]['metric']:_0x3f8265[_0x38625c][_0xedac('0x6f')];_0x147c29=_0x3f8265[_0x38625c][_0xedac('0x71')]?_[_0xedac('0x70')](_0x3ef765[_0x3f8265[_0x38625c][_0xedac('0x71')]],'%s',_0x147c29):_0x147c29;_0x147c29=_0x3f8265[_0x38625c]['format']?_[_0xedac('0x70')](_0x33fd44[_0x3f8265[_0x38625c]['format']],'%s',_0x147c29):_0x147c29;if(_0x3f8265[_0x38625c][_0xedac('0x72')]){_0x373d69[_0xedac('0x7d')](_0x147c29);}_0x3f8265[_0x38625c][_0xedac('0x73')]&&_0x373d69['order'](_0x147c29,_0x3f8265[_0x38625c][_0xedac('0x73')]===_0xedac('0x74')?![]:!![]);_0x373d69[_0xedac('0x6f')](_0x147c29,_0x3f8265[_0x38625c][_0xedac('0x75')]||_0x147c29);}if(_0x220aae[_0xedac('0x76')]){_0x220aae['joins']=JSON[_0xedac('0x77')](_0x220aae[_0xedac('0x76')]);for(var _0x42a8a4=0x0;_0x42a8a4<_0x220aae[_0xedac('0x76')][_0xedac('0x38')];_0x42a8a4+=0x1){if(_0x220aae[_0xedac('0x76')][_0x42a8a4][_0xedac('0x30')]&&_[_0xedac('0x60')](_0x2b80ab,_0x220aae[_0xedac('0x76')][_0x42a8a4]['type'])&&_0x220aae[_0xedac('0x76')][_0x42a8a4]['parentKey']&&_0x220aae[_0xedac('0x76')][_0x42a8a4]['foreignTable']&&_0x220aae['joins'][_0x42a8a4][_0xedac('0x8a')]){_0x373d69[_0x220aae[_0xedac('0x76')][_0x42a8a4][_0xedac('0x30')]](_0x220aae[_0xedac('0x76')][_0x42a8a4][_0xedac('0x79')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x220aae[_0xedac('0x7b')],_0x220aae[_0xedac('0x76')][_0x42a8a4]['parentKey'],_0x220aae[_0xedac('0x76')][_0x42a8a4][_0xedac('0x79')],_0x220aae[_0xedac('0x76')][_0x42a8a4][_0xedac('0x8a')]));}}}if(_0x220aae['conditions']){_0x220aae['conditions']=JSON['parse'](_0x220aae[_0xedac('0x7c')]);_0x373d69[_0xedac('0x3c')](_0x207ba4(_0x220aae[_0xedac('0x7c')][_0xedac('0x7d')]));}_0x11be6e=_0x373d69['clone']();_0x373d69[_0xedac('0x20')](_0x2c2d68);_0x373d69[_0xedac('0x1e')](0x0);logger['debug'](_0xedac('0x7f'),_0x373d69[_0xedac('0x80')]());return dbH[_0xedac('0x81')][_0xedac('0x33')](_0x373d69[_0xedac('0x80')](),{'type':dbH[_0xedac('0x81')]['QueryTypes'][_0xedac('0x83')]});}})[_0xedac('0x25')](function(){return{'sql':_0x11be6e['toString']()};})[_0xedac('0x25')](respondWithResult(_0xcb4f0b,null))['catch'](handleError(_0xcb4f0b,null));};
\ No newline at end of file
+var _0xa96b=['length','hasOwnProperty','nolimit','limit','order','where','merge','VIRTUAL','filter','options','include','findAll','catch','show','params','attributes','includeAll','find','body','get','Reports','UserProfileSection','userProfileId','autoAssociation','create','preview','join','left_join','right_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','ROUND(%s)','includes','IS\x20NULL','IS\x20EMPTY','rules','operator','group','field','condition','value','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','table','MetricId','metric','function','replace','format','groupBy','orderBy','DESC','alias','joins','parse','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','conditions','debug','Limited\x20Query:','sequelize','toString','QueryTypes','SELECT','cross_join','AVG(%s)','HOUR(%s)','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','from','clone','web','fullPath','%s-%s.%s','randomstring','generate','output','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','../../components/export/','savename','countTable','COUNT(*)','run','UNIX_TIMESTAMP(%s)','getFields','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','lodash','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','dbH','status','end','json','offset','undefined','count','set','reject','save','update','then','destroy','CustomReports','sendStatus','error','name','send','index','map','AnalyticCustomReport','rawAttributes','fieldName','type','key','model','keys','filters','query','intersection','fields'];(function(_0x1249f4,_0x27226c){var _0x47c8a9=function(_0x2d9917){while(--_0x2d9917){_0x1249f4['push'](_0x1249f4['shift']());}};_0x47c8a9(++_0x27226c);}(_0xa96b,0x10b));var _0xba96=function(_0x5bae74,_0x5efdc9){_0x5bae74=_0x5bae74-0x0;var _0x5fd008=_0xa96b[_0x5bae74];return _0x5fd008;};'use strict';var emlformat=require(_0xba96('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xba96('0x1'));var jsonpatch=require(_0xba96('0x2'));var rp=require(_0xba96('0x3'));var moment=require(_0xba96('0x4'));var BPromise=require(_0xba96('0x5'));var Mustache=require(_0xba96('0x6'));var util=require(_0xba96('0x7'));var path=require('path');var sox=require(_0xba96('0x8'));var csv=require(_0xba96('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xba96('0xa'));var squel=require('squel');var crypto=require(_0xba96('0xb'));var jsforce=require(_0xba96('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xba96('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xba96('0xd'));var authService=require(_0xba96('0xe'));var qs=require(_0xba96('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xba96('0x10'))(_0xba96('0x11'));var utils=require(_0xba96('0x12'));var config=require(_0xba96('0x13'));var licenseUtil=require(_0xba96('0x14'));var db=require(_0xba96('0x15'))['db'];var dbH=require(_0xba96('0x15'))[_0xba96('0x16')];function respondWithStatusCode(_0x44856f,_0x441b25){_0x441b25=_0x441b25||0xcc;return function(_0x1d1552){if(_0x1d1552){return _0x44856f['sendStatus'](_0x441b25);}return _0x44856f[_0xba96('0x17')](_0x441b25)[_0xba96('0x18')]();};}function respondWithResult(_0x4e4a7b,_0x1316d2){_0x1316d2=_0x1316d2||0xc8;return function(_0x158df4){if(_0x158df4){return _0x4e4a7b[_0xba96('0x17')](_0x1316d2)[_0xba96('0x19')](_0x158df4);}};}function respondWithFilteredResult(_0x336f1b,_0x912fbe){return function(_0x44cb27){if(_0x44cb27){var _0x412b3f=typeof _0x912fbe[_0xba96('0x1a')]==='undefined'&&typeof _0x912fbe['limit']===_0xba96('0x1b');var _0x559d79=_0x44cb27[_0xba96('0x1c')];var _0x47ca21=_0x412b3f?0x0:_0x912fbe['offset'];var _0x12c5e2=_0x412b3f?_0x44cb27['count']:_0x912fbe['offset']+_0x912fbe['limit'];var _0x56ee3e;if(_0x12c5e2>=_0x559d79){_0x12c5e2=_0x559d79;_0x56ee3e=0xc8;}else{_0x56ee3e=0xce;}_0x336f1b[_0xba96('0x17')](_0x56ee3e);return _0x336f1b[_0xba96('0x1d')]('Content-Range',_0x47ca21+'-'+_0x12c5e2+'/'+_0x559d79)[_0xba96('0x19')](_0x44cb27);}return null;};}function patchUpdates(_0x3f09ac){return function(_0x157538){try{jsonpatch['apply'](_0x157538,_0x3f09ac,!![]);}catch(_0x26cf18){return BPromise[_0xba96('0x1e')](_0x26cf18);}return _0x157538[_0xba96('0x1f')]();};}function saveUpdates(_0x53559a,_0x30359c){return function(_0x358691){if(_0x358691){return _0x358691[_0xba96('0x20')](_0x53559a)[_0xba96('0x21')](function(_0x4a7e97){return _0x4a7e97;});}return null;};}function removeEntity(_0x52a2d6,_0x2bf759){return function(_0x226f81){if(_0x226f81){return _0x226f81[_0xba96('0x22')]()[_0xba96('0x21')](function(){var _0x5b356d=_0x226f81['get']({'plain':!![]});var _0xe0d79c=_0xba96('0x23');return db['UserProfileResource']['destroy']({'where':{'type':_0xe0d79c,'resourceId':_0x5b356d['id']}})['then'](function(){return _0x226f81;});})['then'](function(){_0x52a2d6[_0xba96('0x17')](0xcc)[_0xba96('0x18')]();});}};}function handleEntityNotFound(_0x268626,_0x51037a){return function(_0x5b029d){if(!_0x5b029d){_0x268626[_0xba96('0x24')](0x194);}return _0x5b029d;};}function handleError(_0x236f8e,_0x36041e){_0x36041e=_0x36041e||0x1f4;return function(_0x37f641){logger[_0xba96('0x25')](_0x37f641['stack']);if(_0x37f641['name']){delete _0x37f641[_0xba96('0x26')];}_0x236f8e['status'](_0x36041e)[_0xba96('0x27')](_0x37f641);};}exports[_0xba96('0x28')]=function(_0x217d91,_0x35934a){var _0x53516f={},_0x1b0113={},_0x3cd54a={'count':0x0,'rows':[]};var _0x64251d=_[_0xba96('0x29')](db[_0xba96('0x2a')][_0xba96('0x2b')],function(_0x517927){return{'name':_0x517927[_0xba96('0x2c')],'type':_0x517927[_0xba96('0x2d')][_0xba96('0x2e')]};});_0x1b0113[_0xba96('0x2f')]=_['map'](_0x64251d,'name');_0x1b0113['query']=_[_0xba96('0x30')](_0x217d91['query']);_0x1b0113[_0xba96('0x31')]=_['intersection'](_0x1b0113[_0xba96('0x2f')],_0x1b0113[_0xba96('0x32')]);_0x53516f['attributes']=_[_0xba96('0x33')](_0x1b0113['model'],qs[_0xba96('0x34')](_0x217d91[_0xba96('0x32')][_0xba96('0x34')]));_0x53516f['attributes']=_0x53516f['attributes'][_0xba96('0x35')]?_0x53516f['attributes']:_0x1b0113[_0xba96('0x2f')];if(!_0x217d91[_0xba96('0x32')][_0xba96('0x36')](_0xba96('0x37'))){_0x53516f[_0xba96('0x38')]=qs[_0xba96('0x38')](_0x217d91[_0xba96('0x32')]['limit']);_0x53516f[_0xba96('0x1a')]=qs[_0xba96('0x1a')](_0x217d91[_0xba96('0x32')][_0xba96('0x1a')]);}_0x53516f[_0xba96('0x39')]=qs['sort'](_0x217d91[_0xba96('0x32')]['sort']);_0x53516f['where']=qs[_0xba96('0x31')](_['pick'](_0x217d91[_0xba96('0x32')],_0x1b0113[_0xba96('0x31')]),_0x64251d);if(_0x217d91[_0xba96('0x32')]['filter']){_0x53516f[_0xba96('0x3a')]=_[_0xba96('0x3b')](_0x53516f[_0xba96('0x3a')],{'$or':_[_0xba96('0x29')](_0x64251d,function(_0x5c1484){if(_0x5c1484[_0xba96('0x2d')]!==_0xba96('0x3c')){var _0xeddfe1={};_0xeddfe1[_0x5c1484['name']]={'$like':'%'+_0x217d91[_0xba96('0x32')][_0xba96('0x3d')]+'%'};return _0xeddfe1;}})});}_0x53516f=_[_0xba96('0x3b')]({},_0x53516f,_0x217d91[_0xba96('0x3e')]);var _0x24075a={'where':_0x53516f['where']};return db[_0xba96('0x2a')]['count'](_0x24075a)[_0xba96('0x21')](function(_0x4e405a){_0x3cd54a[_0xba96('0x1c')]=_0x4e405a;if(_0x217d91[_0xba96('0x32')]['includeAll']){_0x53516f[_0xba96('0x3f')]=[{'all':!![]}];}return db['AnalyticCustomReport'][_0xba96('0x40')](_0x53516f);})[_0xba96('0x21')](function(_0x5a17bd){_0x3cd54a['rows']=_0x5a17bd;return _0x3cd54a;})[_0xba96('0x21')](respondWithFilteredResult(_0x35934a,_0x53516f))[_0xba96('0x41')](handleError(_0x35934a,null));};exports[_0xba96('0x42')]=function(_0x57923e,_0x1db383){var _0x4cbe1e={'raw':![],'where':{'id':_0x57923e[_0xba96('0x43')]['id']}},_0x1edd89={};_0x1edd89['model']=_[_0xba96('0x30')](db[_0xba96('0x2a')][_0xba96('0x2b')]);_0x1edd89[_0xba96('0x32')]=_[_0xba96('0x30')](_0x57923e[_0xba96('0x32')]);_0x1edd89[_0xba96('0x31')]=_['intersection'](_0x1edd89[_0xba96('0x2f')],_0x1edd89['query']);_0x4cbe1e[_0xba96('0x44')]=_[_0xba96('0x33')](_0x1edd89[_0xba96('0x2f')],qs[_0xba96('0x34')](_0x57923e[_0xba96('0x32')][_0xba96('0x34')]));_0x4cbe1e[_0xba96('0x44')]=_0x4cbe1e['attributes'][_0xba96('0x35')]?_0x4cbe1e[_0xba96('0x44')]:_0x1edd89['model'];if(_0x57923e[_0xba96('0x32')][_0xba96('0x45')]){_0x4cbe1e[_0xba96('0x3f')]=[{'all':!![]}];}_0x4cbe1e=_[_0xba96('0x3b')]({},_0x4cbe1e,_0x57923e['options']);return db[_0xba96('0x2a')][_0xba96('0x46')](_0x4cbe1e)[_0xba96('0x21')](handleEntityNotFound(_0x1db383,null))['then'](respondWithResult(_0x1db383,null))['catch'](handleError(_0x1db383,null));};exports['create']=function(_0x4c59a7,_0x44f809){return db[_0xba96('0x2a')]['create'](_0x4c59a7[_0xba96('0x47')],{})[_0xba96('0x21')](function(_0x18d3b8){var _0x24c7a2=_0x4c59a7['user'][_0xba96('0x48')]({'plain':!![]});if(!_0x24c7a2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x24c7a2['role']==='user'){var _0x43a568=_0x18d3b8[_0xba96('0x48')]({'plain':!![]});var _0x518f2d=_0xba96('0x49');return db[_0xba96('0x4a')][_0xba96('0x46')]({'where':{'name':_0x518f2d,'userProfileId':_0x24c7a2[_0xba96('0x4b')]},'raw':!![]})[_0xba96('0x21')](function(_0x2eaf4a){if(_0x2eaf4a&&_0x2eaf4a[_0xba96('0x4c')]===0x0){return db['UserProfileResource'][_0xba96('0x4d')]({'name':_0x43a568[_0xba96('0x26')],'resourceId':_0x43a568['id'],'type':_0xba96('0x23'),'sectionId':_0x2eaf4a['id']},{})['then'](function(){return _0x18d3b8;});}else{return _0x18d3b8;}})[_0xba96('0x41')](function(_0x2fbbc7){logger[_0xba96('0x25')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2fbbc7);throw _0x2fbbc7;});}return _0x18d3b8;})[_0xba96('0x21')](respondWithResult(_0x44f809,0xc9))[_0xba96('0x41')](handleError(_0x44f809,null));};exports[_0xba96('0x20')]=function(_0x27b27d,_0x4fafb0){if(_0x27b27d[_0xba96('0x47')]['id']){delete _0x27b27d[_0xba96('0x47')]['id'];}return db[_0xba96('0x2a')][_0xba96('0x46')]({'where':{'id':_0x27b27d[_0xba96('0x43')]['id']}})[_0xba96('0x21')](handleEntityNotFound(_0x4fafb0,null))[_0xba96('0x21')](saveUpdates(_0x27b27d[_0xba96('0x47')],null))[_0xba96('0x21')](respondWithResult(_0x4fafb0,null))['catch'](handleError(_0x4fafb0,null));};exports[_0xba96('0x22')]=function(_0x54a4ac,_0x54369c){return db[_0xba96('0x2a')][_0xba96('0x46')]({'where':{'id':_0x54a4ac['params']['id']}})['then'](handleEntityNotFound(_0x54369c,null))['then'](removeEntity(_0x54369c,null))[_0xba96('0x41')](handleError(_0x54369c,null));};exports[_0xba96('0x4e')]=function(_0x4033ae,_0x33c033){var _0x25cd62=0xa;var _0x1340f9=[_0xba96('0x4f'),_0xba96('0x50'),_0xba96('0x51'),'cross_join'];var _0x3c58ff={'SUM':_0xba96('0x52'),'COUNT':_0xba96('0x53'),'COUNT DISTINCT':_0xba96('0x54'),'MAX':_0xba96('0x55'),'MIN':_0xba96('0x56'),'AVG':'AVG(%s)','GROUP_CONCAT':_0xba96('0x57'),'GROUP_CONCAT ASC':_0xba96('0x58'),'GROUP_CONCAT DESC':_0xba96('0x59')};var _0x8f1a72={'SEC_TO_TIME':_0xba96('0x5a'),'DATE':_0xba96('0x5b'),'HOUR':'HOUR(%s)','ROUND':_0xba96('0x5c'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0xa0d1fa=function(_0x50631c){return!_[_0xba96('0x5d')]([_0xba96('0x5e'),'IS\x20NOT\x20NULL',_0xba96('0x5f'),'IS\x20NOT\x20EMPTY'],_0x50631c);};var _0x349463=function(_0x22487b){if(!_0x22487b||!_0x22487b['rules'][_0xba96('0x35')]){return'';}for(var _0x326033='(',_0x8bd14a=0x0;_0x8bd14a<_0x22487b[_0xba96('0x60')]['length'];_0x8bd14a+=0x1){_0x8bd14a>0x0&&(_0x326033+='\x20'+_0x22487b[_0xba96('0x61')]+'\x20');_0x326033+=_0x22487b['rules'][_0x8bd14a][_0xba96('0x62')]?_0x349463(_0x22487b[_0xba96('0x60')][_0x8bd14a]['group']):_0x22487b[_0xba96('0x60')][_0x8bd14a][_0xba96('0x63')]+'\x20'+_0x22487b[_0xba96('0x60')][_0x8bd14a]['condition']+(_0xa0d1fa(_0x22487b[_0xba96('0x60')][_0x8bd14a][_0xba96('0x64')])?'\x20'+_0x22487b[_0xba96('0x60')][_0x8bd14a][_0xba96('0x65')]:'');}return _0x326033+')';};var _0xb0d9e2={'where':{'id':_0x4033ae[_0xba96('0x43')]['id']}},_0x1a2445,_0x21f22d,_0x557e42,_0x1c8e40,_0xa46389;_0xb0d9e2=_['merge']({},_0xb0d9e2,_0x4033ae[_0xba96('0x3e')]);return db[_0xba96('0x2a')][_0xba96('0x46')](_0xb0d9e2)[_0xba96('0x21')](function(_0x1a4eb9){if(_0x1a4eb9){_0x1a2445=_0x1a4eb9;return _0x1a4eb9['getFields']();}return null;})['then'](function(_0x1eea2c){if(_0x1eea2c){if(!_0x1eea2c[_0xba96('0x35')]){throw new db[(_0xba96('0x66'))][(_0xba96('0x67'))](_0xba96('0x68'),0x193);}_0x21f22d=_0x1eea2c;return db[_0xba96('0x69')]['findAll']({'raw':!![]});}return null;})[_0xba96('0x21')](function(_0x38759d){if(_0x38759d){_0x557e42=_[_0xba96('0x6a')](_0x38759d,'id');var _0x146452;var _0x335178=squel[_0xba96('0x6b')]();_0x335178['from'](_0x1a2445[_0xba96('0x6c')]);for(var _0x12099b=0x0;_0x12099b<_0x21f22d['length'];_0x12099b+=0x1){_0x146452=_0x21f22d[_0x12099b]['MetricId']?_0x557e42[_0x21f22d[_0x12099b][_0xba96('0x6d')]][_0xba96('0x6e')]:_0x21f22d[_0x12099b][_0xba96('0x63')];_0x146452=_0x21f22d[_0x12099b][_0xba96('0x6f')]?_[_0xba96('0x70')](_0x3c58ff[_0x21f22d[_0x12099b][_0xba96('0x6f')]],'%s',_0x146452):_0x146452;_0x146452=_0x21f22d[_0x12099b][_0xba96('0x71')]?_[_0xba96('0x70')](_0x8f1a72[_0x21f22d[_0x12099b]['format']],'%s',_0x146452):_0x146452;if(_0x21f22d[_0x12099b][_0xba96('0x72')]){_0x335178[_0xba96('0x62')](_0x146452);}_0x21f22d[_0x12099b][_0xba96('0x73')]&&_0x335178['order'](_0x146452,_0x21f22d[_0x12099b]['orderBy']===_0xba96('0x74')?![]:!![]);_0x335178['field'](_0x146452,_0x21f22d[_0x12099b][_0xba96('0x75')]||_0x146452);}if(_0x1a2445['joins']){_0x1a2445[_0xba96('0x76')]=JSON[_0xba96('0x77')](_0x1a2445[_0xba96('0x76')]);for(var _0x3c4191=0x0;_0x3c4191<_0x1a2445[_0xba96('0x76')][_0xba96('0x35')];_0x3c4191+=0x1){if(_0x1a2445['joins'][_0x3c4191]['type']&&_[_0xba96('0x5d')](_0x1340f9,_0x1a2445[_0xba96('0x76')][_0x3c4191]['type'])&&_0x1a2445['joins'][_0x3c4191][_0xba96('0x78')]&&_0x1a2445['joins'][_0x3c4191][_0xba96('0x79')]&&_0x1a2445[_0xba96('0x76')][_0x3c4191][_0xba96('0x7a')]){_0x335178[_0x1a2445[_0xba96('0x76')][_0x3c4191][_0xba96('0x2d')]](_0x1a2445[_0xba96('0x76')][_0x3c4191][_0xba96('0x79')],null,util['format'](_0xba96('0x7b'),_0x1a2445['table'],_0x1a2445[_0xba96('0x76')][_0x3c4191][_0xba96('0x78')],_0x1a2445[_0xba96('0x76')][_0x3c4191][_0xba96('0x79')],_0x1a2445[_0xba96('0x76')][_0x3c4191]['foreignKey']));}}}if(_0x1a2445[_0xba96('0x7c')]){_0x1a2445[_0xba96('0x7c')]=JSON[_0xba96('0x77')](_0x1a2445[_0xba96('0x7c')]);_0x335178[_0xba96('0x3a')](_0x349463(_0x1a2445['conditions'][_0xba96('0x62')]));}_0xa46389=_0x335178['clone']();_0x335178['limit'](_0x25cd62);_0x335178[_0xba96('0x1a')](0x0);logger[_0xba96('0x7d')](_0xba96('0x7e'),_0x335178['toString']());return dbH[_0xba96('0x7f')]['query'](_0x335178[_0xba96('0x80')](),{'type':dbH[_0xba96('0x7f')][_0xba96('0x81')][_0xba96('0x82')]});}})[_0xba96('0x21')](respondWithResult(_0x33c033,null))['catch'](handleError(_0x33c033,null));};function runReport(_0x579d3e,_0x570b98,_0x1cc7b0){var _0x1aed50=_0x570b98[_0xba96('0x26')];var _0x3869a0=0xa;var _0x12c6b4=[_0xba96('0x4f'),_0xba96('0x50'),_0xba96('0x51'),_0xba96('0x83')];var _0x5f46ee={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':_0xba96('0x54'),'MAX':_0xba96('0x55'),'MIN':_0xba96('0x56'),'AVG':_0xba96('0x84'),'GROUP_CONCAT':_0xba96('0x57'),'GROUP_CONCAT ASC':_0xba96('0x58'),'GROUP_CONCAT DESC':_0xba96('0x59')};var _0x46e6b4={'SEC_TO_TIME':_0xba96('0x5a'),'DATE':_0xba96('0x5b'),'HOUR':_0xba96('0x85'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x30e4c5=function(_0x27f500){return!_[_0xba96('0x5d')]([_0xba96('0x5e'),_0xba96('0x86'),_0xba96('0x5f'),_0xba96('0x87')],_0x27f500);};var _0x1fea04=function(_0x3d2e06){if(!_0x3d2e06||!_0x3d2e06[_0xba96('0x60')]['length']){return'';}for(var _0x1a1a27='(',_0x44f6f2=0x0;_0x44f6f2<_0x3d2e06['rules'][_0xba96('0x35')];_0x44f6f2+=0x1){_0x44f6f2>0x0&&(_0x1a1a27+='\x20'+_0x3d2e06[_0xba96('0x61')]+'\x20');_0x1a1a27+=_0x3d2e06['rules'][_0x44f6f2][_0xba96('0x62')]?_0x1fea04(_0x3d2e06[_0xba96('0x60')][_0x44f6f2][_0xba96('0x62')]):_0x3d2e06[_0xba96('0x60')][_0x44f6f2][_0xba96('0x63')]+'\x20'+_0x3d2e06[_0xba96('0x60')][_0x44f6f2][_0xba96('0x64')]+(_0x30e4c5(_0x3d2e06['rules'][_0x44f6f2][_0xba96('0x64')])?'\x20'+_0x3d2e06[_0xba96('0x60')][_0x44f6f2][_0xba96('0x65')]:'');}return _0x1a1a27+')';};var _0x53f999={'where':{'id':_0x579d3e['id']}},_0x4e5859,_0x39f3ba,_0x52730e,_0x1f323a,_0x44cbaf;_0x53f999=_[_0xba96('0x3b')]({},_0x53f999,_0x1cc7b0);return db[_0xba96('0x2a')][_0xba96('0x46')](_0x53f999)['then'](function(_0x5356d3){if(_0x5356d3){_0x4e5859=_0x5356d3;return _0x5356d3['getFields']();}return null;})[_0xba96('0x21')](function(_0x4b67b9){if(_0x4b67b9){if(!_0x4b67b9[_0xba96('0x35')]){throw new db[(_0xba96('0x66'))]['ValidationErrorItem'](_0xba96('0x68'),0x193);}_0x39f3ba=_0x4b67b9;return db['AnalyticMetric'][_0xba96('0x40')]({'raw':!![]});}return null;})['then'](function(_0x3a0519){if(_0x3a0519){_0x52730e=_[_0xba96('0x6a')](_0x3a0519,'id');var _0x3d2303;var _0x37d603=squel['select']();_0x37d603[_0xba96('0x88')](_0x4e5859[_0xba96('0x6c')]);for(var _0xbe7557=0x0;_0xbe7557<_0x39f3ba[_0xba96('0x35')];_0xbe7557+=0x1){_0x3d2303=_0x39f3ba[_0xbe7557][_0xba96('0x6d')]?_0x52730e[_0x39f3ba[_0xbe7557][_0xba96('0x6d')]][_0xba96('0x6e')]:_0x39f3ba[_0xbe7557][_0xba96('0x63')];_0x3d2303=_0x39f3ba[_0xbe7557][_0xba96('0x6f')]?_[_0xba96('0x70')](_0x5f46ee[_0x39f3ba[_0xbe7557][_0xba96('0x6f')]],'%s',_0x3d2303):_0x3d2303;_0x3d2303=_0x39f3ba[_0xbe7557][_0xba96('0x71')]?_[_0xba96('0x70')](_0x46e6b4[_0x39f3ba[_0xbe7557][_0xba96('0x71')]],'%s',_0x3d2303):_0x3d2303;if(_0x39f3ba[_0xbe7557][_0xba96('0x72')]){_0x37d603[_0xba96('0x62')](_0x3d2303);}_0x39f3ba[_0xbe7557][_0xba96('0x73')]&&_0x37d603['order'](_0x3d2303,_0x39f3ba[_0xbe7557][_0xba96('0x73')]===_0xba96('0x74')?![]:!![]);_0x37d603[_0xba96('0x63')](_0x3d2303,_0x39f3ba[_0xbe7557][_0xba96('0x75')]||_0x3d2303);}if(_0x4e5859['joins']){_0x4e5859[_0xba96('0x76')]=JSON[_0xba96('0x77')](_0x4e5859['joins']);for(var _0x59f3ec=0x0;_0x59f3ec<_0x4e5859['joins'][_0xba96('0x35')];_0x59f3ec+=0x1){if(_0x4e5859[_0xba96('0x76')][_0x59f3ec][_0xba96('0x2d')]&&_[_0xba96('0x5d')](_0x12c6b4,_0x4e5859[_0xba96('0x76')][_0x59f3ec][_0xba96('0x2d')])&&_0x4e5859[_0xba96('0x76')][_0x59f3ec][_0xba96('0x78')]&&_0x4e5859[_0xba96('0x76')][_0x59f3ec][_0xba96('0x79')]&&_0x4e5859['joins'][_0x59f3ec][_0xba96('0x7a')]){_0x37d603[_0x4e5859[_0xba96('0x76')][_0x59f3ec][_0xba96('0x2d')]](_0x4e5859[_0xba96('0x76')][_0x59f3ec][_0xba96('0x79')],null,util[_0xba96('0x71')]('%s.%s\x20=\x20%s.%s',_0x4e5859[_0xba96('0x6c')],_0x4e5859[_0xba96('0x76')][_0x59f3ec][_0xba96('0x78')],_0x4e5859[_0xba96('0x76')][_0x59f3ec][_0xba96('0x79')],_0x4e5859[_0xba96('0x76')][_0x59f3ec][_0xba96('0x7a')]));}}}if(_0x4e5859[_0xba96('0x7c')]){_0x4e5859[_0xba96('0x7c')]=JSON['parse'](_0x4e5859[_0xba96('0x7c')]);_0x37d603[_0xba96('0x3a')](_0x1fea04(_0x4e5859[_0xba96('0x7c')][_0xba96('0x62')]));}_0x44cbaf=_0x37d603[_0xba96('0x89')]();_0x37d603[_0xba96('0x38')](_0x3869a0);_0x37d603[_0xba96('0x1a')](0x0);return;}})[_0xba96('0x21')](function(){if(_0x570b98['output']===_0xba96('0x8a')){return null;}var _0x50fa86=_['merge'](_0x570b98,{'name':_0x570b98[_0xba96('0x8b')]||_0x570b98['name']||_0x4e5859[_0xba96('0x26')],'basename':_0x1aed50,'savename':util[_0xba96('0x71')](_0xba96('0x8c'),_0x570b98[_0xba96('0x26')]||_0x4e5859[_0xba96('0x26')],require(_0xba96('0x8d'))[_0xba96('0x8e')](0x4),_0x570b98[_0xba96('0x8f')]||'csv'),'reportId':_0x4e5859['id'],'reportType':'custom'});return db[_0xba96('0x90')][_0xba96('0x4d')](_0x50fa86,{'raw':!![]});})[_0xba96('0x21')](function(_0x223a25){if(_0x4e5859[_0xba96('0x6c')]===_0xba96('0x91')){_0x44cbaf[_0xba96('0x3a')](_0x4e5859['table']+_0xba96('0x92'),_0x570b98[_0xba96('0x93')],_0x570b98[_0xba96('0x94')]);}else{_0x44cbaf[_0xba96('0x3a')](_0x4e5859[_0xba96('0x6c')]+_0xba96('0x95'),_0x570b98['startDate'],_0x570b98['endDate']);}if(_0x223a25){logger[_0xba96('0x96')](_0xba96('0x97'),_0x44cbaf[_0xba96('0x80')]());require(_0xba96('0x98'))['fork'](path[_0xba96('0x4f')](__dirname,_0xba96('0x99'),_0x223a25[_0xba96('0x8f')]),[_0x223a25['id'],_0x44cbaf[_0xba96('0x80')](),path[_0xba96('0x4f')](__dirname,'../../files/reports',_0x223a25[_0xba96('0x9a')]),_0x1aed50]);return _0x223a25;}else{var _0x1343b9=squel['select']();_0x1343b9['from']('('+_0x44cbaf[_0xba96('0x80')]()+')',_0xba96('0x9b'));_0x1343b9[_0xba96('0x63')](_0xba96('0x9c'),'count');_0x44cbaf[_0xba96('0x38')](_0x570b98[_0xba96('0x38')]||_0x3869a0);_0x44cbaf[_0xba96('0x1a')](_0x570b98[_0xba96('0x1a')]||0x0);return dbH[_0xba96('0x7f')]['query'](_0x1343b9[_0xba96('0x80')](),{'type':dbH[_0xba96('0x7f')][_0xba96('0x81')]['SELECT']})['then'](function(_0x4f35bb){if(!_0x4f35bb[_0xba96('0x35')]){_0x1f323a=0x0;}else{_0x1f323a=_0x4f35bb[0x0][_0xba96('0x1c')]||0x0;}return dbH[_0xba96('0x7f')][_0xba96('0x32')](_0x44cbaf[_0xba96('0x80')](),{'type':dbH['sequelize'][_0xba96('0x81')][_0xba96('0x82')]});})['then'](function(_0x15d4dc){return{'rows':_0x15d4dc||[],'count':_0x1f323a};});}});}exports[_0xba96('0x9d')]=function(_0x411244,_0x1766ac){return runReport(_0x411244[_0xba96('0x43')],_0x411244[_0xba96('0x32')],_0x411244[_0xba96('0x3e')])['then'](respondWithResult(_0x1766ac,null))[_0xba96('0x41')](handleError(_0x1766ac,null));};exports['runReport']=runReport;exports[_0xba96('0x32')]=function(_0x100054,_0x39eba9){var _0x430745=0xa;var _0x4af57c=[_0xba96('0x4f'),_0xba96('0x50'),'right_join','cross_join'];var _0x32e42f={'SUM':_0xba96('0x52'),'COUNT':_0xba96('0x53'),'COUNT DISTINCT':_0xba96('0x54'),'MAX':'MAX(%s)','MIN':'MIN(%s)','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 _0x2dea2b={'SEC_TO_TIME':_0xba96('0x5a'),'DATE':_0xba96('0x5b'),'HOUR':_0xba96('0x85'),'ROUND':_0xba96('0x5c'),'UNIX_TIMESTAMP':_0xba96('0x9e')};var _0x3aba55=function(_0x3291cc){return!_[_0xba96('0x5d')]([_0xba96('0x5e'),_0xba96('0x86'),_0xba96('0x5f'),_0xba96('0x87')],_0x3291cc);};var _0x26f3cd=function(_0x23054d){if(!_0x23054d||!_0x23054d['rules'][_0xba96('0x35')]){return'';}for(var _0x58c5cb='(',_0x10a331=0x0;_0x10a331<_0x23054d[_0xba96('0x60')]['length'];_0x10a331+=0x1){_0x10a331>0x0&&(_0x58c5cb+='\x20'+_0x23054d[_0xba96('0x61')]+'\x20');_0x58c5cb+=_0x23054d[_0xba96('0x60')][_0x10a331]['group']?_0x26f3cd(_0x23054d[_0xba96('0x60')][_0x10a331][_0xba96('0x62')]):_0x23054d['rules'][_0x10a331][_0xba96('0x63')]+'\x20'+_0x23054d[_0xba96('0x60')][_0x10a331]['condition']+(_0x3aba55(_0x23054d['rules'][_0x10a331][_0xba96('0x64')])?'\x20'+_0x23054d[_0xba96('0x60')][_0x10a331][_0xba96('0x65')]:'');}return _0x58c5cb+')';};var _0x5d1f2e={'where':{'id':_0x100054[_0xba96('0x43')]['id']}},_0xf6ef1c,_0x13d296,_0x3c747c,_0x3dec11,_0x50b07e;_0x5d1f2e=_[_0xba96('0x3b')]({},_0x5d1f2e,_0x100054[_0xba96('0x3e')]);return db[_0xba96('0x2a')][_0xba96('0x46')](_0x5d1f2e)[_0xba96('0x21')](function(_0x1a1939){if(_0x1a1939){_0xf6ef1c=_0x1a1939;return _0x1a1939[_0xba96('0x9f')]();}return null;})['then'](function(_0x3dc312){if(_0x3dc312){if(!_0x3dc312[_0xba96('0x35')]){throw new db['Sequelize']['ValidationErrorItem'](_0xba96('0x68'),0x193);}_0x13d296=_0x3dc312;return db[_0xba96('0x69')][_0xba96('0x40')]({'raw':!![]});}return null;})[_0xba96('0x21')](function(_0x564d29){if(_0x564d29){_0x3c747c=_[_0xba96('0x6a')](_0x564d29,'id');var _0x3310d9;var _0x1baefc=squel[_0xba96('0x6b')]();_0x1baefc[_0xba96('0x88')](_0xf6ef1c[_0xba96('0x6c')]);for(var _0x26bcf3=0x0;_0x26bcf3<_0x13d296[_0xba96('0x35')];_0x26bcf3+=0x1){_0x3310d9=_0x13d296[_0x26bcf3][_0xba96('0x6d')]?_0x3c747c[_0x13d296[_0x26bcf3]['MetricId']][_0xba96('0x6e')]:_0x13d296[_0x26bcf3][_0xba96('0x63')];_0x3310d9=_0x13d296[_0x26bcf3][_0xba96('0x6f')]?_[_0xba96('0x70')](_0x32e42f[_0x13d296[_0x26bcf3][_0xba96('0x6f')]],'%s',_0x3310d9):_0x3310d9;_0x3310d9=_0x13d296[_0x26bcf3]['format']?_[_0xba96('0x70')](_0x2dea2b[_0x13d296[_0x26bcf3][_0xba96('0x71')]],'%s',_0x3310d9):_0x3310d9;if(_0x13d296[_0x26bcf3]['groupBy']){_0x1baefc['group'](_0x3310d9);}_0x13d296[_0x26bcf3][_0xba96('0x73')]&&_0x1baefc[_0xba96('0x39')](_0x3310d9,_0x13d296[_0x26bcf3]['orderBy']===_0xba96('0x74')?![]:!![]);_0x1baefc[_0xba96('0x63')](_0x3310d9,_0x13d296[_0x26bcf3][_0xba96('0x75')]||_0x3310d9);}if(_0xf6ef1c[_0xba96('0x76')]){_0xf6ef1c['joins']=JSON[_0xba96('0x77')](_0xf6ef1c['joins']);for(var _0x3644d9=0x0;_0x3644d9<_0xf6ef1c[_0xba96('0x76')][_0xba96('0x35')];_0x3644d9+=0x1){if(_0xf6ef1c[_0xba96('0x76')][_0x3644d9][_0xba96('0x2d')]&&_['includes'](_0x4af57c,_0xf6ef1c['joins'][_0x3644d9][_0xba96('0x2d')])&&_0xf6ef1c[_0xba96('0x76')][_0x3644d9][_0xba96('0x78')]&&_0xf6ef1c[_0xba96('0x76')][_0x3644d9][_0xba96('0x79')]&&_0xf6ef1c['joins'][_0x3644d9]['foreignKey']){_0x1baefc[_0xf6ef1c[_0xba96('0x76')][_0x3644d9][_0xba96('0x2d')]](_0xf6ef1c['joins'][_0x3644d9][_0xba96('0x79')],null,util[_0xba96('0x71')](_0xba96('0x7b'),_0xf6ef1c[_0xba96('0x6c')],_0xf6ef1c[_0xba96('0x76')][_0x3644d9][_0xba96('0x78')],_0xf6ef1c[_0xba96('0x76')][_0x3644d9][_0xba96('0x79')],_0xf6ef1c[_0xba96('0x76')][_0x3644d9][_0xba96('0x7a')]));}}}if(_0xf6ef1c[_0xba96('0x7c')]){_0xf6ef1c['conditions']=JSON[_0xba96('0x77')](_0xf6ef1c[_0xba96('0x7c')]);_0x1baefc['where'](_0x26f3cd(_0xf6ef1c[_0xba96('0x7c')][_0xba96('0x62')]));}_0x50b07e=_0x1baefc['clone']();_0x1baefc[_0xba96('0x38')](_0x430745);_0x1baefc[_0xba96('0x1a')](0x0);logger['debug'](_0xba96('0x7e'),_0x1baefc['toString']());return dbH['sequelize'][_0xba96('0x32')](_0x1baefc['toString'](),{'type':dbH[_0xba96('0x7f')]['QueryTypes'][_0xba96('0x82')]});}})[_0xba96('0x21')](function(){return{'sql':_0x50b07e[_0xba96('0x80')]()};})[_0xba96('0x21')](respondWithResult(_0x39eba9,null))[_0xba96('0x41')](handleError(_0x39eba9,null));};
\ No newline at end of file
index 9a11806..82d2ca6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x040d=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticCustomReport.attributes','define','AnalyticCustomReport','analytics_custom_reports','util','../../config/logger','api'];(function(_0x1b351b,_0xc5f053){var _0x18dbbb=function(_0x4b31ce){while(--_0x4b31ce){_0x1b351b['push'](_0x1b351b['shift']());}};_0x18dbbb(++_0xc5f053);}(_0x040d,0x128));var _0xd040=function(_0x4392af,_0xec5afe){_0x4392af=_0x4392af-0x0;var _0x9fa8eb=_0x040d[_0x4392af];return _0x9fa8eb;};'use strict';var _=require('lodash');var util=require(_0xd040('0x0'));var logger=require(_0xd040('0x1'))(_0xd040('0x2'));var moment=require(_0xd040('0x3'));var BPromise=require(_0xd040('0x4'));var rp=require(_0xd040('0x5'));var fs=require('fs');var path=require(_0xd040('0x6'));var rimraf=require(_0xd040('0x7'));var config=require(_0xd040('0x8'));var attributes=require(_0xd040('0x9'));module['exports']=function(_0x4a29d0,_0x51efad){return _0x4a29d0[_0xd040('0xa')](_0xd040('0xb'),attributes,{'tableName':_0xd040('0xc'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x14fb=['bluebird','request-promise','path','rimraf','../../config/environment','./analyticCustomReport.attributes','exports','define','AnalyticCustomReport','analytics_custom_reports','lodash','util','../../config/logger','api'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x14fb,0x1f4));var _0xb14f=function(_0x4c9fde,_0x41891d){_0x4c9fde=_0x4c9fde-0x0;var _0x50f5ed=_0x14fb[_0x4c9fde];return _0x50f5ed;};'use strict';var _=require(_0xb14f('0x0'));var util=require(_0xb14f('0x1'));var logger=require(_0xb14f('0x2'))(_0xb14f('0x3'));var moment=require('moment');var BPromise=require(_0xb14f('0x4'));var rp=require(_0xb14f('0x5'));var fs=require('fs');var path=require(_0xb14f('0x6'));var rimraf=require(_0xb14f('0x7'));var config=require(_0xb14f('0x8'));var attributes=require(_0xb14f('0x9'));module[_0xb14f('0xa')]=function(_0x44f759,_0xf8e0d2){return _0x44f759[_0xb14f('0xb')](_0xb14f('0xc'),attributes,{'tableName':_0xb14f('0xd'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b15f0b9..541931e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1195=['bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','AnalyticCustomReport,\x20%s,\x20%s','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','lodash','util','moment'];(function(_0x28134e,_0x2cd15e){var _0x56070d=function(_0xf6ebc4){while(--_0xf6ebc4){_0x28134e['push'](_0x28134e['shift']());}};_0x56070d(++_0x2cd15e);}(_0x1195,0x1a6));var _0x5119=function(_0x46bfe1,_0x42d186){_0x46bfe1=_0x46bfe1-0x0;var _0x42c931=_0x1195[_0x46bfe1];return _0x42c931;};'use strict';var _=require(_0x5119('0x0'));var util=require(_0x5119('0x1'));var moment=require(_0x5119('0x2'));var BPromise=require(_0x5119('0x3'));var rs=require(_0x5119('0x4'));var fs=require('fs');var Redis=require(_0x5119('0x5'));var db=require(_0x5119('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x5119('0x7'))(_0x5119('0x8'));var config=require(_0x5119('0x9'));var jayson=require(_0x5119('0xa'));var client=jayson[_0x5119('0xb')][_0x5119('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x251b95,_0x5005f2,_0x3377c2){return new BPromise(function(_0x5d6905,_0x4031fa){return client[_0x5119('0xd')](_0x251b95,_0x3377c2)[_0x5119('0xe')](function(_0x3248b6){logger[_0x5119('0xf')](_0x5119('0x10'),_0x5005f2,'request\x20sent');logger[_0x5119('0x11')](_0x5119('0x12'),_0x5005f2,'request\x20sent',JSON[_0x5119('0x13')](_0x3248b6));if(_0x3248b6['error']){if(_0x3248b6[_0x5119('0x14')]['code']===0x1f4){logger[_0x5119('0x14')](_0x5119('0x10'),_0x5005f2,_0x3248b6[_0x5119('0x14')][_0x5119('0x15')]);return _0x4031fa(_0x3248b6[_0x5119('0x14')]['message']);}logger[_0x5119('0x14')](_0x5119('0x10'),_0x5005f2,_0x3248b6[_0x5119('0x14')]['message']);return _0x5d6905(_0x3248b6[_0x5119('0x14')][_0x5119('0x15')]);}else{logger[_0x5119('0xf')](_0x5119('0x10'),_0x5005f2,_0x5119('0x16'));_0x5d6905(_0x3248b6[_0x5119('0x17')]['message']);}})[_0x5119('0x18')](function(_0xf82294){logger['error'](_0x5119('0x10'),_0x5005f2,_0xf82294);_0x4031fa(_0xf82294);});});}
\ No newline at end of file
+var _0xd351=['code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','error'];(function(_0x2b681f,_0x1954a4){var _0x35868d=function(_0x51ee8d){while(--_0x51ee8d){_0x2b681f['push'](_0x2b681f['shift']());}};_0x35868d(++_0x1954a4);}(_0xd351,0xac));var _0x1d35=function(_0xb39e85,_0x32b889){_0xb39e85=_0xb39e85-0x0;var _0x2832b7=_0xd351[_0xb39e85];return _0x2832b7;};'use strict';var _=require(_0x1d35('0x0'));var util=require('util');var moment=require(_0x1d35('0x1'));var BPromise=require(_0x1d35('0x2'));var rs=require(_0x1d35('0x3'));var fs=require('fs');var Redis=require(_0x1d35('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x1d35('0x5'));var logger=require(_0x1d35('0x6'))(_0x1d35('0x7'));var config=require(_0x1d35('0x8'));var jayson=require(_0x1d35('0x9'));var client=jayson[_0x1d35('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2cb860,_0x5ed2aa,_0x1a2399){return new BPromise(function(_0x156ccd,_0xc0a621){return client['request'](_0x2cb860,_0x1a2399)[_0x1d35('0xb')](function(_0x45bfcf){logger[_0x1d35('0xc')](_0x1d35('0xd'),_0x5ed2aa,_0x1d35('0xe'));logger['debug'](_0x1d35('0xf'),_0x5ed2aa,_0x1d35('0xe'),JSON['stringify'](_0x45bfcf));if(_0x45bfcf[_0x1d35('0x10')]){if(_0x45bfcf[_0x1d35('0x10')][_0x1d35('0x11')]===0x1f4){logger[_0x1d35('0x10')]('AnalyticCustomReport,\x20%s,\x20%s',_0x5ed2aa,_0x45bfcf[_0x1d35('0x10')][_0x1d35('0x12')]);return _0xc0a621(_0x45bfcf['error'][_0x1d35('0x12')]);}logger[_0x1d35('0x10')]('AnalyticCustomReport,\x20%s,\x20%s',_0x5ed2aa,_0x45bfcf[_0x1d35('0x10')][_0x1d35('0x12')]);return _0x156ccd(_0x45bfcf[_0x1d35('0x10')][_0x1d35('0x12')]);}else{logger['info'](_0x1d35('0xd'),_0x5ed2aa,_0x1d35('0xe'));_0x156ccd(_0x45bfcf[_0x1d35('0x13')][_0x1d35('0x12')]);}})[_0x1d35('0x14')](function(_0x21b00d){logger['error'](_0x1d35('0xd'),_0x5ed2aa,_0x21b00d);_0xc0a621(_0x21b00d);});});}
\ No newline at end of file
index f32323f..86d1624 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x196a=['index','/:id','show','/:id/preview','preview','/:id/run','/:id/query','query','post','put','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../config/environment','./analyticCustomReport.controller','get','isAuthenticated'];(function(_0x1f8d38,_0x2b832c){var _0x59fca6=function(_0x11d6ec){while(--_0x11d6ec){_0x1f8d38['push'](_0x1f8d38['shift']());}};_0x59fca6(++_0x2b832c);}(_0x196a,0xf3));var _0xa196=function(_0x4c948c,_0x1150bc){_0x4c948c=_0x4c948c-0x0;var _0x73b922=_0x196a[_0x4c948c];return _0x73b922;};'use strict';var multer=require(_0xa196('0x0'));var util=require(_0xa196('0x1'));var path=require(_0xa196('0x2'));var timeout=require(_0xa196('0x3'));var express=require('express');var router=express[_0xa196('0x4')]();var fs_extra=require(_0xa196('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xa196('0x6'));var controller=require(_0xa196('0x7'));router[_0xa196('0x8')]('/',auth[_0xa196('0x9')](),controller[_0xa196('0xa')]);router[_0xa196('0x8')](_0xa196('0xb'),auth[_0xa196('0x9')](),controller[_0xa196('0xc')]);router[_0xa196('0x8')](_0xa196('0xd'),auth[_0xa196('0x9')](),controller[_0xa196('0xe')]);router[_0xa196('0x8')](_0xa196('0xf'),auth[_0xa196('0x9')](),controller['run']);router[_0xa196('0x8')](_0xa196('0x10'),auth[_0xa196('0x9')](),controller[_0xa196('0x11')]);router[_0xa196('0x12')]('/',auth[_0xa196('0x9')](),controller['create']);router[_0xa196('0x13')](_0xa196('0xb'),auth[_0xa196('0x9')](),controller[_0xa196('0x14')]);router[_0xa196('0x15')]('/:id',auth[_0xa196('0x9')](),controller['destroy']);module[_0xa196('0x16')]=router;
\ No newline at end of file
+var _0x2086=['get','isAuthenticated','index','/:id','show','/:id/preview','preview','run','/:id/query','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticCustomReport.controller'];(function(_0x543f3e,_0x16bb08){var _0x584efa=function(_0x5eb886){while(--_0x5eb886){_0x543f3e['push'](_0x543f3e['shift']());}};_0x584efa(++_0x16bb08);}(_0x2086,0x154));var _0x6208=function(_0x5a07ba,_0x2ee34f){_0x5a07ba=_0x5a07ba-0x0;var _0x55ea4b=_0x2086[_0x5a07ba];return _0x55ea4b;};'use strict';var multer=require(_0x6208('0x0'));var util=require(_0x6208('0x1'));var path=require(_0x6208('0x2'));var timeout=require(_0x6208('0x3'));var express=require(_0x6208('0x4'));var router=express[_0x6208('0x5')]();var fs_extra=require(_0x6208('0x6'));var auth=require(_0x6208('0x7'));var interaction=require(_0x6208('0x8'));var config=require('../../config/environment');var controller=require(_0x6208('0x9'));router[_0x6208('0xa')]('/',auth[_0x6208('0xb')](),controller[_0x6208('0xc')]);router[_0x6208('0xa')](_0x6208('0xd'),auth[_0x6208('0xb')](),controller[_0x6208('0xe')]);router[_0x6208('0xa')](_0x6208('0xf'),auth[_0x6208('0xb')](),controller[_0x6208('0x10')]);router[_0x6208('0xa')]('/:id/run',auth[_0x6208('0xb')](),controller[_0x6208('0x11')]);router[_0x6208('0xa')](_0x6208('0x12'),auth[_0x6208('0xb')](),controller['query']);router[_0x6208('0x13')]('/',auth[_0x6208('0xb')](),controller[_0x6208('0x14')]);router[_0x6208('0x15')](_0x6208('0xd'),auth[_0x6208('0xb')](),controller[_0x6208('0x16')]);router[_0x6208('0x17')](_0x6208('0xd'),auth[_0x6208('0xb')](),controller[_0x6208('0x18')]);module['exports']=router;
\ No newline at end of file
index 568a183..f3e3f6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d17=['STRING','TEXT','sequelize','exports'];(function(_0x4ae829,_0x2c842c){var _0x256b31=function(_0x34f104){while(--_0x34f104){_0x4ae829['push'](_0x4ae829['shift']());}};_0x256b31(++_0x2c842c);}(_0x2d17,0x17e));var _0x72d1=function(_0x2c3638,_0x2a6cc8){_0x2c3638=_0x2c3638-0x0;var _0x420ce7=_0x2d17[_0x2c3638];return _0x420ce7;};'use strict';var Sequelize=require(_0x72d1('0x0'));module[_0x72d1('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x72d1('0x2')]},'parent':{'type':Sequelize[_0x72d1('0x2')]},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize[_0x72d1('0x3')]},'joins':{'type':Sequelize[_0x72d1('0x3')]}};
\ No newline at end of file
+var _0x98a8=['sequelize','exports','STRING','TEXT'];(function(_0x479624,_0x215e0e){var _0x200b44=function(_0x57ba16){while(--_0x57ba16){_0x479624['push'](_0x479624['shift']());}};_0x200b44(++_0x215e0e);}(_0x98a8,0x12c));var _0x898a=function(_0x59549c,_0x42c1cd){_0x59549c=_0x59549c-0x0;var _0x2912ac=_0x98a8[_0x59549c];return _0x2912ac;};'use strict';var Sequelize=require(_0x898a('0x0'));module[_0x898a('0x1')]={'name':{'type':Sequelize[_0x898a('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x898a('0x2')]},'parent':{'type':Sequelize[_0x898a('0x2')]},'table':{'type':Sequelize[_0x898a('0x2')]},'conditions':{'type':Sequelize[_0x898a('0x3')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index ad65d4d..d98e377 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d38=['Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','savename','select','countTable','COUNT(*)','sequelize','run','SEC_TO_TIME(%s)','rimraf','zip-dir','fast-json-patch','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','dbH','sendStatus','status','json','offset','undefined','limit','count','Content-Range','save','update','then','get','destroy','error','stack','name','send','index','map','rawAttributes','type','key','model','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','AnalyticDefaultReport','findAll','rows','show','keys','fields','find','catch','create','body','user','role','Reports','autoAssociation','UserProfileResource','DefaultReports','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','preview','join','right_join','cross_join','SUM(%s)','COUNT(%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20EMPTY','rules','operator','group','field','condition','value','getFields','ValidationErrorItem','AnalyticMetric','keyBy','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','alias','joins','parse','parentKey','foreignTable','foreignKey','conditions','clone','debug','toString','QueryTypes','SELECT','left_join','COUNT(DISTINCT\x20%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','Sequelize','Please\x20insert\x20at\x20least\x20one\x20field','DESC','%s.%s\x20=\x20%s.%s','output','web','fullPath','randomstring','generate','csv','default','AnalyticExtractedReport','cdr','startDate','endDate','info'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x6d38,0x1ef));var _0x86d3=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x6d38[_0x4154a6];return _0x3b2786;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x86d3('0x0'));var zipdir=require(_0x86d3('0x1'));var jsonpatch=require(_0x86d3('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x86d3('0x3'));var Mustache=require('mustache');var util=require(_0x86d3('0x4'));var path=require(_0x86d3('0x5'));var sox=require(_0x86d3('0x6'));var csv=require('to-csv');var ejs=require(_0x86d3('0x7'));var fs=require('fs');var fs_extra=require(_0x86d3('0x8'));var _=require(_0x86d3('0x9'));var squel=require(_0x86d3('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x86d3('0xb'));var toCsv=require(_0x86d3('0xc'));var querystring=require(_0x86d3('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x86d3('0xe'));var qs=require(_0x86d3('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x86d3('0x10'))(_0x86d3('0x11'));var utils=require('../../config/utils');var config=require(_0x86d3('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x86d3('0x13'))['db'];var dbH=require(_0x86d3('0x13'))[_0x86d3('0x14')];function respondWithStatusCode(_0x26d64c,_0xe1b3d7){_0xe1b3d7=_0xe1b3d7||0xcc;return function(_0x1b8d0a){if(_0x1b8d0a){return _0x26d64c[_0x86d3('0x15')](_0xe1b3d7);}return _0x26d64c[_0x86d3('0x16')](_0xe1b3d7)['end']();};}function respondWithResult(_0x1c1ba8,_0x1f35cf){_0x1f35cf=_0x1f35cf||0xc8;return function(_0x356e7d){if(_0x356e7d){return _0x1c1ba8[_0x86d3('0x16')](_0x1f35cf)[_0x86d3('0x17')](_0x356e7d);}};}function respondWithFilteredResult(_0x34fb3b,_0x1ff008){return function(_0x44436d){if(_0x44436d){var _0x53b437=typeof _0x1ff008[_0x86d3('0x18')]===_0x86d3('0x19')&&typeof _0x1ff008[_0x86d3('0x1a')]===_0x86d3('0x19');var _0x46feec=_0x44436d[_0x86d3('0x1b')];var _0x33e459=_0x53b437?0x0:_0x1ff008[_0x86d3('0x18')];var _0x9b76f2=_0x53b437?_0x44436d['count']:_0x1ff008[_0x86d3('0x18')]+_0x1ff008['limit'];var _0x6ced9e;if(_0x9b76f2>=_0x46feec){_0x9b76f2=_0x46feec;_0x6ced9e=0xc8;}else{_0x6ced9e=0xce;}_0x34fb3b['status'](_0x6ced9e);return _0x34fb3b['set'](_0x86d3('0x1c'),_0x33e459+'-'+_0x9b76f2+'/'+_0x46feec)[_0x86d3('0x17')](_0x44436d);}return null;};}function patchUpdates(_0x988066){return function(_0x1720ae){try{jsonpatch['apply'](_0x1720ae,_0x988066,!![]);}catch(_0x2901de){return BPromise['reject'](_0x2901de);}return _0x1720ae[_0x86d3('0x1d')]();};}function saveUpdates(_0x3fdf67,_0x1ce849){return function(_0x5b990d){if(_0x5b990d){return _0x5b990d[_0x86d3('0x1e')](_0x3fdf67)[_0x86d3('0x1f')](function(_0x1fa4ac){return _0x1fa4ac;});}return null;};}function removeEntity(_0x4bf5b8,_0x58ba51){return function(_0x26262a){if(_0x26262a){return _0x26262a['destroy']()[_0x86d3('0x1f')](function(){var _0x1bea5e=_0x26262a[_0x86d3('0x20')]({'plain':!![]});var _0x3c5fe4='DefaultReports';return db['UserProfileResource'][_0x86d3('0x21')]({'where':{'type':_0x3c5fe4,'resourceId':_0x1bea5e['id']}})[_0x86d3('0x1f')](function(){return _0x26262a;});})['then'](function(){_0x4bf5b8[_0x86d3('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x42413c,_0x41e2f0){return function(_0x287b96){if(!_0x287b96){_0x42413c[_0x86d3('0x15')](0x194);}return _0x287b96;};}function handleError(_0x11a6fd,_0x14c9ff){_0x14c9ff=_0x14c9ff||0x1f4;return function(_0x1f203e){logger[_0x86d3('0x22')](_0x1f203e[_0x86d3('0x23')]);if(_0x1f203e[_0x86d3('0x24')]){delete _0x1f203e[_0x86d3('0x24')];}_0x11a6fd[_0x86d3('0x16')](_0x14c9ff)[_0x86d3('0x25')](_0x1f203e);};}exports[_0x86d3('0x26')]=function(_0x5b09f6,_0x120a0c){var _0x403be3={},_0x2bda35={},_0x31cefe={'count':0x0,'rows':[]};var _0x7709f0=_[_0x86d3('0x27')](db['AnalyticDefaultReport'][_0x86d3('0x28')],function(_0x5c71df){return{'name':_0x5c71df['fieldName'],'type':_0x5c71df[_0x86d3('0x29')][_0x86d3('0x2a')]};});_0x2bda35[_0x86d3('0x2b')]=_['map'](_0x7709f0,_0x86d3('0x24'));_0x2bda35[_0x86d3('0x2c')]=_['keys'](_0x5b09f6[_0x86d3('0x2c')]);_0x2bda35[_0x86d3('0x2d')]=_[_0x86d3('0x2e')](_0x2bda35[_0x86d3('0x2b')],_0x2bda35[_0x86d3('0x2c')]);_0x403be3[_0x86d3('0x2f')]=_[_0x86d3('0x2e')](_0x2bda35[_0x86d3('0x2b')],qs['fields'](_0x5b09f6['query']['fields']));_0x403be3[_0x86d3('0x2f')]=_0x403be3['attributes'][_0x86d3('0x30')]?_0x403be3['attributes']:_0x2bda35[_0x86d3('0x2b')];if(!_0x5b09f6[_0x86d3('0x2c')][_0x86d3('0x31')](_0x86d3('0x32'))){_0x403be3[_0x86d3('0x1a')]=qs[_0x86d3('0x1a')](_0x5b09f6[_0x86d3('0x2c')]['limit']);_0x403be3[_0x86d3('0x18')]=qs[_0x86d3('0x18')](_0x5b09f6['query'][_0x86d3('0x18')]);}_0x403be3[_0x86d3('0x33')]=qs[_0x86d3('0x34')](_0x5b09f6[_0x86d3('0x2c')]['sort']);_0x403be3[_0x86d3('0x35')]=qs[_0x86d3('0x2d')](_[_0x86d3('0x36')](_0x5b09f6['query'],_0x2bda35[_0x86d3('0x2d')]),_0x7709f0);if(_0x5b09f6[_0x86d3('0x2c')][_0x86d3('0x37')]){_0x403be3[_0x86d3('0x35')]=_[_0x86d3('0x38')](_0x403be3[_0x86d3('0x35')],{'$or':_[_0x86d3('0x27')](_0x7709f0,function(_0x436065){if(_0x436065['type']!==_0x86d3('0x39')){var _0x470978={};_0x470978[_0x436065[_0x86d3('0x24')]]={'$like':'%'+_0x5b09f6[_0x86d3('0x2c')]['filter']+'%'};return _0x470978;}})});}_0x403be3=_[_0x86d3('0x38')]({},_0x403be3,_0x5b09f6[_0x86d3('0x3a')]);var _0x6f72be={'where':_0x403be3[_0x86d3('0x35')]};return db['AnalyticDefaultReport']['count'](_0x6f72be)[_0x86d3('0x1f')](function(_0x4f422b){_0x31cefe['count']=_0x4f422b;if(_0x5b09f6[_0x86d3('0x2c')][_0x86d3('0x3b')]){_0x403be3[_0x86d3('0x3c')]=[{'all':!![]}];}return db[_0x86d3('0x3d')][_0x86d3('0x3e')](_0x403be3);})['then'](function(_0x2a5f6c){_0x31cefe[_0x86d3('0x3f')]=_0x2a5f6c;return _0x31cefe;})[_0x86d3('0x1f')](respondWithFilteredResult(_0x120a0c,_0x403be3))['catch'](handleError(_0x120a0c,null));};exports[_0x86d3('0x40')]=function(_0x810d10,_0x5dfae8){var _0x369f68={'raw':!![],'where':{'id':_0x810d10['params']['id']}},_0xcf6c9e={};_0xcf6c9e['model']=_['keys'](db[_0x86d3('0x3d')][_0x86d3('0x28')]);_0xcf6c9e[_0x86d3('0x2c')]=_[_0x86d3('0x41')](_0x810d10[_0x86d3('0x2c')]);_0xcf6c9e[_0x86d3('0x2d')]=_['intersection'](_0xcf6c9e[_0x86d3('0x2b')],_0xcf6c9e[_0x86d3('0x2c')]);_0x369f68['attributes']=_[_0x86d3('0x2e')](_0xcf6c9e[_0x86d3('0x2b')],qs[_0x86d3('0x42')](_0x810d10[_0x86d3('0x2c')][_0x86d3('0x42')]));_0x369f68[_0x86d3('0x2f')]=_0x369f68['attributes'][_0x86d3('0x30')]?_0x369f68[_0x86d3('0x2f')]:_0xcf6c9e['model'];if(_0x810d10[_0x86d3('0x2c')][_0x86d3('0x3b')]){_0x369f68[_0x86d3('0x3c')]=[{'all':!![]}];}_0x369f68=_[_0x86d3('0x38')]({},_0x369f68,_0x810d10[_0x86d3('0x3a')]);return db['AnalyticDefaultReport'][_0x86d3('0x43')](_0x369f68)[_0x86d3('0x1f')](handleEntityNotFound(_0x5dfae8,null))[_0x86d3('0x1f')](respondWithResult(_0x5dfae8,null))[_0x86d3('0x44')](handleError(_0x5dfae8,null));};exports[_0x86d3('0x45')]=function(_0x7af7b3,_0x1a4345){return db[_0x86d3('0x3d')][_0x86d3('0x45')](_0x7af7b3[_0x86d3('0x46')],{})[_0x86d3('0x1f')](function(_0x1236ea){var _0x4ea940=_0x7af7b3[_0x86d3('0x47')][_0x86d3('0x20')]({'plain':!![]});if(!_0x4ea940)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4ea940[_0x86d3('0x48')]===_0x86d3('0x47')){var _0x197047=_0x1236ea[_0x86d3('0x20')]({'plain':!![]});var _0x1dcff0=_0x86d3('0x49');return db['UserProfileSection']['find']({'where':{'name':_0x1dcff0,'userProfileId':_0x4ea940['userProfileId']},'raw':!![]})['then'](function(_0x159253){if(_0x159253&&_0x159253[_0x86d3('0x4a')]===0x0){return db[_0x86d3('0x4b')][_0x86d3('0x45')]({'name':_0x197047[_0x86d3('0x24')],'resourceId':_0x197047['id'],'type':_0x86d3('0x4c'),'sectionId':_0x159253['id']},{})[_0x86d3('0x1f')](function(){return _0x1236ea;});}else{return _0x1236ea;}})['catch'](function(_0x2afb07){logger[_0x86d3('0x22')](_0x86d3('0x4d'),_0x2afb07);throw _0x2afb07;});}return _0x1236ea;})[_0x86d3('0x1f')](respondWithResult(_0x1a4345,0xc9))[_0x86d3('0x44')](handleError(_0x1a4345,null));};exports[_0x86d3('0x1e')]=function(_0x34935f,_0x4c8828){if(_0x34935f[_0x86d3('0x46')]['id']){delete _0x34935f['body']['id'];}return db[_0x86d3('0x3d')][_0x86d3('0x43')]({'where':{'id':_0x34935f[_0x86d3('0x4e')]['id']}})[_0x86d3('0x1f')](handleEntityNotFound(_0x4c8828,null))[_0x86d3('0x1f')](saveUpdates(_0x34935f['body'],null))[_0x86d3('0x1f')](respondWithResult(_0x4c8828,null))[_0x86d3('0x44')](handleError(_0x4c8828,null));};exports[_0x86d3('0x21')]=function(_0x4e10d9,_0x4ad164){return db['AnalyticDefaultReport'][_0x86d3('0x43')]({'where':{'id':_0x4e10d9['params']['id']}})[_0x86d3('0x1f')](handleEntityNotFound(_0x4ad164,null))[_0x86d3('0x1f')](removeEntity(_0x4ad164,null))[_0x86d3('0x44')](handleError(_0x4ad164,null));};exports[_0x86d3('0x4f')]=function(_0x5963bb,_0x4cd835){var _0x551806=0xa;var _0x28655a=[_0x86d3('0x50'),'left_join',_0x86d3('0x51'),_0x86d3('0x52')];var _0xa085b2={'SUM':_0x86d3('0x53'),'COUNT':_0x86d3('0x54'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x86d3('0x55'),'MIN':_0x86d3('0x56'),'AVG':_0x86d3('0x57'),'GROUP_CONCAT':_0x86d3('0x58'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x86d3('0x59')};var _0x41fad7={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x86d3('0x5a'),'HOUR':_0x86d3('0x5b'),'ROUND':_0x86d3('0x5c'),'UNIX_TIMESTAMP':_0x86d3('0x5d')};var _0x4598d4=function(_0x4029a4){return!_[_0x86d3('0x5e')](['IS\x20NULL','IS\x20NOT\x20NULL',_0x86d3('0x5f'),'IS\x20NOT\x20EMPTY'],_0x4029a4);};var _0x528ca8=function(_0x58e4b6){if(!_0x58e4b6||!_0x58e4b6[_0x86d3('0x60')]['length']){return'';}for(var _0x254ac3='(',_0x5f2ed6=0x0;_0x5f2ed6<_0x58e4b6[_0x86d3('0x60')][_0x86d3('0x30')];_0x5f2ed6+=0x1){_0x5f2ed6>0x0&&(_0x254ac3+='\x20'+_0x58e4b6[_0x86d3('0x61')]+'\x20');_0x254ac3+=_0x58e4b6['rules'][_0x5f2ed6]['group']?_0x528ca8(_0x58e4b6[_0x86d3('0x60')][_0x5f2ed6][_0x86d3('0x62')]):_0x58e4b6[_0x86d3('0x60')][_0x5f2ed6][_0x86d3('0x63')]+'\x20'+_0x58e4b6[_0x86d3('0x60')][_0x5f2ed6][_0x86d3('0x64')]+(_0x4598d4(_0x58e4b6[_0x86d3('0x60')][_0x5f2ed6][_0x86d3('0x64')])?'\x20'+_0x58e4b6[_0x86d3('0x60')][_0x5f2ed6][_0x86d3('0x65')]:'');}return _0x254ac3+')';};var _0x1e3479={'where':{'id':_0x5963bb[_0x86d3('0x4e')]['id']}},_0x265beb,_0xfaf168,_0xf0dbbb,_0x3f978c,_0x5e1835;_0x1e3479=_[_0x86d3('0x38')]({},_0x1e3479,_0x5963bb['options']);return db[_0x86d3('0x3d')][_0x86d3('0x43')](_0x1e3479)[_0x86d3('0x1f')](function(_0x52dc99){if(_0x52dc99){_0x265beb=_0x52dc99;return _0x52dc99[_0x86d3('0x66')]();}return null;})[_0x86d3('0x1f')](function(_0x45e8d9){if(_0x45e8d9){if(!_0x45e8d9[_0x86d3('0x30')]){throw new db['Sequelize'][(_0x86d3('0x67'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0xfaf168=_0x45e8d9;return db[_0x86d3('0x68')][_0x86d3('0x3e')]({'raw':!![]});}return null;})[_0x86d3('0x1f')](function(_0x2d4bc1){if(_0x2d4bc1){_0xf0dbbb=_[_0x86d3('0x69')](_0x2d4bc1,'id');var _0x56fd96;var _0x3cc1d8=squel['select']();_0x3cc1d8[_0x86d3('0x6a')](_0x265beb[_0x86d3('0x6b')]);for(var _0x5866fe=0x0;_0x5866fe<_0xfaf168[_0x86d3('0x30')];_0x5866fe+=0x1){_0x56fd96=_0xfaf168[_0x5866fe][_0x86d3('0x6c')]?_0xf0dbbb[_0xfaf168[_0x5866fe][_0x86d3('0x6c')]][_0x86d3('0x6d')]:_0xfaf168[_0x5866fe][_0x86d3('0x63')];_0x56fd96=_0xfaf168[_0x5866fe][_0x86d3('0x6e')]?_[_0x86d3('0x6f')](_0xa085b2[_0xfaf168[_0x5866fe]['function']],'%s',_0x56fd96):_0x56fd96;_0x56fd96=_0xfaf168[_0x5866fe][_0x86d3('0x70')]?_[_0x86d3('0x6f')](_0x41fad7[_0xfaf168[_0x5866fe][_0x86d3('0x70')]],'%s',_0x56fd96):_0x56fd96;if(_0xfaf168[_0x5866fe][_0x86d3('0x71')]){_0x3cc1d8[_0x86d3('0x62')](_0x56fd96);}_0xfaf168[_0x5866fe]['orderBy']&&_0x3cc1d8[_0x86d3('0x33')](_0x56fd96,_0xfaf168[_0x5866fe][_0x86d3('0x72')]==='DESC'?![]:!![]);_0x3cc1d8[_0x86d3('0x63')](_0x56fd96,_0xfaf168[_0x5866fe][_0x86d3('0x73')]||_0x56fd96);}if(_0x265beb[_0x86d3('0x74')]){_0x265beb[_0x86d3('0x74')]=JSON[_0x86d3('0x75')](_0x265beb[_0x86d3('0x74')]);for(var _0x1bf5ba=0x0;_0x1bf5ba<_0x265beb[_0x86d3('0x74')][_0x86d3('0x30')];_0x1bf5ba+=0x1){if(_0x265beb[_0x86d3('0x74')][_0x1bf5ba][_0x86d3('0x29')]&&_[_0x86d3('0x5e')](_0x28655a,_0x265beb[_0x86d3('0x74')][_0x1bf5ba][_0x86d3('0x29')])&&_0x265beb['joins'][_0x1bf5ba][_0x86d3('0x76')]&&_0x265beb[_0x86d3('0x74')][_0x1bf5ba][_0x86d3('0x77')]&&_0x265beb[_0x86d3('0x74')][_0x1bf5ba]['foreignKey']){_0x3cc1d8[_0x265beb[_0x86d3('0x74')][_0x1bf5ba][_0x86d3('0x29')]](_0x265beb[_0x86d3('0x74')][_0x1bf5ba][_0x86d3('0x77')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x265beb[_0x86d3('0x6b')],_0x265beb['joins'][_0x1bf5ba][_0x86d3('0x76')],_0x265beb['joins'][_0x1bf5ba]['foreignTable'],_0x265beb[_0x86d3('0x74')][_0x1bf5ba][_0x86d3('0x78')]));}}}if(_0x265beb[_0x86d3('0x79')]){_0x265beb[_0x86d3('0x79')]=JSON[_0x86d3('0x75')](_0x265beb['conditions']);_0x3cc1d8[_0x86d3('0x35')](_0x528ca8(_0x265beb[_0x86d3('0x79')]['group']));}_0x5e1835=_0x3cc1d8[_0x86d3('0x7a')]();_0x3cc1d8[_0x86d3('0x1a')](_0x551806);_0x3cc1d8['offset'](0x0);logger[_0x86d3('0x7b')]('Limited\x20Query:',_0x3cc1d8[_0x86d3('0x7c')]());return dbH['sequelize']['query'](_0x3cc1d8[_0x86d3('0x7c')](),{'type':dbH['sequelize'][_0x86d3('0x7d')][_0x86d3('0x7e')]});}})[_0x86d3('0x1f')](respondWithResult(_0x4cd835,null))[_0x86d3('0x44')](handleError(_0x4cd835,null));};function runReport(_0x3193d5,_0x3a1acc,_0x268c93){var _0x3b989c=_0x3a1acc['name'];var _0x245b39=0xa;var _0x158f56=[_0x86d3('0x50'),_0x86d3('0x7f'),_0x86d3('0x51'),'cross_join'];var _0x3d8b35={'SUM':_0x86d3('0x53'),'COUNT':_0x86d3('0x54'),'COUNT DISTINCT':_0x86d3('0x80'),'MAX':_0x86d3('0x55'),'MIN':_0x86d3('0x56'),'AVG':_0x86d3('0x57'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x86d3('0x81'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0xca2e0={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':_0x86d3('0x5b'),'ROUND':_0x86d3('0x5c'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x1b503a=function(_0x24410c){return!_[_0x86d3('0x5e')]([_0x86d3('0x82'),_0x86d3('0x83'),_0x86d3('0x5f'),_0x86d3('0x84')],_0x24410c);};var _0x5f4a38=function(_0x593b85){if(!_0x593b85||!_0x593b85[_0x86d3('0x60')][_0x86d3('0x30')]){return'';}for(var _0x3fac94='(',_0x28d98e=0x0;_0x28d98e<_0x593b85[_0x86d3('0x60')][_0x86d3('0x30')];_0x28d98e+=0x1){_0x28d98e>0x0&&(_0x3fac94+='\x20'+_0x593b85['operator']+'\x20');_0x3fac94+=_0x593b85[_0x86d3('0x60')][_0x28d98e][_0x86d3('0x62')]?_0x5f4a38(_0x593b85[_0x86d3('0x60')][_0x28d98e][_0x86d3('0x62')]):_0x593b85[_0x86d3('0x60')][_0x28d98e][_0x86d3('0x63')]+'\x20'+_0x593b85[_0x86d3('0x60')][_0x28d98e][_0x86d3('0x64')]+(_0x1b503a(_0x593b85[_0x86d3('0x60')][_0x28d98e]['condition'])?'\x20'+_0x593b85[_0x86d3('0x60')][_0x28d98e][_0x86d3('0x65')]:'');}return _0x3fac94+')';};var _0x4b871b={'where':{'id':_0x3193d5['id']}},_0x584a57,_0x36ee46,_0x1cbc3a,_0x682a6d,_0x5004cd;_0x4b871b=_[_0x86d3('0x38')]({},_0x4b871b,_0x268c93);return db[_0x86d3('0x3d')][_0x86d3('0x43')](_0x4b871b)[_0x86d3('0x1f')](function(_0x3d3e7f){if(_0x3d3e7f){_0x584a57=_0x3d3e7f;return _0x3d3e7f['getFields']();}return null;})[_0x86d3('0x1f')](function(_0x1aaf08){if(_0x1aaf08){if(!_0x1aaf08['length']){throw new db[(_0x86d3('0x85'))][(_0x86d3('0x67'))](_0x86d3('0x86'),0x193);}_0x36ee46=_0x1aaf08;return db[_0x86d3('0x68')]['findAll']({'raw':!![]});}return null;})[_0x86d3('0x1f')](function(_0x2896e1){if(_0x2896e1){_0x1cbc3a=_[_0x86d3('0x69')](_0x2896e1,'id');var _0x18295c;var _0x44af1c=squel['select']();_0x44af1c[_0x86d3('0x6a')](_0x584a57[_0x86d3('0x6b')]);for(var _0x3582a2=0x0;_0x3582a2<_0x36ee46[_0x86d3('0x30')];_0x3582a2+=0x1){_0x18295c=_0x36ee46[_0x3582a2][_0x86d3('0x6c')]?_0x1cbc3a[_0x36ee46[_0x3582a2][_0x86d3('0x6c')]][_0x86d3('0x6d')]:_0x36ee46[_0x3582a2][_0x86d3('0x63')];_0x18295c=_0x36ee46[_0x3582a2][_0x86d3('0x6e')]?_[_0x86d3('0x6f')](_0x3d8b35[_0x36ee46[_0x3582a2]['function']],'%s',_0x18295c):_0x18295c;_0x18295c=_0x36ee46[_0x3582a2]['format']?_[_0x86d3('0x6f')](_0xca2e0[_0x36ee46[_0x3582a2][_0x86d3('0x70')]],'%s',_0x18295c):_0x18295c;if(_0x36ee46[_0x3582a2]['groupBy']){_0x44af1c[_0x86d3('0x62')](_0x18295c);}_0x36ee46[_0x3582a2][_0x86d3('0x72')]&&_0x44af1c[_0x86d3('0x33')](_0x18295c,_0x36ee46[_0x3582a2][_0x86d3('0x72')]===_0x86d3('0x87')?![]:!![]);_0x44af1c[_0x86d3('0x63')](_0x18295c,_0x36ee46[_0x3582a2][_0x86d3('0x73')]||_0x18295c);}if(_0x584a57[_0x86d3('0x74')]){_0x584a57[_0x86d3('0x74')]=JSON['parse'](_0x584a57['joins']);for(var _0x48a6d7=0x0;_0x48a6d7<_0x584a57['joins'][_0x86d3('0x30')];_0x48a6d7+=0x1){if(_0x584a57[_0x86d3('0x74')][_0x48a6d7][_0x86d3('0x29')]&&_[_0x86d3('0x5e')](_0x158f56,_0x584a57[_0x86d3('0x74')][_0x48a6d7][_0x86d3('0x29')])&&_0x584a57[_0x86d3('0x74')][_0x48a6d7]['parentKey']&&_0x584a57[_0x86d3('0x74')][_0x48a6d7][_0x86d3('0x77')]&&_0x584a57[_0x86d3('0x74')][_0x48a6d7][_0x86d3('0x78')]){_0x44af1c[_0x584a57['joins'][_0x48a6d7][_0x86d3('0x29')]](_0x584a57['joins'][_0x48a6d7][_0x86d3('0x77')],null,util[_0x86d3('0x70')](_0x86d3('0x88'),_0x584a57[_0x86d3('0x6b')],_0x584a57[_0x86d3('0x74')][_0x48a6d7]['parentKey'],_0x584a57['joins'][_0x48a6d7][_0x86d3('0x77')],_0x584a57['joins'][_0x48a6d7][_0x86d3('0x78')]));}}}if(_0x584a57['conditions']){_0x584a57[_0x86d3('0x79')]=JSON['parse'](_0x584a57['conditions']);_0x44af1c[_0x86d3('0x35')](_0x5f4a38(_0x584a57[_0x86d3('0x79')][_0x86d3('0x62')]));}_0x5004cd=_0x44af1c[_0x86d3('0x7a')]();_0x44af1c[_0x86d3('0x1a')](_0x245b39);_0x44af1c[_0x86d3('0x18')](0x0);return;}})[_0x86d3('0x1f')](function(){if(_0x3a1acc[_0x86d3('0x89')]===_0x86d3('0x8a')){return null;}var _0x120a85=_[_0x86d3('0x38')](_0x3a1acc,{'name':_0x3a1acc[_0x86d3('0x8b')]||_0x3a1acc[_0x86d3('0x24')]||_0x584a57[_0x86d3('0x24')],'basename':_0x3b989c,'savename':util[_0x86d3('0x70')]('%s-%s.%s',_0x3a1acc['name']||_0x584a57['name'],require(_0x86d3('0x8c'))[_0x86d3('0x8d')](0x4),_0x3a1acc[_0x86d3('0x89')]||_0x86d3('0x8e')),'reportId':_0x584a57['id'],'reportType':_0x86d3('0x8f')});return db[_0x86d3('0x90')][_0x86d3('0x45')](_0x120a85,{'raw':!![]});})[_0x86d3('0x1f')](function(_0x10e23d){if(_0x584a57[_0x86d3('0x6b')]===_0x86d3('0x91')){_0x5004cd['where'](_0x584a57[_0x86d3('0x6b')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x3a1acc[_0x86d3('0x92')],_0x3a1acc[_0x86d3('0x93')]);}else{_0x5004cd[_0x86d3('0x35')](_0x584a57[_0x86d3('0x6b')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x3a1acc[_0x86d3('0x92')],_0x3a1acc[_0x86d3('0x93')]);}if(_0x10e23d){logger[_0x86d3('0x94')](_0x86d3('0x95'),_0x5004cd[_0x86d3('0x7c')]());require(_0x86d3('0x96'))[_0x86d3('0x97')](path[_0x86d3('0x50')](__dirname,_0x86d3('0x98'),_0x10e23d[_0x86d3('0x89')]),[_0x10e23d['id'],_0x5004cd[_0x86d3('0x7c')](),path[_0x86d3('0x50')](__dirname,_0x86d3('0x99'),_0x10e23d[_0x86d3('0x9a')]),_0x3b989c]);return _0x10e23d;}else{var _0x428b11=squel[_0x86d3('0x9b')]();_0x428b11[_0x86d3('0x6a')]('('+_0x5004cd['toString']()+')',_0x86d3('0x9c'));_0x428b11[_0x86d3('0x63')](_0x86d3('0x9d'),_0x86d3('0x1b'));_0x5004cd['limit'](_0x3a1acc[_0x86d3('0x1a')]||_0x245b39);_0x5004cd['offset'](_0x3a1acc['offset']||0x0);return dbH[_0x86d3('0x9e')][_0x86d3('0x2c')](_0x428b11[_0x86d3('0x7c')](),{'type':dbH[_0x86d3('0x9e')][_0x86d3('0x7d')][_0x86d3('0x7e')]})[_0x86d3('0x1f')](function(_0x4777f1){if(!_0x4777f1['length']){_0x682a6d=0x0;}else{_0x682a6d=_0x4777f1[0x0]['count']||0x0;}return dbH['sequelize'][_0x86d3('0x2c')](_0x5004cd[_0x86d3('0x7c')](),{'type':dbH[_0x86d3('0x9e')]['QueryTypes'][_0x86d3('0x7e')]});})['then'](function(_0x435b8e){return{'rows':_0x435b8e||[],'count':_0x682a6d};});}});}exports[_0x86d3('0x9f')]=function(_0x73b8e6,_0x2c98e1){return runReport(_0x73b8e6['params'],_0x73b8e6[_0x86d3('0x2c')],_0x73b8e6[_0x86d3('0x3a')])[_0x86d3('0x1f')](respondWithResult(_0x2c98e1,null))['catch'](handleError(_0x2c98e1,null));};exports['runReport']=runReport;exports['query']=function(_0x458997,_0x1e3559){var _0x49a101=0xa;var _0x38d724=['join',_0x86d3('0x7f'),_0x86d3('0x51'),_0x86d3('0x52')];var _0x56ff91={'SUM':_0x86d3('0x53'),'COUNT':_0x86d3('0x54'),'COUNT DISTINCT':_0x86d3('0x80'),'MAX':_0x86d3('0x55'),'MIN':_0x86d3('0x56'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x86d3('0x58'),'GROUP_CONCAT ASC':_0x86d3('0x81'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x1f347e={'SEC_TO_TIME':_0x86d3('0xa0'),'DATE':'DATE(%s)','HOUR':_0x86d3('0x5b'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x45b210=function(_0x144e43){return!_[_0x86d3('0x5e')]([_0x86d3('0x82'),_0x86d3('0x83'),_0x86d3('0x5f'),_0x86d3('0x84')],_0x144e43);};var _0xdc7c21=function(_0x2e0397){if(!_0x2e0397||!_0x2e0397[_0x86d3('0x60')][_0x86d3('0x30')]){return'';}for(var _0x2cc617='(',_0x25339c=0x0;_0x25339c<_0x2e0397['rules'][_0x86d3('0x30')];_0x25339c+=0x1){_0x25339c>0x0&&(_0x2cc617+='\x20'+_0x2e0397[_0x86d3('0x61')]+'\x20');_0x2cc617+=_0x2e0397[_0x86d3('0x60')][_0x25339c][_0x86d3('0x62')]?_0xdc7c21(_0x2e0397[_0x86d3('0x60')][_0x25339c][_0x86d3('0x62')]):_0x2e0397['rules'][_0x25339c][_0x86d3('0x63')]+'\x20'+_0x2e0397['rules'][_0x25339c][_0x86d3('0x64')]+(_0x45b210(_0x2e0397[_0x86d3('0x60')][_0x25339c]['condition'])?'\x20'+_0x2e0397['rules'][_0x25339c][_0x86d3('0x65')]:'');}return _0x2cc617+')';};var _0x2c0070={'where':{'id':_0x458997[_0x86d3('0x4e')]['id']}},_0x31d436,_0x56e713,_0x525559,_0x3b9e1e,_0x1d8d7c;_0x2c0070=_['merge']({},_0x2c0070,_0x458997[_0x86d3('0x3a')]);return db[_0x86d3('0x3d')][_0x86d3('0x43')](_0x2c0070)[_0x86d3('0x1f')](function(_0x1f80be){if(_0x1f80be){_0x31d436=_0x1f80be;return _0x1f80be[_0x86d3('0x66')]();}return null;})[_0x86d3('0x1f')](function(_0x3dddbe){if(_0x3dddbe){if(!_0x3dddbe[_0x86d3('0x30')]){throw new db[(_0x86d3('0x85'))][(_0x86d3('0x67'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x56e713=_0x3dddbe;return db[_0x86d3('0x68')]['findAll']({'raw':!![]});}return null;})['then'](function(_0x1d7e83){if(_0x1d7e83){_0x525559=_[_0x86d3('0x69')](_0x1d7e83,'id');var _0x5d9385;var _0x49a499=squel[_0x86d3('0x9b')]();_0x49a499[_0x86d3('0x6a')](_0x31d436[_0x86d3('0x6b')]);for(var _0x33e0a5=0x0;_0x33e0a5<_0x56e713['length'];_0x33e0a5+=0x1){_0x5d9385=_0x56e713[_0x33e0a5][_0x86d3('0x6c')]?_0x525559[_0x56e713[_0x33e0a5][_0x86d3('0x6c')]][_0x86d3('0x6d')]:_0x56e713[_0x33e0a5][_0x86d3('0x63')];_0x5d9385=_0x56e713[_0x33e0a5][_0x86d3('0x6e')]?_['replace'](_0x56ff91[_0x56e713[_0x33e0a5][_0x86d3('0x6e')]],'%s',_0x5d9385):_0x5d9385;_0x5d9385=_0x56e713[_0x33e0a5][_0x86d3('0x70')]?_[_0x86d3('0x6f')](_0x1f347e[_0x56e713[_0x33e0a5]['format']],'%s',_0x5d9385):_0x5d9385;if(_0x56e713[_0x33e0a5][_0x86d3('0x71')]){_0x49a499['group'](_0x5d9385);}_0x56e713[_0x33e0a5][_0x86d3('0x72')]&&_0x49a499[_0x86d3('0x33')](_0x5d9385,_0x56e713[_0x33e0a5]['orderBy']===_0x86d3('0x87')?![]:!![]);_0x49a499[_0x86d3('0x63')](_0x5d9385,_0x56e713[_0x33e0a5][_0x86d3('0x73')]||_0x5d9385);}if(_0x31d436[_0x86d3('0x74')]){_0x31d436[_0x86d3('0x74')]=JSON[_0x86d3('0x75')](_0x31d436['joins']);for(var _0x10af91=0x0;_0x10af91<_0x31d436['joins'][_0x86d3('0x30')];_0x10af91+=0x1){if(_0x31d436[_0x86d3('0x74')][_0x10af91][_0x86d3('0x29')]&&_[_0x86d3('0x5e')](_0x38d724,_0x31d436['joins'][_0x10af91][_0x86d3('0x29')])&&_0x31d436[_0x86d3('0x74')][_0x10af91][_0x86d3('0x76')]&&_0x31d436[_0x86d3('0x74')][_0x10af91][_0x86d3('0x77')]&&_0x31d436[_0x86d3('0x74')][_0x10af91]['foreignKey']){_0x49a499[_0x31d436[_0x86d3('0x74')][_0x10af91][_0x86d3('0x29')]](_0x31d436['joins'][_0x10af91]['foreignTable'],null,util[_0x86d3('0x70')]('%s.%s\x20=\x20%s.%s',_0x31d436['table'],_0x31d436[_0x86d3('0x74')][_0x10af91][_0x86d3('0x76')],_0x31d436[_0x86d3('0x74')][_0x10af91]['foreignTable'],_0x31d436[_0x86d3('0x74')][_0x10af91][_0x86d3('0x78')]));}}}if(_0x31d436[_0x86d3('0x79')]){_0x31d436[_0x86d3('0x79')]=JSON[_0x86d3('0x75')](_0x31d436['conditions']);_0x49a499[_0x86d3('0x35')](_0xdc7c21(_0x31d436[_0x86d3('0x79')]['group']));}_0x1d8d7c=_0x49a499['clone']();_0x49a499['limit'](_0x49a101);_0x49a499[_0x86d3('0x18')](0x0);logger['debug']('Limited\x20Query:',_0x49a499[_0x86d3('0x7c')]());return dbH[_0x86d3('0x9e')]['query'](_0x49a499['toString'](),{'type':dbH[_0x86d3('0x9e')][_0x86d3('0x7d')][_0x86d3('0x7e')]});}})['then'](function(){return{'sql':_0x1d8d7c[_0x86d3('0x7c')]()};})[_0x86d3('0x1f')](respondWithResult(_0x1e3559,null))[_0x86d3('0x44')](handleError(_0x1e3559,null));};
\ No newline at end of file
+var _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(_0x284540,_0x55261d){var _0x5239dc=function(_0x457f0f){while(--_0x457f0f){_0x284540['push'](_0x284540['shift']());}};_0x5239dc(++_0x55261d);}(_0x46ed,0x168));var _0xd46e=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x46ed[_0x40a045];return _0x1a687c;};'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
index 6b743ac..8203896 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1912=['exports','define','AnalyticDefaultReport','lodash','api','request-promise','path','rimraf','../../config/environment','./analyticDefaultReport.attributes'];(function(_0x3ac918,_0x420b53){var _0x1d6210=function(_0x75a807){while(--_0x75a807){_0x3ac918['push'](_0x3ac918['shift']());}};_0x1d6210(++_0x420b53);}(_0x1912,0x1e3));var _0x2191=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x1912[_0x160c73];return _0xd9302;};'use strict';var _=require(_0x2191('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x2191('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x2191('0x2'));var fs=require('fs');var path=require(_0x2191('0x3'));var rimraf=require(_0x2191('0x4'));var config=require(_0x2191('0x5'));var attributes=require(_0x2191('0x6'));module[_0x2191('0x7')]=function(_0x4e047b,_0x598d14){return _0x4e047b[_0x2191('0x8')](_0x2191('0x9'),attributes,{'tableName':'analytics_default_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5904=['../../config/environment','./analyticDefaultReport.attributes','exports','define','AnalyticDefaultReport','lodash','util','../../config/logger','api','bluebird','path','rimraf'];(function(_0xb875ee,_0x583042){var _0x4c7f3a=function(_0x1f6661){while(--_0x1f6661){_0xb875ee['push'](_0xb875ee['shift']());}};_0x4c7f3a(++_0x583042);}(_0x5904,0xc5));var _0x4590=function(_0x31b9df,_0x14622d){_0x31b9df=_0x31b9df-0x0;var _0x593989=_0x5904[_0x31b9df];return _0x593989;};'use strict';var _=require(_0x4590('0x0'));var util=require(_0x4590('0x1'));var logger=require(_0x4590('0x2'))(_0x4590('0x3'));var moment=require('moment');var BPromise=require(_0x4590('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4590('0x5'));var rimraf=require(_0x4590('0x6'));var config=require(_0x4590('0x7'));var attributes=require(_0x4590('0x8'));module[_0x4590('0x9')]=function(_0x519b82,_0x51c234){return _0x519b82[_0x4590('0xa')](_0x4590('0xb'),attributes,{'tableName':'analytics_default_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c8b71f4..dfa558a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a0a=['../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','randomstring','ioredis'];(function(_0x3513a0,_0x3bdc88){var _0x2bdeb9=function(_0x37f06d){while(--_0x37f06d){_0x3513a0['push'](_0x3513a0['shift']());}};_0x2bdeb9(++_0x3bdc88);}(_0x0a0a,0x10d));var _0xa0a0=function(_0x45b4de,_0x3bb6a8){_0x45b4de=_0x45b4de-0x0;var _0x467f91=_0x0a0a[_0x45b4de];return _0x467f91;};'use strict';var _=require(_0xa0a0('0x0'));var util=require(_0xa0a0('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xa0a0('0x2'));var fs=require('fs');var Redis=require(_0xa0a0('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xa0a0('0x4'));var logger=require(_0xa0a0('0x5'))(_0xa0a0('0x6'));var config=require(_0xa0a0('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xa0a0('0x8')][_0xa0a0('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x40b540,_0x9fd911,_0x59dc60){return new BPromise(function(_0x582879,_0xd6d110){return client[_0xa0a0('0xa')](_0x40b540,_0x59dc60)[_0xa0a0('0xb')](function(_0x4f0f34){logger[_0xa0a0('0xc')](_0xa0a0('0xd'),_0x9fd911,_0xa0a0('0xe'));logger['debug']('AnalyticDefaultReport,\x20%s,\x20%s,\x20%s',_0x9fd911,_0xa0a0('0xe'),JSON[_0xa0a0('0xf')](_0x4f0f34));if(_0x4f0f34[_0xa0a0('0x10')]){if(_0x4f0f34[_0xa0a0('0x10')][_0xa0a0('0x11')]===0x1f4){logger[_0xa0a0('0x10')](_0xa0a0('0xd'),_0x9fd911,_0x4f0f34[_0xa0a0('0x10')][_0xa0a0('0x12')]);return _0xd6d110(_0x4f0f34[_0xa0a0('0x10')]['message']);}logger[_0xa0a0('0x10')](_0xa0a0('0xd'),_0x9fd911,_0x4f0f34['error'][_0xa0a0('0x12')]);return _0x582879(_0x4f0f34[_0xa0a0('0x10')][_0xa0a0('0x12')]);}else{logger[_0xa0a0('0xc')](_0xa0a0('0xd'),_0x9fd911,_0xa0a0('0xe'));_0x582879(_0x4f0f34[_0xa0a0('0x13')][_0xa0a0('0x12')]);}})[_0xa0a0('0x14')](function(_0xfa8d1c){logger[_0xa0a0('0x10')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x9fd911,_0xfa8d1c);_0xd6d110(_0xfa8d1c);});});}
\ No newline at end of file
+var _0xab2a=['then','info','AnalyticDefaultReport,\x20%s,\x20%s','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','http'];(function(_0xcd75f2,_0x292d70){var _0x1c455e=function(_0x2bfa63){while(--_0x2bfa63){_0xcd75f2['push'](_0xcd75f2['shift']());}};_0x1c455e(++_0x292d70);}(_0xab2a,0x69));var _0xaab2=function(_0x3f1a53,_0x4d33bf){_0x3f1a53=_0x3f1a53-0x0;var _0x5f5399=_0xab2a[_0x3f1a53];return _0x5f5399;};'use strict';var _=require('lodash');var util=require(_0xaab2('0x0'));var moment=require(_0xaab2('0x1'));var BPromise=require(_0xaab2('0x2'));var rs=require(_0xaab2('0x3'));var fs=require('fs');var Redis=require(_0xaab2('0x4'));var db=require(_0xaab2('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xaab2('0x6'))('rpc');var config=require(_0xaab2('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xaab2('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xf59f34,_0x1ab689,_0x1eb8e0){return new BPromise(function(_0x8a5c53,_0x2b6eed){return client['request'](_0xf59f34,_0x1eb8e0)[_0xaab2('0x9')](function(_0x487b47){logger[_0xaab2('0xa')](_0xaab2('0xb'),_0x1ab689,'request\x20sent');logger[_0xaab2('0xc')](_0xaab2('0xd'),_0x1ab689,_0xaab2('0xe'),JSON['stringify'](_0x487b47));if(_0x487b47[_0xaab2('0xf')]){if(_0x487b47['error'][_0xaab2('0x10')]===0x1f4){logger[_0xaab2('0xf')](_0xaab2('0xb'),_0x1ab689,_0x487b47[_0xaab2('0xf')][_0xaab2('0x11')]);return _0x2b6eed(_0x487b47[_0xaab2('0xf')][_0xaab2('0x11')]);}logger['error']('AnalyticDefaultReport,\x20%s,\x20%s',_0x1ab689,_0x487b47['error'][_0xaab2('0x11')]);return _0x8a5c53(_0x487b47[_0xaab2('0xf')]['message']);}else{logger['info'](_0xaab2('0xb'),_0x1ab689,_0xaab2('0xe'));_0x8a5c53(_0x487b47['result'][_0xaab2('0x11')]);}})[_0xaab2('0x12')](function(_0x15fc87){logger[_0xaab2('0xf')](_0xaab2('0xb'),_0x1ab689,_0x15fc87);_0x2b6eed(_0x15fc87);});});}
\ No newline at end of file
index 6dfbee8..482fa0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf65f=['fs-extra','../../components/auth/service','../../config/environment','./analyticDefaultReport.controller','get','isAuthenticated','index','/:id','show','/:id/preview','preview','/:id/run','run','/:id/query','query','post','create','put','update','delete','destroy','exports','multer','path','express','Router'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf65f,0xe6));var _0xff65=function(_0x3e019e,_0x5e955e){_0x3e019e=_0x3e019e-0x0;var _0x57c5ed=_0xf65f[_0x3e019e];return _0x57c5ed;};'use strict';var multer=require(_0xff65('0x0'));var util=require('util');var path=require(_0xff65('0x1'));var timeout=require('connect-timeout');var express=require(_0xff65('0x2'));var router=express[_0xff65('0x3')]();var fs_extra=require(_0xff65('0x4'));var auth=require(_0xff65('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xff65('0x6'));var controller=require(_0xff65('0x7'));router[_0xff65('0x8')]('/',auth[_0xff65('0x9')](),controller[_0xff65('0xa')]);router['get'](_0xff65('0xb'),auth['isAuthenticated'](),controller[_0xff65('0xc')]);router[_0xff65('0x8')](_0xff65('0xd'),auth['isAuthenticated'](),controller[_0xff65('0xe')]);router[_0xff65('0x8')](_0xff65('0xf'),auth['isAuthenticated'](),controller[_0xff65('0x10')]);router[_0xff65('0x8')](_0xff65('0x11'),auth[_0xff65('0x9')](),controller[_0xff65('0x12')]);router[_0xff65('0x13')]('/',auth[_0xff65('0x9')](),controller[_0xff65('0x14')]);router[_0xff65('0x15')](_0xff65('0xb'),auth[_0xff65('0x9')](),controller[_0xff65('0x16')]);router[_0xff65('0x17')](_0xff65('0xb'),auth[_0xff65('0x9')](),controller[_0xff65('0x18')]);module[_0xff65('0x19')]=router;
\ No newline at end of file
+var _0xfe7c=['multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./analyticDefaultReport.controller','get','isAuthenticated','index','/:id','show','/:id/preview','preview','/:id/run','run','/:id/query','query','post','create','put','update','exports'];(function(_0x39ce5a,_0x260622){var _0x46cd9a=function(_0x39fcba){while(--_0x39fcba){_0x39ce5a['push'](_0x39ce5a['shift']());}};_0x46cd9a(++_0x260622);}(_0xfe7c,0xc8));var _0xcfe7=function(_0x29ec77,_0x4be655){_0x29ec77=_0x29ec77-0x0;var _0x1849b2=_0xfe7c[_0x29ec77];return _0x1849b2;};'use strict';var multer=require(_0xcfe7('0x0'));var util=require(_0xcfe7('0x1'));var path=require(_0xcfe7('0x2'));var timeout=require('connect-timeout');var express=require(_0xcfe7('0x3'));var router=express[_0xcfe7('0x4')]();var fs_extra=require(_0xcfe7('0x5'));var auth=require(_0xcfe7('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xcfe7('0x7'));var controller=require(_0xcfe7('0x8'));router[_0xcfe7('0x9')]('/',auth[_0xcfe7('0xa')](),controller[_0xcfe7('0xb')]);router['get'](_0xcfe7('0xc'),auth[_0xcfe7('0xa')](),controller[_0xcfe7('0xd')]);router[_0xcfe7('0x9')](_0xcfe7('0xe'),auth['isAuthenticated'](),controller[_0xcfe7('0xf')]);router[_0xcfe7('0x9')](_0xcfe7('0x10'),auth[_0xcfe7('0xa')](),controller[_0xcfe7('0x11')]);router['get'](_0xcfe7('0x12'),auth[_0xcfe7('0xa')](),controller[_0xcfe7('0x13')]);router[_0xcfe7('0x14')]('/',auth[_0xcfe7('0xa')](),controller[_0xcfe7('0x15')]);router[_0xcfe7('0x16')](_0xcfe7('0xc'),auth['isAuthenticated'](),controller[_0xcfe7('0x17')]);router['delete']('/:id',auth[_0xcfe7('0xa')](),controller['destroy']);module[_0xcfe7('0x18')]=router;
\ No newline at end of file
index c578d25..ae39f49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeec2=['INTEGER','UNSIGNED','sequelize','moment','exports','STRING','ENUM','csv','pdf','DATE','Loading','manual','scheduled'];(function(_0xa44212,_0x1af18b){var _0x452d35=function(_0x17fe49){while(--_0x17fe49){_0xa44212['push'](_0xa44212['shift']());}};_0x452d35(++_0x1af18b);}(_0xeec2,0x13a));var _0x2eec=function(_0x3021ae,_0x517d36){_0x3021ae=_0x3021ae-0x0;var _0x2c246a=_0xeec2[_0x3021ae];return _0x2c246a;};'use strict';var Sequelize=require(_0x2eec('0x0'));var moment=require(_0x2eec('0x1'));module[_0x2eec('0x2')]={'name':{'type':Sequelize[_0x2eec('0x3')],'allowNull':![]},'basename':{'type':Sequelize[_0x2eec('0x3')],'allowNull':![]},'output':{'type':Sequelize[_0x2eec('0x4')](_0x2eec('0x5'),_0x2eec('0x6'),'xlsx'),'allowNull':![],'defaultValue':_0x2eec('0x5')},'savename':{'type':Sequelize[_0x2eec('0x3')],'allowNull':![]},'startDate':{'type':Sequelize['DATE']},'endDate':{'type':Sequelize[_0x2eec('0x7')]},'status':{'type':Sequelize[_0x2eec('0x3')],'defaultValue':_0x2eec('0x8')},'type':{'type':Sequelize['ENUM'](_0x2eec('0x9'),_0x2eec('0xa')),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize[_0x2eec('0xb')](0xb)[_0x2eec('0xc')]},'reportType':{'type':Sequelize[_0x2eec('0x3')]}};
\ No newline at end of file
+var _0xdb2b=['UNSIGNED','sequelize','moment','STRING','ENUM','csv','pdf','xlsx','DATE','manual','scheduled'];(function(_0xcaf223,_0xd39f07){var _0x17e00d=function(_0xe2852e){while(--_0xe2852e){_0xcaf223['push'](_0xcaf223['shift']());}};_0x17e00d(++_0xd39f07);}(_0xdb2b,0xd2));var _0xbdb2=function(_0x48bc0d,_0x30becd){_0x48bc0d=_0x48bc0d-0x0;var _0x35f641=_0xdb2b[_0x48bc0d];return _0x35f641;};'use strict';var Sequelize=require(_0xbdb2('0x0'));var moment=require(_0xbdb2('0x1'));module['exports']={'name':{'type':Sequelize[_0xbdb2('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0xbdb2('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0xbdb2('0x3')](_0xbdb2('0x4'),_0xbdb2('0x5'),_0xbdb2('0x6')),'allowNull':![],'defaultValue':'csv'},'savename':{'type':Sequelize[_0xbdb2('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0xbdb2('0x7')]},'endDate':{'type':Sequelize[_0xbdb2('0x7')]},'status':{'type':Sequelize[_0xbdb2('0x2')],'defaultValue':'Loading'},'type':{'type':Sequelize[_0xbdb2('0x3')](_0xbdb2('0x8'),_0xbdb2('0x9')),'allowNull':![],'defaultValue':_0xbdb2('0x8')},'reportId':{'type':Sequelize['INTEGER'](0xb)[_0xbdb2('0xa')]},'reportType':{'type':Sequelize[_0xbdb2('0x2')]}};
\ No newline at end of file
index 7556e9d..20b5fa2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb164=['path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','get','ExtractedReports','UserProfileResource','stack','name','send','map','AnalyticExtractedReport','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','catch','show','params','rawAttributes','find','create','body','role','userProfileId','autoAssociation','error','download','basename','output','join','root','server/files/reports','savename','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','toLowerCase','eml-format','rimraf','fast-json-patch','moment','bluebird','util'];(function(_0x513a1a,_0x4660bd){var _0x2e5021=function(_0x2216ba){while(--_0x2216ba){_0x513a1a['push'](_0x513a1a['shift']());}};_0x2e5021(++_0x4660bd);}(_0xb164,0x1c6));var _0x4b16=function(_0x3f59f2,_0x264cbf){_0x3f59f2=_0x3f59f2-0x0;var _0x1a369b=_0xb164[_0x3f59f2];return _0x1a369b;};'use strict';var emlformat=require(_0x4b16('0x0'));var rimraf=require(_0x4b16('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4b16('0x2'));var rp=require('request-promise');var moment=require(_0x4b16('0x3'));var BPromise=require(_0x4b16('0x4'));var Mustache=require('mustache');var util=require(_0x4b16('0x5'));var path=require(_0x4b16('0x6'));var sox=require(_0x4b16('0x7'));var csv=require(_0x4b16('0x8'));var ejs=require(_0x4b16('0x9'));var fs=require('fs');var fs_extra=require(_0x4b16('0xa'));var _=require(_0x4b16('0xb'));var squel=require(_0x4b16('0xc'));var crypto=require(_0x4b16('0xd'));var jsforce=require(_0x4b16('0xe'));var deskjs=require(_0x4b16('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x4b16('0x10'));var authService=require(_0x4b16('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x4b16('0x12'));var hardwareService=require(_0x4b16('0x13'));var logger=require('../../config/logger')(_0x4b16('0x14'));var utils=require('../../config/utils');var config=require(_0x4b16('0x15'));var licenseUtil=require(_0x4b16('0x16'));var db=require(_0x4b16('0x17'))['db'];function respondWithStatusCode(_0xce1fc9,_0x10b726){_0x10b726=_0x10b726||0xcc;return function(_0x167099){if(_0x167099){return _0xce1fc9[_0x4b16('0x18')](_0x10b726);}return _0xce1fc9[_0x4b16('0x19')](_0x10b726)['end']();};}function respondWithResult(_0x56ddf9,_0x44c35d){_0x44c35d=_0x44c35d||0xc8;return function(_0x2e182d){if(_0x2e182d){return _0x56ddf9[_0x4b16('0x19')](_0x44c35d)[_0x4b16('0x1a')](_0x2e182d);}};}function respondWithFilteredResult(_0x4ac924,_0x47275f){return function(_0x25fa22){if(_0x25fa22){var _0x32ce9f=typeof _0x47275f[_0x4b16('0x1b')]===_0x4b16('0x1c')&&typeof _0x47275f[_0x4b16('0x1d')]==='undefined';var _0x428f57=_0x25fa22[_0x4b16('0x1e')];var _0x58938b=_0x32ce9f?0x0:_0x47275f['offset'];var _0x14234f=_0x32ce9f?_0x25fa22[_0x4b16('0x1e')]:_0x47275f[_0x4b16('0x1b')]+_0x47275f[_0x4b16('0x1d')];var _0x45a860;if(_0x14234f>=_0x428f57){_0x14234f=_0x428f57;_0x45a860=0xc8;}else{_0x45a860=0xce;}_0x4ac924[_0x4b16('0x19')](_0x45a860);return _0x4ac924[_0x4b16('0x1f')]('Content-Range',_0x58938b+'-'+_0x14234f+'/'+_0x428f57)[_0x4b16('0x1a')](_0x25fa22);}return null;};}function patchUpdates(_0x3112e7){return function(_0x7665a1){try{jsonpatch[_0x4b16('0x20')](_0x7665a1,_0x3112e7,!![]);}catch(_0x3e428c){return BPromise[_0x4b16('0x21')](_0x3e428c);}return _0x7665a1[_0x4b16('0x22')]();};}function saveUpdates(_0x56acb0,_0x4d6a56){return function(_0x39c01f){if(_0x39c01f){return _0x39c01f[_0x4b16('0x23')](_0x56acb0)[_0x4b16('0x24')](function(_0x391186){return _0x391186;});}return null;};}function removeEntity(_0x46eb01,_0x30a327){return function(_0x1f8bc7){if(_0x1f8bc7){return _0x1f8bc7[_0x4b16('0x25')]()[_0x4b16('0x24')](function(){var _0x4094fb=_0x1f8bc7[_0x4b16('0x26')]({'plain':!![]});var _0x5d056f=_0x4b16('0x27');return db[_0x4b16('0x28')][_0x4b16('0x25')]({'where':{'type':_0x5d056f,'resourceId':_0x4094fb['id']}})['then'](function(){return _0x1f8bc7;});})[_0x4b16('0x24')](function(){_0x46eb01[_0x4b16('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5aa448,_0xb81ea2){return function(_0x39b0a2){if(!_0x39b0a2){_0x5aa448[_0x4b16('0x18')](0x194);}return _0x39b0a2;};}function handleError(_0x68b341,_0x23b314){_0x23b314=_0x23b314||0x1f4;return function(_0x1f7d0a){logger['error'](_0x1f7d0a[_0x4b16('0x29')]);if(_0x1f7d0a['name']){delete _0x1f7d0a[_0x4b16('0x2a')];}_0x68b341[_0x4b16('0x19')](_0x23b314)[_0x4b16('0x2b')](_0x1f7d0a);};}exports['index']=function(_0x419869,_0x4cbbcb){var _0x4ad05d={},_0x9e58d1={},_0xed2bf4={'count':0x0,'rows':[]};var _0x1e9a3c=_[_0x4b16('0x2c')](db[_0x4b16('0x2d')]['rawAttributes'],function(_0x18c5c7){return{'name':_0x18c5c7[_0x4b16('0x2e')],'type':_0x18c5c7[_0x4b16('0x2f')][_0x4b16('0x30')]};});_0x9e58d1[_0x4b16('0x31')]=_['map'](_0x1e9a3c,_0x4b16('0x2a'));_0x9e58d1[_0x4b16('0x32')]=_[_0x4b16('0x33')](_0x419869[_0x4b16('0x32')]);_0x9e58d1['filters']=_[_0x4b16('0x34')](_0x9e58d1['model'],_0x9e58d1[_0x4b16('0x32')]);_0x4ad05d['attributes']=_[_0x4b16('0x34')](_0x9e58d1[_0x4b16('0x31')],qs[_0x4b16('0x35')](_0x419869[_0x4b16('0x32')]['fields']));_0x4ad05d[_0x4b16('0x36')]=_0x4ad05d[_0x4b16('0x36')][_0x4b16('0x37')]?_0x4ad05d[_0x4b16('0x36')]:_0x9e58d1[_0x4b16('0x31')];if(!_0x419869[_0x4b16('0x32')][_0x4b16('0x38')](_0x4b16('0x39'))){_0x4ad05d[_0x4b16('0x1d')]=qs[_0x4b16('0x1d')](_0x419869[_0x4b16('0x32')][_0x4b16('0x1d')]);_0x4ad05d[_0x4b16('0x1b')]=qs['offset'](_0x419869['query'][_0x4b16('0x1b')]);}_0x4ad05d[_0x4b16('0x3a')]=qs[_0x4b16('0x3b')](_0x419869[_0x4b16('0x32')][_0x4b16('0x3b')]);_0x4ad05d[_0x4b16('0x3c')]=qs[_0x4b16('0x3d')](_[_0x4b16('0x3e')](_0x419869[_0x4b16('0x32')],_0x9e58d1[_0x4b16('0x3d')]),_0x1e9a3c);if(_0x419869[_0x4b16('0x32')][_0x4b16('0x3f')]){_0x4ad05d['where']=_[_0x4b16('0x40')](_0x4ad05d[_0x4b16('0x3c')],{'$or':_['map'](_0x1e9a3c,function(_0x529c74){if(_0x529c74[_0x4b16('0x2f')]!==_0x4b16('0x41')){var _0xb34167={};_0xb34167[_0x529c74[_0x4b16('0x2a')]]={'$like':'%'+_0x419869[_0x4b16('0x32')]['filter']+'%'};return _0xb34167;}})});}_0x4ad05d=_[_0x4b16('0x40')]({},_0x4ad05d,_0x419869[_0x4b16('0x42')]);var _0x1cc37c={'where':_0x4ad05d['where']};return db[_0x4b16('0x2d')][_0x4b16('0x1e')](_0x1cc37c)[_0x4b16('0x24')](function(_0x31b6b3){_0xed2bf4['count']=_0x31b6b3;if(_0x419869[_0x4b16('0x32')]['includeAll']){_0x4ad05d[_0x4b16('0x43')]=[{'all':!![]}];}return db[_0x4b16('0x2d')][_0x4b16('0x44')](_0x4ad05d);})[_0x4b16('0x24')](function(_0x4dbc71){_0xed2bf4['rows']=_0x4dbc71;return _0xed2bf4;})[_0x4b16('0x24')](respondWithFilteredResult(_0x4cbbcb,_0x4ad05d))[_0x4b16('0x45')](handleError(_0x4cbbcb,null));};exports[_0x4b16('0x46')]=function(_0x1cda66,_0x261c98){var _0x55c934={'raw':!![],'where':{'id':_0x1cda66[_0x4b16('0x47')]['id']}},_0x135cdc={};_0x135cdc[_0x4b16('0x31')]=_['keys'](db[_0x4b16('0x2d')][_0x4b16('0x48')]);_0x135cdc['query']=_['keys'](_0x1cda66['query']);_0x135cdc[_0x4b16('0x3d')]=_[_0x4b16('0x34')](_0x135cdc[_0x4b16('0x31')],_0x135cdc[_0x4b16('0x32')]);_0x55c934[_0x4b16('0x36')]=_[_0x4b16('0x34')](_0x135cdc[_0x4b16('0x31')],qs[_0x4b16('0x35')](_0x1cda66['query'][_0x4b16('0x35')]));_0x55c934[_0x4b16('0x36')]=_0x55c934[_0x4b16('0x36')][_0x4b16('0x37')]?_0x55c934[_0x4b16('0x36')]:_0x135cdc[_0x4b16('0x31')];if(_0x1cda66[_0x4b16('0x32')]['includeAll']){_0x55c934[_0x4b16('0x43')]=[{'all':!![]}];}_0x55c934=_['merge']({},_0x55c934,_0x1cda66['options']);return db['AnalyticExtractedReport'][_0x4b16('0x49')](_0x55c934)[_0x4b16('0x24')](handleEntityNotFound(_0x261c98,null))[_0x4b16('0x24')](respondWithResult(_0x261c98,null))['catch'](handleError(_0x261c98,null));};exports[_0x4b16('0x4a')]=function(_0x1bc111,_0x504614){return db[_0x4b16('0x2d')][_0x4b16('0x4a')](_0x1bc111[_0x4b16('0x4b')],{})['then'](function(_0x3b87a3){var _0x395fce=_0x1bc111['user'][_0x4b16('0x26')]({'plain':!![]});if(!_0x395fce)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x395fce[_0x4b16('0x4c')]==='user'){var _0x3b4a6c=_0x3b87a3[_0x4b16('0x26')]({'plain':!![]});var _0x2fa46c=_0x4b16('0x27');return db['UserProfileSection'][_0x4b16('0x49')]({'where':{'name':_0x2fa46c,'userProfileId':_0x395fce[_0x4b16('0x4d')]},'raw':!![]})[_0x4b16('0x24')](function(_0x4dbb7f){if(_0x4dbb7f&&_0x4dbb7f[_0x4b16('0x4e')]===0x0){return db['UserProfileResource']['create']({'name':_0x3b4a6c['name'],'resourceId':_0x3b4a6c['id'],'type':_0x4dbb7f[_0x4b16('0x2a')],'sectionId':_0x4dbb7f['id']},{})[_0x4b16('0x24')](function(){return _0x3b87a3;});}else{return _0x3b87a3;}})[_0x4b16('0x45')](function(_0x256736){logger[_0x4b16('0x4f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x256736);throw _0x256736;});}return _0x3b87a3;})[_0x4b16('0x24')](respondWithResult(_0x504614,0xc9))[_0x4b16('0x45')](handleError(_0x504614,null));};exports['update']=function(_0x3696b4,_0x137414){if(_0x3696b4[_0x4b16('0x4b')]['id']){delete _0x3696b4['body']['id'];}return db[_0x4b16('0x2d')]['find']({'where':{'id':_0x3696b4[_0x4b16('0x47')]['id']}})[_0x4b16('0x24')](handleEntityNotFound(_0x137414,null))[_0x4b16('0x24')](saveUpdates(_0x3696b4['body'],null))[_0x4b16('0x24')](respondWithResult(_0x137414,null))[_0x4b16('0x45')](handleError(_0x137414,null));};exports['destroy']=function(_0x29dd66,_0x1855bf){return db[_0x4b16('0x2d')]['find']({'where':{'id':_0x29dd66['params']['id']}})[_0x4b16('0x24')](handleEntityNotFound(_0x1855bf,null))['then'](removeEntity(_0x1855bf,null))['catch'](handleError(_0x1855bf,null));};exports[_0x4b16('0x50')]=function(_0xb96e8d,_0x432ddc,_0x268e62){return db[_0x4b16('0x2d')][_0x4b16('0x49')]({'where':{'id':_0xb96e8d['params']['id']},'attributes':[_0x4b16('0x2a'),_0x4b16('0x51'),'savename',_0x4b16('0x52')],'raw':!![]})[_0x4b16('0x24')](handleEntityNotFound(_0x432ddc,null))[_0x4b16('0x24')](function(_0x4c01ea){if(_0x4c01ea){if(!fs['existsSync'](path[_0x4b16('0x53')](config[_0x4b16('0x54')],_0x4b16('0x55'),_0x4c01ea[_0x4b16('0x56')]))){throw new db[(_0x4b16('0x57'))][(_0x4b16('0x58'))](_0x4b16('0x59'));}if(_0xb96e8d['query'][_0x4b16('0x5a')]){return _0x432ddc[_0x4b16('0x18')](0xc8);}return _0x432ddc[_0x4b16('0x50')](path['join'](config[_0x4b16('0x54')],_0x4b16('0x55'),_0x4c01ea[_0x4b16('0x56')]),util['format']('%s.%s',_0x4c01ea[_0x4b16('0x51')]||_0x4c01ea[_0x4b16('0x2a')],_0x4c01ea[_0x4b16('0x52')][_0x4b16('0x5b')]()));}})[_0x4b16('0x45')](handleError(_0x432ddc,null));};
\ No newline at end of file
+var _0xb331=['limit','set','Content-Range','apply','reject','update','then','destroy','ExtractedReports','UserProfileResource','error','stack','name','send','index','AnalyticExtractedReport','fieldName','type','map','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','includeAll','include','rows','catch','show','params','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','basename','savename','existsSync','join','Sequelize','ValidationError','exists','download','root','format','%s.%s','output','toLowerCase','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','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','../../mysqldb','sendStatus','status','end','json','offset','undefined','count'];(function(_0x52e363,_0x48062a){var _0x3fc2b5=function(_0x1b0cf9){while(--_0x1b0cf9){_0x52e363['push'](_0x52e363['shift']());}};_0x3fc2b5(++_0x48062a);}(_0xb331,0x1c4));var _0x1b33=function(_0x9f2670,_0x2cfdf2){_0x9f2670=_0x9f2670-0x0;var _0x11a4b1=_0xb331[_0x9f2670];return _0x11a4b1;};'use strict';var emlformat=require(_0x1b33('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1b33('0x1'));var jsonpatch=require(_0x1b33('0x2'));var rp=require(_0x1b33('0x3'));var moment=require(_0x1b33('0x4'));var BPromise=require(_0x1b33('0x5'));var Mustache=require('mustache');var util=require(_0x1b33('0x6'));var path=require(_0x1b33('0x7'));var sox=require(_0x1b33('0x8'));var csv=require(_0x1b33('0x9'));var ejs=require(_0x1b33('0xa'));var fs=require('fs');var fs_extra=require(_0x1b33('0xb'));var _=require('lodash');var squel=require(_0x1b33('0xc'));var crypto=require(_0x1b33('0xd'));var jsforce=require(_0x1b33('0xe'));var deskjs=require(_0x1b33('0xf'));var toCsv=require('to-csv');var querystring=require(_0x1b33('0x10'));var Papa=require('papaparse');var Redis=require(_0x1b33('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x1b33('0x12'));var as=require(_0x1b33('0x13'));var hardwareService=require(_0x1b33('0x14'));var logger=require(_0x1b33('0x15'))(_0x1b33('0x16'));var utils=require(_0x1b33('0x17'));var config=require(_0x1b33('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x1b33('0x19'))['db'];function respondWithStatusCode(_0x3073be,_0x226aa5){_0x226aa5=_0x226aa5||0xcc;return function(_0x23d354){if(_0x23d354){return _0x3073be[_0x1b33('0x1a')](_0x226aa5);}return _0x3073be[_0x1b33('0x1b')](_0x226aa5)[_0x1b33('0x1c')]();};}function respondWithResult(_0x55ec17,_0x4eb3bc){_0x4eb3bc=_0x4eb3bc||0xc8;return function(_0x2b8a97){if(_0x2b8a97){return _0x55ec17[_0x1b33('0x1b')](_0x4eb3bc)[_0x1b33('0x1d')](_0x2b8a97);}};}function respondWithFilteredResult(_0x308df5,_0x49e46b){return function(_0x3d9ecd){if(_0x3d9ecd){var _0x1da6c6=typeof _0x49e46b[_0x1b33('0x1e')]===_0x1b33('0x1f')&&typeof _0x49e46b['limit']===_0x1b33('0x1f');var _0x353bbe=_0x3d9ecd[_0x1b33('0x20')];var _0x208201=_0x1da6c6?0x0:_0x49e46b['offset'];var _0x4fd0e7=_0x1da6c6?_0x3d9ecd[_0x1b33('0x20')]:_0x49e46b['offset']+_0x49e46b[_0x1b33('0x21')];var _0x5cd609;if(_0x4fd0e7>=_0x353bbe){_0x4fd0e7=_0x353bbe;_0x5cd609=0xc8;}else{_0x5cd609=0xce;}_0x308df5[_0x1b33('0x1b')](_0x5cd609);return _0x308df5[_0x1b33('0x22')](_0x1b33('0x23'),_0x208201+'-'+_0x4fd0e7+'/'+_0x353bbe)[_0x1b33('0x1d')](_0x3d9ecd);}return null;};}function patchUpdates(_0x4ed430){return function(_0x530e7f){try{jsonpatch[_0x1b33('0x24')](_0x530e7f,_0x4ed430,!![]);}catch(_0x5da7c9){return BPromise[_0x1b33('0x25')](_0x5da7c9);}return _0x530e7f['save']();};}function saveUpdates(_0x1af8cb,_0x3acd09){return function(_0x34e1b5){if(_0x34e1b5){return _0x34e1b5[_0x1b33('0x26')](_0x1af8cb)[_0x1b33('0x27')](function(_0x95d471){return _0x95d471;});}return null;};}function removeEntity(_0x53d405,_0x1b6e9a){return function(_0x204fe2){if(_0x204fe2){return _0x204fe2[_0x1b33('0x28')]()[_0x1b33('0x27')](function(){var _0x32823c=_0x204fe2['get']({'plain':!![]});var _0x5b013c=_0x1b33('0x29');return db[_0x1b33('0x2a')]['destroy']({'where':{'type':_0x5b013c,'resourceId':_0x32823c['id']}})[_0x1b33('0x27')](function(){return _0x204fe2;});})[_0x1b33('0x27')](function(){_0x53d405[_0x1b33('0x1b')](0xcc)[_0x1b33('0x1c')]();});}};}function handleEntityNotFound(_0x3fde59,_0x1c2c53){return function(_0x369ab2){if(!_0x369ab2){_0x3fde59['sendStatus'](0x194);}return _0x369ab2;};}function handleError(_0x4402e4,_0x252a5e){_0x252a5e=_0x252a5e||0x1f4;return function(_0x5ee5c6){logger[_0x1b33('0x2b')](_0x5ee5c6[_0x1b33('0x2c')]);if(_0x5ee5c6[_0x1b33('0x2d')]){delete _0x5ee5c6[_0x1b33('0x2d')];}_0x4402e4[_0x1b33('0x1b')](_0x252a5e)[_0x1b33('0x2e')](_0x5ee5c6);};}exports[_0x1b33('0x2f')]=function(_0x567f0a,_0x3dcc49){var _0x5dfd47={},_0x1cc163={},_0x245308={'count':0x0,'rows':[]};var _0x190426=_['map'](db[_0x1b33('0x30')]['rawAttributes'],function(_0x4d7a1c){return{'name':_0x4d7a1c[_0x1b33('0x31')],'type':_0x4d7a1c[_0x1b33('0x32')]['key']};});_0x1cc163['model']=_[_0x1b33('0x33')](_0x190426,'name');_0x1cc163[_0x1b33('0x34')]=_[_0x1b33('0x35')](_0x567f0a[_0x1b33('0x34')]);_0x1cc163[_0x1b33('0x36')]=_[_0x1b33('0x37')](_0x1cc163[_0x1b33('0x38')],_0x1cc163[_0x1b33('0x34')]);_0x5dfd47['attributes']=_['intersection'](_0x1cc163[_0x1b33('0x38')],qs['fields'](_0x567f0a[_0x1b33('0x34')][_0x1b33('0x39')]));_0x5dfd47[_0x1b33('0x3a')]=_0x5dfd47['attributes'][_0x1b33('0x3b')]?_0x5dfd47[_0x1b33('0x3a')]:_0x1cc163[_0x1b33('0x38')];if(!_0x567f0a[_0x1b33('0x34')][_0x1b33('0x3c')](_0x1b33('0x3d'))){_0x5dfd47['limit']=qs[_0x1b33('0x21')](_0x567f0a[_0x1b33('0x34')][_0x1b33('0x21')]);_0x5dfd47[_0x1b33('0x1e')]=qs[_0x1b33('0x1e')](_0x567f0a['query'][_0x1b33('0x1e')]);}_0x5dfd47[_0x1b33('0x3e')]=qs[_0x1b33('0x3f')](_0x567f0a[_0x1b33('0x34')][_0x1b33('0x3f')]);_0x5dfd47['where']=qs['filters'](_[_0x1b33('0x40')](_0x567f0a[_0x1b33('0x34')],_0x1cc163[_0x1b33('0x36')]),_0x190426);if(_0x567f0a[_0x1b33('0x34')][_0x1b33('0x41')]){_0x5dfd47['where']=_['merge'](_0x5dfd47[_0x1b33('0x42')],{'$or':_[_0x1b33('0x33')](_0x190426,function(_0xd70a1e){if(_0xd70a1e[_0x1b33('0x32')]!==_0x1b33('0x43')){var _0x21f4da={};_0x21f4da[_0xd70a1e[_0x1b33('0x2d')]]={'$like':'%'+_0x567f0a['query']['filter']+'%'};return _0x21f4da;}})});}_0x5dfd47=_['merge']({},_0x5dfd47,_0x567f0a['options']);var _0x1f9f51={'where':_0x5dfd47[_0x1b33('0x42')]};return db[_0x1b33('0x30')][_0x1b33('0x20')](_0x1f9f51)[_0x1b33('0x27')](function(_0x50f6ec){_0x245308[_0x1b33('0x20')]=_0x50f6ec;if(_0x567f0a[_0x1b33('0x34')][_0x1b33('0x44')]){_0x5dfd47[_0x1b33('0x45')]=[{'all':!![]}];}return db['AnalyticExtractedReport']['findAll'](_0x5dfd47);})[_0x1b33('0x27')](function(_0x319350){_0x245308[_0x1b33('0x46')]=_0x319350;return _0x245308;})[_0x1b33('0x27')](respondWithFilteredResult(_0x3dcc49,_0x5dfd47))[_0x1b33('0x47')](handleError(_0x3dcc49,null));};exports[_0x1b33('0x48')]=function(_0x112b8f,_0x5e8d66){var _0x1faf66={'raw':!![],'where':{'id':_0x112b8f[_0x1b33('0x49')]['id']}},_0x14650b={};_0x14650b[_0x1b33('0x38')]=_[_0x1b33('0x35')](db[_0x1b33('0x30')]['rawAttributes']);_0x14650b[_0x1b33('0x34')]=_[_0x1b33('0x35')](_0x112b8f[_0x1b33('0x34')]);_0x14650b['filters']=_[_0x1b33('0x37')](_0x14650b[_0x1b33('0x38')],_0x14650b[_0x1b33('0x34')]);_0x1faf66[_0x1b33('0x3a')]=_[_0x1b33('0x37')](_0x14650b['model'],qs[_0x1b33('0x39')](_0x112b8f['query'][_0x1b33('0x39')]));_0x1faf66[_0x1b33('0x3a')]=_0x1faf66[_0x1b33('0x3a')][_0x1b33('0x3b')]?_0x1faf66['attributes']:_0x14650b[_0x1b33('0x38')];if(_0x112b8f[_0x1b33('0x34')][_0x1b33('0x44')]){_0x1faf66[_0x1b33('0x45')]=[{'all':!![]}];}_0x1faf66=_['merge']({},_0x1faf66,_0x112b8f['options']);return db[_0x1b33('0x30')][_0x1b33('0x4a')](_0x1faf66)[_0x1b33('0x27')](handleEntityNotFound(_0x5e8d66,null))[_0x1b33('0x27')](respondWithResult(_0x5e8d66,null))['catch'](handleError(_0x5e8d66,null));};exports[_0x1b33('0x4b')]=function(_0x45e6e2,_0x2ccb31){return db[_0x1b33('0x30')][_0x1b33('0x4b')](_0x45e6e2[_0x1b33('0x4c')],{})[_0x1b33('0x27')](function(_0x2d80db){var _0x3a1bc0=_0x45e6e2[_0x1b33('0x4d')][_0x1b33('0x4e')]({'plain':!![]});if(!_0x3a1bc0)throw new Error(_0x1b33('0x4f'));if(_0x3a1bc0[_0x1b33('0x50')]==='user'){var _0x53199e=_0x2d80db['get']({'plain':!![]});var _0x39bc1a=_0x1b33('0x29');return db['UserProfileSection'][_0x1b33('0x4a')]({'where':{'name':_0x39bc1a,'userProfileId':_0x3a1bc0[_0x1b33('0x51')]},'raw':!![]})[_0x1b33('0x27')](function(_0x44b932){if(_0x44b932&&_0x44b932[_0x1b33('0x52')]===0x0){return db[_0x1b33('0x2a')][_0x1b33('0x4b')]({'name':_0x53199e['name'],'resourceId':_0x53199e['id'],'type':_0x44b932[_0x1b33('0x2d')],'sectionId':_0x44b932['id']},{})[_0x1b33('0x27')](function(){return _0x2d80db;});}else{return _0x2d80db;}})[_0x1b33('0x47')](function(_0xec4618){logger['error'](_0x1b33('0x53'),_0xec4618);throw _0xec4618;});}return _0x2d80db;})['then'](respondWithResult(_0x2ccb31,0xc9))['catch'](handleError(_0x2ccb31,null));};exports[_0x1b33('0x26')]=function(_0x48d93c,_0x391706){if(_0x48d93c[_0x1b33('0x4c')]['id']){delete _0x48d93c[_0x1b33('0x4c')]['id'];}return db[_0x1b33('0x30')][_0x1b33('0x4a')]({'where':{'id':_0x48d93c[_0x1b33('0x49')]['id']}})['then'](handleEntityNotFound(_0x391706,null))[_0x1b33('0x27')](saveUpdates(_0x48d93c[_0x1b33('0x4c')],null))[_0x1b33('0x27')](respondWithResult(_0x391706,null))[_0x1b33('0x47')](handleError(_0x391706,null));};exports[_0x1b33('0x28')]=function(_0x24c6c0,_0x51f0ff){return db[_0x1b33('0x30')][_0x1b33('0x4a')]({'where':{'id':_0x24c6c0[_0x1b33('0x49')]['id']}})[_0x1b33('0x27')](handleEntityNotFound(_0x51f0ff,null))['then'](removeEntity(_0x51f0ff,null))[_0x1b33('0x47')](handleError(_0x51f0ff,null));};exports['download']=function(_0x5bdfa8,_0x510206,_0x542a61){return db[_0x1b33('0x30')][_0x1b33('0x4a')]({'where':{'id':_0x5bdfa8[_0x1b33('0x49')]['id']},'attributes':[_0x1b33('0x2d'),_0x1b33('0x54'),_0x1b33('0x55'),'output'],'raw':!![]})[_0x1b33('0x27')](handleEntityNotFound(_0x510206,null))[_0x1b33('0x27')](function(_0x41e7e){if(_0x41e7e){if(!fs[_0x1b33('0x56')](path[_0x1b33('0x57')](config['root'],'server/files/reports',_0x41e7e[_0x1b33('0x55')]))){throw new db[(_0x1b33('0x58'))][(_0x1b33('0x59'))]('Report\x20not\x20found\x20or\x20empty');}if(_0x5bdfa8[_0x1b33('0x34')][_0x1b33('0x5a')]){return _0x510206['sendStatus'](0xc8);}return _0x510206[_0x1b33('0x5b')](path[_0x1b33('0x57')](config[_0x1b33('0x5c')],'server/files/reports',_0x41e7e[_0x1b33('0x55')]),util[_0x1b33('0x5d')](_0x1b33('0x5e'),_0x41e7e[_0x1b33('0x54')]||_0x41e7e[_0x1b33('0x2d')],_0x41e7e[_0x1b33('0x5f')][_0x1b33('0x60')]()));}})[_0x1b33('0x47')](handleError(_0x510206,null));};
\ No newline at end of file
index f743b2f..aae936e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b75=['../../config/environment','./analyticExtractedReport.attributes','define','AnalyticExtractedReport','util','../../config/logger','api','moment','request-promise'];(function(_0x14dfb2,_0x441eb2){var _0x427ca6=function(_0x723a62){while(--_0x723a62){_0x14dfb2['push'](_0x14dfb2['shift']());}};_0x427ca6(++_0x441eb2);}(_0x0b75,0x109));var _0x50b7=function(_0x1d0df6,_0x470655){_0x1d0df6=_0x1d0df6-0x0;var _0xd2ea94=_0x0b75[_0x1d0df6];return _0xd2ea94;};'use strict';var _=require('lodash');var util=require(_0x50b7('0x0'));var logger=require(_0x50b7('0x1'))(_0x50b7('0x2'));var moment=require(_0x50b7('0x3'));var BPromise=require('bluebird');var rp=require(_0x50b7('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x50b7('0x5'));var attributes=require(_0x50b7('0x6'));module['exports']=function(_0x134dee,_0x2f6980){return _0x134dee[_0x50b7('0x7')](_0x50b7('0x8'),attributes,{'tableName':'analytics_extracted_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x320d=['../../config/logger','moment','bluebird','path','../../config/environment','AnalyticExtractedReport','analytics_extracted_reports','util'];(function(_0x10c7fd,_0x1c297c){var _0x29b4b0=function(_0x36acb0){while(--_0x36acb0){_0x10c7fd['push'](_0x10c7fd['shift']());}};_0x29b4b0(++_0x1c297c);}(_0x320d,0xf7));var _0xd320=function(_0x40f79d,_0x419f09){_0x40f79d=_0x40f79d-0x0;var _0x574a29=_0x320d[_0x40f79d];return _0x574a29;};'use strict';var _=require('lodash');var util=require(_0xd320('0x0'));var logger=require(_0xd320('0x1'))('api');var moment=require(_0xd320('0x2'));var BPromise=require(_0xd320('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd320('0x4'));var rimraf=require('rimraf');var config=require(_0xd320('0x5'));var attributes=require('./analyticExtractedReport.attributes');module['exports']=function(_0x540a30,_0x542786){return _0x540a30['define'](_0xd320('0x6'),attributes,{'tableName':_0xd320('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dce53c5..81710d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3c6=['request','then','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug','stringify','code','message','error','info','result','lodash','util','moment','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client'];(function(_0x1de7b1,_0x3f6dd5){var _0x11032f=function(_0x4d57c6){while(--_0x4d57c6){_0x1de7b1['push'](_0x1de7b1['shift']());}};_0x11032f(++_0x3f6dd5);}(_0xe3c6,0x1c4));var _0x6e3c=function(_0x5bf992,_0x533b26){_0x5bf992=_0x5bf992-0x0;var _0x288176=_0xe3c6[_0x5bf992];return _0x288176;};'use strict';var _=require(_0x6e3c('0x0'));var util=require(_0x6e3c('0x1'));var moment=require(_0x6e3c('0x2'));var BPromise=require('bluebird');var rs=require(_0x6e3c('0x3'));var fs=require('fs');var Redis=require(_0x6e3c('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6e3c('0x5'));var logger=require('../../config/logger')(_0x6e3c('0x6'));var config=require(_0x6e3c('0x7'));var jayson=require(_0x6e3c('0x8'));var client=jayson[_0x6e3c('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x14f162,_0x282980,_0x50cf7b){return new BPromise(function(_0x1c2a70,_0x2549d1){return client[_0x6e3c('0xa')](_0x14f162,_0x50cf7b)[_0x6e3c('0xb')](function(_0x397c56){logger['info'](_0x6e3c('0xc'),_0x282980,_0x6e3c('0xd'));logger[_0x6e3c('0xe')]('AnalyticExtractedReport,\x20%s,\x20%s,\x20%s',_0x282980,_0x6e3c('0xd'),JSON[_0x6e3c('0xf')](_0x397c56));if(_0x397c56['error']){if(_0x397c56['error'][_0x6e3c('0x10')]===0x1f4){logger['error'](_0x6e3c('0xc'),_0x282980,_0x397c56['error'][_0x6e3c('0x11')]);return _0x2549d1(_0x397c56[_0x6e3c('0x12')][_0x6e3c('0x11')]);}logger[_0x6e3c('0x12')](_0x6e3c('0xc'),_0x282980,_0x397c56[_0x6e3c('0x12')][_0x6e3c('0x11')]);return _0x1c2a70(_0x397c56[_0x6e3c('0x12')][_0x6e3c('0x11')]);}else{logger[_0x6e3c('0x13')](_0x6e3c('0xc'),_0x282980,_0x6e3c('0xd'));_0x1c2a70(_0x397c56[_0x6e3c('0x14')]['message']);}})['catch'](function(_0x2c6f73){logger[_0x6e3c('0x12')](_0x6e3c('0xc'),_0x282980,_0x2c6f73);_0x2549d1(_0x2c6f73);});});}
\ No newline at end of file
+var _0x2d75=['message','info','result','catch','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','request','then','request\x20sent','debug','stringify','error','code','AnalyticExtractedReport,\x20%s,\x20%s'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2d75,0xa4));var _0x52d7=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x2d75[_0x3947c9];return _0x2e7871;};'use strict';var _=require('lodash');var util=require(_0x52d7('0x0'));var moment=require(_0x52d7('0x1'));var BPromise=require(_0x52d7('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x52d7('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x52d7('0x4'));var logger=require(_0x52d7('0x5'))(_0x52d7('0x6'));var config=require(_0x52d7('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x468699,_0x45a1f6,_0xa6001e){return new BPromise(function(_0x19bbb4,_0x473e1b){return client[_0x52d7('0x8')](_0x468699,_0xa6001e)[_0x52d7('0x9')](function(_0x50968e){logger['info']('AnalyticExtractedReport,\x20%s,\x20%s',_0x45a1f6,_0x52d7('0xa'));logger[_0x52d7('0xb')]('AnalyticExtractedReport,\x20%s,\x20%s,\x20%s',_0x45a1f6,_0x52d7('0xa'),JSON[_0x52d7('0xc')](_0x50968e));if(_0x50968e[_0x52d7('0xd')]){if(_0x50968e[_0x52d7('0xd')][_0x52d7('0xe')]===0x1f4){logger[_0x52d7('0xd')](_0x52d7('0xf'),_0x45a1f6,_0x50968e[_0x52d7('0xd')][_0x52d7('0x10')]);return _0x473e1b(_0x50968e[_0x52d7('0xd')][_0x52d7('0x10')]);}logger[_0x52d7('0xd')](_0x52d7('0xf'),_0x45a1f6,_0x50968e[_0x52d7('0xd')][_0x52d7('0x10')]);return _0x19bbb4(_0x50968e[_0x52d7('0xd')]['message']);}else{logger[_0x52d7('0x11')](_0x52d7('0xf'),_0x45a1f6,'request\x20sent');_0x19bbb4(_0x50968e[_0x52d7('0x12')][_0x52d7('0x10')]);}})[_0x52d7('0x13')](function(_0x421ed9){logger[_0x52d7('0xd')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x45a1f6,_0x421ed9);_0x473e1b(_0x421ed9);});});}
\ No newline at end of file
index 3cb3f83..224761b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed98=['../../components/interaction/service','../../config/environment','./analyticExtractedReport.controller','get','isAuthenticated','/:id','show','/:id/download','download','create','put','update','delete','destroy','exports','util','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x3d71a3,_0x3a33b7){var _0x5bb3ab=function(_0x2834f2){while(--_0x2834f2){_0x3d71a3['push'](_0x3d71a3['shift']());}};_0x5bb3ab(++_0x3a33b7);}(_0xed98,0xd7));var _0x8ed9=function(_0x150a17,_0x12e876){_0x150a17=_0x150a17-0x0;var _0x439f1e=_0xed98[_0x150a17];return _0x439f1e;};'use strict';var multer=require('multer');var util=require(_0x8ed9('0x0'));var path=require('path');var timeout=require(_0x8ed9('0x1'));var express=require('express');var router=express[_0x8ed9('0x2')]();var fs_extra=require(_0x8ed9('0x3'));var auth=require(_0x8ed9('0x4'));var interaction=require(_0x8ed9('0x5'));var config=require(_0x8ed9('0x6'));var controller=require(_0x8ed9('0x7'));router[_0x8ed9('0x8')]('/',auth[_0x8ed9('0x9')](),controller['index']);router[_0x8ed9('0x8')](_0x8ed9('0xa'),auth[_0x8ed9('0x9')](),controller[_0x8ed9('0xb')]);router[_0x8ed9('0x8')](_0x8ed9('0xc'),auth['isAuthenticated'](),controller[_0x8ed9('0xd')]);router['post']('/',auth[_0x8ed9('0x9')](),controller[_0x8ed9('0xe')]);router[_0x8ed9('0xf')](_0x8ed9('0xa'),auth[_0x8ed9('0x9')](),controller[_0x8ed9('0x10')]);router[_0x8ed9('0x11')](_0x8ed9('0xa'),auth[_0x8ed9('0x9')](),controller[_0x8ed9('0x12')]);module[_0x8ed9('0x13')]=router;
\ No newline at end of file
+var _0x9592=['express','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/download','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x9592,0x1dd));var _0x2959=function(_0x4cfed7,_0x79bb84){_0x4cfed7=_0x4cfed7-0x0;var _0x567b31=_0x9592[_0x4cfed7];return _0x567b31;};'use strict';var multer=require(_0x2959('0x0'));var util=require(_0x2959('0x1'));var path=require('path');var timeout=require(_0x2959('0x2'));var express=require(_0x2959('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x2959('0x4'));var interaction=require(_0x2959('0x5'));var config=require(_0x2959('0x6'));var controller=require('./analyticExtractedReport.controller');router[_0x2959('0x7')]('/',auth[_0x2959('0x8')](),controller[_0x2959('0x9')]);router['get'](_0x2959('0xa'),auth[_0x2959('0x8')](),controller[_0x2959('0xb')]);router['get'](_0x2959('0xc'),auth['isAuthenticated'](),controller['download']);router[_0x2959('0xd')]('/',auth[_0x2959('0x8')](),controller[_0x2959('0xe')]);router[_0x2959('0xf')](_0x2959('0xa'),auth[_0x2959('0x8')](),controller[_0x2959('0x10')]);router[_0x2959('0x11')](_0x2959('0xa'),auth[_0x2959('0x8')](),controller[_0x2959('0x12')]);module[_0x2959('0x13')]=router;
\ No newline at end of file
index 9809c2f..c59c679 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1b5=['sequelize','STRING','BOOLEAN'];(function(_0x2baa44,_0x1b391f){var _0x1f5819=function(_0x518d4d){while(--_0x518d4d){_0x2baa44['push'](_0x2baa44['shift']());}};_0x1f5819(++_0x1b391f);}(_0xd1b5,0xbd));var _0x5d1b=function(_0x484b10,_0x578bff){_0x484b10=_0x484b10-0x0;var _0x5c7096=_0xd1b5[_0x484b10];return _0x5c7096;};'use strict';var Sequelize=require(_0x5d1b('0x0'));module['exports']={'field':{'type':Sequelize['TEXT']},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize[_0x5d1b('0x1')]},'format':{'type':Sequelize[_0x5d1b('0x1')]},'groupBy':{'type':Sequelize[_0x5d1b('0x2')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x5d1b('0x1')]},'custom':{'type':Sequelize[_0x5d1b('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0xc5f3=['STRING','BOOLEAN','sequelize','exports','TEXT'];(function(_0x33f754,_0x400b72){var _0x53e595=function(_0x4cd3ae){while(--_0x4cd3ae){_0x33f754['push'](_0x33f754['shift']());}};_0x53e595(++_0x400b72);}(_0xc5f3,0x165));var _0x3c5f=function(_0x300444,_0x472433){_0x300444=_0x300444-0x0;var _0x6d6a9b=_0xc5f3[_0x300444];return _0x6d6a9b;};'use strict';var Sequelize=require(_0x3c5f('0x0'));module[_0x3c5f('0x1')]={'field':{'type':Sequelize[_0x3c5f('0x2')]},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x3c5f('0x3')]},'groupBy':{'type':Sequelize[_0x3c5f('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x3c5f('0x3')]},'custom':{'type':Sequelize[_0x3c5f('0x4')],'defaultValue':![]}};
\ No newline at end of file
index 0988de4..ada67e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2834=['moment','bluebird','mustache','util','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','reject','save','then','stack','name','index','AnalyticFieldReport','rawAttributes','fieldName','key','model','keys','filters','query','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filter','merge','map','type','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','bulkCreate','update','destroy','ids','addFields','AnalyticCustomReport','findOne','sequelize','CustomReportId','eml-format','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0x2834,0x9d));var _0x4283=function(_0x47fe68,_0x3273a2){_0x47fe68=_0x47fe68-0x0;var _0x9a769a=_0x2834[_0x47fe68];return _0x9a769a;};'use strict';var emlformat=require(_0x4283('0x0'));var rimraf=require(_0x4283('0x1'));var zipdir=require(_0x4283('0x2'));var jsonpatch=require(_0x4283('0x3'));var rp=require(_0x4283('0x4'));var moment=require(_0x4283('0x5'));var BPromise=require(_0x4283('0x6'));var Mustache=require(_0x4283('0x7'));var util=require(_0x4283('0x8'));var path=require('path');var sox=require(_0x4283('0x9'));var csv=require(_0x4283('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4283('0xb'));var _=require('lodash');var squel=require(_0x4283('0xc'));var crypto=require(_0x4283('0xd'));var jsforce=require(_0x4283('0xe'));var deskjs=require(_0x4283('0xf'));var toCsv=require('to-csv');var querystring=require(_0x4283('0x10'));var Papa=require('papaparse');var Redis=require(_0x4283('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x4283('0x12'));var as=require(_0x4283('0x13'));var hardwareService=require(_0x4283('0x14'));var logger=require('../../config/logger')(_0x4283('0x15'));var utils=require(_0x4283('0x16'));var config=require(_0x4283('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x4283('0x18'))['db'];function respondWithStatusCode(_0x22dc1d,_0x265787){_0x265787=_0x265787||0xcc;return function(_0x570339){if(_0x570339){return _0x22dc1d[_0x4283('0x19')](_0x265787);}return _0x22dc1d[_0x4283('0x1a')](_0x265787)[_0x4283('0x1b')]();};}function respondWithResult(_0x208a56,_0x205588){_0x205588=_0x205588||0xc8;return function(_0x112ada){if(_0x112ada){return _0x208a56['status'](_0x205588)['json'](_0x112ada);}};}function respondWithFilteredResult(_0x4f7322,_0x19bddd){return function(_0x14f174){if(_0x14f174){var _0x16fe4d=typeof _0x19bddd[_0x4283('0x1c')]===_0x4283('0x1d')&&typeof _0x19bddd[_0x4283('0x1e')]==='undefined';var _0x548bb4=_0x14f174[_0x4283('0x1f')];var _0x4f71ad=_0x16fe4d?0x0:_0x19bddd[_0x4283('0x1c')];var _0x38136c=_0x16fe4d?_0x14f174[_0x4283('0x1f')]:_0x19bddd[_0x4283('0x1c')]+_0x19bddd['limit'];var _0x47d313;if(_0x38136c>=_0x548bb4){_0x38136c=_0x548bb4;_0x47d313=0xc8;}else{_0x47d313=0xce;}_0x4f7322[_0x4283('0x1a')](_0x47d313);return _0x4f7322[_0x4283('0x20')]('Content-Range',_0x4f71ad+'-'+_0x38136c+'/'+_0x548bb4)[_0x4283('0x21')](_0x14f174);}return null;};}function patchUpdates(_0x5e486d){return function(_0x5e79d3){try{jsonpatch['apply'](_0x5e79d3,_0x5e486d,!![]);}catch(_0x50c23a){return BPromise[_0x4283('0x22')](_0x50c23a);}return _0x5e79d3[_0x4283('0x23')]();};}function saveUpdates(_0x109768,_0xf482e8){return function(_0xfc7a2c){if(_0xfc7a2c){return _0xfc7a2c['update'](_0x109768)['then'](function(_0x570151){return _0x570151;});}return null;};}function removeEntity(_0x4f31d6,_0x23965d){return function(_0x56c6b2){if(_0x56c6b2){return _0x56c6b2['destroy']()[_0x4283('0x24')](function(){_0x4f31d6[_0x4283('0x1a')](0xcc)[_0x4283('0x1b')]();});}};}function handleEntityNotFound(_0x6783bd,_0x50bfa9){return function(_0x5deb48){if(!_0x5deb48){_0x6783bd[_0x4283('0x19')](0x194);}return _0x5deb48;};}function handleError(_0x21a7e4,_0x567087){_0x567087=_0x567087||0x1f4;return function(_0x2001c1){logger['error'](_0x2001c1[_0x4283('0x25')]);if(_0x2001c1[_0x4283('0x26')]){delete _0x2001c1[_0x4283('0x26')];}_0x21a7e4[_0x4283('0x1a')](_0x567087)['send'](_0x2001c1);};}exports[_0x4283('0x27')]=function(_0x59fd37,_0x1d708d){var _0x54be4f={},_0x135d3d={},_0x26f9aa={'count':0x0,'rows':[]};var _0x3da5e8=_['map'](db[_0x4283('0x28')][_0x4283('0x29')],function(_0x57eb28){return{'name':_0x57eb28[_0x4283('0x2a')],'type':_0x57eb28['type'][_0x4283('0x2b')]};});_0x135d3d[_0x4283('0x2c')]=_['map'](_0x3da5e8,_0x4283('0x26'));_0x135d3d['query']=_[_0x4283('0x2d')](_0x59fd37['query']);_0x135d3d[_0x4283('0x2e')]=_['intersection'](_0x135d3d[_0x4283('0x2c')],_0x135d3d[_0x4283('0x2f')]);_0x54be4f['attributes']=_[_0x4283('0x30')](_0x135d3d[_0x4283('0x2c')],qs[_0x4283('0x31')](_0x59fd37['query']['fields']));_0x54be4f[_0x4283('0x32')]=_0x54be4f[_0x4283('0x32')]['length']?_0x54be4f[_0x4283('0x32')]:_0x135d3d['model'];if(!_0x59fd37[_0x4283('0x2f')][_0x4283('0x33')](_0x4283('0x34'))){_0x54be4f['limit']=qs[_0x4283('0x1e')](_0x59fd37[_0x4283('0x2f')][_0x4283('0x1e')]);_0x54be4f[_0x4283('0x1c')]=qs[_0x4283('0x1c')](_0x59fd37[_0x4283('0x2f')][_0x4283('0x1c')]);}_0x54be4f[_0x4283('0x35')]=qs[_0x4283('0x36')](_0x59fd37[_0x4283('0x2f')][_0x4283('0x36')]);_0x54be4f[_0x4283('0x37')]=qs[_0x4283('0x2e')](_['pick'](_0x59fd37[_0x4283('0x2f')],_0x135d3d[_0x4283('0x2e')]),_0x3da5e8);if(_0x59fd37[_0x4283('0x2f')][_0x4283('0x38')]){_0x54be4f[_0x4283('0x37')]=_[_0x4283('0x39')](_0x54be4f[_0x4283('0x37')],{'$or':_[_0x4283('0x3a')](_0x3da5e8,function(_0x19ba5d){if(_0x19ba5d[_0x4283('0x3b')]!==_0x4283('0x3c')){var _0xd6aa1b={};_0xd6aa1b[_0x19ba5d[_0x4283('0x26')]]={'$like':'%'+_0x59fd37[_0x4283('0x2f')]['filter']+'%'};return _0xd6aa1b;}})});}_0x54be4f=_[_0x4283('0x39')]({},_0x54be4f,_0x59fd37['options']);var _0x2518e7={'where':_0x54be4f[_0x4283('0x37')]};return db[_0x4283('0x28')][_0x4283('0x1f')](_0x2518e7)['then'](function(_0x45105c){_0x26f9aa['count']=_0x45105c;if(_0x59fd37[_0x4283('0x2f')][_0x4283('0x3d')]){_0x54be4f[_0x4283('0x3e')]=[{'all':!![]}];}return db[_0x4283('0x28')][_0x4283('0x3f')](_0x54be4f);})[_0x4283('0x24')](function(_0x41b391){_0x26f9aa[_0x4283('0x40')]=_0x41b391;return _0x26f9aa;})['then'](respondWithFilteredResult(_0x1d708d,_0x54be4f))[_0x4283('0x41')](handleError(_0x1d708d,null));};exports[_0x4283('0x42')]=function(_0x20b037,_0x326a02){var _0x122d58={'raw':![],'where':{'id':_0x20b037[_0x4283('0x43')]['id']}},_0x52ccae={};_0x52ccae['model']=_[_0x4283('0x2d')](db[_0x4283('0x28')][_0x4283('0x29')]);_0x52ccae[_0x4283('0x2f')]=_[_0x4283('0x2d')](_0x20b037[_0x4283('0x2f')]);_0x52ccae[_0x4283('0x2e')]=_[_0x4283('0x30')](_0x52ccae[_0x4283('0x2c')],_0x52ccae[_0x4283('0x2f')]);_0x122d58['attributes']=_['intersection'](_0x52ccae[_0x4283('0x2c')],qs[_0x4283('0x31')](_0x20b037[_0x4283('0x2f')]['fields']));_0x122d58[_0x4283('0x32')]=_0x122d58[_0x4283('0x32')]['length']?_0x122d58['attributes']:_0x52ccae[_0x4283('0x2c')];if(_0x20b037['query'][_0x4283('0x3d')]){_0x122d58['include']=[{'all':!![]}];}_0x122d58=_[_0x4283('0x39')]({},_0x122d58,_0x20b037[_0x4283('0x44')]);return db['AnalyticFieldReport'][_0x4283('0x45')](_0x122d58)[_0x4283('0x24')](handleEntityNotFound(_0x326a02,null))['then'](respondWithResult(_0x326a02,null))[_0x4283('0x41')](handleError(_0x326a02,null));};exports[_0x4283('0x46')]=function(_0x2f5dc3,_0x188231){return db[_0x4283('0x28')][_0x4283('0x46')](_0x2f5dc3[_0x4283('0x47')],{})[_0x4283('0x24')](respondWithResult(_0x188231,0xc9))[_0x4283('0x41')](handleError(_0x188231,null));};exports[_0x4283('0x48')]=function(_0x493f23,_0x2f2f26){return db[_0x4283('0x28')]['bulkCreate'](_0x493f23[_0x4283('0x47')],{'raw':![],'individualHooks':!![]})[_0x4283('0x24')](respondWithResult(_0x2f2f26,0xc9))[_0x4283('0x41')](handleError(_0x2f2f26,null));};exports[_0x4283('0x49')]=function(_0x4920d9,_0x32d43f){if(_0x4920d9[_0x4283('0x47')]['id']){delete _0x4920d9[_0x4283('0x47')]['id'];}return db[_0x4283('0x28')][_0x4283('0x45')]({'where':{'id':_0x4920d9[_0x4283('0x43')]['id']}})[_0x4283('0x24')](handleEntityNotFound(_0x32d43f,null))[_0x4283('0x24')](saveUpdates(_0x4920d9[_0x4283('0x47')],null))['then'](respondWithResult(_0x32d43f,null))[_0x4283('0x41')](handleError(_0x32d43f,null));};exports[_0x4283('0x4a')]=function(_0x56b573,_0x28b2b8){return db[_0x4283('0x28')]['find']({'where':{'id':_0x56b573[_0x4283('0x43')]['id']}})['then'](handleEntityNotFound(_0x28b2b8,null))['then'](removeEntity(_0x28b2b8,null))[_0x4283('0x41')](handleError(_0x28b2b8,null));};exports['bulkDestroy']=function(_0x379d8c,_0x265c93){return db[_0x4283('0x28')][_0x4283('0x4a')]({'where':{'id':_0x379d8c[_0x4283('0x2f')][_0x4283('0x4b')]||[]},'raw':![],'individualHooks':!![]})[_0x4283('0x24')](respondWithResult(_0x265c93,0xcc))[_0x4283('0x41')](handleError(_0x265c93,null));};exports[_0x4283('0x4c')]=function(_0x508031,_0xf1fc23,_0x334e38){return db[_0x4283('0x4d')][_0x4283('0x4e')]({'where':{'id':_0x508031[_0x4283('0x43')]['id']}})[_0x4283('0x24')](handleEntityNotFound(_0xf1fc23,null))[_0x4283('0x24')](function(_0x527da8){if(_0x527da8){return db[_0x4283('0x4f')]['transaction'](function(_0x53766c){return db['AnalyticFieldReport'][_0x4283('0x4a')]({'where':{'CustomReportId':_0x508031[_0x4283('0x43')]['id']},'transaction':_0x53766c})[_0x4283('0x24')](function(_0x55b8e1){var _0x3414ed=_['map'](_0x508031[_0x4283('0x47')],function(_0x421a9f){delete _0x421a9f['id'];_0x421a9f[_0x4283('0x50')]=_0x508031[_0x4283('0x43')]['id'];return _0x421a9f;});return db[_0x4283('0x28')][_0x4283('0x48')](_0x3414ed,{'transaction':_0x53766c});});})[_0x4283('0x24')](function(){return db[_0x4283('0x28')][_0x4283('0x3f')]({'where':{'CustomReportId':_0x508031['params']['id']}});});}})[_0x4283('0x24')](respondWithResult(_0xf1fc23,null))[_0x4283('0x41')](handleError(_0xf1fc23,null));};
\ No newline at end of file
+var _0x730d=['rows','catch','show','params','length','options','find','create','bulkCreate','body','bulkDestroy','ids','addFields','AnalyticCustomReport','sequelize','transaction','CustomReportId','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','apply','reject','save','update','destroy','then','sendStatus','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','merge','includeAll','include','AnalyticFieldReport','findAll'];(function(_0x944797,_0x147b4c){var _0x1908ca=function(_0x5bde5f){while(--_0x5bde5f){_0x944797['push'](_0x944797['shift']());}};_0x1908ca(++_0x147b4c);}(_0x730d,0x110));var _0xd730=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0x730d[_0xae7c2f];return _0x5d7001;};'use strict';var emlformat=require(_0xd730('0x0'));var rimraf=require(_0xd730('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd730('0x2'));var rp=require(_0xd730('0x3'));var moment=require(_0xd730('0x4'));var BPromise=require(_0xd730('0x5'));var Mustache=require(_0xd730('0x6'));var util=require('util');var path=require(_0xd730('0x7'));var sox=require(_0xd730('0x8'));var csv=require('to-csv');var ejs=require(_0xd730('0x9'));var fs=require('fs');var fs_extra=require(_0xd730('0xa'));var _=require(_0xd730('0xb'));var squel=require(_0xd730('0xc'));var crypto=require(_0xd730('0xd'));var jsforce=require(_0xd730('0xe'));var deskjs=require(_0xd730('0xf'));var toCsv=require('to-csv');var querystring=require(_0xd730('0x10'));var Papa=require(_0xd730('0x11'));var Redis=require(_0xd730('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xd730('0x13'));var as=require(_0xd730('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd730('0x15'))(_0xd730('0x16'));var utils=require(_0xd730('0x17'));var config=require(_0xd730('0x18'));var licenseUtil=require(_0xd730('0x19'));var db=require(_0xd730('0x1a'))['db'];function respondWithStatusCode(_0x2effd5,_0x2af404){_0x2af404=_0x2af404||0xcc;return function(_0x28fd9c){if(_0x28fd9c){return _0x2effd5['sendStatus'](_0x2af404);}return _0x2effd5[_0xd730('0x1b')](_0x2af404)[_0xd730('0x1c')]();};}function respondWithResult(_0x3e417f,_0x31a0ed){_0x31a0ed=_0x31a0ed||0xc8;return function(_0x1776fb){if(_0x1776fb){return _0x3e417f['status'](_0x31a0ed)[_0xd730('0x1d')](_0x1776fb);}};}function respondWithFilteredResult(_0x9d1e4a,_0x374e7d){return function(_0x17f7f9){if(_0x17f7f9){var _0x363487=typeof _0x374e7d['offset']===_0xd730('0x1e')&&typeof _0x374e7d[_0xd730('0x1f')]===_0xd730('0x1e');var _0x569616=_0x17f7f9[_0xd730('0x20')];var _0x44198d=_0x363487?0x0:_0x374e7d[_0xd730('0x21')];var _0x359312=_0x363487?_0x17f7f9[_0xd730('0x20')]:_0x374e7d['offset']+_0x374e7d[_0xd730('0x1f')];var _0x1615c5;if(_0x359312>=_0x569616){_0x359312=_0x569616;_0x1615c5=0xc8;}else{_0x1615c5=0xce;}_0x9d1e4a[_0xd730('0x1b')](_0x1615c5);return _0x9d1e4a['set']('Content-Range',_0x44198d+'-'+_0x359312+'/'+_0x569616)[_0xd730('0x1d')](_0x17f7f9);}return null;};}function patchUpdates(_0x5e280d){return function(_0x44d434){try{jsonpatch[_0xd730('0x22')](_0x44d434,_0x5e280d,!![]);}catch(_0x24f9e2){return BPromise[_0xd730('0x23')](_0x24f9e2);}return _0x44d434[_0xd730('0x24')]();};}function saveUpdates(_0x5d5f31,_0xc5a138){return function(_0x5b14e9){if(_0x5b14e9){return _0x5b14e9[_0xd730('0x25')](_0x5d5f31)['then'](function(_0x4c2ab7){return _0x4c2ab7;});}return null;};}function removeEntity(_0x3dc3af,_0xb20868){return function(_0x1c453d){if(_0x1c453d){return _0x1c453d[_0xd730('0x26')]()[_0xd730('0x27')](function(){_0x3dc3af[_0xd730('0x1b')](0xcc)[_0xd730('0x1c')]();});}};}function handleEntityNotFound(_0x489180,_0x23ce84){return function(_0x55193b){if(!_0x55193b){_0x489180[_0xd730('0x28')](0x194);}return _0x55193b;};}function handleError(_0x61e9c2,_0x1e61ad){_0x1e61ad=_0x1e61ad||0x1f4;return function(_0x558689){logger[_0xd730('0x29')](_0x558689['stack']);if(_0x558689[_0xd730('0x2a')]){delete _0x558689[_0xd730('0x2a')];}_0x61e9c2['status'](_0x1e61ad)[_0xd730('0x2b')](_0x558689);};}exports[_0xd730('0x2c')]=function(_0x21c1a4,_0x14c877){var _0x56db28={},_0x184903={},_0x11df02={'count':0x0,'rows':[]};var _0x65ac3f=_[_0xd730('0x2d')](db['AnalyticFieldReport'][_0xd730('0x2e')],function(_0x507f40){return{'name':_0x507f40[_0xd730('0x2f')],'type':_0x507f40[_0xd730('0x30')][_0xd730('0x31')]};});_0x184903[_0xd730('0x32')]=_['map'](_0x65ac3f,'name');_0x184903[_0xd730('0x33')]=_[_0xd730('0x34')](_0x21c1a4[_0xd730('0x33')]);_0x184903[_0xd730('0x35')]=_[_0xd730('0x36')](_0x184903[_0xd730('0x32')],_0x184903[_0xd730('0x33')]);_0x56db28[_0xd730('0x37')]=_[_0xd730('0x36')](_0x184903[_0xd730('0x32')],qs['fields'](_0x21c1a4[_0xd730('0x33')][_0xd730('0x38')]));_0x56db28[_0xd730('0x37')]=_0x56db28[_0xd730('0x37')]['length']?_0x56db28[_0xd730('0x37')]:_0x184903['model'];if(!_0x21c1a4['query']['hasOwnProperty'](_0xd730('0x39'))){_0x56db28[_0xd730('0x1f')]=qs['limit'](_0x21c1a4[_0xd730('0x33')][_0xd730('0x1f')]);_0x56db28[_0xd730('0x21')]=qs[_0xd730('0x21')](_0x21c1a4['query'][_0xd730('0x21')]);}_0x56db28[_0xd730('0x3a')]=qs[_0xd730('0x3b')](_0x21c1a4[_0xd730('0x33')][_0xd730('0x3b')]);_0x56db28[_0xd730('0x3c')]=qs[_0xd730('0x35')](_[_0xd730('0x3d')](_0x21c1a4[_0xd730('0x33')],_0x184903['filters']),_0x65ac3f);if(_0x21c1a4[_0xd730('0x33')][_0xd730('0x3e')]){_0x56db28[_0xd730('0x3c')]=_[_0xd730('0x3f')](_0x56db28[_0xd730('0x3c')],{'$or':_['map'](_0x65ac3f,function(_0x3c80fd){if(_0x3c80fd[_0xd730('0x30')]!=='VIRTUAL'){var _0x2433cc={};_0x2433cc[_0x3c80fd[_0xd730('0x2a')]]={'$like':'%'+_0x21c1a4[_0xd730('0x33')]['filter']+'%'};return _0x2433cc;}})});}_0x56db28=_[_0xd730('0x3f')]({},_0x56db28,_0x21c1a4['options']);var _0x362d4f={'where':_0x56db28['where']};return db['AnalyticFieldReport'][_0xd730('0x20')](_0x362d4f)[_0xd730('0x27')](function(_0xced2a9){_0x11df02[_0xd730('0x20')]=_0xced2a9;if(_0x21c1a4[_0xd730('0x33')][_0xd730('0x40')]){_0x56db28[_0xd730('0x41')]=[{'all':!![]}];}return db[_0xd730('0x42')][_0xd730('0x43')](_0x56db28);})[_0xd730('0x27')](function(_0x519cd2){_0x11df02[_0xd730('0x44')]=_0x519cd2;return _0x11df02;})[_0xd730('0x27')](respondWithFilteredResult(_0x14c877,_0x56db28))[_0xd730('0x45')](handleError(_0x14c877,null));};exports[_0xd730('0x46')]=function(_0x1a4a32,_0x16b07a){var _0x3835e2={'raw':![],'where':{'id':_0x1a4a32[_0xd730('0x47')]['id']}},_0x7e05={};_0x7e05[_0xd730('0x32')]=_['keys'](db[_0xd730('0x42')]['rawAttributes']);_0x7e05['query']=_[_0xd730('0x34')](_0x1a4a32[_0xd730('0x33')]);_0x7e05['filters']=_[_0xd730('0x36')](_0x7e05[_0xd730('0x32')],_0x7e05[_0xd730('0x33')]);_0x3835e2[_0xd730('0x37')]=_[_0xd730('0x36')](_0x7e05[_0xd730('0x32')],qs[_0xd730('0x38')](_0x1a4a32[_0xd730('0x33')][_0xd730('0x38')]));_0x3835e2[_0xd730('0x37')]=_0x3835e2[_0xd730('0x37')][_0xd730('0x48')]?_0x3835e2['attributes']:_0x7e05[_0xd730('0x32')];if(_0x1a4a32[_0xd730('0x33')][_0xd730('0x40')]){_0x3835e2[_0xd730('0x41')]=[{'all':!![]}];}_0x3835e2=_[_0xd730('0x3f')]({},_0x3835e2,_0x1a4a32[_0xd730('0x49')]);return db[_0xd730('0x42')][_0xd730('0x4a')](_0x3835e2)[_0xd730('0x27')](handleEntityNotFound(_0x16b07a,null))[_0xd730('0x27')](respondWithResult(_0x16b07a,null))[_0xd730('0x45')](handleError(_0x16b07a,null));};exports[_0xd730('0x4b')]=function(_0x51893b,_0x437879){return db[_0xd730('0x42')][_0xd730('0x4b')](_0x51893b['body'],{})[_0xd730('0x27')](respondWithResult(_0x437879,0xc9))['catch'](handleError(_0x437879,null));};exports[_0xd730('0x4c')]=function(_0x4fbbb7,_0x10288e){return db['AnalyticFieldReport']['bulkCreate'](_0x4fbbb7[_0xd730('0x4d')],{'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x10288e,0xc9))['catch'](handleError(_0x10288e,null));};exports[_0xd730('0x25')]=function(_0x364870,_0x5e0aa0){if(_0x364870[_0xd730('0x4d')]['id']){delete _0x364870[_0xd730('0x4d')]['id'];}return db[_0xd730('0x42')][_0xd730('0x4a')]({'where':{'id':_0x364870['params']['id']}})[_0xd730('0x27')](handleEntityNotFound(_0x5e0aa0,null))[_0xd730('0x27')](saveUpdates(_0x364870[_0xd730('0x4d')],null))[_0xd730('0x27')](respondWithResult(_0x5e0aa0,null))[_0xd730('0x45')](handleError(_0x5e0aa0,null));};exports[_0xd730('0x26')]=function(_0x254357,_0x5e03ce){return db[_0xd730('0x42')][_0xd730('0x4a')]({'where':{'id':_0x254357[_0xd730('0x47')]['id']}})['then'](handleEntityNotFound(_0x5e03ce,null))[_0xd730('0x27')](removeEntity(_0x5e03ce,null))[_0xd730('0x45')](handleError(_0x5e03ce,null));};exports[_0xd730('0x4e')]=function(_0x282b62,_0x69b95b){return db[_0xd730('0x42')][_0xd730('0x26')]({'where':{'id':_0x282b62['query'][_0xd730('0x4f')]||[]},'raw':![],'individualHooks':!![]})[_0xd730('0x27')](respondWithResult(_0x69b95b,0xcc))[_0xd730('0x45')](handleError(_0x69b95b,null));};exports[_0xd730('0x50')]=function(_0x293285,_0x458a14,_0x548b27){return db[_0xd730('0x51')]['findOne']({'where':{'id':_0x293285[_0xd730('0x47')]['id']}})[_0xd730('0x27')](handleEntityNotFound(_0x458a14,null))[_0xd730('0x27')](function(_0x58b36b){if(_0x58b36b){return db[_0xd730('0x52')][_0xd730('0x53')](function(_0x58a198){return db[_0xd730('0x42')][_0xd730('0x26')]({'where':{'CustomReportId':_0x293285[_0xd730('0x47')]['id']},'transaction':_0x58a198})['then'](function(_0x2c7297){var _0x56e3f1=_[_0xd730('0x2d')](_0x293285['body'],function(_0x37e3bc){delete _0x37e3bc['id'];_0x37e3bc[_0xd730('0x54')]=_0x293285[_0xd730('0x47')]['id'];return _0x37e3bc;});return db[_0xd730('0x42')][_0xd730('0x4c')](_0x56e3f1,{'transaction':_0x58a198});});})['then'](function(){return db[_0xd730('0x42')]['findAll']({'where':{'CustomReportId':_0x293285[_0xd730('0x47')]['id']}});});}})['then'](respondWithResult(_0x458a14,null))[_0xd730('0x45')](handleError(_0x458a14,null));};
\ No newline at end of file
index 4ce70d6..07addc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e3f=['define','AnalyticFieldReport','analytics_report_fields','lodash','util','../../config/logger','api','moment','path','rimraf','./analyticFieldReport.attributes','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5e3f,0x15f));var _0xf5e3=function(_0x13f58b,_0x1d8b31){_0x13f58b=_0x13f58b-0x0;var _0x4b05d6=_0x5e3f[_0x13f58b];return _0x4b05d6;};'use strict';var _=require(_0xf5e3('0x0'));var util=require(_0xf5e3('0x1'));var logger=require(_0xf5e3('0x2'))(_0xf5e3('0x3'));var moment=require(_0xf5e3('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xf5e3('0x5'));var rimraf=require(_0xf5e3('0x6'));var config=require('../../config/environment');var attributes=require(_0xf5e3('0x7'));module[_0xf5e3('0x8')]=function(_0x5c8d56,_0xed7177){return _0x5c8d56[_0xf5e3('0x9')](_0xf5e3('0xa'),attributes,{'tableName':_0xf5e3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe418=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports','AnalyticFieldReport','analytics_report_fields','lodash'];(function(_0x11643a,_0x46c5ec){var _0x3f2ece=function(_0x3886e7){while(--_0x3886e7){_0x11643a['push'](_0x11643a['shift']());}};_0x3f2ece(++_0x46c5ec);}(_0xe418,0x11f));var _0x8e41=function(_0x1c792d,_0x368c8e){_0x1c792d=_0x1c792d-0x0;var _0x418b36=_0xe418[_0x1c792d];return _0x418b36;};'use strict';var _=require(_0x8e41('0x0'));var util=require(_0x8e41('0x1'));var logger=require(_0x8e41('0x2'))(_0x8e41('0x3'));var moment=require(_0x8e41('0x4'));var BPromise=require(_0x8e41('0x5'));var rp=require(_0x8e41('0x6'));var fs=require('fs');var path=require(_0x8e41('0x7'));var rimraf=require(_0x8e41('0x8'));var config=require('../../config/environment');var attributes=require('./analyticFieldReport.attributes');module[_0x8e41('0x9')]=function(_0x58863e,_0x77ada2){return _0x58863e['define'](_0x8e41('0xa'),attributes,{'tableName':_0x8e41('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 433fa33..e72a13b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x026b=['bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','stringify','error','code','AnalyticFieldReport,\x20%s,\x20%s','message','result','catch','lodash','util','moment'];(function(_0x56975f,_0x5405b2){var _0x514940=function(_0x3e6be6){while(--_0x3e6be6){_0x56975f['push'](_0x56975f['shift']());}};_0x514940(++_0x5405b2);}(_0x026b,0x17d));var _0xb026=function(_0x46efd7,_0x43f84d){_0x46efd7=_0x46efd7-0x0;var _0x5637e4=_0x026b[_0x46efd7];return _0x5637e4;};'use strict';var _=require(_0xb026('0x0'));var util=require(_0xb026('0x1'));var moment=require(_0xb026('0x2'));var BPromise=require(_0xb026('0x3'));var rs=require(_0xb026('0x4'));var fs=require('fs');var Redis=require(_0xb026('0x5'));var db=require(_0xb026('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xb026('0x7'))(_0xb026('0x8'));var config=require(_0xb026('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xb026('0xa')][_0xb026('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4a3dd3,_0x51cc4d,_0x27e173){return new BPromise(function(_0xc37ac6,_0x358fd6){return client[_0xb026('0xc')](_0x4a3dd3,_0x27e173)[_0xb026('0xd')](function(_0x198cc3){logger[_0xb026('0xe')]('AnalyticFieldReport,\x20%s,\x20%s',_0x51cc4d,_0xb026('0xf'));logger[_0xb026('0x10')]('AnalyticFieldReport,\x20%s,\x20%s,\x20%s',_0x51cc4d,_0xb026('0xf'),JSON[_0xb026('0x11')](_0x198cc3));if(_0x198cc3[_0xb026('0x12')]){if(_0x198cc3['error'][_0xb026('0x13')]===0x1f4){logger[_0xb026('0x12')](_0xb026('0x14'),_0x51cc4d,_0x198cc3[_0xb026('0x12')][_0xb026('0x15')]);return _0x358fd6(_0x198cc3['error']['message']);}logger['error'](_0xb026('0x14'),_0x51cc4d,_0x198cc3[_0xb026('0x12')][_0xb026('0x15')]);return _0xc37ac6(_0x198cc3[_0xb026('0x12')][_0xb026('0x15')]);}else{logger[_0xb026('0xe')]('AnalyticFieldReport,\x20%s,\x20%s',_0x51cc4d,_0xb026('0xf'));_0xc37ac6(_0x198cc3[_0xb026('0x16')][_0xb026('0x15')]);}})[_0xb026('0x17')](function(_0x21a8ce){logger[_0xb026('0x12')](_0xb026('0x14'),_0x51cc4d,_0x21a8ce);_0x358fd6(_0x21a8ce);});});}
\ No newline at end of file
+var _0xa349=['AnalyticFieldReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','AnalyticFieldReport,\x20%s,\x20%s'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa349,0x124));var _0x9a34=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa349[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x9a34('0x0'));var util=require(_0x9a34('0x1'));var moment=require(_0x9a34('0x2'));var BPromise=require(_0x9a34('0x3'));var rs=require(_0x9a34('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9a34('0x5'))['db'];var utils=require(_0x9a34('0x6'));var logger=require('../../config/logger')(_0x9a34('0x7'));var config=require(_0x9a34('0x8'));var jayson=require(_0x9a34('0x9'));var client=jayson[_0x9a34('0xa')][_0x9a34('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x25aad0,_0x1988b4,_0x55e713){return new BPromise(function(_0x4b8b13,_0x259632){return client[_0x9a34('0xc')](_0x25aad0,_0x55e713)[_0x9a34('0xd')](function(_0x18ccf8){logger[_0x9a34('0xe')](_0x9a34('0xf'),_0x1988b4,'request\x20sent');logger['debug'](_0x9a34('0x10'),_0x1988b4,_0x9a34('0x11'),JSON['stringify'](_0x18ccf8));if(_0x18ccf8[_0x9a34('0x12')]){if(_0x18ccf8[_0x9a34('0x12')][_0x9a34('0x13')]===0x1f4){logger['error']('AnalyticFieldReport,\x20%s,\x20%s',_0x1988b4,_0x18ccf8['error'][_0x9a34('0x14')]);return _0x259632(_0x18ccf8[_0x9a34('0x12')][_0x9a34('0x14')]);}logger[_0x9a34('0x12')](_0x9a34('0xf'),_0x1988b4,_0x18ccf8[_0x9a34('0x12')][_0x9a34('0x14')]);return _0x4b8b13(_0x18ccf8[_0x9a34('0x12')][_0x9a34('0x14')]);}else{logger['info']('AnalyticFieldReport,\x20%s,\x20%s',_0x1988b4,_0x9a34('0x11'));_0x4b8b13(_0x18ccf8['result'][_0x9a34('0x14')]);}})[_0x9a34('0x15')](function(_0x756e7e){logger[_0x9a34('0x12')](_0x9a34('0xf'),_0x1988b4,_0x756e7e);_0x259632(_0x756e7e);});});}
\ No newline at end of file
index 5c84fe7..a3e3d98 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(_0x2af20f,_0x1376c1){var _0x422d3e=function(_0x214c71){while(--_0x214c71){_0x2af20f['push'](_0x2af20f['shift']());}};_0x422d3e(++_0x1376c1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0xa9e0[_0x134c2e];return _0x2825db;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x0a9e('0xb')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xb')](_0x0a9e('0xf'),auth['isAuthenticated'](),controller['addFields']);router['put']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);module[_0x0a9e('0x15')]=router;
\ No newline at end of file
+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(_0x3fdbdc,_0xca225c){var _0x51e831=function(_0x462da8){while(--_0x462da8){_0x3fdbdc['push'](_0x3fdbdc['shift']());}};_0x51e831(++_0xca225c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xa9e0[_0x6c993a];return _0x27f547;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));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 aa089de..10bc19a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a41=['name','TEXT','sequelize','STRING'];(function(_0xcbebc7,_0x416065){var _0x2d884b=function(_0x58a739){while(--_0x58a739){_0xcbebc7['push'](_0xcbebc7['shift']());}};_0x2d884b(++_0x416065);}(_0x2a41,0x126));var _0x12a4=function(_0x56bef9,_0x40a34d){_0x56bef9=_0x56bef9-0x0;var _0x225efc=_0x2a41[_0x56bef9];return _0x225efc;};'use strict';var Sequelize=require(_0x12a4('0x0'));module['exports']={'name':{'type':Sequelize[_0x12a4('0x1')],'allowNull':![],'unique':_0x12a4('0x2')},'table':{'type':Sequelize[_0x12a4('0x1')]},'metric':{'type':Sequelize[_0x12a4('0x3')]},'description':{'type':Sequelize[_0x12a4('0x1')]}};
\ No newline at end of file
+var _0x292b=['sequelize','exports','STRING','name','TEXT'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x292b,0x64));var _0xb292=function(_0x3c0ccd,_0x1e1335){_0x3c0ccd=_0x3c0ccd-0x0;var _0x23231c=_0x292b[_0x3c0ccd];return _0x23231c;};'use strict';var Sequelize=require(_0xb292('0x0'));module[_0xb292('0x1')]={'name':{'type':Sequelize[_0xb292('0x2')],'allowNull':![],'unique':_0xb292('0x3')},'table':{'type':Sequelize[_0xb292('0x2')]},'metric':{'type':Sequelize[_0xb292('0x4')]},'description':{'type':Sequelize[_0xb292('0x2')]}};
\ No newline at end of file
index 50dba72..b130756 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84ab=['UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','get','Metrics','UserProfileResource','error','stack','name','map','AnalyticMetric','rawAttributes','fieldName','key','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','filter','type','VIRTUAL','includeAll','include','catch','show','params','keys','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user'];(function(_0xffa198,_0x5a8940){var _0x1e4b50=function(_0x1f1c43){while(--_0x1f1c43){_0xffa198['push'](_0xffa198['shift']());}};_0x1e4b50(++_0x5a8940);}(_0x84ab,0x12f));var _0xb84a=function(_0xaa0309,_0x1c8008){_0xaa0309=_0xaa0309-0x0;var _0x5de7ce=_0x84ab[_0xaa0309];return _0x5de7ce;};'use strict';var emlformat=require(_0xb84a('0x0'));var rimraf=require(_0xb84a('0x1'));var zipdir=require(_0xb84a('0x2'));var jsonpatch=require(_0xb84a('0x3'));var rp=require(_0xb84a('0x4'));var moment=require('moment');var BPromise=require(_0xb84a('0x5'));var Mustache=require(_0xb84a('0x6'));var util=require('util');var path=require(_0xb84a('0x7'));var sox=require(_0xb84a('0x8'));var csv=require(_0xb84a('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xb84a('0xa'));var crypto=require('crypto');var jsforce=require(_0xb84a('0xb'));var deskjs=require(_0xb84a('0xc'));var toCsv=require('to-csv');var querystring=require(_0xb84a('0xd'));var Papa=require('papaparse');var Redis=require(_0xb84a('0xe'));var authService=require(_0xb84a('0xf'));var qs=require(_0xb84a('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb84a('0x11'));var utils=require(_0xb84a('0x12'));var config=require(_0xb84a('0x13'));var licenseUtil=require(_0xb84a('0x14'));var db=require(_0xb84a('0x15'))['db'];function respondWithStatusCode(_0x4d3758,_0x83444e){_0x83444e=_0x83444e||0xcc;return function(_0x4777dc){if(_0x4777dc){return _0x4d3758[_0xb84a('0x16')](_0x83444e);}return _0x4d3758[_0xb84a('0x17')](_0x83444e)[_0xb84a('0x18')]();};}function respondWithResult(_0x11dfe9,_0x12ccab){_0x12ccab=_0x12ccab||0xc8;return function(_0x475b){if(_0x475b){return _0x11dfe9[_0xb84a('0x17')](_0x12ccab)[_0xb84a('0x19')](_0x475b);}};}function respondWithFilteredResult(_0xc0b2e0,_0x1251ec){return function(_0x5716bd){if(_0x5716bd){var _0x11dd4d=typeof _0x1251ec[_0xb84a('0x1a')]===_0xb84a('0x1b')&&typeof _0x1251ec[_0xb84a('0x1c')]===_0xb84a('0x1b');var _0x1be87a=_0x5716bd[_0xb84a('0x1d')];var _0x34d82f=_0x11dd4d?0x0:_0x1251ec[_0xb84a('0x1a')];var _0x3f7437=_0x11dd4d?_0x5716bd[_0xb84a('0x1d')]:_0x1251ec[_0xb84a('0x1a')]+_0x1251ec[_0xb84a('0x1c')];var _0x200289;if(_0x3f7437>=_0x1be87a){_0x3f7437=_0x1be87a;_0x200289=0xc8;}else{_0x200289=0xce;}_0xc0b2e0['status'](_0x200289);return _0xc0b2e0[_0xb84a('0x1e')](_0xb84a('0x1f'),_0x34d82f+'-'+_0x3f7437+'/'+_0x1be87a)['json'](_0x5716bd);}return null;};}function patchUpdates(_0xac76d3){return function(_0x61ef03){try{jsonpatch[_0xb84a('0x20')](_0x61ef03,_0xac76d3,!![]);}catch(_0x19f637){return BPromise['reject'](_0x19f637);}return _0x61ef03['save']();};}function saveUpdates(_0x1466ae,_0x19097d){return function(_0x2d70fd){if(_0x2d70fd){return _0x2d70fd[_0xb84a('0x21')](_0x1466ae)[_0xb84a('0x22')](function(_0x3b8fb2){return _0x3b8fb2;});}return null;};}function removeEntity(_0x8b28cd,_0x21d0d3){return function(_0x3aa06f){if(_0x3aa06f){return _0x3aa06f[_0xb84a('0x23')]()[_0xb84a('0x22')](function(){var _0x1aab7d=_0x3aa06f[_0xb84a('0x24')]({'plain':!![]});var _0x409df0=_0xb84a('0x25');return db[_0xb84a('0x26')][_0xb84a('0x23')]({'where':{'type':_0x409df0,'resourceId':_0x1aab7d['id']}})[_0xb84a('0x22')](function(){return _0x3aa06f;});})[_0xb84a('0x22')](function(){_0x8b28cd[_0xb84a('0x17')](0xcc)[_0xb84a('0x18')]();});}};}function handleEntityNotFound(_0x1db72c,_0x2fe40d){return function(_0x35d1f7){if(!_0x35d1f7){_0x1db72c[_0xb84a('0x16')](0x194);}return _0x35d1f7;};}function handleError(_0x97d71b,_0x5349ea){_0x5349ea=_0x5349ea||0x1f4;return function(_0x582954){logger[_0xb84a('0x27')](_0x582954[_0xb84a('0x28')]);if(_0x582954['name']){delete _0x582954[_0xb84a('0x29')];}_0x97d71b[_0xb84a('0x17')](_0x5349ea)['send'](_0x582954);};}exports['index']=function(_0x28f2e7,_0x8e9319){var _0x49ba3d={},_0x251778={},_0xba1147={'count':0x0,'rows':[]};var _0x3abc22=_[_0xb84a('0x2a')](db[_0xb84a('0x2b')][_0xb84a('0x2c')],function(_0x34b212){return{'name':_0x34b212[_0xb84a('0x2d')],'type':_0x34b212['type'][_0xb84a('0x2e')]};});_0x251778['model']=_['map'](_0x3abc22,_0xb84a('0x29'));_0x251778[_0xb84a('0x2f')]=_['keys'](_0x28f2e7['query']);_0x251778[_0xb84a('0x30')]=_[_0xb84a('0x31')](_0x251778[_0xb84a('0x32')],_0x251778[_0xb84a('0x2f')]);_0x49ba3d[_0xb84a('0x33')]=_[_0xb84a('0x31')](_0x251778[_0xb84a('0x32')],qs[_0xb84a('0x34')](_0x28f2e7['query'][_0xb84a('0x34')]));_0x49ba3d[_0xb84a('0x33')]=_0x49ba3d[_0xb84a('0x33')][_0xb84a('0x35')]?_0x49ba3d[_0xb84a('0x33')]:_0x251778[_0xb84a('0x32')];if(!_0x28f2e7[_0xb84a('0x2f')]['hasOwnProperty'](_0xb84a('0x36'))){_0x49ba3d['limit']=qs[_0xb84a('0x1c')](_0x28f2e7[_0xb84a('0x2f')][_0xb84a('0x1c')]);_0x49ba3d['offset']=qs['offset'](_0x28f2e7[_0xb84a('0x2f')][_0xb84a('0x1a')]);}_0x49ba3d[_0xb84a('0x37')]=qs[_0xb84a('0x38')](_0x28f2e7[_0xb84a('0x2f')]['sort']);_0x49ba3d[_0xb84a('0x39')]=qs[_0xb84a('0x30')](_['pick'](_0x28f2e7[_0xb84a('0x2f')],_0x251778[_0xb84a('0x30')]),_0x3abc22);if(_0x28f2e7[_0xb84a('0x2f')][_0xb84a('0x3a')]){_0x49ba3d['where']=_['merge'](_0x49ba3d['where'],{'$or':_[_0xb84a('0x2a')](_0x3abc22,function(_0x11e1ac){if(_0x11e1ac[_0xb84a('0x3b')]!==_0xb84a('0x3c')){var _0x55b0b8={};_0x55b0b8[_0x11e1ac[_0xb84a('0x29')]]={'$like':'%'+_0x28f2e7['query'][_0xb84a('0x3a')]+'%'};return _0x55b0b8;}})});}_0x49ba3d=_['merge']({},_0x49ba3d,_0x28f2e7['options']);var _0x59d7a1={'where':_0x49ba3d[_0xb84a('0x39')]};return db[_0xb84a('0x2b')][_0xb84a('0x1d')](_0x59d7a1)[_0xb84a('0x22')](function(_0x5e547e){_0xba1147[_0xb84a('0x1d')]=_0x5e547e;if(_0x28f2e7[_0xb84a('0x2f')][_0xb84a('0x3d')]){_0x49ba3d[_0xb84a('0x3e')]=[{'all':!![]}];}return db['AnalyticMetric']['findAll'](_0x49ba3d);})[_0xb84a('0x22')](function(_0x1f3e04){_0xba1147['rows']=_0x1f3e04;return _0xba1147;})[_0xb84a('0x22')](respondWithFilteredResult(_0x8e9319,_0x49ba3d))[_0xb84a('0x3f')](handleError(_0x8e9319,null));};exports[_0xb84a('0x40')]=function(_0x25280a,_0x3f005b){var _0x241536={'raw':!![],'where':{'id':_0x25280a[_0xb84a('0x41')]['id']}},_0x24d700={};_0x24d700[_0xb84a('0x32')]=_[_0xb84a('0x42')](db[_0xb84a('0x2b')][_0xb84a('0x2c')]);_0x24d700[_0xb84a('0x2f')]=_[_0xb84a('0x42')](_0x25280a[_0xb84a('0x2f')]);_0x24d700['filters']=_[_0xb84a('0x31')](_0x24d700[_0xb84a('0x32')],_0x24d700[_0xb84a('0x2f')]);_0x241536[_0xb84a('0x33')]=_[_0xb84a('0x31')](_0x24d700[_0xb84a('0x32')],qs['fields'](_0x25280a[_0xb84a('0x2f')]['fields']));_0x241536[_0xb84a('0x33')]=_0x241536[_0xb84a('0x33')][_0xb84a('0x35')]?_0x241536[_0xb84a('0x33')]:_0x24d700['model'];if(_0x25280a[_0xb84a('0x2f')][_0xb84a('0x3d')]){_0x241536[_0xb84a('0x3e')]=[{'all':!![]}];}_0x241536=_['merge']({},_0x241536,_0x25280a['options']);return db[_0xb84a('0x2b')][_0xb84a('0x43')](_0x241536)[_0xb84a('0x22')](handleEntityNotFound(_0x3f005b,null))['then'](respondWithResult(_0x3f005b,null))['catch'](handleError(_0x3f005b,null));};exports['create']=function(_0x45630d,_0x384a0d){return db[_0xb84a('0x2b')][_0xb84a('0x44')](_0x45630d[_0xb84a('0x45')],{})['then'](function(_0x4b40fe){var _0x5b853a=_0x45630d['user'][_0xb84a('0x24')]({'plain':!![]});if(!_0x5b853a)throw new Error(_0xb84a('0x46'));if(_0x5b853a['role']===_0xb84a('0x47')){var _0xc8bac2=_0x4b40fe[_0xb84a('0x24')]({'plain':!![]});var _0x2f70f0=_0xb84a('0x25');return db[_0xb84a('0x48')]['find']({'where':{'name':_0x2f70f0,'userProfileId':_0x5b853a['userProfileId']},'raw':!![]})[_0xb84a('0x22')](function(_0x50172a){if(_0x50172a&&_0x50172a[_0xb84a('0x49')]===0x0){return db['UserProfileResource']['create']({'name':_0xc8bac2['name'],'resourceId':_0xc8bac2['id'],'type':_0x50172a[_0xb84a('0x29')],'sectionId':_0x50172a['id']},{})[_0xb84a('0x22')](function(){return _0x4b40fe;});}else{return _0x4b40fe;}})[_0xb84a('0x3f')](function(_0x25b6a0){logger[_0xb84a('0x27')](_0xb84a('0x4a'),_0x25b6a0);throw _0x25b6a0;});}return _0x4b40fe;})[_0xb84a('0x22')](respondWithResult(_0x384a0d,0xc9))[_0xb84a('0x3f')](handleError(_0x384a0d,null));};exports['update']=function(_0x5afdd0,_0x4c5bdf){if(_0x5afdd0[_0xb84a('0x45')]['id']){delete _0x5afdd0[_0xb84a('0x45')]['id'];}return db['AnalyticMetric'][_0xb84a('0x43')]({'where':{'id':_0x5afdd0['params']['id']}})['then'](handleEntityNotFound(_0x4c5bdf,null))['then'](saveUpdates(_0x5afdd0[_0xb84a('0x45')],null))[_0xb84a('0x22')](respondWithResult(_0x4c5bdf,null))[_0xb84a('0x3f')](handleError(_0x4c5bdf,null));};exports['destroy']=function(_0x5f757e,_0x2e98bf){return db[_0xb84a('0x2b')]['find']({'where':{'id':_0x5f757e[_0xb84a('0x41')]['id']}})['then'](handleEntityNotFound(_0x2e98bf,null))['then'](removeEntity(_0x2e98bf,null))[_0xb84a('0x3f')](handleError(_0x2e98bf,null));};
\ No newline at end of file
+var _0xe5b3=['undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','Metrics','UserProfileResource','destroy','error','stack','name','send','index','map','AnalyticMetric','rawAttributes','type','keys','query','filters','intersection','model','attributes','fields','length','nolimit','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','params','find','catch','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json'];(function(_0x32d21c,_0x5d7af6){var _0x5e6b05=function(_0xeef923){while(--_0xeef923){_0x32d21c['push'](_0x32d21c['shift']());}};_0x5e6b05(++_0x5d7af6);}(_0xe5b3,0x133));var _0x3e5b=function(_0x37d0d3,_0x21a65c){_0x37d0d3=_0x37d0d3-0x0;var _0x3ba775=_0xe5b3[_0x37d0d3];return _0x3ba775;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3e5b('0x0'));var zipdir=require(_0x3e5b('0x1'));var jsonpatch=require(_0x3e5b('0x2'));var rp=require(_0x3e5b('0x3'));var moment=require(_0x3e5b('0x4'));var BPromise=require(_0x3e5b('0x5'));var Mustache=require(_0x3e5b('0x6'));var util=require(_0x3e5b('0x7'));var path=require(_0x3e5b('0x8'));var sox=require(_0x3e5b('0x9'));var csv=require(_0x3e5b('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3e5b('0xb'));var _=require(_0x3e5b('0xc'));var squel=require('squel');var crypto=require(_0x3e5b('0xd'));var jsforce=require(_0x3e5b('0xe'));var deskjs=require(_0x3e5b('0xf'));var toCsv=require(_0x3e5b('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x3e5b('0x10'));var authService=require(_0x3e5b('0x11'));var qs=require(_0x3e5b('0x12'));var as=require(_0x3e5b('0x13'));var hardwareService=require(_0x3e5b('0x14'));var logger=require('../../config/logger')(_0x3e5b('0x15'));var utils=require('../../config/utils');var config=require(_0x3e5b('0x16'));var licenseUtil=require(_0x3e5b('0x17'));var db=require(_0x3e5b('0x18'))['db'];function respondWithStatusCode(_0x374068,_0x20b97b){_0x20b97b=_0x20b97b||0xcc;return function(_0x3c4eb1){if(_0x3c4eb1){return _0x374068[_0x3e5b('0x19')](_0x20b97b);}return _0x374068['status'](_0x20b97b)[_0x3e5b('0x1a')]();};}function respondWithResult(_0x5f2f9c,_0x51a188){_0x51a188=_0x51a188||0xc8;return function(_0x4d71a3){if(_0x4d71a3){return _0x5f2f9c[_0x3e5b('0x1b')](_0x51a188)[_0x3e5b('0x1c')](_0x4d71a3);}};}function respondWithFilteredResult(_0x17aaa3,_0x4fb471){return function(_0x1f81a7){if(_0x1f81a7){var _0x59ddc0=typeof _0x4fb471['offset']===_0x3e5b('0x1d')&&typeof _0x4fb471[_0x3e5b('0x1e')]==='undefined';var _0x3d58a4=_0x1f81a7[_0x3e5b('0x1f')];var _0x555002=_0x59ddc0?0x0:_0x4fb471[_0x3e5b('0x20')];var _0x3365dd=_0x59ddc0?_0x1f81a7['count']:_0x4fb471['offset']+_0x4fb471[_0x3e5b('0x1e')];var _0x20806a;if(_0x3365dd>=_0x3d58a4){_0x3365dd=_0x3d58a4;_0x20806a=0xc8;}else{_0x20806a=0xce;}_0x17aaa3[_0x3e5b('0x1b')](_0x20806a);return _0x17aaa3[_0x3e5b('0x21')](_0x3e5b('0x22'),_0x555002+'-'+_0x3365dd+'/'+_0x3d58a4)[_0x3e5b('0x1c')](_0x1f81a7);}return null;};}function patchUpdates(_0x447d36){return function(_0x21fc32){try{jsonpatch[_0x3e5b('0x23')](_0x21fc32,_0x447d36,!![]);}catch(_0x3d95f3){return BPromise[_0x3e5b('0x24')](_0x3d95f3);}return _0x21fc32[_0x3e5b('0x25')]();};}function saveUpdates(_0x2d77cc,_0x402873){return function(_0x5b46d4){if(_0x5b46d4){return _0x5b46d4[_0x3e5b('0x26')](_0x2d77cc)[_0x3e5b('0x27')](function(_0x2146d4){return _0x2146d4;});}return null;};}function removeEntity(_0x150674,_0x50039b){return function(_0x1eb80f){if(_0x1eb80f){return _0x1eb80f['destroy']()[_0x3e5b('0x27')](function(){var _0x36d960=_0x1eb80f['get']({'plain':!![]});var _0x41b684=_0x3e5b('0x28');return db[_0x3e5b('0x29')][_0x3e5b('0x2a')]({'where':{'type':_0x41b684,'resourceId':_0x36d960['id']}})[_0x3e5b('0x27')](function(){return _0x1eb80f;});})[_0x3e5b('0x27')](function(){_0x150674[_0x3e5b('0x1b')](0xcc)[_0x3e5b('0x1a')]();});}};}function handleEntityNotFound(_0x4c4b89,_0x1c7278){return function(_0x505f40){if(!_0x505f40){_0x4c4b89[_0x3e5b('0x19')](0x194);}return _0x505f40;};}function handleError(_0x4fd64b,_0x101653){_0x101653=_0x101653||0x1f4;return function(_0x1f6473){logger[_0x3e5b('0x2b')](_0x1f6473[_0x3e5b('0x2c')]);if(_0x1f6473[_0x3e5b('0x2d')]){delete _0x1f6473[_0x3e5b('0x2d')];}_0x4fd64b[_0x3e5b('0x1b')](_0x101653)[_0x3e5b('0x2e')](_0x1f6473);};}exports[_0x3e5b('0x2f')]=function(_0x112dc0,_0x1e1565){var _0x489221={},_0x21bc10={},_0x1882aa={'count':0x0,'rows':[]};var _0xa8760b=_[_0x3e5b('0x30')](db[_0x3e5b('0x31')][_0x3e5b('0x32')],function(_0x345927){return{'name':_0x345927['fieldName'],'type':_0x345927[_0x3e5b('0x33')]['key']};});_0x21bc10['model']=_[_0x3e5b('0x30')](_0xa8760b,_0x3e5b('0x2d'));_0x21bc10['query']=_[_0x3e5b('0x34')](_0x112dc0[_0x3e5b('0x35')]);_0x21bc10[_0x3e5b('0x36')]=_[_0x3e5b('0x37')](_0x21bc10[_0x3e5b('0x38')],_0x21bc10[_0x3e5b('0x35')]);_0x489221[_0x3e5b('0x39')]=_[_0x3e5b('0x37')](_0x21bc10[_0x3e5b('0x38')],qs[_0x3e5b('0x3a')](_0x112dc0[_0x3e5b('0x35')][_0x3e5b('0x3a')]));_0x489221['attributes']=_0x489221[_0x3e5b('0x39')][_0x3e5b('0x3b')]?_0x489221['attributes']:_0x21bc10['model'];if(!_0x112dc0[_0x3e5b('0x35')]['hasOwnProperty'](_0x3e5b('0x3c'))){_0x489221[_0x3e5b('0x1e')]=qs[_0x3e5b('0x1e')](_0x112dc0[_0x3e5b('0x35')]['limit']);_0x489221[_0x3e5b('0x20')]=qs['offset'](_0x112dc0[_0x3e5b('0x35')]['offset']);}_0x489221['order']=qs['sort'](_0x112dc0[_0x3e5b('0x35')][_0x3e5b('0x3d')]);_0x489221[_0x3e5b('0x3e')]=qs[_0x3e5b('0x36')](_[_0x3e5b('0x3f')](_0x112dc0[_0x3e5b('0x35')],_0x21bc10['filters']),_0xa8760b);if(_0x112dc0['query']['filter']){_0x489221['where']=_['merge'](_0x489221['where'],{'$or':_['map'](_0xa8760b,function(_0x182bc4){if(_0x182bc4[_0x3e5b('0x33')]!==_0x3e5b('0x40')){var _0x1aafd5={};_0x1aafd5[_0x182bc4[_0x3e5b('0x2d')]]={'$like':'%'+_0x112dc0[_0x3e5b('0x35')][_0x3e5b('0x41')]+'%'};return _0x1aafd5;}})});}_0x489221=_[_0x3e5b('0x42')]({},_0x489221,_0x112dc0[_0x3e5b('0x43')]);var _0xbbc6b={'where':_0x489221[_0x3e5b('0x3e')]};return db['AnalyticMetric'][_0x3e5b('0x1f')](_0xbbc6b)[_0x3e5b('0x27')](function(_0x1e8075){_0x1882aa[_0x3e5b('0x1f')]=_0x1e8075;if(_0x112dc0[_0x3e5b('0x35')][_0x3e5b('0x44')]){_0x489221[_0x3e5b('0x45')]=[{'all':!![]}];}return db[_0x3e5b('0x31')][_0x3e5b('0x46')](_0x489221);})[_0x3e5b('0x27')](function(_0x13c8d5){_0x1882aa['rows']=_0x13c8d5;return _0x1882aa;})['then'](respondWithFilteredResult(_0x1e1565,_0x489221))['catch'](handleError(_0x1e1565,null));};exports['show']=function(_0xa99d75,_0x21ee8a){var _0x9fc025={'raw':!![],'where':{'id':_0xa99d75[_0x3e5b('0x47')]['id']}},_0x24c416={};_0x24c416[_0x3e5b('0x38')]=_[_0x3e5b('0x34')](db[_0x3e5b('0x31')][_0x3e5b('0x32')]);_0x24c416[_0x3e5b('0x35')]=_['keys'](_0xa99d75[_0x3e5b('0x35')]);_0x24c416[_0x3e5b('0x36')]=_[_0x3e5b('0x37')](_0x24c416[_0x3e5b('0x38')],_0x24c416[_0x3e5b('0x35')]);_0x9fc025['attributes']=_['intersection'](_0x24c416['model'],qs[_0x3e5b('0x3a')](_0xa99d75[_0x3e5b('0x35')][_0x3e5b('0x3a')]));_0x9fc025['attributes']=_0x9fc025['attributes'][_0x3e5b('0x3b')]?_0x9fc025[_0x3e5b('0x39')]:_0x24c416[_0x3e5b('0x38')];if(_0xa99d75['query']['includeAll']){_0x9fc025[_0x3e5b('0x45')]=[{'all':!![]}];}_0x9fc025=_['merge']({},_0x9fc025,_0xa99d75[_0x3e5b('0x43')]);return db[_0x3e5b('0x31')][_0x3e5b('0x48')](_0x9fc025)[_0x3e5b('0x27')](handleEntityNotFound(_0x21ee8a,null))[_0x3e5b('0x27')](respondWithResult(_0x21ee8a,null))[_0x3e5b('0x49')](handleError(_0x21ee8a,null));};exports[_0x3e5b('0x4a')]=function(_0x3ea5aa,_0x339852){return db['AnalyticMetric'][_0x3e5b('0x4a')](_0x3ea5aa['body'],{})[_0x3e5b('0x27')](function(_0x2e7047){var _0x26e11e=_0x3ea5aa[_0x3e5b('0x4b')][_0x3e5b('0x4c')]({'plain':!![]});if(!_0x26e11e)throw new Error(_0x3e5b('0x4d'));if(_0x26e11e[_0x3e5b('0x4e')]===_0x3e5b('0x4b')){var _0x2b5d3d=_0x2e7047[_0x3e5b('0x4c')]({'plain':!![]});var _0xf6ca5b=_0x3e5b('0x28');return db[_0x3e5b('0x4f')]['find']({'where':{'name':_0xf6ca5b,'userProfileId':_0x26e11e[_0x3e5b('0x50')]},'raw':!![]})[_0x3e5b('0x27')](function(_0x2ca33b){if(_0x2ca33b&&_0x2ca33b[_0x3e5b('0x51')]===0x0){return db[_0x3e5b('0x29')][_0x3e5b('0x4a')]({'name':_0x2b5d3d['name'],'resourceId':_0x2b5d3d['id'],'type':_0x2ca33b[_0x3e5b('0x2d')],'sectionId':_0x2ca33b['id']},{})[_0x3e5b('0x27')](function(){return _0x2e7047;});}else{return _0x2e7047;}})[_0x3e5b('0x49')](function(_0x314d42){logger[_0x3e5b('0x2b')](_0x3e5b('0x52'),_0x314d42);throw _0x314d42;});}return _0x2e7047;})[_0x3e5b('0x27')](respondWithResult(_0x339852,0xc9))[_0x3e5b('0x49')](handleError(_0x339852,null));};exports['update']=function(_0x1e6403,_0x5e702f){if(_0x1e6403['body']['id']){delete _0x1e6403[_0x3e5b('0x53')]['id'];}return db['AnalyticMetric'][_0x3e5b('0x48')]({'where':{'id':_0x1e6403[_0x3e5b('0x47')]['id']}})[_0x3e5b('0x27')](handleEntityNotFound(_0x5e702f,null))[_0x3e5b('0x27')](saveUpdates(_0x1e6403['body'],null))['then'](respondWithResult(_0x5e702f,null))['catch'](handleError(_0x5e702f,null));};exports['destroy']=function(_0x2ab5f3,_0x999518){return db[_0x3e5b('0x31')][_0x3e5b('0x48')]({'where':{'id':_0x2ab5f3[_0x3e5b('0x47')]['id']}})['then'](handleEntityNotFound(_0x999518,null))['then'](removeEntity(_0x999518,null))[_0x3e5b('0x49')](handleError(_0x999518,null));};
\ No newline at end of file
index 1a0be88..bbc43d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d49=['moment','request-promise','path','rimraf','../../config/environment','./analyticMetric.attributes','exports','util','../../config/logger','api'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x3d49,0x151));var _0x93d4=function(_0x400b43,_0x55da4e){_0x400b43=_0x400b43-0x0;var _0x3c330f=_0x3d49[_0x400b43];return _0x3c330f;};'use strict';var _=require('lodash');var util=require(_0x93d4('0x0'));var logger=require(_0x93d4('0x1'))(_0x93d4('0x2'));var moment=require(_0x93d4('0x3'));var BPromise=require('bluebird');var rp=require(_0x93d4('0x4'));var fs=require('fs');var path=require(_0x93d4('0x5'));var rimraf=require(_0x93d4('0x6'));var config=require(_0x93d4('0x7'));var attributes=require(_0x93d4('0x8'));module[_0x93d4('0x9')]=function(_0x4b91a8,_0x577079){return _0x4b91a8['define']('AnalyticMetric',attributes,{'tableName':'analytics_metrics','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb138=['api','moment','bluebird','request-promise','rimraf','../../config/environment','./analyticMetric.attributes','AnalyticMetric','analytics_metrics','lodash','util','../../config/logger'];(function(_0x5c70fa,_0x30673e){var _0x52b59b=function(_0x5cf80a){while(--_0x5cf80a){_0x5c70fa['push'](_0x5c70fa['shift']());}};_0x52b59b(++_0x30673e);}(_0xb138,0x1dd));var _0x8b13=function(_0x4b5b3e,_0x3a7384){_0x4b5b3e=_0x4b5b3e-0x0;var _0x3ee470=_0xb138[_0x4b5b3e];return _0x3ee470;};'use strict';var _=require(_0x8b13('0x0'));var util=require(_0x8b13('0x1'));var logger=require(_0x8b13('0x2'))(_0x8b13('0x3'));var moment=require(_0x8b13('0x4'));var BPromise=require(_0x8b13('0x5'));var rp=require(_0x8b13('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8b13('0x7'));var config=require(_0x8b13('0x8'));var attributes=require(_0x8b13('0x9'));module['exports']=function(_0xd19a0f,_0x13f7bd){return _0xd19a0f['define'](_0x8b13('0xa'),attributes,{'tableName':_0x8b13('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 04093be..d5f7cee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a73=['result','catch','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x51a13a,_0x9b9ee5){var _0x579f61=function(_0x3a7d85){while(--_0x3a7d85){_0x51a13a['push'](_0x51a13a['shift']());}};_0x579f61(++_0x9b9ee5);}(_0x6a73,0x116));var _0x36a7=function(_0x54a9e3,_0x4a3813){_0x54a9e3=_0x54a9e3-0x0;var _0x247cce=_0x6a73[_0x54a9e3];return _0x247cce;};'use strict';var _=require('lodash');var util=require(_0x36a7('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x36a7('0x1'));var fs=require('fs');var Redis=require(_0x36a7('0x2'));var db=require(_0x36a7('0x3'))['db'];var utils=require(_0x36a7('0x4'));var logger=require(_0x36a7('0x5'))(_0x36a7('0x6'));var config=require(_0x36a7('0x7'));var jayson=require(_0x36a7('0x8'));var client=jayson[_0x36a7('0x9')][_0x36a7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x338e05,_0x35cad9,_0x1901ba){return new BPromise(function(_0x2db18d,_0x25eaca){return client['request'](_0x338e05,_0x1901ba)[_0x36a7('0xb')](function(_0x30b9fc){logger[_0x36a7('0xc')](_0x36a7('0xd'),_0x35cad9,_0x36a7('0xe'));logger[_0x36a7('0xf')](_0x36a7('0x10'),_0x35cad9,'request\x20sent',JSON[_0x36a7('0x11')](_0x30b9fc));if(_0x30b9fc[_0x36a7('0x12')]){if(_0x30b9fc[_0x36a7('0x12')][_0x36a7('0x13')]===0x1f4){logger[_0x36a7('0x12')](_0x36a7('0xd'),_0x35cad9,_0x30b9fc[_0x36a7('0x12')][_0x36a7('0x14')]);return _0x25eaca(_0x30b9fc[_0x36a7('0x12')][_0x36a7('0x14')]);}logger['error']('AnalyticMetric,\x20%s,\x20%s',_0x35cad9,_0x30b9fc[_0x36a7('0x12')][_0x36a7('0x14')]);return _0x2db18d(_0x30b9fc[_0x36a7('0x12')][_0x36a7('0x14')]);}else{logger[_0x36a7('0xc')](_0x36a7('0xd'),_0x35cad9,_0x36a7('0xe'));_0x2db18d(_0x30b9fc[_0x36a7('0x15')][_0x36a7('0x14')]);}})[_0x36a7('0x16')](function(_0x1a73ee){logger[_0x36a7('0x12')](_0x36a7('0xd'),_0x35cad9,_0x1a73ee);_0x25eaca(_0x1a73ee);});});}
\ No newline at end of file
+var _0x68e7=['../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','error','message','catch','lodash','util','bluebird','randomstring','ioredis'];(function(_0x4ae459,_0x3bf329){var _0x51d0c9=function(_0x1ce66b){while(--_0x1ce66b){_0x4ae459['push'](_0x4ae459['shift']());}};_0x51d0c9(++_0x3bf329);}(_0x68e7,0x73));var _0x768e=function(_0x2c9dc8,_0x2ec7a6){_0x2c9dc8=_0x2c9dc8-0x0;var _0x2da6fa=_0x68e7[_0x2c9dc8];return _0x2da6fa;};'use strict';var _=require(_0x768e('0x0'));var util=require(_0x768e('0x1'));var moment=require('moment');var BPromise=require(_0x768e('0x2'));var rs=require(_0x768e('0x3'));var fs=require('fs');var Redis=require(_0x768e('0x4'));var db=require(_0x768e('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x768e('0x6'))('rpc');var config=require(_0x768e('0x7'));var jayson=require(_0x768e('0x8'));var client=jayson[_0x768e('0x9')][_0x768e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x50aa6d,_0x2b94cd,_0x29dbdd){return new BPromise(function(_0x181f54,_0x3f4675){return client['request'](_0x50aa6d,_0x29dbdd)[_0x768e('0xb')](function(_0x255373){logger[_0x768e('0xc')](_0x768e('0xd'),_0x2b94cd,_0x768e('0xe'));logger[_0x768e('0xf')](_0x768e('0x10'),_0x2b94cd,'request\x20sent',JSON['stringify'](_0x255373));if(_0x255373[_0x768e('0x11')]){if(_0x255373['error']['code']===0x1f4){logger[_0x768e('0x11')]('AnalyticMetric,\x20%s,\x20%s',_0x2b94cd,_0x255373[_0x768e('0x11')][_0x768e('0x12')]);return _0x3f4675(_0x255373[_0x768e('0x11')][_0x768e('0x12')]);}logger['error'](_0x768e('0xd'),_0x2b94cd,_0x255373['error'][_0x768e('0x12')]);return _0x181f54(_0x255373[_0x768e('0x11')][_0x768e('0x12')]);}else{logger[_0x768e('0xc')](_0x768e('0xd'),_0x2b94cd,_0x768e('0xe'));_0x181f54(_0x255373['result']['message']);}})[_0x768e('0x13')](function(_0x4f8a88){logger[_0x768e('0x11')](_0x768e('0xd'),_0x2b94cd,_0x4f8a88);_0x3f4675(_0x4f8a88);});});}
\ No newline at end of file
index 87c8556..a34c1b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21d1=['path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated','/:id','show','post','create','put','delete','multer','util'];(function(_0x813d0a,_0x4fd3d7){var _0x241352=function(_0x3ca375){while(--_0x3ca375){_0x813d0a['push'](_0x813d0a['shift']());}};_0x241352(++_0x4fd3d7);}(_0x21d1,0x1c9));var _0x121d=function(_0x28ec7c,_0x16eb18){_0x28ec7c=_0x28ec7c-0x0;var _0x344a40=_0x21d1[_0x28ec7c];return _0x344a40;};'use strict';var multer=require(_0x121d('0x0'));var util=require(_0x121d('0x1'));var path=require(_0x121d('0x2'));var timeout=require(_0x121d('0x3'));var express=require(_0x121d('0x4'));var router=express[_0x121d('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x121d('0x6'));var config=require(_0x121d('0x7'));var controller=require(_0x121d('0x8'));router[_0x121d('0x9')]('/',auth[_0x121d('0xa')](),controller['index']);router[_0x121d('0x9')](_0x121d('0xb'),auth[_0x121d('0xa')](),controller[_0x121d('0xc')]);router[_0x121d('0xd')]('/',auth[_0x121d('0xa')](),controller[_0x121d('0xe')]);router[_0x121d('0xf')](_0x121d('0xb'),auth[_0x121d('0xa')](),controller['update']);router[_0x121d('0x10')](_0x121d('0xb'),auth[_0x121d('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x6334=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x4a209a,_0x575ff9){var _0x4b3c20=function(_0x1a50c1){while(--_0x1a50c1){_0x4a209a['push'](_0x4a209a['shift']());}};_0x4b3c20(++_0x575ff9);}(_0x6334,0x119));var _0x4633=function(_0x4849f6,_0x104836){_0x4849f6=_0x4849f6-0x0;var _0x1a3dcd=_0x6334[_0x4849f6];return _0x1a3dcd;};'use strict';var multer=require(_0x4633('0x0'));var util=require(_0x4633('0x1'));var path=require(_0x4633('0x2'));var timeout=require(_0x4633('0x3'));var express=require(_0x4633('0x4'));var router=express[_0x4633('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x4633('0x6'));var interaction=require(_0x4633('0x7'));var config=require(_0x4633('0x8'));var controller=require(_0x4633('0x9'));router[_0x4633('0xa')]('/',auth[_0x4633('0xb')](),controller[_0x4633('0xc')]);router['get'](_0x4633('0xd'),auth['isAuthenticated'](),controller[_0x4633('0xe')]);router[_0x4633('0xf')]('/',auth['isAuthenticated'](),controller[_0x4633('0x10')]);router[_0x4633('0x11')](_0x4633('0xd'),auth['isAuthenticated'](),controller[_0x4633('0x12')]);router[_0x4633('0x13')]('/:id',auth[_0x4633('0xb')](),controller[_0x4633('0x14')]);module[_0x4633('0x15')]=router;
\ No newline at end of file
index e955a26..a9ae7a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x565c=['TEXT','sequelize','exports'];(function(_0x581f60,_0x5a9edf){var _0x41f47d=function(_0x1a4812){while(--_0x1a4812){_0x581f60['push'](_0x581f60['shift']());}};_0x41f47d(++_0x5a9edf);}(_0x565c,0x73));var _0xc565=function(_0x39a0e6,_0x38988a){_0x39a0e6=_0x39a0e6-0x0;var _0x27e25c=_0x565c[_0x39a0e6];return _0x27e25c;};'use strict';var Sequelize=require(_0xc565('0x0'));module[_0xc565('0x1')]={'tree':{'type':Sequelize[_0xc565('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x2794=['exports'];(function(_0x1ba16c,_0x490224){var _0x19fd34=function(_0xbfc5d9){while(--_0xbfc5d9){_0x1ba16c['push'](_0x1ba16c['shift']());}};_0x19fd34(++_0x490224);}(_0x2794,0x111));var _0x4279=function(_0x15f956,_0x5c2438){_0x15f956=_0x15f956-0x0;var _0x3d9973=_0x2794[_0x15f956];return _0x3d9973;};'use strict';var Sequelize=require('sequelize');module[_0x4279('0x0')]={'tree':{'type':Sequelize['TEXT'],'allowNull':![]}};
\ No newline at end of file
index 164fd45..9ea1877 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5b9=['length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','options','includeAll','include','findAll','rows','params','find','catch','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','end','json','offset','undefined','count','limit','status','set','apply','reject','save','update','then','sendStatus','error','name','send','map','AnalyticTreeReport','rawAttributes','type','key','model','query','keys','intersection','attributes','fields'];(function(_0x2adae0,_0x4fa150){var _0x4bbb68=function(_0x5952bb){while(--_0x5952bb){_0x2adae0['push'](_0x2adae0['shift']());}};_0x4bbb68(++_0x4fa150);}(_0xf5b9,0x13d));var _0x9f5b=function(_0x1841eb,_0x27885b){_0x1841eb=_0x1841eb-0x0;var _0x144ebc=_0xf5b9[_0x1841eb];return _0x144ebc;};'use strict';var emlformat=require(_0x9f5b('0x0'));var rimraf=require(_0x9f5b('0x1'));var zipdir=require(_0x9f5b('0x2'));var jsonpatch=require(_0x9f5b('0x3'));var rp=require(_0x9f5b('0x4'));var moment=require(_0x9f5b('0x5'));var BPromise=require(_0x9f5b('0x6'));var Mustache=require(_0x9f5b('0x7'));var util=require(_0x9f5b('0x8'));var path=require(_0x9f5b('0x9'));var sox=require(_0x9f5b('0xa'));var csv=require(_0x9f5b('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9f5b('0xc'));var _=require(_0x9f5b('0xd'));var squel=require(_0x9f5b('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x9f5b('0xb'));var querystring=require(_0x9f5b('0xf'));var Papa=require(_0x9f5b('0x10'));var Redis=require(_0x9f5b('0x11'));var authService=require(_0x9f5b('0x12'));var qs=require(_0x9f5b('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9f5b('0x14'));var logger=require(_0x9f5b('0x15'))(_0x9f5b('0x16'));var utils=require('../../config/utils');var config=require(_0x9f5b('0x17'));var licenseUtil=require(_0x9f5b('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3c07d5,_0x360730){_0x360730=_0x360730||0xcc;return function(_0x1a0bf1){if(_0x1a0bf1){return _0x3c07d5['sendStatus'](_0x360730);}return _0x3c07d5['status'](_0x360730)[_0x9f5b('0x19')]();};}function respondWithResult(_0x4660dc,_0x238065){_0x238065=_0x238065||0xc8;return function(_0x1d380b){if(_0x1d380b){return _0x4660dc['status'](_0x238065)[_0x9f5b('0x1a')](_0x1d380b);}};}function respondWithFilteredResult(_0x2fcb9e,_0x1807e5){return function(_0xc8ca85){if(_0xc8ca85){var _0x16b43b=typeof _0x1807e5[_0x9f5b('0x1b')]==='undefined'&&typeof _0x1807e5['limit']===_0x9f5b('0x1c');var _0x49fbd0=_0xc8ca85[_0x9f5b('0x1d')];var _0x1f0bdf=_0x16b43b?0x0:_0x1807e5[_0x9f5b('0x1b')];var _0x4a368f=_0x16b43b?_0xc8ca85[_0x9f5b('0x1d')]:_0x1807e5[_0x9f5b('0x1b')]+_0x1807e5[_0x9f5b('0x1e')];var _0x34dd95;if(_0x4a368f>=_0x49fbd0){_0x4a368f=_0x49fbd0;_0x34dd95=0xc8;}else{_0x34dd95=0xce;}_0x2fcb9e[_0x9f5b('0x1f')](_0x34dd95);return _0x2fcb9e[_0x9f5b('0x20')]('Content-Range',_0x1f0bdf+'-'+_0x4a368f+'/'+_0x49fbd0)[_0x9f5b('0x1a')](_0xc8ca85);}return null;};}function patchUpdates(_0x23c2c6){return function(_0x3b78b1){try{jsonpatch[_0x9f5b('0x21')](_0x3b78b1,_0x23c2c6,!![]);}catch(_0x9863b8){return BPromise[_0x9f5b('0x22')](_0x9863b8);}return _0x3b78b1[_0x9f5b('0x23')]();};}function saveUpdates(_0x43db22,_0x8da976){return function(_0x460aed){if(_0x460aed){return _0x460aed[_0x9f5b('0x24')](_0x43db22)['then'](function(_0x524463){return _0x524463;});}return null;};}function removeEntity(_0x3bac66,_0x1594a2){return function(_0x5bdaff){if(_0x5bdaff){return _0x5bdaff['destroy']()[_0x9f5b('0x25')](function(){_0x3bac66[_0x9f5b('0x1f')](0xcc)[_0x9f5b('0x19')]();});}};}function handleEntityNotFound(_0x111305,_0x599a23){return function(_0x2a9109){if(!_0x2a9109){_0x111305[_0x9f5b('0x26')](0x194);}return _0x2a9109;};}function handleError(_0xf8dee0,_0x2d3b44){_0x2d3b44=_0x2d3b44||0x1f4;return function(_0x4a9b5f){logger[_0x9f5b('0x27')](_0x4a9b5f['stack']);if(_0x4a9b5f[_0x9f5b('0x28')]){delete _0x4a9b5f[_0x9f5b('0x28')];}_0xf8dee0[_0x9f5b('0x1f')](_0x2d3b44)[_0x9f5b('0x29')](_0x4a9b5f);};}exports['index']=function(_0x122686,_0x295bf7){var _0x595c59={},_0x224c8e={},_0x4a1902={'count':0x0,'rows':[]};var _0x523dcc=_[_0x9f5b('0x2a')](db[_0x9f5b('0x2b')][_0x9f5b('0x2c')],function(_0x4f83df){return{'name':_0x4f83df['fieldName'],'type':_0x4f83df[_0x9f5b('0x2d')][_0x9f5b('0x2e')]};});_0x224c8e[_0x9f5b('0x2f')]=_[_0x9f5b('0x2a')](_0x523dcc,_0x9f5b('0x28'));_0x224c8e[_0x9f5b('0x30')]=_[_0x9f5b('0x31')](_0x122686[_0x9f5b('0x30')]);_0x224c8e['filters']=_[_0x9f5b('0x32')](_0x224c8e[_0x9f5b('0x2f')],_0x224c8e[_0x9f5b('0x30')]);_0x595c59[_0x9f5b('0x33')]=_[_0x9f5b('0x32')](_0x224c8e[_0x9f5b('0x2f')],qs['fields'](_0x122686[_0x9f5b('0x30')][_0x9f5b('0x34')]));_0x595c59['attributes']=_0x595c59[_0x9f5b('0x33')][_0x9f5b('0x35')]?_0x595c59[_0x9f5b('0x33')]:_0x224c8e[_0x9f5b('0x2f')];if(!_0x122686['query'][_0x9f5b('0x36')](_0x9f5b('0x37'))){_0x595c59[_0x9f5b('0x1e')]=qs['limit'](_0x122686[_0x9f5b('0x30')][_0x9f5b('0x1e')]);_0x595c59[_0x9f5b('0x1b')]=qs[_0x9f5b('0x1b')](_0x122686[_0x9f5b('0x30')][_0x9f5b('0x1b')]);}_0x595c59[_0x9f5b('0x38')]=qs[_0x9f5b('0x39')](_0x122686[_0x9f5b('0x30')][_0x9f5b('0x39')]);_0x595c59[_0x9f5b('0x3a')]=qs['filters'](_[_0x9f5b('0x3b')](_0x122686[_0x9f5b('0x30')],_0x224c8e[_0x9f5b('0x3c')]),_0x523dcc);if(_0x122686[_0x9f5b('0x30')][_0x9f5b('0x3d')]){_0x595c59['where']=_['merge'](_0x595c59[_0x9f5b('0x3a')],{'$or':_[_0x9f5b('0x2a')](_0x523dcc,function(_0x2212bb){if(_0x2212bb['type']!=='VIRTUAL'){var _0x41e2f5={};_0x41e2f5[_0x2212bb[_0x9f5b('0x28')]]={'$like':'%'+_0x122686[_0x9f5b('0x30')]['filter']+'%'};return _0x41e2f5;}})});}_0x595c59=_[_0x9f5b('0x3e')]({},_0x595c59,_0x122686[_0x9f5b('0x3f')]);var _0x4d8549={'where':_0x595c59[_0x9f5b('0x3a')]};return db[_0x9f5b('0x2b')][_0x9f5b('0x1d')](_0x4d8549)['then'](function(_0x5e5c29){_0x4a1902[_0x9f5b('0x1d')]=_0x5e5c29;if(_0x122686[_0x9f5b('0x30')][_0x9f5b('0x40')]){_0x595c59[_0x9f5b('0x41')]=[{'all':!![]}];}return db[_0x9f5b('0x2b')][_0x9f5b('0x42')](_0x595c59);})[_0x9f5b('0x25')](function(_0x37f548){_0x4a1902[_0x9f5b('0x43')]=_0x37f548;return _0x4a1902;})[_0x9f5b('0x25')](respondWithFilteredResult(_0x295bf7,_0x595c59))['catch'](handleError(_0x295bf7,null));};exports['show']=function(_0x181040,_0x5061a8){var _0x22f119={'raw':!![],'where':{'id':_0x181040[_0x9f5b('0x44')]['id']}},_0x201f68={};_0x201f68[_0x9f5b('0x2f')]=_[_0x9f5b('0x31')](db['AnalyticTreeReport'][_0x9f5b('0x2c')]);_0x201f68[_0x9f5b('0x30')]=_[_0x9f5b('0x31')](_0x181040[_0x9f5b('0x30')]);_0x201f68[_0x9f5b('0x3c')]=_[_0x9f5b('0x32')](_0x201f68[_0x9f5b('0x2f')],_0x201f68[_0x9f5b('0x30')]);_0x22f119[_0x9f5b('0x33')]=_[_0x9f5b('0x32')](_0x201f68['model'],qs[_0x9f5b('0x34')](_0x181040[_0x9f5b('0x30')][_0x9f5b('0x34')]));_0x22f119['attributes']=_0x22f119[_0x9f5b('0x33')]['length']?_0x22f119['attributes']:_0x201f68['model'];if(_0x181040['query'][_0x9f5b('0x40')]){_0x22f119[_0x9f5b('0x41')]=[{'all':!![]}];}_0x22f119=_[_0x9f5b('0x3e')]({},_0x22f119,_0x181040[_0x9f5b('0x3f')]);return db[_0x9f5b('0x2b')][_0x9f5b('0x45')](_0x22f119)[_0x9f5b('0x25')](handleEntityNotFound(_0x5061a8,null))[_0x9f5b('0x25')](respondWithResult(_0x5061a8,null))[_0x9f5b('0x46')](handleError(_0x5061a8,null));};exports[_0x9f5b('0x47')]=function(_0xbeb727,_0x4899bd){return db[_0x9f5b('0x2b')][_0x9f5b('0x47')](_0xbeb727[_0x9f5b('0x48')],{})[_0x9f5b('0x25')](respondWithResult(_0x4899bd,0xc9))['catch'](handleError(_0x4899bd,null));};exports[_0x9f5b('0x24')]=function(_0x55deea,_0x28970b){if(_0x55deea[_0x9f5b('0x48')]['id']){delete _0x55deea['body']['id'];}return db[_0x9f5b('0x2b')]['find']({'where':{'id':_0x55deea[_0x9f5b('0x44')]['id']}})[_0x9f5b('0x25')](handleEntityNotFound(_0x28970b,null))[_0x9f5b('0x25')](saveUpdates(_0x55deea[_0x9f5b('0x48')],null))[_0x9f5b('0x25')](respondWithResult(_0x28970b,null))[_0x9f5b('0x46')](handleError(_0x28970b,null));};exports[_0x9f5b('0x49')]=function(_0x4bd57b,_0x326cec){return db['AnalyticTreeReport'][_0x9f5b('0x45')]({'where':{'id':_0x4bd57b[_0x9f5b('0x44')]['id']}})[_0x9f5b('0x25')](handleEntityNotFound(_0x326cec,null))[_0x9f5b('0x25')](removeEntity(_0x326cec,null))[_0x9f5b('0x46')](handleError(_0x326cec,null));};
\ No newline at end of file
+var _0xa0a4=['status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','destroy','then','stack','name','send','index','map','AnalyticTreeReport','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','includeAll','include','findAll','show','params','fields','find','create','catch','update','body','eml-format','request-promise','moment','bluebird','path','sox','fs-extra','lodash','squel','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','../../mysqldb','sendStatus'];(function(_0x2932cf,_0x362fd9){var _0x1711dd=function(_0x2d8de6){while(--_0x2d8de6){_0x2932cf['push'](_0x2932cf['shift']());}};_0x1711dd(++_0x362fd9);}(_0xa0a4,0x1d9));var _0x4a0a=function(_0xf97d00,_0x31a39a){_0xf97d00=_0xf97d00-0x0;var _0x463327=_0xa0a4[_0xf97d00];return _0x463327;};'use strict';var emlformat=require(_0x4a0a('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x4a0a('0x1'));var moment=require(_0x4a0a('0x2'));var BPromise=require(_0x4a0a('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x4a0a('0x4'));var sox=require(_0x4a0a('0x5'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4a0a('0x6'));var _=require(_0x4a0a('0x7'));var squel=require(_0x4a0a('0x8'));var crypto=require('crypto');var jsforce=require(_0x4a0a('0x9'));var deskjs=require(_0x4a0a('0xa'));var toCsv=require(_0x4a0a('0xb'));var querystring=require(_0x4a0a('0xc'));var Papa=require(_0x4a0a('0xd'));var Redis=require(_0x4a0a('0xe'));var authService=require(_0x4a0a('0xf'));var qs=require(_0x4a0a('0x10'));var as=require(_0x4a0a('0x11'));var hardwareService=require(_0x4a0a('0x12'));var logger=require('../../config/logger')(_0x4a0a('0x13'));var utils=require(_0x4a0a('0x14'));var config=require(_0x4a0a('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x4a0a('0x16'))['db'];function respondWithStatusCode(_0x1a947b,_0x1c4793){_0x1c4793=_0x1c4793||0xcc;return function(_0x5a34ab){if(_0x5a34ab){return _0x1a947b[_0x4a0a('0x17')](_0x1c4793);}return _0x1a947b[_0x4a0a('0x18')](_0x1c4793)[_0x4a0a('0x19')]();};}function respondWithResult(_0x59023a,_0x130553){_0x130553=_0x130553||0xc8;return function(_0x545f47){if(_0x545f47){return _0x59023a[_0x4a0a('0x18')](_0x130553)[_0x4a0a('0x1a')](_0x545f47);}};}function respondWithFilteredResult(_0x188812,_0x1bab19){return function(_0x59dd8c){if(_0x59dd8c){var _0x473309=typeof _0x1bab19[_0x4a0a('0x1b')]===_0x4a0a('0x1c')&&typeof _0x1bab19[_0x4a0a('0x1d')]==='undefined';var _0x2ea87f=_0x59dd8c[_0x4a0a('0x1e')];var _0x501b26=_0x473309?0x0:_0x1bab19[_0x4a0a('0x1b')];var _0x542443=_0x473309?_0x59dd8c['count']:_0x1bab19[_0x4a0a('0x1b')]+_0x1bab19['limit'];var _0x184ef6;if(_0x542443>=_0x2ea87f){_0x542443=_0x2ea87f;_0x184ef6=0xc8;}else{_0x184ef6=0xce;}_0x188812[_0x4a0a('0x18')](_0x184ef6);return _0x188812[_0x4a0a('0x1f')](_0x4a0a('0x20'),_0x501b26+'-'+_0x542443+'/'+_0x2ea87f)[_0x4a0a('0x1a')](_0x59dd8c);}return null;};}function patchUpdates(_0x50673f){return function(_0x4367d9){try{jsonpatch[_0x4a0a('0x21')](_0x4367d9,_0x50673f,!![]);}catch(_0x523e41){return BPromise['reject'](_0x523e41);}return _0x4367d9[_0x4a0a('0x22')]();};}function saveUpdates(_0x623a15,_0x3b23e8){return function(_0xa167af){if(_0xa167af){return _0xa167af['update'](_0x623a15)['then'](function(_0x564622){return _0x564622;});}return null;};}function removeEntity(_0x33679b,_0x4f38a7){return function(_0x20d04d){if(_0x20d04d){return _0x20d04d[_0x4a0a('0x23')]()[_0x4a0a('0x24')](function(){_0x33679b[_0x4a0a('0x18')](0xcc)[_0x4a0a('0x19')]();});}};}function handleEntityNotFound(_0x540ccf,_0x4c43a1){return function(_0x2adb3f){if(!_0x2adb3f){_0x540ccf[_0x4a0a('0x17')](0x194);}return _0x2adb3f;};}function handleError(_0x4c5d3b,_0x396690){_0x396690=_0x396690||0x1f4;return function(_0x508500){logger['error'](_0x508500[_0x4a0a('0x25')]);if(_0x508500[_0x4a0a('0x26')]){delete _0x508500['name'];}_0x4c5d3b[_0x4a0a('0x18')](_0x396690)[_0x4a0a('0x27')](_0x508500);};}exports[_0x4a0a('0x28')]=function(_0x3988e4,_0x3f028d){var _0x4c9e29={},_0x14577a={},_0x1a694d={'count':0x0,'rows':[]};var _0x4bc501=_[_0x4a0a('0x29')](db[_0x4a0a('0x2a')][_0x4a0a('0x2b')],function(_0x279e79){return{'name':_0x279e79[_0x4a0a('0x2c')],'type':_0x279e79[_0x4a0a('0x2d')]['key']};});_0x14577a[_0x4a0a('0x2e')]=_[_0x4a0a('0x29')](_0x4bc501,_0x4a0a('0x26'));_0x14577a['query']=_[_0x4a0a('0x2f')](_0x3988e4[_0x4a0a('0x30')]);_0x14577a[_0x4a0a('0x31')]=_[_0x4a0a('0x32')](_0x14577a[_0x4a0a('0x2e')],_0x14577a[_0x4a0a('0x30')]);_0x4c9e29['attributes']=_[_0x4a0a('0x32')](_0x14577a[_0x4a0a('0x2e')],qs['fields'](_0x3988e4[_0x4a0a('0x30')]['fields']));_0x4c9e29['attributes']=_0x4c9e29[_0x4a0a('0x33')]['length']?_0x4c9e29[_0x4a0a('0x33')]:_0x14577a[_0x4a0a('0x2e')];if(!_0x3988e4[_0x4a0a('0x30')][_0x4a0a('0x34')](_0x4a0a('0x35'))){_0x4c9e29['limit']=qs[_0x4a0a('0x1d')](_0x3988e4['query'][_0x4a0a('0x1d')]);_0x4c9e29['offset']=qs['offset'](_0x3988e4[_0x4a0a('0x30')][_0x4a0a('0x1b')]);}_0x4c9e29['order']=qs[_0x4a0a('0x36')](_0x3988e4[_0x4a0a('0x30')][_0x4a0a('0x36')]);_0x4c9e29[_0x4a0a('0x37')]=qs[_0x4a0a('0x31')](_[_0x4a0a('0x38')](_0x3988e4[_0x4a0a('0x30')],_0x14577a[_0x4a0a('0x31')]),_0x4bc501);if(_0x3988e4[_0x4a0a('0x30')][_0x4a0a('0x39')]){_0x4c9e29['where']=_[_0x4a0a('0x3a')](_0x4c9e29[_0x4a0a('0x37')],{'$or':_[_0x4a0a('0x29')](_0x4bc501,function(_0xb9b0e){if(_0xb9b0e[_0x4a0a('0x2d')]!=='VIRTUAL'){var _0x14e73f={};_0x14e73f[_0xb9b0e[_0x4a0a('0x26')]]={'$like':'%'+_0x3988e4[_0x4a0a('0x30')][_0x4a0a('0x39')]+'%'};return _0x14e73f;}})});}_0x4c9e29=_['merge']({},_0x4c9e29,_0x3988e4[_0x4a0a('0x3b')]);var _0x2014bd={'where':_0x4c9e29[_0x4a0a('0x37')]};return db[_0x4a0a('0x2a')][_0x4a0a('0x1e')](_0x2014bd)[_0x4a0a('0x24')](function(_0x1412dd){_0x1a694d['count']=_0x1412dd;if(_0x3988e4[_0x4a0a('0x30')][_0x4a0a('0x3c')]){_0x4c9e29[_0x4a0a('0x3d')]=[{'all':!![]}];}return db['AnalyticTreeReport'][_0x4a0a('0x3e')](_0x4c9e29);})[_0x4a0a('0x24')](function(_0x422532){_0x1a694d['rows']=_0x422532;return _0x1a694d;})[_0x4a0a('0x24')](respondWithFilteredResult(_0x3f028d,_0x4c9e29))['catch'](handleError(_0x3f028d,null));};exports[_0x4a0a('0x3f')]=function(_0x1b3ae3,_0x2c17b7){var _0x19c7d4={'raw':!![],'where':{'id':_0x1b3ae3[_0x4a0a('0x40')]['id']}},_0x5bf483={};_0x5bf483[_0x4a0a('0x2e')]=_[_0x4a0a('0x2f')](db[_0x4a0a('0x2a')]['rawAttributes']);_0x5bf483['query']=_[_0x4a0a('0x2f')](_0x1b3ae3[_0x4a0a('0x30')]);_0x5bf483[_0x4a0a('0x31')]=_[_0x4a0a('0x32')](_0x5bf483[_0x4a0a('0x2e')],_0x5bf483['query']);_0x19c7d4[_0x4a0a('0x33')]=_[_0x4a0a('0x32')](_0x5bf483[_0x4a0a('0x2e')],qs[_0x4a0a('0x41')](_0x1b3ae3[_0x4a0a('0x30')][_0x4a0a('0x41')]));_0x19c7d4[_0x4a0a('0x33')]=_0x19c7d4[_0x4a0a('0x33')]['length']?_0x19c7d4['attributes']:_0x5bf483[_0x4a0a('0x2e')];if(_0x1b3ae3['query'][_0x4a0a('0x3c')]){_0x19c7d4[_0x4a0a('0x3d')]=[{'all':!![]}];}_0x19c7d4=_[_0x4a0a('0x3a')]({},_0x19c7d4,_0x1b3ae3['options']);return db[_0x4a0a('0x2a')][_0x4a0a('0x42')](_0x19c7d4)[_0x4a0a('0x24')](handleEntityNotFound(_0x2c17b7,null))[_0x4a0a('0x24')](respondWithResult(_0x2c17b7,null))['catch'](handleError(_0x2c17b7,null));};exports[_0x4a0a('0x43')]=function(_0x1f98d4,_0x525aa9){return db['AnalyticTreeReport'][_0x4a0a('0x43')](_0x1f98d4['body'],{})[_0x4a0a('0x24')](respondWithResult(_0x525aa9,0xc9))[_0x4a0a('0x44')](handleError(_0x525aa9,null));};exports[_0x4a0a('0x45')]=function(_0x2d52cb,_0x2981ef){if(_0x2d52cb['body']['id']){delete _0x2d52cb[_0x4a0a('0x46')]['id'];}return db['AnalyticTreeReport'][_0x4a0a('0x42')]({'where':{'id':_0x2d52cb['params']['id']}})[_0x4a0a('0x24')](handleEntityNotFound(_0x2981ef,null))[_0x4a0a('0x24')](saveUpdates(_0x2d52cb[_0x4a0a('0x46')],null))[_0x4a0a('0x24')](respondWithResult(_0x2981ef,null))[_0x4a0a('0x44')](handleError(_0x2981ef,null));};exports[_0x4a0a('0x23')]=function(_0x507a1f,_0x8d5deb){return db['AnalyticTreeReport'][_0x4a0a('0x42')]({'where':{'id':_0x507a1f['params']['id']}})[_0x4a0a('0x24')](handleEntityNotFound(_0x8d5deb,null))[_0x4a0a('0x24')](removeEntity(_0x8d5deb,null))['catch'](handleError(_0x8d5deb,null));};
\ No newline at end of file
index dd9a09b..3da4f04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47c3=['AnalyticTreeReport','analytics_report_trees','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./analyticTreeReport.attributes','exports','define'];(function(_0xc8db6b,_0x320abd){var _0x12cb81=function(_0x417540){while(--_0x417540){_0xc8db6b['push'](_0xc8db6b['shift']());}};_0x12cb81(++_0x320abd);}(_0x47c3,0x1c2));var _0x347c=function(_0x26e030,_0x1e10c7){_0x26e030=_0x26e030-0x0;var _0x5d8515=_0x47c3[_0x26e030];return _0x5d8515;};'use strict';var _=require(_0x347c('0x0'));var util=require(_0x347c('0x1'));var logger=require(_0x347c('0x2'))(_0x347c('0x3'));var moment=require(_0x347c('0x4'));var BPromise=require('bluebird');var rp=require(_0x347c('0x5'));var fs=require('fs');var path=require(_0x347c('0x6'));var rimraf=require(_0x347c('0x7'));var config=require(_0x347c('0x8'));var attributes=require(_0x347c('0x9'));module[_0x347c('0xa')]=function(_0x4a8781,_0x2621cd){return _0x4a8781[_0x347c('0xb')](_0x347c('0xc'),attributes,{'tableName':_0x347c('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf528=['../../config/environment','./analyticTreeReport.attributes','define','analytics_report_trees','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x381589,_0x27a707){var _0x2a075d=function(_0x4ea19d){while(--_0x4ea19d){_0x381589['push'](_0x381589['shift']());}};_0x2a075d(++_0x27a707);}(_0xf528,0x1d8));var _0x8f52=function(_0x1a0168,_0x5da8f3){_0x1a0168=_0x1a0168-0x0;var _0x40218b=_0xf528[_0x1a0168];return _0x40218b;};'use strict';var _=require(_0x8f52('0x0'));var util=require(_0x8f52('0x1'));var logger=require(_0x8f52('0x2'))(_0x8f52('0x3'));var moment=require(_0x8f52('0x4'));var BPromise=require(_0x8f52('0x5'));var rp=require(_0x8f52('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8f52('0x7'));var config=require(_0x8f52('0x8'));var attributes=require(_0x8f52('0x9'));module['exports']=function(_0x1a1315,_0x4ab223){return _0x1a1315[_0x8f52('0xa')]('AnalyticTreeReport',attributes,{'tableName':_0x8f52('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a4a2681..632557b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','AnalyticTreeReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch'];(function(_0x479b16,_0x5b620e){var _0x459b47=function(_0x35c89f){while(--_0x35c89f){_0x479b16['push'](_0x479b16['shift']());}};_0x459b47(++_0x5b620e);}(_0x5f2f,0x73));var _0xf5f2=function(_0x1b58d4,_0x3bad5d){_0x1b58d4=_0x1b58d4-0x0;var _0x396938=_0x5f2f[_0x1b58d4];return _0x396938;};'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
+var _0x5f66=['../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticTreeReport,\x20%s,\x20%s,\x20%s','stringify','code','message','error','info','catch','util','bluebird','randomstring','ioredis'];(function(_0x2356f2,_0x2b8970){var _0x40bc4b=function(_0x57cf3b){while(--_0x57cf3b){_0x2356f2['push'](_0x2356f2['shift']());}};_0x40bc4b(++_0x2b8970);}(_0x5f66,0x1a0));var _0x65f6=function(_0xefd519,_0xc62635){_0xefd519=_0xefd519-0x0;var _0x4bb882=_0x5f66[_0xefd519];return _0x4bb882;};'use strict';var _=require('lodash');var util=require(_0x65f6('0x0'));var moment=require('moment');var BPromise=require(_0x65f6('0x1'));var rs=require(_0x65f6('0x2'));var fs=require('fs');var Redis=require(_0x65f6('0x3'));var db=require(_0x65f6('0x4'))['db'];var utils=require(_0x65f6('0x5'));var logger=require('../../config/logger')(_0x65f6('0x6'));var config=require('../../config/environment');var jayson=require(_0x65f6('0x7'));var client=jayson[_0x65f6('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ed98f,_0x1c0e12,_0x2c6571){return new BPromise(function(_0x112079,_0x8f6451){return client[_0x65f6('0x9')](_0x4ed98f,_0x2c6571)[_0x65f6('0xa')](function(_0x48d85c){logger['info'](_0x65f6('0xb'),_0x1c0e12,_0x65f6('0xc'));logger[_0x65f6('0xd')](_0x65f6('0xe'),_0x1c0e12,'request\x20sent',JSON[_0x65f6('0xf')](_0x48d85c));if(_0x48d85c['error']){if(_0x48d85c['error'][_0x65f6('0x10')]===0x1f4){logger['error'](_0x65f6('0xb'),_0x1c0e12,_0x48d85c['error'][_0x65f6('0x11')]);return _0x8f6451(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);return _0x112079(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}else{logger[_0x65f6('0x13')]('AnalyticTreeReport,\x20%s,\x20%s',_0x1c0e12,_0x65f6('0xc'));_0x112079(_0x48d85c['result']['message']);}})[_0x65f6('0x14')](function(_0x5c69f8){logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x5c69f8);_0x8f6451(_0x5c69f8);});});}
\ No newline at end of file
index de30b42..8c3a5d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6d4=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','post','create','put','update','delete','destroy','multer','util','Router','fs-extra'];(function(_0x5decce,_0x5115da){var _0x11738e=function(_0x1d6b08){while(--_0x1d6b08){_0x5decce['push'](_0x5decce['shift']());}};_0x11738e(++_0x5115da);}(_0xa6d4,0x1dc));var _0x4a6d=function(_0x2a2188,_0x1bda80){_0x2a2188=_0x2a2188-0x0;var _0x33ec83=_0xa6d4[_0x2a2188];return _0x33ec83;};'use strict';var multer=require(_0x4a6d('0x0'));var util=require(_0x4a6d('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x4a6d('0x2')]();var fs_extra=require(_0x4a6d('0x3'));var auth=require(_0x4a6d('0x4'));var interaction=require(_0x4a6d('0x5'));var config=require(_0x4a6d('0x6'));var controller=require('./analyticTreeReport.controller');router[_0x4a6d('0x7')]('/',auth[_0x4a6d('0x8')](),controller['index']);router['get'](_0x4a6d('0x9'),auth[_0x4a6d('0x8')](),controller['show']);router[_0x4a6d('0xa')]('/',auth[_0x4a6d('0x8')](),controller[_0x4a6d('0xb')]);router[_0x4a6d('0xc')](_0x4a6d('0x9'),auth[_0x4a6d('0x8')](),controller[_0x4a6d('0xd')]);router[_0x4a6d('0xe')](_0x4a6d('0x9'),auth['isAuthenticated'](),controller[_0x4a6d('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0xee46=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','get','isAuthenticated','/:id','show','post','create','delete','multer','util','path'];(function(_0x1777c9,_0x29ce89){var _0x386fe4=function(_0x429574){while(--_0x429574){_0x1777c9['push'](_0x1777c9['shift']());}};_0x386fe4(++_0x29ce89);}(_0xee46,0x1ea));var _0x6ee4=function(_0x2146ca,_0x1c6f58){_0x2146ca=_0x2146ca-0x0;var _0xd00b9b=_0xee46[_0x2146ca];return _0xd00b9b;};'use strict';var multer=require(_0x6ee4('0x0'));var util=require(_0x6ee4('0x1'));var path=require(_0x6ee4('0x2'));var timeout=require('connect-timeout');var express=require(_0x6ee4('0x3'));var router=express[_0x6ee4('0x4')]();var fs_extra=require(_0x6ee4('0x5'));var auth=require(_0x6ee4('0x6'));var interaction=require(_0x6ee4('0x7'));var config=require(_0x6ee4('0x8'));var controller=require(_0x6ee4('0x9'));router[_0x6ee4('0xa')]('/',auth[_0x6ee4('0xb')](),controller['index']);router[_0x6ee4('0xa')](_0x6ee4('0xc'),auth[_0x6ee4('0xb')](),controller[_0x6ee4('0xd')]);router[_0x6ee4('0xe')]('/',auth[_0x6ee4('0xb')](),controller[_0x6ee4('0xf')]);router['put'](_0x6ee4('0xc'),auth[_0x6ee4('0xb')](),controller['update']);router[_0x6ee4('0x10')](_0x6ee4('0xc'),auth[_0x6ee4('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index e4ab3ca..b7287ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc01b=['exports','STRING','sequelize'];(function(_0x9fd126,_0x52ce45){var _0x1eaa5c=function(_0x177576){while(--_0x177576){_0x9fd126['push'](_0x9fd126['shift']());}};_0x1eaa5c(++_0x52ce45);}(_0xc01b,0x74));var _0xbc01=function(_0x2dfa8f,_0x31297f){_0x2dfa8f=_0x2dfa8f-0x0;var _0x5637ca=_0xc01b[_0x2dfa8f];return _0x5637ca;};'use strict';var Sequelize=require(_0xbc01('0x0'));module[_0xbc01('0x1')]={'name':{'type':Sequelize[_0xbc01('0x2')]},'basename':{'type':Sequelize[_0xbc01('0x2')]},'type':{'type':Sequelize[_0xbc01('0x2')]}};
\ No newline at end of file
+var _0x97d5=['STRING','sequelize','exports'];(function(_0x4bb581,_0x6f7037){var _0x316bf5=function(_0x1f6ed0){while(--_0x1f6ed0){_0x4bb581['push'](_0x4bb581['shift']());}};_0x316bf5(++_0x6f7037);}(_0x97d5,0x199));var _0x597d=function(_0x142020,_0x1f7233){_0x142020=_0x142020-0x0;var _0x40da8f=_0x97d5[_0x142020];return _0x40da8f;};'use strict';var Sequelize=require(_0x597d('0x0'));module[_0x597d('0x1')]={'name':{'type':Sequelize[_0x597d('0x2')]},'basename':{'type':Sequelize[_0x597d('0x2')]},'type':{'type':Sequelize[_0x597d('0x2')]}};
\ No newline at end of file
index 61929e6..83d7c80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d14=['ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','then','destroy','error','stack','name','send','index','rawAttributes','fieldName','key','map','query','intersection','attributes','model','fields','length','hasOwnProperty','sort','where','filters','filter','merge','type','options','Attachment','includeAll','include','findAll','rows','catch','show','params','find','clone','keys','get','omit','updatedAt','body','createdAt','create','update','file','basename','download','ChatOfflineMessageId','join','server/files/attachments/','offline-chat/','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv'];(function(_0x366776,_0x48f0bf){var _0x34e2ad=function(_0xb7dfb0){while(--_0xb7dfb0){_0x366776['push'](_0x366776['shift']());}};_0x34e2ad(++_0x48f0bf);}(_0x4d14,0xa7));var _0x44d1=function(_0x4fdcc0,_0x560a01){_0x4fdcc0=_0x4fdcc0-0x0;var _0xc0ce94=_0x4d14[_0x4fdcc0];return _0xc0ce94;};'use strict';var emlformat=require(_0x44d1('0x0'));var rimraf=require(_0x44d1('0x1'));var zipdir=require(_0x44d1('0x2'));var jsonpatch=require(_0x44d1('0x3'));var rp=require(_0x44d1('0x4'));var moment=require(_0x44d1('0x5'));var BPromise=require(_0x44d1('0x6'));var Mustache=require('mustache');var util=require(_0x44d1('0x7'));var path=require(_0x44d1('0x8'));var sox=require(_0x44d1('0x9'));var csv=require(_0x44d1('0xa'));var ejs=require(_0x44d1('0xb'));var fs=require('fs');var fs_extra=require(_0x44d1('0xc'));var _=require(_0x44d1('0xd'));var squel=require(_0x44d1('0xe'));var crypto=require(_0x44d1('0xf'));var jsforce=require(_0x44d1('0x10'));var deskjs=require(_0x44d1('0x11'));var toCsv=require(_0x44d1('0xa'));var querystring=require(_0x44d1('0x12'));var Papa=require(_0x44d1('0x13'));var Redis=require('ioredis');var authService=require(_0x44d1('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x44d1('0x15'));var hardwareService=require(_0x44d1('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0x44d1('0x17'));var config=require(_0x44d1('0x18'));var licenseUtil=require(_0x44d1('0x19'));var db=require(_0x44d1('0x1a'))['db'];function respondWithStatusCode(_0x67a17c,_0x23ecf6){_0x23ecf6=_0x23ecf6||0xcc;return function(_0x1b3018){if(_0x1b3018){return _0x67a17c[_0x44d1('0x1b')](_0x23ecf6);}return _0x67a17c[_0x44d1('0x1c')](_0x23ecf6)[_0x44d1('0x1d')]();};}function respondWithResult(_0x37bb1c,_0x5f4f41){_0x5f4f41=_0x5f4f41||0xc8;return function(_0x94a9d7){if(_0x94a9d7){return _0x37bb1c[_0x44d1('0x1c')](_0x5f4f41)[_0x44d1('0x1e')](_0x94a9d7);}};}function respondWithFilteredResult(_0x2309c8,_0x5c50d5){return function(_0x55b187){if(_0x55b187){var _0x5cb90d=typeof _0x5c50d5['offset']===_0x44d1('0x1f')&&typeof _0x5c50d5[_0x44d1('0x20')]===_0x44d1('0x1f');var _0x4e47da=_0x55b187[_0x44d1('0x21')];var _0x4f1e09=_0x5cb90d?0x0:_0x5c50d5[_0x44d1('0x22')];var _0x122025=_0x5cb90d?_0x55b187['count']:_0x5c50d5[_0x44d1('0x22')]+_0x5c50d5[_0x44d1('0x20')];var _0x3f97fb;if(_0x122025>=_0x4e47da){_0x122025=_0x4e47da;_0x3f97fb=0xc8;}else{_0x3f97fb=0xce;}_0x2309c8[_0x44d1('0x1c')](_0x3f97fb);return _0x2309c8[_0x44d1('0x23')](_0x44d1('0x24'),_0x4f1e09+'-'+_0x122025+'/'+_0x4e47da)[_0x44d1('0x1e')](_0x55b187);}return null;};}function patchUpdates(_0x56f533){return function(_0x27bbc1){try{jsonpatch[_0x44d1('0x25')](_0x27bbc1,_0x56f533,!![]);}catch(_0x348aff){return BPromise['reject'](_0x348aff);}return _0x27bbc1[_0x44d1('0x26')]();};}function saveUpdates(_0xf92a49,_0x3ca48d){return function(_0x495d48){if(_0x495d48){return _0x495d48['update'](_0xf92a49)[_0x44d1('0x27')](function(_0x2f4fe4){return _0x2f4fe4;});}return null;};}function removeEntity(_0x1a853c,_0x2e6b5f){return function(_0x29f2e0){if(_0x29f2e0){return _0x29f2e0[_0x44d1('0x28')]()['then'](function(){_0x1a853c[_0x44d1('0x1c')](0xcc)[_0x44d1('0x1d')]();});}};}function handleEntityNotFound(_0x3835ad,_0x7e4cd6){return function(_0x36d564){if(!_0x36d564){_0x3835ad[_0x44d1('0x1b')](0x194);}return _0x36d564;};}function handleError(_0x69dc27,_0x275e2e){_0x275e2e=_0x275e2e||0x1f4;return function(_0x2c1c2b){logger[_0x44d1('0x29')](_0x2c1c2b[_0x44d1('0x2a')]);if(_0x2c1c2b[_0x44d1('0x2b')]){delete _0x2c1c2b['name'];}_0x69dc27[_0x44d1('0x1c')](_0x275e2e)[_0x44d1('0x2c')](_0x2c1c2b);};}exports[_0x44d1('0x2d')]=function(_0x18aeb4,_0x18d528){var _0x45e366={},_0x1f4f1f={},_0x4ad454={'count':0x0,'rows':[]};var _0x22d63b=_['map'](db['Attachment'][_0x44d1('0x2e')],function(_0x15df00){return{'name':_0x15df00[_0x44d1('0x2f')],'type':_0x15df00['type'][_0x44d1('0x30')]};});_0x1f4f1f['model']=_[_0x44d1('0x31')](_0x22d63b,_0x44d1('0x2b'));_0x1f4f1f[_0x44d1('0x32')]=_['keys'](_0x18aeb4[_0x44d1('0x32')]);_0x1f4f1f['filters']=_[_0x44d1('0x33')](_0x1f4f1f['model'],_0x1f4f1f[_0x44d1('0x32')]);_0x45e366[_0x44d1('0x34')]=_[_0x44d1('0x33')](_0x1f4f1f[_0x44d1('0x35')],qs['fields'](_0x18aeb4['query'][_0x44d1('0x36')]));_0x45e366[_0x44d1('0x34')]=_0x45e366['attributes'][_0x44d1('0x37')]?_0x45e366[_0x44d1('0x34')]:_0x1f4f1f['model'];if(!_0x18aeb4[_0x44d1('0x32')][_0x44d1('0x38')]('nolimit')){_0x45e366[_0x44d1('0x20')]=qs[_0x44d1('0x20')](_0x18aeb4[_0x44d1('0x32')]['limit']);_0x45e366[_0x44d1('0x22')]=qs[_0x44d1('0x22')](_0x18aeb4[_0x44d1('0x32')][_0x44d1('0x22')]);}_0x45e366['order']=qs[_0x44d1('0x39')](_0x18aeb4['query'][_0x44d1('0x39')]);_0x45e366[_0x44d1('0x3a')]=qs[_0x44d1('0x3b')](_['pick'](_0x18aeb4[_0x44d1('0x32')],_0x1f4f1f['filters']),_0x22d63b);if(_0x18aeb4['query'][_0x44d1('0x3c')]){_0x45e366[_0x44d1('0x3a')]=_[_0x44d1('0x3d')](_0x45e366[_0x44d1('0x3a')],{'$or':_[_0x44d1('0x31')](_0x22d63b,function(_0x4f5bff){if(_0x4f5bff[_0x44d1('0x3e')]!=='VIRTUAL'){var _0x3a16c8={};_0x3a16c8[_0x4f5bff[_0x44d1('0x2b')]]={'$like':'%'+_0x18aeb4[_0x44d1('0x32')][_0x44d1('0x3c')]+'%'};return _0x3a16c8;}})});}_0x45e366=_[_0x44d1('0x3d')]({},_0x45e366,_0x18aeb4[_0x44d1('0x3f')]);var _0x3e2d7d={'where':_0x45e366['where']};return db[_0x44d1('0x40')]['count'](_0x3e2d7d)['then'](function(_0x44e7fd){_0x4ad454[_0x44d1('0x21')]=_0x44e7fd;if(_0x18aeb4[_0x44d1('0x32')][_0x44d1('0x41')]){_0x45e366[_0x44d1('0x42')]=[{'all':!![]}];}return db['Attachment'][_0x44d1('0x43')](_0x45e366);})['then'](function(_0x43d84f){_0x4ad454[_0x44d1('0x44')]=_0x43d84f;return _0x4ad454;})[_0x44d1('0x27')](respondWithFilteredResult(_0x18d528,_0x45e366))[_0x44d1('0x45')](handleError(_0x18d528,null));};exports[_0x44d1('0x46')]=function(_0x168667,_0x4449e0){var _0x37ee9a={'raw':!![],'where':{'id':_0x168667[_0x44d1('0x47')]['id']}},_0x2f6afd={};_0x2f6afd['model']=_['keys'](db[_0x44d1('0x40')][_0x44d1('0x2e')]);_0x2f6afd[_0x44d1('0x32')]=_['keys'](_0x168667[_0x44d1('0x32')]);_0x2f6afd[_0x44d1('0x3b')]=_['intersection'](_0x2f6afd['model'],_0x2f6afd[_0x44d1('0x32')]);_0x37ee9a[_0x44d1('0x34')]=_[_0x44d1('0x33')](_0x2f6afd[_0x44d1('0x35')],qs[_0x44d1('0x36')](_0x168667[_0x44d1('0x32')][_0x44d1('0x36')]));_0x37ee9a[_0x44d1('0x34')]=_0x37ee9a[_0x44d1('0x34')][_0x44d1('0x37')]?_0x37ee9a['attributes']:_0x2f6afd['model'];if(_0x168667[_0x44d1('0x32')]['includeAll']){_0x37ee9a[_0x44d1('0x42')]=[{'all':!![]}];}_0x37ee9a=_[_0x44d1('0x3d')]({},_0x37ee9a,_0x168667[_0x44d1('0x3f')]);return db[_0x44d1('0x40')][_0x44d1('0x48')](_0x37ee9a)[_0x44d1('0x27')](handleEntityNotFound(_0x4449e0,null))[_0x44d1('0x27')](respondWithResult(_0x4449e0,null))[_0x44d1('0x45')](handleError(_0x4449e0,null));};exports[_0x44d1('0x49')]=function(_0x21d676,_0x1fe95e){var _0x576f70={'where':{'id':_0x21d676[_0x44d1('0x47')]['id']}},_0x30d611={};_0x30d611[_0x44d1('0x35')]=_[_0x44d1('0x4a')](db['Attachment'][_0x44d1('0x2e')]);_0x576f70[_0x44d1('0x34')]=_[_0x44d1('0x33')](_0x30d611[_0x44d1('0x35')],qs['fields'](_0x21d676[_0x44d1('0x32')]['fields']));_0x576f70['attributes']=_0x576f70[_0x44d1('0x34')][_0x44d1('0x37')]?_0x576f70[_0x44d1('0x34')]:_0x30d611[_0x44d1('0x35')];if(_0x21d676[_0x44d1('0x32')][_0x44d1('0x41')]){_0x576f70[_0x44d1('0x42')]=[{'all':!![]}];}_0x576f70=_['merge']({},_0x576f70,_0x21d676[_0x44d1('0x3f')]);return db[_0x44d1('0x40')]['find'](_0x576f70)[_0x44d1('0x27')](handleEntityNotFound(_0x1fe95e,null))[_0x44d1('0x27')](function(_0x3864b1){if(_0x3864b1){var _0x530028=_0x3864b1[_0x44d1('0x4b')]({'plain':!![]});_0x530028=qs[_0x44d1('0x4c')](_0x530028,['id','createdAt',_0x44d1('0x4d')]);_0x21d676['body']=_[_0x44d1('0x4c')](_0x21d676[_0x44d1('0x4e')],['id',_0x44d1('0x4f'),'updatedAt']);return db[_0x44d1('0x40')][_0x44d1('0x50')](_['merge'](_0x530028,_0x21d676[_0x44d1('0x4e')]),{'include':_0x21d676[_0x44d1('0x32')][_0x44d1('0x41')]?[{'all':!![]}]:undefined});}})[_0x44d1('0x27')](respondWithResult(_0x1fe95e,0xc9))['catch'](handleError(_0x1fe95e,null));};exports[_0x44d1('0x51')]=function(_0x437ad4,_0x3dee6d){if(_0x437ad4['body']['id']){delete _0x437ad4[_0x44d1('0x4e')]['id'];}return db['Attachment']['find']({'where':{'id':_0x437ad4[_0x44d1('0x47')]['id']}})['then'](handleEntityNotFound(_0x3dee6d,null))[_0x44d1('0x27')](saveUpdates(_0x437ad4[_0x44d1('0x4e')],null))['then'](respondWithResult(_0x3dee6d,null))[_0x44d1('0x45')](handleError(_0x3dee6d,null));};exports[_0x44d1('0x28')]=function(_0x26aa81,_0x442a81){return db[_0x44d1('0x40')][_0x44d1('0x48')]({'where':{'id':_0x26aa81['params']['id']}})['then'](handleEntityNotFound(_0x442a81,null))['then'](removeEntity(_0x442a81,null))[_0x44d1('0x45')](handleError(_0x442a81,null));};exports['create']=function(_0xa84cba,_0x2cfeb2,_0x43090b){_0xa84cba[_0x44d1('0x4e')][_0x44d1('0x2b')]=_0xa84cba[_0x44d1('0x52')]['originalname'];_0xa84cba[_0x44d1('0x4e')][_0x44d1('0x53')]=_0xa84cba[_0x44d1('0x52')]['filename'];_0xa84cba[_0x44d1('0x4e')][_0x44d1('0x3e')]=_0xa84cba[_0x44d1('0x52')]['mimetype'];return db['Attachment'][_0x44d1('0x50')](_0xa84cba[_0x44d1('0x4e')])[_0x44d1('0x27')](respondWithResult(_0x2cfeb2,0xc9))['catch'](handleError(_0x2cfeb2,null));};exports[_0x44d1('0x54')]=function(_0x5bc47d,_0x29c98f,_0xbc7b47){return db[_0x44d1('0x40')]['findOne']({'where':{'id':_0x5bc47d[_0x44d1('0x47')]['id']},'raw':!![]})[_0x44d1('0x27')](handleEntityNotFound(_0x29c98f,null))[_0x44d1('0x27')](function(_0x3419b6){if(_0x3419b6){var _0x585a58=_0x3419b6[_0x44d1('0x55')]!==null;var _0x448e1c=path[_0x44d1('0x56')](config['root'],_0x44d1('0x57'));if(_0x585a58){_0x448e1c=path[_0x44d1('0x56')](_0x448e1c,_0x44d1('0x58'));}var _0x2caccd=path['join'](_0x448e1c,_0x3419b6[_0x44d1('0x53')]);return _0x29c98f[_0x44d1('0x54')](_0x2caccd);}})[_0x44d1('0x45')](handleError(_0x29c98f,null));};
\ No newline at end of file
+var _0xdacc=['body','createdAt','destroy','file','originalname','basename','mimetype','create','ChatOfflineMessageId','join','root','server/files/attachments/','download','rimraf','zip-dir','request-promise','moment','bluebird','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/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','reject','save','update','then','error','name','send','map','Attachment','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','sort','pick','filter','where','merge','options','includeAll','include','rows','params','find','catch','clone','get','omit','updatedAt'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xdacc,0xb5));var _0xcdac=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xdacc[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xcdac('0x0'));var zipdir=require(_0xcdac('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xcdac('0x2'));var moment=require(_0xcdac('0x3'));var BPromise=require(_0xcdac('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xcdac('0x5'));var csv=require(_0xcdac('0x6'));var ejs=require(_0xcdac('0x7'));var fs=require('fs');var fs_extra=require(_0xcdac('0x8'));var _=require(_0xcdac('0x9'));var squel=require(_0xcdac('0xa'));var crypto=require('crypto');var jsforce=require(_0xcdac('0xb'));var deskjs=require(_0xcdac('0xc'));var toCsv=require(_0xcdac('0x6'));var querystring=require('querystring');var Papa=require(_0xcdac('0xd'));var Redis=require(_0xcdac('0xe'));var authService=require(_0xcdac('0xf'));var qs=require(_0xcdac('0x10'));var as=require(_0xcdac('0x11'));var hardwareService=require(_0xcdac('0x12'));var logger=require(_0xcdac('0x13'))(_0xcdac('0x14'));var utils=require('../../config/utils');var config=require(_0xcdac('0x15'));var licenseUtil=require(_0xcdac('0x16'));var db=require(_0xcdac('0x17'))['db'];function respondWithStatusCode(_0x4a7eab,_0x18c083){_0x18c083=_0x18c083||0xcc;return function(_0x399ef7){if(_0x399ef7){return _0x4a7eab[_0xcdac('0x18')](_0x18c083);}return _0x4a7eab[_0xcdac('0x19')](_0x18c083)[_0xcdac('0x1a')]();};}function respondWithResult(_0x534ab4,_0x3e88dd){_0x3e88dd=_0x3e88dd||0xc8;return function(_0x900ffc){if(_0x900ffc){return _0x534ab4[_0xcdac('0x19')](_0x3e88dd)[_0xcdac('0x1b')](_0x900ffc);}};}function respondWithFilteredResult(_0xbc589f,_0x343398){return function(_0x161cf0){if(_0x161cf0){var _0x352d6c=typeof _0x343398[_0xcdac('0x1c')]===_0xcdac('0x1d')&&typeof _0x343398['limit']==='undefined';var _0xf8e405=_0x161cf0[_0xcdac('0x1e')];var _0x2c7826=_0x352d6c?0x0:_0x343398[_0xcdac('0x1c')];var _0x23a80a=_0x352d6c?_0x161cf0[_0xcdac('0x1e')]:_0x343398[_0xcdac('0x1c')]+_0x343398[_0xcdac('0x1f')];var _0x52e69e;if(_0x23a80a>=_0xf8e405){_0x23a80a=_0xf8e405;_0x52e69e=0xc8;}else{_0x52e69e=0xce;}_0xbc589f[_0xcdac('0x19')](_0x52e69e);return _0xbc589f['set'](_0xcdac('0x20'),_0x2c7826+'-'+_0x23a80a+'/'+_0xf8e405)[_0xcdac('0x1b')](_0x161cf0);}return null;};}function patchUpdates(_0x20fac5){return function(_0x4f094b){try{jsonpatch['apply'](_0x4f094b,_0x20fac5,!![]);}catch(_0x494de8){return BPromise[_0xcdac('0x21')](_0x494de8);}return _0x4f094b[_0xcdac('0x22')]();};}function saveUpdates(_0x194238,_0x2c8de5){return function(_0x2952ae){if(_0x2952ae){return _0x2952ae[_0xcdac('0x23')](_0x194238)[_0xcdac('0x24')](function(_0x5019d3){return _0x5019d3;});}return null;};}function removeEntity(_0x557188,_0x410643){return function(_0x493816){if(_0x493816){return _0x493816['destroy']()[_0xcdac('0x24')](function(){_0x557188[_0xcdac('0x19')](0xcc)[_0xcdac('0x1a')]();});}};}function handleEntityNotFound(_0x3bc955,_0x4f7525){return function(_0x5106ff){if(!_0x5106ff){_0x3bc955[_0xcdac('0x18')](0x194);}return _0x5106ff;};}function handleError(_0x206bf4,_0x410260){_0x410260=_0x410260||0x1f4;return function(_0x4aa0e5){logger[_0xcdac('0x25')](_0x4aa0e5['stack']);if(_0x4aa0e5[_0xcdac('0x26')]){delete _0x4aa0e5['name'];}_0x206bf4['status'](_0x410260)[_0xcdac('0x27')](_0x4aa0e5);};}exports['index']=function(_0x34abb4,_0x44fe6c){var _0x37f265={},_0x24246e={},_0x1285cc={'count':0x0,'rows':[]};var _0x52b933=_[_0xcdac('0x28')](db[_0xcdac('0x29')][_0xcdac('0x2a')],function(_0xdc6961){return{'name':_0xdc6961[_0xcdac('0x2b')],'type':_0xdc6961[_0xcdac('0x2c')][_0xcdac('0x2d')]};});_0x24246e['model']=_['map'](_0x52b933,_0xcdac('0x26'));_0x24246e[_0xcdac('0x2e')]=_[_0xcdac('0x2f')](_0x34abb4[_0xcdac('0x2e')]);_0x24246e[_0xcdac('0x30')]=_[_0xcdac('0x31')](_0x24246e[_0xcdac('0x32')],_0x24246e['query']);_0x37f265[_0xcdac('0x33')]=_[_0xcdac('0x31')](_0x24246e[_0xcdac('0x32')],qs['fields'](_0x34abb4[_0xcdac('0x2e')][_0xcdac('0x34')]));_0x37f265[_0xcdac('0x33')]=_0x37f265['attributes'][_0xcdac('0x35')]?_0x37f265[_0xcdac('0x33')]:_0x24246e[_0xcdac('0x32')];if(!_0x34abb4[_0xcdac('0x2e')][_0xcdac('0x36')]('nolimit')){_0x37f265[_0xcdac('0x1f')]=qs[_0xcdac('0x1f')](_0x34abb4['query'][_0xcdac('0x1f')]);_0x37f265[_0xcdac('0x1c')]=qs['offset'](_0x34abb4['query']['offset']);}_0x37f265['order']=qs[_0xcdac('0x37')](_0x34abb4[_0xcdac('0x2e')]['sort']);_0x37f265['where']=qs[_0xcdac('0x30')](_[_0xcdac('0x38')](_0x34abb4[_0xcdac('0x2e')],_0x24246e[_0xcdac('0x30')]),_0x52b933);if(_0x34abb4[_0xcdac('0x2e')][_0xcdac('0x39')]){_0x37f265[_0xcdac('0x3a')]=_['merge'](_0x37f265[_0xcdac('0x3a')],{'$or':_[_0xcdac('0x28')](_0x52b933,function(_0x435a52){if(_0x435a52[_0xcdac('0x2c')]!=='VIRTUAL'){var _0x4c4696={};_0x4c4696[_0x435a52[_0xcdac('0x26')]]={'$like':'%'+_0x34abb4[_0xcdac('0x2e')][_0xcdac('0x39')]+'%'};return _0x4c4696;}})});}_0x37f265=_[_0xcdac('0x3b')]({},_0x37f265,_0x34abb4[_0xcdac('0x3c')]);var _0x36e70d={'where':_0x37f265['where']};return db[_0xcdac('0x29')][_0xcdac('0x1e')](_0x36e70d)[_0xcdac('0x24')](function(_0xda340f){_0x1285cc[_0xcdac('0x1e')]=_0xda340f;if(_0x34abb4[_0xcdac('0x2e')][_0xcdac('0x3d')]){_0x37f265[_0xcdac('0x3e')]=[{'all':!![]}];}return db[_0xcdac('0x29')]['findAll'](_0x37f265);})[_0xcdac('0x24')](function(_0x2b53c7){_0x1285cc[_0xcdac('0x3f')]=_0x2b53c7;return _0x1285cc;})[_0xcdac('0x24')](respondWithFilteredResult(_0x44fe6c,_0x37f265))['catch'](handleError(_0x44fe6c,null));};exports['show']=function(_0x11eb1b,_0x544f03){var _0xfe6d2a={'raw':!![],'where':{'id':_0x11eb1b[_0xcdac('0x40')]['id']}},_0x40708d={};_0x40708d[_0xcdac('0x32')]=_[_0xcdac('0x2f')](db['Attachment'][_0xcdac('0x2a')]);_0x40708d[_0xcdac('0x2e')]=_[_0xcdac('0x2f')](_0x11eb1b[_0xcdac('0x2e')]);_0x40708d[_0xcdac('0x30')]=_[_0xcdac('0x31')](_0x40708d['model'],_0x40708d[_0xcdac('0x2e')]);_0xfe6d2a[_0xcdac('0x33')]=_[_0xcdac('0x31')](_0x40708d['model'],qs['fields'](_0x11eb1b[_0xcdac('0x2e')]['fields']));_0xfe6d2a[_0xcdac('0x33')]=_0xfe6d2a['attributes'][_0xcdac('0x35')]?_0xfe6d2a[_0xcdac('0x33')]:_0x40708d['model'];if(_0x11eb1b[_0xcdac('0x2e')][_0xcdac('0x3d')]){_0xfe6d2a[_0xcdac('0x3e')]=[{'all':!![]}];}_0xfe6d2a=_['merge']({},_0xfe6d2a,_0x11eb1b[_0xcdac('0x3c')]);return db[_0xcdac('0x29')][_0xcdac('0x41')](_0xfe6d2a)[_0xcdac('0x24')](handleEntityNotFound(_0x544f03,null))[_0xcdac('0x24')](respondWithResult(_0x544f03,null))[_0xcdac('0x42')](handleError(_0x544f03,null));};exports[_0xcdac('0x43')]=function(_0x2aa3a3,_0x26fa15){var _0x33ad61={'where':{'id':_0x2aa3a3[_0xcdac('0x40')]['id']}},_0x497284={};_0x497284[_0xcdac('0x32')]=_[_0xcdac('0x2f')](db[_0xcdac('0x29')][_0xcdac('0x2a')]);_0x33ad61[_0xcdac('0x33')]=_[_0xcdac('0x31')](_0x497284['model'],qs[_0xcdac('0x34')](_0x2aa3a3[_0xcdac('0x2e')][_0xcdac('0x34')]));_0x33ad61[_0xcdac('0x33')]=_0x33ad61[_0xcdac('0x33')]['length']?_0x33ad61[_0xcdac('0x33')]:_0x497284[_0xcdac('0x32')];if(_0x2aa3a3[_0xcdac('0x2e')][_0xcdac('0x3d')]){_0x33ad61[_0xcdac('0x3e')]=[{'all':!![]}];}_0x33ad61=_[_0xcdac('0x3b')]({},_0x33ad61,_0x2aa3a3[_0xcdac('0x3c')]);return db[_0xcdac('0x29')][_0xcdac('0x41')](_0x33ad61)[_0xcdac('0x24')](handleEntityNotFound(_0x26fa15,null))['then'](function(_0x186000){if(_0x186000){var _0x27d68b=_0x186000[_0xcdac('0x44')]({'plain':!![]});_0x27d68b=qs[_0xcdac('0x45')](_0x27d68b,['id','createdAt',_0xcdac('0x46')]);_0x2aa3a3[_0xcdac('0x47')]=_[_0xcdac('0x45')](_0x2aa3a3[_0xcdac('0x47')],['id',_0xcdac('0x48'),_0xcdac('0x46')]);return db[_0xcdac('0x29')]['create'](_[_0xcdac('0x3b')](_0x27d68b,_0x2aa3a3[_0xcdac('0x47')]),{'include':_0x2aa3a3['query'][_0xcdac('0x3d')]?[{'all':!![]}]:undefined});}})[_0xcdac('0x24')](respondWithResult(_0x26fa15,0xc9))[_0xcdac('0x42')](handleError(_0x26fa15,null));};exports[_0xcdac('0x23')]=function(_0x112157,_0x7fe243){if(_0x112157['body']['id']){delete _0x112157['body']['id'];}return db[_0xcdac('0x29')]['find']({'where':{'id':_0x112157['params']['id']}})[_0xcdac('0x24')](handleEntityNotFound(_0x7fe243,null))[_0xcdac('0x24')](saveUpdates(_0x112157[_0xcdac('0x47')],null))[_0xcdac('0x24')](respondWithResult(_0x7fe243,null))['catch'](handleError(_0x7fe243,null));};exports[_0xcdac('0x49')]=function(_0x25d722,_0x56fd42){return db[_0xcdac('0x29')][_0xcdac('0x41')]({'where':{'id':_0x25d722[_0xcdac('0x40')]['id']}})[_0xcdac('0x24')](handleEntityNotFound(_0x56fd42,null))[_0xcdac('0x24')](removeEntity(_0x56fd42,null))[_0xcdac('0x42')](handleError(_0x56fd42,null));};exports['create']=function(_0x55ef8e,_0x462f33,_0x4367bb){_0x55ef8e[_0xcdac('0x47')][_0xcdac('0x26')]=_0x55ef8e[_0xcdac('0x4a')][_0xcdac('0x4b')];_0x55ef8e['body'][_0xcdac('0x4c')]=_0x55ef8e[_0xcdac('0x4a')]['filename'];_0x55ef8e['body'][_0xcdac('0x2c')]=_0x55ef8e[_0xcdac('0x4a')][_0xcdac('0x4d')];return db[_0xcdac('0x29')][_0xcdac('0x4e')](_0x55ef8e[_0xcdac('0x47')])[_0xcdac('0x24')](respondWithResult(_0x462f33,0xc9))[_0xcdac('0x42')](handleError(_0x462f33,null));};exports['download']=function(_0x4b3096,_0x5c17d7,_0x50a840){return db[_0xcdac('0x29')]['findOne']({'where':{'id':_0x4b3096[_0xcdac('0x40')]['id']},'raw':!![]})[_0xcdac('0x24')](handleEntityNotFound(_0x5c17d7,null))['then'](function(_0x5a1086){if(_0x5a1086){var _0x4e0cdc=_0x5a1086[_0xcdac('0x4f')]!==null;var _0x175c4a=path[_0xcdac('0x50')](config[_0xcdac('0x51')],_0xcdac('0x52'));if(_0x4e0cdc){_0x175c4a=path['join'](_0x175c4a,'offline-chat/');}var _0x1e2f88=path[_0xcdac('0x50')](_0x175c4a,_0x5a1086[_0xcdac('0x4c')]);return _0x5c17d7[_0xcdac('0x53')](_0x1e2f88);}})[_0xcdac('0x42')](handleError(_0x5c17d7,null));};
\ No newline at end of file
index 0d18c77..f66d495 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x439c=['define','Attachment','attachments','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./attachment.attributes','exports'];(function(_0x3ec1da,_0x1e36f5){var _0x472358=function(_0x1d41b1){while(--_0x1d41b1){_0x3ec1da['push'](_0x3ec1da['shift']());}};_0x472358(++_0x1e36f5);}(_0x439c,0x1e4));var _0xc439=function(_0x241420,_0xaee6f9){_0x241420=_0x241420-0x0;var _0x4961a9=_0x439c[_0x241420];return _0x4961a9;};'use strict';var _=require('lodash');var util=require(_0xc439('0x0'));var logger=require(_0xc439('0x1'))(_0xc439('0x2'));var moment=require(_0xc439('0x3'));var BPromise=require(_0xc439('0x4'));var rp=require(_0xc439('0x5'));var fs=require('fs');var path=require(_0xc439('0x6'));var rimraf=require('rimraf');var config=require(_0xc439('0x7'));var attributes=require(_0xc439('0x8'));module[_0xc439('0x9')]=function(_0x5d3b5c,_0x22ed3b){return _0x5d3b5c[_0xc439('0xa')](_0xc439('0xb'),attributes,{'tableName':_0xc439('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2a8b=['attachments','lodash','util','../../config/logger','api','moment','request-promise','rimraf','exports','define','Attachment'];(function(_0x452dc5,_0x2e90a5){var _0x32c54a=function(_0x5d5e1d){while(--_0x5d5e1d){_0x452dc5['push'](_0x452dc5['shift']());}};_0x32c54a(++_0x2e90a5);}(_0x2a8b,0x16c));var _0xb2a8=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0x2a8b[_0xc6be3a];return _0x56a310;};'use strict';var _=require(_0xb2a8('0x0'));var util=require(_0xb2a8('0x1'));var logger=require(_0xb2a8('0x2'))(_0xb2a8('0x3'));var moment=require(_0xb2a8('0x4'));var BPromise=require('bluebird');var rp=require(_0xb2a8('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb2a8('0x6'));var config=require('../../config/environment');var attributes=require('./attachment.attributes');module[_0xb2a8('0x7')]=function(_0x4b2d88,_0x187194){return _0x4b2d88[_0xb2a8('0x8')](_0xb2a8('0x9'),attributes,{'tableName':_0xb2a8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2abe316..2d60f41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48ea=['lodash','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Attachment,\x20%s,\x20%s','debug','error','code','message','result','catch','CreateAttachment','Attachment','create','body','options','stringify'];(function(_0x28b7ab,_0x16a764){var _0x56791b=function(_0x25d20d){while(--_0x25d20d){_0x28b7ab['push'](_0x28b7ab['shift']());}};_0x56791b(++_0x16a764);}(_0x48ea,0x9c));var _0xa48e=function(_0x3c8919,_0x1b11b6){_0x3c8919=_0x3c8919-0x0;var _0x2e43ae=_0x48ea[_0x3c8919];return _0x2e43ae;};'use strict';var _=require(_0xa48e('0x0'));var util=require('util');var moment=require(_0xa48e('0x1'));var BPromise=require(_0xa48e('0x2'));var rs=require(_0xa48e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xa48e('0x4'));var logger=require('../../config/logger')(_0xa48e('0x5'));var config=require(_0xa48e('0x6'));var jayson=require(_0xa48e('0x7'));var client=jayson[_0xa48e('0x8')][_0xa48e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x405033,_0x5213e5,_0x143004){return new BPromise(function(_0x3bdc25,_0x170ffc){return client[_0xa48e('0xa')](_0x405033,_0x143004)[_0xa48e('0xb')](function(_0x3ad947){logger[_0xa48e('0xc')](_0xa48e('0xd'),_0x5213e5,'request\x20sent');logger[_0xa48e('0xe')]('Attachment,\x20%s,\x20%s,\x20%s',_0x5213e5,'request\x20sent',JSON['stringify'](_0x3ad947));if(_0x3ad947[_0xa48e('0xf')]){if(_0x3ad947[_0xa48e('0xf')][_0xa48e('0x10')]===0x1f4){logger[_0xa48e('0xf')]('Attachment,\x20%s,\x20%s',_0x5213e5,_0x3ad947[_0xa48e('0xf')][_0xa48e('0x11')]);return _0x170ffc(_0x3ad947[_0xa48e('0xf')][_0xa48e('0x11')]);}logger[_0xa48e('0xf')](_0xa48e('0xd'),_0x5213e5,_0x3ad947[_0xa48e('0xf')]['message']);return _0x3bdc25(_0x3ad947[_0xa48e('0xf')][_0xa48e('0x11')]);}else{logger[_0xa48e('0xc')](_0xa48e('0xd'),_0x5213e5,'request\x20sent');_0x3bdc25(_0x3ad947[_0xa48e('0x12')][_0xa48e('0x11')]);}})[_0xa48e('0x13')](function(_0x28c15c){logger[_0xa48e('0xf')](_0xa48e('0xd'),_0x5213e5,_0x28c15c);_0x170ffc(_0x28c15c);});});}exports[_0xa48e('0x14')]=function(_0x1f1cbc){var _0x320d22=this;return new Promise(function(_0x1baea5,_0xfc65bf){return db[_0xa48e('0x15')][_0xa48e('0x16')](_0x1f1cbc[_0xa48e('0x17')],{'raw':_0x1f1cbc[_0xa48e('0x18')]?_0x1f1cbc['options']['raw']===undefined?!![]:![]:!![]})[_0xa48e('0xb')](function(_0x5939e0){logger[_0xa48e('0xc')](_0xa48e('0x14'),_0x1f1cbc);logger[_0xa48e('0xe')](_0xa48e('0x14'),_0x1f1cbc,JSON[_0xa48e('0x19')](_0x5939e0));_0x1baea5(_0x5939e0);})[_0xa48e('0x13')](function(_0x240f87){logger['error'](_0xa48e('0x14'),_0x240f87['message'],_0x1f1cbc);_0xfc65bf(_0x320d22['error'](0x1f4,_0x240f87['message']));});});};
\ No newline at end of file
+var _0x1b73=['jayson/promise','client','http','request','then','Attachment,\x20%s,\x20%s','request\x20sent','debug','Attachment,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CreateAttachment','Attachment','create','options','raw','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x1b73,0x1d5));var _0x31b7=function(_0x38d4f7,_0x22ce5f){_0x38d4f7=_0x38d4f7-0x0;var _0x16022d=_0x1b73[_0x38d4f7];return _0x16022d;};'use strict';var _=require('lodash');var util=require(_0x31b7('0x0'));var moment=require(_0x31b7('0x1'));var BPromise=require(_0x31b7('0x2'));var rs=require(_0x31b7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x31b7('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x31b7('0x5'))(_0x31b7('0x6'));var config=require('../../config/environment');var jayson=require(_0x31b7('0x7'));var client=jayson[_0x31b7('0x8')][_0x31b7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x502838,_0x445dbe,_0x1a730f){return new BPromise(function(_0x86ef8e,_0x19b92a){return client[_0x31b7('0xa')](_0x502838,_0x1a730f)[_0x31b7('0xb')](function(_0x3d2b41){logger['info'](_0x31b7('0xc'),_0x445dbe,_0x31b7('0xd'));logger[_0x31b7('0xe')](_0x31b7('0xf'),_0x445dbe,_0x31b7('0xd'),JSON[_0x31b7('0x10')](_0x3d2b41));if(_0x3d2b41[_0x31b7('0x11')]){if(_0x3d2b41[_0x31b7('0x11')][_0x31b7('0x12')]===0x1f4){logger[_0x31b7('0x11')]('Attachment,\x20%s,\x20%s',_0x445dbe,_0x3d2b41[_0x31b7('0x11')][_0x31b7('0x13')]);return _0x19b92a(_0x3d2b41[_0x31b7('0x11')][_0x31b7('0x13')]);}logger[_0x31b7('0x11')](_0x31b7('0xc'),_0x445dbe,_0x3d2b41[_0x31b7('0x11')][_0x31b7('0x13')]);return _0x86ef8e(_0x3d2b41[_0x31b7('0x11')]['message']);}else{logger[_0x31b7('0x14')]('Attachment,\x20%s,\x20%s',_0x445dbe,_0x31b7('0xd'));_0x86ef8e(_0x3d2b41[_0x31b7('0x15')]['message']);}})[_0x31b7('0x16')](function(_0x3c71ae){logger[_0x31b7('0x11')](_0x31b7('0xc'),_0x445dbe,_0x3c71ae);_0x19b92a(_0x3c71ae);});});}exports[_0x31b7('0x17')]=function(_0x5f3245){var _0x223f9f=this;return new Promise(function(_0x437eba,_0x1dc28c){return db[_0x31b7('0x18')][_0x31b7('0x19')](_0x5f3245['body'],{'raw':_0x5f3245[_0x31b7('0x1a')]?_0x5f3245[_0x31b7('0x1a')][_0x31b7('0x1b')]===undefined?!![]:![]:!![]})[_0x31b7('0xb')](function(_0x5b56bc){logger[_0x31b7('0x14')](_0x31b7('0x17'),_0x5f3245);logger[_0x31b7('0xe')](_0x31b7('0x17'),_0x5f3245,JSON['stringify'](_0x5b56bc));_0x437eba(_0x5b56bc);})[_0x31b7('0x16')](function(_0x20cb03){logger[_0x31b7('0x11')](_0x31b7('0x17'),_0x20cb03[_0x31b7('0x13')],_0x5f3245);_0x1dc28c(_0x223f9f[_0x31b7('0x11')](0x1f4,_0x20cb03[_0x31b7('0x13')]));});});};
\ No newline at end of file
index 3bb96d0..d045d46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['put','/:id','update','delete','destroy','exports','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./attachment.controller','get','index','isAuthenticated','show','/:id/download','post','/:id/clone','clone','diskStorage','%s-%s','replace','single','file','create'];(function(_0x11c021,_0x53ebf2){var _0x14af1d=function(_0x301be9){while(--_0x301be9){_0x11c021['push'](_0x11c021['shift']());}};_0x14af1d(++_0x53ebf2);}(_0x757a,0xde));var _0xa757=function(_0xaeec1d,_0x418311){_0xaeec1d=_0xaeec1d-0x0;var _0x1b159e=_0x757a[_0xaeec1d];return _0x1b159e;};'use strict';var multer=require('multer');var util=require(_0xa757('0x0'));var path=require(_0xa757('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xa757('0x2'));var auth=require(_0xa757('0x3'));var interaction=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var controller=require(_0xa757('0x6'));router[_0xa757('0x7')]('/',auth['isAuthenticated'](),controller[_0xa757('0x8')]);router[_0xa757('0x7')]('/:id',auth[_0xa757('0x9')](),controller[_0xa757('0xa')]);router[_0xa757('0x7')](_0xa757('0xb'),auth[_0xa757('0x9')](),controller['download']);router[_0xa757('0xc')](_0xa757('0xd'),auth[_0xa757('0x9')](),controller[_0xa757('0xe')]);var upload=multer({'storage':multer[_0xa757('0xf')]({'destination':function(_0x188ad5,_0x17408b,_0x483d77){_0x483d77(null,path['join'](config['root'],'server/files/attachments/'));},'filename':function(_0x4db68e,_0x421040,_0x544b45){_0x544b45(null,util['format'](_0xa757('0x10'),Date['now'](),_0x421040['originalname'][_0xa757('0x11')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xa757('0xc')]('/',upload[_0xa757('0x12')](_0xa757('0x13')),controller[_0xa757('0x14')]);router[_0xa757('0x15')](_0xa757('0x16'),auth[_0xa757('0x9')](),controller[_0xa757('0x17')]);router[_0xa757('0x18')]('/:id',auth[_0xa757('0x9')](),controller[_0xa757('0x19')]);module[_0xa757('0x1a')]=router;
\ No newline at end of file
+var _0x2032=['./attachment.controller','get','isAuthenticated','index','/:id','show','download','/:id/clone','clone','root','server/files/attachments/','now','post','single','file','create','put','update','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x5e8bce,_0x4062f5){var _0x104dc2=function(_0x4f45e0){while(--_0x4f45e0){_0x5e8bce['push'](_0x5e8bce['shift']());}};_0x104dc2(++_0x4062f5);}(_0x2032,0xd9));var _0x2203=function(_0x2003e2,_0x24461a){_0x2003e2=_0x2003e2-0x0;var _0x4d62c7=_0x2032[_0x2003e2];return _0x4d62c7;};'use strict';var multer=require('multer');var util=require(_0x2203('0x0'));var path=require(_0x2203('0x1'));var timeout=require(_0x2203('0x2'));var express=require('express');var router=express[_0x2203('0x3')]();var fs_extra=require(_0x2203('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x2203('0x5'));var config=require(_0x2203('0x6'));var controller=require(_0x2203('0x7'));router[_0x2203('0x8')]('/',auth[_0x2203('0x9')](),controller[_0x2203('0xa')]);router[_0x2203('0x8')](_0x2203('0xb'),auth[_0x2203('0x9')](),controller[_0x2203('0xc')]);router[_0x2203('0x8')]('/:id/download',auth['isAuthenticated'](),controller[_0x2203('0xd')]);router['post'](_0x2203('0xe'),auth[_0x2203('0x9')](),controller[_0x2203('0xf')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x849049,_0x4a6832,_0x3f690a){_0x3f690a(null,path['join'](config[_0x2203('0x10')],_0x2203('0x11')));},'filename':function(_0x4b9376,_0x583bc7,_0x585c76){_0x585c76(null,util['format']('%s-%s',Date[_0x2203('0x12')](),_0x583bc7['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x2203('0x13')]('/',upload[_0x2203('0x14')](_0x2203('0x15')),controller[_0x2203('0x16')]);router[_0x2203('0x17')](_0x2203('0xb'),auth[_0x2203('0x9')](),controller[_0x2203('0x18')]);router[_0x2203('0x19')](_0x2203('0xb'),auth['isAuthenticated'](),controller[_0x2203('0x1a')]);module[_0x2203('0x1b')]=router;
\ No newline at end of file
index 0faa243..9390412 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf819=['disabled','blocked','admin','user','blockedAt','add','minutes','getLicense','catch','status','send','ad-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','json','online','use','User','passport','passport-local','Strategy','moment','activedirectory2','bluebird','util','../../mysqldb','../../components/auth/service','../../config/utils','../../config/environment','../../config/logger','api','activedirectory','undefined','baseDN','url','domain','error','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','Setting','adSsoEnabled','blockDuration','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','findOne','name','password','salt','role'];(function(_0x28d225,_0x43be18){var _0x1f79e1=function(_0x362c23){while(--_0x362c23){_0x28d225['push'](_0x28d225['shift']());}};_0x1f79e1(++_0x43be18);}(_0xf819,0x73));var _0x9f81=function(_0xd98ca3,_0x38fbd9){_0xd98ca3=_0xd98ca3-0x0;var _0x35960d=_0xf819[_0xd98ca3];return _0x35960d;};'use strict';var passport=require(_0x9f81('0x0'));var LocalStrategy=require(_0x9f81('0x1'))[_0x9f81('0x2')];var moment=require(_0x9f81('0x3'));var ActiveDirectory=require(_0x9f81('0x4'));var BPromise=require(_0x9f81('0x5'));var util=require(_0x9f81('0x6'));var db=require(_0x9f81('0x7'))['db'];var authService=require(_0x9f81('0x8'));var utils=require(_0x9f81('0x9'));var config=require(_0x9f81('0xa'));var logger=require(_0x9f81('0xb'))(_0x9f81('0xc'));function isActiveDirectoryConfigured(_0x35c838){var _0xe847a=![];if(typeof _0x35c838[_0x9f81('0xd')]!==_0x9f81('0xe')){_0xe847a=_0x35c838['activedirectory'][_0x9f81('0xf')]&&_0x35c838[_0x9f81('0xd')][_0x9f81('0x10')]&&_0x35c838[_0x9f81('0xd')][_0x9f81('0x11')];}return _0xe847a;}function adAuthenticate(_0x3c036a,_0x28fe23,_0x429917){return new BPromise(function(_0x41a747,_0x32d358){try{var _0x27b1de=new ActiveDirectory(_0x3c036a);_0x27b1de['authenticate'](_0x28fe23,_0x429917,function(_0x460316,_0x5fe3cf){if(_0x460316){logger[_0x9f81('0x12')]('Error\x20authenticate\x20%s:\x20%s',_0x28fe23,util['inspect'](_0x460316,{'showHidden':![],'depth':null}));_0x32d358(_0x9f81('0x13'));}else if(!_0x5fe3cf){logger[_0x9f81('0x12')](_0x9f81('0x14'),_0x28fe23);_0x32d358('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x41a747(_0x5fe3cf);}});}catch(_0x2ba7c6){_0x32d358(_0x2ba7c6);}});}function ActiveDirectoryAuthenticate(_0x4fd2a3,_0x54aeff,_0x259c87,_0x2a4318){var _0x32bc18,_0x30cd29;if(!isActiveDirectoryConfigured(config)){logger[_0x9f81('0x12')](_0x9f81('0x15'),_0x54aeff);return _0x2a4318(null,![],{'message':_0x9f81('0x13')});}return db[_0x9f81('0x16')]['findOne']({'where':{'id':0x1},'attributes':[_0x9f81('0x17'),_0x9f81('0x18')],'raw':!![]})[_0x9f81('0x19')](function(_0x544634){_0x32bc18=_0x544634;if(!_0x32bc18[_0x9f81('0x17')]){logger[_0x9f81('0x12')](_0x9f81('0x1a'),_0x54aeff);throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}return _0x4fd2a3[_0x9f81('0x1b')]({'attributes':['id',_0x9f81('0x1c'),_0x9f81('0x1d'),_0x9f81('0x1e'),_0x9f81('0x1f'),_0x9f81('0x20'),_0x9f81('0x21'),'blockedAt','online'],'where':{'name':_0x54aeff,'role':{'$or':[_0x9f81('0x22'),_0x9f81('0x23'),'agent']},'adSsoEnabled':!![]}});})[_0x9f81('0x19')](function(_0x11901c){if(!_0x11901c||_0x11901c&&_0x11901c[_0x9f81('0x1c')]!==_0x54aeff){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}_0x30cd29=_0x11901c;var _0x218a40=_0x30cd29[_0x9f81('0x1c')]+'@'+config[_0x9f81('0xd')][_0x9f81('0x11')];return adAuthenticate(config[_0x9f81('0xd')],_0x218a40,_0x259c87);})[_0x9f81('0x19')](function(_0x7691ca){if(_0x30cd29[_0x9f81('0x20')]){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}if(_0x32bc18[_0x9f81('0x18')]>0x0){if(_0x30cd29[_0x9f81('0x21')]){if(moment(_0x30cd29[_0x9f81('0x24')])[_0x9f81('0x25')](_0x32bc18[_0x9f81('0x18')],_0x9f81('0x26'))>moment()){throw new Error(_0x9f81('0x13'));}return utils['clearBlockUser'](_0x30cd29,0x0,![],null)[_0x9f81('0x19')](function(){return utils['getLicense'](_0x30cd29);})[_0x9f81('0x19')](function(){return _0x2a4318(null,_0x30cd29);});}else{return utils['getLicense'](_0x30cd29)[_0x9f81('0x19')](function(){return _0x2a4318(null,_0x30cd29);});}}else{return utils[_0x9f81('0x27')](_0x30cd29)['then'](function(){return _0x2a4318(null,_0x30cd29);});}})[_0x9f81('0x28')](function(_0x3d1eff){return _0x2a4318(null,![],_0x3d1eff);});}function handleError(_0x40cf1f,_0x17c68b,_0x3ffa80){return _0x40cf1f[_0x9f81('0x29')](_0x17c68b||0x1f4)[_0x9f81('0x2a')]({'message':_0x3ffa80?_0x3ffa80['message']||_0x3ffa80:''});}exports['login']=function(_0x465a39,_0xd8a134,_0xb33ea9){passport['authenticate'](_0x9f81('0x2b'),function(_0x3076e4,_0x23a48e,_0x553661){var _0x3bea0e=_0x3076e4||_0x553661;if(_0x3bea0e){return handleError(_0xd8a134,0x191,_0x3bea0e);}if(!_0x23a48e){return handleError(_0xd8a134,0x194,{'message':_0x9f81('0x2c')});}else{var _0x225b56={'payload':{'id':_0x23a48e['id'],'role':_0x23a48e['role']},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x225b56)[_0x9f81('0x19')](function(_0xb470bc){_0xd8a134[_0x9f81('0x2d')]({'id':_0x23a48e['id'],'token':_0xb470bc,'statusCall':'','isAlreadyLogged':_0x23a48e[_0x9f81('0x2e')]});});}})(_0x465a39,_0xd8a134,_0xb33ea9);};passport[_0x9f81('0x2f')]('ad-login',new LocalStrategy({'usernameField':_0x9f81('0x1c'),'passwordField':_0x9f81('0x1d')},function(_0x5b1607,_0xf13c56,_0x101496){return ActiveDirectoryAuthenticate(db[_0x9f81('0x30')],_0x5b1607,_0xf13c56,_0x101496);}));
\ No newline at end of file
+var _0x4075=['signToken','json','use','User','passport','passport-local','activedirectory2','bluebird','util','../../mysqldb','../../components/auth/service','../../config/utils','../../config/environment','../../config/logger','api','activedirectory','domain','authenticate','Error\x20authenticate\x20%s:\x20%s','inspect','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','error','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','Setting','then','adSsoEnabled','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','findOne','name','password','salt','role','disabled','blocked','blockedAt','online','admin','agent','blockDuration','add','minutes','clearBlockUser','getLicense','status','send','message','login','ad-login','Something\x20went\x20wrong,\x20please\x20try\x20again.'];(function(_0x4e0e93,_0x3e7065){var _0x41c313=function(_0x1ab60b){while(--_0x1ab60b){_0x4e0e93['push'](_0x4e0e93['shift']());}};_0x41c313(++_0x3e7065);}(_0x4075,0xcc));var _0x5407=function(_0x1fc4e2,_0x493c3b){_0x1fc4e2=_0x1fc4e2-0x0;var _0x2ba184=_0x4075[_0x1fc4e2];return _0x2ba184;};'use strict';var passport=require(_0x5407('0x0'));var LocalStrategy=require(_0x5407('0x1'))['Strategy'];var moment=require('moment');var ActiveDirectory=require(_0x5407('0x2'));var BPromise=require(_0x5407('0x3'));var util=require(_0x5407('0x4'));var db=require(_0x5407('0x5'))['db'];var authService=require(_0x5407('0x6'));var utils=require(_0x5407('0x7'));var config=require(_0x5407('0x8'));var logger=require(_0x5407('0x9'))(_0x5407('0xa'));function isActiveDirectoryConfigured(_0x4e7115){var _0x2443a7=![];if(typeof _0x4e7115[_0x5407('0xb')]!=='undefined'){_0x2443a7=_0x4e7115['activedirectory']['baseDN']&&_0x4e7115[_0x5407('0xb')]['url']&&_0x4e7115['activedirectory'][_0x5407('0xc')];}return _0x2443a7;}function adAuthenticate(_0x157519,_0x27853b,_0x383ffb){return new BPromise(function(_0x372c51,_0x59766c){try{var _0x3d51b7=new ActiveDirectory(_0x157519);_0x3d51b7[_0x5407('0xd')](_0x27853b,_0x383ffb,function(_0x134ee5,_0x25d066){if(_0x134ee5){logger['error'](_0x5407('0xe'),_0x27853b,util[_0x5407('0xf')](_0x134ee5,{'showHidden':![],'depth':null}));_0x59766c(_0x5407('0x10'));}else if(!_0x25d066){logger[_0x5407('0x11')](_0x5407('0x12'),_0x27853b);_0x59766c('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x372c51(_0x25d066);}});}catch(_0x3db302){_0x59766c(_0x3db302);}});}function ActiveDirectoryAuthenticate(_0x4b6767,_0x590d19,_0x3c8039,_0x2b7d8b){var _0x510d80,_0x387f22;if(!isActiveDirectoryConfigured(config)){logger[_0x5407('0x11')](_0x5407('0x13'),_0x590d19);return _0x2b7d8b(null,![],{'message':_0x5407('0x10')});}return db[_0x5407('0x14')]['findOne']({'where':{'id':0x1},'attributes':['adSsoEnabled','blockDuration'],'raw':!![]})[_0x5407('0x15')](function(_0x2fce66){_0x510d80=_0x2fce66;if(!_0x510d80[_0x5407('0x16')]){logger[_0x5407('0x11')](_0x5407('0x17'),_0x590d19);throw new Error(_0x5407('0x10'));}return _0x4b6767[_0x5407('0x18')]({'attributes':['id',_0x5407('0x19'),_0x5407('0x1a'),_0x5407('0x1b'),_0x5407('0x1c'),_0x5407('0x1d'),_0x5407('0x1e'),_0x5407('0x1f'),_0x5407('0x20')],'where':{'name':_0x590d19,'role':{'$or':[_0x5407('0x21'),'user',_0x5407('0x22')]},'adSsoEnabled':!![]}});})[_0x5407('0x15')](function(_0x2c0943){if(!_0x2c0943||_0x2c0943&&_0x2c0943[_0x5407('0x19')]!==_0x590d19){throw new Error(_0x5407('0x10'));}_0x387f22=_0x2c0943;var _0x252ba3=_0x387f22[_0x5407('0x19')]+'@'+config[_0x5407('0xb')][_0x5407('0xc')];return adAuthenticate(config['activedirectory'],_0x252ba3,_0x3c8039);})[_0x5407('0x15')](function(_0x1879ae){if(_0x387f22[_0x5407('0x1d')]){throw new Error(_0x5407('0x10'));}if(_0x510d80[_0x5407('0x23')]>0x0){if(_0x387f22[_0x5407('0x1e')]){if(moment(_0x387f22['blockedAt'])[_0x5407('0x24')](_0x510d80['blockDuration'],_0x5407('0x25'))>moment()){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}return utils[_0x5407('0x26')](_0x387f22,0x0,![],null)['then'](function(){return utils['getLicense'](_0x387f22);})[_0x5407('0x15')](function(){return _0x2b7d8b(null,_0x387f22);});}else{return utils[_0x5407('0x27')](_0x387f22)[_0x5407('0x15')](function(){return _0x2b7d8b(null,_0x387f22);});}}else{return utils[_0x5407('0x27')](_0x387f22)['then'](function(){return _0x2b7d8b(null,_0x387f22);});}})['catch'](function(_0x22ac7e){return _0x2b7d8b(null,![],_0x22ac7e);});}function handleError(_0x425c74,_0x16c075,_0x4cd0e1){return _0x425c74[_0x5407('0x28')](_0x16c075||0x1f4)[_0x5407('0x29')]({'message':_0x4cd0e1?_0x4cd0e1[_0x5407('0x2a')]||_0x4cd0e1:''});}exports[_0x5407('0x2b')]=function(_0xbe78aa,_0x37b997,_0x2ff043){passport[_0x5407('0xd')](_0x5407('0x2c'),function(_0x5dcc28,_0x4fb2c7,_0x2c12cc){var _0x5e2d7a=_0x5dcc28||_0x2c12cc;if(_0x5e2d7a){return handleError(_0x37b997,0x191,_0x5e2d7a);}if(!_0x4fb2c7){return handleError(_0x37b997,0x194,{'message':_0x5407('0x2d')});}else{var _0x517b1d={'payload':{'id':_0x4fb2c7['id'],'role':_0x4fb2c7[_0x5407('0x1c')]},'options':{'expiresIn':0x15180}};return authService[_0x5407('0x2e')](_0x517b1d)[_0x5407('0x15')](function(_0x5059d2){_0x37b997[_0x5407('0x2f')]({'id':_0x4fb2c7['id'],'token':_0x5059d2,'statusCall':'','isAlreadyLogged':_0x4fb2c7[_0x5407('0x20')]});});}})(_0xbe78aa,_0x37b997,_0x2ff043);};passport[_0x5407('0x30')](_0x5407('0x2c'),new LocalStrategy({'usernameField':'name','passwordField':_0x5407('0x1a')},function(_0x3e0cbd,_0x24e3ca,_0x26334b){return ActiveDirectoryAuthenticate(db[_0x5407('0x31')],_0x3e0cbd,_0x24e3ca,_0x26334b);}));
\ No newline at end of file
index ffacdf9..fcebfb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4289=['express','post'];(function(_0xbf8ec1,_0x9169c8){var _0xc84567=function(_0x509094){while(--_0x509094){_0xbf8ec1['push'](_0xbf8ec1['shift']());}};_0xc84567(++_0x9169c8);}(_0x4289,0xb2));var _0x9428=function(_0x462e16,_0x14233a){_0x462e16=_0x462e16-0x0;var _0x5af51e=_0x4289[_0x462e16];return _0x5af51e;};'use strict';var express=require(_0x9428('0x0'));var router=express['Router']();var controller=require('./authActiveDirectory.controller');router[_0x9428('0x1')]('/',controller['login']);module['exports']=router;
\ No newline at end of file
+var _0xb61b=['./authActiveDirectory.controller','exports','Router'];(function(_0x3ab860,_0x4a428a){var _0x362ce5=function(_0x5cfd22){while(--_0x5cfd22){_0x3ab860['push'](_0x3ab860['shift']());}};_0x362ce5(++_0x4a428a);}(_0xb61b,0xf8));var _0xbb61=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xb61b[_0x2dafbe];return _0x58a45a;};'use strict';var express=require('express');var router=express[_0xbb61('0x0')]();var controller=require(_0xbb61('0x1'));router['post']('/',controller['login']);module[_0xbb61('0x2')]=router;
\ No newline at end of file
index 2e597a6..685dab8 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(_0xa6cc5c,_0x239c99){var _0x44803d=function(_0x515b6e){while(--_0x515b6e){_0xa6cc5c['push'](_0xa6cc5c['shift']());}};_0x44803d(++_0x239c99);}(_0x7a54,0x106));var _0x47a5=function(_0x4d5dfd,_0x1be475){_0x4d5dfd=_0x4d5dfd-0x0;var _0x419575=_0x7a54[_0x4d5dfd];return _0x419575;};'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 _0x9957=['../../config/environment','../../config/utils','login','google','/login','profile','email','callback','authenticate','use','clientID','clientSecret','secret','callbackURL','Setting','findOne','allowedLoginAttempts','User','find','map','emails','value','admin','user','then','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blockDuration','blocked','blockedAt','add','getLicense','catch','lodash','passport','passport-google-oauth20','Strategy','../../mysqldb'];(function(_0x160fef,_0x2ce0ba){var _0x31fce1=function(_0x3847b0){while(--_0x3847b0){_0x160fef['push'](_0x160fef['shift']());}};_0x31fce1(++_0x2ce0ba);}(_0x9957,0x93));var _0x7995=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x9957[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require(_0x7995('0x0'));var passport=require(_0x7995('0x1'));var GoogleStrategy=require(_0x7995('0x2'))[_0x7995('0x3')];var moment=require('moment');var db=require(_0x7995('0x4'))['db'];var config=require(_0x7995('0x5'));var utils=require(_0x7995('0x6'));exports[_0x7995('0x7')]=passport['authenticate'](_0x7995('0x8'),{'failureRedirect':_0x7995('0x9'),'scope':[_0x7995('0xa'),_0x7995('0xb')],'session':![]});exports[_0x7995('0xc')]=passport[_0x7995('0xd')]('google',{'failureRedirect':_0x7995('0x9'),'session':![]});passport[_0x7995('0xe')](new GoogleStrategy({'clientID':config['google']?config[_0x7995('0x8')][_0x7995('0xf')]:'id','clientSecret':config[_0x7995('0x8')]?config[_0x7995('0x8')][_0x7995('0x10')]:_0x7995('0x11'),'callbackURL':config[_0x7995('0x8')]?config['google'][_0x7995('0x12')]:''},function(_0x41c652,_0x581f22,_0xb0c872,_0x2cb37a){var _0x19a27e,_0x385f00;return db[_0x7995('0x13')][_0x7995('0x14')]({'where':{'id':0x1},'attributes':[_0x7995('0x15'),'blockDuration'],'raw':!![]})['then'](function(_0x2b4e94){_0x19a27e=_0x2b4e94;return db[_0x7995('0x16')][_0x7995('0x17')]({'where':{'email':_[_0x7995('0x18')](_0xb0c872[_0x7995('0x19')],_0x7995('0x1a')),'role':{'$or':[_0x7995('0x1b'),_0x7995('0x1c'),'agent']}}});})[_0x7995('0x1d')](function(_0x565d97){_0x385f00=_0x565d97;if(_0x385f00){if(_0x385f00[_0x7995('0x1e')]){return _0x2cb37a(_0x7995('0x1f'));}else if(_0x19a27e[_0x7995('0x20')]>0x0){if(_0x385f00[_0x7995('0x21')]){if(moment(_0x385f00[_0x7995('0x22')])[_0x7995('0x23')](_0x19a27e['blockDuration'],'minutes')>moment()){return _0x2cb37a(_0x7995('0x1f'));}else{return utils['clearBlockUser'](_0x385f00,0x0,![],null)['then'](function(){return utils[_0x7995('0x24')](_0x385f00);})[_0x7995('0x1d')](function(){return _0x2cb37a(null,_0x385f00);});}}else{return utils['getLicense'](_0x385f00)[_0x7995('0x1d')](function(){return _0x2cb37a(null,_0x385f00);});}}else{return utils['getLicense'](_0x385f00)['then'](function(){return _0x2cb37a(null,_0x385f00);});}}return _0x2cb37a(_0x7995('0x1f'));})[_0x7995('0x25')](function(_0x350fd9){_0x2cb37a(_0x350fd9);});}));
\ No newline at end of file
index 2395b8f..deae94b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ff4=['Router','./authGoogle.controller','callback','isMiddleware','login','setTokenCookie','exports'];(function(_0x5026dd,_0xaca0fa){var _0x5dd06c=function(_0x1c814d){while(--_0x1c814d){_0x5026dd['push'](_0x5026dd['shift']());}};_0x5dd06c(++_0xaca0fa);}(_0x8ff4,0x111));var _0x48ff=function(_0x2e8660,_0x5ca0c2){_0x2e8660=_0x2e8660-0x0;var _0x3dc331=_0x8ff4[_0x2e8660];return _0x3dc331;};'use strict';var express=require('express');var passport=require('passport');var router=express[_0x48ff('0x0')]();var controller=require(_0x48ff('0x1'));var userController=require('../user/user.controller.js');var authService=require('../../components/auth/service');router['get']('/',controller['login']);router['get']('/callback',controller[_0x48ff('0x2')],authService[_0x48ff('0x3')],userController[_0x48ff('0x4')],authService[_0x48ff('0x5')]);module[_0x48ff('0x6')]=router;
\ No newline at end of file
+var _0x8163=['exports','express','passport','./authGoogle.controller','../user/user.controller.js','../../components/auth/service','get','/callback','callback','login','setTokenCookie'];(function(_0x54edc9,_0x345f01){var _0x2ae7a9=function(_0x24a545){while(--_0x24a545){_0x54edc9['push'](_0x54edc9['shift']());}};_0x2ae7a9(++_0x345f01);}(_0x8163,0x9b));var _0x3816=function(_0x350171,_0x35b40b){_0x350171=_0x350171-0x0;var _0x480bb8=_0x8163[_0x350171];return _0x480bb8;};'use strict';var express=require(_0x3816('0x0'));var passport=require(_0x3816('0x1'));var router=express['Router']();var controller=require(_0x3816('0x2'));var userController=require(_0x3816('0x3'));var authService=require(_0x3816('0x4'));router[_0x3816('0x5')]('/',controller['login']);router['get'](_0x3816('0x6'),controller[_0x3816('0x7')],authService['isMiddleware'],userController[_0x3816('0x8')],authService[_0x3816('0x9')]);module[_0x3816('0xa')]=router;
\ No newline at end of file
index c424da3..0e43c03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x996d=['signToken','json','forgot','body','email','Email\x20parameter\x20is\x20missing','trim','toLowerCase','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','save','xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','https://','headers','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','params','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','validatePasswordHistory','previousPasswords','passwordHistoryLimit','Password\x20reset!','use','local-login','passport','Strategy','jayson/promise','randomstring','../../components/auth/service','client','Setting','findOne','allowedLoginAttempts','blockDuration','then','name','password','salt','role','disabled','blocked','blockedAt','loginAttempts','user','agent','authenticate','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','add','minutes','clearBlockUser','catch','getLicense','MailAccount','find','MailServerOut','CloudProvider','getSmtpOptions','merge','\x22%s\x22\x20<%s>','request','error','message','stringify','status','send','login'];(function(_0x2d9ee1,_0xcd9137){var _0x4a77d1=function(_0x45ec4e){while(--_0x45ec4e){_0x2d9ee1['push'](_0x2d9ee1['shift']());}};_0x4a77d1(++_0xcd9137);}(_0x996d,0x19e));var _0xd996=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0x996d[_0x36ed48];return _0x51c63a;};'use strict';var util=require('util');var passport=require(_0xd996('0x0'));var LocalStrategy=require('passport-local')[_0xd996('0x1')];var jayson=require(_0xd996('0x2'));var _=require('lodash');var rs=require(_0xd996('0x3'));var moment=require('moment');var db=require('../../mysqldb')['db'];var authService=require(_0xd996('0x4'));var utils=require('../../config/utils');var client=jayson[_0xd996('0x5')]['http']({'port':0x232b});function localAuthenticate(_0x40c89e,_0x3f617c,_0x3189c3,_0x2f726f){var _0x37c3db,_0x4677a3;return db[_0xd996('0x6')][_0xd996('0x7')]({'where':{'id':0x1},'attributes':[_0xd996('0x8'),_0xd996('0x9')],'raw':!![]})[_0xd996('0xa')](function(_0xc447d5){_0x37c3db=_0xc447d5;return _0x40c89e['findOne']({'attributes':['id',_0xd996('0xb'),_0xd996('0xc'),_0xd996('0xd'),_0xd996('0xe'),_0xd996('0xf'),_0xd996('0x10'),_0xd996('0x11'),_0xd996('0x12')],'where':{'name':_0x3f617c,'role':{'$or':['admin',_0xd996('0x13'),_0xd996('0x14')]}}});})['then'](function(_0x425e08){if(!_0x425e08||_0x425e08&&_0x425e08[_0xd996('0xb')]!==_0x3f617c){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x4677a3=_0x425e08;return _0x4677a3;}})[_0xd996('0xa')](function(){_0x4677a3[_0xd996('0x15')](_0x3189c3,function(_0x19a77f,_0x5b7a7c){var _0x3206a1=_0x4677a3[_0xd996('0x12')]+0x1;if(_0x19a77f){return _0x2f726f(_0x19a77f);}else if(!_0x5b7a7c){if(_0x4677a3[_0xd996('0xf')]){return _0x2f726f(null,![],{'message':_0xd996('0x16')});}else if(_0x37c3db[_0xd996('0x8')]>0x0){if(_0x4677a3['blocked']){if(_0x37c3db[_0xd996('0x9')]>0x0){if(moment(_0x4677a3[_0xd996('0x11')])[_0xd996('0x17')](_0x37c3db[_0xd996('0x9')],_0xd996('0x18'))>moment()){return _0x2f726f(null,![],{'message':_0xd996('0x16')});}else{return utils[_0xd996('0x19')](_0x4677a3,_0x3206a1,![],null)[_0xd996('0xa')](function(){return _0x2f726f(null,![],{'message':_0xd996('0x16')});});}}else{return _0x2f726f(null,![],{'message':_0xd996('0x16')});}}else{if(_0x3206a1>=_0x37c3db[_0xd996('0x8')]){return utils[_0xd996('0x19')](_0x4677a3,0x0,!![],moment())[_0xd996('0xa')](function(){return _0x2f726f(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}else{return utils[_0xd996('0x19')](_0x4677a3,_0x3206a1,![],null)[_0xd996('0xa')](function(){return _0x2f726f(null,![],{'message':_0xd996('0x16')});});}}}else{return _0x2f726f(null,![],{'message':_0xd996('0x16')});}}else{if(_0x4677a3[_0xd996('0xf')]){return _0x2f726f(null,![],{'message':_0xd996('0x16')});}else if(_0x37c3db[_0xd996('0x8')]>0x0){if(_0x4677a3[_0xd996('0x10')]){if(_0x37c3db['blockDuration']>0x0){if(moment(_0x4677a3['blockedAt'])[_0xd996('0x17')](_0x37c3db['blockDuration'],'minutes')>moment()){return _0x2f726f(null,![],{'message':_0xd996('0x16')});}else{return utils[_0xd996('0x19')](_0x4677a3,0x0,![],null)[_0xd996('0xa')](function(){return utils['getLicense'](_0x4677a3);})[_0xd996('0xa')](function(){return _0x2f726f(null,_0x4677a3);});}}else{return _0x2f726f(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{return utils['clearBlockUser'](_0x4677a3,0x0,![],null)[_0xd996('0xa')](function(){return utils['getLicense'](_0x4677a3);})['then'](function(){return _0x2f726f(null,_0x4677a3);})[_0xd996('0x1a')](function(_0x2ae881){return _0x2f726f(null,![],_0x2ae881);});}}else{if(_0x4677a3[_0xd996('0x10')]){return _0x2f726f(null,![],{'message':_0xd996('0x16')});}else{return utils[_0xd996('0x1b')](_0x4677a3)[_0xd996('0xa')](function(){return _0x2f726f(null,_0x4677a3);});}}}});})[_0xd996('0x1a')](function(_0x4dc1ec){return _0x2f726f(null,![],_0x4dc1ec);});}function sendServiceMail(_0x44fde9){return db[_0xd996('0x1c')][_0xd996('0x1d')]({'where':{'service':!![]},'attributes':['id',_0xd996('0xb'),'email'],'include':[{'model':db[_0xd996('0x1e')],'as':'Smtp','include':[{'model':db[_0xd996('0x1f')],'as':_0xd996('0x1f')}]}]})[_0xd996('0xa')](function(_0x1c1716){if(!_0x1c1716){throw new Error('Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!');}var _0x10d971=_0x1c1716[_0xd996('0x20')]();var _0x472039={'account':_0x10d971,'message':_[_0xd996('0x21')]({'from':util['format'](_0xd996('0x22'),_0x1c1716['name'],_0x1c1716['email']||_0x1c1716['Smtp'][_0xd996('0x13')])},_0x44fde9)};return client[_0xd996('0x23')]('SendMail',_0x472039);})[_0xd996('0xa')](function(_0xc8b590){if(_0xc8b590[_0xd996('0x24')]){throw new Error(util['format']('SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!',_0xc8b590['error'][_0xd996('0x25')]||JSON[_0xd996('0x26')](_0xc8b590[_0xd996('0x24')])));}return!![];});}function handleError(_0x4da3b6,_0xeced99,_0xcf03c){return _0x4da3b6[_0xd996('0x27')](_0xeced99||0x1f4)[_0xd996('0x28')]({'message':_0xcf03c?_0xcf03c[_0xd996('0x25')]||_0xcf03c:''});}exports[_0xd996('0x29')]=function(_0x3cedcb,_0x59fa1b,_0x194185){passport[_0xd996('0x15')]('local-login',function(_0x404905,_0x5cc784,_0x23d164){var _0x2547b4=_0x404905||_0x23d164;if(_0x2547b4){return handleError(_0x59fa1b,0x191,_0x2547b4);}if(!_0x5cc784){return handleError(_0x59fa1b,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x5b2de6={'payload':{'id':_0x5cc784['id'],'role':_0x5cc784['role']},'options':{'expiresIn':0x15180}};return authService[_0xd996('0x2a')](_0x5b2de6)[_0xd996('0xa')](function(_0x54d01a){_0x59fa1b[_0xd996('0x2b')]({'id':_0x5cc784['id'],'token':_0x54d01a,'statusCall':'','isAlreadyLogged':_0x5cc784['online']});});}})(_0x3cedcb,_0x59fa1b,_0x194185);};exports[_0xd996('0x2c')]=function(_0x1618ba,_0x12e4ad){if(!_0x1618ba[_0xd996('0x2d')][_0xd996('0x2e')]){return handleError(_0x12e4ad,0x1f4,{'message':_0xd996('0x2f')});}var _0x20d999=rs['generate']();_0x1618ba[_0xd996('0x2d')][_0xd996('0x2e')]=_0x1618ba[_0xd996('0x2d')][_0xd996('0x2e')][_0xd996('0x30')]()[_0xd996('0x31')]();var _0x1d3f7a;return db[_0xd996('0x6')][_0xd996('0x7')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xd996('0x9')],'raw':!![]})['then'](function(_0x4aa21d){_0x1d3f7a=_0x4aa21d;return db[_0xd996('0x32')]['find']({'where':{'email':_0x1618ba[_0xd996('0x2d')][_0xd996('0x2e')]}});})[_0xd996('0xa')](function(_0x517773){if(!_0x517773){throw new Error(_0xd996('0x33'));}if(_0x517773[_0xd996('0xf')]){throw new Error(_0xd996('0x34'));}if(_0x517773[_0xd996('0x10')]){if(moment(_0x517773[_0xd996('0x11')])['add'](_0x1d3f7a['blockDuration'],_0xd996('0x18'))>moment()){throw new Error(_0xd996('0x35'));}else{_0x517773['blocked']=![];_0x517773[_0xd996('0x11')]=null;}}_0x517773[_0xd996('0x36')]=_0x20d999;_0x517773[_0xd996('0x37')]=Date[_0xd996('0x38')]()+0x36ee80;return _0x517773[_0xd996('0x39')]();})[_0xd996('0xa')](function(){return sendServiceMail({'to':_0x1618ba['body'][_0xd996('0x2e')],'subject':_0xd996('0x3a'),'text':_0xd996('0x3b')+_0xd996('0x3c')+_0xd996('0x3d')+_0x1618ba[_0xd996('0x3e')]['host']+'/reset/'+_0x20d999+'\x0a\x0a'+_0xd996('0x3f')});})[_0xd996('0xa')](function(){_0x12e4ad[_0xd996('0x27')](0xc8)[_0xd996('0x28')]({'message':_0xd996('0x40')});})[_0xd996('0x1a')](function(_0x2b6ef1){return handleError(_0x12e4ad,0x1f4,_0x2b6ef1);});};exports['reset']=function(_0xee15c6,_0x36188f){return db['User'][_0xd996('0x1d')]({'where':{'resetPasswordToken':_0xee15c6[_0xd996('0x41')][_0xd996('0x42')],'resetPasswordExpires':{'$gt':Date[_0xd996('0x38')]()}}})[_0xd996('0xa')](function(_0x3eaff7){if(!_0x3eaff7){throw new Error(_0xd996('0x43'));}return db[_0xd996('0x6')][_0xd996('0x7')]({'attributes':['id',_0xd996('0x44'),_0xd996('0x45'),'passwordHistoryLimit']})[_0xd996('0xa')](function(_0x41f0f2){if(_0x41f0f2[_0xd996('0x44')])authService['validatePasswordPattern'](_0xee15c6[_0xd996('0x2d')]['password']);if(!_0x41f0f2[_0xd996('0x45')]||!_0x3eaff7['previousPasswords'])return _0x3eaff7;authService[_0xd996('0x46')](_0xee15c6['body']['password'],_0x3eaff7[_0xd996('0x47')],_0x41f0f2[_0xd996('0x48')]);return _0x3eaff7;})[_0xd996('0xa')](function(){_0x3eaff7['password']=_0xee15c6[_0xd996('0x2d')][_0xd996('0xc')];_0x3eaff7[_0xd996('0x36')]=null;_0x3eaff7[_0xd996('0x37')]=null;return _0x3eaff7['save']();});})[_0xd996('0xa')](function(){_0x36188f[_0xd996('0x27')](0xc8)[_0xd996('0x28')]({'message':_0xd996('0x49')});})[_0xd996('0x1a')](function(_0x24a968){return handleError(_0x36188f,0x1f4,_0x24a968);});};passport[_0xd996('0x4a')](_0xd996('0x4b'),new LocalStrategy({'usernameField':_0xd996('0xb'),'passwordField':'password'},function(_0x4e7ea2,_0x471ac0,_0x5947d6){return localAuthenticate(db[_0xd996('0x32')],_0x4e7ea2,_0x471ac0,_0x5947d6);}));
\ No newline at end of file
+var _0x85ac=['agent','name','authenticate','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','add','clearBlockUser','minutes','getLicense','catch','find','email','CloudProvider','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','getSmtpOptions','format','request','SendMail','error','message','send','login','local-login','signToken','forgot','body','Email\x20parameter\x20is\x20missing','generate','trim','toLowerCase','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','https://','headers','host','/reset/','status','Reset\x20Email\x20sent!','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','enforcePasswordHistory','passwordHistoryLimit','securePassword','validatePasswordPattern','previousPasswords','save','Password\x20reset!','use','util','passport','passport-local','jayson/promise','lodash','randomstring','../../mysqldb','client','Setting','findOne','allowedLoginAttempts','blockDuration','then','password','salt','role','disabled','blocked','blockedAt','loginAttempts','admin','user'];(function(_0x39a5d0,_0x5d93fb){var _0x3c2d3f=function(_0x285258){while(--_0x285258){_0x39a5d0['push'](_0x39a5d0['shift']());}};_0x3c2d3f(++_0x5d93fb);}(_0x85ac,0x1b8));var _0xc85a=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0x85ac[_0x24061a];return _0x82054e;};'use strict';var util=require(_0xc85a('0x0'));var passport=require(_0xc85a('0x1'));var LocalStrategy=require(_0xc85a('0x2'))['Strategy'];var jayson=require(_0xc85a('0x3'));var _=require(_0xc85a('0x4'));var rs=require(_0xc85a('0x5'));var moment=require('moment');var db=require(_0xc85a('0x6'))['db'];var authService=require('../../components/auth/service');var utils=require('../../config/utils');var client=jayson[_0xc85a('0x7')]['http']({'port':0x232b});function localAuthenticate(_0x4cbb8c,_0x17c650,_0x1da919,_0x18cf6a){var _0x45357c,_0xac8ff;return db[_0xc85a('0x8')][_0xc85a('0x9')]({'where':{'id':0x1},'attributes':[_0xc85a('0xa'),_0xc85a('0xb')],'raw':!![]})[_0xc85a('0xc')](function(_0x91f04f){_0x45357c=_0x91f04f;return _0x4cbb8c[_0xc85a('0x9')]({'attributes':['id','name',_0xc85a('0xd'),_0xc85a('0xe'),_0xc85a('0xf'),_0xc85a('0x10'),_0xc85a('0x11'),_0xc85a('0x12'),_0xc85a('0x13')],'where':{'name':_0x17c650,'role':{'$or':[_0xc85a('0x14'),_0xc85a('0x15'),_0xc85a('0x16')]}}});})[_0xc85a('0xc')](function(_0x166e16){if(!_0x166e16||_0x166e16&&_0x166e16[_0xc85a('0x17')]!==_0x17c650){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0xac8ff=_0x166e16;return _0xac8ff;}})[_0xc85a('0xc')](function(){_0xac8ff[_0xc85a('0x18')](_0x1da919,function(_0x6b0395,_0x274c61){var _0x20587b=_0xac8ff[_0xc85a('0x13')]+0x1;if(_0x6b0395){return _0x18cf6a(_0x6b0395);}else if(!_0x274c61){if(_0xac8ff[_0xc85a('0x10')]){return _0x18cf6a(null,![],{'message':_0xc85a('0x19')});}else if(_0x45357c[_0xc85a('0xa')]>0x0){if(_0xac8ff[_0xc85a('0x11')]){if(_0x45357c['blockDuration']>0x0){if(moment(_0xac8ff[_0xc85a('0x12')])[_0xc85a('0x1a')](_0x45357c[_0xc85a('0xb')],'minutes')>moment()){return _0x18cf6a(null,![],{'message':_0xc85a('0x19')});}else{return utils['clearBlockUser'](_0xac8ff,_0x20587b,![],null)[_0xc85a('0xc')](function(){return _0x18cf6a(null,![],{'message':_0xc85a('0x19')});});}}else{return _0x18cf6a(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x20587b>=_0x45357c['allowedLoginAttempts']){return utils[_0xc85a('0x1b')](_0xac8ff,0x0,!![],moment())[_0xc85a('0xc')](function(){return _0x18cf6a(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}else{return utils[_0xc85a('0x1b')](_0xac8ff,_0x20587b,![],null)[_0xc85a('0xc')](function(){return _0x18cf6a(null,![],{'message':_0xc85a('0x19')});});}}}else{return _0x18cf6a(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0xac8ff[_0xc85a('0x10')]){return _0x18cf6a(null,![],{'message':_0xc85a('0x19')});}else if(_0x45357c['allowedLoginAttempts']>0x0){if(_0xac8ff[_0xc85a('0x11')]){if(_0x45357c[_0xc85a('0xb')]>0x0){if(moment(_0xac8ff[_0xc85a('0x12')])[_0xc85a('0x1a')](_0x45357c[_0xc85a('0xb')],_0xc85a('0x1c'))>moment()){return _0x18cf6a(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xc85a('0x1b')](_0xac8ff,0x0,![],null)[_0xc85a('0xc')](function(){return utils[_0xc85a('0x1d')](_0xac8ff);})[_0xc85a('0xc')](function(){return _0x18cf6a(null,_0xac8ff);});}}else{return _0x18cf6a(null,![],{'message':_0xc85a('0x19')});}}else{return utils[_0xc85a('0x1b')](_0xac8ff,0x0,![],null)[_0xc85a('0xc')](function(){return utils['getLicense'](_0xac8ff);})[_0xc85a('0xc')](function(){return _0x18cf6a(null,_0xac8ff);})['catch'](function(_0x5da1ec){return _0x18cf6a(null,![],_0x5da1ec);});}}else{if(_0xac8ff[_0xc85a('0x11')]){return _0x18cf6a(null,![],{'message':_0xc85a('0x19')});}else{return utils[_0xc85a('0x1d')](_0xac8ff)[_0xc85a('0xc')](function(){return _0x18cf6a(null,_0xac8ff);});}}}});})[_0xc85a('0x1e')](function(_0x139ab4){return _0x18cf6a(null,![],_0x139ab4);});}function sendServiceMail(_0x1c5671){return db['MailAccount'][_0xc85a('0x1f')]({'where':{'service':!![]},'attributes':['id','name',_0xc85a('0x20')],'include':[{'model':db['MailServerOut'],'as':'Smtp','include':[{'model':db[_0xc85a('0x21')],'as':'CloudProvider'}]}]})[_0xc85a('0xc')](function(_0x418341){if(!_0x418341){throw new Error(_0xc85a('0x22'));}var _0x4c6d78=_0x418341[_0xc85a('0x23')]();var _0xbaad46={'account':_0x4c6d78,'message':_['merge']({'from':util[_0xc85a('0x24')]('\x22%s\x22\x20<%s>',_0x418341[_0xc85a('0x17')],_0x418341[_0xc85a('0x20')]||_0x418341['Smtp'][_0xc85a('0x15')])},_0x1c5671)};return client[_0xc85a('0x25')](_0xc85a('0x26'),_0xbaad46);})[_0xc85a('0xc')](function(_0x3aefb3){if(_0x3aefb3[_0xc85a('0x27')]){throw new Error(util[_0xc85a('0x24')]('SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!',_0x3aefb3[_0xc85a('0x27')][_0xc85a('0x28')]||JSON['stringify'](_0x3aefb3[_0xc85a('0x27')])));}return!![];});}function handleError(_0x4ea1ea,_0x2c5d7f,_0x31eba5){return _0x4ea1ea['status'](_0x2c5d7f||0x1f4)[_0xc85a('0x29')]({'message':_0x31eba5?_0x31eba5['message']||_0x31eba5:''});}exports[_0xc85a('0x2a')]=function(_0x2f9706,_0x4fb3ef,_0x947836){passport[_0xc85a('0x18')](_0xc85a('0x2b'),function(_0x15fa2e,_0x53d1a0,_0x31adf7){var _0x2d98a0=_0x15fa2e||_0x31adf7;if(_0x2d98a0){return handleError(_0x4fb3ef,0x191,_0x2d98a0);}if(!_0x53d1a0){return handleError(_0x4fb3ef,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x21e17d={'payload':{'id':_0x53d1a0['id'],'role':_0x53d1a0['role']},'options':{'expiresIn':0x15180}};return authService[_0xc85a('0x2c')](_0x21e17d)[_0xc85a('0xc')](function(_0x393dce){_0x4fb3ef['json']({'id':_0x53d1a0['id'],'token':_0x393dce,'statusCall':'','isAlreadyLogged':_0x53d1a0['online']});});}})(_0x2f9706,_0x4fb3ef,_0x947836);};exports[_0xc85a('0x2d')]=function(_0x286b83,_0x48bc9d){if(!_0x286b83[_0xc85a('0x2e')][_0xc85a('0x20')]){return handleError(_0x48bc9d,0x1f4,{'message':_0xc85a('0x2f')});}var _0x245215=rs[_0xc85a('0x30')]();_0x286b83[_0xc85a('0x2e')][_0xc85a('0x20')]=_0x286b83[_0xc85a('0x2e')][_0xc85a('0x20')][_0xc85a('0x31')]()[_0xc85a('0x32')]();var _0x5c70e8;return db[_0xc85a('0x8')]['findOne']({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xc85a('0xb')],'raw':!![]})[_0xc85a('0xc')](function(_0x3ca0a4){_0x5c70e8=_0x3ca0a4;return db[_0xc85a('0x33')][_0xc85a('0x1f')]({'where':{'email':_0x286b83['body']['email']}});})[_0xc85a('0xc')](function(_0xc0681e){if(!_0xc0681e){throw new Error(_0xc85a('0x34'));}if(_0xc0681e['disabled']){throw new Error(_0xc85a('0x35'));}if(_0xc0681e[_0xc85a('0x11')]){if(moment(_0xc0681e['blockedAt'])[_0xc85a('0x1a')](_0x5c70e8[_0xc85a('0xb')],'minutes')>moment()){throw new Error(_0xc85a('0x36'));}else{_0xc0681e['blocked']=![];_0xc0681e[_0xc85a('0x12')]=null;}}_0xc0681e[_0xc85a('0x37')]=_0x245215;_0xc0681e[_0xc85a('0x38')]=Date[_0xc85a('0x39')]()+0x36ee80;return _0xc0681e['save']();})[_0xc85a('0xc')](function(){return sendServiceMail({'to':_0x286b83['body'][_0xc85a('0x20')],'subject':_0xc85a('0x3a'),'text':_0xc85a('0x3b')+_0xc85a('0x3c')+_0xc85a('0x3d')+_0x286b83[_0xc85a('0x3e')][_0xc85a('0x3f')]+_0xc85a('0x40')+_0x245215+'\x0a\x0a'+'If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a'});})[_0xc85a('0xc')](function(){_0x48bc9d[_0xc85a('0x41')](0xc8)['send']({'message':_0xc85a('0x42')});})['catch'](function(_0x57730f){return handleError(_0x48bc9d,0x1f4,_0x57730f);});};exports['reset']=function(_0x3cbefb,_0x3b382f){return db[_0xc85a('0x33')]['find']({'where':{'resetPasswordToken':_0x3cbefb['params'][_0xc85a('0x43')],'resetPasswordExpires':{'$gt':Date[_0xc85a('0x39')]()}}})[_0xc85a('0xc')](function(_0x3e975b){if(!_0x3e975b){throw new Error(_0xc85a('0x44'));}return db[_0xc85a('0x8')]['findOne']({'attributes':['id','securePassword',_0xc85a('0x45'),_0xc85a('0x46')]})['then'](function(_0x151c62){if(_0x151c62[_0xc85a('0x47')])authService[_0xc85a('0x48')](_0x3cbefb[_0xc85a('0x2e')][_0xc85a('0xd')]);if(!_0x151c62['enforcePasswordHistory']||!_0x3e975b[_0xc85a('0x49')])return _0x3e975b;authService['validatePasswordHistory'](_0x3cbefb[_0xc85a('0x2e')][_0xc85a('0xd')],_0x3e975b[_0xc85a('0x49')],_0x151c62[_0xc85a('0x46')]);return _0x3e975b;})[_0xc85a('0xc')](function(){_0x3e975b[_0xc85a('0xd')]=_0x3cbefb[_0xc85a('0x2e')][_0xc85a('0xd')];_0x3e975b['resetPasswordToken']=null;_0x3e975b['resetPasswordExpires']=null;return _0x3e975b[_0xc85a('0x4a')]();});})[_0xc85a('0xc')](function(){_0x3b382f[_0xc85a('0x41')](0xc8)[_0xc85a('0x29')]({'message':_0xc85a('0x4b')});})[_0xc85a('0x1e')](function(_0x36688e){return handleError(_0x3b382f,0x1f4,_0x36688e);});};passport[_0xc85a('0x4c')](_0xc85a('0x2b'),new LocalStrategy({'usernameField':_0xc85a('0x17'),'passwordField':_0xc85a('0xd')},function(_0x3202e0,_0x2cbaed,_0x41c996){return localAuthenticate(db[_0xc85a('0x33')],_0x3202e0,_0x2cbaed,_0x41c996);}));
\ No newline at end of file
index 089fb67..66aa41a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1fe=['reset','exports','express','Router','./authLocal.controller','login','/forgot','forgot','post'];(function(_0x40d843,_0x1a52f5){var _0x4d480a=function(_0x51448b){while(--_0x51448b){_0x40d843['push'](_0x40d843['shift']());}};_0x4d480a(++_0x1a52f5);}(_0xc1fe,0x173));var _0xec1f=function(_0x4badf3,_0x1acc6d){_0x4badf3=_0x4badf3-0x0;var _0x896cc0=_0xc1fe[_0x4badf3];return _0x896cc0;};'use strict';var express=require(_0xec1f('0x0'));var router=express[_0xec1f('0x1')]();var controller=require(_0xec1f('0x2'));router['post']('/',controller[_0xec1f('0x3')]);router['post'](_0xec1f('0x4'),controller[_0xec1f('0x5')]);router[_0xec1f('0x6')]('/reset/:token',controller[_0xec1f('0x7')]);module[_0xec1f('0x8')]=router;
\ No newline at end of file
+var _0x48de=['Router','./authLocal.controller','post','/forgot','forgot','/reset/:token','exports','express'];(function(_0x6b0d32,_0x2cafff){var _0x539a76=function(_0x5f6e5e){while(--_0x5f6e5e){_0x6b0d32['push'](_0x6b0d32['shift']());}};_0x539a76(++_0x2cafff);}(_0x48de,0x197));var _0xe48d=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0x48de[_0x334841];return _0x5beb4b;};'use strict';var express=require(_0xe48d('0x0'));var router=express[_0xe48d('0x1')]();var controller=require(_0xe48d('0x2'));router[_0xe48d('0x3')]('/',controller['login']);router['post'](_0xe48d('0x4'),controller[_0xe48d('0x5')]);router['post'](_0xe48d('0x6'),controller['reset']);module[_0xe48d('0x7')]=router;
\ No newline at end of file
index 37bbad2..698a029 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c22=['BOOLEAN','INTEGER','sequelize','exports','STRING'];(function(_0x3b90a4,_0x49e229){var _0x3d72f=function(_0x54a9df){while(--_0x54a9df){_0x3b90a4['push'](_0x3b90a4['shift']());}};_0x3d72f(++_0x49e229);}(_0x5c22,0x183));var _0x25c2=function(_0x2268e6,_0x253548){_0x2268e6=_0x2268e6-0x0;var _0x2aa9f2=_0x5c22[_0x2268e6];return _0x2aa9f2;};'use strict';var Sequelize=require(_0x25c2('0x0'));module[_0x25c2('0x1')]={'name':{'type':Sequelize[_0x25c2('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0x25c2('0x2')]},'description':{'type':Sequelize[_0x25c2('0x2')]},'status':{'type':Sequelize[_0x25c2('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x25c2('0x4')],'defaultValue':0xa}};
\ No newline at end of file
+var _0x2917=['INTEGER','sequelize','exports','STRING'];(function(_0x458a8c,_0x15966e){var _0x5a5316=function(_0x266095){while(--_0x266095){_0x458a8c['push'](_0x458a8c['shift']());}};_0x5a5316(++_0x15966e);}(_0x2917,0x145));var _0x7291=function(_0x18d5d7,_0x19074b){_0x18d5d7=_0x18d5d7-0x0;var _0x30a9ea=_0x2917[_0x18d5d7];return _0x30a9ea;};'use strict';var Sequelize=require(_0x7291('0x0'));module[_0x7291('0x1')]={'name':{'type':Sequelize[_0x7291('0x2')],'allowNull':![]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x7291('0x2')]},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timeout':{'type':Sequelize[_0x7291('0x3')],'defaultValue':0xa}};
\ No newline at end of file
index 48d5393..cfcc2f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda6e=['to-csv','lodash','squel','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','set','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','merge','type','Automation','includeAll','include','findAll','rows','catch','show','params','intersection','find','create','body','addConditions','Condition','ids','findOne','order','where','options','getConditions','addActions','omit','getActions','Action','rimraf','fast-json-patch','request-promise','bluebird','util','path','sox'];(function(_0x108764,_0x95a481){var _0x556f0f=function(_0x539b27){while(--_0x539b27){_0x108764['push'](_0x108764['shift']());}};_0x556f0f(++_0x95a481);}(_0xda6e,0x198));var _0xeda6=function(_0x5a4f61,_0x5bf2dd){_0x5a4f61=_0x5a4f61-0x0;var _0x22180c=_0xda6e[_0x5a4f61];return _0x22180c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xeda6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xeda6('0x1'));var rp=require(_0xeda6('0x2'));var moment=require('moment');var BPromise=require(_0xeda6('0x3'));var Mustache=require('mustache');var util=require(_0xeda6('0x4'));var path=require(_0xeda6('0x5'));var sox=require(_0xeda6('0x6'));var csv=require(_0xeda6('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xeda6('0x8'));var squel=require(_0xeda6('0x9'));var crypto=require(_0xeda6('0xa'));var jsforce=require(_0xeda6('0xb'));var deskjs=require(_0xeda6('0xc'));var toCsv=require(_0xeda6('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xeda6('0xd'));var qs=require(_0xeda6('0xe'));var as=require(_0xeda6('0xf'));var hardwareService=require(_0xeda6('0x10'));var logger=require(_0xeda6('0x11'))('api');var utils=require(_0xeda6('0x12'));var config=require(_0xeda6('0x13'));var licenseUtil=require(_0xeda6('0x14'));var db=require(_0xeda6('0x15'))['db'];function respondWithStatusCode(_0x566e72,_0x3e7969){_0x3e7969=_0x3e7969||0xcc;return function(_0x37c64d){if(_0x37c64d){return _0x566e72[_0xeda6('0x16')](_0x3e7969);}return _0x566e72[_0xeda6('0x17')](_0x3e7969)[_0xeda6('0x18')]();};}function respondWithResult(_0x10707d,_0x3b1532){_0x3b1532=_0x3b1532||0xc8;return function(_0x3ba5f4){if(_0x3ba5f4){return _0x10707d[_0xeda6('0x17')](_0x3b1532)['json'](_0x3ba5f4);}};}function respondWithFilteredResult(_0x5c7a58,_0x2525c2){return function(_0x2b733e){if(_0x2b733e){var _0x72e373=typeof _0x2525c2[_0xeda6('0x19')]==='undefined'&&typeof _0x2525c2[_0xeda6('0x1a')]===_0xeda6('0x1b');var _0x10b41d=_0x2b733e[_0xeda6('0x1c')];var _0x59f0c1=_0x72e373?0x0:_0x2525c2[_0xeda6('0x19')];var _0x55ae68=_0x72e373?_0x2b733e[_0xeda6('0x1c')]:_0x2525c2['offset']+_0x2525c2[_0xeda6('0x1a')];var _0x52bf37;if(_0x55ae68>=_0x10b41d){_0x55ae68=_0x10b41d;_0x52bf37=0xc8;}else{_0x52bf37=0xce;}_0x5c7a58[_0xeda6('0x17')](_0x52bf37);return _0x5c7a58[_0xeda6('0x1d')]('Content-Range',_0x59f0c1+'-'+_0x55ae68+'/'+_0x10b41d)[_0xeda6('0x1e')](_0x2b733e);}return null;};}function patchUpdates(_0x19124f){return function(_0x308812){try{jsonpatch[_0xeda6('0x1f')](_0x308812,_0x19124f,!![]);}catch(_0x20754c){return BPromise[_0xeda6('0x20')](_0x20754c);}return _0x308812[_0xeda6('0x21')]();};}function saveUpdates(_0x4bb063,_0x4f2752){return function(_0xf3dcf4){if(_0xf3dcf4){return _0xf3dcf4[_0xeda6('0x22')](_0x4bb063)[_0xeda6('0x23')](function(_0x401764){return _0x401764;});}return null;};}function removeEntity(_0x41c97e,_0x146b8e){return function(_0x279494){if(_0x279494){return _0x279494[_0xeda6('0x24')]()[_0xeda6('0x23')](function(){_0x41c97e['status'](0xcc)[_0xeda6('0x18')]();});}};}function handleEntityNotFound(_0x4997ba,_0x30b16c){return function(_0x2541bf){if(!_0x2541bf){_0x4997ba[_0xeda6('0x16')](0x194);}return _0x2541bf;};}function handleError(_0x6c7cf8,_0x460432){_0x460432=_0x460432||0x1f4;return function(_0x49279a){logger[_0xeda6('0x25')](_0x49279a[_0xeda6('0x26')]);if(_0x49279a[_0xeda6('0x27')]){delete _0x49279a['name'];}_0x6c7cf8[_0xeda6('0x17')](_0x460432)[_0xeda6('0x28')](_0x49279a);};}exports[_0xeda6('0x29')]=function(_0x353892,_0x48880b){var _0xa725d8={},_0x34bda1={},_0x2192a1={'count':0x0,'rows':[]};var _0x401ee5=_[_0xeda6('0x2a')](db['Automation'][_0xeda6('0x2b')],function(_0xaacf21){return{'name':_0xaacf21['fieldName'],'type':_0xaacf21['type'][_0xeda6('0x2c')]};});_0x34bda1[_0xeda6('0x2d')]=_[_0xeda6('0x2a')](_0x401ee5,'name');_0x34bda1[_0xeda6('0x2e')]=_[_0xeda6('0x2f')](_0x353892[_0xeda6('0x2e')]);_0x34bda1[_0xeda6('0x30')]=_['intersection'](_0x34bda1[_0xeda6('0x2d')],_0x34bda1['query']);_0xa725d8[_0xeda6('0x31')]=_['intersection'](_0x34bda1['model'],qs[_0xeda6('0x32')](_0x353892['query']['fields']));_0xa725d8[_0xeda6('0x31')]=_0xa725d8[_0xeda6('0x31')][_0xeda6('0x33')]?_0xa725d8['attributes']:_0x34bda1[_0xeda6('0x2d')];if(!_0x353892[_0xeda6('0x2e')][_0xeda6('0x34')](_0xeda6('0x35'))){_0xa725d8['limit']=qs[_0xeda6('0x1a')](_0x353892[_0xeda6('0x2e')][_0xeda6('0x1a')]);_0xa725d8[_0xeda6('0x19')]=qs[_0xeda6('0x19')](_0x353892[_0xeda6('0x2e')]['offset']);}_0xa725d8['order']=qs[_0xeda6('0x36')](_0x353892[_0xeda6('0x2e')][_0xeda6('0x36')]);_0xa725d8['where']=qs['filters'](_[_0xeda6('0x37')](_0x353892[_0xeda6('0x2e')],_0x34bda1[_0xeda6('0x30')]),_0x401ee5);if(_0x353892[_0xeda6('0x2e')][_0xeda6('0x38')]){_0xa725d8['where']=_[_0xeda6('0x39')](_0xa725d8['where'],{'$or':_[_0xeda6('0x2a')](_0x401ee5,function(_0x333a2a){if(_0x333a2a[_0xeda6('0x3a')]!=='VIRTUAL'){var _0x4159b5={};_0x4159b5[_0x333a2a[_0xeda6('0x27')]]={'$like':'%'+_0x353892[_0xeda6('0x2e')][_0xeda6('0x38')]+'%'};return _0x4159b5;}})});}_0xa725d8=_[_0xeda6('0x39')]({},_0xa725d8,_0x353892['options']);var _0x36be32={'where':_0xa725d8['where']};return db[_0xeda6('0x3b')][_0xeda6('0x1c')](_0x36be32)['then'](function(_0x399be9){_0x2192a1[_0xeda6('0x1c')]=_0x399be9;if(_0x353892[_0xeda6('0x2e')][_0xeda6('0x3c')]){_0xa725d8[_0xeda6('0x3d')]=[{'all':!![]}];}return db['Automation'][_0xeda6('0x3e')](_0xa725d8);})['then'](function(_0x5404fc){_0x2192a1[_0xeda6('0x3f')]=_0x5404fc;return _0x2192a1;})['then'](respondWithFilteredResult(_0x48880b,_0xa725d8))[_0xeda6('0x40')](handleError(_0x48880b,null));};exports[_0xeda6('0x41')]=function(_0x4182bb,_0x1fbf85){var _0x1c1a98={'raw':![],'where':{'id':_0x4182bb[_0xeda6('0x42')]['id']}},_0x389a49={};_0x389a49[_0xeda6('0x2d')]=_[_0xeda6('0x2f')](db[_0xeda6('0x3b')]['rawAttributes']);_0x389a49[_0xeda6('0x2e')]=_['keys'](_0x4182bb[_0xeda6('0x2e')]);_0x389a49[_0xeda6('0x30')]=_[_0xeda6('0x43')](_0x389a49['model'],_0x389a49['query']);_0x1c1a98[_0xeda6('0x31')]=_[_0xeda6('0x43')](_0x389a49['model'],qs[_0xeda6('0x32')](_0x4182bb[_0xeda6('0x2e')][_0xeda6('0x32')]));_0x1c1a98['attributes']=_0x1c1a98[_0xeda6('0x31')][_0xeda6('0x33')]?_0x1c1a98[_0xeda6('0x31')]:_0x389a49['model'];if(_0x4182bb[_0xeda6('0x2e')][_0xeda6('0x3c')]){_0x1c1a98['include']=[{'all':!![]}];}_0x1c1a98=_[_0xeda6('0x39')]({},_0x1c1a98,_0x4182bb['options']);return db[_0xeda6('0x3b')][_0xeda6('0x44')](_0x1c1a98)[_0xeda6('0x23')](handleEntityNotFound(_0x1fbf85,null))[_0xeda6('0x23')](respondWithResult(_0x1fbf85,null))[_0xeda6('0x40')](handleError(_0x1fbf85,null));};exports[_0xeda6('0x45')]=function(_0x1ccf3e,_0x440592){return db[_0xeda6('0x3b')]['create'](_0x1ccf3e[_0xeda6('0x46')],{})['then'](respondWithResult(_0x440592,0xc9))['catch'](handleError(_0x440592,null));};exports['update']=function(_0x4dc67d,_0x3d5943){if(_0x4dc67d[_0xeda6('0x46')]['id']){delete _0x4dc67d[_0xeda6('0x46')]['id'];}return db['Automation']['find']({'where':{'id':_0x4dc67d[_0xeda6('0x42')]['id']}})[_0xeda6('0x23')](handleEntityNotFound(_0x3d5943,null))[_0xeda6('0x23')](saveUpdates(_0x4dc67d[_0xeda6('0x46')],null))[_0xeda6('0x23')](respondWithResult(_0x3d5943,null))['catch'](handleError(_0x3d5943,null));};exports[_0xeda6('0x24')]=function(_0x4fdde8,_0x161eab){return db['Automation']['find']({'where':{'id':_0x4fdde8['params']['id']}})[_0xeda6('0x23')](handleEntityNotFound(_0x161eab,null))[_0xeda6('0x23')](removeEntity(_0x161eab,null))[_0xeda6('0x40')](handleError(_0x161eab,null));};exports[_0xeda6('0x47')]=function(_0x577806,_0x39a23b,_0x2fb2bc){return db[_0xeda6('0x48')][_0xeda6('0x44')]({'where':{'id':_0x577806[_0xeda6('0x42')]['id']}})[_0xeda6('0x23')](handleEntityNotFound(_0x39a23b,null))[_0xeda6('0x23')](function(_0x111ab7){if(_0x111ab7){return _0x111ab7[_0xeda6('0x47')](_0x577806[_0xeda6('0x46')][_0xeda6('0x49')],_['omit'](_0x577806['body'],[_0xeda6('0x49'),'id'])||{});}})[_0xeda6('0x23')](respondWithResult(_0x39a23b,null))[_0xeda6('0x40')](handleError(_0x39a23b,null));};exports['getConditions']=function(_0x27bc03,_0x2133f8,_0x1dc249){var _0x1a5fce={};var _0x2eb350={};var _0x53e72f;var _0x1c7c93;return db[_0xeda6('0x3b')][_0xeda6('0x4a')]({'where':{'id':_0x27bc03[_0xeda6('0x42')]['id']}})[_0xeda6('0x23')](handleEntityNotFound(_0x2133f8,null))[_0xeda6('0x23')](function(_0x26f161){if(_0x26f161){_0x53e72f=_0x26f161;_0x2eb350[_0xeda6('0x2d')]=_['keys'](db['Condition']['rawAttributes']);_0x2eb350[_0xeda6('0x2e')]=_[_0xeda6('0x2f')](_0x27bc03[_0xeda6('0x2e')]);_0x2eb350['filters']=_[_0xeda6('0x43')](_0x2eb350['model'],_0x2eb350[_0xeda6('0x2e')]);_0x1a5fce[_0xeda6('0x31')]=_['intersection'](_0x2eb350[_0xeda6('0x2d')],qs[_0xeda6('0x32')](_0x27bc03[_0xeda6('0x2e')][_0xeda6('0x32')]));_0x1a5fce[_0xeda6('0x31')]=_0x1a5fce[_0xeda6('0x31')][_0xeda6('0x33')]?_0x1a5fce['attributes']:_0x2eb350[_0xeda6('0x2d')];_0x1a5fce[_0xeda6('0x4b')]=qs[_0xeda6('0x36')](_0x27bc03[_0xeda6('0x2e')][_0xeda6('0x36')]);_0x1a5fce['where']=qs[_0xeda6('0x30')](_['pick'](_0x27bc03[_0xeda6('0x2e')],_0x2eb350[_0xeda6('0x30')]));if(_0x27bc03[_0xeda6('0x2e')][_0xeda6('0x38')]){_0x1a5fce[_0xeda6('0x4c')]=_[_0xeda6('0x39')](_0x1a5fce[_0xeda6('0x4c')],{'$or':_['map'](_0x1a5fce[_0xeda6('0x31')],function(_0x466cdb){var _0x33c391={};_0x33c391[_0x466cdb]={'$like':'%'+_0x27bc03[_0xeda6('0x2e')][_0xeda6('0x38')]+'%'};return _0x33c391;})});}_0x1a5fce=_[_0xeda6('0x39')]({},_0x1a5fce,_0x27bc03[_0xeda6('0x4d')]);return _0x53e72f['getConditions'](_0x1a5fce);}})[_0xeda6('0x23')](function(_0x28931f){if(_0x28931f){_0x1c7c93=_0x28931f[_0xeda6('0x33')];if(!_0x27bc03['query'][_0xeda6('0x34')](_0xeda6('0x35'))){_0x1a5fce['limit']=qs[_0xeda6('0x1a')](_0x27bc03[_0xeda6('0x2e')][_0xeda6('0x1a')]);_0x1a5fce[_0xeda6('0x19')]=qs[_0xeda6('0x19')](_0x27bc03[_0xeda6('0x2e')][_0xeda6('0x19')]);}return _0x53e72f[_0xeda6('0x4e')](_0x1a5fce);}})[_0xeda6('0x23')](function(_0xb257ce){if(_0xb257ce){return _0xb257ce?{'count':_0x1c7c93,'rows':_0xb257ce}:null;}})[_0xeda6('0x23')](respondWithResult(_0x2133f8,null))[_0xeda6('0x40')](handleError(_0x2133f8,null));};exports[_0xeda6('0x4f')]=function(_0x2ebf1c,_0x1206de,_0x30622e){return db['Action']['find']({'where':{'id':_0x2ebf1c[_0xeda6('0x42')]['id']}})['then'](handleEntityNotFound(_0x1206de,null))[_0xeda6('0x23')](function(_0x3fb8a7){if(_0x3fb8a7){return _0x3fb8a7['addActions'](_0x2ebf1c[_0xeda6('0x46')]['ids'],_[_0xeda6('0x50')](_0x2ebf1c[_0xeda6('0x46')],[_0xeda6('0x49'),'id'])||{});}})[_0xeda6('0x23')](respondWithResult(_0x1206de,null))['catch'](handleError(_0x1206de,null));};exports[_0xeda6('0x51')]=function(_0x13e84a,_0xcebf45,_0x89d1bc){var _0x646e28={};var _0x5e065f={};var _0x535cac;var _0x17797b;return db[_0xeda6('0x3b')][_0xeda6('0x4a')]({'where':{'id':_0x13e84a['params']['id']}})[_0xeda6('0x23')](handleEntityNotFound(_0xcebf45,null))[_0xeda6('0x23')](function(_0x46ab8f){if(_0x46ab8f){_0x535cac=_0x46ab8f;_0x5e065f[_0xeda6('0x2d')]=_[_0xeda6('0x2f')](db[_0xeda6('0x52')][_0xeda6('0x2b')]);_0x5e065f['query']=_[_0xeda6('0x2f')](_0x13e84a[_0xeda6('0x2e')]);_0x5e065f[_0xeda6('0x30')]=_['intersection'](_0x5e065f[_0xeda6('0x2d')],_0x5e065f[_0xeda6('0x2e')]);_0x646e28[_0xeda6('0x31')]=_[_0xeda6('0x43')](_0x5e065f[_0xeda6('0x2d')],qs[_0xeda6('0x32')](_0x13e84a[_0xeda6('0x2e')][_0xeda6('0x32')]));_0x646e28[_0xeda6('0x31')]=_0x646e28[_0xeda6('0x31')][_0xeda6('0x33')]?_0x646e28[_0xeda6('0x31')]:_0x5e065f['model'];_0x646e28['order']=qs['sort'](_0x13e84a[_0xeda6('0x2e')]['sort']);_0x646e28[_0xeda6('0x4c')]=qs[_0xeda6('0x30')](_[_0xeda6('0x37')](_0x13e84a[_0xeda6('0x2e')],_0x5e065f[_0xeda6('0x30')]));if(_0x13e84a[_0xeda6('0x2e')][_0xeda6('0x38')]){_0x646e28['where']=_[_0xeda6('0x39')](_0x646e28['where'],{'$or':_[_0xeda6('0x2a')](_0x646e28[_0xeda6('0x31')],function(_0x4a948f){var _0x12436e={};_0x12436e[_0x4a948f]={'$like':'%'+_0x13e84a[_0xeda6('0x2e')][_0xeda6('0x38')]+'%'};return _0x12436e;})});}_0x646e28=_['merge']({},_0x646e28,_0x13e84a[_0xeda6('0x4d')]);return _0x535cac[_0xeda6('0x51')](_0x646e28);}})[_0xeda6('0x23')](function(_0x9a6b85){if(_0x9a6b85){_0x17797b=_0x9a6b85['length'];if(!_0x13e84a['query'][_0xeda6('0x34')](_0xeda6('0x35'))){_0x646e28[_0xeda6('0x1a')]=qs['limit'](_0x13e84a['query'][_0xeda6('0x1a')]);_0x646e28['offset']=qs[_0xeda6('0x19')](_0x13e84a[_0xeda6('0x2e')][_0xeda6('0x19')]);}return _0x535cac['getActions'](_0x646e28);}})[_0xeda6('0x23')](function(_0x4cfb69){if(_0x4cfb69){return _0x4cfb69?{'count':_0x17797b,'rows':_0x4cfb69}:null;}})[_0xeda6('0x23')](respondWithResult(_0xcebf45,null))['catch'](handleError(_0xcebf45,null));};
\ No newline at end of file
+var _0x07b4=['crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','stack','name','send','index','map','Automation','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','addConditions','Condition','ids','omit','getConditions','findOne','addActions','Action','getActions','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x07b4,0xfc));var _0x407b=function(_0x51a788,_0x5cbd13){_0x51a788=_0x51a788-0x0;var _0x43af0c=_0x07b4[_0x51a788];return _0x43af0c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x407b('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x407b('0x1'));var moment=require(_0x407b('0x2'));var BPromise=require(_0x407b('0x3'));var Mustache=require(_0x407b('0x4'));var util=require(_0x407b('0x5'));var path=require(_0x407b('0x6'));var sox=require(_0x407b('0x7'));var csv=require(_0x407b('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x407b('0x9'));var _=require(_0x407b('0xa'));var squel=require(_0x407b('0xb'));var crypto=require(_0x407b('0xc'));var jsforce=require(_0x407b('0xd'));var deskjs=require(_0x407b('0xe'));var toCsv=require('to-csv');var querystring=require(_0x407b('0xf'));var Papa=require(_0x407b('0x10'));var Redis=require(_0x407b('0x11'));var authService=require(_0x407b('0x12'));var qs=require(_0x407b('0x13'));var as=require(_0x407b('0x14'));var hardwareService=require(_0x407b('0x15'));var logger=require(_0x407b('0x16'))(_0x407b('0x17'));var utils=require('../../config/utils');var config=require(_0x407b('0x18'));var licenseUtil=require(_0x407b('0x19'));var db=require(_0x407b('0x1a'))['db'];function respondWithStatusCode(_0x18440e,_0x512f8e){_0x512f8e=_0x512f8e||0xcc;return function(_0x32cb96){if(_0x32cb96){return _0x18440e[_0x407b('0x1b')](_0x512f8e);}return _0x18440e[_0x407b('0x1c')](_0x512f8e)[_0x407b('0x1d')]();};}function respondWithResult(_0x933539,_0x2341d5){_0x2341d5=_0x2341d5||0xc8;return function(_0x507bbc){if(_0x507bbc){return _0x933539[_0x407b('0x1c')](_0x2341d5)[_0x407b('0x1e')](_0x507bbc);}};}function respondWithFilteredResult(_0x13045b,_0x3609d5){return function(_0x44ab34){if(_0x44ab34){var _0x4bfb84=typeof _0x3609d5['offset']===_0x407b('0x1f')&&typeof _0x3609d5[_0x407b('0x20')]===_0x407b('0x1f');var _0x5912c2=_0x44ab34[_0x407b('0x21')];var _0x6fee39=_0x4bfb84?0x0:_0x3609d5[_0x407b('0x22')];var _0x8076d4=_0x4bfb84?_0x44ab34['count']:_0x3609d5[_0x407b('0x22')]+_0x3609d5[_0x407b('0x20')];var _0x360b8b;if(_0x8076d4>=_0x5912c2){_0x8076d4=_0x5912c2;_0x360b8b=0xc8;}else{_0x360b8b=0xce;}_0x13045b[_0x407b('0x1c')](_0x360b8b);return _0x13045b[_0x407b('0x23')](_0x407b('0x24'),_0x6fee39+'-'+_0x8076d4+'/'+_0x5912c2)[_0x407b('0x1e')](_0x44ab34);}return null;};}function patchUpdates(_0x1789fb){return function(_0x568aa7){try{jsonpatch[_0x407b('0x25')](_0x568aa7,_0x1789fb,!![]);}catch(_0x5804ea){return BPromise[_0x407b('0x26')](_0x5804ea);}return _0x568aa7['save']();};}function saveUpdates(_0xd727ec,_0x163235){return function(_0x7be663){if(_0x7be663){return _0x7be663[_0x407b('0x27')](_0xd727ec)[_0x407b('0x28')](function(_0x133e35){return _0x133e35;});}return null;};}function removeEntity(_0x36420f,_0x1a9f37){return function(_0x4223d0){if(_0x4223d0){return _0x4223d0[_0x407b('0x29')]()[_0x407b('0x28')](function(){_0x36420f[_0x407b('0x1c')](0xcc)[_0x407b('0x1d')]();});}};}function handleEntityNotFound(_0x44cf01,_0x1595db){return function(_0x4100a8){if(!_0x4100a8){_0x44cf01[_0x407b('0x1b')](0x194);}return _0x4100a8;};}function handleError(_0x367e92,_0x3e3e87){_0x3e3e87=_0x3e3e87||0x1f4;return function(_0x2c569e){logger['error'](_0x2c569e[_0x407b('0x2a')]);if(_0x2c569e[_0x407b('0x2b')]){delete _0x2c569e[_0x407b('0x2b')];}_0x367e92[_0x407b('0x1c')](_0x3e3e87)[_0x407b('0x2c')](_0x2c569e);};}exports[_0x407b('0x2d')]=function(_0x520919,_0x284274){var _0x41f2f0={},_0x45a6dc={},_0x393bb8={'count':0x0,'rows':[]};var _0x5da64b=_[_0x407b('0x2e')](db[_0x407b('0x2f')][_0x407b('0x30')],function(_0x4e4f5e){return{'name':_0x4e4f5e['fieldName'],'type':_0x4e4f5e[_0x407b('0x31')][_0x407b('0x32')]};});_0x45a6dc[_0x407b('0x33')]=_[_0x407b('0x2e')](_0x5da64b,_0x407b('0x2b'));_0x45a6dc[_0x407b('0x34')]=_[_0x407b('0x35')](_0x520919[_0x407b('0x34')]);_0x45a6dc['filters']=_[_0x407b('0x36')](_0x45a6dc[_0x407b('0x33')],_0x45a6dc['query']);_0x41f2f0[_0x407b('0x37')]=_[_0x407b('0x36')](_0x45a6dc[_0x407b('0x33')],qs[_0x407b('0x38')](_0x520919['query']['fields']));_0x41f2f0[_0x407b('0x37')]=_0x41f2f0[_0x407b('0x37')][_0x407b('0x39')]?_0x41f2f0[_0x407b('0x37')]:_0x45a6dc[_0x407b('0x33')];if(!_0x520919[_0x407b('0x34')][_0x407b('0x3a')](_0x407b('0x3b'))){_0x41f2f0[_0x407b('0x20')]=qs[_0x407b('0x20')](_0x520919[_0x407b('0x34')]['limit']);_0x41f2f0[_0x407b('0x22')]=qs[_0x407b('0x22')](_0x520919[_0x407b('0x34')][_0x407b('0x22')]);}_0x41f2f0[_0x407b('0x3c')]=qs[_0x407b('0x3d')](_0x520919[_0x407b('0x34')][_0x407b('0x3d')]);_0x41f2f0[_0x407b('0x3e')]=qs['filters'](_[_0x407b('0x3f')](_0x520919[_0x407b('0x34')],_0x45a6dc[_0x407b('0x40')]),_0x5da64b);if(_0x520919['query'][_0x407b('0x41')]){_0x41f2f0[_0x407b('0x3e')]=_[_0x407b('0x42')](_0x41f2f0[_0x407b('0x3e')],{'$or':_['map'](_0x5da64b,function(_0x23b96e){if(_0x23b96e[_0x407b('0x31')]!==_0x407b('0x43')){var _0x5b0bbb={};_0x5b0bbb[_0x23b96e[_0x407b('0x2b')]]={'$like':'%'+_0x520919[_0x407b('0x34')]['filter']+'%'};return _0x5b0bbb;}})});}_0x41f2f0=_['merge']({},_0x41f2f0,_0x520919['options']);var _0x49877a={'where':_0x41f2f0[_0x407b('0x3e')]};return db[_0x407b('0x2f')][_0x407b('0x21')](_0x49877a)['then'](function(_0x3b55fc){_0x393bb8[_0x407b('0x21')]=_0x3b55fc;if(_0x520919['query'][_0x407b('0x44')]){_0x41f2f0[_0x407b('0x45')]=[{'all':!![]}];}return db[_0x407b('0x2f')][_0x407b('0x46')](_0x41f2f0);})[_0x407b('0x28')](function(_0x494f61){_0x393bb8[_0x407b('0x47')]=_0x494f61;return _0x393bb8;})[_0x407b('0x28')](respondWithFilteredResult(_0x284274,_0x41f2f0))[_0x407b('0x48')](handleError(_0x284274,null));};exports[_0x407b('0x49')]=function(_0x467001,_0x3071dc){var _0xc9ee09={'raw':![],'where':{'id':_0x467001[_0x407b('0x4a')]['id']}},_0x4d396e={};_0x4d396e[_0x407b('0x33')]=_[_0x407b('0x35')](db[_0x407b('0x2f')][_0x407b('0x30')]);_0x4d396e['query']=_['keys'](_0x467001['query']);_0x4d396e[_0x407b('0x40')]=_['intersection'](_0x4d396e[_0x407b('0x33')],_0x4d396e['query']);_0xc9ee09[_0x407b('0x37')]=_[_0x407b('0x36')](_0x4d396e[_0x407b('0x33')],qs['fields'](_0x467001['query'][_0x407b('0x38')]));_0xc9ee09[_0x407b('0x37')]=_0xc9ee09[_0x407b('0x37')][_0x407b('0x39')]?_0xc9ee09[_0x407b('0x37')]:_0x4d396e[_0x407b('0x33')];if(_0x467001['query'][_0x407b('0x44')]){_0xc9ee09[_0x407b('0x45')]=[{'all':!![]}];}_0xc9ee09=_['merge']({},_0xc9ee09,_0x467001[_0x407b('0x4b')]);return db['Automation'][_0x407b('0x4c')](_0xc9ee09)[_0x407b('0x28')](handleEntityNotFound(_0x3071dc,null))[_0x407b('0x28')](respondWithResult(_0x3071dc,null))[_0x407b('0x48')](handleError(_0x3071dc,null));};exports[_0x407b('0x4d')]=function(_0x16f97d,_0x3a1f9b){return db[_0x407b('0x2f')]['create'](_0x16f97d[_0x407b('0x4e')],{})[_0x407b('0x28')](respondWithResult(_0x3a1f9b,0xc9))['catch'](handleError(_0x3a1f9b,null));};exports[_0x407b('0x27')]=function(_0x4cb52e,_0x56f314){if(_0x4cb52e['body']['id']){delete _0x4cb52e[_0x407b('0x4e')]['id'];}return db[_0x407b('0x2f')][_0x407b('0x4c')]({'where':{'id':_0x4cb52e[_0x407b('0x4a')]['id']}})[_0x407b('0x28')](handleEntityNotFound(_0x56f314,null))['then'](saveUpdates(_0x4cb52e['body'],null))['then'](respondWithResult(_0x56f314,null))[_0x407b('0x48')](handleError(_0x56f314,null));};exports[_0x407b('0x29')]=function(_0x37471e,_0x3f48a0){return db[_0x407b('0x2f')][_0x407b('0x4c')]({'where':{'id':_0x37471e['params']['id']}})[_0x407b('0x28')](handleEntityNotFound(_0x3f48a0,null))[_0x407b('0x28')](removeEntity(_0x3f48a0,null))[_0x407b('0x48')](handleError(_0x3f48a0,null));};exports[_0x407b('0x4f')]=function(_0x3026ee,_0x5261fc,_0x38a338){return db[_0x407b('0x50')]['find']({'where':{'id':_0x3026ee['params']['id']}})[_0x407b('0x28')](handleEntityNotFound(_0x5261fc,null))[_0x407b('0x28')](function(_0x2a8405){if(_0x2a8405){return _0x2a8405[_0x407b('0x4f')](_0x3026ee[_0x407b('0x4e')][_0x407b('0x51')],_[_0x407b('0x52')](_0x3026ee[_0x407b('0x4e')],['ids','id'])||{});}})[_0x407b('0x28')](respondWithResult(_0x5261fc,null))[_0x407b('0x48')](handleError(_0x5261fc,null));};exports[_0x407b('0x53')]=function(_0x2a0dd1,_0x84f96a,_0x40b9c3){var _0x4a2b7f={};var _0x862b6={};var _0xcc8d27;var _0x5b1428;return db[_0x407b('0x2f')][_0x407b('0x54')]({'where':{'id':_0x2a0dd1[_0x407b('0x4a')]['id']}})['then'](handleEntityNotFound(_0x84f96a,null))[_0x407b('0x28')](function(_0x3c866d){if(_0x3c866d){_0xcc8d27=_0x3c866d;_0x862b6[_0x407b('0x33')]=_[_0x407b('0x35')](db['Condition'][_0x407b('0x30')]);_0x862b6[_0x407b('0x34')]=_[_0x407b('0x35')](_0x2a0dd1[_0x407b('0x34')]);_0x862b6[_0x407b('0x40')]=_[_0x407b('0x36')](_0x862b6[_0x407b('0x33')],_0x862b6[_0x407b('0x34')]);_0x4a2b7f[_0x407b('0x37')]=_['intersection'](_0x862b6['model'],qs[_0x407b('0x38')](_0x2a0dd1[_0x407b('0x34')]['fields']));_0x4a2b7f[_0x407b('0x37')]=_0x4a2b7f[_0x407b('0x37')][_0x407b('0x39')]?_0x4a2b7f[_0x407b('0x37')]:_0x862b6[_0x407b('0x33')];_0x4a2b7f[_0x407b('0x3c')]=qs[_0x407b('0x3d')](_0x2a0dd1[_0x407b('0x34')]['sort']);_0x4a2b7f[_0x407b('0x3e')]=qs['filters'](_['pick'](_0x2a0dd1[_0x407b('0x34')],_0x862b6['filters']));if(_0x2a0dd1[_0x407b('0x34')]['filter']){_0x4a2b7f['where']=_[_0x407b('0x42')](_0x4a2b7f[_0x407b('0x3e')],{'$or':_[_0x407b('0x2e')](_0x4a2b7f[_0x407b('0x37')],function(_0x471a1b){var _0x4d3d0a={};_0x4d3d0a[_0x471a1b]={'$like':'%'+_0x2a0dd1['query'][_0x407b('0x41')]+'%'};return _0x4d3d0a;})});}_0x4a2b7f=_['merge']({},_0x4a2b7f,_0x2a0dd1[_0x407b('0x4b')]);return _0xcc8d27[_0x407b('0x53')](_0x4a2b7f);}})[_0x407b('0x28')](function(_0x480035){if(_0x480035){_0x5b1428=_0x480035[_0x407b('0x39')];if(!_0x2a0dd1[_0x407b('0x34')][_0x407b('0x3a')](_0x407b('0x3b'))){_0x4a2b7f[_0x407b('0x20')]=qs[_0x407b('0x20')](_0x2a0dd1[_0x407b('0x34')][_0x407b('0x20')]);_0x4a2b7f[_0x407b('0x22')]=qs['offset'](_0x2a0dd1['query']['offset']);}return _0xcc8d27[_0x407b('0x53')](_0x4a2b7f);}})['then'](function(_0x57d500){if(_0x57d500){return _0x57d500?{'count':_0x5b1428,'rows':_0x57d500}:null;}})[_0x407b('0x28')](respondWithResult(_0x84f96a,null))['catch'](handleError(_0x84f96a,null));};exports[_0x407b('0x55')]=function(_0x424659,_0x194578,_0x323364){return db[_0x407b('0x56')][_0x407b('0x4c')]({'where':{'id':_0x424659['params']['id']}})[_0x407b('0x28')](handleEntityNotFound(_0x194578,null))['then'](function(_0x296fe4){if(_0x296fe4){return _0x296fe4[_0x407b('0x55')](_0x424659[_0x407b('0x4e')]['ids'],_[_0x407b('0x52')](_0x424659[_0x407b('0x4e')],[_0x407b('0x51'),'id'])||{});}})[_0x407b('0x28')](respondWithResult(_0x194578,null))[_0x407b('0x48')](handleError(_0x194578,null));};exports[_0x407b('0x57')]=function(_0x49480f,_0x2448f6,_0xafaf3a){var _0x3fda61={};var _0x5cda95={};var _0x339301;var _0x14ee60;return db[_0x407b('0x2f')][_0x407b('0x54')]({'where':{'id':_0x49480f[_0x407b('0x4a')]['id']}})[_0x407b('0x28')](handleEntityNotFound(_0x2448f6,null))[_0x407b('0x28')](function(_0x3aee4c){if(_0x3aee4c){_0x339301=_0x3aee4c;_0x5cda95['model']=_[_0x407b('0x35')](db[_0x407b('0x56')]['rawAttributes']);_0x5cda95[_0x407b('0x34')]=_[_0x407b('0x35')](_0x49480f[_0x407b('0x34')]);_0x5cda95[_0x407b('0x40')]=_[_0x407b('0x36')](_0x5cda95['model'],_0x5cda95[_0x407b('0x34')]);_0x3fda61[_0x407b('0x37')]=_[_0x407b('0x36')](_0x5cda95[_0x407b('0x33')],qs['fields'](_0x49480f[_0x407b('0x34')][_0x407b('0x38')]));_0x3fda61[_0x407b('0x37')]=_0x3fda61[_0x407b('0x37')][_0x407b('0x39')]?_0x3fda61[_0x407b('0x37')]:_0x5cda95[_0x407b('0x33')];_0x3fda61[_0x407b('0x3c')]=qs[_0x407b('0x3d')](_0x49480f['query'][_0x407b('0x3d')]);_0x3fda61[_0x407b('0x3e')]=qs[_0x407b('0x40')](_['pick'](_0x49480f[_0x407b('0x34')],_0x5cda95[_0x407b('0x40')]));if(_0x49480f[_0x407b('0x34')][_0x407b('0x41')]){_0x3fda61[_0x407b('0x3e')]=_[_0x407b('0x42')](_0x3fda61['where'],{'$or':_[_0x407b('0x2e')](_0x3fda61['attributes'],function(_0x5d8aa9){var _0xa64812={};_0xa64812[_0x5d8aa9]={'$like':'%'+_0x49480f[_0x407b('0x34')][_0x407b('0x41')]+'%'};return _0xa64812;})});}_0x3fda61=_[_0x407b('0x42')]({},_0x3fda61,_0x49480f['options']);return _0x339301[_0x407b('0x57')](_0x3fda61);}})[_0x407b('0x28')](function(_0x4b657f){if(_0x4b657f){_0x14ee60=_0x4b657f['length'];if(!_0x49480f[_0x407b('0x34')]['hasOwnProperty']('nolimit')){_0x3fda61['limit']=qs[_0x407b('0x20')](_0x49480f['query'][_0x407b('0x20')]);_0x3fda61[_0x407b('0x22')]=qs[_0x407b('0x22')](_0x49480f[_0x407b('0x34')][_0x407b('0x22')]);}return _0x339301[_0x407b('0x57')](_0x3fda61);}})['then'](function(_0x51d172){if(_0x51d172){return _0x51d172?{'count':_0x14ee60,'rows':_0x51d172}:null;}})[_0x407b('0x28')](respondWithResult(_0x2448f6,null))['catch'](handleError(_0x2448f6,null));};
\ No newline at end of file
index 8a38f32..1e98e97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39f3=['api','bluebird','../../config/environment','./automation.attributes','exports','define','Automation','tools_automations','lodash','util','../../config/logger'];(function(_0x3e3bee,_0x4f91fe){var _0x3ae14c=function(_0x3861a0){while(--_0x3861a0){_0x3e3bee['push'](_0x3e3bee['shift']());}};_0x3ae14c(++_0x4f91fe);}(_0x39f3,0x6b));var _0x339f=function(_0xf7e472,_0x2e87c2){_0xf7e472=_0xf7e472-0x0;var _0x1176ab=_0x39f3[_0xf7e472];return _0x1176ab;};'use strict';var _=require(_0x339f('0x0'));var util=require(_0x339f('0x1'));var logger=require(_0x339f('0x2'))(_0x339f('0x3'));var moment=require('moment');var BPromise=require(_0x339f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x339f('0x5'));var attributes=require(_0x339f('0x6'));module[_0x339f('0x7')]=function(_0x120e64,_0x3e0b7e){return _0x120e64[_0x339f('0x8')](_0x339f('0x9'),attributes,{'tableName':_0x339f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa0b9=['request-promise','path','rimraf','../../config/environment','./automation.attributes','exports','define','Automation','tools_automations','lodash','util','../../config/logger','moment','bluebird'];(function(_0x20909e,_0x32154a){var _0x5d780e=function(_0xea96d1){while(--_0xea96d1){_0x20909e['push'](_0x20909e['shift']());}};_0x5d780e(++_0x32154a);}(_0xa0b9,0x12f));var _0x9a0b=function(_0x1c6f42,_0x4ff2fb){_0x1c6f42=_0x1c6f42-0x0;var _0x443f36=_0xa0b9[_0x1c6f42];return _0x443f36;};'use strict';var _=require(_0x9a0b('0x0'));var util=require(_0x9a0b('0x1'));var logger=require(_0x9a0b('0x2'))('api');var moment=require(_0x9a0b('0x3'));var BPromise=require(_0x9a0b('0x4'));var rp=require(_0x9a0b('0x5'));var fs=require('fs');var path=require(_0x9a0b('0x6'));var rimraf=require(_0x9a0b('0x7'));var config=require(_0x9a0b('0x8'));var attributes=require(_0x9a0b('0x9'));module[_0x9a0b('0xa')]=function(_0x47cc9d,_0x4af799){return _0x47cc9d[_0x9a0b('0xb')](_0x9a0b('0xc'),attributes,{'tableName':_0x9a0b('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b6f8476..18e92f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3423=['rpc','../../config/environment','jayson/promise','client','http','request','then','Automation,\x20%s,\x20%s','stringify','error','code','message','info','result','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x3423,0x188));var _0x3342=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3423[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3342('0x0'));var BPromise=require(_0x3342('0x1'));var rs=require(_0x3342('0x2'));var fs=require('fs');var Redis=require(_0x3342('0x3'));var db=require(_0x3342('0x4'))['db'];var utils=require(_0x3342('0x5'));var logger=require(_0x3342('0x6'))(_0x3342('0x7'));var config=require(_0x3342('0x8'));var jayson=require(_0x3342('0x9'));var client=jayson[_0x3342('0xa')][_0x3342('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x29c40c,_0x420d4b,_0x76422d){return new BPromise(function(_0xce08ab,_0x305d13){return client[_0x3342('0xc')](_0x29c40c,_0x76422d)[_0x3342('0xd')](function(_0x4ae4f3){logger['info'](_0x3342('0xe'),_0x420d4b,'request\x20sent');logger['debug']('Automation,\x20%s,\x20%s,\x20%s',_0x420d4b,'request\x20sent',JSON[_0x3342('0xf')](_0x4ae4f3));if(_0x4ae4f3[_0x3342('0x10')]){if(_0x4ae4f3['error'][_0x3342('0x11')]===0x1f4){logger['error'](_0x3342('0xe'),_0x420d4b,_0x4ae4f3[_0x3342('0x10')]['message']);return _0x305d13(_0x4ae4f3[_0x3342('0x10')][_0x3342('0x12')]);}logger[_0x3342('0x10')](_0x3342('0xe'),_0x420d4b,_0x4ae4f3[_0x3342('0x10')][_0x3342('0x12')]);return _0xce08ab(_0x4ae4f3[_0x3342('0x10')]['message']);}else{logger[_0x3342('0x13')](_0x3342('0xe'),_0x420d4b,'request\x20sent');_0xce08ab(_0x4ae4f3[_0x3342('0x14')][_0x3342('0x12')]);}})['catch'](function(_0x554f9c){logger[_0x3342('0x10')](_0x3342('0xe'),_0x420d4b,_0x554f9c);_0x305d13(_0x554f9c);});});}
\ 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','Automation,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch'];(function(_0x3b8861,_0x377a1b){var _0x366ecd=function(_0x4d5204){while(--_0x4d5204){_0x3b8861['push'](_0x3b8861['shift']());}};_0x366ecd(++_0x377a1b);}(_0x5f2f,0x73));var _0xf5f2=function(_0x295464,_0xfe60c4){_0x295464=_0x295464-0x0;var _0x19eb2e=_0x5f2f[_0x295464];return _0x19eb2e;};'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')]('Automation,\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 79cb8d3..5f5baa1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6453=['show','/:id/conditions','getConditions','/:id/actions','post','create','addConditions','put','update','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','get','isAuthenticated','index','/:id'];(function(_0x36ac1b,_0x112480){var _0x22799d=function(_0x3d1185){while(--_0x3d1185){_0x36ac1b['push'](_0x36ac1b['shift']());}};_0x22799d(++_0x112480);}(_0x6453,0x88));var _0x3645=function(_0x20cf8a,_0x44cd6b){_0x20cf8a=_0x20cf8a-0x0;var _0x54e165=_0x6453[_0x20cf8a];return _0x54e165;};'use strict';var multer=require(_0x3645('0x0'));var util=require(_0x3645('0x1'));var path=require('path');var timeout=require(_0x3645('0x2'));var express=require(_0x3645('0x3'));var router=express[_0x3645('0x4')]();var fs_extra=require(_0x3645('0x5'));var auth=require(_0x3645('0x6'));var interaction=require(_0x3645('0x7'));var config=require(_0x3645('0x8'));var controller=require(_0x3645('0x9'));router[_0x3645('0xa')]('/',auth[_0x3645('0xb')](),controller[_0x3645('0xc')]);router[_0x3645('0xa')](_0x3645('0xd'),auth[_0x3645('0xb')](),controller[_0x3645('0xe')]);router[_0x3645('0xa')](_0x3645('0xf'),auth[_0x3645('0xb')](),controller[_0x3645('0x10')]);router[_0x3645('0xa')](_0x3645('0x11'),auth[_0x3645('0xb')](),controller['getActions']);router[_0x3645('0x12')]('/',auth[_0x3645('0xb')](),controller[_0x3645('0x13')]);router['post'](_0x3645('0xf'),auth[_0x3645('0xb')](),controller[_0x3645('0x14')]);router['post'](_0x3645('0x11'),auth[_0x3645('0xb')](),controller['addActions']);router[_0x3645('0x15')](_0x3645('0xd'),auth[_0x3645('0xb')](),controller[_0x3645('0x16')]);router['delete'](_0x3645('0xd'),auth[_0x3645('0xb')](),controller[_0x3645('0x17')]);module[_0x3645('0x18')]=router;
\ No newline at end of file
+var _0xe5f7=['exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./automation.controller','get','index','/:id','isAuthenticated','show','getConditions','/:id/actions','getActions','post','create','/:id/conditions','addConditions','addActions','put','update','delete'];(function(_0x1ebce2,_0x10e903){var _0x4a330c=function(_0x4fd810){while(--_0x4fd810){_0x1ebce2['push'](_0x1ebce2['shift']());}};_0x4a330c(++_0x10e903);}(_0xe5f7,0x178));var _0x7e5f=function(_0x47edbe,_0xda4bfb){_0x47edbe=_0x47edbe-0x0;var _0x1bc7b7=_0xe5f7[_0x47edbe];return _0x1bc7b7;};'use strict';var multer=require(_0x7e5f('0x0'));var util=require(_0x7e5f('0x1'));var path=require(_0x7e5f('0x2'));var timeout=require(_0x7e5f('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x7e5f('0x4'));var auth=require(_0x7e5f('0x5'));var interaction=require(_0x7e5f('0x6'));var config=require('../../config/environment');var controller=require(_0x7e5f('0x7'));router[_0x7e5f('0x8')]('/',auth['isAuthenticated'](),controller[_0x7e5f('0x9')]);router[_0x7e5f('0x8')](_0x7e5f('0xa'),auth[_0x7e5f('0xb')](),controller[_0x7e5f('0xc')]);router[_0x7e5f('0x8')]('/:id/conditions',auth['isAuthenticated'](),controller[_0x7e5f('0xd')]);router[_0x7e5f('0x8')](_0x7e5f('0xe'),auth[_0x7e5f('0xb')](),controller[_0x7e5f('0xf')]);router[_0x7e5f('0x10')]('/',auth[_0x7e5f('0xb')](),controller[_0x7e5f('0x11')]);router[_0x7e5f('0x10')](_0x7e5f('0x12'),auth['isAuthenticated'](),controller[_0x7e5f('0x13')]);router['post'](_0x7e5f('0xe'),auth[_0x7e5f('0xb')](),controller[_0x7e5f('0x14')]);router[_0x7e5f('0x15')](_0x7e5f('0xa'),auth[_0x7e5f('0xb')](),controller[_0x7e5f('0x16')]);router[_0x7e5f('0x17')](_0x7e5f('0xa'),auth[_0x7e5f('0xb')](),controller['destroy']);module[_0x7e5f('0x18')]=router;
\ No newline at end of file
index 2e44e81..77799fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x258e=['#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','DESC','Cut\x20Digit\x20(min:1,\x20max:15)','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\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','exports','STRING','name','ENUM','ivr','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)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','07:00-22:00,*,*,*','never','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Min\x20Word\x20Length','#AMD\x20Maximum\x20Number\x20Of\x20Words'];(function(_0x5d9439,_0x56d6bf){var _0x2e6529=function(_0x4c88f3){while(--_0x4c88f3){_0x5d9439['push'](_0x5d9439['shift']());}};_0x2e6529(++_0x56d6bf);}(_0x258e,0x168));var _0xe258=function(_0x408c50,_0x4d3e3d){_0x408c50=_0x408c50-0x0;var _0x158522=_0x258e[_0x408c50];return _0x158522;};'use strict';var Sequelize=require('sequelize');module[_0xe258('0x0')]={'name':{'type':Sequelize[_0xe258('0x1')],'unique':_0xe258('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0xe258('0x3')]('ivr'),'allowNull':![],'defaultValue':_0xe258('0x4')},'description':{'type':Sequelize[_0xe258('0x1')]},'active':{'type':Sequelize[_0xe258('0x5')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'limitCalls':{'type':Sequelize['INTEGER'](0x4)[_0xe258('0x6')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0xe258('0x7')},'dialOriginateCallerIdName':{'type':Sequelize[_0xe258('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xe258('0x1')]},'dialOriginateTimeout':{'type':Sequelize[_0xe258('0x8')](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xe258('0x9')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xe258('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xe258('0xa')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xe258('0x8')](0x5)[_0xe258('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xe258('0xb')},'dialBusyMaxRetry':{'type':Sequelize[_0xe258('0x8')](0x3)[_0xe258('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xe258('0xc')},'dialBusyRetryFrequency':{'type':Sequelize[_0xe258('0x8')](0x5)[_0xe258('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xe258('0xd')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xe258('0x8')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0xe258('0xe')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xe258('0x8')](0x5)[_0xe258('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xe258('0xf')},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xe258('0x6')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xe258('0x1')],'defaultValue':_0xe258('0x10')},'dialCheckDuplicateType':{'type':Sequelize[_0xe258('0x3')]('always',_0xe258('0x11'),'onlyIfOpen'),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xe258('0x12')},'dialAMDInitialSilence':{'type':Sequelize[_0xe258('0x8')](0x9)[_0xe258('0x6')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xe258('0x13')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xe258('0x14')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xe258('0x8')](0x9)[_0xe258('0x6')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xe258('0x15')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)[_0xe258('0x6')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0xe258('0x8')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xe258('0x16')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xe258('0x8')](0x9)[_0xe258('0x6')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xe258('0x8')](0x9)[_0xe258('0x6')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xe258('0x17')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xe258('0x8')](0x5)[_0xe258('0x6')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xe258('0x18')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xe258('0x8')](0x9)[_0xe258('0x6')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialOrderByScheduledAt':{'type':Sequelize[_0xe258('0x3')](_0xe258('0x19'),'ASC'),'defaultValue':_0xe258('0x19')},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xe258('0x8')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0xe258('0x8')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xe258('0x1a')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xe258('0x8')](0x3)[_0xe258('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xe258('0x8')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xe258('0x1b')},'dialDropMaxRetry':{'type':Sequelize[_0xe258('0x8')](0x3)[_0xe258('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize[_0xe258('0x8')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0xe258('0x8')](0x3)[_0xe258('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xe258('0x1c')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xe258('0x8')](0x5)[_0xe258('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xe258('0x1d')},'dialMachineMaxRetry':{'type':Sequelize[_0xe258('0x8')](0x3)[_0xe258('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0xe258('0x8')](0x5)[_0xe258('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xe258('0x1e')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xe258('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xe258('0x1f')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xe258('0x8')](0x5)[_0xe258('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'}};
\ No newline at end of file
+var _0xe630=['07:00-22:00,*,*,*','always','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','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)','sequelize','STRING','ENUM','ivr','BOOLEAN','INTEGER','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0xe630,0xb5));var _0x0e63=function(_0x29e4c0,_0xf8b14d){_0x29e4c0=_0x29e4c0-0x0;var _0x15b64b=_0xe630[_0x29e4c0];return _0x15b64b;};'use strict';var Sequelize=require(_0x0e63('0x0'));module['exports']={'name':{'type':Sequelize[_0x0e63('0x1')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x0e63('0x2')](_0x0e63('0x3')),'allowNull':![],'defaultValue':_0x0e63('0x3')},'description':{'type':Sequelize[_0x0e63('0x1')]},'active':{'type':Sequelize[_0x0e63('0x4')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'limitCalls':{'type':Sequelize[_0x0e63('0x5')](0x4)[_0x0e63('0x6')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x0e63('0x7')},'dialOriginateCallerIdName':{'type':Sequelize[_0x0e63('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x0e63('0x1')]},'dialOriginateTimeout':{'type':Sequelize[_0x0e63('0x5')](0x3)[_0x0e63('0x6')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0e63('0x8')},'dialCongestionMaxRetry':{'type':Sequelize[_0x0e63('0x5')](0x3)[_0x0e63('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0x0e63('0x5')](0x5)[_0x0e63('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0e63('0x9')},'dialBusyMaxRetry':{'type':Sequelize[_0x0e63('0x5')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0e63('0xa')},'dialBusyRetryFrequency':{'type':Sequelize[_0x0e63('0x5')](0x5)[_0x0e63('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0e63('0xb')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x0e63('0x5')](0x3)[_0x0e63('0x6')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x0e63('0x5')](0x5)[_0x0e63('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0e63('0xc')},'dialGlobalMaxRetry':{'type':Sequelize[_0x0e63('0x5')](0x3)[_0x0e63('0x6')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x0e63('0xd')},'dialTimezone':{'type':Sequelize[_0x0e63('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x0e63('0x1')],'defaultValue':_0x0e63('0xe')},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0x0e63('0xf'),'never',_0x0e63('0x10')),'defaultValue':_0x0e63('0xf')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x0e63('0x11')},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)[_0x0e63('0x6')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x0e63('0x12')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)[_0x0e63('0x6')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x0e63('0x13')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x0e63('0x5')](0x9)[_0x0e63('0x6')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x0e63('0x14')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x0e63('0x5')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x0e63('0x15')},'dialAMDMinWordLength':{'type':Sequelize[_0x0e63('0x5')](0x9)[_0x0e63('0x6')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x0e63('0x16')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0x0e63('0x6')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x0e63('0x17')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x0e63('0x5')](0x9)[_0x0e63('0x6')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x0e63('0x18')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x0e63('0x19')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x0e63('0x5')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialOrderByScheduledAt':{'type':Sequelize[_0x0e63('0x2')](_0x0e63('0x1a'),_0x0e63('0x1b')),'defaultValue':_0x0e63('0x1a')},'dialPrefix':{'type':Sequelize[_0x0e63('0x1')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0x0e63('0x6')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x0e63('0x1c')},'dialCutDigit':{'type':Sequelize[_0x0e63('0x5')](0x3)[_0x0e63('0x6')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x0e63('0x1d')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x0e63('0x5')](0x3)[_0x0e63('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x0e63('0x5')](0x5)[_0x0e63('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0e63('0x1e')},'dialDropMaxRetry':{'type':Sequelize[_0x0e63('0x5')](0x3)[_0x0e63('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0e63('0x1f')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x0e63('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0e63('0x20')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x0e63('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0e63('0x21')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x0e63('0x5')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0e63('0x22')},'dialMachineMaxRetry':{'type':Sequelize[_0x0e63('0x5')](0x3)[_0x0e63('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0e63('0x23')},'dialMachineRetryFrequency':{'type':Sequelize[_0x0e63('0x5')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0e63('0x24')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x0e63('0x5')](0x3)[_0x0e63('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0e63('0x25')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x0e63('0x5')](0x5)[_0x0e63('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0e63('0x26')}};
\ No newline at end of file
index 2fcbd55..b10c8e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3276=['hasOwnProperty','CampaignId','CmHopper','getHopperHistories','CmHopperHistory','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','format','ids','spread','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ListId','field','NOW()','CmListId','toString','from','cm_contacts','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','select','onlyIfOpen','ContactId','deletedAt\x20IS\x20NULL','cm_hopper_additional_phones','OrderBy','ci.OrderBY','cm_contact_has_items','join','h.ListId\x20=\x20?','h.CampaignId=?','h.createdAt\x20=\x20?','push','sequelize','all','removeLists','getBlackLists','addBlackLists','ListId\x20=\x20?','removeBlackLists','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','IvrCampaigns','error','stack','name','send','Campaign','rawAttributes','fieldName','key','query','keys','intersection','model','attributes','fields','length','nolimit','order','sort','pick','filters','filter','merge','where','map','type','options','include','findAll','rows','catch','show','params','includeAll','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','omit','updatedAt','createdAt','getHoppers','findOne'];(function(_0x239eaf,_0x1968b4){var _0x8863f7=function(_0x1b34d7){while(--_0x1b34d7){_0x239eaf['push'](_0x239eaf['shift']());}};_0x8863f7(++_0x1968b4);}(_0x3276,0xc7));var _0x6327=function(_0x41f674,_0x4bf89c){_0x41f674=_0x41f674-0x0;var _0x77bfe0=_0x3276[_0x41f674];return _0x77bfe0;};'use strict';var emlformat=require(_0x6327('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x6327('0x1'));var rp=require(_0x6327('0x2'));var moment=require(_0x6327('0x3'));var BPromise=require(_0x6327('0x4'));var Mustache=require(_0x6327('0x5'));var util=require(_0x6327('0x6'));var path=require(_0x6327('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x6327('0x8'));var fs=require('fs');var fs_extra=require(_0x6327('0x9'));var _=require(_0x6327('0xa'));var squel=require('squel');var crypto=require(_0x6327('0xb'));var jsforce=require(_0x6327('0xc'));var deskjs=require(_0x6327('0xd'));var toCsv=require(_0x6327('0xe'));var querystring=require('querystring');var Papa=require(_0x6327('0xf'));var Redis=require(_0x6327('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x6327('0x11'));var as=require(_0x6327('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6327('0x13'))(_0x6327('0x14'));var utils=require(_0x6327('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x6327('0x16'));var db=require(_0x6327('0x17'))['db'];function respondWithStatusCode(_0xb6de72,_0x32408c){_0x32408c=_0x32408c||0xcc;return function(_0x3ff61b){if(_0x3ff61b){return _0xb6de72[_0x6327('0x18')](_0x32408c);}return _0xb6de72[_0x6327('0x19')](_0x32408c)[_0x6327('0x1a')]();};}function respondWithResult(_0x576b1c,_0x306095){_0x306095=_0x306095||0xc8;return function(_0x48eb75){if(_0x48eb75){return _0x576b1c[_0x6327('0x19')](_0x306095)['json'](_0x48eb75);}};}function respondWithFilteredResult(_0x441ff9,_0x1e850c){return function(_0x43186f){if(_0x43186f){var _0x4e9741=typeof _0x1e850c[_0x6327('0x1b')]===_0x6327('0x1c')&&typeof _0x1e850c[_0x6327('0x1d')]===_0x6327('0x1c');var _0x3ea016=_0x43186f[_0x6327('0x1e')];var _0x341a51=_0x4e9741?0x0:_0x1e850c[_0x6327('0x1b')];var _0x287899=_0x4e9741?_0x43186f[_0x6327('0x1e')]:_0x1e850c[_0x6327('0x1b')]+_0x1e850c[_0x6327('0x1d')];var _0x55cf65;if(_0x287899>=_0x3ea016){_0x287899=_0x3ea016;_0x55cf65=0xc8;}else{_0x55cf65=0xce;}_0x441ff9[_0x6327('0x19')](_0x55cf65);return _0x441ff9[_0x6327('0x1f')](_0x6327('0x20'),_0x341a51+'-'+_0x287899+'/'+_0x3ea016)[_0x6327('0x21')](_0x43186f);}return null;};}function patchUpdates(_0x4cbc80){return function(_0x56249b){try{jsonpatch[_0x6327('0x22')](_0x56249b,_0x4cbc80,!![]);}catch(_0x700766){return BPromise[_0x6327('0x23')](_0x700766);}return _0x56249b[_0x6327('0x24')]();};}function saveUpdates(_0x3078c5,_0x76c718){return function(_0x5754e1){if(_0x5754e1){return _0x5754e1[_0x6327('0x25')](_0x3078c5)[_0x6327('0x26')](function(_0x2f153c){return _0x2f153c;});}return null;};}function removeEntity(_0x1c3d7f,_0x302b3f){return function(_0x254c2f){if(_0x254c2f){return _0x254c2f[_0x6327('0x27')]()[_0x6327('0x26')](function(){var _0x10e312=_0x254c2f['get']({'plain':!![]});var _0x51dbe9=_0x6327('0x28');return db['UserProfileResource'][_0x6327('0x27')]({'where':{'type':_0x51dbe9,'resourceId':_0x10e312['id']}})['then'](function(){return _0x254c2f;});})[_0x6327('0x26')](function(){_0x1c3d7f['status'](0xcc)[_0x6327('0x1a')]();});}};}function handleEntityNotFound(_0x1eae65,_0x486f8e){return function(_0x44caac){if(!_0x44caac){_0x1eae65[_0x6327('0x18')](0x194);}return _0x44caac;};}function handleError(_0x14b41b,_0x2540bf){_0x2540bf=_0x2540bf||0x1f4;return function(_0x894157){logger[_0x6327('0x29')](_0x894157[_0x6327('0x2a')]);if(_0x894157[_0x6327('0x2b')]){delete _0x894157['name'];}_0x14b41b[_0x6327('0x19')](_0x2540bf)[_0x6327('0x2c')](_0x894157);};}exports['index']=function(_0x269c33,_0x40e927){var _0x5e8ff5={},_0x43bcd0={},_0x41ecd5={'count':0x0,'rows':[]};var _0x330471=_['map'](db[_0x6327('0x2d')][_0x6327('0x2e')],function(_0x1066d9){return{'name':_0x1066d9[_0x6327('0x2f')],'type':_0x1066d9['type'][_0x6327('0x30')]};});_0x43bcd0['model']=_['map'](_0x330471,_0x6327('0x2b'));_0x43bcd0[_0x6327('0x31')]=_[_0x6327('0x32')](_0x269c33[_0x6327('0x31')]);_0x43bcd0['filters']=_[_0x6327('0x33')](_0x43bcd0[_0x6327('0x34')],_0x43bcd0[_0x6327('0x31')]);_0x5e8ff5[_0x6327('0x35')]=_['intersection'](_0x43bcd0[_0x6327('0x34')],qs[_0x6327('0x36')](_0x269c33[_0x6327('0x31')]['fields']));_0x5e8ff5[_0x6327('0x35')]=_0x5e8ff5[_0x6327('0x35')][_0x6327('0x37')]?_0x5e8ff5['attributes']:_0x43bcd0['model'];if(!_0x269c33[_0x6327('0x31')]['hasOwnProperty'](_0x6327('0x38'))){_0x5e8ff5['limit']=qs[_0x6327('0x1d')](_0x269c33[_0x6327('0x31')][_0x6327('0x1d')]);_0x5e8ff5[_0x6327('0x1b')]=qs[_0x6327('0x1b')](_0x269c33[_0x6327('0x31')]['offset']);}_0x5e8ff5[_0x6327('0x39')]=qs[_0x6327('0x3a')](_0x269c33[_0x6327('0x31')][_0x6327('0x3a')]);_0x5e8ff5['where']=qs['filters'](_[_0x6327('0x3b')](_0x269c33[_0x6327('0x31')],_0x43bcd0[_0x6327('0x3c')]),_0x330471);if(_0x269c33[_0x6327('0x31')][_0x6327('0x3d')]){_0x5e8ff5['where']=_[_0x6327('0x3e')](_0x5e8ff5[_0x6327('0x3f')],{'$or':_[_0x6327('0x40')](_0x330471,function(_0x10b988){if(_0x10b988[_0x6327('0x41')]!=='VIRTUAL'){var _0x49a887={};_0x49a887[_0x10b988[_0x6327('0x2b')]]={'$like':'%'+_0x269c33['query'][_0x6327('0x3d')]+'%'};return _0x49a887;}})});}_0x5e8ff5=_[_0x6327('0x3e')]({},_0x5e8ff5,_0x269c33[_0x6327('0x42')]);var _0x46b813={'where':_0x5e8ff5['where']};return db[_0x6327('0x2d')][_0x6327('0x1e')](_0x46b813)[_0x6327('0x26')](function(_0x592f0e){_0x41ecd5[_0x6327('0x1e')]=_0x592f0e;if(_0x269c33[_0x6327('0x31')]['includeAll']){_0x5e8ff5[_0x6327('0x43')]=[{'all':!![]}];}return db[_0x6327('0x2d')][_0x6327('0x44')](_0x5e8ff5);})[_0x6327('0x26')](function(_0xab88fb){_0x41ecd5[_0x6327('0x45')]=_0xab88fb;return _0x41ecd5;})[_0x6327('0x26')](respondWithFilteredResult(_0x40e927,_0x5e8ff5))[_0x6327('0x46')](handleError(_0x40e927,null));};exports[_0x6327('0x47')]=function(_0xc73e4a,_0x446f7c){var _0x3550c9={'raw':![],'where':{'id':_0xc73e4a[_0x6327('0x48')]['id']}},_0x115ed4={};_0x115ed4[_0x6327('0x34')]=_[_0x6327('0x32')](db[_0x6327('0x2d')][_0x6327('0x2e')]);_0x115ed4['query']=_[_0x6327('0x32')](_0xc73e4a[_0x6327('0x31')]);_0x115ed4['filters']=_['intersection'](_0x115ed4['model'],_0x115ed4[_0x6327('0x31')]);_0x3550c9[_0x6327('0x35')]=_['intersection'](_0x115ed4[_0x6327('0x34')],qs[_0x6327('0x36')](_0xc73e4a[_0x6327('0x31')][_0x6327('0x36')]));_0x3550c9[_0x6327('0x35')]=_0x3550c9[_0x6327('0x35')][_0x6327('0x37')]?_0x3550c9[_0x6327('0x35')]:_0x115ed4[_0x6327('0x34')];if(_0xc73e4a['query'][_0x6327('0x49')]){_0x3550c9[_0x6327('0x43')]=[{'all':!![]}];}_0x3550c9=_[_0x6327('0x3e')]({},_0x3550c9,_0xc73e4a['options']);return db[_0x6327('0x2d')][_0x6327('0x4a')](_0x3550c9)[_0x6327('0x26')](handleEntityNotFound(_0x446f7c,null))[_0x6327('0x26')](respondWithResult(_0x446f7c,null))['catch'](handleError(_0x446f7c,null));};exports[_0x6327('0x4b')]=function(_0x317edf,_0x3fc622){return db[_0x6327('0x2d')][_0x6327('0x4b')](_0x317edf[_0x6327('0x4c')],{})[_0x6327('0x26')](function(_0x33e8d3){var _0x11030e=_0x317edf[_0x6327('0x4d')][_0x6327('0x4e')]({'plain':!![]});if(!_0x11030e)throw new Error(_0x6327('0x4f'));if(_0x11030e[_0x6327('0x50')]===_0x6327('0x4d')){var _0x5e664d=_0x33e8d3['get']({'plain':!![]});var _0x1f95b6=_0x6327('0x28');return db[_0x6327('0x51')][_0x6327('0x4a')]({'where':{'name':_0x1f95b6,'userProfileId':_0x11030e[_0x6327('0x52')]},'raw':!![]})[_0x6327('0x26')](function(_0xc07c32){if(_0xc07c32&&_0xc07c32[_0x6327('0x53')]===0x0){return db[_0x6327('0x54')][_0x6327('0x4b')]({'name':_0x5e664d[_0x6327('0x2b')],'resourceId':_0x5e664d['id'],'type':_0xc07c32[_0x6327('0x2b')],'sectionId':_0xc07c32['id']},{})[_0x6327('0x26')](function(){return _0x33e8d3;});}else{return _0x33e8d3;}})[_0x6327('0x46')](function(_0x5daaed){logger[_0x6327('0x29')](_0x6327('0x55'),_0x5daaed);throw _0x5daaed;});}return _0x33e8d3;})[_0x6327('0x26')](respondWithResult(_0x3fc622,0xc9))[_0x6327('0x46')](handleError(_0x3fc622,null));};exports['clone']=function(_0x3e2b4f,_0x2ad46b){var _0x12862d={'where':{'id':_0x3e2b4f[_0x6327('0x48')]['id']}},_0x1bf90e={};_0x1bf90e['model']=_[_0x6327('0x32')](db['Campaign'][_0x6327('0x2e')]);_0x12862d[_0x6327('0x35')]=_[_0x6327('0x33')](_0x1bf90e[_0x6327('0x34')],qs[_0x6327('0x36')](_0x3e2b4f[_0x6327('0x31')]['fields']));_0x12862d[_0x6327('0x35')]=_0x12862d[_0x6327('0x35')]['length']?_0x12862d[_0x6327('0x35')]:_0x1bf90e[_0x6327('0x34')];if(_0x3e2b4f[_0x6327('0x31')][_0x6327('0x49')]){_0x12862d[_0x6327('0x43')]=[{'all':!![]}];}_0x12862d=_[_0x6327('0x3e')]({},_0x12862d,_0x3e2b4f[_0x6327('0x42')]);return db[_0x6327('0x2d')]['find'](_0x12862d)[_0x6327('0x26')](handleEntityNotFound(_0x2ad46b,null))[_0x6327('0x26')](function(_0x46c6bd){if(_0x46c6bd){var _0x2188c2=_0x46c6bd[_0x6327('0x4e')]({'plain':!![]});_0x2188c2=qs[_0x6327('0x56')](_0x2188c2,['id','createdAt',_0x6327('0x57')]);_0x3e2b4f['body']=_[_0x6327('0x56')](_0x3e2b4f[_0x6327('0x4c')],['id',_0x6327('0x58'),_0x6327('0x57')]);return db[_0x6327('0x2d')][_0x6327('0x4b')](_[_0x6327('0x3e')](_0x2188c2,_0x3e2b4f[_0x6327('0x4c')]),{'include':_0x3e2b4f[_0x6327('0x31')][_0x6327('0x49')]?[{'all':!![]}]:undefined})[_0x6327('0x26')](function(_0x36f28a){var _0x3f0115=_0x3e2b4f['user'][_0x6327('0x4e')]({'plain':!![]});if(!_0x3f0115)throw new Error(_0x6327('0x4f'));if(_0x3f0115[_0x6327('0x50')]==='user'){var _0xbf5d09=_0x36f28a[_0x6327('0x4e')]({'plain':!![]});var _0x57ca83='IvrCampaigns';return db['UserProfileSection']['find']({'where':{'name':_0x57ca83,'userProfileId':_0x3f0115[_0x6327('0x52')]},'raw':!![]})[_0x6327('0x26')](function(_0x36f8c2){if(_0x36f8c2&&_0x36f8c2[_0x6327('0x53')]===0x0){return db[_0x6327('0x54')]['create']({'name':_0xbf5d09['name'],'resourceId':_0xbf5d09['id'],'type':_0x36f8c2[_0x6327('0x2b')],'sectionId':_0x36f8c2['id']},{})[_0x6327('0x26')](function(){return _0x36f28a;});}else{return _0x36f28a;}})['catch'](function(_0x28f13e){logger[_0x6327('0x29')](_0x6327('0x55'),_0x28f13e);throw _0x28f13e;});}return _0x36f28a;});}})[_0x6327('0x26')](respondWithResult(_0x2ad46b,0xc9))[_0x6327('0x46')](handleError(_0x2ad46b,null));};exports[_0x6327('0x25')]=function(_0x4b4031,_0x5446db){if(_0x4b4031['body']['id']){delete _0x4b4031[_0x6327('0x4c')]['id'];}return db[_0x6327('0x2d')]['find']({'where':{'id':_0x4b4031['params']['id']}})['then'](handleEntityNotFound(_0x5446db,null))[_0x6327('0x26')](saveUpdates(_0x4b4031[_0x6327('0x4c')],null))[_0x6327('0x26')](respondWithResult(_0x5446db,null))[_0x6327('0x46')](handleError(_0x5446db,null));};exports['destroy']=function(_0x3e66b5,_0x276fe1){return db[_0x6327('0x2d')]['find']({'where':{'id':_0x3e66b5['params']['id']}})['then'](handleEntityNotFound(_0x276fe1,null))[_0x6327('0x26')](removeEntity(_0x276fe1,null))[_0x6327('0x46')](handleError(_0x276fe1,null));};exports[_0x6327('0x59')]=function(_0x4c9e12,_0x513e06,_0x54326a){var _0x17b571={'raw':!![],'where':{}};var _0x5bbc4a={};var _0x1e2376={'count':0x0,'rows':[]};return db['Campaign'][_0x6327('0x5a')]({'where':{'id':_0x4c9e12[_0x6327('0x48')]['id']}})[_0x6327('0x26')](handleEntityNotFound(_0x513e06,null))['then'](function(_0x4bdeab){if(_0x4bdeab){_0x5bbc4a[_0x6327('0x34')]=_[_0x6327('0x32')](db['CmHopper'][_0x6327('0x2e')]);_0x5bbc4a[_0x6327('0x31')]=_[_0x6327('0x32')](_0x4c9e12['query']);_0x5bbc4a[_0x6327('0x3c')]=_['intersection'](_0x5bbc4a[_0x6327('0x34')],_0x5bbc4a[_0x6327('0x31')]);_0x17b571[_0x6327('0x35')]=_[_0x6327('0x33')](_0x5bbc4a[_0x6327('0x34')],qs[_0x6327('0x36')](_0x4c9e12[_0x6327('0x31')][_0x6327('0x36')]));_0x17b571['attributes']=_0x17b571[_0x6327('0x35')][_0x6327('0x37')]?_0x17b571[_0x6327('0x35')]:_0x5bbc4a[_0x6327('0x34')];if(!_0x4c9e12['query'][_0x6327('0x5b')](_0x6327('0x38'))){_0x17b571[_0x6327('0x1d')]=qs[_0x6327('0x1d')](_0x4c9e12['query'][_0x6327('0x1d')]);_0x17b571[_0x6327('0x1b')]=qs['offset'](_0x4c9e12[_0x6327('0x31')][_0x6327('0x1b')]);}_0x17b571['order']=qs[_0x6327('0x3a')](_0x4c9e12['query'][_0x6327('0x3a')]);_0x17b571[_0x6327('0x3f')]=qs[_0x6327('0x3c')](_['pick'](_0x4c9e12[_0x6327('0x31')],_0x5bbc4a['filters']));_0x17b571['where'][_0x6327('0x5c')]=_0x4bdeab['id'];if(_0x4c9e12['query'][_0x6327('0x3d')]){_0x17b571[_0x6327('0x3f')]=_[_0x6327('0x3e')](_0x17b571[_0x6327('0x3f')],{'$or':_[_0x6327('0x40')](_0x17b571[_0x6327('0x35')],function(_0x1b3a5e){var _0x29ee0f={};_0x29ee0f[_0x1b3a5e]={'$like':'%'+_0x4c9e12[_0x6327('0x31')][_0x6327('0x3d')]+'%'};return _0x29ee0f;})});}_0x17b571=_['merge']({},_0x17b571,_0x4c9e12[_0x6327('0x42')]);return db[_0x6327('0x5d')][_0x6327('0x1e')]({'where':_0x17b571['where']})['then'](function(_0x55645d){_0x1e2376['count']=_0x55645d;if(_0x4c9e12[_0x6327('0x31')][_0x6327('0x49')]){_0x17b571[_0x6327('0x43')]=[{'all':!![]}];}return db['CmHopper']['findAll'](_0x17b571);})[_0x6327('0x26')](function(_0x45bc3d){_0x1e2376[_0x6327('0x45')]=_0x45bc3d;return _0x1e2376;});}})[_0x6327('0x26')](respondWithFilteredResult(_0x513e06,_0x17b571))['catch'](handleError(_0x513e06,null));};exports[_0x6327('0x5e')]=function(_0x7d3f15,_0x4346b8,_0x3973dd){var _0x188557={'raw':!![],'where':{}};var _0x33b36f={};var _0x3ecb75={'count':0x0,'rows':[]};return db['Campaign'][_0x6327('0x5a')]({'where':{'id':_0x7d3f15['params']['id']}})[_0x6327('0x26')](handleEntityNotFound(_0x4346b8,null))[_0x6327('0x26')](function(_0x101a46){if(_0x101a46){_0x33b36f['model']=_[_0x6327('0x32')](db[_0x6327('0x5f')][_0x6327('0x2e')]);_0x33b36f[_0x6327('0x31')]=_[_0x6327('0x32')](_0x7d3f15['query']);_0x33b36f['filters']=_[_0x6327('0x33')](_0x33b36f[_0x6327('0x34')],_0x33b36f[_0x6327('0x31')]);_0x188557['attributes']=_[_0x6327('0x33')](_0x33b36f[_0x6327('0x34')],qs[_0x6327('0x36')](_0x7d3f15[_0x6327('0x31')]['fields']));_0x188557['attributes']=_0x188557[_0x6327('0x35')][_0x6327('0x37')]?_0x188557['attributes']:_0x33b36f['model'];if(!_0x7d3f15[_0x6327('0x31')][_0x6327('0x5b')](_0x6327('0x38'))){_0x188557[_0x6327('0x1d')]=qs[_0x6327('0x1d')](_0x7d3f15[_0x6327('0x31')][_0x6327('0x1d')]);_0x188557[_0x6327('0x1b')]=qs['offset'](_0x7d3f15['query'][_0x6327('0x1b')]);}_0x188557[_0x6327('0x39')]=qs[_0x6327('0x3a')](_0x7d3f15['query']['sort']);_0x188557['where']=qs[_0x6327('0x3c')](_['pick'](_0x7d3f15[_0x6327('0x31')],_0x33b36f['filters']));_0x188557['where']['CampaignId']=_0x101a46['id'];if(_0x7d3f15[_0x6327('0x31')]['filter']){_0x188557[_0x6327('0x3f')]=_[_0x6327('0x3e')](_0x188557[_0x6327('0x3f')],{'$or':_[_0x6327('0x40')](_0x188557['attributes'],function(_0x2936da){var _0x5e721b={};_0x5e721b[_0x2936da]={'$like':'%'+_0x7d3f15[_0x6327('0x31')][_0x6327('0x3d')]+'%'};return _0x5e721b;})});}_0x188557=_[_0x6327('0x3e')]({},_0x188557,_0x7d3f15[_0x6327('0x42')]);return db[_0x6327('0x5f')][_0x6327('0x1e')]({'where':_0x188557[_0x6327('0x3f')]})[_0x6327('0x26')](function(_0x52b63f){_0x3ecb75['count']=_0x52b63f;if(_0x7d3f15[_0x6327('0x31')][_0x6327('0x49')]){_0x188557[_0x6327('0x43')]=[{'all':!![]}];}return db[_0x6327('0x5f')][_0x6327('0x44')](_0x188557);})[_0x6327('0x26')](function(_0x561b1a){_0x3ecb75[_0x6327('0x45')]=_0x561b1a;return _0x3ecb75;});}})[_0x6327('0x26')](respondWithFilteredResult(_0x4346b8,_0x188557))[_0x6327('0x46')](handleError(_0x4346b8,null));};exports['getHopperFinals']=function(_0x59a5cc,_0x15a1dc,_0x424e54){var _0x35477c={'raw':!![],'where':{}};var _0x1193c5={};var _0x12726d={'count':0x0,'rows':[]};return db[_0x6327('0x2d')]['findOne']({'where':{'id':_0x59a5cc[_0x6327('0x48')]['id']}})[_0x6327('0x26')](handleEntityNotFound(_0x15a1dc,null))[_0x6327('0x26')](function(_0x40019b){if(_0x40019b){_0x1193c5[_0x6327('0x34')]=_[_0x6327('0x32')](db[_0x6327('0x60')]['rawAttributes']);_0x1193c5[_0x6327('0x31')]=_[_0x6327('0x32')](_0x59a5cc[_0x6327('0x31')]);_0x1193c5[_0x6327('0x3c')]=_[_0x6327('0x33')](_0x1193c5['model'],_0x1193c5['query']);_0x35477c[_0x6327('0x35')]=_[_0x6327('0x33')](_0x1193c5[_0x6327('0x34')],qs[_0x6327('0x36')](_0x59a5cc[_0x6327('0x31')][_0x6327('0x36')]));_0x35477c['attributes']=_0x35477c[_0x6327('0x35')][_0x6327('0x37')]?_0x35477c[_0x6327('0x35')]:_0x1193c5['model'];if(!_0x59a5cc[_0x6327('0x31')][_0x6327('0x5b')](_0x6327('0x38'))){_0x35477c[_0x6327('0x1d')]=qs['limit'](_0x59a5cc[_0x6327('0x31')][_0x6327('0x1d')]);_0x35477c[_0x6327('0x1b')]=qs[_0x6327('0x1b')](_0x59a5cc[_0x6327('0x31')][_0x6327('0x1b')]);}_0x35477c[_0x6327('0x39')]=qs[_0x6327('0x3a')](_0x59a5cc[_0x6327('0x31')]['sort']);_0x35477c[_0x6327('0x3f')]=qs['filters'](_[_0x6327('0x3b')](_0x59a5cc[_0x6327('0x31')],_0x1193c5['filters']));_0x35477c[_0x6327('0x3f')]['CampaignId']=_0x40019b['id'];if(_0x59a5cc[_0x6327('0x31')]['filter']){_0x35477c[_0x6327('0x3f')]=_['merge'](_0x35477c[_0x6327('0x3f')],{'$or':_['map'](_0x35477c[_0x6327('0x35')],function(_0xb46760){var _0x173560={};_0x173560[_0xb46760]={'$like':'%'+_0x59a5cc['query']['filter']+'%'};return _0x173560;})});}_0x35477c=_[_0x6327('0x3e')]({},_0x35477c,_0x59a5cc[_0x6327('0x42')]);return db['CmHopperFinal'][_0x6327('0x1e')]({'where':_0x35477c[_0x6327('0x3f')]})[_0x6327('0x26')](function(_0x5d6a16){_0x12726d[_0x6327('0x1e')]=_0x5d6a16;if(_0x59a5cc[_0x6327('0x31')]['includeAll']){_0x35477c['include']=[{'all':!![]}];}return db[_0x6327('0x60')][_0x6327('0x44')](_0x35477c);})[_0x6327('0x26')](function(_0x3f23c4){_0x12726d['rows']=_0x3f23c4;return _0x12726d;});}})[_0x6327('0x26')](respondWithFilteredResult(_0x15a1dc,_0x35477c))[_0x6327('0x46')](handleError(_0x15a1dc,null));};exports[_0x6327('0x61')]=function(_0x48645b,_0xf25a85,_0x18cba6){var _0x6c8c4c={'raw':!![],'where':{}};var _0x1b6b96={};var _0x254fdc={'count':0x0,'rows':[]};return db[_0x6327('0x2d')][_0x6327('0x5a')]({'where':{'id':_0x48645b[_0x6327('0x48')]['id']}})[_0x6327('0x26')](handleEntityNotFound(_0xf25a85,null))[_0x6327('0x26')](function(_0x43eae1){if(_0x43eae1){_0x1b6b96['model']=_[_0x6327('0x32')](db['CmHopperBlack'][_0x6327('0x2e')]);_0x1b6b96[_0x6327('0x31')]=_[_0x6327('0x32')](_0x48645b[_0x6327('0x31')]);_0x1b6b96[_0x6327('0x3c')]=_['intersection'](_0x1b6b96[_0x6327('0x34')],_0x1b6b96['query']);_0x6c8c4c[_0x6327('0x35')]=_[_0x6327('0x33')](_0x1b6b96[_0x6327('0x34')],qs[_0x6327('0x36')](_0x48645b[_0x6327('0x31')][_0x6327('0x36')]));_0x6c8c4c[_0x6327('0x35')]=_0x6c8c4c[_0x6327('0x35')][_0x6327('0x37')]?_0x6c8c4c[_0x6327('0x35')]:_0x1b6b96[_0x6327('0x34')];if(!_0x48645b[_0x6327('0x31')][_0x6327('0x5b')]('nolimit')){_0x6c8c4c[_0x6327('0x1d')]=qs['limit'](_0x48645b['query'][_0x6327('0x1d')]);_0x6c8c4c[_0x6327('0x1b')]=qs[_0x6327('0x1b')](_0x48645b[_0x6327('0x31')]['offset']);}_0x6c8c4c[_0x6327('0x39')]=qs['sort'](_0x48645b['query']['sort']);_0x6c8c4c['where']=qs[_0x6327('0x3c')](_['pick'](_0x48645b[_0x6327('0x31')],_0x1b6b96[_0x6327('0x3c')]));_0x6c8c4c[_0x6327('0x3f')]['CampaignId']=_0x43eae1['id'];if(_0x48645b[_0x6327('0x31')][_0x6327('0x3d')]){_0x6c8c4c[_0x6327('0x3f')]=_['merge'](_0x6c8c4c[_0x6327('0x3f')],{'$or':_[_0x6327('0x40')](_0x6c8c4c[_0x6327('0x35')],function(_0x267bdc){var _0x30e33c={};_0x30e33c[_0x267bdc]={'$like':'%'+_0x48645b[_0x6327('0x31')][_0x6327('0x3d')]+'%'};return _0x30e33c;})});}_0x6c8c4c=_[_0x6327('0x3e')]({},_0x6c8c4c,_0x48645b[_0x6327('0x42')]);return db[_0x6327('0x62')][_0x6327('0x1e')]({'where':_0x6c8c4c['where']})['then'](function(_0x2a225b){_0x254fdc[_0x6327('0x1e')]=_0x2a225b;if(_0x48645b[_0x6327('0x31')]['includeAll']){_0x6c8c4c['include']=[{'all':!![]}];}return db['CmHopperBlack'][_0x6327('0x44')](_0x6c8c4c);})['then'](function(_0x43381e){_0x254fdc[_0x6327('0x45')]=_0x43381e;return _0x254fdc;});}})['then'](respondWithFilteredResult(_0xf25a85,_0x6c8c4c))[_0x6327('0x46')](handleError(_0xf25a85,null));};exports[_0x6327('0x63')]=function(_0x2bb6e5,_0x59b7f0,_0x1c9921){var _0x3fed01={};var _0x345f6c={};var _0xd091e1;var _0x9f1c8d;return db[_0x6327('0x2d')][_0x6327('0x5a')]({'where':{'id':_0x2bb6e5['params']['id']}})[_0x6327('0x26')](handleEntityNotFound(_0x59b7f0,null))[_0x6327('0x26')](function(_0x27e847){if(_0x27e847){_0xd091e1=_0x27e847;_0x345f6c[_0x6327('0x34')]=_[_0x6327('0x32')](db[_0x6327('0x64')][_0x6327('0x2e')]);_0x345f6c['query']=_[_0x6327('0x32')](_0x2bb6e5[_0x6327('0x31')]);_0x345f6c[_0x6327('0x3c')]=_[_0x6327('0x33')](_0x345f6c[_0x6327('0x34')],_0x345f6c[_0x6327('0x31')]);_0x3fed01[_0x6327('0x35')]=_[_0x6327('0x33')](_0x345f6c[_0x6327('0x34')],qs[_0x6327('0x36')](_0x2bb6e5[_0x6327('0x31')][_0x6327('0x36')]));_0x3fed01[_0x6327('0x35')]=_0x3fed01['attributes']['length']?_0x3fed01[_0x6327('0x35')]:_0x345f6c[_0x6327('0x34')];_0x3fed01[_0x6327('0x39')]=qs[_0x6327('0x3a')](_0x2bb6e5[_0x6327('0x31')][_0x6327('0x3a')]);_0x3fed01[_0x6327('0x3f')]=qs[_0x6327('0x3c')](_[_0x6327('0x3b')](_0x2bb6e5[_0x6327('0x31')],_0x345f6c['filters']));if(_0x2bb6e5[_0x6327('0x31')][_0x6327('0x3d')]){_0x3fed01[_0x6327('0x3f')]=_[_0x6327('0x3e')](_0x3fed01[_0x6327('0x3f')],{'$or':_[_0x6327('0x40')](_0x3fed01[_0x6327('0x35')],function(_0x13abc5){var _0x518315={};_0x518315[_0x13abc5]={'$like':'%'+_0x2bb6e5[_0x6327('0x31')][_0x6327('0x3d')]+'%'};return _0x518315;})});}_0x3fed01=_[_0x6327('0x3e')]({},_0x3fed01,_0x2bb6e5['options']);return _0xd091e1[_0x6327('0x63')](_0x3fed01);}})[_0x6327('0x26')](function(_0x42d4ff){if(_0x42d4ff){_0x9f1c8d=_0x42d4ff[_0x6327('0x37')];if(!_0x2bb6e5[_0x6327('0x31')][_0x6327('0x5b')](_0x6327('0x38'))){_0x3fed01[_0x6327('0x1d')]=qs[_0x6327('0x1d')](_0x2bb6e5[_0x6327('0x31')]['limit']);_0x3fed01[_0x6327('0x1b')]=qs[_0x6327('0x1b')](_0x2bb6e5[_0x6327('0x31')][_0x6327('0x1b')]);}return _0xd091e1[_0x6327('0x63')](_0x3fed01);}})['then'](function(_0x48888c){if(_0x48888c){return _0x48888c?{'count':_0x9f1c8d,'rows':_0x48888c}:null;}})['then'](respondWithResult(_0x59b7f0,null))[_0x6327('0x46')](handleError(_0x59b7f0,null));};exports[_0x6327('0x65')]=function(_0x3f1526,_0x3cd50a,_0x718062){var _0x132990,_0x486571;var _0x56c2b0=[];var _0x364719=moment()[_0x6327('0x66')]('YYYY-MM-DD\x20HH:mm:ss');return db['Campaign'][_0x6327('0x4a')]({'where':{'id':_0x3f1526[_0x6327('0x48')]['id']}})[_0x6327('0x26')](handleEntityNotFound(_0x3cd50a,null))[_0x6327('0x26')](function(_0x594fb3){if(_0x594fb3){_0x486571=_0x594fb3;return _0x594fb3[_0x6327('0x65')](_0x3f1526[_0x6327('0x4c')][_0x6327('0x67')],_[_0x6327('0x56')](_0x3f1526[_0x6327('0x4c')],[_0x6327('0x67'),'id'])||{});}return null;})[_0x6327('0x68')](function(_0x9e2e85){var _0x4174e4;var _0x4fa038;_0x132990=_0x9e2e85||[];var _0x570605=[];if(_0x9e2e85){for(var _0x1aa3ba=0x0;_0x1aa3ba<_0x9e2e85[_0x6327('0x37')];_0x1aa3ba+=0x1){var _0x3534a9=_0x9e2e85[_0x1aa3ba]['get']({'plain':!![]});_0x486571['dialCheckDuplicateType']=_0x3f1526[_0x6327('0x4c')]['dialCheckDuplicateType']?_0x3f1526[_0x6327('0x4c')][_0x6327('0x69')]:_0x486571[_0x6327('0x69')];switch(_0x486571[_0x6327('0x69')]){case _0x6327('0x6a'):_0x4174e4=squel[_0x6327('0x6b')]()[_0x6327('0x6c')](_0x6327('0x6d'))[_0x6327('0x6e')]([_0x6327('0x6f'),_0x6327('0x70'),'ContactId',_0x6327('0x71'),_0x6327('0x5c'),_0x6327('0x58'),_0x6327('0x57')],squel['select']()[_0x6327('0x72')](_0x6327('0x6f'),_0x6327('0x6f'))[_0x6327('0x72')](_0x6327('0x73'),_0x6327('0x70'))[_0x6327('0x72')]('id','ContactId')[_0x6327('0x72')](_0x3534a9[_0x6327('0x74')][_0x6327('0x75')](),'ListId')[_0x6327('0x72')](_0x3f1526['params']['id'][_0x6327('0x75')](),_0x6327('0x5c'))[_0x6327('0x72')]('\x27'+_0x364719+'\x27','createdAt')[_0x6327('0x72')]('\x27'+_0x364719+'\x27',_0x6327('0x57'))[_0x6327('0x76')](_0x6327('0x77'))[_0x6327('0x3f')]('deletedAt\x20IS\x20NULL')[_0x6327('0x3f')]('ListId\x20=\x20?',_0x3534a9[_0x6327('0x74')][_0x6327('0x75')]())[_0x6327('0x3f')](_0x6327('0x78'))[_0x6327('0x3f')](_0x6327('0x79'),squel['select']()['field'](_0x6327('0x7a'))['from'](_0x6327('0x7b'))[_0x6327('0x3f')](_0x6327('0x7c'),_0x3f1526[_0x6327('0x48')]['id'][_0x6327('0x75')]()))[_0x6327('0x3f')]('phone\x20NOT\x20IN\x20(?)',squel[_0x6327('0x7d')]()['field']('COALESCE(phone,\x27\x27)')['from'](_0x6327('0x6d'))[_0x6327('0x3f')]('CampaignId\x20=\x20?',_0x3f1526[_0x6327('0x48')]['id'][_0x6327('0x75')]())))['toString']();break;case _0x6327('0x7e'):_0x4174e4=squel[_0x6327('0x6b')]()[_0x6327('0x6c')](_0x6327('0x6d'))[_0x6327('0x6e')]([_0x6327('0x6f'),_0x6327('0x70'),_0x6327('0x7f'),_0x6327('0x71'),_0x6327('0x5c'),_0x6327('0x58'),_0x6327('0x57')],squel[_0x6327('0x7d')]()[_0x6327('0x72')](_0x6327('0x6f'),_0x6327('0x6f'))[_0x6327('0x72')]('NOW()',_0x6327('0x70'))[_0x6327('0x72')]('id',_0x6327('0x7f'))[_0x6327('0x72')](_0x3534a9[_0x6327('0x74')][_0x6327('0x75')](),_0x6327('0x71'))[_0x6327('0x72')](_0x3f1526[_0x6327('0x48')]['id']['toString'](),_0x6327('0x5c'))[_0x6327('0x72')]('\x27'+_0x364719+'\x27','createdAt')[_0x6327('0x72')]('\x27'+_0x364719+'\x27','updatedAt')[_0x6327('0x76')](_0x6327('0x77'))[_0x6327('0x3f')]('deletedAt\x20IS\x20NULL')[_0x6327('0x3f')]('ListId\x20=\x20?',_0x3534a9[_0x6327('0x74')][_0x6327('0x75')]())[_0x6327('0x3f')]('phone\x20IS\x20NOT\x20NULL')[_0x6327('0x3f')](_0x6327('0x79'),squel[_0x6327('0x7d')]()[_0x6327('0x72')]('COALESCE(phone,\x27\x27)')['from']('cm_hopper')[_0x6327('0x3f')]('CampaignId\x20=\x20?',_0x3f1526['params']['id'][_0x6327('0x75')]())))[_0x6327('0x75')]();break;default:_0x4174e4=squel[_0x6327('0x6b')]()[_0x6327('0x6c')]('cm_hopper')['fromQuery']([_0x6327('0x6f'),'scheduledAt',_0x6327('0x7f'),_0x6327('0x71'),'CampaignId',_0x6327('0x58'),'updatedAt'],squel[_0x6327('0x7d')]()['field'](_0x6327('0x6f'),'phone')[_0x6327('0x72')](_0x6327('0x73'),_0x6327('0x70'))[_0x6327('0x72')]('id',_0x6327('0x7f'))[_0x6327('0x72')](_0x3534a9['CmListId'][_0x6327('0x75')](),_0x6327('0x71'))['field'](_0x3f1526['params']['id']['toString'](),_0x6327('0x5c'))['field']('\x27'+_0x364719+'\x27',_0x6327('0x58'))[_0x6327('0x72')]('\x27'+_0x364719+'\x27',_0x6327('0x57'))['from']('cm_contacts')['where'](_0x6327('0x80'))[_0x6327('0x3f')]('ListId\x20=\x20?',_0x3534a9['CmListId'][_0x6327('0x75')]())[_0x6327('0x3f')](_0x6327('0x78')))['toString']();}_0x4fa038=squel[_0x6327('0x6b')]()[_0x6327('0x6c')](_0x6327('0x81'))['fromQuery'](['cmHopperId',_0x6327('0x70'),_0x6327('0x6f'),_0x6327('0x82'),'createdAt','updatedAt'],squel[_0x6327('0x7d')]()[_0x6327('0x72')]('h.id','id')[_0x6327('0x72')](_0x6327('0x73'),'scheduledAt')[_0x6327('0x72')]('ci.item','phone')[_0x6327('0x72')](_0x6327('0x83'),_0x6327('0x82'))[_0x6327('0x72')]('\x27'+_0x364719+'\x27',_0x6327('0x58'))[_0x6327('0x72')]('\x27'+_0x364719+'\x27',_0x6327('0x57'))[_0x6327('0x76')](_0x6327('0x84'),'ci')[_0x6327('0x85')](_0x6327('0x6d'),'h','h.ContactId\x20=\x20ci.CmContactId')[_0x6327('0x3f')](_0x6327('0x86'),_0x3534a9[_0x6327('0x74')][_0x6327('0x75')]())[_0x6327('0x3f')](_0x6327('0x87'),_0x3f1526[_0x6327('0x48')]['id'][_0x6327('0x75')]())[_0x6327('0x3f')](_0x6327('0x88'),_0x364719))[_0x6327('0x75')]();_0x570605[_0x6327('0x89')](db[_0x6327('0x8a')]['query'](_0x4174e4));_0x56c2b0[_0x6327('0x89')](db[_0x6327('0x8a')][_0x6327('0x31')](_0x4fa038));}return BPromise[_0x6327('0x8b')](_0x570605);}})['then'](function(){return BPromise[_0x6327('0x8b')](_0x56c2b0);})[_0x6327('0x26')](function(){return _0x132990;})[_0x6327('0x26')](respondWithResult(_0x3cd50a,null))[_0x6327('0x46')](handleError(_0x3cd50a,null));};exports[_0x6327('0x8c')]=function(_0x1a719a,_0x13a38c,_0x457343){return db[_0x6327('0x2d')][_0x6327('0x4a')]({'where':{'id':_0x1a719a[_0x6327('0x48')]['id']}})[_0x6327('0x26')](handleEntityNotFound(_0x13a38c,null))[_0x6327('0x26')](function(_0xdad37e){if(_0xdad37e){return _0xdad37e[_0x6327('0x8c')](_0x1a719a[_0x6327('0x31')][_0x6327('0x67')]);}})[_0x6327('0x26')](function(_0x1f4b95){if(_0x1f4b95){return db[_0x6327('0x5d')][_0x6327('0x27')]({'where':{'ListId':_0x1a719a[_0x6327('0x31')][_0x6327('0x67')],'CampaignId':_0x1a719a[_0x6327('0x48')]['id']}})[_0x6327('0x26')](function(){return _0x1f4b95;});}})[_0x6327('0x26')](respondWithStatusCode(_0x13a38c,null))[_0x6327('0x46')](handleError(_0x13a38c,null));};exports[_0x6327('0x8d')]=function(_0x49975c,_0x6546a9,_0x526d09){var _0x26582e={};var _0x4f0579={};var _0x4ec482;var _0xf593bf;return db[_0x6327('0x2d')][_0x6327('0x5a')]({'where':{'id':_0x49975c[_0x6327('0x48')]['id']}})[_0x6327('0x26')](handleEntityNotFound(_0x6546a9,null))[_0x6327('0x26')](function(_0xaee17e){if(_0xaee17e){_0x4ec482=_0xaee17e;_0x4f0579[_0x6327('0x34')]=_[_0x6327('0x32')](db[_0x6327('0x64')][_0x6327('0x2e')]);_0x4f0579[_0x6327('0x31')]=_[_0x6327('0x32')](_0x49975c[_0x6327('0x31')]);_0x4f0579['filters']=_[_0x6327('0x33')](_0x4f0579[_0x6327('0x34')],_0x4f0579[_0x6327('0x31')]);_0x26582e['attributes']=_['intersection'](_0x4f0579['model'],qs['fields'](_0x49975c[_0x6327('0x31')][_0x6327('0x36')]));_0x26582e[_0x6327('0x35')]=_0x26582e['attributes'][_0x6327('0x37')]?_0x26582e[_0x6327('0x35')]:_0x4f0579[_0x6327('0x34')];_0x26582e[_0x6327('0x39')]=qs[_0x6327('0x3a')](_0x49975c[_0x6327('0x31')][_0x6327('0x3a')]);_0x26582e[_0x6327('0x3f')]=qs[_0x6327('0x3c')](_[_0x6327('0x3b')](_0x49975c[_0x6327('0x31')],_0x4f0579[_0x6327('0x3c')]));if(_0x49975c[_0x6327('0x31')][_0x6327('0x3d')]){_0x26582e[_0x6327('0x3f')]=_[_0x6327('0x3e')](_0x26582e[_0x6327('0x3f')],{'$or':_[_0x6327('0x40')](_0x26582e[_0x6327('0x35')],function(_0x3d7eea){var _0x30f233={};_0x30f233[_0x3d7eea]={'$like':'%'+_0x49975c[_0x6327('0x31')][_0x6327('0x3d')]+'%'};return _0x30f233;})});}_0x26582e=_[_0x6327('0x3e')]({},_0x26582e,_0x49975c[_0x6327('0x42')]);return _0x4ec482[_0x6327('0x8d')](_0x26582e);}})[_0x6327('0x26')](function(_0x21df66){if(_0x21df66){_0xf593bf=_0x21df66[_0x6327('0x37')];if(!_0x49975c[_0x6327('0x31')][_0x6327('0x5b')]('nolimit')){_0x26582e['limit']=qs[_0x6327('0x1d')](_0x49975c[_0x6327('0x31')]['limit']);_0x26582e[_0x6327('0x1b')]=qs['offset'](_0x49975c[_0x6327('0x31')]['offset']);}return _0x4ec482[_0x6327('0x8d')](_0x26582e);}})[_0x6327('0x26')](function(_0x52c67a){if(_0x52c67a){return _0x52c67a?{'count':_0xf593bf,'rows':_0x52c67a}:null;}})['then'](respondWithResult(_0x6546a9,null))[_0x6327('0x46')](handleError(_0x6546a9,null));};exports[_0x6327('0x8e')]=function(_0x4e7082,_0x497d7f,_0x3f5ddc){var _0x40047b,_0xf8d14c;var _0x431412=[];var _0x3f1690=moment()[_0x6327('0x66')]('YYYY-MM-DD\x20HH:mm:ss');return db[_0x6327('0x2d')][_0x6327('0x4a')]({'where':{'id':_0x4e7082[_0x6327('0x48')]['id']}})[_0x6327('0x26')](handleEntityNotFound(_0x497d7f,null))[_0x6327('0x26')](function(_0x4bf469){if(_0x4bf469){_0xf8d14c=_0x4bf469;return _0x4bf469['addBlackLists'](_0x4e7082['body'][_0x6327('0x67')],_['omit'](_0x4e7082[_0x6327('0x4c')],['ids','id'])||{});}return null;})[_0x6327('0x68')](function(_0x2e28c7){var _0x464324;var _0x86039;_0x40047b=_0x2e28c7||[];var _0x2980d1=[];if(_0x2e28c7){for(var _0x589d31=0x0;_0x589d31<_0x2e28c7[_0x6327('0x37')];_0x589d31+=0x1){var _0x2d6ed2=_0x2e28c7[_0x589d31][_0x6327('0x4e')]({'plain':!![]});_0x464324=squel[_0x6327('0x6b')]()['into']('cm_hopper_black')[_0x6327('0x6e')]([_0x6327('0x6f'),_0x6327('0x7f'),_0x6327('0x71'),_0x6327('0x5c'),_0x6327('0x58'),_0x6327('0x57')],squel['select']()[_0x6327('0x72')](_0x6327('0x6f'),_0x6327('0x6f'))['field']('id','ContactId')[_0x6327('0x72')](_0x2d6ed2[_0x6327('0x74')][_0x6327('0x75')](),'ListId')['field'](_0x4e7082[_0x6327('0x48')]['id'][_0x6327('0x75')](),'CampaignId')[_0x6327('0x72')](_0x6327('0x73'),'createdAt')[_0x6327('0x72')](_0x6327('0x73'),_0x6327('0x57'))[_0x6327('0x76')](_0x6327('0x77'))[_0x6327('0x3f')](_0x6327('0x80'))[_0x6327('0x3f')](_0x6327('0x8f'),_0x2d6ed2[_0x6327('0x74')][_0x6327('0x75')]())[_0x6327('0x3f')](_0x6327('0x78')))[_0x6327('0x75')]();_0x2980d1[_0x6327('0x89')](db[_0x6327('0x8a')][_0x6327('0x31')](_0x464324));}return BPromise[_0x6327('0x8b')](_0x2980d1);}})['then'](function(){return _0x40047b;})[_0x6327('0x26')](respondWithResult(_0x497d7f,null))['catch'](handleError(_0x497d7f,null));};exports['removeBlackLists']=function(_0x458d83,_0x440bb7,_0xb44077){return db[_0x6327('0x2d')]['find']({'where':{'id':_0x458d83['params']['id']}})[_0x6327('0x26')](handleEntityNotFound(_0x440bb7,null))[_0x6327('0x26')](function(_0x1dc095){if(_0x1dc095){return _0x1dc095[_0x6327('0x90')](_0x458d83['query'][_0x6327('0x67')]);}})[_0x6327('0x26')](function(_0x593782){if(_0x593782){return db['CmHopperBlack']['destroy']({'where':{'ListId':_0x458d83[_0x6327('0x31')][_0x6327('0x67')],'CampaignId':_0x458d83[_0x6327('0x48')]['id']}})[_0x6327('0x26')](function(){return _0x593782;});}})[_0x6327('0x26')](respondWithStatusCode(_0x440bb7,null))[_0x6327('0x46')](handleError(_0x440bb7,null));};
\ No newline at end of file
+var _0xed7a=['join','h.ContactId\x20=\x20ci.CmContactId','h.ListId\x20=\x20?','h.CampaignId=?','sequelize','push','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','IvrCampaigns','UserProfileResource','name','send','index','map','Campaign','fieldName','type','key','query','keys','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','options','include','findAll','rows','catch','show','params','rawAttributes','length','includeAll','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','omit','createdAt','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','getHoppers','CmHopper','pick','CampaignId','getHopperHistories','findOne','CmHopperHistory','getHopperFinals','CmHopperFinal','CmHopperBlack','getLists','CmList','addLists','format','YYYY-MM-DD\x20HH:mm:ss','ids','spread','dialCheckDuplicateType','always','phone','scheduledAt','ContactId','ListId','select','field','NOW()','toString','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','CmListId','phone\x20IS\x20NOT\x20NULL','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','phone\x20NOT\x20IN\x20(?)','COALESCE(phone,\x27\x27)','cm_hopper','CampaignId\x20=\x20?','insert','into','fromQuery','cm_hopper_additional_phones','OrderBy','h.id','ci.item','ci.OrderBY','cm_contact_has_items'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0xed7a,0x9f));var _0xaed7=function(_0x22cd35,_0x16f6f5){_0x22cd35=_0x22cd35-0x0;var _0x2782b7=_0xed7a[_0x22cd35];return _0x2782b7;};'use strict';var emlformat=require(_0xaed7('0x0'));var rimraf=require(_0xaed7('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xaed7('0x2'));var rp=require(_0xaed7('0x3'));var moment=require(_0xaed7('0x4'));var BPromise=require(_0xaed7('0x5'));var Mustache=require(_0xaed7('0x6'));var util=require('util');var path=require(_0xaed7('0x7'));var sox=require(_0xaed7('0x8'));var csv=require(_0xaed7('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xaed7('0xa'));var _=require(_0xaed7('0xb'));var squel=require('squel');var crypto=require(_0xaed7('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xaed7('0x9'));var querystring=require(_0xaed7('0xd'));var Papa=require(_0xaed7('0xe'));var Redis=require(_0xaed7('0xf'));var authService=require(_0xaed7('0x10'));var qs=require(_0xaed7('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xaed7('0x12'));var logger=require(_0xaed7('0x13'))(_0xaed7('0x14'));var utils=require('../../config/utils');var config=require(_0xaed7('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1f4f5b,_0x4f32b2){_0x4f32b2=_0x4f32b2||0xcc;return function(_0x596829){if(_0x596829){return _0x1f4f5b[_0xaed7('0x16')](_0x4f32b2);}return _0x1f4f5b[_0xaed7('0x17')](_0x4f32b2)[_0xaed7('0x18')]();};}function respondWithResult(_0x172b39,_0x1ae1ce){_0x1ae1ce=_0x1ae1ce||0xc8;return function(_0x197ed2){if(_0x197ed2){return _0x172b39['status'](_0x1ae1ce)[_0xaed7('0x19')](_0x197ed2);}};}function respondWithFilteredResult(_0x21a790,_0x39c6f8){return function(_0x594e65){if(_0x594e65){var _0x793d1a=typeof _0x39c6f8[_0xaed7('0x1a')]===_0xaed7('0x1b')&&typeof _0x39c6f8[_0xaed7('0x1c')]===_0xaed7('0x1b');var _0x3517fd=_0x594e65['count'];var _0x189936=_0x793d1a?0x0:_0x39c6f8[_0xaed7('0x1a')];var _0x17f6da=_0x793d1a?_0x594e65[_0xaed7('0x1d')]:_0x39c6f8[_0xaed7('0x1a')]+_0x39c6f8[_0xaed7('0x1c')];var _0x809daf;if(_0x17f6da>=_0x3517fd){_0x17f6da=_0x3517fd;_0x809daf=0xc8;}else{_0x809daf=0xce;}_0x21a790[_0xaed7('0x17')](_0x809daf);return _0x21a790[_0xaed7('0x1e')](_0xaed7('0x1f'),_0x189936+'-'+_0x17f6da+'/'+_0x3517fd)['json'](_0x594e65);}return null;};}function patchUpdates(_0x388980){return function(_0x32251b){try{jsonpatch[_0xaed7('0x20')](_0x32251b,_0x388980,!![]);}catch(_0x4b9ec1){return BPromise[_0xaed7('0x21')](_0x4b9ec1);}return _0x32251b[_0xaed7('0x22')]();};}function saveUpdates(_0x26bf1f,_0x44ea86){return function(_0x10f123){if(_0x10f123){return _0x10f123[_0xaed7('0x23')](_0x26bf1f)[_0xaed7('0x24')](function(_0x49b19e){return _0x49b19e;});}return null;};}function removeEntity(_0x1eb060,_0x41f67c){return function(_0x2665b1){if(_0x2665b1){return _0x2665b1[_0xaed7('0x25')]()[_0xaed7('0x24')](function(){var _0x24448e=_0x2665b1[_0xaed7('0x26')]({'plain':!![]});var _0x12ca40=_0xaed7('0x27');return db[_0xaed7('0x28')][_0xaed7('0x25')]({'where':{'type':_0x12ca40,'resourceId':_0x24448e['id']}})['then'](function(){return _0x2665b1;});})['then'](function(){_0x1eb060['status'](0xcc)[_0xaed7('0x18')]();});}};}function handleEntityNotFound(_0x3e05f5,_0x454444){return function(_0x4f6786){if(!_0x4f6786){_0x3e05f5[_0xaed7('0x16')](0x194);}return _0x4f6786;};}function handleError(_0x416849,_0x53a114){_0x53a114=_0x53a114||0x1f4;return function(_0x49e06d){logger['error'](_0x49e06d['stack']);if(_0x49e06d[_0xaed7('0x29')]){delete _0x49e06d['name'];}_0x416849[_0xaed7('0x17')](_0x53a114)[_0xaed7('0x2a')](_0x49e06d);};}exports[_0xaed7('0x2b')]=function(_0x2523aa,_0x16fdb4){var _0x572b9a={},_0x59e36b={},_0x2154c7={'count':0x0,'rows':[]};var _0x13a936=_[_0xaed7('0x2c')](db[_0xaed7('0x2d')]['rawAttributes'],function(_0x38b171){return{'name':_0x38b171[_0xaed7('0x2e')],'type':_0x38b171[_0xaed7('0x2f')][_0xaed7('0x30')]};});_0x59e36b['model']=_[_0xaed7('0x2c')](_0x13a936,_0xaed7('0x29'));_0x59e36b[_0xaed7('0x31')]=_[_0xaed7('0x32')](_0x2523aa['query']);_0x59e36b['filters']=_[_0xaed7('0x33')](_0x59e36b[_0xaed7('0x34')],_0x59e36b[_0xaed7('0x31')]);_0x572b9a[_0xaed7('0x35')]=_['intersection'](_0x59e36b['model'],qs[_0xaed7('0x36')](_0x2523aa['query'][_0xaed7('0x36')]));_0x572b9a[_0xaed7('0x35')]=_0x572b9a['attributes']['length']?_0x572b9a[_0xaed7('0x35')]:_0x59e36b['model'];if(!_0x2523aa[_0xaed7('0x31')][_0xaed7('0x37')](_0xaed7('0x38'))){_0x572b9a[_0xaed7('0x1c')]=qs[_0xaed7('0x1c')](_0x2523aa[_0xaed7('0x31')]['limit']);_0x572b9a[_0xaed7('0x1a')]=qs[_0xaed7('0x1a')](_0x2523aa['query'][_0xaed7('0x1a')]);}_0x572b9a[_0xaed7('0x39')]=qs[_0xaed7('0x3a')](_0x2523aa[_0xaed7('0x31')][_0xaed7('0x3a')]);_0x572b9a[_0xaed7('0x3b')]=qs[_0xaed7('0x3c')](_['pick'](_0x2523aa['query'],_0x59e36b[_0xaed7('0x3c')]),_0x13a936);if(_0x2523aa[_0xaed7('0x31')][_0xaed7('0x3d')]){_0x572b9a[_0xaed7('0x3b')]=_[_0xaed7('0x3e')](_0x572b9a['where'],{'$or':_[_0xaed7('0x2c')](_0x13a936,function(_0x4953d2){if(_0x4953d2['type']!=='VIRTUAL'){var _0xa965f3={};_0xa965f3[_0x4953d2[_0xaed7('0x29')]]={'$like':'%'+_0x2523aa['query'][_0xaed7('0x3d')]+'%'};return _0xa965f3;}})});}_0x572b9a=_[_0xaed7('0x3e')]({},_0x572b9a,_0x2523aa[_0xaed7('0x3f')]);var _0x213346={'where':_0x572b9a[_0xaed7('0x3b')]};return db[_0xaed7('0x2d')][_0xaed7('0x1d')](_0x213346)[_0xaed7('0x24')](function(_0x5c9dc3){_0x2154c7[_0xaed7('0x1d')]=_0x5c9dc3;if(_0x2523aa[_0xaed7('0x31')]['includeAll']){_0x572b9a[_0xaed7('0x40')]=[{'all':!![]}];}return db[_0xaed7('0x2d')][_0xaed7('0x41')](_0x572b9a);})['then'](function(_0xa63970){_0x2154c7[_0xaed7('0x42')]=_0xa63970;return _0x2154c7;})[_0xaed7('0x24')](respondWithFilteredResult(_0x16fdb4,_0x572b9a))[_0xaed7('0x43')](handleError(_0x16fdb4,null));};exports[_0xaed7('0x44')]=function(_0x286217,_0x2e6fb5){var _0x2ee71c={'raw':![],'where':{'id':_0x286217[_0xaed7('0x45')]['id']}},_0x360160={};_0x360160[_0xaed7('0x34')]=_[_0xaed7('0x32')](db[_0xaed7('0x2d')][_0xaed7('0x46')]);_0x360160[_0xaed7('0x31')]=_[_0xaed7('0x32')](_0x286217[_0xaed7('0x31')]);_0x360160[_0xaed7('0x3c')]=_[_0xaed7('0x33')](_0x360160[_0xaed7('0x34')],_0x360160[_0xaed7('0x31')]);_0x2ee71c[_0xaed7('0x35')]=_['intersection'](_0x360160['model'],qs[_0xaed7('0x36')](_0x286217['query']['fields']));_0x2ee71c[_0xaed7('0x35')]=_0x2ee71c[_0xaed7('0x35')][_0xaed7('0x47')]?_0x2ee71c[_0xaed7('0x35')]:_0x360160[_0xaed7('0x34')];if(_0x286217['query'][_0xaed7('0x48')]){_0x2ee71c[_0xaed7('0x40')]=[{'all':!![]}];}_0x2ee71c=_[_0xaed7('0x3e')]({},_0x2ee71c,_0x286217['options']);return db[_0xaed7('0x2d')][_0xaed7('0x49')](_0x2ee71c)[_0xaed7('0x24')](handleEntityNotFound(_0x2e6fb5,null))[_0xaed7('0x24')](respondWithResult(_0x2e6fb5,null))[_0xaed7('0x43')](handleError(_0x2e6fb5,null));};exports[_0xaed7('0x4a')]=function(_0x401699,_0x35e4bc){return db[_0xaed7('0x2d')][_0xaed7('0x4a')](_0x401699[_0xaed7('0x4b')],{})['then'](function(_0x3ce28e){var _0x22055c=_0x401699[_0xaed7('0x4c')]['get']({'plain':!![]});if(!_0x22055c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x22055c[_0xaed7('0x4d')]===_0xaed7('0x4c')){var _0x11e988=_0x3ce28e[_0xaed7('0x26')]({'plain':!![]});var _0x542708=_0xaed7('0x27');return db[_0xaed7('0x4e')][_0xaed7('0x49')]({'where':{'name':_0x542708,'userProfileId':_0x22055c[_0xaed7('0x4f')]},'raw':!![]})[_0xaed7('0x24')](function(_0x29f22c){if(_0x29f22c&&_0x29f22c[_0xaed7('0x50')]===0x0){return db[_0xaed7('0x28')][_0xaed7('0x4a')]({'name':_0x11e988[_0xaed7('0x29')],'resourceId':_0x11e988['id'],'type':_0x29f22c[_0xaed7('0x29')],'sectionId':_0x29f22c['id']},{})['then'](function(){return _0x3ce28e;});}else{return _0x3ce28e;}})[_0xaed7('0x43')](function(_0x4b43b3){logger[_0xaed7('0x51')](_0xaed7('0x52'),_0x4b43b3);throw _0x4b43b3;});}return _0x3ce28e;})['then'](respondWithResult(_0x35e4bc,0xc9))['catch'](handleError(_0x35e4bc,null));};exports['clone']=function(_0x1e0ae3,_0xadf91c){var _0x49dfd9={'where':{'id':_0x1e0ae3['params']['id']}},_0x3473fd={};_0x3473fd[_0xaed7('0x34')]=_['keys'](db[_0xaed7('0x2d')][_0xaed7('0x46')]);_0x49dfd9['attributes']=_[_0xaed7('0x33')](_0x3473fd['model'],qs[_0xaed7('0x36')](_0x1e0ae3[_0xaed7('0x31')]['fields']));_0x49dfd9[_0xaed7('0x35')]=_0x49dfd9[_0xaed7('0x35')][_0xaed7('0x47')]?_0x49dfd9[_0xaed7('0x35')]:_0x3473fd[_0xaed7('0x34')];if(_0x1e0ae3[_0xaed7('0x31')]['includeAll']){_0x49dfd9[_0xaed7('0x40')]=[{'all':!![]}];}_0x49dfd9=_[_0xaed7('0x3e')]({},_0x49dfd9,_0x1e0ae3[_0xaed7('0x3f')]);return db['Campaign'][_0xaed7('0x49')](_0x49dfd9)['then'](handleEntityNotFound(_0xadf91c,null))[_0xaed7('0x24')](function(_0x2d19b3){if(_0x2d19b3){var _0x1b5173=_0x2d19b3[_0xaed7('0x26')]({'plain':!![]});_0x1b5173=qs[_0xaed7('0x53')](_0x1b5173,['id',_0xaed7('0x54'),_0xaed7('0x55')]);_0x1e0ae3['body']=_['omit'](_0x1e0ae3[_0xaed7('0x4b')],['id','createdAt',_0xaed7('0x55')]);return db['Campaign'][_0xaed7('0x4a')](_[_0xaed7('0x3e')](_0x1b5173,_0x1e0ae3[_0xaed7('0x4b')]),{'include':_0x1e0ae3['query'][_0xaed7('0x48')]?[{'all':!![]}]:undefined})[_0xaed7('0x24')](function(_0xe4ecf5){var _0x5b92a0=_0x1e0ae3[_0xaed7('0x4c')][_0xaed7('0x26')]({'plain':!![]});if(!_0x5b92a0)throw new Error(_0xaed7('0x56'));if(_0x5b92a0[_0xaed7('0x4d')]===_0xaed7('0x4c')){var _0xeaf825=_0xe4ecf5[_0xaed7('0x26')]({'plain':!![]});var _0x5753cc=_0xaed7('0x27');return db['UserProfileSection'][_0xaed7('0x49')]({'where':{'name':_0x5753cc,'userProfileId':_0x5b92a0[_0xaed7('0x4f')]},'raw':!![]})[_0xaed7('0x24')](function(_0x4106e7){if(_0x4106e7&&_0x4106e7[_0xaed7('0x50')]===0x0){return db[_0xaed7('0x28')][_0xaed7('0x4a')]({'name':_0xeaf825['name'],'resourceId':_0xeaf825['id'],'type':_0x4106e7[_0xaed7('0x29')],'sectionId':_0x4106e7['id']},{})['then'](function(){return _0xe4ecf5;});}else{return _0xe4ecf5;}})['catch'](function(_0x3ad019){logger['error'](_0xaed7('0x52'),_0x3ad019);throw _0x3ad019;});}return _0xe4ecf5;});}})['then'](respondWithResult(_0xadf91c,0xc9))[_0xaed7('0x43')](handleError(_0xadf91c,null));};exports[_0xaed7('0x23')]=function(_0x183d11,_0x425cd7){if(_0x183d11[_0xaed7('0x4b')]['id']){delete _0x183d11[_0xaed7('0x4b')]['id'];}return db[_0xaed7('0x2d')][_0xaed7('0x49')]({'where':{'id':_0x183d11['params']['id']}})['then'](handleEntityNotFound(_0x425cd7,null))['then'](saveUpdates(_0x183d11[_0xaed7('0x4b')],null))[_0xaed7('0x24')](respondWithResult(_0x425cd7,null))[_0xaed7('0x43')](handleError(_0x425cd7,null));};exports[_0xaed7('0x25')]=function(_0x1daffd,_0x1757bb){return db[_0xaed7('0x2d')]['find']({'where':{'id':_0x1daffd['params']['id']}})[_0xaed7('0x24')](handleEntityNotFound(_0x1757bb,null))['then'](removeEntity(_0x1757bb,null))[_0xaed7('0x43')](handleError(_0x1757bb,null));};exports[_0xaed7('0x57')]=function(_0x49bfe5,_0x45dfea,_0x17bec9){var _0x50d8e7={'raw':!![],'where':{}};var _0x592dda={};var _0x45f153={'count':0x0,'rows':[]};return db['Campaign']['findOne']({'where':{'id':_0x49bfe5[_0xaed7('0x45')]['id']}})[_0xaed7('0x24')](handleEntityNotFound(_0x45dfea,null))[_0xaed7('0x24')](function(_0x26c360){if(_0x26c360){_0x592dda[_0xaed7('0x34')]=_['keys'](db[_0xaed7('0x58')][_0xaed7('0x46')]);_0x592dda['query']=_[_0xaed7('0x32')](_0x49bfe5[_0xaed7('0x31')]);_0x592dda[_0xaed7('0x3c')]=_['intersection'](_0x592dda[_0xaed7('0x34')],_0x592dda[_0xaed7('0x31')]);_0x50d8e7[_0xaed7('0x35')]=_[_0xaed7('0x33')](_0x592dda[_0xaed7('0x34')],qs[_0xaed7('0x36')](_0x49bfe5['query']['fields']));_0x50d8e7[_0xaed7('0x35')]=_0x50d8e7['attributes'][_0xaed7('0x47')]?_0x50d8e7['attributes']:_0x592dda[_0xaed7('0x34')];if(!_0x49bfe5[_0xaed7('0x31')][_0xaed7('0x37')](_0xaed7('0x38'))){_0x50d8e7[_0xaed7('0x1c')]=qs[_0xaed7('0x1c')](_0x49bfe5[_0xaed7('0x31')][_0xaed7('0x1c')]);_0x50d8e7[_0xaed7('0x1a')]=qs['offset'](_0x49bfe5[_0xaed7('0x31')]['offset']);}_0x50d8e7[_0xaed7('0x39')]=qs[_0xaed7('0x3a')](_0x49bfe5[_0xaed7('0x31')]['sort']);_0x50d8e7['where']=qs[_0xaed7('0x3c')](_[_0xaed7('0x59')](_0x49bfe5['query'],_0x592dda[_0xaed7('0x3c')]));_0x50d8e7[_0xaed7('0x3b')][_0xaed7('0x5a')]=_0x26c360['id'];if(_0x49bfe5[_0xaed7('0x31')]['filter']){_0x50d8e7['where']=_['merge'](_0x50d8e7[_0xaed7('0x3b')],{'$or':_[_0xaed7('0x2c')](_0x50d8e7[_0xaed7('0x35')],function(_0x501aa8){var _0x5fd4ba={};_0x5fd4ba[_0x501aa8]={'$like':'%'+_0x49bfe5[_0xaed7('0x31')]['filter']+'%'};return _0x5fd4ba;})});}_0x50d8e7=_[_0xaed7('0x3e')]({},_0x50d8e7,_0x49bfe5[_0xaed7('0x3f')]);return db[_0xaed7('0x58')][_0xaed7('0x1d')]({'where':_0x50d8e7[_0xaed7('0x3b')]})[_0xaed7('0x24')](function(_0x25ca49){_0x45f153[_0xaed7('0x1d')]=_0x25ca49;if(_0x49bfe5[_0xaed7('0x31')][_0xaed7('0x48')]){_0x50d8e7[_0xaed7('0x40')]=[{'all':!![]}];}return db[_0xaed7('0x58')]['findAll'](_0x50d8e7);})['then'](function(_0x38cfe2){_0x45f153[_0xaed7('0x42')]=_0x38cfe2;return _0x45f153;});}})[_0xaed7('0x24')](respondWithFilteredResult(_0x45dfea,_0x50d8e7))[_0xaed7('0x43')](handleError(_0x45dfea,null));};exports[_0xaed7('0x5b')]=function(_0x5c6385,_0x5e2135,_0x4577b9){var _0x24a795={'raw':!![],'where':{}};var _0x4e88e5={};var _0x301c95={'count':0x0,'rows':[]};return db[_0xaed7('0x2d')][_0xaed7('0x5c')]({'where':{'id':_0x5c6385[_0xaed7('0x45')]['id']}})[_0xaed7('0x24')](handleEntityNotFound(_0x5e2135,null))[_0xaed7('0x24')](function(_0x518473){if(_0x518473){_0x4e88e5['model']=_[_0xaed7('0x32')](db['CmHopperHistory'][_0xaed7('0x46')]);_0x4e88e5[_0xaed7('0x31')]=_[_0xaed7('0x32')](_0x5c6385[_0xaed7('0x31')]);_0x4e88e5[_0xaed7('0x3c')]=_[_0xaed7('0x33')](_0x4e88e5[_0xaed7('0x34')],_0x4e88e5[_0xaed7('0x31')]);_0x24a795[_0xaed7('0x35')]=_['intersection'](_0x4e88e5[_0xaed7('0x34')],qs['fields'](_0x5c6385[_0xaed7('0x31')]['fields']));_0x24a795[_0xaed7('0x35')]=_0x24a795[_0xaed7('0x35')]['length']?_0x24a795['attributes']:_0x4e88e5[_0xaed7('0x34')];if(!_0x5c6385['query'][_0xaed7('0x37')](_0xaed7('0x38'))){_0x24a795[_0xaed7('0x1c')]=qs['limit'](_0x5c6385[_0xaed7('0x31')][_0xaed7('0x1c')]);_0x24a795[_0xaed7('0x1a')]=qs[_0xaed7('0x1a')](_0x5c6385[_0xaed7('0x31')][_0xaed7('0x1a')]);}_0x24a795[_0xaed7('0x39')]=qs[_0xaed7('0x3a')](_0x5c6385['query'][_0xaed7('0x3a')]);_0x24a795[_0xaed7('0x3b')]=qs['filters'](_[_0xaed7('0x59')](_0x5c6385[_0xaed7('0x31')],_0x4e88e5[_0xaed7('0x3c')]));_0x24a795[_0xaed7('0x3b')][_0xaed7('0x5a')]=_0x518473['id'];if(_0x5c6385[_0xaed7('0x31')]['filter']){_0x24a795[_0xaed7('0x3b')]=_[_0xaed7('0x3e')](_0x24a795[_0xaed7('0x3b')],{'$or':_[_0xaed7('0x2c')](_0x24a795[_0xaed7('0x35')],function(_0x158968){var _0x48032b={};_0x48032b[_0x158968]={'$like':'%'+_0x5c6385[_0xaed7('0x31')]['filter']+'%'};return _0x48032b;})});}_0x24a795=_['merge']({},_0x24a795,_0x5c6385[_0xaed7('0x3f')]);return db[_0xaed7('0x5d')][_0xaed7('0x1d')]({'where':_0x24a795[_0xaed7('0x3b')]})[_0xaed7('0x24')](function(_0x147f57){_0x301c95[_0xaed7('0x1d')]=_0x147f57;if(_0x5c6385['query'][_0xaed7('0x48')]){_0x24a795[_0xaed7('0x40')]=[{'all':!![]}];}return db[_0xaed7('0x5d')][_0xaed7('0x41')](_0x24a795);})['then'](function(_0x17b176){_0x301c95[_0xaed7('0x42')]=_0x17b176;return _0x301c95;});}})[_0xaed7('0x24')](respondWithFilteredResult(_0x5e2135,_0x24a795))[_0xaed7('0x43')](handleError(_0x5e2135,null));};exports[_0xaed7('0x5e')]=function(_0x266050,_0x84239c,_0x2c0e07){var _0x56fb18={'raw':!![],'where':{}};var _0x51d0ff={};var _0x124333={'count':0x0,'rows':[]};return db[_0xaed7('0x2d')][_0xaed7('0x5c')]({'where':{'id':_0x266050[_0xaed7('0x45')]['id']}})[_0xaed7('0x24')](handleEntityNotFound(_0x84239c,null))[_0xaed7('0x24')](function(_0x45b0b9){if(_0x45b0b9){_0x51d0ff[_0xaed7('0x34')]=_[_0xaed7('0x32')](db['CmHopperFinal'][_0xaed7('0x46')]);_0x51d0ff[_0xaed7('0x31')]=_['keys'](_0x266050[_0xaed7('0x31')]);_0x51d0ff[_0xaed7('0x3c')]=_[_0xaed7('0x33')](_0x51d0ff[_0xaed7('0x34')],_0x51d0ff['query']);_0x56fb18['attributes']=_[_0xaed7('0x33')](_0x51d0ff[_0xaed7('0x34')],qs[_0xaed7('0x36')](_0x266050['query'][_0xaed7('0x36')]));_0x56fb18[_0xaed7('0x35')]=_0x56fb18[_0xaed7('0x35')]['length']?_0x56fb18[_0xaed7('0x35')]:_0x51d0ff[_0xaed7('0x34')];if(!_0x266050['query'][_0xaed7('0x37')](_0xaed7('0x38'))){_0x56fb18['limit']=qs[_0xaed7('0x1c')](_0x266050['query'][_0xaed7('0x1c')]);_0x56fb18['offset']=qs[_0xaed7('0x1a')](_0x266050[_0xaed7('0x31')][_0xaed7('0x1a')]);}_0x56fb18[_0xaed7('0x39')]=qs[_0xaed7('0x3a')](_0x266050[_0xaed7('0x31')][_0xaed7('0x3a')]);_0x56fb18[_0xaed7('0x3b')]=qs[_0xaed7('0x3c')](_[_0xaed7('0x59')](_0x266050['query'],_0x51d0ff['filters']));_0x56fb18['where'][_0xaed7('0x5a')]=_0x45b0b9['id'];if(_0x266050[_0xaed7('0x31')][_0xaed7('0x3d')]){_0x56fb18['where']=_['merge'](_0x56fb18['where'],{'$or':_[_0xaed7('0x2c')](_0x56fb18['attributes'],function(_0x38641e){var _0x13932d={};_0x13932d[_0x38641e]={'$like':'%'+_0x266050['query'][_0xaed7('0x3d')]+'%'};return _0x13932d;})});}_0x56fb18=_[_0xaed7('0x3e')]({},_0x56fb18,_0x266050[_0xaed7('0x3f')]);return db[_0xaed7('0x5f')][_0xaed7('0x1d')]({'where':_0x56fb18['where']})[_0xaed7('0x24')](function(_0x46d223){_0x124333['count']=_0x46d223;if(_0x266050['query']['includeAll']){_0x56fb18[_0xaed7('0x40')]=[{'all':!![]}];}return db['CmHopperFinal'][_0xaed7('0x41')](_0x56fb18);})[_0xaed7('0x24')](function(_0x4a1e7c){_0x124333['rows']=_0x4a1e7c;return _0x124333;});}})[_0xaed7('0x24')](respondWithFilteredResult(_0x84239c,_0x56fb18))[_0xaed7('0x43')](handleError(_0x84239c,null));};exports['getHopperBlacks']=function(_0x4bcd7e,_0x5b6d5b,_0x3aa5e4){var _0x5c131f={'raw':!![],'where':{}};var _0x551c13={};var _0x29ab09={'count':0x0,'rows':[]};return db['Campaign'][_0xaed7('0x5c')]({'where':{'id':_0x4bcd7e[_0xaed7('0x45')]['id']}})[_0xaed7('0x24')](handleEntityNotFound(_0x5b6d5b,null))[_0xaed7('0x24')](function(_0x1c8170){if(_0x1c8170){_0x551c13[_0xaed7('0x34')]=_[_0xaed7('0x32')](db['CmHopperBlack'][_0xaed7('0x46')]);_0x551c13[_0xaed7('0x31')]=_['keys'](_0x4bcd7e['query']);_0x551c13[_0xaed7('0x3c')]=_[_0xaed7('0x33')](_0x551c13['model'],_0x551c13[_0xaed7('0x31')]);_0x5c131f['attributes']=_[_0xaed7('0x33')](_0x551c13[_0xaed7('0x34')],qs['fields'](_0x4bcd7e[_0xaed7('0x31')][_0xaed7('0x36')]));_0x5c131f[_0xaed7('0x35')]=_0x5c131f[_0xaed7('0x35')][_0xaed7('0x47')]?_0x5c131f['attributes']:_0x551c13['model'];if(!_0x4bcd7e[_0xaed7('0x31')][_0xaed7('0x37')](_0xaed7('0x38'))){_0x5c131f[_0xaed7('0x1c')]=qs[_0xaed7('0x1c')](_0x4bcd7e['query'][_0xaed7('0x1c')]);_0x5c131f[_0xaed7('0x1a')]=qs[_0xaed7('0x1a')](_0x4bcd7e['query']['offset']);}_0x5c131f[_0xaed7('0x39')]=qs[_0xaed7('0x3a')](_0x4bcd7e[_0xaed7('0x31')][_0xaed7('0x3a')]);_0x5c131f[_0xaed7('0x3b')]=qs[_0xaed7('0x3c')](_[_0xaed7('0x59')](_0x4bcd7e[_0xaed7('0x31')],_0x551c13['filters']));_0x5c131f[_0xaed7('0x3b')][_0xaed7('0x5a')]=_0x1c8170['id'];if(_0x4bcd7e[_0xaed7('0x31')][_0xaed7('0x3d')]){_0x5c131f['where']=_[_0xaed7('0x3e')](_0x5c131f[_0xaed7('0x3b')],{'$or':_[_0xaed7('0x2c')](_0x5c131f[_0xaed7('0x35')],function(_0x4e6b15){var _0x2b6c13={};_0x2b6c13[_0x4e6b15]={'$like':'%'+_0x4bcd7e['query'][_0xaed7('0x3d')]+'%'};return _0x2b6c13;})});}_0x5c131f=_[_0xaed7('0x3e')]({},_0x5c131f,_0x4bcd7e['options']);return db[_0xaed7('0x60')]['count']({'where':_0x5c131f[_0xaed7('0x3b')]})[_0xaed7('0x24')](function(_0x1501f2){_0x29ab09[_0xaed7('0x1d')]=_0x1501f2;if(_0x4bcd7e[_0xaed7('0x31')][_0xaed7('0x48')]){_0x5c131f[_0xaed7('0x40')]=[{'all':!![]}];}return db[_0xaed7('0x60')]['findAll'](_0x5c131f);})[_0xaed7('0x24')](function(_0xf0243a){_0x29ab09['rows']=_0xf0243a;return _0x29ab09;});}})['then'](respondWithFilteredResult(_0x5b6d5b,_0x5c131f))[_0xaed7('0x43')](handleError(_0x5b6d5b,null));};exports[_0xaed7('0x61')]=function(_0x4c8f82,_0x2ba5c1,_0x2ef0f0){var _0x43a7ba={};var _0x325191={};var _0x10c9d0;var _0x461333;return db[_0xaed7('0x2d')]['findOne']({'where':{'id':_0x4c8f82[_0xaed7('0x45')]['id']}})[_0xaed7('0x24')](handleEntityNotFound(_0x2ba5c1,null))['then'](function(_0x4ac00f){if(_0x4ac00f){_0x10c9d0=_0x4ac00f;_0x325191[_0xaed7('0x34')]=_[_0xaed7('0x32')](db[_0xaed7('0x62')][_0xaed7('0x46')]);_0x325191[_0xaed7('0x31')]=_['keys'](_0x4c8f82['query']);_0x325191[_0xaed7('0x3c')]=_[_0xaed7('0x33')](_0x325191['model'],_0x325191[_0xaed7('0x31')]);_0x43a7ba[_0xaed7('0x35')]=_[_0xaed7('0x33')](_0x325191[_0xaed7('0x34')],qs[_0xaed7('0x36')](_0x4c8f82[_0xaed7('0x31')][_0xaed7('0x36')]));_0x43a7ba[_0xaed7('0x35')]=_0x43a7ba[_0xaed7('0x35')][_0xaed7('0x47')]?_0x43a7ba['attributes']:_0x325191['model'];_0x43a7ba['order']=qs[_0xaed7('0x3a')](_0x4c8f82['query'][_0xaed7('0x3a')]);_0x43a7ba[_0xaed7('0x3b')]=qs[_0xaed7('0x3c')](_['pick'](_0x4c8f82[_0xaed7('0x31')],_0x325191[_0xaed7('0x3c')]));if(_0x4c8f82[_0xaed7('0x31')][_0xaed7('0x3d')]){_0x43a7ba[_0xaed7('0x3b')]=_[_0xaed7('0x3e')](_0x43a7ba['where'],{'$or':_[_0xaed7('0x2c')](_0x43a7ba['attributes'],function(_0x26370d){var _0x1d8d39={};_0x1d8d39[_0x26370d]={'$like':'%'+_0x4c8f82[_0xaed7('0x31')]['filter']+'%'};return _0x1d8d39;})});}_0x43a7ba=_[_0xaed7('0x3e')]({},_0x43a7ba,_0x4c8f82[_0xaed7('0x3f')]);return _0x10c9d0[_0xaed7('0x61')](_0x43a7ba);}})[_0xaed7('0x24')](function(_0x31ad87){if(_0x31ad87){_0x461333=_0x31ad87[_0xaed7('0x47')];if(!_0x4c8f82[_0xaed7('0x31')][_0xaed7('0x37')](_0xaed7('0x38'))){_0x43a7ba['limit']=qs[_0xaed7('0x1c')](_0x4c8f82['query'][_0xaed7('0x1c')]);_0x43a7ba[_0xaed7('0x1a')]=qs[_0xaed7('0x1a')](_0x4c8f82[_0xaed7('0x31')][_0xaed7('0x1a')]);}return _0x10c9d0['getLists'](_0x43a7ba);}})[_0xaed7('0x24')](function(_0x387cc0){if(_0x387cc0){return _0x387cc0?{'count':_0x461333,'rows':_0x387cc0}:null;}})[_0xaed7('0x24')](respondWithResult(_0x2ba5c1,null))['catch'](handleError(_0x2ba5c1,null));};exports[_0xaed7('0x63')]=function(_0x517033,_0x322f4d,_0x4d7c52){var _0x10733f,_0xfe7396;var _0x2c753b=[];var _0x348e12=moment()[_0xaed7('0x64')](_0xaed7('0x65'));return db['Campaign']['find']({'where':{'id':_0x517033[_0xaed7('0x45')]['id']}})[_0xaed7('0x24')](handleEntityNotFound(_0x322f4d,null))[_0xaed7('0x24')](function(_0x571fa6){if(_0x571fa6){_0xfe7396=_0x571fa6;return _0x571fa6[_0xaed7('0x63')](_0x517033[_0xaed7('0x4b')][_0xaed7('0x66')],_[_0xaed7('0x53')](_0x517033['body'],[_0xaed7('0x66'),'id'])||{});}return null;})[_0xaed7('0x67')](function(_0x3e930f){var _0x19ebb6;var _0x402324;_0x10733f=_0x3e930f||[];var _0x5ef935=[];if(_0x3e930f){for(var _0x1d9531=0x0;_0x1d9531<_0x3e930f[_0xaed7('0x47')];_0x1d9531+=0x1){var _0x5dbe46=_0x3e930f[_0x1d9531]['get']({'plain':!![]});_0xfe7396['dialCheckDuplicateType']=_0x517033[_0xaed7('0x4b')][_0xaed7('0x68')]?_0x517033[_0xaed7('0x4b')][_0xaed7('0x68')]:_0xfe7396[_0xaed7('0x68')];switch(_0xfe7396[_0xaed7('0x68')]){case _0xaed7('0x69'):_0x19ebb6=squel['insert']()['into']('cm_hopper')['fromQuery']([_0xaed7('0x6a'),_0xaed7('0x6b'),_0xaed7('0x6c'),_0xaed7('0x6d'),'CampaignId',_0xaed7('0x54'),'updatedAt'],squel[_0xaed7('0x6e')]()[_0xaed7('0x6f')](_0xaed7('0x6a'),_0xaed7('0x6a'))['field'](_0xaed7('0x70'),_0xaed7('0x6b'))[_0xaed7('0x6f')]('id','ContactId')['field'](_0x5dbe46['CmListId'][_0xaed7('0x71')](),'ListId')[_0xaed7('0x6f')](_0x517033[_0xaed7('0x45')]['id'][_0xaed7('0x71')](),_0xaed7('0x5a'))[_0xaed7('0x6f')]('\x27'+_0x348e12+'\x27',_0xaed7('0x54'))['field']('\x27'+_0x348e12+'\x27',_0xaed7('0x55'))[_0xaed7('0x72')](_0xaed7('0x73'))[_0xaed7('0x3b')](_0xaed7('0x74'))['where'](_0xaed7('0x75'),_0x5dbe46[_0xaed7('0x76')]['toString']())[_0xaed7('0x3b')](_0xaed7('0x77'))[_0xaed7('0x3b')]('phone\x20NOT\x20IN\x20(?)',squel[_0xaed7('0x6e')]()[_0xaed7('0x6f')](_0xaed7('0x78'))[_0xaed7('0x72')](_0xaed7('0x79'))['where']('CampaignId\x20=\x20?',_0x517033[_0xaed7('0x45')]['id'][_0xaed7('0x71')]()))['where'](_0xaed7('0x7a'),squel['select']()[_0xaed7('0x6f')](_0xaed7('0x7b'))['from'](_0xaed7('0x7c'))[_0xaed7('0x3b')](_0xaed7('0x7d'),_0x517033['params']['id'][_0xaed7('0x71')]())))[_0xaed7('0x71')]();break;case'onlyIfOpen':_0x19ebb6=squel[_0xaed7('0x7e')]()[_0xaed7('0x7f')](_0xaed7('0x7c'))[_0xaed7('0x80')](['phone','scheduledAt',_0xaed7('0x6c'),'ListId',_0xaed7('0x5a'),_0xaed7('0x54'),_0xaed7('0x55')],squel[_0xaed7('0x6e')]()[_0xaed7('0x6f')](_0xaed7('0x6a'),'phone')[_0xaed7('0x6f')](_0xaed7('0x70'),_0xaed7('0x6b'))['field']('id',_0xaed7('0x6c'))[_0xaed7('0x6f')](_0x5dbe46[_0xaed7('0x76')][_0xaed7('0x71')](),_0xaed7('0x6d'))['field'](_0x517033[_0xaed7('0x45')]['id'][_0xaed7('0x71')](),_0xaed7('0x5a'))[_0xaed7('0x6f')]('\x27'+_0x348e12+'\x27',_0xaed7('0x54'))[_0xaed7('0x6f')]('\x27'+_0x348e12+'\x27',_0xaed7('0x55'))[_0xaed7('0x72')](_0xaed7('0x73'))[_0xaed7('0x3b')](_0xaed7('0x74'))['where']('ListId\x20=\x20?',_0x5dbe46[_0xaed7('0x76')][_0xaed7('0x71')]())[_0xaed7('0x3b')](_0xaed7('0x77'))[_0xaed7('0x3b')](_0xaed7('0x7a'),squel['select']()[_0xaed7('0x6f')](_0xaed7('0x7b'))[_0xaed7('0x72')](_0xaed7('0x7c'))[_0xaed7('0x3b')]('CampaignId\x20=\x20?',_0x517033['params']['id'][_0xaed7('0x71')]())))[_0xaed7('0x71')]();break;default:_0x19ebb6=squel[_0xaed7('0x7e')]()[_0xaed7('0x7f')](_0xaed7('0x7c'))[_0xaed7('0x80')]([_0xaed7('0x6a'),_0xaed7('0x6b'),_0xaed7('0x6c'),_0xaed7('0x6d'),_0xaed7('0x5a'),_0xaed7('0x54'),_0xaed7('0x55')],squel['select']()[_0xaed7('0x6f')](_0xaed7('0x6a'),'phone')[_0xaed7('0x6f')](_0xaed7('0x70'),_0xaed7('0x6b'))[_0xaed7('0x6f')]('id','ContactId')['field'](_0x5dbe46[_0xaed7('0x76')][_0xaed7('0x71')](),_0xaed7('0x6d'))[_0xaed7('0x6f')](_0x517033[_0xaed7('0x45')]['id'][_0xaed7('0x71')](),'CampaignId')['field']('\x27'+_0x348e12+'\x27','createdAt')[_0xaed7('0x6f')]('\x27'+_0x348e12+'\x27','updatedAt')[_0xaed7('0x72')]('cm_contacts')[_0xaed7('0x3b')](_0xaed7('0x74'))[_0xaed7('0x3b')](_0xaed7('0x75'),_0x5dbe46[_0xaed7('0x76')]['toString']())[_0xaed7('0x3b')](_0xaed7('0x77')))[_0xaed7('0x71')]();}_0x402324=squel[_0xaed7('0x7e')]()[_0xaed7('0x7f')](_0xaed7('0x81'))[_0xaed7('0x80')](['cmHopperId',_0xaed7('0x6b'),'phone',_0xaed7('0x82'),_0xaed7('0x54'),'updatedAt'],squel[_0xaed7('0x6e')]()[_0xaed7('0x6f')](_0xaed7('0x83'),'id')[_0xaed7('0x6f')](_0xaed7('0x70'),'scheduledAt')['field'](_0xaed7('0x84'),_0xaed7('0x6a'))[_0xaed7('0x6f')](_0xaed7('0x85'),_0xaed7('0x82'))['field']('\x27'+_0x348e12+'\x27',_0xaed7('0x54'))[_0xaed7('0x6f')]('\x27'+_0x348e12+'\x27',_0xaed7('0x55'))[_0xaed7('0x72')](_0xaed7('0x86'),'ci')[_0xaed7('0x87')]('cm_hopper','h',_0xaed7('0x88'))[_0xaed7('0x3b')](_0xaed7('0x89'),_0x5dbe46[_0xaed7('0x76')][_0xaed7('0x71')]())[_0xaed7('0x3b')](_0xaed7('0x8a'),_0x517033['params']['id'][_0xaed7('0x71')]())['where']('h.createdAt\x20=\x20?',_0x348e12))[_0xaed7('0x71')]();_0x5ef935['push'](db[_0xaed7('0x8b')]['query'](_0x19ebb6));_0x2c753b[_0xaed7('0x8c')](db[_0xaed7('0x8b')][_0xaed7('0x31')](_0x402324));}return BPromise['all'](_0x5ef935);}})['then'](function(){return BPromise[_0xaed7('0x8d')](_0x2c753b);})[_0xaed7('0x24')](function(){return _0x10733f;})[_0xaed7('0x24')](respondWithResult(_0x322f4d,null))[_0xaed7('0x43')](handleError(_0x322f4d,null));};exports[_0xaed7('0x8e')]=function(_0x4950a1,_0x3bcea4,_0x1bb6c2){return db[_0xaed7('0x2d')][_0xaed7('0x49')]({'where':{'id':_0x4950a1[_0xaed7('0x45')]['id']}})[_0xaed7('0x24')](handleEntityNotFound(_0x3bcea4,null))[_0xaed7('0x24')](function(_0x37f1f0){if(_0x37f1f0){return _0x37f1f0['removeLists'](_0x4950a1[_0xaed7('0x31')][_0xaed7('0x66')]);}})[_0xaed7('0x24')](function(_0x443485){if(_0x443485){return db[_0xaed7('0x58')][_0xaed7('0x25')]({'where':{'ListId':_0x4950a1[_0xaed7('0x31')][_0xaed7('0x66')],'CampaignId':_0x4950a1[_0xaed7('0x45')]['id']}})[_0xaed7('0x24')](function(){return _0x443485;});}})[_0xaed7('0x24')](respondWithStatusCode(_0x3bcea4,null))[_0xaed7('0x43')](handleError(_0x3bcea4,null));};exports['getBlackLists']=function(_0x5c983f,_0x40f2df,_0x13037a){var _0x4513a4={};var _0xa3ecd9={};var _0x199ef3;var _0xf30718;return db[_0xaed7('0x2d')]['findOne']({'where':{'id':_0x5c983f[_0xaed7('0x45')]['id']}})['then'](handleEntityNotFound(_0x40f2df,null))['then'](function(_0xee2b4e){if(_0xee2b4e){_0x199ef3=_0xee2b4e;_0xa3ecd9['model']=_['keys'](db[_0xaed7('0x62')][_0xaed7('0x46')]);_0xa3ecd9[_0xaed7('0x31')]=_[_0xaed7('0x32')](_0x5c983f[_0xaed7('0x31')]);_0xa3ecd9[_0xaed7('0x3c')]=_[_0xaed7('0x33')](_0xa3ecd9[_0xaed7('0x34')],_0xa3ecd9[_0xaed7('0x31')]);_0x4513a4['attributes']=_[_0xaed7('0x33')](_0xa3ecd9['model'],qs[_0xaed7('0x36')](_0x5c983f[_0xaed7('0x31')][_0xaed7('0x36')]));_0x4513a4[_0xaed7('0x35')]=_0x4513a4[_0xaed7('0x35')][_0xaed7('0x47')]?_0x4513a4[_0xaed7('0x35')]:_0xa3ecd9['model'];_0x4513a4['order']=qs['sort'](_0x5c983f[_0xaed7('0x31')][_0xaed7('0x3a')]);_0x4513a4[_0xaed7('0x3b')]=qs[_0xaed7('0x3c')](_[_0xaed7('0x59')](_0x5c983f[_0xaed7('0x31')],_0xa3ecd9[_0xaed7('0x3c')]));if(_0x5c983f[_0xaed7('0x31')][_0xaed7('0x3d')]){_0x4513a4['where']=_[_0xaed7('0x3e')](_0x4513a4[_0xaed7('0x3b')],{'$or':_['map'](_0x4513a4['attributes'],function(_0x2c5d1b){var _0x3616ad={};_0x3616ad[_0x2c5d1b]={'$like':'%'+_0x5c983f[_0xaed7('0x31')][_0xaed7('0x3d')]+'%'};return _0x3616ad;})});}_0x4513a4=_[_0xaed7('0x3e')]({},_0x4513a4,_0x5c983f[_0xaed7('0x3f')]);return _0x199ef3[_0xaed7('0x8f')](_0x4513a4);}})[_0xaed7('0x24')](function(_0x18b816){if(_0x18b816){_0xf30718=_0x18b816['length'];if(!_0x5c983f[_0xaed7('0x31')]['hasOwnProperty'](_0xaed7('0x38'))){_0x4513a4[_0xaed7('0x1c')]=qs[_0xaed7('0x1c')](_0x5c983f['query'][_0xaed7('0x1c')]);_0x4513a4[_0xaed7('0x1a')]=qs[_0xaed7('0x1a')](_0x5c983f[_0xaed7('0x31')][_0xaed7('0x1a')]);}return _0x199ef3[_0xaed7('0x8f')](_0x4513a4);}})[_0xaed7('0x24')](function(_0x347843){if(_0x347843){return _0x347843?{'count':_0xf30718,'rows':_0x347843}:null;}})[_0xaed7('0x24')](respondWithResult(_0x40f2df,null))[_0xaed7('0x43')](handleError(_0x40f2df,null));};exports[_0xaed7('0x90')]=function(_0x401125,_0x309363,_0x4cfce9){var _0x496faf,_0x3e579b;var _0xb16df1=[];var _0x313731=moment()[_0xaed7('0x64')](_0xaed7('0x65'));return db[_0xaed7('0x2d')][_0xaed7('0x49')]({'where':{'id':_0x401125[_0xaed7('0x45')]['id']}})['then'](handleEntityNotFound(_0x309363,null))[_0xaed7('0x24')](function(_0x31e62d){if(_0x31e62d){_0x3e579b=_0x31e62d;return _0x31e62d[_0xaed7('0x90')](_0x401125[_0xaed7('0x4b')]['ids'],_[_0xaed7('0x53')](_0x401125[_0xaed7('0x4b')],['ids','id'])||{});}return null;})[_0xaed7('0x67')](function(_0x2b5d45){var _0x28c7fe;var _0x18f1fd;_0x496faf=_0x2b5d45||[];var _0x301062=[];if(_0x2b5d45){for(var _0x5e00eb=0x0;_0x5e00eb<_0x2b5d45[_0xaed7('0x47')];_0x5e00eb+=0x1){var _0x59609d=_0x2b5d45[_0x5e00eb][_0xaed7('0x26')]({'plain':!![]});_0x28c7fe=squel['insert']()['into'](_0xaed7('0x91'))[_0xaed7('0x80')]([_0xaed7('0x6a'),_0xaed7('0x6c'),'ListId',_0xaed7('0x5a'),_0xaed7('0x54'),'updatedAt'],squel[_0xaed7('0x6e')]()['field'](_0xaed7('0x6a'),_0xaed7('0x6a'))[_0xaed7('0x6f')]('id',_0xaed7('0x6c'))[_0xaed7('0x6f')](_0x59609d['CmListId']['toString'](),'ListId')['field'](_0x401125[_0xaed7('0x45')]['id'][_0xaed7('0x71')](),_0xaed7('0x5a'))[_0xaed7('0x6f')](_0xaed7('0x70'),'createdAt')[_0xaed7('0x6f')]('NOW()',_0xaed7('0x55'))[_0xaed7('0x72')]('cm_contacts')[_0xaed7('0x3b')]('deletedAt\x20IS\x20NULL')['where']('ListId\x20=\x20?',_0x59609d['CmListId']['toString']())[_0xaed7('0x3b')]('phone\x20IS\x20NOT\x20NULL'))[_0xaed7('0x71')]();_0x301062[_0xaed7('0x8c')](db[_0xaed7('0x8b')][_0xaed7('0x31')](_0x28c7fe));}return BPromise[_0xaed7('0x8d')](_0x301062);}})[_0xaed7('0x24')](function(){return _0x496faf;})[_0xaed7('0x24')](respondWithResult(_0x309363,null))['catch'](handleError(_0x309363,null));};exports[_0xaed7('0x92')]=function(_0x912bd4,_0x4a3268,_0x3ff7d0){return db[_0xaed7('0x2d')]['find']({'where':{'id':_0x912bd4[_0xaed7('0x45')]['id']}})['then'](handleEntityNotFound(_0x4a3268,null))[_0xaed7('0x24')](function(_0x534bbd){if(_0x534bbd){return _0x534bbd[_0xaed7('0x92')](_0x912bd4[_0xaed7('0x31')]['ids']);}})[_0xaed7('0x24')](function(_0x888e21){if(_0x888e21){return db[_0xaed7('0x60')][_0xaed7('0x25')]({'where':{'ListId':_0x912bd4[_0xaed7('0x31')]['ids'],'CampaignId':_0x912bd4['params']['id']}})[_0xaed7('0x24')](function(){return _0x888e21;});}})[_0xaed7('0x24')](respondWithStatusCode(_0x4a3268,null))[_0xaed7('0x43')](handleError(_0x4a3268,null));};
\ No newline at end of file
index 101f2bc..8d4a4f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x47f7dd,_0x43c225){var _0x2c3739=function(_0x2cad75){while(--_0x2cad75){_0x47f7dd['push'](_0x47f7dd['shift']());}};_0x2c3739(++_0x43c225);}(_0x7a54,0x106));var _0x47a5=function(_0x106d69,_0xd6147d){_0x106d69=_0x106d69-0x0;var _0x5a1977=_0x7a54[_0x106d69];return _0x5a1977;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x4a9a0c,_0x120b8a){var _0x316d25=function(_0x3f8c2c){while(--_0x3f8c2c){_0x4a9a0c['push'](_0x4a9a0c['shift']());}};_0x316d25(++_0x120b8a);}(_0x7a54,0x106));var _0x47a5=function(_0x5edb40,_0xc7949d){_0x5edb40=_0x5edb40-0x0;var _0x319b03=_0x7a54[_0x5edb40];return _0x319b03;};'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 b639d0e..7f46526 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5668=['stringify','error','message','info','result','catch','GetCampaign','options','raw','where','attributes','include','map','model','then','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','Campaign,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x5668,0x8b));var _0x8566=function(_0x6c6bbd,_0x689602){_0x6c6bbd=_0x6c6bbd-0x0;var _0x5617de=_0x5668[_0x6c6bbd];return _0x5617de;};'use strict';var _=require(_0x8566('0x0'));var util=require(_0x8566('0x1'));var moment=require(_0x8566('0x2'));var BPromise=require(_0x8566('0x3'));var rs=require(_0x8566('0x4'));var fs=require('fs');var Redis=require(_0x8566('0x5'));var db=require(_0x8566('0x6'))['db'];var utils=require(_0x8566('0x7'));var logger=require(_0x8566('0x8'))(_0x8566('0x9'));var config=require(_0x8566('0xa'));var jayson=require(_0x8566('0xb'));var client=jayson[_0x8566('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x355fce,_0x2ffec4,_0x49f55a){return new BPromise(function(_0x4aaf3f,_0x4045ed){return client['request'](_0x355fce,_0x49f55a)['then'](function(_0x1a01a2){logger['info'](_0x8566('0xd'),_0x2ffec4,_0x8566('0xe'));logger[_0x8566('0xf')]('Campaign,\x20%s,\x20%s,\x20%s',_0x2ffec4,_0x8566('0xe'),JSON[_0x8566('0x10')](_0x1a01a2));if(_0x1a01a2['error']){if(_0x1a01a2['error']['code']===0x1f4){logger['error'](_0x8566('0xd'),_0x2ffec4,_0x1a01a2[_0x8566('0x11')][_0x8566('0x12')]);return _0x4045ed(_0x1a01a2[_0x8566('0x11')][_0x8566('0x12')]);}logger['error']('Campaign,\x20%s,\x20%s',_0x2ffec4,_0x1a01a2['error']['message']);return _0x4aaf3f(_0x1a01a2['error'][_0x8566('0x12')]);}else{logger[_0x8566('0x13')](_0x8566('0xd'),_0x2ffec4,_0x8566('0xe'));_0x4aaf3f(_0x1a01a2[_0x8566('0x14')]['message']);}})[_0x8566('0x15')](function(_0xe208c7){logger[_0x8566('0x11')]('Campaign,\x20%s,\x20%s',_0x2ffec4,_0xe208c7);_0x4045ed(_0xe208c7);});});}exports[_0x8566('0x16')]=function(_0x1a8ae0){var _0x2eed85=this;return new Promise(function(_0x526f23,_0x41cb27){return db['Campaign']['findAll']({'raw':_0x1a8ae0[_0x8566('0x17')]?_0x1a8ae0['options'][_0x8566('0x18')]===undefined?!![]:![]:!![],'where':_0x1a8ae0['options']?_0x1a8ae0[_0x8566('0x17')][_0x8566('0x19')]||null:null,'attributes':_0x1a8ae0[_0x8566('0x17')]?_0x1a8ae0[_0x8566('0x17')][_0x8566('0x1a')]||null:null,'limit':_0x1a8ae0[_0x8566('0x17')]?_0x1a8ae0[_0x8566('0x17')]['limit']||null:null,'include':_0x1a8ae0['options']?_0x1a8ae0[_0x8566('0x17')][_0x8566('0x1b')]?_[_0x8566('0x1c')](_0x1a8ae0[_0x8566('0x17')]['include'],function(_0x183435){return{'model':db[_0x183435[_0x8566('0x1d')]],'as':_0x183435['as'],'attributes':_0x183435['attributes'],'include':_0x183435[_0x8566('0x1b')]?_[_0x8566('0x1c')](_0x183435['include'],function(_0x3191f5){return{'model':db[_0x3191f5[_0x8566('0x1d')]],'as':_0x3191f5['as'],'attributes':_0x3191f5[_0x8566('0x1a')],'include':_0x3191f5['include']?_[_0x8566('0x1c')](_0x3191f5[_0x8566('0x1b')],function(_0x327f7d){return{'model':db[_0x327f7d[_0x8566('0x1d')]],'as':_0x327f7d['as'],'attributes':_0x327f7d[_0x8566('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x8566('0x1e')](function(_0xa3cf58){logger['info'](_0x8566('0x16'),_0x1a8ae0);logger[_0x8566('0xf')](_0x8566('0x16'),_0x1a8ae0,JSON[_0x8566('0x10')](_0xa3cf58));_0x526f23(_0xa3cf58);})[_0x8566('0x15')](function(_0x3a3106){logger[_0x8566('0x11')](_0x8566('0x16'),_0x3a3106['message'],_0x1a8ae0);_0x41cb27(_0x2eed85[_0x8566('0x11')](0x1f4,_0x3a3106['message']));});});};
\ No newline at end of file
+var _0xef38=['include','info','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','Campaign,\x20%s,\x20%s','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetCampaign','Campaign','findAll','options','raw','attributes','limit','map','model'];(function(_0x378e03,_0x896076){var _0x4797eb=function(_0x597b9f){while(--_0x597b9f){_0x378e03['push'](_0x378e03['shift']());}};_0x4797eb(++_0x896076);}(_0xef38,0x122));var _0x8ef3=function(_0x19672a,_0x493645){_0x19672a=_0x19672a-0x0;var _0xe54415=_0xef38[_0x19672a];return _0xe54415;};'use strict';var _=require('lodash');var util=require(_0x8ef3('0x0'));var moment=require(_0x8ef3('0x1'));var BPromise=require(_0x8ef3('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8ef3('0x3'))['db'];var utils=require(_0x8ef3('0x4'));var logger=require(_0x8ef3('0x5'))(_0x8ef3('0x6'));var config=require(_0x8ef3('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x8ef3('0x8')][_0x8ef3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x50ee13,_0x2c9ccd,_0x26107d){return new BPromise(function(_0x217874,_0x12b6c0){return client[_0x8ef3('0xa')](_0x50ee13,_0x26107d)[_0x8ef3('0xb')](function(_0xc4b3b3){logger['info'](_0x8ef3('0xc'),_0x2c9ccd,_0x8ef3('0xd'));logger[_0x8ef3('0xe')](_0x8ef3('0xf'),_0x2c9ccd,_0x8ef3('0xd'),JSON[_0x8ef3('0x10')](_0xc4b3b3));if(_0xc4b3b3[_0x8ef3('0x11')]){if(_0xc4b3b3[_0x8ef3('0x11')][_0x8ef3('0x12')]===0x1f4){logger[_0x8ef3('0x11')](_0x8ef3('0xc'),_0x2c9ccd,_0xc4b3b3[_0x8ef3('0x11')][_0x8ef3('0x13')]);return _0x12b6c0(_0xc4b3b3[_0x8ef3('0x11')][_0x8ef3('0x13')]);}logger[_0x8ef3('0x11')](_0x8ef3('0xc'),_0x2c9ccd,_0xc4b3b3[_0x8ef3('0x11')][_0x8ef3('0x13')]);return _0x217874(_0xc4b3b3['error'][_0x8ef3('0x13')]);}else{logger['info'](_0x8ef3('0xc'),_0x2c9ccd,'request\x20sent');_0x217874(_0xc4b3b3[_0x8ef3('0x14')][_0x8ef3('0x13')]);}})['catch'](function(_0x56884c){logger[_0x8ef3('0x11')](_0x8ef3('0xc'),_0x2c9ccd,_0x56884c);_0x12b6c0(_0x56884c);});});}exports[_0x8ef3('0x15')]=function(_0x434aa9){var _0x5296f2=this;return new Promise(function(_0x5cbed2,_0x29025b){return db[_0x8ef3('0x16')][_0x8ef3('0x17')]({'raw':_0x434aa9[_0x8ef3('0x18')]?_0x434aa9['options'][_0x8ef3('0x19')]===undefined?!![]:![]:!![],'where':_0x434aa9[_0x8ef3('0x18')]?_0x434aa9[_0x8ef3('0x18')]['where']||null:null,'attributes':_0x434aa9['options']?_0x434aa9[_0x8ef3('0x18')][_0x8ef3('0x1a')]||null:null,'limit':_0x434aa9[_0x8ef3('0x18')]?_0x434aa9[_0x8ef3('0x18')][_0x8ef3('0x1b')]||null:null,'include':_0x434aa9[_0x8ef3('0x18')]?_0x434aa9[_0x8ef3('0x18')]['include']?_[_0x8ef3('0x1c')](_0x434aa9[_0x8ef3('0x18')]['include'],function(_0xa9829e){return{'model':db[_0xa9829e[_0x8ef3('0x1d')]],'as':_0xa9829e['as'],'attributes':_0xa9829e[_0x8ef3('0x1a')],'include':_0xa9829e[_0x8ef3('0x1e')]?_[_0x8ef3('0x1c')](_0xa9829e['include'],function(_0x18ef45){return{'model':db[_0x18ef45[_0x8ef3('0x1d')]],'as':_0x18ef45['as'],'attributes':_0x18ef45[_0x8ef3('0x1a')],'include':_0x18ef45[_0x8ef3('0x1e')]?_['map'](_0x18ef45[_0x8ef3('0x1e')],function(_0x28637a){return{'model':db[_0x28637a[_0x8ef3('0x1d')]],'as':_0x28637a['as'],'attributes':_0x28637a[_0x8ef3('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x8ef3('0xb')](function(_0x28748f){logger[_0x8ef3('0x1f')](_0x8ef3('0x15'),_0x434aa9);logger[_0x8ef3('0xe')](_0x8ef3('0x15'),_0x434aa9,JSON[_0x8ef3('0x10')](_0x28748f));_0x5cbed2(_0x28748f);})['catch'](function(_0x4408f9){logger[_0x8ef3('0x11')](_0x8ef3('0x15'),_0x4408f9[_0x8ef3('0x13')],_0x434aa9);_0x29025b(_0x5296f2[_0x8ef3('0x11')](0x1f4,_0x4408f9[_0x8ef3('0x13')]));});});};
\ No newline at end of file
index 00566f6..eb17e3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x351f=['getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','/:id/lists','getLists','/:id/blacklists','getBlackLists','create','post','/:id/clone','clone','addBlackLists','put','delete','removeLists','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./campaign.controller','isAuthenticated','index','get','/:id','/:id/hoppers','getHoppers','/:id/hopper_histories'];(function(_0x636fd,_0x118846){var _0xae85ba=function(_0x3ccb32){while(--_0x3ccb32){_0x636fd['push'](_0x636fd['shift']());}};_0xae85ba(++_0x118846);}(_0x351f,0xd6));var _0xf351=function(_0x449ce1,_0xa384ec){_0x449ce1=_0x449ce1-0x0;var _0x20f249=_0x351f[_0x449ce1];return _0x20f249;};'use strict';var multer=require(_0xf351('0x0'));var util=require(_0xf351('0x1'));var path=require(_0xf351('0x2'));var timeout=require(_0xf351('0x3'));var express=require('express');var router=express[_0xf351('0x4')]();var fs_extra=require(_0xf351('0x5'));var auth=require(_0xf351('0x6'));var interaction=require(_0xf351('0x7'));var config=require(_0xf351('0x8'));var controller=require(_0xf351('0x9'));router['get']('/',auth[_0xf351('0xa')](),controller[_0xf351('0xb')]);router[_0xf351('0xc')](_0xf351('0xd'),auth[_0xf351('0xa')](),controller['show']);router[_0xf351('0xc')](_0xf351('0xe'),auth['isAuthenticated'](),controller[_0xf351('0xf')]);router[_0xf351('0xc')](_0xf351('0x10'),auth[_0xf351('0xa')](),controller[_0xf351('0x11')]);router[_0xf351('0xc')](_0xf351('0x12'),auth[_0xf351('0xa')](),controller[_0xf351('0x13')]);router[_0xf351('0xc')](_0xf351('0x14'),auth[_0xf351('0xa')](),controller['getHopperBlacks']);router[_0xf351('0xc')](_0xf351('0x15'),auth['isAuthenticated'](),controller[_0xf351('0x16')]);router[_0xf351('0xc')](_0xf351('0x17'),auth[_0xf351('0xa')](),controller[_0xf351('0x18')]);router['post']('/',auth['isAuthenticated'](),controller[_0xf351('0x19')]);router[_0xf351('0x1a')](_0xf351('0x1b'),auth[_0xf351('0xa')](),controller[_0xf351('0x1c')]);router[_0xf351('0x1a')](_0xf351('0x15'),auth[_0xf351('0xa')](),controller['addLists']);router['post'](_0xf351('0x17'),auth['isAuthenticated'](),controller[_0xf351('0x1d')]);router[_0xf351('0x1e')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xf351('0x1f')](_0xf351('0xd'),auth[_0xf351('0xa')](),controller['destroy']);router[_0xf351('0x1f')](_0xf351('0x15'),auth[_0xf351('0xa')](),controller[_0xf351('0x20')]);router['delete']('/:id/blacklists',auth[_0xf351('0xa')](),controller['removeBlackLists']);module['exports']=router;
\ No newline at end of file
+var _0x1625=['/:id/hopper_finals','getHopperFinals','getHopperBlacks','getLists','/:id/blacklists','post','/:id/clone','clone','/:id/lists','addBlackLists','put','update','delete','destroy','removeLists','removeBlackLists','exports','multer','path','express','Router','fs-extra','../../components/interaction/service','./campaign.controller','get','isAuthenticated','/:id','/:id/hoppers','getHoppers','getHopperHistories'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x1625,0xa7));var _0x5162=function(_0x5971d9,_0x31ff8a){_0x5971d9=_0x5971d9-0x0;var _0x595008=_0x1625[_0x5971d9];return _0x595008;};'use strict';var multer=require(_0x5162('0x0'));var util=require('util');var path=require(_0x5162('0x1'));var timeout=require('connect-timeout');var express=require(_0x5162('0x2'));var router=express[_0x5162('0x3')]();var fs_extra=require(_0x5162('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x5162('0x5'));var config=require('../../config/environment');var controller=require(_0x5162('0x6'));router[_0x5162('0x7')]('/',auth[_0x5162('0x8')](),controller['index']);router[_0x5162('0x7')](_0x5162('0x9'),auth[_0x5162('0x8')](),controller['show']);router[_0x5162('0x7')](_0x5162('0xa'),auth['isAuthenticated'](),controller[_0x5162('0xb')]);router[_0x5162('0x7')]('/:id/hopper_histories',auth[_0x5162('0x8')](),controller[_0x5162('0xc')]);router[_0x5162('0x7')](_0x5162('0xd'),auth[_0x5162('0x8')](),controller[_0x5162('0xe')]);router[_0x5162('0x7')]('/:id/hopper_black',auth[_0x5162('0x8')](),controller[_0x5162('0xf')]);router[_0x5162('0x7')]('/:id/lists',auth[_0x5162('0x8')](),controller[_0x5162('0x10')]);router[_0x5162('0x7')](_0x5162('0x11'),auth['isAuthenticated'](),controller['getBlackLists']);router['post']('/',auth[_0x5162('0x8')](),controller['create']);router[_0x5162('0x12')](_0x5162('0x13'),auth[_0x5162('0x8')](),controller[_0x5162('0x14')]);router[_0x5162('0x12')](_0x5162('0x15'),auth[_0x5162('0x8')](),controller['addLists']);router[_0x5162('0x12')](_0x5162('0x11'),auth['isAuthenticated'](),controller[_0x5162('0x16')]);router[_0x5162('0x17')]('/:id',auth[_0x5162('0x8')](),controller[_0x5162('0x18')]);router[_0x5162('0x19')](_0x5162('0x9'),auth['isAuthenticated'](),controller[_0x5162('0x1a')]);router[_0x5162('0x19')](_0x5162('0x15'),auth[_0x5162('0x8')](),controller[_0x5162('0x1b')]);router['delete'](_0x5162('0x11'),auth[_0x5162('0x8')](),controller[_0x5162('0x1c')]);module[_0x5162('0x1d')]=router;
\ No newline at end of file
index 24176aa..3dc63c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19c0=['TEXT','getDataValue','key','sequelize','exports','STRING'];(function(_0x19223d,_0x4a5a7a){var _0x33e726=function(_0xe3bdca){while(--_0xe3bdca){_0x19223d['push'](_0x19223d['shift']());}};_0x33e726(++_0x4a5a7a);}(_0x19c0,0x9f));var _0x019c=function(_0x154eef,_0x157a5a){_0x154eef=_0x154eef-0x0;var _0x48611a=_0x19c0[_0x154eef];return _0x48611a;};'use strict';var Sequelize=require(_0x019c('0x0'));module[_0x019c('0x1')]={'key':{'type':Sequelize[_0x019c('0x2')],'allowNull':![]},'value':{'type':Sequelize[_0x019c('0x3')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x019c('0x4')](_0x019c('0x5'));}}};
\ No newline at end of file
+var _0xb425=['VIRTUAL','getDataValue','key','sequelize','exports','STRING'];(function(_0x4a28fa,_0x1a8a7c){var _0x26b1b8=function(_0x47b6e2){while(--_0x47b6e2){_0x4a28fa['push'](_0x4a28fa['shift']());}};_0x26b1b8(++_0x1a8a7c);}(_0xb425,0xb1));var _0x5b42=function(_0xbc18e2,_0x53259a){_0xbc18e2=_0xbc18e2-0x0;var _0xb91e05=_0xb425[_0xbc18e2];return _0xb91e05;};'use strict';var Sequelize=require(_0x5b42('0x0'));module[_0x5b42('0x1')]={'key':{'type':Sequelize[_0x5b42('0x2')],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'allowNull':![]},'description':{'type':Sequelize[_0x5b42('0x2')]},'name':{'type':Sequelize[_0x5b42('0x3')],'get':function(){return this[_0x5b42('0x4')](_0x5b42('0x5'));}}};
\ No newline at end of file
index bf42527..948c40c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe658=['hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','options','count','includeAll','include','findAll','rows','catch','show','params','keys','find','update','body','create','key','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','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','request-promise','moment','bluebird','mustache','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','end','json','offset','undefined','status','set','Content-Range','apply','then','destroy','get','CannedAnswers','UserProfileResource','name','send','index','map','CannedAnswer','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length'];(function(_0x2be572,_0xb3abe9){var _0x5b03fb=function(_0x331820){while(--_0x331820){_0x2be572['push'](_0x2be572['shift']());}};_0x5b03fb(++_0xb3abe9);}(_0xe658,0x18d));var _0x8e65=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xe658[_0x59ee6f];return _0x4c0979;};'use strict';var emlformat=require(_0x8e65('0x0'));var rimraf=require(_0x8e65('0x1'));var zipdir=require(_0x8e65('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8e65('0x3'));var moment=require(_0x8e65('0x4'));var BPromise=require(_0x8e65('0x5'));var Mustache=require(_0x8e65('0x6'));var util=require('util');var path=require(_0x8e65('0x7'));var sox=require(_0x8e65('0x8'));var csv=require('to-csv');var ejs=require(_0x8e65('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8e65('0xa'));var squel=require(_0x8e65('0xb'));var crypto=require(_0x8e65('0xc'));var jsforce=require(_0x8e65('0xd'));var deskjs=require(_0x8e65('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x8e65('0xf'));var Redis=require(_0x8e65('0x10'));var authService=require(_0x8e65('0x11'));var qs=require(_0x8e65('0x12'));var as=require(_0x8e65('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8e65('0x14'))(_0x8e65('0x15'));var utils=require('../../config/utils');var config=require(_0x8e65('0x16'));var licenseUtil=require(_0x8e65('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5b0d0f,_0x57c0cf){_0x57c0cf=_0x57c0cf||0xcc;return function(_0xb19a2f){if(_0xb19a2f){return _0x5b0d0f[_0x8e65('0x18')](_0x57c0cf);}return _0x5b0d0f['status'](_0x57c0cf)[_0x8e65('0x19')]();};}function respondWithResult(_0x4e49ff,_0x2f0f02){_0x2f0f02=_0x2f0f02||0xc8;return function(_0x212f44){if(_0x212f44){return _0x4e49ff['status'](_0x2f0f02)[_0x8e65('0x1a')](_0x212f44);}};}function respondWithFilteredResult(_0x33d58f,_0x453e0b){return function(_0x5b41bf){if(_0x5b41bf){var _0x512afa=typeof _0x453e0b[_0x8e65('0x1b')]==='undefined'&&typeof _0x453e0b['limit']===_0x8e65('0x1c');var _0x568d43=_0x5b41bf['count'];var _0x422632=_0x512afa?0x0:_0x453e0b[_0x8e65('0x1b')];var _0x4ed23b=_0x512afa?_0x5b41bf['count']:_0x453e0b[_0x8e65('0x1b')]+_0x453e0b['limit'];var _0x3af065;if(_0x4ed23b>=_0x568d43){_0x4ed23b=_0x568d43;_0x3af065=0xc8;}else{_0x3af065=0xce;}_0x33d58f[_0x8e65('0x1d')](_0x3af065);return _0x33d58f[_0x8e65('0x1e')](_0x8e65('0x1f'),_0x422632+'-'+_0x4ed23b+'/'+_0x568d43)['json'](_0x5b41bf);}return null;};}function patchUpdates(_0x2c2f83){return function(_0x24c068){try{jsonpatch[_0x8e65('0x20')](_0x24c068,_0x2c2f83,!![]);}catch(_0x38264d){return BPromise['reject'](_0x38264d);}return _0x24c068['save']();};}function saveUpdates(_0x14679f,_0x415ba0){return function(_0x29d322){if(_0x29d322){return _0x29d322['update'](_0x14679f)[_0x8e65('0x21')](function(_0x20d486){return _0x20d486;});}return null;};}function removeEntity(_0x1aab88,_0x26a14d){return function(_0x560068){if(_0x560068){return _0x560068[_0x8e65('0x22')]()[_0x8e65('0x21')](function(){var _0x22ccb5=_0x560068[_0x8e65('0x23')]({'plain':!![]});var _0x9f0dc6=_0x8e65('0x24');return db[_0x8e65('0x25')][_0x8e65('0x22')]({'where':{'type':_0x9f0dc6,'resourceId':_0x22ccb5['id']}})[_0x8e65('0x21')](function(){return _0x560068;});})[_0x8e65('0x21')](function(){_0x1aab88['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x979b0d,_0x265bf6){return function(_0x48a742){if(!_0x48a742){_0x979b0d[_0x8e65('0x18')](0x194);}return _0x48a742;};}function handleError(_0x1857fd,_0x46e55f){_0x46e55f=_0x46e55f||0x1f4;return function(_0x2c888b){logger['error'](_0x2c888b['stack']);if(_0x2c888b[_0x8e65('0x26')]){delete _0x2c888b[_0x8e65('0x26')];}_0x1857fd[_0x8e65('0x1d')](_0x46e55f)[_0x8e65('0x27')](_0x2c888b);};}exports[_0x8e65('0x28')]=function(_0x436481,_0x4cb468){var _0x7d15e5={},_0x2b6954={},_0x4c222a={'count':0x0,'rows':[]};var _0x5f3678=_[_0x8e65('0x29')](db[_0x8e65('0x2a')][_0x8e65('0x2b')],function(_0x4b501c){return{'name':_0x4b501c[_0x8e65('0x2c')],'type':_0x4b501c[_0x8e65('0x2d')]['key']};});_0x2b6954[_0x8e65('0x2e')]=_[_0x8e65('0x29')](_0x5f3678,'name');_0x2b6954[_0x8e65('0x2f')]=_['keys'](_0x436481[_0x8e65('0x2f')]);_0x2b6954[_0x8e65('0x30')]=_[_0x8e65('0x31')](_0x2b6954[_0x8e65('0x2e')],_0x2b6954[_0x8e65('0x2f')]);_0x7d15e5[_0x8e65('0x32')]=_[_0x8e65('0x31')](_0x2b6954[_0x8e65('0x2e')],qs[_0x8e65('0x33')](_0x436481[_0x8e65('0x2f')]['fields']));_0x7d15e5[_0x8e65('0x32')]=_0x7d15e5['attributes'][_0x8e65('0x34')]?_0x7d15e5['attributes']:_0x2b6954[_0x8e65('0x2e')];if(!_0x436481[_0x8e65('0x2f')][_0x8e65('0x35')](_0x8e65('0x36'))){_0x7d15e5[_0x8e65('0x37')]=qs[_0x8e65('0x37')](_0x436481['query'][_0x8e65('0x37')]);_0x7d15e5[_0x8e65('0x1b')]=qs[_0x8e65('0x1b')](_0x436481[_0x8e65('0x2f')][_0x8e65('0x1b')]);}_0x7d15e5[_0x8e65('0x38')]=qs[_0x8e65('0x39')](_0x436481['query'][_0x8e65('0x39')]);_0x7d15e5[_0x8e65('0x3a')]=qs[_0x8e65('0x30')](_[_0x8e65('0x3b')](_0x436481['query'],_0x2b6954['filters']),_0x5f3678);if(_0x436481[_0x8e65('0x2f')][_0x8e65('0x3c')]){_0x7d15e5[_0x8e65('0x3a')]=_[_0x8e65('0x3d')](_0x7d15e5[_0x8e65('0x3a')],{'$or':[{'key':{'$like':'%'+_0x436481[_0x8e65('0x2f')][_0x8e65('0x3c')]+'%'}},{'value':{'$like':'%'+_0x436481['query'][_0x8e65('0x3c')]+'%'}}]});}_0x7d15e5=_[_0x8e65('0x3d')]({},_0x7d15e5,_0x436481[_0x8e65('0x3e')]);var _0x2d417f={'where':_0x7d15e5[_0x8e65('0x3a')]};return db[_0x8e65('0x2a')][_0x8e65('0x3f')](_0x2d417f)[_0x8e65('0x21')](function(_0x4b97ee){_0x4c222a['count']=_0x4b97ee;if(_0x436481[_0x8e65('0x2f')][_0x8e65('0x40')]){_0x7d15e5[_0x8e65('0x41')]=[{'all':!![]}];}return db['CannedAnswer'][_0x8e65('0x42')](_0x7d15e5);})[_0x8e65('0x21')](function(_0x371188){_0x4c222a[_0x8e65('0x43')]=_0x371188;return _0x4c222a;})['then'](respondWithFilteredResult(_0x4cb468,_0x7d15e5))[_0x8e65('0x44')](handleError(_0x4cb468,null));};exports[_0x8e65('0x45')]=function(_0x39ff12,_0x420fa3){var _0x555d90={'raw':!![],'where':{'id':_0x39ff12[_0x8e65('0x46')]['id']}},_0x2a072c={};_0x2a072c[_0x8e65('0x2e')]=_[_0x8e65('0x47')](db[_0x8e65('0x2a')][_0x8e65('0x2b')]);_0x2a072c[_0x8e65('0x2f')]=_[_0x8e65('0x47')](_0x39ff12[_0x8e65('0x2f')]);_0x2a072c['filters']=_[_0x8e65('0x31')](_0x2a072c[_0x8e65('0x2e')],_0x2a072c[_0x8e65('0x2f')]);_0x555d90['attributes']=_[_0x8e65('0x31')](_0x2a072c[_0x8e65('0x2e')],qs[_0x8e65('0x33')](_0x39ff12[_0x8e65('0x2f')][_0x8e65('0x33')]));_0x555d90[_0x8e65('0x32')]=_0x555d90[_0x8e65('0x32')][_0x8e65('0x34')]?_0x555d90[_0x8e65('0x32')]:_0x2a072c[_0x8e65('0x2e')];if(_0x39ff12['query'][_0x8e65('0x40')]){_0x555d90[_0x8e65('0x41')]=[{'all':!![]}];}_0x555d90=_[_0x8e65('0x3d')]({},_0x555d90,_0x39ff12[_0x8e65('0x3e')]);return db[_0x8e65('0x2a')][_0x8e65('0x48')](_0x555d90)[_0x8e65('0x21')](handleEntityNotFound(_0x420fa3,null))['then'](respondWithResult(_0x420fa3,null))[_0x8e65('0x44')](handleError(_0x420fa3,null));};exports[_0x8e65('0x49')]=function(_0x13cb86,_0x58fe37){if(_0x13cb86[_0x8e65('0x4a')]['id']){delete _0x13cb86[_0x8e65('0x4a')]['id'];}return db[_0x8e65('0x2a')][_0x8e65('0x48')]({'where':{'id':_0x13cb86[_0x8e65('0x46')]['id']}})[_0x8e65('0x21')](handleEntityNotFound(_0x58fe37,null))['then'](saveUpdates(_0x13cb86[_0x8e65('0x4a')],null))[_0x8e65('0x21')](respondWithResult(_0x58fe37,null))['catch'](handleError(_0x58fe37,null));};exports['destroy']=function(_0x581e74,_0x18c545){return db[_0x8e65('0x2a')][_0x8e65('0x48')]({'where':{'id':_0x581e74[_0x8e65('0x46')]['id']}})[_0x8e65('0x21')](handleEntityNotFound(_0x18c545,null))['then'](removeEntity(_0x18c545,null))[_0x8e65('0x44')](handleError(_0x18c545,null));};exports[_0x8e65('0x4b')]=function(_0x3725c3,_0x39ccad){var _0x1e5e6b={'key':_0x3725c3[_0x8e65('0x4a')][_0x8e65('0x4c')]};if(_0x3725c3[_0x8e65('0x4a')][_0x8e65('0x4d')]){_0x1e5e6b[_0x8e65('0x4d')]=_0x3725c3[_0x8e65('0x4a')]['MailAccountId'];}else if(_0x3725c3[_0x8e65('0x4a')]['SmsAccountId']){_0x1e5e6b[_0x8e65('0x4e')]=_0x3725c3[_0x8e65('0x4a')][_0x8e65('0x4e')];}else if(_0x3725c3[_0x8e65('0x4a')][_0x8e65('0x4f')]){_0x1e5e6b[_0x8e65('0x4f')]=_0x3725c3[_0x8e65('0x4a')]['OpenchannelAccountId'];}else if(_0x3725c3[_0x8e65('0x4a')][_0x8e65('0x50')]){_0x1e5e6b[_0x8e65('0x50')]=_0x3725c3[_0x8e65('0x4a')][_0x8e65('0x50')];}return db['CannedAnswer'][_0x8e65('0x48')]({'where':_0x1e5e6b})[_0x8e65('0x21')](function(_0x58e95b){if(_0x58e95b){throw new db[(_0x8e65('0x51'))][(_0x8e65('0x52'))](_0x8e65('0x53'));}return db['CannedAnswer']['create'](_0x3725c3['body']);})[_0x8e65('0x21')](function(_0x303a13){var _0x48c45d=_0x3725c3['user'][_0x8e65('0x23')]({'plain':!![]});if(!_0x48c45d)throw new Error(_0x8e65('0x54'));if(_0x48c45d['role']===_0x8e65('0x55')){var _0x3c3335=_0x303a13[_0x8e65('0x23')]({'plain':!![]});return db[_0x8e65('0x56')]['find']({'where':{'name':'CannedAnswers','userProfileId':_0x48c45d[_0x8e65('0x57')]},'raw':!![]})[_0x8e65('0x21')](function(_0x2b8fb1){if(_0x2b8fb1&&_0x2b8fb1['autoAssociation']===0x0){return db['UserProfileResource'][_0x8e65('0x4b')]({'name':_0x3c3335[_0x8e65('0x26')],'resourceId':_0x3c3335['id'],'type':_0x2b8fb1[_0x8e65('0x26')],'sectionId':_0x2b8fb1['id']},{})[_0x8e65('0x21')](function(){return _0x303a13;});}else{return _0x303a13;}})[_0x8e65('0x44')](function(_0x19079d){logger[_0x8e65('0x58')](_0x8e65('0x59'),_0x19079d);throw _0x19079d;});}return _0x303a13;})[_0x8e65('0x21')](respondWithResult(_0x39ccad,0xc9))[_0x8e65('0x44')](handleError(_0x39ccad,null));};
\ No newline at end of file
+var _0xed32=['undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','get','UserProfileResource','stack','name','index','map','CannedAnswer','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','include','findAll','catch','show','params','rawAttributes','includeAll','body','find','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','user','role','UserProfileSection','userProfileId','error','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xed32,0x1ed));var _0x2ed3=function(_0x279d37,_0x14de3f){_0x279d37=_0x279d37-0x0;var _0x530173=_0xed32[_0x279d37];return _0x530173;};'use strict';var emlformat=require(_0x2ed3('0x0'));var rimraf=require(_0x2ed3('0x1'));var zipdir=require(_0x2ed3('0x2'));var jsonpatch=require(_0x2ed3('0x3'));var rp=require(_0x2ed3('0x4'));var moment=require(_0x2ed3('0x5'));var BPromise=require(_0x2ed3('0x6'));var Mustache=require(_0x2ed3('0x7'));var util=require(_0x2ed3('0x8'));var path=require(_0x2ed3('0x9'));var sox=require(_0x2ed3('0xa'));var csv=require(_0x2ed3('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2ed3('0xc'));var squel=require(_0x2ed3('0xd'));var crypto=require('crypto');var jsforce=require(_0x2ed3('0xe'));var deskjs=require(_0x2ed3('0xf'));var toCsv=require(_0x2ed3('0xb'));var querystring=require(_0x2ed3('0x10'));var Papa=require(_0x2ed3('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x2ed3('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x2ed3('0x13'));var utils=require(_0x2ed3('0x14'));var config=require(_0x2ed3('0x15'));var licenseUtil=require(_0x2ed3('0x16'));var db=require(_0x2ed3('0x17'))['db'];function respondWithStatusCode(_0x3ecb67,_0x374246){_0x374246=_0x374246||0xcc;return function(_0x5c2c59){if(_0x5c2c59){return _0x3ecb67[_0x2ed3('0x18')](_0x374246);}return _0x3ecb67[_0x2ed3('0x19')](_0x374246)[_0x2ed3('0x1a')]();};}function respondWithResult(_0x2472d6,_0x501a2d){_0x501a2d=_0x501a2d||0xc8;return function(_0x25b8be){if(_0x25b8be){return _0x2472d6[_0x2ed3('0x19')](_0x501a2d)[_0x2ed3('0x1b')](_0x25b8be);}};}function respondWithFilteredResult(_0x545fc0,_0x13e3c6){return function(_0x22c39a){if(_0x22c39a){var _0x5e7f11=typeof _0x13e3c6[_0x2ed3('0x1c')]===_0x2ed3('0x1d')&&typeof _0x13e3c6[_0x2ed3('0x1e')]===_0x2ed3('0x1d');var _0x5807ca=_0x22c39a[_0x2ed3('0x1f')];var _0x1ea53b=_0x5e7f11?0x0:_0x13e3c6[_0x2ed3('0x1c')];var _0x540fd2=_0x5e7f11?_0x22c39a[_0x2ed3('0x1f')]:_0x13e3c6[_0x2ed3('0x1c')]+_0x13e3c6[_0x2ed3('0x1e')];var _0x21f34f;if(_0x540fd2>=_0x5807ca){_0x540fd2=_0x5807ca;_0x21f34f=0xc8;}else{_0x21f34f=0xce;}_0x545fc0[_0x2ed3('0x19')](_0x21f34f);return _0x545fc0[_0x2ed3('0x20')](_0x2ed3('0x21'),_0x1ea53b+'-'+_0x540fd2+'/'+_0x5807ca)[_0x2ed3('0x1b')](_0x22c39a);}return null;};}function patchUpdates(_0x2fa12b){return function(_0x660a62){try{jsonpatch['apply'](_0x660a62,_0x2fa12b,!![]);}catch(_0x455709){return BPromise[_0x2ed3('0x22')](_0x455709);}return _0x660a62[_0x2ed3('0x23')]();};}function saveUpdates(_0x58d28e,_0x414386){return function(_0x1bf622){if(_0x1bf622){return _0x1bf622[_0x2ed3('0x24')](_0x58d28e)[_0x2ed3('0x25')](function(_0xbaf73f){return _0xbaf73f;});}return null;};}function removeEntity(_0x47f919,_0x30fbb2){return function(_0xb30e6c){if(_0xb30e6c){return _0xb30e6c[_0x2ed3('0x26')]()[_0x2ed3('0x25')](function(){var _0x2d56d2=_0xb30e6c[_0x2ed3('0x27')]({'plain':!![]});var _0x4a5d3c='CannedAnswers';return db[_0x2ed3('0x28')][_0x2ed3('0x26')]({'where':{'type':_0x4a5d3c,'resourceId':_0x2d56d2['id']}})[_0x2ed3('0x25')](function(){return _0xb30e6c;});})[_0x2ed3('0x25')](function(){_0x47f919[_0x2ed3('0x19')](0xcc)[_0x2ed3('0x1a')]();});}};}function handleEntityNotFound(_0x269aa4,_0x132dc2){return function(_0x5f030a){if(!_0x5f030a){_0x269aa4['sendStatus'](0x194);}return _0x5f030a;};}function handleError(_0x58ae92,_0x2d8fae){_0x2d8fae=_0x2d8fae||0x1f4;return function(_0x151c1e){logger['error'](_0x151c1e[_0x2ed3('0x29')]);if(_0x151c1e[_0x2ed3('0x2a')]){delete _0x151c1e[_0x2ed3('0x2a')];}_0x58ae92[_0x2ed3('0x19')](_0x2d8fae)['send'](_0x151c1e);};}exports[_0x2ed3('0x2b')]=function(_0x19468a,_0x4b8719){var _0x359499={},_0x581284={},_0x1bf102={'count':0x0,'rows':[]};var _0x5c79f0=_[_0x2ed3('0x2c')](db[_0x2ed3('0x2d')]['rawAttributes'],function(_0x18d420){return{'name':_0x18d420[_0x2ed3('0x2e')],'type':_0x18d420[_0x2ed3('0x2f')][_0x2ed3('0x30')]};});_0x581284[_0x2ed3('0x31')]=_[_0x2ed3('0x2c')](_0x5c79f0,_0x2ed3('0x2a'));_0x581284[_0x2ed3('0x32')]=_[_0x2ed3('0x33')](_0x19468a[_0x2ed3('0x32')]);_0x581284[_0x2ed3('0x34')]=_['intersection'](_0x581284[_0x2ed3('0x31')],_0x581284['query']);_0x359499[_0x2ed3('0x35')]=_[_0x2ed3('0x36')](_0x581284[_0x2ed3('0x31')],qs[_0x2ed3('0x37')](_0x19468a[_0x2ed3('0x32')]['fields']));_0x359499[_0x2ed3('0x35')]=_0x359499[_0x2ed3('0x35')][_0x2ed3('0x38')]?_0x359499[_0x2ed3('0x35')]:_0x581284[_0x2ed3('0x31')];if(!_0x19468a[_0x2ed3('0x32')][_0x2ed3('0x39')](_0x2ed3('0x3a'))){_0x359499[_0x2ed3('0x1e')]=qs['limit'](_0x19468a[_0x2ed3('0x32')][_0x2ed3('0x1e')]);_0x359499[_0x2ed3('0x1c')]=qs['offset'](_0x19468a[_0x2ed3('0x32')][_0x2ed3('0x1c')]);}_0x359499[_0x2ed3('0x3b')]=qs[_0x2ed3('0x3c')](_0x19468a[_0x2ed3('0x32')][_0x2ed3('0x3c')]);_0x359499[_0x2ed3('0x3d')]=qs[_0x2ed3('0x34')](_['pick'](_0x19468a[_0x2ed3('0x32')],_0x581284[_0x2ed3('0x34')]),_0x5c79f0);if(_0x19468a[_0x2ed3('0x32')][_0x2ed3('0x3e')]){_0x359499[_0x2ed3('0x3d')]=_['merge'](_0x359499[_0x2ed3('0x3d')],{'$or':[{'key':{'$like':'%'+_0x19468a['query'][_0x2ed3('0x3e')]+'%'}},{'value':{'$like':'%'+_0x19468a[_0x2ed3('0x32')][_0x2ed3('0x3e')]+'%'}}]});}_0x359499=_[_0x2ed3('0x3f')]({},_0x359499,_0x19468a[_0x2ed3('0x40')]);var _0x364a47={'where':_0x359499[_0x2ed3('0x3d')]};return db['CannedAnswer'][_0x2ed3('0x1f')](_0x364a47)[_0x2ed3('0x25')](function(_0x24fc4f){_0x1bf102['count']=_0x24fc4f;if(_0x19468a['query']['includeAll']){_0x359499[_0x2ed3('0x41')]=[{'all':!![]}];}return db['CannedAnswer'][_0x2ed3('0x42')](_0x359499);})[_0x2ed3('0x25')](function(_0x47431a){_0x1bf102['rows']=_0x47431a;return _0x1bf102;})[_0x2ed3('0x25')](respondWithFilteredResult(_0x4b8719,_0x359499))[_0x2ed3('0x43')](handleError(_0x4b8719,null));};exports[_0x2ed3('0x44')]=function(_0x1e4c32,_0x14c5f8){var _0x5a6aa2={'raw':!![],'where':{'id':_0x1e4c32[_0x2ed3('0x45')]['id']}},_0x10caed={};_0x10caed[_0x2ed3('0x31')]=_[_0x2ed3('0x33')](db['CannedAnswer'][_0x2ed3('0x46')]);_0x10caed[_0x2ed3('0x32')]=_[_0x2ed3('0x33')](_0x1e4c32[_0x2ed3('0x32')]);_0x10caed[_0x2ed3('0x34')]=_[_0x2ed3('0x36')](_0x10caed['model'],_0x10caed['query']);_0x5a6aa2[_0x2ed3('0x35')]=_[_0x2ed3('0x36')](_0x10caed['model'],qs[_0x2ed3('0x37')](_0x1e4c32[_0x2ed3('0x32')][_0x2ed3('0x37')]));_0x5a6aa2[_0x2ed3('0x35')]=_0x5a6aa2['attributes'][_0x2ed3('0x38')]?_0x5a6aa2[_0x2ed3('0x35')]:_0x10caed['model'];if(_0x1e4c32['query'][_0x2ed3('0x47')]){_0x5a6aa2[_0x2ed3('0x41')]=[{'all':!![]}];}_0x5a6aa2=_['merge']({},_0x5a6aa2,_0x1e4c32['options']);return db[_0x2ed3('0x2d')]['find'](_0x5a6aa2)['then'](handleEntityNotFound(_0x14c5f8,null))[_0x2ed3('0x25')](respondWithResult(_0x14c5f8,null))[_0x2ed3('0x43')](handleError(_0x14c5f8,null));};exports[_0x2ed3('0x24')]=function(_0x5726cc,_0x2da8b4){if(_0x5726cc['body']['id']){delete _0x5726cc[_0x2ed3('0x48')]['id'];}return db[_0x2ed3('0x2d')][_0x2ed3('0x49')]({'where':{'id':_0x5726cc['params']['id']}})['then'](handleEntityNotFound(_0x2da8b4,null))[_0x2ed3('0x25')](saveUpdates(_0x5726cc['body'],null))['then'](respondWithResult(_0x2da8b4,null))[_0x2ed3('0x43')](handleError(_0x2da8b4,null));};exports[_0x2ed3('0x26')]=function(_0x286e08,_0x14155c){return db[_0x2ed3('0x2d')][_0x2ed3('0x49')]({'where':{'id':_0x286e08[_0x2ed3('0x45')]['id']}})[_0x2ed3('0x25')](handleEntityNotFound(_0x14155c,null))[_0x2ed3('0x25')](removeEntity(_0x14155c,null))['catch'](handleError(_0x14155c,null));};exports[_0x2ed3('0x4a')]=function(_0xc6dd7c,_0x4ff93d){var _0x48bb7a={'key':_0xc6dd7c['body'][_0x2ed3('0x30')]};if(_0xc6dd7c['body'][_0x2ed3('0x4b')]){_0x48bb7a[_0x2ed3('0x4b')]=_0xc6dd7c[_0x2ed3('0x48')][_0x2ed3('0x4b')];}else if(_0xc6dd7c[_0x2ed3('0x48')][_0x2ed3('0x4c')]){_0x48bb7a[_0x2ed3('0x4c')]=_0xc6dd7c[_0x2ed3('0x48')][_0x2ed3('0x4c')];}else if(_0xc6dd7c[_0x2ed3('0x48')]['OpenchannelAccountId']){_0x48bb7a[_0x2ed3('0x4d')]=_0xc6dd7c['body'][_0x2ed3('0x4d')];}else if(_0xc6dd7c[_0x2ed3('0x48')][_0x2ed3('0x4e')]){_0x48bb7a[_0x2ed3('0x4e')]=_0xc6dd7c['body'][_0x2ed3('0x4e')];}return db[_0x2ed3('0x2d')][_0x2ed3('0x49')]({'where':_0x48bb7a})[_0x2ed3('0x25')](function(_0x439b09){if(_0x439b09){throw new db[(_0x2ed3('0x4f'))][(_0x2ed3('0x50'))](_0x2ed3('0x51'));}return db['CannedAnswer'][_0x2ed3('0x4a')](_0xc6dd7c[_0x2ed3('0x48')]);})[_0x2ed3('0x25')](function(_0x42465d){var _0x50d773=_0xc6dd7c[_0x2ed3('0x52')]['get']({'plain':!![]});if(!_0x50d773)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x50d773[_0x2ed3('0x53')]===_0x2ed3('0x52')){var _0x290e15=_0x42465d[_0x2ed3('0x27')]({'plain':!![]});return db[_0x2ed3('0x54')][_0x2ed3('0x49')]({'where':{'name':'CannedAnswers','userProfileId':_0x50d773[_0x2ed3('0x55')]},'raw':!![]})[_0x2ed3('0x25')](function(_0x58a2c7){if(_0x58a2c7&&_0x58a2c7['autoAssociation']===0x0){return db['UserProfileResource'][_0x2ed3('0x4a')]({'name':_0x290e15[_0x2ed3('0x2a')],'resourceId':_0x290e15['id'],'type':_0x58a2c7[_0x2ed3('0x2a')],'sectionId':_0x58a2c7['id']},{})[_0x2ed3('0x25')](function(){return _0x42465d;});}else{return _0x42465d;}})[_0x2ed3('0x43')](function(_0x490dd8){logger[_0x2ed3('0x56')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x490dd8);throw _0x490dd8;});}return _0x42465d;})['then'](respondWithResult(_0x4ff93d,0xc9))[_0x2ed3('0x43')](handleError(_0x4ff93d,null));};
\ No newline at end of file
index ebef77d..8756a32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8d5=['utf8mb4_unicode_ci','lodash','util','bluebird','rimraf','../../config/environment','./cannedAnswer.attributes','exports','define','CannedAnswer','tools_canned_answers','utf8mb4'];(function(_0x250917,_0x1fcdb7){var _0x178cb2=function(_0x3cfda7){while(--_0x3cfda7){_0x250917['push'](_0x250917['shift']());}};_0x178cb2(++_0x1fcdb7);}(_0xc8d5,0xa9));var _0x5c8d=function(_0x6025e0,_0x49e864){_0x6025e0=_0x6025e0-0x0;var _0x403b81=_0xc8d5[_0x6025e0];return _0x403b81;};'use strict';var _=require(_0x5c8d('0x0'));var util=require(_0x5c8d('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x5c8d('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x5c8d('0x3'));var config=require(_0x5c8d('0x4'));var attributes=require(_0x5c8d('0x5'));module[_0x5c8d('0x6')]=function(_0x23d769,_0x3bd8d9){return _0x23d769[_0x5c8d('0x7')](_0x5c8d('0x8'),attributes,{'tableName':_0x5c8d('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x5c8d('0xa'),'collate':_0x5c8d('0xb')});};
\ No newline at end of file
+var _0x253c=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cannedAnswer.attributes','CannedAnswer','tools_canned_answers','utf8mb4_unicode_ci','lodash','util','../../config/logger'];(function(_0x339890,_0x5e62d9){var _0x464a34=function(_0x38b2b2){while(--_0x38b2b2){_0x339890['push'](_0x339890['shift']());}};_0x464a34(++_0x5e62d9);}(_0x253c,0x13f));var _0xc253=function(_0x5236a7,_0x410673){_0x5236a7=_0x5236a7-0x0;var _0x55831a=_0x253c[_0x5236a7];return _0x55831a;};'use strict';var _=require(_0xc253('0x0'));var util=require(_0xc253('0x1'));var logger=require(_0xc253('0x2'))(_0xc253('0x3'));var moment=require(_0xc253('0x4'));var BPromise=require(_0xc253('0x5'));var rp=require(_0xc253('0x6'));var fs=require('fs');var path=require(_0xc253('0x7'));var rimraf=require(_0xc253('0x8'));var config=require(_0xc253('0x9'));var attributes=require(_0xc253('0xa'));module['exports']=function(_0xfc59d7,_0x10ef82){return _0xfc59d7['define'](_0xc253('0xb'),attributes,{'tableName':_0xc253('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xc253('0xd')});};
\ No newline at end of file
index 15c0fe3..e29ec4a 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(_0x2dc69a,_0x176ec5){var _0x463ab3=function(_0x595d3e){while(--_0x595d3e){_0x2dc69a['push'](_0x2dc69a['shift']());}};_0x463ab3(++_0x176ec5);}(_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 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(_0x234193,_0x2fbc79){var _0x3b86a1=function(_0x142f7e){while(--_0x142f7e){_0x234193['push'](_0x234193['shift']());}};_0x3b86a1(++_0x2fbc79);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0xa9e0[_0x2a6809];return _0x11c371;};'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 8257641..7175299 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e9a=['get','isAuthenticated','index','/:id','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller'];(function(_0xfcb7cd,_0x4efcb7){var _0x142379=function(_0x5a5677){while(--_0x5a5677){_0xfcb7cd['push'](_0xfcb7cd['shift']());}};_0x142379(++_0x4efcb7);}(_0x8e9a,0x137));var _0xa8e9=function(_0x110282,_0x30c090){_0x110282=_0x110282-0x0;var _0x3167f8=_0x8e9a[_0x110282];return _0x3167f8;};'use strict';var multer=require(_0xa8e9('0x0'));var util=require('util');var path=require(_0xa8e9('0x1'));var timeout=require(_0xa8e9('0x2'));var express=require(_0xa8e9('0x3'));var router=express[_0xa8e9('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xa8e9('0x5'));var interaction=require(_0xa8e9('0x6'));var config=require(_0xa8e9('0x7'));var controller=require(_0xa8e9('0x8'));router[_0xa8e9('0x9')]('/',auth[_0xa8e9('0xa')](),controller[_0xa8e9('0xb')]);router[_0xa8e9('0x9')](_0xa8e9('0xc'),auth[_0xa8e9('0xa')](),controller['show']);router[_0xa8e9('0xd')]('/',auth[_0xa8e9('0xa')](),controller[_0xa8e9('0xe')]);router[_0xa8e9('0xf')](_0xa8e9('0xc'),auth[_0xa8e9('0xa')](),controller[_0xa8e9('0x10')]);router[_0xa8e9('0x11')](_0xa8e9('0xc'),auth['isAuthenticated'](),controller[_0xa8e9('0x12')]);module[_0xa8e9('0x13')]=router;
\ No newline at end of file
+var _0x19a5=['/:id','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./cannedAnswer.controller','isAuthenticated','post','put'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x19a5,0x16a));var _0x519a=function(_0x34552c,_0x7d1c56){_0x34552c=_0x34552c-0x0;var _0x2ba90f=_0x19a5[_0x34552c];return _0x2ba90f;};'use strict';var multer=require(_0x519a('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x519a('0x1'));var express=require('express');var router=express[_0x519a('0x2')]();var fs_extra=require(_0x519a('0x3'));var auth=require(_0x519a('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x519a('0x5'));var controller=require(_0x519a('0x6'));router['get']('/',auth[_0x519a('0x7')](),controller['index']);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0x519a('0x8')]('/',auth['isAuthenticated'](),controller['create']);router[_0x519a('0x9')](_0x519a('0xa'),auth[_0x519a('0x7')](),controller['update']);router['delete'](_0x519a('0xa'),auth[_0x519a('0x7')](),controller['destroy']);module[_0x519a('0xb')]=router;
\ No newline at end of file
index f447c3d..5386a92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e6b=['STRING','INTEGER','DATE','1970-01-01\x2000:00:01'];(function(_0x384231,_0x50be41){var _0x2480bf=function(_0x1c4838){while(--_0x1c4838){_0x384231['push'](_0x384231['shift']());}};_0x2480bf(++_0x50be41);}(_0x7e6b,0x186));var _0xb7e6=function(_0x18d91f,_0x50c470){_0x18d91f=_0x18d91f-0x0;var _0x3f2571=_0x7e6b[_0x18d91f];return _0x3f2571;};'use strict';var Sequelize=require('sequelize');module['exports']={'calldate':{'type':Sequelize[_0xb7e6('0x0')],'allowNull':![],'defaultValue':_0xb7e6('0x1')},'clid':{'type':Sequelize['STRING']},'src':{'type':Sequelize[_0xb7e6('0x2')]},'dst':{'type':Sequelize['STRING']},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xb7e6('0x2')]},'dstchannel':{'type':Sequelize[_0xb7e6('0x2')]},'lastapp':{'type':Sequelize[_0xb7e6('0x2')]},'lastdata':{'type':Sequelize[_0xb7e6('0x2')]},'duration':{'type':Sequelize[_0xb7e6('0x3')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0xb7e6('0x3')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0xb7e6('0x2')]},'userfield':{'type':Sequelize[_0xb7e6('0x2')]},'uniqueid':{'type':Sequelize[_0xb7e6('0x2')]},'linkedid':{'type':Sequelize[_0xb7e6('0x2')]},'sequence':{'type':Sequelize['STRING']},'peeraccount':{'type':Sequelize[_0xb7e6('0x2')]},'type':{'type':Sequelize[_0xb7e6('0x2')]},'tag':{'type':Sequelize[_0xb7e6('0x2')]}};
\ No newline at end of file
+var _0xbb95=['exports','STRING','INTEGER','sequelize'];(function(_0x4edf8e,_0x418030){var _0x5b48cd=function(_0x2a8843){while(--_0x2a8843){_0x4edf8e['push'](_0x4edf8e['shift']());}};_0x5b48cd(++_0x418030);}(_0xbb95,0x7f));var _0x5bb9=function(_0x146b85,_0xf9dd16){_0x146b85=_0x146b85-0x0;var _0x5a14b4=_0xbb95[_0x146b85];return _0x5a14b4;};'use strict';var Sequelize=require(_0x5bb9('0x0'));module[_0x5bb9('0x1')]={'calldate':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':'1970-01-01\x2000:00:01'},'clid':{'type':Sequelize[_0x5bb9('0x2')]},'src':{'type':Sequelize[_0x5bb9('0x2')]},'dst':{'type':Sequelize['STRING']},'dcontext':{'type':Sequelize[_0x5bb9('0x2')]},'channel':{'type':Sequelize['STRING']},'dstchannel':{'type':Sequelize['STRING']},'lastapp':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize[_0x5bb9('0x2')]},'duration':{'type':Sequelize[_0x5bb9('0x3')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x5bb9('0x2')]},'amaflags':{'type':Sequelize[_0x5bb9('0x3')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x5bb9('0x2')]},'userfield':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x5bb9('0x2')]},'linkedid':{'type':Sequelize[_0x5bb9('0x2')]},'sequence':{'type':Sequelize[_0x5bb9('0x2')]},'peeraccount':{'type':Sequelize[_0x5bb9('0x2')]},'type':{'type':Sequelize[_0x5bb9('0x2')]},'tag':{'type':Sequelize[_0x5bb9('0x2')]}};
\ No newline at end of file
index 099f356..3337fa3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce50=['api','../../config/utils','../../config/environment','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','error','name','index','map','Cdr','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','show','params','include','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xce50,0x1d8));var _0x0ce5=function(_0x4b2436,_0x452299){_0x4b2436=_0x4b2436-0x0;var _0x4f5ab2=_0xce50[_0x4b2436];return _0x4f5ab2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0ce5('0x0'));var zipdir=require(_0x0ce5('0x1'));var jsonpatch=require(_0x0ce5('0x2'));var rp=require(_0x0ce5('0x3'));var moment=require(_0x0ce5('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x0ce5('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x0ce5('0x6'));var ejs=require(_0x0ce5('0x7'));var fs=require('fs');var fs_extra=require(_0x0ce5('0x8'));var _=require(_0x0ce5('0x9'));var squel=require('squel');var crypto=require(_0x0ce5('0xa'));var jsforce=require(_0x0ce5('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x0ce5('0x6'));var querystring=require('querystring');var Papa=require(_0x0ce5('0xc'));var Redis=require(_0x0ce5('0xd'));var authService=require(_0x0ce5('0xe'));var qs=require(_0x0ce5('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0ce5('0x10'));var logger=require(_0x0ce5('0x11'))(_0x0ce5('0x12'));var utils=require(_0x0ce5('0x13'));var config=require(_0x0ce5('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x529265,_0x59c22e){_0x59c22e=_0x59c22e||0xcc;return function(_0xb530fa){if(_0xb530fa){return _0x529265[_0x0ce5('0x15')](_0x59c22e);}return _0x529265[_0x0ce5('0x16')](_0x59c22e)['end']();};}function respondWithResult(_0x85bbb,_0x117fa9){_0x117fa9=_0x117fa9||0xc8;return function(_0x5f4317){if(_0x5f4317){return _0x85bbb[_0x0ce5('0x16')](_0x117fa9)['json'](_0x5f4317);}};}function respondWithFilteredResult(_0x1ece6f,_0x1dd856){return function(_0x3b5a36){if(_0x3b5a36){var _0x13ce5a=typeof _0x1dd856[_0x0ce5('0x17')]===_0x0ce5('0x18')&&typeof _0x1dd856[_0x0ce5('0x19')]===_0x0ce5('0x18');var _0x5eab29=_0x3b5a36[_0x0ce5('0x1a')];var _0x4292ce=_0x13ce5a?0x0:_0x1dd856['offset'];var _0x4f5e0b=_0x13ce5a?_0x3b5a36[_0x0ce5('0x1a')]:_0x1dd856['offset']+_0x1dd856[_0x0ce5('0x19')];var _0x477451;if(_0x4f5e0b>=_0x5eab29){_0x4f5e0b=_0x5eab29;_0x477451=0xc8;}else{_0x477451=0xce;}_0x1ece6f[_0x0ce5('0x16')](_0x477451);return _0x1ece6f[_0x0ce5('0x1b')](_0x0ce5('0x1c'),_0x4292ce+'-'+_0x4f5e0b+'/'+_0x5eab29)[_0x0ce5('0x1d')](_0x3b5a36);}return null;};}function patchUpdates(_0x57d9da){return function(_0x2cc733){try{jsonpatch[_0x0ce5('0x1e')](_0x2cc733,_0x57d9da,!![]);}catch(_0x1a1b8a){return BPromise[_0x0ce5('0x1f')](_0x1a1b8a);}return _0x2cc733['save']();};}function saveUpdates(_0x20f520,_0x4e8e46){return function(_0x16ff16){if(_0x16ff16){return _0x16ff16[_0x0ce5('0x20')](_0x20f520)[_0x0ce5('0x21')](function(_0x78be90){return _0x78be90;});}return null;};}function removeEntity(_0x334e7d,_0xbb1a2c){return function(_0x3ca9de){if(_0x3ca9de){return _0x3ca9de[_0x0ce5('0x22')]()[_0x0ce5('0x21')](function(){_0x334e7d[_0x0ce5('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5392a4,_0x2332d4){return function(_0x56ef06){if(!_0x56ef06){_0x5392a4['sendStatus'](0x194);}return _0x56ef06;};}function handleError(_0x73f240,_0x564276){_0x564276=_0x564276||0x1f4;return function(_0x2c7414){logger[_0x0ce5('0x23')](_0x2c7414['stack']);if(_0x2c7414['name']){delete _0x2c7414[_0x0ce5('0x24')];}_0x73f240[_0x0ce5('0x16')](_0x564276)['send'](_0x2c7414);};}exports[_0x0ce5('0x25')]=function(_0x470fb6,_0x3d7153){var _0x54a385={},_0x55aa97={},_0x343137={'count':0x0,'rows':[]};var _0x28080b=_[_0x0ce5('0x26')](db[_0x0ce5('0x27')][_0x0ce5('0x28')],function(_0x44dabc){return{'name':_0x44dabc[_0x0ce5('0x29')],'type':_0x44dabc[_0x0ce5('0x2a')][_0x0ce5('0x2b')]};});_0x55aa97[_0x0ce5('0x2c')]=_[_0x0ce5('0x26')](_0x28080b,_0x0ce5('0x24'));_0x55aa97[_0x0ce5('0x2d')]=_[_0x0ce5('0x2e')](_0x470fb6[_0x0ce5('0x2d')]);_0x55aa97[_0x0ce5('0x2f')]=_[_0x0ce5('0x30')](_0x55aa97[_0x0ce5('0x2c')],_0x55aa97[_0x0ce5('0x2d')]);_0x54a385[_0x0ce5('0x31')]=_[_0x0ce5('0x30')](_0x55aa97[_0x0ce5('0x2c')],qs['fields'](_0x470fb6[_0x0ce5('0x2d')][_0x0ce5('0x32')]));_0x54a385[_0x0ce5('0x31')]=_0x54a385['attributes'][_0x0ce5('0x33')]?_0x54a385[_0x0ce5('0x31')]:_0x55aa97[_0x0ce5('0x2c')];if(!_0x470fb6[_0x0ce5('0x2d')]['hasOwnProperty'](_0x0ce5('0x34'))){_0x54a385[_0x0ce5('0x19')]=qs[_0x0ce5('0x19')](_0x470fb6[_0x0ce5('0x2d')][_0x0ce5('0x19')]);_0x54a385[_0x0ce5('0x17')]=qs[_0x0ce5('0x17')](_0x470fb6[_0x0ce5('0x2d')][_0x0ce5('0x17')]);}_0x54a385[_0x0ce5('0x35')]=qs[_0x0ce5('0x36')](_0x470fb6[_0x0ce5('0x2d')]['sort']);_0x54a385[_0x0ce5('0x37')]=qs[_0x0ce5('0x2f')](_[_0x0ce5('0x38')](_0x470fb6['query'],_0x55aa97[_0x0ce5('0x2f')]),_0x28080b);if(_0x470fb6[_0x0ce5('0x2d')][_0x0ce5('0x39')]){_0x54a385[_0x0ce5('0x37')]=_['merge'](_0x54a385[_0x0ce5('0x37')],{'$or':_['map'](_0x28080b,function(_0x27cbee){if(_0x27cbee['type']!=='VIRTUAL'){var _0x3b30a4={};_0x3b30a4[_0x27cbee[_0x0ce5('0x24')]]={'$like':'%'+_0x470fb6[_0x0ce5('0x2d')]['filter']+'%'};return _0x3b30a4;}})});}_0x54a385=_[_0x0ce5('0x3a')]({},_0x54a385,_0x470fb6[_0x0ce5('0x3b')]);var _0x245ac6={'where':_0x54a385[_0x0ce5('0x37')]};return db['Cdr'][_0x0ce5('0x1a')](_0x245ac6)[_0x0ce5('0x21')](function(_0x238f52){_0x343137[_0x0ce5('0x1a')]=_0x238f52;if(_0x470fb6[_0x0ce5('0x2d')][_0x0ce5('0x3c')]){_0x54a385['include']=[{'all':!![]}];}return db[_0x0ce5('0x27')][_0x0ce5('0x3d')](_0x54a385);})[_0x0ce5('0x21')](function(_0x1fa06f){_0x343137[_0x0ce5('0x3e')]=_0x1fa06f;return _0x343137;})[_0x0ce5('0x21')](respondWithFilteredResult(_0x3d7153,_0x54a385))[_0x0ce5('0x3f')](handleError(_0x3d7153,null));};exports[_0x0ce5('0x40')]=function(_0xa9b36a,_0x48ebfc){var _0x5e280c={'raw':!![],'where':{'id':_0xa9b36a[_0x0ce5('0x41')]['id']}},_0x1a16b7={};_0x1a16b7['model']=_['keys'](db[_0x0ce5('0x27')][_0x0ce5('0x28')]);_0x1a16b7[_0x0ce5('0x2d')]=_[_0x0ce5('0x2e')](_0xa9b36a[_0x0ce5('0x2d')]);_0x1a16b7[_0x0ce5('0x2f')]=_[_0x0ce5('0x30')](_0x1a16b7[_0x0ce5('0x2c')],_0x1a16b7[_0x0ce5('0x2d')]);_0x5e280c[_0x0ce5('0x31')]=_['intersection'](_0x1a16b7['model'],qs['fields'](_0xa9b36a[_0x0ce5('0x2d')][_0x0ce5('0x32')]));_0x5e280c[_0x0ce5('0x31')]=_0x5e280c[_0x0ce5('0x31')][_0x0ce5('0x33')]?_0x5e280c[_0x0ce5('0x31')]:_0x1a16b7['model'];if(_0xa9b36a[_0x0ce5('0x2d')][_0x0ce5('0x3c')]){_0x5e280c[_0x0ce5('0x42')]=[{'all':!![]}];}_0x5e280c=_[_0x0ce5('0x3a')]({},_0x5e280c,_0xa9b36a['options']);return db[_0x0ce5('0x27')]['find'](_0x5e280c)['then'](handleEntityNotFound(_0x48ebfc,null))[_0x0ce5('0x21')](respondWithResult(_0x48ebfc,null))[_0x0ce5('0x3f')](handleError(_0x48ebfc,null));};exports[_0x0ce5('0x43')]=function(_0xf1fc01,_0x3a3ec5){return db[_0x0ce5('0x27')][_0x0ce5('0x43')](_0xf1fc01[_0x0ce5('0x44')],{})[_0x0ce5('0x21')](respondWithResult(_0x3a3ec5,0xc9))[_0x0ce5('0x3f')](handleError(_0x3a3ec5,null));};exports[_0x0ce5('0x20')]=function(_0x40e47c,_0x5629f4){if(_0x40e47c[_0x0ce5('0x44')]['id']){delete _0x40e47c['body']['id'];}return db[_0x0ce5('0x27')]['find']({'where':{'id':_0x40e47c['params']['id']}})['then'](handleEntityNotFound(_0x5629f4,null))[_0x0ce5('0x21')](saveUpdates(_0x40e47c['body'],null))['then'](respondWithResult(_0x5629f4,null))['catch'](handleError(_0x5629f4,null));};exports[_0x0ce5('0x22')]=function(_0x3cd81a,_0x1a9ce4){return db[_0x0ce5('0x27')]['find']({'where':{'id':_0x3cd81a['params']['id']}})[_0x0ce5('0x21')](handleEntityNotFound(_0x1a9ce4,null))[_0x0ce5('0x21')](removeEntity(_0x1a9ce4,null))[_0x0ce5('0x3f')](handleError(_0x1a9ce4,null));};exports[_0x0ce5('0x45')]=function(_0x4256e3,_0x30571c){return db[_0x0ce5('0x27')][_0x0ce5('0x45')]()[_0x0ce5('0x21')](respondWithResult(_0x30571c,null))[_0x0ce5('0x3f')](handleError(_0x30571c,null));};
\ No newline at end of file
+var _0xac9d=['fields','hasOwnProperty','order','sort','pick','filter','where','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','merge','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','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','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','destroy','sendStatus','error','stack','name','index','map','Cdr','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xac9d,0x14d));var _0xdac9=function(_0x474e22,_0x5d5515){_0x474e22=_0x474e22-0x0;var _0x76a179=_0xac9d[_0x474e22];return _0x76a179;};'use strict';var emlformat=require(_0xdac9('0x0'));var rimraf=require(_0xdac9('0x1'));var zipdir=require(_0xdac9('0x2'));var jsonpatch=require(_0xdac9('0x3'));var rp=require(_0xdac9('0x4'));var moment=require(_0xdac9('0x5'));var BPromise=require(_0xdac9('0x6'));var Mustache=require(_0xdac9('0x7'));var util=require('util');var path=require(_0xdac9('0x8'));var sox=require('sox');var csv=require(_0xdac9('0x9'));var ejs=require(_0xdac9('0xa'));var fs=require('fs');var fs_extra=require(_0xdac9('0xb'));var _=require(_0xdac9('0xc'));var squel=require(_0xdac9('0xd'));var crypto=require(_0xdac9('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xdac9('0xf'));var toCsv=require('to-csv');var querystring=require(_0xdac9('0x10'));var Papa=require(_0xdac9('0x11'));var Redis=require(_0xdac9('0x12'));var authService=require(_0xdac9('0x13'));var qs=require(_0xdac9('0x14'));var as=require(_0xdac9('0x15'));var hardwareService=require(_0xdac9('0x16'));var logger=require(_0xdac9('0x17'))(_0xdac9('0x18'));var utils=require('../../config/utils');var config=require(_0xdac9('0x19'));var licenseUtil=require(_0xdac9('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3d8e97,_0xeddbc1){_0xeddbc1=_0xeddbc1||0xcc;return function(_0xbfe6d8){if(_0xbfe6d8){return _0x3d8e97['sendStatus'](_0xeddbc1);}return _0x3d8e97[_0xdac9('0x1b')](_0xeddbc1)[_0xdac9('0x1c')]();};}function respondWithResult(_0x9e1bf6,_0x5f0bbd){_0x5f0bbd=_0x5f0bbd||0xc8;return function(_0x5dd536){if(_0x5dd536){return _0x9e1bf6[_0xdac9('0x1b')](_0x5f0bbd)[_0xdac9('0x1d')](_0x5dd536);}};}function respondWithFilteredResult(_0x50f9fe,_0x76af7a){return function(_0x36cbe4){if(_0x36cbe4){var _0x152ea5=typeof _0x76af7a[_0xdac9('0x1e')]===_0xdac9('0x1f')&&typeof _0x76af7a[_0xdac9('0x20')]===_0xdac9('0x1f');var _0xec1016=_0x36cbe4['count'];var _0x283343=_0x152ea5?0x0:_0x76af7a[_0xdac9('0x1e')];var _0x571e07=_0x152ea5?_0x36cbe4[_0xdac9('0x21')]:_0x76af7a[_0xdac9('0x1e')]+_0x76af7a[_0xdac9('0x20')];var _0x181d11;if(_0x571e07>=_0xec1016){_0x571e07=_0xec1016;_0x181d11=0xc8;}else{_0x181d11=0xce;}_0x50f9fe['status'](_0x181d11);return _0x50f9fe['set'](_0xdac9('0x22'),_0x283343+'-'+_0x571e07+'/'+_0xec1016)[_0xdac9('0x1d')](_0x36cbe4);}return null;};}function patchUpdates(_0x2b9d91){return function(_0x395ec7){try{jsonpatch['apply'](_0x395ec7,_0x2b9d91,!![]);}catch(_0x23ee5e){return BPromise[_0xdac9('0x23')](_0x23ee5e);}return _0x395ec7[_0xdac9('0x24')]();};}function saveUpdates(_0xae680a,_0xe7bd10){return function(_0x42317c){if(_0x42317c){return _0x42317c[_0xdac9('0x25')](_0xae680a)[_0xdac9('0x26')](function(_0x419f0c){return _0x419f0c;});}return null;};}function removeEntity(_0x33de5c,_0x5a0fa2){return function(_0x2943f5){if(_0x2943f5){return _0x2943f5[_0xdac9('0x27')]()[_0xdac9('0x26')](function(){_0x33de5c[_0xdac9('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1e631a,_0x5686db){return function(_0x3ce475){if(!_0x3ce475){_0x1e631a[_0xdac9('0x28')](0x194);}return _0x3ce475;};}function handleError(_0x566d8c,_0x433be9){_0x433be9=_0x433be9||0x1f4;return function(_0x5105f1){logger[_0xdac9('0x29')](_0x5105f1[_0xdac9('0x2a')]);if(_0x5105f1[_0xdac9('0x2b')]){delete _0x5105f1[_0xdac9('0x2b')];}_0x566d8c['status'](_0x433be9)['send'](_0x5105f1);};}exports[_0xdac9('0x2c')]=function(_0x170afd,_0x4fe3bd){var _0x4c4e21={},_0x3eed7a={},_0x3505c5={'count':0x0,'rows':[]};var _0x13efba=_[_0xdac9('0x2d')](db[_0xdac9('0x2e')][_0xdac9('0x2f')],function(_0xed99f9){return{'name':_0xed99f9[_0xdac9('0x30')],'type':_0xed99f9[_0xdac9('0x31')][_0xdac9('0x32')]};});_0x3eed7a[_0xdac9('0x33')]=_[_0xdac9('0x2d')](_0x13efba,_0xdac9('0x2b'));_0x3eed7a[_0xdac9('0x34')]=_[_0xdac9('0x35')](_0x170afd[_0xdac9('0x34')]);_0x3eed7a[_0xdac9('0x36')]=_[_0xdac9('0x37')](_0x3eed7a[_0xdac9('0x33')],_0x3eed7a[_0xdac9('0x34')]);_0x4c4e21[_0xdac9('0x38')]=_['intersection'](_0x3eed7a['model'],qs[_0xdac9('0x39')](_0x170afd[_0xdac9('0x34')][_0xdac9('0x39')]));_0x4c4e21[_0xdac9('0x38')]=_0x4c4e21[_0xdac9('0x38')]['length']?_0x4c4e21[_0xdac9('0x38')]:_0x3eed7a['model'];if(!_0x170afd[_0xdac9('0x34')][_0xdac9('0x3a')]('nolimit')){_0x4c4e21[_0xdac9('0x20')]=qs['limit'](_0x170afd['query'][_0xdac9('0x20')]);_0x4c4e21[_0xdac9('0x1e')]=qs[_0xdac9('0x1e')](_0x170afd[_0xdac9('0x34')][_0xdac9('0x1e')]);}_0x4c4e21[_0xdac9('0x3b')]=qs['sort'](_0x170afd[_0xdac9('0x34')][_0xdac9('0x3c')]);_0x4c4e21['where']=qs[_0xdac9('0x36')](_[_0xdac9('0x3d')](_0x170afd[_0xdac9('0x34')],_0x3eed7a[_0xdac9('0x36')]),_0x13efba);if(_0x170afd[_0xdac9('0x34')][_0xdac9('0x3e')]){_0x4c4e21[_0xdac9('0x3f')]=_['merge'](_0x4c4e21[_0xdac9('0x3f')],{'$or':_[_0xdac9('0x2d')](_0x13efba,function(_0x238769){if(_0x238769['type']!==_0xdac9('0x40')){var _0x338e4a={};_0x338e4a[_0x238769[_0xdac9('0x2b')]]={'$like':'%'+_0x170afd[_0xdac9('0x34')]['filter']+'%'};return _0x338e4a;}})});}_0x4c4e21=_['merge']({},_0x4c4e21,_0x170afd[_0xdac9('0x41')]);var _0xe47a3c={'where':_0x4c4e21[_0xdac9('0x3f')]};return db[_0xdac9('0x2e')][_0xdac9('0x21')](_0xe47a3c)['then'](function(_0x8435e8){_0x3505c5['count']=_0x8435e8;if(_0x170afd[_0xdac9('0x34')][_0xdac9('0x42')]){_0x4c4e21[_0xdac9('0x43')]=[{'all':!![]}];}return db[_0xdac9('0x2e')][_0xdac9('0x44')](_0x4c4e21);})[_0xdac9('0x26')](function(_0x413fb1){_0x3505c5[_0xdac9('0x45')]=_0x413fb1;return _0x3505c5;})[_0xdac9('0x26')](respondWithFilteredResult(_0x4fe3bd,_0x4c4e21))[_0xdac9('0x46')](handleError(_0x4fe3bd,null));};exports[_0xdac9('0x47')]=function(_0x24b570,_0x278826){var _0x441676={'raw':!![],'where':{'id':_0x24b570[_0xdac9('0x48')]['id']}},_0x5335ae={};_0x5335ae[_0xdac9('0x33')]=_['keys'](db[_0xdac9('0x2e')][_0xdac9('0x2f')]);_0x5335ae[_0xdac9('0x34')]=_[_0xdac9('0x35')](_0x24b570[_0xdac9('0x34')]);_0x5335ae[_0xdac9('0x36')]=_['intersection'](_0x5335ae[_0xdac9('0x33')],_0x5335ae['query']);_0x441676[_0xdac9('0x38')]=_[_0xdac9('0x37')](_0x5335ae[_0xdac9('0x33')],qs[_0xdac9('0x39')](_0x24b570['query']['fields']));_0x441676['attributes']=_0x441676[_0xdac9('0x38')]['length']?_0x441676['attributes']:_0x5335ae[_0xdac9('0x33')];if(_0x24b570[_0xdac9('0x34')]['includeAll']){_0x441676['include']=[{'all':!![]}];}_0x441676=_[_0xdac9('0x49')]({},_0x441676,_0x24b570[_0xdac9('0x41')]);return db[_0xdac9('0x2e')][_0xdac9('0x4a')](_0x441676)[_0xdac9('0x26')](handleEntityNotFound(_0x278826,null))[_0xdac9('0x26')](respondWithResult(_0x278826,null))[_0xdac9('0x46')](handleError(_0x278826,null));};exports[_0xdac9('0x4b')]=function(_0x5c008b,_0x621cf){return db[_0xdac9('0x2e')][_0xdac9('0x4b')](_0x5c008b[_0xdac9('0x4c')],{})[_0xdac9('0x26')](respondWithResult(_0x621cf,0xc9))[_0xdac9('0x46')](handleError(_0x621cf,null));};exports[_0xdac9('0x25')]=function(_0x37b498,_0x140dc5){if(_0x37b498[_0xdac9('0x4c')]['id']){delete _0x37b498[_0xdac9('0x4c')]['id'];}return db[_0xdac9('0x2e')][_0xdac9('0x4a')]({'where':{'id':_0x37b498[_0xdac9('0x48')]['id']}})['then'](handleEntityNotFound(_0x140dc5,null))['then'](saveUpdates(_0x37b498['body'],null))[_0xdac9('0x26')](respondWithResult(_0x140dc5,null))[_0xdac9('0x46')](handleError(_0x140dc5,null));};exports['destroy']=function(_0x2a60bd,_0x2843f2){return db[_0xdac9('0x2e')]['find']({'where':{'id':_0x2a60bd[_0xdac9('0x48')]['id']}})[_0xdac9('0x26')](handleEntityNotFound(_0x2843f2,null))['then'](removeEntity(_0x2843f2,null))['catch'](handleError(_0x2843f2,null));};exports[_0xdac9('0x4d')]=function(_0x4469d8,_0x222de9){return db[_0xdac9('0x2e')][_0xdac9('0x4d')]()[_0xdac9('0x26')](respondWithResult(_0x222de9,null))[_0xdac9('0x46')](handleError(_0x222de9,null));};
\ No newline at end of file
index 34339a8..c3f88d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Cdr','cdr','accountcode','disposition','dst','src','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cdr.attributes','exports'];(function(_0x525b21,_0x58d4fd){var _0x54167a=function(_0x1b8580){while(--_0x1b8580){_0x525b21['push'](_0x525b21['shift']());}};_0x54167a(++_0x58d4fd);}(_0x7a54,0x106));var _0x47a5=function(_0xf84109,_0x31e41d){_0xf84109=_0xf84109-0x0;var _0x360c49=_0x7a54[_0xf84109];return _0x360c49;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'accountcode','fields':[_0x47a5('0xc')]},{'name':'calldate','fields':['calldate']},{'name':'disposition','fields':[_0x47a5('0xd')]},{'name':_0x47a5('0xe'),'fields':['dst']},{'name':_0x47a5('0xf'),'fields':['src']},{'name':'uniqueid','fields':[_0x47a5('0x10')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0x306272,_0x1b09a9){var _0xa44684=function(_0x655045){while(--_0x655045){_0x306272['push'](_0x306272['shift']());}};_0xa44684(++_0x1b09a9);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'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 0e6aac7..1ee0ab8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x160c=['stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client','http','request','then','info','Cdr,\x20%s,\x20%s','debug','Cdr,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x1a2abc,_0x4e7780){var _0x3ff845=function(_0xa8f43b){while(--_0xa8f43b){_0x1a2abc['push'](_0x1a2abc['shift']());}};_0x3ff845(++_0x4e7780);}(_0x160c,0xbe));var _0xc160=function(_0x30c3dc,_0xcdbcee){_0x30c3dc=_0x30c3dc-0x0;var _0x47ff69=_0x160c[_0x30c3dc];return _0x47ff69;};'use strict';var _=require(_0xc160('0x0'));var util=require(_0xc160('0x1'));var moment=require(_0xc160('0x2'));var BPromise=require('bluebird');var rs=require(_0xc160('0x3'));var fs=require('fs');var Redis=require(_0xc160('0x4'));var db=require(_0xc160('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xc160('0x6'))(_0xc160('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc160('0x8')][_0xc160('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x505463,_0x4a6684,_0x4af6f3){return new BPromise(function(_0xd8110d,_0x343e05){return client[_0xc160('0xa')](_0x505463,_0x4af6f3)[_0xc160('0xb')](function(_0x10ffb6){logger[_0xc160('0xc')](_0xc160('0xd'),_0x4a6684,'request\x20sent');logger[_0xc160('0xe')](_0xc160('0xf'),_0x4a6684,_0xc160('0x10'),JSON[_0xc160('0x11')](_0x10ffb6));if(_0x10ffb6[_0xc160('0x12')]){if(_0x10ffb6[_0xc160('0x12')][_0xc160('0x13')]===0x1f4){logger[_0xc160('0x12')](_0xc160('0xd'),_0x4a6684,_0x10ffb6['error'][_0xc160('0x14')]);return _0x343e05(_0x10ffb6[_0xc160('0x12')][_0xc160('0x14')]);}logger['error'](_0xc160('0xd'),_0x4a6684,_0x10ffb6['error'][_0xc160('0x14')]);return _0xd8110d(_0x10ffb6[_0xc160('0x12')][_0xc160('0x14')]);}else{logger[_0xc160('0xc')](_0xc160('0xd'),_0x4a6684,_0xc160('0x10'));_0xd8110d(_0x10ffb6[_0xc160('0x15')][_0xc160('0x14')]);}})[_0xc160('0x16')](function(_0x3d7c15){logger['error'](_0xc160('0xd'),_0x4a6684,_0x3d7c15);_0x343e05(_0x3d7c15);});});}
\ No newline at end of file
+var _0xa691=['debug','Cdr,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','moment','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','Cdr,\x20%s,\x20%s'];(function(_0x40cde6,_0x43b26f){var _0x5fd987=function(_0x1fb1ac){while(--_0x1fb1ac){_0x40cde6['push'](_0x40cde6['shift']());}};_0x5fd987(++_0x43b26f);}(_0xa691,0x13a));var _0x1a69=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xa691[_0x502c7d];return _0x30b7ed;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1a69('0x0'));var BPromise=require('bluebird');var rs=require(_0x1a69('0x1'));var fs=require('fs');var Redis=require(_0x1a69('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x1a69('0x3'))(_0x1a69('0x4'));var config=require(_0x1a69('0x5'));var jayson=require(_0x1a69('0x6'));var client=jayson[_0x1a69('0x7')][_0x1a69('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x592310,_0x482467,_0x407c71){return new BPromise(function(_0x4a10ee,_0x158fd8){return client['request'](_0x592310,_0x407c71)['then'](function(_0x4d911c){logger['info'](_0x1a69('0x9'),_0x482467,'request\x20sent');logger[_0x1a69('0xa')](_0x1a69('0xb'),_0x482467,_0x1a69('0xc'),JSON[_0x1a69('0xd')](_0x4d911c));if(_0x4d911c[_0x1a69('0xe')]){if(_0x4d911c[_0x1a69('0xe')]['code']===0x1f4){logger['error'](_0x1a69('0x9'),_0x482467,_0x4d911c[_0x1a69('0xe')][_0x1a69('0xf')]);return _0x158fd8(_0x4d911c[_0x1a69('0xe')]['message']);}logger['error'](_0x1a69('0x9'),_0x482467,_0x4d911c[_0x1a69('0xe')]['message']);return _0x4a10ee(_0x4d911c['error']['message']);}else{logger['info'](_0x1a69('0x9'),_0x482467,_0x1a69('0xc'));_0x4a10ee(_0x4d911c[_0x1a69('0x10')][_0x1a69('0xf')]);}})[_0x1a69('0x11')](function(_0x1fbb1c){logger[_0x1a69('0xe')]('Cdr,\x20%s,\x20%s',_0x482467,_0x1fbb1c);_0x158fd8(_0x1fbb1c);});});}
\ No newline at end of file
index 8988aa5..0f53a76 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(_0x7ce8a5,_0xa18e08){var _0x42d2f5=function(_0x2dd01b){while(--_0x2dd01b){_0x7ce8a5['push'](_0x7ce8a5['shift']());}};_0x42d2f5(++_0xa18e08);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./cdr.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
+var _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(_0x3ab313,_0x4d6b91){var _0x52e13f=function(_0x3e20e9){while(--_0x3e20e9){_0x3ab313['push'](_0x3ab313['shift']());}};_0x52e13f(++_0x4d6b91);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./cdr.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
index a884538..6cb5255 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32ff=['*,*,*,*','sequelize','exports','STRING','noop'];(function(_0x2df507,_0x553862){var _0x1f7167=function(_0x11319e){while(--_0x11319e){_0x2df507['push'](_0x2df507['shift']());}};_0x1f7167(++_0x553862);}(_0x32ff,0x7e));var _0xf32f=function(_0x3c5203,_0x63fb03){_0x3c5203=_0x3c5203-0x0;var _0x46c93e=_0x32ff[_0x3c5203];return _0x46c93e;};'use strict';var Sequelize=require(_0xf32f('0x0'));module[_0xf32f('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xf32f('0x2')],'allowNull':![],'defaultValue':_0xf32f('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xf32f('0x2')]},'interval':{'type':Sequelize[_0xf32f('0x2')],'defaultValue':_0xf32f('0x4')}};
\ No newline at end of file
+var _0x38ed=['INTEGER','noop','TEXT','STRING','*,*,*,*','sequelize','exports'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x38ed,0x1d3));var _0xd38e=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0x38ed[_0x5f1391];return _0x50ebe3;};'use strict';var Sequelize=require(_0xd38e('0x0'));module[_0xd38e('0x1')]={'priority':{'type':Sequelize[_0xd38e('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xd38e('0x3')},'appdata':{'type':Sequelize[_0xd38e('0x4')]()},'description':{'type':Sequelize[_0xd38e('0x5')]},'interval':{'type':Sequelize[_0xd38e('0x5')],'defaultValue':_0xd38e('0x6')}};
\ No newline at end of file
index f0169c4..bffeaac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x373d=['send','show','params','model','ChatApplication','keys','query','filters','intersection','attributes','fields','length','include','merge','options','find','catch','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','ejs','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name'];(function(_0x5ebf44,_0x4e543e){var _0x2fef12=function(_0x59d629){while(--_0x59d629){_0x5ebf44['push'](_0x5ebf44['shift']());}};_0x2fef12(++_0x4e543e);}(_0x373d,0x1e2));var _0xd373=function(_0x2849d7,_0x1f66d7){_0x2849d7=_0x2849d7-0x0;var _0x3514da=_0x373d[_0x2849d7];return _0x3514da;};'use strict';var emlformat=require(_0xd373('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd373('0x1'));var jsonpatch=require(_0xd373('0x2'));var rp=require(_0xd373('0x3'));var moment=require(_0xd373('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd373('0x5'));var util=require(_0xd373('0x6'));var path=require(_0xd373('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd373('0x8'));var fs=require('fs');var fs_extra=require(_0xd373('0x9'));var _=require(_0xd373('0xa'));var squel=require(_0xd373('0xb'));var crypto=require('crypto');var jsforce=require(_0xd373('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xd373('0xd'));var Redis=require(_0xd373('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xd373('0xf'));var as=require(_0xd373('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd373('0x11'));var utils=require(_0xd373('0x12'));var config=require(_0xd373('0x13'));var licenseUtil=require(_0xd373('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4c7f91,_0x5ab89c){_0x5ab89c=_0x5ab89c||0xcc;return function(_0xcd9b8c){if(_0xcd9b8c){return _0x4c7f91[_0xd373('0x15')](_0x5ab89c);}return _0x4c7f91['status'](_0x5ab89c)[_0xd373('0x16')]();};}function respondWithResult(_0x129475,_0x27c161){_0x27c161=_0x27c161||0xc8;return function(_0x23ed86){if(_0x23ed86){return _0x129475[_0xd373('0x17')](_0x27c161)[_0xd373('0x18')](_0x23ed86);}};}function respondWithFilteredResult(_0x20aca5,_0x2eacb1){return function(_0x5a286a){if(_0x5a286a){var _0x2c5854=typeof _0x2eacb1[_0xd373('0x19')]===_0xd373('0x1a')&&typeof _0x2eacb1[_0xd373('0x1b')]==='undefined';var _0x1e26cf=_0x5a286a['count'];var _0x460259=_0x2c5854?0x0:_0x2eacb1[_0xd373('0x19')];var _0x55c5c7=_0x2c5854?_0x5a286a[_0xd373('0x1c')]:_0x2eacb1['offset']+_0x2eacb1['limit'];var _0x23fada;if(_0x55c5c7>=_0x1e26cf){_0x55c5c7=_0x1e26cf;_0x23fada=0xc8;}else{_0x23fada=0xce;}_0x20aca5[_0xd373('0x17')](_0x23fada);return _0x20aca5[_0xd373('0x1d')](_0xd373('0x1e'),_0x460259+'-'+_0x55c5c7+'/'+_0x1e26cf)[_0xd373('0x18')](_0x5a286a);}return null;};}function patchUpdates(_0x181eb2){return function(_0x4ba510){try{jsonpatch[_0xd373('0x1f')](_0x4ba510,_0x181eb2,!![]);}catch(_0xd808f8){return BPromise[_0xd373('0x20')](_0xd808f8);}return _0x4ba510[_0xd373('0x21')]();};}function saveUpdates(_0x165e21,_0x3aa1c5){return function(_0x4f64bd){if(_0x4f64bd){return _0x4f64bd[_0xd373('0x22')](_0x165e21)[_0xd373('0x23')](function(_0x157f81){return _0x157f81;});}return null;};}function removeEntity(_0x209ca7,_0x217ee7){return function(_0x238ffd){if(_0x238ffd){return _0x238ffd[_0xd373('0x24')]()[_0xd373('0x23')](function(){_0x209ca7[_0xd373('0x17')](0xcc)[_0xd373('0x16')]();});}};}function handleEntityNotFound(_0x437110,_0x34f05a){return function(_0x388182){if(!_0x388182){_0x437110[_0xd373('0x15')](0x194);}return _0x388182;};}function handleError(_0x18d7ab,_0x38ba50){_0x38ba50=_0x38ba50||0x1f4;return function(_0x50b987){logger[_0xd373('0x25')](_0x50b987[_0xd373('0x26')]);if(_0x50b987[_0xd373('0x27')]){delete _0x50b987[_0xd373('0x27')];}_0x18d7ab[_0xd373('0x17')](_0x38ba50)[_0xd373('0x28')](_0x50b987);};}exports[_0xd373('0x29')]=function(_0xf85ca8,_0x2869e5){var _0x158825={'raw':!![],'where':{'id':_0xf85ca8[_0xd373('0x2a')]['id']}},_0xbc420b={};_0xbc420b[_0xd373('0x2b')]=_['keys'](db[_0xd373('0x2c')]['rawAttributes']);_0xbc420b['query']=_[_0xd373('0x2d')](_0xf85ca8[_0xd373('0x2e')]);_0xbc420b[_0xd373('0x2f')]=_[_0xd373('0x30')](_0xbc420b[_0xd373('0x2b')],_0xbc420b['query']);_0x158825[_0xd373('0x31')]=_[_0xd373('0x30')](_0xbc420b['model'],qs[_0xd373('0x32')](_0xf85ca8[_0xd373('0x2e')][_0xd373('0x32')]));_0x158825[_0xd373('0x31')]=_0x158825[_0xd373('0x31')][_0xd373('0x33')]?_0x158825[_0xd373('0x31')]:_0xbc420b[_0xd373('0x2b')];if(_0xf85ca8[_0xd373('0x2e')]['includeAll']){_0x158825[_0xd373('0x34')]=[{'all':!![]}];}_0x158825=_[_0xd373('0x35')]({},_0x158825,_0xf85ca8[_0xd373('0x36')]);return db[_0xd373('0x2c')][_0xd373('0x37')](_0x158825)[_0xd373('0x23')](handleEntityNotFound(_0x2869e5,null))[_0xd373('0x23')](respondWithResult(_0x2869e5,null))[_0xd373('0x38')](handleError(_0x2869e5,null));};exports[_0xd373('0x22')]=function(_0x10fa13,_0x38e0ea){if(_0x10fa13[_0xd373('0x39')]['id']){delete _0x10fa13[_0xd373('0x39')]['id'];}return db[_0xd373('0x2c')][_0xd373('0x37')]({'where':{'id':_0x10fa13['params']['id']}})[_0xd373('0x23')](handleEntityNotFound(_0x38e0ea,null))[_0xd373('0x23')](saveUpdates(_0x10fa13[_0xd373('0x39')],null))[_0xd373('0x23')](respondWithResult(_0x38e0ea,null))['catch'](handleError(_0x38e0ea,null));};exports[_0xd373('0x24')]=function(_0x470d91,_0x109fb2){return db[_0xd373('0x2c')][_0xd373('0x37')]({'where':{'id':_0x470d91[_0xd373('0x2a')]['id']}})['then'](handleEntityNotFound(_0x109fb2,null))['then'](removeEntity(_0x109fb2,null))[_0xd373('0x38')](handleError(_0x109fb2,null));};
\ No newline at end of file
+var _0x76dc=['keys','rawAttributes','query','intersection','attributes','length','include','options','find','catch','body','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','set','json','apply','reject','save','update','then','destroy','error','name','show','model'];(function(_0x56a267,_0x17d06c){var _0x40ac38=function(_0x190dfa){while(--_0x190dfa){_0x56a267['push'](_0x56a267['shift']());}};_0x40ac38(++_0x17d06c);}(_0x76dc,0x1f2));var _0xc76d=function(_0x25cc3b,_0x3c2113){_0x25cc3b=_0x25cc3b-0x0;var _0x2d4c1f=_0x76dc[_0x25cc3b];return _0x2d4c1f;};'use strict';var emlformat=require(_0xc76d('0x0'));var rimraf=require(_0xc76d('0x1'));var zipdir=require(_0xc76d('0x2'));var jsonpatch=require(_0xc76d('0x3'));var rp=require('request-promise');var moment=require(_0xc76d('0x4'));var BPromise=require(_0xc76d('0x5'));var Mustache=require('mustache');var util=require(_0xc76d('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xc76d('0x7'));var ejs=require(_0xc76d('0x8'));var fs=require('fs');var fs_extra=require(_0xc76d('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xc76d('0xa'));var jsforce=require(_0xc76d('0xb'));var deskjs=require(_0xc76d('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc76d('0xd'));var Redis=require(_0xc76d('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xc76d('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc76d('0x10'));var logger=require(_0xc76d('0x11'))(_0xc76d('0x12'));var utils=require(_0xc76d('0x13'));var config=require(_0xc76d('0x14'));var licenseUtil=require(_0xc76d('0x15'));var db=require(_0xc76d('0x16'))['db'];function respondWithStatusCode(_0x2e02e9,_0x1722b3){_0x1722b3=_0x1722b3||0xcc;return function(_0x311814){if(_0x311814){return _0x2e02e9[_0xc76d('0x17')](_0x1722b3);}return _0x2e02e9[_0xc76d('0x18')](_0x1722b3)[_0xc76d('0x19')]();};}function respondWithResult(_0x3ed1bd,_0x5cda20){_0x5cda20=_0x5cda20||0xc8;return function(_0x8696db){if(_0x8696db){return _0x3ed1bd[_0xc76d('0x18')](_0x5cda20)['json'](_0x8696db);}};}function respondWithFilteredResult(_0x4741a4,_0x2d23d2){return function(_0x47a4ee){if(_0x47a4ee){var _0x6f94e=typeof _0x2d23d2['offset']===_0xc76d('0x1a')&&typeof _0x2d23d2['limit']==='undefined';var _0x45a83e=_0x47a4ee[_0xc76d('0x1b')];var _0x339623=_0x6f94e?0x0:_0x2d23d2[_0xc76d('0x1c')];var _0xd1d16f=_0x6f94e?_0x47a4ee['count']:_0x2d23d2[_0xc76d('0x1c')]+_0x2d23d2[_0xc76d('0x1d')];var _0xa0c5b6;if(_0xd1d16f>=_0x45a83e){_0xd1d16f=_0x45a83e;_0xa0c5b6=0xc8;}else{_0xa0c5b6=0xce;}_0x4741a4[_0xc76d('0x18')](_0xa0c5b6);return _0x4741a4[_0xc76d('0x1e')]('Content-Range',_0x339623+'-'+_0xd1d16f+'/'+_0x45a83e)[_0xc76d('0x1f')](_0x47a4ee);}return null;};}function patchUpdates(_0x324db7){return function(_0x5dffde){try{jsonpatch[_0xc76d('0x20')](_0x5dffde,_0x324db7,!![]);}catch(_0x777f22){return BPromise[_0xc76d('0x21')](_0x777f22);}return _0x5dffde[_0xc76d('0x22')]();};}function saveUpdates(_0x18f546,_0x3d357b){return function(_0x42b89c){if(_0x42b89c){return _0x42b89c[_0xc76d('0x23')](_0x18f546)[_0xc76d('0x24')](function(_0x20e09c){return _0x20e09c;});}return null;};}function removeEntity(_0x15328d,_0x5de11f){return function(_0x11b42f){if(_0x11b42f){return _0x11b42f[_0xc76d('0x25')]()['then'](function(){_0x15328d[_0xc76d('0x18')](0xcc)[_0xc76d('0x19')]();});}};}function handleEntityNotFound(_0x55ca79,_0x374b9e){return function(_0x476aee){if(!_0x476aee){_0x55ca79[_0xc76d('0x17')](0x194);}return _0x476aee;};}function handleError(_0xd1dda0,_0xfc4aea){_0xfc4aea=_0xfc4aea||0x1f4;return function(_0x1949c4){logger[_0xc76d('0x26')](_0x1949c4['stack']);if(_0x1949c4['name']){delete _0x1949c4[_0xc76d('0x27')];}_0xd1dda0[_0xc76d('0x18')](_0xfc4aea)['send'](_0x1949c4);};}exports[_0xc76d('0x28')]=function(_0x52a79a,_0x64899f){var _0x49fa89={'raw':!![],'where':{'id':_0x52a79a['params']['id']}},_0x2039f4={};_0x2039f4[_0xc76d('0x29')]=_[_0xc76d('0x2a')](db['ChatApplication'][_0xc76d('0x2b')]);_0x2039f4[_0xc76d('0x2c')]=_[_0xc76d('0x2a')](_0x52a79a[_0xc76d('0x2c')]);_0x2039f4['filters']=_[_0xc76d('0x2d')](_0x2039f4['model'],_0x2039f4[_0xc76d('0x2c')]);_0x49fa89['attributes']=_[_0xc76d('0x2d')](_0x2039f4[_0xc76d('0x29')],qs['fields'](_0x52a79a['query']['fields']));_0x49fa89['attributes']=_0x49fa89[_0xc76d('0x2e')][_0xc76d('0x2f')]?_0x49fa89[_0xc76d('0x2e')]:_0x2039f4[_0xc76d('0x29')];if(_0x52a79a[_0xc76d('0x2c')]['includeAll']){_0x49fa89[_0xc76d('0x30')]=[{'all':!![]}];}_0x49fa89=_['merge']({},_0x49fa89,_0x52a79a[_0xc76d('0x31')]);return db['ChatApplication'][_0xc76d('0x32')](_0x49fa89)[_0xc76d('0x24')](handleEntityNotFound(_0x64899f,null))[_0xc76d('0x24')](respondWithResult(_0x64899f,null))[_0xc76d('0x33')](handleError(_0x64899f,null));};exports[_0xc76d('0x23')]=function(_0x4df056,_0xc2765c){if(_0x4df056[_0xc76d('0x34')]['id']){delete _0x4df056[_0xc76d('0x34')]['id'];}return db['ChatApplication'][_0xc76d('0x32')]({'where':{'id':_0x4df056[_0xc76d('0x35')]['id']}})[_0xc76d('0x24')](handleEntityNotFound(_0xc2765c,null))['then'](saveUpdates(_0x4df056[_0xc76d('0x34')],null))[_0xc76d('0x24')](respondWithResult(_0xc2765c,null))[_0xc76d('0x33')](handleError(_0xc2765c,null));};exports[_0xc76d('0x25')]=function(_0x41fcc2,_0x3d6c06){return db['ChatApplication']['find']({'where':{'id':_0x41fcc2[_0xc76d('0x35')]['id']}})['then'](handleEntityNotFound(_0x3d6c06,null))[_0xc76d('0x24')](removeEntity(_0x3d6c06,null))[_0xc76d('0x33')](handleError(_0x3d6c06,null));};
\ No newline at end of file
index 1bf5e6b..f88bba8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3870=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatApplication.attributes','exports','chat_applications','utf8mb4','lodash','util','../../config/logger'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x3870,0x15b));var _0x0387=function(_0x39af53,_0x2cc6df){_0x39af53=_0x39af53-0x0;var _0x327895=_0x3870[_0x39af53];return _0x327895;};'use strict';var _=require(_0x0387('0x0'));var util=require(_0x0387('0x1'));var logger=require(_0x0387('0x2'))(_0x0387('0x3'));var moment=require(_0x0387('0x4'));var BPromise=require(_0x0387('0x5'));var rp=require(_0x0387('0x6'));var fs=require('fs');var path=require(_0x0387('0x7'));var rimraf=require(_0x0387('0x8'));var config=require(_0x0387('0x9'));var attributes=require(_0x0387('0xa'));module[_0x0387('0xb')]=function(_0x2e1bf7,_0x363c4e){return _0x2e1bf7['define']('ChatApplication',attributes,{'tableName':_0x0387('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x0387('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x1aa8=['utf8mb4_unicode_ci','lodash','util','api','request-promise','path','../../config/environment','./chatApplication.attributes','exports','define','ChatApplication','chat_applications'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0x1aa8,0x145));var _0x81aa=function(_0x543923,_0x1bbe3e){_0x543923=_0x543923-0x0;var _0x283d71=_0x1aa8[_0x543923];return _0x283d71;};'use strict';var _=require(_0x81aa('0x0'));var util=require(_0x81aa('0x1'));var logger=require('../../config/logger')(_0x81aa('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x81aa('0x3'));var fs=require('fs');var path=require(_0x81aa('0x4'));var rimraf=require('rimraf');var config=require(_0x81aa('0x5'));var attributes=require(_0x81aa('0x6'));module[_0x81aa('0x7')]=function(_0x31ea68,_0x4b2df5){return _0x31ea68[_0x81aa('0x8')](_0x81aa('0x9'),attributes,{'tableName':_0x81aa('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x81aa('0xb')});};
\ No newline at end of file
index 7c9b35f..c32dfad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd93e=['ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../config/logger','rpc','jayson/promise','client','http','request','info','ChatApplication,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x1a7fb8,_0x2d89b0){var _0x55c96b=function(_0x114195){while(--_0x114195){_0x1a7fb8['push'](_0x1a7fb8['shift']());}};_0x55c96b(++_0x2d89b0);}(_0xd93e,0x1ab));var _0xed93=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0xd93e[_0x5d2803];return _0xdcad2c;};'use strict';var _=require(_0xed93('0x0'));var util=require(_0xed93('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xed93('0x2'));var fs=require('fs');var Redis=require(_0xed93('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xed93('0x4'))(_0xed93('0x5'));var config=require('../../config/environment');var jayson=require(_0xed93('0x6'));var client=jayson[_0xed93('0x7')][_0xed93('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x305439,_0x21f736,_0x42291d){return new BPromise(function(_0x17f3d5,_0x2e2830){return client[_0xed93('0x9')](_0x305439,_0x42291d)['then'](function(_0x3a4292){logger[_0xed93('0xa')](_0xed93('0xb'),_0x21f736,_0xed93('0xc'));logger[_0xed93('0xd')](_0xed93('0xe'),_0x21f736,_0xed93('0xc'),JSON[_0xed93('0xf')](_0x3a4292));if(_0x3a4292[_0xed93('0x10')]){if(_0x3a4292[_0xed93('0x10')][_0xed93('0x11')]===0x1f4){logger['error'](_0xed93('0xb'),_0x21f736,_0x3a4292['error'][_0xed93('0x12')]);return _0x2e2830(_0x3a4292[_0xed93('0x10')]['message']);}logger['error'](_0xed93('0xb'),_0x21f736,_0x3a4292['error'][_0xed93('0x12')]);return _0x17f3d5(_0x3a4292['error'][_0xed93('0x12')]);}else{logger[_0xed93('0xa')](_0xed93('0xb'),_0x21f736,_0xed93('0xc'));_0x17f3d5(_0x3a4292[_0xed93('0x13')]['message']);}})[_0xed93('0x14')](function(_0x17764e){logger[_0xed93('0x10')](_0xed93('0xb'),_0x21f736,_0x17764e);_0x2e2830(_0x17764e);});});}
\ No newline at end of file
+var _0xa951=['request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','ChatApplication,\x20%s,\x20%s'];(function(_0x30abe3,_0x4644eb){var _0x461559=function(_0xda91b0){while(--_0xda91b0){_0x30abe3['push'](_0x30abe3['shift']());}};_0x461559(++_0x4644eb);}(_0xa951,0x1b9));var _0x1a95=function(_0x53a2b4,_0x38067e){_0x53a2b4=_0x53a2b4-0x0;var _0xce9ab6=_0xa951[_0x53a2b4];return _0xce9ab6;};'use strict';var _=require(_0x1a95('0x0'));var util=require(_0x1a95('0x1'));var moment=require(_0x1a95('0x2'));var BPromise=require(_0x1a95('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1a95('0x4'))['db'];var utils=require(_0x1a95('0x5'));var logger=require(_0x1a95('0x6'))(_0x1a95('0x7'));var config=require(_0x1a95('0x8'));var jayson=require(_0x1a95('0x9'));var client=jayson['client'][_0x1a95('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3e729c,_0x4863f9,_0x47281c){return new BPromise(function(_0x22bf37,_0x1c2901){return client[_0x1a95('0xb')](_0x3e729c,_0x47281c)[_0x1a95('0xc')](function(_0x2ca8f1){logger[_0x1a95('0xd')](_0x1a95('0xe'),_0x4863f9,_0x1a95('0xf'));logger[_0x1a95('0x10')](_0x1a95('0x11'),_0x4863f9,_0x1a95('0xf'),JSON[_0x1a95('0x12')](_0x2ca8f1));if(_0x2ca8f1[_0x1a95('0x13')]){if(_0x2ca8f1[_0x1a95('0x13')][_0x1a95('0x14')]===0x1f4){logger['error'](_0x1a95('0xe'),_0x4863f9,_0x2ca8f1[_0x1a95('0x13')][_0x1a95('0x15')]);return _0x1c2901(_0x2ca8f1[_0x1a95('0x13')][_0x1a95('0x15')]);}logger[_0x1a95('0x13')](_0x1a95('0xe'),_0x4863f9,_0x2ca8f1[_0x1a95('0x13')][_0x1a95('0x15')]);return _0x22bf37(_0x2ca8f1[_0x1a95('0x13')][_0x1a95('0x15')]);}else{logger[_0x1a95('0xd')](_0x1a95('0xe'),_0x4863f9,_0x1a95('0xf'));_0x22bf37(_0x2ca8f1[_0x1a95('0x16')][_0x1a95('0x15')]);}})[_0x1a95('0x17')](function(_0x1375be){logger[_0x1a95('0x13')](_0x1a95('0xe'),_0x4863f9,_0x1375be);_0x1c2901(_0x1375be);});});}
\ No newline at end of file
index 7de7535..5230171 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1201=['../../config/environment','./chatApplication.controller','get','/:id','isAuthenticated','show','put','update','delete','exports','multer','util','path','connect-timeout','Router','../../components/interaction/service'];(function(_0x5ee1e2,_0x5609c5){var _0xbe4f17=function(_0x54ac6c){while(--_0x54ac6c){_0x5ee1e2['push'](_0x5ee1e2['shift']());}};_0xbe4f17(++_0x5609c5);}(_0x1201,0x10a));var _0x1120=function(_0x305bbf,_0x5647b3){_0x305bbf=_0x305bbf-0x0;var _0x4ed772=_0x1201[_0x305bbf];return _0x4ed772;};'use strict';var multer=require(_0x1120('0x0'));var util=require(_0x1120('0x1'));var path=require(_0x1120('0x2'));var timeout=require(_0x1120('0x3'));var express=require('express');var router=express[_0x1120('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x1120('0x5'));var config=require(_0x1120('0x6'));var controller=require(_0x1120('0x7'));router[_0x1120('0x8')](_0x1120('0x9'),auth[_0x1120('0xa')](),controller[_0x1120('0xb')]);router[_0x1120('0xc')](_0x1120('0x9'),auth[_0x1120('0xa')](),controller[_0x1120('0xd')]);router[_0x1120('0xe')](_0x1120('0x9'),auth['isAuthenticated'](),controller['destroy']);module[_0x1120('0xf')]=router;
\ No newline at end of file
+var _0x1404=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatApplication.controller','get','isAuthenticated','show','put','/:id','update','delete','exports'];(function(_0x47cde9,_0x19d013){var _0x26fdf1=function(_0x32fb69){while(--_0x32fb69){_0x47cde9['push'](_0x47cde9['shift']());}};_0x26fdf1(++_0x19d013);}(_0x1404,0x1ee));var _0x4140=function(_0x256b72,_0x340985){_0x256b72=_0x256b72-0x0;var _0x2183e3=_0x1404[_0x256b72];return _0x2183e3;};'use strict';var multer=require(_0x4140('0x0'));var util=require(_0x4140('0x1'));var path=require(_0x4140('0x2'));var timeout=require(_0x4140('0x3'));var express=require(_0x4140('0x4'));var router=express[_0x4140('0x5')]();var fs_extra=require(_0x4140('0x6'));var auth=require(_0x4140('0x7'));var interaction=require(_0x4140('0x8'));var config=require(_0x4140('0x9'));var controller=require(_0x4140('0xa'));router[_0x4140('0xb')]('/:id',auth[_0x4140('0xc')](),controller[_0x4140('0xd')]);router[_0x4140('0xe')](_0x4140('0xf'),auth[_0x4140('0xc')](),controller[_0x4140('0x10')]);router[_0x4140('0x11')]('/:id',auth[_0x4140('0xc')](),controller['destroy']);module[_0x4140('0x12')]=router;
\ No newline at end of file
index 352f102..2911461 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf34f=['exports','STRING','BOOLEAN'];(function(_0x28aea5,_0x3bb12e){var _0x6a55f9=function(_0xf6ece8){while(--_0xf6ece8){_0x28aea5['push'](_0x28aea5['shift']());}};_0x6a55f9(++_0x3bb12e);}(_0xf34f,0x14d));var _0xff34=function(_0x1460e9,_0x2d395b){_0x1460e9=_0x1460e9-0x0;var _0x3e6aec=_0xf34f[_0x1460e9];return _0x3e6aec;};'use strict';var Sequelize=require('sequelize');module[_0xff34('0x0')]={'name':{'type':Sequelize[_0xff34('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xff34('0x1')]},'write':{'type':Sequelize[_0xff34('0x2')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xa93a=['STRING'];(function(_0x3bd7da,_0x26d972){var _0x3672fd=function(_0xa53834){while(--_0xa53834){_0x3bd7da['push'](_0x3bd7da['shift']());}};_0x3672fd(++_0x26d972);}(_0xa93a,0xb8));var _0xaa93=function(_0x510504,_0x438015){_0x510504=_0x510504-0x0;var _0x50732e=_0xa93a[_0x510504];return _0x50732e;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xaa93('0x0')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'write':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index dfd0385..efb35c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9942=['offset','limit','undefined','count','status','Content-Range','json','save','then','destroy','error','stack','name','send','map','rawAttributes','fieldName','query','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','options','ChatGroup','includeAll','include','rows','catch','show','keys','find','create','body','update','params','describe','getUnread','user','toInteger','omit','ids','getMembers','findOne','User','removeMembers','addMessage','ChatInternalMessage','getMessages','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','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','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./chatGroup.socket','register','sendStatus','end'];(function(_0x3fb22e,_0x10fed5){var _0x301d6d=function(_0x49fa2e){while(--_0x49fa2e){_0x3fb22e['push'](_0x3fb22e['shift']());}};_0x301d6d(++_0x10fed5);}(_0x9942,0x15c));var _0x2994=function(_0x4c7232,_0x4109aa){_0x4c7232=_0x4c7232-0x0;var _0x2175ca=_0x9942[_0x4c7232];return _0x2175ca;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2994('0x0'));var zipdir=require(_0x2994('0x1'));var jsonpatch=require(_0x2994('0x2'));var rp=require('request-promise');var moment=require(_0x2994('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x2994('0x4'));var util=require(_0x2994('0x5'));var path=require(_0x2994('0x6'));var sox=require('sox');var csv=require(_0x2994('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2994('0x8'));var _=require(_0x2994('0x9'));var squel=require(_0x2994('0xa'));var crypto=require(_0x2994('0xb'));var jsforce=require(_0x2994('0xc'));var deskjs=require(_0x2994('0xd'));var toCsv=require(_0x2994('0x7'));var querystring=require(_0x2994('0xe'));var Papa=require('papaparse');var Redis=require(_0x2994('0xf'));var authService=require(_0x2994('0x10'));var qs=require(_0x2994('0x11'));var as=require(_0x2994('0x12'));var hardwareService=require(_0x2994('0x13'));var logger=require(_0x2994('0x14'))(_0x2994('0x15'));var utils=require(_0x2994('0x16'));var config=require(_0x2994('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x2994('0x18'))['db'];config[_0x2994('0x19')]=_['defaults'](config['redis'],{'host':_0x2994('0x1a'),'port':0x18eb});var socket=require(_0x2994('0x1b'))(new Redis(config[_0x2994('0x19')]));require(_0x2994('0x1c'))[_0x2994('0x1d')](socket);function respondWithStatusCode(_0x47b5fd,_0x12db9d){_0x12db9d=_0x12db9d||0xcc;return function(_0x5ba9eb){if(_0x5ba9eb){return _0x47b5fd[_0x2994('0x1e')](_0x12db9d);}return _0x47b5fd['status'](_0x12db9d)[_0x2994('0x1f')]();};}function respondWithResult(_0x502471,_0x12982d){_0x12982d=_0x12982d||0xc8;return function(_0x26e185){if(_0x26e185){return _0x502471['status'](_0x12982d)['json'](_0x26e185);}};}function respondWithFilteredResult(_0xc479a9,_0x48dc9c){return function(_0x1f2b1d){if(_0x1f2b1d){var _0x9bd9fa=typeof _0x48dc9c[_0x2994('0x20')]==='undefined'&&typeof _0x48dc9c[_0x2994('0x21')]===_0x2994('0x22');var _0x2f47db=_0x1f2b1d[_0x2994('0x23')];var _0x17bbbf=_0x9bd9fa?0x0:_0x48dc9c[_0x2994('0x20')];var _0xe550d0=_0x9bd9fa?_0x1f2b1d['count']:_0x48dc9c[_0x2994('0x20')]+_0x48dc9c['limit'];var _0x2f7110;if(_0xe550d0>=_0x2f47db){_0xe550d0=_0x2f47db;_0x2f7110=0xc8;}else{_0x2f7110=0xce;}_0xc479a9[_0x2994('0x24')](_0x2f7110);return _0xc479a9['set'](_0x2994('0x25'),_0x17bbbf+'-'+_0xe550d0+'/'+_0x2f47db)[_0x2994('0x26')](_0x1f2b1d);}return null;};}function patchUpdates(_0x54a5f4){return function(_0x188907){try{jsonpatch['apply'](_0x188907,_0x54a5f4,!![]);}catch(_0x34c135){return BPromise['reject'](_0x34c135);}return _0x188907[_0x2994('0x27')]();};}function saveUpdates(_0x51aa46,_0x8d2fa9){return function(_0x3817ac){if(_0x3817ac){return _0x3817ac['update'](_0x51aa46)[_0x2994('0x28')](function(_0x2f6aec){return _0x2f6aec;});}return null;};}function removeEntity(_0x6b873d,_0x4e92d5){return function(_0x11768d){if(_0x11768d){return _0x11768d[_0x2994('0x29')]()['then'](function(){_0x6b873d[_0x2994('0x24')](0xcc)[_0x2994('0x1f')]();});}};}function handleEntityNotFound(_0x4a73b9,_0x1526e4){return function(_0x223526){if(!_0x223526){_0x4a73b9[_0x2994('0x1e')](0x194);}return _0x223526;};}function handleError(_0x545a41,_0x3eb9be){_0x3eb9be=_0x3eb9be||0x1f4;return function(_0x329c5b){logger[_0x2994('0x2a')](_0x329c5b[_0x2994('0x2b')]);if(_0x329c5b['name']){delete _0x329c5b[_0x2994('0x2c')];}_0x545a41[_0x2994('0x24')](_0x3eb9be)[_0x2994('0x2d')](_0x329c5b);};}exports['index']=function(_0x2d5aeb,_0x402ab8){var _0x41fb57={},_0x25a74e={},_0x2dd7e4={'count':0x0,'rows':[]};var _0x5ae59e=_[_0x2994('0x2e')](db['ChatGroup'][_0x2994('0x2f')],function(_0x1c5d6b){return{'name':_0x1c5d6b[_0x2994('0x30')],'type':_0x1c5d6b['type']['key']};});_0x25a74e['model']=_[_0x2994('0x2e')](_0x5ae59e,'name');_0x25a74e['query']=_['keys'](_0x2d5aeb[_0x2994('0x31')]);_0x25a74e['filters']=_['intersection'](_0x25a74e[_0x2994('0x32')],_0x25a74e['query']);_0x41fb57[_0x2994('0x33')]=_[_0x2994('0x34')](_0x25a74e['model'],qs[_0x2994('0x35')](_0x2d5aeb['query'][_0x2994('0x35')]));_0x41fb57[_0x2994('0x33')]=_0x41fb57[_0x2994('0x33')][_0x2994('0x36')]?_0x41fb57[_0x2994('0x33')]:_0x25a74e[_0x2994('0x32')];if(!_0x2d5aeb[_0x2994('0x31')][_0x2994('0x37')](_0x2994('0x38'))){_0x41fb57['limit']=qs['limit'](_0x2d5aeb['query'][_0x2994('0x21')]);_0x41fb57[_0x2994('0x20')]=qs[_0x2994('0x20')](_0x2d5aeb[_0x2994('0x31')][_0x2994('0x20')]);}_0x41fb57[_0x2994('0x39')]=qs[_0x2994('0x3a')](_0x2d5aeb['query'][_0x2994('0x3a')]);_0x41fb57[_0x2994('0x3b')]=qs[_0x2994('0x3c')](_[_0x2994('0x3d')](_0x2d5aeb[_0x2994('0x31')],_0x25a74e['filters']),_0x5ae59e);if(_0x2d5aeb[_0x2994('0x31')][_0x2994('0x3e')]){_0x41fb57['where']=_[_0x2994('0x3f')](_0x41fb57[_0x2994('0x3b')],{'$or':_[_0x2994('0x2e')](_0x5ae59e,function(_0x4a889c){if(_0x4a889c[_0x2994('0x40')]!=='VIRTUAL'){var _0xf7d46c={};_0xf7d46c[_0x4a889c[_0x2994('0x2c')]]={'$like':'%'+_0x2d5aeb[_0x2994('0x31')][_0x2994('0x3e')]+'%'};return _0xf7d46c;}})});}_0x41fb57=_[_0x2994('0x3f')]({},_0x41fb57,_0x2d5aeb[_0x2994('0x41')]);var _0x4e9c24={'where':_0x41fb57[_0x2994('0x3b')]};return db[_0x2994('0x42')]['count'](_0x4e9c24)[_0x2994('0x28')](function(_0x2cc185){_0x2dd7e4[_0x2994('0x23')]=_0x2cc185;if(_0x2d5aeb[_0x2994('0x31')][_0x2994('0x43')]){_0x41fb57[_0x2994('0x44')]=[{'all':!![]}];}return db['ChatGroup']['findAll'](_0x41fb57);})[_0x2994('0x28')](function(_0x533ad1){_0x2dd7e4[_0x2994('0x45')]=_0x533ad1;return _0x2dd7e4;})[_0x2994('0x28')](respondWithFilteredResult(_0x402ab8,_0x41fb57))[_0x2994('0x46')](handleError(_0x402ab8,null));};exports[_0x2994('0x47')]=function(_0x3992d6,_0x9d9c8b){var _0x56e549={'raw':!![],'where':{'id':_0x3992d6['params']['id']}},_0x3aca33={};_0x3aca33[_0x2994('0x32')]=_[_0x2994('0x48')](db['ChatGroup'][_0x2994('0x2f')]);_0x3aca33['query']=_['keys'](_0x3992d6[_0x2994('0x31')]);_0x3aca33[_0x2994('0x3c')]=_[_0x2994('0x34')](_0x3aca33['model'],_0x3aca33['query']);_0x56e549[_0x2994('0x33')]=_[_0x2994('0x34')](_0x3aca33[_0x2994('0x32')],qs['fields'](_0x3992d6[_0x2994('0x31')]['fields']));_0x56e549['attributes']=_0x56e549[_0x2994('0x33')][_0x2994('0x36')]?_0x56e549[_0x2994('0x33')]:_0x3aca33[_0x2994('0x32')];if(_0x3992d6[_0x2994('0x31')][_0x2994('0x43')]){_0x56e549['include']=[{'all':!![]}];}_0x56e549=_[_0x2994('0x3f')]({},_0x56e549,_0x3992d6[_0x2994('0x41')]);return db[_0x2994('0x42')][_0x2994('0x49')](_0x56e549)[_0x2994('0x28')](handleEntityNotFound(_0x9d9c8b,null))['then'](respondWithResult(_0x9d9c8b,null))[_0x2994('0x46')](handleError(_0x9d9c8b,null));};exports[_0x2994('0x4a')]=function(_0x3eaa5b,_0x51f116){return db['ChatGroup'][_0x2994('0x4a')](_0x3eaa5b[_0x2994('0x4b')],{})[_0x2994('0x28')](respondWithResult(_0x51f116,0xc9))[_0x2994('0x46')](handleError(_0x51f116,null));};exports[_0x2994('0x4c')]=function(_0x3b0c75,_0x1e75c1){if(_0x3b0c75[_0x2994('0x4b')]['id']){delete _0x3b0c75['body']['id'];}return db[_0x2994('0x42')][_0x2994('0x49')]({'where':{'id':_0x3b0c75[_0x2994('0x4d')]['id']}})[_0x2994('0x28')](handleEntityNotFound(_0x1e75c1,null))[_0x2994('0x28')](saveUpdates(_0x3b0c75[_0x2994('0x4b')],null))[_0x2994('0x28')](respondWithResult(_0x1e75c1,null))[_0x2994('0x46')](handleError(_0x1e75c1,null));};exports['destroy']=function(_0x5e2f94,_0x27fbcd){return db['ChatGroup'][_0x2994('0x49')]({'where':{'id':_0x5e2f94[_0x2994('0x4d')]['id']}})[_0x2994('0x28')](handleEntityNotFound(_0x27fbcd,null))[_0x2994('0x28')](removeEntity(_0x27fbcd,null))[_0x2994('0x46')](handleError(_0x27fbcd,null));};exports[_0x2994('0x4e')]=function(_0x51fb77,_0x112757){return db[_0x2994('0x42')][_0x2994('0x4e')]()['then'](respondWithResult(_0x112757,null))['catch'](handleError(_0x112757,null));};exports[_0x2994('0x4f')]=function(_0x1ad0cb,_0x2896c1,_0x3cac55){return db['ChatInternalMessage'][_0x2994('0x23')]({'where':{'ChatGroupId':_0x1ad0cb[_0x2994('0x4d')]['id'],'ToId':_0x1ad0cb[_0x2994('0x50')]['id'],'read':![]}})[_0x2994('0x28')](function(_0x1f9261){return{'id':_[_0x2994('0x51')](_0x1ad0cb[_0x2994('0x4d')]['id']),'count':_0x1f9261};})[_0x2994('0x28')](respondWithResult(_0x2896c1,null))[_0x2994('0x46')](handleError(_0x2896c1,null));};exports['addMembers']=function(_0x297029,_0x550668,_0x3e99be){return db['ChatGroup'][_0x2994('0x49')]({'where':{'id':_0x297029[_0x2994('0x4d')]['id']}})['then'](handleEntityNotFound(_0x550668,null))['then'](function(_0x197d7c){if(_0x197d7c){return _0x197d7c['addMembers'](_0x297029[_0x2994('0x4b')]['ids'],_[_0x2994('0x52')](_0x297029['body'],[_0x2994('0x53'),'id'])||{});}})[_0x2994('0x28')](respondWithResult(_0x550668,null))['catch'](handleError(_0x550668,null));};exports[_0x2994('0x54')]=function(_0x42fdef,_0x5e32d9,_0x598b7e){var _0xf1d3d1={};var _0x524ec3={};var _0x17525a;var _0x320684;return db[_0x2994('0x42')][_0x2994('0x55')]({'where':{'id':_0x42fdef[_0x2994('0x4d')]['id']}})[_0x2994('0x28')](handleEntityNotFound(_0x5e32d9,null))[_0x2994('0x28')](function(_0x5effe9){if(_0x5effe9){_0x17525a=_0x5effe9;_0x524ec3[_0x2994('0x32')]=_[_0x2994('0x48')](db[_0x2994('0x56')][_0x2994('0x2f')]);_0x524ec3[_0x2994('0x31')]=_[_0x2994('0x48')](_0x42fdef[_0x2994('0x31')]);_0x524ec3[_0x2994('0x3c')]=_[_0x2994('0x34')](_0x524ec3[_0x2994('0x32')],_0x524ec3[_0x2994('0x31')]);_0xf1d3d1[_0x2994('0x33')]=_[_0x2994('0x34')](_0x524ec3['model'],qs[_0x2994('0x35')](_0x42fdef[_0x2994('0x31')][_0x2994('0x35')]));_0xf1d3d1[_0x2994('0x33')]=_0xf1d3d1[_0x2994('0x33')]['length']?_0xf1d3d1[_0x2994('0x33')]:_0x524ec3[_0x2994('0x32')];_0xf1d3d1['order']=qs[_0x2994('0x3a')](_0x42fdef[_0x2994('0x31')]['sort']);_0xf1d3d1[_0x2994('0x3b')]=qs[_0x2994('0x3c')](_[_0x2994('0x3d')](_0x42fdef[_0x2994('0x31')],_0x524ec3[_0x2994('0x3c')]));if(_0x42fdef['query']['filter']){_0xf1d3d1[_0x2994('0x3b')]=_[_0x2994('0x3f')](_0xf1d3d1[_0x2994('0x3b')],{'$or':_[_0x2994('0x2e')](_0xf1d3d1[_0x2994('0x33')],function(_0xa44641){var _0xcdbb11={};_0xcdbb11[_0xa44641]={'$like':'%'+_0x42fdef['query'][_0x2994('0x3e')]+'%'};return _0xcdbb11;})});}_0xf1d3d1=_[_0x2994('0x3f')]({},_0xf1d3d1,_0x42fdef[_0x2994('0x41')]);return _0x17525a[_0x2994('0x54')](_0xf1d3d1);}})[_0x2994('0x28')](function(_0x4d1ffb){if(_0x4d1ffb){_0x320684=_0x4d1ffb['length'];if(!_0x42fdef['query']['hasOwnProperty'](_0x2994('0x38'))){_0xf1d3d1['limit']=qs[_0x2994('0x21')](_0x42fdef[_0x2994('0x31')][_0x2994('0x21')]);_0xf1d3d1['offset']=qs[_0x2994('0x20')](_0x42fdef[_0x2994('0x31')][_0x2994('0x20')]);}return _0x17525a['getMembers'](_0xf1d3d1);}})[_0x2994('0x28')](function(_0x407cee){if(_0x407cee){return _0x407cee?{'count':_0x320684,'rows':_0x407cee}:null;}})[_0x2994('0x28')](respondWithResult(_0x5e32d9,null))[_0x2994('0x46')](handleError(_0x5e32d9,null));};exports['removeMembers']=function(_0x3499d6,_0x21e726,_0x1d2e08){return db[_0x2994('0x42')][_0x2994('0x49')]({'where':{'id':_0x3499d6[_0x2994('0x4d')]['id']}})[_0x2994('0x28')](handleEntityNotFound(_0x21e726,null))[_0x2994('0x28')](function(_0x5aaa06){if(_0x5aaa06){return _0x5aaa06[_0x2994('0x57')](_0x3499d6[_0x2994('0x31')][_0x2994('0x53')]);}})[_0x2994('0x28')](respondWithStatusCode(_0x21e726,null))[_0x2994('0x46')](handleError(_0x21e726,null));};exports[_0x2994('0x58')]=function(_0x101045,_0x4e0f14,_0x329d62){if(_0x101045[_0x2994('0x4b')]['id']){delete _0x101045[_0x2994('0x4b')]['id'];}return db['ChatGroup']['find']({'where':{'id':_0x101045['params']['id']}})[_0x2994('0x28')](handleEntityNotFound(_0x4e0f14,null))[_0x2994('0x28')](function(_0x3587a1){if(_0x3587a1){_0x101045[_0x2994('0x4b')]['ChatGroupId']=_0x3587a1['id'];return db[_0x2994('0x59')][_0x2994('0x4a')](_0x101045[_0x2994('0x4b')]);}})['then'](respondWithResult(_0x4e0f14,null))['catch'](handleError(_0x4e0f14,null));};exports[_0x2994('0x5a')]=function(_0x31ce9e,_0x1efa75,_0xbc21a){var _0x1baee3={};var _0x1d63ef={};var _0x4ae0b7;var _0x50449a;return db['ChatGroup'][_0x2994('0x55')]({'where':{'id':_0x31ce9e[_0x2994('0x4d')]['id']}})[_0x2994('0x28')](handleEntityNotFound(_0x1efa75,null))[_0x2994('0x28')](function(_0x2e3e14){if(_0x2e3e14){_0x4ae0b7=_0x2e3e14;_0x1d63ef[_0x2994('0x32')]=_[_0x2994('0x48')](db['ChatInternalMessage'][_0x2994('0x2f')]);_0x1d63ef[_0x2994('0x31')]=_[_0x2994('0x48')](_0x31ce9e['query']);_0x1d63ef[_0x2994('0x3c')]=_[_0x2994('0x34')](_0x1d63ef['model'],_0x1d63ef[_0x2994('0x31')]);_0x1baee3[_0x2994('0x33')]=_[_0x2994('0x34')](_0x1d63ef[_0x2994('0x32')],qs[_0x2994('0x35')](_0x31ce9e[_0x2994('0x31')][_0x2994('0x35')]));_0x1baee3['attributes']=_0x1baee3[_0x2994('0x33')][_0x2994('0x36')]?_0x1baee3['attributes']:_0x1d63ef['model'];_0x1baee3[_0x2994('0x39')]=qs[_0x2994('0x3a')](_0x31ce9e[_0x2994('0x31')][_0x2994('0x3a')]);_0x1baee3[_0x2994('0x3b')]=qs[_0x2994('0x3c')](_[_0x2994('0x3d')](_0x31ce9e['query'],_0x1d63ef[_0x2994('0x3c')]));if(_0x31ce9e['query'][_0x2994('0x3e')]){_0x1baee3[_0x2994('0x3b')]=_[_0x2994('0x3f')](_0x1baee3[_0x2994('0x3b')],{'$or':_[_0x2994('0x2e')](_0x1baee3[_0x2994('0x33')],function(_0x310c80){var _0x273023={};_0x273023[_0x310c80]={'$like':'%'+_0x31ce9e[_0x2994('0x31')][_0x2994('0x3e')]+'%'};return _0x273023;})});}if(_0x31ce9e[_0x2994('0x31')]['$gte']){var _0x5ab865=_0x31ce9e[_0x2994('0x31')][_0x2994('0x5b')][_0x2994('0x5c')](',');var _0x2f3f1d={};_0x2f3f1d[_0x5ab865[0x0]]={'$gte':moment(_0x5ab865[0x1])[_0x2994('0x5d')](_0x2994('0x5e'))};_0x1baee3['where']=_['merge'](_0x1baee3[_0x2994('0x3b')],_0x2f3f1d);}_0x1baee3=_['merge']({},_0x1baee3,_0x31ce9e['options']);return _0x4ae0b7['getMessages'](_0x1baee3);}})[_0x2994('0x28')](function(_0x4b6a03){if(_0x4b6a03){_0x50449a=_0x4b6a03[_0x2994('0x36')];if(!_0x31ce9e[_0x2994('0x31')][_0x2994('0x37')](_0x2994('0x38'))){_0x1baee3[_0x2994('0x21')]=qs[_0x2994('0x21')](_0x31ce9e[_0x2994('0x31')][_0x2994('0x21')]);_0x1baee3['offset']=qs[_0x2994('0x20')](_0x31ce9e['query']['offset']);}return _0x4ae0b7['getMessages'](_0x1baee3);}})[_0x2994('0x28')](function(_0x101f3a){if(_0x101f3a){return _0x101f3a?{'count':_0x50449a,'rows':_0x101f3a}:null;}})[_0x2994('0x28')](respondWithResult(_0x1efa75,null))[_0x2994('0x46')](handleError(_0x1efa75,null));};
\ No newline at end of file
+var _0x7d6d=['getMembers','findOne','sort','ChatInternalMessage','getMessages','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','eml-format','request-promise','moment','mustache','util','path','sox','to-csv','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','redis','defaults','./chatGroup.socket','sendStatus','status','end','offset','undefined','count','set','Content-Range','json','apply','save','update','then','destroy','error','name','send','index','map','ChatGroup','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','show','params','keys','options','find','create','catch','body','describe','getUnread','user','toInteger','addMembers','ids','omit'];(function(_0x24618a,_0x2cd0f4){var _0x2e3d64=function(_0x28c59c){while(--_0x28c59c){_0x24618a['push'](_0x24618a['shift']());}};_0x2e3d64(++_0x2cd0f4);}(_0x7d6d,0xbf));var _0xd7d6=function(_0x5e3082,_0x4faf34){_0x5e3082=_0x5e3082-0x0;var _0x42c963=_0x7d6d[_0x5e3082];return _0x42c963;};'use strict';var emlformat=require(_0xd7d6('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd7d6('0x1'));var moment=require(_0xd7d6('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xd7d6('0x3'));var util=require(_0xd7d6('0x4'));var path=require(_0xd7d6('0x5'));var sox=require(_0xd7d6('0x6'));var csv=require(_0xd7d6('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd7d6('0x8'));var squel=require(_0xd7d6('0x9'));var crypto=require('crypto');var jsforce=require(_0xd7d6('0xa'));var deskjs=require(_0xd7d6('0xb'));var toCsv=require(_0xd7d6('0x7'));var querystring=require('querystring');var Papa=require(_0xd7d6('0xc'));var Redis=require(_0xd7d6('0xd'));var authService=require(_0xd7d6('0xe'));var qs=require(_0xd7d6('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd7d6('0x10'));var logger=require(_0xd7d6('0x11'))('api');var utils=require(_0xd7d6('0x12'));var config=require(_0xd7d6('0x13'));var licenseUtil=require(_0xd7d6('0x14'));var db=require(_0xd7d6('0x15'))['db'];config[_0xd7d6('0x16')]=_[_0xd7d6('0x17')](config[_0xd7d6('0x16')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd7d6('0x16')]));require(_0xd7d6('0x18'))['register'](socket);function respondWithStatusCode(_0x7845e,_0x310284){_0x310284=_0x310284||0xcc;return function(_0x23a76e){if(_0x23a76e){return _0x7845e[_0xd7d6('0x19')](_0x310284);}return _0x7845e[_0xd7d6('0x1a')](_0x310284)[_0xd7d6('0x1b')]();};}function respondWithResult(_0x5ae536,_0x58fe8f){_0x58fe8f=_0x58fe8f||0xc8;return function(_0x126333){if(_0x126333){return _0x5ae536['status'](_0x58fe8f)['json'](_0x126333);}};}function respondWithFilteredResult(_0x57d35b,_0x2eafba){return function(_0x2f4f20){if(_0x2f4f20){var _0x557fe1=typeof _0x2eafba[_0xd7d6('0x1c')]===_0xd7d6('0x1d')&&typeof _0x2eafba['limit']===_0xd7d6('0x1d');var _0x606832=_0x2f4f20['count'];var _0x83c8a3=_0x557fe1?0x0:_0x2eafba[_0xd7d6('0x1c')];var _0x18a3b0=_0x557fe1?_0x2f4f20[_0xd7d6('0x1e')]:_0x2eafba[_0xd7d6('0x1c')]+_0x2eafba['limit'];var _0x436065;if(_0x18a3b0>=_0x606832){_0x18a3b0=_0x606832;_0x436065=0xc8;}else{_0x436065=0xce;}_0x57d35b[_0xd7d6('0x1a')](_0x436065);return _0x57d35b[_0xd7d6('0x1f')](_0xd7d6('0x20'),_0x83c8a3+'-'+_0x18a3b0+'/'+_0x606832)[_0xd7d6('0x21')](_0x2f4f20);}return null;};}function patchUpdates(_0x2280c0){return function(_0x3e6831){try{jsonpatch[_0xd7d6('0x22')](_0x3e6831,_0x2280c0,!![]);}catch(_0x1778b7){return BPromise['reject'](_0x1778b7);}return _0x3e6831[_0xd7d6('0x23')]();};}function saveUpdates(_0x5cd0b1,_0x2b2402){return function(_0x438bec){if(_0x438bec){return _0x438bec[_0xd7d6('0x24')](_0x5cd0b1)[_0xd7d6('0x25')](function(_0x5f00dc){return _0x5f00dc;});}return null;};}function removeEntity(_0x44a5a1,_0x31b83f){return function(_0xa8929e){if(_0xa8929e){return _0xa8929e[_0xd7d6('0x26')]()[_0xd7d6('0x25')](function(){_0x44a5a1[_0xd7d6('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x395a8b,_0x356cdf){return function(_0x53ecbf){if(!_0x53ecbf){_0x395a8b[_0xd7d6('0x19')](0x194);}return _0x53ecbf;};}function handleError(_0x19a130,_0x288117){_0x288117=_0x288117||0x1f4;return function(_0x23bb1d){logger[_0xd7d6('0x27')](_0x23bb1d['stack']);if(_0x23bb1d[_0xd7d6('0x28')]){delete _0x23bb1d[_0xd7d6('0x28')];}_0x19a130[_0xd7d6('0x1a')](_0x288117)[_0xd7d6('0x29')](_0x23bb1d);};}exports[_0xd7d6('0x2a')]=function(_0xf9bd66,_0x47f616){var _0x565391={},_0x5697c8={},_0x882368={'count':0x0,'rows':[]};var _0x297e40=_[_0xd7d6('0x2b')](db[_0xd7d6('0x2c')][_0xd7d6('0x2d')],function(_0x3775b7){return{'name':_0x3775b7['fieldName'],'type':_0x3775b7[_0xd7d6('0x2e')][_0xd7d6('0x2f')]};});_0x5697c8[_0xd7d6('0x30')]=_[_0xd7d6('0x2b')](_0x297e40,'name');_0x5697c8['query']=_['keys'](_0xf9bd66[_0xd7d6('0x31')]);_0x5697c8[_0xd7d6('0x32')]=_[_0xd7d6('0x33')](_0x5697c8[_0xd7d6('0x30')],_0x5697c8['query']);_0x565391[_0xd7d6('0x34')]=_[_0xd7d6('0x33')](_0x5697c8['model'],qs[_0xd7d6('0x35')](_0xf9bd66[_0xd7d6('0x31')][_0xd7d6('0x35')]));_0x565391['attributes']=_0x565391[_0xd7d6('0x34')][_0xd7d6('0x36')]?_0x565391[_0xd7d6('0x34')]:_0x5697c8[_0xd7d6('0x30')];if(!_0xf9bd66[_0xd7d6('0x31')][_0xd7d6('0x37')](_0xd7d6('0x38'))){_0x565391[_0xd7d6('0x39')]=qs[_0xd7d6('0x39')](_0xf9bd66[_0xd7d6('0x31')][_0xd7d6('0x39')]);_0x565391['offset']=qs[_0xd7d6('0x1c')](_0xf9bd66['query']['offset']);}_0x565391[_0xd7d6('0x3a')]=qs['sort'](_0xf9bd66[_0xd7d6('0x31')]['sort']);_0x565391[_0xd7d6('0x3b')]=qs[_0xd7d6('0x32')](_[_0xd7d6('0x3c')](_0xf9bd66[_0xd7d6('0x31')],_0x5697c8['filters']),_0x297e40);if(_0xf9bd66[_0xd7d6('0x31')][_0xd7d6('0x3d')]){_0x565391[_0xd7d6('0x3b')]=_[_0xd7d6('0x3e')](_0x565391[_0xd7d6('0x3b')],{'$or':_['map'](_0x297e40,function(_0x331e7c){if(_0x331e7c[_0xd7d6('0x2e')]!==_0xd7d6('0x3f')){var _0x1bd5bd={};_0x1bd5bd[_0x331e7c[_0xd7d6('0x28')]]={'$like':'%'+_0xf9bd66[_0xd7d6('0x31')][_0xd7d6('0x3d')]+'%'};return _0x1bd5bd;}})});}_0x565391=_['merge']({},_0x565391,_0xf9bd66['options']);var _0x3e4e16={'where':_0x565391[_0xd7d6('0x3b')]};return db[_0xd7d6('0x2c')][_0xd7d6('0x1e')](_0x3e4e16)[_0xd7d6('0x25')](function(_0x161e9c){_0x882368[_0xd7d6('0x1e')]=_0x161e9c;if(_0xf9bd66[_0xd7d6('0x31')][_0xd7d6('0x40')]){_0x565391[_0xd7d6('0x41')]=[{'all':!![]}];}return db[_0xd7d6('0x2c')][_0xd7d6('0x42')](_0x565391);})[_0xd7d6('0x25')](function(_0x33b2a1){_0x882368['rows']=_0x33b2a1;return _0x882368;})[_0xd7d6('0x25')](respondWithFilteredResult(_0x47f616,_0x565391))['catch'](handleError(_0x47f616,null));};exports[_0xd7d6('0x43')]=function(_0x196c67,_0x41f481){var _0x4f1d83={'raw':!![],'where':{'id':_0x196c67[_0xd7d6('0x44')]['id']}},_0x1e68fa={};_0x1e68fa['model']=_['keys'](db[_0xd7d6('0x2c')][_0xd7d6('0x2d')]);_0x1e68fa[_0xd7d6('0x31')]=_[_0xd7d6('0x45')](_0x196c67['query']);_0x1e68fa[_0xd7d6('0x32')]=_[_0xd7d6('0x33')](_0x1e68fa['model'],_0x1e68fa[_0xd7d6('0x31')]);_0x4f1d83['attributes']=_['intersection'](_0x1e68fa[_0xd7d6('0x30')],qs[_0xd7d6('0x35')](_0x196c67['query'][_0xd7d6('0x35')]));_0x4f1d83[_0xd7d6('0x34')]=_0x4f1d83[_0xd7d6('0x34')][_0xd7d6('0x36')]?_0x4f1d83[_0xd7d6('0x34')]:_0x1e68fa[_0xd7d6('0x30')];if(_0x196c67[_0xd7d6('0x31')]['includeAll']){_0x4f1d83[_0xd7d6('0x41')]=[{'all':!![]}];}_0x4f1d83=_[_0xd7d6('0x3e')]({},_0x4f1d83,_0x196c67[_0xd7d6('0x46')]);return db[_0xd7d6('0x2c')][_0xd7d6('0x47')](_0x4f1d83)[_0xd7d6('0x25')](handleEntityNotFound(_0x41f481,null))[_0xd7d6('0x25')](respondWithResult(_0x41f481,null))['catch'](handleError(_0x41f481,null));};exports[_0xd7d6('0x48')]=function(_0x3a8c3c,_0x18d425){return db['ChatGroup'][_0xd7d6('0x48')](_0x3a8c3c['body'],{})['then'](respondWithResult(_0x18d425,0xc9))[_0xd7d6('0x49')](handleError(_0x18d425,null));};exports[_0xd7d6('0x24')]=function(_0x5d3883,_0x45ab5c){if(_0x5d3883[_0xd7d6('0x4a')]['id']){delete _0x5d3883[_0xd7d6('0x4a')]['id'];}return db[_0xd7d6('0x2c')]['find']({'where':{'id':_0x5d3883[_0xd7d6('0x44')]['id']}})[_0xd7d6('0x25')](handleEntityNotFound(_0x45ab5c,null))[_0xd7d6('0x25')](saveUpdates(_0x5d3883[_0xd7d6('0x4a')],null))['then'](respondWithResult(_0x45ab5c,null))['catch'](handleError(_0x45ab5c,null));};exports[_0xd7d6('0x26')]=function(_0x2840b3,_0x50455c){return db[_0xd7d6('0x2c')][_0xd7d6('0x47')]({'where':{'id':_0x2840b3[_0xd7d6('0x44')]['id']}})[_0xd7d6('0x25')](handleEntityNotFound(_0x50455c,null))[_0xd7d6('0x25')](removeEntity(_0x50455c,null))[_0xd7d6('0x49')](handleError(_0x50455c,null));};exports[_0xd7d6('0x4b')]=function(_0x44b916,_0x3262f5){return db[_0xd7d6('0x2c')][_0xd7d6('0x4b')]()[_0xd7d6('0x25')](respondWithResult(_0x3262f5,null))['catch'](handleError(_0x3262f5,null));};exports[_0xd7d6('0x4c')]=function(_0x18b400,_0x29bcc4,_0x3703b2){return db['ChatInternalMessage'][_0xd7d6('0x1e')]({'where':{'ChatGroupId':_0x18b400[_0xd7d6('0x44')]['id'],'ToId':_0x18b400[_0xd7d6('0x4d')]['id'],'read':![]}})[_0xd7d6('0x25')](function(_0x5a5f47){return{'id':_[_0xd7d6('0x4e')](_0x18b400[_0xd7d6('0x44')]['id']),'count':_0x5a5f47};})['then'](respondWithResult(_0x29bcc4,null))[_0xd7d6('0x49')](handleError(_0x29bcc4,null));};exports[_0xd7d6('0x4f')]=function(_0x3077cc,_0x2fcdf9,_0x251c2b){return db[_0xd7d6('0x2c')][_0xd7d6('0x47')]({'where':{'id':_0x3077cc[_0xd7d6('0x44')]['id']}})[_0xd7d6('0x25')](handleEntityNotFound(_0x2fcdf9,null))[_0xd7d6('0x25')](function(_0x1f829a){if(_0x1f829a){return _0x1f829a[_0xd7d6('0x4f')](_0x3077cc[_0xd7d6('0x4a')][_0xd7d6('0x50')],_[_0xd7d6('0x51')](_0x3077cc[_0xd7d6('0x4a')],[_0xd7d6('0x50'),'id'])||{});}})[_0xd7d6('0x25')](respondWithResult(_0x2fcdf9,null))[_0xd7d6('0x49')](handleError(_0x2fcdf9,null));};exports[_0xd7d6('0x52')]=function(_0xe79840,_0x2f1822,_0x123c8e){var _0x104dcf={};var _0x3980c7={};var _0xa402c7;var _0x464b6d;return db['ChatGroup'][_0xd7d6('0x53')]({'where':{'id':_0xe79840[_0xd7d6('0x44')]['id']}})[_0xd7d6('0x25')](handleEntityNotFound(_0x2f1822,null))[_0xd7d6('0x25')](function(_0x1e6616){if(_0x1e6616){_0xa402c7=_0x1e6616;_0x3980c7['model']=_['keys'](db['User'][_0xd7d6('0x2d')]);_0x3980c7[_0xd7d6('0x31')]=_['keys'](_0xe79840[_0xd7d6('0x31')]);_0x3980c7[_0xd7d6('0x32')]=_[_0xd7d6('0x33')](_0x3980c7[_0xd7d6('0x30')],_0x3980c7[_0xd7d6('0x31')]);_0x104dcf[_0xd7d6('0x34')]=_[_0xd7d6('0x33')](_0x3980c7[_0xd7d6('0x30')],qs['fields'](_0xe79840[_0xd7d6('0x31')][_0xd7d6('0x35')]));_0x104dcf['attributes']=_0x104dcf[_0xd7d6('0x34')][_0xd7d6('0x36')]?_0x104dcf['attributes']:_0x3980c7[_0xd7d6('0x30')];_0x104dcf[_0xd7d6('0x3a')]=qs[_0xd7d6('0x54')](_0xe79840[_0xd7d6('0x31')][_0xd7d6('0x54')]);_0x104dcf[_0xd7d6('0x3b')]=qs['filters'](_[_0xd7d6('0x3c')](_0xe79840[_0xd7d6('0x31')],_0x3980c7[_0xd7d6('0x32')]));if(_0xe79840[_0xd7d6('0x31')][_0xd7d6('0x3d')]){_0x104dcf[_0xd7d6('0x3b')]=_['merge'](_0x104dcf['where'],{'$or':_[_0xd7d6('0x2b')](_0x104dcf[_0xd7d6('0x34')],function(_0x161e9e){var _0x3e4693={};_0x3e4693[_0x161e9e]={'$like':'%'+_0xe79840[_0xd7d6('0x31')]['filter']+'%'};return _0x3e4693;})});}_0x104dcf=_[_0xd7d6('0x3e')]({},_0x104dcf,_0xe79840[_0xd7d6('0x46')]);return _0xa402c7[_0xd7d6('0x52')](_0x104dcf);}})['then'](function(_0x38d867){if(_0x38d867){_0x464b6d=_0x38d867[_0xd7d6('0x36')];if(!_0xe79840['query'][_0xd7d6('0x37')](_0xd7d6('0x38'))){_0x104dcf[_0xd7d6('0x39')]=qs[_0xd7d6('0x39')](_0xe79840[_0xd7d6('0x31')][_0xd7d6('0x39')]);_0x104dcf[_0xd7d6('0x1c')]=qs[_0xd7d6('0x1c')](_0xe79840['query']['offset']);}return _0xa402c7[_0xd7d6('0x52')](_0x104dcf);}})['then'](function(_0x5cda86){if(_0x5cda86){return _0x5cda86?{'count':_0x464b6d,'rows':_0x5cda86}:null;}})[_0xd7d6('0x25')](respondWithResult(_0x2f1822,null))[_0xd7d6('0x49')](handleError(_0x2f1822,null));};exports['removeMembers']=function(_0x5b6974,_0x22cfe2,_0x3d0d71){return db[_0xd7d6('0x2c')]['find']({'where':{'id':_0x5b6974[_0xd7d6('0x44')]['id']}})[_0xd7d6('0x25')](handleEntityNotFound(_0x22cfe2,null))['then'](function(_0x273db3){if(_0x273db3){return _0x273db3['removeMembers'](_0x5b6974['query'][_0xd7d6('0x50')]);}})[_0xd7d6('0x25')](respondWithStatusCode(_0x22cfe2,null))['catch'](handleError(_0x22cfe2,null));};exports['addMessage']=function(_0x1a4711,_0x3caa2d,_0x4e4c72){if(_0x1a4711[_0xd7d6('0x4a')]['id']){delete _0x1a4711['body']['id'];}return db[_0xd7d6('0x2c')][_0xd7d6('0x47')]({'where':{'id':_0x1a4711[_0xd7d6('0x44')]['id']}})[_0xd7d6('0x25')](handleEntityNotFound(_0x3caa2d,null))[_0xd7d6('0x25')](function(_0x523276){if(_0x523276){_0x1a4711[_0xd7d6('0x4a')]['ChatGroupId']=_0x523276['id'];return db[_0xd7d6('0x55')]['create'](_0x1a4711[_0xd7d6('0x4a')]);}})[_0xd7d6('0x25')](respondWithResult(_0x3caa2d,null))[_0xd7d6('0x49')](handleError(_0x3caa2d,null));};exports[_0xd7d6('0x56')]=function(_0x24768c,_0x750d8a,_0x2f7c07){var _0x4fac84={};var _0x2b37fb={};var _0x186e3b;var _0x484fb0;return db[_0xd7d6('0x2c')][_0xd7d6('0x53')]({'where':{'id':_0x24768c[_0xd7d6('0x44')]['id']}})['then'](handleEntityNotFound(_0x750d8a,null))['then'](function(_0x1a036f){if(_0x1a036f){_0x186e3b=_0x1a036f;_0x2b37fb['model']=_['keys'](db[_0xd7d6('0x55')][_0xd7d6('0x2d')]);_0x2b37fb[_0xd7d6('0x31')]=_[_0xd7d6('0x45')](_0x24768c[_0xd7d6('0x31')]);_0x2b37fb[_0xd7d6('0x32')]=_[_0xd7d6('0x33')](_0x2b37fb[_0xd7d6('0x30')],_0x2b37fb[_0xd7d6('0x31')]);_0x4fac84[_0xd7d6('0x34')]=_[_0xd7d6('0x33')](_0x2b37fb[_0xd7d6('0x30')],qs[_0xd7d6('0x35')](_0x24768c[_0xd7d6('0x31')]['fields']));_0x4fac84[_0xd7d6('0x34')]=_0x4fac84[_0xd7d6('0x34')][_0xd7d6('0x36')]?_0x4fac84['attributes']:_0x2b37fb['model'];_0x4fac84[_0xd7d6('0x3a')]=qs[_0xd7d6('0x54')](_0x24768c[_0xd7d6('0x31')][_0xd7d6('0x54')]);_0x4fac84[_0xd7d6('0x3b')]=qs['filters'](_['pick'](_0x24768c['query'],_0x2b37fb['filters']));if(_0x24768c[_0xd7d6('0x31')]['filter']){_0x4fac84[_0xd7d6('0x3b')]=_['merge'](_0x4fac84[_0xd7d6('0x3b')],{'$or':_[_0xd7d6('0x2b')](_0x4fac84[_0xd7d6('0x34')],function(_0x2770c4){var _0xa03625={};_0xa03625[_0x2770c4]={'$like':'%'+_0x24768c['query'][_0xd7d6('0x3d')]+'%'};return _0xa03625;})});}if(_0x24768c['query'][_0xd7d6('0x57')]){var _0x4e9fc1=_0x24768c['query']['$gte'][_0xd7d6('0x58')](',');var _0x3a7053={};_0x3a7053[_0x4e9fc1[0x0]]={'$gte':moment(_0x4e9fc1[0x1])[_0xd7d6('0x59')](_0xd7d6('0x5a'))};_0x4fac84[_0xd7d6('0x3b')]=_['merge'](_0x4fac84[_0xd7d6('0x3b')],_0x3a7053);}_0x4fac84=_[_0xd7d6('0x3e')]({},_0x4fac84,_0x24768c[_0xd7d6('0x46')]);return _0x186e3b[_0xd7d6('0x56')](_0x4fac84);}})[_0xd7d6('0x25')](function(_0x377ee8){if(_0x377ee8){_0x484fb0=_0x377ee8[_0xd7d6('0x36')];if(!_0x24768c[_0xd7d6('0x31')][_0xd7d6('0x37')](_0xd7d6('0x38'))){_0x4fac84[_0xd7d6('0x39')]=qs['limit'](_0x24768c[_0xd7d6('0x31')][_0xd7d6('0x39')]);_0x4fac84[_0xd7d6('0x1c')]=qs[_0xd7d6('0x1c')](_0x24768c[_0xd7d6('0x31')][_0xd7d6('0x1c')]);}return _0x186e3b['getMessages'](_0x4fac84);}})[_0xd7d6('0x25')](function(_0x57090b){if(_0x57090b){return _0x57090b?{'count':_0x484fb0,'rows':_0x57090b}:null;}})['then'](respondWithResult(_0x750d8a,null))[_0xd7d6('0x49')](handleError(_0x750d8a,null));};
\ No newline at end of file
index 73841de..85a669e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd945=['save','update','remove','emit','hasOwnProperty','hook','events','../../mysqldb','ChatGroup'];(function(_0x20841d,_0x29cdbc){var _0x3dacc5=function(_0x4034d1){while(--_0x4034d1){_0x20841d['push'](_0x20841d['shift']());}};_0x3dacc5(++_0x29cdbc);}(_0xd945,0x84));var _0x5d94=function(_0x22a77c,_0x4818c3){_0x22a77c=_0x22a77c-0x0;var _0x59d046=_0xd945[_0x22a77c];return _0x59d046;};'use strict';var EventEmitter=require(_0x5d94('0x0'));var ChatGroup=require(_0x5d94('0x1'))['db'][_0x5d94('0x2')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5d94('0x3'),'afterUpdate':_0x5d94('0x4'),'afterDestroy':_0x5d94('0x5')};function emitEvent(_0x1a0db7){return function(_0x16f002,_0x49df2e,_0x353703){ChatGroupEvents[_0x5d94('0x6')](_0x1a0db7+':'+_0x16f002['id'],_0x16f002);ChatGroupEvents[_0x5d94('0x6')](_0x1a0db7,_0x16f002);_0x353703(null);};}for(var e in events){if(events[_0x5d94('0x7')](e)){var event=events[e];ChatGroup[_0x5d94('0x8')](e,emitEvent(event));}}module['exports']=ChatGroupEvents;
\ No newline at end of file
+var _0xbd0e=['emit','hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners','save','update','remove'];(function(_0x30ae5e,_0x391fc4){var _0x1f2e93=function(_0x60307d){while(--_0x60307d){_0x30ae5e['push'](_0x30ae5e['shift']());}};_0x1f2e93(++_0x391fc4);}(_0xbd0e,0x187));var _0xebd0=function(_0x5d6270,_0x83b57a){_0x5d6270=_0x5d6270-0x0;var _0x168f26=_0xbd0e[_0x5d6270];return _0x168f26;};'use strict';var EventEmitter=require('events');var ChatGroup=require(_0xebd0('0x0'))['db']['ChatGroup'];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0xebd0('0x1')](0x0);var events={'afterCreate':_0xebd0('0x2'),'afterUpdate':_0xebd0('0x3'),'afterDestroy':_0xebd0('0x4')};function emitEvent(_0x1f7733){return function(_0x811ddd,_0x4df56d,_0x54075a){ChatGroupEvents[_0xebd0('0x5')](_0x1f7733+':'+_0x811ddd['id'],_0x811ddd);ChatGroupEvents[_0xebd0('0x5')](_0x1f7733,_0x811ddd);_0x54075a(null);};}for(var e in events){if(events[_0xebd0('0x6')](e)){var event=events[e];ChatGroup[_0xebd0('0x7')](e,emitEvent(event));}}module[_0xebd0('0x8')]=ChatGroupEvents;
\ No newline at end of file
index e2daf12..95e0c60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9da=['request-promise','path','rimraf','../../config/environment','exports','ChatGroup','chat_groups','../../config/logger','moment'];(function(_0x54ab6a,_0x4e9de2){var _0x52a41b=function(_0x1df4cc){while(--_0x1df4cc){_0x54ab6a['push'](_0x54ab6a['shift']());}};_0x52a41b(++_0x4e9de2);}(_0xf9da,0x1e4));var _0xaf9d=function(_0x503185,_0x20d261){_0x503185=_0x503185-0x0;var _0xb29eff=_0xf9da[_0x503185];return _0xb29eff;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xaf9d('0x0'))('api');var moment=require(_0xaf9d('0x1'));var BPromise=require('bluebird');var rp=require(_0xaf9d('0x2'));var fs=require('fs');var path=require(_0xaf9d('0x3'));var rimraf=require(_0xaf9d('0x4'));var config=require(_0xaf9d('0x5'));var attributes=require('./chatGroup.attributes');module[_0xaf9d('0x6')]=function(_0x1ea80a,_0x32e814){return _0x1ea80a['define'](_0xaf9d('0x7'),attributes,{'tableName':_0xaf9d('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xede0=['util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','exports','define','ChatGroup','chat_groups','lodash'];(function(_0x572b49,_0x305e3b){var _0x539704=function(_0x3c2f7c){while(--_0x3c2f7c){_0x572b49['push'](_0x572b49['shift']());}};_0x539704(++_0x305e3b);}(_0xede0,0x1b9));var _0x0ede=function(_0x57076f,_0x3f052d){_0x57076f=_0x57076f-0x0;var _0x1fad3f=_0xede0[_0x57076f];return _0x1fad3f;};'use strict';var _=require(_0x0ede('0x0'));var util=require(_0x0ede('0x1'));var logger=require(_0x0ede('0x2'))(_0x0ede('0x3'));var moment=require(_0x0ede('0x4'));var BPromise=require(_0x0ede('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0ede('0x6'));var rimraf=require(_0x0ede('0x7'));var config=require(_0x0ede('0x8'));var attributes=require('./chatGroup.attributes');module[_0x0ede('0x9')]=function(_0x35cb89,_0x5dc110){return _0x35cb89[_0x0ede('0xa')](_0x0ede('0xb'),attributes,{'tableName':_0x0ede('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 87d98cc..3689711 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x536e=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./chatGroup.socket','register','then','ChatGroup,\x20%s,\x20%s','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x5608a3,_0x5b33c5){var _0x1ed50a=function(_0x959171){while(--_0x959171){_0x5608a3['push'](_0x5608a3['shift']());}};_0x1ed50a(++_0x5b33c5);}(_0x536e,0x155));var _0xe536=function(_0x5c2a2b,_0x22c94e){_0x5c2a2b=_0x5c2a2b-0x0;var _0x19921f=_0x536e[_0x5c2a2b];return _0x19921f;};'use strict';var _=require(_0xe536('0x0'));var util=require(_0xe536('0x1'));var moment=require(_0xe536('0x2'));var BPromise=require(_0xe536('0x3'));var rs=require(_0xe536('0x4'));var fs=require('fs');var Redis=require(_0xe536('0x5'));var db=require(_0xe536('0x6'))['db'];var utils=require(_0xe536('0x7'));var logger=require(_0xe536('0x8'))(_0xe536('0x9'));var config=require(_0xe536('0xa'));var jayson=require(_0xe536('0xb'));var client=jayson[_0xe536('0xc')][_0xe536('0xd')]({'port':0x232a});config['redis']=_['defaults'](config[_0xe536('0xe')],{'host':_0xe536('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe536('0xe')]));require(_0xe536('0x10'))[_0xe536('0x11')](socket);function respondWithRpcPromise(_0x1d9dcd,_0x2581df,_0x1df409){return new BPromise(function(_0xe08ef0,_0x507dad){return client['request'](_0x1d9dcd,_0x1df409)[_0xe536('0x12')](function(_0xbec6ca){logger['info'](_0xe536('0x13'),_0x2581df,_0xe536('0x14'));logger[_0xe536('0x15')](_0xe536('0x16'),_0x2581df,_0xe536('0x14'),JSON[_0xe536('0x17')](_0xbec6ca));if(_0xbec6ca['error']){if(_0xbec6ca[_0xe536('0x18')][_0xe536('0x19')]===0x1f4){logger[_0xe536('0x18')](_0xe536('0x13'),_0x2581df,_0xbec6ca[_0xe536('0x18')]['message']);return _0x507dad(_0xbec6ca[_0xe536('0x18')][_0xe536('0x1a')]);}logger[_0xe536('0x18')]('ChatGroup,\x20%s,\x20%s',_0x2581df,_0xbec6ca[_0xe536('0x18')][_0xe536('0x1a')]);return _0xe08ef0(_0xbec6ca[_0xe536('0x18')][_0xe536('0x1a')]);}else{logger['info']('ChatGroup,\x20%s,\x20%s',_0x2581df,_0xe536('0x14'));_0xe08ef0(_0xbec6ca[_0xe536('0x1b')][_0xe536('0x1a')]);}})[_0xe536('0x1c')](function(_0x4f6eb2){logger['error'](_0xe536('0x13'),_0x2581df,_0x4f6eb2);_0x507dad(_0x4f6eb2);});});}
\ No newline at end of file
+var _0xc746=['debug','stringify','error','code','ChatGroup,\x20%s,\x20%s','message','info','request\x20sent','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','client','http','localhost','redis','./chatGroup.socket','register','request'];(function(_0x9dfc10,_0x19c2d5){var _0x4f938a=function(_0x12b1e5){while(--_0x12b1e5){_0x9dfc10['push'](_0x9dfc10['shift']());}};_0x4f938a(++_0x19c2d5);}(_0xc746,0xc9));var _0x6c74=function(_0x3fd975,_0x2a2513){_0x3fd975=_0x3fd975-0x0;var _0x130406=_0xc746[_0x3fd975];return _0x130406;};'use strict';var _=require(_0x6c74('0x0'));var util=require(_0x6c74('0x1'));var moment=require(_0x6c74('0x2'));var BPromise=require(_0x6c74('0x3'));var rs=require(_0x6c74('0x4'));var fs=require('fs');var Redis=require(_0x6c74('0x5'));var db=require(_0x6c74('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x6c74('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x6c74('0x8')][_0x6c74('0x9')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0x6c74('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6c74('0xb')]));require(_0x6c74('0xc'))[_0x6c74('0xd')](socket);function respondWithRpcPromise(_0x2d3348,_0x8546b9,_0x4a9415){return new BPromise(function(_0x35582a,_0x370005){return client[_0x6c74('0xe')](_0x2d3348,_0x4a9415)['then'](function(_0xec700c){logger['info']('ChatGroup,\x20%s,\x20%s',_0x8546b9,'request\x20sent');logger[_0x6c74('0xf')]('ChatGroup,\x20%s,\x20%s,\x20%s',_0x8546b9,'request\x20sent',JSON[_0x6c74('0x10')](_0xec700c));if(_0xec700c[_0x6c74('0x11')]){if(_0xec700c[_0x6c74('0x11')][_0x6c74('0x12')]===0x1f4){logger['error'](_0x6c74('0x13'),_0x8546b9,_0xec700c[_0x6c74('0x11')][_0x6c74('0x14')]);return _0x370005(_0xec700c[_0x6c74('0x11')][_0x6c74('0x14')]);}logger[_0x6c74('0x11')]('ChatGroup,\x20%s,\x20%s',_0x8546b9,_0xec700c[_0x6c74('0x11')]['message']);return _0x35582a(_0xec700c[_0x6c74('0x11')]['message']);}else{logger[_0x6c74('0x15')](_0x6c74('0x13'),_0x8546b9,_0x6c74('0x16'));_0x35582a(_0xec700c[_0x6c74('0x17')][_0x6c74('0x14')]);}})['catch'](function(_0x1e1979){logger[_0x6c74('0x11')]('ChatGroup,\x20%s,\x20%s',_0x8546b9,_0x1e1979);_0x370005(_0x1e1979);});});}
\ No newline at end of file
index 7610e6c..35a5ace 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbcd=['chatGroup:','./chatGroup.events','save','update','emit','register'];(function(_0x2a077c,_0x319aba){var _0x2b5ed7=function(_0x3a32c2){while(--_0x3a32c2){_0x2a077c['push'](_0x2a077c['shift']());}};_0x2b5ed7(++_0x319aba);}(_0xfbcd,0x133));var _0xdfbc=function(_0x577262,_0x15c1a1){_0x577262=_0x577262-0x0;var _0x3a2684=_0xfbcd[_0x577262];return _0x3a2684;};'use strict';var ChatGroupEvents=require(_0xdfbc('0x0'));var events=[_0xdfbc('0x1'),'remove',_0xdfbc('0x2')];function createListener(_0x58821e,_0x225e9a){return function(_0x4c0047){_0x225e9a[_0xdfbc('0x3')](_0x58821e,_0x4c0047);};}function removeListener(_0xd310fe,_0x48e468){return function(){ChatGroupEvents['removeListener'](_0xd310fe,_0x48e468);};}exports[_0xdfbc('0x4')]=function(_0x8a66e2){for(var _0x40d7e2=0x0,_0x2e5889=events['length'];_0x40d7e2<_0x2e5889;_0x40d7e2++){var _0x123d87=events[_0x40d7e2];var _0x222fc5=createListener(_0xdfbc('0x5')+_0x123d87,_0x8a66e2);ChatGroupEvents['on'](_0x123d87,_0x222fc5);}};
\ No newline at end of file
+var _0x3f85=['register','length','chatGroup:','update','emit','removeListener'];(function(_0x4ea69d,_0x290f53){var _0x5318e0=function(_0x18e081){while(--_0x18e081){_0x4ea69d['push'](_0x4ea69d['shift']());}};_0x5318e0(++_0x290f53);}(_0x3f85,0x1d1));var _0x53f8=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x3f85[_0x321bb2];return _0x9c12ed;};'use strict';var ChatGroupEvents=require('./chatGroup.events');var events=['save','remove',_0x53f8('0x0')];function createListener(_0x11f585,_0x42a27e){return function(_0x288729){_0x42a27e[_0x53f8('0x1')](_0x11f585,_0x288729);};}function removeListener(_0x29998d,_0x4cc56d){return function(){ChatGroupEvents[_0x53f8('0x2')](_0x29998d,_0x4cc56d);};}exports[_0x53f8('0x3')]=function(_0x118df5){for(var _0x199c58=0x0,_0xbd8603=events[_0x53f8('0x4')];_0x199c58<_0xbd8603;_0x199c58++){var _0x5e98a9=events[_0x199c58];var _0x3ae7fa=createListener(_0x53f8('0x5')+_0x5e98a9,_0x118df5);ChatGroupEvents['on'](_0x5e98a9,_0x3ae7fa);}};
\ No newline at end of file
index d199174..2c3c0f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd872=['delete','/:id','destroy','removeMembers','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatGroup.controller','isAuthenticated','index','get','/describe','describe','/:id/unread','getUnread','/:id/members','getMessages','post','create','addMembers','/:id/messages','addMessage','put'];(function(_0x52e959,_0x5edcd7){var _0x2b5092=function(_0x2579b1){while(--_0x2579b1){_0x52e959['push'](_0x52e959['shift']());}};_0x2b5092(++_0x5edcd7);}(_0xd872,0xd7));var _0x2d87=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd872[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x2d87('0x0'));var util=require(_0x2d87('0x1'));var path=require(_0x2d87('0x2'));var timeout=require(_0x2d87('0x3'));var express=require(_0x2d87('0x4'));var router=express['Router']();var fs_extra=require(_0x2d87('0x5'));var auth=require(_0x2d87('0x6'));var interaction=require(_0x2d87('0x7'));var config=require(_0x2d87('0x8'));var controller=require(_0x2d87('0x9'));router['get']('/',auth[_0x2d87('0xa')](),controller[_0x2d87('0xb')]);router[_0x2d87('0xc')](_0x2d87('0xd'),auth[_0x2d87('0xa')](),controller[_0x2d87('0xe')]);router[_0x2d87('0xc')]('/:id',auth[_0x2d87('0xa')](),controller['show']);router[_0x2d87('0xc')](_0x2d87('0xf'),auth['isAuthenticated'](),controller[_0x2d87('0x10')]);router[_0x2d87('0xc')](_0x2d87('0x11'),auth[_0x2d87('0xa')](),controller['getMembers']);router[_0x2d87('0xc')]('/:id/messages',auth['isAuthenticated'](),controller[_0x2d87('0x12')]);router[_0x2d87('0x13')]('/',auth[_0x2d87('0xa')](),controller[_0x2d87('0x14')]);router[_0x2d87('0x13')](_0x2d87('0x11'),auth[_0x2d87('0xa')](),controller[_0x2d87('0x15')]);router['post'](_0x2d87('0x16'),auth[_0x2d87('0xa')](),controller[_0x2d87('0x17')]);router[_0x2d87('0x18')]('/:id',auth[_0x2d87('0xa')](),controller['update']);router[_0x2d87('0x19')](_0x2d87('0x1a'),auth[_0x2d87('0xa')](),controller[_0x2d87('0x1b')]);router['delete']('/:id/members',auth[_0x2d87('0xa')](),controller[_0x2d87('0x1c')]);module[_0x2d87('0x1d')]=router;
\ No newline at end of file
+var _0x0b32=['/:id/members','getMembers','/:id/messages','getMessages','post','create','addMembers','addMessage','update','delete','removeMembers','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatGroup.controller','isAuthenticated','index','get','/describe','describe','/:id','/:id/unread','getUnread'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0x0b32,0x168));var _0x20b3=function(_0x1643b2,_0x53b0fe){_0x1643b2=_0x1643b2-0x0;var _0x4ef6e8=_0x0b32[_0x1643b2];return _0x4ef6e8;};'use strict';var multer=require(_0x20b3('0x0'));var util=require('util');var path=require(_0x20b3('0x1'));var timeout=require(_0x20b3('0x2'));var express=require(_0x20b3('0x3'));var router=express[_0x20b3('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x20b3('0x5'));var interaction=require(_0x20b3('0x6'));var config=require(_0x20b3('0x7'));var controller=require(_0x20b3('0x8'));router['get']('/',auth[_0x20b3('0x9')](),controller[_0x20b3('0xa')]);router[_0x20b3('0xb')](_0x20b3('0xc'),auth['isAuthenticated'](),controller[_0x20b3('0xd')]);router[_0x20b3('0xb')](_0x20b3('0xe'),auth['isAuthenticated'](),controller['show']);router[_0x20b3('0xb')](_0x20b3('0xf'),auth[_0x20b3('0x9')](),controller[_0x20b3('0x10')]);router[_0x20b3('0xb')](_0x20b3('0x11'),auth[_0x20b3('0x9')](),controller[_0x20b3('0x12')]);router['get'](_0x20b3('0x13'),auth[_0x20b3('0x9')](),controller[_0x20b3('0x14')]);router[_0x20b3('0x15')]('/',auth['isAuthenticated'](),controller[_0x20b3('0x16')]);router[_0x20b3('0x15')]('/:id/members',auth[_0x20b3('0x9')](),controller[_0x20b3('0x17')]);router['post'](_0x20b3('0x13'),auth[_0x20b3('0x9')](),controller[_0x20b3('0x18')]);router['put'](_0x20b3('0xe'),auth[_0x20b3('0x9')](),controller[_0x20b3('0x19')]);router[_0x20b3('0x1a')](_0x20b3('0xe'),auth[_0x20b3('0x9')](),controller['destroy']);router['delete'](_0x20b3('0x11'),auth['isAuthenticated'](),controller[_0x20b3('0x1b')]);module[_0x20b3('0x1c')]=router;
\ No newline at end of file
index 193e7a3..712fdc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc686=['BOOLEAN','ENUM','thumb','star','TEXT','STRING','DATE','out'];(function(_0x2dc4c5,_0x115bf6){var _0x439cbe=function(_0x2677e4){while(--_0x2677e4){_0x2dc4c5['push'](_0x2dc4c5['shift']());}};_0x439cbe(++_0x115bf6);}(_0xc686,0x148));var _0x6c68=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0xc686[_0x56482c];return _0x5aae7a;};'use strict';var Sequelize=require('sequelize');module['exports']={'closed':{'type':Sequelize[_0x6c68('0x0')],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize[_0x6c68('0x1')]('star',_0x6c68('0x2')),'defaultValue':_0x6c68('0x3')},'ratingMessage':{'type':Sequelize[_0x6c68('0x4')]},'pathTranscript':{'type':Sequelize[_0x6c68('0x4')]},'mailTranscript':{'type':Sequelize[_0x6c68('0x5')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x6c68('0x6')]},'disposition':{'type':Sequelize[_0x6c68('0x5')]},'secondDisposition':{'type':Sequelize[_0x6c68('0x5')]},'thirdDisposition':{'type':Sequelize[_0x6c68('0x5')]},'note':{'type':Sequelize[_0x6c68('0x5')]},'browserName':{'type':Sequelize[_0x6c68('0x5')]},'browserVersion':{'type':Sequelize[_0x6c68('0x5')]},'osName':{'type':Sequelize['STRING']},'osVersion':{'type':Sequelize[_0x6c68('0x5')]},'deviceModel':{'type':Sequelize[_0x6c68('0x5')]},'deviceVendor':{'type':Sequelize['STRING']},'deviceType':{'type':Sequelize[_0x6c68('0x5')]},'referer':{'type':Sequelize['TEXT']},'customerIp':{'type':Sequelize[_0x6c68('0x5')]},'formData':{'type':Sequelize[_0x6c68('0x4')]('long')},'read1stAt':{'type':Sequelize[_0x6c68('0x6')]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x6c68('0x1')]('in',_0x6c68('0x7')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize['STRING']},'customerPort':{'type':Sequelize[_0x6c68('0x5')]},'vidaooSessionId':{'type':Sequelize['TEXT']},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x6f59=['long','out','sequelize','exports','BOOLEAN','INTEGER','ENUM','star','thumb','TEXT','STRING','DATE'];(function(_0x424f63,_0x805d5e){var _0x13cde7=function(_0x2aab88){while(--_0x2aab88){_0x424f63['push'](_0x424f63['shift']());}};_0x13cde7(++_0x805d5e);}(_0x6f59,0x1be));var _0x96f5=function(_0xaf28a6,_0x364e0c){_0xaf28a6=_0xaf28a6-0x0;var _0x1d0d0c=_0x6f59[_0xaf28a6];return _0x1d0d0c;};'use strict';var Sequelize=require(_0x96f5('0x0'));module[_0x96f5('0x1')]={'closed':{'type':Sequelize[_0x96f5('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x96f5('0x3')]},'ratingType':{'type':Sequelize[_0x96f5('0x4')](_0x96f5('0x5'),_0x96f5('0x6')),'defaultValue':_0x96f5('0x5')},'ratingMessage':{'type':Sequelize[_0x96f5('0x7')]},'pathTranscript':{'type':Sequelize[_0x96f5('0x7')]},'mailTranscript':{'type':Sequelize[_0x96f5('0x8')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x96f5('0x9')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x96f5('0x8')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x96f5('0x8')]},'browserName':{'type':Sequelize['STRING']},'browserVersion':{'type':Sequelize[_0x96f5('0x8')]},'osName':{'type':Sequelize['STRING']},'osVersion':{'type':Sequelize[_0x96f5('0x8')]},'deviceModel':{'type':Sequelize[_0x96f5('0x8')]},'deviceVendor':{'type':Sequelize[_0x96f5('0x8')]},'deviceType':{'type':Sequelize[_0x96f5('0x8')]},'referer':{'type':Sequelize['TEXT']},'customerIp':{'type':Sequelize[_0x96f5('0x8')]},'formData':{'type':Sequelize[_0x96f5('0x7')](_0x96f5('0xa'))},'read1stAt':{'type':Sequelize[_0x96f5('0x9')]},'lastMsgAt':{'type':Sequelize[_0x96f5('0x9')]},'lastMsgDirection':{'type':Sequelize[_0x96f5('0x4')]('in',_0x96f5('0xb')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x96f5('0x8')]},'customerPort':{'type':Sequelize[_0x96f5('0x8')]},'vidaooSessionId':{'type':Sequelize[_0x96f5('0x7')]},'autoreplyExecuted':{'type':Sequelize[_0x96f5('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 8eec88e..cc91ee6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['pick','filters','field','tools_tags','select','u.id','u.fullname','ui.ChatInteractionId','from','user_has_chat_interactions','left_join','users','u.id\x20=\x20ui.UserId','chat_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','chat_websites','a.id\x20=\x20i.ChatWebsiteId','me.ChatInteractionId\x20=\x20i.id','chat_interaction_has_tags','it.ChatInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','parseSearch','search','conditions','length','unreadMessages','value','having','`\x20=\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','find','text','some','compact','isEmpty','ChatWebsiteId','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','filter','i.id\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','DESC','t.id\x20IN\x20?','resolve','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','role','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','i.ChatWebsiteId\x20IN\x20?','toString','sequelize','a.key','a.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName','i.*','c.firstName','Contact.firstName','Contact.lastName','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','show','params','includeAll','include','options','create','ChatInteraction','describe','createVidaooSession','vidaooTopic','vidaooNote','vidaooMetadata','vidaooApiKey','vidaooEscalation','email','POST','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','follow','metadata','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Error\x20in\x20Vidaoo\x20configuration','out','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','Interaction\x20already\x20assigned','AbandonInteraction','attachmentUpload','file','originalname','basename','filename','mimetype','Attachment','attachmentDownload','findOne','Unauthorized','attachId','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','download','server/files/chat/upload/','format','now','ChatWebsite','Messages','%s%d','agentAlias','System','customer','Visitor','agentIdentifier','alias','agent_fullname','[%s]\x20%s:\x20%s\x0a','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailAccount','Smtp','CloudProvider','getSmtpOptions','SendMail','sendMail','mailTranscript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','omit','getMessages','YYYY-MM-DD\x20HH:mm:ss','rows','getMyMessages','includeAgent','findAll','addTags','setTags','spread','Tag','color','emit','removeTags','unix','server','files','tmp','attachments','transcript-%d-%s.zip','firstName','Account','Owner','get','mkdirSync','N.A.','closedAt','osName','referer','customerIp','customerPort','existsSync','createReadStream','pipe','createWriteStream','lastName','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','Chat','createPdfFromHTML','err','zip-dir','moment','mustache','util','path','ejs','lodash','squel','ioredis','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','./chatInteraction.socket','register','jayson/promise','http','client','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','error','code','message','result','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','update','destroy','then','name','send','render','merge','body','contact','agent','interaction','account','Users','fullname','TagIds','Tags','split','forEach','push','catch','talking','unmanaged','abandoned','total','UserId','waiting','closed','disposition','answered','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where'];(function(_0x637a0d,_0x526e61){var _0x233b06=function(_0x2a4e7c){while(--_0x2a4e7c){_0x637a0d['push'](_0x637a0d['shift']());}};_0x233b06(++_0x526e61);}(_0x9bde,0xe1));var _0xe9bd=function(_0x2065de,_0x58e945){_0x2065de=_0x2065de-0x0;var _0x2d486b=_0x9bde[_0x2065de];return _0x2d486b;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0xe9bd('0x0'));var rp=require('request-promise');var moment=require(_0xe9bd('0x1'));var BPromise=require('bluebird');var Mustache=require(_0xe9bd('0x2'));var util=require(_0xe9bd('0x3'));var path=require(_0xe9bd('0x4'));var ejs=require(_0xe9bd('0x5'));var fs=require('fs');var _=require(_0xe9bd('0x6'));var squel=require(_0xe9bd('0x7'));var Redis=require(_0xe9bd('0x8'));var qs=require('../../components/parsers/qs');var as=require(_0xe9bd('0x9'));var pdf=require(_0xe9bd('0xa'));var logger=require(_0xe9bd('0xb'))(_0xe9bd('0xc'));var config=require(_0xe9bd('0xd'));var db=require(_0xe9bd('0xe'))['db'];config[_0xe9bd('0xf')]=_[_0xe9bd('0x10')](config[_0xe9bd('0xf')],{'host':_0xe9bd('0x11'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xe9bd('0x12'))[_0xe9bd('0x13')](socket);var jayson=require(_0xe9bd('0x14'));var client=jayson['client'][_0xe9bd('0x15')]({'port':0x232b});var client9004=jayson[_0xe9bd('0x16')][_0xe9bd('0x15')]({'port':0x232c});function respondWithRpcPromise(_0x141587,_0x5e022a,_0x2c1d98,_0x4ac319){return new BPromise(function(_0x220d07,_0x429e88){var _0x3435b4=_0x4ac319||client;return _0x3435b4['request'](_0x141587,_0x2c1d98)['then'](function(_0x46a95e){logger[_0xe9bd('0x17')](_0xe9bd('0x18'),_0x5e022a,_0xe9bd('0x19'));logger[_0xe9bd('0x1a')](_0xe9bd('0x1b'),_0x5e022a,_0xe9bd('0x19'),JSON['stringify'](_0x46a95e));if(_0x46a95e[_0xe9bd('0x1c')]){if(_0x46a95e[_0xe9bd('0x1c')][_0xe9bd('0x1d')]===0x1f4){logger['error'](_0xe9bd('0x18'),_0x5e022a,_0x46a95e[_0xe9bd('0x1c')][_0xe9bd('0x1e')]);return _0x429e88(_0x46a95e[_0xe9bd('0x1c')]['message']);}logger[_0xe9bd('0x1c')]('ChatInteraction,\x20%s,\x20%s',_0x5e022a,_0x46a95e[_0xe9bd('0x1c')]['message']);return _0x220d07(_0x46a95e[_0xe9bd('0x1c')][_0xe9bd('0x1e')]);}else{logger[_0xe9bd('0x17')](_0xe9bd('0x18'),_0x5e022a,_0xe9bd('0x19'));_0x220d07(_0x46a95e[_0xe9bd('0x1f')][_0xe9bd('0x1e')]);}})['catch'](function(_0x133318){logger[_0xe9bd('0x1c')]('ChatInteraction,\x20%s,\x20%s',_0x5e022a,_0x133318);_0x429e88(_0x133318);});});}function respondWithStatusCode(_0x37aec1,_0x505c23){_0x505c23=_0x505c23||0xcc;return function(_0x238ab1){if(_0x238ab1){return _0x37aec1[_0xe9bd('0x20')](_0x505c23);}return _0x37aec1[_0xe9bd('0x21')](_0x505c23)[_0xe9bd('0x22')]();};}function respondWithResult(_0x5bc4bf,_0x24cf25){_0x24cf25=_0x24cf25||0xc8;return function(_0x1e3cbb){if(_0x1e3cbb){return _0x5bc4bf[_0xe9bd('0x21')](_0x24cf25)[_0xe9bd('0x23')](_0x1e3cbb);}};}function respondWithFilteredResult(_0x2641be,_0xb52d45){return function(_0x399f3c){if(_0x399f3c){var _0x43ea90=typeof _0xb52d45[_0xe9bd('0x24')]==='undefined'&&typeof _0xb52d45[_0xe9bd('0x25')]===_0xe9bd('0x26');var _0x5ba1d6=_0x399f3c[_0xe9bd('0x27')];var _0xc25248=_0x43ea90?0x0:_0xb52d45[_0xe9bd('0x24')];var _0x429055=_0x43ea90?_0x399f3c[_0xe9bd('0x27')]:_0xb52d45[_0xe9bd('0x24')]+_0xb52d45['limit'];var _0x5b7f1d;if(_0x429055>=_0x5ba1d6){_0x429055=_0x5ba1d6;_0x5b7f1d=0xc8;}else{_0x5b7f1d=0xce;}_0x2641be[_0xe9bd('0x21')](_0x5b7f1d);return _0x2641be['set'](_0xe9bd('0x28'),_0xc25248+'-'+_0x429055+'/'+_0x5ba1d6)[_0xe9bd('0x23')](_0x399f3c);}return null;};}function saveUpdates(_0x27f80c){return function(_0x36aa80){if(_0x36aa80){return _0x36aa80[_0xe9bd('0x29')](_0x27f80c)['then'](function(_0x4b7bc2){return _0x4b7bc2;});}return null;};}function removeEntity(_0x7f2c5){return function(_0x3b6682){if(_0x3b6682){return _0x3b6682[_0xe9bd('0x2a')]()[_0xe9bd('0x2b')](function(){_0x7f2c5[_0xe9bd('0x21')](0xcc)[_0xe9bd('0x22')]();});}};}function handleEntityNotFound(_0x3c31ee){return function(_0x66213a){if(!_0x66213a){_0x3c31ee[_0xe9bd('0x20')](0x194);}return _0x66213a;};}function handleError(_0x4ec15c,_0x426004){_0x426004=_0x426004||0x1f4;return function(_0x81a31f){logger[_0xe9bd('0x1c')](_0x81a31f['stack']);if(_0x81a31f['name']){delete _0x81a31f[_0xe9bd('0x2c')];}_0x4ec15c[_0xe9bd('0x21')](_0x426004)[_0xe9bd('0x2d')](_0x81a31f);};}function getMustacheRender(_0x3ed60a,_0x1dda43){return Mustache[_0xe9bd('0x2e')](_0x3ed60a,_[_0xe9bd('0x2f')](_0x1dda43[_0xe9bd('0x30')],{'contact':_0x1dda43[_0xe9bd('0x31')],'message':_0x1dda43[_0xe9bd('0x1e')],'agent':_0x1dda43[_0xe9bd('0x32')],'interaction':_0x1dda43[_0xe9bd('0x33')],'account':_0x1dda43[_0xe9bd('0x34')]}))||'';}function getInteractionUsers(_0x199477,_0xc50476){return new BPromise(function(_0x8ff624,_0x264ba0){try{if(_0xc50476[_0x199477['id']]){_0x199477[_0xe9bd('0x35')]=_['map'](_0xc50476[_0x199477['id']],function(_0x3f3cf5){return{'id':_0x3f3cf5['id'],'fullname':_0x3f3cf5[_0xe9bd('0x36')]};});}}catch(_0x56b4a5){_0x264ba0(_0x56b4a5);}_0x8ff624(_0x199477);});}function getInteractionTags(_0x404a7d,_0x264c87){return new BPromise(function(_0x4c7d47,_0x4b1da0){try{if(_0x404a7d[_0xe9bd('0x37')]){_0x404a7d[_0xe9bd('0x38')]=[];_0x404a7d['TagIds'][_0xe9bd('0x39')](',')[_0xe9bd('0x3a')](function(_0x14927c){_0x404a7d['Tags'][_0xe9bd('0x3b')](_0x264c87[_0x14927c]);});}delete _0x404a7d['TagIds'];}catch(_0x3c8f7e){_0x4b1da0(_0x3c8f7e);}_0x4c7d47(_0x404a7d);});}function updateChatInteraction(_0x42238a,_0x63d67c,_0x1366f2){return new BPromise(function(_0x4e1538,_0x41f2d4){return getInteractionUsers(_0x42238a,_0x1366f2)[_0xe9bd('0x2b')](function(_0x327e1a){return getInteractionTags(_0x327e1a,_0x63d67c);})[_0xe9bd('0x2b')](function(_0x253359){return getStateInteraction(_0x253359);})[_0xe9bd('0x2b')](function(_0x3647d8){_0x4e1538(_0x3647d8);})[_0xe9bd('0x3c')](function(_0x2b5a71){_0x41f2d4(_0x2b5a71);});});}function getStateInteraction(_0x1d5d93){return new BPromise(function(_0x4e8565){_0x1d5d93['waiting']=0x0;_0x1d5d93[_0xe9bd('0x3d')]=0x0;_0x1d5d93['answered']=0x0;_0x1d5d93[_0xe9bd('0x3e')]=0x0;_0x1d5d93[_0xe9bd('0x3f')]=0x0;_0x1d5d93[_0xe9bd('0x40')]=0x0;if(!_0x1d5d93['closed']&&!_0x1d5d93[_0xe9bd('0x41')]){_0x1d5d93[_0xe9bd('0x42')]+=0x1;}if(!_0x1d5d93[_0xe9bd('0x43')]&&_0x1d5d93['UserId']){_0x1d5d93[_0xe9bd('0x3d')]+=0x1;if(_0x1d5d93[_0xe9bd('0x42')]){_0x1d5d93[_0xe9bd('0x42')]-=0x1;}}if(_0x1d5d93[_0xe9bd('0x43')]&&_0x1d5d93[_0xe9bd('0x44')]===_0xe9bd('0x3f')){_0x1d5d93[_0xe9bd('0x3f')]+=0x1;if(_0x1d5d93[_0xe9bd('0x42')]){_0x1d5d93[_0xe9bd('0x42')]-=0x1;}}else if(_0x1d5d93[_0xe9bd('0x43')]&&!_0x1d5d93[_0xe9bd('0x41')]&&_0x1d5d93[_0xe9bd('0x44')]){_0x1d5d93[_0xe9bd('0x3e')]+=0x1;if(_0x1d5d93[_0xe9bd('0x42')]){_0x1d5d93[_0xe9bd('0x42')]-=0x1;}}else if(_0x1d5d93['closed']&&_0x1d5d93['UserId']){_0x1d5d93[_0xe9bd('0x45')]+=0x1;if(_0x1d5d93[_0xe9bd('0x3d')]){_0x1d5d93[_0xe9bd('0x3d')]-=0x1;}}_0x1d5d93['total']+=0x1;_0x4e8565(_0x1d5d93);});}exports['index']=function(_0x43cf7d,_0x3f6f22){var _0x165942={},_0x15da40={},_0x39fb61={'count':0x0,'rows':[]};var _0x3d4b58=_[_0xe9bd('0x46')](db['ChatInteraction'][_0xe9bd('0x47')],function(_0x4cc146){return{'name':_0x4cc146[_0xe9bd('0x48')],'type':_0x4cc146[_0xe9bd('0x49')][_0xe9bd('0x4a')]};});_0x15da40[_0xe9bd('0x4b')]=_[_0xe9bd('0x46')](_0x3d4b58,'name');_0x15da40[_0xe9bd('0x4c')]=_[_0xe9bd('0x4d')](_0x43cf7d[_0xe9bd('0x4c')]);_0x15da40['filters']=_[_0xe9bd('0x4e')](_0x15da40[_0xe9bd('0x4b')],_0x15da40[_0xe9bd('0x4c')]);_0x165942['attributes']=_[_0xe9bd('0x4e')](_0x15da40[_0xe9bd('0x4b')],qs[_0xe9bd('0x4f')](_0x43cf7d[_0xe9bd('0x4c')][_0xe9bd('0x4f')]));_0x165942['attributes']=_0x165942[_0xe9bd('0x50')]['length']?_0x165942[_0xe9bd('0x50')]:_0x15da40[_0xe9bd('0x4b')];if(!_0x43cf7d[_0xe9bd('0x4c')][_0xe9bd('0x51')](_0xe9bd('0x52'))){_0x165942['limit']=qs[_0xe9bd('0x25')](_0x43cf7d['query'][_0xe9bd('0x25')]);_0x165942[_0xe9bd('0x24')]=qs['offset'](_0x43cf7d['query'][_0xe9bd('0x24')]);}_0x165942['order']=qs[_0xe9bd('0x53')](_0x43cf7d['query'][_0xe9bd('0x53')]);_0x165942[_0xe9bd('0x54')]=qs['filters'](_[_0xe9bd('0x55')](_0x43cf7d['query'],_0x15da40[_0xe9bd('0x56')]),_0x3d4b58);var _0x2d9a94=[];var _0x321050=squel['select']()[_0xe9bd('0x57')]('id')[_0xe9bd('0x57')](_0xe9bd('0x2c'))[_0xe9bd('0x57')]('color')['from'](_0xe9bd('0x58'));var _0x493aae=squel[_0xe9bd('0x59')]()[_0xe9bd('0x57')](_0xe9bd('0x5a'))[_0xe9bd('0x57')](_0xe9bd('0x5b'))[_0xe9bd('0x57')](_0xe9bd('0x5c'))[_0xe9bd('0x5d')](_0xe9bd('0x5e'),'ui')[_0xe9bd('0x5f')](_0xe9bd('0x60'),'u',_0xe9bd('0x61'));var _0x51500d=squel['select']()['from'](_0xe9bd('0x62'),'i')['left_join'](_0xe9bd('0x63'),'c',_0xe9bd('0x64'))[_0xe9bd('0x5f')](_0xe9bd('0x60'),'o',_0xe9bd('0x65'))[_0xe9bd('0x5f')](_0xe9bd('0x66'),'a',_0xe9bd('0x67'))[_0xe9bd('0x5f')]('chat_messages','me',_0xe9bd('0x68'))[_0xe9bd('0x5f')](_0xe9bd('0x69'),'it',_0xe9bd('0x6a'))['left_join'](_0xe9bd('0x58'),'t',_0xe9bd('0x6b'));var _0x34bd38=squel['expr']();var _0x3e6f63=[];var _0x204ea9=squel[_0xe9bd('0x6c')]();var _0xfe82f7;if(_0x43cf7d['query']['search']){_0xfe82f7=as[_0xe9bd('0x6d')](_0x43cf7d[_0xe9bd('0x4c')][_0xe9bd('0x6e')]);var _0xf02c5d=_0xfe82f7['sqlOperator'];for(var _0x49add9=0x0;_0x49add9<_0xfe82f7[_0xe9bd('0x6f')][_0xe9bd('0x70')];_0x49add9++){var _0x3ea0cc=_0xfe82f7[_0xe9bd('0x6f')][_0x49add9];var _0x1fd2b5='i';var _0x23f476=_['find'](_0x3d4b58,[_0xe9bd('0x2c'),_0x3ea0cc['field']]);if(!_0x23f476){switch(_0x3ea0cc[_0xe9bd('0x57')]){case _0xe9bd('0x71'):if(_0x3ea0cc[_0xe9bd('0x72')]==0x1){_0x51500d[_0xe9bd('0x73')]('`'+_0x3ea0cc['field']+_0xe9bd('0x74'));}else{_0x51500d[_0xe9bd('0x73')]('`'+_0x3ea0cc[_0xe9bd('0x57')]+'`\x20>\x200');}break;case _0xe9bd('0x75'):if(_0x3ea0cc[_0xe9bd('0x76')]===_0xe9bd('0x77')){if(_0x3ea0cc[_0xe9bd('0x72')][_0xe9bd('0x39')]('\x20')[_0xe9bd('0x70')]>0x1){_0x34bd38[_0xf02c5d](_0xe9bd('0x78'),qs[_0xe9bd('0x79')](_0x3ea0cc[_0xe9bd('0x72')]),null);}else{var _0x37bb08='%'+_0x3ea0cc[_0xe9bd('0x72')]+'%';_0x34bd38[_0xf02c5d](_0xe9bd('0x7a'),_0x37bb08,_0x37bb08,_0x37bb08);}}else{_0x23f476=_['find'](_0x3d4b58,[_0xe9bd('0x2c'),_0xe9bd('0x7b')]);_0x3ea0cc['field']=_0xe9bd('0x7b');_0x5d7257=as[_0xe9bd('0x7c')](_0x1fd2b5,_0x23f476['type'],_0x3ea0cc);_0x34bd38[_0xf02c5d](_0x5d7257['text'],_0x5d7257[_0xe9bd('0x72')][_0xe9bd('0x7d')],_0x5d7257['value']['end']);}break;case'Tag':var _0x246487=_0x3ea0cc['value']['split'](',')['map'](function(_0x4bcf2b){return Number(_0x4bcf2b);});_0x246487[_0xe9bd('0x3a')](function(_0x46da33){_0x204ea9['or'](_0xe9bd('0x7e'),'%,'+_0x46da33+',%');});_0x3e6f63=_['union'](_0x3e6f63,_0x246487);break;case _0xe9bd('0x7f'):if(_0x3ea0cc[_0xe9bd('0x76')]===_0xe9bd('0x77')){_0x34bd38[_0xf02c5d](_0xe9bd('0x80'),'%'+_0x3ea0cc['value']+'%',null);}else{_0x23f476=_[_0xe9bd('0x81')](_0x3d4b58,[_0xe9bd('0x2c'),_0xe9bd('0x41')]);_0x3ea0cc['field']='UserId';_0x5d7257=as[_0xe9bd('0x7c')](_0x1fd2b5,_0x23f476[_0xe9bd('0x49')],_0x3ea0cc);_0x34bd38[_0xf02c5d](_0x5d7257[_0xe9bd('0x82')],_0x5d7257[_0xe9bd('0x72')][_0xe9bd('0x7d')],_0x5d7257[_0xe9bd('0x72')][_0xe9bd('0x22')]);}break;case _0xe9bd('0x30'):_0x5d7257=as['buildExpression']('me',null,_0x3ea0cc);_0x34bd38[_0xf02c5d](_0x5d7257[_0xe9bd('0x82')],_0x5d7257[_0xe9bd('0x72')][_0xe9bd('0x7d')],_0x5d7257[_0xe9bd('0x72')][_0xe9bd('0x22')]);break;}}else{var _0x5d7257=as[_0xe9bd('0x7c')](_0x1fd2b5,_0x23f476['type'],_0x3ea0cc);_0x34bd38[_0xf02c5d](_0x5d7257['text'],_0x5d7257[_0xe9bd('0x72')][_0xe9bd('0x7d')],_0x5d7257['value'][_0xe9bd('0x22')]);}}}else{var _0x2d1e63=_(_0x43cf7d[_0xe9bd('0x4c')])[_0xe9bd('0x4d')]()['map'](function(_0x3c1ab9){return _[_0xe9bd('0x83')](_0x3d4b58,['name',_0x3c1ab9])?_0x3c1ab9:undefined;})[_0xe9bd('0x84')]()[_0xe9bd('0x72')]();if(!_[_0xe9bd('0x85')](_0x2d1e63)){_0x2d1e63[_0xe9bd('0x3a')](function(_0x2e63c7){if(_0x2e63c7===_0xe9bd('0x86')){_0x51500d[_0xe9bd('0x54')]('i.ChatWebsiteId\x20IN\x20?',[][_0xe9bd('0x87')](_0x43cf7d[_0xe9bd('0x4c')][_0x2e63c7]));}else if(_0x2e63c7===_0xe9bd('0x88')){var _0x421533=JSON[_0xe9bd('0x89')](_0x43cf7d[_0xe9bd('0x4c')][_0x2e63c7])[_0xe9bd('0x8a')];var _0x2adc49=JSON[_0xe9bd('0x89')](_0x43cf7d['query'][_0x2e63c7])[_0xe9bd('0x8b')];_0x51500d[_0xe9bd('0x54')](_0xe9bd('0x8c'),_0x421533,_0x2adc49);}else{if(_0x43cf7d[_0xe9bd('0x4c')][_0x2e63c7]===_0xe9bd('0x8d')){_0x51500d[_0xe9bd('0x54')]('i.'+_0x2e63c7+_0xe9bd('0x8e'));}else{_0x51500d['where']('i.'+_0x2e63c7+_0xe9bd('0x8f'),_0x43cf7d[_0xe9bd('0x4c')][_0x2e63c7]);}}});}if(_0x43cf7d['query'][_0xe9bd('0x90')]){if(_0x43cf7d[_0xe9bd('0x4c')][_0xe9bd('0x90')]==0x1){_0x51500d[_0xe9bd('0x73')](_0xe9bd('0x91'));}else{_0x51500d[_0xe9bd('0x73')](_0xe9bd('0x92'));}}if(_0x43cf7d['query']['tag']){_0x3e6f63=_[_0xe9bd('0x93')](_0x43cf7d[_0xe9bd('0x4c')][_0xe9bd('0x94')])?_0x43cf7d[_0xe9bd('0x4c')][_0xe9bd('0x94')]:new Array(_0x43cf7d[_0xe9bd('0x4c')][_0xe9bd('0x94')]);_0x3e6f63['forEach'](function(_0x35390a){_0x204ea9['or'](_0xe9bd('0x7e'),'%,'+_0x35390a+',%');});}if(_0x43cf7d[_0xe9bd('0x4c')][_0xe9bd('0x95')]){var _0x14cdd5=_0x43cf7d[_0xe9bd('0x4c')][_0xe9bd('0x95')]['replace']('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs['isNumeric'](_0x14cdd5)){_0x34bd38['or'](_0xe9bd('0x96'),_0x14cdd5+'%');}else{_0x34bd38['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x14cdd5))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x14cdd5+'%');}}}_0x51500d[_0xe9bd('0x54')](_0x34bd38);_0x51500d[_0xe9bd('0x97')](_0xe9bd('0x98'));var _0xa8b335={'type':db[_0xe9bd('0x99')][_0xe9bd('0x9a')][_0xe9bd('0x9b')],'raw':!![]};var _0x27ca62=_0x51500d[_0xe9bd('0x9c')]();_0x27ca62['field'](_0xe9bd('0x98'));_0x27ca62['field'](_0xe9bd('0x9d'),_0xe9bd('0x71'));if(_0x165942[_0xe9bd('0x9e')]){_0x165942[_0xe9bd('0x9e')][_0xe9bd('0x3a')](function(_0x5d8c24){var _0x5b14e5=_0x5d8c24[0x0]==='contactName'?_0x5d8c24[0x0]:'i.'+_0x5d8c24[0x0];_0x51500d[_0xe9bd('0x9e')](_0x5b14e5,_0x5d8c24[0x1]===_0xe9bd('0x9f')?![]:!![]);});}if(!_['isEmpty'](_0x3e6f63)){_0x51500d[_0xe9bd('0x73')](_0x204ea9);_0x27ca62[_0xe9bd('0x54')](_0xe9bd('0xa0'),_0x3e6f63);}BPromise[_0xe9bd('0xa1')]()[_0xe9bd('0x2b')](function(){if(!_0xfe82f7){if(_0x43cf7d['query'][_0xe9bd('0x86')])return;_0x27ca62[_0xe9bd('0x54')](_0xe9bd('0xa2'));_0x51500d[_0xe9bd('0x54')](_0xe9bd('0xa2'));return;}if(_0x43cf7d[_0xe9bd('0xa3')][_0xe9bd('0xa4')]!==_0xe9bd('0x32'))return;return _0x43cf7d[_0xe9bd('0xa3')][_0xe9bd('0xa5')]({'attributes':['id'],'raw':!![]})['then'](function(_0x4d5288){if(_['isEmpty'](_0x4d5288)){_0x27ca62['where'](_0xe9bd('0xa6'));_0x51500d[_0xe9bd('0x54')](_0xe9bd('0xa6'));}else{_0x27ca62['where'](_0xe9bd('0xa7'),_[_0xe9bd('0x46')](_0x4d5288,'id'));_0x51500d['where']('i.ChatWebsiteId\x20IN\x20?',_[_0xe9bd('0x46')](_0x4d5288,'id'));}});})[_0xe9bd('0x2b')](function(){if(_0x43cf7d[_0xe9bd('0xa3')][_0xe9bd('0xa4')]===_0xe9bd('0x32')&&!_0xfe82f7&&!_0x43cf7d['query']['ChatWebsiteId'])return[];return db['sequelize'][_0xe9bd('0x4c')](_0x27ca62[_0xe9bd('0xa8')](),_0xa8b335);})[_0xe9bd('0x2b')](function(_0x140678){_0x39fb61[_0xe9bd('0x27')]=_0x140678[_0xe9bd('0x70')];if(_0x39fb61[_0xe9bd('0x27')]===0x0)return[];return db[_0xe9bd('0xa9')][_0xe9bd('0x4c')](_0x321050[_0xe9bd('0xa8')](),_0xa8b335)['then'](function(_0xb1203d){_0x2d9a94=_['keyBy'](_0xb1203d,'id');_0xa8b335=_[_0xe9bd('0x2f')](_0xa8b335,{'model':db['ChatInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x43cf7d['query'][_0xe9bd('0x4f')]){_0x165942['attributes'][_0xe9bd('0x3a')](function(_0x5cdaa8){_0x51500d[_0xe9bd('0x57')]('i.'+_0x5cdaa8);});}else{_0x51500d[_0xe9bd('0x57')](_0xe9bd('0x9d'),_0xe9bd('0x71'));_0x51500d[_0xe9bd('0x57')](_0xe9bd('0xaa'),'Account.key');_0x51500d[_0xe9bd('0x57')](_0xe9bd('0xab'),'Account.mandatoryDisposition');_0x51500d[_0xe9bd('0x57')](_0xe9bd('0xac'),_0xe9bd('0xad'));_0x51500d['field'](_0xe9bd('0xae'));_0x51500d[_0xe9bd('0x57')](_0xe9bd('0xaf'),_0xe9bd('0xb0'));_0x51500d[_0xe9bd('0x57')]('c.lastName',_0xe9bd('0xb1'));_0x51500d[_0xe9bd('0x57')]('c.email',_0xe9bd('0xb2'));_0x51500d[_0xe9bd('0x57')](_0xe9bd('0xb3'),_0xe9bd('0xb4'));_0x51500d['field'](_0xe9bd('0xb5'),_0xe9bd('0xb6'));_0x51500d[_0xe9bd('0x57')](_0xe9bd('0xb7'),_0xe9bd('0xb8'));_0x51500d[_0xe9bd('0x57')](_0xe9bd('0xb9'),'Owner.fullname');_0x51500d[_0xe9bd('0x57')]('o.internal',_0xe9bd('0xba'));_0x51500d[_0xe9bd('0x57')](_0xe9bd('0xbb'),'TagIds');}if(_0x165942[_0xe9bd('0x25')])_0x51500d['limit'](_0x165942[_0xe9bd('0x25')]);if(_0x165942[_0xe9bd('0x24')])_0x51500d[_0xe9bd('0x24')](_0x165942[_0xe9bd('0x24')]);return db[_0xe9bd('0xa9')][_0xe9bd('0x4c')](_0x51500d[_0xe9bd('0xa8')](),_0xa8b335);})[_0xe9bd('0x2b')](function(_0x14db25){if(_0x14db25[_0xe9bd('0x70')]>0x0)_0x493aae[_0xe9bd('0x54')]('ui.ChatInteractionId\x20IN\x20?',_[_0xe9bd('0x46')](_0x14db25,'id'));return db[_0xe9bd('0xa9')][_0xe9bd('0x4c')](_0x493aae['toString'](),_0xa8b335)[_0xe9bd('0x2b')](function(_0x16bcce){var _0x581727=_['groupBy'](_0x16bcce,'ChatInteractionId');var _0x52df8f=[];_0x14db25[_0xe9bd('0x3a')](function(_0x3b32a9){_0x52df8f[_0xe9bd('0x3b')](updateChatInteraction(_0x3b32a9,_0x2d9a94,_0x581727));});return BPromise['all'](_0x52df8f);});});})[_0xe9bd('0x2b')](function(_0x3b72cd){_0x39fb61['rows']=_0x3b72cd;return _0x39fb61;})[_0xe9bd('0x2b')](respondWithFilteredResult(_0x3f6f22,_0x165942))[_0xe9bd('0x3c')](handleError(_0x3f6f22,null));};exports[_0xe9bd('0xbc')]=function(_0x8c8261,_0x3700f6){var _0x5eee5c={'raw':![],'where':{'id':_0x8c8261[_0xe9bd('0xbd')]['id']}},_0x1fcc3a={};_0x1fcc3a['model']=_['keys'](db['ChatInteraction']['rawAttributes']);_0x1fcc3a[_0xe9bd('0x4c')]=_[_0xe9bd('0x4d')](_0x8c8261[_0xe9bd('0x4c')]);_0x1fcc3a[_0xe9bd('0x56')]=_['intersection'](_0x1fcc3a['model'],_0x1fcc3a[_0xe9bd('0x4c')]);_0x5eee5c[_0xe9bd('0x50')]=_[_0xe9bd('0x4e')](_0x1fcc3a['model'],qs[_0xe9bd('0x4f')](_0x8c8261[_0xe9bd('0x4c')]['fields']));_0x5eee5c['attributes']=_0x5eee5c[_0xe9bd('0x50')][_0xe9bd('0x70')]?_0x5eee5c[_0xe9bd('0x50')]:_0x1fcc3a[_0xe9bd('0x4b')];if(_0x8c8261[_0xe9bd('0x4c')][_0xe9bd('0xbe')]){_0x5eee5c[_0xe9bd('0xbf')]=[{'all':!![]}];}_0x5eee5c=_[_0xe9bd('0x2f')]({},_0x5eee5c,_0x8c8261[_0xe9bd('0xc0')]);return db['ChatInteraction'][_0xe9bd('0x81')](_0x5eee5c)[_0xe9bd('0x2b')](handleEntityNotFound(_0x3700f6,null))[_0xe9bd('0x2b')](respondWithResult(_0x3700f6,null))[_0xe9bd('0x3c')](handleError(_0x3700f6,null));};exports[_0xe9bd('0xc1')]=function(_0x3145e8,_0x55f0d3){return db[_0xe9bd('0xc2')]['create'](_0x3145e8[_0xe9bd('0x30')],{})['then'](respondWithResult(_0x55f0d3,0xc9))[_0xe9bd('0x3c')](handleError(_0x55f0d3,null));};exports[_0xe9bd('0x29')]=function(_0x555a98,_0x343479){if(_0x555a98[_0xe9bd('0x30')]['id']){delete _0x555a98['body']['id'];}return db[_0xe9bd('0xc2')][_0xe9bd('0x81')]({'where':{'id':_0x555a98[_0xe9bd('0xbd')]['id']}})[_0xe9bd('0x2b')](handleEntityNotFound(_0x343479,null))['then'](saveUpdates(_0x555a98[_0xe9bd('0x30')],null))[_0xe9bd('0x2b')](respondWithResult(_0x343479,null))['catch'](handleError(_0x343479,null));};exports[_0xe9bd('0x2a')]=function(_0x1dab51,_0x2d5601){return db['ChatInteraction'][_0xe9bd('0x81')]({'where':{'id':_0x1dab51[_0xe9bd('0xbd')]['id']}})[_0xe9bd('0x2b')](handleEntityNotFound(_0x2d5601,null))[_0xe9bd('0x2b')](removeEntity(_0x2d5601,null))[_0xe9bd('0x3c')](handleError(_0x2d5601,null));};exports[_0xe9bd('0xc3')]=function(_0x136aa0,_0x4d1288){return db[_0xe9bd('0xc2')][_0xe9bd('0xc3')]()[_0xe9bd('0x2b')](respondWithResult(_0x4d1288,null))['catch'](handleError(_0x4d1288,null));};exports[_0xe9bd('0xc4')]=function(_0x57c26d,_0x5ba105){var _0x4e1eb8=_0x57c26d[_0xe9bd('0xbd')]['id'];var _0x48af68;var _0x516080;var _0xd7ea2f;return db[_0xe9bd('0xc2')]['findOne']({'where':{'id':_0x4e1eb8}})[_0xe9bd('0x2b')](function(_0x48f4cd){_0x48af68=_0x48f4cd;return db['ChatWebsite']['findOne']({'where':{'id':_0x48f4cd[_0xe9bd('0x86')]},'attributes':['id','vidaooApiKey','vidaooEscalation',_0xe9bd('0xc5'),_0xe9bd('0xc6'),_0xe9bd('0xc7')],'raw':!![]});})[_0xe9bd('0x2b')](function(_0x276374){if(_0x276374&&_0x276374[_0xe9bd('0xc8')]&&_0x276374[_0xe9bd('0xc9')]){_0x516080=_0x276374;var _0x5ebe24={'interaction':{'id':_0x4e1eb8},'agent':{'id':_0x57c26d[_0xe9bd('0xa3')]['id'],'name':_0x57c26d['user']['name'],'fullname':_0x57c26d[_0xe9bd('0xa3')][_0xe9bd('0x36')],'email':_0x57c26d[_0xe9bd('0xa3')][_0xe9bd('0xca')]},'contact':_0x57c26d[_0xe9bd('0x30')]['contact'],'account':_0x57c26d[_0xe9bd('0x30')][_0xe9bd('0x34')]};var _0x460eb8={'rejectUnauthorized':![],'method':_0xe9bd('0xcb'),'url':_0xe9bd('0xcc'),'headers':{'X-APIKEY':_0x276374[_0xe9bd('0xc8')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x57c26d['user'][_0xe9bd('0xca')]],'buttons':null,'topic':_0x516080[_0xe9bd('0xc5')],'note':_[_0xe9bd('0xcd')](_0x516080[_0xe9bd('0xc6')])?null:getMustacheRender(_0x516080[_0xe9bd('0xc6')],_0x5ebe24),'metadata':null},'redirect':_0xe9bd('0xce'),'json':!![]};try{if(!_['isNull'](_0x516080[_0xe9bd('0xc7')])){var _0x16c3e1=getMustacheRender(_0x516080['vidaooMetadata'],_0x5ebe24);var _0x1e5c54=JSON[_0xe9bd('0x89')](_0x16c3e1);_0x460eb8[_0xe9bd('0x30')][_0xe9bd('0xcf')]=_0x1e5c54;}}catch(_0x5befe7){throw new db[(_0xe9bd('0x99'))][(_0xe9bd('0xd0'))](_0xe9bd('0xd1'));}return rp(_0x460eb8);}else{throw new db[(_0xe9bd('0x99'))][(_0xe9bd('0xd0'))](_0xe9bd('0xd2'));}})[_0xe9bd('0x2b')](function(_0x1940e7){_0xd7ea2f=_0x1940e7;if(_0xd7ea2f['id']){var _0x41506b={'body':_0xd7ea2f['join_url'],'ChatWebsiteId':_0x516080['id'],'ChatInteractionId':_0x48af68['id'],'direction':_0xe9bd('0xd3'),'UserId':_0x57c26d[_0xe9bd('0xa3')]['id']};return db[_0xe9bd('0xd4')][_0xe9bd('0xc1')](_0x41506b,{});}else{throw new db[(_0xe9bd('0x99'))][(_0xe9bd('0xd0'))](_0xe9bd('0xd5'));}})['then'](function(){return _0x48af68[_0xe9bd('0xd6')]({'vidaooSessionId':_0xd7ea2f['id']});})['then'](respondWithResult(_0x5ba105,null))[_0xe9bd('0x3c')](handleError(_0x5ba105,null));};exports[_0xe9bd('0xd7')]=function(_0x2db271,_0x1c2d6d){if(_0x2db271[_0xe9bd('0x30')]['id']){delete _0x2db271[_0xe9bd('0x30')]['id'];}return db['ChatInteraction'][_0xe9bd('0x81')]({'where':{'id':_0x2db271[_0xe9bd('0xbd')]['id']},'include':[{'model':db[_0xe9bd('0xd8')],'as':'Contact'}]})[_0xe9bd('0x2b')](handleEntityNotFound(_0x1c2d6d,null))[_0xe9bd('0x2b')](saveUpdates(_0x2db271[_0xe9bd('0x30')],null))[_0xe9bd('0x2b')](respondWithResult(_0x1c2d6d,null))[_0xe9bd('0x3c')](handleError(_0x1c2d6d,null));};exports[_0xe9bd('0xd9')]=function(_0x1e5a3f,_0x1c3af9){if(_0x1e5a3f[_0xe9bd('0x30')]['id']){delete _0x1e5a3f[_0xe9bd('0x30')]['id'];}return db['ChatInteraction'][_0xe9bd('0x81')]({'where':{'id':_0x1e5a3f[_0xe9bd('0xbd')]['id']}})[_0xe9bd('0x2b')](function(_0x517b10){if(!_0x517b10){logger[_0xe9bd('0x1c')](_0xe9bd('0xda'),_0xe9bd('0xd9'),0x194,'entity\x20not\x20found');_0x1c3af9['sendStatus'](0x194);}else{if(_0x517b10[_0xe9bd('0x41')]){throw new db[(_0xe9bd('0x99'))][(_0xe9bd('0xd0'))](_0xe9bd('0xdb'));}}return _0x517b10;})[_0xe9bd('0x2b')](function(_0x464102){if(_0x464102){return _0x464102[_0xe9bd('0x29')]({'closed':_0x1e5a3f['body'][_0xe9bd('0x43')],'disposition':_0x1e5a3f[_0xe9bd('0x30')]['disposition']})[_0xe9bd('0x2b')](function(_0x3335a4){return _0x3335a4;});}})[_0xe9bd('0x2b')](function(){return respondWithRpcPromise(_0xe9bd('0xdc'),_0xe9bd('0xd9'),_0x1e5a3f[_0xe9bd('0x30')],client9004);})[_0xe9bd('0x2b')](respondWithResult(_0x1c3af9,null))[_0xe9bd('0x3c')](handleError(_0x1c3af9,null));};exports[_0xe9bd('0xdd')]=function(_0x10dfc8,_0x38ce72){_0x10dfc8[_0xe9bd('0x30')][_0xe9bd('0x2c')]=_0x10dfc8[_0xe9bd('0xde')][_0xe9bd('0xdf')];_0x10dfc8['body'][_0xe9bd('0xe0')]=_0x10dfc8[_0xe9bd('0xde')][_0xe9bd('0xe1')];_0x10dfc8[_0xe9bd('0x30')][_0xe9bd('0x49')]=_0x10dfc8['file'][_0xe9bd('0xe2')];return db[_0xe9bd('0xe3')][_0xe9bd('0xc1')](_0x10dfc8[_0xe9bd('0x30')])[_0xe9bd('0x2b')](respondWithResult(_0x38ce72,0xc9))[_0xe9bd('0x3c')](handleError(_0x38ce72,null));};exports[_0xe9bd('0xe4')]=function(_0x463d54,_0x3c1785){return db[_0xe9bd('0xc2')][_0xe9bd('0xe5')]({'where':{'id':_0x463d54[_0xe9bd('0xbd')]['id']},'raw':!![]})[_0xe9bd('0x2b')](handleEntityNotFound(_0x3c1785,null))['then'](function(_0x1412ed){if(_0x1412ed){if(_0x1412ed[_0xe9bd('0x43')]){return _0x3c1785[_0xe9bd('0x21')](0x193)[_0xe9bd('0x23')]({'status':0x193,'message':_0xe9bd('0xe6')});}return db[_0xe9bd('0xe3')][_0xe9bd('0xe5')]({'where':{'id':_0x463d54[_0xe9bd('0x4c')][_0xe9bd('0xe7')]},'raw':!![]})[_0xe9bd('0x2b')](handleEntityNotFound(_0x3c1785,null));}})[_0xe9bd('0x2b')](function(_0x2abe2a){if(_0x2abe2a){var _0x5da417=_0x2abe2a[_0xe9bd('0xe8')]!==null;var _0x38e43f=path[_0xe9bd('0xe9')](config[_0xe9bd('0xea')],_0xe9bd('0xeb'));if(_0x5da417){_0x38e43f=path['join'](_0x38e43f,_0xe9bd('0xec'));}var _0x43579b=path[_0xe9bd('0xe9')](_0x38e43f,_0x2abe2a['basename']);return _0x3c1785[_0xe9bd('0xed')](_0x43579b);}})[_0xe9bd('0x3c')](handleError(_0x3c1785,null));};exports['close']=function(_0x4efce6,_0x4b8f8e){var _0x28e51a=null;var _0x46017e=null;var _0x48cd92=null;if(_0x4efce6[_0xe9bd('0x30')]['id']){delete _0x4efce6[_0xe9bd('0x30')]['id'];}if(_0x4efce6[_0xe9bd('0x30')]['mailTranscript']){_0x48cd92=path[_0xe9bd('0xe9')](config[_0xe9bd('0xea')],_0xe9bd('0xee'),util[_0xe9bd('0xef')]('transcript-%s.txt',Date[_0xe9bd('0xf0')]()));_0x4efce6[_0xe9bd('0x30')]['pathTranscript']=_0x48cd92;}return db[_0xe9bd('0xc2')][_0xe9bd('0x81')]({'where':{'id':_0x4efce6[_0xe9bd('0xbd')]['id']},'include':[{'model':db[_0xe9bd('0xd4')],'as':'Messages','include':[{'model':db['User'],'as':'User'}]}]})[_0xe9bd('0x2b')](handleEntityNotFound(_0x4b8f8e,null))['then'](saveUpdates(_0x4efce6[_0xe9bd('0x30')],null))[_0xe9bd('0x2b')](function(_0xff728b){if(_0xff728b){_0x28e51a=_0xff728b;return db[_0xe9bd('0xf1')][_0xe9bd('0x81')]({'where':{'id':_0x28e51a[_0xe9bd('0x86')]}});}})['then'](function(_0x117c16){if(_0x117c16){_0x46017e=_0x117c16;return db[_0xe9bd('0xd8')][_0xe9bd('0x81')]({'where':{'id':_0x28e51a[_0xe9bd('0x7b')]}});}})[_0xe9bd('0x2b')](function(_0x27740c){if(_0x27740c){if(_0x48cd92){var _0x25def7=null;for(var _0x552ea8=0x1;_0x552ea8<_0x28e51a[_0xe9bd('0xf2')][_0xe9bd('0x70')];++_0x552ea8){_0x25def7=_0x28e51a[_0xe9bd('0xf2')][_0x552ea8];var _0x1b5b7c=_0x25def7['UserId']?util[_0xe9bd('0xef')](_0xe9bd('0xf3'),_0x46017e[_0xe9bd('0xf4')],_0x25def7[_0xe9bd('0x41')]):_0xe9bd('0xf5');var _0x101aa0=_0x4efce6[_0xe9bd('0x30')][_0xe9bd('0xf6')]||util[_0xe9bd('0xef')](_0xe9bd('0xf3'),_0xe9bd('0xf7'),_0x25def7[_0xe9bd('0x7b')]);switch(_0x46017e[_0xe9bd('0xf8')]){case'website_alias':_0x1b5b7c=_0x25def7[_0xe9bd('0x41')]?util[_0xe9bd('0xef')]('%s%d',_0x46017e[_0xe9bd('0xf4')],_0x25def7[_0xe9bd('0x41')]):_0xe9bd('0xf5');break;case'agent_alias':_0x1b5b7c=_0x25def7[_0xe9bd('0x41')]?_0x25def7[_0xe9bd('0x7f')][_0xe9bd('0xf9')]||_0x25def7[_0xe9bd('0x7f')]['fullname']:_0xe9bd('0xf5');break;case _0xe9bd('0xfa'):_0x1b5b7c=_0x25def7[_0xe9bd('0x41')]?_0x25def7[_0xe9bd('0x7f')][_0xe9bd('0x36')]:_0xe9bd('0xf5');break;default:_0x1b5b7c=_0x25def7['UserId']?util[_0xe9bd('0xef')]('%s%d',_0x46017e['agentAlias'],_0x25def7[_0xe9bd('0x41')]):'System';}var _0x1ab3f2=util['format'](_0xe9bd('0xfb'),moment(_0x25def7[_0xe9bd('0x88')])['format'](_0xe9bd('0xfc')),_0x25def7[_0xe9bd('0xfd')]==='in'?_0x101aa0:_0x1b5b7c,_0x25def7[_0xe9bd('0x30')]);if(!_0x25def7[_0xe9bd('0xfe')]){fs[_0xe9bd('0xff')](_0x48cd92,_0x1ab3f2);}}return db[_0xe9bd('0x100')][_0xe9bd('0xe5')]({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0xe9bd('0x101'),'raw':!![],'include':[{'model':db[_0xe9bd('0x102')],'as':_0xe9bd('0x102'),'raw':!![]}]}]});}}})[_0xe9bd('0x2b')](function(_0x33f143){if(!_0x33f143||!_0x33f143[_0xe9bd('0x101')]||!_0x4efce6['body'])return _0x28e51a;var _0xb82cb2=_0x33f143[_0xe9bd('0x103')]();return respondWithRpcPromise(_0xe9bd('0x104'),_0xe9bd('0x105'),{'account':_0xb82cb2,'message':{'from':util[_0xe9bd('0xef')]('\x22%s\x22\x20<%s>',_0x33f143['name'],_0x33f143['email']||_0x33f143[_0xe9bd('0x101')]['user']),'to':_0x4efce6[_0xe9bd('0x30')][_0xe9bd('0x106')],'subject':'Mail\x20Transcript','text':util[_0xe9bd('0xef')](_0xe9bd('0x107'),_0x4efce6[_0xe9bd('0x30')][_0xe9bd('0x106')]),'attachments':[{'path':_0x48cd92}]}})[_0xe9bd('0x2b')](function(){return _0x28e51a;})[_0xe9bd('0x3c')](function(_0x914313){logger['error'](_0x914313);});})['then'](respondWithStatusCode(_0x4b8f8e,0xc8))[_0xe9bd('0x3c')](handleError(_0x4b8f8e,null));};exports['addMessage']=function(_0x54b3e9,_0x453d10){return db[_0xe9bd('0xd4')][_0xe9bd('0x81')]({'where':{'id':_0x54b3e9[_0xe9bd('0xbd')]['id']}})[_0xe9bd('0x2b')](handleEntityNotFound(_0x453d10,null))[_0xe9bd('0x2b')](function(_0x3a9bc4){if(_0x3a9bc4){return _0x3a9bc4[_0xe9bd('0x108')](_0x54b3e9[_0xe9bd('0x30')][_0xe9bd('0x109')],_[_0xe9bd('0x10a')](_0x54b3e9['body'],[_0xe9bd('0x109'),'id'])||{});}})['then'](respondWithResult(_0x453d10,null))[_0xe9bd('0x3c')](handleError(_0x453d10,null));};exports[_0xe9bd('0x10b')]=function(_0x33e998,_0x38f3ae){var _0x56541e={'raw':![],'where':{}};var _0x22ca72={};var _0x3bae9d={'count':0x0,'rows':[]};return db[_0xe9bd('0xc2')]['findOne']({'where':{'id':_0x33e998['params']['id']}})[_0xe9bd('0x2b')](handleEntityNotFound(_0x38f3ae,null))[_0xe9bd('0x2b')](function(_0x6e1fd3){if(_0x6e1fd3){_0x22ca72[_0xe9bd('0x4b')]=_[_0xe9bd('0x4d')](db[_0xe9bd('0xd4')]['rawAttributes']);_0x22ca72[_0xe9bd('0x4c')]=_[_0xe9bd('0x4d')](_0x33e998[_0xe9bd('0x4c')]);_0x22ca72[_0xe9bd('0x56')]=_['intersection'](_0x22ca72[_0xe9bd('0x4b')],_0x22ca72[_0xe9bd('0x4c')]);_0x56541e[_0xe9bd('0x50')]=_['intersection'](_0x22ca72[_0xe9bd('0x4b')],qs[_0xe9bd('0x4f')](_0x33e998[_0xe9bd('0x4c')][_0xe9bd('0x4f')]));_0x56541e[_0xe9bd('0x50')]=_0x56541e[_0xe9bd('0x50')][_0xe9bd('0x70')]?_0x56541e['attributes']:_0x22ca72['model'];if(!_0x33e998[_0xe9bd('0x4c')][_0xe9bd('0x51')](_0xe9bd('0x52'))){_0x56541e['limit']=qs['limit'](_0x33e998[_0xe9bd('0x4c')][_0xe9bd('0x25')]);_0x56541e[_0xe9bd('0x24')]=qs['offset'](_0x33e998[_0xe9bd('0x4c')]['offset']);}_0x56541e[_0xe9bd('0x9e')]=qs[_0xe9bd('0x53')](_0x33e998[_0xe9bd('0x4c')][_0xe9bd('0x53')]);_0x56541e[_0xe9bd('0x54')]=qs[_0xe9bd('0x56')](_[_0xe9bd('0x55')](_0x33e998[_0xe9bd('0x4c')],_0x22ca72[_0xe9bd('0x56')]));_0x56541e['where']['ChatInteractionId']=_0x6e1fd3['id'];if(_0x33e998[_0xe9bd('0x4c')][_0xe9bd('0x95')]){_0x56541e[_0xe9bd('0x54')]=_[_0xe9bd('0x2f')](_0x56541e[_0xe9bd('0x54')],{'$or':_[_0xe9bd('0x46')](_0x56541e[_0xe9bd('0x50')],function(_0xdfc5ca){var _0x593e55={};_0x593e55[_0xdfc5ca]={'$like':'%'+_0x33e998[_0xe9bd('0x4c')][_0xe9bd('0x95')]+'%'};return _0x593e55;})});}if(_0x33e998['query'][_0xe9bd('0x8a')]){var _0x4c4890=_0x33e998[_0xe9bd('0x4c')][_0xe9bd('0x8a')][_0xe9bd('0x39')](',');var _0x5a7a61={};_0x5a7a61[_0x4c4890[0x0]]={'$gte':moment(_0x4c4890[0x1])[_0xe9bd('0xef')](_0xe9bd('0x10c'))};_0x56541e['where']=_[_0xe9bd('0x2f')](_0x56541e[_0xe9bd('0x54')],_0x5a7a61);}_0x56541e=_[_0xe9bd('0x2f')]({},_0x56541e,_0x33e998[_0xe9bd('0xc0')]);return db[_0xe9bd('0xd4')]['count']({'where':_0x56541e[_0xe9bd('0x54')]})[_0xe9bd('0x2b')](function(_0x993518){_0x3bae9d[_0xe9bd('0x27')]=_0x993518;if(_0x33e998[_0xe9bd('0x4c')][_0xe9bd('0xbe')]){_0x56541e['include']=[{'all':!![]}];}return db[_0xe9bd('0xd4')]['findAll'](_0x56541e);})[_0xe9bd('0x2b')](function(_0x560ed7){_0x3bae9d[_0xe9bd('0x10d')]=_0x560ed7;return _0x3bae9d;});}})[_0xe9bd('0x2b')](respondWithFilteredResult(_0x38f3ae,_0x56541e))['catch'](handleError(_0x38f3ae,null));};exports[_0xe9bd('0x10e')]=function(_0x170bf0,_0x5a8d1a){var _0xd2c2a1={'where':{}},_0x4b269d={},_0x557cf5={'count':0x0,'rows':[]};return db['ChatInteraction'][_0xe9bd('0xe5')]({'where':{'id':_0x170bf0[_0xe9bd('0xbd')]['id']}})['then'](handleEntityNotFound(_0x5a8d1a,null))['then'](function(_0x367dcc){if(_0x367dcc){_0x4b269d['model']=_[_0xe9bd('0x4d')](db[_0xe9bd('0xd4')]['rawAttributes']);_0x4b269d[_0xe9bd('0x4c')]=_[_0xe9bd('0x4d')](_0x170bf0[_0xe9bd('0x4c')]);_0x4b269d[_0xe9bd('0x56')]=_[_0xe9bd('0x4e')](_0x4b269d[_0xe9bd('0x4b')],_0x4b269d[_0xe9bd('0x4c')]);_0xd2c2a1[_0xe9bd('0x50')]=_[_0xe9bd('0x4e')](_0x4b269d[_0xe9bd('0x4b')],qs[_0xe9bd('0x4f')](_0x170bf0[_0xe9bd('0x4c')][_0xe9bd('0x4f')]));_0xd2c2a1['attributes']=_0xd2c2a1[_0xe9bd('0x50')][_0xe9bd('0x70')]?_0xd2c2a1[_0xe9bd('0x50')]:_0x4b269d[_0xe9bd('0x4b')];if(!_0x170bf0[_0xe9bd('0x4c')]['hasOwnProperty'](_0xe9bd('0x52'))){_0xd2c2a1[_0xe9bd('0x25')]=qs[_0xe9bd('0x25')](_0x170bf0[_0xe9bd('0x4c')][_0xe9bd('0x25')]);_0xd2c2a1[_0xe9bd('0x24')]=qs[_0xe9bd('0x24')](_0x170bf0['query'][_0xe9bd('0x24')]);}_0xd2c2a1[_0xe9bd('0x9e')]=qs['sort'](_0x170bf0[_0xe9bd('0x4c')][_0xe9bd('0x53')]);_0xd2c2a1[_0xe9bd('0x54')]=qs[_0xe9bd('0x56')](_[_0xe9bd('0x55')](_0x170bf0[_0xe9bd('0x4c')],_0x4b269d[_0xe9bd('0x56')]));_0xd2c2a1[_0xe9bd('0x54')]['ChatInteractionId']=_0x367dcc['id'];if(_0x170bf0[_0xe9bd('0x4c')][_0xe9bd('0x95')]){_0xd2c2a1[_0xe9bd('0x54')]=_['merge'](_0xd2c2a1[_0xe9bd('0x54')],{'$or':_[_0xe9bd('0x46')](_0xd2c2a1['attributes'],function(_0x48dc13){var _0xebabdd={};_0xebabdd[_0x48dc13]={'$like':'%'+_0x170bf0['query'][_0xe9bd('0x95')]+'%'};return _0xebabdd;})});}_0xd2c2a1[_0xe9bd('0x54')][_0xe9bd('0xfe')]=![];if(_0x170bf0[_0xe9bd('0x4c')]['id']){_0xd2c2a1[_0xe9bd('0x54')]['id']={'$gt':_0x170bf0[_0xe9bd('0x4c')]['id']};}_0xd2c2a1=_[_0xe9bd('0x2f')]({},_0xd2c2a1,_0x170bf0[_0xe9bd('0xc0')]);return db['ChatMessage'][_0xe9bd('0x27')]({'where':_0xd2c2a1[_0xe9bd('0x54')]})[_0xe9bd('0x2b')](function(_0x351791){_0x557cf5[_0xe9bd('0x27')]=_0x351791;_0xd2c2a1[_0xe9bd('0xbf')]=[];if(_0x170bf0['query'][_0xe9bd('0x10f')]){_0xd2c2a1[_0xe9bd('0xbf')][_0xe9bd('0x3b')]({'model':db[_0xe9bd('0x7f')],'as':_0xe9bd('0x7f'),'attributes':['id',_0xe9bd('0x36'),_0xe9bd('0xf9')]});}if(_0x170bf0[_0xe9bd('0x4c')]['includeAll']){_0xd2c2a1['include']=[{'all':!![]}];}return db[_0xe9bd('0xd4')][_0xe9bd('0x110')](_0xd2c2a1);})[_0xe9bd('0x2b')](function(_0xc219e9){_0x557cf5[_0xe9bd('0x10d')]=_0xc219e9;return _0x557cf5;});}})[_0xe9bd('0x2b')](respondWithFilteredResult(_0x5a8d1a,_0xd2c2a1))[_0xe9bd('0x3c')](handleError(_0x5a8d1a,null));};exports[_0xe9bd('0x111')]=function(_0x432aea,_0x2301ce){return db['ChatInteraction'][_0xe9bd('0x81')]({'where':{'id':_0x432aea[_0xe9bd('0xbd')]['id']}})[_0xe9bd('0x2b')](handleEntityNotFound(_0x2301ce,null))[_0xe9bd('0x2b')](function(_0x2e6329){if(_0x2e6329){return _0x2e6329[_0xe9bd('0x112')](_0x432aea[_0xe9bd('0x30')]['ids'],_[_0xe9bd('0x10a')](_0x432aea[_0xe9bd('0x30')],[_0xe9bd('0x109'),'id'])||{})[_0xe9bd('0x113')](function(){return db[_0xe9bd('0x114')]['findAll']({'attributes':['id',_0xe9bd('0x2c'),_0xe9bd('0x115')],'where':{'id':_0x432aea[_0xe9bd('0x30')][_0xe9bd('0x109')]}});})[_0xe9bd('0x2b')](function(_0x47d0d5){socket[_0xe9bd('0x116')]('chatInteractionTags:save',{'id':Number(_0x432aea[_0xe9bd('0xbd')]['id']),'tags':_0x47d0d5||[]});return{'id':Number(_0x432aea[_0xe9bd('0xbd')]['id']),'tags':_0x47d0d5||[]};});}})[_0xe9bd('0x2b')](respondWithResult(_0x2301ce,null))['catch'](handleError(_0x2301ce,null));};exports['removeTags']=function(_0x38096d,_0x3ad097){return db[_0xe9bd('0xc2')]['find']({'where':{'id':_0x38096d[_0xe9bd('0xbd')]['id']}})[_0xe9bd('0x2b')](handleEntityNotFound(_0x3ad097,null))[_0xe9bd('0x2b')](function(_0x1d6363){if(_0x1d6363){return _0x1d6363[_0xe9bd('0x117')](_0x38096d[_0xe9bd('0x4c')][_0xe9bd('0x109')]);}})[_0xe9bd('0x2b')](respondWithStatusCode(_0x3ad097,null))[_0xe9bd('0x3c')](handleError(_0x3ad097,null));};exports[_0xe9bd('0xed')]=function(_0x1bae64,_0x23f104){var _0x3b5bca=moment()[_0xe9bd('0x118')]()['toString']();var _0x3fe9ca=path[_0xe9bd('0xe9')](config['root'],_0xe9bd('0x119'),_0xe9bd('0x11a'),_0xe9bd('0x11b'));var _0x4335ad=path['join'](config[_0xe9bd('0xea')],_0xe9bd('0x119'),_0xe9bd('0x11a'),_0xe9bd('0x11c'));var _0x52d59e=path['join'](_0x3fe9ca,_0x3b5bca);var _0x3107f0=util['format'](_0xe9bd('0x11d'),_0x1bae64[_0xe9bd('0xbd')]['id'],_0x3b5bca);var _0x8f8874=path[_0xe9bd('0xe9')](_0x3fe9ca,_0x3107f0);var _0x240cd0=[];_0x240cd0['push']({'model':db[_0xe9bd('0x7f')],'as':_0xe9bd('0x7f'),'attributes':['id',_0xe9bd('0x36')],'raw':!![]});_0x240cd0[_0xe9bd('0x3b')]({'model':db[_0xe9bd('0xd8')],'as':_0xe9bd('0x75'),'attributes':['id',_0xe9bd('0x11e'),'lastName'],'raw':!![]});if(_0x1bae64[_0xe9bd('0x4c')][_0xe9bd('0x11c')]){_0x240cd0[_0xe9bd('0x3b')]({'model':db[_0xe9bd('0xe3')],'as':_0xe9bd('0xe3'),'raw':!![]});}var _0x5f3e76=[{'model':db[_0xe9bd('0xd4')],'as':_0xe9bd('0xf2'),'attributes':['id',_0xe9bd('0x30'),_0xe9bd('0x88'),_0xe9bd('0xfd'),_0xe9bd('0xfe'),_0xe9bd('0x90')],'include':_0x240cd0}];_0x5f3e76[_0xe9bd('0x3b')]({'model':db[_0xe9bd('0xf1')],'as':_0xe9bd('0x11f'),'attributes':['id',_0xe9bd('0x2c')]});_0x5f3e76[_0xe9bd('0x3b')]({'model':db[_0xe9bd('0x7f')],'as':_0xe9bd('0x120'),'attributes':['id',_0xe9bd('0x36')]});return db[_0xe9bd('0xc2')][_0xe9bd('0x81')]({'where':{'id':_0x1bae64[_0xe9bd('0xbd')]['id']},'include':_0x5f3e76})[_0xe9bd('0x2b')](handleEntityNotFound(_0x23f104,null))[_0xe9bd('0x2b')](function(_0x5e6e02){if(_0x5e6e02){var _0xa3e69c=_0x5e6e02[_0xe9bd('0x121')]({'plain':!![]});fs[_0xe9bd('0x122')](_0x52d59e);var _0x126e47={'channel':'Chat','account':_0xa3e69c[_0xe9bd('0x11f')]['name'],'agent':_0xa3e69c['Owner']?_0xa3e69c['Owner']['fullname']:_0xe9bd('0x123'),'createdAt':moment(_0xa3e69c[_0xe9bd('0x88')])[_0xe9bd('0xef')]('YYYY-MM-DD\x20HH:mm:ss')[_0xe9bd('0xa8')](),'closedAt':_0xa3e69c['closed']?moment(_0xa3e69c[_0xe9bd('0x124')])[_0xe9bd('0xef')]('YYYY-MM-DD\x20HH:mm:ss')[_0xe9bd('0xa8')]():'','disposition':_0xa3e69c['disposition'],'chatInfo':{'browser':_0xa3e69c['browserName'],'os':_0xa3e69c[_0xe9bd('0x125')],'referer':_0xa3e69c[_0xe9bd('0x126')],'customerIp':_0xa3e69c[_0xe9bd('0x127')],'customerPort':_0xa3e69c['customerPort']?_0xa3e69c[_0xe9bd('0x128')]:'N.A.'},'messages':_(_0xa3e69c[_0xe9bd('0xf2')])['tail']()[_0xe9bd('0x95')]({'secret':![]})[_0xe9bd('0x46')](function(_0x38aa10){if(_0x38aa10['Attachment']){var _0x1402d0=path['join'](_0x4335ad,_0x38aa10[_0xe9bd('0xe3')][_0xe9bd('0xe0')]);if(fs[_0xe9bd('0x129')](_0x1402d0)){fs[_0xe9bd('0x12a')](_0x1402d0)[_0xe9bd('0x12b')](fs[_0xe9bd('0x12c')](path[_0xe9bd('0xe9')](_0x52d59e,_0x38aa10[_0xe9bd('0xe3')][_0xe9bd('0xe0')])));}}return{'date':moment(_0x38aa10[_0xe9bd('0x88')])[_0xe9bd('0xef')](_0xe9bd('0x10c'))[_0xe9bd('0xa8')](),'sender':_0x38aa10[_0xe9bd('0xfd')]===_0xe9bd('0xd3')?_0x38aa10[_0xe9bd('0x7f')]?_0x38aa10[_0xe9bd('0x7f')][_0xe9bd('0x36')]:_0xe9bd('0xf5'):_0x38aa10[_0xe9bd('0x75')][_0xe9bd('0x11e')]+(_0x38aa10['Contact'][_0xe9bd('0x12d')]?'\x20'+_0x38aa10[_0xe9bd('0x75')]['lastName']:''),'body':_0x38aa10[_0xe9bd('0xe3')]?_0x38aa10[_0xe9bd('0xe3')][_0xe9bd('0xe0')]:_0x38aa10[_0xe9bd('0x30')],'direction':_0x38aa10[_0xe9bd('0xfd')]==='out'?'A':'C','secret':_0x38aa10[_0xe9bd('0xfe')],'read':_0x38aa10[_0xe9bd('0x90')],'attachment':_0x38aa10[_0xe9bd('0xe3')]};})[_0xe9bd('0x72')]()};return ejs[_0xe9bd('0x12e')](path[_0xe9bd('0xe9')](config[_0xe9bd('0xea')],_0xe9bd('0x119'),_0xe9bd('0x12f'),_0xe9bd('0x130')),{'interaction':_0x126e47})['then'](function(_0x14f61d){var _0x271116=path[_0xe9bd('0xe9')](_0x52d59e,_0xe9bd('0x131')+_0xa3e69c['id']+'-'+_0x3b5bca+_0xe9bd('0x132'));var _0x45da6a={'path':_0x271116,'channel':_0xe9bd('0x133'),'interactionId':_0xa3e69c['id']};return pdf[_0xe9bd('0x134')](_0x14f61d,_0x45da6a);})['then'](function(){return new Promise(function(_0x34c5f,_0x25b453){zipdir(_0x52d59e,{'saveTo':_0x8f8874},function(_0x2d9878,_0x10ea33){if(_0x2d9878)return _0x25b453(_0x2d9878);return _0x34c5f(_0x10ea33);});})['then'](function(){return new BPromise(function(_0x138630,_0x3682d1){rimraf(_0x52d59e,function(_0x298c03){if(_0x298c03)_0x3682d1(_0x298c03);return _0x138630();});});})[_0xe9bd('0x2b')](function(){return _0x23f104[_0xe9bd('0xed')](_0x8f8874,_0x3107f0,function(_0x3f4426){if(_0x3f4426){logger[_0xe9bd('0x1c')](_0xe9bd('0x135'),_0x3f4426);}else{fs['unlinkSync'](_0x8f8874);}});});});}else{return _0x23f104[_0xe9bd('0x20')](0xc8);}})['catch'](handleError(_0x23f104,null));};
\ No newline at end of file
+var _0xdace=['chat_messages','chat_interaction_has_tags','it.ChatInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','length','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','start','text','keys','some','compact','isEmpty','ChatWebsiteId','i.ChatWebsiteId\x20IN\x20?','concat','createdAt','parse','$gte','where','null','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','i.id','Sequelize','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','contactName','DESC','t.id\x20IN\x20?','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','agent','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','role','toString','count','sequelize','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','c.phone','c.fax','Contact.fax','o.fullname','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','ChatInteractionId','all','rows','ChatInteraction','includeAll','options','create','params','describe','createVidaooSession','findOne','ChatWebsite','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','vidaooMetadata','email','POST','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','follow','metadata','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Error\x20in\x20Vidaoo\x20configuration','out','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','CmContact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','Interaction\x20already\x20assigned','AbandonInteraction','attachmentUpload','file','basename','filename','Attachment','attachmentDownload','ChatOfflineMessageId','join','root','server/files/attachments/','download','mailTranscript','transcript-%s.txt','now','Messages','format','%s%d','agentAlias','System','Visitor','agentIdentifier','website_alias','alias','agent_fullname','[%s]\x20%s:\x20%s\x0a','direction','appendFileSync','MailServerOut','Smtp','CloudProvider','sendMail','\x22%s\x22\x20<%s>','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','ChatMessage','YYYY-MM-DD\x20HH:mm:ss','include','findAll','getMyMessages','secret','includeAgent','setTags','omit','spread','removeTags','unix','server','files','tmp','attachments','Contact','firstName','lastName','Account','mkdirSync','Chat','Owner','N.A.','browserName','osName','referer','customerIp','customerPort','tail','existsSync','createReadStream','pipe','createWriteStream','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','rimraf','request-promise','moment','bluebird','util','path','ejs','lodash','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','redis','defaults','./chatInteraction.socket','client','http','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','update','destroy','stack','name','send','render','merge','body','contact','interaction','account','Users','map','fullname','Tags','TagIds','split','forEach','push','waiting','talking','answered','abandoned','total','closed','UserId','disposition','unmanaged','index','rawAttributes','fieldName','type','key','query','filters','intersection','attributes','fields','model','hasOwnProperty','nolimit','sort','pick','select','field','color','from','u.id','left_join','chat_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','users','o.id\x20=\x20i.UserId','chat_websites','a.id\x20=\x20i.ChatWebsiteId'];(function(_0x1177d5,_0x22b649){var _0xc3ddc2=function(_0x43ff95){while(--_0x43ff95){_0x1177d5['push'](_0x1177d5['shift']());}};_0xc3ddc2(++_0x22b649);}(_0xdace,0xc5));var _0xedac=function(_0x146a85,_0x529b52){_0x146a85=_0x146a85-0x0;var _0x1b59bf=_0xdace[_0x146a85];return _0x1b59bf;};'use strict';var rimraf=require(_0xedac('0x0'));var zipdir=require('zip-dir');var rp=require(_0xedac('0x1'));var moment=require(_0xedac('0x2'));var BPromise=require(_0xedac('0x3'));var Mustache=require('mustache');var util=require(_0xedac('0x4'));var path=require(_0xedac('0x5'));var ejs=require(_0xedac('0x6'));var fs=require('fs');var _=require(_0xedac('0x7'));var squel=require('squel');var Redis=require(_0xedac('0x8'));var qs=require(_0xedac('0x9'));var as=require(_0xedac('0xa'));var pdf=require('../../components/export/pdf');var logger=require(_0xedac('0xb'))(_0xedac('0xc'));var config=require(_0xedac('0xd'));var db=require('../../mysqldb')['db'];config[_0xedac('0xe')]=_[_0xedac('0xf')](config[_0xedac('0xe')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xedac('0xe')]));require(_0xedac('0x10'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0xedac('0x11')][_0xedac('0x12')]({'port':0x232b});var client9004=jayson['client'][_0xedac('0x12')]({'port':0x232c});function respondWithRpcPromise(_0x4fa1ac,_0x21c6ae,_0x1b0503,_0x306af5){return new BPromise(function(_0x342186,_0x9a79a0){var _0x473c3e=_0x306af5||client;return _0x473c3e[_0xedac('0x13')](_0x4fa1ac,_0x1b0503)[_0xedac('0x14')](function(_0x593030){logger[_0xedac('0x15')](_0xedac('0x16'),_0x21c6ae,_0xedac('0x17'));logger[_0xedac('0x18')](_0xedac('0x19'),_0x21c6ae,'request\x20sent',JSON[_0xedac('0x1a')](_0x593030));if(_0x593030['error']){if(_0x593030[_0xedac('0x1b')][_0xedac('0x1c')]===0x1f4){logger[_0xedac('0x1b')](_0xedac('0x16'),_0x21c6ae,_0x593030['error']['message']);return _0x9a79a0(_0x593030[_0xedac('0x1b')][_0xedac('0x1d')]);}logger[_0xedac('0x1b')](_0xedac('0x16'),_0x21c6ae,_0x593030['error']['message']);return _0x342186(_0x593030[_0xedac('0x1b')][_0xedac('0x1d')]);}else{logger[_0xedac('0x15')](_0xedac('0x16'),_0x21c6ae,_0xedac('0x17'));_0x342186(_0x593030[_0xedac('0x1e')][_0xedac('0x1d')]);}})[_0xedac('0x1f')](function(_0x5353e3){logger[_0xedac('0x1b')]('ChatInteraction,\x20%s,\x20%s',_0x21c6ae,_0x5353e3);_0x9a79a0(_0x5353e3);});});}function respondWithStatusCode(_0x29cd40,_0x14fc02){_0x14fc02=_0x14fc02||0xcc;return function(_0x5111e6){if(_0x5111e6){return _0x29cd40[_0xedac('0x20')](_0x14fc02);}return _0x29cd40[_0xedac('0x21')](_0x14fc02)[_0xedac('0x22')]();};}function respondWithResult(_0x1e5e47,_0x6b13ca){_0x6b13ca=_0x6b13ca||0xc8;return function(_0x167d7e){if(_0x167d7e){return _0x1e5e47['status'](_0x6b13ca)[_0xedac('0x23')](_0x167d7e);}};}function respondWithFilteredResult(_0x87d343,_0x37563f){return function(_0x41ad8d){if(_0x41ad8d){var _0x1ff33e=typeof _0x37563f[_0xedac('0x24')]===_0xedac('0x25')&&typeof _0x37563f[_0xedac('0x26')]===_0xedac('0x25');var _0x4663c0=_0x41ad8d['count'];var _0x25d7f5=_0x1ff33e?0x0:_0x37563f[_0xedac('0x24')];var _0x19aed3=_0x1ff33e?_0x41ad8d['count']:_0x37563f[_0xedac('0x24')]+_0x37563f['limit'];var _0x524514;if(_0x19aed3>=_0x4663c0){_0x19aed3=_0x4663c0;_0x524514=0xc8;}else{_0x524514=0xce;}_0x87d343[_0xedac('0x21')](_0x524514);return _0x87d343[_0xedac('0x27')](_0xedac('0x28'),_0x25d7f5+'-'+_0x19aed3+'/'+_0x4663c0)[_0xedac('0x23')](_0x41ad8d);}return null;};}function saveUpdates(_0x555f1f){return function(_0x4e25da){if(_0x4e25da){return _0x4e25da[_0xedac('0x29')](_0x555f1f)[_0xedac('0x14')](function(_0x24b182){return _0x24b182;});}return null;};}function removeEntity(_0x2ee8d7){return function(_0x1b2a93){if(_0x1b2a93){return _0x1b2a93[_0xedac('0x2a')]()[_0xedac('0x14')](function(){_0x2ee8d7['status'](0xcc)[_0xedac('0x22')]();});}};}function handleEntityNotFound(_0x26418a){return function(_0x2cbe33){if(!_0x2cbe33){_0x26418a['sendStatus'](0x194);}return _0x2cbe33;};}function handleError(_0x1a8579,_0x1213dc){_0x1213dc=_0x1213dc||0x1f4;return function(_0x5665d8){logger[_0xedac('0x1b')](_0x5665d8[_0xedac('0x2b')]);if(_0x5665d8['name']){delete _0x5665d8[_0xedac('0x2c')];}_0x1a8579[_0xedac('0x21')](_0x1213dc)[_0xedac('0x2d')](_0x5665d8);};}function getMustacheRender(_0x195f78,_0x4473f0){return Mustache[_0xedac('0x2e')](_0x195f78,_[_0xedac('0x2f')](_0x4473f0[_0xedac('0x30')],{'contact':_0x4473f0[_0xedac('0x31')],'message':_0x4473f0[_0xedac('0x1d')],'agent':_0x4473f0['agent'],'interaction':_0x4473f0[_0xedac('0x32')],'account':_0x4473f0[_0xedac('0x33')]}))||'';}function getInteractionUsers(_0x2a87ae,_0x1a8cb3){return new BPromise(function(_0x15815e,_0x1d2f45){try{if(_0x1a8cb3[_0x2a87ae['id']]){_0x2a87ae[_0xedac('0x34')]=_[_0xedac('0x35')](_0x1a8cb3[_0x2a87ae['id']],function(_0x40d9cd){return{'id':_0x40d9cd['id'],'fullname':_0x40d9cd[_0xedac('0x36')]};});}}catch(_0x10f937){_0x1d2f45(_0x10f937);}_0x15815e(_0x2a87ae);});}function getInteractionTags(_0x39fe9f,_0xcd72b2){return new BPromise(function(_0x8783b9,_0xcf7c0c){try{if(_0x39fe9f['TagIds']){_0x39fe9f[_0xedac('0x37')]=[];_0x39fe9f[_0xedac('0x38')][_0xedac('0x39')](',')[_0xedac('0x3a')](function(_0x5085ae){_0x39fe9f[_0xedac('0x37')][_0xedac('0x3b')](_0xcd72b2[_0x5085ae]);});}delete _0x39fe9f[_0xedac('0x38')];}catch(_0x4cfee9){_0xcf7c0c(_0x4cfee9);}_0x8783b9(_0x39fe9f);});}function updateChatInteraction(_0x159145,_0x24ec9c,_0x43d983){return new BPromise(function(_0x521100,_0x41c868){return getInteractionUsers(_0x159145,_0x43d983)[_0xedac('0x14')](function(_0x47f7c7){return getInteractionTags(_0x47f7c7,_0x24ec9c);})[_0xedac('0x14')](function(_0x2fa832){return getStateInteraction(_0x2fa832);})['then'](function(_0x285080){_0x521100(_0x285080);})['catch'](function(_0x18c114){_0x41c868(_0x18c114);});});}function getStateInteraction(_0x40f884){return new BPromise(function(_0x2e3fcd){_0x40f884[_0xedac('0x3c')]=0x0;_0x40f884[_0xedac('0x3d')]=0x0;_0x40f884[_0xedac('0x3e')]=0x0;_0x40f884['unmanaged']=0x0;_0x40f884[_0xedac('0x3f')]=0x0;_0x40f884[_0xedac('0x40')]=0x0;if(!_0x40f884[_0xedac('0x41')]&&!_0x40f884[_0xedac('0x42')]){_0x40f884[_0xedac('0x3c')]+=0x1;}if(!_0x40f884[_0xedac('0x41')]&&_0x40f884[_0xedac('0x42')]){_0x40f884[_0xedac('0x3d')]+=0x1;if(_0x40f884[_0xedac('0x3c')]){_0x40f884[_0xedac('0x3c')]-=0x1;}}if(_0x40f884[_0xedac('0x41')]&&_0x40f884[_0xedac('0x43')]===_0xedac('0x3f')){_0x40f884[_0xedac('0x3f')]+=0x1;if(_0x40f884[_0xedac('0x3c')]){_0x40f884[_0xedac('0x3c')]-=0x1;}}else if(_0x40f884['closed']&&!_0x40f884[_0xedac('0x42')]&&_0x40f884[_0xedac('0x43')]){_0x40f884[_0xedac('0x44')]+=0x1;if(_0x40f884['waiting']){_0x40f884['waiting']-=0x1;}}else if(_0x40f884['closed']&&_0x40f884[_0xedac('0x42')]){_0x40f884[_0xedac('0x3e')]+=0x1;if(_0x40f884['talking']){_0x40f884[_0xedac('0x3d')]-=0x1;}}_0x40f884['total']+=0x1;_0x2e3fcd(_0x40f884);});}exports[_0xedac('0x45')]=function(_0x50a56f,_0x13d51d){var _0xcd8010={},_0x35e610={},_0x114b2e={'count':0x0,'rows':[]};var _0x1b4cb4=_['map'](db['ChatInteraction'][_0xedac('0x46')],function(_0x51dc40){return{'name':_0x51dc40[_0xedac('0x47')],'type':_0x51dc40[_0xedac('0x48')][_0xedac('0x49')]};});_0x35e610['model']=_[_0xedac('0x35')](_0x1b4cb4,_0xedac('0x2c'));_0x35e610[_0xedac('0x4a')]=_['keys'](_0x50a56f[_0xedac('0x4a')]);_0x35e610[_0xedac('0x4b')]=_[_0xedac('0x4c')](_0x35e610['model'],_0x35e610['query']);_0xcd8010[_0xedac('0x4d')]=_[_0xedac('0x4c')](_0x35e610['model'],qs['fields'](_0x50a56f[_0xedac('0x4a')][_0xedac('0x4e')]));_0xcd8010['attributes']=_0xcd8010[_0xedac('0x4d')]['length']?_0xcd8010[_0xedac('0x4d')]:_0x35e610[_0xedac('0x4f')];if(!_0x50a56f[_0xedac('0x4a')][_0xedac('0x50')](_0xedac('0x51'))){_0xcd8010[_0xedac('0x26')]=qs['limit'](_0x50a56f[_0xedac('0x4a')][_0xedac('0x26')]);_0xcd8010['offset']=qs[_0xedac('0x24')](_0x50a56f[_0xedac('0x4a')][_0xedac('0x24')]);}_0xcd8010['order']=qs['sort'](_0x50a56f[_0xedac('0x4a')][_0xedac('0x52')]);_0xcd8010['where']=qs[_0xedac('0x4b')](_[_0xedac('0x53')](_0x50a56f[_0xedac('0x4a')],_0x35e610[_0xedac('0x4b')]),_0x1b4cb4);var _0x584beb=[];var _0x3dbcff=squel[_0xedac('0x54')]()[_0xedac('0x55')]('id')['field']('name')[_0xedac('0x55')](_0xedac('0x56'))[_0xedac('0x57')]('tools_tags');var _0x8b7f03=squel[_0xedac('0x54')]()['field'](_0xedac('0x58'))[_0xedac('0x55')]('u.fullname')['field']('ui.ChatInteractionId')[_0xedac('0x57')]('user_has_chat_interactions','ui')[_0xedac('0x59')]('users','u','u.id\x20=\x20ui.UserId');var _0x1d8e29=squel[_0xedac('0x54')]()[_0xedac('0x57')](_0xedac('0x5a'),'i')[_0xedac('0x59')]('cm_contacts','c',_0xedac('0x5b'))['left_join'](_0xedac('0x5c'),'o',_0xedac('0x5d'))[_0xedac('0x59')](_0xedac('0x5e'),'a',_0xedac('0x5f'))[_0xedac('0x59')](_0xedac('0x60'),'me','me.ChatInteractionId\x20=\x20i.id')[_0xedac('0x59')](_0xedac('0x61'),'it',_0xedac('0x62'))[_0xedac('0x59')](_0xedac('0x63'),'t',_0xedac('0x64'));var _0x3f313a=squel[_0xedac('0x65')]();var _0x150e87=[];var _0x3d25a4=squel['expr']();var _0x5ced22;if(_0x50a56f[_0xedac('0x4a')][_0xedac('0x66')]){_0x5ced22=as[_0xedac('0x67')](_0x50a56f[_0xedac('0x4a')][_0xedac('0x66')]);var _0x4d47e6=_0x5ced22[_0xedac('0x68')];for(var _0x4ac8b0=0x0;_0x4ac8b0<_0x5ced22[_0xedac('0x69')][_0xedac('0x6a')];_0x4ac8b0++){var _0x54f159=_0x5ced22['conditions'][_0x4ac8b0];var _0x5840c7='i';var _0x2c984e=_[_0xedac('0x6b')](_0x1b4cb4,[_0xedac('0x2c'),_0x54f159[_0xedac('0x55')]]);if(!_0x2c984e){switch(_0x54f159[_0xedac('0x55')]){case _0xedac('0x6c'):if(_0x54f159[_0xedac('0x6d')]==0x1){_0x1d8e29[_0xedac('0x6e')]('`'+_0x54f159[_0xedac('0x55')]+_0xedac('0x6f'));}else{_0x1d8e29['having']('`'+_0x54f159[_0xedac('0x55')]+_0xedac('0x70'));}break;case'Contact':if(_0x54f159[_0xedac('0x71')]===_0xedac('0x72')){if(_0x54f159[_0xedac('0x6d')][_0xedac('0x39')]('\x20')[_0xedac('0x6a')]>0x1){_0x3f313a[_0x4d47e6](_0xedac('0x73'),qs[_0xedac('0x74')](_0x54f159[_0xedac('0x6d')]),null);}else{var _0x15997a='%'+_0x54f159[_0xedac('0x6d')]+'%';_0x3f313a[_0x4d47e6](_0xedac('0x75'),_0x15997a,_0x15997a,_0x15997a);}}else{_0x2c984e=_[_0xedac('0x6b')](_0x1b4cb4,[_0xedac('0x2c'),_0xedac('0x76')]);_0x54f159[_0xedac('0x55')]=_0xedac('0x76');_0x27f911=as[_0xedac('0x77')](_0x5840c7,_0x2c984e[_0xedac('0x48')],_0x54f159);_0x3f313a[_0x4d47e6](_0x27f911['text'],_0x27f911[_0xedac('0x6d')]['start'],_0x27f911[_0xedac('0x6d')]['end']);}break;case _0xedac('0x78'):var _0x4572a2=_0x54f159[_0xedac('0x6d')][_0xedac('0x39')](',')[_0xedac('0x35')](function(_0x241a9e){return Number(_0x241a9e);});_0x4572a2['forEach'](function(_0x327823){_0x3d25a4['or'](_0xedac('0x79'),'%,'+_0x327823+',%');});_0x150e87=_[_0xedac('0x7a')](_0x150e87,_0x4572a2);break;case _0xedac('0x7b'):if(_0x54f159[_0xedac('0x71')]===_0xedac('0x72')){_0x3f313a[_0x4d47e6]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x54f159[_0xedac('0x6d')]+'%',null);}else{_0x2c984e=_['find'](_0x1b4cb4,[_0xedac('0x2c'),_0xedac('0x42')]);_0x54f159[_0xedac('0x55')]='UserId';_0x27f911=as[_0xedac('0x77')](_0x5840c7,_0x2c984e['type'],_0x54f159);_0x3f313a[_0x4d47e6](_0x27f911['text'],_0x27f911[_0xedac('0x6d')][_0xedac('0x7c')],_0x27f911[_0xedac('0x6d')][_0xedac('0x22')]);}break;case _0xedac('0x30'):_0x27f911=as['buildExpression']('me',null,_0x54f159);_0x3f313a[_0x4d47e6](_0x27f911[_0xedac('0x7d')],_0x27f911['value'][_0xedac('0x7c')],_0x27f911[_0xedac('0x6d')][_0xedac('0x22')]);break;}}else{var _0x27f911=as[_0xedac('0x77')](_0x5840c7,_0x2c984e[_0xedac('0x48')],_0x54f159);_0x3f313a[_0x4d47e6](_0x27f911['text'],_0x27f911[_0xedac('0x6d')][_0xedac('0x7c')],_0x27f911[_0xedac('0x6d')][_0xedac('0x22')]);}}}else{var _0x2f6526=_(_0x50a56f[_0xedac('0x4a')])[_0xedac('0x7e')]()[_0xedac('0x35')](function(_0x4128ae){return _[_0xedac('0x7f')](_0x1b4cb4,[_0xedac('0x2c'),_0x4128ae])?_0x4128ae:undefined;})[_0xedac('0x80')]()['value']();if(!_[_0xedac('0x81')](_0x2f6526)){_0x2f6526['forEach'](function(_0x5cba66){if(_0x5cba66===_0xedac('0x82')){_0x1d8e29['where'](_0xedac('0x83'),[][_0xedac('0x84')](_0x50a56f['query'][_0x5cba66]));}else if(_0x5cba66===_0xedac('0x85')){var _0x53d008=JSON[_0xedac('0x86')](_0x50a56f['query'][_0x5cba66])[_0xedac('0x87')];var _0x5e512f=JSON[_0xedac('0x86')](_0x50a56f[_0xedac('0x4a')][_0x5cba66])['$lte'];_0x1d8e29[_0xedac('0x88')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x53d008,_0x5e512f);}else{if(_0x50a56f[_0xedac('0x4a')][_0x5cba66]===_0xedac('0x89')){_0x1d8e29[_0xedac('0x88')]('i.'+_0x5cba66+_0xedac('0x8a'));}else{_0x1d8e29[_0xedac('0x88')]('i.'+_0x5cba66+'\x20=\x20?',_0x50a56f[_0xedac('0x4a')][_0x5cba66]);}}});}if(_0x50a56f['query'][_0xedac('0x8b')]){if(_0x50a56f[_0xedac('0x4a')][_0xedac('0x8b')]==0x1){_0x1d8e29[_0xedac('0x6e')](_0xedac('0x8c'));}else{_0x1d8e29[_0xedac('0x6e')]('`unreadMessages`\x20>\x200');}}if(_0x50a56f[_0xedac('0x4a')][_0xedac('0x8d')]){_0x150e87=_['isArray'](_0x50a56f['query'][_0xedac('0x8d')])?_0x50a56f[_0xedac('0x4a')][_0xedac('0x8d')]:new Array(_0x50a56f[_0xedac('0x4a')][_0xedac('0x8d')]);_0x150e87['forEach'](function(_0x2a9b98){_0x3d25a4['or'](_0xedac('0x79'),'%,'+_0x2a9b98+',%');});}if(_0x50a56f['query'][_0xedac('0x8e')]){var _0x472e8a=_0x50a56f[_0xedac('0x4a')][_0xedac('0x8e')][_0xedac('0x8f')]('\x5c','\x5c\x5c')[_0xedac('0x8f')](/'/g,'\x27\x27');if(qs[_0xedac('0x90')](_0x472e8a)){_0x3f313a['or'](_0xedac('0x91'),_0x472e8a+'%');}else{_0x3f313a['or'](_0xedac('0x92'),qs[_0xedac('0x74')](_0x472e8a))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x472e8a+'%');}}}_0x1d8e29[_0xedac('0x88')](_0x3f313a);_0x1d8e29[_0xedac('0x93')](_0xedac('0x94'));var _0x42e366={'type':db[_0xedac('0x95')]['QueryTypes'][_0xedac('0x96')],'raw':!![]};var _0x223d69=_0x1d8e29[_0xedac('0x97')]();_0x223d69[_0xedac('0x55')]('i.id');_0x223d69['field'](_0xedac('0x98'),_0xedac('0x6c'));if(_0xcd8010[_0xedac('0x99')]){_0xcd8010[_0xedac('0x99')][_0xedac('0x3a')](function(_0xd09529){var _0x5e839c=_0xd09529[0x0]===_0xedac('0x9a')?_0xd09529[0x0]:'i.'+_0xd09529[0x0];_0x1d8e29[_0xedac('0x99')](_0x5e839c,_0xd09529[0x1]===_0xedac('0x9b')?![]:!![]);});}if(!_[_0xedac('0x81')](_0x150e87)){_0x1d8e29[_0xedac('0x6e')](_0x3d25a4);_0x223d69['where'](_0xedac('0x9c'),_0x150e87);}BPromise['resolve']()[_0xedac('0x14')](function(){if(!_0x5ced22){if(_0x50a56f['query'][_0xedac('0x82')])return;_0x223d69[_0xedac('0x88')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');_0x1d8e29[_0xedac('0x88')](_0xedac('0x9d'));return;}if(_0x50a56f[_0xedac('0x9e')]['role']!==_0xedac('0x9f'))return;return _0x50a56f[_0xedac('0x9e')][_0xedac('0xa0')]({'attributes':['id'],'raw':!![]})['then'](function(_0x2a7c33){if(_['isEmpty'](_0x2a7c33)){_0x223d69[_0xedac('0x88')]('i.ChatWebsiteId\x20IS\x20NULL');_0x1d8e29[_0xedac('0x88')](_0xedac('0xa1'));}else{_0x223d69[_0xedac('0x88')](_0xedac('0x83'),_['map'](_0x2a7c33,'id'));_0x1d8e29['where'](_0xedac('0x83'),_[_0xedac('0x35')](_0x2a7c33,'id'));}});})['then'](function(){if(_0x50a56f[_0xedac('0x9e')][_0xedac('0xa2')]===_0xedac('0x9f')&&!_0x5ced22&&!_0x50a56f[_0xedac('0x4a')][_0xedac('0x82')])return[];return db['sequelize']['query'](_0x223d69[_0xedac('0xa3')](),_0x42e366);})[_0xedac('0x14')](function(_0x3fc497){_0x114b2e['count']=_0x3fc497[_0xedac('0x6a')];if(_0x114b2e[_0xedac('0xa4')]===0x0)return[];return db[_0xedac('0xa5')][_0xedac('0x4a')](_0x3dbcff['toString'](),_0x42e366)[_0xedac('0x14')](function(_0x30bc09){_0x584beb=_['keyBy'](_0x30bc09,'id');_0x42e366=_[_0xedac('0x2f')](_0x42e366,{'model':db['ChatInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x50a56f[_0xedac('0x4a')][_0xedac('0x4e')]){_0xcd8010[_0xedac('0x4d')][_0xedac('0x3a')](function(_0x511171){_0x1d8e29[_0xedac('0x55')]('i.'+_0x511171);});}else{_0x1d8e29['field'](_0xedac('0x98'),_0xedac('0x6c'));_0x1d8e29[_0xedac('0x55')]('a.key','Account.key');_0x1d8e29[_0xedac('0x55')](_0xedac('0xa6'),_0xedac('0xa7'));_0x1d8e29[_0xedac('0x55')](_0xedac('0xa8'),'contactName');_0x1d8e29[_0xedac('0x55')](_0xedac('0xa9'));_0x1d8e29[_0xedac('0x55')](_0xedac('0xaa'),_0xedac('0xab'));_0x1d8e29[_0xedac('0x55')](_0xedac('0xac'),_0xedac('0xad'));_0x1d8e29['field'](_0xedac('0xae'),'Contact.email');_0x1d8e29[_0xedac('0x55')](_0xedac('0xaf'),'Contact.phone');_0x1d8e29[_0xedac('0x55')]('c.mobile','Contact.mobile');_0x1d8e29[_0xedac('0x55')](_0xedac('0xb0'),_0xedac('0xb1'));_0x1d8e29[_0xedac('0x55')](_0xedac('0xb2'),_0xedac('0xb3'));_0x1d8e29['field']('o.internal',_0xedac('0xb4'));_0x1d8e29[_0xedac('0x55')](_0xedac('0xb5'),'TagIds');}if(_0xcd8010['limit'])_0x1d8e29[_0xedac('0x26')](_0xcd8010[_0xedac('0x26')]);if(_0xcd8010[_0xedac('0x24')])_0x1d8e29[_0xedac('0x24')](_0xcd8010['offset']);return db[_0xedac('0xa5')][_0xedac('0x4a')](_0x1d8e29['toString'](),_0x42e366);})[_0xedac('0x14')](function(_0x197d7d){if(_0x197d7d[_0xedac('0x6a')]>0x0)_0x8b7f03['where']('ui.ChatInteractionId\x20IN\x20?',_[_0xedac('0x35')](_0x197d7d,'id'));return db[_0xedac('0xa5')][_0xedac('0x4a')](_0x8b7f03[_0xedac('0xa3')](),_0x42e366)[_0xedac('0x14')](function(_0x967401){var _0xfd428=_[_0xedac('0xb6')](_0x967401,_0xedac('0xb7'));var _0x2382c0=[];_0x197d7d[_0xedac('0x3a')](function(_0xf8181a){_0x2382c0['push'](updateChatInteraction(_0xf8181a,_0x584beb,_0xfd428));});return BPromise[_0xedac('0xb8')](_0x2382c0);});});})['then'](function(_0x5abd68){_0x114b2e[_0xedac('0xb9')]=_0x5abd68;return _0x114b2e;})[_0xedac('0x14')](respondWithFilteredResult(_0x13d51d,_0xcd8010))[_0xedac('0x1f')](handleError(_0x13d51d,null));};exports['show']=function(_0xb17584,_0x312f94){var _0x2bfabc={'raw':![],'where':{'id':_0xb17584['params']['id']}},_0x2c4bd7={};_0x2c4bd7[_0xedac('0x4f')]=_[_0xedac('0x7e')](db[_0xedac('0xba')][_0xedac('0x46')]);_0x2c4bd7[_0xedac('0x4a')]=_[_0xedac('0x7e')](_0xb17584[_0xedac('0x4a')]);_0x2c4bd7[_0xedac('0x4b')]=_[_0xedac('0x4c')](_0x2c4bd7['model'],_0x2c4bd7[_0xedac('0x4a')]);_0x2bfabc[_0xedac('0x4d')]=_[_0xedac('0x4c')](_0x2c4bd7[_0xedac('0x4f')],qs['fields'](_0xb17584['query']['fields']));_0x2bfabc[_0xedac('0x4d')]=_0x2bfabc[_0xedac('0x4d')][_0xedac('0x6a')]?_0x2bfabc[_0xedac('0x4d')]:_0x2c4bd7[_0xedac('0x4f')];if(_0xb17584[_0xedac('0x4a')][_0xedac('0xbb')]){_0x2bfabc['include']=[{'all':!![]}];}_0x2bfabc=_[_0xedac('0x2f')]({},_0x2bfabc,_0xb17584[_0xedac('0xbc')]);return db[_0xedac('0xba')][_0xedac('0x6b')](_0x2bfabc)['then'](handleEntityNotFound(_0x312f94,null))['then'](respondWithResult(_0x312f94,null))[_0xedac('0x1f')](handleError(_0x312f94,null));};exports[_0xedac('0xbd')]=function(_0x151568,_0x44dd2d){return db[_0xedac('0xba')]['create'](_0x151568['body'],{})[_0xedac('0x14')](respondWithResult(_0x44dd2d,0xc9))['catch'](handleError(_0x44dd2d,null));};exports[_0xedac('0x29')]=function(_0x190060,_0x52a9f7){if(_0x190060[_0xedac('0x30')]['id']){delete _0x190060['body']['id'];}return db[_0xedac('0xba')][_0xedac('0x6b')]({'where':{'id':_0x190060[_0xedac('0xbe')]['id']}})[_0xedac('0x14')](handleEntityNotFound(_0x52a9f7,null))[_0xedac('0x14')](saveUpdates(_0x190060['body'],null))['then'](respondWithResult(_0x52a9f7,null))['catch'](handleError(_0x52a9f7,null));};exports[_0xedac('0x2a')]=function(_0x5f5434,_0x191d4a){return db['ChatInteraction'][_0xedac('0x6b')]({'where':{'id':_0x5f5434[_0xedac('0xbe')]['id']}})[_0xedac('0x14')](handleEntityNotFound(_0x191d4a,null))[_0xedac('0x14')](removeEntity(_0x191d4a,null))[_0xedac('0x1f')](handleError(_0x191d4a,null));};exports[_0xedac('0xbf')]=function(_0x48323c,_0x4d3508){return db['ChatInteraction'][_0xedac('0xbf')]()[_0xedac('0x14')](respondWithResult(_0x4d3508,null))['catch'](handleError(_0x4d3508,null));};exports[_0xedac('0xc0')]=function(_0xc3e8f0,_0x23e20a){var _0x1f5d69=_0xc3e8f0[_0xedac('0xbe')]['id'];var _0x5f55a1;var _0x4e45e8;var _0xaab98d;return db['ChatInteraction'][_0xedac('0xc1')]({'where':{'id':_0x1f5d69}})['then'](function(_0x34c5ca){_0x5f55a1=_0x34c5ca;return db[_0xedac('0xc2')][_0xedac('0xc1')]({'where':{'id':_0x34c5ca[_0xedac('0x82')]},'attributes':['id',_0xedac('0xc3'),_0xedac('0xc4'),_0xedac('0xc5'),_0xedac('0xc6'),_0xedac('0xc7')],'raw':!![]});})[_0xedac('0x14')](function(_0x5d7048){if(_0x5d7048&&_0x5d7048[_0xedac('0xc3')]&&_0x5d7048[_0xedac('0xc4')]){_0x4e45e8=_0x5d7048;var _0x54f3bf={'interaction':{'id':_0x1f5d69},'agent':{'id':_0xc3e8f0['user']['id'],'name':_0xc3e8f0[_0xedac('0x9e')]['name'],'fullname':_0xc3e8f0[_0xedac('0x9e')]['fullname'],'email':_0xc3e8f0['user'][_0xedac('0xc8')]},'contact':_0xc3e8f0[_0xedac('0x30')][_0xedac('0x31')],'account':_0xc3e8f0[_0xedac('0x30')][_0xedac('0x33')]};var _0x26bb11={'rejectUnauthorized':![],'method':_0xedac('0xc9'),'url':_0xedac('0xca'),'headers':{'X-APIKEY':_0x5d7048[_0xedac('0xc3')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0xc3e8f0[_0xedac('0x9e')][_0xedac('0xc8')]],'buttons':null,'topic':_0x4e45e8[_0xedac('0xc5')],'note':_[_0xedac('0xcb')](_0x4e45e8[_0xedac('0xc6')])?null:getMustacheRender(_0x4e45e8['vidaooNote'],_0x54f3bf),'metadata':null},'redirect':_0xedac('0xcc'),'json':!![]};try{if(!_[_0xedac('0xcb')](_0x4e45e8[_0xedac('0xc7')])){var _0x101db1=getMustacheRender(_0x4e45e8[_0xedac('0xc7')],_0x54f3bf);var _0x314337=JSON['parse'](_0x101db1);_0x26bb11[_0xedac('0x30')][_0xedac('0xcd')]=_0x314337;}}catch(_0x4b0490){throw new db[(_0xedac('0x95'))][(_0xedac('0xce'))](_0xedac('0xcf'));}return rp(_0x26bb11);}else{throw new db[(_0xedac('0x95'))][(_0xedac('0xce'))](_0xedac('0xd0'));}})[_0xedac('0x14')](function(_0x4048d3){_0xaab98d=_0x4048d3;if(_0xaab98d['id']){var _0x176664={'body':_0xaab98d['join_url'],'ChatWebsiteId':_0x4e45e8['id'],'ChatInteractionId':_0x5f55a1['id'],'direction':_0xedac('0xd1'),'UserId':_0xc3e8f0[_0xedac('0x9e')]['id']};return db['ChatMessage'][_0xedac('0xbd')](_0x176664,{});}else{throw new db[(_0xedac('0x95'))][(_0xedac('0xce'))](_0xedac('0xd2'));}})[_0xedac('0x14')](function(){return _0x5f55a1[_0xedac('0xd3')]({'vidaooSessionId':_0xaab98d['id']});})[_0xedac('0x14')](respondWithResult(_0x23e20a,null))[_0xedac('0x1f')](handleError(_0x23e20a,null));};exports['customUpdate']=function(_0x134c59,_0x1f7dc4){if(_0x134c59[_0xedac('0x30')]['id']){delete _0x134c59['body']['id'];}return db[_0xedac('0xba')]['find']({'where':{'id':_0x134c59[_0xedac('0xbe')]['id']},'include':[{'model':db[_0xedac('0xd4')],'as':'Contact'}]})[_0xedac('0x14')](handleEntityNotFound(_0x1f7dc4,null))['then'](saveUpdates(_0x134c59[_0xedac('0x30')],null))[_0xedac('0x14')](respondWithResult(_0x1f7dc4,null))[_0xedac('0x1f')](handleError(_0x1f7dc4,null));};exports[_0xedac('0xd5')]=function(_0x4861f0,_0x35f5ee){if(_0x4861f0[_0xedac('0x30')]['id']){delete _0x4861f0[_0xedac('0x30')]['id'];}return db[_0xedac('0xba')]['find']({'where':{'id':_0x4861f0['params']['id']}})[_0xedac('0x14')](function(_0x9c4347){if(!_0x9c4347){logger[_0xedac('0x1b')](_0xedac('0xd6'),_0xedac('0xd5'),0x194,_0xedac('0xd7'));_0x35f5ee[_0xedac('0x20')](0x194);}else{if(_0x9c4347[_0xedac('0x42')]){throw new db[(_0xedac('0x95'))][(_0xedac('0xce'))](_0xedac('0xd8'));}}return _0x9c4347;})['then'](function(_0x4f8f26){if(_0x4f8f26){return _0x4f8f26['update']({'closed':_0x4861f0[_0xedac('0x30')][_0xedac('0x41')],'disposition':_0x4861f0[_0xedac('0x30')][_0xedac('0x43')]})['then'](function(_0x2c7bc6){return _0x2c7bc6;});}})['then'](function(){return respondWithRpcPromise(_0xedac('0xd9'),_0xedac('0xd5'),_0x4861f0['body'],client9004);})[_0xedac('0x14')](respondWithResult(_0x35f5ee,null))[_0xedac('0x1f')](handleError(_0x35f5ee,null));};exports[_0xedac('0xda')]=function(_0x53a3bb,_0x32dac4){_0x53a3bb[_0xedac('0x30')]['name']=_0x53a3bb[_0xedac('0xdb')]['originalname'];_0x53a3bb[_0xedac('0x30')][_0xedac('0xdc')]=_0x53a3bb[_0xedac('0xdb')][_0xedac('0xdd')];_0x53a3bb[_0xedac('0x30')]['type']=_0x53a3bb[_0xedac('0xdb')]['mimetype'];return db[_0xedac('0xde')][_0xedac('0xbd')](_0x53a3bb[_0xedac('0x30')])[_0xedac('0x14')](respondWithResult(_0x32dac4,0xc9))[_0xedac('0x1f')](handleError(_0x32dac4,null));};exports[_0xedac('0xdf')]=function(_0x367ba1,_0x46308a){return db['ChatInteraction'][_0xedac('0xc1')]({'where':{'id':_0x367ba1[_0xedac('0xbe')]['id']},'raw':!![]})[_0xedac('0x14')](handleEntityNotFound(_0x46308a,null))[_0xedac('0x14')](function(_0x262140){if(_0x262140){if(_0x262140[_0xedac('0x41')]){return _0x46308a['status'](0x193)[_0xedac('0x23')]({'status':0x193,'message':'Unauthorized'});}return db[_0xedac('0xde')][_0xedac('0xc1')]({'where':{'id':_0x367ba1[_0xedac('0x4a')]['attachId']},'raw':!![]})[_0xedac('0x14')](handleEntityNotFound(_0x46308a,null));}})[_0xedac('0x14')](function(_0x1495a0){if(_0x1495a0){var _0x32cf26=_0x1495a0[_0xedac('0xe0')]!==null;var _0x23ac86=path[_0xedac('0xe1')](config[_0xedac('0xe2')],_0xedac('0xe3'));if(_0x32cf26){_0x23ac86=path['join'](_0x23ac86,'offline-chat/');}var _0x2d8d09=path[_0xedac('0xe1')](_0x23ac86,_0x1495a0[_0xedac('0xdc')]);return _0x46308a[_0xedac('0xe4')](_0x2d8d09);}})[_0xedac('0x1f')](handleError(_0x46308a,null));};exports['close']=function(_0x111f88,_0x270878){var _0x3d2818=null;var _0x52528a=null;var _0x55ef30=null;if(_0x111f88[_0xedac('0x30')]['id']){delete _0x111f88[_0xedac('0x30')]['id'];}if(_0x111f88[_0xedac('0x30')][_0xedac('0xe5')]){_0x55ef30=path[_0xedac('0xe1')](config[_0xedac('0xe2')],'server/files/chat/upload/',util['format'](_0xedac('0xe6'),Date[_0xedac('0xe7')]()));_0x111f88[_0xedac('0x30')]['pathTranscript']=_0x55ef30;}return db[_0xedac('0xba')][_0xedac('0x6b')]({'where':{'id':_0x111f88[_0xedac('0xbe')]['id']},'include':[{'model':db['ChatMessage'],'as':'Messages','include':[{'model':db[_0xedac('0x7b')],'as':'User'}]}]})[_0xedac('0x14')](handleEntityNotFound(_0x270878,null))[_0xedac('0x14')](saveUpdates(_0x111f88['body'],null))['then'](function(_0x566598){if(_0x566598){_0x3d2818=_0x566598;return db[_0xedac('0xc2')]['find']({'where':{'id':_0x3d2818['ChatWebsiteId']}});}})[_0xedac('0x14')](function(_0x14fccd){if(_0x14fccd){_0x52528a=_0x14fccd;return db[_0xedac('0xd4')][_0xedac('0x6b')]({'where':{'id':_0x3d2818[_0xedac('0x76')]}});}})[_0xedac('0x14')](function(_0x29450d){if(_0x29450d){if(_0x55ef30){var _0x342828=null;for(var _0x3276a8=0x1;_0x3276a8<_0x3d2818[_0xedac('0xe8')][_0xedac('0x6a')];++_0x3276a8){_0x342828=_0x3d2818[_0xedac('0xe8')][_0x3276a8];var _0x2d9f39=_0x342828['UserId']?util[_0xedac('0xe9')](_0xedac('0xea'),_0x52528a[_0xedac('0xeb')],_0x342828[_0xedac('0x42')]):_0xedac('0xec');var _0x1338a5=_0x111f88[_0xedac('0x30')]['customer']||util[_0xedac('0xe9')](_0xedac('0xea'),_0xedac('0xed'),_0x342828[_0xedac('0x76')]);switch(_0x52528a[_0xedac('0xee')]){case _0xedac('0xef'):_0x2d9f39=_0x342828['UserId']?util[_0xedac('0xe9')](_0xedac('0xea'),_0x52528a[_0xedac('0xeb')],_0x342828[_0xedac('0x42')]):_0xedac('0xec');break;case'agent_alias':_0x2d9f39=_0x342828[_0xedac('0x42')]?_0x342828[_0xedac('0x7b')][_0xedac('0xf0')]||_0x342828[_0xedac('0x7b')][_0xedac('0x36')]:_0xedac('0xec');break;case _0xedac('0xf1'):_0x2d9f39=_0x342828[_0xedac('0x42')]?_0x342828[_0xedac('0x7b')][_0xedac('0x36')]:_0xedac('0xec');break;default:_0x2d9f39=_0x342828[_0xedac('0x42')]?util['format'](_0xedac('0xea'),_0x52528a[_0xedac('0xeb')],_0x342828[_0xedac('0x42')]):_0xedac('0xec');}var _0x4eff52=util[_0xedac('0xe9')](_0xedac('0xf2'),moment(_0x342828[_0xedac('0x85')])[_0xedac('0xe9')]('MM/DD/YYYY\x20HH:mm:ss'),_0x342828[_0xedac('0xf3')]==='in'?_0x1338a5:_0x2d9f39,_0x342828[_0xedac('0x30')]);if(!_0x342828['secret']){fs[_0xedac('0xf4')](_0x55ef30,_0x4eff52);}}return db['MailAccount'][_0xedac('0xc1')]({'where':{'service':!![]},'include':[{'model':db[_0xedac('0xf5')],'as':_0xedac('0xf6'),'raw':!![],'include':[{'model':db[_0xedac('0xf7')],'as':_0xedac('0xf7'),'raw':!![]}]}]});}}})[_0xedac('0x14')](function(_0x43d79e){if(!_0x43d79e||!_0x43d79e['Smtp']||!_0x111f88[_0xedac('0x30')])return _0x3d2818;var _0x413faa=_0x43d79e['getSmtpOptions']();return respondWithRpcPromise('SendMail',_0xedac('0xf8'),{'account':_0x413faa,'message':{'from':util[_0xedac('0xe9')](_0xedac('0xf9'),_0x43d79e[_0xedac('0x2c')],_0x43d79e[_0xedac('0xc8')]||_0x43d79e['Smtp'][_0xedac('0x9e')]),'to':_0x111f88[_0xedac('0x30')]['mailTranscript'],'subject':'Mail\x20Transcript','text':util['format'](_0xedac('0xfa'),_0x111f88['body']['mailTranscript']),'attachments':[{'path':_0x55ef30}]}})[_0xedac('0x14')](function(){return _0x3d2818;})['catch'](function(_0x4b37aa){logger['error'](_0x4b37aa);});})[_0xedac('0x14')](respondWithStatusCode(_0x270878,0xc8))[_0xedac('0x1f')](handleError(_0x270878,null));};exports['addMessage']=function(_0x2137e1,_0x2ec269){return db['ChatMessage'][_0xedac('0x6b')]({'where':{'id':_0x2137e1[_0xedac('0xbe')]['id']}})[_0xedac('0x14')](handleEntityNotFound(_0x2ec269,null))[_0xedac('0x14')](function(_0x131646){if(_0x131646){return _0x131646[_0xedac('0xfb')](_0x2137e1['body']['ids'],_['omit'](_0x2137e1[_0xedac('0x30')],[_0xedac('0xfc'),'id'])||{});}})[_0xedac('0x14')](respondWithResult(_0x2ec269,null))[_0xedac('0x1f')](handleError(_0x2ec269,null));};exports['getMessages']=function(_0x1b63e5,_0x2a4631){var _0x4f64c7={'raw':![],'where':{}};var _0x2b50f8={};var _0x2ffe51={'count':0x0,'rows':[]};return db[_0xedac('0xba')][_0xedac('0xc1')]({'where':{'id':_0x1b63e5[_0xedac('0xbe')]['id']}})[_0xedac('0x14')](handleEntityNotFound(_0x2a4631,null))[_0xedac('0x14')](function(_0x266e08){if(_0x266e08){_0x2b50f8['model']=_[_0xedac('0x7e')](db[_0xedac('0xfd')][_0xedac('0x46')]);_0x2b50f8['query']=_[_0xedac('0x7e')](_0x1b63e5[_0xedac('0x4a')]);_0x2b50f8['filters']=_[_0xedac('0x4c')](_0x2b50f8[_0xedac('0x4f')],_0x2b50f8[_0xedac('0x4a')]);_0x4f64c7[_0xedac('0x4d')]=_[_0xedac('0x4c')](_0x2b50f8['model'],qs['fields'](_0x1b63e5['query'][_0xedac('0x4e')]));_0x4f64c7[_0xedac('0x4d')]=_0x4f64c7[_0xedac('0x4d')][_0xedac('0x6a')]?_0x4f64c7[_0xedac('0x4d')]:_0x2b50f8['model'];if(!_0x1b63e5[_0xedac('0x4a')]['hasOwnProperty'](_0xedac('0x51'))){_0x4f64c7[_0xedac('0x26')]=qs[_0xedac('0x26')](_0x1b63e5['query']['limit']);_0x4f64c7[_0xedac('0x24')]=qs[_0xedac('0x24')](_0x1b63e5[_0xedac('0x4a')]['offset']);}_0x4f64c7[_0xedac('0x99')]=qs[_0xedac('0x52')](_0x1b63e5[_0xedac('0x4a')][_0xedac('0x52')]);_0x4f64c7[_0xedac('0x88')]=qs['filters'](_[_0xedac('0x53')](_0x1b63e5[_0xedac('0x4a')],_0x2b50f8[_0xedac('0x4b')]));_0x4f64c7['where'][_0xedac('0xb7')]=_0x266e08['id'];if(_0x1b63e5[_0xedac('0x4a')][_0xedac('0x8e')]){_0x4f64c7['where']=_[_0xedac('0x2f')](_0x4f64c7[_0xedac('0x88')],{'$or':_[_0xedac('0x35')](_0x4f64c7[_0xedac('0x4d')],function(_0x56a323){var _0x33b154={};_0x33b154[_0x56a323]={'$like':'%'+_0x1b63e5[_0xedac('0x4a')][_0xedac('0x8e')]+'%'};return _0x33b154;})});}if(_0x1b63e5[_0xedac('0x4a')][_0xedac('0x87')]){var _0x5e5799=_0x1b63e5[_0xedac('0x4a')]['$gte'][_0xedac('0x39')](',');var _0x5d481a={};_0x5d481a[_0x5e5799[0x0]]={'$gte':moment(_0x5e5799[0x1])[_0xedac('0xe9')](_0xedac('0xfe'))};_0x4f64c7['where']=_[_0xedac('0x2f')](_0x4f64c7[_0xedac('0x88')],_0x5d481a);}_0x4f64c7=_['merge']({},_0x4f64c7,_0x1b63e5['options']);return db[_0xedac('0xfd')]['count']({'where':_0x4f64c7['where']})[_0xedac('0x14')](function(_0x118f9f){_0x2ffe51[_0xedac('0xa4')]=_0x118f9f;if(_0x1b63e5[_0xedac('0x4a')][_0xedac('0xbb')]){_0x4f64c7[_0xedac('0xff')]=[{'all':!![]}];}return db['ChatMessage'][_0xedac('0x100')](_0x4f64c7);})[_0xedac('0x14')](function(_0x4a0ea3){_0x2ffe51[_0xedac('0xb9')]=_0x4a0ea3;return _0x2ffe51;});}})['then'](respondWithFilteredResult(_0x2a4631,_0x4f64c7))[_0xedac('0x1f')](handleError(_0x2a4631,null));};exports[_0xedac('0x101')]=function(_0x58d404,_0xc5e00a){var _0x1f8d41={'where':{}},_0xf40d69={},_0x181722={'count':0x0,'rows':[]};return db[_0xedac('0xba')]['findOne']({'where':{'id':_0x58d404[_0xedac('0xbe')]['id']}})[_0xedac('0x14')](handleEntityNotFound(_0xc5e00a,null))[_0xedac('0x14')](function(_0x46709e){if(_0x46709e){_0xf40d69[_0xedac('0x4f')]=_[_0xedac('0x7e')](db['ChatMessage'][_0xedac('0x46')]);_0xf40d69['query']=_[_0xedac('0x7e')](_0x58d404[_0xedac('0x4a')]);_0xf40d69[_0xedac('0x4b')]=_['intersection'](_0xf40d69[_0xedac('0x4f')],_0xf40d69[_0xedac('0x4a')]);_0x1f8d41[_0xedac('0x4d')]=_[_0xedac('0x4c')](_0xf40d69['model'],qs[_0xedac('0x4e')](_0x58d404[_0xedac('0x4a')][_0xedac('0x4e')]));_0x1f8d41[_0xedac('0x4d')]=_0x1f8d41[_0xedac('0x4d')][_0xedac('0x6a')]?_0x1f8d41[_0xedac('0x4d')]:_0xf40d69[_0xedac('0x4f')];if(!_0x58d404['query'][_0xedac('0x50')](_0xedac('0x51'))){_0x1f8d41['limit']=qs[_0xedac('0x26')](_0x58d404['query'][_0xedac('0x26')]);_0x1f8d41[_0xedac('0x24')]=qs[_0xedac('0x24')](_0x58d404[_0xedac('0x4a')][_0xedac('0x24')]);}_0x1f8d41[_0xedac('0x99')]=qs['sort'](_0x58d404['query'][_0xedac('0x52')]);_0x1f8d41[_0xedac('0x88')]=qs[_0xedac('0x4b')](_[_0xedac('0x53')](_0x58d404[_0xedac('0x4a')],_0xf40d69[_0xedac('0x4b')]));_0x1f8d41[_0xedac('0x88')][_0xedac('0xb7')]=_0x46709e['id'];if(_0x58d404[_0xedac('0x4a')][_0xedac('0x8e')]){_0x1f8d41[_0xedac('0x88')]=_[_0xedac('0x2f')](_0x1f8d41[_0xedac('0x88')],{'$or':_[_0xedac('0x35')](_0x1f8d41[_0xedac('0x4d')],function(_0x55f9fb){var _0x4c6ae0={};_0x4c6ae0[_0x55f9fb]={'$like':'%'+_0x58d404[_0xedac('0x4a')][_0xedac('0x8e')]+'%'};return _0x4c6ae0;})});}_0x1f8d41[_0xedac('0x88')][_0xedac('0x102')]=![];if(_0x58d404[_0xedac('0x4a')]['id']){_0x1f8d41[_0xedac('0x88')]['id']={'$gt':_0x58d404[_0xedac('0x4a')]['id']};}_0x1f8d41=_[_0xedac('0x2f')]({},_0x1f8d41,_0x58d404[_0xedac('0xbc')]);return db[_0xedac('0xfd')]['count']({'where':_0x1f8d41[_0xedac('0x88')]})['then'](function(_0x4456ca){_0x181722['count']=_0x4456ca;_0x1f8d41['include']=[];if(_0x58d404[_0xedac('0x4a')][_0xedac('0x103')]){_0x1f8d41[_0xedac('0xff')][_0xedac('0x3b')]({'model':db[_0xedac('0x7b')],'as':_0xedac('0x7b'),'attributes':['id','fullname','alias']});}if(_0x58d404[_0xedac('0x4a')][_0xedac('0xbb')]){_0x1f8d41[_0xedac('0xff')]=[{'all':!![]}];}return db[_0xedac('0xfd')][_0xedac('0x100')](_0x1f8d41);})[_0xedac('0x14')](function(_0x1bd5e0){_0x181722['rows']=_0x1bd5e0;return _0x181722;});}})[_0xedac('0x14')](respondWithFilteredResult(_0xc5e00a,_0x1f8d41))[_0xedac('0x1f')](handleError(_0xc5e00a,null));};exports['addTags']=function(_0x40e4c3,_0x31e199){return db[_0xedac('0xba')][_0xedac('0x6b')]({'where':{'id':_0x40e4c3[_0xedac('0xbe')]['id']}})[_0xedac('0x14')](handleEntityNotFound(_0x31e199,null))[_0xedac('0x14')](function(_0x240dfb){if(_0x240dfb){return _0x240dfb[_0xedac('0x104')](_0x40e4c3['body'][_0xedac('0xfc')],_[_0xedac('0x105')](_0x40e4c3[_0xedac('0x30')],[_0xedac('0xfc'),'id'])||{})[_0xedac('0x106')](function(){return db[_0xedac('0x78')][_0xedac('0x100')]({'attributes':['id',_0xedac('0x2c'),_0xedac('0x56')],'where':{'id':_0x40e4c3[_0xedac('0x30')][_0xedac('0xfc')]}});})[_0xedac('0x14')](function(_0x1794fc){socket['emit']('chatInteractionTags:save',{'id':Number(_0x40e4c3[_0xedac('0xbe')]['id']),'tags':_0x1794fc||[]});return{'id':Number(_0x40e4c3[_0xedac('0xbe')]['id']),'tags':_0x1794fc||[]};});}})[_0xedac('0x14')](respondWithResult(_0x31e199,null))['catch'](handleError(_0x31e199,null));};exports['removeTags']=function(_0x202550,_0x228da5){return db[_0xedac('0xba')][_0xedac('0x6b')]({'where':{'id':_0x202550[_0xedac('0xbe')]['id']}})['then'](handleEntityNotFound(_0x228da5,null))[_0xedac('0x14')](function(_0x355af5){if(_0x355af5){return _0x355af5[_0xedac('0x107')](_0x202550[_0xedac('0x4a')][_0xedac('0xfc')]);}})['then'](respondWithStatusCode(_0x228da5,null))['catch'](handleError(_0x228da5,null));};exports[_0xedac('0xe4')]=function(_0x56e291,_0x29d5bd){var _0x70a6b0=moment()[_0xedac('0x108')]()['toString']();var _0x4ddcab=path[_0xedac('0xe1')](config['root'],_0xedac('0x109'),_0xedac('0x10a'),_0xedac('0x10b'));var _0x3c7b09=path[_0xedac('0xe1')](config[_0xedac('0xe2')],_0xedac('0x109'),_0xedac('0x10a'),_0xedac('0x10c'));var _0x59de3b=path['join'](_0x4ddcab,_0x70a6b0);var _0x41c8a3=util[_0xedac('0xe9')]('transcript-%d-%s.zip',_0x56e291[_0xedac('0xbe')]['id'],_0x70a6b0);var _0x230fc7=path['join'](_0x4ddcab,_0x41c8a3);var _0x1d4110=[];_0x1d4110[_0xedac('0x3b')]({'model':db['User'],'as':_0xedac('0x7b'),'attributes':['id',_0xedac('0x36')],'raw':!![]});_0x1d4110[_0xedac('0x3b')]({'model':db[_0xedac('0xd4')],'as':_0xedac('0x10d'),'attributes':['id',_0xedac('0x10e'),_0xedac('0x10f')],'raw':!![]});if(_0x56e291[_0xedac('0x4a')][_0xedac('0x10c')]){_0x1d4110['push']({'model':db[_0xedac('0xde')],'as':_0xedac('0xde'),'raw':!![]});}var _0xb20064=[{'model':db[_0xedac('0xfd')],'as':'Messages','attributes':['id',_0xedac('0x30'),'createdAt',_0xedac('0xf3'),'secret','read'],'include':_0x1d4110}];_0xb20064[_0xedac('0x3b')]({'model':db[_0xedac('0xc2')],'as':_0xedac('0x110'),'attributes':['id',_0xedac('0x2c')]});_0xb20064[_0xedac('0x3b')]({'model':db['User'],'as':'Owner','attributes':['id',_0xedac('0x36')]});return db[_0xedac('0xba')][_0xedac('0x6b')]({'where':{'id':_0x56e291[_0xedac('0xbe')]['id']},'include':_0xb20064})[_0xedac('0x14')](handleEntityNotFound(_0x29d5bd,null))[_0xedac('0x14')](function(_0x497ff9){if(_0x497ff9){var _0x4b9c79=_0x497ff9['get']({'plain':!![]});fs[_0xedac('0x111')](_0x59de3b);var _0x82af3b={'channel':_0xedac('0x112'),'account':_0x4b9c79['Account'][_0xedac('0x2c')],'agent':_0x4b9c79[_0xedac('0x113')]?_0x4b9c79[_0xedac('0x113')][_0xedac('0x36')]:_0xedac('0x114'),'createdAt':moment(_0x4b9c79[_0xedac('0x85')])[_0xedac('0xe9')](_0xedac('0xfe'))[_0xedac('0xa3')](),'closedAt':_0x4b9c79[_0xedac('0x41')]?moment(_0x4b9c79['closedAt'])[_0xedac('0xe9')](_0xedac('0xfe'))[_0xedac('0xa3')]():'','disposition':_0x4b9c79[_0xedac('0x43')],'chatInfo':{'browser':_0x4b9c79[_0xedac('0x115')],'os':_0x4b9c79[_0xedac('0x116')],'referer':_0x4b9c79[_0xedac('0x117')],'customerIp':_0x4b9c79[_0xedac('0x118')],'customerPort':_0x4b9c79[_0xedac('0x119')]?_0x4b9c79[_0xedac('0x119')]:'N.A.'},'messages':_(_0x4b9c79['Messages'])[_0xedac('0x11a')]()['filter']({'secret':![]})['map'](function(_0x1f9367){if(_0x1f9367[_0xedac('0xde')]){var _0x239fc2=path[_0xedac('0xe1')](_0x3c7b09,_0x1f9367[_0xedac('0xde')][_0xedac('0xdc')]);if(fs[_0xedac('0x11b')](_0x239fc2)){fs[_0xedac('0x11c')](_0x239fc2)[_0xedac('0x11d')](fs[_0xedac('0x11e')](path['join'](_0x59de3b,_0x1f9367[_0xedac('0xde')][_0xedac('0xdc')])));}}return{'date':moment(_0x1f9367[_0xedac('0x85')])[_0xedac('0xe9')](_0xedac('0xfe'))['toString'](),'sender':_0x1f9367[_0xedac('0xf3')]===_0xedac('0xd1')?_0x1f9367['User']?_0x1f9367[_0xedac('0x7b')][_0xedac('0x36')]:'System':_0x1f9367[_0xedac('0x10d')][_0xedac('0x10e')]+(_0x1f9367[_0xedac('0x10d')][_0xedac('0x10f')]?'\x20'+_0x1f9367[_0xedac('0x10d')][_0xedac('0x10f')]:''),'body':_0x1f9367['Attachment']?_0x1f9367[_0xedac('0xde')]['basename']:_0x1f9367[_0xedac('0x30')],'direction':_0x1f9367[_0xedac('0xf3')]===_0xedac('0xd1')?'A':'C','secret':_0x1f9367[_0xedac('0x102')],'read':_0x1f9367[_0xedac('0x8b')],'attachment':_0x1f9367[_0xedac('0xde')]};})[_0xedac('0x6d')]()};return ejs[_0xedac('0x11f')](path[_0xedac('0xe1')](config['root'],'server',_0xedac('0x120'),_0xedac('0x121')),{'interaction':_0x82af3b})['then'](function(_0x48fd4d){var _0x3a64ec=path[_0xedac('0xe1')](_0x59de3b,_0xedac('0x122')+_0x4b9c79['id']+'-'+_0x70a6b0+_0xedac('0x123'));var _0x3c77c2={'path':_0x3a64ec,'channel':_0xedac('0x112'),'interactionId':_0x4b9c79['id']};return pdf[_0xedac('0x124')](_0x48fd4d,_0x3c77c2);})[_0xedac('0x14')](function(){return new Promise(function(_0x184bb3,_0x5e5c4d){zipdir(_0x59de3b,{'saveTo':_0x230fc7},function(_0x23a263,_0x553b36){if(_0x23a263)return _0x5e5c4d(_0x23a263);return _0x184bb3(_0x553b36);});})[_0xedac('0x14')](function(){return new BPromise(function(_0x314128,_0x301b0a){rimraf(_0x59de3b,function(_0x1ded12){if(_0x1ded12)_0x301b0a(_0x1ded12);return _0x314128();});});})[_0xedac('0x14')](function(){return _0x29d5bd['download'](_0x230fc7,_0x41c8a3,function(_0x2df799){if(_0x2df799){logger['error']('err',_0x2df799);}else{fs['unlinkSync'](_0x230fc7);}});});});}else{return _0x29d5bd[_0xedac('0x20')](0xc8);}})[_0xedac('0x1f')](handleError(_0x29d5bd,null));};
\ No newline at end of file
index 4705357..ff78991 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda2f=['findAll','emit','catch','hasOwnProperty','hook','events','../../mysqldb','ChatInteraction','ChatMessage','setMaxListeners','save','update','setDataValue','Users'];(function(_0x5dee2a,_0x47d02a){var _0x31e98e=function(_0x48b1e9){while(--_0x48b1e9){_0x5dee2a['push'](_0x5dee2a['shift']());}};_0x31e98e(++_0x47d02a);}(_0xda2f,0x1c5));var _0xfda2=function(_0x4f3053,_0x5b7e6c){_0x4f3053=_0x4f3053-0x0;var _0x5ecec9=_0xda2f[_0x4f3053];return _0x5ecec9;};'use strict';var EventEmitter=require(_0xfda2('0x0'));var ChatInteraction=require(_0xfda2('0x1'))['db'][_0xfda2('0x2')];var ChatMessage=require(_0xfda2('0x1'))['db'][_0xfda2('0x3')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0xfda2('0x4')](0x0);var events={'afterCreate':_0xfda2('0x5'),'afterUpdate':_0xfda2('0x6'),'afterDestroy':'remove'};function emitEvent(_0x55f0f8){return function(_0x447044,_0x9065a9,_0x59cbc6){_0x447044['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x1a6f38){_0x447044[_0xfda2('0x7')](_0xfda2('0x8'),_0x1a6f38['map'](function(_0x450832){return{'id':_0x450832['id']};}));return ChatMessage[_0xfda2('0x9')]({'where':{'ChatInteractionId':_0x447044['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x42e05c){_0x447044[_0xfda2('0x7')]('unreadMessages',_0x42e05c['length']);ChatInteractionEvents[_0xfda2('0xa')](_0x55f0f8+':'+_0x447044['id'],_0x447044);ChatInteractionEvents[_0xfda2('0xa')](_0x55f0f8,_0x447044);_0x59cbc6(null);})[_0xfda2('0xb')](_0x59cbc6(null));};}for(var e in events){if(events[_0xfda2('0xc')](e)){var event=events[e];ChatInteraction[_0xfda2('0xd')](e,emitEvent(event));}}module['exports']=ChatInteractionEvents;
\ No newline at end of file
+var _0xd3f3=['update','getUsers','then','map','setDataValue','unreadMessages','length','catch','hasOwnProperty','exports','events','ChatInteraction','../../mysqldb','setMaxListeners','save'];(function(_0x463956,_0x2d3bea){var _0x11d304=function(_0xc37b60){while(--_0xc37b60){_0x463956['push'](_0x463956['shift']());}};_0x11d304(++_0x2d3bea);}(_0xd3f3,0xfa));var _0x3d3f=function(_0x21ba19,_0x5ee6b9){_0x21ba19=_0x21ba19-0x0;var _0x518d67=_0xd3f3[_0x21ba19];return _0x518d67;};'use strict';var EventEmitter=require(_0x3d3f('0x0'));var ChatInteraction=require('../../mysqldb')['db'][_0x3d3f('0x1')];var ChatMessage=require(_0x3d3f('0x2'))['db']['ChatMessage'];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x3d3f('0x3')](0x0);var events={'afterCreate':_0x3d3f('0x4'),'afterUpdate':_0x3d3f('0x5'),'afterDestroy':'remove'};function emitEvent(_0x284fc6){return function(_0x50cdf9,_0x7113a5,_0x5275b6){_0x50cdf9[_0x3d3f('0x6')]({'attributes':['id'],'raw':!![]})[_0x3d3f('0x7')](function(_0x1bf0d8){_0x50cdf9['setDataValue']('Users',_0x1bf0d8[_0x3d3f('0x8')](function(_0x2549bb){return{'id':_0x2549bb['id']};}));return ChatMessage['findAll']({'where':{'ChatInteractionId':_0x50cdf9['id'],'direction':'in','read':![]},'raw':!![]});})[_0x3d3f('0x7')](function(_0x26204f){_0x50cdf9[_0x3d3f('0x9')](_0x3d3f('0xa'),_0x26204f[_0x3d3f('0xb')]);ChatInteractionEvents['emit'](_0x284fc6+':'+_0x50cdf9['id'],_0x50cdf9);ChatInteractionEvents['emit'](_0x284fc6,_0x50cdf9);_0x5275b6(null);})[_0x3d3f('0xc')](_0x5275b6(null));};}for(var e in events){if(events[_0x3d3f('0xd')](e)){var event=events[e];ChatInteraction['hook'](e,emitEvent(event));}}module[_0x3d3f('0xe')]=ChatInteractionEvents;
\ No newline at end of file
index 8638c50..103e908 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0ff=['util','../../config/logger','api','moment','rimraf','../../config/environment','./chatInteraction.attributes','exports','define','chat_interactions','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4_unicode_ci','lodash'];(function(_0x5722d8,_0x43254b){var _0x25b5eb=function(_0x1f16c1){while(--_0x1f16c1){_0x5722d8['push'](_0x5722d8['shift']());}};_0x25b5eb(++_0x43254b);}(_0xb0ff,0x18f));var _0xfb0f=function(_0x1eb8d7,_0x5d1ada){_0x1eb8d7=_0x1eb8d7-0x0;var _0x524a66=_0xb0ff[_0x1eb8d7];return _0x524a66;};'use strict';var _=require(_0xfb0f('0x0'));var util=require(_0xfb0f('0x1'));var logger=require(_0xfb0f('0x2'))(_0xfb0f('0x3'));var moment=require(_0xfb0f('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xfb0f('0x5'));var config=require(_0xfb0f('0x6'));var attributes=require(_0xfb0f('0x7'));module[_0xfb0f('0x8')]=function(_0xa1e6cf,_0x159399){return _0xa1e6cf[_0xfb0f('0x9')]('ChatInteraction',attributes,{'tableName':_0xfb0f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x478f04,_0x1b4fd9,_0x245971){if(_0x478f04[_0xfb0f('0xb')]('closed')){_0x478f04[_0xfb0f('0xc')]=moment()[_0xfb0f('0xd')](_0xfb0f('0xe'));}_0x245971(null,_0x478f04);}},'charset':'utf8mb4','collate':_0xfb0f('0xf')});};
\ No newline at end of file
+var _0xeb73=['chat_interactions','changed','closed','closedAt','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','define','ChatInteraction'];(function(_0x38e52c,_0x2dc310){var _0x2ad38c=function(_0x206750){while(--_0x206750){_0x38e52c['push'](_0x38e52c['shift']());}};_0x2ad38c(++_0x2dc310);}(_0xeb73,0x1be));var _0x3eb7=function(_0x21c6b8,_0x16d6f6){_0x21c6b8=_0x21c6b8-0x0;var _0x39d474=_0xeb73[_0x21c6b8];return _0x39d474;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3eb7('0x0'))(_0x3eb7('0x1'));var moment=require(_0x3eb7('0x2'));var BPromise=require(_0x3eb7('0x3'));var rp=require(_0x3eb7('0x4'));var fs=require('fs');var path=require(_0x3eb7('0x5'));var rimraf=require(_0x3eb7('0x6'));var config=require('../../config/environment');var attributes=require('./chatInteraction.attributes');module['exports']=function(_0x25af8b,_0x932f15){return _0x25af8b[_0x3eb7('0x7')](_0x3eb7('0x8'),attributes,{'tableName':_0x3eb7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x479a97,_0x4bbc08,_0x4f4e7b){if(_0x479a97[_0x3eb7('0xa')](_0x3eb7('0xb'))){_0x479a97[_0x3eb7('0xc')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x4f4e7b(null,_0x479a97);}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index a1bb4e6..152b7e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97da=['limit','then','UpdateChatInteraction','AddTagsToChatInteraction','ids','omit','spread','AddTags','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','./chatInteraction.socket','register','ChatInteraction,\x20%s,\x20%s','debug','stringify','error','message','info','request\x20sent','result','catch','ChatInteraction','update','body','options','where'];(function(_0x476f2f,_0x30dc16){var _0x213a4d=function(_0x4b1219){while(--_0x4b1219){_0x476f2f['push'](_0x476f2f['shift']());}};_0x213a4d(++_0x30dc16);}(_0x97da,0x77));var _0xa97d=function(_0x3612e3,_0x2e0274){_0x3612e3=_0x3612e3-0x0;var _0x169ee1=_0x97da[_0x3612e3];return _0x169ee1;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xa97d('0x0'));var BPromise=require(_0xa97d('0x1'));var rs=require(_0xa97d('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa97d('0x3'))['db'];var utils=require(_0xa97d('0x4'));var logger=require(_0xa97d('0x5'))(_0xa97d('0x6'));var config=require(_0xa97d('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xa97d('0x8')][_0xa97d('0x9')]({'port':0x232a});config[_0xa97d('0xa')]=_[_0xa97d('0xb')](config[_0xa97d('0xa')],{'host':_0xa97d('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa97d('0xa')]));require(_0xa97d('0xd'))[_0xa97d('0xe')](socket);function respondWithRpcPromise(_0xe0f46a,_0x2a33cf,_0x3bb9aa){return new BPromise(function(_0x24895e,_0x3d7b3c){return client['request'](_0xe0f46a,_0x3bb9aa)['then'](function(_0x340506){logger['info'](_0xa97d('0xf'),_0x2a33cf,'request\x20sent');logger[_0xa97d('0x10')]('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x2a33cf,'request\x20sent',JSON[_0xa97d('0x11')](_0x340506));if(_0x340506[_0xa97d('0x12')]){if(_0x340506[_0xa97d('0x12')]['code']===0x1f4){logger[_0xa97d('0x12')]('ChatInteraction,\x20%s,\x20%s',_0x2a33cf,_0x340506[_0xa97d('0x12')][_0xa97d('0x13')]);return _0x3d7b3c(_0x340506['error'][_0xa97d('0x13')]);}logger[_0xa97d('0x12')](_0xa97d('0xf'),_0x2a33cf,_0x340506['error'][_0xa97d('0x13')]);return _0x24895e(_0x340506[_0xa97d('0x12')][_0xa97d('0x13')]);}else{logger[_0xa97d('0x14')]('ChatInteraction,\x20%s,\x20%s',_0x2a33cf,_0xa97d('0x15'));_0x24895e(_0x340506[_0xa97d('0x16')][_0xa97d('0x13')]);}})[_0xa97d('0x17')](function(_0x3df992){logger[_0xa97d('0x12')]('ChatInteraction,\x20%s,\x20%s',_0x2a33cf,_0x3df992);_0x3d7b3c(_0x3df992);});});}exports['UpdateChatInteraction']=function(_0x2b08e4){var _0x369ccb=this;return new Promise(function(_0x464d7c,_0x35164e){return db[_0xa97d('0x18')][_0xa97d('0x19')](_0x2b08e4[_0xa97d('0x1a')],{'raw':_0x2b08e4[_0xa97d('0x1b')]?_0x2b08e4['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2b08e4[_0xa97d('0x1b')]?_0x2b08e4[_0xa97d('0x1b')][_0xa97d('0x1c')]||null:null,'attributes':_0x2b08e4[_0xa97d('0x1b')]?_0x2b08e4[_0xa97d('0x1b')]['attributes']||null:null,'limit':_0x2b08e4[_0xa97d('0x1b')]?_0x2b08e4[_0xa97d('0x1b')][_0xa97d('0x1d')]||null:null})[_0xa97d('0x1e')](function(_0x1f1313){logger[_0xa97d('0x14')]('UpdateChatInteraction',_0x2b08e4);logger[_0xa97d('0x10')](_0xa97d('0x1f'),_0x2b08e4,JSON[_0xa97d('0x11')](_0x1f1313));_0x464d7c(_0x1f1313);})[_0xa97d('0x17')](function(_0x1ce201){logger[_0xa97d('0x12')](_0xa97d('0x1f'),_0x1ce201[_0xa97d('0x13')],_0x2b08e4);_0x35164e(_0x369ccb['error'](0x1f4,_0x1ce201['message']));});});};exports[_0xa97d('0x20')]=function(_0x3514f8){return new Promise(function(_0x2993d8,_0x324571){return db[_0xa97d('0x18')]['find']({'where':_0x3514f8['options']?_0x3514f8[_0xa97d('0x1b')]['where']||null:null})[_0xa97d('0x1e')](function(_0x2eab25){if(_0x2eab25){return _0x2eab25['addTags'](_0x3514f8['body'][_0xa97d('0x21')],_[_0xa97d('0x22')](_0x3514f8['body'],[_0xa97d('0x21'),'id'])||{});}})[_0xa97d('0x23')](function(_0x1f7064){logger['info']('AddTags',_0x3514f8);logger['debug'](_0xa97d('0x24'),_0x3514f8,JSON['stringify'](_0x1f7064));_0x2993d8(_0x1f7064);})[_0xa97d('0x17')](function(_0x2a0bfe){logger[_0xa97d('0x12')](_0xa97d('0x24'),_0x2a0bfe[_0xa97d('0x13')],_0x3514f8);_0x324571(_this[_0xa97d('0x12')](0x1f4,_0x2a0bfe[_0xa97d('0x13')]));});});};
\ No newline at end of file
+var _0xa0dd=['error','code','message','UpdateChatInteraction','ChatInteraction','update','body','options','raw','where','attributes','limit','catch','find','then','ids','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','request','info','ChatInteraction,\x20%s,\x20%s','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x1bdd60,_0x4b3a66){var _0x280b29=function(_0x38a5d3){while(--_0x38a5d3){_0x1bdd60['push'](_0x1bdd60['shift']());}};_0x280b29(++_0x4b3a66);}(_0xa0dd,0x1c1));var _0xda0d=function(_0x1fbde0,_0x5096f8){_0x1fbde0=_0x1fbde0-0x0;var _0x450d81=_0xa0dd[_0x1fbde0];return _0x450d81;};'use strict';var _=require(_0xda0d('0x0'));var util=require(_0xda0d('0x1'));var moment=require(_0xda0d('0x2'));var BPromise=require(_0xda0d('0x3'));var rs=require(_0xda0d('0x4'));var fs=require('fs');var Redis=require(_0xda0d('0x5'));var db=require(_0xda0d('0x6'))['db'];var utils=require(_0xda0d('0x7'));var logger=require('../../config/logger')(_0xda0d('0x8'));var config=require(_0xda0d('0x9'));var jayson=require(_0xda0d('0xa'));var client=jayson['client'][_0xda0d('0xb')]({'port':0x232a});config[_0xda0d('0xc')]=_['defaults'](config[_0xda0d('0xc')],{'host':_0xda0d('0xd'),'port':0x18eb});var socket=require(_0xda0d('0xe'))(new Redis(config[_0xda0d('0xc')]));require(_0xda0d('0xf'))[_0xda0d('0x10')](socket);function respondWithRpcPromise(_0x5498a5,_0x158071,_0x3ac457){return new BPromise(function(_0x330aaa,_0x4c8875){return client[_0xda0d('0x11')](_0x5498a5,_0x3ac457)['then'](function(_0x4b8c22){logger[_0xda0d('0x12')](_0xda0d('0x13'),_0x158071,'request\x20sent');logger[_0xda0d('0x14')](_0xda0d('0x15'),_0x158071,_0xda0d('0x16'),JSON[_0xda0d('0x17')](_0x4b8c22));if(_0x4b8c22[_0xda0d('0x18')]){if(_0x4b8c22[_0xda0d('0x18')][_0xda0d('0x19')]===0x1f4){logger[_0xda0d('0x18')](_0xda0d('0x13'),_0x158071,_0x4b8c22['error'][_0xda0d('0x1a')]);return _0x4c8875(_0x4b8c22['error'][_0xda0d('0x1a')]);}logger['error']('ChatInteraction,\x20%s,\x20%s',_0x158071,_0x4b8c22[_0xda0d('0x18')][_0xda0d('0x1a')]);return _0x330aaa(_0x4b8c22[_0xda0d('0x18')][_0xda0d('0x1a')]);}else{logger[_0xda0d('0x12')]('ChatInteraction,\x20%s,\x20%s',_0x158071,_0xda0d('0x16'));_0x330aaa(_0x4b8c22['result'][_0xda0d('0x1a')]);}})['catch'](function(_0x344f7b){logger[_0xda0d('0x18')](_0xda0d('0x13'),_0x158071,_0x344f7b);_0x4c8875(_0x344f7b);});});}exports[_0xda0d('0x1b')]=function(_0x107a81){var _0x1208d6=this;return new Promise(function(_0x5d5012,_0x5149f3){return db[_0xda0d('0x1c')][_0xda0d('0x1d')](_0x107a81[_0xda0d('0x1e')],{'raw':_0x107a81[_0xda0d('0x1f')]?_0x107a81[_0xda0d('0x1f')][_0xda0d('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x107a81[_0xda0d('0x1f')]?_0x107a81[_0xda0d('0x1f')][_0xda0d('0x21')]||null:null,'attributes':_0x107a81[_0xda0d('0x1f')]?_0x107a81[_0xda0d('0x1f')][_0xda0d('0x22')]||null:null,'limit':_0x107a81[_0xda0d('0x1f')]?_0x107a81['options'][_0xda0d('0x23')]||null:null})['then'](function(_0x2e27f1){logger['info']('UpdateChatInteraction',_0x107a81);logger[_0xda0d('0x14')](_0xda0d('0x1b'),_0x107a81,JSON[_0xda0d('0x17')](_0x2e27f1));_0x5d5012(_0x2e27f1);})[_0xda0d('0x24')](function(_0xeed002){logger['error'](_0xda0d('0x1b'),_0xeed002[_0xda0d('0x1a')],_0x107a81);_0x5149f3(_0x1208d6[_0xda0d('0x18')](0x1f4,_0xeed002['message']));});});};exports['AddTagsToChatInteraction']=function(_0x25f895){return new Promise(function(_0x95c1da,_0x546a9a){return db[_0xda0d('0x1c')][_0xda0d('0x25')]({'where':_0x25f895[_0xda0d('0x1f')]?_0x25f895['options'][_0xda0d('0x21')]||null:null})[_0xda0d('0x26')](function(_0x31b52f){if(_0x31b52f){return _0x31b52f['addTags'](_0x25f895[_0xda0d('0x1e')][_0xda0d('0x27')],_[_0xda0d('0x28')](_0x25f895[_0xda0d('0x1e')],[_0xda0d('0x27'),'id'])||{});}})[_0xda0d('0x29')](function(_0x4a36ba){logger['info'](_0xda0d('0x2a'),_0x25f895);logger[_0xda0d('0x14')]('AddTags',_0x25f895,JSON[_0xda0d('0x17')](_0x4a36ba));_0x95c1da(_0x4a36ba);})['catch'](function(_0x2e4399){logger[_0xda0d('0x18')](_0xda0d('0x2a'),_0x2e4399[_0xda0d('0x1a')],_0x25f895);_0x546a9a(_this[_0xda0d('0x18')](0x1f4,_0x2e4399['message']));});});};
\ No newline at end of file
index a25c960..4a0e92c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b21=['removeListener','register','length','chatInteraction:','save','remove','update'];(function(_0xc6e86,_0x2e17d0){var _0x5f0d0c=function(_0x38ca85){while(--_0x38ca85){_0xc6e86['push'](_0xc6e86['shift']());}};_0x5f0d0c(++_0x2e17d0);}(_0x7b21,0x10e));var _0x17b2=function(_0x3864a5,_0x4ef2f8){_0x3864a5=_0x3864a5-0x0;var _0x1e58b1=_0x7b21[_0x3864a5];return _0x1e58b1;};'use strict';var ChatInteractionEvents=require('./chatInteraction.events');var events=[_0x17b2('0x0'),_0x17b2('0x1'),_0x17b2('0x2')];function createListener(_0x240ddf,_0x62573d){return function(_0x46d851){_0x62573d['emit'](_0x240ddf,_0x46d851);};}function removeListener(_0x9a8535,_0x386bdf){return function(){ChatInteractionEvents[_0x17b2('0x3')](_0x9a8535,_0x386bdf);};}exports[_0x17b2('0x4')]=function(_0x55df02){for(var _0x18ee4c=0x0,_0x45970c=events[_0x17b2('0x5')];_0x18ee4c<_0x45970c;_0x18ee4c++){var _0x551187=events[_0x18ee4c];var _0x8f1e58=createListener(_0x17b2('0x6')+_0x551187,_0x55df02);ChatInteractionEvents['on'](_0x551187,_0x8f1e58);}};
\ No newline at end of file
+var _0x1c15=['remove','update','emit','removeListener','length','chatInteraction:','./chatInteraction.events','save'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0x1c15,0x1a6));var _0x51c1=function(_0x5efb91,_0x39b378){_0x5efb91=_0x5efb91-0x0;var _0x57ff36=_0x1c15[_0x5efb91];return _0x57ff36;};'use strict';var ChatInteractionEvents=require(_0x51c1('0x0'));var events=[_0x51c1('0x1'),_0x51c1('0x2'),_0x51c1('0x3')];function createListener(_0x5352b4,_0x4f2bd5){return function(_0x2921d6){_0x4f2bd5[_0x51c1('0x4')](_0x5352b4,_0x2921d6);};}function removeListener(_0x4f26f1,_0x38985a){return function(){ChatInteractionEvents[_0x51c1('0x5')](_0x4f26f1,_0x38985a);};}exports['register']=function(_0x30d4c6){for(var _0x563806=0x0,_0x288536=events[_0x51c1('0x6')];_0x563806<_0x288536;_0x563806++){var _0xa250a8=events[_0x563806];var _0x59331b=createListener(_0x51c1('0x7')+_0xa250a8,_0x30d4c6);ChatInteractionEvents['on'](_0xa250a8,_0x59331b);}};
\ No newline at end of file
index e17289a..7c45f3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8a0=['single','attachmentUpload','/:id/messages','addMessage','/:id/tags','chat','addTags','put','chatinteraction:update','update','/:id/custom_update','customUpdate','abandon','/:id/close','close','delete','tracked','destroy','removeTags','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','get','index','/describe','isAuthenticated','describe','/:id','isChatInteractionAuthorized','/:id/attachment_download','attachmentDownload','getMessages','/:id/my_messages','/:id/download','post','create','/:id/vidaoo','diskStorage','join','root','server/files/attachments/','format','%s-%s','replace','/:id/attachment_upload'];(function(_0x21deac,_0x566467){var _0x52f42a=function(_0x23333d){while(--_0x23333d){_0x21deac['push'](_0x21deac['shift']());}};_0x52f42a(++_0x566467);}(_0xd8a0,0x1cd));var _0x0d8a=function(_0x38dacf,_0x3449d7){_0x38dacf=_0x38dacf-0x0;var _0x54f8bf=_0xd8a0[_0x38dacf];return _0x54f8bf;};'use strict';var multer=require(_0x0d8a('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x0d8a('0x1'));var express=require(_0x0d8a('0x2'));var router=express[_0x0d8a('0x3')]();var fs_extra=require(_0x0d8a('0x4'));var auth=require(_0x0d8a('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./chatInteraction.controller');router[_0x0d8a('0x6')]('/',auth['isAuthenticated'](),controller[_0x0d8a('0x7')]);router[_0x0d8a('0x6')](_0x0d8a('0x8'),auth[_0x0d8a('0x9')](),controller[_0x0d8a('0xa')]);router['get'](_0x0d8a('0xb'),auth[_0x0d8a('0xc')](),controller['show']);router[_0x0d8a('0x6')](_0x0d8a('0xd'),auth[_0x0d8a('0xc')](),controller[_0x0d8a('0xe')]);router[_0x0d8a('0x6')]('/:id/messages',auth['isAuthenticated'](),controller[_0x0d8a('0xf')]);router[_0x0d8a('0x6')](_0x0d8a('0x10'),auth[_0x0d8a('0xc')](),controller['getMyMessages']);router[_0x0d8a('0x6')](_0x0d8a('0x11'),auth[_0x0d8a('0x9')](),controller['download']);router[_0x0d8a('0x12')]('/',auth[_0x0d8a('0x9')](),controller[_0x0d8a('0x13')]);router[_0x0d8a('0x12')](_0x0d8a('0x14'),auth['isAuthenticated'](),controller['createVidaooSession']);var upload=multer({'storage':multer[_0x0d8a('0x15')]({'destination':function(_0x37ab2d,_0x1eb391,_0x344ee7){_0x344ee7(null,path[_0x0d8a('0x16')](config[_0x0d8a('0x17')],_0x0d8a('0x18')));},'filename':function(_0x513bcd,_0x389c9f,_0x3e6545){_0x3e6545(null,util[_0x0d8a('0x19')](_0x0d8a('0x1a'),Date['now'](),_0x389c9f['originalname'][_0x0d8a('0x1b')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x0d8a('0x12')](_0x0d8a('0x1c'),upload[_0x0d8a('0x1d')]('file'),controller[_0x0d8a('0x1e')]);router[_0x0d8a('0x12')](_0x0d8a('0x1f'),auth[_0x0d8a('0xc')](),controller[_0x0d8a('0x20')]);router[_0x0d8a('0x12')](_0x0d8a('0x21'),auth[_0x0d8a('0x9')](),interaction['tracked'](_0x0d8a('0x22'),'chatinteraction:addtags'),controller[_0x0d8a('0x23')]);router[_0x0d8a('0x24')](_0x0d8a('0xb'),auth[_0x0d8a('0x9')](),interaction['tracked'](_0x0d8a('0x22'),_0x0d8a('0x25')),controller[_0x0d8a('0x26')]);router[_0x0d8a('0x24')](_0x0d8a('0x27'),controller[_0x0d8a('0x28')]);router['put']('/:id/abandon',auth['isChatInteractionAuthorized'](),controller[_0x0d8a('0x29')]);router['put'](_0x0d8a('0x2a'),controller[_0x0d8a('0x2b')]);router[_0x0d8a('0x2c')](_0x0d8a('0xb'),auth[_0x0d8a('0x9')](),interaction[_0x0d8a('0x2d')](_0x0d8a('0x22'),'chatinteraction:destroy'),controller[_0x0d8a('0x2e')]);router[_0x0d8a('0x2c')]('/:id/tags',auth[_0x0d8a('0x9')](),controller[_0x0d8a('0x2f')]);module[_0x0d8a('0x30')]=router;
\ No newline at end of file
+var _0x2bf8=['file','/:id/messages','addMessage','/:id/tags','tracked','chat','put','chatinteraction:update','update','/:id/custom_update','/:id/abandon','abandon','/:id/close','close','delete','chatinteraction:destroy','destroy','removeTags','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','index','get','isAuthenticated','describe','/:id','show','/:id/attachment_download','isChatInteractionAuthorized','attachmentDownload','/:id/my_messages','getMyMessages','post','create','/:id/vidaoo','createVidaooSession','diskStorage','root','server/files/attachments/','format','originalname','replace','/:id/attachment_upload','single'];(function(_0x169e53,_0x46be55){var _0x252bb3=function(_0x521e7a){while(--_0x521e7a){_0x169e53['push'](_0x169e53['shift']());}};_0x252bb3(++_0x46be55);}(_0x2bf8,0x1d5));var _0x82bf=function(_0x50dfda,_0x2b5c1b){_0x50dfda=_0x50dfda-0x0;var _0xba6062=_0x2bf8[_0x50dfda];return _0xba6062;};'use strict';var multer=require('multer');var util=require(_0x82bf('0x0'));var path=require('path');var timeout=require(_0x82bf('0x1'));var express=require(_0x82bf('0x2'));var router=express[_0x82bf('0x3')]();var fs_extra=require(_0x82bf('0x4'));var auth=require(_0x82bf('0x5'));var interaction=require(_0x82bf('0x6'));var config=require(_0x82bf('0x7'));var controller=require('./chatInteraction.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x82bf('0x8')]);router[_0x82bf('0x9')]('/describe',auth[_0x82bf('0xa')](),controller[_0x82bf('0xb')]);router['get'](_0x82bf('0xc'),auth['isChatInteractionAuthorized'](),controller[_0x82bf('0xd')]);router[_0x82bf('0x9')](_0x82bf('0xe'),auth[_0x82bf('0xf')](),controller[_0x82bf('0x10')]);router[_0x82bf('0x9')]('/:id/messages',auth[_0x82bf('0xa')](),controller['getMessages']);router['get'](_0x82bf('0x11'),auth['isChatInteractionAuthorized'](),controller[_0x82bf('0x12')]);router[_0x82bf('0x9')]('/:id/download',auth[_0x82bf('0xa')](),controller['download']);router[_0x82bf('0x13')]('/',auth[_0x82bf('0xa')](),controller[_0x82bf('0x14')]);router['post'](_0x82bf('0x15'),auth['isAuthenticated'](),controller[_0x82bf('0x16')]);var upload=multer({'storage':multer[_0x82bf('0x17')]({'destination':function(_0x123a1c,_0x364d3d,_0x161441){_0x161441(null,path['join'](config[_0x82bf('0x18')],_0x82bf('0x19')));},'filename':function(_0x1216b4,_0x114685,_0x1c054d){_0x1c054d(null,util[_0x82bf('0x1a')]('%s-%s',Date['now'](),_0x114685[_0x82bf('0x1b')][_0x82bf('0x1c')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x82bf('0x13')](_0x82bf('0x1d'),upload[_0x82bf('0x1e')](_0x82bf('0x1f')),controller['attachmentUpload']);router[_0x82bf('0x13')](_0x82bf('0x20'),auth[_0x82bf('0xf')](),controller[_0x82bf('0x21')]);router[_0x82bf('0x13')](_0x82bf('0x22'),auth[_0x82bf('0xa')](),interaction[_0x82bf('0x23')](_0x82bf('0x24'),'chatinteraction:addtags'),controller['addTags']);router[_0x82bf('0x25')](_0x82bf('0xc'),auth[_0x82bf('0xa')](),interaction[_0x82bf('0x23')]('chat',_0x82bf('0x26')),controller[_0x82bf('0x27')]);router[_0x82bf('0x25')](_0x82bf('0x28'),controller['customUpdate']);router['put'](_0x82bf('0x29'),auth[_0x82bf('0xf')](),controller[_0x82bf('0x2a')]);router[_0x82bf('0x25')](_0x82bf('0x2b'),controller[_0x82bf('0x2c')]);router[_0x82bf('0x2d')](_0x82bf('0xc'),auth['isAuthenticated'](),interaction[_0x82bf('0x23')](_0x82bf('0x24'),_0x82bf('0x2e')),controller[_0x82bf('0x2f')]);router[_0x82bf('0x2d')](_0x82bf('0x22'),auth[_0x82bf('0xa')](),controller[_0x82bf('0x30')]);module[_0x82bf('0x31')]=router;
\ No newline at end of file
index 9e42888..6b8efc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ea4=['TEXT','BOOLEAN','sequelize','exports'];(function(_0x5f523e,_0x6ff2c1){var _0x542965=function(_0xe9efe8){while(--_0xe9efe8){_0x5f523e['push'](_0x5f523e['shift']());}};_0x542965(++_0x6ff2c1);}(_0x9ea4,0xca));var _0x49ea=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x9ea4[_0xfae23b];return _0x200640;};'use strict';var Sequelize=require(_0x49ea('0x0'));module[_0x49ea('0x1')]={'body':{'type':Sequelize[_0x49ea('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x49ea('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x1d6c=['TEXT','sequelize','exports'];(function(_0x19311a,_0x2d2679){var _0x42617c=function(_0x43227d){while(--_0x43227d){_0x19311a['push'](_0x19311a['shift']());}};_0x42617c(++_0x2d2679);}(_0x1d6c,0x1cf));var _0xc1d6=function(_0x1f8349,_0x55db28){_0x1f8349=_0x1f8349-0x0;var _0x3d80ea=_0x1d6c[_0x1f8349];return _0x3d80ea;};'use strict';var Sequelize=require(_0xc1d6('0x0'));module[_0xc1d6('0x1')]={'body':{'type':Sequelize[_0xc1d6('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 1f522a4..cee316a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1240=['send','index','map','ChatInternalMessage','rawAttributes','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','length','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','rows','catch','show','params','create','body','find','destroy','describe','get','messages','createdAt','lastMessage','lastMessageAt','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','findAll','agent','user','fullname','role','online','lastLoginAt','showWebBar','-online','VoiceQueue','VoiceQueues','UserProfileSection','Agents','userProfileId','autoAssociation','UserProfileResource','isEmpty','resourceId','push','FromId','read','eml-format','rimraf','fast-json-patch','moment','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','error','name'];(function(_0x272d97,_0x3cb745){var _0x40fc01=function(_0x1ad071){while(--_0x1ad071){_0x272d97['push'](_0x272d97['shift']());}};_0x40fc01(++_0x3cb745);}(_0x1240,0xa8));var _0x0124=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0x1240[_0x243b59];return _0x3e1676;};'use strict';var emlformat=require(_0x0124('0x0'));var rimraf=require(_0x0124('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0124('0x2'));var rp=require('request-promise');var moment=require(_0x0124('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0124('0x4'));var util=require('util');var path=require('path');var sox=require(_0x0124('0x5'));var csv=require(_0x0124('0x6'));var ejs=require(_0x0124('0x7'));var fs=require('fs');var fs_extra=require(_0x0124('0x8'));var _=require(_0x0124('0x9'));var squel=require(_0x0124('0xa'));var crypto=require(_0x0124('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x0124('0xc'));var toCsv=require(_0x0124('0x6'));var querystring=require(_0x0124('0xd'));var Papa=require(_0x0124('0xe'));var Redis=require(_0x0124('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x0124('0x10'));var hardwareService=require(_0x0124('0x11'));var logger=require(_0x0124('0x12'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0124('0x13'));var db=require(_0x0124('0x14'))['db'];config[_0x0124('0x15')]=_['defaults'](config['redis'],{'host':_0x0124('0x16'),'port':0x18eb});var socket=require(_0x0124('0x17'))(new Redis(config[_0x0124('0x15')]));require(_0x0124('0x18'))[_0x0124('0x19')](socket);function respondWithStatusCode(_0x4163a9,_0x19f5c3){_0x19f5c3=_0x19f5c3||0xcc;return function(_0x10b8f2){if(_0x10b8f2){return _0x4163a9[_0x0124('0x1a')](_0x19f5c3);}return _0x4163a9[_0x0124('0x1b')](_0x19f5c3)[_0x0124('0x1c')]();};}function respondWithResult(_0x5b4561,_0x3efe7d){_0x3efe7d=_0x3efe7d||0xc8;return function(_0x18571a){if(_0x18571a){return _0x5b4561[_0x0124('0x1b')](_0x3efe7d)[_0x0124('0x1d')](_0x18571a);}};}function respondWithFilteredResult(_0x864ab1,_0x2a13ea){return function(_0xb58977){if(_0xb58977){var _0x1a0262=typeof _0x2a13ea[_0x0124('0x1e')]===_0x0124('0x1f')&&typeof _0x2a13ea[_0x0124('0x20')]===_0x0124('0x1f');var _0x2d3f11=_0xb58977[_0x0124('0x21')];var _0x37ef2e=_0x1a0262?0x0:_0x2a13ea[_0x0124('0x1e')];var _0x586f30=_0x1a0262?_0xb58977['count']:_0x2a13ea['offset']+_0x2a13ea[_0x0124('0x20')];var _0x456ebb;if(_0x586f30>=_0x2d3f11){_0x586f30=_0x2d3f11;_0x456ebb=0xc8;}else{_0x456ebb=0xce;}_0x864ab1[_0x0124('0x1b')](_0x456ebb);return _0x864ab1[_0x0124('0x22')](_0x0124('0x23'),_0x37ef2e+'-'+_0x586f30+'/'+_0x2d3f11)['json'](_0xb58977);}return null;};}function patchUpdates(_0x2a1fe1){return function(_0x5773d2){try{jsonpatch[_0x0124('0x24')](_0x5773d2,_0x2a1fe1,!![]);}catch(_0xc8e862){return BPromise['reject'](_0xc8e862);}return _0x5773d2[_0x0124('0x25')]();};}function saveUpdates(_0x2741f0,_0x3d34de){return function(_0x4067a0){if(_0x4067a0){return _0x4067a0[_0x0124('0x26')](_0x2741f0)[_0x0124('0x27')](function(_0x1e5c0b){return _0x1e5c0b;});}return null;};}function removeEntity(_0x238238,_0x1d3bbf){return function(_0x2426ee){if(_0x2426ee){return _0x2426ee['destroy']()[_0x0124('0x27')](function(){_0x238238[_0x0124('0x1b')](0xcc)[_0x0124('0x1c')]();});}};}function handleEntityNotFound(_0x57114f,_0x30ce77){return function(_0xd161b9){if(!_0xd161b9){_0x57114f['sendStatus'](0x194);}return _0xd161b9;};}function handleError(_0xb4fc5c,_0xa3f02a){_0xa3f02a=_0xa3f02a||0x1f4;return function(_0x57bf41){logger[_0x0124('0x28')](_0x57bf41['stack']);if(_0x57bf41[_0x0124('0x29')]){delete _0x57bf41[_0x0124('0x29')];}_0xb4fc5c[_0x0124('0x1b')](_0xa3f02a)[_0x0124('0x2a')](_0x57bf41);};}exports[_0x0124('0x2b')]=function(_0x5e59aa,_0x148ff9){var _0x4129a0={},_0x2234b2={},_0xd270b0={'count':0x0,'rows':[]};var _0x1a3b29=_[_0x0124('0x2c')](db[_0x0124('0x2d')][_0x0124('0x2e')],function(_0x5ab724){return{'name':_0x5ab724[_0x0124('0x2f')],'type':_0x5ab724[_0x0124('0x30')][_0x0124('0x31')]};});_0x2234b2['model']=_[_0x0124('0x2c')](_0x1a3b29,_0x0124('0x29'));_0x2234b2[_0x0124('0x32')]=_[_0x0124('0x33')](_0x5e59aa[_0x0124('0x32')]);_0x2234b2[_0x0124('0x34')]=_['intersection'](_0x2234b2[_0x0124('0x35')],_0x2234b2[_0x0124('0x32')]);_0x4129a0[_0x0124('0x36')]=_[_0x0124('0x37')](_0x2234b2[_0x0124('0x35')],qs[_0x0124('0x38')](_0x5e59aa[_0x0124('0x32')]['fields']));_0x4129a0[_0x0124('0x36')]=_0x4129a0[_0x0124('0x36')][_0x0124('0x39')]?_0x4129a0[_0x0124('0x36')]:_0x2234b2[_0x0124('0x35')];if(!_0x5e59aa[_0x0124('0x32')]['hasOwnProperty'](_0x0124('0x3a'))){_0x4129a0[_0x0124('0x20')]=qs[_0x0124('0x20')](_0x5e59aa[_0x0124('0x32')][_0x0124('0x20')]);_0x4129a0[_0x0124('0x1e')]=qs['offset'](_0x5e59aa[_0x0124('0x32')][_0x0124('0x1e')]);}_0x4129a0['order']=qs[_0x0124('0x3b')](_0x5e59aa[_0x0124('0x32')][_0x0124('0x3b')]);_0x4129a0['where']=qs['filters'](_[_0x0124('0x3c')](_0x5e59aa['query'],_0x2234b2['filters']),_0x1a3b29);if(_0x5e59aa[_0x0124('0x32')][_0x0124('0x3d')]){_0x4129a0[_0x0124('0x3e')]=_[_0x0124('0x3f')](_0x4129a0[_0x0124('0x3e')],{'$or':_[_0x0124('0x2c')](_0x1a3b29,function(_0x59f124){if(_0x59f124[_0x0124('0x30')]!==_0x0124('0x40')){var _0xa8a8b3={};_0xa8a8b3[_0x59f124[_0x0124('0x29')]]={'$like':'%'+_0x5e59aa[_0x0124('0x32')]['filter']+'%'};return _0xa8a8b3;}})});}_0x4129a0=_[_0x0124('0x3f')]({},_0x4129a0,_0x5e59aa[_0x0124('0x41')]);var _0x331546={'where':_0x4129a0[_0x0124('0x3e')]};return db[_0x0124('0x2d')][_0x0124('0x21')](_0x331546)['then'](function(_0x58b4c5){_0xd270b0['count']=_0x58b4c5;if(_0x5e59aa['query'][_0x0124('0x42')]){_0x4129a0['include']=[{'all':!![]}];}return db[_0x0124('0x2d')]['findAll'](_0x4129a0);})[_0x0124('0x27')](function(_0x324d21){_0xd270b0[_0x0124('0x43')]=_0x324d21;return _0xd270b0;})[_0x0124('0x27')](respondWithFilteredResult(_0x148ff9,_0x4129a0))[_0x0124('0x44')](handleError(_0x148ff9,null));};exports[_0x0124('0x45')]=function(_0x1fc9b5,_0x3a4e8b){var _0x38047f={'raw':!![],'where':{'id':_0x1fc9b5[_0x0124('0x46')]['id']}},_0xbfe93={};_0xbfe93[_0x0124('0x35')]=_[_0x0124('0x33')](db[_0x0124('0x2d')][_0x0124('0x2e')]);_0xbfe93[_0x0124('0x32')]=_[_0x0124('0x33')](_0x1fc9b5['query']);_0xbfe93[_0x0124('0x34')]=_['intersection'](_0xbfe93[_0x0124('0x35')],_0xbfe93['query']);_0x38047f['attributes']=_[_0x0124('0x37')](_0xbfe93[_0x0124('0x35')],qs['fields'](_0x1fc9b5[_0x0124('0x32')][_0x0124('0x38')]));_0x38047f[_0x0124('0x36')]=_0x38047f[_0x0124('0x36')][_0x0124('0x39')]?_0x38047f['attributes']:_0xbfe93['model'];if(_0x1fc9b5[_0x0124('0x32')][_0x0124('0x42')]){_0x38047f['include']=[{'all':!![]}];}_0x38047f=_['merge']({},_0x38047f,_0x1fc9b5[_0x0124('0x41')]);return db[_0x0124('0x2d')]['find'](_0x38047f)[_0x0124('0x27')](handleEntityNotFound(_0x3a4e8b,null))[_0x0124('0x27')](respondWithResult(_0x3a4e8b,null))['catch'](handleError(_0x3a4e8b,null));};exports['create']=function(_0x16fa55,_0x22cfa2){return db[_0x0124('0x2d')][_0x0124('0x47')](_0x16fa55[_0x0124('0x48')],{})['then'](respondWithResult(_0x22cfa2,0xc9))[_0x0124('0x44')](handleError(_0x22cfa2,null));};exports[_0x0124('0x26')]=function(_0x465da8,_0x4b27e7){if(_0x465da8[_0x0124('0x48')]['id']){delete _0x465da8[_0x0124('0x48')]['id'];}return db[_0x0124('0x2d')][_0x0124('0x49')]({'where':{'id':_0x465da8['params']['id']}})[_0x0124('0x27')](handleEntityNotFound(_0x4b27e7,null))[_0x0124('0x27')](saveUpdates(_0x465da8[_0x0124('0x48')],null))[_0x0124('0x27')](respondWithResult(_0x4b27e7,null))['catch'](handleError(_0x4b27e7,null));};exports[_0x0124('0x4a')]=function(_0x21bcbe,_0x1409cb){return db['ChatInternalMessage']['find']({'where':{'id':_0x21bcbe[_0x0124('0x46')]['id']}})['then'](handleEntityNotFound(_0x1409cb,null))[_0x0124('0x27')](removeEntity(_0x1409cb,null))[_0x0124('0x44')](handleError(_0x1409cb,null));};exports[_0x0124('0x4b')]=function(_0x1efefc,_0x5c83b3){return db[_0x0124('0x2d')]['describe']()['then'](respondWithResult(_0x5c83b3,null))[_0x0124('0x44')](handleError(_0x5c83b3,null));};function wrapUser(_0x5f23a5){return function(_0x3faf91){var _0x52c4fd=_0x5f23a5[_0x0124('0x4c')]({'plain':!![]});_0x52c4fd[_0x0124('0x4d')]=[];if(_0x3faf91){_0x52c4fd['lastMessageAt']=_0x3faf91[_0x0124('0x4e')];_0x52c4fd[_0x0124('0x4f')]=_0x3faf91;}else{_0x52c4fd[_0x0124('0x50')]=moment(0x0)[_0x0124('0x51')](_0x0124('0x52'));_0x52c4fd[_0x0124('0x4f')]={};}return _0x52c4fd;};}exports[_0x0124('0x53')]=function(_0x318aeb,_0x4c8f73,_0x5e4888){var _0x5b046e=[];return db['User'][_0x0124('0x54')]({'where':{'role':[_0x0124('0x55'),'admin',_0x0124('0x56')]},'attributes':['id',_0x0124('0x57'),'name',_0x0124('0x58'),'userpic','internal',_0x0124('0x59'),_0x0124('0x5a'),'allowmessenger',_0x0124('0x5b')],'order':qs[_0x0124('0x3b')](_0x0124('0x5c')),'include':[{'model':db[_0x0124('0x5d')],'as':_0x0124('0x5e'),'attributes':['id','name',_0x0124('0x30')],'through':{'attributes':[]}}]})[_0x0124('0x27')](function(_0x27d3b5){if(_0x27d3b5){var _0xa8105b=_0x318aeb[_0x0124('0x56')][_0x0124('0x4c')]({'plain':!![]});if(!_0xa8105b)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xa8105b[_0x0124('0x58')]===_0x0124('0x56')){return db[_0x0124('0x5f')][_0x0124('0x49')]({'where':{'name':_0x0124('0x60'),'userProfileId':_0xa8105b[_0x0124('0x61')]},'raw':!![]})[_0x0124('0x27')](function(_0x24934f){if(_0x24934f){if(_0x24934f[_0x0124('0x62')]===0x0){return db[_0x0124('0x63')]['findAll']({'where':{'sectionId':_0x24934f['id']},'raw':!![]})[_0x0124('0x27')](function(_0x3cbcb8){var _0x3ca0ed=[];if(_[_0x0124('0x64')](_0x3cbcb8)){_0x3ca0ed=_[_0x0124('0x3d')](_0x27d3b5,function(_0x1581bc){if(_0x1581bc[_0x0124('0x58')]!=='agent'){return _0x1581bc;}});return _0x3ca0ed;}else{for(var _0x119485=0x0;_0x119485<_0x27d3b5[_0x0124('0x39')];_0x119485++){var _0x27fbaf=_0x27d3b5[_0x119485];if(_0x27fbaf[_0x0124('0x58')]===_0x0124('0x55')){var _0x2d9119=_[_0x0124('0x49')](_0x3cbcb8,function(_0x3a2afa){return _0x3a2afa[_0x0124('0x65')]===_0x27fbaf['id'];});if(_0x2d9119)_0x3ca0ed[_0x0124('0x66')](_0x27fbaf);}else{_0x3ca0ed[_0x0124('0x66')](_0x27fbaf);}}return _0x3ca0ed;}});}else{return _0x27d3b5;}}else{var _0x261ed1=_[_0x0124('0x3d')](_0x27d3b5,function(_0x33cc92){if(_0x33cc92[_0x0124('0x58')]!=='agent'){return _0x33cc92;}});return _0x261ed1;}});}else{return _0x27d3b5;}}})[_0x0124('0x27')](function(_0x283fe4){var _0x113c9b=[];if(_0x283fe4){_0x5b046e=_0x283fe4;for(var _0x264300=0x0;_0x264300<_0x283fe4[_0x0124('0x39')];_0x264300+=0x1){_0x5b046e[_0x264300][_0x0124('0x4d')]=[];_0x113c9b[_0x0124('0x66')](db[_0x0124('0x2d')]['find']({'where':{'FromId':[_0x318aeb['user']['id'],_0x283fe4[_0x264300]['id']],'ToId':[_0x318aeb[_0x0124('0x56')]['id'],_0x283fe4[_0x264300]['id']],'ChatGroupId':null},'attributes':['id',_0x0124('0x4e'),_0x0124('0x67'),'ToId',_0x0124('0x68'),_0x0124('0x48')],'order':qs[_0x0124('0x3b')]('-createdAt'),'limit':0x1,'offset':0x0,'raw':!![]})[_0x0124('0x27')](wrapUser(_0x283fe4[_0x264300])));}return BPromise['all'](_0x113c9b);}return[];})['then'](function(_0x16739d){return{'rows':_0x16739d,'count':_0x16739d[_0x0124('0x39')]};})[_0x0124('0x27')](respondWithResult(_0x4c8f73,null))['catch'](handleError(_0x4c8f73,null));};
\ No newline at end of file
+var _0xd881=['get','messages','lastMessage','lastMessageAt','format','YYYY-MM-DD\x20HH:mm:ss','User','agent','admin','fullname','role','userpic','internal','allowmessenger','showWebBar','-online','VoiceQueue','VoiceQueues','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','userProfileId','UserProfileResource','isEmpty','resourceId','push','createdAt','FromId','ToId','read','-createdAt','all','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','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/license/util','redis','defaults','register','sendStatus','status','json','offset','undefined','count','set','Content-Range','apply','reject','save','then','destroy','end','error','stack','name','send','index','rawAttributes','fieldName','type','key','map','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filters','filter','merge','options','includeAll','include','ChatInternalMessage','findAll','rows','catch','show','params','find','create','body','update','describe'];(function(_0x30ad63,_0x288713){var _0x5c5e21=function(_0x16a60b){while(--_0x16a60b){_0x30ad63['push'](_0x30ad63['shift']());}};_0x5c5e21(++_0x288713);}(_0xd881,0x95));var _0x1d88=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xd881[_0x4b369d];return _0x571a98;};'use strict';var emlformat=require(_0x1d88('0x0'));var rimraf=require(_0x1d88('0x1'));var zipdir=require(_0x1d88('0x2'));var jsonpatch=require(_0x1d88('0x3'));var rp=require(_0x1d88('0x4'));var moment=require(_0x1d88('0x5'));var BPromise=require(_0x1d88('0x6'));var Mustache=require('mustache');var util=require(_0x1d88('0x7'));var path=require(_0x1d88('0x8'));var sox=require('sox');var csv=require(_0x1d88('0x9'));var ejs=require(_0x1d88('0xa'));var fs=require('fs');var fs_extra=require(_0x1d88('0xb'));var _=require(_0x1d88('0xc'));var squel=require(_0x1d88('0xd'));var crypto=require(_0x1d88('0xe'));var jsforce=require(_0x1d88('0xf'));var deskjs=require(_0x1d88('0x10'));var toCsv=require(_0x1d88('0x9'));var querystring=require(_0x1d88('0x11'));var Papa=require('papaparse');var Redis=require(_0x1d88('0x12'));var authService=require(_0x1d88('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x1d88('0x14'));var hardwareService=require(_0x1d88('0x15'));var logger=require(_0x1d88('0x16'))(_0x1d88('0x17'));var utils=require(_0x1d88('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x1d88('0x19'));var db=require('../../mysqldb')['db'];config[_0x1d88('0x1a')]=_[_0x1d88('0x1b')](config[_0x1d88('0x1a')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1d88('0x1a')]));require('./chatInternalMessage.socket')[_0x1d88('0x1c')](socket);function respondWithStatusCode(_0xb38a5a,_0x150cb2){_0x150cb2=_0x150cb2||0xcc;return function(_0x424554){if(_0x424554){return _0xb38a5a[_0x1d88('0x1d')](_0x150cb2);}return _0xb38a5a[_0x1d88('0x1e')](_0x150cb2)['end']();};}function respondWithResult(_0x417a1,_0x29b2c6){_0x29b2c6=_0x29b2c6||0xc8;return function(_0x2bc8e6){if(_0x2bc8e6){return _0x417a1['status'](_0x29b2c6)[_0x1d88('0x1f')](_0x2bc8e6);}};}function respondWithFilteredResult(_0xf9e730,_0x239311){return function(_0x300158){if(_0x300158){var _0xbd4d39=typeof _0x239311[_0x1d88('0x20')]===_0x1d88('0x21')&&typeof _0x239311['limit']===_0x1d88('0x21');var _0x346d48=_0x300158['count'];var _0x452ffe=_0xbd4d39?0x0:_0x239311[_0x1d88('0x20')];var _0x1a8352=_0xbd4d39?_0x300158[_0x1d88('0x22')]:_0x239311[_0x1d88('0x20')]+_0x239311['limit'];var _0x2c8b03;if(_0x1a8352>=_0x346d48){_0x1a8352=_0x346d48;_0x2c8b03=0xc8;}else{_0x2c8b03=0xce;}_0xf9e730['status'](_0x2c8b03);return _0xf9e730[_0x1d88('0x23')](_0x1d88('0x24'),_0x452ffe+'-'+_0x1a8352+'/'+_0x346d48)[_0x1d88('0x1f')](_0x300158);}return null;};}function patchUpdates(_0x2956fc){return function(_0x38fb6b){try{jsonpatch[_0x1d88('0x25')](_0x38fb6b,_0x2956fc,!![]);}catch(_0x15e486){return BPromise[_0x1d88('0x26')](_0x15e486);}return _0x38fb6b[_0x1d88('0x27')]();};}function saveUpdates(_0x70733b,_0xe7149c){return function(_0x34a15f){if(_0x34a15f){return _0x34a15f['update'](_0x70733b)[_0x1d88('0x28')](function(_0x24c478){return _0x24c478;});}return null;};}function removeEntity(_0x589ca7,_0x1da681){return function(_0x462aeb){if(_0x462aeb){return _0x462aeb[_0x1d88('0x29')]()[_0x1d88('0x28')](function(){_0x589ca7[_0x1d88('0x1e')](0xcc)[_0x1d88('0x2a')]();});}};}function handleEntityNotFound(_0x13df05,_0x5a399d){return function(_0x500aae){if(!_0x500aae){_0x13df05[_0x1d88('0x1d')](0x194);}return _0x500aae;};}function handleError(_0xdfa2b2,_0x20211e){_0x20211e=_0x20211e||0x1f4;return function(_0x3a4a6f){logger[_0x1d88('0x2b')](_0x3a4a6f[_0x1d88('0x2c')]);if(_0x3a4a6f['name']){delete _0x3a4a6f[_0x1d88('0x2d')];}_0xdfa2b2[_0x1d88('0x1e')](_0x20211e)[_0x1d88('0x2e')](_0x3a4a6f);};}exports[_0x1d88('0x2f')]=function(_0x19fa92,_0xb93d05){var _0x370286={},_0x21d62e={},_0x206516={'count':0x0,'rows':[]};var _0x4625ad=_['map'](db['ChatInternalMessage'][_0x1d88('0x30')],function(_0x313f17){return{'name':_0x313f17[_0x1d88('0x31')],'type':_0x313f17[_0x1d88('0x32')][_0x1d88('0x33')]};});_0x21d62e['model']=_[_0x1d88('0x34')](_0x4625ad,_0x1d88('0x2d'));_0x21d62e[_0x1d88('0x35')]=_[_0x1d88('0x36')](_0x19fa92[_0x1d88('0x35')]);_0x21d62e['filters']=_[_0x1d88('0x37')](_0x21d62e[_0x1d88('0x38')],_0x21d62e[_0x1d88('0x35')]);_0x370286[_0x1d88('0x39')]=_[_0x1d88('0x37')](_0x21d62e[_0x1d88('0x38')],qs[_0x1d88('0x3a')](_0x19fa92[_0x1d88('0x35')][_0x1d88('0x3a')]));_0x370286[_0x1d88('0x39')]=_0x370286[_0x1d88('0x39')][_0x1d88('0x3b')]?_0x370286[_0x1d88('0x39')]:_0x21d62e[_0x1d88('0x38')];if(!_0x19fa92[_0x1d88('0x35')][_0x1d88('0x3c')](_0x1d88('0x3d'))){_0x370286[_0x1d88('0x3e')]=qs[_0x1d88('0x3e')](_0x19fa92['query'][_0x1d88('0x3e')]);_0x370286[_0x1d88('0x20')]=qs[_0x1d88('0x20')](_0x19fa92[_0x1d88('0x35')]['offset']);}_0x370286[_0x1d88('0x3f')]=qs[_0x1d88('0x40')](_0x19fa92[_0x1d88('0x35')][_0x1d88('0x40')]);_0x370286[_0x1d88('0x41')]=qs[_0x1d88('0x42')](_['pick'](_0x19fa92['query'],_0x21d62e[_0x1d88('0x42')]),_0x4625ad);if(_0x19fa92[_0x1d88('0x35')][_0x1d88('0x43')]){_0x370286['where']=_[_0x1d88('0x44')](_0x370286['where'],{'$or':_[_0x1d88('0x34')](_0x4625ad,function(_0x3e92ef){if(_0x3e92ef[_0x1d88('0x32')]!=='VIRTUAL'){var _0x543165={};_0x543165[_0x3e92ef['name']]={'$like':'%'+_0x19fa92[_0x1d88('0x35')][_0x1d88('0x43')]+'%'};return _0x543165;}})});}_0x370286=_[_0x1d88('0x44')]({},_0x370286,_0x19fa92[_0x1d88('0x45')]);var _0xe8932c={'where':_0x370286[_0x1d88('0x41')]};return db['ChatInternalMessage'][_0x1d88('0x22')](_0xe8932c)['then'](function(_0x4918ea){_0x206516['count']=_0x4918ea;if(_0x19fa92[_0x1d88('0x35')][_0x1d88('0x46')]){_0x370286[_0x1d88('0x47')]=[{'all':!![]}];}return db[_0x1d88('0x48')][_0x1d88('0x49')](_0x370286);})[_0x1d88('0x28')](function(_0x49db25){_0x206516[_0x1d88('0x4a')]=_0x49db25;return _0x206516;})[_0x1d88('0x28')](respondWithFilteredResult(_0xb93d05,_0x370286))[_0x1d88('0x4b')](handleError(_0xb93d05,null));};exports[_0x1d88('0x4c')]=function(_0x313db4,_0x494b19){var _0x21d499={'raw':!![],'where':{'id':_0x313db4[_0x1d88('0x4d')]['id']}},_0x157481={};_0x157481['model']=_[_0x1d88('0x36')](db[_0x1d88('0x48')]['rawAttributes']);_0x157481[_0x1d88('0x35')]=_['keys'](_0x313db4[_0x1d88('0x35')]);_0x157481[_0x1d88('0x42')]=_[_0x1d88('0x37')](_0x157481[_0x1d88('0x38')],_0x157481[_0x1d88('0x35')]);_0x21d499[_0x1d88('0x39')]=_[_0x1d88('0x37')](_0x157481[_0x1d88('0x38')],qs['fields'](_0x313db4[_0x1d88('0x35')][_0x1d88('0x3a')]));_0x21d499[_0x1d88('0x39')]=_0x21d499['attributes'][_0x1d88('0x3b')]?_0x21d499[_0x1d88('0x39')]:_0x157481[_0x1d88('0x38')];if(_0x313db4[_0x1d88('0x35')][_0x1d88('0x46')]){_0x21d499[_0x1d88('0x47')]=[{'all':!![]}];}_0x21d499=_[_0x1d88('0x44')]({},_0x21d499,_0x313db4[_0x1d88('0x45')]);return db['ChatInternalMessage'][_0x1d88('0x4e')](_0x21d499)['then'](handleEntityNotFound(_0x494b19,null))[_0x1d88('0x28')](respondWithResult(_0x494b19,null))[_0x1d88('0x4b')](handleError(_0x494b19,null));};exports[_0x1d88('0x4f')]=function(_0x5d1ad9,_0x4e19e7){return db['ChatInternalMessage'][_0x1d88('0x4f')](_0x5d1ad9[_0x1d88('0x50')],{})[_0x1d88('0x28')](respondWithResult(_0x4e19e7,0xc9))[_0x1d88('0x4b')](handleError(_0x4e19e7,null));};exports[_0x1d88('0x51')]=function(_0x4eabab,_0x58cb63){if(_0x4eabab[_0x1d88('0x50')]['id']){delete _0x4eabab['body']['id'];}return db['ChatInternalMessage'][_0x1d88('0x4e')]({'where':{'id':_0x4eabab['params']['id']}})[_0x1d88('0x28')](handleEntityNotFound(_0x58cb63,null))[_0x1d88('0x28')](saveUpdates(_0x4eabab[_0x1d88('0x50')],null))[_0x1d88('0x28')](respondWithResult(_0x58cb63,null))[_0x1d88('0x4b')](handleError(_0x58cb63,null));};exports['destroy']=function(_0xf66a9a,_0x4fb398){return db[_0x1d88('0x48')][_0x1d88('0x4e')]({'where':{'id':_0xf66a9a[_0x1d88('0x4d')]['id']}})[_0x1d88('0x28')](handleEntityNotFound(_0x4fb398,null))[_0x1d88('0x28')](removeEntity(_0x4fb398,null))[_0x1d88('0x4b')](handleError(_0x4fb398,null));};exports[_0x1d88('0x52')]=function(_0x31bb38,_0x37ae32){return db['ChatInternalMessage'][_0x1d88('0x52')]()['then'](respondWithResult(_0x37ae32,null))[_0x1d88('0x4b')](handleError(_0x37ae32,null));};function wrapUser(_0x2edf66){return function(_0x2ec5f7){var _0x6f8fa9=_0x2edf66[_0x1d88('0x53')]({'plain':!![]});_0x6f8fa9[_0x1d88('0x54')]=[];if(_0x2ec5f7){_0x6f8fa9['lastMessageAt']=_0x2ec5f7['createdAt'];_0x6f8fa9[_0x1d88('0x55')]=_0x2ec5f7;}else{_0x6f8fa9[_0x1d88('0x56')]=moment(0x0)[_0x1d88('0x57')](_0x1d88('0x58'));_0x6f8fa9['lastMessage']={};}return _0x6f8fa9;};}exports['getUsers']=function(_0x1cb44b,_0x26fdd7,_0x47996d){var _0x4aeb07=[];return db[_0x1d88('0x59')][_0x1d88('0x49')]({'where':{'role':[_0x1d88('0x5a'),_0x1d88('0x5b'),'user']},'attributes':['id',_0x1d88('0x5c'),_0x1d88('0x2d'),_0x1d88('0x5d'),_0x1d88('0x5e'),_0x1d88('0x5f'),'online','lastLoginAt',_0x1d88('0x60'),_0x1d88('0x61')],'order':qs[_0x1d88('0x40')](_0x1d88('0x62')),'include':[{'model':db[_0x1d88('0x63')],'as':_0x1d88('0x64'),'attributes':['id',_0x1d88('0x2d'),_0x1d88('0x32')],'through':{'attributes':[]}}]})[_0x1d88('0x28')](function(_0x19eda5){if(_0x19eda5){var _0x3106a7=_0x1cb44b[_0x1d88('0x65')][_0x1d88('0x53')]({'plain':!![]});if(!_0x3106a7)throw new Error(_0x1d88('0x66'));if(_0x3106a7[_0x1d88('0x5d')]===_0x1d88('0x65')){return db[_0x1d88('0x67')][_0x1d88('0x4e')]({'where':{'name':_0x1d88('0x68'),'userProfileId':_0x3106a7[_0x1d88('0x69')]},'raw':!![]})[_0x1d88('0x28')](function(_0x4e8ce7){if(_0x4e8ce7){if(_0x4e8ce7['autoAssociation']===0x0){return db[_0x1d88('0x6a')]['findAll']({'where':{'sectionId':_0x4e8ce7['id']},'raw':!![]})[_0x1d88('0x28')](function(_0x4e7772){var _0x176a0e=[];if(_[_0x1d88('0x6b')](_0x4e7772)){_0x176a0e=_[_0x1d88('0x43')](_0x19eda5,function(_0xedbaf0){if(_0xedbaf0[_0x1d88('0x5d')]!==_0x1d88('0x5a')){return _0xedbaf0;}});return _0x176a0e;}else{for(var _0x16f1b3=0x0;_0x16f1b3<_0x19eda5[_0x1d88('0x3b')];_0x16f1b3++){var _0x238267=_0x19eda5[_0x16f1b3];if(_0x238267[_0x1d88('0x5d')]===_0x1d88('0x5a')){var _0x1c9bec=_[_0x1d88('0x4e')](_0x4e7772,function(_0x3fe1b3){return _0x3fe1b3[_0x1d88('0x6c')]===_0x238267['id'];});if(_0x1c9bec)_0x176a0e['push'](_0x238267);}else{_0x176a0e[_0x1d88('0x6d')](_0x238267);}}return _0x176a0e;}});}else{return _0x19eda5;}}else{var _0x40cf4f=_['filter'](_0x19eda5,function(_0x52f5b7){if(_0x52f5b7[_0x1d88('0x5d')]!==_0x1d88('0x5a')){return _0x52f5b7;}});return _0x40cf4f;}});}else{return _0x19eda5;}}})['then'](function(_0x41a74f){var _0x58d004=[];if(_0x41a74f){_0x4aeb07=_0x41a74f;for(var _0x20835c=0x0;_0x20835c<_0x41a74f[_0x1d88('0x3b')];_0x20835c+=0x1){_0x4aeb07[_0x20835c][_0x1d88('0x54')]=[];_0x58d004['push'](db[_0x1d88('0x48')][_0x1d88('0x4e')]({'where':{'FromId':[_0x1cb44b['user']['id'],_0x41a74f[_0x20835c]['id']],'ToId':[_0x1cb44b[_0x1d88('0x65')]['id'],_0x41a74f[_0x20835c]['id']],'ChatGroupId':null},'attributes':['id',_0x1d88('0x6e'),_0x1d88('0x6f'),_0x1d88('0x70'),_0x1d88('0x71'),'body'],'order':qs[_0x1d88('0x40')](_0x1d88('0x72')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x1d88('0x28')](wrapUser(_0x41a74f[_0x20835c])));}return BPromise[_0x1d88('0x73')](_0x58d004);}return[];})[_0x1d88('0x28')](function(_0xca04fc){return{'rows':_0xca04fc,'count':_0xca04fc[_0x1d88('0x3b')]};})[_0x1d88('0x28')](respondWithResult(_0x26fdd7,null))[_0x1d88('0x4b')](handleError(_0x26fdd7,null));};
\ No newline at end of file
index 6d75a33..9cdcd2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c24=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x5d6290,_0xd10349){var _0x23ddae=function(_0x3b0194){while(--_0x3b0194){_0x5d6290['push'](_0x5d6290['shift']());}};_0x23ddae(++_0xd10349);}(_0x2c24,0x190));var _0x42c2=function(_0x536399,_0x52bb38){_0x536399=_0x536399-0x0;var _0x38bea2=_0x2c24[_0x536399];return _0x38bea2;};'use strict';var EventEmitter=require(_0x42c2('0x0'));var ChatInternalMessage=require(_0x42c2('0x1'))['db']['ChatInternalMessage'];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x42c2('0x2')](0x0);var events={'afterCreate':_0x42c2('0x3'),'afterUpdate':_0x42c2('0x4'),'afterDestroy':_0x42c2('0x5')};function emitEvent(_0x4bb00d){return function(_0x193224,_0x47a178,_0x3e6242){ChatInternalMessageEvents[_0x42c2('0x6')](_0x4bb00d+':'+_0x193224['id'],_0x193224);ChatInternalMessageEvents[_0x42c2('0x6')](_0x4bb00d,_0x193224);_0x3e6242(null);};}for(var e in events){if(events[_0x42c2('0x7')](e)){var event=events[e];ChatInternalMessage[_0x42c2('0x8')](e,emitEvent(event));}}module[_0x42c2('0x9')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0x0830=['setMaxListeners','save','update','remove','emit','hook','exports','events','../../mysqldb'];(function(_0x2648dd,_0x5e1378){var _0x2115e2=function(_0x26de06){while(--_0x26de06){_0x2648dd['push'](_0x2648dd['shift']());}};_0x2115e2(++_0x5e1378);}(_0x0830,0x1a5));var _0x0083=function(_0x4eb926,_0x1a4b89){_0x4eb926=_0x4eb926-0x0;var _0x273a87=_0x0830[_0x4eb926];return _0x273a87;};'use strict';var EventEmitter=require(_0x0083('0x0'));var ChatInternalMessage=require(_0x0083('0x1'))['db']['ChatInternalMessage'];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x0083('0x2')](0x0);var events={'afterCreate':_0x0083('0x3'),'afterUpdate':_0x0083('0x4'),'afterDestroy':_0x0083('0x5')};function emitEvent(_0x504a6f){return function(_0x550679,_0x436a27,_0x4c996f){ChatInternalMessageEvents[_0x0083('0x6')](_0x504a6f+':'+_0x550679['id'],_0x550679);ChatInternalMessageEvents[_0x0083('0x6')](_0x504a6f,_0x550679);_0x4c996f(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInternalMessage[_0x0083('0x7')](e,emitEvent(event));}}module[_0x0083('0x8')]=ChatInternalMessageEvents;
\ No newline at end of file
index e42008a..1b44660 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x619e=['./chatInternalMessage.attributes','exports','define','ChatInternalMessage','chat_internal_messages','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0x619e,0x1c7));var _0xe619=function(_0x2aae31,_0x1014a2){_0x2aae31=_0x2aae31-0x0;var _0x379006=_0x619e[_0x2aae31];return _0x379006;};'use strict';var _=require('lodash');var util=require(_0xe619('0x0'));var logger=require(_0xe619('0x1'))(_0xe619('0x2'));var moment=require(_0xe619('0x3'));var BPromise=require(_0xe619('0x4'));var rp=require(_0xe619('0x5'));var fs=require('fs');var path=require(_0xe619('0x6'));var rimraf=require(_0xe619('0x7'));var config=require(_0xe619('0x8'));var attributes=require(_0xe619('0x9'));module[_0xe619('0xa')]=function(_0x5255b2,_0x3b40ca){return _0x5255b2[_0xe619('0xb')](_0xe619('0xc'),attributes,{'tableName':_0xe619('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xe619('0xe'),'collate':_0xe619('0xf')});};
\ No newline at end of file
+var _0xe6f1=['moment','bluebird','path','rimraf','../../config/environment','./chatInternalMessage.attributes','exports','ChatInternalMessage','chat_internal_messages','utf8mb4','util'];(function(_0x5edcc1,_0x391939){var _0xccb5d1=function(_0xd24363){while(--_0xd24363){_0x5edcc1['push'](_0x5edcc1['shift']());}};_0xccb5d1(++_0x391939);}(_0xe6f1,0x128));var _0x1e6f=function(_0x381005,_0x2b3564){_0x381005=_0x381005-0x0;var _0x7fb157=_0xe6f1[_0x381005];return _0x7fb157;};'use strict';var _=require('lodash');var util=require(_0x1e6f('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x1e6f('0x1'));var BPromise=require(_0x1e6f('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1e6f('0x3'));var rimraf=require(_0x1e6f('0x4'));var config=require(_0x1e6f('0x5'));var attributes=require(_0x1e6f('0x6'));module[_0x1e6f('0x7')]=function(_0x356187,_0x1fe2ae){return _0x356187['define'](_0x1e6f('0x8'),attributes,{'tableName':_0x1e6f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x1e6f('0xa'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 929ce50..f3c8fa4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dd0=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./chatInternalMessage.socket','register','request','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x6dd0,0xae));var _0x06dd=function(_0xf41bf2,_0x2bd236){_0xf41bf2=_0xf41bf2-0x0;var _0x19955d=_0x6dd0[_0xf41bf2];return _0x19955d;};'use strict';var _=require(_0x06dd('0x0'));var util=require(_0x06dd('0x1'));var moment=require(_0x06dd('0x2'));var BPromise=require(_0x06dd('0x3'));var rs=require(_0x06dd('0x4'));var fs=require('fs');var Redis=require(_0x06dd('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x06dd('0x6'))(_0x06dd('0x7'));var config=require(_0x06dd('0x8'));var jayson=require(_0x06dd('0x9'));var client=jayson[_0x06dd('0xa')][_0x06dd('0xb')]({'port':0x232a});config['redis']=_[_0x06dd('0xc')](config[_0x06dd('0xd')],{'host':_0x06dd('0xe'),'port':0x18eb});var socket=require(_0x06dd('0xf'))(new Redis(config['redis']));require(_0x06dd('0x10'))[_0x06dd('0x11')](socket);function respondWithRpcPromise(_0x57d1ab,_0x2975ea,_0x23fbad){return new BPromise(function(_0x345ea1,_0x10a584){return client[_0x06dd('0x12')](_0x57d1ab,_0x23fbad)[_0x06dd('0x13')](function(_0x4a2aca){logger[_0x06dd('0x14')](_0x06dd('0x15'),_0x2975ea,_0x06dd('0x16'));logger[_0x06dd('0x17')]('ChatInternalMessage,\x20%s,\x20%s,\x20%s',_0x2975ea,_0x06dd('0x16'),JSON[_0x06dd('0x18')](_0x4a2aca));if(_0x4a2aca[_0x06dd('0x19')]){if(_0x4a2aca[_0x06dd('0x19')][_0x06dd('0x1a')]===0x1f4){logger['error'](_0x06dd('0x15'),_0x2975ea,_0x4a2aca[_0x06dd('0x19')][_0x06dd('0x1b')]);return _0x10a584(_0x4a2aca[_0x06dd('0x19')]['message']);}logger[_0x06dd('0x19')](_0x06dd('0x15'),_0x2975ea,_0x4a2aca['error'][_0x06dd('0x1b')]);return _0x345ea1(_0x4a2aca[_0x06dd('0x19')][_0x06dd('0x1b')]);}else{logger[_0x06dd('0x14')]('ChatInternalMessage,\x20%s,\x20%s',_0x2975ea,_0x06dd('0x16'));_0x345ea1(_0x4a2aca['result']['message']);}})[_0x06dd('0x1c')](function(_0x8661ef){logger['error'](_0x06dd('0x15'),_0x2975ea,_0x8661ef);_0x10a584(_0x8661ef);});});}
\ No newline at end of file
+var _0xed26=['request\x20sent','debug','ChatInternalMessage,\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','redis','localhost','socket.io-emitter','register','request','then','info','ChatInternalMessage,\x20%s,\x20%s'];(function(_0xef8146,_0x459c34){var _0x5a6cb0=function(_0x2f84ec){while(--_0x2f84ec){_0xef8146['push'](_0xef8146['shift']());}};_0x5a6cb0(++_0x459c34);}(_0xed26,0xf8));var _0x6ed2=function(_0x210cd8,_0x12799e){_0x210cd8=_0x210cd8-0x0;var _0x1af9e4=_0xed26[_0x210cd8];return _0x1af9e4;};'use strict';var _=require(_0x6ed2('0x0'));var util=require(_0x6ed2('0x1'));var moment=require(_0x6ed2('0x2'));var BPromise=require(_0x6ed2('0x3'));var rs=require(_0x6ed2('0x4'));var fs=require('fs');var Redis=require(_0x6ed2('0x5'));var db=require(_0x6ed2('0x6'))['db'];var utils=require(_0x6ed2('0x7'));var logger=require(_0x6ed2('0x8'))(_0x6ed2('0x9'));var config=require(_0x6ed2('0xa'));var jayson=require(_0x6ed2('0xb'));var client=jayson[_0x6ed2('0xc')][_0x6ed2('0xd')]({'port':0x232a});config[_0x6ed2('0xe')]=_['defaults'](config[_0x6ed2('0xe')],{'host':_0x6ed2('0xf'),'port':0x18eb});var socket=require(_0x6ed2('0x10'))(new Redis(config[_0x6ed2('0xe')]));require('./chatInternalMessage.socket')[_0x6ed2('0x11')](socket);function respondWithRpcPromise(_0x555696,_0x174f90,_0x1ff3ac){return new BPromise(function(_0x40bf61,_0x231bb0){return client[_0x6ed2('0x12')](_0x555696,_0x1ff3ac)[_0x6ed2('0x13')](function(_0x5c773b){logger[_0x6ed2('0x14')](_0x6ed2('0x15'),_0x174f90,_0x6ed2('0x16'));logger[_0x6ed2('0x17')](_0x6ed2('0x18'),_0x174f90,_0x6ed2('0x16'),JSON[_0x6ed2('0x19')](_0x5c773b));if(_0x5c773b[_0x6ed2('0x1a')]){if(_0x5c773b[_0x6ed2('0x1a')][_0x6ed2('0x1b')]===0x1f4){logger[_0x6ed2('0x1a')](_0x6ed2('0x15'),_0x174f90,_0x5c773b[_0x6ed2('0x1a')][_0x6ed2('0x1c')]);return _0x231bb0(_0x5c773b[_0x6ed2('0x1a')][_0x6ed2('0x1c')]);}logger[_0x6ed2('0x1a')](_0x6ed2('0x15'),_0x174f90,_0x5c773b[_0x6ed2('0x1a')][_0x6ed2('0x1c')]);return _0x40bf61(_0x5c773b[_0x6ed2('0x1a')][_0x6ed2('0x1c')]);}else{logger[_0x6ed2('0x14')](_0x6ed2('0x15'),_0x174f90,_0x6ed2('0x16'));_0x40bf61(_0x5c773b['result']['message']);}})[_0x6ed2('0x1d')](function(_0x54c0a5){logger['error'](_0x6ed2('0x15'),_0x174f90,_0x54c0a5);_0x231bb0(_0x54c0a5);});});}
\ No newline at end of file
index c9c6392..2b0b6f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69f6=['register','length','chatInternalMessage:','save','update','removeListener'];(function(_0x35e12b,_0x588bf7){var _0x469b05=function(_0x5d73c3){while(--_0x5d73c3){_0x35e12b['push'](_0x35e12b['shift']());}};_0x469b05(++_0x588bf7);}(_0x69f6,0xed));var _0x669f=function(_0xa61e5,_0x1b19fc){_0xa61e5=_0xa61e5-0x0;var _0x1abae4=_0x69f6[_0xa61e5];return _0x1abae4;};'use strict';var ChatInternalMessageEvents=require('./chatInternalMessage.events');var events=[_0x669f('0x0'),'remove',_0x669f('0x1')];function createListener(_0x245c0d,_0x48c179){return function(_0x31d36d){_0x48c179['emit'](_0x245c0d,_0x31d36d);};}function removeListener(_0x44a05a,_0x378360){return function(){ChatInternalMessageEvents[_0x669f('0x2')](_0x44a05a,_0x378360);};}exports[_0x669f('0x3')]=function(_0x369fb5){for(var _0x532d85=0x0,_0x34c7a6=events[_0x669f('0x4')];_0x532d85<_0x34c7a6;_0x532d85++){var _0x25728c=events[_0x532d85];var _0x534dcd=createListener(_0x669f('0x5')+_0x25728c,_0x369fb5);ChatInternalMessageEvents['on'](_0x25728c,_0x534dcd);}};
\ No newline at end of file
+var _0xc0d5=['length','chatInternalMessage:','./chatInternalMessage.events','save','remove','update','removeListener','register'];(function(_0x4b281a,_0x1733de){var _0x3149a7=function(_0x3a6b40){while(--_0x3a6b40){_0x4b281a['push'](_0x4b281a['shift']());}};_0x3149a7(++_0x1733de);}(_0xc0d5,0x122));var _0x5c0d=function(_0x115776,_0x4c51bb){_0x115776=_0x115776-0x0;var _0x45f55c=_0xc0d5[_0x115776];return _0x45f55c;};'use strict';var ChatInternalMessageEvents=require(_0x5c0d('0x0'));var events=[_0x5c0d('0x1'),_0x5c0d('0x2'),_0x5c0d('0x3')];function createListener(_0x24b601,_0x148c1a){return function(_0x1e8ab6){_0x148c1a['emit'](_0x24b601,_0x1e8ab6);};}function removeListener(_0x29deae,_0x4404ac){return function(){ChatInternalMessageEvents[_0x5c0d('0x4')](_0x29deae,_0x4404ac);};}exports[_0x5c0d('0x5')]=function(_0x513aef){for(var _0x5e2da7=0x0,_0x1fd8c5=events[_0x5c0d('0x6')];_0x5e2da7<_0x1fd8c5;_0x5e2da7++){var _0x32947a=events[_0x5e2da7];var _0x551975=createListener(_0x5c0d('0x7')+_0x32947a,_0x513aef);ChatInternalMessageEvents['on'](_0x32947a,_0x551975);}};
\ No newline at end of file
index 6e9c120..c13ff78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeaf3=['create','put','update','destroy','exports','path','connect-timeout','../../components/auth/service','../../components/interaction/service','./chatInternalMessage.controller','get','/describe','isAuthenticated','describe','/users','getUsers','/:id','post'];(function(_0x5dcbd8,_0x4931bd){var _0x1abb50=function(_0x31920c){while(--_0x31920c){_0x5dcbd8['push'](_0x5dcbd8['shift']());}};_0x1abb50(++_0x4931bd);}(_0xeaf3,0xcb));var _0x3eaf=function(_0x3b9f96,_0x25c135){_0x3b9f96=_0x3b9f96-0x0;var _0x395f62=_0xeaf3[_0x3b9f96];return _0x395f62;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3eaf('0x0'));var timeout=require(_0x3eaf('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x3eaf('0x2'));var interaction=require(_0x3eaf('0x3'));var config=require('../../config/environment');var controller=require(_0x3eaf('0x4'));router[_0x3eaf('0x5')]('/',auth['isAuthenticated'](),controller['index']);router[_0x3eaf('0x5')](_0x3eaf('0x6'),auth[_0x3eaf('0x7')](),controller[_0x3eaf('0x8')]);router[_0x3eaf('0x5')](_0x3eaf('0x9'),auth[_0x3eaf('0x7')](),controller[_0x3eaf('0xa')]);router[_0x3eaf('0x5')](_0x3eaf('0xb'),auth[_0x3eaf('0x7')](),controller['show']);router[_0x3eaf('0xc')]('/',auth[_0x3eaf('0x7')](),controller[_0x3eaf('0xd')]);router[_0x3eaf('0xe')](_0x3eaf('0xb'),controller[_0x3eaf('0xf')]);router['delete']('/:id',auth[_0x3eaf('0x7')](),controller[_0x3eaf('0x10')]);module[_0x3eaf('0x11')]=router;
\ No newline at end of file
+var _0x40b6=['/:id','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatInternalMessage.controller','get','isAuthenticated','index','/describe','describe','/users','getUsers','show'];(function(_0x124393,_0x26cb5f){var _0x3344b5=function(_0x161357){while(--_0x161357){_0x124393['push'](_0x124393['shift']());}};_0x3344b5(++_0x26cb5f);}(_0x40b6,0xa3));var _0x640b=function(_0x303064,_0x12f0c2){_0x303064=_0x303064-0x0;var _0x5a1d3d=_0x40b6[_0x303064];return _0x5a1d3d;};'use strict';var multer=require(_0x640b('0x0'));var util=require(_0x640b('0x1'));var path=require(_0x640b('0x2'));var timeout=require('connect-timeout');var express=require(_0x640b('0x3'));var router=express[_0x640b('0x4')]();var fs_extra=require(_0x640b('0x5'));var auth=require(_0x640b('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x640b('0x7'));var controller=require(_0x640b('0x8'));router[_0x640b('0x9')]('/',auth[_0x640b('0xa')](),controller[_0x640b('0xb')]);router[_0x640b('0x9')](_0x640b('0xc'),auth[_0x640b('0xa')](),controller[_0x640b('0xd')]);router[_0x640b('0x9')](_0x640b('0xe'),auth['isAuthenticated'](),controller[_0x640b('0xf')]);router['get']('/:id',auth[_0x640b('0xa')](),controller[_0x640b('0x10')]);router['post']('/',auth[_0x640b('0xa')](),controller['create']);router['put'](_0x640b('0x11'),controller['update']);router[_0x640b('0x12')](_0x640b('0x11'),auth[_0x640b('0xa')](),controller['destroy']);module[_0x640b('0x13')]=router;
\ No newline at end of file
index e2e9b78..5c94221 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c71=['STRING','TEXT','sequelize','exports','medium','BOOLEAN','ENUM','out','DATE'];(function(_0xf684ed,_0xd5eb57){var _0x15aea9=function(_0x180ec4){while(--_0x180ec4){_0xf684ed['push'](_0xf684ed['shift']());}};_0x15aea9(++_0xd5eb57);}(_0x4c71,0x12b));var _0x14c7=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0x4c71[_0x68c979];return _0x4f0001;};'use strict';var Sequelize=require(_0x14c7('0x0'));module[_0x14c7('0x1')]={'body':{'type':Sequelize['TEXT'](_0x14c7('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x14c7('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0x14c7('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x14c7('0x4')]('in',_0x14c7('0x5')),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0x14c7('0x6')]},'providerName':{'type':Sequelize[_0x14c7('0x7')]},'providerResponse':{'type':Sequelize[_0x14c7('0x8')]}};
\ No newline at end of file
+var _0x5d86=['exports','BOOLEAN','ENUM','out','DATE','TEXT','sequelize'];(function(_0xaf9b55,_0x500f1d){var _0x15d233=function(_0xb36195){while(--_0xb36195){_0xaf9b55['push'](_0xaf9b55['shift']());}};_0x15d233(++_0x500f1d);}(_0x5d86,0x76));var _0x65d8=function(_0x2842b4,_0x2b1b7b){_0x2842b4=_0x2842b4-0x0;var _0x2b9521=_0x5d86[_0x2842b4];return _0x2b9521;};'use strict';var Sequelize=require(_0x65d8('0x0'));module[_0x65d8('0x1')]={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x65d8('0x2')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x65d8('0x3')]('in',_0x65d8('0x4')),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0x65d8('0x5')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x65d8('0x6')]}};
\ No newline at end of file
index b08ce2e..fe297c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51bd=['fieldName','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','ChatMessage','includeAll','include','rows','params','fields','find','create','body','describe','chat-interactions','accept','chat','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','ChatInteraction','ChatInteractionId','isNil','read1stAt','[CHATMESSAGE: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','Sequelize','SELECT','contact','User','fullname','email','manual','interface','SIP/%s','channel','motionChannel','EventManager','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','QueryTypes','internal','event','rejectmessage','parse','formData','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','ejs','fs-extra','lodash','squel','crypto','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','jayson/promise','client','http','request','then','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatMessage,\x20%s,\x20%s','message','info','result','catch','sendStatus','status','undefined','limit','offset','count','set','Content-Range','json','apply','reject','update','destroy','end','name','send','map','rawAttributes'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x51bd,0x1e3));var _0xd51b=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x51bd[_0x4e676e];return _0x336a3c;};'use strict';var emlformat=require(_0xd51b('0x0'));var rimraf=require(_0xd51b('0x1'));var zipdir=require(_0xd51b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd51b('0x3'));var moment=require(_0xd51b('0x4'));var BPromise=require(_0xd51b('0x5'));var Mustache=require(_0xd51b('0x6'));var util=require('util');var path=require(_0xd51b('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd51b('0x8'));var fs=require('fs');var fs_extra=require(_0xd51b('0x9'));var _=require(_0xd51b('0xa'));var squel=require(_0xd51b('0xb'));var crypto=require(_0xd51b('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xd51b('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd51b('0xe'));var authService=require(_0xd51b('0xf'));var qs=require(_0xd51b('0x10'));var as=require(_0xd51b('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd51b('0x12'));var utils=require(_0xd51b('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xd51b('0x14'));var db=require(_0xd51b('0x15'))['db'];config[_0xd51b('0x16')]=_[_0xd51b('0x17')](config['redis'],{'host':_0xd51b('0x18'),'port':0x18eb});var socket=require(_0xd51b('0x19'))(new Redis(config[_0xd51b('0x16')]));require(_0xd51b('0x1a'))['register'](socket);var jayson=require(_0xd51b('0x1b'));var client=jayson[_0xd51b('0x1c')][_0xd51b('0x1d')]({'port':0x232c});var client9002=jayson[_0xd51b('0x1c')][_0xd51b('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x4f4df4,_0x5a7bd6,_0x2ef5f7,_0x327dd1){return new BPromise(function(_0x2d5cc8,_0xbae0d6){var _0xd04f5=_0x327dd1||client;return _0xd04f5[_0xd51b('0x1e')](_0x4f4df4,_0x2ef5f7)[_0xd51b('0x1f')](function(_0x4b64b6){logger['info']('ChatMessage,\x20%s,\x20%s',_0x5a7bd6,_0xd51b('0x20'));logger[_0xd51b('0x21')](_0xd51b('0x22'),_0x5a7bd6,_0xd51b('0x20'),JSON[_0xd51b('0x23')](_0x4b64b6));if(_0x4b64b6[_0xd51b('0x24')]){if(_0x4b64b6[_0xd51b('0x24')][_0xd51b('0x25')]===0x1f4){logger['error'](_0xd51b('0x26'),_0x5a7bd6,_0x4b64b6['error'][_0xd51b('0x27')]);return _0xbae0d6(_0x4b64b6[_0xd51b('0x24')][_0xd51b('0x27')]);}logger['error'](_0xd51b('0x26'),_0x5a7bd6,_0x4b64b6[_0xd51b('0x24')][_0xd51b('0x27')]);return _0x2d5cc8(_0x4b64b6['error'][_0xd51b('0x27')]);}else{logger[_0xd51b('0x28')]('ChatMessage,\x20%s,\x20%s',_0x5a7bd6,_0xd51b('0x20'));_0x2d5cc8(_0x4b64b6[_0xd51b('0x29')]['message']);}})[_0xd51b('0x2a')](function(_0x137380){logger['error'](_0xd51b('0x26'),_0x5a7bd6,_0x137380);_0xbae0d6(_0x137380);});});}function respondWithStatusCode(_0x284db8,_0x40ec30){_0x40ec30=_0x40ec30||0xcc;return function(_0xd99174){if(_0xd99174){return _0x284db8[_0xd51b('0x2b')](_0x40ec30);}return _0x284db8[_0xd51b('0x2c')](_0x40ec30)['end']();};}function respondWithResult(_0x23eeaf,_0x2a5ff0){_0x2a5ff0=_0x2a5ff0||0xc8;return function(_0x2c6e08){if(_0x2c6e08){return _0x23eeaf[_0xd51b('0x2c')](_0x2a5ff0)['json'](_0x2c6e08);}};}function respondWithFilteredResult(_0x184191,_0x4e2bd2){return function(_0x33b124){if(_0x33b124){var _0x55097b=typeof _0x4e2bd2['offset']===_0xd51b('0x2d')&&typeof _0x4e2bd2[_0xd51b('0x2e')]===_0xd51b('0x2d');var _0xf0eec6=_0x33b124['count'];var _0x19ef91=_0x55097b?0x0:_0x4e2bd2[_0xd51b('0x2f')];var _0x2357ea=_0x55097b?_0x33b124[_0xd51b('0x30')]:_0x4e2bd2[_0xd51b('0x2f')]+_0x4e2bd2[_0xd51b('0x2e')];var _0xc8cabe;if(_0x2357ea>=_0xf0eec6){_0x2357ea=_0xf0eec6;_0xc8cabe=0xc8;}else{_0xc8cabe=0xce;}_0x184191['status'](_0xc8cabe);return _0x184191[_0xd51b('0x31')](_0xd51b('0x32'),_0x19ef91+'-'+_0x2357ea+'/'+_0xf0eec6)[_0xd51b('0x33')](_0x33b124);}return null;};}function patchUpdates(_0x5e8c57){return function(_0x2f52cc){try{jsonpatch[_0xd51b('0x34')](_0x2f52cc,_0x5e8c57,!![]);}catch(_0x39e49b){return BPromise[_0xd51b('0x35')](_0x39e49b);}return _0x2f52cc['save']();};}function saveUpdates(_0x57b3c7,_0x584151){return function(_0x502f32){if(_0x502f32){return _0x502f32[_0xd51b('0x36')](_0x57b3c7)['then'](function(_0x4c3c94){return _0x4c3c94;});}return null;};}function removeEntity(_0xcc5e16,_0x490161){return function(_0x547f51){if(_0x547f51){return _0x547f51[_0xd51b('0x37')]()[_0xd51b('0x1f')](function(){_0xcc5e16[_0xd51b('0x2c')](0xcc)[_0xd51b('0x38')]();});}};}function handleEntityNotFound(_0x373419,_0x3f9f9a){return function(_0x365f83){if(!_0x365f83){_0x373419[_0xd51b('0x2b')](0x194);}return _0x365f83;};}function handleError(_0x162144,_0x517b96){_0x517b96=_0x517b96||0x1f4;return function(_0x143867){logger[_0xd51b('0x24')](_0x143867['stack']);if(_0x143867[_0xd51b('0x39')]){delete _0x143867[_0xd51b('0x39')];}_0x162144[_0xd51b('0x2c')](_0x517b96)[_0xd51b('0x3a')](_0x143867);};}exports['index']=function(_0x56d42a,_0x2cf3c7){var _0x4cb721={},_0x549ebe={},_0x348214={'count':0x0,'rows':[]};var _0x2a12e7=_[_0xd51b('0x3b')](db['ChatMessage'][_0xd51b('0x3c')],function(_0x7709f5){return{'name':_0x7709f5[_0xd51b('0x3d')],'type':_0x7709f5[_0xd51b('0x3e')][_0xd51b('0x3f')]};});_0x549ebe[_0xd51b('0x40')]=_[_0xd51b('0x3b')](_0x2a12e7,'name');_0x549ebe[_0xd51b('0x41')]=_[_0xd51b('0x42')](_0x56d42a[_0xd51b('0x41')]);_0x549ebe[_0xd51b('0x43')]=_[_0xd51b('0x44')](_0x549ebe[_0xd51b('0x40')],_0x549ebe[_0xd51b('0x41')]);_0x4cb721[_0xd51b('0x45')]=_['intersection'](_0x549ebe[_0xd51b('0x40')],qs['fields'](_0x56d42a[_0xd51b('0x41')]['fields']));_0x4cb721['attributes']=_0x4cb721[_0xd51b('0x45')][_0xd51b('0x46')]?_0x4cb721[_0xd51b('0x45')]:_0x549ebe[_0xd51b('0x40')];if(!_0x56d42a['query'][_0xd51b('0x47')](_0xd51b('0x48'))){_0x4cb721[_0xd51b('0x2e')]=qs[_0xd51b('0x2e')](_0x56d42a[_0xd51b('0x41')][_0xd51b('0x2e')]);_0x4cb721['offset']=qs[_0xd51b('0x2f')](_0x56d42a[_0xd51b('0x41')][_0xd51b('0x2f')]);}_0x4cb721[_0xd51b('0x49')]=qs['sort'](_0x56d42a[_0xd51b('0x41')][_0xd51b('0x4a')]);_0x4cb721[_0xd51b('0x4b')]=qs[_0xd51b('0x43')](_[_0xd51b('0x4c')](_0x56d42a['query'],_0x549ebe[_0xd51b('0x43')]),_0x2a12e7);if(_0x56d42a[_0xd51b('0x41')][_0xd51b('0x4d')]){_0x4cb721[_0xd51b('0x4b')]=_[_0xd51b('0x4e')](_0x4cb721[_0xd51b('0x4b')],{'$or':_[_0xd51b('0x3b')](_0x2a12e7,function(_0x5e4870){if(_0x5e4870['type']!==_0xd51b('0x4f')){var _0x3fb354={};_0x3fb354[_0x5e4870[_0xd51b('0x39')]]={'$like':'%'+_0x56d42a[_0xd51b('0x41')][_0xd51b('0x4d')]+'%'};return _0x3fb354;}})});}_0x4cb721=_[_0xd51b('0x4e')]({},_0x4cb721,_0x56d42a[_0xd51b('0x50')]);var _0x29b277={'where':_0x4cb721[_0xd51b('0x4b')]};return db[_0xd51b('0x51')][_0xd51b('0x30')](_0x29b277)['then'](function(_0x9b621b){_0x348214[_0xd51b('0x30')]=_0x9b621b;if(_0x56d42a[_0xd51b('0x41')][_0xd51b('0x52')]){_0x4cb721[_0xd51b('0x53')]=[{'all':!![]}];}return db[_0xd51b('0x51')]['findAll'](_0x4cb721);})[_0xd51b('0x1f')](function(_0x5baea2){_0x348214[_0xd51b('0x54')]=_0x5baea2;return _0x348214;})[_0xd51b('0x1f')](respondWithFilteredResult(_0x2cf3c7,_0x4cb721))[_0xd51b('0x2a')](handleError(_0x2cf3c7,null));};exports['show']=function(_0x4ac022,_0x17d52c){var _0x89e315={'raw':!![],'where':{'id':_0x4ac022[_0xd51b('0x55')]['id']}},_0x446534={};_0x446534[_0xd51b('0x40')]=_['keys'](db[_0xd51b('0x51')][_0xd51b('0x3c')]);_0x446534[_0xd51b('0x41')]=_[_0xd51b('0x42')](_0x4ac022['query']);_0x446534['filters']=_[_0xd51b('0x44')](_0x446534[_0xd51b('0x40')],_0x446534[_0xd51b('0x41')]);_0x89e315[_0xd51b('0x45')]=_[_0xd51b('0x44')](_0x446534[_0xd51b('0x40')],qs[_0xd51b('0x56')](_0x4ac022['query'][_0xd51b('0x56')]));_0x89e315[_0xd51b('0x45')]=_0x89e315['attributes'][_0xd51b('0x46')]?_0x89e315[_0xd51b('0x45')]:_0x446534[_0xd51b('0x40')];if(_0x4ac022[_0xd51b('0x41')][_0xd51b('0x52')]){_0x89e315[_0xd51b('0x53')]=[{'all':!![]}];}_0x89e315=_[_0xd51b('0x4e')]({},_0x89e315,_0x4ac022[_0xd51b('0x50')]);return db[_0xd51b('0x51')][_0xd51b('0x57')](_0x89e315)[_0xd51b('0x1f')](handleEntityNotFound(_0x17d52c,null))[_0xd51b('0x1f')](respondWithResult(_0x17d52c,null))[_0xd51b('0x2a')](handleError(_0x17d52c,null));};exports['create']=function(_0x54c868,_0x507b69){return db[_0xd51b('0x51')][_0xd51b('0x58')](_0x54c868[_0xd51b('0x59')],{})[_0xd51b('0x1f')](respondWithResult(_0x507b69,0xc9))['catch'](handleError(_0x507b69,null));};exports[_0xd51b('0x36')]=function(_0x576881,_0x18eafd){if(_0x576881[_0xd51b('0x59')]['id']){delete _0x576881[_0xd51b('0x59')]['id'];}return db[_0xd51b('0x51')][_0xd51b('0x57')]({'where':{'id':_0x576881[_0xd51b('0x55')]['id']}})[_0xd51b('0x1f')](handleEntityNotFound(_0x18eafd,null))[_0xd51b('0x1f')](saveUpdates(_0x576881['body'],null))[_0xd51b('0x1f')](respondWithResult(_0x18eafd,null))[_0xd51b('0x2a')](handleError(_0x18eafd,null));};exports[_0xd51b('0x37')]=function(_0x2dccac,_0x1e2255){return db['ChatMessage']['find']({'where':{'id':_0x2dccac[_0xd51b('0x55')]['id']}})[_0xd51b('0x1f')](handleEntityNotFound(_0x1e2255,null))[_0xd51b('0x1f')](removeEntity(_0x1e2255,null))[_0xd51b('0x2a')](handleError(_0x1e2255,null));};exports[_0xd51b('0x5a')]=function(_0x432e61,_0x12ebeb){return db['ChatMessage'][_0xd51b('0x5a')]()['then'](respondWithResult(_0x12ebeb,null))['catch'](handleError(_0x12ebeb,null));};var interaction_log=require('../../config/logger')(_0xd51b('0x5b'));exports[_0xd51b('0x5c')]=function(_0x5ac8b7,_0xd0bc66,_0xe82581){var _0x54d397={'agent':{},'channel':_0xd51b('0x5d')};if(_0x5ac8b7[_0xd51b('0x59')]['id']){delete _0x5ac8b7['body']['id'];}_0x5ac8b7['body'][_0xd51b('0x5e')]=!![];_0x5ac8b7[_0xd51b('0x59')][_0xd51b('0x5f')]=moment()[_0xd51b('0x60')](_0xd51b('0x61'));_0x5ac8b7['body'][_0xd51b('0x62')]=_0x5ac8b7['body'][_0xd51b('0x62')]||_0x5ac8b7[_0xd51b('0x63')]['id'];_0x54d397[_0xd51b('0x64')]['id']=_0x5ac8b7[_0xd51b('0x59')]['UserId'];return db['ChatMessage'][_0xd51b('0x57')]({'where':{'id':_0x5ac8b7[_0xd51b('0x55')]['id'],'UserId':null}})[_0xd51b('0x1f')](handleEntityNotFound(_0xd0bc66,null))['then'](saveUpdates(_0x5ac8b7[_0xd51b('0x59')],null))['then'](function(_0xd5e5b2){if(_0xd5e5b2){_0x54d397['message']=_0xd5e5b2[_0xd51b('0x65')]({'plain':!![]});return db[_0xd51b('0x66')][_0xd51b('0x57')]({'where':{'id':_0xd5e5b2[_0xd51b('0x67')]}});}return null;})['then'](handleEntityNotFound(_0xd0bc66,null))[_0xd51b('0x1f')](function(_0x57f8ef){if(_0x57f8ef){return _0x57f8ef[_0xd51b('0x36')]({'UserId':_0x5ac8b7[_0xd51b('0x59')][_0xd51b('0x62')],'read1stAt':_[_0xd51b('0x68')](_0x57f8ef[_0xd51b('0x69')])?moment()['format'](_0xd51b('0x61')):undefined});}return null;})[_0xd51b('0x1f')](function(_0x310384){if(_0x310384){_0x54d397['interaction']=_0x310384[_0xd51b('0x65')]({'plain':!![]});interaction_log[_0xd51b('0x28')](_0xd51b('0x6a'),_0x5ac8b7['user']['id'],_0x5ac8b7[_0xd51b('0x63')]['name'],_0x5ac8b7[_0xd51b('0x63')][_0xd51b('0x6b')],_0x54d397[_0xd51b('0x6c')]['id'],_0x5ac8b7['body']?JSON[_0xd51b('0x23')](_0x5ac8b7[_0xd51b('0x59')]):_0xd51b('0x6d'));return respondWithRpcPromise(_0xd51b('0x6e'),_0xd51b('0x6f'),_0x54d397);}return null;})['then'](function(_0x277ba8){var _0x3e269e=_0xd51b('0x70')+_0x277ba8['message'][_0xd51b('0x71')];return db[_0xd51b('0x72')][_0xd51b('0x41')](_0x3e269e,{'type':db[_0xd51b('0x73')]['QueryTypes'][_0xd51b('0x74')],'raw':!![]})[_0xd51b('0x1f')](function(_0x20ca05){return _0x20ca05;});})[_0xd51b('0x1f')](function(_0x56eeb3){if(_0x56eeb3){_0x54d397[_0xd51b('0x27')][_0xd51b('0x75')]=_0x56eeb3[0x0];if(!_0x5ac8b7[_0xd51b('0x59')][_0xd51b('0x62')])return;return db[_0xd51b('0x76')][_0xd51b('0x57')]({'where':{'id':_0x5ac8b7[_0xd51b('0x59')][_0xd51b('0x62')],'role':'agent'},'attributes':['id',_0xd51b('0x39'),_0xd51b('0x77'),_0xd51b('0x78'),'internal'],'raw':!![]});}return null;})[_0xd51b('0x1f')](function(_0x4c4e4b){if(!_0x4c4e4b)return null;_0x54d397[_0xd51b('0x27')][_0xd51b('0x64')]=_0x4c4e4b;return _0x54d397;})[_0xd51b('0x1f')](function(_0x1d6648){if(_0x1d6648){if(_0x5ac8b7[_0xd51b('0x59')][_0xd51b('0x79')]){_0x54d397['message'][_0xd51b('0x7a')]=util[_0xd51b('0x60')](_0xd51b('0x7b'),_0x5ac8b7[_0xd51b('0x63')][_0xd51b('0x39')]);_0x54d397['message'][_0xd51b('0x7c')]=_0x54d397[_0xd51b('0x7c')];_0x54d397['message'][_0xd51b('0x7d')]=_0x54d397[_0xd51b('0x7c')];_0x54d397[_0xd51b('0x27')]['event']=_0xd51b('0x5c');return respondWithRpcPromise(_0xd51b('0x7e'),_0xd51b('0x7e'),{'event':'acceptmessage','message':_[_0xd51b('0x4e')](_0x54d397['message'],JSON['parse'](_0x54d397[_0xd51b('0x6c')]['formData']))},client9002)[_0xd51b('0x1f')](function(){return _0x54d397;});}return _0x54d397;}return null;})['then'](respondWithResult(_0xd0bc66,null))[_0xd51b('0x2a')](handleError(_0xd0bc66,null));};var interaction_log=require('../../config/logger')(_0xd51b('0x5b'));exports[_0xd51b('0x35')]=function(_0x53aa8a,_0x5814fb,_0xe1fbeb){var _0x1a7240={'agent':{},'channel':'chat'};if(_0x53aa8a[_0xd51b('0x59')]['id']){delete _0x53aa8a[_0xd51b('0x59')]['id'];}_0x53aa8a[_0xd51b('0x59')][_0xd51b('0x62')]=_0x53aa8a[_0xd51b('0x59')][_0xd51b('0x62')]||_0x53aa8a[_0xd51b('0x63')]['id'];_0x1a7240['agent']['id']=_0x53aa8a['body']['UserId'];return db[_0xd51b('0x51')][_0xd51b('0x57')]({'where':{'id':_0x53aa8a[_0xd51b('0x55')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x5814fb,null))[_0xd51b('0x1f')](function(_0x56875d){if(_0x56875d){_0x1a7240[_0xd51b('0x27')]=_0x56875d['get']({'plain':!![]});return db[_0xd51b('0x66')][_0xd51b('0x57')]({'where':{'id':_0x56875d[_0xd51b('0x67')]}});}return null;})[_0xd51b('0x1f')](handleEntityNotFound(_0x5814fb,null))['then'](function(_0x4b8e40){if(_0x4b8e40){_0x1a7240[_0xd51b('0x6c')]=_0x4b8e40[_0xd51b('0x65')]({'plain':!![]});interaction_log[_0xd51b('0x28')](_0xd51b('0x7f'),_0x53aa8a[_0xd51b('0x63')]['id'],_0x53aa8a[_0xd51b('0x63')][_0xd51b('0x39')],_0x53aa8a['user'][_0xd51b('0x6b')],_0x1a7240[_0xd51b('0x6c')]['id'],_0x53aa8a[_0xd51b('0x59')]?JSON[_0xd51b('0x23')](_0x53aa8a[_0xd51b('0x59')]):_0xd51b('0x6d'));return respondWithRpcPromise(_0xd51b('0x80'),_0xd51b('0x81'),_0x1a7240);}return null;})[_0xd51b('0x1f')](function(_0x1fb488){var _0x1fea8f=_0xd51b('0x70')+_0x1fb488[_0xd51b('0x27')][_0xd51b('0x71')];return db['sequelize'][_0xd51b('0x41')](_0x1fea8f,{'type':db[_0xd51b('0x73')][_0xd51b('0x82')][_0xd51b('0x74')],'raw':!![]})[_0xd51b('0x1f')](function(_0x3da81b){return _0x3da81b;});})[_0xd51b('0x1f')](function(_0x3da814){if(_0x3da814){_0x1a7240['message'][_0xd51b('0x75')]=_0x3da814[0x0];if(!_0x53aa8a[_0xd51b('0x59')][_0xd51b('0x62')])return;return db[_0xd51b('0x76')][_0xd51b('0x57')]({'where':{'id':_0x53aa8a[_0xd51b('0x59')]['UserId'],'role':'agent'},'attributes':['id',_0xd51b('0x39'),'fullname',_0xd51b('0x78'),_0xd51b('0x83')],'raw':!![]});}return null;})['then'](function(_0x3b2861){if(!_0x3b2861)return null;_0x1a7240[_0xd51b('0x27')][_0xd51b('0x64')]=_0x3b2861;return _0x1a7240;})[_0xd51b('0x1f')](function(_0x25684a){if(_0x25684a){_0x25684a[_0xd51b('0x27')][_0xd51b('0x7a')]=util['format'](_0xd51b('0x7b'),_0x53aa8a['user'][_0xd51b('0x39')]);_0x25684a[_0xd51b('0x27')][_0xd51b('0x7c')]=_0x1a7240[_0xd51b('0x7c')];_0x25684a[_0xd51b('0x27')][_0xd51b('0x7d')]=_0x1a7240['channel'];_0x25684a['message'][_0xd51b('0x84')]=_0xd51b('0x35');respondWithRpcPromise(_0xd51b('0x7e'),_0xd51b('0x7e'),{'event':_0xd51b('0x85'),'message':_[_0xd51b('0x4e')](_0x1a7240[_0xd51b('0x27')],JSON[_0xd51b('0x86')](_0x1a7240['interaction'][_0xd51b('0x87')]))},client9002);return _0x1a7240;}return null;})[_0xd51b('0x1f')](respondWithResult(_0x5814fb,null))[_0xd51b('0x2a')](handleError(_0x5814fb,null));};
\ No newline at end of file
+var _0x4c61=['UserId','user','get','ChatInteractionId','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','SELECT','contact','User','agent','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','EventManager','acceptmessage','parse','chat-interactions','ChatInteraction','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','QueryTypes','event','rejectmessage','formData','rimraf','zip-dir','fast-json-patch','request-promise','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','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./chatMessage.socket','register','jayson/promise','client','http','request','then','ChatMessage,\x20%s,\x20%s','request\x20sent','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','destroy','stack','name','map','ChatMessage','rawAttributes','type','key','query','keys','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','findAll','rows','params','include','find','create','update','body','describe','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x4c61,0x1b9));var _0x14c6=function(_0x213dcc,_0x124cd7){_0x213dcc=_0x213dcc-0x0;var _0x3de2c0=_0x4c61[_0x213dcc];return _0x3de2c0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x14c6('0x0'));var zipdir=require(_0x14c6('0x1'));var jsonpatch=require(_0x14c6('0x2'));var rp=require(_0x14c6('0x3'));var moment=require('moment');var BPromise=require(_0x14c6('0x4'));var Mustache=require(_0x14c6('0x5'));var util=require(_0x14c6('0x6'));var path=require(_0x14c6('0x7'));var sox=require(_0x14c6('0x8'));var csv=require(_0x14c6('0x9'));var ejs=require(_0x14c6('0xa'));var fs=require('fs');var fs_extra=require(_0x14c6('0xb'));var _=require(_0x14c6('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x14c6('0xd'));var deskjs=require(_0x14c6('0xe'));var toCsv=require(_0x14c6('0x9'));var querystring=require(_0x14c6('0xf'));var Papa=require('papaparse');var Redis=require(_0x14c6('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x14c6('0x11'));var as=require(_0x14c6('0x12'));var hardwareService=require(_0x14c6('0x13'));var logger=require(_0x14c6('0x14'))(_0x14c6('0x15'));var utils=require(_0x14c6('0x16'));var config=require(_0x14c6('0x17'));var licenseUtil=require(_0x14c6('0x18'));var db=require(_0x14c6('0x19'))['db'];config['redis']=_[_0x14c6('0x1a')](config[_0x14c6('0x1b')],{'host':_0x14c6('0x1c'),'port':0x18eb});var socket=require(_0x14c6('0x1d'))(new Redis(config[_0x14c6('0x1b')]));require(_0x14c6('0x1e'))[_0x14c6('0x1f')](socket);var jayson=require(_0x14c6('0x20'));var client=jayson[_0x14c6('0x21')][_0x14c6('0x22')]({'port':0x232c});var client9002=jayson[_0x14c6('0x21')][_0x14c6('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x3225c8,_0x465aac,_0x283143,_0x16c001){return new BPromise(function(_0xdf08c,_0x430e2d){var _0x3fb081=_0x16c001||client;return _0x3fb081[_0x14c6('0x23')](_0x3225c8,_0x283143)[_0x14c6('0x24')](function(_0x1f4dcf){logger['info'](_0x14c6('0x25'),_0x465aac,_0x14c6('0x26'));logger['debug'](_0x14c6('0x27'),_0x465aac,_0x14c6('0x26'),JSON[_0x14c6('0x28')](_0x1f4dcf));if(_0x1f4dcf[_0x14c6('0x29')]){if(_0x1f4dcf[_0x14c6('0x29')][_0x14c6('0x2a')]===0x1f4){logger[_0x14c6('0x29')](_0x14c6('0x25'),_0x465aac,_0x1f4dcf[_0x14c6('0x29')][_0x14c6('0x2b')]);return _0x430e2d(_0x1f4dcf[_0x14c6('0x29')][_0x14c6('0x2b')]);}logger[_0x14c6('0x29')](_0x14c6('0x25'),_0x465aac,_0x1f4dcf[_0x14c6('0x29')][_0x14c6('0x2b')]);return _0xdf08c(_0x1f4dcf[_0x14c6('0x29')][_0x14c6('0x2b')]);}else{logger[_0x14c6('0x2c')](_0x14c6('0x25'),_0x465aac,_0x14c6('0x26'));_0xdf08c(_0x1f4dcf[_0x14c6('0x2d')][_0x14c6('0x2b')]);}})[_0x14c6('0x2e')](function(_0x2aee9c){logger[_0x14c6('0x29')](_0x14c6('0x25'),_0x465aac,_0x2aee9c);_0x430e2d(_0x2aee9c);});});}function respondWithStatusCode(_0x2267ab,_0x2a1294){_0x2a1294=_0x2a1294||0xcc;return function(_0x10b061){if(_0x10b061){return _0x2267ab[_0x14c6('0x2f')](_0x2a1294);}return _0x2267ab[_0x14c6('0x30')](_0x2a1294)[_0x14c6('0x31')]();};}function respondWithResult(_0xc22962,_0x235b45){_0x235b45=_0x235b45||0xc8;return function(_0x5dcd00){if(_0x5dcd00){return _0xc22962[_0x14c6('0x30')](_0x235b45)[_0x14c6('0x32')](_0x5dcd00);}};}function respondWithFilteredResult(_0x4cdd92,_0x523ad3){return function(_0x5716e6){if(_0x5716e6){var _0x5118db=typeof _0x523ad3[_0x14c6('0x33')]===_0x14c6('0x34')&&typeof _0x523ad3[_0x14c6('0x35')]===_0x14c6('0x34');var _0xb2672c=_0x5716e6['count'];var _0x1b3128=_0x5118db?0x0:_0x523ad3['offset'];var _0x31410a=_0x5118db?_0x5716e6[_0x14c6('0x36')]:_0x523ad3[_0x14c6('0x33')]+_0x523ad3['limit'];var _0x3b4c83;if(_0x31410a>=_0xb2672c){_0x31410a=_0xb2672c;_0x3b4c83=0xc8;}else{_0x3b4c83=0xce;}_0x4cdd92[_0x14c6('0x30')](_0x3b4c83);return _0x4cdd92[_0x14c6('0x37')](_0x14c6('0x38'),_0x1b3128+'-'+_0x31410a+'/'+_0xb2672c)[_0x14c6('0x32')](_0x5716e6);}return null;};}function patchUpdates(_0x1de19c){return function(_0x29b724){try{jsonpatch['apply'](_0x29b724,_0x1de19c,!![]);}catch(_0x5a9d24){return BPromise[_0x14c6('0x39')](_0x5a9d24);}return _0x29b724[_0x14c6('0x3a')]();};}function saveUpdates(_0x900bdd,_0x21fc84){return function(_0x2c4c3b){if(_0x2c4c3b){return _0x2c4c3b['update'](_0x900bdd)[_0x14c6('0x24')](function(_0x53cb08){return _0x53cb08;});}return null;};}function removeEntity(_0x2275e9,_0x408407){return function(_0x4078fa){if(_0x4078fa){return _0x4078fa[_0x14c6('0x3b')]()['then'](function(){_0x2275e9[_0x14c6('0x30')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1d33f2,_0x6f289c){return function(_0x4a4c34){if(!_0x4a4c34){_0x1d33f2[_0x14c6('0x2f')](0x194);}return _0x4a4c34;};}function handleError(_0x2b1ab1,_0x3a3189){_0x3a3189=_0x3a3189||0x1f4;return function(_0x38961f){logger[_0x14c6('0x29')](_0x38961f[_0x14c6('0x3c')]);if(_0x38961f[_0x14c6('0x3d')]){delete _0x38961f[_0x14c6('0x3d')];}_0x2b1ab1[_0x14c6('0x30')](_0x3a3189)['send'](_0x38961f);};}exports['index']=function(_0x19f33d,_0x611084){var _0x3571e2={},_0x33dd84={},_0x450203={'count':0x0,'rows':[]};var _0x726738=_[_0x14c6('0x3e')](db[_0x14c6('0x3f')][_0x14c6('0x40')],function(_0x617567){return{'name':_0x617567['fieldName'],'type':_0x617567[_0x14c6('0x41')][_0x14c6('0x42')]};});_0x33dd84['model']=_['map'](_0x726738,_0x14c6('0x3d'));_0x33dd84[_0x14c6('0x43')]=_[_0x14c6('0x44')](_0x19f33d[_0x14c6('0x43')]);_0x33dd84[_0x14c6('0x45')]=_[_0x14c6('0x46')](_0x33dd84['model'],_0x33dd84['query']);_0x3571e2['attributes']=_[_0x14c6('0x46')](_0x33dd84[_0x14c6('0x47')],qs[_0x14c6('0x48')](_0x19f33d[_0x14c6('0x43')][_0x14c6('0x48')]));_0x3571e2[_0x14c6('0x49')]=_0x3571e2[_0x14c6('0x49')]['length']?_0x3571e2['attributes']:_0x33dd84[_0x14c6('0x47')];if(!_0x19f33d[_0x14c6('0x43')][_0x14c6('0x4a')](_0x14c6('0x4b'))){_0x3571e2[_0x14c6('0x35')]=qs[_0x14c6('0x35')](_0x19f33d[_0x14c6('0x43')]['limit']);_0x3571e2['offset']=qs['offset'](_0x19f33d[_0x14c6('0x43')][_0x14c6('0x33')]);}_0x3571e2[_0x14c6('0x4c')]=qs[_0x14c6('0x4d')](_0x19f33d['query']['sort']);_0x3571e2[_0x14c6('0x4e')]=qs['filters'](_[_0x14c6('0x4f')](_0x19f33d[_0x14c6('0x43')],_0x33dd84[_0x14c6('0x45')]),_0x726738);if(_0x19f33d['query']['filter']){_0x3571e2['where']=_[_0x14c6('0x50')](_0x3571e2['where'],{'$or':_[_0x14c6('0x3e')](_0x726738,function(_0x120a75){if(_0x120a75[_0x14c6('0x41')]!==_0x14c6('0x51')){var _0x3c919f={};_0x3c919f[_0x120a75[_0x14c6('0x3d')]]={'$like':'%'+_0x19f33d[_0x14c6('0x43')][_0x14c6('0x52')]+'%'};return _0x3c919f;}})});}_0x3571e2=_[_0x14c6('0x50')]({},_0x3571e2,_0x19f33d[_0x14c6('0x53')]);var _0x2bb6ae={'where':_0x3571e2[_0x14c6('0x4e')]};return db[_0x14c6('0x3f')]['count'](_0x2bb6ae)[_0x14c6('0x24')](function(_0x36ac81){_0x450203[_0x14c6('0x36')]=_0x36ac81;if(_0x19f33d[_0x14c6('0x43')][_0x14c6('0x54')]){_0x3571e2['include']=[{'all':!![]}];}return db[_0x14c6('0x3f')][_0x14c6('0x55')](_0x3571e2);})[_0x14c6('0x24')](function(_0x1347e2){_0x450203[_0x14c6('0x56')]=_0x1347e2;return _0x450203;})[_0x14c6('0x24')](respondWithFilteredResult(_0x611084,_0x3571e2))['catch'](handleError(_0x611084,null));};exports['show']=function(_0x13e380,_0x31b814){var _0x48d8da={'raw':!![],'where':{'id':_0x13e380[_0x14c6('0x57')]['id']}},_0xf2db={};_0xf2db[_0x14c6('0x47')]=_[_0x14c6('0x44')](db[_0x14c6('0x3f')][_0x14c6('0x40')]);_0xf2db[_0x14c6('0x43')]=_[_0x14c6('0x44')](_0x13e380[_0x14c6('0x43')]);_0xf2db[_0x14c6('0x45')]=_[_0x14c6('0x46')](_0xf2db[_0x14c6('0x47')],_0xf2db[_0x14c6('0x43')]);_0x48d8da[_0x14c6('0x49')]=_[_0x14c6('0x46')](_0xf2db[_0x14c6('0x47')],qs[_0x14c6('0x48')](_0x13e380['query'][_0x14c6('0x48')]));_0x48d8da['attributes']=_0x48d8da[_0x14c6('0x49')]['length']?_0x48d8da['attributes']:_0xf2db[_0x14c6('0x47')];if(_0x13e380['query'][_0x14c6('0x54')]){_0x48d8da[_0x14c6('0x58')]=[{'all':!![]}];}_0x48d8da=_[_0x14c6('0x50')]({},_0x48d8da,_0x13e380[_0x14c6('0x53')]);return db[_0x14c6('0x3f')][_0x14c6('0x59')](_0x48d8da)[_0x14c6('0x24')](handleEntityNotFound(_0x31b814,null))[_0x14c6('0x24')](respondWithResult(_0x31b814,null))[_0x14c6('0x2e')](handleError(_0x31b814,null));};exports['create']=function(_0x39ecf6,_0x37e37f){return db[_0x14c6('0x3f')][_0x14c6('0x5a')](_0x39ecf6['body'],{})[_0x14c6('0x24')](respondWithResult(_0x37e37f,0xc9))[_0x14c6('0x2e')](handleError(_0x37e37f,null));};exports[_0x14c6('0x5b')]=function(_0x5be7b5,_0x533eea){if(_0x5be7b5[_0x14c6('0x5c')]['id']){delete _0x5be7b5[_0x14c6('0x5c')]['id'];}return db[_0x14c6('0x3f')]['find']({'where':{'id':_0x5be7b5['params']['id']}})[_0x14c6('0x24')](handleEntityNotFound(_0x533eea,null))[_0x14c6('0x24')](saveUpdates(_0x5be7b5['body'],null))['then'](respondWithResult(_0x533eea,null))['catch'](handleError(_0x533eea,null));};exports[_0x14c6('0x3b')]=function(_0x54589c,_0x3cf80a){return db[_0x14c6('0x3f')][_0x14c6('0x59')]({'where':{'id':_0x54589c[_0x14c6('0x57')]['id']}})[_0x14c6('0x24')](handleEntityNotFound(_0x3cf80a,null))[_0x14c6('0x24')](removeEntity(_0x3cf80a,null))[_0x14c6('0x2e')](handleError(_0x3cf80a,null));};exports['describe']=function(_0x461b2b,_0x3f156b){return db[_0x14c6('0x3f')][_0x14c6('0x5d')]()[_0x14c6('0x24')](respondWithResult(_0x3f156b,null))[_0x14c6('0x2e')](handleError(_0x3f156b,null));};var interaction_log=require('../../config/logger')('chat-interactions');exports[_0x14c6('0x5e')]=function(_0x35c28c,_0x20ae7b,_0x1f4e25){var _0x18637d={'agent':{},'channel':'chat'};if(_0x35c28c[_0x14c6('0x5c')]['id']){delete _0x35c28c[_0x14c6('0x5c')]['id'];}_0x35c28c['body'][_0x14c6('0x5f')]=!![];_0x35c28c[_0x14c6('0x5c')][_0x14c6('0x60')]=moment()[_0x14c6('0x61')](_0x14c6('0x62'));_0x35c28c['body'][_0x14c6('0x63')]=_0x35c28c[_0x14c6('0x5c')][_0x14c6('0x63')]||_0x35c28c[_0x14c6('0x64')]['id'];_0x18637d['agent']['id']=_0x35c28c[_0x14c6('0x5c')]['UserId'];return db[_0x14c6('0x3f')][_0x14c6('0x59')]({'where':{'id':_0x35c28c[_0x14c6('0x57')]['id'],'UserId':null}})[_0x14c6('0x24')](handleEntityNotFound(_0x20ae7b,null))['then'](saveUpdates(_0x35c28c[_0x14c6('0x5c')],null))[_0x14c6('0x24')](function(_0x1ece0e){if(_0x1ece0e){_0x18637d['message']=_0x1ece0e[_0x14c6('0x65')]({'plain':!![]});return db['ChatInteraction']['find']({'where':{'id':_0x1ece0e[_0x14c6('0x66')]}});}return null;})[_0x14c6('0x24')](handleEntityNotFound(_0x20ae7b,null))[_0x14c6('0x24')](function(_0xfdd731){if(_0xfdd731){return _0xfdd731['update']({'UserId':_0x35c28c[_0x14c6('0x5c')]['UserId'],'read1stAt':_['isNil'](_0xfdd731['read1stAt'])?moment()[_0x14c6('0x61')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x14c6('0x24')](function(_0x169756){if(_0x169756){_0x18637d[_0x14c6('0x67')]=_0x169756[_0x14c6('0x65')]({'plain':!![]});interaction_log[_0x14c6('0x2c')](_0x14c6('0x68'),_0x35c28c[_0x14c6('0x64')]['id'],_0x35c28c[_0x14c6('0x64')]['name'],_0x35c28c['user'][_0x14c6('0x69')],_0x18637d['interaction']['id'],_0x35c28c[_0x14c6('0x5c')]?JSON[_0x14c6('0x28')](_0x35c28c['body']):_0x14c6('0x6a'));return respondWithRpcPromise(_0x14c6('0x6b'),'acceptMessage',_0x18637d);}return null;})[_0x14c6('0x24')](function(_0x5bc264){var _0x23dae8=_0x14c6('0x6c')+_0x5bc264[_0x14c6('0x2b')][_0x14c6('0x6d')];return db[_0x14c6('0x6e')][_0x14c6('0x43')](_0x23dae8,{'type':db[_0x14c6('0x6f')]['QueryTypes'][_0x14c6('0x70')],'raw':!![]})[_0x14c6('0x24')](function(_0x160a6c){return _0x160a6c;});})[_0x14c6('0x24')](function(_0x326e77){if(_0x326e77){_0x18637d[_0x14c6('0x2b')][_0x14c6('0x71')]=_0x326e77[0x0];if(!_0x35c28c[_0x14c6('0x5c')][_0x14c6('0x63')])return;return db[_0x14c6('0x72')][_0x14c6('0x59')]({'where':{'id':_0x35c28c[_0x14c6('0x5c')][_0x14c6('0x63')],'role':_0x14c6('0x73')},'attributes':['id',_0x14c6('0x3d'),_0x14c6('0x74'),_0x14c6('0x75'),_0x14c6('0x76')],'raw':!![]});}return null;})[_0x14c6('0x24')](function(_0x2694ad){if(!_0x2694ad)return null;_0x18637d[_0x14c6('0x2b')][_0x14c6('0x73')]=_0x2694ad;return _0x18637d;})[_0x14c6('0x24')](function(_0x5b5fb5){if(_0x5b5fb5){if(_0x35c28c[_0x14c6('0x5c')][_0x14c6('0x77')]){_0x18637d[_0x14c6('0x2b')][_0x14c6('0x78')]=util[_0x14c6('0x61')](_0x14c6('0x79'),_0x35c28c[_0x14c6('0x64')]['name']);_0x18637d[_0x14c6('0x2b')][_0x14c6('0x7a')]=_0x18637d['channel'];_0x18637d[_0x14c6('0x2b')][_0x14c6('0x7b')]=_0x18637d[_0x14c6('0x7a')];_0x18637d['message']['event']=_0x14c6('0x5e');return respondWithRpcPromise('EventManager',_0x14c6('0x7c'),{'event':_0x14c6('0x7d'),'message':_[_0x14c6('0x50')](_0x18637d[_0x14c6('0x2b')],JSON[_0x14c6('0x7e')](_0x18637d[_0x14c6('0x67')]['formData']))},client9002)[_0x14c6('0x24')](function(){return _0x18637d;});}return _0x18637d;}return null;})[_0x14c6('0x24')](respondWithResult(_0x20ae7b,null))[_0x14c6('0x2e')](handleError(_0x20ae7b,null));};var interaction_log=require('../../config/logger')(_0x14c6('0x7f'));exports[_0x14c6('0x39')]=function(_0x33774a,_0x13a312,_0x59cc98){var _0xc5c849={'agent':{},'channel':'chat'};if(_0x33774a['body']['id']){delete _0x33774a[_0x14c6('0x5c')]['id'];}_0x33774a[_0x14c6('0x5c')]['UserId']=_0x33774a['body']['UserId']||_0x33774a[_0x14c6('0x64')]['id'];_0xc5c849['agent']['id']=_0x33774a['body'][_0x14c6('0x63')];return db[_0x14c6('0x3f')][_0x14c6('0x59')]({'where':{'id':_0x33774a[_0x14c6('0x57')]['id'],'UserId':null}})[_0x14c6('0x24')](handleEntityNotFound(_0x13a312,null))[_0x14c6('0x24')](function(_0x5cbf4d){if(_0x5cbf4d){_0xc5c849[_0x14c6('0x2b')]=_0x5cbf4d[_0x14c6('0x65')]({'plain':!![]});return db[_0x14c6('0x80')]['find']({'where':{'id':_0x5cbf4d['ChatInteractionId']}});}return null;})[_0x14c6('0x24')](handleEntityNotFound(_0x13a312,null))[_0x14c6('0x24')](function(_0x4a7bb6){if(_0x4a7bb6){_0xc5c849[_0x14c6('0x67')]=_0x4a7bb6[_0x14c6('0x65')]({'plain':!![]});interaction_log[_0x14c6('0x2c')](_0x14c6('0x81'),_0x33774a['user']['id'],_0x33774a[_0x14c6('0x64')][_0x14c6('0x3d')],_0x33774a[_0x14c6('0x64')][_0x14c6('0x69')],_0xc5c849[_0x14c6('0x67')]['id'],_0x33774a[_0x14c6('0x5c')]?JSON[_0x14c6('0x28')](_0x33774a['body']):_0x14c6('0x6a'));return respondWithRpcPromise(_0x14c6('0x82'),'rejectMessage',_0xc5c849);}return null;})[_0x14c6('0x24')](function(_0x4046a3){var _0x5de315=_0x14c6('0x6c')+_0x4046a3['message'][_0x14c6('0x6d')];return db[_0x14c6('0x6e')][_0x14c6('0x43')](_0x5de315,{'type':db[_0x14c6('0x6f')][_0x14c6('0x83')][_0x14c6('0x70')],'raw':!![]})[_0x14c6('0x24')](function(_0x5a8df0){return _0x5a8df0;});})[_0x14c6('0x24')](function(_0x340499){if(_0x340499){_0xc5c849[_0x14c6('0x2b')][_0x14c6('0x71')]=_0x340499[0x0];if(!_0x33774a[_0x14c6('0x5c')][_0x14c6('0x63')])return;return db[_0x14c6('0x72')]['find']({'where':{'id':_0x33774a[_0x14c6('0x5c')]['UserId'],'role':_0x14c6('0x73')},'attributes':['id',_0x14c6('0x3d'),_0x14c6('0x74'),_0x14c6('0x75'),'internal'],'raw':!![]});}return null;})[_0x14c6('0x24')](function(_0x3d4e50){if(!_0x3d4e50)return null;_0xc5c849[_0x14c6('0x2b')][_0x14c6('0x73')]=_0x3d4e50;return _0xc5c849;})['then'](function(_0x26e452){if(_0x26e452){_0x26e452[_0x14c6('0x2b')][_0x14c6('0x78')]=util[_0x14c6('0x61')](_0x14c6('0x79'),_0x33774a[_0x14c6('0x64')][_0x14c6('0x3d')]);_0x26e452[_0x14c6('0x2b')][_0x14c6('0x7a')]=_0xc5c849[_0x14c6('0x7a')];_0x26e452['message'][_0x14c6('0x7b')]=_0xc5c849[_0x14c6('0x7a')];_0x26e452['message'][_0x14c6('0x84')]='reject';respondWithRpcPromise(_0x14c6('0x7c'),_0x14c6('0x7c'),{'event':_0x14c6('0x85'),'message':_[_0x14c6('0x50')](_0xc5c849['message'],JSON['parse'](_0xc5c849[_0x14c6('0x67')][_0x14c6('0x86')]))},client9002);return _0xc5c849;}return null;})[_0x14c6('0x24')](respondWithResult(_0x13a312,null))[_0x14c6('0x2e')](handleError(_0x13a312,null));};
\ No newline at end of file
index 5ef8d11..3d97779 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b34=['events','../../mysqldb','setMaxListeners','update','remove','emit','hook','exports'];(function(_0x4e27b7,_0x5a7aed){var _0x2e7285=function(_0x2f529e){while(--_0x2f529e){_0x4e27b7['push'](_0x4e27b7['shift']());}};_0x2e7285(++_0x5a7aed);}(_0x5b34,0x1a0));var _0x45b3=function(_0x10df54,_0x16a38c){_0x10df54=_0x10df54-0x0;var _0x2792b3=_0x5b34[_0x10df54];return _0x2792b3;};'use strict';var EventEmitter=require(_0x45b3('0x0'));var ChatMessage=require(_0x45b3('0x1'))['db']['ChatMessage'];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x45b3('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x45b3('0x3'),'afterDestroy':_0x45b3('0x4')};function emitEvent(_0x3e16f0){return function(_0xe35936,_0x3d3a0e,_0x190673){ChatMessageEvents[_0x45b3('0x5')](_0x3e16f0+':'+_0xe35936['id'],_0xe35936);ChatMessageEvents[_0x45b3('0x5')](_0x3e16f0,_0xe35936);_0x190673(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatMessage[_0x45b3('0x6')](e,emitEvent(event));}}module[_0x45b3('0x7')]=ChatMessageEvents;
\ No newline at end of file
+var _0x4e98=['hasOwnProperty','hook','events','../../mysqldb','ChatMessage','remove','emit'];(function(_0x34a14d,_0xc49d24){var _0x2015f2=function(_0x2a0b48){while(--_0x2a0b48){_0x34a14d['push'](_0x34a14d['shift']());}};_0x2015f2(++_0xc49d24);}(_0x4e98,0x167));var _0x84e9=function(_0x1ee0f6,_0xbea900){_0x1ee0f6=_0x1ee0f6-0x0;var _0x4d9683=_0x4e98[_0x1ee0f6];return _0x4d9683;};'use strict';var EventEmitter=require(_0x84e9('0x0'));var ChatMessage=require(_0x84e9('0x1'))['db'][_0x84e9('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x84e9('0x3')};function emitEvent(_0x52e40b){return function(_0xd3c491,_0x4b141c,_0x4ab407){ChatMessageEvents[_0x84e9('0x4')](_0x52e40b+':'+_0xd3c491['id'],_0xd3c491);ChatMessageEvents[_0x84e9('0x4')](_0x52e40b,_0xd3c491);_0x4ab407(null);};}for(var e in events){if(events[_0x84e9('0x5')](e)){var event=events[e];ChatMessage[_0x84e9('0x6')](e,emitEvent(event));}}module['exports']=ChatMessageEvents;
\ No newline at end of file
index 58cc586..eaf134b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed7a=['fti_chat_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','ChatInteraction','findOne','then','update','catch','error','utf8mb4','utf8mb4_unicode_ci','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./chatMessage.attributes','exports','define','ChatMessage'];(function(_0x17ef82,_0x4864b5){var _0x55001b=function(_0x4fe7c9){while(--_0x4fe7c9){_0x17ef82['push'](_0x17ef82['shift']());}};_0x55001b(++_0x4864b5);}(_0xed7a,0x18c));var _0xaed7=function(_0x32bb96,_0x38b21d){_0x32bb96=_0x32bb96-0x0;var _0xc3c4ca=_0xed7a[_0x32bb96];return _0xc3c4ca;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xaed7('0x0'))('api');var moment=require(_0xaed7('0x1'));var BPromise=require(_0xaed7('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xaed7('0x3'));var rimraf=require(_0xaed7('0x4'));var config=require(_0xaed7('0x5'));var attributes=require(_0xaed7('0x6'));module[_0xaed7('0x7')]=function(_0x5f078,_0x3c9008){return _0x5f078[_0xaed7('0x8')](_0xaed7('0x9'),attributes,{'tableName':'chat_messages','paranoid':![],'indexes':[{'name':_0xaed7('0xa'),'fields':[_0xaed7('0xb')],'type':_0xaed7('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5a9735,_0x4aef4a,_0x2bcfd2){var _0x2cf657=_0x5f078[_0xaed7('0xd')];var _0x36cc25=_0x5a9735[_0xaed7('0xe')]({'plain':!![]});if(_0x36cc25[_0xaed7('0xf')][_0xaed7('0x10')]()==='in'||_0x36cc25[_0xaed7('0xf')]['toLowerCase']()===_0xaed7('0x11')&&!_0x36cc25[_0xaed7('0x12')]&&!_[_0xaed7('0x13')](_0x36cc25[_0xaed7('0x14')])){_0x2cf657[_0xaed7('0x15')][_0xaed7('0x16')]({'where':{'id':_0x36cc25['ChatInteractionId']}})[_0xaed7('0x17')](function(_0xedcd3){if(_0xedcd3){_0xedcd3[_0xaed7('0x18')]({'lastMsgAt':_0x36cc25['createdAt'],'lastMsgDirection':_0x36cc25[_0xaed7('0xf')][_0xaed7('0x10')]()});}})[_0xaed7('0x19')](function(_0x364e90){console[_0xaed7('0x1a')](_0x364e90);});}_0x2bcfd2();}},'charset':_0xaed7('0x1b'),'collate':_0xaed7('0x1c')});};
\ No newline at end of file
+var _0x2cf8=['models','get','direction','toLowerCase','out','secret','isNil','UserId','ChatInteraction','findOne','ChatInteractionId','then','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','../../config/environment','./chatMessage.attributes','exports','define','ChatMessage','chat_messages','fti_chat_messages','FULLTEXT'];(function(_0x5d8cb7,_0x2851f7){var _0xece05d=function(_0x33f59e){while(--_0x33f59e){_0x5d8cb7['push'](_0x5d8cb7['shift']());}};_0xece05d(++_0x2851f7);}(_0x2cf8,0x115));var _0x82cf=function(_0xf2f332,_0x299fbf){_0xf2f332=_0xf2f332-0x0;var _0x56cce3=_0x2cf8[_0xf2f332];return _0x56cce3;};'use strict';var _=require(_0x82cf('0x0'));var util=require(_0x82cf('0x1'));var logger=require(_0x82cf('0x2'))(_0x82cf('0x3'));var moment=require(_0x82cf('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x82cf('0x5'));var attributes=require(_0x82cf('0x6'));module[_0x82cf('0x7')]=function(_0x2830b2,_0x357a20){return _0x2830b2[_0x82cf('0x8')](_0x82cf('0x9'),attributes,{'tableName':_0x82cf('0xa'),'paranoid':![],'indexes':[{'name':_0x82cf('0xb'),'fields':['body'],'type':_0x82cf('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x10dde5,_0x5b9b9a,_0x3f8acf){var _0x114ae6=_0x2830b2[_0x82cf('0xd')];var _0x206441=_0x10dde5[_0x82cf('0xe')]({'plain':!![]});if(_0x206441[_0x82cf('0xf')][_0x82cf('0x10')]()==='in'||_0x206441['direction'][_0x82cf('0x10')]()===_0x82cf('0x11')&&!_0x206441[_0x82cf('0x12')]&&!_[_0x82cf('0x13')](_0x206441[_0x82cf('0x14')])){_0x114ae6[_0x82cf('0x15')][_0x82cf('0x16')]({'where':{'id':_0x206441[_0x82cf('0x17')]}})[_0x82cf('0x18')](function(_0x277a9f){if(_0x277a9f){_0x277a9f['update']({'lastMsgAt':_0x206441['createdAt'],'lastMsgDirection':_0x206441[_0x82cf('0xf')][_0x82cf('0x10')]()});}})[_0x82cf('0x19')](function(_0x39a7c9){console[_0x82cf('0x1a')](_0x39a7c9);});}_0x3f8acf();}},'charset':_0x82cf('0x1b'),'collate':_0x82cf('0x1c')});};
\ No newline at end of file
index ac59b93..99bc655 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe974=['client','http','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','ChatMessage,\x20%s,\x20%s,\x20%s','error','code','message','catch','ChatMessage','create','body','options','raw','debug','CreateChatMessage','stringify','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment'];(function(_0x33514e,_0x2a112c){var _0x552cde=function(_0x2bda6b){while(--_0x2bda6b){_0x33514e['push'](_0x33514e['shift']());}};_0x552cde(++_0x2a112c);}(_0xe974,0x14b));var _0x4e97=function(_0x1bfe2b,_0x34856e){_0x1bfe2b=_0x1bfe2b-0x0;var _0x1477d4=_0xe974[_0x1bfe2b];return _0x1477d4;};'use strict';var _=require(_0x4e97('0x0'));var util=require(_0x4e97('0x1'));var moment=require(_0x4e97('0x2'));var BPromise=require(_0x4e97('0x3'));var rs=require(_0x4e97('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4e97('0x5'))['db'];var utils=require(_0x4e97('0x6'));var logger=require(_0x4e97('0x7'))('rpc');var config=require(_0x4e97('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x4e97('0x9')][_0x4e97('0xa')]({'port':0x232a});config[_0x4e97('0xb')]=_[_0x4e97('0xc')](config['redis'],{'host':_0x4e97('0xd'),'port':0x18eb});var socket=require(_0x4e97('0xe'))(new Redis(config[_0x4e97('0xb')]));require(_0x4e97('0xf'))['register'](socket);function respondWithRpcPromise(_0x4dd8d1,_0x156d55,_0x34fceb){return new BPromise(function(_0x457bee,_0x3a3481){return client[_0x4e97('0x10')](_0x4dd8d1,_0x34fceb)[_0x4e97('0x11')](function(_0x50f084){logger[_0x4e97('0x12')](_0x4e97('0x13'),_0x156d55,_0x4e97('0x14'));logger['debug'](_0x4e97('0x15'),_0x156d55,_0x4e97('0x14'),JSON['stringify'](_0x50f084));if(_0x50f084[_0x4e97('0x16')]){if(_0x50f084['error'][_0x4e97('0x17')]===0x1f4){logger[_0x4e97('0x16')]('ChatMessage,\x20%s,\x20%s',_0x156d55,_0x50f084[_0x4e97('0x16')]['message']);return _0x3a3481(_0x50f084['error'][_0x4e97('0x18')]);}logger[_0x4e97('0x16')](_0x4e97('0x13'),_0x156d55,_0x50f084[_0x4e97('0x16')][_0x4e97('0x18')]);return _0x457bee(_0x50f084[_0x4e97('0x16')][_0x4e97('0x18')]);}else{logger[_0x4e97('0x12')](_0x4e97('0x13'),_0x156d55,'request\x20sent');_0x457bee(_0x50f084['result'][_0x4e97('0x18')]);}})[_0x4e97('0x19')](function(_0x1e68d4){logger[_0x4e97('0x16')]('ChatMessage,\x20%s,\x20%s',_0x156d55,_0x1e68d4);_0x3a3481(_0x1e68d4);});});}exports['CreateChatMessage']=function(_0x12b8e0){var _0x3c692f=this;return new Promise(function(_0x189615,_0x486b51){return db[_0x4e97('0x1a')][_0x4e97('0x1b')](_0x12b8e0[_0x4e97('0x1c')],{'raw':_0x12b8e0[_0x4e97('0x1d')]?_0x12b8e0[_0x4e97('0x1d')][_0x4e97('0x1e')]===undefined?!![]:![]:!![]})[_0x4e97('0x11')](function(_0xa7859f){logger[_0x4e97('0x12')]('CreateChatMessage',_0x12b8e0);logger[_0x4e97('0x1f')](_0x4e97('0x20'),_0x12b8e0,JSON[_0x4e97('0x21')](_0xa7859f));_0x189615(_0xa7859f);})[_0x4e97('0x19')](function(_0x3f4bb3){logger[_0x4e97('0x16')](_0x4e97('0x20'),_0x3f4bb3['message'],_0x12b8e0);_0x486b51(_0x3c692f[_0x4e97('0x16')](0x1f4,_0x3f4bb3[_0x4e97('0x18')]));});});};
\ No newline at end of file
+var _0x8c75=['socket.io-emitter','./chatMessage.socket','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateChatMessage','ChatMessage','create','body','options','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','redis','localhost'];(function(_0x40ac5e,_0x2de228){var _0x2839d6=function(_0x123d47){while(--_0x123d47){_0x40ac5e['push'](_0x40ac5e['shift']());}};_0x2839d6(++_0x2de228);}(_0x8c75,0xbe));var _0x58c7=function(_0x162a08,_0x10430c){_0x162a08=_0x162a08-0x0;var _0x894278=_0x8c75[_0x162a08];return _0x894278;};'use strict';var _=require(_0x58c7('0x0'));var util=require(_0x58c7('0x1'));var moment=require(_0x58c7('0x2'));var BPromise=require(_0x58c7('0x3'));var rs=require(_0x58c7('0x4'));var fs=require('fs');var Redis=require(_0x58c7('0x5'));var db=require(_0x58c7('0x6'))['db'];var utils=require(_0x58c7('0x7'));var logger=require(_0x58c7('0x8'))('rpc');var config=require(_0x58c7('0x9'));var jayson=require(_0x58c7('0xa'));var client=jayson['client'][_0x58c7('0xb')]({'port':0x232a});config[_0x58c7('0xc')]=_['defaults'](config[_0x58c7('0xc')],{'host':_0x58c7('0xd'),'port':0x18eb});var socket=require(_0x58c7('0xe'))(new Redis(config['redis']));require(_0x58c7('0xf'))['register'](socket);function respondWithRpcPromise(_0x251922,_0x386ce7,_0x5f0169){return new BPromise(function(_0x31046b,_0x222934){return client[_0x58c7('0x10')](_0x251922,_0x5f0169)[_0x58c7('0x11')](function(_0x26ce1d){logger[_0x58c7('0x12')](_0x58c7('0x13'),_0x386ce7,_0x58c7('0x14'));logger['debug'](_0x58c7('0x15'),_0x386ce7,_0x58c7('0x14'),JSON[_0x58c7('0x16')](_0x26ce1d));if(_0x26ce1d[_0x58c7('0x17')]){if(_0x26ce1d['error'][_0x58c7('0x18')]===0x1f4){logger[_0x58c7('0x17')]('ChatMessage,\x20%s,\x20%s',_0x386ce7,_0x26ce1d['error'][_0x58c7('0x19')]);return _0x222934(_0x26ce1d[_0x58c7('0x17')]['message']);}logger[_0x58c7('0x17')](_0x58c7('0x13'),_0x386ce7,_0x26ce1d['error'][_0x58c7('0x19')]);return _0x31046b(_0x26ce1d[_0x58c7('0x17')][_0x58c7('0x19')]);}else{logger[_0x58c7('0x12')](_0x58c7('0x13'),_0x386ce7,'request\x20sent');_0x31046b(_0x26ce1d[_0x58c7('0x1a')][_0x58c7('0x19')]);}})[_0x58c7('0x1b')](function(_0x331b78){logger[_0x58c7('0x17')]('ChatMessage,\x20%s,\x20%s',_0x386ce7,_0x331b78);_0x222934(_0x331b78);});});}exports[_0x58c7('0x1c')]=function(_0x3e34b4){var _0x5b2aa5=this;return new Promise(function(_0x1c7d69,_0x2b6141){return db[_0x58c7('0x1d')][_0x58c7('0x1e')](_0x3e34b4[_0x58c7('0x1f')],{'raw':_0x3e34b4[_0x58c7('0x20')]?_0x3e34b4[_0x58c7('0x20')][_0x58c7('0x21')]===undefined?!![]:![]:!![]})[_0x58c7('0x11')](function(_0x475554){logger['info'](_0x58c7('0x1c'),_0x3e34b4);logger['debug'](_0x58c7('0x1c'),_0x3e34b4,JSON[_0x58c7('0x16')](_0x475554));_0x1c7d69(_0x475554);})['catch'](function(_0x2744e6){logger['error'](_0x58c7('0x1c'),_0x2744e6[_0x58c7('0x19')],_0x3e34b4);_0x2b6141(_0x5b2aa5[_0x58c7('0x17')](0x1f4,_0x2744e6[_0x58c7('0x19')]));});});};
\ No newline at end of file
index 7520ce7..561b6e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3b5=['length','remove','update','emit','register'];(function(_0x57a5fe,_0x19b234){var _0x30bf28=function(_0x12e464){while(--_0x12e464){_0x57a5fe['push'](_0x57a5fe['shift']());}};_0x30bf28(++_0x19b234);}(_0xc3b5,0x6f));var _0x5c3b=function(_0x7b60b9,_0x16397b){_0x7b60b9=_0x7b60b9-0x0;var _0xd38b19=_0xc3b5[_0x7b60b9];return _0xd38b19;};'use strict';var ChatMessageEvents=require('./chatMessage.events');var events=['save',_0x5c3b('0x0'),_0x5c3b('0x1')];function createListener(_0xbe95d4,_0x3acf12){return function(_0x2f9a72){_0x3acf12[_0x5c3b('0x2')](_0xbe95d4,_0x2f9a72);};}function removeListener(_0x237a61,_0x48f8a1){return function(){ChatMessageEvents['removeListener'](_0x237a61,_0x48f8a1);};}exports[_0x5c3b('0x3')]=function(_0x6b8a1e){for(var _0x56345e=0x0,_0x568a28=events[_0x5c3b('0x4')];_0x56345e<_0x568a28;_0x56345e++){var _0x420839=events[_0x56345e];var _0x3892ad=createListener('chatMessage:'+_0x420839,_0x6b8a1e);ChatMessageEvents['on'](_0x420839,_0x3892ad);}};
\ No newline at end of file
+var _0xf987=['length','chatMessage:','remove','update','emit','removeListener','register'];(function(_0x107953,_0xe8fe05){var _0x4fec0e=function(_0x1d9849){while(--_0x1d9849){_0x107953['push'](_0x107953['shift']());}};_0x4fec0e(++_0xe8fe05);}(_0xf987,0x18a));var _0x7f98=function(_0x17a7c9,_0x380dda){_0x17a7c9=_0x17a7c9-0x0;var _0x12d5ff=_0xf987[_0x17a7c9];return _0x12d5ff;};'use strict';var ChatMessageEvents=require('./chatMessage.events');var events=['save',_0x7f98('0x0'),_0x7f98('0x1')];function createListener(_0x4d17d6,_0x46c60f){return function(_0x13b552){_0x46c60f[_0x7f98('0x2')](_0x4d17d6,_0x13b552);};}function removeListener(_0x1229f9,_0x1e6caa){return function(){ChatMessageEvents[_0x7f98('0x3')](_0x1229f9,_0x1e6caa);};}exports[_0x7f98('0x4')]=function(_0x3b5abb){for(var _0x3fb8e2=0x0,_0x25001e=events[_0x7f98('0x5')];_0x3fb8e2<_0x25001e;_0x3fb8e2++){var _0x290763=events[_0x3fb8e2];var _0x5bb41e=createListener(_0x7f98('0x6')+_0x290763,_0x3b5abb);ChatMessageEvents['on'](_0x290763,_0x5bb41e);}};
\ No newline at end of file
index 517f4ca..d6ba841 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda01=['reject','delete','/:id','destroy','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatMessage.controller','get','isAuthenticated','index','describe','show','tracked','chat','chatmessage:create','create','put','update','/:id/accept','/:id/reject'];(function(_0x45386d,_0xb9c80f){var _0x10225e=function(_0x7fc66a){while(--_0x7fc66a){_0x45386d['push'](_0x45386d['shift']());}};_0x10225e(++_0xb9c80f);}(_0xda01,0xfe));var _0x1da0=function(_0x540a2b,_0x115752){_0x540a2b=_0x540a2b-0x0;var _0x34f033=_0xda01[_0x540a2b];return _0x34f033;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1da0('0x0'));var timeout=require(_0x1da0('0x1'));var express=require(_0x1da0('0x2'));var router=express[_0x1da0('0x3')]();var fs_extra=require(_0x1da0('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x1da0('0x5'));var config=require(_0x1da0('0x6'));var controller=require(_0x1da0('0x7'));router[_0x1da0('0x8')]('/',auth[_0x1da0('0x9')](),controller[_0x1da0('0xa')]);router[_0x1da0('0x8')]('/describe',auth['isAuthenticated'](),controller[_0x1da0('0xb')]);router[_0x1da0('0x8')]('/:id',auth[_0x1da0('0x9')](),controller[_0x1da0('0xc')]);router['post']('/',auth['isAuthenticated'](),interaction[_0x1da0('0xd')](_0x1da0('0xe'),_0x1da0('0xf')),controller[_0x1da0('0x10')]);router[_0x1da0('0x11')]('/:id',controller[_0x1da0('0x12')]);router[_0x1da0('0x11')](_0x1da0('0x13'),auth[_0x1da0('0x9')](),controller['accept']);router[_0x1da0('0x11')](_0x1da0('0x14'),auth[_0x1da0('0x9')](),controller[_0x1da0('0x15')]);router[_0x1da0('0x16')](_0x1da0('0x17'),auth[_0x1da0('0x9')](),controller[_0x1da0('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0x696c=['accept','/:id/reject','reject','delete','destroy','exports','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatMessage.controller','get','isAuthenticated','index','/describe','/:id','show','post','tracked','chat','chatmessage:create','create','update','put'];(function(_0x3431ba,_0x25c877){var _0x32ce6d=function(_0x1fb351){while(--_0x1fb351){_0x3431ba['push'](_0x3431ba['shift']());}};_0x32ce6d(++_0x25c877);}(_0x696c,0xa8));var _0xc696=function(_0x3a1cca,_0xf9cf7e){_0x3a1cca=_0x3a1cca-0x0;var _0x53b71c=_0x696c[_0x3a1cca];return _0x53b71c;};'use strict';var multer=require('multer');var util=require(_0xc696('0x0'));var path=require(_0xc696('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc696('0x2')]();var fs_extra=require(_0xc696('0x3'));var auth=require(_0xc696('0x4'));var interaction=require(_0xc696('0x5'));var config=require(_0xc696('0x6'));var controller=require(_0xc696('0x7'));router[_0xc696('0x8')]('/',auth[_0xc696('0x9')](),controller[_0xc696('0xa')]);router['get'](_0xc696('0xb'),auth[_0xc696('0x9')](),controller['describe']);router[_0xc696('0x8')](_0xc696('0xc'),auth['isAuthenticated'](),controller[_0xc696('0xd')]);router[_0xc696('0xe')]('/',auth['isAuthenticated'](),interaction[_0xc696('0xf')](_0xc696('0x10'),_0xc696('0x11')),controller[_0xc696('0x12')]);router['put'](_0xc696('0xc'),controller[_0xc696('0x13')]);router[_0xc696('0x14')]('/:id/accept',auth[_0xc696('0x9')](),controller[_0xc696('0x15')]);router[_0xc696('0x14')](_0xc696('0x16'),auth[_0xc696('0x9')](),controller[_0xc696('0x17')]);router[_0xc696('0x18')](_0xc696('0xc'),auth['isAuthenticated'](),controller[_0xc696('0x19')]);module[_0xc696('0x1a')]=router;
\ No newline at end of file
index 93b2c9d..5cc8ca0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['medium','exports','TEXT'];(function(_0x24a90c,_0x1a7405){var _0x43e52e=function(_0x3857a3){while(--_0x3857a3){_0x24a90c['push'](_0x24a90c['shift']());}};_0x43e52e(++_0x1a7405);}(_0x2032,0xd9));var _0x2203=function(_0x21a55c,_0x3518e8){_0x21a55c=_0x21a55c-0x0;var _0x389756=_0x2032[_0x21a55c];return _0x389756;};'use strict';var Sequelize=require('sequelize');module[_0x2203('0x0')]={'body':{'type':Sequelize[_0x2203('0x1')](_0x2203('0x2')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT'](_0x2203('0x2')),'allowNull':![]}};
\ No newline at end of file
+var _0xdb28=['TEXT','medium','sequelize','exports'];(function(_0xe29c16,_0x4a45fe){var _0x5daaf4=function(_0x1e0d4b){while(--_0x1e0d4b){_0xe29c16['push'](_0xe29c16['shift']());}};_0x5daaf4(++_0x4a45fe);}(_0xdb28,0x106));var _0x8db2=function(_0x53f735,_0xaff0eb){_0x53f735=_0x53f735-0x0;var _0x3b138c=_0xdb28[_0x53f735];return _0x3b138c;};'use strict';var Sequelize=require(_0x8db2('0x0'));module[_0x8db2('0x1')]={'body':{'type':Sequelize[_0x8db2('0x2')](_0x8db2('0x3')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT'](_0x8db2('0x3')),'allowNull':![]}};
\ No newline at end of file
index 08c820e..ab17aaf 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(_0xd1d19a,_0x1933f0){var _0x52a79d=function(_0x5199e2){while(--_0x5199e2){_0xd1d19a['push'](_0xd1d19a['shift']());}};_0x52a79d(++_0x1933f0);}(_0x7a54,0x106));var _0x47a5=function(_0xb10ad4,_0x18adb4){_0xb10ad4=_0xb10ad4-0x0;var _0x2c8ca1=_0x7a54[_0xb10ad4];return _0x2c8ca1;};'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 _0x9957=['sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','index','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','ChatOfflineMessage','findAll','rows','show','rawAttributes','includeAll','include','find','create','catch','body','params','Attachment','forEach','join','root','server','files','attachments','basename','existsSync','remove','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb'];(function(_0x425e5b,_0x4f2d39){var _0x186e94=function(_0x2f4231){while(--_0x2f4231){_0x425e5b['push'](_0x425e5b['shift']());}};_0x186e94(++_0x4f2d39);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){var _0x514445={},_0x456a28={},_0x3250e0={'count':0x0,'rows':[]};var _0x4253e5=_['map'](db['ChatOfflineMessage']['rawAttributes'],function(_0x3573be){return{'name':_0x3573be[_0x7995('0x2c')],'type':_0x3573be[_0x7995('0x2d')][_0x7995('0x2e')]};});_0x456a28[_0x7995('0x2f')]=_[_0x7995('0x30')](_0x4253e5,'name');_0x456a28['query']=_[_0x7995('0x31')](_0x4b6f99['query']);_0x456a28[_0x7995('0x32')]=_[_0x7995('0x33')](_0x456a28[_0x7995('0x2f')],_0x456a28[_0x7995('0x34')]);_0x514445[_0x7995('0x35')]=_['intersection'](_0x456a28[_0x7995('0x2f')],qs[_0x7995('0x36')](_0x4b6f99['query']['fields']));_0x514445['attributes']=_0x514445[_0x7995('0x35')][_0x7995('0x37')]?_0x514445['attributes']:_0x456a28[_0x7995('0x2f')];if(!_0x4b6f99['query'][_0x7995('0x38')](_0x7995('0x39'))){_0x514445[_0x7995('0x21')]=qs['limit'](_0x4b6f99['query'][_0x7995('0x21')]);_0x514445['offset']=qs['offset'](_0x4b6f99[_0x7995('0x34')][_0x7995('0x20')]);}_0x514445['order']=qs[_0x7995('0x3a')](_0x4b6f99[_0x7995('0x34')][_0x7995('0x3a')]);_0x514445[_0x7995('0x3b')]=qs[_0x7995('0x32')](_['pick'](_0x4b6f99[_0x7995('0x34')],_0x456a28[_0x7995('0x32')]),_0x4253e5);if(_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]){_0x514445['where']=_[_0x7995('0x3d')](_0x514445[_0x7995('0x3b')],{'$or':_[_0x7995('0x30')](_0x4253e5,function(_0xe5ea43){if(_0xe5ea43[_0x7995('0x2d')]!==_0x7995('0x3e')){var _0x5688a1={};_0x5688a1[_0xe5ea43[_0x7995('0x29')]]={'$like':'%'+_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]+'%'};return _0x5688a1;}})});}_0x514445=_[_0x7995('0x3d')]({},_0x514445,_0x4b6f99[_0x7995('0x3f')]);var _0x298fc2={'where':_0x514445[_0x7995('0x3b')]};return db[_0x7995('0x40')][_0x7995('0x1f')](_0x298fc2)[_0x7995('0x26')](function(_0x6fe77b){_0x3250e0[_0x7995('0x1f')]=_0x6fe77b;if(_0x4b6f99[_0x7995('0x34')]['includeAll']){_0x514445['include']=[{'all':!![]}];}return db[_0x7995('0x40')][_0x7995('0x41')](_0x514445);})['then'](function(_0x4b0855){_0x3250e0[_0x7995('0x42')]=_0x4b0855;return _0x3250e0;})['then'](respondWithFilteredResult(_0x9b2a15,_0x514445))['catch'](handleError(_0x9b2a15,null));};exports[_0x7995('0x43')]=function(_0x36e28b,_0x35c8ff){var _0x576b96={'raw':!![],'where':{'id':_0x36e28b['params']['id']}},_0x46ac4f={};_0x46ac4f[_0x7995('0x2f')]=_['keys'](db['ChatOfflineMessage'][_0x7995('0x44')]);_0x46ac4f[_0x7995('0x34')]=_[_0x7995('0x31')](_0x36e28b[_0x7995('0x34')]);_0x46ac4f['filters']=_[_0x7995('0x33')](_0x46ac4f[_0x7995('0x2f')],_0x46ac4f[_0x7995('0x34')]);_0x576b96[_0x7995('0x35')]=_['intersection'](_0x46ac4f['model'],qs[_0x7995('0x36')](_0x36e28b['query'][_0x7995('0x36')]));_0x576b96['attributes']=_0x576b96[_0x7995('0x35')]['length']?_0x576b96[_0x7995('0x35')]:_0x46ac4f[_0x7995('0x2f')];if(_0x36e28b['query'][_0x7995('0x45')]){_0x576b96[_0x7995('0x46')]=[{'all':!![]}];}_0x576b96=_[_0x7995('0x3d')]({},_0x576b96,_0x36e28b[_0x7995('0x3f')]);return db['ChatOfflineMessage'][_0x7995('0x47')](_0x576b96)[_0x7995('0x26')](handleEntityNotFound(_0x35c8ff,null))[_0x7995('0x26')](respondWithResult(_0x35c8ff,null))['catch'](handleError(_0x35c8ff,null));};exports[_0x7995('0x48')]=function(_0x44f516,_0x511567){return db[_0x7995('0x40')][_0x7995('0x48')](_0x44f516['body'],{})[_0x7995('0x26')](respondWithResult(_0x511567,0xc9))[_0x7995('0x49')](handleError(_0x511567,null));};exports['update']=function(_0x3d1dbb,_0x5843ba){if(_0x3d1dbb[_0x7995('0x4a')]['id']){delete _0x3d1dbb[_0x7995('0x4a')]['id'];}return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x3d1dbb[_0x7995('0x4b')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x5843ba,null))[_0x7995('0x26')](saveUpdates(_0x3d1dbb['body'],null))[_0x7995('0x26')](respondWithResult(_0x5843ba,null))[_0x7995('0x49')](handleError(_0x5843ba,null));};exports[_0x7995('0x27')]=function(_0x4ffc8a,_0x19da63){return db[_0x7995('0x4c')][_0x7995('0x41')]({'where':{'ChatOfflineMessageId':_0x4ffc8a['params']['id']},'raw':!![]})['then'](function(_0x5a592e){_0x5a592e[_0x7995('0x4d')](function(_0x1fd1ca){var _0x4cf5db=path[_0x7995('0x4e')](config[_0x7995('0x4f')],_0x7995('0x50'),_0x7995('0x51'),_0x7995('0x52'),'offline-chat',_0x1fd1ca[_0x7995('0x53')]);var _0x4ab09f=fs[_0x7995('0x54')](_0x4cf5db);if(_0x4ab09f)fs_extra[_0x7995('0x55')](_0x4cf5db);});})[_0x7995('0x26')](function(){return db['ChatOfflineMessage']['find']({'where':{'id':_0x4ffc8a['params']['id']},'individualHooks':!![]});})['then'](handleEntityNotFound(_0x19da63,null))[_0x7995('0x26')](removeEntity(_0x19da63,null))[_0x7995('0x49')](handleError(_0x19da63,null));};exports[_0x7995('0x56')]=function(_0x150261,_0x1d957e){return db[_0x7995('0x40')][_0x7995('0x56')]()[_0x7995('0x26')](respondWithResult(_0x1d957e,null))[_0x7995('0x49')](handleError(_0x1d957e,null));};
\ No newline at end of file
index ca5d6a3..df7a0d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf739=['hook','exports','../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x2e2681,_0x4089c1){var _0x368a64=function(_0x267262){while(--_0x267262){_0x2e2681['push'](_0x2e2681['shift']());}};_0x368a64(++_0x4089c1);}(_0xf739,0x1df));var _0x9f73=function(_0x1e5a3e,_0x30b4fe){_0x1e5a3e=_0x1e5a3e-0x0;var _0x2b283e=_0xf739[_0x1e5a3e];return _0x2b283e;};'use strict';var EventEmitter=require('events');var ChatOfflineMessage=require(_0x9f73('0x0'))['db']['ChatOfflineMessage'];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents[_0x9f73('0x1')](0x0);var events={'afterCreate':_0x9f73('0x2'),'afterUpdate':_0x9f73('0x3'),'afterDestroy':_0x9f73('0x4')};function emitEvent(_0x263c68){return function(_0x414d5c,_0x32a594,_0x418124){ChatOfflineMessageEvents['emit'](_0x263c68+':'+_0x414d5c['id'],_0x414d5c);ChatOfflineMessageEvents[_0x9f73('0x5')](_0x263c68,_0x414d5c);_0x418124(null);};}for(var e in events){if(events[_0x9f73('0x6')](e)){var event=events[e];ChatOfflineMessage[_0x9f73('0x7')](e,emitEvent(event));}}module[_0x9f73('0x8')]=ChatOfflineMessageEvents;
\ No newline at end of file
+var _0x227a=['remove','emit','hasOwnProperty','hook','events','../../mysqldb','ChatOfflineMessage','setMaxListeners','save','update'];(function(_0x3d42d8,_0x4cffaa){var _0x27fc41=function(_0x3a363b){while(--_0x3a363b){_0x3d42d8['push'](_0x3d42d8['shift']());}};_0x27fc41(++_0x4cffaa);}(_0x227a,0x1b2));var _0xa227=function(_0x32f216,_0x5bb2cf){_0x32f216=_0x32f216-0x0;var _0xc41767=_0x227a[_0x32f216];return _0xc41767;};'use strict';var EventEmitter=require(_0xa227('0x0'));var ChatOfflineMessage=require(_0xa227('0x1'))['db'][_0xa227('0x2')];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents[_0xa227('0x3')](0x0);var events={'afterCreate':_0xa227('0x4'),'afterUpdate':_0xa227('0x5'),'afterDestroy':_0xa227('0x6')};function emitEvent(_0x43781d){return function(_0x12426f,_0x3833de,_0xe0869d){ChatOfflineMessageEvents['emit'](_0x43781d+':'+_0x12426f['id'],_0x12426f);ChatOfflineMessageEvents[_0xa227('0x7')](_0x43781d,_0x12426f);_0xe0869d(null);};}for(var e in events){if(events[_0xa227('0x8')](e)){var event=events[e];ChatOfflineMessage[_0xa227('0x9')](e,emitEvent(event));}}module['exports']=ChatOfflineMessageEvents;
\ No newline at end of file
index 08e5e96..b5bf840 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa9f=['utf8mb4_unicode_ci','./chatOfflineMessage.attributes','exports','define','ChatOfflineMessage','chat_offline_messages','utf8mb4'];(function(_0x1f9f37,_0x18776e){var _0x21c080=function(_0x4acb93){while(--_0x4acb93){_0x1f9f37['push'](_0x1f9f37['shift']());}};_0x21c080(++_0x18776e);}(_0xfa9f,0x120));var _0xffa9=function(_0x2b3478,_0x58afd7){_0x2b3478=_0x2b3478-0x0;var _0x1c106f=_0xfa9f[_0x2b3478];return _0x1c106f;};'use strict';var attributes=require(_0xffa9('0x0'));module[_0xffa9('0x1')]=function(_0x162d0e){return _0x162d0e[_0xffa9('0x2')](_0xffa9('0x3'),attributes,{'tableName':_0xffa9('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xffa9('0x5'),'collate':_0xffa9('0x6')});};
\ No newline at end of file
+var _0x5ff6=['utf8mb4','utf8mb4_unicode_ci','exports','define','ChatOfflineMessage','chat_offline_messages'];(function(_0x85047b,_0x5aef26){var _0x56b415=function(_0x688e38){while(--_0x688e38){_0x85047b['push'](_0x85047b['shift']());}};_0x56b415(++_0x5aef26);}(_0x5ff6,0x1d6));var _0x65ff=function(_0x1e58d6,_0x634895){_0x1e58d6=_0x1e58d6-0x0;var _0x481a37=_0x5ff6[_0x1e58d6];return _0x481a37;};'use strict';var attributes=require('./chatOfflineMessage.attributes');module[_0x65ff('0x0')]=function(_0x2290be){return _0x2290be[_0x65ff('0x1')](_0x65ff('0x2'),attributes,{'tableName':_0x65ff('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x65ff('0x4'),'collate':_0x65ff('0x5')});};
\ No newline at end of file
index 8827e96..bbab87e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x048c=['randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','ChatOfflineMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','lodash','util','moment','bluebird'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x048c,0xc4));var _0xc048=function(_0x4a62ed,_0x47ac85){_0x4a62ed=_0x4a62ed-0x0;var _0x5cd891=_0x048c[_0x4a62ed];return _0x5cd891;};'use strict';var _=require(_0xc048('0x0'));var util=require(_0xc048('0x1'));var moment=require(_0xc048('0x2'));var BPromise=require(_0xc048('0x3'));var rs=require(_0xc048('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc048('0x5'))['db'];var utils=require(_0xc048('0x6'));var logger=require(_0xc048('0x7'))(_0xc048('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc048('0x9')][_0xc048('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x55d6e5,_0x30377b,_0x400714){return new BPromise(function(_0x46eed0,_0x548bf9){return client[_0xc048('0xb')](_0x55d6e5,_0x400714)['then'](function(_0x414b50){logger['info'](_0xc048('0xc'),_0x30377b,'request\x20sent');logger[_0xc048('0xd')]('ChatOfflineMessage,\x20%s,\x20%s,\x20%s',_0x30377b,_0xc048('0xe'),JSON[_0xc048('0xf')](_0x414b50));if(_0x414b50[_0xc048('0x10')]){if(_0x414b50[_0xc048('0x10')][_0xc048('0x11')]===0x1f4){logger[_0xc048('0x10')](_0xc048('0xc'),_0x30377b,_0x414b50[_0xc048('0x10')]['message']);return _0x548bf9(_0x414b50[_0xc048('0x10')][_0xc048('0x12')]);}logger[_0xc048('0x10')](_0xc048('0xc'),_0x30377b,_0x414b50[_0xc048('0x10')][_0xc048('0x12')]);return _0x46eed0(_0x414b50['error'][_0xc048('0x12')]);}else{logger['info']('ChatOfflineMessage,\x20%s,\x20%s',_0x30377b,_0xc048('0xe'));_0x46eed0(_0x414b50[_0xc048('0x13')][_0xc048('0x12')]);}})['catch'](function(_0xee157){logger[_0xc048('0x10')](_0xc048('0xc'),_0x30377b,_0xee157);_0x548bf9(_0xee157);});});}
\ No newline at end of file
+var _0x45c9=['catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result'];(function(_0x236e3f,_0x3b49f5){var _0x5cb59b=function(_0x33ebbb){while(--_0x33ebbb){_0x236e3f['push'](_0x236e3f['shift']());}};_0x5cb59b(++_0x3b49f5);}(_0x45c9,0xc1));var _0x945c=function(_0x5d72c1,_0x1f0915){_0x5d72c1=_0x5d72c1-0x0;var _0x312800=_0x45c9[_0x5d72c1];return _0x312800;};'use strict';var _=require(_0x945c('0x0'));var util=require(_0x945c('0x1'));var moment=require(_0x945c('0x2'));var BPromise=require(_0x945c('0x3'));var rs=require(_0x945c('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x945c('0x5'))['db'];var utils=require(_0x945c('0x6'));var logger=require(_0x945c('0x7'))(_0x945c('0x8'));var config=require('../../config/environment');var jayson=require(_0x945c('0x9'));var client=jayson[_0x945c('0xa')][_0x945c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1c15dd,_0x25d70b,_0x35efe2){return new BPromise(function(_0x429c71,_0x56d709){return client[_0x945c('0xc')](_0x1c15dd,_0x35efe2)[_0x945c('0xd')](function(_0x1119e6){logger['info'](_0x945c('0xe'),_0x25d70b,_0x945c('0xf'));logger['debug'](_0x945c('0x10'),_0x25d70b,'request\x20sent',JSON[_0x945c('0x11')](_0x1119e6));if(_0x1119e6[_0x945c('0x12')]){if(_0x1119e6[_0x945c('0x12')][_0x945c('0x13')]===0x1f4){logger[_0x945c('0x12')](_0x945c('0xe'),_0x25d70b,_0x1119e6['error'][_0x945c('0x14')]);return _0x56d709(_0x1119e6[_0x945c('0x12')][_0x945c('0x14')]);}logger[_0x945c('0x12')](_0x945c('0xe'),_0x25d70b,_0x1119e6[_0x945c('0x12')][_0x945c('0x14')]);return _0x429c71(_0x1119e6[_0x945c('0x12')][_0x945c('0x14')]);}else{logger[_0x945c('0x15')](_0x945c('0xe'),_0x25d70b,'request\x20sent');_0x429c71(_0x1119e6[_0x945c('0x16')][_0x945c('0x14')]);}})[_0x945c('0x17')](function(_0x19a12a){logger['error'](_0x945c('0xe'),_0x25d70b,_0x19a12a);_0x56d709(_0x19a12a);});});}
\ No newline at end of file
index f1587ce..1fbe040 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7723=['./chatOfflineMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x45eea3,_0x43b0d0){var _0x433c31=function(_0xde8830){while(--_0xde8830){_0x45eea3['push'](_0x45eea3['shift']());}};_0x433c31(++_0x43b0d0);}(_0x7723,0x1d9));var _0x3772=function(_0x430ba2,_0x5958c7){_0x430ba2=_0x430ba2-0x0;var _0x4c5da2=_0x7723[_0x430ba2];return _0x4c5da2;};'use strict';var multer=require(_0x3772('0x0'));var util=require('util');var path=require(_0x3772('0x1'));var timeout=require('connect-timeout');var express=require(_0x3772('0x2'));var router=express[_0x3772('0x3')]();var fs_extra=require(_0x3772('0x4'));var auth=require(_0x3772('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x3772('0x6'));var controller=require(_0x3772('0x7'));router[_0x3772('0x8')]('/',auth[_0x3772('0x9')](),controller[_0x3772('0xa')]);router[_0x3772('0x8')](_0x3772('0xb'),auth[_0x3772('0x9')](),controller[_0x3772('0xc')]);router['get'](_0x3772('0xd'),auth['isAuthenticated'](),controller[_0x3772('0xe')]);router[_0x3772('0xf')]('/',auth[_0x3772('0x9')](),controller[_0x3772('0x10')]);router['put'](_0x3772('0xd'),auth[_0x3772('0x9')](),controller['update']);router[_0x3772('0x11')](_0x3772('0xd'),auth[_0x3772('0x9')](),controller[_0x3772('0x12')]);module[_0x3772('0x13')]=router;
\ No newline at end of file
+var _0xbc0b=['index','/describe','isAuthenticated','/:id','show','post','create','put','update','delete','destroy','exports','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x773fcc,_0x1f31c5){var _0x12281f=function(_0x42b68f){while(--_0x42b68f){_0x773fcc['push'](_0x773fcc['shift']());}};_0x12281f(++_0x1f31c5);}(_0xbc0b,0xf0));var _0xbbc0=function(_0x82129b,_0x484ae9){_0x82129b=_0x82129b-0x0;var _0x2ae5dc=_0xbc0b[_0x82129b];return _0x2ae5dc;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xbbc0('0x0'));var express=require(_0xbbc0('0x1'));var router=express['Router']();var fs_extra=require(_0xbbc0('0x2'));var auth=require(_0xbbc0('0x3'));var interaction=require(_0xbbc0('0x4'));var config=require(_0xbbc0('0x5'));var controller=require('./chatOfflineMessage.controller');router[_0xbbc0('0x6')]('/',auth['isAuthenticated'](),controller[_0xbbc0('0x7')]);router[_0xbbc0('0x6')](_0xbbc0('0x8'),auth[_0xbbc0('0x9')](),controller['describe']);router['get'](_0xbbc0('0xa'),auth[_0xbbc0('0x9')](),controller[_0xbbc0('0xb')]);router[_0xbbc0('0xc')]('/',auth[_0xbbc0('0x9')](),controller[_0xbbc0('0xd')]);router[_0xbbc0('0xe')](_0xbbc0('0xa'),auth[_0xbbc0('0x9')](),controller[_0xbbc0('0xf')]);router[_0xbbc0('0x10')](_0xbbc0('0xa'),auth[_0xbbc0('0x9')](),controller[_0xbbc0('0x11')]);module[_0xbbc0('0x12')]=router;
\ No newline at end of file
index a5a6606..c454201 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd448=['STRING','mouseOver','timeout','INTEGER','sequelize'];(function(_0xa5c13c,_0x52c0aa){var _0xc2dad3=function(_0x282fef){while(--_0x282fef){_0xa5c13c['push'](_0xa5c13c['shift']());}};_0xc2dad3(++_0x52c0aa);}(_0xd448,0x11c));var _0x8d44=function(_0x541817,_0x42ce68){_0x541817=_0x541817-0x0;var _0x46a287=_0xd448[_0x541817];return _0x46a287;};'use strict';var Sequelize=require(_0x8d44('0x0'));module['exports']={'name':{'type':Sequelize[_0x8d44('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x8d44('0x2'),_0x8d44('0x3')),'defaultValue':_0x8d44('0x2')},'selector':{'type':Sequelize[_0x8d44('0x1')]},'timeout':{'type':Sequelize[_0x8d44('0x4')]}};
\ No newline at end of file
+var _0x3766=['INTEGER','sequelize','STRING','ENUM','mouseOver'];(function(_0x4b8663,_0x272124){var _0x13cbcb=function(_0x244f0f){while(--_0x244f0f){_0x4b8663['push'](_0x4b8663['shift']());}};_0x13cbcb(++_0x272124);}(_0x3766,0xbf));var _0x6376=function(_0xba0394,_0x2c6844){_0xba0394=_0xba0394-0x0;var _0x1789dd=_0x3766[_0xba0394];return _0x1789dd;};'use strict';var Sequelize=require(_0x6376('0x0'));module['exports']={'name':{'type':Sequelize[_0x6376('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x6376('0x2')](_0x6376('0x3'),'timeout'),'defaultValue':_0x6376('0x3')},'selector':{'type':Sequelize[_0x6376('0x1')]},'timeout':{'type':Sequelize[_0x6376('0x4')]}};
\ No newline at end of file
index 6281389..e518782 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x207c=['rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','error','name','send','show','params','model','keys','ChatProactiveAction','rawAttributes','query','filters','intersection','attributes','fields','length','includeAll','include','merge','options','find','catch','create','body','update'];(function(_0x521000,_0x36ffa7){var _0x465c9e=function(_0x3a9287){while(--_0x3a9287){_0x521000['push'](_0x521000['shift']());}};_0x465c9e(++_0x36ffa7);}(_0x207c,0x1e8));var _0xc207=function(_0xc8966a,_0x19753d){_0xc8966a=_0xc8966a-0x0;var _0x2a3be4=_0x207c[_0xc8966a];return _0x2a3be4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc207('0x0'));var zipdir=require(_0xc207('0x1'));var jsonpatch=require(_0xc207('0x2'));var rp=require(_0xc207('0x3'));var moment=require(_0xc207('0x4'));var BPromise=require(_0xc207('0x5'));var Mustache=require(_0xc207('0x6'));var util=require('util');var path=require(_0xc207('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc207('0x8'));var _=require(_0xc207('0x9'));var squel=require(_0xc207('0xa'));var crypto=require('crypto');var jsforce=require(_0xc207('0xb'));var deskjs=require(_0xc207('0xc'));var toCsv=require(_0xc207('0xd'));var querystring=require('querystring');var Papa=require(_0xc207('0xe'));var Redis=require(_0xc207('0xf'));var authService=require(_0xc207('0x10'));var qs=require(_0xc207('0x11'));var as=require(_0xc207('0x12'));var hardwareService=require(_0xc207('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xc207('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xc207('0x15'))['db'];function respondWithStatusCode(_0x2782ce,_0x59d401){_0x59d401=_0x59d401||0xcc;return function(_0x3e1108){if(_0x3e1108){return _0x2782ce[_0xc207('0x16')](_0x59d401);}return _0x2782ce[_0xc207('0x17')](_0x59d401)[_0xc207('0x18')]();};}function respondWithResult(_0xe993a0,_0x51e967){_0x51e967=_0x51e967||0xc8;return function(_0xc62672){if(_0xc62672){return _0xe993a0[_0xc207('0x17')](_0x51e967)[_0xc207('0x19')](_0xc62672);}};}function respondWithFilteredResult(_0x4031ad,_0x4ef6c4){return function(_0x564cef){if(_0x564cef){var _0x554e5c=typeof _0x4ef6c4[_0xc207('0x1a')]===_0xc207('0x1b')&&typeof _0x4ef6c4[_0xc207('0x1c')]===_0xc207('0x1b');var _0x4b8f44=_0x564cef[_0xc207('0x1d')];var _0x282595=_0x554e5c?0x0:_0x4ef6c4[_0xc207('0x1a')];var _0x5f288e=_0x554e5c?_0x564cef[_0xc207('0x1d')]:_0x4ef6c4['offset']+_0x4ef6c4[_0xc207('0x1c')];var _0x33ddb1;if(_0x5f288e>=_0x4b8f44){_0x5f288e=_0x4b8f44;_0x33ddb1=0xc8;}else{_0x33ddb1=0xce;}_0x4031ad[_0xc207('0x17')](_0x33ddb1);return _0x4031ad[_0xc207('0x1e')](_0xc207('0x1f'),_0x282595+'-'+_0x5f288e+'/'+_0x4b8f44)[_0xc207('0x19')](_0x564cef);}return null;};}function patchUpdates(_0x35c0b0){return function(_0x464dea){try{jsonpatch[_0xc207('0x20')](_0x464dea,_0x35c0b0,!![]);}catch(_0x2bd2eb){return BPromise[_0xc207('0x21')](_0x2bd2eb);}return _0x464dea[_0xc207('0x22')]();};}function saveUpdates(_0x40de25,_0x4b52a7){return function(_0x163b36){if(_0x163b36){return _0x163b36['update'](_0x40de25)[_0xc207('0x23')](function(_0x3ac142){return _0x3ac142;});}return null;};}function removeEntity(_0x1eabe8,_0x83253f){return function(_0x3539f4){if(_0x3539f4){return _0x3539f4[_0xc207('0x24')]()[_0xc207('0x23')](function(){_0x1eabe8[_0xc207('0x17')](0xcc)[_0xc207('0x18')]();});}};}function handleEntityNotFound(_0x2385f7,_0x25c91e){return function(_0x27df03){if(!_0x27df03){_0x2385f7[_0xc207('0x16')](0x194);}return _0x27df03;};}function handleError(_0x138970,_0x1445d3){_0x1445d3=_0x1445d3||0x1f4;return function(_0x56a066){logger[_0xc207('0x25')](_0x56a066['stack']);if(_0x56a066['name']){delete _0x56a066[_0xc207('0x26')];}_0x138970[_0xc207('0x17')](_0x1445d3)[_0xc207('0x27')](_0x56a066);};}exports[_0xc207('0x28')]=function(_0x6a653d,_0x478af7){var _0xe5e848={'raw':!![],'where':{'id':_0x6a653d[_0xc207('0x29')]['id']}},_0x463ac8={};_0x463ac8[_0xc207('0x2a')]=_[_0xc207('0x2b')](db[_0xc207('0x2c')][_0xc207('0x2d')]);_0x463ac8[_0xc207('0x2e')]=_[_0xc207('0x2b')](_0x6a653d[_0xc207('0x2e')]);_0x463ac8[_0xc207('0x2f')]=_[_0xc207('0x30')](_0x463ac8[_0xc207('0x2a')],_0x463ac8['query']);_0xe5e848[_0xc207('0x31')]=_[_0xc207('0x30')](_0x463ac8[_0xc207('0x2a')],qs[_0xc207('0x32')](_0x6a653d[_0xc207('0x2e')][_0xc207('0x32')]));_0xe5e848['attributes']=_0xe5e848[_0xc207('0x31')][_0xc207('0x33')]?_0xe5e848[_0xc207('0x31')]:_0x463ac8[_0xc207('0x2a')];if(_0x6a653d['query'][_0xc207('0x34')]){_0xe5e848[_0xc207('0x35')]=[{'all':!![]}];}_0xe5e848=_[_0xc207('0x36')]({},_0xe5e848,_0x6a653d[_0xc207('0x37')]);return db[_0xc207('0x2c')][_0xc207('0x38')](_0xe5e848)[_0xc207('0x23')](handleEntityNotFound(_0x478af7,null))[_0xc207('0x23')](respondWithResult(_0x478af7,null))[_0xc207('0x39')](handleError(_0x478af7,null));};exports['create']=function(_0x48d8a4,_0x188c39){return db[_0xc207('0x2c')][_0xc207('0x3a')](_0x48d8a4[_0xc207('0x3b')],{})['then'](respondWithResult(_0x188c39,0xc9))[_0xc207('0x39')](handleError(_0x188c39,null));};exports[_0xc207('0x3c')]=function(_0x20a5eb,_0x2a1c60){if(_0x20a5eb[_0xc207('0x3b')]['id']){delete _0x20a5eb['body']['id'];}return db[_0xc207('0x2c')][_0xc207('0x38')]({'where':{'id':_0x20a5eb['params']['id']}})[_0xc207('0x23')](handleEntityNotFound(_0x2a1c60,null))['then'](saveUpdates(_0x20a5eb[_0xc207('0x3b')],null))[_0xc207('0x23')](respondWithResult(_0x2a1c60,null))['catch'](handleError(_0x2a1c60,null));};exports[_0xc207('0x24')]=function(_0x95e166,_0x3313b1){return db['ChatProactiveAction']['find']({'where':{'id':_0x95e166[_0xc207('0x29')]['id']}})[_0xc207('0x23')](handleEntityNotFound(_0x3313b1,null))[_0xc207('0x23')](removeEntity(_0x3313b1,null))[_0xc207('0x39')](handleError(_0x3313b1,null));};
\ No newline at end of file
+var _0x624c=['sendStatus','error','stack','name','params','model','ChatProactiveAction','rawAttributes','query','keys','attributes','intersection','fields','length','includeAll','include','merge','options','catch','create','body','find','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','end'];(function(_0x2dfc85,_0x4817d0){var _0x21ea58=function(_0x1de843){while(--_0x1de843){_0x2dfc85['push'](_0x2dfc85['shift']());}};_0x21ea58(++_0x4817d0);}(_0x624c,0x1ee));var _0xc624=function(_0x3677b4,_0x22651e){_0x3677b4=_0x3677b4-0x0;var _0x4636de=_0x624c[_0x3677b4];return _0x4636de;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc624('0x0'));var zipdir=require(_0xc624('0x1'));var jsonpatch=require(_0xc624('0x2'));var rp=require(_0xc624('0x3'));var moment=require(_0xc624('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xc624('0x5'));var util=require('util');var path=require(_0xc624('0x6'));var sox=require('sox');var csv=require(_0xc624('0x7'));var ejs=require(_0xc624('0x8'));var fs=require('fs');var fs_extra=require(_0xc624('0x9'));var _=require(_0xc624('0xa'));var squel=require(_0xc624('0xb'));var crypto=require(_0xc624('0xc'));var jsforce=require(_0xc624('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xc624('0x7'));var querystring=require(_0xc624('0xe'));var Papa=require(_0xc624('0xf'));var Redis=require('ioredis');var authService=require(_0xc624('0x10'));var qs=require(_0xc624('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc624('0x12'));var logger=require(_0xc624('0x13'))(_0xc624('0x14'));var utils=require(_0xc624('0x15'));var config=require(_0xc624('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xc624('0x17'))['db'];function respondWithStatusCode(_0x25e874,_0xef673c){_0xef673c=_0xef673c||0xcc;return function(_0x1a0f3d){if(_0x1a0f3d){return _0x25e874['sendStatus'](_0xef673c);}return _0x25e874['status'](_0xef673c)['end']();};}function respondWithResult(_0xfa6bae,_0x4cb641){_0x4cb641=_0x4cb641||0xc8;return function(_0x3cbc19){if(_0x3cbc19){return _0xfa6bae[_0xc624('0x18')](_0x4cb641)[_0xc624('0x19')](_0x3cbc19);}};}function respondWithFilteredResult(_0x362a4a,_0x7eaac7){return function(_0x330df7){if(_0x330df7){var _0x5834f0=typeof _0x7eaac7[_0xc624('0x1a')]===_0xc624('0x1b')&&typeof _0x7eaac7[_0xc624('0x1c')]==='undefined';var _0x190458=_0x330df7[_0xc624('0x1d')];var _0x5e263a=_0x5834f0?0x0:_0x7eaac7[_0xc624('0x1a')];var _0x170a4=_0x5834f0?_0x330df7['count']:_0x7eaac7[_0xc624('0x1a')]+_0x7eaac7['limit'];var _0x592d82;if(_0x170a4>=_0x190458){_0x170a4=_0x190458;_0x592d82=0xc8;}else{_0x592d82=0xce;}_0x362a4a[_0xc624('0x18')](_0x592d82);return _0x362a4a[_0xc624('0x1e')](_0xc624('0x1f'),_0x5e263a+'-'+_0x170a4+'/'+_0x190458)[_0xc624('0x19')](_0x330df7);}return null;};}function patchUpdates(_0x226f89){return function(_0x55be9e){try{jsonpatch[_0xc624('0x20')](_0x55be9e,_0x226f89,!![]);}catch(_0x246381){return BPromise[_0xc624('0x21')](_0x246381);}return _0x55be9e['save']();};}function saveUpdates(_0x400d46,_0x5f0ac3){return function(_0x3ce441){if(_0x3ce441){return _0x3ce441['update'](_0x400d46)[_0xc624('0x22')](function(_0x3e5aa3){return _0x3e5aa3;});}return null;};}function removeEntity(_0x3fe07e,_0x4b1812){return function(_0x4aab4d){if(_0x4aab4d){return _0x4aab4d[_0xc624('0x23')]()[_0xc624('0x22')](function(){_0x3fe07e[_0xc624('0x18')](0xcc)[_0xc624('0x24')]();});}};}function handleEntityNotFound(_0x3b0dca,_0x3ed4dd){return function(_0xef8a37){if(!_0xef8a37){_0x3b0dca[_0xc624('0x25')](0x194);}return _0xef8a37;};}function handleError(_0x2b52a3,_0x6d7d96){_0x6d7d96=_0x6d7d96||0x1f4;return function(_0x489a04){logger[_0xc624('0x26')](_0x489a04[_0xc624('0x27')]);if(_0x489a04[_0xc624('0x28')]){delete _0x489a04[_0xc624('0x28')];}_0x2b52a3[_0xc624('0x18')](_0x6d7d96)['send'](_0x489a04);};}exports['show']=function(_0x52b55c,_0x362ad7){var _0x4cdd14={'raw':!![],'where':{'id':_0x52b55c[_0xc624('0x29')]['id']}},_0x429e1d={};_0x429e1d[_0xc624('0x2a')]=_['keys'](db[_0xc624('0x2b')][_0xc624('0x2c')]);_0x429e1d[_0xc624('0x2d')]=_[_0xc624('0x2e')](_0x52b55c[_0xc624('0x2d')]);_0x429e1d['filters']=_['intersection'](_0x429e1d['model'],_0x429e1d[_0xc624('0x2d')]);_0x4cdd14[_0xc624('0x2f')]=_[_0xc624('0x30')](_0x429e1d[_0xc624('0x2a')],qs[_0xc624('0x31')](_0x52b55c[_0xc624('0x2d')][_0xc624('0x31')]));_0x4cdd14['attributes']=_0x4cdd14[_0xc624('0x2f')][_0xc624('0x32')]?_0x4cdd14[_0xc624('0x2f')]:_0x429e1d[_0xc624('0x2a')];if(_0x52b55c[_0xc624('0x2d')][_0xc624('0x33')]){_0x4cdd14[_0xc624('0x34')]=[{'all':!![]}];}_0x4cdd14=_[_0xc624('0x35')]({},_0x4cdd14,_0x52b55c[_0xc624('0x36')]);return db['ChatProactiveAction']['find'](_0x4cdd14)[_0xc624('0x22')](handleEntityNotFound(_0x362ad7,null))[_0xc624('0x22')](respondWithResult(_0x362ad7,null))[_0xc624('0x37')](handleError(_0x362ad7,null));};exports[_0xc624('0x38')]=function(_0x3c281b,_0x898784){return db[_0xc624('0x2b')][_0xc624('0x38')](_0x3c281b[_0xc624('0x39')],{})[_0xc624('0x22')](respondWithResult(_0x898784,0xc9))[_0xc624('0x37')](handleError(_0x898784,null));};exports['update']=function(_0x118a2b,_0x5ebd55){if(_0x118a2b['body']['id']){delete _0x118a2b[_0xc624('0x39')]['id'];}return db[_0xc624('0x2b')][_0xc624('0x3a')]({'where':{'id':_0x118a2b['params']['id']}})['then'](handleEntityNotFound(_0x5ebd55,null))[_0xc624('0x22')](saveUpdates(_0x118a2b[_0xc624('0x39')],null))[_0xc624('0x22')](respondWithResult(_0x5ebd55,null))['catch'](handleError(_0x5ebd55,null));};exports['destroy']=function(_0x12acf2,_0x5f1087){return db[_0xc624('0x2b')][_0xc624('0x3a')]({'where':{'id':_0x12acf2['params']['id']}})[_0xc624('0x22')](handleEntityNotFound(_0x5f1087,null))['then'](removeEntity(_0x5f1087,null))['catch'](handleError(_0x5f1087,null));};
\ No newline at end of file
index 515168c..74eb1b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32f5=['define','ChatProactiveAction','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatProactiveAction.attributes'];(function(_0x13b914,_0x1e6d32){var _0x13e331=function(_0x20056d){while(--_0x20056d){_0x13b914['push'](_0x13b914['shift']());}};_0x13e331(++_0x1e6d32);}(_0x32f5,0xc5));var _0x532f=function(_0x2c618b,_0x404ae3){_0x2c618b=_0x2c618b-0x0;var _0x241870=_0x32f5[_0x2c618b];return _0x241870;};'use strict';var _=require(_0x532f('0x0'));var util=require(_0x532f('0x1'));var logger=require(_0x532f('0x2'))(_0x532f('0x3'));var moment=require(_0x532f('0x4'));var BPromise=require(_0x532f('0x5'));var rp=require(_0x532f('0x6'));var fs=require('fs');var path=require(_0x532f('0x7'));var rimraf=require(_0x532f('0x8'));var config=require(_0x532f('0x9'));var attributes=require(_0x532f('0xa'));module['exports']=function(_0x4e40c9,_0x5cd686){return _0x4e40c9[_0x532f('0xb')](_0x532f('0xc'),attributes,{'tableName':'chat_proactive_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0523=['path','rimraf','../../config/environment','./chatProactiveAction.attributes','exports','ChatProactiveAction','chat_proactive_actions','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x29cd1c,_0x414b8c){var _0x5ac687=function(_0x39386e){while(--_0x39386e){_0x29cd1c['push'](_0x29cd1c['shift']());}};_0x5ac687(++_0x414b8c);}(_0x0523,0x1b4));var _0x3052=function(_0x2ee891,_0x177301){_0x2ee891=_0x2ee891-0x0;var _0x3adee6=_0x0523[_0x2ee891];return _0x3adee6;};'use strict';var _=require('lodash');var util=require(_0x3052('0x0'));var logger=require(_0x3052('0x1'))(_0x3052('0x2'));var moment=require(_0x3052('0x3'));var BPromise=require(_0x3052('0x4'));var rp=require(_0x3052('0x5'));var fs=require('fs');var path=require(_0x3052('0x6'));var rimraf=require(_0x3052('0x7'));var config=require(_0x3052('0x8'));var attributes=require(_0x3052('0x9'));module[_0x3052('0xa')]=function(_0x3a570c,_0x1eb6cf){return _0x3a570c['define'](_0x3052('0xb'),attributes,{'tableName':_0x3052('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c737478..1df4d85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc40=['bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','then','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','lodash','moment'];(function(_0x1e05c1,_0x3cffa3){var _0x15f1ca=function(_0x3a9594){while(--_0x3a9594){_0x1e05c1['push'](_0x1e05c1['shift']());}};_0x15f1ca(++_0x3cffa3);}(_0xdc40,0xb2));var _0x0dc4=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xdc40[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x0dc4('0x0'));var util=require('util');var moment=require(_0x0dc4('0x1'));var BPromise=require(_0x0dc4('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0dc4('0x3'))['db'];var utils=require(_0x0dc4('0x4'));var logger=require(_0x0dc4('0x5'))(_0x0dc4('0x6'));var config=require(_0x0dc4('0x7'));var jayson=require(_0x0dc4('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5093ad,_0x718ff8,_0x498bad){return new BPromise(function(_0x32e10c,_0x45fb21){return client['request'](_0x5093ad,_0x498bad)[_0x0dc4('0x9')](function(_0x1db7d7){logger['info'](_0x0dc4('0xa'),_0x718ff8,_0x0dc4('0xb'));logger[_0x0dc4('0xc')](_0x0dc4('0xd'),_0x718ff8,_0x0dc4('0xb'),JSON[_0x0dc4('0xe')](_0x1db7d7));if(_0x1db7d7[_0x0dc4('0xf')]){if(_0x1db7d7[_0x0dc4('0xf')][_0x0dc4('0x10')]===0x1f4){logger[_0x0dc4('0xf')](_0x0dc4('0xa'),_0x718ff8,_0x1db7d7[_0x0dc4('0xf')][_0x0dc4('0x11')]);return _0x45fb21(_0x1db7d7[_0x0dc4('0xf')][_0x0dc4('0x11')]);}logger[_0x0dc4('0xf')](_0x0dc4('0xa'),_0x718ff8,_0x1db7d7[_0x0dc4('0xf')]['message']);return _0x32e10c(_0x1db7d7['error']['message']);}else{logger[_0x0dc4('0x12')](_0x0dc4('0xa'),_0x718ff8,_0x0dc4('0xb'));_0x32e10c(_0x1db7d7['result']['message']);}})[_0x0dc4('0x13')](function(_0x57d617){logger[_0x0dc4('0xf')](_0x0dc4('0xa'),_0x718ff8,_0x57d617);_0x45fb21(_0x57d617);});});}
\ No newline at end of file
+var _0x48c6=['request\x20sent','ChatProactiveAction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','jayson/promise','client','http','request','info','ChatProactiveAction,\x20%s,\x20%s'];(function(_0x200fcb,_0x2e5990){var _0x1509e9=function(_0x2989c1){while(--_0x2989c1){_0x200fcb['push'](_0x200fcb['shift']());}};_0x1509e9(++_0x2e5990);}(_0x48c6,0xc4));var _0x648c=function(_0x52cf67,_0x5635a1){_0x52cf67=_0x52cf67-0x0;var _0x4ba41c=_0x48c6[_0x52cf67];return _0x4ba41c;};'use strict';var _=require(_0x648c('0x0'));var util=require(_0x648c('0x1'));var moment=require(_0x648c('0x2'));var BPromise=require(_0x648c('0x3'));var rs=require(_0x648c('0x4'));var fs=require('fs');var Redis=require(_0x648c('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x648c('0x6'))(_0x648c('0x7'));var config=require('../../config/environment');var jayson=require(_0x648c('0x8'));var client=jayson[_0x648c('0x9')][_0x648c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2ea8e4,_0x61ff0d,_0xaf1bac){return new BPromise(function(_0x47bf3c,_0x33227b){return client[_0x648c('0xb')](_0x2ea8e4,_0xaf1bac)['then'](function(_0x4c0bae){logger[_0x648c('0xc')](_0x648c('0xd'),_0x61ff0d,_0x648c('0xe'));logger['debug'](_0x648c('0xf'),_0x61ff0d,_0x648c('0xe'),JSON[_0x648c('0x10')](_0x4c0bae));if(_0x4c0bae[_0x648c('0x11')]){if(_0x4c0bae[_0x648c('0x11')][_0x648c('0x12')]===0x1f4){logger[_0x648c('0x11')](_0x648c('0xd'),_0x61ff0d,_0x4c0bae[_0x648c('0x11')][_0x648c('0x13')]);return _0x33227b(_0x4c0bae['error']['message']);}logger[_0x648c('0x11')](_0x648c('0xd'),_0x61ff0d,_0x4c0bae['error'][_0x648c('0x13')]);return _0x47bf3c(_0x4c0bae[_0x648c('0x11')][_0x648c('0x13')]);}else{logger[_0x648c('0xc')](_0x648c('0xd'),_0x61ff0d,_0x648c('0xe'));_0x47bf3c(_0x4c0bae[_0x648c('0x14')][_0x648c('0x13')]);}})['catch'](function(_0x2bf8e4){logger[_0x648c('0x11')](_0x648c('0xd'),_0x61ff0d,_0x2bf8e4);_0x33227b(_0x2bf8e4);});});}
\ No newline at end of file
index dbf33c0..f05fccf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['create','put','/:id','update','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatProactiveAction.controller','get','show','isAuthenticated'];(function(_0x5b0bd4,_0x203196){var _0x28d2c0=function(_0x5a6ca1){while(--_0x5a6ca1){_0x5b0bd4['push'](_0x5b0bd4['shift']());}};_0x28d2c0(++_0x203196);}(_0x5fc3,0xa8));var _0x35fc=function(_0x52e0ee,_0x52f7c1){_0x52e0ee=_0x52e0ee-0x0;var _0x32534c=_0x5fc3[_0x52e0ee];return _0x32534c;};'use strict';var multer=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var path=require('path');var timeout=require(_0x35fc('0x2'));var express=require(_0x35fc('0x3'));var router=express[_0x35fc('0x4')]();var fs_extra=require(_0x35fc('0x5'));var auth=require(_0x35fc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x35fc('0x7'));var controller=require(_0x35fc('0x8'));router[_0x35fc('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x35fc('0xa')]);router['post']('/',auth[_0x35fc('0xb')](),controller[_0x35fc('0xc')]);router[_0x35fc('0xd')](_0x35fc('0xe'),auth[_0x35fc('0xb')](),controller[_0x35fc('0xf')]);router[_0x35fc('0x10')]('/:id',auth[_0x35fc('0xb')](),controller[_0x35fc('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x46ed=['multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./chatProactiveAction.controller','get','/:id','isAuthenticated','show','post','create','put','delete','destroy','exports'];(function(_0x81ac6c,_0x1cf87c){var _0x442c04=function(_0x5f38b7){while(--_0x5f38b7){_0x81ac6c['push'](_0x81ac6c['shift']());}};_0x442c04(++_0x1cf87c);}(_0x46ed,0x168));var _0xd46e=function(_0x5c2e3e,_0x26ecd3){_0x5c2e3e=_0x5c2e3e-0x0;var _0x53f64a=_0x46ed[_0x5c2e3e];return _0x53f64a;};'use strict';var multer=require(_0xd46e('0x0'));var util=require(_0xd46e('0x1'));var path=require('path');var timeout=require(_0xd46e('0x2'));var express=require(_0xd46e('0x3'));var router=express[_0xd46e('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xd46e('0x5'));var interaction=require(_0xd46e('0x6'));var config=require('../../config/environment');var controller=require(_0xd46e('0x7'));router[_0xd46e('0x8')](_0xd46e('0x9'),auth[_0xd46e('0xa')](),controller[_0xd46e('0xb')]);router[_0xd46e('0xc')]('/',auth[_0xd46e('0xa')](),controller[_0xd46e('0xd')]);router[_0xd46e('0xe')](_0xd46e('0x9'),auth[_0xd46e('0xa')](),controller['update']);router[_0xd46e('0xf')](_0xd46e('0x9'),auth['isAuthenticated'](),controller[_0xd46e('0x10')]);module[_0xd46e('0x11')]=router;
\ No newline at end of file
index da4b0bf..b53afdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba1e=['STRING','INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','exports'];(function(_0x29e7a7,_0x4b786c){var _0x3cb222=function(_0x2e9fab){while(--_0x2e9fab){_0x29e7a7['push'](_0x29e7a7['shift']());}};_0x3cb222(++_0x4b786c);}(_0xba1e,0xae));var _0xeba1=function(_0x278efd,_0x4c5ed7){_0x278efd=_0x278efd-0x0;var _0x3e0613=_0xba1e[_0x278efd];return _0x3e0613;};'use strict';var Sequelize=require(_0xeba1('0x0'));module[_0xeba1('0x1')]={'name':{'type':Sequelize[_0xeba1('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xeba1('0x2')]},'timeout':{'type':Sequelize[_0xeba1('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xeba1('0x4')](_0xeba1('0x5'),_0xeba1('0x6'),_0xeba1('0x7'))}};
\ No newline at end of file
+var _0xf5e2=['STRING','INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','exports'];(function(_0x3db0aa,_0x473d2f){var _0x5688fc=function(_0x184e35){while(--_0x184e35){_0x3db0aa['push'](_0x3db0aa['shift']());}};_0x5688fc(++_0x473d2f);}(_0xf5e2,0xc6));var _0x2f5e=function(_0x46e802,_0x129daa){_0x46e802=_0x46e802-0x0;var _0x56fce5=_0xf5e2[_0x46e802];return _0x56fce5;};'use strict';var Sequelize=require(_0x2f5e('0x0'));module[_0x2f5e('0x1')]={'name':{'type':Sequelize[_0x2f5e('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x2f5e('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x2f5e('0x4')](_0x2f5e('0x5'),_0x2f5e('0x6'),_0x2f5e('0x7'))}};
\ No newline at end of file
index cc045fb..944c035 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a49=['../../mysqldb','redis','defaults','register','jayson/promise','client','http','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','json','undefined','limit','count','set','apply','reject','update','destroy','get','ChatQueues','UserProfileResource','end','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','filters','attributes','intersection','length','nolimit','offset','order','sort','pick','filter','where','merge','VIRTUAL','ChatQueue','includeAll','findAll','rows','catch','show','keys','fields','include','options','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','getMembers','findOne','UserChatQueue','hasOwnProperty','ChatQueueId','UserId','agent','createdAt','%s/%s','SIP','updatedAt','getTeams','Team','User','Agents','online','voicePause','interface','sequelize','transaction','addTeams','findOrCreate','emit','removeTeams','ids','select','field','tq.TeamId','from','team_has_chat_queues','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','TeamId','includes','all','compact','value','isEmpty','removeAgents','forEach','userChatQueue:remove','addAgents','omit','userChatQueue:save','isArray','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x2a19c1,_0x56d2cb){var _0x1b69e0=function(_0x51db98){while(--_0x51db98){_0x2a19c1['push'](_0x2a19c1['shift']());}};_0x1b69e0(++_0x56d2cb);}(_0x5a49,0x1a9));var _0x95a4=function(_0x3e2adf,_0x46556d){_0x3e2adf=_0x3e2adf-0x0;var _0x93758d=_0x5a49[_0x3e2adf];return _0x93758d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x95a4('0x0'));var zipdir=require(_0x95a4('0x1'));var jsonpatch=require(_0x95a4('0x2'));var rp=require(_0x95a4('0x3'));var moment=require(_0x95a4('0x4'));var BPromise=require(_0x95a4('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x95a4('0x6'));var sox=require(_0x95a4('0x7'));var csv=require(_0x95a4('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x95a4('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x95a4('0xa'));var deskjs=require(_0x95a4('0xb'));var toCsv=require(_0x95a4('0x8'));var querystring=require(_0x95a4('0xc'));var Papa=require('papaparse');var Redis=require(_0x95a4('0xd'));var authService=require(_0x95a4('0xe'));var qs=require(_0x95a4('0xf'));var as=require(_0x95a4('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x95a4('0x11'))(_0x95a4('0x12'));var utils=require(_0x95a4('0x13'));var config=require(_0x95a4('0x14'));var licenseUtil=require(_0x95a4('0x15'));var db=require(_0x95a4('0x16'))['db'];config[_0x95a4('0x17')]=_[_0x95a4('0x18')](config[_0x95a4('0x17')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x95a4('0x17')]));require('./chatQueue.socket')[_0x95a4('0x19')](socket);var jayson=require(_0x95a4('0x1a'));var client=jayson[_0x95a4('0x1b')][_0x95a4('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x14a426,_0x3fc542,_0x587128,_0x4d476e){return new BPromise(function(_0x18523d,_0x19c4df){var _0x4cd69d=_0x4d476e||client;return _0x4cd69d['request'](_0x14a426,_0x587128)[_0x95a4('0x1d')](function(_0xf4a56){logger[_0x95a4('0x1e')](_0x95a4('0x1f'),_0x3fc542,_0x95a4('0x20'));logger['debug'](_0x95a4('0x21'),_0x3fc542,_0x95a4('0x20'),JSON[_0x95a4('0x22')](_0xf4a56));if(_0xf4a56[_0x95a4('0x23')]){if(_0xf4a56['error'][_0x95a4('0x24')]===0x1f4){logger[_0x95a4('0x23')](_0x95a4('0x1f'),_0x3fc542,_0xf4a56['error'][_0x95a4('0x25')]);return _0x19c4df(_0xf4a56[_0x95a4('0x23')][_0x95a4('0x25')]);}logger[_0x95a4('0x23')](_0x95a4('0x1f'),_0x3fc542,_0xf4a56[_0x95a4('0x23')][_0x95a4('0x25')]);return _0x18523d(_0xf4a56['error'][_0x95a4('0x25')]);}else{logger[_0x95a4('0x1e')]('ChatQueue,\x20%s,\x20%s',_0x3fc542,_0x95a4('0x20'));_0x18523d(_0xf4a56[_0x95a4('0x26')][_0x95a4('0x25')]);}})['catch'](function(_0x11474d){logger[_0x95a4('0x23')]('ChatQueue,\x20%s,\x20%s',_0x3fc542,_0x11474d);_0x19c4df(_0x11474d);});});}function respondWithStatusCode(_0x3d3adb,_0xafcf49){_0xafcf49=_0xafcf49||0xcc;return function(_0x146871){if(_0x146871){return _0x3d3adb[_0x95a4('0x27')](_0xafcf49);}return _0x3d3adb['status'](_0xafcf49)['end']();};}function respondWithResult(_0x3c5ec8,_0x5a5117){_0x5a5117=_0x5a5117||0xc8;return function(_0x1b944f){if(_0x1b944f){return _0x3c5ec8[_0x95a4('0x28')](_0x5a5117)[_0x95a4('0x29')](_0x1b944f);}};}function respondWithFilteredResult(_0x3f618e,_0x318daa){return function(_0x55f688){if(_0x55f688){var _0x4373ed=typeof _0x318daa['offset']===_0x95a4('0x2a')&&typeof _0x318daa[_0x95a4('0x2b')]===_0x95a4('0x2a');var _0x4023fd=_0x55f688['count'];var _0x1e56f6=_0x4373ed?0x0:_0x318daa['offset'];var _0x9f7a6c=_0x4373ed?_0x55f688[_0x95a4('0x2c')]:_0x318daa['offset']+_0x318daa['limit'];var _0x13b9c6;if(_0x9f7a6c>=_0x4023fd){_0x9f7a6c=_0x4023fd;_0x13b9c6=0xc8;}else{_0x13b9c6=0xce;}_0x3f618e[_0x95a4('0x28')](_0x13b9c6);return _0x3f618e[_0x95a4('0x2d')]('Content-Range',_0x1e56f6+'-'+_0x9f7a6c+'/'+_0x4023fd)['json'](_0x55f688);}return null;};}function patchUpdates(_0x5458b7){return function(_0x1b4636){try{jsonpatch[_0x95a4('0x2e')](_0x1b4636,_0x5458b7,!![]);}catch(_0x1ea4de){return BPromise[_0x95a4('0x2f')](_0x1ea4de);}return _0x1b4636['save']();};}function saveUpdates(_0x1fe22d,_0x20eea2){return function(_0x1be356){if(_0x1be356){return _0x1be356[_0x95a4('0x30')](_0x1fe22d)['then'](function(_0xcaae26){return _0xcaae26;});}return null;};}function removeEntity(_0x51e2fa,_0x21299f){return function(_0xf7f907){if(_0xf7f907){return _0xf7f907[_0x95a4('0x31')]()[_0x95a4('0x1d')](function(){var _0x19b501=_0xf7f907[_0x95a4('0x32')]({'plain':!![]});var _0x619c1b=_0x95a4('0x33');return db[_0x95a4('0x34')][_0x95a4('0x31')]({'where':{'type':_0x619c1b,'resourceId':_0x19b501['id']}})[_0x95a4('0x1d')](function(){return _0xf7f907;});})[_0x95a4('0x1d')](function(){_0x51e2fa[_0x95a4('0x28')](0xcc)[_0x95a4('0x35')]();});}};}function handleEntityNotFound(_0x4aeda4,_0x273877){return function(_0x4ab115){if(!_0x4ab115){_0x4aeda4[_0x95a4('0x27')](0x194);}return _0x4ab115;};}function handleError(_0x418fde,_0x268b9a){_0x268b9a=_0x268b9a||0x1f4;return function(_0x15a390){logger['error'](_0x15a390[_0x95a4('0x36')]);if(_0x15a390[_0x95a4('0x37')]){delete _0x15a390['name'];}_0x418fde[_0x95a4('0x28')](_0x268b9a)[_0x95a4('0x38')](_0x15a390);};}exports[_0x95a4('0x39')]=function(_0x1c927f,_0x25a0b4){var _0x375f67={},_0x484c51={},_0x43d3e2={'count':0x0,'rows':[]};var _0x21b13e=_[_0x95a4('0x3a')](db['ChatQueue'][_0x95a4('0x3b')],function(_0x588171){return{'name':_0x588171[_0x95a4('0x3c')],'type':_0x588171[_0x95a4('0x3d')]['key']};});_0x484c51[_0x95a4('0x3e')]=_[_0x95a4('0x3a')](_0x21b13e,_0x95a4('0x37'));_0x484c51[_0x95a4('0x3f')]=_['keys'](_0x1c927f['query']);_0x484c51[_0x95a4('0x40')]=_['intersection'](_0x484c51[_0x95a4('0x3e')],_0x484c51[_0x95a4('0x3f')]);_0x375f67[_0x95a4('0x41')]=_[_0x95a4('0x42')](_0x484c51[_0x95a4('0x3e')],qs['fields'](_0x1c927f[_0x95a4('0x3f')]['fields']));_0x375f67[_0x95a4('0x41')]=_0x375f67[_0x95a4('0x41')][_0x95a4('0x43')]?_0x375f67[_0x95a4('0x41')]:_0x484c51[_0x95a4('0x3e')];if(!_0x1c927f[_0x95a4('0x3f')]['hasOwnProperty'](_0x95a4('0x44'))){_0x375f67[_0x95a4('0x2b')]=qs[_0x95a4('0x2b')](_0x1c927f[_0x95a4('0x3f')][_0x95a4('0x2b')]);_0x375f67['offset']=qs['offset'](_0x1c927f[_0x95a4('0x3f')][_0x95a4('0x45')]);}_0x375f67[_0x95a4('0x46')]=qs[_0x95a4('0x47')](_0x1c927f[_0x95a4('0x3f')]['sort']);_0x375f67['where']=qs[_0x95a4('0x40')](_[_0x95a4('0x48')](_0x1c927f[_0x95a4('0x3f')],_0x484c51[_0x95a4('0x40')]),_0x21b13e);if(_0x1c927f['query'][_0x95a4('0x49')]){_0x375f67[_0x95a4('0x4a')]=_[_0x95a4('0x4b')](_0x375f67[_0x95a4('0x4a')],{'$or':_[_0x95a4('0x3a')](_0x21b13e,function(_0x3d91f7){if(_0x3d91f7[_0x95a4('0x3d')]!==_0x95a4('0x4c')){var _0x56021c={};_0x56021c[_0x3d91f7['name']]={'$like':'%'+_0x1c927f['query'][_0x95a4('0x49')]+'%'};return _0x56021c;}})});}_0x375f67=_[_0x95a4('0x4b')]({},_0x375f67,_0x1c927f['options']);var _0x5610b2={'where':_0x375f67[_0x95a4('0x4a')]};return db[_0x95a4('0x4d')][_0x95a4('0x2c')](_0x5610b2)[_0x95a4('0x1d')](function(_0x2820c8){_0x43d3e2[_0x95a4('0x2c')]=_0x2820c8;if(_0x1c927f[_0x95a4('0x3f')][_0x95a4('0x4e')]){_0x375f67['include']=[{'all':!![]}];}return db[_0x95a4('0x4d')][_0x95a4('0x4f')](_0x375f67);})['then'](function(_0x1f911c){_0x43d3e2[_0x95a4('0x50')]=_0x1f911c;return _0x43d3e2;})[_0x95a4('0x1d')](respondWithFilteredResult(_0x25a0b4,_0x375f67))[_0x95a4('0x51')](handleError(_0x25a0b4,null));};exports[_0x95a4('0x52')]=function(_0x2f565d,_0xcb463a){var _0x28d8aa={'raw':!![],'where':{'id':_0x2f565d['params']['id']}},_0x15d1fb={};_0x15d1fb[_0x95a4('0x3e')]=_[_0x95a4('0x53')](db[_0x95a4('0x4d')][_0x95a4('0x3b')]);_0x15d1fb['query']=_['keys'](_0x2f565d[_0x95a4('0x3f')]);_0x15d1fb[_0x95a4('0x40')]=_[_0x95a4('0x42')](_0x15d1fb['model'],_0x15d1fb[_0x95a4('0x3f')]);_0x28d8aa[_0x95a4('0x41')]=_[_0x95a4('0x42')](_0x15d1fb[_0x95a4('0x3e')],qs[_0x95a4('0x54')](_0x2f565d[_0x95a4('0x3f')][_0x95a4('0x54')]));_0x28d8aa[_0x95a4('0x41')]=_0x28d8aa['attributes'][_0x95a4('0x43')]?_0x28d8aa['attributes']:_0x15d1fb[_0x95a4('0x3e')];if(_0x2f565d['query']['includeAll']){_0x28d8aa[_0x95a4('0x55')]=[{'all':!![]}];}_0x28d8aa=_[_0x95a4('0x4b')]({},_0x28d8aa,_0x2f565d[_0x95a4('0x56')]);return db['ChatQueue']['find'](_0x28d8aa)['then'](handleEntityNotFound(_0xcb463a,null))[_0x95a4('0x1d')](respondWithResult(_0xcb463a,null))[_0x95a4('0x51')](handleError(_0xcb463a,null));};exports[_0x95a4('0x57')]=function(_0x324405,_0x4fbf51){return db[_0x95a4('0x4d')]['create'](_0x324405['body'],{})[_0x95a4('0x1d')](function(_0x4348ae){var _0x12f680=_0x324405[_0x95a4('0x58')]['get']({'plain':!![]});if(!_0x12f680)throw new Error(_0x95a4('0x59'));if(_0x12f680[_0x95a4('0x5a')]===_0x95a4('0x58')){var _0x385efd=_0x4348ae['get']({'plain':!![]});var _0x6a45c3=_0x95a4('0x33');return db[_0x95a4('0x5b')][_0x95a4('0x5c')]({'where':{'name':_0x6a45c3,'userProfileId':_0x12f680['userProfileId']},'raw':!![]})['then'](function(_0x1729f6){if(_0x1729f6&&_0x1729f6[_0x95a4('0x5d')]===0x0){return db[_0x95a4('0x34')][_0x95a4('0x57')]({'name':_0x385efd['name'],'resourceId':_0x385efd['id'],'type':_0x1729f6['name'],'sectionId':_0x1729f6['id']},{})['then'](function(){return _0x4348ae;});}else{return _0x4348ae;}})[_0x95a4('0x51')](function(_0x1c99d5){logger[_0x95a4('0x23')](_0x95a4('0x5e'),_0x1c99d5);throw _0x1c99d5;});}return _0x4348ae;})[_0x95a4('0x1d')](respondWithResult(_0x4fbf51,0xc9))[_0x95a4('0x51')](handleError(_0x4fbf51,null));};exports[_0x95a4('0x30')]=function(_0x4e1b54,_0x467e88){if(_0x4e1b54[_0x95a4('0x5f')]['id']){delete _0x4e1b54['body']['id'];}return db[_0x95a4('0x4d')][_0x95a4('0x5c')]({'where':{'id':_0x4e1b54[_0x95a4('0x60')]['id']}})[_0x95a4('0x1d')](handleEntityNotFound(_0x467e88,null))['then'](saveUpdates(_0x4e1b54[_0x95a4('0x5f')],null))[_0x95a4('0x1d')](respondWithResult(_0x467e88,null))[_0x95a4('0x51')](handleError(_0x467e88,null));};exports[_0x95a4('0x31')]=function(_0x32aa49,_0xc51605){return db[_0x95a4('0x4d')][_0x95a4('0x5c')]({'where':{'id':_0x32aa49[_0x95a4('0x60')]['id']}})[_0x95a4('0x1d')](handleEntityNotFound(_0xc51605,null))[_0x95a4('0x1d')](removeEntity(_0xc51605,null))[_0x95a4('0x51')](handleError(_0xc51605,null));};exports['describe']=function(_0x386c95,_0x2379e3){return db[_0x95a4('0x4d')][_0x95a4('0x61')]()[_0x95a4('0x1d')](respondWithResult(_0x2379e3,null))[_0x95a4('0x51')](handleError(_0x2379e3,null));};exports[_0x95a4('0x62')]=function(_0x42ccac,_0x42e777,_0x4e5e2b){var _0x121da0={'raw':!![],'where':{}},_0x5e0493={},_0x100616;return db[_0x95a4('0x4d')][_0x95a4('0x63')]({'where':{'id':_0x42ccac[_0x95a4('0x60')]['id']}})['then'](handleEntityNotFound(_0x42e777,null))[_0x95a4('0x1d')](function(_0x3c1f6d){if(_0x3c1f6d){_0x100616=_0x3c1f6d[_0x95a4('0x32')]({'plain':!![]});_0x5e0493[_0x95a4('0x3e')]=_[_0x95a4('0x53')](db[_0x95a4('0x64')][_0x95a4('0x3b')]);_0x5e0493[_0x95a4('0x3f')]=_[_0x95a4('0x53')](_0x42ccac[_0x95a4('0x3f')]);_0x5e0493[_0x95a4('0x40')]=_[_0x95a4('0x42')](_0x5e0493[_0x95a4('0x3e')],_0x5e0493[_0x95a4('0x3f')]);_0x121da0[_0x95a4('0x41')]=_[_0x95a4('0x42')](_0x5e0493['model'],qs[_0x95a4('0x54')](_0x42ccac[_0x95a4('0x3f')][_0x95a4('0x54')]));_0x121da0[_0x95a4('0x41')]=_0x121da0[_0x95a4('0x41')][_0x95a4('0x43')]?_0x121da0[_0x95a4('0x41')]:_0x5e0493['model'];if(!_0x42ccac[_0x95a4('0x3f')][_0x95a4('0x65')](_0x95a4('0x44'))){_0x121da0[_0x95a4('0x2b')]=qs[_0x95a4('0x2b')](_0x42ccac['query'][_0x95a4('0x2b')]);_0x121da0[_0x95a4('0x45')]=qs['offset'](_0x42ccac[_0x95a4('0x3f')][_0x95a4('0x45')]);}_0x121da0[_0x95a4('0x46')]=qs[_0x95a4('0x47')](_0x42ccac[_0x95a4('0x3f')][_0x95a4('0x47')]);_0x121da0[_0x95a4('0x4a')]=qs[_0x95a4('0x40')](_['pick'](_0x42ccac['query'],_0x5e0493[_0x95a4('0x40')]));_0x121da0[_0x95a4('0x4a')][_0x95a4('0x66')]=_0x3c1f6d['id'];if(_0x42ccac[_0x95a4('0x3f')][_0x95a4('0x49')]){_0x121da0[_0x95a4('0x4a')]=_[_0x95a4('0x4b')](_0x121da0[_0x95a4('0x4a')],{'$or':_['map'](_0x121da0[_0x95a4('0x41')],function(_0x10145a){var _0x1ceee8={};_0x1ceee8[_0x10145a]={'$like':'%'+_0x42ccac[_0x95a4('0x3f')][_0x95a4('0x49')]+'%'};return _0x1ceee8;})});}_0x121da0=_[_0x95a4('0x4b')]({},_0x121da0,_0x42ccac[_0x95a4('0x56')]);return db['UserChatQueue'][_0x95a4('0x4f')](_0x121da0);}})['then'](function(_0x1a6fa3){if(_0x1a6fa3){return db['User']['findAndCountAll']({'where':{'id':_[_0x95a4('0x3a')](_0x1a6fa3,_0x95a4('0x67')),'role':_0x95a4('0x68')},'attributes':['id',_0x95a4('0x37'),'chatPause','updatedAt',_0x95a4('0x69')]});}})[_0x95a4('0x1d')](function(_0x21d6c0){if(_0x21d6c0){return{'count':_0x21d6c0[_0x95a4('0x2c')],'rows':_[_0x95a4('0x3a')](_0x21d6c0[_0x95a4('0x50')],function(_0x2c6a38){return{'membername':_0x2c6a38[_0x95a4('0x37')],'UserId':_0x2c6a38['id'],'queue_name':_0x100616[_0x95a4('0x37')],'ChatQueueId':_0x100616['id'],'interface':util['format'](_0x95a4('0x6a'),_0x95a4('0x6b'),_0x2c6a38[_0x95a4('0x37')]),'penalty':0x0,'paused':_0x2c6a38['chatPause'],'createdAt':_0x2c6a38[_0x95a4('0x69')],'updatedAt':_0x2c6a38[_0x95a4('0x6c')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x42e777,_0x121da0))['catch'](handleError(_0x42e777,null));};exports[_0x95a4('0x6d')]=function(_0x5508f4,_0x1f449a,_0x330261){var _0x195128={};var _0x4e39e8={};var _0x3d838c;var _0x41717d;return db[_0x95a4('0x4d')][_0x95a4('0x63')]({'where':{'id':_0x5508f4['params']['id']}})[_0x95a4('0x1d')](handleEntityNotFound(_0x1f449a,null))['then'](function(_0x43a915){if(_0x43a915){_0x3d838c=_0x43a915;_0x4e39e8[_0x95a4('0x3e')]=_[_0x95a4('0x53')](db[_0x95a4('0x6e')][_0x95a4('0x3b')]);_0x4e39e8[_0x95a4('0x3f')]=_[_0x95a4('0x53')](_0x5508f4[_0x95a4('0x3f')]);_0x4e39e8['filters']=_[_0x95a4('0x42')](_0x4e39e8[_0x95a4('0x3e')],_0x4e39e8['query']);_0x195128[_0x95a4('0x41')]=_[_0x95a4('0x42')](_0x4e39e8[_0x95a4('0x3e')],qs[_0x95a4('0x54')](_0x5508f4[_0x95a4('0x3f')][_0x95a4('0x54')]));_0x195128['attributes']=_0x195128[_0x95a4('0x41')][_0x95a4('0x43')]?_0x195128['attributes']:_0x4e39e8[_0x95a4('0x3e')];_0x195128[_0x95a4('0x46')]=qs[_0x95a4('0x47')](_0x5508f4[_0x95a4('0x3f')][_0x95a4('0x47')]);_0x195128[_0x95a4('0x4a')]=qs['filters'](_[_0x95a4('0x48')](_0x5508f4[_0x95a4('0x3f')],_0x4e39e8[_0x95a4('0x40')]));if(_0x5508f4['query'][_0x95a4('0x49')]){_0x195128[_0x95a4('0x4a')]=_[_0x95a4('0x4b')](_0x195128[_0x95a4('0x4a')],{'$or':_['map'](_0x195128['attributes'],function(_0x51bcc9){var _0x45d0ad={};_0x45d0ad[_0x51bcc9]={'$like':'%'+_0x5508f4[_0x95a4('0x3f')][_0x95a4('0x49')]+'%'};return _0x45d0ad;})});}_0x195128=_[_0x95a4('0x4b')]({},_0x195128,_0x5508f4[_0x95a4('0x56')]);return _0x3d838c[_0x95a4('0x6d')](_0x195128);}})['then'](function(_0x3d92e3){if(_0x3d92e3){_0x41717d=_0x3d92e3['length'];if(!_0x5508f4[_0x95a4('0x3f')][_0x95a4('0x65')](_0x95a4('0x44'))){_0x195128[_0x95a4('0x2b')]=qs[_0x95a4('0x2b')](_0x5508f4[_0x95a4('0x3f')]['limit']);_0x195128[_0x95a4('0x45')]=qs[_0x95a4('0x45')](_0x5508f4[_0x95a4('0x3f')][_0x95a4('0x45')]);}return _0x3d838c[_0x95a4('0x6d')](_0x195128);}})[_0x95a4('0x1d')](function(_0x3f6127){if(_0x3f6127){return _0x3f6127?{'count':_0x41717d,'rows':_0x3f6127}:null;}})[_0x95a4('0x1d')](respondWithResult(_0x1f449a,null))[_0x95a4('0x51')](handleError(_0x1f449a,null));};exports['addTeams']=function(_0x1d5785,_0x4bdc32,_0x488c6f){var _0x1d7c9f=_0x1d5785[_0x95a4('0x5f')]['ids'];return db['Team'][_0x95a4('0x4f')]({'where':{'id':_0x1d7c9f},'attributes':['id'],'include':[{'model':db[_0x95a4('0x6f')],'as':_0x95a4('0x70'),'attributes':['id',_0x95a4('0x37'),_0x95a4('0x71'),_0x95a4('0x72'),_0x95a4('0x73')],'raw':!![]}]})[_0x95a4('0x1d')](function(_0x4f09ab){if(_0x4f09ab){var _0x3ca13d=_['flatMap'](_0x4f09ab,function(_0xc051ed){var _0x388c20=_0xc051ed[_0x95a4('0x32')]({'plain':!![]});return _0x388c20[_0x95a4('0x70')];});return db[_0x95a4('0x4d')][_0x95a4('0x5c')]({'where':{'id':_0x1d5785['params']['id']}})['then'](function(_0x2127a3){return db[_0x95a4('0x74')][_0x95a4('0x75')](function(_0x3af4cf){return _0x2127a3[_0x95a4('0x76')](_0x1d7c9f,{'transaction':_0x3af4cf})['then'](function(){return BPromise['each'](_0x3ca13d,function(_0x2ebff2){return db[_0x95a4('0x64')][_0x95a4('0x77')]({'where':{'UserId':_0x2ebff2['id'],'ChatQueueId':_0x1d5785[_0x95a4('0x60')]['id']},'transaction':_0x3af4cf});});})[_0x95a4('0x1d')](function(){_0x3ca13d['forEach'](function(_0x315d11){socket[_0x95a4('0x78')]('userChatQueue:save',{'UserId':_0x315d11['id'],'ChatQueueId':_0x2127a3['id']});});});});});}})[_0x95a4('0x1d')](respondWithStatusCode(_0x4bdc32,null))[_0x95a4('0x51')](handleError(_0x4bdc32,null));};exports[_0x95a4('0x79')]=function(_0x4d2db2,_0x26135f,_0x5c42a5){return db['Team'][_0x95a4('0x4f')]({'where':{'id':_0x4d2db2['query'][_0x95a4('0x7a')]},'attributes':['id'],'include':[{'model':db[_0x95a4('0x6f')],'as':_0x95a4('0x70'),'attributes':['id'],'raw':!![]}]})[_0x95a4('0x1d')](handleEntityNotFound(_0x26135f,null))['then'](function(_0x295534){var _0x4a04d1=_[_0x95a4('0x3a')](_0x295534,'id');var _0x200f40=[];var _0x57bc4c=[];var _0x4001d4=squel[_0x95a4('0x7b')]();_0x4001d4[_0x95a4('0x7c')](_0x95a4('0x7d'))[_0x95a4('0x7e')](_0x95a4('0x7f'),'tq')['join']('user_has_teams','ut',_0x95a4('0x80'))[_0x95a4('0x4a')](_0x95a4('0x81'),_0x4d2db2[_0x95a4('0x60')]['id']);for(var _0x20e6fa=0x0;_0x20e6fa<_0x295534[_0x95a4('0x43')];_0x20e6fa+=0x1){let _0x1a7389=_0x295534[_0x20e6fa];for(var _0x50e1a1=0x0;_0x50e1a1<_0x1a7389[_0x95a4('0x70')]['length'];_0x50e1a1+=0x1){let _0x570f7d=_0x1a7389[_0x95a4('0x70')][_0x50e1a1];var _0x54ec06=_0x4001d4['clone']();_0x54ec06[_0x95a4('0x4a')](_0x95a4('0x82'),_0x570f7d['id']);_0x57bc4c[_0x95a4('0x83')](db[_0x95a4('0x74')][_0x95a4('0x3f')](_0x54ec06[_0x95a4('0x84')](),{'type':db[_0x95a4('0x74')][_0x95a4('0x85')][_0x95a4('0x86')]})[_0x95a4('0x1d')](function(_0x1b0331){if(_0x1b0331[_0x95a4('0x43')]===0x1){return _0x570f7d['id'];}else{var _0x4f783c=_['every'](_[_0x95a4('0x3a')](_0x1b0331,_0x95a4('0x87')),function(_0x29c5ac){return _[_0x95a4('0x88')](_0x4a04d1,_0x29c5ac);});if(_0x4f783c){return _0x570f7d['id'];}}}));}}return BPromise[_0x95a4('0x89')](_0x57bc4c)[_0x95a4('0x1d')](function(_0x23f40b){_0x200f40=_(_0x200f40)['union'](_0x23f40b)[_0x95a4('0x8a')]()[_0x95a4('0x8b')]();return db[_0x95a4('0x4d')][_0x95a4('0x5c')]({'where':{'id':_0x4d2db2['params']['id']}})[_0x95a4('0x1d')](function(_0x142639){return db[_0x95a4('0x74')][_0x95a4('0x75')](function(_0x3162f0){return _0x142639[_0x95a4('0x79')](_0x4d2db2[_0x95a4('0x3f')][_0x95a4('0x7a')],{'transaction':_0x3162f0})['then'](function(){if(!_[_0x95a4('0x8c')](_0x200f40)){return _0x142639[_0x95a4('0x8d')](_0x200f40,{'transaction':_0x3162f0});}})[_0x95a4('0x1d')](function(){_0x200f40[_0x95a4('0x8e')](function(_0x5ea54c){socket[_0x95a4('0x78')](_0x95a4('0x8f'),{'UserId':_0x5ea54c,'ChatQueueId':_0x142639['id']});});});});});});})[_0x95a4('0x1d')](respondWithStatusCode(_0x26135f,null))[_0x95a4('0x51')](handleError(_0x26135f,null));};exports['addAgents']=function(_0x351cd7,_0x831f49,_0xdb946f){return db['ChatQueue'][_0x95a4('0x5c')]({'where':{'id':_0x351cd7[_0x95a4('0x60')]['id']}})[_0x95a4('0x1d')](handleEntityNotFound(_0x831f49,null))[_0x95a4('0x1d')](function(_0x4ee259){if(_0x4ee259){return _0x4ee259[_0x95a4('0x90')](_0x351cd7[_0x95a4('0x5f')]['ids'],_[_0x95a4('0x91')](_0x351cd7['body'],[_0x95a4('0x7a'),'id'])||{})['spread'](function(_0x3931b6){for(var _0x4fb4ce=0x0;_0x4fb4ce<_0x351cd7[_0x95a4('0x5f')][_0x95a4('0x7a')][_0x95a4('0x43')];_0x4fb4ce+=0x1){socket['emit'](_0x95a4('0x92'),{'UserId':Number(_0x351cd7['body'][_0x95a4('0x7a')][_0x4fb4ce]),'ChatQueueId':Number(_0x351cd7[_0x95a4('0x60')]['id'])});}return _0x3931b6;});}})[_0x95a4('0x1d')](respondWithResult(_0x831f49,null))[_0x95a4('0x51')](handleError(_0x831f49,null));};exports[_0x95a4('0x8d')]=function(_0x2f5a0b,_0x58b34e,_0x3e5d79){return db[_0x95a4('0x4d')][_0x95a4('0x5c')]({'where':{'id':_0x2f5a0b[_0x95a4('0x60')]['id']}})[_0x95a4('0x1d')](handleEntityNotFound(_0x58b34e,null))['then'](function(_0x338f8f){if(_0x338f8f){return _0x338f8f[_0x95a4('0x8d')](_0x2f5a0b[_0x95a4('0x3f')][_0x95a4('0x7a')])[_0x95a4('0x1d')](function(){if(_[_0x95a4('0x93')](_0x2f5a0b[_0x95a4('0x3f')][_0x95a4('0x7a')])){for(var _0x12322c=0x0;_0x12322c<_0x2f5a0b[_0x95a4('0x3f')]['ids'][_0x95a4('0x43')];_0x12322c+=0x1){socket[_0x95a4('0x78')](_0x95a4('0x8f'),{'UserId':Number(_0x2f5a0b[_0x95a4('0x3f')][_0x95a4('0x7a')][_0x12322c]),'ChatQueueId':Number(_0x2f5a0b[_0x95a4('0x60')]['id'])});}}else{socket[_0x95a4('0x78')](_0x95a4('0x8f'),{'UserId':Number(_0x2f5a0b[_0x95a4('0x3f')]['ids']),'ChatQueueId':Number(_0x2f5a0b['params']['id'])});}});}})[_0x95a4('0x1d')](respondWithStatusCode(_0x58b34e,null))[_0x95a4('0x51')](handleError(_0x58b34e,null));};exports['getAgents']=function(_0x424d66,_0x473448,_0x3781af){var _0x58854f={};var _0x2868a2={};var _0x1a1695;var _0x34bac8;return db['ChatQueue']['findOne']({'where':{'id':_0x424d66[_0x95a4('0x60')]['id']}})[_0x95a4('0x1d')](handleEntityNotFound(_0x473448,null))['then'](function(_0x242f01){if(_0x242f01){_0x1a1695=_0x242f01;_0x2868a2[_0x95a4('0x3e')]=_[_0x95a4('0x53')](db[_0x95a4('0x6f')][_0x95a4('0x3b')]);_0x2868a2[_0x95a4('0x3f')]=_['keys'](_0x424d66['query']);_0x2868a2[_0x95a4('0x40')]=_[_0x95a4('0x42')](_0x2868a2['model'],_0x2868a2[_0x95a4('0x3f')]);_0x58854f[_0x95a4('0x41')]=_[_0x95a4('0x42')](_0x2868a2[_0x95a4('0x3e')],qs[_0x95a4('0x54')](_0x424d66[_0x95a4('0x3f')][_0x95a4('0x54')]));_0x58854f['attributes']=_0x58854f[_0x95a4('0x41')]['length']?_0x58854f[_0x95a4('0x41')]:_0x2868a2[_0x95a4('0x3e')];_0x58854f['order']=qs['sort'](_0x424d66[_0x95a4('0x3f')]['sort']);_0x58854f['where']=qs[_0x95a4('0x40')](_[_0x95a4('0x48')](_0x424d66['query'],_0x2868a2[_0x95a4('0x40')]));if(_0x424d66[_0x95a4('0x3f')]['filter']){_0x58854f['where']=_[_0x95a4('0x4b')](_0x58854f[_0x95a4('0x4a')],{'$or':_[_0x95a4('0x3a')](_0x58854f['attributes'],function(_0x33fb47){var _0x4e2b78={};_0x4e2b78[_0x33fb47]={'$like':'%'+_0x424d66[_0x95a4('0x3f')][_0x95a4('0x49')]+'%'};return _0x4e2b78;})});}_0x58854f=_[_0x95a4('0x4b')]({},_0x58854f,_0x424d66[_0x95a4('0x56')]);return _0x1a1695[_0x95a4('0x94')](_0x58854f);}})[_0x95a4('0x1d')](function(_0x4dfa1d){if(_0x4dfa1d){_0x34bac8=_0x4dfa1d[_0x95a4('0x43')];if(!_0x424d66[_0x95a4('0x3f')][_0x95a4('0x65')](_0x95a4('0x44'))){_0x58854f['limit']=qs[_0x95a4('0x2b')](_0x424d66[_0x95a4('0x3f')][_0x95a4('0x2b')]);_0x58854f[_0x95a4('0x45')]=qs[_0x95a4('0x45')](_0x424d66[_0x95a4('0x3f')][_0x95a4('0x45')]);}return _0x1a1695[_0x95a4('0x94')](_0x58854f);}})[_0x95a4('0x1d')](function(_0x104ea9){if(_0x104ea9){return _0x104ea9?{'count':_0x34bac8,'rows':_0x104ea9}:null;}})[_0x95a4('0x1d')](respondWithResult(_0x473448,null))[_0x95a4('0x51')](handleError(_0x473448,null));};
\ No newline at end of file
+var _0xdabe=['save','update','destroy','get','ChatQueues','stack','name','index','map','ChatQueue','rawAttributes','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','findAll','show','keys','include','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','find','params','describe','getMembers','UserChatQueue','ChatQueueId','filter','User','findAndCountAll','UserId','agent','chatPause','updatedAt','createdAt','rows','format','%s/%s','SIP','getTeams','findOne','Team','Agents','online','voicePause','interface','flatMap','sequelize','transaction','addTeams','findOrCreate','forEach','userChatQueue:save','ids','select','field','tq.TeamId','from','team_has_chat_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','every','TeamId','includes','all','union','compact','value','isEmpty','removeAgents','userChatQueue:remove','addAgents','spread','emit','isArray','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','register','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','ChatQueue,\x20%s,\x20%s','message','catch','status','end','json','offset','undefined','limit','count','set','reject'];(function(_0x2271aa,_0x2c1069){var _0x3f9559=function(_0x2e6301){while(--_0x2e6301){_0x2271aa['push'](_0x2271aa['shift']());}};_0x3f9559(++_0x2c1069);}(_0xdabe,0x65));var _0xedab=function(_0x450a8f,_0x29dee4){_0x450a8f=_0x450a8f-0x0;var _0x21599d=_0xdabe[_0x450a8f];return _0x21599d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xedab('0x0'));var zipdir=require(_0xedab('0x1'));var jsonpatch=require(_0xedab('0x2'));var rp=require(_0xedab('0x3'));var moment=require(_0xedab('0x4'));var BPromise=require(_0xedab('0x5'));var Mustache=require('mustache');var util=require(_0xedab('0x6'));var path=require(_0xedab('0x7'));var sox=require('sox');var csv=require(_0xedab('0x8'));var ejs=require(_0xedab('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xedab('0xa'));var squel=require(_0xedab('0xb'));var crypto=require(_0xedab('0xc'));var jsforce=require(_0xedab('0xd'));var deskjs=require(_0xedab('0xe'));var toCsv=require(_0xedab('0x8'));var querystring=require('querystring');var Papa=require(_0xedab('0xf'));var Redis=require(_0xedab('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xedab('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xedab('0x12'));var utils=require(_0xedab('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xedab('0x14'));var db=require(_0xedab('0x15'))['db'];config[_0xedab('0x16')]=_[_0xedab('0x17')](config[_0xedab('0x16')],{'host':_0xedab('0x18'),'port':0x18eb});var socket=require(_0xedab('0x19'))(new Redis(config[_0xedab('0x16')]));require(_0xedab('0x1a'))[_0xedab('0x1b')](socket);var jayson=require(_0xedab('0x1c'));var client=jayson[_0xedab('0x1d')][_0xedab('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x32ba7c,_0x25a178,_0x2e7d12,_0x1f267b){return new BPromise(function(_0x2567b3,_0x2a2114){var _0x24987e=_0x1f267b||client;return _0x24987e[_0xedab('0x1f')](_0x32ba7c,_0x2e7d12)[_0xedab('0x20')](function(_0x529266){logger[_0xedab('0x21')]('ChatQueue,\x20%s,\x20%s',_0x25a178,_0xedab('0x22'));logger[_0xedab('0x23')]('ChatQueue,\x20%s,\x20%s,\x20%s',_0x25a178,_0xedab('0x22'),JSON[_0xedab('0x24')](_0x529266));if(_0x529266[_0xedab('0x25')]){if(_0x529266[_0xedab('0x25')][_0xedab('0x26')]===0x1f4){logger['error'](_0xedab('0x27'),_0x25a178,_0x529266[_0xedab('0x25')]['message']);return _0x2a2114(_0x529266[_0xedab('0x25')][_0xedab('0x28')]);}logger[_0xedab('0x25')](_0xedab('0x27'),_0x25a178,_0x529266['error'][_0xedab('0x28')]);return _0x2567b3(_0x529266[_0xedab('0x25')][_0xedab('0x28')]);}else{logger['info'](_0xedab('0x27'),_0x25a178,_0xedab('0x22'));_0x2567b3(_0x529266['result'][_0xedab('0x28')]);}})[_0xedab('0x29')](function(_0x5c3d86){logger[_0xedab('0x25')](_0xedab('0x27'),_0x25a178,_0x5c3d86);_0x2a2114(_0x5c3d86);});});}function respondWithStatusCode(_0x512350,_0x2b7120){_0x2b7120=_0x2b7120||0xcc;return function(_0x4b46ea){if(_0x4b46ea){return _0x512350['sendStatus'](_0x2b7120);}return _0x512350[_0xedab('0x2a')](_0x2b7120)[_0xedab('0x2b')]();};}function respondWithResult(_0x2d39a2,_0x126408){_0x126408=_0x126408||0xc8;return function(_0x579800){if(_0x579800){return _0x2d39a2[_0xedab('0x2a')](_0x126408)[_0xedab('0x2c')](_0x579800);}};}function respondWithFilteredResult(_0x40f003,_0x5abf23){return function(_0x264579){if(_0x264579){var _0x2fba45=typeof _0x5abf23[_0xedab('0x2d')]===_0xedab('0x2e')&&typeof _0x5abf23[_0xedab('0x2f')]==='undefined';var _0xb4542d=_0x264579[_0xedab('0x30')];var _0xee29f0=_0x2fba45?0x0:_0x5abf23['offset'];var _0x48828d=_0x2fba45?_0x264579[_0xedab('0x30')]:_0x5abf23[_0xedab('0x2d')]+_0x5abf23['limit'];var _0x369ccc;if(_0x48828d>=_0xb4542d){_0x48828d=_0xb4542d;_0x369ccc=0xc8;}else{_0x369ccc=0xce;}_0x40f003[_0xedab('0x2a')](_0x369ccc);return _0x40f003[_0xedab('0x31')]('Content-Range',_0xee29f0+'-'+_0x48828d+'/'+_0xb4542d)['json'](_0x264579);}return null;};}function patchUpdates(_0x5d169d){return function(_0x51c880){try{jsonpatch['apply'](_0x51c880,_0x5d169d,!![]);}catch(_0x48635f){return BPromise[_0xedab('0x32')](_0x48635f);}return _0x51c880[_0xedab('0x33')]();};}function saveUpdates(_0x285259,_0x1789d2){return function(_0x20611b){if(_0x20611b){return _0x20611b[_0xedab('0x34')](_0x285259)[_0xedab('0x20')](function(_0x596a32){return _0x596a32;});}return null;};}function removeEntity(_0x375b6a,_0x2ddf16){return function(_0x2034ab){if(_0x2034ab){return _0x2034ab[_0xedab('0x35')]()[_0xedab('0x20')](function(){var _0xcbe245=_0x2034ab[_0xedab('0x36')]({'plain':!![]});var _0x4a3674=_0xedab('0x37');return db['UserProfileResource']['destroy']({'where':{'type':_0x4a3674,'resourceId':_0xcbe245['id']}})[_0xedab('0x20')](function(){return _0x2034ab;});})[_0xedab('0x20')](function(){_0x375b6a['status'](0xcc)[_0xedab('0x2b')]();});}};}function handleEntityNotFound(_0x88e7d5,_0x1c3598){return function(_0x10867e){if(!_0x10867e){_0x88e7d5['sendStatus'](0x194);}return _0x10867e;};}function handleError(_0x40d7ad,_0x19b412){_0x19b412=_0x19b412||0x1f4;return function(_0x1bc0c9){logger[_0xedab('0x25')](_0x1bc0c9[_0xedab('0x38')]);if(_0x1bc0c9[_0xedab('0x39')]){delete _0x1bc0c9[_0xedab('0x39')];}_0x40d7ad[_0xedab('0x2a')](_0x19b412)['send'](_0x1bc0c9);};}exports[_0xedab('0x3a')]=function(_0x39cd0a,_0x887c14){var _0xba0559={},_0x525540={},_0x411d93={'count':0x0,'rows':[]};var _0x63d09e=_[_0xedab('0x3b')](db[_0xedab('0x3c')][_0xedab('0x3d')],function(_0x2d7a38){return{'name':_0x2d7a38['fieldName'],'type':_0x2d7a38[_0xedab('0x3e')]['key']};});_0x525540[_0xedab('0x3f')]=_['map'](_0x63d09e,'name');_0x525540[_0xedab('0x40')]=_['keys'](_0x39cd0a[_0xedab('0x40')]);_0x525540[_0xedab('0x41')]=_[_0xedab('0x42')](_0x525540[_0xedab('0x3f')],_0x525540['query']);_0xba0559[_0xedab('0x43')]=_['intersection'](_0x525540[_0xedab('0x3f')],qs[_0xedab('0x44')](_0x39cd0a[_0xedab('0x40')][_0xedab('0x44')]));_0xba0559[_0xedab('0x43')]=_0xba0559[_0xedab('0x43')][_0xedab('0x45')]?_0xba0559[_0xedab('0x43')]:_0x525540[_0xedab('0x3f')];if(!_0x39cd0a[_0xedab('0x40')][_0xedab('0x46')](_0xedab('0x47'))){_0xba0559[_0xedab('0x2f')]=qs[_0xedab('0x2f')](_0x39cd0a['query'][_0xedab('0x2f')]);_0xba0559[_0xedab('0x2d')]=qs[_0xedab('0x2d')](_0x39cd0a[_0xedab('0x40')][_0xedab('0x2d')]);}_0xba0559[_0xedab('0x48')]=qs[_0xedab('0x49')](_0x39cd0a[_0xedab('0x40')]['sort']);_0xba0559[_0xedab('0x4a')]=qs[_0xedab('0x41')](_[_0xedab('0x4b')](_0x39cd0a[_0xedab('0x40')],_0x525540[_0xedab('0x41')]),_0x63d09e);if(_0x39cd0a['query']['filter']){_0xba0559['where']=_[_0xedab('0x4c')](_0xba0559[_0xedab('0x4a')],{'$or':_[_0xedab('0x3b')](_0x63d09e,function(_0x25a1b5){if(_0x25a1b5[_0xedab('0x3e')]!==_0xedab('0x4d')){var _0x2c6de3={};_0x2c6de3[_0x25a1b5[_0xedab('0x39')]]={'$like':'%'+_0x39cd0a['query']['filter']+'%'};return _0x2c6de3;}})});}_0xba0559=_[_0xedab('0x4c')]({},_0xba0559,_0x39cd0a[_0xedab('0x4e')]);var _0x1a41bc={'where':_0xba0559['where']};return db['ChatQueue'][_0xedab('0x30')](_0x1a41bc)[_0xedab('0x20')](function(_0x1a7d1e){_0x411d93[_0xedab('0x30')]=_0x1a7d1e;if(_0x39cd0a[_0xedab('0x40')][_0xedab('0x4f')]){_0xba0559['include']=[{'all':!![]}];}return db[_0xedab('0x3c')][_0xedab('0x50')](_0xba0559);})[_0xedab('0x20')](function(_0x677bdd){_0x411d93['rows']=_0x677bdd;return _0x411d93;})[_0xedab('0x20')](respondWithFilteredResult(_0x887c14,_0xba0559))[_0xedab('0x29')](handleError(_0x887c14,null));};exports[_0xedab('0x51')]=function(_0x13d88d,_0x52dddb){var _0x57ea0e={'raw':!![],'where':{'id':_0x13d88d['params']['id']}},_0x21e021={};_0x21e021[_0xedab('0x3f')]=_['keys'](db[_0xedab('0x3c')]['rawAttributes']);_0x21e021['query']=_[_0xedab('0x52')](_0x13d88d[_0xedab('0x40')]);_0x21e021[_0xedab('0x41')]=_[_0xedab('0x42')](_0x21e021['model'],_0x21e021[_0xedab('0x40')]);_0x57ea0e[_0xedab('0x43')]=_[_0xedab('0x42')](_0x21e021[_0xedab('0x3f')],qs[_0xedab('0x44')](_0x13d88d[_0xedab('0x40')][_0xedab('0x44')]));_0x57ea0e[_0xedab('0x43')]=_0x57ea0e[_0xedab('0x43')]['length']?_0x57ea0e['attributes']:_0x21e021[_0xedab('0x3f')];if(_0x13d88d['query'][_0xedab('0x4f')]){_0x57ea0e[_0xedab('0x53')]=[{'all':!![]}];}_0x57ea0e=_[_0xedab('0x4c')]({},_0x57ea0e,_0x13d88d[_0xedab('0x4e')]);return db[_0xedab('0x3c')]['find'](_0x57ea0e)[_0xedab('0x20')](handleEntityNotFound(_0x52dddb,null))[_0xedab('0x20')](respondWithResult(_0x52dddb,null))[_0xedab('0x29')](handleError(_0x52dddb,null));};exports[_0xedab('0x54')]=function(_0x16dca0,_0x1ea1c9){return db[_0xedab('0x3c')][_0xedab('0x54')](_0x16dca0['body'],{})['then'](function(_0x41df5c){var _0x17f34e=_0x16dca0['user'][_0xedab('0x36')]({'plain':!![]});if(!_0x17f34e)throw new Error(_0xedab('0x55'));if(_0x17f34e[_0xedab('0x56')]===_0xedab('0x57')){var _0x4b0b97=_0x41df5c[_0xedab('0x36')]({'plain':!![]});var _0x1f5722='ChatQueues';return db[_0xedab('0x58')]['find']({'where':{'name':_0x1f5722,'userProfileId':_0x17f34e[_0xedab('0x59')]},'raw':!![]})[_0xedab('0x20')](function(_0xeb8897){if(_0xeb8897&&_0xeb8897[_0xedab('0x5a')]===0x0){return db['UserProfileResource']['create']({'name':_0x4b0b97[_0xedab('0x39')],'resourceId':_0x4b0b97['id'],'type':_0xeb8897[_0xedab('0x39')],'sectionId':_0xeb8897['id']},{})[_0xedab('0x20')](function(){return _0x41df5c;});}else{return _0x41df5c;}})['catch'](function(_0x46e0bd){logger['error'](_0xedab('0x5b'),_0x46e0bd);throw _0x46e0bd;});}return _0x41df5c;})[_0xedab('0x20')](respondWithResult(_0x1ea1c9,0xc9))['catch'](handleError(_0x1ea1c9,null));};exports[_0xedab('0x34')]=function(_0x2953c9,_0x35bbba){if(_0x2953c9[_0xedab('0x5c')]['id']){delete _0x2953c9['body']['id'];}return db[_0xedab('0x3c')][_0xedab('0x5d')]({'where':{'id':_0x2953c9[_0xedab('0x5e')]['id']}})[_0xedab('0x20')](handleEntityNotFound(_0x35bbba,null))[_0xedab('0x20')](saveUpdates(_0x2953c9[_0xedab('0x5c')],null))['then'](respondWithResult(_0x35bbba,null))['catch'](handleError(_0x35bbba,null));};exports[_0xedab('0x35')]=function(_0x2caa7b,_0x20add8){return db[_0xedab('0x3c')][_0xedab('0x5d')]({'where':{'id':_0x2caa7b[_0xedab('0x5e')]['id']}})[_0xedab('0x20')](handleEntityNotFound(_0x20add8,null))[_0xedab('0x20')](removeEntity(_0x20add8,null))[_0xedab('0x29')](handleError(_0x20add8,null));};exports[_0xedab('0x5f')]=function(_0x3e67f6,_0x43a5c9){return db[_0xedab('0x3c')][_0xedab('0x5f')]()[_0xedab('0x20')](respondWithResult(_0x43a5c9,null))[_0xedab('0x29')](handleError(_0x43a5c9,null));};exports[_0xedab('0x60')]=function(_0x384d78,_0x941b87,_0x29f6d0){var _0x3a14d1={'raw':!![],'where':{}},_0x5acbd2={},_0x5de1ad;return db[_0xedab('0x3c')]['findOne']({'where':{'id':_0x384d78[_0xedab('0x5e')]['id']}})[_0xedab('0x20')](handleEntityNotFound(_0x941b87,null))[_0xedab('0x20')](function(_0x5eacf6){if(_0x5eacf6){_0x5de1ad=_0x5eacf6['get']({'plain':!![]});_0x5acbd2['model']=_[_0xedab('0x52')](db[_0xedab('0x61')][_0xedab('0x3d')]);_0x5acbd2[_0xedab('0x40')]=_[_0xedab('0x52')](_0x384d78[_0xedab('0x40')]);_0x5acbd2['filters']=_[_0xedab('0x42')](_0x5acbd2['model'],_0x5acbd2[_0xedab('0x40')]);_0x3a14d1[_0xedab('0x43')]=_[_0xedab('0x42')](_0x5acbd2['model'],qs[_0xedab('0x44')](_0x384d78[_0xedab('0x40')]['fields']));_0x3a14d1[_0xedab('0x43')]=_0x3a14d1[_0xedab('0x43')][_0xedab('0x45')]?_0x3a14d1['attributes']:_0x5acbd2['model'];if(!_0x384d78['query'][_0xedab('0x46')]('nolimit')){_0x3a14d1[_0xedab('0x2f')]=qs[_0xedab('0x2f')](_0x384d78[_0xedab('0x40')]['limit']);_0x3a14d1['offset']=qs[_0xedab('0x2d')](_0x384d78[_0xedab('0x40')][_0xedab('0x2d')]);}_0x3a14d1[_0xedab('0x48')]=qs[_0xedab('0x49')](_0x384d78['query'][_0xedab('0x49')]);_0x3a14d1['where']=qs[_0xedab('0x41')](_[_0xedab('0x4b')](_0x384d78[_0xedab('0x40')],_0x5acbd2['filters']));_0x3a14d1[_0xedab('0x4a')][_0xedab('0x62')]=_0x5eacf6['id'];if(_0x384d78[_0xedab('0x40')][_0xedab('0x63')]){_0x3a14d1['where']=_[_0xedab('0x4c')](_0x3a14d1[_0xedab('0x4a')],{'$or':_[_0xedab('0x3b')](_0x3a14d1['attributes'],function(_0x14bf27){var _0xbc0a9e={};_0xbc0a9e[_0x14bf27]={'$like':'%'+_0x384d78[_0xedab('0x40')][_0xedab('0x63')]+'%'};return _0xbc0a9e;})});}_0x3a14d1=_[_0xedab('0x4c')]({},_0x3a14d1,_0x384d78['options']);return db[_0xedab('0x61')][_0xedab('0x50')](_0x3a14d1);}})['then'](function(_0x177ee6){if(_0x177ee6){return db[_0xedab('0x64')][_0xedab('0x65')]({'where':{'id':_['map'](_0x177ee6,_0xedab('0x66')),'role':_0xedab('0x67')},'attributes':['id',_0xedab('0x39'),_0xedab('0x68'),_0xedab('0x69'),_0xedab('0x6a')]});}})[_0xedab('0x20')](function(_0x54571f){if(_0x54571f){return{'count':_0x54571f[_0xedab('0x30')],'rows':_[_0xedab('0x3b')](_0x54571f[_0xedab('0x6b')],function(_0x492b49){return{'membername':_0x492b49[_0xedab('0x39')],'UserId':_0x492b49['id'],'queue_name':_0x5de1ad[_0xedab('0x39')],'ChatQueueId':_0x5de1ad['id'],'interface':util[_0xedab('0x6c')](_0xedab('0x6d'),_0xedab('0x6e'),_0x492b49[_0xedab('0x39')]),'penalty':0x0,'paused':_0x492b49['chatPause'],'createdAt':_0x492b49[_0xedab('0x6a')],'updatedAt':_0x492b49[_0xedab('0x69')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x941b87,_0x3a14d1))[_0xedab('0x29')](handleError(_0x941b87,null));};exports[_0xedab('0x6f')]=function(_0x59e612,_0x2447fc,_0x1772bb){var _0x5bb080={};var _0x3b1361={};var _0x598e61;var _0x290998;return db[_0xedab('0x3c')][_0xedab('0x70')]({'where':{'id':_0x59e612[_0xedab('0x5e')]['id']}})['then'](handleEntityNotFound(_0x2447fc,null))[_0xedab('0x20')](function(_0x4b427d){if(_0x4b427d){_0x598e61=_0x4b427d;_0x3b1361[_0xedab('0x3f')]=_['keys'](db[_0xedab('0x71')]['rawAttributes']);_0x3b1361[_0xedab('0x40')]=_['keys'](_0x59e612['query']);_0x3b1361[_0xedab('0x41')]=_[_0xedab('0x42')](_0x3b1361[_0xedab('0x3f')],_0x3b1361[_0xedab('0x40')]);_0x5bb080[_0xedab('0x43')]=_[_0xedab('0x42')](_0x3b1361['model'],qs[_0xedab('0x44')](_0x59e612['query'][_0xedab('0x44')]));_0x5bb080[_0xedab('0x43')]=_0x5bb080[_0xedab('0x43')][_0xedab('0x45')]?_0x5bb080['attributes']:_0x3b1361[_0xedab('0x3f')];_0x5bb080[_0xedab('0x48')]=qs[_0xedab('0x49')](_0x59e612[_0xedab('0x40')][_0xedab('0x49')]);_0x5bb080['where']=qs['filters'](_[_0xedab('0x4b')](_0x59e612[_0xedab('0x40')],_0x3b1361['filters']));if(_0x59e612['query'][_0xedab('0x63')]){_0x5bb080[_0xedab('0x4a')]=_['merge'](_0x5bb080[_0xedab('0x4a')],{'$or':_[_0xedab('0x3b')](_0x5bb080[_0xedab('0x43')],function(_0x529d3c){var _0x106a34={};_0x106a34[_0x529d3c]={'$like':'%'+_0x59e612[_0xedab('0x40')]['filter']+'%'};return _0x106a34;})});}_0x5bb080=_['merge']({},_0x5bb080,_0x59e612['options']);return _0x598e61['getTeams'](_0x5bb080);}})[_0xedab('0x20')](function(_0x3bf4d6){if(_0x3bf4d6){_0x290998=_0x3bf4d6['length'];if(!_0x59e612[_0xedab('0x40')][_0xedab('0x46')](_0xedab('0x47'))){_0x5bb080[_0xedab('0x2f')]=qs[_0xedab('0x2f')](_0x59e612[_0xedab('0x40')][_0xedab('0x2f')]);_0x5bb080[_0xedab('0x2d')]=qs[_0xedab('0x2d')](_0x59e612[_0xedab('0x40')][_0xedab('0x2d')]);}return _0x598e61[_0xedab('0x6f')](_0x5bb080);}})[_0xedab('0x20')](function(_0x2aed05){if(_0x2aed05){return _0x2aed05?{'count':_0x290998,'rows':_0x2aed05}:null;}})[_0xedab('0x20')](respondWithResult(_0x2447fc,null))[_0xedab('0x29')](handleError(_0x2447fc,null));};exports['addTeams']=function(_0x5d0331,_0x55e270,_0x13ee5a){var _0x50764c=_0x5d0331['body']['ids'];return db[_0xedab('0x71')][_0xedab('0x50')]({'where':{'id':_0x50764c},'attributes':['id'],'include':[{'model':db['User'],'as':_0xedab('0x72'),'attributes':['id',_0xedab('0x39'),_0xedab('0x73'),_0xedab('0x74'),_0xedab('0x75')],'raw':!![]}]})[_0xedab('0x20')](function(_0x3e320e){if(_0x3e320e){var _0x4600df=_[_0xedab('0x76')](_0x3e320e,function(_0x2e897c){var _0x2806e5=_0x2e897c[_0xedab('0x36')]({'plain':!![]});return _0x2806e5[_0xedab('0x72')];});return db[_0xedab('0x3c')][_0xedab('0x5d')]({'where':{'id':_0x5d0331['params']['id']}})[_0xedab('0x20')](function(_0x39c803){return db[_0xedab('0x77')][_0xedab('0x78')](function(_0x1f016b){return _0x39c803[_0xedab('0x79')](_0x50764c,{'transaction':_0x1f016b})['then'](function(){return BPromise['each'](_0x4600df,function(_0x1c4895){return db[_0xedab('0x61')][_0xedab('0x7a')]({'where':{'UserId':_0x1c4895['id'],'ChatQueueId':_0x5d0331[_0xedab('0x5e')]['id']},'transaction':_0x1f016b});});})[_0xedab('0x20')](function(){_0x4600df[_0xedab('0x7b')](function(_0x16a3dd){socket['emit'](_0xedab('0x7c'),{'UserId':_0x16a3dd['id'],'ChatQueueId':_0x39c803['id']});});});});});}})[_0xedab('0x20')](respondWithStatusCode(_0x55e270,null))[_0xedab('0x29')](handleError(_0x55e270,null));};exports['removeTeams']=function(_0x1a93f8,_0x368491,_0x410399){return db[_0xedab('0x71')][_0xedab('0x50')]({'where':{'id':_0x1a93f8[_0xedab('0x40')][_0xedab('0x7d')]},'attributes':['id'],'include':[{'model':db[_0xedab('0x64')],'as':_0xedab('0x72'),'attributes':['id'],'raw':!![]}]})[_0xedab('0x20')](handleEntityNotFound(_0x368491,null))[_0xedab('0x20')](function(_0x11a6ba){var _0x556079=_[_0xedab('0x3b')](_0x11a6ba,'id');var _0x34aa93=[];var _0x33b591=[];var _0x1377d1=squel[_0xedab('0x7e')]();_0x1377d1[_0xedab('0x7f')](_0xedab('0x80'))[_0xedab('0x81')](_0xedab('0x82'),'tq')[_0xedab('0x83')](_0xedab('0x84'),'ut',_0xedab('0x85'))[_0xedab('0x4a')]('ChatQueueId\x20=\x20?',_0x1a93f8[_0xedab('0x5e')]['id']);for(var _0x2643b4=0x0;_0x2643b4<_0x11a6ba[_0xedab('0x45')];_0x2643b4+=0x1){let _0x555f1c=_0x11a6ba[_0x2643b4];for(var _0x18e039=0x0;_0x18e039<_0x555f1c[_0xedab('0x72')][_0xedab('0x45')];_0x18e039+=0x1){let _0x56909e=_0x555f1c[_0xedab('0x72')][_0x18e039];var _0x3edc93=_0x1377d1[_0xedab('0x86')]();_0x3edc93['where'](_0xedab('0x87'),_0x56909e['id']);_0x33b591[_0xedab('0x88')](db[_0xedab('0x77')]['query'](_0x3edc93['toString'](),{'type':db[_0xedab('0x77')]['QueryTypes']['SELECT']})[_0xedab('0x20')](function(_0x293205){if(_0x293205['length']===0x1){return _0x56909e['id'];}else{var _0xb9735e=_[_0xedab('0x89')](_['map'](_0x293205,_0xedab('0x8a')),function(_0x2fe71d){return _[_0xedab('0x8b')](_0x556079,_0x2fe71d);});if(_0xb9735e){return _0x56909e['id'];}}}));}}return BPromise[_0xedab('0x8c')](_0x33b591)['then'](function(_0x5b4957){_0x34aa93=_(_0x34aa93)[_0xedab('0x8d')](_0x5b4957)[_0xedab('0x8e')]()[_0xedab('0x8f')]();return db['ChatQueue']['find']({'where':{'id':_0x1a93f8[_0xedab('0x5e')]['id']}})['then'](function(_0x9a4071){return db[_0xedab('0x77')]['transaction'](function(_0x2d85f4){return _0x9a4071['removeTeams'](_0x1a93f8[_0xedab('0x40')]['ids'],{'transaction':_0x2d85f4})[_0xedab('0x20')](function(){if(!_[_0xedab('0x90')](_0x34aa93)){return _0x9a4071[_0xedab('0x91')](_0x34aa93,{'transaction':_0x2d85f4});}})[_0xedab('0x20')](function(){_0x34aa93[_0xedab('0x7b')](function(_0x115168){socket['emit'](_0xedab('0x92'),{'UserId':_0x115168,'ChatQueueId':_0x9a4071['id']});});});});});});})[_0xedab('0x20')](respondWithStatusCode(_0x368491,null))[_0xedab('0x29')](handleError(_0x368491,null));};exports[_0xedab('0x93')]=function(_0x3dabc3,_0x3530b2,_0x4f3201){return db[_0xedab('0x3c')][_0xedab('0x5d')]({'where':{'id':_0x3dabc3[_0xedab('0x5e')]['id']}})['then'](handleEntityNotFound(_0x3530b2,null))[_0xedab('0x20')](function(_0x30a3a9){if(_0x30a3a9){return _0x30a3a9[_0xedab('0x93')](_0x3dabc3[_0xedab('0x5c')][_0xedab('0x7d')],_['omit'](_0x3dabc3[_0xedab('0x5c')],['ids','id'])||{})[_0xedab('0x94')](function(_0x47dc32){for(var _0x132e35=0x0;_0x132e35<_0x3dabc3[_0xedab('0x5c')][_0xedab('0x7d')][_0xedab('0x45')];_0x132e35+=0x1){socket[_0xedab('0x95')](_0xedab('0x7c'),{'UserId':Number(_0x3dabc3[_0xedab('0x5c')]['ids'][_0x132e35]),'ChatQueueId':Number(_0x3dabc3[_0xedab('0x5e')]['id'])});}return _0x47dc32;});}})[_0xedab('0x20')](respondWithResult(_0x3530b2,null))[_0xedab('0x29')](handleError(_0x3530b2,null));};exports[_0xedab('0x91')]=function(_0x407f70,_0x2a1dec,_0x3e1779){return db[_0xedab('0x3c')][_0xedab('0x5d')]({'where':{'id':_0x407f70[_0xedab('0x5e')]['id']}})[_0xedab('0x20')](handleEntityNotFound(_0x2a1dec,null))[_0xedab('0x20')](function(_0x493a49){if(_0x493a49){return _0x493a49[_0xedab('0x91')](_0x407f70['query']['ids'])['then'](function(){if(_[_0xedab('0x96')](_0x407f70[_0xedab('0x40')][_0xedab('0x7d')])){for(var _0x1247f8=0x0;_0x1247f8<_0x407f70[_0xedab('0x40')][_0xedab('0x7d')][_0xedab('0x45')];_0x1247f8+=0x1){socket[_0xedab('0x95')](_0xedab('0x92'),{'UserId':Number(_0x407f70[_0xedab('0x40')][_0xedab('0x7d')][_0x1247f8]),'ChatQueueId':Number(_0x407f70[_0xedab('0x5e')]['id'])});}}else{socket[_0xedab('0x95')]('userChatQueue:remove',{'UserId':Number(_0x407f70[_0xedab('0x40')][_0xedab('0x7d')]),'ChatQueueId':Number(_0x407f70[_0xedab('0x5e')]['id'])});}});}})[_0xedab('0x20')](respondWithStatusCode(_0x2a1dec,null))[_0xedab('0x29')](handleError(_0x2a1dec,null));};exports[_0xedab('0x97')]=function(_0x4498d8,_0x123aff,_0x595993){var _0x4fa8f7={};var _0x6262b3={};var _0x110c6e;var _0x1d0d79;return db[_0xedab('0x3c')][_0xedab('0x70')]({'where':{'id':_0x4498d8[_0xedab('0x5e')]['id']}})[_0xedab('0x20')](handleEntityNotFound(_0x123aff,null))[_0xedab('0x20')](function(_0x5505c5){if(_0x5505c5){_0x110c6e=_0x5505c5;_0x6262b3[_0xedab('0x3f')]=_['keys'](db[_0xedab('0x64')][_0xedab('0x3d')]);_0x6262b3['query']=_[_0xedab('0x52')](_0x4498d8[_0xedab('0x40')]);_0x6262b3[_0xedab('0x41')]=_[_0xedab('0x42')](_0x6262b3[_0xedab('0x3f')],_0x6262b3[_0xedab('0x40')]);_0x4fa8f7[_0xedab('0x43')]=_['intersection'](_0x6262b3[_0xedab('0x3f')],qs[_0xedab('0x44')](_0x4498d8[_0xedab('0x40')]['fields']));_0x4fa8f7[_0xedab('0x43')]=_0x4fa8f7[_0xedab('0x43')][_0xedab('0x45')]?_0x4fa8f7['attributes']:_0x6262b3['model'];_0x4fa8f7['order']=qs['sort'](_0x4498d8[_0xedab('0x40')][_0xedab('0x49')]);_0x4fa8f7[_0xedab('0x4a')]=qs[_0xedab('0x41')](_[_0xedab('0x4b')](_0x4498d8[_0xedab('0x40')],_0x6262b3[_0xedab('0x41')]));if(_0x4498d8[_0xedab('0x40')]['filter']){_0x4fa8f7[_0xedab('0x4a')]=_['merge'](_0x4fa8f7[_0xedab('0x4a')],{'$or':_[_0xedab('0x3b')](_0x4fa8f7[_0xedab('0x43')],function(_0x4d20a6){var _0x3d37ca={};_0x3d37ca[_0x4d20a6]={'$like':'%'+_0x4498d8[_0xedab('0x40')][_0xedab('0x63')]+'%'};return _0x3d37ca;})});}_0x4fa8f7=_[_0xedab('0x4c')]({},_0x4fa8f7,_0x4498d8[_0xedab('0x4e')]);return _0x110c6e['getAgents'](_0x4fa8f7);}})['then'](function(_0x5d581f){if(_0x5d581f){_0x1d0d79=_0x5d581f[_0xedab('0x45')];if(!_0x4498d8[_0xedab('0x40')][_0xedab('0x46')]('nolimit')){_0x4fa8f7[_0xedab('0x2f')]=qs[_0xedab('0x2f')](_0x4498d8[_0xedab('0x40')][_0xedab('0x2f')]);_0x4fa8f7[_0xedab('0x2d')]=qs[_0xedab('0x2d')](_0x4498d8[_0xedab('0x40')][_0xedab('0x2d')]);}return _0x110c6e[_0xedab('0x97')](_0x4fa8f7);}})[_0xedab('0x20')](function(_0x5d143a){if(_0x5d143a){return _0x5d143a?{'count':_0x1d0d79,'rows':_0x5d143a}:null;}})[_0xedab('0x20')](respondWithResult(_0x123aff,null))[_0xedab('0x29')](handleError(_0x123aff,null));};
\ No newline at end of file
index 6593fea..c3f49bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17a0=['update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','ChatQueue','setMaxListeners'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x17a0,0x165));var _0x017a=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x17a0[_0x1facfa];return _0x9ec701;};'use strict';var EventEmitter=require('events');var ChatQueue=require(_0x017a('0x0'))['db'][_0x017a('0x1')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x017a('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x017a('0x3'),'afterDestroy':_0x017a('0x4')};function emitEvent(_0x2003d0){return function(_0x3923ac,_0x580dce,_0x157b77){ChatQueueEvents[_0x017a('0x5')](_0x2003d0+':'+_0x3923ac['id'],_0x3923ac);ChatQueueEvents[_0x017a('0x5')](_0x2003d0,_0x3923ac);_0x157b77(null);};}for(var e in events){if(events[_0x017a('0x6')](e)){var event=events[e];ChatQueue[_0x017a('0x7')](e,emitEvent(event));}}module[_0x017a('0x8')]=ChatQueueEvents;
\ No newline at end of file
+var _0xe86b=['ChatQueue','setMaxListeners','save','update','emit','hook','exports','events','../../mysqldb'];(function(_0x30be39,_0xfb49ad){var _0x4d99d6=function(_0x1e7665){while(--_0x1e7665){_0x30be39['push'](_0x30be39['shift']());}};_0x4d99d6(++_0xfb49ad);}(_0xe86b,0x1c9));var _0xbe86=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xe86b[_0x20a584];return _0x4b41a8;};'use strict';var EventEmitter=require(_0xbe86('0x0'));var ChatQueue=require(_0xbe86('0x1'))['db'][_0xbe86('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0xbe86('0x3')](0x0);var events={'afterCreate':_0xbe86('0x4'),'afterUpdate':_0xbe86('0x5'),'afterDestroy':'remove'};function emitEvent(_0x369924){return function(_0x155731,_0x548549,_0x95764d){ChatQueueEvents[_0xbe86('0x6')](_0x369924+':'+_0x155731['id'],_0x155731);ChatQueueEvents[_0xbe86('0x6')](_0x369924,_0x155731);_0x95764d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatQueue[_0xbe86('0x7')](e,emitEvent(event));}}module[_0xbe86('0x8')]=ChatQueueEvents;
\ No newline at end of file
index 9a1010a..f4fb518 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x042d=['chat_queues','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./chatQueue.attributes','exports'];(function(_0x501fd1,_0x5a743b){var _0x4e8ffe=function(_0x5c1d8b){while(--_0x5c1d8b){_0x501fd1['push'](_0x501fd1['shift']());}};_0x4e8ffe(++_0x5a743b);}(_0x042d,0xdd));var _0xd042=function(_0xe73080,_0x24c56d){_0xe73080=_0xe73080-0x0;var _0x12cbc4=_0x042d[_0xe73080];return _0x12cbc4;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xd042('0x0'))(_0xd042('0x1'));var moment=require(_0xd042('0x2'));var BPromise=require(_0xd042('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd042('0x4'));var rimraf=require(_0xd042('0x5'));var config=require(_0xd042('0x6'));var attributes=require(_0xd042('0x7'));module[_0xd042('0x8')]=function(_0x21a2f5,_0x293479){return _0x21a2f5['define']('ChatQueue',attributes,{'tableName':_0xd042('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8583=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports','define','ChatQueue'];(function(_0x384c89,_0x31053b){var _0x160477=function(_0x6cb099){while(--_0x6cb099){_0x384c89['push'](_0x384c89['shift']());}};_0x160477(++_0x31053b);}(_0x8583,0x1c3));var _0x3858=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x8583[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require(_0x3858('0x0'));var logger=require(_0x3858('0x1'))(_0x3858('0x2'));var moment=require(_0x3858('0x3'));var BPromise=require(_0x3858('0x4'));var rp=require(_0x3858('0x5'));var fs=require('fs');var path=require(_0x3858('0x6'));var rimraf=require(_0x3858('0x7'));var config=require('../../config/environment');var attributes=require('./chatQueue.attributes');module[_0x3858('0x8')]=function(_0x291128,_0x2f43d4){return _0x291128[_0x3858('0x9')](_0x3858('0xa'),attributes,{'tableName':'chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2887d55..340f336 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a4d=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','register','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetChatQueue','ChatQueue','findAll','options','raw','where','attributes','limit','include','map','model','find','ShowChatQueue','catch','lodash','util','bluebird'];(function(_0x535699,_0x37e9f9){var _0x4bedde=function(_0x5828cd){while(--_0x5828cd){_0x535699['push'](_0x535699['shift']());}};_0x4bedde(++_0x37e9f9);}(_0x1a4d,0x189));var _0xd1a4=function(_0x29868c,_0x32c951){_0x29868c=_0x29868c-0x0;var _0x468481=_0x1a4d[_0x29868c];return _0x468481;};'use strict';var _=require(_0xd1a4('0x0'));var util=require(_0xd1a4('0x1'));var moment=require('moment');var BPromise=require(_0xd1a4('0x2'));var rs=require(_0xd1a4('0x3'));var fs=require('fs');var Redis=require(_0xd1a4('0x4'));var db=require(_0xd1a4('0x5'))['db'];var utils=require(_0xd1a4('0x6'));var logger=require(_0xd1a4('0x7'))(_0xd1a4('0x8'));var config=require(_0xd1a4('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xd1a4('0xa')][_0xd1a4('0xb')]({'port':0x232a});config[_0xd1a4('0xc')]=_[_0xd1a4('0xd')](config[_0xd1a4('0xc')],{'host':_0xd1a4('0xe'),'port':0x18eb});var socket=require(_0xd1a4('0xf'))(new Redis(config[_0xd1a4('0xc')]));require(_0xd1a4('0x10'))[_0xd1a4('0x11')](socket);function respondWithRpcPromise(_0x56ec99,_0x102afe,_0x5db2df){return new BPromise(function(_0x2155d8,_0x228d70){return client[_0xd1a4('0x12')](_0x56ec99,_0x5db2df)[_0xd1a4('0x13')](function(_0x23671b){logger[_0xd1a4('0x14')](_0xd1a4('0x15'),_0x102afe,_0xd1a4('0x16'));logger[_0xd1a4('0x17')](_0xd1a4('0x18'),_0x102afe,'request\x20sent',JSON[_0xd1a4('0x19')](_0x23671b));if(_0x23671b['error']){if(_0x23671b[_0xd1a4('0x1a')][_0xd1a4('0x1b')]===0x1f4){logger[_0xd1a4('0x1a')]('ChatQueue,\x20%s,\x20%s',_0x102afe,_0x23671b[_0xd1a4('0x1a')][_0xd1a4('0x1c')]);return _0x228d70(_0x23671b['error']['message']);}logger[_0xd1a4('0x1a')]('ChatQueue,\x20%s,\x20%s',_0x102afe,_0x23671b['error'][_0xd1a4('0x1c')]);return _0x2155d8(_0x23671b[_0xd1a4('0x1a')]['message']);}else{logger[_0xd1a4('0x14')](_0xd1a4('0x15'),_0x102afe,_0xd1a4('0x16'));_0x2155d8(_0x23671b[_0xd1a4('0x1d')][_0xd1a4('0x1c')]);}})['catch'](function(_0x17eb85){logger['error']('ChatQueue,\x20%s,\x20%s',_0x102afe,_0x17eb85);_0x228d70(_0x17eb85);});});}exports[_0xd1a4('0x1e')]=function(_0x1952ab){var _0x20493e=this;return new Promise(function(_0x33d7f1,_0x454226){return db[_0xd1a4('0x1f')][_0xd1a4('0x20')]({'raw':_0x1952ab[_0xd1a4('0x21')]?_0x1952ab[_0xd1a4('0x21')][_0xd1a4('0x22')]===undefined?!![]:![]:!![],'where':_0x1952ab[_0xd1a4('0x21')]?_0x1952ab[_0xd1a4('0x21')][_0xd1a4('0x23')]||null:null,'attributes':_0x1952ab[_0xd1a4('0x21')]?_0x1952ab['options'][_0xd1a4('0x24')]||null:null,'limit':_0x1952ab[_0xd1a4('0x21')]?_0x1952ab[_0xd1a4('0x21')][_0xd1a4('0x25')]||null:null,'include':_0x1952ab[_0xd1a4('0x21')]?_0x1952ab['options'][_0xd1a4('0x26')]?_[_0xd1a4('0x27')](_0x1952ab[_0xd1a4('0x21')][_0xd1a4('0x26')],function(_0x2e7076){return{'model':db[_0x2e7076[_0xd1a4('0x28')]],'as':_0x2e7076['as'],'attributes':_0x2e7076[_0xd1a4('0x24')],'include':_0x2e7076[_0xd1a4('0x26')]?_['map'](_0x2e7076[_0xd1a4('0x26')],function(_0xc69738){return{'model':db[_0xc69738[_0xd1a4('0x28')]],'as':_0xc69738['as'],'attributes':_0xc69738[_0xd1a4('0x24')],'include':_0xc69738[_0xd1a4('0x26')]?_[_0xd1a4('0x27')](_0xc69738[_0xd1a4('0x26')],function(_0xf5853f){return{'model':db[_0xf5853f[_0xd1a4('0x28')]],'as':_0xf5853f['as'],'attributes':_0xf5853f[_0xd1a4('0x24')]};}):[]};}):[]};}):[]:[]})[_0xd1a4('0x13')](function(_0x49c8df){logger['info'](_0xd1a4('0x1e'),_0x1952ab);logger[_0xd1a4('0x17')]('GetChatQueue',_0x1952ab,JSON[_0xd1a4('0x19')](_0x49c8df));_0x33d7f1(_0x49c8df);})['catch'](function(_0xd683aa){logger[_0xd1a4('0x1a')](_0xd1a4('0x1e'),_0xd683aa['message'],_0x1952ab);_0x454226(_0x20493e[_0xd1a4('0x1a')](0x1f4,_0xd683aa['message']));});});};exports['ShowChatQueue']=function(_0xadd329){var _0x1a8844=this;return new Promise(function(_0x340546,_0x1d7c30){return db[_0xd1a4('0x1f')][_0xd1a4('0x29')]({'raw':_0xadd329[_0xd1a4('0x21')]?_0xadd329[_0xd1a4('0x21')][_0xd1a4('0x22')]===undefined?!![]:![]:!![],'where':_0xadd329[_0xd1a4('0x21')]?_0xadd329[_0xd1a4('0x21')][_0xd1a4('0x23')]||null:null,'attributes':_0xadd329['options']?_0xadd329[_0xd1a4('0x21')]['attributes']||null:null,'include':_0xadd329[_0xd1a4('0x21')]?_0xadd329[_0xd1a4('0x21')][_0xd1a4('0x26')]?_[_0xd1a4('0x27')](_0xadd329['options'][_0xd1a4('0x26')],function(_0x378e70){return{'model':db[_0x378e70['model']],'as':_0x378e70['as'],'attributes':_0x378e70[_0xd1a4('0x24')],'include':_0x378e70[_0xd1a4('0x26')]?_[_0xd1a4('0x27')](_0x378e70['include'],function(_0x4f44eb){return{'model':db[_0x4f44eb[_0xd1a4('0x28')]],'as':_0x4f44eb['as'],'attributes':_0x4f44eb['attributes'],'include':_0x4f44eb[_0xd1a4('0x26')]?_[_0xd1a4('0x27')](_0x4f44eb[_0xd1a4('0x26')],function(_0xc712cc){return{'model':db[_0xc712cc[_0xd1a4('0x28')]],'as':_0xc712cc['as'],'attributes':_0xc712cc['attributes']};}):[]};}):[]};}):[]:[]})[_0xd1a4('0x13')](function(_0x389915){logger[_0xd1a4('0x14')](_0xd1a4('0x2a'),_0xadd329);logger[_0xd1a4('0x17')](_0xd1a4('0x2a'),_0xadd329,JSON[_0xd1a4('0x19')](_0x389915));_0x340546(_0x389915);})[_0xd1a4('0x2b')](function(_0x1bdfa1){logger['error']('ShowChatQueue',_0x1bdfa1[_0xd1a4('0x1c')],_0xadd329);_0x1d7c30(_0x1a8844[_0xd1a4('0x1a')](0x1f4,_0x1bdfa1[_0xd1a4('0x1c')]));});});};
\ No newline at end of file
+var _0x9805=['request\x20sent','stringify','error','code','message','info','result','catch','GetChatQueue','ChatQueue','options','raw','where','attributes','include','map','model','debug','ShowChatQueue','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','register','request','then','ChatQueue,\x20%s,\x20%s'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x9805,0x18f));var _0x5980=function(_0x4cefee,_0xabb91e){_0x4cefee=_0x4cefee-0x0;var _0x473af2=_0x9805[_0x4cefee];return _0x473af2;};'use strict';var _=require(_0x5980('0x0'));var util=require(_0x5980('0x1'));var moment=require(_0x5980('0x2'));var BPromise=require(_0x5980('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5980('0x4'))['db'];var utils=require(_0x5980('0x5'));var logger=require(_0x5980('0x6'))(_0x5980('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5980('0x8')][_0x5980('0x9')]({'port':0x232a});config[_0x5980('0xa')]=_[_0x5980('0xb')](config[_0x5980('0xa')],{'host':_0x5980('0xc'),'port':0x18eb});var socket=require(_0x5980('0xd'))(new Redis(config[_0x5980('0xa')]));require(_0x5980('0xe'))[_0x5980('0xf')](socket);function respondWithRpcPromise(_0x363d19,_0x2ce129,_0x5dce69){return new BPromise(function(_0x56e871,_0xb00812){return client[_0x5980('0x10')](_0x363d19,_0x5dce69)[_0x5980('0x11')](function(_0x458c32){logger['info'](_0x5980('0x12'),_0x2ce129,_0x5980('0x13'));logger['debug']('ChatQueue,\x20%s,\x20%s,\x20%s',_0x2ce129,_0x5980('0x13'),JSON[_0x5980('0x14')](_0x458c32));if(_0x458c32[_0x5980('0x15')]){if(_0x458c32[_0x5980('0x15')][_0x5980('0x16')]===0x1f4){logger[_0x5980('0x15')](_0x5980('0x12'),_0x2ce129,_0x458c32[_0x5980('0x15')]['message']);return _0xb00812(_0x458c32[_0x5980('0x15')]['message']);}logger[_0x5980('0x15')](_0x5980('0x12'),_0x2ce129,_0x458c32[_0x5980('0x15')][_0x5980('0x17')]);return _0x56e871(_0x458c32[_0x5980('0x15')]['message']);}else{logger[_0x5980('0x18')](_0x5980('0x12'),_0x2ce129,_0x5980('0x13'));_0x56e871(_0x458c32[_0x5980('0x19')][_0x5980('0x17')]);}})[_0x5980('0x1a')](function(_0x1753ea){logger[_0x5980('0x15')](_0x5980('0x12'),_0x2ce129,_0x1753ea);_0xb00812(_0x1753ea);});});}exports[_0x5980('0x1b')]=function(_0x2222fa){var _0x57ece8=this;return new Promise(function(_0x5af427,_0x4f5300){return db[_0x5980('0x1c')]['findAll']({'raw':_0x2222fa['options']?_0x2222fa[_0x5980('0x1d')][_0x5980('0x1e')]===undefined?!![]:![]:!![],'where':_0x2222fa[_0x5980('0x1d')]?_0x2222fa[_0x5980('0x1d')][_0x5980('0x1f')]||null:null,'attributes':_0x2222fa[_0x5980('0x1d')]?_0x2222fa[_0x5980('0x1d')][_0x5980('0x20')]||null:null,'limit':_0x2222fa[_0x5980('0x1d')]?_0x2222fa['options']['limit']||null:null,'include':_0x2222fa[_0x5980('0x1d')]?_0x2222fa[_0x5980('0x1d')][_0x5980('0x21')]?_[_0x5980('0x22')](_0x2222fa['options']['include'],function(_0x5b428e){return{'model':db[_0x5b428e[_0x5980('0x23')]],'as':_0x5b428e['as'],'attributes':_0x5b428e['attributes'],'include':_0x5b428e[_0x5980('0x21')]?_[_0x5980('0x22')](_0x5b428e[_0x5980('0x21')],function(_0x35915e){return{'model':db[_0x35915e[_0x5980('0x23')]],'as':_0x35915e['as'],'attributes':_0x35915e['attributes'],'include':_0x35915e[_0x5980('0x21')]?_[_0x5980('0x22')](_0x35915e[_0x5980('0x21')],function(_0x2b436d){return{'model':db[_0x2b436d[_0x5980('0x23')]],'as':_0x2b436d['as'],'attributes':_0x2b436d['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x4d7e02){logger[_0x5980('0x18')](_0x5980('0x1b'),_0x2222fa);logger[_0x5980('0x24')](_0x5980('0x1b'),_0x2222fa,JSON['stringify'](_0x4d7e02));_0x5af427(_0x4d7e02);})[_0x5980('0x1a')](function(_0x491385){logger[_0x5980('0x15')]('GetChatQueue',_0x491385[_0x5980('0x17')],_0x2222fa);_0x4f5300(_0x57ece8['error'](0x1f4,_0x491385[_0x5980('0x17')]));});});};exports[_0x5980('0x25')]=function(_0x4e852b){var _0x4757cb=this;return new Promise(function(_0x2fc934,_0x2c8e10){return db[_0x5980('0x1c')]['find']({'raw':_0x4e852b[_0x5980('0x1d')]?_0x4e852b[_0x5980('0x1d')][_0x5980('0x1e')]===undefined?!![]:![]:!![],'where':_0x4e852b[_0x5980('0x1d')]?_0x4e852b[_0x5980('0x1d')][_0x5980('0x1f')]||null:null,'attributes':_0x4e852b[_0x5980('0x1d')]?_0x4e852b[_0x5980('0x1d')][_0x5980('0x20')]||null:null,'include':_0x4e852b[_0x5980('0x1d')]?_0x4e852b[_0x5980('0x1d')][_0x5980('0x21')]?_[_0x5980('0x22')](_0x4e852b[_0x5980('0x1d')]['include'],function(_0x4982ff){return{'model':db[_0x4982ff[_0x5980('0x23')]],'as':_0x4982ff['as'],'attributes':_0x4982ff['attributes'],'include':_0x4982ff['include']?_[_0x5980('0x22')](_0x4982ff['include'],function(_0x208a6c){return{'model':db[_0x208a6c['model']],'as':_0x208a6c['as'],'attributes':_0x208a6c[_0x5980('0x20')],'include':_0x208a6c[_0x5980('0x21')]?_[_0x5980('0x22')](_0x208a6c[_0x5980('0x21')],function(_0x3ca809){return{'model':db[_0x3ca809['model']],'as':_0x3ca809['as'],'attributes':_0x3ca809[_0x5980('0x20')]};}):[]};}):[]};}):[]:[]})[_0x5980('0x11')](function(_0x481fe1){logger[_0x5980('0x18')](_0x5980('0x25'),_0x4e852b);logger[_0x5980('0x24')](_0x5980('0x25'),_0x4e852b,JSON[_0x5980('0x14')](_0x481fe1));_0x2fc934(_0x481fe1);})[_0x5980('0x1a')](function(_0x4379ba){logger[_0x5980('0x15')](_0x5980('0x25'),_0x4379ba['message'],_0x4e852b);_0x2c8e10(_0x4757cb['error'](0x1f4,_0x4379ba['message']));});});};
\ No newline at end of file
index a044ae6..b4e2486 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68fc=['emit','removeListener','register','chatQueue:','./chatQueue.events','save','remove'];(function(_0x3d7fb5,_0x16eb5c){var _0x3a9642=function(_0x3f5b2a){while(--_0x3f5b2a){_0x3d7fb5['push'](_0x3d7fb5['shift']());}};_0x3a9642(++_0x16eb5c);}(_0x68fc,0xa5));var _0xc68f=function(_0x470bcf,_0x3336d3){_0x470bcf=_0x470bcf-0x0;var _0xcd7ad1=_0x68fc[_0x470bcf];return _0xcd7ad1;};'use strict';var ChatQueueEvents=require(_0xc68f('0x0'));var events=[_0xc68f('0x1'),_0xc68f('0x2'),'update'];function createListener(_0x49aa95,_0x26513f){return function(_0x506fb5){_0x26513f[_0xc68f('0x3')](_0x49aa95,_0x506fb5);};}function removeListener(_0x593648,_0x5899ea){return function(){ChatQueueEvents[_0xc68f('0x4')](_0x593648,_0x5899ea);};}exports[_0xc68f('0x5')]=function(_0x1c6df9){for(var _0x363cdf=0x0,_0x4fcce4=events['length'];_0x363cdf<_0x4fcce4;_0x363cdf++){var _0x9f2705=events[_0x363cdf];var _0x2bf3fd=createListener(_0xc68f('0x6')+_0x9f2705,_0x1c6df9);ChatQueueEvents['on'](_0x9f2705,_0x2bf3fd);}};
\ No newline at end of file
+var _0x0a9a=['update','register','chatQueue:','save'];(function(_0x2ca213,_0x23e1b8){var _0x4bbb37=function(_0x1262aa){while(--_0x1262aa){_0x2ca213['push'](_0x2ca213['shift']());}};_0x4bbb37(++_0x23e1b8);}(_0x0a9a,0x183));var _0xa0a9=function(_0x2cb356,_0x4ea992){_0x2cb356=_0x2cb356-0x0;var _0x29e4f7=_0x0a9a[_0x2cb356];return _0x29e4f7;};'use strict';var ChatQueueEvents=require('./chatQueue.events');var events=[_0xa0a9('0x0'),'remove',_0xa0a9('0x1')];function createListener(_0x3cff22,_0x34801b){return function(_0x49162f){_0x34801b['emit'](_0x3cff22,_0x49162f);};}function removeListener(_0x317a94,_0x360be5){return function(){ChatQueueEvents['removeListener'](_0x317a94,_0x360be5);};}exports[_0xa0a9('0x2')]=function(_0xc65bbb){for(var _0x1aa717=0x0,_0x31d689=events['length'];_0x1aa717<_0x31d689;_0x1aa717++){var _0x2b2eb4=events[_0x1aa717];var _0x520f42=createListener(_0xa0a9('0x3')+_0x2b2eb4,_0xc65bbb);ChatQueueEvents['on'](_0x2b2eb4,_0x520f42);}};
\ No newline at end of file
index 080475d..f3772f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x1b169a,_0x3c908f){var _0x2affd0=function(_0x310540){while(--_0x310540){_0x1b169a['push'](_0x1b169a['shift']());}};_0x2affd0(++_0x3c908f);}(_0x7217,0x19e));var _0x7721=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0x7217[_0x37bd26];return _0xe83dc4;};'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
+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(_0x3b5778,_0x228ccf){var _0x3e3902=function(_0x2bdc77){while(--_0x2bdc77){_0x3b5778['push'](_0x3b5778['shift']());}};_0x3e3902(++_0x228ccf);}(_0xe14b,0x93));var _0xbe14=function(_0x71f648,_0x19654f){_0x71f648=_0x71f648-0x0;var _0x56203f=_0xe14b[_0x71f648];return _0x56203f;};'use strict';var multer=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xbe14('0x2'));var router=express[_0xbe14('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xbe14('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xbe14('0x5'));router[_0xbe14('0x6')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x8')]);router[_0xbe14('0x6')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['describe']);router['get']('/:id',auth[_0xbe14('0x7')](),controller[_0xbe14('0xa')]);router[_0xbe14('0x6')](_0xbe14('0xb'),auth['isAuthenticated'](),controller['getMembers']);router[_0xbe14('0x6')](_0xbe14('0xc'),auth['isAuthenticated'](),controller[_0xbe14('0xd')]);router[_0xbe14('0x6')](_0xbe14('0xe'),auth[_0xbe14('0x7')](),controller[_0xbe14('0xf')]);router[_0xbe14('0x10')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x11')]);router[_0xbe14('0x10')](_0xbe14('0xc'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x12')]);router[_0xbe14('0x10')]('/:id/users',auth['isAuthenticated'](),controller[_0xbe14('0x13')]);router[_0xbe14('0x14')](_0xbe14('0x15'),auth[_0xbe14('0x7')](),controller['update']);router[_0xbe14('0x16')](_0xbe14('0x15'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x17')]);router[_0xbe14('0x16')](_0xbe14('0xc'),auth[_0xbe14('0x7')](),controller['removeTeams']);router[_0xbe14('0x16')](_0xbe14('0xe'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x18')]);module[_0xbe14('0x19')]=router;
\ No newline at end of file
index 43872d1..bf128c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b62=['sequelize','exports','STRING','DATE'];(function(_0x3fa498,_0x18a051){var _0x3f790d=function(_0x56ef5e){while(--_0x56ef5e){_0x3fa498['push'](_0x3fa498['shift']());}};_0x3f790d(++_0x18a051);}(_0x6b62,0x154));var _0x26b6=function(_0x17f951,_0x517c85){_0x17f951=_0x17f951-0x0;var _0x1fc1c7=_0x6b62[_0x17f951];return _0x1fc1c7;};'use strict';var moment=require('moment');var Sequelize=require(_0x26b6('0x0'));module[_0x26b6('0x1')]={'uniqueid':{'type':Sequelize[_0x26b6('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x26b6('0x3')]},'acceptAt':{'type':Sequelize[_0x26b6('0x3')]},'exitAt':{'type':Sequelize[_0x26b6('0x3')]},'reason':{'type':Sequelize[_0x26b6('0x2')]}};
\ No newline at end of file
+var _0xfe03=['STRING','DATE','moment','exports'];(function(_0x1f02ab,_0x48965c){var _0x2518d8=function(_0x327ae0){while(--_0x327ae0){_0x1f02ab['push'](_0x1f02ab['shift']());}};_0x2518d8(++_0x48965c);}(_0xfe03,0x14a));var _0x3fe0=function(_0x1d0304,_0x315c51){_0x1d0304=_0x1d0304-0x0;var _0x2ef571=_0xfe03[_0x1d0304];return _0x2ef571;};'use strict';var moment=require(_0x3fe0('0x0'));var Sequelize=require('sequelize');module[_0x3fe0('0x1')]={'uniqueid':{'type':Sequelize[_0x3fe0('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x3fe0('0x2')]},'joinAt':{'type':Sequelize[_0x3fe0('0x3')]},'leaveAt':{'type':Sequelize[_0x3fe0('0x3')]},'acceptAt':{'type':Sequelize[_0x3fe0('0x3')]},'exitAt':{'type':Sequelize[_0x3fe0('0x3')]},'reason':{'type':Sequelize[_0x3fe0('0x2')]}};
\ No newline at end of file
index 8a8e862..d6e8efb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafb9=['fieldName','key','model','name','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','rawAttributes','create','body','update','params','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','save','then','destroy','stack','send','index','map','ChatQueueReport'];(function(_0x3af736,_0x4dab75){var _0x4dba03=function(_0x245a33){while(--_0x245a33){_0x3af736['push'](_0x3af736['shift']());}};_0x4dba03(++_0x4dab75);}(_0xafb9,0x68));var _0x9afb=function(_0x49b92b,_0xde2891){_0x49b92b=_0x49b92b-0x0;var _0x2905cd=_0xafb9[_0x49b92b];return _0x2905cd;};'use strict';var emlformat=require(_0x9afb('0x0'));var rimraf=require(_0x9afb('0x1'));var zipdir=require(_0x9afb('0x2'));var jsonpatch=require(_0x9afb('0x3'));var rp=require(_0x9afb('0x4'));var moment=require(_0x9afb('0x5'));var BPromise=require(_0x9afb('0x6'));var Mustache=require(_0x9afb('0x7'));var util=require(_0x9afb('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0x9afb('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9afb('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x9afb('0xb'));var jsforce=require(_0x9afb('0xc'));var deskjs=require(_0x9afb('0xd'));var toCsv=require('to-csv');var querystring=require(_0x9afb('0xe'));var Papa=require(_0x9afb('0xf'));var Redis=require(_0x9afb('0x10'));var authService=require(_0x9afb('0x11'));var qs=require(_0x9afb('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x9afb('0x13'))(_0x9afb('0x14'));var utils=require(_0x9afb('0x15'));var config=require(_0x9afb('0x16'));var licenseUtil=require(_0x9afb('0x17'));var db=require(_0x9afb('0x18'))['db'];function respondWithStatusCode(_0x374094,_0x34e849){_0x34e849=_0x34e849||0xcc;return function(_0x464462){if(_0x464462){return _0x374094[_0x9afb('0x19')](_0x34e849);}return _0x374094['status'](_0x34e849)[_0x9afb('0x1a')]();};}function respondWithResult(_0x572a02,_0x59fd82){_0x59fd82=_0x59fd82||0xc8;return function(_0x2f286f){if(_0x2f286f){return _0x572a02[_0x9afb('0x1b')](_0x59fd82)[_0x9afb('0x1c')](_0x2f286f);}};}function respondWithFilteredResult(_0x2d664d,_0x46b16f){return function(_0x39cdf1){if(_0x39cdf1){var _0xd111f1=typeof _0x46b16f['offset']===_0x9afb('0x1d')&&typeof _0x46b16f[_0x9afb('0x1e')]===_0x9afb('0x1d');var _0x190cb8=_0x39cdf1[_0x9afb('0x1f')];var _0x508433=_0xd111f1?0x0:_0x46b16f[_0x9afb('0x20')];var _0x50a7e4=_0xd111f1?_0x39cdf1[_0x9afb('0x1f')]:_0x46b16f[_0x9afb('0x20')]+_0x46b16f['limit'];var _0x4a1c74;if(_0x50a7e4>=_0x190cb8){_0x50a7e4=_0x190cb8;_0x4a1c74=0xc8;}else{_0x4a1c74=0xce;}_0x2d664d[_0x9afb('0x1b')](_0x4a1c74);return _0x2d664d[_0x9afb('0x21')](_0x9afb('0x22'),_0x508433+'-'+_0x50a7e4+'/'+_0x190cb8)[_0x9afb('0x1c')](_0x39cdf1);}return null;};}function patchUpdates(_0x3bd256){return function(_0x57b4e2){try{jsonpatch[_0x9afb('0x23')](_0x57b4e2,_0x3bd256,!![]);}catch(_0x4dc307){return BPromise['reject'](_0x4dc307);}return _0x57b4e2[_0x9afb('0x24')]();};}function saveUpdates(_0x3c3e48,_0x3d67bb){return function(_0x2d3938){if(_0x2d3938){return _0x2d3938['update'](_0x3c3e48)[_0x9afb('0x25')](function(_0x725a04){return _0x725a04;});}return null;};}function removeEntity(_0x49ba5f,_0x571bd9){return function(_0x5b5dab){if(_0x5b5dab){return _0x5b5dab[_0x9afb('0x26')]()['then'](function(){_0x49ba5f[_0x9afb('0x1b')](0xcc)[_0x9afb('0x1a')]();});}};}function handleEntityNotFound(_0x50a919,_0x324293){return function(_0x28beba){if(!_0x28beba){_0x50a919[_0x9afb('0x19')](0x194);}return _0x28beba;};}function handleError(_0x337d81,_0x530fbe){_0x530fbe=_0x530fbe||0x1f4;return function(_0x348255){logger['error'](_0x348255[_0x9afb('0x27')]);if(_0x348255['name']){delete _0x348255['name'];}_0x337d81[_0x9afb('0x1b')](_0x530fbe)[_0x9afb('0x28')](_0x348255);};}exports[_0x9afb('0x29')]=function(_0x13a33e,_0x119e04){var _0x3e3f57={},_0x46673d={},_0x5aabd5={'count':0x0,'rows':[]};var _0x494ef8=_[_0x9afb('0x2a')](db[_0x9afb('0x2b')]['rawAttributes'],function(_0x1d0bed){return{'name':_0x1d0bed[_0x9afb('0x2c')],'type':_0x1d0bed['type'][_0x9afb('0x2d')]};});_0x46673d[_0x9afb('0x2e')]=_[_0x9afb('0x2a')](_0x494ef8,_0x9afb('0x2f'));_0x46673d[_0x9afb('0x30')]=_[_0x9afb('0x31')](_0x13a33e[_0x9afb('0x30')]);_0x46673d[_0x9afb('0x32')]=_['intersection'](_0x46673d['model'],_0x46673d[_0x9afb('0x30')]);_0x3e3f57[_0x9afb('0x33')]=_[_0x9afb('0x34')](_0x46673d[_0x9afb('0x2e')],qs[_0x9afb('0x35')](_0x13a33e[_0x9afb('0x30')][_0x9afb('0x35')]));_0x3e3f57['attributes']=_0x3e3f57['attributes'][_0x9afb('0x36')]?_0x3e3f57[_0x9afb('0x33')]:_0x46673d['model'];if(!_0x13a33e[_0x9afb('0x30')]['hasOwnProperty'](_0x9afb('0x37'))){_0x3e3f57[_0x9afb('0x1e')]=qs['limit'](_0x13a33e[_0x9afb('0x30')]['limit']);_0x3e3f57[_0x9afb('0x20')]=qs[_0x9afb('0x20')](_0x13a33e[_0x9afb('0x30')][_0x9afb('0x20')]);}_0x3e3f57[_0x9afb('0x38')]=qs[_0x9afb('0x39')](_0x13a33e[_0x9afb('0x30')][_0x9afb('0x39')]);_0x3e3f57['where']=qs[_0x9afb('0x32')](_['pick'](_0x13a33e[_0x9afb('0x30')],_0x46673d[_0x9afb('0x32')]),_0x494ef8);if(_0x13a33e[_0x9afb('0x30')][_0x9afb('0x3a')]){_0x3e3f57[_0x9afb('0x3b')]=_[_0x9afb('0x3c')](_0x3e3f57[_0x9afb('0x3b')],{'$or':_[_0x9afb('0x2a')](_0x494ef8,function(_0x2433f0){if(_0x2433f0['type']!==_0x9afb('0x3d')){var _0x56f8d9={};_0x56f8d9[_0x2433f0[_0x9afb('0x2f')]]={'$like':'%'+_0x13a33e[_0x9afb('0x30')][_0x9afb('0x3a')]+'%'};return _0x56f8d9;}})});}_0x3e3f57=_['merge']({},_0x3e3f57,_0x13a33e[_0x9afb('0x3e')]);var _0xaf29dc={'where':_0x3e3f57[_0x9afb('0x3b')]};return db[_0x9afb('0x2b')][_0x9afb('0x1f')](_0xaf29dc)[_0x9afb('0x25')](function(_0x1e210a){_0x5aabd5['count']=_0x1e210a;if(_0x13a33e[_0x9afb('0x30')][_0x9afb('0x3f')]){_0x3e3f57[_0x9afb('0x40')]=[{'all':!![]}];}return db[_0x9afb('0x2b')][_0x9afb('0x41')](_0x3e3f57);})[_0x9afb('0x25')](function(_0x90bb7f){_0x5aabd5[_0x9afb('0x42')]=_0x90bb7f;return _0x5aabd5;})['then'](respondWithFilteredResult(_0x119e04,_0x3e3f57))[_0x9afb('0x43')](handleError(_0x119e04,null));};exports['show']=function(_0x47a735,_0x5ccc95){var _0xc72355={'raw':!![],'where':{'id':_0x47a735['params']['id']}},_0x3250c9={};_0x3250c9[_0x9afb('0x2e')]=_[_0x9afb('0x31')](db[_0x9afb('0x2b')][_0x9afb('0x44')]);_0x3250c9[_0x9afb('0x30')]=_[_0x9afb('0x31')](_0x47a735[_0x9afb('0x30')]);_0x3250c9[_0x9afb('0x32')]=_[_0x9afb('0x34')](_0x3250c9['model'],_0x3250c9[_0x9afb('0x30')]);_0xc72355[_0x9afb('0x33')]=_[_0x9afb('0x34')](_0x3250c9[_0x9afb('0x2e')],qs['fields'](_0x47a735[_0x9afb('0x30')][_0x9afb('0x35')]));_0xc72355[_0x9afb('0x33')]=_0xc72355['attributes'][_0x9afb('0x36')]?_0xc72355[_0x9afb('0x33')]:_0x3250c9[_0x9afb('0x2e')];if(_0x47a735[_0x9afb('0x30')][_0x9afb('0x3f')]){_0xc72355[_0x9afb('0x40')]=[{'all':!![]}];}_0xc72355=_[_0x9afb('0x3c')]({},_0xc72355,_0x47a735['options']);return db['ChatQueueReport']['find'](_0xc72355)[_0x9afb('0x25')](handleEntityNotFound(_0x5ccc95,null))[_0x9afb('0x25')](respondWithResult(_0x5ccc95,null))['catch'](handleError(_0x5ccc95,null));};exports[_0x9afb('0x45')]=function(_0xdcfefd,_0x26e88a){return db[_0x9afb('0x2b')][_0x9afb('0x45')](_0xdcfefd[_0x9afb('0x46')],{})[_0x9afb('0x25')](respondWithResult(_0x26e88a,0xc9))[_0x9afb('0x43')](handleError(_0x26e88a,null));};exports[_0x9afb('0x47')]=function(_0x215764,_0x12594c){if(_0x215764['body']['id']){delete _0x215764['body']['id'];}return db[_0x9afb('0x2b')]['find']({'where':{'id':_0x215764[_0x9afb('0x48')]['id']}})[_0x9afb('0x25')](handleEntityNotFound(_0x12594c,null))[_0x9afb('0x25')](saveUpdates(_0x215764[_0x9afb('0x46')],null))[_0x9afb('0x25')](respondWithResult(_0x12594c,null))['catch'](handleError(_0x12594c,null));};exports[_0x9afb('0x26')]=function(_0x5a5b8b,_0x2ebeae){return db[_0x9afb('0x2b')][_0x9afb('0x49')]({'where':{'id':_0x5a5b8b[_0x9afb('0x48')]['id']}})[_0x9afb('0x25')](handleEntityNotFound(_0x2ebeae,null))[_0x9afb('0x25')](removeEntity(_0x2ebeae,null))[_0x9afb('0x43')](handleError(_0x2ebeae,null));};exports['describe']=function(_0x276997,_0x44c5ad){return db[_0x9afb('0x2b')]['describe']()[_0x9afb('0x25')](respondWithResult(_0x44c5ad,null))[_0x9afb('0x43')](handleError(_0x44c5ad,null));};
\ No newline at end of file
+var _0xdcd5=['key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','keys','rawAttributes','length','includeAll','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','ChatQueueReport'];(function(_0x428af2,_0x54e731){var _0x2b102a=function(_0x1998ab){while(--_0x1998ab){_0x428af2['push'](_0x428af2['shift']());}};_0x2b102a(++_0x54e731);}(_0xdcd5,0x110));var _0x5dcd=function(_0x4e6ae6,_0x49dba6){_0x4e6ae6=_0x4e6ae6-0x0;var _0x23c108=_0xdcd5[_0x4e6ae6];return _0x23c108;};'use strict';var emlformat=require(_0x5dcd('0x0'));var rimraf=require(_0x5dcd('0x1'));var zipdir=require(_0x5dcd('0x2'));var jsonpatch=require(_0x5dcd('0x3'));var rp=require(_0x5dcd('0x4'));var moment=require(_0x5dcd('0x5'));var BPromise=require(_0x5dcd('0x6'));var Mustache=require('mustache');var util=require(_0x5dcd('0x7'));var path=require(_0x5dcd('0x8'));var sox=require(_0x5dcd('0x9'));var csv=require(_0x5dcd('0xa'));var ejs=require(_0x5dcd('0xb'));var fs=require('fs');var fs_extra=require(_0x5dcd('0xc'));var _=require(_0x5dcd('0xd'));var squel=require(_0x5dcd('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x5dcd('0xf'));var toCsv=require(_0x5dcd('0xa'));var querystring=require(_0x5dcd('0x10'));var Papa=require('papaparse');var Redis=require(_0x5dcd('0x11'));var authService=require(_0x5dcd('0x12'));var qs=require(_0x5dcd('0x13'));var as=require(_0x5dcd('0x14'));var hardwareService=require(_0x5dcd('0x15'));var logger=require(_0x5dcd('0x16'))(_0x5dcd('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x5dcd('0x18'));var db=require(_0x5dcd('0x19'))['db'];function respondWithStatusCode(_0x4e213f,_0x250f9a){_0x250f9a=_0x250f9a||0xcc;return function(_0x7cf873){if(_0x7cf873){return _0x4e213f[_0x5dcd('0x1a')](_0x250f9a);}return _0x4e213f[_0x5dcd('0x1b')](_0x250f9a)[_0x5dcd('0x1c')]();};}function respondWithResult(_0x2ff0cb,_0x2b66bf){_0x2b66bf=_0x2b66bf||0xc8;return function(_0x40062e){if(_0x40062e){return _0x2ff0cb['status'](_0x2b66bf)[_0x5dcd('0x1d')](_0x40062e);}};}function respondWithFilteredResult(_0x2b61bf,_0x538be9){return function(_0x43b71f){if(_0x43b71f){var _0x537aed=typeof _0x538be9[_0x5dcd('0x1e')]===_0x5dcd('0x1f')&&typeof _0x538be9[_0x5dcd('0x20')]==='undefined';var _0x1a4643=_0x43b71f[_0x5dcd('0x21')];var _0xc7d7d7=_0x537aed?0x0:_0x538be9['offset'];var _0x3e23fa=_0x537aed?_0x43b71f[_0x5dcd('0x21')]:_0x538be9[_0x5dcd('0x1e')]+_0x538be9['limit'];var _0x1e423c;if(_0x3e23fa>=_0x1a4643){_0x3e23fa=_0x1a4643;_0x1e423c=0xc8;}else{_0x1e423c=0xce;}_0x2b61bf[_0x5dcd('0x1b')](_0x1e423c);return _0x2b61bf[_0x5dcd('0x22')](_0x5dcd('0x23'),_0xc7d7d7+'-'+_0x3e23fa+'/'+_0x1a4643)['json'](_0x43b71f);}return null;};}function patchUpdates(_0x11d296){return function(_0x4c392a){try{jsonpatch['apply'](_0x4c392a,_0x11d296,!![]);}catch(_0x557e94){return BPromise[_0x5dcd('0x24')](_0x557e94);}return _0x4c392a[_0x5dcd('0x25')]();};}function saveUpdates(_0x23a21d,_0x8a43fc){return function(_0x305466){if(_0x305466){return _0x305466[_0x5dcd('0x26')](_0x23a21d)[_0x5dcd('0x27')](function(_0x46102a){return _0x46102a;});}return null;};}function removeEntity(_0x40e847,_0x270390){return function(_0x5d3fa0){if(_0x5d3fa0){return _0x5d3fa0[_0x5dcd('0x28')]()[_0x5dcd('0x27')](function(){_0x40e847[_0x5dcd('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x30fe1f,_0x4b07c7){return function(_0xc0cadb){if(!_0xc0cadb){_0x30fe1f[_0x5dcd('0x1a')](0x194);}return _0xc0cadb;};}function handleError(_0x3b2b2b,_0x5337a3){_0x5337a3=_0x5337a3||0x1f4;return function(_0xf30ac6){logger[_0x5dcd('0x29')](_0xf30ac6[_0x5dcd('0x2a')]);if(_0xf30ac6[_0x5dcd('0x2b')]){delete _0xf30ac6[_0x5dcd('0x2b')];}_0x3b2b2b['status'](_0x5337a3)[_0x5dcd('0x2c')](_0xf30ac6);};}exports[_0x5dcd('0x2d')]=function(_0x440e47,_0x28e53f){var _0x1a87a5={},_0x1ba4cf={},_0x24f91f={'count':0x0,'rows':[]};var _0x16c744=_[_0x5dcd('0x2e')](db[_0x5dcd('0x2f')]['rawAttributes'],function(_0x3bed3f){return{'name':_0x3bed3f['fieldName'],'type':_0x3bed3f['type'][_0x5dcd('0x30')]};});_0x1ba4cf[_0x5dcd('0x31')]=_['map'](_0x16c744,_0x5dcd('0x2b'));_0x1ba4cf[_0x5dcd('0x32')]=_['keys'](_0x440e47[_0x5dcd('0x32')]);_0x1ba4cf[_0x5dcd('0x33')]=_[_0x5dcd('0x34')](_0x1ba4cf[_0x5dcd('0x31')],_0x1ba4cf['query']);_0x1a87a5['attributes']=_[_0x5dcd('0x34')](_0x1ba4cf[_0x5dcd('0x31')],qs['fields'](_0x440e47['query'][_0x5dcd('0x35')]));_0x1a87a5['attributes']=_0x1a87a5[_0x5dcd('0x36')]['length']?_0x1a87a5['attributes']:_0x1ba4cf[_0x5dcd('0x31')];if(!_0x440e47[_0x5dcd('0x32')][_0x5dcd('0x37')](_0x5dcd('0x38'))){_0x1a87a5[_0x5dcd('0x20')]=qs[_0x5dcd('0x20')](_0x440e47[_0x5dcd('0x32')][_0x5dcd('0x20')]);_0x1a87a5[_0x5dcd('0x1e')]=qs[_0x5dcd('0x1e')](_0x440e47[_0x5dcd('0x32')][_0x5dcd('0x1e')]);}_0x1a87a5[_0x5dcd('0x39')]=qs[_0x5dcd('0x3a')](_0x440e47[_0x5dcd('0x32')][_0x5dcd('0x3a')]);_0x1a87a5[_0x5dcd('0x3b')]=qs[_0x5dcd('0x33')](_[_0x5dcd('0x3c')](_0x440e47['query'],_0x1ba4cf[_0x5dcd('0x33')]),_0x16c744);if(_0x440e47[_0x5dcd('0x32')]['filter']){_0x1a87a5[_0x5dcd('0x3b')]=_[_0x5dcd('0x3d')](_0x1a87a5[_0x5dcd('0x3b')],{'$or':_[_0x5dcd('0x2e')](_0x16c744,function(_0xab1e78){if(_0xab1e78[_0x5dcd('0x3e')]!==_0x5dcd('0x3f')){var _0x53df30={};_0x53df30[_0xab1e78[_0x5dcd('0x2b')]]={'$like':'%'+_0x440e47[_0x5dcd('0x32')][_0x5dcd('0x40')]+'%'};return _0x53df30;}})});}_0x1a87a5=_[_0x5dcd('0x3d')]({},_0x1a87a5,_0x440e47[_0x5dcd('0x41')]);var _0xc745a3={'where':_0x1a87a5['where']};return db['ChatQueueReport']['count'](_0xc745a3)[_0x5dcd('0x27')](function(_0x4888ae){_0x24f91f['count']=_0x4888ae;if(_0x440e47['query']['includeAll']){_0x1a87a5[_0x5dcd('0x42')]=[{'all':!![]}];}return db[_0x5dcd('0x2f')][_0x5dcd('0x43')](_0x1a87a5);})['then'](function(_0x14fdcc){_0x24f91f[_0x5dcd('0x44')]=_0x14fdcc;return _0x24f91f;})[_0x5dcd('0x27')](respondWithFilteredResult(_0x28e53f,_0x1a87a5))[_0x5dcd('0x45')](handleError(_0x28e53f,null));};exports[_0x5dcd('0x46')]=function(_0x39c46a,_0x28a5d3){var _0x419cf3={'raw':!![],'where':{'id':_0x39c46a[_0x5dcd('0x47')]['id']}},_0x3f3907={};_0x3f3907[_0x5dcd('0x31')]=_[_0x5dcd('0x48')](db[_0x5dcd('0x2f')][_0x5dcd('0x49')]);_0x3f3907['query']=_['keys'](_0x39c46a[_0x5dcd('0x32')]);_0x3f3907[_0x5dcd('0x33')]=_[_0x5dcd('0x34')](_0x3f3907[_0x5dcd('0x31')],_0x3f3907[_0x5dcd('0x32')]);_0x419cf3[_0x5dcd('0x36')]=_[_0x5dcd('0x34')](_0x3f3907['model'],qs[_0x5dcd('0x35')](_0x39c46a[_0x5dcd('0x32')][_0x5dcd('0x35')]));_0x419cf3[_0x5dcd('0x36')]=_0x419cf3[_0x5dcd('0x36')][_0x5dcd('0x4a')]?_0x419cf3[_0x5dcd('0x36')]:_0x3f3907[_0x5dcd('0x31')];if(_0x39c46a[_0x5dcd('0x32')][_0x5dcd('0x4b')]){_0x419cf3[_0x5dcd('0x42')]=[{'all':!![]}];}_0x419cf3=_[_0x5dcd('0x3d')]({},_0x419cf3,_0x39c46a[_0x5dcd('0x41')]);return db[_0x5dcd('0x2f')]['find'](_0x419cf3)[_0x5dcd('0x27')](handleEntityNotFound(_0x28a5d3,null))[_0x5dcd('0x27')](respondWithResult(_0x28a5d3,null))['catch'](handleError(_0x28a5d3,null));};exports[_0x5dcd('0x4c')]=function(_0x3caeab,_0x4bacf9){return db['ChatQueueReport'][_0x5dcd('0x4c')](_0x3caeab[_0x5dcd('0x4d')],{})[_0x5dcd('0x27')](respondWithResult(_0x4bacf9,0xc9))[_0x5dcd('0x45')](handleError(_0x4bacf9,null));};exports[_0x5dcd('0x26')]=function(_0x6105d3,_0x24caac){if(_0x6105d3['body']['id']){delete _0x6105d3[_0x5dcd('0x4d')]['id'];}return db[_0x5dcd('0x2f')][_0x5dcd('0x4e')]({'where':{'id':_0x6105d3[_0x5dcd('0x47')]['id']}})[_0x5dcd('0x27')](handleEntityNotFound(_0x24caac,null))[_0x5dcd('0x27')](saveUpdates(_0x6105d3[_0x5dcd('0x4d')],null))['then'](respondWithResult(_0x24caac,null))[_0x5dcd('0x45')](handleError(_0x24caac,null));};exports[_0x5dcd('0x28')]=function(_0x8e9b1,_0x32a25b){return db['ChatQueueReport'][_0x5dcd('0x4e')]({'where':{'id':_0x8e9b1[_0x5dcd('0x47')]['id']}})[_0x5dcd('0x27')](handleEntityNotFound(_0x32a25b,null))[_0x5dcd('0x27')](removeEntity(_0x32a25b,null))['catch'](handleError(_0x32a25b,null));};exports[_0x5dcd('0x4f')]=function(_0x6c668b,_0x4561f7){return db[_0x5dcd('0x2f')][_0x5dcd('0x4f')]()[_0x5dcd('0x27')](respondWithResult(_0x4561f7,null))[_0x5dcd('0x45')](handleError(_0x4561f7,null));};
\ No newline at end of file
index 59ff3ad..ff55931 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['define','ChatQueueReport','report_chat_queue','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','exports'];(function(_0xd9256,_0x268241){var _0x5b7266=function(_0x10d5f9){while(--_0x10d5f9){_0xd9256['push'](_0xd9256['shift']());}};_0x5b7266(++_0x268241);}(_0xbaf0,0x12a));var _0x0baf=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xbaf0[_0x6131cd];return _0x47e916;};'use strict';var _=require('lodash');var util=require(_0x0baf('0x0'));var logger=require(_0x0baf('0x1'))(_0x0baf('0x2'));var moment=require(_0x0baf('0x3'));var BPromise=require(_0x0baf('0x4'));var rp=require(_0x0baf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var attributes=require(_0x0baf('0x8'));module[_0x0baf('0x9')]=function(_0xe4c3c4,_0x335e24){return _0xe4c3c4[_0x0baf('0xa')](_0x0baf('0xb'),attributes,{'tableName':_0x0baf('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0baf('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb7e7=['../../config/logger','moment','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','define','ChatQueueReport','uniqueid','lodash'];(function(_0x3683f3,_0x41149e){var _0x368d1d=function(_0x187610){while(--_0x187610){_0x3683f3['push'](_0x3683f3['shift']());}};_0x368d1d(++_0x41149e);}(_0xb7e7,0x121));var _0x7b7e=function(_0x424a9a,_0x2dd9af){_0x424a9a=_0x424a9a-0x0;var _0xa7831c=_0xb7e7[_0x424a9a];return _0xa7831c;};'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'));module['exports']=function(_0x53ed64,_0x333fa4){return _0x53ed64[_0x7b7e('0x7')](_0x7b7e('0x8'),attributes,{'tableName':'report_chat_queue','paranoid':![],'indexes':[{'name':_0x7b7e('0x9'),'fields':[_0x7b7e('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 04b438f..3a17a07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf483=['options','raw','debug','catch','update','where','limit','UpdateChatQueueReport','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateChatQueueReport','ChatQueueReport','create','body'];(function(_0x1bb0e5,_0x505956){var _0x440be1=function(_0xa70cf3){while(--_0xa70cf3){_0x1bb0e5['push'](_0x1bb0e5['shift']());}};_0x440be1(++_0x505956);}(_0xf483,0xb2));var _0x3f48=function(_0x5c814d,_0x4d81c7){_0x5c814d=_0x5c814d-0x0;var _0x89b71=_0xf483[_0x5c814d];return _0x89b71;};'use strict';var _=require(_0x3f48('0x0'));var util=require(_0x3f48('0x1'));var moment=require('moment');var BPromise=require(_0x3f48('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3f48('0x3'));var db=require(_0x3f48('0x4'))['db'];var utils=require(_0x3f48('0x5'));var logger=require(_0x3f48('0x6'))(_0x3f48('0x7'));var config=require(_0x3f48('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x3f48('0x9')][_0x3f48('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4860d7,_0xf26ac,_0x3ea33b){return new BPromise(function(_0x4a2ee4,_0x83383c){return client[_0x3f48('0xb')](_0x4860d7,_0x3ea33b)[_0x3f48('0xc')](function(_0x163c0e){logger[_0x3f48('0xd')](_0x3f48('0xe'),_0xf26ac,_0x3f48('0xf'));logger['debug'](_0x3f48('0x10'),_0xf26ac,_0x3f48('0xf'),JSON[_0x3f48('0x11')](_0x163c0e));if(_0x163c0e[_0x3f48('0x12')]){if(_0x163c0e[_0x3f48('0x12')][_0x3f48('0x13')]===0x1f4){logger[_0x3f48('0x12')](_0x3f48('0xe'),_0xf26ac,_0x163c0e[_0x3f48('0x12')]['message']);return _0x83383c(_0x163c0e[_0x3f48('0x12')]['message']);}logger[_0x3f48('0x12')](_0x3f48('0xe'),_0xf26ac,_0x163c0e['error'][_0x3f48('0x14')]);return _0x4a2ee4(_0x163c0e['error'][_0x3f48('0x14')]);}else{logger['info']('ChatQueueReport,\x20%s,\x20%s',_0xf26ac,_0x3f48('0xf'));_0x4a2ee4(_0x163c0e[_0x3f48('0x15')][_0x3f48('0x14')]);}})['catch'](function(_0x590a89){logger[_0x3f48('0x12')]('ChatQueueReport,\x20%s,\x20%s',_0xf26ac,_0x590a89);_0x83383c(_0x590a89);});});}exports[_0x3f48('0x16')]=function(_0x3a1c54){var _0x25c9cd=this;return new Promise(function(_0x4d26f8,_0x495fd4){return db[_0x3f48('0x17')][_0x3f48('0x18')](_0x3a1c54[_0x3f48('0x19')],{'raw':_0x3a1c54[_0x3f48('0x1a')]?_0x3a1c54[_0x3f48('0x1a')][_0x3f48('0x1b')]===undefined?!![]:![]:!![]})[_0x3f48('0xc')](function(_0x28a2c2){logger['info'](_0x3f48('0x16'),_0x3a1c54);logger[_0x3f48('0x1c')](_0x3f48('0x16'),_0x3a1c54,JSON['stringify'](_0x28a2c2));_0x4d26f8(_0x28a2c2);})[_0x3f48('0x1d')](function(_0x4e94c0){logger[_0x3f48('0x12')](_0x3f48('0x16'),_0x4e94c0['message'],_0x3a1c54);_0x495fd4(_0x25c9cd[_0x3f48('0x12')](0x1f4,_0x4e94c0[_0x3f48('0x14')]));});});};exports['UpdateChatQueueReport']=function(_0x3fa7f3){var _0xe2b069=this;return new Promise(function(_0x3fa11b,_0x2c7bbb){return db[_0x3f48('0x17')][_0x3f48('0x1e')](_0x3fa7f3[_0x3f48('0x19')],{'raw':_0x3fa7f3[_0x3f48('0x1a')]?_0x3fa7f3[_0x3f48('0x1a')][_0x3f48('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3fa7f3[_0x3f48('0x1a')]?_0x3fa7f3[_0x3f48('0x1a')][_0x3f48('0x1f')]||null:null,'attributes':_0x3fa7f3[_0x3f48('0x1a')]?_0x3fa7f3[_0x3f48('0x1a')]['attributes']||null:null,'limit':_0x3fa7f3['options']?_0x3fa7f3['options'][_0x3f48('0x20')]||null:null})[_0x3f48('0xc')](function(_0x43513f){logger[_0x3f48('0xd')](_0x3f48('0x21'),_0x3fa7f3);logger[_0x3f48('0x1c')](_0x3f48('0x21'),_0x3fa7f3,JSON[_0x3f48('0x11')](_0x43513f));_0x3fa11b(_0x43513f);})['catch'](function(_0x32e849){logger['error'](_0x3f48('0x21'),_0x32e849['message'],_0x3fa7f3);_0x2c7bbb(_0xe2b069['error'](0x1f4,_0x32e849['message']));});});};
\ No newline at end of file
+var _0xfa6d=['lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatQueueReport,\x20%s,\x20%s','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','CreateChatQueueReport','create','body','options','raw','UpdateChatQueueReport','where','attributes','limit'];(function(_0x285824,_0x3da647){var _0x311d7e=function(_0x2f3de0){while(--_0x2f3de0){_0x285824['push'](_0x285824['shift']());}};_0x311d7e(++_0x3da647);}(_0xfa6d,0x14a));var _0xdfa6=function(_0x1e3620,_0x2a4212){_0x1e3620=_0x1e3620-0x0;var _0x522e6b=_0xfa6d[_0x1e3620];return _0x522e6b;};'use strict';var _=require(_0xdfa6('0x0'));var util=require(_0xdfa6('0x1'));var moment=require(_0xdfa6('0x2'));var BPromise=require('bluebird');var rs=require(_0xdfa6('0x3'));var fs=require('fs');var Redis=require(_0xdfa6('0x4'));var db=require(_0xdfa6('0x5'))['db'];var utils=require(_0xdfa6('0x6'));var logger=require('../../config/logger')(_0xdfa6('0x7'));var config=require(_0xdfa6('0x8'));var jayson=require(_0xdfa6('0x9'));var client=jayson[_0xdfa6('0xa')][_0xdfa6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x42850f,_0x465b79,_0x154fc8){return new BPromise(function(_0x489408,_0x38d71f){return client[_0xdfa6('0xc')](_0x42850f,_0x154fc8)[_0xdfa6('0xd')](function(_0x117724){logger[_0xdfa6('0xe')](_0xdfa6('0xf'),_0x465b79,'request\x20sent');logger[_0xdfa6('0x10')](_0xdfa6('0x11'),_0x465b79,_0xdfa6('0x12'),JSON[_0xdfa6('0x13')](_0x117724));if(_0x117724[_0xdfa6('0x14')]){if(_0x117724[_0xdfa6('0x14')][_0xdfa6('0x15')]===0x1f4){logger[_0xdfa6('0x14')](_0xdfa6('0xf'),_0x465b79,_0x117724[_0xdfa6('0x14')][_0xdfa6('0x16')]);return _0x38d71f(_0x117724[_0xdfa6('0x14')][_0xdfa6('0x16')]);}logger[_0xdfa6('0x14')]('ChatQueueReport,\x20%s,\x20%s',_0x465b79,_0x117724[_0xdfa6('0x14')][_0xdfa6('0x16')]);return _0x489408(_0x117724[_0xdfa6('0x14')][_0xdfa6('0x16')]);}else{logger['info'](_0xdfa6('0xf'),_0x465b79,'request\x20sent');_0x489408(_0x117724['result'][_0xdfa6('0x16')]);}})[_0xdfa6('0x17')](function(_0x2e7989){logger[_0xdfa6('0x14')](_0xdfa6('0xf'),_0x465b79,_0x2e7989);_0x38d71f(_0x2e7989);});});}exports[_0xdfa6('0x18')]=function(_0x9dc747){var _0x23adbc=this;return new Promise(function(_0x5f1cb7,_0x4ed067){return db['ChatQueueReport'][_0xdfa6('0x19')](_0x9dc747[_0xdfa6('0x1a')],{'raw':_0x9dc747[_0xdfa6('0x1b')]?_0x9dc747['options'][_0xdfa6('0x1c')]===undefined?!![]:![]:!![]})[_0xdfa6('0xd')](function(_0x45d7ba){logger[_0xdfa6('0xe')](_0xdfa6('0x18'),_0x9dc747);logger[_0xdfa6('0x10')](_0xdfa6('0x18'),_0x9dc747,JSON[_0xdfa6('0x13')](_0x45d7ba));_0x5f1cb7(_0x45d7ba);})[_0xdfa6('0x17')](function(_0x2ab972){logger[_0xdfa6('0x14')](_0xdfa6('0x18'),_0x2ab972[_0xdfa6('0x16')],_0x9dc747);_0x4ed067(_0x23adbc['error'](0x1f4,_0x2ab972['message']));});});};exports[_0xdfa6('0x1d')]=function(_0x3e78c6){var _0x1b7380=this;return new Promise(function(_0x147b3e,_0x15ef48){return db['ChatQueueReport']['update'](_0x3e78c6[_0xdfa6('0x1a')],{'raw':_0x3e78c6[_0xdfa6('0x1b')]?_0x3e78c6['options'][_0xdfa6('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3e78c6[_0xdfa6('0x1b')]?_0x3e78c6['options'][_0xdfa6('0x1e')]||null:null,'attributes':_0x3e78c6[_0xdfa6('0x1b')]?_0x3e78c6[_0xdfa6('0x1b')][_0xdfa6('0x1f')]||null:null,'limit':_0x3e78c6[_0xdfa6('0x1b')]?_0x3e78c6[_0xdfa6('0x1b')][_0xdfa6('0x20')]||null:null})[_0xdfa6('0xd')](function(_0x396742){logger[_0xdfa6('0xe')](_0xdfa6('0x1d'),_0x3e78c6);logger[_0xdfa6('0x10')]('UpdateChatQueueReport',_0x3e78c6,JSON[_0xdfa6('0x13')](_0x396742));_0x147b3e(_0x396742);})[_0xdfa6('0x17')](function(_0x2a1e52){logger[_0xdfa6('0x14')](_0xdfa6('0x1d'),_0x2a1e52[_0xdfa6('0x16')],_0x3e78c6);_0x15ef48(_0x1b7380[_0xdfa6('0x14')](0x1f4,_0x2a1e52['message']));});});};
\ No newline at end of file
index 196d43d..ae9fa1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15f5=['express','Router','fs-extra','../../config/environment','./chatQueueReport.controller','isAuthenticated','index','/describe','describe','get','/:id','create','put','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x1de133,_0xa17ce9){var _0x43658b=function(_0x454818){while(--_0x454818){_0x1de133['push'](_0x1de133['shift']());}};_0x43658b(++_0xa17ce9);}(_0x15f5,0x1dc));var _0x515f=function(_0x532309,_0x654469){_0x532309=_0x532309-0x0;var _0x4fb27e=_0x15f5[_0x532309];return _0x4fb27e;};'use strict';var multer=require(_0x515f('0x0'));var util=require(_0x515f('0x1'));var path=require(_0x515f('0x2'));var timeout=require(_0x515f('0x3'));var express=require(_0x515f('0x4'));var router=express[_0x515f('0x5')]();var fs_extra=require(_0x515f('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x515f('0x7'));var controller=require(_0x515f('0x8'));router['get']('/',auth[_0x515f('0x9')](),controller[_0x515f('0xa')]);router['get'](_0x515f('0xb'),auth[_0x515f('0x9')](),controller[_0x515f('0xc')]);router[_0x515f('0xd')](_0x515f('0xe'),auth[_0x515f('0x9')](),controller['show']);router['post']('/',auth[_0x515f('0x9')](),controller[_0x515f('0xf')]);router[_0x515f('0x10')](_0x515f('0xe'),auth[_0x515f('0x9')](),controller['update']);router[_0x515f('0x11')](_0x515f('0xe'),auth['isAuthenticated'](),controller[_0x515f('0x12')]);module[_0x515f('0x13')]=router;
\ No newline at end of file
+var _0xcbad=['fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/describe','/:id','post','put','update','exports','multer','util','connect-timeout','express','Router'];(function(_0x1aa19a,_0x2b05f5){var _0xc46aac=function(_0x19696b){while(--_0x19696b){_0x1aa19a['push'](_0x1aa19a['shift']());}};_0xc46aac(++_0x2b05f5);}(_0xcbad,0xeb));var _0xdcba=function(_0x2611b0,_0x4b8fa8){_0x2611b0=_0x2611b0-0x0;var _0x15383d=_0xcbad[_0x2611b0];return _0x15383d;};'use strict';var multer=require(_0xdcba('0x0'));var util=require(_0xdcba('0x1'));var path=require('path');var timeout=require(_0xdcba('0x2'));var express=require(_0xdcba('0x3'));var router=express[_0xdcba('0x4')]();var fs_extra=require(_0xdcba('0x5'));var auth=require(_0xdcba('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xdcba('0x7'));var controller=require('./chatQueueReport.controller');router[_0xdcba('0x8')]('/',auth[_0xdcba('0x9')](),controller['index']);router[_0xdcba('0x8')](_0xdcba('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0xdcba('0x8')](_0xdcba('0xb'),auth[_0xdcba('0x9')](),controller['show']);router[_0xdcba('0xc')]('/',auth[_0xdcba('0x9')](),controller['create']);router[_0xdcba('0xd')](_0xdcba('0xb'),auth[_0xdcba('0x9')](),controller[_0xdcba('0xe')]);router['delete'](_0xdcba('0xb'),auth[_0xdcba('0x9')](),controller['destroy']);module[_0xdcba('0xf')]=router;
\ No newline at end of file
index e03014d..adf03cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b84=['moment','sequelize','ENUM','queue','DATE'];(function(_0x351054,_0x1abc8f){var _0x546c8c=function(_0x1d0115){while(--_0x1d0115){_0x351054['push'](_0x351054['shift']());}};_0x546c8c(++_0x1abc8f);}(_0x4b84,0x1cc));var _0x44b8=function(_0x52096b,_0x20bab4){_0x52096b=_0x52096b-0x0;var _0x2b1cc7=_0x4b84[_0x52096b];return _0x2b1cc7;};'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 _0xa9e0=['account','queue','DATE','NOW','moment','sequelize','exports'];(function(_0x467d3b,_0x4225ba){var _0x1a35ec=function(_0x46673c){while(--_0x46673c){_0x467d3b['push'](_0x467d3b['shift']());}};_0x1a35ec(++_0x4225ba);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0xa9e0[_0x34bf97];return _0x292719;};'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 6fde00e..7a8d646 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cd2=['mustache','util','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','ChatTransferReport','findAll','rows','show','params','fields','catch','create','body','find','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird'];(function(_0x50560a,_0x4c5a85){var _0x3831b8=function(_0x454a5a){while(--_0x454a5a){_0x50560a['push'](_0x50560a['shift']());}};_0x3831b8(++_0x4c5a85);}(_0x8cd2,0x12a));var _0x28cd=function(_0x57d671,_0x1a101c){_0x57d671=_0x57d671-0x0;var _0x450dfe=_0x8cd2[_0x57d671];return _0x450dfe;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x28cd('0x0'));var zipdir=require(_0x28cd('0x1'));var jsonpatch=require(_0x28cd('0x2'));var rp=require(_0x28cd('0x3'));var moment=require(_0x28cd('0x4'));var BPromise=require(_0x28cd('0x5'));var Mustache=require(_0x28cd('0x6'));var util=require(_0x28cd('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(_0x28cd('0x8'));var _=require(_0x28cd('0x9'));var squel=require(_0x28cd('0xa'));var crypto=require(_0x28cd('0xb'));var jsforce=require(_0x28cd('0xc'));var deskjs=require(_0x28cd('0xd'));var toCsv=require(_0x28cd('0xe'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x28cd('0xf'));var qs=require(_0x28cd('0x10'));var as=require(_0x28cd('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x28cd('0x12'))(_0x28cd('0x13'));var utils=require(_0x28cd('0x14'));var config=require(_0x28cd('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x28cd('0x16'))['db'];function respondWithStatusCode(_0x29ed17,_0x48483f){_0x48483f=_0x48483f||0xcc;return function(_0x50c7de){if(_0x50c7de){return _0x29ed17[_0x28cd('0x17')](_0x48483f);}return _0x29ed17[_0x28cd('0x18')](_0x48483f)['end']();};}function respondWithResult(_0x2533c6,_0xc28add){_0xc28add=_0xc28add||0xc8;return function(_0x2d2a40){if(_0x2d2a40){return _0x2533c6['status'](_0xc28add)[_0x28cd('0x19')](_0x2d2a40);}};}function respondWithFilteredResult(_0x576188,_0x2d5501){return function(_0x29c2c9){if(_0x29c2c9){var _0x6bf1d8=typeof _0x2d5501['offset']===_0x28cd('0x1a')&&typeof _0x2d5501[_0x28cd('0x1b')]===_0x28cd('0x1a');var _0x551cb1=_0x29c2c9[_0x28cd('0x1c')];var _0x141341=_0x6bf1d8?0x0:_0x2d5501[_0x28cd('0x1d')];var _0x514f4d=_0x6bf1d8?_0x29c2c9['count']:_0x2d5501[_0x28cd('0x1d')]+_0x2d5501[_0x28cd('0x1b')];var _0x27b40b;if(_0x514f4d>=_0x551cb1){_0x514f4d=_0x551cb1;_0x27b40b=0xc8;}else{_0x27b40b=0xce;}_0x576188[_0x28cd('0x18')](_0x27b40b);return _0x576188[_0x28cd('0x1e')](_0x28cd('0x1f'),_0x141341+'-'+_0x514f4d+'/'+_0x551cb1)[_0x28cd('0x19')](_0x29c2c9);}return null;};}function patchUpdates(_0x1fcb9c){return function(_0x3d8ea0){try{jsonpatch['apply'](_0x3d8ea0,_0x1fcb9c,!![]);}catch(_0x2e6022){return BPromise[_0x28cd('0x20')](_0x2e6022);}return _0x3d8ea0[_0x28cd('0x21')]();};}function saveUpdates(_0xfeb19f,_0x4d2356){return function(_0x2cb826){if(_0x2cb826){return _0x2cb826[_0x28cd('0x22')](_0xfeb19f)[_0x28cd('0x23')](function(_0x3e3945){return _0x3e3945;});}return null;};}function removeEntity(_0x2ea20a,_0x42e0a7){return function(_0x189c04){if(_0x189c04){return _0x189c04[_0x28cd('0x24')]()['then'](function(){_0x2ea20a[_0x28cd('0x18')](0xcc)[_0x28cd('0x25')]();});}};}function handleEntityNotFound(_0x3f3f90,_0x4aba96){return function(_0x3f1f16){if(!_0x3f1f16){_0x3f3f90[_0x28cd('0x17')](0x194);}return _0x3f1f16;};}function handleError(_0x56a933,_0xe550c8){_0xe550c8=_0xe550c8||0x1f4;return function(_0x11e448){logger[_0x28cd('0x26')](_0x11e448[_0x28cd('0x27')]);if(_0x11e448[_0x28cd('0x28')]){delete _0x11e448[_0x28cd('0x28')];}_0x56a933[_0x28cd('0x18')](_0xe550c8)[_0x28cd('0x29')](_0x11e448);};}exports[_0x28cd('0x2a')]=function(_0x36fff9,_0x52b6e7){var _0x144616={},_0x4f51c2={},_0x157b38={'count':0x0,'rows':[]};var _0x33a2cc=_[_0x28cd('0x2b')](db['ChatTransferReport'][_0x28cd('0x2c')],function(_0x4b87dd){return{'name':_0x4b87dd[_0x28cd('0x2d')],'type':_0x4b87dd[_0x28cd('0x2e')]['key']};});_0x4f51c2['model']=_[_0x28cd('0x2b')](_0x33a2cc,_0x28cd('0x28'));_0x4f51c2[_0x28cd('0x2f')]=_[_0x28cd('0x30')](_0x36fff9[_0x28cd('0x2f')]);_0x4f51c2[_0x28cd('0x31')]=_[_0x28cd('0x32')](_0x4f51c2[_0x28cd('0x33')],_0x4f51c2[_0x28cd('0x2f')]);_0x144616['attributes']=_[_0x28cd('0x32')](_0x4f51c2[_0x28cd('0x33')],qs['fields'](_0x36fff9[_0x28cd('0x2f')]['fields']));_0x144616['attributes']=_0x144616[_0x28cd('0x34')][_0x28cd('0x35')]?_0x144616[_0x28cd('0x34')]:_0x4f51c2[_0x28cd('0x33')];if(!_0x36fff9[_0x28cd('0x2f')][_0x28cd('0x36')](_0x28cd('0x37'))){_0x144616[_0x28cd('0x1b')]=qs[_0x28cd('0x1b')](_0x36fff9[_0x28cd('0x2f')][_0x28cd('0x1b')]);_0x144616[_0x28cd('0x1d')]=qs['offset'](_0x36fff9[_0x28cd('0x2f')][_0x28cd('0x1d')]);}_0x144616[_0x28cd('0x38')]=qs[_0x28cd('0x39')](_0x36fff9['query']['sort']);_0x144616[_0x28cd('0x3a')]=qs[_0x28cd('0x31')](_[_0x28cd('0x3b')](_0x36fff9[_0x28cd('0x2f')],_0x4f51c2[_0x28cd('0x31')]),_0x33a2cc);if(_0x36fff9[_0x28cd('0x2f')][_0x28cd('0x3c')]){_0x144616['where']=_[_0x28cd('0x3d')](_0x144616[_0x28cd('0x3a')],{'$or':_[_0x28cd('0x2b')](_0x33a2cc,function(_0x1d9d64){if(_0x1d9d64[_0x28cd('0x2e')]!==_0x28cd('0x3e')){var _0x93ab1f={};_0x93ab1f[_0x1d9d64[_0x28cd('0x28')]]={'$like':'%'+_0x36fff9[_0x28cd('0x2f')][_0x28cd('0x3c')]+'%'};return _0x93ab1f;}})});}_0x144616=_[_0x28cd('0x3d')]({},_0x144616,_0x36fff9[_0x28cd('0x3f')]);var _0x518f75={'where':_0x144616[_0x28cd('0x3a')]};return db['ChatTransferReport'][_0x28cd('0x1c')](_0x518f75)[_0x28cd('0x23')](function(_0x577f4e){_0x157b38[_0x28cd('0x1c')]=_0x577f4e;if(_0x36fff9[_0x28cd('0x2f')][_0x28cd('0x40')]){_0x144616['include']=[{'all':!![]}];}return db[_0x28cd('0x41')][_0x28cd('0x42')](_0x144616);})[_0x28cd('0x23')](function(_0x4327ec){_0x157b38[_0x28cd('0x43')]=_0x4327ec;return _0x157b38;})[_0x28cd('0x23')](respondWithFilteredResult(_0x52b6e7,_0x144616))['catch'](handleError(_0x52b6e7,null));};exports[_0x28cd('0x44')]=function(_0x57bcc7,_0x3baf85){var _0x46aac9={'raw':!![],'where':{'id':_0x57bcc7[_0x28cd('0x45')]['id']}},_0x4afbce={};_0x4afbce[_0x28cd('0x33')]=_[_0x28cd('0x30')](db[_0x28cd('0x41')]['rawAttributes']);_0x4afbce[_0x28cd('0x2f')]=_[_0x28cd('0x30')](_0x57bcc7[_0x28cd('0x2f')]);_0x4afbce[_0x28cd('0x31')]=_[_0x28cd('0x32')](_0x4afbce['model'],_0x4afbce[_0x28cd('0x2f')]);_0x46aac9['attributes']=_[_0x28cd('0x32')](_0x4afbce[_0x28cd('0x33')],qs[_0x28cd('0x46')](_0x57bcc7[_0x28cd('0x2f')][_0x28cd('0x46')]));_0x46aac9[_0x28cd('0x34')]=_0x46aac9[_0x28cd('0x34')][_0x28cd('0x35')]?_0x46aac9[_0x28cd('0x34')]:_0x4afbce['model'];if(_0x57bcc7['query'][_0x28cd('0x40')]){_0x46aac9['include']=[{'all':!![]}];}_0x46aac9=_[_0x28cd('0x3d')]({},_0x46aac9,_0x57bcc7['options']);return db[_0x28cd('0x41')]['find'](_0x46aac9)[_0x28cd('0x23')](handleEntityNotFound(_0x3baf85,null))[_0x28cd('0x23')](respondWithResult(_0x3baf85,null))[_0x28cd('0x47')](handleError(_0x3baf85,null));};exports['create']=function(_0x28da17,_0x13c961){return db['ChatTransferReport'][_0x28cd('0x48')](_0x28da17[_0x28cd('0x49')],{})['then'](respondWithResult(_0x13c961,0xc9))[_0x28cd('0x47')](handleError(_0x13c961,null));};exports[_0x28cd('0x22')]=function(_0x2043d6,_0x57f139){if(_0x2043d6[_0x28cd('0x49')]['id']){delete _0x2043d6['body']['id'];}return db[_0x28cd('0x41')][_0x28cd('0x4a')]({'where':{'id':_0x2043d6[_0x28cd('0x45')]['id']}})[_0x28cd('0x23')](handleEntityNotFound(_0x57f139,null))['then'](saveUpdates(_0x2043d6[_0x28cd('0x49')],null))['then'](respondWithResult(_0x57f139,null))['catch'](handleError(_0x57f139,null));};exports['destroy']=function(_0x3d1ec7,_0x61e1cd){return db['ChatTransferReport'][_0x28cd('0x4a')]({'where':{'id':_0x3d1ec7[_0x28cd('0x45')]['id']}})[_0x28cd('0x23')](handleEntityNotFound(_0x61e1cd,null))['then'](removeEntity(_0x61e1cd,null))[_0x28cd('0x47')](handleError(_0x61e1cd,null));};exports[_0x28cd('0x4b')]=function(_0x320e68,_0xd24c7){return db['ChatTransferReport']['describe']()['then'](respondWithResult(_0xd24c7,null))[_0x28cd('0x47')](handleError(_0xd24c7,null));};
\ No newline at end of file
+var _0xb371=['params','length','includeAll','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','ChatTransferReport','fieldName','type','query','keys','filters','intersection','model','fields','attributes','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','catch','show'];(function(_0x4ed218,_0x557429){var _0x4f5580=function(_0x285ed2){while(--_0x285ed2){_0x4ed218['push'](_0x4ed218['shift']());}};_0x4f5580(++_0x557429);}(_0xb371,0x1bd));var _0x1b37=function(_0x20ef64,_0x4a8fe9){_0x20ef64=_0x20ef64-0x0;var _0x3707d8=_0xb371[_0x20ef64];return _0x3707d8;};'use strict';var emlformat=require(_0x1b37('0x0'));var rimraf=require(_0x1b37('0x1'));var zipdir=require(_0x1b37('0x2'));var jsonpatch=require(_0x1b37('0x3'));var rp=require(_0x1b37('0x4'));var moment=require(_0x1b37('0x5'));var BPromise=require(_0x1b37('0x6'));var Mustache=require(_0x1b37('0x7'));var util=require(_0x1b37('0x8'));var path=require(_0x1b37('0x9'));var sox=require('sox');var csv=require(_0x1b37('0xa'));var ejs=require(_0x1b37('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1b37('0xc'));var squel=require(_0x1b37('0xd'));var crypto=require(_0x1b37('0xe'));var jsforce=require(_0x1b37('0xf'));var deskjs=require(_0x1b37('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x1b37('0x11'));var authService=require(_0x1b37('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x1b37('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1b37('0x14'))(_0x1b37('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x1b37('0x16'))['db'];function respondWithStatusCode(_0x37cea2,_0x38b6d4){_0x38b6d4=_0x38b6d4||0xcc;return function(_0xdb690){if(_0xdb690){return _0x37cea2[_0x1b37('0x17')](_0x38b6d4);}return _0x37cea2[_0x1b37('0x18')](_0x38b6d4)[_0x1b37('0x19')]();};}function respondWithResult(_0x291eeb,_0x4b8de1){_0x4b8de1=_0x4b8de1||0xc8;return function(_0x250c7e){if(_0x250c7e){return _0x291eeb[_0x1b37('0x18')](_0x4b8de1)[_0x1b37('0x1a')](_0x250c7e);}};}function respondWithFilteredResult(_0x597b6e,_0x51fba7){return function(_0x23ff5d){if(_0x23ff5d){var _0x206402=typeof _0x51fba7[_0x1b37('0x1b')]===_0x1b37('0x1c')&&typeof _0x51fba7[_0x1b37('0x1d')]===_0x1b37('0x1c');var _0x490556=_0x23ff5d[_0x1b37('0x1e')];var _0x17a5e9=_0x206402?0x0:_0x51fba7[_0x1b37('0x1b')];var _0x1ebe65=_0x206402?_0x23ff5d[_0x1b37('0x1e')]:_0x51fba7[_0x1b37('0x1b')]+_0x51fba7['limit'];var _0x107390;if(_0x1ebe65>=_0x490556){_0x1ebe65=_0x490556;_0x107390=0xc8;}else{_0x107390=0xce;}_0x597b6e[_0x1b37('0x18')](_0x107390);return _0x597b6e[_0x1b37('0x1f')](_0x1b37('0x20'),_0x17a5e9+'-'+_0x1ebe65+'/'+_0x490556)[_0x1b37('0x1a')](_0x23ff5d);}return null;};}function patchUpdates(_0x28a261){return function(_0x129bdc){try{jsonpatch['apply'](_0x129bdc,_0x28a261,!![]);}catch(_0x172f0a){return BPromise[_0x1b37('0x21')](_0x172f0a);}return _0x129bdc[_0x1b37('0x22')]();};}function saveUpdates(_0x2b211d,_0x1a7dc6){return function(_0x3936d2){if(_0x3936d2){return _0x3936d2[_0x1b37('0x23')](_0x2b211d)[_0x1b37('0x24')](function(_0x24119f){return _0x24119f;});}return null;};}function removeEntity(_0x48a960,_0x198e74){return function(_0x51ccb0){if(_0x51ccb0){return _0x51ccb0[_0x1b37('0x25')]()[_0x1b37('0x24')](function(){_0x48a960[_0x1b37('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x569be8,_0x367c07){return function(_0x223cc0){if(!_0x223cc0){_0x569be8[_0x1b37('0x17')](0x194);}return _0x223cc0;};}function handleError(_0x376e52,_0x5e73e4){_0x5e73e4=_0x5e73e4||0x1f4;return function(_0x12c098){logger[_0x1b37('0x26')](_0x12c098[_0x1b37('0x27')]);if(_0x12c098[_0x1b37('0x28')]){delete _0x12c098['name'];}_0x376e52['status'](_0x5e73e4)[_0x1b37('0x29')](_0x12c098);};}exports[_0x1b37('0x2a')]=function(_0x503f22,_0x267a77){var _0x423649={},_0x2ba5d6={},_0x463dbe={'count':0x0,'rows':[]};var _0x4bf6cf=_[_0x1b37('0x2b')](db[_0x1b37('0x2c')]['rawAttributes'],function(_0x4dd1cd){return{'name':_0x4dd1cd[_0x1b37('0x2d')],'type':_0x4dd1cd[_0x1b37('0x2e')]['key']};});_0x2ba5d6['model']=_[_0x1b37('0x2b')](_0x4bf6cf,_0x1b37('0x28'));_0x2ba5d6[_0x1b37('0x2f')]=_[_0x1b37('0x30')](_0x503f22[_0x1b37('0x2f')]);_0x2ba5d6[_0x1b37('0x31')]=_[_0x1b37('0x32')](_0x2ba5d6[_0x1b37('0x33')],_0x2ba5d6[_0x1b37('0x2f')]);_0x423649['attributes']=_[_0x1b37('0x32')](_0x2ba5d6[_0x1b37('0x33')],qs[_0x1b37('0x34')](_0x503f22['query']['fields']));_0x423649[_0x1b37('0x35')]=_0x423649[_0x1b37('0x35')]['length']?_0x423649[_0x1b37('0x35')]:_0x2ba5d6[_0x1b37('0x33')];if(!_0x503f22[_0x1b37('0x2f')]['hasOwnProperty']('nolimit')){_0x423649[_0x1b37('0x1d')]=qs[_0x1b37('0x1d')](_0x503f22[_0x1b37('0x2f')]['limit']);_0x423649[_0x1b37('0x1b')]=qs[_0x1b37('0x1b')](_0x503f22[_0x1b37('0x2f')][_0x1b37('0x1b')]);}_0x423649[_0x1b37('0x36')]=qs[_0x1b37('0x37')](_0x503f22[_0x1b37('0x2f')][_0x1b37('0x37')]);_0x423649[_0x1b37('0x38')]=qs[_0x1b37('0x31')](_[_0x1b37('0x39')](_0x503f22[_0x1b37('0x2f')],_0x2ba5d6[_0x1b37('0x31')]),_0x4bf6cf);if(_0x503f22['query'][_0x1b37('0x3a')]){_0x423649[_0x1b37('0x38')]=_[_0x1b37('0x3b')](_0x423649[_0x1b37('0x38')],{'$or':_[_0x1b37('0x2b')](_0x4bf6cf,function(_0x4ea372){if(_0x4ea372[_0x1b37('0x2e')]!==_0x1b37('0x3c')){var _0x260e5a={};_0x260e5a[_0x4ea372[_0x1b37('0x28')]]={'$like':'%'+_0x503f22[_0x1b37('0x2f')]['filter']+'%'};return _0x260e5a;}})});}_0x423649=_[_0x1b37('0x3b')]({},_0x423649,_0x503f22[_0x1b37('0x3d')]);var _0x3308ce={'where':_0x423649['where']};return db[_0x1b37('0x2c')][_0x1b37('0x1e')](_0x3308ce)[_0x1b37('0x24')](function(_0x39ecd6){_0x463dbe['count']=_0x39ecd6;if(_0x503f22['query']['includeAll']){_0x423649[_0x1b37('0x3e')]=[{'all':!![]}];}return db['ChatTransferReport'][_0x1b37('0x3f')](_0x423649);})[_0x1b37('0x24')](function(_0x3a74b9){_0x463dbe['rows']=_0x3a74b9;return _0x463dbe;})[_0x1b37('0x24')](respondWithFilteredResult(_0x267a77,_0x423649))[_0x1b37('0x40')](handleError(_0x267a77,null));};exports[_0x1b37('0x41')]=function(_0x471fc9,_0x5f5aea){var _0x5a1b23={'raw':!![],'where':{'id':_0x471fc9[_0x1b37('0x42')]['id']}},_0x4912a6={};_0x4912a6[_0x1b37('0x33')]=_['keys'](db[_0x1b37('0x2c')]['rawAttributes']);_0x4912a6[_0x1b37('0x2f')]=_[_0x1b37('0x30')](_0x471fc9[_0x1b37('0x2f')]);_0x4912a6[_0x1b37('0x31')]=_[_0x1b37('0x32')](_0x4912a6[_0x1b37('0x33')],_0x4912a6[_0x1b37('0x2f')]);_0x5a1b23[_0x1b37('0x35')]=_[_0x1b37('0x32')](_0x4912a6[_0x1b37('0x33')],qs[_0x1b37('0x34')](_0x471fc9[_0x1b37('0x2f')][_0x1b37('0x34')]));_0x5a1b23[_0x1b37('0x35')]=_0x5a1b23[_0x1b37('0x35')][_0x1b37('0x43')]?_0x5a1b23[_0x1b37('0x35')]:_0x4912a6[_0x1b37('0x33')];if(_0x471fc9[_0x1b37('0x2f')][_0x1b37('0x44')]){_0x5a1b23['include']=[{'all':!![]}];}_0x5a1b23=_[_0x1b37('0x3b')]({},_0x5a1b23,_0x471fc9[_0x1b37('0x3d')]);return db[_0x1b37('0x2c')][_0x1b37('0x45')](_0x5a1b23)[_0x1b37('0x24')](handleEntityNotFound(_0x5f5aea,null))[_0x1b37('0x24')](respondWithResult(_0x5f5aea,null))[_0x1b37('0x40')](handleError(_0x5f5aea,null));};exports[_0x1b37('0x46')]=function(_0x2066fd,_0x125eb2){return db['ChatTransferReport']['create'](_0x2066fd[_0x1b37('0x47')],{})[_0x1b37('0x24')](respondWithResult(_0x125eb2,0xc9))[_0x1b37('0x40')](handleError(_0x125eb2,null));};exports[_0x1b37('0x23')]=function(_0x5cc3d4,_0x521dc4){if(_0x5cc3d4[_0x1b37('0x47')]['id']){delete _0x5cc3d4['body']['id'];}return db[_0x1b37('0x2c')][_0x1b37('0x45')]({'where':{'id':_0x5cc3d4[_0x1b37('0x42')]['id']}})['then'](handleEntityNotFound(_0x521dc4,null))['then'](saveUpdates(_0x5cc3d4['body'],null))[_0x1b37('0x24')](respondWithResult(_0x521dc4,null))[_0x1b37('0x40')](handleError(_0x521dc4,null));};exports['destroy']=function(_0xe0c263,_0x17a96b){return db['ChatTransferReport']['find']({'where':{'id':_0xe0c263[_0x1b37('0x42')]['id']}})[_0x1b37('0x24')](handleEntityNotFound(_0x17a96b,null))[_0x1b37('0x24')](removeEntity(_0x17a96b,null))['catch'](handleError(_0x17a96b,null));};exports[_0x1b37('0x48')]=function(_0x10a26c,_0xd6f152){return db[_0x1b37('0x2c')][_0x1b37('0x48')]()[_0x1b37('0x24')](respondWithResult(_0xd6f152,null))[_0x1b37('0x40')](handleError(_0xd6f152,null));};
\ No newline at end of file
index 896c23a..6377437 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc605=['exports','report_chat_transfer','uniqueid','lodash','util','api','moment','bluebird','path','rimraf','./chatTransferReport.attributes'];(function(_0x48b810,_0x173a5e){var _0x23c17d=function(_0x38531e){while(--_0x38531e){_0x48b810['push'](_0x48b810['shift']());}};_0x23c17d(++_0x173a5e);}(_0xc605,0x121));var _0x5c60=function(_0x3442ba,_0xd4ffbb){_0x3442ba=_0x3442ba-0x0;var _0x51e5e4=_0xc605[_0x3442ba];return _0x51e5e4;};'use strict';var _=require(_0x5c60('0x0'));var util=require(_0x5c60('0x1'));var logger=require('../../config/logger')(_0x5c60('0x2'));var moment=require(_0x5c60('0x3'));var BPromise=require(_0x5c60('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5c60('0x5'));var rimraf=require(_0x5c60('0x6'));var config=require('../../config/environment');var attributes=require(_0x5c60('0x7'));module[_0x5c60('0x8')]=function(_0x5e2db7,_0x37dcfb){return _0x5e2db7['define']('ChatTransferReport',attributes,{'tableName':_0x5c60('0x9'),'paranoid':![],'indexes':[{'name':_0x5c60('0xa'),'fields':[_0x5c60('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xed49=['ChatTransferReport','report_chat_transfer','uniqueid','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatTransferReport.attributes','exports'];(function(_0x25e608,_0x4e7214){var _0x58b432=function(_0x28569c){while(--_0x28569c){_0x25e608['push'](_0x25e608['shift']());}};_0x58b432(++_0x4e7214);}(_0xed49,0x1d7));var _0x9ed4=function(_0x125a92,_0x2794be){_0x125a92=_0x125a92-0x0;var _0x1b30cf=_0xed49[_0x125a92];return _0x1b30cf;};'use strict';var _=require('lodash');var util=require(_0x9ed4('0x0'));var logger=require('../../config/logger')(_0x9ed4('0x1'));var moment=require(_0x9ed4('0x2'));var BPromise=require(_0x9ed4('0x3'));var rp=require(_0x9ed4('0x4'));var fs=require('fs');var path=require(_0x9ed4('0x5'));var rimraf=require(_0x9ed4('0x6'));var config=require(_0x9ed4('0x7'));var attributes=require(_0x9ed4('0x8'));module[_0x9ed4('0x9')]=function(_0x5a2fc0,_0x16cee3){return _0x5a2fc0['define'](_0x9ed4('0xa'),attributes,{'tableName':_0x9ed4('0xb'),'paranoid':![],'indexes':[{'name':_0x9ed4('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 57f075c..d21b643 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61f2=['error','code','message','result','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','ChatTransferReport,\x20%s,\x20%s','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x281576,_0x469d70){var _0x454338=function(_0x13e630){while(--_0x13e630){_0x281576['push'](_0x281576['shift']());}};_0x454338(++_0x469d70);}(_0x61f2,0xd6));var _0x261f=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0x61f2[_0x1b828b];return _0x98da1a;};'use strict';var _=require(_0x261f('0x0'));var util=require(_0x261f('0x1'));var moment=require('moment');var BPromise=require(_0x261f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x261f('0x3'))['db'];var utils=require(_0x261f('0x4'));var logger=require(_0x261f('0x5'))(_0x261f('0x6'));var config=require(_0x261f('0x7'));var jayson=require(_0x261f('0x8'));var client=jayson[_0x261f('0x9')][_0x261f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xaf663,_0x447031,_0x2ae4f9){return new BPromise(function(_0x451c17,_0x4abfab){return client[_0x261f('0xb')](_0xaf663,_0x2ae4f9)[_0x261f('0xc')](function(_0x5c3347){logger['info'](_0x261f('0xd'),_0x447031,'request\x20sent');logger[_0x261f('0xe')](_0x261f('0xf'),_0x447031,_0x261f('0x10'),JSON['stringify'](_0x5c3347));if(_0x5c3347[_0x261f('0x11')]){if(_0x5c3347[_0x261f('0x11')][_0x261f('0x12')]===0x1f4){logger[_0x261f('0x11')](_0x261f('0xd'),_0x447031,_0x5c3347[_0x261f('0x11')][_0x261f('0x13')]);return _0x4abfab(_0x5c3347[_0x261f('0x11')][_0x261f('0x13')]);}logger[_0x261f('0x11')](_0x261f('0xd'),_0x447031,_0x5c3347[_0x261f('0x11')]['message']);return _0x451c17(_0x5c3347[_0x261f('0x11')][_0x261f('0x13')]);}else{logger['info'](_0x261f('0xd'),_0x447031,_0x261f('0x10'));_0x451c17(_0x5c3347[_0x261f('0x14')][_0x261f('0x13')]);}})['catch'](function(_0x44d964){logger[_0x261f('0x11')](_0x261f('0xd'),_0x447031,_0x44d964);_0x4abfab(_0x44d964);});});}
\ No newline at end of file
+var _0x0b48=['ChatTransferReport,\x20%s,\x20%s','message','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','error'];(function(_0x2a6809,_0x44edde){var _0x11c371=function(_0x1a4888){while(--_0x1a4888){_0x2a6809['push'](_0x2a6809['shift']());}};_0x11c371(++_0x44edde);}(_0x0b48,0x12e));var _0x80b4=function(_0x518473,_0x490eb0){_0x518473=_0x518473-0x0;var _0x5a94ee=_0x0b48[_0x518473];return _0x5a94ee;};'use strict';var _=require(_0x80b4('0x0'));var util=require(_0x80b4('0x1'));var moment=require(_0x80b4('0x2'));var BPromise=require(_0x80b4('0x3'));var rs=require(_0x80b4('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x80b4('0x5'));var logger=require(_0x80b4('0x6'))(_0x80b4('0x7'));var config=require(_0x80b4('0x8'));var jayson=require(_0x80b4('0x9'));var client=jayson[_0x80b4('0xa')][_0x80b4('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x13b723,_0x54020b,_0x3591a0){return new BPromise(function(_0x3a51a3,_0x3bd244){return client[_0x80b4('0xc')](_0x13b723,_0x3591a0)['then'](function(_0x10326c){logger[_0x80b4('0xd')]('ChatTransferReport,\x20%s,\x20%s',_0x54020b,_0x80b4('0xe'));logger[_0x80b4('0xf')](_0x80b4('0x10'),_0x54020b,_0x80b4('0xe'),JSON['stringify'](_0x10326c));if(_0x10326c[_0x80b4('0x11')]){if(_0x10326c['error']['code']===0x1f4){logger['error'](_0x80b4('0x12'),_0x54020b,_0x10326c['error'][_0x80b4('0x13')]);return _0x3bd244(_0x10326c['error'][_0x80b4('0x13')]);}logger[_0x80b4('0x11')](_0x80b4('0x12'),_0x54020b,_0x10326c[_0x80b4('0x11')][_0x80b4('0x13')]);return _0x3a51a3(_0x10326c[_0x80b4('0x11')][_0x80b4('0x13')]);}else{logger['info'](_0x80b4('0x12'),_0x54020b,'request\x20sent');_0x3a51a3(_0x10326c['result'][_0x80b4('0x13')]);}})['catch'](function(_0x18e045){logger['error'](_0x80b4('0x12'),_0x54020b,_0x18e045);_0x3bd244(_0x18e045);});});}
\ No newline at end of file
index 0723c94..cbbdc53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6405=['destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','delete'];(function(_0x168a51,_0x1fa9a){var _0x49c9cd=function(_0x2071e9){while(--_0x2071e9){_0x168a51['push'](_0x168a51['shift']());}};_0x49c9cd(++_0x1fa9a);}(_0x6405,0xb1));var _0x5640=function(_0x5771a1,_0x3939ef){_0x5771a1=_0x5771a1-0x0;var _0x5a3ffe=_0x6405[_0x5771a1];return _0x5a3ffe;};'use strict';var multer=require('multer');var util=require(_0x5640('0x0'));var path=require(_0x5640('0x1'));var timeout=require(_0x5640('0x2'));var express=require(_0x5640('0x3'));var router=express[_0x5640('0x4')]();var fs_extra=require(_0x5640('0x5'));var auth=require(_0x5640('0x6'));var interaction=require(_0x5640('0x7'));var config=require(_0x5640('0x8'));var controller=require(_0x5640('0x9'));router[_0x5640('0xa')]('/',auth[_0x5640('0xb')](),controller[_0x5640('0xc')]);router[_0x5640('0xa')](_0x5640('0xd'),auth['isAuthenticated'](),controller[_0x5640('0xe')]);router[_0x5640('0xa')](_0x5640('0xf'),auth[_0x5640('0xb')](),controller[_0x5640('0x10')]);router[_0x5640('0x11')]('/',auth['isAuthenticated'](),controller[_0x5640('0x12')]);router[_0x5640('0x13')](_0x5640('0xf'),auth[_0x5640('0xb')](),controller['update']);router[_0x5640('0x14')]('/:id',auth[_0x5640('0xb')](),controller[_0x5640('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xf4a5=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatTransferReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','create','delete','exports'];(function(_0x21286c,_0x14b029){var _0x34c830=function(_0x38b366){while(--_0x38b366){_0x21286c['push'](_0x21286c['shift']());}};_0x34c830(++_0x14b029);}(_0xf4a5,0x64));var _0x5f4a=function(_0x386525,_0xefae6){_0x386525=_0x386525-0x0;var _0x14d015=_0xf4a5[_0x386525];return _0x14d015;};'use strict';var multer=require(_0x5f4a('0x0'));var util=require(_0x5f4a('0x1'));var path=require(_0x5f4a('0x2'));var timeout=require(_0x5f4a('0x3'));var express=require(_0x5f4a('0x4'));var router=express[_0x5f4a('0x5')]();var fs_extra=require(_0x5f4a('0x6'));var auth=require(_0x5f4a('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x5f4a('0x8'));var controller=require(_0x5f4a('0x9'));router[_0x5f4a('0xa')]('/',auth['isAuthenticated'](),controller[_0x5f4a('0xb')]);router[_0x5f4a('0xa')](_0x5f4a('0xc'),auth[_0x5f4a('0xd')](),controller[_0x5f4a('0xe')]);router[_0x5f4a('0xa')](_0x5f4a('0xf'),auth[_0x5f4a('0xd')](),controller[_0x5f4a('0x10')]);router['post']('/',auth[_0x5f4a('0xd')](),controller[_0x5f4a('0x11')]);router['put'](_0x5f4a('0xf'),auth[_0x5f4a('0xd')](),controller['update']);router[_0x5f4a('0x12')](_0x5f4a('0xf'),auth[_0x5f4a('0xd')](),controller['destroy']);module[_0x5f4a('0x13')]=router;
\ No newline at end of file
index e4b7d50..9c8b95e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd64b=['website_alias','CHAT','#fafafa','System','mandatoryDisposition','sequelize','exports','STRING','address','email','Agent','#011F6A','#ffffff','INTEGER','ENUM','rounded','squared','We\x20are\x20here!','Chat','Send','Contact\x20us','BOOLEAN','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Feedback','star','thumb','stringify','input','name','text','onlineForm','parse','getDataValue','setDataValue','textarea','Comments','offlineForm','generate','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','Your\x20request\x20has\x20not\x20been\x20processed.'];(function(_0x3ceb54,_0x5bddfd){var _0x26d8a6=function(_0x32e484){while(--_0x32e484){_0x3ceb54['push'](_0x3ceb54['shift']());}};_0x26d8a6(++_0x5bddfd);}(_0xd64b,0xc1));var _0xbd64=function(_0x4f35ec,_0x840f6e){_0x4f35ec=_0x4f35ec-0x0;var _0x111757=_0xd64b[_0x4f35ec];return _0x111757;};'use strict';var Sequelize=require(_0xbd64('0x0'));var rs=require('randomstring');module[_0xbd64('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'address':{'type':Sequelize[_0xbd64('0x2')],'allowNull':![],'unique':_0xbd64('0x3')},'description':{'type':Sequelize[_0xbd64('0x2')]},'mapKey':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':_0xbd64('0x4')},'mapKeyOffline':{'type':Sequelize['STRING'],'defaultValue':'email'},'key':{'type':Sequelize['STRING'],'allowNull':![]},'agentAlias':{'type':Sequelize['STRING'],'defaultValue':_0xbd64('0x5')},'customerAlias':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':'Me'},'color':{'type':Sequelize[_0xbd64('0x2')],'allowNull':![],'defaultValue':_0xbd64('0x6'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0xbd64('0x2')],'allowNull':![],'defaultValue':_0xbd64('0x6'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0xbd64('0x2')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xbd64('0x7'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0xbd64('0x8')],'defaultValue':0xf},'remote':{'type':Sequelize[_0xbd64('0x2')]},'animation':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0xbd64('0x9')](_0xbd64('0xa'),_0xbd64('0xb')),'defaultValue':_0xbd64('0xa')},'header_online':{'type':Sequelize['STRING'],'defaultValue':_0xbd64('0xc')},'start_chat_button':{'type':Sequelize['STRING'],'defaultValue':_0xbd64('0xd')},'offline_chat_button':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':_0xbd64('0xe')},'header_offline':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':_0xbd64('0xf')},'download_transcript':{'type':Sequelize[_0xbd64('0x10')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0xbd64('0x8')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':_0xbd64('0x11')},'defaultWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0xbd64('0x12')]},'closingQuestion':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':_0xbd64('0x13')},'formSubmitSuccessMessage':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':_0xbd64('0x14')},'formSubmitFailureMessage':{'type':Sequelize['STRING'],'defaultValue':_0xbd64('0x15')},'noteTitle':{'type':Sequelize['STRING'],'defaultValue':_0xbd64('0x16')},'placeholderMessage':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':_0xbd64('0x17')},'closingMessage':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':_0xbd64('0x18')},'closingMessageButton':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':_0xbd64('0xe')},'skipMessageButton':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':'Skip'},'conditionAgreement':{'type':Sequelize[_0xbd64('0x10')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0xbd64('0x10')],'defaultValue':![]},'enableFeedback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableSendButton':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':_0xbd64('0x19')},'ratingType':{'type':Sequelize[_0xbd64('0x9')](_0xbd64('0x1a'),_0xbd64('0x1b')),'defaultValue':_0xbd64('0x1a')},'ratingStarsNumber':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'onlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0xbd64('0x1c')]({'items':[{'type':_0xbd64('0x1d'),'variable':null,'config':{'placeholder':_0xbd64('0x1e'),'type':_0xbd64('0x1f'),'required':!![]},'props':{'title':'name','helpText':''}},{'type':'input','props':{'title':_0xbd64('0x4'),'helpText':''},'config':{'required':!![],'placeholder':'email','type':_0xbd64('0x4')},'variable':null}],'fromKey':0x1});},'get':function(){return this['getDataValue'](_0xbd64('0x20'))?JSON[_0xbd64('0x21')](this[_0xbd64('0x22')](_0xbd64('0x20'))):{};},'set':function(_0x5ae417){return this[_0xbd64('0x23')](_0xbd64('0x20'),JSON[_0xbd64('0x1c')](_0x5ae417));}},'offlineForm':{'type':Sequelize[_0xbd64('0x12')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':'input','props':{'title':_0xbd64('0x4'),'helpText':''},'config':{'required':!![],'placeholder':'email','type':'email'},'variable':null},{'type':_0xbd64('0x24'),'config':{'placeholder':'Comments'},'props':{'title':_0xbd64('0x25'),'helpText':'Leave\x20your\x20comments'}}],'fromKey':0x0});},'get':function(){return this[_0xbd64('0x22')]('offlineForm')?JSON[_0xbd64('0x21')](this[_0xbd64('0x22')](_0xbd64('0x26'))):{};},'set':function(_0x210fff){return this[_0xbd64('0x23')](_0xbd64('0x26'),JSON['stringify'](_0x210fff));}},'token':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':function(){return rs[_0xbd64('0x27')]();}},'autoclose':{'type':Sequelize[_0xbd64('0x10')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0xbd64('0x10')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0xbd64('0x10')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0xbd64('0x2')]},'forwardOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize['STRING']},'waitingTitle':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':'All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.'},'waitingMessage':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':_0xbd64('0x28')},'offlineMessageSubject':{'type':Sequelize['STRING'],'defaultValue':'New\x20offline\x20message\x20from\x20websiteName'},'offlineMessageBody':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':'You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:'},'enableUnmanagedNote':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':_0xbd64('0x29')},'skipUnmanaged':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':'Skip'},'sendUnmanaged':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':'Send'},'enableCustomerAttachment':{'type':Sequelize[_0xbd64('0x10')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0xbd64('0x10')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0xbd64('0x12')]},'showAgentAvatar':{'type':Sequelize[_0xbd64('0x10')],'defaultValue':![]},'timezone':{'type':Sequelize[_0xbd64('0x2')]},'notificationTemplate':{'type':Sequelize[_0xbd64('0x12')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xbd64('0x10')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0xbd64('0x10')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':_0xbd64('0x2a')},'waitForTheAssignedAgent':{'type':Sequelize[_0xbd64('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':'bottom_right'},'verticalAlignment':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'labelText':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':_0xbd64('0x2b')},'messagesAlignment':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':'alternate'},'defaultTitle':{'type':Sequelize['STRING']},'customerAvatar':{'type':Sequelize[_0xbd64('0x12')]},'showCustomerAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0xbd64('0x8')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xbd64('0x2c'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0xbd64('0x10')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xbd64('0x10')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize['STRING'],'defaultValue':_0xbd64('0x2d')},'systemAvatar':{'type':Sequelize[_0xbd64('0x12')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xbd64('0x8')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x344d46){if(!_0x344d46)this[_0xbd64('0x23')]('mandatoryDispositionPauseId',null);this[_0xbd64('0x23')](_0xbd64('0x2e'),_0x344d46);}},'vidaooEscalation':{'type':Sequelize[_0xbd64('0x10')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0xbd64('0x2')]},'vidaooTopic':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'Generated\x20by\x20XCALLY\x20Motion'},'vidaooNote':{'type':Sequelize[_0xbd64('0x2')],'defaultValue':function(){return'Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}';}},'vidaooMetadata':{'type':Sequelize['TEXT'],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0xbd64('0x10')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0xbd64('0x12')]}};
\ No newline at end of file
+var _0xf4eb=['squared','We\x20are\x20here!','Chat','Contact\x20us','Powered\x20by\x20xCALLY','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20submission\x20error','Note','Type\x20a\x20message','Skip','Feedback','ENUM','star','thumb','TEXT','stringify','input','text','name','getDataValue','onlineForm','textarea','Comments','Leave\x20your\x20comments','parse','offlineForm','setDataValue','generate','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','Your\x20request\x20has\x20not\x20been\x20processed.','Send','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','bottom_right','CHAT','alternate','#fafafa','System','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','sequelize','address','email','STRING','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN'];(function(_0x31b20b,_0x3c31d1){var _0x24cd85=function(_0x88dae7){while(--_0x88dae7){_0x31b20b['push'](_0x31b20b['shift']());}};_0x24cd85(++_0x3c31d1);}(_0xf4eb,0xec));var _0xbf4e=function(_0x47d7fe,_0x3b2f26){_0x47d7fe=_0x47d7fe-0x0;var _0x2c0862=_0xf4eb[_0x47d7fe];return _0x2c0862;};'use strict';var Sequelize=require(_0xbf4e('0x0'));var rs=require('randomstring');module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'address':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xbf4e('0x1')},'description':{'type':Sequelize['STRING']},'mapKey':{'type':Sequelize['STRING'],'defaultValue':_0xbf4e('0x2')},'mapKeyOffline':{'type':Sequelize[_0xbf4e('0x3')],'defaultValue':_0xbf4e('0x2')},'key':{'type':Sequelize[_0xbf4e('0x3')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0xbf4e('0x3')],'defaultValue':_0xbf4e('0x4')},'customerAlias':{'type':Sequelize[_0xbf4e('0x3')],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xbf4e('0x5'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0xbf4e('0x3')],'allowNull':![],'defaultValue':_0xbf4e('0x6'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize[_0xbf4e('0x3')],'allowNull':![],'defaultValue':_0xbf4e('0x6'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0xbf4e('0x7')],'defaultValue':0xf},'remote':{'type':Sequelize[_0xbf4e('0x3')]},'animation':{'type':Sequelize[_0xbf4e('0x8')],'defaultValue':!![]},'header_shape':{'type':Sequelize['ENUM']('rounded',_0xbf4e('0x9')),'defaultValue':'rounded'},'header_online':{'type':Sequelize[_0xbf4e('0x3')],'defaultValue':_0xbf4e('0xa')},'start_chat_button':{'type':Sequelize['STRING'],'defaultValue':_0xbf4e('0xb')},'offline_chat_button':{'type':Sequelize['STRING'],'defaultValue':'Send'},'header_offline':{'type':Sequelize[_0xbf4e('0x3')],'defaultValue':_0xbf4e('0xc')},'download_transcript':{'type':Sequelize[_0xbf4e('0x8')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0xbf4e('0x7')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0xbf4e('0x3')],'defaultValue':_0xbf4e('0xd')},'defaultWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sitepic':{'type':Sequelize['TEXT']},'closingQuestion':{'type':Sequelize[_0xbf4e('0x3')],'defaultValue':_0xbf4e('0xe')},'formSubmitSuccessMessage':{'type':Sequelize[_0xbf4e('0x3')],'defaultValue':'Form\x20properly\x20submitted'},'formSubmitFailureMessage':{'type':Sequelize[_0xbf4e('0x3')],'defaultValue':_0xbf4e('0xf')},'noteTitle':{'type':Sequelize[_0xbf4e('0x3')],'defaultValue':_0xbf4e('0x10')},'placeholderMessage':{'type':Sequelize['STRING'],'defaultValue':_0xbf4e('0x11')},'closingMessage':{'type':Sequelize['STRING'],'defaultValue':'Thanks\x20you\x20for\x20your\x20time!'},'closingMessageButton':{'type':Sequelize['STRING'],'defaultValue':'Send'},'skipMessageButton':{'type':Sequelize[_0xbf4e('0x3')],'defaultValue':_0xbf4e('0x12')},'conditionAgreement':{'type':Sequelize[_0xbf4e('0x8')],'defaultValue':![]},'enableRating':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableFeedback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0xbf4e('0x8')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0xbf4e('0x3')],'defaultValue':_0xbf4e('0x13')},'ratingType':{'type':Sequelize[_0xbf4e('0x14')](_0xbf4e('0x15'),_0xbf4e('0x16')),'defaultValue':_0xbf4e('0x15')},'ratingStarsNumber':{'type':Sequelize[_0xbf4e('0x7')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0xbf4e('0x17')],'defaultValue':function(){return JSON[_0xbf4e('0x18')]({'items':[{'type':_0xbf4e('0x19'),'variable':null,'config':{'placeholder':'name','type':_0xbf4e('0x1a'),'required':!![]},'props':{'title':_0xbf4e('0x1b'),'helpText':''}},{'type':'input','props':{'title':_0xbf4e('0x2'),'helpText':''},'config':{'required':!![],'placeholder':_0xbf4e('0x2'),'type':_0xbf4e('0x2')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0xbf4e('0x1c')](_0xbf4e('0x1d'))?JSON['parse'](this[_0xbf4e('0x1c')](_0xbf4e('0x1d'))):{};},'set':function(_0x3d6863){return this['setDataValue'](_0xbf4e('0x1d'),JSON['stringify'](_0x3d6863));}},'offlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0xbf4e('0x18')]({'items':[{'type':'input','props':{'title':_0xbf4e('0x2'),'helpText':''},'config':{'required':!![],'placeholder':_0xbf4e('0x2'),'type':_0xbf4e('0x2')},'variable':null},{'type':_0xbf4e('0x1e'),'config':{'placeholder':'Comments'},'props':{'title':_0xbf4e('0x1f'),'helpText':_0xbf4e('0x20')}}],'fromKey':0x0});},'get':function(){return this[_0xbf4e('0x1c')]('offlineForm')?JSON[_0xbf4e('0x21')](this['getDataValue'](_0xbf4e('0x22'))):{};},'set':function(_0x1421e1){return this[_0xbf4e('0x23')]('offlineForm',JSON[_0xbf4e('0x18')](_0x1421e1));}},'token':{'type':Sequelize[_0xbf4e('0x3')],'defaultValue':function(){return rs[_0xbf4e('0x24')]();}},'autoclose':{'type':Sequelize[_0xbf4e('0x8')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0xbf4e('0x8')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0xbf4e('0x8')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize['STRING']},'forwardOffline':{'type':Sequelize[_0xbf4e('0x8')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0xbf4e('0x3')]},'waitingTitle':{'type':Sequelize['STRING'],'defaultValue':_0xbf4e('0x25')},'waitingMessage':{'type':Sequelize[_0xbf4e('0x3')],'defaultValue':'Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.'},'offlineMessageSubject':{'type':Sequelize[_0xbf4e('0x3')],'defaultValue':'New\x20offline\x20message\x20from\x20websiteName'},'offlineMessageBody':{'type':Sequelize[_0xbf4e('0x3')],'defaultValue':'You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:'},'enableUnmanagedNote':{'type':Sequelize[_0xbf4e('0x8')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0xbf4e('0x3')],'defaultValue':_0xbf4e('0x26')},'skipUnmanaged':{'type':Sequelize['STRING'],'defaultValue':_0xbf4e('0x12')},'sendUnmanaged':{'type':Sequelize[_0xbf4e('0x3')],'defaultValue':_0xbf4e('0x27')},'enableCustomerAttachment':{'type':Sequelize[_0xbf4e('0x8')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0xbf4e('0x8')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0xbf4e('0x17')]},'showAgentAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timezone':{'type':Sequelize[_0xbf4e('0x3')]},'notificationTemplate':{'type':Sequelize[_0xbf4e('0x17')],'defaultValue':function(){return _0xbf4e('0x28');}},'notificationSound':{'type':Sequelize[_0xbf4e('0x8')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xbf4e('0x8')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize['STRING'],'defaultValue':'website_alias'},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0xbf4e('0x3')],'defaultValue':_0xbf4e('0x29')},'verticalAlignment':{'type':Sequelize[_0xbf4e('0x7')],'defaultValue':0x1e},'labelText':{'type':Sequelize[_0xbf4e('0x3')],'defaultValue':_0xbf4e('0x2a')},'messagesAlignment':{'type':Sequelize[_0xbf4e('0x3')],'defaultValue':_0xbf4e('0x2b')},'defaultTitle':{'type':Sequelize[_0xbf4e('0x3')]},'customerAvatar':{'type':Sequelize[_0xbf4e('0x17')]},'showCustomerAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'messageFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0xbf4e('0x3')],'allowNull':![],'defaultValue':_0xbf4e('0x2c'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0xbf4e('0x8')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xbf4e('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0xbf4e('0x3')],'defaultValue':_0xbf4e('0x2d')},'systemAvatar':{'type':Sequelize[_0xbf4e('0x17')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xbf4e('0x7')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xbf4e('0x8')],'defaultValue':![],'comment':_0xbf4e('0x2e'),'set':function(_0x3aa308){if(!_0x3aa308)this[_0xbf4e('0x23')]('mandatoryDispositionPauseId',null);this[_0xbf4e('0x23')](_0xbf4e('0x2f'),_0x3aa308);}},'vidaooEscalation':{'type':Sequelize[_0xbf4e('0x8')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0xbf4e('0x3')]},'vidaooTopic':{'type':Sequelize[_0xbf4e('0x3')],'allowNull':![],'defaultValue':_0xbf4e('0x30')},'vidaooNote':{'type':Sequelize[_0xbf4e('0x3')],'defaultValue':function(){return'Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}';}},'vidaooMetadata':{'type':Sequelize[_0xbf4e('0x17')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0xbf4e('0x8')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index e8e4cac..cb6e553 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcee9=['addAgents','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','bluebird','util','path','fs-extra','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatWebsite.socket','register','html-to-text','jayson/promise','client','http','request','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','end','status','json','offset','undefined','count','limit','set','update','then','destroy','get','ChatWebsites','stack','name','send','Pause','mandatoryDispositionPause','map','fieldName','type','key','query','keys','filters','model','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','ChatWebsite','includeAll','include','findAll','rows','params','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','findOne','rawAttributes','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','order','removeAnswers','addLogo','sitepic','file','filename','addAvatar','agentAvatar','addCustomerAvatar','customerAvatar','systemAvatar','getLogo','root','server/files/images/logos/default_logo.svg','../../config/license/util','getLicense','custom','isNil','existsSync','join','server/files/images/logos/','download','getAvatar','server/files/images/avatars/default_avatar.png','server/files/images/avatars/','getCustomerAvatar','showCustomerAvatar','server/files/images/avatars/system_avatar.png','notify','user-agent-parser','headers','user-agent','getResult','chat','CmContact','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','ListId','from','Sequelize','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','DESC','Applications','account','applications','orderBy','priority','asc','Contacts','customerIp','cf-connecting-ip','x-forwarded-for','first','split','firstName','x-real-port','referer','browser','version','unknown','format','%s\x20%s','device','vendor','%s\x20%s\x20%s','threadId','externalUrl','interaction','ChatInteraction','spread','contact','lastName','messageId','created','autoclose','push','unmanaged','*,*,*,*','ChatMessage','AttachmentId','UserId','User','unshift','agent','forcedOwnership','Start','startRouting','EventManager','offline','CompanyId','mapKeyOffline','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','server/files/templates/chatOfflineMessage.ejs','render','toPairs','offlineMessageBody','ChatOfflineMessage','fromString','originalname','mimetype','server','files','offline-chat','basename','Attachment','bulkCreate','MailServerOut','Smtp','CloudProvider','forwardOffline','getSmtpOptions','SendMail','sendMail','\x22%s\x22\x20<%s>','email','subjectOffline','toPairsIn','offlineMessageSubject','Chat','MailAccountId','NotifyMailAccount','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','getInteractions','fullname','internal','Tag','Tags','color','tag','Command','timezone','iftime\x20%s,%s','interval','iftime\x20%s','indexOf','true','info','ONLINE','OFFLINE','No\x20timezone','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','getSnippet','Interval','Intervals','virtual','License','increment','chatLicenseExceeded','all','some','server/files/chat/iframe.ejs','utf8','x-real-ip','connection','alignment','verticalAlignment','textColor','color_button','backgroundColor','hideWhenOffline','IntervalId','transaction','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','ChatApplication','findAndCountAll','finally','addProactiveActions','ChatProactiveAction','getProactiveActions','getFields','online','offlineForm','onlineForm','items','fromKey','Contact','Attachments'];(function(_0x56f8dd,_0x289047){var _0x1f7c98=function(_0x4428f8){while(--_0x4428f8){_0x56f8dd['push'](_0x56f8dd['shift']());}};_0x1f7c98(++_0x289047);}(_0xcee9,0x132));var _0x9cee=function(_0x3aad21,_0x2e7504){_0x3aad21=_0x3aad21-0x0;var _0x134795=_0xcee9[_0x3aad21];return _0x134795;};'use strict';var BPromise=require(_0x9cee('0x0'));var Mustache=require('mustache');var util=require(_0x9cee('0x1'));var path=require(_0x9cee('0x2'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9cee('0x3'));var _=require(_0x9cee('0x4'));var querystring=require('querystring');var Redis=require(_0x9cee('0x5'));var qs=require(_0x9cee('0x6'));var logger=require(_0x9cee('0x7'))(_0x9cee('0x8'));var config=require(_0x9cee('0x9'));var db=require(_0x9cee('0xa'))['db'];config[_0x9cee('0xb')]=_[_0x9cee('0xc')](config[_0x9cee('0xb')],{'host':_0x9cee('0xd'),'port':0x18eb});var socket=require(_0x9cee('0xe'))(new Redis(config['redis']));require(_0x9cee('0xf'))[_0x9cee('0x10')](socket);var htmlToText=require(_0x9cee('0x11'));var jayson=require(_0x9cee('0x12'));var client=jayson[_0x9cee('0x13')]['http']({'port':0x232c});var client9002=jayson['client'][_0x9cee('0x14')]({'port':0x232a});var client9003=jayson['client'][_0x9cee('0x14')]({'port':0x232b});var client9001=jayson[_0x9cee('0x13')][_0x9cee('0x14')]({'port':0x2329});function respondWithRpcPromise(_0x275166,_0x5a9f2a,_0x5bd630,_0x2e09fe){return new BPromise(function(_0x4b3f78,_0x558706){var _0x4ec2c2=_0x2e09fe||client;return _0x4ec2c2[_0x9cee('0x15')](_0x275166,_0x5bd630)['then'](function(_0x1b515c){logger['info'](_0x9cee('0x16'),_0x5a9f2a,_0x9cee('0x17'));logger[_0x9cee('0x18')](_0x9cee('0x19'),_0x5a9f2a,_0x9cee('0x17'),JSON[_0x9cee('0x1a')](_0x1b515c));if(_0x1b515c[_0x9cee('0x1b')]){if(_0x1b515c[_0x9cee('0x1b')][_0x9cee('0x1c')]===0x1f4){logger[_0x9cee('0x1b')](_0x9cee('0x16'),_0x5a9f2a,_0x1b515c['error'][_0x9cee('0x1d')]);return _0x558706(_0x1b515c[_0x9cee('0x1b')][_0x9cee('0x1d')]);}logger[_0x9cee('0x1b')](_0x9cee('0x16'),_0x5a9f2a,_0x1b515c[_0x9cee('0x1b')][_0x9cee('0x1d')]);return _0x4b3f78(_0x1b515c[_0x9cee('0x1b')][_0x9cee('0x1d')]);}else{logger['info'](_0x9cee('0x16'),_0x5a9f2a,_0x9cee('0x17'));_0x4b3f78(_0x1b515c[_0x9cee('0x1e')][_0x9cee('0x1d')]);}})[_0x9cee('0x1f')](function(_0x20e14c){logger[_0x9cee('0x1b')](_0x9cee('0x16'),_0x5a9f2a,_0x20e14c);_0x558706(_0x20e14c);});});}function respondWithStatusCode(_0x27d051,_0x52d28d){_0x52d28d=_0x52d28d||0xcc;return function(_0x4d60c2){if(_0x4d60c2){return _0x27d051[_0x9cee('0x20')](_0x52d28d);}return _0x27d051['status'](_0x52d28d)[_0x9cee('0x21')]();};}function respondWithResult(_0x4fa08f,_0x4919a7){_0x4919a7=_0x4919a7||0xc8;return function(_0x169aa6){if(_0x169aa6){return _0x4fa08f[_0x9cee('0x22')](_0x4919a7)[_0x9cee('0x23')](_0x169aa6);}};}function respondWithFilteredResult(_0x4f7267,_0x6f80d8){return function(_0x3e52dd){if(_0x3e52dd){var _0x33a099=typeof _0x6f80d8[_0x9cee('0x24')]===_0x9cee('0x25')&&typeof _0x6f80d8['limit']===_0x9cee('0x25');var _0x5abb55=_0x3e52dd[_0x9cee('0x26')];var _0x56a962=_0x33a099?0x0:_0x6f80d8[_0x9cee('0x24')];var _0xf47433=_0x33a099?_0x3e52dd[_0x9cee('0x26')]:_0x6f80d8[_0x9cee('0x24')]+_0x6f80d8[_0x9cee('0x27')];var _0x40f14a;if(_0xf47433>=_0x5abb55){_0xf47433=_0x5abb55;_0x40f14a=0xc8;}else{_0x40f14a=0xce;}_0x4f7267[_0x9cee('0x22')](_0x40f14a);return _0x4f7267[_0x9cee('0x28')]('Content-Range',_0x56a962+'-'+_0xf47433+'/'+_0x5abb55)[_0x9cee('0x23')](_0x3e52dd);}return null;};}function saveUpdates(_0x29ea5d){return function(_0x3f0358){if(_0x3f0358){return _0x3f0358[_0x9cee('0x29')](_0x29ea5d)[_0x9cee('0x2a')](function(_0x30c9ba){return _0x30c9ba;});}return null;};}function removeEntity(_0x249213){return function(_0x418b31){if(_0x418b31){return _0x418b31[_0x9cee('0x2b')]()['then'](function(){var _0x381889=_0x418b31[_0x9cee('0x2c')]({'plain':!![]});var _0x31fcaf=_0x9cee('0x2d');return db['UserProfileResource'][_0x9cee('0x2b')]({'where':{'type':_0x31fcaf,'resourceId':_0x381889['id']}})[_0x9cee('0x2a')](function(){return _0x418b31;});})[_0x9cee('0x2a')](function(){_0x249213[_0x9cee('0x22')](0xcc)[_0x9cee('0x21')]();});}};}function handleEntityNotFound(_0x3220c0){return function(_0x2bf815){if(!_0x2bf815){_0x3220c0[_0x9cee('0x20')](0x194);}return _0x2bf815;};}function handleError(_0x3076d8,_0x118864){_0x118864=_0x118864||0x1f4;return function(_0x3e7885){logger[_0x9cee('0x1b')](_0x3e7885[_0x9cee('0x2e')]);if(_0x3e7885['name']){delete _0x3e7885[_0x9cee('0x2f')];}_0x3076d8[_0x9cee('0x22')](_0x118864)[_0x9cee('0x30')](_0x3e7885);};}exports['index']=function(_0x35f1a6,_0x5c337c){var _0x220762={'include':[{'model':db[_0x9cee('0x31')],'as':_0x9cee('0x32')}]},_0xb93a99={},_0x2a5af4={'count':0x0,'rows':[]};var _0x4820e5=_[_0x9cee('0x33')](db['ChatWebsite']['rawAttributes'],function(_0x45395e){return{'name':_0x45395e[_0x9cee('0x34')],'type':_0x45395e[_0x9cee('0x35')][_0x9cee('0x36')]};});_0xb93a99['model']=_['map'](_0x4820e5,_0x9cee('0x2f'));_0xb93a99[_0x9cee('0x37')]=_[_0x9cee('0x38')](_0x35f1a6[_0x9cee('0x37')]);_0xb93a99[_0x9cee('0x39')]=_['intersection'](_0xb93a99[_0x9cee('0x3a')],_0xb93a99[_0x9cee('0x37')]);_0x220762['attributes']=_[_0x9cee('0x3b')](_0xb93a99[_0x9cee('0x3a')],qs[_0x9cee('0x3c')](_0x35f1a6['query'][_0x9cee('0x3c')]));_0x220762[_0x9cee('0x3d')]=_0x220762[_0x9cee('0x3d')]['length']?_0x220762[_0x9cee('0x3d')]:_0xb93a99[_0x9cee('0x3a')];if(!_0x35f1a6[_0x9cee('0x37')][_0x9cee('0x3e')](_0x9cee('0x3f'))){_0x220762[_0x9cee('0x27')]=qs[_0x9cee('0x27')](_0x35f1a6[_0x9cee('0x37')][_0x9cee('0x27')]);_0x220762[_0x9cee('0x24')]=qs[_0x9cee('0x24')](_0x35f1a6[_0x9cee('0x37')]['offset']);}_0x220762['order']=qs['sort'](_0x35f1a6[_0x9cee('0x37')][_0x9cee('0x40')]);_0x220762[_0x9cee('0x41')]=qs['filters'](_[_0x9cee('0x42')](_0x35f1a6['query'],_0xb93a99[_0x9cee('0x39')]),_0x4820e5);if(_0x35f1a6['query'][_0x9cee('0x43')]){_0x220762['where']=_[_0x9cee('0x44')](_0x220762[_0x9cee('0x41')],{'$or':_[_0x9cee('0x33')](_0x4820e5,function(_0x14228e){if(_0x14228e['type']!==_0x9cee('0x45')){var _0x4d2a54={};_0x4d2a54[_0x14228e[_0x9cee('0x2f')]]={'$like':'%'+_0x35f1a6['query']['filter']+'%'};return _0x4d2a54;}})});}_0x220762=_[_0x9cee('0x44')]({},_0x220762,_0x35f1a6[_0x9cee('0x46')]);var _0x999955={'where':_0x220762[_0x9cee('0x41')]};return db[_0x9cee('0x47')][_0x9cee('0x26')](_0x999955)['then'](function(_0x5143f6){_0x2a5af4['count']=_0x5143f6;if(_0x35f1a6[_0x9cee('0x37')][_0x9cee('0x48')]){_0x220762[_0x9cee('0x49')]=[{'all':!![]}];}return db[_0x9cee('0x47')][_0x9cee('0x4a')](_0x220762);})['then'](function(_0x483e48){_0x2a5af4[_0x9cee('0x4b')]=_0x483e48;return _0x2a5af4;})['then'](respondWithFilteredResult(_0x5c337c,_0x220762))[_0x9cee('0x1f')](handleError(_0x5c337c,null));};exports['show']=function(_0x402860,_0x32ffbc){var _0x4069a3={'raw':![],'where':{'id':_0x402860[_0x9cee('0x4c')]['id']},'include':[{'model':db[_0x9cee('0x31')],'as':'mandatoryDispositionPause'}]},_0x2c018b={};_0x2c018b[_0x9cee('0x3a')]=_[_0x9cee('0x38')](db[_0x9cee('0x47')]['rawAttributes']);_0x2c018b[_0x9cee('0x37')]=_[_0x9cee('0x38')](_0x402860[_0x9cee('0x37')]);_0x2c018b[_0x9cee('0x39')]=_['intersection'](_0x2c018b[_0x9cee('0x3a')],_0x2c018b[_0x9cee('0x37')]);_0x4069a3['attributes']=_[_0x9cee('0x3b')](_0x2c018b[_0x9cee('0x3a')],qs['fields'](_0x402860[_0x9cee('0x37')]['fields']));_0x4069a3[_0x9cee('0x3d')]=_0x4069a3['attributes'][_0x9cee('0x4d')]?_0x4069a3[_0x9cee('0x3d')]:_0x2c018b[_0x9cee('0x3a')];if(_0x402860[_0x9cee('0x37')][_0x9cee('0x48')]){_0x4069a3[_0x9cee('0x49')]=[{'all':!![]}];}_0x4069a3=_[_0x9cee('0x44')]({},_0x4069a3,_0x402860[_0x9cee('0x46')]);return db[_0x9cee('0x47')][_0x9cee('0x4e')](_0x4069a3)[_0x9cee('0x2a')](handleEntityNotFound(_0x32ffbc,null))[_0x9cee('0x2a')](respondWithResult(_0x32ffbc,null))[_0x9cee('0x1f')](handleError(_0x32ffbc,null));};exports[_0x9cee('0x4f')]=function(_0x5adbc3,_0x14eb1a){return db[_0x9cee('0x47')]['create'](_0x5adbc3[_0x9cee('0x50')],{})['then'](function(_0x495619){var _0x35012f=_0x5adbc3[_0x9cee('0x51')]['get']({'plain':!![]});if(!_0x35012f)throw new Error(_0x9cee('0x52'));if(_0x35012f[_0x9cee('0x53')]===_0x9cee('0x51')){var _0x9d4de1=_0x495619[_0x9cee('0x2c')]({'plain':!![]});var _0x16a200=_0x9cee('0x2d');return db[_0x9cee('0x54')][_0x9cee('0x4e')]({'where':{'name':_0x16a200,'userProfileId':_0x35012f[_0x9cee('0x55')]},'raw':!![]})[_0x9cee('0x2a')](function(_0x164293){if(_0x164293&&_0x164293[_0x9cee('0x56')]===0x0){return db['UserProfileResource'][_0x9cee('0x4f')]({'name':_0x9d4de1[_0x9cee('0x2f')],'resourceId':_0x9d4de1['id'],'type':_0x164293[_0x9cee('0x2f')],'sectionId':_0x164293['id']},{})[_0x9cee('0x2a')](function(){return _0x495619;});}else{return _0x495619;}})['catch'](function(_0x310ecd){logger['error'](_0x9cee('0x57'),_0x310ecd);throw _0x310ecd;});}return _0x495619;})[_0x9cee('0x2a')](respondWithResult(_0x14eb1a,0xc9))[_0x9cee('0x1f')](handleError(_0x14eb1a,null));};exports[_0x9cee('0x29')]=function(_0x31efc9,_0x52a83a){if(_0x31efc9[_0x9cee('0x50')]['id']){delete _0x31efc9[_0x9cee('0x50')]['id'];}return db[_0x9cee('0x47')]['find']({'where':{'id':_0x31efc9['params']['id']},'include':[{'model':db[_0x9cee('0x31')],'as':_0x9cee('0x32')}]})[_0x9cee('0x2a')](handleEntityNotFound(_0x52a83a,null))[_0x9cee('0x2a')](saveUpdates(_0x31efc9[_0x9cee('0x50')],null))['then'](respondWithResult(_0x52a83a,null))[_0x9cee('0x1f')](handleError(_0x52a83a,null));};exports[_0x9cee('0x2b')]=function(_0x3ef873,_0x57650b){return db[_0x9cee('0x47')][_0x9cee('0x4e')]({'where':{'id':_0x3ef873[_0x9cee('0x4c')]['id']}})[_0x9cee('0x2a')](handleEntityNotFound(_0x57650b,null))[_0x9cee('0x2a')](removeEntity(_0x57650b,null))[_0x9cee('0x1f')](handleError(_0x57650b,null));};exports[_0x9cee('0x58')]=function(_0x112827,_0x198f6d){return db[_0x9cee('0x47')][_0x9cee('0x58')]()[_0x9cee('0x2a')](respondWithResult(_0x198f6d,null))[_0x9cee('0x1f')](handleError(_0x198f6d,null));};exports[_0x9cee('0x59')]=function(_0x5e408f,_0xcdad2e){if(_0x5e408f[_0x9cee('0x50')]['id']){delete _0x5e408f[_0x9cee('0x50')]['id'];}return db[_0x9cee('0x47')]['find']({'where':{'id':_0x5e408f[_0x9cee('0x4c')]['id']}})[_0x9cee('0x2a')](handleEntityNotFound(_0xcdad2e,null))[_0x9cee('0x2a')](function(_0x1196c2){if(_0x1196c2){_0x5e408f[_0x9cee('0x50')][_0x9cee('0x5a')]=_0x1196c2['id'];return db[_0x9cee('0x5b')][_0x9cee('0x4f')](_0x5e408f[_0x9cee('0x50')]);}})['then'](respondWithResult(_0xcdad2e,null))[_0x9cee('0x1f')](handleError(_0xcdad2e,null));};exports[_0x9cee('0x5c')]=function(_0x34f9dc,_0x20878e){var _0xbe8195={'raw':![],'where':{}};var _0x495c00={};var _0x148b33={'count':0x0,'rows':[]};return db[_0x9cee('0x47')][_0x9cee('0x5d')]({'where':{'id':_0x34f9dc[_0x9cee('0x4c')]['id']}})[_0x9cee('0x2a')](handleEntityNotFound(_0x20878e,null))[_0x9cee('0x2a')](function(_0x113127){if(_0x113127){_0x495c00['model']=_[_0x9cee('0x38')](db[_0x9cee('0x5b')][_0x9cee('0x5e')]);_0x495c00['query']=_[_0x9cee('0x38')](_0x34f9dc[_0x9cee('0x37')]);_0x495c00[_0x9cee('0x39')]=_[_0x9cee('0x3b')](_0x495c00[_0x9cee('0x3a')],_0x495c00[_0x9cee('0x37')]);_0xbe8195[_0x9cee('0x3d')]=_[_0x9cee('0x3b')](_0x495c00[_0x9cee('0x3a')],qs[_0x9cee('0x3c')](_0x34f9dc[_0x9cee('0x37')][_0x9cee('0x3c')]));_0xbe8195[_0x9cee('0x3d')]=_0xbe8195['attributes'][_0x9cee('0x4d')]?_0xbe8195['attributes']:_0x495c00['model'];if(!_0x34f9dc[_0x9cee('0x37')][_0x9cee('0x3e')](_0x9cee('0x3f'))){_0xbe8195[_0x9cee('0x27')]=qs[_0x9cee('0x27')](_0x34f9dc[_0x9cee('0x37')][_0x9cee('0x27')]);_0xbe8195[_0x9cee('0x24')]=qs[_0x9cee('0x24')](_0x34f9dc[_0x9cee('0x37')][_0x9cee('0x24')]);}_0xbe8195['order']=qs[_0x9cee('0x40')](_0x34f9dc[_0x9cee('0x37')]['sort']);_0xbe8195[_0x9cee('0x41')]=qs[_0x9cee('0x39')](_['pick'](_0x34f9dc[_0x9cee('0x37')],_0x495c00[_0x9cee('0x39')]));_0xbe8195[_0x9cee('0x41')]['ChatWebsiteId']=_0x113127['id'];if(_0x34f9dc[_0x9cee('0x37')]['filter']){_0xbe8195[_0x9cee('0x41')]=_[_0x9cee('0x44')](_0xbe8195[_0x9cee('0x41')],{'$or':_[_0x9cee('0x33')](_0xbe8195['attributes'],function(_0x9ee58){var _0x7e9db8={};_0x7e9db8[_0x9ee58]={'$like':'%'+_0x34f9dc['query'][_0x9cee('0x43')]+'%'};return _0x7e9db8;})});}_0xbe8195=_['merge']({},_0xbe8195,_0x34f9dc[_0x9cee('0x46')]);return db[_0x9cee('0x5b')][_0x9cee('0x26')]({'where':_0xbe8195[_0x9cee('0x41')]})['then'](function(_0x1835a7){_0x148b33[_0x9cee('0x26')]=_0x1835a7;if(_0x34f9dc[_0x9cee('0x37')][_0x9cee('0x48')]){_0xbe8195[_0x9cee('0x49')]=[{'all':!![]}];}return db['Disposition'][_0x9cee('0x4a')](_0xbe8195);})[_0x9cee('0x2a')](function(_0x3f6863){_0x148b33[_0x9cee('0x4b')]=_0x3f6863;return _0x148b33;});}})[_0x9cee('0x2a')](respondWithFilteredResult(_0x20878e,_0xbe8195))[_0x9cee('0x1f')](handleError(_0x20878e,null));};exports['removeDispositions']=function(_0xa28557,_0x138ed6){return db[_0x9cee('0x47')]['find']({'where':{'id':_0xa28557['params']['id']}})[_0x9cee('0x2a')](handleEntityNotFound(_0x138ed6,null))['then'](function(_0x33d149){if(_0x33d149){return _0x33d149[_0x9cee('0x5f')](_0xa28557[_0x9cee('0x37')][_0x9cee('0x60')]);}})['then'](respondWithStatusCode(_0x138ed6,null))[_0x9cee('0x1f')](handleError(_0x138ed6,null));};exports[_0x9cee('0x61')]=function(_0x50f63d,_0xec2463){if(_0x50f63d['body']['id']){delete _0x50f63d[_0x9cee('0x50')]['id'];}return db['ChatWebsite'][_0x9cee('0x4e')]({'where':{'id':_0x50f63d['params']['id']}})[_0x9cee('0x2a')](handleEntityNotFound(_0xec2463,null))[_0x9cee('0x2a')](function(_0x26e6ae){if(_0x26e6ae){_0x50f63d['body'][_0x9cee('0x5a')]=_0x26e6ae['id'];return db['CannedAnswer'][_0x9cee('0x4f')](_0x50f63d[_0x9cee('0x50')]);}})[_0x9cee('0x2a')](respondWithResult(_0xec2463,null))['catch'](handleError(_0xec2463,null));};exports[_0x9cee('0x62')]=function(_0x4ec3b3,_0x32eca0){var _0x97ebcf={'raw':![],'where':{}};var _0x4d3fe5={};var _0x4e59ef={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x9cee('0x5d')]({'where':{'id':_0x4ec3b3[_0x9cee('0x4c')]['id']}})[_0x9cee('0x2a')](handleEntityNotFound(_0x32eca0,null))[_0x9cee('0x2a')](function(_0x306989){if(_0x306989){_0x4d3fe5[_0x9cee('0x3a')]=_[_0x9cee('0x38')](db[_0x9cee('0x63')][_0x9cee('0x5e')]);_0x4d3fe5[_0x9cee('0x37')]=_[_0x9cee('0x38')](_0x4ec3b3['query']);_0x4d3fe5[_0x9cee('0x39')]=_[_0x9cee('0x3b')](_0x4d3fe5['model'],_0x4d3fe5[_0x9cee('0x37')]);_0x97ebcf['attributes']=_[_0x9cee('0x3b')](_0x4d3fe5['model'],qs[_0x9cee('0x3c')](_0x4ec3b3['query'][_0x9cee('0x3c')]));_0x97ebcf[_0x9cee('0x3d')]=_0x97ebcf[_0x9cee('0x3d')]['length']?_0x97ebcf[_0x9cee('0x3d')]:_0x4d3fe5[_0x9cee('0x3a')];if(!_0x4ec3b3[_0x9cee('0x37')][_0x9cee('0x3e')](_0x9cee('0x3f'))){_0x97ebcf['limit']=qs[_0x9cee('0x27')](_0x4ec3b3[_0x9cee('0x37')]['limit']);_0x97ebcf[_0x9cee('0x24')]=qs['offset'](_0x4ec3b3[_0x9cee('0x37')][_0x9cee('0x24')]);}_0x97ebcf[_0x9cee('0x64')]=qs[_0x9cee('0x40')](_0x4ec3b3['query'][_0x9cee('0x40')]);_0x97ebcf[_0x9cee('0x41')]=qs['filters'](_[_0x9cee('0x42')](_0x4ec3b3[_0x9cee('0x37')],_0x4d3fe5[_0x9cee('0x39')]));_0x97ebcf[_0x9cee('0x41')][_0x9cee('0x5a')]=_0x306989['id'];if(_0x4ec3b3[_0x9cee('0x37')][_0x9cee('0x43')]){_0x97ebcf[_0x9cee('0x41')]=_[_0x9cee('0x44')](_0x97ebcf[_0x9cee('0x41')],{'$or':_[_0x9cee('0x33')](_0x97ebcf[_0x9cee('0x3d')],function(_0x3c7567){var _0x1ce0fa={};_0x1ce0fa[_0x3c7567]={'$like':'%'+_0x4ec3b3[_0x9cee('0x37')][_0x9cee('0x43')]+'%'};return _0x1ce0fa;})});}_0x97ebcf=_[_0x9cee('0x44')]({},_0x97ebcf,_0x4ec3b3[_0x9cee('0x46')]);return db[_0x9cee('0x63')][_0x9cee('0x26')]({'where':_0x97ebcf['where']})[_0x9cee('0x2a')](function(_0x1d74b7){_0x4e59ef['count']=_0x1d74b7;if(_0x4ec3b3[_0x9cee('0x37')][_0x9cee('0x48')]){_0x97ebcf[_0x9cee('0x49')]=[{'all':!![]}];}return db[_0x9cee('0x63')][_0x9cee('0x4a')](_0x97ebcf);})[_0x9cee('0x2a')](function(_0x1be144){_0x4e59ef[_0x9cee('0x4b')]=_0x1be144;return _0x4e59ef;});}})['then'](respondWithFilteredResult(_0x32eca0,_0x97ebcf))[_0x9cee('0x1f')](handleError(_0x32eca0,null));};exports[_0x9cee('0x65')]=function(_0x37f7a8,_0x13dc89){return db['ChatWebsite']['find']({'where':{'id':_0x37f7a8[_0x9cee('0x4c')]['id']}})[_0x9cee('0x2a')](handleEntityNotFound(_0x13dc89,null))[_0x9cee('0x2a')](function(_0x139c13){if(_0x139c13){return _0x139c13[_0x9cee('0x65')](_0x37f7a8[_0x9cee('0x37')][_0x9cee('0x60')]);}})[_0x9cee('0x2a')](respondWithStatusCode(_0x13dc89,null))['catch'](handleError(_0x13dc89,null));};exports[_0x9cee('0x66')]=function(_0x51f693,_0x4cbd5b){_0x51f693[_0x9cee('0x50')][_0x9cee('0x67')]=_0x51f693[_0x9cee('0x68')][_0x9cee('0x69')];return db[_0x9cee('0x47')][_0x9cee('0x4e')]({'where':{'id':_0x51f693[_0x9cee('0x4c')]['id']}})[_0x9cee('0x2a')](handleEntityNotFound(_0x4cbd5b,null))['then'](saveUpdates(_0x51f693[_0x9cee('0x50')],null))[_0x9cee('0x2a')](respondWithResult(_0x4cbd5b,null))[_0x9cee('0x1f')](handleError(_0x4cbd5b,null));};exports[_0x9cee('0x6a')]=function(_0x101c4a,_0x4349c0){_0x101c4a[_0x9cee('0x50')][_0x9cee('0x6b')]=_0x101c4a['file'][_0x9cee('0x69')];return db[_0x9cee('0x47')]['find']({'where':{'id':_0x101c4a[_0x9cee('0x4c')]['id']}})[_0x9cee('0x2a')](handleEntityNotFound(_0x4349c0,null))[_0x9cee('0x2a')](saveUpdates(_0x101c4a[_0x9cee('0x50')],null))[_0x9cee('0x2a')](respondWithResult(_0x4349c0,null))[_0x9cee('0x1f')](handleError(_0x4349c0,null));};exports[_0x9cee('0x6c')]=function(_0x3e232c,_0x48ee9){_0x3e232c[_0x9cee('0x50')][_0x9cee('0x6d')]=_0x3e232c[_0x9cee('0x68')][_0x9cee('0x69')];return db[_0x9cee('0x47')][_0x9cee('0x4e')]({'where':{'id':_0x3e232c[_0x9cee('0x4c')]['id']}})[_0x9cee('0x2a')](handleEntityNotFound(_0x48ee9,null))[_0x9cee('0x2a')](saveUpdates(_0x3e232c['body'],null))[_0x9cee('0x2a')](respondWithResult(_0x48ee9,null))[_0x9cee('0x1f')](handleError(_0x48ee9,null));};exports['addSystemAvatar']=function(_0x3f1ddc,_0x3fc7df){_0x3f1ddc[_0x9cee('0x50')][_0x9cee('0x6e')]=_0x3f1ddc[_0x9cee('0x68')]['filename'];return db[_0x9cee('0x47')]['find']({'where':{'id':_0x3f1ddc[_0x9cee('0x4c')]['id']}})[_0x9cee('0x2a')](handleEntityNotFound(_0x3fc7df,null))[_0x9cee('0x2a')](saveUpdates(_0x3f1ddc['body'],null))[_0x9cee('0x2a')](respondWithResult(_0x3fc7df,null))[_0x9cee('0x1f')](handleError(_0x3fc7df,null));};exports[_0x9cee('0x6f')]=function(_0x3bc61d,_0x602cf7){var _0x21c668=path['join'](config[_0x9cee('0x70')],_0x9cee('0x71'));var _0x5e5c1c={'where':{'id':_0x3bc61d[_0x9cee('0x4c')]['id']},'attributes':['id',_0x9cee('0x67')],'raw':!![]};var _0x48330b=![];return require(_0x9cee('0x72'))[_0x9cee('0x73')]()[_0x9cee('0x2a')](function(_0x127be8){if(_0x127be8){_0x48330b=_0x127be8[_0x9cee('0x74')];}})[_0x9cee('0x2a')](function(){return db['ChatWebsite'][_0x9cee('0x4e')](_0x5e5c1c);})[_0x9cee('0x2a')](handleEntityNotFound(_0x602cf7,null))[_0x9cee('0x2a')](function(_0x410755){if(_0x410755){if(!_[_0x9cee('0x75')](_0x410755[_0x9cee('0x67')])){if(fs[_0x9cee('0x76')](path[_0x9cee('0x77')](config[_0x9cee('0x70')],_0x9cee('0x78'),_0x410755[_0x9cee('0x67')]))&&_0x48330b){_0x21c668=path[_0x9cee('0x77')](config[_0x9cee('0x70')],_0x9cee('0x78'),_0x410755[_0x9cee('0x67')]);}}return _0x602cf7[_0x9cee('0x79')](_0x21c668);}})['catch'](handleError(_0x602cf7,null));};exports[_0x9cee('0x7a')]=function(_0x51d582,_0x4ca80d){var _0x519ae3=path[_0x9cee('0x77')](config[_0x9cee('0x70')],_0x9cee('0x7b'));var _0x1dc608={'where':{'id':_0x51d582[_0x9cee('0x4c')]['id']},'attributes':['id','agentAvatar'],'raw':!![]};return db['ChatWebsite'][_0x9cee('0x4e')](_0x1dc608)[_0x9cee('0x2a')](handleEntityNotFound(_0x4ca80d,null))['then'](function(_0x598403){if(_0x598403){if(!_[_0x9cee('0x75')](_0x598403[_0x9cee('0x6b')])){if(fs['existsSync'](path['join'](config['root'],_0x9cee('0x7c'),_0x598403[_0x9cee('0x6b')]))){_0x519ae3=path[_0x9cee('0x77')](config['root'],'server/files/images/avatars/',_0x598403[_0x9cee('0x6b')]);}}return _0x4ca80d[_0x9cee('0x79')](_0x519ae3);}})[_0x9cee('0x1f')](handleError(_0x4ca80d,null));};exports[_0x9cee('0x7d')]=function(_0x4bd009,_0x29ce31){var _0x4e28e4=path[_0x9cee('0x77')](config['root'],'server/files/images/avatars/customer_avatar.png');var _0x5ec395={'where':{'id':_0x4bd009[_0x9cee('0x4c')]['id']},'attributes':['id',_0x9cee('0x6d'),_0x9cee('0x7e')],'raw':!![]};return db[_0x9cee('0x47')][_0x9cee('0x4e')](_0x5ec395)[_0x9cee('0x2a')](handleEntityNotFound(_0x29ce31,null))[_0x9cee('0x2a')](function(_0x593a94){if(_0x593a94){if(!_[_0x9cee('0x75')](_0x593a94[_0x9cee('0x6d')])){if(fs[_0x9cee('0x76')](path[_0x9cee('0x77')](config[_0x9cee('0x70')],_0x9cee('0x7c'),_0x593a94[_0x9cee('0x6d')]))&&_0x593a94[_0x9cee('0x7e')]){_0x4e28e4=path[_0x9cee('0x77')](config[_0x9cee('0x70')],_0x9cee('0x7c'),_0x593a94[_0x9cee('0x6d')]);}}return _0x29ce31[_0x9cee('0x79')](_0x4e28e4);}})[_0x9cee('0x1f')](handleError(_0x29ce31,null));};exports['getSystemAvatar']=function(_0x50dea0,_0x1c6a70){var _0x2bd61b=path['join'](config[_0x9cee('0x70')],_0x9cee('0x7f'));var _0x3cfe2a={'where':{'id':_0x50dea0[_0x9cee('0x4c')]['id']},'attributes':['id','systemAvatar'],'raw':!![]};return db[_0x9cee('0x47')]['find'](_0x3cfe2a)[_0x9cee('0x2a')](handleEntityNotFound(_0x1c6a70,null))[_0x9cee('0x2a')](function(_0x24219d){if(_0x24219d){if(!_[_0x9cee('0x75')](_0x24219d[_0x9cee('0x6e')])){if(fs['existsSync'](path[_0x9cee('0x77')](config[_0x9cee('0x70')],_0x9cee('0x7c'),_0x24219d[_0x9cee('0x6e')]))){_0x2bd61b=path[_0x9cee('0x77')](config[_0x9cee('0x70')],'server/files/images/avatars/',_0x24219d['systemAvatar']);}}return _0x1c6a70[_0x9cee('0x79')](_0x2bd61b);}})[_0x9cee('0x1f')](handleError(_0x1c6a70,null));};exports[_0x9cee('0x80')]=function(_0x5e2b81,_0x38fc9d){var _0x1c920c=require(_0x9cee('0x81'));var _0x34d5dc=new _0x1c920c();var _0x192a76=_0x34d5dc['setUA'](_0x5e2b81[_0x9cee('0x82')][_0x9cee('0x83')])[_0x9cee('0x84')]();var _0x383d6a={'body':_0x5e2b81[_0x9cee('0x50')],'channel':_0x9cee('0x85')};var _0x539c86=[];var _0x5a4870=[];var _0x19d22a={};var _0x33ed8f=![];return db[_0x9cee('0x86')]['describe']()[_0x9cee('0x2a')](function(_0x5eb4d0){if(!_0x5eb4d0){throw new db['Sequelize'][(_0x9cee('0x87'))](_0x9cee('0x88'));}_0x539c86=_[_0x9cee('0x89')](_['keys'](_0x5eb4d0),[_0x9cee('0x8a'),_0x9cee('0x8b')]);_0x5a4870=_[_0x9cee('0x89')](_['keys'](_0x5eb4d0),[_0x9cee('0x8a'),_0x9cee('0x8b'),'CompanyId',_0x9cee('0x8c')]);if(_0x5e2b81[_0x9cee('0x50')]['id']){delete _0x5e2b81['body']['id'];}if(_['isNil'](_0x5e2b81[_0x9cee('0x50')][_0x9cee('0x8d')])){throw new db[(_0x9cee('0x8e'))]['ValidationError'](_0x9cee('0x8f'));}if(_[_0x9cee('0x75')](_0x5e2b81['body'][_0x9cee('0x50')])||_0x5e2b81[_0x9cee('0x50')][_0x9cee('0x50')]===''){throw new db[(_0x9cee('0x8e'))][(_0x9cee('0x87'))](_0x9cee('0x90'));}if(_[_0x9cee('0x75')](_0x5e2b81['body'][_0x9cee('0x91')])){throw new db[(_0x9cee('0x8e'))]['ValidationError']('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x5a4870);}if(!_[_0x9cee('0x92')](_0x5a4870,_0x5e2b81[_0x9cee('0x50')][_0x9cee('0x91')])){throw new db[(_0x9cee('0x8e'))]['ValidationError'](_0x9cee('0x93')+_0x5a4870);}_0x19d22a[_0x5e2b81[_0x9cee('0x50')][_0x9cee('0x91')]]=_0x5e2b81[_0x9cee('0x50')][_0x9cee('0x8d')];})[_0x9cee('0x2a')](function(){return db['ChatWebsite'][_0x9cee('0x4e')]({'where':{'id':_0x5e2b81[_0x9cee('0x4c')]['id']},'include':[{'model':db[_0x9cee('0x94')],'as':_0x9cee('0x95'),'include':[{'model':db[_0x9cee('0x86')],'as':'Contacts','where':_0x19d22a,'limit':0x1,'order':[[_0x9cee('0x8b'),_0x9cee('0x96')]]}]},{'model':db['ChatApplication'],'as':_0x9cee('0x97')}]});})[_0x9cee('0x2a')](handleEntityNotFound(_0x38fc9d,null))[_0x9cee('0x2a')](function(_0xb66e10){if(_0xb66e10&&_0xb66e10[_0x9cee('0x95')]){_0x383d6a[_0x9cee('0x98')]=_0xb66e10;_0x383d6a[_0x9cee('0x99')]=_0xb66e10[_0x9cee('0x97')];_0x383d6a['list']=_0xb66e10['List'];_0x383d6a[_0x9cee('0x99')]=_[_0x9cee('0x9a')](_0x383d6a['applications'],[_0x9cee('0x9b')],[_0x9cee('0x9c')]);if(_0x383d6a[_0x9cee('0x98')]['Applications']){delete _0x383d6a[_0x9cee('0x98')]['Applications'];}if(_0x383d6a['account'][_0x9cee('0x95')]&&_0x383d6a['account'][_0x9cee('0x95')][_0x9cee('0x9d')][_0x9cee('0x4d')]){return _0x383d6a[_0x9cee('0x98')][_0x9cee('0x95')][_0x9cee('0x9d')][0x0];}var _0x4c7238=_[_0x9cee('0xc')](_0x5e2b81[_0x9cee('0x50')],{'firstName':_0x5e2b81[_0x9cee('0x50')][_0x9cee('0x8d')],'ListId':_0xb66e10[_0x9cee('0x8c')]});_0x4c7238[_0x5e2b81[_0x9cee('0x50')][_0x9cee('0x91')]]=_0x5e2b81[_0x9cee('0x50')]['from'];return db[_0x9cee('0x86')][_0x9cee('0x4f')](_0x4c7238,{'fields':_0x539c86,'raw':!![]});}})[_0x9cee('0x2a')](handleEntityNotFound(_0x38fc9d,null))[_0x9cee('0x2a')](function(_0x127657){_0x383d6a['contact']=_0x127657;var _0x42e94d=_0x5e2b81['body'][_0x9cee('0x9e')];if(_0x5e2b81[_0x9cee('0x82')]['cf-connecting-ip']){_0x42e94d=_0x5e2b81[_0x9cee('0x82')][_0x9cee('0x9f')];}else if(_0x5e2b81[_0x9cee('0x82')][_0x9cee('0xa0')]){_0x42e94d=_[_0x9cee('0xa1')](_0x5e2b81['headers'][_0x9cee('0xa0')][_0x9cee('0xa2')](','));}if(_0x127657){var _0x107130={'ContactId':_0x127657['id'],'ChatWebsiteId':_0x5e2b81[_0x9cee('0x4c')]['id'],'from':(_0x127657[_0x9cee('0xa3')]||'')+'\x20'+(_0x127657['lastName']||''),'customerIp':_0x42e94d,'customerPort':_0x5e2b81[_0x9cee('0x82')][_0x9cee('0xa4')]?_0x5e2b81[_0x9cee('0x82')][_0x9cee('0xa4')]:null,'referer':_0x5e2b81[_0x9cee('0x50')][_0x9cee('0xa5')],'browserName':_0x192a76[_0x9cee('0xa6')][_0x9cee('0x2f')]&&_0x192a76[_0x9cee('0xa6')][_0x9cee('0xa7')]?util['format']('%s\x20%s',_0x192a76[_0x9cee('0xa6')][_0x9cee('0x2f')],_0x192a76[_0x9cee('0xa6')][_0x9cee('0xa7')]):_0x9cee('0xa8'),'browserVersion':_0x192a76[_0x9cee('0xa6')][_0x9cee('0xa7')]||_0x9cee('0xa8'),'osName':util[_0x9cee('0xa9')](_0x9cee('0xaa'),_0x192a76['os'][_0x9cee('0x2f')],_0x192a76['os'][_0x9cee('0xa7')]),'osVersion':_0x192a76['os'][_0x9cee('0xa7')],'deviceModel':_0x192a76['device'][_0x9cee('0x3a')]&&_0x192a76[_0x9cee('0xab')][_0x9cee('0xac')]?util[_0x9cee('0xa9')](_0x9cee('0xad'),_0x192a76['device'][_0x9cee('0x3a')],_0x192a76[_0x9cee('0xab')]['vendor'],_0x192a76[_0x9cee('0xab')][_0x9cee('0x35')]):null,'deviceVendor':_0x192a76[_0x9cee('0xab')]['vendor'],'deviceType':_0x192a76[_0x9cee('0xab')]['type'],'formData':JSON[_0x9cee('0x1a')](_0x5e2b81['body'])};var _0x24f3ea={'ChatWebsiteId':_0x5e2b81[_0x9cee('0x4c')]['id'],'closed':![]};if(_0x5e2b81[_0x9cee('0x50')]['threadId']){_0x24f3ea[_0x9cee('0xae')]=_0x5e2b81[_0x9cee('0x50')][_0x9cee('0xae')];return db['ChatInteraction']['find']({'where':_0x24f3ea})[_0x9cee('0x2a')](function(_0x208eb4){if(_0x208eb4){return[_0x208eb4,![]];}_0x107130[_0x9cee('0xae')]=_0x5e2b81[_0x9cee('0x50')][_0x9cee('0xae')];_0x107130['externalUrl']=_0x5e2b81['body'][_0x9cee('0xaf')];return db['ChatInteraction']['create'](_0x107130)[_0x9cee('0x2a')](function(_0xd2b8f){return[_0xd2b8f,!![]];});});}_0x24f3ea['ContactId']=_0x127657['id'];if(_0x5e2b81[_0x9cee('0x50')][_0x9cee('0xb0')]&&_0x5e2b81['body'][_0x9cee('0xb0')]['id']){_0x24f3ea['id']=_0x5e2b81[_0x9cee('0x50')][_0x9cee('0xb0')]['id'];return db[_0x9cee('0xb1')][_0x9cee('0x4e')]({'where':_0x24f3ea})[_0x9cee('0x2a')](function(_0x11f244){if(_0x11f244){return[_0x11f244,![]];}return db[_0x9cee('0xb1')]['create'](_0x107130)['then'](function(_0x3ba13c){return[_0x3ba13c,!![]];});});}return db[_0x9cee('0xb1')]['create'](_0x107130)[_0x9cee('0x2a')](function(_0x287217){return[_0x287217,!![]];});}})[_0x9cee('0xb2')](function(_0x3076d2,_0x44908a){if(_0x3076d2){_0x33ed8f=_0x44908a;if(!_0x44908a){var _0x296ad6={'from':(_0x383d6a[_0x9cee('0xb3')][_0x9cee('0xa3')]||'')+'\x20'+(_0x383d6a[_0x9cee('0xb3')][_0x9cee('0xb4')]||'')};if(_0x5e2b81[_0x9cee('0x50')][_0x9cee('0xae')]&&_0x5e2b81['body'][_0x9cee('0xb5')]&&_0x5e2b81[_0x9cee('0x50')]['threadId']!=_0x5e2b81[_0x9cee('0x50')][_0x9cee('0xb5')]){_0x296ad6[_0x9cee('0xae')]=_0x5e2b81[_0x9cee('0x50')]['messageId'];}return _0x3076d2['update'](_0x296ad6);}else{return _0x3076d2;}}})[_0x9cee('0x2a')](function(_0x4a3b26){_0x383d6a[_0x9cee('0xb0')]=_0x4a3b26[_0x9cee('0x2c')]({'plain':!![]});_0x383d6a[_0x9cee('0xb0')][_0x9cee('0xb6')]=_0x33ed8f;if(_0x383d6a[_0x9cee('0xb0')]['created']){if(_0x383d6a[_0x9cee('0x98')][_0x9cee('0xb7')]){_0x383d6a[_0x9cee('0x99')][_0x9cee('0xb8')]({'id':0x0,'priority':_0x383d6a['applications'][_0x9cee('0x4d')]+0x1,'app':'close','appdata':_0x9cee('0xb9'),'interval':_0x9cee('0xba')});}}return db[_0x9cee('0xbb')]['create']({'body':_0x5e2b81[_0x9cee('0x50')][_0x9cee('0x50')],'ChatWebsiteId':_0x5e2b81[_0x9cee('0x4c')]['id'],'ChatInteractionId':_0x4a3b26['id'],'direction':'in','ContactId':_0x383d6a['contact']['id'],'AttachmentId':_0x5e2b81[_0x9cee('0x50')][_0x9cee('0xbc')]});})[_0x9cee('0x2a')](function(_0x1149d5){_0x383d6a[_0x9cee('0x1d')]=_0x1149d5;if(_0x383d6a[_0x9cee('0xb0')][_0x9cee('0xbd')]){return db[_0x9cee('0xbe')][_0x9cee('0x4e')]({'attributes':['id',_0x9cee('0x2f')],'where':{'id':_0x383d6a[_0x9cee('0xb0')][_0x9cee('0xbd')]}})['then'](function(_0x29e1a6){if(_0x29e1a6){_0x383d6a[_0x9cee('0x99')][_0x9cee('0xbf')]({'id':0x0,'priority':0x0,'app':_0x9cee('0xc0'),'appdata':_0x29e1a6[_0x9cee('0x2f')]+','+(_0x383d6a[_0x9cee('0x98')]['waitForTheAssignedAgent']||0xa),'interval':_0x9cee('0xba')});_0x383d6a[_0x9cee('0xc1')]=!![];}return respondWithRpcPromise(_0x9cee('0xc2'),_0x9cee('0xc3'),_0x383d6a);});}return respondWithRpcPromise('Start','startRouting',_0x383d6a);})['then'](function(_0x30eecc){respondWithRpcPromise(_0x9cee('0xc4'),_0x9cee('0xc4'),{'event':_0x9cee('0x80'),'message':_0x30eecc},client9002);return _0x30eecc;})[_0x9cee('0x2a')](respondWithResult(_0x38fc9d,null))['catch'](handleError(_0x38fc9d,null));};exports[_0x9cee('0xc5')]=function(_0x48a957,_0xd48390){var _0x2c5e74,_0x54d12e,_0x295a24;var _0x456026=[];var _0x4c69c4={};var _0x49c643=_0x48a957['files']||[];var _0x31aa96=[];var _0x2dc850;return db[_0x9cee('0x86')][_0x9cee('0x58')]()[_0x9cee('0x2a')](function(_0x3a84bc){if(!_0x3a84bc){throw new db[(_0x9cee('0x8e'))][(_0x9cee('0x87'))]('no\x20available\x20attributes');}_0x456026=_[_0x9cee('0x89')](_[_0x9cee('0x38')](_0x3a84bc),[_0x9cee('0x8a'),'updatedAt',_0x9cee('0xc6'),_0x9cee('0x8c')]);if(_0x48a957['body']['id']){delete _0x48a957[_0x9cee('0x50')]['id'];}if(_[_0x9cee('0x75')](_0x48a957[_0x9cee('0x50')][_0x9cee('0x8d')])){throw _0xd48390[_0x9cee('0x22')](0x1f4)[_0x9cee('0x30')](new db['Sequelize'][(_0x9cee('0x87'))]('from\x20is\x20mandatory'));}if(_['isNil'](_0x48a957[_0x9cee('0x50')]['body'])||_0x48a957['body'][_0x9cee('0x50')]===''){throw _0xd48390[_0x9cee('0x22')](0x1f4)[_0x9cee('0x30')](new db[(_0x9cee('0x8e'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0x9cee('0x75')](_0x48a957[_0x9cee('0x50')][_0x9cee('0xc7')])){throw _0xd48390[_0x9cee('0x22')](0x1f4)[_0x9cee('0x30')](new db[(_0x9cee('0x8e'))][(_0x9cee('0x87'))]('mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x456026));}if(!_[_0x9cee('0x92')](_0x456026,_0x48a957['body']['mapKeyOffline'])){throw _0xd48390[_0x9cee('0x22')](0x1f4)[_0x9cee('0x30')](new db[(_0x9cee('0x8e'))][(_0x9cee('0x87'))](_0x9cee('0xc8')+_0x456026));}_0x4c69c4[_0x48a957['body'][_0x9cee('0xc7')]]=_0x48a957[_0x9cee('0x50')][_0x9cee('0x8d')];})[_0x9cee('0x2a')](function(){return db['ChatWebsite'][_0x9cee('0x4e')]({'where':{'id':_0x48a957[_0x9cee('0x4c')]['id']},'include':[{'model':db[_0x9cee('0x94')],'as':_0x9cee('0x95')},{'model':db[_0x9cee('0xc9')],'as':_0x9cee('0xc9')}]});})[_0x9cee('0x2a')](handleEntityNotFound(_0xd48390,null))[_0x9cee('0x2a')](function(_0x3c5ba2){if(_0x3c5ba2&&_0x3c5ba2[_0x9cee('0x95')]){_0x54d12e=_0x3c5ba2;var _0x548c63=_[_0x9cee('0xc')](_0x48a957[_0x9cee('0x50')],{'firstName':_0x48a957[_0x9cee('0x50')][_0x9cee('0x8d')],'phone':_0x48a957[_0x9cee('0x50')][_0x9cee('0x8d')],'ListId':_0x3c5ba2[_0x9cee('0x8c')]});_0x548c63[_0x48a957[_0x9cee('0x50')][_0x9cee('0xc7')]]=_0x48a957[_0x9cee('0x50')]['from'];return db[_0x9cee('0x86')]['findOrCreate']({'where':_0x4c69c4,'defaults':_0x548c63});}})['spread'](function(_0x1abdc6){if(_0x1abdc6){_0x295a24=_0x1abdc6;var _0x1a9e7e=fs['readFileSync'](path['join'](config[_0x9cee('0x70')],_0x9cee('0xca')),'utf8');var _0x5180e9=ejs[_0x9cee('0xcb')](_0x1a9e7e,{'body':_[_0x9cee('0xcc')](_0x48a957['body'][_0x9cee('0x50')]),'bodyTitle':_0x54d12e[_0x9cee('0xcd')]});return db[_0x9cee('0xce')][_0x9cee('0x4f')]({'body':_0x5180e9,'plainBody':htmlToText[_0x9cee('0xcf')](_0x5180e9),'ContactId':_0x1abdc6['id'],'ChatWebsiteId':_0x54d12e['id']});}})[_0x9cee('0x2a')](function(_0x17ef1d){_0x2dc850=_0x17ef1d;if(_0x49c643[_0x9cee('0x4d')]){var _0x1d6baf=_0x49c643['map'](function(_0x57dec5){return{'name':_0x57dec5[_0x9cee('0xd0')],'basename':_0x57dec5[_0x9cee('0x69')],'type':_0x57dec5[_0x9cee('0xd1')],'ChatOfflineMessageId':_0x17ef1d['id']};});_0x31aa96=_0x1d6baf[_0x9cee('0x33')](_0x39a315=>{var _0x4b60cd={'filename':_0x39a315[_0x9cee('0x2f')],'path':path[_0x9cee('0x77')](config[_0x9cee('0x70')],_0x9cee('0xd2'),_0x9cee('0xd3'),'attachments',_0x9cee('0xd4'),_0x39a315[_0x9cee('0xd5')])};return _0x4b60cd;});if(!_0x54d12e['openNewInteraction']){return db['sequelize']['transaction'](function(_0x2638d4){return db[_0x9cee('0xd6')][_0x9cee('0xd7')](_0x1d6baf,{'transaction':_0x2638d4});});}}})[_0x9cee('0x2a')](function(){if(_0x2dc850){_0x2c5e74=_0x2dc850;return db[_0x9cee('0xc9')]['findOne']({'where':{'service':!![]},'include':[{'model':db[_0x9cee('0xd8')],'as':_0x9cee('0xd9'),'raw':!![],'include':[{'model':db['CloudProvider'],'as':_0x9cee('0xda'),'raw':!![]}]}]});}})[_0x9cee('0x2a')](function(_0x1fa973){if(_0x1fa973&&_0x1fa973[_0x9cee('0xd9')]&&_0x54d12e[_0x9cee('0xdb')]&&_0x54d12e['forwardOfflineAddress']){var _0x4f1979=_0x1fa973[_0x9cee('0xdc')]();return respondWithRpcPromise(_0x9cee('0xdd'),_0x9cee('0xde'),{'account':_0x4f1979,'message':{'from':util[_0x9cee('0xa9')](_0x9cee('0xdf'),_0x1fa973[_0x9cee('0x2f')],_0x1fa973[_0x9cee('0xe0')]||_0x1fa973[_0x9cee('0xd9')][_0x9cee('0x51')]),'to':_0x54d12e['forwardOfflineAddress'],'subject':_0x54d12e['offlineMessageSubject'],'html':_0x2c5e74[_0x9cee('0x50')],'attachments':_0x31aa96}},client9003)['then'](function(){return _0x2c5e74;})[_0x9cee('0x1f')](function(_0x24d0f9){logger[_0x9cee('0x1b')](_0x24d0f9);});}})[_0x9cee('0x2a')](function(){if(_0x54d12e&&_0x54d12e['openNewInteraction']&&_0x54d12e['MailAccountId']){var _0x5c26d0=[];if(_0x49c643[_0x9cee('0x4d')]){_0x5c26d0=_0x49c643['map'](function(_0x3353b){return{'name':_0x3353b['originalname'],'basename':_0x3353b[_0x9cee('0x69')],'type':_0x3353b[_0x9cee('0xd1')],'ChatOfflineMessageId':_0x2dc850['id']};});}var _0x3bc50d;if(!_['isNil'](_0x54d12e[_0x9cee('0xe1')])){var _0x5637c8=_[_0x9cee('0x33')](_0x48a957[_0x9cee('0x50')],function(_0x306228){return _0x306228;});var _0x135357=_[_0x9cee('0xe2')](_0x5637c8)[0x0];var _0x5f5065=_['mapValues'](_0x135357,function(_0x612170){return _0x612170;});_0x3bc50d=_0x5f5065[0x1][_0x54d12e['subjectOffline']];}var _0x38bffb={'from':_0x295a24[_0x9cee('0xe0')],'firstName':_0x295a24[_0x9cee('0xa3')],'lastName':_0x295a24[_0x9cee('0xb4')],'mapKey':'email','message':{'from':_0x295a24['email'],'to':_0x54d12e['MailAccount'][_0x9cee('0xe0')],'cc':'','subject':_[_0x9cee('0x75')](_0x3bc50d)?_0x54d12e[_0x9cee('0xe3')]:_0x3bc50d,'messageId':'','sentAt':new Date(),'attach':_0x5c26d0[_0x9cee('0x4d')],'attachments':_0x5c26d0,'originChannel':_0x9cee('0xe4'),'ChatWebsiteId':_0x54d12e['id'],'ChatOfflineMessageId':_0x2c5e74['id'],'originTo':_0x54d12e[_0x9cee('0xc9')][_0x9cee('0xe0')]},'body':_0x2c5e74[_0x9cee('0x50')]};var _0x13a2f1={'account':{'id':_0x54d12e[_0x9cee('0xe5')]},'body':_0x38bffb,'log':_0x9cee('0xe6')};return respondWithRpcPromise(_0x9cee('0xe6'),'notifyMail',_0x13a2f1,client9001)['then'](function(){return _0x2c5e74;})[_0x9cee('0x1f')](function(_0x202312){logger[_0x9cee('0x1b')](_0x202312);});}return;})[_0x9cee('0x2a')](function(){if(_0x2c5e74){return _0x2c5e74;}})[_0x9cee('0x2a')](respondWithResult(_0xd48390,null))[_0x9cee('0x1f')](function(_0x1d137c){logger[_0x9cee('0x1b')]('catch',_0x1d137c);for(var _0x1beb21 of _0x49c643){var _0x48e4c4=path[_0x9cee('0x77')](config['root'],'server',_0x9cee('0xd3'),'attachments',_0x9cee('0xd4'),_0x1beb21['filename']);fs_extra['remove'](_0x48e4c4)[_0x9cee('0x1f')](function(_0x34c758){logger[_0x9cee('0x1b')](_0x9cee('0xe7'),_0x48e4c4,_0x34c758);});}});};exports[_0x9cee('0xe8')]=function(_0x21d97c,_0x58545b){return db['ChatInteraction'][_0x9cee('0x4e')]({'where':{'id':_0x21d97c[_0x9cee('0x4c')]['id']}})[_0x9cee('0x2a')](handleEntityNotFound(_0x58545b,null))['then'](function(_0x1f3c00){if(_0x1f3c00){return _0x1f3c00[_0x9cee('0xe8')](_0x21d97c['body'][_0x9cee('0x60')],_[_0x9cee('0xe9')](_0x21d97c[_0x9cee('0x50')],[_0x9cee('0x60'),'id'])||{});}})[_0x9cee('0x2a')](respondWithResult(_0x58545b,null))[_0x9cee('0x1f')](handleError(_0x58545b,null));};exports[_0x9cee('0xea')]=function(_0x2d176f,_0x4f0d3b){var _0x91871={'raw':![],'where':{}};var _0x1694ad={};var _0x64eb5f={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x9cee('0x5d')]({'where':{'id':_0x2d176f[_0x9cee('0x4c')]['id']}})[_0x9cee('0x2a')](handleEntityNotFound(_0x4f0d3b,null))['then'](function(_0x3a1b20){if(_0x3a1b20){_0x1694ad[_0x9cee('0x3a')]=_[_0x9cee('0x38')](db[_0x9cee('0xb1')][_0x9cee('0x5e')]);_0x1694ad[_0x9cee('0x37')]=_[_0x9cee('0x38')](_0x2d176f[_0x9cee('0x37')]);_0x1694ad[_0x9cee('0x39')]=_[_0x9cee('0x3b')](_0x1694ad['model'],_0x1694ad[_0x9cee('0x37')]);_0x91871[_0x9cee('0x3d')]=_['intersection'](_0x1694ad['model'],qs[_0x9cee('0x3c')](_0x2d176f['query'][_0x9cee('0x3c')]));_0x91871[_0x9cee('0x3d')]=_0x91871['attributes'][_0x9cee('0x4d')]?_0x91871[_0x9cee('0x3d')]:_0x1694ad['model'];if(!_0x2d176f[_0x9cee('0x37')][_0x9cee('0x3e')](_0x9cee('0x3f'))){_0x91871[_0x9cee('0x27')]=qs['limit'](_0x2d176f[_0x9cee('0x37')][_0x9cee('0x27')]);_0x91871['offset']=qs[_0x9cee('0x24')](_0x2d176f['query'][_0x9cee('0x24')]);}_0x91871[_0x9cee('0x64')]=qs['sort'](_0x2d176f[_0x9cee('0x37')][_0x9cee('0x40')]);_0x91871[_0x9cee('0x41')]=qs[_0x9cee('0x39')](_[_0x9cee('0x42')](_0x2d176f[_0x9cee('0x37')],_0x1694ad[_0x9cee('0x39')]));_0x91871['where'][_0x9cee('0x5a')]=_0x3a1b20['id'];if(_0x2d176f[_0x9cee('0x37')][_0x9cee('0x43')]){_0x91871[_0x9cee('0x41')]=_[_0x9cee('0x44')](_0x91871[_0x9cee('0x41')],{'$or':_[_0x9cee('0x33')](_0x91871[_0x9cee('0x3d')],function(_0x1fdd66){var _0x19e93b={};_0x19e93b[_0x1fdd66]={'$like':'%'+_0x2d176f['query'][_0x9cee('0x43')]+'%'};return _0x19e93b;})});}_0x91871=_[_0x9cee('0x44')]({},_0x91871,_0x2d176f[_0x9cee('0x46')]);return db[_0x9cee('0xb1')][_0x9cee('0x26')]({'where':_0x91871[_0x9cee('0x41')]})['then'](function(_0xc7b2bf){_0x64eb5f[_0x9cee('0x26')]=_0xc7b2bf;if(_0x2d176f[_0x9cee('0x37')][_0x9cee('0x48')]){_0x91871[_0x9cee('0x49')]=[{'model':db['CmContact'],'as':'Contact','required':![]},{'model':db['User'],'as':'Owner','attributes':[_0x9cee('0x2f'),_0x9cee('0xeb'),_0x9cee('0xec')],'required':![]},{'model':db[_0x9cee('0xed')],'as':_0x9cee('0xee'),'attributes':['id',_0x9cee('0x2f'),_0x9cee('0xef')],'where':_0x2d176f[_0x9cee('0x37')][_0x9cee('0xf0')]?{'id':_0x2d176f['query'][_0x9cee('0xf0')]}:undefined,'required':_0x2d176f[_0x9cee('0x37')]['tag']?!![]:![]}];}return db[_0x9cee('0xb1')][_0x9cee('0x4a')](_0x91871);})[_0x9cee('0x2a')](function(_0x1c6355){_0x64eb5f[_0x9cee('0x4b')]=_0x1c6355;return _0x64eb5f;});}})[_0x9cee('0x2a')](respondWithFilteredResult(_0x4f0d3b,_0x91871))['catch'](handleError(_0x4f0d3b,null));};function iftimePromise(_0x52b189,_0x24a26a){return respondWithRpcPromise(_0x9cee('0xf1'),'getSnippet',{'command':_0x24a26a[_0x9cee('0xf2')]?util[_0x9cee('0xa9')](_0x9cee('0xf3'),_0x52b189[_0x9cee('0xf4')],_0x24a26a[_0x9cee('0xf2')]):util[_0x9cee('0xa9')](_0x9cee('0xf5'),_0x52b189[_0x9cee('0xf4')])},client9002)[_0x9cee('0x2a')](function(_0x19f6ee){var _0x184dc5=_0x19f6ee&&_0x19f6ee[_0x9cee('0xf6')](_0x9cee('0xf7'))>=0x0?!![]:![];logger[_0x9cee('0xf8')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x24a26a['id'],_0x52b189['id'],_0x52b189[_0x9cee('0xf4')],_0x184dc5?_0x9cee('0xf9'):_0x9cee('0xfa'),_0x24a26a['timezone']?_0x24a26a['timezone']:_0x9cee('0xfb'));return _0x184dc5;})[_0x9cee('0x1f')](function(_0x209dca){logger['error'](_0x9cee('0xfc'),_0x24a26a['id'],_0x52b189['id'],_0x52b189[_0x9cee('0xf4')],util['inspect'](_0x209dca,{'showHidden':![],'depth':null}),_0x24a26a[_0x9cee('0xf2')]?_0x24a26a['timezone']:'No\x20timezone');return![];});}exports[_0x9cee('0xfd')]=function(_0x4b9cea,_0xcd7e8f){var _0x27a3ff=0x0;var _0x5ae0a2=0x0;var _0x506ad8=![];var _0x8e0bb5;var _0x4acb96;return db[_0x9cee('0x47')][_0x9cee('0x4e')]({'where':{'id':_0x4b9cea[_0x9cee('0x4c')]['id']},'include':[{'model':db[_0x9cee('0xfe')],'as':_0x9cee('0xfe'),'include':[{'model':db[_0x9cee('0xfe')],'as':_0x9cee('0xff'),'attributes':['id',_0x9cee('0xf4')],'raw':!![]}]}]})[_0x9cee('0x2a')](handleEntityNotFound(_0xcd7e8f,null))[_0x9cee('0x2a')](function(_0x20a775){if(_0x20a775){_0x8e0bb5=_0x20a775;return _0x20a775['getProactiveActions']({'raw':!![]});}})[_0x9cee('0x2a')](function(_0x1b402c){if(_0x8e0bb5){if(_0x1b402c){_0x4acb96=_0x1b402c;}}return require(_0x9cee('0x72'))[_0x9cee('0x73')]();})[_0x9cee('0x2a')](function(_0x40ee3c){if(_0x40ee3c){_0x5ae0a2=_0x40ee3c[_0x9cee('0x100')];_0x506ad8=_0x40ee3c[_0x9cee('0x74')];}})[_0x9cee('0x2a')](function(){return db[_0x9cee('0xb1')][_0x9cee('0x26')]({'where':{'closed':![]}});})['then'](function(_0x4f8d72){_0x27a3ff=_0x4f8d72;if(_0x5ae0a2&&_0x4f8d72>_0x5ae0a2){return db[_0x9cee('0x101')][_0x9cee('0x5d')]({'where':{'id':0x1}})['then'](function(_0x2d04f7){if(_0x2d04f7){_0x2d04f7[_0x9cee('0x102')](_0x9cee('0x103'));}});}})[_0x9cee('0x2a')](function(){if(_0x8e0bb5['Interval']&&_0x8e0bb5[_0x9cee('0xfe')][_0x9cee('0xff')]){var _0x3678fb=[];for(var _0x4a1e91=0x0;_0x4a1e91<_0x8e0bb5['Interval'][_0x9cee('0xff')][_0x9cee('0x4d')];_0x4a1e91++){var _0x20d583=_0x8e0bb5[_0x9cee('0xfe')][_0x9cee('0xff')][_0x4a1e91]['get']({'plain':!![]});_0x3678fb[_0x9cee('0xb8')](iftimePromise(_0x20d583,_0x8e0bb5));}return BPromise[_0x9cee('0x104')](_0x3678fb)[_0x9cee('0x2a')](function(_0x56fafd){return _[_0x9cee('0x105')](_0x56fafd);});}else{return!![];}})[_0x9cee('0x2a')](function(_0x1a6240){var _0x3c1bcb=fs['readFileSync'](path['join'](config[_0x9cee('0x70')],_0x9cee('0x106')),_0x9cee('0x107'));var _0x53047f={'remote':_0x8e0bb5['remote'],'query':querystring[_0x9cee('0x1a')](_[_0x9cee('0x44')](_0x8e0bb5['get']({'plain':!![]}),{'customerIp':_0x4b9cea['headers'][_0x9cee('0xa0')]||_0x4b9cea[_0x9cee('0x82')][_0x9cee('0x108')]||_0x4b9cea[_0x9cee('0x109')]['remoteAddress']||_0x4b9cea['ip'],'referer':_0x4b9cea['headers'][_0x9cee('0xa5')],'openedInteractions':_0x27a3ff,'maxInteractions':_0x5ae0a2,'virtual':_0x506ad8['virtual'],'online':_0x1a6240,'custom':_0x506ad8}))['replace'](/'/g,'\x5c\x27')};_0xcd7e8f[_0x9cee('0x30')](ejs[_0x9cee('0xcb')](Mustache[_0x9cee('0xcb')](_0x3c1bcb,_0x53047f),{'proactiveActions':_0x4acb96,'alignment':_0x8e0bb5[_0x9cee('0x10a')],'verticalAlignment':_0x8e0bb5[_0x9cee('0x10b')],'div_color':_0x8e0bb5['color'],'labelText':_0x8e0bb5['labelText'],'text_color':_0x8e0bb5[_0x9cee('0x10c')],'text_button_color':_0x8e0bb5['textButtonColor'],'button_color':_0x8e0bb5[_0x9cee('0x10d')],'background_color':_0x8e0bb5[_0x9cee('0x10e')],'hideWhenOffline':_0x8e0bb5[_0x9cee('0x10f')],'interval':_0x8e0bb5[_0x9cee('0x110')]}));})[_0x9cee('0x1f')](handleError(_0xcd7e8f,null));};exports['addApplications']=function(_0x1d7322,_0xadfdc){var _0x341205=_0x1d7322['params']['id'];var _0x795ad0=_0x1d7322[_0x9cee('0x50')];var _0x4ef619=0xc8;var _0x44df61=null;return db['sequelize'][_0x9cee('0x111')]({'isolationLevel':db[_0x9cee('0x112')][_0x9cee('0x113')][_0x9cee('0x114')][_0x9cee('0x115')]},function(_0x227834){return db[_0x9cee('0x47')][_0x9cee('0x5d')]({'where':{'id':_0x341205},'transaction':_0x227834})[_0x9cee('0x2a')](function(_0x276186){if(_0x276186){return db['ChatApplication'][_0x9cee('0x2b')]({'where':{'ChatWebsiteId':_0x341205},'transaction':_0x227834})['then'](function(){var _0x5d3459=_['map'](_0x795ad0,function(_0x5a2427){_0x5a2427[_0x9cee('0x5a')]=_0x341205;return _0x5a2427;});return db[_0x9cee('0x116')][_0x9cee('0xd7')](_0x5d3459,{'transaction':_0x227834});});}else{_0x4ef619=0x194;_0x44df61=[];}});})[_0x9cee('0x2a')](function(){if(_0x4ef619!==0x194){return db[_0x9cee('0x116')][_0x9cee('0x117')]({'where':{'ChatWebsiteId':_0x341205},'order':_0x9cee('0x9b')})[_0x9cee('0x2a')](function(_0x4a29d3){_0x44df61=_0x4a29d3;});}})[_0x9cee('0x1f')](function(_0x41fdfb){_0x4ef619=0x1f4;logger['error'](_0x41fdfb['stack']);if(_0x41fdfb[_0x9cee('0x2f')]){delete _0x41fdfb['name'];}_0x44df61=_0x41fdfb;})[_0x9cee('0x118')](function(){if(_0x44df61===null){_0xadfdc[_0x9cee('0x20')](_0x4ef619);}else{if(_0x4ef619===0x1f4){_0xadfdc['status'](_0x4ef619)[_0x9cee('0x30')](_0x44df61);}else{_0xadfdc['status'](_0x4ef619)['json'](_0x44df61);}}});};exports['getApplications']=function(_0x356c4f,_0x1735c1){var _0x15df0d={};var _0x353df4={};var _0x24ed6b;var _0x244488;return db[_0x9cee('0x47')][_0x9cee('0x5d')]({'where':{'id':_0x356c4f[_0x9cee('0x4c')]['id']}})[_0x9cee('0x2a')](handleEntityNotFound(_0x1735c1,null))[_0x9cee('0x2a')](function(_0xa6e9ab){if(_0xa6e9ab){_0x24ed6b=_0xa6e9ab;_0x353df4[_0x9cee('0x3a')]=_[_0x9cee('0x38')](db['ChatApplication']['rawAttributes']);_0x353df4[_0x9cee('0x37')]=_[_0x9cee('0x38')](_0x356c4f[_0x9cee('0x37')]);_0x353df4[_0x9cee('0x39')]=_['intersection'](_0x353df4[_0x9cee('0x3a')],_0x353df4[_0x9cee('0x37')]);_0x15df0d[_0x9cee('0x3d')]=_[_0x9cee('0x3b')](_0x353df4[_0x9cee('0x3a')],qs[_0x9cee('0x3c')](_0x356c4f[_0x9cee('0x37')][_0x9cee('0x3c')]));_0x15df0d['attributes']=_0x15df0d[_0x9cee('0x3d')]['length']?_0x15df0d[_0x9cee('0x3d')]:_0x353df4[_0x9cee('0x3a')];_0x15df0d[_0x9cee('0x64')]=qs[_0x9cee('0x40')](_0x356c4f[_0x9cee('0x37')]['sort']);_0x15df0d['where']=qs[_0x9cee('0x39')](_[_0x9cee('0x42')](_0x356c4f[_0x9cee('0x37')],_0x353df4[_0x9cee('0x39')]));if(_0x356c4f[_0x9cee('0x37')][_0x9cee('0x43')]){_0x15df0d['where']=_[_0x9cee('0x44')](_0x15df0d[_0x9cee('0x41')],{'$or':_[_0x9cee('0x33')](_0x15df0d[_0x9cee('0x3d')],function(_0x462dfd){var _0x1f742d={};_0x1f742d[_0x462dfd]={'$like':'%'+_0x356c4f[_0x9cee('0x37')][_0x9cee('0x43')]+'%'};return _0x1f742d;})});}_0x15df0d=_[_0x9cee('0x44')]({},_0x15df0d,_0x356c4f[_0x9cee('0x46')]);return _0x24ed6b['getApplications'](_0x15df0d);}})[_0x9cee('0x2a')](function(_0x1f28d2){if(_0x1f28d2){_0x244488=_0x1f28d2[_0x9cee('0x4d')];if(!_0x356c4f[_0x9cee('0x37')][_0x9cee('0x3e')](_0x9cee('0x3f'))){_0x15df0d[_0x9cee('0x27')]=qs[_0x9cee('0x27')](_0x356c4f[_0x9cee('0x37')][_0x9cee('0x27')]);_0x15df0d[_0x9cee('0x24')]=qs[_0x9cee('0x24')](_0x356c4f['query'][_0x9cee('0x24')]);}return _0x24ed6b['getApplications'](_0x15df0d);}})[_0x9cee('0x2a')](function(_0x3ac511){if(_0x3ac511){return _0x3ac511?{'count':_0x244488,'rows':_0x3ac511}:null;}})['then'](respondWithResult(_0x1735c1,null))[_0x9cee('0x1f')](handleError(_0x1735c1,null));};exports[_0x9cee('0x119')]=function(_0x48a0cd,_0x1b360e){return db['chatProactiveAction'][_0x9cee('0x4e')]({'where':{'id':_0x48a0cd[_0x9cee('0x4c')]['id']}})[_0x9cee('0x2a')](handleEntityNotFound(_0x1b360e,null))[_0x9cee('0x2a')](function(_0x5ccb8e){if(_0x5ccb8e){return _0x5ccb8e[_0x9cee('0x119')](_0x48a0cd[_0x9cee('0x50')]['ids'],_[_0x9cee('0xe9')](_0x48a0cd[_0x9cee('0x50')],['ids','id'])||{});}})[_0x9cee('0x2a')](respondWithResult(_0x1b360e,null))['catch'](handleError(_0x1b360e,null));};exports['getProactiveActions']=function(_0x104205,_0x29841c){var _0x30bd40={};var _0x361c01={};var _0x3e5726;var _0x3faf97;return db[_0x9cee('0x47')]['findOne']({'where':{'id':_0x104205[_0x9cee('0x4c')]['id']}})[_0x9cee('0x2a')](handleEntityNotFound(_0x29841c,null))[_0x9cee('0x2a')](function(_0x2f762c){if(_0x2f762c){_0x3e5726=_0x2f762c;_0x361c01[_0x9cee('0x3a')]=_[_0x9cee('0x38')](db[_0x9cee('0x11a')][_0x9cee('0x5e')]);_0x361c01[_0x9cee('0x37')]=_[_0x9cee('0x38')](_0x104205['query']);_0x361c01[_0x9cee('0x39')]=_[_0x9cee('0x3b')](_0x361c01['model'],_0x361c01[_0x9cee('0x37')]);_0x30bd40[_0x9cee('0x3d')]=_[_0x9cee('0x3b')](_0x361c01[_0x9cee('0x3a')],qs[_0x9cee('0x3c')](_0x104205[_0x9cee('0x37')][_0x9cee('0x3c')]));_0x30bd40['attributes']=_0x30bd40[_0x9cee('0x3d')]['length']?_0x30bd40[_0x9cee('0x3d')]:_0x361c01[_0x9cee('0x3a')];_0x30bd40[_0x9cee('0x64')]=qs['sort'](_0x104205[_0x9cee('0x37')][_0x9cee('0x40')]);_0x30bd40[_0x9cee('0x41')]=qs[_0x9cee('0x39')](_[_0x9cee('0x42')](_0x104205[_0x9cee('0x37')],_0x361c01[_0x9cee('0x39')]));if(_0x104205[_0x9cee('0x37')]['filter']){_0x30bd40[_0x9cee('0x41')]=_[_0x9cee('0x44')](_0x30bd40[_0x9cee('0x41')],{'$or':_[_0x9cee('0x33')](_0x30bd40[_0x9cee('0x3d')],function(_0x456bfd){var _0x18661c={};_0x18661c[_0x456bfd]={'$like':'%'+_0x104205[_0x9cee('0x37')][_0x9cee('0x43')]+'%'};return _0x18661c;})});}_0x30bd40=_['merge']({},_0x30bd40,_0x104205[_0x9cee('0x46')]);return _0x3e5726[_0x9cee('0x11b')](_0x30bd40);}})['then'](function(_0x9ad337){if(_0x9ad337){_0x3faf97=_0x9ad337[_0x9cee('0x4d')];if(!_0x104205[_0x9cee('0x37')][_0x9cee('0x3e')]('nolimit')){_0x30bd40[_0x9cee('0x27')]=qs[_0x9cee('0x27')](_0x104205[_0x9cee('0x37')][_0x9cee('0x27')]);_0x30bd40[_0x9cee('0x24')]=qs[_0x9cee('0x24')](_0x104205[_0x9cee('0x37')]['offset']);}return _0x3e5726['getProactiveActions'](_0x30bd40);}})['then'](function(_0x1836d7){if(_0x1836d7){return _0x1836d7?{'count':_0x3faf97,'rows':_0x1836d7}:null;}})['then'](respondWithResult(_0x29841c,null))[_0x9cee('0x1f')](handleError(_0x29841c,null));};exports[_0x9cee('0x11c')]=function(_0x389794,_0x6fb9fc){var _0x1abe5f=_0x389794[_0x9cee('0x37')][_0x9cee('0x11d')]==='false'?_0x9cee('0x11e'):_0x9cee('0x11f');return db[_0x9cee('0x47')]['find']({'attributes':['id',_0x1abe5f],'where':{'id':_0x389794[_0x9cee('0x4c')]['id']}})[_0x9cee('0x2a')](handleEntityNotFound(_0x6fb9fc,null))[_0x9cee('0x2a')](function(_0x584f90){if(_0x584f90){var _0x276584=_0x584f90[_0x1abe5f];var _0x3b9b0f=_0x276584&&_0x276584[_0x9cee('0x120')]?_0x276584[_0x9cee('0x120')]:[];_0x6fb9fc['send']({'fromKey':_['isNil'](_0x276584[_0x9cee('0x121')])?undefined:_0x276584[_0x9cee('0x121')],'count':_0x3b9b0f[_0x9cee('0x4d')],'rows':_0x3b9b0f});}})[_0x9cee('0x1f')](handleError(_0x6fb9fc,null));};exports['getOfflineMessages']=function(_0x43634e,_0x14965c){var _0x43c932={'raw':![],'where':{}};var _0x4e969a={};var _0x2b1574={'count':0x0,'rows':[]};return db[_0x9cee('0x47')][_0x9cee('0x5d')]({'where':{'id':_0x43634e[_0x9cee('0x4c')]['id']}})[_0x9cee('0x2a')](handleEntityNotFound(_0x14965c,null))[_0x9cee('0x2a')](function(_0x3cc6b1){if(_0x3cc6b1){_0x4e969a[_0x9cee('0x3a')]=_['keys'](db[_0x9cee('0xce')][_0x9cee('0x5e')]);_0x4e969a[_0x9cee('0x37')]=_[_0x9cee('0x38')](_0x43634e['query']);_0x4e969a[_0x9cee('0x39')]=_[_0x9cee('0x3b')](_0x4e969a[_0x9cee('0x3a')],_0x4e969a[_0x9cee('0x37')]);_0x43c932[_0x9cee('0x3d')]=_[_0x9cee('0x3b')](_0x4e969a['model'],qs[_0x9cee('0x3c')](_0x43634e[_0x9cee('0x37')][_0x9cee('0x3c')]));_0x43c932[_0x9cee('0x3d')]=_0x43c932['attributes'][_0x9cee('0x4d')]?_0x43c932['attributes']:_0x4e969a[_0x9cee('0x3a')];if(!_0x43634e[_0x9cee('0x37')][_0x9cee('0x3e')](_0x9cee('0x3f'))){_0x43c932[_0x9cee('0x27')]=qs['limit'](_0x43634e[_0x9cee('0x37')][_0x9cee('0x27')]);_0x43c932[_0x9cee('0x24')]=qs['offset'](_0x43634e[_0x9cee('0x37')][_0x9cee('0x24')]);}_0x43c932['order']=qs[_0x9cee('0x40')](_0x43634e[_0x9cee('0x37')][_0x9cee('0x40')]);_0x43c932[_0x9cee('0x41')]=qs[_0x9cee('0x39')](_[_0x9cee('0x42')](_0x43634e[_0x9cee('0x37')],_0x4e969a[_0x9cee('0x39')]));_0x43c932['where']['ChatWebsiteId']=_0x3cc6b1['id'];if(_0x43634e[_0x9cee('0x37')]['filter']){_0x43c932[_0x9cee('0x41')]=_[_0x9cee('0x44')](_0x43c932[_0x9cee('0x41')],{'$or':_['map'](_0x43c932[_0x9cee('0x3d')],function(_0x2e952e){var _0xc4856c={};_0xc4856c[_0x2e952e]={'$like':'%'+_0x43634e['query']['filter']+'%'};return _0xc4856c;})});}_0x43c932=_[_0x9cee('0x44')]({},_0x43c932,_0x43634e[_0x9cee('0x46')]);return db[_0x9cee('0xce')]['count']({'where':_0x43c932[_0x9cee('0x41')]})[_0x9cee('0x2a')](function(_0x1db966){_0x2b1574['count']=_0x1db966;if(_0x43634e['query'][_0x9cee('0x48')]){_0x43c932[_0x9cee('0x49')]=[{'all':!![]}];}else{_0x43c932['include']=[{'model':db[_0x9cee('0x86')],'as':_0x9cee('0x122'),'required':![]},{'model':db[_0x9cee('0xd6')],'as':_0x9cee('0x123'),'required':![]}];}return db[_0x9cee('0xce')][_0x9cee('0x4a')](_0x43c932);})['then'](function(_0x4e507d){_0x2b1574[_0x9cee('0x4b')]=_0x4e507d;return _0x2b1574;});}})[_0x9cee('0x2a')](respondWithFilteredResult(_0x14965c,_0x43c932))[_0x9cee('0x1f')](handleError(_0x14965c,null));};exports['addAgents']=function(_0x1b4f66,_0x590aa6){return db[_0x9cee('0x47')]['find']({'where':{'id':_0x1b4f66[_0x9cee('0x4c')]['id']}})[_0x9cee('0x2a')](handleEntityNotFound(_0x590aa6,null))[_0x9cee('0x2a')](function(_0x253b3c){if(_0x253b3c){return _0x253b3c[_0x9cee('0x124')](_0x1b4f66[_0x9cee('0x50')][_0x9cee('0x60')],_[_0x9cee('0xe9')](_0x1b4f66[_0x9cee('0x50')],[_0x9cee('0x60'),'id'])||{})[_0x9cee('0xb2')](function(_0x5a6041){for(var _0x831e56=0x0;_0x831e56<_0x1b4f66['body']['ids'][_0x9cee('0x4d')];_0x831e56+=0x1){socket[_0x9cee('0x125')](_0x9cee('0x126'),{'UserId':Number(_0x1b4f66[_0x9cee('0x50')][_0x9cee('0x60')][_0x831e56]),'ChatWebsiteId':Number(_0x1b4f66[_0x9cee('0x4c')]['id'])});}return _0x5a6041;});}})[_0x9cee('0x2a')](respondWithResult(_0x590aa6,null))['catch'](handleError(_0x590aa6,null));};exports[_0x9cee('0x127')]=function(_0x60cf98,_0x3ced3f){return db[_0x9cee('0x47')]['find']({'where':{'id':_0x60cf98['params']['id']}})['then'](handleEntityNotFound(_0x3ced3f,null))[_0x9cee('0x2a')](function(_0x32a797){if(_0x32a797){return _0x32a797[_0x9cee('0x127')](_0x60cf98['query'][_0x9cee('0x60')])['then'](function(){if(_[_0x9cee('0x128')](_0x60cf98[_0x9cee('0x37')]['ids'])){for(var _0xebd119=0x0;_0xebd119<_0x60cf98[_0x9cee('0x37')][_0x9cee('0x60')][_0x9cee('0x4d')];_0xebd119+=0x1){socket[_0x9cee('0x125')](_0x9cee('0x129'),{'UserId':Number(_0x60cf98[_0x9cee('0x37')][_0x9cee('0x60')][_0xebd119]),'ChatWebsiteId':Number(_0x60cf98['params']['id'])});}}else{socket[_0x9cee('0x125')](_0x9cee('0x129'),{'UserId':Number(_0x60cf98[_0x9cee('0x37')][_0x9cee('0x60')]),'ChatWebsiteId':Number(_0x60cf98[_0x9cee('0x4c')]['id'])});}});}})['then'](respondWithStatusCode(_0x3ced3f,null))['catch'](handleError(_0x3ced3f,null));};exports['getAgents']=function(_0x7831be,_0x71088){var _0x3ab91d={};var _0x550ae0={};var _0x32b30b;var _0x332866;return db['ChatWebsite'][_0x9cee('0x5d')]({'where':{'id':_0x7831be['params']['id']}})[_0x9cee('0x2a')](handleEntityNotFound(_0x71088,null))[_0x9cee('0x2a')](function(_0x3324d0){if(_0x3324d0){_0x32b30b=_0x3324d0;_0x550ae0[_0x9cee('0x3a')]=_[_0x9cee('0x38')](db['User']['rawAttributes']);_0x550ae0['query']=_['keys'](_0x7831be['query']);_0x550ae0[_0x9cee('0x39')]=_[_0x9cee('0x3b')](_0x550ae0['model'],_0x550ae0[_0x9cee('0x37')]);_0x3ab91d[_0x9cee('0x3d')]=_[_0x9cee('0x3b')](_0x550ae0[_0x9cee('0x3a')],qs[_0x9cee('0x3c')](_0x7831be[_0x9cee('0x37')][_0x9cee('0x3c')]));_0x3ab91d[_0x9cee('0x3d')]=_0x3ab91d['attributes'][_0x9cee('0x4d')]?_0x3ab91d[_0x9cee('0x3d')]:_0x550ae0[_0x9cee('0x3a')];_0x3ab91d[_0x9cee('0x64')]=qs['sort'](_0x7831be[_0x9cee('0x37')][_0x9cee('0x40')]);_0x3ab91d[_0x9cee('0x41')]=qs[_0x9cee('0x39')](_['pick'](_0x7831be[_0x9cee('0x37')],_0x550ae0['filters']));if(_0x7831be[_0x9cee('0x37')][_0x9cee('0x43')]){_0x3ab91d[_0x9cee('0x41')]=_[_0x9cee('0x44')](_0x3ab91d[_0x9cee('0x41')],{'$or':_[_0x9cee('0x33')](_0x3ab91d[_0x9cee('0x3d')],function(_0x544009){var _0x418c8e={};_0x418c8e[_0x544009]={'$like':'%'+_0x7831be[_0x9cee('0x37')]['filter']+'%'};return _0x418c8e;})});}_0x3ab91d=_['merge']({},_0x3ab91d,_0x7831be[_0x9cee('0x46')]);return _0x32b30b[_0x9cee('0x12a')](_0x3ab91d);}})[_0x9cee('0x2a')](function(_0x2cc134){if(_0x2cc134){_0x332866=_0x2cc134['length'];if(!_0x7831be[_0x9cee('0x37')][_0x9cee('0x3e')](_0x9cee('0x3f'))){_0x3ab91d[_0x9cee('0x27')]=qs[_0x9cee('0x27')](_0x7831be['query'][_0x9cee('0x27')]);_0x3ab91d[_0x9cee('0x24')]=qs[_0x9cee('0x24')](_0x7831be[_0x9cee('0x37')]['offset']);}return _0x32b30b[_0x9cee('0x12a')](_0x3ab91d);}})['then'](function(_0xc431c0){if(_0xc431c0){return _0xc431c0?{'count':_0x332866,'rows':_0xc431c0}:null;}})[_0x9cee('0x2a')](respondWithResult(_0x71088,null))['catch'](handleError(_0x71088,null));};
\ No newline at end of file
+var _0x8280=['offset','set','Content-Range','update','destroy','get','UserProfileResource','sendStatus','stack','name','send','Pause','map','ChatWebsite','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','rows','show','params','mandatoryDispositionPause','keys','fields','length','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ChatWebsites','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','Disposition','getDispositions','findOne','pick','ChatWebsiteId','findAll','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','removeAnswers','addLogo','addAvatar','agentAvatar','file','filename','addCustomerAvatar','customerAvatar','addSystemAvatar','systemAvatar','join','root','server/files/images/logos/default_logo.svg','sitepic','getLicense','custom','isNil','server/files/images/logos/','server/files/images/avatars/default_avatar.png','existsSync','server/files/images/avatars/','download','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','headers','getResult','chat','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','from','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','CmList','List','CmContact','Applications','account','list','applications','orderBy','priority','asc','Contacts','ListId','contact','customerIp','cf-connecting-ip','x-forwarded-for','first','split','firstName','lastName','x-real-port','referer','browser','version','format','%s\x20%s','unknown','device','%s\x20%s\x20%s','vendor','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','messageId','autoclose','push','close','unmanaged','ChatMessage','AttachmentId','UserId','User','waitForTheAssignedAgent','*,*,*,*','forcedOwnership','Start','startRouting','EventManager','offline','files','no\x20available\x20attributes','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','MailAccount','findOrCreate','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','render','toPairs','offlineMessageBody','ChatOfflineMessage','originalname','mimetype','server','basename','Attachment','MailServerOut','Smtp','CloudProvider','getSmtpOptions','SendMail','sendMail','\x22%s\x22\x20<%s>','email','forwardOfflineAddress','offlineMessageSubject','openNewInteraction','MailAccountId','subjectOffline','toPairsIn','mapValues','Chat','NotifyMailAccount','attachments','offline-chat','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','Contact','Owner','internal','Tag','Tags','color','tag','Command','getSnippet','timezone','iftime\x20%s,%s','interval','iftime\x20%s','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','No\x20timezone','inspect','Interval','Intervals','virtual','License','increment','chatLicenseExceeded','some','server/files/chat/iframe.ejs','remote','connection','remoteAddress','replace','verticalAlignment','labelText','textButtonColor','color_button','hideWhenOffline','IntervalId','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','ChatApplication','bulkCreate','findAndCountAll','getApplications','addProactiveActions','omit','getProactiveActions','ChatProactiveAction','getFields','online','offlineForm','onlineForm','items','fromKey','getOfflineMessages','Attachments','addAgents','userChatWebsite:save','removeAgents','isArray','emit','userChatWebsite:remove','getAgents','bluebird','mustache','util','ejs','fs-extra','lodash','querystring','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatWebsite.socket','html-to-text','jayson/promise','client','http','then','info','request\x20sent','debug','stringify','code','error','ChatWebsite,\x20%s,\x20%s','message','result','catch','end','status','json','undefined','limit','count'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x8280,0x108));var _0x0828=function(_0x941934,_0x156dca){_0x941934=_0x941934-0x0;var _0x548e47=_0x8280[_0x941934];return _0x548e47;};'use strict';var BPromise=require(_0x0828('0x0'));var Mustache=require(_0x0828('0x1'));var util=require(_0x0828('0x2'));var path=require('path');var ejs=require(_0x0828('0x3'));var fs=require('fs');var fs_extra=require(_0x0828('0x4'));var _=require(_0x0828('0x5'));var querystring=require(_0x0828('0x6'));var Redis=require('ioredis');var qs=require(_0x0828('0x7'));var logger=require('../../config/logger')(_0x0828('0x8'));var config=require(_0x0828('0x9'));var db=require(_0x0828('0xa'))['db'];config[_0x0828('0xb')]=_[_0x0828('0xc')](config[_0x0828('0xb')],{'host':_0x0828('0xd'),'port':0x18eb});var socket=require(_0x0828('0xe'))(new Redis(config[_0x0828('0xb')]));require(_0x0828('0xf'))['register'](socket);var htmlToText=require(_0x0828('0x10'));var jayson=require(_0x0828('0x11'));var client=jayson[_0x0828('0x12')][_0x0828('0x13')]({'port':0x232c});var client9002=jayson[_0x0828('0x12')][_0x0828('0x13')]({'port':0x232a});var client9003=jayson['client'][_0x0828('0x13')]({'port':0x232b});var client9001=jayson[_0x0828('0x12')][_0x0828('0x13')]({'port':0x2329});function respondWithRpcPromise(_0x30ce99,_0x3f00c1,_0x2987f6,_0x466dc8){return new BPromise(function(_0x425779,_0x1ebd95){var _0x354f67=_0x466dc8||client;return _0x354f67['request'](_0x30ce99,_0x2987f6)[_0x0828('0x14')](function(_0x18f0b9){logger[_0x0828('0x15')]('ChatWebsite,\x20%s,\x20%s',_0x3f00c1,_0x0828('0x16'));logger[_0x0828('0x17')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x3f00c1,'request\x20sent',JSON[_0x0828('0x18')](_0x18f0b9));if(_0x18f0b9['error']){if(_0x18f0b9['error'][_0x0828('0x19')]===0x1f4){logger[_0x0828('0x1a')](_0x0828('0x1b'),_0x3f00c1,_0x18f0b9[_0x0828('0x1a')][_0x0828('0x1c')]);return _0x1ebd95(_0x18f0b9[_0x0828('0x1a')][_0x0828('0x1c')]);}logger[_0x0828('0x1a')](_0x0828('0x1b'),_0x3f00c1,_0x18f0b9[_0x0828('0x1a')][_0x0828('0x1c')]);return _0x425779(_0x18f0b9[_0x0828('0x1a')][_0x0828('0x1c')]);}else{logger[_0x0828('0x15')]('ChatWebsite,\x20%s,\x20%s',_0x3f00c1,_0x0828('0x16'));_0x425779(_0x18f0b9[_0x0828('0x1d')]['message']);}})[_0x0828('0x1e')](function(_0x1e5955){logger['error'](_0x0828('0x1b'),_0x3f00c1,_0x1e5955);_0x1ebd95(_0x1e5955);});});}function respondWithStatusCode(_0x1937e8,_0x2830db){_0x2830db=_0x2830db||0xcc;return function(_0x4eff35){if(_0x4eff35){return _0x1937e8['sendStatus'](_0x2830db);}return _0x1937e8['status'](_0x2830db)[_0x0828('0x1f')]();};}function respondWithResult(_0x538619,_0x3874ad){_0x3874ad=_0x3874ad||0xc8;return function(_0x56c28c){if(_0x56c28c){return _0x538619[_0x0828('0x20')](_0x3874ad)[_0x0828('0x21')](_0x56c28c);}};}function respondWithFilteredResult(_0xfa4688,_0x249a18){return function(_0x4539e2){if(_0x4539e2){var _0x3f80e0=typeof _0x249a18['offset']===_0x0828('0x22')&&typeof _0x249a18[_0x0828('0x23')]==='undefined';var _0x279627=_0x4539e2[_0x0828('0x24')];var _0x4534d6=_0x3f80e0?0x0:_0x249a18[_0x0828('0x25')];var _0x38463d=_0x3f80e0?_0x4539e2[_0x0828('0x24')]:_0x249a18[_0x0828('0x25')]+_0x249a18['limit'];var _0x3acc9a;if(_0x38463d>=_0x279627){_0x38463d=_0x279627;_0x3acc9a=0xc8;}else{_0x3acc9a=0xce;}_0xfa4688[_0x0828('0x20')](_0x3acc9a);return _0xfa4688[_0x0828('0x26')](_0x0828('0x27'),_0x4534d6+'-'+_0x38463d+'/'+_0x279627)[_0x0828('0x21')](_0x4539e2);}return null;};}function saveUpdates(_0x200a4c){return function(_0x10fd74){if(_0x10fd74){return _0x10fd74[_0x0828('0x28')](_0x200a4c)['then'](function(_0x2a44a0){return _0x2a44a0;});}return null;};}function removeEntity(_0x4264cc){return function(_0x179445){if(_0x179445){return _0x179445[_0x0828('0x29')]()['then'](function(){var _0xa75155=_0x179445[_0x0828('0x2a')]({'plain':!![]});var _0x317f37='ChatWebsites';return db[_0x0828('0x2b')]['destroy']({'where':{'type':_0x317f37,'resourceId':_0xa75155['id']}})[_0x0828('0x14')](function(){return _0x179445;});})[_0x0828('0x14')](function(){_0x4264cc[_0x0828('0x20')](0xcc)[_0x0828('0x1f')]();});}};}function handleEntityNotFound(_0x427f1c){return function(_0x52db4e){if(!_0x52db4e){_0x427f1c[_0x0828('0x2c')](0x194);}return _0x52db4e;};}function handleError(_0x53ea54,_0x3a8bc9){_0x3a8bc9=_0x3a8bc9||0x1f4;return function(_0x1e665a){logger[_0x0828('0x1a')](_0x1e665a[_0x0828('0x2d')]);if(_0x1e665a['name']){delete _0x1e665a[_0x0828('0x2e')];}_0x53ea54['status'](_0x3a8bc9)[_0x0828('0x2f')](_0x1e665a);};}exports['index']=function(_0xfa8b4d,_0x5560a0){var _0x4487be={'include':[{'model':db[_0x0828('0x30')],'as':'mandatoryDispositionPause'}]},_0x47400c={},_0xcbdada={'count':0x0,'rows':[]};var _0x2bed7a=_[_0x0828('0x31')](db[_0x0828('0x32')][_0x0828('0x33')],function(_0x50c526){return{'name':_0x50c526[_0x0828('0x34')],'type':_0x50c526[_0x0828('0x35')][_0x0828('0x36')]};});_0x47400c[_0x0828('0x37')]=_[_0x0828('0x31')](_0x2bed7a,'name');_0x47400c[_0x0828('0x38')]=_['keys'](_0xfa8b4d[_0x0828('0x38')]);_0x47400c[_0x0828('0x39')]=_[_0x0828('0x3a')](_0x47400c[_0x0828('0x37')],_0x47400c['query']);_0x4487be[_0x0828('0x3b')]=_[_0x0828('0x3a')](_0x47400c[_0x0828('0x37')],qs['fields'](_0xfa8b4d[_0x0828('0x38')]['fields']));_0x4487be[_0x0828('0x3b')]=_0x4487be[_0x0828('0x3b')]['length']?_0x4487be[_0x0828('0x3b')]:_0x47400c[_0x0828('0x37')];if(!_0xfa8b4d['query'][_0x0828('0x3c')](_0x0828('0x3d'))){_0x4487be[_0x0828('0x23')]=qs[_0x0828('0x23')](_0xfa8b4d['query'][_0x0828('0x23')]);_0x4487be[_0x0828('0x25')]=qs[_0x0828('0x25')](_0xfa8b4d['query']['offset']);}_0x4487be[_0x0828('0x3e')]=qs['sort'](_0xfa8b4d[_0x0828('0x38')][_0x0828('0x3f')]);_0x4487be[_0x0828('0x40')]=qs['filters'](_['pick'](_0xfa8b4d[_0x0828('0x38')],_0x47400c['filters']),_0x2bed7a);if(_0xfa8b4d[_0x0828('0x38')][_0x0828('0x41')]){_0x4487be['where']=_[_0x0828('0x42')](_0x4487be[_0x0828('0x40')],{'$or':_[_0x0828('0x31')](_0x2bed7a,function(_0x2e8291){if(_0x2e8291['type']!==_0x0828('0x43')){var _0x3561cf={};_0x3561cf[_0x2e8291[_0x0828('0x2e')]]={'$like':'%'+_0xfa8b4d['query']['filter']+'%'};return _0x3561cf;}})});}_0x4487be=_[_0x0828('0x42')]({},_0x4487be,_0xfa8b4d[_0x0828('0x44')]);var _0x253c68={'where':_0x4487be[_0x0828('0x40')]};return db[_0x0828('0x32')][_0x0828('0x24')](_0x253c68)[_0x0828('0x14')](function(_0x7d3b63){_0xcbdada['count']=_0x7d3b63;if(_0xfa8b4d[_0x0828('0x38')][_0x0828('0x45')]){_0x4487be[_0x0828('0x46')]=[{'all':!![]}];}return db[_0x0828('0x32')]['findAll'](_0x4487be);})[_0x0828('0x14')](function(_0x111cf6){_0xcbdada[_0x0828('0x47')]=_0x111cf6;return _0xcbdada;})[_0x0828('0x14')](respondWithFilteredResult(_0x5560a0,_0x4487be))[_0x0828('0x1e')](handleError(_0x5560a0,null));};exports[_0x0828('0x48')]=function(_0x4d25cf,_0x5439af){var _0x5b9da2={'raw':![],'where':{'id':_0x4d25cf[_0x0828('0x49')]['id']},'include':[{'model':db['Pause'],'as':_0x0828('0x4a')}]},_0x28392e={};_0x28392e[_0x0828('0x37')]=_[_0x0828('0x4b')](db['ChatWebsite'][_0x0828('0x33')]);_0x28392e['query']=_['keys'](_0x4d25cf[_0x0828('0x38')]);_0x28392e['filters']=_[_0x0828('0x3a')](_0x28392e[_0x0828('0x37')],_0x28392e[_0x0828('0x38')]);_0x5b9da2[_0x0828('0x3b')]=_[_0x0828('0x3a')](_0x28392e[_0x0828('0x37')],qs[_0x0828('0x4c')](_0x4d25cf['query'][_0x0828('0x4c')]));_0x5b9da2[_0x0828('0x3b')]=_0x5b9da2['attributes'][_0x0828('0x4d')]?_0x5b9da2[_0x0828('0x3b')]:_0x28392e[_0x0828('0x37')];if(_0x4d25cf[_0x0828('0x38')][_0x0828('0x45')]){_0x5b9da2['include']=[{'all':!![]}];}_0x5b9da2=_[_0x0828('0x42')]({},_0x5b9da2,_0x4d25cf[_0x0828('0x44')]);return db[_0x0828('0x32')]['find'](_0x5b9da2)[_0x0828('0x14')](handleEntityNotFound(_0x5439af,null))['then'](respondWithResult(_0x5439af,null))['catch'](handleError(_0x5439af,null));};exports[_0x0828('0x4e')]=function(_0x5d91e1,_0x529315){return db[_0x0828('0x32')]['create'](_0x5d91e1['body'],{})[_0x0828('0x14')](function(_0x5ccfe5){var _0x21db0b=_0x5d91e1[_0x0828('0x4f')]['get']({'plain':!![]});if(!_0x21db0b)throw new Error(_0x0828('0x50'));if(_0x21db0b[_0x0828('0x51')]===_0x0828('0x4f')){var _0x342fbb=_0x5ccfe5[_0x0828('0x2a')]({'plain':!![]});var _0x2e8c7b=_0x0828('0x52');return db[_0x0828('0x53')][_0x0828('0x54')]({'where':{'name':_0x2e8c7b,'userProfileId':_0x21db0b[_0x0828('0x55')]},'raw':!![]})['then'](function(_0x77fea8){if(_0x77fea8&&_0x77fea8['autoAssociation']===0x0){return db[_0x0828('0x2b')][_0x0828('0x4e')]({'name':_0x342fbb[_0x0828('0x2e')],'resourceId':_0x342fbb['id'],'type':_0x77fea8[_0x0828('0x2e')],'sectionId':_0x77fea8['id']},{})[_0x0828('0x14')](function(){return _0x5ccfe5;});}else{return _0x5ccfe5;}})[_0x0828('0x1e')](function(_0xbef72f){logger[_0x0828('0x1a')](_0x0828('0x56'),_0xbef72f);throw _0xbef72f;});}return _0x5ccfe5;})['then'](respondWithResult(_0x529315,0xc9))['catch'](handleError(_0x529315,null));};exports[_0x0828('0x28')]=function(_0x534311,_0x3e49e3){if(_0x534311[_0x0828('0x57')]['id']){delete _0x534311[_0x0828('0x57')]['id'];}return db[_0x0828('0x32')][_0x0828('0x54')]({'where':{'id':_0x534311[_0x0828('0x49')]['id']},'include':[{'model':db[_0x0828('0x30')],'as':_0x0828('0x4a')}]})[_0x0828('0x14')](handleEntityNotFound(_0x3e49e3,null))['then'](saveUpdates(_0x534311[_0x0828('0x57')],null))[_0x0828('0x14')](respondWithResult(_0x3e49e3,null))['catch'](handleError(_0x3e49e3,null));};exports['destroy']=function(_0x39fec3,_0x5c330b){return db[_0x0828('0x32')][_0x0828('0x54')]({'where':{'id':_0x39fec3[_0x0828('0x49')]['id']}})['then'](handleEntityNotFound(_0x5c330b,null))['then'](removeEntity(_0x5c330b,null))[_0x0828('0x1e')](handleError(_0x5c330b,null));};exports['describe']=function(_0x44707f,_0xf516dc){return db[_0x0828('0x32')][_0x0828('0x58')]()[_0x0828('0x14')](respondWithResult(_0xf516dc,null))[_0x0828('0x1e')](handleError(_0xf516dc,null));};exports[_0x0828('0x59')]=function(_0x446eb5,_0x12b525){if(_0x446eb5['body']['id']){delete _0x446eb5[_0x0828('0x57')]['id'];}return db[_0x0828('0x32')][_0x0828('0x54')]({'where':{'id':_0x446eb5['params']['id']}})[_0x0828('0x14')](handleEntityNotFound(_0x12b525,null))[_0x0828('0x14')](function(_0x130265){if(_0x130265){_0x446eb5['body']['ChatWebsiteId']=_0x130265['id'];return db[_0x0828('0x5a')][_0x0828('0x4e')](_0x446eb5[_0x0828('0x57')]);}})[_0x0828('0x14')](respondWithResult(_0x12b525,null))[_0x0828('0x1e')](handleError(_0x12b525,null));};exports[_0x0828('0x5b')]=function(_0x277917,_0x3b4349){var _0x67d63d={'raw':![],'where':{}};var _0xeba56d={};var _0x2817da={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x0828('0x5c')]({'where':{'id':_0x277917[_0x0828('0x49')]['id']}})[_0x0828('0x14')](handleEntityNotFound(_0x3b4349,null))['then'](function(_0x335c80){if(_0x335c80){_0xeba56d[_0x0828('0x37')]=_[_0x0828('0x4b')](db[_0x0828('0x5a')][_0x0828('0x33')]);_0xeba56d[_0x0828('0x38')]=_[_0x0828('0x4b')](_0x277917['query']);_0xeba56d[_0x0828('0x39')]=_['intersection'](_0xeba56d[_0x0828('0x37')],_0xeba56d[_0x0828('0x38')]);_0x67d63d[_0x0828('0x3b')]=_[_0x0828('0x3a')](_0xeba56d[_0x0828('0x37')],qs['fields'](_0x277917[_0x0828('0x38')][_0x0828('0x4c')]));_0x67d63d['attributes']=_0x67d63d[_0x0828('0x3b')][_0x0828('0x4d')]?_0x67d63d['attributes']:_0xeba56d[_0x0828('0x37')];if(!_0x277917[_0x0828('0x38')][_0x0828('0x3c')](_0x0828('0x3d'))){_0x67d63d['limit']=qs['limit'](_0x277917[_0x0828('0x38')]['limit']);_0x67d63d['offset']=qs[_0x0828('0x25')](_0x277917[_0x0828('0x38')][_0x0828('0x25')]);}_0x67d63d['order']=qs[_0x0828('0x3f')](_0x277917[_0x0828('0x38')][_0x0828('0x3f')]);_0x67d63d[_0x0828('0x40')]=qs[_0x0828('0x39')](_[_0x0828('0x5d')](_0x277917['query'],_0xeba56d[_0x0828('0x39')]));_0x67d63d[_0x0828('0x40')][_0x0828('0x5e')]=_0x335c80['id'];if(_0x277917[_0x0828('0x38')]['filter']){_0x67d63d[_0x0828('0x40')]=_[_0x0828('0x42')](_0x67d63d[_0x0828('0x40')],{'$or':_[_0x0828('0x31')](_0x67d63d[_0x0828('0x3b')],function(_0xff40a5){var _0x3c3c54={};_0x3c3c54[_0xff40a5]={'$like':'%'+_0x277917[_0x0828('0x38')][_0x0828('0x41')]+'%'};return _0x3c3c54;})});}_0x67d63d=_['merge']({},_0x67d63d,_0x277917[_0x0828('0x44')]);return db['Disposition'][_0x0828('0x24')]({'where':_0x67d63d['where']})[_0x0828('0x14')](function(_0x1669ca){_0x2817da['count']=_0x1669ca;if(_0x277917[_0x0828('0x38')][_0x0828('0x45')]){_0x67d63d[_0x0828('0x46')]=[{'all':!![]}];}return db[_0x0828('0x5a')][_0x0828('0x5f')](_0x67d63d);})[_0x0828('0x14')](function(_0x5bdf9b){_0x2817da[_0x0828('0x47')]=_0x5bdf9b;return _0x2817da;});}})[_0x0828('0x14')](respondWithFilteredResult(_0x3b4349,_0x67d63d))['catch'](handleError(_0x3b4349,null));};exports[_0x0828('0x60')]=function(_0x279cbb,_0x1bb7ac){return db[_0x0828('0x32')]['find']({'where':{'id':_0x279cbb['params']['id']}})['then'](handleEntityNotFound(_0x1bb7ac,null))[_0x0828('0x14')](function(_0x47de40){if(_0x47de40){return _0x47de40[_0x0828('0x60')](_0x279cbb[_0x0828('0x38')][_0x0828('0x61')]);}})[_0x0828('0x14')](respondWithStatusCode(_0x1bb7ac,null))[_0x0828('0x1e')](handleError(_0x1bb7ac,null));};exports[_0x0828('0x62')]=function(_0x27021f,_0x63d34f){if(_0x27021f[_0x0828('0x57')]['id']){delete _0x27021f[_0x0828('0x57')]['id'];}return db[_0x0828('0x32')][_0x0828('0x54')]({'where':{'id':_0x27021f[_0x0828('0x49')]['id']}})['then'](handleEntityNotFound(_0x63d34f,null))[_0x0828('0x14')](function(_0x1fbd54){if(_0x1fbd54){_0x27021f[_0x0828('0x57')]['ChatWebsiteId']=_0x1fbd54['id'];return db['CannedAnswer'][_0x0828('0x4e')](_0x27021f[_0x0828('0x57')]);}})[_0x0828('0x14')](respondWithResult(_0x63d34f,null))[_0x0828('0x1e')](handleError(_0x63d34f,null));};exports[_0x0828('0x63')]=function(_0x4e42f0,_0x145f04){var _0xf08d87={'raw':![],'where':{}};var _0x507141={};var _0x1e6d57={'count':0x0,'rows':[]};return db[_0x0828('0x32')][_0x0828('0x5c')]({'where':{'id':_0x4e42f0[_0x0828('0x49')]['id']}})['then'](handleEntityNotFound(_0x145f04,null))[_0x0828('0x14')](function(_0x1891ae){if(_0x1891ae){_0x507141[_0x0828('0x37')]=_[_0x0828('0x4b')](db['CannedAnswer']['rawAttributes']);_0x507141['query']=_['keys'](_0x4e42f0[_0x0828('0x38')]);_0x507141[_0x0828('0x39')]=_[_0x0828('0x3a')](_0x507141[_0x0828('0x37')],_0x507141[_0x0828('0x38')]);_0xf08d87[_0x0828('0x3b')]=_[_0x0828('0x3a')](_0x507141[_0x0828('0x37')],qs[_0x0828('0x4c')](_0x4e42f0[_0x0828('0x38')][_0x0828('0x4c')]));_0xf08d87['attributes']=_0xf08d87[_0x0828('0x3b')][_0x0828('0x4d')]?_0xf08d87[_0x0828('0x3b')]:_0x507141[_0x0828('0x37')];if(!_0x4e42f0[_0x0828('0x38')][_0x0828('0x3c')](_0x0828('0x3d'))){_0xf08d87[_0x0828('0x23')]=qs[_0x0828('0x23')](_0x4e42f0['query']['limit']);_0xf08d87[_0x0828('0x25')]=qs[_0x0828('0x25')](_0x4e42f0['query']['offset']);}_0xf08d87[_0x0828('0x3e')]=qs[_0x0828('0x3f')](_0x4e42f0[_0x0828('0x38')]['sort']);_0xf08d87[_0x0828('0x40')]=qs['filters'](_[_0x0828('0x5d')](_0x4e42f0[_0x0828('0x38')],_0x507141[_0x0828('0x39')]));_0xf08d87[_0x0828('0x40')][_0x0828('0x5e')]=_0x1891ae['id'];if(_0x4e42f0[_0x0828('0x38')][_0x0828('0x41')]){_0xf08d87[_0x0828('0x40')]=_[_0x0828('0x42')](_0xf08d87[_0x0828('0x40')],{'$or':_['map'](_0xf08d87[_0x0828('0x3b')],function(_0x246142){var _0x3fcd3d={};_0x3fcd3d[_0x246142]={'$like':'%'+_0x4e42f0['query'][_0x0828('0x41')]+'%'};return _0x3fcd3d;})});}_0xf08d87=_[_0x0828('0x42')]({},_0xf08d87,_0x4e42f0['options']);return db['CannedAnswer'][_0x0828('0x24')]({'where':_0xf08d87[_0x0828('0x40')]})[_0x0828('0x14')](function(_0x2c6b92){_0x1e6d57[_0x0828('0x24')]=_0x2c6b92;if(_0x4e42f0['query'][_0x0828('0x45')]){_0xf08d87[_0x0828('0x46')]=[{'all':!![]}];}return db[_0x0828('0x64')]['findAll'](_0xf08d87);})[_0x0828('0x14')](function(_0x1e5d58){_0x1e6d57[_0x0828('0x47')]=_0x1e5d58;return _0x1e6d57;});}})['then'](respondWithFilteredResult(_0x145f04,_0xf08d87))['catch'](handleError(_0x145f04,null));};exports[_0x0828('0x65')]=function(_0x2f5b16,_0x5b1411){return db['ChatWebsite'][_0x0828('0x54')]({'where':{'id':_0x2f5b16['params']['id']}})[_0x0828('0x14')](handleEntityNotFound(_0x5b1411,null))[_0x0828('0x14')](function(_0x1120f3){if(_0x1120f3){return _0x1120f3[_0x0828('0x65')](_0x2f5b16[_0x0828('0x38')][_0x0828('0x61')]);}})[_0x0828('0x14')](respondWithStatusCode(_0x5b1411,null))['catch'](handleError(_0x5b1411,null));};exports[_0x0828('0x66')]=function(_0x22e062,_0x5e9e28){_0x22e062[_0x0828('0x57')]['sitepic']=_0x22e062['file']['filename'];return db[_0x0828('0x32')]['find']({'where':{'id':_0x22e062['params']['id']}})['then'](handleEntityNotFound(_0x5e9e28,null))[_0x0828('0x14')](saveUpdates(_0x22e062[_0x0828('0x57')],null))[_0x0828('0x14')](respondWithResult(_0x5e9e28,null))['catch'](handleError(_0x5e9e28,null));};exports[_0x0828('0x67')]=function(_0x3ef1f1,_0x1e3f09){_0x3ef1f1['body'][_0x0828('0x68')]=_0x3ef1f1[_0x0828('0x69')][_0x0828('0x6a')];return db['ChatWebsite']['find']({'where':{'id':_0x3ef1f1[_0x0828('0x49')]['id']}})[_0x0828('0x14')](handleEntityNotFound(_0x1e3f09,null))['then'](saveUpdates(_0x3ef1f1[_0x0828('0x57')],null))[_0x0828('0x14')](respondWithResult(_0x1e3f09,null))['catch'](handleError(_0x1e3f09,null));};exports[_0x0828('0x6b')]=function(_0x6dc6c5,_0x1a109a){_0x6dc6c5[_0x0828('0x57')][_0x0828('0x6c')]=_0x6dc6c5['file'][_0x0828('0x6a')];return db['ChatWebsite']['find']({'where':{'id':_0x6dc6c5[_0x0828('0x49')]['id']}})[_0x0828('0x14')](handleEntityNotFound(_0x1a109a,null))[_0x0828('0x14')](saveUpdates(_0x6dc6c5[_0x0828('0x57')],null))[_0x0828('0x14')](respondWithResult(_0x1a109a,null))[_0x0828('0x1e')](handleError(_0x1a109a,null));};exports[_0x0828('0x6d')]=function(_0x47f3b3,_0x567aaf){_0x47f3b3[_0x0828('0x57')][_0x0828('0x6e')]=_0x47f3b3[_0x0828('0x69')][_0x0828('0x6a')];return db[_0x0828('0x32')][_0x0828('0x54')]({'where':{'id':_0x47f3b3[_0x0828('0x49')]['id']}})[_0x0828('0x14')](handleEntityNotFound(_0x567aaf,null))[_0x0828('0x14')](saveUpdates(_0x47f3b3[_0x0828('0x57')],null))[_0x0828('0x14')](respondWithResult(_0x567aaf,null))[_0x0828('0x1e')](handleError(_0x567aaf,null));};exports['getLogo']=function(_0x4efc15,_0x40932a){var _0x267307=path[_0x0828('0x6f')](config[_0x0828('0x70')],_0x0828('0x71'));var _0x19a8da={'where':{'id':_0x4efc15[_0x0828('0x49')]['id']},'attributes':['id',_0x0828('0x72')],'raw':!![]};var _0x4df3e3=![];return require('../../config/license/util')[_0x0828('0x73')]()[_0x0828('0x14')](function(_0x2bf088){if(_0x2bf088){_0x4df3e3=_0x2bf088[_0x0828('0x74')];}})[_0x0828('0x14')](function(){return db[_0x0828('0x32')]['find'](_0x19a8da);})[_0x0828('0x14')](handleEntityNotFound(_0x40932a,null))['then'](function(_0x1be6dd){if(_0x1be6dd){if(!_[_0x0828('0x75')](_0x1be6dd[_0x0828('0x72')])){if(fs['existsSync'](path[_0x0828('0x6f')](config[_0x0828('0x70')],_0x0828('0x76'),_0x1be6dd[_0x0828('0x72')]))&&_0x4df3e3){_0x267307=path[_0x0828('0x6f')](config['root'],_0x0828('0x76'),_0x1be6dd['sitepic']);}}return _0x40932a['download'](_0x267307);}})['catch'](handleError(_0x40932a,null));};exports['getAvatar']=function(_0x3f3d33,_0x1893cb){var _0x5d2d9f=path[_0x0828('0x6f')](config[_0x0828('0x70')],_0x0828('0x77'));var _0x3de0c7={'where':{'id':_0x3f3d33[_0x0828('0x49')]['id']},'attributes':['id',_0x0828('0x68')],'raw':!![]};return db[_0x0828('0x32')][_0x0828('0x54')](_0x3de0c7)[_0x0828('0x14')](handleEntityNotFound(_0x1893cb,null))[_0x0828('0x14')](function(_0x37ed72){if(_0x37ed72){if(!_[_0x0828('0x75')](_0x37ed72['agentAvatar'])){if(fs[_0x0828('0x78')](path[_0x0828('0x6f')](config[_0x0828('0x70')],_0x0828('0x79'),_0x37ed72[_0x0828('0x68')]))){_0x5d2d9f=path[_0x0828('0x6f')](config[_0x0828('0x70')],_0x0828('0x79'),_0x37ed72['agentAvatar']);}}return _0x1893cb[_0x0828('0x7a')](_0x5d2d9f);}})[_0x0828('0x1e')](handleError(_0x1893cb,null));};exports['getCustomerAvatar']=function(_0x877635,_0x3e9193){var _0x511249=path[_0x0828('0x6f')](config[_0x0828('0x70')],'server/files/images/avatars/customer_avatar.png');var _0xb13105={'where':{'id':_0x877635[_0x0828('0x49')]['id']},'attributes':['id',_0x0828('0x6c'),_0x0828('0x7b')],'raw':!![]};return db[_0x0828('0x32')][_0x0828('0x54')](_0xb13105)[_0x0828('0x14')](handleEntityNotFound(_0x3e9193,null))[_0x0828('0x14')](function(_0x54fcfd){if(_0x54fcfd){if(!_[_0x0828('0x75')](_0x54fcfd[_0x0828('0x6c')])){if(fs['existsSync'](path[_0x0828('0x6f')](config[_0x0828('0x70')],'server/files/images/avatars/',_0x54fcfd['customerAvatar']))&&_0x54fcfd[_0x0828('0x7b')]){_0x511249=path[_0x0828('0x6f')](config['root'],'server/files/images/avatars/',_0x54fcfd[_0x0828('0x6c')]);}}return _0x3e9193['download'](_0x511249);}})['catch'](handleError(_0x3e9193,null));};exports[_0x0828('0x7c')]=function(_0x91070f,_0x3107fc){var _0xc9ee95=path[_0x0828('0x6f')](config[_0x0828('0x70')],_0x0828('0x7d'));var _0x54c77d={'where':{'id':_0x91070f[_0x0828('0x49')]['id']},'attributes':['id',_0x0828('0x6e')],'raw':!![]};return db[_0x0828('0x32')][_0x0828('0x54')](_0x54c77d)[_0x0828('0x14')](handleEntityNotFound(_0x3107fc,null))[_0x0828('0x14')](function(_0x559e59){if(_0x559e59){if(!_['isNil'](_0x559e59[_0x0828('0x6e')])){if(fs[_0x0828('0x78')](path['join'](config['root'],_0x0828('0x79'),_0x559e59[_0x0828('0x6e')]))){_0xc9ee95=path[_0x0828('0x6f')](config['root'],_0x0828('0x79'),_0x559e59[_0x0828('0x6e')]);}}return _0x3107fc[_0x0828('0x7a')](_0xc9ee95);}})[_0x0828('0x1e')](handleError(_0x3107fc,null));};exports[_0x0828('0x7e')]=function(_0x474997,_0x330d5d){var _0x3c4b6d=require('user-agent-parser');var _0x1b1536=new _0x3c4b6d();var _0x42850c=_0x1b1536['setUA'](_0x474997[_0x0828('0x7f')]['user-agent'])[_0x0828('0x80')]();var _0x4136c7={'body':_0x474997[_0x0828('0x57')],'channel':_0x0828('0x81')};var _0x146536=[];var _0x484b3c=[];var _0x385f9b={};var _0xb5bcea=![];return db['CmContact'][_0x0828('0x58')]()[_0x0828('0x14')](function(_0x3ebb33){if(!_0x3ebb33){throw new db[(_0x0828('0x82'))][(_0x0828('0x83'))]('no\x20available\x20attributes');}_0x146536=_[_0x0828('0x84')](_[_0x0828('0x4b')](_0x3ebb33),[_0x0828('0x85'),_0x0828('0x86')]);_0x484b3c=_[_0x0828('0x84')](_['keys'](_0x3ebb33),[_0x0828('0x85'),'updatedAt',_0x0828('0x87'),'ListId']);if(_0x474997[_0x0828('0x57')]['id']){delete _0x474997[_0x0828('0x57')]['id'];}if(_[_0x0828('0x75')](_0x474997['body'][_0x0828('0x88')])){throw new db[(_0x0828('0x82'))][(_0x0828('0x83'))](_0x0828('0x89'));}if(_[_0x0828('0x75')](_0x474997[_0x0828('0x57')][_0x0828('0x57')])||_0x474997['body'][_0x0828('0x57')]===''){throw new db[(_0x0828('0x82'))][(_0x0828('0x83'))](_0x0828('0x8a'));}if(_[_0x0828('0x75')](_0x474997['body']['mapKey'])){throw new db[(_0x0828('0x82'))][(_0x0828('0x83'))](_0x0828('0x8b')+_0x484b3c);}if(!_['includes'](_0x484b3c,_0x474997[_0x0828('0x57')]['mapKey'])){throw new db[(_0x0828('0x82'))][(_0x0828('0x83'))](_0x0828('0x8c')+_0x484b3c);}_0x385f9b[_0x474997[_0x0828('0x57')][_0x0828('0x8d')]]=_0x474997[_0x0828('0x57')][_0x0828('0x88')];})[_0x0828('0x14')](function(){return db[_0x0828('0x32')][_0x0828('0x54')]({'where':{'id':_0x474997[_0x0828('0x49')]['id']},'include':[{'model':db[_0x0828('0x8e')],'as':_0x0828('0x8f'),'include':[{'model':db[_0x0828('0x90')],'as':'Contacts','where':_0x385f9b,'limit':0x1,'order':[[_0x0828('0x86'),'DESC']]}]},{'model':db['ChatApplication'],'as':_0x0828('0x91')}]});})['then'](handleEntityNotFound(_0x330d5d,null))[_0x0828('0x14')](function(_0x45da00){if(_0x45da00&&_0x45da00['List']){_0x4136c7[_0x0828('0x92')]=_0x45da00;_0x4136c7['applications']=_0x45da00[_0x0828('0x91')];_0x4136c7[_0x0828('0x93')]=_0x45da00[_0x0828('0x8f')];_0x4136c7[_0x0828('0x94')]=_[_0x0828('0x95')](_0x4136c7[_0x0828('0x94')],[_0x0828('0x96')],[_0x0828('0x97')]);if(_0x4136c7[_0x0828('0x92')][_0x0828('0x91')]){delete _0x4136c7['account'][_0x0828('0x91')];}if(_0x4136c7['account'][_0x0828('0x8f')]&&_0x4136c7[_0x0828('0x92')][_0x0828('0x8f')][_0x0828('0x98')][_0x0828('0x4d')]){return _0x4136c7['account'][_0x0828('0x8f')]['Contacts'][0x0];}var _0x2554fc=_[_0x0828('0xc')](_0x474997[_0x0828('0x57')],{'firstName':_0x474997[_0x0828('0x57')][_0x0828('0x88')],'ListId':_0x45da00[_0x0828('0x99')]});_0x2554fc[_0x474997[_0x0828('0x57')][_0x0828('0x8d')]]=_0x474997[_0x0828('0x57')][_0x0828('0x88')];return db['CmContact'][_0x0828('0x4e')](_0x2554fc,{'fields':_0x146536,'raw':!![]});}})[_0x0828('0x14')](handleEntityNotFound(_0x330d5d,null))[_0x0828('0x14')](function(_0x4e5409){_0x4136c7[_0x0828('0x9a')]=_0x4e5409;var _0x238ce0=_0x474997[_0x0828('0x57')][_0x0828('0x9b')];if(_0x474997[_0x0828('0x7f')][_0x0828('0x9c')]){_0x238ce0=_0x474997[_0x0828('0x7f')][_0x0828('0x9c')];}else if(_0x474997[_0x0828('0x7f')][_0x0828('0x9d')]){_0x238ce0=_[_0x0828('0x9e')](_0x474997['headers'][_0x0828('0x9d')][_0x0828('0x9f')](','));}if(_0x4e5409){var _0x22f590={'ContactId':_0x4e5409['id'],'ChatWebsiteId':_0x474997[_0x0828('0x49')]['id'],'from':(_0x4e5409[_0x0828('0xa0')]||'')+'\x20'+(_0x4e5409[_0x0828('0xa1')]||''),'customerIp':_0x238ce0,'customerPort':_0x474997['headers'][_0x0828('0xa2')]?_0x474997[_0x0828('0x7f')][_0x0828('0xa2')]:null,'referer':_0x474997[_0x0828('0x57')][_0x0828('0xa3')],'browserName':_0x42850c[_0x0828('0xa4')][_0x0828('0x2e')]&&_0x42850c[_0x0828('0xa4')][_0x0828('0xa5')]?util[_0x0828('0xa6')](_0x0828('0xa7'),_0x42850c[_0x0828('0xa4')]['name'],_0x42850c[_0x0828('0xa4')]['version']):_0x0828('0xa8'),'browserVersion':_0x42850c[_0x0828('0xa4')][_0x0828('0xa5')]||'unknown','osName':util[_0x0828('0xa6')](_0x0828('0xa7'),_0x42850c['os'][_0x0828('0x2e')],_0x42850c['os'][_0x0828('0xa5')]),'osVersion':_0x42850c['os']['version'],'deviceModel':_0x42850c[_0x0828('0xa9')][_0x0828('0x37')]&&_0x42850c[_0x0828('0xa9')]['vendor']?util['format'](_0x0828('0xaa'),_0x42850c['device'][_0x0828('0x37')],_0x42850c[_0x0828('0xa9')]['vendor'],_0x42850c['device'][_0x0828('0x35')]):null,'deviceVendor':_0x42850c[_0x0828('0xa9')][_0x0828('0xab')],'deviceType':_0x42850c[_0x0828('0xa9')]['type'],'formData':JSON[_0x0828('0x18')](_0x474997[_0x0828('0x57')])};var _0x3a9a39={'ChatWebsiteId':_0x474997[_0x0828('0x49')]['id'],'closed':![]};if(_0x474997[_0x0828('0x57')][_0x0828('0xac')]){_0x3a9a39[_0x0828('0xac')]=_0x474997['body']['threadId'];return db[_0x0828('0xad')]['find']({'where':_0x3a9a39})[_0x0828('0x14')](function(_0x4e88c6){if(_0x4e88c6){return[_0x4e88c6,![]];}_0x22f590[_0x0828('0xac')]=_0x474997[_0x0828('0x57')]['threadId'];_0x22f590[_0x0828('0xae')]=_0x474997[_0x0828('0x57')]['externalUrl'];return db[_0x0828('0xad')]['create'](_0x22f590)[_0x0828('0x14')](function(_0x3e8f2b){return[_0x3e8f2b,!![]];});});}_0x3a9a39[_0x0828('0xaf')]=_0x4e5409['id'];if(_0x474997[_0x0828('0x57')][_0x0828('0xb0')]&&_0x474997['body'][_0x0828('0xb0')]['id']){_0x3a9a39['id']=_0x474997['body']['interaction']['id'];return db[_0x0828('0xad')][_0x0828('0x54')]({'where':_0x3a9a39})['then'](function(_0x520c36){if(_0x520c36){return[_0x520c36,![]];}return db[_0x0828('0xad')]['create'](_0x22f590)[_0x0828('0x14')](function(_0x1080eb){return[_0x1080eb,!![]];});});}return db[_0x0828('0xad')][_0x0828('0x4e')](_0x22f590)[_0x0828('0x14')](function(_0x241664){return[_0x241664,!![]];});}})[_0x0828('0xb1')](function(_0x1822e0,_0x467f8b){if(_0x1822e0){_0xb5bcea=_0x467f8b;if(!_0x467f8b){var _0x59b0c4={'from':(_0x4136c7['contact'][_0x0828('0xa0')]||'')+'\x20'+(_0x4136c7[_0x0828('0x9a')]['lastName']||'')};if(_0x474997[_0x0828('0x57')][_0x0828('0xac')]&&_0x474997[_0x0828('0x57')][_0x0828('0xb2')]&&_0x474997['body'][_0x0828('0xac')]!=_0x474997[_0x0828('0x57')][_0x0828('0xb2')]){_0x59b0c4['threadId']=_0x474997[_0x0828('0x57')][_0x0828('0xb2')];}return _0x1822e0[_0x0828('0x28')](_0x59b0c4);}else{return _0x1822e0;}}})['then'](function(_0xd9d90b){_0x4136c7['interaction']=_0xd9d90b[_0x0828('0x2a')]({'plain':!![]});_0x4136c7[_0x0828('0xb0')]['created']=_0xb5bcea;if(_0x4136c7[_0x0828('0xb0')]['created']){if(_0x4136c7[_0x0828('0x92')][_0x0828('0xb3')]){_0x4136c7[_0x0828('0x94')][_0x0828('0xb4')]({'id':0x0,'priority':_0x4136c7[_0x0828('0x94')][_0x0828('0x4d')]+0x1,'app':_0x0828('0xb5'),'appdata':_0x0828('0xb6'),'interval':'*,*,*,*'});}}return db[_0x0828('0xb7')][_0x0828('0x4e')]({'body':_0x474997[_0x0828('0x57')][_0x0828('0x57')],'ChatWebsiteId':_0x474997['params']['id'],'ChatInteractionId':_0xd9d90b['id'],'direction':'in','ContactId':_0x4136c7[_0x0828('0x9a')]['id'],'AttachmentId':_0x474997['body'][_0x0828('0xb8')]});})[_0x0828('0x14')](function(_0x487fc8){_0x4136c7[_0x0828('0x1c')]=_0x487fc8;if(_0x4136c7['interaction'][_0x0828('0xb9')]){return db[_0x0828('0xba')][_0x0828('0x54')]({'attributes':['id',_0x0828('0x2e')],'where':{'id':_0x4136c7[_0x0828('0xb0')][_0x0828('0xb9')]}})['then'](function(_0x1819eb){if(_0x1819eb){_0x4136c7[_0x0828('0x94')]['unshift']({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x1819eb[_0x0828('0x2e')]+','+(_0x4136c7['account'][_0x0828('0xbb')]||0xa),'interval':_0x0828('0xbc')});_0x4136c7[_0x0828('0xbd')]=!![];}return respondWithRpcPromise(_0x0828('0xbe'),'startRouting',_0x4136c7);});}return respondWithRpcPromise(_0x0828('0xbe'),_0x0828('0xbf'),_0x4136c7);})[_0x0828('0x14')](function(_0x128471){respondWithRpcPromise(_0x0828('0xc0'),_0x0828('0xc0'),{'event':'notify','message':_0x128471},client9002);return _0x128471;})[_0x0828('0x14')](respondWithResult(_0x330d5d,null))[_0x0828('0x1e')](handleError(_0x330d5d,null));};exports[_0x0828('0xc1')]=function(_0x575e2f,_0x458e25){var _0xcf22ef,_0x44d67c,_0x1a54bc;var _0x4d2785=[];var _0x13448d={};var _0x50f278=_0x575e2f[_0x0828('0xc2')]||[];var _0x45e249=[];var _0x188451;return db['CmContact'][_0x0828('0x58')]()[_0x0828('0x14')](function(_0x387d33){if(!_0x387d33){throw new db[(_0x0828('0x82'))][(_0x0828('0x83'))](_0x0828('0xc3'));}_0x4d2785=_[_0x0828('0x84')](_[_0x0828('0x4b')](_0x387d33),[_0x0828('0x85'),_0x0828('0x86'),_0x0828('0x87'),_0x0828('0x99')]);if(_0x575e2f['body']['id']){delete _0x575e2f[_0x0828('0x57')]['id'];}if(_[_0x0828('0x75')](_0x575e2f[_0x0828('0x57')][_0x0828('0x88')])){throw _0x458e25[_0x0828('0x20')](0x1f4)[_0x0828('0x2f')](new db['Sequelize']['ValidationError'](_0x0828('0x89')));}if(_[_0x0828('0x75')](_0x575e2f[_0x0828('0x57')][_0x0828('0x57')])||_0x575e2f[_0x0828('0x57')]['body']===''){throw _0x458e25[_0x0828('0x20')](0x1f4)['send'](new db['Sequelize'][(_0x0828('0x83'))](_0x0828('0x8a')));}if(_[_0x0828('0x75')](_0x575e2f[_0x0828('0x57')][_0x0828('0xc4')])){throw _0x458e25[_0x0828('0x20')](0x1f4)[_0x0828('0x2f')](new db['Sequelize']['ValidationError'](_0x0828('0xc5')+_0x4d2785));}if(!_[_0x0828('0xc6')](_0x4d2785,_0x575e2f[_0x0828('0x57')][_0x0828('0xc4')])){throw _0x458e25[_0x0828('0x20')](0x1f4)[_0x0828('0x2f')](new db[(_0x0828('0x82'))][(_0x0828('0x83'))]('mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4d2785));}_0x13448d[_0x575e2f[_0x0828('0x57')]['mapKeyOffline']]=_0x575e2f[_0x0828('0x57')][_0x0828('0x88')];})[_0x0828('0x14')](function(){return db['ChatWebsite'][_0x0828('0x54')]({'where':{'id':_0x575e2f['params']['id']},'include':[{'model':db['CmList'],'as':_0x0828('0x8f')},{'model':db[_0x0828('0xc7')],'as':'MailAccount'}]});})['then'](handleEntityNotFound(_0x458e25,null))['then'](function(_0x55bbe6){if(_0x55bbe6&&_0x55bbe6[_0x0828('0x8f')]){_0x44d67c=_0x55bbe6;var _0x182603=_['defaults'](_0x575e2f[_0x0828('0x57')],{'firstName':_0x575e2f['body'][_0x0828('0x88')],'phone':_0x575e2f[_0x0828('0x57')][_0x0828('0x88')],'ListId':_0x55bbe6['ListId']});_0x182603[_0x575e2f[_0x0828('0x57')][_0x0828('0xc4')]]=_0x575e2f[_0x0828('0x57')][_0x0828('0x88')];return db[_0x0828('0x90')][_0x0828('0xc8')]({'where':_0x13448d,'defaults':_0x182603});}})[_0x0828('0xb1')](function(_0x53bd55){if(_0x53bd55){_0x1a54bc=_0x53bd55;var _0x42593b=fs[_0x0828('0xc9')](path['join'](config[_0x0828('0x70')],_0x0828('0xca')),_0x0828('0xcb'));var _0x34d3c4=ejs[_0x0828('0xcc')](_0x42593b,{'body':_[_0x0828('0xcd')](_0x575e2f[_0x0828('0x57')][_0x0828('0x57')]),'bodyTitle':_0x44d67c[_0x0828('0xce')]});return db[_0x0828('0xcf')][_0x0828('0x4e')]({'body':_0x34d3c4,'plainBody':htmlToText['fromString'](_0x34d3c4),'ContactId':_0x53bd55['id'],'ChatWebsiteId':_0x44d67c['id']});}})[_0x0828('0x14')](function(_0x3193c8){_0x188451=_0x3193c8;if(_0x50f278['length']){var _0x5d864b=_0x50f278[_0x0828('0x31')](function(_0x2771ee){return{'name':_0x2771ee[_0x0828('0xd0')],'basename':_0x2771ee[_0x0828('0x6a')],'type':_0x2771ee[_0x0828('0xd1')],'ChatOfflineMessageId':_0x3193c8['id']};});_0x45e249=_0x5d864b[_0x0828('0x31')](_0x46ff03=>{var _0x1b5998={'filename':_0x46ff03[_0x0828('0x2e')],'path':path['join'](config[_0x0828('0x70')],_0x0828('0xd2'),_0x0828('0xc2'),'attachments','offline-chat',_0x46ff03[_0x0828('0xd3')])};return _0x1b5998;});if(!_0x44d67c['openNewInteraction']){return db['sequelize']['transaction'](function(_0xa5ed56){return db[_0x0828('0xd4')]['bulkCreate'](_0x5d864b,{'transaction':_0xa5ed56});});}}})[_0x0828('0x14')](function(){if(_0x188451){_0xcf22ef=_0x188451;return db[_0x0828('0xc7')]['findOne']({'where':{'service':!![]},'include':[{'model':db[_0x0828('0xd5')],'as':_0x0828('0xd6'),'raw':!![],'include':[{'model':db[_0x0828('0xd7')],'as':'CloudProvider','raw':!![]}]}]});}})['then'](function(_0x330cda){if(_0x330cda&&_0x330cda[_0x0828('0xd6')]&&_0x44d67c['forwardOffline']&&_0x44d67c['forwardOfflineAddress']){var _0x277c0e=_0x330cda[_0x0828('0xd8')]();return respondWithRpcPromise(_0x0828('0xd9'),_0x0828('0xda'),{'account':_0x277c0e,'message':{'from':util[_0x0828('0xa6')](_0x0828('0xdb'),_0x330cda['name'],_0x330cda[_0x0828('0xdc')]||_0x330cda[_0x0828('0xd6')]['user']),'to':_0x44d67c[_0x0828('0xdd')],'subject':_0x44d67c[_0x0828('0xde')],'html':_0xcf22ef[_0x0828('0x57')],'attachments':_0x45e249}},client9003)[_0x0828('0x14')](function(){return _0xcf22ef;})['catch'](function(_0x13e7de){logger['error'](_0x13e7de);});}})[_0x0828('0x14')](function(){if(_0x44d67c&&_0x44d67c[_0x0828('0xdf')]&&_0x44d67c[_0x0828('0xe0')]){var _0x169108=[];if(_0x50f278[_0x0828('0x4d')]){_0x169108=_0x50f278[_0x0828('0x31')](function(_0x2b2548){return{'name':_0x2b2548[_0x0828('0xd0')],'basename':_0x2b2548[_0x0828('0x6a')],'type':_0x2b2548['mimetype'],'ChatOfflineMessageId':_0x188451['id']};});}var _0x196b31;if(!_[_0x0828('0x75')](_0x44d67c[_0x0828('0xe1')])){var _0x1294d4=_[_0x0828('0x31')](_0x575e2f[_0x0828('0x57')],function(_0x56ab8d){return _0x56ab8d;});var _0x5c4a9f=_[_0x0828('0xe2')](_0x1294d4)[0x0];var _0x372ac6=_[_0x0828('0xe3')](_0x5c4a9f,function(_0x2c64e9){return _0x2c64e9;});_0x196b31=_0x372ac6[0x1][_0x44d67c['subjectOffline']];}var _0x50a395={'from':_0x1a54bc[_0x0828('0xdc')],'firstName':_0x1a54bc[_0x0828('0xa0')],'lastName':_0x1a54bc[_0x0828('0xa1')],'mapKey':_0x0828('0xdc'),'message':{'from':_0x1a54bc['email'],'to':_0x44d67c[_0x0828('0xc7')]['email'],'cc':'','subject':_['isNil'](_0x196b31)?_0x44d67c[_0x0828('0xde')]:_0x196b31,'messageId':'','sentAt':new Date(),'attach':_0x169108[_0x0828('0x4d')],'attachments':_0x169108,'originChannel':_0x0828('0xe4'),'ChatWebsiteId':_0x44d67c['id'],'ChatOfflineMessageId':_0xcf22ef['id'],'originTo':_0x44d67c[_0x0828('0xc7')][_0x0828('0xdc')]},'body':_0xcf22ef[_0x0828('0x57')]};var _0x192f39={'account':{'id':_0x44d67c[_0x0828('0xe0')]},'body':_0x50a395,'log':_0x0828('0xe5')};return respondWithRpcPromise(_0x0828('0xe5'),'notifyMail',_0x192f39,client9001)[_0x0828('0x14')](function(){return _0xcf22ef;})[_0x0828('0x1e')](function(_0x4e160b){logger[_0x0828('0x1a')](_0x4e160b);});}return;})[_0x0828('0x14')](function(){if(_0xcf22ef){return _0xcf22ef;}})[_0x0828('0x14')](respondWithResult(_0x458e25,null))['catch'](function(_0x23a3ca){logger[_0x0828('0x1a')](_0x0828('0x1e'),_0x23a3ca);for(var _0x37c199 of _0x50f278){var _0x134fb9=path['join'](config[_0x0828('0x70')],_0x0828('0xd2'),_0x0828('0xc2'),_0x0828('0xe6'),_0x0828('0xe7'),_0x37c199[_0x0828('0x6a')]);fs_extra[_0x0828('0xe8')](_0x134fb9)['catch'](function(_0x20c60a){logger[_0x0828('0x1a')](_0x0828('0xe9'),_0x134fb9,_0x20c60a);});}});};exports[_0x0828('0xea')]=function(_0x5ede3f,_0x29c710){return db[_0x0828('0xad')][_0x0828('0x54')]({'where':{'id':_0x5ede3f[_0x0828('0x49')]['id']}})['then'](handleEntityNotFound(_0x29c710,null))[_0x0828('0x14')](function(_0x76e4d8){if(_0x76e4d8){return _0x76e4d8[_0x0828('0xea')](_0x5ede3f[_0x0828('0x57')][_0x0828('0x61')],_['omit'](_0x5ede3f[_0x0828('0x57')],[_0x0828('0x61'),'id'])||{});}})['then'](respondWithResult(_0x29c710,null))['catch'](handleError(_0x29c710,null));};exports['getInteractions']=function(_0x27dbcd,_0x96ef16){var _0x469515={'raw':![],'where':{}};var _0x4b8ec5={};var _0x21deb0={'count':0x0,'rows':[]};return db[_0x0828('0x32')]['findOne']({'where':{'id':_0x27dbcd[_0x0828('0x49')]['id']}})['then'](handleEntityNotFound(_0x96ef16,null))[_0x0828('0x14')](function(_0x27d538){if(_0x27d538){_0x4b8ec5['model']=_[_0x0828('0x4b')](db['ChatInteraction'][_0x0828('0x33')]);_0x4b8ec5['query']=_[_0x0828('0x4b')](_0x27dbcd['query']);_0x4b8ec5[_0x0828('0x39')]=_['intersection'](_0x4b8ec5[_0x0828('0x37')],_0x4b8ec5[_0x0828('0x38')]);_0x469515[_0x0828('0x3b')]=_[_0x0828('0x3a')](_0x4b8ec5[_0x0828('0x37')],qs[_0x0828('0x4c')](_0x27dbcd[_0x0828('0x38')][_0x0828('0x4c')]));_0x469515[_0x0828('0x3b')]=_0x469515[_0x0828('0x3b')]['length']?_0x469515[_0x0828('0x3b')]:_0x4b8ec5[_0x0828('0x37')];if(!_0x27dbcd[_0x0828('0x38')][_0x0828('0x3c')]('nolimit')){_0x469515[_0x0828('0x23')]=qs['limit'](_0x27dbcd[_0x0828('0x38')][_0x0828('0x23')]);_0x469515[_0x0828('0x25')]=qs[_0x0828('0x25')](_0x27dbcd['query'][_0x0828('0x25')]);}_0x469515[_0x0828('0x3e')]=qs[_0x0828('0x3f')](_0x27dbcd[_0x0828('0x38')]['sort']);_0x469515[_0x0828('0x40')]=qs[_0x0828('0x39')](_[_0x0828('0x5d')](_0x27dbcd[_0x0828('0x38')],_0x4b8ec5[_0x0828('0x39')]));_0x469515[_0x0828('0x40')][_0x0828('0x5e')]=_0x27d538['id'];if(_0x27dbcd[_0x0828('0x38')]['filter']){_0x469515[_0x0828('0x40')]=_['merge'](_0x469515[_0x0828('0x40')],{'$or':_[_0x0828('0x31')](_0x469515[_0x0828('0x3b')],function(_0x39088b){var _0x3441b4={};_0x3441b4[_0x39088b]={'$like':'%'+_0x27dbcd[_0x0828('0x38')][_0x0828('0x41')]+'%'};return _0x3441b4;})});}_0x469515=_[_0x0828('0x42')]({},_0x469515,_0x27dbcd[_0x0828('0x44')]);return db[_0x0828('0xad')][_0x0828('0x24')]({'where':_0x469515['where']})['then'](function(_0x56fa59){_0x21deb0['count']=_0x56fa59;if(_0x27dbcd[_0x0828('0x38')][_0x0828('0x45')]){_0x469515[_0x0828('0x46')]=[{'model':db['CmContact'],'as':_0x0828('0xeb'),'required':![]},{'model':db[_0x0828('0xba')],'as':_0x0828('0xec'),'attributes':[_0x0828('0x2e'),'fullname',_0x0828('0xed')],'required':![]},{'model':db[_0x0828('0xee')],'as':_0x0828('0xef'),'attributes':['id',_0x0828('0x2e'),_0x0828('0xf0')],'where':_0x27dbcd[_0x0828('0x38')][_0x0828('0xf1')]?{'id':_0x27dbcd['query'][_0x0828('0xf1')]}:undefined,'required':_0x27dbcd[_0x0828('0x38')][_0x0828('0xf1')]?!![]:![]}];}return db['ChatInteraction'][_0x0828('0x5f')](_0x469515);})[_0x0828('0x14')](function(_0x228fd8){_0x21deb0[_0x0828('0x47')]=_0x228fd8;return _0x21deb0;});}})['then'](respondWithFilteredResult(_0x96ef16,_0x469515))['catch'](handleError(_0x96ef16,null));};function iftimePromise(_0x14c169,_0x36fc77){return respondWithRpcPromise(_0x0828('0xf2'),_0x0828('0xf3'),{'command':_0x36fc77[_0x0828('0xf4')]?util['format'](_0x0828('0xf5'),_0x14c169[_0x0828('0xf6')],_0x36fc77[_0x0828('0xf4')]):util[_0x0828('0xa6')](_0x0828('0xf7'),_0x14c169[_0x0828('0xf6')])},client9002)[_0x0828('0x14')](function(_0x5b7d95){var _0x1deac8=_0x5b7d95&&_0x5b7d95[_0x0828('0xf8')](_0x0828('0xf9'))>=0x0?!![]:![];logger[_0x0828('0x15')](_0x0828('0xfa'),_0x36fc77['id'],_0x14c169['id'],_0x14c169[_0x0828('0xf6')],_0x1deac8?_0x0828('0xfb'):_0x0828('0xfc'),_0x36fc77[_0x0828('0xf4')]?_0x36fc77[_0x0828('0xf4')]:_0x0828('0xfd'));return _0x1deac8;})['catch'](function(_0x363338){logger[_0x0828('0x1a')](_0x0828('0xfa'),_0x36fc77['id'],_0x14c169['id'],_0x14c169[_0x0828('0xf6')],util[_0x0828('0xfe')](_0x363338,{'showHidden':![],'depth':null}),_0x36fc77[_0x0828('0xf4')]?_0x36fc77[_0x0828('0xf4')]:_0x0828('0xfd'));return![];});}exports[_0x0828('0xf3')]=function(_0x683488,_0xb3738f){var _0xbf686a=0x0;var _0x136ee5=0x0;var _0xf09ee5=![];var _0x510904;var _0x2ded6d;return db[_0x0828('0x32')][_0x0828('0x54')]({'where':{'id':_0x683488[_0x0828('0x49')]['id']},'include':[{'model':db[_0x0828('0xff')],'as':'Interval','include':[{'model':db[_0x0828('0xff')],'as':_0x0828('0x100'),'attributes':['id',_0x0828('0xf6')],'raw':!![]}]}]})['then'](handleEntityNotFound(_0xb3738f,null))[_0x0828('0x14')](function(_0x4d96a0){if(_0x4d96a0){_0x510904=_0x4d96a0;return _0x4d96a0['getProactiveActions']({'raw':!![]});}})[_0x0828('0x14')](function(_0x573b47){if(_0x510904){if(_0x573b47){_0x2ded6d=_0x573b47;}}return require('../../config/license/util')[_0x0828('0x73')]();})[_0x0828('0x14')](function(_0x833ff1){if(_0x833ff1){_0x136ee5=_0x833ff1[_0x0828('0x101')];_0xf09ee5=_0x833ff1[_0x0828('0x74')];}})[_0x0828('0x14')](function(){return db[_0x0828('0xad')][_0x0828('0x24')]({'where':{'closed':![]}});})[_0x0828('0x14')](function(_0x611b9f){_0xbf686a=_0x611b9f;if(_0x136ee5&&_0x611b9f>_0x136ee5){return db[_0x0828('0x102')]['findOne']({'where':{'id':0x1}})[_0x0828('0x14')](function(_0x8dc573){if(_0x8dc573){_0x8dc573[_0x0828('0x103')](_0x0828('0x104'));}});}})[_0x0828('0x14')](function(){if(_0x510904[_0x0828('0xff')]&&_0x510904[_0x0828('0xff')][_0x0828('0x100')]){var _0x396623=[];for(var _0xaa9683=0x0;_0xaa9683<_0x510904['Interval'][_0x0828('0x100')][_0x0828('0x4d')];_0xaa9683++){var _0x3caab8=_0x510904[_0x0828('0xff')][_0x0828('0x100')][_0xaa9683][_0x0828('0x2a')]({'plain':!![]});_0x396623[_0x0828('0xb4')](iftimePromise(_0x3caab8,_0x510904));}return BPromise['all'](_0x396623)[_0x0828('0x14')](function(_0x363a3e){return _[_0x0828('0x105')](_0x363a3e);});}else{return!![];}})[_0x0828('0x14')](function(_0x48bd75){var _0x28dae4=fs[_0x0828('0xc9')](path['join'](config['root'],_0x0828('0x106')),'utf8');var _0x24a6f1={'remote':_0x510904[_0x0828('0x107')],'query':querystring['stringify'](_[_0x0828('0x42')](_0x510904[_0x0828('0x2a')]({'plain':!![]}),{'customerIp':_0x683488['headers']['x-forwarded-for']||_0x683488[_0x0828('0x7f')]['x-real-ip']||_0x683488[_0x0828('0x108')][_0x0828('0x109')]||_0x683488['ip'],'referer':_0x683488['headers'][_0x0828('0xa3')],'openedInteractions':_0xbf686a,'maxInteractions':_0x136ee5,'virtual':_0xf09ee5[_0x0828('0x101')],'online':_0x48bd75,'custom':_0xf09ee5}))[_0x0828('0x10a')](/'/g,'\x5c\x27')};_0xb3738f[_0x0828('0x2f')](ejs[_0x0828('0xcc')](Mustache[_0x0828('0xcc')](_0x28dae4,_0x24a6f1),{'proactiveActions':_0x2ded6d,'alignment':_0x510904['alignment'],'verticalAlignment':_0x510904[_0x0828('0x10b')],'div_color':_0x510904[_0x0828('0xf0')],'labelText':_0x510904[_0x0828('0x10c')],'text_color':_0x510904['textColor'],'text_button_color':_0x510904[_0x0828('0x10d')],'button_color':_0x510904[_0x0828('0x10e')],'background_color':_0x510904['backgroundColor'],'hideWhenOffline':_0x510904[_0x0828('0x10f')],'interval':_0x510904[_0x0828('0x110')]}));})[_0x0828('0x1e')](handleError(_0xb3738f,null));};exports[_0x0828('0x111')]=function(_0xe0b0bb,_0x375823){var _0x2e30f0=_0xe0b0bb[_0x0828('0x49')]['id'];var _0x554a43=_0xe0b0bb[_0x0828('0x57')];var _0x34961a=0xc8;var _0x5bd9a8=null;return db['sequelize'][_0x0828('0x112')]({'isolationLevel':db[_0x0828('0x113')][_0x0828('0x114')][_0x0828('0x115')]['READ_COMMITTED']},function(_0x1fa34c){return db[_0x0828('0x32')][_0x0828('0x5c')]({'where':{'id':_0x2e30f0},'transaction':_0x1fa34c})['then'](function(_0x3d7c3d){if(_0x3d7c3d){return db[_0x0828('0x116')][_0x0828('0x29')]({'where':{'ChatWebsiteId':_0x2e30f0},'transaction':_0x1fa34c})['then'](function(){var _0x16e881=_['map'](_0x554a43,function(_0x30d421){_0x30d421[_0x0828('0x5e')]=_0x2e30f0;return _0x30d421;});return db[_0x0828('0x116')][_0x0828('0x117')](_0x16e881,{'transaction':_0x1fa34c});});}else{_0x34961a=0x194;_0x5bd9a8=[];}});})['then'](function(){if(_0x34961a!==0x194){return db['ChatApplication'][_0x0828('0x118')]({'where':{'ChatWebsiteId':_0x2e30f0},'order':_0x0828('0x96')})[_0x0828('0x14')](function(_0x27c672){_0x5bd9a8=_0x27c672;});}})[_0x0828('0x1e')](function(_0x458392){_0x34961a=0x1f4;logger['error'](_0x458392[_0x0828('0x2d')]);if(_0x458392[_0x0828('0x2e')]){delete _0x458392[_0x0828('0x2e')];}_0x5bd9a8=_0x458392;})['finally'](function(){if(_0x5bd9a8===null){_0x375823[_0x0828('0x2c')](_0x34961a);}else{if(_0x34961a===0x1f4){_0x375823['status'](_0x34961a)[_0x0828('0x2f')](_0x5bd9a8);}else{_0x375823['status'](_0x34961a)[_0x0828('0x21')](_0x5bd9a8);}}});};exports[_0x0828('0x119')]=function(_0x2e66c7,_0x514414){var _0x53b904={};var _0x5c350c={};var _0x233622;var _0x329f47;return db[_0x0828('0x32')][_0x0828('0x5c')]({'where':{'id':_0x2e66c7['params']['id']}})[_0x0828('0x14')](handleEntityNotFound(_0x514414,null))['then'](function(_0x421a09){if(_0x421a09){_0x233622=_0x421a09;_0x5c350c[_0x0828('0x37')]=_[_0x0828('0x4b')](db[_0x0828('0x116')][_0x0828('0x33')]);_0x5c350c[_0x0828('0x38')]=_[_0x0828('0x4b')](_0x2e66c7[_0x0828('0x38')]);_0x5c350c['filters']=_[_0x0828('0x3a')](_0x5c350c['model'],_0x5c350c[_0x0828('0x38')]);_0x53b904[_0x0828('0x3b')]=_[_0x0828('0x3a')](_0x5c350c[_0x0828('0x37')],qs[_0x0828('0x4c')](_0x2e66c7[_0x0828('0x38')][_0x0828('0x4c')]));_0x53b904[_0x0828('0x3b')]=_0x53b904['attributes'][_0x0828('0x4d')]?_0x53b904[_0x0828('0x3b')]:_0x5c350c[_0x0828('0x37')];_0x53b904[_0x0828('0x3e')]=qs['sort'](_0x2e66c7[_0x0828('0x38')][_0x0828('0x3f')]);_0x53b904[_0x0828('0x40')]=qs[_0x0828('0x39')](_[_0x0828('0x5d')](_0x2e66c7[_0x0828('0x38')],_0x5c350c[_0x0828('0x39')]));if(_0x2e66c7[_0x0828('0x38')][_0x0828('0x41')]){_0x53b904[_0x0828('0x40')]=_[_0x0828('0x42')](_0x53b904[_0x0828('0x40')],{'$or':_[_0x0828('0x31')](_0x53b904[_0x0828('0x3b')],function(_0x238cd2){var _0x49d199={};_0x49d199[_0x238cd2]={'$like':'%'+_0x2e66c7[_0x0828('0x38')][_0x0828('0x41')]+'%'};return _0x49d199;})});}_0x53b904=_[_0x0828('0x42')]({},_0x53b904,_0x2e66c7['options']);return _0x233622[_0x0828('0x119')](_0x53b904);}})[_0x0828('0x14')](function(_0x1eca83){if(_0x1eca83){_0x329f47=_0x1eca83[_0x0828('0x4d')];if(!_0x2e66c7[_0x0828('0x38')][_0x0828('0x3c')](_0x0828('0x3d'))){_0x53b904[_0x0828('0x23')]=qs['limit'](_0x2e66c7[_0x0828('0x38')]['limit']);_0x53b904[_0x0828('0x25')]=qs[_0x0828('0x25')](_0x2e66c7[_0x0828('0x38')][_0x0828('0x25')]);}return _0x233622[_0x0828('0x119')](_0x53b904);}})[_0x0828('0x14')](function(_0x52cd7b){if(_0x52cd7b){return _0x52cd7b?{'count':_0x329f47,'rows':_0x52cd7b}:null;}})[_0x0828('0x14')](respondWithResult(_0x514414,null))[_0x0828('0x1e')](handleError(_0x514414,null));};exports[_0x0828('0x11a')]=function(_0x51ebfe,_0x2e5bab){return db['chatProactiveAction'][_0x0828('0x54')]({'where':{'id':_0x51ebfe[_0x0828('0x49')]['id']}})[_0x0828('0x14')](handleEntityNotFound(_0x2e5bab,null))[_0x0828('0x14')](function(_0x21667e){if(_0x21667e){return _0x21667e[_0x0828('0x11a')](_0x51ebfe[_0x0828('0x57')]['ids'],_[_0x0828('0x11b')](_0x51ebfe[_0x0828('0x57')],[_0x0828('0x61'),'id'])||{});}})[_0x0828('0x14')](respondWithResult(_0x2e5bab,null))[_0x0828('0x1e')](handleError(_0x2e5bab,null));};exports[_0x0828('0x11c')]=function(_0x2b3765,_0xa6b094){var _0x26fe55={};var _0x56d66a={};var _0x40dc72;var _0xda34e8;return db[_0x0828('0x32')][_0x0828('0x5c')]({'where':{'id':_0x2b3765[_0x0828('0x49')]['id']}})[_0x0828('0x14')](handleEntityNotFound(_0xa6b094,null))[_0x0828('0x14')](function(_0x75a112){if(_0x75a112){_0x40dc72=_0x75a112;_0x56d66a[_0x0828('0x37')]=_['keys'](db[_0x0828('0x11d')]['rawAttributes']);_0x56d66a[_0x0828('0x38')]=_[_0x0828('0x4b')](_0x2b3765[_0x0828('0x38')]);_0x56d66a[_0x0828('0x39')]=_['intersection'](_0x56d66a[_0x0828('0x37')],_0x56d66a[_0x0828('0x38')]);_0x26fe55[_0x0828('0x3b')]=_[_0x0828('0x3a')](_0x56d66a[_0x0828('0x37')],qs[_0x0828('0x4c')](_0x2b3765['query'][_0x0828('0x4c')]));_0x26fe55[_0x0828('0x3b')]=_0x26fe55[_0x0828('0x3b')][_0x0828('0x4d')]?_0x26fe55[_0x0828('0x3b')]:_0x56d66a[_0x0828('0x37')];_0x26fe55[_0x0828('0x3e')]=qs[_0x0828('0x3f')](_0x2b3765['query'][_0x0828('0x3f')]);_0x26fe55[_0x0828('0x40')]=qs[_0x0828('0x39')](_['pick'](_0x2b3765[_0x0828('0x38')],_0x56d66a['filters']));if(_0x2b3765[_0x0828('0x38')]['filter']){_0x26fe55['where']=_['merge'](_0x26fe55[_0x0828('0x40')],{'$or':_[_0x0828('0x31')](_0x26fe55[_0x0828('0x3b')],function(_0x21bb16){var _0x386052={};_0x386052[_0x21bb16]={'$like':'%'+_0x2b3765[_0x0828('0x38')][_0x0828('0x41')]+'%'};return _0x386052;})});}_0x26fe55=_['merge']({},_0x26fe55,_0x2b3765[_0x0828('0x44')]);return _0x40dc72[_0x0828('0x11c')](_0x26fe55);}})[_0x0828('0x14')](function(_0x3883ea){if(_0x3883ea){_0xda34e8=_0x3883ea[_0x0828('0x4d')];if(!_0x2b3765[_0x0828('0x38')]['hasOwnProperty'](_0x0828('0x3d'))){_0x26fe55[_0x0828('0x23')]=qs[_0x0828('0x23')](_0x2b3765['query']['limit']);_0x26fe55[_0x0828('0x25')]=qs[_0x0828('0x25')](_0x2b3765['query'][_0x0828('0x25')]);}return _0x40dc72[_0x0828('0x11c')](_0x26fe55);}})[_0x0828('0x14')](function(_0x4c1fdf){if(_0x4c1fdf){return _0x4c1fdf?{'count':_0xda34e8,'rows':_0x4c1fdf}:null;}})[_0x0828('0x14')](respondWithResult(_0xa6b094,null))[_0x0828('0x1e')](handleError(_0xa6b094,null));};exports[_0x0828('0x11e')]=function(_0x47dccc,_0xeaa35e){var _0x5c1c53=_0x47dccc[_0x0828('0x38')][_0x0828('0x11f')]==='false'?_0x0828('0x120'):_0x0828('0x121');return db[_0x0828('0x32')]['find']({'attributes':['id',_0x5c1c53],'where':{'id':_0x47dccc['params']['id']}})[_0x0828('0x14')](handleEntityNotFound(_0xeaa35e,null))[_0x0828('0x14')](function(_0x388b18){if(_0x388b18){var _0x1b97fb=_0x388b18[_0x5c1c53];var _0x40ec5b=_0x1b97fb&&_0x1b97fb[_0x0828('0x122')]?_0x1b97fb[_0x0828('0x122')]:[];_0xeaa35e['send']({'fromKey':_[_0x0828('0x75')](_0x1b97fb['fromKey'])?undefined:_0x1b97fb[_0x0828('0x123')],'count':_0x40ec5b[_0x0828('0x4d')],'rows':_0x40ec5b});}})[_0x0828('0x1e')](handleError(_0xeaa35e,null));};exports[_0x0828('0x124')]=function(_0x3bc7dd,_0x242886){var _0x3545b4={'raw':![],'where':{}};var _0x41fd5b={};var _0x4dd8ce={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x0828('0x5c')]({'where':{'id':_0x3bc7dd[_0x0828('0x49')]['id']}})[_0x0828('0x14')](handleEntityNotFound(_0x242886,null))[_0x0828('0x14')](function(_0x5de69a){if(_0x5de69a){_0x41fd5b[_0x0828('0x37')]=_[_0x0828('0x4b')](db[_0x0828('0xcf')][_0x0828('0x33')]);_0x41fd5b[_0x0828('0x38')]=_[_0x0828('0x4b')](_0x3bc7dd[_0x0828('0x38')]);_0x41fd5b[_0x0828('0x39')]=_[_0x0828('0x3a')](_0x41fd5b['model'],_0x41fd5b[_0x0828('0x38')]);_0x3545b4[_0x0828('0x3b')]=_[_0x0828('0x3a')](_0x41fd5b[_0x0828('0x37')],qs[_0x0828('0x4c')](_0x3bc7dd[_0x0828('0x38')]['fields']));_0x3545b4[_0x0828('0x3b')]=_0x3545b4[_0x0828('0x3b')][_0x0828('0x4d')]?_0x3545b4['attributes']:_0x41fd5b[_0x0828('0x37')];if(!_0x3bc7dd[_0x0828('0x38')]['hasOwnProperty'](_0x0828('0x3d'))){_0x3545b4['limit']=qs['limit'](_0x3bc7dd[_0x0828('0x38')][_0x0828('0x23')]);_0x3545b4[_0x0828('0x25')]=qs['offset'](_0x3bc7dd[_0x0828('0x38')]['offset']);}_0x3545b4[_0x0828('0x3e')]=qs['sort'](_0x3bc7dd[_0x0828('0x38')]['sort']);_0x3545b4[_0x0828('0x40')]=qs[_0x0828('0x39')](_['pick'](_0x3bc7dd['query'],_0x41fd5b[_0x0828('0x39')]));_0x3545b4['where'][_0x0828('0x5e')]=_0x5de69a['id'];if(_0x3bc7dd['query'][_0x0828('0x41')]){_0x3545b4[_0x0828('0x40')]=_[_0x0828('0x42')](_0x3545b4[_0x0828('0x40')],{'$or':_[_0x0828('0x31')](_0x3545b4['attributes'],function(_0x453316){var _0x19e0de={};_0x19e0de[_0x453316]={'$like':'%'+_0x3bc7dd['query']['filter']+'%'};return _0x19e0de;})});}_0x3545b4=_[_0x0828('0x42')]({},_0x3545b4,_0x3bc7dd['options']);return db[_0x0828('0xcf')]['count']({'where':_0x3545b4[_0x0828('0x40')]})[_0x0828('0x14')](function(_0x23d3df){_0x4dd8ce[_0x0828('0x24')]=_0x23d3df;if(_0x3bc7dd[_0x0828('0x38')]['includeAll']){_0x3545b4['include']=[{'all':!![]}];}else{_0x3545b4[_0x0828('0x46')]=[{'model':db[_0x0828('0x90')],'as':_0x0828('0xeb'),'required':![]},{'model':db[_0x0828('0xd4')],'as':_0x0828('0x125'),'required':![]}];}return db['ChatOfflineMessage']['findAll'](_0x3545b4);})[_0x0828('0x14')](function(_0x5d3bc5){_0x4dd8ce[_0x0828('0x47')]=_0x5d3bc5;return _0x4dd8ce;});}})[_0x0828('0x14')](respondWithFilteredResult(_0x242886,_0x3545b4))[_0x0828('0x1e')](handleError(_0x242886,null));};exports[_0x0828('0x126')]=function(_0x1b6422,_0x30f4e6){return db['ChatWebsite']['find']({'where':{'id':_0x1b6422['params']['id']}})[_0x0828('0x14')](handleEntityNotFound(_0x30f4e6,null))['then'](function(_0x4ec534){if(_0x4ec534){return _0x4ec534['addAgents'](_0x1b6422[_0x0828('0x57')][_0x0828('0x61')],_[_0x0828('0x11b')](_0x1b6422[_0x0828('0x57')],['ids','id'])||{})['spread'](function(_0x1ddd63){for(var _0x36175e=0x0;_0x36175e<_0x1b6422['body'][_0x0828('0x61')][_0x0828('0x4d')];_0x36175e+=0x1){socket['emit'](_0x0828('0x127'),{'UserId':Number(_0x1b6422[_0x0828('0x57')]['ids'][_0x36175e]),'ChatWebsiteId':Number(_0x1b6422[_0x0828('0x49')]['id'])});}return _0x1ddd63;});}})[_0x0828('0x14')](respondWithResult(_0x30f4e6,null))[_0x0828('0x1e')](handleError(_0x30f4e6,null));};exports[_0x0828('0x128')]=function(_0x1cdcc0,_0x51a9ab){return db[_0x0828('0x32')][_0x0828('0x54')]({'where':{'id':_0x1cdcc0[_0x0828('0x49')]['id']}})['then'](handleEntityNotFound(_0x51a9ab,null))[_0x0828('0x14')](function(_0x3bae08){if(_0x3bae08){return _0x3bae08[_0x0828('0x128')](_0x1cdcc0[_0x0828('0x38')][_0x0828('0x61')])[_0x0828('0x14')](function(){if(_[_0x0828('0x129')](_0x1cdcc0['query']['ids'])){for(var _0x857e71=0x0;_0x857e71<_0x1cdcc0[_0x0828('0x38')][_0x0828('0x61')][_0x0828('0x4d')];_0x857e71+=0x1){socket[_0x0828('0x12a')]('userChatWebsite:remove',{'UserId':Number(_0x1cdcc0[_0x0828('0x38')][_0x0828('0x61')][_0x857e71]),'ChatWebsiteId':Number(_0x1cdcc0['params']['id'])});}}else{socket[_0x0828('0x12a')](_0x0828('0x12b'),{'UserId':Number(_0x1cdcc0['query'][_0x0828('0x61')]),'ChatWebsiteId':Number(_0x1cdcc0[_0x0828('0x49')]['id'])});}});}})[_0x0828('0x14')](respondWithStatusCode(_0x51a9ab,null))[_0x0828('0x1e')](handleError(_0x51a9ab,null));};exports[_0x0828('0x12c')]=function(_0xc6712a,_0x73d134){var _0x3f8821={};var _0x280afe={};var _0x89116f;var _0x55cb62;return db[_0x0828('0x32')][_0x0828('0x5c')]({'where':{'id':_0xc6712a['params']['id']}})[_0x0828('0x14')](handleEntityNotFound(_0x73d134,null))[_0x0828('0x14')](function(_0x1c41f0){if(_0x1c41f0){_0x89116f=_0x1c41f0;_0x280afe[_0x0828('0x37')]=_['keys'](db[_0x0828('0xba')][_0x0828('0x33')]);_0x280afe[_0x0828('0x38')]=_['keys'](_0xc6712a[_0x0828('0x38')]);_0x280afe[_0x0828('0x39')]=_['intersection'](_0x280afe[_0x0828('0x37')],_0x280afe[_0x0828('0x38')]);_0x3f8821[_0x0828('0x3b')]=_[_0x0828('0x3a')](_0x280afe[_0x0828('0x37')],qs[_0x0828('0x4c')](_0xc6712a['query'][_0x0828('0x4c')]));_0x3f8821[_0x0828('0x3b')]=_0x3f8821['attributes']['length']?_0x3f8821[_0x0828('0x3b')]:_0x280afe[_0x0828('0x37')];_0x3f8821[_0x0828('0x3e')]=qs[_0x0828('0x3f')](_0xc6712a[_0x0828('0x38')][_0x0828('0x3f')]);_0x3f8821[_0x0828('0x40')]=qs[_0x0828('0x39')](_[_0x0828('0x5d')](_0xc6712a[_0x0828('0x38')],_0x280afe[_0x0828('0x39')]));if(_0xc6712a[_0x0828('0x38')][_0x0828('0x41')]){_0x3f8821[_0x0828('0x40')]=_[_0x0828('0x42')](_0x3f8821[_0x0828('0x40')],{'$or':_['map'](_0x3f8821[_0x0828('0x3b')],function(_0x1411a8){var _0x2ab114={};_0x2ab114[_0x1411a8]={'$like':'%'+_0xc6712a[_0x0828('0x38')]['filter']+'%'};return _0x2ab114;})});}_0x3f8821=_[_0x0828('0x42')]({},_0x3f8821,_0xc6712a['options']);return _0x89116f['getAgents'](_0x3f8821);}})[_0x0828('0x14')](function(_0x236b87){if(_0x236b87){_0x55cb62=_0x236b87[_0x0828('0x4d')];if(!_0xc6712a[_0x0828('0x38')][_0x0828('0x3c')](_0x0828('0x3d'))){_0x3f8821[_0x0828('0x23')]=qs[_0x0828('0x23')](_0xc6712a['query'][_0x0828('0x23')]);_0x3f8821[_0x0828('0x25')]=qs['offset'](_0xc6712a[_0x0828('0x38')]['offset']);}return _0x89116f[_0x0828('0x12c')](_0x3f8821);}})[_0x0828('0x14')](function(_0x1d554c){if(_0x1d554c){return _0x1d554c?{'count':_0x55cb62,'rows':_0x1d554c}:null;}})['then'](respondWithResult(_0x73d134,null))[_0x0828('0x1e')](handleError(_0x73d134,null));};
\ No newline at end of file
index 1bc4fad..64d56eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f3f=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save'];(function(_0x26ae5b,_0xc43e7b){var _0x551875=function(_0x5ef88d){while(--_0x5ef88d){_0x26ae5b['push'](_0x26ae5b['shift']());}};_0x551875(++_0xc43e7b);}(_0x7f3f,0x1c8));var _0xf7f3=function(_0x5c846d,_0x5c02ce){_0x5c846d=_0x5c846d-0x0;var _0xd064e4=_0x7f3f[_0x5c846d];return _0xd064e4;};'use strict';var EventEmitter=require(_0xf7f3('0x0'));var ChatWebsite=require(_0xf7f3('0x1'))['db']['ChatWebsite'];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xf7f3('0x2')](0x0);var events={'afterCreate':_0xf7f3('0x3'),'afterUpdate':_0xf7f3('0x4'),'afterDestroy':_0xf7f3('0x5')};function emitEvent(_0x227ad2){return function(_0x4b4dbb,_0x19374c,_0xd8190d){ChatWebsiteEvents['emit'](_0x227ad2+':'+_0x4b4dbb['id'],_0x4b4dbb);ChatWebsiteEvents[_0xf7f3('0x6')](_0x227ad2,_0x4b4dbb);_0xd8190d(null);};}for(var e in events){if(events[_0xf7f3('0x7')](e)){var event=events[e];ChatWebsite[_0xf7f3('0x8')](e,emitEvent(event));}}module[_0xf7f3('0x9')]=ChatWebsiteEvents;
\ No newline at end of file
+var _0x25fa=['emit','hasOwnProperty','hook','exports','events','ChatWebsite','setMaxListeners','update','remove'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0x25fa,0x109));var _0xa25f=function(_0x2007c5,_0x2955da){_0x2007c5=_0x2007c5-0x0;var _0x560893=_0x25fa[_0x2007c5];return _0x560893;};'use strict';var EventEmitter=require(_0xa25f('0x0'));var ChatWebsite=require('../../mysqldb')['db'][_0xa25f('0x1')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xa25f('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xa25f('0x3'),'afterDestroy':_0xa25f('0x4')};function emitEvent(_0x256155){return function(_0x4d0b34,_0x4e444d,_0x2e8499){ChatWebsiteEvents['emit'](_0x256155+':'+_0x4d0b34['id'],_0x4d0b34);ChatWebsiteEvents[_0xa25f('0x5')](_0x256155,_0x4d0b34);_0x2e8499(null);};}for(var e in events){if(events[_0xa25f('0x6')](e)){var event=events[e];ChatWebsite[_0xa25f('0x7')](e,emitEvent(event));}}module[_0xa25f('0x8')]=ChatWebsiteEvents;
\ No newline at end of file
index 5b12f53..32d92af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabd4=['bluebird','request-promise','path','rimraf','./chatWebsite.attributes','exports','ChatWebsite','chat_websites','lodash','../../config/logger','api','moment'];(function(_0x1b75db,_0x2293d0){var _0x32f4b1=function(_0x1120bb){while(--_0x1120bb){_0x1b75db['push'](_0x1b75db['shift']());}};_0x32f4b1(++_0x2293d0);}(_0xabd4,0xe0));var _0x4abd=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0xabd4[_0x5f1391];return _0x50ebe3;};'use strict';var _=require(_0x4abd('0x0'));var util=require('util');var logger=require(_0x4abd('0x1'))(_0x4abd('0x2'));var moment=require(_0x4abd('0x3'));var BPromise=require(_0x4abd('0x4'));var rp=require(_0x4abd('0x5'));var fs=require('fs');var path=require(_0x4abd('0x6'));var rimraf=require(_0x4abd('0x7'));var config=require('../../config/environment');var attributes=require(_0x4abd('0x8'));module[_0x4abd('0x9')]=function(_0x2d839b,_0x214f77){return _0x2d839b['define'](_0x4abd('0xa'),attributes,{'tableName':_0x4abd('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x77fc=['define','ChatWebsite','chat_websites','lodash','util','../../config/logger','api','request-promise','rimraf','exports'];(function(_0x4ba05d,_0x2dd15a){var _0x58cb59=function(_0x1d5dbc){while(--_0x1d5dbc){_0x4ba05d['push'](_0x4ba05d['shift']());}};_0x58cb59(++_0x2dd15a);}(_0x77fc,0x1a7));var _0xc77f=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x77fc[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0xc77f('0x0'));var util=require(_0xc77f('0x1'));var logger=require(_0xc77f('0x2'))(_0xc77f('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc77f('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc77f('0x5'));var config=require('../../config/environment');var attributes=require('./chatWebsite.attributes');module[_0xc77f('0x6')]=function(_0x254f98,_0x5c2564){return _0x254f98[_0xc77f('0x7')](_0xc77f('0x8'),attributes,{'tableName':_0xc77f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 95931ca..dadd3a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8500=['./chatWebsite.socket','register','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','defaults','redis','localhost','socket.io-emitter'];(function(_0x50bcbe,_0x52cf89){var _0xa5f7c2=function(_0x5a259b){while(--_0x5a259b){_0x50bcbe['push'](_0x50bcbe['shift']());}};_0xa5f7c2(++_0x52cf89);}(_0x8500,0x1d8));var _0x0850=function(_0x7fa221,_0x27a478){_0x7fa221=_0x7fa221-0x0;var _0x4f94b1=_0x8500[_0x7fa221];return _0x4f94b1;};'use strict';var _=require('lodash');var util=require(_0x0850('0x0'));var moment=require(_0x0850('0x1'));var BPromise=require(_0x0850('0x2'));var rs=require(_0x0850('0x3'));var fs=require('fs');var Redis=require(_0x0850('0x4'));var db=require(_0x0850('0x5'))['db'];var utils=require(_0x0850('0x6'));var logger=require(_0x0850('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x0850('0x8'));var client=jayson['client'][_0x0850('0x9')]({'port':0x232a});config['redis']=_[_0x0850('0xa')](config[_0x0850('0xb')],{'host':_0x0850('0xc'),'port':0x18eb});var socket=require(_0x0850('0xd'))(new Redis(config[_0x0850('0xb')]));require(_0x0850('0xe'))[_0x0850('0xf')](socket);function respondWithRpcPromise(_0x5e0bb3,_0x37f5f1,_0x38c975){return new BPromise(function(_0x166a43,_0x1bb91c){return client['request'](_0x5e0bb3,_0x38c975)[_0x0850('0x10')](function(_0x5150db){logger[_0x0850('0x11')](_0x0850('0x12'),_0x37f5f1,_0x0850('0x13'));logger[_0x0850('0x14')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x37f5f1,'request\x20sent',JSON[_0x0850('0x15')](_0x5150db));if(_0x5150db[_0x0850('0x16')]){if(_0x5150db[_0x0850('0x16')][_0x0850('0x17')]===0x1f4){logger[_0x0850('0x16')](_0x0850('0x12'),_0x37f5f1,_0x5150db[_0x0850('0x16')][_0x0850('0x18')]);return _0x1bb91c(_0x5150db[_0x0850('0x16')][_0x0850('0x18')]);}logger[_0x0850('0x16')]('ChatWebsite,\x20%s,\x20%s',_0x37f5f1,_0x5150db[_0x0850('0x16')]['message']);return _0x166a43(_0x5150db[_0x0850('0x16')][_0x0850('0x18')]);}else{logger['info'](_0x0850('0x12'),_0x37f5f1,_0x0850('0x13'));_0x166a43(_0x5150db[_0x0850('0x19')][_0x0850('0x18')]);}})[_0x0850('0x1a')](function(_0x3fa700){logger[_0x0850('0x16')](_0x0850('0x12'),_0x37f5f1,_0x3fa700);_0x1bb91c(_0x3fa700);});});}
\ No newline at end of file
+var _0x442d=['socket.io-emitter','./chatWebsite.socket','request','then','info','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','ChatWebsite,\x20%s,\x20%s','result','catch','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost'];(function(_0x259e38,_0x19e9a9){var _0x3a7acb=function(_0x260508){while(--_0x260508){_0x259e38['push'](_0x259e38['shift']());}};_0x3a7acb(++_0x19e9a9);}(_0x442d,0x71));var _0xd442=function(_0x5f0501,_0x19196e){_0x5f0501=_0x5f0501-0x0;var _0x3c2c45=_0x442d[_0x5f0501];return _0x3c2c45;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xd442('0x0'));var rs=require(_0xd442('0x1'));var fs=require('fs');var Redis=require(_0xd442('0x2'));var db=require(_0xd442('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xd442('0x4'))(_0xd442('0x5'));var config=require(_0xd442('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xd442('0x7')][_0xd442('0x8')]({'port':0x232a});config[_0xd442('0x9')]=_[_0xd442('0xa')](config['redis'],{'host':_0xd442('0xb'),'port':0x18eb});var socket=require(_0xd442('0xc'))(new Redis(config[_0xd442('0x9')]));require(_0xd442('0xd'))['register'](socket);function respondWithRpcPromise(_0x37360f,_0x1109dd,_0xf92550){return new BPromise(function(_0x29fcec,_0x1cb9cc){return client[_0xd442('0xe')](_0x37360f,_0xf92550)[_0xd442('0xf')](function(_0x5b8864){logger[_0xd442('0x10')]('ChatWebsite,\x20%s,\x20%s',_0x1109dd,'request\x20sent');logger[_0xd442('0x11')](_0xd442('0x12'),_0x1109dd,_0xd442('0x13'),JSON['stringify'](_0x5b8864));if(_0x5b8864[_0xd442('0x14')]){if(_0x5b8864[_0xd442('0x14')]['code']===0x1f4){logger[_0xd442('0x14')]('ChatWebsite,\x20%s,\x20%s',_0x1109dd,_0x5b8864[_0xd442('0x14')][_0xd442('0x15')]);return _0x1cb9cc(_0x5b8864[_0xd442('0x14')][_0xd442('0x15')]);}logger[_0xd442('0x14')]('ChatWebsite,\x20%s,\x20%s',_0x1109dd,_0x5b8864[_0xd442('0x14')][_0xd442('0x15')]);return _0x29fcec(_0x5b8864[_0xd442('0x14')][_0xd442('0x15')]);}else{logger[_0xd442('0x10')](_0xd442('0x16'),_0x1109dd,_0xd442('0x13'));_0x29fcec(_0x5b8864[_0xd442('0x17')]['message']);}})[_0xd442('0x18')](function(_0x17cd45){logger[_0xd442('0x14')](_0xd442('0x16'),_0x1109dd,_0x17cd45);_0x1cb9cc(_0x17cd45);});});}
\ No newline at end of file
index a671086..eefde07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd882=['save','remove','update','emit','removeListener','length','chatWebsite:'];(function(_0x36703d,_0x5d6acd){var _0x4c7b37=function(_0x301b19){while(--_0x301b19){_0x36703d['push'](_0x36703d['shift']());}};_0x4c7b37(++_0x5d6acd);}(_0xd882,0xfc));var _0x2d88=function(_0x17c487,_0x2b72f1){_0x17c487=_0x17c487-0x0;var _0x3feeb8=_0xd882[_0x17c487];return _0x3feeb8;};'use strict';var ChatWebsiteEvents=require('./chatWebsite.events');var events=[_0x2d88('0x0'),_0x2d88('0x1'),_0x2d88('0x2')];function createListener(_0x4d8591,_0x33bd11){return function(_0x2d6347){_0x33bd11[_0x2d88('0x3')](_0x4d8591,_0x2d6347);};}function removeListener(_0x55a709,_0x360c4a){return function(){ChatWebsiteEvents[_0x2d88('0x4')](_0x55a709,_0x360c4a);};}exports['register']=function(_0x24d43d){for(var _0x3decd8=0x0,_0x397bb1=events[_0x2d88('0x5')];_0x3decd8<_0x397bb1;_0x3decd8++){var _0x11e691=events[_0x3decd8];var _0x202849=createListener(_0x2d88('0x6')+_0x11e691,_0x24d43d);ChatWebsiteEvents['on'](_0x11e691,_0x202849);}};
\ No newline at end of file
+var _0xc0e8=['emit','removeListener','./chatWebsite.events','save','remove','update'];(function(_0x18c88b,_0x34c154){var _0x398a20=function(_0x5c3775){while(--_0x5c3775){_0x18c88b['push'](_0x18c88b['shift']());}};_0x398a20(++_0x34c154);}(_0xc0e8,0xe6));var _0x8c0e=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc0e8[_0x20a584];return _0x4b41a8;};'use strict';var ChatWebsiteEvents=require(_0x8c0e('0x0'));var events=[_0x8c0e('0x1'),_0x8c0e('0x2'),_0x8c0e('0x3')];function createListener(_0x44c49e,_0x119265){return function(_0x3d1294){_0x119265[_0x8c0e('0x4')](_0x44c49e,_0x3d1294);};}function removeListener(_0x814f52,_0xc11250){return function(){ChatWebsiteEvents[_0x8c0e('0x5')](_0x814f52,_0xc11250);};}exports['register']=function(_0x276aaf){for(var _0x5e2cdc=0x0,_0x43dcc8=events['length'];_0x5e2cdc<_0x43dcc8;_0x5e2cdc++){var _0x205e07=events[_0x5e2cdc];var _0x48c6b5=createListener('chatWebsite:'+_0x205e07,_0x276aaf);ChatWebsiteEvents['on'](_0x205e07,_0x48c6b5);}};
\ No newline at end of file
index bbd8e33..ae40430 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c6d=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','/:id/proactive_actions','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','getAgents','post','create','addDisposition','addAnswer','diskStorage','join','root','server/files/images/logos/','%s-%s','now','originalname','single','addLogo','server/files/images/avatars/','format','file','addAvatar','addCustomerAvatar','/:id/system_avatar','addSystemAvatar','/:id/notify','server/files','offline-chat','ensureDir','replace','extname','/:id/offline','any','addInteraction','/:id/applications','addApplications','addProactiveActions','/:id/users','put','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','multer','connect-timeout'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1c6d,0x170));var _0xd1c6=function(_0x5c4d15,_0x32fe23){_0x5c4d15=_0x5c4d15-0x0;var _0x1f974a=_0x1c6d[_0x5c4d15];return _0x1f974a;};'use strict';var multer=require(_0xd1c6('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xd1c6('0x1'));var express=require(_0xd1c6('0x2'));var router=express[_0xd1c6('0x3')]();var fs_extra=require(_0xd1c6('0x4'));var auth=require(_0xd1c6('0x5'));var interaction=require(_0xd1c6('0x6'));var config=require('../../config/environment');var controller=require('./chatWebsite.controller');router[_0xd1c6('0x7')]('/',auth[_0xd1c6('0x8')](),controller[_0xd1c6('0x9')]);router[_0xd1c6('0x7')](_0xd1c6('0xa'),auth[_0xd1c6('0x8')](),controller[_0xd1c6('0xb')]);router[_0xd1c6('0x7')](_0xd1c6('0xc'),auth[_0xd1c6('0x8')](),controller[_0xd1c6('0xd')]);router[_0xd1c6('0x7')](_0xd1c6('0xe'),auth[_0xd1c6('0x8')](),controller['getDispositions']);router[_0xd1c6('0x7')](_0xd1c6('0xf'),auth[_0xd1c6('0x8')](),controller[_0xd1c6('0x10')]);router[_0xd1c6('0x7')](_0xd1c6('0x11'),controller[_0xd1c6('0x12')]);router['get'](_0xd1c6('0x13'),controller[_0xd1c6('0x14')]);router[_0xd1c6('0x7')](_0xd1c6('0x15'),controller[_0xd1c6('0x16')]);router[_0xd1c6('0x7')]('/:id/system_avatar',controller[_0xd1c6('0x17')]);router['get'](_0xd1c6('0x18'),auth[_0xd1c6('0x8')](),controller[_0xd1c6('0x19')]);router[_0xd1c6('0x7')](_0xd1c6('0x1a'),controller[_0xd1c6('0x1b')]);router[_0xd1c6('0x7')]('/:id/applications',auth[_0xd1c6('0x8')](),controller['getApplications']);router[_0xd1c6('0x7')](_0xd1c6('0x1c'),auth['isAuthenticated'](),controller[_0xd1c6('0x1d')]);router['get'](_0xd1c6('0x1e'),controller[_0xd1c6('0x1f')]);router[_0xd1c6('0x7')](_0xd1c6('0x20'),auth[_0xd1c6('0x8')](),controller['getOfflineMessages']);router['get']('/:id/users',auth[_0xd1c6('0x8')](),controller[_0xd1c6('0x21')]);router[_0xd1c6('0x22')]('/',auth[_0xd1c6('0x8')](),controller[_0xd1c6('0x23')]);router[_0xd1c6('0x22')]('/:id/dispositions',auth[_0xd1c6('0x8')](),controller[_0xd1c6('0x24')]);router[_0xd1c6('0x22')](_0xd1c6('0xf'),auth[_0xd1c6('0x8')](),controller[_0xd1c6('0x25')]);var upload=multer({'storage':multer[_0xd1c6('0x26')]({'destination':function(_0x35f75d,_0x3540b1,_0x389de9){_0x389de9(null,path[_0xd1c6('0x27')](config[_0xd1c6('0x28')],_0xd1c6('0x29')));},'filename':function(_0x2eb721,_0x2baa81,_0x573f9f){_0x573f9f(null,util['format'](_0xd1c6('0x2a'),Date[_0xd1c6('0x2b')](),_0x2baa81[_0xd1c6('0x2c')]));}})});router['post'](_0xd1c6('0x11'),upload[_0xd1c6('0x2d')]('file'),controller[_0xd1c6('0x2e')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x4d51cf,_0x52c5f0,_0x5cd3b9){_0x5cd3b9(null,path[_0xd1c6('0x27')](config['root'],_0xd1c6('0x2f')));},'filename':function(_0x29e804,_0x7c2776,_0x7481fc){_0x7481fc(null,util[_0xd1c6('0x30')](_0xd1c6('0x2a'),Date[_0xd1c6('0x2b')](),_0x7c2776[_0xd1c6('0x2c')]));}})});router[_0xd1c6('0x22')](_0xd1c6('0x13'),upload[_0xd1c6('0x2d')](_0xd1c6('0x31')),controller[_0xd1c6('0x32')]);var upload=multer({'storage':multer[_0xd1c6('0x26')]({'destination':function(_0x1c3575,_0x427466,_0x45b20c){_0x45b20c(null,path[_0xd1c6('0x27')](config[_0xd1c6('0x28')],'server/files/images/avatars/'));},'filename':function(_0x2931bc,_0x1048a0,_0x202d82){_0x202d82(null,util[_0xd1c6('0x30')](_0xd1c6('0x2a'),Date['now'](),_0x1048a0['originalname']));}})});router['post'](_0xd1c6('0x15'),upload[_0xd1c6('0x2d')](_0xd1c6('0x31')),controller[_0xd1c6('0x33')]);var upload=multer({'storage':multer[_0xd1c6('0x26')]({'destination':function(_0x45175a,_0x5c7a50,_0x51a90e){_0x51a90e(null,path[_0xd1c6('0x27')](config[_0xd1c6('0x28')],_0xd1c6('0x2f')));},'filename':function(_0x4f793f,_0x119752,_0x543c04){_0x543c04(null,util[_0xd1c6('0x30')](_0xd1c6('0x2a'),Date['now'](),_0x119752[_0xd1c6('0x2c')]));}})});router[_0xd1c6('0x22')](_0xd1c6('0x34'),upload[_0xd1c6('0x2d')](_0xd1c6('0x31')),controller[_0xd1c6('0x35')]);router[_0xd1c6('0x22')](_0xd1c6('0x36'),controller['notify']);const offlineUploadMulter=multer({'storage':multer[_0xd1c6('0x26')]({'destination':function(_0x50de8a,_0x1a6546,_0x377945){const _0x402840=path[_0xd1c6('0x27')](config[_0xd1c6('0x28')],_0xd1c6('0x37'),'attachments',_0xd1c6('0x38'));fs_extra[_0xd1c6('0x39')](_0x402840,function(){_0x377945(null,_0x402840);});},'filename':function(_0x2062ed,_0x12cb09,_0x125175){const _0x17193f=_0x12cb09[_0xd1c6('0x2c')][_0xd1c6('0x3a')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x26f207=path[_0xd1c6('0x3b')](_0x17193f);const _0x25cc7e=Date['now']()+'-'+_0x17193f[_0xd1c6('0x3a')](_0x26f207,'')+_0x26f207;_0x125175(null,_0x25cc7e);}})});router[_0xd1c6('0x22')](_0xd1c6('0x3c'),offlineUploadMulter[_0xd1c6('0x3d')](),controller['offline']);router[_0xd1c6('0x22')]('/:id/interactions',auth[_0xd1c6('0x8')](),controller[_0xd1c6('0x3e')]);router['post'](_0xd1c6('0x3f'),auth['isAuthenticated'](),controller[_0xd1c6('0x40')]);router['post'](_0xd1c6('0x1c'),auth[_0xd1c6('0x8')](),controller[_0xd1c6('0x41')]);router[_0xd1c6('0x22')](_0xd1c6('0x42'),auth[_0xd1c6('0x8')](),controller['addAgents']);router[_0xd1c6('0x43')](_0xd1c6('0xc'),auth[_0xd1c6('0x8')](),controller[_0xd1c6('0x44')]);router['delete']('/:id',auth[_0xd1c6('0x8')](),controller[_0xd1c6('0x45')]);router[_0xd1c6('0x46')](_0xd1c6('0xe'),auth[_0xd1c6('0x8')](),controller[_0xd1c6('0x47')]);router[_0xd1c6('0x46')](_0xd1c6('0xf'),auth[_0xd1c6('0x8')](),controller[_0xd1c6('0x48')]);router[_0xd1c6('0x46')]('/:id/users',auth[_0xd1c6('0x8')](),controller[_0xd1c6('0x49')]);module['exports']=router;
\ No newline at end of file
+var _0x8e26=['format','originalname','addAvatar','diskStorage','addCustomerAvatar','addSystemAvatar','/:id/notify','server/files','attachments','ensureDir','extname','replace','/:id/offline','any','offline','put','update','destroy','delete','removeAnswers','removeAgents','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/proactive_actions','getProactiveActions','getFields','/:id/offline_messages','/:id/users','getAgents','post','addDisposition','addAnswer','join','%s-%s','now','single','file','addLogo','root','server/files/images/avatars/'];(function(_0x2d4c01,_0x4a19af){var _0x5586da=function(_0x49ac0e){while(--_0x49ac0e){_0x2d4c01['push'](_0x2d4c01['shift']());}};_0x5586da(++_0x4a19af);}(_0x8e26,0x1ba));var _0x68e2=function(_0x5f530c,_0x1a0a41){_0x5f530c=_0x5f530c-0x0;var _0x1629a3=_0x8e26[_0x5f530c];return _0x1629a3;};'use strict';var multer=require(_0x68e2('0x0'));var util=require(_0x68e2('0x1'));var path=require(_0x68e2('0x2'));var timeout=require('connect-timeout');var express=require(_0x68e2('0x3'));var router=express[_0x68e2('0x4')]();var fs_extra=require(_0x68e2('0x5'));var auth=require(_0x68e2('0x6'));var interaction=require(_0x68e2('0x7'));var config=require(_0x68e2('0x8'));var controller=require('./chatWebsite.controller');router[_0x68e2('0x9')]('/',auth[_0x68e2('0xa')](),controller[_0x68e2('0xb')]);router[_0x68e2('0x9')](_0x68e2('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0x68e2('0x9')](_0x68e2('0xd'),auth[_0x68e2('0xa')](),controller[_0x68e2('0xe')]);router['get'](_0x68e2('0xf'),auth[_0x68e2('0xa')](),controller[_0x68e2('0x10')]);router[_0x68e2('0x9')](_0x68e2('0x11'),auth['isAuthenticated'](),controller[_0x68e2('0x12')]);router[_0x68e2('0x9')](_0x68e2('0x13'),controller[_0x68e2('0x14')]);router[_0x68e2('0x9')](_0x68e2('0x15'),controller[_0x68e2('0x16')]);router[_0x68e2('0x9')](_0x68e2('0x17'),controller[_0x68e2('0x18')]);router[_0x68e2('0x9')](_0x68e2('0x19'),controller[_0x68e2('0x1a')]);router[_0x68e2('0x9')](_0x68e2('0x1b'),auth[_0x68e2('0xa')](),controller[_0x68e2('0x1c')]);router[_0x68e2('0x9')]('/:id/snippet',controller['getSnippet']);router[_0x68e2('0x9')](_0x68e2('0x1d'),auth[_0x68e2('0xa')](),controller[_0x68e2('0x1e')]);router[_0x68e2('0x9')](_0x68e2('0x1f'),auth[_0x68e2('0xa')](),controller[_0x68e2('0x20')]);router[_0x68e2('0x9')]('/:id/fields',controller[_0x68e2('0x21')]);router[_0x68e2('0x9')](_0x68e2('0x22'),auth[_0x68e2('0xa')](),controller['getOfflineMessages']);router['get'](_0x68e2('0x23'),auth[_0x68e2('0xa')](),controller[_0x68e2('0x24')]);router[_0x68e2('0x25')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/dispositions',auth[_0x68e2('0xa')](),controller[_0x68e2('0x26')]);router[_0x68e2('0x25')](_0x68e2('0x11'),auth[_0x68e2('0xa')](),controller[_0x68e2('0x27')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xe7a4b4,_0x23d8c2,_0x36eebe){_0x36eebe(null,path[_0x68e2('0x28')](config['root'],'server/files/images/logos/'));},'filename':function(_0x293c38,_0x2c444c,_0x24b171){_0x24b171(null,util['format'](_0x68e2('0x29'),Date[_0x68e2('0x2a')](),_0x2c444c['originalname']));}})});router['post'](_0x68e2('0x13'),upload[_0x68e2('0x2b')](_0x68e2('0x2c')),controller[_0x68e2('0x2d')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1b1b0b,_0xd75172,_0x126007){_0x126007(null,path[_0x68e2('0x28')](config[_0x68e2('0x2e')],_0x68e2('0x2f')));},'filename':function(_0x407b32,_0x1dd830,_0x44baca){_0x44baca(null,util[_0x68e2('0x30')](_0x68e2('0x29'),Date['now'](),_0x1dd830[_0x68e2('0x31')]));}})});router[_0x68e2('0x25')]('/:id/avatar',upload[_0x68e2('0x2b')]('file'),controller[_0x68e2('0x32')]);var upload=multer({'storage':multer[_0x68e2('0x33')]({'destination':function(_0x20315a,_0x5c79db,_0x561991){_0x561991(null,path[_0x68e2('0x28')](config[_0x68e2('0x2e')],_0x68e2('0x2f')));},'filename':function(_0x581d0a,_0x2ccdc9,_0x3b005d){_0x3b005d(null,util[_0x68e2('0x30')]('%s-%s',Date[_0x68e2('0x2a')](),_0x2ccdc9['originalname']));}})});router[_0x68e2('0x25')](_0x68e2('0x17'),upload['single'](_0x68e2('0x2c')),controller[_0x68e2('0x34')]);var upload=multer({'storage':multer[_0x68e2('0x33')]({'destination':function(_0x10de1f,_0x43a134,_0x5ca5db){_0x5ca5db(null,path[_0x68e2('0x28')](config[_0x68e2('0x2e')],'server/files/images/avatars/'));},'filename':function(_0x124dbc,_0x57288e,_0x43f52e){_0x43f52e(null,util[_0x68e2('0x30')]('%s-%s',Date[_0x68e2('0x2a')](),_0x57288e[_0x68e2('0x31')]));}})});router[_0x68e2('0x25')](_0x68e2('0x19'),upload[_0x68e2('0x2b')](_0x68e2('0x2c')),controller[_0x68e2('0x35')]);router['post'](_0x68e2('0x36'),controller['notify']);const offlineUploadMulter=multer({'storage':multer[_0x68e2('0x33')]({'destination':function(_0x147b71,_0xb6bd6,_0x2c263c){const _0x3a5ec7=path['join'](config[_0x68e2('0x2e')],_0x68e2('0x37'),_0x68e2('0x38'),'offline-chat');fs_extra[_0x68e2('0x39')](_0x3a5ec7,function(){_0x2c263c(null,_0x3a5ec7);});},'filename':function(_0x31fb33,_0x3cd9ad,_0x2005fd){const _0xc82626=_0x3cd9ad[_0x68e2('0x31')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x5ca7fe=path[_0x68e2('0x3a')](_0xc82626);const _0x5aa82b=Date['now']()+'-'+_0xc82626[_0x68e2('0x3b')](_0x5ca7fe,'')+_0x5ca7fe;_0x2005fd(null,_0x5aa82b);}})});router[_0x68e2('0x25')](_0x68e2('0x3c'),offlineUploadMulter[_0x68e2('0x3d')](),controller[_0x68e2('0x3e')]);router[_0x68e2('0x25')](_0x68e2('0x1b'),auth[_0x68e2('0xa')](),controller['addInteraction']);router[_0x68e2('0x25')](_0x68e2('0x1d'),auth[_0x68e2('0xa')](),controller['addApplications']);router[_0x68e2('0x25')](_0x68e2('0x1f'),auth[_0x68e2('0xa')](),controller['addProactiveActions']);router[_0x68e2('0x25')]('/:id/users',auth[_0x68e2('0xa')](),controller['addAgents']);router[_0x68e2('0x3f')](_0x68e2('0xd'),auth[_0x68e2('0xa')](),controller[_0x68e2('0x40')]);router['delete'](_0x68e2('0xd'),auth[_0x68e2('0xa')](),controller[_0x68e2('0x41')]);router[_0x68e2('0x42')](_0x68e2('0xf'),auth['isAuthenticated'](),controller['removeDispositions']);router['delete'](_0x68e2('0x11'),auth[_0x68e2('0xa')](),controller[_0x68e2('0x43')]);router[_0x68e2('0x42')](_0x68e2('0x23'),auth['isAuthenticated'](),controller[_0x68e2('0x44')]);module[_0x68e2('0x45')]=router;
\ No newline at end of file
index 6017637..210162d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3f0=['express','../components/auth/service','../config/environment','Router','production','client-side-logger','Client-Side\x20logger\x20not\x20found!','expressEndpoint','/client-logs','use','beaver-logger/server'];(function(_0x6d94b7,_0x25ae5f){var _0x4e71ad=function(_0x7e909){while(--_0x7e909){_0x6d94b7['push'](_0x6d94b7['shift']());}};_0x4e71ad(++_0x25ae5f);}(_0xf3f0,0x196));var _0x0f3f=function(_0x5d4e20,_0x3026de){_0x5d4e20=_0x5d4e20-0x0;var _0x28384c=_0xf3f0[_0x5d4e20];return _0x28384c;};var beaverLogger=require(_0x0f3f('0x0'));var express=require(_0x0f3f('0x1'));var auth=require(_0x0f3f('0x2'));var config=require(_0x0f3f('0x3'));var router=express[_0x0f3f('0x4')]();var isProduction=config['env']===_0x0f3f('0x5')||![];function clientSideLogs(_0x17546f,_0x315cf8,_0x13ee47){var _0x4ac676=_0x17546f['app']['get'](_0x0f3f('0x6'));if(!_0x4ac676){throw new Error(_0x0f3f('0x7'));}return beaverLogger[_0x0f3f('0x8')]({'uri':_0x0f3f('0x9'),'logger':_0x4ac676,'enableCors':!isProduction})(_0x17546f,_0x315cf8,_0x13ee47);}router[_0x0f3f('0xa')](auth['isAuthenticated'](),clientSideLogs);module['exports']=router;
\ No newline at end of file
+var _0x276e=['app','get','client-side-logger','Client-Side\x20logger\x20not\x20found!','expressEndpoint','/client-logs','use','isAuthenticated','exports','beaver-logger/server','../components/auth/service','Router','production'];(function(_0x479b99,_0x1e5bec){var _0x1e7eb7=function(_0x52ac6c){while(--_0x52ac6c){_0x479b99['push'](_0x479b99['shift']());}};_0x1e7eb7(++_0x1e5bec);}(_0x276e,0xf3));var _0xe276=function(_0x164760,_0x5874b0){_0x164760=_0x164760-0x0;var _0x8b91b2=_0x276e[_0x164760];return _0x8b91b2;};var beaverLogger=require(_0xe276('0x0'));var express=require('express');var auth=require(_0xe276('0x1'));var config=require('../config/environment');var router=express[_0xe276('0x2')]();var isProduction=config['env']===_0xe276('0x3')||![];function clientSideLogs(_0x2274ae,_0x164a1f,_0x184c70){var _0x510d77=_0x2274ae[_0xe276('0x4')][_0xe276('0x5')](_0xe276('0x6'));if(!_0x510d77){throw new Error(_0xe276('0x7'));}return beaverLogger[_0xe276('0x8')]({'uri':_0xe276('0x9'),'logger':_0x510d77,'enableCors':!isProduction})(_0x2274ae,_0x164a1f,_0x184c70);}router[_0xe276('0xa')](auth[_0xe276('0xb')](),clientSideLogs);module[_0xe276('0xc')]=router;
\ No newline at end of file
index d4ca85b..bf2710d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93ed=['Outlook365','Dynamics365','STRING','MicrosoftAzure\x20=>\x20client_id','MicrosoftAzure\x20=>\x20client_secret','TEXT','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','sequelize','exports','ENUM'];(function(_0x4231bf,_0x4460e7){var _0x3881e1=function(_0x547647){while(--_0x547647){_0x4231bf['push'](_0x4231bf['shift']());}};_0x3881e1(++_0x4460e7);}(_0x93ed,0xbb));var _0xd93e=function(_0x27889f,_0x4809b9){_0x27889f=_0x27889f-0x0;var _0x201713=_0x93ed[_0x27889f];return _0x201713;};'use strict';var Sequelize=require(_0xd93e('0x0'));module[_0xd93e('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xd93e('0x2')]('AmazonAWS','Google','MicrosoftAzure'),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0xd93e('0x2')](_0xd93e('0x3'),_0xd93e('0x4'))},'data1':{'type':Sequelize[_0xd93e('0x5')],'comment':_0xd93e('0x6')},'data2':{'type':Sequelize[_0xd93e('0x5')],'comment':'MicrosoftAzure\x20=>\x20tenant'},'data3':{'type':Sequelize[_0xd93e('0x5')],'comment':_0xd93e('0x7')},'data4':{'type':Sequelize[_0xd93e('0x5')],'comment':'MicrosoftAzure\x20=>\x20redirect_uri'},'data5':{'type':Sequelize[_0xd93e('0x8')],'comment':'MicrosoftAzure\x20=>\x20access_token'},'data6':{'type':Sequelize['TEXT'],'comment':'MicrosoftAzure\x20=>\x20refresh_token'},'data7':{'type':Sequelize[_0xd93e('0x8')],'comment':_0xd93e('0x9')}};
\ No newline at end of file
+var _0x01ff=['sequelize','exports','STRING','ENUM','MicrosoftAzure','Dynamics365','MicrosoftAzure\x20=>\x20tenant','MicrosoftAzure\x20=>\x20redirect_uri','TEXT','MicrosoftAzure\x20=>\x20access_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x01ff,0xc6));var _0xf01f=function(_0x2c8def,_0x53a5ec){_0x2c8def=_0x2c8def-0x0;var _0x1ab280=_0x01ff[_0x2c8def];return _0x1ab280;};'use strict';var Sequelize=require(_0xf01f('0x0'));module[_0xf01f('0x1')]={'name':{'type':Sequelize[_0xf01f('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xf01f('0x3')]('AmazonAWS','Google',_0xf01f('0x4')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize['ENUM']('Outlook365',_0xf01f('0x5'))},'data1':{'type':Sequelize['STRING'],'comment':'MicrosoftAzure\x20=>\x20client_id'},'data2':{'type':Sequelize[_0xf01f('0x2')],'comment':_0xf01f('0x6')},'data3':{'type':Sequelize[_0xf01f('0x2')],'comment':'MicrosoftAzure\x20=>\x20client_secret'},'data4':{'type':Sequelize[_0xf01f('0x2')],'comment':_0xf01f('0x7')},'data5':{'type':Sequelize[_0xf01f('0x8')],'comment':_0xf01f('0x9')},'data6':{'type':Sequelize[_0xf01f('0x8')],'comment':'MicrosoftAzure\x20=>\x20refresh_token'},'data7':{'type':Sequelize['TEXT'],'comment':_0xf01f('0xa')}};
\ No newline at end of file
index c7ad207..cb9eda7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fa7=['show','params','find','decryptString','create','body','Name\x20parameter\x20not\x20specified','Service\x20parameter\x20not\x20specified','values','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','encryptString','oauth2MicrosoftAuthorize','findOne','generateMicrosoftAuthorizationUrl','user','oauth2MicrosoftCallback','get','state','Invalid\x20state\x20parameter','from','base64','toString','ascii','parse','id_token','oauth2Claims','del','data5','access_token','data6','startRefreshInterval','emit','Invalid\x20authentication\x20state\x20parameter','message','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify','ioredis','../../components/parsers/qs','../../config/environment','../../config/logger','api','../../mysqldb','./cloudProvider.oauth','redis','defaults','localhost','sendStatus','end','json','offset','undefined','limit','count','status','Content-Range','update','then','destroy','error','name','send','padEnd','slice','index','CloudProvider','rawAttributes','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','service','MicrosoftAzure','data3','catch'];(function(_0x46ede9,_0x5e5c9a){var _0x23f760=function(_0x36a836){while(--_0x36a836){_0x46ede9['push'](_0x46ede9['shift']());}};_0x23f760(++_0x5e5c9a);}(_0x4fa7,0x85));var _0x74fa=function(_0x3815c2,_0x1f54e3){_0x3815c2=_0x3815c2-0x0;var _0x271f88=_0x4fa7[_0x3815c2];return _0x271f88;};'use strict';var _=require('lodash');var Redis=require(_0x74fa('0x0'));var qs=require(_0x74fa('0x1'));var encryptor=require('../../components/encryptor');var config=require(_0x74fa('0x2'));var logger=require(_0x74fa('0x3'))(_0x74fa('0x4'));var db=require(_0x74fa('0x5'))['db'];var oauth=require(_0x74fa('0x6'));config[_0x74fa('0x7')]=_[_0x74fa('0x8')](config[_0x74fa('0x7')],{'host':_0x74fa('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x74fa('0x7')]));var redis=new Redis(config['redis']);function respondWithStatusCode(_0x5a5010,_0x1ed333){_0x1ed333=_0x1ed333||0xcc;return function(_0x31c5da){if(_0x31c5da){return _0x5a5010[_0x74fa('0xa')](_0x1ed333);}return _0x5a5010['status'](_0x1ed333)[_0x74fa('0xb')]();};}function respondWithResult(_0x587e04,_0x2175d3){_0x2175d3=_0x2175d3||0xc8;return function(_0x25b5f3){if(_0x25b5f3){return _0x587e04['status'](_0x2175d3)[_0x74fa('0xc')](_0x25b5f3);}};}function respondWithFilteredResult(_0x2f4b89,_0x6cf95c){return function(_0xd8f416){if(_0xd8f416){var _0x186679=typeof _0x6cf95c[_0x74fa('0xd')]===_0x74fa('0xe')&&typeof _0x6cf95c[_0x74fa('0xf')]===_0x74fa('0xe');var _0xf95795=_0xd8f416[_0x74fa('0x10')];var _0x33d9af=_0x186679?0x0:_0x6cf95c[_0x74fa('0xd')];var _0x49bc60=_0x186679?_0xd8f416[_0x74fa('0x10')]:_0x6cf95c[_0x74fa('0xd')]+_0x6cf95c[_0x74fa('0xf')];var _0x4c5215;if(_0x49bc60>=_0xf95795){_0x49bc60=_0xf95795;_0x4c5215=0xc8;}else{_0x4c5215=0xce;}_0x2f4b89[_0x74fa('0x11')](_0x4c5215);return _0x2f4b89['set'](_0x74fa('0x12'),_0x33d9af+'-'+_0x49bc60+'/'+_0xf95795)[_0x74fa('0xc')](_0xd8f416);}return null;};}function saveUpdates(_0x2b936b){return function(_0x215a58){if(_0x215a58){return _0x215a58[_0x74fa('0x13')](_0x2b936b)[_0x74fa('0x14')](function(_0xbfe500){return _0xbfe500;});}return null;};}function removeEntity(_0x31245c){return function(_0x297c17){if(_0x297c17){return _0x297c17[_0x74fa('0x15')]()['then'](function(){_0x31245c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5ec024){return function(_0x5a7cfe){if(!_0x5a7cfe){_0x5ec024[_0x74fa('0xa')](0x194);}return _0x5a7cfe;};}function handleError(_0x5483f4,_0xe287a0){_0xe287a0=_0xe287a0||0x1f4;return function(_0x157802){logger[_0x74fa('0x16')](_0x157802['stack']);if(_0x157802['name']){delete _0x157802[_0x74fa('0x17')];}_0x5483f4['status'](_0xe287a0)[_0x74fa('0x18')](_0x157802);};}function maskClientSecret(_0x59bc13){return _[_0x74fa('0x19')](_0x59bc13[_0x74fa('0x1a')](0x0,0x3),0x14,'*');}exports[_0x74fa('0x1b')]=function(_0x1d312c,_0x3c3ce4){var _0x5f9ce5={},_0x85ef86={},_0x38832f={'count':0x0,'rows':[]};var _0x24e101=_['map'](db[_0x74fa('0x1c')][_0x74fa('0x1d')],function(_0x51857a){return{'name':_0x51857a['fieldName'],'type':_0x51857a['type'][_0x74fa('0x1e')]};});_0x85ef86[_0x74fa('0x1f')]=_[_0x74fa('0x20')](_0x24e101,'name');_0x85ef86[_0x74fa('0x21')]=_[_0x74fa('0x22')](_0x1d312c['query']);_0x85ef86[_0x74fa('0x23')]=_[_0x74fa('0x24')](_0x85ef86[_0x74fa('0x1f')],_0x85ef86[_0x74fa('0x21')]);_0x5f9ce5[_0x74fa('0x25')]=_[_0x74fa('0x24')](_0x85ef86[_0x74fa('0x1f')],qs['fields'](_0x1d312c[_0x74fa('0x21')][_0x74fa('0x26')]));_0x5f9ce5[_0x74fa('0x25')]=_0x5f9ce5[_0x74fa('0x25')][_0x74fa('0x27')]?_0x5f9ce5[_0x74fa('0x25')]:_0x85ef86[_0x74fa('0x1f')];if(!_0x1d312c[_0x74fa('0x21')][_0x74fa('0x28')](_0x74fa('0x29'))){_0x5f9ce5[_0x74fa('0xf')]=qs[_0x74fa('0xf')](_0x1d312c[_0x74fa('0x21')][_0x74fa('0xf')]);_0x5f9ce5[_0x74fa('0xd')]=qs['offset'](_0x1d312c[_0x74fa('0x21')][_0x74fa('0xd')]);}_0x5f9ce5['order']=qs[_0x74fa('0x2a')](_0x1d312c[_0x74fa('0x21')]['sort']);_0x5f9ce5['where']=qs['filters'](_[_0x74fa('0x2b')](_0x1d312c[_0x74fa('0x21')],_0x85ef86[_0x74fa('0x23')]),_0x24e101);if(_0x1d312c[_0x74fa('0x21')][_0x74fa('0x2c')]){_0x5f9ce5[_0x74fa('0x2d')]=_[_0x74fa('0x2e')](_0x5f9ce5[_0x74fa('0x2d')],{'$or':_[_0x74fa('0x20')](_0x24e101,function(_0x3aee18){if(_0x3aee18['type']!==_0x74fa('0x2f')){var _0x471ddd={};_0x471ddd[_0x3aee18[_0x74fa('0x17')]]={'$like':'%'+_0x1d312c['query'][_0x74fa('0x2c')]+'%'};return _0x471ddd;}})});}_0x5f9ce5=_[_0x74fa('0x2e')]({},_0x5f9ce5,_0x1d312c[_0x74fa('0x30')]);var _0x3070ce={'where':_0x5f9ce5[_0x74fa('0x2d')]};return db['CloudProvider'][_0x74fa('0x10')](_0x3070ce)[_0x74fa('0x14')](function(_0x833dc0){_0x38832f[_0x74fa('0x10')]=_0x833dc0;if(_0x1d312c[_0x74fa('0x21')][_0x74fa('0x31')]){_0x5f9ce5[_0x74fa('0x32')]=[{'all':!![]}];}return db[_0x74fa('0x1c')][_0x74fa('0x33')](_0x5f9ce5);})['then'](function(_0x25a23d){_0x38832f[_0x74fa('0x34')]=_[_0x74fa('0x20')](_0x25a23d,function(_0x1c7e80){if(_0x1c7e80[_0x74fa('0x35')]===_0x74fa('0x36')){var _0x1cecfc=encryptor['decryptString'](_0x1c7e80['data3']);_0x1c7e80[_0x74fa('0x37')]=maskClientSecret(_0x1cecfc);}return _0x1c7e80;});return _0x38832f;})[_0x74fa('0x14')](respondWithFilteredResult(_0x3c3ce4,_0x5f9ce5))[_0x74fa('0x38')](handleError(_0x3c3ce4,null));};exports[_0x74fa('0x39')]=function(_0x23c5d6,_0x3f4915){var _0x59666a={'raw':!![],'where':{'id':_0x23c5d6[_0x74fa('0x3a')]['id']}},_0x1be130={};_0x1be130[_0x74fa('0x1f')]=_[_0x74fa('0x22')](db['CloudProvider'][_0x74fa('0x1d')]);_0x1be130['query']=_[_0x74fa('0x22')](_0x23c5d6[_0x74fa('0x21')]);_0x1be130['filters']=_['intersection'](_0x1be130['model'],_0x1be130[_0x74fa('0x21')]);_0x59666a['attributes']=_[_0x74fa('0x24')](_0x1be130[_0x74fa('0x1f')],qs[_0x74fa('0x26')](_0x23c5d6[_0x74fa('0x21')][_0x74fa('0x26')]));_0x59666a[_0x74fa('0x25')]=_0x59666a['attributes'][_0x74fa('0x27')]?_0x59666a['attributes']:_0x1be130[_0x74fa('0x1f')];if(_0x23c5d6[_0x74fa('0x21')][_0x74fa('0x31')]){_0x59666a['include']=[{'all':!![]}];}_0x59666a=_[_0x74fa('0x2e')]({},_0x59666a,_0x23c5d6[_0x74fa('0x30')]);return db[_0x74fa('0x1c')][_0x74fa('0x3b')](_0x59666a)[_0x74fa('0x14')](handleEntityNotFound(_0x3f4915,null))[_0x74fa('0x14')](function(_0x3ea8ec){if(_0x3ea8ec[_0x74fa('0x35')]===_0x74fa('0x36')){var _0x4d6391=encryptor[_0x74fa('0x3c')](_0x3ea8ec[_0x74fa('0x37')]);_0x3ea8ec[_0x74fa('0x37')]=maskClientSecret(_0x4d6391);}return _0x3ea8ec;})['then'](respondWithResult(_0x3f4915,null))[_0x74fa('0x38')](handleError(_0x3f4915,null));};exports[_0x74fa('0x3d')]=function(_0x5c46a9,_0x49f379){if(!_0x5c46a9[_0x74fa('0x3e')][_0x74fa('0x17')])throw new Error(_0x74fa('0x3f'));if(!_0x5c46a9[_0x74fa('0x3e')][_0x74fa('0x35')])throw new Error(_0x74fa('0x40'));var _0x5e1203=db[_0x74fa('0x1c')][_0x74fa('0x1d')][_0x74fa('0x35')][_0x74fa('0x41')];if(!_0x5e1203[_0x74fa('0x42')](_0x5c46a9[_0x74fa('0x3e')]['service']))throw new Error(_0x74fa('0x43')+_0x5e1203[_0x74fa('0x44')](',\x20'));if(_0x5c46a9[_0x74fa('0x3e')][_0x74fa('0x35')]==='MicrosoftAzure'&&_0x5c46a9[_0x74fa('0x3e')][_0x74fa('0x37')]){_0x5c46a9['body'][_0x74fa('0x37')]=encryptor[_0x74fa('0x45')](_0x5c46a9['body'][_0x74fa('0x37')]);}return db[_0x74fa('0x1c')][_0x74fa('0x3d')](_0x5c46a9[_0x74fa('0x3e')],{})[_0x74fa('0x14')](respondWithResult(_0x49f379,0xc9))[_0x74fa('0x38')](handleError(_0x49f379,null));};exports[_0x74fa('0x13')]=function(_0x5367a0,_0x316cf0){if(_0x5367a0[_0x74fa('0x3e')]['id']){delete _0x5367a0['body']['id'];}return db['CloudProvider']['find']({'where':{'id':_0x5367a0['params']['id']}})[_0x74fa('0x14')](handleEntityNotFound(_0x316cf0,null))[_0x74fa('0x14')](function(_0x3961bc){if(_0x3961bc[_0x74fa('0x35')]===_0x74fa('0x36')&&_0x5367a0[_0x74fa('0x3e')][_0x74fa('0x37')]){_0x5367a0[_0x74fa('0x3e')]['data3']=encryptor[_0x74fa('0x45')](_0x5367a0[_0x74fa('0x3e')][_0x74fa('0x37')]);}return _0x3961bc;})['then'](saveUpdates(_0x5367a0[_0x74fa('0x3e')],null))[_0x74fa('0x14')](respondWithResult(_0x316cf0,null))[_0x74fa('0x38')](handleError(_0x316cf0,null));};exports[_0x74fa('0x15')]=function(_0x23a33e,_0x1baadb){return db[_0x74fa('0x1c')][_0x74fa('0x3b')]({'where':{'id':_0x23a33e[_0x74fa('0x3a')]['id']}})[_0x74fa('0x14')](handleEntityNotFound(_0x1baadb,null))[_0x74fa('0x14')](removeEntity(_0x1baadb,null))[_0x74fa('0x38')](handleError(_0x1baadb,null));};exports[_0x74fa('0x46')]=function(_0x97565c,_0x15f74f){return db[_0x74fa('0x1c')][_0x74fa('0x47')]({'where':{'id':_0x97565c[_0x74fa('0x3a')]['id']},'raw':!![]})['then'](function(_0x58b73c){if(!_0x58b73c)return _0x15f74f['sendStatus'](0x194);return{'url':oauth[_0x74fa('0x48')](_0x58b73c,_0x97565c[_0x74fa('0x49')]['id'])};})[_0x74fa('0x14')](respondWithResult(_0x15f74f,null))[_0x74fa('0x38')](handleError(_0x15f74f,null));};exports[_0x74fa('0x4a')]=function(_0x2840df,_0x2205df){var _0x35003c=_0x2840df[_0x74fa('0x3e')];var _0x224cec;var _0x3b68ce;if(_0x35003c[_0x74fa('0x16')])throw _0x35003c;redis[_0x74fa('0x4b')](_0x35003c[_0x74fa('0x4c')])[_0x74fa('0x14')](function(_0x2870b8){if(!_0x2870b8)throw new Error(_0x74fa('0x4d'));_0x224cec=JSON['parse'](_0x2870b8);var _0x51d389=Buffer[_0x74fa('0x4e')](_0x35003c[_0x74fa('0x4c')],_0x74fa('0x4f'))[_0x74fa('0x50')](_0x74fa('0x51'));_0x3b68ce=JSON[_0x74fa('0x52')](_0x51d389);if(!oauth['isValidIdToken'](_0x35003c[_0x74fa('0x53')],_0x224cec[_0x74fa('0x54')]))throw new Error('Unable\x20to\x20validate\x20id_token');redis[_0x74fa('0x55')](_0x35003c[_0x74fa('0x4c')]);return oauth['getOauth2MicrosoftAccessToken'](_0x35003c['code'],_0x224cec);})[_0x74fa('0x14')](function(_0x53707d){_0x224cec[_0x74fa('0x56')]=_0x53707d[_0x74fa('0x57')];_0x224cec[_0x74fa('0x58')]=_0x53707d['refresh_token'];return db['CloudProvider']['update']({'data5':_0x224cec[_0x74fa('0x56')],'data6':_0x224cec[_0x74fa('0x58')]},{'where':{'id':_0x224cec['id']}});})[_0x74fa('0x14')](function(){oauth[_0x74fa('0x59')](_0x224cec);socket[_0x74fa('0x5a')]('microsoftAuthorization:success',{'id':_0x3b68ce['id']});return;})[_0x74fa('0x14')](respondWithStatusCode(_0x2205df,null))[_0x74fa('0x38')](function(_0x3537af){if(_0x3b68ce){socket[_0x74fa('0x5a')]('microsoftAuthorization:error',{'id':_0x3b68ce['id']});}if(!_0x224cec){logger[_0x74fa('0x16')](_0x74fa('0x5b'),_0x3537af);return _0x2205df['status'](0x1f4)['send'](_0x3537af[_0x74fa('0x5c')]);}logger[_0x74fa('0x16')](_0x74fa('0x5d'),_0x224cec['id'],JSON[_0x74fa('0x5e')](_0x3537af));});};
\ No newline at end of file
+var _0x875a=['emit','microsoftAuthorization:error','Invalid\x20authentication\x20state\x20parameter','message','stringify','lodash','../../components/parsers/qs','../../components/encryptor','../../config/environment','api','redis','localhost','socket.io-emitter','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','then','destroy','error','send','slice','CloudProvider','rawAttributes','fieldName','type','model','name','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','map','VIRTUAL','merge','options','include','findAll','rows','service','MicrosoftAzure','data3','catch','show','keys','decryptString','create','body','Name\x20parameter\x20not\x20specified','Service\x20parameter\x20not\x20specified','values','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','encryptString','update','find','params','oauth2MicrosoftAuthorize','findOne','generateMicrosoftAuthorizationUrl','oauth2MicrosoftCallback','get','state','Invalid\x20state\x20parameter','parse','toString','ascii','isValidIdToken','id_token','oauth2Claims','Unable\x20to\x20validate\x20id_token','getOauth2MicrosoftAccessToken','code','data5','access_token','data6','refresh_token','startRefreshInterval'];(function(_0x2f8076,_0xae7b86){var _0x2ceb2e=function(_0x54a2ab){while(--_0x54a2ab){_0x2f8076['push'](_0x2f8076['shift']());}};_0x2ceb2e(++_0xae7b86);}(_0x875a,0x11c));var _0xa875=function(_0x231382,_0x3da1f1){_0x231382=_0x231382-0x0;var _0x5b89e9=_0x875a[_0x231382];return _0x5b89e9;};'use strict';var _=require(_0xa875('0x0'));var Redis=require('ioredis');var qs=require(_0xa875('0x1'));var encryptor=require(_0xa875('0x2'));var config=require(_0xa875('0x3'));var logger=require('../../config/logger')(_0xa875('0x4'));var db=require('../../mysqldb')['db'];var oauth=require('./cloudProvider.oauth');config['redis']=_['defaults'](config[_0xa875('0x5')],{'host':_0xa875('0x6'),'port':0x18eb});var socket=require(_0xa875('0x7'))(new Redis(config[_0xa875('0x5')]));var redis=new Redis(config[_0xa875('0x5')]);function respondWithStatusCode(_0x150701,_0x449272){_0x449272=_0x449272||0xcc;return function(_0x128714){if(_0x128714){return _0x150701[_0xa875('0x8')](_0x449272);}return _0x150701[_0xa875('0x9')](_0x449272)[_0xa875('0xa')]();};}function respondWithResult(_0x453e4c,_0x32955e){_0x32955e=_0x32955e||0xc8;return function(_0x7c69a1){if(_0x7c69a1){return _0x453e4c[_0xa875('0x9')](_0x32955e)[_0xa875('0xb')](_0x7c69a1);}};}function respondWithFilteredResult(_0x2974fb,_0x24de96){return function(_0x47cf8d){if(_0x47cf8d){var _0x21f06a=typeof _0x24de96[_0xa875('0xc')]==='undefined'&&typeof _0x24de96[_0xa875('0xd')]===_0xa875('0xe');var _0x38075d=_0x47cf8d['count'];var _0x2d551f=_0x21f06a?0x0:_0x24de96[_0xa875('0xc')];var _0x448ae5=_0x21f06a?_0x47cf8d[_0xa875('0xf')]:_0x24de96[_0xa875('0xc')]+_0x24de96[_0xa875('0xd')];var _0x4b783f;if(_0x448ae5>=_0x38075d){_0x448ae5=_0x38075d;_0x4b783f=0xc8;}else{_0x4b783f=0xce;}_0x2974fb['status'](_0x4b783f);return _0x2974fb[_0xa875('0x10')](_0xa875('0x11'),_0x2d551f+'-'+_0x448ae5+'/'+_0x38075d)[_0xa875('0xb')](_0x47cf8d);}return null;};}function saveUpdates(_0x1c70cf){return function(_0x517cf1){if(_0x517cf1){return _0x517cf1['update'](_0x1c70cf)[_0xa875('0x12')](function(_0x2ae8be){return _0x2ae8be;});}return null;};}function removeEntity(_0x33aadb){return function(_0x445e61){if(_0x445e61){return _0x445e61[_0xa875('0x13')]()[_0xa875('0x12')](function(){_0x33aadb[_0xa875('0x9')](0xcc)[_0xa875('0xa')]();});}};}function handleEntityNotFound(_0x38063f){return function(_0x557525){if(!_0x557525){_0x38063f[_0xa875('0x8')](0x194);}return _0x557525;};}function handleError(_0x3e1f90,_0x2592e9){_0x2592e9=_0x2592e9||0x1f4;return function(_0x40c118){logger[_0xa875('0x14')](_0x40c118['stack']);if(_0x40c118['name']){delete _0x40c118['name'];}_0x3e1f90[_0xa875('0x9')](_0x2592e9)[_0xa875('0x15')](_0x40c118);};}function maskClientSecret(_0x3e1586){return _['padEnd'](_0x3e1586[_0xa875('0x16')](0x0,0x3),0x14,'*');}exports['index']=function(_0x1cecad,_0x51d901){var _0x44bb8c={},_0x130383={},_0x5e2781={'count':0x0,'rows':[]};var _0x7f83dc=_['map'](db[_0xa875('0x17')][_0xa875('0x18')],function(_0x44eca9){return{'name':_0x44eca9[_0xa875('0x19')],'type':_0x44eca9[_0xa875('0x1a')]['key']};});_0x130383[_0xa875('0x1b')]=_['map'](_0x7f83dc,_0xa875('0x1c'));_0x130383['query']=_['keys'](_0x1cecad['query']);_0x130383['filters']=_[_0xa875('0x1d')](_0x130383['model'],_0x130383[_0xa875('0x1e')]);_0x44bb8c[_0xa875('0x1f')]=_[_0xa875('0x1d')](_0x130383[_0xa875('0x1b')],qs[_0xa875('0x20')](_0x1cecad[_0xa875('0x1e')][_0xa875('0x20')]));_0x44bb8c[_0xa875('0x1f')]=_0x44bb8c['attributes'][_0xa875('0x21')]?_0x44bb8c[_0xa875('0x1f')]:_0x130383[_0xa875('0x1b')];if(!_0x1cecad[_0xa875('0x1e')][_0xa875('0x22')](_0xa875('0x23'))){_0x44bb8c[_0xa875('0xd')]=qs[_0xa875('0xd')](_0x1cecad['query'][_0xa875('0xd')]);_0x44bb8c[_0xa875('0xc')]=qs[_0xa875('0xc')](_0x1cecad[_0xa875('0x1e')][_0xa875('0xc')]);}_0x44bb8c[_0xa875('0x24')]=qs[_0xa875('0x25')](_0x1cecad[_0xa875('0x1e')][_0xa875('0x25')]);_0x44bb8c[_0xa875('0x26')]=qs[_0xa875('0x27')](_['pick'](_0x1cecad[_0xa875('0x1e')],_0x130383[_0xa875('0x27')]),_0x7f83dc);if(_0x1cecad[_0xa875('0x1e')][_0xa875('0x28')]){_0x44bb8c[_0xa875('0x26')]=_['merge'](_0x44bb8c[_0xa875('0x26')],{'$or':_[_0xa875('0x29')](_0x7f83dc,function(_0x3f57d2){if(_0x3f57d2['type']!==_0xa875('0x2a')){var _0x324242={};_0x324242[_0x3f57d2[_0xa875('0x1c')]]={'$like':'%'+_0x1cecad[_0xa875('0x1e')]['filter']+'%'};return _0x324242;}})});}_0x44bb8c=_[_0xa875('0x2b')]({},_0x44bb8c,_0x1cecad[_0xa875('0x2c')]);var _0x5af2fb={'where':_0x44bb8c[_0xa875('0x26')]};return db[_0xa875('0x17')][_0xa875('0xf')](_0x5af2fb)[_0xa875('0x12')](function(_0x4f3cd8){_0x5e2781[_0xa875('0xf')]=_0x4f3cd8;if(_0x1cecad['query']['includeAll']){_0x44bb8c[_0xa875('0x2d')]=[{'all':!![]}];}return db[_0xa875('0x17')][_0xa875('0x2e')](_0x44bb8c);})[_0xa875('0x12')](function(_0x4528b2){_0x5e2781[_0xa875('0x2f')]=_[_0xa875('0x29')](_0x4528b2,function(_0x27c515){if(_0x27c515[_0xa875('0x30')]===_0xa875('0x31')){var _0x1f2f5c=encryptor['decryptString'](_0x27c515['data3']);_0x27c515[_0xa875('0x32')]=maskClientSecret(_0x1f2f5c);}return _0x27c515;});return _0x5e2781;})['then'](respondWithFilteredResult(_0x51d901,_0x44bb8c))[_0xa875('0x33')](handleError(_0x51d901,null));};exports[_0xa875('0x34')]=function(_0x4bdb83,_0x153df0){var _0x55f30f={'raw':!![],'where':{'id':_0x4bdb83['params']['id']}},_0x484fe7={};_0x484fe7[_0xa875('0x1b')]=_[_0xa875('0x35')](db[_0xa875('0x17')][_0xa875('0x18')]);_0x484fe7[_0xa875('0x1e')]=_[_0xa875('0x35')](_0x4bdb83[_0xa875('0x1e')]);_0x484fe7[_0xa875('0x27')]=_[_0xa875('0x1d')](_0x484fe7[_0xa875('0x1b')],_0x484fe7['query']);_0x55f30f[_0xa875('0x1f')]=_[_0xa875('0x1d')](_0x484fe7[_0xa875('0x1b')],qs[_0xa875('0x20')](_0x4bdb83[_0xa875('0x1e')][_0xa875('0x20')]));_0x55f30f[_0xa875('0x1f')]=_0x55f30f[_0xa875('0x1f')]['length']?_0x55f30f[_0xa875('0x1f')]:_0x484fe7[_0xa875('0x1b')];if(_0x4bdb83[_0xa875('0x1e')]['includeAll']){_0x55f30f['include']=[{'all':!![]}];}_0x55f30f=_[_0xa875('0x2b')]({},_0x55f30f,_0x4bdb83['options']);return db[_0xa875('0x17')]['find'](_0x55f30f)['then'](handleEntityNotFound(_0x153df0,null))[_0xa875('0x12')](function(_0x200f5f){if(_0x200f5f['service']==='MicrosoftAzure'){var _0x202b19=encryptor[_0xa875('0x36')](_0x200f5f[_0xa875('0x32')]);_0x200f5f[_0xa875('0x32')]=maskClientSecret(_0x202b19);}return _0x200f5f;})[_0xa875('0x12')](respondWithResult(_0x153df0,null))['catch'](handleError(_0x153df0,null));};exports[_0xa875('0x37')]=function(_0x84343,_0x379d00){if(!_0x84343[_0xa875('0x38')][_0xa875('0x1c')])throw new Error(_0xa875('0x39'));if(!_0x84343[_0xa875('0x38')][_0xa875('0x30')])throw new Error(_0xa875('0x3a'));var _0x274308=db[_0xa875('0x17')][_0xa875('0x18')][_0xa875('0x30')][_0xa875('0x3b')];if(!_0x274308[_0xa875('0x3c')](_0x84343[_0xa875('0x38')][_0xa875('0x30')]))throw new Error(_0xa875('0x3d')+_0x274308[_0xa875('0x3e')](',\x20'));if(_0x84343[_0xa875('0x38')][_0xa875('0x30')]==='MicrosoftAzure'&&_0x84343[_0xa875('0x38')]['data3']){_0x84343[_0xa875('0x38')][_0xa875('0x32')]=encryptor[_0xa875('0x3f')](_0x84343[_0xa875('0x38')][_0xa875('0x32')]);}return db[_0xa875('0x17')][_0xa875('0x37')](_0x84343[_0xa875('0x38')],{})[_0xa875('0x12')](respondWithResult(_0x379d00,0xc9))[_0xa875('0x33')](handleError(_0x379d00,null));};exports[_0xa875('0x40')]=function(_0x1b4366,_0x13f1b9){if(_0x1b4366[_0xa875('0x38')]['id']){delete _0x1b4366[_0xa875('0x38')]['id'];}return db[_0xa875('0x17')][_0xa875('0x41')]({'where':{'id':_0x1b4366[_0xa875('0x42')]['id']}})[_0xa875('0x12')](handleEntityNotFound(_0x13f1b9,null))[_0xa875('0x12')](function(_0x4c63f5){if(_0x4c63f5[_0xa875('0x30')]===_0xa875('0x31')&&_0x1b4366[_0xa875('0x38')][_0xa875('0x32')]){_0x1b4366[_0xa875('0x38')][_0xa875('0x32')]=encryptor[_0xa875('0x3f')](_0x1b4366[_0xa875('0x38')][_0xa875('0x32')]);}return _0x4c63f5;})[_0xa875('0x12')](saveUpdates(_0x1b4366[_0xa875('0x38')],null))[_0xa875('0x12')](respondWithResult(_0x13f1b9,null))[_0xa875('0x33')](handleError(_0x13f1b9,null));};exports['destroy']=function(_0xaba310,_0xc95226){return db['CloudProvider']['find']({'where':{'id':_0xaba310[_0xa875('0x42')]['id']}})['then'](handleEntityNotFound(_0xc95226,null))['then'](removeEntity(_0xc95226,null))['catch'](handleError(_0xc95226,null));};exports[_0xa875('0x43')]=function(_0x370ee4,_0x3dc19b){return db[_0xa875('0x17')][_0xa875('0x44')]({'where':{'id':_0x370ee4[_0xa875('0x42')]['id']},'raw':!![]})[_0xa875('0x12')](function(_0x12b0f9){if(!_0x12b0f9)return _0x3dc19b['sendStatus'](0x194);return{'url':oauth[_0xa875('0x45')](_0x12b0f9,_0x370ee4['user']['id'])};})[_0xa875('0x12')](respondWithResult(_0x3dc19b,null))[_0xa875('0x33')](handleError(_0x3dc19b,null));};exports[_0xa875('0x46')]=function(_0x1e8c47,_0x144072){var _0x216675=_0x1e8c47['body'];var _0x3c2f93;var _0x1e2305;if(_0x216675[_0xa875('0x14')])throw _0x216675;redis[_0xa875('0x47')](_0x216675[_0xa875('0x48')])[_0xa875('0x12')](function(_0x17514e){if(!_0x17514e)throw new Error(_0xa875('0x49'));_0x3c2f93=JSON[_0xa875('0x4a')](_0x17514e);var _0x111da5=Buffer['from'](_0x216675['state'],'base64')[_0xa875('0x4b')](_0xa875('0x4c'));_0x1e2305=JSON['parse'](_0x111da5);if(!oauth[_0xa875('0x4d')](_0x216675[_0xa875('0x4e')],_0x3c2f93[_0xa875('0x4f')]))throw new Error(_0xa875('0x50'));redis['del'](_0x216675[_0xa875('0x48')]);return oauth[_0xa875('0x51')](_0x216675[_0xa875('0x52')],_0x3c2f93);})[_0xa875('0x12')](function(_0x2c9f02){_0x3c2f93[_0xa875('0x53')]=_0x2c9f02[_0xa875('0x54')];_0x3c2f93[_0xa875('0x55')]=_0x2c9f02[_0xa875('0x56')];return db['CloudProvider'][_0xa875('0x40')]({'data5':_0x3c2f93['data5'],'data6':_0x3c2f93[_0xa875('0x55')]},{'where':{'id':_0x3c2f93['id']}});})[_0xa875('0x12')](function(){oauth[_0xa875('0x57')](_0x3c2f93);socket[_0xa875('0x58')]('microsoftAuthorization:success',{'id':_0x1e2305['id']});return;})[_0xa875('0x12')](respondWithStatusCode(_0x144072,null))['catch'](function(_0x1659f5){if(_0x1e2305){socket['emit'](_0xa875('0x59'),{'id':_0x1e2305['id']});}if(!_0x3c2f93){logger[_0xa875('0x14')](_0xa875('0x5a'),_0x1659f5);return _0x144072[_0xa875('0x9')](0x1f4)[_0xa875('0x15')](_0x1659f5[_0xa875('0x5b')]);}logger[_0xa875('0x14')]('Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s',_0x3c2f93['id'],JSON[_0xa875('0x5c')](_0x1659f5));});};
\ No newline at end of file
index 2b01031..d65aaef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f17=['./cloudProvider.attributes','exports','define','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf'];(function(_0x127cac,_0x1cb6eb){var _0x2dc7ee=function(_0x4c2089){while(--_0x4c2089){_0x127cac['push'](_0x127cac['shift']());}};_0x2dc7ee(++_0x1cb6eb);}(_0x6f17,0x71));var _0x76f1=function(_0x2e4e19,_0x493b50){_0x2e4e19=_0x2e4e19-0x0;var _0x9ba20b=_0x6f17[_0x2e4e19];return _0x9ba20b;};'use strict';var _=require(_0x76f1('0x0'));var util=require(_0x76f1('0x1'));var logger=require(_0x76f1('0x2'))('api');var moment=require('moment');var BPromise=require(_0x76f1('0x3'));var rp=require(_0x76f1('0x4'));var fs=require('fs');var path=require(_0x76f1('0x5'));var rimraf=require(_0x76f1('0x6'));var config=require('../../config/environment');var attributes=require(_0x76f1('0x7'));module[_0x76f1('0x8')]=function(_0x175e7a,_0x281935){return _0x175e7a[_0x76f1('0x9')]('CloudProvider',attributes,{'tableName':'cloud_providers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xde37=['api','moment','bluebird','rimraf','./cloudProvider.attributes','exports','define','cloud_providers','util','../../config/logger'];(function(_0x5e4274,_0x42aa2c){var _0x541bde=function(_0x2972e9){while(--_0x2972e9){_0x5e4274['push'](_0x5e4274['shift']());}};_0x541bde(++_0x42aa2c);}(_0xde37,0x134));var _0x7de3=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xde37[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0x7de3('0x0'));var logger=require(_0x7de3('0x1'))(_0x7de3('0x2'));var moment=require(_0x7de3('0x3'));var BPromise=require(_0x7de3('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x7de3('0x5'));var config=require('../../config/environment');var attributes=require(_0x7de3('0x6'));module[_0x7de3('0x7')]=function(_0x15d03d,_0xf5a194){return _0x15d03d[_0x7de3('0x8')]('CloudProvider',attributes,{'tableName':_0x7de3('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index face668..2de18f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c36=['redirect_uri','response_mode','scope','state','nonce','prompt','login','key','value','oauth2/','decode','payload','iss','issuer','aud','audience','isAfter','exp','resolve','then','CloudProvider','findOne','refresh_token','data6','data4','POST','replace','data2','access_token','data5','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','decryptString','intervals','bind','all','inspect','exports','lodash','jsonwebtoken','ioredis','request-promise','util','../../components/encryptor','../../config/logger','api','../../config/schedule/cloud-provider','redis','defaults','localhost','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','openid','email','offline_access','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','/token','map','type','Dynamics365','push','data7','/.default','join','Outlook365','{TENANT_ID}','id_token','from','stringify','toString','base64','randomBytes','hex','data1','response_type'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x0c36,0x76));var _0x60c3=function(_0x5dc03e,_0x54e60c){_0x5dc03e=_0x5dc03e-0x0;var _0x466a07=_0x0c36[_0x5dc03e];return _0x466a07;};'use strict';var _=require(_0x60c3('0x0'));var crypto=require('crypto');var jwt=require(_0x60c3('0x1'));var moment=require('moment');var Redis=require(_0x60c3('0x2'));var rp=require(_0x60c3('0x3'));var util=require(_0x60c3('0x4'));var encryptor=require(_0x60c3('0x5'));var config=require('../../config/environment');var logger=require(_0x60c3('0x6'))(_0x60c3('0x7'));var schedule=require(_0x60c3('0x8'));var db=require('../../mysqldb')['db'];config[_0x60c3('0x9')]=_[_0x60c3('0xa')](config['redis'],{'host':_0x60c3('0xb'),'port':0x18eb});var redis=new Redis(config[_0x60c3('0x9')]);var MICROSOFT_AUTH_URL=_0x60c3('0xc');var AZURE_AUTH_SCOPES={'Outlook365':[_0x60c3('0xd'),'profile',_0x60c3('0xe'),_0x60c3('0xf'),_0x60c3('0x10'),_0x60c3('0x11'),_0x60c3('0x12')],'Dynamics365':['openid',_0x60c3('0xf')]};var MICROSOFT_AUTH_ENDPOINT='/authorize';var MICROSOFT_TOKEN_ENDPOINT=_0x60c3('0x13');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x377667){var _0x5a6ba6=_[_0x60c3('0x14')](AZURE_AUTH_SCOPES[_0x377667[_0x60c3('0x15')]]);if(_0x377667[_0x60c3('0x15')]===_0x60c3('0x16'))_0x5a6ba6[_0x60c3('0x17')](_0x377667[_0x60c3('0x18')]+_0x60c3('0x19'));return _0x5a6ba6[_0x60c3('0x1a')]('\x20');}function getAccessTokenScope(_0x34b3e1){if(_0x34b3e1[_0x60c3('0x15')]===_0x60c3('0x1b'))return _0x60c3('0x10');if(_0x34b3e1['type']===_0x60c3('0x16'))return _0x34b3e1[_0x60c3('0x18')]+_0x60c3('0x19');}function generateMicrosoftAuthorizationUrl(_0x38bc0e,_0x2d114f){var _0x488933=MICROSOFT_AUTH_URL['replace'](_0x60c3('0x1c'),_0x38bc0e['data2']);var _0x4a8918=['code',_0x60c3('0x1d')];var _0x535612=Buffer[_0x60c3('0x1e')](JSON[_0x60c3('0x1f')]({'id':_0x2d114f}))[_0x60c3('0x20')](_0x60c3('0x21'));var _0x52ac9d=crypto[_0x60c3('0x22')](0x10)[_0x60c3('0x20')](_0x60c3('0x23'));var _0x3275ed=getAuthorizationScopes(_0x38bc0e);var _0x59df17=[{'key':'client_id','value':_0x38bc0e[_0x60c3('0x24')]},{'key':_0x60c3('0x25'),'value':encodeURIComponent(_0x4a8918['join']('\x20'))},{'key':_0x60c3('0x26'),'value':_0x38bc0e['data4']},{'key':_0x60c3('0x27'),'value':'form_post'},{'key':_0x60c3('0x28'),'value':encodeURIComponent(_0x3275ed)},{'key':_0x60c3('0x29'),'value':_0x535612},{'key':_0x60c3('0x2a'),'value':_0x52ac9d},{'key':_0x60c3('0x2b'),'value':_0x60c3('0x2c')}];var _0x1d7691=_0x488933+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0x60c3('0x14')](_0x59df17,function(_0x1aa04c){return _0x1aa04c[_0x60c3('0x2d')]+'='+_0x1aa04c[_0x60c3('0x2e')];})[_0x60c3('0x1a')]('&');_0x38bc0e['oauth2Claims']={'issuer':_0x488933['replace'](_0x60c3('0x2f'),''),'audience':_0x38bc0e['data1'],'state':_0x535612,'nonce':_0x52ac9d};redis['set'](_0x535612,JSON['stringify'](_0x38bc0e));return _0x1d7691;}function isValidIdToken(_0x24e1e9,_0x530275){try{var _0xa9eafd=jwt[_0x60c3('0x30')](_0x24e1e9,{'complete':!![]});var _0x4a7501=_0xa9eafd[_0x60c3('0x31')];if(_0x4a7501[_0x60c3('0x32')]!==_0x530275[_0x60c3('0x33')])return![];if(_0x4a7501[_0x60c3('0x34')]!==_0x530275[_0x60c3('0x35')])return![];if(_0x4a7501[_0x60c3('0x2a')]!==_0x530275[_0x60c3('0x2a')])return![];if(moment()[_0x60c3('0x36')](moment['unix'](_0x4a7501[_0x60c3('0x37')])))return![];return!![];}catch(_0x5f397c){throw _0x5f397c;}}function refreshOauth2MicrosoftAccessToken(_0x32f3ca){return Promise[_0x60c3('0x38')]()[_0x60c3('0x39')](function(){if(_0x32f3ca['data3'])return _0x32f3ca;return db[_0x60c3('0x3a')][_0x60c3('0x3b')]({'where':{'id':_0x32f3ca['id']},'raw':!![]});})['then'](function(_0x54f6b9){var _0x15dac4={'grant_type':_0x60c3('0x3c'),'refresh_token':_0x54f6b9[_0x60c3('0x3d')],'scope':getAccessTokenScope(_0x54f6b9),'redirect_uri':_0x54f6b9[_0x60c3('0x3e')],'client_id':_0x54f6b9[_0x60c3('0x24')],'client_secret':encryptor['decryptString'](_0x54f6b9['data3'])};var _0xfd7773={'method':_0x60c3('0x3f'),'uri':MICROSOFT_AUTH_URL[_0x60c3('0x40')](_0x60c3('0x1c'),_0x54f6b9[_0x60c3('0x41')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x15dac4,'json':!![]};return rp(_0xfd7773);})[_0x60c3('0x39')](function(_0x125c7e){_0x32f3ca['data5']=_0x125c7e[_0x60c3('0x42')];_0x32f3ca[_0x60c3('0x3d')]=_0x125c7e[_0x60c3('0x3c')];return db['CloudProvider']['update']({'data5':_0x32f3ca[_0x60c3('0x43')],'data6':_0x32f3ca[_0x60c3('0x3d')]},{'where':{'id':_0x32f3ca['id']}});})[_0x60c3('0x39')](function(){return _0x32f3ca;})[_0x60c3('0x44')](function(_0xf3859d){logger[_0x60c3('0x45')](_0x60c3('0x46'),_0x32f3ca['id'],_0xf3859d);});}function getOauth2MicrosoftAccessToken(_0x3ed8bf,_0xf37cc8){var _0x3fdc27={'grant_type':_0x60c3('0x47'),'code':_0x3ed8bf,'scope':getAccessTokenScope(_0xf37cc8),'redirect_uri':_0xf37cc8[_0x60c3('0x3e')],'client_id':_0xf37cc8[_0x60c3('0x24')],'client_secret':encryptor[_0x60c3('0x48')](_0xf37cc8['data3'])};var _0x4ac851={'method':_0x60c3('0x3f'),'uri':MICROSOFT_AUTH_URL[_0x60c3('0x40')](_0x60c3('0x1c'),_0xf37cc8[_0x60c3('0x41')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x3fdc27,'json':!![]};return rp(_0x4ac851);}function startRefreshInterval(_0x4ee4e3){var _0x3f765d=schedule[_0x60c3('0x49')];if(_0x3f765d[_0x4ee4e3['id']])clearInterval(_0x3f765d[_0x4ee4e3['id']]);_0x3f765d[_0x4ee4e3['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0x60c3('0x4a')](this,{'id':_0x4ee4e3['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0x60c3('0x49')]=_0x3f765d;}function startAllRefreshIntervals(){return db[_0x60c3('0x3a')]['findAll']({'where':{'data6':{'$ne':null}},'raw':!![]})[_0x60c3('0x39')](function(_0x2ff2ba){var _0x1dceb4=_0x2ff2ba[_0x60c3('0x14')](function(_0x1d34a3){return refreshOauth2MicrosoftAccessToken(_0x1d34a3)[_0x60c3('0x39')](function(_0x3719c3){startRefreshInterval(_0x3719c3);});});return Promise[_0x60c3('0x4b')](_0x1dceb4);})[_0x60c3('0x44')](function(_0x1dd10c){var _0xfb6573=_0x1dd10c?util[_0x60c3('0x4c')](_0x1dd10c,{'showHidden':![],'depth':null}):'';logger[_0x60c3('0x45')]('[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s',_0xfb6573);});}module[_0x60c3('0x4d')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
+var _0x5cbb=['findAll','all','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','lodash','jsonwebtoken','moment','ioredis','request-promise','util','../../components/encryptor','../../config/logger','api','../../config/schedule/cloud-provider','../../mysqldb','redis','defaults','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','openid','profile','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','offline_access','/authorize','/token','map','type','Dynamics365','push','data7','/.default','replace','data2','code','id_token','from','stringify','toString','base64','randomBytes','client_id','data1','response_type','join','redirect_uri','data4','response_mode','form_post','scope','state','nonce','prompt','login','key','oauth2Claims','set','decode','payload','iss','issuer','audience','unix','exp','then','data3','findOne','refresh_token','data6','decryptString','{TENANT_ID}','data5','access_token','update','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','POST','intervals','bind'];(function(_0x28947d,_0x4cc9c6){var _0x12d2ee=function(_0x3f38fc){while(--_0x3f38fc){_0x28947d['push'](_0x28947d['shift']());}};_0x12d2ee(++_0x4cc9c6);}(_0x5cbb,0x1dd));var _0xb5cb=function(_0x4ea2bf,_0xf0cf1c){_0x4ea2bf=_0x4ea2bf-0x0;var _0x42690b=_0x5cbb[_0x4ea2bf];return _0x42690b;};'use strict';var _=require(_0xb5cb('0x0'));var crypto=require('crypto');var jwt=require(_0xb5cb('0x1'));var moment=require(_0xb5cb('0x2'));var Redis=require(_0xb5cb('0x3'));var rp=require(_0xb5cb('0x4'));var util=require(_0xb5cb('0x5'));var encryptor=require(_0xb5cb('0x6'));var config=require('../../config/environment');var logger=require(_0xb5cb('0x7'))(_0xb5cb('0x8'));var schedule=require(_0xb5cb('0x9'));var db=require(_0xb5cb('0xa'))['db'];config[_0xb5cb('0xb')]=_[_0xb5cb('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var redis=new Redis(config[_0xb5cb('0xb')]);var MICROSOFT_AUTH_URL=_0xb5cb('0xd');var AZURE_AUTH_SCOPES={'Outlook365':[_0xb5cb('0xe'),_0xb5cb('0xf'),'email','offline_access',_0xb5cb('0x10'),_0xb5cb('0x11'),'https://outlook.office.com/SMTP.Send'],'Dynamics365':[_0xb5cb('0xe'),_0xb5cb('0x12')]};var MICROSOFT_AUTH_ENDPOINT=_0xb5cb('0x13');var MICROSOFT_TOKEN_ENDPOINT=_0xb5cb('0x14');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x45b9fb){var _0x16fb6c=_[_0xb5cb('0x15')](AZURE_AUTH_SCOPES[_0x45b9fb[_0xb5cb('0x16')]]);if(_0x45b9fb[_0xb5cb('0x16')]===_0xb5cb('0x17'))_0x16fb6c[_0xb5cb('0x18')](_0x45b9fb[_0xb5cb('0x19')]+_0xb5cb('0x1a'));return _0x16fb6c['join']('\x20');}function getAccessTokenScope(_0x2eb28c){if(_0x2eb28c[_0xb5cb('0x16')]==='Outlook365')return'https://outlook.office365.com/IMAP.AccessAsUser.All';if(_0x2eb28c[_0xb5cb('0x16')]==='Dynamics365')return _0x2eb28c[_0xb5cb('0x19')]+_0xb5cb('0x1a');}function generateMicrosoftAuthorizationUrl(_0x356692,_0x1ea93e){var _0x2d7e44=MICROSOFT_AUTH_URL[_0xb5cb('0x1b')]('{TENANT_ID}',_0x356692[_0xb5cb('0x1c')]);var _0x3fb64e=[_0xb5cb('0x1d'),_0xb5cb('0x1e')];var _0x51373f=Buffer[_0xb5cb('0x1f')](JSON[_0xb5cb('0x20')]({'id':_0x1ea93e}))[_0xb5cb('0x21')](_0xb5cb('0x22'));var _0x386ada=crypto[_0xb5cb('0x23')](0x10)[_0xb5cb('0x21')]('hex');var _0x8c88ce=getAuthorizationScopes(_0x356692);var _0x26091a=[{'key':_0xb5cb('0x24'),'value':_0x356692[_0xb5cb('0x25')]},{'key':_0xb5cb('0x26'),'value':encodeURIComponent(_0x3fb64e[_0xb5cb('0x27')]('\x20'))},{'key':_0xb5cb('0x28'),'value':_0x356692[_0xb5cb('0x29')]},{'key':_0xb5cb('0x2a'),'value':_0xb5cb('0x2b')},{'key':_0xb5cb('0x2c'),'value':encodeURIComponent(_0x8c88ce)},{'key':_0xb5cb('0x2d'),'value':_0x51373f},{'key':_0xb5cb('0x2e'),'value':_0x386ada},{'key':_0xb5cb('0x2f'),'value':_0xb5cb('0x30')}];var _0x3ec249=_0x2d7e44+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0xb5cb('0x15')](_0x26091a,function(_0x28334b){return _0x28334b[_0xb5cb('0x31')]+'='+_0x28334b['value'];})[_0xb5cb('0x27')]('&');_0x356692[_0xb5cb('0x32')]={'issuer':_0x2d7e44[_0xb5cb('0x1b')]('oauth2/',''),'audience':_0x356692[_0xb5cb('0x25')],'state':_0x51373f,'nonce':_0x386ada};redis[_0xb5cb('0x33')](_0x51373f,JSON[_0xb5cb('0x20')](_0x356692));return _0x3ec249;}function isValidIdToken(_0xd7b4bd,_0x41ea3c){try{var _0x5d9e81=jwt[_0xb5cb('0x34')](_0xd7b4bd,{'complete':!![]});var _0x1325a2=_0x5d9e81[_0xb5cb('0x35')];if(_0x1325a2[_0xb5cb('0x36')]!==_0x41ea3c[_0xb5cb('0x37')])return![];if(_0x1325a2['aud']!==_0x41ea3c[_0xb5cb('0x38')])return![];if(_0x1325a2[_0xb5cb('0x2e')]!==_0x41ea3c[_0xb5cb('0x2e')])return![];if(moment()['isAfter'](moment[_0xb5cb('0x39')](_0x1325a2[_0xb5cb('0x3a')])))return![];return!![];}catch(_0x9f55d0){throw _0x9f55d0;}}function refreshOauth2MicrosoftAccessToken(_0x4246a4){return Promise['resolve']()[_0xb5cb('0x3b')](function(){if(_0x4246a4[_0xb5cb('0x3c')])return _0x4246a4;return db['CloudProvider'][_0xb5cb('0x3d')]({'where':{'id':_0x4246a4['id']},'raw':!![]});})[_0xb5cb('0x3b')](function(_0x5b21b6){var _0x52aa2e={'grant_type':_0xb5cb('0x3e'),'refresh_token':_0x5b21b6[_0xb5cb('0x3f')],'scope':getAccessTokenScope(_0x5b21b6),'redirect_uri':_0x5b21b6[_0xb5cb('0x29')],'client_id':_0x5b21b6[_0xb5cb('0x25')],'client_secret':encryptor[_0xb5cb('0x40')](_0x5b21b6[_0xb5cb('0x3c')])};var _0x4e113b={'method':'POST','uri':MICROSOFT_AUTH_URL[_0xb5cb('0x1b')](_0xb5cb('0x41'),_0x5b21b6[_0xb5cb('0x1c')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x52aa2e,'json':!![]};return rp(_0x4e113b);})[_0xb5cb('0x3b')](function(_0x2f023d){_0x4246a4[_0xb5cb('0x42')]=_0x2f023d[_0xb5cb('0x43')];_0x4246a4['data6']=_0x2f023d['refresh_token'];return db['CloudProvider'][_0xb5cb('0x44')]({'data5':_0x4246a4[_0xb5cb('0x42')],'data6':_0x4246a4['data6']},{'where':{'id':_0x4246a4['id']}});})[_0xb5cb('0x3b')](function(){return _0x4246a4;})[_0xb5cb('0x45')](function(_0x27b221){logger[_0xb5cb('0x46')](_0xb5cb('0x47'),_0x4246a4['id'],_0x27b221);});}function getOauth2MicrosoftAccessToken(_0x46abca,_0x525833){var _0x247dcb={'grant_type':_0xb5cb('0x48'),'code':_0x46abca,'scope':getAccessTokenScope(_0x525833),'redirect_uri':_0x525833[_0xb5cb('0x29')],'client_id':_0x525833[_0xb5cb('0x25')],'client_secret':encryptor[_0xb5cb('0x40')](_0x525833[_0xb5cb('0x3c')])};var _0x3ff385={'method':_0xb5cb('0x49'),'uri':MICROSOFT_AUTH_URL[_0xb5cb('0x1b')](_0xb5cb('0x41'),_0x525833[_0xb5cb('0x1c')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x247dcb,'json':!![]};return rp(_0x3ff385);}function startRefreshInterval(_0xc4e5b1){var _0x2ad582=schedule[_0xb5cb('0x4a')];if(_0x2ad582[_0xc4e5b1['id']])clearInterval(_0x2ad582[_0xc4e5b1['id']]);_0x2ad582[_0xc4e5b1['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0xb5cb('0x4b')](this,{'id':_0xc4e5b1['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0xb5cb('0x4a')]=_0x2ad582;}function startAllRefreshIntervals(){return db['CloudProvider'][_0xb5cb('0x4c')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0xb5cb('0x3b')](function(_0x15c245){var _0x1aac0e=_0x15c245['map'](function(_0x5f1a0b){return refreshOauth2MicrosoftAccessToken(_0x5f1a0b)[_0xb5cb('0x3b')](function(_0x3abf5e){startRefreshInterval(_0x3abf5e);});});return Promise[_0xb5cb('0x4d')](_0x1aac0e);})[_0xb5cb('0x45')](function(_0xdf5e61){var _0x75f33b=_0xdf5e61?util['inspect'](_0xdf5e61,{'showHidden':![],'depth':null}):'';logger[_0xb5cb('0x46')](_0xb5cb('0x4e'),_0x75f33b);});}module['exports']={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
index da89da5..0f01bf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6edc=['code','message','result','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','CloudProvider,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x158b34,_0x2a8fb1){var _0x2f5449=function(_0x58de0a){while(--_0x58de0a){_0x158b34['push'](_0x158b34['shift']());}};_0x2f5449(++_0x2a8fb1);}(_0x6edc,0x138));var _0xc6ed=function(_0x5f399b,_0x2a181f){_0x5f399b=_0x5f399b-0x0;var _0x1c207e=_0x6edc[_0x5f399b];return _0x1c207e;};'use strict';var _=require(_0xc6ed('0x0'));var util=require(_0xc6ed('0x1'));var moment=require(_0xc6ed('0x2'));var BPromise=require(_0xc6ed('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc6ed('0x4'))['db'];var utils=require(_0xc6ed('0x5'));var logger=require(_0xc6ed('0x6'))(_0xc6ed('0x7'));var config=require('../../config/environment');var jayson=require(_0xc6ed('0x8'));var client=jayson[_0xc6ed('0x9')][_0xc6ed('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x548a14,_0x274b0d,_0x5a077d){return new BPromise(function(_0xd46c3f,_0x13fed0){return client[_0xc6ed('0xb')](_0x548a14,_0x5a077d)[_0xc6ed('0xc')](function(_0x496e6a){logger[_0xc6ed('0xd')](_0xc6ed('0xe'),_0x274b0d,_0xc6ed('0xf'));logger['debug']('CloudProvider,\x20%s,\x20%s,\x20%s',_0x274b0d,_0xc6ed('0xf'),JSON[_0xc6ed('0x10')](_0x496e6a));if(_0x496e6a[_0xc6ed('0x11')]){if(_0x496e6a[_0xc6ed('0x11')][_0xc6ed('0x12')]===0x1f4){logger['error'](_0xc6ed('0xe'),_0x274b0d,_0x496e6a['error'][_0xc6ed('0x13')]);return _0x13fed0(_0x496e6a['error'][_0xc6ed('0x13')]);}logger[_0xc6ed('0x11')](_0xc6ed('0xe'),_0x274b0d,_0x496e6a['error'][_0xc6ed('0x13')]);return _0xd46c3f(_0x496e6a[_0xc6ed('0x11')][_0xc6ed('0x13')]);}else{logger['info'](_0xc6ed('0xe'),_0x274b0d,'request\x20sent');_0xd46c3f(_0x496e6a[_0xc6ed('0x14')][_0xc6ed('0x13')]);}})[_0xc6ed('0x15')](function(_0x5346fe){logger[_0xc6ed('0x11')](_0xc6ed('0xe'),_0x274b0d,_0x5346fe);_0x13fed0(_0x5346fe);});});}
\ No newline at end of file
+var _0x1472=['stringify','error','CloudProvider,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','request','info','request\x20sent','debug','CloudProvider,\x20%s,\x20%s,\x20%s'];(function(_0x3615dc,_0x22d234){var _0x275e7e=function(_0x2c9b55){while(--_0x2c9b55){_0x3615dc['push'](_0x3615dc['shift']());}};_0x275e7e(++_0x22d234);}(_0x1472,0x166));var _0x2147=function(_0x761b6d,_0x7c7fa8){_0x761b6d=_0x761b6d-0x0;var _0x3a1639=_0x1472[_0x761b6d];return _0x3a1639;};'use strict';var _=require(_0x2147('0x0'));var util=require(_0x2147('0x1'));var moment=require(_0x2147('0x2'));var BPromise=require(_0x2147('0x3'));var rs=require(_0x2147('0x4'));var fs=require('fs');var Redis=require(_0x2147('0x5'));var db=require(_0x2147('0x6'))['db'];var utils=require(_0x2147('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0x2147('0x8'));var jayson=require(_0x2147('0x9'));var client=jayson[_0x2147('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4b8324,_0x160f19,_0x4b8310){return new BPromise(function(_0x4286f8,_0x1d759e){return client[_0x2147('0xb')](_0x4b8324,_0x4b8310)['then'](function(_0x32dcbc){logger[_0x2147('0xc')]('CloudProvider,\x20%s,\x20%s',_0x160f19,_0x2147('0xd'));logger[_0x2147('0xe')](_0x2147('0xf'),_0x160f19,_0x2147('0xd'),JSON[_0x2147('0x10')](_0x32dcbc));if(_0x32dcbc['error']){if(_0x32dcbc[_0x2147('0x11')]['code']===0x1f4){logger[_0x2147('0x11')](_0x2147('0x12'),_0x160f19,_0x32dcbc[_0x2147('0x11')][_0x2147('0x13')]);return _0x1d759e(_0x32dcbc[_0x2147('0x11')][_0x2147('0x13')]);}logger[_0x2147('0x11')](_0x2147('0x12'),_0x160f19,_0x32dcbc['error'][_0x2147('0x13')]);return _0x4286f8(_0x32dcbc[_0x2147('0x11')]['message']);}else{logger['info'](_0x2147('0x12'),_0x160f19,_0x2147('0xd'));_0x4286f8(_0x32dcbc[_0x2147('0x14')]['message']);}})[_0x2147('0x15')](function(_0x19a7d6){logger['error'](_0x2147('0x12'),_0x160f19,_0x19a7d6);_0x1d759e(_0x19a7d6);});});}
\ No newline at end of file
index 27083c4..8cfeb52 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(_0x4fc9e6,_0xc51915){var _0x551d28=function(_0x1a603b){while(--_0x1a603b){_0x4fc9e6['push'](_0x4fc9e6['shift']());}};_0x551d28(++_0xc51915);}(_0x7a54,0x106));var _0x47a5=function(_0x22b486,_0x117439){_0x22b486=_0x22b486-0x0;var _0x2cdbc1=_0x7a54[_0x22b486];return _0x2cdbc1;};'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(_0x114838,_0xa6aaa3){var _0x1d3055=function(_0xfdabac){while(--_0xfdabac){_0x114838['push'](_0x114838['shift']());}};_0x1d3055(++_0xa6aaa3);}(_0xadb5,0xad));var _0x5adb=function(_0x55cf71,_0x252e41){_0x55cf71=_0x55cf71-0x0;var _0x4772ff=_0xadb5[_0x55cf71];return _0x4772ff;};'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 4d9a2e1..b73ad89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49df=['exports','name','STRING'];(function(_0x310877,_0x51b448){var _0x4d2054=function(_0x4765d6){while(--_0x4765d6){_0x310877['push'](_0x310877['shift']());}};_0x4d2054(++_0x51b448);}(_0x49df,0x156));var _0xf49d=function(_0x3ca891,_0x134385){_0x3ca891=_0x3ca891-0x0;var _0x3c4979=_0x49df[_0x3ca891];return _0x3c4979;};'use strict';var Sequelize=require('sequelize');module[_0xf49d('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0xf49d('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0xf49d('0x2')]},'companyId':{'type':Sequelize[_0xf49d('0x2')]},'website':{'type':Sequelize[_0xf49d('0x2')]},'phone':{'type':Sequelize[_0xf49d('0x2')]},'fax':{'type':Sequelize[_0xf49d('0x2')]},'type':{'type':Sequelize[_0xf49d('0x2')]},'street':{'type':Sequelize[_0xf49d('0x2')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0xf49d('0x2')]},'email':{'type':Sequelize[_0xf49d('0x2')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0xf49d('0x2')]},'sStreet':{'type':Sequelize[_0xf49d('0x2')]},'sPostalCode':{'type':Sequelize[_0xf49d('0x2')]},'sCity':{'type':Sequelize['STRING']},'sCountry':{'type':Sequelize[_0xf49d('0x2')]},'description':{'type':Sequelize[_0xf49d('0x2')]}};
\ No newline at end of file
+var _0x27dc=['STRING','name','sequelize'];(function(_0x53ddab,_0x4ada9d){var _0x5819ac=function(_0x4d5fc8){while(--_0x4d5fc8){_0x53ddab['push'](_0x53ddab['shift']());}};_0x5819ac(++_0x4ada9d);}(_0x27dc,0xe9));var _0xc27d=function(_0x39f05c,_0x4d062a){_0x39f05c=_0x39f05c-0x0;var _0x315251=_0x27dc[_0x39f05c];return _0x315251;};'use strict';var Sequelize=require(_0xc27d('0x0'));module['exports']={'name':{'type':Sequelize[_0xc27d('0x1')],'unique':_0xc27d('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0xc27d('0x1')]},'companyId':{'type':Sequelize['STRING']},'website':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0xc27d('0x1')]},'fax':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xc27d('0x1')]},'street':{'type':Sequelize[_0xc27d('0x1')]},'postalCode':{'type':Sequelize[_0xc27d('0x1')]},'city':{'type':Sequelize[_0xc27d('0x1')]},'country':{'type':Sequelize[_0xc27d('0x1')]},'email':{'type':Sequelize[_0xc27d('0x1')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize['STRING']},'sStreet':{'type':Sequelize[_0xc27d('0x1')]},'sPostalCode':{'type':Sequelize['STRING']},'sCity':{'type':Sequelize[_0xc27d('0x1')]},'sCountry':{'type':Sequelize[_0xc27d('0x1')]},'description':{'type':Sequelize[_0xc27d('0x1')]}};
\ No newline at end of file
index 2456fc9..6da619b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32e3=['index','describe','model','keys','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','merge','where','options','CmCompany','includeAll','include','findAll','rows','catch','params','rawAttributes','intersection','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','ids','omit','getContacts','findOne','CmContact','map','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../mysqldb','end','status','offset','limit','undefined','count','set','Content-Range','json','reject','save','then','destroy','get','UserProfileResource','sendStatus','error','stack','name'];(function(_0x10dab1,_0x3739d1){var _0xf6ac70=function(_0x157a10){while(--_0x157a10){_0x10dab1['push'](_0x10dab1['shift']());}};_0xf6ac70(++_0x3739d1);}(_0x32e3,0xd5));var _0x332e=function(_0x46a189,_0x599f86){_0x46a189=_0x46a189-0x0;var _0x4d1d9b=_0x32e3[_0x46a189];return _0x4d1d9b;};'use strict';var emlformat=require(_0x332e('0x0'));var rimraf=require(_0x332e('0x1'));var zipdir=require(_0x332e('0x2'));var jsonpatch=require(_0x332e('0x3'));var rp=require(_0x332e('0x4'));var moment=require(_0x332e('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x332e('0x6'));var path=require(_0x332e('0x7'));var sox=require('sox');var csv=require(_0x332e('0x8'));var ejs=require(_0x332e('0x9'));var fs=require('fs');var fs_extra=require(_0x332e('0xa'));var _=require('lodash');var squel=require(_0x332e('0xb'));var crypto=require('crypto');var jsforce=require(_0x332e('0xc'));var deskjs=require(_0x332e('0xd'));var toCsv=require(_0x332e('0x8'));var querystring=require(_0x332e('0xe'));var Papa=require(_0x332e('0xf'));var Redis=require(_0x332e('0x10'));var authService=require(_0x332e('0x11'));var qs=require(_0x332e('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x332e('0x13'));var logger=require('../../config/logger')(_0x332e('0x14'));var utils=require(_0x332e('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x332e('0x16'))['db'];function respondWithStatusCode(_0x2cafdf,_0x1bbc95){_0x1bbc95=_0x1bbc95||0xcc;return function(_0x74329d){if(_0x74329d){return _0x2cafdf['sendStatus'](_0x1bbc95);}return _0x2cafdf['status'](_0x1bbc95)[_0x332e('0x17')]();};}function respondWithResult(_0x5a0b8b,_0x511e21){_0x511e21=_0x511e21||0xc8;return function(_0x3bb9ad){if(_0x3bb9ad){return _0x5a0b8b[_0x332e('0x18')](_0x511e21)['json'](_0x3bb9ad);}};}function respondWithFilteredResult(_0x4ff072,_0x353362){return function(_0x50bb8d){if(_0x50bb8d){var _0x3e2c40=typeof _0x353362[_0x332e('0x19')]==='undefined'&&typeof _0x353362[_0x332e('0x1a')]===_0x332e('0x1b');var _0x3602cf=_0x50bb8d['count'];var _0x463d02=_0x3e2c40?0x0:_0x353362[_0x332e('0x19')];var _0x5069e0=_0x3e2c40?_0x50bb8d[_0x332e('0x1c')]:_0x353362[_0x332e('0x19')]+_0x353362[_0x332e('0x1a')];var _0x159c7c;if(_0x5069e0>=_0x3602cf){_0x5069e0=_0x3602cf;_0x159c7c=0xc8;}else{_0x159c7c=0xce;}_0x4ff072[_0x332e('0x18')](_0x159c7c);return _0x4ff072[_0x332e('0x1d')](_0x332e('0x1e'),_0x463d02+'-'+_0x5069e0+'/'+_0x3602cf)[_0x332e('0x1f')](_0x50bb8d);}return null;};}function patchUpdates(_0x2dfcfb){return function(_0x1aea06){try{jsonpatch['apply'](_0x1aea06,_0x2dfcfb,!![]);}catch(_0x22d626){return BPromise[_0x332e('0x20')](_0x22d626);}return _0x1aea06[_0x332e('0x21')]();};}function saveUpdates(_0x19f7c9,_0x486f28){return function(_0x561983){if(_0x561983){return _0x561983['update'](_0x19f7c9)[_0x332e('0x22')](function(_0x238aa1){return _0x238aa1;});}return null;};}function removeEntity(_0x36461f,_0x1843eb){return function(_0x4fac6a){if(_0x4fac6a){return _0x4fac6a[_0x332e('0x23')]()['then'](function(){var _0x50de84=_0x4fac6a[_0x332e('0x24')]({'plain':!![]});var _0x5dbca0='Companies';return db[_0x332e('0x25')][_0x332e('0x23')]({'where':{'type':_0x5dbca0,'resourceId':_0x50de84['id']}})[_0x332e('0x22')](function(){return _0x4fac6a;});})[_0x332e('0x22')](function(){_0x36461f[_0x332e('0x18')](0xcc)[_0x332e('0x17')]();});}};}function handleEntityNotFound(_0x47f6dc,_0x5a270f){return function(_0x44c4f3){if(!_0x44c4f3){_0x47f6dc[_0x332e('0x26')](0x194);}return _0x44c4f3;};}function handleError(_0x3ecee7,_0x58e0d4){_0x58e0d4=_0x58e0d4||0x1f4;return function(_0x503c1d){logger[_0x332e('0x27')](_0x503c1d[_0x332e('0x28')]);if(_0x503c1d[_0x332e('0x29')]){delete _0x503c1d[_0x332e('0x29')];}_0x3ecee7[_0x332e('0x18')](_0x58e0d4)['send'](_0x503c1d);};}exports[_0x332e('0x2a')]=function(_0x46eb56,_0x243e00){var _0x5be782={},_0x41d843={},_0x15a3bd={'count':0x0,'rows':[]};return db['CmCompany'][_0x332e('0x2b')]()[_0x332e('0x22')](function(_0x7b1427){_0x41d843[_0x332e('0x2c')]=_[_0x332e('0x2d')](_0x7b1427);_0x41d843[_0x332e('0x2e')]=_[_0x332e('0x2d')](_0x46eb56['query']);_0x41d843['filters']=_['intersection'](_0x41d843[_0x332e('0x2c')],_0x41d843[_0x332e('0x2e')]);_0x5be782[_0x332e('0x2f')]=_['intersection'](_0x41d843['model'],qs[_0x332e('0x30')](_0x46eb56[_0x332e('0x2e')][_0x332e('0x30')]));_0x5be782[_0x332e('0x2f')]=_0x5be782[_0x332e('0x2f')][_0x332e('0x31')]?_0x5be782['attributes']:_0x41d843[_0x332e('0x2c')];if(!_0x46eb56[_0x332e('0x2e')][_0x332e('0x32')](_0x332e('0x33'))){_0x5be782['limit']=qs[_0x332e('0x1a')](_0x46eb56['query']['limit']);_0x5be782[_0x332e('0x19')]=qs[_0x332e('0x19')](_0x46eb56['query'][_0x332e('0x19')]);}_0x5be782[_0x332e('0x34')]=qs[_0x332e('0x35')](_0x46eb56[_0x332e('0x2e')][_0x332e('0x35')]);_0x5be782['where']=qs[_0x332e('0x36')](_[_0x332e('0x37')](_0x46eb56[_0x332e('0x2e')],_0x41d843[_0x332e('0x36')]),_0x7b1427);if(_0x46eb56[_0x332e('0x2e')][_0x332e('0x38')]){_0x5be782['where']=_[_0x332e('0x39')](_0x5be782[_0x332e('0x3a')],{'$or':_['map'](_0x5be782[_0x332e('0x2f')],function(_0x312e88){var _0x5ca8ab={};_0x5ca8ab[_0x312e88]={'$like':'%'+_0x46eb56[_0x332e('0x2e')]['filter']+'%'};return _0x5ca8ab;})});}_0x5be782=_[_0x332e('0x39')]({},_0x5be782,_0x46eb56[_0x332e('0x3b')]);var _0x58764c={'where':_0x5be782[_0x332e('0x3a')]};return db[_0x332e('0x3c')][_0x332e('0x1c')](_0x58764c)[_0x332e('0x22')](function(_0x2dbad3){_0x15a3bd[_0x332e('0x1c')]=_0x2dbad3;if(_0x46eb56[_0x332e('0x2e')][_0x332e('0x3d')]){_0x5be782[_0x332e('0x3e')]=[{'all':!![]}];}return db[_0x332e('0x3c')][_0x332e('0x3f')](_0x5be782);})['then'](function(_0x1f6696){_0x15a3bd[_0x332e('0x40')]=_0x1f6696;return _0x15a3bd;})['then'](respondWithFilteredResult(_0x243e00,_0x5be782))[_0x332e('0x41')](handleError(_0x243e00,null));})[_0x332e('0x41')](handleError(_0x243e00,null));};exports['show']=function(_0x44b043,_0x37af71){var _0x575b4e={'raw':![],'where':{'id':_0x44b043[_0x332e('0x42')]['id']}},_0x1d4c2f={};_0x1d4c2f[_0x332e('0x2c')]=_[_0x332e('0x2d')](db[_0x332e('0x3c')][_0x332e('0x43')]);_0x1d4c2f['query']=_[_0x332e('0x2d')](_0x44b043[_0x332e('0x2e')]);_0x1d4c2f[_0x332e('0x36')]=_[_0x332e('0x44')](_0x1d4c2f[_0x332e('0x2c')],_0x1d4c2f['query']);_0x575b4e[_0x332e('0x2f')]=_[_0x332e('0x44')](_0x1d4c2f[_0x332e('0x2c')],qs['fields'](_0x44b043[_0x332e('0x2e')][_0x332e('0x30')]));_0x575b4e['attributes']=_0x575b4e[_0x332e('0x2f')][_0x332e('0x31')]?_0x575b4e[_0x332e('0x2f')]:_0x1d4c2f[_0x332e('0x2c')];if(_0x44b043[_0x332e('0x2e')][_0x332e('0x3d')]){_0x575b4e['include']=[{'all':!![]}];}_0x575b4e=_[_0x332e('0x39')]({},_0x575b4e,_0x44b043[_0x332e('0x3b')]);return db['CmCompany'][_0x332e('0x45')](_0x575b4e)[_0x332e('0x22')](handleEntityNotFound(_0x37af71,null))['then'](respondWithResult(_0x37af71,null))[_0x332e('0x41')](handleError(_0x37af71,null));};exports[_0x332e('0x46')]=function(_0x573a70,_0x5b3f43){return db['CmCompany'][_0x332e('0x46')](_0x573a70[_0x332e('0x47')],{})['then'](function(_0x37af6e){var _0x4bee66=_0x573a70[_0x332e('0x48')]['get']({'plain':!![]});if(!_0x4bee66)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4bee66[_0x332e('0x49')]===_0x332e('0x48')){var _0x41bbfa=_0x37af6e[_0x332e('0x24')]({'plain':!![]});var _0x2bb5c3='Companies';return db[_0x332e('0x4a')]['find']({'where':{'name':_0x2bb5c3,'userProfileId':_0x4bee66[_0x332e('0x4b')]},'raw':!![]})[_0x332e('0x22')](function(_0x2f7f6c){if(_0x2f7f6c&&_0x2f7f6c[_0x332e('0x4c')]===0x0){return db[_0x332e('0x25')][_0x332e('0x46')]({'name':_0x41bbfa['name'],'resourceId':_0x41bbfa['id'],'type':_0x2f7f6c[_0x332e('0x29')],'sectionId':_0x2f7f6c['id']},{})[_0x332e('0x22')](function(){return _0x37af6e;});}else{return _0x37af6e;}})[_0x332e('0x41')](function(_0x540667){logger[_0x332e('0x27')](_0x332e('0x4d'),_0x540667);throw _0x540667;});}return _0x37af6e;})[_0x332e('0x22')](respondWithResult(_0x5b3f43,0xc9))[_0x332e('0x41')](handleError(_0x5b3f43,null));};exports[_0x332e('0x4e')]=function(_0xe2fb4c,_0x3e8869){if(_0xe2fb4c['body']['id']){delete _0xe2fb4c[_0x332e('0x47')]['id'];}return db[_0x332e('0x3c')][_0x332e('0x45')]({'where':{'id':_0xe2fb4c[_0x332e('0x42')]['id']}})[_0x332e('0x22')](handleEntityNotFound(_0x3e8869,null))[_0x332e('0x22')](saveUpdates(_0xe2fb4c[_0x332e('0x47')],null))[_0x332e('0x22')](respondWithResult(_0x3e8869,null))[_0x332e('0x41')](handleError(_0x3e8869,null));};exports['destroy']=function(_0x127ba6,_0xbbb8ab){return db[_0x332e('0x3c')]['find']({'where':{'id':_0x127ba6[_0x332e('0x42')]['id']}})[_0x332e('0x22')](handleEntityNotFound(_0xbbb8ab,null))[_0x332e('0x22')](removeEntity(_0xbbb8ab,null))[_0x332e('0x41')](handleError(_0xbbb8ab,null));};exports[_0x332e('0x2b')]=function(_0x947ed,_0xf80f5){return db[_0x332e('0x3c')][_0x332e('0x2b')]()[_0x332e('0x22')](respondWithResult(_0xf80f5,null))[_0x332e('0x41')](handleError(_0xf80f5,null));};exports['addContacts']=function(_0x28e0e5,_0x536259,_0x3c8804){return db['CmContact']['find']({'where':{'id':_0x28e0e5[_0x332e('0x42')]['id']}})[_0x332e('0x22')](handleEntityNotFound(_0x536259,null))[_0x332e('0x22')](function(_0x5a263e){if(_0x5a263e){return _0x5a263e['addContacts'](_0x28e0e5['body'][_0x332e('0x4f')],_[_0x332e('0x50')](_0x28e0e5[_0x332e('0x47')],[_0x332e('0x4f'),'id'])||{});}})[_0x332e('0x22')](respondWithResult(_0x536259,null))[_0x332e('0x41')](handleError(_0x536259,null));};exports[_0x332e('0x51')]=function(_0x5e5987,_0x101b29,_0x378018){var _0x32fc69={};var _0xe90b2e={};var _0x3324ce;var _0x3b103b;return db['CmCompany'][_0x332e('0x52')]({'where':{'id':_0x5e5987[_0x332e('0x42')]['id']}})[_0x332e('0x22')](handleEntityNotFound(_0x101b29,null))[_0x332e('0x22')](function(_0x451c3b){if(_0x451c3b){_0x3324ce=_0x451c3b;_0xe90b2e['model']=_[_0x332e('0x2d')](db[_0x332e('0x53')][_0x332e('0x43')]);_0xe90b2e[_0x332e('0x2e')]=_[_0x332e('0x2d')](_0x5e5987[_0x332e('0x2e')]);_0xe90b2e[_0x332e('0x36')]=_[_0x332e('0x44')](_0xe90b2e[_0x332e('0x2c')],_0xe90b2e['query']);_0x32fc69[_0x332e('0x2f')]=_[_0x332e('0x44')](_0xe90b2e[_0x332e('0x2c')],qs['fields'](_0x5e5987[_0x332e('0x2e')][_0x332e('0x30')]));_0x32fc69['attributes']=_0x32fc69[_0x332e('0x2f')][_0x332e('0x31')]?_0x32fc69[_0x332e('0x2f')]:_0xe90b2e[_0x332e('0x2c')];_0x32fc69[_0x332e('0x34')]=qs[_0x332e('0x35')](_0x5e5987[_0x332e('0x2e')]['sort']);_0x32fc69['where']=qs[_0x332e('0x36')](_[_0x332e('0x37')](_0x5e5987[_0x332e('0x2e')],_0xe90b2e[_0x332e('0x36')]));if(_0x5e5987[_0x332e('0x2e')]['filter']){_0x32fc69[_0x332e('0x3a')]=_[_0x332e('0x39')](_0x32fc69['where'],{'$or':_[_0x332e('0x54')](_0x32fc69['attributes'],function(_0x585a22){var _0x568ae3={};_0x568ae3[_0x585a22]={'$like':'%'+_0x5e5987['query']['filter']+'%'};return _0x568ae3;})});}_0x32fc69=_['merge']({},_0x32fc69,_0x5e5987['options']);return _0x3324ce['getContacts'](_0x32fc69);}})[_0x332e('0x22')](function(_0x522cf3){if(_0x522cf3){_0x3b103b=_0x522cf3[_0x332e('0x31')];if(!_0x5e5987['query'][_0x332e('0x32')]('nolimit')){_0x32fc69[_0x332e('0x1a')]=qs['limit'](_0x5e5987[_0x332e('0x2e')][_0x332e('0x1a')]);_0x32fc69[_0x332e('0x19')]=qs[_0x332e('0x19')](_0x5e5987[_0x332e('0x2e')]['offset']);}return _0x3324ce[_0x332e('0x51')](_0x32fc69);}})['then'](function(_0x16bd95){if(_0x16bd95){return _0x16bd95?{'count':_0x3b103b,'rows':_0x16bd95}:null;}})[_0x332e('0x22')](respondWithResult(_0x101b29,null))['catch'](handleError(_0x101b29,null));};
\ No newline at end of file
+var _0x33c5=['Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','addContacts','ids','omit','getContacts','findOne','rawAttributes','pick','map','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','../../components/auth/service','../../config/logger','api','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','get','Companies','UserProfileResource','error','stack','name','CmCompany','describe','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','includeAll','include','findAll','rows','catch','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation'];(function(_0xe8bf5f,_0x3c9dbc){var _0x1bdebf=function(_0x3286aa){while(--_0x3286aa){_0xe8bf5f['push'](_0xe8bf5f['shift']());}};_0x1bdebf(++_0x3c9dbc);}(_0x33c5,0xa8));var _0x533c=function(_0x5d0609,_0x127562){_0x5d0609=_0x5d0609-0x0;var _0xaa3fd1=_0x33c5[_0x5d0609];return _0xaa3fd1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x533c('0x0'));var zipdir=require(_0x533c('0x1'));var jsonpatch=require(_0x533c('0x2'));var rp=require(_0x533c('0x3'));var moment=require(_0x533c('0x4'));var BPromise=require(_0x533c('0x5'));var Mustache=require(_0x533c('0x6'));var util=require('util');var path=require('path');var sox=require(_0x533c('0x7'));var csv=require(_0x533c('0x8'));var ejs=require(_0x533c('0x9'));var fs=require('fs');var fs_extra=require(_0x533c('0xa'));var _=require(_0x533c('0xb'));var squel=require('squel');var crypto=require(_0x533c('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x533c('0xd'));var toCsv=require(_0x533c('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x533c('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x533c('0xf'))(_0x533c('0x10'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x533c('0x11'))['db'];function respondWithStatusCode(_0x49b976,_0x138cba){_0x138cba=_0x138cba||0xcc;return function(_0x3d8b3f){if(_0x3d8b3f){return _0x49b976[_0x533c('0x12')](_0x138cba);}return _0x49b976['status'](_0x138cba)[_0x533c('0x13')]();};}function respondWithResult(_0x43f58f,_0x542a13){_0x542a13=_0x542a13||0xc8;return function(_0x2d3958){if(_0x2d3958){return _0x43f58f[_0x533c('0x14')](_0x542a13)[_0x533c('0x15')](_0x2d3958);}};}function respondWithFilteredResult(_0x175d9b,_0x36ad5a){return function(_0x5ace85){if(_0x5ace85){var _0x57e4a4=typeof _0x36ad5a[_0x533c('0x16')]===_0x533c('0x17')&&typeof _0x36ad5a[_0x533c('0x18')]===_0x533c('0x17');var _0x31a7c5=_0x5ace85[_0x533c('0x19')];var _0x56566c=_0x57e4a4?0x0:_0x36ad5a['offset'];var _0x152c5b=_0x57e4a4?_0x5ace85[_0x533c('0x19')]:_0x36ad5a[_0x533c('0x16')]+_0x36ad5a[_0x533c('0x18')];var _0x1c43fd;if(_0x152c5b>=_0x31a7c5){_0x152c5b=_0x31a7c5;_0x1c43fd=0xc8;}else{_0x1c43fd=0xce;}_0x175d9b[_0x533c('0x14')](_0x1c43fd);return _0x175d9b[_0x533c('0x1a')](_0x533c('0x1b'),_0x56566c+'-'+_0x152c5b+'/'+_0x31a7c5)[_0x533c('0x15')](_0x5ace85);}return null;};}function patchUpdates(_0xd7a1a4){return function(_0x400f98){try{jsonpatch[_0x533c('0x1c')](_0x400f98,_0xd7a1a4,!![]);}catch(_0x4d2a52){return BPromise['reject'](_0x4d2a52);}return _0x400f98['save']();};}function saveUpdates(_0x43e2a8,_0x419435){return function(_0x67d5ed){if(_0x67d5ed){return _0x67d5ed[_0x533c('0x1d')](_0x43e2a8)[_0x533c('0x1e')](function(_0x5a2694){return _0x5a2694;});}return null;};}function removeEntity(_0x407a33,_0x343b9f){return function(_0x31f0eb){if(_0x31f0eb){return _0x31f0eb[_0x533c('0x1f')]()[_0x533c('0x1e')](function(){var _0x3f4999=_0x31f0eb[_0x533c('0x20')]({'plain':!![]});var _0x207941=_0x533c('0x21');return db[_0x533c('0x22')][_0x533c('0x1f')]({'where':{'type':_0x207941,'resourceId':_0x3f4999['id']}})['then'](function(){return _0x31f0eb;});})[_0x533c('0x1e')](function(){_0x407a33['status'](0xcc)[_0x533c('0x13')]();});}};}function handleEntityNotFound(_0x239902,_0x297476){return function(_0x9d39be){if(!_0x9d39be){_0x239902[_0x533c('0x12')](0x194);}return _0x9d39be;};}function handleError(_0x433c24,_0x64d42d){_0x64d42d=_0x64d42d||0x1f4;return function(_0x1b037f){logger[_0x533c('0x23')](_0x1b037f[_0x533c('0x24')]);if(_0x1b037f[_0x533c('0x25')]){delete _0x1b037f[_0x533c('0x25')];}_0x433c24[_0x533c('0x14')](_0x64d42d)['send'](_0x1b037f);};}exports['index']=function(_0xf9f77c,_0xa70194){var _0x44ac5f={},_0x2b4eac={},_0x367230={'count':0x0,'rows':[]};return db[_0x533c('0x26')][_0x533c('0x27')]()[_0x533c('0x1e')](function(_0x1cd9bc){_0x2b4eac[_0x533c('0x28')]=_['keys'](_0x1cd9bc);_0x2b4eac[_0x533c('0x29')]=_[_0x533c('0x2a')](_0xf9f77c[_0x533c('0x29')]);_0x2b4eac[_0x533c('0x2b')]=_[_0x533c('0x2c')](_0x2b4eac[_0x533c('0x28')],_0x2b4eac[_0x533c('0x29')]);_0x44ac5f['attributes']=_[_0x533c('0x2c')](_0x2b4eac[_0x533c('0x28')],qs[_0x533c('0x2d')](_0xf9f77c[_0x533c('0x29')]['fields']));_0x44ac5f[_0x533c('0x2e')]=_0x44ac5f[_0x533c('0x2e')][_0x533c('0x2f')]?_0x44ac5f[_0x533c('0x2e')]:_0x2b4eac[_0x533c('0x28')];if(!_0xf9f77c[_0x533c('0x29')][_0x533c('0x30')](_0x533c('0x31'))){_0x44ac5f[_0x533c('0x18')]=qs[_0x533c('0x18')](_0xf9f77c[_0x533c('0x29')][_0x533c('0x18')]);_0x44ac5f['offset']=qs[_0x533c('0x16')](_0xf9f77c[_0x533c('0x29')][_0x533c('0x16')]);}_0x44ac5f[_0x533c('0x32')]=qs[_0x533c('0x33')](_0xf9f77c[_0x533c('0x29')][_0x533c('0x33')]);_0x44ac5f[_0x533c('0x34')]=qs[_0x533c('0x2b')](_['pick'](_0xf9f77c[_0x533c('0x29')],_0x2b4eac[_0x533c('0x2b')]),_0x1cd9bc);if(_0xf9f77c['query'][_0x533c('0x35')]){_0x44ac5f['where']=_[_0x533c('0x36')](_0x44ac5f[_0x533c('0x34')],{'$or':_['map'](_0x44ac5f[_0x533c('0x2e')],function(_0x530cd8){var _0x55d9dc={};_0x55d9dc[_0x530cd8]={'$like':'%'+_0xf9f77c['query'][_0x533c('0x35')]+'%'};return _0x55d9dc;})});}_0x44ac5f=_['merge']({},_0x44ac5f,_0xf9f77c['options']);var _0x4407ca={'where':_0x44ac5f['where']};return db[_0x533c('0x26')][_0x533c('0x19')](_0x4407ca)[_0x533c('0x1e')](function(_0x374c38){_0x367230['count']=_0x374c38;if(_0xf9f77c[_0x533c('0x29')][_0x533c('0x37')]){_0x44ac5f[_0x533c('0x38')]=[{'all':!![]}];}return db[_0x533c('0x26')][_0x533c('0x39')](_0x44ac5f);})[_0x533c('0x1e')](function(_0x274bec){_0x367230[_0x533c('0x3a')]=_0x274bec;return _0x367230;})[_0x533c('0x1e')](respondWithFilteredResult(_0xa70194,_0x44ac5f))[_0x533c('0x3b')](handleError(_0xa70194,null));})[_0x533c('0x3b')](handleError(_0xa70194,null));};exports['show']=function(_0x2ebce6,_0x48abff){var _0x4c6307={'raw':![],'where':{'id':_0x2ebce6['params']['id']}},_0x58793d={};_0x58793d[_0x533c('0x28')]=_['keys'](db['CmCompany']['rawAttributes']);_0x58793d[_0x533c('0x29')]=_[_0x533c('0x2a')](_0x2ebce6[_0x533c('0x29')]);_0x58793d[_0x533c('0x2b')]=_[_0x533c('0x2c')](_0x58793d['model'],_0x58793d[_0x533c('0x29')]);_0x4c6307[_0x533c('0x2e')]=_[_0x533c('0x2c')](_0x58793d[_0x533c('0x28')],qs['fields'](_0x2ebce6[_0x533c('0x29')][_0x533c('0x2d')]));_0x4c6307['attributes']=_0x4c6307[_0x533c('0x2e')][_0x533c('0x2f')]?_0x4c6307['attributes']:_0x58793d[_0x533c('0x28')];if(_0x2ebce6[_0x533c('0x29')][_0x533c('0x37')]){_0x4c6307[_0x533c('0x38')]=[{'all':!![]}];}_0x4c6307=_[_0x533c('0x36')]({},_0x4c6307,_0x2ebce6[_0x533c('0x3c')]);return db[_0x533c('0x26')][_0x533c('0x3d')](_0x4c6307)[_0x533c('0x1e')](handleEntityNotFound(_0x48abff,null))[_0x533c('0x1e')](respondWithResult(_0x48abff,null))[_0x533c('0x3b')](handleError(_0x48abff,null));};exports[_0x533c('0x3e')]=function(_0xf84f77,_0x252aa6){return db['CmCompany'][_0x533c('0x3e')](_0xf84f77[_0x533c('0x3f')],{})[_0x533c('0x1e')](function(_0xd008a8){var _0x28fa79=_0xf84f77[_0x533c('0x40')]['get']({'plain':!![]});if(!_0x28fa79)throw new Error(_0x533c('0x41'));if(_0x28fa79[_0x533c('0x42')]===_0x533c('0x40')){var _0x830357=_0xd008a8['get']({'plain':!![]});var _0x9b5393=_0x533c('0x21');return db['UserProfileSection'][_0x533c('0x3d')]({'where':{'name':_0x9b5393,'userProfileId':_0x28fa79[_0x533c('0x43')]},'raw':!![]})[_0x533c('0x1e')](function(_0x89b499){if(_0x89b499&&_0x89b499[_0x533c('0x44')]===0x0){return db[_0x533c('0x22')][_0x533c('0x3e')]({'name':_0x830357[_0x533c('0x25')],'resourceId':_0x830357['id'],'type':_0x89b499[_0x533c('0x25')],'sectionId':_0x89b499['id']},{})[_0x533c('0x1e')](function(){return _0xd008a8;});}else{return _0xd008a8;}})[_0x533c('0x3b')](function(_0x208bde){logger[_0x533c('0x23')](_0x533c('0x45'),_0x208bde);throw _0x208bde;});}return _0xd008a8;})[_0x533c('0x1e')](respondWithResult(_0x252aa6,0xc9))[_0x533c('0x3b')](handleError(_0x252aa6,null));};exports[_0x533c('0x1d')]=function(_0x364522,_0x505abd){if(_0x364522[_0x533c('0x3f')]['id']){delete _0x364522[_0x533c('0x3f')]['id'];}return db[_0x533c('0x26')]['find']({'where':{'id':_0x364522[_0x533c('0x46')]['id']}})['then'](handleEntityNotFound(_0x505abd,null))['then'](saveUpdates(_0x364522[_0x533c('0x3f')],null))[_0x533c('0x1e')](respondWithResult(_0x505abd,null))[_0x533c('0x3b')](handleError(_0x505abd,null));};exports[_0x533c('0x1f')]=function(_0x513bea,_0x3a8de3){return db['CmCompany'][_0x533c('0x3d')]({'where':{'id':_0x513bea[_0x533c('0x46')]['id']}})[_0x533c('0x1e')](handleEntityNotFound(_0x3a8de3,null))['then'](removeEntity(_0x3a8de3,null))[_0x533c('0x3b')](handleError(_0x3a8de3,null));};exports['describe']=function(_0x3b7edb,_0x39e59a){return db[_0x533c('0x26')][_0x533c('0x27')]()[_0x533c('0x1e')](respondWithResult(_0x39e59a,null))['catch'](handleError(_0x39e59a,null));};exports[_0x533c('0x47')]=function(_0x29e569,_0x4b7c78,_0x46888e){return db['CmContact'][_0x533c('0x3d')]({'where':{'id':_0x29e569['params']['id']}})[_0x533c('0x1e')](handleEntityNotFound(_0x4b7c78,null))[_0x533c('0x1e')](function(_0x1764e1){if(_0x1764e1){return _0x1764e1['addContacts'](_0x29e569[_0x533c('0x3f')][_0x533c('0x48')],_[_0x533c('0x49')](_0x29e569[_0x533c('0x3f')],[_0x533c('0x48'),'id'])||{});}})[_0x533c('0x1e')](respondWithResult(_0x4b7c78,null))[_0x533c('0x3b')](handleError(_0x4b7c78,null));};exports[_0x533c('0x4a')]=function(_0x41d826,_0x49059e,_0x30f45b){var _0x43a9e6={};var _0x101752={};var _0x2b986e;var _0x19a421;return db[_0x533c('0x26')][_0x533c('0x4b')]({'where':{'id':_0x41d826[_0x533c('0x46')]['id']}})['then'](handleEntityNotFound(_0x49059e,null))['then'](function(_0xa4926a){if(_0xa4926a){_0x2b986e=_0xa4926a;_0x101752[_0x533c('0x28')]=_[_0x533c('0x2a')](db['CmContact'][_0x533c('0x4c')]);_0x101752[_0x533c('0x29')]=_['keys'](_0x41d826['query']);_0x101752[_0x533c('0x2b')]=_[_0x533c('0x2c')](_0x101752[_0x533c('0x28')],_0x101752[_0x533c('0x29')]);_0x43a9e6[_0x533c('0x2e')]=_['intersection'](_0x101752['model'],qs['fields'](_0x41d826[_0x533c('0x29')][_0x533c('0x2d')]));_0x43a9e6[_0x533c('0x2e')]=_0x43a9e6['attributes'][_0x533c('0x2f')]?_0x43a9e6['attributes']:_0x101752[_0x533c('0x28')];_0x43a9e6[_0x533c('0x32')]=qs['sort'](_0x41d826[_0x533c('0x29')]['sort']);_0x43a9e6[_0x533c('0x34')]=qs[_0x533c('0x2b')](_[_0x533c('0x4d')](_0x41d826[_0x533c('0x29')],_0x101752[_0x533c('0x2b')]));if(_0x41d826[_0x533c('0x29')]['filter']){_0x43a9e6[_0x533c('0x34')]=_['merge'](_0x43a9e6[_0x533c('0x34')],{'$or':_[_0x533c('0x4e')](_0x43a9e6[_0x533c('0x2e')],function(_0x1a0ae7){var _0x25f71f={};_0x25f71f[_0x1a0ae7]={'$like':'%'+_0x41d826['query'][_0x533c('0x35')]+'%'};return _0x25f71f;})});}_0x43a9e6=_['merge']({},_0x43a9e6,_0x41d826['options']);return _0x2b986e[_0x533c('0x4a')](_0x43a9e6);}})[_0x533c('0x1e')](function(_0x118b1a){if(_0x118b1a){_0x19a421=_0x118b1a[_0x533c('0x2f')];if(!_0x41d826[_0x533c('0x29')][_0x533c('0x30')](_0x533c('0x31'))){_0x43a9e6[_0x533c('0x18')]=qs[_0x533c('0x18')](_0x41d826[_0x533c('0x29')][_0x533c('0x18')]);_0x43a9e6[_0x533c('0x16')]=qs[_0x533c('0x16')](_0x41d826[_0x533c('0x29')][_0x533c('0x16')]);}return _0x2b986e['getContacts'](_0x43a9e6);}})[_0x533c('0x1e')](function(_0x549fed){if(_0x549fed){return _0x549fed?{'count':_0x19a421,'rows':_0x549fed}:null;}})['then'](respondWithResult(_0x49059e,null))[_0x533c('0x3b')](handleError(_0x49059e,null));};
\ No newline at end of file
index bd4651c..c84d7a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba9f=['bluebird','path','rimraf','exports','define','CmCompany','cm_companies','util','../../config/logger','moment'];(function(_0x3aac69,_0x81d09f){var _0x38d35b=function(_0x58ef90){while(--_0x58ef90){_0x3aac69['push'](_0x3aac69['shift']());}};_0x38d35b(++_0x81d09f);}(_0xba9f,0x129));var _0xfba9=function(_0x1fbd0e,_0x164ede){_0x1fbd0e=_0x1fbd0e-0x0;var _0x9cebba=_0xba9f[_0x1fbd0e];return _0x9cebba;};'use strict';var _=require('lodash');var util=require(_0xfba9('0x0'));var logger=require(_0xfba9('0x1'))('api');var moment=require(_0xfba9('0x2'));var BPromise=require(_0xfba9('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfba9('0x4'));var rimraf=require(_0xfba9('0x5'));var config=require('../../config/environment');var attributes=require('./cmCompany.attributes');module[_0xfba9('0x6')]=function(_0x396db6,_0x9085b7){return _0x396db6[_0xfba9('0x7')](_0xfba9('0x8'),attributes,{'tableName':_0xfba9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaec2=['util','api','request-promise','path','rimraf','../../config/environment','./cmCompany.attributes','exports','define','CmCompany','cm_companies','lodash'];(function(_0x6dc0b9,_0x33a742){var _0x352661=function(_0x5d8a5e){while(--_0x5d8a5e){_0x6dc0b9['push'](_0x6dc0b9['shift']());}};_0x352661(++_0x33a742);}(_0xaec2,0xcb));var _0x2aec=function(_0x301dab,_0x38050a){_0x301dab=_0x301dab-0x0;var _0x2500a2=_0xaec2[_0x301dab];return _0x2500a2;};'use strict';var _=require(_0x2aec('0x0'));var util=require(_0x2aec('0x1'));var logger=require('../../config/logger')(_0x2aec('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x2aec('0x3'));var fs=require('fs');var path=require(_0x2aec('0x4'));var rimraf=require(_0x2aec('0x5'));var config=require(_0x2aec('0x6'));var attributes=require(_0x2aec('0x7'));module[_0x2aec('0x8')]=function(_0xdaa339,_0x51a97f){return _0xdaa339[_0x2aec('0x9')](_0x2aec('0xa'),attributes,{'tableName':_0x2aec('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ce2d3cc..f444d68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7de8=['randomstring','ioredis','../../config/logger','../../config/environment','client','http','request','then','CmCompany,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','catch','util'];(function(_0x49c057,_0xc808ed){var _0xd8f0e6=function(_0x5b9042){while(--_0x5b9042){_0x49c057['push'](_0x49c057['shift']());}};_0xd8f0e6(++_0xc808ed);}(_0x7de8,0x65));var _0x87de=function(_0x51d319,_0x1edbb4){_0x51d319=_0x51d319-0x0;var _0x407ec9=_0x7de8[_0x51d319];return _0x407ec9;};'use strict';var _=require('lodash');var util=require(_0x87de('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x87de('0x1'));var fs=require('fs');var Redis=require(_0x87de('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x87de('0x3'))('rpc');var config=require(_0x87de('0x4'));var jayson=require('jayson/promise');var client=jayson[_0x87de('0x5')][_0x87de('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x594f09,_0x5453de,_0xc9e277){return new BPromise(function(_0x5b1b58,_0x5f469b){return client[_0x87de('0x7')](_0x594f09,_0xc9e277)[_0x87de('0x8')](function(_0x1cd301){logger['info'](_0x87de('0x9'),_0x5453de,_0x87de('0xa'));logger['debug']('CmCompany,\x20%s,\x20%s,\x20%s',_0x5453de,_0x87de('0xa'),JSON[_0x87de('0xb')](_0x1cd301));if(_0x1cd301[_0x87de('0xc')]){if(_0x1cd301[_0x87de('0xc')][_0x87de('0xd')]===0x1f4){logger['error'](_0x87de('0x9'),_0x5453de,_0x1cd301[_0x87de('0xc')][_0x87de('0xe')]);return _0x5f469b(_0x1cd301[_0x87de('0xc')][_0x87de('0xe')]);}logger['error'](_0x87de('0x9'),_0x5453de,_0x1cd301['error'][_0x87de('0xe')]);return _0x5b1b58(_0x1cd301[_0x87de('0xc')][_0x87de('0xe')]);}else{logger[_0x87de('0xf')](_0x87de('0x9'),_0x5453de,_0x87de('0xa'));_0x5b1b58(_0x1cd301['result'][_0x87de('0xe')]);}})[_0x87de('0x10')](function(_0x4d0086){logger['error'](_0x87de('0x9'),_0x5453de,_0x4d0086);_0x5f469b(_0x4d0086);});});}
\ No newline at end of file
+var _0x3cb0=['../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CmCompany,\x20%s,\x20%s','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0x3cb0,0x132));var _0x03cb=function(_0x33e586,_0x193a0c){_0x33e586=_0x33e586-0x0;var _0x3d3e01=_0x3cb0[_0x33e586];return _0x3d3e01;};'use strict';var _=require(_0x03cb('0x0'));var util=require(_0x03cb('0x1'));var moment=require(_0x03cb('0x2'));var BPromise=require('bluebird');var rs=require(_0x03cb('0x3'));var fs=require('fs');var Redis=require(_0x03cb('0x4'));var db=require(_0x03cb('0x5'))['db'];var utils=require(_0x03cb('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x03cb('0x7'));var jayson=require(_0x03cb('0x8'));var client=jayson[_0x03cb('0x9')][_0x03cb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x418d08,_0x5889d6,_0x1e86fd){return new BPromise(function(_0x363bc3,_0x3ca103){return client[_0x03cb('0xb')](_0x418d08,_0x1e86fd)[_0x03cb('0xc')](function(_0x2d1041){logger[_0x03cb('0xd')]('CmCompany,\x20%s,\x20%s',_0x5889d6,_0x03cb('0xe'));logger[_0x03cb('0xf')](_0x03cb('0x10'),_0x5889d6,_0x03cb('0xe'),JSON[_0x03cb('0x11')](_0x2d1041));if(_0x2d1041[_0x03cb('0x12')]){if(_0x2d1041['error'][_0x03cb('0x13')]===0x1f4){logger['error']('CmCompany,\x20%s,\x20%s',_0x5889d6,_0x2d1041[_0x03cb('0x12')][_0x03cb('0x14')]);return _0x3ca103(_0x2d1041['error'][_0x03cb('0x14')]);}logger[_0x03cb('0x12')](_0x03cb('0x15'),_0x5889d6,_0x2d1041['error'][_0x03cb('0x14')]);return _0x363bc3(_0x2d1041['error'][_0x03cb('0x14')]);}else{logger[_0x03cb('0xd')](_0x03cb('0x15'),_0x5889d6,_0x03cb('0xe'));_0x363bc3(_0x2d1041[_0x03cb('0x16')][_0x03cb('0x14')]);}})[_0x03cb('0x17')](function(_0x93100c){logger[_0x03cb('0x12')]('CmCompany,\x20%s,\x20%s',_0x5889d6,_0x93100c);_0x3ca103(_0x93100c);});});}
\ No newline at end of file
index 43921e5..944bef4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0d3=['util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/contacts','post','create','addContacts','put','destroy','exports','multer'];(function(_0x40a825,_0x3bac79){var _0x273a54=function(_0x5628d8){while(--_0x5628d8){_0x40a825['push'](_0x40a825['shift']());}};_0x273a54(++_0x3bac79);}(_0xe0d3,0x89));var _0x3e0d=function(_0x18d8b1,_0x6dc035){_0x18d8b1=_0x18d8b1-0x0;var _0x59048f=_0xe0d3[_0x18d8b1];return _0x59048f;};'use strict';var multer=require(_0x3e0d('0x0'));var util=require(_0x3e0d('0x1'));var path=require(_0x3e0d('0x2'));var timeout=require(_0x3e0d('0x3'));var express=require(_0x3e0d('0x4'));var router=express[_0x3e0d('0x5')]();var fs_extra=require(_0x3e0d('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x3e0d('0x7'));var config=require(_0x3e0d('0x8'));var controller=require('./cmCompany.controller');router['get']('/',auth[_0x3e0d('0x9')](),controller[_0x3e0d('0xa')]);router[_0x3e0d('0xb')](_0x3e0d('0xc'),auth['isAuthenticated'](),controller[_0x3e0d('0xd')]);router[_0x3e0d('0xb')](_0x3e0d('0xe'),auth[_0x3e0d('0x9')](),controller[_0x3e0d('0xf')]);router[_0x3e0d('0xb')](_0x3e0d('0x10'),auth[_0x3e0d('0x9')](),controller['getContacts']);router[_0x3e0d('0x11')]('/',auth[_0x3e0d('0x9')](),controller[_0x3e0d('0x12')]);router[_0x3e0d('0x11')](_0x3e0d('0x10'),auth[_0x3e0d('0x9')](),controller[_0x3e0d('0x13')]);router[_0x3e0d('0x14')](_0x3e0d('0xe'),auth[_0x3e0d('0x9')](),controller['update']);router['delete'](_0x3e0d('0xe'),auth[_0x3e0d('0x9')](),controller[_0x3e0d('0x15')]);module[_0x3e0d('0x16')]=router;
\ No newline at end of file
+var _0xfeda=['show','/:id/contacts','getContacts','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./cmCompany.controller','index','get','/describe','isAuthenticated','describe','/:id'];(function(_0x7fd9e9,_0x1765d0){var _0x285d92=function(_0x4060fe){while(--_0x4060fe){_0x7fd9e9['push'](_0x7fd9e9['shift']());}};_0x285d92(++_0x1765d0);}(_0xfeda,0x11d));var _0xafed=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0xfeda[_0x24061a];return _0x82054e;};'use strict';var multer=require(_0xafed('0x0'));var util=require(_0xafed('0x1'));var path=require(_0xafed('0x2'));var timeout=require(_0xafed('0x3'));var express=require(_0xafed('0x4'));var router=express['Router']();var fs_extra=require(_0xafed('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xafed('0x6'));var config=require(_0xafed('0x7'));var controller=require(_0xafed('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xafed('0x9')]);router[_0xafed('0xa')](_0xafed('0xb'),auth[_0xafed('0xc')](),controller[_0xafed('0xd')]);router['get'](_0xafed('0xe'),auth[_0xafed('0xc')](),controller[_0xafed('0xf')]);router[_0xafed('0xa')](_0xafed('0x10'),auth[_0xafed('0xc')](),controller[_0xafed('0x11')]);router[_0xafed('0x12')]('/',auth[_0xafed('0xc')](),controller[_0xafed('0x13')]);router[_0xafed('0x12')](_0xafed('0x10'),auth['isAuthenticated'](),controller['addContacts']);router[_0xafed('0x14')](_0xafed('0xe'),auth[_0xafed('0xc')](),controller[_0xafed('0x15')]);router[_0xafed('0x16')](_0xafed('0xe'),auth[_0xafed('0xc')](),controller[_0xafed('0x17')]);module[_0xafed('0x18')]=router;
\ No newline at end of file
index 4885c5b..7ec45bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e2c=['exports','STRING','TEXT','INTEGER','UNSIGNED','DATE','NOW','lodash','sequelize'];(function(_0x360a5b,_0x4b4985){var _0x2ee038=function(_0xa5ce07){while(--_0xa5ce07){_0x360a5b['push'](_0x360a5b['shift']());}};_0x2ee038(++_0x4b4985);}(_0x4e2c,0x73));var _0xc4e2=function(_0x53d1e9,_0x2901e7){_0x53d1e9=_0x53d1e9-0x0;var _0x566b3e=_0x4e2c[_0x53d1e9];return _0x566b3e;};'use strict';var _=require(_0xc4e2('0x0'));var Sequelize=require(_0xc4e2('0x1'));module[_0xc4e2('0x2')]={'firstName':{'type':Sequelize['STRING'],'allowNull':![]},'lastName':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0xc4e2('0x3')]},'postalCode':{'type':Sequelize[_0xc4e2('0x3')]},'city':{'type':Sequelize[_0xc4e2('0x3')]},'country':{'type':Sequelize['STRING']},'dateOfBirth':{'type':Sequelize[_0xc4e2('0x3')]},'description':{'type':Sequelize[_0xc4e2('0x4')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0xc4e2('0x3')]},'fax':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xc4e2('0x3')]},'url':{'type':Sequelize[_0xc4e2('0x3')]},'facebook':{'type':Sequelize[_0xc4e2('0x3')]},'fb_data':{'type':Sequelize[_0xc4e2('0x3')]},'twitter':{'type':Sequelize[_0xc4e2('0x3')]},'skype':{'type':Sequelize[_0xc4e2('0x3')]},'teams':{'type':Sequelize[_0xc4e2('0x3')]},'viber':{'type':Sequelize[_0xc4e2('0x3')]},'line':{'type':Sequelize[_0xc4e2('0x3')]},'wechat':{'type':Sequelize['STRING']},'telegram':{'type':Sequelize[_0xc4e2('0x3')]},'UserId':{'type':Sequelize[_0xc4e2('0x5')]},'AdditionalPhones':{'type':Sequelize[_0xc4e2('0x3')]},'priority':{'type':Sequelize[_0xc4e2('0x5')](0x2)[_0xc4e2('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0xc4e2('0x7')],'defaultValue':Sequelize[_0xc4e2('0x8')]},'dialTimezone':{'type':Sequelize['STRING']},'utcOffset':{'type':Sequelize[_0xc4e2('0x5')]}};
\ No newline at end of file
+var _0xd8c2=['UNSIGNED','DATE','NOW','INTEGER','lodash','sequelize','exports','STRING','TEXT'];(function(_0x2cfda3,_0x125b6a){var _0x4ae401=function(_0x18ada2){while(--_0x18ada2){_0x2cfda3['push'](_0x2cfda3['shift']());}};_0x4ae401(++_0x125b6a);}(_0xd8c2,0x187));var _0x2d8c=function(_0x2b5593,_0x2a61d3){_0x2b5593=_0x2b5593-0x0;var _0x5a8331=_0xd8c2[_0x2b5593];return _0x5a8331;};'use strict';var _=require(_0x2d8c('0x0'));var Sequelize=require(_0x2d8c('0x1'));module[_0x2d8c('0x2')]={'firstName':{'type':Sequelize[_0x2d8c('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0x2d8c('0x3')]},'street':{'type':Sequelize[_0x2d8c('0x3')]},'postalCode':{'type':Sequelize[_0x2d8c('0x3')]},'city':{'type':Sequelize[_0x2d8c('0x3')]},'country':{'type':Sequelize[_0x2d8c('0x3')]},'dateOfBirth':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x2d8c('0x4')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0x2d8c('0x3')]},'email':{'type':Sequelize[_0x2d8c('0x3')]},'url':{'type':Sequelize[_0x2d8c('0x3')]},'facebook':{'type':Sequelize[_0x2d8c('0x3')]},'fb_data':{'type':Sequelize['STRING']},'twitter':{'type':Sequelize['STRING']},'skype':{'type':Sequelize['STRING']},'teams':{'type':Sequelize['STRING']},'viber':{'type':Sequelize[_0x2d8c('0x3')]},'line':{'type':Sequelize[_0x2d8c('0x3')]},'wechat':{'type':Sequelize[_0x2d8c('0x3')]},'telegram':{'type':Sequelize['STRING']},'UserId':{'type':Sequelize['INTEGER']},'AdditionalPhones':{'type':Sequelize[_0x2d8c('0x3')]},'priority':{'type':Sequelize['INTEGER'](0x2)[_0x2d8c('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x2d8c('0x6')],'defaultValue':Sequelize[_0x2d8c('0x7')]},'dialTimezone':{'type':Sequelize['STRING']},'utcOffset':{'type':Sequelize[_0x2d8c('0x8')]}};
\ No newline at end of file
index e1c4ef3..bb70ab4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x987d=['duration','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','UserId','fullname','findAndCountAll','startCase','chat','Website','Account','closed','closedAt','disposition','thirdDisposition','key','Owner','browserName','customerIp','customerPort','deviceModel','osName','ratingMessage','ratingType','ratingValue','subject','openchannel','threadId','Interaction','flatten','sortBy','slice','moment','bluebird','util','path','lodash','squel','papaparse','ioredis','../../components/parsers/qs','api','../../config/environment/shared','../../mysqldb','redis','defaults','socket.io-emitter','status','offset','undefined','count','limit','set','Content-Range','json','then','end','sendStatus','error','stack','name','send','index','CmContact','describe','keys','length','trimStart','cf_','all','fieldType','type','model','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','pick','select','field','color','tools_tags','cm_contacts','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20c.id','cm_contact_has_tags','c.deletedAt\x20IS\x20NULL','expr','parseSearch','search','sqlOperator','conditions','find','Tag','value','split','map','forEach','User','and','uc.UserId\x20=\x20?','datetime','castTo','DATE','buildExpression','start','filter','isNil','Contact','isEmpty','ListId','where','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','tag','isArray','CONCAT(\x27,\x27,\x20`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.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','c.id','Sequelize','clone','DESC','having','t.id\x20IN\x20?','resolve','user','role','agent','some','getLists','c.ListId\x20IS\x20NULL','c.ListId\x20IN\x20?','sequelize','toString','merge','c.firstName','c.lastName','c.phone','c.mobile','c.fax','c.createdAt','c.deletedAt','c.CompanyId','Tags','push','TagIds','destroy','params','catch','tags','startsWith','columnName','analytics','displayName','alias','custom','values','body','findAll','get','mergeWith','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','from','[CmContact][merge][destroy][CmHopperBlack],\x20%s','ChatInteraction','update','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmHopperHistory','ReportAgentPreview','VoiceCallReport','ChatQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappQueueReport','create','dialTimezone','timezones','utcOffset','additionalPhones','bulkCreate','each','duplicates','$or','findOrCreate','spread','contact','show','CmContactHasItem','Phones','ItemType','literal','Phones.OrderBy','$and','CmCustomField','omit','cf_%d','pickBy','format','table','setFields','id\x20=\x20?','toParam','phone','findOne','rawAttributes','options','getTags','setTags','ids','ContactItemType','OrderBy','items','item_types','ItemTypeId','description','contact\x20phone\x20exists','PHONE','CmHopperAdditionalPhone','item','CmHopperId','ItemType.OrderBy','CmContactId','toContactId','hopperId','includeAll','include','getHopperHistories','ContactId','rows','CmHopperFinal','getJscriptySessions','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','Incorrect\x20binding\x20parameters\x20passed!','No\x20phone\x20column\x20specified','No\x20firstName\x20column\x20specified','server/files/tmp','file','chmodSync','0777','child_process','fork','../../components/import/cm/csv','pid','createReadStream','parse','meta','import','binding','firstName','stringify','start\x20child\x20process\x20correctly!','exit','error\x20child\x20process','importUpdates','message','getJourney','mail','sms','fax','voice','channel','includes','toLowerCase','Invalid\x20channel','range','Invalid\x20date\x20for\x20range\x20from\x20filter','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','source','destination','callerid','starttime','endtime'];(function(_0x52666e,_0x5b3776){var _0x515330=function(_0x29cd4f){while(--_0x29cd4f){_0x52666e['push'](_0x52666e['shift']());}};_0x515330(++_0x5b3776);}(_0x987d,0x157));var _0xd987=function(_0x1897c9,_0x63721a){_0x1897c9=_0x1897c9-0x0;var _0x561377=_0x987d[_0x1897c9];return _0x561377;};'use strict';var moment=require(_0xd987('0x0'));var BPromise=require(_0xd987('0x1'));var util=require(_0xd987('0x2'));var path=require(_0xd987('0x3'));var fs=require('fs');var _=require(_0xd987('0x4'));var squel=require(_0xd987('0x5'));var Papa=require(_0xd987('0x6'));var Redis=require(_0xd987('0x7'));var qs=require(_0xd987('0x8'));var as=require('../../components/parsers/advancedSearch');var logger=require('../../config/logger')(_0xd987('0x9'));var config=require('../../config/environment');var shared=require(_0xd987('0xa'));var db=require(_0xd987('0xb'))['db'];config[_0xd987('0xc')]=_[_0xd987('0xd')](config[_0xd987('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xd987('0xe'))(new Redis(config[_0xd987('0xc')]));require('./cmContact.socket')['register'](socket);function respondWithResult(_0x42381c,_0x5a67a2){_0x5a67a2=_0x5a67a2||0xc8;return function(_0x27b94f){if(_0x27b94f){return _0x42381c[_0xd987('0xf')](_0x5a67a2)['json'](_0x27b94f);}};}function respondWithFilteredResult(_0x59f371,_0x28371f){return function(_0x4f41bc){if(_0x4f41bc){var _0x25135c=typeof _0x28371f[_0xd987('0x10')]===_0xd987('0x11')&&typeof _0x28371f['limit']==='undefined';var _0x4a18f2=_0x4f41bc['count'];var _0x6a7e31=_0x25135c?0x0:_0x28371f[_0xd987('0x10')];var _0x30d922=_0x25135c?_0x4f41bc[_0xd987('0x12')]:_0x28371f[_0xd987('0x10')]+_0x28371f[_0xd987('0x13')];var _0x28d8a4;if(_0x30d922>=_0x4a18f2){_0x30d922=_0x4a18f2;_0x28d8a4=0xc8;}else{_0x28d8a4=0xce;}_0x59f371['status'](_0x28d8a4);return _0x59f371[_0xd987('0x14')](_0xd987('0x15'),_0x6a7e31+'-'+_0x30d922+'/'+_0x4a18f2)[_0xd987('0x16')](_0x4f41bc);}return null;};}function saveUpdates(_0x263e92){return function(_0x55a5ca){if(_0x55a5ca){return _0x55a5ca['update'](_0x263e92)[_0xd987('0x17')](function(_0x48fc4a){return _0x48fc4a;});}return null;};}function removeEntity(_0xe1da59){return function(_0x3e8fa3){if(_0x3e8fa3){return _0x3e8fa3['destroy']()['then'](function(){_0xe1da59[_0xd987('0xf')](0xcc)[_0xd987('0x18')]();});}};}function handleEntityNotFound(_0x1706c1){return function(_0x30a1f0){if(!_0x30a1f0){_0x1706c1[_0xd987('0x19')](0x194);}return _0x30a1f0;};}function handleError(_0x42b0ed,_0x170204){_0x170204=_0x170204||0x1f4;return function(_0x27bc75){logger[_0xd987('0x1a')](_0x27bc75[_0xd987('0x1b')]);if(_0x27bc75[_0xd987('0x1c')]){delete _0x27bc75['name'];}_0x42b0ed[_0xd987('0xf')](_0x170204)[_0xd987('0x1d')](_0x27bc75);};}exports[_0xd987('0x1e')]=function(_0xb89929,_0x555d93){var _0x54e906={},_0x13f44b={},_0x1eddf5={'count':0x0,'rows':[]};return db[_0xd987('0x1f')][_0xd987('0x20')]()[_0xd987('0x17')](function(_0xa9a25f){var _0x2f146d=[];for(var _0x3cafae=0x0;_0x3cafae<Object[_0xd987('0x21')](_0xa9a25f)[_0xd987('0x22')];_0x3cafae++){var _0x29d2ce=Object[_0xd987('0x21')](_0xa9a25f)[_0x3cafae];if(_['startsWith'](_0x29d2ce,'cf_')){_0x2f146d['push'](db['CmCustomField']['findOne']({'where':{'id':_[_0xd987('0x23')](_0x29d2ce,_0xd987('0x24'))},'raw':!![]}));}}return BPromise[_0xd987('0x25')](_0x2f146d)['then'](function(_0x2327ac){for(var _0x5ae30a=0x0;_0x5ae30a<_0x2327ac[_0xd987('0x22')];_0x5ae30a++){if(_0x2327ac[_0x5ae30a]){var _0x40c0f2='cf_'+_0x2327ac[_0x5ae30a]['id'];var _0x183aef=_0xa9a25f[_0x40c0f2];_0x183aef[_0xd987('0x26')]=_0x2327ac[_0x5ae30a][_0xd987('0x27')];}}return _0xa9a25f;});})[_0xd987('0x17')](function(_0x5f2fa9){_0x13f44b[_0xd987('0x28')]=_[_0xd987('0x21')](_0x5f2fa9);_0x13f44b[_0xd987('0x29')]=_[_0xd987('0x21')](_0xb89929['query']);_0x13f44b[_0xd987('0x2a')]=_['intersection'](_0x13f44b['model'],_0x13f44b[_0xd987('0x29')]);_0x54e906[_0xd987('0x2b')]=_[_0xd987('0x2c')](_0x13f44b[_0xd987('0x28')],qs[_0xd987('0x2d')](_0xb89929[_0xd987('0x29')][_0xd987('0x2d')]));_0x54e906[_0xd987('0x2b')]=_0x54e906[_0xd987('0x2b')][_0xd987('0x22')]?_0x54e906['attributes']:_0x13f44b[_0xd987('0x28')];if(!_0xb89929['query'][_0xd987('0x2e')](_0xd987('0x2f'))){_0x54e906['limit']=qs['limit'](_0xb89929[_0xd987('0x29')][_0xd987('0x13')]);_0x54e906[_0xd987('0x10')]=qs[_0xd987('0x10')](_0xb89929['query'][_0xd987('0x10')]);}_0x54e906[_0xd987('0x30')]=qs[_0xd987('0x31')](_0xb89929[_0xd987('0x29')][_0xd987('0x31')]);_0x54e906['where']=qs[_0xd987('0x2a')](_[_0xd987('0x32')](_0xb89929['query'],_0x13f44b[_0xd987('0x2a')]),_0x5f2fa9);var _0x3f69b2=[];var _0x162792=squel[_0xd987('0x33')]()[_0xd987('0x34')]('id')['field']('name')[_0xd987('0x34')](_0xd987('0x35'))['from'](_0xd987('0x36'));var _0x28f590=squel[_0xd987('0x33')]()['from'](_0xd987('0x37'),'c')[_0xd987('0x38')](_0xd987('0x39'),'uc',_0xd987('0x3a'))['left_join'](_0xd987('0x3b'),'ct','ct.CmContactId\x20=\x20c.id')[_0xd987('0x38')](_0xd987('0x36'),'t','t.id\x20=\x20ct.TagId')['where'](_0xd987('0x3c'));var _0x3a1cb6=squel[_0xd987('0x3d')]();var _0x10881b=[];var _0x3f3567=squel['expr']();var _0x455212;if(_0xb89929['query']['search']){_0x455212=as[_0xd987('0x3e')](_0xb89929['query'][_0xd987('0x3f')]);var _0x18bfd4=_0x455212[_0xd987('0x40')];for(var _0x5b268f=0x0;_0x5b268f<_0x455212[_0xd987('0x41')]['length'];_0x5b268f++){var _0x1648e5=_0x455212[_0xd987('0x41')][_0x5b268f];var _0x4afd97='c';var _0x4cf32c=_(_0x5f2fa9)[_0xd987('0x21')]()[_0xd987('0x42')](function(_0x5e49aa){return _0x5e49aa===_0x1648e5['field'];});if(_0x4cf32c)_0x4cf32c=_0x5f2fa9[_0x1648e5['field']];if(!_0x4cf32c){if(_0x1648e5['field']===_0xd987('0x43')){var _0x3ccece=_0x1648e5[_0xd987('0x44')][_0xd987('0x45')](',')[_0xd987('0x46')](function(_0xb11ae2){return Number(_0xb11ae2);});_0x3ccece[_0xd987('0x47')](function(_0x2cce88){_0x3f3567['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2cce88+',%');});_0x10881b=_['union'](_0x10881b,_0x3ccece);}else if(_0x1648e5['field']===_0xd987('0x48')){_0x3a1cb6[_0xd987('0x49')](_0xd987('0x4a'),_0x1648e5['value']);}}else{if(_0x1648e5['field']==='dateOfBirth'||_0x4cf32c[_0xd987('0x26')]===_0xd987('0x4b'))_0x1648e5[_0xd987('0x4c')]=_0xd987('0x4d');var _0x938505=as[_0xd987('0x4e')](_0x4afd97,_0x4cf32c[_0xd987('0x27')],_0x1648e5);_0x3a1cb6[_0x18bfd4](_0x938505['text'],_0x938505[_0xd987('0x44')][_0xd987('0x4f')],_0x938505[_0xd987('0x44')][_0xd987('0x18')]);}}}else{var _0x158bf8=_(Object[_0xd987('0x21')](_0xb89929[_0xd987('0x29')]))[_0xd987('0x46')](function(_0x586943){return _0x5f2fa9[_0xd987('0x2e')](_0x586943)?_0x586943:undefined;})[_0xd987('0x50')](function(_0x35422b){return!_[_0xd987('0x51')](_0x35422b);})[_0xd987('0x44')]();if(_0xb89929['query']['Contact'])_0x158bf8['push'](_0xd987('0x52'));if(!_[_0xd987('0x53')](_0x158bf8)){_0x158bf8[_0xd987('0x47')](function(_0x34d333){if(_0x34d333===_0xd987('0x54')){_0x28f590[_0xd987('0x55')]('c.ListId\x20IN\x20?',[][_0xd987('0x56')](_0xb89929[_0xd987('0x29')][_0x34d333]));}else if(_0x34d333===_0xd987('0x52')){var _0x3192a4='%'+_0xb89929[_0xd987('0x29')][_0x34d333]+'%';_0x28f590[_0xd987('0x55')](_0xd987('0x57'),_0x3192a4);}else{_0x28f590[_0xd987('0x55')]('c.'+_0x34d333+_0xd987('0x58'),_0xb89929[_0xd987('0x29')][_0x34d333]);}});}if(_0xb89929[_0xd987('0x29')][_0xd987('0x59')]){_0x10881b=_[_0xd987('0x5a')](_0xb89929[_0xd987('0x29')]['tag'])?_0xb89929[_0xd987('0x29')]['tag']:new Array(_0xb89929[_0xd987('0x29')][_0xd987('0x59')]);_0x10881b[_0xd987('0x47')](function(_0x26cbe2){_0x3f3567['or'](_0xd987('0x5b'),'%,'+_0x26cbe2+',%');});}if(_0xb89929[_0xd987('0x29')][_0xd987('0x50')]){var _0x496823=_0xb89929['query'][_0xd987('0x50')][_0xd987('0x5c')]('\x5c','\x5c\x5c')[_0xd987('0x5c')](/'/g,'\x27\x27');if(_0x496823[_0xd987('0x45')]('\x20')[_0xd987('0x22')]>0x1){_0x3a1cb6['or'](_0xd987('0x5d'),qs['getFullTextValue'](_0x496823),null);}else{if(qs[_0xd987('0x5e')](_0x496823)){_0x3a1cb6['or'](_0xd987('0x5f'),_0x496823+'%');_0x3a1cb6['or'](_0xd987('0x60'),_0x496823+'%');_0x3a1cb6['or']('c.mobile\x20LIKE\x20?',_0x496823+'%');_0x3a1cb6['or']('c.fax\x20LIKE\x20?',_0x496823+'%');}else if(qs['isEmail'](_0x496823)){_0x3a1cb6['or'](_0xd987('0x61'),_0x496823+'%');}else{_0x3a1cb6['or'](_0xd987('0x62'),'%'+_0x496823+'%');_0x3a1cb6['or'](_0xd987('0x63'),'%'+_0x496823+'%');_0x3a1cb6['or']('c.email\x20LIKE\x20?','%'+_0x496823+'%');}}}}_0x28f590['where'](_0x3a1cb6);_0x28f590['group'](_0xd987('0x64'));var _0x1a1c6b={'type':db[_0xd987('0x65')]['QueryTypes']['SELECT'],'raw':!![]};var _0x290d27=_0x28f590[_0xd987('0x66')]()[_0xd987('0x34')](_0xd987('0x64'));if(_0x54e906[_0xd987('0x30')]){_0x54e906[_0xd987('0x30')]['forEach'](function(_0x5879bc){_0x28f590[_0xd987('0x30')]('c.'+_0x5879bc[0x0],_0x5879bc[0x1]===_0xd987('0x67')?![]:!![]);});}if(!_[_0xd987('0x53')](_0x10881b)){_0x28f590[_0xd987('0x68')](_0x3f3567);_0x290d27[_0xd987('0x55')](_0xd987('0x69'),_0x10881b);}BPromise[_0xd987('0x6a')]()['then'](function(){if(!_0x455212)return;if(_0xb89929[_0xd987('0x6b')][_0xd987('0x6c')]!==_0xd987('0x6d'))return;if(!_[_0xd987('0x6e')](_0x455212[_0xd987('0x41')],[_0xd987('0x34'),_0xd987('0x48')])){return _0xb89929[_0xd987('0x6b')][_0xd987('0x6f')]({'attributes':['id'],'raw':!![]})[_0xd987('0x17')](function(_0x3e9496){if(_[_0xd987('0x53')](_0x3e9496)){_0x290d27['where']('c.ListId\x20IS\x20NULL');_0x28f590[_0xd987('0x55')](_0xd987('0x70'));}else{_0x290d27[_0xd987('0x55')](_0xd987('0x71'),_[_0xd987('0x46')](_0x3e9496,'id'));_0x28f590[_0xd987('0x55')](_0xd987('0x71'),_['map'](_0x3e9496,'id'));}});}})[_0xd987('0x17')](function(){if(_0xb89929[_0xd987('0x6b')]['role']===_0xd987('0x6d')&&!_0x455212&&!_0xb89929[_0xd987('0x29')]['ListId'])return[];return db[_0xd987('0x72')][_0xd987('0x29')](_0x290d27[_0xd987('0x73')](),_0x1a1c6b);})['then'](function(_0x32c120){_0x1eddf5[_0xd987('0x12')]=_0x32c120[_0xd987('0x22')];if(_0x1eddf5[_0xd987('0x12')]===0x0)return[];return db['sequelize'][_0xd987('0x29')](_0x162792[_0xd987('0x73')](),_0x1a1c6b)[_0xd987('0x17')](function(_0x142191){_0x3f69b2=_['keyBy'](_0x142191,'id');_0x1a1c6b=_[_0xd987('0x74')](_0x1a1c6b,{'model':db[_0xd987('0x1f')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0xb89929[_0xd987('0x29')]['fields']){_0x54e906[_0xd987('0x2b')][_0xd987('0x47')](function(_0x2ba834){_0x28f590[_0xd987('0x34')]('c.'+_0x2ba834);});}else{_0x28f590[_0xd987('0x34')](_0xd987('0x64'));_0x28f590['field'](_0xd987('0x75'));_0x28f590[_0xd987('0x34')](_0xd987('0x76'));_0x28f590['field'](_0xd987('0x77'));_0x28f590[_0xd987('0x34')](_0xd987('0x78'));_0x28f590[_0xd987('0x34')](_0xd987('0x79'));_0x28f590[_0xd987('0x34')]('c.email');_0x28f590['field']('c.ListId');_0x28f590[_0xd987('0x34')](_0xd987('0x7a'));_0x28f590[_0xd987('0x34')](_0xd987('0x7b'));_0x28f590[_0xd987('0x34')](_0xd987('0x7c'));_0x28f590[_0xd987('0x34')]('GROUP_CONCAT(DISTINCT\x20t.id)','TagIds');}if(_0x54e906['limit'])_0x28f590[_0xd987('0x13')](_0x54e906[_0xd987('0x13')]);if(_0x54e906[_0xd987('0x10')])_0x28f590[_0xd987('0x10')](_0x54e906['offset']);return db[_0xd987('0x72')][_0xd987('0x29')](_0x28f590[_0xd987('0x73')](),_0x1a1c6b);});})[_0xd987('0x17')](function(_0x3ddd27){_0x3ddd27['forEach'](function(_0x56b705){if(_0x56b705['TagIds']){_0x56b705[_0xd987('0x7d')]=[];_0x56b705['TagIds']['split'](',')[_0xd987('0x47')](function(_0x12b20c){_0x56b705[_0xd987('0x7d')][_0xd987('0x7e')](_0x3f69b2[_0x12b20c]);});}delete _0x56b705[_0xd987('0x7f')];});_0x1eddf5['rows']=_0x3ddd27;return _0x1eddf5;})[_0xd987('0x17')](respondWithFilteredResult(_0x555d93,_0x54e906));})['catch'](handleError(_0x555d93,null));};exports[_0xd987('0x80')]=function(_0x1a2553,_0x5cf303){return db['CmContact']['find']({'where':{'id':_0x1a2553[_0xd987('0x81')]['id']}})[_0xd987('0x17')](handleEntityNotFound(_0x5cf303,null))['then'](removeEntity(_0x5cf303,null))[_0xd987('0x82')](handleError(_0x5cf303,null));};exports[_0xd987('0x20')]=function(_0x10766a,_0x1c0723){return db[_0xd987('0x1f')][_0xd987('0x20')]()[_0xd987('0x17')](function(_0x40da77){delete _0x40da77[_0xd987('0x83')];for(var _0x424044=0x0;_0x424044<Object[_0xd987('0x21')](_0x40da77)[_0xd987('0x22')];_0x424044++){var _0x17bfbd=Object[_0xd987('0x21')](_0x40da77)[_0x424044];if(!_[_0xd987('0x84')](_0x17bfbd,_0xd987('0x24'))){_0x40da77[_0x17bfbd][_0xd987('0x85')]=_0x17bfbd;_0x40da77[_0x17bfbd]['displayName']=_0x17bfbd;}}return _0x40da77;})[_0xd987('0x17')](function(_0x3aba4f){var _0x178c86={'where':Boolean(_0x10766a['query'][_0xd987('0x86')])===!![]?undefined:{'$or':[{'ListId':_0x10766a[_0xd987('0x29')]['id']},{'ListId':null}]},'raw':!![]};return db['CmCustomField']['findAll'](_0x178c86)['then'](function(_0x1667e7){for(var _0x602331=0x0;_0x602331<_0x1667e7[_0xd987('0x22')];_0x602331++){var _0x295d3f=_0xd987('0x24')+_0x1667e7[_0x602331]['id'];_0x3aba4f[_0x295d3f]['columnName']=_0x295d3f;_0x3aba4f[_0x295d3f][_0xd987('0x87')]=_0x1667e7[_0x602331][_0xd987('0x88')];_0x3aba4f[_0x295d3f][_0xd987('0x89')]={'type':_0x1667e7[_0x602331][_0xd987('0x27')],'values':_0x1667e7[_0x602331][_0xd987('0x8a')]};}Object[_0xd987('0x21')](_0x3aba4f)[_0xd987('0x47')](function(_0x53c292){if(!_0x3aba4f[_0x53c292][_0xd987('0x2e')](_0xd987('0x85'))){delete _0x3aba4f[_0x53c292];}});return _0x3aba4f;});})[_0xd987('0x17')](respondWithResult(_0x1c0723,null))[_0xd987('0x82')](handleError(_0x1c0723,null));};exports[_0xd987('0x74')]=function(_0x51bee1,_0x335007){var _0xdbc34a;var _0x4b617e;var _0xe8b457;if(_0x51bee1['body']['id']){delete _0x51bee1[_0xd987('0x8b')]['id'];}return db[_0xd987('0x1f')][_0xd987('0x8c')]({'where':{'id':[_0x51bee1[_0xd987('0x8b')]['to'],_0x51bee1[_0xd987('0x8b')]['from']]}})[_0xd987('0x17')](function(_0x273dd2){if(_0x273dd2){if(_0x273dd2[_0xd987('0x22')]!==0x2){return null;}_0x273dd2[0x0]=_0x273dd2[0x0]['get']({'plain':!![]});_0x273dd2[0x1]=_0x273dd2[0x1][_0xd987('0x8d')]({'plain':!![]});delete _0x273dd2[0x0]['id'];delete _0x273dd2[0x1]['id'];return _[_0xd987('0x8e')](_0x273dd2[0x0],_0x273dd2[0x1],function(_0xb3ad91,_0x1048e8){if(Array['isArray'](_0x1048e8)&&!_0x1048e8[_0xd987('0x22')]){return _0xb3ad91;}else if(!_0x1048e8){return _0xb3ad91;}});}})['then'](handleEntityNotFound(_0x335007,null))[_0xd987('0x17')](function(_0x3c7fb8){if(_0x3c7fb8){if(_0x3c7fb8['tags']&&_[_0xd987('0x5a')](_0x3c7fb8[_0xd987('0x83')])){_0x3c7fb8[_0xd987('0x83')]=_0x3c7fb8[_0xd987('0x83')][_0xd987('0x8f')]();}logger[_0xd987('0x90')](_0xd987('0x91'),_0x51bee1[_0xd987('0x8b')]['to'],_0x51bee1[_0xd987('0x8b')]['from']);return db[_0xd987('0x92')]['destroy']({'where':{'ContactId':[_0x51bee1[_0xd987('0x8b')]['to'],_0x51bee1[_0xd987('0x8b')][_0xd987('0x93')]]}})[_0xd987('0x17')](function(_0x3076db){logger[_0xd987('0x90')]('[CmContact][merge][destroy][CmHopper],\x20%s',_0x3076db);return db['CmHopperBlack'][_0xd987('0x80')]({'where':{'ContactId':[_0x51bee1[_0xd987('0x8b')]['to'],_0x51bee1['body'][_0xd987('0x93')]]}})['then'](function(_0x27ed55){logger[_0xd987('0x90')](_0xd987('0x94'),_0x27ed55);return db[_0xd987('0x1f')]['create'](_0x3c7fb8);});});}})[_0xd987('0x17')](function(_0x180001){if(_0x180001){_0xdbc34a=_0x180001;_0x4b617e={'ContactId':_0xdbc34a['id']};_0xe8b457={'where':{'ContactId':[_0x51bee1[_0xd987('0x8b')]['to'],_0x51bee1['body'][_0xd987('0x93')]]}};return db[_0xd987('0x95')][_0xd987('0x96')](_0x4b617e,_0xe8b457);}})[_0xd987('0x17')](function(){if(_0xdbc34a){return db[_0xd987('0x97')]['update'](_0x4b617e,_0xe8b457);}})[_0xd987('0x17')](function(){if(_0xdbc34a){return db[_0xd987('0x98')][_0xd987('0x96')](_0x4b617e,_0xe8b457);}})[_0xd987('0x17')](function(){if(_0xdbc34a){return db[_0xd987('0x99')][_0xd987('0x96')](_0x4b617e,_0xe8b457);}})[_0xd987('0x17')](function(){if(_0xdbc34a){return db[_0xd987('0x9a')]['update'](_0x4b617e,_0xe8b457);}})[_0xd987('0x17')](function(){if(_0xdbc34a){return db[_0xd987('0x99')]['update'](_0x4b617e,_0xe8b457);}})[_0xd987('0x17')](function(){if(_0xdbc34a){return db[_0xd987('0x9a')]['update'](_0x4b617e,_0xe8b457);}})['then'](function(){if(_0xdbc34a){return db[_0xd987('0x9b')][_0xd987('0x96')](_0x4b617e,_0xe8b457);}})[_0xd987('0x17')](function(){if(_0xdbc34a){return db[_0xd987('0x9c')][_0xd987('0x96')](_0x4b617e,_0xe8b457);}})[_0xd987('0x17')](function(){if(_0xdbc34a){return db[_0xd987('0x9d')]['update'](_0x4b617e,_0xe8b457);}})[_0xd987('0x17')](function(){if(_0xdbc34a){return db[_0xd987('0x9e')][_0xd987('0x96')](_0x4b617e,_0xe8b457);}})[_0xd987('0x17')](function(){if(_0xdbc34a){return db[_0xd987('0x9f')][_0xd987('0x96')](_0x4b617e,_0xe8b457);}})['then'](function(){if(_0xdbc34a){return db[_0xd987('0xa0')][_0xd987('0x96')](_0x4b617e,_0xe8b457);}})[_0xd987('0x17')](function(){if(_0xdbc34a){return db['CmContactHasItem'][_0xd987('0x96')]({'CmContactId':_0xdbc34a['id']},{'where':{'CmContactId':[_0x51bee1['body']['to'],_0x51bee1['body']['from']]}});}})[_0xd987('0x17')](function(){if(_0xdbc34a){return db['CmHopperFinal'][_0xd987('0x96')](_0x4b617e,_0xe8b457);}})['then'](function(){if(_0xdbc34a){return db[_0xd987('0xa1')][_0xd987('0x96')](_0x4b617e,_0xe8b457);}})[_0xd987('0x17')](function(){if(_0xdbc34a){return db[_0xd987('0xa2')]['update'](_0x4b617e,_0xe8b457);}})[_0xd987('0x17')](function(){if(_0xdbc34a){return db[_0xd987('0xa3')][_0xd987('0x96')](_0x4b617e,_0xe8b457);}})['then'](function(){if(_0xdbc34a){return db[_0xd987('0xa4')][_0xd987('0x96')](_0x4b617e,_0xe8b457);}})['then'](function(){if(_0xdbc34a){return db['FaxQueueReport'][_0xd987('0x96')](_0x4b617e,_0xe8b457);}})[_0xd987('0x17')](function(){if(_0xdbc34a){return db[_0xd987('0xa5')][_0xd987('0x96')](_0x4b617e,_0xe8b457);}})[_0xd987('0x17')](function(){if(_0xdbc34a){return db[_0xd987('0xa6')][_0xd987('0x96')](_0x4b617e,_0xe8b457);}})[_0xd987('0x17')](function(){if(_0xdbc34a){return db[_0xd987('0xa7')][_0xd987('0x96')](_0x4b617e,_0xe8b457);}})[_0xd987('0x17')](function(){if(_0xdbc34a){return db[_0xd987('0xa8')][_0xd987('0x96')](_0x4b617e,_0xe8b457);}})['then'](function(){if(_0xdbc34a){return db[_0xd987('0xa9')]['update'](_0x4b617e,_0xe8b457);}})[_0xd987('0x17')](function(){if(_0xdbc34a){return db['WhatsappMessage'][_0xd987('0x96')](_0x4b617e,_0xe8b457);}})[_0xd987('0x17')](function(){if(_0xdbc34a){return db[_0xd987('0xaa')][_0xd987('0x96')](_0x4b617e,_0xe8b457);}})[_0xd987('0x17')](function(){if(_0xdbc34a){return db['CmContact'][_0xd987('0x80')]({'where':{'id':[_0x51bee1['body']['to'],_0x51bee1[_0xd987('0x8b')][_0xd987('0x93')]]}});}})['then'](function(){if(_0xdbc34a){return _0xdbc34a;}})[_0xd987('0x17')](respondWithResult(_0x335007,null))[_0xd987('0x82')](handleError(_0x335007,null));};exports[_0xd987('0xab')]=function(_0x1856a1,_0x10b56d){return db['CmContact']['describe']()[_0xd987('0x17')](function(_0x47aa01){if(_0x1856a1['body'][_0xd987('0x83')]&&_[_0xd987('0x5a')](_0x1856a1[_0xd987('0x8b')]['tags'])){if(_0x1856a1[_0xd987('0x8b')][_0xd987('0x83')][_0xd987('0x22')]){_0x1856a1[_0xd987('0x8b')][_0xd987('0x83')]=_0x1856a1[_0xd987('0x8b')][_0xd987('0x83')][_0xd987('0x8f')](';')+';';}else{_0x1856a1[_0xd987('0x8b')]['tags']=null;}}else{_0x1856a1['body'][_0xd987('0x83')]=null;}if(!_['isNil'](_0x1856a1[_0xd987('0x8b')][_0xd987('0xac')])){var _0x3622ec=_0x1856a1[_0xd987('0x8b')][_0xd987('0xac')];if(!_[_0xd987('0x51')](shared[_0xd987('0xad')][_0x3622ec]))_0x1856a1[_0xd987('0x8b')][_0xd987('0xae')]=shared[_0xd987('0xad')][_0x3622ec]['utcOffset'];}return db[_0xd987('0x1f')]['create'](_0x1856a1[_0xd987('0x8b')],{'fields':_[_0xd987('0x21')](_0x47aa01),'raw':!![]});})[_0xd987('0x17')](function(_0x4572ef){if(_0x1856a1['body'][_0xd987('0xaf')]){return insertAdditionalPhones(_0x4572ef,_0x1856a1[_0xd987('0x8b')]['additionalPhones']);}else{return _0x4572ef;}})[_0xd987('0x17')](respondWithResult(_0x10b56d,0xc9))[_0xd987('0x82')](handleError(_0x10b56d,null));};exports[_0xd987('0xb0')]=function(_0x486803,_0x54ed18){var _0xa3fa8=0x0;var _0x2b8748=0x0;var _0x316f0e=0x0;var _0x17ea79=[];return db['CmContact']['describe']()[_0xd987('0x17')](function(_0x3e078e){return BPromise[_0xd987('0xb1')](_0x486803[_0xd987('0x8b')],function(_0x577fd3){var _0x21f150={'where':{'$or':[]},'defaults':_0x577fd3,'fields':_[_0xd987('0x21')](_0x3e078e),'raw':!![]};if(_0x577fd3[_0xd987('0xb2')]){for(var _0x9e4367=0x0;_0x9e4367<_0x577fd3['duplicates'][_0xd987('0x22')];_0x9e4367++){var _0x3c5c8b={};_0x3c5c8b[_0x577fd3[_0xd987('0xb2')][_0x9e4367]]=_0x577fd3[_0x577fd3[_0xd987('0xb2')][_0x9e4367]];_0x21f150[_0xd987('0x55')][_0xd987('0xb3')][_0xd987('0x7e')](_0x3c5c8b);}_0x21f150[_0xd987('0x55')]['ListId']=_0x577fd3['ListId'];}return db[_0xd987('0x1f')][_0xd987('0xb4')](_0x21f150)[_0xd987('0xb5')](function(_0x1de0c2,_0xdcf3b2){if(_0xdcf3b2){if(_0x577fd3['hasOwnProperty']('additionalPhones')){_0x17ea79[_0xd987('0x7e')]({'contact':_0x1de0c2,'additionalPhones':_0x577fd3[_0xd987('0xaf')]});}_0xa3fa8++;}else{_0x316f0e++;}})[_0xd987('0x82')](function(){_0x2b8748++;});});})[_0xd987('0x17')](function(_0x13138f){if(_0x13138f){if(_0x17ea79[_0xd987('0x22')]>0x0){return new Promise(function(_0x20c564,_0x3cc3b1){var _0x467fe4=[];for(var _0x3df057=0x0;_0x3df057<_0x17ea79[_0xd987('0x22')];_0x3df057++){_0x467fe4[_0xd987('0x7e')](insertAdditionalPhones(_0x17ea79[_0x3df057][_0xd987('0xb6')],_0x17ea79[_0x3df057]['additionalPhones']));}Promise['all'](_0x467fe4)['then'](function(){_0x20c564(0x1);});})['then'](function(){return{'success':_0xa3fa8,'failure':_0x2b8748,'duplicates':_0x316f0e};});}else{return{'success':_0xa3fa8,'failure':_0x2b8748,'duplicates':_0x316f0e};}}})[_0xd987('0x17')](respondWithResult(_0x54ed18,0xc9))[_0xd987('0x82')](handleError(_0x54ed18,null));};exports[_0xd987('0xb7')]=function(_0xaa9110,_0x1cd298){var _0xff937;return db['CmContact'][_0xd987('0x20')]()[_0xd987('0x17')](function(_0x24ad43){return db[_0xd987('0x1f')][_0xd987('0x42')]({'where':{'id':_0xaa9110['params']['id']},'include':[{'model':db[_0xd987('0x43')],'as':_0xd987('0x7d'),'attributes':['id',_0xd987('0x1c'),_0xd987('0x35')],'required':_0xaa9110[_0xd987('0x29')]['tag']?!![]:![]},{'model':db[_0xd987('0xb8')],'as':_0xd987('0xb9'),'where':{'CmContactId':_0xaa9110[_0xd987('0x81')]['id']},'required':![],'include':[{'model':db['ContactItemType'],'as':_0xd987('0xba')}]}],'order':[db[_0xd987('0x72')][_0xd987('0xbb')](_0xd987('0xbc'))],'attributes':_[_0xd987('0x21')](_0x24ad43)});})[_0xd987('0x17')](function(_0x39e8c1){if(!_[_0xd987('0x51')](_0x39e8c1)){_0xff937=_0x39e8c1[_0xd987('0x8d')]({'plain':!![]});var _0x4a5bb2={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x39e8c1&&_0x39e8c1[_0xd987('0x54')]){if(_0x39e8c1[_0xd987('0x54')]){_0x4a5bb2[_0xd987('0x55')][_0xd987('0xbd')][_0xd987('0x7e')]({'ListId':{'$ne':_0x39e8c1[_0xd987('0x54')]}});}}return db[_0xd987('0xbe')][_0xd987('0x8c')](_0x4a5bb2);}})['then'](function(_0x4403e5){if(!_[_0xd987('0x51')](_0x4403e5)){return _[_0xd987('0xbf')](_0xff937,_[_0xd987('0x46')](_0x4403e5,function(_0x374c2c){return util['format'](_0xd987('0xc0'),_0x374c2c['id']);}));}})['then'](handleEntityNotFound(_0x1cd298,null))[_0xd987('0x17')](respondWithResult(_0x1cd298,null))['catch'](handleError(_0x1cd298,null));};exports[_0xd987('0x96')]=function(_0x2fa489,_0x3c2821){var _0x32067f;if(_0x2fa489[_0xd987('0x8b')]['id']){delete _0x2fa489[_0xd987('0x8b')]['id'];}if(!_['isNil'](_0x2fa489[_0xd987('0x8b')][_0xd987('0xac')])){var _0x134b29=_0x2fa489[_0xd987('0x8b')][_0xd987('0xac')];if(!_[_0xd987('0x51')](shared[_0xd987('0xad')][_0x134b29]))_0x2fa489[_0xd987('0x8b')][_0xd987('0xae')]=shared[_0xd987('0xad')][_0x134b29]['utcOffset'];}return db[_0xd987('0x1f')][_0xd987('0x42')]({'where':{'id':_0x2fa489['params']['id']}})[_0xd987('0x17')](handleEntityNotFound(_0x3c2821,null))[_0xd987('0x17')](saveUpdates(_0x2fa489[_0xd987('0x8b')],null))[_0xd987('0x17')](function(_0x9d179b){_0x32067f=_0x9d179b;var _0x5bef0a={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x9d179b&&_0x9d179b['ListId']){if(_0x9d179b[_0xd987('0x54')]){_0x5bef0a[_0xd987('0x55')][_0xd987('0xbd')][_0xd987('0x7e')]({'ListId':{'$ne':_0x9d179b[_0xd987('0x54')]}});}}return db['CmCustomField']['findAll'](_0x5bef0a);})[_0xd987('0x17')](function(_0x3bd625){if(_0x3bd625){return _[_0xd987('0xbf')](_[_0xd987('0xc1')](_0x2fa489[_0xd987('0x8b')],function(_0x24441b,_0x16f038){return _[_0xd987('0x84')](_0x16f038,'cf_');}),_[_0xd987('0x46')](_0x3bd625,function(_0x22d188){return util[_0xd987('0xc2')]('cf_%d',_0x22d188['id']);}));}})[_0xd987('0x17')](function(_0x981f2){if(_0x981f2&&!_[_0xd987('0x53')](_0x981f2)){var _0x5b0580=squel[_0xd987('0x96')]()[_0xd987('0xc3')](_0xd987('0x37'))[_0xd987('0xc4')](_0x981f2)['where'](_0xd987('0xc5'),_0x2fa489[_0xd987('0x81')]['id'])[_0xd987('0xc6')]();return db[_0xd987('0x72')]['query'](_0x5b0580['text'],{'replacements':_0x5b0580[_0xd987('0x8a')]});}})[_0xd987('0x17')](function(){if(_0x2fa489[_0xd987('0x8b')][_0xd987('0xc7')]&&_0x32067f){return db['CmHopper'][_0xd987('0x96')]({'phone':_0x2fa489['body'][_0xd987('0xc7')],'OrderBy':0x0},{'where':{'ContactId':_0x32067f['id']}});}})[_0xd987('0x17')](function(){return _0x32067f;})[_0xd987('0x17')](respondWithResult(_0x3c2821,null))[_0xd987('0x82')](handleError(_0x3c2821,null));};exports['getTags']=function(_0x753e48,_0x3fd89){var _0x46e001={};var _0x19bd02={};var _0x3c3637;var _0x53172d;return db[_0xd987('0x1f')][_0xd987('0xc8')]({'where':{'id':_0x753e48['params']['id']}})[_0xd987('0x17')](handleEntityNotFound(_0x3fd89,null))[_0xd987('0x17')](function(_0x598ffa){if(_0x598ffa){_0x3c3637=_0x598ffa;_0x19bd02[_0xd987('0x28')]=_[_0xd987('0x21')](db['Tag'][_0xd987('0xc9')]);_0x19bd02[_0xd987('0x29')]=_[_0xd987('0x21')](_0x753e48[_0xd987('0x29')]);_0x19bd02[_0xd987('0x2a')]=_['intersection'](_0x19bd02[_0xd987('0x28')],_0x19bd02[_0xd987('0x29')]);_0x46e001['attributes']=_[_0xd987('0x2c')](_0x19bd02[_0xd987('0x28')],qs[_0xd987('0x2d')](_0x753e48['query'][_0xd987('0x2d')]));_0x46e001[_0xd987('0x2b')]=_0x46e001[_0xd987('0x2b')][_0xd987('0x22')]?_0x46e001[_0xd987('0x2b')]:_0x19bd02[_0xd987('0x28')];_0x46e001[_0xd987('0x30')]=qs['sort'](_0x753e48[_0xd987('0x29')]['sort']);_0x46e001[_0xd987('0x55')]=qs[_0xd987('0x2a')](_[_0xd987('0x32')](_0x753e48[_0xd987('0x29')],_0x19bd02['filters']));if(_0x753e48['query'][_0xd987('0x50')]){_0x46e001['where']=_['merge'](_0x46e001[_0xd987('0x55')],{'$or':_[_0xd987('0x46')](_0x46e001[_0xd987('0x2b')],function(_0x4f1695){var _0x53ce0a={};_0x53ce0a[_0x4f1695]={'$like':'%'+_0x753e48[_0xd987('0x29')][_0xd987('0x50')]+'%'};return _0x53ce0a;})});}_0x46e001=_['merge']({},_0x46e001,_0x753e48[_0xd987('0xca')]);return _0x3c3637[_0xd987('0xcb')](_0x46e001);}})[_0xd987('0x17')](function(_0x3cf3ac){if(_0x3cf3ac){_0x53172d=_0x3cf3ac[_0xd987('0x22')];if(!_0x753e48['query'][_0xd987('0x2e')](_0xd987('0x2f'))){_0x46e001[_0xd987('0x13')]=qs[_0xd987('0x13')](_0x753e48[_0xd987('0x29')][_0xd987('0x13')]);_0x46e001[_0xd987('0x10')]=qs[_0xd987('0x10')](_0x753e48['query']['offset']);}return _0x3c3637[_0xd987('0xcb')](_0x46e001);}})[_0xd987('0x17')](function(_0x460c3e){if(_0x460c3e){return _0x460c3e?{'count':_0x53172d,'rows':_0x460c3e}:null;}})[_0xd987('0x17')](respondWithResult(_0x3fd89,null))[_0xd987('0x82')](handleError(_0x3fd89,null));};exports[_0xd987('0xcc')]=function(_0x29542d,_0x3af0f4){if(_0x29542d[_0xd987('0x8b')]['id']){delete _0x29542d['body']['id'];}return db[_0xd987('0x1f')]['findOne']({'where':{'id':_0x29542d['params']['id']}})[_0xd987('0x17')](handleEntityNotFound(_0x3af0f4,null))[_0xd987('0x17')](function(_0xc79d5c){if(_0xc79d5c){return _0xc79d5c['setTags'](_0x29542d['body'][_0xd987('0xcd')]||[]);}return null;})[_0xd987('0x17')](respondWithResult(_0x3af0f4,null))[_0xd987('0x82')](handleError(_0x3af0f4,null));};exports['setAdditionalPhones']=function(_0x1c2cd7,_0x503127){var _0x111563=[];_0x111563[_0xd987('0x7e')](addAdditionalPhones(_0x1c2cd7[_0xd987('0x8b')]));Promise['all'](_0x111563)[_0xd987('0x17')](function(){_0x111563=[];_0x111563[_0xd987('0x7e')](deleteCmHopperPhones(_0x1c2cd7['body']['id']));_0x111563[_0xd987('0x7e')](addCmHopperPhones(_0x1c2cd7[_0xd987('0x8b')]['id']));Promise[_0xd987('0x25')](_0x111563)[_0xd987('0x17')](function(){return[0x1];})[_0xd987('0x17')](respondWithResult(_0x503127,null));});};function addAdditionalPhones(_0x4753aa){var _0x4c448e;return new Promise(function(_0x25d3ab,_0x7d051c){return db[_0xd987('0xb8')]['destroy']({'where':{'CmContactId':_0x4753aa['id']}})[_0xd987('0x17')](function(){db[_0xd987('0xce')][_0xd987('0x8c')]({'raw':!![],'attributes':['id',_0xd987('0xcf')]})['then'](function(_0x2873a9){var _0x66f362=[];for(var _0xfe5378=0x0;_0xfe5378<_0x4753aa[_0xd987('0xd0')][_0xd987('0x22')];_0xfe5378++){var _0x2eac53=_0x4753aa[_0xd987('0xd1')]?_[_0xd987('0x51')](_0x4753aa[_0xd987('0xd1')][_0xfe5378])?'':_0x4753aa[_0xd987('0xd1')][_0xfe5378]:_0x4753aa[_0xd987('0xd0')][_0xfe5378][_0xd987('0xd2')]?_0x4753aa[_0xd987('0xd0')][_0xfe5378]['ItemTypeId']:'';var _0x14ee51=_[_0xd987('0x51')](_0x4753aa[_0xd987('0xd0')][_0xfe5378][_0xd987('0xd3')])?'':_0x4753aa[_0xd987('0xd0')][_0xfe5378][_0xd987('0xd3')];var _0x490ba2=_0x2eac53+':'+_0x4753aa['items'][_0xfe5378][_0xd987('0xc7')]+'§'+_0x14ee51;if(_[_0xd987('0x51')](_0x4c448e))_0x4c448e=_0x490ba2;else _0x4c448e+=';'+_0x490ba2;var _0xdda1a3=null;if(_0x4753aa[_0xd987('0xd1')]){if(!_['isNil'](_0x4753aa['item_types'][_0xfe5378])){var _0x5324bd=_[_0xd987('0x42')](_0x2873a9,function(_0x1184c1){return _0x1184c1['id']===_0x4753aa[_0xd987('0xd1')][_0xfe5378];});if(!_[_0xd987('0x51')](_0x5324bd)){_0xdda1a3=_0x5324bd[_0xd987('0xcf')];}}}else{if(!_['isNil'](_0x4753aa[_0xd987('0xd0')][_0xfe5378])){var _0x5324bd=_[_0xd987('0x42')](_0x2873a9,function(_0x5decef){return _0x5decef['id']===_0x4753aa[_0xd987('0xd0')][_0xfe5378][_0xd987('0xd2')];});if(!_['isNil'](_0x5324bd)){_0xdda1a3=_0xfe5378;}}}if(_[_0xd987('0x51')](_0xdda1a3)){_0xdda1a3=0x64;}_0x66f362[_0xd987('0x7e')](addAdditionalPhone(_0x4753aa['id'],_0x4753aa['items'][_0xfe5378][_0xd987('0xc7')],_0x4753aa[_0xd987('0xd1')]?_[_0xd987('0x51')](_0x4753aa[_0xd987('0xd1')][_0xfe5378])?null:_0x4753aa['item_types'][_0xfe5378]:_0x4753aa['items'][_0xfe5378][_0xd987('0xd2')]?_0x4753aa[_0xd987('0xd0')][_0xfe5378][_0xd987('0xd2')]:null,_0xdda1a3,_0x14ee51));}Promise[_0xd987('0x25')](_0x66f362)[_0xd987('0x17')](function(){db[_0xd987('0x1f')]['update']({'AdditionalPhones':_0x4c448e},{'where':{'id':_0x4753aa['id']}})['then'](function(){_0x25d3ab(0x1);});});});});});}function addAdditionalPhone(_0x5374d0,_0x5729a0,_0x525a02,_0x58a9bf,_0x1a9297){return db[_0xd987('0xb8')]['find']({'where':{'CmContactId':_0x5374d0,'item':_0x5729a0}})[_0xd987('0x17')](function(_0x370540){if(_0x370540)logger[_0xd987('0x90')](_0xd987('0xd4'),_0x370540);else{db[_0xd987('0xb8')][_0xd987('0xab')]({'CmContactId':_0x5374d0,'item':_0x5729a0,'ItemTypeId':_0x525a02,'OrderBy':_0x58a9bf,'ItemClass':_0xd987('0xd5'),'description':_0x1a9297});}});}function deletePhones(_0xf3967d){return db[_0xd987('0xb8')][_0xd987('0x80')]({'where':{'CmContactId':_0xf3967d}});}function deleteCmHopperPhones(_0x524e0a){return new Promise(function(_0x4d45e2,_0x12fffe){return db[_0xd987('0x92')][_0xd987('0x8c')]({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x524e0a}})[_0xd987('0x17')](function(_0x28b576){db[_0xd987('0xd6')][_0xd987('0x80')]({'where':{'CmHopperId':{'$in':_[_0xd987('0x46')](_0x28b576,'id')}}});})[_0xd987('0x17')](function(){_0x4d45e2(0x1);});});}function addCmHopperPhones(_0x3026a0){return new Promise(function(_0x35fc36,_0x57307b){return db[_0xd987('0x92')][_0xd987('0x8c')]({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x3026a0}})[_0xd987('0x17')](function(_0x3e0ba6){var _0x17240b=[];_[_0xd987('0x46')](_0x3e0ba6,function(_0x5d8a74){_0x17240b['push'](createCmHopperPhone(_0x3026a0,_0x5d8a74['id']));});Promise[_0xd987('0x25')](_0x17240b)[_0xd987('0x17')](function(){_0x35fc36(0x1);});});});}function createCmHopperPhone(_0x56f75f,_0x3a7a50){return new Promise(function(_0x4f56e5,_0x17151c){db[_0xd987('0xb8')][_0xd987('0x8c')]({'raw':!![],'attributes':[_0xd987('0xd7'),_0xd987('0xcf')],'where':{'CmContactId':_0x56f75f,'ItemClass':'PHONE'},'include':[{'model':db[_0xd987('0xce')],'attributes':[_0xd987('0xcf')],'as':_0xd987('0xba')}],'order':[_0xd987('0xcf'),db[_0xd987('0x72')][_0xd987('0xbb')]('`ItemType`.OrderBy')]})[_0xd987('0x17')](function(_0x40e372){var _0x5f4d19=0x1;var _0x3a0295=_[_0xd987('0x46')](_0x40e372,function(_0x3847b1){_0x3847b1[_0xd987('0xd8')]=_0x3a7a50;_0x3847b1[_0xd987('0xc7')]=_0x3847b1[_0xd987('0xd7')];_0x3847b1[_0xd987('0xcf')]=_0x5f4d19;delete _0x3847b1[_0xd987('0xd9')];_0x5f4d19=_0x5f4d19+0x1;return _0x3847b1;});return db[_0xd987('0xd6')][_0xd987('0xb0')](_0x3a0295,{});})[_0xd987('0x17')](function(){_0x4f56e5(0x1);});});}function insertAdditionalPhones(_0x2b7623,_0x3f0fa9){return new Promise(function(_0x407c61,_0x481ebb){var _0x53a234=[];for(var _0x297119=0x0;_0x297119<_0x3f0fa9[_0xd987('0x22')];_0x297119++){var _0x5f03a7=_0x3f0fa9[_0x297119];_0x53a234[_0xd987('0x7e')](parseContactItemType(_0x5f03a7));}Promise[_0xd987('0x25')](_0x53a234)[_0xd987('0x17')](function(){var _0x22a2ec={'id':_0x2b7623['id'],'items':_0x3f0fa9};return addAdditionalPhones(_0x22a2ec)[_0xd987('0x17')](function(_0x452af2){return addCmHopperPhones(_0x2b7623['id']);});})[_0xd987('0x17')](function(){_0x407c61(_0x2b7623);});});}function parseContactItemType(_0x4ae710){return new Promise(function(_0x381cde,_0x133a82){if(_0x4ae710[_0xd987('0x2e')]('ItemTypeId')){_0x381cde(_0x4ae710);}else{return db['ContactItemType'][_0xd987('0x42')]({'where':{'name':_0x4ae710[_0xd987('0xba')]}})['then'](function(_0x6b8ac8){if(_[_0xd987('0x51')](_0x6b8ac8))_0x4ae710[_0xd987('0xd2')]=null;else _0x4ae710['ItemTypeId']=_0x6b8ac8['id'];_0x381cde(_0x4ae710);});}});}exports['getAdditionalPhones']=function(_0x72f6c7,_0x5e5fbb){return db[_0xd987('0xb8')][_0xd987('0x8c')]({'raw':!![],'where':{'CmContactId':_0x72f6c7[_0xd987('0x81')]['id'],'ItemClass':_0xd987('0xd5')},'include':[{'model':db['ContactItemType'],'as':_0xd987('0xba')}],'order':[[_0xd987('0xcf')],[db[_0xd987('0x72')][_0xd987('0xbb')]('`ItemType`.OrderBy')]]})['then'](function(_0x10a5a7){return _0x10a5a7;})['then'](respondWithResult(_0x5e5fbb,null))[_0xd987('0x82')](handleError(_0x5e5fbb,null));};exports['duplicateAdditionalPhones']=function(_0x7ce3d6,_0x7271ee){return db[_0xd987('0xb8')][_0xd987('0x8c')]({'raw':!![],'where':{'CmContactId':_0x7ce3d6[_0xd987('0x8b')]['fromContactId']}})[_0xd987('0x17')](function(_0x495b9){var _0x2a4238=_[_0xd987('0x46')](_0x495b9,function(_0x441ad1){_0x441ad1[_0xd987('0xda')]=_0x7ce3d6[_0xd987('0x8b')][_0xd987('0xdb')];return _0x441ad1;});return db[_0xd987('0xb8')][_0xd987('0xb0')](_0x2a4238,{});})[_0xd987('0x17')](function(_0x503b85){return addCmHopperPhones(_0x7ce3d6[_0xd987('0x8b')]['toContactId']);})[_0xd987('0x17')](function(_0x3ee575){return['ok'];})[_0xd987('0x17')](respondWithResult(_0x7271ee,null))[_0xd987('0x82')](handleError(_0x7271ee,null));};exports['rescheduleAdditionalPhones']=function(_0x5a5bef,_0x58ca84){var _0x22dfc5=[];_0x22dfc5[_0xd987('0x7e')](createCmHopperPhone(_0x5a5bef[_0xd987('0x8b')]['id'],_0x5a5bef[_0xd987('0x8b')][_0xd987('0xdc')]));Promise[_0xd987('0x25')](_0x22dfc5)[_0xd987('0x17')](function(){return[0x1];})[_0xd987('0x17')](respondWithResult(_0x58ca84,null));};exports['getHoppers']=function(_0x14c13d,_0x47e921){var _0x1555eb={'raw':![],'where':{}};var _0x43f370={};var _0x1317df={'count':0x0,'rows':[]};return db[_0xd987('0x1f')][_0xd987('0xc8')]({'where':{'id':_0x14c13d[_0xd987('0x81')]['id']}})[_0xd987('0x17')](handleEntityNotFound(_0x47e921,null))[_0xd987('0x17')](function(_0x2be628){if(_0x2be628){_0x43f370[_0xd987('0x28')]=_[_0xd987('0x21')](db['CmHopper'][_0xd987('0xc9')]);_0x43f370[_0xd987('0x29')]=_[_0xd987('0x21')](_0x14c13d[_0xd987('0x29')]);_0x43f370[_0xd987('0x2a')]=_[_0xd987('0x2c')](_0x43f370[_0xd987('0x28')],_0x43f370[_0xd987('0x29')]);_0x1555eb[_0xd987('0x2b')]=_[_0xd987('0x2c')](_0x43f370[_0xd987('0x28')],qs[_0xd987('0x2d')](_0x14c13d[_0xd987('0x29')][_0xd987('0x2d')]));_0x1555eb['attributes']=_0x1555eb[_0xd987('0x2b')]['length']?_0x1555eb[_0xd987('0x2b')]:_0x43f370['model'];if(!_0x14c13d['query'][_0xd987('0x2e')](_0xd987('0x2f'))){_0x1555eb[_0xd987('0x13')]=qs[_0xd987('0x13')](_0x14c13d[_0xd987('0x29')][_0xd987('0x13')]);_0x1555eb['offset']=qs[_0xd987('0x10')](_0x14c13d[_0xd987('0x29')][_0xd987('0x10')]);}_0x1555eb['order']=qs[_0xd987('0x31')](_0x14c13d[_0xd987('0x29')]['sort']);_0x1555eb[_0xd987('0x55')]=qs[_0xd987('0x2a')](_[_0xd987('0x32')](_0x14c13d['query'],_0x43f370['filters']));_0x1555eb[_0xd987('0x55')]['ContactId']=_0x2be628['id'];if(_0x14c13d[_0xd987('0x29')][_0xd987('0x50')]){_0x1555eb[_0xd987('0x55')]=_['merge'](_0x1555eb['where'],{'$or':_['map'](_0x1555eb[_0xd987('0x2b')],function(_0x10abc9){var _0x138211={};_0x138211[_0x10abc9]={'$like':'%'+_0x14c13d[_0xd987('0x29')][_0xd987('0x50')]+'%'};return _0x138211;})});}_0x1555eb=_['merge']({},_0x1555eb,_0x14c13d[_0xd987('0xca')]);return db[_0xd987('0x92')]['count']({'where':_0x1555eb[_0xd987('0x55')]})['then'](function(_0x1ff003){_0x1317df['count']=_0x1ff003;if(_0x14c13d['query'][_0xd987('0xdd')]){_0x1555eb[_0xd987('0xde')]=[{'all':!![]}];}return db[_0xd987('0x92')][_0xd987('0x8c')](_0x1555eb);})['then'](function(_0x356d92){_0x1317df['rows']=_0x356d92;return _0x1317df;});}})[_0xd987('0x17')](respondWithFilteredResult(_0x47e921,_0x1555eb))[_0xd987('0x82')](handleError(_0x47e921,null));};exports[_0xd987('0xdf')]=function(_0x18d768,_0x486546){var _0x229937={'raw':!![],'where':{}};var _0x29b264={};var _0x5d4b06={'count':0x0,'rows':[]};return db['CmContact'][_0xd987('0xc8')]({'where':{'id':_0x18d768[_0xd987('0x81')]['id']}})['then'](handleEntityNotFound(_0x486546,null))[_0xd987('0x17')](function(_0x30baf4){if(_0x30baf4){_0x29b264[_0xd987('0x28')]=_[_0xd987('0x21')](db[_0xd987('0xa1')]['rawAttributes']);_0x29b264[_0xd987('0x29')]=_[_0xd987('0x21')](_0x18d768[_0xd987('0x29')]);_0x29b264['filters']=_[_0xd987('0x2c')](_0x29b264[_0xd987('0x28')],_0x29b264[_0xd987('0x29')]);_0x229937[_0xd987('0x2b')]=_['intersection'](_0x29b264[_0xd987('0x28')],qs[_0xd987('0x2d')](_0x18d768[_0xd987('0x29')]['fields']));_0x229937[_0xd987('0x2b')]=_0x229937[_0xd987('0x2b')][_0xd987('0x22')]?_0x229937['attributes']:_0x29b264['model'];if(!_0x18d768['query'][_0xd987('0x2e')](_0xd987('0x2f'))){_0x229937[_0xd987('0x13')]=qs[_0xd987('0x13')](_0x18d768[_0xd987('0x29')]['limit']);_0x229937[_0xd987('0x10')]=qs[_0xd987('0x10')](_0x18d768['query'][_0xd987('0x10')]);}_0x229937[_0xd987('0x30')]=qs['sort'](_0x18d768[_0xd987('0x29')][_0xd987('0x31')]);_0x229937[_0xd987('0x55')]=qs[_0xd987('0x2a')](_['pick'](_0x18d768[_0xd987('0x29')],_0x29b264['filters']));_0x229937[_0xd987('0x55')][_0xd987('0xe0')]=_0x30baf4['id'];if(_0x18d768[_0xd987('0x29')][_0xd987('0x50')]){_0x229937['where']=_[_0xd987('0x74')](_0x229937['where'],{'$or':_[_0xd987('0x46')](_0x229937[_0xd987('0x2b')],function(_0x24ec07){var _0x1a8fee={};_0x1a8fee[_0x24ec07]={'$like':'%'+_0x18d768[_0xd987('0x29')][_0xd987('0x50')]+'%'};return _0x1a8fee;})});}_0x229937=_[_0xd987('0x74')]({},_0x229937,_0x18d768['options']);return db[_0xd987('0xa1')]['count']({'where':_0x229937[_0xd987('0x55')]})['then'](function(_0x306249){_0x5d4b06[_0xd987('0x12')]=_0x306249;if(_0x18d768[_0xd987('0x29')][_0xd987('0xdd')]){_0x229937[_0xd987('0xde')]=[{'all':!![]}];}return db['CmHopperHistory']['findAll'](_0x229937);})[_0xd987('0x17')](function(_0x59652f){_0x5d4b06[_0xd987('0xe1')]=_0x59652f;return _0x5d4b06;});}})[_0xd987('0x17')](respondWithFilteredResult(_0x486546,_0x229937))[_0xd987('0x82')](handleError(_0x486546,null));};exports['getHopperFinals']=function(_0x56722f,_0x4f4301){var _0x4f921e={'raw':!![],'where':{}};var _0x1ab364={};var _0x29b13f={'count':0x0,'rows':[]};return db[_0xd987('0x1f')][_0xd987('0xc8')]({'where':{'id':_0x56722f[_0xd987('0x81')]['id']}})[_0xd987('0x17')](handleEntityNotFound(_0x4f4301,null))['then'](function(_0x301372){if(_0x301372){_0x1ab364[_0xd987('0x28')]=_[_0xd987('0x21')](db['CmHopperFinal']['rawAttributes']);_0x1ab364[_0xd987('0x29')]=_['keys'](_0x56722f[_0xd987('0x29')]);_0x1ab364[_0xd987('0x2a')]=_[_0xd987('0x2c')](_0x1ab364['model'],_0x1ab364[_0xd987('0x29')]);_0x4f921e[_0xd987('0x2b')]=_[_0xd987('0x2c')](_0x1ab364[_0xd987('0x28')],qs[_0xd987('0x2d')](_0x56722f[_0xd987('0x29')]['fields']));_0x4f921e[_0xd987('0x2b')]=_0x4f921e[_0xd987('0x2b')][_0xd987('0x22')]?_0x4f921e[_0xd987('0x2b')]:_0x1ab364[_0xd987('0x28')];if(!_0x56722f[_0xd987('0x29')][_0xd987('0x2e')]('nolimit')){_0x4f921e['limit']=qs[_0xd987('0x13')](_0x56722f[_0xd987('0x29')][_0xd987('0x13')]);_0x4f921e[_0xd987('0x10')]=qs[_0xd987('0x10')](_0x56722f[_0xd987('0x29')][_0xd987('0x10')]);}_0x4f921e['order']=qs[_0xd987('0x31')](_0x56722f[_0xd987('0x29')][_0xd987('0x31')]);_0x4f921e[_0xd987('0x55')]=qs['filters'](_[_0xd987('0x32')](_0x56722f[_0xd987('0x29')],_0x1ab364[_0xd987('0x2a')]));_0x4f921e[_0xd987('0x55')][_0xd987('0xe0')]=_0x301372['id'];if(_0x56722f[_0xd987('0x29')][_0xd987('0x50')]){_0x4f921e['where']=_['merge'](_0x4f921e['where'],{'$or':_[_0xd987('0x46')](_0x4f921e['attributes'],function(_0x5c8d13){var _0x2b3b3d={};_0x2b3b3d[_0x5c8d13]={'$like':'%'+_0x56722f['query']['filter']+'%'};return _0x2b3b3d;})});}_0x4f921e=_[_0xd987('0x74')]({},_0x4f921e,_0x56722f[_0xd987('0xca')]);return db[_0xd987('0xe2')]['count']({'where':_0x4f921e[_0xd987('0x55')]})[_0xd987('0x17')](function(_0x5e4c49){_0x29b13f[_0xd987('0x12')]=_0x5e4c49;if(_0x56722f[_0xd987('0x29')][_0xd987('0xdd')]){_0x4f921e[_0xd987('0xde')]=[{'all':!![]}];}return db[_0xd987('0xe2')][_0xd987('0x8c')](_0x4f921e);})[_0xd987('0x17')](function(_0x4e63e7){_0x29b13f[_0xd987('0xe1')]=_0x4e63e7;return _0x29b13f;});}})['then'](respondWithFilteredResult(_0x4f4301,_0x4f921e))[_0xd987('0x82')](handleError(_0x4f4301,null));};exports[_0xd987('0xe3')]=function(_0x807ec2,_0x3aa329){var _0x2be7f5={'raw':!![],'where':{}};var _0x3bf80e={};var _0x1035af={'count':0x0,'rows':[]};return db[_0xd987('0x1f')][_0xd987('0xc8')]({'where':{'id':_0x807ec2[_0xd987('0x81')]['id']}})['then'](handleEntityNotFound(_0x3aa329,null))[_0xd987('0x17')](function(_0x4ff50b){if(_0x4ff50b){_0x3bf80e[_0xd987('0x28')]=_[_0xd987('0x21')](db[_0xd987('0xa8')][_0xd987('0xc9')]);_0x3bf80e['query']=_[_0xd987('0x21')](_0x807ec2[_0xd987('0x29')]);_0x3bf80e['filters']=_[_0xd987('0x2c')](_0x3bf80e['model'],_0x3bf80e[_0xd987('0x29')]);_0x2be7f5['attributes']=_['intersection'](_0x3bf80e[_0xd987('0x28')],qs[_0xd987('0x2d')](_0x807ec2[_0xd987('0x29')][_0xd987('0x2d')]));_0x2be7f5[_0xd987('0x2b')]=_0x2be7f5['attributes'][_0xd987('0x22')]?_0x2be7f5[_0xd987('0x2b')]:_0x3bf80e[_0xd987('0x28')];if(!_0x807ec2[_0xd987('0x29')][_0xd987('0x2e')](_0xd987('0x2f'))){_0x2be7f5[_0xd987('0x13')]=qs[_0xd987('0x13')](_0x807ec2[_0xd987('0x29')]['limit']);_0x2be7f5[_0xd987('0x10')]=qs[_0xd987('0x10')](_0x807ec2['query'][_0xd987('0x10')]);}_0x2be7f5['order']=qs[_0xd987('0x31')](_0x807ec2[_0xd987('0x29')]['sort']);_0x2be7f5[_0xd987('0x55')]=qs['filters'](_[_0xd987('0x32')](_0x807ec2[_0xd987('0x29')],_0x3bf80e[_0xd987('0x2a')]));_0x2be7f5[_0xd987('0x55')][_0xd987('0xe0')]=_0x4ff50b['id'];if(_0x807ec2[_0xd987('0x29')][_0xd987('0x50')]){_0x2be7f5[_0xd987('0x55')]=_['merge'](_0x2be7f5['where'],{'$or':_['map'](_0x2be7f5[_0xd987('0x2b')],function(_0x42251d){var _0x5a6ae1={};_0x5a6ae1[_0x42251d]={'$like':'%'+_0x807ec2[_0xd987('0x29')][_0xd987('0x50')]+'%'};return _0x5a6ae1;})});}_0x2be7f5=_[_0xd987('0x74')]({},_0x2be7f5,_0x807ec2[_0xd987('0xca')]);return db[_0xd987('0xa8')]['count']({'where':_0x2be7f5[_0xd987('0x55')]})['then'](function(_0x81730){_0x1035af[_0xd987('0x12')]=_0x81730;if(_0x807ec2['query'][_0xd987('0xdd')]){_0x2be7f5[_0xd987('0xde')]=[{'all':!![]}];}return db[_0xd987('0xa8')][_0xd987('0x8c')](_0x2be7f5);})['then'](function(_0x2841a7){_0x1035af['rows']=_0x2841a7;return _0x1035af;});}})[_0xd987('0x17')](respondWithFilteredResult(_0x3aa329,_0x2be7f5))[_0xd987('0x82')](handleError(_0x3aa329,null));};exports['uploadCsv']=function(_0x5eafb9,_0x47cf5c){try{if(!_0x5eafb9[_0xd987('0x8b')][_0xd987('0x54')]){throw new Error(_0xd987('0xe4'));}if(!_0x5eafb9[_0xd987('0x8b')][_0xd987('0xe5')]){throw new Error(_0xd987('0xe6'));}if(!_0x5eafb9['body'][_0xd987('0xe7')]){throw new Error(_0xd987('0xe8'));}if(!_0x5eafb9[_0xd987('0x8b')][_0xd987('0xe9')]){throw new Error(_0xd987('0xea'));}var _0x22494f=_0x5eafb9[_0xd987('0x8b')][_0xd987('0xe5')]['split'](',');var _0xf1f077=_0x5eafb9['body'][_0xd987('0xe7')][_0xd987('0x45')](',');if(!_0x22494f[_0xd987('0x22')]||!_0xf1f077[_0xd987('0x22')]||_0x22494f[_0xd987('0x22')]!==_0xf1f077[_0xd987('0x22')]){throw new Error(_0xd987('0xeb'));}_0x5eafb9['body'][_0xd987('0x2d')]=_['zipObject'](_0x22494f,_0xf1f077);if(!_0x5eafb9[_0xd987('0x8b')][_0xd987('0x2d')][_0xd987('0xc7')]){throw new Error(_0xd987('0xec'));}if(!_0x5eafb9['body'][_0xd987('0x2d')]['firstName']){throw new Error(_0xd987('0xed'));}var _0x348559=path[_0xd987('0x8f')](config['root'],_0xd987('0xee'),_0x5eafb9[_0xd987('0xef')]['filename']);fs[_0xd987('0xf0')](_0x348559,parseInt(_0xd987('0xf1'),0x8));var _0x416511=require(_0xd987('0xf2'))[_0xd987('0xf3')](path[_0xd987('0x8f')](__dirname,_0xd987('0xf4')),[_0x348559,_0x5eafb9[_0xd987('0x8b')][_0xd987('0xe5')],_0x5eafb9[_0xd987('0x8b')]['binding_values'],_0x5eafb9[_0xd987('0x8b')][_0xd987('0x54')],_0x5eafb9[_0xd987('0x8b')]['CompanyId'],_0x5eafb9['body'][_0xd987('0xb2')],_0x5eafb9[_0xd987('0x8b')][_0xd987('0xe9')]]);return _0x47cf5c[_0xd987('0xf')](0xc8)[_0xd987('0x16')]({'message':'File\x20uploaded\x20correctly!','pid':_0x416511[_0xd987('0xf5')]});}catch(_0x4cac3e){return _0x47cf5c['status'](0x1f4)[_0xd987('0x1d')](_0x4cac3e);}};exports['upload']=function(_0x26218c,_0x15e073){var _0x25f4a9=fs[_0xd987('0xf6')](_0x26218c[_0xd987('0xef')][_0xd987('0x3')]);Papa[_0xd987('0xf7')](_0x25f4a9,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x580624){return _0x15e073[_0xd987('0xf')](0xc8)['json']({'file':_0x26218c[_0xd987('0xef')],'fields':_0x580624[_0xd987('0xf8')][_0xd987('0x2d')]});}});};exports[_0xd987('0xf9')]=function(_0x534874,_0x34ffcd){return db[_0xd987('0x48')][_0xd987('0x8c')]({'raw':!![],'attributes':['id'],'where':{'role':'agent'}})[_0xd987('0x17')](function(_0x5b073c){var _0x14b690=![];if(!_0x534874[_0xd987('0x8b')][_0xd987('0x54')]){throw new Error(_0xd987('0xe4'));}if(!_0x534874[_0xd987('0x8b')]['binding'][_0xd987('0xc7')]){throw new Error(_0xd987('0xec'));}if(!_0x534874['body'][_0xd987('0xfa')][_0xd987('0xfb')]){throw new Error(_0xd987('0xed'));}if(!_0x534874[_0xd987('0x8b')][_0xd987('0xe9')]){throw new Error(_0xd987('0xea'));}var _0x7ba66=require(_0xd987('0xf2'))[_0xd987('0xf3')](path[_0xd987('0x8f')](__dirname,'../../components/import/cm/csv2'),[_0x534874[_0xd987('0x81')]['id'],JSON[_0xd987('0xfc')](_0x534874[_0xd987('0x8b')]),JSON['stringify'](_0x5b073c)]);_0x7ba66['on']('message',function(){_0x14b690=!![];return _0x34ffcd['status'](0xc8)['json']({'message':_0xd987('0xfd'),'pid':_0x7ba66['pid']});});_0x7ba66['on'](_0xd987('0xfe'),function(_0x2fcb55){if(_0x2fcb55&&!_0x14b690){return _0x34ffcd[_0xd987('0xf')](0x1f4)[_0xd987('0x16')]({'message':_0xd987('0xff'),'pid':_0x7ba66[_0xd987('0xf5')]});}});})[_0xd987('0x82')](handleError(_0x34ffcd,null));};exports[_0xd987('0x100')]=function(_0x1f9fc7,_0x53353d,_0x17c9a5){return db[_0xd987('0x48')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0xd987('0x6d')}})[_0xd987('0x17')](function(_0x47f22c){var _0x12f59d=![];if(!_0x1f9fc7[_0xd987('0x8b')][_0xd987('0x54')]){throw new Error('No\x20ListId\x20specified');}if(!_0x1f9fc7[_0xd987('0x8b')][_0xd987('0xfa')][_0xd987('0xc7')]){throw new Error(_0xd987('0xec'));}if(!_0x1f9fc7[_0xd987('0x8b')][_0xd987('0xfa')][_0xd987('0xfb')]){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x1f9fc7[_0xd987('0x8b')][_0xd987('0xe9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x1336a5=require('child_process')[_0xd987('0xf3')](path[_0xd987('0x8f')](__dirname,'../../components/import/cm/csvUpdates'),[_0x1f9fc7[_0xd987('0x81')]['id'],JSON['stringify'](_0x1f9fc7['body']),JSON['stringify'](_0x47f22c)]);_0x1336a5['on'](_0xd987('0x101'),function(_0x45d7f0){_0x12f59d=!![];return _0x53353d['status'](0xc8)[_0xd987('0x16')]({'message':_0xd987('0xfd'),'pid':_0x1336a5[_0xd987('0xf5')]});});_0x1336a5['on']('exit',function(_0x1d5d1e){if(_0x1d5d1e&&!_0x12f59d){return _0x53353d[_0xd987('0xf')](0x1f4)[_0xd987('0x16')]({'message':_0xd987('0xff'),'pid':_0x1336a5['pid']});}});})[_0xd987('0x82')](handleError(_0x53353d,null));};exports[_0xd987('0x102')]=function(_0x4aa3ec,_0xd09c1d){var _0x4daa05=[_0xd987('0x103'),'chat',_0xd987('0x104'),'openchannel',_0xd987('0x105'),'whatsapp',_0xd987('0x106')];var _0x146c1b={'offset':0x0,'order':qs[_0xd987('0x31')]('-createdAt')},_0x31fbfc={'count':0x0,'rows':[]};Promise[_0xd987('0x6a')]()[_0xd987('0x17')](function(){if(_0x4aa3ec['query'][_0xd987('0x107')]){if(!_[_0xd987('0x108')](_0x4daa05,_0x4aa3ec['query'][_0xd987('0x107')][_0xd987('0x109')]())){throw new Error(_0xd987('0x10a'));}_0x4daa05=[_0x4aa3ec[_0xd987('0x29')][_0xd987('0x107')][_0xd987('0x109')]()];}if(_0x4aa3ec[_0xd987('0x29')][_0xd987('0x10b')]){try{var _0x4a3185=JSON['parse'](_0x4aa3ec[_0xd987('0x29')][_0xd987('0x10b')]);if(!moment(_0x4a3185[_0xd987('0x93')])['isValid']()){throw new Error(_0xd987('0x10c'));}if(!moment(_0x4a3185['to'])[_0xd987('0x10d')]()){throw new Error(_0xd987('0x10e'));}}catch(_0x822d11){throw new Error(_0xd987('0x10f'));}}if(!_0x4aa3ec[_0xd987('0x29')][_0xd987('0x2e')](_0xd987('0x2f'))){_0x146c1b[_0xd987('0x13')]=qs[_0xd987('0x13')](_0x4aa3ec[_0xd987('0x29')][_0xd987('0x13')]||0xa);_0x146c1b['offset']=qs['offset'](_0x4aa3ec[_0xd987('0x29')][_0xd987('0x10')]);}var _0x2c5690=_0x4daa05[_0xd987('0x46')](function(_0x19503c){if(_0x19503c===_0xd987('0x106')){var _0x3433d5={'attributes':['id','uniqueid',_0xd987('0x27'),_0xd987('0x110'),_0xd987('0x111'),_0xd987('0x112'),_0xd987('0x113'),_0xd987('0x114'),_0xd987('0x115'),'note',_0xd987('0x116'),_0xd987('0x117'),_0xd987('0x118'),_0xd987('0x119'),_0xd987('0x11a')],'where':{'ContactId':_0x4aa3ec['params']['id']},'include':[{'model':db[_0xd987('0x48')],'as':'User','attributes':['id',_0xd987('0x1c'),_0xd987('0x11b'),_0xd987('0x88')]}],'order':[[_0xd987('0x116'),_0xd987('0x67')]]};if(_0x4aa3ec[_0xd987('0x29')][_0xd987('0x10b')]){_0x3433d5[_0xd987('0x55')][_0xd987('0x116')]={'$gte':_0x4a3185[_0xd987('0x93')],'$lte':_0x4a3185['to']};}return db['VoiceCallReport'][_0xd987('0x11c')](_0x3433d5)[_0xd987('0x17')](function(_0x39a8b7){_0x31fbfc['count']+=_0x39a8b7[_0xd987('0x12')];return _[_0xd987('0x46')](_0x39a8b7[_0xd987('0xe1')],function(_0xd31df0){var _0x24a4b1=_0xd31df0[_0xd987('0x8d')]({'plain':!![]});_0x24a4b1[_0xd987('0x107')]=_0x19503c;if(_0x24a4b1[_0xd987('0x48')]){_0x24a4b1[_0xd987('0x48')]={'id':_0x24a4b1[_0xd987('0x48')]['id'],'name':_0x24a4b1[_0xd987('0x48')][_0xd987('0x1c')],'fullname':_0x24a4b1[_0xd987('0x48')][_0xd987('0x11b')],'alias':_0x24a4b1[_0xd987('0x48')]['alias']};}return _0x24a4b1;});});}else{var _0x2e0733=_[_0xd987('0x11d')](_0x19503c)+(_0x19503c===_0xd987('0x11e')?_0xd987('0x11f'):_0xd987('0x120'));var _0x5c0246={'attributes':['id',_0xd987('0x121'),_0xd987('0x122'),'createdAt','note',_0xd987('0x123'),'secondDisposition',_0xd987('0x124'),'UserId',_0x2e0733+'Id'],'where':{'ContactId':_0x4aa3ec[_0xd987('0x81')]['id']},'include':[{'model':db[_0x2e0733],'as':_0xd987('0x120'),'attributes':['id',_0xd987('0x1c'),_0xd987('0x125')]},{'model':db[_0xd987('0x48')],'as':_0xd987('0x126'),'attributes':['id',_0xd987('0x1c'),'fullname']},{'model':db[_0xd987('0x43')],'as':_0xd987('0x7d'),'attributes':['id','name','color'],'through':{'attributes':[]}}],'order':[['createdAt','DESC']]};if(_0x4aa3ec[_0xd987('0x29')][_0xd987('0x10b')]){_0x5c0246[_0xd987('0x55')][_0xd987('0x116')]={'$gte':_0x4a3185[_0xd987('0x93')],'$lte':_0x4a3185['to']};}switch(_0x19503c){case _0xd987('0x11e'):_0x5c0246['attributes'][_0xd987('0x7e')](_0xd987('0x127'),_0xd987('0x128'),_0xd987('0x129'),_0xd987('0x12a'),_0xd987('0x12b'),_0xd987('0x12c'),_0xd987('0x12d'),_0xd987('0x12e'),'referer');break;case'mail':_0x5c0246[_0xd987('0x2b')]['push'](_0xd987('0x12f'),'substatus');break;case _0xd987('0x130'):_0x5c0246[_0xd987('0x2b')][_0xd987('0x7e')]('externalUrl',_0xd987('0x131'));break;}return db[_[_0xd987('0x11d')](_0x19503c)+_0xd987('0x132')][_0xd987('0x11c')](_0x5c0246)[_0xd987('0x17')](function(_0x2e20cc){_0x31fbfc['count']+=_0x2e20cc['count'];return _[_0xd987('0x46')](_0x2e20cc[_0xd987('0xe1')],function(_0x5f2c64){var _0x4afd53=_0x5f2c64[_0xd987('0x8d')]({'plain':!![]});_0x4afd53[_0xd987('0x107')]=_0x19503c;if(_0x4afd53[_0xd987('0x126')]){_0x4afd53[_0xd987('0x126')]={'id':_0x4afd53[_0xd987('0x126')]['id'],'name':_0x4afd53['Owner'][_0xd987('0x1c')],'fullname':_0x4afd53[_0xd987('0x126')][_0xd987('0x11b')]};}return _0x4afd53;});});}});return Promise[_0xd987('0x25')](_0x2c5690);})[_0xd987('0x17')](function(_0x169d5e){return _(_0x169d5e)[_0xd987('0x133')]()[_0xd987('0x134')](_0xd987('0x116'))['reverse']()[_0xd987('0x44')]();})[_0xd987('0x17')](function(_0x40272c){_0x31fbfc[_0xd987('0xe1')]=_0x146c1b[_0xd987('0x13')]?_0x40272c[_0xd987('0x135')](_0x146c1b[_0xd987('0x10')],_0x146c1b[_0xd987('0x10')]+_0x146c1b[_0xd987('0x13')]):_0x40272c;return _0x31fbfc;})[_0xd987('0x17')](respondWithFilteredResult(_0xd09c1d,_0x146c1b))[_0xd987('0x82')](handleError(_0xd09c1d,null));};
\ No newline at end of file
+var _0x808b=['hopperId','getHoppers','ContactId','include','rows','getHopperHistories','includeAll','getHopperFinals','getJscriptySessions','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','socket_timestamp','root','file','filename','chmodSync','0777','child_process','../../components/import/cm/csv','CompanyId','upload','parse','meta','import','binding','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','fork','stringify','start\x20child\x20process\x20correctly!','pid','exit','error\x20child\x20process','message','getJourney','chat','sms','openchannel','fax','-createdAt','channel','includes','toLowerCase','Invalid\x20channel','range','isValid','Invalid\x20date\x20for\x20range\x20from\x20filter','Invalid\x20createdAt\x20filter','uniqueid','source','destination','callerid','starttime','endtime','note','userDisposition','userSecondDisposition','UserId','fullname','createdAt','findAndCountAll','Website','Account','closed','closedAt','disposition','secondDisposition','key','Owner','browserName','customerIp','customerPort','deviceModel','osName','ratingType','ratingValue','referer','substatus','externalUrl','threadId','flatten','sortBy','reverse','slice','moment','bluebird','util','path','lodash','squel','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/environment/shared','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','status','json','limit','undefined','count','offset','Content-Range','update','then','destroy','end','sendStatus','error','name','send','index','describe','keys','cf_','push','findOne','trimStart','all','length','type','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','field','color','from','tools_tags','left_join','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','c.deletedAt\x20IS\x20NULL','expr','search','sqlOperator','conditions','find','Tag','split','map','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','and','value','fieldType','text','start','filter','isNil','Contact','isEmpty','ListId','concat','\x20=\x20?','tag','isArray','replace','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','Sequelize','SELECT','clone','c.id','DESC','t.id\x20IN\x20?','resolve','user','role','agent','some','getLists','c.ListId\x20IS\x20NULL','c.ListId\x20IN\x20?','sequelize','toString','keyBy','CmContact','c.firstName','c.phone','c.mobile','c.fax','c.email','c.ListId','c.createdAt','c.deletedAt','c.CompanyId','TagIds','Tags','params','catch','tags','startsWith','columnName','displayName','alias','values','merge','body','findAll','get','mergeWith','join','info','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','create','ChatInteraction','ChatMessage','ChatOfflineMessage','MailMessage','MailInteraction','SmsInteraction','FaxInteraction','FaxMessage','OpenchannelInteraction','CmHopperFinal','CmHopperHistory','VoiceCallReport','ChatQueueReport','MailQueueReport','OpenchannelQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappQueueReport','dialTimezone','timezones','utcOffset','duplicates','$or','findOrCreate','additionalPhones','contact','show','CmContactHasItem','Phones','ContactItemType','literal','$and','omit','format','cf_%d','CmCustomField','pickBy','cm_contacts','phone','CmHopper','getTags','rawAttributes','options','setTags','ids','items','item_types','ItemTypeId','description','OrderBy','contact\x20phone\x20exists','PHONE','CmHopperAdditionalPhone','item','ItemType','CmHopperId','ItemType.OrderBy','bulkCreate','getAdditionalPhones','`ItemType`.OrderBy','toContactId','rescheduleAdditionalPhones'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x808b,0x183));var _0xb808=function(_0x14de19,_0x5e2ef6){_0x14de19=_0x14de19-0x0;var _0x102f9c=_0x808b[_0x14de19];return _0x102f9c;};'use strict';var moment=require(_0xb808('0x0'));var BPromise=require(_0xb808('0x1'));var util=require(_0xb808('0x2'));var path=require(_0xb808('0x3'));var fs=require('fs');var _=require(_0xb808('0x4'));var squel=require(_0xb808('0x5'));var Papa=require(_0xb808('0x6'));var Redis=require(_0xb808('0x7'));var qs=require(_0xb808('0x8'));var as=require(_0xb808('0x9'));var logger=require(_0xb808('0xa'))(_0xb808('0xb'));var config=require(_0xb808('0xc'));var shared=require(_0xb808('0xd'));var db=require(_0xb808('0xe'))['db'];config[_0xb808('0xf')]=_[_0xb808('0x10')](config[_0xb808('0xf')],{'host':_0xb808('0x11'),'port':0x18eb});var socket=require(_0xb808('0x12'))(new Redis(config['redis']));require(_0xb808('0x13'))['register'](socket);function respondWithResult(_0x106a2a,_0xc3796c){_0xc3796c=_0xc3796c||0xc8;return function(_0x14d69c){if(_0x14d69c){return _0x106a2a[_0xb808('0x14')](_0xc3796c)[_0xb808('0x15')](_0x14d69c);}};}function respondWithFilteredResult(_0xce954a,_0x3bc227){return function(_0x2783df){if(_0x2783df){var _0x213d9b=typeof _0x3bc227['offset']==='undefined'&&typeof _0x3bc227[_0xb808('0x16')]===_0xb808('0x17');var _0x2d73eb=_0x2783df[_0xb808('0x18')];var _0x42e326=_0x213d9b?0x0:_0x3bc227[_0xb808('0x19')];var _0x362878=_0x213d9b?_0x2783df[_0xb808('0x18')]:_0x3bc227[_0xb808('0x19')]+_0x3bc227[_0xb808('0x16')];var _0x4a4a67;if(_0x362878>=_0x2d73eb){_0x362878=_0x2d73eb;_0x4a4a67=0xc8;}else{_0x4a4a67=0xce;}_0xce954a[_0xb808('0x14')](_0x4a4a67);return _0xce954a['set'](_0xb808('0x1a'),_0x42e326+'-'+_0x362878+'/'+_0x2d73eb)[_0xb808('0x15')](_0x2783df);}return null;};}function saveUpdates(_0xd4a6f7){return function(_0x187a49){if(_0x187a49){return _0x187a49[_0xb808('0x1b')](_0xd4a6f7)[_0xb808('0x1c')](function(_0x3ec1c3){return _0x3ec1c3;});}return null;};}function removeEntity(_0x271517){return function(_0x2497f6){if(_0x2497f6){return _0x2497f6[_0xb808('0x1d')]()[_0xb808('0x1c')](function(){_0x271517[_0xb808('0x14')](0xcc)[_0xb808('0x1e')]();});}};}function handleEntityNotFound(_0x1af855){return function(_0x3c015c){if(!_0x3c015c){_0x1af855[_0xb808('0x1f')](0x194);}return _0x3c015c;};}function handleError(_0x4bbd4f,_0x38cda5){_0x38cda5=_0x38cda5||0x1f4;return function(_0x1c123f){logger[_0xb808('0x20')](_0x1c123f['stack']);if(_0x1c123f[_0xb808('0x21')]){delete _0x1c123f['name'];}_0x4bbd4f[_0xb808('0x14')](_0x38cda5)[_0xb808('0x22')](_0x1c123f);};}exports[_0xb808('0x23')]=function(_0x1154af,_0x13e796){var _0x3eb333={},_0x5377ae={},_0x4710ec={'count':0x0,'rows':[]};return db['CmContact'][_0xb808('0x24')]()[_0xb808('0x1c')](function(_0x239c25){var _0x41a068=[];for(var _0x21dedb=0x0;_0x21dedb<Object['keys'](_0x239c25)['length'];_0x21dedb++){var _0x22729f=Object[_0xb808('0x25')](_0x239c25)[_0x21dedb];if(_['startsWith'](_0x22729f,_0xb808('0x26'))){_0x41a068[_0xb808('0x27')](db['CmCustomField'][_0xb808('0x28')]({'where':{'id':_[_0xb808('0x29')](_0x22729f,'cf_')},'raw':!![]}));}}return BPromise[_0xb808('0x2a')](_0x41a068)[_0xb808('0x1c')](function(_0x20b8d8){for(var _0x5b8791=0x0;_0x5b8791<_0x20b8d8[_0xb808('0x2b')];_0x5b8791++){if(_0x20b8d8[_0x5b8791]){var _0x3d87ce=_0xb808('0x26')+_0x20b8d8[_0x5b8791]['id'];var _0x749942=_0x239c25[_0x3d87ce];_0x749942['fieldType']=_0x20b8d8[_0x5b8791][_0xb808('0x2c')];}}return _0x239c25;});})[_0xb808('0x1c')](function(_0x46cae8){_0x5377ae[_0xb808('0x2d')]=_[_0xb808('0x25')](_0x46cae8);_0x5377ae[_0xb808('0x2e')]=_[_0xb808('0x25')](_0x1154af[_0xb808('0x2e')]);_0x5377ae[_0xb808('0x2f')]=_[_0xb808('0x30')](_0x5377ae[_0xb808('0x2d')],_0x5377ae[_0xb808('0x2e')]);_0x3eb333[_0xb808('0x31')]=_[_0xb808('0x30')](_0x5377ae[_0xb808('0x2d')],qs[_0xb808('0x32')](_0x1154af[_0xb808('0x2e')][_0xb808('0x32')]));_0x3eb333['attributes']=_0x3eb333[_0xb808('0x31')][_0xb808('0x2b')]?_0x3eb333[_0xb808('0x31')]:_0x5377ae[_0xb808('0x2d')];if(!_0x1154af[_0xb808('0x2e')][_0xb808('0x33')](_0xb808('0x34'))){_0x3eb333[_0xb808('0x16')]=qs[_0xb808('0x16')](_0x1154af[_0xb808('0x2e')][_0xb808('0x16')]);_0x3eb333['offset']=qs[_0xb808('0x19')](_0x1154af[_0xb808('0x2e')]['offset']);}_0x3eb333[_0xb808('0x35')]=qs[_0xb808('0x36')](_0x1154af[_0xb808('0x2e')][_0xb808('0x36')]);_0x3eb333[_0xb808('0x37')]=qs[_0xb808('0x2f')](_[_0xb808('0x38')](_0x1154af[_0xb808('0x2e')],_0x5377ae[_0xb808('0x2f')]),_0x46cae8);var _0xeeff72=[];var _0x37d4a9=squel['select']()[_0xb808('0x39')]('id')['field'](_0xb808('0x21'))[_0xb808('0x39')](_0xb808('0x3a'))[_0xb808('0x3b')](_0xb808('0x3c'));var _0x4d8ec3=squel['select']()[_0xb808('0x3b')]('cm_contacts','c')[_0xb808('0x3d')]('cm_user_has_contacts','uc','uc.CmContactId\x20=\x20c.id')['left_join'](_0xb808('0x3e'),'ct',_0xb808('0x3f'))[_0xb808('0x3d')](_0xb808('0x3c'),'t','t.id\x20=\x20ct.TagId')[_0xb808('0x37')](_0xb808('0x40'));var _0x178dba=squel[_0xb808('0x41')]();var _0x17f526=[];var _0x14e6d4=squel[_0xb808('0x41')]();var _0x5eddc6;if(_0x1154af[_0xb808('0x2e')]['search']){_0x5eddc6=as['parseSearch'](_0x1154af[_0xb808('0x2e')][_0xb808('0x42')]);var _0x2b5633=_0x5eddc6[_0xb808('0x43')];for(var _0x30280f=0x0;_0x30280f<_0x5eddc6[_0xb808('0x44')][_0xb808('0x2b')];_0x30280f++){var _0x4c047c=_0x5eddc6[_0xb808('0x44')][_0x30280f];var _0x2139c8='c';var _0x307454=_(_0x46cae8)[_0xb808('0x25')]()[_0xb808('0x45')](function(_0x135e4d){return _0x135e4d===_0x4c047c[_0xb808('0x39')];});if(_0x307454)_0x307454=_0x46cae8[_0x4c047c['field']];if(!_0x307454){if(_0x4c047c[_0xb808('0x39')]===_0xb808('0x46')){var _0x1dac4b=_0x4c047c['value'][_0xb808('0x47')](',')[_0xb808('0x48')](function(_0x37360b){return Number(_0x37360b);});_0x1dac4b[_0xb808('0x49')](function(_0x13b342){_0x14e6d4['or'](_0xb808('0x4a'),'%,'+_0x13b342+',%');});_0x17f526=_[_0xb808('0x4b')](_0x17f526,_0x1dac4b);}else if(_0x4c047c[_0xb808('0x39')]===_0xb808('0x4c')){_0x178dba[_0xb808('0x4d')]('uc.UserId\x20=\x20?',_0x4c047c[_0xb808('0x4e')]);}}else{if(_0x4c047c['field']==='dateOfBirth'||_0x307454[_0xb808('0x4f')]==='datetime')_0x4c047c['castTo']='DATE';var _0x196af8=as['buildExpression'](_0x2139c8,_0x307454[_0xb808('0x2c')],_0x4c047c);_0x178dba[_0x2b5633](_0x196af8[_0xb808('0x50')],_0x196af8[_0xb808('0x4e')][_0xb808('0x51')],_0x196af8['value']['end']);}}}else{var _0x33bcbf=_(Object[_0xb808('0x25')](_0x1154af['query']))[_0xb808('0x48')](function(_0x5607e4){return _0x46cae8['hasOwnProperty'](_0x5607e4)?_0x5607e4:undefined;})[_0xb808('0x52')](function(_0x5434de){return!_[_0xb808('0x53')](_0x5434de);})['value']();if(_0x1154af['query'][_0xb808('0x54')])_0x33bcbf['push'](_0xb808('0x54'));if(!_[_0xb808('0x55')](_0x33bcbf)){_0x33bcbf[_0xb808('0x49')](function(_0x10d3f8){if(_0x10d3f8===_0xb808('0x56')){_0x4d8ec3[_0xb808('0x37')]('c.ListId\x20IN\x20?',[][_0xb808('0x57')](_0x1154af['query'][_0x10d3f8]));}else if(_0x10d3f8===_0xb808('0x54')){var _0x3787a4='%'+_0x1154af[_0xb808('0x2e')][_0x10d3f8]+'%';_0x4d8ec3[_0xb808('0x37')]('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x3787a4);}else{_0x4d8ec3[_0xb808('0x37')]('c.'+_0x10d3f8+_0xb808('0x58'),_0x1154af[_0xb808('0x2e')][_0x10d3f8]);}});}if(_0x1154af['query'][_0xb808('0x59')]){_0x17f526=_[_0xb808('0x5a')](_0x1154af[_0xb808('0x2e')]['tag'])?_0x1154af[_0xb808('0x2e')]['tag']:new Array(_0x1154af[_0xb808('0x2e')][_0xb808('0x59')]);_0x17f526[_0xb808('0x49')](function(_0x2692ca){_0x14e6d4['or'](_0xb808('0x4a'),'%,'+_0x2692ca+',%');});}if(_0x1154af['query']['filter']){var _0x1cc714=_0x1154af[_0xb808('0x2e')][_0xb808('0x52')][_0xb808('0x5b')]('\x5c','\x5c\x5c')[_0xb808('0x5b')](/'/g,'\x27\x27');if(_0x1cc714[_0xb808('0x47')]('\x20')[_0xb808('0x2b')]>0x1){_0x178dba['or'](_0xb808('0x5c'),qs[_0xb808('0x5d')](_0x1cc714),null);}else{if(qs[_0xb808('0x5e')](_0x1cc714)){_0x178dba['or'](_0xb808('0x5f'),_0x1cc714+'%');_0x178dba['or']('c.phone\x20LIKE\x20?',_0x1cc714+'%');_0x178dba['or'](_0xb808('0x60'),_0x1cc714+'%');_0x178dba['or']('c.fax\x20LIKE\x20?',_0x1cc714+'%');}else if(qs['isEmail'](_0x1cc714)){_0x178dba['or'](_0xb808('0x61'),_0x1cc714+'%');}else{_0x178dba['or'](_0xb808('0x62'),'%'+_0x1cc714+'%');_0x178dba['or'](_0xb808('0x63'),'%'+_0x1cc714+'%');_0x178dba['or']('c.email\x20LIKE\x20?','%'+_0x1cc714+'%');}}}}_0x4d8ec3[_0xb808('0x37')](_0x178dba);_0x4d8ec3['group']('c.id');var _0x553c14={'type':db[_0xb808('0x64')]['QueryTypes'][_0xb808('0x65')],'raw':!![]};var _0x31d545=_0x4d8ec3[_0xb808('0x66')]()[_0xb808('0x39')](_0xb808('0x67'));if(_0x3eb333[_0xb808('0x35')]){_0x3eb333[_0xb808('0x35')][_0xb808('0x49')](function(_0x31d126){_0x4d8ec3[_0xb808('0x35')]('c.'+_0x31d126[0x0],_0x31d126[0x1]===_0xb808('0x68')?![]:!![]);});}if(!_[_0xb808('0x55')](_0x17f526)){_0x4d8ec3['having'](_0x14e6d4);_0x31d545[_0xb808('0x37')](_0xb808('0x69'),_0x17f526);}BPromise[_0xb808('0x6a')]()[_0xb808('0x1c')](function(){if(!_0x5eddc6)return;if(_0x1154af[_0xb808('0x6b')][_0xb808('0x6c')]!==_0xb808('0x6d'))return;if(!_[_0xb808('0x6e')](_0x5eddc6[_0xb808('0x44')],['field',_0xb808('0x4c')])){return _0x1154af[_0xb808('0x6b')][_0xb808('0x6f')]({'attributes':['id'],'raw':!![]})['then'](function(_0x9f7291){if(_[_0xb808('0x55')](_0x9f7291)){_0x31d545['where'](_0xb808('0x70'));_0x4d8ec3[_0xb808('0x37')](_0xb808('0x70'));}else{_0x31d545[_0xb808('0x37')](_0xb808('0x71'),_[_0xb808('0x48')](_0x9f7291,'id'));_0x4d8ec3['where']('c.ListId\x20IN\x20?',_['map'](_0x9f7291,'id'));}});}})[_0xb808('0x1c')](function(){if(_0x1154af['user']['role']===_0xb808('0x6d')&&!_0x5eddc6&&!_0x1154af[_0xb808('0x2e')][_0xb808('0x56')])return[];return db[_0xb808('0x72')]['query'](_0x31d545[_0xb808('0x73')](),_0x553c14);})[_0xb808('0x1c')](function(_0x454a1f){_0x4710ec[_0xb808('0x18')]=_0x454a1f[_0xb808('0x2b')];if(_0x4710ec['count']===0x0)return[];return db[_0xb808('0x72')][_0xb808('0x2e')](_0x37d4a9[_0xb808('0x73')](),_0x553c14)[_0xb808('0x1c')](function(_0x481182){_0xeeff72=_[_0xb808('0x74')](_0x481182,'id');_0x553c14=_['merge'](_0x553c14,{'model':db[_0xb808('0x75')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1154af[_0xb808('0x2e')][_0xb808('0x32')]){_0x3eb333[_0xb808('0x31')]['forEach'](function(_0x1a5d71){_0x4d8ec3[_0xb808('0x39')]('c.'+_0x1a5d71);});}else{_0x4d8ec3[_0xb808('0x39')]('c.id');_0x4d8ec3['field'](_0xb808('0x76'));_0x4d8ec3[_0xb808('0x39')]('c.lastName');_0x4d8ec3[_0xb808('0x39')](_0xb808('0x77'));_0x4d8ec3[_0xb808('0x39')](_0xb808('0x78'));_0x4d8ec3[_0xb808('0x39')](_0xb808('0x79'));_0x4d8ec3[_0xb808('0x39')](_0xb808('0x7a'));_0x4d8ec3['field'](_0xb808('0x7b'));_0x4d8ec3[_0xb808('0x39')](_0xb808('0x7c'));_0x4d8ec3[_0xb808('0x39')](_0xb808('0x7d'));_0x4d8ec3[_0xb808('0x39')](_0xb808('0x7e'));_0x4d8ec3[_0xb808('0x39')]('GROUP_CONCAT(DISTINCT\x20t.id)','TagIds');}if(_0x3eb333[_0xb808('0x16')])_0x4d8ec3[_0xb808('0x16')](_0x3eb333[_0xb808('0x16')]);if(_0x3eb333[_0xb808('0x19')])_0x4d8ec3['offset'](_0x3eb333['offset']);return db[_0xb808('0x72')]['query'](_0x4d8ec3[_0xb808('0x73')](),_0x553c14);});})['then'](function(_0x9a88cb){_0x9a88cb[_0xb808('0x49')](function(_0x1f2e90){if(_0x1f2e90[_0xb808('0x7f')]){_0x1f2e90[_0xb808('0x80')]=[];_0x1f2e90['TagIds'][_0xb808('0x47')](',')[_0xb808('0x49')](function(_0x19d7cf){_0x1f2e90[_0xb808('0x80')][_0xb808('0x27')](_0xeeff72[_0x19d7cf]);});}delete _0x1f2e90[_0xb808('0x7f')];});_0x4710ec['rows']=_0x9a88cb;return _0x4710ec;})[_0xb808('0x1c')](respondWithFilteredResult(_0x13e796,_0x3eb333));})['catch'](handleError(_0x13e796,null));};exports[_0xb808('0x1d')]=function(_0x3166f3,_0x47ecf9){return db[_0xb808('0x75')][_0xb808('0x45')]({'where':{'id':_0x3166f3[_0xb808('0x81')]['id']}})[_0xb808('0x1c')](handleEntityNotFound(_0x47ecf9,null))[_0xb808('0x1c')](removeEntity(_0x47ecf9,null))[_0xb808('0x82')](handleError(_0x47ecf9,null));};exports['describe']=function(_0x4afece,_0x297ed9){return db['CmContact']['describe']()['then'](function(_0x54bc1c){delete _0x54bc1c[_0xb808('0x83')];for(var _0x25d946=0x0;_0x25d946<Object[_0xb808('0x25')](_0x54bc1c)[_0xb808('0x2b')];_0x25d946++){var _0x276465=Object[_0xb808('0x25')](_0x54bc1c)[_0x25d946];if(!_[_0xb808('0x84')](_0x276465,'cf_')){_0x54bc1c[_0x276465][_0xb808('0x85')]=_0x276465;_0x54bc1c[_0x276465][_0xb808('0x86')]=_0x276465;}}return _0x54bc1c;})['then'](function(_0x9e916){var _0x2d7cfc={'where':Boolean(_0x4afece['query']['analytics'])===!![]?undefined:{'$or':[{'ListId':_0x4afece[_0xb808('0x2e')]['id']},{'ListId':null}]},'raw':!![]};return db['CmCustomField']['findAll'](_0x2d7cfc)[_0xb808('0x1c')](function(_0x14b997){for(var _0x391eea=0x0;_0x391eea<_0x14b997[_0xb808('0x2b')];_0x391eea++){var _0x4d5bc7='cf_'+_0x14b997[_0x391eea]['id'];_0x9e916[_0x4d5bc7]['columnName']=_0x4d5bc7;_0x9e916[_0x4d5bc7][_0xb808('0x86')]=_0x14b997[_0x391eea][_0xb808('0x87')];_0x9e916[_0x4d5bc7]['custom']={'type':_0x14b997[_0x391eea][_0xb808('0x2c')],'values':_0x14b997[_0x391eea][_0xb808('0x88')]};}Object[_0xb808('0x25')](_0x9e916)[_0xb808('0x49')](function(_0x142273){if(!_0x9e916[_0x142273]['hasOwnProperty'](_0xb808('0x85'))){delete _0x9e916[_0x142273];}});return _0x9e916;});})['then'](respondWithResult(_0x297ed9,null))[_0xb808('0x82')](handleError(_0x297ed9,null));};exports[_0xb808('0x89')]=function(_0x4dc3d9,_0x4914ba){var _0x375fd5;var _0x75767d;var _0x17d005;if(_0x4dc3d9[_0xb808('0x8a')]['id']){delete _0x4dc3d9[_0xb808('0x8a')]['id'];}return db[_0xb808('0x75')][_0xb808('0x8b')]({'where':{'id':[_0x4dc3d9['body']['to'],_0x4dc3d9[_0xb808('0x8a')][_0xb808('0x3b')]]}})['then'](function(_0xe7c4d7){if(_0xe7c4d7){if(_0xe7c4d7['length']!==0x2){return null;}_0xe7c4d7[0x0]=_0xe7c4d7[0x0][_0xb808('0x8c')]({'plain':!![]});_0xe7c4d7[0x1]=_0xe7c4d7[0x1][_0xb808('0x8c')]({'plain':!![]});delete _0xe7c4d7[0x0]['id'];delete _0xe7c4d7[0x1]['id'];return _[_0xb808('0x8d')](_0xe7c4d7[0x0],_0xe7c4d7[0x1],function(_0x377626,_0x3638a9){if(Array['isArray'](_0x3638a9)&&!_0x3638a9[_0xb808('0x2b')]){return _0x377626;}else if(!_0x3638a9){return _0x377626;}});}})[_0xb808('0x1c')](handleEntityNotFound(_0x4914ba,null))[_0xb808('0x1c')](function(_0x4f4f38){if(_0x4f4f38){if(_0x4f4f38[_0xb808('0x83')]&&_[_0xb808('0x5a')](_0x4f4f38[_0xb808('0x83')])){_0x4f4f38['tags']=_0x4f4f38[_0xb808('0x83')][_0xb808('0x8e')]();}logger[_0xb808('0x8f')]('[CmContact][merge]\x20to\x20%s\x20from\x20%s',_0x4dc3d9[_0xb808('0x8a')]['to'],_0x4dc3d9[_0xb808('0x8a')][_0xb808('0x3b')]);return db['CmHopper']['destroy']({'where':{'ContactId':[_0x4dc3d9['body']['to'],_0x4dc3d9[_0xb808('0x8a')][_0xb808('0x3b')]]}})['then'](function(_0x1bfb56){logger[_0xb808('0x8f')](_0xb808('0x90'),_0x1bfb56);return db[_0xb808('0x91')]['destroy']({'where':{'ContactId':[_0x4dc3d9[_0xb808('0x8a')]['to'],_0x4dc3d9['body']['from']]}})[_0xb808('0x1c')](function(_0x117aa1){logger[_0xb808('0x8f')]('[CmContact][merge][destroy][CmHopperBlack],\x20%s',_0x117aa1);return db[_0xb808('0x75')][_0xb808('0x92')](_0x4f4f38);});});}})[_0xb808('0x1c')](function(_0x80786f){if(_0x80786f){_0x375fd5=_0x80786f;_0x75767d={'ContactId':_0x375fd5['id']};_0x17d005={'where':{'ContactId':[_0x4dc3d9['body']['to'],_0x4dc3d9['body'][_0xb808('0x3b')]]}};return db[_0xb808('0x93')]['update'](_0x75767d,_0x17d005);}})['then'](function(){if(_0x375fd5){return db[_0xb808('0x94')][_0xb808('0x1b')](_0x75767d,_0x17d005);}})[_0xb808('0x1c')](function(){if(_0x375fd5){return db[_0xb808('0x95')]['update'](_0x75767d,_0x17d005);}})[_0xb808('0x1c')](function(){if(_0x375fd5){return db['MailInteraction'][_0xb808('0x1b')](_0x75767d,_0x17d005);}})[_0xb808('0x1c')](function(){if(_0x375fd5){return db[_0xb808('0x96')]['update'](_0x75767d,_0x17d005);}})['then'](function(){if(_0x375fd5){return db[_0xb808('0x97')][_0xb808('0x1b')](_0x75767d,_0x17d005);}})[_0xb808('0x1c')](function(){if(_0x375fd5){return db[_0xb808('0x96')][_0xb808('0x1b')](_0x75767d,_0x17d005);}})[_0xb808('0x1c')](function(){if(_0x375fd5){return db[_0xb808('0x98')][_0xb808('0x1b')](_0x75767d,_0x17d005);}})[_0xb808('0x1c')](function(){if(_0x375fd5){return db['SmsMessage'][_0xb808('0x1b')](_0x75767d,_0x17d005);}})[_0xb808('0x1c')](function(){if(_0x375fd5){return db[_0xb808('0x99')][_0xb808('0x1b')](_0x75767d,_0x17d005);}})[_0xb808('0x1c')](function(){if(_0x375fd5){return db[_0xb808('0x9a')][_0xb808('0x1b')](_0x75767d,_0x17d005);}})['then'](function(){if(_0x375fd5){return db[_0xb808('0x9b')][_0xb808('0x1b')](_0x75767d,_0x17d005);}})[_0xb808('0x1c')](function(){if(_0x375fd5){return db['OpenchannelMessage'][_0xb808('0x1b')](_0x75767d,_0x17d005);}})[_0xb808('0x1c')](function(){if(_0x375fd5){return db['CmContactHasItem'][_0xb808('0x1b')]({'CmContactId':_0x375fd5['id']},{'where':{'CmContactId':[_0x4dc3d9['body']['to'],_0x4dc3d9[_0xb808('0x8a')][_0xb808('0x3b')]]}});}})['then'](function(){if(_0x375fd5){return db[_0xb808('0x9c')][_0xb808('0x1b')](_0x75767d,_0x17d005);}})[_0xb808('0x1c')](function(){if(_0x375fd5){return db[_0xb808('0x9d')][_0xb808('0x1b')](_0x75767d,_0x17d005);}})[_0xb808('0x1c')](function(){if(_0x375fd5){return db['ReportAgentPreview']['update'](_0x75767d,_0x17d005);}})[_0xb808('0x1c')](function(){if(_0x375fd5){return db[_0xb808('0x9e')][_0xb808('0x1b')](_0x75767d,_0x17d005);}})[_0xb808('0x1c')](function(){if(_0x375fd5){return db[_0xb808('0x9f')][_0xb808('0x1b')](_0x75767d,_0x17d005);}})[_0xb808('0x1c')](function(){if(_0x375fd5){return db['FaxQueueReport']['update'](_0x75767d,_0x17d005);}})[_0xb808('0x1c')](function(){if(_0x375fd5){return db[_0xb808('0xa0')][_0xb808('0x1b')](_0x75767d,_0x17d005);}})[_0xb808('0x1c')](function(){if(_0x375fd5){return db[_0xb808('0xa1')][_0xb808('0x1b')](_0x75767d,_0x17d005);}})[_0xb808('0x1c')](function(){if(_0x375fd5){return db['SmsQueueReport'][_0xb808('0x1b')](_0x75767d,_0x17d005);}})[_0xb808('0x1c')](function(){if(_0x375fd5){return db[_0xb808('0xa2')][_0xb808('0x1b')](_0x75767d,_0x17d005);}})['then'](function(){if(_0x375fd5){return db[_0xb808('0xa3')][_0xb808('0x1b')](_0x75767d,_0x17d005);}})[_0xb808('0x1c')](function(){if(_0x375fd5){return db['WhatsappMessage'][_0xb808('0x1b')](_0x75767d,_0x17d005);}})['then'](function(){if(_0x375fd5){return db[_0xb808('0xa4')]['update'](_0x75767d,_0x17d005);}})[_0xb808('0x1c')](function(){if(_0x375fd5){return db[_0xb808('0x75')][_0xb808('0x1d')]({'where':{'id':[_0x4dc3d9[_0xb808('0x8a')]['to'],_0x4dc3d9['body'][_0xb808('0x3b')]]}});}})[_0xb808('0x1c')](function(){if(_0x375fd5){return _0x375fd5;}})[_0xb808('0x1c')](respondWithResult(_0x4914ba,null))[_0xb808('0x82')](handleError(_0x4914ba,null));};exports[_0xb808('0x92')]=function(_0x1be824,_0x43c101){return db[_0xb808('0x75')][_0xb808('0x24')]()[_0xb808('0x1c')](function(_0x47c763){if(_0x1be824[_0xb808('0x8a')][_0xb808('0x83')]&&_[_0xb808('0x5a')](_0x1be824['body'][_0xb808('0x83')])){if(_0x1be824[_0xb808('0x8a')][_0xb808('0x83')][_0xb808('0x2b')]){_0x1be824[_0xb808('0x8a')][_0xb808('0x83')]=_0x1be824[_0xb808('0x8a')][_0xb808('0x83')]['join'](';')+';';}else{_0x1be824[_0xb808('0x8a')][_0xb808('0x83')]=null;}}else{_0x1be824['body'][_0xb808('0x83')]=null;}if(!_[_0xb808('0x53')](_0x1be824[_0xb808('0x8a')][_0xb808('0xa5')])){var _0x2c5e18=_0x1be824[_0xb808('0x8a')][_0xb808('0xa5')];if(!_[_0xb808('0x53')](shared[_0xb808('0xa6')][_0x2c5e18]))_0x1be824[_0xb808('0x8a')]['utcOffset']=shared[_0xb808('0xa6')][_0x2c5e18][_0xb808('0xa7')];}return db['CmContact']['create'](_0x1be824[_0xb808('0x8a')],{'fields':_[_0xb808('0x25')](_0x47c763),'raw':!![]});})[_0xb808('0x1c')](function(_0x51ebf1){if(_0x1be824['body']['additionalPhones']){return insertAdditionalPhones(_0x51ebf1,_0x1be824[_0xb808('0x8a')]['additionalPhones']);}else{return _0x51ebf1;}})[_0xb808('0x1c')](respondWithResult(_0x43c101,0xc9))['catch'](handleError(_0x43c101,null));};exports['bulkCreate']=function(_0x5ac92f,_0x341b2c){var _0x13bc02=0x0;var _0xeac06a=0x0;var _0x1c8101=0x0;var _0x3ea5f0=[];return db['CmContact'][_0xb808('0x24')]()[_0xb808('0x1c')](function(_0x19a418){return BPromise['each'](_0x5ac92f[_0xb808('0x8a')],function(_0x4e9841){var _0x58764c={'where':{'$or':[]},'defaults':_0x4e9841,'fields':_[_0xb808('0x25')](_0x19a418),'raw':!![]};if(_0x4e9841[_0xb808('0xa8')]){for(var _0x5a108d=0x0;_0x5a108d<_0x4e9841[_0xb808('0xa8')][_0xb808('0x2b')];_0x5a108d++){var _0x2a6d26={};_0x2a6d26[_0x4e9841[_0xb808('0xa8')][_0x5a108d]]=_0x4e9841[_0x4e9841[_0xb808('0xa8')][_0x5a108d]];_0x58764c[_0xb808('0x37')][_0xb808('0xa9')][_0xb808('0x27')](_0x2a6d26);}_0x58764c[_0xb808('0x37')][_0xb808('0x56')]=_0x4e9841[_0xb808('0x56')];}return db['CmContact'][_0xb808('0xaa')](_0x58764c)['spread'](function(_0x561a59,_0x39c7f2){if(_0x39c7f2){if(_0x4e9841[_0xb808('0x33')](_0xb808('0xab'))){_0x3ea5f0[_0xb808('0x27')]({'contact':_0x561a59,'additionalPhones':_0x4e9841[_0xb808('0xab')]});}_0x13bc02++;}else{_0x1c8101++;}})[_0xb808('0x82')](function(){_0xeac06a++;});});})[_0xb808('0x1c')](function(_0x12c42a){if(_0x12c42a){if(_0x3ea5f0[_0xb808('0x2b')]>0x0){return new Promise(function(_0x1d9f6f,_0x349725){var _0x1d22ad=[];for(var _0x1f9811=0x0;_0x1f9811<_0x3ea5f0[_0xb808('0x2b')];_0x1f9811++){_0x1d22ad[_0xb808('0x27')](insertAdditionalPhones(_0x3ea5f0[_0x1f9811][_0xb808('0xac')],_0x3ea5f0[_0x1f9811][_0xb808('0xab')]));}Promise[_0xb808('0x2a')](_0x1d22ad)[_0xb808('0x1c')](function(){_0x1d9f6f(0x1);});})['then'](function(){return{'success':_0x13bc02,'failure':_0xeac06a,'duplicates':_0x1c8101};});}else{return{'success':_0x13bc02,'failure':_0xeac06a,'duplicates':_0x1c8101};}}})['then'](respondWithResult(_0x341b2c,0xc9))[_0xb808('0x82')](handleError(_0x341b2c,null));};exports[_0xb808('0xad')]=function(_0x579d07,_0x393f91){var _0x3c7c9c;return db[_0xb808('0x75')]['describe']()['then'](function(_0x307632){return db[_0xb808('0x75')]['find']({'where':{'id':_0x579d07['params']['id']},'include':[{'model':db[_0xb808('0x46')],'as':_0xb808('0x80'),'attributes':['id','name',_0xb808('0x3a')],'required':_0x579d07[_0xb808('0x2e')][_0xb808('0x59')]?!![]:![]},{'model':db[_0xb808('0xae')],'as':_0xb808('0xaf'),'where':{'CmContactId':_0x579d07[_0xb808('0x81')]['id']},'required':![],'include':[{'model':db[_0xb808('0xb0')],'as':'ItemType'}]}],'order':[db[_0xb808('0x72')][_0xb808('0xb1')]('Phones.OrderBy')],'attributes':_[_0xb808('0x25')](_0x307632)});})['then'](function(_0x3ee069){if(!_['isNil'](_0x3ee069)){_0x3c7c9c=_0x3ee069['get']({'plain':!![]});var _0x356f87={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x3ee069&&_0x3ee069[_0xb808('0x56')]){if(_0x3ee069[_0xb808('0x56')]){_0x356f87[_0xb808('0x37')][_0xb808('0xb2')][_0xb808('0x27')]({'ListId':{'$ne':_0x3ee069[_0xb808('0x56')]}});}}return db['CmCustomField']['findAll'](_0x356f87);}})[_0xb808('0x1c')](function(_0x113de8){if(!_[_0xb808('0x53')](_0x113de8)){return _[_0xb808('0xb3')](_0x3c7c9c,_['map'](_0x113de8,function(_0x5ec216){return util[_0xb808('0xb4')](_0xb808('0xb5'),_0x5ec216['id']);}));}})['then'](handleEntityNotFound(_0x393f91,null))[_0xb808('0x1c')](respondWithResult(_0x393f91,null))[_0xb808('0x82')](handleError(_0x393f91,null));};exports[_0xb808('0x1b')]=function(_0x1a7d04,_0x56c39b){var _0x2adc7b;if(_0x1a7d04[_0xb808('0x8a')]['id']){delete _0x1a7d04['body']['id'];}if(!_[_0xb808('0x53')](_0x1a7d04[_0xb808('0x8a')]['dialTimezone'])){var _0x4043c6=_0x1a7d04[_0xb808('0x8a')][_0xb808('0xa5')];if(!_[_0xb808('0x53')](shared[_0xb808('0xa6')][_0x4043c6]))_0x1a7d04[_0xb808('0x8a')][_0xb808('0xa7')]=shared['timezones'][_0x4043c6]['utcOffset'];}return db[_0xb808('0x75')][_0xb808('0x45')]({'where':{'id':_0x1a7d04[_0xb808('0x81')]['id']}})[_0xb808('0x1c')](handleEntityNotFound(_0x56c39b,null))[_0xb808('0x1c')](saveUpdates(_0x1a7d04['body'],null))[_0xb808('0x1c')](function(_0x43297b){_0x2adc7b=_0x43297b;var _0x5881e4={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x43297b&&_0x43297b[_0xb808('0x56')]){if(_0x43297b[_0xb808('0x56')]){_0x5881e4[_0xb808('0x37')][_0xb808('0xb2')][_0xb808('0x27')]({'ListId':{'$ne':_0x43297b['ListId']}});}}return db[_0xb808('0xb6')]['findAll'](_0x5881e4);})[_0xb808('0x1c')](function(_0x1c2997){if(_0x1c2997){return _[_0xb808('0xb3')](_[_0xb808('0xb7')](_0x1a7d04[_0xb808('0x8a')],function(_0x50ded3,_0x2dfad8){return _[_0xb808('0x84')](_0x2dfad8,_0xb808('0x26'));}),_[_0xb808('0x48')](_0x1c2997,function(_0xee0a05){return util[_0xb808('0xb4')](_0xb808('0xb5'),_0xee0a05['id']);}));}})[_0xb808('0x1c')](function(_0x56b1fa){if(_0x56b1fa&&!_[_0xb808('0x55')](_0x56b1fa)){var _0x3ccbe9=squel[_0xb808('0x1b')]()['table'](_0xb808('0xb8'))['setFields'](_0x56b1fa)[_0xb808('0x37')]('id\x20=\x20?',_0x1a7d04[_0xb808('0x81')]['id'])['toParam']();return db[_0xb808('0x72')][_0xb808('0x2e')](_0x3ccbe9[_0xb808('0x50')],{'replacements':_0x3ccbe9[_0xb808('0x88')]});}})[_0xb808('0x1c')](function(){if(_0x1a7d04['body'][_0xb808('0xb9')]&&_0x2adc7b){return db[_0xb808('0xba')][_0xb808('0x1b')]({'phone':_0x1a7d04[_0xb808('0x8a')][_0xb808('0xb9')],'OrderBy':0x0},{'where':{'ContactId':_0x2adc7b['id']}});}})[_0xb808('0x1c')](function(){return _0x2adc7b;})[_0xb808('0x1c')](respondWithResult(_0x56c39b,null))[_0xb808('0x82')](handleError(_0x56c39b,null));};exports[_0xb808('0xbb')]=function(_0x1b8a5b,_0x19c5f1){var _0x42b856={};var _0x167861={};var _0x59be62;var _0x281a9b;return db['CmContact']['findOne']({'where':{'id':_0x1b8a5b[_0xb808('0x81')]['id']}})['then'](handleEntityNotFound(_0x19c5f1,null))['then'](function(_0x12677e){if(_0x12677e){_0x59be62=_0x12677e;_0x167861[_0xb808('0x2d')]=_[_0xb808('0x25')](db[_0xb808('0x46')][_0xb808('0xbc')]);_0x167861[_0xb808('0x2e')]=_[_0xb808('0x25')](_0x1b8a5b[_0xb808('0x2e')]);_0x167861[_0xb808('0x2f')]=_[_0xb808('0x30')](_0x167861['model'],_0x167861['query']);_0x42b856['attributes']=_[_0xb808('0x30')](_0x167861['model'],qs['fields'](_0x1b8a5b[_0xb808('0x2e')]['fields']));_0x42b856[_0xb808('0x31')]=_0x42b856['attributes']['length']?_0x42b856[_0xb808('0x31')]:_0x167861[_0xb808('0x2d')];_0x42b856[_0xb808('0x35')]=qs['sort'](_0x1b8a5b[_0xb808('0x2e')][_0xb808('0x36')]);_0x42b856[_0xb808('0x37')]=qs['filters'](_[_0xb808('0x38')](_0x1b8a5b['query'],_0x167861[_0xb808('0x2f')]));if(_0x1b8a5b['query'][_0xb808('0x52')]){_0x42b856[_0xb808('0x37')]=_[_0xb808('0x89')](_0x42b856[_0xb808('0x37')],{'$or':_[_0xb808('0x48')](_0x42b856[_0xb808('0x31')],function(_0x3c4c21){var _0x564471={};_0x564471[_0x3c4c21]={'$like':'%'+_0x1b8a5b[_0xb808('0x2e')][_0xb808('0x52')]+'%'};return _0x564471;})});}_0x42b856=_['merge']({},_0x42b856,_0x1b8a5b[_0xb808('0xbd')]);return _0x59be62[_0xb808('0xbb')](_0x42b856);}})[_0xb808('0x1c')](function(_0x1d36d6){if(_0x1d36d6){_0x281a9b=_0x1d36d6[_0xb808('0x2b')];if(!_0x1b8a5b[_0xb808('0x2e')][_0xb808('0x33')](_0xb808('0x34'))){_0x42b856[_0xb808('0x16')]=qs[_0xb808('0x16')](_0x1b8a5b[_0xb808('0x2e')]['limit']);_0x42b856[_0xb808('0x19')]=qs['offset'](_0x1b8a5b[_0xb808('0x2e')][_0xb808('0x19')]);}return _0x59be62[_0xb808('0xbb')](_0x42b856);}})['then'](function(_0x87bdb6){if(_0x87bdb6){return _0x87bdb6?{'count':_0x281a9b,'rows':_0x87bdb6}:null;}})[_0xb808('0x1c')](respondWithResult(_0x19c5f1,null))['catch'](handleError(_0x19c5f1,null));};exports['setTags']=function(_0x188179,_0x50e775){if(_0x188179[_0xb808('0x8a')]['id']){delete _0x188179[_0xb808('0x8a')]['id'];}return db[_0xb808('0x75')][_0xb808('0x28')]({'where':{'id':_0x188179[_0xb808('0x81')]['id']}})[_0xb808('0x1c')](handleEntityNotFound(_0x50e775,null))[_0xb808('0x1c')](function(_0x51d18f){if(_0x51d18f){return _0x51d18f[_0xb808('0xbe')](_0x188179['body'][_0xb808('0xbf')]||[]);}return null;})['then'](respondWithResult(_0x50e775,null))[_0xb808('0x82')](handleError(_0x50e775,null));};exports['setAdditionalPhones']=function(_0x1385fc,_0x220d6f){var _0x4003dc=[];_0x4003dc['push'](addAdditionalPhones(_0x1385fc[_0xb808('0x8a')]));Promise[_0xb808('0x2a')](_0x4003dc)[_0xb808('0x1c')](function(){_0x4003dc=[];_0x4003dc[_0xb808('0x27')](deleteCmHopperPhones(_0x1385fc['body']['id']));_0x4003dc[_0xb808('0x27')](addCmHopperPhones(_0x1385fc[_0xb808('0x8a')]['id']));Promise[_0xb808('0x2a')](_0x4003dc)[_0xb808('0x1c')](function(){return[0x1];})['then'](respondWithResult(_0x220d6f,null));});};function addAdditionalPhones(_0x246da7){var _0x49c917;return new Promise(function(_0x4c7547,_0x311cda){return db[_0xb808('0xae')][_0xb808('0x1d')]({'where':{'CmContactId':_0x246da7['id']}})[_0xb808('0x1c')](function(){db[_0xb808('0xb0')][_0xb808('0x8b')]({'raw':!![],'attributes':['id','OrderBy']})[_0xb808('0x1c')](function(_0x4fb887){var _0x468812=[];for(var _0x55cf7b=0x0;_0x55cf7b<_0x246da7[_0xb808('0xc0')]['length'];_0x55cf7b++){var _0x36cb8c=_0x246da7[_0xb808('0xc1')]?_[_0xb808('0x53')](_0x246da7[_0xb808('0xc1')][_0x55cf7b])?'':_0x246da7[_0xb808('0xc1')][_0x55cf7b]:_0x246da7[_0xb808('0xc0')][_0x55cf7b][_0xb808('0xc2')]?_0x246da7[_0xb808('0xc0')][_0x55cf7b]['ItemTypeId']:'';var _0x257ccb=_[_0xb808('0x53')](_0x246da7[_0xb808('0xc0')][_0x55cf7b][_0xb808('0xc3')])?'':_0x246da7['items'][_0x55cf7b]['description'];var _0xf7e544=_0x36cb8c+':'+_0x246da7[_0xb808('0xc0')][_0x55cf7b][_0xb808('0xb9')]+'§'+_0x257ccb;if(_[_0xb808('0x53')](_0x49c917))_0x49c917=_0xf7e544;else _0x49c917+=';'+_0xf7e544;var _0x59e80f=null;if(_0x246da7[_0xb808('0xc1')]){if(!_['isNil'](_0x246da7[_0xb808('0xc1')][_0x55cf7b])){var _0x4f57a6=_[_0xb808('0x45')](_0x4fb887,function(_0x334043){return _0x334043['id']===_0x246da7[_0xb808('0xc1')][_0x55cf7b];});if(!_[_0xb808('0x53')](_0x4f57a6)){_0x59e80f=_0x4f57a6[_0xb808('0xc4')];}}}else{if(!_[_0xb808('0x53')](_0x246da7[_0xb808('0xc0')][_0x55cf7b])){var _0x4f57a6=_[_0xb808('0x45')](_0x4fb887,function(_0x373a1a){return _0x373a1a['id']===_0x246da7['items'][_0x55cf7b]['ItemTypeId'];});if(!_[_0xb808('0x53')](_0x4f57a6)){_0x59e80f=_0x55cf7b;}}}if(_[_0xb808('0x53')](_0x59e80f)){_0x59e80f=0x64;}_0x468812[_0xb808('0x27')](addAdditionalPhone(_0x246da7['id'],_0x246da7[_0xb808('0xc0')][_0x55cf7b]['phone'],_0x246da7[_0xb808('0xc1')]?_['isNil'](_0x246da7[_0xb808('0xc1')][_0x55cf7b])?null:_0x246da7['item_types'][_0x55cf7b]:_0x246da7[_0xb808('0xc0')][_0x55cf7b][_0xb808('0xc2')]?_0x246da7[_0xb808('0xc0')][_0x55cf7b][_0xb808('0xc2')]:null,_0x59e80f,_0x257ccb));}Promise[_0xb808('0x2a')](_0x468812)[_0xb808('0x1c')](function(){db[_0xb808('0x75')][_0xb808('0x1b')]({'AdditionalPhones':_0x49c917},{'where':{'id':_0x246da7['id']}})[_0xb808('0x1c')](function(){_0x4c7547(0x1);});});});});});}function addAdditionalPhone(_0x828ea,_0x169e8b,_0x184ffc,_0x5816b0,_0x2bcc4a){return db[_0xb808('0xae')][_0xb808('0x45')]({'where':{'CmContactId':_0x828ea,'item':_0x169e8b}})[_0xb808('0x1c')](function(_0x39efa9){if(_0x39efa9)logger['info'](_0xb808('0xc5'),_0x39efa9);else{db['CmContactHasItem'][_0xb808('0x92')]({'CmContactId':_0x828ea,'item':_0x169e8b,'ItemTypeId':_0x184ffc,'OrderBy':_0x5816b0,'ItemClass':_0xb808('0xc6'),'description':_0x2bcc4a});}});}function deletePhones(_0x2f6ed6){return db['CmContactHasItem'][_0xb808('0x1d')]({'where':{'CmContactId':_0x2f6ed6}});}function deleteCmHopperPhones(_0x573e2a){return new Promise(function(_0x5c6366,_0x106cb3){return db['CmHopper'][_0xb808('0x8b')]({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x573e2a}})['then'](function(_0x1fc237){db[_0xb808('0xc7')]['destroy']({'where':{'CmHopperId':{'$in':_[_0xb808('0x48')](_0x1fc237,'id')}}});})['then'](function(){_0x5c6366(0x1);});});}function addCmHopperPhones(_0x4d11a8){return new Promise(function(_0x49302e,_0xb37600){return db[_0xb808('0xba')][_0xb808('0x8b')]({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x4d11a8}})[_0xb808('0x1c')](function(_0x332dd6){var _0x5c49f4=[];_[_0xb808('0x48')](_0x332dd6,function(_0x4d0470){_0x5c49f4[_0xb808('0x27')](createCmHopperPhone(_0x4d11a8,_0x4d0470['id']));});Promise[_0xb808('0x2a')](_0x5c49f4)[_0xb808('0x1c')](function(){_0x49302e(0x1);});});});}function createCmHopperPhone(_0x21dce2,_0x3972cc){return new Promise(function(_0x57d912,_0x7de35b){db['CmContactHasItem'][_0xb808('0x8b')]({'raw':!![],'attributes':[_0xb808('0xc8'),_0xb808('0xc4')],'where':{'CmContactId':_0x21dce2,'ItemClass':_0xb808('0xc6')},'include':[{'model':db[_0xb808('0xb0')],'attributes':[_0xb808('0xc4')],'as':_0xb808('0xc9')}],'order':['OrderBy',db['sequelize']['literal']('`ItemType`.OrderBy')]})[_0xb808('0x1c')](function(_0x16335f){var _0x4a5bdb=0x1;var _0x1a67dc=_[_0xb808('0x48')](_0x16335f,function(_0x4c0599){_0x4c0599[_0xb808('0xca')]=_0x3972cc;_0x4c0599[_0xb808('0xb9')]=_0x4c0599[_0xb808('0xc8')];_0x4c0599[_0xb808('0xc4')]=_0x4a5bdb;delete _0x4c0599[_0xb808('0xcb')];_0x4a5bdb=_0x4a5bdb+0x1;return _0x4c0599;});return db[_0xb808('0xc7')][_0xb808('0xcc')](_0x1a67dc,{});})['then'](function(){_0x57d912(0x1);});});}function insertAdditionalPhones(_0x624deb,_0x3bc1d3){return new Promise(function(_0x4d0ecc,_0x1aa6d){var _0x45d29b=[];for(var _0x2fc163=0x0;_0x2fc163<_0x3bc1d3[_0xb808('0x2b')];_0x2fc163++){var _0x224522=_0x3bc1d3[_0x2fc163];_0x45d29b[_0xb808('0x27')](parseContactItemType(_0x224522));}Promise[_0xb808('0x2a')](_0x45d29b)[_0xb808('0x1c')](function(){var _0x2a3de5={'id':_0x624deb['id'],'items':_0x3bc1d3};return addAdditionalPhones(_0x2a3de5)[_0xb808('0x1c')](function(_0x188c73){return addCmHopperPhones(_0x624deb['id']);});})['then'](function(){_0x4d0ecc(_0x624deb);});});}function parseContactItemType(_0x53f9db){return new Promise(function(_0x5b022e,_0x62f5c){if(_0x53f9db['hasOwnProperty'](_0xb808('0xc2'))){_0x5b022e(_0x53f9db);}else{return db[_0xb808('0xb0')]['find']({'where':{'name':_0x53f9db[_0xb808('0xc9')]}})[_0xb808('0x1c')](function(_0x43c932){if(_['isNil'](_0x43c932))_0x53f9db['ItemTypeId']=null;else _0x53f9db[_0xb808('0xc2')]=_0x43c932['id'];_0x5b022e(_0x53f9db);});}});}exports[_0xb808('0xcd')]=function(_0x201ef9,_0x13506e){return db[_0xb808('0xae')][_0xb808('0x8b')]({'raw':!![],'where':{'CmContactId':_0x201ef9[_0xb808('0x81')]['id'],'ItemClass':_0xb808('0xc6')},'include':[{'model':db[_0xb808('0xb0')],'as':'ItemType'}],'order':[[_0xb808('0xc4')],[db[_0xb808('0x72')][_0xb808('0xb1')](_0xb808('0xce'))]]})[_0xb808('0x1c')](function(_0x52fb3f){return _0x52fb3f;})[_0xb808('0x1c')](respondWithResult(_0x13506e,null))[_0xb808('0x82')](handleError(_0x13506e,null));};exports['duplicateAdditionalPhones']=function(_0x156c7e,_0x48ef4e){return db[_0xb808('0xae')][_0xb808('0x8b')]({'raw':!![],'where':{'CmContactId':_0x156c7e['body']['fromContactId']}})[_0xb808('0x1c')](function(_0x852779){var _0x39457e=_[_0xb808('0x48')](_0x852779,function(_0x276958){_0x276958['CmContactId']=_0x156c7e[_0xb808('0x8a')]['toContactId'];return _0x276958;});return db[_0xb808('0xae')][_0xb808('0xcc')](_0x39457e,{});})[_0xb808('0x1c')](function(_0x4cda37){return addCmHopperPhones(_0x156c7e[_0xb808('0x8a')][_0xb808('0xcf')]);})[_0xb808('0x1c')](function(_0x13e1ac){return['ok'];})[_0xb808('0x1c')](respondWithResult(_0x48ef4e,null))[_0xb808('0x82')](handleError(_0x48ef4e,null));};exports[_0xb808('0xd0')]=function(_0x18a7dc,_0x512336){var _0x3a83fe=[];_0x3a83fe[_0xb808('0x27')](createCmHopperPhone(_0x18a7dc[_0xb808('0x8a')]['id'],_0x18a7dc[_0xb808('0x8a')][_0xb808('0xd1')]));Promise[_0xb808('0x2a')](_0x3a83fe)['then'](function(){return[0x1];})[_0xb808('0x1c')](respondWithResult(_0x512336,null));};exports[_0xb808('0xd2')]=function(_0x27e695,_0x22bcff){var _0x18a99d={'raw':![],'where':{}};var _0x3d1654={};var _0x1c970e={'count':0x0,'rows':[]};return db['CmContact'][_0xb808('0x28')]({'where':{'id':_0x27e695[_0xb808('0x81')]['id']}})[_0xb808('0x1c')](handleEntityNotFound(_0x22bcff,null))[_0xb808('0x1c')](function(_0x570ae6){if(_0x570ae6){_0x3d1654[_0xb808('0x2d')]=_[_0xb808('0x25')](db[_0xb808('0xba')][_0xb808('0xbc')]);_0x3d1654['query']=_[_0xb808('0x25')](_0x27e695['query']);_0x3d1654[_0xb808('0x2f')]=_['intersection'](_0x3d1654[_0xb808('0x2d')],_0x3d1654[_0xb808('0x2e')]);_0x18a99d[_0xb808('0x31')]=_[_0xb808('0x30')](_0x3d1654[_0xb808('0x2d')],qs[_0xb808('0x32')](_0x27e695['query'][_0xb808('0x32')]));_0x18a99d[_0xb808('0x31')]=_0x18a99d['attributes'][_0xb808('0x2b')]?_0x18a99d['attributes']:_0x3d1654[_0xb808('0x2d')];if(!_0x27e695['query'][_0xb808('0x33')](_0xb808('0x34'))){_0x18a99d['limit']=qs[_0xb808('0x16')](_0x27e695[_0xb808('0x2e')][_0xb808('0x16')]);_0x18a99d[_0xb808('0x19')]=qs[_0xb808('0x19')](_0x27e695[_0xb808('0x2e')]['offset']);}_0x18a99d['order']=qs['sort'](_0x27e695['query']['sort']);_0x18a99d['where']=qs[_0xb808('0x2f')](_[_0xb808('0x38')](_0x27e695[_0xb808('0x2e')],_0x3d1654['filters']));_0x18a99d[_0xb808('0x37')][_0xb808('0xd3')]=_0x570ae6['id'];if(_0x27e695[_0xb808('0x2e')][_0xb808('0x52')]){_0x18a99d[_0xb808('0x37')]=_['merge'](_0x18a99d[_0xb808('0x37')],{'$or':_[_0xb808('0x48')](_0x18a99d['attributes'],function(_0x5e961c){var _0x41923a={};_0x41923a[_0x5e961c]={'$like':'%'+_0x27e695[_0xb808('0x2e')][_0xb808('0x52')]+'%'};return _0x41923a;})});}_0x18a99d=_[_0xb808('0x89')]({},_0x18a99d,_0x27e695[_0xb808('0xbd')]);return db['CmHopper'][_0xb808('0x18')]({'where':_0x18a99d[_0xb808('0x37')]})['then'](function(_0x153497){_0x1c970e['count']=_0x153497;if(_0x27e695['query']['includeAll']){_0x18a99d[_0xb808('0xd4')]=[{'all':!![]}];}return db[_0xb808('0xba')][_0xb808('0x8b')](_0x18a99d);})[_0xb808('0x1c')](function(_0x28c4a3){_0x1c970e[_0xb808('0xd5')]=_0x28c4a3;return _0x1c970e;});}})[_0xb808('0x1c')](respondWithFilteredResult(_0x22bcff,_0x18a99d))[_0xb808('0x82')](handleError(_0x22bcff,null));};exports[_0xb808('0xd6')]=function(_0x251818,_0x879b3e){var _0x1cb898={'raw':!![],'where':{}};var _0x336b50={};var _0x3ca4f8={'count':0x0,'rows':[]};return db['CmContact']['findOne']({'where':{'id':_0x251818[_0xb808('0x81')]['id']}})[_0xb808('0x1c')](handleEntityNotFound(_0x879b3e,null))[_0xb808('0x1c')](function(_0x5490d8){if(_0x5490d8){_0x336b50[_0xb808('0x2d')]=_[_0xb808('0x25')](db[_0xb808('0x9d')][_0xb808('0xbc')]);_0x336b50[_0xb808('0x2e')]=_[_0xb808('0x25')](_0x251818[_0xb808('0x2e')]);_0x336b50[_0xb808('0x2f')]=_[_0xb808('0x30')](_0x336b50['model'],_0x336b50[_0xb808('0x2e')]);_0x1cb898[_0xb808('0x31')]=_['intersection'](_0x336b50['model'],qs['fields'](_0x251818[_0xb808('0x2e')][_0xb808('0x32')]));_0x1cb898['attributes']=_0x1cb898[_0xb808('0x31')][_0xb808('0x2b')]?_0x1cb898[_0xb808('0x31')]:_0x336b50[_0xb808('0x2d')];if(!_0x251818['query'][_0xb808('0x33')]('nolimit')){_0x1cb898[_0xb808('0x16')]=qs[_0xb808('0x16')](_0x251818[_0xb808('0x2e')][_0xb808('0x16')]);_0x1cb898[_0xb808('0x19')]=qs[_0xb808('0x19')](_0x251818[_0xb808('0x2e')]['offset']);}_0x1cb898[_0xb808('0x35')]=qs[_0xb808('0x36')](_0x251818[_0xb808('0x2e')][_0xb808('0x36')]);_0x1cb898[_0xb808('0x37')]=qs[_0xb808('0x2f')](_[_0xb808('0x38')](_0x251818['query'],_0x336b50[_0xb808('0x2f')]));_0x1cb898['where'][_0xb808('0xd3')]=_0x5490d8['id'];if(_0x251818[_0xb808('0x2e')]['filter']){_0x1cb898[_0xb808('0x37')]=_['merge'](_0x1cb898['where'],{'$or':_[_0xb808('0x48')](_0x1cb898['attributes'],function(_0x12b242){var _0x216ffb={};_0x216ffb[_0x12b242]={'$like':'%'+_0x251818[_0xb808('0x2e')]['filter']+'%'};return _0x216ffb;})});}_0x1cb898=_[_0xb808('0x89')]({},_0x1cb898,_0x251818[_0xb808('0xbd')]);return db[_0xb808('0x9d')][_0xb808('0x18')]({'where':_0x1cb898[_0xb808('0x37')]})[_0xb808('0x1c')](function(_0x4583af){_0x3ca4f8['count']=_0x4583af;if(_0x251818[_0xb808('0x2e')][_0xb808('0xd7')]){_0x1cb898[_0xb808('0xd4')]=[{'all':!![]}];}return db['CmHopperHistory'][_0xb808('0x8b')](_0x1cb898);})['then'](function(_0x31bc91){_0x3ca4f8[_0xb808('0xd5')]=_0x31bc91;return _0x3ca4f8;});}})[_0xb808('0x1c')](respondWithFilteredResult(_0x879b3e,_0x1cb898))[_0xb808('0x82')](handleError(_0x879b3e,null));};exports[_0xb808('0xd8')]=function(_0x5c89b1,_0x3163fc){var _0x415108={'raw':!![],'where':{}};var _0x59b8e5={};var _0x55be25={'count':0x0,'rows':[]};return db['CmContact'][_0xb808('0x28')]({'where':{'id':_0x5c89b1[_0xb808('0x81')]['id']}})[_0xb808('0x1c')](handleEntityNotFound(_0x3163fc,null))[_0xb808('0x1c')](function(_0xa75616){if(_0xa75616){_0x59b8e5[_0xb808('0x2d')]=_[_0xb808('0x25')](db[_0xb808('0x9c')][_0xb808('0xbc')]);_0x59b8e5['query']=_[_0xb808('0x25')](_0x5c89b1[_0xb808('0x2e')]);_0x59b8e5[_0xb808('0x2f')]=_['intersection'](_0x59b8e5['model'],_0x59b8e5[_0xb808('0x2e')]);_0x415108[_0xb808('0x31')]=_[_0xb808('0x30')](_0x59b8e5['model'],qs[_0xb808('0x32')](_0x5c89b1[_0xb808('0x2e')][_0xb808('0x32')]));_0x415108[_0xb808('0x31')]=_0x415108[_0xb808('0x31')]['length']?_0x415108[_0xb808('0x31')]:_0x59b8e5[_0xb808('0x2d')];if(!_0x5c89b1[_0xb808('0x2e')][_0xb808('0x33')](_0xb808('0x34'))){_0x415108[_0xb808('0x16')]=qs[_0xb808('0x16')](_0x5c89b1[_0xb808('0x2e')][_0xb808('0x16')]);_0x415108[_0xb808('0x19')]=qs['offset'](_0x5c89b1[_0xb808('0x2e')]['offset']);}_0x415108[_0xb808('0x35')]=qs[_0xb808('0x36')](_0x5c89b1[_0xb808('0x2e')][_0xb808('0x36')]);_0x415108[_0xb808('0x37')]=qs['filters'](_[_0xb808('0x38')](_0x5c89b1[_0xb808('0x2e')],_0x59b8e5[_0xb808('0x2f')]));_0x415108[_0xb808('0x37')][_0xb808('0xd3')]=_0xa75616['id'];if(_0x5c89b1[_0xb808('0x2e')][_0xb808('0x52')]){_0x415108[_0xb808('0x37')]=_[_0xb808('0x89')](_0x415108[_0xb808('0x37')],{'$or':_[_0xb808('0x48')](_0x415108[_0xb808('0x31')],function(_0x210c95){var _0x2d0482={};_0x2d0482[_0x210c95]={'$like':'%'+_0x5c89b1[_0xb808('0x2e')][_0xb808('0x52')]+'%'};return _0x2d0482;})});}_0x415108=_[_0xb808('0x89')]({},_0x415108,_0x5c89b1['options']);return db['CmHopperFinal'][_0xb808('0x18')]({'where':_0x415108['where']})['then'](function(_0x23e631){_0x55be25['count']=_0x23e631;if(_0x5c89b1[_0xb808('0x2e')][_0xb808('0xd7')]){_0x415108[_0xb808('0xd4')]=[{'all':!![]}];}return db[_0xb808('0x9c')][_0xb808('0x8b')](_0x415108);})[_0xb808('0x1c')](function(_0x142138){_0x55be25[_0xb808('0xd5')]=_0x142138;return _0x55be25;});}})[_0xb808('0x1c')](respondWithFilteredResult(_0x3163fc,_0x415108))[_0xb808('0x82')](handleError(_0x3163fc,null));};exports[_0xb808('0xd9')]=function(_0x24be49,_0x4ed5e4){var _0x451cb6={'raw':!![],'where':{}};var _0x225ea6={};var _0xaff523={'count':0x0,'rows':[]};return db[_0xb808('0x75')]['findOne']({'where':{'id':_0x24be49[_0xb808('0x81')]['id']}})[_0xb808('0x1c')](handleEntityNotFound(_0x4ed5e4,null))[_0xb808('0x1c')](function(_0x1c0d5d){if(_0x1c0d5d){_0x225ea6[_0xb808('0x2d')]=_[_0xb808('0x25')](db[_0xb808('0xa2')]['rawAttributes']);_0x225ea6[_0xb808('0x2e')]=_['keys'](_0x24be49[_0xb808('0x2e')]);_0x225ea6[_0xb808('0x2f')]=_['intersection'](_0x225ea6[_0xb808('0x2d')],_0x225ea6['query']);_0x451cb6[_0xb808('0x31')]=_['intersection'](_0x225ea6[_0xb808('0x2d')],qs[_0xb808('0x32')](_0x24be49[_0xb808('0x2e')][_0xb808('0x32')]));_0x451cb6[_0xb808('0x31')]=_0x451cb6['attributes'][_0xb808('0x2b')]?_0x451cb6[_0xb808('0x31')]:_0x225ea6[_0xb808('0x2d')];if(!_0x24be49[_0xb808('0x2e')][_0xb808('0x33')](_0xb808('0x34'))){_0x451cb6[_0xb808('0x16')]=qs[_0xb808('0x16')](_0x24be49[_0xb808('0x2e')]['limit']);_0x451cb6[_0xb808('0x19')]=qs['offset'](_0x24be49[_0xb808('0x2e')][_0xb808('0x19')]);}_0x451cb6['order']=qs[_0xb808('0x36')](_0x24be49['query']['sort']);_0x451cb6[_0xb808('0x37')]=qs[_0xb808('0x2f')](_['pick'](_0x24be49['query'],_0x225ea6['filters']));_0x451cb6[_0xb808('0x37')][_0xb808('0xd3')]=_0x1c0d5d['id'];if(_0x24be49[_0xb808('0x2e')][_0xb808('0x52')]){_0x451cb6[_0xb808('0x37')]=_[_0xb808('0x89')](_0x451cb6[_0xb808('0x37')],{'$or':_[_0xb808('0x48')](_0x451cb6[_0xb808('0x31')],function(_0x2b3737){var _0x29cc3b={};_0x29cc3b[_0x2b3737]={'$like':'%'+_0x24be49[_0xb808('0x2e')][_0xb808('0x52')]+'%'};return _0x29cc3b;})});}_0x451cb6=_[_0xb808('0x89')]({},_0x451cb6,_0x24be49[_0xb808('0xbd')]);return db[_0xb808('0xa2')][_0xb808('0x18')]({'where':_0x451cb6['where']})[_0xb808('0x1c')](function(_0x258235){_0xaff523[_0xb808('0x18')]=_0x258235;if(_0x24be49[_0xb808('0x2e')][_0xb808('0xd7')]){_0x451cb6[_0xb808('0xd4')]=[{'all':!![]}];}return db[_0xb808('0xa2')][_0xb808('0x8b')](_0x451cb6);})['then'](function(_0x5ea314){_0xaff523['rows']=_0x5ea314;return _0xaff523;});}})[_0xb808('0x1c')](respondWithFilteredResult(_0x4ed5e4,_0x451cb6))[_0xb808('0x82')](handleError(_0x4ed5e4,null));};exports[_0xb808('0xda')]=function(_0x21528e,_0x29521b){try{if(!_0x21528e[_0xb808('0x8a')][_0xb808('0x56')]){throw new Error(_0xb808('0xdb'));}if(!_0x21528e[_0xb808('0x8a')][_0xb808('0xdc')]){throw new Error(_0xb808('0xdd'));}if(!_0x21528e['body'][_0xb808('0xde')]){throw new Error('No\x20association\x20values\x20specified!');}if(!_0x21528e[_0xb808('0x8a')][_0xb808('0xdf')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0xe8ade9=_0x21528e['body'][_0xb808('0xdc')][_0xb808('0x47')](',');var _0x4bed5a=_0x21528e[_0xb808('0x8a')]['binding_values'][_0xb808('0x47')](',');if(!_0xe8ade9['length']||!_0x4bed5a[_0xb808('0x2b')]||_0xe8ade9['length']!==_0x4bed5a[_0xb808('0x2b')]){throw new Error('Incorrect\x20binding\x20parameters\x20passed!');}_0x21528e[_0xb808('0x8a')][_0xb808('0x32')]=_['zipObject'](_0xe8ade9,_0x4bed5a);if(!_0x21528e[_0xb808('0x8a')]['fields'][_0xb808('0xb9')]){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x21528e[_0xb808('0x8a')][_0xb808('0x32')]['firstName']){throw new Error('No\x20firstName\x20column\x20specified');}var _0x2c486b=path['join'](config[_0xb808('0xe0')],'server/files/tmp',_0x21528e[_0xb808('0xe1')][_0xb808('0xe2')]);fs[_0xb808('0xe3')](_0x2c486b,parseInt(_0xb808('0xe4'),0x8));var _0x2d1592=require(_0xb808('0xe5'))['fork'](path[_0xb808('0x8e')](__dirname,_0xb808('0xe6')),[_0x2c486b,_0x21528e[_0xb808('0x8a')][_0xb808('0xdc')],_0x21528e[_0xb808('0x8a')][_0xb808('0xde')],_0x21528e[_0xb808('0x8a')][_0xb808('0x56')],_0x21528e['body'][_0xb808('0xe7')],_0x21528e['body'][_0xb808('0xa8')],_0x21528e['body']['socket_timestamp']]);return _0x29521b['status'](0xc8)[_0xb808('0x15')]({'message':'File\x20uploaded\x20correctly!','pid':_0x2d1592['pid']});}catch(_0x40b35c){return _0x29521b[_0xb808('0x14')](0x1f4)[_0xb808('0x22')](_0x40b35c);}};exports[_0xb808('0xe8')]=function(_0x1c2e79,_0x4aab6b){var _0xd1d773=fs['createReadStream'](_0x1c2e79[_0xb808('0xe1')][_0xb808('0x3')]);Papa[_0xb808('0xe9')](_0xd1d773,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x1529a9){return _0x4aab6b[_0xb808('0x14')](0xc8)['json']({'file':_0x1c2e79['file'],'fields':_0x1529a9[_0xb808('0xea')][_0xb808('0x32')]});}});};exports[_0xb808('0xeb')]=function(_0x31b4b5,_0xa1cfdc){return db[_0xb808('0x4c')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0xb808('0x6d')}})[_0xb808('0x1c')](function(_0x13d295){var _0x351d5d=![];if(!_0x31b4b5['body'][_0xb808('0x56')]){throw new Error(_0xb808('0xdb'));}if(!_0x31b4b5[_0xb808('0x8a')][_0xb808('0xec')][_0xb808('0xb9')]){throw new Error(_0xb808('0xed'));}if(!_0x31b4b5['body'][_0xb808('0xec')][_0xb808('0xee')]){throw new Error(_0xb808('0xef'));}if(!_0x31b4b5[_0xb808('0x8a')]['socket_timestamp']){throw new Error(_0xb808('0xf0'));}var _0x23c345=require('child_process')[_0xb808('0xf1')](path[_0xb808('0x8e')](__dirname,'../../components/import/cm/csv2'),[_0x31b4b5[_0xb808('0x81')]['id'],JSON[_0xb808('0xf2')](_0x31b4b5['body']),JSON[_0xb808('0xf2')](_0x13d295)]);_0x23c345['on']('message',function(){_0x351d5d=!![];return _0xa1cfdc['status'](0xc8)[_0xb808('0x15')]({'message':_0xb808('0xf3'),'pid':_0x23c345[_0xb808('0xf4')]});});_0x23c345['on'](_0xb808('0xf5'),function(_0x33f994){if(_0x33f994&&!_0x351d5d){return _0xa1cfdc[_0xb808('0x14')](0x1f4)[_0xb808('0x15')]({'message':_0xb808('0xf6'),'pid':_0x23c345[_0xb808('0xf4')]});}});})['catch'](handleError(_0xa1cfdc,null));};exports['importUpdates']=function(_0x296b8e,_0x2f2350,_0x5181f4){return db[_0xb808('0x4c')][_0xb808('0x8b')]({'raw':!![],'attributes':['id'],'where':{'role':_0xb808('0x6d')}})['then'](function(_0x8156fb){var _0x1fe7c4=![];if(!_0x296b8e[_0xb808('0x8a')][_0xb808('0x56')]){throw new Error(_0xb808('0xdb'));}if(!_0x296b8e[_0xb808('0x8a')][_0xb808('0xec')]['phone']){throw new Error(_0xb808('0xed'));}if(!_0x296b8e[_0xb808('0x8a')]['binding'][_0xb808('0xee')]){throw new Error(_0xb808('0xef'));}if(!_0x296b8e[_0xb808('0x8a')][_0xb808('0xdf')]){throw new Error(_0xb808('0xf0'));}var _0x208ec2=require(_0xb808('0xe5'))[_0xb808('0xf1')](path[_0xb808('0x8e')](__dirname,'../../components/import/cm/csvUpdates'),[_0x296b8e[_0xb808('0x81')]['id'],JSON['stringify'](_0x296b8e[_0xb808('0x8a')]),JSON[_0xb808('0xf2')](_0x8156fb)]);_0x208ec2['on'](_0xb808('0xf7'),function(_0x597f4e){_0x1fe7c4=!![];return _0x2f2350['status'](0xc8)[_0xb808('0x15')]({'message':_0xb808('0xf3'),'pid':_0x208ec2[_0xb808('0xf4')]});});_0x208ec2['on'](_0xb808('0xf5'),function(_0x2108ac){if(_0x2108ac&&!_0x1fe7c4){return _0x2f2350['status'](0x1f4)['json']({'message':_0xb808('0xf6'),'pid':_0x208ec2['pid']});}});})[_0xb808('0x82')](handleError(_0x2f2350,null));};exports[_0xb808('0xf8')]=function(_0x5f1cf9,_0x475214){var _0x4230d4=['mail',_0xb808('0xf9'),_0xb808('0xfa'),_0xb808('0xfb'),_0xb808('0xfc'),'whatsapp','voice'];var _0x45241e={'offset':0x0,'order':qs[_0xb808('0x36')](_0xb808('0xfd'))},_0x5dbc6d={'count':0x0,'rows':[]};Promise[_0xb808('0x6a')]()['then'](function(){if(_0x5f1cf9[_0xb808('0x2e')][_0xb808('0xfe')]){if(!_[_0xb808('0xff')](_0x4230d4,_0x5f1cf9[_0xb808('0x2e')]['channel'][_0xb808('0x100')]())){throw new Error(_0xb808('0x101'));}_0x4230d4=[_0x5f1cf9[_0xb808('0x2e')][_0xb808('0xfe')][_0xb808('0x100')]()];}if(_0x5f1cf9[_0xb808('0x2e')][_0xb808('0x102')]){try{var _0x5bd33e=JSON[_0xb808('0xe9')](_0x5f1cf9['query'][_0xb808('0x102')]);if(!moment(_0x5bd33e[_0xb808('0x3b')])[_0xb808('0x103')]()){throw new Error(_0xb808('0x104'));}if(!moment(_0x5bd33e['to'])[_0xb808('0x103')]()){throw new Error('Invalid\x20date\x20for\x20range\x20to\x20filter');}}catch(_0x508031){throw new Error(_0xb808('0x105'));}}if(!_0x5f1cf9[_0xb808('0x2e')][_0xb808('0x33')](_0xb808('0x34'))){_0x45241e[_0xb808('0x16')]=qs['limit'](_0x5f1cf9[_0xb808('0x2e')][_0xb808('0x16')]||0xa);_0x45241e[_0xb808('0x19')]=qs[_0xb808('0x19')](_0x5f1cf9['query'][_0xb808('0x19')]);}var _0x36ff14=_0x4230d4[_0xb808('0x48')](function(_0x5a8085){if(_0x5a8085==='voice'){var _0x15e41a={'attributes':['id',_0xb808('0x106'),_0xb808('0x2c'),_0xb808('0x107'),_0xb808('0x108'),_0xb808('0x109'),_0xb808('0x10a'),_0xb808('0x10b'),'duration',_0xb808('0x10c'),'createdAt',_0xb808('0x10d'),_0xb808('0x10e'),'userThirdDisposition',_0xb808('0x10f')],'where':{'ContactId':_0x5f1cf9[_0xb808('0x81')]['id']},'include':[{'model':db[_0xb808('0x4c')],'as':_0xb808('0x4c'),'attributes':['id',_0xb808('0x21'),_0xb808('0x110'),_0xb808('0x87')]}],'order':[[_0xb808('0x111'),_0xb808('0x68')]]};if(_0x5f1cf9[_0xb808('0x2e')][_0xb808('0x102')]){_0x15e41a[_0xb808('0x37')]['createdAt']={'$gte':_0x5bd33e[_0xb808('0x3b')],'$lte':_0x5bd33e['to']};}return db[_0xb808('0x9e')][_0xb808('0x112')](_0x15e41a)[_0xb808('0x1c')](function(_0x8779db){_0x5dbc6d[_0xb808('0x18')]+=_0x8779db[_0xb808('0x18')];return _[_0xb808('0x48')](_0x8779db['rows'],function(_0x131d24){var _0xeed5c2=_0x131d24[_0xb808('0x8c')]({'plain':!![]});_0xeed5c2[_0xb808('0xfe')]=_0x5a8085;if(_0xeed5c2['User']){_0xeed5c2[_0xb808('0x4c')]={'id':_0xeed5c2[_0xb808('0x4c')]['id'],'name':_0xeed5c2['User']['name'],'fullname':_0xeed5c2[_0xb808('0x4c')][_0xb808('0x110')],'alias':_0xeed5c2['User'][_0xb808('0x87')]};}return _0xeed5c2;});});}else{var _0x2de733=_['startCase'](_0x5a8085)+(_0x5a8085==='chat'?_0xb808('0x113'):_0xb808('0x114'));var _0x2591c1={'attributes':['id',_0xb808('0x115'),_0xb808('0x116'),_0xb808('0x111'),_0xb808('0x10c'),_0xb808('0x117'),_0xb808('0x118'),'thirdDisposition','UserId',_0x2de733+'Id'],'where':{'ContactId':_0x5f1cf9[_0xb808('0x81')]['id']},'include':[{'model':db[_0x2de733],'as':_0xb808('0x114'),'attributes':['id',_0xb808('0x21'),_0xb808('0x119')]},{'model':db[_0xb808('0x4c')],'as':_0xb808('0x11a'),'attributes':['id',_0xb808('0x21'),_0xb808('0x110')]},{'model':db[_0xb808('0x46')],'as':'Tags','attributes':['id',_0xb808('0x21'),'color'],'through':{'attributes':[]}}],'order':[[_0xb808('0x111'),_0xb808('0x68')]]};if(_0x5f1cf9['query'][_0xb808('0x102')]){_0x2591c1['where'][_0xb808('0x111')]={'$gte':_0x5bd33e[_0xb808('0x3b')],'$lte':_0x5bd33e['to']};}switch(_0x5a8085){case _0xb808('0xf9'):_0x2591c1[_0xb808('0x31')][_0xb808('0x27')](_0xb808('0x11b'),_0xb808('0x11c'),_0xb808('0x11d'),_0xb808('0x11e'),_0xb808('0x11f'),'ratingMessage',_0xb808('0x120'),_0xb808('0x121'),_0xb808('0x122'));break;case'mail':_0x2591c1[_0xb808('0x31')][_0xb808('0x27')]('subject',_0xb808('0x123'));break;case'openchannel':_0x2591c1[_0xb808('0x31')][_0xb808('0x27')](_0xb808('0x124'),_0xb808('0x125'));break;}return db[_['startCase'](_0x5a8085)+'Interaction'][_0xb808('0x112')](_0x2591c1)[_0xb808('0x1c')](function(_0x52469b){_0x5dbc6d['count']+=_0x52469b[_0xb808('0x18')];return _['map'](_0x52469b[_0xb808('0xd5')],function(_0x5b83cf){var _0x249244=_0x5b83cf[_0xb808('0x8c')]({'plain':!![]});_0x249244[_0xb808('0xfe')]=_0x5a8085;if(_0x249244['Owner']){_0x249244[_0xb808('0x11a')]={'id':_0x249244[_0xb808('0x11a')]['id'],'name':_0x249244[_0xb808('0x11a')][_0xb808('0x21')],'fullname':_0x249244[_0xb808('0x11a')][_0xb808('0x110')]};}return _0x249244;});});}});return Promise[_0xb808('0x2a')](_0x36ff14);})[_0xb808('0x1c')](function(_0x24346b){return _(_0x24346b)[_0xb808('0x126')]()[_0xb808('0x127')](_0xb808('0x111'))[_0xb808('0x128')]()[_0xb808('0x4e')]();})['then'](function(_0x315750){_0x5dbc6d['rows']=_0x45241e[_0xb808('0x16')]?_0x315750[_0xb808('0x129')](_0x45241e['offset'],_0x45241e[_0xb808('0x19')]+_0x45241e[_0xb808('0x16')]):_0x315750;return _0x5dbc6d;})['then'](respondWithFilteredResult(_0x475214,_0x45241e))[_0xb808('0x82')](handleError(_0x475214,null));};
\ No newline at end of file
index 5c66d6b..f29e5da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7781=['setMaxListeners','save','update','remove','emit','exports','events','CmContact'];(function(_0x4959ae,_0x309e44){var _0x232977=function(_0xb7e2df){while(--_0xb7e2df){_0x4959ae['push'](_0x4959ae['shift']());}};_0x232977(++_0x309e44);}(_0x7781,0x116));var _0x1778=function(_0x4f748f,_0x17eb6a){_0x4f748f=_0x4f748f-0x0;var _0x36860=_0x7781[_0x4f748f];return _0x36860;};'use strict';var EventEmitter=require(_0x1778('0x0'));var CmContact=require('../../mysqldb')['db'][_0x1778('0x1')];var CmContactEvents=new EventEmitter();CmContactEvents[_0x1778('0x2')](0x0);var events={'afterCreate':_0x1778('0x3'),'afterUpdate':_0x1778('0x4'),'afterDestroy':_0x1778('0x5')};function emitEvent(_0x9941ab){return function(_0x43dac8,_0x27eaba,_0x1ab3e5){CmContactEvents[_0x1778('0x6')](_0x9941ab+':'+_0x43dac8['id'],_0x43dac8);CmContactEvents[_0x1778('0x6')](_0x9941ab,_0x43dac8);_0x1ab3e5(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmContact['hook'](e,emitEvent(event));}}module[_0x1778('0x7')]=CmContactEvents;
\ No newline at end of file
+var _0x4757=['emit','hook','exports','CmContact','save','update','remove'];(function(_0x31a119,_0x17e6ca){var _0x2d6e6a=function(_0x3faa80){while(--_0x3faa80){_0x31a119['push'](_0x31a119['shift']());}};_0x2d6e6a(++_0x17e6ca);}(_0x4757,0x17d));var _0x7475=function(_0x460150,_0x232949){_0x460150=_0x460150-0x0;var _0x340677=_0x4757[_0x460150];return _0x340677;};'use strict';var EventEmitter=require('events');var CmContact=require('../../mysqldb')['db'][_0x7475('0x0')];var CmContactEvents=new EventEmitter();CmContactEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7475('0x1'),'afterUpdate':_0x7475('0x2'),'afterDestroy':_0x7475('0x3')};function emitEvent(_0x15a657){return function(_0x1f685d,_0x27826a,_0x43447e){CmContactEvents[_0x7475('0x4')](_0x15a657+':'+_0x1f685d['id'],_0x1f685d);CmContactEvents[_0x7475('0x4')](_0x15a657,_0x1f685d);_0x43447e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmContact[_0x7475('0x5')](e,emitEvent(event));}}module[_0x7475('0x6')]=CmContactEvents;
\ No newline at end of file
index 1b7a8c3..8dea3b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7010=['FULLTEXT','utf8mb4','models','get','cmContact','afterCreate','inspect','scheduledat','format','isNil','dialTimezone','VoiceQueue','findOne','then','utcOffset','add','minutes','YYYY-MM-DD\x20HH:mm:ss','CmHopper','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId','priority','callbackUniqueid','catch','ret','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','Campaign','timezones','\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','CmHopperFinal','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','findAll','dialCheckDuplicateType','CmList','Lists','length','always','onlyIfOpen','outbound','BlackLists','CmHopperBlack','error','cmContact,\x20%s,\x20%s','message','List\x20not\x20found','ContactId','VoiceQueueId','CampaignId','all','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','../../config/logger','api','moment','path','rimraf','../../config/environment','../../config/environment/shared','./cmContact.attributes','cm_contacts','phone','fti_cm_contacts','firstName','lastName','mobile','fax','email'];(function(_0x253ad8,_0x9fe82d){var _0x3198b1=function(_0x413854){while(--_0x413854){_0x253ad8['push'](_0x253ad8['shift']());}};_0x3198b1(++_0x9fe82d);}(_0x7010,0x153));var _0x0701=function(_0x2620c8,_0x5b36f4){_0x2620c8=_0x2620c8-0x0;var _0x2d5f95=_0x7010[_0x2620c8];return _0x2d5f95;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x0701('0x0'))(_0x0701('0x1'));var moment=require(_0x0701('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x0701('0x3'));var rimraf=require(_0x0701('0x4'));var config=require(_0x0701('0x5'));var shared=require(_0x0701('0x6'));var attributes=require(_0x0701('0x7'));module['exports']=function(_0x179f52,_0x1581d9){return _0x179f52['define']('CmContact',attributes,{'tableName':_0x0701('0x8'),'paranoid':!![],'indexes':[{'name':'phone','fields':[_0x0701('0x9')]},{'name':_0x0701('0xa'),'fields':[_0x0701('0xb'),_0x0701('0xc'),_0x0701('0x9'),_0x0701('0xd'),_0x0701('0xe'),_0x0701('0xf')],'type':_0x0701('0x10')}],'timestamps':!![],'charset':_0x0701('0x11'),'collate':'utf8mb4_unicode_ci','hooks':{'afterCreate':function(_0x17c00a,_0x1e62b9,_0x47aad2){var _0x16e438=_0x179f52[_0x0701('0x12')];var _0x55d75a=_0x17c00a[_0x0701('0x13')]({'plain':!![]});function _0x4457ae(){return function(_0x550524){logger['error'](_0x0701('0x14'),_0x0701('0x15'),util[_0x0701('0x16')](_0x550524,{'showHidden':![],'depth':null}));};}function _0x2b19a3(_0x249b70,_0x9282c2){var _0x1463ed=_0x9282c2[_0x0701('0x17')]?_0x9282c2[_0x0701('0x17')]:moment()[_0x0701('0x18')]('YYYY-MM-DD\x20HH:mm:ss');return new BPromise(function(_0x2b62bb,_0x3f07b4){if(_[_0x0701('0x19')](_0x9282c2[_0x0701('0x1a')])){_0x2b62bb({'ret':_0x1463ed});}else{_0x16e438[_0x0701('0x1b')][_0x0701('0x1c')]({'where':{'id':_0x249b70['id']}})[_0x0701('0x1d')](function(_0x2b6e56){if(!_[_0x0701('0x19')](_0x2b6e56)){var _0x4e7363=_0x2b6e56[_0x0701('0x1a')];if(!_[_0x0701('0x19')](_0x4e7363)){var _0x5743a0=shared['timezones'];var _0x2c86b9=_0x5743a0[_0x4e7363];var _0x4794be=_0x5743a0[_0x9282c2['dialTimezone']];if(!_[_0x0701('0x19')](_0x2c86b9)&&!_[_0x0701('0x19')](_0x4794be)){var _0x3a55a5=_0x2c86b9[_0x0701('0x1e')]-_0x4794be[_0x0701('0x1e')];_0x1463ed=_0x9282c2['scheduledat']?_0x9282c2[_0x0701('0x17')]:moment();var _0x35e662=moment(_0x1463ed)[_0x0701('0x1f')](_0x3a55a5,_0x0701('0x20'));_0x2b62bb({'ret':_0x35e662[_0x0701('0x18')](_0x0701('0x21'))});}else _0x2b62bb({'ret':_0x1463ed});}else _0x2b62bb({'ret':_0x1463ed});}else{_0x2b62bb({'ret':_0x1463ed});}});}});return 0xa;}var _0x471e9f=function(_0x52c2f6){return new BPromise(function(_0x1d3464,_0x308b14){_0x2b19a3(_0x52c2f6,_0x55d75a)['then'](function(_0x1b0b15){_0x55d75a['scheduledat']=_0x1b0b15['ret'];_0x16e438[_0x0701('0x22')][_0x0701('0x1c')]({'where':{'phone':_0x55d75a[_0x0701('0x9')],'VoiceQueueId':_0x52c2f6['id']}})[_0x0701('0x1d')](function(_0xaff9e0){if(!_[_0x0701('0x19')](_0xaff9e0)){throw new Error(_0x0701('0x23')+_0x55d75a['phone']+_0x0701('0x24')+_0x52c2f6['id']);}return _0x16e438[_0x0701('0x22')][_0x0701('0x25')]({'phone':_0x55d75a[_0x0701('0x9')],'ContactId':_0x55d75a['id'],'ListId':_0x55d75a[_0x0701('0x26')],'priority':_0x55d75a['priority']?_0x55d75a[_0x0701('0x27')]:0x2,'scheduledat':_0x55d75a[_0x0701('0x17')]?_0x55d75a[_0x0701('0x17')]:moment()[_0x0701('0x18')](_0x0701('0x21')),'callback':_0x55d75a[_0x0701('0x28')]?!![]:![],'callbackuniqueid':_0x55d75a[_0x0701('0x28')]?_0x55d75a[_0x0701('0x28')]:undefined,'callbackat':_0x55d75a[_0x0701('0x28')]?moment()[_0x0701('0x18')](_0x0701('0x21')):undefined,'VoiceQueueId':_0x52c2f6['id']});})[_0x0701('0x29')](function(_0x32088e){_0x308b14(_0x32088e);});});});};var _0x2fd2bc=function(_0x4faba8){return new BPromise(function(_0x4970b8,_0xea7c02){_0x2b19a3(_0x4faba8,_0x55d75a)[_0x0701('0x1d')](function(_0x5c30bb){_0x55d75a[_0x0701('0x17')]=_0x5c30bb[_0x0701('0x2a')];_0x16e438[_0x0701('0x22')][_0x0701('0x1c')]({'where':{'phone':_0x55d75a[_0x0701('0x9')],'VoiceQueueId':_0x4faba8['id']}})['then'](function(_0x1a0e97){if(!_['isNil'](_0x1a0e97)){throw new Error('cmContact,\x20afterCreate\x20'+_0x55d75a[_0x0701('0x9')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x4faba8['id']);}return _0x16e438['CmHopperFinal']['findOne']({'where':{'calleridnum':_0x55d75a[_0x0701('0x9')],'VoiceQueueId':_0x4faba8['id']}});})[_0x0701('0x1d')](function(_0x269f01){if(!_[_0x0701('0x19')](_0x269f01)){throw new Error(_0x0701('0x2b')+_0x55d75a[_0x0701('0x9')]+_0x0701('0x2c')+_0x4faba8['id']);}return _0x16e438[_0x0701('0x22')][_0x0701('0x25')]({'phone':_0x55d75a[_0x0701('0x9')],'ContactId':_0x55d75a['id'],'ListId':_0x55d75a[_0x0701('0x26')],'priority':_0x55d75a[_0x0701('0x27')]?_0x55d75a[_0x0701('0x27')]:0x2,'scheduledat':_0x55d75a['scheduledat']?_0x55d75a[_0x0701('0x17')]:moment()[_0x0701('0x18')](_0x0701('0x21')),'callback':_0x55d75a[_0x0701('0x28')]?!![]:![],'callbackuniqueid':_0x55d75a['callbackUniqueid']?_0x55d75a[_0x0701('0x28')]:undefined,'callbackat':_0x55d75a[_0x0701('0x28')]?moment()[_0x0701('0x18')](_0x0701('0x21')):undefined,'VoiceQueueId':_0x4faba8['id']});})[_0x0701('0x29')](function(_0x4ac79a){_0xea7c02(_0x4ac79a);});});});};function _0x2e3ae0(){return function(_0x39cec3){logger['error'](_0x0701('0x14'),'afterCreate',util['inspect'](_0x39cec3,{'showHidden':![],'depth':null}));};}function _0x29bb24(_0x5e887a,_0xbe4c31){var _0x58e2f1=_0xbe4c31[_0x0701('0x17')]?_0xbe4c31[_0x0701('0x17')]:moment()[_0x0701('0x18')](_0x0701('0x21'));return new BPromise(function(_0x17cbe9,_0x37f1f1){if(_[_0x0701('0x19')](_0xbe4c31[_0x0701('0x1a')])){_0x17cbe9({'ret':_0x58e2f1});}else{_0x16e438[_0x0701('0x2d')][_0x0701('0x1c')]({'where':{'id':_0x5e887a['id']}})[_0x0701('0x1d')](function(_0x4f33c9){if(!_[_0x0701('0x19')](_0x4f33c9)){var _0xa8cbfb=_0x4f33c9[_0x0701('0x1a')];if(!_[_0x0701('0x19')](_0xa8cbfb)){var _0xc6a351=shared[_0x0701('0x2e')];var _0x5cb917=_0xc6a351[_0xa8cbfb];var _0x5c1a1b=_0xc6a351[_0xbe4c31[_0x0701('0x1a')]];if(!_['isNil'](_0x5cb917)&&!_['isNil'](_0x5c1a1b)){var _0x3ad0e7=_0x5cb917[_0x0701('0x1e')]-_0x5c1a1b[_0x0701('0x1e')];_0x58e2f1=_0xbe4c31[_0x0701('0x17')]?_0xbe4c31['scheduledat']:moment();var _0x365970=moment(_0x58e2f1)[_0x0701('0x1f')](_0x3ad0e7,_0x0701('0x20'));_0x17cbe9({'ret':_0x365970[_0x0701('0x18')](_0x0701('0x21'))});}else _0x17cbe9({'ret':_0x58e2f1});}else _0x17cbe9({'ret':_0x58e2f1});}else{_0x17cbe9({'ret':_0x58e2f1});}});}});return 0xa;}var _0x826455=function(_0x19dd85){return new BPromise(function(_0x11ddda,_0x1de0a0){_0x29bb24(_0x19dd85,_0x55d75a)[_0x0701('0x1d')](function(_0x480de2){_0x55d75a[_0x0701('0x17')]=_0x480de2['ret'];_0x16e438[_0x0701('0x22')]['findOne']({'where':{'phone':_0x55d75a[_0x0701('0x9')],'CampaignId':_0x19dd85['id']}})[_0x0701('0x1d')](function(_0xc1fe0c){if(!_[_0x0701('0x19')](_0xc1fe0c)){throw new Error(_0x0701('0x23')+_0x55d75a[_0x0701('0x9')]+_0x0701('0x2f')+_0x19dd85['id']);}return _0x16e438[_0x0701('0x22')][_0x0701('0x25')]({'phone':_0x55d75a['phone'],'ContactId':_0x55d75a['id'],'ListId':_0x55d75a['ListId'],'priority':_0x55d75a['priority']?_0x55d75a[_0x0701('0x27')]:0x2,'scheduledat':_0x55d75a['scheduledat']?_0x55d75a[_0x0701('0x17')]:moment()[_0x0701('0x18')](_0x0701('0x21')),'callback':_0x55d75a[_0x0701('0x28')]?!![]:![],'callbackuniqueid':_0x55d75a[_0x0701('0x28')]?_0x55d75a['callbackUniqueid']:undefined,'callbackat':_0x55d75a[_0x0701('0x28')]?moment()[_0x0701('0x18')](_0x0701('0x21')):undefined,'CampaignId':_0x19dd85['id']});})[_0x0701('0x29')](function(_0x57a324){_0x1de0a0(_0x57a324);});});});};var _0x5114cc=function(_0x212351){return new BPromise(function(_0x167f84,_0x1375d6){_0x29bb24(_0x212351,_0x55d75a)[_0x0701('0x1d')](function(_0x46c1be){_0x55d75a[_0x0701('0x17')]=_0x46c1be['ret'];_0x16e438['CmHopper'][_0x0701('0x1c')]({'where':{'phone':_0x55d75a[_0x0701('0x9')],'CampaignId':_0x212351['id']}})[_0x0701('0x1d')](function(_0x4a04a1){if(!_['isNil'](_0x4a04a1)){throw new Error(_0x0701('0x23')+_0x55d75a['phone']+_0x0701('0x30')+_0x212351['id']);}return _0x16e438[_0x0701('0x31')][_0x0701('0x1c')]({'where':{'calleridnum':_0x55d75a[_0x0701('0x9')],'CampaignId':_0x212351['id']}});})['then'](function(_0x1bc380){if(!_[_0x0701('0x19')](_0x1bc380)){throw new Error(_0x0701('0x2b')+_0x55d75a[_0x0701('0x9')]+_0x0701('0x32')+_0x212351['id']);}return _0x16e438[_0x0701('0x22')][_0x0701('0x25')]({'phone':_0x55d75a['phone'],'ContactId':_0x55d75a['id'],'ListId':_0x55d75a[_0x0701('0x26')],'priority':_0x55d75a[_0x0701('0x27')]?_0x55d75a[_0x0701('0x27')]:0x2,'scheduledat':_0x55d75a[_0x0701('0x17')]?_0x55d75a['scheduledat']:moment()[_0x0701('0x18')](_0x0701('0x21')),'callback':_0x55d75a[_0x0701('0x28')]?!![]:![],'callbackuniqueid':_0x55d75a[_0x0701('0x28')]?_0x55d75a['callbackUniqueid']:undefined,'callbackat':_0x55d75a['callbackUniqueid']?moment()[_0x0701('0x18')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x212351['id']});})[_0x0701('0x29')](function(_0x2daf22){_0x1375d6(_0x2daf22);});});});};if(_0x55d75a['ListId']){_0x16e438[_0x0701('0x1b')][_0x0701('0x33')]({'where':{'type':'outbound'},'attributes':['id',_0x0701('0x34'),_0x0701('0x1a')],'include':[{'model':_0x16e438[_0x0701('0x35')],'as':_0x0701('0x36'),'where':{'id':_0x55d75a[_0x0701('0x26')]}}]})[_0x0701('0x1d')](function(_0x164c51){if(_0x164c51){var _0x259f55=[];for(var _0x4eab54=0x0,_0x447fb6;_0x4eab54<_0x164c51[_0x0701('0x37')];_0x4eab54+=0x1){_0x447fb6=_0x164c51[_0x4eab54]['get']({'plain':!![]});switch(_0x447fb6[_0x0701('0x34')]){case _0x0701('0x38'):_0x2fd2bc(_0x447fb6)[_0x0701('0x29')](_0x4457ae());break;case _0x0701('0x39'):_0x471e9f(_0x447fb6)['catch'](_0x4457ae());break;default:_0x29bb24(_0x447fb6,_0x55d75a)[_0x0701('0x1d')](function(_0x170c77){_0x55d75a[_0x0701('0x17')]=_0x170c77[_0x0701('0x2a')];_0x16e438[_0x0701('0x22')][_0x0701('0x25')]({'phone':_0x55d75a['phone'],'ContactId':_0x55d75a['id'],'ListId':_0x55d75a['ListId'],'scheduledat':_0x55d75a['scheduledat']?_0x55d75a[_0x0701('0x17')]:moment()[_0x0701('0x18')](_0x0701('0x21')),'priority':_0x55d75a['priority']?_0x55d75a[_0x0701('0x27')]:0x2,'callback':_0x55d75a[_0x0701('0x28')]?!![]:![],'callbackuniqueid':_0x55d75a['callbackUniqueid']?_0x55d75a[_0x0701('0x28')]:undefined,'callbackat':_0x55d75a[_0x0701('0x28')]?moment()[_0x0701('0x18')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x447fb6['id']})['catch'](_0x4457ae());});}}}})[_0x0701('0x1d')](function(){return _0x16e438[_0x0701('0x1b')][_0x0701('0x33')]({'where':{'type':_0x0701('0x3a')},'attributes':['id'],'include':[{'model':_0x16e438[_0x0701('0x35')],'as':_0x0701('0x3b'),'where':{'id':_0x55d75a[_0x0701('0x26')]}}]})['then'](function(_0x53ca46){if(_0x53ca46){var _0x641623=[];for(var _0x46f059=0x0,_0x46e43f;_0x46f059<_0x53ca46[_0x0701('0x37')];_0x46f059+=0x1){_0x46e43f=_0x53ca46[_0x46f059][_0x0701('0x13')]({'plain':!![]});_0x16e438[_0x0701('0x3c')][_0x0701('0x25')]({'phone':_0x55d75a[_0x0701('0x9')],'ContactId':_0x55d75a['id'],'ListId':_0x55d75a[_0x0701('0x26')],'VoiceQueueId':_0x46e43f['id']})[_0x0701('0x29')](function(_0x3ab260){logger[_0x0701('0x3d')](_0x0701('0x3e'),_0x0701('0x15'),_0x3ab260[_0x0701('0x3f')]);});}}});})[_0x0701('0x1d')](function(){return _0x16e438['Campaign'][_0x0701('0x33')]({'attributes':['id',_0x0701('0x34'),_0x0701('0x1a')],'include':[{'model':_0x16e438[_0x0701('0x35')],'as':_0x0701('0x36'),'where':{'id':_0x55d75a['ListId']}}]})[_0x0701('0x1d')](function(_0x29e42f){if(_0x29e42f){var _0x42c64f=[];for(var _0x258510=0x0,_0x53c199;_0x258510<_0x29e42f[_0x0701('0x37')];_0x258510+=0x1){_0x53c199=_0x29e42f[_0x258510]['get']({'plain':!![]});switch(_0x53c199[_0x0701('0x34')]){case _0x0701('0x38'):_0x5114cc(_0x53c199)[_0x0701('0x29')](_0x2e3ae0());break;case _0x0701('0x39'):_0x826455(_0x53c199)[_0x0701('0x29')](_0x2e3ae0());break;default:_0x16e438[_0x0701('0x22')][_0x0701('0x25')]({'phone':_0x55d75a[_0x0701('0x9')],'ContactId':_0x55d75a['id'],'ListId':_0x55d75a[_0x0701('0x26')],'scheduledat':_0x55d75a[_0x0701('0x17')]?_0x55d75a[_0x0701('0x17')]:moment()[_0x0701('0x18')](_0x0701('0x21')),'priority':_0x55d75a['priority']?_0x55d75a[_0x0701('0x27')]:0x2,'callback':_0x55d75a[_0x0701('0x28')]?!![]:![],'callbackuniqueid':_0x55d75a[_0x0701('0x28')]?_0x55d75a[_0x0701('0x28')]:undefined,'callbackat':_0x55d75a[_0x0701('0x28')]?moment()[_0x0701('0x18')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x53c199['id']})[_0x0701('0x29')](_0x2e3ae0());}}}});})['then'](function(){return _0x16e438[_0x0701('0x2d')]['findAll']({'attributes':['id'],'include':[{'model':_0x16e438['CmList'],'as':_0x0701('0x3b'),'where':{'id':_0x55d75a[_0x0701('0x26')]}}]})['then'](function(_0x21c77f){if(_0x21c77f){var _0x38de69=[];for(var _0x70eb16=0x0,_0x11746e;_0x70eb16<_0x21c77f[_0x0701('0x37')];_0x70eb16+=0x1){_0x11746e=_0x21c77f[_0x70eb16][_0x0701('0x13')]({'plain':!![]});_0x16e438[_0x0701('0x3c')][_0x0701('0x25')]({'phone':_0x55d75a[_0x0701('0x9')],'ContactId':_0x55d75a['id'],'ListId':_0x55d75a[_0x0701('0x26')],'CampaignId':_0x11746e['id']})[_0x0701('0x29')](function(_0x3d621f){logger[_0x0701('0x3d')](_0x0701('0x3e'),_0x0701('0x15'),_0x3d621f[_0x0701('0x3f')]);});}}});})['then'](function(){_0x47aad2();})[_0x0701('0x29')](function(_0x4042c6){logger['error'](_0x0701('0x3e'),'afterCreate',_0x4042c6[_0x0701('0x3f')]);_0x47aad2(_0x4042c6);});}else{_0x47aad2(new Error(_0x0701('0x40')));}},'afterDestroy':function(_0x4e3ad5,_0x16042c,_0x36762a){var _0x331d25=_0x179f52[_0x0701('0x12')];var _0x3e1010=_0x4e3ad5['get']({'plain':!![]});return _0x331d25[_0x0701('0x22')][_0x0701('0x33')]({'raw':!![],'where':{'ListId':_0x3e1010['ListId'],'ContactId':_0x3e1010['id']}})['then'](function(_0x27106c){if(!_['isEmpty'](_0x27106c)){var _0x3bfd03=[];for(var _0x3bdc29=0x0;_0x3bdc29<_0x27106c[_0x0701('0x37')];_0x3bdc29+=0x1){var _0x557137=_0x331d25[_0x0701('0x22')]['destroy']({'where':{'ListId':_0x27106c[_0x3bdc29][_0x0701('0x26')],'ContactId':_0x27106c[_0x3bdc29][_0x0701('0x41')],'VoiceQueueId':_0x27106c[_0x3bdc29][_0x0701('0x42')],'CampaignId':_0x27106c[_0x3bdc29][_0x0701('0x43')]}});_0x3bfd03['push'](_0x557137);}return BPromise[_0x0701('0x44')](_0x3bfd03);}})[_0x0701('0x1d')](function(_0x29691c){logger['info'](_0x0701('0x45'),util['inspect'](_0x29691c,{'showHidden':![],'depth':null}));_0x36762a();})[_0x0701('0x29')](function(_0x2f5612){logger['error'](_0x0701('0x46'),util[_0x0701('0x16')](_0x2f5612,{'showHidden':![],'depth':null}));_0x36762a(_0x2f5612);});}}});};
\ No newline at end of file
+var _0x5d74=['CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','ListId','error','afterCreate','Campaign','add','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','findAll','outbound','dialCheckDuplicateType','Lists','always','onlyIfOpen','CmList','BlackLists','cmContact,\x20%s,\x20%s','message','length','CmHopperBlack','List\x20not\x20found','isEmpty','destroy','VoiceQueueId','CampaignId','all','info','lodash','api','bluebird','request-promise','path','rimraf','../../config/environment','../../config/environment/shared','./cmContact.attributes','exports','define','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','mobile','fax','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','models','get','cmContact','inspect','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','isNil','VoiceQueue','findOne','dialTimezone','timezones','utcOffset','minutes','ret','CmHopper','then','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','priority','callbackUniqueid','catch','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'];(function(_0x1f9f37,_0x18776e){var _0x21c080=function(_0x4acb93){while(--_0x4acb93){_0x1f9f37['push'](_0x1f9f37['shift']());}};_0x21c080(++_0x18776e);}(_0x5d74,0xb5));var _0x45d7=function(_0xdd4e67,_0x1eeb95){_0xdd4e67=_0xdd4e67-0x0;var _0x3805f7=_0x5d74[_0xdd4e67];return _0x3805f7;};'use strict';var _=require(_0x45d7('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x45d7('0x1'));var moment=require('moment');var BPromise=require(_0x45d7('0x2'));var rp=require(_0x45d7('0x3'));var fs=require('fs');var path=require(_0x45d7('0x4'));var rimraf=require(_0x45d7('0x5'));var config=require(_0x45d7('0x6'));var shared=require(_0x45d7('0x7'));var attributes=require(_0x45d7('0x8'));module[_0x45d7('0x9')]=function(_0x57c76f,_0x2d0c18){return _0x57c76f[_0x45d7('0xa')](_0x45d7('0xb'),attributes,{'tableName':_0x45d7('0xc'),'paranoid':!![],'indexes':[{'name':_0x45d7('0xd'),'fields':[_0x45d7('0xd')]},{'name':_0x45d7('0xe'),'fields':[_0x45d7('0xf'),'lastName',_0x45d7('0xd'),_0x45d7('0x10'),_0x45d7('0x11'),'email'],'type':_0x45d7('0x12')}],'timestamps':!![],'charset':_0x45d7('0x13'),'collate':_0x45d7('0x14'),'hooks':{'afterCreate':function(_0x595add,_0x587900,_0x877a0a){var _0x5e77ad=_0x57c76f[_0x45d7('0x15')];var _0x30b649=_0x595add[_0x45d7('0x16')]({'plain':!![]});function _0x470d46(){return function(_0x44f9ec){logger['error'](_0x45d7('0x17'),'afterCreate',util[_0x45d7('0x18')](_0x44f9ec,{'showHidden':![],'depth':null}));};}function _0x1a89d9(_0x563437,_0x43e3f2){var _0x5edcbd=_0x43e3f2[_0x45d7('0x19')]?_0x43e3f2[_0x45d7('0x19')]:moment()[_0x45d7('0x1a')](_0x45d7('0x1b'));return new BPromise(function(_0xad8eb3,_0x27367f){if(_[_0x45d7('0x1c')](_0x43e3f2['dialTimezone'])){_0xad8eb3({'ret':_0x5edcbd});}else{_0x5e77ad[_0x45d7('0x1d')][_0x45d7('0x1e')]({'where':{'id':_0x563437['id']}})['then'](function(_0x42fdef){if(!_[_0x45d7('0x1c')](_0x42fdef)){var _0xc453ac=_0x42fdef[_0x45d7('0x1f')];if(!_[_0x45d7('0x1c')](_0xc453ac)){var _0x16cb18=shared[_0x45d7('0x20')];var _0x5a1d61=_0x16cb18[_0xc453ac];var _0x56ca51=_0x16cb18[_0x43e3f2[_0x45d7('0x1f')]];if(!_['isNil'](_0x5a1d61)&&!_[_0x45d7('0x1c')](_0x56ca51)){var _0x3097fa=_0x5a1d61['utcOffset']-_0x56ca51[_0x45d7('0x21')];_0x5edcbd=_0x43e3f2['scheduledat']?_0x43e3f2[_0x45d7('0x19')]:moment();var _0x845f1b=moment(_0x5edcbd)['add'](_0x3097fa,_0x45d7('0x22'));_0xad8eb3({'ret':_0x845f1b[_0x45d7('0x1a')]('YYYY-MM-DD\x20HH:mm:ss')});}else _0xad8eb3({'ret':_0x5edcbd});}else _0xad8eb3({'ret':_0x5edcbd});}else{_0xad8eb3({'ret':_0x5edcbd});}});}});return 0xa;}var _0x56af23=function(_0x187fe1){return new BPromise(function(_0x35cf87,_0x320dcb){_0x1a89d9(_0x187fe1,_0x30b649)['then'](function(_0x2a8b23){_0x30b649[_0x45d7('0x19')]=_0x2a8b23[_0x45d7('0x23')];_0x5e77ad[_0x45d7('0x24')]['findOne']({'where':{'phone':_0x30b649['phone'],'VoiceQueueId':_0x187fe1['id']}})[_0x45d7('0x25')](function(_0x1fea68){if(!_[_0x45d7('0x1c')](_0x1fea68)){throw new Error('cmContact,\x20afterCreate\x20'+_0x30b649[_0x45d7('0xd')]+_0x45d7('0x26')+_0x187fe1['id']);}return _0x5e77ad[_0x45d7('0x24')][_0x45d7('0x27')]({'phone':_0x30b649['phone'],'ContactId':_0x30b649['id'],'ListId':_0x30b649['ListId'],'priority':_0x30b649[_0x45d7('0x28')]?_0x30b649[_0x45d7('0x28')]:0x2,'scheduledat':_0x30b649[_0x45d7('0x19')]?_0x30b649[_0x45d7('0x19')]:moment()['format'](_0x45d7('0x1b')),'callback':_0x30b649[_0x45d7('0x29')]?!![]:![],'callbackuniqueid':_0x30b649['callbackUniqueid']?_0x30b649[_0x45d7('0x29')]:undefined,'callbackat':_0x30b649[_0x45d7('0x29')]?moment()[_0x45d7('0x1a')](_0x45d7('0x1b')):undefined,'VoiceQueueId':_0x187fe1['id']});})[_0x45d7('0x2a')](function(_0x5e8fa6){_0x320dcb(_0x5e8fa6);});});});};var _0x504097=function(_0x5d08c0){return new BPromise(function(_0x100d2f,_0x48e24b){_0x1a89d9(_0x5d08c0,_0x30b649)[_0x45d7('0x25')](function(_0x259563){_0x30b649[_0x45d7('0x19')]=_0x259563[_0x45d7('0x23')];_0x5e77ad['CmHopper'][_0x45d7('0x1e')]({'where':{'phone':_0x30b649['phone'],'VoiceQueueId':_0x5d08c0['id']}})['then'](function(_0x1c5fb3){if(!_['isNil'](_0x1c5fb3)){throw new Error('cmContact,\x20afterCreate\x20'+_0x30b649['phone']+_0x45d7('0x2b')+_0x5d08c0['id']);}return _0x5e77ad[_0x45d7('0x2c')][_0x45d7('0x1e')]({'where':{'calleridnum':_0x30b649[_0x45d7('0xd')],'VoiceQueueId':_0x5d08c0['id']}});})[_0x45d7('0x25')](function(_0xf48bd){if(!_['isNil'](_0xf48bd)){throw new Error(_0x45d7('0x2d')+_0x30b649[_0x45d7('0xd')]+_0x45d7('0x2e')+_0x5d08c0['id']);}return _0x5e77ad[_0x45d7('0x24')]['create']({'phone':_0x30b649[_0x45d7('0xd')],'ContactId':_0x30b649['id'],'ListId':_0x30b649[_0x45d7('0x2f')],'priority':_0x30b649[_0x45d7('0x28')]?_0x30b649[_0x45d7('0x28')]:0x2,'scheduledat':_0x30b649[_0x45d7('0x19')]?_0x30b649[_0x45d7('0x19')]:moment()[_0x45d7('0x1a')](_0x45d7('0x1b')),'callback':_0x30b649['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x30b649[_0x45d7('0x29')]?_0x30b649[_0x45d7('0x29')]:undefined,'callbackat':_0x30b649[_0x45d7('0x29')]?moment()['format'](_0x45d7('0x1b')):undefined,'VoiceQueueId':_0x5d08c0['id']});})[_0x45d7('0x2a')](function(_0x48123d){_0x48e24b(_0x48123d);});});});};function _0x444f58(){return function(_0x43dfe8){logger[_0x45d7('0x30')]('cmContact',_0x45d7('0x31'),util[_0x45d7('0x18')](_0x43dfe8,{'showHidden':![],'depth':null}));};}function _0x300a97(_0xff7022,_0x53feaa){var _0x43ab06=_0x53feaa[_0x45d7('0x19')]?_0x53feaa['scheduledat']:moment()[_0x45d7('0x1a')]('YYYY-MM-DD\x20HH:mm:ss');return new BPromise(function(_0x8cf565,_0x4c6545){if(_['isNil'](_0x53feaa[_0x45d7('0x1f')])){_0x8cf565({'ret':_0x43ab06});}else{_0x5e77ad[_0x45d7('0x32')][_0x45d7('0x1e')]({'where':{'id':_0xff7022['id']}})[_0x45d7('0x25')](function(_0x38e70f){if(!_[_0x45d7('0x1c')](_0x38e70f)){var _0x3b4d48=_0x38e70f['dialTimezone'];if(!_[_0x45d7('0x1c')](_0x3b4d48)){var _0x194848=shared[_0x45d7('0x20')];var _0x3d40fe=_0x194848[_0x3b4d48];var _0xf8007b=_0x194848[_0x53feaa['dialTimezone']];if(!_['isNil'](_0x3d40fe)&&!_[_0x45d7('0x1c')](_0xf8007b)){var _0x40485b=_0x3d40fe['utcOffset']-_0xf8007b[_0x45d7('0x21')];_0x43ab06=_0x53feaa['scheduledat']?_0x53feaa[_0x45d7('0x19')]:moment();var _0x5780a0=moment(_0x43ab06)[_0x45d7('0x33')](_0x40485b,'minutes');_0x8cf565({'ret':_0x5780a0[_0x45d7('0x1a')](_0x45d7('0x1b'))});}else _0x8cf565({'ret':_0x43ab06});}else _0x8cf565({'ret':_0x43ab06});}else{_0x8cf565({'ret':_0x43ab06});}});}});return 0xa;}var _0xaede76=function(_0x1affe5){return new BPromise(function(_0x352ab3,_0x256e6e){_0x300a97(_0x1affe5,_0x30b649)[_0x45d7('0x25')](function(_0x655535){_0x30b649['scheduledat']=_0x655535[_0x45d7('0x23')];_0x5e77ad[_0x45d7('0x24')][_0x45d7('0x1e')]({'where':{'phone':_0x30b649['phone'],'CampaignId':_0x1affe5['id']}})[_0x45d7('0x25')](function(_0x74b0c7){if(!_[_0x45d7('0x1c')](_0x74b0c7)){throw new Error(_0x45d7('0x34')+_0x30b649[_0x45d7('0xd')]+_0x45d7('0x35')+_0x1affe5['id']);}return _0x5e77ad[_0x45d7('0x24')][_0x45d7('0x27')]({'phone':_0x30b649[_0x45d7('0xd')],'ContactId':_0x30b649['id'],'ListId':_0x30b649['ListId'],'priority':_0x30b649['priority']?_0x30b649[_0x45d7('0x28')]:0x2,'scheduledat':_0x30b649[_0x45d7('0x19')]?_0x30b649[_0x45d7('0x19')]:moment()[_0x45d7('0x1a')](_0x45d7('0x1b')),'callback':_0x30b649[_0x45d7('0x29')]?!![]:![],'callbackuniqueid':_0x30b649[_0x45d7('0x29')]?_0x30b649[_0x45d7('0x29')]:undefined,'callbackat':_0x30b649['callbackUniqueid']?moment()[_0x45d7('0x1a')](_0x45d7('0x1b')):undefined,'CampaignId':_0x1affe5['id']});})[_0x45d7('0x2a')](function(_0x3b61df){_0x256e6e(_0x3b61df);});});});};var _0x760c1e=function(_0x16abc8){return new BPromise(function(_0x2c0b00,_0x5eddc2){_0x300a97(_0x16abc8,_0x30b649)[_0x45d7('0x25')](function(_0x2cc571){_0x30b649[_0x45d7('0x19')]=_0x2cc571['ret'];_0x5e77ad[_0x45d7('0x24')][_0x45d7('0x1e')]({'where':{'phone':_0x30b649['phone'],'CampaignId':_0x16abc8['id']}})[_0x45d7('0x25')](function(_0x223d82){if(!_[_0x45d7('0x1c')](_0x223d82)){throw new Error(_0x45d7('0x34')+_0x30b649[_0x45d7('0xd')]+_0x45d7('0x36')+_0x16abc8['id']);}return _0x5e77ad[_0x45d7('0x2c')][_0x45d7('0x1e')]({'where':{'calleridnum':_0x30b649[_0x45d7('0xd')],'CampaignId':_0x16abc8['id']}});})[_0x45d7('0x25')](function(_0x4434f4){if(!_['isNil'](_0x4434f4)){throw new Error(_0x45d7('0x2d')+_0x30b649[_0x45d7('0xd')]+_0x45d7('0x37')+_0x16abc8['id']);}return _0x5e77ad[_0x45d7('0x24')][_0x45d7('0x27')]({'phone':_0x30b649['phone'],'ContactId':_0x30b649['id'],'ListId':_0x30b649[_0x45d7('0x2f')],'priority':_0x30b649[_0x45d7('0x28')]?_0x30b649[_0x45d7('0x28')]:0x2,'scheduledat':_0x30b649['scheduledat']?_0x30b649[_0x45d7('0x19')]:moment()[_0x45d7('0x1a')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x30b649[_0x45d7('0x29')]?!![]:![],'callbackuniqueid':_0x30b649[_0x45d7('0x29')]?_0x30b649[_0x45d7('0x29')]:undefined,'callbackat':_0x30b649[_0x45d7('0x29')]?moment()['format'](_0x45d7('0x1b')):undefined,'CampaignId':_0x16abc8['id']});})[_0x45d7('0x2a')](function(_0x18e6bc){_0x5eddc2(_0x18e6bc);});});});};if(_0x30b649[_0x45d7('0x2f')]){_0x5e77ad[_0x45d7('0x1d')][_0x45d7('0x38')]({'where':{'type':_0x45d7('0x39')},'attributes':['id',_0x45d7('0x3a'),_0x45d7('0x1f')],'include':[{'model':_0x5e77ad['CmList'],'as':_0x45d7('0x3b'),'where':{'id':_0x30b649[_0x45d7('0x2f')]}}]})['then'](function(_0x3d68ef){if(_0x3d68ef){var _0x2d6b49=[];for(var _0x45afad=0x0,_0x27a7f0;_0x45afad<_0x3d68ef['length'];_0x45afad+=0x1){_0x27a7f0=_0x3d68ef[_0x45afad][_0x45d7('0x16')]({'plain':!![]});switch(_0x27a7f0['dialCheckDuplicateType']){case _0x45d7('0x3c'):_0x504097(_0x27a7f0)['catch'](_0x470d46());break;case _0x45d7('0x3d'):_0x56af23(_0x27a7f0)[_0x45d7('0x2a')](_0x470d46());break;default:_0x300a97(_0x27a7f0,_0x30b649)[_0x45d7('0x25')](function(_0x87cfd4){_0x30b649[_0x45d7('0x19')]=_0x87cfd4[_0x45d7('0x23')];_0x5e77ad[_0x45d7('0x24')][_0x45d7('0x27')]({'phone':_0x30b649[_0x45d7('0xd')],'ContactId':_0x30b649['id'],'ListId':_0x30b649[_0x45d7('0x2f')],'scheduledat':_0x30b649['scheduledat']?_0x30b649[_0x45d7('0x19')]:moment()[_0x45d7('0x1a')](_0x45d7('0x1b')),'priority':_0x30b649['priority']?_0x30b649[_0x45d7('0x28')]:0x2,'callback':_0x30b649['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x30b649[_0x45d7('0x29')]?_0x30b649[_0x45d7('0x29')]:undefined,'callbackat':_0x30b649['callbackUniqueid']?moment()['format'](_0x45d7('0x1b')):undefined,'VoiceQueueId':_0x27a7f0['id']})['catch'](_0x470d46());});}}}})[_0x45d7('0x25')](function(){return _0x5e77ad[_0x45d7('0x1d')][_0x45d7('0x38')]({'where':{'type':_0x45d7('0x39')},'attributes':['id'],'include':[{'model':_0x5e77ad[_0x45d7('0x3e')],'as':_0x45d7('0x3f'),'where':{'id':_0x30b649['ListId']}}]})[_0x45d7('0x25')](function(_0x197689){if(_0x197689){var _0x67bf68=[];for(var _0x2e4d4d=0x0,_0x5aa732;_0x2e4d4d<_0x197689['length'];_0x2e4d4d+=0x1){_0x5aa732=_0x197689[_0x2e4d4d][_0x45d7('0x16')]({'plain':!![]});_0x5e77ad['CmHopperBlack'][_0x45d7('0x27')]({'phone':_0x30b649[_0x45d7('0xd')],'ContactId':_0x30b649['id'],'ListId':_0x30b649[_0x45d7('0x2f')],'VoiceQueueId':_0x5aa732['id']})[_0x45d7('0x2a')](function(_0x131271){logger[_0x45d7('0x30')](_0x45d7('0x40'),_0x45d7('0x31'),_0x131271[_0x45d7('0x41')]);});}}});})[_0x45d7('0x25')](function(){return _0x5e77ad[_0x45d7('0x32')][_0x45d7('0x38')]({'attributes':['id','dialCheckDuplicateType',_0x45d7('0x1f')],'include':[{'model':_0x5e77ad[_0x45d7('0x3e')],'as':'Lists','where':{'id':_0x30b649['ListId']}}]})[_0x45d7('0x25')](function(_0xa56e3c){if(_0xa56e3c){var _0x149d66=[];for(var _0x297b24=0x0,_0x5cae5d;_0x297b24<_0xa56e3c[_0x45d7('0x42')];_0x297b24+=0x1){_0x5cae5d=_0xa56e3c[_0x297b24]['get']({'plain':!![]});switch(_0x5cae5d[_0x45d7('0x3a')]){case _0x45d7('0x3c'):_0x760c1e(_0x5cae5d)[_0x45d7('0x2a')](_0x444f58());break;case'onlyIfOpen':_0xaede76(_0x5cae5d)['catch'](_0x444f58());break;default:_0x5e77ad[_0x45d7('0x24')][_0x45d7('0x27')]({'phone':_0x30b649[_0x45d7('0xd')],'ContactId':_0x30b649['id'],'ListId':_0x30b649[_0x45d7('0x2f')],'scheduledat':_0x30b649[_0x45d7('0x19')]?_0x30b649[_0x45d7('0x19')]:moment()[_0x45d7('0x1a')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x30b649['priority']?_0x30b649[_0x45d7('0x28')]:0x2,'callback':_0x30b649['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x30b649[_0x45d7('0x29')]?_0x30b649[_0x45d7('0x29')]:undefined,'callbackat':_0x30b649[_0x45d7('0x29')]?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x5cae5d['id']})[_0x45d7('0x2a')](_0x444f58());}}}});})[_0x45d7('0x25')](function(){return _0x5e77ad[_0x45d7('0x32')]['findAll']({'attributes':['id'],'include':[{'model':_0x5e77ad[_0x45d7('0x3e')],'as':'BlackLists','where':{'id':_0x30b649['ListId']}}]})[_0x45d7('0x25')](function(_0x152e59){if(_0x152e59){var _0xc6a2dd=[];for(var _0x570088=0x0,_0xce36f4;_0x570088<_0x152e59['length'];_0x570088+=0x1){_0xce36f4=_0x152e59[_0x570088][_0x45d7('0x16')]({'plain':!![]});_0x5e77ad[_0x45d7('0x43')][_0x45d7('0x27')]({'phone':_0x30b649[_0x45d7('0xd')],'ContactId':_0x30b649['id'],'ListId':_0x30b649[_0x45d7('0x2f')],'CampaignId':_0xce36f4['id']})[_0x45d7('0x2a')](function(_0x3df0c1){logger[_0x45d7('0x30')]('cmContact,\x20%s,\x20%s','afterCreate',_0x3df0c1[_0x45d7('0x41')]);});}}});})[_0x45d7('0x25')](function(){_0x877a0a();})[_0x45d7('0x2a')](function(_0x1b2237){logger[_0x45d7('0x30')](_0x45d7('0x40'),_0x45d7('0x31'),_0x1b2237[_0x45d7('0x41')]);_0x877a0a(_0x1b2237);});}else{_0x877a0a(new Error(_0x45d7('0x44')));}},'afterDestroy':function(_0x52b9e0,_0x5497a4,_0x4b5f41){var _0x3e191a=_0x57c76f[_0x45d7('0x15')];var _0x2f7fdf=_0x52b9e0['get']({'plain':!![]});return _0x3e191a['CmHopper'][_0x45d7('0x38')]({'raw':!![],'where':{'ListId':_0x2f7fdf[_0x45d7('0x2f')],'ContactId':_0x2f7fdf['id']}})[_0x45d7('0x25')](function(_0x183a1a){if(!_[_0x45d7('0x45')](_0x183a1a)){var _0x442568=[];for(var _0x5dc202=0x0;_0x5dc202<_0x183a1a['length'];_0x5dc202+=0x1){var _0x1079e9=_0x3e191a[_0x45d7('0x24')][_0x45d7('0x46')]({'where':{'ListId':_0x183a1a[_0x5dc202]['ListId'],'ContactId':_0x183a1a[_0x5dc202]['ContactId'],'VoiceQueueId':_0x183a1a[_0x5dc202][_0x45d7('0x47')],'CampaignId':_0x183a1a[_0x5dc202][_0x45d7('0x48')]}});_0x442568['push'](_0x1079e9);}return BPromise[_0x45d7('0x49')](_0x442568);}})[_0x45d7('0x25')](function(_0x4cb527){logger[_0x45d7('0x4a')]('[CmContact][afterDestroy][Succesfull]',util[_0x45d7('0x18')](_0x4cb527,{'showHidden':![],'depth':null}));_0x4b5f41();})[_0x45d7('0x2a')](function(_0x375691){logger[_0x45d7('0x30')]('[CmContact][afterDestroy][Error]',util['inspect'](_0x375691,{'showHidden':![],'depth':null}));_0x4b5f41(_0x375691);});}}});};
\ No newline at end of file
index 4ec0ec9..75dabec 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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'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(_0x24f757,_0xdece0){var _0x2390a8=function(_0xb7a261){while(--_0xb7a261){_0x24f757['push'](_0x24f757['shift']());}};_0x2390a8(++_0xdece0);}(_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 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 4fce598..6f5f23f 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(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0xa9e0[_0x3b5250];return _0xc844a1;};'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(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xa9e0[_0x220dbb];return _0x2b77de;};'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 fae879c..441ff6c 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(_0x3ba015,_0x944c3b){var _0x1c0882=function(_0x4ad922){while(--_0x4ad922){_0x3ba015['push'](_0x3ba015['shift']());}};_0x1c0882(++_0x944c3b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa9e0[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));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(_0x23b5be,_0xc4ad3c){var _0x442804=function(_0x3cb434){while(--_0x3cb434){_0x23b5be['push'](_0x23b5be['shift']());}};_0x442804(++_0xc4ad3c);}(_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'));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 d1eef90..0fd9d6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6fb=['INTEGER','STRING','PHONE'];(function(_0x123b36,_0x1ca4f1){var _0x266f28=function(_0x338d08){while(--_0x338d08){_0x123b36['push'](_0x123b36['shift']());}};_0x266f28(++_0x1ca4f1);}(_0xf6fb,0x111));var _0xbf6f=function(_0x28c510,_0x1d2bb0){_0x28c510=_0x28c510-0x0;var _0x1a70a1=_0xf6fb[_0x28c510];return _0x1a70a1;};'use strict';var Sequelize=require('sequelize');module['exports']={'CmContactId':{'type':Sequelize[_0xbf6f('0x0')],'primaryKey':!![]},'item':{'type':Sequelize[_0xbf6f('0x1')],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize['INTEGER'],'defaultValue':null},'ItemClass':{'type':Sequelize[_0xbf6f('0x1')],'defaultValue':_0xbf6f('0x2')},'OrderBy':{'type':Sequelize['INTEGER'],'defaultValue':null},'description':{'type':Sequelize[_0xbf6f('0x1')],'defaultValue':null}};
\ No newline at end of file
+var _0xa9e0=['exports','INTEGER','STRING','sequelize'];(function(_0x2b1e9d,_0x5df2cf){var _0x1a978f=function(_0x838ebe){while(--_0x838ebe){_0x2b1e9d['push'](_0x2b1e9d['shift']());}};_0x1a978f(++_0x5df2cf);}(_0xa9e0,0x123));var _0x0a9e=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xa9e0[_0xa1e3e3];return _0xc980e9;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'CmContactId':{'type':Sequelize[_0x0a9e('0x2')],'primaryKey':!![]},'item':{'type':Sequelize['STRING'],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize['INTEGER'],'defaultValue':null},'ItemClass':{'type':Sequelize[_0x0a9e('0x3')],'defaultValue':'PHONE'},'OrderBy':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':null},'description':{'type':Sequelize[_0x0a9e('0x3')],'defaultValue':null}};
\ No newline at end of file
index 26c9c1b..109fb6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3a1=['api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','limit','undefined','count','apply','save','update','destroy','then','get','CmContactHasItems','UserProfileResource','sendStatus','name','send','index','map','CmContactHasItem','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','merge','filter','includeAll','include','findAll','rows','show','params','length','options','find','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs'];(function(_0x173f10,_0x35db61){var _0x53142d=function(_0x37bbef){while(--_0x37bbef){_0x173f10['push'](_0x173f10['shift']());}};_0x53142d(++_0x35db61);}(_0xa3a1,0xcd));var _0x1a3a=function(_0x561507,_0x455c47){_0x561507=_0x561507-0x0;var _0x17f7fa=_0xa3a1[_0x561507];return _0x17f7fa;};'use strict';var emlformat=require(_0x1a3a('0x0'));var rimraf=require(_0x1a3a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1a3a('0x2'));var rp=require('request-promise');var moment=require(_0x1a3a('0x3'));var BPromise=require(_0x1a3a('0x4'));var Mustache=require('mustache');var util=require(_0x1a3a('0x5'));var path=require(_0x1a3a('0x6'));var sox=require(_0x1a3a('0x7'));var csv=require(_0x1a3a('0x8'));var ejs=require(_0x1a3a('0x9'));var fs=require('fs');var fs_extra=require(_0x1a3a('0xa'));var _=require(_0x1a3a('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x1a3a('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x1a3a('0x8'));var querystring=require(_0x1a3a('0xd'));var Papa=require(_0x1a3a('0xe'));var Redis=require('ioredis');var authService=require(_0x1a3a('0xf'));var qs=require(_0x1a3a('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x1a3a('0x11'));var utils=require(_0x1a3a('0x12'));var config=require(_0x1a3a('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x1a3a('0x14'))['db'];function respondWithStatusCode(_0x54b9a3,_0x46f10f){_0x46f10f=_0x46f10f||0xcc;return function(_0x3acf80){if(_0x3acf80){return _0x54b9a3['sendStatus'](_0x46f10f);}return _0x54b9a3[_0x1a3a('0x15')](_0x46f10f)[_0x1a3a('0x16')]();};}function respondWithResult(_0x5424c4,_0x372be0){_0x372be0=_0x372be0||0xc8;return function(_0x427c1e){if(_0x427c1e){return _0x5424c4[_0x1a3a('0x15')](_0x372be0)[_0x1a3a('0x17')](_0x427c1e);}};}function respondWithFilteredResult(_0x525a6a,_0x513c88){return function(_0x4740ce){if(_0x4740ce){var _0x4dffef=typeof _0x513c88[_0x1a3a('0x18')]==='undefined'&&typeof _0x513c88[_0x1a3a('0x19')]===_0x1a3a('0x1a');var _0x3d57ec=_0x4740ce[_0x1a3a('0x1b')];var _0x245cdb=_0x4dffef?0x0:_0x513c88['offset'];var _0x1b7f09=_0x4dffef?_0x4740ce[_0x1a3a('0x1b')]:_0x513c88['offset']+_0x513c88[_0x1a3a('0x19')];var _0x4a6323;if(_0x1b7f09>=_0x3d57ec){_0x1b7f09=_0x3d57ec;_0x4a6323=0xc8;}else{_0x4a6323=0xce;}_0x525a6a[_0x1a3a('0x15')](_0x4a6323);return _0x525a6a['set']('Content-Range',_0x245cdb+'-'+_0x1b7f09+'/'+_0x3d57ec)['json'](_0x4740ce);}return null;};}function patchUpdates(_0x3bfe89){return function(_0x1ae815){try{jsonpatch[_0x1a3a('0x1c')](_0x1ae815,_0x3bfe89,!![]);}catch(_0x1594f8){return BPromise['reject'](_0x1594f8);}return _0x1ae815[_0x1a3a('0x1d')]();};}function saveUpdates(_0x3ae126,_0x4a11e1){return function(_0x2e7e51){if(_0x2e7e51){return _0x2e7e51[_0x1a3a('0x1e')](_0x3ae126)['then'](function(_0x39a02){return _0x39a02;});}return null;};}function removeEntity(_0x4a4e5a,_0x98b88f){return function(_0x2df3cf){if(_0x2df3cf){return _0x2df3cf[_0x1a3a('0x1f')]()[_0x1a3a('0x20')](function(){var _0x3d1122=_0x2df3cf[_0x1a3a('0x21')]({'plain':!![]});var _0x3eb26b=_0x1a3a('0x22');return db[_0x1a3a('0x23')][_0x1a3a('0x1f')]({'where':{'type':_0x3eb26b,'resourceId':_0x3d1122['id']}})[_0x1a3a('0x20')](function(){return _0x2df3cf;});})[_0x1a3a('0x20')](function(){_0x4a4e5a[_0x1a3a('0x15')](0xcc)[_0x1a3a('0x16')]();});}};}function handleEntityNotFound(_0x4c864e,_0x35cf43){return function(_0x139d70){if(!_0x139d70){_0x4c864e[_0x1a3a('0x24')](0x194);}return _0x139d70;};}function handleError(_0x347a2a,_0x4c206f){_0x4c206f=_0x4c206f||0x1f4;return function(_0x1db581){logger['error'](_0x1db581['stack']);if(_0x1db581['name']){delete _0x1db581[_0x1a3a('0x25')];}_0x347a2a[_0x1a3a('0x15')](_0x4c206f)[_0x1a3a('0x26')](_0x1db581);};}exports[_0x1a3a('0x27')]=function(_0x39adfc,_0x37a72d){var _0x44d217={},_0x1c4788={},_0x34f56d={'count':0x0,'rows':[]};var _0x1489e8=_[_0x1a3a('0x28')](db[_0x1a3a('0x29')][_0x1a3a('0x2a')],function(_0x317762){return{'name':_0x317762['fieldName'],'type':_0x317762[_0x1a3a('0x2b')]['key']};});_0x1c4788[_0x1a3a('0x2c')]=_[_0x1a3a('0x28')](_0x1489e8,_0x1a3a('0x25'));_0x1c4788[_0x1a3a('0x2d')]=_[_0x1a3a('0x2e')](_0x39adfc[_0x1a3a('0x2d')]);_0x1c4788[_0x1a3a('0x2f')]=_[_0x1a3a('0x30')](_0x1c4788[_0x1a3a('0x2c')],_0x1c4788[_0x1a3a('0x2d')]);_0x44d217[_0x1a3a('0x31')]=_[_0x1a3a('0x30')](_0x1c4788['model'],qs[_0x1a3a('0x32')](_0x39adfc[_0x1a3a('0x2d')]['fields']));_0x44d217[_0x1a3a('0x31')]=_0x44d217[_0x1a3a('0x31')]['length']?_0x44d217[_0x1a3a('0x31')]:_0x1c4788['model'];if(!_0x39adfc['query'][_0x1a3a('0x33')](_0x1a3a('0x34'))){_0x44d217['limit']=qs[_0x1a3a('0x19')](_0x39adfc[_0x1a3a('0x2d')][_0x1a3a('0x19')]);_0x44d217[_0x1a3a('0x18')]=qs['offset'](_0x39adfc[_0x1a3a('0x2d')]['offset']);}_0x44d217['order']=qs[_0x1a3a('0x35')](_0x39adfc[_0x1a3a('0x2d')][_0x1a3a('0x35')]);_0x44d217[_0x1a3a('0x36')]=qs[_0x1a3a('0x2f')](_['pick'](_0x39adfc[_0x1a3a('0x2d')],_0x1c4788[_0x1a3a('0x2f')]),_0x1489e8);if(_0x39adfc[_0x1a3a('0x2d')]['filter']){_0x44d217[_0x1a3a('0x36')]=_[_0x1a3a('0x37')](_0x44d217[_0x1a3a('0x36')],{'$or':_[_0x1a3a('0x28')](_0x1489e8,function(_0xf0191e){if(_0xf0191e[_0x1a3a('0x2b')]!=='VIRTUAL'){var _0x51e4df={};_0x51e4df[_0xf0191e['name']]={'$like':'%'+_0x39adfc[_0x1a3a('0x2d')][_0x1a3a('0x38')]+'%'};return _0x51e4df;}})});}_0x44d217=_['merge']({},_0x44d217,_0x39adfc['options']);var _0x5afb0c={'where':_0x44d217[_0x1a3a('0x36')]};return db['CmContactHasItem']['count'](_0x5afb0c)[_0x1a3a('0x20')](function(_0x2ea72a){_0x34f56d['count']=_0x2ea72a;if(_0x39adfc[_0x1a3a('0x2d')][_0x1a3a('0x39')]){_0x44d217[_0x1a3a('0x3a')]=[{'all':!![]}];}return db[_0x1a3a('0x29')][_0x1a3a('0x3b')](_0x44d217);})[_0x1a3a('0x20')](function(_0x1ca2ec){_0x34f56d[_0x1a3a('0x3c')]=_0x1ca2ec;return _0x34f56d;})[_0x1a3a('0x20')](respondWithFilteredResult(_0x37a72d,_0x44d217))['catch'](handleError(_0x37a72d,null));};exports[_0x1a3a('0x3d')]=function(_0x2fe9d6,_0x4d4a80){var _0x210ad9={'raw':!![],'where':{'id':_0x2fe9d6[_0x1a3a('0x3e')]['id']}},_0xb0568b={};_0xb0568b[_0x1a3a('0x2c')]=_[_0x1a3a('0x2e')](db[_0x1a3a('0x29')][_0x1a3a('0x2a')]);_0xb0568b[_0x1a3a('0x2d')]=_[_0x1a3a('0x2e')](_0x2fe9d6[_0x1a3a('0x2d')]);_0xb0568b['filters']=_[_0x1a3a('0x30')](_0xb0568b[_0x1a3a('0x2c')],_0xb0568b[_0x1a3a('0x2d')]);_0x210ad9['attributes']=_[_0x1a3a('0x30')](_0xb0568b[_0x1a3a('0x2c')],qs[_0x1a3a('0x32')](_0x2fe9d6['query']['fields']));_0x210ad9[_0x1a3a('0x31')]=_0x210ad9['attributes'][_0x1a3a('0x3f')]?_0x210ad9[_0x1a3a('0x31')]:_0xb0568b[_0x1a3a('0x2c')];if(_0x2fe9d6['query'][_0x1a3a('0x39')]){_0x210ad9[_0x1a3a('0x3a')]=[{'all':!![]}];}_0x210ad9=_[_0x1a3a('0x37')]({},_0x210ad9,_0x2fe9d6[_0x1a3a('0x40')]);return db[_0x1a3a('0x29')][_0x1a3a('0x41')](_0x210ad9)[_0x1a3a('0x20')](handleEntityNotFound(_0x4d4a80,null))[_0x1a3a('0x20')](respondWithResult(_0x4d4a80,null))[_0x1a3a('0x42')](handleError(_0x4d4a80,null));};exports[_0x1a3a('0x43')]=function(_0x25c157,_0xb57e0e){return db[_0x1a3a('0x29')][_0x1a3a('0x43')](_0x25c157[_0x1a3a('0x44')],{})[_0x1a3a('0x20')](function(_0x25e2d9){var _0x43fceb=_0x25c157['user'][_0x1a3a('0x21')]({'plain':!![]});if(!_0x43fceb)throw new Error(_0x1a3a('0x45'));if(_0x43fceb[_0x1a3a('0x46')]===_0x1a3a('0x47')){var _0xb33d08=_0x25e2d9[_0x1a3a('0x21')]({'plain':!![]});var _0x4ddb80=_0x1a3a('0x22');return db['UserProfileSection'][_0x1a3a('0x41')]({'where':{'name':_0x4ddb80,'userProfileId':_0x43fceb['userProfileId']},'raw':!![]})[_0x1a3a('0x20')](function(_0x46f269){if(_0x46f269&&_0x46f269['autoAssociation']===0x0){return db[_0x1a3a('0x23')][_0x1a3a('0x43')]({'name':_0xb33d08[_0x1a3a('0x25')],'resourceId':_0xb33d08['id'],'type':_0x46f269[_0x1a3a('0x25')],'sectionId':_0x46f269['id']},{})[_0x1a3a('0x20')](function(){return _0x25e2d9;});}else{return _0x25e2d9;}})[_0x1a3a('0x42')](function(_0x44a388){logger[_0x1a3a('0x48')](_0x1a3a('0x49'),_0x44a388);throw _0x44a388;});}return _0x25e2d9;})[_0x1a3a('0x20')](respondWithResult(_0xb57e0e,0xc9))[_0x1a3a('0x42')](handleError(_0xb57e0e,null));};exports[_0x1a3a('0x1e')]=function(_0x1b94cb,_0x3da45c){if(_0x1b94cb[_0x1a3a('0x44')]['id']){delete _0x1b94cb[_0x1a3a('0x44')]['id'];}return db['CmContactHasItem'][_0x1a3a('0x41')]({'where':{'id':_0x1b94cb[_0x1a3a('0x3e')]['id']}})[_0x1a3a('0x20')](handleEntityNotFound(_0x3da45c,null))[_0x1a3a('0x20')](saveUpdates(_0x1b94cb[_0x1a3a('0x44')],null))[_0x1a3a('0x20')](respondWithResult(_0x3da45c,null))[_0x1a3a('0x42')](handleError(_0x3da45c,null));};exports['destroy']=function(_0x8a2795,_0x2acf45){return db[_0x1a3a('0x29')][_0x1a3a('0x41')]({'where':{'id':_0x8a2795['params']['id']}})[_0x1a3a('0x20')](handleEntityNotFound(_0x2acf45,null))['then'](removeEntity(_0x2acf45,null))[_0x1a3a('0x42')](handleError(_0x2acf45,null));};
\ No newline at end of file
+var _0xdc92=['offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','CmContactHasItems','UserProfileResource','sendStatus','error','stack','name','send','CmContactHasItem','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','nolimit','sort','where','pick','merge','type','filter','rows','catch','show','rawAttributes','includeAll','include','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','zip-dir','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json'];(function(_0x1d056a,_0x293d07){var _0x8e14c0=function(_0xb2a20a){while(--_0xb2a20a){_0x1d056a['push'](_0x1d056a['shift']());}};_0x8e14c0(++_0x293d07);}(_0xdc92,0x8b));var _0x2dc9=function(_0x431ff8,_0x4085dd){_0x431ff8=_0x431ff8-0x0;var _0x84ccd4=_0xdc92[_0x431ff8];return _0x84ccd4;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x2dc9('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2dc9('0x1'));var moment=require(_0x2dc9('0x2'));var BPromise=require(_0x2dc9('0x3'));var Mustache=require(_0x2dc9('0x4'));var util=require(_0x2dc9('0x5'));var path=require(_0x2dc9('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x2dc9('0x7'));var fs=require('fs');var fs_extra=require(_0x2dc9('0x8'));var _=require(_0x2dc9('0x9'));var squel=require(_0x2dc9('0xa'));var crypto=require(_0x2dc9('0xb'));var jsforce=require(_0x2dc9('0xc'));var deskjs=require(_0x2dc9('0xd'));var toCsv=require(_0x2dc9('0xe'));var querystring=require('querystring');var Papa=require(_0x2dc9('0xf'));var Redis=require(_0x2dc9('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x2dc9('0x11'));var as=require(_0x2dc9('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2dc9('0x13'))(_0x2dc9('0x14'));var utils=require(_0x2dc9('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x2dc9('0x16'));var db=require(_0x2dc9('0x17'))['db'];function respondWithStatusCode(_0x325d55,_0x25d2a1){_0x25d2a1=_0x25d2a1||0xcc;return function(_0x24987e){if(_0x24987e){return _0x325d55['sendStatus'](_0x25d2a1);}return _0x325d55[_0x2dc9('0x18')](_0x25d2a1)[_0x2dc9('0x19')]();};}function respondWithResult(_0x152e94,_0x134ab2){_0x134ab2=_0x134ab2||0xc8;return function(_0x340a0d){if(_0x340a0d){return _0x152e94[_0x2dc9('0x18')](_0x134ab2)[_0x2dc9('0x1a')](_0x340a0d);}};}function respondWithFilteredResult(_0x4cf01f,_0x327b8c){return function(_0x4046c5){if(_0x4046c5){var _0x383785=typeof _0x327b8c[_0x2dc9('0x1b')]===_0x2dc9('0x1c')&&typeof _0x327b8c[_0x2dc9('0x1d')]===_0x2dc9('0x1c');var _0xa9955=_0x4046c5['count'];var _0x56ae91=_0x383785?0x0:_0x327b8c[_0x2dc9('0x1b')];var _0x48f01d=_0x383785?_0x4046c5[_0x2dc9('0x1e')]:_0x327b8c[_0x2dc9('0x1b')]+_0x327b8c[_0x2dc9('0x1d')];var _0x3aa320;if(_0x48f01d>=_0xa9955){_0x48f01d=_0xa9955;_0x3aa320=0xc8;}else{_0x3aa320=0xce;}_0x4cf01f[_0x2dc9('0x18')](_0x3aa320);return _0x4cf01f[_0x2dc9('0x1f')](_0x2dc9('0x20'),_0x56ae91+'-'+_0x48f01d+'/'+_0xa9955)[_0x2dc9('0x1a')](_0x4046c5);}return null;};}function patchUpdates(_0x232eee){return function(_0x418024){try{jsonpatch[_0x2dc9('0x21')](_0x418024,_0x232eee,!![]);}catch(_0x2c4bee){return BPromise[_0x2dc9('0x22')](_0x2c4bee);}return _0x418024[_0x2dc9('0x23')]();};}function saveUpdates(_0x4a9481,_0x27988c){return function(_0xfc7ec9){if(_0xfc7ec9){return _0xfc7ec9[_0x2dc9('0x24')](_0x4a9481)[_0x2dc9('0x25')](function(_0x29831d){return _0x29831d;});}return null;};}function removeEntity(_0x288e15,_0x50a556){return function(_0x3a975d){if(_0x3a975d){return _0x3a975d[_0x2dc9('0x26')]()['then'](function(){var _0x56a690=_0x3a975d[_0x2dc9('0x27')]({'plain':!![]});var _0x41270b=_0x2dc9('0x28');return db[_0x2dc9('0x29')][_0x2dc9('0x26')]({'where':{'type':_0x41270b,'resourceId':_0x56a690['id']}})[_0x2dc9('0x25')](function(){return _0x3a975d;});})[_0x2dc9('0x25')](function(){_0x288e15['status'](0xcc)[_0x2dc9('0x19')]();});}};}function handleEntityNotFound(_0x533375,_0x4e183e){return function(_0x232de7){if(!_0x232de7){_0x533375[_0x2dc9('0x2a')](0x194);}return _0x232de7;};}function handleError(_0x425ff4,_0x17a4b8){_0x17a4b8=_0x17a4b8||0x1f4;return function(_0x22cac3){logger[_0x2dc9('0x2b')](_0x22cac3[_0x2dc9('0x2c')]);if(_0x22cac3['name']){delete _0x22cac3[_0x2dc9('0x2d')];}_0x425ff4[_0x2dc9('0x18')](_0x17a4b8)[_0x2dc9('0x2e')](_0x22cac3);};}exports['index']=function(_0x4a65b7,_0x1d0c02){var _0x264b2c={},_0x29ea23={},_0x1b6698={'count':0x0,'rows':[]};var _0x4cbe7=_['map'](db[_0x2dc9('0x2f')]['rawAttributes'],function(_0x4ca9d2){return{'name':_0x4ca9d2[_0x2dc9('0x30')],'type':_0x4ca9d2['type'][_0x2dc9('0x31')]};});_0x29ea23[_0x2dc9('0x32')]=_[_0x2dc9('0x33')](_0x4cbe7,_0x2dc9('0x2d'));_0x29ea23[_0x2dc9('0x34')]=_[_0x2dc9('0x35')](_0x4a65b7['query']);_0x29ea23[_0x2dc9('0x36')]=_[_0x2dc9('0x37')](_0x29ea23[_0x2dc9('0x32')],_0x29ea23[_0x2dc9('0x34')]);_0x264b2c['attributes']=_[_0x2dc9('0x37')](_0x29ea23[_0x2dc9('0x32')],qs['fields'](_0x4a65b7['query'][_0x2dc9('0x38')]));_0x264b2c[_0x2dc9('0x39')]=_0x264b2c[_0x2dc9('0x39')][_0x2dc9('0x3a')]?_0x264b2c[_0x2dc9('0x39')]:_0x29ea23[_0x2dc9('0x32')];if(!_0x4a65b7['query']['hasOwnProperty'](_0x2dc9('0x3b'))){_0x264b2c[_0x2dc9('0x1d')]=qs['limit'](_0x4a65b7[_0x2dc9('0x34')]['limit']);_0x264b2c[_0x2dc9('0x1b')]=qs[_0x2dc9('0x1b')](_0x4a65b7[_0x2dc9('0x34')][_0x2dc9('0x1b')]);}_0x264b2c['order']=qs[_0x2dc9('0x3c')](_0x4a65b7[_0x2dc9('0x34')][_0x2dc9('0x3c')]);_0x264b2c[_0x2dc9('0x3d')]=qs[_0x2dc9('0x36')](_[_0x2dc9('0x3e')](_0x4a65b7[_0x2dc9('0x34')],_0x29ea23[_0x2dc9('0x36')]),_0x4cbe7);if(_0x4a65b7[_0x2dc9('0x34')]['filter']){_0x264b2c['where']=_[_0x2dc9('0x3f')](_0x264b2c[_0x2dc9('0x3d')],{'$or':_[_0x2dc9('0x33')](_0x4cbe7,function(_0x1dca68){if(_0x1dca68[_0x2dc9('0x40')]!=='VIRTUAL'){var _0x885b33={};_0x885b33[_0x1dca68[_0x2dc9('0x2d')]]={'$like':'%'+_0x4a65b7['query'][_0x2dc9('0x41')]+'%'};return _0x885b33;}})});}_0x264b2c=_['merge']({},_0x264b2c,_0x4a65b7['options']);var _0x24b138={'where':_0x264b2c[_0x2dc9('0x3d')]};return db[_0x2dc9('0x2f')]['count'](_0x24b138)[_0x2dc9('0x25')](function(_0x58b613){_0x1b6698[_0x2dc9('0x1e')]=_0x58b613;if(_0x4a65b7['query']['includeAll']){_0x264b2c['include']=[{'all':!![]}];}return db[_0x2dc9('0x2f')]['findAll'](_0x264b2c);})[_0x2dc9('0x25')](function(_0x46d989){_0x1b6698[_0x2dc9('0x42')]=_0x46d989;return _0x1b6698;})['then'](respondWithFilteredResult(_0x1d0c02,_0x264b2c))[_0x2dc9('0x43')](handleError(_0x1d0c02,null));};exports[_0x2dc9('0x44')]=function(_0x400812,_0x25fc9d){var _0x4cc7d1={'raw':!![],'where':{'id':_0x400812['params']['id']}},_0x4c96d5={};_0x4c96d5[_0x2dc9('0x32')]=_['keys'](db['CmContactHasItem'][_0x2dc9('0x45')]);_0x4c96d5[_0x2dc9('0x34')]=_[_0x2dc9('0x35')](_0x400812[_0x2dc9('0x34')]);_0x4c96d5[_0x2dc9('0x36')]=_[_0x2dc9('0x37')](_0x4c96d5[_0x2dc9('0x32')],_0x4c96d5['query']);_0x4cc7d1[_0x2dc9('0x39')]=_['intersection'](_0x4c96d5[_0x2dc9('0x32')],qs[_0x2dc9('0x38')](_0x400812[_0x2dc9('0x34')][_0x2dc9('0x38')]));_0x4cc7d1[_0x2dc9('0x39')]=_0x4cc7d1['attributes']['length']?_0x4cc7d1[_0x2dc9('0x39')]:_0x4c96d5[_0x2dc9('0x32')];if(_0x400812['query'][_0x2dc9('0x46')]){_0x4cc7d1[_0x2dc9('0x47')]=[{'all':!![]}];}_0x4cc7d1=_[_0x2dc9('0x3f')]({},_0x4cc7d1,_0x400812[_0x2dc9('0x48')]);return db['CmContactHasItem'][_0x2dc9('0x49')](_0x4cc7d1)[_0x2dc9('0x25')](handleEntityNotFound(_0x25fc9d,null))['then'](respondWithResult(_0x25fc9d,null))[_0x2dc9('0x43')](handleError(_0x25fc9d,null));};exports[_0x2dc9('0x4a')]=function(_0x1a08b6,_0x3b4c47){return db['CmContactHasItem'][_0x2dc9('0x4a')](_0x1a08b6[_0x2dc9('0x4b')],{})['then'](function(_0x2392ee){var _0x1478b0=_0x1a08b6[_0x2dc9('0x4c')][_0x2dc9('0x27')]({'plain':!![]});if(!_0x1478b0)throw new Error(_0x2dc9('0x4d'));if(_0x1478b0['role']===_0x2dc9('0x4c')){var _0x21bc99=_0x2392ee[_0x2dc9('0x27')]({'plain':!![]});var _0x28d434='CmContactHasItems';return db[_0x2dc9('0x4e')][_0x2dc9('0x49')]({'where':{'name':_0x28d434,'userProfileId':_0x1478b0[_0x2dc9('0x4f')]},'raw':!![]})[_0x2dc9('0x25')](function(_0x538925){if(_0x538925&&_0x538925[_0x2dc9('0x50')]===0x0){return db[_0x2dc9('0x29')][_0x2dc9('0x4a')]({'name':_0x21bc99[_0x2dc9('0x2d')],'resourceId':_0x21bc99['id'],'type':_0x538925[_0x2dc9('0x2d')],'sectionId':_0x538925['id']},{})[_0x2dc9('0x25')](function(){return _0x2392ee;});}else{return _0x2392ee;}})[_0x2dc9('0x43')](function(_0x2694fb){logger[_0x2dc9('0x2b')](_0x2dc9('0x51'),_0x2694fb);throw _0x2694fb;});}return _0x2392ee;})[_0x2dc9('0x25')](respondWithResult(_0x3b4c47,0xc9))[_0x2dc9('0x43')](handleError(_0x3b4c47,null));};exports['update']=function(_0x402eb6,_0x24d6c0){if(_0x402eb6['body']['id']){delete _0x402eb6[_0x2dc9('0x4b')]['id'];}return db[_0x2dc9('0x2f')][_0x2dc9('0x49')]({'where':{'id':_0x402eb6[_0x2dc9('0x52')]['id']}})['then'](handleEntityNotFound(_0x24d6c0,null))[_0x2dc9('0x25')](saveUpdates(_0x402eb6[_0x2dc9('0x4b')],null))[_0x2dc9('0x25')](respondWithResult(_0x24d6c0,null))['catch'](handleError(_0x24d6c0,null));};exports[_0x2dc9('0x26')]=function(_0x2eac98,_0x397088){return db['CmContactHasItem'][_0x2dc9('0x49')]({'where':{'id':_0x2eac98['params']['id']}})[_0x2dc9('0x25')](handleEntityNotFound(_0x397088,null))[_0x2dc9('0x25')](removeEntity(_0x397088,null))[_0x2dc9('0x43')](handleError(_0x397088,null));};
\ No newline at end of file
index f6e5fe1..a6c87b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5f3=['path','rimraf','../../config/environment','./cmContactHasItem.attributes','cm_contact_has_items','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x8dee87,_0x3e980c){var _0x2e76cd=function(_0x471a04){while(--_0x471a04){_0x8dee87['push'](_0x8dee87['shift']());}};_0x2e76cd(++_0x3e980c);}(_0xd5f3,0x1a7));var _0x3d5f=function(_0x57c2bf,_0x1cb38c){_0x57c2bf=_0x57c2bf-0x0;var _0x28b5b7=_0xd5f3[_0x57c2bf];return _0x28b5b7;};'use strict';var _=require('lodash');var util=require(_0x3d5f('0x0'));var logger=require(_0x3d5f('0x1'))(_0x3d5f('0x2'));var moment=require(_0x3d5f('0x3'));var BPromise=require(_0x3d5f('0x4'));var rp=require(_0x3d5f('0x5'));var fs=require('fs');var path=require(_0x3d5f('0x6'));var rimraf=require(_0x3d5f('0x7'));var config=require(_0x3d5f('0x8'));var attributes=require(_0x3d5f('0x9'));module['exports']=function(_0x2c9151,_0x2c0a55){return _0x2c9151['define']('CmContactHasItem',attributes,{'tableName':_0x3d5f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdd89=['moment','request-promise','path','rimraf','./cmContactHasItem.attributes','exports','define','CmContactHasItem','cm_contact_has_items','lodash','../../config/logger','api'];(function(_0x4d45c1,_0x2beda1){var _0x244478=function(_0x11304c){while(--_0x11304c){_0x4d45c1['push'](_0x4d45c1['shift']());}};_0x244478(++_0x2beda1);}(_0xdd89,0xf9));var _0x9dd8=function(_0xa45395,_0x5579e6){_0xa45395=_0xa45395-0x0;var _0x3c83d2=_0xdd89[_0xa45395];return _0x3c83d2;};'use strict';var _=require(_0x9dd8('0x0'));var util=require('util');var logger=require(_0x9dd8('0x1'))(_0x9dd8('0x2'));var moment=require(_0x9dd8('0x3'));var BPromise=require('bluebird');var rp=require(_0x9dd8('0x4'));var fs=require('fs');var path=require(_0x9dd8('0x5'));var rimraf=require(_0x9dd8('0x6'));var config=require('../../config/environment');var attributes=require(_0x9dd8('0x7'));module[_0x9dd8('0x8')]=function(_0x29c02d,_0x548b02){return _0x29c02d[_0x9dd8('0x9')](_0x9dd8('0xa'),attributes,{'tableName':_0x9dd8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 312caf6..bfcb255 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1ef=['request\x20sent','debug','CmContactHasItem,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','CmContactHasItem,\x20%s,\x20%s'];(function(_0x481ca2,_0x56786f){var _0x213e76=function(_0x3b1fb5){while(--_0x3b1fb5){_0x481ca2['push'](_0x481ca2['shift']());}};_0x213e76(++_0x56786f);}(_0xe1ef,0x98));var _0xfe1e=function(_0x1abc6b,_0x3d5ab0){_0x1abc6b=_0x1abc6b-0x0;var _0x4a116d=_0xe1ef[_0x1abc6b];return _0x4a116d;};'use strict';var _=require(_0xfe1e('0x0'));var util=require(_0xfe1e('0x1'));var moment=require(_0xfe1e('0x2'));var BPromise=require(_0xfe1e('0x3'));var rs=require(_0xfe1e('0x4'));var fs=require('fs');var Redis=require(_0xfe1e('0x5'));var db=require(_0xfe1e('0x6'))['db'];var utils=require(_0xfe1e('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xfe1e('0x8'));var jayson=require(_0xfe1e('0x9'));var client=jayson[_0xfe1e('0xa')][_0xfe1e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3e9e4a,_0xb7cb30,_0x76796f){return new BPromise(function(_0x443b5f,_0x45cd2f){return client[_0xfe1e('0xc')](_0x3e9e4a,_0x76796f)[_0xfe1e('0xd')](function(_0x4a18da){logger[_0xfe1e('0xe')](_0xfe1e('0xf'),_0xb7cb30,_0xfe1e('0x10'));logger[_0xfe1e('0x11')](_0xfe1e('0x12'),_0xb7cb30,_0xfe1e('0x10'),JSON[_0xfe1e('0x13')](_0x4a18da));if(_0x4a18da[_0xfe1e('0x14')]){if(_0x4a18da[_0xfe1e('0x14')]['code']===0x1f4){logger['error'](_0xfe1e('0xf'),_0xb7cb30,_0x4a18da[_0xfe1e('0x14')]['message']);return _0x45cd2f(_0x4a18da[_0xfe1e('0x14')][_0xfe1e('0x15')]);}logger[_0xfe1e('0x14')](_0xfe1e('0xf'),_0xb7cb30,_0x4a18da[_0xfe1e('0x14')]['message']);return _0x443b5f(_0x4a18da[_0xfe1e('0x14')]['message']);}else{logger['info'](_0xfe1e('0xf'),_0xb7cb30,_0xfe1e('0x10'));_0x443b5f(_0x4a18da[_0xfe1e('0x16')]['message']);}})[_0xfe1e('0x17')](function(_0x4c6f5d){logger[_0xfe1e('0x14')](_0xfe1e('0xf'),_0xb7cb30,_0x4c6f5d);_0x45cd2f(_0x4c6f5d);});});}
\ No newline at end of file
+var _0x9b53=['../../config/environment','jayson/promise','http','request','then','info','CmContactHasItem,\x20%s,\x20%s','request\x20sent','debug','CmContactHasItem,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x9b53,0x143));var _0x39b5=function(_0x3b1239,_0x539848){_0x3b1239=_0x3b1239-0x0;var _0x19e4f6=_0x9b53[_0x3b1239];return _0x19e4f6;};'use strict';var _=require(_0x39b5('0x0'));var util=require(_0x39b5('0x1'));var moment=require('moment');var BPromise=require(_0x39b5('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x39b5('0x3'));var db=require(_0x39b5('0x4'))['db'];var utils=require(_0x39b5('0x5'));var logger=require(_0x39b5('0x6'))('rpc');var config=require(_0x39b5('0x7'));var jayson=require(_0x39b5('0x8'));var client=jayson['client'][_0x39b5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2799b5,_0x179f76,_0x1aa4f6){return new BPromise(function(_0x19de11,_0x38810b){return client[_0x39b5('0xa')](_0x2799b5,_0x1aa4f6)[_0x39b5('0xb')](function(_0x3540c8){logger[_0x39b5('0xc')](_0x39b5('0xd'),_0x179f76,_0x39b5('0xe'));logger[_0x39b5('0xf')](_0x39b5('0x10'),_0x179f76,_0x39b5('0xe'),JSON['stringify'](_0x3540c8));if(_0x3540c8['error']){if(_0x3540c8['error'][_0x39b5('0x11')]===0x1f4){logger[_0x39b5('0x12')]('CmContactHasItem,\x20%s,\x20%s',_0x179f76,_0x3540c8['error'][_0x39b5('0x13')]);return _0x38810b(_0x3540c8[_0x39b5('0x12')][_0x39b5('0x13')]);}logger[_0x39b5('0x12')](_0x39b5('0xd'),_0x179f76,_0x3540c8[_0x39b5('0x12')][_0x39b5('0x13')]);return _0x19de11(_0x3540c8[_0x39b5('0x12')][_0x39b5('0x13')]);}else{logger[_0x39b5('0xc')](_0x39b5('0xd'),_0x179f76,_0x39b5('0xe'));_0x19de11(_0x3540c8[_0x39b5('0x14')][_0x39b5('0x13')]);}})[_0x39b5('0x15')](function(_0x2596b0){logger[_0x39b5('0x12')](_0x39b5('0xd'),_0x179f76,_0x2596b0);_0x38810b(_0x2596b0);});});}
\ No newline at end of file
index 6b989c9..007a1b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca3a=['../../config/environment','./cmContactHasItem.controller','get','isAuthenticated','/:id','post','put','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x44e239,_0x35c138){var _0x2df409=function(_0x3eb320){while(--_0x3eb320){_0x44e239['push'](_0x44e239['shift']());}};_0x2df409(++_0x35c138);}(_0xca3a,0x78));var _0xaca3=function(_0x552339,_0x62f44f){_0x552339=_0x552339-0x0;var _0x528ec9=_0xca3a[_0x552339];return _0x528ec9;};'use strict';var multer=require(_0xaca3('0x0'));var util=require(_0xaca3('0x1'));var path=require(_0xaca3('0x2'));var timeout=require(_0xaca3('0x3'));var express=require(_0xaca3('0x4'));var router=express[_0xaca3('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xaca3('0x6'));var interaction=require(_0xaca3('0x7'));var config=require(_0xaca3('0x8'));var controller=require(_0xaca3('0x9'));router[_0xaca3('0xa')]('/',auth[_0xaca3('0xb')](),controller['index']);router[_0xaca3('0xa')](_0xaca3('0xc'),auth[_0xaca3('0xb')](),controller['show']);router[_0xaca3('0xd')]('/',auth[_0xaca3('0xb')](),controller['create']);router[_0xaca3('0xe')](_0xaca3('0xc'),auth[_0xaca3('0xb')](),controller['update']);router['delete'](_0xaca3('0xc'),auth[_0xaca3('0xb')](),controller[_0xaca3('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x01e1=['/:id','show','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./cmContactHasItem.controller','isAuthenticated','index'];(function(_0x18b9dd,_0x194228){var _0x58633e=function(_0x558bb1){while(--_0x558bb1){_0x18b9dd['push'](_0x18b9dd['shift']());}};_0x58633e(++_0x194228);}(_0x01e1,0xff));var _0x101e=function(_0x4fd110,_0x4e0405){_0x4fd110=_0x4fd110-0x0;var _0x5b0f1f=_0x01e1[_0x4fd110];return _0x5b0f1f;};'use strict';var multer=require(_0x101e('0x0'));var util=require(_0x101e('0x1'));var path=require(_0x101e('0x2'));var timeout=require(_0x101e('0x3'));var express=require(_0x101e('0x4'));var router=express[_0x101e('0x5')]();var fs_extra=require(_0x101e('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x101e('0x7'));var controller=require(_0x101e('0x8'));router['get']('/',auth[_0x101e('0x9')](),controller[_0x101e('0xa')]);router['get'](_0x101e('0xb'),auth[_0x101e('0x9')](),controller[_0x101e('0xc')]);router[_0x101e('0xd')]('/',auth[_0x101e('0x9')](),controller[_0x101e('0xe')]);router[_0x101e('0xf')]('/:id',auth[_0x101e('0x9')](),controller[_0x101e('0x10')]);router['delete'](_0x101e('0xb'),auth[_0x101e('0x9')](),controller[_0x101e('0x11')]);module[_0x101e('0x12')]=router;
\ No newline at end of file
index b5fce3c..8d78207 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc7b=['lodash','exports','getDataValue','setDataValue','STRING','TEXT','long','type','parse','values','stringify','BOOLEAN','voice'];(function(_0x463659,_0x468dcc){var _0x5a4c04=function(_0x30cf0f){while(--_0x30cf0f){_0x463659['push'](_0x463659['shift']());}};_0x5a4c04(++_0x468dcc);}(_0xdc7b,0x138));var _0xbdc7=function(_0x372f8b,_0x208633){_0x372f8b=_0x372f8b-0x0;var _0x53a47e=_0xdc7b[_0x372f8b];return _0x53a47e;};'use strict';var Sequelize=require('sequelize');var _=require(_0xbdc7('0x0'));module[_0xbdc7('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x415ed8){return this[_0xbdc7('0x2')]('alias');}},'alias':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0x2b568c){this[_0xbdc7('0x3')]('alias',_0x2b568c?_0x2b568c:this[_0xbdc7('0x2')]('name'));}},'type':{'type':Sequelize[_0xbdc7('0x4')],'allowNull':![]},'values':{'type':Sequelize[_0xbdc7('0x5')](_0xbdc7('0x6')),'get':function(){if(this[_0xbdc7('0x2')](_0xbdc7('0x7'))==='select'){return JSON[_0xbdc7('0x8')](this[_0xbdc7('0x2')]('values'));}else{return this[_0xbdc7('0x2')](_0xbdc7('0x9'));}},'set':function(_0x5d37ad){if(Array['isArray'](_0x5d37ad)){this[_0xbdc7('0x3')]('values',JSON[_0xbdc7('0xa')](_0x5d37ad));}else{this['setDataValue']('values',_0x5d37ad);}}},'required':{'type':Sequelize[_0xbdc7('0xb')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0xbdc7('0xb')],'defaultValue':![]},'actionType':{'type':Sequelize['ENUM'](_0xbdc7('0xc'))}};
\ No newline at end of file
+var _0xe9bb=['long','type','parse','values','isArray','stringify','BOOLEAN','voice','sequelize','lodash','exports','getDataValue','alias','STRING','setDataValue','TEXT'];(function(_0x2f7fb7,_0x59864d){var _0x1020f2=function(_0x4fded8){while(--_0x4fded8){_0x2f7fb7['push'](_0x2f7fb7['shift']());}};_0x1020f2(++_0x59864d);}(_0xe9bb,0xf8));var _0xbe9b=function(_0x3f347f,_0x4eceed){_0x3f347f=_0x3f347f-0x0;var _0x86e0fb=_0xe9bb[_0x3f347f];return _0x86e0fb;};'use strict';var Sequelize=require(_0xbe9b('0x0'));var _=require(_0xbe9b('0x1'));module[_0xbe9b('0x2')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x2cc488){return this[_0xbe9b('0x3')](_0xbe9b('0x4'));}},'alias':{'type':Sequelize[_0xbe9b('0x5')],'allowNull':![],'set':function(_0x39a71e){this[_0xbe9b('0x6')](_0xbe9b('0x4'),_0x39a71e?_0x39a71e:this[_0xbe9b('0x3')]('name'));}},'type':{'type':Sequelize[_0xbe9b('0x5')],'allowNull':![]},'values':{'type':Sequelize[_0xbe9b('0x7')](_0xbe9b('0x8')),'get':function(){if(this['getDataValue'](_0xbe9b('0x9'))==='select'){return JSON[_0xbe9b('0xa')](this[_0xbe9b('0x3')](_0xbe9b('0xb')));}else{return this[_0xbe9b('0x3')](_0xbe9b('0xb'));}},'set':function(_0x35b5bf){if(Array[_0xbe9b('0xc')](_0x35b5bf)){this[_0xbe9b('0x6')](_0xbe9b('0xb'),JSON[_0xbe9b('0xd')](_0x35b5bf));}else{this[_0xbe9b('0x6')](_0xbe9b('0xb'),_0x35b5bf);}}},'required':{'type':Sequelize[_0xbe9b('0xe')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0xbe9b('0xe')],'defaultValue':![]},'actionType':{'type':Sequelize['ENUM'](_0xbe9b('0xf'))}};
\ No newline at end of file
index da4c2a5..50aaf6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8de5=['where','pick','filter','merge','VIRTUAL','options','includeAll','include','CmCustomField','findAll','rows','catch','show','params','length','find','body','sequelize','transaction','create','Sequelize','TEXT','text','number','switch','BOOLEAN','defaultValue','addColumn','cm_contacts','format','cf_%d','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','index','map','rawAttributes','fieldName','type','key','differenceBy','query','keys','filters','model','intersection','fields','attributes','order','sort'];(function(_0x12faa0,_0x136e65){var _0x44f58e=function(_0x2229d3){while(--_0x2229d3){_0x12faa0['push'](_0x12faa0['shift']());}};_0x44f58e(++_0x136e65);}(_0x8de5,0xd7));var _0x58de=function(_0x2b5742,_0x1ae16b){_0x2b5742=_0x2b5742-0x0;var _0x258917=_0x8de5[_0x2b5742];return _0x258917;};'use strict';var emlformat=require(_0x58de('0x0'));var rimraf=require(_0x58de('0x1'));var zipdir=require(_0x58de('0x2'));var jsonpatch=require(_0x58de('0x3'));var rp=require(_0x58de('0x4'));var moment=require(_0x58de('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x58de('0x6'));var util=require(_0x58de('0x7'));var path=require(_0x58de('0x8'));var sox=require('sox');var csv=require(_0x58de('0x9'));var ejs=require(_0x58de('0xa'));var fs=require('fs');var fs_extra=require(_0x58de('0xb'));var _=require(_0x58de('0xc'));var squel=require(_0x58de('0xd'));var crypto=require(_0x58de('0xe'));var jsforce=require(_0x58de('0xf'));var deskjs=require(_0x58de('0x10'));var toCsv=require(_0x58de('0x9'));var querystring=require(_0x58de('0x11'));var Papa=require(_0x58de('0x12'));var Redis=require('ioredis');var authService=require(_0x58de('0x13'));var qs=require(_0x58de('0x14'));var as=require(_0x58de('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x58de('0x16'))(_0x58de('0x17'));var utils=require(_0x58de('0x18'));var config=require(_0x58de('0x19'));var licenseUtil=require(_0x58de('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2bfb76,_0x43ae64){_0x43ae64=_0x43ae64||0xcc;return function(_0x5ce30f){if(_0x5ce30f){return _0x2bfb76[_0x58de('0x1b')](_0x43ae64);}return _0x2bfb76[_0x58de('0x1c')](_0x43ae64)[_0x58de('0x1d')]();};}function respondWithResult(_0x47c2ae,_0x282916){_0x282916=_0x282916||0xc8;return function(_0x42403b){if(_0x42403b){return _0x47c2ae[_0x58de('0x1c')](_0x282916)[_0x58de('0x1e')](_0x42403b);}};}function respondWithFilteredResult(_0x35fe52,_0x4e955b){return function(_0x21f018){if(_0x21f018){var _0x30fe80=typeof _0x4e955b[_0x58de('0x1f')]===_0x58de('0x20')&&typeof _0x4e955b['limit']===_0x58de('0x20');var _0x3e0e6f=_0x21f018[_0x58de('0x21')];var _0x21543b=_0x30fe80?0x0:_0x4e955b[_0x58de('0x1f')];var _0x2e80ed=_0x30fe80?_0x21f018[_0x58de('0x21')]:_0x4e955b[_0x58de('0x1f')]+_0x4e955b[_0x58de('0x22')];var _0x1f4a84;if(_0x2e80ed>=_0x3e0e6f){_0x2e80ed=_0x3e0e6f;_0x1f4a84=0xc8;}else{_0x1f4a84=0xce;}_0x35fe52[_0x58de('0x1c')](_0x1f4a84);return _0x35fe52['set'](_0x58de('0x23'),_0x21543b+'-'+_0x2e80ed+'/'+_0x3e0e6f)[_0x58de('0x1e')](_0x21f018);}return null;};}function patchUpdates(_0x2f282a){return function(_0x171e43){try{jsonpatch[_0x58de('0x24')](_0x171e43,_0x2f282a,!![]);}catch(_0xca3446){return BPromise[_0x58de('0x25')](_0xca3446);}return _0x171e43[_0x58de('0x26')]();};}function saveUpdates(_0x5f1070,_0xa129ce){return function(_0x5b0e6b){if(_0x5b0e6b){return _0x5b0e6b[_0x58de('0x27')](_0x5f1070)['then'](function(_0x20f3b0){return _0x20f3b0;});}return null;};}function removeEntity(_0xafdccd,_0x22bf28){return function(_0x410e95){if(_0x410e95){return _0x410e95[_0x58de('0x28')]()[_0x58de('0x29')](function(){_0xafdccd[_0x58de('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x66ac36,_0x2791e4){return function(_0x12f314){if(!_0x12f314){_0x66ac36[_0x58de('0x1b')](0x194);}return _0x12f314;};}function handleError(_0x2cab3f,_0x1d41ed){_0x1d41ed=_0x1d41ed||0x1f4;return function(_0x2ec1c0){logger[_0x58de('0x2a')](_0x2ec1c0[_0x58de('0x2b')]);if(_0x2ec1c0[_0x58de('0x2c')]){delete _0x2ec1c0[_0x58de('0x2c')];}_0x2cab3f[_0x58de('0x1c')](_0x1d41ed)['send'](_0x2ec1c0);};}exports[_0x58de('0x2d')]=function(_0x2e310d,_0x45f070){var _0x3d486e={},_0x21604b={},_0x5a661c={'count':0x0,'rows':[]};var _0x553c3d=_[_0x58de('0x2e')](db['CmCustomField'][_0x58de('0x2f')],function(_0x153e33){return{'name':_0x153e33[_0x58de('0x30')],'type':_0x153e33[_0x58de('0x31')][_0x58de('0x32')]};});_0x21604b['model']=_[_0x58de('0x33')](_[_0x58de('0x2e')](_0x553c3d,_0x58de('0x2c')),[_0x58de('0x2c')]);_0x21604b[_0x58de('0x34')]=_[_0x58de('0x35')](_0x2e310d[_0x58de('0x34')]);_0x21604b[_0x58de('0x36')]=_['intersection'](_0x21604b[_0x58de('0x37')],_0x21604b[_0x58de('0x34')]);_0x3d486e['attributes']=_[_0x58de('0x38')](_0x21604b['model'],qs[_0x58de('0x39')](_0x2e310d['query'][_0x58de('0x39')]));_0x3d486e['attributes']=_0x3d486e[_0x58de('0x3a')]['length']?_0x3d486e[_0x58de('0x3a')]:_0x21604b[_0x58de('0x37')];if(!_0x2e310d[_0x58de('0x34')]['hasOwnProperty']('nolimit')){_0x3d486e[_0x58de('0x22')]=qs['limit'](_0x2e310d['query']['limit']);_0x3d486e['offset']=qs[_0x58de('0x1f')](_0x2e310d[_0x58de('0x34')][_0x58de('0x1f')]);}_0x3d486e[_0x58de('0x3b')]=qs[_0x58de('0x3c')](_0x2e310d['query']['sort']);_0x3d486e[_0x58de('0x3d')]=qs[_0x58de('0x36')](_[_0x58de('0x3e')](_0x2e310d[_0x58de('0x34')],_0x21604b[_0x58de('0x36')]),_0x553c3d);if(_0x2e310d[_0x58de('0x34')][_0x58de('0x3f')]){_0x3d486e['where']=_[_0x58de('0x40')](_0x3d486e[_0x58de('0x3d')],{'$or':_[_0x58de('0x2e')](_0x553c3d,function(_0xb16a4){if(_0xb16a4[_0x58de('0x31')]!==_0x58de('0x41')){var _0x1bc7f5={};_0x1bc7f5[_0xb16a4[_0x58de('0x2c')]]={'$like':'%'+_0x2e310d[_0x58de('0x34')][_0x58de('0x3f')]+'%'};return _0x1bc7f5;}})});}_0x3d486e=_['merge']({},_0x3d486e,_0x2e310d[_0x58de('0x42')]);var _0x42ddc3={'where':_0x3d486e[_0x58de('0x3d')]};return db['CmCustomField'][_0x58de('0x21')](_0x42ddc3)[_0x58de('0x29')](function(_0x3843cc){_0x5a661c['count']=_0x3843cc;if(_0x2e310d[_0x58de('0x34')][_0x58de('0x43')]){_0x3d486e[_0x58de('0x44')]=[{'all':!![]}];}return db[_0x58de('0x45')][_0x58de('0x46')](_0x3d486e);})[_0x58de('0x29')](function(_0x7e61d8){_0x5a661c[_0x58de('0x47')]=_0x7e61d8;return _0x5a661c;})[_0x58de('0x29')](respondWithFilteredResult(_0x45f070,_0x3d486e))[_0x58de('0x48')](handleError(_0x45f070,null));};exports[_0x58de('0x49')]=function(_0x3905a5,_0x214011){var _0x1cc46e={'raw':!![],'where':{'id':_0x3905a5[_0x58de('0x4a')]['id']}},_0xec7fca={};_0xec7fca[_0x58de('0x37')]=_['keys'](db[_0x58de('0x45')][_0x58de('0x2f')]);_0xec7fca[_0x58de('0x34')]=_[_0x58de('0x35')](_0x3905a5[_0x58de('0x34')]);_0xec7fca['filters']=_[_0x58de('0x38')](_0xec7fca[_0x58de('0x37')],_0xec7fca[_0x58de('0x34')]);_0x1cc46e[_0x58de('0x3a')]=_[_0x58de('0x38')](_0xec7fca[_0x58de('0x37')],qs[_0x58de('0x39')](_0x3905a5[_0x58de('0x34')][_0x58de('0x39')]));_0x1cc46e[_0x58de('0x3a')]=_0x1cc46e[_0x58de('0x3a')][_0x58de('0x4b')]?_0x1cc46e[_0x58de('0x3a')]:_0xec7fca[_0x58de('0x37')];if(_0x3905a5[_0x58de('0x34')][_0x58de('0x43')]){_0x1cc46e[_0x58de('0x44')]=[{'all':!![]}];}_0x1cc46e=_[_0x58de('0x40')]({},_0x1cc46e,_0x3905a5[_0x58de('0x42')]);return db[_0x58de('0x45')][_0x58de('0x4c')](_0x1cc46e)[_0x58de('0x29')](handleEntityNotFound(_0x214011,null))['then'](respondWithResult(_0x214011,null))[_0x58de('0x48')](handleError(_0x214011,null));};exports[_0x58de('0x27')]=function(_0x3cd929,_0x3a154a){if(_0x3cd929['body']['id']){delete _0x3cd929[_0x58de('0x4d')]['id'];}return db['CmCustomField'][_0x58de('0x4c')]({'where':{'id':_0x3cd929[_0x58de('0x4a')]['id']}})[_0x58de('0x29')](handleEntityNotFound(_0x3a154a,null))['then'](saveUpdates(_0x3cd929[_0x58de('0x4d')],null))['then'](respondWithResult(_0x3a154a,null))[_0x58de('0x48')](handleError(_0x3a154a,null));};exports['destroy']=function(_0x555c9b,_0x40fa24){return db[_0x58de('0x45')][_0x58de('0x4c')]({'where':{'id':_0x555c9b[_0x58de('0x4a')]['id']}})[_0x58de('0x29')](handleEntityNotFound(_0x40fa24,null))[_0x58de('0x29')](removeEntity(_0x40fa24,null))['catch'](handleError(_0x40fa24,null));};exports['create']=function(_0x3ed5a4,_0x28c9ed){var _0x2f917f;return db[_0x58de('0x4e')][_0x58de('0x4f')](function(_0x36e214){return db['CmCustomField'][_0x58de('0x50')](_0x3ed5a4[_0x58de('0x4d')],{'transaction':_0x36e214})[_0x58de('0x29')](function(_0x40b50d){_0x2f917f=_0x40b50d;var _0x182a6a={'type':db[_0x58de('0x51')][_0x58de('0x52')],'transaction':_0x36e214};switch(_0x3ed5a4[_0x58de('0x4d')][_0x58de('0x31')]){case _0x58de('0x53'):_0x182a6a['type']=db[_0x58de('0x51')]['TEXT'];break;case _0x58de('0x54'):_0x182a6a[_0x58de('0x31')]=db['Sequelize']['INTEGER'];break;case _0x58de('0x55'):_0x182a6a[_0x58de('0x31')]=db['Sequelize'][_0x58de('0x56')];_0x182a6a[_0x58de('0x57')]=![];break;default:}return db['sequelize']['queryInterface'][_0x58de('0x58')](_0x58de('0x59'),util[_0x58de('0x5a')](_0x58de('0x5b'),_0x2f917f['id']),_0x182a6a);})['then'](function(){return _0x2f917f;});})[_0x58de('0x29')](respondWithResult(_0x28c9ed,0xc9))[_0x58de('0x48')](handleError(_0x28c9ed,null));};
\ No newline at end of file
+var _0x5a7e=['name','send','index','map','CmCustomField','rawAttributes','fieldName','type','model','differenceBy','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','find','body','params','create','sequelize','transaction','Sequelize','TEXT','number','INTEGER','switch','defaultValue','queryInterface','addColumn','format','cf_%d','eml-format','fast-json-patch','request-promise','moment','bluebird','util','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','stack'];(function(_0x56656f,_0x456a0a){var _0x1c3eda=function(_0x3133b0){while(--_0x3133b0){_0x56656f['push'](_0x56656f['shift']());}};_0x1c3eda(++_0x456a0a);}(_0x5a7e,0x8a));var _0xe5a7=function(_0xef745b,_0x34ee40){_0xef745b=_0xef745b-0x0;var _0x2c43b9=_0x5a7e[_0xef745b];return _0x2c43b9;};'use strict';var emlformat=require(_0xe5a7('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xe5a7('0x1'));var rp=require(_0xe5a7('0x2'));var moment=require(_0xe5a7('0x3'));var BPromise=require(_0xe5a7('0x4'));var Mustache=require('mustache');var util=require(_0xe5a7('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xe5a7('0x6'));var ejs=require(_0xe5a7('0x7'));var fs=require('fs');var fs_extra=require(_0xe5a7('0x8'));var _=require(_0xe5a7('0x9'));var squel=require(_0xe5a7('0xa'));var crypto=require('crypto');var jsforce=require(_0xe5a7('0xb'));var deskjs=require(_0xe5a7('0xc'));var toCsv=require(_0xe5a7('0x6'));var querystring=require(_0xe5a7('0xd'));var Papa=require(_0xe5a7('0xe'));var Redis=require('ioredis');var authService=require(_0xe5a7('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe5a7('0x10'));var logger=require(_0xe5a7('0x11'))(_0xe5a7('0x12'));var utils=require(_0xe5a7('0x13'));var config=require(_0xe5a7('0x14'));var licenseUtil=require(_0xe5a7('0x15'));var db=require(_0xe5a7('0x16'))['db'];function respondWithStatusCode(_0x377bd0,_0x2ee2cd){_0x2ee2cd=_0x2ee2cd||0xcc;return function(_0x26d30d){if(_0x26d30d){return _0x377bd0['sendStatus'](_0x2ee2cd);}return _0x377bd0[_0xe5a7('0x17')](_0x2ee2cd)[_0xe5a7('0x18')]();};}function respondWithResult(_0x4a41c1,_0x16c265){_0x16c265=_0x16c265||0xc8;return function(_0x36e665){if(_0x36e665){return _0x4a41c1[_0xe5a7('0x17')](_0x16c265)[_0xe5a7('0x19')](_0x36e665);}};}function respondWithFilteredResult(_0x1aee7a,_0xfa2518){return function(_0x273c32){if(_0x273c32){var _0x445fbd=typeof _0xfa2518[_0xe5a7('0x1a')]===_0xe5a7('0x1b')&&typeof _0xfa2518['limit']===_0xe5a7('0x1b');var _0x5bf443=_0x273c32['count'];var _0x1b77b2=_0x445fbd?0x0:_0xfa2518['offset'];var _0x28858f=_0x445fbd?_0x273c32[_0xe5a7('0x1c')]:_0xfa2518['offset']+_0xfa2518[_0xe5a7('0x1d')];var _0x10b9f8;if(_0x28858f>=_0x5bf443){_0x28858f=_0x5bf443;_0x10b9f8=0xc8;}else{_0x10b9f8=0xce;}_0x1aee7a[_0xe5a7('0x17')](_0x10b9f8);return _0x1aee7a[_0xe5a7('0x1e')](_0xe5a7('0x1f'),_0x1b77b2+'-'+_0x28858f+'/'+_0x5bf443)[_0xe5a7('0x19')](_0x273c32);}return null;};}function patchUpdates(_0x2f79bc){return function(_0x591d95){try{jsonpatch[_0xe5a7('0x20')](_0x591d95,_0x2f79bc,!![]);}catch(_0x43adc9){return BPromise[_0xe5a7('0x21')](_0x43adc9);}return _0x591d95[_0xe5a7('0x22')]();};}function saveUpdates(_0x438488,_0x71aaa5){return function(_0x545bb9){if(_0x545bb9){return _0x545bb9[_0xe5a7('0x23')](_0x438488)[_0xe5a7('0x24')](function(_0x55428c){return _0x55428c;});}return null;};}function removeEntity(_0x1270ff,_0x37c07b){return function(_0x382c9e){if(_0x382c9e){return _0x382c9e[_0xe5a7('0x25')]()[_0xe5a7('0x24')](function(){_0x1270ff['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x41692f,_0x21a39f){return function(_0x3956ef){if(!_0x3956ef){_0x41692f[_0xe5a7('0x26')](0x194);}return _0x3956ef;};}function handleError(_0x3adf3c,_0x165e73){_0x165e73=_0x165e73||0x1f4;return function(_0x4472a2){logger['error'](_0x4472a2[_0xe5a7('0x27')]);if(_0x4472a2['name']){delete _0x4472a2[_0xe5a7('0x28')];}_0x3adf3c[_0xe5a7('0x17')](_0x165e73)[_0xe5a7('0x29')](_0x4472a2);};}exports[_0xe5a7('0x2a')]=function(_0x4079bf,_0x140d13){var _0x20eaf8={},_0x53be1f={},_0x1108dd={'count':0x0,'rows':[]};var _0x18ad4a=_[_0xe5a7('0x2b')](db[_0xe5a7('0x2c')][_0xe5a7('0x2d')],function(_0x5918ea){return{'name':_0x5918ea[_0xe5a7('0x2e')],'type':_0x5918ea[_0xe5a7('0x2f')]['key']};});_0x53be1f[_0xe5a7('0x30')]=_[_0xe5a7('0x31')](_[_0xe5a7('0x2b')](_0x18ad4a,_0xe5a7('0x28')),['name']);_0x53be1f[_0xe5a7('0x32')]=_[_0xe5a7('0x33')](_0x4079bf[_0xe5a7('0x32')]);_0x53be1f['filters']=_['intersection'](_0x53be1f[_0xe5a7('0x30')],_0x53be1f[_0xe5a7('0x32')]);_0x20eaf8[_0xe5a7('0x34')]=_[_0xe5a7('0x35')](_0x53be1f[_0xe5a7('0x30')],qs['fields'](_0x4079bf['query'][_0xe5a7('0x36')]));_0x20eaf8[_0xe5a7('0x34')]=_0x20eaf8[_0xe5a7('0x34')][_0xe5a7('0x37')]?_0x20eaf8[_0xe5a7('0x34')]:_0x53be1f[_0xe5a7('0x30')];if(!_0x4079bf[_0xe5a7('0x32')][_0xe5a7('0x38')](_0xe5a7('0x39'))){_0x20eaf8['limit']=qs[_0xe5a7('0x1d')](_0x4079bf[_0xe5a7('0x32')]['limit']);_0x20eaf8[_0xe5a7('0x1a')]=qs[_0xe5a7('0x1a')](_0x4079bf['query'][_0xe5a7('0x1a')]);}_0x20eaf8[_0xe5a7('0x3a')]=qs[_0xe5a7('0x3b')](_0x4079bf[_0xe5a7('0x32')][_0xe5a7('0x3b')]);_0x20eaf8[_0xe5a7('0x3c')]=qs[_0xe5a7('0x3d')](_[_0xe5a7('0x3e')](_0x4079bf[_0xe5a7('0x32')],_0x53be1f[_0xe5a7('0x3d')]),_0x18ad4a);if(_0x4079bf[_0xe5a7('0x32')][_0xe5a7('0x3f')]){_0x20eaf8[_0xe5a7('0x3c')]=_[_0xe5a7('0x40')](_0x20eaf8[_0xe5a7('0x3c')],{'$or':_[_0xe5a7('0x2b')](_0x18ad4a,function(_0x32defa){if(_0x32defa[_0xe5a7('0x2f')]!==_0xe5a7('0x41')){var _0x4f8306={};_0x4f8306[_0x32defa[_0xe5a7('0x28')]]={'$like':'%'+_0x4079bf['query'][_0xe5a7('0x3f')]+'%'};return _0x4f8306;}})});}_0x20eaf8=_['merge']({},_0x20eaf8,_0x4079bf[_0xe5a7('0x42')]);var _0x391bb4={'where':_0x20eaf8[_0xe5a7('0x3c')]};return db[_0xe5a7('0x2c')]['count'](_0x391bb4)[_0xe5a7('0x24')](function(_0x2aea2a){_0x1108dd[_0xe5a7('0x1c')]=_0x2aea2a;if(_0x4079bf[_0xe5a7('0x32')][_0xe5a7('0x43')]){_0x20eaf8[_0xe5a7('0x44')]=[{'all':!![]}];}return db[_0xe5a7('0x2c')][_0xe5a7('0x45')](_0x20eaf8);})['then'](function(_0x1bda3d){_0x1108dd[_0xe5a7('0x46')]=_0x1bda3d;return _0x1108dd;})[_0xe5a7('0x24')](respondWithFilteredResult(_0x140d13,_0x20eaf8))[_0xe5a7('0x47')](handleError(_0x140d13,null));};exports[_0xe5a7('0x48')]=function(_0xf80483,_0x5aa4b5){var _0x46531c={'raw':!![],'where':{'id':_0xf80483['params']['id']}},_0x4be75f={};_0x4be75f[_0xe5a7('0x30')]=_[_0xe5a7('0x33')](db['CmCustomField'][_0xe5a7('0x2d')]);_0x4be75f[_0xe5a7('0x32')]=_[_0xe5a7('0x33')](_0xf80483[_0xe5a7('0x32')]);_0x4be75f[_0xe5a7('0x3d')]=_[_0xe5a7('0x35')](_0x4be75f[_0xe5a7('0x30')],_0x4be75f['query']);_0x46531c['attributes']=_['intersection'](_0x4be75f[_0xe5a7('0x30')],qs[_0xe5a7('0x36')](_0xf80483[_0xe5a7('0x32')][_0xe5a7('0x36')]));_0x46531c[_0xe5a7('0x34')]=_0x46531c[_0xe5a7('0x34')]['length']?_0x46531c[_0xe5a7('0x34')]:_0x4be75f[_0xe5a7('0x30')];if(_0xf80483[_0xe5a7('0x32')][_0xe5a7('0x43')]){_0x46531c['include']=[{'all':!![]}];}_0x46531c=_['merge']({},_0x46531c,_0xf80483['options']);return db[_0xe5a7('0x2c')][_0xe5a7('0x49')](_0x46531c)['then'](handleEntityNotFound(_0x5aa4b5,null))[_0xe5a7('0x24')](respondWithResult(_0x5aa4b5,null))[_0xe5a7('0x47')](handleError(_0x5aa4b5,null));};exports[_0xe5a7('0x23')]=function(_0x4d4fb5,_0x2b2316){if(_0x4d4fb5[_0xe5a7('0x4a')]['id']){delete _0x4d4fb5['body']['id'];}return db[_0xe5a7('0x2c')][_0xe5a7('0x49')]({'where':{'id':_0x4d4fb5['params']['id']}})[_0xe5a7('0x24')](handleEntityNotFound(_0x2b2316,null))[_0xe5a7('0x24')](saveUpdates(_0x4d4fb5['body'],null))[_0xe5a7('0x24')](respondWithResult(_0x2b2316,null))[_0xe5a7('0x47')](handleError(_0x2b2316,null));};exports[_0xe5a7('0x25')]=function(_0x2952bf,_0x980099){return db[_0xe5a7('0x2c')]['find']({'where':{'id':_0x2952bf[_0xe5a7('0x4b')]['id']}})['then'](handleEntityNotFound(_0x980099,null))['then'](removeEntity(_0x980099,null))[_0xe5a7('0x47')](handleError(_0x980099,null));};exports[_0xe5a7('0x4c')]=function(_0x116b62,_0x58855f){var _0x2d94ad;return db[_0xe5a7('0x4d')][_0xe5a7('0x4e')](function(_0x30806e){return db[_0xe5a7('0x2c')]['create'](_0x116b62[_0xe5a7('0x4a')],{'transaction':_0x30806e})[_0xe5a7('0x24')](function(_0x1fc623){_0x2d94ad=_0x1fc623;var _0x2058c1={'type':db[_0xe5a7('0x4f')][_0xe5a7('0x50')],'transaction':_0x30806e};switch(_0x116b62[_0xe5a7('0x4a')]['type']){case'text':_0x2058c1[_0xe5a7('0x2f')]=db['Sequelize']['TEXT'];break;case _0xe5a7('0x51'):_0x2058c1['type']=db[_0xe5a7('0x4f')][_0xe5a7('0x52')];break;case _0xe5a7('0x53'):_0x2058c1['type']=db['Sequelize']['BOOLEAN'];_0x2058c1[_0xe5a7('0x54')]=![];break;default:}return db[_0xe5a7('0x4d')][_0xe5a7('0x55')][_0xe5a7('0x56')]('cm_contacts',util[_0xe5a7('0x57')](_0xe5a7('0x58'),_0x2d94ad['id']),_0x2058c1);})[_0xe5a7('0x24')](function(){return _0x2d94ad;});})[_0xe5a7('0x24')](respondWithResult(_0x58855f,0xc9))['catch'](handleError(_0x58855f,null));};
\ No newline at end of file
index 1a28adc..099a9c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca32=['define','CmCustomField','cm_custom_fields','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmCustomField.attributes','exports'];(function(_0x4b7a25,_0x5d069a){var _0x47ebc7=function(_0x368a0f){while(--_0x368a0f){_0x4b7a25['push'](_0x4b7a25['shift']());}};_0x47ebc7(++_0x5d069a);}(_0xca32,0x107));var _0x2ca3=function(_0x260eb3,_0x1d1d30){_0x260eb3=_0x260eb3-0x0;var _0x318e16=_0xca32[_0x260eb3];return _0x318e16;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x2ca3('0x0'))(_0x2ca3('0x1'));var moment=require(_0x2ca3('0x2'));var BPromise=require(_0x2ca3('0x3'));var rp=require(_0x2ca3('0x4'));var fs=require('fs');var path=require(_0x2ca3('0x5'));var rimraf=require(_0x2ca3('0x6'));var config=require(_0x2ca3('0x7'));var attributes=require(_0x2ca3('0x8'));module[_0x2ca3('0x9')]=function(_0x2137a5,_0x2f8521){return _0x2137a5[_0x2ca3('0xa')](_0x2ca3('0xb'),attributes,{'tableName':_0x2ca3('0xc'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdc6c=['../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','exports','define','CmCustomField','cm_custom_fields'];(function(_0x7f1086,_0x434356){var _0x358a47=function(_0x1f14ab){while(--_0x1f14ab){_0x7f1086['push'](_0x7f1086['shift']());}};_0x358a47(++_0x434356);}(_0xdc6c,0x136));var _0xcdc6=function(_0x2db12b,_0x30ab1d){_0x2db12b=_0x2db12b-0x0;var _0x20990b=_0xdc6c[_0x2db12b];return _0x20990b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xcdc6('0x0'))(_0xcdc6('0x1'));var moment=require('moment');var BPromise=require(_0xcdc6('0x2'));var rp=require(_0xcdc6('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcdc6('0x4'));var config=require(_0xcdc6('0x5'));var attributes=require('./cmCustomField.attributes');module[_0xcdc6('0x6')]=function(_0x31acde,_0x11dee0){return _0x31acde[_0xcdc6('0x7')](_0xcdc6('0x8'),attributes,{'tableName':_0xcdc6('0x9'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f3dba63..c788c16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3094=['jayson/promise','client','http','request','then','info','CmCustomField,\x20%s,\x20%s','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x20200e,_0x36c1f8){var _0x5666ef=function(_0x29c0b6){while(--_0x29c0b6){_0x20200e['push'](_0x20200e['shift']());}};_0x5666ef(++_0x36c1f8);}(_0x3094,0x9f));var _0x4309=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x3094[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0x4309('0x0'));var util=require(_0x4309('0x1'));var moment=require(_0x4309('0x2'));var BPromise=require('bluebird');var rs=require(_0x4309('0x3'));var fs=require('fs');var Redis=require(_0x4309('0x4'));var db=require(_0x4309('0x5'))['db'];var utils=require(_0x4309('0x6'));var logger=require('../../config/logger')(_0x4309('0x7'));var config=require(_0x4309('0x8'));var jayson=require(_0x4309('0x9'));var client=jayson[_0x4309('0xa')][_0x4309('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x497746,_0x493b2c,_0x424749){return new BPromise(function(_0x5b053f,_0x5b5efd){return client[_0x4309('0xc')](_0x497746,_0x424749)[_0x4309('0xd')](function(_0x2bd1df){logger[_0x4309('0xe')](_0x4309('0xf'),_0x493b2c,_0x4309('0x10'));logger[_0x4309('0x11')](_0x4309('0x12'),_0x493b2c,_0x4309('0x10'),JSON[_0x4309('0x13')](_0x2bd1df));if(_0x2bd1df['error']){if(_0x2bd1df[_0x4309('0x14')]['code']===0x1f4){logger[_0x4309('0x14')](_0x4309('0xf'),_0x493b2c,_0x2bd1df['error'][_0x4309('0x15')]);return _0x5b5efd(_0x2bd1df[_0x4309('0x14')]['message']);}logger['error'](_0x4309('0xf'),_0x493b2c,_0x2bd1df[_0x4309('0x14')][_0x4309('0x15')]);return _0x5b053f(_0x2bd1df[_0x4309('0x14')][_0x4309('0x15')]);}else{logger[_0x4309('0xe')]('CmCustomField,\x20%s,\x20%s',_0x493b2c,_0x4309('0x10'));_0x5b053f(_0x2bd1df[_0x4309('0x16')][_0x4309('0x15')]);}})[_0x4309('0x17')](function(_0xda1c54){logger[_0x4309('0x14')](_0x4309('0xf'),_0x493b2c,_0xda1c54);_0x5b5efd(_0xda1c54);});});}
\ No newline at end of file
+var _0xb2f6=['then','info','CmCustomField,\x20%s,\x20%s','request\x20sent','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x4e0a03,_0x5eb6b0){var _0x2478fc=function(_0x59afcc){while(--_0x59afcc){_0x4e0a03['push'](_0x4e0a03['shift']());}};_0x2478fc(++_0x5eb6b0);}(_0xb2f6,0x164));var _0x6b2f=function(_0x4b3e99,_0xf1c5c1){_0x4b3e99=_0x4b3e99-0x0;var _0x4fccce=_0xb2f6[_0x4b3e99];return _0x4fccce;};'use strict';var _=require('lodash');var util=require(_0x6b2f('0x0'));var moment=require(_0x6b2f('0x1'));var BPromise=require(_0x6b2f('0x2'));var rs=require(_0x6b2f('0x3'));var fs=require('fs');var Redis=require(_0x6b2f('0x4'));var db=require(_0x6b2f('0x5'))['db'];var utils=require(_0x6b2f('0x6'));var logger=require(_0x6b2f('0x7'))(_0x6b2f('0x8'));var config=require(_0x6b2f('0x9'));var jayson=require(_0x6b2f('0xa'));var client=jayson['client'][_0x6b2f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x223c58,_0x1b0376,_0x323d24){return new BPromise(function(_0x70ffb1,_0x17d15d){return client['request'](_0x223c58,_0x323d24)[_0x6b2f('0xc')](function(_0x3548f9){logger[_0x6b2f('0xd')](_0x6b2f('0xe'),_0x1b0376,_0x6b2f('0xf'));logger['debug'](_0x6b2f('0x10'),_0x1b0376,_0x6b2f('0xf'),JSON[_0x6b2f('0x11')](_0x3548f9));if(_0x3548f9[_0x6b2f('0x12')]){if(_0x3548f9[_0x6b2f('0x12')][_0x6b2f('0x13')]===0x1f4){logger[_0x6b2f('0x12')]('CmCustomField,\x20%s,\x20%s',_0x1b0376,_0x3548f9[_0x6b2f('0x12')][_0x6b2f('0x14')]);return _0x17d15d(_0x3548f9[_0x6b2f('0x12')]['message']);}logger[_0x6b2f('0x12')]('CmCustomField,\x20%s,\x20%s',_0x1b0376,_0x3548f9['error'][_0x6b2f('0x14')]);return _0x70ffb1(_0x3548f9[_0x6b2f('0x12')][_0x6b2f('0x14')]);}else{logger[_0x6b2f('0xd')](_0x6b2f('0xe'),_0x1b0376,_0x6b2f('0xf'));_0x70ffb1(_0x3548f9[_0x6b2f('0x15')][_0x6b2f('0x14')]);}})[_0x6b2f('0x16')](function(_0x55e36d){logger[_0x6b2f('0x12')](_0x6b2f('0xe'),_0x1b0376,_0x55e36d);_0x17d15d(_0x55e36d);});});}
\ No newline at end of file
index 46a5791..ae7e91d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x598a=['util','path','connect-timeout','express','fs-extra','./cmCustomField.controller','get','isAuthenticated','index','show','post','create','put','/:id','delete','destroy','exports','multer'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x598a,0xfb));var _0xa598=function(_0x15d4ce,_0x4d007b){_0x15d4ce=_0x15d4ce-0x0;var _0x33ceb9=_0x598a[_0x15d4ce];return _0x33ceb9;};'use strict';var multer=require(_0xa598('0x0'));var util=require(_0xa598('0x1'));var path=require(_0xa598('0x2'));var timeout=require(_0xa598('0x3'));var express=require(_0xa598('0x4'));var router=express['Router']();var fs_extra=require(_0xa598('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa598('0x6'));router[_0xa598('0x7')]('/',auth[_0xa598('0x8')](),controller[_0xa598('0x9')]);router[_0xa598('0x7')]('/:id',auth['isAuthenticated'](),controller[_0xa598('0xa')]);router[_0xa598('0xb')]('/',auth[_0xa598('0x8')](),controller[_0xa598('0xc')]);router[_0xa598('0xd')](_0xa598('0xe'),auth['isAuthenticated'](),controller['update']);router[_0xa598('0xf')](_0xa598('0xe'),auth[_0xa598('0x8')](),controller[_0xa598('0x10')]);module[_0xa598('0x11')]=router;
\ No newline at end of file
+var _0xe002=['fs-extra','../../components/interaction/service','../../config/environment','./cmCustomField.controller','get','isAuthenticated','index','/:id','show','post','create','put','destroy','multer','util','path','express','Router'];(function(_0x476cd2,_0x180478){var _0x305664=function(_0x16496b){while(--_0x16496b){_0x476cd2['push'](_0x476cd2['shift']());}};_0x305664(++_0x180478);}(_0xe002,0xf7));var _0x2e00=function(_0x20beae,_0x5eac6d){_0x20beae=_0x20beae-0x0;var _0xf5725=_0xe002[_0x20beae];return _0xf5725;};'use strict';var multer=require(_0x2e00('0x0'));var util=require(_0x2e00('0x1'));var path=require(_0x2e00('0x2'));var timeout=require('connect-timeout');var express=require(_0x2e00('0x3'));var router=express[_0x2e00('0x4')]();var fs_extra=require(_0x2e00('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2e00('0x6'));var config=require(_0x2e00('0x7'));var controller=require(_0x2e00('0x8'));router[_0x2e00('0x9')]('/',auth[_0x2e00('0xa')](),controller[_0x2e00('0xb')]);router[_0x2e00('0x9')](_0x2e00('0xc'),auth['isAuthenticated'](),controller[_0x2e00('0xd')]);router[_0x2e00('0xe')]('/',auth['isAuthenticated'](),controller[_0x2e00('0xf')]);router[_0x2e00('0x10')](_0x2e00('0xc'),auth[_0x2e00('0xa')](),controller['update']);router['delete'](_0x2e00('0xc'),auth[_0x2e00('0xa')](),controller[_0x2e00('0x11')]);module['exports']=router;
\ No newline at end of file
index f2719ea..bcf109d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf03=['BOOLEAN','DATE','format','INTEGER','contactListQueue','moment','sequelize','exports','STRING'];(function(_0x2665df,_0x40b2a7){var _0x54f364=function(_0x1d4770){while(--_0x1d4770){_0x2665df['push'](_0x2665df['shift']());}};_0x54f364(++_0x40b2a7);}(_0xaf03,0xef));var _0x3af0=function(_0x3552d9,_0x4575d5){_0x3552d9=_0x3552d9-0x0;var _0x3dfa1f=_0xaf03[_0x3552d9];return _0x3dfa1f;};'use strict';var moment=require(_0x3af0('0x0'));var Sequelize=require(_0x3af0('0x1'));module[_0x3af0('0x2')]={'phone':{'type':Sequelize[_0x3af0('0x3')],'allowNull':![]},'active':{'type':Sequelize[_0x3af0('0x4')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x3af0('0x5')],'defaultValue':moment()[_0x3af0('0x6')]('YYYY-MM-DD\x20HH:mm:ss')},'countbusyretry':{'type':Sequelize[_0x3af0('0x7')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x3af0('0x7')],'defaultValue':0x0},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x3af0('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x3af0('0x5')]},'priority':{'type':Sequelize[_0x3af0('0x7')](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x3af0('0x4')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x3af0('0x7')],'unique':_0x3af0('0x8')},'ListId':{'type':Sequelize['INTEGER'],'unique':_0x3af0('0x8')},'UserId':{'type':Sequelize[_0x3af0('0x7')]},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':_0x3af0('0x8')},'CampaignId':{'type':Sequelize[_0x3af0('0x7')]},'countnosuchnumberretry':{'type':Sequelize[_0x3af0('0x7')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x3af0('0x7')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x3af0('0x7')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x3af0('0x7')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x3af0('0x7')],'defaultValue':0x0},'OrderBy':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize['STRING']},'recallmeNotifiedDate':{'type':Sequelize[_0x3af0('0x5')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
+var _0x9c67=['contactListQueue','sequelize','exports','STRING','BOOLEAN','DATE','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','UNSIGNED'];(function(_0x35dc52,_0x5c666f){var _0x4134cd=function(_0x29b52b){while(--_0x29b52b){_0x35dc52['push'](_0x35dc52['shift']());}};_0x4134cd(++_0x5c666f);}(_0x9c67,0x12d));var _0x79c6=function(_0x4ac716,_0x40243f){_0x4ac716=_0x4ac716-0x0;var _0x35f56b=_0x9c67[_0x4ac716];return _0x35f56b;};'use strict';var moment=require('moment');var Sequelize=require(_0x79c6('0x0'));module[_0x79c6('0x1')]={'phone':{'type':Sequelize[_0x79c6('0x2')],'allowNull':![]},'active':{'type':Sequelize[_0x79c6('0x3')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x79c6('0x4')],'defaultValue':moment()[_0x79c6('0x5')](_0x79c6('0x6'))},'countbusyretry':{'type':Sequelize[_0x79c6('0x7')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x79c6('0x7')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x79c6('0x7')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x79c6('0x3')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x79c6('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x79c6('0x4')]},'priority':{'type':Sequelize['INTEGER'](0x2)[_0x79c6('0x8')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x79c6('0x7')],'unique':_0x79c6('0x9')},'ListId':{'type':Sequelize['INTEGER'],'unique':'contactListQueue'},'UserId':{'type':Sequelize[_0x79c6('0x7')]},'VoiceQueueId':{'type':Sequelize[_0x79c6('0x7')],'unique':_0x79c6('0x9')},'CampaignId':{'type':Sequelize[_0x79c6('0x7')]},'countnosuchnumberretry':{'type':Sequelize[_0x79c6('0x7')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x79c6('0x7')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x79c6('0x7')],'defaultValue':0x0},'OrderBy':{'type':Sequelize[_0x79c6('0x7')],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize['STRING']},'recallmeNotifiedDate':{'type':Sequelize['DATE'],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
index 0c5564d..e36e53f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89c3=['rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','concat','$or','$gt','$lt','$ne','$eq','$not','$between','$notBetween','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contained','$any','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','then','includeAll','include','findAll','catch','show','params','find','create','body','describe','destroy','VoiceQueueId','CampaignId','VoiceQueue','Campaign','omit','createdAt','updatedAt','statedesc','deleted','campaign','membername','user','UserId','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','campaigntype','ivr','CmContact','ContactId','firstName','isNil','calleridname','lastName','finally','CmHopperFinal','CmHopperAdditionalPhone','end','getPreview','outbound','preview','dialPreviewAutoRecallMe','sequelize','transaction','value','direction','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','dialOrderByScheduledAt','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','recallme','UPDATE','Contact','Company','List','Queue','CmCompany','CmList','dialActive','getOpenContacts','isNumber','entity\x20not\x20found','sendStatus','getTimezones','timezones','push','utcOffset','getTimezone','moment','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','json','undefined','limit','count','offset','status','set','Content-Range','update','stack','name','send','map','CmHopper'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x89c3,0xff));var _0x389c=function(_0x22702b,_0x355d67){_0x22702b=_0x22702b-0x0;var _0x53cfcd=_0x89c3[_0x22702b];return _0x53cfcd;};'use strict';var moment=require(_0x389c('0x0'));var _=require(_0x389c('0x1'));var qs=require(_0x389c('0x2'));var logger=require(_0x389c('0x3'))(_0x389c('0x4'));var shared=require(_0x389c('0x5'));var db=require(_0x389c('0x6'))['db'];function respondWithResult(_0x3a2fa4,_0x5c6c68){_0x5c6c68=_0x5c6c68||0xc8;return function(_0x3742ad){if(_0x3742ad){return _0x3a2fa4['status'](_0x5c6c68)[_0x389c('0x7')](_0x3742ad);}};}function respondWithFilteredResult(_0x4bece6,_0x51f5f5){return function(_0x2f3e3f){if(_0x2f3e3f){var _0x4a83ab=typeof _0x51f5f5['offset']===_0x389c('0x8')&&typeof _0x51f5f5[_0x389c('0x9')]===_0x389c('0x8');var _0x2efa82=_0x2f3e3f[_0x389c('0xa')];var _0x1c574b=_0x4a83ab?0x0:_0x51f5f5[_0x389c('0xb')];var _0xd58faa=_0x4a83ab?_0x2f3e3f[_0x389c('0xa')]:_0x51f5f5['offset']+_0x51f5f5[_0x389c('0x9')];var _0xe6852f;if(_0xd58faa>=_0x2efa82){_0xd58faa=_0x2efa82;_0xe6852f=0xc8;}else{_0xe6852f=0xce;}_0x4bece6[_0x389c('0xc')](_0xe6852f);return _0x4bece6[_0x389c('0xd')](_0x389c('0xe'),_0x1c574b+'-'+_0xd58faa+'/'+_0x2efa82)['json'](_0x2f3e3f);}return null;};}function saveUpdates(_0x5d7aa7,_0x2a2d7d){return function(_0x1de33a){if(_0x1de33a){return _0x1de33a[_0x389c('0xf')](_0x5d7aa7)['then'](function(_0x3f2391){return _0x3f2391;});}return null;};}function handleEntityNotFound(_0x4bde6d,_0x36e855){return function(_0x1b1618){if(!_0x1b1618){_0x4bde6d['sendStatus'](0x194);}return _0x1b1618;};}function handleError(_0x1687f2,_0x205e4f){_0x205e4f=_0x205e4f||0x1f4;return function(_0x36c118){logger['error'](_0x36c118[_0x389c('0x10')]);if(_0x36c118[_0x389c('0x11')]){delete _0x36c118[_0x389c('0x11')];}_0x1687f2[_0x389c('0xc')](_0x205e4f)[_0x389c('0x12')](_0x36c118);};}exports['index']=function(_0x5b6ef8,_0x5a2b10){var _0x335c3e={},_0x2e23d2={},_0x55dc03={'count':0x0,'rows':[]};var _0x334f7a=_[_0x389c('0x13')](db[_0x389c('0x14')][_0x389c('0x15')],function(_0xbe8380){return{'name':_0xbe8380[_0x389c('0x16')],'type':_0xbe8380[_0x389c('0x17')][_0x389c('0x18')]};});_0x2e23d2[_0x389c('0x19')]=_['map'](_0x334f7a,_0x389c('0x11'));_0x2e23d2[_0x389c('0x1a')]=_[_0x389c('0x1b')](_0x5b6ef8[_0x389c('0x1a')]);_0x2e23d2[_0x389c('0x1c')]=_[_0x389c('0x1d')](_0x2e23d2['model'],_0x2e23d2[_0x389c('0x1a')]);_0x2e23d2[_0x389c('0x1c')]=_[_0x389c('0x1e')](_0x2e23d2[_0x389c('0x1c')],['$and',_0x389c('0x1f'),_0x389c('0x20'),'$gte',_0x389c('0x21'),'$lte',_0x389c('0x22'),_0x389c('0x23'),_0x389c('0x24'),_0x389c('0x25'),_0x389c('0x26'),'$in',_0x389c('0x27'),_0x389c('0x28'),_0x389c('0x29'),_0x389c('0x2a'),_0x389c('0x2b'),'$like',_0x389c('0x2c'),'$contains',_0x389c('0x2d'),_0x389c('0x2e')]);_0x335c3e[_0x389c('0x2f')]=_[_0x389c('0x1d')](_0x2e23d2['model'],qs[_0x389c('0x30')](_0x5b6ef8[_0x389c('0x1a')]['fields']));_0x335c3e[_0x389c('0x2f')]=_0x335c3e[_0x389c('0x2f')][_0x389c('0x31')]?_0x335c3e[_0x389c('0x2f')]:_0x2e23d2[_0x389c('0x19')];if(!_0x5b6ef8[_0x389c('0x1a')][_0x389c('0x32')](_0x389c('0x33'))){_0x335c3e[_0x389c('0x9')]=qs[_0x389c('0x9')](_0x5b6ef8[_0x389c('0x1a')][_0x389c('0x9')]);_0x335c3e['offset']=qs['offset'](_0x5b6ef8['query'][_0x389c('0xb')]);}_0x335c3e['order']=qs[_0x389c('0x34')](_0x5b6ef8['query'][_0x389c('0x34')]);_0x335c3e[_0x389c('0x35')]=qs[_0x389c('0x1c')](_[_0x389c('0x36')](_0x5b6ef8['query'],_0x2e23d2[_0x389c('0x1c')]),_0x334f7a);if(_0x5b6ef8[_0x389c('0x1a')][_0x389c('0x37')]){_0x335c3e[_0x389c('0x35')]=_[_0x389c('0x38')](_0x335c3e[_0x389c('0x35')],{'$or':_['map'](_0x334f7a,function(_0x5c84f9){if(_0x5c84f9[_0x389c('0x17')]!==_0x389c('0x39')){var _0x342dd9={};_0x342dd9[_0x5c84f9[_0x389c('0x11')]]={'$like':'%'+_0x5b6ef8[_0x389c('0x1a')][_0x389c('0x37')]+'%'};return _0x342dd9;}})});}_0x335c3e=_[_0x389c('0x38')]({},_0x335c3e,_0x5b6ef8[_0x389c('0x3a')]);var _0x22341d={'where':_0x335c3e[_0x389c('0x35')]};return db[_0x389c('0x14')][_0x389c('0xa')](_0x22341d)[_0x389c('0x3b')](function(_0x55841a){_0x55dc03['count']=_0x55841a;if(_0x5b6ef8[_0x389c('0x1a')][_0x389c('0x3c')]){_0x335c3e[_0x389c('0x3d')]=[{'all':!![]}];}return db[_0x389c('0x14')][_0x389c('0x3e')](_0x335c3e);})[_0x389c('0x3b')](function(_0x58a7b1){_0x55dc03['rows']=_0x58a7b1;return _0x55dc03;})[_0x389c('0x3b')](respondWithFilteredResult(_0x5a2b10,_0x335c3e))[_0x389c('0x3f')](handleError(_0x5a2b10,null));};exports[_0x389c('0x40')]=function(_0x4d9ec4,_0x39dcd6){var _0x2884c4={'raw':!![],'where':{'id':_0x4d9ec4[_0x389c('0x41')]['id']}},_0x37f4d7={};_0x37f4d7[_0x389c('0x19')]=_[_0x389c('0x1b')](db['CmHopper'][_0x389c('0x15')]);_0x37f4d7[_0x389c('0x1a')]=_[_0x389c('0x1b')](_0x4d9ec4[_0x389c('0x1a')]);_0x37f4d7['filters']=_[_0x389c('0x1d')](_0x37f4d7['model'],_0x37f4d7[_0x389c('0x1a')]);_0x2884c4[_0x389c('0x2f')]=_[_0x389c('0x1d')](_0x37f4d7[_0x389c('0x19')],qs[_0x389c('0x30')](_0x4d9ec4[_0x389c('0x1a')][_0x389c('0x30')]));_0x2884c4[_0x389c('0x2f')]=_0x2884c4[_0x389c('0x2f')][_0x389c('0x31')]?_0x2884c4[_0x389c('0x2f')]:_0x37f4d7['model'];if(_0x4d9ec4[_0x389c('0x1a')][_0x389c('0x3c')]){_0x2884c4['include']=[{'all':!![]}];}_0x2884c4=_[_0x389c('0x38')]({},_0x2884c4,_0x4d9ec4['options']);return db[_0x389c('0x14')][_0x389c('0x42')](_0x2884c4)[_0x389c('0x3b')](handleEntityNotFound(_0x39dcd6,null))[_0x389c('0x3b')](respondWithResult(_0x39dcd6,null))[_0x389c('0x3f')](handleError(_0x39dcd6,null));};exports[_0x389c('0x43')]=function(_0xc2ef3c,_0x15c23e){return db[_0x389c('0x14')][_0x389c('0x43')](_0xc2ef3c[_0x389c('0x44')],{})[_0x389c('0x3b')](respondWithResult(_0x15c23e,0xc9))[_0x389c('0x3f')](handleError(_0x15c23e,null));};exports['update']=function(_0x575a44,_0x1d8063){if(_0x575a44[_0x389c('0x44')]['id']){delete _0x575a44[_0x389c('0x44')]['id'];}return db['CmHopper'][_0x389c('0x42')]({'where':{'id':_0x575a44[_0x389c('0x41')]['id']}})[_0x389c('0x3b')](handleEntityNotFound(_0x1d8063,null))[_0x389c('0x3b')](saveUpdates(_0x575a44['body'],null))['then'](respondWithResult(_0x1d8063,null))['catch'](handleError(_0x1d8063,null));};exports['describe']=function(_0x425ec4,_0x4a928c){return db['CmHopper'][_0x389c('0x45')]()[_0x389c('0x3b')](respondWithResult(_0x4a928c,null))[_0x389c('0x3f')](handleError(_0x4a928c,null));};exports[_0x389c('0x46')]=function(_0x153db2,_0xd37a48){var _0x3302b8;var _0x556928=_0x153db2[_0x389c('0x41')]['id'];return db[_0x389c('0x14')][_0x389c('0x42')]({'where':{'id':_0x153db2[_0x389c('0x41')]['id']}})[_0x389c('0x3b')](handleEntityNotFound(_0xd37a48,null))[_0x389c('0x3b')](function(_0x483eb8){if(_0x483eb8){return _0x483eb8[_0x389c('0x46')]()['then'](function(_0xf56fb2){return _0xf56fb2;});}})['then'](function(_0x26936d){_0x3302b8=_0x26936d;if(_0x26936d){if(_0x26936d[_0x389c('0x47')]||_0x26936d[_0x389c('0x48')]){return db[_0x26936d[_0x389c('0x47')]?_0x389c('0x49'):_0x389c('0x4a')]['find']({'where':{'id':_0x26936d[_0x389c('0x47')]?_0x26936d[_0x389c('0x47')]:_0x26936d['CampaignId']},'attributes':['id',_0x389c('0x11')],'raw':!![]});}}})[_0x389c('0x3b')](function(_0x8fe5fd){var _0x4a9519={};if(_0x8fe5fd){_[_0x389c('0x38')](_0x4a9519,_[_0x389c('0x4b')](_0x3302b8['dataValues'],[_0x389c('0x4c'),_0x389c('0x4d'),'id']));_0x4a9519['state']=0x15;_0x4a9519[_0x389c('0x4e')]=_0x389c('0x4f');_0x4a9519[_0x389c('0x50')]=_0x8fe5fd[_0x389c('0x11')];_0x4a9519[_0x389c('0x51')]=_0x153db2[_0x389c('0x52')][_0x389c('0x11')];_0x4a9519[_0x389c('0x53')]=_0x153db2[_0x389c('0x52')]['id'];_0x4a9519[_0x389c('0x4f')]=!![];_0x4a9519['deletedat']=moment()[_0x389c('0x54')](_0x389c('0x55'));_0x4a9519[_0x389c('0x56')]=_0x3302b8['phone'];_0x4a9519[_0x389c('0x57')]=_0x3302b8['VoiceQueueId']?'queue':_0x389c('0x58');return db[_0x389c('0x59')][_0x389c('0x42')]({'where':{'id':_0x4a9519[_0x389c('0x5a')]},'attributes':[_0x389c('0x5b'),'lastName']})[_0x389c('0x3b')](function(_0x4a203d){if(!_[_0x389c('0x5c')](_0xd37a48)&&!_['isNil'](_0x4a203d[_0x389c('0x5b')])){_0x4a9519[_0x389c('0x5d')]=_0x4a203d[_0x389c('0x5b')];if(!_[_0x389c('0x5c')](_0x4a203d['lastName'])){_0x4a9519[_0x389c('0x5d')]+='\x20'+_0x4a203d[_0x389c('0x5e')];}}})[_0x389c('0x5f')](function(){return db[_0x389c('0x60')][_0x389c('0x43')](_0x4a9519);});}})['then'](function(_0x5359f5){return db[_0x389c('0x61')]['destroy']({'where':{'CmHopperId':_0x556928}});})[_0x389c('0x3b')](function(){return _0xd37a48[_0x389c('0xc')](0xcc)[_0x389c('0x62')]();})['catch'](handleError(_0xd37a48,null));};exports[_0x389c('0x63')]=function(_0x4bfe42,_0x18d3d7){var _0x5e24a6=[];return db[_0x389c('0x59')]['describe']()[_0x389c('0x3b')](function(_0x1568d4){_0x5e24a6=_[_0x389c('0x1b')](_0x1568d4);return _0x4bfe42[_0x389c('0x52')]['getVoiceQueues']({'where':{'type':_0x389c('0x64'),'dialActive':!![],'dialMethod':_0x389c('0x65')},'attributes':['id','dialOrderByScheduledAt',_0x389c('0x66')],'raw':!![]});})['then'](function(_0x4cbb3d){if(_0x4cbb3d&&_0x4cbb3d[_0x389c('0x31')]){return db[_0x389c('0x67')][_0x389c('0x68')](function(_0x4ce5fd){var _0x4648aa={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x389c('0x54')](_0x389c('0x55'))},'VoiceQueueId':{'$in':_[_0x389c('0x13')](_0x4cbb3d,'id')},'$or':[{'UserId':null},{'UserId':_0x4bfe42['user']['id']}]};var _0x2dcdb7={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x4cbb3d)['filter'](['dialPreviewAutoRecallMe',0x0])[_0x389c('0x13')]('id')[_0x389c('0x69')]()},'$or':[{'UserId':null},{'UserId':_0x4bfe42['user']['id']}]};var _0x2aecff={'$or':[_0x4648aa,_0x2dcdb7]};var _0x15cc59=[];if(_0x4bfe42['body']['direction']&&_0x4bfe42[_0x389c('0x44')][_0x389c('0x6a')]===_0x389c('0x6b')){if(!_[_0x389c('0x6c')](_0x4bfe42[_0x389c('0x44')][_0x389c('0x6d')])){_0x2aecff['id']={'$in':_0x4bfe42[_0x389c('0x44')][_0x389c('0x6d')]};}_0x15cc59=[[_0x389c('0x6e'),_0x389c('0x6f')],[_0x389c('0x70'),_0x4cbb3d[0x0]['dialOrderByScheduledAt']===_0x389c('0x6f')?_0x389c('0x71'):_0x389c('0x6f')],db['sequelize'][_0x389c('0x72')](_0x389c('0x73')),['id',_0x389c('0x71')]];}else{if(!_[_0x389c('0x6c')](_0x4bfe42['body'][_0x389c('0x6d')])){_0x2aecff['id']={'$notIn':_0x4bfe42[_0x389c('0x44')]['hopperIds']};}_0x15cc59=[[_0x389c('0x6e'),_0x389c('0x71')],[_0x389c('0x70'),_0x4cbb3d[0x0][_0x389c('0x74')]],db[_0x389c('0x67')][_0x389c('0x72')](_0x389c('0x75')),['id',_0x389c('0x6f')]];}return db[_0x389c('0x14')][_0x389c('0x76')]({'attributes':['id',_0x389c('0x77'),'phone',_0x389c('0x78')],'where':_0x2aecff,'order':_0x15cc59,'transaction':_0x4ce5fd,'lock':_0x4ce5fd['LOCK'][_0x389c('0x79')],'include':[{'model':db[_0x389c('0x59')],'as':_0x389c('0x7a'),'attributes':_0x5e24a6,'include':[{'model':db['CmCompany'],'as':_0x389c('0x7b'),'attributes':['id',_0x389c('0x11')]}]},{'model':db['CmList'],'as':_0x389c('0x7c'),'attributes':['id','name']},{'model':db['VoiceQueue'],'as':_0x389c('0x7d'),'attributes':['id',_0x389c('0x11'),'dialActive']}]})['then'](function(_0x29dea4){if(_0x29dea4){return _0x29dea4[_0x389c('0xf')]({'UserId':_0x4bfe42[_0x389c('0x52')]['id']},{'transaction':_0x4ce5fd});}});});}})[_0x389c('0x3b')](handleEntityNotFound(_0x18d3d7,null))[_0x389c('0x3b')](respondWithResult(_0x18d3d7,null))[_0x389c('0x3f')](handleError(_0x18d3d7,null));};exports['getPreviewRecall']=function(_0x442696,_0x3c9a56,_0x135ebd){var _0xe3b7b2=[];var _0x58885f=_0x442696[_0x389c('0x41')]['id'];var _0x4ec383=_0x442696[_0x389c('0x52')]['id'];return db[_0x389c('0x59')][_0x389c('0x45')]()[_0x389c('0x3b')](function(_0xa82c9){_0xe3b7b2=_[_0x389c('0x1b')](_0xa82c9);return db['sequelize']['transaction'](function(_0x2ba48e){const _0xd258a5={'id':_0x58885f};return db[_0x389c('0x14')]['findOne']({'attributes':['id',_0x389c('0x77'),_0x389c('0x78')],'where':_0xd258a5,'transaction':_0x2ba48e,'lock':_0x2ba48e['LOCK'][_0x389c('0x79')],'include':[{'model':db[_0x389c('0x59')],'as':_0x389c('0x7a'),'attributes':_0xe3b7b2,'include':[{'model':db[_0x389c('0x7e')],'as':_0x389c('0x7b'),'attributes':['id','name']}]},{'model':db[_0x389c('0x7f')],'as':_0x389c('0x7c'),'attributes':['id','name']},{'model':db[_0x389c('0x49')],'as':_0x389c('0x7d'),'attributes':['id',_0x389c('0x11'),_0x389c('0x80')]}]})[_0x389c('0x3b')](function(_0x255cfd){if(_0x255cfd){return _0x255cfd[_0x389c('0xf')]({'UserId':_0x4ec383},{'transaction':_0x2ba48e});}});});})[_0x389c('0x3b')](handleEntityNotFound(_0x3c9a56,null))['then'](respondWithResult(_0x3c9a56,null))[_0x389c('0x3f')](handleError(_0x3c9a56,null));};exports[_0x389c('0x81')]=function(_0x268d7d,_0x2c21ce){return _0x268d7d[_0x389c('0x52')]['getVoiceQueues']({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x389c('0x65')},'attributes':['id'],'raw':!![]})[_0x389c('0x3b')](function(_0x63cb59){if(_0x63cb59&&_0x63cb59[_0x389c('0x31')]){return db['CmHopper'][_0x389c('0xa')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x389c('0x54')](_0x389c('0x55'))},'VoiceQueueId':{'$in':_[_0x389c('0x13')](_0x63cb59,'id')},'$or':[{'UserId':null},{'UserId':_0x268d7d[_0x389c('0x52')]['id']}]}});}return 0x0;})['then'](function(_0x5dc5fc){if(!_[_0x389c('0x5c')](_0x5dc5fc)&&_[_0x389c('0x82')](_0x5dc5fc)){return _0x2c21ce[_0x389c('0xc')](0xc8)[_0x389c('0x7')]({'contacts':_0x5dc5fc});}else{logger['error']('CmHopper,\x20%s,\x20%s,\x20%s',_0x389c('0x81'),0x194,_0x389c('0x83'));_0x2c21ce[_0x389c('0x84')](0x194);}})[_0x389c('0x3f')](handleError(_0x2c21ce,null));};exports[_0x389c('0x85')]=function(_0x4158d0,_0x589598){var _0x1f8960=shared[_0x389c('0x86')];var _0x3c2a60=[];_[_0x389c('0x13')](_0x1f8960,function(_0x458c31){_0x3c2a60[_0x389c('0x87')]({'id':_0x458c31['name'],'name':_0x458c31[_0x389c('0x11')],'utcOffset':_0x458c31[_0x389c('0x88')]});});return _0x589598[_0x389c('0xc')](0xc8)[_0x389c('0x7')]({'tz':_0x3c2a60});};exports[_0x389c('0x89')]=function(_0x3d2817,_0x2ea6d8){var _0x34adf5=shared[_0x389c('0x86')];var _0x5589b3={};if(!_[_0x389c('0x5c')](_0x34adf5[_0x3d2817[_0x389c('0x44')]['id']]))_0x5589b3=_0x34adf5[_0x3d2817[_0x389c('0x44')]['id']];return _0x2ea6d8[_0x389c('0xc')](0xc8)[_0x389c('0x7')](_0x5589b3);};
\ No newline at end of file
+var _0x5178=['pick','filter','merge','VIRTUAL','options','CmHopper','includeAll','findAll','rows','catch','show','params','keys','include','find','create','body','describe','destroy','VoiceQueueId','VoiceQueue','Campaign','CampaignId','dataValues','updatedAt','state','statedesc','deleted','campaign','membername','user','deletedat','format','calleridnum','phone','campaigntype','ivr','CmContact','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','CmHopperAdditionalPhone','end','getPreview','outbound','preview','dialOrderByScheduledAt','dialPreviewAutoRecallMe','transaction','YYYY-MM-DD\x20HH:mm:ss','value','direction','isEmpty','hopperIds','priority','ASC','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','sequelize','findOne','scheduledat','recallme','LOCK','UPDATE','Contact','CmCompany','List','Queue','dialActive','getPreviewRecall','Company','CmList','getOpenContacts','getVoiceQueues','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','getTimezones','push','utcOffset','getTimezone','timezones','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','json','offset','undefined','count','limit','status','set','Content-Range','update','then','sendStatus','error','stack','name','send','map','rawAttributes','type','key','model','query','filters','intersection','concat','$and','$or','$gte','$lt','$lte','$eq','$between','$notBetween','$in','$notIn','$like','$notLike','$notILike','$overlap','$contains','$contained','$any','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where'];(function(_0xf361ea,_0x4d8528){var _0x8f02f5=function(_0xc942e){while(--_0xc942e){_0xf361ea['push'](_0xf361ea['shift']());}};_0x8f02f5(++_0x4d8528);}(_0x5178,0x171));var _0x8517=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x5178[_0x6c993a];return _0x27f547;};'use strict';var moment=require('moment');var _=require(_0x8517('0x0'));var qs=require(_0x8517('0x1'));var logger=require(_0x8517('0x2'))(_0x8517('0x3'));var shared=require(_0x8517('0x4'));var db=require('../../mysqldb')['db'];function respondWithResult(_0x483381,_0x3ed6a5){_0x3ed6a5=_0x3ed6a5||0xc8;return function(_0x221184){if(_0x221184){return _0x483381['status'](_0x3ed6a5)[_0x8517('0x5')](_0x221184);}};}function respondWithFilteredResult(_0x58ed7e,_0x13ba05){return function(_0x45498e){if(_0x45498e){var _0x3615b2=typeof _0x13ba05[_0x8517('0x6')]===_0x8517('0x7')&&typeof _0x13ba05['limit']===_0x8517('0x7');var _0x526e51=_0x45498e['count'];var _0x2d15fa=_0x3615b2?0x0:_0x13ba05[_0x8517('0x6')];var _0x4dac4d=_0x3615b2?_0x45498e[_0x8517('0x8')]:_0x13ba05[_0x8517('0x6')]+_0x13ba05[_0x8517('0x9')];var _0x3be6b0;if(_0x4dac4d>=_0x526e51){_0x4dac4d=_0x526e51;_0x3be6b0=0xc8;}else{_0x3be6b0=0xce;}_0x58ed7e[_0x8517('0xa')](_0x3be6b0);return _0x58ed7e[_0x8517('0xb')](_0x8517('0xc'),_0x2d15fa+'-'+_0x4dac4d+'/'+_0x526e51)[_0x8517('0x5')](_0x45498e);}return null;};}function saveUpdates(_0x4b9768,_0x9c57de){return function(_0x7f429a){if(_0x7f429a){return _0x7f429a[_0x8517('0xd')](_0x4b9768)[_0x8517('0xe')](function(_0x284a05){return _0x284a05;});}return null;};}function handleEntityNotFound(_0x49eba7,_0x385219){return function(_0x19dd9d){if(!_0x19dd9d){_0x49eba7[_0x8517('0xf')](0x194);}return _0x19dd9d;};}function handleError(_0x100280,_0x411d29){_0x411d29=_0x411d29||0x1f4;return function(_0x18a984){logger[_0x8517('0x10')](_0x18a984[_0x8517('0x11')]);if(_0x18a984[_0x8517('0x12')]){delete _0x18a984[_0x8517('0x12')];}_0x100280[_0x8517('0xa')](_0x411d29)[_0x8517('0x13')](_0x18a984);};}exports['index']=function(_0xdfe7fe,_0x100b76){var _0x38e0f3={},_0xf1b53b={},_0x64875e={'count':0x0,'rows':[]};var _0x24ca7e=_[_0x8517('0x14')](db['CmHopper'][_0x8517('0x15')],function(_0x4cd0a5){return{'name':_0x4cd0a5['fieldName'],'type':_0x4cd0a5[_0x8517('0x16')][_0x8517('0x17')]};});_0xf1b53b[_0x8517('0x18')]=_[_0x8517('0x14')](_0x24ca7e,_0x8517('0x12'));_0xf1b53b[_0x8517('0x19')]=_['keys'](_0xdfe7fe['query']);_0xf1b53b[_0x8517('0x1a')]=_[_0x8517('0x1b')](_0xf1b53b[_0x8517('0x18')],_0xf1b53b[_0x8517('0x19')]);_0xf1b53b[_0x8517('0x1a')]=_[_0x8517('0x1c')](_0xf1b53b['filters'],[_0x8517('0x1d'),_0x8517('0x1e'),'$gt',_0x8517('0x1f'),_0x8517('0x20'),_0x8517('0x21'),'$ne',_0x8517('0x22'),'$not',_0x8517('0x23'),_0x8517('0x24'),_0x8517('0x25'),_0x8517('0x26'),_0x8517('0x27'),_0x8517('0x28'),'$iLike',_0x8517('0x29'),'$like',_0x8517('0x2a'),_0x8517('0x2b'),_0x8517('0x2c'),_0x8517('0x2d')]);_0x38e0f3[_0x8517('0x2e')]=_[_0x8517('0x1b')](_0xf1b53b['model'],qs[_0x8517('0x2f')](_0xdfe7fe['query'][_0x8517('0x2f')]));_0x38e0f3[_0x8517('0x2e')]=_0x38e0f3[_0x8517('0x2e')][_0x8517('0x30')]?_0x38e0f3[_0x8517('0x2e')]:_0xf1b53b[_0x8517('0x18')];if(!_0xdfe7fe[_0x8517('0x19')][_0x8517('0x31')](_0x8517('0x32'))){_0x38e0f3['limit']=qs[_0x8517('0x9')](_0xdfe7fe[_0x8517('0x19')][_0x8517('0x9')]);_0x38e0f3['offset']=qs['offset'](_0xdfe7fe['query'][_0x8517('0x6')]);}_0x38e0f3[_0x8517('0x33')]=qs[_0x8517('0x34')](_0xdfe7fe[_0x8517('0x19')][_0x8517('0x34')]);_0x38e0f3[_0x8517('0x35')]=qs['filters'](_[_0x8517('0x36')](_0xdfe7fe[_0x8517('0x19')],_0xf1b53b[_0x8517('0x1a')]),_0x24ca7e);if(_0xdfe7fe['query'][_0x8517('0x37')]){_0x38e0f3['where']=_[_0x8517('0x38')](_0x38e0f3[_0x8517('0x35')],{'$or':_['map'](_0x24ca7e,function(_0x572feb){if(_0x572feb[_0x8517('0x16')]!==_0x8517('0x39')){var _0x2c1292={};_0x2c1292[_0x572feb[_0x8517('0x12')]]={'$like':'%'+_0xdfe7fe['query']['filter']+'%'};return _0x2c1292;}})});}_0x38e0f3=_[_0x8517('0x38')]({},_0x38e0f3,_0xdfe7fe[_0x8517('0x3a')]);var _0x1835ac={'where':_0x38e0f3['where']};return db[_0x8517('0x3b')][_0x8517('0x8')](_0x1835ac)['then'](function(_0x209235){_0x64875e[_0x8517('0x8')]=_0x209235;if(_0xdfe7fe[_0x8517('0x19')][_0x8517('0x3c')]){_0x38e0f3['include']=[{'all':!![]}];}return db[_0x8517('0x3b')][_0x8517('0x3d')](_0x38e0f3);})[_0x8517('0xe')](function(_0x36ff78){_0x64875e[_0x8517('0x3e')]=_0x36ff78;return _0x64875e;})[_0x8517('0xe')](respondWithFilteredResult(_0x100b76,_0x38e0f3))[_0x8517('0x3f')](handleError(_0x100b76,null));};exports[_0x8517('0x40')]=function(_0x3f338a,_0x183310){var _0x475d71={'raw':!![],'where':{'id':_0x3f338a[_0x8517('0x41')]['id']}},_0x42e62f={};_0x42e62f['model']=_['keys'](db[_0x8517('0x3b')][_0x8517('0x15')]);_0x42e62f[_0x8517('0x19')]=_[_0x8517('0x42')](_0x3f338a[_0x8517('0x19')]);_0x42e62f['filters']=_[_0x8517('0x1b')](_0x42e62f[_0x8517('0x18')],_0x42e62f['query']);_0x475d71[_0x8517('0x2e')]=_[_0x8517('0x1b')](_0x42e62f[_0x8517('0x18')],qs[_0x8517('0x2f')](_0x3f338a['query'][_0x8517('0x2f')]));_0x475d71[_0x8517('0x2e')]=_0x475d71['attributes'][_0x8517('0x30')]?_0x475d71[_0x8517('0x2e')]:_0x42e62f[_0x8517('0x18')];if(_0x3f338a['query'][_0x8517('0x3c')]){_0x475d71[_0x8517('0x43')]=[{'all':!![]}];}_0x475d71=_[_0x8517('0x38')]({},_0x475d71,_0x3f338a[_0x8517('0x3a')]);return db[_0x8517('0x3b')][_0x8517('0x44')](_0x475d71)[_0x8517('0xe')](handleEntityNotFound(_0x183310,null))['then'](respondWithResult(_0x183310,null))[_0x8517('0x3f')](handleError(_0x183310,null));};exports[_0x8517('0x45')]=function(_0x5382b2,_0x326323){return db[_0x8517('0x3b')][_0x8517('0x45')](_0x5382b2[_0x8517('0x46')],{})[_0x8517('0xe')](respondWithResult(_0x326323,0xc9))[_0x8517('0x3f')](handleError(_0x326323,null));};exports['update']=function(_0xad2c85,_0x10c07a){if(_0xad2c85[_0x8517('0x46')]['id']){delete _0xad2c85['body']['id'];}return db[_0x8517('0x3b')][_0x8517('0x44')]({'where':{'id':_0xad2c85['params']['id']}})[_0x8517('0xe')](handleEntityNotFound(_0x10c07a,null))[_0x8517('0xe')](saveUpdates(_0xad2c85['body'],null))['then'](respondWithResult(_0x10c07a,null))['catch'](handleError(_0x10c07a,null));};exports[_0x8517('0x47')]=function(_0x250a14,_0x4ec257){return db[_0x8517('0x3b')]['describe']()['then'](respondWithResult(_0x4ec257,null))[_0x8517('0x3f')](handleError(_0x4ec257,null));};exports[_0x8517('0x48')]=function(_0x3c8ecb,_0x6c2607){var _0x580af9;var _0x282601=_0x3c8ecb[_0x8517('0x41')]['id'];return db[_0x8517('0x3b')]['find']({'where':{'id':_0x3c8ecb[_0x8517('0x41')]['id']}})[_0x8517('0xe')](handleEntityNotFound(_0x6c2607,null))[_0x8517('0xe')](function(_0x22321c){if(_0x22321c){return _0x22321c[_0x8517('0x48')]()[_0x8517('0xe')](function(_0x3cccd9){return _0x3cccd9;});}})['then'](function(_0x3a5adb){_0x580af9=_0x3a5adb;if(_0x3a5adb){if(_0x3a5adb['VoiceQueueId']||_0x3a5adb['CampaignId']){return db[_0x3a5adb[_0x8517('0x49')]?_0x8517('0x4a'):_0x8517('0x4b')][_0x8517('0x44')]({'where':{'id':_0x3a5adb['VoiceQueueId']?_0x3a5adb[_0x8517('0x49')]:_0x3a5adb[_0x8517('0x4c')]},'attributes':['id','name'],'raw':!![]});}}})['then'](function(_0x3bdbb4){var _0x1f5db0={};if(_0x3bdbb4){_[_0x8517('0x38')](_0x1f5db0,_['omit'](_0x580af9[_0x8517('0x4d')],['createdAt',_0x8517('0x4e'),'id']));_0x1f5db0[_0x8517('0x4f')]=0x15;_0x1f5db0[_0x8517('0x50')]=_0x8517('0x51');_0x1f5db0[_0x8517('0x52')]=_0x3bdbb4[_0x8517('0x12')];_0x1f5db0[_0x8517('0x53')]=_0x3c8ecb[_0x8517('0x54')][_0x8517('0x12')];_0x1f5db0['UserId']=_0x3c8ecb['user']['id'];_0x1f5db0[_0x8517('0x51')]=!![];_0x1f5db0[_0x8517('0x55')]=moment()[_0x8517('0x56')]('YYYY-MM-DD\x20HH:mm:ss');_0x1f5db0[_0x8517('0x57')]=_0x580af9[_0x8517('0x58')];_0x1f5db0[_0x8517('0x59')]=_0x580af9['VoiceQueueId']?'queue':_0x8517('0x5a');return db[_0x8517('0x5b')][_0x8517('0x44')]({'where':{'id':_0x1f5db0[_0x8517('0x5c')]},'attributes':[_0x8517('0x5d'),_0x8517('0x5e')]})[_0x8517('0xe')](function(_0x123504){if(!_[_0x8517('0x5f')](_0x6c2607)&&!_[_0x8517('0x5f')](_0x123504[_0x8517('0x5d')])){_0x1f5db0[_0x8517('0x60')]=_0x123504[_0x8517('0x5d')];if(!_[_0x8517('0x5f')](_0x123504[_0x8517('0x5e')])){_0x1f5db0[_0x8517('0x60')]+='\x20'+_0x123504['lastName'];}}})[_0x8517('0x61')](function(){return db[_0x8517('0x62')][_0x8517('0x45')](_0x1f5db0);});}})[_0x8517('0xe')](function(_0x1766a0){return db[_0x8517('0x63')][_0x8517('0x48')]({'where':{'CmHopperId':_0x282601}});})['then'](function(){return _0x6c2607[_0x8517('0xa')](0xcc)[_0x8517('0x64')]();})[_0x8517('0x3f')](handleError(_0x6c2607,null));};exports[_0x8517('0x65')]=function(_0x4240d0,_0x57dcb7){var _0x2437d4=[];return db['CmContact'][_0x8517('0x47')]()[_0x8517('0xe')](function(_0x4147cf){_0x2437d4=_[_0x8517('0x42')](_0x4147cf);return _0x4240d0[_0x8517('0x54')]['getVoiceQueues']({'where':{'type':_0x8517('0x66'),'dialActive':!![],'dialMethod':_0x8517('0x67')},'attributes':['id',_0x8517('0x68'),_0x8517('0x69')],'raw':!![]});})['then'](function(_0x4f4b32){if(_0x4f4b32&&_0x4f4b32[_0x8517('0x30')]){return db['sequelize'][_0x8517('0x6a')](function(_0x1c604c){var _0x4962d4={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x8517('0x56')](_0x8517('0x6b'))},'VoiceQueueId':{'$in':_['map'](_0x4f4b32,'id')},'$or':[{'UserId':null},{'UserId':_0x4240d0[_0x8517('0x54')]['id']}]};var _0x2b26f8={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x4f4b32)[_0x8517('0x37')]([_0x8517('0x69'),0x0])[_0x8517('0x14')]('id')[_0x8517('0x6c')]()},'$or':[{'UserId':null},{'UserId':_0x4240d0[_0x8517('0x54')]['id']}]};var _0x3b58b7={'$or':[_0x4962d4,_0x2b26f8]};var _0x4cf0c8=[];if(_0x4240d0[_0x8517('0x46')][_0x8517('0x6d')]&&_0x4240d0[_0x8517('0x46')][_0x8517('0x6d')]==='prev'){if(!_[_0x8517('0x6e')](_0x4240d0['body'][_0x8517('0x6f')])){_0x3b58b7['id']={'$in':_0x4240d0[_0x8517('0x46')][_0x8517('0x6f')]};}_0x4cf0c8=[[_0x8517('0x70'),'ASC'],['scheduledAt',_0x4f4b32[0x0][_0x8517('0x68')]===_0x8517('0x71')?_0x8517('0x72'):_0x8517('0x71')],db['sequelize'][_0x8517('0x73')](_0x8517('0x74')),['id',_0x8517('0x72')]];}else{if(!_[_0x8517('0x6e')](_0x4240d0[_0x8517('0x46')][_0x8517('0x6f')])){_0x3b58b7['id']={'$notIn':_0x4240d0[_0x8517('0x46')][_0x8517('0x6f')]};}_0x4cf0c8=[[_0x8517('0x70'),_0x8517('0x72')],['scheduledAt',_0x4f4b32[0x0][_0x8517('0x68')]],db[_0x8517('0x75')][_0x8517('0x73')]('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id',_0x8517('0x71')]];}return db['CmHopper'][_0x8517('0x76')]({'attributes':['id',_0x8517('0x77'),'phone',_0x8517('0x78')],'where':_0x3b58b7,'order':_0x4cf0c8,'transaction':_0x1c604c,'lock':_0x1c604c[_0x8517('0x79')][_0x8517('0x7a')],'include':[{'model':db[_0x8517('0x5b')],'as':_0x8517('0x7b'),'attributes':_0x2437d4,'include':[{'model':db[_0x8517('0x7c')],'as':'Company','attributes':['id',_0x8517('0x12')]}]},{'model':db['CmList'],'as':_0x8517('0x7d'),'attributes':['id',_0x8517('0x12')]},{'model':db[_0x8517('0x4a')],'as':_0x8517('0x7e'),'attributes':['id','name',_0x8517('0x7f')]}]})[_0x8517('0xe')](function(_0x1a0b02){if(_0x1a0b02){return _0x1a0b02['update']({'UserId':_0x4240d0[_0x8517('0x54')]['id']},{'transaction':_0x1c604c});}});});}})[_0x8517('0xe')](handleEntityNotFound(_0x57dcb7,null))[_0x8517('0xe')](respondWithResult(_0x57dcb7,null))[_0x8517('0x3f')](handleError(_0x57dcb7,null));};exports[_0x8517('0x80')]=function(_0x13de00,_0x1e63d5,_0x495a38){var _0x402b34=[];var _0x533f23=_0x13de00['params']['id'];var _0x3d5687=_0x13de00[_0x8517('0x54')]['id'];return db[_0x8517('0x5b')]['describe']()[_0x8517('0xe')](function(_0x62f8a8){_0x402b34=_['keys'](_0x62f8a8);return db[_0x8517('0x75')]['transaction'](function(_0x57d29b){const _0x43986b={'id':_0x533f23};return db[_0x8517('0x3b')][_0x8517('0x76')]({'attributes':['id',_0x8517('0x77'),_0x8517('0x78')],'where':_0x43986b,'transaction':_0x57d29b,'lock':_0x57d29b['LOCK'][_0x8517('0x7a')],'include':[{'model':db[_0x8517('0x5b')],'as':'Contact','attributes':_0x402b34,'include':[{'model':db['CmCompany'],'as':_0x8517('0x81'),'attributes':['id',_0x8517('0x12')]}]},{'model':db[_0x8517('0x82')],'as':_0x8517('0x7d'),'attributes':['id',_0x8517('0x12')]},{'model':db[_0x8517('0x4a')],'as':'Queue','attributes':['id','name',_0x8517('0x7f')]}]})[_0x8517('0xe')](function(_0x5f53da){if(_0x5f53da){return _0x5f53da[_0x8517('0xd')]({'UserId':_0x3d5687},{'transaction':_0x57d29b});}});});})[_0x8517('0xe')](handleEntityNotFound(_0x1e63d5,null))['then'](respondWithResult(_0x1e63d5,null))[_0x8517('0x3f')](handleError(_0x1e63d5,null));};exports[_0x8517('0x83')]=function(_0x3c1b7e,_0x590a99){return _0x3c1b7e['user'][_0x8517('0x84')]({'where':{'type':_0x8517('0x66'),'dialActive':!![],'dialMethod':_0x8517('0x67')},'attributes':['id'],'raw':!![]})[_0x8517('0xe')](function(_0x8c1dce){if(_0x8c1dce&&_0x8c1dce['length']){return db[_0x8517('0x3b')][_0x8517('0x8')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x8517('0x6b'))},'VoiceQueueId':{'$in':_[_0x8517('0x14')](_0x8c1dce,'id')},'$or':[{'UserId':null},{'UserId':_0x3c1b7e[_0x8517('0x54')]['id']}]}});}return 0x0;})[_0x8517('0xe')](function(_0xdbc754){if(!_[_0x8517('0x5f')](_0xdbc754)&&_[_0x8517('0x85')](_0xdbc754)){return _0x590a99[_0x8517('0xa')](0xc8)[_0x8517('0x5')]({'contacts':_0xdbc754});}else{logger[_0x8517('0x10')](_0x8517('0x86'),_0x8517('0x83'),0x194,_0x8517('0x87'));_0x590a99[_0x8517('0xf')](0x194);}})[_0x8517('0x3f')](handleError(_0x590a99,null));};exports[_0x8517('0x88')]=function(_0x2985a0,_0x799502){var _0x3a9a21=shared['timezones'];var _0x1c271c=[];_[_0x8517('0x14')](_0x3a9a21,function(_0x41b3ea){_0x1c271c[_0x8517('0x89')]({'id':_0x41b3ea[_0x8517('0x12')],'name':_0x41b3ea[_0x8517('0x12')],'utcOffset':_0x41b3ea[_0x8517('0x8a')]});});return _0x799502['status'](0xc8)[_0x8517('0x5')]({'tz':_0x1c271c});};exports[_0x8517('0x8b')]=function(_0x38add4,_0x2e9ece){var _0x4762d3=shared[_0x8517('0x8c')];var _0x5bb8e9={};if(!_[_0x8517('0x5f')](_0x4762d3[_0x38add4[_0x8517('0x46')]['id']]))_0x5bb8e9=_0x4762d3[_0x38add4[_0x8517('0x46')]['id']];return _0x2e9ece[_0x8517('0xa')](0xc8)[_0x8517('0x5')](_0x5bb8e9);};
\ No newline at end of file
index cc8ea33..04ab2a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2542=['../../config/environment','./cmHopper.attributes','exports','define','CmHopper','cm_hopper','scheduledat','phone','priority','lodash','util','../../config/logger','api','bluebird','path','rimraf'];(function(_0x5ba6a7,_0x3292f1){var _0x2084a1=function(_0x3860d2){while(--_0x3860d2){_0x5ba6a7['push'](_0x5ba6a7['shift']());}};_0x2084a1(++_0x3292f1);}(_0x2542,0x169));var _0x2254=function(_0x2fc3b1,_0x36bd13){_0x2fc3b1=_0x2fc3b1-0x0;var _0x584347=_0x2542[_0x2fc3b1];return _0x584347;};'use strict';var _=require(_0x2254('0x0'));var util=require(_0x2254('0x1'));var logger=require(_0x2254('0x2'))(_0x2254('0x3'));var moment=require('moment');var BPromise=require(_0x2254('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2254('0x5'));var rimraf=require(_0x2254('0x6'));var config=require(_0x2254('0x7'));var attributes=require(_0x2254('0x8'));module[_0x2254('0x9')]=function(_0x508183,_0x19ad3c){return _0x508183[_0x2254('0xa')](_0x2254('0xb'),attributes,{'tableName':_0x2254('0xc'),'paranoid':![],'indexes':[{'name':_0x2254('0xd'),'fields':[_0x2254('0xd')]},{'name':_0x2254('0xe'),'fields':[_0x2254('0xe')]},{'name':_0x2254('0xf'),'fields':[_0x2254('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5fc3=['scheduledat','phone','priority','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./cmHopper.attributes','exports','define','cm_hopper'];(function(_0x41dc6b,_0x11fcc7){var _0x146598=function(_0x336f1b){while(--_0x336f1b){_0x41dc6b['push'](_0x41dc6b['shift']());}};_0x146598(++_0x11fcc7);}(_0x5fc3,0xa8));var _0x35fc=function(_0xcd5a3d,_0x3c5b33){_0xcd5a3d=_0xcd5a3d-0x0;var _0xd43207=_0x5fc3[_0xcd5a3d];return _0xd43207;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var logger=require('../../config/logger')(_0x35fc('0x2'));var moment=require(_0x35fc('0x3'));var BPromise=require(_0x35fc('0x4'));var rp=require(_0x35fc('0x5'));var fs=require('fs');var path=require(_0x35fc('0x6'));var rimraf=require('rimraf');var config=require(_0x35fc('0x7'));var attributes=require(_0x35fc('0x8'));module[_0x35fc('0x9')]=function(_0x5b85ad,_0x5754be){return _0x5b85ad[_0x35fc('0xa')]('CmHopper',attributes,{'tableName':_0x35fc('0xb'),'paranoid':![],'indexes':[{'name':_0x35fc('0xc'),'fields':[_0x35fc('0xc')]},{'name':_0x35fc('0xd'),'fields':[_0x35fc('0xd')]},{'name':_0x35fc('0xe'),'fields':[_0x35fc('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index e4124d5..2b66a83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd679=['order','UserId','UPDATE','GetContactRecallMe','GetCmHopperPreview','limit','Contact','GetContactByPhone','phone','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','voiceQueueIds','interval','availableAgentsIds','NOW()\x20+\x20INTERVAL\x20','\x20MINUTE','NOW()','name','List','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','CmHopper,\x20%s,\x20%s','request\x20sent','debug','CmHopper,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','findAll','options','where','attributes','include','map','model','GetCmHopper','stringify','ShowCmHopper','CmHopper','find','raw','CreateCmHopper','body','UpdateCmHopper','update','DestroyCmHopper','destroy','GetContactDialer','CmContact','describe','sequelize','transaction','LOCK','keys','User','Agent','voicePause','length','push','all','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','ContactId','active','CmHopperFinal','create','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','MoveContactManagedDialer','CountReScheduled','COUNT','literal','`scheduledat`\x20>=\x20','format','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled'];(function(_0x47f278,_0x49d0d6){var _0x5e9bb4=function(_0x233947){while(--_0x233947){_0x47f278['push'](_0x47f278['shift']());}};_0x5e9bb4(++_0x49d0d6);}(_0xd679,0xcc));var _0x9d67=function(_0x337320,_0x16b033){_0x337320=_0x337320-0x0;var _0x25b547=_0xd679[_0x337320];return _0x25b547;};'use strict';var _=require('lodash');var util=require(_0x9d67('0x0'));var moment=require(_0x9d67('0x1'));var BPromise=require(_0x9d67('0x2'));var db=require(_0x9d67('0x3'))['db'];var logger=require(_0x9d67('0x4'))(_0x9d67('0x5'));var jayson=require(_0x9d67('0x6'));var client=jayson[_0x9d67('0x7')][_0x9d67('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x68d71a,_0x920740,_0x56271d){return new BPromise(function(_0x20226f,_0x5865a9){return client[_0x9d67('0x9')](_0x68d71a,_0x56271d)[_0x9d67('0xa')](function(_0x2b20e8){logger['info'](_0x9d67('0xb'),_0x920740,_0x9d67('0xc'));logger[_0x9d67('0xd')](_0x9d67('0xe'),_0x920740,'request\x20sent',JSON['stringify'](_0x2b20e8));if(_0x2b20e8['error']){if(_0x2b20e8[_0x9d67('0xf')][_0x9d67('0x10')]===0x1f4){logger[_0x9d67('0xf')](_0x9d67('0xb'),_0x920740,_0x2b20e8[_0x9d67('0xf')][_0x9d67('0x11')]);return _0x5865a9(_0x2b20e8[_0x9d67('0xf')][_0x9d67('0x11')]);}logger[_0x9d67('0xf')](_0x9d67('0xb'),_0x920740,_0x2b20e8[_0x9d67('0xf')][_0x9d67('0x11')]);return _0x20226f(_0x2b20e8['error'][_0x9d67('0x11')]);}else{logger[_0x9d67('0x12')]('CmHopper,\x20%s,\x20%s',_0x920740,_0x9d67('0xc'));_0x20226f(_0x2b20e8[_0x9d67('0x13')][_0x9d67('0x11')]);}})[_0x9d67('0x14')](function(_0x4e6d75){logger['error'](_0x9d67('0xb'),_0x920740,_0x4e6d75);_0x5865a9(_0x4e6d75);});});}exports['GetCmHopper']=function(_0x59de80){var _0x432b23=this;return new Promise(function(_0x450c19,_0x52d47f){return db['CmHopper'][_0x9d67('0x15')]({'raw':_0x59de80[_0x9d67('0x16')]?_0x59de80[_0x9d67('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x59de80['options']?_0x59de80[_0x9d67('0x16')][_0x9d67('0x17')]||null:null,'attributes':_0x59de80[_0x9d67('0x16')]?_0x59de80[_0x9d67('0x16')][_0x9d67('0x18')]||null:null,'limit':_0x59de80['options']?_0x59de80[_0x9d67('0x16')]['limit']||null:null,'include':_0x59de80['options']?_0x59de80['options'][_0x9d67('0x19')]?_[_0x9d67('0x1a')](_0x59de80[_0x9d67('0x16')]['include'],function(_0x95a0c4){return{'model':db[_0x95a0c4[_0x9d67('0x1b')]],'as':_0x95a0c4['as'],'attributes':_0x95a0c4[_0x9d67('0x18')],'include':_0x95a0c4[_0x9d67('0x19')]?_[_0x9d67('0x1a')](_0x95a0c4[_0x9d67('0x19')],function(_0x487b92){return{'model':db[_0x487b92[_0x9d67('0x1b')]],'as':_0x487b92['as'],'attributes':_0x487b92['attributes'],'include':_0x487b92[_0x9d67('0x19')]?_[_0x9d67('0x1a')](_0x487b92[_0x9d67('0x19')],function(_0x486f2d){return{'model':db[_0x486f2d[_0x9d67('0x1b')]],'as':_0x486f2d['as'],'attributes':_0x486f2d[_0x9d67('0x18')]};}):[]};}):[]};}):[]:[]})[_0x9d67('0xa')](function(_0x34f8fc){logger[_0x9d67('0x12')]('GetCmHopper',_0x59de80);logger[_0x9d67('0xd')](_0x9d67('0x1c'),_0x59de80,JSON[_0x9d67('0x1d')](_0x34f8fc));_0x450c19(_0x34f8fc);})['catch'](function(_0x831bae){logger['error'](_0x9d67('0x1c'),_0x831bae['message'],_0x59de80);_0x52d47f(_0x432b23[_0x9d67('0xf')](0x1f4,_0x831bae[_0x9d67('0x11')]));});});};exports[_0x9d67('0x1e')]=function(_0x3917db){var _0x568470=this;return new Promise(function(_0x4824f9,_0x359348){return db[_0x9d67('0x1f')][_0x9d67('0x20')]({'raw':_0x3917db[_0x9d67('0x16')]?_0x3917db[_0x9d67('0x16')][_0x9d67('0x21')]===undefined?!![]:![]:!![],'where':_0x3917db['options']?_0x3917db[_0x9d67('0x16')]['where']||null:null,'attributes':_0x3917db['options']?_0x3917db[_0x9d67('0x16')][_0x9d67('0x18')]||null:null,'include':_0x3917db[_0x9d67('0x16')]?_0x3917db[_0x9d67('0x16')][_0x9d67('0x19')]?_[_0x9d67('0x1a')](_0x3917db['options'][_0x9d67('0x19')],function(_0x49e71b){return{'model':db[_0x49e71b[_0x9d67('0x1b')]],'as':_0x49e71b['as'],'attributes':_0x49e71b['attributes'],'include':_0x49e71b['include']?_[_0x9d67('0x1a')](_0x49e71b[_0x9d67('0x19')],function(_0x3fe614){return{'model':db[_0x3fe614[_0x9d67('0x1b')]],'as':_0x3fe614['as'],'attributes':_0x3fe614[_0x9d67('0x18')],'include':_0x3fe614[_0x9d67('0x19')]?_['map'](_0x3fe614[_0x9d67('0x19')],function(_0x29fb08){return{'model':db[_0x29fb08[_0x9d67('0x1b')]],'as':_0x29fb08['as'],'attributes':_0x29fb08[_0x9d67('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3969e0){logger[_0x9d67('0x12')](_0x9d67('0x1e'),_0x3917db);logger[_0x9d67('0xd')]('ShowCmHopper',_0x3917db,JSON[_0x9d67('0x1d')](_0x3969e0));_0x4824f9(_0x3969e0);})['catch'](function(_0x1b425a){logger['error'](_0x9d67('0x1e'),_0x1b425a[_0x9d67('0x11')],_0x3917db);_0x359348(_0x568470[_0x9d67('0xf')](0x1f4,_0x1b425a[_0x9d67('0x11')]));});});};exports[_0x9d67('0x22')]=function(_0x51da82){var _0x8d9859=this;return new Promise(function(_0x3c30a4,_0xf6a92f){return db[_0x9d67('0x1f')]['create'](_0x51da82[_0x9d67('0x23')],{'raw':_0x51da82['options']?_0x51da82['options'][_0x9d67('0x21')]===undefined?!![]:![]:!![]})[_0x9d67('0xa')](function(_0x31f11b){logger[_0x9d67('0x12')](_0x9d67('0x22'),_0x51da82);logger[_0x9d67('0xd')](_0x9d67('0x22'),_0x51da82,JSON[_0x9d67('0x1d')](_0x31f11b));_0x3c30a4(_0x31f11b);})[_0x9d67('0x14')](function(_0x59e35e){logger[_0x9d67('0xf')](_0x9d67('0x22'),_0x59e35e[_0x9d67('0x11')],_0x51da82);_0xf6a92f(_0x8d9859[_0x9d67('0xf')](0x1f4,_0x59e35e[_0x9d67('0x11')]));});});};exports[_0x9d67('0x24')]=function(_0x931a7b){var _0x4aaac5=this;return new Promise(function(_0x407931,_0x2fc391){return db[_0x9d67('0x1f')][_0x9d67('0x25')](_0x931a7b[_0x9d67('0x23')],{'raw':_0x931a7b[_0x9d67('0x16')]?_0x931a7b[_0x9d67('0x16')][_0x9d67('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x931a7b[_0x9d67('0x16')]?_0x931a7b[_0x9d67('0x16')][_0x9d67('0x17')]||null:null,'attributes':_0x931a7b[_0x9d67('0x16')]?_0x931a7b['options']['attributes']||null:null,'limit':_0x931a7b[_0x9d67('0x16')]?_0x931a7b[_0x9d67('0x16')]['limit']||null:null})['then'](function(_0x26b646){logger[_0x9d67('0x12')]('UpdateCmHopper',_0x931a7b);logger[_0x9d67('0x12')]('UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]',JSON['stringify'](_0x931a7b[_0x9d67('0x16')][_0x9d67('0x17')]),_0x931a7b['body']['active']);logger[_0x9d67('0xd')](_0x9d67('0x24'),_0x931a7b,JSON[_0x9d67('0x1d')](_0x26b646));_0x407931(_0x26b646);})['catch'](function(_0x36d4a9){logger[_0x9d67('0xf')](_0x9d67('0x24'),_0x36d4a9['message'],_0x931a7b);_0x2fc391(_0x4aaac5[_0x9d67('0xf')](0x1f4,_0x36d4a9[_0x9d67('0x11')]));});});};exports[_0x9d67('0x26')]=function(_0x449f75){var _0x30cf2d=this;return new Promise(function(_0x1f305e,_0x1ec0ff){return db['CmHopper'][_0x9d67('0x27')]({'where':_0x449f75['options']?_0x449f75[_0x9d67('0x16')]['where']||null:null})[_0x9d67('0xa')](function(_0x3929ec){logger[_0x9d67('0x12')](_0x9d67('0x26'),_0x449f75);logger[_0x9d67('0xd')](_0x9d67('0x26'),_0x449f75,JSON[_0x9d67('0x1d')](_0x3929ec));_0x1f305e(_0x3929ec);})[_0x9d67('0x14')](function(_0x2fa869){logger[_0x9d67('0xf')](_0x9d67('0x26'),_0x2fa869['message'],_0x449f75);_0x1ec0ff(_0x30cf2d['error'](0x1f4,_0x2fa869[_0x9d67('0x11')]));});});};exports[_0x9d67('0x28')]=function(_0xc7f9f7){var _0x192a96=this;return new Promise(function(_0x4ed9d5,_0x4f2c55){return db[_0x9d67('0x29')][_0x9d67('0x2a')]()[_0x9d67('0xa')](function(_0x52b853){return db[_0x9d67('0x2b')][_0x9d67('0x2c')](function(_0x3d9985){return db[_0x9d67('0x1f')][_0x9d67('0x15')]({'where':_0xc7f9f7['options']?_0xc7f9f7[_0x9d67('0x16')][_0x9d67('0x17')]||null:null,'attributes':_0xc7f9f7['options']?_0xc7f9f7[_0x9d67('0x16')][_0x9d67('0x18')]||null:null,'limit':_0xc7f9f7[_0x9d67('0x16')]?_0xc7f9f7[_0x9d67('0x16')]['limit']||null:null,'order':_0xc7f9f7[_0x9d67('0x16')]?_0xc7f9f7[_0x9d67('0x16')]['order']||null:null,'transaction':_0x3d9985,'lock':_0x3d9985[_0x9d67('0x2d')]['UPDATE'],'include':[{'model':db[_0x9d67('0x29')],'as':'Contact','attributes':_[_0x9d67('0x2e')](_0x52b853)},{'model':db[_0x9d67('0x2f')],'as':_0x9d67('0x30'),'attributes':['id','name',_0x9d67('0x31')]}]})[_0x9d67('0xa')](function(_0x3f95eb){var _0x35c114=[];var _0xf61b18=[];for(var _0x45d166=0x0;_0x45d166<_0x3f95eb[_0x9d67('0x32')];_0x45d166+=0x1){var _0x1453f1=_0x3f95eb[_0x45d166]['UserId'];if(_0x1453f1===null){_0x35c114[_0x9d67('0x33')](_0x3f95eb[_0x45d166][_0x9d67('0x25')](_0xc7f9f7[_0x9d67('0x23')],{'transaction':_0x3d9985}));}else if(!_0xf61b18['includes'](_0x1453f1)){_0xf61b18[_0x9d67('0x33')](_0x1453f1);_0x35c114[_0x9d67('0x33')](_0x3f95eb[_0x45d166][_0x9d67('0x25')](_0xc7f9f7[_0x9d67('0x23')],{'transaction':_0x3d9985}));}}return BPromise[_0x9d67('0x34')](_0x35c114);});})['then'](function(_0x2c52b8){logger[_0x9d67('0x12')](_0x9d67('0x28'),_0xc7f9f7);if(_0x2c52b8[_0x9d67('0x32')]>0x0){logger['info'](_0x9d67('0x35'),_0x2c52b8[0x0][_0x9d67('0x36')]['id'],_0x2c52b8[0x0][_0x9d67('0x36')][_0x9d67('0x37')],_0x2c52b8[0x0]['dataValues'][_0x9d67('0x38')]);}logger[_0x9d67('0xd')]('GetContactDialer',_0xc7f9f7,JSON['stringify'](_0x2c52b8));_0x4ed9d5(_0x2c52b8);})[_0x9d67('0x14')](function(_0x3c4edf){logger[_0x9d67('0xf')]('GetContactDialer',_0x3c4edf[_0x9d67('0x11')],_0xc7f9f7);_0x4f2c55(_0x192a96[_0x9d67('0xf')](0x1f4,_0x3c4edf[_0x9d67('0x11')]));});});});};exports['MoveContactManagedDialer']=function(_0x43f722){var _0x19da96=this;return new Promise(function(_0x2f1aab,_0x3ee770){return db['sequelize']['transaction'](function(_0x46ff32){return db[_0x9d67('0x39')][_0x9d67('0x3a')](_0x43f722[_0x9d67('0x23')],{'raw':_0x43f722['options']?_0x43f722[_0x9d67('0x16')][_0x9d67('0x21')]===undefined?!![]:![]:!![],'transaction':_0x46ff32})[_0x9d67('0xa')](function(){logger[_0x9d67('0x12')](_0x9d67('0x3b'),JSON['stringify'](_0x43f722[_0x9d67('0x16')][_0x9d67('0x17')]),_0x43f722['options'][_0x9d67('0x17')][_0x9d67('0x38')]);return db[_0x9d67('0x1f')][_0x9d67('0x27')]({'where':_0x43f722[_0x9d67('0x16')]?_0x43f722[_0x9d67('0x16')][_0x9d67('0x17')]||null:null,'transaction':_0x46ff32});});})['then'](function(_0xd87edf){logger[_0x9d67('0x12')]('MoveContactManagedDialer',_0x43f722);logger[_0x9d67('0xd')]('MoveContactManagedDialer',_0x43f722,JSON['stringify'](_0xd87edf));_0x2f1aab(_0xd87edf);})[_0x9d67('0x14')](function(_0x1b15c3){logger[_0x9d67('0xf')](_0x9d67('0x3c'),_0x1b15c3['message'],_0x43f722);_0x3ee770(_0x19da96[_0x9d67('0xf')](0x1f4,_0x1b15c3[_0x9d67('0x11')]));});});};exports[_0x9d67('0x3d')]=function(_0x2c68e2){var _0x12a05f=this;return new Promise(function(_0x5e2d34,_0x24b36e){return db['CmHopper']['findAll']({'raw':_0x2c68e2[_0x9d67('0x16')]?_0x2c68e2[_0x9d67('0x16')][_0x9d67('0x21')]===undefined?!![]:![]:!![],'where':_0x2c68e2[_0x9d67('0x16')]?_0x2c68e2[_0x9d67('0x16')][_0x9d67('0x17')]||null:null,'attributes':[[db[_0x9d67('0x2b')]['fn'](_0x9d67('0x3e'),db[_0x9d67('0x2b')]['fn']('IF',db[_0x9d67('0x2b')][_0x9d67('0x3f')](_0x9d67('0x40')+util['format']('\x22%s\x22',moment()[_0x9d67('0x41')](_0x9d67('0x42')))+_0x9d67('0x43')))),_0x9d67('0x44')]]})[_0x9d67('0xa')](function(_0x32ec14){logger[_0x9d67('0x12')](_0x9d67('0x3d'),_0x2c68e2);logger[_0x9d67('0xd')](_0x9d67('0x3d'),_0x2c68e2,JSON[_0x9d67('0x1d')](_0x32ec14));_0x5e2d34(_0x32ec14);})[_0x9d67('0x14')](function(_0x974da7){logger[_0x9d67('0xf')]('CountReScheduled',_0x974da7[_0x9d67('0x11')],_0x2c68e2);_0x24b36e(_0x12a05f['error'](0x1f4,_0x974da7[_0x9d67('0x11')]));});});};exports['GetContactRecallMe']=function(_0x396b91){var _0x23331c=this;return new Promise(function(_0x1bc3ba,_0xff53a9){return db[_0x9d67('0x29')]['describe']()[_0x9d67('0xa')](function(_0x491534){return db['sequelize'][_0x9d67('0x2c')](function(_0x3a03fc){return db[_0x9d67('0x1f')][_0x9d67('0x15')]({'where':_0x396b91[_0x9d67('0x16')]?_0x396b91[_0x9d67('0x16')]['where']||null:null,'attributes':_0x396b91[_0x9d67('0x16')]?_0x396b91[_0x9d67('0x16')][_0x9d67('0x18')]||null:null,'limit':0x1,'order':_0x396b91[_0x9d67('0x16')]?_0x396b91[_0x9d67('0x16')][_0x9d67('0x45')]||null:null,'group':db[_0x9d67('0x1f')][_0x9d67('0x46')],'transaction':_0x3a03fc,'lock':_0x3a03fc[_0x9d67('0x2d')][_0x9d67('0x47')],'include':_0x396b91[_0x9d67('0x16')]?_0x396b91[_0x9d67('0x16')]['include']?_[_0x9d67('0x1a')](_0x396b91[_0x9d67('0x16')][_0x9d67('0x19')],function(_0x1a39a3){return{'model':db[_0x1a39a3[_0x9d67('0x1b')]],'as':_0x1a39a3['as'],'attributes':_0x1a39a3[_0x9d67('0x18')],'include':_0x1a39a3['include']?_['map'](_0x1a39a3[_0x9d67('0x19')],function(_0x44dbcb){return{'model':db[_0x44dbcb['model']],'as':_0x44dbcb['as'],'attributes':_0x44dbcb[_0x9d67('0x18')],'include':_0x44dbcb[_0x9d67('0x19')]?_['map'](_0x44dbcb[_0x9d67('0x19')],function(_0x3957a2){return{'model':db[_0x3957a2['model']],'as':_0x3957a2['as'],'attributes':_0x3957a2[_0x9d67('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x238d4d){var _0x16318b=[];for(var _0x18fd96=0x0;_0x18fd96<_0x238d4d[_0x9d67('0x32')];_0x18fd96+=0x1){_0x16318b[_0x9d67('0x33')](_0x238d4d[_0x18fd96][_0x9d67('0x25')](_0x396b91[_0x9d67('0x23')],{'transaction':_0x3a03fc}));}return BPromise['all'](_0x16318b);});})[_0x9d67('0xa')](function(_0x339612){logger['info'](_0x9d67('0x48'),_0x396b91);logger[_0x9d67('0xd')](_0x9d67('0x48'),_0x396b91,JSON['stringify'](_0x339612));_0x1bc3ba(_0x339612);})[_0x9d67('0x14')](function(_0x5b9baa){logger[_0x9d67('0xf')]('GetContactRecallMe',_0x5b9baa[_0x9d67('0x11')],_0x396b91);_0xff53a9(_0x23331c[_0x9d67('0xf')](0x1f4,_0x5b9baa[_0x9d67('0x11')]));});});});};exports[_0x9d67('0x49')]=function(_0x52e3ba){var _0x1a8d2a=this;return new Promise(function(_0x2328e4,_0x46dacc){db[_0x9d67('0x29')][_0x9d67('0x2a')]()[_0x9d67('0xa')](function(_0x274102){return db[_0x9d67('0x1f')][_0x9d67('0x15')]({'raw':_0x52e3ba[_0x9d67('0x16')]?_0x52e3ba[_0x9d67('0x16')][_0x9d67('0x21')]===undefined?!![]:![]:!![],'where':_0x52e3ba[_0x9d67('0x16')]?_0x52e3ba[_0x9d67('0x16')]['where']||null:null,'attributes':_0x52e3ba[_0x9d67('0x16')]?_0x52e3ba[_0x9d67('0x16')][_0x9d67('0x18')]||null:null,'limit':_0x52e3ba[_0x9d67('0x16')]?_0x52e3ba[_0x9d67('0x16')][_0x9d67('0x4a')]||null:null,'include':_0x52e3ba[_0x9d67('0x16')]?_0x52e3ba[_0x9d67('0x16')][_0x9d67('0x19')]?_[_0x9d67('0x1a')](_0x52e3ba[_0x9d67('0x16')][_0x9d67('0x19')],function(_0x5ea76b){return{'model':db[_0x5ea76b[_0x9d67('0x1b')]],'as':_0x5ea76b['as'],'attributes':_0x5ea76b['as']===_0x9d67('0x4b')?_['keys'](_0x274102):_0x5ea76b[_0x9d67('0x18')],'include':_0x5ea76b[_0x9d67('0x19')]?_[_0x9d67('0x1a')](_0x5ea76b[_0x9d67('0x19')],function(_0x57528f){return{'model':db[_0x57528f[_0x9d67('0x1b')]],'as':_0x57528f['as'],'attributes':_0x57528f[_0x9d67('0x18')],'include':_0x57528f[_0x9d67('0x19')]?_[_0x9d67('0x1a')](_0x57528f[_0x9d67('0x19')],function(_0xa48ae6){return{'model':db[_0xa48ae6[_0x9d67('0x1b')]],'as':_0xa48ae6['as'],'attributes':_0xa48ae6[_0x9d67('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x12e9e8){logger[_0x9d67('0x12')](_0x9d67('0x1c'),_0x52e3ba);logger[_0x9d67('0xd')](_0x9d67('0x1c'),_0x52e3ba,JSON[_0x9d67('0x1d')](_0x12e9e8));_0x2328e4(_0x12e9e8);})[_0x9d67('0x14')](function(_0x543127){logger['error'](_0x9d67('0x1c'),_0x543127[_0x9d67('0x11')],_0x52e3ba);_0x46dacc(_0x1a8d2a[_0x9d67('0xf')](0x1f4,_0x543127[_0x9d67('0x11')]));});});});};exports[_0x9d67('0x4c')]=function(_0x9b48b7){var _0x419804=this;return new Promise(function(_0x591ce2,_0x18521a){return db['CmContact']['findOne']({'raw':!![],'where':{'phone':_0x9b48b7[_0x9d67('0x16')][_0x9d67('0x17')][_0x9d67('0x4d')]},'attributes':['id',_0x9d67('0x4e')],'order':[['id',_0x9d67('0x4f')]]})[_0x9d67('0xa')](function(_0x48fdd2){logger[_0x9d67('0x12')](_0x9d67('0x50'),_0x9b48b7);logger['debug']('getContactByPhone',_0x9b48b7,JSON['stringify'](_0x48fdd2));_0x591ce2(_0x48fdd2);})[_0x9d67('0x14')](function(_0x15db7b){logger[_0x9d67('0xf')]('getContactByPhone',_0x15db7b[_0x9d67('0x11')],_0x9b48b7);_0x18521a(_0x419804[_0x9d67('0xf')](0x1f4,_0x15db7b['message']));});});};exports[_0x9d67('0x51')]=function(_0x575145){var _0x4d86c1=this;return new Promise(function(_0x58c3df,_0x30b1e2){return db['sequelize']['transaction'](function(_0xddd3b8){return db['CmHopper'][_0x9d67('0x25')]({'active':![]},{'where':{},'transaction':_0xddd3b8})['then'](function(_0x49cd62){logger[_0x9d67('0x12')]('ResetActiveCalls',_0x575145);logger[_0x9d67('0xd')](_0x9d67('0x51'),_0x575145,JSON[_0x9d67('0x1d')](_0x49cd62));_0x58c3df(_0x49cd62);})['catch'](function(_0x524eda){logger[_0x9d67('0xf')](_0x9d67('0x51'),_0x524eda[_0x9d67('0x11')],_0x575145);_0x30b1e2(_0x4d86c1[_0x9d67('0xf')](0x1f4,_0x524eda[_0x9d67('0x11')]));});});});};exports[_0x9d67('0x52')]=function(_0x13b64a){var _0x570b06=this;var _0x5eecdc=_0x13b64a[_0x9d67('0x23')][_0x9d67('0x17')][_0x9d67('0x53')];var _0xef4a11=_0x13b64a['body'][_0x9d67('0x17')][_0x9d67('0x54')];var _0x227077=_0x13b64a[_0x9d67('0x23')]['where'][_0x9d67('0x55')];return new Promise(function(_0x5b1b41,_0x31da09){return db['CmHopper'][_0x9d67('0x15')]({'where':{'voiceQueueId':{'$in':_0x5eecdc},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db[_0x9d67('0x2b')][_0x9d67('0x3f')](_0x9d67('0x56')+_0xef4a11+_0x9d67('0x57')),'$gt':db[_0x9d67('0x2b')][_0x9d67('0x3f')](_0x9d67('0x58'))}},'UserId':{'$in':_0x227077}},'include':[{'model':db[_0x9d67('0x29')],'as':_0x9d67('0x4b')},{'model':db['User'],'as':'Agent','attributes':['id',_0x9d67('0x59'),_0x9d67('0x31')]},{'model':db['CmList'],'as':_0x9d67('0x5a')}]})[_0x9d67('0xa')](function(_0x282fdc){if(_0x282fdc[_0x9d67('0x32')]>0x0){return db[_0x9d67('0x2b')]['transaction'](function(_0x5ee22c){return db[_0x9d67('0x1f')][_0x9d67('0x25')]({'recallmeNotifiedDate':db[_0x9d67('0x2b')][_0x9d67('0x3f')]('NOW()')},{'where':{'id':{'$in':_[_0x9d67('0x1a')](_0x282fdc,'id')}},'transaction':_0x5ee22c})[_0x9d67('0xa')](function(){_0x5b1b41(_0x282fdc);})[_0x9d67('0x14')](function(_0x252496){logger[_0x9d67('0xf')]('CmHopperHandlePreviewRecallNotifications',_0x252496[_0x9d67('0x11')],_0x13b64a);_0x31da09(_0x570b06[_0x9d67('0xf')](0x1f4,_0x252496['message']));});})[_0x9d67('0x14')](function(_0x4c5c3d){logger['error'](_0x9d67('0x52'),_0x4c5c3d[_0x9d67('0x11')],_0x13b64a);_0x31da09(_0x570b06[_0x9d67('0xf')](0x1f4,_0x4c5c3d[_0x9d67('0x11')]));});}else{_0x5b1b41(_0x282fdc);}});});};
\ No newline at end of file
+var _0x49f8=['rpc','client','request','then','debug','CmHopper,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','CmHopper,\x20%s,\x20%s','message','info','result','catch','GetCmHopper','CmHopper','findAll','options','raw','where','attributes','limit','include','map','model','ShowCmHopper','find','create','CreateCmHopper','UpdateCmHopper','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','body','active','destroy','DestroyCmHopper','GetContactDialer','describe','sequelize','order','LOCK','UPDATE','CmContact','Contact','keys','User','voicePause','length','UserId','push','includes','update','all','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','ContactId','MoveContactManagedDialer','transaction','CmHopperFinal','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','CountReScheduled','COUNT','literal','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','GetContactByPhone','findOne','phone','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','availableAgentsIds','NOW()\x20+\x20INTERVAL\x20','NOW()','Agent','name','CmList','List','lodash','bluebird','../../mysqldb'];(function(_0x110616,_0x258b4f){var _0x138f45=function(_0x4dd1c8){while(--_0x4dd1c8){_0x110616['push'](_0x110616['shift']());}};_0x138f45(++_0x258b4f);}(_0x49f8,0xff));var _0x849f=function(_0x908eb6,_0x59199b){_0x908eb6=_0x908eb6-0x0;var _0x511a09=_0x49f8[_0x908eb6];return _0x511a09;};'use strict';var _=require(_0x849f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x849f('0x1'));var db=require(_0x849f('0x2'))['db'];var logger=require('../../config/logger')(_0x849f('0x3'));var jayson=require('jayson/promise');var client=jayson[_0x849f('0x4')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4786cc,_0x590f53,_0x1e8405){return new BPromise(function(_0x30ebab,_0x21f577){return client[_0x849f('0x5')](_0x4786cc,_0x1e8405)[_0x849f('0x6')](function(_0xc6443e){logger['info']('CmHopper,\x20%s,\x20%s',_0x590f53,'request\x20sent');logger[_0x849f('0x7')](_0x849f('0x8'),_0x590f53,_0x849f('0x9'),JSON[_0x849f('0xa')](_0xc6443e));if(_0xc6443e[_0x849f('0xb')]){if(_0xc6443e[_0x849f('0xb')][_0x849f('0xc')]===0x1f4){logger['error'](_0x849f('0xd'),_0x590f53,_0xc6443e['error'][_0x849f('0xe')]);return _0x21f577(_0xc6443e[_0x849f('0xb')][_0x849f('0xe')]);}logger[_0x849f('0xb')]('CmHopper,\x20%s,\x20%s',_0x590f53,_0xc6443e[_0x849f('0xb')][_0x849f('0xe')]);return _0x30ebab(_0xc6443e[_0x849f('0xb')][_0x849f('0xe')]);}else{logger[_0x849f('0xf')]('CmHopper,\x20%s,\x20%s',_0x590f53,'request\x20sent');_0x30ebab(_0xc6443e[_0x849f('0x10')]['message']);}})[_0x849f('0x11')](function(_0x204330){logger[_0x849f('0xb')](_0x849f('0xd'),_0x590f53,_0x204330);_0x21f577(_0x204330);});});}exports[_0x849f('0x12')]=function(_0x19ba28){var _0x155ab8=this;return new Promise(function(_0x5ed88d,_0x41395a){return db[_0x849f('0x13')][_0x849f('0x14')]({'raw':_0x19ba28['options']?_0x19ba28[_0x849f('0x15')][_0x849f('0x16')]===undefined?!![]:![]:!![],'where':_0x19ba28['options']?_0x19ba28[_0x849f('0x15')][_0x849f('0x17')]||null:null,'attributes':_0x19ba28['options']?_0x19ba28['options'][_0x849f('0x18')]||null:null,'limit':_0x19ba28[_0x849f('0x15')]?_0x19ba28[_0x849f('0x15')][_0x849f('0x19')]||null:null,'include':_0x19ba28[_0x849f('0x15')]?_0x19ba28[_0x849f('0x15')][_0x849f('0x1a')]?_[_0x849f('0x1b')](_0x19ba28['options'][_0x849f('0x1a')],function(_0x1aab28){return{'model':db[_0x1aab28[_0x849f('0x1c')]],'as':_0x1aab28['as'],'attributes':_0x1aab28[_0x849f('0x18')],'include':_0x1aab28[_0x849f('0x1a')]?_['map'](_0x1aab28[_0x849f('0x1a')],function(_0x32be69){return{'model':db[_0x32be69[_0x849f('0x1c')]],'as':_0x32be69['as'],'attributes':_0x32be69[_0x849f('0x18')],'include':_0x32be69[_0x849f('0x1a')]?_[_0x849f('0x1b')](_0x32be69[_0x849f('0x1a')],function(_0x2e5371){return{'model':db[_0x2e5371[_0x849f('0x1c')]],'as':_0x2e5371['as'],'attributes':_0x2e5371[_0x849f('0x18')]};}):[]};}):[]};}):[]:[]})[_0x849f('0x6')](function(_0x347f4a){logger[_0x849f('0xf')]('GetCmHopper',_0x19ba28);logger[_0x849f('0x7')]('GetCmHopper',_0x19ba28,JSON[_0x849f('0xa')](_0x347f4a));_0x5ed88d(_0x347f4a);})[_0x849f('0x11')](function(_0x3afe16){logger[_0x849f('0xb')](_0x849f('0x12'),_0x3afe16[_0x849f('0xe')],_0x19ba28);_0x41395a(_0x155ab8['error'](0x1f4,_0x3afe16[_0x849f('0xe')]));});});};exports[_0x849f('0x1d')]=function(_0x12b756){var _0x5b4a25=this;return new Promise(function(_0x347c93,_0x5b8580){return db[_0x849f('0x13')][_0x849f('0x1e')]({'raw':_0x12b756[_0x849f('0x15')]?_0x12b756[_0x849f('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x12b756[_0x849f('0x15')]?_0x12b756['options'][_0x849f('0x17')]||null:null,'attributes':_0x12b756[_0x849f('0x15')]?_0x12b756['options']['attributes']||null:null,'include':_0x12b756['options']?_0x12b756[_0x849f('0x15')][_0x849f('0x1a')]?_[_0x849f('0x1b')](_0x12b756[_0x849f('0x15')][_0x849f('0x1a')],function(_0x5ecb39){return{'model':db[_0x5ecb39[_0x849f('0x1c')]],'as':_0x5ecb39['as'],'attributes':_0x5ecb39[_0x849f('0x18')],'include':_0x5ecb39[_0x849f('0x1a')]?_[_0x849f('0x1b')](_0x5ecb39[_0x849f('0x1a')],function(_0x37b567){return{'model':db[_0x37b567[_0x849f('0x1c')]],'as':_0x37b567['as'],'attributes':_0x37b567[_0x849f('0x18')],'include':_0x37b567[_0x849f('0x1a')]?_[_0x849f('0x1b')](_0x37b567['include'],function(_0x5cee85){return{'model':db[_0x5cee85[_0x849f('0x1c')]],'as':_0x5cee85['as'],'attributes':_0x5cee85[_0x849f('0x18')]};}):[]};}):[]};}):[]:[]})[_0x849f('0x6')](function(_0x5113a8){logger[_0x849f('0xf')](_0x849f('0x1d'),_0x12b756);logger[_0x849f('0x7')](_0x849f('0x1d'),_0x12b756,JSON['stringify'](_0x5113a8));_0x347c93(_0x5113a8);})[_0x849f('0x11')](function(_0x44df85){logger[_0x849f('0xb')](_0x849f('0x1d'),_0x44df85[_0x849f('0xe')],_0x12b756);_0x5b8580(_0x5b4a25[_0x849f('0xb')](0x1f4,_0x44df85[_0x849f('0xe')]));});});};exports['CreateCmHopper']=function(_0xdb2829){var _0x1889d7=this;return new Promise(function(_0x2b1a4a,_0x522621){return db['CmHopper'][_0x849f('0x1f')](_0xdb2829['body'],{'raw':_0xdb2829[_0x849f('0x15')]?_0xdb2829['options'][_0x849f('0x16')]===undefined?!![]:![]:!![]})[_0x849f('0x6')](function(_0x5eeb92){logger[_0x849f('0xf')](_0x849f('0x20'),_0xdb2829);logger[_0x849f('0x7')](_0x849f('0x20'),_0xdb2829,JSON['stringify'](_0x5eeb92));_0x2b1a4a(_0x5eeb92);})['catch'](function(_0x100189){logger[_0x849f('0xb')]('CreateCmHopper',_0x100189[_0x849f('0xe')],_0xdb2829);_0x522621(_0x1889d7[_0x849f('0xb')](0x1f4,_0x100189[_0x849f('0xe')]));});});};exports['UpdateCmHopper']=function(_0x29e808){var _0x2b3acf=this;return new Promise(function(_0x36dc00,_0x258696){return db[_0x849f('0x13')]['update'](_0x29e808['body'],{'raw':_0x29e808[_0x849f('0x15')]?_0x29e808[_0x849f('0x15')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x29e808[_0x849f('0x15')]?_0x29e808[_0x849f('0x15')]['where']||null:null,'attributes':_0x29e808[_0x849f('0x15')]?_0x29e808[_0x849f('0x15')][_0x849f('0x18')]||null:null,'limit':_0x29e808[_0x849f('0x15')]?_0x29e808[_0x849f('0x15')][_0x849f('0x19')]||null:null})[_0x849f('0x6')](function(_0x43910a){logger[_0x849f('0xf')](_0x849f('0x21'),_0x29e808);logger[_0x849f('0xf')](_0x849f('0x22'),JSON[_0x849f('0xa')](_0x29e808[_0x849f('0x15')]['where']),_0x29e808[_0x849f('0x23')][_0x849f('0x24')]);logger[_0x849f('0x7')](_0x849f('0x21'),_0x29e808,JSON[_0x849f('0xa')](_0x43910a));_0x36dc00(_0x43910a);})[_0x849f('0x11')](function(_0x5686da){logger[_0x849f('0xb')](_0x849f('0x21'),_0x5686da[_0x849f('0xe')],_0x29e808);_0x258696(_0x2b3acf[_0x849f('0xb')](0x1f4,_0x5686da[_0x849f('0xe')]));});});};exports['DestroyCmHopper']=function(_0x3913b7){var _0x5f5dec=this;return new Promise(function(_0x24a383,_0x443373){return db[_0x849f('0x13')][_0x849f('0x25')]({'where':_0x3913b7[_0x849f('0x15')]?_0x3913b7[_0x849f('0x15')]['where']||null:null})[_0x849f('0x6')](function(_0x1d7be3){logger[_0x849f('0xf')](_0x849f('0x26'),_0x3913b7);logger[_0x849f('0x7')](_0x849f('0x26'),_0x3913b7,JSON[_0x849f('0xa')](_0x1d7be3));_0x24a383(_0x1d7be3);})[_0x849f('0x11')](function(_0x20469e){logger[_0x849f('0xb')](_0x849f('0x26'),_0x20469e[_0x849f('0xe')],_0x3913b7);_0x443373(_0x5f5dec[_0x849f('0xb')](0x1f4,_0x20469e[_0x849f('0xe')]));});});};exports[_0x849f('0x27')]=function(_0x262702){var _0x396abd=this;return new Promise(function(_0x4f544b,_0x164377){return db['CmContact'][_0x849f('0x28')]()[_0x849f('0x6')](function(_0x35dafb){return db[_0x849f('0x29')]['transaction'](function(_0x4b16a0){return db['CmHopper']['findAll']({'where':_0x262702['options']?_0x262702['options'][_0x849f('0x17')]||null:null,'attributes':_0x262702[_0x849f('0x15')]?_0x262702[_0x849f('0x15')][_0x849f('0x18')]||null:null,'limit':_0x262702[_0x849f('0x15')]?_0x262702[_0x849f('0x15')][_0x849f('0x19')]||null:null,'order':_0x262702[_0x849f('0x15')]?_0x262702[_0x849f('0x15')][_0x849f('0x2a')]||null:null,'transaction':_0x4b16a0,'lock':_0x4b16a0[_0x849f('0x2b')][_0x849f('0x2c')],'include':[{'model':db[_0x849f('0x2d')],'as':_0x849f('0x2e'),'attributes':_[_0x849f('0x2f')](_0x35dafb)},{'model':db[_0x849f('0x30')],'as':'Agent','attributes':['id','name',_0x849f('0x31')]}]})[_0x849f('0x6')](function(_0x1869d0){var _0x9f7247=[];var _0x45c2a3=[];for(var _0x2fb259=0x0;_0x2fb259<_0x1869d0[_0x849f('0x32')];_0x2fb259+=0x1){var _0x2022c7=_0x1869d0[_0x2fb259][_0x849f('0x33')];if(_0x2022c7===null){_0x9f7247[_0x849f('0x34')](_0x1869d0[_0x2fb259]['update'](_0x262702['body'],{'transaction':_0x4b16a0}));}else if(!_0x45c2a3[_0x849f('0x35')](_0x2022c7)){_0x45c2a3[_0x849f('0x34')](_0x2022c7);_0x9f7247[_0x849f('0x34')](_0x1869d0[_0x2fb259][_0x849f('0x36')](_0x262702[_0x849f('0x23')],{'transaction':_0x4b16a0}));}}return BPromise[_0x849f('0x37')](_0x9f7247);});})[_0x849f('0x6')](function(_0x5c7a72){logger[_0x849f('0xf')]('GetContactDialer',_0x262702);if(_0x5c7a72[_0x849f('0x32')]>0x0){logger['info'](_0x849f('0x38'),_0x5c7a72[0x0][_0x849f('0x39')]['id'],_0x5c7a72[0x0][_0x849f('0x39')][_0x849f('0x3a')],_0x5c7a72[0x0][_0x849f('0x39')][_0x849f('0x24')]);}logger[_0x849f('0x7')]('GetContactDialer',_0x262702,JSON[_0x849f('0xa')](_0x5c7a72));_0x4f544b(_0x5c7a72);})[_0x849f('0x11')](function(_0x34c57a){logger[_0x849f('0xb')](_0x849f('0x27'),_0x34c57a[_0x849f('0xe')],_0x262702);_0x164377(_0x396abd[_0x849f('0xb')](0x1f4,_0x34c57a[_0x849f('0xe')]));});});});};exports[_0x849f('0x3b')]=function(_0x4d80f6){var _0x224535=this;return new Promise(function(_0x391ed0,_0x15bc9a){return db['sequelize'][_0x849f('0x3c')](function(_0x4ea8fc){return db[_0x849f('0x3d')][_0x849f('0x1f')](_0x4d80f6[_0x849f('0x23')],{'raw':_0x4d80f6['options']?_0x4d80f6['options'][_0x849f('0x16')]===undefined?!![]:![]:!![],'transaction':_0x4ea8fc})[_0x849f('0x6')](function(){logger[_0x849f('0xf')](_0x849f('0x3e'),JSON['stringify'](_0x4d80f6[_0x849f('0x15')][_0x849f('0x17')]),_0x4d80f6[_0x849f('0x15')][_0x849f('0x17')]['active']);return db[_0x849f('0x13')][_0x849f('0x25')]({'where':_0x4d80f6[_0x849f('0x15')]?_0x4d80f6[_0x849f('0x15')][_0x849f('0x17')]||null:null,'transaction':_0x4ea8fc});});})['then'](function(_0x56cf75){logger[_0x849f('0xf')](_0x849f('0x3b'),_0x4d80f6);logger[_0x849f('0x7')](_0x849f('0x3b'),_0x4d80f6,JSON[_0x849f('0xa')](_0x56cf75));_0x391ed0(_0x56cf75);})[_0x849f('0x11')](function(_0x1b2041){logger['error'](_0x849f('0x3b'),_0x1b2041[_0x849f('0xe')],_0x4d80f6);_0x15bc9a(_0x224535[_0x849f('0xb')](0x1f4,_0x1b2041[_0x849f('0xe')]));});});};exports[_0x849f('0x3f')]=function(_0x520b9d){var _0x57be86=this;return new Promise(function(_0x2e40de,_0xd2b076){return db[_0x849f('0x13')][_0x849f('0x14')]({'raw':_0x520b9d[_0x849f('0x15')]?_0x520b9d[_0x849f('0x15')][_0x849f('0x16')]===undefined?!![]:![]:!![],'where':_0x520b9d[_0x849f('0x15')]?_0x520b9d[_0x849f('0x15')][_0x849f('0x17')]||null:null,'attributes':[[db[_0x849f('0x29')]['fn'](_0x849f('0x40'),db['sequelize']['fn']('IF',db['sequelize'][_0x849f('0x41')]('`scheduledat`\x20>=\x20'+util[_0x849f('0x42')](_0x849f('0x43'),moment()[_0x849f('0x42')](_0x849f('0x44')))+_0x849f('0x45')))),_0x849f('0x46')]]})[_0x849f('0x6')](function(_0xfdbe6d){logger[_0x849f('0xf')](_0x849f('0x3f'),_0x520b9d);logger[_0x849f('0x7')](_0x849f('0x3f'),_0x520b9d,JSON['stringify'](_0xfdbe6d));_0x2e40de(_0xfdbe6d);})[_0x849f('0x11')](function(_0x585aeb){logger[_0x849f('0xb')](_0x849f('0x3f'),_0x585aeb[_0x849f('0xe')],_0x520b9d);_0xd2b076(_0x57be86[_0x849f('0xb')](0x1f4,_0x585aeb[_0x849f('0xe')]));});});};exports[_0x849f('0x47')]=function(_0x1ab5e1){var _0x2219ef=this;return new Promise(function(_0x3fbd05,_0x1a5df4){return db[_0x849f('0x2d')][_0x849f('0x28')]()[_0x849f('0x6')](function(_0x41f9a0){return db[_0x849f('0x29')][_0x849f('0x3c')](function(_0x2873c0){return db['CmHopper'][_0x849f('0x14')]({'where':_0x1ab5e1['options']?_0x1ab5e1[_0x849f('0x15')][_0x849f('0x17')]||null:null,'attributes':_0x1ab5e1['options']?_0x1ab5e1[_0x849f('0x15')]['attributes']||null:null,'limit':0x1,'order':_0x1ab5e1[_0x849f('0x15')]?_0x1ab5e1[_0x849f('0x15')][_0x849f('0x2a')]||null:null,'group':db[_0x849f('0x13')][_0x849f('0x33')],'transaction':_0x2873c0,'lock':_0x2873c0[_0x849f('0x2b')]['UPDATE'],'include':_0x1ab5e1[_0x849f('0x15')]?_0x1ab5e1[_0x849f('0x15')][_0x849f('0x1a')]?_[_0x849f('0x1b')](_0x1ab5e1[_0x849f('0x15')][_0x849f('0x1a')],function(_0x318b8f){return{'model':db[_0x318b8f[_0x849f('0x1c')]],'as':_0x318b8f['as'],'attributes':_0x318b8f[_0x849f('0x18')],'include':_0x318b8f[_0x849f('0x1a')]?_[_0x849f('0x1b')](_0x318b8f[_0x849f('0x1a')],function(_0x1e3c67){return{'model':db[_0x1e3c67[_0x849f('0x1c')]],'as':_0x1e3c67['as'],'attributes':_0x1e3c67[_0x849f('0x18')],'include':_0x1e3c67[_0x849f('0x1a')]?_[_0x849f('0x1b')](_0x1e3c67[_0x849f('0x1a')],function(_0x17a643){return{'model':db[_0x17a643[_0x849f('0x1c')]],'as':_0x17a643['as'],'attributes':_0x17a643[_0x849f('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x429ccc){var _0xdb41f3=[];for(var _0x2694ab=0x0;_0x2694ab<_0x429ccc[_0x849f('0x32')];_0x2694ab+=0x1){_0xdb41f3[_0x849f('0x34')](_0x429ccc[_0x2694ab]['update'](_0x1ab5e1[_0x849f('0x23')],{'transaction':_0x2873c0}));}return BPromise[_0x849f('0x37')](_0xdb41f3);});})[_0x849f('0x6')](function(_0x208394){logger[_0x849f('0xf')](_0x849f('0x47'),_0x1ab5e1);logger['debug'](_0x849f('0x47'),_0x1ab5e1,JSON[_0x849f('0xa')](_0x208394));_0x3fbd05(_0x208394);})[_0x849f('0x11')](function(_0x410147){logger[_0x849f('0xb')](_0x849f('0x47'),_0x410147['message'],_0x1ab5e1);_0x1a5df4(_0x2219ef['error'](0x1f4,_0x410147['message']));});});});};exports['GetCmHopperPreview']=function(_0x20e700){var _0x162ef1=this;return new Promise(function(_0x5294cf,_0x4c89ed){db[_0x849f('0x2d')][_0x849f('0x28')]()[_0x849f('0x6')](function(_0x4f67f8){return db[_0x849f('0x13')][_0x849f('0x14')]({'raw':_0x20e700[_0x849f('0x15')]?_0x20e700['options'][_0x849f('0x16')]===undefined?!![]:![]:!![],'where':_0x20e700[_0x849f('0x15')]?_0x20e700[_0x849f('0x15')][_0x849f('0x17')]||null:null,'attributes':_0x20e700['options']?_0x20e700['options']['attributes']||null:null,'limit':_0x20e700[_0x849f('0x15')]?_0x20e700[_0x849f('0x15')][_0x849f('0x19')]||null:null,'include':_0x20e700[_0x849f('0x15')]?_0x20e700['options'][_0x849f('0x1a')]?_['map'](_0x20e700[_0x849f('0x15')]['include'],function(_0x4a3a42){return{'model':db[_0x4a3a42[_0x849f('0x1c')]],'as':_0x4a3a42['as'],'attributes':_0x4a3a42['as']===_0x849f('0x2e')?_[_0x849f('0x2f')](_0x4f67f8):_0x4a3a42[_0x849f('0x18')],'include':_0x4a3a42[_0x849f('0x1a')]?_[_0x849f('0x1b')](_0x4a3a42['include'],function(_0x2cf4e5){return{'model':db[_0x2cf4e5['model']],'as':_0x2cf4e5['as'],'attributes':_0x2cf4e5[_0x849f('0x18')],'include':_0x2cf4e5[_0x849f('0x1a')]?_[_0x849f('0x1b')](_0x2cf4e5[_0x849f('0x1a')],function(_0x508eb4){return{'model':db[_0x508eb4[_0x849f('0x1c')]],'as':_0x508eb4['as'],'attributes':_0x508eb4[_0x849f('0x18')]};}):[]};}):[]};}):[]:[]})[_0x849f('0x6')](function(_0x319bda){logger[_0x849f('0xf')](_0x849f('0x12'),_0x20e700);logger[_0x849f('0x7')](_0x849f('0x12'),_0x20e700,JSON[_0x849f('0xa')](_0x319bda));_0x5294cf(_0x319bda);})['catch'](function(_0x2c3060){logger[_0x849f('0xb')]('GetCmHopper',_0x2c3060[_0x849f('0xe')],_0x20e700);_0x4c89ed(_0x162ef1[_0x849f('0xb')](0x1f4,_0x2c3060[_0x849f('0xe')]));});});});};exports[_0x849f('0x48')]=function(_0xb03b73){var _0x4af00=this;return new Promise(function(_0x580cfc,_0xd5ef58){return db[_0x849f('0x2d')][_0x849f('0x49')]({'raw':!![],'where':{'phone':_0xb03b73[_0x849f('0x15')][_0x849f('0x17')][_0x849f('0x4a')]},'attributes':['id',_0x849f('0x4b')],'order':[['id',_0x849f('0x4c')]]})[_0x849f('0x6')](function(_0x3e4b51){logger[_0x849f('0xf')](_0x849f('0x4d'),_0xb03b73);logger['debug'](_0x849f('0x4d'),_0xb03b73,JSON['stringify'](_0x3e4b51));_0x580cfc(_0x3e4b51);})[_0x849f('0x11')](function(_0x1a5c16){logger[_0x849f('0xb')]('getContactByPhone',_0x1a5c16[_0x849f('0xe')],_0xb03b73);_0xd5ef58(_0x4af00[_0x849f('0xb')](0x1f4,_0x1a5c16[_0x849f('0xe')]));});});};exports[_0x849f('0x4e')]=function(_0x53a177){var _0x41ed41=this;return new Promise(function(_0x63b3f,_0x35701f){return db[_0x849f('0x29')][_0x849f('0x3c')](function(_0x29c61c){return db[_0x849f('0x13')][_0x849f('0x36')]({'active':![]},{'where':{},'transaction':_0x29c61c})['then'](function(_0x2480a2){logger['info'](_0x849f('0x4e'),_0x53a177);logger[_0x849f('0x7')]('ResetActiveCalls',_0x53a177,JSON[_0x849f('0xa')](_0x2480a2));_0x63b3f(_0x2480a2);})[_0x849f('0x11')](function(_0x2070cc){logger['error'](_0x849f('0x4e'),_0x2070cc[_0x849f('0xe')],_0x53a177);_0x35701f(_0x41ed41[_0x849f('0xb')](0x1f4,_0x2070cc[_0x849f('0xe')]));});});});};exports['CmHopperHandlePreviewRecallNotifications']=function(_0x2d3a30){var _0x99de70=this;var _0x36250c=_0x2d3a30[_0x849f('0x23')][_0x849f('0x17')]['voiceQueueIds'];var _0x4f125a=_0x2d3a30[_0x849f('0x23')][_0x849f('0x17')]['interval'];var _0x5050a8=_0x2d3a30[_0x849f('0x23')][_0x849f('0x17')][_0x849f('0x4f')];return new Promise(function(_0x7f1c65,_0x562b5c){return db[_0x849f('0x13')][_0x849f('0x14')]({'where':{'voiceQueueId':{'$in':_0x36250c},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db[_0x849f('0x29')][_0x849f('0x41')](_0x849f('0x50')+_0x4f125a+'\x20MINUTE'),'$gt':db[_0x849f('0x29')][_0x849f('0x41')](_0x849f('0x51'))}},'UserId':{'$in':_0x5050a8}},'include':[{'model':db['CmContact'],'as':_0x849f('0x2e')},{'model':db[_0x849f('0x30')],'as':_0x849f('0x52'),'attributes':['id',_0x849f('0x53'),_0x849f('0x31')]},{'model':db[_0x849f('0x54')],'as':_0x849f('0x55')}]})[_0x849f('0x6')](function(_0x10a8d6){if(_0x10a8d6[_0x849f('0x32')]>0x0){return db[_0x849f('0x29')][_0x849f('0x3c')](function(_0x50c2b7){return db['CmHopper'][_0x849f('0x36')]({'recallmeNotifiedDate':db[_0x849f('0x29')][_0x849f('0x41')](_0x849f('0x51'))},{'where':{'id':{'$in':_[_0x849f('0x1b')](_0x10a8d6,'id')}},'transaction':_0x50c2b7})[_0x849f('0x6')](function(){_0x7f1c65(_0x10a8d6);})[_0x849f('0x11')](function(_0x4d459e){logger[_0x849f('0xb')]('CmHopperHandlePreviewRecallNotifications',_0x4d459e['message'],_0x2d3a30);_0x562b5c(_0x99de70[_0x849f('0xb')](0x1f4,_0x4d459e[_0x849f('0xe')]));});})[_0x849f('0x11')](function(_0x3da4af){logger['error']('CmHopperHandlePreviewRecallNotifications',_0x3da4af[_0x849f('0xe')],_0x2d3a30);_0x562b5c(_0x99de70['error'](0x1f4,_0x3da4af[_0x849f('0xe')]));});}else{_0x7f1c65(_0x10a8d6);}});});};
\ No newline at end of file
index 0dffcbb..62de483 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x961c=['/:id','show','getPreviewRecall','post','create','/preview','getPreview','/timezone','getTimezone','put','update','delete','destroy','exports','express','Router','../../components/auth/service','get','isAuthenticated','/describe','describe','getOpenContacts','/timezones','getTimezones'];(function(_0x313834,_0xe91111){var _0x4f6186=function(_0x5bc170){while(--_0x5bc170){_0x313834['push'](_0x313834['shift']());}};_0x4f6186(++_0xe91111);}(_0x961c,0x9e));var _0xc961=function(_0x283396,_0x3f712e){_0x283396=_0x283396-0x0;var _0x23f064=_0x961c[_0x283396];return _0x23f064;};'use strict';var express=require(_0xc961('0x0'));var router=express[_0xc961('0x1')]();var auth=require(_0xc961('0x2'));var controller=require('./cmHopper.controller');router[_0xc961('0x3')]('/',auth[_0xc961('0x4')](),controller['index']);router[_0xc961('0x3')](_0xc961('0x5'),auth['isAuthenticated'](),controller[_0xc961('0x6')]);router[_0xc961('0x3')]('/opencontacts',auth[_0xc961('0x4')](),controller[_0xc961('0x7')]);router[_0xc961('0x3')](_0xc961('0x8'),auth[_0xc961('0x4')](),controller[_0xc961('0x9')]);router['get'](_0xc961('0xa'),auth[_0xc961('0x4')](),controller[_0xc961('0xb')]);router[_0xc961('0x3')]('/:id/previewrecall',auth[_0xc961('0x4')](),controller[_0xc961('0xc')]);router[_0xc961('0xd')]('/',auth[_0xc961('0x4')](),controller[_0xc961('0xe')]);router['post'](_0xc961('0xf'),auth[_0xc961('0x4')](),controller[_0xc961('0x10')]);router['post'](_0xc961('0x11'),auth['isAuthenticated'](),controller[_0xc961('0x12')]);router[_0xc961('0x13')](_0xc961('0xa'),auth[_0xc961('0x4')](),controller[_0xc961('0x14')]);router[_0xc961('0x15')]('/:id',auth['isAuthenticated'](),controller[_0xc961('0x16')]);module[_0xc961('0x17')]=router;
\ No newline at end of file
+var _0x42da=['destroy','express','../../components/auth/service','./cmHopper.controller','get','isAuthenticated','index','/describe','describe','/opencontacts','/timezones','getTimezones','/:id','/:id/previewrecall','getPreviewRecall','post','/preview','getPreview','/timezone','getTimezone','put','update','delete'];(function(_0x3dd6a4,_0x1162b8){var _0xed7f0c=function(_0x3c571a){while(--_0x3c571a){_0x3dd6a4['push'](_0x3dd6a4['shift']());}};_0xed7f0c(++_0x1162b8);}(_0x42da,0xe7));var _0xa42d=function(_0x12eb9c,_0x2a7e33){_0x12eb9c=_0x12eb9c-0x0;var _0x366002=_0x42da[_0x12eb9c];return _0x366002;};'use strict';var express=require(_0xa42d('0x0'));var router=express['Router']();var auth=require(_0xa42d('0x1'));var controller=require(_0xa42d('0x2'));router[_0xa42d('0x3')]('/',auth[_0xa42d('0x4')](),controller[_0xa42d('0x5')]);router[_0xa42d('0x3')](_0xa42d('0x6'),auth[_0xa42d('0x4')](),controller[_0xa42d('0x7')]);router[_0xa42d('0x3')](_0xa42d('0x8'),auth['isAuthenticated'](),controller['getOpenContacts']);router[_0xa42d('0x3')](_0xa42d('0x9'),auth['isAuthenticated'](),controller[_0xa42d('0xa')]);router[_0xa42d('0x3')](_0xa42d('0xb'),auth[_0xa42d('0x4')](),controller['show']);router[_0xa42d('0x3')](_0xa42d('0xc'),auth[_0xa42d('0x4')](),controller[_0xa42d('0xd')]);router[_0xa42d('0xe')]('/',auth['isAuthenticated'](),controller['create']);router['post'](_0xa42d('0xf'),auth[_0xa42d('0x4')](),controller[_0xa42d('0x10')]);router['post'](_0xa42d('0x11'),auth['isAuthenticated'](),controller[_0xa42d('0x12')]);router[_0xa42d('0x13')](_0xa42d('0xb'),auth['isAuthenticated'](),controller[_0xa42d('0x14')]);router[_0xa42d('0x15')]('/:id',auth['isAuthenticated'](),controller[_0xa42d('0x16')]);module['exports']=router;
\ No newline at end of file
index 8f31d32..2071a1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x259e=['INTEGER','format','YYYY-MM-DD\x20HH:mm:ss','moment','sequelize','exports','STRING'];(function(_0x3e112d,_0x2bb132){var _0x531c31=function(_0x1954bc){while(--_0x1954bc){_0x3e112d['push'](_0x3e112d['shift']());}};_0x531c31(++_0x2bb132);}(_0x259e,0xc7));var _0xe259=function(_0xcf5b98,_0x10421e){_0xcf5b98=_0xcf5b98-0x0;var _0x18d507=_0x259e[_0xcf5b98];return _0x18d507;};'use strict';var moment=require(_0xe259('0x0'));var Sequelize=require(_0xe259('0x1'));module[_0xe259('0x2')]={'CmHopperId':{'type':Sequelize['INTEGER']},'phone':{'type':Sequelize[_0xe259('0x3')],'allowNull':![]},'OrderBy':{'type':Sequelize[_0xe259('0x4')],'defaultValue':0x0},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()[_0xe259('0x5')](_0xe259('0x6'))},'countbusyretry':{'type':Sequelize[_0xe259('0x4')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xe259('0x4')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xe259('0x4')],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xe259('0x4')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xe259('0x4')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa6c8=['STRING','INTEGER','format','moment'];(function(_0x2f36bc,_0x3c2cec){var _0x1af327=function(_0x718cf4){while(--_0x718cf4){_0x2f36bc['push'](_0x2f36bc['shift']());}};_0x1af327(++_0x3c2cec);}(_0xa6c8,0xb3));var _0x8a6c=function(_0x51a56d,_0x3f6a0f){_0x51a56d=_0x51a56d-0x0;var _0x8f6980=_0xa6c8[_0x51a56d];return _0x8f6980;};'use strict';var moment=require(_0x8a6c('0x0'));var Sequelize=require('sequelize');module['exports']={'CmHopperId':{'type':Sequelize['INTEGER']},'phone':{'type':Sequelize[_0x8a6c('0x1')],'allowNull':![]},'OrderBy':{'type':Sequelize[_0x8a6c('0x2')],'defaultValue':0x0},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()[_0x8a6c('0x3')]('YYYY-MM-DD\x20HH:mm:ss')},'countbusyretry':{'type':Sequelize[_0x8a6c('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x8a6c('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x8a6c('0x2')],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize[_0x8a6c('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x8a6c('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x8a6c('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x8a6c('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index ff84390..620515c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe016=['keys','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','findAll','rows','catch','show','params','rawAttributes','include','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','CmHopperAdditionalPhones','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','Content-Range','apply','reject','save','update','then','destroy','UserProfileResource','error','stack','name','index','map','CmHopperAdditionalPhone','fieldName','model'];(function(_0x29344c,_0x1059c1){var _0x1e35d0=function(_0x47a64a){while(--_0x47a64a){_0x29344c['push'](_0x29344c['shift']());}};_0x1e35d0(++_0x1059c1);}(_0xe016,0x74));var _0x6e01=function(_0x2261ce,_0x9ed8b6){_0x2261ce=_0x2261ce-0x0;var _0x524640=_0xe016[_0x2261ce];return _0x524640;};'use strict';var emlformat=require(_0x6e01('0x0'));var rimraf=require(_0x6e01('0x1'));var zipdir=require(_0x6e01('0x2'));var jsonpatch=require(_0x6e01('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x6e01('0x4'));var Mustache=require(_0x6e01('0x5'));var util=require(_0x6e01('0x6'));var path=require(_0x6e01('0x7'));var sox=require('sox');var csv=require(_0x6e01('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6e01('0x9'));var _=require(_0x6e01('0xa'));var squel=require(_0x6e01('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x6e01('0xc'));var toCsv=require(_0x6e01('0x8'));var querystring=require(_0x6e01('0xd'));var Papa=require('papaparse');var Redis=require(_0x6e01('0xe'));var authService=require(_0x6e01('0xf'));var qs=require(_0x6e01('0x10'));var as=require(_0x6e01('0x11'));var hardwareService=require(_0x6e01('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x6e01('0x13'));var licenseUtil=require(_0x6e01('0x14'));var db=require(_0x6e01('0x15'))['db'];function respondWithStatusCode(_0x4e6c3f,_0x5382f7){_0x5382f7=_0x5382f7||0xcc;return function(_0x1d176e){if(_0x1d176e){return _0x4e6c3f[_0x6e01('0x16')](_0x5382f7);}return _0x4e6c3f[_0x6e01('0x17')](_0x5382f7)[_0x6e01('0x18')]();};}function respondWithResult(_0x13378d,_0x2981ef){_0x2981ef=_0x2981ef||0xc8;return function(_0x4aa2ae){if(_0x4aa2ae){return _0x13378d[_0x6e01('0x17')](_0x2981ef)[_0x6e01('0x19')](_0x4aa2ae);}};}function respondWithFilteredResult(_0x32b118,_0x233629){return function(_0x48a586){if(_0x48a586){var _0x5e4167=typeof _0x233629['offset']==='undefined'&&typeof _0x233629[_0x6e01('0x1a')]===_0x6e01('0x1b');var _0x6ea3f1=_0x48a586[_0x6e01('0x1c')];var _0x26b761=_0x5e4167?0x0:_0x233629[_0x6e01('0x1d')];var _0x24f345=_0x5e4167?_0x48a586[_0x6e01('0x1c')]:_0x233629[_0x6e01('0x1d')]+_0x233629[_0x6e01('0x1a')];var _0x413385;if(_0x24f345>=_0x6ea3f1){_0x24f345=_0x6ea3f1;_0x413385=0xc8;}else{_0x413385=0xce;}_0x32b118[_0x6e01('0x17')](_0x413385);return _0x32b118['set'](_0x6e01('0x1e'),_0x26b761+'-'+_0x24f345+'/'+_0x6ea3f1)['json'](_0x48a586);}return null;};}function patchUpdates(_0x5b2508){return function(_0xd11e4f){try{jsonpatch[_0x6e01('0x1f')](_0xd11e4f,_0x5b2508,!![]);}catch(_0x39d84f){return BPromise[_0x6e01('0x20')](_0x39d84f);}return _0xd11e4f[_0x6e01('0x21')]();};}function saveUpdates(_0x577201,_0x164c58){return function(_0xad7629){if(_0xad7629){return _0xad7629[_0x6e01('0x22')](_0x577201)[_0x6e01('0x23')](function(_0x5de83b){return _0x5de83b;});}return null;};}function removeEntity(_0x28c918,_0x34ad46){return function(_0x5e4b4f){if(_0x5e4b4f){return _0x5e4b4f[_0x6e01('0x24')]()['then'](function(){var _0x500f5e=_0x5e4b4f['get']({'plain':!![]});var _0xf54e89='CmHopperAdditionalPhones';return db[_0x6e01('0x25')][_0x6e01('0x24')]({'where':{'type':_0xf54e89,'resourceId':_0x500f5e['id']}})['then'](function(){return _0x5e4b4f;});})['then'](function(){_0x28c918['status'](0xcc)[_0x6e01('0x18')]();});}};}function handleEntityNotFound(_0x21ed98,_0x2ff4de){return function(_0x2626af){if(!_0x2626af){_0x21ed98[_0x6e01('0x16')](0x194);}return _0x2626af;};}function handleError(_0x2aa639,_0x53e206){_0x53e206=_0x53e206||0x1f4;return function(_0x103119){logger[_0x6e01('0x26')](_0x103119[_0x6e01('0x27')]);if(_0x103119[_0x6e01('0x28')]){delete _0x103119['name'];}_0x2aa639[_0x6e01('0x17')](_0x53e206)['send'](_0x103119);};}exports[_0x6e01('0x29')]=function(_0x5153fe,_0x22fc53){var _0x295a4c={},_0x53c0a0={},_0x42159b={'count':0x0,'rows':[]};var _0x42cba8=_[_0x6e01('0x2a')](db[_0x6e01('0x2b')]['rawAttributes'],function(_0x5ecb74){return{'name':_0x5ecb74[_0x6e01('0x2c')],'type':_0x5ecb74['type']['key']};});_0x53c0a0[_0x6e01('0x2d')]=_['map'](_0x42cba8,_0x6e01('0x28'));_0x53c0a0['query']=_[_0x6e01('0x2e')](_0x5153fe[_0x6e01('0x2f')]);_0x53c0a0[_0x6e01('0x30')]=_[_0x6e01('0x31')](_0x53c0a0[_0x6e01('0x2d')],_0x53c0a0[_0x6e01('0x2f')]);_0x295a4c['attributes']=_[_0x6e01('0x31')](_0x53c0a0[_0x6e01('0x2d')],qs[_0x6e01('0x32')](_0x5153fe[_0x6e01('0x2f')]['fields']));_0x295a4c['attributes']=_0x295a4c[_0x6e01('0x33')][_0x6e01('0x34')]?_0x295a4c['attributes']:_0x53c0a0[_0x6e01('0x2d')];if(!_0x5153fe['query']['hasOwnProperty'](_0x6e01('0x35'))){_0x295a4c['limit']=qs['limit'](_0x5153fe[_0x6e01('0x2f')][_0x6e01('0x1a')]);_0x295a4c[_0x6e01('0x1d')]=qs[_0x6e01('0x1d')](_0x5153fe[_0x6e01('0x2f')][_0x6e01('0x1d')]);}_0x295a4c[_0x6e01('0x36')]=qs[_0x6e01('0x37')](_0x5153fe[_0x6e01('0x2f')][_0x6e01('0x37')]);_0x295a4c[_0x6e01('0x38')]=qs[_0x6e01('0x30')](_[_0x6e01('0x39')](_0x5153fe['query'],_0x53c0a0[_0x6e01('0x30')]),_0x42cba8);if(_0x5153fe['query']['filter']){_0x295a4c[_0x6e01('0x38')]=_['merge'](_0x295a4c[_0x6e01('0x38')],{'$or':_[_0x6e01('0x2a')](_0x42cba8,function(_0x3c2441){if(_0x3c2441['type']!==_0x6e01('0x3a')){var _0x5e3b3a={};_0x5e3b3a[_0x3c2441['name']]={'$like':'%'+_0x5153fe['query'][_0x6e01('0x3b')]+'%'};return _0x5e3b3a;}})});}_0x295a4c=_[_0x6e01('0x3c')]({},_0x295a4c,_0x5153fe[_0x6e01('0x3d')]);var _0xd12f9c={'where':_0x295a4c['where']};return db['CmHopperAdditionalPhone'][_0x6e01('0x1c')](_0xd12f9c)['then'](function(_0x4ddcf1){_0x42159b['count']=_0x4ddcf1;if(_0x5153fe[_0x6e01('0x2f')][_0x6e01('0x3e')]){_0x295a4c['include']=[{'all':!![]}];}return db[_0x6e01('0x2b')][_0x6e01('0x3f')](_0x295a4c);})[_0x6e01('0x23')](function(_0x264283){_0x42159b[_0x6e01('0x40')]=_0x264283;return _0x42159b;})[_0x6e01('0x23')](respondWithFilteredResult(_0x22fc53,_0x295a4c))[_0x6e01('0x41')](handleError(_0x22fc53,null));};exports[_0x6e01('0x42')]=function(_0x581188,_0x3eddd4){var _0x1218ec={'raw':!![],'where':{'id':_0x581188[_0x6e01('0x43')]['id']}},_0x2756d0={};_0x2756d0[_0x6e01('0x2d')]=_[_0x6e01('0x2e')](db[_0x6e01('0x2b')][_0x6e01('0x44')]);_0x2756d0['query']=_[_0x6e01('0x2e')](_0x581188[_0x6e01('0x2f')]);_0x2756d0[_0x6e01('0x30')]=_['intersection'](_0x2756d0[_0x6e01('0x2d')],_0x2756d0[_0x6e01('0x2f')]);_0x1218ec[_0x6e01('0x33')]=_[_0x6e01('0x31')](_0x2756d0[_0x6e01('0x2d')],qs[_0x6e01('0x32')](_0x581188[_0x6e01('0x2f')]['fields']));_0x1218ec[_0x6e01('0x33')]=_0x1218ec[_0x6e01('0x33')][_0x6e01('0x34')]?_0x1218ec[_0x6e01('0x33')]:_0x2756d0[_0x6e01('0x2d')];if(_0x581188[_0x6e01('0x2f')][_0x6e01('0x3e')]){_0x1218ec[_0x6e01('0x45')]=[{'all':!![]}];}_0x1218ec=_['merge']({},_0x1218ec,_0x581188[_0x6e01('0x3d')]);return db[_0x6e01('0x2b')]['find'](_0x1218ec)[_0x6e01('0x23')](handleEntityNotFound(_0x3eddd4,null))[_0x6e01('0x23')](respondWithResult(_0x3eddd4,null))['catch'](handleError(_0x3eddd4,null));};exports[_0x6e01('0x46')]=function(_0x2e78ec,_0x2b296b){return db[_0x6e01('0x2b')][_0x6e01('0x46')](_0x2e78ec['body'],{})[_0x6e01('0x23')](function(_0x425069){var _0x8eb1ae=_0x2e78ec[_0x6e01('0x47')][_0x6e01('0x48')]({'plain':!![]});if(!_0x8eb1ae)throw new Error(_0x6e01('0x49'));if(_0x8eb1ae[_0x6e01('0x4a')]==='user'){var _0x32b6b2=_0x425069['get']({'plain':!![]});var _0x23f869=_0x6e01('0x4b');return db[_0x6e01('0x4c')][_0x6e01('0x4d')]({'where':{'name':_0x23f869,'userProfileId':_0x8eb1ae[_0x6e01('0x4e')]},'raw':!![]})[_0x6e01('0x23')](function(_0x2ddf29){if(_0x2ddf29&&_0x2ddf29['autoAssociation']===0x0){return db[_0x6e01('0x25')]['create']({'name':_0x32b6b2[_0x6e01('0x28')],'resourceId':_0x32b6b2['id'],'type':_0x2ddf29[_0x6e01('0x28')],'sectionId':_0x2ddf29['id']},{})[_0x6e01('0x23')](function(){return _0x425069;});}else{return _0x425069;}})[_0x6e01('0x41')](function(_0x253a26){logger['error'](_0x6e01('0x4f'),_0x253a26);throw _0x253a26;});}return _0x425069;})[_0x6e01('0x23')](respondWithResult(_0x2b296b,0xc9))['catch'](handleError(_0x2b296b,null));};exports[_0x6e01('0x22')]=function(_0x3a5a43,_0x3ab924){if(_0x3a5a43[_0x6e01('0x50')]['id']){delete _0x3a5a43[_0x6e01('0x50')]['id'];}return db['CmHopperAdditionalPhone']['find']({'where':{'id':_0x3a5a43['params']['id']}})[_0x6e01('0x23')](handleEntityNotFound(_0x3ab924,null))['then'](saveUpdates(_0x3a5a43[_0x6e01('0x50')],null))['then'](respondWithResult(_0x3ab924,null))['catch'](handleError(_0x3ab924,null));};exports[_0x6e01('0x24')]=function(_0x117b58,_0x461dbb){return db[_0x6e01('0x2b')]['find']({'where':{'id':_0x117b58[_0x6e01('0x43')]['id']}})[_0x6e01('0x23')](handleEntityNotFound(_0x461dbb,null))['then'](removeEntity(_0x461dbb,null))[_0x6e01('0x41')](handleError(_0x461dbb,null));};
\ No newline at end of file
+var _0x75cd=['type','query','keys','filters','intersection','model','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','findAll','catch','show','params','rawAttributes','length','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','zip-dir','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','json','limit','undefined','count','offset','status','set','Content-Range','apply','save','update','then','destroy','get','CmHopperAdditionalPhones','UserProfileResource','end','sendStatus','error','stack','name','send','map','CmHopperAdditionalPhone','fieldName'];(function(_0x1f1052,_0x74b623){var _0x5e318a=function(_0x548d51){while(--_0x548d51){_0x1f1052['push'](_0x1f1052['shift']());}};_0x5e318a(++_0x74b623);}(_0x75cd,0x1bb));var _0xd75c=function(_0x333515,_0xc21f4a){_0x333515=_0x333515-0x0;var _0x3b5cba=_0x75cd[_0x333515];return _0x3b5cba;};'use strict';var emlformat=require(_0xd75c('0x0'));var rimraf=require(_0xd75c('0x1'));var zipdir=require(_0xd75c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xd75c('0x3'));var BPromise=require(_0xd75c('0x4'));var Mustache=require(_0xd75c('0x5'));var util=require('util');var path=require(_0xd75c('0x6'));var sox=require(_0xd75c('0x7'));var csv=require(_0xd75c('0x8'));var ejs=require(_0xd75c('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd75c('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xd75c('0xb'));var deskjs=require(_0xd75c('0xc'));var toCsv=require(_0xd75c('0x8'));var querystring=require(_0xd75c('0xd'));var Papa=require(_0xd75c('0xe'));var Redis=require('ioredis');var authService=require(_0xd75c('0xf'));var qs=require(_0xd75c('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd75c('0x11'));var logger=require(_0xd75c('0x12'))(_0xd75c('0x13'));var utils=require(_0xd75c('0x14'));var config=require(_0xd75c('0x15'));var licenseUtil=require(_0xd75c('0x16'));var db=require(_0xd75c('0x17'))['db'];function respondWithStatusCode(_0x6b371,_0x59756f){_0x59756f=_0x59756f||0xcc;return function(_0x4e4397){if(_0x4e4397){return _0x6b371['sendStatus'](_0x59756f);}return _0x6b371['status'](_0x59756f)['end']();};}function respondWithResult(_0x546982,_0x18f568){_0x18f568=_0x18f568||0xc8;return function(_0x5d0780){if(_0x5d0780){return _0x546982['status'](_0x18f568)[_0xd75c('0x18')](_0x5d0780);}};}function respondWithFilteredResult(_0x284e11,_0x3136fd){return function(_0x411517){if(_0x411517){var _0x2455f6=typeof _0x3136fd['offset']==='undefined'&&typeof _0x3136fd[_0xd75c('0x19')]===_0xd75c('0x1a');var _0x3b7242=_0x411517[_0xd75c('0x1b')];var _0x393733=_0x2455f6?0x0:_0x3136fd[_0xd75c('0x1c')];var _0x1bcaf7=_0x2455f6?_0x411517['count']:_0x3136fd[_0xd75c('0x1c')]+_0x3136fd[_0xd75c('0x19')];var _0x16ef94;if(_0x1bcaf7>=_0x3b7242){_0x1bcaf7=_0x3b7242;_0x16ef94=0xc8;}else{_0x16ef94=0xce;}_0x284e11[_0xd75c('0x1d')](_0x16ef94);return _0x284e11[_0xd75c('0x1e')](_0xd75c('0x1f'),_0x393733+'-'+_0x1bcaf7+'/'+_0x3b7242)[_0xd75c('0x18')](_0x411517);}return null;};}function patchUpdates(_0x1612bd){return function(_0x84036){try{jsonpatch[_0xd75c('0x20')](_0x84036,_0x1612bd,!![]);}catch(_0x9b2f90){return BPromise['reject'](_0x9b2f90);}return _0x84036[_0xd75c('0x21')]();};}function saveUpdates(_0x47751c,_0x1dd0e6){return function(_0x21abdc){if(_0x21abdc){return _0x21abdc[_0xd75c('0x22')](_0x47751c)[_0xd75c('0x23')](function(_0xdfd352){return _0xdfd352;});}return null;};}function removeEntity(_0x4f11a2,_0x349cbf){return function(_0x1ab579){if(_0x1ab579){return _0x1ab579[_0xd75c('0x24')]()['then'](function(){var _0x2b5c4f=_0x1ab579[_0xd75c('0x25')]({'plain':!![]});var _0x535d6b=_0xd75c('0x26');return db[_0xd75c('0x27')]['destroy']({'where':{'type':_0x535d6b,'resourceId':_0x2b5c4f['id']}})['then'](function(){return _0x1ab579;});})['then'](function(){_0x4f11a2[_0xd75c('0x1d')](0xcc)[_0xd75c('0x28')]();});}};}function handleEntityNotFound(_0x246c40,_0x52832a){return function(_0x3e16e9){if(!_0x3e16e9){_0x246c40[_0xd75c('0x29')](0x194);}return _0x3e16e9;};}function handleError(_0x2409be,_0x1a86d9){_0x1a86d9=_0x1a86d9||0x1f4;return function(_0x39b8c9){logger[_0xd75c('0x2a')](_0x39b8c9[_0xd75c('0x2b')]);if(_0x39b8c9[_0xd75c('0x2c')]){delete _0x39b8c9[_0xd75c('0x2c')];}_0x2409be[_0xd75c('0x1d')](_0x1a86d9)[_0xd75c('0x2d')](_0x39b8c9);};}exports['index']=function(_0x384d94,_0x319808){var _0x5a9186={},_0x42d34d={},_0x4a5ca4={'count':0x0,'rows':[]};var _0x293920=_[_0xd75c('0x2e')](db[_0xd75c('0x2f')]['rawAttributes'],function(_0x254592){return{'name':_0x254592[_0xd75c('0x30')],'type':_0x254592[_0xd75c('0x31')]['key']};});_0x42d34d['model']=_['map'](_0x293920,_0xd75c('0x2c'));_0x42d34d[_0xd75c('0x32')]=_[_0xd75c('0x33')](_0x384d94[_0xd75c('0x32')]);_0x42d34d[_0xd75c('0x34')]=_[_0xd75c('0x35')](_0x42d34d[_0xd75c('0x36')],_0x42d34d[_0xd75c('0x32')]);_0x5a9186[_0xd75c('0x37')]=_[_0xd75c('0x35')](_0x42d34d[_0xd75c('0x36')],qs['fields'](_0x384d94[_0xd75c('0x32')][_0xd75c('0x38')]));_0x5a9186[_0xd75c('0x37')]=_0x5a9186[_0xd75c('0x37')]['length']?_0x5a9186[_0xd75c('0x37')]:_0x42d34d['model'];if(!_0x384d94['query']['hasOwnProperty'](_0xd75c('0x39'))){_0x5a9186[_0xd75c('0x19')]=qs[_0xd75c('0x19')](_0x384d94['query'][_0xd75c('0x19')]);_0x5a9186[_0xd75c('0x1c')]=qs[_0xd75c('0x1c')](_0x384d94[_0xd75c('0x32')][_0xd75c('0x1c')]);}_0x5a9186[_0xd75c('0x3a')]=qs[_0xd75c('0x3b')](_0x384d94[_0xd75c('0x32')][_0xd75c('0x3b')]);_0x5a9186[_0xd75c('0x3c')]=qs['filters'](_[_0xd75c('0x3d')](_0x384d94['query'],_0x42d34d[_0xd75c('0x34')]),_0x293920);if(_0x384d94[_0xd75c('0x32')][_0xd75c('0x3e')]){_0x5a9186[_0xd75c('0x3c')]=_[_0xd75c('0x3f')](_0x5a9186[_0xd75c('0x3c')],{'$or':_[_0xd75c('0x2e')](_0x293920,function(_0x47fda7){if(_0x47fda7['type']!==_0xd75c('0x40')){var _0x1c3116={};_0x1c3116[_0x47fda7['name']]={'$like':'%'+_0x384d94[_0xd75c('0x32')]['filter']+'%'};return _0x1c3116;}})});}_0x5a9186=_[_0xd75c('0x3f')]({},_0x5a9186,_0x384d94['options']);var _0x4a4a94={'where':_0x5a9186[_0xd75c('0x3c')]};return db[_0xd75c('0x2f')]['count'](_0x4a4a94)[_0xd75c('0x23')](function(_0x1c22db){_0x4a5ca4['count']=_0x1c22db;if(_0x384d94[_0xd75c('0x32')][_0xd75c('0x41')]){_0x5a9186['include']=[{'all':!![]}];}return db[_0xd75c('0x2f')][_0xd75c('0x42')](_0x5a9186);})['then'](function(_0x28e792){_0x4a5ca4['rows']=_0x28e792;return _0x4a5ca4;})[_0xd75c('0x23')](respondWithFilteredResult(_0x319808,_0x5a9186))[_0xd75c('0x43')](handleError(_0x319808,null));};exports[_0xd75c('0x44')]=function(_0xb3bdc7,_0x474b3c){var _0x101c94={'raw':!![],'where':{'id':_0xb3bdc7[_0xd75c('0x45')]['id']}},_0x196323={};_0x196323[_0xd75c('0x36')]=_['keys'](db['CmHopperAdditionalPhone'][_0xd75c('0x46')]);_0x196323[_0xd75c('0x32')]=_[_0xd75c('0x33')](_0xb3bdc7[_0xd75c('0x32')]);_0x196323[_0xd75c('0x34')]=_[_0xd75c('0x35')](_0x196323[_0xd75c('0x36')],_0x196323[_0xd75c('0x32')]);_0x101c94[_0xd75c('0x37')]=_[_0xd75c('0x35')](_0x196323[_0xd75c('0x36')],qs[_0xd75c('0x38')](_0xb3bdc7[_0xd75c('0x32')]['fields']));_0x101c94['attributes']=_0x101c94[_0xd75c('0x37')][_0xd75c('0x47')]?_0x101c94[_0xd75c('0x37')]:_0x196323[_0xd75c('0x36')];if(_0xb3bdc7['query'][_0xd75c('0x41')]){_0x101c94['include']=[{'all':!![]}];}_0x101c94=_[_0xd75c('0x3f')]({},_0x101c94,_0xb3bdc7['options']);return db[_0xd75c('0x2f')][_0xd75c('0x48')](_0x101c94)[_0xd75c('0x23')](handleEntityNotFound(_0x474b3c,null))[_0xd75c('0x23')](respondWithResult(_0x474b3c,null))[_0xd75c('0x43')](handleError(_0x474b3c,null));};exports[_0xd75c('0x49')]=function(_0x4f9b22,_0x484206){return db['CmHopperAdditionalPhone'][_0xd75c('0x49')](_0x4f9b22[_0xd75c('0x4a')],{})['then'](function(_0x266531){var _0x5656eb=_0x4f9b22[_0xd75c('0x4b')]['get']({'plain':!![]});if(!_0x5656eb)throw new Error(_0xd75c('0x4c'));if(_0x5656eb[_0xd75c('0x4d')]==='user'){var _0x4fcfbd=_0x266531[_0xd75c('0x25')]({'plain':!![]});var _0x32c226=_0xd75c('0x26');return db[_0xd75c('0x4e')]['find']({'where':{'name':_0x32c226,'userProfileId':_0x5656eb[_0xd75c('0x4f')]},'raw':!![]})[_0xd75c('0x23')](function(_0x13a70c){if(_0x13a70c&&_0x13a70c[_0xd75c('0x50')]===0x0){return db['UserProfileResource']['create']({'name':_0x4fcfbd[_0xd75c('0x2c')],'resourceId':_0x4fcfbd['id'],'type':_0x13a70c['name'],'sectionId':_0x13a70c['id']},{})[_0xd75c('0x23')](function(){return _0x266531;});}else{return _0x266531;}})[_0xd75c('0x43')](function(_0x38aa65){logger[_0xd75c('0x2a')](_0xd75c('0x51'),_0x38aa65);throw _0x38aa65;});}return _0x266531;})['then'](respondWithResult(_0x484206,0xc9))['catch'](handleError(_0x484206,null));};exports[_0xd75c('0x22')]=function(_0x21bdbe,_0x4d1383){if(_0x21bdbe[_0xd75c('0x4a')]['id']){delete _0x21bdbe[_0xd75c('0x4a')]['id'];}return db[_0xd75c('0x2f')]['find']({'where':{'id':_0x21bdbe[_0xd75c('0x45')]['id']}})[_0xd75c('0x23')](handleEntityNotFound(_0x4d1383,null))[_0xd75c('0x23')](saveUpdates(_0x21bdbe[_0xd75c('0x4a')],null))['then'](respondWithResult(_0x4d1383,null))['catch'](handleError(_0x4d1383,null));};exports[_0xd75c('0x24')]=function(_0x264365,_0x3e7c8c){return db['CmHopperAdditionalPhone'][_0xd75c('0x48')]({'where':{'id':_0x264365['params']['id']}})[_0xd75c('0x23')](handleEntityNotFound(_0x3e7c8c,null))[_0xd75c('0x23')](removeEntity(_0x3e7c8c,null))[_0xd75c('0x43')](handleError(_0x3e7c8c,null));};
\ No newline at end of file
index b02b0a8..a2e687a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7639=['request-promise','path','rimraf','../../config/environment','./cmHopperAdditionalPhone.attributes','exports','define','CmHopperAdditionalPhone','cm_hopper_additional_phones','lodash','../../config/logger','api','moment','bluebird'];(function(_0x375492,_0x4ed149){var _0x18ba5b=function(_0x154a12){while(--_0x154a12){_0x375492['push'](_0x375492['shift']());}};_0x18ba5b(++_0x4ed149);}(_0x7639,0x14b));var _0x9763=function(_0x4defc6,_0x25ff01){_0x4defc6=_0x4defc6-0x0;var _0x22a844=_0x7639[_0x4defc6];return _0x22a844;};'use strict';var _=require(_0x9763('0x0'));var util=require('util');var logger=require(_0x9763('0x1'))(_0x9763('0x2'));var moment=require(_0x9763('0x3'));var BPromise=require(_0x9763('0x4'));var rp=require(_0x9763('0x5'));var fs=require('fs');var path=require(_0x9763('0x6'));var rimraf=require(_0x9763('0x7'));var config=require(_0x9763('0x8'));var attributes=require(_0x9763('0x9'));module[_0x9763('0xa')]=function(_0x1cbf8b,_0x15dd4b){return _0x1cbf8b[_0x9763('0xb')](_0x9763('0xc'),attributes,{'tableName':_0x9763('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf179=['define','CmHopperAdditionalPhone','cm_hopper_additional_phones','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','./cmHopperAdditionalPhone.attributes','exports'];(function(_0x54e3fd,_0x3eeec5){var _0x3cd6a7=function(_0x42ccc7){while(--_0x42ccc7){_0x54e3fd['push'](_0x54e3fd['shift']());}};_0x3cd6a7(++_0x3eeec5);}(_0xf179,0x87));var _0x9f17=function(_0x36c5c7,_0x1dfe0a){_0x36c5c7=_0x36c5c7-0x0;var _0x125692=_0xf179[_0x36c5c7];return _0x125692;};'use strict';var _=require(_0x9f17('0x0'));var util=require(_0x9f17('0x1'));var logger=require(_0x9f17('0x2'))('api');var moment=require(_0x9f17('0x3'));var BPromise=require(_0x9f17('0x4'));var rp=require(_0x9f17('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9f17('0x6'));var config=require('../../config/environment');var attributes=require(_0x9f17('0x7'));module[_0x9f17('0x8')]=function(_0x3f0c03,_0x294f76){return _0x3f0c03[_0x9f17('0x9')](_0x9f17('0xa'),attributes,{'tableName':_0x9f17('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d41e284..3911832 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33c2=['countdropretry','countmachineretry','countagentrejectretry','entity','dialGlobalMaxRetry','CmHopperAdditionalPhone','countabandonedretry','SwapAdditionalPhones','ContactId','waitTime','duration','isNil','scheduledat','minutes','phone','add','createdAt','updatedAt','sequelize','update','activateAdditionalPhone','IncrementPreviewCounters','field','util','bluebird','randomstring','ioredis','../../config/environment','jayson/promise','client','http','request','CmHopperAdditionalPhone,\x20%s,\x20%s','request\x20sent','debug','CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','VerifyAdditionalPhones','CmHopper','findOne','body','ListId','VoiceQueueId','CampaignId','then','OrderBy','ASC','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry'];(function(_0x5d0191,_0x81eacc){var _0x4a835=function(_0x2e88be){while(--_0x2e88be){_0x5d0191['push'](_0x5d0191['shift']());}};_0x4a835(++_0x81eacc);}(_0x33c2,0xc2));var _0x233c=function(_0x118e49,_0x576c16){_0x118e49=_0x118e49-0x0;var _0x528dfd=_0x33c2[_0x118e49];return _0x528dfd;};'use strict';var _=require('lodash');var util=require(_0x233c('0x0'));var moment=require('moment');var BPromise=require(_0x233c('0x1'));var rs=require(_0x233c('0x2'));var fs=require('fs');var Redis=require(_0x233c('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x233c('0x4'));var jayson=require(_0x233c('0x5'));var client=jayson[_0x233c('0x6')][_0x233c('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5c3aa7,_0x29d4cd,_0x3dfaed){return new BPromise(function(_0x280b3d,_0x45cd33){return client[_0x233c('0x8')](_0x5c3aa7,_0x3dfaed)['then'](function(_0x1f7fc9){logger['info'](_0x233c('0x9'),_0x29d4cd,_0x233c('0xa'));logger[_0x233c('0xb')](_0x233c('0xc'),_0x29d4cd,_0x233c('0xa'),JSON[_0x233c('0xd')](_0x1f7fc9));if(_0x1f7fc9[_0x233c('0xe')]){if(_0x1f7fc9[_0x233c('0xe')][_0x233c('0xf')]===0x1f4){logger[_0x233c('0xe')](_0x233c('0x9'),_0x29d4cd,_0x1f7fc9[_0x233c('0xe')][_0x233c('0x10')]);return _0x45cd33(_0x1f7fc9[_0x233c('0xe')][_0x233c('0x10')]);}logger[_0x233c('0xe')](_0x233c('0x9'),_0x29d4cd,_0x1f7fc9['error'][_0x233c('0x10')]);return _0x280b3d(_0x1f7fc9[_0x233c('0xe')][_0x233c('0x10')]);}else{logger[_0x233c('0x11')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x29d4cd,_0x233c('0xa'));_0x280b3d(_0x1f7fc9[_0x233c('0x12')][_0x233c('0x10')]);}})[_0x233c('0x13')](function(_0x4f39f9){logger[_0x233c('0xe')](_0x233c('0x9'),_0x29d4cd,_0x4f39f9);_0x45cd33(_0x4f39f9);});});}exports[_0x233c('0x14')]=function(_0x3f1b17){var _0x36ccd4=this;return new Promise(function(_0x4cbd32,_0x31bf92){return db[_0x233c('0x15')][_0x233c('0x16')]({'raw':!![],'where':{'ContactId':_0x3f1b17[_0x233c('0x17')]['ContactId'],'ListId':_0x3f1b17['body'][_0x233c('0x18')],'VoiceQueueId':_0x3f1b17[_0x233c('0x17')][_0x233c('0x19')]===undefined?null:_0x3f1b17['body']['VoiceQueueId'],'CampaignId':_0x3f1b17[_0x233c('0x17')][_0x233c('0x1a')]===undefined?null:_0x3f1b17[_0x233c('0x17')][_0x233c('0x1a')]}})[_0x233c('0x1b')](function(_0x38dda1){if(_0x38dda1!=null){return db['CmHopperAdditionalPhone'][_0x233c('0x16')]({'raw':!![],'where':{'CmHopperId':_0x38dda1['id'],'OrderBy':{'$gt':_0x38dda1[_0x233c('0x1c')]}},'order':[['OrderBy',_0x233c('0x1d')]]})[_0x233c('0x1b')](function(_0x319b63){var _0x849bcb=0x0;if(_0x319b63){if(_0x319b63[_0x233c('0x1e')]+_0x319b63[_0x233c('0x1f')]+_0x319b63[_0x233c('0x20')]+_0x319b63[_0x233c('0x21')]+_0x319b63[_0x233c('0x22')]+_0x319b63['countabandonedretry']+_0x319b63[_0x233c('0x23')]+_0x319b63[_0x233c('0x24')]<_0x3f1b17[_0x233c('0x25')][_0x233c('0x26')])_0x849bcb=0x1;_0x4cbd32({'additional':_0x849bcb});}else{return db[_0x233c('0x27')][_0x233c('0x16')]({'raw':!![],'where':{'CmHopperId':_0x38dda1['id']},'order':[[_0x233c('0x1c'),_0x233c('0x1d')]]})['then'](function(_0x500a06){var _0x58c74c=0x0;if(_0x500a06){if(_0x500a06[_0x233c('0x1e')]+_0x500a06['countcongestionretry']+_0x500a06['countnoanswerretry']+_0x500a06[_0x233c('0x21')]+_0x500a06['countdropretry']+_0x500a06[_0x233c('0x28')]+_0x500a06[_0x233c('0x23')]+_0x500a06[_0x233c('0x24')]<_0x3f1b17[_0x233c('0x25')][_0x233c('0x26')])_0x58c74c=0x1;_0x4cbd32({'additional':_0x58c74c});}else{_0x4cbd32({'additional':0x0});}})[_0x233c('0x13')](function(_0x3de2a4){logger['error']('VerifyAdditionalPhones',_0x3de2a4['message']);_0x31bf92(_0x36ccd4[_0x233c('0xe')](0x1f4,_0x3de2a4[_0x233c('0x10')]));});}})[_0x233c('0x13')](function(_0x2fb526){logger['error'](_0x233c('0x14'),_0x2fb526['message']);_0x31bf92(_0x36ccd4[_0x233c('0xe')](0x1f4,_0x2fb526[_0x233c('0x10')]));});}else _0x4cbd32({'additional':0x0});});});};exports[_0x233c('0x29')]=function(_0x362e81){var _0x1b7dc4=this;return new Promise(function(_0x2d0495,_0x39a82e){return db[_0x233c('0x15')][_0x233c('0x16')]({'raw':!![],'where':{'ContactId':_0x362e81['body'][_0x233c('0x2a')],'ListId':_0x362e81[_0x233c('0x17')][_0x233c('0x18')],'VoiceQueueId':_0x362e81[_0x233c('0x17')][_0x233c('0x19')]===undefined?null:_0x362e81[_0x233c('0x17')][_0x233c('0x19')],'CampaignId':_0x362e81[_0x233c('0x17')][_0x233c('0x1a')]===undefined?null:_0x362e81[_0x233c('0x17')][_0x233c('0x1a')]}})[_0x233c('0x1b')](function(_0x21129e){if(_0x21129e!=null){return db['CmHopperAdditionalPhone'][_0x233c('0x16')]({'raw':!![],'where':{'CmHopperId':_0x21129e['id'],'OrderBy':{'$gte':_0x21129e[_0x233c('0x1c')]}},'order':[['OrderBy',_0x233c('0x1d')]]})[_0x233c('0x1b')](function(_0xa65f4c){if(_0xa65f4c)return activateAdditionalPhone(_0x21129e,_0x362e81['body'],_0xa65f4c,_0x362e81['duration'],_0x362e81[_0x233c('0x2b')])[_0x233c('0x1b')](function(_0x54ad6c){_0x2d0495(_0x54ad6c);});else{return db[_0x233c('0x27')][_0x233c('0x16')]({'raw':!![],'where':{'CmHopperId':_0x21129e['id']},'order':[['OrderBy',_0x233c('0x1d')]]})[_0x233c('0x1b')](function(_0x220802){if(_0x220802)return activateAdditionalPhone(_0x21129e,_0x362e81[_0x233c('0x17')],_0x220802,_0x362e81[_0x233c('0x2c')],_0x362e81[_0x233c('0x2b')])[_0x233c('0x1b')](function(_0x587459){_0x2d0495(_0x587459);});else{_0x2d0495({'id':_0x21129e['id'],'phone':''});}})['catch'](function(_0x382650){logger['error'](_0x233c('0x14'),_0x382650['message']);_0x39a82e(_0x1b7dc4[_0x233c('0xe')](0x1f4,_0x382650[_0x233c('0x10')]));});}})[_0x233c('0x13')](function(_0x2f7fc5){logger[_0x233c('0xe')]('VerifyAdditionalPhones',_0x2f7fc5[_0x233c('0x10')]);_0x39a82e(_0x1b7dc4[_0x233c('0xe')](0x1f4,_0x2f7fc5[_0x233c('0x10')]));});}else _0x2d0495(0x1);});});};function activateAdditionalPhone(_0x5b75b4,_0x3eba08,_0x40b674,_0x12048b,_0x439ad5){return new Promise(function(_0x3c53e1,_0x44f13b){var _0x456647;if(_[_0x233c('0x2d')](_0x40b674[_0x233c('0x2e')])){_0x40b674[_0x233c('0x2e')]=moment();}if(moment()>moment(_0x40b674[_0x233c('0x2e')])){_0x456647=moment()['add'](_0x439ad5||0x3,_0x233c('0x2f'));}else{if(_0x40b674[_0x233c('0x1c')]==0x0){_0x456647=moment(_0x40b674['scheduledat']);}else{_0x456647=moment()['add'](_0x439ad5||0x3,_0x233c('0x2f'));}}if(_['isNil'](_0x456647)){_0x456647=moment()['add'](_0x439ad5||0x3,'minutes');}var _0x18ae9b={'phone':_0x5b75b4[_0x233c('0x30')],'active':0x0,'OrderBy':_[_0x233c('0x2d')](_0x5b75b4[_0x233c('0x1c')])?0x0:_0x5b75b4[_0x233c('0x1c')],'scheduledat':moment()[_0x233c('0x31')](_0x12048b||0x1,'minutes'),'countbusyretry':_0x3eba08[_0x233c('0x1e')],'countcongestionretry':_0x3eba08[_0x233c('0x1f')],'countnoanswerretry':_0x3eba08[_0x233c('0x20')],'countnosuchnumberretry':_0x3eba08['countnosuchnumberretry'],'countdropretry':_0x3eba08[_0x233c('0x22')],'countabandonedretry':_0x3eba08[_0x233c('0x28')],'countmachineretry':_0x3eba08[_0x233c('0x23')],'countagentrejectretry':_0x3eba08['countagentrejectretry'],'createdAt':_0x3eba08[_0x233c('0x32')],'updatedAt':_0x3eba08['updatedAt']};var _0x33798a={'CmHopperId':_0x5b75b4['id'],'phone':_0x40b674[_0x233c('0x30')],'active':0x0,'OrderBy':_['isNil'](_0x40b674[_0x233c('0x1c')])?0x0:_0x40b674[_0x233c('0x1c')],'scheduledat':_0x456647,'countbusyretry':_0x40b674['countbusyretry'],'countcongestionretry':_0x40b674['countcongestionretry'],'countnoanswerretry':_0x40b674[_0x233c('0x20')],'countnosuchnumberretry':_0x40b674[_0x233c('0x21')],'countdropretry':_0x40b674[_0x233c('0x22')],'countabandonedretry':_0x40b674[_0x233c('0x28')],'countmachineretry':_0x40b674[_0x233c('0x23')],'countagentrejectretry':_0x40b674[_0x233c('0x24')],'createdAt':_0x40b674['createdAt'],'updatedAt':_0x40b674[_0x233c('0x33')]};return db[_0x233c('0x34')]['transaction'](function(_0x3ac8c1){return db[_0x233c('0x27')][_0x233c('0x35')](_0x18ae9b,{'where':{'id':_0x40b674['id']}},{'transaction':_0x3ac8c1})[_0x233c('0x1b')](function(){return db['CmHopper'][_0x233c('0x35')](_0x33798a,{'where':{'id':_0x5b75b4['id']}},{'transaction':_0x3ac8c1});});})['then'](function(_0x49af4a){_0x3c53e1({'id':_0x5b75b4['id'],'phone':_0x40b674[_0x233c('0x30')]});})['catch'](function(_0x15bd8c){logger[_0x233c('0xe')](_0x233c('0x36'),_0x15bd8c[_0x233c('0x10')]);_0x44f13b({'error':_0x15bd8c['message']});});});}exports[_0x233c('0x37')]=function(_0x26e41a){var _0x403067=this;return new Promise(function(_0x3b1519,_0x27899d){return db[_0x233c('0x15')][_0x233c('0x35')](_0x26e41a[_0x233c('0x17')][_0x233c('0x38')],{'where':{'id':_0x26e41a[_0x233c('0x17')]['id']}})[_0x233c('0x1b')](function(_0x51c94e){_0x3b1519(_0x51c94e);})[_0x233c('0x13')](function(_0x2c90d1){logger[_0x233c('0xe')](_0x233c('0x37'),_0x2c90d1['message']);_0x27899d(_0x403067[_0x233c('0xe')](0x1f4,_0x2c90d1[_0x233c('0x10')]));});});};
\ No newline at end of file
+var _0x95e6=['message','catch','findOne','body','ContactId','ListId','VoiceQueueId','CampaignId','then','CmHopperAdditionalPhone','OrderBy','ASC','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','entity','dialGlobalMaxRetry','countabandonedretry','VerifyAdditionalPhones','SwapAdditionalPhones','CmHopper','duration','waitTime','isNil','scheduledat','add','minutes','phone','createdAt','updatedAt','sequelize','transaction','update','IncrementPreviewCounters','field','lodash','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','CmHopperAdditionalPhone,\x20%s,\x20%s','request\x20sent','debug','CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x1f3393,_0x20d31a){var _0x20c079=function(_0x46f2a9){while(--_0x46f2a9){_0x1f3393['push'](_0x1f3393['shift']());}};_0x20c079(++_0x20d31a);}(_0x95e6,0x171));var _0x695e=function(_0x4c8218,_0x1d70f0){_0x4c8218=_0x4c8218-0x0;var _0x218d2a=_0x95e6[_0x4c8218];return _0x218d2a;};'use strict';var _=require(_0x695e('0x0'));var util=require('util');var moment=require(_0x695e('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x695e('0x2'))['db'];var utils=require(_0x695e('0x3'));var logger=require(_0x695e('0x4'))(_0x695e('0x5'));var config=require('../../config/environment');var jayson=require(_0x695e('0x6'));var client=jayson[_0x695e('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x18a069,_0x3eee54,_0x5619c3){return new BPromise(function(_0x52d81b,_0x243116){return client[_0x695e('0x8')](_0x18a069,_0x5619c3)['then'](function(_0x29ea47){logger['info'](_0x695e('0x9'),_0x3eee54,_0x695e('0xa'));logger[_0x695e('0xb')](_0x695e('0xc'),_0x3eee54,'request\x20sent',JSON[_0x695e('0xd')](_0x29ea47));if(_0x29ea47['error']){if(_0x29ea47[_0x695e('0xe')][_0x695e('0xf')]===0x1f4){logger[_0x695e('0xe')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x3eee54,_0x29ea47[_0x695e('0xe')][_0x695e('0x10')]);return _0x243116(_0x29ea47[_0x695e('0xe')]['message']);}logger[_0x695e('0xe')](_0x695e('0x9'),_0x3eee54,_0x29ea47[_0x695e('0xe')][_0x695e('0x10')]);return _0x52d81b(_0x29ea47[_0x695e('0xe')][_0x695e('0x10')]);}else{logger['info']('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x3eee54,_0x695e('0xa'));_0x52d81b(_0x29ea47['result'][_0x695e('0x10')]);}})[_0x695e('0x11')](function(_0xf0a832){logger[_0x695e('0xe')](_0x695e('0x9'),_0x3eee54,_0xf0a832);_0x243116(_0xf0a832);});});}exports['VerifyAdditionalPhones']=function(_0x4d6e1e){var _0x51f8cc=this;return new Promise(function(_0xb86c9,_0x45a6ba){return db['CmHopper'][_0x695e('0x12')]({'raw':!![],'where':{'ContactId':_0x4d6e1e[_0x695e('0x13')][_0x695e('0x14')],'ListId':_0x4d6e1e['body'][_0x695e('0x15')],'VoiceQueueId':_0x4d6e1e[_0x695e('0x13')]['VoiceQueueId']===undefined?null:_0x4d6e1e['body'][_0x695e('0x16')],'CampaignId':_0x4d6e1e[_0x695e('0x13')][_0x695e('0x17')]===undefined?null:_0x4d6e1e[_0x695e('0x13')][_0x695e('0x17')]}})[_0x695e('0x18')](function(_0x206101){if(_0x206101!=null){return db[_0x695e('0x19')]['findOne']({'raw':!![],'where':{'CmHopperId':_0x206101['id'],'OrderBy':{'$gt':_0x206101[_0x695e('0x1a')]}},'order':[[_0x695e('0x1a'),_0x695e('0x1b')]]})['then'](function(_0x5682d5){var _0x318cf5=0x0;if(_0x5682d5){if(_0x5682d5[_0x695e('0x1c')]+_0x5682d5[_0x695e('0x1d')]+_0x5682d5[_0x695e('0x1e')]+_0x5682d5[_0x695e('0x1f')]+_0x5682d5[_0x695e('0x20')]+_0x5682d5['countabandonedretry']+_0x5682d5[_0x695e('0x21')]+_0x5682d5[_0x695e('0x22')]<_0x4d6e1e[_0x695e('0x23')][_0x695e('0x24')])_0x318cf5=0x1;_0xb86c9({'additional':_0x318cf5});}else{return db[_0x695e('0x19')][_0x695e('0x12')]({'raw':!![],'where':{'CmHopperId':_0x206101['id']},'order':[[_0x695e('0x1a'),_0x695e('0x1b')]]})[_0x695e('0x18')](function(_0x4eda38){var _0x355d63=0x0;if(_0x4eda38){if(_0x4eda38[_0x695e('0x1c')]+_0x4eda38[_0x695e('0x1d')]+_0x4eda38[_0x695e('0x1e')]+_0x4eda38['countnosuchnumberretry']+_0x4eda38[_0x695e('0x20')]+_0x4eda38[_0x695e('0x25')]+_0x4eda38['countmachineretry']+_0x4eda38[_0x695e('0x22')]<_0x4d6e1e[_0x695e('0x23')][_0x695e('0x24')])_0x355d63=0x1;_0xb86c9({'additional':_0x355d63});}else{_0xb86c9({'additional':0x0});}})[_0x695e('0x11')](function(_0x4d4ac7){logger['error']('VerifyAdditionalPhones',_0x4d4ac7[_0x695e('0x10')]);_0x45a6ba(_0x51f8cc[_0x695e('0xe')](0x1f4,_0x4d4ac7['message']));});}})[_0x695e('0x11')](function(_0x343d9f){logger[_0x695e('0xe')](_0x695e('0x26'),_0x343d9f[_0x695e('0x10')]);_0x45a6ba(_0x51f8cc[_0x695e('0xe')](0x1f4,_0x343d9f[_0x695e('0x10')]));});}else _0xb86c9({'additional':0x0});});});};exports[_0x695e('0x27')]=function(_0x13ab41){var _0x3bc9b7=this;return new Promise(function(_0x34bc42,_0x1ff58b){return db[_0x695e('0x28')][_0x695e('0x12')]({'raw':!![],'where':{'ContactId':_0x13ab41['body']['ContactId'],'ListId':_0x13ab41['body']['ListId'],'VoiceQueueId':_0x13ab41[_0x695e('0x13')][_0x695e('0x16')]===undefined?null:_0x13ab41[_0x695e('0x13')][_0x695e('0x16')],'CampaignId':_0x13ab41[_0x695e('0x13')][_0x695e('0x17')]===undefined?null:_0x13ab41['body']['CampaignId']}})[_0x695e('0x18')](function(_0x12c21e){if(_0x12c21e!=null){return db[_0x695e('0x19')]['findOne']({'raw':!![],'where':{'CmHopperId':_0x12c21e['id'],'OrderBy':{'$gte':_0x12c21e[_0x695e('0x1a')]}},'order':[[_0x695e('0x1a'),_0x695e('0x1b')]]})[_0x695e('0x18')](function(_0x5b0f1f){if(_0x5b0f1f)return activateAdditionalPhone(_0x12c21e,_0x13ab41['body'],_0x5b0f1f,_0x13ab41[_0x695e('0x29')],_0x13ab41[_0x695e('0x2a')])['then'](function(_0x4a0c5e){_0x34bc42(_0x4a0c5e);});else{return db[_0x695e('0x19')]['findOne']({'raw':!![],'where':{'CmHopperId':_0x12c21e['id']},'order':[[_0x695e('0x1a'),'ASC']]})[_0x695e('0x18')](function(_0x41f67c){if(_0x41f67c)return activateAdditionalPhone(_0x12c21e,_0x13ab41[_0x695e('0x13')],_0x41f67c,_0x13ab41[_0x695e('0x29')],_0x13ab41['waitTime'])[_0x695e('0x18')](function(_0x190da3){_0x34bc42(_0x190da3);});else{_0x34bc42({'id':_0x12c21e['id'],'phone':''});}})[_0x695e('0x11')](function(_0x3dad1c){logger[_0x695e('0xe')](_0x695e('0x26'),_0x3dad1c[_0x695e('0x10')]);_0x1ff58b(_0x3bc9b7['error'](0x1f4,_0x3dad1c[_0x695e('0x10')]));});}})[_0x695e('0x11')](function(_0x10e2d6){logger[_0x695e('0xe')]('VerifyAdditionalPhones',_0x10e2d6[_0x695e('0x10')]);_0x1ff58b(_0x3bc9b7['error'](0x1f4,_0x10e2d6[_0x695e('0x10')]));});}else _0x34bc42(0x1);});});};function activateAdditionalPhone(_0xacf39a,_0x3d45e8,_0x371221,_0x23e1bb,_0x15df7d){return new Promise(function(_0x51a8c2,_0x33bb63){var _0x2a1cc4;if(_[_0x695e('0x2b')](_0x371221[_0x695e('0x2c')])){_0x371221['scheduledat']=moment();}if(moment()>moment(_0x371221[_0x695e('0x2c')])){_0x2a1cc4=moment()[_0x695e('0x2d')](_0x15df7d||0x3,_0x695e('0x2e'));}else{if(_0x371221[_0x695e('0x1a')]==0x0){_0x2a1cc4=moment(_0x371221[_0x695e('0x2c')]);}else{_0x2a1cc4=moment()[_0x695e('0x2d')](_0x15df7d||0x3,_0x695e('0x2e'));}}if(_[_0x695e('0x2b')](_0x2a1cc4)){_0x2a1cc4=moment()[_0x695e('0x2d')](_0x15df7d||0x3,_0x695e('0x2e'));}var _0x3296ee={'phone':_0xacf39a[_0x695e('0x2f')],'active':0x0,'OrderBy':_[_0x695e('0x2b')](_0xacf39a['OrderBy'])?0x0:_0xacf39a[_0x695e('0x1a')],'scheduledat':moment()['add'](_0x23e1bb||0x1,_0x695e('0x2e')),'countbusyretry':_0x3d45e8['countbusyretry'],'countcongestionretry':_0x3d45e8['countcongestionretry'],'countnoanswerretry':_0x3d45e8[_0x695e('0x1e')],'countnosuchnumberretry':_0x3d45e8[_0x695e('0x1f')],'countdropretry':_0x3d45e8[_0x695e('0x20')],'countabandonedretry':_0x3d45e8['countabandonedretry'],'countmachineretry':_0x3d45e8[_0x695e('0x21')],'countagentrejectretry':_0x3d45e8['countagentrejectretry'],'createdAt':_0x3d45e8[_0x695e('0x30')],'updatedAt':_0x3d45e8[_0x695e('0x31')]};var _0x51892c={'CmHopperId':_0xacf39a['id'],'phone':_0x371221[_0x695e('0x2f')],'active':0x0,'OrderBy':_[_0x695e('0x2b')](_0x371221[_0x695e('0x1a')])?0x0:_0x371221[_0x695e('0x1a')],'scheduledat':_0x2a1cc4,'countbusyretry':_0x371221[_0x695e('0x1c')],'countcongestionretry':_0x371221[_0x695e('0x1d')],'countnoanswerretry':_0x371221['countnoanswerretry'],'countnosuchnumberretry':_0x371221[_0x695e('0x1f')],'countdropretry':_0x371221[_0x695e('0x20')],'countabandonedretry':_0x371221[_0x695e('0x25')],'countmachineretry':_0x371221['countmachineretry'],'countagentrejectretry':_0x371221[_0x695e('0x22')],'createdAt':_0x371221[_0x695e('0x30')],'updatedAt':_0x371221[_0x695e('0x31')]};return db[_0x695e('0x32')][_0x695e('0x33')](function(_0x391e73){return db[_0x695e('0x19')][_0x695e('0x34')](_0x3296ee,{'where':{'id':_0x371221['id']}},{'transaction':_0x391e73})[_0x695e('0x18')](function(){return db['CmHopper']['update'](_0x51892c,{'where':{'id':_0xacf39a['id']}},{'transaction':_0x391e73});});})[_0x695e('0x18')](function(_0x3449a2){_0x51a8c2({'id':_0xacf39a['id'],'phone':_0x371221['phone']});})[_0x695e('0x11')](function(_0x9be77c){logger[_0x695e('0xe')]('activateAdditionalPhone',_0x9be77c[_0x695e('0x10')]);_0x33bb63({'error':_0x9be77c['message']});});});}exports[_0x695e('0x35')]=function(_0x359820){var _0x380251=this;return new Promise(function(_0xafdb4,_0x2aa8ec){return db[_0x695e('0x28')][_0x695e('0x34')](_0x359820[_0x695e('0x13')][_0x695e('0x36')],{'where':{'id':_0x359820[_0x695e('0x13')]['id']}})[_0x695e('0x18')](function(_0x54c0d2){_0xafdb4(_0x54c0d2);})[_0x695e('0x11')](function(_0x390305){logger['error']('IncrementPreviewCounters',_0x390305[_0x695e('0x10')]);_0x2aa8ec(_0x380251['error'](0x1f4,_0x390305[_0x695e('0x10')]));});});};
\ No newline at end of file
index 170a251..8e79ca3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1760=['index','/:id','isAuthenticated','post','create','put','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperAdditionalPhone.controller','get'];(function(_0x292423,_0x1759b7){var _0x2801cb=function(_0x23c821){while(--_0x23c821){_0x292423['push'](_0x292423['shift']());}};_0x2801cb(++_0x1759b7);}(_0x1760,0xd0));var _0x0176=function(_0x235301,_0x42c54b){_0x235301=_0x235301-0x0;var _0x8219eb=_0x1760[_0x235301];return _0x8219eb;};'use strict';var multer=require(_0x0176('0x0'));var util=require(_0x0176('0x1'));var path=require(_0x0176('0x2'));var timeout=require(_0x0176('0x3'));var express=require(_0x0176('0x4'));var router=express[_0x0176('0x5')]();var fs_extra=require(_0x0176('0x6'));var auth=require(_0x0176('0x7'));var interaction=require(_0x0176('0x8'));var config=require(_0x0176('0x9'));var controller=require(_0x0176('0xa'));router[_0x0176('0xb')]('/',auth['isAuthenticated'](),controller[_0x0176('0xc')]);router[_0x0176('0xb')](_0x0176('0xd'),auth[_0x0176('0xe')](),controller['show']);router[_0x0176('0xf')]('/',auth['isAuthenticated'](),controller[_0x0176('0x10')]);router[_0x0176('0x11')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x0176('0x12')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x0176('0x13')]=router;
\ No newline at end of file
+var _0xa571=['index','/:id','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../config/environment','get','isAuthenticated'];(function(_0xa01e3b,_0x1db80){var _0x22921e=function(_0x3ddd17){while(--_0x3ddd17){_0xa01e3b['push'](_0xa01e3b['shift']());}};_0x22921e(++_0x1db80);}(_0xa571,0x107));var _0x1a57=function(_0x486756,_0x3ca789){_0x486756=_0x486756-0x0;var _0x535e90=_0xa571[_0x486756];return _0x535e90;};'use strict';var multer=require(_0x1a57('0x0'));var util=require(_0x1a57('0x1'));var path=require(_0x1a57('0x2'));var timeout=require(_0x1a57('0x3'));var express=require('express');var router=express[_0x1a57('0x4')]();var fs_extra=require(_0x1a57('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x1a57('0x6'));var controller=require('./cmHopperAdditionalPhone.controller');router[_0x1a57('0x7')]('/',auth[_0x1a57('0x8')](),controller[_0x1a57('0x9')]);router[_0x1a57('0x7')](_0x1a57('0xa'),auth[_0x1a57('0x8')](),controller['show']);router[_0x1a57('0xb')]('/',auth[_0x1a57('0x8')](),controller[_0x1a57('0xc')]);router['put'](_0x1a57('0xa'),auth[_0x1a57('0x8')](),controller[_0x1a57('0xd')]);router[_0x1a57('0xe')](_0x1a57('0xa'),auth[_0x1a57('0x8')](),controller[_0x1a57('0xf')]);module[_0x1a57('0x10')]=router;
\ No newline at end of file
index 151feee..3f38a22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe314=['exports','STRING','INTEGER','contactListQueue','sequelize'];(function(_0x50719a,_0x6f9d28){var _0x5e26db=function(_0x542d2a){while(--_0x542d2a){_0x50719a['push'](_0x50719a['shift']());}};_0x5e26db(++_0x6f9d28);}(_0xe314,0x7c));var _0x4e31=function(_0xaedd1f,_0x2fe932){_0xaedd1f=_0xaedd1f-0x0;var _0x51c048=_0xe314[_0xaedd1f];return _0x51c048;};'use strict';var moment=require('moment');var Sequelize=require(_0x4e31('0x0'));module[_0x4e31('0x1')]={'phone':{'type':Sequelize[_0x4e31('0x2')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x4e31('0x3')],'unique':_0x4e31('0x4')},'ListId':{'type':Sequelize[_0x4e31('0x3')],'unique':_0x4e31('0x4')},'VoiceQueueId':{'type':Sequelize[_0x4e31('0x3')],'unique':_0x4e31('0x4')}};
\ No newline at end of file
+var _0x8ca9=['moment','sequelize','exports','STRING','INTEGER','contactListQueue'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x8ca9,0x9c));var _0x98ca=function(_0x56fed6,_0x13af3c){_0x56fed6=_0x56fed6-0x0;var _0x48f3b3=_0x8ca9[_0x56fed6];return _0x48f3b3;};'use strict';var moment=require(_0x98ca('0x0'));var Sequelize=require(_0x98ca('0x1'));module[_0x98ca('0x2')]={'phone':{'type':Sequelize[_0x98ca('0x3')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x98ca('0x4')],'unique':_0x98ca('0x5')},'ListId':{'type':Sequelize[_0x98ca('0x4')],'unique':'contactListQueue'},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':_0x98ca('0x5')}};
\ No newline at end of file
index 9c1a6e1..e31f1ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7476=['error','stack','name','send','map','CmHopperBlack','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','length','attributes','nolimit','order','sort','pick','filter','merge','where','includeAll','include','findAll','rows','show','options','find','body','catch','params','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','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/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then'];(function(_0x3db397,_0x1ebef9){var _0x4390a0=function(_0x361f5a){while(--_0x361f5a){_0x3db397['push'](_0x3db397['shift']());}};_0x4390a0(++_0x1ebef9);}(_0x7476,0x1ec));var _0x6747=function(_0xccc0d4,_0x2f6bf7){_0xccc0d4=_0xccc0d4-0x0;var _0x27a653=_0x7476[_0xccc0d4];return _0x27a653;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6747('0x0'));var zipdir=require(_0x6747('0x1'));var jsonpatch=require(_0x6747('0x2'));var rp=require('request-promise');var moment=require(_0x6747('0x3'));var BPromise=require(_0x6747('0x4'));var Mustache=require(_0x6747('0x5'));var util=require('util');var path=require(_0x6747('0x6'));var sox=require('sox');var csv=require(_0x6747('0x7'));var ejs=require(_0x6747('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6747('0x9'));var squel=require(_0x6747('0xa'));var crypto=require(_0x6747('0xb'));var jsforce=require(_0x6747('0xc'));var deskjs=require(_0x6747('0xd'));var toCsv=require('to-csv');var querystring=require(_0x6747('0xe'));var Papa=require('papaparse');var Redis=require(_0x6747('0xf'));var authService=require(_0x6747('0x10'));var qs=require(_0x6747('0x11'));var as=require(_0x6747('0x12'));var hardwareService=require(_0x6747('0x13'));var logger=require(_0x6747('0x14'))(_0x6747('0x15'));var utils=require('../../config/utils');var config=require(_0x6747('0x16'));var licenseUtil=require(_0x6747('0x17'));var db=require(_0x6747('0x18'))['db'];function respondWithStatusCode(_0x5f2f85,_0x1193c8){_0x1193c8=_0x1193c8||0xcc;return function(_0x57238b){if(_0x57238b){return _0x5f2f85[_0x6747('0x19')](_0x1193c8);}return _0x5f2f85[_0x6747('0x1a')](_0x1193c8)[_0x6747('0x1b')]();};}function respondWithResult(_0x25af5e,_0x32735e){_0x32735e=_0x32735e||0xc8;return function(_0x322a42){if(_0x322a42){return _0x25af5e[_0x6747('0x1a')](_0x32735e)[_0x6747('0x1c')](_0x322a42);}};}function respondWithFilteredResult(_0xa6090e,_0x2f1f18){return function(_0x3028f4){if(_0x3028f4){var _0x4e4e73=typeof _0x2f1f18[_0x6747('0x1d')]===_0x6747('0x1e')&&typeof _0x2f1f18[_0x6747('0x1f')]===_0x6747('0x1e');var _0x3ec0cc=_0x3028f4[_0x6747('0x20')];var _0x3e8c9d=_0x4e4e73?0x0:_0x2f1f18['offset'];var _0x1b3b42=_0x4e4e73?_0x3028f4[_0x6747('0x20')]:_0x2f1f18['offset']+_0x2f1f18[_0x6747('0x1f')];var _0x1f5fcc;if(_0x1b3b42>=_0x3ec0cc){_0x1b3b42=_0x3ec0cc;_0x1f5fcc=0xc8;}else{_0x1f5fcc=0xce;}_0xa6090e[_0x6747('0x1a')](_0x1f5fcc);return _0xa6090e[_0x6747('0x21')](_0x6747('0x22'),_0x3e8c9d+'-'+_0x1b3b42+'/'+_0x3ec0cc)[_0x6747('0x1c')](_0x3028f4);}return null;};}function patchUpdates(_0x326ee4){return function(_0x2c36b7){try{jsonpatch[_0x6747('0x23')](_0x2c36b7,_0x326ee4,!![]);}catch(_0x376022){return BPromise[_0x6747('0x24')](_0x376022);}return _0x2c36b7[_0x6747('0x25')]();};}function saveUpdates(_0x411619,_0x897ac1){return function(_0xd0445c){if(_0xd0445c){return _0xd0445c[_0x6747('0x26')](_0x411619)['then'](function(_0x42b2c8){return _0x42b2c8;});}return null;};}function removeEntity(_0x583191,_0x207949){return function(_0x2943ef){if(_0x2943ef){return _0x2943ef['destroy']()[_0x6747('0x27')](function(){_0x583191[_0x6747('0x1a')](0xcc)[_0x6747('0x1b')]();});}};}function handleEntityNotFound(_0xcdb0f9,_0x3b457d){return function(_0x4551c5){if(!_0x4551c5){_0xcdb0f9[_0x6747('0x19')](0x194);}return _0x4551c5;};}function handleError(_0x2a043f,_0x4ecf0e){_0x4ecf0e=_0x4ecf0e||0x1f4;return function(_0x2c63f0){logger[_0x6747('0x28')](_0x2c63f0[_0x6747('0x29')]);if(_0x2c63f0['name']){delete _0x2c63f0[_0x6747('0x2a')];}_0x2a043f['status'](_0x4ecf0e)[_0x6747('0x2b')](_0x2c63f0);};}exports['index']=function(_0x3cc76c,_0x400a17){var _0x36dc81={},_0x585300={},_0x3ab718={'count':0x0,'rows':[]};var _0x17f6c8=_[_0x6747('0x2c')](db[_0x6747('0x2d')][_0x6747('0x2e')],function(_0x154960){return{'name':_0x154960[_0x6747('0x2f')],'type':_0x154960[_0x6747('0x30')][_0x6747('0x31')]};});_0x585300['model']=_['map'](_0x17f6c8,_0x6747('0x2a'));_0x585300[_0x6747('0x32')]=_[_0x6747('0x33')](_0x3cc76c[_0x6747('0x32')]);_0x585300[_0x6747('0x34')]=_[_0x6747('0x35')](_0x585300[_0x6747('0x36')],_0x585300[_0x6747('0x32')]);_0x36dc81['attributes']=_[_0x6747('0x35')](_0x585300[_0x6747('0x36')],qs['fields'](_0x3cc76c[_0x6747('0x32')][_0x6747('0x37')]));_0x36dc81['attributes']=_0x36dc81['attributes'][_0x6747('0x38')]?_0x36dc81[_0x6747('0x39')]:_0x585300[_0x6747('0x36')];if(!_0x3cc76c['query']['hasOwnProperty'](_0x6747('0x3a'))){_0x36dc81[_0x6747('0x1f')]=qs[_0x6747('0x1f')](_0x3cc76c[_0x6747('0x32')][_0x6747('0x1f')]);_0x36dc81[_0x6747('0x1d')]=qs[_0x6747('0x1d')](_0x3cc76c[_0x6747('0x32')][_0x6747('0x1d')]);}_0x36dc81[_0x6747('0x3b')]=qs[_0x6747('0x3c')](_0x3cc76c[_0x6747('0x32')][_0x6747('0x3c')]);_0x36dc81['where']=qs[_0x6747('0x34')](_[_0x6747('0x3d')](_0x3cc76c['query'],_0x585300[_0x6747('0x34')]),_0x17f6c8);if(_0x3cc76c[_0x6747('0x32')][_0x6747('0x3e')]){_0x36dc81['where']=_[_0x6747('0x3f')](_0x36dc81[_0x6747('0x40')],{'$or':_[_0x6747('0x2c')](_0x17f6c8,function(_0x3fb844){if(_0x3fb844[_0x6747('0x30')]!=='VIRTUAL'){var _0xf47409={};_0xf47409[_0x3fb844[_0x6747('0x2a')]]={'$like':'%'+_0x3cc76c[_0x6747('0x32')][_0x6747('0x3e')]+'%'};return _0xf47409;}})});}_0x36dc81=_[_0x6747('0x3f')]({},_0x36dc81,_0x3cc76c['options']);var _0x4f54a3={'where':_0x36dc81[_0x6747('0x40')]};return db['CmHopperBlack'][_0x6747('0x20')](_0x4f54a3)['then'](function(_0x5246c8){_0x3ab718['count']=_0x5246c8;if(_0x3cc76c['query'][_0x6747('0x41')]){_0x36dc81[_0x6747('0x42')]=[{'all':!![]}];}return db[_0x6747('0x2d')][_0x6747('0x43')](_0x36dc81);})[_0x6747('0x27')](function(_0x30f5d2){_0x3ab718[_0x6747('0x44')]=_0x30f5d2;return _0x3ab718;})['then'](respondWithFilteredResult(_0x400a17,_0x36dc81))['catch'](handleError(_0x400a17,null));};exports[_0x6747('0x45')]=function(_0xe6a379,_0x415cd5){var _0x37777e={'raw':!![],'where':{'id':_0xe6a379['params']['id']}},_0x5ee6df={};_0x5ee6df[_0x6747('0x36')]=_[_0x6747('0x33')](db[_0x6747('0x2d')][_0x6747('0x2e')]);_0x5ee6df['query']=_[_0x6747('0x33')](_0xe6a379[_0x6747('0x32')]);_0x5ee6df[_0x6747('0x34')]=_['intersection'](_0x5ee6df[_0x6747('0x36')],_0x5ee6df[_0x6747('0x32')]);_0x37777e[_0x6747('0x39')]=_[_0x6747('0x35')](_0x5ee6df[_0x6747('0x36')],qs[_0x6747('0x37')](_0xe6a379['query'][_0x6747('0x37')]));_0x37777e[_0x6747('0x39')]=_0x37777e[_0x6747('0x39')][_0x6747('0x38')]?_0x37777e['attributes']:_0x5ee6df[_0x6747('0x36')];if(_0xe6a379[_0x6747('0x32')][_0x6747('0x41')]){_0x37777e['include']=[{'all':!![]}];}_0x37777e=_[_0x6747('0x3f')]({},_0x37777e,_0xe6a379[_0x6747('0x46')]);return db[_0x6747('0x2d')][_0x6747('0x47')](_0x37777e)[_0x6747('0x27')](handleEntityNotFound(_0x415cd5,null))[_0x6747('0x27')](respondWithResult(_0x415cd5,null))['catch'](handleError(_0x415cd5,null));};exports[_0x6747('0x26')]=function(_0xa8b8f8,_0x1888ca){if(_0xa8b8f8['body']['id']){delete _0xa8b8f8[_0x6747('0x48')]['id'];}return db[_0x6747('0x2d')]['find']({'where':{'id':_0xa8b8f8['params']['id']}})[_0x6747('0x27')](handleEntityNotFound(_0x1888ca,null))[_0x6747('0x27')](saveUpdates(_0xa8b8f8[_0x6747('0x48')],null))[_0x6747('0x27')](respondWithResult(_0x1888ca,null))[_0x6747('0x49')](handleError(_0x1888ca,null));};exports['destroy']=function(_0x366c5f,_0x43f864){return db[_0x6747('0x2d')][_0x6747('0x47')]({'where':{'id':_0x366c5f[_0x6747('0x4a')]['id']}})[_0x6747('0x27')](handleEntityNotFound(_0x43f864,null))[_0x6747('0x27')](removeEntity(_0x43f864,null))[_0x6747('0x49')](handleError(_0x43f864,null));};exports[_0x6747('0x4b')]=function(_0x342501,_0xa06d0d){return db[_0x6747('0x2d')][_0x6747('0x4b')]()[_0x6747('0x27')](respondWithResult(_0xa06d0d,null))[_0x6747('0x49')](handleError(_0xa06d0d,null));};
\ No newline at end of file
+var _0x54c6=['apply','reject','save','update','destroy','then','end','error','stack','name','send','index','CmHopperBlack','fieldName','type','key','model','map','query','intersection','attributes','fields','hasOwnProperty','limit','order','sort','where','filters','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','keys','rawAttributes','length','body','params','find','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','status','json','undefined','count','offset','set','Content-Range'];(function(_0x58965a,_0x2e71db){var _0x254efc=function(_0xf14fb4){while(--_0xf14fb4){_0x58965a['push'](_0x58965a['shift']());}};_0x254efc(++_0x2e71db);}(_0x54c6,0x7b));var _0x654c=function(_0x2c8fdd,_0x3114d1){_0x2c8fdd=_0x2c8fdd-0x0;var _0x35db7b=_0x54c6[_0x2c8fdd];return _0x35db7b;};'use strict';var emlformat=require(_0x654c('0x0'));var rimraf=require(_0x654c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x654c('0x2'));var rp=require(_0x654c('0x3'));var moment=require(_0x654c('0x4'));var BPromise=require(_0x654c('0x5'));var Mustache=require(_0x654c('0x6'));var util=require(_0x654c('0x7'));var path=require(_0x654c('0x8'));var sox=require(_0x654c('0x9'));var csv=require(_0x654c('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x654c('0xb'));var _=require(_0x654c('0xc'));var squel=require('squel');var crypto=require(_0x654c('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x654c('0xe'));var toCsv=require(_0x654c('0xa'));var querystring=require(_0x654c('0xf'));var Papa=require(_0x654c('0x10'));var Redis=require(_0x654c('0x11'));var authService=require(_0x654c('0x12'));var qs=require(_0x654c('0x13'));var as=require(_0x654c('0x14'));var hardwareService=require(_0x654c('0x15'));var logger=require(_0x654c('0x16'))(_0x654c('0x17'));var utils=require(_0x654c('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x654c('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1a58f5,_0x101428){_0x101428=_0x101428||0xcc;return function(_0x1d1b2e){if(_0x1d1b2e){return _0x1a58f5['sendStatus'](_0x101428);}return _0x1a58f5[_0x654c('0x1a')](_0x101428)['end']();};}function respondWithResult(_0x402c18,_0x46d297){_0x46d297=_0x46d297||0xc8;return function(_0x2c0b47){if(_0x2c0b47){return _0x402c18[_0x654c('0x1a')](_0x46d297)[_0x654c('0x1b')](_0x2c0b47);}};}function respondWithFilteredResult(_0x161a68,_0x53e0d1){return function(_0x4812a0){if(_0x4812a0){var _0x2a4cee=typeof _0x53e0d1['offset']===_0x654c('0x1c')&&typeof _0x53e0d1['limit']===_0x654c('0x1c');var _0x29b325=_0x4812a0['count'];var _0x366ff4=_0x2a4cee?0x0:_0x53e0d1['offset'];var _0x5ce9f8=_0x2a4cee?_0x4812a0[_0x654c('0x1d')]:_0x53e0d1[_0x654c('0x1e')]+_0x53e0d1['limit'];var _0x27107d;if(_0x5ce9f8>=_0x29b325){_0x5ce9f8=_0x29b325;_0x27107d=0xc8;}else{_0x27107d=0xce;}_0x161a68['status'](_0x27107d);return _0x161a68[_0x654c('0x1f')](_0x654c('0x20'),_0x366ff4+'-'+_0x5ce9f8+'/'+_0x29b325)['json'](_0x4812a0);}return null;};}function patchUpdates(_0x581b5e){return function(_0x2f16a1){try{jsonpatch[_0x654c('0x21')](_0x2f16a1,_0x581b5e,!![]);}catch(_0x13eb00){return BPromise[_0x654c('0x22')](_0x13eb00);}return _0x2f16a1[_0x654c('0x23')]();};}function saveUpdates(_0x52d1b6,_0xb4384b){return function(_0x4add48){if(_0x4add48){return _0x4add48[_0x654c('0x24')](_0x52d1b6)['then'](function(_0x2f8a47){return _0x2f8a47;});}return null;};}function removeEntity(_0x32d1b2,_0x43f4c7){return function(_0x2acdaf){if(_0x2acdaf){return _0x2acdaf[_0x654c('0x25')]()[_0x654c('0x26')](function(){_0x32d1b2['status'](0xcc)[_0x654c('0x27')]();});}};}function handleEntityNotFound(_0x1bc85c,_0x58bd22){return function(_0xfb1867){if(!_0xfb1867){_0x1bc85c['sendStatus'](0x194);}return _0xfb1867;};}function handleError(_0x2cb95d,_0x10ef1c){_0x10ef1c=_0x10ef1c||0x1f4;return function(_0x5a826a){logger[_0x654c('0x28')](_0x5a826a[_0x654c('0x29')]);if(_0x5a826a[_0x654c('0x2a')]){delete _0x5a826a[_0x654c('0x2a')];}_0x2cb95d[_0x654c('0x1a')](_0x10ef1c)[_0x654c('0x2b')](_0x5a826a);};}exports[_0x654c('0x2c')]=function(_0x50eabe,_0x6b7b65){var _0x33d6c1={},_0x4d907a={},_0x572795={'count':0x0,'rows':[]};var _0x28e106=_['map'](db[_0x654c('0x2d')]['rawAttributes'],function(_0x5bb21f){return{'name':_0x5bb21f[_0x654c('0x2e')],'type':_0x5bb21f[_0x654c('0x2f')][_0x654c('0x30')]};});_0x4d907a[_0x654c('0x31')]=_[_0x654c('0x32')](_0x28e106,_0x654c('0x2a'));_0x4d907a[_0x654c('0x33')]=_['keys'](_0x50eabe[_0x654c('0x33')]);_0x4d907a['filters']=_[_0x654c('0x34')](_0x4d907a[_0x654c('0x31')],_0x4d907a['query']);_0x33d6c1[_0x654c('0x35')]=_[_0x654c('0x34')](_0x4d907a[_0x654c('0x31')],qs[_0x654c('0x36')](_0x50eabe[_0x654c('0x33')][_0x654c('0x36')]));_0x33d6c1[_0x654c('0x35')]=_0x33d6c1['attributes']['length']?_0x33d6c1[_0x654c('0x35')]:_0x4d907a[_0x654c('0x31')];if(!_0x50eabe[_0x654c('0x33')][_0x654c('0x37')]('nolimit')){_0x33d6c1[_0x654c('0x38')]=qs[_0x654c('0x38')](_0x50eabe[_0x654c('0x33')][_0x654c('0x38')]);_0x33d6c1['offset']=qs[_0x654c('0x1e')](_0x50eabe[_0x654c('0x33')][_0x654c('0x1e')]);}_0x33d6c1[_0x654c('0x39')]=qs[_0x654c('0x3a')](_0x50eabe[_0x654c('0x33')][_0x654c('0x3a')]);_0x33d6c1[_0x654c('0x3b')]=qs[_0x654c('0x3c')](_['pick'](_0x50eabe[_0x654c('0x33')],_0x4d907a[_0x654c('0x3c')]),_0x28e106);if(_0x50eabe[_0x654c('0x33')][_0x654c('0x3d')]){_0x33d6c1['where']=_['merge'](_0x33d6c1[_0x654c('0x3b')],{'$or':_[_0x654c('0x32')](_0x28e106,function(_0x36f78d){if(_0x36f78d[_0x654c('0x2f')]!==_0x654c('0x3e')){var _0x2fc939={};_0x2fc939[_0x36f78d[_0x654c('0x2a')]]={'$like':'%'+_0x50eabe[_0x654c('0x33')][_0x654c('0x3d')]+'%'};return _0x2fc939;}})});}_0x33d6c1=_[_0x654c('0x3f')]({},_0x33d6c1,_0x50eabe[_0x654c('0x40')]);var _0x24902a={'where':_0x33d6c1[_0x654c('0x3b')]};return db[_0x654c('0x2d')][_0x654c('0x1d')](_0x24902a)[_0x654c('0x26')](function(_0xa9a845){_0x572795['count']=_0xa9a845;if(_0x50eabe[_0x654c('0x33')][_0x654c('0x41')]){_0x33d6c1[_0x654c('0x42')]=[{'all':!![]}];}return db[_0x654c('0x2d')][_0x654c('0x43')](_0x33d6c1);})['then'](function(_0x2aba16){_0x572795[_0x654c('0x44')]=_0x2aba16;return _0x572795;})[_0x654c('0x26')](respondWithFilteredResult(_0x6b7b65,_0x33d6c1))[_0x654c('0x45')](handleError(_0x6b7b65,null));};exports[_0x654c('0x46')]=function(_0x58755a,_0x3a669a){var _0x12eaff={'raw':!![],'where':{'id':_0x58755a['params']['id']}},_0x373ef3={};_0x373ef3['model']=_[_0x654c('0x47')](db[_0x654c('0x2d')][_0x654c('0x48')]);_0x373ef3['query']=_[_0x654c('0x47')](_0x58755a['query']);_0x373ef3[_0x654c('0x3c')]=_[_0x654c('0x34')](_0x373ef3[_0x654c('0x31')],_0x373ef3[_0x654c('0x33')]);_0x12eaff[_0x654c('0x35')]=_[_0x654c('0x34')](_0x373ef3['model'],qs[_0x654c('0x36')](_0x58755a[_0x654c('0x33')][_0x654c('0x36')]));_0x12eaff['attributes']=_0x12eaff['attributes'][_0x654c('0x49')]?_0x12eaff['attributes']:_0x373ef3['model'];if(_0x58755a[_0x654c('0x33')]['includeAll']){_0x12eaff[_0x654c('0x42')]=[{'all':!![]}];}_0x12eaff=_[_0x654c('0x3f')]({},_0x12eaff,_0x58755a[_0x654c('0x40')]);return db[_0x654c('0x2d')]['find'](_0x12eaff)['then'](handleEntityNotFound(_0x3a669a,null))[_0x654c('0x26')](respondWithResult(_0x3a669a,null))[_0x654c('0x45')](handleError(_0x3a669a,null));};exports[_0x654c('0x24')]=function(_0x4972ed,_0x3c0867){if(_0x4972ed[_0x654c('0x4a')]['id']){delete _0x4972ed[_0x654c('0x4a')]['id'];}return db[_0x654c('0x2d')]['find']({'where':{'id':_0x4972ed[_0x654c('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3c0867,null))[_0x654c('0x26')](saveUpdates(_0x4972ed['body'],null))[_0x654c('0x26')](respondWithResult(_0x3c0867,null))['catch'](handleError(_0x3c0867,null));};exports[_0x654c('0x25')]=function(_0x1894ce,_0xde7020){return db[_0x654c('0x2d')][_0x654c('0x4c')]({'where':{'id':_0x1894ce['params']['id']}})[_0x654c('0x26')](handleEntityNotFound(_0xde7020,null))[_0x654c('0x26')](removeEntity(_0xde7020,null))[_0x654c('0x45')](handleError(_0xde7020,null));};exports[_0x654c('0x4d')]=function(_0x47a5e7,_0xb75fa3){return db['CmHopperBlack'][_0x654c('0x4d')]()[_0x654c('0x26')](respondWithResult(_0xb75fa3,null))[_0x654c('0x45')](handleError(_0xb75fa3,null));};
\ No newline at end of file
index 68ff817..79f00e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea3c=['lodash','util','../../config/logger','api','moment','path','../../config/environment','exports','define','CmHopperBlack','cm_hopper_black'];(function(_0x1f705f,_0x4aed5d){var _0x4a82b1=function(_0x287233){while(--_0x287233){_0x1f705f['push'](_0x1f705f['shift']());}};_0x4a82b1(++_0x4aed5d);}(_0xea3c,0x1ef));var _0xcea3=function(_0x131b07,_0x4d1002){_0x131b07=_0x131b07-0x0;var _0x1288e9=_0xea3c[_0x131b07];return _0x1288e9;};'use strict';var _=require(_0xcea3('0x0'));var util=require(_0xcea3('0x1'));var logger=require(_0xcea3('0x2'))(_0xcea3('0x3'));var moment=require(_0xcea3('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xcea3('0x5'));var rimraf=require('rimraf');var config=require(_0xcea3('0x6'));var attributes=require('./cmHopperBlack.attributes');module[_0xcea3('0x7')]=function(_0x5c3db6,_0x9ce6e3){return _0x5c3db6[_0xcea3('0x8')](_0xcea3('0x9'),attributes,{'tableName':_0xcea3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6a3c=['path','rimraf','../../config/environment','./cmHopperBlack.attributes','exports','define','CmHopperBlack','lodash','api','request-promise'];(function(_0xa148b7,_0x2f3eb2){var _0x51efd3=function(_0x34bcec){while(--_0x34bcec){_0xa148b7['push'](_0xa148b7['shift']());}};_0x51efd3(++_0x2f3eb2);}(_0x6a3c,0xbb));var _0xc6a3=function(_0x49d159,_0x2096ca){_0x49d159=_0x49d159-0x0;var _0x445c49=_0x6a3c[_0x49d159];return _0x445c49;};'use strict';var _=require(_0xc6a3('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xc6a3('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc6a3('0x2'));var fs=require('fs');var path=require(_0xc6a3('0x3'));var rimraf=require(_0xc6a3('0x4'));var config=require(_0xc6a3('0x5'));var attributes=require(_0xc6a3('0x6'));module[_0xc6a3('0x7')]=function(_0x587366,_0x16102d){return _0x587366[_0xc6a3('0x8')](_0xc6a3('0x9'),attributes,{'tableName':'cm_hopper_black','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3abd234..5ca760e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99cd=['destroy','DestroyCmHopperBlack','lodash','util','moment','bluebird','randomstring','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','CmHopperBlack,\x20%s,\x20%s','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','catch','GetCmHopperBlack','CmHopperBlack','options','raw','attributes','limit','include','map','model','then','update','body','where','UpdateCmHopperBlack','stringify'];(function(_0x4effb1,_0x278189){var _0x1504c6=function(_0x5609eb){while(--_0x5609eb){_0x4effb1['push'](_0x4effb1['shift']());}};_0x1504c6(++_0x278189);}(_0x99cd,0x74));var _0xd99c=function(_0x230a47,_0xa8a5e0){_0x230a47=_0x230a47-0x0;var _0x505fdd=_0x99cd[_0x230a47];return _0x505fdd;};'use strict';var _=require(_0xd99c('0x0'));var util=require(_0xd99c('0x1'));var moment=require(_0xd99c('0x2'));var BPromise=require(_0xd99c('0x3'));var rs=require(_0xd99c('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xd99c('0x5'))(_0xd99c('0x6'));var config=require(_0xd99c('0x7'));var jayson=require(_0xd99c('0x8'));var client=jayson[_0xd99c('0x9')][_0xd99c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x33a63e,_0x351397,_0x146f63){return new BPromise(function(_0x3075b4,_0x56c8b8){return client[_0xd99c('0xb')](_0x33a63e,_0x146f63)['then'](function(_0x56dd2e){logger[_0xd99c('0xc')](_0xd99c('0xd'),_0x351397,'request\x20sent');logger[_0xd99c('0xe')](_0xd99c('0xf'),_0x351397,'request\x20sent',JSON['stringify'](_0x56dd2e));if(_0x56dd2e[_0xd99c('0x10')]){if(_0x56dd2e[_0xd99c('0x10')][_0xd99c('0x11')]===0x1f4){logger[_0xd99c('0x10')](_0xd99c('0xd'),_0x351397,_0x56dd2e[_0xd99c('0x10')][_0xd99c('0x12')]);return _0x56c8b8(_0x56dd2e['error'][_0xd99c('0x12')]);}logger['error']('CmHopperBlack,\x20%s,\x20%s',_0x351397,_0x56dd2e['error'][_0xd99c('0x12')]);return _0x3075b4(_0x56dd2e[_0xd99c('0x10')][_0xd99c('0x12')]);}else{logger[_0xd99c('0xc')](_0xd99c('0xd'),_0x351397,_0xd99c('0x13'));_0x3075b4(_0x56dd2e['result']['message']);}})[_0xd99c('0x14')](function(_0x46969d){logger['error']('CmHopperBlack,\x20%s,\x20%s',_0x351397,_0x46969d);_0x56c8b8(_0x46969d);});});}exports[_0xd99c('0x15')]=function(_0x3f0e60){var _0x140e34=this;return new Promise(function(_0x32b3a1,_0x17da18){return db[_0xd99c('0x16')]['findAll']({'raw':_0x3f0e60[_0xd99c('0x17')]?_0x3f0e60[_0xd99c('0x17')][_0xd99c('0x18')]===undefined?!![]:![]:!![],'where':_0x3f0e60[_0xd99c('0x17')]?_0x3f0e60['options']['where']||null:null,'attributes':_0x3f0e60[_0xd99c('0x17')]?_0x3f0e60[_0xd99c('0x17')][_0xd99c('0x19')]||null:null,'limit':_0x3f0e60['options']?_0x3f0e60['options'][_0xd99c('0x1a')]||null:null,'include':_0x3f0e60[_0xd99c('0x17')]?_0x3f0e60[_0xd99c('0x17')][_0xd99c('0x1b')]?_[_0xd99c('0x1c')](_0x3f0e60[_0xd99c('0x17')][_0xd99c('0x1b')],function(_0x12ace2){return{'model':db[_0x12ace2[_0xd99c('0x1d')]],'as':_0x12ace2['as'],'attributes':_0x12ace2[_0xd99c('0x19')],'include':_0x12ace2['include']?_[_0xd99c('0x1c')](_0x12ace2['include'],function(_0x33ff83){return{'model':db[_0x33ff83[_0xd99c('0x1d')]],'as':_0x33ff83['as'],'attributes':_0x33ff83[_0xd99c('0x19')],'include':_0x33ff83[_0xd99c('0x1b')]?_[_0xd99c('0x1c')](_0x33ff83[_0xd99c('0x1b')],function(_0x3b7e1b){return{'model':db[_0x3b7e1b[_0xd99c('0x1d')]],'as':_0x3b7e1b['as'],'attributes':_0x3b7e1b[_0xd99c('0x19')]};}):[]};}):[]};}):[]:[]})[_0xd99c('0x1e')](function(_0x2311ae){logger[_0xd99c('0xc')](_0xd99c('0x15'),_0x3f0e60);logger[_0xd99c('0xe')](_0xd99c('0x15'),_0x3f0e60,JSON['stringify'](_0x2311ae));_0x32b3a1(_0x2311ae);})[_0xd99c('0x14')](function(_0x380311){logger[_0xd99c('0x10')](_0xd99c('0x15'),_0x380311[_0xd99c('0x12')],_0x3f0e60);_0x17da18(_0x140e34[_0xd99c('0x10')](0x1f4,_0x380311[_0xd99c('0x12')]));});});};exports['UpdateCmHopperBlack']=function(_0x203784){var _0x36f171=this;return new Promise(function(_0x20a2da,_0x256742){return db['CmHopperBlack'][_0xd99c('0x1f')](_0x203784[_0xd99c('0x20')],{'raw':_0x203784[_0xd99c('0x17')]?_0x203784[_0xd99c('0x17')][_0xd99c('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x203784[_0xd99c('0x17')]?_0x203784['options'][_0xd99c('0x21')]||null:null,'attributes':_0x203784[_0xd99c('0x17')]?_0x203784['options']['attributes']||null:null,'limit':_0x203784[_0xd99c('0x17')]?_0x203784[_0xd99c('0x17')][_0xd99c('0x1a')]||null:null})[_0xd99c('0x1e')](function(_0x25b68a){logger[_0xd99c('0xc')](_0xd99c('0x22'),_0x203784);logger[_0xd99c('0xe')]('UpdateCmHopperBlack',_0x203784,JSON[_0xd99c('0x23')](_0x25b68a));_0x20a2da(_0x25b68a);})[_0xd99c('0x14')](function(_0x5618c2){logger[_0xd99c('0x10')](_0xd99c('0x22'),_0x5618c2['message'],_0x203784);_0x256742(_0x36f171[_0xd99c('0x10')](0x1f4,_0x5618c2[_0xd99c('0x12')]));});});};exports['DestroyCmHopperBlack']=function(_0x260280){var _0x21903c=this;return new Promise(function(_0x17b0fd,_0x3e5b51){return db['CmHopperBlack'][_0xd99c('0x24')]({'where':_0x260280['options']?_0x260280[_0xd99c('0x17')][_0xd99c('0x21')]||null:null})[_0xd99c('0x1e')](function(_0x4827f3){logger[_0xd99c('0xc')](_0xd99c('0x25'),_0x260280);logger[_0xd99c('0xe')](_0xd99c('0x25'),_0x260280,JSON[_0xd99c('0x23')](_0x4827f3));_0x17b0fd(_0x4827f3);})[_0xd99c('0x14')](function(_0x26728f){logger['error'](_0xd99c('0x25'),_0x26728f[_0xd99c('0x12')],_0x260280);_0x3e5b51(_0x21903c[_0xd99c('0x10')](0x1f4,_0x26728f[_0xd99c('0x12')]));});});};
\ No newline at end of file
+var _0xf82b=['DestroyCmHopperBlack','destroy','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','code','message','GetCmHopperBlack','CmHopperBlack','options','raw','limit','map','include','model','attributes','catch','UpdateCmHopperBlack','update','body','where'];(function(_0x238a9c,_0x479618){var _0x3b2e00=function(_0x240498){while(--_0x240498){_0x238a9c['push'](_0x238a9c['shift']());}};_0x3b2e00(++_0x479618);}(_0xf82b,0x17e));var _0xbf82=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xf82b[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0xbf82('0x0'));var util=require(_0xbf82('0x1'));var moment=require(_0xbf82('0x2'));var BPromise=require(_0xbf82('0x3'));var rs=require(_0xbf82('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbf82('0x5'))['db'];var utils=require(_0xbf82('0x6'));var logger=require('../../config/logger')(_0xbf82('0x7'));var config=require('../../config/environment');var jayson=require(_0xbf82('0x8'));var client=jayson[_0xbf82('0x9')][_0xbf82('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5436f1,_0x2f367b,_0x370310){return new BPromise(function(_0x2899fd,_0x86237b){return client[_0xbf82('0xb')](_0x5436f1,_0x370310)[_0xbf82('0xc')](function(_0x470602){logger[_0xbf82('0xd')](_0xbf82('0xe'),_0x2f367b,_0xbf82('0xf'));logger[_0xbf82('0x10')](_0xbf82('0x11'),_0x2f367b,_0xbf82('0xf'),JSON[_0xbf82('0x12')](_0x470602));if(_0x470602[_0xbf82('0x13')]){if(_0x470602[_0xbf82('0x13')][_0xbf82('0x14')]===0x1f4){logger[_0xbf82('0x13')](_0xbf82('0xe'),_0x2f367b,_0x470602[_0xbf82('0x13')][_0xbf82('0x15')]);return _0x86237b(_0x470602[_0xbf82('0x13')][_0xbf82('0x15')]);}logger[_0xbf82('0x13')](_0xbf82('0xe'),_0x2f367b,_0x470602['error'][_0xbf82('0x15')]);return _0x2899fd(_0x470602['error']['message']);}else{logger[_0xbf82('0xd')](_0xbf82('0xe'),_0x2f367b,'request\x20sent');_0x2899fd(_0x470602['result']['message']);}})['catch'](function(_0x596dad){logger[_0xbf82('0x13')]('CmHopperBlack,\x20%s,\x20%s',_0x2f367b,_0x596dad);_0x86237b(_0x596dad);});});}exports[_0xbf82('0x16')]=function(_0x33900a){var _0x37d674=this;return new Promise(function(_0x2de2e9,_0x4e543a){return db[_0xbf82('0x17')]['findAll']({'raw':_0x33900a[_0xbf82('0x18')]?_0x33900a['options'][_0xbf82('0x19')]===undefined?!![]:![]:!![],'where':_0x33900a[_0xbf82('0x18')]?_0x33900a[_0xbf82('0x18')]['where']||null:null,'attributes':_0x33900a['options']?_0x33900a[_0xbf82('0x18')]['attributes']||null:null,'limit':_0x33900a['options']?_0x33900a[_0xbf82('0x18')][_0xbf82('0x1a')]||null:null,'include':_0x33900a[_0xbf82('0x18')]?_0x33900a[_0xbf82('0x18')]['include']?_[_0xbf82('0x1b')](_0x33900a['options'][_0xbf82('0x1c')],function(_0x318fcc){return{'model':db[_0x318fcc[_0xbf82('0x1d')]],'as':_0x318fcc['as'],'attributes':_0x318fcc[_0xbf82('0x1e')],'include':_0x318fcc[_0xbf82('0x1c')]?_[_0xbf82('0x1b')](_0x318fcc['include'],function(_0x17968e){return{'model':db[_0x17968e[_0xbf82('0x1d')]],'as':_0x17968e['as'],'attributes':_0x17968e[_0xbf82('0x1e')],'include':_0x17968e[_0xbf82('0x1c')]?_[_0xbf82('0x1b')](_0x17968e['include'],function(_0x158f88){return{'model':db[_0x158f88['model']],'as':_0x158f88['as'],'attributes':_0x158f88[_0xbf82('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xbf82('0xc')](function(_0x3b151a){logger['info']('GetCmHopperBlack',_0x33900a);logger[_0xbf82('0x10')](_0xbf82('0x16'),_0x33900a,JSON[_0xbf82('0x12')](_0x3b151a));_0x2de2e9(_0x3b151a);})[_0xbf82('0x1f')](function(_0x57041f){logger[_0xbf82('0x13')]('GetCmHopperBlack',_0x57041f['message'],_0x33900a);_0x4e543a(_0x37d674['error'](0x1f4,_0x57041f[_0xbf82('0x15')]));});});};exports[_0xbf82('0x20')]=function(_0x147b02){var _0x21280e=this;return new Promise(function(_0x44e844,_0x35b014){return db[_0xbf82('0x17')][_0xbf82('0x21')](_0x147b02[_0xbf82('0x22')],{'raw':_0x147b02[_0xbf82('0x18')]?_0x147b02[_0xbf82('0x18')][_0xbf82('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x147b02[_0xbf82('0x18')]?_0x147b02['options'][_0xbf82('0x23')]||null:null,'attributes':_0x147b02[_0xbf82('0x18')]?_0x147b02[_0xbf82('0x18')][_0xbf82('0x1e')]||null:null,'limit':_0x147b02['options']?_0x147b02[_0xbf82('0x18')][_0xbf82('0x1a')]||null:null})[_0xbf82('0xc')](function(_0xd7d39a){logger[_0xbf82('0xd')]('UpdateCmHopperBlack',_0x147b02);logger[_0xbf82('0x10')]('UpdateCmHopperBlack',_0x147b02,JSON[_0xbf82('0x12')](_0xd7d39a));_0x44e844(_0xd7d39a);})['catch'](function(_0x3ca0af){logger[_0xbf82('0x13')](_0xbf82('0x20'),_0x3ca0af[_0xbf82('0x15')],_0x147b02);_0x35b014(_0x21280e[_0xbf82('0x13')](0x1f4,_0x3ca0af[_0xbf82('0x15')]));});});};exports[_0xbf82('0x24')]=function(_0x210df2){var _0x1bc03e=this;return new Promise(function(_0x22eab6,_0x54f0c0){return db[_0xbf82('0x17')][_0xbf82('0x25')]({'where':_0x210df2[_0xbf82('0x18')]?_0x210df2[_0xbf82('0x18')][_0xbf82('0x23')]||null:null})[_0xbf82('0xc')](function(_0x4c9e2e){logger['info'](_0xbf82('0x24'),_0x210df2);logger[_0xbf82('0x10')](_0xbf82('0x24'),_0x210df2,JSON[_0xbf82('0x12')](_0x4c9e2e));_0x22eab6(_0x4c9e2e);})[_0xbf82('0x1f')](function(_0x10277e){logger[_0xbf82('0x13')](_0xbf82('0x24'),_0x10277e[_0xbf82('0x15')],_0x210df2);_0x54f0c0(_0x1bc03e['error'](0x1f4,_0x10277e[_0xbf82('0x15')]));});});};
\ No newline at end of file
index 0ca4c7a..8c807c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7046=['exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./cmHopperBlack.controller','get','isAuthenticated','index','/describe','show','put','/:id','update','delete'];(function(_0x1cfa25,_0x222704){var _0x560905=function(_0x2c4ccb){while(--_0x2c4ccb){_0x1cfa25['push'](_0x1cfa25['shift']());}};_0x560905(++_0x222704);}(_0x7046,0x144));var _0x6704=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x7046[_0x46e363];return _0x3fb059;};'use strict';var multer=require(_0x6704('0x0'));var util=require(_0x6704('0x1'));var path=require(_0x6704('0x2'));var timeout=require(_0x6704('0x3'));var express=require('express');var router=express[_0x6704('0x4')]();var fs_extra=require(_0x6704('0x5'));var auth=require(_0x6704('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6704('0x7'));var controller=require(_0x6704('0x8'));router[_0x6704('0x9')]('/',auth[_0x6704('0xa')](),controller[_0x6704('0xb')]);router['get'](_0x6704('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0x6704('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x6704('0xd')]);router[_0x6704('0xe')](_0x6704('0xf'),auth[_0x6704('0xa')](),controller[_0x6704('0x10')]);router[_0x6704('0x11')](_0x6704('0xf'),auth[_0x6704('0xa')](),controller['destroy']);module[_0x6704('0x12')]=router;
\ No newline at end of file
+var _0x4975=['../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','index','/describe','isAuthenticated','describe','/:id','show','put','update','delete','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x1b70e3,_0x3a15b1){var _0x1452ab=function(_0x692883){while(--_0x692883){_0x1b70e3['push'](_0x1b70e3['shift']());}};_0x1452ab(++_0x3a15b1);}(_0x4975,0x86));var _0x5497=function(_0x3281b8,_0x590382){_0x3281b8=_0x3281b8-0x0;var _0x55f562=_0x4975[_0x3281b8];return _0x55f562;};'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')](_0x5497('0xf'),auth[_0x5497('0xd')](),controller[_0x5497('0x12')]);router[_0x5497('0x13')](_0x5497('0xf'),auth[_0x5497('0xd')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 9c1ee87..6045423 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82fb=['DATE','INTEGER','getDataValue','endtime','setDataValue','followuptime','BOOLEAN','sequelize','STRING'];(function(_0x212dad,_0xb862ef){var _0x4fea3f=function(_0x31664b){while(--_0x31664b){_0x212dad['push'](_0x212dad['shift']());}};_0x4fea3f(++_0xb862ef);}(_0x82fb,0x142));var _0xb82f=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x82fb[_0x17d9e3];return _0x14192d;};'use strict';var Sequelize=require(_0xb82f('0x0'));var moment=require('moment');module['exports']={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0xb82f('0x1')]},'scheduledat':{'type':Sequelize[_0xb82f('0x2')]},'countbusyretry':{'type':Sequelize[_0xb82f('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xb82f('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xb82f('0x3')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xb82f('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xb82f('0x1')]},'originatecalleridnum':{'type':Sequelize[_0xb82f('0x1')]},'originatecalleridname':{'type':Sequelize[_0xb82f('0x1')]},'calleridnum':{'type':Sequelize[_0xb82f('0x1')]},'calleridname':{'type':Sequelize[_0xb82f('0x1')]},'starttime':{'type':Sequelize[_0xb82f('0x2')]},'responsetime':{'type':Sequelize[_0xb82f('0x2')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize[_0xb82f('0x2')]},'endtime':{'type':Sequelize[_0xb82f('0x2')]},'ringtime':{'type':Sequelize[_0xb82f('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xb82f('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xb82f('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xb82f('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xb82f('0x1')]},'campaign':{'type':Sequelize[_0xb82f('0x1')]},'campaigntype':{'type':Sequelize[_0xb82f('0x1')]},'membername':{'type':Sequelize[_0xb82f('0x1')]},'reason':{'type':Sequelize[_0xb82f('0x1')]},'disposition':{'type':Sequelize[_0xb82f('0x1')]},'secondDisposition':{'type':Sequelize[_0xb82f('0x1')]},'thirdDisposition':{'type':Sequelize[_0xb82f('0x1')]},'dispositionat':{'type':Sequelize['DATE'],'set':function(_0x213591){var _0x36b48a=this[_0xb82f('0x4')](_0xb82f('0x5'));if(_0x36b48a&&_0x213591){this[_0xb82f('0x6')](_0xb82f('0x7'),moment(_0x213591)['diff'](moment(_0x36b48a),'seconds'));}}},'amd':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fax':{'type':Sequelize[_0xb82f('0x8')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0xb82f('0x8')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0xb82f('0x8')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0xb82f('0x2')]},'callback':{'type':Sequelize[_0xb82f('0x8')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xb82f('0x1')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'deleted':{'type':Sequelize[_0xb82f('0x1')],'defaultValue':null},'deletedat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize[_0xb82f('0x8')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xb82f('0x2')]},'countnosuchnumberretry':{'type':Sequelize[_0xb82f('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xb82f('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xb82f('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xb82f('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x0e70=['followuptime','diff','seconds','BOOLEAN','sequelize','moment','exports','INTEGER','STRING','DATE','endtime','setDataValue'];(function(_0x183b25,_0x172a06){var _0x1d6091=function(_0x2a79fa){while(--_0x2a79fa){_0x183b25['push'](_0x183b25['shift']());}};_0x1d6091(++_0x172a06);}(_0x0e70,0x1a8));var _0x00e7=function(_0xb33245,_0x2e517f){_0xb33245=_0xb33245-0x0;var _0x5d85a3=_0x0e70[_0xb33245];return _0x5d85a3;};'use strict';var Sequelize=require(_0x00e7('0x0'));var moment=require(_0x00e7('0x1'));module[_0x00e7('0x2')]={'state':{'type':Sequelize[_0x00e7('0x3')](0x2)},'statedesc':{'type':Sequelize[_0x00e7('0x4')]},'scheduledat':{'type':Sequelize[_0x00e7('0x5')]},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x00e7('0x3')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x00e7('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0x00e7('0x4')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x00e7('0x4')]},'calleridname':{'type':Sequelize[_0x00e7('0x4')]},'starttime':{'type':Sequelize[_0x00e7('0x5')]},'responsetime':{'type':Sequelize[_0x00e7('0x5')]},'answertime':{'type':Sequelize[_0x00e7('0x5')]},'droptime':{'type':Sequelize[_0x00e7('0x5')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x00e7('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x00e7('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x00e7('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize[_0x00e7('0x4')]},'campaigntype':{'type':Sequelize[_0x00e7('0x4')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0x00e7('0x4')]},'disposition':{'type':Sequelize[_0x00e7('0x4')]},'secondDisposition':{'type':Sequelize[_0x00e7('0x4')]},'thirdDisposition':{'type':Sequelize[_0x00e7('0x4')]},'dispositionat':{'type':Sequelize[_0x00e7('0x5')],'set':function(_0x3ae74c){var _0x879265=this['getDataValue'](_0x00e7('0x6'));if(_0x879265&&_0x3ae74c){this[_0x00e7('0x7')](_0x00e7('0x8'),moment(_0x3ae74c)[_0x00e7('0x9')](moment(_0x879265),_0x00e7('0xa')));}}},'amd':{'type':Sequelize[_0x00e7('0xb')],'defaultValue':![]},'fax':{'type':Sequelize[_0x00e7('0xb')],'defaultValue':![]},'blacklist':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x00e7('0xb')],'defaultValue':![]},'rescheduledat':{'type':Sequelize['DATE']},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0x00e7('0x5')]},'deleted':{'type':Sequelize[_0x00e7('0x4')],'defaultValue':null},'deletedat':{'type':Sequelize[_0x00e7('0x5')]},'recallme':{'type':Sequelize[_0x00e7('0xb')],'defaultValue':![]},'agiafterat':{'type':Sequelize['DATE']},'countnosuchnumberretry':{'type':Sequelize[_0x00e7('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x00e7('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x00e7('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x00e7('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index c6f95b2..b31be91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['calleridnum\x20NOT\x20IN\x20(?)','calleridnum','Campaign','CampaignId','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','state\x20=\x204','group','checkContactHopper','findOne','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','CmHopperFinal','fieldName','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','includeAll','include','findAll','rows','show','params','length','merge','options','find','catch','uniqueid','body','countContactsQueueCampaignHopperFinal','COUNT','sequelize','`state`\x20=\x200,\x201,\x20null','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','literal','busyContacts','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2011\x20,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','dropContacts','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','moveContactsQueueCampaignHopperFinal','insert','into','cm_hopper','ContactId','ListId','VoiceQueueId','createdAt','select','field','ANY_VALUE(calleridnum)','phone','NOW()','scheduledAt','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','updatedAt','from','cm_hopper_final','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','calleridnum\x20IS\x20NOT\x20NULL'];(function(_0x6a4282,_0x5ad880){var _0x542f16=function(_0x7b22d5){while(--_0x7b22d5){_0x6a4282['push'](_0x6a4282['shift']());}};_0x542f16(++_0x5ad880);}(_0x7a54,0x106));var _0x47a5=function(_0x542227,_0x187d4e){_0x542227=_0x542227-0x0;var _0x4168f0=_0x7a54[_0x542227];return _0x4168f0;};'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['CmHopperFinal'][_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['CmHopperFinal']['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['describe']=function(_0x2d38de,_0x23bb04){return db['CmHopperFinal']['describe']()[_0x47a5('0x23')](respondWithResult(_0x23bb04,null))['catch'](handleError(_0x23bb04,null));};exports[_0x47a5('0x22')]=function(_0xd93e37,_0x54c35f){if(_0xd93e37['body'][_0x47a5('0x47')]){delete _0xd93e37['body'][_0x47a5('0x47')];}return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'uniqueid':_0xd93e37[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x54c35f,null))[_0x47a5('0x23')](saveUpdates(_0xd93e37[_0x47a5('0x48')],null))['then'](respondWithResult(_0x54c35f,null))['catch'](handleError(_0x54c35f,null));};exports[_0x47a5('0x49')]=function(_0x411230,_0x1163e3,_0x9ea93e){return db[_0x47a5('0x2a')][_0x47a5('0x3e')]({'raw':![],'where':{'VoiceQueueId':_0x411230[_0x47a5('0x41')]['id']},'attributes':[[db['sequelize']['fn'](_0x47a5('0x4a'),db[_0x47a5('0x4b')]['fn']('IF',db[_0x47a5('0x4b')]['literal'](_0x47a5('0x4c')))),'noSuchContacts'],[db[_0x47a5('0x4b')]['fn'](_0x47a5('0x4a'),db[_0x47a5('0x4b')]['fn']('IF',db[_0x47a5('0x4b')]['literal'](_0x47a5('0x4d')))),_0x47a5('0x4e')],[db[_0x47a5('0x4b')]['fn'](_0x47a5('0x4a'),db[_0x47a5('0x4b')]['fn']('IF',db[_0x47a5('0x4b')][_0x47a5('0x4f')]('`state`\x20=\x205,\x201,\x20null'))),_0x47a5('0x50')],[db[_0x47a5('0x4b')]['fn'](_0x47a5('0x4a'),db[_0x47a5('0x4b')]['fn']('IF',db[_0x47a5('0x4b')][_0x47a5('0x4f')]('`state`\x20=\x208,\x201,\x20null'))),_0x47a5('0x51')],[db[_0x47a5('0x4b')]['fn'](_0x47a5('0x4a'),db['sequelize']['fn']('IF',db[_0x47a5('0x4b')][_0x47a5('0x4f')](_0x47a5('0x52')))),'dropContacts'],[db['sequelize']['fn'](_0x47a5('0x4a'),db[_0x47a5('0x4b')]['fn']('IF',db['sequelize']['literal'](_0x47a5('0x53')))),'abandonedContacts'],[db[_0x47a5('0x4b')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x47a5('0x4b')][_0x47a5('0x4f')]('`state`\x20=\x2022,\x201,\x20null'))),_0x47a5('0x54')],[db[_0x47a5('0x4b')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x47a5('0x4b')][_0x47a5('0x4f')](_0x47a5('0x55')))),_0x47a5('0x56')]]})['then'](handleEntityNotFound(_0x1163e3,null))[_0x47a5('0x23')](respondWithResult(_0x1163e3,null))[_0x47a5('0x46')](handleError(_0x1163e3,null));};exports[_0x47a5('0x57')]=function(_0x5a33b8,_0x30ea7a,_0x4db625){return db[_0x47a5('0x2a')][_0x47a5('0x3e')]({'raw':![],'where':{'CampaignId':_0x5a33b8[_0x47a5('0x41')]['id']},'attributes':[[db[_0x47a5('0x4b')]['fn'](_0x47a5('0x4a'),db['sequelize']['fn']('IF',db[_0x47a5('0x4b')]['literal']('`state`\x20=\x200,\x201,\x20null'))),'noSuchContacts'],[db['sequelize']['fn'](_0x47a5('0x4a'),db[_0x47a5('0x4b')]['fn']('IF',db[_0x47a5('0x4b')]['literal']('`state`\x20=\x203,\x201,\x20null'))),_0x47a5('0x4e')],[db[_0x47a5('0x4b')]['fn'](_0x47a5('0x4a'),db[_0x47a5('0x4b')]['fn']('IF',db[_0x47a5('0x4b')]['literal'](_0x47a5('0x58')))),'busyContacts'],[db[_0x47a5('0x4b')]['fn'](_0x47a5('0x4a'),db['sequelize']['fn']('IF',db[_0x47a5('0x4b')][_0x47a5('0x4f')](_0x47a5('0x59')))),_0x47a5('0x51')],[db[_0x47a5('0x4b')]['fn'](_0x47a5('0x4a'),db[_0x47a5('0x4b')]['fn']('IF',db[_0x47a5('0x4b')]['literal'](_0x47a5('0x52')))),_0x47a5('0x5a')],[db[_0x47a5('0x4b')]['fn'](_0x47a5('0x4a'),db[_0x47a5('0x4b')]['fn']('IF',db['sequelize'][_0x47a5('0x4f')](_0x47a5('0x53')))),_0x47a5('0x5b')],[db[_0x47a5('0x4b')]['fn'](_0x47a5('0x4a'),db[_0x47a5('0x4b')]['fn']('IF',db[_0x47a5('0x4b')][_0x47a5('0x4f')](_0x47a5('0x5c')))),_0x47a5('0x54')],[db[_0x47a5('0x4b')]['fn'](_0x47a5('0x4a'),db[_0x47a5('0x4b')]['fn']('IF',db[_0x47a5('0x4b')][_0x47a5('0x4f')]('`state`\x20=\x2019,\x201,\x20null'))),_0x47a5('0x56')]]})[_0x47a5('0x23')](handleEntityNotFound(_0x30ea7a,null))[_0x47a5('0x23')](respondWithResult(_0x30ea7a,null))['catch'](handleError(_0x30ea7a,null));};exports[_0x47a5('0x5d')]=function(_0x2e46af,_0x36c67,_0x26f1ac){return db['VoiceQueue'][_0x47a5('0x45')]({'where':{'id':_0x2e46af['params']['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x36c67,null))['then'](function(_0x43f649){var _0x4cf7c5;if(_0x43f649){_0x4cf7c5=squel[_0x47a5('0x5e')]()[_0x47a5('0x5f')](_0x47a5('0x60'))['fromQuery'](['phone','scheduledAt',_0x47a5('0x61'),_0x47a5('0x62'),_0x47a5('0x63'),_0x47a5('0x64'),'updatedAt'],squel[_0x47a5('0x65')]()[_0x47a5('0x66')](_0x47a5('0x67'),_0x47a5('0x68'))[_0x47a5('0x66')](_0x47a5('0x69'),_0x47a5('0x6a'))[_0x47a5('0x66')](_0x47a5('0x6b'),_0x47a5('0x61'))[_0x47a5('0x66')](_0x47a5('0x6c'),'ListId')[_0x47a5('0x66')]('ANY_VALUE(VoiceQueueId)',_0x47a5('0x63'))[_0x47a5('0x66')](_0x47a5('0x69'),_0x47a5('0x64'))[_0x47a5('0x66')](_0x47a5('0x69'),_0x47a5('0x6d'))[_0x47a5('0x6e')](_0x47a5('0x6f'))[_0x47a5('0x38')](_0x47a5('0x70'),_0x2e46af[_0x47a5('0x41')]['id'][_0x47a5('0x71')]())[_0x47a5('0x38')](_0x47a5('0x72'),_0x2e46af['body']['state']['toString']())['where'](_0x47a5('0x73'))[_0x47a5('0x38')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x47a5('0x65')]()[_0x47a5('0x66')](_0x47a5('0x68'))[_0x47a5('0x6e')](_0x47a5('0x60'))[_0x47a5('0x38')](_0x47a5('0x70'),_0x2e46af[_0x47a5('0x41')]['id'][_0x47a5('0x71')]()))[_0x47a5('0x38')](_0x47a5('0x74'),squel['select']()[_0x47a5('0x66')](_0x47a5('0x75'))[_0x47a5('0x6e')]('cm_hopper_final')[_0x47a5('0x38')](_0x47a5('0x70'),_0x2e46af[_0x47a5('0x41')]['id']['toString']())[_0x47a5('0x38')]('state\x20=\x204'))['group'](_0x47a5('0x61')))[_0x47a5('0x71')]();return db[_0x47a5('0x4b')][_0x47a5('0x2f')](_0x4cf7c5);}return[];})[_0x47a5('0x23')](respondWithResult(_0x36c67,null))[_0x47a5('0x46')](handleError(_0x36c67,null));};exports['moveContactsIvrCampaignHopperFinal']=function(_0x592322,_0x3e0dbd,_0x4f2361){return db[_0x47a5('0x76')][_0x47a5('0x45')]({'where':{'id':_0x592322[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x3e0dbd,null))['then'](function(_0x3c66e3){var _0x550bde;if(_0x3c66e3){_0x550bde=squel['insert']()[_0x47a5('0x5f')](_0x47a5('0x60'))['fromQuery']([_0x47a5('0x68'),_0x47a5('0x6a'),_0x47a5('0x61'),'ListId',_0x47a5('0x77'),'createdAt',_0x47a5('0x6d')],squel[_0x47a5('0x65')]()[_0x47a5('0x66')]('ANY_VALUE(calleridnum)',_0x47a5('0x68'))[_0x47a5('0x66')](_0x47a5('0x69'),'scheduledAt')[_0x47a5('0x66')]('ANY_VALUE(ContactId)',_0x47a5('0x61'))['field'](_0x47a5('0x6c'),_0x47a5('0x62'))[_0x47a5('0x66')](_0x47a5('0x78'),'CampaignId')[_0x47a5('0x66')](_0x47a5('0x69'),_0x47a5('0x64'))[_0x47a5('0x66')](_0x47a5('0x69'),'updatedAt')['from'](_0x47a5('0x6f'))['where'](_0x47a5('0x79'),_0x592322[_0x47a5('0x41')]['id'][_0x47a5('0x71')]())['where'](_0x47a5('0x72'),_0x592322[_0x47a5('0x48')]['state'][_0x47a5('0x71')]())[_0x47a5('0x38')](_0x47a5('0x73'))[_0x47a5('0x38')]('calleridnum\x20NOT\x20IN\x20(?)',squel['select']()[_0x47a5('0x66')](_0x47a5('0x68'))['from'](_0x47a5('0x60'))[_0x47a5('0x38')]('CampaignId\x20=\x20?',_0x592322[_0x47a5('0x41')]['id'][_0x47a5('0x71')]()))[_0x47a5('0x38')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x47a5('0x65')]()['field'](_0x47a5('0x75'))['from'](_0x47a5('0x6f'))[_0x47a5('0x38')]('CampaignId\x20=\x20?',_0x592322[_0x47a5('0x41')]['id']['toString']())[_0x47a5('0x38')](_0x47a5('0x7a')))[_0x47a5('0x7b')](_0x47a5('0x61')))['toString']();return db[_0x47a5('0x4b')]['query'](_0x550bde);}return[];})['then'](respondWithResult(_0x3e0dbd,null))[_0x47a5('0x46')](handleError(_0x3e0dbd,null));};exports[_0x47a5('0x7c')]=function(_0x352238,_0x96fb22,_0x380c8b){return db['CmHopper'][_0x47a5('0x7d')]({'where':{'VoiceQueueId':_0x352238[_0x47a5('0x48')][_0x47a5('0x63')],'CampaignId':_0x352238[_0x47a5('0x48')]['CampaignId'],'ContactId':_0x352238[_0x47a5('0x48')]['ContactId']}})[_0x47a5('0x23')](handleEntityNotFound(_0x96fb22,null))[_0x47a5('0x23')](function(_0x3f93f0){if(_0x3f93f0){return _0x3f93f0;}return null;})[_0x47a5('0x23')](respondWithResult(_0x96fb22,null))[_0x47a5('0x46')](handleError(_0x96fb22,null));};
\ No newline at end of file
+var _0xc4aa=['ContactId','ListId','ANY_VALUE(VoiceQueueId)','NOW()','createdAt','from','cm_hopper_final','toString','state\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','select','cm_hopper','VoiceQueueId\x20=\x20?','calleridnum','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','phone','CampaignId','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','checkContactHopper','CmHopper','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','map','CmHopperFinal','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','keys','rawAttributes','describe','uniqueid','find','body','countContactsQueueCampaignHopperFinal','findAll','sequelize','COUNT','`state`\x20=\x200,\x201,\x20null','noSuchContacts','literal','noAnswerContacts','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','countContactsIvrCampaignHopperFinal','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x205,\x201,\x20null','answeringMachine','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','into','fromQuery','scheduledAt','VoiceQueueId','updatedAt','field','ANY_VALUE(calleridnum)'];(function(_0x33539a,_0xab9aa5){var _0x1a99a7=function(_0x3e95db){while(--_0x3e95db){_0x33539a['push'](_0x33539a['shift']());}};_0x1a99a7(++_0xab9aa5);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x346737,_0x3e6081){_0x346737=_0x346737-0x0;var _0x1ade2e=_0xc4aa[_0x346737];return _0x1ade2e;};'use strict';var emlformat=require(_0xac4a('0x0'));var rimraf=require(_0xac4a('0x1'));var zipdir=require(_0xac4a('0x2'));var jsonpatch=require(_0xac4a('0x3'));var rp=require(_0xac4a('0x4'));var moment=require(_0xac4a('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xac4a('0x6'));var sox=require(_0xac4a('0x7'));var csv=require(_0xac4a('0x8'));var ejs=require(_0xac4a('0x9'));var fs=require('fs');var fs_extra=require(_0xac4a('0xa'));var _=require(_0xac4a('0xb'));var squel=require(_0xac4a('0xc'));var crypto=require(_0xac4a('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xac4a('0x8'));var querystring=require(_0xac4a('0xe'));var Papa=require(_0xac4a('0xf'));var Redis=require('ioredis');var authService=require(_0xac4a('0x10'));var qs=require(_0xac4a('0x11'));var as=require(_0xac4a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xac4a('0x13'))('api');var utils=require(_0xac4a('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xac4a('0x15'));var db=require(_0xac4a('0x16'))['db'];function respondWithStatusCode(_0x24291d,_0x5e16aa){_0x5e16aa=_0x5e16aa||0xcc;return function(_0x21a79){if(_0x21a79){return _0x24291d[_0xac4a('0x17')](_0x5e16aa);}return _0x24291d[_0xac4a('0x18')](_0x5e16aa)[_0xac4a('0x19')]();};}function respondWithResult(_0x1b4313,_0x3b71c0){_0x3b71c0=_0x3b71c0||0xc8;return function(_0x34bc01){if(_0x34bc01){return _0x1b4313[_0xac4a('0x18')](_0x3b71c0)[_0xac4a('0x1a')](_0x34bc01);}};}function respondWithFilteredResult(_0x42c7fc,_0x11e101){return function(_0x26dbb8){if(_0x26dbb8){var _0x4a2119=typeof _0x11e101[_0xac4a('0x1b')]===_0xac4a('0x1c')&&typeof _0x11e101[_0xac4a('0x1d')]===_0xac4a('0x1c');var _0x3e88e3=_0x26dbb8[_0xac4a('0x1e')];var _0x28e304=_0x4a2119?0x0:_0x11e101[_0xac4a('0x1b')];var _0x546c5d=_0x4a2119?_0x26dbb8['count']:_0x11e101[_0xac4a('0x1b')]+_0x11e101[_0xac4a('0x1d')];var _0x39b691;if(_0x546c5d>=_0x3e88e3){_0x546c5d=_0x3e88e3;_0x39b691=0xc8;}else{_0x39b691=0xce;}_0x42c7fc['status'](_0x39b691);return _0x42c7fc[_0xac4a('0x1f')](_0xac4a('0x20'),_0x28e304+'-'+_0x546c5d+'/'+_0x3e88e3)[_0xac4a('0x1a')](_0x26dbb8);}return null;};}function patchUpdates(_0x3a3cdb){return function(_0x123694){try{jsonpatch[_0xac4a('0x21')](_0x123694,_0x3a3cdb,!![]);}catch(_0xe38996){return BPromise[_0xac4a('0x22')](_0xe38996);}return _0x123694['save']();};}function saveUpdates(_0x3d8f0a,_0x3204ad){return function(_0x599787){if(_0x599787){return _0x599787[_0xac4a('0x23')](_0x3d8f0a)[_0xac4a('0x24')](function(_0x3eacd3){return _0x3eacd3;});}return null;};}function removeEntity(_0x947d8e,_0x4d2d6c){return function(_0x1b7998){if(_0x1b7998){return _0x1b7998[_0xac4a('0x25')]()[_0xac4a('0x24')](function(){_0x947d8e[_0xac4a('0x18')](0xcc)[_0xac4a('0x19')]();});}};}function handleEntityNotFound(_0x2b0dc2,_0x222507){return function(_0x36054a){if(!_0x36054a){_0x2b0dc2[_0xac4a('0x17')](0x194);}return _0x36054a;};}function handleError(_0x3bc318,_0x1d0539){_0x1d0539=_0x1d0539||0x1f4;return function(_0x215a31){logger[_0xac4a('0x26')](_0x215a31[_0xac4a('0x27')]);if(_0x215a31[_0xac4a('0x28')]){delete _0x215a31[_0xac4a('0x28')];}_0x3bc318['status'](_0x1d0539)[_0xac4a('0x29')](_0x215a31);};}exports[_0xac4a('0x2a')]=function(_0x42a33c,_0x2772fe){var _0x116700={},_0x4a5a9e={},_0x47f49c={'count':0x0,'rows':[]};var _0xdb7e=_[_0xac4a('0x2b')](db[_0xac4a('0x2c')]['rawAttributes'],function(_0x4bda1f){return{'name':_0x4bda1f[_0xac4a('0x2d')],'type':_0x4bda1f[_0xac4a('0x2e')][_0xac4a('0x2f')]};});_0x4a5a9e[_0xac4a('0x30')]=_[_0xac4a('0x2b')](_0xdb7e,'name');_0x4a5a9e[_0xac4a('0x31')]=_['keys'](_0x42a33c[_0xac4a('0x31')]);_0x4a5a9e['filters']=_[_0xac4a('0x32')](_0x4a5a9e[_0xac4a('0x30')],_0x4a5a9e[_0xac4a('0x31')]);_0x116700[_0xac4a('0x33')]=_[_0xac4a('0x32')](_0x4a5a9e[_0xac4a('0x30')],qs[_0xac4a('0x34')](_0x42a33c[_0xac4a('0x31')][_0xac4a('0x34')]));_0x116700[_0xac4a('0x33')]=_0x116700[_0xac4a('0x33')][_0xac4a('0x35')]?_0x116700[_0xac4a('0x33')]:_0x4a5a9e[_0xac4a('0x30')];if(!_0x42a33c['query'][_0xac4a('0x36')](_0xac4a('0x37'))){_0x116700['limit']=qs[_0xac4a('0x1d')](_0x42a33c[_0xac4a('0x31')]['limit']);_0x116700['offset']=qs[_0xac4a('0x1b')](_0x42a33c[_0xac4a('0x31')][_0xac4a('0x1b')]);}_0x116700[_0xac4a('0x38')]=qs['sort'](_0x42a33c[_0xac4a('0x31')][_0xac4a('0x39')]);_0x116700['where']=qs[_0xac4a('0x3a')](_[_0xac4a('0x3b')](_0x42a33c[_0xac4a('0x31')],_0x4a5a9e['filters']),_0xdb7e);if(_0x42a33c[_0xac4a('0x31')][_0xac4a('0x3c')]){_0x116700[_0xac4a('0x3d')]=_['merge'](_0x116700[_0xac4a('0x3d')],{'$or':_[_0xac4a('0x2b')](_0xdb7e,function(_0x4b9faf){if(_0x4b9faf['type']!==_0xac4a('0x3e')){var _0x5e0926={};_0x5e0926[_0x4b9faf['name']]={'$like':'%'+_0x42a33c['query']['filter']+'%'};return _0x5e0926;}})});}_0x116700=_[_0xac4a('0x3f')]({},_0x116700,_0x42a33c[_0xac4a('0x40')]);var _0x37834b={'where':_0x116700[_0xac4a('0x3d')]};return db[_0xac4a('0x2c')][_0xac4a('0x1e')](_0x37834b)[_0xac4a('0x24')](function(_0x2b16f0){_0x47f49c[_0xac4a('0x1e')]=_0x2b16f0;if(_0x42a33c[_0xac4a('0x31')][_0xac4a('0x41')]){_0x116700[_0xac4a('0x42')]=[{'all':!![]}];}return db['CmHopperFinal']['findAll'](_0x116700);})['then'](function(_0x1e1cc5){_0x47f49c[_0xac4a('0x43')]=_0x1e1cc5;return _0x47f49c;})[_0xac4a('0x24')](respondWithFilteredResult(_0x2772fe,_0x116700))[_0xac4a('0x44')](handleError(_0x2772fe,null));};exports[_0xac4a('0x45')]=function(_0x411543,_0x8febf0){var _0x3441f2={'raw':!![],'where':{'id':_0x411543[_0xac4a('0x46')]['id']}},_0x3e9973={};_0x3e9973['model']=_[_0xac4a('0x47')](db[_0xac4a('0x2c')][_0xac4a('0x48')]);_0x3e9973[_0xac4a('0x31')]=_[_0xac4a('0x47')](_0x411543['query']);_0x3e9973[_0xac4a('0x3a')]=_[_0xac4a('0x32')](_0x3e9973['model'],_0x3e9973[_0xac4a('0x31')]);_0x3441f2['attributes']=_[_0xac4a('0x32')](_0x3e9973[_0xac4a('0x30')],qs[_0xac4a('0x34')](_0x411543[_0xac4a('0x31')][_0xac4a('0x34')]));_0x3441f2[_0xac4a('0x33')]=_0x3441f2[_0xac4a('0x33')][_0xac4a('0x35')]?_0x3441f2[_0xac4a('0x33')]:_0x3e9973[_0xac4a('0x30')];if(_0x411543[_0xac4a('0x31')][_0xac4a('0x41')]){_0x3441f2['include']=[{'all':!![]}];}_0x3441f2=_[_0xac4a('0x3f')]({},_0x3441f2,_0x411543[_0xac4a('0x40')]);return db[_0xac4a('0x2c')]['find'](_0x3441f2)[_0xac4a('0x24')](handleEntityNotFound(_0x8febf0,null))[_0xac4a('0x24')](respondWithResult(_0x8febf0,null))['catch'](handleError(_0x8febf0,null));};exports[_0xac4a('0x49')]=function(_0x5a7f6e,_0x244950){return db[_0xac4a('0x2c')][_0xac4a('0x49')]()['then'](respondWithResult(_0x244950,null))['catch'](handleError(_0x244950,null));};exports[_0xac4a('0x23')]=function(_0x4aaeff,_0x18ae96){if(_0x4aaeff['body'][_0xac4a('0x4a')]){delete _0x4aaeff['body'][_0xac4a('0x4a')];}return db[_0xac4a('0x2c')][_0xac4a('0x4b')]({'where':{'uniqueid':_0x4aaeff[_0xac4a('0x46')]['id']}})['then'](handleEntityNotFound(_0x18ae96,null))[_0xac4a('0x24')](saveUpdates(_0x4aaeff[_0xac4a('0x4c')],null))[_0xac4a('0x24')](respondWithResult(_0x18ae96,null))[_0xac4a('0x44')](handleError(_0x18ae96,null));};exports[_0xac4a('0x4d')]=function(_0x138876,_0x187306,_0x4e6e19){return db[_0xac4a('0x2c')][_0xac4a('0x4e')]({'raw':![],'where':{'VoiceQueueId':_0x138876['params']['id']},'attributes':[[db[_0xac4a('0x4f')]['fn'](_0xac4a('0x50'),db[_0xac4a('0x4f')]['fn']('IF',db[_0xac4a('0x4f')]['literal'](_0xac4a('0x51')))),_0xac4a('0x52')],[db[_0xac4a('0x4f')]['fn'](_0xac4a('0x50'),db[_0xac4a('0x4f')]['fn']('IF',db['sequelize'][_0xac4a('0x53')]('`state`\x20=\x203,\x201,\x20null'))),_0xac4a('0x54')],[db[_0xac4a('0x4f')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xac4a('0x4f')][_0xac4a('0x53')]('`state`\x20=\x205,\x201,\x20null'))),_0xac4a('0x55')],[db[_0xac4a('0x4f')]['fn'](_0xac4a('0x50'),db[_0xac4a('0x4f')]['fn']('IF',db['sequelize'][_0xac4a('0x53')](_0xac4a('0x56')))),_0xac4a('0x57')],[db[_0xac4a('0x4f')]['fn'](_0xac4a('0x50'),db[_0xac4a('0x4f')]['fn']('IF',db[_0xac4a('0x4f')]['literal'](_0xac4a('0x58')))),_0xac4a('0x59')],[db[_0xac4a('0x4f')]['fn'](_0xac4a('0x50'),db[_0xac4a('0x4f')]['fn']('IF',db[_0xac4a('0x4f')][_0xac4a('0x53')](_0xac4a('0x5a')))),_0xac4a('0x5b')],[db[_0xac4a('0x4f')]['fn'](_0xac4a('0x50'),db[_0xac4a('0x4f')]['fn']('IF',db[_0xac4a('0x4f')][_0xac4a('0x53')](_0xac4a('0x5c')))),_0xac4a('0x5d')],[db['sequelize']['fn'](_0xac4a('0x50'),db['sequelize']['fn']('IF',db[_0xac4a('0x4f')]['literal'](_0xac4a('0x5e')))),'answeringMachine']]})[_0xac4a('0x24')](handleEntityNotFound(_0x187306,null))['then'](respondWithResult(_0x187306,null))['catch'](handleError(_0x187306,null));};exports[_0xac4a('0x5f')]=function(_0x568ffb,_0x3bcae2,_0x3c2f84){return db[_0xac4a('0x2c')][_0xac4a('0x4e')]({'raw':![],'where':{'CampaignId':_0x568ffb['params']['id']},'attributes':[[db[_0xac4a('0x4f')]['fn']('COUNT',db[_0xac4a('0x4f')]['fn']('IF',db['sequelize'][_0xac4a('0x53')](_0xac4a('0x51')))),_0xac4a('0x52')],[db[_0xac4a('0x4f')]['fn'](_0xac4a('0x50'),db[_0xac4a('0x4f')]['fn']('IF',db[_0xac4a('0x4f')][_0xac4a('0x53')](_0xac4a('0x60')))),_0xac4a('0x54')],[db[_0xac4a('0x4f')]['fn'](_0xac4a('0x50'),db[_0xac4a('0x4f')]['fn']('IF',db[_0xac4a('0x4f')][_0xac4a('0x53')](_0xac4a('0x61')))),_0xac4a('0x55')],[db['sequelize']['fn'](_0xac4a('0x50'),db[_0xac4a('0x4f')]['fn']('IF',db['sequelize'][_0xac4a('0x53')](_0xac4a('0x56')))),_0xac4a('0x57')],[db[_0xac4a('0x4f')]['fn'](_0xac4a('0x50'),db['sequelize']['fn']('IF',db['sequelize'][_0xac4a('0x53')](_0xac4a('0x58')))),_0xac4a('0x59')],[db[_0xac4a('0x4f')]['fn'](_0xac4a('0x50'),db[_0xac4a('0x4f')]['fn']('IF',db[_0xac4a('0x4f')][_0xac4a('0x53')](_0xac4a('0x5a')))),_0xac4a('0x5b')],[db[_0xac4a('0x4f')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xac4a('0x4f')][_0xac4a('0x53')](_0xac4a('0x5c')))),_0xac4a('0x5d')],[db[_0xac4a('0x4f')]['fn'](_0xac4a('0x50'),db[_0xac4a('0x4f')]['fn']('IF',db[_0xac4a('0x4f')][_0xac4a('0x53')](_0xac4a('0x5e')))),_0xac4a('0x62')]]})[_0xac4a('0x24')](handleEntityNotFound(_0x3bcae2,null))['then'](respondWithResult(_0x3bcae2,null))[_0xac4a('0x44')](handleError(_0x3bcae2,null));};exports[_0xac4a('0x63')]=function(_0x26bd31,_0x231932,_0x513976){return db[_0xac4a('0x64')]['find']({'where':{'id':_0x26bd31[_0xac4a('0x46')]['id']}})[_0xac4a('0x24')](handleEntityNotFound(_0x231932,null))['then'](function(_0x5bd95b){var _0x17eac2;if(_0x5bd95b){_0x17eac2=squel[_0xac4a('0x65')]()[_0xac4a('0x66')]('cm_hopper')[_0xac4a('0x67')](['phone',_0xac4a('0x68'),'ContactId','ListId',_0xac4a('0x69'),'createdAt',_0xac4a('0x6a')],squel['select']()[_0xac4a('0x6b')](_0xac4a('0x6c'),'phone')[_0xac4a('0x6b')]('NOW()',_0xac4a('0x68'))[_0xac4a('0x6b')]('ANY_VALUE(ContactId)',_0xac4a('0x6d'))['field']('ANY_VALUE(ListId)',_0xac4a('0x6e'))['field'](_0xac4a('0x6f'),'VoiceQueueId')['field'](_0xac4a('0x70'),_0xac4a('0x71'))[_0xac4a('0x6b')]('NOW()','updatedAt')[_0xac4a('0x72')](_0xac4a('0x73'))['where']('VoiceQueueId\x20=\x20?',_0x26bd31[_0xac4a('0x46')]['id'][_0xac4a('0x74')]())[_0xac4a('0x3d')](_0xac4a('0x75'),_0x26bd31[_0xac4a('0x4c')][_0xac4a('0x76')][_0xac4a('0x74')]())[_0xac4a('0x3d')](_0xac4a('0x77'))['where'](_0xac4a('0x78'),squel[_0xac4a('0x79')]()[_0xac4a('0x6b')]('phone')[_0xac4a('0x72')](_0xac4a('0x7a'))[_0xac4a('0x3d')](_0xac4a('0x7b'),_0x26bd31[_0xac4a('0x46')]['id']['toString']()))[_0xac4a('0x3d')](_0xac4a('0x78'),squel[_0xac4a('0x79')]()[_0xac4a('0x6b')](_0xac4a('0x7c'))[_0xac4a('0x72')](_0xac4a('0x73'))['where'](_0xac4a('0x7b'),_0x26bd31[_0xac4a('0x46')]['id'][_0xac4a('0x74')]())[_0xac4a('0x3d')](_0xac4a('0x7d')))[_0xac4a('0x7e')]('ContactId'))[_0xac4a('0x74')]();return db[_0xac4a('0x4f')][_0xac4a('0x31')](_0x17eac2);}return[];})[_0xac4a('0x24')](respondWithResult(_0x231932,null))['catch'](handleError(_0x231932,null));};exports[_0xac4a('0x7f')]=function(_0x56a934,_0x4447b5,_0x22b718){return db['Campaign']['find']({'where':{'id':_0x56a934[_0xac4a('0x46')]['id']}})[_0xac4a('0x24')](handleEntityNotFound(_0x4447b5,null))[_0xac4a('0x24')](function(_0x4bb03d){var _0x1f3f1c;if(_0x4bb03d){_0x1f3f1c=squel['insert']()[_0xac4a('0x66')](_0xac4a('0x7a'))[_0xac4a('0x67')]([_0xac4a('0x80'),_0xac4a('0x68'),'ContactId','ListId',_0xac4a('0x81'),_0xac4a('0x71'),_0xac4a('0x6a')],squel[_0xac4a('0x79')]()[_0xac4a('0x6b')](_0xac4a('0x6c'),_0xac4a('0x80'))[_0xac4a('0x6b')]('NOW()','scheduledAt')[_0xac4a('0x6b')](_0xac4a('0x82'),_0xac4a('0x6d'))[_0xac4a('0x6b')](_0xac4a('0x83'),_0xac4a('0x6e'))[_0xac4a('0x6b')](_0xac4a('0x84'),'CampaignId')['field'](_0xac4a('0x70'),_0xac4a('0x71'))[_0xac4a('0x6b')](_0xac4a('0x70'),_0xac4a('0x6a'))[_0xac4a('0x72')](_0xac4a('0x73'))['where'](_0xac4a('0x85'),_0x56a934[_0xac4a('0x46')]['id'][_0xac4a('0x74')]())['where'](_0xac4a('0x75'),_0x56a934[_0xac4a('0x4c')][_0xac4a('0x76')][_0xac4a('0x74')]())[_0xac4a('0x3d')](_0xac4a('0x77'))[_0xac4a('0x3d')](_0xac4a('0x78'),squel[_0xac4a('0x79')]()['field'](_0xac4a('0x80'))['from'](_0xac4a('0x7a'))[_0xac4a('0x3d')](_0xac4a('0x85'),_0x56a934[_0xac4a('0x46')]['id'][_0xac4a('0x74')]()))[_0xac4a('0x3d')](_0xac4a('0x78'),squel['select']()[_0xac4a('0x6b')](_0xac4a('0x7c'))[_0xac4a('0x72')](_0xac4a('0x73'))[_0xac4a('0x3d')]('CampaignId\x20=\x20?',_0x56a934[_0xac4a('0x46')]['id'][_0xac4a('0x74')]())['where']('state\x20=\x204'))[_0xac4a('0x7e')](_0xac4a('0x6d')))['toString']();return db[_0xac4a('0x4f')][_0xac4a('0x31')](_0x1f3f1c);}return[];})[_0xac4a('0x24')](respondWithResult(_0x4447b5,null))[_0xac4a('0x44')](handleError(_0x4447b5,null));};exports[_0xac4a('0x86')]=function(_0x34787c,_0x599775,_0xbdff4b){return db[_0xac4a('0x87')][_0xac4a('0x88')]({'where':{'VoiceQueueId':_0x34787c['body'][_0xac4a('0x69')],'CampaignId':_0x34787c[_0xac4a('0x4c')][_0xac4a('0x81')],'ContactId':_0x34787c[_0xac4a('0x4c')][_0xac4a('0x6d')]}})[_0xac4a('0x24')](handleEntityNotFound(_0x599775,null))['then'](function(_0xe84bf7){if(_0xe84bf7){return _0xe84bf7;}return null;})[_0xac4a('0x24')](respondWithResult(_0x599775,null))['catch'](handleError(_0x599775,null));};
\ No newline at end of file
index 6ba4fe4..08b68dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6150=['api','moment','request-promise','path','rimraf','../../config/environment','cm_hopper_final','calleridnum','uniqueid'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x6150,0x7e));var _0x0615=function(_0x3ae431,_0x13d7dc){_0x3ae431=_0x3ae431-0x0;var _0x2a740f=_0x6150[_0x3ae431];return _0x2a740f;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x0615('0x0'));var moment=require(_0x0615('0x1'));var BPromise=require('bluebird');var rp=require(_0x0615('0x2'));var fs=require('fs');var path=require(_0x0615('0x3'));var rimraf=require(_0x0615('0x4'));var config=require(_0x0615('0x5'));var attributes=require('./cmHopperFinal.attributes');module['exports']=function(_0x3a7170,_0x4b4aaf){return _0x3a7170['define']('CmHopperFinal',attributes,{'tableName':_0x0615('0x6'),'paranoid':![],'indexes':[{'name':_0x0615('0x7'),'fields':[_0x0615('0x7')]},{'name':_0x0615('0x8'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfc8c=['moment','request-promise','path','../../config/environment','exports','define','cm_hopper_final','calleridnum','uniqueid','lodash','util','../../config/logger','api'];(function(_0x464827,_0x5ee216){var _0x3a734d=function(_0x26ca1d){while(--_0x26ca1d){_0x464827['push'](_0x464827['shift']());}};_0x3a734d(++_0x5ee216);}(_0xfc8c,0xf3));var _0xcfc8=function(_0x533d54,_0x29c8ab){_0x533d54=_0x533d54-0x0;var _0x4e03f5=_0xfc8c[_0x533d54];return _0x4e03f5;};'use strict';var _=require(_0xcfc8('0x0'));var util=require(_0xcfc8('0x1'));var logger=require(_0xcfc8('0x2'))(_0xcfc8('0x3'));var moment=require(_0xcfc8('0x4'));var BPromise=require('bluebird');var rp=require(_0xcfc8('0x5'));var fs=require('fs');var path=require(_0xcfc8('0x6'));var rimraf=require('rimraf');var config=require(_0xcfc8('0x7'));var attributes=require('./cmHopperFinal.attributes');module[_0xcfc8('0x8')]=function(_0x305c4c,_0x1eece4){return _0x305c4c[_0xcfc8('0x9')]('CmHopperFinal',attributes,{'tableName':_0xcfc8('0xa'),'paranoid':![],'indexes':[{'name':'calleridnum','fields':[_0xcfc8('0xb')]},{'name':'uniqueid','fields':[_0xcfc8('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 9aa3098..18ef40d 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(_0x11deb2,_0x1a6026){var _0x3aad06=function(_0x570d3e){while(--_0x570d3e){_0x11deb2['push'](_0x11deb2['shift']());}};_0x3aad06(++_0x1a6026);}(_0xb10b,0x12a));var _0xbb10=function(_0x49684e,_0x9a24fb){_0x49684e=_0x49684e-0x0;var _0x54062f=_0xb10b[_0x49684e];return _0x54062f;};'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(_0x379891,_0x5a53de){var _0x5bf9d1=function(_0x1187e7){while(--_0x1187e7){_0x379891['push'](_0x379891['shift']());}};_0x5bf9d1(++_0x5a53de);}(_0xb10b,0x12a));var _0xbb10=function(_0x454018,_0x46e33a){_0x454018=_0x454018-0x0;var _0x24697d=_0xb10b[_0x454018];return _0x24697d;};'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 512e999..26840a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e2=['update','exports','util','path','fs-extra','../../components/interaction/service','../../config/environment','./cmHopperFinal.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','post','moveContactsQueueCampaignHopperFinal','moveContactsIvrCampaignHopperFinal','/checkContactHopper','put'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xa9e2,0x1e5));var _0x2a9e=function(_0x3f0e19,_0x5b23b0){_0x3f0e19=_0x3f0e19-0x0;var _0x27cfb7=_0xa9e2[_0x3f0e19];return _0x27cfb7;};'use strict';var multer=require('multer');var util=require(_0x2a9e('0x0'));var path=require(_0x2a9e('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x2a9e('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0x2a9e('0x3'));var config=require(_0x2a9e('0x4'));var controller=require(_0x2a9e('0x5'));router[_0x2a9e('0x6')]('/',auth[_0x2a9e('0x7')](),controller[_0x2a9e('0x8')]);router['get'](_0x2a9e('0x9'),auth[_0x2a9e('0x7')](),controller[_0x2a9e('0xa')]);router[_0x2a9e('0x6')](_0x2a9e('0xb'),auth[_0x2a9e('0x7')](),controller[_0x2a9e('0xc')]);router[_0x2a9e('0x6')](_0x2a9e('0xd'),auth[_0x2a9e('0x7')](),controller[_0x2a9e('0xe')]);router['get'](_0x2a9e('0xf'),auth['isAuthenticated'](),controller['countContactsIvrCampaignHopperFinal']);router[_0x2a9e('0x10')]('/voice/queue/moveContacts/:id',auth[_0x2a9e('0x7')](),controller[_0x2a9e('0x11')]);router[_0x2a9e('0x10')]('/voice/campaign/moveContacts/:id',auth[_0x2a9e('0x7')](),controller[_0x2a9e('0x12')]);router[_0x2a9e('0x10')](_0x2a9e('0x13'),auth['isAuthenticated'](),controller['checkContactHopper']);router[_0x2a9e('0x14')](_0x2a9e('0xb'),auth['isAuthenticated'](),controller[_0x2a9e('0x15')]);module[_0x2a9e('0x16')]=router;
\ No newline at end of file
+var _0x9dbf=['update','exports','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','moveContactsIvrCampaignHopperFinal','/checkContactHopper','checkContactHopper','put'];(function(_0x326e8e,_0x1bed26){var _0x2dc474=function(_0x9e7ebb){while(--_0x9e7ebb){_0x326e8e['push'](_0x326e8e['shift']());}};_0x2dc474(++_0x1bed26);}(_0x9dbf,0x1ab));var _0xf9db=function(_0x3657a8,_0x110061){_0x3657a8=_0x3657a8-0x0;var _0x22b62d=_0x9dbf[_0x3657a8];return _0x22b62d;};'use strict';var multer=require('multer');var util=require(_0xf9db('0x0'));var path=require(_0xf9db('0x1'));var timeout=require(_0xf9db('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf9db('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xf9db('0x4'));var config=require(_0xf9db('0x5'));var controller=require('./cmHopperFinal.controller');router[_0xf9db('0x6')]('/',auth[_0xf9db('0x7')](),controller[_0xf9db('0x8')]);router[_0xf9db('0x6')](_0xf9db('0x9'),auth[_0xf9db('0x7')](),controller[_0xf9db('0xa')]);router[_0xf9db('0x6')](_0xf9db('0xb'),auth[_0xf9db('0x7')](),controller['show']);router[_0xf9db('0x6')](_0xf9db('0xc'),auth['isAuthenticated'](),controller[_0xf9db('0xd')]);router['get'](_0xf9db('0xe'),auth['isAuthenticated'](),controller[_0xf9db('0xf')]);router[_0xf9db('0x10')](_0xf9db('0x11'),auth[_0xf9db('0x7')](),controller[_0xf9db('0x12')]);router['post']('/voice/campaign/moveContacts/:id',auth['isAuthenticated'](),controller[_0xf9db('0x13')]);router[_0xf9db('0x10')](_0xf9db('0x14'),auth[_0xf9db('0x7')](),controller[_0xf9db('0x15')]);router[_0xf9db('0x16')](_0xf9db('0xb'),auth[_0xf9db('0x7')](),controller[_0xf9db('0x17')]);module[_0xf9db('0x18')]=router;
\ No newline at end of file
index 5e58c8e..ad105b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c75=['STRING','DATE','BOOLEAN','sequelize','exports','INTEGER'];(function(_0x180cd0,_0x386c6e){var _0x49fc32=function(_0x551c2c){while(--_0x551c2c){_0x180cd0['push'](_0x180cd0['shift']());}};_0x49fc32(++_0x386c6e);}(_0x8c75,0x1d1));var _0x58c7=function(_0x3c0fef,_0x4a483a){_0x3c0fef=_0x3c0fef-0x0;var _0x5d63eb=_0x8c75[_0x3c0fef];return _0x5d63eb;};'use strict';var Sequelize=require(_0x58c7('0x0'));module[_0x58c7('0x1')]={'state':{'type':Sequelize[_0x58c7('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x58c7('0x3')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0x58c7('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x58c7('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x58c7('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0x58c7('0x3')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x58c7('0x3')]},'calleridname':{'type':Sequelize[_0x58c7('0x3')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x58c7('0x4')]},'answertime':{'type':Sequelize[_0x58c7('0x4')]},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x58c7('0x4')]},'ringtime':{'type':Sequelize[_0x58c7('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x58c7('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x58c7('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x58c7('0x3')]},'campaign':{'type':Sequelize[_0x58c7('0x3')]},'campaigntype':{'type':Sequelize[_0x58c7('0x3')]},'membername':{'type':Sequelize[_0x58c7('0x3')]},'reason':{'type':Sequelize[_0x58c7('0x3')]},'amd':{'type':Sequelize[_0x58c7('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x58c7('0x5')],'defaultValue':![]},'callback':{'type':Sequelize[_0x58c7('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x58c7('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x58c7('0x4')]},'recallme':{'type':Sequelize[_0x58c7('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x58c7('0x4')]},'edited':{'type':Sequelize[_0x58c7('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x58c7('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x58c7('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x58c7('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x58c7('0x2')],'defaultValue':0x0},'dialTimezone':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xa46e=['sequelize','exports','STRING','DATE','INTEGER','BOOLEAN'];(function(_0x3c609d,_0x2edac5){var _0x42702d=function(_0x42f481){while(--_0x42f481){_0x3c609d['push'](_0x3c609d['shift']());}};_0x42702d(++_0x2edac5);}(_0xa46e,0x8a));var _0xea46=function(_0xb4cc12,_0x41436e){_0xb4cc12=_0xb4cc12-0x0;var _0x8593b5=_0xa46e[_0xb4cc12];return _0x8593b5;};'use strict';var Sequelize=require(_0xea46('0x0'));module[_0xea46('0x1')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0xea46('0x2')]},'scheduledat':{'type':Sequelize[_0xea46('0x3')]},'countbusyretry':{'type':Sequelize[_0xea46('0x4')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xea46('0x4')],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xea46('0x2')]},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0xea46('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xea46('0x2')]},'starttime':{'type':Sequelize[_0xea46('0x3')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0xea46('0x3')]},'droptime':{'type':Sequelize[_0xea46('0x3')]},'endtime':{'type':Sequelize[_0xea46('0x3')]},'ringtime':{'type':Sequelize[_0xea46('0x4')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xea46('0x4')],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize[_0xea46('0x2')]},'campaigntype':{'type':Sequelize[_0xea46('0x2')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0xea46('0x2')]},'amd':{'type':Sequelize[_0xea46('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0xea46('0x5')],'defaultValue':![]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xea46('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xea46('0x3')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize[_0xea46('0x3')]},'edited':{'type':Sequelize[_0xea46('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xea46('0x4')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xea46('0x4')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xea46('0x4')],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0xea46('0x2')]}};
\ No newline at end of file
index a6d0694..ff6a149 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b02=['keys','filters','intersection','model','attributes','length','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','params','fields','create','body','describe','uniqueid','find','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','update','then','error','stack','name','send','index','map','CmHopperHistory','rawAttributes','fieldName','type','key','query'];(function(_0x42fe74,_0x9163b1){var _0x85edf2=function(_0x5df8ef){while(--_0x5df8ef){_0x42fe74['push'](_0x42fe74['shift']());}};_0x85edf2(++_0x9163b1);}(_0x7b02,0xb0));var _0x27b0=function(_0x5b9337,_0x49d7b4){_0x5b9337=_0x5b9337-0x0;var _0x4d55a0=_0x7b02[_0x5b9337];return _0x4d55a0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x27b0('0x0'));var zipdir=require(_0x27b0('0x1'));var jsonpatch=require(_0x27b0('0x2'));var rp=require('request-promise');var moment=require(_0x27b0('0x3'));var BPromise=require(_0x27b0('0x4'));var Mustache=require(_0x27b0('0x5'));var util=require(_0x27b0('0x6'));var path=require('path');var sox=require(_0x27b0('0x7'));var csv=require(_0x27b0('0x8'));var ejs=require(_0x27b0('0x9'));var fs=require('fs');var fs_extra=require(_0x27b0('0xa'));var _=require('lodash');var squel=require(_0x27b0('0xb'));var crypto=require(_0x27b0('0xc'));var jsforce=require(_0x27b0('0xd'));var deskjs=require(_0x27b0('0xe'));var toCsv=require('to-csv');var querystring=require(_0x27b0('0xf'));var Papa=require(_0x27b0('0x10'));var Redis=require(_0x27b0('0x11'));var authService=require(_0x27b0('0x12'));var qs=require(_0x27b0('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x27b0('0x14'));var logger=require('../../config/logger')(_0x27b0('0x15'));var utils=require(_0x27b0('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x27b0('0x17'))['db'];function respondWithStatusCode(_0x56295f,_0x4fcd21){_0x4fcd21=_0x4fcd21||0xcc;return function(_0x21a44e){if(_0x21a44e){return _0x56295f[_0x27b0('0x18')](_0x4fcd21);}return _0x56295f[_0x27b0('0x19')](_0x4fcd21)[_0x27b0('0x1a')]();};}function respondWithResult(_0x3a9be5,_0x2cb889){_0x2cb889=_0x2cb889||0xc8;return function(_0x595447){if(_0x595447){return _0x3a9be5['status'](_0x2cb889)[_0x27b0('0x1b')](_0x595447);}};}function respondWithFilteredResult(_0x21a336,_0x36e989){return function(_0x1a5384){if(_0x1a5384){var _0x858a5a=typeof _0x36e989['offset']===_0x27b0('0x1c')&&typeof _0x36e989[_0x27b0('0x1d')]==='undefined';var _0x449f43=_0x1a5384[_0x27b0('0x1e')];var _0x20de65=_0x858a5a?0x0:_0x36e989[_0x27b0('0x1f')];var _0x36071f=_0x858a5a?_0x1a5384[_0x27b0('0x1e')]:_0x36e989[_0x27b0('0x1f')]+_0x36e989[_0x27b0('0x1d')];var _0x3a0738;if(_0x36071f>=_0x449f43){_0x36071f=_0x449f43;_0x3a0738=0xc8;}else{_0x3a0738=0xce;}_0x21a336[_0x27b0('0x19')](_0x3a0738);return _0x21a336[_0x27b0('0x20')](_0x27b0('0x21'),_0x20de65+'-'+_0x36071f+'/'+_0x449f43)[_0x27b0('0x1b')](_0x1a5384);}return null;};}function patchUpdates(_0x1b7e25){return function(_0x5197a8){try{jsonpatch['apply'](_0x5197a8,_0x1b7e25,!![]);}catch(_0x4794a9){return BPromise[_0x27b0('0x22')](_0x4794a9);}return _0x5197a8['save']();};}function saveUpdates(_0x185e77,_0x2608d4){return function(_0x442bb9){if(_0x442bb9){return _0x442bb9[_0x27b0('0x23')](_0x185e77)[_0x27b0('0x24')](function(_0x1a7a26){return _0x1a7a26;});}return null;};}function removeEntity(_0x58dba5,_0x4e49c8){return function(_0x5e1773){if(_0x5e1773){return _0x5e1773['destroy']()[_0x27b0('0x24')](function(){_0x58dba5[_0x27b0('0x19')](0xcc)[_0x27b0('0x1a')]();});}};}function handleEntityNotFound(_0x20cb8e,_0x1409b1){return function(_0x34245a){if(!_0x34245a){_0x20cb8e[_0x27b0('0x18')](0x194);}return _0x34245a;};}function handleError(_0x4393f5,_0x26a0d8){_0x26a0d8=_0x26a0d8||0x1f4;return function(_0x3dce8d){logger[_0x27b0('0x25')](_0x3dce8d[_0x27b0('0x26')]);if(_0x3dce8d[_0x27b0('0x27')]){delete _0x3dce8d[_0x27b0('0x27')];}_0x4393f5[_0x27b0('0x19')](_0x26a0d8)[_0x27b0('0x28')](_0x3dce8d);};}exports[_0x27b0('0x29')]=function(_0x45a456,_0x22dab7){var _0x3db23a={},_0x7977e6={},_0x763d94={'count':0x0,'rows':[]};var _0x1ca001=_[_0x27b0('0x2a')](db[_0x27b0('0x2b')][_0x27b0('0x2c')],function(_0x9fc7ba){return{'name':_0x9fc7ba[_0x27b0('0x2d')],'type':_0x9fc7ba[_0x27b0('0x2e')][_0x27b0('0x2f')]};});_0x7977e6['model']=_[_0x27b0('0x2a')](_0x1ca001,_0x27b0('0x27'));_0x7977e6[_0x27b0('0x30')]=_[_0x27b0('0x31')](_0x45a456[_0x27b0('0x30')]);_0x7977e6[_0x27b0('0x32')]=_[_0x27b0('0x33')](_0x7977e6[_0x27b0('0x34')],_0x7977e6['query']);_0x3db23a['attributes']=_[_0x27b0('0x33')](_0x7977e6[_0x27b0('0x34')],qs['fields'](_0x45a456['query']['fields']));_0x3db23a[_0x27b0('0x35')]=_0x3db23a[_0x27b0('0x35')][_0x27b0('0x36')]?_0x3db23a['attributes']:_0x7977e6['model'];if(!_0x45a456[_0x27b0('0x30')]['hasOwnProperty'](_0x27b0('0x37'))){_0x3db23a['limit']=qs['limit'](_0x45a456[_0x27b0('0x30')][_0x27b0('0x1d')]);_0x3db23a[_0x27b0('0x1f')]=qs[_0x27b0('0x1f')](_0x45a456['query']['offset']);}_0x3db23a[_0x27b0('0x38')]=qs[_0x27b0('0x39')](_0x45a456[_0x27b0('0x30')][_0x27b0('0x39')]);_0x3db23a[_0x27b0('0x3a')]=qs['filters'](_[_0x27b0('0x3b')](_0x45a456[_0x27b0('0x30')],_0x7977e6[_0x27b0('0x32')]),_0x1ca001);if(_0x45a456[_0x27b0('0x30')][_0x27b0('0x3c')]){_0x3db23a['where']=_[_0x27b0('0x3d')](_0x3db23a[_0x27b0('0x3a')],{'$or':_[_0x27b0('0x2a')](_0x1ca001,function(_0x55db3d){if(_0x55db3d['type']!=='VIRTUAL'){var _0x59cbec={};_0x59cbec[_0x55db3d[_0x27b0('0x27')]]={'$like':'%'+_0x45a456[_0x27b0('0x30')]['filter']+'%'};return _0x59cbec;}})});}_0x3db23a=_[_0x27b0('0x3d')]({},_0x3db23a,_0x45a456[_0x27b0('0x3e')]);var _0x476705={'where':_0x3db23a[_0x27b0('0x3a')]};return db[_0x27b0('0x2b')]['count'](_0x476705)[_0x27b0('0x24')](function(_0x373fc3){_0x763d94[_0x27b0('0x1e')]=_0x373fc3;if(_0x45a456[_0x27b0('0x30')][_0x27b0('0x3f')]){_0x3db23a[_0x27b0('0x40')]=[{'all':!![]}];}return db[_0x27b0('0x2b')][_0x27b0('0x41')](_0x3db23a);})[_0x27b0('0x24')](function(_0x3e1b1a){_0x763d94[_0x27b0('0x42')]=_0x3e1b1a;return _0x763d94;})['then'](respondWithFilteredResult(_0x22dab7,_0x3db23a))[_0x27b0('0x43')](handleError(_0x22dab7,null));};exports['show']=function(_0xcc6af7,_0x41af39){var _0x435989={'raw':!![],'where':{'id':_0xcc6af7[_0x27b0('0x44')]['id']}},_0xaf344b={};_0xaf344b[_0x27b0('0x34')]=_[_0x27b0('0x31')](db[_0x27b0('0x2b')][_0x27b0('0x2c')]);_0xaf344b[_0x27b0('0x30')]=_[_0x27b0('0x31')](_0xcc6af7['query']);_0xaf344b[_0x27b0('0x32')]=_[_0x27b0('0x33')](_0xaf344b[_0x27b0('0x34')],_0xaf344b[_0x27b0('0x30')]);_0x435989[_0x27b0('0x35')]=_[_0x27b0('0x33')](_0xaf344b[_0x27b0('0x34')],qs[_0x27b0('0x45')](_0xcc6af7[_0x27b0('0x30')]['fields']));_0x435989['attributes']=_0x435989[_0x27b0('0x35')][_0x27b0('0x36')]?_0x435989[_0x27b0('0x35')]:_0xaf344b[_0x27b0('0x34')];if(_0xcc6af7[_0x27b0('0x30')]['includeAll']){_0x435989[_0x27b0('0x40')]=[{'all':!![]}];}_0x435989=_[_0x27b0('0x3d')]({},_0x435989,_0xcc6af7[_0x27b0('0x3e')]);return db[_0x27b0('0x2b')]['find'](_0x435989)['then'](handleEntityNotFound(_0x41af39,null))[_0x27b0('0x24')](respondWithResult(_0x41af39,null))['catch'](handleError(_0x41af39,null));};exports[_0x27b0('0x46')]=function(_0x3784fc,_0x829c62){return db[_0x27b0('0x2b')][_0x27b0('0x46')](_0x3784fc[_0x27b0('0x47')],{})[_0x27b0('0x24')](respondWithResult(_0x829c62,0xc9))['catch'](handleError(_0x829c62,null));};exports[_0x27b0('0x48')]=function(_0x247a13,_0x11f0d4){return db[_0x27b0('0x2b')]['describe']()[_0x27b0('0x24')](respondWithResult(_0x11f0d4,null))[_0x27b0('0x43')](handleError(_0x11f0d4,null));};exports['update']=function(_0x3c93c6,_0x35fbb3){if(_0x3c93c6[_0x27b0('0x47')][_0x27b0('0x49')]){delete _0x3c93c6['body'][_0x27b0('0x49')];}return db[_0x27b0('0x2b')][_0x27b0('0x4a')]({'where':{'uniqueid':_0x3c93c6[_0x27b0('0x44')]['id']}})[_0x27b0('0x24')](handleEntityNotFound(_0x35fbb3,null))[_0x27b0('0x24')](saveUpdates(_0x3c93c6[_0x27b0('0x47')],null))['then'](respondWithResult(_0x35fbb3,null))['catch'](handleError(_0x35fbb3,null));};
\ No newline at end of file
+var _0x60e7=['lodash','squel','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','json','offset','count','limit','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','CmHopperHistory','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','findAll','rows','params','length','include','find','catch','create','body','describe','uniqueid','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs'];(function(_0x36e4f3,_0x270020){var _0x333e68=function(_0x51ff5d){while(--_0x51ff5d){_0x36e4f3['push'](_0x36e4f3['shift']());}};_0x333e68(++_0x270020);}(_0x60e7,0x92));var _0x760e=function(_0x51674a,_0x2ca337){_0x51674a=_0x51674a-0x0;var _0x4a1f4e=_0x60e7[_0x51674a];return _0x4a1f4e;};'use strict';var emlformat=require(_0x760e('0x0'));var rimraf=require(_0x760e('0x1'));var zipdir=require(_0x760e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x760e('0x3'));var moment=require(_0x760e('0x4'));var BPromise=require(_0x760e('0x5'));var Mustache=require(_0x760e('0x6'));var util=require(_0x760e('0x7'));var path=require(_0x760e('0x8'));var sox=require(_0x760e('0x9'));var csv=require(_0x760e('0xa'));var ejs=require(_0x760e('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x760e('0xc'));var squel=require(_0x760e('0xd'));var crypto=require('crypto');var jsforce=require(_0x760e('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x760e('0xa'));var querystring=require(_0x760e('0xf'));var Papa=require(_0x760e('0x10'));var Redis=require(_0x760e('0x11'));var authService=require(_0x760e('0x12'));var qs=require(_0x760e('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x760e('0x14'));var logger=require(_0x760e('0x15'))(_0x760e('0x16'));var utils=require(_0x760e('0x17'));var config=require(_0x760e('0x18'));var licenseUtil=require(_0x760e('0x19'));var db=require(_0x760e('0x1a'))['db'];function respondWithStatusCode(_0x58a4f6,_0x15b91d){_0x15b91d=_0x15b91d||0xcc;return function(_0x51ac93){if(_0x51ac93){return _0x58a4f6[_0x760e('0x1b')](_0x15b91d);}return _0x58a4f6[_0x760e('0x1c')](_0x15b91d)[_0x760e('0x1d')]();};}function respondWithResult(_0x424fa1,_0x4fcba3){_0x4fcba3=_0x4fcba3||0xc8;return function(_0x577ceb){if(_0x577ceb){return _0x424fa1[_0x760e('0x1c')](_0x4fcba3)[_0x760e('0x1e')](_0x577ceb);}};}function respondWithFilteredResult(_0x4d23ee,_0x1f4fdc){return function(_0x3306bf){if(_0x3306bf){var _0x9f3aed=typeof _0x1f4fdc[_0x760e('0x1f')]==='undefined'&&typeof _0x1f4fdc['limit']==='undefined';var _0x560c8f=_0x3306bf[_0x760e('0x20')];var _0x392f2b=_0x9f3aed?0x0:_0x1f4fdc[_0x760e('0x1f')];var _0x57d18e=_0x9f3aed?_0x3306bf['count']:_0x1f4fdc['offset']+_0x1f4fdc[_0x760e('0x21')];var _0x5ef5d6;if(_0x57d18e>=_0x560c8f){_0x57d18e=_0x560c8f;_0x5ef5d6=0xc8;}else{_0x5ef5d6=0xce;}_0x4d23ee['status'](_0x5ef5d6);return _0x4d23ee['set']('Content-Range',_0x392f2b+'-'+_0x57d18e+'/'+_0x560c8f)['json'](_0x3306bf);}return null;};}function patchUpdates(_0x418baf){return function(_0x2e626e){try{jsonpatch[_0x760e('0x22')](_0x2e626e,_0x418baf,!![]);}catch(_0x24e78e){return BPromise[_0x760e('0x23')](_0x24e78e);}return _0x2e626e[_0x760e('0x24')]();};}function saveUpdates(_0x52e0a0,_0x33126c){return function(_0x3b0a5e){if(_0x3b0a5e){return _0x3b0a5e[_0x760e('0x25')](_0x52e0a0)['then'](function(_0x498f13){return _0x498f13;});}return null;};}function removeEntity(_0x1f06d3,_0xc4c9b5){return function(_0x33628d){if(_0x33628d){return _0x33628d[_0x760e('0x26')]()[_0x760e('0x27')](function(){_0x1f06d3[_0x760e('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x362238,_0x1203a7){return function(_0x1768b9){if(!_0x1768b9){_0x362238[_0x760e('0x1b')](0x194);}return _0x1768b9;};}function handleError(_0x1a4214,_0x44c001){_0x44c001=_0x44c001||0x1f4;return function(_0x5f04f7){logger[_0x760e('0x28')](_0x5f04f7[_0x760e('0x29')]);if(_0x5f04f7[_0x760e('0x2a')]){delete _0x5f04f7[_0x760e('0x2a')];}_0x1a4214[_0x760e('0x1c')](_0x44c001)[_0x760e('0x2b')](_0x5f04f7);};}exports[_0x760e('0x2c')]=function(_0x58a648,_0x53907c){var _0x59d81c={},_0x34a55b={},_0x2cab54={'count':0x0,'rows':[]};var _0x50dc0e=_[_0x760e('0x2d')](db[_0x760e('0x2e')][_0x760e('0x2f')],function(_0x450218){return{'name':_0x450218[_0x760e('0x30')],'type':_0x450218[_0x760e('0x31')][_0x760e('0x32')]};});_0x34a55b[_0x760e('0x33')]=_[_0x760e('0x2d')](_0x50dc0e,'name');_0x34a55b[_0x760e('0x34')]=_[_0x760e('0x35')](_0x58a648['query']);_0x34a55b[_0x760e('0x36')]=_['intersection'](_0x34a55b['model'],_0x34a55b['query']);_0x59d81c[_0x760e('0x37')]=_[_0x760e('0x38')](_0x34a55b[_0x760e('0x33')],qs[_0x760e('0x39')](_0x58a648[_0x760e('0x34')][_0x760e('0x39')]));_0x59d81c['attributes']=_0x59d81c[_0x760e('0x37')]['length']?_0x59d81c[_0x760e('0x37')]:_0x34a55b[_0x760e('0x33')];if(!_0x58a648[_0x760e('0x34')][_0x760e('0x3a')](_0x760e('0x3b'))){_0x59d81c[_0x760e('0x21')]=qs[_0x760e('0x21')](_0x58a648[_0x760e('0x34')]['limit']);_0x59d81c[_0x760e('0x1f')]=qs[_0x760e('0x1f')](_0x58a648[_0x760e('0x34')][_0x760e('0x1f')]);}_0x59d81c[_0x760e('0x3c')]=qs[_0x760e('0x3d')](_0x58a648[_0x760e('0x34')][_0x760e('0x3d')]);_0x59d81c[_0x760e('0x3e')]=qs[_0x760e('0x36')](_[_0x760e('0x3f')](_0x58a648['query'],_0x34a55b[_0x760e('0x36')]),_0x50dc0e);if(_0x58a648[_0x760e('0x34')][_0x760e('0x40')]){_0x59d81c[_0x760e('0x3e')]=_[_0x760e('0x41')](_0x59d81c[_0x760e('0x3e')],{'$or':_[_0x760e('0x2d')](_0x50dc0e,function(_0x2e385f){if(_0x2e385f[_0x760e('0x31')]!=='VIRTUAL'){var _0x4a073a={};_0x4a073a[_0x2e385f['name']]={'$like':'%'+_0x58a648[_0x760e('0x34')][_0x760e('0x40')]+'%'};return _0x4a073a;}})});}_0x59d81c=_[_0x760e('0x41')]({},_0x59d81c,_0x58a648[_0x760e('0x42')]);var _0x4d8acb={'where':_0x59d81c[_0x760e('0x3e')]};return db['CmHopperHistory'][_0x760e('0x20')](_0x4d8acb)[_0x760e('0x27')](function(_0x17243d){_0x2cab54[_0x760e('0x20')]=_0x17243d;if(_0x58a648[_0x760e('0x34')][_0x760e('0x43')]){_0x59d81c['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x760e('0x44')](_0x59d81c);})[_0x760e('0x27')](function(_0x14d35a){_0x2cab54[_0x760e('0x45')]=_0x14d35a;return _0x2cab54;})[_0x760e('0x27')](respondWithFilteredResult(_0x53907c,_0x59d81c))['catch'](handleError(_0x53907c,null));};exports['show']=function(_0x9abc5e,_0x2dd3ad){var _0x1654b8={'raw':!![],'where':{'id':_0x9abc5e[_0x760e('0x46')]['id']}},_0x296478={};_0x296478[_0x760e('0x33')]=_[_0x760e('0x35')](db[_0x760e('0x2e')][_0x760e('0x2f')]);_0x296478['query']=_[_0x760e('0x35')](_0x9abc5e[_0x760e('0x34')]);_0x296478[_0x760e('0x36')]=_[_0x760e('0x38')](_0x296478[_0x760e('0x33')],_0x296478[_0x760e('0x34')]);_0x1654b8[_0x760e('0x37')]=_[_0x760e('0x38')](_0x296478[_0x760e('0x33')],qs['fields'](_0x9abc5e[_0x760e('0x34')][_0x760e('0x39')]));_0x1654b8[_0x760e('0x37')]=_0x1654b8['attributes'][_0x760e('0x47')]?_0x1654b8[_0x760e('0x37')]:_0x296478[_0x760e('0x33')];if(_0x9abc5e[_0x760e('0x34')][_0x760e('0x43')]){_0x1654b8[_0x760e('0x48')]=[{'all':!![]}];}_0x1654b8=_[_0x760e('0x41')]({},_0x1654b8,_0x9abc5e['options']);return db[_0x760e('0x2e')][_0x760e('0x49')](_0x1654b8)[_0x760e('0x27')](handleEntityNotFound(_0x2dd3ad,null))['then'](respondWithResult(_0x2dd3ad,null))[_0x760e('0x4a')](handleError(_0x2dd3ad,null));};exports[_0x760e('0x4b')]=function(_0xf472e0,_0x20bb79){return db[_0x760e('0x2e')][_0x760e('0x4b')](_0xf472e0[_0x760e('0x4c')],{})[_0x760e('0x27')](respondWithResult(_0x20bb79,0xc9))[_0x760e('0x4a')](handleError(_0x20bb79,null));};exports[_0x760e('0x4d')]=function(_0x5f25df,_0x24f578){return db[_0x760e('0x2e')][_0x760e('0x4d')]()[_0x760e('0x27')](respondWithResult(_0x24f578,null))[_0x760e('0x4a')](handleError(_0x24f578,null));};exports[_0x760e('0x25')]=function(_0x3b1a6b,_0x36fd47){if(_0x3b1a6b[_0x760e('0x4c')]['uniqueid']){delete _0x3b1a6b[_0x760e('0x4c')][_0x760e('0x4e')];}return db[_0x760e('0x2e')][_0x760e('0x49')]({'where':{'uniqueid':_0x3b1a6b['params']['id']}})[_0x760e('0x27')](handleEntityNotFound(_0x36fd47,null))[_0x760e('0x27')](saveUpdates(_0x3b1a6b[_0x760e('0x4c')],null))[_0x760e('0x27')](respondWithResult(_0x36fd47,null))[_0x760e('0x4a')](handleError(_0x36fd47,null));};
\ No newline at end of file
index 29b53af..0059ac2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba37=['endtime','uniqueid','lodash','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./cmHopperHistory.attributes','CmHopperHistory','cm_hopper_history'];(function(_0x4bf4b7,_0x238ccd){var _0x5dd92d=function(_0x54a5ae){while(--_0x54a5ae){_0x4bf4b7['push'](_0x4bf4b7['shift']());}};_0x5dd92d(++_0x238ccd);}(_0xba37,0xb6));var _0x7ba3=function(_0x42bdad,_0x12836c){_0x42bdad=_0x42bdad-0x0;var _0x122626=_0xba37[_0x42bdad];return _0x122626;};'use strict';var _=require(_0x7ba3('0x0'));var util=require('util');var logger=require(_0x7ba3('0x1'))('api');var moment=require(_0x7ba3('0x2'));var BPromise=require('bluebird');var rp=require(_0x7ba3('0x3'));var fs=require('fs');var path=require(_0x7ba3('0x4'));var rimraf=require(_0x7ba3('0x5'));var config=require(_0x7ba3('0x6'));var attributes=require(_0x7ba3('0x7'));module['exports']=function(_0x401c33,_0x47b38c){return _0x401c33['define'](_0x7ba3('0x8'),attributes,{'tableName':_0x7ba3('0x9'),'paranoid':![],'indexes':[{'name':'endtime','fields':[_0x7ba3('0xa')]},{'name':_0x7ba3('0xb'),'fields':[_0x7ba3('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3c03=['exports','define','CmHopperHistory','endtime','uniqueid','lodash','moment','bluebird','request-promise','path','../../config/environment','./cmHopperHistory.attributes'];(function(_0x25e7cb,_0x3579b7){var _0x375d92=function(_0xe8cf3b){while(--_0xe8cf3b){_0x25e7cb['push'](_0x25e7cb['shift']());}};_0x375d92(++_0x3579b7);}(_0x3c03,0x16d));var _0x33c0=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0x3c03[_0x1b828b];return _0x98da1a;};'use strict';var _=require(_0x33c0('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x33c0('0x1'));var BPromise=require(_0x33c0('0x2'));var rp=require(_0x33c0('0x3'));var fs=require('fs');var path=require(_0x33c0('0x4'));var rimraf=require('rimraf');var config=require(_0x33c0('0x5'));var attributes=require(_0x33c0('0x6'));module[_0x33c0('0x7')]=function(_0x1dc943,_0x121322){return _0x1dc943[_0x33c0('0x8')](_0x33c0('0x9'),attributes,{'tableName':'cm_hopper_history','paranoid':![],'indexes':[{'name':_0x33c0('0xa'),'fields':[_0x33c0('0xa')]},{'name':'uniqueid','fields':[_0x33c0('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 64f912e..180e5ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x167e=['GetVoiceQueueHopperHistory','where','campaign','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','name','ivrTotalCallsDays','ivrAnswerCallsDay','GetCampaignHopperHistory','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateCmHopperHistory','create','body','options','raw','AvgHandleTime','CmHopperHistory','findAll','COUNT','sequelize','col','predictiveIntervalTotalCalls','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','AVG','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime'];(function(_0x2586dd,_0x181dee){var _0x154b28=function(_0x40f40c){while(--_0x40f40c){_0x2586dd['push'](_0x2586dd['shift']());}};_0x154b28(++_0x181dee);}(_0x167e,0xa3));var _0xe167=function(_0x2938a0,_0x32e9a1){_0x2938a0=_0x2938a0-0x0;var _0x449784=_0x167e[_0x2938a0];return _0x449784;};'use strict';var _=require(_0xe167('0x0'));var util=require(_0xe167('0x1'));var moment=require(_0xe167('0x2'));var BPromise=require(_0xe167('0x3'));var rs=require(_0xe167('0x4'));var fs=require('fs');var Redis=require(_0xe167('0x5'));var db=require(_0xe167('0x6'))['db'];var utils=require(_0xe167('0x7'));var logger=require('../../config/logger')(_0xe167('0x8'));var config=require('../../config/environment');var jayson=require(_0xe167('0x9'));var client=jayson[_0xe167('0xa')][_0xe167('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3bad0c,_0x1426ae,_0x56cf9b){return new BPromise(function(_0x3a00d5,_0x5c6694){return client[_0xe167('0xc')](_0x3bad0c,_0x56cf9b)[_0xe167('0xd')](function(_0x26a191){logger[_0xe167('0xe')](_0xe167('0xf'),_0x1426ae,_0xe167('0x10'));logger[_0xe167('0x11')](_0xe167('0x12'),_0x1426ae,'request\x20sent',JSON[_0xe167('0x13')](_0x26a191));if(_0x26a191[_0xe167('0x14')]){if(_0x26a191['error'][_0xe167('0x15')]===0x1f4){logger[_0xe167('0x14')](_0xe167('0xf'),_0x1426ae,_0x26a191[_0xe167('0x14')][_0xe167('0x16')]);return _0x5c6694(_0x26a191[_0xe167('0x14')][_0xe167('0x16')]);}logger[_0xe167('0x14')](_0xe167('0xf'),_0x1426ae,_0x26a191['error'][_0xe167('0x16')]);return _0x3a00d5(_0x26a191[_0xe167('0x14')][_0xe167('0x16')]);}else{logger[_0xe167('0xe')]('CmHopperHistory,\x20%s,\x20%s',_0x1426ae,_0xe167('0x10'));_0x3a00d5(_0x26a191[_0xe167('0x17')][_0xe167('0x16')]);}})[_0xe167('0x18')](function(_0x1244d4){logger['error'](_0xe167('0xf'),_0x1426ae,_0x1244d4);_0x5c6694(_0x1244d4);});});}exports[_0xe167('0x19')]=function(_0x369d39){var _0x5e7aa3=this;return new Promise(function(_0x469f2a,_0x9a91b){return db['CmHopperHistory'][_0xe167('0x1a')](_0x369d39[_0xe167('0x1b')],{'raw':_0x369d39[_0xe167('0x1c')]?_0x369d39[_0xe167('0x1c')][_0xe167('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0x46fcc9){logger[_0xe167('0xe')](_0xe167('0x19'),_0x369d39);logger[_0xe167('0x11')](_0xe167('0x19'),_0x369d39,JSON['stringify'](_0x46fcc9));_0x469f2a(_0x46fcc9);})[_0xe167('0x18')](function(_0x1c5cb5){logger[_0xe167('0x14')]('CreateCmHopperHistory',_0x1c5cb5['message'],_0x369d39);_0x9a91b(_0x5e7aa3['error'](0x1f4,_0x1c5cb5['message']));});});};exports[_0xe167('0x1e')]=function(_0x1ae758){var _0x1e09ec=this;return new Promise(function(_0x5aa2cc,_0x460c41){return db[_0xe167('0x1f')][_0xe167('0x20')]({'raw':_0x1ae758[_0xe167('0x1c')]?_0x1ae758['options'][_0xe167('0x1d')]===undefined?!![]:![]:!![],'where':_0x1ae758['options']?_0x1ae758[_0xe167('0x1c')]['where']||null:null,'attributes':[[db['sequelize']['fn'](_0xe167('0x21'),db[_0xe167('0x22')][_0xe167('0x23')]('id')),_0xe167('0x24')],[db['sequelize']['fn'](_0xe167('0x21'),db['sequelize']['fn']('IF',db['sequelize'][_0xe167('0x25')](_0xe167('0x26')))),_0xe167('0x27')],[db['sequelize']['fn']('COUNT',db[_0xe167('0x22')]['fn']('IF',db[_0xe167('0x22')]['literal']('`state`\x20=\x2010,\x201,\x20null'))),_0xe167('0x28')],[db[_0xe167('0x22')]['fn'](_0xe167('0x21'),db[_0xe167('0x22')]['fn']('IF',db[_0xe167('0x22')][_0xe167('0x25')]('`state`\x20=\x2011,\x201,\x20null'))),_0xe167('0x29')],[db['sequelize']['fn']('AVG',db[_0xe167('0x22')]['fn']('IF',db['sequelize'][_0xe167('0x25')](_0xe167('0x2a')))),_0xe167('0x2b')],[db[_0xe167('0x22')]['fn'](_0xe167('0x2c'),db['sequelize']['fn']('IF',db[_0xe167('0x22')][_0xe167('0x25')](_0xe167('0x2d')))),_0xe167('0x2e')]]})[_0xe167('0xd')](function(_0x46d01a){logger[_0xe167('0xe')](_0xe167('0x1e'),_0x1ae758);logger['debug']('AvgHandleTime',_0x1ae758,JSON[_0xe167('0x13')](_0x46d01a));_0x5aa2cc(_0x46d01a);})[_0xe167('0x18')](function(_0x5d91fd){logger['error'](_0xe167('0x1e'),_0x5d91fd['message'],_0x1ae758);_0x460c41(_0x1e09ec[_0xe167('0x14')](0x1f4,_0x5d91fd['message']));});});};exports[_0xe167('0x2f')]=function(_0x35f576){var _0x29dd68=this;return new Promise(function(_0x540ea3,_0x4d9dbd){return db[_0xe167('0x1f')][_0xe167('0x20')]({'raw':_0x35f576[_0xe167('0x1c')]?_0x35f576[_0xe167('0x1c')][_0xe167('0x1d')]===undefined?!![]:![]:!![],'where':_0x35f576[_0xe167('0x1c')]?_0x35f576['options'][_0xe167('0x30')]||null:null,'attributes':[[_0xe167('0x31'),'name'],[db[_0xe167('0x22')]['fn'](_0xe167('0x21'),db[_0xe167('0x22')]['fn']('IF',db[_0xe167('0x22')][_0xe167('0x25')]('`state`\x20=\x200,\x201,\x20null'))),_0xe167('0x32')],[db[_0xe167('0x22')]['fn'](_0xe167('0x21'),db[_0xe167('0x22')]['fn']('IF',db['sequelize']['literal'](_0xe167('0x33')))),'outboundNoAnswerCallsDay'],[db[_0xe167('0x22')]['fn'](_0xe167('0x21'),db[_0xe167('0x22')]['fn']('IF',db[_0xe167('0x22')][_0xe167('0x25')]('`state`\x20=\x204,\x201,\x20null'))),'outboundAnswerCallsDay'],[db[_0xe167('0x22')]['fn'](_0xe167('0x21'),db[_0xe167('0x22')]['fn']('IF',db[_0xe167('0x22')]['literal'](_0xe167('0x34')))),_0xe167('0x35')],[db[_0xe167('0x22')]['fn'](_0xe167('0x21'),db['sequelize']['fn']('IF',db[_0xe167('0x22')][_0xe167('0x25')]('`state`\x20=\x208,\x201,\x20null'))),_0xe167('0x36')],[db[_0xe167('0x22')]['fn'](_0xe167('0x21'),db[_0xe167('0x22')]['fn']('IF',db['sequelize'][_0xe167('0x25')](_0xe167('0x37')))),_0xe167('0x38')],[db[_0xe167('0x22')]['fn'](_0xe167('0x21'),db['sequelize']['fn']('IF',db[_0xe167('0x22')][_0xe167('0x25')](_0xe167('0x39')))),_0xe167('0x3a')],[db['sequelize']['fn'](_0xe167('0x21'),db[_0xe167('0x22')]['fn']('IF',db[_0xe167('0x22')][_0xe167('0x25')]('`state`\x20=\x2012,\x201,\x20null'))),'outboundUnknownCallsDay'],[db[_0xe167('0x22')]['fn']('COUNT',db[_0xe167('0x22')]['fn']('IF',db[_0xe167('0x22')][_0xe167('0x25')](_0xe167('0x3b')))),_0xe167('0x3c')],[db[_0xe167('0x22')]['fn'](_0xe167('0x21'),db[_0xe167('0x22')]['fn']('IF',db['sequelize'][_0xe167('0x25')](_0xe167('0x3d')))),'outboundOriginateFailureCallsDay'],[db[_0xe167('0x22')]['fn']('COUNT',db[_0xe167('0x22')]['fn']('IF',db['sequelize'][_0xe167('0x25')]('`state`\x20=\x2018,\x201,\x20null'))),_0xe167('0x3e')],[db[_0xe167('0x22')]['fn'](_0xe167('0x21'),db['sequelize']['fn']('IF',db[_0xe167('0x22')][_0xe167('0x25')](_0xe167('0x3f')))),'outboundAnswerAgiCallsDay'],[db[_0xe167('0x22')]['fn'](_0xe167('0x21'),db[_0xe167('0x22')]['fn']('IF',db[_0xe167('0x22')][_0xe167('0x25')]('`state`\x20=\x2020,\x201,\x20null'))),_0xe167('0x3e')],[db[_0xe167('0x22')]['fn']('COUNT',db[_0xe167('0x22')]['fn']('IF',db[_0xe167('0x22')]['literal'](_0xe167('0x40')))),_0xe167('0x41')]],'group':[_0xe167('0x31')]})[_0xe167('0xd')](function(_0x57699f){logger[_0xe167('0xe')]('GetVoiceQueueHopperHistory',_0x35f576);logger[_0xe167('0x11')](_0xe167('0x2f'),_0x35f576,JSON[_0xe167('0x13')](_0x57699f));_0x540ea3(_0x57699f);})['catch'](function(_0x36429b){logger[_0xe167('0x14')](_0xe167('0x2f'),_0x36429b[_0xe167('0x16')],_0x35f576);_0x4d9dbd(_0x29dd68[_0xe167('0x14')](0x1f4,_0x36429b[_0xe167('0x16')]));});});};exports['GetCampaignHopperHistory']=function(_0x310b4a){var _0x1f0fb3=this;return new Promise(function(_0x586062,_0x51a0a2){return db[_0xe167('0x1f')][_0xe167('0x20')]({'raw':_0x310b4a[_0xe167('0x1c')]?_0x310b4a[_0xe167('0x1c')][_0xe167('0x1d')]===undefined?!![]:![]:!![],'where':_0x310b4a['options']?_0x310b4a[_0xe167('0x1c')][_0xe167('0x30')]||null:null,'attributes':[['campaign',_0xe167('0x42')],[db[_0xe167('0x22')]['fn'](_0xe167('0x21'),db[_0xe167('0x22')][_0xe167('0x23')]('id')),_0xe167('0x43')],[db[_0xe167('0x22')]['fn'](_0xe167('0x21'),db[_0xe167('0x22')]['fn']('IF',db['sequelize'][_0xe167('0x25')]('`state`\x20=\x204,\x201,\x20null'))),_0xe167('0x44')]],'group':[_0xe167('0x31')]})[_0xe167('0xd')](function(_0x39bd88){logger[_0xe167('0xe')](_0xe167('0x45'),_0x310b4a);logger['debug']('GetCampaignHopperHistory',_0x310b4a,JSON[_0xe167('0x13')](_0x39bd88));_0x586062(_0x39bd88);})[_0xe167('0x18')](function(_0x2e649e){logger[_0xe167('0x14')]('GetCampaignHopperHistory',_0x2e649e[_0xe167('0x16')],_0x310b4a);_0x51a0a2(_0x1f0fb3['error'](0x1f4,_0x2e649e['message']));});});};
\ No newline at end of file
+var _0xc772=['raw','then','catch','AvgHandleTime','CmHopperHistory','where','sequelize','COUNT','col','predictiveIntervalTotalCalls','literal','`state`\x20=\x204,\x201,\x20null','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','campaign','name','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','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','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','GetVoiceQueueHopperHistory','GetCampaignHopperHistory','findAll','ivrTotalCallsDays','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','client','http','request','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','CreateCmHopperHistory','create','body','options'];(function(_0x383356,_0x33d2f5){var _0x32ee5a=function(_0x2741db){while(--_0x2741db){_0x383356['push'](_0x383356['shift']());}};_0x32ee5a(++_0x33d2f5);}(_0xc772,0x108));var _0x2c77=function(_0x170ad2,_0x14acb1){_0x170ad2=_0x170ad2-0x0;var _0x267003=_0xc772[_0x170ad2];return _0x267003;};'use strict';var _=require(_0x2c77('0x0'));var util=require(_0x2c77('0x1'));var moment=require(_0x2c77('0x2'));var BPromise=require(_0x2c77('0x3'));var rs=require(_0x2c77('0x4'));var fs=require('fs');var Redis=require(_0x2c77('0x5'));var db=require(_0x2c77('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x2c77('0x7'));var config=require('../../config/environment');var jayson=require(_0x2c77('0x8'));var client=jayson[_0x2c77('0x9')][_0x2c77('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x28ba16,_0x3a9b2a,_0x357116){return new BPromise(function(_0x1a00a2,_0xf43c75){return client[_0x2c77('0xb')](_0x28ba16,_0x357116)['then'](function(_0x394ad4){logger[_0x2c77('0xc')](_0x2c77('0xd'),_0x3a9b2a,_0x2c77('0xe'));logger[_0x2c77('0xf')]('CmHopperHistory,\x20%s,\x20%s,\x20%s',_0x3a9b2a,_0x2c77('0xe'),JSON[_0x2c77('0x10')](_0x394ad4));if(_0x394ad4[_0x2c77('0x11')]){if(_0x394ad4[_0x2c77('0x11')][_0x2c77('0x12')]===0x1f4){logger[_0x2c77('0x11')](_0x2c77('0xd'),_0x3a9b2a,_0x394ad4[_0x2c77('0x11')][_0x2c77('0x13')]);return _0xf43c75(_0x394ad4[_0x2c77('0x11')][_0x2c77('0x13')]);}logger[_0x2c77('0x11')](_0x2c77('0xd'),_0x3a9b2a,_0x394ad4[_0x2c77('0x11')][_0x2c77('0x13')]);return _0x1a00a2(_0x394ad4['error'][_0x2c77('0x13')]);}else{logger[_0x2c77('0xc')](_0x2c77('0xd'),_0x3a9b2a,_0x2c77('0xe'));_0x1a00a2(_0x394ad4['result'][_0x2c77('0x13')]);}})['catch'](function(_0x21eb7d){logger[_0x2c77('0x11')](_0x2c77('0xd'),_0x3a9b2a,_0x21eb7d);_0xf43c75(_0x21eb7d);});});}exports[_0x2c77('0x14')]=function(_0x240d6c){var _0x91e6b2=this;return new Promise(function(_0x241c90,_0x1d3ad9){return db['CmHopperHistory'][_0x2c77('0x15')](_0x240d6c[_0x2c77('0x16')],{'raw':_0x240d6c['options']?_0x240d6c[_0x2c77('0x17')][_0x2c77('0x18')]===undefined?!![]:![]:!![]})[_0x2c77('0x19')](function(_0x3e80c4){logger['info']('CreateCmHopperHistory',_0x240d6c);logger[_0x2c77('0xf')](_0x2c77('0x14'),_0x240d6c,JSON[_0x2c77('0x10')](_0x3e80c4));_0x241c90(_0x3e80c4);})[_0x2c77('0x1a')](function(_0x14f6c4){logger[_0x2c77('0x11')](_0x2c77('0x14'),_0x14f6c4[_0x2c77('0x13')],_0x240d6c);_0x1d3ad9(_0x91e6b2[_0x2c77('0x11')](0x1f4,_0x14f6c4[_0x2c77('0x13')]));});});};exports[_0x2c77('0x1b')]=function(_0x20eb5a){var _0x447587=this;return new Promise(function(_0x14f65c,_0x759739){return db[_0x2c77('0x1c')]['findAll']({'raw':_0x20eb5a[_0x2c77('0x17')]?_0x20eb5a['options'][_0x2c77('0x18')]===undefined?!![]:![]:!![],'where':_0x20eb5a['options']?_0x20eb5a[_0x2c77('0x17')][_0x2c77('0x1d')]||null:null,'attributes':[[db[_0x2c77('0x1e')]['fn'](_0x2c77('0x1f'),db[_0x2c77('0x1e')][_0x2c77('0x20')]('id')),_0x2c77('0x21')],[db['sequelize']['fn'](_0x2c77('0x1f'),db['sequelize']['fn']('IF',db[_0x2c77('0x1e')][_0x2c77('0x22')](_0x2c77('0x23')))),'predictiveIntervalAnsweredCalls'],[db[_0x2c77('0x1e')]['fn'](_0x2c77('0x1f'),db[_0x2c77('0x1e')]['fn']('IF',db[_0x2c77('0x1e')][_0x2c77('0x22')](_0x2c77('0x24')))),_0x2c77('0x25')],[db['sequelize']['fn'](_0x2c77('0x1f'),db['sequelize']['fn']('IF',db[_0x2c77('0x1e')]['literal']('`state`\x20=\x2011,\x201,\x20null'))),_0x2c77('0x26')],[db[_0x2c77('0x1e')]['fn'](_0x2c77('0x27'),db[_0x2c77('0x1e')]['fn']('IF',db[_0x2c77('0x1e')][_0x2c77('0x22')](_0x2c77('0x28')))),_0x2c77('0x29')],[db['sequelize']['fn'](_0x2c77('0x27'),db[_0x2c77('0x1e')]['fn']('IF',db[_0x2c77('0x1e')][_0x2c77('0x22')](_0x2c77('0x2a')))),_0x2c77('0x2b')]]})['then'](function(_0x16cb2a){logger[_0x2c77('0xc')]('AvgHandleTime',_0x20eb5a);logger['debug'](_0x2c77('0x1b'),_0x20eb5a,JSON[_0x2c77('0x10')](_0x16cb2a));_0x14f65c(_0x16cb2a);})[_0x2c77('0x1a')](function(_0x58fdc5){logger['error'](_0x2c77('0x1b'),_0x58fdc5[_0x2c77('0x13')],_0x20eb5a);_0x759739(_0x447587['error'](0x1f4,_0x58fdc5[_0x2c77('0x13')]));});});};exports['GetVoiceQueueHopperHistory']=function(_0x23acbb){var _0x7ecf2a=this;return new Promise(function(_0x27dcf3,_0x533f03){return db[_0x2c77('0x1c')]['findAll']({'raw':_0x23acbb['options']?_0x23acbb[_0x2c77('0x17')][_0x2c77('0x18')]===undefined?!![]:![]:!![],'where':_0x23acbb[_0x2c77('0x17')]?_0x23acbb[_0x2c77('0x17')][_0x2c77('0x1d')]||null:null,'attributes':[[_0x2c77('0x2c'),_0x2c77('0x2d')],[db[_0x2c77('0x1e')]['fn']('COUNT',db[_0x2c77('0x1e')]['fn']('IF',db[_0x2c77('0x1e')][_0x2c77('0x22')]('`state`\x20=\x200,\x201,\x20null'))),_0x2c77('0x2e')],[db[_0x2c77('0x1e')]['fn'](_0x2c77('0x1f'),db[_0x2c77('0x1e')]['fn']('IF',db['sequelize'][_0x2c77('0x22')](_0x2c77('0x2f')))),_0x2c77('0x30')],[db[_0x2c77('0x1e')]['fn'](_0x2c77('0x1f'),db[_0x2c77('0x1e')]['fn']('IF',db[_0x2c77('0x1e')][_0x2c77('0x22')]('`state`\x20=\x204,\x201,\x20null'))),_0x2c77('0x31')],[db[_0x2c77('0x1e')]['fn']('COUNT',db[_0x2c77('0x1e')]['fn']('IF',db[_0x2c77('0x1e')]['literal'](_0x2c77('0x32')))),_0x2c77('0x33')],[db[_0x2c77('0x1e')]['fn'](_0x2c77('0x1f'),db['sequelize']['fn']('IF',db[_0x2c77('0x1e')]['literal']('`state`\x20=\x208,\x201,\x20null'))),_0x2c77('0x34')],[db[_0x2c77('0x1e')]['fn'](_0x2c77('0x1f'),db[_0x2c77('0x1e')]['fn']('IF',db[_0x2c77('0x1e')][_0x2c77('0x22')](_0x2c77('0x35')))),_0x2c77('0x36')],[db[_0x2c77('0x1e')]['fn']('COUNT',db[_0x2c77('0x1e')]['fn']('IF',db[_0x2c77('0x1e')][_0x2c77('0x22')](_0x2c77('0x37')))),_0x2c77('0x38')],[db[_0x2c77('0x1e')]['fn'](_0x2c77('0x1f'),db[_0x2c77('0x1e')]['fn']('IF',db['sequelize']['literal'](_0x2c77('0x39')))),_0x2c77('0x3a')],[db[_0x2c77('0x1e')]['fn']('COUNT',db[_0x2c77('0x1e')]['fn']('IF',db[_0x2c77('0x1e')][_0x2c77('0x22')](_0x2c77('0x3b')))),_0x2c77('0x3c')],[db[_0x2c77('0x1e')]['fn'](_0x2c77('0x1f'),db['sequelize']['fn']('IF',db[_0x2c77('0x1e')][_0x2c77('0x22')]('`state`\x20=\x2014,\x201,\x20null'))),_0x2c77('0x3d')],[db['sequelize']['fn'](_0x2c77('0x1f'),db[_0x2c77('0x1e')]['fn']('IF',db['sequelize'][_0x2c77('0x22')](_0x2c77('0x3e')))),_0x2c77('0x3f')],[db['sequelize']['fn'](_0x2c77('0x1f'),db[_0x2c77('0x1e')]['fn']('IF',db[_0x2c77('0x1e')]['literal']('`state`\x20=\x2016,\x201,\x20null'))),_0x2c77('0x40')],[db[_0x2c77('0x1e')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x2c77('0x41')))),_0x2c77('0x3f')],[db['sequelize']['fn'](_0x2c77('0x1f'),db[_0x2c77('0x1e')]['fn']('IF',db[_0x2c77('0x1e')][_0x2c77('0x22')](_0x2c77('0x42')))),_0x2c77('0x43')]],'group':['campaign']})[_0x2c77('0x19')](function(_0x51618b){logger[_0x2c77('0xc')]('GetVoiceQueueHopperHistory',_0x23acbb);logger['debug']('GetVoiceQueueHopperHistory',_0x23acbb,JSON['stringify'](_0x51618b));_0x27dcf3(_0x51618b);})[_0x2c77('0x1a')](function(_0x3ac251){logger[_0x2c77('0x11')](_0x2c77('0x44'),_0x3ac251[_0x2c77('0x13')],_0x23acbb);_0x533f03(_0x7ecf2a['error'](0x1f4,_0x3ac251['message']));});});};exports[_0x2c77('0x45')]=function(_0x42fca5){var _0x44d47b=this;return new Promise(function(_0x54efed,_0x59d96d){return db[_0x2c77('0x1c')][_0x2c77('0x46')]({'raw':_0x42fca5['options']?_0x42fca5[_0x2c77('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x42fca5[_0x2c77('0x17')]?_0x42fca5[_0x2c77('0x17')]['where']||null:null,'attributes':[[_0x2c77('0x2c'),_0x2c77('0x2d')],[db[_0x2c77('0x1e')]['fn']('COUNT',db[_0x2c77('0x1e')]['col']('id')),_0x2c77('0x47')],[db[_0x2c77('0x1e')]['fn'](_0x2c77('0x1f'),db[_0x2c77('0x1e')]['fn']('IF',db['sequelize'][_0x2c77('0x22')](_0x2c77('0x23')))),'ivrAnswerCallsDay']],'group':[_0x2c77('0x2c')]})['then'](function(_0x36159d){logger['info']('GetCampaignHopperHistory',_0x42fca5);logger[_0x2c77('0xf')]('GetCampaignHopperHistory',_0x42fca5,JSON[_0x2c77('0x10')](_0x36159d));_0x54efed(_0x36159d);})[_0x2c77('0x1a')](function(_0x303d27){logger[_0x2c77('0x11')](_0x2c77('0x45'),_0x303d27[_0x2c77('0x13')],_0x42fca5);_0x59d96d(_0x44d47b[_0x2c77('0x11')](0x1f4,_0x303d27[_0x2c77('0x13')]));});});};
\ No newline at end of file
index 89b6f1e..d12891a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7307=['create','put','/:id','update','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get','index','isAuthenticated','describe','show'];(function(_0x41e826,_0x92a361){var _0x35cb16=function(_0x4d124b){while(--_0x4d124b){_0x41e826['push'](_0x41e826['shift']());}};_0x35cb16(++_0x92a361);}(_0x7307,0x134));var _0x7730=function(_0x3afe18,_0x26922c){_0x3afe18=_0x3afe18-0x0;var _0x19ed1f=_0x7307[_0x3afe18];return _0x19ed1f;};'use strict';var multer=require(_0x7730('0x0'));var util=require('util');var path=require(_0x7730('0x1'));var timeout=require(_0x7730('0x2'));var express=require(_0x7730('0x3'));var router=express[_0x7730('0x4')]();var fs_extra=require(_0x7730('0x5'));var auth=require(_0x7730('0x6'));var interaction=require(_0x7730('0x7'));var config=require(_0x7730('0x8'));var controller=require(_0x7730('0x9'));router[_0x7730('0xa')]('/',auth['isAuthenticated'](),controller[_0x7730('0xb')]);router['get']('/describe',auth[_0x7730('0xc')](),controller[_0x7730('0xd')]);router[_0x7730('0xa')]('/:id',auth[_0x7730('0xc')](),controller[_0x7730('0xe')]);router['post']('/',auth[_0x7730('0xc')](),controller[_0x7730('0xf')]);router[_0x7730('0x10')](_0x7730('0x11'),auth[_0x7730('0xc')](),controller[_0x7730('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x2177=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmHopperHistory.controller','isAuthenticated','index','get','/describe','describe','/:id','show','create','put','update','exports','multer','util'];(function(_0x4a7789,_0x188ce2){var _0xdfd078=function(_0x194d17){while(--_0x194d17){_0x4a7789['push'](_0x4a7789['shift']());}};_0xdfd078(++_0x188ce2);}(_0x2177,0x19c));var _0x7217=function(_0x44b7d6,_0x4a3f3f){_0x44b7d6=_0x44b7d6-0x0;var _0x5346f0=_0x2177[_0x44b7d6];return _0x5346f0;};'use strict';var multer=require(_0x7217('0x0'));var util=require(_0x7217('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x7217('0x2')]();var fs_extra=require(_0x7217('0x3'));var auth=require(_0x7217('0x4'));var interaction=require(_0x7217('0x5'));var config=require('../../config/environment');var controller=require(_0x7217('0x6'));router['get']('/',auth[_0x7217('0x7')](),controller[_0x7217('0x8')]);router[_0x7217('0x9')](_0x7217('0xa'),auth[_0x7217('0x7')](),controller[_0x7217('0xb')]);router['get'](_0x7217('0xc'),auth[_0x7217('0x7')](),controller[_0x7217('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x7217('0xe')]);router[_0x7217('0xf')](_0x7217('0xc'),auth[_0x7217('0x7')](),controller[_0x7217('0x10')]);module[_0x7217('0x11')]=router;
\ No newline at end of file
index 860ec69..7dc6836 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x891b=['name','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x891b,0xc5));var _0xb891=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x891b[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xb891('0x0')],'unique':_0xb891('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'dialPrefix':{'type':Sequelize[_0xb891('0x0')]}};
\ No newline at end of file
+var _0x83d3=['sequelize','exports','STRING','name'];(function(_0x2c9b9f,_0x114297){var _0xce1e89=function(_0x59dc51){while(--_0x59dc51){_0x2c9b9f['push'](_0x2c9b9f['shift']());}};_0xce1e89(++_0x114297);}(_0x83d3,0x17c));var _0x383d=function(_0x36be38,_0x50b484){_0x36be38=_0x36be38-0x0;var _0x10a629=_0x83d3[_0x36be38];return _0x10a629;};'use strict';var Sequelize=require(_0x383d('0x0'));module[_0x383d('0x1')]={'name':{'type':Sequelize[_0x383d('0x2')],'unique':_0x383d('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x383d('0x2')]},'dialPrefix':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 421af18..6ae91db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd572=['alias','select','from','c.ListId\x20=\x20?','field','c.cf_','customField_','cm_contact_has_items','ItemTypeId\x20=\x20?','description','description_additionalPhone_','toString','isEmpty','now','writeFileSync','/tmp/list_%d_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','Content-type','text/csv','download','addCustomField','sequelize','transaction','addCustomFields','Sequelize','text','number','INTEGER','switch','defaultValue','queryInterface','addColumn','cm_contacts','cf_%s','getCustomFields','findAndCountAll','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','User','getAgents','info','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./cmList.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','reject','save','update','then','get','UserProfileResource','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','merge','filter','CmList','includeAll','include','findAll','catch','params','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','ListId','getDispositions','findOne','Disposition','pick','options','rows','removeDispositions','ids','addContacts','CmContact','tags','isArray','join','push','each','omit','dataValues','errors','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','format','raw','OrderBy'];(function(_0x547e90,_0xacb332){var _0x13e295=function(_0x228fc3){while(--_0x228fc3){_0x547e90['push'](_0x547e90['shift']());}};_0x13e295(++_0xacb332);}(_0xd572,0xd4));var _0x2d57=function(_0x385e2f,_0x233ffb){_0x385e2f=_0x385e2f-0x0;var _0x1ac525=_0xd572[_0x385e2f];return _0x1ac525;};'use strict';var emlformat=require(_0x2d57('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x2d57('0x1'));var rp=require(_0x2d57('0x2'));var moment=require(_0x2d57('0x3'));var BPromise=require(_0x2d57('0x4'));var Mustache=require(_0x2d57('0x5'));var util=require(_0x2d57('0x6'));var path=require(_0x2d57('0x7'));var sox=require(_0x2d57('0x8'));var csv=require(_0x2d57('0x9'));var ejs=require(_0x2d57('0xa'));var fs=require('fs');var fs_extra=require(_0x2d57('0xb'));var _=require(_0x2d57('0xc'));var squel=require(_0x2d57('0xd'));var crypto=require(_0x2d57('0xe'));var jsforce=require(_0x2d57('0xf'));var deskjs=require(_0x2d57('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x2d57('0x11'));var Redis=require(_0x2d57('0x12'));var authService=require(_0x2d57('0x13'));var qs=require(_0x2d57('0x14'));var as=require(_0x2d57('0x15'));var hardwareService=require(_0x2d57('0x16'));var logger=require('../../config/logger')(_0x2d57('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x2d57('0x18'));var db=require('../../mysqldb')['db'];var csv_results;config[_0x2d57('0x19')]=_[_0x2d57('0x1a')](config['redis'],{'host':_0x2d57('0x1b'),'port':0x18eb});var socket=require(_0x2d57('0x1c'))(new Redis(config[_0x2d57('0x19')]));require(_0x2d57('0x1d'))[_0x2d57('0x1e')](socket);function respondWithStatusCode(_0x523688,_0x24a160){_0x24a160=_0x24a160||0xcc;return function(_0x12e131){if(_0x12e131){return _0x523688[_0x2d57('0x1f')](_0x24a160);}return _0x523688[_0x2d57('0x20')](_0x24a160)[_0x2d57('0x21')]();};}function respondWithResult(_0x4aea3e,_0x5f5a84){_0x5f5a84=_0x5f5a84||0xc8;return function(_0x3d0284){if(_0x3d0284){return _0x4aea3e[_0x2d57('0x20')](_0x5f5a84)[_0x2d57('0x22')](_0x3d0284);}};}function respondWithFilteredResult(_0x4fe71b,_0xdb535a){return function(_0x17f9dd){if(_0x17f9dd){var _0x2d478a=typeof _0xdb535a[_0x2d57('0x23')]===_0x2d57('0x24')&&typeof _0xdb535a['limit']==='undefined';var _0x27dd01=_0x17f9dd[_0x2d57('0x25')];var _0xdd3c3c=_0x2d478a?0x0:_0xdb535a[_0x2d57('0x23')];var _0x375332=_0x2d478a?_0x17f9dd['count']:_0xdb535a[_0x2d57('0x23')]+_0xdb535a[_0x2d57('0x26')];var _0x2951cf;if(_0x375332>=_0x27dd01){_0x375332=_0x27dd01;_0x2951cf=0xc8;}else{_0x2951cf=0xce;}_0x4fe71b[_0x2d57('0x20')](_0x2951cf);return _0x4fe71b[_0x2d57('0x27')]('Content-Range',_0xdd3c3c+'-'+_0x375332+'/'+_0x27dd01)['json'](_0x17f9dd);}return null;};}function patchUpdates(_0x191ce2){return function(_0x5a7071){try{jsonpatch[_0x2d57('0x28')](_0x5a7071,_0x191ce2,!![]);}catch(_0x22ede2){return BPromise[_0x2d57('0x29')](_0x22ede2);}return _0x5a7071[_0x2d57('0x2a')]();};}function saveUpdates(_0x58c5f0,_0x1c1358){return function(_0x1a3e11){if(_0x1a3e11){return _0x1a3e11[_0x2d57('0x2b')](_0x58c5f0)[_0x2d57('0x2c')](function(_0x2e20e0){return _0x2e20e0;});}return null;};}function removeEntity(_0x585504,_0x483359){return function(_0x546bcd){if(_0x546bcd){return _0x546bcd['destroy']()[_0x2d57('0x2c')](function(){var _0x5309fc=_0x546bcd[_0x2d57('0x2d')]({'plain':!![]});var _0x10867f='Lists';return db[_0x2d57('0x2e')][_0x2d57('0x2f')]({'where':{'type':_0x10867f,'resourceId':_0x5309fc['id']}})['then'](function(){return _0x546bcd;});})[_0x2d57('0x2c')](function(){_0x585504[_0x2d57('0x20')](0xcc)[_0x2d57('0x21')]();});}};}function handleEntityNotFound(_0x50fc08,_0x2aab6d){return function(_0x259fe4){if(!_0x259fe4){_0x50fc08[_0x2d57('0x1f')](0x194);}return _0x259fe4;};}function handleError(_0x10e41e,_0x976d41){_0x976d41=_0x976d41||0x1f4;return function(_0x19cef7){logger[_0x2d57('0x30')](_0x19cef7[_0x2d57('0x31')]);if(_0x19cef7[_0x2d57('0x32')]){delete _0x19cef7[_0x2d57('0x32')];}_0x10e41e[_0x2d57('0x20')](_0x976d41)[_0x2d57('0x33')](_0x19cef7);};}exports[_0x2d57('0x34')]=function(_0x528fd0,_0xe619ce){var _0xb11d6b={},_0x47a263={},_0x267331={'count':0x0,'rows':[]};var _0x1c2e62=_[_0x2d57('0x35')](db['CmList'][_0x2d57('0x36')],function(_0x498bb2){return{'name':_0x498bb2[_0x2d57('0x37')],'type':_0x498bb2[_0x2d57('0x38')][_0x2d57('0x39')]};});_0x47a263['model']=_['map'](_0x1c2e62,'name');_0x47a263[_0x2d57('0x3a')]=_[_0x2d57('0x3b')](_0x528fd0[_0x2d57('0x3a')]);_0x47a263[_0x2d57('0x3c')]=_[_0x2d57('0x3d')](_0x47a263[_0x2d57('0x3e')],_0x47a263['query']);_0xb11d6b[_0x2d57('0x3f')]=_[_0x2d57('0x3d')](_0x47a263[_0x2d57('0x3e')],qs['fields'](_0x528fd0['query'][_0x2d57('0x40')]));_0xb11d6b[_0x2d57('0x3f')]=_0xb11d6b[_0x2d57('0x3f')]['length']?_0xb11d6b['attributes']:_0x47a263['model'];if(!_0x528fd0['query'][_0x2d57('0x41')](_0x2d57('0x42'))){_0xb11d6b[_0x2d57('0x26')]=qs['limit'](_0x528fd0['query'][_0x2d57('0x26')]);_0xb11d6b[_0x2d57('0x23')]=qs[_0x2d57('0x23')](_0x528fd0[_0x2d57('0x3a')][_0x2d57('0x23')]);}_0xb11d6b[_0x2d57('0x43')]=qs['sort'](_0x528fd0[_0x2d57('0x3a')][_0x2d57('0x44')]);_0xb11d6b['where']=qs[_0x2d57('0x3c')](_['pick'](_0x528fd0['query'],_0x47a263[_0x2d57('0x3c')]),_0x1c2e62);if(_0x528fd0[_0x2d57('0x3a')]['filter']){_0xb11d6b[_0x2d57('0x45')]=_[_0x2d57('0x46')](_0xb11d6b[_0x2d57('0x45')],{'$or':_[_0x2d57('0x35')](_0x1c2e62,function(_0x252db0){if(_0x252db0['type']!=='VIRTUAL'){var _0x52b8d5={};_0x52b8d5[_0x252db0['name']]={'$like':'%'+_0x528fd0[_0x2d57('0x3a')][_0x2d57('0x47')]+'%'};return _0x52b8d5;}})});}_0xb11d6b=_[_0x2d57('0x46')]({},_0xb11d6b,_0x528fd0['options']);var _0x26470a={'where':_0xb11d6b[_0x2d57('0x45')]};return db[_0x2d57('0x48')][_0x2d57('0x25')](_0x26470a)['then'](function(_0x27ff0c){_0x267331['count']=_0x27ff0c;if(_0x528fd0[_0x2d57('0x3a')][_0x2d57('0x49')]){_0xb11d6b[_0x2d57('0x4a')]=[{'all':!![]}];}return db[_0x2d57('0x48')][_0x2d57('0x4b')](_0xb11d6b);})[_0x2d57('0x2c')](function(_0x3e1a2b){_0x267331['rows']=_0x3e1a2b;return _0x267331;})[_0x2d57('0x2c')](respondWithFilteredResult(_0xe619ce,_0xb11d6b))[_0x2d57('0x4c')](handleError(_0xe619ce,null));};exports['show']=function(_0x49ca0c,_0x4de210){var _0x18e0dd={'raw':![],'where':{'id':_0x49ca0c[_0x2d57('0x4d')]['id']}},_0x129a70={};_0x129a70['model']=_[_0x2d57('0x3b')](db[_0x2d57('0x48')][_0x2d57('0x36')]);_0x129a70['query']=_[_0x2d57('0x3b')](_0x49ca0c[_0x2d57('0x3a')]);_0x129a70['filters']=_[_0x2d57('0x3d')](_0x129a70[_0x2d57('0x3e')],_0x129a70['query']);_0x18e0dd[_0x2d57('0x3f')]=_[_0x2d57('0x3d')](_0x129a70[_0x2d57('0x3e')],qs[_0x2d57('0x40')](_0x49ca0c[_0x2d57('0x3a')]['fields']));_0x18e0dd[_0x2d57('0x3f')]=_0x18e0dd[_0x2d57('0x3f')][_0x2d57('0x4e')]?_0x18e0dd[_0x2d57('0x3f')]:_0x129a70[_0x2d57('0x3e')];if(_0x49ca0c['query']['includeAll']){_0x18e0dd[_0x2d57('0x4a')]=[{'all':!![]}];}_0x18e0dd=_[_0x2d57('0x46')]({},_0x18e0dd,_0x49ca0c['options']);return db['CmList'][_0x2d57('0x4f')](_0x18e0dd)[_0x2d57('0x2c')](handleEntityNotFound(_0x4de210,null))[_0x2d57('0x2c')](respondWithResult(_0x4de210,null))[_0x2d57('0x4c')](handleError(_0x4de210,null));};exports[_0x2d57('0x50')]=function(_0x55fca6,_0x31bacc){return db[_0x2d57('0x48')][_0x2d57('0x50')](_0x55fca6[_0x2d57('0x51')],{})[_0x2d57('0x2c')](function(_0x44a6b5){var _0x16d0a3=_0x55fca6[_0x2d57('0x52')][_0x2d57('0x2d')]({'plain':!![]});if(!_0x16d0a3)throw new Error(_0x2d57('0x53'));if(_0x16d0a3[_0x2d57('0x54')]==='user'){var _0xddafa0=_0x44a6b5[_0x2d57('0x2d')]({'plain':!![]});var _0x345606='Lists';return db[_0x2d57('0x55')]['find']({'where':{'name':_0x345606,'userProfileId':_0x16d0a3[_0x2d57('0x56')]},'raw':!![]})[_0x2d57('0x2c')](function(_0x4c596a){if(_0x4c596a&&_0x4c596a['autoAssociation']===0x0){return db[_0x2d57('0x2e')][_0x2d57('0x50')]({'name':_0xddafa0[_0x2d57('0x32')],'resourceId':_0xddafa0['id'],'type':_0x4c596a[_0x2d57('0x32')],'sectionId':_0x4c596a['id']},{})[_0x2d57('0x2c')](function(){return _0x44a6b5;});}else{return _0x44a6b5;}})[_0x2d57('0x4c')](function(_0x57c043){logger[_0x2d57('0x30')](_0x2d57('0x57'),_0x57c043);throw _0x57c043;});}return _0x44a6b5;})[_0x2d57('0x2c')](respondWithResult(_0x31bacc,0xc9))[_0x2d57('0x4c')](handleError(_0x31bacc,null));};exports[_0x2d57('0x2b')]=function(_0x5d5717,_0x1b7717){if(_0x5d5717[_0x2d57('0x51')]['id']){delete _0x5d5717[_0x2d57('0x51')]['id'];}return db[_0x2d57('0x48')][_0x2d57('0x4f')]({'where':{'id':_0x5d5717[_0x2d57('0x4d')]['id']}})[_0x2d57('0x2c')](handleEntityNotFound(_0x1b7717,null))['then'](saveUpdates(_0x5d5717[_0x2d57('0x51')],null))[_0x2d57('0x2c')](respondWithResult(_0x1b7717,null))[_0x2d57('0x4c')](handleError(_0x1b7717,null));};exports[_0x2d57('0x2f')]=function(_0x4984db,_0x1bd85d){return db[_0x2d57('0x48')][_0x2d57('0x4f')]({'where':{'id':_0x4984db[_0x2d57('0x4d')]['id']}})[_0x2d57('0x2c')](handleEntityNotFound(_0x1bd85d,null))['then'](removeEntity(_0x1bd85d,null))[_0x2d57('0x4c')](handleError(_0x1bd85d,null));};exports[_0x2d57('0x58')]=function(_0x20d987,_0x18a103){return db[_0x2d57('0x48')]['describe']()[_0x2d57('0x2c')](respondWithResult(_0x18a103,null))[_0x2d57('0x4c')](handleError(_0x18a103,null));};exports['addDisposition']=function(_0xa2afcc,_0x5f4234,_0x360302){if(_0xa2afcc['body']['id']){delete _0xa2afcc[_0x2d57('0x51')]['id'];}return db['CmList'][_0x2d57('0x4f')]({'where':{'id':_0xa2afcc[_0x2d57('0x4d')]['id']}})[_0x2d57('0x2c')](handleEntityNotFound(_0x5f4234,null))[_0x2d57('0x2c')](function(_0x154153){if(_0x154153){_0xa2afcc[_0x2d57('0x51')][_0x2d57('0x59')]=_0x154153['id'];return db['Disposition'][_0x2d57('0x50')](_0xa2afcc[_0x2d57('0x51')]);}})[_0x2d57('0x2c')](respondWithResult(_0x5f4234,null))[_0x2d57('0x4c')](handleError(_0x5f4234,null));};exports[_0x2d57('0x5a')]=function(_0x2d5fcf,_0x3216d1,_0x6adcf5){var _0x55e14a={'raw':![],'where':{}};var _0x3c105e={};var _0x1e2f42={'count':0x0,'rows':[]};return db[_0x2d57('0x48')][_0x2d57('0x5b')]({'where':{'id':_0x2d5fcf[_0x2d57('0x4d')]['id']}})[_0x2d57('0x2c')](handleEntityNotFound(_0x3216d1,null))[_0x2d57('0x2c')](function(_0x1742cb){if(_0x1742cb){_0x3c105e[_0x2d57('0x3e')]=_[_0x2d57('0x3b')](db[_0x2d57('0x5c')][_0x2d57('0x36')]);_0x3c105e[_0x2d57('0x3a')]=_['keys'](_0x2d5fcf[_0x2d57('0x3a')]);_0x3c105e[_0x2d57('0x3c')]=_[_0x2d57('0x3d')](_0x3c105e[_0x2d57('0x3e')],_0x3c105e[_0x2d57('0x3a')]);_0x55e14a[_0x2d57('0x3f')]=_['intersection'](_0x3c105e[_0x2d57('0x3e')],qs['fields'](_0x2d5fcf[_0x2d57('0x3a')][_0x2d57('0x40')]));_0x55e14a['attributes']=_0x55e14a[_0x2d57('0x3f')][_0x2d57('0x4e')]?_0x55e14a['attributes']:_0x3c105e[_0x2d57('0x3e')];if(!_0x2d5fcf[_0x2d57('0x3a')][_0x2d57('0x41')](_0x2d57('0x42'))){_0x55e14a[_0x2d57('0x26')]=qs[_0x2d57('0x26')](_0x2d5fcf[_0x2d57('0x3a')][_0x2d57('0x26')]);_0x55e14a[_0x2d57('0x23')]=qs[_0x2d57('0x23')](_0x2d5fcf[_0x2d57('0x3a')][_0x2d57('0x23')]);}_0x55e14a[_0x2d57('0x43')]=qs['sort'](_0x2d5fcf[_0x2d57('0x3a')][_0x2d57('0x44')]);_0x55e14a[_0x2d57('0x45')]=qs['filters'](_[_0x2d57('0x5d')](_0x2d5fcf[_0x2d57('0x3a')],_0x3c105e[_0x2d57('0x3c')]));_0x55e14a['where'][_0x2d57('0x59')]=_0x1742cb['id'];if(_0x2d5fcf[_0x2d57('0x3a')][_0x2d57('0x47')]){_0x55e14a[_0x2d57('0x45')]=_[_0x2d57('0x46')](_0x55e14a['where'],{'$or':_[_0x2d57('0x35')](_0x55e14a[_0x2d57('0x3f')],function(_0x5715d9){var _0x41d6a0={};_0x41d6a0[_0x5715d9]={'$like':'%'+_0x2d5fcf[_0x2d57('0x3a')][_0x2d57('0x47')]+'%'};return _0x41d6a0;})});}_0x55e14a=_['merge']({},_0x55e14a,_0x2d5fcf[_0x2d57('0x5e')]);return db['Disposition'][_0x2d57('0x25')]({'where':_0x55e14a[_0x2d57('0x45')]})[_0x2d57('0x2c')](function(_0x18ddd0){_0x1e2f42[_0x2d57('0x25')]=_0x18ddd0;if(_0x2d5fcf[_0x2d57('0x3a')][_0x2d57('0x49')]){_0x55e14a[_0x2d57('0x4a')]=[{'all':!![]}];}return db['Disposition'][_0x2d57('0x4b')](_0x55e14a);})[_0x2d57('0x2c')](function(_0x1db58d){_0x1e2f42[_0x2d57('0x5f')]=_0x1db58d;return _0x1e2f42;});}})['then'](respondWithFilteredResult(_0x3216d1,_0x55e14a))['catch'](handleError(_0x3216d1,null));};exports[_0x2d57('0x60')]=function(_0x500c48,_0x535e9f,_0x59cd18){return db[_0x2d57('0x48')][_0x2d57('0x4f')]({'where':{'id':_0x500c48['params']['id']}})[_0x2d57('0x2c')](handleEntityNotFound(_0x535e9f,null))[_0x2d57('0x2c')](function(_0x1d7481){if(_0x1d7481){return _0x1d7481[_0x2d57('0x60')](_0x500c48['query'][_0x2d57('0x61')]);}})[_0x2d57('0x2c')](respondWithStatusCode(_0x535e9f,null))['catch'](handleError(_0x535e9f,null));};exports[_0x2d57('0x62')]=function(_0x324f39,_0xb7227d,_0x505d15){return db[_0x2d57('0x48')]['find']({'where':{'id':_0x324f39[_0x2d57('0x4d')]['id']}})[_0x2d57('0x2c')](handleEntityNotFound(_0xb7227d,null))['then'](function(_0x563f7d){if(_0x563f7d){var _0x103da5=[];var _0x1fbbd0={'success':[],'errors':[]};return db[_0x2d57('0x63')][_0x2d57('0x58')]()[_0x2d57('0x2c')](function(_0x39c1a6){if(_0x324f39[_0x2d57('0x51')][_0x2d57('0x64')]&&_[_0x2d57('0x65')](_0x324f39[_0x2d57('0x51')][_0x2d57('0x64')])){if(_0x324f39[_0x2d57('0x51')][_0x2d57('0x64')][_0x2d57('0x4e')]){_0x324f39['body'][_0x2d57('0x64')]=_0x324f39[_0x2d57('0x51')][_0x2d57('0x64')][_0x2d57('0x66')](';')+';';}else{_0x324f39[_0x2d57('0x51')][_0x2d57('0x64')]=null;}}else{_0x324f39[_0x2d57('0x51')][_0x2d57('0x64')]=null;}if(_0x324f39['body']&&_['isArray'](_0x324f39[_0x2d57('0x51')])){for(var _0x56ab0a=0x0;_0x56ab0a<_0x324f39[_0x2d57('0x51')]['length'];_0x56ab0a+=0x1){_0x324f39[_0x2d57('0x51')][_0x56ab0a][_0x2d57('0x59')]=_0x324f39[_0x2d57('0x4d')]['id'];_0x103da5[_0x2d57('0x67')](_0x324f39[_0x2d57('0x51')][_0x56ab0a]);}return BPromise[_0x2d57('0x68')](_0x103da5,function(_0x40448f){return db[_0x2d57('0x63')]['create'](_[_0x2d57('0x69')](_0x40448f,[_0x2d57('0x61'),'id'])||{},{'fields':_[_0x2d57('0x3b')](_0x39c1a6),'raw':!![]})[_0x2d57('0x2c')](function(_0x223a1c){_0x1fbbd0['success'][_0x2d57('0x67')](_0x223a1c[_0x2d57('0x6a')]);})['catch'](function(_0x25fb83){_0x1fbbd0[_0x2d57('0x6b')][_0x2d57('0x67')]({'data':_0x40448f,'error':_0x25fb83[_0x2d57('0x6c')]});});})[_0x2d57('0x2c')](function(_0x3d3633){return _0x1fbbd0;})[_0x2d57('0x4c')](function(_0x49c6f4){return _0x49c6f4;});}else{_0xb7227d[_0x2d57('0x20')](0x190)[_0x2d57('0x22')]({'message':_0x2d57('0x6d')});}});}})[_0x2d57('0x2c')](respondWithResult(_0xb7227d,null))[_0x2d57('0x4c')](handleError(_0xb7227d,null));};exports[_0x2d57('0x6e')]=function(_0x102a5f,_0x5ebbed,_0x52ca98){var _0x4eb4fd;return db[_0x2d57('0x48')][_0x2d57('0x4f')]({'where':{'id':_0x102a5f[_0x2d57('0x4d')]['id']},'include':[{'model':db[_0x2d57('0x6f')],'as':_0x2d57('0x70')}]})['then'](handleEntityNotFound(_0x5ebbed,null))['then'](function(_0x3412f4){if(_0x3412f4){_0x4eb4fd=_0x3412f4;return db[_0x2d57('0x63')][_0x2d57('0x36')];}})[_0x2d57('0x2c')](function(_0x521fbd){if(_0x521fbd){var _0xdf99a9={};var _0x4a5257={};_0x4a5257[_0x2d57('0x3e')]=_['concat'](_[_0x2d57('0x3b')](_0x521fbd),_[_0x2d57('0x35')](_0x4eb4fd[_0x2d57('0x70')],function(_0xd07fe){return util[_0x2d57('0x71')]('cf_%d',_0xd07fe['id']);}));_0x4a5257[_0x2d57('0x3a')]=_['keys'](_0x102a5f[_0x2d57('0x3a')]);_0x4a5257[_0x2d57('0x3c')]=_[_0x2d57('0x3d')](_0x4a5257[_0x2d57('0x3e')],_0x4a5257[_0x2d57('0x3a')]);_0xdf99a9[_0x2d57('0x3f')]=_['intersection'](_0x4a5257[_0x2d57('0x3e')],qs['fields'](_0x102a5f[_0x2d57('0x3a')][_0x2d57('0x40')]));_0xdf99a9['attributes']=_0xdf99a9[_0x2d57('0x3f')][_0x2d57('0x4e')]?_0xdf99a9[_0x2d57('0x3f')]:_0x4a5257[_0x2d57('0x3e')];if(!_0x102a5f['query'][_0x2d57('0x41')]('nolimit')){_0xdf99a9['limit']=qs[_0x2d57('0x26')](_0x102a5f[_0x2d57('0x3a')][_0x2d57('0x26')]);_0xdf99a9[_0x2d57('0x23')]=qs['offset'](_0x102a5f[_0x2d57('0x3a')]['offset']);}_0xdf99a9['order']=qs[_0x2d57('0x44')](_0x102a5f[_0x2d57('0x3a')][_0x2d57('0x44')]);_0xdf99a9['where']=qs[_0x2d57('0x3c')](_[_0x2d57('0x5d')](_0x102a5f['query'],_0x4a5257['filters']));_0xdf99a9[_0x2d57('0x72')]=!![];if(_0x102a5f[_0x2d57('0x3a')][_0x2d57('0x47')]){_0xdf99a9[_0x2d57('0x45')]=_[_0x2d57('0x46')](_0xdf99a9[_0x2d57('0x45')],{'$or':_['map'](_0xdf99a9[_0x2d57('0x3f')],function(_0x15bde5){var _0xbbaae4={};_0xbbaae4[_0x15bde5]={'$like':'%'+_0x102a5f[_0x2d57('0x3a')][_0x2d57('0x47')]+'%'};return _0xbbaae4;})});}_0xdf99a9=_[_0x2d57('0x46')]({},_0xdf99a9,_0x102a5f[_0x2d57('0x5e')]);return _0x4eb4fd[_0x2d57('0x6e')](_0xdf99a9);}})[_0x2d57('0x2c')](respondWithResult(_0x5ebbed,null))[_0x2d57('0x4c')](handleError(_0x5ebbed,null));};exports['getContactsCsv']=function(_0x1833d6,_0x4a09f5,_0x2c2dcc){var _0x1c1231;var _0x5248fd;var _0x5cccfd;var _0x2b84f5=_0x1833d6[_0x2d57('0x4d')]['id'];csv_results=[];return db['ContactItemType'][_0x2d57('0x4b')]({'attributes':['id',_0x2d57('0x32')],'raw':!![],'order':[_0x2d57('0x73')]})[_0x2d57('0x2c')](function(_0x570919){_0x1c1231=_0x570919;var _0xfe3d57=_[_0x2d57('0x3b')](db[_0x2d57('0x63')][_0x2d57('0x36')]);return db[_0x2d57('0x6f')][_0x2d57('0x4b')]({'raw':!![],'attributes':['id',_0x2d57('0x74')]})[_0x2d57('0x2c')](function(_0x19a521){_0x5248fd=_0x19a521;var _0x2a504a=squel[_0x2d57('0x75')]()['fields'](_0xfe3d57)[_0x2d57('0x76')]('cm_contacts','c')['where'](_0x2d57('0x77'),_0x2b84f5)['where']('c.deletedAt\x20is\x20null')['distinct']();for(var _0x5280fe=0x0;_0x5280fe<_0x5248fd['length'];_0x5280fe++){_0x2a504a[_0x2d57('0x78')](_0x2d57('0x79')+_0x5248fd[_0x5280fe]['id'],_0x2d57('0x7a')+_0x5248fd[_0x5280fe]['alias']);}for(var _0x5280fe=0x0;_0x5280fe<_0x1c1231[_0x2d57('0x4e')];_0x5280fe++){_0x2a504a[_0x2d57('0x78')](squel[_0x2d57('0x75')]()['field']('item')['from'](_0x2d57('0x7b'))[_0x2d57('0x45')](_0x2d57('0x7c'),_0x1c1231[_0x5280fe]['id'])['where']('CmContactId\x20=\x20c.id'),'additionalPhone_'+_0x1c1231[_0x5280fe]['name']);_0x2a504a[_0x2d57('0x78')](squel[_0x2d57('0x75')]()[_0x2d57('0x78')](_0x2d57('0x7d'))[_0x2d57('0x76')](_0x2d57('0x7b'))['where']('ItemTypeId\x20=\x20?',_0x1c1231[_0x5280fe]['id'])[_0x2d57('0x45')]('CmContactId\x20=\x20c.id'),_0x2d57('0x7e')+_0x1c1231[_0x5280fe][_0x2d57('0x32')]);}var _0x4112da=[];_0x4112da[_0x2d57('0x67')](_0x2a504a['toString']());BPromise['each'](_0x4112da,handleQuery)[_0x2d57('0x2c')](function(_0x952c45){handleQuery(_0x2a504a[_0x2d57('0x7f')]());var _0x4cb5e5=csv_results[0x0];if(!_[_0x2d57('0x80')](_0x4cb5e5)){var _0x2d7f79=toCsv(_0x4cb5e5);var _0x3f7cd0=Date[_0x2d57('0x81')]();fs[_0x2d57('0x82')](util[_0x2d57('0x71')](_0x2d57('0x83'),_0x2b84f5,_0x3f7cd0),_0x2d7f79);_0x4a09f5[_0x2d57('0x84')](_0x2d57('0x85'),_0x2d57('0x86')+util[_0x2d57('0x71')](_0x2d57('0x87'),_0x2b84f5,_0x3f7cd0));_0x4a09f5[_0x2d57('0x84')](_0x2d57('0x88'),_0x2d57('0x89'));return _0x4a09f5[_0x2d57('0x8a')](util['format'](_0x2d57('0x83'),_0x2b84f5,_0x3f7cd0));}else{return _0x4a09f5[_0x2d57('0x1f')](0xcc);}});});});};exports[_0x2d57('0x8b')]=function(_0x58e978,_0x28fde5,_0x4a304b){var _0x5c1cb0;delete _0x58e978[_0x2d57('0x51')]['id'];return db[_0x2d57('0x48')][_0x2d57('0x5b')]({'where':{'id':_0x58e978[_0x2d57('0x4d')]['id']}})[_0x2d57('0x2c')](handleEntityNotFound(_0x28fde5,null))[_0x2d57('0x2c')](function(_0x2e45b1){if(_0x2e45b1){return db[_0x2d57('0x8c')][_0x2d57('0x8d')](function(_0x531f69){return db['CmCustomField'][_0x2d57('0x50')](_0x58e978[_0x2d57('0x51')],{'transaction':_0x531f69})['then'](function(_0x5937d5){_0x5c1cb0=_0x5937d5;return _0x2e45b1[_0x2d57('0x8e')](_0x5937d5,{'transaction':_0x531f69});})['then'](function(){var _0x3410cf={'type':db[_0x2d57('0x8f')]['TEXT'],'transaction':_0x531f69};switch(_0x58e978[_0x2d57('0x51')][_0x2d57('0x38')]){case _0x2d57('0x90'):_0x3410cf[_0x2d57('0x38')]=db[_0x2d57('0x8f')]['TEXT'];break;case _0x2d57('0x91'):_0x3410cf[_0x2d57('0x38')]=db[_0x2d57('0x8f')][_0x2d57('0x92')];break;case _0x2d57('0x93'):_0x3410cf[_0x2d57('0x38')]=db[_0x2d57('0x8f')]['BOOLEAN'];_0x3410cf[_0x2d57('0x94')]=![];break;default:}return db[_0x2d57('0x8c')][_0x2d57('0x95')][_0x2d57('0x96')](_0x2d57('0x97'),util[_0x2d57('0x71')](_0x2d57('0x98'),_0x5c1cb0['id']),_0x3410cf);})['then'](function(){return _0x5c1cb0;});});}})[_0x2d57('0x2c')](respondWithResult(_0x28fde5,null))[_0x2d57('0x4c')](handleError(_0x28fde5,null));};exports[_0x2d57('0x99')]=function(_0x376c8b,_0x404b29,_0x527a11){var _0x5aacd3={};var _0x49233b={};var _0x15b589;var _0x2a7b4a;return db[_0x2d57('0x48')][_0x2d57('0x5b')]({'where':{'id':_0x376c8b[_0x2d57('0x4d')]['id']}})['then'](handleEntityNotFound(_0x404b29,null))[_0x2d57('0x2c')](function(_0x16a588){if(_0x16a588){_0x15b589=_0x16a588;_0x49233b['model']=_[_0x2d57('0x3b')](db[_0x2d57('0x6f')][_0x2d57('0x36')]);_0x49233b[_0x2d57('0x3a')]=_[_0x2d57('0x3b')](_0x376c8b[_0x2d57('0x3a')]);_0x49233b['filters']=_[_0x2d57('0x3d')](_0x49233b[_0x2d57('0x3e')],_0x49233b['query']);_0x5aacd3[_0x2d57('0x3f')]=_[_0x2d57('0x3d')](_0x49233b['model'],qs['fields'](_0x376c8b[_0x2d57('0x3a')][_0x2d57('0x40')]));_0x5aacd3[_0x2d57('0x3f')]=_0x5aacd3[_0x2d57('0x3f')][_0x2d57('0x4e')]?_0x5aacd3['attributes']:_0x49233b['model'];_0x5aacd3[_0x2d57('0x43')]=qs[_0x2d57('0x44')](_0x376c8b[_0x2d57('0x3a')][_0x2d57('0x44')]);_0x5aacd3[_0x2d57('0x45')]=qs['filters'](_[_0x2d57('0x5d')](_0x376c8b['query'],_0x49233b[_0x2d57('0x3c')]));_0x5aacd3[_0x2d57('0x45')]=_['merge'](_0x5aacd3[_0x2d57('0x45')],{'$or':[{'ListId':_0x16a588['id']},{'ListId':null}]});if(_0x376c8b['query']['filter']){_0x5aacd3[_0x2d57('0x45')]=_[_0x2d57('0x46')](_0x5aacd3['where'],{'$or':_['map'](_0x5aacd3[_0x2d57('0x3f')],function(_0x22c25a){var _0x48d858={};_0x48d858[_0x22c25a]={'$like':'%'+_0x376c8b['query'][_0x2d57('0x47')]+'%'};return _0x48d858;})});}_0x5aacd3=_[_0x2d57('0x46')]({},_0x5aacd3,_0x376c8b['options']);return db[_0x2d57('0x6f')][_0x2d57('0x9a')](_0x5aacd3);}})[_0x2d57('0x2c')](respondWithResult(_0x404b29,null))['catch'](handleError(_0x404b29,null));};exports['getGlobalCustomFields']=function(_0x5075b1,_0x468943){return db[_0x2d57('0x6f')][_0x2d57('0x9a')]({'where':{'ListId':null}})[_0x2d57('0x2c')](handleEntityNotFound(_0x468943,null))[_0x2d57('0x2c')](function(_0x19baed){return _0x19baed;})[_0x2d57('0x2c')](respondWithResult(_0x468943,null))['catch'](handleError(_0x468943,null));};exports[_0x2d57('0x9b')]=function(_0x12fcd3,_0xc53d6c,_0x5b8e66){return db[_0x2d57('0x48')]['find']({'where':{'id':_0x12fcd3['params']['id']}})[_0x2d57('0x2c')](handleEntityNotFound(_0xc53d6c,null))[_0x2d57('0x2c')](function(_0x4dd5c4){if(_0x4dd5c4){return _0x4dd5c4[_0x2d57('0x9b')](_0x12fcd3['body'][_0x2d57('0x61')],_[_0x2d57('0x69')](_0x12fcd3['body'],[_0x2d57('0x61'),'id'])||{})[_0x2d57('0x9c')](function(_0x14ebd8){for(var _0x4c491a=0x0;_0x4c491a<_0x12fcd3['body'][_0x2d57('0x61')][_0x2d57('0x4e')];_0x4c491a+=0x1){socket[_0x2d57('0x9d')](_0x2d57('0x9e'),{'UserId':Number(_0x12fcd3['body']['ids'][_0x4c491a]),'CmListId':Number(_0x12fcd3[_0x2d57('0x4d')]['id'])});}return _0x14ebd8;});}})[_0x2d57('0x2c')](respondWithResult(_0xc53d6c,null))[_0x2d57('0x4c')](handleError(_0xc53d6c,null));};exports[_0x2d57('0x9f')]=function(_0x4085bf,_0x4b1613,_0x3446b0){return db[_0x2d57('0x48')][_0x2d57('0x4f')]({'where':{'id':_0x4085bf[_0x2d57('0x4d')]['id']}})[_0x2d57('0x2c')](handleEntityNotFound(_0x4b1613,null))[_0x2d57('0x2c')](function(_0x4a718a){if(_0x4a718a){return _0x4a718a[_0x2d57('0x9f')](_0x4085bf['query'][_0x2d57('0x61')])[_0x2d57('0x2c')](function(){if(_[_0x2d57('0x65')](_0x4085bf[_0x2d57('0x3a')][_0x2d57('0x61')])){for(var _0x163d0e=0x0;_0x163d0e<_0x4085bf[_0x2d57('0x3a')]['ids'][_0x2d57('0x4e')];_0x163d0e+=0x1){socket[_0x2d57('0x9d')](_0x2d57('0xa0'),{'UserId':Number(_0x4085bf[_0x2d57('0x3a')]['ids'][_0x163d0e]),'CmListId':Number(_0x4085bf['params']['id'])});}}else{socket[_0x2d57('0x9d')](_0x2d57('0xa0'),{'UserId':Number(_0x4085bf[_0x2d57('0x3a')][_0x2d57('0x61')]),'CmListId':Number(_0x4085bf[_0x2d57('0x4d')]['id'])});}});}})['then'](respondWithStatusCode(_0x4b1613,null))[_0x2d57('0x4c')](handleError(_0x4b1613,null));};exports['getAgents']=function(_0x309daa,_0x310065,_0x17df55){var _0x2146be={};var _0x3b0a6a={};var _0x10e2aa;var _0x4e98d7;return db[_0x2d57('0x48')]['findOne']({'where':{'id':_0x309daa['params']['id']}})[_0x2d57('0x2c')](handleEntityNotFound(_0x310065,null))[_0x2d57('0x2c')](function(_0x5c8302){if(_0x5c8302){_0x10e2aa=_0x5c8302;_0x3b0a6a['model']=_[_0x2d57('0x3b')](db[_0x2d57('0xa1')][_0x2d57('0x36')]);_0x3b0a6a[_0x2d57('0x3a')]=_[_0x2d57('0x3b')](_0x309daa[_0x2d57('0x3a')]);_0x3b0a6a[_0x2d57('0x3c')]=_[_0x2d57('0x3d')](_0x3b0a6a['model'],_0x3b0a6a[_0x2d57('0x3a')]);_0x2146be['attributes']=_[_0x2d57('0x3d')](_0x3b0a6a[_0x2d57('0x3e')],qs['fields'](_0x309daa[_0x2d57('0x3a')][_0x2d57('0x40')]));_0x2146be[_0x2d57('0x3f')]=_0x2146be[_0x2d57('0x3f')][_0x2d57('0x4e')]?_0x2146be['attributes']:_0x3b0a6a['model'];_0x2146be[_0x2d57('0x43')]=qs['sort'](_0x309daa['query'][_0x2d57('0x44')]);_0x2146be[_0x2d57('0x45')]=qs[_0x2d57('0x3c')](_[_0x2d57('0x5d')](_0x309daa['query'],_0x3b0a6a[_0x2d57('0x3c')]));if(_0x309daa['query'][_0x2d57('0x47')]){_0x2146be[_0x2d57('0x45')]=_[_0x2d57('0x46')](_0x2146be['where'],{'$or':_['map'](_0x2146be['attributes'],function(_0x4e1c6c){var _0x2774af={};_0x2774af[_0x4e1c6c]={'$like':'%'+_0x309daa[_0x2d57('0x3a')][_0x2d57('0x47')]+'%'};return _0x2774af;})});}_0x2146be=_['merge']({},_0x2146be,_0x309daa[_0x2d57('0x5e')]);return _0x10e2aa[_0x2d57('0xa2')](_0x2146be);}})['then'](function(_0xd59c64){if(_0xd59c64){_0x4e98d7=_0xd59c64['length'];if(!_0x309daa[_0x2d57('0x3a')][_0x2d57('0x41')](_0x2d57('0x42'))){_0x2146be[_0x2d57('0x26')]=qs[_0x2d57('0x26')](_0x309daa[_0x2d57('0x3a')][_0x2d57('0x26')]);_0x2146be[_0x2d57('0x23')]=qs[_0x2d57('0x23')](_0x309daa[_0x2d57('0x3a')]['offset']);}return _0x10e2aa[_0x2d57('0xa2')](_0x2146be);}})[_0x2d57('0x2c')](function(_0xe77d8b){if(_0xe77d8b){return _0xe77d8b?{'count':_0x4e98d7,'rows':_0xe77d8b}:null;}})[_0x2d57('0x2c')](respondWithResult(_0x310065,null))['catch'](handleError(_0x310065,null));};function handleQuery(_0x20d7d6){logger[_0x2d57('0xa3')](_0x20d7d6);return db[_0x2d57('0x8c')][_0x2d57('0x3a')](_0x20d7d6)[_0x2d57('0x9c')](function(_0x2f7972){csv_results[_0x2d57('0x67')](_0x2f7972);})[_0x2d57('0x4c')](function(_0xb083cf){logger['error'](_0xb083cf['message']);});}
\ No newline at end of file
+var _0xdd3e=['zip-dir','moment','bluebird','util','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmList.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','then','get','Lists','UserProfileResource','destroy','error','stack','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','where','pick','merge','filter','options','CmList','findAll','catch','show','length','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','update','params','describe','addDisposition','findOne','order','sort','Disposition','include','removeDispositions','ids','CmContact','tags','isArray','ListId','push','each','omit','success','dataValues','errors','CustomFields','format','getContacts','getContactsCsv','OrderBy','CmCustomField','alias','select','from','cm_contacts','c.ListId\x20=\x20?','c.deletedAt\x20is\x20null','distinct','field','customField_','item','cm_contact_has_items','ItemTypeId\x20=\x20?','additionalPhone_','description','CmContactId\x20=\x20c.id','description_additionalPhone_','toString','isEmpty','writeFileSync','/tmp/list_%d_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','Content-type','text/csv','download','sequelize','transaction','addCustomFields','TEXT','text','number','INTEGER','switch','Sequelize','BOOLEAN','defaultValue','addColumn','cf_%s','getCustomFields','findAndCountAll','getGlobalCustomFields','addAgents','emit','userCmList:save','removeAgents','getAgents','info','spread','eml-format','rimraf'];(function(_0x46e7ed,_0x608b0b){var _0x1ea300=function(_0x527ded){while(--_0x527ded){_0x46e7ed['push'](_0x46e7ed['shift']());}};_0x1ea300(++_0x608b0b);}(_0xdd3e,0x9e));var _0xedd3=function(_0x27480c,_0x55cde9){_0x27480c=_0x27480c-0x0;var _0x425b8d=_0xdd3e[_0x27480c];return _0x425b8d;};'use strict';var emlformat=require(_0xedd3('0x0'));var rimraf=require(_0xedd3('0x1'));var zipdir=require(_0xedd3('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xedd3('0x3'));var BPromise=require(_0xedd3('0x4'));var Mustache=require('mustache');var util=require(_0xedd3('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xedd3('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xedd3('0x7'));var _=require(_0xedd3('0x8'));var squel=require(_0xedd3('0x9'));var crypto=require(_0xedd3('0xa'));var jsforce=require(_0xedd3('0xb'));var deskjs=require(_0xedd3('0xc'));var toCsv=require(_0xedd3('0x6'));var querystring=require(_0xedd3('0xd'));var Papa=require(_0xedd3('0xe'));var Redis=require(_0xedd3('0xf'));var authService=require(_0xedd3('0x10'));var qs=require(_0xedd3('0x11'));var as=require(_0xedd3('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xedd3('0x13'));var utils=require(_0xedd3('0x14'));var config=require(_0xedd3('0x15'));var licenseUtil=require(_0xedd3('0x16'));var db=require(_0xedd3('0x17'))['db'];var csv_results;config[_0xedd3('0x18')]=_[_0xedd3('0x19')](config[_0xedd3('0x18')],{'host':_0xedd3('0x1a'),'port':0x18eb});var socket=require(_0xedd3('0x1b'))(new Redis(config[_0xedd3('0x18')]));require(_0xedd3('0x1c'))[_0xedd3('0x1d')](socket);function respondWithStatusCode(_0x4cad1e,_0x2f354f){_0x2f354f=_0x2f354f||0xcc;return function(_0x24a5b7){if(_0x24a5b7){return _0x4cad1e[_0xedd3('0x1e')](_0x2f354f);}return _0x4cad1e[_0xedd3('0x1f')](_0x2f354f)[_0xedd3('0x20')]();};}function respondWithResult(_0xf69865,_0x36fde1){_0x36fde1=_0x36fde1||0xc8;return function(_0x1444d1){if(_0x1444d1){return _0xf69865[_0xedd3('0x1f')](_0x36fde1)[_0xedd3('0x21')](_0x1444d1);}};}function respondWithFilteredResult(_0xa61051,_0x3c6da3){return function(_0x1008f5){if(_0x1008f5){var _0x54752a=typeof _0x3c6da3[_0xedd3('0x22')]===_0xedd3('0x23')&&typeof _0x3c6da3[_0xedd3('0x24')]==='undefined';var _0x495980=_0x1008f5['count'];var _0x118499=_0x54752a?0x0:_0x3c6da3[_0xedd3('0x22')];var _0x419108=_0x54752a?_0x1008f5[_0xedd3('0x25')]:_0x3c6da3['offset']+_0x3c6da3[_0xedd3('0x24')];var _0x1c7b48;if(_0x419108>=_0x495980){_0x419108=_0x495980;_0x1c7b48=0xc8;}else{_0x1c7b48=0xce;}_0xa61051[_0xedd3('0x1f')](_0x1c7b48);return _0xa61051['set'](_0xedd3('0x26'),_0x118499+'-'+_0x419108+'/'+_0x495980)[_0xedd3('0x21')](_0x1008f5);}return null;};}function patchUpdates(_0x28d9d6){return function(_0x1f8677){try{jsonpatch[_0xedd3('0x27')](_0x1f8677,_0x28d9d6,!![]);}catch(_0x27d323){return BPromise['reject'](_0x27d323);}return _0x1f8677[_0xedd3('0x28')]();};}function saveUpdates(_0x469806,_0x13a48d){return function(_0x110095){if(_0x110095){return _0x110095['update'](_0x469806)[_0xedd3('0x29')](function(_0x3cebfc){return _0x3cebfc;});}return null;};}function removeEntity(_0x59ed72,_0x18fa52){return function(_0x41a328){if(_0x41a328){return _0x41a328['destroy']()[_0xedd3('0x29')](function(){var _0x5d14ae=_0x41a328[_0xedd3('0x2a')]({'plain':!![]});var _0x41abbd=_0xedd3('0x2b');return db[_0xedd3('0x2c')][_0xedd3('0x2d')]({'where':{'type':_0x41abbd,'resourceId':_0x5d14ae['id']}})[_0xedd3('0x29')](function(){return _0x41a328;});})[_0xedd3('0x29')](function(){_0x59ed72[_0xedd3('0x1f')](0xcc)[_0xedd3('0x20')]();});}};}function handleEntityNotFound(_0x3527a6,_0x52174b){return function(_0x327011){if(!_0x327011){_0x3527a6[_0xedd3('0x1e')](0x194);}return _0x327011;};}function handleError(_0x3d8b77,_0x41a732){_0x41a732=_0x41a732||0x1f4;return function(_0x48e129){logger[_0xedd3('0x2e')](_0x48e129[_0xedd3('0x2f')]);if(_0x48e129[_0xedd3('0x30')]){delete _0x48e129[_0xedd3('0x30')];}_0x3d8b77[_0xedd3('0x1f')](_0x41a732)[_0xedd3('0x31')](_0x48e129);};}exports[_0xedd3('0x32')]=function(_0x8185d3,_0x542a76){var _0x32656f={},_0x3d5dd2={},_0x32ad21={'count':0x0,'rows':[]};var _0x1d7f6b=_[_0xedd3('0x33')](db['CmList'][_0xedd3('0x34')],function(_0x435e05){return{'name':_0x435e05['fieldName'],'type':_0x435e05[_0xedd3('0x35')][_0xedd3('0x36')]};});_0x3d5dd2[_0xedd3('0x37')]=_[_0xedd3('0x33')](_0x1d7f6b,_0xedd3('0x30'));_0x3d5dd2[_0xedd3('0x38')]=_[_0xedd3('0x39')](_0x8185d3[_0xedd3('0x38')]);_0x3d5dd2[_0xedd3('0x3a')]=_[_0xedd3('0x3b')](_0x3d5dd2[_0xedd3('0x37')],_0x3d5dd2[_0xedd3('0x38')]);_0x32656f['attributes']=_[_0xedd3('0x3b')](_0x3d5dd2['model'],qs['fields'](_0x8185d3['query'][_0xedd3('0x3c')]));_0x32656f[_0xedd3('0x3d')]=_0x32656f['attributes']['length']?_0x32656f['attributes']:_0x3d5dd2[_0xedd3('0x37')];if(!_0x8185d3['query'][_0xedd3('0x3e')](_0xedd3('0x3f'))){_0x32656f[_0xedd3('0x24')]=qs[_0xedd3('0x24')](_0x8185d3[_0xedd3('0x38')][_0xedd3('0x24')]);_0x32656f['offset']=qs[_0xedd3('0x22')](_0x8185d3[_0xedd3('0x38')][_0xedd3('0x22')]);}_0x32656f['order']=qs['sort'](_0x8185d3[_0xedd3('0x38')]['sort']);_0x32656f[_0xedd3('0x40')]=qs[_0xedd3('0x3a')](_[_0xedd3('0x41')](_0x8185d3[_0xedd3('0x38')],_0x3d5dd2[_0xedd3('0x3a')]),_0x1d7f6b);if(_0x8185d3[_0xedd3('0x38')]['filter']){_0x32656f[_0xedd3('0x40')]=_[_0xedd3('0x42')](_0x32656f[_0xedd3('0x40')],{'$or':_[_0xedd3('0x33')](_0x1d7f6b,function(_0x3c70d9){if(_0x3c70d9[_0xedd3('0x35')]!=='VIRTUAL'){var _0x2fac8c={};_0x2fac8c[_0x3c70d9[_0xedd3('0x30')]]={'$like':'%'+_0x8185d3[_0xedd3('0x38')][_0xedd3('0x43')]+'%'};return _0x2fac8c;}})});}_0x32656f=_['merge']({},_0x32656f,_0x8185d3[_0xedd3('0x44')]);var _0x370403={'where':_0x32656f[_0xedd3('0x40')]};return db[_0xedd3('0x45')][_0xedd3('0x25')](_0x370403)[_0xedd3('0x29')](function(_0x4d023c){_0x32ad21[_0xedd3('0x25')]=_0x4d023c;if(_0x8185d3[_0xedd3('0x38')]['includeAll']){_0x32656f['include']=[{'all':!![]}];}return db['CmList'][_0xedd3('0x46')](_0x32656f);})[_0xedd3('0x29')](function(_0x40b160){_0x32ad21['rows']=_0x40b160;return _0x32ad21;})[_0xedd3('0x29')](respondWithFilteredResult(_0x542a76,_0x32656f))[_0xedd3('0x47')](handleError(_0x542a76,null));};exports[_0xedd3('0x48')]=function(_0x1ec29c,_0x3f1096){var _0x1049d4={'raw':![],'where':{'id':_0x1ec29c['params']['id']}},_0xfec154={};_0xfec154[_0xedd3('0x37')]=_['keys'](db[_0xedd3('0x45')][_0xedd3('0x34')]);_0xfec154['query']=_[_0xedd3('0x39')](_0x1ec29c[_0xedd3('0x38')]);_0xfec154[_0xedd3('0x3a')]=_[_0xedd3('0x3b')](_0xfec154['model'],_0xfec154[_0xedd3('0x38')]);_0x1049d4[_0xedd3('0x3d')]=_[_0xedd3('0x3b')](_0xfec154['model'],qs['fields'](_0x1ec29c[_0xedd3('0x38')][_0xedd3('0x3c')]));_0x1049d4[_0xedd3('0x3d')]=_0x1049d4[_0xedd3('0x3d')][_0xedd3('0x49')]?_0x1049d4[_0xedd3('0x3d')]:_0xfec154['model'];if(_0x1ec29c[_0xedd3('0x38')][_0xedd3('0x4a')]){_0x1049d4['include']=[{'all':!![]}];}_0x1049d4=_[_0xedd3('0x42')]({},_0x1049d4,_0x1ec29c['options']);return db[_0xedd3('0x45')][_0xedd3('0x4b')](_0x1049d4)[_0xedd3('0x29')](handleEntityNotFound(_0x3f1096,null))[_0xedd3('0x29')](respondWithResult(_0x3f1096,null))[_0xedd3('0x47')](handleError(_0x3f1096,null));};exports[_0xedd3('0x4c')]=function(_0x454d5a,_0x224f03){return db[_0xedd3('0x45')][_0xedd3('0x4c')](_0x454d5a[_0xedd3('0x4d')],{})['then'](function(_0x5cad83){var _0x313b01=_0x454d5a[_0xedd3('0x4e')][_0xedd3('0x2a')]({'plain':!![]});if(!_0x313b01)throw new Error(_0xedd3('0x4f'));if(_0x313b01[_0xedd3('0x50')]===_0xedd3('0x4e')){var _0x308797=_0x5cad83[_0xedd3('0x2a')]({'plain':!![]});var _0x244212=_0xedd3('0x2b');return db[_0xedd3('0x51')]['find']({'where':{'name':_0x244212,'userProfileId':_0x313b01['userProfileId']},'raw':!![]})[_0xedd3('0x29')](function(_0x5e7be7){if(_0x5e7be7&&_0x5e7be7[_0xedd3('0x52')]===0x0){return db[_0xedd3('0x2c')][_0xedd3('0x4c')]({'name':_0x308797['name'],'resourceId':_0x308797['id'],'type':_0x5e7be7[_0xedd3('0x30')],'sectionId':_0x5e7be7['id']},{})[_0xedd3('0x29')](function(){return _0x5cad83;});}else{return _0x5cad83;}})[_0xedd3('0x47')](function(_0x68e7b0){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x68e7b0);throw _0x68e7b0;});}return _0x5cad83;})[_0xedd3('0x29')](respondWithResult(_0x224f03,0xc9))[_0xedd3('0x47')](handleError(_0x224f03,null));};exports[_0xedd3('0x53')]=function(_0x5c70ee,_0x252ad8){if(_0x5c70ee[_0xedd3('0x4d')]['id']){delete _0x5c70ee[_0xedd3('0x4d')]['id'];}return db[_0xedd3('0x45')]['find']({'where':{'id':_0x5c70ee[_0xedd3('0x54')]['id']}})['then'](handleEntityNotFound(_0x252ad8,null))[_0xedd3('0x29')](saveUpdates(_0x5c70ee['body'],null))[_0xedd3('0x29')](respondWithResult(_0x252ad8,null))[_0xedd3('0x47')](handleError(_0x252ad8,null));};exports[_0xedd3('0x2d')]=function(_0x1e772d,_0x4dc089){return db[_0xedd3('0x45')][_0xedd3('0x4b')]({'where':{'id':_0x1e772d[_0xedd3('0x54')]['id']}})[_0xedd3('0x29')](handleEntityNotFound(_0x4dc089,null))['then'](removeEntity(_0x4dc089,null))[_0xedd3('0x47')](handleError(_0x4dc089,null));};exports[_0xedd3('0x55')]=function(_0x913a7c,_0x1f35b6){return db[_0xedd3('0x45')]['describe']()[_0xedd3('0x29')](respondWithResult(_0x1f35b6,null))[_0xedd3('0x47')](handleError(_0x1f35b6,null));};exports[_0xedd3('0x56')]=function(_0x4797d8,_0x309d04,_0x13f49d){if(_0x4797d8['body']['id']){delete _0x4797d8[_0xedd3('0x4d')]['id'];}return db['CmList']['find']({'where':{'id':_0x4797d8['params']['id']}})[_0xedd3('0x29')](handleEntityNotFound(_0x309d04,null))[_0xedd3('0x29')](function(_0x65dada){if(_0x65dada){_0x4797d8[_0xedd3('0x4d')]['ListId']=_0x65dada['id'];return db['Disposition'][_0xedd3('0x4c')](_0x4797d8[_0xedd3('0x4d')]);}})[_0xedd3('0x29')](respondWithResult(_0x309d04,null))[_0xedd3('0x47')](handleError(_0x309d04,null));};exports['getDispositions']=function(_0x32dbee,_0x1b2bc8,_0x9b3952){var _0x33c6ff={'raw':![],'where':{}};var _0x3ffb52={};var _0x1e1a5c={'count':0x0,'rows':[]};return db[_0xedd3('0x45')][_0xedd3('0x57')]({'where':{'id':_0x32dbee['params']['id']}})['then'](handleEntityNotFound(_0x1b2bc8,null))[_0xedd3('0x29')](function(_0x46b256){if(_0x46b256){_0x3ffb52['model']=_[_0xedd3('0x39')](db['Disposition']['rawAttributes']);_0x3ffb52[_0xedd3('0x38')]=_[_0xedd3('0x39')](_0x32dbee[_0xedd3('0x38')]);_0x3ffb52[_0xedd3('0x3a')]=_[_0xedd3('0x3b')](_0x3ffb52[_0xedd3('0x37')],_0x3ffb52['query']);_0x33c6ff[_0xedd3('0x3d')]=_['intersection'](_0x3ffb52[_0xedd3('0x37')],qs[_0xedd3('0x3c')](_0x32dbee[_0xedd3('0x38')][_0xedd3('0x3c')]));_0x33c6ff['attributes']=_0x33c6ff[_0xedd3('0x3d')][_0xedd3('0x49')]?_0x33c6ff['attributes']:_0x3ffb52[_0xedd3('0x37')];if(!_0x32dbee['query']['hasOwnProperty'](_0xedd3('0x3f'))){_0x33c6ff[_0xedd3('0x24')]=qs['limit'](_0x32dbee[_0xedd3('0x38')][_0xedd3('0x24')]);_0x33c6ff[_0xedd3('0x22')]=qs[_0xedd3('0x22')](_0x32dbee[_0xedd3('0x38')]['offset']);}_0x33c6ff[_0xedd3('0x58')]=qs['sort'](_0x32dbee[_0xedd3('0x38')][_0xedd3('0x59')]);_0x33c6ff[_0xedd3('0x40')]=qs['filters'](_[_0xedd3('0x41')](_0x32dbee[_0xedd3('0x38')],_0x3ffb52['filters']));_0x33c6ff[_0xedd3('0x40')]['ListId']=_0x46b256['id'];if(_0x32dbee[_0xedd3('0x38')][_0xedd3('0x43')]){_0x33c6ff[_0xedd3('0x40')]=_[_0xedd3('0x42')](_0x33c6ff[_0xedd3('0x40')],{'$or':_[_0xedd3('0x33')](_0x33c6ff[_0xedd3('0x3d')],function(_0x3f766b){var _0x476584={};_0x476584[_0x3f766b]={'$like':'%'+_0x32dbee[_0xedd3('0x38')]['filter']+'%'};return _0x476584;})});}_0x33c6ff=_['merge']({},_0x33c6ff,_0x32dbee['options']);return db[_0xedd3('0x5a')]['count']({'where':_0x33c6ff[_0xedd3('0x40')]})[_0xedd3('0x29')](function(_0x470fbc){_0x1e1a5c['count']=_0x470fbc;if(_0x32dbee['query'][_0xedd3('0x4a')]){_0x33c6ff[_0xedd3('0x5b')]=[{'all':!![]}];}return db[_0xedd3('0x5a')][_0xedd3('0x46')](_0x33c6ff);})['then'](function(_0x4fff2f){_0x1e1a5c['rows']=_0x4fff2f;return _0x1e1a5c;});}})[_0xedd3('0x29')](respondWithFilteredResult(_0x1b2bc8,_0x33c6ff))[_0xedd3('0x47')](handleError(_0x1b2bc8,null));};exports[_0xedd3('0x5c')]=function(_0x369098,_0x2f48bb,_0x165027){return db[_0xedd3('0x45')][_0xedd3('0x4b')]({'where':{'id':_0x369098[_0xedd3('0x54')]['id']}})[_0xedd3('0x29')](handleEntityNotFound(_0x2f48bb,null))[_0xedd3('0x29')](function(_0x5497ad){if(_0x5497ad){return _0x5497ad['removeDispositions'](_0x369098[_0xedd3('0x38')][_0xedd3('0x5d')]);}})[_0xedd3('0x29')](respondWithStatusCode(_0x2f48bb,null))[_0xedd3('0x47')](handleError(_0x2f48bb,null));};exports['addContacts']=function(_0x246cf8,_0x36ffa1,_0x454539){return db['CmList']['find']({'where':{'id':_0x246cf8[_0xedd3('0x54')]['id']}})[_0xedd3('0x29')](handleEntityNotFound(_0x36ffa1,null))[_0xedd3('0x29')](function(_0xf3d18f){if(_0xf3d18f){var _0x5e7ab2=[];var _0x2d87df={'success':[],'errors':[]};return db[_0xedd3('0x5e')][_0xedd3('0x55')]()[_0xedd3('0x29')](function(_0x45c3ed){if(_0x246cf8[_0xedd3('0x4d')][_0xedd3('0x5f')]&&_[_0xedd3('0x60')](_0x246cf8[_0xedd3('0x4d')][_0xedd3('0x5f')])){if(_0x246cf8[_0xedd3('0x4d')]['tags']['length']){_0x246cf8[_0xedd3('0x4d')][_0xedd3('0x5f')]=_0x246cf8[_0xedd3('0x4d')][_0xedd3('0x5f')]['join'](';')+';';}else{_0x246cf8[_0xedd3('0x4d')][_0xedd3('0x5f')]=null;}}else{_0x246cf8[_0xedd3('0x4d')][_0xedd3('0x5f')]=null;}if(_0x246cf8['body']&&_[_0xedd3('0x60')](_0x246cf8[_0xedd3('0x4d')])){for(var _0x188508=0x0;_0x188508<_0x246cf8[_0xedd3('0x4d')][_0xedd3('0x49')];_0x188508+=0x1){_0x246cf8[_0xedd3('0x4d')][_0x188508][_0xedd3('0x61')]=_0x246cf8[_0xedd3('0x54')]['id'];_0x5e7ab2[_0xedd3('0x62')](_0x246cf8['body'][_0x188508]);}return BPromise[_0xedd3('0x63')](_0x5e7ab2,function(_0x70a9cb){return db[_0xedd3('0x5e')][_0xedd3('0x4c')](_[_0xedd3('0x64')](_0x70a9cb,[_0xedd3('0x5d'),'id'])||{},{'fields':_[_0xedd3('0x39')](_0x45c3ed),'raw':!![]})['then'](function(_0x538738){_0x2d87df[_0xedd3('0x65')][_0xedd3('0x62')](_0x538738[_0xedd3('0x66')]);})[_0xedd3('0x47')](function(_0x2976c5){_0x2d87df[_0xedd3('0x67')][_0xedd3('0x62')]({'data':_0x70a9cb,'error':_0x2976c5['message']});});})['then'](function(_0x4f96b9){return _0x2d87df;})['catch'](function(_0x3df37e){return _0x3df37e;});}else{_0x36ffa1[_0xedd3('0x1f')](0x190)['json']({'message':'Malformed\x20request\x20syntax'});}});}})[_0xedd3('0x29')](respondWithResult(_0x36ffa1,null))[_0xedd3('0x47')](handleError(_0x36ffa1,null));};exports['getContacts']=function(_0x5a4ef9,_0x1b7168,_0x28d68a){var _0x240068;return db[_0xedd3('0x45')]['find']({'where':{'id':_0x5a4ef9['params']['id']},'include':[{'model':db['CmCustomField'],'as':_0xedd3('0x68')}]})['then'](handleEntityNotFound(_0x1b7168,null))[_0xedd3('0x29')](function(_0x4513cd){if(_0x4513cd){_0x240068=_0x4513cd;return db[_0xedd3('0x5e')][_0xedd3('0x34')];}})[_0xedd3('0x29')](function(_0x10b36c){if(_0x10b36c){var _0x10f488={};var _0x2b566d={};_0x2b566d['model']=_['concat'](_['keys'](_0x10b36c),_[_0xedd3('0x33')](_0x240068['CustomFields'],function(_0x171fc2){return util[_0xedd3('0x69')]('cf_%d',_0x171fc2['id']);}));_0x2b566d[_0xedd3('0x38')]=_[_0xedd3('0x39')](_0x5a4ef9[_0xedd3('0x38')]);_0x2b566d[_0xedd3('0x3a')]=_['intersection'](_0x2b566d[_0xedd3('0x37')],_0x2b566d['query']);_0x10f488[_0xedd3('0x3d')]=_[_0xedd3('0x3b')](_0x2b566d[_0xedd3('0x37')],qs[_0xedd3('0x3c')](_0x5a4ef9[_0xedd3('0x38')][_0xedd3('0x3c')]));_0x10f488[_0xedd3('0x3d')]=_0x10f488['attributes'][_0xedd3('0x49')]?_0x10f488[_0xedd3('0x3d')]:_0x2b566d[_0xedd3('0x37')];if(!_0x5a4ef9['query'][_0xedd3('0x3e')](_0xedd3('0x3f'))){_0x10f488[_0xedd3('0x24')]=qs[_0xedd3('0x24')](_0x5a4ef9[_0xedd3('0x38')][_0xedd3('0x24')]);_0x10f488[_0xedd3('0x22')]=qs[_0xedd3('0x22')](_0x5a4ef9[_0xedd3('0x38')][_0xedd3('0x22')]);}_0x10f488[_0xedd3('0x58')]=qs[_0xedd3('0x59')](_0x5a4ef9[_0xedd3('0x38')]['sort']);_0x10f488[_0xedd3('0x40')]=qs[_0xedd3('0x3a')](_[_0xedd3('0x41')](_0x5a4ef9['query'],_0x2b566d[_0xedd3('0x3a')]));_0x10f488['raw']=!![];if(_0x5a4ef9[_0xedd3('0x38')]['filter']){_0x10f488['where']=_['merge'](_0x10f488[_0xedd3('0x40')],{'$or':_[_0xedd3('0x33')](_0x10f488['attributes'],function(_0x1aa2cf){var _0x539ac1={};_0x539ac1[_0x1aa2cf]={'$like':'%'+_0x5a4ef9[_0xedd3('0x38')][_0xedd3('0x43')]+'%'};return _0x539ac1;})});}_0x10f488=_[_0xedd3('0x42')]({},_0x10f488,_0x5a4ef9[_0xedd3('0x44')]);return _0x240068[_0xedd3('0x6a')](_0x10f488);}})['then'](respondWithResult(_0x1b7168,null))[_0xedd3('0x47')](handleError(_0x1b7168,null));};exports[_0xedd3('0x6b')]=function(_0x2fecf2,_0x269115,_0xf624bc){var _0x31ba17;var _0x525c87;var _0x10e5e0;var _0x2c9ca8=_0x2fecf2['params']['id'];csv_results=[];return db['ContactItemType']['findAll']({'attributes':['id',_0xedd3('0x30')],'raw':!![],'order':[_0xedd3('0x6c')]})['then'](function(_0x4b6320){_0x31ba17=_0x4b6320;var _0x10048e=_['keys'](db[_0xedd3('0x5e')]['rawAttributes']);return db[_0xedd3('0x6d')][_0xedd3('0x46')]({'raw':!![],'attributes':['id',_0xedd3('0x6e')]})[_0xedd3('0x29')](function(_0x13ab8d){_0x525c87=_0x13ab8d;var _0x244817=squel[_0xedd3('0x6f')]()[_0xedd3('0x3c')](_0x10048e)[_0xedd3('0x70')](_0xedd3('0x71'),'c')['where'](_0xedd3('0x72'),_0x2c9ca8)[_0xedd3('0x40')](_0xedd3('0x73'))[_0xedd3('0x74')]();for(var _0xf49a2a=0x0;_0xf49a2a<_0x525c87[_0xedd3('0x49')];_0xf49a2a++){_0x244817[_0xedd3('0x75')]('c.cf_'+_0x525c87[_0xf49a2a]['id'],_0xedd3('0x76')+_0x525c87[_0xf49a2a][_0xedd3('0x6e')]);}for(var _0xf49a2a=0x0;_0xf49a2a<_0x31ba17[_0xedd3('0x49')];_0xf49a2a++){_0x244817['field'](squel[_0xedd3('0x6f')]()[_0xedd3('0x75')](_0xedd3('0x77'))['from'](_0xedd3('0x78'))['where'](_0xedd3('0x79'),_0x31ba17[_0xf49a2a]['id'])[_0xedd3('0x40')]('CmContactId\x20=\x20c.id'),_0xedd3('0x7a')+_0x31ba17[_0xf49a2a][_0xedd3('0x30')]);_0x244817[_0xedd3('0x75')](squel[_0xedd3('0x6f')]()[_0xedd3('0x75')](_0xedd3('0x7b'))[_0xedd3('0x70')]('cm_contact_has_items')[_0xedd3('0x40')](_0xedd3('0x79'),_0x31ba17[_0xf49a2a]['id'])['where'](_0xedd3('0x7c')),_0xedd3('0x7d')+_0x31ba17[_0xf49a2a][_0xedd3('0x30')]);}var _0x35219d=[];_0x35219d[_0xedd3('0x62')](_0x244817[_0xedd3('0x7e')]());BPromise['each'](_0x35219d,handleQuery)['then'](function(_0x4326ac){handleQuery(_0x244817[_0xedd3('0x7e')]());var _0x2af1f4=csv_results[0x0];if(!_[_0xedd3('0x7f')](_0x2af1f4)){var _0x3a4871=toCsv(_0x2af1f4);var _0x442cb8=Date['now']();fs[_0xedd3('0x80')](util['format'](_0xedd3('0x81'),_0x2c9ca8,_0x442cb8),_0x3a4871);_0x269115[_0xedd3('0x82')](_0xedd3('0x83'),_0xedd3('0x84')+util[_0xedd3('0x69')](_0xedd3('0x85'),_0x2c9ca8,_0x442cb8));_0x269115[_0xedd3('0x82')](_0xedd3('0x86'),_0xedd3('0x87'));return _0x269115[_0xedd3('0x88')](util[_0xedd3('0x69')]('/tmp/list_%d_%s.csv',_0x2c9ca8,_0x442cb8));}else{return _0x269115['sendStatus'](0xcc);}});});});};exports['addCustomField']=function(_0x21e072,_0x15154e,_0x687bd2){var _0x4842a5;delete _0x21e072[_0xedd3('0x4d')]['id'];return db[_0xedd3('0x45')][_0xedd3('0x57')]({'where':{'id':_0x21e072[_0xedd3('0x54')]['id']}})[_0xedd3('0x29')](handleEntityNotFound(_0x15154e,null))['then'](function(_0x50cc62){if(_0x50cc62){return db[_0xedd3('0x89')][_0xedd3('0x8a')](function(_0x3654d6){return db[_0xedd3('0x6d')]['create'](_0x21e072[_0xedd3('0x4d')],{'transaction':_0x3654d6})[_0xedd3('0x29')](function(_0xb420ea){_0x4842a5=_0xb420ea;return _0x50cc62[_0xedd3('0x8b')](_0xb420ea,{'transaction':_0x3654d6});})['then'](function(){var _0x203608={'type':db['Sequelize'][_0xedd3('0x8c')],'transaction':_0x3654d6};switch(_0x21e072[_0xedd3('0x4d')][_0xedd3('0x35')]){case _0xedd3('0x8d'):_0x203608[_0xedd3('0x35')]=db['Sequelize'][_0xedd3('0x8c')];break;case _0xedd3('0x8e'):_0x203608[_0xedd3('0x35')]=db['Sequelize'][_0xedd3('0x8f')];break;case _0xedd3('0x90'):_0x203608[_0xedd3('0x35')]=db[_0xedd3('0x91')][_0xedd3('0x92')];_0x203608[_0xedd3('0x93')]=![];break;default:}return db['sequelize']['queryInterface'][_0xedd3('0x94')](_0xedd3('0x71'),util[_0xedd3('0x69')](_0xedd3('0x95'),_0x4842a5['id']),_0x203608);})[_0xedd3('0x29')](function(){return _0x4842a5;});});}})['then'](respondWithResult(_0x15154e,null))[_0xedd3('0x47')](handleError(_0x15154e,null));};exports[_0xedd3('0x96')]=function(_0x348b63,_0x344448,_0x16d42b){var _0x14e3b7={};var _0x3e478b={};var _0xc092b4;var _0x2da369;return db[_0xedd3('0x45')]['findOne']({'where':{'id':_0x348b63[_0xedd3('0x54')]['id']}})[_0xedd3('0x29')](handleEntityNotFound(_0x344448,null))['then'](function(_0x35c211){if(_0x35c211){_0xc092b4=_0x35c211;_0x3e478b['model']=_[_0xedd3('0x39')](db[_0xedd3('0x6d')][_0xedd3('0x34')]);_0x3e478b[_0xedd3('0x38')]=_[_0xedd3('0x39')](_0x348b63[_0xedd3('0x38')]);_0x3e478b[_0xedd3('0x3a')]=_[_0xedd3('0x3b')](_0x3e478b['model'],_0x3e478b[_0xedd3('0x38')]);_0x14e3b7[_0xedd3('0x3d')]=_[_0xedd3('0x3b')](_0x3e478b[_0xedd3('0x37')],qs[_0xedd3('0x3c')](_0x348b63[_0xedd3('0x38')][_0xedd3('0x3c')]));_0x14e3b7[_0xedd3('0x3d')]=_0x14e3b7[_0xedd3('0x3d')][_0xedd3('0x49')]?_0x14e3b7[_0xedd3('0x3d')]:_0x3e478b[_0xedd3('0x37')];_0x14e3b7[_0xedd3('0x58')]=qs['sort'](_0x348b63['query'][_0xedd3('0x59')]);_0x14e3b7['where']=qs[_0xedd3('0x3a')](_[_0xedd3('0x41')](_0x348b63[_0xedd3('0x38')],_0x3e478b[_0xedd3('0x3a')]));_0x14e3b7['where']=_[_0xedd3('0x42')](_0x14e3b7[_0xedd3('0x40')],{'$or':[{'ListId':_0x35c211['id']},{'ListId':null}]});if(_0x348b63[_0xedd3('0x38')][_0xedd3('0x43')]){_0x14e3b7[_0xedd3('0x40')]=_['merge'](_0x14e3b7[_0xedd3('0x40')],{'$or':_['map'](_0x14e3b7['attributes'],function(_0x8fe04e){var _0x103c9={};_0x103c9[_0x8fe04e]={'$like':'%'+_0x348b63[_0xedd3('0x38')]['filter']+'%'};return _0x103c9;})});}_0x14e3b7=_['merge']({},_0x14e3b7,_0x348b63[_0xedd3('0x44')]);return db[_0xedd3('0x6d')][_0xedd3('0x97')](_0x14e3b7);}})[_0xedd3('0x29')](respondWithResult(_0x344448,null))[_0xedd3('0x47')](handleError(_0x344448,null));};exports[_0xedd3('0x98')]=function(_0x1c2b9c,_0xe5fa4c){return db[_0xedd3('0x6d')]['findAndCountAll']({'where':{'ListId':null}})['then'](handleEntityNotFound(_0xe5fa4c,null))['then'](function(_0x494188){return _0x494188;})[_0xedd3('0x29')](respondWithResult(_0xe5fa4c,null))[_0xedd3('0x47')](handleError(_0xe5fa4c,null));};exports['addAgents']=function(_0x59bb66,_0x1a9d87,_0x368e8f){return db[_0xedd3('0x45')]['find']({'where':{'id':_0x59bb66['params']['id']}})['then'](handleEntityNotFound(_0x1a9d87,null))[_0xedd3('0x29')](function(_0xdfc3ae){if(_0xdfc3ae){return _0xdfc3ae[_0xedd3('0x99')](_0x59bb66['body'][_0xedd3('0x5d')],_[_0xedd3('0x64')](_0x59bb66['body'],[_0xedd3('0x5d'),'id'])||{})['spread'](function(_0x2d7c8a){for(var _0x37a1cc=0x0;_0x37a1cc<_0x59bb66[_0xedd3('0x4d')][_0xedd3('0x5d')][_0xedd3('0x49')];_0x37a1cc+=0x1){socket[_0xedd3('0x9a')](_0xedd3('0x9b'),{'UserId':Number(_0x59bb66['body']['ids'][_0x37a1cc]),'CmListId':Number(_0x59bb66[_0xedd3('0x54')]['id'])});}return _0x2d7c8a;});}})[_0xedd3('0x29')](respondWithResult(_0x1a9d87,null))['catch'](handleError(_0x1a9d87,null));};exports['removeAgents']=function(_0x52fc87,_0x56e06c,_0x1365db){return db['CmList'][_0xedd3('0x4b')]({'where':{'id':_0x52fc87['params']['id']}})[_0xedd3('0x29')](handleEntityNotFound(_0x56e06c,null))[_0xedd3('0x29')](function(_0x2f4f0d){if(_0x2f4f0d){return _0x2f4f0d[_0xedd3('0x9c')](_0x52fc87[_0xedd3('0x38')][_0xedd3('0x5d')])[_0xedd3('0x29')](function(){if(_[_0xedd3('0x60')](_0x52fc87['query'][_0xedd3('0x5d')])){for(var _0xe3bb01=0x0;_0xe3bb01<_0x52fc87[_0xedd3('0x38')][_0xedd3('0x5d')][_0xedd3('0x49')];_0xe3bb01+=0x1){socket[_0xedd3('0x9a')]('userCmList:remove',{'UserId':Number(_0x52fc87[_0xedd3('0x38')][_0xedd3('0x5d')][_0xe3bb01]),'CmListId':Number(_0x52fc87[_0xedd3('0x54')]['id'])});}}else{socket[_0xedd3('0x9a')]('userCmList:remove',{'UserId':Number(_0x52fc87['query'][_0xedd3('0x5d')]),'CmListId':Number(_0x52fc87['params']['id'])});}});}})['then'](respondWithStatusCode(_0x56e06c,null))[_0xedd3('0x47')](handleError(_0x56e06c,null));};exports[_0xedd3('0x9d')]=function(_0x5bc9a7,_0x518dbd,_0x426678){var _0x525dd9={};var _0xab06c1={};var _0x535ac1;var _0x3c17c4;return db[_0xedd3('0x45')][_0xedd3('0x57')]({'where':{'id':_0x5bc9a7[_0xedd3('0x54')]['id']}})[_0xedd3('0x29')](handleEntityNotFound(_0x518dbd,null))[_0xedd3('0x29')](function(_0x3d441b){if(_0x3d441b){_0x535ac1=_0x3d441b;_0xab06c1[_0xedd3('0x37')]=_[_0xedd3('0x39')](db['User']['rawAttributes']);_0xab06c1[_0xedd3('0x38')]=_['keys'](_0x5bc9a7[_0xedd3('0x38')]);_0xab06c1['filters']=_[_0xedd3('0x3b')](_0xab06c1['model'],_0xab06c1[_0xedd3('0x38')]);_0x525dd9[_0xedd3('0x3d')]=_[_0xedd3('0x3b')](_0xab06c1[_0xedd3('0x37')],qs[_0xedd3('0x3c')](_0x5bc9a7[_0xedd3('0x38')][_0xedd3('0x3c')]));_0x525dd9[_0xedd3('0x3d')]=_0x525dd9[_0xedd3('0x3d')][_0xedd3('0x49')]?_0x525dd9[_0xedd3('0x3d')]:_0xab06c1['model'];_0x525dd9['order']=qs[_0xedd3('0x59')](_0x5bc9a7[_0xedd3('0x38')][_0xedd3('0x59')]);_0x525dd9[_0xedd3('0x40')]=qs[_0xedd3('0x3a')](_[_0xedd3('0x41')](_0x5bc9a7[_0xedd3('0x38')],_0xab06c1['filters']));if(_0x5bc9a7[_0xedd3('0x38')][_0xedd3('0x43')]){_0x525dd9[_0xedd3('0x40')]=_[_0xedd3('0x42')](_0x525dd9[_0xedd3('0x40')],{'$or':_[_0xedd3('0x33')](_0x525dd9[_0xedd3('0x3d')],function(_0x522757){var _0x31399f={};_0x31399f[_0x522757]={'$like':'%'+_0x5bc9a7[_0xedd3('0x38')][_0xedd3('0x43')]+'%'};return _0x31399f;})});}_0x525dd9=_[_0xedd3('0x42')]({},_0x525dd9,_0x5bc9a7[_0xedd3('0x44')]);return _0x535ac1[_0xedd3('0x9d')](_0x525dd9);}})[_0xedd3('0x29')](function(_0x3cb52e){if(_0x3cb52e){_0x3c17c4=_0x3cb52e[_0xedd3('0x49')];if(!_0x5bc9a7[_0xedd3('0x38')][_0xedd3('0x3e')]('nolimit')){_0x525dd9[_0xedd3('0x24')]=qs[_0xedd3('0x24')](_0x5bc9a7[_0xedd3('0x38')][_0xedd3('0x24')]);_0x525dd9[_0xedd3('0x22')]=qs[_0xedd3('0x22')](_0x5bc9a7[_0xedd3('0x38')][_0xedd3('0x22')]);}return _0x535ac1[_0xedd3('0x9d')](_0x525dd9);}})[_0xedd3('0x29')](function(_0x21a8bd){if(_0x21a8bd){return _0x21a8bd?{'count':_0x3c17c4,'rows':_0x21a8bd}:null;}})[_0xedd3('0x29')](respondWithResult(_0x518dbd,null))[_0xedd3('0x47')](handleError(_0x518dbd,null));};function handleQuery(_0x1b8180){logger[_0xedd3('0x9e')](_0x1b8180);return db['sequelize']['query'](_0x1b8180)[_0xedd3('0x9f')](function(_0x26c5d6){csv_results['push'](_0x26c5d6);})['catch'](function(_0x24efac){logger[_0xedd3('0x2e')](_0x24efac['message']);});}
\ No newline at end of file
index 8e2cff6..3517c07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['hasOwnProperty','exports','events','CmList','setMaxListeners','save','emit'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x3e74,0x175));var _0x43e7=function(_0x3ed54e,_0x58d649){_0x3ed54e=_0x3ed54e-0x0;var _0x30372d=_0x3e74[_0x3ed54e];return _0x30372d;};'use strict';var EventEmitter=require(_0x43e7('0x0'));var CmList=require('../../mysqldb')['db'][_0x43e7('0x1')];var CmListEvents=new EventEmitter();CmListEvents[_0x43e7('0x2')](0x0);var events={'afterCreate':_0x43e7('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0xc58479){return function(_0x4f9bbe,_0x128b0f,_0xe838b4){CmListEvents[_0x43e7('0x4')](_0xc58479+':'+_0x4f9bbe['id'],_0x4f9bbe);CmListEvents[_0x43e7('0x4')](_0xc58479,_0x4f9bbe);_0xe838b4(null);};}for(var e in events){if(events[_0x43e7('0x5')](e)){var event=events[e];CmList['hook'](e,emitEvent(event));}}module[_0x43e7('0x6')]=CmListEvents;
\ No newline at end of file
+var _0x5fc3=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','hook'];(function(_0x1385dc,_0x2c7fd7){var _0x2f6469=function(_0x47ed8a){while(--_0x47ed8a){_0x1385dc['push'](_0x1385dc['shift']());}};_0x2f6469(++_0x2c7fd7);}(_0x5fc3,0xa8));var _0x35fc=function(_0x2e5f9c,_0x134a52){_0x2e5f9c=_0x2e5f9c-0x0;var _0x538b44=_0x5fc3[_0x2e5f9c];return _0x538b44;};'use strict';var EventEmitter=require(_0x35fc('0x0'));var CmList=require(_0x35fc('0x1'))['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents[_0x35fc('0x2')](0x0);var events={'afterCreate':_0x35fc('0x3'),'afterUpdate':_0x35fc('0x4'),'afterDestroy':_0x35fc('0x5')};function emitEvent(_0xb4f9ce){return function(_0x5e75e6,_0x2d1404,_0x1d5fec){CmListEvents[_0x35fc('0x6')](_0xb4f9ce+':'+_0x5e75e6['id'],_0x5e75e6);CmListEvents['emit'](_0xb4f9ce,_0x5e75e6);_0x1d5fec(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmList[_0x35fc('0x7')](e,emitEvent(event));}}module['exports']=CmListEvents;
\ No newline at end of file
index f6a8e80..19e1276 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa74f=['cm_lists','../../config/logger','bluebird','request-promise','path','rimraf','./cmList.attributes','define','CmList'];(function(_0x57b52b,_0xfc0b50){var _0x3c4fcb=function(_0x598f90){while(--_0x598f90){_0x57b52b['push'](_0x57b52b['shift']());}};_0x3c4fcb(++_0xfc0b50);}(_0xa74f,0x9a));var _0xfa74=function(_0x378b4,_0x5ca7fa){_0x378b4=_0x378b4-0x0;var _0x11d07b=_0xa74f[_0x378b4];return _0x11d07b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xfa74('0x0'))('api');var moment=require('moment');var BPromise=require(_0xfa74('0x1'));var rp=require(_0xfa74('0x2'));var fs=require('fs');var path=require(_0xfa74('0x3'));var rimraf=require(_0xfa74('0x4'));var config=require('../../config/environment');var attributes=require(_0xfa74('0x5'));module['exports']=function(_0x543cfe,_0x43dd2f){return _0x543cfe[_0xfa74('0x6')](_0xfa74('0x7'),attributes,{'tableName':_0xfa74('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfd28=['rimraf','./cmList.attributes','exports','define','util','../../config/logger','moment','request-promise','path'];(function(_0x1650ea,_0x494291){var _0x1b16fa=function(_0x51a26e){while(--_0x51a26e){_0x1650ea['push'](_0x1650ea['shift']());}};_0x1b16fa(++_0x494291);}(_0xfd28,0x148));var _0x8fd2=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0xfd28[_0x46e363];return _0x3fb059;};'use strict';var _=require('lodash');var util=require(_0x8fd2('0x0'));var logger=require(_0x8fd2('0x1'))('api');var moment=require(_0x8fd2('0x2'));var BPromise=require('bluebird');var rp=require(_0x8fd2('0x3'));var fs=require('fs');var path=require(_0x8fd2('0x4'));var rimraf=require(_0x8fd2('0x5'));var config=require('../../config/environment');var attributes=require(_0x8fd2('0x6'));module[_0x8fd2('0x7')]=function(_0x2ee87e,_0x36178a){return _0x2ee87e[_0x8fd2('0x8')]('CmList',attributes,{'tableName':'cm_lists','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0c13b13..ed5a1c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae8e=['client','redis','localhost','socket.io-emitter','./cmList.socket','register','request','then','CmList,\x20%s,\x20%s','request\x20sent','debug','CmList,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x5bd426,_0x4878e5){var _0x23a7eb=function(_0x594b42){while(--_0x594b42){_0x5bd426['push'](_0x5bd426['shift']());}};_0x23a7eb(++_0x4878e5);}(_0xae8e,0x12a));var _0xeae8=function(_0xa1dcbd,_0x39a535){_0xa1dcbd=_0xa1dcbd-0x0;var _0x5a20dc=_0xae8e[_0xa1dcbd];return _0x5a20dc;};'use strict';var _=require('lodash');var util=require(_0xeae8('0x0'));var moment=require(_0xeae8('0x1'));var BPromise=require(_0xeae8('0x2'));var rs=require(_0xeae8('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xeae8('0x4'))['db'];var utils=require(_0xeae8('0x5'));var logger=require(_0xeae8('0x6'))(_0xeae8('0x7'));var config=require(_0xeae8('0x8'));var jayson=require(_0xeae8('0x9'));var client=jayson[_0xeae8('0xa')]['http']({'port':0x232a});config[_0xeae8('0xb')]=_['defaults'](config['redis'],{'host':_0xeae8('0xc'),'port':0x18eb});var socket=require(_0xeae8('0xd'))(new Redis(config[_0xeae8('0xb')]));require(_0xeae8('0xe'))[_0xeae8('0xf')](socket);function respondWithRpcPromise(_0x477eed,_0x4bf256,_0x1a858d){return new BPromise(function(_0xd74da6,_0x1c9607){return client[_0xeae8('0x10')](_0x477eed,_0x1a858d)[_0xeae8('0x11')](function(_0x8913ea){logger['info'](_0xeae8('0x12'),_0x4bf256,_0xeae8('0x13'));logger[_0xeae8('0x14')](_0xeae8('0x15'),_0x4bf256,_0xeae8('0x13'),JSON[_0xeae8('0x16')](_0x8913ea));if(_0x8913ea['error']){if(_0x8913ea[_0xeae8('0x17')][_0xeae8('0x18')]===0x1f4){logger[_0xeae8('0x17')](_0xeae8('0x12'),_0x4bf256,_0x8913ea[_0xeae8('0x17')][_0xeae8('0x19')]);return _0x1c9607(_0x8913ea['error']['message']);}logger[_0xeae8('0x17')](_0xeae8('0x12'),_0x4bf256,_0x8913ea[_0xeae8('0x17')][_0xeae8('0x19')]);return _0xd74da6(_0x8913ea[_0xeae8('0x17')][_0xeae8('0x19')]);}else{logger['info'](_0xeae8('0x12'),_0x4bf256,_0xeae8('0x13'));_0xd74da6(_0x8913ea[_0xeae8('0x1a')][_0xeae8('0x19')]);}})[_0xeae8('0x1b')](function(_0x1dbdf1){logger[_0xeae8('0x17')]('CmList,\x20%s,\x20%s',_0x4bf256,_0x1dbdf1);_0x1c9607(_0x1dbdf1);});});}
\ No newline at end of file
+var _0xbeb0=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','info','CmList,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','util','moment','ioredis','../../mysqldb'];(function(_0x5ba73c,_0x3272aa){var _0x1a6c27=function(_0x256461){while(--_0x256461){_0x5ba73c['push'](_0x5ba73c['shift']());}};_0x1a6c27(++_0x3272aa);}(_0xbeb0,0x97));var _0x0beb=function(_0x284833,_0xbb26d3){_0x284833=_0x284833-0x0;var _0x280b13=_0xbeb0[_0x284833];return _0x280b13;};'use strict';var _=require(_0x0beb('0x0'));var util=require(_0x0beb('0x1'));var moment=require(_0x0beb('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0beb('0x3'));var db=require(_0x0beb('0x4'))['db'];var utils=require(_0x0beb('0x5'));var logger=require(_0x0beb('0x6'))('rpc');var config=require(_0x0beb('0x7'));var jayson=require(_0x0beb('0x8'));var client=jayson[_0x0beb('0x9')][_0x0beb('0xa')]({'port':0x232a});config[_0x0beb('0xb')]=_[_0x0beb('0xc')](config[_0x0beb('0xb')],{'host':_0x0beb('0xd'),'port':0x18eb});var socket=require(_0x0beb('0xe'))(new Redis(config[_0x0beb('0xb')]));require('./cmList.socket')[_0x0beb('0xf')](socket);function respondWithRpcPromise(_0x477746,_0x421a4a,_0x566ee4){return new BPromise(function(_0x5737eb,_0x4d58ce){return client[_0x0beb('0x10')](_0x477746,_0x566ee4)['then'](function(_0x5d5818){logger[_0x0beb('0x11')](_0x0beb('0x12'),_0x421a4a,_0x0beb('0x13'));logger[_0x0beb('0x14')]('CmList,\x20%s,\x20%s,\x20%s',_0x421a4a,_0x0beb('0x13'),JSON[_0x0beb('0x15')](_0x5d5818));if(_0x5d5818[_0x0beb('0x16')]){if(_0x5d5818[_0x0beb('0x16')][_0x0beb('0x17')]===0x1f4){logger[_0x0beb('0x16')]('CmList,\x20%s,\x20%s',_0x421a4a,_0x5d5818['error'][_0x0beb('0x18')]);return _0x4d58ce(_0x5d5818[_0x0beb('0x16')][_0x0beb('0x18')]);}logger[_0x0beb('0x16')](_0x0beb('0x12'),_0x421a4a,_0x5d5818[_0x0beb('0x16')][_0x0beb('0x18')]);return _0x5737eb(_0x5d5818[_0x0beb('0x16')]['message']);}else{logger[_0x0beb('0x11')](_0x0beb('0x12'),_0x421a4a,_0x0beb('0x13'));_0x5737eb(_0x5d5818['result'][_0x0beb('0x18')]);}})[_0x0beb('0x19')](function(_0x1c427e){logger[_0x0beb('0x16')](_0x0beb('0x12'),_0x421a4a,_0x1c427e);_0x4d58ce(_0x1c427e);});});}
\ No newline at end of file
index 40786c7..0cf5e57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e7c=['emit','./cmList.events','save'];(function(_0x3794a0,_0x1a9cfc){var _0x5bdaba=function(_0x14a764){while(--_0x14a764){_0x3794a0['push'](_0x3794a0['shift']());}};_0x5bdaba(++_0x1a9cfc);}(_0x9e7c,0xf1));var _0xc9e7=function(_0x1d2bcc,_0x9e4bcf){_0x1d2bcc=_0x1d2bcc-0x0;var _0x4db8a5=_0x9e7c[_0x1d2bcc];return _0x4db8a5;};'use strict';var CmListEvents=require(_0xc9e7('0x0'));var events=[_0xc9e7('0x1'),'remove','update'];function createListener(_0x118693,_0x382413){return function(_0x41dc83){_0x382413[_0xc9e7('0x2')](_0x118693,_0x41dc83);};}function removeListener(_0x14721f,_0x171cb7){return function(){CmListEvents['removeListener'](_0x14721f,_0x171cb7);};}exports['register']=function(_0x2d917c){for(var _0x17de11=0x0,_0x5c89ea=events['length'];_0x17de11<_0x5c89ea;_0x17de11++){var _0x1ad626=events[_0x17de11];var _0x58d969=createListener('cmList:'+_0x1ad626,_0x2d917c);CmListEvents['on'](_0x1ad626,_0x58d969);}};
\ No newline at end of file
+var _0xd143=['cmList:','./cmList.events','save','remove','emit','removeListener','register','length'];(function(_0x1db481,_0x1627b2){var _0x3db95b=function(_0x2d54e4){while(--_0x2d54e4){_0x1db481['push'](_0x1db481['shift']());}};_0x3db95b(++_0x1627b2);}(_0xd143,0x1b9));var _0x3d14=function(_0x45dd3f,_0x49ad9b){_0x45dd3f=_0x45dd3f-0x0;var _0x2a4a56=_0xd143[_0x45dd3f];return _0x2a4a56;};'use strict';var CmListEvents=require(_0x3d14('0x0'));var events=[_0x3d14('0x1'),_0x3d14('0x2'),'update'];function createListener(_0x2c5c8b,_0x10f23a){return function(_0xc0bfe2){_0x10f23a[_0x3d14('0x3')](_0x2c5c8b,_0xc0bfe2);};}function removeListener(_0x186c6b,_0x2a3986){return function(){CmListEvents[_0x3d14('0x4')](_0x186c6b,_0x2a3986);};}exports[_0x3d14('0x5')]=function(_0x5b2f6d){for(var _0x5c2a26=0x0,_0x29b130=events[_0x3d14('0x6')];_0x5c2a26<_0x29b130;_0x5c2a26++){var _0x47dd56=events[_0x5c2a26];var _0xf4dfa3=createListener(_0x3d14('0x7')+_0x47dd56,_0x5b2f6d);CmListEvents['on'](_0x47dd56,_0xf4dfa3);}};
\ No newline at end of file
index 022a828..2e43672 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a9c=['getAgents','create','post','addCustomField','addAgents','put','update','delete','destroy','removeAgents','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','./cmList.controller','get','isAuthenticated','index','/describe','/global_fields','getGlobalCustomFields','/:id','show','/:id/dispositions','getDispositions','/:id/contacts','getContacts','/:id/contacts/csv','getContactsCsv','/:id/fields','getCustomFields','/:id/users'];(function(_0x2e7774,_0x69de0){var _0x50da4f=function(_0xec9270){while(--_0xec9270){_0x2e7774['push'](_0x2e7774['shift']());}};_0x50da4f(++_0x69de0);}(_0x0a9c,0x18b));var _0xc0a9=function(_0x2085d6,_0x422baf){_0x2085d6=_0x2085d6-0x0;var _0x3201a3=_0x0a9c[_0x2085d6];return _0x3201a3;};'use strict';var multer=require(_0xc0a9('0x0'));var util=require(_0xc0a9('0x1'));var path=require(_0xc0a9('0x2'));var timeout=require('connect-timeout');var express=require(_0xc0a9('0x3'));var router=express['Router']();var fs_extra=require(_0xc0a9('0x4'));var auth=require(_0xc0a9('0x5'));var interaction=require(_0xc0a9('0x6'));var config=require('../../config/environment');var controller=require(_0xc0a9('0x7'));router[_0xc0a9('0x8')]('/',auth[_0xc0a9('0x9')](),controller[_0xc0a9('0xa')]);router[_0xc0a9('0x8')](_0xc0a9('0xb'),auth[_0xc0a9('0x9')](),controller['describe']);router['get'](_0xc0a9('0xc'),auth[_0xc0a9('0x9')](),controller[_0xc0a9('0xd')]);router[_0xc0a9('0x8')](_0xc0a9('0xe'),auth[_0xc0a9('0x9')](),controller[_0xc0a9('0xf')]);router[_0xc0a9('0x8')](_0xc0a9('0x10'),auth[_0xc0a9('0x9')](),controller[_0xc0a9('0x11')]);router[_0xc0a9('0x8')](_0xc0a9('0x12'),auth['isAuthenticated'](),controller[_0xc0a9('0x13')]);router[_0xc0a9('0x8')](_0xc0a9('0x14'),auth[_0xc0a9('0x9')](),controller[_0xc0a9('0x15')]);router[_0xc0a9('0x8')](_0xc0a9('0x16'),auth[_0xc0a9('0x9')](),controller[_0xc0a9('0x17')]);router[_0xc0a9('0x8')](_0xc0a9('0x18'),auth[_0xc0a9('0x9')](),controller[_0xc0a9('0x19')]);router['post']('/',auth[_0xc0a9('0x9')](),controller[_0xc0a9('0x1a')]);router[_0xc0a9('0x1b')](_0xc0a9('0x10'),auth[_0xc0a9('0x9')](),controller['addDisposition']);router[_0xc0a9('0x1b')]('/:id/contacts',auth[_0xc0a9('0x9')](),controller['addContacts']);router[_0xc0a9('0x1b')](_0xc0a9('0x16'),auth[_0xc0a9('0x9')](),controller[_0xc0a9('0x1c')]);router['post'](_0xc0a9('0x18'),auth[_0xc0a9('0x9')](),controller[_0xc0a9('0x1d')]);router[_0xc0a9('0x1e')](_0xc0a9('0xe'),auth[_0xc0a9('0x9')](),controller[_0xc0a9('0x1f')]);router[_0xc0a9('0x20')](_0xc0a9('0xe'),auth[_0xc0a9('0x9')](),controller[_0xc0a9('0x21')]);router['delete']('/:id/dispositions',auth[_0xc0a9('0x9')](),controller['removeDispositions']);router['delete'](_0xc0a9('0x18'),auth['isAuthenticated'](),controller[_0xc0a9('0x22')]);module['exports']=router;
\ No newline at end of file
+var _0x5001=['put','delete','destroy','/:id/dispositions','removeAgents','exports','multer','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmList.controller','get','isAuthenticated','/describe','describe','/global_fields','getGlobalCustomFields','/:id','show','getDispositions','/:id/contacts','getContacts','getContactsCsv','/:id/fields','getCustomFields','/:id/users','getAgents','post','create','addDisposition','addCustomField'];(function(_0x277107,_0x3420dc){var _0x1da046=function(_0x47122d){while(--_0x47122d){_0x277107['push'](_0x277107['shift']());}};_0x1da046(++_0x3420dc);}(_0x5001,0x15a));var _0x1500=function(_0x1c981e,_0x8e8515){_0x1c981e=_0x1c981e-0x0;var _0x3a029c=_0x5001[_0x1c981e];return _0x3a029c;};'use strict';var multer=require(_0x1500('0x0'));var util=require('util');var path=require(_0x1500('0x1'));var timeout=require(_0x1500('0x2'));var express=require('express');var router=express[_0x1500('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1500('0x4'));var interaction=require(_0x1500('0x5'));var config=require(_0x1500('0x6'));var controller=require(_0x1500('0x7'));router[_0x1500('0x8')]('/',auth[_0x1500('0x9')](),controller['index']);router[_0x1500('0x8')](_0x1500('0xa'),auth[_0x1500('0x9')](),controller[_0x1500('0xb')]);router[_0x1500('0x8')](_0x1500('0xc'),auth[_0x1500('0x9')](),controller[_0x1500('0xd')]);router[_0x1500('0x8')](_0x1500('0xe'),auth[_0x1500('0x9')](),controller[_0x1500('0xf')]);router['get']('/:id/dispositions',auth['isAuthenticated'](),controller[_0x1500('0x10')]);router['get'](_0x1500('0x11'),auth['isAuthenticated'](),controller[_0x1500('0x12')]);router[_0x1500('0x8')]('/:id/contacts/csv',auth[_0x1500('0x9')](),controller[_0x1500('0x13')]);router[_0x1500('0x8')](_0x1500('0x14'),auth[_0x1500('0x9')](),controller[_0x1500('0x15')]);router[_0x1500('0x8')](_0x1500('0x16'),auth[_0x1500('0x9')](),controller[_0x1500('0x17')]);router[_0x1500('0x18')]('/',auth['isAuthenticated'](),controller[_0x1500('0x19')]);router[_0x1500('0x18')]('/:id/dispositions',auth[_0x1500('0x9')](),controller[_0x1500('0x1a')]);router[_0x1500('0x18')](_0x1500('0x11'),auth['isAuthenticated'](),controller['addContacts']);router[_0x1500('0x18')](_0x1500('0x14'),auth[_0x1500('0x9')](),controller[_0x1500('0x1b')]);router['post']('/:id/users',auth[_0x1500('0x9')](),controller['addAgents']);router[_0x1500('0x1c')](_0x1500('0xe'),auth['isAuthenticated'](),controller['update']);router[_0x1500('0x1d')]('/:id',auth['isAuthenticated'](),controller[_0x1500('0x1e')]);router[_0x1500('0x1d')](_0x1500('0x1f'),auth[_0x1500('0x9')](),controller['removeDispositions']);router['delete'](_0x1500('0x16'),auth[_0x1500('0x9')](),controller[_0x1500('0x20')]);module[_0x1500('0x21')]=router;
\ No newline at end of file
index 98ad9e2..6b91785 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa455=['sequelize','exports','VIRTUAL','getDataValue','field','STRING'];(function(_0x4135e7,_0x14f68b){var _0x3032f9=function(_0x2b0e42){while(--_0x2b0e42){_0x4135e7['push'](_0x4135e7['shift']());}};_0x3032f9(++_0x14f68b);}(_0xa455,0xfc));var _0x5a45=function(_0xb6626d,_0x248d00){_0xb6626d=_0xb6626d-0x0;var _0x3c9576=_0xa455[_0xb6626d];return _0x3c9576;};'use strict';var Sequelize=require(_0x5a45('0x0'));module[_0x5a45('0x1')]={'name':{'type':Sequelize[_0x5a45('0x2')],'get':function(_0x4c68f7){return this[_0x5a45('0x3')](_0x5a45('0x4'));}},'field':{'type':Sequelize['STRING'],'allowNull':![]},'operator':{'type':Sequelize[_0x5a45('0x5')],'allowNull':![]},'value':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x1cd7=['exports','VIRTUAL','getDataValue','field','STRING','sequelize'];(function(_0x13dd89,_0x524711){var _0xa69699=function(_0x201cb8){while(--_0x201cb8){_0x13dd89['push'](_0x13dd89['shift']());}};_0xa69699(++_0x524711);}(_0x1cd7,0xb9));var _0x71cd=function(_0x391143,_0x33aef6){_0x391143=_0x391143-0x0;var _0x22f6e4=_0x1cd7[_0x391143];return _0x22f6e4;};'use strict';var Sequelize=require(_0x71cd('0x0'));module[_0x71cd('0x1')]={'name':{'type':Sequelize[_0x71cd('0x2')],'get':function(_0x33012f){return this[_0x71cd('0x3')](_0x71cd('0x4'));}},'field':{'type':Sequelize[_0x71cd('0x5')],'allowNull':![]},'operator':{'type':Sequelize[_0x71cd('0x5')],'allowNull':![]},'value':{'type':Sequelize[_0x71cd('0x5')],'allowNull':![]}};
\ No newline at end of file
index 1e43753..8b0e943 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','body','Condition','find','catch','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path'];(function(_0x38a4d5,_0x461053){var _0x5ac6a0=function(_0x6b78c8){while(--_0x6b78c8){_0x38a4d5['push'](_0x38a4d5['shift']());}};_0x5ac6a0(++_0x461053);}(_0x7a54,0x106));var _0x47a5=function(_0xae221d,_0x4b0370){_0xae221d=_0xae221d-0x0;var _0x45a558=_0x7a54[_0xae221d];return _0x45a558;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x22')]=function(_0x136b14,_0x16631f){if(_0x136b14[_0x47a5('0x29')]['id']){delete _0x136b14[_0x47a5('0x29')]['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x136b14['params']['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x16631f,null))['then'](saveUpdates(_0x136b14[_0x47a5('0x29')],null))[_0x47a5('0x23')](respondWithResult(_0x16631f,null))[_0x47a5('0x2c')](handleError(_0x16631f,null));};exports['destroy']=function(_0x256650,_0x625952){return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x256650['params']['id']}})['then'](handleEntityNotFound(_0x625952,null))[_0x47a5('0x23')](removeEntity(_0x625952,null))[_0x47a5('0x2c')](handleError(_0x625952,null));};
\ No newline at end of file
+var _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(_0x786ea9,_0x65bd58){var _0x4b1cb0=function(_0x2ee904){while(--_0x2ee904){_0x786ea9['push'](_0x786ea9['shift']());}};_0x4b1cb0(++_0x65bd58);}(_0x7a54,0x106));var _0x47a5=function(_0x376e29,_0x109950){_0x376e29=_0x376e29-0x0;var _0x24984b=_0x7a54[_0x376e29];return _0x24984b;};'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 546bdf8..76266e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb4a=['util','api','moment','path','./condition.attributes','define'];(function(_0x91d498,_0x482a89){var _0x1e0294=function(_0x214950){while(--_0x214950){_0x91d498['push'](_0x91d498['shift']());}};_0x1e0294(++_0x482a89);}(_0xdb4a,0x10e));var _0xadb4=function(_0x1da527,_0x2dc953){_0x1da527=_0x1da527-0x0;var _0x40fc7c=_0xdb4a[_0x1da527];return _0x40fc7c;};'use strict';var _=require('lodash');var util=require(_0xadb4('0x0'));var logger=require('../../config/logger')(_0xadb4('0x1'));var moment=require(_0xadb4('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xadb4('0x3'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xadb4('0x4'));module['exports']=function(_0xab6b44,_0x1537c8){return _0xab6b44[_0xadb4('0x5')]('Condition',attributes,{'tableName':'tools_conditions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf894=['api','moment','bluebird','path','rimraf','../../config/environment','define','Condition','tools_conditions','../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf894,0x1c1));var _0x4f89=function(_0x1fcc90,_0xe29dae){_0x1fcc90=_0x1fcc90-0x0;var _0x2b074f=_0xf894[_0x1fcc90];return _0x2b074f;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4f89('0x0'))(_0x4f89('0x1'));var moment=require(_0x4f89('0x2'));var BPromise=require(_0x4f89('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4f89('0x4'));var rimraf=require(_0x4f89('0x5'));var config=require(_0x4f89('0x6'));var attributes=require('./condition.attributes');module['exports']=function(_0x4424fe,_0x57fd98){return _0x4424fe[_0x4f89('0x7')](_0x4f89('0x8'),attributes,{'tableName':_0x4f89('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a7273e5..cbf84d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea39=['request\x20sent','debug','stringify','error','code','message','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','Condition,\x20%s,\x20%s'];(function(_0x39ae4b,_0x588799){var _0xbe9299=function(_0x4533d4){while(--_0x4533d4){_0x39ae4b['push'](_0x39ae4b['shift']());}};_0xbe9299(++_0x588799);}(_0xea39,0x93));var _0x9ea3=function(_0x582a2e,_0x113f68){_0x582a2e=_0x582a2e-0x0;var _0x3f83dd=_0xea39[_0x582a2e];return _0x3f83dd;};'use strict';var _=require('lodash');var util=require(_0x9ea3('0x0'));var moment=require(_0x9ea3('0x1'));var BPromise=require(_0x9ea3('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9ea3('0x3'));var db=require(_0x9ea3('0x4'))['db'];var utils=require(_0x9ea3('0x5'));var logger=require(_0x9ea3('0x6'))('rpc');var config=require(_0x9ea3('0x7'));var jayson=require(_0x9ea3('0x8'));var client=jayson['client'][_0x9ea3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x237427,_0x263399,_0x5c8985){return new BPromise(function(_0x27cdf1,_0x4ec45c){return client[_0x9ea3('0xa')](_0x237427,_0x5c8985)['then'](function(_0x3b635a){logger[_0x9ea3('0xb')](_0x9ea3('0xc'),_0x263399,_0x9ea3('0xd'));logger[_0x9ea3('0xe')]('Condition,\x20%s,\x20%s,\x20%s',_0x263399,_0x9ea3('0xd'),JSON[_0x9ea3('0xf')](_0x3b635a));if(_0x3b635a[_0x9ea3('0x10')]){if(_0x3b635a['error'][_0x9ea3('0x11')]===0x1f4){logger[_0x9ea3('0x10')](_0x9ea3('0xc'),_0x263399,_0x3b635a['error']['message']);return _0x4ec45c(_0x3b635a[_0x9ea3('0x10')][_0x9ea3('0x12')]);}logger[_0x9ea3('0x10')](_0x9ea3('0xc'),_0x263399,_0x3b635a[_0x9ea3('0x10')]['message']);return _0x27cdf1(_0x3b635a['error']['message']);}else{logger[_0x9ea3('0xb')]('Condition,\x20%s,\x20%s',_0x263399,'request\x20sent');_0x27cdf1(_0x3b635a['result'][_0x9ea3('0x12')]);}})[_0x9ea3('0x13')](function(_0x3185e0){logger[_0x9ea3('0x10')](_0x9ea3('0xc'),_0x263399,_0x3185e0);_0x4ec45c(_0x3185e0);});});}
\ No newline at end of file
+var _0xa7bb=['lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','debug','Condition,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','Condition,\x20%s,\x20%s','message','result','catch'];(function(_0x52678a,_0x1e7355){var _0x2a2649=function(_0x1bb133){while(--_0x1bb133){_0x52678a['push'](_0x52678a['shift']());}};_0x2a2649(++_0x1e7355);}(_0xa7bb,0xa1));var _0xba7b=function(_0x4d07cc,_0x587613){_0x4d07cc=_0x4d07cc-0x0;var _0x42de3b=_0xa7bb[_0x4d07cc];return _0x42de3b;};'use strict';var _=require(_0xba7b('0x0'));var util=require('util');var moment=require(_0xba7b('0x1'));var BPromise=require(_0xba7b('0x2'));var rs=require(_0xba7b('0x3'));var fs=require('fs');var Redis=require(_0xba7b('0x4'));var db=require(_0xba7b('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xba7b('0x6'))(_0xba7b('0x7'));var config=require(_0xba7b('0x8'));var jayson=require(_0xba7b('0x9'));var client=jayson[_0xba7b('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x529bf1,_0x13f7f6,_0x3c06d2){return new BPromise(function(_0x26de4c,_0x214e55){return client[_0xba7b('0xb')](_0x529bf1,_0x3c06d2)[_0xba7b('0xc')](function(_0x582099){logger['info']('Condition,\x20%s,\x20%s',_0x13f7f6,'request\x20sent');logger[_0xba7b('0xd')](_0xba7b('0xe'),_0x13f7f6,_0xba7b('0xf'),JSON[_0xba7b('0x10')](_0x582099));if(_0x582099[_0xba7b('0x11')]){if(_0x582099[_0xba7b('0x11')][_0xba7b('0x12')]===0x1f4){logger['error'](_0xba7b('0x13'),_0x13f7f6,_0x582099['error'][_0xba7b('0x14')]);return _0x214e55(_0x582099[_0xba7b('0x11')][_0xba7b('0x14')]);}logger['error']('Condition,\x20%s,\x20%s',_0x13f7f6,_0x582099[_0xba7b('0x11')][_0xba7b('0x14')]);return _0x26de4c(_0x582099[_0xba7b('0x11')][_0xba7b('0x14')]);}else{logger['info'](_0xba7b('0x13'),_0x13f7f6,_0xba7b('0xf'));_0x26de4c(_0x582099[_0xba7b('0x15')][_0xba7b('0x14')]);}})[_0xba7b('0x16')](function(_0x36ac48){logger['error']('Condition,\x20%s,\x20%s',_0x13f7f6,_0x36ac48);_0x214e55(_0x36ac48);});});}
\ No newline at end of file
index 23c7c08..cc185d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4370=['../../components/auth/service','../../config/environment','/:id','isAuthenticated','delete','exports','multer','util','path','connect-timeout','express','Router'];(function(_0xd7732f,_0x3161b2){var _0x4dc105=function(_0x88bd4d){while(--_0x88bd4d){_0xd7732f['push'](_0xd7732f['shift']());}};_0x4dc105(++_0x3161b2);}(_0x4370,0x102));var _0x0437=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0x4370[_0x3ab9ee];return _0x82ee88;};'use strict';var multer=require(_0x0437('0x0'));var util=require(_0x0437('0x1'));var path=require(_0x0437('0x2'));var timeout=require(_0x0437('0x3'));var express=require(_0x0437('0x4'));var router=express[_0x0437('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x0437('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x0437('0x7'));var controller=require('./condition.controller');router['put'](_0x0437('0x8'),auth[_0x0437('0x9')](),controller['update']);router[_0x0437('0xa')](_0x0437('0x8'),auth[_0x0437('0x9')](),controller['destroy']);module[_0x0437('0xb')]=router;
\ No newline at end of file
+var _0xe170=['exports','multer','util','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./condition.controller','put','/:id','isAuthenticated','update','delete','destroy'];(function(_0x504ef0,_0x359442){var _0x5aae5a=function(_0x255960){while(--_0x255960){_0x504ef0['push'](_0x504ef0['shift']());}};_0x5aae5a(++_0x359442);}(_0xe170,0x1b3));var _0x0e17=function(_0x2f3639,_0x33b7c6){_0x2f3639=_0x2f3639-0x0;var _0x50bf95=_0xe170[_0x2f3639];return _0x50bf95;};'use strict';var multer=require(_0x0e17('0x0'));var util=require(_0x0e17('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x0e17('0x2'));var auth=require(_0x0e17('0x3'));var interaction=require(_0x0e17('0x4'));var config=require(_0x0e17('0x5'));var controller=require(_0x0e17('0x6'));router[_0x0e17('0x7')](_0x0e17('0x8'),auth[_0x0e17('0x9')](),controller[_0x0e17('0xa')]);router[_0x0e17('0xb')]('/:id',auth[_0x0e17('0x9')](),controller[_0x0e17('0xc')]);module[_0x0e17('0xd')]=router;
\ No newline at end of file
index e596650..3fdf55b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d9d=['sequelize','name','STRING'];(function(_0x3f9f84,_0x5dfe82){var _0x340e24=function(_0x3470eb){while(--_0x3470eb){_0x3f9f84['push'](_0x3f9f84['shift']());}};_0x340e24(++_0x5dfe82);}(_0x7d9d,0x11a));var _0xd7d9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7d9d[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xd7d9('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xd7d9('0x1')},'OrderBy':{'type':Sequelize['INTEGER'],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0xd7d9('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0xa8c8=['name','sequelize','exports'];(function(_0x199dc8,_0x40c480){var _0x3b013a=function(_0x1e6971){while(--_0x1e6971){_0x199dc8['push'](_0x199dc8['shift']());}};_0x3b013a(++_0x40c480);}(_0xa8c8,0x1d2));var _0x8a8c=function(_0x418fe5,_0x4622cd){_0x418fe5=_0x418fe5-0x0;var _0x5ea0ca=_0xa8c8[_0x418fe5];return _0x5ea0ca;};'use strict';var Sequelize=require(_0x8a8c('0x0'));module[_0x8a8c('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x8a8c('0x2')},'OrderBy':{'type':Sequelize['INTEGER'],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
index 7e1dec6..59d342d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02ce=['role','UserProfileSection','CmContactHasItem','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','json','offset','undefined','count','limit','status','Content-Range','apply','reject','save','update','then','destroy','ContactItemTypes','UserProfileResource','end','error','stack','name','send','index','map','ContactItemType','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filters','filter','VIRTUAL','merge','options','includeAll','include','catch','show','params','find','create','body','user','get'];(function(_0x3817a9,_0x29e215){var _0x443f30=function(_0x13940b){while(--_0x13940b){_0x3817a9['push'](_0x3817a9['shift']());}};_0x443f30(++_0x29e215);}(_0x02ce,0x1ac));var _0xe02c=function(_0x4831c5,_0x57ef04){_0x4831c5=_0x4831c5-0x0;var _0xdff206=_0x02ce[_0x4831c5];return _0xdff206;};'use strict';var emlformat=require(_0xe02c('0x0'));var rimraf=require(_0xe02c('0x1'));var zipdir=require(_0xe02c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe02c('0x3'));var moment=require('moment');var BPromise=require(_0xe02c('0x4'));var Mustache=require(_0xe02c('0x5'));var util=require(_0xe02c('0x6'));var path=require(_0xe02c('0x7'));var sox=require(_0xe02c('0x8'));var csv=require(_0xe02c('0x9'));var ejs=require(_0xe02c('0xa'));var fs=require('fs');var fs_extra=require(_0xe02c('0xb'));var _=require(_0xe02c('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe02c('0xd'));var deskjs=require(_0xe02c('0xe'));var toCsv=require(_0xe02c('0x9'));var querystring=require(_0xe02c('0xf'));var Papa=require(_0xe02c('0x10'));var Redis=require(_0xe02c('0x11'));var authService=require(_0xe02c('0x12'));var qs=require(_0xe02c('0x13'));var as=require(_0xe02c('0x14'));var hardwareService=require(_0xe02c('0x15'));var logger=require(_0xe02c('0x16'))(_0xe02c('0x17'));var utils=require(_0xe02c('0x18'));var config=require(_0xe02c('0x19'));var licenseUtil=require(_0xe02c('0x1a'));var db=require(_0xe02c('0x1b'))['db'];function respondWithStatusCode(_0x23d886,_0x32fc45){_0x32fc45=_0x32fc45||0xcc;return function(_0x5d6d13){if(_0x5d6d13){return _0x23d886[_0xe02c('0x1c')](_0x32fc45);}return _0x23d886['status'](_0x32fc45)['end']();};}function respondWithResult(_0x3f4e28,_0x56405a){_0x56405a=_0x56405a||0xc8;return function(_0x221910){if(_0x221910){return _0x3f4e28['status'](_0x56405a)[_0xe02c('0x1d')](_0x221910);}};}function respondWithFilteredResult(_0x4e9c6d,_0x256311){return function(_0x366893){if(_0x366893){var _0x59f2f6=typeof _0x256311[_0xe02c('0x1e')]===_0xe02c('0x1f')&&typeof _0x256311['limit']===_0xe02c('0x1f');var _0x20f492=_0x366893['count'];var _0x52917f=_0x59f2f6?0x0:_0x256311[_0xe02c('0x1e')];var _0x49604a=_0x59f2f6?_0x366893[_0xe02c('0x20')]:_0x256311[_0xe02c('0x1e')]+_0x256311[_0xe02c('0x21')];var _0x36fed0;if(_0x49604a>=_0x20f492){_0x49604a=_0x20f492;_0x36fed0=0xc8;}else{_0x36fed0=0xce;}_0x4e9c6d[_0xe02c('0x22')](_0x36fed0);return _0x4e9c6d['set'](_0xe02c('0x23'),_0x52917f+'-'+_0x49604a+'/'+_0x20f492)['json'](_0x366893);}return null;};}function patchUpdates(_0x4ea9b5){return function(_0x393621){try{jsonpatch[_0xe02c('0x24')](_0x393621,_0x4ea9b5,!![]);}catch(_0x480b9a){return BPromise[_0xe02c('0x25')](_0x480b9a);}return _0x393621[_0xe02c('0x26')]();};}function saveUpdates(_0x4ce5ee,_0x38dce2){return function(_0x45fd82){if(_0x45fd82){return _0x45fd82[_0xe02c('0x27')](_0x4ce5ee)[_0xe02c('0x28')](function(_0x2d44c8){return _0x2d44c8;});}return null;};}function removeEntity(_0x557142,_0x3e80e3){return function(_0xf41d4c){if(_0xf41d4c){return _0xf41d4c[_0xe02c('0x29')]()[_0xe02c('0x28')](function(){var _0x60b65e=_0xf41d4c['get']({'plain':!![]});var _0xefd882=_0xe02c('0x2a');return db[_0xe02c('0x2b')][_0xe02c('0x29')]({'where':{'type':_0xefd882,'resourceId':_0x60b65e['id']}})[_0xe02c('0x28')](function(){return _0xf41d4c;});})[_0xe02c('0x28')](function(){_0x557142[_0xe02c('0x22')](0xcc)[_0xe02c('0x2c')]();});}};}function handleEntityNotFound(_0x55ef2a,_0x55e475){return function(_0x3790eb){if(!_0x3790eb){_0x55ef2a[_0xe02c('0x1c')](0x194);}return _0x3790eb;};}function handleError(_0x481e02,_0x18b572){_0x18b572=_0x18b572||0x1f4;return function(_0x2d1d98){logger[_0xe02c('0x2d')](_0x2d1d98[_0xe02c('0x2e')]);if(_0x2d1d98[_0xe02c('0x2f')]){delete _0x2d1d98[_0xe02c('0x2f')];}_0x481e02[_0xe02c('0x22')](_0x18b572)[_0xe02c('0x30')](_0x2d1d98);};}exports[_0xe02c('0x31')]=function(_0x288004,_0x17d5b3){var _0x5a2da0={},_0x3c3d2c={},_0x3c1858={'count':0x0,'rows':[]};var _0x22b783=_[_0xe02c('0x32')](db[_0xe02c('0x33')][_0xe02c('0x34')],function(_0x58bf16){return{'name':_0x58bf16[_0xe02c('0x35')],'type':_0x58bf16[_0xe02c('0x36')]['key']};});_0x3c3d2c[_0xe02c('0x37')]=_[_0xe02c('0x32')](_0x22b783,_0xe02c('0x2f'));_0x3c3d2c[_0xe02c('0x38')]=_[_0xe02c('0x39')](_0x288004['query']);_0x3c3d2c['filters']=_[_0xe02c('0x3a')](_0x3c3d2c[_0xe02c('0x37')],_0x3c3d2c['query']);_0x5a2da0[_0xe02c('0x3b')]=_['intersection'](_0x3c3d2c[_0xe02c('0x37')],qs[_0xe02c('0x3c')](_0x288004[_0xe02c('0x38')][_0xe02c('0x3c')]));_0x5a2da0[_0xe02c('0x3b')]=_0x5a2da0['attributes'][_0xe02c('0x3d')]?_0x5a2da0['attributes']:_0x3c3d2c[_0xe02c('0x37')];if(!_0x288004[_0xe02c('0x38')][_0xe02c('0x3e')](_0xe02c('0x3f'))){_0x5a2da0[_0xe02c('0x21')]=qs[_0xe02c('0x21')](_0x288004['query'][_0xe02c('0x21')]);_0x5a2da0[_0xe02c('0x1e')]=qs['offset'](_0x288004[_0xe02c('0x38')][_0xe02c('0x1e')]);}_0x5a2da0['order']=qs[_0xe02c('0x40')](_0x288004['query'][_0xe02c('0x40')]);_0x5a2da0[_0xe02c('0x41')]=qs['filters'](_[_0xe02c('0x42')](_0x288004[_0xe02c('0x38')],_0x3c3d2c[_0xe02c('0x43')]),_0x22b783);if(_0x288004[_0xe02c('0x38')][_0xe02c('0x44')]){_0x5a2da0[_0xe02c('0x41')]=_['merge'](_0x5a2da0[_0xe02c('0x41')],{'$or':_['map'](_0x22b783,function(_0x5ae8cd){if(_0x5ae8cd[_0xe02c('0x36')]!==_0xe02c('0x45')){var _0x42fbac={};_0x42fbac[_0x5ae8cd[_0xe02c('0x2f')]]={'$like':'%'+_0x288004['query'][_0xe02c('0x44')]+'%'};return _0x42fbac;}})});}_0x5a2da0=_[_0xe02c('0x46')]({},_0x5a2da0,_0x288004[_0xe02c('0x47')]);var _0x5baef6={'where':_0x5a2da0['where']};return db[_0xe02c('0x33')][_0xe02c('0x20')](_0x5baef6)[_0xe02c('0x28')](function(_0x2313d2){_0x3c1858[_0xe02c('0x20')]=_0x2313d2;if(_0x288004[_0xe02c('0x38')][_0xe02c('0x48')]){_0x5a2da0[_0xe02c('0x49')]=[{'all':!![]}];}return db[_0xe02c('0x33')]['findAll'](_0x5a2da0);})[_0xe02c('0x28')](function(_0x5ef4a1){_0x3c1858['rows']=_0x5ef4a1;return _0x3c1858;})[_0xe02c('0x28')](respondWithFilteredResult(_0x17d5b3,_0x5a2da0))[_0xe02c('0x4a')](handleError(_0x17d5b3,null));};exports[_0xe02c('0x4b')]=function(_0x1719cf,_0x24d506){var _0x12ca0e={'raw':!![],'where':{'id':_0x1719cf[_0xe02c('0x4c')]['id']}},_0x165f4a={};_0x165f4a['model']=_['keys'](db[_0xe02c('0x33')][_0xe02c('0x34')]);_0x165f4a[_0xe02c('0x38')]=_['keys'](_0x1719cf[_0xe02c('0x38')]);_0x165f4a[_0xe02c('0x43')]=_[_0xe02c('0x3a')](_0x165f4a[_0xe02c('0x37')],_0x165f4a[_0xe02c('0x38')]);_0x12ca0e[_0xe02c('0x3b')]=_[_0xe02c('0x3a')](_0x165f4a[_0xe02c('0x37')],qs[_0xe02c('0x3c')](_0x1719cf[_0xe02c('0x38')]['fields']));_0x12ca0e[_0xe02c('0x3b')]=_0x12ca0e[_0xe02c('0x3b')][_0xe02c('0x3d')]?_0x12ca0e[_0xe02c('0x3b')]:_0x165f4a[_0xe02c('0x37')];if(_0x1719cf[_0xe02c('0x38')][_0xe02c('0x48')]){_0x12ca0e[_0xe02c('0x49')]=[{'all':!![]}];}_0x12ca0e=_[_0xe02c('0x46')]({},_0x12ca0e,_0x1719cf[_0xe02c('0x47')]);return db[_0xe02c('0x33')][_0xe02c('0x4d')](_0x12ca0e)[_0xe02c('0x28')](handleEntityNotFound(_0x24d506,null))['then'](respondWithResult(_0x24d506,null))[_0xe02c('0x4a')](handleError(_0x24d506,null));};exports['create']=function(_0x15b05c,_0x324911){return db[_0xe02c('0x33')][_0xe02c('0x4e')](_0x15b05c[_0xe02c('0x4f')],{})[_0xe02c('0x28')](function(_0x160969){var _0xc2b5dd=_0x15b05c[_0xe02c('0x50')][_0xe02c('0x51')]({'plain':!![]});if(!_0xc2b5dd)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xc2b5dd[_0xe02c('0x52')]===_0xe02c('0x50')){var _0xeb4214=_0x160969['get']({'plain':!![]});var _0xdab6cb='ContactItemTypes';return db[_0xe02c('0x53')]['find']({'where':{'name':_0xdab6cb,'userProfileId':_0xc2b5dd['userProfileId']},'raw':!![]})['then'](function(_0x55cf99){if(_0x55cf99&&_0x55cf99['autoAssociation']===0x0){return db['UserProfileResource'][_0xe02c('0x4e')]({'name':_0xeb4214[_0xe02c('0x2f')],'resourceId':_0xeb4214['id'],'type':_0x55cf99[_0xe02c('0x2f')],'sectionId':_0x55cf99['id']},{})[_0xe02c('0x28')](function(){return _0x160969;});}else{return _0x160969;}})['catch'](function(_0x274beb){logger[_0xe02c('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x274beb);throw _0x274beb;});}return _0x160969;})[_0xe02c('0x28')](respondWithResult(_0x324911,0xc9))[_0xe02c('0x4a')](handleError(_0x324911,null));};exports[_0xe02c('0x27')]=function(_0x51f940,_0x57a00f){if(_0x51f940[_0xe02c('0x4f')]['id']){delete _0x51f940[_0xe02c('0x4f')]['id'];}return db[_0xe02c('0x33')]['find']({'where':{'id':_0x51f940[_0xe02c('0x4c')]['id']}})['then'](handleEntityNotFound(_0x57a00f,null))['then'](saveUpdates(_0x51f940[_0xe02c('0x4f')],null))[_0xe02c('0x28')](respondWithResult(_0x57a00f,null))['catch'](handleError(_0x57a00f,null));};exports[_0xe02c('0x29')]=function(_0x849eea,_0x1ead72){return db['ContactItemType'][_0xe02c('0x4d')]({'where':{'id':_0x849eea[_0xe02c('0x4c')]['id']}})['then'](handleEntityNotFound(_0x1ead72,null))[_0xe02c('0x28')](db[_0xe02c('0x54')][_0xe02c('0x27')]({'ItemTypeId':null},{'where':{'ItemTypeId':_0x849eea[_0xe02c('0x4c')]['id']}}))[_0xe02c('0x28')](removeEntity(_0x1ead72,null))[_0xe02c('0x4a')](handleError(_0x1ead72,null));};
\ No newline at end of file
+var _0xd4a2=['stack','name','send','index','map','ContactItemType','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','includeAll','include','findAll','rows','catch','params','rawAttributes','options','find','create','user','role','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','CmContactHasItem','eml-format','fast-json-patch','moment','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','get'];(function(_0xec2104,_0xccfda9){var _0x3aa68a=function(_0x35f239){while(--_0x35f239){_0xec2104['push'](_0xec2104['shift']());}};_0x3aa68a(++_0xccfda9);}(_0xd4a2,0x173));var _0x2d4a=function(_0x324e36,_0x5b6c1d){_0x324e36=_0x324e36-0x0;var _0x4891d1=_0xd4a2[_0x324e36];return _0x4891d1;};'use strict';var emlformat=require(_0x2d4a('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x2d4a('0x1'));var rp=require('request-promise');var moment=require(_0x2d4a('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x2d4a('0x3'));var util=require('util');var path=require(_0x2d4a('0x4'));var sox=require(_0x2d4a('0x5'));var csv=require(_0x2d4a('0x6'));var ejs=require(_0x2d4a('0x7'));var fs=require('fs');var fs_extra=require(_0x2d4a('0x8'));var _=require('lodash');var squel=require(_0x2d4a('0x9'));var crypto=require(_0x2d4a('0xa'));var jsforce=require(_0x2d4a('0xb'));var deskjs=require(_0x2d4a('0xc'));var toCsv=require(_0x2d4a('0x6'));var querystring=require(_0x2d4a('0xd'));var Papa=require(_0x2d4a('0xe'));var Redis=require(_0x2d4a('0xf'));var authService=require(_0x2d4a('0x10'));var qs=require(_0x2d4a('0x11'));var as=require(_0x2d4a('0x12'));var hardwareService=require(_0x2d4a('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x2d4a('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x2d4a('0x15'));var db=require(_0x2d4a('0x16'))['db'];function respondWithStatusCode(_0x45b9fb,_0x5ac803){_0x5ac803=_0x5ac803||0xcc;return function(_0x2f785f){if(_0x2f785f){return _0x45b9fb[_0x2d4a('0x17')](_0x5ac803);}return _0x45b9fb[_0x2d4a('0x18')](_0x5ac803)[_0x2d4a('0x19')]();};}function respondWithResult(_0x544622,_0x4be8b4){_0x4be8b4=_0x4be8b4||0xc8;return function(_0x2a1d0f){if(_0x2a1d0f){return _0x544622['status'](_0x4be8b4)[_0x2d4a('0x1a')](_0x2a1d0f);}};}function respondWithFilteredResult(_0x175bda,_0x11896d){return function(_0x3a3156){if(_0x3a3156){var _0x4c5287=typeof _0x11896d[_0x2d4a('0x1b')]==='undefined'&&typeof _0x11896d[_0x2d4a('0x1c')]==='undefined';var _0x435687=_0x3a3156[_0x2d4a('0x1d')];var _0x2188b2=_0x4c5287?0x0:_0x11896d[_0x2d4a('0x1b')];var _0x498956=_0x4c5287?_0x3a3156['count']:_0x11896d['offset']+_0x11896d[_0x2d4a('0x1c')];var _0x1966d1;if(_0x498956>=_0x435687){_0x498956=_0x435687;_0x1966d1=0xc8;}else{_0x1966d1=0xce;}_0x175bda[_0x2d4a('0x18')](_0x1966d1);return _0x175bda[_0x2d4a('0x1e')](_0x2d4a('0x1f'),_0x2188b2+'-'+_0x498956+'/'+_0x435687)[_0x2d4a('0x1a')](_0x3a3156);}return null;};}function patchUpdates(_0x56445a){return function(_0x49f378){try{jsonpatch[_0x2d4a('0x20')](_0x49f378,_0x56445a,!![]);}catch(_0x1f3e17){return BPromise[_0x2d4a('0x21')](_0x1f3e17);}return _0x49f378[_0x2d4a('0x22')]();};}function saveUpdates(_0x1a2d20,_0x2e7736){return function(_0x22dd0b){if(_0x22dd0b){return _0x22dd0b[_0x2d4a('0x23')](_0x1a2d20)['then'](function(_0x26e7b8){return _0x26e7b8;});}return null;};}function removeEntity(_0x3240a2,_0x2c3799){return function(_0x42d813){if(_0x42d813){return _0x42d813[_0x2d4a('0x24')]()[_0x2d4a('0x25')](function(){var _0x456d38=_0x42d813[_0x2d4a('0x26')]({'plain':!![]});var _0x54c910='ContactItemTypes';return db['UserProfileResource'][_0x2d4a('0x24')]({'where':{'type':_0x54c910,'resourceId':_0x456d38['id']}})['then'](function(){return _0x42d813;});})[_0x2d4a('0x25')](function(){_0x3240a2[_0x2d4a('0x18')](0xcc)[_0x2d4a('0x19')]();});}};}function handleEntityNotFound(_0x1d2fa6,_0x13e769){return function(_0x326c38){if(!_0x326c38){_0x1d2fa6[_0x2d4a('0x17')](0x194);}return _0x326c38;};}function handleError(_0x27b358,_0x4f1fc8){_0x4f1fc8=_0x4f1fc8||0x1f4;return function(_0x436f53){logger['error'](_0x436f53[_0x2d4a('0x27')]);if(_0x436f53[_0x2d4a('0x28')]){delete _0x436f53[_0x2d4a('0x28')];}_0x27b358[_0x2d4a('0x18')](_0x4f1fc8)[_0x2d4a('0x29')](_0x436f53);};}exports[_0x2d4a('0x2a')]=function(_0x25ac5c,_0x2e8063){var _0x51b447={},_0x45a4fa={},_0x3d94b7={'count':0x0,'rows':[]};var _0xda1ef2=_[_0x2d4a('0x2b')](db[_0x2d4a('0x2c')]['rawAttributes'],function(_0x217653){return{'name':_0x217653[_0x2d4a('0x2d')],'type':_0x217653[_0x2d4a('0x2e')][_0x2d4a('0x2f')]};});_0x45a4fa[_0x2d4a('0x30')]=_['map'](_0xda1ef2,_0x2d4a('0x28'));_0x45a4fa[_0x2d4a('0x31')]=_[_0x2d4a('0x32')](_0x25ac5c[_0x2d4a('0x31')]);_0x45a4fa[_0x2d4a('0x33')]=_[_0x2d4a('0x34')](_0x45a4fa['model'],_0x45a4fa[_0x2d4a('0x31')]);_0x51b447[_0x2d4a('0x35')]=_[_0x2d4a('0x34')](_0x45a4fa[_0x2d4a('0x30')],qs[_0x2d4a('0x36')](_0x25ac5c['query'][_0x2d4a('0x36')]));_0x51b447[_0x2d4a('0x35')]=_0x51b447['attributes'][_0x2d4a('0x37')]?_0x51b447[_0x2d4a('0x35')]:_0x45a4fa[_0x2d4a('0x30')];if(!_0x25ac5c[_0x2d4a('0x31')][_0x2d4a('0x38')](_0x2d4a('0x39'))){_0x51b447['limit']=qs[_0x2d4a('0x1c')](_0x25ac5c[_0x2d4a('0x31')][_0x2d4a('0x1c')]);_0x51b447[_0x2d4a('0x1b')]=qs[_0x2d4a('0x1b')](_0x25ac5c[_0x2d4a('0x31')]['offset']);}_0x51b447['order']=qs[_0x2d4a('0x3a')](_0x25ac5c['query'][_0x2d4a('0x3a')]);_0x51b447[_0x2d4a('0x3b')]=qs['filters'](_[_0x2d4a('0x3c')](_0x25ac5c[_0x2d4a('0x31')],_0x45a4fa[_0x2d4a('0x33')]),_0xda1ef2);if(_0x25ac5c[_0x2d4a('0x31')][_0x2d4a('0x3d')]){_0x51b447[_0x2d4a('0x3b')]=_[_0x2d4a('0x3e')](_0x51b447[_0x2d4a('0x3b')],{'$or':_[_0x2d4a('0x2b')](_0xda1ef2,function(_0x2d64b0){if(_0x2d64b0[_0x2d4a('0x2e')]!=='VIRTUAL'){var _0x8bc995={};_0x8bc995[_0x2d64b0[_0x2d4a('0x28')]]={'$like':'%'+_0x25ac5c[_0x2d4a('0x31')][_0x2d4a('0x3d')]+'%'};return _0x8bc995;}})});}_0x51b447=_[_0x2d4a('0x3e')]({},_0x51b447,_0x25ac5c['options']);var _0x50dbc3={'where':_0x51b447['where']};return db['ContactItemType'][_0x2d4a('0x1d')](_0x50dbc3)[_0x2d4a('0x25')](function(_0xf39020){_0x3d94b7[_0x2d4a('0x1d')]=_0xf39020;if(_0x25ac5c['query'][_0x2d4a('0x3f')]){_0x51b447[_0x2d4a('0x40')]=[{'all':!![]}];}return db['ContactItemType'][_0x2d4a('0x41')](_0x51b447);})[_0x2d4a('0x25')](function(_0x8a9375){_0x3d94b7[_0x2d4a('0x42')]=_0x8a9375;return _0x3d94b7;})[_0x2d4a('0x25')](respondWithFilteredResult(_0x2e8063,_0x51b447))[_0x2d4a('0x43')](handleError(_0x2e8063,null));};exports['show']=function(_0x236fbf,_0x2d6eca){var _0x12c899={'raw':!![],'where':{'id':_0x236fbf[_0x2d4a('0x44')]['id']}},_0x365399={};_0x365399[_0x2d4a('0x30')]=_['keys'](db[_0x2d4a('0x2c')][_0x2d4a('0x45')]);_0x365399[_0x2d4a('0x31')]=_['keys'](_0x236fbf[_0x2d4a('0x31')]);_0x365399['filters']=_[_0x2d4a('0x34')](_0x365399[_0x2d4a('0x30')],_0x365399[_0x2d4a('0x31')]);_0x12c899[_0x2d4a('0x35')]=_[_0x2d4a('0x34')](_0x365399['model'],qs['fields'](_0x236fbf[_0x2d4a('0x31')][_0x2d4a('0x36')]));_0x12c899['attributes']=_0x12c899[_0x2d4a('0x35')]['length']?_0x12c899[_0x2d4a('0x35')]:_0x365399[_0x2d4a('0x30')];if(_0x236fbf[_0x2d4a('0x31')]['includeAll']){_0x12c899[_0x2d4a('0x40')]=[{'all':!![]}];}_0x12c899=_['merge']({},_0x12c899,_0x236fbf[_0x2d4a('0x46')]);return db[_0x2d4a('0x2c')][_0x2d4a('0x47')](_0x12c899)[_0x2d4a('0x25')](handleEntityNotFound(_0x2d6eca,null))[_0x2d4a('0x25')](respondWithResult(_0x2d6eca,null))[_0x2d4a('0x43')](handleError(_0x2d6eca,null));};exports[_0x2d4a('0x48')]=function(_0x2b2f4b,_0x1ffb96){return db[_0x2d4a('0x2c')][_0x2d4a('0x48')](_0x2b2f4b['body'],{})[_0x2d4a('0x25')](function(_0x26a070){var _0x3336b2=_0x2b2f4b[_0x2d4a('0x49')][_0x2d4a('0x26')]({'plain':!![]});if(!_0x3336b2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3336b2[_0x2d4a('0x4a')]===_0x2d4a('0x49')){var _0x2123e8=_0x26a070[_0x2d4a('0x26')]({'plain':!![]});var _0x2f038a='ContactItemTypes';return db['UserProfileSection'][_0x2d4a('0x47')]({'where':{'name':_0x2f038a,'userProfileId':_0x3336b2[_0x2d4a('0x4b')]},'raw':!![]})['then'](function(_0x15e204){if(_0x15e204&&_0x15e204[_0x2d4a('0x4c')]===0x0){return db[_0x2d4a('0x4d')][_0x2d4a('0x48')]({'name':_0x2123e8['name'],'resourceId':_0x2123e8['id'],'type':_0x15e204[_0x2d4a('0x28')],'sectionId':_0x15e204['id']},{})['then'](function(){return _0x26a070;});}else{return _0x26a070;}})[_0x2d4a('0x43')](function(_0x3fe91b){logger[_0x2d4a('0x4e')](_0x2d4a('0x4f'),_0x3fe91b);throw _0x3fe91b;});}return _0x26a070;})[_0x2d4a('0x25')](respondWithResult(_0x1ffb96,0xc9))[_0x2d4a('0x43')](handleError(_0x1ffb96,null));};exports[_0x2d4a('0x23')]=function(_0x1b088c,_0x5d086a){if(_0x1b088c[_0x2d4a('0x50')]['id']){delete _0x1b088c[_0x2d4a('0x50')]['id'];}return db[_0x2d4a('0x2c')][_0x2d4a('0x47')]({'where':{'id':_0x1b088c[_0x2d4a('0x44')]['id']}})[_0x2d4a('0x25')](handleEntityNotFound(_0x5d086a,null))[_0x2d4a('0x25')](saveUpdates(_0x1b088c[_0x2d4a('0x50')],null))[_0x2d4a('0x25')](respondWithResult(_0x5d086a,null))[_0x2d4a('0x43')](handleError(_0x5d086a,null));};exports[_0x2d4a('0x24')]=function(_0x113bc4,_0x1b4ae7){return db[_0x2d4a('0x2c')][_0x2d4a('0x47')]({'where':{'id':_0x113bc4[_0x2d4a('0x44')]['id']}})[_0x2d4a('0x25')](handleEntityNotFound(_0x1b4ae7,null))['then'](db[_0x2d4a('0x51')][_0x2d4a('0x23')]({'ItemTypeId':null},{'where':{'ItemTypeId':_0x113bc4['params']['id']}}))[_0x2d4a('0x25')](removeEntity(_0x1b4ae7,null))[_0x2d4a('0x43')](handleError(_0x1b4ae7,null));};
\ No newline at end of file
index bd180c7..0229a00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x629d=['rimraf','../../config/environment','./contactItemType.attributes','exports','define','ContactItemType','tools_contact_item_types','lodash','util','moment','bluebird','path'];(function(_0x57dc7a,_0x5b4f21){var _0x35f693=function(_0x154c14){while(--_0x154c14){_0x57dc7a['push'](_0x57dc7a['shift']());}};_0x35f693(++_0x5b4f21);}(_0x629d,0xc7));var _0xd629=function(_0x4aa7b8,_0xc69b67){_0x4aa7b8=_0x4aa7b8-0x0;var _0x310986=_0x629d[_0x4aa7b8];return _0x310986;};'use strict';var _=require(_0xd629('0x0'));var util=require(_0xd629('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xd629('0x2'));var BPromise=require(_0xd629('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd629('0x4'));var rimraf=require(_0xd629('0x5'));var config=require(_0xd629('0x6'));var attributes=require(_0xd629('0x7'));module[_0xd629('0x8')]=function(_0x18d871,_0x188eb1){return _0x18d871[_0xd629('0x9')](_0xd629('0xa'),attributes,{'tableName':_0xd629('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5a69=['./contactItemType.attributes','define','ContactItemType','lodash','util','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x44e4f8,_0x4af8bd){var _0x310967=function(_0x2ffe97){while(--_0x2ffe97){_0x44e4f8['push'](_0x44e4f8['shift']());}};_0x310967(++_0x4af8bd);}(_0x5a69,0x16b));var _0x95a6=function(_0x1a52d2,_0x92966a){_0x1a52d2=_0x1a52d2-0x0;var _0x5a091b=_0x5a69[_0x1a52d2];return _0x5a091b;};'use strict';var _=require(_0x95a6('0x0'));var util=require(_0x95a6('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x95a6('0x2'));var BPromise=require('bluebird');var rp=require(_0x95a6('0x3'));var fs=require('fs');var path=require(_0x95a6('0x4'));var rimraf=require(_0x95a6('0x5'));var config=require(_0x95a6('0x6'));var attributes=require(_0x95a6('0x7'));module['exports']=function(_0x1b36c5,_0x5d8ef7){return _0x1b36c5[_0x95a6('0x8')](_0x95a6('0x9'),attributes,{'tableName':'tools_contact_item_types','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 51b16cb..d3a0481 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc205=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','ContactItemType,\x20%s,\x20%s,\x20%s','stringify','error','code','ContactItemType,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb'];(function(_0x56ae46,_0x43b7c1){var _0x4b8eb7=function(_0xf334ad){while(--_0xf334ad){_0x56ae46['push'](_0x56ae46['shift']());}};_0x4b8eb7(++_0x43b7c1);}(_0xc205,0x19c));var _0x5c20=function(_0x366f7b,_0x315537){_0x366f7b=_0x366f7b-0x0;var _0x5e4355=_0xc205[_0x366f7b];return _0x5e4355;};'use strict';var _=require(_0x5c20('0x0'));var util=require(_0x5c20('0x1'));var moment=require(_0x5c20('0x2'));var BPromise=require(_0x5c20('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5c20('0x4'));var db=require(_0x5c20('0x5'))['db'];var utils=require(_0x5c20('0x6'));var logger=require(_0x5c20('0x7'))('rpc');var config=require(_0x5c20('0x8'));var jayson=require(_0x5c20('0x9'));var client=jayson[_0x5c20('0xa')][_0x5c20('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x364b00,_0x4962b9,_0x1317e8){return new BPromise(function(_0x5081fd,_0xff8726){return client['request'](_0x364b00,_0x1317e8)[_0x5c20('0xc')](function(_0x304a91){logger[_0x5c20('0xd')]('ContactItemType,\x20%s,\x20%s',_0x4962b9,_0x5c20('0xe'));logger['debug'](_0x5c20('0xf'),_0x4962b9,_0x5c20('0xe'),JSON[_0x5c20('0x10')](_0x304a91));if(_0x304a91[_0x5c20('0x11')]){if(_0x304a91[_0x5c20('0x11')][_0x5c20('0x12')]===0x1f4){logger[_0x5c20('0x11')](_0x5c20('0x13'),_0x4962b9,_0x304a91['error']['message']);return _0xff8726(_0x304a91[_0x5c20('0x11')][_0x5c20('0x14')]);}logger[_0x5c20('0x11')](_0x5c20('0x13'),_0x4962b9,_0x304a91[_0x5c20('0x11')][_0x5c20('0x14')]);return _0x5081fd(_0x304a91[_0x5c20('0x11')]['message']);}else{logger[_0x5c20('0xd')]('ContactItemType,\x20%s,\x20%s',_0x4962b9,_0x5c20('0xe'));_0x5081fd(_0x304a91[_0x5c20('0x15')][_0x5c20('0x14')]);}})['catch'](function(_0x455244){logger[_0x5c20('0x11')](_0x5c20('0x13'),_0x4962b9,_0x455244);_0xff8726(_0x455244);});});}
\ No newline at end of file
+var _0x8493=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','ContactItemType,\x20%s,\x20%s','request\x20sent','ContactItemType,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','moment','randomstring'];(function(_0xb41127,_0x5a16ad){var _0x5b66a7=function(_0x5acbe4){while(--_0x5acbe4){_0xb41127['push'](_0xb41127['shift']());}};_0x5b66a7(++_0x5a16ad);}(_0x8493,0x151));var _0x3849=function(_0xae01dd,_0xbd8a3c){_0xae01dd=_0xae01dd-0x0;var _0x8c26df=_0x8493[_0xae01dd];return _0x8c26df;};'use strict';var _=require(_0x3849('0x0'));var util=require('util');var moment=require(_0x3849('0x1'));var BPromise=require('bluebird');var rs=require(_0x3849('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3849('0x3'))['db'];var utils=require(_0x3849('0x4'));var logger=require(_0x3849('0x5'))('rpc');var config=require(_0x3849('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x3849('0x7')][_0x3849('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xd3c45c,_0x5bb2cf,_0x41cbf3){return new BPromise(function(_0x41cdf0,_0x451971){return client[_0x3849('0x9')](_0xd3c45c,_0x41cbf3)[_0x3849('0xa')](function(_0x38b837){logger[_0x3849('0xb')](_0x3849('0xc'),_0x5bb2cf,_0x3849('0xd'));logger['debug'](_0x3849('0xe'),_0x5bb2cf,_0x3849('0xd'),JSON[_0x3849('0xf')](_0x38b837));if(_0x38b837['error']){if(_0x38b837[_0x3849('0x10')][_0x3849('0x11')]===0x1f4){logger[_0x3849('0x10')]('ContactItemType,\x20%s,\x20%s',_0x5bb2cf,_0x38b837[_0x3849('0x10')]['message']);return _0x451971(_0x38b837[_0x3849('0x10')][_0x3849('0x12')]);}logger[_0x3849('0x10')]('ContactItemType,\x20%s,\x20%s',_0x5bb2cf,_0x38b837[_0x3849('0x10')][_0x3849('0x12')]);return _0x41cdf0(_0x38b837[_0x3849('0x10')]['message']);}else{logger[_0x3849('0xb')](_0x3849('0xc'),_0x5bb2cf,'request\x20sent');_0x41cdf0(_0x38b837[_0x3849('0x13')][_0x3849('0x12')]);}})['catch'](function(_0x4a3e70){logger[_0x3849('0x10')](_0x3849('0xc'),_0x5bb2cf,_0x4a3e70);_0x451971(_0x4a3e70);});});}
\ No newline at end of file
index 3975857..7533866 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6f1=['multer','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./contactItemType.controller','get','isAuthenticated','/:id','post','create','destroy','exports'];(function(_0x5734bc,_0x1c94f6){var _0x244c11=function(_0x2211ec){while(--_0x2211ec){_0x5734bc['push'](_0x5734bc['shift']());}};_0x244c11(++_0x1c94f6);}(_0xf6f1,0x12c));var _0x1f6f=function(_0x386543,_0x214cd4){_0x386543=_0x386543-0x0;var _0x180996=_0xf6f1[_0x386543];return _0x180996;};'use strict';var multer=require(_0x1f6f('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x1f6f('0x1'));var express=require(_0x1f6f('0x2'));var router=express[_0x1f6f('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1f6f('0x4'));var interaction=require(_0x1f6f('0x5'));var config=require(_0x1f6f('0x6'));var controller=require(_0x1f6f('0x7'));router[_0x1f6f('0x8')]('/',auth[_0x1f6f('0x9')](),controller['index']);router[_0x1f6f('0x8')](_0x1f6f('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x1f6f('0xb')]('/',auth[_0x1f6f('0x9')](),controller[_0x1f6f('0xc')]);router['put'](_0x1f6f('0xa'),auth[_0x1f6f('0x9')](),controller['update']);router['delete']('/:id',auth[_0x1f6f('0x9')](),controller[_0x1f6f('0xd')]);module[_0x1f6f('0xe')]=router;
\ No newline at end of file
+var _0x9f9a=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x24e609,_0xc26811){var _0x259290=function(_0x453208){while(--_0x453208){_0x24e609['push'](_0x24e609['shift']());}};_0x259290(++_0xc26811);}(_0x9f9a,0x12c));var _0xa9f9=function(_0x3f578f,_0x51f172){_0x3f578f=_0x3f578f-0x0;var _0x32c754=_0x9f9a[_0x3f578f];return _0x32c754;};'use strict';var multer=require(_0xa9f9('0x0'));var util=require(_0xa9f9('0x1'));var path=require(_0xa9f9('0x2'));var timeout=require(_0xa9f9('0x3'));var express=require('express');var router=express[_0xa9f9('0x4')]();var fs_extra=require(_0xa9f9('0x5'));var auth=require(_0xa9f9('0x6'));var interaction=require(_0xa9f9('0x7'));var config=require('../../config/environment');var controller=require('./contactItemType.controller');router[_0xa9f9('0x8')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xa9f9('0x9'),auth[_0xa9f9('0xa')](),controller[_0xa9f9('0xb')]);router[_0xa9f9('0xc')]('/',auth['isAuthenticated'](),controller[_0xa9f9('0xd')]);router[_0xa9f9('0xe')](_0xa9f9('0x9'),auth[_0xa9f9('0xa')](),controller[_0xa9f9('0xf')]);router[_0xa9f9('0x10')](_0xa9f9('0x9'),auth['isAuthenticated'](),controller[_0xa9f9('0x11')]);module[_0xa9f9('0x12')]=router;
\ No newline at end of file
index 0ee641c..95dc3e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['STRING','name'];(function(_0xcea2d4,_0x5c6ce9){var _0x5116e2=function(_0x26e378){while(--_0x26e378){_0xcea2d4['push'](_0xcea2d4['shift']());}};_0x5116e2(++_0x5c6ce9);}(_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
+var _0xd8b0=['exports','sequelize'];(function(_0x13c327,_0x397ee3){var _0x36ac71=function(_0x1979ac){while(--_0x1979ac){_0x13c327['push'](_0x13c327['shift']());}};_0x36ac71(++_0x397ee3);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require(_0x0d8b('0x0'));module[_0x0d8b('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index a8b76ca..ca100c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x611c=['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/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','get','CustomDashboards','UserProfileResource','error','stack','name','send','index','map','Dashboard','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','keys','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','options','createdAt','omit','UserProfileSection','attrUrl','attrs','https://','custom','attrPath','value','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','attrRefresh','widgetAttributes:\x20%s','stringify','DashboardItem','getItems','findOne','nolimit','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache'];(function(_0x5a7dd3,_0x26b7cf){var _0x2f4d07=function(_0x280510){while(--_0x280510){_0x5a7dd3['push'](_0x5a7dd3['shift']());}};_0x2f4d07(++_0x26b7cf);}(_0x611c,0x185));var _0xc611=function(_0x2f5a1c,_0xdc6204){_0x2f5a1c=_0x2f5a1c-0x0;var _0x5d4c87=_0x611c[_0x2f5a1c];return _0x5d4c87;};'use strict';var emlformat=require(_0xc611('0x0'));var rimraf=require(_0xc611('0x1'));var zipdir=require(_0xc611('0x2'));var jsonpatch=require(_0xc611('0x3'));var rp=require(_0xc611('0x4'));var moment=require(_0xc611('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xc611('0x6'));var util=require('util');var path=require(_0xc611('0x7'));var sox=require(_0xc611('0x8'));var csv=require(_0xc611('0x9'));var ejs=require(_0xc611('0xa'));var fs=require('fs');var fs_extra=require(_0xc611('0xb'));var _=require(_0xc611('0xc'));var squel=require(_0xc611('0xd'));var crypto=require(_0xc611('0xe'));var jsforce=require(_0xc611('0xf'));var deskjs=require(_0xc611('0x10'));var toCsv=require(_0xc611('0x9'));var querystring=require(_0xc611('0x11'));var Papa=require(_0xc611('0x12'));var Redis=require(_0xc611('0x13'));var authService=require(_0xc611('0x14'));var qs=require(_0xc611('0x15'));var as=require(_0xc611('0x16'));var hardwareService=require(_0xc611('0x17'));var logger=require('../../config/logger')(_0xc611('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xc611('0x19'));var db=require(_0xc611('0x1a'))['db'];config[_0xc611('0x1b')]=_[_0xc611('0x1c')](config[_0xc611('0x1b')],{'host':_0xc611('0x1d'),'port':0x18eb});var socket=require(_0xc611('0x1e'))(new Redis(config[_0xc611('0x1b')]));require(_0xc611('0x1f'))['register'](socket);function respondWithStatusCode(_0x52b889,_0x2ab1ff){_0x2ab1ff=_0x2ab1ff||0xcc;return function(_0x27ab82){if(_0x27ab82){return _0x52b889[_0xc611('0x20')](_0x2ab1ff);}return _0x52b889[_0xc611('0x21')](_0x2ab1ff)[_0xc611('0x22')]();};}function respondWithResult(_0x2e477e,_0x3b2604){_0x3b2604=_0x3b2604||0xc8;return function(_0x5da48f){if(_0x5da48f){return _0x2e477e[_0xc611('0x21')](_0x3b2604)[_0xc611('0x23')](_0x5da48f);}};}function respondWithFilteredResult(_0x5cc7d1,_0x4893ac){return function(_0x157b7f){if(_0x157b7f){var _0xed899c=typeof _0x4893ac[_0xc611('0x24')]===_0xc611('0x25')&&typeof _0x4893ac[_0xc611('0x26')]===_0xc611('0x25');var _0x21020=_0x157b7f[_0xc611('0x27')];var _0x539978=_0xed899c?0x0:_0x4893ac[_0xc611('0x24')];var _0x16a459=_0xed899c?_0x157b7f[_0xc611('0x27')]:_0x4893ac[_0xc611('0x24')]+_0x4893ac['limit'];var _0x4e4108;if(_0x16a459>=_0x21020){_0x16a459=_0x21020;_0x4e4108=0xc8;}else{_0x4e4108=0xce;}_0x5cc7d1[_0xc611('0x21')](_0x4e4108);return _0x5cc7d1['set'](_0xc611('0x28'),_0x539978+'-'+_0x16a459+'/'+_0x21020)['json'](_0x157b7f);}return null;};}function patchUpdates(_0x339185){return function(_0x2d287f){try{jsonpatch[_0xc611('0x29')](_0x2d287f,_0x339185,!![]);}catch(_0x562903){return BPromise[_0xc611('0x2a')](_0x562903);}return _0x2d287f[_0xc611('0x2b')]();};}function saveUpdates(_0x25a7e9,_0x3757b9){return function(_0x443b9e){if(_0x443b9e){return _0x443b9e[_0xc611('0x2c')](_0x25a7e9)[_0xc611('0x2d')](function(_0x20cb31){return _0x20cb31;});}return null;};}function removeEntity(_0x34b9b3,_0x10c51b){return function(_0x112edc){if(_0x112edc){return _0x112edc[_0xc611('0x2e')]()['then'](function(){var _0x15f130=_0x112edc[_0xc611('0x2f')]({'plain':!![]});var _0x24c209=_0xc611('0x30');return db[_0xc611('0x31')][_0xc611('0x2e')]({'where':{'type':_0x24c209,'resourceId':_0x15f130['id']}})[_0xc611('0x2d')](function(){return _0x112edc;});})['then'](function(){_0x34b9b3[_0xc611('0x21')](0xcc)[_0xc611('0x22')]();});}};}function handleEntityNotFound(_0x3cddf0,_0x4bfa07){return function(_0x6641b9){if(!_0x6641b9){_0x3cddf0[_0xc611('0x20')](0x194);}return _0x6641b9;};}function handleError(_0x4529bc,_0x327420){_0x327420=_0x327420||0x1f4;return function(_0x8f8ed3){logger[_0xc611('0x32')](_0x8f8ed3[_0xc611('0x33')]);if(_0x8f8ed3['name']){delete _0x8f8ed3[_0xc611('0x34')];}_0x4529bc[_0xc611('0x21')](_0x327420)[_0xc611('0x35')](_0x8f8ed3);};}exports[_0xc611('0x36')]=function(_0x4ffa3d,_0x3b7bd4){var _0x142b0c={},_0x121a67={},_0x391023={'count':0x0,'rows':[]};var _0x256345=_[_0xc611('0x37')](db[_0xc611('0x38')][_0xc611('0x39')],function(_0x2e8941){return{'name':_0x2e8941[_0xc611('0x3a')],'type':_0x2e8941[_0xc611('0x3b')]['key']};});_0x121a67[_0xc611('0x3c')]=_[_0xc611('0x37')](_0x256345,_0xc611('0x34'));_0x121a67[_0xc611('0x3d')]=_['keys'](_0x4ffa3d[_0xc611('0x3d')]);_0x121a67[_0xc611('0x3e')]=_[_0xc611('0x3f')](_0x121a67['model'],_0x121a67[_0xc611('0x3d')]);_0x142b0c[_0xc611('0x40')]=_[_0xc611('0x3f')](_0x121a67[_0xc611('0x3c')],qs[_0xc611('0x41')](_0x4ffa3d[_0xc611('0x3d')][_0xc611('0x41')]));_0x142b0c[_0xc611('0x40')]=_0x142b0c[_0xc611('0x40')][_0xc611('0x42')]?_0x142b0c[_0xc611('0x40')]:_0x121a67[_0xc611('0x3c')];if(!_0x4ffa3d[_0xc611('0x3d')][_0xc611('0x43')]('nolimit')){_0x142b0c[_0xc611('0x26')]=qs[_0xc611('0x26')](_0x4ffa3d[_0xc611('0x3d')][_0xc611('0x26')]);_0x142b0c['offset']=qs[_0xc611('0x24')](_0x4ffa3d['query'][_0xc611('0x24')]);}_0x142b0c[_0xc611('0x44')]=qs[_0xc611('0x45')](_0x4ffa3d[_0xc611('0x3d')][_0xc611('0x45')]);_0x142b0c['where']=qs[_0xc611('0x3e')](_[_0xc611('0x46')](_0x4ffa3d[_0xc611('0x3d')],_0x121a67['filters']),_0x256345);if(_0x4ffa3d[_0xc611('0x3d')][_0xc611('0x47')]){_0x142b0c[_0xc611('0x48')]=_[_0xc611('0x49')](_0x142b0c[_0xc611('0x48')],{'$or':_[_0xc611('0x37')](_0x256345,function(_0x395f25){if(_0x395f25[_0xc611('0x3b')]!==_0xc611('0x4a')){var _0x51cea7={};_0x51cea7[_0x395f25['name']]={'$like':'%'+_0x4ffa3d['query'][_0xc611('0x47')]+'%'};return _0x51cea7;}})});}_0x142b0c=_[_0xc611('0x49')]({},_0x142b0c,_0x4ffa3d['options']);var _0x1d775d={'where':_0x142b0c[_0xc611('0x48')]};return db[_0xc611('0x38')][_0xc611('0x27')](_0x1d775d)[_0xc611('0x2d')](function(_0x59bae2){_0x391023[_0xc611('0x27')]=_0x59bae2;if(_0x4ffa3d[_0xc611('0x3d')][_0xc611('0x4b')]){_0x142b0c[_0xc611('0x4c')]=[{'all':!![]}];}return db[_0xc611('0x38')][_0xc611('0x4d')](_0x142b0c);})['then'](function(_0x445f65){_0x391023[_0xc611('0x4e')]=_0x445f65;return _0x391023;})[_0xc611('0x2d')](respondWithFilteredResult(_0x3b7bd4,_0x142b0c))[_0xc611('0x4f')](handleError(_0x3b7bd4,null));};exports[_0xc611('0x50')]=function(_0x28f620,_0x2742c3){var _0x268b7c={'raw':![],'where':{'id':_0x28f620['params']['id']}},_0x36feb6={};_0x36feb6[_0xc611('0x3c')]=_[_0xc611('0x51')](db[_0xc611('0x38')]['rawAttributes']);_0x36feb6['query']=_[_0xc611('0x51')](_0x28f620[_0xc611('0x3d')]);_0x36feb6[_0xc611('0x3e')]=_[_0xc611('0x3f')](_0x36feb6['model'],_0x36feb6[_0xc611('0x3d')]);_0x268b7c[_0xc611('0x40')]=_[_0xc611('0x3f')](_0x36feb6[_0xc611('0x3c')],qs['fields'](_0x28f620[_0xc611('0x3d')]['fields']));_0x268b7c[_0xc611('0x40')]=_0x268b7c['attributes'][_0xc611('0x42')]?_0x268b7c[_0xc611('0x40')]:_0x36feb6[_0xc611('0x3c')];if(_0x28f620[_0xc611('0x3d')][_0xc611('0x4b')]){_0x268b7c[_0xc611('0x4c')]=[{'all':!![]}];}_0x268b7c=_[_0xc611('0x49')]({},_0x268b7c,_0x28f620['options']);return db['Dashboard'][_0xc611('0x52')](_0x268b7c)[_0xc611('0x2d')](handleEntityNotFound(_0x2742c3,null))[_0xc611('0x2d')](respondWithResult(_0x2742c3,null))[_0xc611('0x4f')](handleError(_0x2742c3,null));};exports[_0xc611('0x53')]=function(_0x2916c8,_0x1f49b0){return db['Dashboard'][_0xc611('0x53')](_0x2916c8[_0xc611('0x54')],{})['then'](function(_0x52cd21){var _0x509274=_0x2916c8['user'][_0xc611('0x2f')]({'plain':!![]});if(!_0x509274)throw new Error(_0xc611('0x55'));if(_0x509274['role']===_0xc611('0x56')){var _0x38285=_0x52cd21[_0xc611('0x2f')]({'plain':!![]});var _0x12533b='CustomDashboards';return db['UserProfileSection'][_0xc611('0x52')]({'where':{'name':_0x12533b,'userProfileId':_0x509274[_0xc611('0x57')]},'raw':!![]})[_0xc611('0x2d')](function(_0x454b3f){if(_0x454b3f&&_0x454b3f[_0xc611('0x58')]===0x0){return db['UserProfileResource']['create']({'name':_0x38285[_0xc611('0x34')],'resourceId':_0x38285['id'],'type':_0x454b3f[_0xc611('0x34')],'sectionId':_0x454b3f['id']},{})[_0xc611('0x2d')](function(){return _0x52cd21;});}else{return _0x52cd21;}})[_0xc611('0x4f')](function(_0xd456c7){logger[_0xc611('0x32')](_0xc611('0x59'),_0xd456c7);throw _0xd456c7;});}return _0x52cd21;})[_0xc611('0x2d')](respondWithResult(_0x1f49b0,0xc9))[_0xc611('0x4f')](handleError(_0x1f49b0,null));};exports['clone']=function(_0xe4e1d3,_0x3c6c56){var _0x3711b6={'where':{'id':_0xe4e1d3[_0xc611('0x5a')]['id']}},_0x237578={};_0x237578[_0xc611('0x3c')]=_[_0xc611('0x51')](db[_0xc611('0x38')][_0xc611('0x39')]);_0x3711b6[_0xc611('0x40')]=_[_0xc611('0x3f')](_0x237578[_0xc611('0x3c')],qs[_0xc611('0x41')](_0xe4e1d3[_0xc611('0x3d')][_0xc611('0x41')]));_0x3711b6[_0xc611('0x40')]=_0x3711b6[_0xc611('0x40')][_0xc611('0x42')]?_0x3711b6['attributes']:_0x237578[_0xc611('0x3c')];if(_0xe4e1d3['query']['includeAll']){_0x3711b6[_0xc611('0x4c')]=[{'all':!![]}];}_0x3711b6=_['merge']({},_0x3711b6,_0xe4e1d3[_0xc611('0x5b')]);return db[_0xc611('0x38')][_0xc611('0x52')](_0x3711b6)[_0xc611('0x2d')](handleEntityNotFound(_0x3c6c56,null))[_0xc611('0x2d')](function(_0x20d4ef){if(_0x20d4ef){var _0x1e2f0d=_0x20d4ef[_0xc611('0x2f')]({'plain':!![]});_0x1e2f0d=qs['omit'](_0x1e2f0d,['id',_0xc611('0x5c'),'updatedAt']);_0xe4e1d3['body']=_[_0xc611('0x5d')](_0xe4e1d3[_0xc611('0x54')],['id',_0xc611('0x5c'),'updatedAt']);return db[_0xc611('0x38')][_0xc611('0x53')](_[_0xc611('0x49')](_0x1e2f0d,_0xe4e1d3['body']),{'include':_0xe4e1d3[_0xc611('0x3d')][_0xc611('0x4b')]?[{'all':!![]}]:undefined})[_0xc611('0x2d')](function(_0x99d6da){var _0x324d3d=_0xe4e1d3[_0xc611('0x56')]['get']({'plain':!![]});if(!_0x324d3d)throw new Error(_0xc611('0x55'));if(_0x324d3d['role']==='user'){var _0x526020=_0x99d6da['get']({'plain':!![]});var _0x35ff60=_0xc611('0x30');return db[_0xc611('0x5e')]['find']({'where':{'name':_0x35ff60,'userProfileId':_0x324d3d[_0xc611('0x57')]},'raw':!![]})[_0xc611('0x2d')](function(_0x5abb30){if(_0x5abb30&&_0x5abb30[_0xc611('0x58')]===0x0){return db[_0xc611('0x31')][_0xc611('0x53')]({'name':_0x526020['name'],'resourceId':_0x526020['id'],'type':_0x5abb30[_0xc611('0x34')],'sectionId':_0x5abb30['id']},{})[_0xc611('0x2d')](function(){return _0x99d6da;});}else{return _0x99d6da;}})[_0xc611('0x4f')](function(_0x4a5098){logger['error'](_0xc611('0x59'),_0x4a5098);throw _0x4a5098;});}return _0x99d6da;});}})['then'](respondWithResult(_0x3c6c56,0xc9))[_0xc611('0x4f')](handleError(_0x3c6c56,null));};exports[_0xc611('0x2c')]=function(_0x6c4660,_0x5a817c){if(_0x6c4660[_0xc611('0x54')]['id']){delete _0x6c4660[_0xc611('0x54')]['id'];}return db[_0xc611('0x38')][_0xc611('0x52')]({'where':{'id':_0x6c4660['params']['id']}})[_0xc611('0x2d')](handleEntityNotFound(_0x5a817c,null))[_0xc611('0x2d')](saveUpdates(_0x6c4660[_0xc611('0x54')],null))[_0xc611('0x2d')](respondWithResult(_0x5a817c,null))[_0xc611('0x4f')](handleError(_0x5a817c,null));};exports[_0xc611('0x2e')]=function(_0x171971,_0x650d0e){return db[_0xc611('0x38')][_0xc611('0x52')]({'where':{'id':_0x171971[_0xc611('0x5a')]['id']}})[_0xc611('0x2d')](handleEntityNotFound(_0x650d0e,null))[_0xc611('0x2d')](removeEntity(_0x650d0e,null))['catch'](handleError(_0x650d0e,null));};function widgetAttributes(_0x254ba0){try{switch(_0x254ba0[_0xc611('0x3b')]){case'iframe':return[{'name':_0xc611('0x5f'),'value':_0x254ba0[_0xc611('0x5f')]||(_0x254ba0['attrs']&&_0x254ba0['attrs'][0x0]?_0x254ba0[_0xc611('0x60')][0x0]['value']:undefined)||_0xc611('0x61')}];case _0xc611('0x62'):return[{'name':'attrPath','value':_0x254ba0[_0xc611('0x63')]||(_0x254ba0[_0xc611('0x60')]&&_0x254ba0[_0xc611('0x60')][0x0]?_0x254ba0['attrs'][0x0][_0xc611('0x64')]:undefined)||''}];case _0xc611('0x65'):return[{'name':_0xc611('0x66'),'value':_0x254ba0['attrHourFormat']||(_0x254ba0[_0xc611('0x60')]&&_0x254ba0[_0xc611('0x60')][0x0]?_0x254ba0[_0xc611('0x60')][0x0][_0xc611('0x64')]:undefined)||_0xc611('0x67')},{'name':_0xc611('0x68'),'value':_0x254ba0[_0xc611('0x68')]||(_0x254ba0[_0xc611('0x60')]&&_0x254ba0[_0xc611('0x60')][0x1]?_0x254ba0[_0xc611('0x60')][0x1][_0xc611('0x64')]:undefined)||_0xc611('0x69')},{'name':_0xc611('0x6a'),'value':_0x254ba0[_0xc611('0x6a')]||(_0x254ba0['attrs']&&_0x254ba0[_0xc611('0x60')][0x2]?_0x254ba0[_0xc611('0x60')][0x2][_0xc611('0x64')]:undefined)||0xc}];case _0xc611('0x6b'):return[{'name':_0xc611('0x6c'),'value':_0x254ba0[_0xc611('0x6c')]||(_0x254ba0[_0xc611('0x60')]&&_0x254ba0[_0xc611('0x60')][0x0]?_0x254ba0[_0xc611('0x60')][0x0][_0xc611('0x64')]:undefined)||_0xc611('0x6d')},{'name':_0xc611('0x6e'),'value':_0x254ba0['attrVoiceQueues']||(_0x254ba0[_0xc611('0x60')]&&_0x254ba0[_0xc611('0x60')][0x1]?_0x254ba0['attrs'][0x1]['value']:undefined)||[]},{'name':'attrFontSize','value':_0x254ba0['attrFontSize']||(_0x254ba0[_0xc611('0x60')]&&_0x254ba0[_0xc611('0x60')][0x2]?_0x254ba0[_0xc611('0x60')][0x2][_0xc611('0x64')]:undefined)||0x14},{'name':'attrChannel','value':_0x254ba0[_0xc611('0x6f')]||(_0x254ba0[_0xc611('0x60')]&&_0x254ba0[_0xc611('0x60')][0x3]?_0x254ba0['attrs'][0x3][_0xc611('0x64')]:undefined)||_0xc611('0x70')},{'name':_0xc611('0x71'),'value':_0x254ba0[_0xc611('0x71')]||(_0x254ba0[_0xc611('0x60')]&&_0x254ba0[_0xc611('0x60')][0x4]?_0x254ba0[_0xc611('0x60')][0x4][_0xc611('0x64')]:undefined)||''},{'name':'attrFaxAccounts','value':_0x254ba0[_0xc611('0x72')]||(_0x254ba0[_0xc611('0x60')]&&_0x254ba0[_0xc611('0x60')][0x5]?_0x254ba0[_0xc611('0x60')][0x5][_0xc611('0x64')]:undefined)||''},{'name':_0xc611('0x73'),'value':_0x254ba0[_0xc611('0x73')]||(_0x254ba0['attrs']&&_0x254ba0[_0xc611('0x60')][0x6]?_0x254ba0[_0xc611('0x60')][0x6][_0xc611('0x64')]:undefined)||''},{'name':_0xc611('0x74'),'value':_0x254ba0[_0xc611('0x74')]||(_0x254ba0[_0xc611('0x60')]&&_0x254ba0['attrs'][0x7]?_0x254ba0[_0xc611('0x60')][0x7]['value']:undefined)||''},{'name':_0xc611('0x75'),'value':_0x254ba0[_0xc611('0x75')]||(_0x254ba0[_0xc611('0x60')]&&_0x254ba0[_0xc611('0x60')][0x8]?_0x254ba0[_0xc611('0x60')][0x8][_0xc611('0x64')]:undefined)||''},{'name':'attrChatWebsites','value':_0x254ba0[_0xc611('0x76')]||(_0x254ba0[_0xc611('0x60')]&&_0x254ba0['attrs'][0x9]?_0x254ba0[_0xc611('0x60')][0x9][_0xc611('0x64')]:undefined)||''}];case _0xc611('0x77'):case'pie-chart':return[{'name':_0xc611('0x78'),'value':_0x254ba0['attrSerie1']||(_0x254ba0[_0xc611('0x60')]&&_0x254ba0[_0xc611('0x60')][0x0]?_0x254ba0[_0xc611('0x60')][0x0][_0xc611('0x64')]:undefined)||_0xc611('0x6d')},{'name':_0xc611('0x79'),'value':_0x254ba0[_0xc611('0x79')]||(_0x254ba0[_0xc611('0x60')]&&_0x254ba0[_0xc611('0x60')][0x1]?_0x254ba0[_0xc611('0x60')][0x1][_0xc611('0x64')]:undefined)||null},{'name':_0xc611('0x7a'),'value':_0x254ba0[_0xc611('0x7a')]||(_0x254ba0[_0xc611('0x60')]&&_0x254ba0[_0xc611('0x60')][0x2]?_0x254ba0[_0xc611('0x60')][0x2][_0xc611('0x64')]:undefined)||null},{'name':_0xc611('0x6e'),'value':_0x254ba0[_0xc611('0x6e')]||(_0x254ba0[_0xc611('0x60')]&&_0x254ba0[_0xc611('0x60')][0x3]?_0x254ba0[_0xc611('0x60')][0x3]['value']:undefined)||[]},{'name':_0xc611('0x6f'),'value':_0x254ba0[_0xc611('0x6f')]||(_0x254ba0[_0xc611('0x60')]&&_0x254ba0['attrs'][0x4]?_0x254ba0['attrs'][0x4][_0xc611('0x64')]:undefined)||'voice'},{'name':_0xc611('0x71'),'value':_0x254ba0[_0xc611('0x71')]||(_0x254ba0[_0xc611('0x60')]&&_0x254ba0[_0xc611('0x60')][0x5]?_0x254ba0[_0xc611('0x60')][0x5][_0xc611('0x64')]:undefined)||''},{'name':'attrFaxAccounts','value':_0x254ba0['attrFaxAccounts']||(_0x254ba0['attrs']&&_0x254ba0[_0xc611('0x60')][0x6]?_0x254ba0[_0xc611('0x60')][0x6]['value']:undefined)||''},{'name':_0xc611('0x73'),'value':_0x254ba0[_0xc611('0x73')]||(_0x254ba0[_0xc611('0x60')]&&_0x254ba0[_0xc611('0x60')][0x7]?_0x254ba0['attrs'][0x7]['value']:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x254ba0[_0xc611('0x74')]||(_0x254ba0[_0xc611('0x60')]&&_0x254ba0[_0xc611('0x60')][0x8]?_0x254ba0[_0xc611('0x60')][0x8][_0xc611('0x64')]:undefined)||''},{'name':_0xc611('0x75'),'value':_0x254ba0['attrWhatsappAccounts']||(_0x254ba0[_0xc611('0x60')]&&_0x254ba0[_0xc611('0x60')][0x9]?_0x254ba0['attrs'][0x9]['value']:undefined)||''},{'name':_0xc611('0x76'),'value':_0x254ba0['attrChatWebsites']||(_0x254ba0[_0xc611('0x60')]&&_0x254ba0['attrs'][0xa]?_0x254ba0['attrs'][0xa][_0xc611('0x64')]:undefined)||''}];case _0xc611('0x7b'):return[{'name':_0xc611('0x7c'),'type':_0x254ba0['reportType']||(_0x254ba0[_0xc611('0x60')]&&_0x254ba0[_0xc611('0x60')][0x0]?_0x254ba0['attrs'][0x0][_0xc611('0x3b')]:undefined)||null,'value':_0x254ba0['attrReport']||(_0x254ba0[_0xc611('0x60')]&&_0x254ba0[_0xc611('0x60')][0x0]?_0x254ba0[_0xc611('0x60')][0x0][_0xc611('0x64')]:undefined)||null},{'name':_0xc611('0x7d'),'value':_0x254ba0['attrRefresh']||(_0x254ba0[_0xc611('0x60')]&&_0x254ba0[_0xc611('0x60')][0x1]?_0x254ba0[_0xc611('0x60')][0x1][_0xc611('0x64')]:undefined)||0x0}];default:return[];}}catch(_0x3e58d6){logger[_0xc611('0x32')](_0xc611('0x7e'),JSON[_0xc611('0x7f')](_0x3e58d6));return[];}}exports['addItem']=function(_0x2e45b8,_0x4e0fe7,_0x1a3a5a){if(_0x2e45b8['body']['id']){delete _0x2e45b8[_0xc611('0x54')]['id'];}return db[_0xc611('0x38')][_0xc611('0x52')]({'where':{'id':_0x2e45b8[_0xc611('0x5a')]['id']}})[_0xc611('0x2d')](handleEntityNotFound(_0x4e0fe7,null))['then'](function(_0x1a4cc9){if(_0x1a4cc9){_0x2e45b8[_0xc611('0x54')]['DashboardId']=_0x1a4cc9['id'];_0x2e45b8[_0xc611('0x54')][_0xc611('0x60')]=widgetAttributes(_0x2e45b8['body']);return db[_0xc611('0x80')][_0xc611('0x53')](_0x2e45b8[_0xc611('0x54')]);}})['then'](respondWithResult(_0x4e0fe7,null))['catch'](handleError(_0x4e0fe7,null));};exports[_0xc611('0x81')]=function(_0x497792,_0x5e760f,_0x10a280){var _0x184277={};var _0x296505={};var _0x59937d;var _0x30a44a;return db['Dashboard'][_0xc611('0x82')]({'where':{'id':_0x497792['params']['id']}})[_0xc611('0x2d')](handleEntityNotFound(_0x5e760f,null))[_0xc611('0x2d')](function(_0x12c944){if(_0x12c944){_0x59937d=_0x12c944;_0x296505[_0xc611('0x3c')]=_[_0xc611('0x51')](db[_0xc611('0x80')][_0xc611('0x39')]);_0x296505[_0xc611('0x3d')]=_[_0xc611('0x51')](_0x497792[_0xc611('0x3d')]);_0x296505[_0xc611('0x3e')]=_[_0xc611('0x3f')](_0x296505[_0xc611('0x3c')],_0x296505[_0xc611('0x3d')]);_0x184277['attributes']=_['intersection'](_0x296505[_0xc611('0x3c')],qs[_0xc611('0x41')](_0x497792[_0xc611('0x3d')][_0xc611('0x41')]));_0x184277[_0xc611('0x40')]=_0x184277['attributes'][_0xc611('0x42')]?_0x184277[_0xc611('0x40')]:_0x296505[_0xc611('0x3c')];_0x184277['order']=qs[_0xc611('0x45')](_0x497792[_0xc611('0x3d')][_0xc611('0x45')]);_0x184277[_0xc611('0x48')]=qs[_0xc611('0x3e')](_['pick'](_0x497792[_0xc611('0x3d')],_0x296505[_0xc611('0x3e')]));if(_0x497792['query']['filter']){_0x184277['where']=_[_0xc611('0x49')](_0x184277[_0xc611('0x48')],{'$or':_['map'](_0x184277[_0xc611('0x40')],function(_0x5580dc){var _0x6875c2={};_0x6875c2[_0x5580dc]={'$like':'%'+_0x497792['query']['filter']+'%'};return _0x6875c2;})});}_0x184277=_[_0xc611('0x49')]({},_0x184277,_0x497792['options']);return _0x59937d[_0xc611('0x81')](_0x184277);}})['then'](function(_0x5b5b3c){if(_0x5b5b3c){_0x30a44a=_0x5b5b3c[_0xc611('0x42')];if(!_0x497792['query'][_0xc611('0x43')](_0xc611('0x83'))){_0x184277[_0xc611('0x26')]=qs[_0xc611('0x26')](_0x497792[_0xc611('0x3d')][_0xc611('0x26')]);_0x184277['offset']=qs[_0xc611('0x24')](_0x497792[_0xc611('0x3d')][_0xc611('0x24')]);}return _0x59937d['getItems'](_0x184277);}})[_0xc611('0x2d')](function(_0x217ae1){if(_0x217ae1){return _0x217ae1?{'count':_0x30a44a,'rows':_0x217ae1}:null;}})[_0xc611('0x2d')](respondWithResult(_0x5e760f,null))[_0xc611('0x4f')](handleError(_0x5e760f,null));};
\ No newline at end of file
+var _0x0117=['attrSerie3','web-report','attrReport','reportType','attrRefresh','stringify','DashboardId','getItems','DashboardItem','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','./dashboard.socket','register','sendStatus','status','json','undefined','count','offset','limit','set','apply','reject','then','destroy','CustomDashboards','UserProfileResource','end','error','stack','name','send','index','Dashboard','rawAttributes','fieldName','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','map','type','merge','options','includeAll','include','rows','catch','show','params','keys','length','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','get','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','createdAt','updatedAt','omit','user','role','update','iframe','attrUrl','attrs','value','https://','custom','attrPath','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','attrMetric','total','attrVoiceQueues','attrChannel','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1'];(function(_0x28259f,_0x4f7913){var _0x3d4d2b=function(_0x1203c9){while(--_0x1203c9){_0x28259f['push'](_0x28259f['shift']());}};_0x3d4d2b(++_0x4f7913);}(_0x0117,0x89));var _0x7011=function(_0x4aad6c,_0x52dd30){_0x4aad6c=_0x4aad6c-0x0;var _0x304519=_0x0117[_0x4aad6c];return _0x304519;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7011('0x0'));var zipdir=require(_0x7011('0x1'));var jsonpatch=require(_0x7011('0x2'));var rp=require(_0x7011('0x3'));var moment=require(_0x7011('0x4'));var BPromise=require(_0x7011('0x5'));var Mustache=require(_0x7011('0x6'));var util=require(_0x7011('0x7'));var path=require(_0x7011('0x8'));var sox=require(_0x7011('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7011('0xa'));var _=require(_0x7011('0xb'));var squel=require('squel');var crypto=require(_0x7011('0xc'));var jsforce=require(_0x7011('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x7011('0xe'));var querystring=require(_0x7011('0xf'));var Papa=require(_0x7011('0x10'));var Redis=require(_0x7011('0x11'));var authService=require(_0x7011('0x12'));var qs=require(_0x7011('0x13'));var as=require(_0x7011('0x14'));var hardwareService=require(_0x7011('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x7011('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x7011('0x17'));var db=require(_0x7011('0x18'))['db'];config[_0x7011('0x19')]=_[_0x7011('0x1a')](config[_0x7011('0x19')],{'host':_0x7011('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x7011('0x1c'))[_0x7011('0x1d')](socket);function respondWithStatusCode(_0xa00245,_0x3ea776){_0x3ea776=_0x3ea776||0xcc;return function(_0x237eaf){if(_0x237eaf){return _0xa00245[_0x7011('0x1e')](_0x3ea776);}return _0xa00245[_0x7011('0x1f')](_0x3ea776)['end']();};}function respondWithResult(_0x531138,_0x229190){_0x229190=_0x229190||0xc8;return function(_0x1249c4){if(_0x1249c4){return _0x531138[_0x7011('0x1f')](_0x229190)[_0x7011('0x20')](_0x1249c4);}};}function respondWithFilteredResult(_0x2dc34e,_0x431b69){return function(_0x4ec46a){if(_0x4ec46a){var _0x149573=typeof _0x431b69['offset']===_0x7011('0x21')&&typeof _0x431b69['limit']===_0x7011('0x21');var _0x38dc30=_0x4ec46a[_0x7011('0x22')];var _0x5dfc3e=_0x149573?0x0:_0x431b69[_0x7011('0x23')];var _0x4e63d9=_0x149573?_0x4ec46a[_0x7011('0x22')]:_0x431b69[_0x7011('0x23')]+_0x431b69[_0x7011('0x24')];var _0x1b4f06;if(_0x4e63d9>=_0x38dc30){_0x4e63d9=_0x38dc30;_0x1b4f06=0xc8;}else{_0x1b4f06=0xce;}_0x2dc34e[_0x7011('0x1f')](_0x1b4f06);return _0x2dc34e[_0x7011('0x25')]('Content-Range',_0x5dfc3e+'-'+_0x4e63d9+'/'+_0x38dc30)[_0x7011('0x20')](_0x4ec46a);}return null;};}function patchUpdates(_0x4efd97){return function(_0x1a14f5){try{jsonpatch[_0x7011('0x26')](_0x1a14f5,_0x4efd97,!![]);}catch(_0x592196){return BPromise[_0x7011('0x27')](_0x592196);}return _0x1a14f5['save']();};}function saveUpdates(_0x2d8ada,_0x38a621){return function(_0x462178){if(_0x462178){return _0x462178['update'](_0x2d8ada)[_0x7011('0x28')](function(_0x559b6c){return _0x559b6c;});}return null;};}function removeEntity(_0x50dab7,_0x33b921){return function(_0x57230f){if(_0x57230f){return _0x57230f[_0x7011('0x29')]()[_0x7011('0x28')](function(){var _0x554f5c=_0x57230f['get']({'plain':!![]});var _0x4e301e=_0x7011('0x2a');return db[_0x7011('0x2b')]['destroy']({'where':{'type':_0x4e301e,'resourceId':_0x554f5c['id']}})[_0x7011('0x28')](function(){return _0x57230f;});})[_0x7011('0x28')](function(){_0x50dab7[_0x7011('0x1f')](0xcc)[_0x7011('0x2c')]();});}};}function handleEntityNotFound(_0x34cdad,_0x5bdd5d){return function(_0x4168ff){if(!_0x4168ff){_0x34cdad['sendStatus'](0x194);}return _0x4168ff;};}function handleError(_0x3ca91c,_0x6f61be){_0x6f61be=_0x6f61be||0x1f4;return function(_0x3b2295){logger[_0x7011('0x2d')](_0x3b2295[_0x7011('0x2e')]);if(_0x3b2295['name']){delete _0x3b2295[_0x7011('0x2f')];}_0x3ca91c[_0x7011('0x1f')](_0x6f61be)[_0x7011('0x30')](_0x3b2295);};}exports[_0x7011('0x31')]=function(_0x420792,_0x51c8d4){var _0x2cb4ac={},_0x866ff1={},_0x301bbf={'count':0x0,'rows':[]};var _0x9394b2=_['map'](db[_0x7011('0x32')][_0x7011('0x33')],function(_0x146b1a){return{'name':_0x146b1a[_0x7011('0x34')],'type':_0x146b1a['type'][_0x7011('0x35')]};});_0x866ff1[_0x7011('0x36')]=_['map'](_0x9394b2,_0x7011('0x2f'));_0x866ff1[_0x7011('0x37')]=_['keys'](_0x420792['query']);_0x866ff1[_0x7011('0x38')]=_[_0x7011('0x39')](_0x866ff1[_0x7011('0x36')],_0x866ff1['query']);_0x2cb4ac['attributes']=_[_0x7011('0x39')](_0x866ff1[_0x7011('0x36')],qs['fields'](_0x420792[_0x7011('0x37')][_0x7011('0x3a')]));_0x2cb4ac[_0x7011('0x3b')]=_0x2cb4ac['attributes']['length']?_0x2cb4ac[_0x7011('0x3b')]:_0x866ff1[_0x7011('0x36')];if(!_0x420792[_0x7011('0x37')][_0x7011('0x3c')](_0x7011('0x3d'))){_0x2cb4ac['limit']=qs[_0x7011('0x24')](_0x420792['query'][_0x7011('0x24')]);_0x2cb4ac[_0x7011('0x23')]=qs[_0x7011('0x23')](_0x420792[_0x7011('0x37')][_0x7011('0x23')]);}_0x2cb4ac[_0x7011('0x3e')]=qs[_0x7011('0x3f')](_0x420792['query'][_0x7011('0x3f')]);_0x2cb4ac[_0x7011('0x40')]=qs[_0x7011('0x38')](_[_0x7011('0x41')](_0x420792[_0x7011('0x37')],_0x866ff1[_0x7011('0x38')]),_0x9394b2);if(_0x420792[_0x7011('0x37')][_0x7011('0x42')]){_0x2cb4ac[_0x7011('0x40')]=_['merge'](_0x2cb4ac[_0x7011('0x40')],{'$or':_[_0x7011('0x43')](_0x9394b2,function(_0x45d5a8){if(_0x45d5a8[_0x7011('0x44')]!=='VIRTUAL'){var _0x4ab33e={};_0x4ab33e[_0x45d5a8[_0x7011('0x2f')]]={'$like':'%'+_0x420792[_0x7011('0x37')][_0x7011('0x42')]+'%'};return _0x4ab33e;}})});}_0x2cb4ac=_[_0x7011('0x45')]({},_0x2cb4ac,_0x420792[_0x7011('0x46')]);var _0x43e77a={'where':_0x2cb4ac[_0x7011('0x40')]};return db[_0x7011('0x32')][_0x7011('0x22')](_0x43e77a)['then'](function(_0x34bcab){_0x301bbf['count']=_0x34bcab;if(_0x420792[_0x7011('0x37')][_0x7011('0x47')]){_0x2cb4ac[_0x7011('0x48')]=[{'all':!![]}];}return db[_0x7011('0x32')]['findAll'](_0x2cb4ac);})[_0x7011('0x28')](function(_0x596389){_0x301bbf[_0x7011('0x49')]=_0x596389;return _0x301bbf;})[_0x7011('0x28')](respondWithFilteredResult(_0x51c8d4,_0x2cb4ac))[_0x7011('0x4a')](handleError(_0x51c8d4,null));};exports[_0x7011('0x4b')]=function(_0x3f0cc0,_0x5c2ad1){var _0x540d4e={'raw':![],'where':{'id':_0x3f0cc0[_0x7011('0x4c')]['id']}},_0x589a4a={};_0x589a4a[_0x7011('0x36')]=_[_0x7011('0x4d')](db[_0x7011('0x32')][_0x7011('0x33')]);_0x589a4a[_0x7011('0x37')]=_[_0x7011('0x4d')](_0x3f0cc0['query']);_0x589a4a['filters']=_[_0x7011('0x39')](_0x589a4a[_0x7011('0x36')],_0x589a4a['query']);_0x540d4e[_0x7011('0x3b')]=_['intersection'](_0x589a4a[_0x7011('0x36')],qs['fields'](_0x3f0cc0[_0x7011('0x37')]['fields']));_0x540d4e[_0x7011('0x3b')]=_0x540d4e['attributes'][_0x7011('0x4e')]?_0x540d4e['attributes']:_0x589a4a[_0x7011('0x36')];if(_0x3f0cc0['query'][_0x7011('0x47')]){_0x540d4e[_0x7011('0x48')]=[{'all':!![]}];}_0x540d4e=_[_0x7011('0x45')]({},_0x540d4e,_0x3f0cc0[_0x7011('0x46')]);return db[_0x7011('0x32')][_0x7011('0x4f')](_0x540d4e)[_0x7011('0x28')](handleEntityNotFound(_0x5c2ad1,null))['then'](respondWithResult(_0x5c2ad1,null))[_0x7011('0x4a')](handleError(_0x5c2ad1,null));};exports['create']=function(_0x7e57d2,_0x17dea6){return db['Dashboard'][_0x7011('0x50')](_0x7e57d2[_0x7011('0x51')],{})[_0x7011('0x28')](function(_0x332070){var _0x33ca53=_0x7e57d2['user']['get']({'plain':!![]});if(!_0x33ca53)throw new Error(_0x7011('0x52'));if(_0x33ca53['role']==='user'){var _0x3487ce=_0x332070[_0x7011('0x53')]({'plain':!![]});var _0x3b8fcc=_0x7011('0x2a');return db[_0x7011('0x54')][_0x7011('0x4f')]({'where':{'name':_0x3b8fcc,'userProfileId':_0x33ca53[_0x7011('0x55')]},'raw':!![]})[_0x7011('0x28')](function(_0x183759){if(_0x183759&&_0x183759['autoAssociation']===0x0){return db[_0x7011('0x2b')][_0x7011('0x50')]({'name':_0x3487ce['name'],'resourceId':_0x3487ce['id'],'type':_0x183759[_0x7011('0x2f')],'sectionId':_0x183759['id']},{})[_0x7011('0x28')](function(){return _0x332070;});}else{return _0x332070;}})[_0x7011('0x4a')](function(_0x5eda3f){logger['error'](_0x7011('0x56'),_0x5eda3f);throw _0x5eda3f;});}return _0x332070;})[_0x7011('0x28')](respondWithResult(_0x17dea6,0xc9))['catch'](handleError(_0x17dea6,null));};exports[_0x7011('0x57')]=function(_0x2ca32b,_0x580c07){var _0x1a031c={'where':{'id':_0x2ca32b['params']['id']}},_0x1aa8d9={};_0x1aa8d9[_0x7011('0x36')]=_['keys'](db[_0x7011('0x32')][_0x7011('0x33')]);_0x1a031c['attributes']=_['intersection'](_0x1aa8d9[_0x7011('0x36')],qs[_0x7011('0x3a')](_0x2ca32b[_0x7011('0x37')][_0x7011('0x3a')]));_0x1a031c['attributes']=_0x1a031c[_0x7011('0x3b')][_0x7011('0x4e')]?_0x1a031c[_0x7011('0x3b')]:_0x1aa8d9[_0x7011('0x36')];if(_0x2ca32b['query'][_0x7011('0x47')]){_0x1a031c[_0x7011('0x48')]=[{'all':!![]}];}_0x1a031c=_[_0x7011('0x45')]({},_0x1a031c,_0x2ca32b[_0x7011('0x46')]);return db['Dashboard'][_0x7011('0x4f')](_0x1a031c)[_0x7011('0x28')](handleEntityNotFound(_0x580c07,null))[_0x7011('0x28')](function(_0x21c58e){if(_0x21c58e){var _0x284a19=_0x21c58e['get']({'plain':!![]});_0x284a19=qs['omit'](_0x284a19,['id',_0x7011('0x58'),_0x7011('0x59')]);_0x2ca32b[_0x7011('0x51')]=_[_0x7011('0x5a')](_0x2ca32b[_0x7011('0x51')],['id','createdAt',_0x7011('0x59')]);return db[_0x7011('0x32')][_0x7011('0x50')](_[_0x7011('0x45')](_0x284a19,_0x2ca32b[_0x7011('0x51')]),{'include':_0x2ca32b['query'][_0x7011('0x47')]?[{'all':!![]}]:undefined})[_0x7011('0x28')](function(_0x57481b){var _0x2e1b22=_0x2ca32b[_0x7011('0x5b')][_0x7011('0x53')]({'plain':!![]});if(!_0x2e1b22)throw new Error(_0x7011('0x52'));if(_0x2e1b22[_0x7011('0x5c')]===_0x7011('0x5b')){var _0x5649be=_0x57481b[_0x7011('0x53')]({'plain':!![]});var _0x8ae4bd=_0x7011('0x2a');return db[_0x7011('0x54')][_0x7011('0x4f')]({'where':{'name':_0x8ae4bd,'userProfileId':_0x2e1b22[_0x7011('0x55')]},'raw':!![]})['then'](function(_0x846c38){if(_0x846c38&&_0x846c38['autoAssociation']===0x0){return db[_0x7011('0x2b')][_0x7011('0x50')]({'name':_0x5649be['name'],'resourceId':_0x5649be['id'],'type':_0x846c38[_0x7011('0x2f')],'sectionId':_0x846c38['id']},{})[_0x7011('0x28')](function(){return _0x57481b;});}else{return _0x57481b;}})[_0x7011('0x4a')](function(_0x272968){logger[_0x7011('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x272968);throw _0x272968;});}return _0x57481b;});}})[_0x7011('0x28')](respondWithResult(_0x580c07,0xc9))['catch'](handleError(_0x580c07,null));};exports[_0x7011('0x5d')]=function(_0x1ed468,_0x1834b7){if(_0x1ed468[_0x7011('0x51')]['id']){delete _0x1ed468[_0x7011('0x51')]['id'];}return db[_0x7011('0x32')]['find']({'where':{'id':_0x1ed468['params']['id']}})[_0x7011('0x28')](handleEntityNotFound(_0x1834b7,null))[_0x7011('0x28')](saveUpdates(_0x1ed468[_0x7011('0x51')],null))[_0x7011('0x28')](respondWithResult(_0x1834b7,null))['catch'](handleError(_0x1834b7,null));};exports[_0x7011('0x29')]=function(_0x1aa360,_0x4a693d){return db[_0x7011('0x32')][_0x7011('0x4f')]({'where':{'id':_0x1aa360['params']['id']}})[_0x7011('0x28')](handleEntityNotFound(_0x4a693d,null))[_0x7011('0x28')](removeEntity(_0x4a693d,null))[_0x7011('0x4a')](handleError(_0x4a693d,null));};function widgetAttributes(_0x3bb647){try{switch(_0x3bb647[_0x7011('0x44')]){case _0x7011('0x5e'):return[{'name':_0x7011('0x5f'),'value':_0x3bb647[_0x7011('0x5f')]||(_0x3bb647[_0x7011('0x60')]&&_0x3bb647[_0x7011('0x60')][0x0]?_0x3bb647[_0x7011('0x60')][0x0][_0x7011('0x61')]:undefined)||_0x7011('0x62')}];case _0x7011('0x63'):return[{'name':_0x7011('0x64'),'value':_0x3bb647[_0x7011('0x64')]||(_0x3bb647[_0x7011('0x60')]&&_0x3bb647[_0x7011('0x60')][0x0]?_0x3bb647['attrs'][0x0][_0x7011('0x61')]:undefined)||''}];case'clock':return[{'name':_0x7011('0x65'),'value':_0x3bb647[_0x7011('0x65')]||(_0x3bb647[_0x7011('0x60')]&&_0x3bb647[_0x7011('0x60')][0x0]?_0x3bb647[_0x7011('0x60')][0x0]['value']:undefined)||_0x7011('0x66')},{'name':'attrTimezone','value':_0x3bb647[_0x7011('0x67')]||(_0x3bb647['attrs']&&_0x3bb647[_0x7011('0x60')][0x1]?_0x3bb647[_0x7011('0x60')][0x1][_0x7011('0x61')]:undefined)||_0x7011('0x68')},{'name':'attrFontSize','value':_0x3bb647[_0x7011('0x69')]||(_0x3bb647[_0x7011('0x60')]&&_0x3bb647[_0x7011('0x60')][0x2]?_0x3bb647[_0x7011('0x60')][0x2][_0x7011('0x61')]:undefined)||0xc}];case'counter':return[{'name':_0x7011('0x6a'),'value':_0x3bb647['attrMetric']||(_0x3bb647[_0x7011('0x60')]&&_0x3bb647['attrs'][0x0]?_0x3bb647[_0x7011('0x60')][0x0]['value']:undefined)||_0x7011('0x6b')},{'name':'attrVoiceQueues','value':_0x3bb647[_0x7011('0x6c')]||(_0x3bb647[_0x7011('0x60')]&&_0x3bb647['attrs'][0x1]?_0x3bb647[_0x7011('0x60')][0x1][_0x7011('0x61')]:undefined)||[]},{'name':_0x7011('0x69'),'value':_0x3bb647[_0x7011('0x69')]||(_0x3bb647[_0x7011('0x60')]&&_0x3bb647[_0x7011('0x60')][0x2]?_0x3bb647[_0x7011('0x60')][0x2][_0x7011('0x61')]:undefined)||0x14},{'name':_0x7011('0x6d'),'value':_0x3bb647['attrChannel']||(_0x3bb647[_0x7011('0x60')]&&_0x3bb647[_0x7011('0x60')][0x3]?_0x3bb647[_0x7011('0x60')][0x3]['value']:undefined)||'voice'},{'name':_0x7011('0x6e'),'value':_0x3bb647['attrEmailAccounts']||(_0x3bb647[_0x7011('0x60')]&&_0x3bb647[_0x7011('0x60')][0x4]?_0x3bb647[_0x7011('0x60')][0x4][_0x7011('0x61')]:undefined)||''},{'name':_0x7011('0x6f'),'value':_0x3bb647[_0x7011('0x6f')]||(_0x3bb647[_0x7011('0x60')]&&_0x3bb647[_0x7011('0x60')][0x5]?_0x3bb647[_0x7011('0x60')][0x5][_0x7011('0x61')]:undefined)||''},{'name':_0x7011('0x70'),'value':_0x3bb647[_0x7011('0x70')]||(_0x3bb647[_0x7011('0x60')]&&_0x3bb647[_0x7011('0x60')][0x6]?_0x3bb647[_0x7011('0x60')][0x6][_0x7011('0x61')]:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x3bb647[_0x7011('0x71')]||(_0x3bb647[_0x7011('0x60')]&&_0x3bb647[_0x7011('0x60')][0x7]?_0x3bb647['attrs'][0x7][_0x7011('0x61')]:undefined)||''},{'name':_0x7011('0x72'),'value':_0x3bb647[_0x7011('0x72')]||(_0x3bb647[_0x7011('0x60')]&&_0x3bb647[_0x7011('0x60')][0x8]?_0x3bb647[_0x7011('0x60')][0x8][_0x7011('0x61')]:undefined)||''},{'name':_0x7011('0x73'),'value':_0x3bb647[_0x7011('0x73')]||(_0x3bb647['attrs']&&_0x3bb647[_0x7011('0x60')][0x9]?_0x3bb647['attrs'][0x9][_0x7011('0x61')]:undefined)||''}];case _0x7011('0x74'):case _0x7011('0x75'):return[{'name':_0x7011('0x76'),'value':_0x3bb647['attrSerie1']||(_0x3bb647[_0x7011('0x60')]&&_0x3bb647[_0x7011('0x60')][0x0]?_0x3bb647['attrs'][0x0]['value']:undefined)||_0x7011('0x6b')},{'name':'attrSerie2','value':_0x3bb647['attrSerie2']||(_0x3bb647['attrs']&&_0x3bb647[_0x7011('0x60')][0x1]?_0x3bb647['attrs'][0x1][_0x7011('0x61')]:undefined)||null},{'name':_0x7011('0x77'),'value':_0x3bb647[_0x7011('0x77')]||(_0x3bb647[_0x7011('0x60')]&&_0x3bb647[_0x7011('0x60')][0x2]?_0x3bb647[_0x7011('0x60')][0x2]['value']:undefined)||null},{'name':_0x7011('0x6c'),'value':_0x3bb647[_0x7011('0x6c')]||(_0x3bb647['attrs']&&_0x3bb647[_0x7011('0x60')][0x3]?_0x3bb647['attrs'][0x3]['value']:undefined)||[]},{'name':_0x7011('0x6d'),'value':_0x3bb647[_0x7011('0x6d')]||(_0x3bb647[_0x7011('0x60')]&&_0x3bb647[_0x7011('0x60')][0x4]?_0x3bb647[_0x7011('0x60')][0x4][_0x7011('0x61')]:undefined)||'voice'},{'name':'attrEmailAccounts','value':_0x3bb647[_0x7011('0x6e')]||(_0x3bb647[_0x7011('0x60')]&&_0x3bb647[_0x7011('0x60')][0x5]?_0x3bb647[_0x7011('0x60')][0x5][_0x7011('0x61')]:undefined)||''},{'name':_0x7011('0x6f'),'value':_0x3bb647[_0x7011('0x6f')]||(_0x3bb647[_0x7011('0x60')]&&_0x3bb647[_0x7011('0x60')][0x6]?_0x3bb647[_0x7011('0x60')][0x6][_0x7011('0x61')]:undefined)||''},{'name':_0x7011('0x70'),'value':_0x3bb647[_0x7011('0x70')]||(_0x3bb647[_0x7011('0x60')]&&_0x3bb647[_0x7011('0x60')][0x7]?_0x3bb647[_0x7011('0x60')][0x7][_0x7011('0x61')]:undefined)||''},{'name':_0x7011('0x71'),'value':_0x3bb647['attrOpenchannelAccounts']||(_0x3bb647[_0x7011('0x60')]&&_0x3bb647[_0x7011('0x60')][0x8]?_0x3bb647[_0x7011('0x60')][0x8]['value']:undefined)||''},{'name':_0x7011('0x72'),'value':_0x3bb647['attrWhatsappAccounts']||(_0x3bb647[_0x7011('0x60')]&&_0x3bb647[_0x7011('0x60')][0x9]?_0x3bb647[_0x7011('0x60')][0x9][_0x7011('0x61')]:undefined)||''},{'name':_0x7011('0x73'),'value':_0x3bb647['attrChatWebsites']||(_0x3bb647[_0x7011('0x60')]&&_0x3bb647['attrs'][0xa]?_0x3bb647[_0x7011('0x60')][0xa][_0x7011('0x61')]:undefined)||''}];case _0x7011('0x78'):return[{'name':_0x7011('0x79'),'type':_0x3bb647[_0x7011('0x7a')]||(_0x3bb647[_0x7011('0x60')]&&_0x3bb647[_0x7011('0x60')][0x0]?_0x3bb647[_0x7011('0x60')][0x0][_0x7011('0x44')]:undefined)||null,'value':_0x3bb647[_0x7011('0x79')]||(_0x3bb647[_0x7011('0x60')]&&_0x3bb647['attrs'][0x0]?_0x3bb647[_0x7011('0x60')][0x0]['value']:undefined)||null},{'name':_0x7011('0x7b'),'value':_0x3bb647[_0x7011('0x7b')]||(_0x3bb647['attrs']&&_0x3bb647[_0x7011('0x60')][0x1]?_0x3bb647[_0x7011('0x60')][0x1][_0x7011('0x61')]:undefined)||0x0}];default:return[];}}catch(_0x2c74d3){logger[_0x7011('0x2d')]('widgetAttributes:\x20%s',JSON[_0x7011('0x7c')](_0x2c74d3));return[];}}exports['addItem']=function(_0x2f8be7,_0x5c7904,_0x59eeb5){if(_0x2f8be7[_0x7011('0x51')]['id']){delete _0x2f8be7['body']['id'];}return db[_0x7011('0x32')][_0x7011('0x4f')]({'where':{'id':_0x2f8be7[_0x7011('0x4c')]['id']}})[_0x7011('0x28')](handleEntityNotFound(_0x5c7904,null))['then'](function(_0x3c51a0){if(_0x3c51a0){_0x2f8be7['body'][_0x7011('0x7d')]=_0x3c51a0['id'];_0x2f8be7[_0x7011('0x51')]['attrs']=widgetAttributes(_0x2f8be7[_0x7011('0x51')]);return db['DashboardItem'][_0x7011('0x50')](_0x2f8be7['body']);}})[_0x7011('0x28')](respondWithResult(_0x5c7904,null))[_0x7011('0x4a')](handleError(_0x5c7904,null));};exports[_0x7011('0x7e')]=function(_0x4c3272,_0x3c0ecf,_0x43c94c){var _0x48f5f1={};var _0x6c8acf={};var _0x4aa862;var _0x411430;return db['Dashboard']['findOne']({'where':{'id':_0x4c3272[_0x7011('0x4c')]['id']}})[_0x7011('0x28')](handleEntityNotFound(_0x3c0ecf,null))[_0x7011('0x28')](function(_0x14d55e){if(_0x14d55e){_0x4aa862=_0x14d55e;_0x6c8acf[_0x7011('0x36')]=_[_0x7011('0x4d')](db[_0x7011('0x7f')]['rawAttributes']);_0x6c8acf[_0x7011('0x37')]=_[_0x7011('0x4d')](_0x4c3272[_0x7011('0x37')]);_0x6c8acf[_0x7011('0x38')]=_[_0x7011('0x39')](_0x6c8acf[_0x7011('0x36')],_0x6c8acf['query']);_0x48f5f1['attributes']=_[_0x7011('0x39')](_0x6c8acf['model'],qs['fields'](_0x4c3272[_0x7011('0x37')][_0x7011('0x3a')]));_0x48f5f1[_0x7011('0x3b')]=_0x48f5f1[_0x7011('0x3b')]['length']?_0x48f5f1[_0x7011('0x3b')]:_0x6c8acf['model'];_0x48f5f1[_0x7011('0x3e')]=qs['sort'](_0x4c3272[_0x7011('0x37')][_0x7011('0x3f')]);_0x48f5f1[_0x7011('0x40')]=qs[_0x7011('0x38')](_[_0x7011('0x41')](_0x4c3272['query'],_0x6c8acf[_0x7011('0x38')]));if(_0x4c3272[_0x7011('0x37')][_0x7011('0x42')]){_0x48f5f1[_0x7011('0x40')]=_[_0x7011('0x45')](_0x48f5f1[_0x7011('0x40')],{'$or':_[_0x7011('0x43')](_0x48f5f1[_0x7011('0x3b')],function(_0x37462e){var _0x520945={};_0x520945[_0x37462e]={'$like':'%'+_0x4c3272[_0x7011('0x37')][_0x7011('0x42')]+'%'};return _0x520945;})});}_0x48f5f1=_[_0x7011('0x45')]({},_0x48f5f1,_0x4c3272[_0x7011('0x46')]);return _0x4aa862[_0x7011('0x7e')](_0x48f5f1);}})[_0x7011('0x28')](function(_0x5533a7){if(_0x5533a7){_0x411430=_0x5533a7['length'];if(!_0x4c3272[_0x7011('0x37')][_0x7011('0x3c')]('nolimit')){_0x48f5f1[_0x7011('0x24')]=qs[_0x7011('0x24')](_0x4c3272['query'][_0x7011('0x24')]);_0x48f5f1[_0x7011('0x23')]=qs[_0x7011('0x23')](_0x4c3272['query'][_0x7011('0x23')]);}return _0x4aa862[_0x7011('0x7e')](_0x48f5f1);}})['then'](function(_0x538f39){if(_0x538f39){return _0x538f39?{'count':_0x411430,'rows':_0x538f39}:null;}})[_0x7011('0x28')](respondWithResult(_0x3c0ecf,null))[_0x7011('0x4a')](handleError(_0x3c0ecf,null));};
\ No newline at end of file
index 16b5969..c96ba3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7044=['Dashboard','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x33ba78,_0xbcaa2d){var _0x24a8a8=function(_0x2c25f5){while(--_0x2c25f5){_0x33ba78['push'](_0x33ba78['shift']());}};_0x24a8a8(++_0xbcaa2d);}(_0x7044,0x1ce));var _0x4704=function(_0x38d657,_0x3522a1){_0x38d657=_0x38d657-0x0;var _0x1de063=_0x7044[_0x38d657];return _0x1de063;};'use strict';var EventEmitter=require('events');var Dashboard=require('../../mysqldb')['db'][_0x4704('0x0')];var DashboardEvents=new EventEmitter();DashboardEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x4704('0x1'),'afterDestroy':_0x4704('0x2')};function emitEvent(_0x1bce37){return function(_0xd93040,_0x24a6a0,_0x2ff9e0){DashboardEvents[_0x4704('0x3')](_0x1bce37+':'+_0xd93040['id'],_0xd93040);DashboardEvents['emit'](_0x1bce37,_0xd93040);_0x2ff9e0(null);};}for(var e in events){if(events[_0x4704('0x4')](e)){var event=events[e];Dashboard[_0x4704('0x5')](e,emitEvent(event));}}module[_0x4704('0x6')]=DashboardEvents;
\ No newline at end of file
+var _0xe1eb=['save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','Dashboard','setMaxListeners'];(function(_0x53c4f8,_0x213552){var _0x3947d0=function(_0xfecce9){while(--_0xfecce9){_0x53c4f8['push'](_0x53c4f8['shift']());}};_0x3947d0(++_0x213552);}(_0xe1eb,0x125));var _0xbe1e=function(_0x431fa5,_0x2a377a){_0x431fa5=_0x431fa5-0x0;var _0x3cce13=_0xe1eb[_0x431fa5];return _0x3cce13;};'use strict';var EventEmitter=require(_0xbe1e('0x0'));var Dashboard=require(_0xbe1e('0x1'))['db'][_0xbe1e('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents[_0xbe1e('0x3')](0x0);var events={'afterCreate':_0xbe1e('0x4'),'afterUpdate':_0xbe1e('0x5'),'afterDestroy':_0xbe1e('0x6')};function emitEvent(_0x4fe040){return function(_0x4bf59f,_0x469767,_0x43ebb0){DashboardEvents[_0xbe1e('0x7')](_0x4fe040+':'+_0x4bf59f['id'],_0x4bf59f);DashboardEvents[_0xbe1e('0x7')](_0x4fe040,_0x4bf59f);_0x43ebb0(null);};}for(var e in events){if(events[_0xbe1e('0x8')](e)){var event=events[e];Dashboard[_0xbe1e('0x9')](e,emitEvent(event));}}module[_0xbe1e('0xa')]=DashboardEvents;
\ No newline at end of file
index 459ea33..a0511fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb490=['Dashboard','dashboards','lodash','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./dashboard.attributes','exports','define'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xb490,0xda));var _0x0b49=function(_0x53fb46,_0x1c18d4){_0x53fb46=_0x53fb46-0x0;var _0x5b365b=_0xb490[_0x53fb46];return _0x5b365b;};'use strict';var _=require(_0x0b49('0x0'));var util=require('util');var logger=require(_0x0b49('0x1'))('api');var moment=require(_0x0b49('0x2'));var BPromise=require(_0x0b49('0x3'));var rp=require(_0x0b49('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0b49('0x5'));var config=require(_0x0b49('0x6'));var attributes=require(_0x0b49('0x7'));module[_0x0b49('0x8')]=function(_0x9672e2,_0x4dfdb7){return _0x9672e2[_0x0b49('0x9')](_0x0b49('0xa'),attributes,{'tableName':_0x0b49('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xba4e=['lodash','moment','request-promise','path','../../config/environment','./dashboard.attributes','define','Dashboard','dashboards'];(function(_0x31c351,_0x2c7bc1){var _0x1a1c6d=function(_0x24ac6d){while(--_0x24ac6d){_0x31c351['push'](_0x31c351['shift']());}};_0x1a1c6d(++_0x2c7bc1);}(_0xba4e,0x99));var _0xeba4=function(_0x3ee771,_0x2b8251){_0x3ee771=_0x3ee771-0x0;var _0x1e99fa=_0xba4e[_0x3ee771];return _0x1e99fa;};'use strict';var _=require(_0xeba4('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xeba4('0x1'));var BPromise=require('bluebird');var rp=require(_0xeba4('0x2'));var fs=require('fs');var path=require(_0xeba4('0x3'));var rimraf=require('rimraf');var config=require(_0xeba4('0x4'));var attributes=require(_0xeba4('0x5'));module['exports']=function(_0x42e2f1,_0x77c6b2){return _0x42e2f1[_0xeba4('0x6')](_0xeba4('0x7'),attributes,{'tableName':_0xeba4('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7b4da74..105f5fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6405=['request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','code','Dashboard,\x20%s,\x20%s','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','request','then','info'];(function(_0x4e7922,_0x4528b0){var _0x2cff92=function(_0x44ec58){while(--_0x44ec58){_0x4e7922['push'](_0x4e7922['shift']());}};_0x2cff92(++_0x4528b0);}(_0x6405,0x192));var _0x5640=function(_0x34dceb,_0x5153c7){_0x34dceb=_0x34dceb-0x0;var _0x54cef8=_0x6405[_0x34dceb];return _0x54cef8;};'use strict';var _=require(_0x5640('0x0'));var util=require(_0x5640('0x1'));var moment=require('moment');var BPromise=require(_0x5640('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5640('0x3'));var db=require(_0x5640('0x4'))['db'];var utils=require(_0x5640('0x5'));var logger=require(_0x5640('0x6'))(_0x5640('0x7'));var config=require(_0x5640('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0x5640('0x9')]=_[_0x5640('0xa')](config[_0x5640('0x9')],{'host':_0x5640('0xb'),'port':0x18eb});var socket=require(_0x5640('0xc'))(new Redis(config[_0x5640('0x9')]));require(_0x5640('0xd'))[_0x5640('0xe')](socket);function respondWithRpcPromise(_0x4f3202,_0x2ed758,_0x5238e3){return new BPromise(function(_0x519044,_0x37a749){return client[_0x5640('0xf')](_0x4f3202,_0x5238e3)[_0x5640('0x10')](function(_0x4d7ea4){logger[_0x5640('0x11')]('Dashboard,\x20%s,\x20%s',_0x2ed758,_0x5640('0x12'));logger[_0x5640('0x13')](_0x5640('0x14'),_0x2ed758,'request\x20sent',JSON[_0x5640('0x15')](_0x4d7ea4));if(_0x4d7ea4[_0x5640('0x16')]){if(_0x4d7ea4['error'][_0x5640('0x17')]===0x1f4){logger['error'](_0x5640('0x18'),_0x2ed758,_0x4d7ea4[_0x5640('0x16')]['message']);return _0x37a749(_0x4d7ea4[_0x5640('0x16')][_0x5640('0x19')]);}logger['error']('Dashboard,\x20%s,\x20%s',_0x2ed758,_0x4d7ea4[_0x5640('0x16')][_0x5640('0x19')]);return _0x519044(_0x4d7ea4[_0x5640('0x16')][_0x5640('0x19')]);}else{logger[_0x5640('0x11')](_0x5640('0x18'),_0x2ed758,_0x5640('0x12'));_0x519044(_0x4d7ea4[_0x5640('0x1a')]['message']);}})[_0x5640('0x1b')](function(_0x4eff12){logger['error'](_0x5640('0x18'),_0x2ed758,_0x4eff12);_0x37a749(_0x4eff12);});});}
\ No newline at end of file
+var _0x8762=['Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','defaults','redis','localhost','./dashboard.socket','request','then','info','Dashboard,\x20%s,\x20%s','request\x20sent'];(function(_0x4b82eb,_0x29544f){var _0xb3d036=function(_0x588489){while(--_0x588489){_0x4b82eb['push'](_0x4b82eb['shift']());}};_0xb3d036(++_0x29544f);}(_0x8762,0xae));var _0x2876=function(_0x27d275,_0xe50c7e){_0x27d275=_0x27d275-0x0;var _0x2a2e59=_0x8762[_0x27d275];return _0x2a2e59;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x2876('0x0'));var BPromise=require(_0x2876('0x1'));var rs=require(_0x2876('0x2'));var fs=require('fs');var Redis=require(_0x2876('0x3'));var db=require(_0x2876('0x4'))['db'];var utils=require(_0x2876('0x5'));var logger=require('../../config/logger')(_0x2876('0x6'));var config=require(_0x2876('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x2876('0x8')]['http']({'port':0x232a});config['redis']=_[_0x2876('0x9')](config[_0x2876('0xa')],{'host':_0x2876('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2876('0xa')]));require(_0x2876('0xc'))['register'](socket);function respondWithRpcPromise(_0x1d6266,_0x2a651d,_0x5d5219){return new BPromise(function(_0x46d0e6,_0x1cc9be){return client[_0x2876('0xd')](_0x1d6266,_0x5d5219)[_0x2876('0xe')](function(_0x2e4a80){logger[_0x2876('0xf')](_0x2876('0x10'),_0x2a651d,_0x2876('0x11'));logger['debug'](_0x2876('0x12'),_0x2a651d,_0x2876('0x11'),JSON[_0x2876('0x13')](_0x2e4a80));if(_0x2e4a80['error']){if(_0x2e4a80[_0x2876('0x14')][_0x2876('0x15')]===0x1f4){logger[_0x2876('0x14')](_0x2876('0x10'),_0x2a651d,_0x2e4a80['error'][_0x2876('0x16')]);return _0x1cc9be(_0x2e4a80['error'][_0x2876('0x16')]);}logger[_0x2876('0x14')]('Dashboard,\x20%s,\x20%s',_0x2a651d,_0x2e4a80[_0x2876('0x14')][_0x2876('0x16')]);return _0x46d0e6(_0x2e4a80[_0x2876('0x14')]['message']);}else{logger['info'](_0x2876('0x10'),_0x2a651d,_0x2876('0x11'));_0x46d0e6(_0x2e4a80['result']['message']);}})[_0x2876('0x17')](function(_0x4810a8){logger[_0x2876('0x14')]('Dashboard,\x20%s,\x20%s',_0x2a651d,_0x4810a8);_0x1cc9be(_0x4810a8);});});}
\ No newline at end of file
index 42faea9..f9c0b68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcee8=['update','emit','removeListener','length','dashboard:','./dashboard.events','save','remove'];(function(_0x1fb0d5,_0x163ebe){var _0x1debdb=function(_0x48546a){while(--_0x48546a){_0x1fb0d5['push'](_0x1fb0d5['shift']());}};_0x1debdb(++_0x163ebe);}(_0xcee8,0x1b5));var _0x8cee=function(_0x15d76b,_0x3719e5){_0x15d76b=_0x15d76b-0x0;var _0x8b73a5=_0xcee8[_0x15d76b];return _0x8b73a5;};'use strict';var DashboardEvents=require(_0x8cee('0x0'));var events=[_0x8cee('0x1'),_0x8cee('0x2'),_0x8cee('0x3')];function createListener(_0x5f19bf,_0x17fd4e){return function(_0x334304){_0x17fd4e[_0x8cee('0x4')](_0x5f19bf,_0x334304);};}function removeListener(_0x431d9e,_0xeeeb1b){return function(){DashboardEvents[_0x8cee('0x5')](_0x431d9e,_0xeeeb1b);};}exports['register']=function(_0x510716){for(var _0x455e33=0x0,_0x296078=events[_0x8cee('0x6')];_0x455e33<_0x296078;_0x455e33++){var _0x307950=events[_0x455e33];var _0x427fdd=createListener(_0x8cee('0x7')+_0x307950,_0x510716);DashboardEvents['on'](_0x307950,_0x427fdd);}};
\ No newline at end of file
+var _0x1793=['save','remove','update','removeListener','register','length','./dashboard.events'];(function(_0x2df0ba,_0x5f2dfd){var _0x4e9c77=function(_0x557994){while(--_0x557994){_0x2df0ba['push'](_0x2df0ba['shift']());}};_0x4e9c77(++_0x5f2dfd);}(_0x1793,0x1b8));var _0x3179=function(_0x29a767,_0x49e575){_0x29a767=_0x29a767-0x0;var _0x39e781=_0x1793[_0x29a767];return _0x39e781;};'use strict';var DashboardEvents=require(_0x3179('0x0'));var events=[_0x3179('0x1'),_0x3179('0x2'),_0x3179('0x3')];function createListener(_0x166c18,_0x3fcf31){return function(_0x2b925a){_0x3fcf31['emit'](_0x166c18,_0x2b925a);};}function removeListener(_0x50575a,_0x2d51ed){return function(){DashboardEvents[_0x3179('0x4')](_0x50575a,_0x2d51ed);};}exports[_0x3179('0x5')]=function(_0x33ccdc){for(var _0x1d40f5=0x0,_0x4a2f6a=events[_0x3179('0x6')];_0x1d40f5<_0x4a2f6a;_0x1d40f5++){var _0x25f86b=events[_0x1d40f5];var _0x20c788=createListener('dashboard:'+_0x25f86b,_0x33ccdc);DashboardEvents['on'](_0x25f86b,_0x20c788);}};
\ No newline at end of file
index 791df8c..6a68a0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19e4=['/:id/clone','clone','/:id/items','addItem','put','update','delete','exports','multer','util','Router','fs-extra','../../components/auth/service','../../config/environment','./dashboard.controller','isAuthenticated','index','get','/:id','show','getItems','post','create'];(function(_0x1b1f74,_0x486dde){var _0x8ade1=function(_0x3e1105){while(--_0x3e1105){_0x1b1f74['push'](_0x1b1f74['shift']());}};_0x8ade1(++_0x486dde);}(_0x19e4,0x14a));var _0x419e=function(_0x50da54,_0x268541){_0x50da54=_0x50da54-0x0;var _0x5efbdf=_0x19e4[_0x50da54];return _0x5efbdf;};'use strict';var multer=require(_0x419e('0x0'));var util=require(_0x419e('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x419e('0x2')]();var fs_extra=require(_0x419e('0x3'));var auth=require(_0x419e('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x419e('0x5'));var controller=require(_0x419e('0x6'));router['get']('/',auth[_0x419e('0x7')](),controller[_0x419e('0x8')]);router[_0x419e('0x9')](_0x419e('0xa'),auth[_0x419e('0x7')](),controller[_0x419e('0xb')]);router['get']('/:id/items',auth['isAuthenticated'](),controller[_0x419e('0xc')]);router[_0x419e('0xd')]('/',auth['isAuthenticated'](),controller[_0x419e('0xe')]);router[_0x419e('0xd')](_0x419e('0xf'),auth[_0x419e('0x7')](),controller[_0x419e('0x10')]);router['post'](_0x419e('0x11'),auth[_0x419e('0x7')](),controller[_0x419e('0x12')]);router[_0x419e('0x13')](_0x419e('0xa'),auth[_0x419e('0x7')](),controller[_0x419e('0x14')]);router[_0x419e('0x15')](_0x419e('0xa'),auth[_0x419e('0x7')](),controller['destroy']);module[_0x419e('0x16')]=router;
\ No newline at end of file
+var _0x6dad=['delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./dashboard.controller','get','index','/:id','show','/:id/items','isAuthenticated','getItems','post','create','/:id/clone','clone','addItem','put','update'];(function(_0x5ebb01,_0x3d2789){var _0x3e79c5=function(_0x33b644){while(--_0x33b644){_0x5ebb01['push'](_0x5ebb01['shift']());}};_0x3e79c5(++_0x3d2789);}(_0x6dad,0xa5));var _0xd6da=function(_0x48cefb,_0x31f1ab){_0x48cefb=_0x48cefb-0x0;var _0x1ff07c=_0x6dad[_0x48cefb];return _0x1ff07c;};'use strict';var multer=require(_0xd6da('0x0'));var util=require(_0xd6da('0x1'));var path=require(_0xd6da('0x2'));var timeout=require(_0xd6da('0x3'));var express=require(_0xd6da('0x4'));var router=express[_0xd6da('0x5')]();var fs_extra=require(_0xd6da('0x6'));var auth=require(_0xd6da('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xd6da('0x8'));var controller=require(_0xd6da('0x9'));router[_0xd6da('0xa')]('/',auth['isAuthenticated'](),controller[_0xd6da('0xb')]);router[_0xd6da('0xa')](_0xd6da('0xc'),auth['isAuthenticated'](),controller[_0xd6da('0xd')]);router['get'](_0xd6da('0xe'),auth[_0xd6da('0xf')](),controller[_0xd6da('0x10')]);router[_0xd6da('0x11')]('/',auth[_0xd6da('0xf')](),controller[_0xd6da('0x12')]);router['post'](_0xd6da('0x13'),auth[_0xd6da('0xf')](),controller[_0xd6da('0x14')]);router[_0xd6da('0x11')](_0xd6da('0xe'),auth[_0xd6da('0xf')](),controller[_0xd6da('0x15')]);router[_0xd6da('0x16')]('/:id',auth['isAuthenticated'](),controller[_0xd6da('0x17')]);router[_0xd6da('0x18')](_0xd6da('0xc'),auth[_0xd6da('0xf')](),controller[_0xd6da('0x19')]);module[_0xd6da('0x1a')]=router;
\ No newline at end of file
index b17fbab..564444c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbf5=['squel','STRING','TEXT','long','parse','getDataValue','attrs','setDataValue','stringify','INTEGER','#ffffff'];(function(_0x3d7158,_0x54e56e){var _0x3e8214=function(_0xfece49){while(--_0xfece49){_0x3d7158['push'](_0x3d7158['shift']());}};_0x3e8214(++_0x54e56e);}(_0xdbf5,0x18c));var _0x5dbf=function(_0x1a06f3,_0x43f7ad){_0x1a06f3=_0x1a06f3-0x0;var _0x24274f=_0xdbf5[_0x1a06f3];return _0x24274f;};'use strict';var Sequelize=require('sequelize');var squel=require(_0x5dbf('0x0'));var _=require('lodash');module['exports']={'title':{'type':Sequelize[_0x5dbf('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x5dbf('0x1')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x5dbf('0x2')](_0x5dbf('0x3')),'get':function(){try{return JSON[_0x5dbf('0x4')](this[_0x5dbf('0x5')](_0x5dbf('0x6')));}catch(_0x1decd2){return[];}},'set':function(_0x3f8628){try{this[_0x5dbf('0x7')](_0x5dbf('0x6'),JSON[_0x5dbf('0x8')](_0x3f8628));}catch(_0x93e657){this['setDataValue'](_0x5dbf('0x6'),JSON['stringify']([]));}}},'sizeX':{'type':Sequelize[_0x5dbf('0x9')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x5dbf('0x9')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x5dbf('0x9')]},'col':{'type':Sequelize[_0x5dbf('0x9')]},'background':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x5dbf('0xa'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x5dbf('0x1')]},'titleFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc}};
\ No newline at end of file
+var _0xba34=['attrs','setDataValue','stringify','INTEGER','#ffffff','sequelize','squel','lodash','exports','STRING','parse','getDataValue'];(function(_0x136a23,_0x507cda){var _0x48e69b=function(_0x4aefdb){while(--_0x4aefdb){_0x136a23['push'](_0x136a23['shift']());}};_0x48e69b(++_0x507cda);}(_0xba34,0x119));var _0x4ba3=function(_0x32df88,_0x274b6b){_0x32df88=_0x32df88-0x0;var _0x5b16d7=_0xba34[_0x32df88];return _0x5b16d7;};'use strict';var Sequelize=require(_0x4ba3('0x0'));var squel=require(_0x4ba3('0x1'));var _=require(_0x4ba3('0x2'));module[_0x4ba3('0x3')]={'title':{'type':Sequelize[_0x4ba3('0x4')],'allowNull':![]},'type':{'type':Sequelize['STRING'](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize['TEXT']('long'),'get':function(){try{return JSON[_0x4ba3('0x5')](this[_0x4ba3('0x6')](_0x4ba3('0x7')));}catch(_0x1011ec){return[];}},'set':function(_0x3590a1){try{this[_0x4ba3('0x8')](_0x4ba3('0x7'),JSON['stringify'](_0x3590a1));}catch(_0x6254fb){this[_0x4ba3('0x8')](_0x4ba3('0x7'),JSON[_0x4ba3('0x9')]([]));}}},'sizeX':{'type':Sequelize[_0x4ba3('0xa')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x4ba3('0xa')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x4ba3('0xa')]},'col':{'type':Sequelize[_0x4ba3('0xa')]},'background':{'type':Sequelize[_0x4ba3('0x4')],'allowNull':![],'defaultValue':_0x4ba3('0xb'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x4ba3('0x4')],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x4ba3('0x4')]},'titleFontSize':{'type':Sequelize[_0x4ba3('0xa')],'defaultValue':0xc}};
\ No newline at end of file
index db62c84..605429e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12e9=['web-report','attrReport','reportType','attrRefresh','stringify','create','body','catch','zip-dir','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','register','status','end','json','offset','undefined','limit','count','set','reject','update','then','sendStatus','error','name','show','params','model','keys','DashboardItem','rawAttributes','query','filters','intersection','fields','attributes','length','includeAll','include','options','find','destroy','type','attrUrl','attrs','value','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrChatWebsites','multibar-chart','attrSerie1','attrSerie2','attrSerie3','attrWhatsappAccounts'];(function(_0x1389ae,_0x1caf91){var _0x1514d4=function(_0x41bb97){while(--_0x41bb97){_0x1389ae['push'](_0x1389ae['shift']());}};_0x1514d4(++_0x1caf91);}(_0x12e9,0x66));var _0x912e=function(_0x393bb9,_0x31484d){_0x393bb9=_0x393bb9-0x0;var _0x40df5f=_0x12e9[_0x393bb9];return _0x40df5f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x912e('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x912e('0x1'));var moment=require(_0x912e('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x912e('0x3'));var util=require(_0x912e('0x4'));var path=require('path');var sox=require(_0x912e('0x5'));var csv=require(_0x912e('0x6'));var ejs=require(_0x912e('0x7'));var fs=require('fs');var fs_extra=require(_0x912e('0x8'));var _=require('lodash');var squel=require(_0x912e('0x9'));var crypto=require(_0x912e('0xa'));var jsforce=require(_0x912e('0xb'));var deskjs=require(_0x912e('0xc'));var toCsv=require(_0x912e('0x6'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x912e('0xd'));var qs=require(_0x912e('0xe'));var as=require(_0x912e('0xf'));var hardwareService=require(_0x912e('0x10'));var logger=require(_0x912e('0x11'))('api');var utils=require(_0x912e('0x12'));var config=require(_0x912e('0x13'));var licenseUtil=require(_0x912e('0x14'));var db=require(_0x912e('0x15'))['db'];config[_0x912e('0x16')]=_[_0x912e('0x17')](config[_0x912e('0x16')],{'host':_0x912e('0x18'),'port':0x18eb});var socket=require(_0x912e('0x19'))(new Redis(config[_0x912e('0x16')]));require(_0x912e('0x1a'))[_0x912e('0x1b')](socket);function respondWithStatusCode(_0x536c1b,_0x3a02aa){_0x3a02aa=_0x3a02aa||0xcc;return function(_0x4e0c4d){if(_0x4e0c4d){return _0x536c1b['sendStatus'](_0x3a02aa);}return _0x536c1b[_0x912e('0x1c')](_0x3a02aa)[_0x912e('0x1d')]();};}function respondWithResult(_0x19eed4,_0x5c44b1){_0x5c44b1=_0x5c44b1||0xc8;return function(_0x572179){if(_0x572179){return _0x19eed4[_0x912e('0x1c')](_0x5c44b1)[_0x912e('0x1e')](_0x572179);}};}function respondWithFilteredResult(_0x265614,_0x54860e){return function(_0x36fb67){if(_0x36fb67){var _0x100790=typeof _0x54860e[_0x912e('0x1f')]===_0x912e('0x20')&&typeof _0x54860e[_0x912e('0x21')]==='undefined';var _0x1f3ab0=_0x36fb67[_0x912e('0x22')];var _0x2dd441=_0x100790?0x0:_0x54860e[_0x912e('0x1f')];var _0x2f9d2f=_0x100790?_0x36fb67[_0x912e('0x22')]:_0x54860e[_0x912e('0x1f')]+_0x54860e[_0x912e('0x21')];var _0x271e00;if(_0x2f9d2f>=_0x1f3ab0){_0x2f9d2f=_0x1f3ab0;_0x271e00=0xc8;}else{_0x271e00=0xce;}_0x265614[_0x912e('0x1c')](_0x271e00);return _0x265614[_0x912e('0x23')]('Content-Range',_0x2dd441+'-'+_0x2f9d2f+'/'+_0x1f3ab0)[_0x912e('0x1e')](_0x36fb67);}return null;};}function patchUpdates(_0x4f1a6f){return function(_0x46f935){try{jsonpatch['apply'](_0x46f935,_0x4f1a6f,!![]);}catch(_0x3817a9){return BPromise[_0x912e('0x24')](_0x3817a9);}return _0x46f935['save']();};}function saveUpdates(_0x28497d,_0x1e59d8){return function(_0x892de0){if(_0x892de0){return _0x892de0[_0x912e('0x25')](_0x28497d)[_0x912e('0x26')](function(_0x5ba003){return _0x5ba003;});}return null;};}function removeEntity(_0x92f64d,_0x27c6f6){return function(_0x4636ce){if(_0x4636ce){return _0x4636ce['destroy']()[_0x912e('0x26')](function(){_0x92f64d['status'](0xcc)[_0x912e('0x1d')]();});}};}function handleEntityNotFound(_0x1c4ab6,_0xe48a67){return function(_0x3c6a2a){if(!_0x3c6a2a){_0x1c4ab6[_0x912e('0x27')](0x194);}return _0x3c6a2a;};}function handleError(_0x5267ef,_0x1f9ad4){_0x1f9ad4=_0x1f9ad4||0x1f4;return function(_0x12150f){logger[_0x912e('0x28')](_0x12150f['stack']);if(_0x12150f[_0x912e('0x29')]){delete _0x12150f['name'];}_0x5267ef['status'](_0x1f9ad4)['send'](_0x12150f);};}exports[_0x912e('0x2a')]=function(_0x58b9cf,_0x4cbb33){var _0x58d575={'raw':![],'where':{'id':_0x58b9cf[_0x912e('0x2b')]['id']}},_0x3f61a2={};_0x3f61a2[_0x912e('0x2c')]=_[_0x912e('0x2d')](db[_0x912e('0x2e')][_0x912e('0x2f')]);_0x3f61a2[_0x912e('0x30')]=_[_0x912e('0x2d')](_0x58b9cf[_0x912e('0x30')]);_0x3f61a2[_0x912e('0x31')]=_[_0x912e('0x32')](_0x3f61a2[_0x912e('0x2c')],_0x3f61a2[_0x912e('0x30')]);_0x58d575['attributes']=_['intersection'](_0x3f61a2[_0x912e('0x2c')],qs['fields'](_0x58b9cf[_0x912e('0x30')][_0x912e('0x33')]));_0x58d575[_0x912e('0x34')]=_0x58d575[_0x912e('0x34')][_0x912e('0x35')]?_0x58d575[_0x912e('0x34')]:_0x3f61a2[_0x912e('0x2c')];if(_0x58b9cf[_0x912e('0x30')][_0x912e('0x36')]){_0x58d575[_0x912e('0x37')]=[{'all':!![]}];}_0x58d575=_['merge']({},_0x58d575,_0x58b9cf[_0x912e('0x38')]);return db[_0x912e('0x2e')][_0x912e('0x39')](_0x58d575)[_0x912e('0x26')](handleEntityNotFound(_0x4cbb33,null))[_0x912e('0x26')](respondWithResult(_0x4cbb33,null))['catch'](handleError(_0x4cbb33,null));};exports[_0x912e('0x3a')]=function(_0x56a159,_0x3e716f){return db[_0x912e('0x2e')][_0x912e('0x39')]({'where':{'id':_0x56a159['params']['id']}})[_0x912e('0x26')](handleEntityNotFound(_0x3e716f,null))[_0x912e('0x26')](removeEntity(_0x3e716f,null))['catch'](handleError(_0x3e716f,null));};function widgetAttributes(_0x33b61d){try{switch(_0x33b61d[_0x912e('0x3b')]){case'iframe':return[{'name':_0x912e('0x3c'),'value':_0x33b61d[_0x912e('0x3c')]||(_0x33b61d[_0x912e('0x3d')]&&_0x33b61d[_0x912e('0x3d')][0x0]?_0x33b61d['attrs'][0x0][_0x912e('0x3e')]:undefined)||'https://'}];case'custom':return[{'name':_0x912e('0x3f'),'value':_0x33b61d[_0x912e('0x3f')]||(_0x33b61d[_0x912e('0x3d')]&&_0x33b61d[_0x912e('0x3d')][0x0]?_0x33b61d[_0x912e('0x3d')][0x0][_0x912e('0x3e')]:undefined)||''}];case _0x912e('0x40'):return[{'name':_0x912e('0x41'),'value':_0x33b61d[_0x912e('0x41')]||(_0x33b61d[_0x912e('0x3d')]&&_0x33b61d[_0x912e('0x3d')][0x0]?_0x33b61d[_0x912e('0x3d')][0x0][_0x912e('0x3e')]:undefined)||_0x912e('0x42')},{'name':_0x912e('0x43'),'value':_0x33b61d[_0x912e('0x43')]||(_0x33b61d[_0x912e('0x3d')]&&_0x33b61d[_0x912e('0x3d')][0x1]?_0x33b61d[_0x912e('0x3d')][0x1][_0x912e('0x3e')]:undefined)||_0x912e('0x44')},{'name':_0x912e('0x45'),'value':_0x33b61d[_0x912e('0x45')]||(_0x33b61d[_0x912e('0x3d')]&&_0x33b61d[_0x912e('0x3d')][0x2]?_0x33b61d[_0x912e('0x3d')][0x2]['value']:undefined)||0xc}];case _0x912e('0x46'):return[{'name':_0x912e('0x47'),'value':_0x33b61d['attrMetric']||(_0x33b61d[_0x912e('0x3d')]&&_0x33b61d['attrs'][0x0]?_0x33b61d['attrs'][0x0]['value']:undefined)||_0x912e('0x48')},{'name':_0x912e('0x49'),'value':_0x33b61d[_0x912e('0x49')]||(_0x33b61d[_0x912e('0x3d')]&&_0x33b61d[_0x912e('0x3d')][0x1]?_0x33b61d[_0x912e('0x3d')][0x1][_0x912e('0x3e')]:undefined)||[]},{'name':'attrFontSize','value':_0x33b61d[_0x912e('0x45')]||(_0x33b61d['attrs']&&_0x33b61d[_0x912e('0x3d')][0x2]?_0x33b61d['attrs'][0x2][_0x912e('0x3e')]:undefined)||0x14},{'name':_0x912e('0x4a'),'value':_0x33b61d[_0x912e('0x4a')]||(_0x33b61d[_0x912e('0x3d')]&&_0x33b61d[_0x912e('0x3d')][0x3]?_0x33b61d[_0x912e('0x3d')][0x3][_0x912e('0x3e')]:undefined)||_0x912e('0x4b')},{'name':_0x912e('0x4c'),'value':_0x33b61d[_0x912e('0x4c')]||(_0x33b61d[_0x912e('0x3d')]&&_0x33b61d['attrs'][0x4]?_0x33b61d[_0x912e('0x3d')][0x4][_0x912e('0x3e')]:undefined)||''},{'name':_0x912e('0x4d'),'value':_0x33b61d[_0x912e('0x4d')]||(_0x33b61d[_0x912e('0x3d')]&&_0x33b61d[_0x912e('0x3d')][0x5]?_0x33b61d[_0x912e('0x3d')][0x5][_0x912e('0x3e')]:undefined)||''},{'name':_0x912e('0x4e'),'value':_0x33b61d[_0x912e('0x4e')]||(_0x33b61d[_0x912e('0x3d')]&&_0x33b61d['attrs'][0x6]?_0x33b61d[_0x912e('0x3d')][0x6][_0x912e('0x3e')]:undefined)||''},{'name':_0x912e('0x4f'),'value':_0x33b61d[_0x912e('0x4f')]||(_0x33b61d[_0x912e('0x3d')]&&_0x33b61d['attrs'][0x7]?_0x33b61d[_0x912e('0x3d')][0x7][_0x912e('0x3e')]:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x33b61d['attrWhatsappAccounts']||(_0x33b61d[_0x912e('0x3d')]&&_0x33b61d[_0x912e('0x3d')][0x8]?_0x33b61d[_0x912e('0x3d')][0x8][_0x912e('0x3e')]:undefined)||''},{'name':_0x912e('0x50'),'value':_0x33b61d[_0x912e('0x50')]||(_0x33b61d[_0x912e('0x3d')]&&_0x33b61d['attrs'][0x9]?_0x33b61d[_0x912e('0x3d')][0x9][_0x912e('0x3e')]:undefined)||''}];case _0x912e('0x51'):case'pie-chart':return[{'name':_0x912e('0x52'),'value':_0x33b61d['attrSerie1']||(_0x33b61d[_0x912e('0x3d')]&&_0x33b61d[_0x912e('0x3d')][0x0]?_0x33b61d['attrs'][0x0][_0x912e('0x3e')]:undefined)||_0x912e('0x48')},{'name':_0x912e('0x53'),'value':_0x33b61d['attrSerie2']||(_0x33b61d[_0x912e('0x3d')]&&_0x33b61d[_0x912e('0x3d')][0x1]?_0x33b61d[_0x912e('0x3d')][0x1]['value']:undefined)||null},{'name':_0x912e('0x54'),'value':_0x33b61d['attrSerie3']||(_0x33b61d[_0x912e('0x3d')]&&_0x33b61d[_0x912e('0x3d')][0x2]?_0x33b61d[_0x912e('0x3d')][0x2]['value']:undefined)||null},{'name':_0x912e('0x49'),'value':_0x33b61d[_0x912e('0x49')]||(_0x33b61d[_0x912e('0x3d')]&&_0x33b61d['attrs'][0x3]?_0x33b61d['attrs'][0x3]['value']:undefined)||[]},{'name':'attrChannel','value':_0x33b61d[_0x912e('0x4a')]||(_0x33b61d['attrs']&&_0x33b61d[_0x912e('0x3d')][0x4]?_0x33b61d[_0x912e('0x3d')][0x4]['value']:undefined)||_0x912e('0x4b')},{'name':'attrEmailAccounts','value':_0x33b61d[_0x912e('0x4c')]||(_0x33b61d['attrs']&&_0x33b61d[_0x912e('0x3d')][0x5]?_0x33b61d[_0x912e('0x3d')][0x5][_0x912e('0x3e')]:undefined)||''},{'name':_0x912e('0x4d'),'value':_0x33b61d[_0x912e('0x4d')]||(_0x33b61d['attrs']&&_0x33b61d[_0x912e('0x3d')][0x6]?_0x33b61d[_0x912e('0x3d')][0x6][_0x912e('0x3e')]:undefined)||''},{'name':_0x912e('0x4e'),'value':_0x33b61d[_0x912e('0x4e')]||(_0x33b61d[_0x912e('0x3d')]&&_0x33b61d['attrs'][0x7]?_0x33b61d[_0x912e('0x3d')][0x7]['value']:undefined)||''},{'name':_0x912e('0x4f'),'value':_0x33b61d[_0x912e('0x4f')]||(_0x33b61d['attrs']&&_0x33b61d[_0x912e('0x3d')][0x8]?_0x33b61d[_0x912e('0x3d')][0x8][_0x912e('0x3e')]:undefined)||''},{'name':_0x912e('0x55'),'value':_0x33b61d['attrWhatsappAccounts']||(_0x33b61d[_0x912e('0x3d')]&&_0x33b61d['attrs'][0x9]?_0x33b61d[_0x912e('0x3d')][0x9][_0x912e('0x3e')]:undefined)||''},{'name':_0x912e('0x50'),'value':_0x33b61d[_0x912e('0x50')]||(_0x33b61d['attrs']&&_0x33b61d['attrs'][0xa]?_0x33b61d[_0x912e('0x3d')][0xa][_0x912e('0x3e')]:undefined)||''}];case _0x912e('0x56'):return[{'name':_0x912e('0x57'),'type':_0x33b61d[_0x912e('0x58')]||(_0x33b61d['attrs']&&_0x33b61d[_0x912e('0x3d')][0x0]?_0x33b61d[_0x912e('0x3d')][0x0][_0x912e('0x3b')]:undefined)||null,'value':_0x33b61d['attrReport']||(_0x33b61d['attrs']&&_0x33b61d['attrs'][0x0]?_0x33b61d[_0x912e('0x3d')][0x0][_0x912e('0x3e')]:undefined)||null},{'name':_0x912e('0x59'),'value':_0x33b61d[_0x912e('0x59')]||(_0x33b61d[_0x912e('0x3d')]&&_0x33b61d[_0x912e('0x3d')][0x1]?_0x33b61d[_0x912e('0x3d')][0x1][_0x912e('0x3e')]:undefined)||0x0}];default:return[];}}catch(_0x404788){logger[_0x912e('0x28')]('widgetAttributes:\x20%s',JSON[_0x912e('0x5a')](_0x404788));return[];}}exports[_0x912e('0x5b')]=function(_0x5ddf2d,_0x474d70){if(_0x5ddf2d[_0x912e('0x5c')]){_0x5ddf2d[_0x912e('0x5c')]['attrs']=widgetAttributes(_0x5ddf2d['body']);}return db['DashboardItem'][_0x912e('0x5b')](_0x5ddf2d[_0x912e('0x5c')],{})[_0x912e('0x26')](respondWithResult(_0x474d70,0xc9))[_0x912e('0x5d')](handleError(_0x474d70,null));};exports[_0x912e('0x25')]=function(_0x14a397,_0x461f83){if(_0x14a397[_0x912e('0x5c')]['id']){delete _0x14a397['body']['id'];}_0x14a397['body'][_0x912e('0x3d')]=widgetAttributes(_0x14a397[_0x912e('0x5c')]);return db[_0x912e('0x2e')][_0x912e('0x39')]({'where':{'id':_0x14a397[_0x912e('0x2b')]['id']}})[_0x912e('0x26')](handleEntityNotFound(_0x461f83,null))[_0x912e('0x26')](saveUpdates(_0x14a397[_0x912e('0x5c')],null))[_0x912e('0x26')](respondWithResult(_0x461f83,null))[_0x912e('0x5d')](handleError(_0x461f83,null));};
\ No newline at end of file
+var _0xeae8=['attrChatWebsites','attrReport','attrRefresh','widgetAttributes:\x20%s','create','body','catch','eml-format','rimraf','zip-dir','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','show','params','model','keys','DashboardItem','rawAttributes','query','filters','intersection','attributes','fields','length','includeAll','merge','options','find','type','attrs','value','https://','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','attrMetric','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','multibar-chart','pie-chart','attrSerie1','total','attrSerie2','attrSerie3'];(function(_0x478bef,_0x5130f3){var _0xeefe11=function(_0x5afde6){while(--_0x5afde6){_0x478bef['push'](_0x478bef['shift']());}};_0xeefe11(++_0x5130f3);}(_0xeae8,0x66));var _0x8eae=function(_0xf04986,_0x2c9c9c){_0xf04986=_0xf04986-0x0;var _0xa2a378=_0xeae8[_0xf04986];return _0xa2a378;};'use strict';var emlformat=require(_0x8eae('0x0'));var rimraf=require(_0x8eae('0x1'));var zipdir=require(_0x8eae('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8eae('0x3'));var moment=require('moment');var BPromise=require(_0x8eae('0x4'));var Mustache=require('mustache');var util=require(_0x8eae('0x5'));var path=require(_0x8eae('0x6'));var sox=require(_0x8eae('0x7'));var csv=require(_0x8eae('0x8'));var ejs=require(_0x8eae('0x9'));var fs=require('fs');var fs_extra=require(_0x8eae('0xa'));var _=require(_0x8eae('0xb'));var squel=require(_0x8eae('0xc'));var crypto=require(_0x8eae('0xd'));var jsforce=require(_0x8eae('0xe'));var deskjs=require(_0x8eae('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x8eae('0x10'));var Redis=require(_0x8eae('0x11'));var authService=require(_0x8eae('0x12'));var qs=require(_0x8eae('0x13'));var as=require(_0x8eae('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x8eae('0x15'));var config=require(_0x8eae('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x8eae('0x17'))['db'];config['redis']=_[_0x8eae('0x18')](config[_0x8eae('0x19')],{'host':_0x8eae('0x1a'),'port':0x18eb});var socket=require(_0x8eae('0x1b'))(new Redis(config[_0x8eae('0x19')]));require('./dashboardItem.socket')[_0x8eae('0x1c')](socket);function respondWithStatusCode(_0x39d8e7,_0x384477){_0x384477=_0x384477||0xcc;return function(_0x249320){if(_0x249320){return _0x39d8e7[_0x8eae('0x1d')](_0x384477);}return _0x39d8e7[_0x8eae('0x1e')](_0x384477)[_0x8eae('0x1f')]();};}function respondWithResult(_0x367dfe,_0x2afcc1){_0x2afcc1=_0x2afcc1||0xc8;return function(_0x5324e3){if(_0x5324e3){return _0x367dfe['status'](_0x2afcc1)['json'](_0x5324e3);}};}function respondWithFilteredResult(_0x29caea,_0x47c1db){return function(_0x3db47b){if(_0x3db47b){var _0x3fe930=typeof _0x47c1db[_0x8eae('0x20')]===_0x8eae('0x21')&&typeof _0x47c1db[_0x8eae('0x22')]===_0x8eae('0x21');var _0x3af89b=_0x3db47b[_0x8eae('0x23')];var _0xfbb712=_0x3fe930?0x0:_0x47c1db[_0x8eae('0x20')];var _0x4cb7e0=_0x3fe930?_0x3db47b['count']:_0x47c1db[_0x8eae('0x20')]+_0x47c1db[_0x8eae('0x22')];var _0x35c70b;if(_0x4cb7e0>=_0x3af89b){_0x4cb7e0=_0x3af89b;_0x35c70b=0xc8;}else{_0x35c70b=0xce;}_0x29caea['status'](_0x35c70b);return _0x29caea[_0x8eae('0x24')](_0x8eae('0x25'),_0xfbb712+'-'+_0x4cb7e0+'/'+_0x3af89b)['json'](_0x3db47b);}return null;};}function patchUpdates(_0x1dc612){return function(_0x3326b3){try{jsonpatch['apply'](_0x3326b3,_0x1dc612,!![]);}catch(_0x1b3b2f){return BPromise[_0x8eae('0x26')](_0x1b3b2f);}return _0x3326b3[_0x8eae('0x27')]();};}function saveUpdates(_0x282fa5,_0x3edfdb){return function(_0x2bda3a){if(_0x2bda3a){return _0x2bda3a[_0x8eae('0x28')](_0x282fa5)[_0x8eae('0x29')](function(_0x14c0c5){return _0x14c0c5;});}return null;};}function removeEntity(_0x2fc7ec,_0x386bec){return function(_0x53733c){if(_0x53733c){return _0x53733c[_0x8eae('0x2a')]()[_0x8eae('0x29')](function(){_0x2fc7ec[_0x8eae('0x1e')](0xcc)[_0x8eae('0x1f')]();});}};}function handleEntityNotFound(_0x149b83,_0x13a80a){return function(_0x206ba3){if(!_0x206ba3){_0x149b83['sendStatus'](0x194);}return _0x206ba3;};}function handleError(_0x8370c6,_0x5222f8){_0x5222f8=_0x5222f8||0x1f4;return function(_0x342caf){logger[_0x8eae('0x2b')](_0x342caf[_0x8eae('0x2c')]);if(_0x342caf[_0x8eae('0x2d')]){delete _0x342caf[_0x8eae('0x2d')];}_0x8370c6['status'](_0x5222f8)['send'](_0x342caf);};}exports[_0x8eae('0x2e')]=function(_0x28431c,_0x35c717){var _0x307a19={'raw':![],'where':{'id':_0x28431c[_0x8eae('0x2f')]['id']}},_0x547eea={};_0x547eea[_0x8eae('0x30')]=_[_0x8eae('0x31')](db[_0x8eae('0x32')][_0x8eae('0x33')]);_0x547eea[_0x8eae('0x34')]=_[_0x8eae('0x31')](_0x28431c[_0x8eae('0x34')]);_0x547eea[_0x8eae('0x35')]=_[_0x8eae('0x36')](_0x547eea[_0x8eae('0x30')],_0x547eea[_0x8eae('0x34')]);_0x307a19[_0x8eae('0x37')]=_[_0x8eae('0x36')](_0x547eea[_0x8eae('0x30')],qs[_0x8eae('0x38')](_0x28431c[_0x8eae('0x34')][_0x8eae('0x38')]));_0x307a19[_0x8eae('0x37')]=_0x307a19[_0x8eae('0x37')][_0x8eae('0x39')]?_0x307a19['attributes']:_0x547eea[_0x8eae('0x30')];if(_0x28431c[_0x8eae('0x34')][_0x8eae('0x3a')]){_0x307a19['include']=[{'all':!![]}];}_0x307a19=_[_0x8eae('0x3b')]({},_0x307a19,_0x28431c[_0x8eae('0x3c')]);return db[_0x8eae('0x32')][_0x8eae('0x3d')](_0x307a19)['then'](handleEntityNotFound(_0x35c717,null))[_0x8eae('0x29')](respondWithResult(_0x35c717,null))['catch'](handleError(_0x35c717,null));};exports['destroy']=function(_0x2f55fb,_0x38713d){return db[_0x8eae('0x32')][_0x8eae('0x3d')]({'where':{'id':_0x2f55fb[_0x8eae('0x2f')]['id']}})[_0x8eae('0x29')](handleEntityNotFound(_0x38713d,null))[_0x8eae('0x29')](removeEntity(_0x38713d,null))['catch'](handleError(_0x38713d,null));};function widgetAttributes(_0x71f9be){try{switch(_0x71f9be[_0x8eae('0x3e')]){case'iframe':return[{'name':'attrUrl','value':_0x71f9be['attrUrl']||(_0x71f9be[_0x8eae('0x3f')]&&_0x71f9be[_0x8eae('0x3f')][0x0]?_0x71f9be['attrs'][0x0][_0x8eae('0x40')]:undefined)||_0x8eae('0x41')}];case'custom':return[{'name':_0x8eae('0x42'),'value':_0x71f9be[_0x8eae('0x42')]||(_0x71f9be[_0x8eae('0x3f')]&&_0x71f9be[_0x8eae('0x3f')][0x0]?_0x71f9be[_0x8eae('0x3f')][0x0]['value']:undefined)||''}];case _0x8eae('0x43'):return[{'name':_0x8eae('0x44'),'value':_0x71f9be[_0x8eae('0x44')]||(_0x71f9be['attrs']&&_0x71f9be[_0x8eae('0x3f')][0x0]?_0x71f9be[_0x8eae('0x3f')][0x0]['value']:undefined)||_0x8eae('0x45')},{'name':_0x8eae('0x46'),'value':_0x71f9be[_0x8eae('0x46')]||(_0x71f9be[_0x8eae('0x3f')]&&_0x71f9be['attrs'][0x1]?_0x71f9be[_0x8eae('0x3f')][0x1][_0x8eae('0x40')]:undefined)||_0x8eae('0x47')},{'name':_0x8eae('0x48'),'value':_0x71f9be['attrFontSize']||(_0x71f9be[_0x8eae('0x3f')]&&_0x71f9be[_0x8eae('0x3f')][0x2]?_0x71f9be[_0x8eae('0x3f')][0x2][_0x8eae('0x40')]:undefined)||0xc}];case'counter':return[{'name':_0x8eae('0x49'),'value':_0x71f9be['attrMetric']||(_0x71f9be[_0x8eae('0x3f')]&&_0x71f9be['attrs'][0x0]?_0x71f9be[_0x8eae('0x3f')][0x0][_0x8eae('0x40')]:undefined)||'total'},{'name':_0x8eae('0x4a'),'value':_0x71f9be[_0x8eae('0x4a')]||(_0x71f9be[_0x8eae('0x3f')]&&_0x71f9be[_0x8eae('0x3f')][0x1]?_0x71f9be[_0x8eae('0x3f')][0x1][_0x8eae('0x40')]:undefined)||[]},{'name':_0x8eae('0x48'),'value':_0x71f9be[_0x8eae('0x48')]||(_0x71f9be[_0x8eae('0x3f')]&&_0x71f9be['attrs'][0x2]?_0x71f9be[_0x8eae('0x3f')][0x2]['value']:undefined)||0x14},{'name':_0x8eae('0x4b'),'value':_0x71f9be[_0x8eae('0x4b')]||(_0x71f9be[_0x8eae('0x3f')]&&_0x71f9be[_0x8eae('0x3f')][0x3]?_0x71f9be['attrs'][0x3][_0x8eae('0x40')]:undefined)||_0x8eae('0x4c')},{'name':_0x8eae('0x4d'),'value':_0x71f9be[_0x8eae('0x4d')]||(_0x71f9be[_0x8eae('0x3f')]&&_0x71f9be[_0x8eae('0x3f')][0x4]?_0x71f9be[_0x8eae('0x3f')][0x4][_0x8eae('0x40')]:undefined)||''},{'name':_0x8eae('0x4e'),'value':_0x71f9be[_0x8eae('0x4e')]||(_0x71f9be[_0x8eae('0x3f')]&&_0x71f9be['attrs'][0x5]?_0x71f9be[_0x8eae('0x3f')][0x5][_0x8eae('0x40')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x71f9be[_0x8eae('0x4f')]||(_0x71f9be['attrs']&&_0x71f9be[_0x8eae('0x3f')][0x6]?_0x71f9be['attrs'][0x6][_0x8eae('0x40')]:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x71f9be[_0x8eae('0x50')]||(_0x71f9be[_0x8eae('0x3f')]&&_0x71f9be[_0x8eae('0x3f')][0x7]?_0x71f9be[_0x8eae('0x3f')][0x7][_0x8eae('0x40')]:undefined)||''},{'name':_0x8eae('0x51'),'value':_0x71f9be[_0x8eae('0x51')]||(_0x71f9be[_0x8eae('0x3f')]&&_0x71f9be[_0x8eae('0x3f')][0x8]?_0x71f9be[_0x8eae('0x3f')][0x8][_0x8eae('0x40')]:undefined)||''},{'name':'attrChatWebsites','value':_0x71f9be['attrChatWebsites']||(_0x71f9be[_0x8eae('0x3f')]&&_0x71f9be[_0x8eae('0x3f')][0x9]?_0x71f9be[_0x8eae('0x3f')][0x9][_0x8eae('0x40')]:undefined)||''}];case _0x8eae('0x52'):case _0x8eae('0x53'):return[{'name':'attrSerie1','value':_0x71f9be[_0x8eae('0x54')]||(_0x71f9be[_0x8eae('0x3f')]&&_0x71f9be[_0x8eae('0x3f')][0x0]?_0x71f9be[_0x8eae('0x3f')][0x0][_0x8eae('0x40')]:undefined)||_0x8eae('0x55')},{'name':'attrSerie2','value':_0x71f9be[_0x8eae('0x56')]||(_0x71f9be[_0x8eae('0x3f')]&&_0x71f9be['attrs'][0x1]?_0x71f9be[_0x8eae('0x3f')][0x1][_0x8eae('0x40')]:undefined)||null},{'name':_0x8eae('0x57'),'value':_0x71f9be[_0x8eae('0x57')]||(_0x71f9be[_0x8eae('0x3f')]&&_0x71f9be[_0x8eae('0x3f')][0x2]?_0x71f9be['attrs'][0x2][_0x8eae('0x40')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x71f9be[_0x8eae('0x4a')]||(_0x71f9be[_0x8eae('0x3f')]&&_0x71f9be[_0x8eae('0x3f')][0x3]?_0x71f9be['attrs'][0x3][_0x8eae('0x40')]:undefined)||[]},{'name':_0x8eae('0x4b'),'value':_0x71f9be[_0x8eae('0x4b')]||(_0x71f9be[_0x8eae('0x3f')]&&_0x71f9be[_0x8eae('0x3f')][0x4]?_0x71f9be[_0x8eae('0x3f')][0x4][_0x8eae('0x40')]:undefined)||_0x8eae('0x4c')},{'name':_0x8eae('0x4d'),'value':_0x71f9be[_0x8eae('0x4d')]||(_0x71f9be[_0x8eae('0x3f')]&&_0x71f9be['attrs'][0x5]?_0x71f9be[_0x8eae('0x3f')][0x5][_0x8eae('0x40')]:undefined)||''},{'name':_0x8eae('0x4e'),'value':_0x71f9be[_0x8eae('0x4e')]||(_0x71f9be[_0x8eae('0x3f')]&&_0x71f9be[_0x8eae('0x3f')][0x6]?_0x71f9be[_0x8eae('0x3f')][0x6][_0x8eae('0x40')]:undefined)||''},{'name':_0x8eae('0x4f'),'value':_0x71f9be[_0x8eae('0x4f')]||(_0x71f9be[_0x8eae('0x3f')]&&_0x71f9be['attrs'][0x7]?_0x71f9be[_0x8eae('0x3f')][0x7][_0x8eae('0x40')]:undefined)||''},{'name':_0x8eae('0x50'),'value':_0x71f9be[_0x8eae('0x50')]||(_0x71f9be[_0x8eae('0x3f')]&&_0x71f9be[_0x8eae('0x3f')][0x8]?_0x71f9be['attrs'][0x8][_0x8eae('0x40')]:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x71f9be[_0x8eae('0x51')]||(_0x71f9be['attrs']&&_0x71f9be[_0x8eae('0x3f')][0x9]?_0x71f9be[_0x8eae('0x3f')][0x9]['value']:undefined)||''},{'name':_0x8eae('0x58'),'value':_0x71f9be['attrChatWebsites']||(_0x71f9be['attrs']&&_0x71f9be[_0x8eae('0x3f')][0xa]?_0x71f9be['attrs'][0xa][_0x8eae('0x40')]:undefined)||''}];case'web-report':return[{'name':_0x8eae('0x59'),'type':_0x71f9be['reportType']||(_0x71f9be[_0x8eae('0x3f')]&&_0x71f9be['attrs'][0x0]?_0x71f9be['attrs'][0x0]['type']:undefined)||null,'value':_0x71f9be[_0x8eae('0x59')]||(_0x71f9be[_0x8eae('0x3f')]&&_0x71f9be['attrs'][0x0]?_0x71f9be[_0x8eae('0x3f')][0x0][_0x8eae('0x40')]:undefined)||null},{'name':_0x8eae('0x5a'),'value':_0x71f9be['attrRefresh']||(_0x71f9be[_0x8eae('0x3f')]&&_0x71f9be['attrs'][0x1]?_0x71f9be[_0x8eae('0x3f')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x490897){logger[_0x8eae('0x2b')](_0x8eae('0x5b'),JSON['stringify'](_0x490897));return[];}}exports[_0x8eae('0x5c')]=function(_0x34b544,_0x596644){if(_0x34b544[_0x8eae('0x5d')]){_0x34b544[_0x8eae('0x5d')][_0x8eae('0x3f')]=widgetAttributes(_0x34b544[_0x8eae('0x5d')]);}return db[_0x8eae('0x32')]['create'](_0x34b544[_0x8eae('0x5d')],{})[_0x8eae('0x29')](respondWithResult(_0x596644,0xc9))['catch'](handleError(_0x596644,null));};exports[_0x8eae('0x28')]=function(_0x109896,_0x2668c5){if(_0x109896[_0x8eae('0x5d')]['id']){delete _0x109896['body']['id'];}_0x109896[_0x8eae('0x5d')][_0x8eae('0x3f')]=widgetAttributes(_0x109896[_0x8eae('0x5d')]);return db[_0x8eae('0x32')][_0x8eae('0x3d')]({'where':{'id':_0x109896[_0x8eae('0x2f')]['id']}})[_0x8eae('0x29')](handleEntityNotFound(_0x2668c5,null))[_0x8eae('0x29')](saveUpdates(_0x109896[_0x8eae('0x5d')],null))[_0x8eae('0x29')](respondWithResult(_0x2668c5,null))[_0x8eae('0x5e')](handleError(_0x2668c5,null));};
\ No newline at end of file
index 8bc5abc..bfcea13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b3a=['emit','hasOwnProperty','exports','events','../../mysqldb','setMaxListeners','save','remove'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x1b3a,0x1db));var _0xa1b3=function(_0x2b0a57,_0xa58811){_0x2b0a57=_0x2b0a57-0x0;var _0x19d1ae=_0x1b3a[_0x2b0a57];return _0x19d1ae;};'use strict';var EventEmitter=require(_0xa1b3('0x0'));var DashboardItem=require(_0xa1b3('0x1'))['db']['DashboardItem'];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xa1b3('0x2')](0x0);var events={'afterCreate':_0xa1b3('0x3'),'afterUpdate':'update','afterDestroy':_0xa1b3('0x4')};function emitEvent(_0x4cb7c7){return function(_0x24f100,_0x313760,_0x24f030){DashboardItemEvents[_0xa1b3('0x5')](_0x4cb7c7+':'+_0x24f100['id'],_0x24f100);DashboardItemEvents[_0xa1b3('0x5')](_0x4cb7c7,_0x24f100);_0x24f030(null);};}for(var e in events){if(events[_0xa1b3('0x6')](e)){var event=events[e];DashboardItem['hook'](e,emitEvent(event));}}module[_0xa1b3('0x7')]=DashboardItemEvents;
\ No newline at end of file
+var _0x54e5=['DashboardItem','save','update','remove','emit','exports','events','../../mysqldb'];(function(_0xec6a6,_0x374166){var _0x296d62=function(_0x5409f9){while(--_0x5409f9){_0xec6a6['push'](_0xec6a6['shift']());}};_0x296d62(++_0x374166);}(_0x54e5,0x7e));var _0x554e=function(_0xc2c89,_0x22c701){_0xc2c89=_0xc2c89-0x0;var _0x4f9032=_0x54e5[_0xc2c89];return _0x4f9032;};'use strict';var EventEmitter=require(_0x554e('0x0'));var DashboardItem=require(_0x554e('0x1'))['db'][_0x554e('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x554e('0x3'),'afterUpdate':_0x554e('0x4'),'afterDestroy':_0x554e('0x5')};function emitEvent(_0x363497){return function(_0x3bd1d5,_0x293292,_0x23e40a){DashboardItemEvents['emit'](_0x363497+':'+_0x3bd1d5['id'],_0x3bd1d5);DashboardItemEvents[_0x554e('0x6')](_0x363497,_0x3bd1d5);_0x23e40a(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];DashboardItem['hook'](e,emitEvent(event));}}module[_0x554e('0x7')]=DashboardItemEvents;
\ No newline at end of file
index e8b4907..ceaee64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc188=['DashboardItem','dashboard_items','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','define'];(function(_0x2c7618,_0x26be9c){var _0x5ce3f0=function(_0x1837b3){while(--_0x1837b3){_0x2c7618['push'](_0x2c7618['shift']());}};_0x5ce3f0(++_0x26be9c);}(_0xc188,0xc8));var _0x8c18=function(_0x4ee37d,_0x413307){_0x4ee37d=_0x4ee37d-0x0;var _0x5610e3=_0xc188[_0x4ee37d];return _0x5610e3;};'use strict';var _=require(_0x8c18('0x0'));var util=require(_0x8c18('0x1'));var logger=require(_0x8c18('0x2'))('api');var moment=require(_0x8c18('0x3'));var BPromise=require(_0x8c18('0x4'));var rp=require(_0x8c18('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8c18('0x6'));var config=require(_0x8c18('0x7'));var attributes=require('./dashboardItem.attributes');module['exports']=function(_0x3c2787,_0x1da608){return _0x3c2787[_0x8c18('0x8')](_0x8c18('0x9'),attributes,{'tableName':_0x8c18('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa61f=['api','moment','bluebird','request-promise','path','../../config/environment','define','DashboardItem','dashboard_items','lodash','util','../../config/logger'];(function(_0x2457b1,_0x34c892){var _0x5491e4=function(_0x163fa5){while(--_0x163fa5){_0x2457b1['push'](_0x2457b1['shift']());}};_0x5491e4(++_0x34c892);}(_0xa61f,0x14d));var _0xfa61=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xa61f[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0xfa61('0x0'));var util=require(_0xfa61('0x1'));var logger=require(_0xfa61('0x2'))(_0xfa61('0x3'));var moment=require(_0xfa61('0x4'));var BPromise=require(_0xfa61('0x5'));var rp=require(_0xfa61('0x6'));var fs=require('fs');var path=require(_0xfa61('0x7'));var rimraf=require('rimraf');var config=require(_0xfa61('0x8'));var attributes=require('./dashboardItem.attributes');module['exports']=function(_0x1ba2b0,_0x662720){return _0x1ba2b0[_0xfa61('0x9')](_0xfa61('0xa'),attributes,{'tableName':_0xfa61('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0512331..75c90a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86bf=['message','result','util','moment','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','socket.io-emitter','register','request','then','info','debug','DashboardItem,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','DashboardItem,\x20%s,\x20%s'];(function(_0x497235,_0x2dfca9){var _0xebaf91=function(_0x1982df){while(--_0x1982df){_0x497235['push'](_0x497235['shift']());}};_0xebaf91(++_0x2dfca9);}(_0x86bf,0x13a));var _0xf86b=function(_0x125c68,_0xcd8a54){_0x125c68=_0x125c68-0x0;var _0x42b5d=_0x86bf[_0x125c68];return _0x42b5d;};'use strict';var _=require('lodash');var util=require(_0xf86b('0x0'));var moment=require(_0xf86b('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf86b('0x2'));var db=require(_0xf86b('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xf86b('0x4'))(_0xf86b('0x5'));var config=require(_0xf86b('0x6'));var jayson=require(_0xf86b('0x7'));var client=jayson['client'][_0xf86b('0x8')]({'port':0x232a});config[_0xf86b('0x9')]=_['defaults'](config[_0xf86b('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xf86b('0xa'))(new Redis(config[_0xf86b('0x9')]));require('./dashboardItem.socket')[_0xf86b('0xb')](socket);function respondWithRpcPromise(_0x47d32e,_0x3b2ed3,_0x245090){return new BPromise(function(_0x100ab3,_0x2d526f){return client[_0xf86b('0xc')](_0x47d32e,_0x245090)[_0xf86b('0xd')](function(_0x2d0656){logger[_0xf86b('0xe')]('DashboardItem,\x20%s,\x20%s',_0x3b2ed3,'request\x20sent');logger[_0xf86b('0xf')](_0xf86b('0x10'),_0x3b2ed3,_0xf86b('0x11'),JSON[_0xf86b('0x12')](_0x2d0656));if(_0x2d0656[_0xf86b('0x13')]){if(_0x2d0656['error'][_0xf86b('0x14')]===0x1f4){logger[_0xf86b('0x13')](_0xf86b('0x15'),_0x3b2ed3,_0x2d0656[_0xf86b('0x13')]['message']);return _0x2d526f(_0x2d0656[_0xf86b('0x13')][_0xf86b('0x16')]);}logger[_0xf86b('0x13')](_0xf86b('0x15'),_0x3b2ed3,_0x2d0656[_0xf86b('0x13')]['message']);return _0x100ab3(_0x2d0656['error'][_0xf86b('0x16')]);}else{logger[_0xf86b('0xe')](_0xf86b('0x15'),_0x3b2ed3,_0xf86b('0x11'));_0x100ab3(_0x2d0656[_0xf86b('0x17')]['message']);}})['catch'](function(_0x543c9c){logger[_0xf86b('0x13')](_0xf86b('0x15'),_0x3b2ed3,_0x543c9c);_0x2d526f(_0x543c9c);});});}
\ No newline at end of file
+var _0x286e=['lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','then','info','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error','message','catch'];(function(_0x192752,_0x109ba7){var _0x320d73=function(_0x324b3b){while(--_0x324b3b){_0x192752['push'](_0x192752['shift']());}};_0x320d73(++_0x109ba7);}(_0x286e,0x1b0));var _0xe286=function(_0x3beb1f,_0xc0567a){_0x3beb1f=_0x3beb1f-0x0;var _0x7ace5b=_0x286e[_0x3beb1f];return _0x7ace5b;};'use strict';var _=require(_0xe286('0x0'));var util=require(_0xe286('0x1'));var moment=require(_0xe286('0x2'));var BPromise=require('bluebird');var rs=require(_0xe286('0x3'));var fs=require('fs');var Redis=require(_0xe286('0x4'));var db=require(_0xe286('0x5'))['db'];var utils=require(_0xe286('0x6'));var logger=require(_0xe286('0x7'))(_0xe286('0x8'));var config=require(_0xe286('0x9'));var jayson=require(_0xe286('0xa'));var client=jayson[_0xe286('0xb')][_0xe286('0xc')]({'port':0x232a});config[_0xe286('0xd')]=_['defaults'](config['redis'],{'host':_0xe286('0xe'),'port':0x18eb});var socket=require(_0xe286('0xf'))(new Redis(config[_0xe286('0xd')]));require('./dashboardItem.socket')[_0xe286('0x10')](socket);function respondWithRpcPromise(_0x29f858,_0x4c41bd,_0x347505){return new BPromise(function(_0x5149af,_0x54c7d7){return client['request'](_0x29f858,_0x347505)[_0xe286('0x11')](function(_0x55dc78){logger[_0xe286('0x12')](_0xe286('0x13'),_0x4c41bd,_0xe286('0x14'));logger[_0xe286('0x15')](_0xe286('0x16'),_0x4c41bd,_0xe286('0x14'),JSON[_0xe286('0x17')](_0x55dc78));if(_0x55dc78['error']){if(_0x55dc78[_0xe286('0x18')]['code']===0x1f4){logger[_0xe286('0x18')](_0xe286('0x13'),_0x4c41bd,_0x55dc78[_0xe286('0x18')]['message']);return _0x54c7d7(_0x55dc78[_0xe286('0x18')]['message']);}logger[_0xe286('0x18')](_0xe286('0x13'),_0x4c41bd,_0x55dc78[_0xe286('0x18')][_0xe286('0x19')]);return _0x5149af(_0x55dc78[_0xe286('0x18')][_0xe286('0x19')]);}else{logger[_0xe286('0x12')](_0xe286('0x13'),_0x4c41bd,_0xe286('0x14'));_0x5149af(_0x55dc78['result']['message']);}})[_0xe286('0x1a')](function(_0x8eeab6){logger[_0xe286('0x18')](_0xe286('0x13'),_0x4c41bd,_0x8eeab6);_0x54c7d7(_0x8eeab6);});});}
\ No newline at end of file
index 3d44fc6..2965fd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75f8=['update','emit','removeListener','length','dashboardItem:','./dashboardItem.events','save','remove'];(function(_0x4d3792,_0x4863e8){var _0x4e39c8=function(_0x4422c8){while(--_0x4422c8){_0x4d3792['push'](_0x4d3792['shift']());}};_0x4e39c8(++_0x4863e8);}(_0x75f8,0x1cd));var _0x875f=function(_0x39a7b3,_0x9c5210){_0x39a7b3=_0x39a7b3-0x0;var _0x1e25e2=_0x75f8[_0x39a7b3];return _0x1e25e2;};'use strict';var DashboardItemEvents=require(_0x875f('0x0'));var events=[_0x875f('0x1'),_0x875f('0x2'),_0x875f('0x3')];function createListener(_0x6a54,_0x5d78aa){return function(_0x2032ae){_0x5d78aa[_0x875f('0x4')](_0x6a54,_0x2032ae);};}function removeListener(_0x31dbfe,_0x4655ed){return function(){DashboardItemEvents[_0x875f('0x5')](_0x31dbfe,_0x4655ed);};}exports['register']=function(_0x5addd3){for(var _0x353c11=0x0,_0x52f9fe=events[_0x875f('0x6')];_0x353c11<_0x52f9fe;_0x353c11++){var _0x41a7a9=events[_0x353c11];var _0x438f15=createListener(_0x875f('0x7')+_0x41a7a9,_0x5addd3);DashboardItemEvents['on'](_0x41a7a9,_0x438f15);}};
\ No newline at end of file
+var _0xa650=['removeListener','length','dashboardItem:','./dashboardItem.events','save','remove','emit'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa650,0x96));var _0x0a65=function(_0x5f1a6b,_0x5bef42){_0x5f1a6b=_0x5f1a6b-0x0;var _0x5b4c3f=_0xa650[_0x5f1a6b];return _0x5b4c3f;};'use strict';var DashboardItemEvents=require(_0x0a65('0x0'));var events=[_0x0a65('0x1'),_0x0a65('0x2'),'update'];function createListener(_0x458263,_0x3c5e8f){return function(_0x2ee3aa){_0x3c5e8f[_0x0a65('0x3')](_0x458263,_0x2ee3aa);};}function removeListener(_0x21f56b,_0xad49bd){return function(){DashboardItemEvents[_0x0a65('0x4')](_0x21f56b,_0xad49bd);};}exports['register']=function(_0x512dff){for(var _0x355f96=0x0,_0x59454e=events[_0x0a65('0x5')];_0x355f96<_0x59454e;_0x355f96++){var _0x770df9=events[_0x355f96];var _0x52e138=createListener(_0x0a65('0x6')+_0x770df9,_0x512dff);DashboardItemEvents['on'](_0x770df9,_0x52e138);}};
\ No newline at end of file
index 50e0e6b..5002186 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ba5=['express','Router','fs-extra','../../components/interaction/service','./dashboardItem.controller','isAuthenticated','show','post','create','/:id','update','delete','destroy','exports','multer','util','path'];(function(_0x3c642f,_0x275ee8){var _0x2270b3=function(_0x44e235){while(--_0x44e235){_0x3c642f['push'](_0x3c642f['shift']());}};_0x2270b3(++_0x275ee8);}(_0x8ba5,0x85));var _0x58ba=function(_0x3a10e3,_0x3cdb35){_0x3a10e3=_0x3a10e3-0x0;var _0xf067c8=_0x8ba5[_0x3a10e3];return _0xf067c8;};'use strict';var multer=require(_0x58ba('0x0'));var util=require(_0x58ba('0x1'));var path=require(_0x58ba('0x2'));var timeout=require('connect-timeout');var express=require(_0x58ba('0x3'));var router=express[_0x58ba('0x4')]();var fs_extra=require(_0x58ba('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x58ba('0x6'));var config=require('../../config/environment');var controller=require(_0x58ba('0x7'));router['get']('/:id',auth[_0x58ba('0x8')](),controller[_0x58ba('0x9')]);router[_0x58ba('0xa')]('/',auth[_0x58ba('0x8')](),controller[_0x58ba('0xb')]);router['put'](_0x58ba('0xc'),auth[_0x58ba('0x8')](),controller[_0x58ba('0xd')]);router[_0x58ba('0xe')](_0x58ba('0xc'),auth['isAuthenticated'](),controller[_0x58ba('0xf')]);module[_0x58ba('0x10')]=router;
\ No newline at end of file
+var _0xfce2=['util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','post','create','put','update','delete','destroy','exports','multer'];(function(_0x3dbf08,_0x1bbc94){var _0x258697=function(_0x7e2111){while(--_0x7e2111){_0x3dbf08['push'](_0x3dbf08['shift']());}};_0x258697(++_0x1bbc94);}(_0xfce2,0x84));var _0x2fce=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfce2[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x2fce('0x0'));var util=require(_0x2fce('0x1'));var path=require(_0x2fce('0x2'));var timeout=require(_0x2fce('0x3'));var express=require(_0x2fce('0x4'));var router=express[_0x2fce('0x5')]();var fs_extra=require(_0x2fce('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x2fce('0x7'));var config=require(_0x2fce('0x8'));var controller=require('./dashboardItem.controller');router[_0x2fce('0x9')](_0x2fce('0xa'),auth[_0x2fce('0xb')](),controller['show']);router[_0x2fce('0xc')]('/',auth['isAuthenticated'](),controller[_0x2fce('0xd')]);router[_0x2fce('0xe')](_0x2fce('0xa'),auth[_0x2fce('0xb')](),controller[_0x2fce('0xf')]);router[_0x2fce('0x10')](_0x2fce('0xa'),auth[_0x2fce('0xb')](),controller[_0x2fce('0x11')]);module[_0x2fce('0x12')]=router;
\ No newline at end of file
index 24bec86..738b13c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa629=['STRING','ENUM','first'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0xa629,0x19b));var _0x9a62=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa629[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x9a62('0x0')],'allowNull':![]},'level':{'type':Sequelize[_0x9a62('0x1')](_0x9a62('0x2'),'second','third'),'allowNull':![],'defaultValue':_0x9a62('0x2')},'description':{'type':Sequelize[_0x9a62('0x0')]}};
\ No newline at end of file
+var _0x7ce6=['first','second','third','STRING','exports'];(function(_0x42e10e,_0x477678){var _0x598534=function(_0x4a3062){while(--_0x4a3062){_0x42e10e['push'](_0x42e10e['shift']());}};_0x598534(++_0x477678);}(_0x7ce6,0x8b));var _0x67ce=function(_0x2eef55,_0x447a1e){_0x2eef55=_0x2eef55-0x0;var _0x30e22e=_0x7ce6[_0x2eef55];return _0x30e22e;};'use strict';var Sequelize=require('sequelize');module[_0x67ce('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'level':{'type':Sequelize['ENUM'](_0x67ce('0x1'),_0x67ce('0x2'),_0x67ce('0x3')),'allowNull':![],'defaultValue':_0x67ce('0x1')},'description':{'type':Sequelize[_0x67ce('0x4')]}};
\ No newline at end of file
index e69bf92..a349846 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0af1=['json','undefined','limit','count','offset','set','apply','reject','update','then','destroy','get','Dispositions','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','merge','VIRTUAL','filter','options','includeAll','Disposition','findAll','catch','show','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x26e73a,_0x4e3cb9){var _0x5b7d19=function(_0x11e56c){while(--_0x11e56c){_0x26e73a['push'](_0x26e73a['shift']());}};_0x5b7d19(++_0x4e3cb9);}(_0x0af1,0x135));var _0x10af=function(_0x323e21,_0x44ec85){_0x323e21=_0x323e21-0x0;var _0x9c7c34=_0x0af1[_0x323e21];return _0x9c7c34;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x10af('0x0'));var jsonpatch=require(_0x10af('0x1'));var rp=require(_0x10af('0x2'));var moment=require(_0x10af('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x10af('0x4'));var util=require(_0x10af('0x5'));var path=require('path');var sox=require(_0x10af('0x6'));var csv=require(_0x10af('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x10af('0x8'));var _=require(_0x10af('0x9'));var squel=require(_0x10af('0xa'));var crypto=require(_0x10af('0xb'));var jsforce=require(_0x10af('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x10af('0x7'));var querystring=require(_0x10af('0xd'));var Papa=require('papaparse');var Redis=require(_0x10af('0xe'));var authService=require(_0x10af('0xf'));var qs=require(_0x10af('0x10'));var as=require(_0x10af('0x11'));var hardwareService=require(_0x10af('0x12'));var logger=require(_0x10af('0x13'))(_0x10af('0x14'));var utils=require(_0x10af('0x15'));var config=require(_0x10af('0x16'));var licenseUtil=require(_0x10af('0x17'));var db=require(_0x10af('0x18'))['db'];function respondWithStatusCode(_0x960e7c,_0x5b9f3a){_0x5b9f3a=_0x5b9f3a||0xcc;return function(_0x59f261){if(_0x59f261){return _0x960e7c[_0x10af('0x19')](_0x5b9f3a);}return _0x960e7c[_0x10af('0x1a')](_0x5b9f3a)['end']();};}function respondWithResult(_0x4bb7fe,_0x1d2b8f){_0x1d2b8f=_0x1d2b8f||0xc8;return function(_0xb58a13){if(_0xb58a13){return _0x4bb7fe[_0x10af('0x1a')](_0x1d2b8f)[_0x10af('0x1b')](_0xb58a13);}};}function respondWithFilteredResult(_0x118d04,_0x432c67){return function(_0x3123a7){if(_0x3123a7){var _0x5137bd=typeof _0x432c67['offset']===_0x10af('0x1c')&&typeof _0x432c67[_0x10af('0x1d')]===_0x10af('0x1c');var _0x22b2f3=_0x3123a7[_0x10af('0x1e')];var _0x2eddb5=_0x5137bd?0x0:_0x432c67[_0x10af('0x1f')];var _0x326600=_0x5137bd?_0x3123a7[_0x10af('0x1e')]:_0x432c67[_0x10af('0x1f')]+_0x432c67[_0x10af('0x1d')];var _0x561899;if(_0x326600>=_0x22b2f3){_0x326600=_0x22b2f3;_0x561899=0xc8;}else{_0x561899=0xce;}_0x118d04[_0x10af('0x1a')](_0x561899);return _0x118d04[_0x10af('0x20')]('Content-Range',_0x2eddb5+'-'+_0x326600+'/'+_0x22b2f3)['json'](_0x3123a7);}return null;};}function patchUpdates(_0x15bb75){return function(_0x43a262){try{jsonpatch[_0x10af('0x21')](_0x43a262,_0x15bb75,!![]);}catch(_0x577efc){return BPromise[_0x10af('0x22')](_0x577efc);}return _0x43a262['save']();};}function saveUpdates(_0x1e7d22,_0x4bab54){return function(_0x4a3944){if(_0x4a3944){return _0x4a3944[_0x10af('0x23')](_0x1e7d22)[_0x10af('0x24')](function(_0x52bd78){return _0x52bd78;});}return null;};}function removeEntity(_0x25cb7b,_0x500ee2){return function(_0x33c199){if(_0x33c199){return _0x33c199[_0x10af('0x25')]()[_0x10af('0x24')](function(){var _0x3dd783=_0x33c199[_0x10af('0x26')]({'plain':!![]});var _0x36b623=_0x10af('0x27');return db['UserProfileResource'][_0x10af('0x25')]({'where':{'type':_0x36b623,'resourceId':_0x3dd783['id']}})[_0x10af('0x24')](function(){return _0x33c199;});})['then'](function(){_0x25cb7b[_0x10af('0x1a')](0xcc)[_0x10af('0x28')]();});}};}function handleEntityNotFound(_0x4f37fa,_0x1835e4){return function(_0x3ce322){if(!_0x3ce322){_0x4f37fa[_0x10af('0x19')](0x194);}return _0x3ce322;};}function handleError(_0x5cf7c1,_0x58b775){_0x58b775=_0x58b775||0x1f4;return function(_0x5a30a6){logger[_0x10af('0x29')](_0x5a30a6[_0x10af('0x2a')]);if(_0x5a30a6['name']){delete _0x5a30a6[_0x10af('0x2b')];}_0x5cf7c1[_0x10af('0x1a')](_0x58b775)[_0x10af('0x2c')](_0x5a30a6);};}exports[_0x10af('0x2d')]=function(_0x119a0e,_0x321a8a){var _0x287d1d={},_0x3a0abd={},_0x50fb7c={'count':0x0,'rows':[]};var _0x1ef8de=_[_0x10af('0x2e')](db['Disposition'][_0x10af('0x2f')],function(_0x5ca143){return{'name':_0x5ca143[_0x10af('0x30')],'type':_0x5ca143[_0x10af('0x31')][_0x10af('0x32')]};});_0x3a0abd[_0x10af('0x33')]=_[_0x10af('0x2e')](_0x1ef8de,'name');_0x3a0abd['query']=_[_0x10af('0x34')](_0x119a0e[_0x10af('0x35')]);_0x3a0abd['filters']=_[_0x10af('0x36')](_0x3a0abd[_0x10af('0x33')],_0x3a0abd[_0x10af('0x35')]);_0x287d1d[_0x10af('0x37')]=_[_0x10af('0x36')](_0x3a0abd[_0x10af('0x33')],qs[_0x10af('0x38')](_0x119a0e[_0x10af('0x35')]['fields']));_0x287d1d[_0x10af('0x37')]=_0x287d1d[_0x10af('0x37')][_0x10af('0x39')]?_0x287d1d[_0x10af('0x37')]:_0x3a0abd['model'];if(!_0x119a0e[_0x10af('0x35')][_0x10af('0x3a')](_0x10af('0x3b'))){_0x287d1d[_0x10af('0x1d')]=qs[_0x10af('0x1d')](_0x119a0e[_0x10af('0x35')][_0x10af('0x1d')]);_0x287d1d['offset']=qs[_0x10af('0x1f')](_0x119a0e[_0x10af('0x35')][_0x10af('0x1f')]);}_0x287d1d[_0x10af('0x3c')]=qs['sort'](_0x119a0e[_0x10af('0x35')][_0x10af('0x3d')]);_0x287d1d[_0x10af('0x3e')]=qs[_0x10af('0x3f')](_['pick'](_0x119a0e[_0x10af('0x35')],_0x3a0abd[_0x10af('0x3f')]),_0x1ef8de);if(_0x119a0e[_0x10af('0x35')]['filter']){_0x287d1d[_0x10af('0x3e')]=_[_0x10af('0x40')](_0x287d1d['where'],{'$or':_[_0x10af('0x2e')](_0x1ef8de,function(_0x402a56){if(_0x402a56[_0x10af('0x31')]!==_0x10af('0x41')){var _0x411862={};_0x411862[_0x402a56[_0x10af('0x2b')]]={'$like':'%'+_0x119a0e[_0x10af('0x35')][_0x10af('0x42')]+'%'};return _0x411862;}})});}_0x287d1d=_[_0x10af('0x40')]({},_0x287d1d,_0x119a0e[_0x10af('0x43')]);var _0x272a20={'where':_0x287d1d[_0x10af('0x3e')]};return db['Disposition'][_0x10af('0x1e')](_0x272a20)['then'](function(_0x870fb5){_0x50fb7c[_0x10af('0x1e')]=_0x870fb5;if(_0x119a0e['query'][_0x10af('0x44')]){_0x287d1d['include']=[{'all':!![]}];}return db[_0x10af('0x45')][_0x10af('0x46')](_0x287d1d);})['then'](function(_0x252a1b){_0x50fb7c['rows']=_0x252a1b;return _0x50fb7c;})[_0x10af('0x24')](respondWithFilteredResult(_0x321a8a,_0x287d1d))[_0x10af('0x47')](handleError(_0x321a8a,null));};exports[_0x10af('0x48')]=function(_0x48178b,_0x401740){var _0x2f9ce4={'raw':!![],'where':{'id':_0x48178b[_0x10af('0x49')]['id']}},_0x5e2349={};_0x5e2349[_0x10af('0x33')]=_['keys'](db[_0x10af('0x45')][_0x10af('0x2f')]);_0x5e2349['query']=_['keys'](_0x48178b['query']);_0x5e2349[_0x10af('0x3f')]=_[_0x10af('0x36')](_0x5e2349[_0x10af('0x33')],_0x5e2349[_0x10af('0x35')]);_0x2f9ce4[_0x10af('0x37')]=_['intersection'](_0x5e2349['model'],qs[_0x10af('0x38')](_0x48178b[_0x10af('0x35')][_0x10af('0x38')]));_0x2f9ce4[_0x10af('0x37')]=_0x2f9ce4[_0x10af('0x37')][_0x10af('0x39')]?_0x2f9ce4[_0x10af('0x37')]:_0x5e2349[_0x10af('0x33')];if(_0x48178b[_0x10af('0x35')]['includeAll']){_0x2f9ce4['include']=[{'all':!![]}];}_0x2f9ce4=_[_0x10af('0x40')]({},_0x2f9ce4,_0x48178b['options']);return db[_0x10af('0x45')]['find'](_0x2f9ce4)[_0x10af('0x24')](handleEntityNotFound(_0x401740,null))['then'](respondWithResult(_0x401740,null))[_0x10af('0x47')](handleError(_0x401740,null));};exports[_0x10af('0x4a')]=function(_0x3cc096,_0x5c16b6){return db[_0x10af('0x45')][_0x10af('0x4a')](_0x3cc096[_0x10af('0x4b')],{})[_0x10af('0x24')](function(_0x360e67){var _0x4e38cb=_0x3cc096[_0x10af('0x4c')][_0x10af('0x26')]({'plain':!![]});if(!_0x4e38cb)throw new Error(_0x10af('0x4d'));if(_0x4e38cb[_0x10af('0x4e')]===_0x10af('0x4c')){var _0x4ac774=_0x360e67[_0x10af('0x26')]({'plain':!![]});var _0xec07a2='Dispositions';return db[_0x10af('0x4f')]['find']({'where':{'name':_0xec07a2,'userProfileId':_0x4e38cb['userProfileId']},'raw':!![]})[_0x10af('0x24')](function(_0x230e49){if(_0x230e49&&_0x230e49[_0x10af('0x50')]===0x0){return db[_0x10af('0x51')][_0x10af('0x4a')]({'name':_0x4ac774[_0x10af('0x2b')],'resourceId':_0x4ac774['id'],'type':_0x230e49[_0x10af('0x2b')],'sectionId':_0x230e49['id']},{})[_0x10af('0x24')](function(){return _0x360e67;});}else{return _0x360e67;}})[_0x10af('0x47')](function(_0x2c1022){logger['error'](_0x10af('0x52'),_0x2c1022);throw _0x2c1022;});}return _0x360e67;})[_0x10af('0x24')](respondWithResult(_0x5c16b6,0xc9))[_0x10af('0x47')](handleError(_0x5c16b6,null));};exports[_0x10af('0x23')]=function(_0x393552,_0x51496b){if(_0x393552[_0x10af('0x4b')]['id']){delete _0x393552[_0x10af('0x4b')]['id'];}return db['Disposition'][_0x10af('0x53')]({'where':{'id':_0x393552['params']['id']}})['then'](handleEntityNotFound(_0x51496b,null))['then'](saveUpdates(_0x393552[_0x10af('0x4b')],null))[_0x10af('0x24')](respondWithResult(_0x51496b,null))[_0x10af('0x47')](handleError(_0x51496b,null));};exports['destroy']=function(_0x43fb6d,_0x53b8b6){return db[_0x10af('0x45')][_0x10af('0x53')]({'where':{'id':_0x43fb6d[_0x10af('0x49')]['id']}})['then'](handleEntityNotFound(_0x53b8b6,null))[_0x10af('0x24')](removeEntity(_0x53b8b6,null))[_0x10af('0x47')](handleError(_0x53b8b6,null));};
\ No newline at end of file
+var _0x7dee=['catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','set','Content-Range','json','reject','save','update','then','destroy','get','Dispositions','sendStatus','error','name','index','map','Disposition','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','count','include','findAll','show','params','keys','includeAll','find'];(function(_0x457cea,_0x406b93){var _0x28929f=function(_0xed7f1){while(--_0xed7f1){_0x457cea['push'](_0x457cea['shift']());}};_0x28929f(++_0x406b93);}(_0x7dee,0xb0));var _0xe7de=function(_0x488768,_0x55be25){_0x488768=_0x488768-0x0;var _0x5b4423=_0x7dee[_0x488768];return _0x5b4423;};'use strict';var emlformat=require(_0xe7de('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe7de('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe7de('0x2'));var moment=require(_0xe7de('0x3'));var BPromise=require(_0xe7de('0x4'));var Mustache=require(_0xe7de('0x5'));var util=require('util');var path=require(_0xe7de('0x6'));var sox=require('sox');var csv=require(_0xe7de('0x7'));var ejs=require(_0xe7de('0x8'));var fs=require('fs');var fs_extra=require(_0xe7de('0x9'));var _=require(_0xe7de('0xa'));var squel=require(_0xe7de('0xb'));var crypto=require(_0xe7de('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xe7de('0xd'));var toCsv=require(_0xe7de('0x7'));var querystring=require(_0xe7de('0xe'));var Papa=require(_0xe7de('0xf'));var Redis=require('ioredis');var authService=require(_0xe7de('0x10'));var qs=require(_0xe7de('0x11'));var as=require(_0xe7de('0x12'));var hardwareService=require(_0xe7de('0x13'));var logger=require(_0xe7de('0x14'))(_0xe7de('0x15'));var utils=require(_0xe7de('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xe7de('0x17'));var db=require(_0xe7de('0x18'))['db'];function respondWithStatusCode(_0x38c0a1,_0x2c535c){_0x2c535c=_0x2c535c||0xcc;return function(_0x2c49d6){if(_0x2c49d6){return _0x38c0a1['sendStatus'](_0x2c535c);}return _0x38c0a1[_0xe7de('0x19')](_0x2c535c)[_0xe7de('0x1a')]();};}function respondWithResult(_0x280473,_0x41f731){_0x41f731=_0x41f731||0xc8;return function(_0xe68b48){if(_0xe68b48){return _0x280473[_0xe7de('0x19')](_0x41f731)['json'](_0xe68b48);}};}function respondWithFilteredResult(_0x4b70ab,_0x28a0c4){return function(_0x3f62e1){if(_0x3f62e1){var _0x3e49d5=typeof _0x28a0c4[_0xe7de('0x1b')]===_0xe7de('0x1c')&&typeof _0x28a0c4['limit']===_0xe7de('0x1c');var _0x4b1648=_0x3f62e1['count'];var _0x5cb629=_0x3e49d5?0x0:_0x28a0c4[_0xe7de('0x1b')];var _0x1da189=_0x3e49d5?_0x3f62e1['count']:_0x28a0c4[_0xe7de('0x1b')]+_0x28a0c4[_0xe7de('0x1d')];var _0x2850c6;if(_0x1da189>=_0x4b1648){_0x1da189=_0x4b1648;_0x2850c6=0xc8;}else{_0x2850c6=0xce;}_0x4b70ab[_0xe7de('0x19')](_0x2850c6);return _0x4b70ab[_0xe7de('0x1e')](_0xe7de('0x1f'),_0x5cb629+'-'+_0x1da189+'/'+_0x4b1648)[_0xe7de('0x20')](_0x3f62e1);}return null;};}function patchUpdates(_0xfead44){return function(_0x1c6fa6){try{jsonpatch['apply'](_0x1c6fa6,_0xfead44,!![]);}catch(_0x1120c1){return BPromise[_0xe7de('0x21')](_0x1120c1);}return _0x1c6fa6[_0xe7de('0x22')]();};}function saveUpdates(_0x4eb228,_0xc9f494){return function(_0x597346){if(_0x597346){return _0x597346[_0xe7de('0x23')](_0x4eb228)[_0xe7de('0x24')](function(_0x3b0c24){return _0x3b0c24;});}return null;};}function removeEntity(_0x5e97ec,_0x45b4e1){return function(_0x454952){if(_0x454952){return _0x454952[_0xe7de('0x25')]()[_0xe7de('0x24')](function(){var _0x2c65c1=_0x454952[_0xe7de('0x26')]({'plain':!![]});var _0xd7f3ca=_0xe7de('0x27');return db['UserProfileResource'][_0xe7de('0x25')]({'where':{'type':_0xd7f3ca,'resourceId':_0x2c65c1['id']}})[_0xe7de('0x24')](function(){return _0x454952;});})[_0xe7de('0x24')](function(){_0x5e97ec[_0xe7de('0x19')](0xcc)[_0xe7de('0x1a')]();});}};}function handleEntityNotFound(_0x475fb7,_0x358dbd){return function(_0x524f31){if(!_0x524f31){_0x475fb7[_0xe7de('0x28')](0x194);}return _0x524f31;};}function handleError(_0x33c364,_0x3a4666){_0x3a4666=_0x3a4666||0x1f4;return function(_0x3d4d63){logger[_0xe7de('0x29')](_0x3d4d63['stack']);if(_0x3d4d63[_0xe7de('0x2a')]){delete _0x3d4d63[_0xe7de('0x2a')];}_0x33c364['status'](_0x3a4666)['send'](_0x3d4d63);};}exports[_0xe7de('0x2b')]=function(_0x381d6a,_0x225e8e){var _0x3e35e0={},_0x5a7ead={},_0x1bf34a={'count':0x0,'rows':[]};var _0x268fe2=_[_0xe7de('0x2c')](db[_0xe7de('0x2d')]['rawAttributes'],function(_0xc1c9de){return{'name':_0xc1c9de[_0xe7de('0x2e')],'type':_0xc1c9de[_0xe7de('0x2f')][_0xe7de('0x30')]};});_0x5a7ead[_0xe7de('0x31')]=_[_0xe7de('0x2c')](_0x268fe2,_0xe7de('0x2a'));_0x5a7ead[_0xe7de('0x32')]=_['keys'](_0x381d6a[_0xe7de('0x32')]);_0x5a7ead[_0xe7de('0x33')]=_[_0xe7de('0x34')](_0x5a7ead[_0xe7de('0x31')],_0x5a7ead[_0xe7de('0x32')]);_0x3e35e0[_0xe7de('0x35')]=_[_0xe7de('0x34')](_0x5a7ead[_0xe7de('0x31')],qs[_0xe7de('0x36')](_0x381d6a[_0xe7de('0x32')]['fields']));_0x3e35e0['attributes']=_0x3e35e0[_0xe7de('0x35')][_0xe7de('0x37')]?_0x3e35e0[_0xe7de('0x35')]:_0x5a7ead[_0xe7de('0x31')];if(!_0x381d6a[_0xe7de('0x32')][_0xe7de('0x38')](_0xe7de('0x39'))){_0x3e35e0[_0xe7de('0x1d')]=qs[_0xe7de('0x1d')](_0x381d6a[_0xe7de('0x32')]['limit']);_0x3e35e0[_0xe7de('0x1b')]=qs[_0xe7de('0x1b')](_0x381d6a[_0xe7de('0x32')][_0xe7de('0x1b')]);}_0x3e35e0[_0xe7de('0x3a')]=qs['sort'](_0x381d6a['query'][_0xe7de('0x3b')]);_0x3e35e0[_0xe7de('0x3c')]=qs[_0xe7de('0x33')](_[_0xe7de('0x3d')](_0x381d6a[_0xe7de('0x32')],_0x5a7ead[_0xe7de('0x33')]),_0x268fe2);if(_0x381d6a[_0xe7de('0x32')][_0xe7de('0x3e')]){_0x3e35e0[_0xe7de('0x3c')]=_['merge'](_0x3e35e0['where'],{'$or':_[_0xe7de('0x2c')](_0x268fe2,function(_0x5d450a){if(_0x5d450a['type']!=='VIRTUAL'){var _0x23cb56={};_0x23cb56[_0x5d450a[_0xe7de('0x2a')]]={'$like':'%'+_0x381d6a[_0xe7de('0x32')][_0xe7de('0x3e')]+'%'};return _0x23cb56;}})});}_0x3e35e0=_[_0xe7de('0x3f')]({},_0x3e35e0,_0x381d6a[_0xe7de('0x40')]);var _0x3cf0c9={'where':_0x3e35e0['where']};return db['Disposition'][_0xe7de('0x41')](_0x3cf0c9)[_0xe7de('0x24')](function(_0xa71e89){_0x1bf34a[_0xe7de('0x41')]=_0xa71e89;if(_0x381d6a['query']['includeAll']){_0x3e35e0[_0xe7de('0x42')]=[{'all':!![]}];}return db['Disposition'][_0xe7de('0x43')](_0x3e35e0);})['then'](function(_0x3e33dc){_0x1bf34a['rows']=_0x3e33dc;return _0x1bf34a;})[_0xe7de('0x24')](respondWithFilteredResult(_0x225e8e,_0x3e35e0))['catch'](handleError(_0x225e8e,null));};exports[_0xe7de('0x44')]=function(_0x464ac8,_0x1e070d){var _0x58f52e={'raw':!![],'where':{'id':_0x464ac8[_0xe7de('0x45')]['id']}},_0x118718={};_0x118718[_0xe7de('0x31')]=_['keys'](db[_0xe7de('0x2d')]['rawAttributes']);_0x118718[_0xe7de('0x32')]=_[_0xe7de('0x46')](_0x464ac8[_0xe7de('0x32')]);_0x118718[_0xe7de('0x33')]=_[_0xe7de('0x34')](_0x118718['model'],_0x118718['query']);_0x58f52e[_0xe7de('0x35')]=_['intersection'](_0x118718['model'],qs[_0xe7de('0x36')](_0x464ac8[_0xe7de('0x32')]['fields']));_0x58f52e[_0xe7de('0x35')]=_0x58f52e[_0xe7de('0x35')]['length']?_0x58f52e['attributes']:_0x118718[_0xe7de('0x31')];if(_0x464ac8[_0xe7de('0x32')][_0xe7de('0x47')]){_0x58f52e['include']=[{'all':!![]}];}_0x58f52e=_[_0xe7de('0x3f')]({},_0x58f52e,_0x464ac8[_0xe7de('0x40')]);return db[_0xe7de('0x2d')][_0xe7de('0x48')](_0x58f52e)[_0xe7de('0x24')](handleEntityNotFound(_0x1e070d,null))[_0xe7de('0x24')](respondWithResult(_0x1e070d,null))[_0xe7de('0x49')](handleError(_0x1e070d,null));};exports[_0xe7de('0x4a')]=function(_0x407582,_0x2d8a9a){return db[_0xe7de('0x2d')]['create'](_0x407582[_0xe7de('0x4b')],{})[_0xe7de('0x24')](function(_0x73dc36){var _0x2511b5=_0x407582['user'][_0xe7de('0x26')]({'plain':!![]});if(!_0x2511b5)throw new Error(_0xe7de('0x4c'));if(_0x2511b5[_0xe7de('0x4d')]===_0xe7de('0x4e')){var _0x374d37=_0x73dc36[_0xe7de('0x26')]({'plain':!![]});var _0x2f40e1=_0xe7de('0x27');return db[_0xe7de('0x4f')][_0xe7de('0x48')]({'where':{'name':_0x2f40e1,'userProfileId':_0x2511b5['userProfileId']},'raw':!![]})[_0xe7de('0x24')](function(_0x326e8f){if(_0x326e8f&&_0x326e8f[_0xe7de('0x50')]===0x0){return db[_0xe7de('0x51')][_0xe7de('0x4a')]({'name':_0x374d37[_0xe7de('0x2a')],'resourceId':_0x374d37['id'],'type':_0x326e8f['name'],'sectionId':_0x326e8f['id']},{})[_0xe7de('0x24')](function(){return _0x73dc36;});}else{return _0x73dc36;}})[_0xe7de('0x49')](function(_0x4252b3){logger[_0xe7de('0x29')](_0xe7de('0x52'),_0x4252b3);throw _0x4252b3;});}return _0x73dc36;})[_0xe7de('0x24')](respondWithResult(_0x2d8a9a,0xc9))[_0xe7de('0x49')](handleError(_0x2d8a9a,null));};exports[_0xe7de('0x23')]=function(_0x4f2c3f,_0x54099b){if(_0x4f2c3f[_0xe7de('0x4b')]['id']){delete _0x4f2c3f[_0xe7de('0x4b')]['id'];}return db['Disposition'][_0xe7de('0x48')]({'where':{'id':_0x4f2c3f[_0xe7de('0x45')]['id']}})['then'](handleEntityNotFound(_0x54099b,null))[_0xe7de('0x24')](saveUpdates(_0x4f2c3f['body'],null))[_0xe7de('0x24')](respondWithResult(_0x54099b,null))[_0xe7de('0x49')](handleError(_0x54099b,null));};exports[_0xe7de('0x25')]=function(_0x3b8062,_0x581db7){return db['Disposition'][_0xe7de('0x48')]({'where':{'id':_0x3b8062[_0xe7de('0x45')]['id']}})[_0xe7de('0x24')](handleEntityNotFound(_0x581db7,null))[_0xe7de('0x24')](removeEntity(_0x581db7,null))[_0xe7de('0x49')](handleError(_0x581db7,null));};
\ No newline at end of file
index 2b685bc..f104b9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe43=['MailAccountId','SmsAccountId','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./disposition.attributes','exports','define','Disposition','tools_dispositions','ListId','name_chat','name','ChatWebsiteId'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xbe43,0x7e));var _0x3be4=function(_0x464557,_0x12ed30){_0x464557=_0x464557-0x0;var _0x1b7395=_0xbe43[_0x464557];return _0x1b7395;};'use strict';var _=require('lodash');var util=require(_0x3be4('0x0'));var logger=require(_0x3be4('0x1'))(_0x3be4('0x2'));var moment=require(_0x3be4('0x3'));var BPromise=require(_0x3be4('0x4'));var rp=require(_0x3be4('0x5'));var fs=require('fs');var path=require(_0x3be4('0x6'));var rimraf=require(_0x3be4('0x7'));var config=require(_0x3be4('0x8'));var attributes=require(_0x3be4('0x9'));module[_0x3be4('0xa')]=function(_0x4aa541,_0x17d738){return _0x4aa541[_0x3be4('0xb')](_0x3be4('0xc'),attributes,{'tableName':_0x3be4('0xd'),'paranoid':![],'indexes':[{'unique':!![],'name':'name_voice','fields':['name',_0x3be4('0xe')]},{'unique':!![],'name':_0x3be4('0xf'),'fields':[_0x3be4('0x10'),_0x3be4('0x11')]},{'unique':!![],'name':'name_mail','fields':[_0x3be4('0x10'),_0x3be4('0x12')]},{'unique':!![],'name':'name_sms','fields':['name',_0x3be4('0x13')]},{'unique':!![],'name':_0x3be4('0x14'),'fields':[_0x3be4('0x10'),_0x3be4('0x15')]},{'unique':!![],'name':_0x3be4('0x16'),'fields':[_0x3be4('0x10'),_0x3be4('0x17')]},{'unique':!![],'name':'name_whatsapp','fields':['name','WhatsappAccountId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3e77=['exports','define','tools_dispositions','name_voice','name','name_chat','name_mail','name_sms','SmsAccountId','name_fax','name_openchannel','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./disposition.attributes'];(function(_0x2e573e,_0x243e54){var _0x5769c1=function(_0x51e60a){while(--_0x51e60a){_0x2e573e['push'](_0x2e573e['shift']());}};_0x5769c1(++_0x243e54);}(_0x3e77,0x1d6));var _0x73e7=function(_0x42508b,_0x693bd2){_0x42508b=_0x42508b-0x0;var _0x4739b6=_0x3e77[_0x42508b];return _0x4739b6;};'use strict';var _=require(_0x73e7('0x0'));var util=require(_0x73e7('0x1'));var logger=require(_0x73e7('0x2'))(_0x73e7('0x3'));var moment=require(_0x73e7('0x4'));var BPromise=require(_0x73e7('0x5'));var rp=require(_0x73e7('0x6'));var fs=require('fs');var path=require(_0x73e7('0x7'));var rimraf=require('rimraf');var config=require(_0x73e7('0x8'));var attributes=require(_0x73e7('0x9'));module[_0x73e7('0xa')]=function(_0x5bfce4,_0x21dbb1){return _0x5bfce4[_0x73e7('0xb')]('Disposition',attributes,{'tableName':_0x73e7('0xc'),'paranoid':![],'indexes':[{'unique':!![],'name':_0x73e7('0xd'),'fields':[_0x73e7('0xe'),'ListId']},{'unique':!![],'name':_0x73e7('0xf'),'fields':[_0x73e7('0xe'),'ChatWebsiteId']},{'unique':!![],'name':_0x73e7('0x10'),'fields':[_0x73e7('0xe'),'MailAccountId']},{'unique':!![],'name':_0x73e7('0x11'),'fields':[_0x73e7('0xe'),_0x73e7('0x12')]},{'unique':!![],'name':_0x73e7('0x13'),'fields':[_0x73e7('0xe'),'FaxAccountId']},{'unique':!![],'name':_0x73e7('0x14'),'fields':['name',_0x73e7('0x15')]},{'unique':!![],'name':_0x73e7('0x16'),'fields':['name',_0x73e7('0x17')]}],'timestamps':!![]});};
\ No newline at end of file
index c48a35c..103a598 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(_0x4c26ae,_0x3bb4b5){var _0x1cee77=function(_0x208a82){while(--_0x208a82){_0x4c26ae['push'](_0x4c26ae['shift']());}};_0x1cee77(++_0x3bb4b5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0xa9e0[_0x37c22c];return _0x119d79;};'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(_0x27b155,_0x45ebb7){var _0x2c544b=function(_0x3fb216){while(--_0x3fb216){_0x27b155['push'](_0x27b155['shift']());}};_0x2c544b(++_0x45ebb7);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xa9e0[_0xf71120];return _0xbe2fd3;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var 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 00b6904..024ef1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4882=['put','update','destroy','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','./disposition.controller','index','get','/:id','isAuthenticated','show','post','create'];(function(_0x31b31b,_0x5f044e){var _0x2c8fc2=function(_0x5438aa){while(--_0x5438aa){_0x31b31b['push'](_0x31b31b['shift']());}};_0x2c8fc2(++_0x5f044e);}(_0x4882,0x19b));var _0x2488=function(_0x4a5e6b,_0x2911f7){_0x4a5e6b=_0x4a5e6b-0x0;var _0x313956=_0x4882[_0x4a5e6b];return _0x313956;};'use strict';var multer=require('multer');var util=require(_0x2488('0x0'));var path=require(_0x2488('0x1'));var timeout=require(_0x2488('0x2'));var express=require(_0x2488('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x2488('0x4'));var interaction=require(_0x2488('0x5'));var config=require('../../config/environment');var controller=require(_0x2488('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x2488('0x7')]);router[_0x2488('0x8')](_0x2488('0x9'),auth[_0x2488('0xa')](),controller[_0x2488('0xb')]);router[_0x2488('0xc')]('/',auth[_0x2488('0xa')](),controller[_0x2488('0xd')]);router[_0x2488('0xe')]('/:id',auth[_0x2488('0xa')](),controller[_0x2488('0xf')]);router['delete'](_0x2488('0x9'),auth[_0x2488('0xa')](),controller[_0x2488('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xa20f=['Router','fs-extra','../../components/auth/service','../../config/environment','./disposition.controller','get','isAuthenticated','index','/:id','show','post','create','update','delete','destroy','exports','path','connect-timeout','express'];(function(_0x3726f6,_0x5464ca){var _0xca73d3=function(_0x20f793){while(--_0x20f793){_0x3726f6['push'](_0x3726f6['shift']());}};_0xca73d3(++_0x5464ca);}(_0xa20f,0x107));var _0xfa20=function(_0x3e2ce6,_0x1e055c){_0x3e2ce6=_0x3e2ce6-0x0;var _0x4ccc1b=_0xa20f[_0x3e2ce6];return _0x4ccc1b;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xfa20('0x0'));var timeout=require(_0xfa20('0x1'));var express=require(_0xfa20('0x2'));var router=express[_0xfa20('0x3')]();var fs_extra=require(_0xfa20('0x4'));var auth=require(_0xfa20('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xfa20('0x6'));var controller=require(_0xfa20('0x7'));router[_0xfa20('0x8')]('/',auth[_0xfa20('0x9')](),controller[_0xfa20('0xa')]);router[_0xfa20('0x8')](_0xfa20('0xb'),auth[_0xfa20('0x9')](),controller[_0xfa20('0xc')]);router[_0xfa20('0xd')]('/',auth[_0xfa20('0x9')](),controller[_0xfa20('0xe')]);router['put'](_0xfa20('0xb'),auth[_0xfa20('0x9')](),controller[_0xfa20('0xf')]);router[_0xfa20('0x10')]('/:id',auth['isAuthenticated'](),controller[_0xfa20('0x11')]);module[_0xfa20('0x12')]=router;
\ No newline at end of file
index e130e43..549a7fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb647=['SIP','IAX','DADHI','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','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','sequelize','exports','STRING','ENUM','yes','2400','4800','7200','9600','12000','14400','INTEGER'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0xb647,0xdb));var _0x7b64=function(_0x2865d1,_0x9301c7){_0x2865d1=_0x2865d1-0x0;var _0x45ef75=_0xb647[_0x2865d1];return _0x45ef75;};'use strict';var Sequelize=require(_0x7b64('0x0'));module[_0x7b64('0x1')]={'name':{'type':Sequelize[_0x7b64('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x7b64('0x2')]},'ecm':{'type':Sequelize[_0x7b64('0x3')](_0x7b64('0x4'),'no'),'defaultValue':_0x7b64('0x4')},'headerinfo':{'type':Sequelize[_0x7b64('0x2')],'defaultValue':'xCALLY\x20Motion\x20Fax'},'localstationid':{'type':Sequelize[_0x7b64('0x2')],'unique':'localstationid'},'minrate':{'type':Sequelize[_0x7b64('0x3')](_0x7b64('0x5'),_0x7b64('0x6'),_0x7b64('0x7'),_0x7b64('0x8'),_0x7b64('0x9'),_0x7b64('0xa')),'defaultValue':_0x7b64('0x6')},'maxrate':{'type':Sequelize[_0x7b64('0x3')]('2400',_0x7b64('0x6'),'7200',_0x7b64('0x8'),'12000','14400'),'defaultValue':_0x7b64('0xa')},'modem':{'type':Sequelize[_0x7b64('0x2')],'defaultValue':'v17,v27,v29'},'gateway':{'type':Sequelize[_0x7b64('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x7b64('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x7b64('0xb')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x7b64('0x3')](_0x7b64('0xc'),_0x7b64('0xd'),_0x7b64('0xe'),'KHOMP'),'defaultValue':_0x7b64('0xc')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x7b64('0xf');}},'notificationSound':{'type':Sequelize[_0x7b64('0x10')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x7b64('0x10')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x7b64('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x7b64('0x10')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x7b64('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x7b64('0x10')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x7b64('0xb')],'allowNull':!![],'defaultValue':null,'comment':_0x7b64('0x11')},'mandatoryDisposition':{'type':Sequelize[_0x7b64('0x10')],'defaultValue':![],'comment':_0x7b64('0x12'),'set':function(_0x157c03){if(!_0x157c03)this['setDataValue'](_0x7b64('0x13'),null);this[_0x7b64('0x14')]('mandatoryDisposition',_0x157c03);}}};
\ No newline at end of file
+var _0x85d4=['9600','12000','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','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition','sequelize','exports','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','2400','4800','7200'];(function(_0x550d4e,_0x2226d7){var _0x310558=function(_0x3db812){while(--_0x3db812){_0x550d4e['push'](_0x550d4e['shift']());}};_0x310558(++_0x2226d7);}(_0x85d4,0x12f));var _0x485d=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0x85d4[_0x5f1391];return _0x50ebe3;};'use strict';var Sequelize=require(_0x485d('0x0'));module[_0x485d('0x1')]={'name':{'type':Sequelize[_0x485d('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x485d('0x2')]},'ecm':{'type':Sequelize[_0x485d('0x3')](_0x485d('0x4'),'no'),'defaultValue':_0x485d('0x4')},'headerinfo':{'type':Sequelize[_0x485d('0x2')],'defaultValue':_0x485d('0x5')},'localstationid':{'type':Sequelize[_0x485d('0x2')],'unique':'localstationid'},'minrate':{'type':Sequelize[_0x485d('0x3')](_0x485d('0x6'),_0x485d('0x7'),_0x485d('0x8'),_0x485d('0x9'),_0x485d('0xa'),_0x485d('0xb')),'defaultValue':_0x485d('0x7')},'maxrate':{'type':Sequelize[_0x485d('0x3')]('2400',_0x485d('0x7'),_0x485d('0x8'),'9600',_0x485d('0xa'),_0x485d('0xb')),'defaultValue':_0x485d('0xb')},'modem':{'type':Sequelize[_0x485d('0x2')],'defaultValue':_0x485d('0xc')},'gateway':{'type':Sequelize[_0x485d('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x485d('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x485d('0xd')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x485d('0x3')](_0x485d('0xe'),'IAX','DADHI',_0x485d('0xf')),'defaultValue':_0x485d('0xe')},'key':{'type':Sequelize[_0x485d('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x485d('0x10')],'defaultValue':function(){return _0x485d('0x11');}},'notificationSound':{'type':Sequelize[_0x485d('0x12')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x485d('0x12')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x485d('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x485d('0x12')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x485d('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x485d('0x12')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x485d('0xd')],'allowNull':!![],'defaultValue':null,'comment':_0x485d('0x13')},'mandatoryDisposition':{'type':Sequelize[_0x485d('0x12')],'defaultValue':![],'comment':_0x485d('0x14'),'set':function(_0x1d4fa5){if(!_0x1d4fa5)this['setDataValue'](_0x485d('0x15'),null);this[_0x485d('0x16')](_0x485d('0x17'),_0x1d4fa5);}}};
\ No newline at end of file
index 9f54ad7..8b7a364 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f00=['removeAgents','emit','userFaxAccount:remove','getAgents','User','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','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/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./faxAccount.socket','jayson/promise','client','http','info','FaxAccount,\x20%s,\x20%s','request\x20sent','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','destroy','get','FaxAccounts','name','send','Pause','mandatoryDispositionPause','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','rows','FaxAccount','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','FaxAccountId','Disposition','findAll','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findOne','removeAnswers','addInteraction','FaxInteraction','getInteractions','CmContact','Contact','Owner','fullname','internal','Tag','Tags','color','tag','addApplications','sequelize','Transaction','READ_COMMITTED','FaxApplication','bulkCreate','findAndCountAll','stack','getApplications','context','from-voip-provider','exten','localstationid','app','description','Fax\x20Extension','appdata','push','Answer','CDR(type)=inbound-fax','Set','ecm','faxdetect','headerinfo','minrate','modem','t38timeout','FAXOPT(','Wait','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','addAccountApplications','transaction','VoiceExtension','updateAccountApplications','tech','createdAt','TrunkId','findById','getMessages','$gte','split','format','FaxMessage','CmList','List','DESC','attachments','join','server/files/attachments','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','Contacts','ListId','Send\x20Fax\x20failed','out','filename','Messages','Contact\x20not\x20found','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','omit','spread','userFaxAccount:save'];(function(_0x1def81,_0x4b6bd5){var _0xc3dcae=function(_0xed0b3){while(--_0xed0b3){_0x1def81['push'](_0x1def81['shift']());}};_0xc3dcae(++_0x4b6bd5);}(_0x2f00,0x193));var _0x02f0=function(_0x3baaed,_0xa8994c){_0x3baaed=_0x3baaed-0x0;var _0x1f3d6b=_0x2f00[_0x3baaed];return _0x1f3d6b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x02f0('0x0'));var zipdir=require(_0x02f0('0x1'));var jsonpatch=require(_0x02f0('0x2'));var rp=require(_0x02f0('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x02f0('0x4'));var util=require(_0x02f0('0x5'));var path=require(_0x02f0('0x6'));var sox=require(_0x02f0('0x7'));var csv=require(_0x02f0('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x02f0('0x9'));var _=require(_0x02f0('0xa'));var squel=require(_0x02f0('0xb'));var crypto=require(_0x02f0('0xc'));var jsforce=require(_0x02f0('0xd'));var deskjs=require(_0x02f0('0xe'));var toCsv=require('to-csv');var querystring=require(_0x02f0('0xf'));var Papa=require(_0x02f0('0x10'));var Redis=require('ioredis');var authService=require(_0x02f0('0x11'));var qs=require(_0x02f0('0x12'));var as=require(_0x02f0('0x13'));var hardwareService=require(_0x02f0('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x02f0('0x15'));var config=require(_0x02f0('0x16'));var licenseUtil=require(_0x02f0('0x17'));var db=require(_0x02f0('0x18'))['db'];config[_0x02f0('0x19')]=_[_0x02f0('0x1a')](config[_0x02f0('0x19')],{'host':_0x02f0('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x02f0('0x19')]));require(_0x02f0('0x1c'))['register'](socket);var jayson=require(_0x02f0('0x1d'));var client=jayson[_0x02f0('0x1e')][_0x02f0('0x1f')]({'port':0x232c});var client9002=jayson['client'][_0x02f0('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x1fca1b,_0x23bb0a,_0x558c0a,_0x45ba6f){return new BPromise(function(_0x14d1e6,_0x436837){var _0x41f601=_0x45ba6f||client;return _0x41f601['request'](_0x1fca1b,_0x558c0a)['then'](function(_0x1f076b){logger[_0x02f0('0x20')](_0x02f0('0x21'),_0x23bb0a,_0x02f0('0x22'));logger['debug'](_0x02f0('0x23'),_0x23bb0a,_0x02f0('0x22'),JSON[_0x02f0('0x24')](_0x1f076b));if(_0x1f076b[_0x02f0('0x25')]){if(_0x1f076b[_0x02f0('0x25')][_0x02f0('0x26')]===0x1f4){logger[_0x02f0('0x25')](_0x02f0('0x21'),_0x23bb0a,_0x1f076b[_0x02f0('0x25')][_0x02f0('0x27')]);return _0x436837(_0x1f076b[_0x02f0('0x25')][_0x02f0('0x27')]);}logger[_0x02f0('0x25')](_0x02f0('0x21'),_0x23bb0a,_0x1f076b[_0x02f0('0x25')]['message']);return _0x14d1e6(_0x1f076b[_0x02f0('0x25')]['message']);}else{logger[_0x02f0('0x20')](_0x02f0('0x21'),_0x23bb0a,_0x02f0('0x22'));_0x14d1e6(_0x1f076b[_0x02f0('0x28')][_0x02f0('0x27')]);}})[_0x02f0('0x29')](function(_0x1e7668){logger[_0x02f0('0x25')](_0x02f0('0x21'),_0x23bb0a,_0x1e7668);_0x436837(_0x1e7668);});});}function respondWithStatusCode(_0xe2112,_0x8936e7){_0x8936e7=_0x8936e7||0xcc;return function(_0x4c5cd7){if(_0x4c5cd7){return _0xe2112[_0x02f0('0x2a')](_0x8936e7);}return _0xe2112[_0x02f0('0x2b')](_0x8936e7)[_0x02f0('0x2c')]();};}function respondWithResult(_0xaa0d2d,_0xacb2d1){_0xacb2d1=_0xacb2d1||0xc8;return function(_0xeeeb97){if(_0xeeeb97){return _0xaa0d2d[_0x02f0('0x2b')](_0xacb2d1)[_0x02f0('0x2d')](_0xeeeb97);}};}function respondWithFilteredResult(_0x2efc38,_0x3943d1){return function(_0x3d77f5){if(_0x3d77f5){var _0x57f2d0=typeof _0x3943d1[_0x02f0('0x2e')]==='undefined'&&typeof _0x3943d1[_0x02f0('0x2f')]===_0x02f0('0x30');var _0x46642a=_0x3d77f5[_0x02f0('0x31')];var _0x1e89cf=_0x57f2d0?0x0:_0x3943d1[_0x02f0('0x2e')];var _0x4b661a=_0x57f2d0?_0x3d77f5[_0x02f0('0x31')]:_0x3943d1[_0x02f0('0x2e')]+_0x3943d1['limit'];var _0x45f889;if(_0x4b661a>=_0x46642a){_0x4b661a=_0x46642a;_0x45f889=0xc8;}else{_0x45f889=0xce;}_0x2efc38[_0x02f0('0x2b')](_0x45f889);return _0x2efc38[_0x02f0('0x32')](_0x02f0('0x33'),_0x1e89cf+'-'+_0x4b661a+'/'+_0x46642a)['json'](_0x3d77f5);}return null;};}function patchUpdates(_0x3e5505){return function(_0x4aaf6e){try{jsonpatch[_0x02f0('0x34')](_0x4aaf6e,_0x3e5505,!![]);}catch(_0x159dcf){return BPromise[_0x02f0('0x35')](_0x159dcf);}return _0x4aaf6e['save']();};}function saveUpdates(_0x55e450,_0x3f641c){return function(_0x2b3bf0){if(_0x2b3bf0){return _0x2b3bf0[_0x02f0('0x36')](_0x55e450)[_0x02f0('0x37')](function(_0x21a264){return _0x21a264;});}return null;};}function removeEntity(_0x57af88,_0x2afcfd){return function(_0x38dfb5){if(_0x38dfb5){return _0x38dfb5[_0x02f0('0x38')]()[_0x02f0('0x37')](function(){var _0x5bda1b=_0x38dfb5[_0x02f0('0x39')]({'plain':!![]});var _0x27f0a0=_0x02f0('0x3a');return db['UserProfileResource'][_0x02f0('0x38')]({'where':{'type':_0x27f0a0,'resourceId':_0x5bda1b['id']}})[_0x02f0('0x37')](function(){return _0x38dfb5;});})[_0x02f0('0x37')](function(){_0x57af88['status'](0xcc)[_0x02f0('0x2c')]();});}};}function handleEntityNotFound(_0xf3142a,_0x5110c6){return function(_0x3c560b){if(!_0x3c560b){_0xf3142a[_0x02f0('0x2a')](0x194);}return _0x3c560b;};}function handleError(_0x300105,_0x4d5d7f){_0x4d5d7f=_0x4d5d7f||0x1f4;return function(_0x961cce){logger[_0x02f0('0x25')](_0x961cce['stack']);if(_0x961cce[_0x02f0('0x3b')]){delete _0x961cce[_0x02f0('0x3b')];}_0x300105[_0x02f0('0x2b')](_0x4d5d7f)[_0x02f0('0x3c')](_0x961cce);};}exports['index']=function(_0x4be4c7,_0x352bec){var _0x4a82dc={'include':[{'model':db[_0x02f0('0x3d')],'as':_0x02f0('0x3e')}]},_0x20460c={},_0x1fbbf2={'count':0x0,'rows':[]};var _0x1d5348=_['map'](db['FaxAccount'][_0x02f0('0x3f')],function(_0xf0abb5){return{'name':_0xf0abb5[_0x02f0('0x40')],'type':_0xf0abb5['type'][_0x02f0('0x41')]};});_0x20460c[_0x02f0('0x42')]=_[_0x02f0('0x43')](_0x1d5348,_0x02f0('0x3b'));_0x20460c[_0x02f0('0x44')]=_[_0x02f0('0x45')](_0x4be4c7[_0x02f0('0x44')]);_0x20460c[_0x02f0('0x46')]=_[_0x02f0('0x47')](_0x20460c[_0x02f0('0x42')],_0x20460c[_0x02f0('0x44')]);_0x4a82dc[_0x02f0('0x48')]=_[_0x02f0('0x47')](_0x20460c[_0x02f0('0x42')],qs[_0x02f0('0x49')](_0x4be4c7[_0x02f0('0x44')][_0x02f0('0x49')]));_0x4a82dc[_0x02f0('0x48')]=_0x4a82dc['attributes']['length']?_0x4a82dc[_0x02f0('0x48')]:_0x20460c[_0x02f0('0x42')];if(!_0x4be4c7[_0x02f0('0x44')][_0x02f0('0x4a')](_0x02f0('0x4b'))){_0x4a82dc[_0x02f0('0x2f')]=qs[_0x02f0('0x2f')](_0x4be4c7['query'][_0x02f0('0x2f')]);_0x4a82dc[_0x02f0('0x2e')]=qs[_0x02f0('0x2e')](_0x4be4c7[_0x02f0('0x44')][_0x02f0('0x2e')]);}_0x4a82dc[_0x02f0('0x4c')]=qs[_0x02f0('0x4d')](_0x4be4c7[_0x02f0('0x44')][_0x02f0('0x4d')]);_0x4a82dc[_0x02f0('0x4e')]=qs[_0x02f0('0x46')](_[_0x02f0('0x4f')](_0x4be4c7[_0x02f0('0x44')],_0x20460c[_0x02f0('0x46')]),_0x1d5348);if(_0x4be4c7['query'][_0x02f0('0x50')]){_0x4a82dc[_0x02f0('0x4e')]=_[_0x02f0('0x51')](_0x4a82dc[_0x02f0('0x4e')],{'$or':_[_0x02f0('0x43')](_0x1d5348,function(_0x25abbc){if(_0x25abbc[_0x02f0('0x52')]!==_0x02f0('0x53')){var _0x434fee={};_0x434fee[_0x25abbc[_0x02f0('0x3b')]]={'$like':'%'+_0x4be4c7['query']['filter']+'%'};return _0x434fee;}})});}_0x4a82dc=_[_0x02f0('0x51')]({},_0x4a82dc,_0x4be4c7[_0x02f0('0x54')]);var _0x4ee582={'where':_0x4a82dc[_0x02f0('0x4e')]};return db['FaxAccount'][_0x02f0('0x31')](_0x4ee582)['then'](function(_0x4e1a78){_0x1fbbf2[_0x02f0('0x31')]=_0x4e1a78;if(_0x4be4c7[_0x02f0('0x44')][_0x02f0('0x55')]){_0x4a82dc[_0x02f0('0x56')]=[{'all':!![]}];}return db['FaxAccount']['findAll'](_0x4a82dc);})['then'](function(_0x16c4ea){_0x1fbbf2[_0x02f0('0x57')]=_0x16c4ea;return _0x1fbbf2;})[_0x02f0('0x37')](respondWithFilteredResult(_0x352bec,_0x4a82dc))['catch'](handleError(_0x352bec,null));};exports['show']=function(_0x53d9a2,_0xba5b65){var _0x18b8fb={'raw':![],'where':{'id':_0x53d9a2['params']['id']},'include':[{'model':db[_0x02f0('0x3d')],'as':_0x02f0('0x3e')}]},_0x59a665={};_0x59a665[_0x02f0('0x42')]=_['keys'](db[_0x02f0('0x58')][_0x02f0('0x3f')]);_0x59a665[_0x02f0('0x44')]=_['keys'](_0x53d9a2['query']);_0x59a665['filters']=_['intersection'](_0x59a665['model'],_0x59a665['query']);_0x18b8fb['attributes']=_['intersection'](_0x59a665[_0x02f0('0x42')],qs['fields'](_0x53d9a2[_0x02f0('0x44')][_0x02f0('0x49')]));_0x18b8fb['attributes']=_0x18b8fb[_0x02f0('0x48')][_0x02f0('0x59')]?_0x18b8fb[_0x02f0('0x48')]:_0x59a665[_0x02f0('0x42')];if(_0x53d9a2[_0x02f0('0x44')]['includeAll']){_0x18b8fb[_0x02f0('0x56')]=[{'all':!![]}];}_0x18b8fb=_['merge']({},_0x18b8fb,_0x53d9a2[_0x02f0('0x54')]);return db[_0x02f0('0x58')][_0x02f0('0x5a')](_0x18b8fb)[_0x02f0('0x37')](handleEntityNotFound(_0xba5b65,null))[_0x02f0('0x37')](respondWithResult(_0xba5b65,null))[_0x02f0('0x29')](handleError(_0xba5b65,null));};exports['create']=function(_0x58a3ed,_0x1041b4){return db[_0x02f0('0x58')][_0x02f0('0x5b')](_0x58a3ed[_0x02f0('0x5c')],{})[_0x02f0('0x37')](function(_0x202a10){var _0x567214=_0x58a3ed[_0x02f0('0x5d')][_0x02f0('0x39')]({'plain':!![]});if(!_0x567214)throw new Error(_0x02f0('0x5e'));if(_0x567214[_0x02f0('0x5f')]===_0x02f0('0x5d')){var _0x542cb9=_0x202a10[_0x02f0('0x39')]({'plain':!![]});var _0x38533a=_0x02f0('0x3a');return db[_0x02f0('0x60')][_0x02f0('0x5a')]({'where':{'name':_0x38533a,'userProfileId':_0x567214['userProfileId']},'raw':!![]})[_0x02f0('0x37')](function(_0xd7af3d){if(_0xd7af3d&&_0xd7af3d[_0x02f0('0x61')]===0x0){return db['UserProfileResource'][_0x02f0('0x5b')]({'name':_0x542cb9[_0x02f0('0x3b')],'resourceId':_0x542cb9['id'],'type':_0xd7af3d[_0x02f0('0x3b')],'sectionId':_0xd7af3d['id']},{})[_0x02f0('0x37')](function(){return _0x202a10;});}else{return _0x202a10;}})['catch'](function(_0x12382){logger[_0x02f0('0x25')](_0x02f0('0x62'),_0x12382);throw _0x12382;});}return _0x202a10;})[_0x02f0('0x37')](respondWithResult(_0x1041b4,0xc9))[_0x02f0('0x29')](handleError(_0x1041b4,null));};exports[_0x02f0('0x36')]=function(_0x492f60,_0x59ecc7){if(_0x492f60[_0x02f0('0x5c')]['id']){delete _0x492f60[_0x02f0('0x5c')]['id'];}return db[_0x02f0('0x58')][_0x02f0('0x5a')]({'where':{'id':_0x492f60['params']['id']},'include':[{'model':db['Pause'],'as':_0x02f0('0x3e')}]})[_0x02f0('0x37')](handleEntityNotFound(_0x59ecc7,null))[_0x02f0('0x37')](saveUpdates(_0x492f60['body'],null))[_0x02f0('0x37')](respondWithResult(_0x59ecc7,null))[_0x02f0('0x29')](handleError(_0x59ecc7,null));};exports[_0x02f0('0x38')]=function(_0x586615,_0x1d4d25){return db['FaxAccount'][_0x02f0('0x5a')]({'where':{'id':_0x586615[_0x02f0('0x63')]['id']}})[_0x02f0('0x37')](handleEntityNotFound(_0x1d4d25,null))['then'](removeEntity(_0x1d4d25,null))[_0x02f0('0x29')](handleError(_0x1d4d25,null));};exports['describe']=function(_0x299d56,_0x4ac42a){return db[_0x02f0('0x58')][_0x02f0('0x64')]()[_0x02f0('0x37')](respondWithResult(_0x4ac42a,null))[_0x02f0('0x29')](handleError(_0x4ac42a,null));};exports[_0x02f0('0x65')]=function(_0x467bd8,_0x354961,_0x241f68){if(_0x467bd8[_0x02f0('0x5c')]['id']){delete _0x467bd8[_0x02f0('0x5c')]['id'];}return db[_0x02f0('0x58')][_0x02f0('0x5a')]({'where':{'id':_0x467bd8[_0x02f0('0x63')]['id']}})[_0x02f0('0x37')](handleEntityNotFound(_0x354961,null))[_0x02f0('0x37')](function(_0x2e3e76){if(_0x2e3e76){_0x467bd8['body'][_0x02f0('0x66')]=_0x2e3e76['id'];return db[_0x02f0('0x67')][_0x02f0('0x5b')](_0x467bd8[_0x02f0('0x5c')]);}})[_0x02f0('0x37')](respondWithResult(_0x354961,null))[_0x02f0('0x29')](handleError(_0x354961,null));};exports['getDispositions']=function(_0x14c39f,_0xd9216e,_0x603e6d){var _0x29dce7={'raw':![],'where':{}};var _0x5c6716={};var _0x4210ef={'count':0x0,'rows':[]};return db[_0x02f0('0x58')]['findOne']({'where':{'id':_0x14c39f[_0x02f0('0x63')]['id']}})[_0x02f0('0x37')](handleEntityNotFound(_0xd9216e,null))[_0x02f0('0x37')](function(_0x1aea09){if(_0x1aea09){_0x5c6716[_0x02f0('0x42')]=_[_0x02f0('0x45')](db[_0x02f0('0x67')][_0x02f0('0x3f')]);_0x5c6716[_0x02f0('0x44')]=_[_0x02f0('0x45')](_0x14c39f[_0x02f0('0x44')]);_0x5c6716[_0x02f0('0x46')]=_['intersection'](_0x5c6716['model'],_0x5c6716[_0x02f0('0x44')]);_0x29dce7[_0x02f0('0x48')]=_[_0x02f0('0x47')](_0x5c6716[_0x02f0('0x42')],qs['fields'](_0x14c39f[_0x02f0('0x44')][_0x02f0('0x49')]));_0x29dce7[_0x02f0('0x48')]=_0x29dce7[_0x02f0('0x48')]['length']?_0x29dce7['attributes']:_0x5c6716[_0x02f0('0x42')];if(!_0x14c39f[_0x02f0('0x44')][_0x02f0('0x4a')]('nolimit')){_0x29dce7[_0x02f0('0x2f')]=qs[_0x02f0('0x2f')](_0x14c39f[_0x02f0('0x44')][_0x02f0('0x2f')]);_0x29dce7[_0x02f0('0x2e')]=qs[_0x02f0('0x2e')](_0x14c39f[_0x02f0('0x44')]['offset']);}_0x29dce7[_0x02f0('0x4c')]=qs[_0x02f0('0x4d')](_0x14c39f[_0x02f0('0x44')][_0x02f0('0x4d')]);_0x29dce7[_0x02f0('0x4e')]=qs[_0x02f0('0x46')](_[_0x02f0('0x4f')](_0x14c39f[_0x02f0('0x44')],_0x5c6716[_0x02f0('0x46')]));_0x29dce7['where'][_0x02f0('0x66')]=_0x1aea09['id'];if(_0x14c39f[_0x02f0('0x44')][_0x02f0('0x50')]){_0x29dce7[_0x02f0('0x4e')]=_[_0x02f0('0x51')](_0x29dce7['where'],{'$or':_[_0x02f0('0x43')](_0x29dce7[_0x02f0('0x48')],function(_0x9496bf){var _0x554d40={};_0x554d40[_0x9496bf]={'$like':'%'+_0x14c39f[_0x02f0('0x44')][_0x02f0('0x50')]+'%'};return _0x554d40;})});}_0x29dce7=_[_0x02f0('0x51')]({},_0x29dce7,_0x14c39f[_0x02f0('0x54')]);return db['Disposition'][_0x02f0('0x31')]({'where':_0x29dce7['where']})[_0x02f0('0x37')](function(_0x39921b){_0x4210ef[_0x02f0('0x31')]=_0x39921b;if(_0x14c39f[_0x02f0('0x44')][_0x02f0('0x55')]){_0x29dce7['include']=[{'all':!![]}];}return db[_0x02f0('0x67')][_0x02f0('0x68')](_0x29dce7);})['then'](function(_0x584a08){_0x4210ef[_0x02f0('0x57')]=_0x584a08;return _0x4210ef;});}})['then'](respondWithFilteredResult(_0xd9216e,_0x29dce7))[_0x02f0('0x29')](handleError(_0xd9216e,null));};exports[_0x02f0('0x69')]=function(_0x494e8a,_0x2f1cec,_0x43ffa5){return db[_0x02f0('0x58')][_0x02f0('0x5a')]({'where':{'id':_0x494e8a[_0x02f0('0x63')]['id']}})[_0x02f0('0x37')](handleEntityNotFound(_0x2f1cec,null))[_0x02f0('0x37')](function(_0x59bfa8){if(_0x59bfa8){return _0x59bfa8['removeDispositions'](_0x494e8a[_0x02f0('0x44')][_0x02f0('0x6a')]);}})[_0x02f0('0x37')](respondWithStatusCode(_0x2f1cec,null))[_0x02f0('0x29')](handleError(_0x2f1cec,null));};exports[_0x02f0('0x6b')]=function(_0x40f66d,_0x1c412d,_0x5be9f7){if(_0x40f66d[_0x02f0('0x5c')]['id']){delete _0x40f66d['body']['id'];}return db['FaxAccount'][_0x02f0('0x5a')]({'where':{'id':_0x40f66d[_0x02f0('0x63')]['id']}})[_0x02f0('0x37')](handleEntityNotFound(_0x1c412d,null))[_0x02f0('0x37')](function(_0x2241f8){if(_0x2241f8){_0x40f66d['body'][_0x02f0('0x66')]=_0x2241f8['id'];return db[_0x02f0('0x6c')][_0x02f0('0x5b')](_0x40f66d['body']);}})[_0x02f0('0x37')](respondWithResult(_0x1c412d,null))['catch'](handleError(_0x1c412d,null));};exports[_0x02f0('0x6d')]=function(_0x3d3546,_0x47c7ab,_0x3d8956){var _0xb2998c={'raw':![],'where':{}};var _0x11d28a={};var _0x23fc65={'count':0x0,'rows':[]};return db['FaxAccount'][_0x02f0('0x6e')]({'where':{'id':_0x3d3546[_0x02f0('0x63')]['id']}})['then'](handleEntityNotFound(_0x47c7ab,null))['then'](function(_0x5256ff){if(_0x5256ff){_0x11d28a[_0x02f0('0x42')]=_[_0x02f0('0x45')](db[_0x02f0('0x6c')][_0x02f0('0x3f')]);_0x11d28a[_0x02f0('0x44')]=_['keys'](_0x3d3546[_0x02f0('0x44')]);_0x11d28a['filters']=_[_0x02f0('0x47')](_0x11d28a['model'],_0x11d28a['query']);_0xb2998c['attributes']=_[_0x02f0('0x47')](_0x11d28a[_0x02f0('0x42')],qs[_0x02f0('0x49')](_0x3d3546[_0x02f0('0x44')][_0x02f0('0x49')]));_0xb2998c[_0x02f0('0x48')]=_0xb2998c[_0x02f0('0x48')]['length']?_0xb2998c['attributes']:_0x11d28a[_0x02f0('0x42')];if(!_0x3d3546[_0x02f0('0x44')][_0x02f0('0x4a')](_0x02f0('0x4b'))){_0xb2998c[_0x02f0('0x2f')]=qs[_0x02f0('0x2f')](_0x3d3546[_0x02f0('0x44')][_0x02f0('0x2f')]);_0xb2998c[_0x02f0('0x2e')]=qs[_0x02f0('0x2e')](_0x3d3546[_0x02f0('0x44')][_0x02f0('0x2e')]);}_0xb2998c[_0x02f0('0x4c')]=qs[_0x02f0('0x4d')](_0x3d3546['query'][_0x02f0('0x4d')]);_0xb2998c[_0x02f0('0x4e')]=qs[_0x02f0('0x46')](_[_0x02f0('0x4f')](_0x3d3546[_0x02f0('0x44')],_0x11d28a[_0x02f0('0x46')]));_0xb2998c[_0x02f0('0x4e')]['FaxAccountId']=_0x5256ff['id'];if(_0x3d3546[_0x02f0('0x44')]['filter']){_0xb2998c['where']=_[_0x02f0('0x51')](_0xb2998c[_0x02f0('0x4e')],{'$or':_[_0x02f0('0x43')](_0xb2998c['attributes'],function(_0x27bf8c){var _0x2896f8={};_0x2896f8[_0x27bf8c]={'$like':'%'+_0x3d3546[_0x02f0('0x44')][_0x02f0('0x50')]+'%'};return _0x2896f8;})});}_0xb2998c=_[_0x02f0('0x51')]({},_0xb2998c,_0x3d3546[_0x02f0('0x54')]);return db[_0x02f0('0x6c')][_0x02f0('0x31')]({'where':_0xb2998c['where']})[_0x02f0('0x37')](function(_0x59d85e){_0x23fc65[_0x02f0('0x31')]=_0x59d85e;if(_0x3d3546[_0x02f0('0x44')][_0x02f0('0x55')]){_0xb2998c[_0x02f0('0x56')]=[{'all':!![]}];}return db[_0x02f0('0x6c')][_0x02f0('0x68')](_0xb2998c);})[_0x02f0('0x37')](function(_0x222c77){_0x23fc65['rows']=_0x222c77;return _0x23fc65;});}})[_0x02f0('0x37')](respondWithFilteredResult(_0x47c7ab,_0xb2998c))[_0x02f0('0x29')](handleError(_0x47c7ab,null));};exports[_0x02f0('0x6f')]=function(_0x284d90,_0x243b90,_0x15b10b){return db[_0x02f0('0x58')][_0x02f0('0x5a')]({'where':{'id':_0x284d90[_0x02f0('0x63')]['id']}})[_0x02f0('0x37')](handleEntityNotFound(_0x243b90,null))[_0x02f0('0x37')](function(_0x4800b3){if(_0x4800b3){return _0x4800b3[_0x02f0('0x6f')](_0x284d90[_0x02f0('0x44')]['ids']);}})['then'](respondWithStatusCode(_0x243b90,null))[_0x02f0('0x29')](handleError(_0x243b90,null));};exports[_0x02f0('0x70')]=function(_0x118383,_0x26a04f,_0x17e7cf){return db[_0x02f0('0x71')]['find']({'where':{'id':_0x118383[_0x02f0('0x63')]['id']}})[_0x02f0('0x37')](handleEntityNotFound(_0x26a04f,null))[_0x02f0('0x37')](function(_0x3a8e7e){if(_0x3a8e7e){return _0x3a8e7e['addInteraction'](_0x118383[_0x02f0('0x5c')][_0x02f0('0x6a')],_['omit'](_0x118383['body'],['ids','id'])||{});}})[_0x02f0('0x37')](respondWithResult(_0x26a04f,null))['catch'](handleError(_0x26a04f,null));};exports[_0x02f0('0x72')]=function(_0x278a12,_0x47991d,_0x2dae4a){var _0x507cea={'raw':![],'where':{}};var _0x157504={};var _0x5665b3={'count':0x0,'rows':[]};return db['FaxAccount']['findOne']({'where':{'id':_0x278a12[_0x02f0('0x63')]['id']}})['then'](handleEntityNotFound(_0x47991d,null))[_0x02f0('0x37')](function(_0x57307d){if(_0x57307d){_0x157504[_0x02f0('0x42')]=_[_0x02f0('0x45')](db[_0x02f0('0x71')]['rawAttributes']);_0x157504['query']=_['keys'](_0x278a12[_0x02f0('0x44')]);_0x157504[_0x02f0('0x46')]=_[_0x02f0('0x47')](_0x157504[_0x02f0('0x42')],_0x157504[_0x02f0('0x44')]);_0x507cea[_0x02f0('0x48')]=_[_0x02f0('0x47')](_0x157504[_0x02f0('0x42')],qs[_0x02f0('0x49')](_0x278a12[_0x02f0('0x44')]['fields']));_0x507cea[_0x02f0('0x48')]=_0x507cea['attributes']['length']?_0x507cea[_0x02f0('0x48')]:_0x157504[_0x02f0('0x42')];if(!_0x278a12[_0x02f0('0x44')][_0x02f0('0x4a')](_0x02f0('0x4b'))){_0x507cea['limit']=qs[_0x02f0('0x2f')](_0x278a12[_0x02f0('0x44')][_0x02f0('0x2f')]);_0x507cea[_0x02f0('0x2e')]=qs[_0x02f0('0x2e')](_0x278a12['query'][_0x02f0('0x2e')]);}_0x507cea[_0x02f0('0x4c')]=qs['sort'](_0x278a12['query'][_0x02f0('0x4d')]);_0x507cea[_0x02f0('0x4e')]=qs[_0x02f0('0x46')](_[_0x02f0('0x4f')](_0x278a12['query'],_0x157504[_0x02f0('0x46')]));_0x507cea[_0x02f0('0x4e')][_0x02f0('0x66')]=_0x57307d['id'];if(_0x278a12[_0x02f0('0x44')][_0x02f0('0x50')]){_0x507cea[_0x02f0('0x4e')]=_[_0x02f0('0x51')](_0x507cea[_0x02f0('0x4e')],{'$or':_[_0x02f0('0x43')](_0x507cea[_0x02f0('0x48')],function(_0x3c278a){var _0x34d0c3={};_0x34d0c3[_0x3c278a]={'$like':'%'+_0x278a12[_0x02f0('0x44')]['filter']+'%'};return _0x34d0c3;})});}_0x507cea=_[_0x02f0('0x51')]({},_0x507cea,_0x278a12['options']);return db['FaxInteraction']['count']({'where':_0x507cea[_0x02f0('0x4e')]})[_0x02f0('0x37')](function(_0x25bdcd){_0x5665b3[_0x02f0('0x31')]=_0x25bdcd;if(_0x278a12[_0x02f0('0x44')]['includeAll']){_0x507cea['include']=[{'model':db[_0x02f0('0x73')],'as':_0x02f0('0x74'),'required':![]},{'model':db['User'],'as':_0x02f0('0x75'),'attributes':[_0x02f0('0x3b'),_0x02f0('0x76'),_0x02f0('0x77')],'required':![]},{'model':db[_0x02f0('0x78')],'as':_0x02f0('0x79'),'attributes':['id',_0x02f0('0x3b'),_0x02f0('0x7a')],'where':_0x278a12['query'][_0x02f0('0x7b')]?{'id':_0x278a12[_0x02f0('0x44')][_0x02f0('0x7b')]}:undefined,'required':_0x278a12[_0x02f0('0x44')][_0x02f0('0x7b')]?!![]:![]}];}return db['FaxInteraction']['findAll'](_0x507cea);})[_0x02f0('0x37')](function(_0x428783){_0x5665b3['rows']=_0x428783;return _0x5665b3;});}})[_0x02f0('0x37')](respondWithFilteredResult(_0x47991d,_0x507cea))[_0x02f0('0x29')](handleError(_0x47991d,null));};exports[_0x02f0('0x7c')]=function(_0x164178,_0x56a1fc){var _0x22a3db=_0x164178[_0x02f0('0x63')]['id'];var _0x397e92=_0x164178[_0x02f0('0x5c')];var _0x385657=0xc8;var _0x78b766=null;return db[_0x02f0('0x7d')]['transaction']({'isolationLevel':db[_0x02f0('0x7d')][_0x02f0('0x7e')]['ISOLATION_LEVELS'][_0x02f0('0x7f')]},function(_0x1ef9c1){return db[_0x02f0('0x58')]['findOne']({'where':{'id':_0x22a3db},'transaction':_0x1ef9c1})['then'](function(_0xb687a4){if(_0xb687a4){return db[_0x02f0('0x80')]['destroy']({'where':{'FaxAccountId':_0x22a3db},'transaction':_0x1ef9c1})[_0x02f0('0x37')](function(){var _0x480bcc=_[_0x02f0('0x43')](_0x397e92,function(_0x14c55d){_0x14c55d['FaxAccountId']=_0x22a3db;return _0x14c55d;});return db['FaxApplication'][_0x02f0('0x81')](_0x480bcc,{'transaction':_0x1ef9c1});});}else{_0x385657=0x194;_0x78b766=[];}});})['then'](function(){if(_0x385657!==0x194){return db['FaxApplication'][_0x02f0('0x82')]({'where':{'FaxAccountId':_0x22a3db},'order':'priority'})['then'](function(_0x13a932){_0x78b766=_0x13a932;});}})[_0x02f0('0x29')](function(_0x5451a8){_0x385657=0x1f4;logger[_0x02f0('0x25')](_0x5451a8[_0x02f0('0x83')]);if(_0x5451a8[_0x02f0('0x3b')]){delete _0x5451a8['name'];}_0x78b766=_0x5451a8;})['finally'](function(){if(_0x78b766===null){_0x56a1fc[_0x02f0('0x2a')](_0x385657);}else{if(_0x385657===0x1f4){_0x56a1fc['status'](_0x385657)[_0x02f0('0x3c')](_0x78b766);}else{_0x56a1fc[_0x02f0('0x2b')](_0x385657)[_0x02f0('0x2d')](_0x78b766);}}});};exports['getApplications']=function(_0x19089,_0x59a052,_0x256836){var _0x1fd4bd={};var _0x117d7e={};var _0x53f891;var _0x32eb51;return db['FaxAccount'][_0x02f0('0x6e')]({'where':{'id':_0x19089[_0x02f0('0x63')]['id']}})['then'](handleEntityNotFound(_0x59a052,null))[_0x02f0('0x37')](function(_0x3a30e7){if(_0x3a30e7){_0x53f891=_0x3a30e7;_0x117d7e[_0x02f0('0x42')]=_[_0x02f0('0x45')](db[_0x02f0('0x80')][_0x02f0('0x3f')]);_0x117d7e[_0x02f0('0x44')]=_[_0x02f0('0x45')](_0x19089[_0x02f0('0x44')]);_0x117d7e['filters']=_[_0x02f0('0x47')](_0x117d7e[_0x02f0('0x42')],_0x117d7e['query']);_0x1fd4bd[_0x02f0('0x48')]=_[_0x02f0('0x47')](_0x117d7e[_0x02f0('0x42')],qs[_0x02f0('0x49')](_0x19089[_0x02f0('0x44')][_0x02f0('0x49')]));_0x1fd4bd[_0x02f0('0x48')]=_0x1fd4bd['attributes']['length']?_0x1fd4bd['attributes']:_0x117d7e[_0x02f0('0x42')];_0x1fd4bd['order']=qs[_0x02f0('0x4d')](_0x19089['query'][_0x02f0('0x4d')]);_0x1fd4bd['where']=qs['filters'](_[_0x02f0('0x4f')](_0x19089[_0x02f0('0x44')],_0x117d7e[_0x02f0('0x46')]));if(_0x19089[_0x02f0('0x44')]['filter']){_0x1fd4bd[_0x02f0('0x4e')]=_[_0x02f0('0x51')](_0x1fd4bd['where'],{'$or':_[_0x02f0('0x43')](_0x1fd4bd[_0x02f0('0x48')],function(_0x31ab3a){var _0x557b70={};_0x557b70[_0x31ab3a]={'$like':'%'+_0x19089['query'][_0x02f0('0x50')]+'%'};return _0x557b70;})});}_0x1fd4bd=_[_0x02f0('0x51')]({},_0x1fd4bd,_0x19089[_0x02f0('0x54')]);return _0x53f891[_0x02f0('0x84')](_0x1fd4bd);}})[_0x02f0('0x37')](function(_0x5becac){if(_0x5becac){_0x32eb51=_0x5becac['length'];if(!_0x19089[_0x02f0('0x44')]['hasOwnProperty']('nolimit')){_0x1fd4bd[_0x02f0('0x2f')]=qs[_0x02f0('0x2f')](_0x19089[_0x02f0('0x44')][_0x02f0('0x2f')]);_0x1fd4bd[_0x02f0('0x2e')]=qs[_0x02f0('0x2e')](_0x19089[_0x02f0('0x44')][_0x02f0('0x2e')]);}return _0x53f891['getApplications'](_0x1fd4bd);}})[_0x02f0('0x37')](function(_0x516533){if(_0x516533){return _0x516533?{'count':_0x32eb51,'rows':_0x516533}:null;}})[_0x02f0('0x37')](respondWithResult(_0x59a052,null))[_0x02f0('0x29')](handleError(_0x59a052,null));};function Extension(_0x56a75f,_0x36fe1b,_0x557ceb,_0x720766){this[_0x02f0('0x85')]=_0x02f0('0x86');this[_0x02f0('0x87')]=_0x56a75f[_0x02f0('0x88')];this[_0x02f0('0x89')]=_0x720766;this[_0x02f0('0x52')]='system';this[_0x02f0('0x8a')]=_0x02f0('0x8b');this[_0x02f0('0x66')]=_0x56a75f['id'];this['priority']=_0x36fe1b;this[_0x02f0('0x8c')]=_0x557ceb;}function createExtensionsReciveFax(_0x56ca26){var _0x30b38c=0x1;var _0x3eea0b=[];_0x3eea0b[_0x02f0('0x8d')](new Extension(_0x56ca26,_0x30b38c,'',_0x02f0('0x8e')));_0x30b38c+=0x1;_0x3eea0b['push'](new Extension(_0x56ca26,_0x30b38c,_0x02f0('0x8f'),_0x02f0('0x90')));_0x30b38c+=0x1;for(var _0x231e3e in _0x56ca26){if(_0x56ca26[_0x02f0('0x4a')](_0x231e3e)&&(_0x231e3e===_0x02f0('0x91')||_0x231e3e===_0x02f0('0x88')||_0x231e3e==='gateway'||_0x231e3e===_0x02f0('0x92')||_0x231e3e===_0x02f0('0x93')||_0x231e3e==='maxrate'||_0x231e3e===_0x02f0('0x94')||_0x231e3e===_0x02f0('0x95')||_0x231e3e===_0x02f0('0x96'))){_0x3eea0b[_0x02f0('0x8d')](new Extension(_0x56ca26,_0x30b38c,_0x02f0('0x97')+_0x231e3e+')='+_0x56ca26[_0x231e3e],_0x02f0('0x90')));_0x30b38c+=0x1;}}_0x3eea0b[_0x02f0('0x8d')](new Extension(_0x56ca26,_0x30b38c,'6',_0x02f0('0x98')));_0x30b38c+=0x1;_0x3eea0b['push'](new Extension(_0x56ca26,_0x30b38c,_0x02f0('0x99'),'ReceiveFax'));_0x30b38c=0x0;return _0x3eea0b;}exports[_0x02f0('0x9a')]=function(_0x185988,_0x4741fe,_0x1ac1c4){var _0x50540b;return db[_0x02f0('0x7d')][_0x02f0('0x9b')](function(_0x541ec7){return db[_0x02f0('0x58')][_0x02f0('0x5b')](_0x185988[_0x02f0('0x5c')],{'transaction':_0x541ec7})[_0x02f0('0x37')](function(_0x26d4e8){_0x50540b=_0x26d4e8[_0x02f0('0x39')]({'plain':!![]});return db[_0x02f0('0x9c')][_0x02f0('0x81')](createExtensionsReciveFax(_0x50540b),{'transaction':_0x541ec7});});})[_0x02f0('0x37')](function(){return _0x50540b;})[_0x02f0('0x37')](respondWithResult(_0x4741fe,null))[_0x02f0('0x29')](handleError(_0x4741fe,null));};exports[_0x02f0('0x9d')]=function(_0x39edb8,_0x404517,_0x21e4f0){var _0x5c26c5;return db[_0x02f0('0x7d')][_0x02f0('0x9b')](function(_0x503b14){return db['FaxAccount'][_0x02f0('0x36')](_0x39edb8[_0x02f0('0x5c')],{'where':{'id':_0x39edb8[_0x02f0('0x5c')]['id']},'transaction':_0x503b14})[_0x02f0('0x37')](function(_0x4e2978){return db['VoiceExtension'][_0x02f0('0x38')]({'where':{'FaxAccountId':_0x39edb8[_0x02f0('0x5c')]['id']},'transaction':_0x503b14})[_0x02f0('0x37')](function(_0x2327ed){return db[_0x02f0('0x9c')][_0x02f0('0x81')](createExtensionsReciveFax(_['omit'](_0x39edb8[_0x02f0('0x5c')],[_0x02f0('0x9e'),'key',_0x02f0('0x9f'),'updatedAt',_0x02f0('0xa0'),'ListId'])),{'transaction':_0x503b14});});});})[_0x02f0('0x37')](function(){return db[_0x02f0('0x58')][_0x02f0('0xa1')](_0x39edb8[_0x02f0('0x5c')]['id']);})[_0x02f0('0x37')](respondWithResult(_0x404517,null))[_0x02f0('0x29')](handleError(_0x404517,null));};exports[_0x02f0('0xa2')]=function(_0x2cbad0,_0x38b8db,_0x129fe4){var _0x5eb1d0={'raw':!![],'where':{}};var _0x464d7d={};var _0x17a770={'count':0x0,'rows':[]};return db[_0x02f0('0x58')][_0x02f0('0x6e')]({'where':{'id':_0x2cbad0[_0x02f0('0x63')]['id']}})[_0x02f0('0x37')](handleEntityNotFound(_0x38b8db,null))[_0x02f0('0x37')](function(_0x14e685){if(_0x14e685){_0x464d7d['model']=_['keys'](db['FaxMessage'][_0x02f0('0x3f')]);_0x464d7d['query']=_[_0x02f0('0x45')](_0x2cbad0[_0x02f0('0x44')]);_0x464d7d[_0x02f0('0x46')]=_[_0x02f0('0x47')](_0x464d7d[_0x02f0('0x42')],_0x464d7d[_0x02f0('0x44')]);_0x5eb1d0[_0x02f0('0x48')]=_[_0x02f0('0x47')](_0x464d7d[_0x02f0('0x42')],qs[_0x02f0('0x49')](_0x2cbad0[_0x02f0('0x44')]['fields']));_0x5eb1d0['attributes']=_0x5eb1d0[_0x02f0('0x48')]['length']?_0x5eb1d0[_0x02f0('0x48')]:_0x464d7d[_0x02f0('0x42')];if(!_0x2cbad0[_0x02f0('0x44')]['hasOwnProperty'](_0x02f0('0x4b'))){_0x5eb1d0[_0x02f0('0x2f')]=qs['limit'](_0x2cbad0[_0x02f0('0x44')][_0x02f0('0x2f')]);_0x5eb1d0[_0x02f0('0x2e')]=qs[_0x02f0('0x2e')](_0x2cbad0['query'][_0x02f0('0x2e')]);}_0x5eb1d0[_0x02f0('0x4c')]=qs[_0x02f0('0x4d')](_0x2cbad0[_0x02f0('0x44')][_0x02f0('0x4d')]);_0x5eb1d0[_0x02f0('0x4e')]=qs[_0x02f0('0x46')](_['pick'](_0x2cbad0[_0x02f0('0x44')],_0x464d7d[_0x02f0('0x46')]));_0x5eb1d0[_0x02f0('0x4e')]['FaxAccountId']=_0x14e685['id'];if(_0x2cbad0[_0x02f0('0x44')][_0x02f0('0x50')]){_0x5eb1d0[_0x02f0('0x4e')]=_[_0x02f0('0x51')](_0x5eb1d0[_0x02f0('0x4e')],{'$or':_[_0x02f0('0x43')](_0x5eb1d0[_0x02f0('0x48')],function(_0xd2829e){var _0x26684f={};_0x26684f[_0xd2829e]={'$like':'%'+_0x2cbad0[_0x02f0('0x44')][_0x02f0('0x50')]+'%'};return _0x26684f;})});}if(_0x2cbad0['query']['$gte']){var _0x7315d6=_0x2cbad0[_0x02f0('0x44')][_0x02f0('0xa3')][_0x02f0('0xa4')](',');var _0x1d0561={};_0x1d0561[_0x7315d6[0x0]]={'$gte':moment(_0x7315d6[0x1])[_0x02f0('0xa5')]('YYYY-MM-DD\x20HH:mm:ss')};_0x5eb1d0[_0x02f0('0x4e')]=_['merge'](_0x5eb1d0[_0x02f0('0x4e')],_0x1d0561);}_0x5eb1d0=_[_0x02f0('0x51')]({},_0x5eb1d0,_0x2cbad0['options']);return db[_0x02f0('0xa6')]['count']({'where':_0x5eb1d0[_0x02f0('0x4e')]})[_0x02f0('0x37')](function(_0xabe593){_0x17a770[_0x02f0('0x31')]=_0xabe593;if(_0x2cbad0[_0x02f0('0x44')][_0x02f0('0x55')]){_0x5eb1d0['include']=[{'all':!![]}];}return db[_0x02f0('0xa6')][_0x02f0('0x68')](_0x5eb1d0);})[_0x02f0('0x37')](function(_0x492220){_0x17a770[_0x02f0('0x57')]=_0x492220;return _0x17a770;});}})['then'](respondWithFilteredResult(_0x38b8db,_0x5eb1d0))[_0x02f0('0x29')](handleError(_0x38b8db,null));};exports[_0x02f0('0x3c')]=function(_0x3b9bd2,_0x297bad,_0x3ffe70){var _0x3d22ba,_0x38f92e={},_0x121c58;if(_0x3b9bd2[_0x02f0('0x5c')]['to']){_0x121c58=_0x3b9bd2[_0x02f0('0x5c')]['to'][0x0];}return db[_0x02f0('0x58')][_0x02f0('0x5a')]({'where':{'id':_0x3b9bd2[_0x02f0('0x63')]['id']},'include':[{'model':db[_0x02f0('0xa7')],'as':_0x02f0('0xa8'),'include':[{'model':db[_0x02f0('0x73')],'as':'Contacts','where':{'fax':_0x121c58},'limit':0x1,'order':[['updatedAt',_0x02f0('0xa9')]]}]}]})[_0x02f0('0x37')](handleEntityNotFound(_0x297bad,null))[_0x02f0('0x37')](function(_0x5b648e){_0x3d22ba=_0x5b648e;if(_0x3b9bd2['body']['attachments']&&_0x3b9bd2['body'][_0x02f0('0xaa')][_0x02f0('0x59')]){for(var _0x5ad8a2=0x0;_0x5ad8a2<_0x3b9bd2[_0x02f0('0x5c')][_0x02f0('0xaa')][_0x02f0('0x59')];_0x5ad8a2+=0x1){_0x3b9bd2['body']['attachments'][_0x5ad8a2]={'filename':_0x3b9bd2[_0x02f0('0x5c')][_0x02f0('0xaa')][_0x5ad8a2][_0x02f0('0x3b')],'id':_0x3b9bd2[_0x02f0('0x5c')][_0x02f0('0xaa')][_0x5ad8a2]['id'],'path':path[_0x02f0('0xab')](config['root'],_0x02f0('0xac'),_0x3b9bd2[_0x02f0('0x5c')][_0x02f0('0xaa')][_0x5ad8a2][_0x02f0('0xad')])};}}return respondWithRpcPromise('CheckAfterSend',_0x02f0('0xae'),{'FaxAccountId':_[_0x02f0('0xaf')](_0x3b9bd2[_0x02f0('0x63')]['id'])?undefined:_0x3b9bd2[_0x02f0('0x63')]['id'],'path':_[_0x02f0('0xaf')](_0x3b9bd2[_0x02f0('0x5c')][_0x02f0('0xaa')][0x0][_0x02f0('0x6')])?undefined:_0x3b9bd2['body']['attachments'][0x0][_0x02f0('0x6')],'fax':_[_0x02f0('0xaf')](_0x3b9bd2[_0x02f0('0x5c')]['to'][0x0])?undefined:_0x3b9bd2[_0x02f0('0x5c')]['to'][0x0]},client9002);})[_0x02f0('0x37')](function(){if(_0x3d22ba){if(_[_0x02f0('0xaf')](_0x3b9bd2[_0x02f0('0x5c')][_0x02f0('0xb0')])){_0x3b9bd2[_0x02f0('0x5c')]['from']=util[_0x02f0('0xa5')](_0x02f0('0xb1'),_0x3d22ba[_0x02f0('0x3b')],_0x3d22ba[_0x02f0('0xb2')]);}if(_0x3d22ba[_0x02f0('0xa8')]){if(_0x3d22ba[_0x02f0('0xa8')][_0x02f0('0xb3')][_0x02f0('0x59')]){return _0x3d22ba[_0x02f0('0xa8')][_0x02f0('0xb3')][0x0];}else{return db[_0x02f0('0x73')][_0x02f0('0x5b')](_[_0x02f0('0x1a')](_0x3b9bd2[_0x02f0('0x5c')],{'firstName':_0x3b9bd2[_0x02f0('0x5c')]['to'][0x0],'phone':_0x3b9bd2[_0x02f0('0x5c')]['to'][0x0],'fax':_0x3b9bd2['body']['to'][0x0],'ListId':_0x3d22ba[_0x02f0('0xb4')]}));}}else{throw new Error('List\x20not\x20found');}}else{throw new Error(_0x02f0('0xb5'));}})[_0x02f0('0x37')](function(_0x1551c6){if(_0x1551c6){return db[_0x02f0('0x71')][_0x02f0('0x5a')]({'where':{'ContactId':_0x1551c6['id'],'closed':![],'FaxAccountId':_0x3d22ba['id']}})[_0x02f0('0x37')](function(_0x24711b){if(_0x24711b){return[_0x24711b,![]];}return db[_0x02f0('0x71')][_0x02f0('0x5b')]({'UserId':_0x3b9bd2[_0x02f0('0x5d')]['id'],'ContactId':_0x1551c6['id'],'FaxAccountId':_0x3d22ba['id'],'fax':_0x3b9bd2[_0x02f0('0x5c')]['to'][0x0],'firstMsgDirection':_0x02f0('0xb6'),'Messages':[_[_0x02f0('0x51')](_0x3b9bd2[_0x02f0('0x5c')],{'read':![],'body':_0x3b9bd2[_0x02f0('0x5c')][_0x02f0('0xaa')][0x0][_0x02f0('0xb7')],'FaxAccountId':_0x3d22ba['id'],'UserId':_0x3b9bd2[_0x02f0('0x5d')]['id'],'ContactId':_0x1551c6['id'],'AttachmentId':_0x3b9bd2[_0x02f0('0x5c')][_0x02f0('0xaa')][0x0]['id']})]},{'include':[{'model':db[_0x02f0('0xa6')],'as':_0x02f0('0xb8')}]})[_0x02f0('0x37')](function(_0x4cfb31){return[_0x4cfb31,!![]];});});}else{throw new Error(_0x02f0('0xb9'));}})['spread'](function(_0x423d59,_0x1d96f4){if(_0x1d96f4){return _0x423d59;}return db[_0x02f0('0xa6')][_0x02f0('0x5b')]({'direction':_0x02f0('0xb6'),'read':![],'body':_0x3b9bd2['body']['attachments'][0x0][_0x02f0('0xb7')],'FaxAccountId':_0x3d22ba['id'],'FaxInteractionId':_0x423d59['id'],'UserId':_0x3b9bd2[_0x02f0('0x5d')]['id'],'ContactId':_0x423d59[_0x02f0('0xba')],'AttachmentId':_0x3b9bd2[_0x02f0('0x5c')][_0x02f0('0xaa')][0x0]['id']})[_0x02f0('0x37')](function(_0x37506a){_0x423d59[_0x02f0('0xbb')]['Messages']=[];_0x423d59[_0x02f0('0xbb')]['Messages'][_0x02f0('0x8d')](_0x37506a[_0x02f0('0xbb')]);return _0x423d59;});})[_0x02f0('0x37')](function(_0x433927){respondWithRpcPromise(_0x02f0('0xbc'),_0x02f0('0xbc'),{'FaxAccountId':_[_0x02f0('0xaf')](_0x3b9bd2[_0x02f0('0x63')]['id'])?undefined:_0x3b9bd2[_0x02f0('0x63')]['id'],'path':_[_0x02f0('0xaf')](_0x3b9bd2[_0x02f0('0x5c')][_0x02f0('0xaa')][0x0][_0x02f0('0x6')])?undefined:_0x3b9bd2['body']['attachments'][0x0][_0x02f0('0x6')],'fax':_[_0x02f0('0xaf')](_0x3b9bd2[_0x02f0('0x5c')]['to'][0x0])?undefined:_0x3b9bd2[_0x02f0('0x5c')]['to'][0x0],'AttachmentId':_0x3b9bd2[_0x02f0('0x5c')][_0x02f0('0xaa')][0x0]['id']},client9002)['then'](function(_0x541cb8){logger[_0x02f0('0x20')]('SendFaxRpc,\x20%s',_0x541cb8);})[_0x02f0('0x29')](function(_0x4cf693){logger['info'](_0x02f0('0xbd'),_0x4cf693);});return _0x433927;})['then'](respondWithResult(_0x297bad,null))[_0x02f0('0x29')](handleError(_0x297bad,null));};exports[_0x02f0('0xbe')]=function(_0x405340,_0x5a4c41,_0x53b356){return db[_0x02f0('0x58')]['find']({'where':{'id':_0x405340[_0x02f0('0x63')]['id']}})['then'](handleEntityNotFound(_0x5a4c41,null))['then'](function(_0x23430e){if(_0x23430e){return _0x23430e[_0x02f0('0xbe')](_0x405340[_0x02f0('0x5c')][_0x02f0('0x6a')],_[_0x02f0('0xbf')](_0x405340['body'],[_0x02f0('0x6a'),'id'])||{})[_0x02f0('0xc0')](function(_0x466613){for(var _0x1d59af=0x0;_0x1d59af<_0x405340[_0x02f0('0x5c')][_0x02f0('0x6a')][_0x02f0('0x59')];_0x1d59af+=0x1){socket['emit'](_0x02f0('0xc1'),{'UserId':Number(_0x405340[_0x02f0('0x5c')]['ids'][_0x1d59af]),'FaxAccountId':Number(_0x405340['params']['id'])});}return _0x466613;});}})['then'](respondWithResult(_0x5a4c41,null))[_0x02f0('0x29')](handleError(_0x5a4c41,null));};exports['removeAgents']=function(_0x44e03e,_0x58b57c,_0x42985f){return db[_0x02f0('0x58')][_0x02f0('0x5a')]({'where':{'id':_0x44e03e['params']['id']}})[_0x02f0('0x37')](handleEntityNotFound(_0x58b57c,null))[_0x02f0('0x37')](function(_0x324988){if(_0x324988){return _0x324988[_0x02f0('0xc2')](_0x44e03e[_0x02f0('0x44')][_0x02f0('0x6a')])[_0x02f0('0x37')](function(){if(_['isArray'](_0x44e03e[_0x02f0('0x44')]['ids'])){for(var _0x2756e0=0x0;_0x2756e0<_0x44e03e[_0x02f0('0x44')]['ids'][_0x02f0('0x59')];_0x2756e0+=0x1){socket[_0x02f0('0xc3')]('userFaxAccount:remove',{'UserId':Number(_0x44e03e[_0x02f0('0x44')][_0x02f0('0x6a')][_0x2756e0]),'FaxAccountId':Number(_0x44e03e[_0x02f0('0x63')]['id'])});}}else{socket[_0x02f0('0xc3')](_0x02f0('0xc4'),{'UserId':Number(_0x44e03e[_0x02f0('0x44')][_0x02f0('0x6a')]),'FaxAccountId':Number(_0x44e03e[_0x02f0('0x63')]['id'])});}});}})[_0x02f0('0x37')](respondWithStatusCode(_0x58b57c,null))[_0x02f0('0x29')](handleError(_0x58b57c,null));};exports[_0x02f0('0xc5')]=function(_0x3d0435,_0x5dd2ef,_0xd84688){var _0x4617d9={};var _0x3b84c6={};var _0x440a9a;var _0x4f982c;return db[_0x02f0('0x58')]['findOne']({'where':{'id':_0x3d0435[_0x02f0('0x63')]['id']}})[_0x02f0('0x37')](handleEntityNotFound(_0x5dd2ef,null))[_0x02f0('0x37')](function(_0x15fa9f){if(_0x15fa9f){_0x440a9a=_0x15fa9f;_0x3b84c6[_0x02f0('0x42')]=_['keys'](db[_0x02f0('0xc6')][_0x02f0('0x3f')]);_0x3b84c6[_0x02f0('0x44')]=_[_0x02f0('0x45')](_0x3d0435[_0x02f0('0x44')]);_0x3b84c6[_0x02f0('0x46')]=_[_0x02f0('0x47')](_0x3b84c6[_0x02f0('0x42')],_0x3b84c6[_0x02f0('0x44')]);_0x4617d9['attributes']=_[_0x02f0('0x47')](_0x3b84c6[_0x02f0('0x42')],qs['fields'](_0x3d0435['query']['fields']));_0x4617d9['attributes']=_0x4617d9[_0x02f0('0x48')][_0x02f0('0x59')]?_0x4617d9[_0x02f0('0x48')]:_0x3b84c6[_0x02f0('0x42')];_0x4617d9[_0x02f0('0x4c')]=qs[_0x02f0('0x4d')](_0x3d0435[_0x02f0('0x44')]['sort']);_0x4617d9[_0x02f0('0x4e')]=qs['filters'](_[_0x02f0('0x4f')](_0x3d0435[_0x02f0('0x44')],_0x3b84c6[_0x02f0('0x46')]));if(_0x3d0435[_0x02f0('0x44')][_0x02f0('0x50')]){_0x4617d9[_0x02f0('0x4e')]=_[_0x02f0('0x51')](_0x4617d9[_0x02f0('0x4e')],{'$or':_['map'](_0x4617d9['attributes'],function(_0x53d60e){var _0x1ad342={};_0x1ad342[_0x53d60e]={'$like':'%'+_0x3d0435[_0x02f0('0x44')][_0x02f0('0x50')]+'%'};return _0x1ad342;})});}_0x4617d9=_[_0x02f0('0x51')]({},_0x4617d9,_0x3d0435[_0x02f0('0x54')]);return _0x440a9a[_0x02f0('0xc5')](_0x4617d9);}})[_0x02f0('0x37')](function(_0x2bef1f){if(_0x2bef1f){_0x4f982c=_0x2bef1f[_0x02f0('0x59')];if(!_0x3d0435[_0x02f0('0x44')][_0x02f0('0x4a')]('nolimit')){_0x4617d9['limit']=qs[_0x02f0('0x2f')](_0x3d0435[_0x02f0('0x44')][_0x02f0('0x2f')]);_0x4617d9[_0x02f0('0x2e')]=qs[_0x02f0('0x2e')](_0x3d0435[_0x02f0('0x44')]['offset']);}return _0x440a9a[_0x02f0('0xc5')](_0x4617d9);}})[_0x02f0('0x37')](function(_0x57a79b){if(_0x57a79b){return _0x57a79b?{'count':_0x4f982c,'rows':_0x57a79b}:null;}})['then'](respondWithResult(_0x5dd2ef,null))[_0x02f0('0x29')](handleError(_0x5dd2ef,null));};
\ No newline at end of file
+var _0x148f=['filename','Messages','spread','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','isArray','userFaxAccount:remove','getAgents','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','path','sox','ejs','fs-extra','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','register','jayson/promise','client','http','request','then','info','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','FaxAccount,\x20%s,\x20%s','message','result','catch','status','end','json','limit','undefined','count','offset','apply','save','get','UserProfileResource','destroy','sendStatus','stack','name','send','index','Pause','mandatoryDispositionPause','map','FaxAccount','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','options','includeAll','include','findAll','rows','show','params','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','FaxAccounts','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','describe','addDisposition','FaxAccountId','Disposition','pick','filter','removeDispositions','ids','getAnswers','findOne','CannedAnswer','removeAnswers','FaxInteraction','addInteraction','CmContact','Contact','User','Owner','fullname','internal','Tag','tag','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','FaxApplication','bulkCreate','findAndCountAll','priority','finally','getApplications','from-voip-provider','exten','localstationid','app','description','Fax\x20Extension','appdata','push','Answer','CDR(type)=inbound-fax','Set','ecm','gateway','faxdetect','headerinfo','maxrate','minrate','modem','t38timeout','/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','VoiceExtension','omit','tech','createdAt','updatedAt','TrunkId','ListId','findById','getMessages','FaxMessage','$gte','format','CmList','List','Contacts','DESC','attachments','join','root','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','Send\x20Fax\x20failed','out'];(function(_0x3fe946,_0x1a682b){var _0x113351=function(_0x309d36){while(--_0x309d36){_0x3fe946['push'](_0x3fe946['shift']());}};_0x113351(++_0x1a682b);}(_0x148f,0x191));var _0xf148=function(_0x2eb129,_0x53b95e){_0x2eb129=_0x2eb129-0x0;var _0x69f23e=_0x148f[_0x2eb129];return _0x69f23e;};'use strict';var emlformat=require(_0xf148('0x0'));var rimraf=require(_0xf148('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf148('0x2'));var rp=require('request-promise');var moment=require(_0xf148('0x3'));var BPromise=require(_0xf148('0x4'));var Mustache=require(_0xf148('0x5'));var util=require('util');var path=require(_0xf148('0x6'));var sox=require(_0xf148('0x7'));var csv=require('to-csv');var ejs=require(_0xf148('0x8'));var fs=require('fs');var fs_extra=require(_0xf148('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xf148('0xa'));var jsforce=require(_0xf148('0xb'));var deskjs=require(_0xf148('0xc'));var toCsv=require(_0xf148('0xd'));var querystring=require('querystring');var Papa=require(_0xf148('0xe'));var Redis=require(_0xf148('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xf148('0x10'));var as=require(_0xf148('0x11'));var hardwareService=require(_0xf148('0x12'));var logger=require(_0xf148('0x13'))('api');var utils=require(_0xf148('0x14'));var config=require(_0xf148('0x15'));var licenseUtil=require(_0xf148('0x16'));var db=require(_0xf148('0x17'))['db'];config[_0xf148('0x18')]=_[_0xf148('0x19')](config[_0xf148('0x18')],{'host':_0xf148('0x1a'),'port':0x18eb});var socket=require(_0xf148('0x1b'))(new Redis(config['redis']));require(_0xf148('0x1c'))[_0xf148('0x1d')](socket);var jayson=require(_0xf148('0x1e'));var client=jayson[_0xf148('0x1f')][_0xf148('0x20')]({'port':0x232c});var client9002=jayson['client'][_0xf148('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x54b848,_0x1a9a58,_0x361340,_0x1c171a){return new BPromise(function(_0x2098f5,_0x3689ec){var _0x12a39=_0x1c171a||client;return _0x12a39[_0xf148('0x21')](_0x54b848,_0x361340)[_0xf148('0x22')](function(_0x9a330){logger[_0xf148('0x23')]('FaxAccount,\x20%s,\x20%s',_0x1a9a58,_0xf148('0x24'));logger[_0xf148('0x25')](_0xf148('0x26'),_0x1a9a58,'request\x20sent',JSON[_0xf148('0x27')](_0x9a330));if(_0x9a330[_0xf148('0x28')]){if(_0x9a330[_0xf148('0x28')]['code']===0x1f4){logger[_0xf148('0x28')](_0xf148('0x29'),_0x1a9a58,_0x9a330[_0xf148('0x28')][_0xf148('0x2a')]);return _0x3689ec(_0x9a330[_0xf148('0x28')]['message']);}logger['error'](_0xf148('0x29'),_0x1a9a58,_0x9a330['error'][_0xf148('0x2a')]);return _0x2098f5(_0x9a330[_0xf148('0x28')]['message']);}else{logger[_0xf148('0x23')](_0xf148('0x29'),_0x1a9a58,_0xf148('0x24'));_0x2098f5(_0x9a330[_0xf148('0x2b')][_0xf148('0x2a')]);}})[_0xf148('0x2c')](function(_0x5a9bfa){logger[_0xf148('0x28')]('FaxAccount,\x20%s,\x20%s',_0x1a9a58,_0x5a9bfa);_0x3689ec(_0x5a9bfa);});});}function respondWithStatusCode(_0x38bca8,_0xca5e79){_0xca5e79=_0xca5e79||0xcc;return function(_0x59210d){if(_0x59210d){return _0x38bca8['sendStatus'](_0xca5e79);}return _0x38bca8[_0xf148('0x2d')](_0xca5e79)[_0xf148('0x2e')]();};}function respondWithResult(_0x41eceb,_0x22ae71){_0x22ae71=_0x22ae71||0xc8;return function(_0x33384c){if(_0x33384c){return _0x41eceb[_0xf148('0x2d')](_0x22ae71)[_0xf148('0x2f')](_0x33384c);}};}function respondWithFilteredResult(_0x449369,_0x2e7df4){return function(_0x3628e6){if(_0x3628e6){var _0x176527=typeof _0x2e7df4['offset']==='undefined'&&typeof _0x2e7df4[_0xf148('0x30')]===_0xf148('0x31');var _0x37bf8e=_0x3628e6[_0xf148('0x32')];var _0x510960=_0x176527?0x0:_0x2e7df4[_0xf148('0x33')];var _0x1651aa=_0x176527?_0x3628e6[_0xf148('0x32')]:_0x2e7df4['offset']+_0x2e7df4[_0xf148('0x30')];var _0x4cfaa9;if(_0x1651aa>=_0x37bf8e){_0x1651aa=_0x37bf8e;_0x4cfaa9=0xc8;}else{_0x4cfaa9=0xce;}_0x449369[_0xf148('0x2d')](_0x4cfaa9);return _0x449369['set']('Content-Range',_0x510960+'-'+_0x1651aa+'/'+_0x37bf8e)[_0xf148('0x2f')](_0x3628e6);}return null;};}function patchUpdates(_0x4046f9){return function(_0x3cd44b){try{jsonpatch[_0xf148('0x34')](_0x3cd44b,_0x4046f9,!![]);}catch(_0x2dcff2){return BPromise['reject'](_0x2dcff2);}return _0x3cd44b[_0xf148('0x35')]();};}function saveUpdates(_0x1e1bac,_0x49bc00){return function(_0x5eb14b){if(_0x5eb14b){return _0x5eb14b['update'](_0x1e1bac)[_0xf148('0x22')](function(_0x4ddce0){return _0x4ddce0;});}return null;};}function removeEntity(_0xea3d32,_0x39a866){return function(_0x8d0fd2){if(_0x8d0fd2){return _0x8d0fd2['destroy']()['then'](function(){var _0x576a32=_0x8d0fd2[_0xf148('0x36')]({'plain':!![]});var _0x1d1bd0='FaxAccounts';return db[_0xf148('0x37')][_0xf148('0x38')]({'where':{'type':_0x1d1bd0,'resourceId':_0x576a32['id']}})[_0xf148('0x22')](function(){return _0x8d0fd2;});})['then'](function(){_0xea3d32[_0xf148('0x2d')](0xcc)[_0xf148('0x2e')]();});}};}function handleEntityNotFound(_0x2b9042,_0x102c03){return function(_0x39a21e){if(!_0x39a21e){_0x2b9042[_0xf148('0x39')](0x194);}return _0x39a21e;};}function handleError(_0x1e0c8a,_0x192d0f){_0x192d0f=_0x192d0f||0x1f4;return function(_0x35272c){logger[_0xf148('0x28')](_0x35272c[_0xf148('0x3a')]);if(_0x35272c[_0xf148('0x3b')]){delete _0x35272c[_0xf148('0x3b')];}_0x1e0c8a[_0xf148('0x2d')](_0x192d0f)[_0xf148('0x3c')](_0x35272c);};}exports[_0xf148('0x3d')]=function(_0x670762,_0x3c2916){var _0x5931fd={'include':[{'model':db[_0xf148('0x3e')],'as':_0xf148('0x3f')}]},_0x33794b={},_0x22c6f4={'count':0x0,'rows':[]};var _0x4b42ac=_[_0xf148('0x40')](db[_0xf148('0x41')][_0xf148('0x42')],function(_0xc7d1b7){return{'name':_0xc7d1b7[_0xf148('0x43')],'type':_0xc7d1b7[_0xf148('0x44')][_0xf148('0x45')]};});_0x33794b[_0xf148('0x46')]=_[_0xf148('0x40')](_0x4b42ac,_0xf148('0x3b'));_0x33794b['query']=_[_0xf148('0x47')](_0x670762['query']);_0x33794b[_0xf148('0x48')]=_[_0xf148('0x49')](_0x33794b[_0xf148('0x46')],_0x33794b[_0xf148('0x4a')]);_0x5931fd[_0xf148('0x4b')]=_[_0xf148('0x49')](_0x33794b[_0xf148('0x46')],qs['fields'](_0x670762['query'][_0xf148('0x4c')]));_0x5931fd[_0xf148('0x4b')]=_0x5931fd[_0xf148('0x4b')][_0xf148('0x4d')]?_0x5931fd[_0xf148('0x4b')]:_0x33794b[_0xf148('0x46')];if(!_0x670762[_0xf148('0x4a')][_0xf148('0x4e')](_0xf148('0x4f'))){_0x5931fd[_0xf148('0x30')]=qs['limit'](_0x670762[_0xf148('0x4a')][_0xf148('0x30')]);_0x5931fd[_0xf148('0x33')]=qs['offset'](_0x670762[_0xf148('0x4a')][_0xf148('0x33')]);}_0x5931fd[_0xf148('0x50')]=qs[_0xf148('0x51')](_0x670762[_0xf148('0x4a')]['sort']);_0x5931fd[_0xf148('0x52')]=qs[_0xf148('0x48')](_['pick'](_0x670762[_0xf148('0x4a')],_0x33794b['filters']),_0x4b42ac);if(_0x670762['query']['filter']){_0x5931fd[_0xf148('0x52')]=_[_0xf148('0x53')](_0x5931fd[_0xf148('0x52')],{'$or':_[_0xf148('0x40')](_0x4b42ac,function(_0x20d28d){if(_0x20d28d[_0xf148('0x44')]!=='VIRTUAL'){var _0x7ec81e={};_0x7ec81e[_0x20d28d['name']]={'$like':'%'+_0x670762[_0xf148('0x4a')]['filter']+'%'};return _0x7ec81e;}})});}_0x5931fd=_[_0xf148('0x53')]({},_0x5931fd,_0x670762[_0xf148('0x54')]);var _0x37f027={'where':_0x5931fd[_0xf148('0x52')]};return db[_0xf148('0x41')][_0xf148('0x32')](_0x37f027)[_0xf148('0x22')](function(_0x57b8ae){_0x22c6f4[_0xf148('0x32')]=_0x57b8ae;if(_0x670762['query'][_0xf148('0x55')]){_0x5931fd[_0xf148('0x56')]=[{'all':!![]}];}return db[_0xf148('0x41')][_0xf148('0x57')](_0x5931fd);})['then'](function(_0x553cb3){_0x22c6f4[_0xf148('0x58')]=_0x553cb3;return _0x22c6f4;})[_0xf148('0x22')](respondWithFilteredResult(_0x3c2916,_0x5931fd))['catch'](handleError(_0x3c2916,null));};exports[_0xf148('0x59')]=function(_0xebd42e,_0x3d509e){var _0x5a1d40={'raw':![],'where':{'id':_0xebd42e[_0xf148('0x5a')]['id']},'include':[{'model':db[_0xf148('0x3e')],'as':_0xf148('0x3f')}]},_0x5e803f={};_0x5e803f[_0xf148('0x46')]=_[_0xf148('0x47')](db[_0xf148('0x41')]['rawAttributes']);_0x5e803f[_0xf148('0x4a')]=_['keys'](_0xebd42e[_0xf148('0x4a')]);_0x5e803f[_0xf148('0x48')]=_['intersection'](_0x5e803f[_0xf148('0x46')],_0x5e803f[_0xf148('0x4a')]);_0x5a1d40['attributes']=_['intersection'](_0x5e803f[_0xf148('0x46')],qs['fields'](_0xebd42e[_0xf148('0x4a')]['fields']));_0x5a1d40[_0xf148('0x4b')]=_0x5a1d40[_0xf148('0x4b')][_0xf148('0x4d')]?_0x5a1d40[_0xf148('0x4b')]:_0x5e803f[_0xf148('0x46')];if(_0xebd42e[_0xf148('0x4a')][_0xf148('0x55')]){_0x5a1d40[_0xf148('0x56')]=[{'all':!![]}];}_0x5a1d40=_[_0xf148('0x53')]({},_0x5a1d40,_0xebd42e[_0xf148('0x54')]);return db[_0xf148('0x41')]['find'](_0x5a1d40)[_0xf148('0x22')](handleEntityNotFound(_0x3d509e,null))['then'](respondWithResult(_0x3d509e,null))['catch'](handleError(_0x3d509e,null));};exports[_0xf148('0x5b')]=function(_0x5eaf58,_0x19641b){return db[_0xf148('0x41')][_0xf148('0x5b')](_0x5eaf58['body'],{})[_0xf148('0x22')](function(_0x1b5af9){var _0x957459=_0x5eaf58[_0xf148('0x5c')][_0xf148('0x36')]({'plain':!![]});if(!_0x957459)throw new Error(_0xf148('0x5d'));if(_0x957459[_0xf148('0x5e')]===_0xf148('0x5c')){var _0x369f74=_0x1b5af9[_0xf148('0x36')]({'plain':!![]});var _0x37d5ac=_0xf148('0x5f');return db['UserProfileSection'][_0xf148('0x60')]({'where':{'name':_0x37d5ac,'userProfileId':_0x957459['userProfileId']},'raw':!![]})[_0xf148('0x22')](function(_0x1b5bce){if(_0x1b5bce&&_0x1b5bce[_0xf148('0x61')]===0x0){return db['UserProfileResource'][_0xf148('0x5b')]({'name':_0x369f74[_0xf148('0x3b')],'resourceId':_0x369f74['id'],'type':_0x1b5bce['name'],'sectionId':_0x1b5bce['id']},{})[_0xf148('0x22')](function(){return _0x1b5af9;});}else{return _0x1b5af9;}})[_0xf148('0x2c')](function(_0x3cd39f){logger[_0xf148('0x28')](_0xf148('0x62'),_0x3cd39f);throw _0x3cd39f;});}return _0x1b5af9;})[_0xf148('0x22')](respondWithResult(_0x19641b,0xc9))[_0xf148('0x2c')](handleError(_0x19641b,null));};exports[_0xf148('0x63')]=function(_0x553b67,_0x5382fa){if(_0x553b67['body']['id']){delete _0x553b67['body']['id'];}return db['FaxAccount'][_0xf148('0x60')]({'where':{'id':_0x553b67[_0xf148('0x5a')]['id']},'include':[{'model':db[_0xf148('0x3e')],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x5382fa,null))[_0xf148('0x22')](saveUpdates(_0x553b67[_0xf148('0x64')],null))[_0xf148('0x22')](respondWithResult(_0x5382fa,null))[_0xf148('0x2c')](handleError(_0x5382fa,null));};exports[_0xf148('0x38')]=function(_0x4cabed,_0x585da9){return db['FaxAccount']['find']({'where':{'id':_0x4cabed[_0xf148('0x5a')]['id']}})[_0xf148('0x22')](handleEntityNotFound(_0x585da9,null))[_0xf148('0x22')](removeEntity(_0x585da9,null))[_0xf148('0x2c')](handleError(_0x585da9,null));};exports['describe']=function(_0x21a0c9,_0xfd9a00){return db[_0xf148('0x41')][_0xf148('0x65')]()[_0xf148('0x22')](respondWithResult(_0xfd9a00,null))['catch'](handleError(_0xfd9a00,null));};exports[_0xf148('0x66')]=function(_0x1400e5,_0x3394b5,_0x32668c){if(_0x1400e5[_0xf148('0x64')]['id']){delete _0x1400e5[_0xf148('0x64')]['id'];}return db['FaxAccount']['find']({'where':{'id':_0x1400e5[_0xf148('0x5a')]['id']}})[_0xf148('0x22')](handleEntityNotFound(_0x3394b5,null))[_0xf148('0x22')](function(_0x290b19){if(_0x290b19){_0x1400e5['body'][_0xf148('0x67')]=_0x290b19['id'];return db[_0xf148('0x68')][_0xf148('0x5b')](_0x1400e5[_0xf148('0x64')]);}})[_0xf148('0x22')](respondWithResult(_0x3394b5,null))['catch'](handleError(_0x3394b5,null));};exports['getDispositions']=function(_0x29f687,_0x3d1b6b,_0x1fdf8b){var _0x1eeffe={'raw':![],'where':{}};var _0xf0eb27={};var _0x25feea={'count':0x0,'rows':[]};return db['FaxAccount']['findOne']({'where':{'id':_0x29f687[_0xf148('0x5a')]['id']}})[_0xf148('0x22')](handleEntityNotFound(_0x3d1b6b,null))[_0xf148('0x22')](function(_0x251ef2){if(_0x251ef2){_0xf0eb27[_0xf148('0x46')]=_['keys'](db['Disposition'][_0xf148('0x42')]);_0xf0eb27['query']=_['keys'](_0x29f687['query']);_0xf0eb27[_0xf148('0x48')]=_['intersection'](_0xf0eb27[_0xf148('0x46')],_0xf0eb27[_0xf148('0x4a')]);_0x1eeffe['attributes']=_[_0xf148('0x49')](_0xf0eb27['model'],qs['fields'](_0x29f687[_0xf148('0x4a')][_0xf148('0x4c')]));_0x1eeffe[_0xf148('0x4b')]=_0x1eeffe[_0xf148('0x4b')][_0xf148('0x4d')]?_0x1eeffe[_0xf148('0x4b')]:_0xf0eb27[_0xf148('0x46')];if(!_0x29f687['query']['hasOwnProperty']('nolimit')){_0x1eeffe[_0xf148('0x30')]=qs[_0xf148('0x30')](_0x29f687[_0xf148('0x4a')][_0xf148('0x30')]);_0x1eeffe['offset']=qs['offset'](_0x29f687[_0xf148('0x4a')]['offset']);}_0x1eeffe['order']=qs[_0xf148('0x51')](_0x29f687[_0xf148('0x4a')][_0xf148('0x51')]);_0x1eeffe[_0xf148('0x52')]=qs[_0xf148('0x48')](_[_0xf148('0x69')](_0x29f687['query'],_0xf0eb27['filters']));_0x1eeffe['where'][_0xf148('0x67')]=_0x251ef2['id'];if(_0x29f687[_0xf148('0x4a')][_0xf148('0x6a')]){_0x1eeffe[_0xf148('0x52')]=_[_0xf148('0x53')](_0x1eeffe[_0xf148('0x52')],{'$or':_['map'](_0x1eeffe[_0xf148('0x4b')],function(_0x5e9760){var _0x2eeda4={};_0x2eeda4[_0x5e9760]={'$like':'%'+_0x29f687[_0xf148('0x4a')][_0xf148('0x6a')]+'%'};return _0x2eeda4;})});}_0x1eeffe=_[_0xf148('0x53')]({},_0x1eeffe,_0x29f687[_0xf148('0x54')]);return db[_0xf148('0x68')][_0xf148('0x32')]({'where':_0x1eeffe[_0xf148('0x52')]})['then'](function(_0x35d166){_0x25feea[_0xf148('0x32')]=_0x35d166;if(_0x29f687[_0xf148('0x4a')][_0xf148('0x55')]){_0x1eeffe[_0xf148('0x56')]=[{'all':!![]}];}return db[_0xf148('0x68')][_0xf148('0x57')](_0x1eeffe);})['then'](function(_0x1724f9){_0x25feea[_0xf148('0x58')]=_0x1724f9;return _0x25feea;});}})[_0xf148('0x22')](respondWithFilteredResult(_0x3d1b6b,_0x1eeffe))[_0xf148('0x2c')](handleError(_0x3d1b6b,null));};exports[_0xf148('0x6b')]=function(_0x13d388,_0x25e53f,_0x185c49){return db[_0xf148('0x41')][_0xf148('0x60')]({'where':{'id':_0x13d388[_0xf148('0x5a')]['id']}})[_0xf148('0x22')](handleEntityNotFound(_0x25e53f,null))[_0xf148('0x22')](function(_0x4210e2){if(_0x4210e2){return _0x4210e2[_0xf148('0x6b')](_0x13d388[_0xf148('0x4a')][_0xf148('0x6c')]);}})[_0xf148('0x22')](respondWithStatusCode(_0x25e53f,null))[_0xf148('0x2c')](handleError(_0x25e53f,null));};exports['addAnswer']=function(_0x3bc7c0,_0x5acc71,_0x46ab0d){if(_0x3bc7c0['body']['id']){delete _0x3bc7c0[_0xf148('0x64')]['id'];}return db[_0xf148('0x41')][_0xf148('0x60')]({'where':{'id':_0x3bc7c0[_0xf148('0x5a')]['id']}})[_0xf148('0x22')](handleEntityNotFound(_0x5acc71,null))['then'](function(_0x4576c2){if(_0x4576c2){_0x3bc7c0[_0xf148('0x64')][_0xf148('0x67')]=_0x4576c2['id'];return db['CannedAnswer'][_0xf148('0x5b')](_0x3bc7c0[_0xf148('0x64')]);}})[_0xf148('0x22')](respondWithResult(_0x5acc71,null))['catch'](handleError(_0x5acc71,null));};exports[_0xf148('0x6d')]=function(_0x54cf1d,_0x3d168f,_0x300691){var _0x583b78={'raw':![],'where':{}};var _0x1dd12c={};var _0x1922b3={'count':0x0,'rows':[]};return db[_0xf148('0x41')][_0xf148('0x6e')]({'where':{'id':_0x54cf1d[_0xf148('0x5a')]['id']}})[_0xf148('0x22')](handleEntityNotFound(_0x3d168f,null))[_0xf148('0x22')](function(_0x55e5cc){if(_0x55e5cc){_0x1dd12c[_0xf148('0x46')]=_[_0xf148('0x47')](db[_0xf148('0x6f')][_0xf148('0x42')]);_0x1dd12c[_0xf148('0x4a')]=_[_0xf148('0x47')](_0x54cf1d[_0xf148('0x4a')]);_0x1dd12c[_0xf148('0x48')]=_[_0xf148('0x49')](_0x1dd12c['model'],_0x1dd12c[_0xf148('0x4a')]);_0x583b78[_0xf148('0x4b')]=_['intersection'](_0x1dd12c['model'],qs[_0xf148('0x4c')](_0x54cf1d[_0xf148('0x4a')][_0xf148('0x4c')]));_0x583b78[_0xf148('0x4b')]=_0x583b78[_0xf148('0x4b')]['length']?_0x583b78[_0xf148('0x4b')]:_0x1dd12c['model'];if(!_0x54cf1d[_0xf148('0x4a')][_0xf148('0x4e')]('nolimit')){_0x583b78[_0xf148('0x30')]=qs[_0xf148('0x30')](_0x54cf1d[_0xf148('0x4a')][_0xf148('0x30')]);_0x583b78[_0xf148('0x33')]=qs['offset'](_0x54cf1d[_0xf148('0x4a')][_0xf148('0x33')]);}_0x583b78[_0xf148('0x50')]=qs[_0xf148('0x51')](_0x54cf1d[_0xf148('0x4a')][_0xf148('0x51')]);_0x583b78[_0xf148('0x52')]=qs['filters'](_[_0xf148('0x69')](_0x54cf1d[_0xf148('0x4a')],_0x1dd12c['filters']));_0x583b78['where']['FaxAccountId']=_0x55e5cc['id'];if(_0x54cf1d[_0xf148('0x4a')][_0xf148('0x6a')]){_0x583b78[_0xf148('0x52')]=_[_0xf148('0x53')](_0x583b78[_0xf148('0x52')],{'$or':_[_0xf148('0x40')](_0x583b78[_0xf148('0x4b')],function(_0x48d98d){var _0x840623={};_0x840623[_0x48d98d]={'$like':'%'+_0x54cf1d[_0xf148('0x4a')][_0xf148('0x6a')]+'%'};return _0x840623;})});}_0x583b78=_[_0xf148('0x53')]({},_0x583b78,_0x54cf1d[_0xf148('0x54')]);return db[_0xf148('0x6f')][_0xf148('0x32')]({'where':_0x583b78[_0xf148('0x52')]})[_0xf148('0x22')](function(_0x540f4a){_0x1922b3[_0xf148('0x32')]=_0x540f4a;if(_0x54cf1d[_0xf148('0x4a')]['includeAll']){_0x583b78[_0xf148('0x56')]=[{'all':!![]}];}return db[_0xf148('0x6f')][_0xf148('0x57')](_0x583b78);})[_0xf148('0x22')](function(_0x197206){_0x1922b3[_0xf148('0x58')]=_0x197206;return _0x1922b3;});}})['then'](respondWithFilteredResult(_0x3d168f,_0x583b78))[_0xf148('0x2c')](handleError(_0x3d168f,null));};exports[_0xf148('0x70')]=function(_0x32f302,_0x123da2,_0x4ce423){return db[_0xf148('0x41')][_0xf148('0x60')]({'where':{'id':_0x32f302[_0xf148('0x5a')]['id']}})[_0xf148('0x22')](handleEntityNotFound(_0x123da2,null))['then'](function(_0x5b354c){if(_0x5b354c){return _0x5b354c[_0xf148('0x70')](_0x32f302['query'][_0xf148('0x6c')]);}})['then'](respondWithStatusCode(_0x123da2,null))[_0xf148('0x2c')](handleError(_0x123da2,null));};exports['addInteraction']=function(_0x531cc9,_0x573117,_0x44dd35){return db[_0xf148('0x71')][_0xf148('0x60')]({'where':{'id':_0x531cc9[_0xf148('0x5a')]['id']}})[_0xf148('0x22')](handleEntityNotFound(_0x573117,null))['then'](function(_0x3c21cf){if(_0x3c21cf){return _0x3c21cf[_0xf148('0x72')](_0x531cc9[_0xf148('0x64')]['ids'],_['omit'](_0x531cc9[_0xf148('0x64')],[_0xf148('0x6c'),'id'])||{});}})[_0xf148('0x22')](respondWithResult(_0x573117,null))[_0xf148('0x2c')](handleError(_0x573117,null));};exports['getInteractions']=function(_0x3ac799,_0x29d885,_0xfe5203){var _0x4f038f={'raw':![],'where':{}};var _0x44c5a0={};var _0x4692f9={'count':0x0,'rows':[]};return db['FaxAccount']['findOne']({'where':{'id':_0x3ac799['params']['id']}})['then'](handleEntityNotFound(_0x29d885,null))[_0xf148('0x22')](function(_0x342ed0){if(_0x342ed0){_0x44c5a0[_0xf148('0x46')]=_[_0xf148('0x47')](db[_0xf148('0x71')]['rawAttributes']);_0x44c5a0['query']=_['keys'](_0x3ac799[_0xf148('0x4a')]);_0x44c5a0[_0xf148('0x48')]=_[_0xf148('0x49')](_0x44c5a0[_0xf148('0x46')],_0x44c5a0['query']);_0x4f038f['attributes']=_['intersection'](_0x44c5a0[_0xf148('0x46')],qs[_0xf148('0x4c')](_0x3ac799[_0xf148('0x4a')][_0xf148('0x4c')]));_0x4f038f['attributes']=_0x4f038f[_0xf148('0x4b')]['length']?_0x4f038f['attributes']:_0x44c5a0[_0xf148('0x46')];if(!_0x3ac799[_0xf148('0x4a')][_0xf148('0x4e')](_0xf148('0x4f'))){_0x4f038f[_0xf148('0x30')]=qs[_0xf148('0x30')](_0x3ac799['query']['limit']);_0x4f038f['offset']=qs[_0xf148('0x33')](_0x3ac799['query'][_0xf148('0x33')]);}_0x4f038f['order']=qs[_0xf148('0x51')](_0x3ac799[_0xf148('0x4a')][_0xf148('0x51')]);_0x4f038f[_0xf148('0x52')]=qs[_0xf148('0x48')](_[_0xf148('0x69')](_0x3ac799[_0xf148('0x4a')],_0x44c5a0[_0xf148('0x48')]));_0x4f038f[_0xf148('0x52')][_0xf148('0x67')]=_0x342ed0['id'];if(_0x3ac799[_0xf148('0x4a')][_0xf148('0x6a')]){_0x4f038f['where']=_[_0xf148('0x53')](_0x4f038f[_0xf148('0x52')],{'$or':_[_0xf148('0x40')](_0x4f038f[_0xf148('0x4b')],function(_0x32198c){var _0x5cf805={};_0x5cf805[_0x32198c]={'$like':'%'+_0x3ac799[_0xf148('0x4a')]['filter']+'%'};return _0x5cf805;})});}_0x4f038f=_[_0xf148('0x53')]({},_0x4f038f,_0x3ac799[_0xf148('0x54')]);return db[_0xf148('0x71')][_0xf148('0x32')]({'where':_0x4f038f[_0xf148('0x52')]})['then'](function(_0x3d12d2){_0x4692f9['count']=_0x3d12d2;if(_0x3ac799[_0xf148('0x4a')]['includeAll']){_0x4f038f['include']=[{'model':db[_0xf148('0x73')],'as':_0xf148('0x74'),'required':![]},{'model':db[_0xf148('0x75')],'as':_0xf148('0x76'),'attributes':[_0xf148('0x3b'),_0xf148('0x77'),_0xf148('0x78')],'required':![]},{'model':db[_0xf148('0x79')],'as':'Tags','attributes':['id',_0xf148('0x3b'),'color'],'where':_0x3ac799['query'][_0xf148('0x7a')]?{'id':_0x3ac799[_0xf148('0x4a')][_0xf148('0x7a')]}:undefined,'required':_0x3ac799[_0xf148('0x4a')][_0xf148('0x7a')]?!![]:![]}];}return db[_0xf148('0x71')][_0xf148('0x57')](_0x4f038f);})['then'](function(_0x2793c9){_0x4692f9[_0xf148('0x58')]=_0x2793c9;return _0x4692f9;});}})[_0xf148('0x22')](respondWithFilteredResult(_0x29d885,_0x4f038f))['catch'](handleError(_0x29d885,null));};exports['addApplications']=function(_0x3270a2,_0x3174d1){var _0xdae3e4=_0x3270a2[_0xf148('0x5a')]['id'];var _0xd74406=_0x3270a2[_0xf148('0x64')];var _0xafb27b=0xc8;var _0x8b6823=null;return db[_0xf148('0x7b')][_0xf148('0x7c')]({'isolationLevel':db[_0xf148('0x7b')][_0xf148('0x7d')][_0xf148('0x7e')][_0xf148('0x7f')]},function(_0x4ea77f){return db[_0xf148('0x41')][_0xf148('0x6e')]({'where':{'id':_0xdae3e4},'transaction':_0x4ea77f})[_0xf148('0x22')](function(_0x1c7ba8){if(_0x1c7ba8){return db[_0xf148('0x80')]['destroy']({'where':{'FaxAccountId':_0xdae3e4},'transaction':_0x4ea77f})[_0xf148('0x22')](function(){var _0x522b89=_[_0xf148('0x40')](_0xd74406,function(_0x1d2898){_0x1d2898[_0xf148('0x67')]=_0xdae3e4;return _0x1d2898;});return db[_0xf148('0x80')][_0xf148('0x81')](_0x522b89,{'transaction':_0x4ea77f});});}else{_0xafb27b=0x194;_0x8b6823=[];}});})[_0xf148('0x22')](function(){if(_0xafb27b!==0x194){return db[_0xf148('0x80')][_0xf148('0x82')]({'where':{'FaxAccountId':_0xdae3e4},'order':_0xf148('0x83')})['then'](function(_0x43f459){_0x8b6823=_0x43f459;});}})[_0xf148('0x2c')](function(_0x1fe1a5){_0xafb27b=0x1f4;logger[_0xf148('0x28')](_0x1fe1a5[_0xf148('0x3a')]);if(_0x1fe1a5[_0xf148('0x3b')]){delete _0x1fe1a5[_0xf148('0x3b')];}_0x8b6823=_0x1fe1a5;})[_0xf148('0x84')](function(){if(_0x8b6823===null){_0x3174d1[_0xf148('0x39')](_0xafb27b);}else{if(_0xafb27b===0x1f4){_0x3174d1[_0xf148('0x2d')](_0xafb27b)[_0xf148('0x3c')](_0x8b6823);}else{_0x3174d1['status'](_0xafb27b)[_0xf148('0x2f')](_0x8b6823);}}});};exports[_0xf148('0x85')]=function(_0x36141a,_0x51c404,_0x8b7388){var _0x38d6f6={};var _0x4e7323={};var _0x1949e7;var _0x18f3b2;return db[_0xf148('0x41')][_0xf148('0x6e')]({'where':{'id':_0x36141a[_0xf148('0x5a')]['id']}})['then'](handleEntityNotFound(_0x51c404,null))[_0xf148('0x22')](function(_0x16a166){if(_0x16a166){_0x1949e7=_0x16a166;_0x4e7323[_0xf148('0x46')]=_['keys'](db['FaxApplication'][_0xf148('0x42')]);_0x4e7323[_0xf148('0x4a')]=_[_0xf148('0x47')](_0x36141a['query']);_0x4e7323[_0xf148('0x48')]=_[_0xf148('0x49')](_0x4e7323[_0xf148('0x46')],_0x4e7323['query']);_0x38d6f6[_0xf148('0x4b')]=_[_0xf148('0x49')](_0x4e7323[_0xf148('0x46')],qs[_0xf148('0x4c')](_0x36141a[_0xf148('0x4a')][_0xf148('0x4c')]));_0x38d6f6[_0xf148('0x4b')]=_0x38d6f6[_0xf148('0x4b')][_0xf148('0x4d')]?_0x38d6f6[_0xf148('0x4b')]:_0x4e7323[_0xf148('0x46')];_0x38d6f6[_0xf148('0x50')]=qs[_0xf148('0x51')](_0x36141a[_0xf148('0x4a')][_0xf148('0x51')]);_0x38d6f6[_0xf148('0x52')]=qs['filters'](_['pick'](_0x36141a[_0xf148('0x4a')],_0x4e7323['filters']));if(_0x36141a[_0xf148('0x4a')][_0xf148('0x6a')]){_0x38d6f6['where']=_[_0xf148('0x53')](_0x38d6f6[_0xf148('0x52')],{'$or':_[_0xf148('0x40')](_0x38d6f6['attributes'],function(_0x10a732){var _0x36ac27={};_0x36ac27[_0x10a732]={'$like':'%'+_0x36141a['query']['filter']+'%'};return _0x36ac27;})});}_0x38d6f6=_['merge']({},_0x38d6f6,_0x36141a[_0xf148('0x54')]);return _0x1949e7[_0xf148('0x85')](_0x38d6f6);}})[_0xf148('0x22')](function(_0x239225){if(_0x239225){_0x18f3b2=_0x239225[_0xf148('0x4d')];if(!_0x36141a[_0xf148('0x4a')]['hasOwnProperty'](_0xf148('0x4f'))){_0x38d6f6['limit']=qs['limit'](_0x36141a['query']['limit']);_0x38d6f6[_0xf148('0x33')]=qs[_0xf148('0x33')](_0x36141a[_0xf148('0x4a')][_0xf148('0x33')]);}return _0x1949e7[_0xf148('0x85')](_0x38d6f6);}})[_0xf148('0x22')](function(_0x3f4276){if(_0x3f4276){return _0x3f4276?{'count':_0x18f3b2,'rows':_0x3f4276}:null;}})[_0xf148('0x22')](respondWithResult(_0x51c404,null))[_0xf148('0x2c')](handleError(_0x51c404,null));};function Extension(_0x15a61a,_0x311174,_0x4f59f3,_0xb3e3bf){this['context']=_0xf148('0x86');this[_0xf148('0x87')]=_0x15a61a[_0xf148('0x88')];this[_0xf148('0x89')]=_0xb3e3bf;this[_0xf148('0x44')]='system';this[_0xf148('0x8a')]=_0xf148('0x8b');this[_0xf148('0x67')]=_0x15a61a['id'];this[_0xf148('0x83')]=_0x311174;this[_0xf148('0x8c')]=_0x4f59f3;}function createExtensionsReciveFax(_0x2b8301){var _0x11c57b=0x1;var _0x5bd052=[];_0x5bd052[_0xf148('0x8d')](new Extension(_0x2b8301,_0x11c57b,'',_0xf148('0x8e')));_0x11c57b+=0x1;_0x5bd052[_0xf148('0x8d')](new Extension(_0x2b8301,_0x11c57b,_0xf148('0x8f'),_0xf148('0x90')));_0x11c57b+=0x1;for(var _0xe476ab in _0x2b8301){if(_0x2b8301[_0xf148('0x4e')](_0xe476ab)&&(_0xe476ab===_0xf148('0x91')||_0xe476ab===_0xf148('0x88')||_0xe476ab===_0xf148('0x92')||_0xe476ab===_0xf148('0x93')||_0xe476ab===_0xf148('0x94')||_0xe476ab===_0xf148('0x95')||_0xe476ab===_0xf148('0x96')||_0xe476ab===_0xf148('0x97')||_0xe476ab===_0xf148('0x98'))){_0x5bd052['push'](new Extension(_0x2b8301,_0x11c57b,'FAXOPT('+_0xe476ab+')='+_0x2b8301[_0xe476ab],'Set'));_0x11c57b+=0x1;}}_0x5bd052[_0xf148('0x8d')](new Extension(_0x2b8301,_0x11c57b,'6','Wait'));_0x11c57b+=0x1;_0x5bd052[_0xf148('0x8d')](new Extension(_0x2b8301,_0x11c57b,_0xf148('0x99'),'ReceiveFax'));_0x11c57b=0x0;return _0x5bd052;}exports['addAccountApplications']=function(_0x1b7d5b,_0x4c698d,_0x36be06){var _0x33fc7b;return db[_0xf148('0x7b')][_0xf148('0x7c')](function(_0x16f185){return db[_0xf148('0x41')][_0xf148('0x5b')](_0x1b7d5b[_0xf148('0x64')],{'transaction':_0x16f185})[_0xf148('0x22')](function(_0x138b55){_0x33fc7b=_0x138b55[_0xf148('0x36')]({'plain':!![]});return db[_0xf148('0x9a')]['bulkCreate'](createExtensionsReciveFax(_0x33fc7b),{'transaction':_0x16f185});});})['then'](function(){return _0x33fc7b;})[_0xf148('0x22')](respondWithResult(_0x4c698d,null))[_0xf148('0x2c')](handleError(_0x4c698d,null));};exports['updateAccountApplications']=function(_0xf5348,_0x403ccc,_0x58e2d5){var _0x39dc42;return db[_0xf148('0x7b')][_0xf148('0x7c')](function(_0x5a1f66){return db[_0xf148('0x41')][_0xf148('0x63')](_0xf5348['body'],{'where':{'id':_0xf5348[_0xf148('0x64')]['id']},'transaction':_0x5a1f66})[_0xf148('0x22')](function(_0x560058){return db[_0xf148('0x9a')][_0xf148('0x38')]({'where':{'FaxAccountId':_0xf5348[_0xf148('0x64')]['id']},'transaction':_0x5a1f66})[_0xf148('0x22')](function(_0x4c649d){return db[_0xf148('0x9a')]['bulkCreate'](createExtensionsReciveFax(_[_0xf148('0x9b')](_0xf5348[_0xf148('0x64')],[_0xf148('0x9c'),_0xf148('0x45'),_0xf148('0x9d'),_0xf148('0x9e'),_0xf148('0x9f'),_0xf148('0xa0')])),{'transaction':_0x5a1f66});});});})[_0xf148('0x22')](function(){return db[_0xf148('0x41')][_0xf148('0xa1')](_0xf5348['body']['id']);})[_0xf148('0x22')](respondWithResult(_0x403ccc,null))[_0xf148('0x2c')](handleError(_0x403ccc,null));};exports[_0xf148('0xa2')]=function(_0x3d4926,_0x107f4f,_0x1914a8){var _0x3c62c9={'raw':!![],'where':{}};var _0x1eb4bb={};var _0x3b7f18={'count':0x0,'rows':[]};return db[_0xf148('0x41')][_0xf148('0x6e')]({'where':{'id':_0x3d4926['params']['id']}})[_0xf148('0x22')](handleEntityNotFound(_0x107f4f,null))[_0xf148('0x22')](function(_0x2a21bb){if(_0x2a21bb){_0x1eb4bb[_0xf148('0x46')]=_['keys'](db[_0xf148('0xa3')]['rawAttributes']);_0x1eb4bb[_0xf148('0x4a')]=_[_0xf148('0x47')](_0x3d4926[_0xf148('0x4a')]);_0x1eb4bb[_0xf148('0x48')]=_[_0xf148('0x49')](_0x1eb4bb[_0xf148('0x46')],_0x1eb4bb[_0xf148('0x4a')]);_0x3c62c9[_0xf148('0x4b')]=_[_0xf148('0x49')](_0x1eb4bb[_0xf148('0x46')],qs[_0xf148('0x4c')](_0x3d4926[_0xf148('0x4a')]['fields']));_0x3c62c9[_0xf148('0x4b')]=_0x3c62c9[_0xf148('0x4b')][_0xf148('0x4d')]?_0x3c62c9[_0xf148('0x4b')]:_0x1eb4bb[_0xf148('0x46')];if(!_0x3d4926[_0xf148('0x4a')]['hasOwnProperty']('nolimit')){_0x3c62c9['limit']=qs[_0xf148('0x30')](_0x3d4926[_0xf148('0x4a')]['limit']);_0x3c62c9[_0xf148('0x33')]=qs[_0xf148('0x33')](_0x3d4926[_0xf148('0x4a')][_0xf148('0x33')]);}_0x3c62c9[_0xf148('0x50')]=qs[_0xf148('0x51')](_0x3d4926[_0xf148('0x4a')][_0xf148('0x51')]);_0x3c62c9['where']=qs[_0xf148('0x48')](_[_0xf148('0x69')](_0x3d4926[_0xf148('0x4a')],_0x1eb4bb[_0xf148('0x48')]));_0x3c62c9['where'][_0xf148('0x67')]=_0x2a21bb['id'];if(_0x3d4926['query'][_0xf148('0x6a')]){_0x3c62c9['where']=_['merge'](_0x3c62c9[_0xf148('0x52')],{'$or':_[_0xf148('0x40')](_0x3c62c9[_0xf148('0x4b')],function(_0x160735){var _0x3f820a={};_0x3f820a[_0x160735]={'$like':'%'+_0x3d4926[_0xf148('0x4a')][_0xf148('0x6a')]+'%'};return _0x3f820a;})});}if(_0x3d4926['query']['$gte']){var _0x2e32b0=_0x3d4926[_0xf148('0x4a')][_0xf148('0xa4')]['split'](',');var _0x2eb188={};_0x2eb188[_0x2e32b0[0x0]]={'$gte':moment(_0x2e32b0[0x1])[_0xf148('0xa5')]('YYYY-MM-DD\x20HH:mm:ss')};_0x3c62c9[_0xf148('0x52')]=_[_0xf148('0x53')](_0x3c62c9['where'],_0x2eb188);}_0x3c62c9=_['merge']({},_0x3c62c9,_0x3d4926[_0xf148('0x54')]);return db['FaxMessage'][_0xf148('0x32')]({'where':_0x3c62c9['where']})[_0xf148('0x22')](function(_0x4d9860){_0x3b7f18[_0xf148('0x32')]=_0x4d9860;if(_0x3d4926[_0xf148('0x4a')][_0xf148('0x55')]){_0x3c62c9['include']=[{'all':!![]}];}return db[_0xf148('0xa3')]['findAll'](_0x3c62c9);})[_0xf148('0x22')](function(_0x1b86aa){_0x3b7f18['rows']=_0x1b86aa;return _0x3b7f18;});}})[_0xf148('0x22')](respondWithFilteredResult(_0x107f4f,_0x3c62c9))[_0xf148('0x2c')](handleError(_0x107f4f,null));};exports[_0xf148('0x3c')]=function(_0x52e9ff,_0x1b1694,_0x1e614d){var _0xac5964,_0x319b17={},_0x175deb;if(_0x52e9ff[_0xf148('0x64')]['to']){_0x175deb=_0x52e9ff['body']['to'][0x0];}return db['FaxAccount'][_0xf148('0x60')]({'where':{'id':_0x52e9ff[_0xf148('0x5a')]['id']},'include':[{'model':db[_0xf148('0xa6')],'as':_0xf148('0xa7'),'include':[{'model':db[_0xf148('0x73')],'as':_0xf148('0xa8'),'where':{'fax':_0x175deb},'limit':0x1,'order':[[_0xf148('0x9e'),_0xf148('0xa9')]]}]}]})[_0xf148('0x22')](handleEntityNotFound(_0x1b1694,null))[_0xf148('0x22')](function(_0x3a6a49){_0xac5964=_0x3a6a49;if(_0x52e9ff[_0xf148('0x64')][_0xf148('0xaa')]&&_0x52e9ff[_0xf148('0x64')][_0xf148('0xaa')]['length']){for(var _0x235f4f=0x0;_0x235f4f<_0x52e9ff[_0xf148('0x64')][_0xf148('0xaa')][_0xf148('0x4d')];_0x235f4f+=0x1){_0x52e9ff[_0xf148('0x64')][_0xf148('0xaa')][_0x235f4f]={'filename':_0x52e9ff[_0xf148('0x64')]['attachments'][_0x235f4f][_0xf148('0x3b')],'id':_0x52e9ff['body']['attachments'][_0x235f4f]['id'],'path':path[_0xf148('0xab')](config[_0xf148('0xac')],'server/files/attachments',_0x52e9ff[_0xf148('0x64')][_0xf148('0xaa')][_0x235f4f][_0xf148('0xad')])};}}return respondWithRpcPromise('CheckAfterSend',_0xf148('0xae'),{'FaxAccountId':_[_0xf148('0xaf')](_0x52e9ff['params']['id'])?undefined:_0x52e9ff[_0xf148('0x5a')]['id'],'path':_['isNil'](_0x52e9ff[_0xf148('0x64')][_0xf148('0xaa')][0x0]['path'])?undefined:_0x52e9ff[_0xf148('0x64')][_0xf148('0xaa')][0x0]['path'],'fax':_[_0xf148('0xaf')](_0x52e9ff[_0xf148('0x64')]['to'][0x0])?undefined:_0x52e9ff[_0xf148('0x64')]['to'][0x0]},client9002);})['then'](function(){if(_0xac5964){if(_['isNil'](_0x52e9ff[_0xf148('0x64')][_0xf148('0xb0')])){_0x52e9ff[_0xf148('0x64')]['from']=util[_0xf148('0xa5')](_0xf148('0xb1'),_0xac5964[_0xf148('0x3b')],_0xac5964[_0xf148('0xb2')]);}if(_0xac5964[_0xf148('0xa7')]){if(_0xac5964['List'][_0xf148('0xa8')][_0xf148('0x4d')]){return _0xac5964[_0xf148('0xa7')][_0xf148('0xa8')][0x0];}else{return db[_0xf148('0x73')][_0xf148('0x5b')](_[_0xf148('0x19')](_0x52e9ff[_0xf148('0x64')],{'firstName':_0x52e9ff['body']['to'][0x0],'phone':_0x52e9ff[_0xf148('0x64')]['to'][0x0],'fax':_0x52e9ff[_0xf148('0x64')]['to'][0x0],'ListId':_0xac5964[_0xf148('0xa0')]}));}}else{throw new Error('List\x20not\x20found');}}else{throw new Error(_0xf148('0xb3'));}})['then'](function(_0x1941cc){if(_0x1941cc){return db[_0xf148('0x71')]['find']({'where':{'ContactId':_0x1941cc['id'],'closed':![],'FaxAccountId':_0xac5964['id']}})['then'](function(_0x4504cc){if(_0x4504cc){return[_0x4504cc,![]];}return db[_0xf148('0x71')][_0xf148('0x5b')]({'UserId':_0x52e9ff[_0xf148('0x5c')]['id'],'ContactId':_0x1941cc['id'],'FaxAccountId':_0xac5964['id'],'fax':_0x52e9ff[_0xf148('0x64')]['to'][0x0],'firstMsgDirection':_0xf148('0xb4'),'Messages':[_[_0xf148('0x53')](_0x52e9ff['body'],{'read':![],'body':_0x52e9ff[_0xf148('0x64')][_0xf148('0xaa')][0x0][_0xf148('0xb5')],'FaxAccountId':_0xac5964['id'],'UserId':_0x52e9ff[_0xf148('0x5c')]['id'],'ContactId':_0x1941cc['id'],'AttachmentId':_0x52e9ff['body'][_0xf148('0xaa')][0x0]['id']})]},{'include':[{'model':db[_0xf148('0xa3')],'as':_0xf148('0xb6')}]})['then'](function(_0xfb98ff){return[_0xfb98ff,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0xf148('0xb7')](function(_0x498709,_0x258994){if(_0x258994){return _0x498709;}return db[_0xf148('0xa3')][_0xf148('0x5b')]({'direction':_0xf148('0xb4'),'read':![],'body':_0x52e9ff[_0xf148('0x64')][_0xf148('0xaa')][0x0]['filename'],'FaxAccountId':_0xac5964['id'],'FaxInteractionId':_0x498709['id'],'UserId':_0x52e9ff[_0xf148('0x5c')]['id'],'ContactId':_0x498709[_0xf148('0xb8')],'AttachmentId':_0x52e9ff[_0xf148('0x64')][_0xf148('0xaa')][0x0]['id']})[_0xf148('0x22')](function(_0x1539de){_0x498709['dataValues'][_0xf148('0xb6')]=[];_0x498709[_0xf148('0xb9')][_0xf148('0xb6')][_0xf148('0x8d')](_0x1539de[_0xf148('0xb9')]);return _0x498709;});})[_0xf148('0x22')](function(_0x36c5ff){respondWithRpcPromise(_0xf148('0xba'),_0xf148('0xba'),{'FaxAccountId':_[_0xf148('0xaf')](_0x52e9ff[_0xf148('0x5a')]['id'])?undefined:_0x52e9ff[_0xf148('0x5a')]['id'],'path':_[_0xf148('0xaf')](_0x52e9ff['body'][_0xf148('0xaa')][0x0][_0xf148('0x6')])?undefined:_0x52e9ff[_0xf148('0x64')]['attachments'][0x0][_0xf148('0x6')],'fax':_[_0xf148('0xaf')](_0x52e9ff[_0xf148('0x64')]['to'][0x0])?undefined:_0x52e9ff[_0xf148('0x64')]['to'][0x0],'AttachmentId':_0x52e9ff[_0xf148('0x64')][_0xf148('0xaa')][0x0]['id']},client9002)[_0xf148('0x22')](function(_0x368a88){logger['info'](_0xf148('0xbb'),_0x368a88);})[_0xf148('0x2c')](function(_0x1dc654){logger[_0xf148('0x23')]('SendFaxRpc,\x20%s',_0x1dc654);});return _0x36c5ff;})['then'](respondWithResult(_0x1b1694,null))[_0xf148('0x2c')](handleError(_0x1b1694,null));};exports['addAgents']=function(_0x24ee69,_0x2cadf7,_0x5a9e77){return db[_0xf148('0x41')][_0xf148('0x60')]({'where':{'id':_0x24ee69[_0xf148('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2cadf7,null))[_0xf148('0x22')](function(_0x44086b){if(_0x44086b){return _0x44086b[_0xf148('0xbc')](_0x24ee69[_0xf148('0x64')][_0xf148('0x6c')],_[_0xf148('0x9b')](_0x24ee69[_0xf148('0x64')],['ids','id'])||{})[_0xf148('0xb7')](function(_0x4fe89a){for(var _0x3a4a1b=0x0;_0x3a4a1b<_0x24ee69['body'][_0xf148('0x6c')][_0xf148('0x4d')];_0x3a4a1b+=0x1){socket[_0xf148('0xbd')](_0xf148('0xbe'),{'UserId':Number(_0x24ee69[_0xf148('0x64')]['ids'][_0x3a4a1b]),'FaxAccountId':Number(_0x24ee69[_0xf148('0x5a')]['id'])});}return _0x4fe89a;});}})[_0xf148('0x22')](respondWithResult(_0x2cadf7,null))[_0xf148('0x2c')](handleError(_0x2cadf7,null));};exports['removeAgents']=function(_0x339e5f,_0x15e81b,_0x48e76a){return db['FaxAccount'][_0xf148('0x60')]({'where':{'id':_0x339e5f[_0xf148('0x5a')]['id']}})[_0xf148('0x22')](handleEntityNotFound(_0x15e81b,null))[_0xf148('0x22')](function(_0x5ea3b3){if(_0x5ea3b3){return _0x5ea3b3['removeAgents'](_0x339e5f['query'][_0xf148('0x6c')])[_0xf148('0x22')](function(){if(_[_0xf148('0xbf')](_0x339e5f['query'][_0xf148('0x6c')])){for(var _0x5ed6c2=0x0;_0x5ed6c2<_0x339e5f[_0xf148('0x4a')][_0xf148('0x6c')][_0xf148('0x4d')];_0x5ed6c2+=0x1){socket[_0xf148('0xbd')](_0xf148('0xc0'),{'UserId':Number(_0x339e5f[_0xf148('0x4a')][_0xf148('0x6c')][_0x5ed6c2]),'FaxAccountId':Number(_0x339e5f[_0xf148('0x5a')]['id'])});}}else{socket[_0xf148('0xbd')](_0xf148('0xc0'),{'UserId':Number(_0x339e5f[_0xf148('0x4a')][_0xf148('0x6c')]),'FaxAccountId':Number(_0x339e5f[_0xf148('0x5a')]['id'])});}});}})[_0xf148('0x22')](respondWithStatusCode(_0x15e81b,null))[_0xf148('0x2c')](handleError(_0x15e81b,null));};exports['getAgents']=function(_0x3d1ddf,_0x31ca3f,_0x16d56f){var _0x422bee={};var _0x708816={};var _0x288e03;var _0x1e30db;return db['FaxAccount'][_0xf148('0x6e')]({'where':{'id':_0x3d1ddf[_0xf148('0x5a')]['id']}})[_0xf148('0x22')](handleEntityNotFound(_0x31ca3f,null))[_0xf148('0x22')](function(_0x571276){if(_0x571276){_0x288e03=_0x571276;_0x708816[_0xf148('0x46')]=_[_0xf148('0x47')](db[_0xf148('0x75')][_0xf148('0x42')]);_0x708816[_0xf148('0x4a')]=_['keys'](_0x3d1ddf[_0xf148('0x4a')]);_0x708816['filters']=_[_0xf148('0x49')](_0x708816[_0xf148('0x46')],_0x708816[_0xf148('0x4a')]);_0x422bee[_0xf148('0x4b')]=_['intersection'](_0x708816[_0xf148('0x46')],qs[_0xf148('0x4c')](_0x3d1ddf[_0xf148('0x4a')]['fields']));_0x422bee['attributes']=_0x422bee[_0xf148('0x4b')][_0xf148('0x4d')]?_0x422bee[_0xf148('0x4b')]:_0x708816[_0xf148('0x46')];_0x422bee[_0xf148('0x50')]=qs[_0xf148('0x51')](_0x3d1ddf['query']['sort']);_0x422bee[_0xf148('0x52')]=qs[_0xf148('0x48')](_[_0xf148('0x69')](_0x3d1ddf[_0xf148('0x4a')],_0x708816[_0xf148('0x48')]));if(_0x3d1ddf[_0xf148('0x4a')][_0xf148('0x6a')]){_0x422bee['where']=_['merge'](_0x422bee['where'],{'$or':_[_0xf148('0x40')](_0x422bee[_0xf148('0x4b')],function(_0x55f477){var _0x455127={};_0x455127[_0x55f477]={'$like':'%'+_0x3d1ddf[_0xf148('0x4a')][_0xf148('0x6a')]+'%'};return _0x455127;})});}_0x422bee=_[_0xf148('0x53')]({},_0x422bee,_0x3d1ddf[_0xf148('0x54')]);return _0x288e03[_0xf148('0xc1')](_0x422bee);}})[_0xf148('0x22')](function(_0x53aa29){if(_0x53aa29){_0x1e30db=_0x53aa29[_0xf148('0x4d')];if(!_0x3d1ddf[_0xf148('0x4a')][_0xf148('0x4e')]('nolimit')){_0x422bee['limit']=qs[_0xf148('0x30')](_0x3d1ddf[_0xf148('0x4a')][_0xf148('0x30')]);_0x422bee[_0xf148('0x33')]=qs[_0xf148('0x33')](_0x3d1ddf[_0xf148('0x4a')]['offset']);}return _0x288e03['getAgents'](_0x422bee);}})[_0xf148('0x22')](function(_0x4b2b3c){if(_0x4b2b3c){return _0x4b2b3c?{'count':_0x1e30db,'rows':_0x4b2b3c}:null;}})['then'](respondWithResult(_0x31ca3f,null))[_0xf148('0x2c')](handleError(_0x31ca3f,null));};
\ No newline at end of file
index c63e6df..61bdb4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x185f=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x4c1654,_0x168acc){var _0x3b2955=function(_0x5cdd53){while(--_0x5cdd53){_0x4c1654['push'](_0x4c1654['shift']());}};_0x3b2955(++_0x168acc);}(_0x185f,0x1a4));var _0xf185=function(_0x1cbade,_0x375597){_0x1cbade=_0x1cbade-0x0;var _0x228425=_0x185f[_0x1cbade];return _0x228425;};'use strict';var EventEmitter=require('events');var FaxAccount=require('../../mysqldb')['db']['FaxAccount'];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0xf185('0x0')](0x0);var events={'afterCreate':_0xf185('0x1'),'afterUpdate':_0xf185('0x2'),'afterDestroy':_0xf185('0x3')};function emitEvent(_0x46f414){return function(_0x4e7065,_0x3b36d5,_0x2c8d46){FaxAccountEvents[_0xf185('0x4')](_0x46f414+':'+_0x4e7065['id'],_0x4e7065);FaxAccountEvents[_0xf185('0x4')](_0x46f414,_0x4e7065);_0x2c8d46(null);};}for(var e in events){if(events[_0xf185('0x5')](e)){var event=events[e];FaxAccount[_0xf185('0x6')](e,emitEvent(event));}}module['exports']=FaxAccountEvents;
\ No newline at end of file
+var _0xceaf=['emit','hook','exports','events','setMaxListeners','save','update'];(function(_0x16e0f5,_0x4ec0f3){var _0x4839d5=function(_0x296b8f){while(--_0x296b8f){_0x16e0f5['push'](_0x16e0f5['shift']());}};_0x4839d5(++_0x4ec0f3);}(_0xceaf,0x17d));var _0xfcea=function(_0x9ae5d3,_0xe01602){_0x9ae5d3=_0x9ae5d3-0x0;var _0x1a2256=_0xceaf[_0x9ae5d3];return _0x1a2256;};'use strict';var EventEmitter=require(_0xfcea('0x0'));var FaxAccount=require('../../mysqldb')['db']['FaxAccount'];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0xfcea('0x1')](0x0);var events={'afterCreate':_0xfcea('0x2'),'afterUpdate':_0xfcea('0x3'),'afterDestroy':'remove'};function emitEvent(_0x1b4c58){return function(_0x3f7a9d,_0x11a775,_0xfb4ceb){FaxAccountEvents[_0xfcea('0x4')](_0x1b4c58+':'+_0x3f7a9d['id'],_0x3f7a9d);FaxAccountEvents[_0xfcea('0x4')](_0x1b4c58,_0x3f7a9d);_0xfb4ceb(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxAccount[_0xfcea('0x5')](e,emitEvent(event));}}module[_0xfcea('0x6')]=FaxAccountEvents;
\ No newline at end of file
index 265828f..49f1f5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe950=['exports','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x5d793f,_0x31192c){var _0x23a7f2=function(_0x5b93c8){while(--_0x5b93c8){_0x5d793f['push'](_0x5d793f['shift']());}};_0x23a7f2(++_0x31192c);}(_0xe950,0x155));var _0x0e95=function(_0x577669,_0x3fa500){_0x577669=_0x577669-0x0;var _0x3eaca4=_0xe950[_0x577669];return _0x3eaca4;};'use strict';var _=require(_0x0e95('0x0'));var util=require(_0x0e95('0x1'));var logger=require(_0x0e95('0x2'))(_0x0e95('0x3'));var moment=require(_0x0e95('0x4'));var BPromise=require(_0x0e95('0x5'));var rp=require(_0x0e95('0x6'));var fs=require('fs');var path=require(_0x0e95('0x7'));var rimraf=require(_0x0e95('0x8'));var config=require('../../config/environment');var attributes=require('./faxAccount.attributes');module[_0x0e95('0x9')]=function(_0x4e61f9,_0x40be53){return _0x4e61f9['define']('FaxAccount',attributes,{'tableName':'fax_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9269=['util','../../config/logger','api','moment','bluebird','request-promise','path','./faxAccount.attributes','exports','define','FaxAccount','lodash'];(function(_0x271d5e,_0xcbbb9){var _0x1e9a74=function(_0x364f3a){while(--_0x364f3a){_0x271d5e['push'](_0x271d5e['shift']());}};_0x1e9a74(++_0xcbbb9);}(_0x9269,0x1df));var _0x9926=function(_0x47a204,_0x24b906){_0x47a204=_0x47a204-0x0;var _0x5623fc=_0x9269[_0x47a204];return _0x5623fc;};'use strict';var _=require(_0x9926('0x0'));var util=require(_0x9926('0x1'));var logger=require(_0x9926('0x2'))(_0x9926('0x3'));var moment=require(_0x9926('0x4'));var BPromise=require(_0x9926('0x5'));var rp=require(_0x9926('0x6'));var fs=require('fs');var path=require(_0x9926('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x9926('0x8'));module[_0x9926('0x9')]=function(_0x5ed7a8,_0x7ff9c6){return _0x5ed7a8[_0x9926('0xa')](_0x9926('0xb'),attributes,{'tableName':'fax_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 78b9431..5b93433 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb74b=['info','catch','FaxAccount','findAll','options','raw','where','attributes','limit','include','map','model','GetFaxAccount','NotifyFaxAccount','body','describe','no\x20available\x20attributes','difference','keys','createdAt','updatedAt','CompanyId','ListId','isNil','from','ValidationError','Sequelize','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','CmList','List','CmContact','Contacts','FaxApplication','get','applications','list','orderBy','priority','asc','Applications','length','create','contact','fax','FaxInteraction','autoclose','push','close','unmanaged','*,*,*,*','created','FaxMessage','AttachmentId','interaction','UserId','User','unshift','agent','name','waitForTheAssignedAgent','Start','startRouting','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0xd30e97,_0x317f5b){var _0x33645d=function(_0x389251){while(--_0x389251){_0xd30e97['push'](_0xd30e97['shift']());}};_0x33645d(++_0x317f5b);}(_0xb74b,0xfa));var _0xbb74=function(_0x124c75,_0x332013){_0x124c75=_0x124c75-0x0;var _0x5c5471=_0xb74b[_0x124c75];return _0x5c5471;};'use strict';var _=require(_0xbb74('0x0'));var util=require(_0xbb74('0x1'));var moment=require(_0xbb74('0x2'));var BPromise=require(_0xbb74('0x3'));var rs=require(_0xbb74('0x4'));var fs=require('fs');var Redis=require(_0xbb74('0x5'));var db=require(_0xbb74('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xbb74('0x7'));var config=require(_0xbb74('0x8'));var jayson=require(_0xbb74('0x9'));var client=jayson[_0xbb74('0xa')][_0xbb74('0xb')]({'port':0x232c});config[_0xbb74('0xc')]=_[_0xbb74('0xd')](config[_0xbb74('0xc')],{'host':_0xbb74('0xe'),'port':0x18eb});var socket=require(_0xbb74('0xf'))(new Redis(config[_0xbb74('0xc')]));require('./faxAccount.socket')[_0xbb74('0x10')](socket);function respondWithRpcPromise(_0x375b02,_0x1044a6,_0x3079b5){return new BPromise(function(_0x3183e6,_0x59b6b7){return client[_0xbb74('0x11')](_0x375b02,_0x3079b5)[_0xbb74('0x12')](function(_0xb563c2){logger['info'](_0xbb74('0x13'),_0x1044a6,_0xbb74('0x14'));logger[_0xbb74('0x15')](_0xbb74('0x16'),_0x1044a6,_0xbb74('0x14'),JSON['stringify'](_0xb563c2));if(_0xb563c2[_0xbb74('0x17')]){if(_0xb563c2['error'][_0xbb74('0x18')]===0x1f4){logger[_0xbb74('0x17')](_0xbb74('0x13'),_0x1044a6,_0xb563c2[_0xbb74('0x17')][_0xbb74('0x19')]);return _0x59b6b7(_0xb563c2[_0xbb74('0x17')][_0xbb74('0x19')]);}logger[_0xbb74('0x17')](_0xbb74('0x13'),_0x1044a6,_0xb563c2[_0xbb74('0x17')][_0xbb74('0x19')]);return _0x3183e6(_0xb563c2[_0xbb74('0x17')][_0xbb74('0x19')]);}else{logger[_0xbb74('0x1a')]('FaxAccount,\x20%s,\x20%s',_0x1044a6,'request\x20sent');_0x3183e6(_0xb563c2['result'][_0xbb74('0x19')]);}})[_0xbb74('0x1b')](function(_0x1d8a50){logger['error'](_0xbb74('0x13'),_0x1044a6,_0x1d8a50);_0x59b6b7(_0x1d8a50);});});}exports['GetFaxAccount']=function(_0x5a6acd){var _0x5048ce=this;return new Promise(function(_0x1504f2,_0x44ef0e){return db[_0xbb74('0x1c')][_0xbb74('0x1d')]({'raw':_0x5a6acd[_0xbb74('0x1e')]?_0x5a6acd['options'][_0xbb74('0x1f')]===undefined?!![]:![]:!![],'where':_0x5a6acd[_0xbb74('0x1e')]?_0x5a6acd[_0xbb74('0x1e')][_0xbb74('0x20')]||null:null,'attributes':_0x5a6acd[_0xbb74('0x1e')]?_0x5a6acd['options'][_0xbb74('0x21')]||null:null,'limit':_0x5a6acd[_0xbb74('0x1e')]?_0x5a6acd[_0xbb74('0x1e')][_0xbb74('0x22')]||null:null,'include':_0x5a6acd[_0xbb74('0x1e')]?_0x5a6acd[_0xbb74('0x1e')][_0xbb74('0x23')]?_[_0xbb74('0x24')](_0x5a6acd[_0xbb74('0x1e')][_0xbb74('0x23')],function(_0x439f9e){return{'model':db[_0x439f9e['model']],'as':_0x439f9e['as'],'attributes':_0x439f9e[_0xbb74('0x21')],'include':_0x439f9e['include']?_[_0xbb74('0x24')](_0x439f9e[_0xbb74('0x23')],function(_0x270352){return{'model':db[_0x270352[_0xbb74('0x25')]],'as':_0x270352['as'],'attributes':_0x270352[_0xbb74('0x21')],'include':_0x270352['include']?_[_0xbb74('0x24')](_0x270352[_0xbb74('0x23')],function(_0x742bc7){return{'model':db[_0x742bc7[_0xbb74('0x25')]],'as':_0x742bc7['as'],'attributes':_0x742bc7[_0xbb74('0x21')]};}):[]};}):[]};}):[]:[]})[_0xbb74('0x12')](function(_0x526d22){logger[_0xbb74('0x1a')]('GetFaxAccount',_0x5a6acd);logger[_0xbb74('0x15')]('GetFaxAccount',_0x5a6acd,JSON['stringify'](_0x526d22));_0x1504f2(_0x526d22);})[_0xbb74('0x1b')](function(_0x52c805){logger[_0xbb74('0x17')](_0xbb74('0x26'),_0x52c805[_0xbb74('0x19')],_0x5a6acd);_0x44ef0e(_0x5048ce[_0xbb74('0x17')](0x1f4,_0x52c805[_0xbb74('0x19')]));});});};exports[_0xbb74('0x27')]=function(_0x15f57a,_0x4c6e44,_0x2c4bad){var _0x37b736=this;return new Promise(function(_0x5e15ff,_0x180250){var _0x27b4fb={'body':_0x15f57a[_0xbb74('0x28')],'channel':'fax'};var _0x26d4a8=[];var _0x2f000f=[];var _0x50967c={};return db['CmContact'][_0xbb74('0x29')]()['then'](function(_0x4241f7){if(!_0x4241f7){throw new db['Sequelize']['ValidationError'](_0xbb74('0x2a'));}_0x26d4a8=_[_0xbb74('0x2b')](_[_0xbb74('0x2c')](_0x4241f7),[_0xbb74('0x2d'),_0xbb74('0x2e')]);_0x2f000f=_[_0xbb74('0x2b')](_[_0xbb74('0x2c')](_0x4241f7),[_0xbb74('0x2d'),_0xbb74('0x2e'),_0xbb74('0x2f'),_0xbb74('0x30')]);if(_0x15f57a[_0xbb74('0x28')]['id']){delete _0x15f57a[_0xbb74('0x28')]['id'];}if(_[_0xbb74('0x31')](_0x15f57a[_0xbb74('0x28')][_0xbb74('0x32')])){throw new db['Sequelize'][(_0xbb74('0x33'))]('from\x20is\x20mandatory');}if(_[_0xbb74('0x31')](_0x15f57a[_0xbb74('0x28')][_0xbb74('0x28')])||_0x15f57a[_0xbb74('0x28')][_0xbb74('0x28')]===''){throw new db[(_0xbb74('0x34'))][(_0xbb74('0x33'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xbb74('0x31')](_0x15f57a['body']['mapKey'])){throw new db['Sequelize'][(_0xbb74('0x33'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x2f000f);}if(!_[_0xbb74('0x35')](_0x2f000f,_0x15f57a[_0xbb74('0x28')][_0xbb74('0x36')])){throw new db[(_0xbb74('0x34'))][(_0xbb74('0x33'))](_0xbb74('0x37')+_0x2f000f);}_0x50967c[_0x15f57a[_0xbb74('0x28')][_0xbb74('0x36')]]=_0x15f57a[_0xbb74('0x28')]['from'];})[_0xbb74('0x12')](function(){return db[_0xbb74('0x1c')][_0xbb74('0x38')]({'where':{'id':_0x15f57a[_0xbb74('0x39')]['id']},'include':[{'model':db[_0xbb74('0x3a')],'as':_0xbb74('0x3b'),'include':[{'model':db[_0xbb74('0x3c')],'as':_0xbb74('0x3d'),'where':_0x50967c,'limit':0x1,'order':[[_0xbb74('0x2e'),'DESC']]}]},{'model':db[_0xbb74('0x3e')],'as':'Applications'}]});})['then'](function(_0x4215d7){if(_0x4215d7&&_0x4215d7['List']){var _0x34ccc3=_0x4215d7[_0xbb74('0x3f')]({'plain':!![]});_0x27b4fb['account']=_0x34ccc3;_0x27b4fb[_0xbb74('0x40')]=_0x34ccc3['Applications'];_0x27b4fb[_0xbb74('0x41')]=_0x34ccc3['List'];_0x27b4fb['applications']=_[_0xbb74('0x42')](_0x27b4fb['applications'],[_0xbb74('0x43')],[_0xbb74('0x44')]);if(_0x27b4fb['account']['Applications']){delete _0x27b4fb[_0xbb74('0x39')][_0xbb74('0x45')];}if(_0x27b4fb[_0xbb74('0x39')][_0xbb74('0x3b')]&&_0x27b4fb['account'][_0xbb74('0x3b')][_0xbb74('0x3d')][_0xbb74('0x46')]){return _0x27b4fb[_0xbb74('0x39')][_0xbb74('0x3b')]['Contacts'][0x0];}var _0x381a32=_[_0xbb74('0xd')](_0x15f57a[_0xbb74('0x28')],{'firstName':_0x15f57a[_0xbb74('0x28')][_0xbb74('0x32')],'ListId':_0x34ccc3[_0xbb74('0x30')]});_0x381a32[_0x15f57a[_0xbb74('0x28')][_0xbb74('0x36')]]=_0x15f57a[_0xbb74('0x28')]['from'];return db[_0xbb74('0x3c')][_0xbb74('0x47')](_0x381a32,{'fields':_0x26d4a8,'raw':!![]});}})[_0xbb74('0x12')](function(_0x47f41c){_0x27b4fb[_0xbb74('0x48')]=_0x47f41c;if(_0x47f41c){var _0x5bdd3b={'ContactId':_0x47f41c['id'],'FaxAccountId':_0x15f57a[_0xbb74('0x39')]['id'],'fax':_0x47f41c[_0xbb74('0x49')]};return db[_0xbb74('0x4a')]['find']({'where':{'ContactId':_0x47f41c['id'],'closed':![],'FaxAccountId':_0x15f57a[_0xbb74('0x39')]['id']}})[_0xbb74('0x12')](function(_0x41b14b){if(_0x41b14b){return[_0x41b14b,![]];}return db[_0xbb74('0x4a')][_0xbb74('0x47')](_0x5bdd3b)['then'](function(_0x5b654d){return[_0x5b654d,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})['spread'](function(_0x462cc4,_0x3768c7){var _0x11d958=_0x462cc4[_0xbb74('0x3f')]({'plain':!![]});if(_0x3768c7){if(_0x27b4fb[_0xbb74('0x39')][_0xbb74('0x4b')]){_0x27b4fb[_0xbb74('0x40')][_0xbb74('0x4c')]({'id':0x0,'priority':_0x27b4fb['applications'][_0xbb74('0x46')]+0x1,'app':_0xbb74('0x4d'),'appdata':_0xbb74('0x4e'),'interval':_0xbb74('0x4f')});}_0x11d958[_0xbb74('0x50')]=!![];}else{_0x11d958[_0xbb74('0x50')]=![];}_0x27b4fb['interaction']=_0x11d958;return db[_0xbb74('0x51')][_0xbb74('0x47')]({'body':_0x15f57a['body']['body'],'FaxAccountId':_0x15f57a[_0xbb74('0x39')]['id'],'FaxInteractionId':_0x462cc4['id'],'direction':'in','ContactId':_0x462cc4['ContactId'],'AttachmentId':_0x15f57a[_0xbb74('0x28')][_0xbb74('0x52')]});})[_0xbb74('0x12')](function(_0x27b82c){_0x27b4fb['message']=_0x27b82c;if(_0x27b4fb[_0xbb74('0x53')][_0xbb74('0x54')]){return db[_0xbb74('0x55')][_0xbb74('0x38')]({'attributes':['id','name'],'where':{'id':_0x27b4fb['interaction'][_0xbb74('0x54')]}})[_0xbb74('0x12')](function(_0x369014){if(_0x369014){_0x27b4fb[_0xbb74('0x40')][_0xbb74('0x56')]({'id':0x0,'priority':0x0,'app':_0xbb74('0x57'),'appdata':_0x369014[_0xbb74('0x58')]+','+(_0x27b4fb['account'][_0xbb74('0x59')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0xbb74('0x5a'),_0xbb74('0x5b'),_0x27b4fb);});}return respondWithRpcPromise(_0xbb74('0x5a'),_0xbb74('0x5b'),_0x27b4fb);})[_0xbb74('0x12')](function(_0x384602){_0x5e15ff(_0x384602);})[_0xbb74('0x1b')](function(_0x22d726){_0x180250(_0x37b736[_0xbb74('0x17')](0x1f4,_0x22d726[_0xbb74('0x19')]));});});};
\ No newline at end of file
+var _0x3fec=['includes','FaxAccount','find','account','Contacts','DESC','FaxApplication','Applications','List','get','applications','list','orderBy','priority','asc','length','defaults','create','contact','FaxInteraction','Contact\x20not\x20found','spread','autoclose','close','unmanaged','*,*,*,*','created','interaction','FaxMessage','AttachmentId','UserId','User','name','waitForTheAssignedAgent','Start','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./faxAccount.socket','register','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','GetFaxAccount','findAll','options','raw','where','attributes','limit','include','map','model','catch','NotifyFaxAccount','body','fax','CmContact','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','keys','ListId','isNil','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey'];(function(_0x48df0f,_0x5424c4){var _0x536377=function(_0x47a88a){while(--_0x47a88a){_0x48df0f['push'](_0x48df0f['shift']());}};_0x536377(++_0x5424c4);}(_0x3fec,0xd9));var _0xc3fe=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x3fec[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xc3fe('0x0'));var util=require(_0xc3fe('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xc3fe('0x2'));var fs=require('fs');var Redis=require(_0xc3fe('0x3'));var db=require(_0xc3fe('0x4'))['db'];var utils=require(_0xc3fe('0x5'));var logger=require(_0xc3fe('0x6'))(_0xc3fe('0x7'));var config=require(_0xc3fe('0x8'));var jayson=require(_0xc3fe('0x9'));var client=jayson[_0xc3fe('0xa')][_0xc3fe('0xb')]({'port':0x232c});config[_0xc3fe('0xc')]=_['defaults'](config[_0xc3fe('0xc')],{'host':_0xc3fe('0xd'),'port':0x18eb});var socket=require(_0xc3fe('0xe'))(new Redis(config[_0xc3fe('0xc')]));require(_0xc3fe('0xf'))[_0xc3fe('0x10')](socket);function respondWithRpcPromise(_0x948aaa,_0x11aa28,_0x3ebecf){return new BPromise(function(_0x3a011f,_0x57277e){return client[_0xc3fe('0x11')](_0x948aaa,_0x3ebecf)[_0xc3fe('0x12')](function(_0x1b9af2){logger[_0xc3fe('0x13')](_0xc3fe('0x14'),_0x11aa28,_0xc3fe('0x15'));logger[_0xc3fe('0x16')](_0xc3fe('0x17'),_0x11aa28,'request\x20sent',JSON[_0xc3fe('0x18')](_0x1b9af2));if(_0x1b9af2[_0xc3fe('0x19')]){if(_0x1b9af2[_0xc3fe('0x19')][_0xc3fe('0x1a')]===0x1f4){logger[_0xc3fe('0x19')](_0xc3fe('0x14'),_0x11aa28,_0x1b9af2[_0xc3fe('0x19')]['message']);return _0x57277e(_0x1b9af2[_0xc3fe('0x19')]['message']);}logger[_0xc3fe('0x19')](_0xc3fe('0x14'),_0x11aa28,_0x1b9af2['error'][_0xc3fe('0x1b')]);return _0x3a011f(_0x1b9af2[_0xc3fe('0x19')][_0xc3fe('0x1b')]);}else{logger[_0xc3fe('0x13')]('FaxAccount,\x20%s,\x20%s',_0x11aa28,_0xc3fe('0x15'));_0x3a011f(_0x1b9af2['result'][_0xc3fe('0x1b')]);}})['catch'](function(_0x3a1e18){logger[_0xc3fe('0x19')](_0xc3fe('0x14'),_0x11aa28,_0x3a1e18);_0x57277e(_0x3a1e18);});});}exports[_0xc3fe('0x1c')]=function(_0x49c31d){var _0x4bffb6=this;return new Promise(function(_0x593cb8,_0x514ce7){return db['FaxAccount'][_0xc3fe('0x1d')]({'raw':_0x49c31d['options']?_0x49c31d[_0xc3fe('0x1e')][_0xc3fe('0x1f')]===undefined?!![]:![]:!![],'where':_0x49c31d[_0xc3fe('0x1e')]?_0x49c31d[_0xc3fe('0x1e')][_0xc3fe('0x20')]||null:null,'attributes':_0x49c31d[_0xc3fe('0x1e')]?_0x49c31d[_0xc3fe('0x1e')][_0xc3fe('0x21')]||null:null,'limit':_0x49c31d[_0xc3fe('0x1e')]?_0x49c31d['options'][_0xc3fe('0x22')]||null:null,'include':_0x49c31d['options']?_0x49c31d[_0xc3fe('0x1e')][_0xc3fe('0x23')]?_[_0xc3fe('0x24')](_0x49c31d[_0xc3fe('0x1e')][_0xc3fe('0x23')],function(_0x3303cc){return{'model':db[_0x3303cc[_0xc3fe('0x25')]],'as':_0x3303cc['as'],'attributes':_0x3303cc[_0xc3fe('0x21')],'include':_0x3303cc['include']?_[_0xc3fe('0x24')](_0x3303cc['include'],function(_0x20dd67){return{'model':db[_0x20dd67[_0xc3fe('0x25')]],'as':_0x20dd67['as'],'attributes':_0x20dd67[_0xc3fe('0x21')],'include':_0x20dd67[_0xc3fe('0x23')]?_[_0xc3fe('0x24')](_0x20dd67[_0xc3fe('0x23')],function(_0x31b3cf){return{'model':db[_0x31b3cf['model']],'as':_0x31b3cf['as'],'attributes':_0x31b3cf['attributes']};}):[]};}):[]};}):[]:[]})[_0xc3fe('0x12')](function(_0x846d0){logger['info'](_0xc3fe('0x1c'),_0x49c31d);logger['debug'](_0xc3fe('0x1c'),_0x49c31d,JSON['stringify'](_0x846d0));_0x593cb8(_0x846d0);})[_0xc3fe('0x26')](function(_0x2473b1){logger['error'](_0xc3fe('0x1c'),_0x2473b1[_0xc3fe('0x1b')],_0x49c31d);_0x514ce7(_0x4bffb6[_0xc3fe('0x19')](0x1f4,_0x2473b1[_0xc3fe('0x1b')]));});});};exports[_0xc3fe('0x27')]=function(_0xe93a9,_0x4da324,_0x2a91f7){var _0x12fe0a=this;return new Promise(function(_0x1e27eb,_0x48f88d){var _0x3b068e={'body':_0xe93a9[_0xc3fe('0x28')],'channel':_0xc3fe('0x29')};var _0x5bb8b5=[];var _0x23e891=[];var _0x6725d0={};return db[_0xc3fe('0x2a')][_0xc3fe('0x2b')]()[_0xc3fe('0x12')](function(_0x184162){if(!_0x184162){throw new db[(_0xc3fe('0x2c'))][(_0xc3fe('0x2d'))](_0xc3fe('0x2e'));}_0x5bb8b5=_[_0xc3fe('0x2f')](_['keys'](_0x184162),[_0xc3fe('0x30'),_0xc3fe('0x31')]);_0x23e891=_['difference'](_[_0xc3fe('0x32')](_0x184162),[_0xc3fe('0x30'),_0xc3fe('0x31'),'CompanyId',_0xc3fe('0x33')]);if(_0xe93a9[_0xc3fe('0x28')]['id']){delete _0xe93a9[_0xc3fe('0x28')]['id'];}if(_[_0xc3fe('0x34')](_0xe93a9[_0xc3fe('0x28')][_0xc3fe('0x35')])){throw new db[(_0xc3fe('0x2c'))]['ValidationError']('from\x20is\x20mandatory');}if(_[_0xc3fe('0x34')](_0xe93a9[_0xc3fe('0x28')][_0xc3fe('0x28')])||_0xe93a9[_0xc3fe('0x28')][_0xc3fe('0x28')]===''){throw new db[(_0xc3fe('0x2c'))][(_0xc3fe('0x2d'))](_0xc3fe('0x36'));}if(_[_0xc3fe('0x34')](_0xe93a9['body'][_0xc3fe('0x37')])){throw new db['Sequelize'][(_0xc3fe('0x2d'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x23e891);}if(!_[_0xc3fe('0x38')](_0x23e891,_0xe93a9[_0xc3fe('0x28')]['mapKey'])){throw new db[(_0xc3fe('0x2c'))]['ValidationError']('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x23e891);}_0x6725d0[_0xe93a9[_0xc3fe('0x28')][_0xc3fe('0x37')]]=_0xe93a9[_0xc3fe('0x28')][_0xc3fe('0x35')];})[_0xc3fe('0x12')](function(){return db[_0xc3fe('0x39')][_0xc3fe('0x3a')]({'where':{'id':_0xe93a9[_0xc3fe('0x3b')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0xc3fe('0x2a')],'as':_0xc3fe('0x3c'),'where':_0x6725d0,'limit':0x1,'order':[[_0xc3fe('0x31'),_0xc3fe('0x3d')]]}]},{'model':db[_0xc3fe('0x3e')],'as':_0xc3fe('0x3f')}]});})['then'](function(_0x63a9fc){if(_0x63a9fc&&_0x63a9fc[_0xc3fe('0x40')]){var _0x11684f=_0x63a9fc[_0xc3fe('0x41')]({'plain':!![]});_0x3b068e[_0xc3fe('0x3b')]=_0x11684f;_0x3b068e[_0xc3fe('0x42')]=_0x11684f[_0xc3fe('0x3f')];_0x3b068e[_0xc3fe('0x43')]=_0x11684f['List'];_0x3b068e['applications']=_[_0xc3fe('0x44')](_0x3b068e[_0xc3fe('0x42')],[_0xc3fe('0x45')],[_0xc3fe('0x46')]);if(_0x3b068e[_0xc3fe('0x3b')][_0xc3fe('0x3f')]){delete _0x3b068e[_0xc3fe('0x3b')][_0xc3fe('0x3f')];}if(_0x3b068e['account'][_0xc3fe('0x40')]&&_0x3b068e['account']['List']['Contacts'][_0xc3fe('0x47')]){return _0x3b068e['account'][_0xc3fe('0x40')][_0xc3fe('0x3c')][0x0];}var _0x4f564d=_[_0xc3fe('0x48')](_0xe93a9['body'],{'firstName':_0xe93a9[_0xc3fe('0x28')]['from'],'ListId':_0x11684f[_0xc3fe('0x33')]});_0x4f564d[_0xe93a9[_0xc3fe('0x28')][_0xc3fe('0x37')]]=_0xe93a9['body'][_0xc3fe('0x35')];return db[_0xc3fe('0x2a')][_0xc3fe('0x49')](_0x4f564d,{'fields':_0x5bb8b5,'raw':!![]});}})[_0xc3fe('0x12')](function(_0x77ac13){_0x3b068e[_0xc3fe('0x4a')]=_0x77ac13;if(_0x77ac13){var _0x227d0e={'ContactId':_0x77ac13['id'],'FaxAccountId':_0xe93a9['account']['id'],'fax':_0x77ac13[_0xc3fe('0x29')]};return db[_0xc3fe('0x4b')][_0xc3fe('0x3a')]({'where':{'ContactId':_0x77ac13['id'],'closed':![],'FaxAccountId':_0xe93a9[_0xc3fe('0x3b')]['id']}})[_0xc3fe('0x12')](function(_0x87345f){if(_0x87345f){return[_0x87345f,![]];}return db[_0xc3fe('0x4b')][_0xc3fe('0x49')](_0x227d0e)[_0xc3fe('0x12')](function(_0x560542){return[_0x560542,!![]];});});}else{throw new Error(_0xc3fe('0x4c'));}})[_0xc3fe('0x4d')](function(_0x2b642d,_0x1e11e0){var _0x4e3ed8=_0x2b642d[_0xc3fe('0x41')]({'plain':!![]});if(_0x1e11e0){if(_0x3b068e[_0xc3fe('0x3b')][_0xc3fe('0x4e')]){_0x3b068e[_0xc3fe('0x42')]['push']({'id':0x0,'priority':_0x3b068e[_0xc3fe('0x42')][_0xc3fe('0x47')]+0x1,'app':_0xc3fe('0x4f'),'appdata':_0xc3fe('0x50'),'interval':_0xc3fe('0x51')});}_0x4e3ed8['created']=!![];}else{_0x4e3ed8[_0xc3fe('0x52')]=![];}_0x3b068e[_0xc3fe('0x53')]=_0x4e3ed8;return db[_0xc3fe('0x54')][_0xc3fe('0x49')]({'body':_0xe93a9[_0xc3fe('0x28')][_0xc3fe('0x28')],'FaxAccountId':_0xe93a9[_0xc3fe('0x3b')]['id'],'FaxInteractionId':_0x2b642d['id'],'direction':'in','ContactId':_0x2b642d['ContactId'],'AttachmentId':_0xe93a9[_0xc3fe('0x28')][_0xc3fe('0x55')]});})[_0xc3fe('0x12')](function(_0x2a7a51){_0x3b068e[_0xc3fe('0x1b')]=_0x2a7a51;if(_0x3b068e['interaction'][_0xc3fe('0x56')]){return db[_0xc3fe('0x57')]['find']({'attributes':['id',_0xc3fe('0x58')],'where':{'id':_0x3b068e[_0xc3fe('0x53')]['UserId']}})[_0xc3fe('0x12')](function(_0x19249b){if(_0x19249b){_0x3b068e[_0xc3fe('0x42')]['unshift']({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x19249b[_0xc3fe('0x58')]+','+(_0x3b068e[_0xc3fe('0x3b')][_0xc3fe('0x59')]||0xa),'interval':_0xc3fe('0x51')});}return respondWithRpcPromise(_0xc3fe('0x5a'),'startRouting',_0x3b068e);});}return respondWithRpcPromise(_0xc3fe('0x5a'),'startRouting',_0x3b068e);})[_0xc3fe('0x12')](function(_0x3deede){_0x1e27eb(_0x3deede);})[_0xc3fe('0x26')](function(_0x30e207){_0x48f88d(_0x12fe0a[_0xc3fe('0x19')](0x1f4,_0x30e207[_0xc3fe('0x1b')]));});});};
\ No newline at end of file
index e086915..ad2484d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25ef=['faxAccount:','./faxAccount.events','save','remove','update','emit','length'];(function(_0x258dc2,_0x18328a){var _0x33f14d=function(_0x53f007){while(--_0x53f007){_0x258dc2['push'](_0x258dc2['shift']());}};_0x33f14d(++_0x18328a);}(_0x25ef,0x135));var _0xf25e=function(_0x580072,_0x5d98de){_0x580072=_0x580072-0x0;var _0x31d257=_0x25ef[_0x580072];return _0x31d257;};'use strict';var FaxAccountEvents=require(_0xf25e('0x0'));var events=[_0xf25e('0x1'),_0xf25e('0x2'),_0xf25e('0x3')];function createListener(_0x912961,_0x34a1d3){return function(_0x12a807){_0x34a1d3[_0xf25e('0x4')](_0x912961,_0x12a807);};}function removeListener(_0x37a143,_0x4fbd96){return function(){FaxAccountEvents['removeListener'](_0x37a143,_0x4fbd96);};}exports['register']=function(_0x3d50b5){for(var _0x4b1bb4=0x0,_0x400d67=events[_0xf25e('0x5')];_0x4b1bb4<_0x400d67;_0x4b1bb4++){var _0x19d75a=events[_0x4b1bb4];var _0x372ba4=createListener(_0xf25e('0x6')+_0x19d75a,_0x3d50b5);FaxAccountEvents['on'](_0x19d75a,_0x372ba4);}};
\ No newline at end of file
+var _0x6a6c=['emit','removeListener','register','length','faxAccount:','./faxAccount.events','save','remove','update'];(function(_0x47b03c,_0x4a0e4c){var _0x5ce736=function(_0xe68a4e){while(--_0xe68a4e){_0x47b03c['push'](_0x47b03c['shift']());}};_0x5ce736(++_0x4a0e4c);}(_0x6a6c,0x9e));var _0xc6a6=function(_0x30f015,_0xef5c1f){_0x30f015=_0x30f015-0x0;var _0x5eed67=_0x6a6c[_0x30f015];return _0x5eed67;};'use strict';var FaxAccountEvents=require(_0xc6a6('0x0'));var events=[_0xc6a6('0x1'),_0xc6a6('0x2'),_0xc6a6('0x3')];function createListener(_0x4a6211,_0x3155ae){return function(_0x399f63){_0x3155ae[_0xc6a6('0x4')](_0x4a6211,_0x399f63);};}function removeListener(_0x294884,_0x130da8){return function(){FaxAccountEvents[_0xc6a6('0x5')](_0x294884,_0x130da8);};}exports[_0xc6a6('0x6')]=function(_0x418f11){for(var _0xf4be41=0x0,_0xc2255a=events[_0xc6a6('0x7')];_0xf4be41<_0xc2255a;_0xf4be41++){var _0x2ca653=events[_0xf4be41];var _0x5c8ff5=createListener(_0xc6a6('0x8')+_0x2ca653,_0x418f11);FaxAccountEvents['on'](_0x2ca653,_0x5c8ff5);}};
\ No newline at end of file
index 7f1c1e7..9e6268f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxAccount.controller','get','index','/describe','show','/:id/dispositions','isAuthenticated','getDispositions','/:id/interactions','getInteractions','/:id/applications','/:id/messages','getMessages','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addAnswer','addInteraction','addApplications','addAccountApplications','/updateaccountapplications','/:id/send','send','addAgents','put','/:id','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path'];(function(_0x3f6fcf,_0x289344){var _0x5e656c=function(_0x9279e1){while(--_0x9279e1){_0x3f6fcf['push'](_0x3f6fcf['shift']());}};_0x5e656c(++_0x289344);}(_0xa9e0,0x123));var _0x0a9e=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xa9e0[_0x110c3d];return _0x226d67;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/canned_answers',auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getApplications']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['post']('/',auth[_0x0a9e('0xd')](),controller['create']);router[_0x0a9e('0x16')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router['post'](_0x0a9e('0x18'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x16')](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1a')]);router[_0x0a9e('0x16')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x16')]('/addaccountapplications',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router['post'](_0x0a9e('0x1d'),auth['isAuthenticated'](),controller['updateAccountApplications']);router[_0x0a9e('0x16')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['post'](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0x22'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x24')]);router[_0x0a9e('0x25')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x26')]);router['delete'](_0x0a9e('0x18'),auth['isAuthenticated'](),controller[_0x0a9e('0x27')]);router[_0x0a9e('0x25')](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x28')]);module[_0x0a9e('0x29')]=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxAccount.controller','get','index','/describe','show','/:id/dispositions','isAuthenticated','getDispositions','/:id/interactions','getInteractions','/:id/applications','/:id/messages','getMessages','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addAnswer','addInteraction','addApplications','addAccountApplications','/updateaccountapplications','/:id/send','send','addAgents','put','/:id','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path'];(function(_0x24872c,_0x390841){var _0x3d2984=function(_0x435b7){while(--_0x435b7){_0x24872c['push'](_0x24872c['shift']());}};_0x3d2984(++_0x390841);}(_0xa9e0,0x123));var _0x0a9e=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0xa9e0[_0x13ea00];return _0x1f7347;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/canned_answers',auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getApplications']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['post']('/',auth[_0x0a9e('0xd')](),controller['create']);router[_0x0a9e('0x16')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router['post'](_0x0a9e('0x18'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x16')](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1a')]);router[_0x0a9e('0x16')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x16')]('/addaccountapplications',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router['post'](_0x0a9e('0x1d'),auth['isAuthenticated'](),controller['updateAccountApplications']);router[_0x0a9e('0x16')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['post'](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0x22'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x24')]);router[_0x0a9e('0x25')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x26')]);router['delete'](_0x0a9e('0x18'),auth['isAuthenticated'](),controller[_0x0a9e('0x27')]);router[_0x0a9e('0x25')](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x28')]);module[_0x0a9e('0x29')]=router;
\ No newline at end of file
index 47f194e..fa5e364 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfac=['noop','sequelize','exports','INTEGER','STRING'];(function(_0x104255,_0x2bd322){var _0x49d742=function(_0x2ba2a2){while(--_0x2ba2a2){_0x104255['push'](_0x104255['shift']());}};_0x49d742(++_0x2bd322);}(_0xcfac,0x1b4));var _0xccfa=function(_0xf86fbe,_0x30c3de){_0xf86fbe=_0xf86fbe-0x0;var _0x4d97bc=_0xcfac[_0xf86fbe];return _0x4d97bc;};'use strict';var Sequelize=require(_0xccfa('0x0'));module[_0xccfa('0x1')]={'priority':{'type':Sequelize[_0xccfa('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xccfa('0x3')],'allowNull':![],'defaultValue':_0xccfa('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xccfa('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x29a1=['noop','TEXT','exports','STRING'];(function(_0xd22d95,_0xc59f8f){var _0x15d7a3=function(_0x3db95c){while(--_0x3db95c){_0xd22d95['push'](_0xd22d95['shift']());}};_0x15d7a3(++_0xc59f8f);}(_0x29a1,0x12a));var _0x129a=function(_0x2ff35f,_0x2a332a){_0x2ff35f=_0x2ff35f-0x0;var _0x4127bb=_0x29a1[_0x2ff35f];return _0x4127bb;};'use strict';var Sequelize=require('sequelize');module[_0x129a('0x0')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x129a('0x1')],'allowNull':![],'defaultValue':_0x129a('0x2')},'appdata':{'type':Sequelize[_0x129a('0x3')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x129a('0x1')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index de50d31..e0244a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f1f=['attributes','intersection','fields','length','nolimit','sort','where','filters','filter','merge','VIRTUAL','options','include','findAll','rows','show','params','includeAll','catch','create','update','body','find','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save','destroy','then','error','stack','name','index','map','FaxApplication','rawAttributes','fieldName','type','key','model','query','keys'];(function(_0x2dd54b,_0x511921){var _0x330119=function(_0x5b40af){while(--_0x5b40af){_0x2dd54b['push'](_0x2dd54b['shift']());}};_0x330119(++_0x511921);}(_0x4f1f,0x1df));var _0xf4f1=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0x4f1f[_0x1694f5];return _0x5b4321;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf4f1('0x0'));var zipdir=require(_0xf4f1('0x1'));var jsonpatch=require(_0xf4f1('0x2'));var rp=require(_0xf4f1('0x3'));var moment=require(_0xf4f1('0x4'));var BPromise=require(_0xf4f1('0x5'));var Mustache=require(_0xf4f1('0x6'));var util=require(_0xf4f1('0x7'));var path=require(_0xf4f1('0x8'));var sox=require(_0xf4f1('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf4f1('0xa'));var _=require('lodash');var squel=require(_0xf4f1('0xb'));var crypto=require(_0xf4f1('0xc'));var jsforce=require(_0xf4f1('0xd'));var deskjs=require(_0xf4f1('0xe'));var toCsv=require(_0xf4f1('0xf'));var querystring=require(_0xf4f1('0x10'));var Papa=require(_0xf4f1('0x11'));var Redis=require(_0xf4f1('0x12'));var authService=require(_0xf4f1('0x13'));var qs=require(_0xf4f1('0x14'));var as=require(_0xf4f1('0x15'));var hardwareService=require(_0xf4f1('0x16'));var logger=require('../../config/logger')(_0xf4f1('0x17'));var utils=require('../../config/utils');var config=require(_0xf4f1('0x18'));var licenseUtil=require(_0xf4f1('0x19'));var db=require(_0xf4f1('0x1a'))['db'];function respondWithStatusCode(_0x4a9a08,_0x5616ca){_0x5616ca=_0x5616ca||0xcc;return function(_0x35bf05){if(_0x35bf05){return _0x4a9a08[_0xf4f1('0x1b')](_0x5616ca);}return _0x4a9a08[_0xf4f1('0x1c')](_0x5616ca)[_0xf4f1('0x1d')]();};}function respondWithResult(_0x4728a6,_0x26efae){_0x26efae=_0x26efae||0xc8;return function(_0x19400a){if(_0x19400a){return _0x4728a6['status'](_0x26efae)[_0xf4f1('0x1e')](_0x19400a);}};}function respondWithFilteredResult(_0x32b577,_0x403eb3){return function(_0x200315){if(_0x200315){var _0x33d8fb=typeof _0x403eb3[_0xf4f1('0x1f')]===_0xf4f1('0x20')&&typeof _0x403eb3[_0xf4f1('0x21')]===_0xf4f1('0x20');var _0x3c57f9=_0x200315['count'];var _0x1f3eb8=_0x33d8fb?0x0:_0x403eb3[_0xf4f1('0x1f')];var _0x1d3444=_0x33d8fb?_0x200315[_0xf4f1('0x22')]:_0x403eb3['offset']+_0x403eb3['limit'];var _0x48967e;if(_0x1d3444>=_0x3c57f9){_0x1d3444=_0x3c57f9;_0x48967e=0xc8;}else{_0x48967e=0xce;}_0x32b577[_0xf4f1('0x1c')](_0x48967e);return _0x32b577[_0xf4f1('0x23')]('Content-Range',_0x1f3eb8+'-'+_0x1d3444+'/'+_0x3c57f9)[_0xf4f1('0x1e')](_0x200315);}return null;};}function patchUpdates(_0x22a910){return function(_0x538629){try{jsonpatch['apply'](_0x538629,_0x22a910,!![]);}catch(_0xb4a520){return BPromise[_0xf4f1('0x24')](_0xb4a520);}return _0x538629[_0xf4f1('0x25')]();};}function saveUpdates(_0xb5d6fc,_0x478e0c){return function(_0x868fb3){if(_0x868fb3){return _0x868fb3['update'](_0xb5d6fc)['then'](function(_0x6f78e9){return _0x6f78e9;});}return null;};}function removeEntity(_0x4e54b3,_0x5a5cbd){return function(_0x3977d8){if(_0x3977d8){return _0x3977d8[_0xf4f1('0x26')]()[_0xf4f1('0x27')](function(){_0x4e54b3[_0xf4f1('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2b4ef6,_0x614c51){return function(_0x375ab5){if(!_0x375ab5){_0x2b4ef6['sendStatus'](0x194);}return _0x375ab5;};}function handleError(_0x534179,_0x4e6098){_0x4e6098=_0x4e6098||0x1f4;return function(_0x2e3dbe){logger[_0xf4f1('0x28')](_0x2e3dbe[_0xf4f1('0x29')]);if(_0x2e3dbe[_0xf4f1('0x2a')]){delete _0x2e3dbe[_0xf4f1('0x2a')];}_0x534179[_0xf4f1('0x1c')](_0x4e6098)['send'](_0x2e3dbe);};}exports[_0xf4f1('0x2b')]=function(_0x2b0cdb,_0x34dab0){var _0x2c1d5d={},_0x39d3af={},_0x104379={'count':0x0,'rows':[]};var _0x5d7f15=_[_0xf4f1('0x2c')](db[_0xf4f1('0x2d')][_0xf4f1('0x2e')],function(_0xe8ef2d){return{'name':_0xe8ef2d[_0xf4f1('0x2f')],'type':_0xe8ef2d[_0xf4f1('0x30')][_0xf4f1('0x31')]};});_0x39d3af[_0xf4f1('0x32')]=_[_0xf4f1('0x2c')](_0x5d7f15,_0xf4f1('0x2a'));_0x39d3af[_0xf4f1('0x33')]=_[_0xf4f1('0x34')](_0x2b0cdb[_0xf4f1('0x33')]);_0x39d3af['filters']=_['intersection'](_0x39d3af[_0xf4f1('0x32')],_0x39d3af[_0xf4f1('0x33')]);_0x2c1d5d[_0xf4f1('0x35')]=_[_0xf4f1('0x36')](_0x39d3af['model'],qs[_0xf4f1('0x37')](_0x2b0cdb[_0xf4f1('0x33')][_0xf4f1('0x37')]));_0x2c1d5d[_0xf4f1('0x35')]=_0x2c1d5d[_0xf4f1('0x35')][_0xf4f1('0x38')]?_0x2c1d5d['attributes']:_0x39d3af[_0xf4f1('0x32')];if(!_0x2b0cdb[_0xf4f1('0x33')]['hasOwnProperty'](_0xf4f1('0x39'))){_0x2c1d5d[_0xf4f1('0x21')]=qs['limit'](_0x2b0cdb[_0xf4f1('0x33')][_0xf4f1('0x21')]);_0x2c1d5d[_0xf4f1('0x1f')]=qs[_0xf4f1('0x1f')](_0x2b0cdb['query'][_0xf4f1('0x1f')]);}_0x2c1d5d['order']=qs[_0xf4f1('0x3a')](_0x2b0cdb[_0xf4f1('0x33')][_0xf4f1('0x3a')]);_0x2c1d5d[_0xf4f1('0x3b')]=qs['filters'](_['pick'](_0x2b0cdb[_0xf4f1('0x33')],_0x39d3af[_0xf4f1('0x3c')]),_0x5d7f15);if(_0x2b0cdb[_0xf4f1('0x33')][_0xf4f1('0x3d')]){_0x2c1d5d['where']=_[_0xf4f1('0x3e')](_0x2c1d5d[_0xf4f1('0x3b')],{'$or':_[_0xf4f1('0x2c')](_0x5d7f15,function(_0x45029a){if(_0x45029a[_0xf4f1('0x30')]!==_0xf4f1('0x3f')){var _0x2cd556={};_0x2cd556[_0x45029a['name']]={'$like':'%'+_0x2b0cdb['query']['filter']+'%'};return _0x2cd556;}})});}_0x2c1d5d=_['merge']({},_0x2c1d5d,_0x2b0cdb[_0xf4f1('0x40')]);var _0x30c28a={'where':_0x2c1d5d[_0xf4f1('0x3b')]};return db['FaxApplication'][_0xf4f1('0x22')](_0x30c28a)['then'](function(_0x42d9f2){_0x104379['count']=_0x42d9f2;if(_0x2b0cdb[_0xf4f1('0x33')]['includeAll']){_0x2c1d5d[_0xf4f1('0x41')]=[{'all':!![]}];}return db[_0xf4f1('0x2d')][_0xf4f1('0x42')](_0x2c1d5d);})[_0xf4f1('0x27')](function(_0x3715cf){_0x104379[_0xf4f1('0x43')]=_0x3715cf;return _0x104379;})[_0xf4f1('0x27')](respondWithFilteredResult(_0x34dab0,_0x2c1d5d))['catch'](handleError(_0x34dab0,null));};exports[_0xf4f1('0x44')]=function(_0x30772f,_0x15dbc2){var _0x370913={'raw':!![],'where':{'id':_0x30772f[_0xf4f1('0x45')]['id']}},_0x241cb9={};_0x241cb9['model']=_['keys'](db['FaxApplication'][_0xf4f1('0x2e')]);_0x241cb9[_0xf4f1('0x33')]=_['keys'](_0x30772f[_0xf4f1('0x33')]);_0x241cb9[_0xf4f1('0x3c')]=_['intersection'](_0x241cb9[_0xf4f1('0x32')],_0x241cb9[_0xf4f1('0x33')]);_0x370913['attributes']=_[_0xf4f1('0x36')](_0x241cb9[_0xf4f1('0x32')],qs[_0xf4f1('0x37')](_0x30772f[_0xf4f1('0x33')][_0xf4f1('0x37')]));_0x370913[_0xf4f1('0x35')]=_0x370913[_0xf4f1('0x35')][_0xf4f1('0x38')]?_0x370913[_0xf4f1('0x35')]:_0x241cb9[_0xf4f1('0x32')];if(_0x30772f['query'][_0xf4f1('0x46')]){_0x370913['include']=[{'all':!![]}];}_0x370913=_[_0xf4f1('0x3e')]({},_0x370913,_0x30772f['options']);return db[_0xf4f1('0x2d')]['find'](_0x370913)[_0xf4f1('0x27')](handleEntityNotFound(_0x15dbc2,null))[_0xf4f1('0x27')](respondWithResult(_0x15dbc2,null))[_0xf4f1('0x47')](handleError(_0x15dbc2,null));};exports[_0xf4f1('0x48')]=function(_0x54a92d,_0x5a29ad){return db[_0xf4f1('0x2d')][_0xf4f1('0x48')](_0x54a92d['body'],{})[_0xf4f1('0x27')](respondWithResult(_0x5a29ad,0xc9))[_0xf4f1('0x47')](handleError(_0x5a29ad,null));};exports[_0xf4f1('0x49')]=function(_0x308d60,_0x5ab506){if(_0x308d60[_0xf4f1('0x4a')]['id']){delete _0x308d60[_0xf4f1('0x4a')]['id'];}return db[_0xf4f1('0x2d')][_0xf4f1('0x4b')]({'where':{'id':_0x308d60[_0xf4f1('0x45')]['id']}})['then'](handleEntityNotFound(_0x5ab506,null))['then'](saveUpdates(_0x308d60[_0xf4f1('0x4a')],null))[_0xf4f1('0x27')](respondWithResult(_0x5ab506,null))['catch'](handleError(_0x5ab506,null));};exports[_0xf4f1('0x26')]=function(_0xf4644b,_0xfd208c){return db[_0xf4f1('0x2d')][_0xf4f1('0x4b')]({'where':{'id':_0xf4644b[_0xf4f1('0x45')]['id']}})['then'](handleEntityNotFound(_0xfd208c,null))[_0xf4f1('0x27')](removeEntity(_0xfd208c,null))[_0xf4f1('0x47')](handleError(_0xfd208c,null));};
\ No newline at end of file
+var _0x01fe=['key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','then','includeAll','findAll','rows','catch','show','params','rawAttributes','include','options','create','body','find','eml-format','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','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','json','offset','undefined','limit','count','set','apply','reject','save','update','destroy','end','error','name','send','index','map','FaxApplication','fieldName','type'];(function(_0x34b87f,_0x28aef2){var _0x449805=function(_0x3735b7){while(--_0x3735b7){_0x34b87f['push'](_0x34b87f['shift']());}};_0x449805(++_0x28aef2);}(_0x01fe,0x14d));var _0xe01f=function(_0x5853cb,_0x5a6ec1){_0x5853cb=_0x5853cb-0x0;var _0xb0b8c2=_0x01fe[_0x5853cb];return _0xb0b8c2;};'use strict';var emlformat=require(_0xe01f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe01f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe01f('0x2'));var moment=require(_0xe01f('0x3'));var BPromise=require(_0xe01f('0x4'));var Mustache=require('mustache');var util=require(_0xe01f('0x5'));var path=require(_0xe01f('0x6'));var sox=require(_0xe01f('0x7'));var csv=require(_0xe01f('0x8'));var ejs=require(_0xe01f('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe01f('0xa'));var squel=require('squel');var crypto=require(_0xe01f('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xe01f('0xc'));var toCsv=require(_0xe01f('0x8'));var querystring=require('querystring');var Papa=require(_0xe01f('0xd'));var Redis=require(_0xe01f('0xe'));var authService=require(_0xe01f('0xf'));var qs=require(_0xe01f('0x10'));var as=require(_0xe01f('0x11'));var hardwareService=require(_0xe01f('0x12'));var logger=require(_0xe01f('0x13'))(_0xe01f('0x14'));var utils=require(_0xe01f('0x15'));var config=require(_0xe01f('0x16'));var licenseUtil=require(_0xe01f('0x17'));var db=require(_0xe01f('0x18'))['db'];function respondWithStatusCode(_0x2fe2f0,_0x2a85af){_0x2a85af=_0x2a85af||0xcc;return function(_0x51f5fd){if(_0x51f5fd){return _0x2fe2f0[_0xe01f('0x19')](_0x2a85af);}return _0x2fe2f0[_0xe01f('0x1a')](_0x2a85af)['end']();};}function respondWithResult(_0x47caf9,_0x2c20c7){_0x2c20c7=_0x2c20c7||0xc8;return function(_0x228bb3){if(_0x228bb3){return _0x47caf9[_0xe01f('0x1a')](_0x2c20c7)[_0xe01f('0x1b')](_0x228bb3);}};}function respondWithFilteredResult(_0x5551bc,_0x229feb){return function(_0x1caa2e){if(_0x1caa2e){var _0x588eb6=typeof _0x229feb[_0xe01f('0x1c')]===_0xe01f('0x1d')&&typeof _0x229feb[_0xe01f('0x1e')]===_0xe01f('0x1d');var _0x1ed426=_0x1caa2e[_0xe01f('0x1f')];var _0x116c53=_0x588eb6?0x0:_0x229feb[_0xe01f('0x1c')];var _0xc94c52=_0x588eb6?_0x1caa2e[_0xe01f('0x1f')]:_0x229feb[_0xe01f('0x1c')]+_0x229feb['limit'];var _0x2a86bb;if(_0xc94c52>=_0x1ed426){_0xc94c52=_0x1ed426;_0x2a86bb=0xc8;}else{_0x2a86bb=0xce;}_0x5551bc[_0xe01f('0x1a')](_0x2a86bb);return _0x5551bc[_0xe01f('0x20')]('Content-Range',_0x116c53+'-'+_0xc94c52+'/'+_0x1ed426)[_0xe01f('0x1b')](_0x1caa2e);}return null;};}function patchUpdates(_0x5a7419){return function(_0x172d38){try{jsonpatch[_0xe01f('0x21')](_0x172d38,_0x5a7419,!![]);}catch(_0x10a0aa){return BPromise[_0xe01f('0x22')](_0x10a0aa);}return _0x172d38[_0xe01f('0x23')]();};}function saveUpdates(_0x40ef1c,_0x228c0e){return function(_0xeb185c){if(_0xeb185c){return _0xeb185c[_0xe01f('0x24')](_0x40ef1c)['then'](function(_0x132dab){return _0x132dab;});}return null;};}function removeEntity(_0x32579f,_0x34cdfd){return function(_0x1470b7){if(_0x1470b7){return _0x1470b7[_0xe01f('0x25')]()['then'](function(){_0x32579f[_0xe01f('0x1a')](0xcc)[_0xe01f('0x26')]();});}};}function handleEntityNotFound(_0x393249,_0x4d9b63){return function(_0x24813d){if(!_0x24813d){_0x393249['sendStatus'](0x194);}return _0x24813d;};}function handleError(_0x7cec36,_0x214656){_0x214656=_0x214656||0x1f4;return function(_0x47c452){logger[_0xe01f('0x27')](_0x47c452['stack']);if(_0x47c452['name']){delete _0x47c452[_0xe01f('0x28')];}_0x7cec36[_0xe01f('0x1a')](_0x214656)[_0xe01f('0x29')](_0x47c452);};}exports[_0xe01f('0x2a')]=function(_0x3526c7,_0xbc3c87){var _0x506ac1={},_0x43b04b={},_0xb57db0={'count':0x0,'rows':[]};var _0x129f37=_[_0xe01f('0x2b')](db[_0xe01f('0x2c')]['rawAttributes'],function(_0x32bb94){return{'name':_0x32bb94[_0xe01f('0x2d')],'type':_0x32bb94[_0xe01f('0x2e')][_0xe01f('0x2f')]};});_0x43b04b[_0xe01f('0x30')]=_[_0xe01f('0x2b')](_0x129f37,_0xe01f('0x28'));_0x43b04b[_0xe01f('0x31')]=_[_0xe01f('0x32')](_0x3526c7[_0xe01f('0x31')]);_0x43b04b[_0xe01f('0x33')]=_[_0xe01f('0x34')](_0x43b04b[_0xe01f('0x30')],_0x43b04b[_0xe01f('0x31')]);_0x506ac1['attributes']=_['intersection'](_0x43b04b[_0xe01f('0x30')],qs['fields'](_0x3526c7[_0xe01f('0x31')][_0xe01f('0x35')]));_0x506ac1[_0xe01f('0x36')]=_0x506ac1[_0xe01f('0x36')][_0xe01f('0x37')]?_0x506ac1[_0xe01f('0x36')]:_0x43b04b[_0xe01f('0x30')];if(!_0x3526c7['query'][_0xe01f('0x38')](_0xe01f('0x39'))){_0x506ac1[_0xe01f('0x1e')]=qs[_0xe01f('0x1e')](_0x3526c7[_0xe01f('0x31')]['limit']);_0x506ac1[_0xe01f('0x1c')]=qs[_0xe01f('0x1c')](_0x3526c7[_0xe01f('0x31')][_0xe01f('0x1c')]);}_0x506ac1[_0xe01f('0x3a')]=qs[_0xe01f('0x3b')](_0x3526c7[_0xe01f('0x31')][_0xe01f('0x3b')]);_0x506ac1[_0xe01f('0x3c')]=qs['filters'](_['pick'](_0x3526c7['query'],_0x43b04b[_0xe01f('0x33')]),_0x129f37);if(_0x3526c7[_0xe01f('0x31')][_0xe01f('0x3d')]){_0x506ac1[_0xe01f('0x3c')]=_[_0xe01f('0x3e')](_0x506ac1[_0xe01f('0x3c')],{'$or':_[_0xe01f('0x2b')](_0x129f37,function(_0x447943){if(_0x447943[_0xe01f('0x2e')]!=='VIRTUAL'){var _0x536f77={};_0x536f77[_0x447943[_0xe01f('0x28')]]={'$like':'%'+_0x3526c7[_0xe01f('0x31')][_0xe01f('0x3d')]+'%'};return _0x536f77;}})});}_0x506ac1=_[_0xe01f('0x3e')]({},_0x506ac1,_0x3526c7['options']);var _0x3e3927={'where':_0x506ac1[_0xe01f('0x3c')]};return db['FaxApplication']['count'](_0x3e3927)[_0xe01f('0x3f')](function(_0x2a872c){_0xb57db0[_0xe01f('0x1f')]=_0x2a872c;if(_0x3526c7['query'][_0xe01f('0x40')]){_0x506ac1['include']=[{'all':!![]}];}return db['FaxApplication'][_0xe01f('0x41')](_0x506ac1);})[_0xe01f('0x3f')](function(_0x2e277c){_0xb57db0[_0xe01f('0x42')]=_0x2e277c;return _0xb57db0;})[_0xe01f('0x3f')](respondWithFilteredResult(_0xbc3c87,_0x506ac1))[_0xe01f('0x43')](handleError(_0xbc3c87,null));};exports[_0xe01f('0x44')]=function(_0x3b1efa,_0x4ac7ab){var _0x415cc0={'raw':!![],'where':{'id':_0x3b1efa[_0xe01f('0x45')]['id']}},_0x4e1f35={};_0x4e1f35[_0xe01f('0x30')]=_[_0xe01f('0x32')](db[_0xe01f('0x2c')][_0xe01f('0x46')]);_0x4e1f35[_0xe01f('0x31')]=_['keys'](_0x3b1efa['query']);_0x4e1f35[_0xe01f('0x33')]=_['intersection'](_0x4e1f35[_0xe01f('0x30')],_0x4e1f35[_0xe01f('0x31')]);_0x415cc0[_0xe01f('0x36')]=_['intersection'](_0x4e1f35[_0xe01f('0x30')],qs['fields'](_0x3b1efa['query']['fields']));_0x415cc0[_0xe01f('0x36')]=_0x415cc0[_0xe01f('0x36')][_0xe01f('0x37')]?_0x415cc0[_0xe01f('0x36')]:_0x4e1f35[_0xe01f('0x30')];if(_0x3b1efa[_0xe01f('0x31')][_0xe01f('0x40')]){_0x415cc0[_0xe01f('0x47')]=[{'all':!![]}];}_0x415cc0=_[_0xe01f('0x3e')]({},_0x415cc0,_0x3b1efa[_0xe01f('0x48')]);return db[_0xe01f('0x2c')]['find'](_0x415cc0)[_0xe01f('0x3f')](handleEntityNotFound(_0x4ac7ab,null))['then'](respondWithResult(_0x4ac7ab,null))[_0xe01f('0x43')](handleError(_0x4ac7ab,null));};exports[_0xe01f('0x49')]=function(_0x94bf53,_0x510099){return db['FaxApplication'][_0xe01f('0x49')](_0x94bf53['body'],{})['then'](respondWithResult(_0x510099,0xc9))['catch'](handleError(_0x510099,null));};exports[_0xe01f('0x24')]=function(_0x2c62af,_0x2f0230){if(_0x2c62af[_0xe01f('0x4a')]['id']){delete _0x2c62af['body']['id'];}return db['FaxApplication']['find']({'where':{'id':_0x2c62af['params']['id']}})['then'](handleEntityNotFound(_0x2f0230,null))[_0xe01f('0x3f')](saveUpdates(_0x2c62af[_0xe01f('0x4a')],null))[_0xe01f('0x3f')](respondWithResult(_0x2f0230,null))[_0xe01f('0x43')](handleError(_0x2f0230,null));};exports[_0xe01f('0x25')]=function(_0x5acfb6,_0xd14cb8){return db[_0xe01f('0x2c')][_0xe01f('0x4b')]({'where':{'id':_0x5acfb6[_0xe01f('0x45')]['id']}})[_0xe01f('0x3f')](handleEntityNotFound(_0xd14cb8,null))[_0xe01f('0x3f')](removeEntity(_0xd14cb8,null))[_0xe01f('0x43')](handleError(_0xd14cb8,null));};
\ No newline at end of file
index 42ab5c5..2655503 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c66=['request-promise','path','rimraf','../../config/environment','./faxApplication.attributes','exports','define','FaxApplication','fax_applications','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','moment','bluebird'];(function(_0x12c1ba,_0x3e93f2){var _0x2230a0=function(_0x519c8c){while(--_0x519c8c){_0x12c1ba['push'](_0x12c1ba['shift']());}};_0x2230a0(++_0x3e93f2);}(_0x7c66,0x1cd));var _0x67c6=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x7c66[_0x6c993a];return _0x27f547;};'use strict';var _=require(_0x67c6('0x0'));var util=require('util');var logger=require(_0x67c6('0x1'))('api');var moment=require(_0x67c6('0x2'));var BPromise=require(_0x67c6('0x3'));var rp=require(_0x67c6('0x4'));var fs=require('fs');var path=require(_0x67c6('0x5'));var rimraf=require(_0x67c6('0x6'));var config=require(_0x67c6('0x7'));var attributes=require(_0x67c6('0x8'));module[_0x67c6('0x9')]=function(_0xaf1af6,_0x47d8bf){return _0xaf1af6[_0x67c6('0xa')](_0x67c6('0xb'),attributes,{'tableName':_0x67c6('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x67c6('0xd'),'collate':_0x67c6('0xe')});};
\ No newline at end of file
+var _0x9b09=['util','api','moment','request-promise','path','../../config/environment','./faxApplication.attributes','exports','define','FaxApplication','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x4147e6,_0x57174e){var _0x3305ba=function(_0x30199e){while(--_0x30199e){_0x4147e6['push'](_0x4147e6['shift']());}};_0x3305ba(++_0x57174e);}(_0x9b09,0xe9));var _0x99b0=function(_0x7791d5,_0xdab65f){_0x7791d5=_0x7791d5-0x0;var _0x5ce288=_0x9b09[_0x7791d5];return _0x5ce288;};'use strict';var _=require(_0x99b0('0x0'));var util=require(_0x99b0('0x1'));var logger=require('../../config/logger')(_0x99b0('0x2'));var moment=require(_0x99b0('0x3'));var BPromise=require('bluebird');var rp=require(_0x99b0('0x4'));var fs=require('fs');var path=require(_0x99b0('0x5'));var rimraf=require('rimraf');var config=require(_0x99b0('0x6'));var attributes=require(_0x99b0('0x7'));module[_0x99b0('0x8')]=function(_0x25e6ba,_0x553371){return _0x25e6ba[_0x99b0('0x9')](_0x99b0('0xa'),attributes,{'tableName':'fax_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x99b0('0xb'),'collate':_0x99b0('0xc')});};
\ No newline at end of file
index d093449..2233a1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x423b=['request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxApplication,\x20%s,\x20%s','message','info','result','catch','UpdateFaxApplication','FaxApplication','update','body','options','raw','attributes','limit','util','bluebird','ioredis','rpc','../../config/environment','client','http','request','then'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x423b,0x12b));var _0xb423=function(_0x11005e,_0x20c3d2){_0x11005e=_0x11005e-0x0;var _0x29338f=_0x423b[_0x11005e];return _0x29338f;};'use strict';var _=require('lodash');var util=require(_0xb423('0x0'));var moment=require('moment');var BPromise=require(_0xb423('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb423('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xb423('0x3'));var config=require(_0xb423('0x4'));var jayson=require('jayson/promise');var client=jayson[_0xb423('0x5')][_0xb423('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x49eabb,_0x28947d,_0x573e95){return new BPromise(function(_0x4119d7,_0x3ac522){return client[_0xb423('0x7')](_0x49eabb,_0x573e95)[_0xb423('0x8')](function(_0x27dcf3){logger['info']('FaxApplication,\x20%s,\x20%s',_0x28947d,_0xb423('0x9'));logger[_0xb423('0xa')](_0xb423('0xb'),_0x28947d,_0xb423('0x9'),JSON[_0xb423('0xc')](_0x27dcf3));if(_0x27dcf3['error']){if(_0x27dcf3[_0xb423('0xd')][_0xb423('0xe')]===0x1f4){logger['error'](_0xb423('0xf'),_0x28947d,_0x27dcf3[_0xb423('0xd')][_0xb423('0x10')]);return _0x3ac522(_0x27dcf3['error'][_0xb423('0x10')]);}logger['error'](_0xb423('0xf'),_0x28947d,_0x27dcf3['error']['message']);return _0x4119d7(_0x27dcf3['error'][_0xb423('0x10')]);}else{logger[_0xb423('0x11')](_0xb423('0xf'),_0x28947d,'request\x20sent');_0x4119d7(_0x27dcf3[_0xb423('0x12')][_0xb423('0x10')]);}})[_0xb423('0x13')](function(_0x39edac){logger['error'](_0xb423('0xf'),_0x28947d,_0x39edac);_0x3ac522(_0x39edac);});});}exports[_0xb423('0x14')]=function(_0x5d84a6){var _0x496bf5=this;return new Promise(function(_0x340319,_0x4e5e7f){return db[_0xb423('0x15')][_0xb423('0x16')](_0x5d84a6[_0xb423('0x17')],{'raw':_0x5d84a6[_0xb423('0x18')]?_0x5d84a6[_0xb423('0x18')][_0xb423('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5d84a6[_0xb423('0x18')]?_0x5d84a6[_0xb423('0x18')]['where']||null:null,'attributes':_0x5d84a6[_0xb423('0x18')]?_0x5d84a6[_0xb423('0x18')][_0xb423('0x1a')]||null:null,'limit':_0x5d84a6['options']?_0x5d84a6[_0xb423('0x18')][_0xb423('0x1b')]||null:null})['then'](function(_0x2dbc09){logger[_0xb423('0x11')](_0xb423('0x14'),_0x5d84a6);logger['debug'](_0xb423('0x14'),_0x5d84a6,JSON['stringify'](_0x2dbc09));_0x340319(_0x2dbc09);})[_0xb423('0x13')](function(_0x50d484){logger[_0xb423('0xd')](_0xb423('0x14'),_0x50d484['message'],_0x5d84a6);_0x4e5e7f(_0x496bf5[_0xb423('0xd')](0x1f4,_0x50d484[_0xb423('0x10')]));});});};
\ No newline at end of file
+var _0x1125=['error','code','message','info','UpdateFaxApplication','update','body','options','raw','attributes','limit','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','FaxApplication,\x20%s,\x20%s','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s'];(function(_0x450032,_0x3465e8){var _0x1dcf2c=function(_0x4f491c){while(--_0x4f491c){_0x450032['push'](_0x450032['shift']());}};_0x1dcf2c(++_0x3465e8);}(_0x1125,0x1ce));var _0x5112=function(_0x45346d,_0xffd56b){_0x45346d=_0x45346d-0x0;var _0x5ce7ca=_0x1125[_0x45346d];return _0x5ce7ca;};'use strict';var _=require(_0x5112('0x0'));var util=require(_0x5112('0x1'));var moment=require(_0x5112('0x2'));var BPromise=require(_0x5112('0x3'));var rs=require(_0x5112('0x4'));var fs=require('fs');var Redis=require(_0x5112('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x5112('0x6'));var logger=require(_0x5112('0x7'))(_0x5112('0x8'));var config=require('../../config/environment');var jayson=require(_0x5112('0x9'));var client=jayson[_0x5112('0xa')][_0x5112('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbb23f5,_0x18262b,_0x5d56bf){return new BPromise(function(_0x2627ad,_0x1466a1){return client[_0x5112('0xc')](_0xbb23f5,_0x5d56bf)[_0x5112('0xd')](function(_0x5ed86f){logger['info'](_0x5112('0xe'),_0x18262b,_0x5112('0xf'));logger[_0x5112('0x10')](_0x5112('0x11'),_0x18262b,_0x5112('0xf'),JSON['stringify'](_0x5ed86f));if(_0x5ed86f[_0x5112('0x12')]){if(_0x5ed86f[_0x5112('0x12')][_0x5112('0x13')]===0x1f4){logger[_0x5112('0x12')]('FaxApplication,\x20%s,\x20%s',_0x18262b,_0x5ed86f[_0x5112('0x12')][_0x5112('0x14')]);return _0x1466a1(_0x5ed86f[_0x5112('0x12')][_0x5112('0x14')]);}logger['error']('FaxApplication,\x20%s,\x20%s',_0x18262b,_0x5ed86f[_0x5112('0x12')][_0x5112('0x14')]);return _0x2627ad(_0x5ed86f[_0x5112('0x12')][_0x5112('0x14')]);}else{logger[_0x5112('0x15')](_0x5112('0xe'),_0x18262b,_0x5112('0xf'));_0x2627ad(_0x5ed86f['result'][_0x5112('0x14')]);}})['catch'](function(_0x1a4f50){logger[_0x5112('0x12')](_0x5112('0xe'),_0x18262b,_0x1a4f50);_0x1466a1(_0x1a4f50);});});}exports[_0x5112('0x16')]=function(_0x3598ca){var _0x2eaab5=this;return new Promise(function(_0x32180c,_0xf3a8a3){return db['FaxApplication'][_0x5112('0x17')](_0x3598ca[_0x5112('0x18')],{'raw':_0x3598ca['options']?_0x3598ca[_0x5112('0x19')][_0x5112('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3598ca[_0x5112('0x19')]?_0x3598ca[_0x5112('0x19')]['where']||null:null,'attributes':_0x3598ca[_0x5112('0x19')]?_0x3598ca[_0x5112('0x19')][_0x5112('0x1b')]||null:null,'limit':_0x3598ca['options']?_0x3598ca['options'][_0x5112('0x1c')]||null:null})[_0x5112('0xd')](function(_0x518f5a){logger[_0x5112('0x15')](_0x5112('0x16'),_0x3598ca);logger[_0x5112('0x10')](_0x5112('0x16'),_0x3598ca,JSON[_0x5112('0x1d')](_0x518f5a));_0x32180c(_0x518f5a);})['catch'](function(_0x3c323c){logger[_0x5112('0x12')](_0x5112('0x16'),_0x3c323c[_0x5112('0x14')],_0x3598ca);_0xf3a8a3(_0x2eaab5[_0x5112('0x12')](0x1f4,_0x3c323c['message']));});});};
\ No newline at end of file
index 4d979ae..9aa6dc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./faxApplication.controller','get','isAuthenticated','index','/:id','post','create','put','update','delete','destroy','exports','util','path'];(function(_0x1526d0,_0x4b325d){var _0x473132=function(_0x5f27a6){while(--_0x5f27a6){_0x1526d0['push'](_0x1526d0['shift']());}};_0x473132(++_0x4b325d);}(_0xbaf0,0x12a));var _0x0baf=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xbaf0[_0x5ddb1c];return _0x354adc;};'use strict';var multer=require('multer');var util=require(_0x0baf('0x0'));var path=require(_0x0baf('0x1'));var timeout=require(_0x0baf('0x2'));var express=require(_0x0baf('0x3'));var router=express[_0x0baf('0x4')]();var fs_extra=require(_0x0baf('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var controller=require(_0x0baf('0x8'));router[_0x0baf('0x9')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xb')]);router[_0x0baf('0x9')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller['show']);router[_0x0baf('0xd')]('/',auth['isAuthenticated'](),controller[_0x0baf('0xe')]);router[_0x0baf('0xf')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x10')]);router[_0x0baf('0x11')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x12')]);module[_0x0baf('0x13')]=router;
\ No newline at end of file
+var _0x93e9=['multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./faxApplication.controller','get','isAuthenticated','index','/:id','post','create','put','update'];(function(_0x37a8f7,_0x52cb03){var _0xa81c93=function(_0x2dec79){while(--_0x2dec79){_0x37a8f7['push'](_0x37a8f7['shift']());}};_0xa81c93(++_0x52cb03);}(_0x93e9,0xcc));var _0x993e=function(_0x1534f5,_0x345729){_0x1534f5=_0x1534f5-0x0;var _0x5c1128=_0x93e9[_0x1534f5];return _0x5c1128;};'use strict';var multer=require(_0x993e('0x0'));var util=require(_0x993e('0x1'));var path=require(_0x993e('0x2'));var timeout=require(_0x993e('0x3'));var express=require(_0x993e('0x4'));var router=express[_0x993e('0x5')]();var fs_extra=require(_0x993e('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x993e('0x7'));var controller=require(_0x993e('0x8'));router[_0x993e('0x9')]('/',auth[_0x993e('0xa')](),controller[_0x993e('0xb')]);router[_0x993e('0x9')](_0x993e('0xc'),auth[_0x993e('0xa')](),controller['show']);router[_0x993e('0xd')]('/',auth[_0x993e('0xa')](),controller[_0x993e('0xe')]);router[_0x993e('0xf')](_0x993e('0xc'),auth[_0x993e('0xa')](),controller[_0x993e('0x10')]);router['delete'](_0x993e('0xc'),auth[_0x993e('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 3b2f51a..3f599c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd592=['ENUM','out','sequelize','exports','BOOLEAN','STRING','DATE'];(function(_0x5f309e,_0x66e31){var _0x487b5e=function(_0x44f203){while(--_0x44f203){_0x5f309e['push'](_0x5f309e['shift']());}};_0x487b5e(++_0x66e31);}(_0xd592,0x1ec));var _0x2d59=function(_0x2ee8a3,_0x2c92be){_0x2ee8a3=_0x2ee8a3-0x0;var _0x4f7947=_0xd592[_0x2ee8a3];return _0x4f7947;};'use strict';var Sequelize=require(_0x2d59('0x0'));module[_0x2d59('0x1')]={'closed':{'type':Sequelize[_0x2d59('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x2d59('0x3')]},'thirdDisposition':{'type':Sequelize[_0x2d59('0x3')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x2d59('0x4')]},'fax':{'type':Sequelize[_0x2d59('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x2d59('0x5')]('in',_0x2d59('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x2d59('0x4')]},'lastMsgDirection':{'type':Sequelize[_0x2d59('0x5')]('in',_0x2d59('0x6')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0xdbd3=['DATE','STRING','ENUM','out','sequelize','exports','BOOLEAN'];(function(_0x56a3df,_0x436f4c){var _0x5250e2=function(_0x254953){while(--_0x254953){_0x56a3df['push'](_0x56a3df['shift']());}};_0x5250e2(++_0x436f4c);}(_0xdbd3,0x82));var _0x3dbd=function(_0x397f34,_0x3ac328){_0x397f34=_0x397f34-0x0;var _0x272cda=_0xdbd3[_0x397f34];return _0x272cda;};'use strict';var Sequelize=require(_0x3dbd('0x0'));module[_0x3dbd('0x1')]={'closed':{'type':Sequelize[_0x3dbd('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x3dbd('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x3dbd('0x4')]},'thirdDisposition':{'type':Sequelize[_0x3dbd('0x4')]},'note':{'type':Sequelize[_0x3dbd('0x4')]},'read1stAt':{'type':Sequelize[_0x3dbd('0x3')]},'fax':{'type':Sequelize[_0x3dbd('0x4')]},'firstMsgDirection':{'type':Sequelize[_0x3dbd('0x5')]('in',_0x3dbd('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x3dbd('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x3dbd('0x5')]('in','out'),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index d240665..3e24a30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb82c=['operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','buildExpression','body','text','keys','some','compact','isEmpty','FaxAccountId','i.FaxAccountId\x20IN\x20?','concat','$gte','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.fax\x20LIKE\x20?','i.id','Sequelize','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','contactName','t.id\x20IN\x20?','resolve','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','role','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','count','sequelize','toString','keyBy','merge','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','i.*','c.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','c.mobile','Contact.mobile','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.FaxInteractionId\x20IN\x20?','FaxInteractionId','all','rows','show','includeAll','include','options','create','params','describe','addMessage','FaxMessage','ids','omit','getMessages','findOne','hasOwnProperty','format','YYYY-MM-DD\x20HH:mm:ss','addTags','setTags','spread','Tag','emit','faxInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','Attachment','Messages','get','mkdirSync','existsSync','createReadStream','pipe','createWriteStream','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','ejs','fs-extra','lodash','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','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','register','sendStatus','status','undefined','offset','limit','Content-Range','json','apply','save','update','then','destroy','error','stack','name','send','Users','map','fullname','TagIds','split','forEach','push','catch','talking','answered','unmanaged','closed','UserId','waiting','total','index','FaxInteraction','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','nolimit','sort','where','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.FaxInteractionId','user_has_fax_interactions','left_join','fax_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','a.id\x20=\x20i.FaxAccountId','me.FaxInteractionId\x20=\x20i.id','fax_interaction_has_tags','t.id\x20=\x20it.TagId','expr','parseSearch','search','conditions','unreadMessages','value','having','`\x20=\x200','$substring','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','ContactId','start','end','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0xb82c,0x150));var _0xcb82=function(_0x1923d4,_0x537193){_0x1923d4=_0x1923d4-0x0;var _0x39acd4=_0xb82c[_0x1923d4];return _0x39acd4;};'use strict';var emlformat=require(_0xcb82('0x0'));var rimraf=require(_0xcb82('0x1'));var zipdir=require(_0xcb82('0x2'));var jsonpatch=require(_0xcb82('0x3'));var rp=require(_0xcb82('0x4'));var moment=require(_0xcb82('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xcb82('0x6'));var fs=require('fs');var fs_extra=require(_0xcb82('0x7'));var _=require(_0xcb82('0x8'));var squel=require('squel');var crypto=require(_0xcb82('0x9'));var jsforce=require(_0xcb82('0xa'));var deskjs=require(_0xcb82('0xb'));var toCsv=require(_0xcb82('0xc'));var querystring=require(_0xcb82('0xd'));var Papa=require(_0xcb82('0xe'));var Redis=require(_0xcb82('0xf'));var authService=require(_0xcb82('0x10'));var qs=require(_0xcb82('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xcb82('0x12'));var logger=require(_0xcb82('0x13'))(_0xcb82('0x14'));var utils=require('../../config/utils');var config=require(_0xcb82('0x15'));var licenseUtil=require(_0xcb82('0x16'));var db=require(_0xcb82('0x17'))['db'];config[_0xcb82('0x18')]=_[_0xcb82('0x19')](config[_0xcb82('0x18')],{'host':_0xcb82('0x1a'),'port':0x18eb});var socket=require(_0xcb82('0x1b'))(new Redis(config[_0xcb82('0x18')]));require(_0xcb82('0x1c'))[_0xcb82('0x1d')](socket);function respondWithStatusCode(_0x4c8e5b,_0xacde4e){_0xacde4e=_0xacde4e||0xcc;return function(_0x1b64c7){if(_0x1b64c7){return _0x4c8e5b[_0xcb82('0x1e')](_0xacde4e);}return _0x4c8e5b[_0xcb82('0x1f')](_0xacde4e)['end']();};}function respondWithResult(_0x2b32c2,_0x2f34bb){_0x2f34bb=_0x2f34bb||0xc8;return function(_0x21190a){if(_0x21190a){return _0x2b32c2[_0xcb82('0x1f')](_0x2f34bb)['json'](_0x21190a);}};}function respondWithFilteredResult(_0x3fa05f,_0x28cf30){return function(_0x893faf){if(_0x893faf){var _0x453a39=typeof _0x28cf30['offset']===_0xcb82('0x20')&&typeof _0x28cf30['limit']===_0xcb82('0x20');var _0x3fbf2b=_0x893faf['count'];var _0x128911=_0x453a39?0x0:_0x28cf30[_0xcb82('0x21')];var _0x26e590=_0x453a39?_0x893faf['count']:_0x28cf30[_0xcb82('0x21')]+_0x28cf30[_0xcb82('0x22')];var _0x3bdd11;if(_0x26e590>=_0x3fbf2b){_0x26e590=_0x3fbf2b;_0x3bdd11=0xc8;}else{_0x3bdd11=0xce;}_0x3fa05f[_0xcb82('0x1f')](_0x3bdd11);return _0x3fa05f['set'](_0xcb82('0x23'),_0x128911+'-'+_0x26e590+'/'+_0x3fbf2b)[_0xcb82('0x24')](_0x893faf);}return null;};}function patchUpdates(_0x39dfa8){return function(_0x53f2f9){try{jsonpatch[_0xcb82('0x25')](_0x53f2f9,_0x39dfa8,!![]);}catch(_0x4df90c){return BPromise['reject'](_0x4df90c);}return _0x53f2f9[_0xcb82('0x26')]();};}function saveUpdates(_0x35af13,_0xff58c6){return function(_0x3cca86){if(_0x3cca86){return _0x3cca86[_0xcb82('0x27')](_0x35af13)[_0xcb82('0x28')](function(_0x397cce){return _0x397cce;});}return null;};}function removeEntity(_0x16ee13,_0x40025e){return function(_0x23add8){if(_0x23add8){return _0x23add8[_0xcb82('0x29')]()[_0xcb82('0x28')](function(){_0x16ee13[_0xcb82('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1af252,_0x154f1c){return function(_0x1dce19){if(!_0x1dce19){_0x1af252[_0xcb82('0x1e')](0x194);}return _0x1dce19;};}function handleError(_0x38397a,_0xc41ba9){_0xc41ba9=_0xc41ba9||0x1f4;return function(_0x2cbf37){logger[_0xcb82('0x2a')](_0x2cbf37[_0xcb82('0x2b')]);if(_0x2cbf37[_0xcb82('0x2c')]){delete _0x2cbf37['name'];}_0x38397a[_0xcb82('0x1f')](_0xc41ba9)[_0xcb82('0x2d')](_0x2cbf37);};}function getInteractionUsers(_0x26948d,_0x1923a4){return new BPromise(function(_0x3ea523,_0x12712d){try{if(_0x1923a4[_0x26948d['id']]){_0x26948d[_0xcb82('0x2e')]=_[_0xcb82('0x2f')](_0x1923a4[_0x26948d['id']],function(_0x37fb75){return{'id':_0x37fb75['id'],'fullname':_0x37fb75[_0xcb82('0x30')]};});}}catch(_0x316109){_0x12712d(_0x316109);}_0x3ea523(_0x26948d);});}function getInteractionTags(_0x4c3ec9,_0x300f3d){return new BPromise(function(_0x3cbaf5,_0x7f19f4){try{if(_0x4c3ec9['TagIds']){_0x4c3ec9['Tags']=[];_0x4c3ec9[_0xcb82('0x31')][_0xcb82('0x32')](',')[_0xcb82('0x33')](function(_0x577e0c){_0x4c3ec9['Tags'][_0xcb82('0x34')](_0x300f3d[_0x577e0c]);});}delete _0x4c3ec9[_0xcb82('0x31')];}catch(_0x39af3b){_0x7f19f4(_0x39af3b);}_0x3cbaf5(_0x4c3ec9);});}function updateFaxInteraction(_0x2016a7,_0x4e02b7,_0x18d58e){return new BPromise(function(_0x18ca7c,_0x47c0df){return getInteractionUsers(_0x2016a7,_0x18d58e)[_0xcb82('0x28')](function(_0x11220b){return getInteractionTags(_0x11220b,_0x4e02b7);})[_0xcb82('0x28')](function(_0x114137){return getStateInteraction(_0x114137);})[_0xcb82('0x28')](function(_0x1d0541){_0x18ca7c(_0x1d0541);})[_0xcb82('0x35')](function(_0x101194){_0x47c0df(_0x101194);});});}function getStateInteraction(_0x53ec9b){return new BPromise(function(_0x284335){_0x53ec9b['waiting']=0x0;_0x53ec9b[_0xcb82('0x36')]=0x0;_0x53ec9b[_0xcb82('0x37')]=0x0;_0x53ec9b[_0xcb82('0x38')]=0x0;_0x53ec9b['total']=0x0;if(!_0x53ec9b[_0xcb82('0x39')]&&!_0x53ec9b[_0xcb82('0x3a')]){_0x53ec9b[_0xcb82('0x3b')]+=0x1;}if(!_0x53ec9b[_0xcb82('0x39')]&&_0x53ec9b['UserId']){_0x53ec9b[_0xcb82('0x36')]+=0x1;if(_0x53ec9b[_0xcb82('0x3b')]){_0x53ec9b[_0xcb82('0x3b')]-=0x1;}}if(_0x53ec9b['closed']&&_0x53ec9b[_0xcb82('0x3a')]){_0x53ec9b[_0xcb82('0x37')]+=0x1;if(_0x53ec9b[_0xcb82('0x36')]){_0x53ec9b['talking']-=0x1;}}if(_0x53ec9b[_0xcb82('0x39')]&&!_0x53ec9b[_0xcb82('0x3a')]){_0x53ec9b['unmanaged']+=0x1;if(_0x53ec9b[_0xcb82('0x3b')]){_0x53ec9b['waiting']-=0x1;}}_0x53ec9b[_0xcb82('0x3c')]+=0x1;_0x284335(_0x53ec9b);});}exports[_0xcb82('0x3d')]=function(_0x1c0cb4,_0x3bf4a9){var _0x57ae58={},_0x2bae3c={},_0x1fbba3={'count':0x0,'rows':[]};var _0x11bed9=_['map'](db[_0xcb82('0x3e')][_0xcb82('0x3f')],function(_0x517102){return{'name':_0x517102[_0xcb82('0x40')],'type':_0x517102[_0xcb82('0x41')][_0xcb82('0x42')]};});_0x2bae3c['model']=_[_0xcb82('0x2f')](_0x11bed9,_0xcb82('0x2c'));_0x2bae3c[_0xcb82('0x43')]=_['keys'](_0x1c0cb4[_0xcb82('0x43')]);_0x2bae3c[_0xcb82('0x44')]=_[_0xcb82('0x45')](_0x2bae3c[_0xcb82('0x46')],_0x2bae3c[_0xcb82('0x43')]);_0x57ae58[_0xcb82('0x47')]=_[_0xcb82('0x45')](_0x2bae3c[_0xcb82('0x46')],qs[_0xcb82('0x48')](_0x1c0cb4[_0xcb82('0x43')]['fields']));_0x57ae58[_0xcb82('0x47')]=_0x57ae58[_0xcb82('0x47')][_0xcb82('0x49')]?_0x57ae58[_0xcb82('0x47')]:_0x2bae3c[_0xcb82('0x46')];if(!_0x1c0cb4[_0xcb82('0x43')]['hasOwnProperty'](_0xcb82('0x4a'))){_0x57ae58[_0xcb82('0x22')]=qs[_0xcb82('0x22')](_0x1c0cb4[_0xcb82('0x43')][_0xcb82('0x22')]);_0x57ae58['offset']=qs[_0xcb82('0x21')](_0x1c0cb4[_0xcb82('0x43')][_0xcb82('0x21')]);}_0x57ae58['order']=qs['sort'](_0x1c0cb4[_0xcb82('0x43')][_0xcb82('0x4b')]);_0x57ae58[_0xcb82('0x4c')]=qs[_0xcb82('0x44')](_[_0xcb82('0x4d')](_0x1c0cb4[_0xcb82('0x43')],_0x2bae3c[_0xcb82('0x44')]),_0x11bed9);var _0x3e99b4=[];var _0x28c4fd=squel[_0xcb82('0x4e')]()['field']('id')[_0xcb82('0x4f')](_0xcb82('0x2c'))[_0xcb82('0x4f')](_0xcb82('0x50'))[_0xcb82('0x51')](_0xcb82('0x52'));var _0x3daf8f=squel[_0xcb82('0x4e')]()[_0xcb82('0x4f')](_0xcb82('0x53'))[_0xcb82('0x4f')](_0xcb82('0x54'))[_0xcb82('0x4f')](_0xcb82('0x55'))['from'](_0xcb82('0x56'),'ui')[_0xcb82('0x57')]('users','u','u.id\x20=\x20ui.UserId');var _0x988774=squel[_0xcb82('0x4e')]()[_0xcb82('0x51')](_0xcb82('0x58'),'i')[_0xcb82('0x57')](_0xcb82('0x59'),'c',_0xcb82('0x5a'))[_0xcb82('0x57')]('users','o',_0xcb82('0x5b'))['left_join']('fax_accounts','a',_0xcb82('0x5c'))['left_join']('fax_messages','me',_0xcb82('0x5d'))[_0xcb82('0x57')](_0xcb82('0x5e'),'it','it.FaxInteractionId\x20=\x20i.id')[_0xcb82('0x57')](_0xcb82('0x52'),'t',_0xcb82('0x5f'));var _0xc5090b=squel['expr']();var _0x156fd3=[];var _0x128324=squel[_0xcb82('0x60')]();var _0x11388d;if(_0x1c0cb4[_0xcb82('0x43')]['search']){_0x11388d=as[_0xcb82('0x61')](_0x1c0cb4[_0xcb82('0x43')][_0xcb82('0x62')]);var _0x556de0=_0x11388d['sqlOperator'];for(var _0x84b840=0x0;_0x84b840<_0x11388d[_0xcb82('0x63')][_0xcb82('0x49')];_0x84b840++){var _0x2ed2d3=_0x11388d['conditions'][_0x84b840];var _0x7aaf0e='i';var _0x3ac8a8=_['find'](_0x11bed9,['name',_0x2ed2d3[_0xcb82('0x4f')]]);if(!_0x3ac8a8){switch(_0x2ed2d3['field']){case _0xcb82('0x64'):if(_0x2ed2d3[_0xcb82('0x65')]==0x1){_0x988774[_0xcb82('0x66')]('`'+_0x2ed2d3[_0xcb82('0x4f')]+_0xcb82('0x67'));}else{_0x988774[_0xcb82('0x66')]('`'+_0x2ed2d3[_0xcb82('0x4f')]+'`\x20>\x200');}break;case'Contact':if(_0x2ed2d3['operator']===_0xcb82('0x68')){if(_0x2ed2d3[_0xcb82('0x65')]['split']('\x20')[_0xcb82('0x49')]>0x1){_0xc5090b[_0x556de0]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xcb82('0x69')](_0x2ed2d3['value']),null);}else{var _0x49a3a4='%'+_0x2ed2d3[_0xcb82('0x65')]+'%';_0xc5090b[_0x556de0](_0xcb82('0x6a'),_0x49a3a4,_0x49a3a4,_0x49a3a4);}}else{_0x3ac8a8=_[_0xcb82('0x6b')](_0x11bed9,['name',_0xcb82('0x6c')]);_0x2ed2d3[_0xcb82('0x4f')]=_0xcb82('0x6c');_0xc3519d=as['buildExpression'](_0x7aaf0e,_0x3ac8a8[_0xcb82('0x41')],_0x2ed2d3);_0xc5090b[_0x556de0](_0xc3519d['text'],_0xc3519d[_0xcb82('0x65')][_0xcb82('0x6d')],_0xc3519d[_0xcb82('0x65')][_0xcb82('0x6e')]);}break;case'Tag':var _0x11c630=_0x2ed2d3['value'][_0xcb82('0x32')](',')[_0xcb82('0x2f')](function(_0x551288){return Number(_0x551288);});_0x11c630[_0xcb82('0x33')](function(_0x37f9be){_0x128324['or'](_0xcb82('0x6f'),'%,'+_0x37f9be+',%');});_0x156fd3=_[_0xcb82('0x70')](_0x156fd3,_0x11c630);break;case _0xcb82('0x71'):if(_0x2ed2d3[_0xcb82('0x72')]===_0xcb82('0x68')){_0xc5090b[_0x556de0](_0xcb82('0x73'),'%'+_0x2ed2d3['value']+'%',null);}else{_0x3ac8a8=_[_0xcb82('0x6b')](_0x11bed9,[_0xcb82('0x2c'),_0xcb82('0x3a')]);_0x2ed2d3[_0xcb82('0x4f')]='UserId';_0xc3519d=as[_0xcb82('0x74')](_0x7aaf0e,_0x3ac8a8[_0xcb82('0x41')],_0x2ed2d3);_0xc5090b[_0x556de0](_0xc3519d['text'],_0xc3519d[_0xcb82('0x65')]['start'],_0xc3519d[_0xcb82('0x65')][_0xcb82('0x6e')]);}break;case _0xcb82('0x75'):_0xc3519d=as[_0xcb82('0x74')]('me',null,_0x2ed2d3);_0xc5090b[_0x556de0](_0xc3519d[_0xcb82('0x76')],_0xc3519d['value']['start'],_0xc3519d['value'][_0xcb82('0x6e')]);break;}}else{var _0xc3519d=as[_0xcb82('0x74')](_0x7aaf0e,_0x3ac8a8[_0xcb82('0x41')],_0x2ed2d3);_0xc5090b[_0x556de0](_0xc3519d['text'],_0xc3519d[_0xcb82('0x65')][_0xcb82('0x6d')],_0xc3519d[_0xcb82('0x65')][_0xcb82('0x6e')]);}}}else{var _0x343f34=_(_0x1c0cb4[_0xcb82('0x43')])[_0xcb82('0x77')]()[_0xcb82('0x2f')](function(_0x125ef9){return _[_0xcb82('0x78')](_0x11bed9,[_0xcb82('0x2c'),_0x125ef9])?_0x125ef9:undefined;})[_0xcb82('0x79')]()['value']();if(!_[_0xcb82('0x7a')](_0x343f34)){_0x343f34['forEach'](function(_0x43733f){if(_0x43733f===_0xcb82('0x7b')){_0x988774[_0xcb82('0x4c')](_0xcb82('0x7c'),[][_0xcb82('0x7d')](_0x1c0cb4[_0xcb82('0x43')][_0x43733f]));}else if(_0x43733f==='createdAt'){var _0x1110a0=JSON['parse'](_0x1c0cb4[_0xcb82('0x43')][_0x43733f])[_0xcb82('0x7e')];var _0x153058=JSON[_0xcb82('0x7f')](_0x1c0cb4[_0xcb82('0x43')][_0x43733f])[_0xcb82('0x80')];_0x988774[_0xcb82('0x4c')](_0xcb82('0x81'),_0x1110a0,_0x153058);}else{if(_0x1c0cb4['query'][_0x43733f]===_0xcb82('0x82')){_0x988774[_0xcb82('0x4c')]('i.'+_0x43733f+_0xcb82('0x83'));}else{_0x988774['where']('i.'+_0x43733f+_0xcb82('0x84'),_0x1c0cb4[_0xcb82('0x43')][_0x43733f]);}}});}if(_0x1c0cb4[_0xcb82('0x43')][_0xcb82('0x85')]){if(_0x1c0cb4['query'][_0xcb82('0x85')]==0x1){_0x988774[_0xcb82('0x66')](_0xcb82('0x86'));}else{_0x988774[_0xcb82('0x66')](_0xcb82('0x87'));}}if(_0x1c0cb4[_0xcb82('0x43')][_0xcb82('0x88')]){_0x156fd3=_[_0xcb82('0x89')](_0x1c0cb4['query']['tag'])?_0x1c0cb4['query'][_0xcb82('0x88')]:new Array(_0x1c0cb4['query']['tag']);_0x156fd3[_0xcb82('0x33')](function(_0x2b05d4){_0x128324['or'](_0xcb82('0x6f'),'%,'+_0x2b05d4+',%');});}if(_0x1c0cb4[_0xcb82('0x43')][_0xcb82('0x8a')]){var _0x20001e=_0x1c0cb4[_0xcb82('0x43')][_0xcb82('0x8a')][_0xcb82('0x8b')]('\x5c','\x5c\x5c')[_0xcb82('0x8b')](/'/g,'\x27\x27');if(qs[_0xcb82('0x8c')](_0x20001e)){_0xc5090b['or'](_0xcb82('0x8d'),_0x20001e+'%')['or'](_0xcb82('0x8e'),_0x20001e+'%');}_0xc5090b['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x20001e+'%');}}_0x988774[_0xcb82('0x4c')](_0xc5090b);_0x988774['group'](_0xcb82('0x8f'));var _0x31e412={'type':db[_0xcb82('0x90')]['QueryTypes'][_0xcb82('0x91')],'raw':!![]};var _0x214a45=_0x988774[_0xcb82('0x92')]();_0x214a45[_0xcb82('0x4f')](_0xcb82('0x8f'));_0x214a45['field'](_0xcb82('0x93'),_0xcb82('0x64'));if(_0x57ae58[_0xcb82('0x94')]){_0x57ae58['order'][_0xcb82('0x33')](function(_0x5e4e5f){var _0x57be37=_0x5e4e5f[0x0]===_0xcb82('0x95')?_0x5e4e5f[0x0]:'i.'+_0x5e4e5f[0x0];_0x988774[_0xcb82('0x94')](_0x57be37,_0x5e4e5f[0x1]==='DESC'?![]:!![]);});}if(!_[_0xcb82('0x7a')](_0x156fd3)){_0x988774[_0xcb82('0x66')](_0x128324);_0x214a45[_0xcb82('0x4c')](_0xcb82('0x96'),_0x156fd3);}BPromise[_0xcb82('0x97')]()[_0xcb82('0x28')](function(){if(!_0x11388d){if(_0x1c0cb4[_0xcb82('0x43')][_0xcb82('0x7b')])return;_0x214a45['where'](_0xcb82('0x98'));_0x988774[_0xcb82('0x4c')]('i.FaxAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x1c0cb4[_0xcb82('0x99')][_0xcb82('0x9a')]!=='agent')return;return _0x1c0cb4[_0xcb82('0x99')][_0xcb82('0x9b')]({'attributes':['id'],'raw':!![]})[_0xcb82('0x28')](function(_0xd51f19){if(_[_0xcb82('0x7a')](_0xd51f19)){_0x214a45[_0xcb82('0x4c')](_0xcb82('0x9c'));_0x988774[_0xcb82('0x4c')](_0xcb82('0x9c'));}else{_0x214a45[_0xcb82('0x4c')]('i.FaxAccountId\x20IN\x20?',_[_0xcb82('0x2f')](_0xd51f19,'id'));_0x988774['where']('i.FaxAccountId\x20IN\x20?',_['map'](_0xd51f19,'id'));}});})['then'](function(){if(_0x1c0cb4['user'][_0xcb82('0x9a')]==='agent'&&!_0x11388d&&!_0x1c0cb4[_0xcb82('0x43')][_0xcb82('0x7b')])return[];return db['sequelize'][_0xcb82('0x43')](_0x214a45['toString'](),_0x31e412);})[_0xcb82('0x28')](function(_0x3d8a65){_0x1fbba3[_0xcb82('0x9d')]=_0x3d8a65['length'];if(_0x1fbba3[_0xcb82('0x9d')]===0x0)return[];return db[_0xcb82('0x9e')]['query'](_0x28c4fd[_0xcb82('0x9f')](),_0x31e412)['then'](function(_0x51fb4c){_0x3e99b4=_[_0xcb82('0xa0')](_0x51fb4c,'id');_0x31e412=_[_0xcb82('0xa1')](_0x31e412,{'model':db[_0xcb82('0x3e')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1c0cb4[_0xcb82('0x43')]['fields']){_0x57ae58['attributes']['forEach'](function(_0x2bd5c7){_0x988774[_0xcb82('0x4f')]('i.'+_0x2bd5c7);});}else{_0x988774[_0xcb82('0x4f')](_0xcb82('0x93'),_0xcb82('0x64'));_0x988774[_0xcb82('0x4f')](_0xcb82('0xa2'),_0xcb82('0xa3'));_0x988774[_0xcb82('0x4f')](_0xcb82('0xa4'),_0xcb82('0xa5'));_0x988774[_0xcb82('0x4f')]('CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName');_0x988774[_0xcb82('0x4f')](_0xcb82('0xa6'));_0x988774[_0xcb82('0x4f')](_0xcb82('0xa7'),'Contact.firstName');_0x988774[_0xcb82('0x4f')](_0xcb82('0xa8'),_0xcb82('0xa9'));_0x988774[_0xcb82('0x4f')](_0xcb82('0xaa'),_0xcb82('0xab'));_0x988774[_0xcb82('0x4f')](_0xcb82('0xac'),'Contact.phone');_0x988774[_0xcb82('0x4f')](_0xcb82('0xad'),_0xcb82('0xae'));_0x988774['field']('c.fax','Contact.fax');_0x988774['field'](_0xcb82('0xaf'),_0xcb82('0xb0'));_0x988774[_0xcb82('0x4f')](_0xcb82('0xb1'),_0xcb82('0xb2'));_0x988774[_0xcb82('0x4f')](_0xcb82('0xb3'),'TagIds');}if(_0x57ae58[_0xcb82('0x22')])_0x988774[_0xcb82('0x22')](_0x57ae58['limit']);if(_0x57ae58[_0xcb82('0x21')])_0x988774[_0xcb82('0x21')](_0x57ae58[_0xcb82('0x21')]);return db['sequelize'][_0xcb82('0x43')](_0x988774[_0xcb82('0x9f')](),_0x31e412);})[_0xcb82('0x28')](function(_0x167616){if(_0x167616[_0xcb82('0x49')]>0x0)_0x3daf8f['where'](_0xcb82('0xb4'),_[_0xcb82('0x2f')](_0x167616,'id'));return db[_0xcb82('0x9e')]['query'](_0x3daf8f['toString'](),_0x31e412)[_0xcb82('0x28')](function(_0x2d2239){var _0x586d73=_['groupBy'](_0x2d2239,_0xcb82('0xb5'));var _0x5cdd70=[];_0x167616[_0xcb82('0x33')](function(_0x94cc32){_0x5cdd70['push'](updateFaxInteraction(_0x94cc32,_0x3e99b4,_0x586d73));});return BPromise[_0xcb82('0xb6')](_0x5cdd70);});});})['then'](function(_0x276af8){_0x1fbba3[_0xcb82('0xb7')]=_0x276af8;return _0x1fbba3;})[_0xcb82('0x28')](respondWithFilteredResult(_0x3bf4a9,_0x57ae58))[_0xcb82('0x35')](handleError(_0x3bf4a9,null));};exports[_0xcb82('0xb8')]=function(_0x3309bc,_0x4fd776){var _0x48f6bb={'raw':![],'where':{'id':_0x3309bc['params']['id']}},_0x34d19e={};_0x34d19e[_0xcb82('0x46')]=_['keys'](db[_0xcb82('0x3e')][_0xcb82('0x3f')]);_0x34d19e[_0xcb82('0x43')]=_['keys'](_0x3309bc['query']);_0x34d19e[_0xcb82('0x44')]=_[_0xcb82('0x45')](_0x34d19e[_0xcb82('0x46')],_0x34d19e[_0xcb82('0x43')]);_0x48f6bb['attributes']=_[_0xcb82('0x45')](_0x34d19e[_0xcb82('0x46')],qs[_0xcb82('0x48')](_0x3309bc['query']['fields']));_0x48f6bb[_0xcb82('0x47')]=_0x48f6bb[_0xcb82('0x47')][_0xcb82('0x49')]?_0x48f6bb[_0xcb82('0x47')]:_0x34d19e[_0xcb82('0x46')];if(_0x3309bc[_0xcb82('0x43')][_0xcb82('0xb9')]){_0x48f6bb[_0xcb82('0xba')]=[{'all':!![]}];}_0x48f6bb=_['merge']({},_0x48f6bb,_0x3309bc[_0xcb82('0xbb')]);return db['FaxInteraction'][_0xcb82('0x6b')](_0x48f6bb)[_0xcb82('0x28')](handleEntityNotFound(_0x4fd776,null))['then'](respondWithResult(_0x4fd776,null))[_0xcb82('0x35')](handleError(_0x4fd776,null));};exports['create']=function(_0x2bbb6a,_0x2ff691){return db[_0xcb82('0x3e')][_0xcb82('0xbc')](_0x2bbb6a[_0xcb82('0x75')],{})[_0xcb82('0x28')](respondWithResult(_0x2ff691,0xc9))[_0xcb82('0x35')](handleError(_0x2ff691,null));};exports[_0xcb82('0x27')]=function(_0x584097,_0xedb670){if(_0x584097[_0xcb82('0x75')]['id']){delete _0x584097[_0xcb82('0x75')]['id'];}return db[_0xcb82('0x3e')]['find']({'where':{'id':_0x584097[_0xcb82('0xbd')]['id']}})[_0xcb82('0x28')](handleEntityNotFound(_0xedb670,null))[_0xcb82('0x28')](saveUpdates(_0x584097['body'],null))[_0xcb82('0x28')](respondWithResult(_0xedb670,null))[_0xcb82('0x35')](handleError(_0xedb670,null));};exports[_0xcb82('0x29')]=function(_0x1a1c7e,_0x2ee0d9){return db['FaxInteraction'][_0xcb82('0x6b')]({'where':{'id':_0x1a1c7e[_0xcb82('0xbd')]['id']}})['then'](handleEntityNotFound(_0x2ee0d9,null))[_0xcb82('0x28')](removeEntity(_0x2ee0d9,null))[_0xcb82('0x35')](handleError(_0x2ee0d9,null));};exports[_0xcb82('0xbe')]=function(_0x4bf40f,_0x212fef){return db[_0xcb82('0x3e')]['describe']()[_0xcb82('0x28')](respondWithResult(_0x212fef,null))[_0xcb82('0x35')](handleError(_0x212fef,null));};exports[_0xcb82('0xbf')]=function(_0x1cb080,_0x26767d,_0x1da2ca){return db[_0xcb82('0xc0')][_0xcb82('0x6b')]({'where':{'id':_0x1cb080[_0xcb82('0xbd')]['id']}})[_0xcb82('0x28')](handleEntityNotFound(_0x26767d,null))['then'](function(_0x553f2a){if(_0x553f2a){return _0x553f2a['addMessage'](_0x1cb080[_0xcb82('0x75')][_0xcb82('0xc1')],_[_0xcb82('0xc2')](_0x1cb080['body'],[_0xcb82('0xc1'),'id'])||{});}})[_0xcb82('0x28')](respondWithResult(_0x26767d,null))['catch'](handleError(_0x26767d,null));};exports[_0xcb82('0xc3')]=function(_0x2210ad,_0x5bf263,_0x3cb998){var _0x1d49fc={'raw':![],'where':{}};var _0x393f19={};var _0x1ff2dd={'count':0x0,'rows':[]};return db[_0xcb82('0x3e')][_0xcb82('0xc4')]({'where':{'id':_0x2210ad[_0xcb82('0xbd')]['id']}})[_0xcb82('0x28')](handleEntityNotFound(_0x5bf263,null))[_0xcb82('0x28')](function(_0x43d603){if(_0x43d603){_0x393f19[_0xcb82('0x46')]=_[_0xcb82('0x77')](db['FaxMessage'][_0xcb82('0x3f')]);_0x393f19[_0xcb82('0x43')]=_[_0xcb82('0x77')](_0x2210ad[_0xcb82('0x43')]);_0x393f19['filters']=_[_0xcb82('0x45')](_0x393f19['model'],_0x393f19[_0xcb82('0x43')]);_0x1d49fc['attributes']=_['intersection'](_0x393f19[_0xcb82('0x46')],qs[_0xcb82('0x48')](_0x2210ad[_0xcb82('0x43')][_0xcb82('0x48')]));_0x1d49fc[_0xcb82('0x47')]=_0x1d49fc[_0xcb82('0x47')][_0xcb82('0x49')]?_0x1d49fc[_0xcb82('0x47')]:_0x393f19[_0xcb82('0x46')];if(!_0x2210ad[_0xcb82('0x43')][_0xcb82('0xc5')]('nolimit')){_0x1d49fc[_0xcb82('0x22')]=qs[_0xcb82('0x22')](_0x2210ad[_0xcb82('0x43')][_0xcb82('0x22')]);_0x1d49fc[_0xcb82('0x21')]=qs['offset'](_0x2210ad[_0xcb82('0x43')][_0xcb82('0x21')]);}_0x1d49fc['order']=qs[_0xcb82('0x4b')](_0x2210ad[_0xcb82('0x43')]['sort']);_0x1d49fc[_0xcb82('0x4c')]=qs[_0xcb82('0x44')](_[_0xcb82('0x4d')](_0x2210ad[_0xcb82('0x43')],_0x393f19['filters']));_0x1d49fc[_0xcb82('0x4c')][_0xcb82('0xb5')]=_0x43d603['id'];if(_0x2210ad[_0xcb82('0x43')][_0xcb82('0x8a')]){_0x1d49fc[_0xcb82('0x4c')]=_['merge'](_0x1d49fc['where'],{'$or':_[_0xcb82('0x2f')](_0x1d49fc[_0xcb82('0x47')],function(_0x4876c9){var _0x29ee31={};_0x29ee31[_0x4876c9]={'$like':'%'+_0x2210ad[_0xcb82('0x43')][_0xcb82('0x8a')]+'%'};return _0x29ee31;})});}if(_0x2210ad[_0xcb82('0x43')][_0xcb82('0x7e')]){var _0x327dc6=_0x2210ad[_0xcb82('0x43')][_0xcb82('0x7e')][_0xcb82('0x32')](',');var _0x515614={};_0x515614[_0x327dc6[0x0]]={'$gte':moment(_0x327dc6[0x1])[_0xcb82('0xc6')](_0xcb82('0xc7'))};_0x1d49fc[_0xcb82('0x4c')]=_[_0xcb82('0xa1')](_0x1d49fc[_0xcb82('0x4c')],_0x515614);}_0x1d49fc=_[_0xcb82('0xa1')]({},_0x1d49fc,_0x2210ad[_0xcb82('0xbb')]);return db['FaxMessage'][_0xcb82('0x9d')]({'where':_0x1d49fc[_0xcb82('0x4c')]})['then'](function(_0xb2abf4){_0x1ff2dd[_0xcb82('0x9d')]=_0xb2abf4;if(_0x2210ad[_0xcb82('0x43')][_0xcb82('0xb9')]){_0x1d49fc[_0xcb82('0xba')]=[{'all':!![]}];}return db[_0xcb82('0xc0')]['findAll'](_0x1d49fc);})[_0xcb82('0x28')](function(_0x351475){_0x1ff2dd[_0xcb82('0xb7')]=_0x351475;return _0x1ff2dd;});}})[_0xcb82('0x28')](respondWithFilteredResult(_0x5bf263,_0x1d49fc))[_0xcb82('0x35')](handleError(_0x5bf263,null));};exports[_0xcb82('0xc8')]=function(_0x85e10d,_0x1423ff,_0x2ad29b){return db[_0xcb82('0x3e')][_0xcb82('0x6b')]({'where':{'id':_0x85e10d[_0xcb82('0xbd')]['id']}})[_0xcb82('0x28')](handleEntityNotFound(_0x1423ff,null))[_0xcb82('0x28')](function(_0x48686b){if(_0x48686b){return _0x48686b[_0xcb82('0xc9')](_0x85e10d['body'][_0xcb82('0xc1')],_[_0xcb82('0xc2')](_0x85e10d[_0xcb82('0x75')],[_0xcb82('0xc1'),'id'])||{})[_0xcb82('0xca')](function(){return db[_0xcb82('0xcb')]['findAll']({'attributes':['id',_0xcb82('0x2c'),_0xcb82('0x50')],'where':{'id':_0x85e10d[_0xcb82('0x75')][_0xcb82('0xc1')]}});})[_0xcb82('0x28')](function(_0x1e7213){socket[_0xcb82('0xcc')](_0xcb82('0xcd'),{'id':Number(_0x85e10d[_0xcb82('0xbd')]['id']),'tags':_0x1e7213||[]});return{'id':Number(_0x85e10d['params']['id']),'tags':_0x1e7213||[]};});}})[_0xcb82('0x28')](respondWithResult(_0x1423ff,null))['catch'](handleError(_0x1423ff,null));};exports[_0xcb82('0xce')]=function(_0x12f666,_0x1502db,_0x5f2270){return db[_0xcb82('0x3e')][_0xcb82('0x6b')]({'where':{'id':_0x12f666['params']['id']}})[_0xcb82('0x28')](handleEntityNotFound(_0x1502db,null))[_0xcb82('0x28')](function(_0x245355){if(_0x245355){return _0x245355[_0xcb82('0xce')](_0x12f666[_0xcb82('0x43')]['ids']);}})[_0xcb82('0x28')](respondWithStatusCode(_0x1502db,null))[_0xcb82('0x35')](handleError(_0x1502db,null));};exports[_0xcb82('0xcf')]=function(_0x2a24de,_0x2b7196){var _0x87a4a5=moment()[_0xcb82('0xd0')]()[_0xcb82('0x9f')]();var _0x1ff941=path[_0xcb82('0xd1')](config[_0xcb82('0xd2')],_0xcb82('0xd3'),_0xcb82('0xd4'),_0xcb82('0xd5'));var _0x28f8a3=path[_0xcb82('0xd1')](config[_0xcb82('0xd2')],'server',_0xcb82('0xd4'),_0xcb82('0xd6'));var _0x3d9558=path[_0xcb82('0xd1')](_0x1ff941,_0x87a4a5);var _0x19a3e0=util[_0xcb82('0xc6')]('transcript-%d-%s.zip',_0x2a24de['params']['id'],_0x87a4a5);var _0x2d6196=path[_0xcb82('0xd1')](_0x1ff941,_0x19a3e0);var _0x136769=[];_0x136769['push']({'model':db['Attachment'],'as':_0xcb82('0xd7'),'raw':!![]});var _0x35e134=[{'model':db['FaxMessage'],'as':_0xcb82('0xd8'),'attributes':['id','body','createdAt'],'include':_0x136769}];return db[_0xcb82('0x3e')][_0xcb82('0x6b')]({'where':{'id':_0x2a24de[_0xcb82('0xbd')]['id']},'include':_0x35e134})[_0xcb82('0x28')](handleEntityNotFound(_0x2b7196,null))[_0xcb82('0x28')](function(_0x853069){if(_0x853069&&_0x853069['Messages']){var _0x1cf3c1=_0x853069[_0xcb82('0xd9')]({'plain':!![]});fs[_0xcb82('0xda')](_0x3d9558);for(var _0x46b074=0x0;_0x46b074<_0x1cf3c1['Messages']['length'];_0x46b074++){var _0x58d2aa=_0x1cf3c1[_0xcb82('0xd8')][_0x46b074][_0xcb82('0xd7')];if(_0x58d2aa){var _0x3249c3=path['join'](_0x28f8a3,_0x58d2aa['basename']);if(fs[_0xcb82('0xdb')](_0x3249c3)){fs[_0xcb82('0xdc')](_0x3249c3)[_0xcb82('0xdd')](fs[_0xcb82('0xde')](path[_0xcb82('0xd1')](_0x3d9558,_0x58d2aa['basename'])));}}}return BPromise[_0xcb82('0x97')]()[_0xcb82('0x28')](function(){return new BPromise(function(_0x31b8b3,_0x1712b2){zipdir(_0x3d9558,{'saveTo':_0x2d6196},function(_0x4c0a2b,_0xbe695a){if(_0x4c0a2b)return _0x1712b2(_0x4c0a2b);return _0x31b8b3(_0xbe695a);});})[_0xcb82('0x28')](function(){return new BPromise(function(_0x408480,_0x381fe6){rimraf(_0x3d9558,function(_0x33db94){if(_0x33db94)_0x381fe6(_0x33db94);return _0x408480();});});})[_0xcb82('0x28')](function(){return _0x2b7196['download'](_0x2d6196,_0x19a3e0,function(_0x2ab183){if(_0x2ab183){console['log'](_0xcb82('0xdf'),_0x2ab183);}else{fs[_0xcb82('0xe0')](_0x2d6196);}});});});}else{return _0x2b7196[_0xcb82('0x1e')](0xc8);}})[_0xcb82('0x35')](handleError(_0x2b7196,null));};
\ No newline at end of file
+var _0x9850=['user_has_fax_interactions','u.id\x20=\x20ui.UserId','fax_interactions','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','a.id\x20=\x20i.FaxAccountId','fax_messages','fax_interaction_has_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','`\x20=\x200','having','Contact','operator','$substring','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','text','start','Tag','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','buildExpression','body','compact','isEmpty','FaxAccountId','i.FaxAccountId\x20IN\x20?','concat','createdAt','$gte','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','i.id\x20LIKE\x20?','i.fax\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','SELECT','clone','DESC','t.id\x20IN\x20?','resolve','i.FaxAccountId\x20IS\x20NOT\x20NULL','role','agent','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','sequelize','toString','keyBy','merge','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.mandatoryDisposition','contactName','c.firstName','Contact.firstName','Contact.lastName','Contact.email','c.phone','Contact.phone','Contact.mobile','c.fax','o.fullname','o.internal','Owner.internal','ui.FaxInteractionId\x20IN\x20?','groupBy','FaxInteractionId','all','rows','params','includeAll','include','create','addMessage','ids','getMessages','FaxMessage','format','options','findAll','omit','spread','removeTags','download','join','server','files','tmp','root','attachments','transcript-%d-%s.zip','Attachment','Messages','get','mkdirSync','basename','createReadStream','pipe','createWriteStream','err','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../config/logger','../../config/utils','../../mysqldb','redis','./faxInteraction.socket','register','status','end','json','offset','limit','count','Content-Range','apply','save','update','then','destroy','sendStatus','error','stack','name','Users','fullname','TagIds','Tags','forEach','push','catch','talking','answered','unmanaged','total','closed','UserId','waiting','index','map','FaxInteraction','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','select','field','from','tools_tags','u.id','u.fullname'];(function(_0x40f5bc,_0x47696e){var _0x40c038=function(_0x53a407){while(--_0x53a407){_0x40f5bc['push'](_0x40f5bc['shift']());}};_0x40c038(++_0x47696e);}(_0x9850,0x81));var _0x0985=function(_0x4e34e4,_0x44ef9a){_0x4e34e4=_0x4e34e4-0x0;var _0x21032b=_0x9850[_0x4e34e4];return _0x21032b;};'use strict';var emlformat=require(_0x0985('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0985('0x1'));var jsonpatch=require(_0x0985('0x2'));var rp=require(_0x0985('0x3'));var moment=require(_0x0985('0x4'));var BPromise=require(_0x0985('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x0985('0x6'));var sox=require('sox');var csv=require(_0x0985('0x7'));var ejs=require(_0x0985('0x8'));var fs=require('fs');var fs_extra=require(_0x0985('0x9'));var _=require(_0x0985('0xa'));var squel=require(_0x0985('0xb'));var crypto=require(_0x0985('0xc'));var jsforce=require(_0x0985('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x0985('0xe'));var Papa=require(_0x0985('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x0985('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x0985('0x11'))('api');var utils=require(_0x0985('0x12'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x0985('0x13'))['db'];config['redis']=_['defaults'](config[_0x0985('0x14')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0985('0x14')]));require(_0x0985('0x15'))[_0x0985('0x16')](socket);function respondWithStatusCode(_0x3fcae1,_0x43967e){_0x43967e=_0x43967e||0xcc;return function(_0xdd0ab){if(_0xdd0ab){return _0x3fcae1['sendStatus'](_0x43967e);}return _0x3fcae1[_0x0985('0x17')](_0x43967e)[_0x0985('0x18')]();};}function respondWithResult(_0x194c94,_0x351786){_0x351786=_0x351786||0xc8;return function(_0x5050de){if(_0x5050de){return _0x194c94['status'](_0x351786)[_0x0985('0x19')](_0x5050de);}};}function respondWithFilteredResult(_0x1a37fb,_0x425f21){return function(_0x22278b){if(_0x22278b){var _0x56ba72=typeof _0x425f21[_0x0985('0x1a')]==='undefined'&&typeof _0x425f21[_0x0985('0x1b')]==='undefined';var _0x3b82cb=_0x22278b[_0x0985('0x1c')];var _0x1e04a4=_0x56ba72?0x0:_0x425f21['offset'];var _0x455913=_0x56ba72?_0x22278b[_0x0985('0x1c')]:_0x425f21[_0x0985('0x1a')]+_0x425f21['limit'];var _0x2206ca;if(_0x455913>=_0x3b82cb){_0x455913=_0x3b82cb;_0x2206ca=0xc8;}else{_0x2206ca=0xce;}_0x1a37fb[_0x0985('0x17')](_0x2206ca);return _0x1a37fb['set'](_0x0985('0x1d'),_0x1e04a4+'-'+_0x455913+'/'+_0x3b82cb)[_0x0985('0x19')](_0x22278b);}return null;};}function patchUpdates(_0x29a02f){return function(_0x24edba){try{jsonpatch[_0x0985('0x1e')](_0x24edba,_0x29a02f,!![]);}catch(_0x5296d4){return BPromise['reject'](_0x5296d4);}return _0x24edba[_0x0985('0x1f')]();};}function saveUpdates(_0x3739a9,_0x440d60){return function(_0xa6b09b){if(_0xa6b09b){return _0xa6b09b[_0x0985('0x20')](_0x3739a9)[_0x0985('0x21')](function(_0x2205e8){return _0x2205e8;});}return null;};}function removeEntity(_0x9700b2,_0x1aa86e){return function(_0x3f040e){if(_0x3f040e){return _0x3f040e[_0x0985('0x22')]()['then'](function(){_0x9700b2[_0x0985('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4d434,_0x1fcdc2){return function(_0x3d5640){if(!_0x3d5640){_0x4d434[_0x0985('0x23')](0x194);}return _0x3d5640;};}function handleError(_0x3d055e,_0x3ad177){_0x3ad177=_0x3ad177||0x1f4;return function(_0xddbb79){logger[_0x0985('0x24')](_0xddbb79[_0x0985('0x25')]);if(_0xddbb79[_0x0985('0x26')]){delete _0xddbb79['name'];}_0x3d055e[_0x0985('0x17')](_0x3ad177)['send'](_0xddbb79);};}function getInteractionUsers(_0x3a50ba,_0x3ae2c6){return new BPromise(function(_0x1236b7,_0x435907){try{if(_0x3ae2c6[_0x3a50ba['id']]){_0x3a50ba[_0x0985('0x27')]=_['map'](_0x3ae2c6[_0x3a50ba['id']],function(_0x2c2514){return{'id':_0x2c2514['id'],'fullname':_0x2c2514[_0x0985('0x28')]};});}}catch(_0x14b7b8){_0x435907(_0x14b7b8);}_0x1236b7(_0x3a50ba);});}function getInteractionTags(_0x1d9ee0,_0x465d31){return new BPromise(function(_0x1be457,_0x18d1f3){try{if(_0x1d9ee0[_0x0985('0x29')]){_0x1d9ee0[_0x0985('0x2a')]=[];_0x1d9ee0[_0x0985('0x29')]['split'](',')[_0x0985('0x2b')](function(_0x166bdd){_0x1d9ee0['Tags'][_0x0985('0x2c')](_0x465d31[_0x166bdd]);});}delete _0x1d9ee0['TagIds'];}catch(_0x1236af){_0x18d1f3(_0x1236af);}_0x1be457(_0x1d9ee0);});}function updateFaxInteraction(_0x44957d,_0x22520c,_0x313bbe){return new BPromise(function(_0x11d644,_0x36b6dc){return getInteractionUsers(_0x44957d,_0x313bbe)['then'](function(_0x32adf3){return getInteractionTags(_0x32adf3,_0x22520c);})['then'](function(_0xfd282f){return getStateInteraction(_0xfd282f);})['then'](function(_0x410f1e){_0x11d644(_0x410f1e);})[_0x0985('0x2d')](function(_0x2f696d){_0x36b6dc(_0x2f696d);});});}function getStateInteraction(_0x216064){return new BPromise(function(_0x153efd){_0x216064['waiting']=0x0;_0x216064[_0x0985('0x2e')]=0x0;_0x216064[_0x0985('0x2f')]=0x0;_0x216064[_0x0985('0x30')]=0x0;_0x216064[_0x0985('0x31')]=0x0;if(!_0x216064[_0x0985('0x32')]&&!_0x216064[_0x0985('0x33')]){_0x216064['waiting']+=0x1;}if(!_0x216064[_0x0985('0x32')]&&_0x216064[_0x0985('0x33')]){_0x216064[_0x0985('0x2e')]+=0x1;if(_0x216064['waiting']){_0x216064['waiting']-=0x1;}}if(_0x216064['closed']&&_0x216064[_0x0985('0x33')]){_0x216064['answered']+=0x1;if(_0x216064['talking']){_0x216064[_0x0985('0x2e')]-=0x1;}}if(_0x216064['closed']&&!_0x216064['UserId']){_0x216064[_0x0985('0x30')]+=0x1;if(_0x216064['waiting']){_0x216064[_0x0985('0x34')]-=0x1;}}_0x216064['total']+=0x1;_0x153efd(_0x216064);});}exports[_0x0985('0x35')]=function(_0x5a5fe7,_0x1f1fc6){var _0x25d9ff={},_0x5ac60d={},_0xeabf43={'count':0x0,'rows':[]};var _0x5ef4a7=_[_0x0985('0x36')](db[_0x0985('0x37')][_0x0985('0x38')],function(_0x2cf246){return{'name':_0x2cf246[_0x0985('0x39')],'type':_0x2cf246[_0x0985('0x3a')][_0x0985('0x3b')]};});_0x5ac60d[_0x0985('0x3c')]=_[_0x0985('0x36')](_0x5ef4a7,_0x0985('0x26'));_0x5ac60d['query']=_[_0x0985('0x3d')](_0x5a5fe7['query']);_0x5ac60d[_0x0985('0x3e')]=_[_0x0985('0x3f')](_0x5ac60d[_0x0985('0x3c')],_0x5ac60d[_0x0985('0x40')]);_0x25d9ff[_0x0985('0x41')]=_[_0x0985('0x3f')](_0x5ac60d[_0x0985('0x3c')],qs['fields'](_0x5a5fe7['query'][_0x0985('0x42')]));_0x25d9ff[_0x0985('0x41')]=_0x25d9ff[_0x0985('0x41')][_0x0985('0x43')]?_0x25d9ff[_0x0985('0x41')]:_0x5ac60d[_0x0985('0x3c')];if(!_0x5a5fe7['query'][_0x0985('0x44')](_0x0985('0x45'))){_0x25d9ff[_0x0985('0x1b')]=qs[_0x0985('0x1b')](_0x5a5fe7[_0x0985('0x40')]['limit']);_0x25d9ff[_0x0985('0x1a')]=qs[_0x0985('0x1a')](_0x5a5fe7[_0x0985('0x40')]['offset']);}_0x25d9ff[_0x0985('0x46')]=qs[_0x0985('0x47')](_0x5a5fe7[_0x0985('0x40')][_0x0985('0x47')]);_0x25d9ff[_0x0985('0x48')]=qs[_0x0985('0x3e')](_[_0x0985('0x49')](_0x5a5fe7['query'],_0x5ac60d[_0x0985('0x3e')]),_0x5ef4a7);var _0x1801da=[];var _0x5cfef8=squel[_0x0985('0x4a')]()[_0x0985('0x4b')]('id')[_0x0985('0x4b')](_0x0985('0x26'))[_0x0985('0x4b')]('color')[_0x0985('0x4c')](_0x0985('0x4d'));var _0x152045=squel[_0x0985('0x4a')]()['field'](_0x0985('0x4e'))[_0x0985('0x4b')](_0x0985('0x4f'))[_0x0985('0x4b')]('ui.FaxInteractionId')[_0x0985('0x4c')](_0x0985('0x50'),'ui')['left_join']('users','u',_0x0985('0x51'));var _0x5a8cd7=squel['select']()['from'](_0x0985('0x52'),'i')[_0x0985('0x53')](_0x0985('0x54'),'c',_0x0985('0x55'))[_0x0985('0x53')]('users','o',_0x0985('0x56'))[_0x0985('0x53')]('fax_accounts','a',_0x0985('0x57'))[_0x0985('0x53')](_0x0985('0x58'),'me','me.FaxInteractionId\x20=\x20i.id')[_0x0985('0x53')](_0x0985('0x59'),'it','it.FaxInteractionId\x20=\x20i.id')[_0x0985('0x53')](_0x0985('0x4d'),'t',_0x0985('0x5a'));var _0x1a0197=squel[_0x0985('0x5b')]();var _0x5ec735=[];var _0x4b51a6=squel[_0x0985('0x5b')]();var _0xe015b8;if(_0x5a5fe7[_0x0985('0x40')][_0x0985('0x5c')]){_0xe015b8=as[_0x0985('0x5d')](_0x5a5fe7[_0x0985('0x40')][_0x0985('0x5c')]);var _0x53e2c3=_0xe015b8[_0x0985('0x5e')];for(var _0x33c473=0x0;_0x33c473<_0xe015b8[_0x0985('0x5f')]['length'];_0x33c473++){var _0x321c50=_0xe015b8[_0x0985('0x5f')][_0x33c473];var _0x2363e5='i';var _0x6d8572=_[_0x0985('0x60')](_0x5ef4a7,[_0x0985('0x26'),_0x321c50[_0x0985('0x4b')]]);if(!_0x6d8572){switch(_0x321c50[_0x0985('0x4b')]){case _0x0985('0x61'):if(_0x321c50[_0x0985('0x62')]==0x1){_0x5a8cd7['having']('`'+_0x321c50[_0x0985('0x4b')]+_0x0985('0x63'));}else{_0x5a8cd7[_0x0985('0x64')]('`'+_0x321c50['field']+'`\x20>\x200');}break;case _0x0985('0x65'):if(_0x321c50[_0x0985('0x66')]===_0x0985('0x67')){if(_0x321c50[_0x0985('0x62')][_0x0985('0x68')]('\x20')[_0x0985('0x43')]>0x1){_0x1a0197[_0x53e2c3](_0x0985('0x69'),qs[_0x0985('0x6a')](_0x321c50[_0x0985('0x62')]),null);}else{var _0x377663='%'+_0x321c50[_0x0985('0x62')]+'%';_0x1a0197[_0x53e2c3](_0x0985('0x6b'),_0x377663,_0x377663,_0x377663);}}else{_0x6d8572=_['find'](_0x5ef4a7,[_0x0985('0x26'),'ContactId']);_0x321c50['field']=_0x0985('0x6c');_0x50e6d1=as['buildExpression'](_0x2363e5,_0x6d8572[_0x0985('0x3a')],_0x321c50);_0x1a0197[_0x53e2c3](_0x50e6d1[_0x0985('0x6d')],_0x50e6d1[_0x0985('0x62')][_0x0985('0x6e')],_0x50e6d1['value'][_0x0985('0x18')]);}break;case _0x0985('0x6f'):var _0x2e8f2e=_0x321c50['value'][_0x0985('0x68')](',')['map'](function(_0x75575f){return Number(_0x75575f);});_0x2e8f2e[_0x0985('0x2b')](function(_0x4d0b55){_0x4b51a6['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x4d0b55+',%');});_0x5ec735=_[_0x0985('0x70')](_0x5ec735,_0x2e8f2e);break;case _0x0985('0x71'):if(_0x321c50['operator']===_0x0985('0x67')){_0x1a0197[_0x53e2c3](_0x0985('0x72'),'%'+_0x321c50[_0x0985('0x62')]+'%',null);}else{_0x6d8572=_[_0x0985('0x60')](_0x5ef4a7,[_0x0985('0x26'),_0x0985('0x33')]);_0x321c50[_0x0985('0x4b')]='UserId';_0x50e6d1=as[_0x0985('0x73')](_0x2363e5,_0x6d8572['type'],_0x321c50);_0x1a0197[_0x53e2c3](_0x50e6d1[_0x0985('0x6d')],_0x50e6d1[_0x0985('0x62')][_0x0985('0x6e')],_0x50e6d1[_0x0985('0x62')][_0x0985('0x18')]);}break;case _0x0985('0x74'):_0x50e6d1=as['buildExpression']('me',null,_0x321c50);_0x1a0197[_0x53e2c3](_0x50e6d1[_0x0985('0x6d')],_0x50e6d1['value'][_0x0985('0x6e')],_0x50e6d1[_0x0985('0x62')][_0x0985('0x18')]);break;}}else{var _0x50e6d1=as[_0x0985('0x73')](_0x2363e5,_0x6d8572['type'],_0x321c50);_0x1a0197[_0x53e2c3](_0x50e6d1[_0x0985('0x6d')],_0x50e6d1[_0x0985('0x62')][_0x0985('0x6e')],_0x50e6d1['value'][_0x0985('0x18')]);}}}else{var _0x9fa6bf=_(_0x5a5fe7[_0x0985('0x40')])['keys']()[_0x0985('0x36')](function(_0x438727){return _['some'](_0x5ef4a7,[_0x0985('0x26'),_0x438727])?_0x438727:undefined;})[_0x0985('0x75')]()[_0x0985('0x62')]();if(!_[_0x0985('0x76')](_0x9fa6bf)){_0x9fa6bf['forEach'](function(_0x17fc1a){if(_0x17fc1a===_0x0985('0x77')){_0x5a8cd7[_0x0985('0x48')](_0x0985('0x78'),[][_0x0985('0x79')](_0x5a5fe7[_0x0985('0x40')][_0x17fc1a]));}else if(_0x17fc1a===_0x0985('0x7a')){var _0x38e49b=JSON['parse'](_0x5a5fe7[_0x0985('0x40')][_0x17fc1a])[_0x0985('0x7b')];var _0x4ca8b4=JSON[_0x0985('0x7c')](_0x5a5fe7[_0x0985('0x40')][_0x17fc1a])[_0x0985('0x7d')];_0x5a8cd7['where'](_0x0985('0x7e'),_0x38e49b,_0x4ca8b4);}else{if(_0x5a5fe7[_0x0985('0x40')][_0x17fc1a]===_0x0985('0x7f')){_0x5a8cd7[_0x0985('0x48')]('i.'+_0x17fc1a+_0x0985('0x80'));}else{_0x5a8cd7['where']('i.'+_0x17fc1a+_0x0985('0x81'),_0x5a5fe7[_0x0985('0x40')][_0x17fc1a]);}}});}if(_0x5a5fe7['query'][_0x0985('0x82')]){if(_0x5a5fe7['query'][_0x0985('0x82')]==0x1){_0x5a8cd7[_0x0985('0x64')](_0x0985('0x83'));}else{_0x5a8cd7['having'](_0x0985('0x84'));}}if(_0x5a5fe7[_0x0985('0x40')][_0x0985('0x85')]){_0x5ec735=_[_0x0985('0x86')](_0x5a5fe7[_0x0985('0x40')]['tag'])?_0x5a5fe7[_0x0985('0x40')][_0x0985('0x85')]:new Array(_0x5a5fe7[_0x0985('0x40')]['tag']);_0x5ec735[_0x0985('0x2b')](function(_0x93078b){_0x4b51a6['or'](_0x0985('0x87'),'%,'+_0x93078b+',%');});}if(_0x5a5fe7['query']['filter']){var _0x1a7d4e=_0x5a5fe7[_0x0985('0x40')][_0x0985('0x88')]['replace']('\x5c','\x5c\x5c')[_0x0985('0x89')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x1a7d4e)){_0x1a0197['or'](_0x0985('0x8a'),_0x1a7d4e+'%')['or'](_0x0985('0x8b'),_0x1a7d4e+'%');}_0x1a0197['or'](_0x0985('0x8c'),_0x1a7d4e+'%');}}_0x5a8cd7['where'](_0x1a0197);_0x5a8cd7[_0x0985('0x8d')](_0x0985('0x8e'));var _0x401f0f={'type':db[_0x0985('0x8f')]['QueryTypes'][_0x0985('0x90')],'raw':!![]};var _0x2f303b=_0x5a8cd7[_0x0985('0x91')]();_0x2f303b[_0x0985('0x4b')](_0x0985('0x8e'));_0x2f303b[_0x0985('0x4b')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x0985('0x61'));if(_0x25d9ff[_0x0985('0x46')]){_0x25d9ff[_0x0985('0x46')][_0x0985('0x2b')](function(_0x425dcb){var _0x3d1c8a=_0x425dcb[0x0]==='contactName'?_0x425dcb[0x0]:'i.'+_0x425dcb[0x0];_0x5a8cd7[_0x0985('0x46')](_0x3d1c8a,_0x425dcb[0x1]===_0x0985('0x92')?![]:!![]);});}if(!_[_0x0985('0x76')](_0x5ec735)){_0x5a8cd7[_0x0985('0x64')](_0x4b51a6);_0x2f303b[_0x0985('0x48')](_0x0985('0x93'),_0x5ec735);}BPromise[_0x0985('0x94')]()[_0x0985('0x21')](function(){if(!_0xe015b8){if(_0x5a5fe7[_0x0985('0x40')][_0x0985('0x77')])return;_0x2f303b[_0x0985('0x48')](_0x0985('0x95'));_0x5a8cd7[_0x0985('0x48')]('i.FaxAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x5a5fe7['user'][_0x0985('0x96')]!==_0x0985('0x97'))return;return _0x5a5fe7['user'][_0x0985('0x98')]({'attributes':['id'],'raw':!![]})[_0x0985('0x21')](function(_0x1b2b94){if(_[_0x0985('0x76')](_0x1b2b94)){_0x2f303b[_0x0985('0x48')](_0x0985('0x99'));_0x5a8cd7['where']('i.FaxAccountId\x20IS\x20NULL');}else{_0x2f303b['where'](_0x0985('0x78'),_[_0x0985('0x36')](_0x1b2b94,'id'));_0x5a8cd7[_0x0985('0x48')](_0x0985('0x78'),_['map'](_0x1b2b94,'id'));}});})[_0x0985('0x21')](function(){if(_0x5a5fe7['user'][_0x0985('0x96')]==='agent'&&!_0xe015b8&&!_0x5a5fe7[_0x0985('0x40')]['FaxAccountId'])return[];return db[_0x0985('0x9a')][_0x0985('0x40')](_0x2f303b[_0x0985('0x9b')](),_0x401f0f);})[_0x0985('0x21')](function(_0x491be2){_0xeabf43[_0x0985('0x1c')]=_0x491be2[_0x0985('0x43')];if(_0xeabf43[_0x0985('0x1c')]===0x0)return[];return db['sequelize'][_0x0985('0x40')](_0x5cfef8[_0x0985('0x9b')](),_0x401f0f)[_0x0985('0x21')](function(_0x48c3bf){_0x1801da=_[_0x0985('0x9c')](_0x48c3bf,'id');_0x401f0f=_[_0x0985('0x9d')](_0x401f0f,{'model':db['FaxInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5a5fe7[_0x0985('0x40')][_0x0985('0x42')]){_0x25d9ff['attributes'][_0x0985('0x2b')](function(_0x56d8e3){_0x5a8cd7['field']('i.'+_0x56d8e3);});}else{_0x5a8cd7[_0x0985('0x4b')](_0x0985('0x9e'),_0x0985('0x61'));_0x5a8cd7[_0x0985('0x4b')](_0x0985('0x9f'),'Account.key');_0x5a8cd7[_0x0985('0x4b')]('a.mandatoryDisposition',_0x0985('0xa0'));_0x5a8cd7[_0x0985('0x4b')]('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',_0x0985('0xa1'));_0x5a8cd7['field']('i.*');_0x5a8cd7['field'](_0x0985('0xa2'),_0x0985('0xa3'));_0x5a8cd7[_0x0985('0x4b')]('c.lastName',_0x0985('0xa4'));_0x5a8cd7[_0x0985('0x4b')]('c.email',_0x0985('0xa5'));_0x5a8cd7[_0x0985('0x4b')](_0x0985('0xa6'),_0x0985('0xa7'));_0x5a8cd7[_0x0985('0x4b')]('c.mobile',_0x0985('0xa8'));_0x5a8cd7[_0x0985('0x4b')](_0x0985('0xa9'),'Contact.fax');_0x5a8cd7['field'](_0x0985('0xaa'),'Owner.fullname');_0x5a8cd7[_0x0985('0x4b')](_0x0985('0xab'),_0x0985('0xac'));_0x5a8cd7[_0x0985('0x4b')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x0985('0x29'));}if(_0x25d9ff['limit'])_0x5a8cd7['limit'](_0x25d9ff[_0x0985('0x1b')]);if(_0x25d9ff['offset'])_0x5a8cd7['offset'](_0x25d9ff[_0x0985('0x1a')]);return db[_0x0985('0x9a')]['query'](_0x5a8cd7['toString'](),_0x401f0f);})['then'](function(_0x588535){if(_0x588535[_0x0985('0x43')]>0x0)_0x152045[_0x0985('0x48')](_0x0985('0xad'),_[_0x0985('0x36')](_0x588535,'id'));return db[_0x0985('0x9a')][_0x0985('0x40')](_0x152045['toString'](),_0x401f0f)[_0x0985('0x21')](function(_0x1e257b){var _0x4c60fa=_[_0x0985('0xae')](_0x1e257b,_0x0985('0xaf'));var _0x5b6cf5=[];_0x588535[_0x0985('0x2b')](function(_0x12e333){_0x5b6cf5[_0x0985('0x2c')](updateFaxInteraction(_0x12e333,_0x1801da,_0x4c60fa));});return BPromise[_0x0985('0xb0')](_0x5b6cf5);});});})[_0x0985('0x21')](function(_0x281e9e){_0xeabf43[_0x0985('0xb1')]=_0x281e9e;return _0xeabf43;})['then'](respondWithFilteredResult(_0x1f1fc6,_0x25d9ff))[_0x0985('0x2d')](handleError(_0x1f1fc6,null));};exports['show']=function(_0x561718,_0x44d94c){var _0x5a34a0={'raw':![],'where':{'id':_0x561718[_0x0985('0xb2')]['id']}},_0x2efff6={};_0x2efff6[_0x0985('0x3c')]=_['keys'](db[_0x0985('0x37')]['rawAttributes']);_0x2efff6[_0x0985('0x40')]=_[_0x0985('0x3d')](_0x561718['query']);_0x2efff6['filters']=_['intersection'](_0x2efff6[_0x0985('0x3c')],_0x2efff6[_0x0985('0x40')]);_0x5a34a0[_0x0985('0x41')]=_[_0x0985('0x3f')](_0x2efff6[_0x0985('0x3c')],qs['fields'](_0x561718[_0x0985('0x40')][_0x0985('0x42')]));_0x5a34a0[_0x0985('0x41')]=_0x5a34a0['attributes'][_0x0985('0x43')]?_0x5a34a0[_0x0985('0x41')]:_0x2efff6[_0x0985('0x3c')];if(_0x561718[_0x0985('0x40')][_0x0985('0xb3')]){_0x5a34a0[_0x0985('0xb4')]=[{'all':!![]}];}_0x5a34a0=_[_0x0985('0x9d')]({},_0x5a34a0,_0x561718['options']);return db[_0x0985('0x37')]['find'](_0x5a34a0)[_0x0985('0x21')](handleEntityNotFound(_0x44d94c,null))[_0x0985('0x21')](respondWithResult(_0x44d94c,null))[_0x0985('0x2d')](handleError(_0x44d94c,null));};exports['create']=function(_0x1d6836,_0x3ee15e){return db[_0x0985('0x37')][_0x0985('0xb5')](_0x1d6836[_0x0985('0x74')],{})[_0x0985('0x21')](respondWithResult(_0x3ee15e,0xc9))[_0x0985('0x2d')](handleError(_0x3ee15e,null));};exports[_0x0985('0x20')]=function(_0xe61d4,_0xe4e826){if(_0xe61d4['body']['id']){delete _0xe61d4[_0x0985('0x74')]['id'];}return db[_0x0985('0x37')][_0x0985('0x60')]({'where':{'id':_0xe61d4[_0x0985('0xb2')]['id']}})[_0x0985('0x21')](handleEntityNotFound(_0xe4e826,null))['then'](saveUpdates(_0xe61d4[_0x0985('0x74')],null))[_0x0985('0x21')](respondWithResult(_0xe4e826,null))[_0x0985('0x2d')](handleError(_0xe4e826,null));};exports[_0x0985('0x22')]=function(_0x39805c,_0x55b766){return db[_0x0985('0x37')]['find']({'where':{'id':_0x39805c['params']['id']}})[_0x0985('0x21')](handleEntityNotFound(_0x55b766,null))[_0x0985('0x21')](removeEntity(_0x55b766,null))[_0x0985('0x2d')](handleError(_0x55b766,null));};exports['describe']=function(_0x54bc07,_0xe8f735){return db[_0x0985('0x37')]['describe']()[_0x0985('0x21')](respondWithResult(_0xe8f735,null))[_0x0985('0x2d')](handleError(_0xe8f735,null));};exports[_0x0985('0xb6')]=function(_0x381a56,_0x4df98a,_0x4c10d0){return db['FaxMessage']['find']({'where':{'id':_0x381a56[_0x0985('0xb2')]['id']}})[_0x0985('0x21')](handleEntityNotFound(_0x4df98a,null))[_0x0985('0x21')](function(_0x4e5f6d){if(_0x4e5f6d){return _0x4e5f6d[_0x0985('0xb6')](_0x381a56[_0x0985('0x74')][_0x0985('0xb7')],_['omit'](_0x381a56[_0x0985('0x74')],[_0x0985('0xb7'),'id'])||{});}})[_0x0985('0x21')](respondWithResult(_0x4df98a,null))[_0x0985('0x2d')](handleError(_0x4df98a,null));};exports[_0x0985('0xb8')]=function(_0x47bef4,_0x4b7d43,_0x1a893c){var _0x24a6b9={'raw':![],'where':{}};var _0x5b1cda={};var _0x6efaac={'count':0x0,'rows':[]};return db['FaxInteraction']['findOne']({'where':{'id':_0x47bef4[_0x0985('0xb2')]['id']}})[_0x0985('0x21')](handleEntityNotFound(_0x4b7d43,null))[_0x0985('0x21')](function(_0x3f2b10){if(_0x3f2b10){_0x5b1cda['model']=_[_0x0985('0x3d')](db[_0x0985('0xb9')][_0x0985('0x38')]);_0x5b1cda[_0x0985('0x40')]=_[_0x0985('0x3d')](_0x47bef4['query']);_0x5b1cda[_0x0985('0x3e')]=_[_0x0985('0x3f')](_0x5b1cda['model'],_0x5b1cda['query']);_0x24a6b9[_0x0985('0x41')]=_[_0x0985('0x3f')](_0x5b1cda['model'],qs[_0x0985('0x42')](_0x47bef4[_0x0985('0x40')][_0x0985('0x42')]));_0x24a6b9['attributes']=_0x24a6b9[_0x0985('0x41')][_0x0985('0x43')]?_0x24a6b9[_0x0985('0x41')]:_0x5b1cda[_0x0985('0x3c')];if(!_0x47bef4[_0x0985('0x40')][_0x0985('0x44')](_0x0985('0x45'))){_0x24a6b9['limit']=qs[_0x0985('0x1b')](_0x47bef4['query'][_0x0985('0x1b')]);_0x24a6b9[_0x0985('0x1a')]=qs[_0x0985('0x1a')](_0x47bef4['query'][_0x0985('0x1a')]);}_0x24a6b9[_0x0985('0x46')]=qs[_0x0985('0x47')](_0x47bef4[_0x0985('0x40')][_0x0985('0x47')]);_0x24a6b9[_0x0985('0x48')]=qs[_0x0985('0x3e')](_['pick'](_0x47bef4['query'],_0x5b1cda[_0x0985('0x3e')]));_0x24a6b9['where'][_0x0985('0xaf')]=_0x3f2b10['id'];if(_0x47bef4['query'][_0x0985('0x88')]){_0x24a6b9['where']=_['merge'](_0x24a6b9[_0x0985('0x48')],{'$or':_[_0x0985('0x36')](_0x24a6b9[_0x0985('0x41')],function(_0x595b0d){var _0x262f23={};_0x262f23[_0x595b0d]={'$like':'%'+_0x47bef4['query'][_0x0985('0x88')]+'%'};return _0x262f23;})});}if(_0x47bef4['query'][_0x0985('0x7b')]){var _0xf8c4dd=_0x47bef4[_0x0985('0x40')][_0x0985('0x7b')][_0x0985('0x68')](',');var _0x5421e7={};_0x5421e7[_0xf8c4dd[0x0]]={'$gte':moment(_0xf8c4dd[0x1])[_0x0985('0xba')]('YYYY-MM-DD\x20HH:mm:ss')};_0x24a6b9[_0x0985('0x48')]=_[_0x0985('0x9d')](_0x24a6b9['where'],_0x5421e7);}_0x24a6b9=_[_0x0985('0x9d')]({},_0x24a6b9,_0x47bef4[_0x0985('0xbb')]);return db['FaxMessage']['count']({'where':_0x24a6b9[_0x0985('0x48')]})[_0x0985('0x21')](function(_0x29244c){_0x6efaac[_0x0985('0x1c')]=_0x29244c;if(_0x47bef4[_0x0985('0x40')][_0x0985('0xb3')]){_0x24a6b9[_0x0985('0xb4')]=[{'all':!![]}];}return db[_0x0985('0xb9')][_0x0985('0xbc')](_0x24a6b9);})[_0x0985('0x21')](function(_0x341104){_0x6efaac['rows']=_0x341104;return _0x6efaac;});}})[_0x0985('0x21')](respondWithFilteredResult(_0x4b7d43,_0x24a6b9))[_0x0985('0x2d')](handleError(_0x4b7d43,null));};exports['addTags']=function(_0x5cfb2f,_0x317479,_0x4a1cd1){return db['FaxInteraction'][_0x0985('0x60')]({'where':{'id':_0x5cfb2f[_0x0985('0xb2')]['id']}})[_0x0985('0x21')](handleEntityNotFound(_0x317479,null))[_0x0985('0x21')](function(_0x1aa7a1){if(_0x1aa7a1){return _0x1aa7a1['setTags'](_0x5cfb2f[_0x0985('0x74')]['ids'],_[_0x0985('0xbd')](_0x5cfb2f[_0x0985('0x74')],['ids','id'])||{})[_0x0985('0xbe')](function(){return db[_0x0985('0x6f')][_0x0985('0xbc')]({'attributes':['id',_0x0985('0x26'),'color'],'where':{'id':_0x5cfb2f[_0x0985('0x74')][_0x0985('0xb7')]}});})['then'](function(_0x5e6f53){socket['emit']('faxInteractionTags:save',{'id':Number(_0x5cfb2f[_0x0985('0xb2')]['id']),'tags':_0x5e6f53||[]});return{'id':Number(_0x5cfb2f[_0x0985('0xb2')]['id']),'tags':_0x5e6f53||[]};});}})[_0x0985('0x21')](respondWithResult(_0x317479,null))[_0x0985('0x2d')](handleError(_0x317479,null));};exports[_0x0985('0xbf')]=function(_0x56a28b,_0x548b13,_0x388567){return db['FaxInteraction'][_0x0985('0x60')]({'where':{'id':_0x56a28b[_0x0985('0xb2')]['id']}})['then'](handleEntityNotFound(_0x548b13,null))[_0x0985('0x21')](function(_0x36ce7a){if(_0x36ce7a){return _0x36ce7a[_0x0985('0xbf')](_0x56a28b[_0x0985('0x40')][_0x0985('0xb7')]);}})[_0x0985('0x21')](respondWithStatusCode(_0x548b13,null))[_0x0985('0x2d')](handleError(_0x548b13,null));};exports[_0x0985('0xc0')]=function(_0x421c88,_0x4c6310){var _0xae52a3=moment()['unix']()[_0x0985('0x9b')]();var _0x32c3de=path[_0x0985('0xc1')](config['root'],_0x0985('0xc2'),_0x0985('0xc3'),_0x0985('0xc4'));var _0x550ff7=path[_0x0985('0xc1')](config[_0x0985('0xc5')],_0x0985('0xc2'),_0x0985('0xc3'),_0x0985('0xc6'));var _0x44861e=path['join'](_0x32c3de,_0xae52a3);var _0x35ab95=util['format'](_0x0985('0xc7'),_0x421c88[_0x0985('0xb2')]['id'],_0xae52a3);var _0x2c9331=path[_0x0985('0xc1')](_0x32c3de,_0x35ab95);var _0x124979=[];_0x124979[_0x0985('0x2c')]({'model':db[_0x0985('0xc8')],'as':_0x0985('0xc8'),'raw':!![]});var _0x29a8c9=[{'model':db[_0x0985('0xb9')],'as':'Messages','attributes':['id','body','createdAt'],'include':_0x124979}];return db['FaxInteraction']['find']({'where':{'id':_0x421c88[_0x0985('0xb2')]['id']},'include':_0x29a8c9})[_0x0985('0x21')](handleEntityNotFound(_0x4c6310,null))[_0x0985('0x21')](function(_0x5b7e64){if(_0x5b7e64&&_0x5b7e64[_0x0985('0xc9')]){var _0x1ed10e=_0x5b7e64[_0x0985('0xca')]({'plain':!![]});fs[_0x0985('0xcb')](_0x44861e);for(var _0x1bd227=0x0;_0x1bd227<_0x1ed10e['Messages'][_0x0985('0x43')];_0x1bd227++){var _0xe8e7e1=_0x1ed10e[_0x0985('0xc9')][_0x1bd227][_0x0985('0xc8')];if(_0xe8e7e1){var _0xd1042b=path[_0x0985('0xc1')](_0x550ff7,_0xe8e7e1[_0x0985('0xcc')]);if(fs['existsSync'](_0xd1042b)){fs[_0x0985('0xcd')](_0xd1042b)[_0x0985('0xce')](fs[_0x0985('0xcf')](path[_0x0985('0xc1')](_0x44861e,_0xe8e7e1[_0x0985('0xcc')])));}}}return BPromise['resolve']()[_0x0985('0x21')](function(){return new BPromise(function(_0x1eeb1c,_0x4e9109){zipdir(_0x44861e,{'saveTo':_0x2c9331},function(_0x196572,_0x4f8409){if(_0x196572)return _0x4e9109(_0x196572);return _0x1eeb1c(_0x4f8409);});})[_0x0985('0x21')](function(){return new BPromise(function(_0x3d33a2,_0x1b9bb7){rimraf(_0x44861e,function(_0x3dc178){if(_0x3dc178)_0x1b9bb7(_0x3dc178);return _0x3d33a2();});});})[_0x0985('0x21')](function(){return _0x4c6310[_0x0985('0xc0')](_0x2c9331,_0x35ab95,function(_0x480b58){if(_0x480b58){console['log'](_0x0985('0xd0'),_0x480b58);}else{fs['unlinkSync'](_0x2c9331);}});});});}else{return _0x4c6310[_0x0985('0x23')](0xc8);}})[_0x0985('0x2d')](handleError(_0x4c6310,null));};
\ No newline at end of file
index 691b4fa..e891db7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc921=['remove','getUsers','then','setDataValue','Users','map','findAll','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','FaxInteraction','setMaxListeners','update'];(function(_0x46401e,_0x2a345b){var _0x447cba=function(_0x54ea97){while(--_0x54ea97){_0x46401e['push'](_0x46401e['shift']());}};_0x447cba(++_0x2a345b);}(_0xc921,0xfa));var _0x1c92=function(_0x4147ff,_0x154530){_0x4147ff=_0x4147ff-0x0;var _0x1e71e6=_0xc921[_0x4147ff];return _0x1e71e6;};'use strict';var EventEmitter=require(_0x1c92('0x0'));var FaxInteraction=require(_0x1c92('0x1'))['db'][_0x1c92('0x2')];var FaxMessage=require(_0x1c92('0x1'))['db']['FaxMessage'];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x1c92('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x1c92('0x4'),'afterDestroy':_0x1c92('0x5')};function emitEvent(_0x57581f){return function(_0x20341a,_0x42fc38,_0x32032a){_0x20341a[_0x1c92('0x6')]({'attributes':['id'],'raw':!![]})[_0x1c92('0x7')](function(_0x4ea8eb){_0x20341a[_0x1c92('0x8')](_0x1c92('0x9'),_0x4ea8eb[_0x1c92('0xa')](function(_0x4b0bfc){return{'id':_0x4b0bfc['id']};}));return FaxMessage[_0x1c92('0xb')]({'where':{'FaxInteractionId':_0x20341a['id'],'direction':'in','read':![]},'raw':!![]});})[_0x1c92('0x7')](function(_0x354b3f){_0x20341a['setDataValue']('unreadMessages',_0x354b3f['length']);FaxInteractionEvents[_0x1c92('0xc')](_0x57581f+':'+_0x20341a['id'],_0x20341a);FaxInteractionEvents[_0x1c92('0xc')](_0x57581f,_0x20341a);_0x32032a(null);})[_0x1c92('0xd')](_0x32032a(null));};}for(var e in events){if(events[_0x1c92('0xe')](e)){var event=events[e];FaxInteraction[_0x1c92('0xf')](e,emitEvent(event));}}module[_0x1c92('0x10')]=FaxInteractionEvents;
\ No newline at end of file
+var _0xf04a=['update','remove','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','FaxMessage','setMaxListeners','save'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf04a,0xf2));var _0xaf04=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xf04a[_0x2c91e9];return _0x13f0ff;};'use strict';var EventEmitter=require(_0xaf04('0x0'));var FaxInteraction=require('../../mysqldb')['db']['FaxInteraction'];var FaxMessage=require(_0xaf04('0x1'))['db'][_0xaf04('0x2')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0xaf04('0x3')](0x0);var events={'afterCreate':_0xaf04('0x4'),'afterUpdate':_0xaf04('0x5'),'afterDestroy':_0xaf04('0x6')};function emitEvent(_0x3653b1){return function(_0x3a4051,_0x2d659d,_0x439b3c){_0x3a4051['getUsers']({'attributes':['id'],'raw':!![]})[_0xaf04('0x7')](function(_0x305f44){_0x3a4051[_0xaf04('0x8')](_0xaf04('0x9'),_0x305f44[_0xaf04('0xa')](function(_0x56badb){return{'id':_0x56badb['id']};}));return FaxMessage[_0xaf04('0xb')]({'where':{'FaxInteractionId':_0x3a4051['id'],'direction':'in','read':![]},'raw':!![]});})[_0xaf04('0x7')](function(_0x47d2bf){_0x3a4051['setDataValue'](_0xaf04('0xc'),_0x47d2bf[_0xaf04('0xd')]);FaxInteractionEvents[_0xaf04('0xe')](_0x3653b1+':'+_0x3a4051['id'],_0x3a4051);FaxInteractionEvents[_0xaf04('0xe')](_0x3653b1,_0x3a4051);_0x439b3c(null);})[_0xaf04('0xf')](_0x439b3c(null));};}for(var e in events){if(events[_0xaf04('0x10')](e)){var event=events[e];FaxInteraction[_0xaf04('0x11')](e,emitEvent(event));}}module[_0xaf04('0x12')]=FaxInteractionEvents;
\ No newline at end of file
index 38c5d67..e42de23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c51=['exports','FaxInteraction','changed','closedAt','lodash','../../config/logger','api','moment','bluebird','path','./faxInteraction.attributes'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x0c51,0x7d));var _0x10c5=function(_0x16c54e,_0x44112e){_0x16c54e=_0x16c54e-0x0;var _0x823bba=_0x0c51[_0x16c54e];return _0x823bba;};'use strict';var _=require(_0x10c5('0x0'));var util=require('util');var logger=require(_0x10c5('0x1'))(_0x10c5('0x2'));var moment=require(_0x10c5('0x3'));var BPromise=require(_0x10c5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x10c5('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x10c5('0x6'));module[_0x10c5('0x7')]=function(_0x2ec452,_0x3e2fb3){return _0x2ec452['define'](_0x10c5('0x8'),attributes,{'tableName':'fax_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x597d29,_0x35d203,_0x189a6e){if(_0x597d29[_0x10c5('0x9')]('closed')){_0x597d29[_0x10c5('0xa')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x189a6e(null,_0x597d29);}}});};
\ No newline at end of file
+var _0xd2a4=['lodash','api','moment','request-promise','../../config/environment','./faxInteraction.attributes','exports','define','FaxInteraction','fax_interactions','changed','closed','closedAt','format'];(function(_0x587bc7,_0x296ea5){var _0x3161ca=function(_0x3be2ba){while(--_0x3be2ba){_0x587bc7['push'](_0x587bc7['shift']());}};_0x3161ca(++_0x296ea5);}(_0xd2a4,0x142));var _0x4d2a=function(_0x53c10e,_0x3cf1ab){_0x53c10e=_0x53c10e-0x0;var _0x14bb57=_0xd2a4[_0x53c10e];return _0x14bb57;};'use strict';var _=require(_0x4d2a('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x4d2a('0x1'));var moment=require(_0x4d2a('0x2'));var BPromise=require('bluebird');var rp=require(_0x4d2a('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x4d2a('0x4'));var attributes=require(_0x4d2a('0x5'));module[_0x4d2a('0x6')]=function(_0x307ef4,_0x3f3676){return _0x307ef4[_0x4d2a('0x7')](_0x4d2a('0x8'),attributes,{'tableName':_0x4d2a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x425e11,_0x9ed399,_0xbb41d8){if(_0x425e11[_0x4d2a('0xa')](_0x4d2a('0xb'))){_0x425e11[_0x4d2a('0xc')]=moment()[_0x4d2a('0xd')]('YYYY-MM-DD\x20HH:mm:ss');}_0xbb41d8(null,_0x425e11);}}});};
\ No newline at end of file
index 5799f39..3acd6a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe934=['rpc','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','then','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','UpdateFaxInteraction','update','options','raw','where','AddTagsToFaxInteraction','FaxInteraction','ids','body','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0xf3bac,_0x1279e2){var _0x374875=function(_0x2a2fae){while(--_0x2a2fae){_0xf3bac['push'](_0xf3bac['shift']());}};_0x374875(++_0x1279e2);}(_0xe934,0x1cc));var _0x4e93=function(_0x5257b7,_0x4f42d6){_0x5257b7=_0x5257b7-0x0;var _0x5a8139=_0xe934[_0x5257b7];return _0x5a8139;};'use strict';var _=require(_0x4e93('0x0'));var util=require(_0x4e93('0x1'));var moment=require(_0x4e93('0x2'));var BPromise=require(_0x4e93('0x3'));var rs=require(_0x4e93('0x4'));var fs=require('fs');var Redis=require(_0x4e93('0x5'));var db=require(_0x4e93('0x6'))['db'];var utils=require(_0x4e93('0x7'));var logger=require('../../config/logger')(_0x4e93('0x8'));var config=require('../../config/environment');var jayson=require(_0x4e93('0x9'));var client=jayson[_0x4e93('0xa')][_0x4e93('0xb')]({'port':0x232a});config['redis']=_[_0x4e93('0xc')](config[_0x4e93('0xd')],{'host':_0x4e93('0xe'),'port':0x18eb});var socket=require(_0x4e93('0xf'))(new Redis(config[_0x4e93('0xd')]));require('./faxInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x37f808,_0x2bb623,_0x9a00a3){return new BPromise(function(_0x25efbf,_0x41261d){return client['request'](_0x37f808,_0x9a00a3)[_0x4e93('0x10')](function(_0x5316c1){logger[_0x4e93('0x11')](_0x4e93('0x12'),_0x2bb623,_0x4e93('0x13'));logger[_0x4e93('0x14')](_0x4e93('0x15'),_0x2bb623,_0x4e93('0x13'),JSON[_0x4e93('0x16')](_0x5316c1));if(_0x5316c1['error']){if(_0x5316c1['error'][_0x4e93('0x17')]===0x1f4){logger[_0x4e93('0x18')](_0x4e93('0x12'),_0x2bb623,_0x5316c1[_0x4e93('0x18')][_0x4e93('0x19')]);return _0x41261d(_0x5316c1['error'][_0x4e93('0x19')]);}logger[_0x4e93('0x18')](_0x4e93('0x12'),_0x2bb623,_0x5316c1['error'][_0x4e93('0x19')]);return _0x25efbf(_0x5316c1[_0x4e93('0x18')][_0x4e93('0x19')]);}else{logger[_0x4e93('0x11')]('FaxInteraction,\x20%s,\x20%s',_0x2bb623,_0x4e93('0x13'));_0x25efbf(_0x5316c1[_0x4e93('0x1a')][_0x4e93('0x19')]);}})[_0x4e93('0x1b')](function(_0x53e4af){logger[_0x4e93('0x18')]('FaxInteraction,\x20%s,\x20%s',_0x2bb623,_0x53e4af);_0x41261d(_0x53e4af);});});}exports[_0x4e93('0x1c')]=function(_0xe916e8){var _0x152d61=this;return new Promise(function(_0x272f47,_0x2e0406){return db['FaxInteraction'][_0x4e93('0x1d')](_0xe916e8['body'],{'raw':_0xe916e8[_0x4e93('0x1e')]?_0xe916e8[_0x4e93('0x1e')][_0x4e93('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xe916e8[_0x4e93('0x1e')]?_0xe916e8[_0x4e93('0x1e')][_0x4e93('0x20')]||null:null,'attributes':_0xe916e8[_0x4e93('0x1e')]?_0xe916e8[_0x4e93('0x1e')]['attributes']||null:null,'limit':_0xe916e8[_0x4e93('0x1e')]?_0xe916e8[_0x4e93('0x1e')]['limit']||null:null})['then'](function(_0xc08fa0){logger['info']('UpdateFaxInteraction',_0xe916e8);logger[_0x4e93('0x14')]('UpdateFaxInteraction',_0xe916e8,JSON[_0x4e93('0x16')](_0xc08fa0));_0x272f47(_0xc08fa0);})['catch'](function(_0x343b6a){logger[_0x4e93('0x18')](_0x4e93('0x1c'),_0x343b6a['message'],_0xe916e8);_0x2e0406(_0x152d61[_0x4e93('0x18')](0x1f4,_0x343b6a['message']));});});};exports[_0x4e93('0x21')]=function(_0x4da974){return new Promise(function(_0x3a7896,_0x55f387){return db[_0x4e93('0x22')]['find']({'where':_0x4da974[_0x4e93('0x1e')]?_0x4da974['options'][_0x4e93('0x20')]||null:null})[_0x4e93('0x10')](function(_0x36d5b0){if(_0x36d5b0){return _0x36d5b0['addTags'](_0x4da974['body'][_0x4e93('0x23')],_['omit'](_0x4da974[_0x4e93('0x24')],[_0x4e93('0x23'),'id'])||{});}})[_0x4e93('0x25')](function(_0x3418e3){logger[_0x4e93('0x11')](_0x4e93('0x26'),_0x4da974);logger['debug'](_0x4e93('0x26'),_0x4da974,JSON[_0x4e93('0x16')](_0x3418e3));_0x3a7896(_0x3418e3);})[_0x4e93('0x1b')](function(_0x5a84fd){logger['error']('AddTags',_0x5a84fd[_0x4e93('0x19')],_0x4da974);_0x55f387(_this['error'](0x1f4,_0x5a84fd[_0x4e93('0x19')]));});});};
\ No newline at end of file
+var _0xa97f=['request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','error','FaxInteraction,\x20%s,\x20%s','message','result','catch','UpdateFaxInteraction','update','options','raw','where','attributes','limit','stringify','AddTagsToFaxInteraction','FaxInteraction','find','addTags','body','ids','spread','AddTags','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','./faxInteraction.socket','register','request','then','info'];(function(_0x21b0ab,_0x2b163a){var _0x8aa14a=function(_0x3201d8){while(--_0x3201d8){_0x21b0ab['push'](_0x21b0ab['shift']());}};_0x8aa14a(++_0x2b163a);}(_0xa97f,0xc0));var _0xfa97=function(_0x5978eb,_0x19f3fc){_0x5978eb=_0x5978eb-0x0;var _0x381d60=_0xa97f[_0x5978eb];return _0x381d60;};'use strict';var _=require(_0xfa97('0x0'));var util=require(_0xfa97('0x1'));var moment=require('moment');var BPromise=require(_0xfa97('0x2'));var rs=require(_0xfa97('0x3'));var fs=require('fs');var Redis=require(_0xfa97('0x4'));var db=require(_0xfa97('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xfa97('0x6'))(_0xfa97('0x7'));var config=require('../../config/environment');var jayson=require(_0xfa97('0x8'));var client=jayson[_0xfa97('0x9')][_0xfa97('0xa')]({'port':0x232a});config[_0xfa97('0xb')]=_['defaults'](config[_0xfa97('0xb')],{'host':_0xfa97('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xfa97('0xb')]));require(_0xfa97('0xd'))[_0xfa97('0xe')](socket);function respondWithRpcPromise(_0x32246b,_0x284008,_0x135305){return new BPromise(function(_0x37d142,_0x36ee0d){return client[_0xfa97('0xf')](_0x32246b,_0x135305)[_0xfa97('0x10')](function(_0xc14fdc){logger[_0xfa97('0x11')]('FaxInteraction,\x20%s,\x20%s',_0x284008,_0xfa97('0x12'));logger[_0xfa97('0x13')](_0xfa97('0x14'),_0x284008,_0xfa97('0x12'),JSON['stringify'](_0xc14fdc));if(_0xc14fdc['error']){if(_0xc14fdc['error']['code']===0x1f4){logger[_0xfa97('0x15')](_0xfa97('0x16'),_0x284008,_0xc14fdc[_0xfa97('0x15')][_0xfa97('0x17')]);return _0x36ee0d(_0xc14fdc[_0xfa97('0x15')]['message']);}logger['error'](_0xfa97('0x16'),_0x284008,_0xc14fdc['error'][_0xfa97('0x17')]);return _0x37d142(_0xc14fdc[_0xfa97('0x15')][_0xfa97('0x17')]);}else{logger['info'](_0xfa97('0x16'),_0x284008,_0xfa97('0x12'));_0x37d142(_0xc14fdc[_0xfa97('0x18')]['message']);}})[_0xfa97('0x19')](function(_0x1e4951){logger['error'](_0xfa97('0x16'),_0x284008,_0x1e4951);_0x36ee0d(_0x1e4951);});});}exports[_0xfa97('0x1a')]=function(_0x17df54){var _0x186c32=this;return new Promise(function(_0xb70cc1,_0x4ac114){return db['FaxInteraction'][_0xfa97('0x1b')](_0x17df54['body'],{'raw':_0x17df54[_0xfa97('0x1c')]?_0x17df54[_0xfa97('0x1c')][_0xfa97('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x17df54['options']?_0x17df54[_0xfa97('0x1c')][_0xfa97('0x1e')]||null:null,'attributes':_0x17df54[_0xfa97('0x1c')]?_0x17df54['options'][_0xfa97('0x1f')]||null:null,'limit':_0x17df54[_0xfa97('0x1c')]?_0x17df54[_0xfa97('0x1c')][_0xfa97('0x20')]||null:null})[_0xfa97('0x10')](function(_0x4b94b6){logger['info'](_0xfa97('0x1a'),_0x17df54);logger[_0xfa97('0x13')](_0xfa97('0x1a'),_0x17df54,JSON[_0xfa97('0x21')](_0x4b94b6));_0xb70cc1(_0x4b94b6);})[_0xfa97('0x19')](function(_0x8ebbfd){logger[_0xfa97('0x15')](_0xfa97('0x1a'),_0x8ebbfd[_0xfa97('0x17')],_0x17df54);_0x4ac114(_0x186c32[_0xfa97('0x15')](0x1f4,_0x8ebbfd[_0xfa97('0x17')]));});});};exports[_0xfa97('0x22')]=function(_0x2f3e5a){return new Promise(function(_0x2eec9c,_0x10ac7f){return db[_0xfa97('0x23')][_0xfa97('0x24')]({'where':_0x2f3e5a[_0xfa97('0x1c')]?_0x2f3e5a[_0xfa97('0x1c')][_0xfa97('0x1e')]||null:null})[_0xfa97('0x10')](function(_0x55ae7d){if(_0x55ae7d){return _0x55ae7d[_0xfa97('0x25')](_0x2f3e5a[_0xfa97('0x26')][_0xfa97('0x27')],_['omit'](_0x2f3e5a[_0xfa97('0x26')],[_0xfa97('0x27'),'id'])||{});}})[_0xfa97('0x28')](function(_0x30c911){logger[_0xfa97('0x11')](_0xfa97('0x29'),_0x2f3e5a);logger[_0xfa97('0x13')](_0xfa97('0x29'),_0x2f3e5a,JSON['stringify'](_0x30c911));_0x2eec9c(_0x30c911);})['catch'](function(_0x11bfe2){logger['error'](_0xfa97('0x29'),_0x11bfe2['message'],_0x2f3e5a);_0x10ac7f(_this['error'](0x1f4,_0x11bfe2[_0xfa97('0x17')]));});});};
\ No newline at end of file
index bd3d031..5ab7130 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4678=['./faxInteraction.events','save','remove','faxInteraction:'];(function(_0x22868f,_0x450f48){var _0x97bc75=function(_0x447cb4){while(--_0x447cb4){_0x22868f['push'](_0x22868f['shift']());}};_0x97bc75(++_0x450f48);}(_0x4678,0x8c));var _0x8467=function(_0x3dc256,_0x18c8ca){_0x3dc256=_0x3dc256-0x0;var _0x3231ba=_0x4678[_0x3dc256];return _0x3231ba;};'use strict';var FaxInteractionEvents=require(_0x8467('0x0'));var events=[_0x8467('0x1'),_0x8467('0x2'),'update'];function createListener(_0x115b3c,_0x5533d5){return function(_0x4f0eca){_0x5533d5['emit'](_0x115b3c,_0x4f0eca);};}function removeListener(_0x1907ec,_0x875f86){return function(){FaxInteractionEvents['removeListener'](_0x1907ec,_0x875f86);};}exports['register']=function(_0x400153){for(var _0x75322c=0x0,_0xb39ed5=events['length'];_0x75322c<_0xb39ed5;_0x75322c++){var _0x7c7080=events[_0x75322c];var _0x21de39=createListener(_0x8467('0x3')+_0x7c7080,_0x400153);FaxInteractionEvents['on'](_0x7c7080,_0x21de39);}};
\ No newline at end of file
+var _0x4f10=['length','faxInteraction:','./faxInteraction.events','save','update','emit','removeListener','register'];(function(_0x6942e0,_0x131e6d){var _0xb86490=function(_0x2fd5d7){while(--_0x2fd5d7){_0x6942e0['push'](_0x6942e0['shift']());}};_0xb86490(++_0x131e6d);}(_0x4f10,0x82));var _0x04f1=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x4f10[_0x20a584];return _0x4b41a8;};'use strict';var FaxInteractionEvents=require(_0x04f1('0x0'));var events=[_0x04f1('0x1'),'remove',_0x04f1('0x2')];function createListener(_0x5029c6,_0x549fd3){return function(_0x123f98){_0x549fd3[_0x04f1('0x3')](_0x5029c6,_0x123f98);};}function removeListener(_0x1ba115,_0x118bde){return function(){FaxInteractionEvents[_0x04f1('0x4')](_0x1ba115,_0x118bde);};}exports[_0x04f1('0x5')]=function(_0x3d022e){for(var _0x539dee=0x0,_0x2b3d95=events[_0x04f1('0x6')];_0x539dee<_0x2b3d95;_0x539dee++){var _0x2dc6e8=events[_0x539dee];var _0x559029=createListener(_0x04f1('0x7')+_0x2dc6e8,_0x3d022e);FaxInteractionEvents['on'](_0x2dc6e8,_0x559029);}};
\ No newline at end of file
index 7ca8058..85589b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ea0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./faxInteraction.controller','isAuthenticated','get','/describe','describe','/:id','show','/:id/download','download','post','create','/:id/messages','addMessage','/:id/tags','tracked','fax','addTags','faxinteraction:update','delete','faxinteraction:destroy','destroy','exports','multer','path','connect-timeout'];(function(_0xd9e79e,_0x1306b2){var _0x5a3a40=function(_0xd54e01){while(--_0xd54e01){_0xd9e79e['push'](_0xd9e79e['shift']());}};_0x5a3a40(++_0x1306b2);}(_0x7ea0,0x1b0));var _0x07ea=function(_0x3c8d42,_0x5dc79b){_0x3c8d42=_0x3c8d42-0x0;var _0x129b74=_0x7ea0[_0x3c8d42];return _0x129b74;};'use strict';var multer=require(_0x07ea('0x0'));var util=require('util');var path=require(_0x07ea('0x1'));var timeout=require(_0x07ea('0x2'));var express=require('express');var router=express[_0x07ea('0x3')]();var fs_extra=require(_0x07ea('0x4'));var auth=require(_0x07ea('0x5'));var interaction=require(_0x07ea('0x6'));var config=require('../../config/environment');var controller=require(_0x07ea('0x7'));router['get']('/',auth[_0x07ea('0x8')](),controller['index']);router[_0x07ea('0x9')](_0x07ea('0xa'),auth[_0x07ea('0x8')](),controller[_0x07ea('0xb')]);router['get'](_0x07ea('0xc'),auth[_0x07ea('0x8')](),controller[_0x07ea('0xd')]);router['get']('/:id/messages',auth[_0x07ea('0x8')](),controller['getMessages']);router[_0x07ea('0x9')](_0x07ea('0xe'),auth[_0x07ea('0x8')](),controller[_0x07ea('0xf')]);router[_0x07ea('0x10')]('/',auth[_0x07ea('0x8')](),controller[_0x07ea('0x11')]);router['post'](_0x07ea('0x12'),auth[_0x07ea('0x8')](),controller[_0x07ea('0x13')]);router['post'](_0x07ea('0x14'),auth['isAuthenticated'](),interaction[_0x07ea('0x15')](_0x07ea('0x16'),'faxinteraction:addtags'),controller[_0x07ea('0x17')]);router['put']('/:id',auth['isAuthenticated'](),interaction[_0x07ea('0x15')](_0x07ea('0x16'),_0x07ea('0x18')),controller['update']);router[_0x07ea('0x19')](_0x07ea('0xc'),auth[_0x07ea('0x8')](),interaction[_0x07ea('0x15')](_0x07ea('0x16'),_0x07ea('0x1a')),controller[_0x07ea('0x1b')]);router[_0x07ea('0x19')](_0x07ea('0x14'),auth['isAuthenticated'](),controller['removeTags']);module[_0x07ea('0x1c')]=router;
\ No newline at end of file
+var _0xdb57=['/describe','/:id','/:id/download','download','create','post','/:id/messages','addMessage','/:id/tags','tracked','fax','faxinteraction:addtags','addTags','put','faxinteraction:update','update','faxinteraction:destroy','delete','removeTags','exports','util','connect-timeout','express','../../config/environment','./faxInteraction.controller','get','isAuthenticated','index'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xdb57,0x148));var _0x7db5=function(_0x41f1e2,_0x221c3a){_0x41f1e2=_0x41f1e2-0x0;var _0x1e4ead=_0xdb57[_0x41f1e2];return _0x1e4ead;};'use strict';var multer=require('multer');var util=require(_0x7db5('0x0'));var path=require('path');var timeout=require(_0x7db5('0x1'));var express=require(_0x7db5('0x2'));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(_0x7db5('0x3'));var controller=require(_0x7db5('0x4'));router[_0x7db5('0x5')]('/',auth[_0x7db5('0x6')](),controller[_0x7db5('0x7')]);router[_0x7db5('0x5')](_0x7db5('0x8'),auth[_0x7db5('0x6')](),controller['describe']);router['get'](_0x7db5('0x9'),auth[_0x7db5('0x6')](),controller['show']);router['get']('/:id/messages',auth[_0x7db5('0x6')](),controller['getMessages']);router['get'](_0x7db5('0xa'),auth[_0x7db5('0x6')](),controller[_0x7db5('0xb')]);router['post']('/',auth[_0x7db5('0x6')](),controller[_0x7db5('0xc')]);router[_0x7db5('0xd')](_0x7db5('0xe'),auth['isAuthenticated'](),controller[_0x7db5('0xf')]);router['post'](_0x7db5('0x10'),auth[_0x7db5('0x6')](),interaction[_0x7db5('0x11')](_0x7db5('0x12'),_0x7db5('0x13')),controller[_0x7db5('0x14')]);router[_0x7db5('0x15')](_0x7db5('0x9'),auth[_0x7db5('0x6')](),interaction[_0x7db5('0x11')](_0x7db5('0x12'),_0x7db5('0x16')),controller[_0x7db5('0x17')]);router['delete'](_0x7db5('0x9'),auth[_0x7db5('0x6')](),interaction[_0x7db5('0x11')](_0x7db5('0x12'),_0x7db5('0x18')),controller['destroy']);router[_0x7db5('0x19')](_0x7db5('0x10'),auth[_0x7db5('0x6')](),controller[_0x7db5('0x1a')]);module[_0x7db5('0x1b')]=router;
\ No newline at end of file
index 8eb5382..c80314a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d0e=['ENUM','out','sequelize','exports','TEXT','medium','BOOLEAN'];(function(_0x445555,_0x5a562e){var _0x48baf5=function(_0x4fcd33){while(--_0x4fcd33){_0x445555['push'](_0x445555['shift']());}};_0x48baf5(++_0x5a562e);}(_0x8d0e,0x1d7));var _0xe8d0=function(_0x70006,_0x4b20f8){_0x70006=_0x70006-0x0;var _0x169fe8=_0x8d0e[_0x70006];return _0x169fe8;};'use strict';var Sequelize=require(_0xe8d0('0x0'));module[_0xe8d0('0x1')]={'body':{'type':Sequelize[_0xe8d0('0x2')](_0xe8d0('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xe8d0('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xe8d0('0x5')]('in',_0xe8d0('0x6')),'defaultValue':_0xe8d0('0x6'),'allowNull':![]},'failMessage':{'type':Sequelize[_0xe8d0('0x2')],'defaultValue':null},'readAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
+var _0xf041=['medium','BOOLEAN','ENUM','out','DATE','TEXT'];(function(_0x4845c6,_0x147188){var _0x508c44=function(_0x2b5fc5){while(--_0x2b5fc5){_0x4845c6['push'](_0x4845c6['shift']());}};_0x508c44(++_0x147188);}(_0xf041,0x15b));var _0x1f04=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xf041[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize[_0x1f04('0x0')](_0x1f04('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0x1f04('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x1f04('0x3')]('in','out'),'defaultValue':_0x1f04('0x4'),'allowNull':![]},'failMessage':{'type':Sequelize['TEXT'],'defaultValue':null},'readAt':{'type':Sequelize[_0x1f04('0x5')]}};
\ No newline at end of file
index 75fd7cb..8676723 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7089=['includeAll','include','findAll','show','params','length','find','body','destroy','describe','fax-interactions','fax','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','FaxInteraction','isNil','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','contact','User','fullname','internal','channel','event','EventManager','acceptmessage','FaxInteractionId','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','email','interface','SIP/%s','rejectmessage','create','CmContact','findOne','Attachment','AttachmentId','SendFax','/var/opt/motion2/server/files/attachments/%s','basename','download','join','server','files','attachments','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','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','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','register','jayson/promise','client','http','request','then','info','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxMessage,\x20%s,\x20%s','message','request\x20sent','result','catch','status','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','sendStatus','stack','name','send','index','map','rawAttributes','type','key','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','FaxMessage'];(function(_0x251e1b,_0x4033b3){var _0x542354=function(_0x8f6fd8){while(--_0x8f6fd8){_0x251e1b['push'](_0x251e1b['shift']());}};_0x542354(++_0x4033b3);}(_0x7089,0x1ea));var _0x9708=function(_0x92e63,_0x5a8ff8){_0x92e63=_0x92e63-0x0;var _0x3a5666=_0x7089[_0x92e63];return _0x3a5666;};'use strict';var emlformat=require(_0x9708('0x0'));var rimraf=require(_0x9708('0x1'));var zipdir=require(_0x9708('0x2'));var jsonpatch=require(_0x9708('0x3'));var rp=require('request-promise');var moment=require(_0x9708('0x4'));var BPromise=require(_0x9708('0x5'));var Mustache=require(_0x9708('0x6'));var util=require(_0x9708('0x7'));var path=require('path');var sox=require(_0x9708('0x8'));var csv=require(_0x9708('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9708('0xa'));var _=require(_0x9708('0xb'));var squel=require(_0x9708('0xc'));var crypto=require(_0x9708('0xd'));var jsforce=require(_0x9708('0xe'));var deskjs=require(_0x9708('0xf'));var toCsv=require(_0x9708('0x9'));var querystring=require(_0x9708('0x10'));var Papa=require(_0x9708('0x11'));var Redis=require('ioredis');var authService=require(_0x9708('0x12'));var qs=require(_0x9708('0x13'));var as=require(_0x9708('0x14'));var hardwareService=require(_0x9708('0x15'));var logger=require(_0x9708('0x16'))('api');var utils=require(_0x9708('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x9708('0x18'));var db=require(_0x9708('0x19'))['db'];config[_0x9708('0x1a')]=_[_0x9708('0x1b')](config[_0x9708('0x1a')],{'host':_0x9708('0x1c'),'port':0x18eb});var socket=require(_0x9708('0x1d'))(new Redis(config[_0x9708('0x1a')]));require(_0x9708('0x1e'))[_0x9708('0x1f')](socket);var jayson=require(_0x9708('0x20'));var client=jayson[_0x9708('0x21')][_0x9708('0x22')]({'port':0x232c});var client9002=jayson['client'][_0x9708('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x3d6529,_0x3040d4,_0x1e673c,_0x16f3c5){return new BPromise(function(_0x744781,_0x479232){var _0x16353f=_0x16f3c5||client;return _0x16353f[_0x9708('0x23')](_0x3d6529,_0x1e673c)[_0x9708('0x24')](function(_0x1d3dbd){logger[_0x9708('0x25')]('FaxMessage,\x20%s,\x20%s',_0x3040d4,'request\x20sent');logger[_0x9708('0x26')](_0x9708('0x27'),_0x3040d4,'request\x20sent',JSON[_0x9708('0x28')](_0x1d3dbd));if(_0x1d3dbd[_0x9708('0x29')]){if(_0x1d3dbd[_0x9708('0x29')][_0x9708('0x2a')]===0x1f4){logger[_0x9708('0x29')](_0x9708('0x2b'),_0x3040d4,_0x1d3dbd[_0x9708('0x29')][_0x9708('0x2c')]);return _0x479232(_0x1d3dbd[_0x9708('0x29')]['message']);}logger['error'](_0x9708('0x2b'),_0x3040d4,_0x1d3dbd[_0x9708('0x29')][_0x9708('0x2c')]);return _0x744781(_0x1d3dbd[_0x9708('0x29')][_0x9708('0x2c')]);}else{logger[_0x9708('0x25')](_0x9708('0x2b'),_0x3040d4,_0x9708('0x2d'));_0x744781(_0x1d3dbd[_0x9708('0x2e')]['message']);}})[_0x9708('0x2f')](function(_0xa162d9){logger['error']('FaxMessage,\x20%s,\x20%s',_0x3040d4,_0xa162d9);_0x479232(_0xa162d9);});});}function respondWithStatusCode(_0x3b3cb6,_0x5da76a){_0x5da76a=_0x5da76a||0xcc;return function(_0xbfe1f6){if(_0xbfe1f6){return _0x3b3cb6['sendStatus'](_0x5da76a);}return _0x3b3cb6['status'](_0x5da76a)['end']();};}function respondWithResult(_0x4baa48,_0x251c17){_0x251c17=_0x251c17||0xc8;return function(_0x1f208c){if(_0x1f208c){return _0x4baa48[_0x9708('0x30')](_0x251c17)[_0x9708('0x31')](_0x1f208c);}};}function respondWithFilteredResult(_0xfc5d48,_0x4d2ffb){return function(_0x31c736){if(_0x31c736){var _0x57b7ba=typeof _0x4d2ffb['offset']==='undefined'&&typeof _0x4d2ffb[_0x9708('0x32')]===_0x9708('0x33');var _0x6d31a9=_0x31c736[_0x9708('0x34')];var _0x29cb4b=_0x57b7ba?0x0:_0x4d2ffb[_0x9708('0x35')];var _0x2dede2=_0x57b7ba?_0x31c736['count']:_0x4d2ffb[_0x9708('0x35')]+_0x4d2ffb[_0x9708('0x32')];var _0x5d1142;if(_0x2dede2>=_0x6d31a9){_0x2dede2=_0x6d31a9;_0x5d1142=0xc8;}else{_0x5d1142=0xce;}_0xfc5d48['status'](_0x5d1142);return _0xfc5d48[_0x9708('0x36')](_0x9708('0x37'),_0x29cb4b+'-'+_0x2dede2+'/'+_0x6d31a9)[_0x9708('0x31')](_0x31c736);}return null;};}function patchUpdates(_0x3c0066){return function(_0x3b03b9){try{jsonpatch[_0x9708('0x38')](_0x3b03b9,_0x3c0066,!![]);}catch(_0x8c40d6){return BPromise[_0x9708('0x39')](_0x8c40d6);}return _0x3b03b9[_0x9708('0x3a')]();};}function saveUpdates(_0x2a1f85,_0x55866a){return function(_0x24fdbf){if(_0x24fdbf){return _0x24fdbf[_0x9708('0x3b')](_0x2a1f85)['then'](function(_0x285531){return _0x285531;});}return null;};}function removeEntity(_0x251caf,_0x2d3b3b){return function(_0x49818b){if(_0x49818b){return _0x49818b['destroy']()[_0x9708('0x24')](function(){_0x251caf[_0x9708('0x30')](0xcc)['end']();});}};}function handleEntityNotFound(_0x6c7ea4,_0x16dc3e){return function(_0x5cfb07){if(!_0x5cfb07){_0x6c7ea4[_0x9708('0x3c')](0x194);}return _0x5cfb07;};}function handleError(_0x1cf330,_0x536278){_0x536278=_0x536278||0x1f4;return function(_0x2fae55){logger['error'](_0x2fae55[_0x9708('0x3d')]);if(_0x2fae55[_0x9708('0x3e')]){delete _0x2fae55[_0x9708('0x3e')];}_0x1cf330[_0x9708('0x30')](_0x536278)[_0x9708('0x3f')](_0x2fae55);};}exports[_0x9708('0x40')]=function(_0x1a5085,_0x1bffa1){var _0x1f53d9={},_0x31f3fd={},_0x5186e9={'count':0x0,'rows':[]};var _0x587c27=_[_0x9708('0x41')](db['FaxMessage'][_0x9708('0x42')],function(_0x4c4f0e){return{'name':_0x4c4f0e['fieldName'],'type':_0x4c4f0e[_0x9708('0x43')][_0x9708('0x44')]};});_0x31f3fd[_0x9708('0x45')]=_[_0x9708('0x41')](_0x587c27,_0x9708('0x3e'));_0x31f3fd['query']=_[_0x9708('0x46')](_0x1a5085[_0x9708('0x47')]);_0x31f3fd[_0x9708('0x48')]=_[_0x9708('0x49')](_0x31f3fd[_0x9708('0x45')],_0x31f3fd[_0x9708('0x47')]);_0x1f53d9['attributes']=_[_0x9708('0x49')](_0x31f3fd[_0x9708('0x45')],qs['fields'](_0x1a5085[_0x9708('0x47')][_0x9708('0x4a')]));_0x1f53d9['attributes']=_0x1f53d9[_0x9708('0x4b')]['length']?_0x1f53d9[_0x9708('0x4b')]:_0x31f3fd[_0x9708('0x45')];if(!_0x1a5085['query'][_0x9708('0x4c')]('nolimit')){_0x1f53d9[_0x9708('0x32')]=qs[_0x9708('0x32')](_0x1a5085['query'][_0x9708('0x32')]);_0x1f53d9[_0x9708('0x35')]=qs[_0x9708('0x35')](_0x1a5085['query']['offset']);}_0x1f53d9[_0x9708('0x4d')]=qs[_0x9708('0x4e')](_0x1a5085[_0x9708('0x47')][_0x9708('0x4e')]);_0x1f53d9[_0x9708('0x4f')]=qs[_0x9708('0x48')](_[_0x9708('0x50')](_0x1a5085[_0x9708('0x47')],_0x31f3fd[_0x9708('0x48')]),_0x587c27);if(_0x1a5085[_0x9708('0x47')][_0x9708('0x51')]){_0x1f53d9['where']=_[_0x9708('0x52')](_0x1f53d9[_0x9708('0x4f')],{'$or':_[_0x9708('0x41')](_0x587c27,function(_0x1f4d4f){if(_0x1f4d4f[_0x9708('0x43')]!==_0x9708('0x53')){var _0x1e6731={};_0x1e6731[_0x1f4d4f[_0x9708('0x3e')]]={'$like':'%'+_0x1a5085[_0x9708('0x47')][_0x9708('0x51')]+'%'};return _0x1e6731;}})});}_0x1f53d9=_[_0x9708('0x52')]({},_0x1f53d9,_0x1a5085[_0x9708('0x54')]);var _0x234225={'where':_0x1f53d9['where']};return db[_0x9708('0x55')]['count'](_0x234225)[_0x9708('0x24')](function(_0x44d59f){_0x5186e9[_0x9708('0x34')]=_0x44d59f;if(_0x1a5085[_0x9708('0x47')][_0x9708('0x56')]){_0x1f53d9[_0x9708('0x57')]=[{'all':!![]}];}return db[_0x9708('0x55')][_0x9708('0x58')](_0x1f53d9);})[_0x9708('0x24')](function(_0x508b60){_0x5186e9['rows']=_0x508b60;return _0x5186e9;})[_0x9708('0x24')](respondWithFilteredResult(_0x1bffa1,_0x1f53d9))[_0x9708('0x2f')](handleError(_0x1bffa1,null));};exports[_0x9708('0x59')]=function(_0x382e92,_0x1ebf01){var _0x46d4f9={'raw':!![],'where':{'id':_0x382e92[_0x9708('0x5a')]['id']}},_0x4c48b3={};_0x4c48b3[_0x9708('0x45')]=_[_0x9708('0x46')](db['FaxMessage'][_0x9708('0x42')]);_0x4c48b3['query']=_['keys'](_0x382e92[_0x9708('0x47')]);_0x4c48b3[_0x9708('0x48')]=_[_0x9708('0x49')](_0x4c48b3[_0x9708('0x45')],_0x4c48b3[_0x9708('0x47')]);_0x46d4f9[_0x9708('0x4b')]=_[_0x9708('0x49')](_0x4c48b3[_0x9708('0x45')],qs['fields'](_0x382e92['query']['fields']));_0x46d4f9[_0x9708('0x4b')]=_0x46d4f9[_0x9708('0x4b')][_0x9708('0x5b')]?_0x46d4f9[_0x9708('0x4b')]:_0x4c48b3[_0x9708('0x45')];if(_0x382e92['query'][_0x9708('0x56')]){_0x46d4f9[_0x9708('0x57')]=[{'all':!![]}];}_0x46d4f9=_['merge']({},_0x46d4f9,_0x382e92[_0x9708('0x54')]);return db[_0x9708('0x55')][_0x9708('0x5c')](_0x46d4f9)[_0x9708('0x24')](handleEntityNotFound(_0x1ebf01,null))[_0x9708('0x24')](respondWithResult(_0x1ebf01,null))['catch'](handleError(_0x1ebf01,null));};exports[_0x9708('0x3b')]=function(_0x862f71,_0x203486){if(_0x862f71[_0x9708('0x5d')]['id']){delete _0x862f71['body']['id'];}return db[_0x9708('0x55')][_0x9708('0x5c')]({'where':{'id':_0x862f71['params']['id']}})[_0x9708('0x24')](handleEntityNotFound(_0x203486,null))[_0x9708('0x24')](saveUpdates(_0x862f71[_0x9708('0x5d')],null))[_0x9708('0x24')](respondWithResult(_0x203486,null))[_0x9708('0x2f')](handleError(_0x203486,null));};exports[_0x9708('0x5e')]=function(_0x41e9b6,_0x3dcf03){return db[_0x9708('0x55')][_0x9708('0x5c')]({'where':{'id':_0x41e9b6[_0x9708('0x5a')]['id']}})[_0x9708('0x24')](handleEntityNotFound(_0x3dcf03,null))['then'](removeEntity(_0x3dcf03,null))[_0x9708('0x2f')](handleError(_0x3dcf03,null));};exports[_0x9708('0x5f')]=function(_0x1a9ac0,_0x648dcc){return db[_0x9708('0x55')][_0x9708('0x5f')]()[_0x9708('0x24')](respondWithResult(_0x648dcc,null))[_0x9708('0x2f')](handleError(_0x648dcc,null));};var interaction_log=require(_0x9708('0x16'))(_0x9708('0x60'));exports['accept']=function(_0x229b54,_0x32ee16,_0x33ab7f){var _0x180c1c={'agent':{},'channel':_0x9708('0x61')};if(_0x229b54[_0x9708('0x5d')]['id']){delete _0x229b54['body']['id'];}_0x229b54[_0x9708('0x5d')]['read']=!![];_0x229b54['body'][_0x9708('0x62')]=moment()[_0x9708('0x63')](_0x9708('0x64'));_0x229b54[_0x9708('0x5d')][_0x9708('0x65')]=_0x229b54[_0x9708('0x5d')][_0x9708('0x65')]||_0x229b54[_0x9708('0x66')]['id'];_0x180c1c[_0x9708('0x67')]['id']=_0x229b54[_0x9708('0x5d')][_0x9708('0x65')];return db[_0x9708('0x55')]['find']({'where':{'id':_0x229b54['params']['id'],'UserId':null}})[_0x9708('0x24')](handleEntityNotFound(_0x32ee16,null))['then'](saveUpdates(_0x229b54[_0x9708('0x5d')],null))[_0x9708('0x24')](function(_0x41a11f){if(_0x41a11f){_0x180c1c[_0x9708('0x2c')]=_0x41a11f[_0x9708('0x68')]({'plain':!![]});return db[_0x9708('0x69')]['find']({'where':{'id':_0x41a11f['FaxInteractionId']}});}return null;})[_0x9708('0x24')](handleEntityNotFound(_0x32ee16,null))[_0x9708('0x24')](function(_0xe81796){if(_0xe81796){return _0xe81796[_0x9708('0x3b')]({'UserId':_0x229b54['body'][_0x9708('0x65')],'read1stAt':_[_0x9708('0x6a')](_0xe81796['read1stAt'])?moment()[_0x9708('0x63')](_0x9708('0x64')):undefined});}return null;})[_0x9708('0x24')](function(_0xad54f3){if(_0xad54f3){_0x180c1c[_0x9708('0x6b')]=_0xad54f3[_0x9708('0x68')]({'plain':!![]});interaction_log[_0x9708('0x25')](_0x9708('0x6c'),_0x229b54['user']['id'],_0x229b54[_0x9708('0x66')][_0x9708('0x3e')],_0x229b54['user'][_0x9708('0x6d')],_0x180c1c['interaction']['id'],_0x229b54['body']?JSON[_0x9708('0x28')](_0x229b54['body']):_0x9708('0x6e'));return respondWithRpcPromise(_0x9708('0x6f'),'acceptMessage',_0x180c1c);}return null;})[_0x9708('0x24')](function(_0x30ca85){var _0xfb1bdd=_0x9708('0x70')+_0x30ca85[_0x9708('0x2c')][_0x9708('0x71')];return db[_0x9708('0x72')][_0x9708('0x47')](_0xfb1bdd,{'type':db[_0x9708('0x73')][_0x9708('0x74')]['SELECT'],'raw':!![]})[_0x9708('0x24')](function(_0x1214dc){return _0x1214dc;});})[_0x9708('0x24')](function(_0x4b1c7d){if(_0x4b1c7d){_0x180c1c[_0x9708('0x2c')][_0x9708('0x75')]=_0x4b1c7d[0x0];if(!_0x229b54[_0x9708('0x5d')]['UserId'])return;return db[_0x9708('0x76')][_0x9708('0x5c')]({'where':{'id':_0x229b54[_0x9708('0x5d')][_0x9708('0x65')],'role':_0x9708('0x67')},'attributes':['id',_0x9708('0x3e'),_0x9708('0x77'),'email',_0x9708('0x78')],'raw':!![]});}return null;})[_0x9708('0x24')](function(_0x3e5c0a){if(!_0x3e5c0a)return null;_0x180c1c['message'][_0x9708('0x67')]=_0x3e5c0a;return _0x180c1c;})[_0x9708('0x24')](function(_0x31883f){if(_0x31883f){if(_0x229b54[_0x9708('0x5d')]['manual']){_0x180c1c['message']['interface']=util[_0x9708('0x63')]('SIP/%s',_0x229b54[_0x9708('0x66')][_0x9708('0x3e')]);_0x180c1c[_0x9708('0x2c')][_0x9708('0x79')]=_0x180c1c[_0x9708('0x79')];_0x180c1c[_0x9708('0x2c')]['motionChannel']=_0x180c1c['channel'];_0x180c1c[_0x9708('0x2c')][_0x9708('0x7a')]='accept';return respondWithRpcPromise(_0x9708('0x7b'),_0x9708('0x7b'),{'event':_0x9708('0x7c'),'message':_0x180c1c['message']},client9002)[_0x9708('0x24')](function(){return _0x180c1c;});}return _0x180c1c;}return null;})['then'](respondWithResult(_0x32ee16,null))[_0x9708('0x2f')](handleError(_0x32ee16,null));};var interaction_log=require(_0x9708('0x16'))('fax-interactions');exports[_0x9708('0x39')]=function(_0x2e2d36,_0x15acb0,_0x4733bd){var _0x366125={'agent':{},'channel':_0x9708('0x61')};if(_0x2e2d36['body']['id']){delete _0x2e2d36[_0x9708('0x5d')]['id'];}_0x2e2d36[_0x9708('0x5d')][_0x9708('0x65')]=_0x2e2d36[_0x9708('0x5d')][_0x9708('0x65')]||_0x2e2d36[_0x9708('0x66')]['id'];_0x366125['agent']['id']=_0x2e2d36[_0x9708('0x5d')][_0x9708('0x65')];return db['FaxMessage']['find']({'where':{'id':_0x2e2d36[_0x9708('0x5a')]['id'],'UserId':null}})[_0x9708('0x24')](handleEntityNotFound(_0x15acb0,null))['then'](function(_0x46663b){if(_0x46663b){_0x366125[_0x9708('0x2c')]=_0x46663b[_0x9708('0x68')]({'plain':!![]});return db[_0x9708('0x69')][_0x9708('0x5c')]({'where':{'id':_0x46663b[_0x9708('0x7d')]}});}return null;})[_0x9708('0x24')](handleEntityNotFound(_0x15acb0,null))[_0x9708('0x24')](function(_0x68a526){if(_0x68a526){_0x366125[_0x9708('0x6b')]=_0x68a526[_0x9708('0x68')]({'plain':!![]});interaction_log['info'](_0x9708('0x7e'),_0x2e2d36[_0x9708('0x66')]['id'],_0x2e2d36[_0x9708('0x66')][_0x9708('0x3e')],_0x2e2d36[_0x9708('0x66')][_0x9708('0x6d')],_0x366125[_0x9708('0x6b')]['id'],_0x2e2d36[_0x9708('0x5d')]?JSON[_0x9708('0x28')](_0x2e2d36[_0x9708('0x5d')]):_0x9708('0x6e'));return respondWithRpcPromise('RejectMessage','rejectMessage',_0x366125);}return null;})['then'](function(_0xac6579){var _0x4cfe6b=_0x9708('0x70')+_0xac6579[_0x9708('0x2c')][_0x9708('0x71')];return db[_0x9708('0x72')][_0x9708('0x47')](_0x4cfe6b,{'type':db[_0x9708('0x73')][_0x9708('0x74')]['SELECT'],'raw':!![]})['then'](function(_0xe4680){return _0xe4680;});})[_0x9708('0x24')](function(_0x1da980){if(_0x1da980){_0x366125['message'][_0x9708('0x75')]=_0x1da980[0x0];if(!_0x2e2d36[_0x9708('0x5d')][_0x9708('0x65')])return;return db[_0x9708('0x76')][_0x9708('0x5c')]({'where':{'id':_0x2e2d36[_0x9708('0x5d')][_0x9708('0x65')],'role':_0x9708('0x67')},'attributes':['id',_0x9708('0x3e'),_0x9708('0x77'),_0x9708('0x7f'),_0x9708('0x78')],'raw':!![]});}return null;})['then'](function(_0xc33f87){if(!_0xc33f87)return null;_0x366125[_0x9708('0x2c')][_0x9708('0x67')]=_0xc33f87;return _0x366125;})[_0x9708('0x24')](function(_0x478a59){if(_0x478a59){_0x478a59[_0x9708('0x2c')][_0x9708('0x80')]=util['format'](_0x9708('0x81'),_0x2e2d36[_0x9708('0x66')][_0x9708('0x3e')]);_0x478a59[_0x9708('0x2c')]['channel']=_0x366125[_0x9708('0x79')];_0x478a59[_0x9708('0x2c')]['motionChannel']=_0x366125['channel'];_0x478a59[_0x9708('0x2c')]['event']=_0x9708('0x39');respondWithRpcPromise(_0x9708('0x7b'),_0x9708('0x7b'),{'event':_0x9708('0x82'),'message':_0x478a59['message']},client9002);return _0x366125;}return null;})[_0x9708('0x24')](respondWithResult(_0x15acb0,null))[_0x9708('0x2f')](handleError(_0x15acb0,null));};exports[_0x9708('0x83')]=function(_0x219315,_0x43db85){var _0x320a26;return db[_0x9708('0x55')][_0x9708('0x83')](_0x219315['body'],{})[_0x9708('0x24')](function(_0x474ced){_0x320a26=_0x474ced;return db[_0x9708('0x84')][_0x9708('0x85')]({'where':{'id':_0x320a26[_0x9708('0x71')]}});})[_0x9708('0x24')](function(_0x504425){if(_[_0x9708('0x6a')](_0x504425)){return;}else{_0x320a26['fax']=_0x504425[_0x9708('0x61')];return db[_0x9708('0x86')][_0x9708('0x85')]({'where':{'id':_0x320a26[_0x9708('0x87')]}});}})[_0x9708('0x24')](function(_0x2ed3b6){return respondWithRpcPromise(_0x9708('0x88'),_0x9708('0x88'),{'FaxAccountId':_['isNil'](_0x219315[_0x9708('0x5d')])?undefined:_0x219315[_0x9708('0x5d')]['FaxAccountId'],'path':_['isNil'](_0x2ed3b6)?undefined:util[_0x9708('0x63')](_0x9708('0x89'),_0x2ed3b6[_0x9708('0x8a')]),'fax':_[_0x9708('0x6a')](_0x320a26[_0x9708('0x61')])?undefined:_0x320a26[_0x9708('0x61')],'AttachmentId':_0x320a26[_0x9708('0x87')]},client9002);})[_0x9708('0x24')](respondWithResult(_0x43db85,0xc9))[_0x9708('0x2f')](handleError(_0x43db85,null));};exports[_0x9708('0x8b')]=function(_0x41aaa8,_0x8470cf){var _0x4a1957=path[_0x9708('0x8c')](config['root'],_0x9708('0x8d'),_0x9708('0x8e'),_0x9708('0x8f'));return db[_0x9708('0x55')][_0x9708('0x5c')]({'where':{'id':_0x41aaa8[_0x9708('0x5a')]['id']},'include':[{'model':db['Attachment'],'as':_0x9708('0x86')}]})['then'](handleEntityNotFound(_0x8470cf,null))[_0x9708('0x24')](function(_0x11481a){if(_0x11481a){return _0x8470cf[_0x9708('0x8b')](path[_0x9708('0x8c')](_0x4a1957,_0x11481a[_0x9708('0x86')]['basename']));}})['catch'](handleError(_0x8470cf,null));};
\ No newline at end of file
+var _0xa070=['SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','email','motionChannel','rejectmessage','create','findOne','AttachmentId','SendFax','FaxAccountId','basename','download','join','root','server','files','Attachment','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','./faxMessage.socket','register','jayson/promise','client','http','request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','offset','undefined','count','limit','Content-Range','json','apply','save','destroy','name','send','index','map','FaxMessage','rawAttributes','fieldName','type','key','model','keys','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','findAll','show','include','options','find','update','body','params','describe','accept','fax','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','FaxInteraction','FaxInteractionId','isNil','read1stAt','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','acceptMessage','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','internal','manual','interface','SIP/%s','channel','event','EventManager','fax-interactions','reject','get','interaction','RejectMessage','rejectMessage'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xa070,0x1ca));var _0x0a07=function(_0x43aa0d,_0x534c09){_0x43aa0d=_0x43aa0d-0x0;var _0x274f94=_0xa070[_0x43aa0d];return _0x274f94;};'use strict';var emlformat=require(_0x0a07('0x0'));var rimraf=require(_0x0a07('0x1'));var zipdir=require(_0x0a07('0x2'));var jsonpatch=require(_0x0a07('0x3'));var rp=require(_0x0a07('0x4'));var moment=require(_0x0a07('0x5'));var BPromise=require(_0x0a07('0x6'));var Mustache=require(_0x0a07('0x7'));var util=require('util');var path=require(_0x0a07('0x8'));var sox=require('sox');var csv=require(_0x0a07('0x9'));var ejs=require(_0x0a07('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0a07('0xb'));var squel=require(_0x0a07('0xc'));var crypto=require(_0x0a07('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x0a07('0x9'));var querystring=require(_0x0a07('0xe'));var Papa=require(_0x0a07('0xf'));var Redis=require(_0x0a07('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x0a07('0x11'));var as=require(_0x0a07('0x12'));var hardwareService=require(_0x0a07('0x13'));var logger=require(_0x0a07('0x14'))(_0x0a07('0x15'));var utils=require(_0x0a07('0x16'));var config=require(_0x0a07('0x17'));var licenseUtil=require(_0x0a07('0x18'));var db=require('../../mysqldb')['db'];config[_0x0a07('0x19')]=_['defaults'](config['redis'],{'host':_0x0a07('0x1a'),'port':0x18eb});var socket=require(_0x0a07('0x1b'))(new Redis(config[_0x0a07('0x19')]));require(_0x0a07('0x1c'))[_0x0a07('0x1d')](socket);var jayson=require(_0x0a07('0x1e'));var client=jayson[_0x0a07('0x1f')][_0x0a07('0x20')]({'port':0x232c});var client9002=jayson[_0x0a07('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2035b5,_0x29414,_0x1665ff,_0x214c3f){return new BPromise(function(_0x53d555,_0x6ccce6){var _0x2b5fb8=_0x214c3f||client;return _0x2b5fb8[_0x0a07('0x21')](_0x2035b5,_0x1665ff)[_0x0a07('0x22')](function(_0x31631a){logger[_0x0a07('0x23')](_0x0a07('0x24'),_0x29414,_0x0a07('0x25'));logger[_0x0a07('0x26')](_0x0a07('0x27'),_0x29414,'request\x20sent',JSON[_0x0a07('0x28')](_0x31631a));if(_0x31631a[_0x0a07('0x29')]){if(_0x31631a['error'][_0x0a07('0x2a')]===0x1f4){logger['error'](_0x0a07('0x24'),_0x29414,_0x31631a[_0x0a07('0x29')][_0x0a07('0x2b')]);return _0x6ccce6(_0x31631a[_0x0a07('0x29')][_0x0a07('0x2b')]);}logger['error']('FaxMessage,\x20%s,\x20%s',_0x29414,_0x31631a[_0x0a07('0x29')]['message']);return _0x53d555(_0x31631a['error'][_0x0a07('0x2b')]);}else{logger[_0x0a07('0x23')](_0x0a07('0x24'),_0x29414,'request\x20sent');_0x53d555(_0x31631a[_0x0a07('0x2c')][_0x0a07('0x2b')]);}})[_0x0a07('0x2d')](function(_0x4f1f01){logger[_0x0a07('0x29')](_0x0a07('0x24'),_0x29414,_0x4f1f01);_0x6ccce6(_0x4f1f01);});});}function respondWithStatusCode(_0x5195b6,_0xe2df84){_0xe2df84=_0xe2df84||0xcc;return function(_0x184e55){if(_0x184e55){return _0x5195b6[_0x0a07('0x2e')](_0xe2df84);}return _0x5195b6[_0x0a07('0x2f')](_0xe2df84)[_0x0a07('0x30')]();};}function respondWithResult(_0x55a0ed,_0x1453b3){_0x1453b3=_0x1453b3||0xc8;return function(_0x3c738c){if(_0x3c738c){return _0x55a0ed[_0x0a07('0x2f')](_0x1453b3)['json'](_0x3c738c);}};}function respondWithFilteredResult(_0x1f6186,_0x2cb13b){return function(_0x116560){if(_0x116560){var _0x49e689=typeof _0x2cb13b[_0x0a07('0x31')]===_0x0a07('0x32')&&typeof _0x2cb13b['limit']===_0x0a07('0x32');var _0x343759=_0x116560[_0x0a07('0x33')];var _0x2bfbe1=_0x49e689?0x0:_0x2cb13b['offset'];var _0x4c39f5=_0x49e689?_0x116560[_0x0a07('0x33')]:_0x2cb13b[_0x0a07('0x31')]+_0x2cb13b[_0x0a07('0x34')];var _0x154f54;if(_0x4c39f5>=_0x343759){_0x4c39f5=_0x343759;_0x154f54=0xc8;}else{_0x154f54=0xce;}_0x1f6186[_0x0a07('0x2f')](_0x154f54);return _0x1f6186['set'](_0x0a07('0x35'),_0x2bfbe1+'-'+_0x4c39f5+'/'+_0x343759)[_0x0a07('0x36')](_0x116560);}return null;};}function patchUpdates(_0x4ddf06){return function(_0x5e529d){try{jsonpatch[_0x0a07('0x37')](_0x5e529d,_0x4ddf06,!![]);}catch(_0x272fd5){return BPromise['reject'](_0x272fd5);}return _0x5e529d[_0x0a07('0x38')]();};}function saveUpdates(_0x20800a,_0x242639){return function(_0x3c1403){if(_0x3c1403){return _0x3c1403['update'](_0x20800a)[_0x0a07('0x22')](function(_0x5d3cc6){return _0x5d3cc6;});}return null;};}function removeEntity(_0x2c110d,_0xc7a115){return function(_0x1a8953){if(_0x1a8953){return _0x1a8953[_0x0a07('0x39')]()[_0x0a07('0x22')](function(){_0x2c110d[_0x0a07('0x2f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x354443,_0x3cfa5c){return function(_0x1317f7){if(!_0x1317f7){_0x354443[_0x0a07('0x2e')](0x194);}return _0x1317f7;};}function handleError(_0x17d19a,_0x5bf6ef){_0x5bf6ef=_0x5bf6ef||0x1f4;return function(_0x4cfb59){logger[_0x0a07('0x29')](_0x4cfb59['stack']);if(_0x4cfb59[_0x0a07('0x3a')]){delete _0x4cfb59['name'];}_0x17d19a[_0x0a07('0x2f')](_0x5bf6ef)[_0x0a07('0x3b')](_0x4cfb59);};}exports[_0x0a07('0x3c')]=function(_0x50de4,_0x51fd61){var _0x3a3f33={},_0x5d8dc2={},_0x30d366={'count':0x0,'rows':[]};var _0x1566c9=_[_0x0a07('0x3d')](db[_0x0a07('0x3e')][_0x0a07('0x3f')],function(_0xd3a445){return{'name':_0xd3a445[_0x0a07('0x40')],'type':_0xd3a445[_0x0a07('0x41')][_0x0a07('0x42')]};});_0x5d8dc2[_0x0a07('0x43')]=_[_0x0a07('0x3d')](_0x1566c9,'name');_0x5d8dc2['query']=_[_0x0a07('0x44')](_0x50de4[_0x0a07('0x45')]);_0x5d8dc2['filters']=_['intersection'](_0x5d8dc2[_0x0a07('0x43')],_0x5d8dc2[_0x0a07('0x45')]);_0x3a3f33[_0x0a07('0x46')]=_[_0x0a07('0x47')](_0x5d8dc2[_0x0a07('0x43')],qs[_0x0a07('0x48')](_0x50de4[_0x0a07('0x45')][_0x0a07('0x48')]));_0x3a3f33[_0x0a07('0x46')]=_0x3a3f33[_0x0a07('0x46')][_0x0a07('0x49')]?_0x3a3f33[_0x0a07('0x46')]:_0x5d8dc2[_0x0a07('0x43')];if(!_0x50de4[_0x0a07('0x45')][_0x0a07('0x4a')](_0x0a07('0x4b'))){_0x3a3f33[_0x0a07('0x34')]=qs[_0x0a07('0x34')](_0x50de4[_0x0a07('0x45')]['limit']);_0x3a3f33[_0x0a07('0x31')]=qs[_0x0a07('0x31')](_0x50de4['query'][_0x0a07('0x31')]);}_0x3a3f33[_0x0a07('0x4c')]=qs['sort'](_0x50de4[_0x0a07('0x45')][_0x0a07('0x4d')]);_0x3a3f33[_0x0a07('0x4e')]=qs[_0x0a07('0x4f')](_[_0x0a07('0x50')](_0x50de4[_0x0a07('0x45')],_0x5d8dc2['filters']),_0x1566c9);if(_0x50de4[_0x0a07('0x45')][_0x0a07('0x51')]){_0x3a3f33['where']=_[_0x0a07('0x52')](_0x3a3f33[_0x0a07('0x4e')],{'$or':_[_0x0a07('0x3d')](_0x1566c9,function(_0x3a6987){if(_0x3a6987[_0x0a07('0x41')]!==_0x0a07('0x53')){var _0x1a37fc={};_0x1a37fc[_0x3a6987[_0x0a07('0x3a')]]={'$like':'%'+_0x50de4['query'][_0x0a07('0x51')]+'%'};return _0x1a37fc;}})});}_0x3a3f33=_[_0x0a07('0x52')]({},_0x3a3f33,_0x50de4['options']);var _0x14369c={'where':_0x3a3f33[_0x0a07('0x4e')]};return db[_0x0a07('0x3e')]['count'](_0x14369c)[_0x0a07('0x22')](function(_0x1d8ab4){_0x30d366[_0x0a07('0x33')]=_0x1d8ab4;if(_0x50de4['query'][_0x0a07('0x54')]){_0x3a3f33['include']=[{'all':!![]}];}return db[_0x0a07('0x3e')][_0x0a07('0x55')](_0x3a3f33);})[_0x0a07('0x22')](function(_0x5cffc5){_0x30d366['rows']=_0x5cffc5;return _0x30d366;})['then'](respondWithFilteredResult(_0x51fd61,_0x3a3f33))[_0x0a07('0x2d')](handleError(_0x51fd61,null));};exports[_0x0a07('0x56')]=function(_0x44fea5,_0x5e0bf2){var _0x428434={'raw':!![],'where':{'id':_0x44fea5['params']['id']}},_0x241bd3={};_0x241bd3[_0x0a07('0x43')]=_[_0x0a07('0x44')](db[_0x0a07('0x3e')][_0x0a07('0x3f')]);_0x241bd3[_0x0a07('0x45')]=_[_0x0a07('0x44')](_0x44fea5[_0x0a07('0x45')]);_0x241bd3['filters']=_['intersection'](_0x241bd3[_0x0a07('0x43')],_0x241bd3[_0x0a07('0x45')]);_0x428434['attributes']=_[_0x0a07('0x47')](_0x241bd3[_0x0a07('0x43')],qs[_0x0a07('0x48')](_0x44fea5['query'][_0x0a07('0x48')]));_0x428434[_0x0a07('0x46')]=_0x428434[_0x0a07('0x46')][_0x0a07('0x49')]?_0x428434[_0x0a07('0x46')]:_0x241bd3['model'];if(_0x44fea5['query']['includeAll']){_0x428434[_0x0a07('0x57')]=[{'all':!![]}];}_0x428434=_[_0x0a07('0x52')]({},_0x428434,_0x44fea5[_0x0a07('0x58')]);return db[_0x0a07('0x3e')][_0x0a07('0x59')](_0x428434)['then'](handleEntityNotFound(_0x5e0bf2,null))['then'](respondWithResult(_0x5e0bf2,null))['catch'](handleError(_0x5e0bf2,null));};exports[_0x0a07('0x5a')]=function(_0x511bea,_0x54e62a){if(_0x511bea[_0x0a07('0x5b')]['id']){delete _0x511bea[_0x0a07('0x5b')]['id'];}return db[_0x0a07('0x3e')][_0x0a07('0x59')]({'where':{'id':_0x511bea[_0x0a07('0x5c')]['id']}})[_0x0a07('0x22')](handleEntityNotFound(_0x54e62a,null))[_0x0a07('0x22')](saveUpdates(_0x511bea[_0x0a07('0x5b')],null))['then'](respondWithResult(_0x54e62a,null))['catch'](handleError(_0x54e62a,null));};exports['destroy']=function(_0x42c5ae,_0x1c1928){return db[_0x0a07('0x3e')][_0x0a07('0x59')]({'where':{'id':_0x42c5ae[_0x0a07('0x5c')]['id']}})[_0x0a07('0x22')](handleEntityNotFound(_0x1c1928,null))['then'](removeEntity(_0x1c1928,null))['catch'](handleError(_0x1c1928,null));};exports['describe']=function(_0x39626d,_0x13edbf){return db[_0x0a07('0x3e')][_0x0a07('0x5d')]()[_0x0a07('0x22')](respondWithResult(_0x13edbf,null))[_0x0a07('0x2d')](handleError(_0x13edbf,null));};var interaction_log=require(_0x0a07('0x14'))('fax-interactions');exports[_0x0a07('0x5e')]=function(_0x52eed7,_0x5dbba4,_0x3b1b0f){var _0x1d823d={'agent':{},'channel':_0x0a07('0x5f')};if(_0x52eed7[_0x0a07('0x5b')]['id']){delete _0x52eed7[_0x0a07('0x5b')]['id'];}_0x52eed7[_0x0a07('0x5b')]['read']=!![];_0x52eed7[_0x0a07('0x5b')][_0x0a07('0x60')]=moment()[_0x0a07('0x61')](_0x0a07('0x62'));_0x52eed7[_0x0a07('0x5b')]['UserId']=_0x52eed7[_0x0a07('0x5b')][_0x0a07('0x63')]||_0x52eed7[_0x0a07('0x64')]['id'];_0x1d823d[_0x0a07('0x65')]['id']=_0x52eed7[_0x0a07('0x5b')][_0x0a07('0x63')];return db[_0x0a07('0x3e')][_0x0a07('0x59')]({'where':{'id':_0x52eed7['params']['id'],'UserId':null}})[_0x0a07('0x22')](handleEntityNotFound(_0x5dbba4,null))[_0x0a07('0x22')](saveUpdates(_0x52eed7[_0x0a07('0x5b')],null))[_0x0a07('0x22')](function(_0x481e4e){if(_0x481e4e){_0x1d823d[_0x0a07('0x2b')]=_0x481e4e['get']({'plain':!![]});return db[_0x0a07('0x66')][_0x0a07('0x59')]({'where':{'id':_0x481e4e[_0x0a07('0x67')]}});}return null;})['then'](handleEntityNotFound(_0x5dbba4,null))[_0x0a07('0x22')](function(_0xd18f2e){if(_0xd18f2e){return _0xd18f2e['update']({'UserId':_0x52eed7['body'][_0x0a07('0x63')],'read1stAt':_[_0x0a07('0x68')](_0xd18f2e[_0x0a07('0x69')])?moment()[_0x0a07('0x61')](_0x0a07('0x62')):undefined});}return null;})[_0x0a07('0x22')](function(_0x319cd3){if(_0x319cd3){_0x1d823d['interaction']=_0x319cd3['get']({'plain':!![]});interaction_log['info'](_0x0a07('0x6a'),_0x52eed7[_0x0a07('0x64')]['id'],_0x52eed7[_0x0a07('0x64')]['name'],_0x52eed7['user'][_0x0a07('0x6b')],_0x1d823d['interaction']['id'],_0x52eed7[_0x0a07('0x5b')]?JSON['stringify'](_0x52eed7[_0x0a07('0x5b')]):_0x0a07('0x6c'));return respondWithRpcPromise('AcceptMessage',_0x0a07('0x6d'),_0x1d823d);}return null;})[_0x0a07('0x22')](function(_0x1ddb4b){var _0x13a247='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x1ddb4b[_0x0a07('0x2b')]['ContactId'];return db[_0x0a07('0x6e')][_0x0a07('0x45')](_0x13a247,{'type':db[_0x0a07('0x6f')][_0x0a07('0x70')][_0x0a07('0x71')],'raw':!![]})[_0x0a07('0x22')](function(_0x241b8e){return _0x241b8e;});})[_0x0a07('0x22')](function(_0x215b95){if(_0x215b95){_0x1d823d[_0x0a07('0x2b')][_0x0a07('0x72')]=_0x215b95[0x0];if(!_0x52eed7['body'][_0x0a07('0x63')])return;return db[_0x0a07('0x73')][_0x0a07('0x59')]({'where':{'id':_0x52eed7[_0x0a07('0x5b')][_0x0a07('0x63')],'role':_0x0a07('0x65')},'attributes':['id',_0x0a07('0x3a'),_0x0a07('0x74'),'email',_0x0a07('0x75')],'raw':!![]});}return null;})[_0x0a07('0x22')](function(_0xa43025){if(!_0xa43025)return null;_0x1d823d[_0x0a07('0x2b')][_0x0a07('0x65')]=_0xa43025;return _0x1d823d;})['then'](function(_0x52ac1d){if(_0x52ac1d){if(_0x52eed7[_0x0a07('0x5b')][_0x0a07('0x76')]){_0x1d823d['message'][_0x0a07('0x77')]=util[_0x0a07('0x61')](_0x0a07('0x78'),_0x52eed7[_0x0a07('0x64')][_0x0a07('0x3a')]);_0x1d823d[_0x0a07('0x2b')][_0x0a07('0x79')]=_0x1d823d['channel'];_0x1d823d[_0x0a07('0x2b')]['motionChannel']=_0x1d823d[_0x0a07('0x79')];_0x1d823d[_0x0a07('0x2b')][_0x0a07('0x7a')]=_0x0a07('0x5e');return respondWithRpcPromise(_0x0a07('0x7b'),_0x0a07('0x7b'),{'event':'acceptmessage','message':_0x1d823d[_0x0a07('0x2b')]},client9002)[_0x0a07('0x22')](function(){return _0x1d823d;});}return _0x1d823d;}return null;})[_0x0a07('0x22')](respondWithResult(_0x5dbba4,null))[_0x0a07('0x2d')](handleError(_0x5dbba4,null));};var interaction_log=require(_0x0a07('0x14'))(_0x0a07('0x7c'));exports[_0x0a07('0x7d')]=function(_0x28d4e9,_0x16ef1e,_0x5ed7b1){var _0xfc32c6={'agent':{},'channel':'fax'};if(_0x28d4e9['body']['id']){delete _0x28d4e9['body']['id'];}_0x28d4e9[_0x0a07('0x5b')]['UserId']=_0x28d4e9[_0x0a07('0x5b')][_0x0a07('0x63')]||_0x28d4e9['user']['id'];_0xfc32c6[_0x0a07('0x65')]['id']=_0x28d4e9['body'][_0x0a07('0x63')];return db['FaxMessage'][_0x0a07('0x59')]({'where':{'id':_0x28d4e9[_0x0a07('0x5c')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x16ef1e,null))['then'](function(_0x47ce8e){if(_0x47ce8e){_0xfc32c6[_0x0a07('0x2b')]=_0x47ce8e[_0x0a07('0x7e')]({'plain':!![]});return db[_0x0a07('0x66')]['find']({'where':{'id':_0x47ce8e[_0x0a07('0x67')]}});}return null;})['then'](handleEntityNotFound(_0x16ef1e,null))[_0x0a07('0x22')](function(_0x5ce1ea){if(_0x5ce1ea){_0xfc32c6[_0x0a07('0x7f')]=_0x5ce1ea[_0x0a07('0x7e')]({'plain':!![]});interaction_log[_0x0a07('0x23')]('[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x28d4e9[_0x0a07('0x64')]['id'],_0x28d4e9[_0x0a07('0x64')][_0x0a07('0x3a')],_0x28d4e9[_0x0a07('0x64')]['role'],_0xfc32c6[_0x0a07('0x7f')]['id'],_0x28d4e9[_0x0a07('0x5b')]?JSON[_0x0a07('0x28')](_0x28d4e9[_0x0a07('0x5b')]):_0x0a07('0x6c'));return respondWithRpcPromise(_0x0a07('0x80'),_0x0a07('0x81'),_0xfc32c6);}return null;})[_0x0a07('0x22')](function(_0x2c1eed){var _0x2fd7ea=_0x0a07('0x82')+_0x2c1eed[_0x0a07('0x2b')][_0x0a07('0x83')];return db[_0x0a07('0x6e')][_0x0a07('0x45')](_0x2fd7ea,{'type':db['Sequelize'][_0x0a07('0x70')][_0x0a07('0x71')],'raw':!![]})['then'](function(_0x2c7722){return _0x2c7722;});})[_0x0a07('0x22')](function(_0x2f1b7e){if(_0x2f1b7e){_0xfc32c6[_0x0a07('0x2b')]['contact']=_0x2f1b7e[0x0];if(!_0x28d4e9[_0x0a07('0x5b')][_0x0a07('0x63')])return;return db['User'][_0x0a07('0x59')]({'where':{'id':_0x28d4e9[_0x0a07('0x5b')][_0x0a07('0x63')],'role':'agent'},'attributes':['id',_0x0a07('0x3a'),_0x0a07('0x74'),_0x0a07('0x84'),'internal'],'raw':!![]});}return null;})[_0x0a07('0x22')](function(_0x11a713){if(!_0x11a713)return null;_0xfc32c6[_0x0a07('0x2b')][_0x0a07('0x65')]=_0x11a713;return _0xfc32c6;})[_0x0a07('0x22')](function(_0x22699f){if(_0x22699f){_0x22699f['message'][_0x0a07('0x77')]=util[_0x0a07('0x61')](_0x0a07('0x78'),_0x28d4e9[_0x0a07('0x64')][_0x0a07('0x3a')]);_0x22699f[_0x0a07('0x2b')][_0x0a07('0x79')]=_0xfc32c6[_0x0a07('0x79')];_0x22699f[_0x0a07('0x2b')][_0x0a07('0x85')]=_0xfc32c6[_0x0a07('0x79')];_0x22699f['message'][_0x0a07('0x7a')]='reject';respondWithRpcPromise(_0x0a07('0x7b'),'EventManager',{'event':_0x0a07('0x86'),'message':_0x22699f['message']},client9002);return _0xfc32c6;}return null;})[_0x0a07('0x22')](respondWithResult(_0x16ef1e,null))[_0x0a07('0x2d')](handleError(_0x16ef1e,null));};exports[_0x0a07('0x87')]=function(_0x182aba,_0x133f27){var _0xf91f8e;return db[_0x0a07('0x3e')][_0x0a07('0x87')](_0x182aba[_0x0a07('0x5b')],{})[_0x0a07('0x22')](function(_0x4c3d1d){_0xf91f8e=_0x4c3d1d;return db['CmContact'][_0x0a07('0x88')]({'where':{'id':_0xf91f8e[_0x0a07('0x83')]}});})['then'](function(_0x592044){if(_[_0x0a07('0x68')](_0x592044)){return;}else{_0xf91f8e['fax']=_0x592044['fax'];return db['Attachment'][_0x0a07('0x88')]({'where':{'id':_0xf91f8e[_0x0a07('0x89')]}});}})['then'](function(_0x2e2477){return respondWithRpcPromise('SendFax',_0x0a07('0x8a'),{'FaxAccountId':_[_0x0a07('0x68')](_0x182aba[_0x0a07('0x5b')])?undefined:_0x182aba[_0x0a07('0x5b')][_0x0a07('0x8b')],'path':_[_0x0a07('0x68')](_0x2e2477)?undefined:util[_0x0a07('0x61')]('/var/opt/motion2/server/files/attachments/%s',_0x2e2477[_0x0a07('0x8c')]),'fax':_['isNil'](_0xf91f8e[_0x0a07('0x5f')])?undefined:_0xf91f8e[_0x0a07('0x5f')],'AttachmentId':_0xf91f8e[_0x0a07('0x89')]},client9002);})[_0x0a07('0x22')](respondWithResult(_0x133f27,0xc9))[_0x0a07('0x2d')](handleError(_0x133f27,null));};exports[_0x0a07('0x8d')]=function(_0x409eaa,_0x26b851){var _0x5345e7=path[_0x0a07('0x8e')](config[_0x0a07('0x8f')],_0x0a07('0x90'),_0x0a07('0x91'),'attachments');return db[_0x0a07('0x3e')]['find']({'where':{'id':_0x409eaa[_0x0a07('0x5c')]['id']},'include':[{'model':db[_0x0a07('0x92')],'as':'Attachment'}]})[_0x0a07('0x22')](handleEntityNotFound(_0x26b851,null))[_0x0a07('0x22')](function(_0x298c8b){if(_0x298c8b){return _0x26b851[_0x0a07('0x8d')](path[_0x0a07('0x8e')](_0x5345e7,_0x298c8b[_0x0a07('0x92')][_0x0a07('0x8c')]));}})[_0x0a07('0x2d')](handleError(_0x26b851,null));};
\ No newline at end of file
index 5c91e38..44827dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b65=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','FaxMessage','setMaxListeners'];(function(_0x24770c,_0x431571){var _0x1dfbc7=function(_0x5eeda0){while(--_0x5eeda0){_0x24770c['push'](_0x24770c['shift']());}};_0x1dfbc7(++_0x431571);}(_0x1b65,0x1b4));var _0x51b6=function(_0x1e88eb,_0x4d031e){_0x1e88eb=_0x1e88eb-0x0;var _0x23fe01=_0x1b65[_0x1e88eb];return _0x23fe01;};'use strict';var EventEmitter=require(_0x51b6('0x0'));var FaxMessage=require(_0x51b6('0x1'))['db'][_0x51b6('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x51b6('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x51b6('0x4'),'afterDestroy':_0x51b6('0x5')};function emitEvent(_0x3c6f36){return function(_0x2d5762,_0x1a1c26,_0x1ba2e9){FaxMessageEvents[_0x51b6('0x6')](_0x3c6f36+':'+_0x2d5762['id'],_0x2d5762);FaxMessageEvents['emit'](_0x3c6f36,_0x2d5762);_0x1ba2e9(null);};}for(var e in events){if(events[_0x51b6('0x7')](e)){var event=events[e];FaxMessage[_0x51b6('0x8')](e,emitEvent(event));}}module[_0x51b6('0x9')]=FaxMessageEvents;
\ No newline at end of file
+var _0x6a0b=['save','remove','emit','hasOwnProperty','hook','exports','events','setMaxListeners'];(function(_0x881f96,_0x595436){var _0x1a83d6=function(_0x5cc8c5){while(--_0x5cc8c5){_0x881f96['push'](_0x881f96['shift']());}};_0x1a83d6(++_0x595436);}(_0x6a0b,0xf6));var _0xb6a0=function(_0x5665c9,_0x3284f6){_0x5665c9=_0x5665c9-0x0;var _0x2e25f3=_0x6a0b[_0x5665c9];return _0x2e25f3;};'use strict';var EventEmitter=require(_0xb6a0('0x0'));var FaxMessage=require('../../mysqldb')['db']['FaxMessage'];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0xb6a0('0x1')](0x0);var events={'afterCreate':_0xb6a0('0x2'),'afterUpdate':'update','afterDestroy':_0xb6a0('0x3')};function emitEvent(_0x3e5b73){return function(_0x1505b1,_0x557a99,_0x4652da){FaxMessageEvents['emit'](_0x3e5b73+':'+_0x1505b1['id'],_0x1505b1);FaxMessageEvents[_0xb6a0('0x4')](_0x3e5b73,_0x1505b1);_0x4652da(null);};}for(var e in events){if(events[_0xb6a0('0x5')](e)){var event=events[e];FaxMessage[_0xb6a0('0x6')](e,emitEvent(event));}}module[_0xb6a0('0x7')]=FaxMessageEvents;
\ No newline at end of file
index 14a3521..a9bfacb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50d9=['define','FaxMessage','fax_messages','fti_fax_messages','body','models','get','direction','toLowerCase','secret','isNil','UserId','FaxInteraction','findOne','update','createdAt','error','utf8mb4','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./faxMessage.attributes','exports'];(function(_0xc7dbd,_0x1a3a9a){var _0x188494=function(_0x409f60){while(--_0x409f60){_0xc7dbd['push'](_0xc7dbd['shift']());}};_0x188494(++_0x1a3a9a);}(_0x50d9,0x18b));var _0x950d=function(_0xbb091,_0x3fe7ee){_0xbb091=_0xbb091-0x0;var _0x467a04=_0x50d9[_0xbb091];return _0x467a04;};'use strict';var _=require(_0x950d('0x0'));var util=require(_0x950d('0x1'));var logger=require(_0x950d('0x2'))(_0x950d('0x3'));var moment=require(_0x950d('0x4'));var BPromise=require(_0x950d('0x5'));var rp=require(_0x950d('0x6'));var fs=require('fs');var path=require(_0x950d('0x7'));var rimraf=require('rimraf');var config=require(_0x950d('0x8'));var attributes=require(_0x950d('0x9'));module[_0x950d('0xa')]=function(_0x3d8d23,_0x108f2e){return _0x3d8d23[_0x950d('0xb')](_0x950d('0xc'),attributes,{'tableName':_0x950d('0xd'),'paranoid':![],'indexes':[{'name':_0x950d('0xe'),'fields':[_0x950d('0xf')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x53591d,_0x5101e9,_0x1add2f){var _0x330313=_0x3d8d23[_0x950d('0x10')];var _0x42d095=_0x53591d[_0x950d('0x11')]({'plain':!![]});if(_0x42d095[_0x950d('0x12')]['toLowerCase']()==='in'||_0x42d095[_0x950d('0x12')][_0x950d('0x13')]()==='out'&&!_0x42d095[_0x950d('0x14')]&&!_[_0x950d('0x15')](_0x42d095[_0x950d('0x16')])){_0x330313[_0x950d('0x17')][_0x950d('0x18')]({'where':{'id':_0x42d095['FaxInteractionId']}})['then'](function(_0x3066c0){if(_0x3066c0){_0x3066c0[_0x950d('0x19')]({'lastMsgAt':_0x42d095[_0x950d('0x1a')],'lastMsgDirection':_0x42d095[_0x950d('0x12')]['toLowerCase']()});}})['catch'](function(_0x4f11db){console[_0x950d('0x1b')](_0x4f11db);});}_0x1add2f();}},'charset':_0x950d('0x1c'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x0412=['UserId','FaxInteraction','findOne','FaxInteractionId','then','update','createdAt','error','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','request-promise','path','../../config/environment','exports','define','FaxMessage','fax_messages','fti_fax_messages','body','get','direction','toLowerCase','out','secret','isNil'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x0412,0x1ae));var _0x2041=function(_0xbc56a1,_0x551263){_0xbc56a1=_0xbc56a1-0x0;var _0x593816=_0x0412[_0xbc56a1];return _0x593816;};'use strict';var _=require(_0x2041('0x0'));var util=require('util');var logger=require(_0x2041('0x1'))(_0x2041('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x2041('0x3'));var fs=require('fs');var path=require(_0x2041('0x4'));var rimraf=require('rimraf');var config=require(_0x2041('0x5'));var attributes=require('./faxMessage.attributes');module[_0x2041('0x6')]=function(_0x8d055f,_0x5f289a){return _0x8d055f[_0x2041('0x7')](_0x2041('0x8'),attributes,{'tableName':_0x2041('0x9'),'paranoid':![],'indexes':[{'name':_0x2041('0xa'),'fields':[_0x2041('0xb')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x481b53,_0xf92df7,_0x3ace20){var _0x14ae63=_0x8d055f['models'];var _0x10e47b=_0x481b53[_0x2041('0xc')]({'plain':!![]});if(_0x10e47b[_0x2041('0xd')][_0x2041('0xe')]()==='in'||_0x10e47b[_0x2041('0xd')][_0x2041('0xe')]()===_0x2041('0xf')&&!_0x10e47b[_0x2041('0x10')]&&!_[_0x2041('0x11')](_0x10e47b[_0x2041('0x12')])){_0x14ae63[_0x2041('0x13')][_0x2041('0x14')]({'where':{'id':_0x10e47b[_0x2041('0x15')]}})[_0x2041('0x16')](function(_0x32757f){if(_0x32757f){_0x32757f[_0x2041('0x17')]({'lastMsgAt':_0x10e47b[_0x2041('0x18')],'lastMsgDirection':_0x10e47b['direction'][_0x2041('0xe')]()});}})['catch'](function(_0x44c360){console[_0x2041('0x19')](_0x44c360);});}_0x3ace20();}},'charset':_0x2041('0x1a'),'collate':_0x2041('0x1b')});};
\ No newline at end of file
index f5cb99e..be339a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac9d=['then','info','FaxMessage,\x20%s,\x20%s','debug','FaxMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','FaxMessage','body','options','raw','CreateFaxMessage','UpdateFaxMessage','update','attributes','limit','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','redis','defaults','socket.io-emitter','./faxMessage.socket','register','request'];(function(_0x21604b,_0x2be7b5){var _0x530e6f=function(_0x242f97){while(--_0x242f97){_0x21604b['push'](_0x21604b['shift']());}};_0x530e6f(++_0x2be7b5);}(_0xac9d,0x14d));var _0xdac9=function(_0x481844,_0x259b1f){_0x481844=_0x481844-0x0;var _0x2afc17=_0xac9d[_0x481844];return _0x2afc17;};'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});config[_0xdac9('0xc')]=_[_0xdac9('0xd')](config[_0xdac9('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xdac9('0xe'))(new Redis(config['redis']));require(_0xdac9('0xf'))[_0xdac9('0x10')](socket);function respondWithRpcPromise(_0x39c92c,_0x1a4674,_0x23ec14){return new BPromise(function(_0x2859bf,_0x255627){return client[_0xdac9('0x11')](_0x39c92c,_0x23ec14)[_0xdac9('0x12')](function(_0x5514c5){logger[_0xdac9('0x13')](_0xdac9('0x14'),_0x1a4674,'request\x20sent');logger[_0xdac9('0x15')](_0xdac9('0x16'),_0x1a4674,_0xdac9('0x17'),JSON['stringify'](_0x5514c5));if(_0x5514c5[_0xdac9('0x18')]){if(_0x5514c5[_0xdac9('0x18')][_0xdac9('0x19')]===0x1f4){logger['error']('FaxMessage,\x20%s,\x20%s',_0x1a4674,_0x5514c5[_0xdac9('0x18')][_0xdac9('0x1a')]);return _0x255627(_0x5514c5['error'][_0xdac9('0x1a')]);}logger[_0xdac9('0x18')](_0xdac9('0x14'),_0x1a4674,_0x5514c5[_0xdac9('0x18')][_0xdac9('0x1a')]);return _0x2859bf(_0x5514c5[_0xdac9('0x18')][_0xdac9('0x1a')]);}else{logger[_0xdac9('0x13')]('FaxMessage,\x20%s,\x20%s',_0x1a4674,_0xdac9('0x17'));_0x2859bf(_0x5514c5[_0xdac9('0x1b')]['message']);}})[_0xdac9('0x1c')](function(_0xa57f2d){logger[_0xdac9('0x18')](_0xdac9('0x14'),_0x1a4674,_0xa57f2d);_0x255627(_0xa57f2d);});});}exports['CreateFaxMessage']=function(_0x520369){var _0x4029fc=this;return new Promise(function(_0x20ece3,_0x2b9d91){return db[_0xdac9('0x1d')]['create'](_0x520369[_0xdac9('0x1e')],{'raw':_0x520369[_0xdac9('0x1f')]?_0x520369[_0xdac9('0x1f')][_0xdac9('0x20')]===undefined?!![]:![]:!![]})[_0xdac9('0x12')](function(_0x42317c){logger[_0xdac9('0x13')](_0xdac9('0x21'),_0x520369);logger[_0xdac9('0x15')](_0xdac9('0x21'),_0x520369,JSON['stringify'](_0x42317c));_0x20ece3(_0x42317c);})[_0xdac9('0x1c')](function(_0x11f4fd){logger[_0xdac9('0x18')](_0xdac9('0x21'),_0x11f4fd['message'],_0x520369);_0x2b9d91(_0x4029fc[_0xdac9('0x18')](0x1f4,_0x11f4fd['message']));});});};exports[_0xdac9('0x22')]=function(_0x2fce71){var _0x566d8c=this;return new Promise(function(_0x433be9,_0x5105f1){return db[_0xdac9('0x1d')][_0xdac9('0x23')](_0x2fce71[_0xdac9('0x1e')],{'raw':_0x2fce71[_0xdac9('0x1f')]?_0x2fce71['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2fce71[_0xdac9('0x1f')]?_0x2fce71[_0xdac9('0x1f')]['where']||null:null,'attributes':_0x2fce71['options']?_0x2fce71[_0xdac9('0x1f')][_0xdac9('0x24')]||null:null,'limit':_0x2fce71[_0xdac9('0x1f')]?_0x2fce71[_0xdac9('0x1f')][_0xdac9('0x25')]||null:null})[_0xdac9('0x12')](function(_0xed99f9){logger[_0xdac9('0x13')](_0xdac9('0x22'),_0x2fce71);logger[_0xdac9('0x15')](_0xdac9('0x22'),_0x2fce71,JSON[_0xdac9('0x26')](_0xed99f9));_0x433be9(_0xed99f9);})[_0xdac9('0x1c')](function(_0x336fd5){logger[_0xdac9('0x18')](_0xdac9('0x22'),_0x336fd5[_0xdac9('0x1a')],_0x2fce71);_0x5105f1(_0x566d8c[_0xdac9('0x18')](0x1f4,_0x336fd5[_0xdac9('0x1a')]));});});};
\ No newline at end of file
+var _0x5c12=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','./faxMessage.socket','register','request','info','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','error','FaxMessage,\x20%s,\x20%s','message','catch','CreateFaxMessage','FaxMessage','create','body','options','then','stringify','UpdateFaxMessage','raw','attributes','limit','util','moment','randomstring','ioredis'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0x5c12,0x188));var _0x25c1=function(_0x1ebb10,_0x156b3e){_0x1ebb10=_0x1ebb10-0x0;var _0x20d709=_0x5c12[_0x1ebb10];return _0x20d709;};'use strict';var _=require('lodash');var util=require(_0x25c1('0x0'));var moment=require(_0x25c1('0x1'));var BPromise=require('bluebird');var rs=require(_0x25c1('0x2'));var fs=require('fs');var Redis=require(_0x25c1('0x3'));var db=require(_0x25c1('0x4'))['db'];var utils=require(_0x25c1('0x5'));var logger=require(_0x25c1('0x6'))(_0x25c1('0x7'));var config=require(_0x25c1('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x25c1('0x9')][_0x25c1('0xa')]({'port':0x232a});config[_0x25c1('0xb')]=_['defaults'](config['redis'],{'host':_0x25c1('0xc'),'port':0x18eb});var socket=require(_0x25c1('0xd'))(new Redis(config[_0x25c1('0xb')]));require(_0x25c1('0xe'))[_0x25c1('0xf')](socket);function respondWithRpcPromise(_0x588f30,_0x3e062e,_0x41c89d){return new BPromise(function(_0x11a223,_0x81f0f4){return client[_0x25c1('0x10')](_0x588f30,_0x41c89d)['then'](function(_0x196e2f){logger[_0x25c1('0x11')]('FaxMessage,\x20%s,\x20%s',_0x3e062e,_0x25c1('0x12'));logger[_0x25c1('0x13')](_0x25c1('0x14'),_0x3e062e,_0x25c1('0x12'),JSON['stringify'](_0x196e2f));if(_0x196e2f['error']){if(_0x196e2f['error']['code']===0x1f4){logger[_0x25c1('0x15')](_0x25c1('0x16'),_0x3e062e,_0x196e2f[_0x25c1('0x15')][_0x25c1('0x17')]);return _0x81f0f4(_0x196e2f[_0x25c1('0x15')]['message']);}logger[_0x25c1('0x15')]('FaxMessage,\x20%s,\x20%s',_0x3e062e,_0x196e2f['error']['message']);return _0x11a223(_0x196e2f[_0x25c1('0x15')][_0x25c1('0x17')]);}else{logger['info']('FaxMessage,\x20%s,\x20%s',_0x3e062e,_0x25c1('0x12'));_0x11a223(_0x196e2f['result'][_0x25c1('0x17')]);}})[_0x25c1('0x18')](function(_0x5c3c5d){logger['error']('FaxMessage,\x20%s,\x20%s',_0x3e062e,_0x5c3c5d);_0x81f0f4(_0x5c3c5d);});});}exports[_0x25c1('0x19')]=function(_0x3d3149){var _0x22a36e=this;return new Promise(function(_0x1bf95d,_0x481c12){return db[_0x25c1('0x1a')][_0x25c1('0x1b')](_0x3d3149[_0x25c1('0x1c')],{'raw':_0x3d3149[_0x25c1('0x1d')]?_0x3d3149['options']['raw']===undefined?!![]:![]:!![]})[_0x25c1('0x1e')](function(_0xac3335){logger[_0x25c1('0x11')](_0x25c1('0x19'),_0x3d3149);logger[_0x25c1('0x13')](_0x25c1('0x19'),_0x3d3149,JSON[_0x25c1('0x1f')](_0xac3335));_0x1bf95d(_0xac3335);})[_0x25c1('0x18')](function(_0x14ffd9){logger[_0x25c1('0x15')](_0x25c1('0x19'),_0x14ffd9[_0x25c1('0x17')],_0x3d3149);_0x481c12(_0x22a36e[_0x25c1('0x15')](0x1f4,_0x14ffd9['message']));});});};exports[_0x25c1('0x20')]=function(_0x20dbb9){var _0x1b1c96=this;return new Promise(function(_0x1fb59f,_0x21fdb8){return db[_0x25c1('0x1a')]['update'](_0x20dbb9[_0x25c1('0x1c')],{'raw':_0x20dbb9[_0x25c1('0x1d')]?_0x20dbb9[_0x25c1('0x1d')][_0x25c1('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x20dbb9[_0x25c1('0x1d')]?_0x20dbb9[_0x25c1('0x1d')]['where']||null:null,'attributes':_0x20dbb9[_0x25c1('0x1d')]?_0x20dbb9['options'][_0x25c1('0x22')]||null:null,'limit':_0x20dbb9[_0x25c1('0x1d')]?_0x20dbb9[_0x25c1('0x1d')][_0x25c1('0x23')]||null:null})[_0x25c1('0x1e')](function(_0x21069c){logger[_0x25c1('0x11')](_0x25c1('0x20'),_0x20dbb9);logger[_0x25c1('0x13')]('UpdateFaxMessage',_0x20dbb9,JSON[_0x25c1('0x1f')](_0x21069c));_0x1fb59f(_0x21069c);})['catch'](function(_0x492715){logger[_0x25c1('0x15')](_0x25c1('0x20'),_0x492715['message'],_0x20dbb9);_0x21fdb8(_0x1b1c96[_0x25c1('0x15')](0x1f4,_0x492715['message']));});});};
\ No newline at end of file
index 1f3a9aa..7178688 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc592=['update','emit','removeListener','length','faxMessage:','./faxMessage.events','save','remove'];(function(_0x1f8083,_0x3958a5){var _0x7be009=function(_0x2ac1c1){while(--_0x2ac1c1){_0x1f8083['push'](_0x1f8083['shift']());}};_0x7be009(++_0x3958a5);}(_0xc592,0x85));var _0x2c59=function(_0x24b2b0,_0x65c8ad){_0x24b2b0=_0x24b2b0-0x0;var _0x3cca7d=_0xc592[_0x24b2b0];return _0x3cca7d;};'use strict';var FaxMessageEvents=require(_0x2c59('0x0'));var events=[_0x2c59('0x1'),_0x2c59('0x2'),_0x2c59('0x3')];function createListener(_0x40c0c9,_0x1e5088){return function(_0x409cca){_0x1e5088[_0x2c59('0x4')](_0x40c0c9,_0x409cca);};}function removeListener(_0x4dc92e,_0x3497be){return function(){FaxMessageEvents[_0x2c59('0x5')](_0x4dc92e,_0x3497be);};}exports['register']=function(_0x3709d5){for(var _0x4c90ab=0x0,_0x5650ed=events[_0x2c59('0x6')];_0x4c90ab<_0x5650ed;_0x4c90ab++){var _0x597848=events[_0x4c90ab];var _0x513419=createListener(_0x2c59('0x7')+_0x597848,_0x3709d5);FaxMessageEvents['on'](_0x597848,_0x513419);}};
\ No newline at end of file
+var _0xb98b=['save','remove','update','emit','removeListener','register','length','faxMessage:','./faxMessage.events'];(function(_0x4fbec3,_0x3940ea){var _0x2bf60b=function(_0x4f443a){while(--_0x4f443a){_0x4fbec3['push'](_0x4fbec3['shift']());}};_0x2bf60b(++_0x3940ea);}(_0xb98b,0x1af));var _0xbb98=function(_0x1b6b3a,_0x22c24a){_0x1b6b3a=_0x1b6b3a-0x0;var _0x3439fc=_0xb98b[_0x1b6b3a];return _0x3439fc;};'use strict';var FaxMessageEvents=require(_0xbb98('0x0'));var events=[_0xbb98('0x1'),_0xbb98('0x2'),_0xbb98('0x3')];function createListener(_0x1c476e,_0x22083c){return function(_0x1085f9){_0x22083c[_0xbb98('0x4')](_0x1c476e,_0x1085f9);};}function removeListener(_0x4bff17,_0x2b2442){return function(){FaxMessageEvents[_0xbb98('0x5')](_0x4bff17,_0x2b2442);};}exports[_0xbb98('0x6')]=function(_0x2e776c){for(var _0x154a56=0x0,_0x3c1b74=events[_0xbb98('0x7')];_0x154a56<_0x3c1b74;_0x154a56++){var _0x1fa156=events[_0x154a56];var _0x3728a1=createListener(_0xbb98('0x8')+_0x1fa156,_0x2e776c);FaxMessageEvents['on'](_0x1fa156,_0x3728a1);}};
\ No newline at end of file
index 997bf43..43125e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca66=['faxmessage:create','create','put','update','/:id/accept','accept','/:id/reject','destroy','exports','multer','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download','download','tracked','fax'];(function(_0x3a28ed,_0x1ea633){var _0x668c46=function(_0x43c858){while(--_0x43c858){_0x3a28ed['push'](_0x3a28ed['shift']());}};_0x668c46(++_0x1ea633);}(_0xca66,0x8b));var _0x6ca6=function(_0x4f6574,_0x306ea6){_0x4f6574=_0x4f6574-0x0;var _0x5e1a65=_0xca66[_0x4f6574];return _0x5e1a65;};'use strict';var multer=require(_0x6ca6('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x6ca6('0x1'));var express=require(_0x6ca6('0x2'));var router=express[_0x6ca6('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x6ca6('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x6ca6('0x5'));var controller=require('./faxMessage.controller');router[_0x6ca6('0x6')]('/',auth[_0x6ca6('0x7')](),controller[_0x6ca6('0x8')]);router[_0x6ca6('0x6')](_0x6ca6('0x9'),auth[_0x6ca6('0x7')](),controller[_0x6ca6('0xa')]);router['get'](_0x6ca6('0xb'),auth[_0x6ca6('0x7')](),controller[_0x6ca6('0xc')]);router[_0x6ca6('0x6')](_0x6ca6('0xd'),auth[_0x6ca6('0x7')](),controller[_0x6ca6('0xe')]);router['post']('/',auth[_0x6ca6('0x7')](),interaction[_0x6ca6('0xf')](_0x6ca6('0x10'),_0x6ca6('0x11')),controller[_0x6ca6('0x12')]);router[_0x6ca6('0x13')]('/:id',auth[_0x6ca6('0x7')](),controller[_0x6ca6('0x14')]);router['put'](_0x6ca6('0x15'),auth[_0x6ca6('0x7')](),controller[_0x6ca6('0x16')]);router[_0x6ca6('0x13')](_0x6ca6('0x17'),auth[_0x6ca6('0x7')](),controller['reject']);router['delete']('/:id',auth[_0x6ca6('0x7')](),controller[_0x6ca6('0x18')]);module[_0x6ca6('0x19')]=router;
\ No newline at end of file
+var _0x2dae=['faxmessage:create','put','update','/:id/accept','accept','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/download','download','post','tracked','fax'];(function(_0x5b34c0,_0x3ad403){var _0x242bd3=function(_0x51d0ce){while(--_0x51d0ce){_0x5b34c0['push'](_0x5b34c0['shift']());}};_0x242bd3(++_0x3ad403);}(_0x2dae,0xc3));var _0xe2da=function(_0xdc37a1,_0x53ebb9){_0xdc37a1=_0xdc37a1-0x0;var _0x99b4fe=_0x2dae[_0xdc37a1];return _0x99b4fe;};'use strict';var multer=require(_0xe2da('0x0'));var util=require('util');var path=require(_0xe2da('0x1'));var timeout=require(_0xe2da('0x2'));var express=require(_0xe2da('0x3'));var router=express[_0xe2da('0x4')]();var fs_extra=require(_0xe2da('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xe2da('0x6'));var config=require(_0xe2da('0x7'));var controller=require(_0xe2da('0x8'));router[_0xe2da('0x9')]('/',auth['isAuthenticated'](),controller[_0xe2da('0xa')]);router[_0xe2da('0x9')](_0xe2da('0xb'),auth[_0xe2da('0xc')](),controller[_0xe2da('0xd')]);router[_0xe2da('0x9')](_0xe2da('0xe'),auth[_0xe2da('0xc')](),controller[_0xe2da('0xf')]);router['get'](_0xe2da('0x10'),auth[_0xe2da('0xc')](),controller[_0xe2da('0x11')]);router[_0xe2da('0x12')]('/',auth[_0xe2da('0xc')](),interaction[_0xe2da('0x13')](_0xe2da('0x14'),_0xe2da('0x15')),controller['create']);router[_0xe2da('0x16')]('/:id',auth[_0xe2da('0xc')](),controller[_0xe2da('0x17')]);router[_0xe2da('0x16')](_0xe2da('0x18'),auth[_0xe2da('0xc')](),controller[_0xe2da('0x19')]);router[_0xe2da('0x16')]('/:id/reject',auth[_0xe2da('0xc')](),controller['reject']);router['delete'](_0xe2da('0xe'),auth[_0xe2da('0xc')](),controller[_0xe2da('0x1a')]);module['exports']=router;
\ No newline at end of file
index 729b443..8639734 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9be9=['beepall','roundrobin','sequelize','exports','STRING','name','INTEGER','rrmemory'];(function(_0xdd827a,_0x482ad2){var _0x2f46f1=function(_0x221046){while(--_0x221046){_0xdd827a['push'](_0xdd827a['shift']());}};_0x2f46f1(++_0x482ad2);}(_0x9be9,0x172));var _0x99be=function(_0xa1af00,_0x3e095e){_0xa1af00=_0xa1af00-0x0;var _0x500a31=_0x9be9[_0xa1af00];return _0x500a31;};'use strict';var Sequelize=require(_0x99be('0x0'));module[_0x99be('0x1')]={'name':{'type':Sequelize[_0x99be('0x2')],'unique':_0x99be('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x99be('0x2')]},'timeout':{'type':Sequelize[_0x99be('0x4')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x99be('0x5'),_0x99be('0x6'),_0x99be('0x7')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x99be('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x04ed=['exports','name','STRING','ENUM','rrmemory','beepall','roundrobin','INTEGER','sequelize'];(function(_0x383356,_0x33d2f5){var _0x32ee5a=function(_0x2741db){while(--_0x2741db){_0x383356['push'](_0x383356['shift']());}};_0x32ee5a(++_0x33d2f5);}(_0x04ed,0x170));var _0xd04e=function(_0x86b9b,_0x3bee57){_0x86b9b=_0x86b9b-0x0;var _0x42a820=_0x04ed[_0x86b9b];return _0x42a820;};'use strict';var Sequelize=require(_0xd04e('0x0'));module[_0xd04e('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xd04e('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xd04e('0x3')]},'timeout':{'type':Sequelize['INTEGER'],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xd04e('0x4')](_0xd04e('0x5'),_0xd04e('0x6'),_0xd04e('0x7')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0xd04e('0x8')],'defaultValue':0x0}};
\ No newline at end of file
index 1a88d8e..3de0763 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf347=['spread','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','FaxQueues','UserProfileResource','stack','name','send','index','map','rawAttributes','type','key','keys','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','where','pick','merge','VIRTUAL','filter','options','FaxQueue','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','error','describe','getMembers','findOne','UserFaxQueue','sort','User','findAndCountAll','agent','faxPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','addTeams','online','voicePause','interface','flatMap','Agents','sequelize','transaction','each','findOrCreate','forEach','emit','userFaxQueue:save','removeTeams','ids','field','tq.TeamId','from','team_has_fax_queues','join','user_has_teams','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','all','union','value','isEmpty','removeAgents','userFaxQueue:remove','addAgents'];(function(_0x29e9f0,_0x2099b0){var _0x589a19=function(_0x21e7ad){while(--_0x21e7ad){_0x29e9f0['push'](_0x29e9f0['shift']());}};_0x589a19(++_0x2099b0);}(_0xf347,0x98));var _0x7f34=function(_0x4212b1,_0x355341){_0x4212b1=_0x4212b1-0x0;var _0x324d59=_0xf347[_0x4212b1];return _0x324d59;};'use strict';var emlformat=require(_0x7f34('0x0'));var rimraf=require(_0x7f34('0x1'));var zipdir=require(_0x7f34('0x2'));var jsonpatch=require(_0x7f34('0x3'));var rp=require(_0x7f34('0x4'));var moment=require('moment');var BPromise=require(_0x7f34('0x5'));var Mustache=require(_0x7f34('0x6'));var util=require(_0x7f34('0x7'));var path=require(_0x7f34('0x8'));var sox=require(_0x7f34('0x9'));var csv=require(_0x7f34('0xa'));var ejs=require(_0x7f34('0xb'));var fs=require('fs');var fs_extra=require(_0x7f34('0xc'));var _=require('lodash');var squel=require(_0x7f34('0xd'));var crypto=require(_0x7f34('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x7f34('0xf'));var toCsv=require(_0x7f34('0xa'));var querystring=require(_0x7f34('0x10'));var Papa=require(_0x7f34('0x11'));var Redis=require(_0x7f34('0x12'));var authService=require(_0x7f34('0x13'));var qs=require(_0x7f34('0x14'));var as=require(_0x7f34('0x15'));var hardwareService=require(_0x7f34('0x16'));var logger=require(_0x7f34('0x17'))(_0x7f34('0x18'));var utils=require(_0x7f34('0x19'));var config=require(_0x7f34('0x1a'));var licenseUtil=require(_0x7f34('0x1b'));var db=require(_0x7f34('0x1c'))['db'];config[_0x7f34('0x1d')]=_[_0x7f34('0x1e')](config[_0x7f34('0x1d')],{'host':_0x7f34('0x1f'),'port':0x18eb});var socket=require(_0x7f34('0x20'))(new Redis(config[_0x7f34('0x1d')]));require(_0x7f34('0x21'))[_0x7f34('0x22')](socket);function respondWithStatusCode(_0x114246,_0x17d95a){_0x17d95a=_0x17d95a||0xcc;return function(_0x1888c9){if(_0x1888c9){return _0x114246[_0x7f34('0x23')](_0x17d95a);}return _0x114246[_0x7f34('0x24')](_0x17d95a)[_0x7f34('0x25')]();};}function respondWithResult(_0x2ae5ea,_0x268bfe){_0x268bfe=_0x268bfe||0xc8;return function(_0x4de9fc){if(_0x4de9fc){return _0x2ae5ea[_0x7f34('0x24')](_0x268bfe)[_0x7f34('0x26')](_0x4de9fc);}};}function respondWithFilteredResult(_0x17d909,_0x3ef9dd){return function(_0x2fbfeb){if(_0x2fbfeb){var _0x5e8982=typeof _0x3ef9dd[_0x7f34('0x27')]===_0x7f34('0x28')&&typeof _0x3ef9dd[_0x7f34('0x29')]===_0x7f34('0x28');var _0x340d2d=_0x2fbfeb[_0x7f34('0x2a')];var _0x55b064=_0x5e8982?0x0:_0x3ef9dd['offset'];var _0x4066a2=_0x5e8982?_0x2fbfeb[_0x7f34('0x2a')]:_0x3ef9dd[_0x7f34('0x27')]+_0x3ef9dd['limit'];var _0x21040e;if(_0x4066a2>=_0x340d2d){_0x4066a2=_0x340d2d;_0x21040e=0xc8;}else{_0x21040e=0xce;}_0x17d909[_0x7f34('0x24')](_0x21040e);return _0x17d909['set'](_0x7f34('0x2b'),_0x55b064+'-'+_0x4066a2+'/'+_0x340d2d)[_0x7f34('0x26')](_0x2fbfeb);}return null;};}function patchUpdates(_0x36e7f4){return function(_0x60017b){try{jsonpatch[_0x7f34('0x2c')](_0x60017b,_0x36e7f4,!![]);}catch(_0x4cab5a){return BPromise[_0x7f34('0x2d')](_0x4cab5a);}return _0x60017b[_0x7f34('0x2e')]();};}function saveUpdates(_0x1033d3,_0x5394db){return function(_0x3d8de5){if(_0x3d8de5){return _0x3d8de5[_0x7f34('0x2f')](_0x1033d3)[_0x7f34('0x30')](function(_0x55d130){return _0x55d130;});}return null;};}function removeEntity(_0x2fd650,_0x4b3bbc){return function(_0x8c2535){if(_0x8c2535){return _0x8c2535[_0x7f34('0x31')]()['then'](function(){var _0x3ba9e7=_0x8c2535['get']({'plain':!![]});var _0x37752c=_0x7f34('0x32');return db[_0x7f34('0x33')][_0x7f34('0x31')]({'where':{'type':_0x37752c,'resourceId':_0x3ba9e7['id']}})['then'](function(){return _0x8c2535;});})[_0x7f34('0x30')](function(){_0x2fd650[_0x7f34('0x24')](0xcc)[_0x7f34('0x25')]();});}};}function handleEntityNotFound(_0x2f1248,_0x879ce7){return function(_0x360ea0){if(!_0x360ea0){_0x2f1248[_0x7f34('0x23')](0x194);}return _0x360ea0;};}function handleError(_0xb3c8a8,_0x22b0df){_0x22b0df=_0x22b0df||0x1f4;return function(_0x5df6ef){logger['error'](_0x5df6ef[_0x7f34('0x34')]);if(_0x5df6ef[_0x7f34('0x35')]){delete _0x5df6ef[_0x7f34('0x35')];}_0xb3c8a8[_0x7f34('0x24')](_0x22b0df)[_0x7f34('0x36')](_0x5df6ef);};}exports[_0x7f34('0x37')]=function(_0x1cfbd6,_0x4bfaa6){var _0xd66040={},_0x3d2064={},_0x1f11ca={'count':0x0,'rows':[]};var _0x264269=_[_0x7f34('0x38')](db['FaxQueue'][_0x7f34('0x39')],function(_0x2624c6){return{'name':_0x2624c6['fieldName'],'type':_0x2624c6[_0x7f34('0x3a')][_0x7f34('0x3b')]};});_0x3d2064['model']=_[_0x7f34('0x38')](_0x264269,'name');_0x3d2064['query']=_[_0x7f34('0x3c')](_0x1cfbd6[_0x7f34('0x3d')]);_0x3d2064[_0x7f34('0x3e')]=_[_0x7f34('0x3f')](_0x3d2064[_0x7f34('0x40')],_0x3d2064['query']);_0xd66040['attributes']=_[_0x7f34('0x3f')](_0x3d2064[_0x7f34('0x40')],qs[_0x7f34('0x41')](_0x1cfbd6[_0x7f34('0x3d')][_0x7f34('0x41')]));_0xd66040[_0x7f34('0x42')]=_0xd66040[_0x7f34('0x42')][_0x7f34('0x43')]?_0xd66040[_0x7f34('0x42')]:_0x3d2064[_0x7f34('0x40')];if(!_0x1cfbd6[_0x7f34('0x3d')][_0x7f34('0x44')](_0x7f34('0x45'))){_0xd66040[_0x7f34('0x29')]=qs[_0x7f34('0x29')](_0x1cfbd6[_0x7f34('0x3d')][_0x7f34('0x29')]);_0xd66040['offset']=qs[_0x7f34('0x27')](_0x1cfbd6['query'][_0x7f34('0x27')]);}_0xd66040[_0x7f34('0x46')]=qs['sort'](_0x1cfbd6[_0x7f34('0x3d')]['sort']);_0xd66040[_0x7f34('0x47')]=qs['filters'](_[_0x7f34('0x48')](_0x1cfbd6[_0x7f34('0x3d')],_0x3d2064['filters']),_0x264269);if(_0x1cfbd6[_0x7f34('0x3d')]['filter']){_0xd66040[_0x7f34('0x47')]=_[_0x7f34('0x49')](_0xd66040['where'],{'$or':_[_0x7f34('0x38')](_0x264269,function(_0xd268ad){if(_0xd268ad['type']!==_0x7f34('0x4a')){var _0x103ab1={};_0x103ab1[_0xd268ad[_0x7f34('0x35')]]={'$like':'%'+_0x1cfbd6['query'][_0x7f34('0x4b')]+'%'};return _0x103ab1;}})});}_0xd66040=_[_0x7f34('0x49')]({},_0xd66040,_0x1cfbd6[_0x7f34('0x4c')]);var _0x2ec352={'where':_0xd66040[_0x7f34('0x47')]};return db[_0x7f34('0x4d')][_0x7f34('0x2a')](_0x2ec352)[_0x7f34('0x30')](function(_0x1eaf66){_0x1f11ca[_0x7f34('0x2a')]=_0x1eaf66;if(_0x1cfbd6['query'][_0x7f34('0x4e')]){_0xd66040[_0x7f34('0x4f')]=[{'all':!![]}];}return db[_0x7f34('0x4d')][_0x7f34('0x50')](_0xd66040);})['then'](function(_0x4aad2e){_0x1f11ca[_0x7f34('0x51')]=_0x4aad2e;return _0x1f11ca;})[_0x7f34('0x30')](respondWithFilteredResult(_0x4bfaa6,_0xd66040))[_0x7f34('0x52')](handleError(_0x4bfaa6,null));};exports[_0x7f34('0x53')]=function(_0x19f8e3,_0x9383eb){var _0x45cc12={'raw':!![],'where':{'id':_0x19f8e3[_0x7f34('0x54')]['id']}},_0x2e6d45={};_0x2e6d45[_0x7f34('0x40')]=_[_0x7f34('0x3c')](db['FaxQueue'][_0x7f34('0x39')]);_0x2e6d45[_0x7f34('0x3d')]=_[_0x7f34('0x3c')](_0x19f8e3[_0x7f34('0x3d')]);_0x2e6d45[_0x7f34('0x3e')]=_['intersection'](_0x2e6d45['model'],_0x2e6d45[_0x7f34('0x3d')]);_0x45cc12[_0x7f34('0x42')]=_['intersection'](_0x2e6d45[_0x7f34('0x40')],qs[_0x7f34('0x41')](_0x19f8e3['query'][_0x7f34('0x41')]));_0x45cc12['attributes']=_0x45cc12[_0x7f34('0x42')]['length']?_0x45cc12[_0x7f34('0x42')]:_0x2e6d45[_0x7f34('0x40')];if(_0x19f8e3['query'][_0x7f34('0x4e')]){_0x45cc12[_0x7f34('0x4f')]=[{'all':!![]}];}_0x45cc12=_[_0x7f34('0x49')]({},_0x45cc12,_0x19f8e3['options']);return db[_0x7f34('0x4d')][_0x7f34('0x55')](_0x45cc12)[_0x7f34('0x30')](handleEntityNotFound(_0x9383eb,null))[_0x7f34('0x30')](respondWithResult(_0x9383eb,null))[_0x7f34('0x52')](handleError(_0x9383eb,null));};exports[_0x7f34('0x56')]=function(_0x1425f0,_0x9d3d62){return db[_0x7f34('0x4d')][_0x7f34('0x56')](_0x1425f0[_0x7f34('0x57')],{})[_0x7f34('0x30')](function(_0x37c424){var _0x4686e3=_0x1425f0[_0x7f34('0x58')][_0x7f34('0x59')]({'plain':!![]});if(!_0x4686e3)throw new Error(_0x7f34('0x5a'));if(_0x4686e3[_0x7f34('0x5b')]===_0x7f34('0x58')){var _0x40ba93=_0x37c424[_0x7f34('0x59')]({'plain':!![]});var _0x244a64=_0x7f34('0x32');return db['UserProfileSection']['find']({'where':{'name':_0x244a64,'userProfileId':_0x4686e3[_0x7f34('0x5c')]},'raw':!![]})[_0x7f34('0x30')](function(_0x5efbb9){if(_0x5efbb9&&_0x5efbb9[_0x7f34('0x5d')]===0x0){return db['UserProfileResource'][_0x7f34('0x56')]({'name':_0x40ba93[_0x7f34('0x35')],'resourceId':_0x40ba93['id'],'type':_0x5efbb9[_0x7f34('0x35')],'sectionId':_0x5efbb9['id']},{})[_0x7f34('0x30')](function(){return _0x37c424;});}else{return _0x37c424;}})['catch'](function(_0x396ada){logger[_0x7f34('0x5e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x396ada);throw _0x396ada;});}return _0x37c424;})['then'](respondWithResult(_0x9d3d62,0xc9))[_0x7f34('0x52')](handleError(_0x9d3d62,null));};exports[_0x7f34('0x2f')]=function(_0x1674cf,_0x25d733){if(_0x1674cf['body']['id']){delete _0x1674cf[_0x7f34('0x57')]['id'];}return db[_0x7f34('0x4d')][_0x7f34('0x55')]({'where':{'id':_0x1674cf['params']['id']}})[_0x7f34('0x30')](handleEntityNotFound(_0x25d733,null))[_0x7f34('0x30')](saveUpdates(_0x1674cf['body'],null))['then'](respondWithResult(_0x25d733,null))[_0x7f34('0x52')](handleError(_0x25d733,null));};exports[_0x7f34('0x31')]=function(_0x5547fe,_0x1e7844){return db[_0x7f34('0x4d')][_0x7f34('0x55')]({'where':{'id':_0x5547fe['params']['id']}})[_0x7f34('0x30')](handleEntityNotFound(_0x1e7844,null))[_0x7f34('0x30')](removeEntity(_0x1e7844,null))['catch'](handleError(_0x1e7844,null));};exports[_0x7f34('0x5f')]=function(_0x44e2d8,_0x26f081){return db[_0x7f34('0x4d')][_0x7f34('0x5f')]()[_0x7f34('0x30')](respondWithResult(_0x26f081,null))[_0x7f34('0x52')](handleError(_0x26f081,null));};exports[_0x7f34('0x60')]=function(_0x5228a3,_0x6580ec,_0x1ee4ac){var _0x4b353d={'raw':!![],'where':{}},_0x4dfed6={},_0x2dd3c;return db[_0x7f34('0x4d')][_0x7f34('0x61')]({'where':{'id':_0x5228a3[_0x7f34('0x54')]['id']}})[_0x7f34('0x30')](handleEntityNotFound(_0x6580ec,null))[_0x7f34('0x30')](function(_0x23f912){if(_0x23f912){_0x2dd3c=_0x23f912[_0x7f34('0x59')]({'plain':!![]});_0x4dfed6[_0x7f34('0x40')]=_[_0x7f34('0x3c')](db[_0x7f34('0x62')][_0x7f34('0x39')]);_0x4dfed6[_0x7f34('0x3d')]=_['keys'](_0x5228a3[_0x7f34('0x3d')]);_0x4dfed6[_0x7f34('0x3e')]=_['intersection'](_0x4dfed6['model'],_0x4dfed6[_0x7f34('0x3d')]);_0x4b353d[_0x7f34('0x42')]=_[_0x7f34('0x3f')](_0x4dfed6[_0x7f34('0x40')],qs['fields'](_0x5228a3['query'][_0x7f34('0x41')]));_0x4b353d[_0x7f34('0x42')]=_0x4b353d[_0x7f34('0x42')][_0x7f34('0x43')]?_0x4b353d[_0x7f34('0x42')]:_0x4dfed6[_0x7f34('0x40')];if(!_0x5228a3[_0x7f34('0x3d')][_0x7f34('0x44')]('nolimit')){_0x4b353d['limit']=qs['limit'](_0x5228a3[_0x7f34('0x3d')][_0x7f34('0x29')]);_0x4b353d[_0x7f34('0x27')]=qs[_0x7f34('0x27')](_0x5228a3[_0x7f34('0x3d')][_0x7f34('0x27')]);}_0x4b353d['order']=qs['sort'](_0x5228a3['query'][_0x7f34('0x63')]);_0x4b353d['where']=qs[_0x7f34('0x3e')](_[_0x7f34('0x48')](_0x5228a3[_0x7f34('0x3d')],_0x4dfed6[_0x7f34('0x3e')]));_0x4b353d['where']['FaxQueueId']=_0x23f912['id'];if(_0x5228a3['query'][_0x7f34('0x4b')]){_0x4b353d[_0x7f34('0x47')]=_['merge'](_0x4b353d[_0x7f34('0x47')],{'$or':_[_0x7f34('0x38')](_0x4b353d[_0x7f34('0x42')],function(_0x4f1d92){var _0x50c630={};_0x50c630[_0x4f1d92]={'$like':'%'+_0x5228a3['query']['filter']+'%'};return _0x50c630;})});}_0x4b353d=_['merge']({},_0x4b353d,_0x5228a3['options']);return db[_0x7f34('0x62')][_0x7f34('0x50')](_0x4b353d);}})[_0x7f34('0x30')](function(_0x32fbf7){if(_0x32fbf7){return db[_0x7f34('0x64')][_0x7f34('0x65')]({'where':{'id':_[_0x7f34('0x38')](_0x32fbf7,'UserId'),'role':_0x7f34('0x66')},'attributes':['id',_0x7f34('0x35'),_0x7f34('0x67'),_0x7f34('0x68'),_0x7f34('0x69')]});}})[_0x7f34('0x30')](function(_0x1cbe97){if(_0x1cbe97){return{'count':_0x1cbe97[_0x7f34('0x2a')],'rows':_[_0x7f34('0x38')](_0x1cbe97['rows'],function(_0x5788ba){return{'membername':_0x5788ba['name'],'UserId':_0x5788ba['id'],'queue_name':_0x2dd3c['name'],'FaxQueueId':_0x2dd3c['id'],'interface':util[_0x7f34('0x6a')](_0x7f34('0x6b'),_0x7f34('0x6c'),_0x5788ba[_0x7f34('0x35')]),'penalty':0x0,'paused':_0x5788ba['faxPause'],'createdAt':_0x5788ba[_0x7f34('0x69')],'updatedAt':_0x5788ba[_0x7f34('0x68')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x7f34('0x30')](respondWithFilteredResult(_0x6580ec,_0x4b353d))[_0x7f34('0x52')](handleError(_0x6580ec,null));};exports[_0x7f34('0x6d')]=function(_0x3db7da,_0x22896b,_0x401282){var _0x40f5f1={};var _0x406721={};var _0x55c1ed;var _0x3eb41c;return db['FaxQueue'][_0x7f34('0x61')]({'where':{'id':_0x3db7da[_0x7f34('0x54')]['id']}})[_0x7f34('0x30')](handleEntityNotFound(_0x22896b,null))[_0x7f34('0x30')](function(_0x43df12){if(_0x43df12){_0x55c1ed=_0x43df12;_0x406721[_0x7f34('0x40')]=_[_0x7f34('0x3c')](db[_0x7f34('0x6e')][_0x7f34('0x39')]);_0x406721[_0x7f34('0x3d')]=_[_0x7f34('0x3c')](_0x3db7da[_0x7f34('0x3d')]);_0x406721['filters']=_[_0x7f34('0x3f')](_0x406721[_0x7f34('0x40')],_0x406721[_0x7f34('0x3d')]);_0x40f5f1[_0x7f34('0x42')]=_[_0x7f34('0x3f')](_0x406721['model'],qs['fields'](_0x3db7da['query'][_0x7f34('0x41')]));_0x40f5f1[_0x7f34('0x42')]=_0x40f5f1[_0x7f34('0x42')]['length']?_0x40f5f1[_0x7f34('0x42')]:_0x406721[_0x7f34('0x40')];_0x40f5f1[_0x7f34('0x46')]=qs[_0x7f34('0x63')](_0x3db7da[_0x7f34('0x3d')][_0x7f34('0x63')]);_0x40f5f1[_0x7f34('0x47')]=qs[_0x7f34('0x3e')](_['pick'](_0x3db7da['query'],_0x406721[_0x7f34('0x3e')]));if(_0x3db7da[_0x7f34('0x3d')][_0x7f34('0x4b')]){_0x40f5f1[_0x7f34('0x47')]=_['merge'](_0x40f5f1[_0x7f34('0x47')],{'$or':_[_0x7f34('0x38')](_0x40f5f1[_0x7f34('0x42')],function(_0x224c48){var _0x5898d6={};_0x5898d6[_0x224c48]={'$like':'%'+_0x3db7da[_0x7f34('0x3d')][_0x7f34('0x4b')]+'%'};return _0x5898d6;})});}_0x40f5f1=_[_0x7f34('0x49')]({},_0x40f5f1,_0x3db7da[_0x7f34('0x4c')]);return _0x55c1ed[_0x7f34('0x6d')](_0x40f5f1);}})[_0x7f34('0x30')](function(_0x422dbe){if(_0x422dbe){_0x3eb41c=_0x422dbe['length'];if(!_0x3db7da[_0x7f34('0x3d')][_0x7f34('0x44')](_0x7f34('0x45'))){_0x40f5f1['limit']=qs[_0x7f34('0x29')](_0x3db7da[_0x7f34('0x3d')][_0x7f34('0x29')]);_0x40f5f1['offset']=qs[_0x7f34('0x27')](_0x3db7da[_0x7f34('0x3d')][_0x7f34('0x27')]);}return _0x55c1ed[_0x7f34('0x6d')](_0x40f5f1);}})[_0x7f34('0x30')](function(_0x58ac3c){if(_0x58ac3c){return _0x58ac3c?{'count':_0x3eb41c,'rows':_0x58ac3c}:null;}})[_0x7f34('0x30')](respondWithResult(_0x22896b,null))[_0x7f34('0x52')](handleError(_0x22896b,null));};exports[_0x7f34('0x6f')]=function(_0x2b6b11,_0x2a8f60,_0x2086e9){var _0x1d6f95=_0x2b6b11[_0x7f34('0x57')]['ids'];return db[_0x7f34('0x6e')][_0x7f34('0x50')]({'where':{'id':_0x1d6f95},'attributes':['id'],'include':[{'model':db[_0x7f34('0x64')],'as':'Agents','attributes':['id','name',_0x7f34('0x70'),_0x7f34('0x71'),_0x7f34('0x72')],'raw':!![]}]})[_0x7f34('0x30')](function(_0x3d98e0){if(_0x3d98e0){var _0x456c98=_[_0x7f34('0x73')](_0x3d98e0,function(_0x1641a8){var _0x1cd195=_0x1641a8[_0x7f34('0x59')]({'plain':!![]});return _0x1cd195[_0x7f34('0x74')];});return db[_0x7f34('0x4d')]['find']({'where':{'id':_0x2b6b11['params']['id']}})[_0x7f34('0x30')](function(_0x13c217){return db[_0x7f34('0x75')][_0x7f34('0x76')](function(_0xa02206){return _0x13c217[_0x7f34('0x6f')](_0x1d6f95,{'transaction':_0xa02206})[_0x7f34('0x30')](function(){return BPromise[_0x7f34('0x77')](_0x456c98,function(_0x19ea86){return db[_0x7f34('0x62')][_0x7f34('0x78')]({'where':{'UserId':_0x19ea86['id'],'FaxQueueId':_0x2b6b11[_0x7f34('0x54')]['id']},'transaction':_0xa02206});});})[_0x7f34('0x30')](function(){_0x456c98[_0x7f34('0x79')](function(_0x317de7){socket[_0x7f34('0x7a')](_0x7f34('0x7b'),{'UserId':_0x317de7['id'],'FaxQueueId':_0x13c217['id']});});});});});}})['then'](respondWithStatusCode(_0x2a8f60,null))[_0x7f34('0x52')](handleError(_0x2a8f60,null));};exports[_0x7f34('0x7c')]=function(_0x2f1e6b,_0x4f849b,_0x338470){return db['Team'][_0x7f34('0x50')]({'where':{'id':_0x2f1e6b[_0x7f34('0x3d')][_0x7f34('0x7d')]},'attributes':['id'],'include':[{'model':db[_0x7f34('0x64')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x7f34('0x30')](handleEntityNotFound(_0x4f849b,null))[_0x7f34('0x30')](function(_0x1c1270){var _0x3fe4e9=_['map'](_0x1c1270,'id');var _0x1a14b6=[];var _0x78a720=[];var _0x57057a=squel['select']();_0x57057a[_0x7f34('0x7e')](_0x7f34('0x7f'))[_0x7f34('0x80')](_0x7f34('0x81'),'tq')[_0x7f34('0x82')](_0x7f34('0x83'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x7f34('0x47')](_0x7f34('0x84'),_0x2f1e6b['params']['id']);for(var _0x18cb63=0x0;_0x18cb63<_0x1c1270[_0x7f34('0x43')];_0x18cb63+=0x1){let _0x28493b=_0x1c1270[_0x18cb63];for(var _0x8f92fb=0x0;_0x8f92fb<_0x28493b['Agents']['length'];_0x8f92fb+=0x1){let _0x1cd146=_0x28493b['Agents'][_0x8f92fb];var _0x4e75e3=_0x57057a[_0x7f34('0x85')]();_0x4e75e3[_0x7f34('0x47')](_0x7f34('0x86'),_0x1cd146['id']);_0x78a720[_0x7f34('0x87')](db[_0x7f34('0x75')][_0x7f34('0x3d')](_0x4e75e3[_0x7f34('0x88')](),{'type':db[_0x7f34('0x75')][_0x7f34('0x89')][_0x7f34('0x8a')]})[_0x7f34('0x30')](function(_0x154730){if(_0x154730[_0x7f34('0x43')]===0x1){return _0x1cd146['id'];}else{var _0x4c2da5=_[_0x7f34('0x8b')](_[_0x7f34('0x38')](_0x154730,_0x7f34('0x8c')),function(_0x37c18f){return _['includes'](_0x3fe4e9,_0x37c18f);});if(_0x4c2da5){return _0x1cd146['id'];}}}));}}return BPromise[_0x7f34('0x8d')](_0x78a720)[_0x7f34('0x30')](function(_0x280b44){_0x1a14b6=_(_0x1a14b6)[_0x7f34('0x8e')](_0x280b44)['compact']()[_0x7f34('0x8f')]();return db['FaxQueue'][_0x7f34('0x55')]({'where':{'id':_0x2f1e6b[_0x7f34('0x54')]['id']}})['then'](function(_0x4fb26e){return db['sequelize'][_0x7f34('0x76')](function(_0x3234b6){return _0x4fb26e[_0x7f34('0x7c')](_0x2f1e6b[_0x7f34('0x3d')][_0x7f34('0x7d')],{'transaction':_0x3234b6})['then'](function(){if(!_[_0x7f34('0x90')](_0x1a14b6)){return _0x4fb26e[_0x7f34('0x91')](_0x1a14b6,{'transaction':_0x3234b6});}})[_0x7f34('0x30')](function(){_0x1a14b6[_0x7f34('0x79')](function(_0xb87070){socket[_0x7f34('0x7a')](_0x7f34('0x92'),{'UserId':_0xb87070,'FaxQueueId':_0x4fb26e['id']});});});});});});})['then'](respondWithStatusCode(_0x4f849b,null))[_0x7f34('0x52')](handleError(_0x4f849b,null));};exports['addAgents']=function(_0x560d12,_0xb89c88,_0x5d830a){return db[_0x7f34('0x4d')][_0x7f34('0x55')]({'where':{'id':_0x560d12[_0x7f34('0x54')]['id']}})[_0x7f34('0x30')](handleEntityNotFound(_0xb89c88,null))[_0x7f34('0x30')](function(_0x43df68){if(_0x43df68){return _0x43df68[_0x7f34('0x93')](_0x560d12['body'][_0x7f34('0x7d')],_['omit'](_0x560d12[_0x7f34('0x57')],[_0x7f34('0x7d'),'id'])||{})[_0x7f34('0x94')](function(_0x32197e){for(var _0x50a4c2=0x0;_0x50a4c2<_0x560d12[_0x7f34('0x57')][_0x7f34('0x7d')][_0x7f34('0x43')];_0x50a4c2+=0x1){socket[_0x7f34('0x7a')](_0x7f34('0x7b'),{'UserId':Number(_0x560d12[_0x7f34('0x57')][_0x7f34('0x7d')][_0x50a4c2]),'FaxQueueId':Number(_0x560d12['params']['id'])});}return _0x32197e;});}})[_0x7f34('0x30')](respondWithResult(_0xb89c88,null))['catch'](handleError(_0xb89c88,null));};exports[_0x7f34('0x91')]=function(_0x3f5a00,_0x42a911,_0x30d406){return db[_0x7f34('0x4d')][_0x7f34('0x55')]({'where':{'id':_0x3f5a00[_0x7f34('0x54')]['id']}})['then'](handleEntityNotFound(_0x42a911,null))[_0x7f34('0x30')](function(_0x43ecae){if(_0x43ecae){return _0x43ecae[_0x7f34('0x91')](_0x3f5a00[_0x7f34('0x3d')][_0x7f34('0x7d')])[_0x7f34('0x30')](function(){if(_['isArray'](_0x3f5a00[_0x7f34('0x3d')][_0x7f34('0x7d')])){for(var _0x3ab06b=0x0;_0x3ab06b<_0x3f5a00[_0x7f34('0x3d')][_0x7f34('0x7d')][_0x7f34('0x43')];_0x3ab06b+=0x1){socket[_0x7f34('0x7a')](_0x7f34('0x92'),{'UserId':Number(_0x3f5a00[_0x7f34('0x3d')][_0x7f34('0x7d')][_0x3ab06b]),'FaxQueueId':Number(_0x3f5a00['params']['id'])});}}else{socket[_0x7f34('0x7a')](_0x7f34('0x92'),{'UserId':Number(_0x3f5a00[_0x7f34('0x3d')][_0x7f34('0x7d')]),'FaxQueueId':Number(_0x3f5a00['params']['id'])});}});}})[_0x7f34('0x30')](respondWithStatusCode(_0x42a911,null))[_0x7f34('0x52')](handleError(_0x42a911,null));};exports[_0x7f34('0x95')]=function(_0x2ad352,_0x2c42a7,_0x291b8a){var _0x5115fc={};var _0x270dc2={};var _0x118707;var _0x1bde2b;return db[_0x7f34('0x4d')][_0x7f34('0x61')]({'where':{'id':_0x2ad352[_0x7f34('0x54')]['id']}})[_0x7f34('0x30')](handleEntityNotFound(_0x2c42a7,null))['then'](function(_0x6cb220){if(_0x6cb220){_0x118707=_0x6cb220;_0x270dc2[_0x7f34('0x40')]=_[_0x7f34('0x3c')](db[_0x7f34('0x64')][_0x7f34('0x39')]);_0x270dc2['query']=_[_0x7f34('0x3c')](_0x2ad352['query']);_0x270dc2['filters']=_[_0x7f34('0x3f')](_0x270dc2[_0x7f34('0x40')],_0x270dc2[_0x7f34('0x3d')]);_0x5115fc['attributes']=_['intersection'](_0x270dc2['model'],qs['fields'](_0x2ad352[_0x7f34('0x3d')][_0x7f34('0x41')]));_0x5115fc[_0x7f34('0x42')]=_0x5115fc['attributes'][_0x7f34('0x43')]?_0x5115fc['attributes']:_0x270dc2[_0x7f34('0x40')];_0x5115fc[_0x7f34('0x46')]=qs[_0x7f34('0x63')](_0x2ad352['query']['sort']);_0x5115fc[_0x7f34('0x47')]=qs[_0x7f34('0x3e')](_[_0x7f34('0x48')](_0x2ad352[_0x7f34('0x3d')],_0x270dc2[_0x7f34('0x3e')]));if(_0x2ad352[_0x7f34('0x3d')][_0x7f34('0x4b')]){_0x5115fc['where']=_[_0x7f34('0x49')](_0x5115fc[_0x7f34('0x47')],{'$or':_[_0x7f34('0x38')](_0x5115fc[_0x7f34('0x42')],function(_0x5df3b7){var _0x535be6={};_0x535be6[_0x5df3b7]={'$like':'%'+_0x2ad352['query']['filter']+'%'};return _0x535be6;})});}_0x5115fc=_[_0x7f34('0x49')]({},_0x5115fc,_0x2ad352[_0x7f34('0x4c')]);return _0x118707['getAgents'](_0x5115fc);}})['then'](function(_0x1b02e1){if(_0x1b02e1){_0x1bde2b=_0x1b02e1['length'];if(!_0x2ad352['query'][_0x7f34('0x44')](_0x7f34('0x45'))){_0x5115fc[_0x7f34('0x29')]=qs[_0x7f34('0x29')](_0x2ad352['query']['limit']);_0x5115fc['offset']=qs[_0x7f34('0x27')](_0x2ad352[_0x7f34('0x3d')]['offset']);}return _0x118707[_0x7f34('0x95')](_0x5115fc);}})['then'](function(_0x2ed61c){if(_0x2ed61c){return _0x2ed61c?{'count':_0x1bde2b,'rows':_0x2ed61c}:null;}})['then'](respondWithResult(_0x2c42a7,null))[_0x7f34('0x52')](handleError(_0x2c42a7,null));};
\ No newline at end of file
+var _0x69a9=['getAgents','eml-format','rimraf','bluebird','mustache','util','path','sox','lodash','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./faxQueue.socket','register','sendStatus','status','json','offset','undefined','count','set','Content-Range','save','update','then','destroy','get','FaxQueues','end','error','stack','name','send','map','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','fields','length','nolimit','limit','sort','where','pick','filter','VIRTUAL','merge','options','FaxQueue','includeAll','include','findAll','catch','show','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','hasOwnProperty','order','UserFaxQueue','User','findAndCountAll','UserId','updatedAt','createdAt','format','SIP','getTeams','findOne','Team','addTeams','ids','Agents','online','voicePause','interface','flatMap','sequelize','transaction','forEach','emit','userFaxQueue:save','removeTeams','from','team_has_fax_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','toString','QueryTypes','TeamId','all','union','compact','value','isEmpty','removeAgents','userFaxQueue:remove','addAgents','omit','spread','isArray'];(function(_0x310da1,_0x390f65){var _0x333d17=function(_0x27d0f8){while(--_0x27d0f8){_0x310da1['push'](_0x310da1['shift']());}};_0x333d17(++_0x390f65);}(_0x69a9,0x10b));var _0x969a=function(_0x50f70b,_0x5f1594){_0x50f70b=_0x50f70b-0x0;var _0x298c33=_0x69a9[_0x50f70b];return _0x298c33;};'use strict';var emlformat=require(_0x969a('0x0'));var rimraf=require(_0x969a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x969a('0x2'));var Mustache=require(_0x969a('0x3'));var util=require(_0x969a('0x4'));var path=require(_0x969a('0x5'));var sox=require(_0x969a('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x969a('0x7'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x969a('0x8'));var deskjs=require(_0x969a('0x9'));var toCsv=require(_0x969a('0xa'));var querystring=require('querystring');var Papa=require(_0x969a('0xb'));var Redis=require(_0x969a('0xc'));var authService=require(_0x969a('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x969a('0xe'));var hardwareService=require(_0x969a('0xf'));var logger=require(_0x969a('0x10'))(_0x969a('0x11'));var utils=require(_0x969a('0x12'));var config=require(_0x969a('0x13'));var licenseUtil=require(_0x969a('0x14'));var db=require(_0x969a('0x15'))['db'];config['redis']=_[_0x969a('0x16')](config[_0x969a('0x17')],{'host':_0x969a('0x18'),'port':0x18eb});var socket=require(_0x969a('0x19'))(new Redis(config['redis']));require(_0x969a('0x1a'))[_0x969a('0x1b')](socket);function respondWithStatusCode(_0x5a37be,_0x1f1839){_0x1f1839=_0x1f1839||0xcc;return function(_0x5c906c){if(_0x5c906c){return _0x5a37be[_0x969a('0x1c')](_0x1f1839);}return _0x5a37be[_0x969a('0x1d')](_0x1f1839)['end']();};}function respondWithResult(_0xc4dfef,_0x2a086b){_0x2a086b=_0x2a086b||0xc8;return function(_0x4a91e7){if(_0x4a91e7){return _0xc4dfef[_0x969a('0x1d')](_0x2a086b)[_0x969a('0x1e')](_0x4a91e7);}};}function respondWithFilteredResult(_0x44655b,_0x3f8dc1){return function(_0x10788e){if(_0x10788e){var _0x1cb25f=typeof _0x3f8dc1[_0x969a('0x1f')]===_0x969a('0x20')&&typeof _0x3f8dc1['limit']==='undefined';var _0x38f448=_0x10788e[_0x969a('0x21')];var _0x47958b=_0x1cb25f?0x0:_0x3f8dc1[_0x969a('0x1f')];var _0x566823=_0x1cb25f?_0x10788e[_0x969a('0x21')]:_0x3f8dc1[_0x969a('0x1f')]+_0x3f8dc1['limit'];var _0x13c29c;if(_0x566823>=_0x38f448){_0x566823=_0x38f448;_0x13c29c=0xc8;}else{_0x13c29c=0xce;}_0x44655b['status'](_0x13c29c);return _0x44655b[_0x969a('0x22')](_0x969a('0x23'),_0x47958b+'-'+_0x566823+'/'+_0x38f448)[_0x969a('0x1e')](_0x10788e);}return null;};}function patchUpdates(_0x548959){return function(_0x4e75bc){try{jsonpatch['apply'](_0x4e75bc,_0x548959,!![]);}catch(_0x1955ec){return BPromise['reject'](_0x1955ec);}return _0x4e75bc[_0x969a('0x24')]();};}function saveUpdates(_0x3b5293,_0x268377){return function(_0x12fd95){if(_0x12fd95){return _0x12fd95[_0x969a('0x25')](_0x3b5293)[_0x969a('0x26')](function(_0x66318e){return _0x66318e;});}return null;};}function removeEntity(_0x26c52d,_0x497de2){return function(_0x180448){if(_0x180448){return _0x180448[_0x969a('0x27')]()[_0x969a('0x26')](function(){var _0x427eb6=_0x180448[_0x969a('0x28')]({'plain':!![]});var _0x2c7039=_0x969a('0x29');return db['UserProfileResource']['destroy']({'where':{'type':_0x2c7039,'resourceId':_0x427eb6['id']}})[_0x969a('0x26')](function(){return _0x180448;});})[_0x969a('0x26')](function(){_0x26c52d[_0x969a('0x1d')](0xcc)[_0x969a('0x2a')]();});}};}function handleEntityNotFound(_0x2c8848,_0x1949b5){return function(_0x4a6d46){if(!_0x4a6d46){_0x2c8848[_0x969a('0x1c')](0x194);}return _0x4a6d46;};}function handleError(_0x5c5042,_0x316ebe){_0x316ebe=_0x316ebe||0x1f4;return function(_0x41bb9f){logger[_0x969a('0x2b')](_0x41bb9f[_0x969a('0x2c')]);if(_0x41bb9f[_0x969a('0x2d')]){delete _0x41bb9f[_0x969a('0x2d')];}_0x5c5042[_0x969a('0x1d')](_0x316ebe)[_0x969a('0x2e')](_0x41bb9f);};}exports['index']=function(_0xf3a913,_0x4f1e4b){var _0x407839={},_0xee222c={},_0x5c31ef={'count':0x0,'rows':[]};var _0x24c8a9=_[_0x969a('0x2f')](db['FaxQueue'][_0x969a('0x30')],function(_0x162eae){return{'name':_0x162eae[_0x969a('0x31')],'type':_0x162eae[_0x969a('0x32')]['key']};});_0xee222c[_0x969a('0x33')]=_[_0x969a('0x2f')](_0x24c8a9,_0x969a('0x2d'));_0xee222c['query']=_[_0x969a('0x34')](_0xf3a913[_0x969a('0x35')]);_0xee222c[_0x969a('0x36')]=_[_0x969a('0x37')](_0xee222c[_0x969a('0x33')],_0xee222c[_0x969a('0x35')]);_0x407839[_0x969a('0x38')]=_[_0x969a('0x37')](_0xee222c[_0x969a('0x33')],qs[_0x969a('0x39')](_0xf3a913['query'][_0x969a('0x39')]));_0x407839[_0x969a('0x38')]=_0x407839[_0x969a('0x38')][_0x969a('0x3a')]?_0x407839[_0x969a('0x38')]:_0xee222c['model'];if(!_0xf3a913[_0x969a('0x35')]['hasOwnProperty'](_0x969a('0x3b'))){_0x407839['limit']=qs[_0x969a('0x3c')](_0xf3a913[_0x969a('0x35')]['limit']);_0x407839[_0x969a('0x1f')]=qs[_0x969a('0x1f')](_0xf3a913['query'][_0x969a('0x1f')]);}_0x407839['order']=qs['sort'](_0xf3a913[_0x969a('0x35')][_0x969a('0x3d')]);_0x407839[_0x969a('0x3e')]=qs[_0x969a('0x36')](_[_0x969a('0x3f')](_0xf3a913[_0x969a('0x35')],_0xee222c[_0x969a('0x36')]),_0x24c8a9);if(_0xf3a913[_0x969a('0x35')][_0x969a('0x40')]){_0x407839[_0x969a('0x3e')]=_['merge'](_0x407839[_0x969a('0x3e')],{'$or':_[_0x969a('0x2f')](_0x24c8a9,function(_0x79f29f){if(_0x79f29f[_0x969a('0x32')]!==_0x969a('0x41')){var _0x93c478={};_0x93c478[_0x79f29f[_0x969a('0x2d')]]={'$like':'%'+_0xf3a913[_0x969a('0x35')][_0x969a('0x40')]+'%'};return _0x93c478;}})});}_0x407839=_[_0x969a('0x42')]({},_0x407839,_0xf3a913[_0x969a('0x43')]);var _0x503236={'where':_0x407839['where']};return db[_0x969a('0x44')][_0x969a('0x21')](_0x503236)[_0x969a('0x26')](function(_0x2b114a){_0x5c31ef[_0x969a('0x21')]=_0x2b114a;if(_0xf3a913[_0x969a('0x35')][_0x969a('0x45')]){_0x407839[_0x969a('0x46')]=[{'all':!![]}];}return db[_0x969a('0x44')][_0x969a('0x47')](_0x407839);})[_0x969a('0x26')](function(_0x52f3df){_0x5c31ef['rows']=_0x52f3df;return _0x5c31ef;})[_0x969a('0x26')](respondWithFilteredResult(_0x4f1e4b,_0x407839))[_0x969a('0x48')](handleError(_0x4f1e4b,null));};exports[_0x969a('0x49')]=function(_0x37dcbb,_0x1b93e1){var _0x4b7d45={'raw':!![],'where':{'id':_0x37dcbb['params']['id']}},_0x4e0b7e={};_0x4e0b7e['model']=_[_0x969a('0x34')](db[_0x969a('0x44')]['rawAttributes']);_0x4e0b7e[_0x969a('0x35')]=_[_0x969a('0x34')](_0x37dcbb[_0x969a('0x35')]);_0x4e0b7e[_0x969a('0x36')]=_[_0x969a('0x37')](_0x4e0b7e[_0x969a('0x33')],_0x4e0b7e['query']);_0x4b7d45['attributes']=_[_0x969a('0x37')](_0x4e0b7e[_0x969a('0x33')],qs[_0x969a('0x39')](_0x37dcbb[_0x969a('0x35')][_0x969a('0x39')]));_0x4b7d45[_0x969a('0x38')]=_0x4b7d45[_0x969a('0x38')][_0x969a('0x3a')]?_0x4b7d45[_0x969a('0x38')]:_0x4e0b7e[_0x969a('0x33')];if(_0x37dcbb[_0x969a('0x35')][_0x969a('0x45')]){_0x4b7d45['include']=[{'all':!![]}];}_0x4b7d45=_['merge']({},_0x4b7d45,_0x37dcbb[_0x969a('0x43')]);return db[_0x969a('0x44')][_0x969a('0x4a')](_0x4b7d45)[_0x969a('0x26')](handleEntityNotFound(_0x1b93e1,null))[_0x969a('0x26')](respondWithResult(_0x1b93e1,null))[_0x969a('0x48')](handleError(_0x1b93e1,null));};exports[_0x969a('0x4b')]=function(_0xa3e4e5,_0x572994){return db[_0x969a('0x44')][_0x969a('0x4b')](_0xa3e4e5[_0x969a('0x4c')],{})[_0x969a('0x26')](function(_0x5388fe){var _0x44b167=_0xa3e4e5[_0x969a('0x4d')][_0x969a('0x28')]({'plain':!![]});if(!_0x44b167)throw new Error(_0x969a('0x4e'));if(_0x44b167[_0x969a('0x4f')]===_0x969a('0x4d')){var _0xee4570=_0x5388fe[_0x969a('0x28')]({'plain':!![]});var _0x42a56a=_0x969a('0x29');return db['UserProfileSection'][_0x969a('0x4a')]({'where':{'name':_0x42a56a,'userProfileId':_0x44b167['userProfileId']},'raw':!![]})[_0x969a('0x26')](function(_0x4ba16e){if(_0x4ba16e&&_0x4ba16e[_0x969a('0x50')]===0x0){return db['UserProfileResource'][_0x969a('0x4b')]({'name':_0xee4570[_0x969a('0x2d')],'resourceId':_0xee4570['id'],'type':_0x4ba16e[_0x969a('0x2d')],'sectionId':_0x4ba16e['id']},{})['then'](function(){return _0x5388fe;});}else{return _0x5388fe;}})['catch'](function(_0x381ac3){logger[_0x969a('0x2b')](_0x969a('0x51'),_0x381ac3);throw _0x381ac3;});}return _0x5388fe;})['then'](respondWithResult(_0x572994,0xc9))[_0x969a('0x48')](handleError(_0x572994,null));};exports[_0x969a('0x25')]=function(_0x28eee1,_0x5d28db){if(_0x28eee1[_0x969a('0x4c')]['id']){delete _0x28eee1[_0x969a('0x4c')]['id'];}return db['FaxQueue'][_0x969a('0x4a')]({'where':{'id':_0x28eee1[_0x969a('0x52')]['id']}})[_0x969a('0x26')](handleEntityNotFound(_0x5d28db,null))[_0x969a('0x26')](saveUpdates(_0x28eee1['body'],null))['then'](respondWithResult(_0x5d28db,null))['catch'](handleError(_0x5d28db,null));};exports['destroy']=function(_0x2ff7b0,_0x427dd3){return db[_0x969a('0x44')][_0x969a('0x4a')]({'where':{'id':_0x2ff7b0[_0x969a('0x52')]['id']}})[_0x969a('0x26')](handleEntityNotFound(_0x427dd3,null))[_0x969a('0x26')](removeEntity(_0x427dd3,null))[_0x969a('0x48')](handleError(_0x427dd3,null));};exports[_0x969a('0x53')]=function(_0x2f11d0,_0x199975){return db[_0x969a('0x44')][_0x969a('0x53')]()['then'](respondWithResult(_0x199975,null))[_0x969a('0x48')](handleError(_0x199975,null));};exports[_0x969a('0x54')]=function(_0x4aefe7,_0x1bad0e,_0x445cb1){var _0x93088b={'raw':!![],'where':{}},_0x2a9c72={},_0x4ace44;return db[_0x969a('0x44')]['findOne']({'where':{'id':_0x4aefe7[_0x969a('0x52')]['id']}})[_0x969a('0x26')](handleEntityNotFound(_0x1bad0e,null))[_0x969a('0x26')](function(_0x11d321){if(_0x11d321){_0x4ace44=_0x11d321[_0x969a('0x28')]({'plain':!![]});_0x2a9c72[_0x969a('0x33')]=_[_0x969a('0x34')](db['UserFaxQueue']['rawAttributes']);_0x2a9c72['query']=_[_0x969a('0x34')](_0x4aefe7[_0x969a('0x35')]);_0x2a9c72[_0x969a('0x36')]=_[_0x969a('0x37')](_0x2a9c72[_0x969a('0x33')],_0x2a9c72[_0x969a('0x35')]);_0x93088b['attributes']=_[_0x969a('0x37')](_0x2a9c72[_0x969a('0x33')],qs[_0x969a('0x39')](_0x4aefe7[_0x969a('0x35')][_0x969a('0x39')]));_0x93088b[_0x969a('0x38')]=_0x93088b['attributes'][_0x969a('0x3a')]?_0x93088b[_0x969a('0x38')]:_0x2a9c72[_0x969a('0x33')];if(!_0x4aefe7[_0x969a('0x35')][_0x969a('0x55')](_0x969a('0x3b'))){_0x93088b[_0x969a('0x3c')]=qs[_0x969a('0x3c')](_0x4aefe7['query']['limit']);_0x93088b[_0x969a('0x1f')]=qs[_0x969a('0x1f')](_0x4aefe7[_0x969a('0x35')][_0x969a('0x1f')]);}_0x93088b[_0x969a('0x56')]=qs[_0x969a('0x3d')](_0x4aefe7[_0x969a('0x35')]['sort']);_0x93088b[_0x969a('0x3e')]=qs[_0x969a('0x36')](_[_0x969a('0x3f')](_0x4aefe7[_0x969a('0x35')],_0x2a9c72[_0x969a('0x36')]));_0x93088b[_0x969a('0x3e')]['FaxQueueId']=_0x11d321['id'];if(_0x4aefe7[_0x969a('0x35')][_0x969a('0x40')]){_0x93088b[_0x969a('0x3e')]=_[_0x969a('0x42')](_0x93088b[_0x969a('0x3e')],{'$or':_[_0x969a('0x2f')](_0x93088b[_0x969a('0x38')],function(_0x41d728){var _0x33f405={};_0x33f405[_0x41d728]={'$like':'%'+_0x4aefe7['query']['filter']+'%'};return _0x33f405;})});}_0x93088b=_['merge']({},_0x93088b,_0x4aefe7[_0x969a('0x43')]);return db[_0x969a('0x57')][_0x969a('0x47')](_0x93088b);}})[_0x969a('0x26')](function(_0x3aad73){if(_0x3aad73){return db[_0x969a('0x58')][_0x969a('0x59')]({'where':{'id':_[_0x969a('0x2f')](_0x3aad73,_0x969a('0x5a')),'role':'agent'},'attributes':['id','name','faxPause',_0x969a('0x5b'),_0x969a('0x5c')]});}})[_0x969a('0x26')](function(_0x18e9df){if(_0x18e9df){return{'count':_0x18e9df[_0x969a('0x21')],'rows':_[_0x969a('0x2f')](_0x18e9df['rows'],function(_0x49c9c7){return{'membername':_0x49c9c7[_0x969a('0x2d')],'UserId':_0x49c9c7['id'],'queue_name':_0x4ace44[_0x969a('0x2d')],'FaxQueueId':_0x4ace44['id'],'interface':util[_0x969a('0x5d')]('%s/%s',_0x969a('0x5e'),_0x49c9c7[_0x969a('0x2d')]),'penalty':0x0,'paused':_0x49c9c7['faxPause'],'createdAt':_0x49c9c7[_0x969a('0x5c')],'updatedAt':_0x49c9c7[_0x969a('0x5b')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x969a('0x26')](respondWithFilteredResult(_0x1bad0e,_0x93088b))[_0x969a('0x48')](handleError(_0x1bad0e,null));};exports[_0x969a('0x5f')]=function(_0x17a6ac,_0x30df70,_0x1a050e){var _0xbee3a5={};var _0x17daf0={};var _0x133540;var _0x1676fc;return db[_0x969a('0x44')][_0x969a('0x60')]({'where':{'id':_0x17a6ac[_0x969a('0x52')]['id']}})['then'](handleEntityNotFound(_0x30df70,null))[_0x969a('0x26')](function(_0x24bb80){if(_0x24bb80){_0x133540=_0x24bb80;_0x17daf0[_0x969a('0x33')]=_[_0x969a('0x34')](db[_0x969a('0x61')][_0x969a('0x30')]);_0x17daf0[_0x969a('0x35')]=_[_0x969a('0x34')](_0x17a6ac[_0x969a('0x35')]);_0x17daf0[_0x969a('0x36')]=_[_0x969a('0x37')](_0x17daf0[_0x969a('0x33')],_0x17daf0[_0x969a('0x35')]);_0xbee3a5[_0x969a('0x38')]=_[_0x969a('0x37')](_0x17daf0[_0x969a('0x33')],qs[_0x969a('0x39')](_0x17a6ac[_0x969a('0x35')][_0x969a('0x39')]));_0xbee3a5[_0x969a('0x38')]=_0xbee3a5[_0x969a('0x38')]['length']?_0xbee3a5[_0x969a('0x38')]:_0x17daf0[_0x969a('0x33')];_0xbee3a5[_0x969a('0x56')]=qs[_0x969a('0x3d')](_0x17a6ac['query'][_0x969a('0x3d')]);_0xbee3a5[_0x969a('0x3e')]=qs['filters'](_[_0x969a('0x3f')](_0x17a6ac[_0x969a('0x35')],_0x17daf0[_0x969a('0x36')]));if(_0x17a6ac[_0x969a('0x35')][_0x969a('0x40')]){_0xbee3a5[_0x969a('0x3e')]=_[_0x969a('0x42')](_0xbee3a5[_0x969a('0x3e')],{'$or':_[_0x969a('0x2f')](_0xbee3a5[_0x969a('0x38')],function(_0x489a51){var _0x30f365={};_0x30f365[_0x489a51]={'$like':'%'+_0x17a6ac[_0x969a('0x35')]['filter']+'%'};return _0x30f365;})});}_0xbee3a5=_[_0x969a('0x42')]({},_0xbee3a5,_0x17a6ac[_0x969a('0x43')]);return _0x133540[_0x969a('0x5f')](_0xbee3a5);}})[_0x969a('0x26')](function(_0xbcfceb){if(_0xbcfceb){_0x1676fc=_0xbcfceb[_0x969a('0x3a')];if(!_0x17a6ac['query'][_0x969a('0x55')](_0x969a('0x3b'))){_0xbee3a5[_0x969a('0x3c')]=qs[_0x969a('0x3c')](_0x17a6ac[_0x969a('0x35')]['limit']);_0xbee3a5[_0x969a('0x1f')]=qs[_0x969a('0x1f')](_0x17a6ac[_0x969a('0x35')][_0x969a('0x1f')]);}return _0x133540[_0x969a('0x5f')](_0xbee3a5);}})[_0x969a('0x26')](function(_0x4c2abb){if(_0x4c2abb){return _0x4c2abb?{'count':_0x1676fc,'rows':_0x4c2abb}:null;}})[_0x969a('0x26')](respondWithResult(_0x30df70,null))['catch'](handleError(_0x30df70,null));};exports[_0x969a('0x62')]=function(_0x6a1221,_0x418dc8,_0x4d4326){var _0x275f6f=_0x6a1221[_0x969a('0x4c')][_0x969a('0x63')];return db[_0x969a('0x61')][_0x969a('0x47')]({'where':{'id':_0x275f6f},'attributes':['id'],'include':[{'model':db['User'],'as':_0x969a('0x64'),'attributes':['id',_0x969a('0x2d'),_0x969a('0x65'),_0x969a('0x66'),_0x969a('0x67')],'raw':!![]}]})[_0x969a('0x26')](function(_0x2dad33){if(_0x2dad33){var _0x25bfc5=_[_0x969a('0x68')](_0x2dad33,function(_0x1f0cc7){var _0x34a687=_0x1f0cc7[_0x969a('0x28')]({'plain':!![]});return _0x34a687['Agents'];});return db[_0x969a('0x44')][_0x969a('0x4a')]({'where':{'id':_0x6a1221[_0x969a('0x52')]['id']}})[_0x969a('0x26')](function(_0x5e81a7){return db[_0x969a('0x69')][_0x969a('0x6a')](function(_0x95da8f){return _0x5e81a7[_0x969a('0x62')](_0x275f6f,{'transaction':_0x95da8f})[_0x969a('0x26')](function(){return BPromise['each'](_0x25bfc5,function(_0x179da6){return db[_0x969a('0x57')]['findOrCreate']({'where':{'UserId':_0x179da6['id'],'FaxQueueId':_0x6a1221[_0x969a('0x52')]['id']},'transaction':_0x95da8f});});})[_0x969a('0x26')](function(){_0x25bfc5[_0x969a('0x6b')](function(_0xf870b6){socket[_0x969a('0x6c')](_0x969a('0x6d'),{'UserId':_0xf870b6['id'],'FaxQueueId':_0x5e81a7['id']});});});});});}})[_0x969a('0x26')](respondWithStatusCode(_0x418dc8,null))[_0x969a('0x48')](handleError(_0x418dc8,null));};exports[_0x969a('0x6e')]=function(_0x4581ff,_0x2af370,_0x1929c1){return db[_0x969a('0x61')][_0x969a('0x47')]({'where':{'id':_0x4581ff['query'][_0x969a('0x63')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x969a('0x64'),'attributes':['id'],'raw':!![]}]})[_0x969a('0x26')](handleEntityNotFound(_0x2af370,null))[_0x969a('0x26')](function(_0x511467){var _0x474235=_[_0x969a('0x2f')](_0x511467,'id');var _0x55da95=[];var _0x321335=[];var _0x479f86=squel['select']();_0x479f86['field']('tq.TeamId')[_0x969a('0x6f')](_0x969a('0x70'),'tq')[_0x969a('0x71')](_0x969a('0x72'),'ut',_0x969a('0x73'))[_0x969a('0x3e')]('FaxQueueId\x20=\x20?',_0x4581ff[_0x969a('0x52')]['id']);for(var _0x33f40c=0x0;_0x33f40c<_0x511467['length'];_0x33f40c+=0x1){let _0x15aef9=_0x511467[_0x33f40c];for(var _0xdf5650=0x0;_0xdf5650<_0x15aef9[_0x969a('0x64')][_0x969a('0x3a')];_0xdf5650+=0x1){let _0x428200=_0x15aef9[_0x969a('0x64')][_0xdf5650];var _0x370f67=_0x479f86[_0x969a('0x74')]();_0x370f67[_0x969a('0x3e')](_0x969a('0x75'),_0x428200['id']);_0x321335['push'](db[_0x969a('0x69')]['query'](_0x370f67[_0x969a('0x76')](),{'type':db[_0x969a('0x69')][_0x969a('0x77')]['SELECT']})[_0x969a('0x26')](function(_0x282b24){if(_0x282b24[_0x969a('0x3a')]===0x1){return _0x428200['id'];}else{var _0x1df27b=_['every'](_[_0x969a('0x2f')](_0x282b24,_0x969a('0x78')),function(_0x1d35d0){return _['includes'](_0x474235,_0x1d35d0);});if(_0x1df27b){return _0x428200['id'];}}}));}}return BPromise[_0x969a('0x79')](_0x321335)[_0x969a('0x26')](function(_0x4cdd1b){_0x55da95=_(_0x55da95)[_0x969a('0x7a')](_0x4cdd1b)[_0x969a('0x7b')]()[_0x969a('0x7c')]();return db[_0x969a('0x44')][_0x969a('0x4a')]({'where':{'id':_0x4581ff['params']['id']}})[_0x969a('0x26')](function(_0x4d8e9c){return db[_0x969a('0x69')][_0x969a('0x6a')](function(_0x25b281){return _0x4d8e9c[_0x969a('0x6e')](_0x4581ff[_0x969a('0x35')]['ids'],{'transaction':_0x25b281})['then'](function(){if(!_[_0x969a('0x7d')](_0x55da95)){return _0x4d8e9c[_0x969a('0x7e')](_0x55da95,{'transaction':_0x25b281});}})[_0x969a('0x26')](function(){_0x55da95['forEach'](function(_0x44d1e0){socket[_0x969a('0x6c')](_0x969a('0x7f'),{'UserId':_0x44d1e0,'FaxQueueId':_0x4d8e9c['id']});});});});});});})[_0x969a('0x26')](respondWithStatusCode(_0x2af370,null))[_0x969a('0x48')](handleError(_0x2af370,null));};exports[_0x969a('0x80')]=function(_0x516b46,_0xff3224,_0x1fe379){return db[_0x969a('0x44')][_0x969a('0x4a')]({'where':{'id':_0x516b46[_0x969a('0x52')]['id']}})['then'](handleEntityNotFound(_0xff3224,null))[_0x969a('0x26')](function(_0x28a53b){if(_0x28a53b){return _0x28a53b[_0x969a('0x80')](_0x516b46[_0x969a('0x4c')]['ids'],_[_0x969a('0x81')](_0x516b46[_0x969a('0x4c')],[_0x969a('0x63'),'id'])||{})[_0x969a('0x82')](function(_0x48b239){for(var _0xd643ad=0x0;_0xd643ad<_0x516b46[_0x969a('0x4c')]['ids']['length'];_0xd643ad+=0x1){socket[_0x969a('0x6c')](_0x969a('0x6d'),{'UserId':Number(_0x516b46['body']['ids'][_0xd643ad]),'FaxQueueId':Number(_0x516b46['params']['id'])});}return _0x48b239;});}})[_0x969a('0x26')](respondWithResult(_0xff3224,null))[_0x969a('0x48')](handleError(_0xff3224,null));};exports['removeAgents']=function(_0x51bab4,_0x1af245,_0x352a52){return db[_0x969a('0x44')][_0x969a('0x4a')]({'where':{'id':_0x51bab4[_0x969a('0x52')]['id']}})[_0x969a('0x26')](handleEntityNotFound(_0x1af245,null))[_0x969a('0x26')](function(_0x33c05c){if(_0x33c05c){return _0x33c05c['removeAgents'](_0x51bab4[_0x969a('0x35')]['ids'])[_0x969a('0x26')](function(){if(_[_0x969a('0x83')](_0x51bab4['query']['ids'])){for(var _0x2259fd=0x0;_0x2259fd<_0x51bab4[_0x969a('0x35')]['ids'][_0x969a('0x3a')];_0x2259fd+=0x1){socket[_0x969a('0x6c')](_0x969a('0x7f'),{'UserId':Number(_0x51bab4[_0x969a('0x35')][_0x969a('0x63')][_0x2259fd]),'FaxQueueId':Number(_0x51bab4[_0x969a('0x52')]['id'])});}}else{socket[_0x969a('0x6c')](_0x969a('0x7f'),{'UserId':Number(_0x51bab4[_0x969a('0x35')]['ids']),'FaxQueueId':Number(_0x51bab4[_0x969a('0x52')]['id'])});}});}})[_0x969a('0x26')](respondWithStatusCode(_0x1af245,null))[_0x969a('0x48')](handleError(_0x1af245,null));};exports[_0x969a('0x84')]=function(_0x503c55,_0x24f638,_0x3dd550){var _0x43589e={};var _0x4fef5e={};var _0x147db0;var _0x54335f;return db[_0x969a('0x44')][_0x969a('0x60')]({'where':{'id':_0x503c55[_0x969a('0x52')]['id']}})[_0x969a('0x26')](handleEntityNotFound(_0x24f638,null))[_0x969a('0x26')](function(_0x5cb0f3){if(_0x5cb0f3){_0x147db0=_0x5cb0f3;_0x4fef5e[_0x969a('0x33')]=_[_0x969a('0x34')](db[_0x969a('0x58')][_0x969a('0x30')]);_0x4fef5e[_0x969a('0x35')]=_[_0x969a('0x34')](_0x503c55[_0x969a('0x35')]);_0x4fef5e[_0x969a('0x36')]=_[_0x969a('0x37')](_0x4fef5e[_0x969a('0x33')],_0x4fef5e[_0x969a('0x35')]);_0x43589e[_0x969a('0x38')]=_['intersection'](_0x4fef5e[_0x969a('0x33')],qs[_0x969a('0x39')](_0x503c55[_0x969a('0x35')][_0x969a('0x39')]));_0x43589e['attributes']=_0x43589e[_0x969a('0x38')][_0x969a('0x3a')]?_0x43589e[_0x969a('0x38')]:_0x4fef5e[_0x969a('0x33')];_0x43589e['order']=qs[_0x969a('0x3d')](_0x503c55['query']['sort']);_0x43589e[_0x969a('0x3e')]=qs[_0x969a('0x36')](_['pick'](_0x503c55[_0x969a('0x35')],_0x4fef5e[_0x969a('0x36')]));if(_0x503c55[_0x969a('0x35')]['filter']){_0x43589e[_0x969a('0x3e')]=_['merge'](_0x43589e['where'],{'$or':_['map'](_0x43589e[_0x969a('0x38')],function(_0x38964a){var _0x3ac762={};_0x3ac762[_0x38964a]={'$like':'%'+_0x503c55[_0x969a('0x35')]['filter']+'%'};return _0x3ac762;})});}_0x43589e=_[_0x969a('0x42')]({},_0x43589e,_0x503c55[_0x969a('0x43')]);return _0x147db0[_0x969a('0x84')](_0x43589e);}})[_0x969a('0x26')](function(_0xc29e1a){if(_0xc29e1a){_0x54335f=_0xc29e1a[_0x969a('0x3a')];if(!_0x503c55[_0x969a('0x35')][_0x969a('0x55')](_0x969a('0x3b'))){_0x43589e[_0x969a('0x3c')]=qs[_0x969a('0x3c')](_0x503c55[_0x969a('0x35')][_0x969a('0x3c')]);_0x43589e['offset']=qs[_0x969a('0x1f')](_0x503c55[_0x969a('0x35')]['offset']);}return _0x147db0[_0x969a('0x84')](_0x43589e);}})[_0x969a('0x26')](function(_0xd4124d){if(_0xd4124d){return _0xd4124d?{'count':_0x54335f,'rows':_0xd4124d}:null;}})['then'](respondWithResult(_0x24f638,null))[_0x969a('0x48')](handleError(_0x24f638,null));};
\ No newline at end of file
index 729d477..f09dd55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e1a=['setMaxListeners','save','update','remove','exports','events','../../mysqldb'];(function(_0x137cd7,_0x1afa4b){var _0x284719=function(_0x42becc){while(--_0x42becc){_0x137cd7['push'](_0x137cd7['shift']());}};_0x284719(++_0x1afa4b);}(_0x9e1a,0xd7));var _0xa9e1=function(_0x5e293f,_0x1152e9){_0x5e293f=_0x5e293f-0x0;var _0xb84f64=_0x9e1a[_0x5e293f];return _0xb84f64;};'use strict';var EventEmitter=require(_0xa9e1('0x0'));var FaxQueue=require(_0xa9e1('0x1'))['db']['FaxQueue'];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0xa9e1('0x2')](0x0);var events={'afterCreate':_0xa9e1('0x3'),'afterUpdate':_0xa9e1('0x4'),'afterDestroy':_0xa9e1('0x5')};function emitEvent(_0x591ab9){return function(_0x142769,_0x437c30,_0x2185fb){FaxQueueEvents['emit'](_0x591ab9+':'+_0x142769['id'],_0x142769);FaxQueueEvents['emit'](_0x591ab9,_0x142769);_0x2185fb(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxQueue['hook'](e,emitEvent(event));}}module[_0xa9e1('0x6')]=FaxQueueEvents;
\ No newline at end of file
+var _0x093d=['save','remove','emit','hook','events','../../mysqldb','FaxQueue','setMaxListeners'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x093d,0xe4));var _0xd093=function(_0x260e4b,_0x54668d){_0x260e4b=_0x260e4b-0x0;var _0x18dfba=_0x093d[_0x260e4b];return _0x18dfba;};'use strict';var EventEmitter=require(_0xd093('0x0'));var FaxQueue=require(_0xd093('0x1'))['db'][_0xd093('0x2')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0xd093('0x3')](0x0);var events={'afterCreate':_0xd093('0x4'),'afterUpdate':'update','afterDestroy':_0xd093('0x5')};function emitEvent(_0x23bb7e){return function(_0x52ff31,_0x3732d8,_0xa83dab){FaxQueueEvents[_0xd093('0x6')](_0x23bb7e+':'+_0x52ff31['id'],_0x52ff31);FaxQueueEvents[_0xd093('0x6')](_0x23bb7e,_0x52ff31);_0xa83dab(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxQueue[_0xd093('0x7')](e,emitEvent(event));}}module['exports']=FaxQueueEvents;
\ No newline at end of file
index 91e213e..820d881 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83a8=['rimraf','./faxQueue.attributes','exports','define','FaxQueue','fax_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x4396dd,_0x5263ee){var _0x3b401c=function(_0x52fdd0){while(--_0x52fdd0){_0x4396dd['push'](_0x4396dd['shift']());}};_0x3b401c(++_0x5263ee);}(_0x83a8,0x1e7));var _0x883a=function(_0x356a18,_0x53d62d){_0x356a18=_0x356a18-0x0;var _0x1e6919=_0x83a8[_0x356a18];return _0x1e6919;};'use strict';var _=require(_0x883a('0x0'));var util=require(_0x883a('0x1'));var logger=require(_0x883a('0x2'))(_0x883a('0x3'));var moment=require(_0x883a('0x4'));var BPromise=require(_0x883a('0x5'));var rp=require(_0x883a('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x883a('0x7'));var config=require('../../config/environment');var attributes=require(_0x883a('0x8'));module[_0x883a('0x9')]=function(_0x507bbc,_0x5691b6){return _0x507bbc[_0x883a('0xa')](_0x883a('0xb'),attributes,{'tableName':_0x883a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdaf7=['./faxQueue.attributes','exports','define','FaxQueue','fax_queues','lodash','../../config/logger','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xdaf7,0xd1));var _0x7daf=function(_0x80e50,_0x58e08e){_0x80e50=_0x80e50-0x0;var _0x3146d7=_0xdaf7[_0x80e50];return _0x3146d7;};'use strict';var _=require(_0x7daf('0x0'));var util=require('util');var logger=require(_0x7daf('0x1'))('api');var moment=require(_0x7daf('0x2'));var BPromise=require(_0x7daf('0x3'));var rp=require(_0x7daf('0x4'));var fs=require('fs');var path=require(_0x7daf('0x5'));var rimraf=require('rimraf');var config=require(_0x7daf('0x6'));var attributes=require(_0x7daf('0x7'));module[_0x7daf('0x8')]=function(_0x5ae904,_0x48891d){return _0x5ae904[_0x7daf('0x9')](_0x7daf('0xa'),attributes,{'tableName':_0x7daf('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9857478..03f541c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x113c=['options','raw','limit','include','map','model','attributes','catch','find','where','ShowFaxQueue','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','request','then','info','FaxQueue,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result','GetFaxQueue','FaxQueue','findAll'];(function(_0x178d67,_0x592d26){var _0x54c890=function(_0x3efa6a){while(--_0x3efa6a){_0x178d67['push'](_0x178d67['shift']());}};_0x54c890(++_0x592d26);}(_0x113c,0x17c));var _0xc113=function(_0x3402f4,_0x7e0d95){_0x3402f4=_0x3402f4-0x0;var _0x29ee7b=_0x113c[_0x3402f4];return _0x29ee7b;};'use strict';var _=require(_0xc113('0x0'));var util=require(_0xc113('0x1'));var moment=require(_0xc113('0x2'));var BPromise=require(_0xc113('0x3'));var rs=require(_0xc113('0x4'));var fs=require('fs');var Redis=require(_0xc113('0x5'));var db=require(_0xc113('0x6'))['db'];var utils=require(_0xc113('0x7'));var logger=require(_0xc113('0x8'))(_0xc113('0x9'));var config=require(_0xc113('0xa'));var jayson=require(_0xc113('0xb'));var client=jayson[_0xc113('0xc')]['http']({'port':0x232a});config[_0xc113('0xd')]=_[_0xc113('0xe')](config[_0xc113('0xd')],{'host':_0xc113('0xf'),'port':0x18eb});var socket=require(_0xc113('0x10'))(new Redis(config['redis']));require('./faxQueue.socket')['register'](socket);function respondWithRpcPromise(_0xa937b1,_0x176506,_0x156cdd){return new BPromise(function(_0x2ad53c,_0x3d305f){return client[_0xc113('0x11')](_0xa937b1,_0x156cdd)[_0xc113('0x12')](function(_0x464288){logger[_0xc113('0x13')](_0xc113('0x14'),_0x176506,'request\x20sent');logger[_0xc113('0x15')]('FaxQueue,\x20%s,\x20%s,\x20%s',_0x176506,_0xc113('0x16'),JSON[_0xc113('0x17')](_0x464288));if(_0x464288[_0xc113('0x18')]){if(_0x464288[_0xc113('0x18')]['code']===0x1f4){logger['error'](_0xc113('0x14'),_0x176506,_0x464288['error']['message']);return _0x3d305f(_0x464288[_0xc113('0x18')][_0xc113('0x19')]);}logger[_0xc113('0x18')](_0xc113('0x14'),_0x176506,_0x464288[_0xc113('0x18')][_0xc113('0x19')]);return _0x2ad53c(_0x464288['error'][_0xc113('0x19')]);}else{logger[_0xc113('0x13')]('FaxQueue,\x20%s,\x20%s',_0x176506,'request\x20sent');_0x2ad53c(_0x464288[_0xc113('0x1a')][_0xc113('0x19')]);}})['catch'](function(_0x3636bd){logger[_0xc113('0x18')]('FaxQueue,\x20%s,\x20%s',_0x176506,_0x3636bd);_0x3d305f(_0x3636bd);});});}exports[_0xc113('0x1b')]=function(_0x3c4cbd){var _0x16840e=this;return new Promise(function(_0x2abcc6,_0x4cce6f){return db[_0xc113('0x1c')][_0xc113('0x1d')]({'raw':_0x3c4cbd[_0xc113('0x1e')]?_0x3c4cbd['options'][_0xc113('0x1f')]===undefined?!![]:![]:!![],'where':_0x3c4cbd[_0xc113('0x1e')]?_0x3c4cbd[_0xc113('0x1e')]['where']||null:null,'attributes':_0x3c4cbd[_0xc113('0x1e')]?_0x3c4cbd[_0xc113('0x1e')]['attributes']||null:null,'limit':_0x3c4cbd[_0xc113('0x1e')]?_0x3c4cbd['options'][_0xc113('0x20')]||null:null,'include':_0x3c4cbd[_0xc113('0x1e')]?_0x3c4cbd[_0xc113('0x1e')][_0xc113('0x21')]?_[_0xc113('0x22')](_0x3c4cbd[_0xc113('0x1e')]['include'],function(_0x3c8ee8){return{'model':db[_0x3c8ee8[_0xc113('0x23')]],'as':_0x3c8ee8['as'],'attributes':_0x3c8ee8[_0xc113('0x24')],'include':_0x3c8ee8[_0xc113('0x21')]?_['map'](_0x3c8ee8['include'],function(_0x3f6d35){return{'model':db[_0x3f6d35[_0xc113('0x23')]],'as':_0x3f6d35['as'],'attributes':_0x3f6d35[_0xc113('0x24')],'include':_0x3f6d35[_0xc113('0x21')]?_['map'](_0x3f6d35[_0xc113('0x21')],function(_0x2a2e3c){return{'model':db[_0x2a2e3c[_0xc113('0x23')]],'as':_0x2a2e3c['as'],'attributes':_0x2a2e3c['attributes']};}):[]};}):[]};}):[]:[]})[_0xc113('0x12')](function(_0x488a17){logger[_0xc113('0x13')](_0xc113('0x1b'),_0x3c4cbd);logger[_0xc113('0x15')]('GetFaxQueue',_0x3c4cbd,JSON[_0xc113('0x17')](_0x488a17));_0x2abcc6(_0x488a17);})[_0xc113('0x25')](function(_0x5f2909){logger[_0xc113('0x18')](_0xc113('0x1b'),_0x5f2909[_0xc113('0x19')],_0x3c4cbd);_0x4cce6f(_0x16840e[_0xc113('0x18')](0x1f4,_0x5f2909[_0xc113('0x19')]));});});};exports['ShowFaxQueue']=function(_0x23fff5){var _0x5281c1=this;return new Promise(function(_0x2b0619,_0x308edb){return db[_0xc113('0x1c')][_0xc113('0x26')]({'raw':_0x23fff5[_0xc113('0x1e')]?_0x23fff5[_0xc113('0x1e')][_0xc113('0x1f')]===undefined?!![]:![]:!![],'where':_0x23fff5[_0xc113('0x1e')]?_0x23fff5[_0xc113('0x1e')][_0xc113('0x27')]||null:null,'attributes':_0x23fff5[_0xc113('0x1e')]?_0x23fff5['options'][_0xc113('0x24')]||null:null,'include':_0x23fff5[_0xc113('0x1e')]?_0x23fff5['options'][_0xc113('0x21')]?_[_0xc113('0x22')](_0x23fff5[_0xc113('0x1e')]['include'],function(_0x38e245){return{'model':db[_0x38e245[_0xc113('0x23')]],'as':_0x38e245['as'],'attributes':_0x38e245[_0xc113('0x24')],'include':_0x38e245[_0xc113('0x21')]?_[_0xc113('0x22')](_0x38e245[_0xc113('0x21')],function(_0x4f8559){return{'model':db[_0x4f8559[_0xc113('0x23')]],'as':_0x4f8559['as'],'attributes':_0x4f8559[_0xc113('0x24')],'include':_0x4f8559[_0xc113('0x21')]?_[_0xc113('0x22')](_0x4f8559[_0xc113('0x21')],function(_0x47ddd1){return{'model':db[_0x47ddd1[_0xc113('0x23')]],'as':_0x47ddd1['as'],'attributes':_0x47ddd1[_0xc113('0x24')]};}):[]};}):[]};}):[]:[]})[_0xc113('0x12')](function(_0x264cd2){logger[_0xc113('0x13')](_0xc113('0x28'),_0x23fff5);logger['debug']('ShowFaxQueue',_0x23fff5,JSON[_0xc113('0x17')](_0x264cd2));_0x2b0619(_0x264cd2);})[_0xc113('0x25')](function(_0xb5b5b7){logger[_0xc113('0x18')](_0xc113('0x28'),_0xb5b5b7[_0xc113('0x19')],_0x23fff5);_0x308edb(_0x5281c1[_0xc113('0x18')](0x1f4,_0xb5b5b7['message']));});});};
\ No newline at end of file
+var _0x743c=['limit','include','map','model','ShowFaxQueue','find','lodash','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','redis','localhost','socket.io-emitter','./faxQueue.socket','register','request','then','info','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','code','error','FaxQueue,\x20%s,\x20%s','message','result','catch','GetFaxQueue','FaxQueue','findAll','options','raw','where','attributes'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0x743c,0xd8));var _0xc743=function(_0x5657bb,_0x2f1219){_0x5657bb=_0x5657bb-0x0;var _0x2a5ecb=_0x743c[_0x5657bb];return _0x2a5ecb;};'use strict';var _=require(_0xc743('0x0'));var util=require('util');var moment=require(_0xc743('0x1'));var BPromise=require(_0xc743('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc743('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xc743('0x4'));var logger=require(_0xc743('0x5'))(_0xc743('0x6'));var config=require(_0xc743('0x7'));var jayson=require(_0xc743('0x8'));var client=jayson['client'][_0xc743('0x9')]({'port':0x232a});config['redis']=_[_0xc743('0xa')](config[_0xc743('0xb')],{'host':_0xc743('0xc'),'port':0x18eb});var socket=require(_0xc743('0xd'))(new Redis(config[_0xc743('0xb')]));require(_0xc743('0xe'))[_0xc743('0xf')](socket);function respondWithRpcPromise(_0x5927a0,_0x56cc14,_0x450ae2){return new BPromise(function(_0x5bd49f,_0x5d12df){return client[_0xc743('0x10')](_0x5927a0,_0x450ae2)[_0xc743('0x11')](function(_0x587e80){logger[_0xc743('0x12')]('FaxQueue,\x20%s,\x20%s',_0x56cc14,_0xc743('0x13'));logger[_0xc743('0x14')](_0xc743('0x15'),_0x56cc14,'request\x20sent',JSON[_0xc743('0x16')](_0x587e80));if(_0x587e80['error']){if(_0x587e80['error'][_0xc743('0x17')]===0x1f4){logger[_0xc743('0x18')](_0xc743('0x19'),_0x56cc14,_0x587e80[_0xc743('0x18')][_0xc743('0x1a')]);return _0x5d12df(_0x587e80[_0xc743('0x18')][_0xc743('0x1a')]);}logger[_0xc743('0x18')](_0xc743('0x19'),_0x56cc14,_0x587e80[_0xc743('0x18')]['message']);return _0x5bd49f(_0x587e80[_0xc743('0x18')][_0xc743('0x1a')]);}else{logger['info']('FaxQueue,\x20%s,\x20%s',_0x56cc14,_0xc743('0x13'));_0x5bd49f(_0x587e80[_0xc743('0x1b')]['message']);}})[_0xc743('0x1c')](function(_0x4aedc4){logger[_0xc743('0x18')](_0xc743('0x19'),_0x56cc14,_0x4aedc4);_0x5d12df(_0x4aedc4);});});}exports[_0xc743('0x1d')]=function(_0x5497c9){var _0x3f382d=this;return new Promise(function(_0x587823,_0x25e961){return db[_0xc743('0x1e')][_0xc743('0x1f')]({'raw':_0x5497c9[_0xc743('0x20')]?_0x5497c9['options'][_0xc743('0x21')]===undefined?!![]:![]:!![],'where':_0x5497c9[_0xc743('0x20')]?_0x5497c9[_0xc743('0x20')][_0xc743('0x22')]||null:null,'attributes':_0x5497c9[_0xc743('0x20')]?_0x5497c9[_0xc743('0x20')][_0xc743('0x23')]||null:null,'limit':_0x5497c9[_0xc743('0x20')]?_0x5497c9['options'][_0xc743('0x24')]||null:null,'include':_0x5497c9['options']?_0x5497c9['options'][_0xc743('0x25')]?_[_0xc743('0x26')](_0x5497c9['options'][_0xc743('0x25')],function(_0xd75958){return{'model':db[_0xd75958['model']],'as':_0xd75958['as'],'attributes':_0xd75958[_0xc743('0x23')],'include':_0xd75958[_0xc743('0x25')]?_[_0xc743('0x26')](_0xd75958[_0xc743('0x25')],function(_0x65985f){return{'model':db[_0x65985f[_0xc743('0x27')]],'as':_0x65985f['as'],'attributes':_0x65985f[_0xc743('0x23')],'include':_0x65985f[_0xc743('0x25')]?_[_0xc743('0x26')](_0x65985f[_0xc743('0x25')],function(_0x125857){return{'model':db[_0x125857[_0xc743('0x27')]],'as':_0x125857['as'],'attributes':_0x125857['attributes']};}):[]};}):[]};}):[]:[]})[_0xc743('0x11')](function(_0x1679e2){logger[_0xc743('0x12')](_0xc743('0x1d'),_0x5497c9);logger[_0xc743('0x14')](_0xc743('0x1d'),_0x5497c9,JSON[_0xc743('0x16')](_0x1679e2));_0x587823(_0x1679e2);})[_0xc743('0x1c')](function(_0x74d753){logger[_0xc743('0x18')](_0xc743('0x1d'),_0x74d753[_0xc743('0x1a')],_0x5497c9);_0x25e961(_0x3f382d[_0xc743('0x18')](0x1f4,_0x74d753['message']));});});};exports[_0xc743('0x28')]=function(_0x32851c){var _0x479365=this;return new Promise(function(_0x2b46d9,_0x57ed4c){return db[_0xc743('0x1e')][_0xc743('0x29')]({'raw':_0x32851c[_0xc743('0x20')]?_0x32851c['options'][_0xc743('0x21')]===undefined?!![]:![]:!![],'where':_0x32851c['options']?_0x32851c['options']['where']||null:null,'attributes':_0x32851c['options']?_0x32851c[_0xc743('0x20')][_0xc743('0x23')]||null:null,'include':_0x32851c[_0xc743('0x20')]?_0x32851c[_0xc743('0x20')][_0xc743('0x25')]?_['map'](_0x32851c[_0xc743('0x20')][_0xc743('0x25')],function(_0x465b59){return{'model':db[_0x465b59[_0xc743('0x27')]],'as':_0x465b59['as'],'attributes':_0x465b59[_0xc743('0x23')],'include':_0x465b59['include']?_['map'](_0x465b59[_0xc743('0x25')],function(_0x4fc641){return{'model':db[_0x4fc641[_0xc743('0x27')]],'as':_0x4fc641['as'],'attributes':_0x4fc641[_0xc743('0x23')],'include':_0x4fc641[_0xc743('0x25')]?_[_0xc743('0x26')](_0x4fc641['include'],function(_0x4faf00){return{'model':db[_0x4faf00[_0xc743('0x27')]],'as':_0x4faf00['as'],'attributes':_0x4faf00[_0xc743('0x23')]};}):[]};}):[]};}):[]:[]})[_0xc743('0x11')](function(_0x405fb8){logger[_0xc743('0x12')](_0xc743('0x28'),_0x32851c);logger[_0xc743('0x14')](_0xc743('0x28'),_0x32851c,JSON['stringify'](_0x405fb8));_0x2b46d9(_0x405fb8);})['catch'](function(_0x4623aa){logger[_0xc743('0x18')]('ShowFaxQueue',_0x4623aa[_0xc743('0x1a')],_0x32851c);_0x57ed4c(_0x479365[_0xc743('0x18')](0x1f4,_0x4623aa['message']));});});};
\ No newline at end of file
index 5863e79..fae4e39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd85=['removeListener','register','save','remove','update','emit'];(function(_0x1b385c,_0x38b32a){var _0x217267=function(_0x18e21f){while(--_0x18e21f){_0x1b385c['push'](_0x1b385c['shift']());}};_0x217267(++_0x38b32a);}(_0xbd85,0x1f4));var _0x5bd8=function(_0xd8aad0,_0x4da2cd){_0xd8aad0=_0xd8aad0-0x0;var _0x570860=_0xbd85[_0xd8aad0];return _0x570860;};'use strict';var FaxQueueEvents=require('./faxQueue.events');var events=[_0x5bd8('0x0'),_0x5bd8('0x1'),_0x5bd8('0x2')];function createListener(_0x58b48e,_0xae496a){return function(_0x5c3429){_0xae496a[_0x5bd8('0x3')](_0x58b48e,_0x5c3429);};}function removeListener(_0x1b99fb,_0x51872e){return function(){FaxQueueEvents[_0x5bd8('0x4')](_0x1b99fb,_0x51872e);};}exports[_0x5bd8('0x5')]=function(_0x991c18){for(var _0x7a809d=0x0,_0x20d213=events['length'];_0x7a809d<_0x20d213;_0x7a809d++){var _0x4368c8=events[_0x7a809d];var _0x55fd98=createListener('faxQueue:'+_0x4368c8,_0x991c18);FaxQueueEvents['on'](_0x4368c8,_0x55fd98);}};
\ No newline at end of file
+var _0xc80f=['./faxQueue.events','save','remove','update','emit','removeListener','register','length','faxQueue:'];(function(_0x146ad3,_0x3214f5){var _0x3cd146=function(_0xd83793){while(--_0xd83793){_0x146ad3['push'](_0x146ad3['shift']());}};_0x3cd146(++_0x3214f5);}(_0xc80f,0x7e));var _0xfc80=function(_0x41ef6b,_0x40075e){_0x41ef6b=_0x41ef6b-0x0;var _0x216bfb=_0xc80f[_0x41ef6b];return _0x216bfb;};'use strict';var FaxQueueEvents=require(_0xfc80('0x0'));var events=[_0xfc80('0x1'),_0xfc80('0x2'),_0xfc80('0x3')];function createListener(_0x86534b,_0x24aeda){return function(_0x321812){_0x24aeda[_0xfc80('0x4')](_0x86534b,_0x321812);};}function removeListener(_0xc869c9,_0x3542d7){return function(){FaxQueueEvents[_0xfc80('0x5')](_0xc869c9,_0x3542d7);};}exports[_0xfc80('0x6')]=function(_0x5d4560){for(var _0xd96921=0x0,_0x58022e=events[_0xfc80('0x7')];_0xd96921<_0x58022e;_0xd96921++){var _0x394e73=events[_0xd96921];var _0x78a674=createListener(_0xfc80('0x8')+_0x394e73,_0x5d4560);FaxQueueEvents['on'](_0x394e73,_0x78a674);}};
\ No newline at end of file
index ba28861..d551df6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f0e=['destroy','/:id/teams','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueue.controller','get','/describe','isAuthenticated','/:id','show','/:id/members','getMembers','getTeams','post','create','/:id/users','put','delete'];(function(_0x5b5869,_0x225b09){var _0x1e5c26=function(_0x3b0c19){while(--_0x3b0c19){_0x5b5869['push'](_0x5b5869['shift']());}};_0x1e5c26(++_0x225b09);}(_0x9f0e,0x116));var _0xe9f0=function(_0x141494,_0xf33278){_0x141494=_0x141494-0x0;var _0x7d78fb=_0x9f0e[_0x141494];return _0x7d78fb;};'use strict';var multer=require(_0xe9f0('0x0'));var util=require(_0xe9f0('0x1'));var path=require(_0xe9f0('0x2'));var timeout=require(_0xe9f0('0x3'));var express=require(_0xe9f0('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xe9f0('0x5'));var interaction=require(_0xe9f0('0x6'));var config=require(_0xe9f0('0x7'));var controller=require(_0xe9f0('0x8'));router[_0xe9f0('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xe9f0('0x9')](_0xe9f0('0xa'),auth[_0xe9f0('0xb')](),controller['describe']);router[_0xe9f0('0x9')](_0xe9f0('0xc'),auth[_0xe9f0('0xb')](),controller[_0xe9f0('0xd')]);router[_0xe9f0('0x9')](_0xe9f0('0xe'),auth[_0xe9f0('0xb')](),controller[_0xe9f0('0xf')]);router[_0xe9f0('0x9')]('/:id/teams',auth[_0xe9f0('0xb')](),controller[_0xe9f0('0x10')]);router[_0xe9f0('0x9')]('/:id/users',auth[_0xe9f0('0xb')](),controller['getAgents']);router[_0xe9f0('0x11')]('/',auth[_0xe9f0('0xb')](),controller[_0xe9f0('0x12')]);router[_0xe9f0('0x11')]('/:id/teams',auth[_0xe9f0('0xb')](),controller['addTeams']);router[_0xe9f0('0x11')](_0xe9f0('0x13'),auth[_0xe9f0('0xb')](),controller['addAgents']);router[_0xe9f0('0x14')](_0xe9f0('0xc'),auth[_0xe9f0('0xb')](),controller['update']);router[_0xe9f0('0x15')](_0xe9f0('0xc'),auth[_0xe9f0('0xb')](),controller[_0xe9f0('0x16')]);router[_0xe9f0('0x15')](_0xe9f0('0x17'),auth[_0xe9f0('0xb')](),controller['removeTeams']);router[_0xe9f0('0x15')](_0xe9f0('0x13'),auth[_0xe9f0('0xb')](),controller['removeAgents']);module[_0xe9f0('0x18')]=router;
\ No newline at end of file
+var _0xa6b0=['addTeams','addAgents','put','delete','destroy','removeTeams','removeAgents','multer','util','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./faxQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post'];(function(_0x5288cb,_0x5a2ed2){var _0x465cce=function(_0x480a6c){while(--_0x480a6c){_0x5288cb['push'](_0x5288cb['shift']());}};_0x465cce(++_0x5a2ed2);}(_0xa6b0,0xaf));var _0x0a6b=function(_0x501366,_0x26f6ed){_0x501366=_0x501366-0x0;var _0x1adff4=_0xa6b0[_0x501366];return _0x1adff4;};'use strict';var multer=require(_0x0a6b('0x0'));var util=require(_0x0a6b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x0a6b('0x2'));var router=express[_0x0a6b('0x3')]();var fs_extra=require(_0x0a6b('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x0a6b('0x5'));var config=require(_0x0a6b('0x6'));var controller=require(_0x0a6b('0x7'));router[_0x0a6b('0x8')]('/',auth[_0x0a6b('0x9')](),controller[_0x0a6b('0xa')]);router[_0x0a6b('0x8')](_0x0a6b('0xb'),auth[_0x0a6b('0x9')](),controller[_0x0a6b('0xc')]);router[_0x0a6b('0x8')](_0x0a6b('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x0a6b('0x8')](_0x0a6b('0xe'),auth[_0x0a6b('0x9')](),controller[_0x0a6b('0xf')]);router[_0x0a6b('0x8')](_0x0a6b('0x10'),auth[_0x0a6b('0x9')](),controller[_0x0a6b('0x11')]);router[_0x0a6b('0x8')](_0x0a6b('0x12'),auth[_0x0a6b('0x9')](),controller[_0x0a6b('0x13')]);router[_0x0a6b('0x14')]('/',auth[_0x0a6b('0x9')](),controller['create']);router['post'](_0x0a6b('0x10'),auth[_0x0a6b('0x9')](),controller[_0x0a6b('0x15')]);router[_0x0a6b('0x14')](_0x0a6b('0x12'),auth[_0x0a6b('0x9')](),controller[_0x0a6b('0x16')]);router[_0x0a6b('0x17')](_0x0a6b('0xd'),auth[_0x0a6b('0x9')](),controller['update']);router[_0x0a6b('0x18')](_0x0a6b('0xd'),auth['isAuthenticated'](),controller[_0x0a6b('0x19')]);router['delete'](_0x0a6b('0x10'),auth[_0x0a6b('0x9')](),controller[_0x0a6b('0x1a')]);router[_0x0a6b('0x18')]('/:id/users',auth[_0x0a6b('0x9')](),controller[_0x0a6b('0x1b')]);module['exports']=router;
\ No newline at end of file
index 7e21a47..849ab12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x074c=['sequelize','STRING','DATE','moment'];(function(_0x5c59f0,_0x222e3d){var _0x1c87e8=function(_0x5ecba3){while(--_0x5ecba3){_0x5c59f0['push'](_0x5c59f0['shift']());}};_0x1c87e8(++_0x222e3d);}(_0x074c,0x9b));var _0xc074=function(_0x48bab2,_0x4f3b53){_0x48bab2=_0x48bab2-0x0;var _0xf41d3c=_0x074c[_0x48bab2];return _0xf41d3c;};'use strict';var moment=require(_0xc074('0x0'));var Sequelize=require(_0xc074('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xc074('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xc074('0x2')]},'joinAt':{'type':Sequelize[_0xc074('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xc074('0x3')]},'exitAt':{'type':Sequelize[_0xc074('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x3910=['STRING','DATE','moment','exports'];(function(_0x4a690d,_0x51473d){var _0x31e44c=function(_0x442593){while(--_0x442593){_0x4a690d['push'](_0x4a690d['shift']());}};_0x31e44c(++_0x51473d);}(_0x3910,0x102));var _0x0391=function(_0x1754b2,_0x2cf49e){_0x1754b2=_0x1754b2-0x0;var _0x4fa409=_0x3910[_0x1754b2];return _0x4fa409;};'use strict';var moment=require(_0x0391('0x0'));var Sequelize=require('sequelize');module[_0x0391('0x1')]={'uniqueid':{'type':Sequelize[_0x0391('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x0391('0x2')]},'joinAt':{'type':Sequelize[_0x0391('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x0391('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x0391('0x2')]}};
\ No newline at end of file
index 665f0c1..ee84f77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x894f=['then','destroy','error','stack','name','send','index','map','FaxQueueReport','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','pick','merge','options','catch','show','params','rawAttributes','includeAll','include','find','create','update','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','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','sendStatus','status','end','json','limit','count','offset','set','Content-Range','apply','reject','save'];(function(_0x4dbff0,_0xd80451){var _0xf762b6=function(_0x3b5c4f){while(--_0x3b5c4f){_0x4dbff0['push'](_0x4dbff0['shift']());}};_0xf762b6(++_0xd80451);}(_0x894f,0x14d));var _0xf894=function(_0x37ace8,_0x7419d3){_0x37ace8=_0x37ace8-0x0;var _0x1ebf4b=_0x894f[_0x37ace8];return _0x1ebf4b;};'use strict';var emlformat=require(_0xf894('0x0'));var rimraf=require(_0xf894('0x1'));var zipdir=require(_0xf894('0x2'));var jsonpatch=require(_0xf894('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xf894('0x4'));var Mustache=require(_0xf894('0x5'));var util=require('util');var path=require('path');var sox=require(_0xf894('0x6'));var csv=require(_0xf894('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf894('0x8'));var squel=require(_0xf894('0x9'));var crypto=require('crypto');var jsforce=require(_0xf894('0xa'));var deskjs=require(_0xf894('0xb'));var toCsv=require(_0xf894('0x7'));var querystring=require(_0xf894('0xc'));var Papa=require(_0xf894('0xd'));var Redis=require(_0xf894('0xe'));var authService=require(_0xf894('0xf'));var qs=require(_0xf894('0x10'));var as=require(_0xf894('0x11'));var hardwareService=require(_0xf894('0x12'));var logger=require(_0xf894('0x13'))(_0xf894('0x14'));var utils=require(_0xf894('0x15'));var config=require(_0xf894('0x16'));var licenseUtil=require(_0xf894('0x17'));var db=require(_0xf894('0x18'))['db'];function respondWithStatusCode(_0xd1691a,_0x157964){_0x157964=_0x157964||0xcc;return function(_0x4e674d){if(_0x4e674d){return _0xd1691a[_0xf894('0x19')](_0x157964);}return _0xd1691a[_0xf894('0x1a')](_0x157964)[_0xf894('0x1b')]();};}function respondWithResult(_0x56b168,_0x2c7a23){_0x2c7a23=_0x2c7a23||0xc8;return function(_0x4c75db){if(_0x4c75db){return _0x56b168['status'](_0x2c7a23)[_0xf894('0x1c')](_0x4c75db);}};}function respondWithFilteredResult(_0x131200,_0x171a73){return function(_0x17d5b0){if(_0x17d5b0){var _0x2142cb=typeof _0x171a73['offset']==='undefined'&&typeof _0x171a73[_0xf894('0x1d')]==='undefined';var _0x4d772b=_0x17d5b0[_0xf894('0x1e')];var _0x340345=_0x2142cb?0x0:_0x171a73[_0xf894('0x1f')];var _0x4bd77c=_0x2142cb?_0x17d5b0[_0xf894('0x1e')]:_0x171a73[_0xf894('0x1f')]+_0x171a73[_0xf894('0x1d')];var _0x5bd612;if(_0x4bd77c>=_0x4d772b){_0x4bd77c=_0x4d772b;_0x5bd612=0xc8;}else{_0x5bd612=0xce;}_0x131200['status'](_0x5bd612);return _0x131200[_0xf894('0x20')](_0xf894('0x21'),_0x340345+'-'+_0x4bd77c+'/'+_0x4d772b)[_0xf894('0x1c')](_0x17d5b0);}return null;};}function patchUpdates(_0x3abfd1){return function(_0x22a853){try{jsonpatch[_0xf894('0x22')](_0x22a853,_0x3abfd1,!![]);}catch(_0xdabf8){return BPromise[_0xf894('0x23')](_0xdabf8);}return _0x22a853[_0xf894('0x24')]();};}function saveUpdates(_0x25f67c,_0x1ccbd1){return function(_0xae4d17){if(_0xae4d17){return _0xae4d17['update'](_0x25f67c)[_0xf894('0x25')](function(_0x4f2d38){return _0x4f2d38;});}return null;};}function removeEntity(_0x50f461,_0x1250ec){return function(_0x441ec3){if(_0x441ec3){return _0x441ec3[_0xf894('0x26')]()[_0xf894('0x25')](function(){_0x50f461[_0xf894('0x1a')](0xcc)[_0xf894('0x1b')]();});}};}function handleEntityNotFound(_0x375020,_0x4d4ba3){return function(_0x29c774){if(!_0x29c774){_0x375020[_0xf894('0x19')](0x194);}return _0x29c774;};}function handleError(_0x1487fe,_0x3bf26f){_0x3bf26f=_0x3bf26f||0x1f4;return function(_0x126c39){logger[_0xf894('0x27')](_0x126c39[_0xf894('0x28')]);if(_0x126c39[_0xf894('0x29')]){delete _0x126c39[_0xf894('0x29')];}_0x1487fe[_0xf894('0x1a')](_0x3bf26f)[_0xf894('0x2a')](_0x126c39);};}exports[_0xf894('0x2b')]=function(_0x3c6e2c,_0x4e7312){var _0x211391={},_0x5eaeb9={},_0x1f52ff={'count':0x0,'rows':[]};var _0x14c494=_[_0xf894('0x2c')](db[_0xf894('0x2d')]['rawAttributes'],function(_0x116f4a){return{'name':_0x116f4a[_0xf894('0x2e')],'type':_0x116f4a[_0xf894('0x2f')][_0xf894('0x30')]};});_0x5eaeb9[_0xf894('0x31')]=_[_0xf894('0x2c')](_0x14c494,'name');_0x5eaeb9[_0xf894('0x32')]=_[_0xf894('0x33')](_0x3c6e2c[_0xf894('0x32')]);_0x5eaeb9[_0xf894('0x34')]=_[_0xf894('0x35')](_0x5eaeb9['model'],_0x5eaeb9[_0xf894('0x32')]);_0x211391['attributes']=_[_0xf894('0x35')](_0x5eaeb9[_0xf894('0x31')],qs[_0xf894('0x36')](_0x3c6e2c[_0xf894('0x32')][_0xf894('0x36')]));_0x211391[_0xf894('0x37')]=_0x211391[_0xf894('0x37')][_0xf894('0x38')]?_0x211391[_0xf894('0x37')]:_0x5eaeb9[_0xf894('0x31')];if(!_0x3c6e2c[_0xf894('0x32')][_0xf894('0x39')]('nolimit')){_0x211391[_0xf894('0x1d')]=qs[_0xf894('0x1d')](_0x3c6e2c[_0xf894('0x32')][_0xf894('0x1d')]);_0x211391[_0xf894('0x1f')]=qs[_0xf894('0x1f')](_0x3c6e2c[_0xf894('0x32')][_0xf894('0x1f')]);}_0x211391['order']=qs[_0xf894('0x3a')](_0x3c6e2c[_0xf894('0x32')]['sort']);_0x211391[_0xf894('0x3b')]=qs[_0xf894('0x34')](_[_0xf894('0x3c')](_0x3c6e2c[_0xf894('0x32')],_0x5eaeb9[_0xf894('0x34')]),_0x14c494);if(_0x3c6e2c[_0xf894('0x32')]['filter']){_0x211391[_0xf894('0x3b')]=_[_0xf894('0x3d')](_0x211391[_0xf894('0x3b')],{'$or':_['map'](_0x14c494,function(_0x30b6c4){if(_0x30b6c4['type']!=='VIRTUAL'){var _0x19ef4e={};_0x19ef4e[_0x30b6c4['name']]={'$like':'%'+_0x3c6e2c[_0xf894('0x32')]['filter']+'%'};return _0x19ef4e;}})});}_0x211391=_[_0xf894('0x3d')]({},_0x211391,_0x3c6e2c[_0xf894('0x3e')]);var _0x30bd92={'where':_0x211391[_0xf894('0x3b')]};return db['FaxQueueReport'][_0xf894('0x1e')](_0x30bd92)['then'](function(_0x44f703){_0x1f52ff[_0xf894('0x1e')]=_0x44f703;if(_0x3c6e2c[_0xf894('0x32')]['includeAll']){_0x211391['include']=[{'all':!![]}];}return db[_0xf894('0x2d')]['findAll'](_0x211391);})[_0xf894('0x25')](function(_0x4e6856){_0x1f52ff['rows']=_0x4e6856;return _0x1f52ff;})[_0xf894('0x25')](respondWithFilteredResult(_0x4e7312,_0x211391))[_0xf894('0x3f')](handleError(_0x4e7312,null));};exports[_0xf894('0x40')]=function(_0x530d18,_0x164f05){var _0x17ff53={'raw':!![],'where':{'id':_0x530d18[_0xf894('0x41')]['id']}},_0x307519={};_0x307519[_0xf894('0x31')]=_['keys'](db[_0xf894('0x2d')][_0xf894('0x42')]);_0x307519[_0xf894('0x32')]=_[_0xf894('0x33')](_0x530d18['query']);_0x307519[_0xf894('0x34')]=_[_0xf894('0x35')](_0x307519[_0xf894('0x31')],_0x307519[_0xf894('0x32')]);_0x17ff53['attributes']=_[_0xf894('0x35')](_0x307519[_0xf894('0x31')],qs['fields'](_0x530d18['query']['fields']));_0x17ff53[_0xf894('0x37')]=_0x17ff53[_0xf894('0x37')]['length']?_0x17ff53[_0xf894('0x37')]:_0x307519[_0xf894('0x31')];if(_0x530d18[_0xf894('0x32')][_0xf894('0x43')]){_0x17ff53[_0xf894('0x44')]=[{'all':!![]}];}_0x17ff53=_[_0xf894('0x3d')]({},_0x17ff53,_0x530d18[_0xf894('0x3e')]);return db['FaxQueueReport'][_0xf894('0x45')](_0x17ff53)[_0xf894('0x25')](handleEntityNotFound(_0x164f05,null))['then'](respondWithResult(_0x164f05,null))[_0xf894('0x3f')](handleError(_0x164f05,null));};exports[_0xf894('0x46')]=function(_0x2ff74d,_0x28aea0){return db[_0xf894('0x2d')]['create'](_0x2ff74d['body'],{})[_0xf894('0x25')](respondWithResult(_0x28aea0,0xc9))[_0xf894('0x3f')](handleError(_0x28aea0,null));};exports[_0xf894('0x47')]=function(_0x3d7719,_0x1dd3be){if(_0x3d7719[_0xf894('0x48')]['id']){delete _0x3d7719[_0xf894('0x48')]['id'];}return db[_0xf894('0x2d')][_0xf894('0x45')]({'where':{'id':_0x3d7719['params']['id']}})[_0xf894('0x25')](handleEntityNotFound(_0x1dd3be,null))['then'](saveUpdates(_0x3d7719[_0xf894('0x48')],null))['then'](respondWithResult(_0x1dd3be,null))[_0xf894('0x3f')](handleError(_0x1dd3be,null));};exports['destroy']=function(_0x483942,_0x584b0a){return db[_0xf894('0x2d')][_0xf894('0x45')]({'where':{'id':_0x483942['params']['id']}})[_0xf894('0x25')](handleEntityNotFound(_0x584b0a,null))['then'](removeEntity(_0x584b0a,null))['catch'](handleError(_0x584b0a,null));};exports['describe']=function(_0x11177d,_0x489915){return db['FaxQueueReport'][_0xf894('0x49')]()[_0xf894('0x25')](respondWithResult(_0x489915,null))[_0xf894('0x3f')](handleError(_0x489915,null));};
\ No newline at end of file
+var _0xb16f=['query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','type','merge','options','FaxQueueReport','findAll','rows','catch','show','params','rawAttributes','length','includeAll','include','find','create','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','lodash','crypto','desk.js','to-csv','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','sendStatus','error','stack','name','send','map','fieldName'];(function(_0xd76edb,_0x1583c4){var _0x528c9b=function(_0x2ef8c2){while(--_0x2ef8c2){_0xd76edb['push'](_0xd76edb['shift']());}};_0x528c9b(++_0x1583c4);}(_0xb16f,0xf6));var _0xfb16=function(_0x233716,_0x346676){_0x233716=_0x233716-0x0;var _0x302298=_0xb16f[_0x233716];return _0x302298;};'use strict';var emlformat=require(_0xfb16('0x0'));var rimraf=require(_0xfb16('0x1'));var zipdir=require(_0xfb16('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfb16('0x3'));var moment=require(_0xfb16('0x4'));var BPromise=require(_0xfb16('0x5'));var Mustache=require(_0xfb16('0x6'));var util=require('util');var path=require(_0xfb16('0x7'));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(_0xfb16('0x8'));var squel=require('squel');var crypto=require(_0xfb16('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xfb16('0xa'));var toCsv=require(_0xfb16('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xfb16('0xc'));var qs=require(_0xfb16('0xd'));var as=require(_0xfb16('0xe'));var hardwareService=require(_0xfb16('0xf'));var logger=require(_0xfb16('0x10'))(_0xfb16('0x11'));var utils=require(_0xfb16('0x12'));var config=require(_0xfb16('0x13'));var licenseUtil=require(_0xfb16('0x14'));var db=require(_0xfb16('0x15'))['db'];function respondWithStatusCode(_0x3a8de2,_0x4f3a00){_0x4f3a00=_0x4f3a00||0xcc;return function(_0xd6eeee){if(_0xd6eeee){return _0x3a8de2['sendStatus'](_0x4f3a00);}return _0x3a8de2['status'](_0x4f3a00)[_0xfb16('0x16')]();};}function respondWithResult(_0x89a4b8,_0x4cdc87){_0x4cdc87=_0x4cdc87||0xc8;return function(_0x507bcc){if(_0x507bcc){return _0x89a4b8[_0xfb16('0x17')](_0x4cdc87)[_0xfb16('0x18')](_0x507bcc);}};}function respondWithFilteredResult(_0x4708c2,_0x1643cc){return function(_0x28cb87){if(_0x28cb87){var _0xcf5a5=typeof _0x1643cc[_0xfb16('0x19')]===_0xfb16('0x1a')&&typeof _0x1643cc[_0xfb16('0x1b')]===_0xfb16('0x1a');var _0x1748fb=_0x28cb87[_0xfb16('0x1c')];var _0x3b0064=_0xcf5a5?0x0:_0x1643cc[_0xfb16('0x19')];var _0x51078f=_0xcf5a5?_0x28cb87[_0xfb16('0x1c')]:_0x1643cc[_0xfb16('0x19')]+_0x1643cc[_0xfb16('0x1b')];var _0x5af84a;if(_0x51078f>=_0x1748fb){_0x51078f=_0x1748fb;_0x5af84a=0xc8;}else{_0x5af84a=0xce;}_0x4708c2['status'](_0x5af84a);return _0x4708c2[_0xfb16('0x1d')](_0xfb16('0x1e'),_0x3b0064+'-'+_0x51078f+'/'+_0x1748fb)[_0xfb16('0x18')](_0x28cb87);}return null;};}function patchUpdates(_0x5394a8){return function(_0x193162){try{jsonpatch[_0xfb16('0x1f')](_0x193162,_0x5394a8,!![]);}catch(_0x17bdd0){return BPromise['reject'](_0x17bdd0);}return _0x193162['save']();};}function saveUpdates(_0x544b4b,_0x27203c){return function(_0x354ef4){if(_0x354ef4){return _0x354ef4[_0xfb16('0x20')](_0x544b4b)[_0xfb16('0x21')](function(_0x502d60){return _0x502d60;});}return null;};}function removeEntity(_0x5814e9,_0x8ef26c){return function(_0x2aea90){if(_0x2aea90){return _0x2aea90[_0xfb16('0x22')]()[_0xfb16('0x21')](function(){_0x5814e9[_0xfb16('0x17')](0xcc)[_0xfb16('0x16')]();});}};}function handleEntityNotFound(_0x15b3b8,_0x239633){return function(_0x1335a3){if(!_0x1335a3){_0x15b3b8[_0xfb16('0x23')](0x194);}return _0x1335a3;};}function handleError(_0x177b67,_0x4c194a){_0x4c194a=_0x4c194a||0x1f4;return function(_0x1ca17b){logger[_0xfb16('0x24')](_0x1ca17b[_0xfb16('0x25')]);if(_0x1ca17b[_0xfb16('0x26')]){delete _0x1ca17b[_0xfb16('0x26')];}_0x177b67['status'](_0x4c194a)[_0xfb16('0x27')](_0x1ca17b);};}exports['index']=function(_0x407379,_0x21822b){var _0xe1a799={},_0x1a92ce={},_0x19fb63={'count':0x0,'rows':[]};var _0x49d03e=_[_0xfb16('0x28')](db['FaxQueueReport']['rawAttributes'],function(_0x4f40ce){return{'name':_0x4f40ce[_0xfb16('0x29')],'type':_0x4f40ce['type']['key']};});_0x1a92ce['model']=_[_0xfb16('0x28')](_0x49d03e,_0xfb16('0x26'));_0x1a92ce[_0xfb16('0x2a')]=_[_0xfb16('0x2b')](_0x407379[_0xfb16('0x2a')]);_0x1a92ce[_0xfb16('0x2c')]=_[_0xfb16('0x2d')](_0x1a92ce[_0xfb16('0x2e')],_0x1a92ce['query']);_0xe1a799[_0xfb16('0x2f')]=_[_0xfb16('0x2d')](_0x1a92ce[_0xfb16('0x2e')],qs['fields'](_0x407379[_0xfb16('0x2a')][_0xfb16('0x30')]));_0xe1a799[_0xfb16('0x2f')]=_0xe1a799[_0xfb16('0x2f')]['length']?_0xe1a799[_0xfb16('0x2f')]:_0x1a92ce['model'];if(!_0x407379[_0xfb16('0x2a')][_0xfb16('0x31')](_0xfb16('0x32'))){_0xe1a799['limit']=qs[_0xfb16('0x1b')](_0x407379[_0xfb16('0x2a')][_0xfb16('0x1b')]);_0xe1a799[_0xfb16('0x19')]=qs['offset'](_0x407379['query'][_0xfb16('0x19')]);}_0xe1a799['order']=qs[_0xfb16('0x33')](_0x407379[_0xfb16('0x2a')][_0xfb16('0x33')]);_0xe1a799[_0xfb16('0x34')]=qs['filters'](_[_0xfb16('0x35')](_0x407379['query'],_0x1a92ce[_0xfb16('0x2c')]),_0x49d03e);if(_0x407379[_0xfb16('0x2a')][_0xfb16('0x36')]){_0xe1a799[_0xfb16('0x34')]=_['merge'](_0xe1a799[_0xfb16('0x34')],{'$or':_[_0xfb16('0x28')](_0x49d03e,function(_0x48f23b){if(_0x48f23b[_0xfb16('0x37')]!=='VIRTUAL'){var _0x2191b0={};_0x2191b0[_0x48f23b[_0xfb16('0x26')]]={'$like':'%'+_0x407379[_0xfb16('0x2a')][_0xfb16('0x36')]+'%'};return _0x2191b0;}})});}_0xe1a799=_[_0xfb16('0x38')]({},_0xe1a799,_0x407379[_0xfb16('0x39')]);var _0x450e16={'where':_0xe1a799['where']};return db['FaxQueueReport'][_0xfb16('0x1c')](_0x450e16)['then'](function(_0x186e5a){_0x19fb63[_0xfb16('0x1c')]=_0x186e5a;if(_0x407379[_0xfb16('0x2a')]['includeAll']){_0xe1a799['include']=[{'all':!![]}];}return db[_0xfb16('0x3a')][_0xfb16('0x3b')](_0xe1a799);})[_0xfb16('0x21')](function(_0x52eafd){_0x19fb63[_0xfb16('0x3c')]=_0x52eafd;return _0x19fb63;})[_0xfb16('0x21')](respondWithFilteredResult(_0x21822b,_0xe1a799))[_0xfb16('0x3d')](handleError(_0x21822b,null));};exports[_0xfb16('0x3e')]=function(_0x33df7e,_0x37266a){var _0x554c5b={'raw':!![],'where':{'id':_0x33df7e[_0xfb16('0x3f')]['id']}},_0x223045={};_0x223045[_0xfb16('0x2e')]=_['keys'](db['FaxQueueReport'][_0xfb16('0x40')]);_0x223045[_0xfb16('0x2a')]=_['keys'](_0x33df7e[_0xfb16('0x2a')]);_0x223045['filters']=_[_0xfb16('0x2d')](_0x223045['model'],_0x223045[_0xfb16('0x2a')]);_0x554c5b['attributes']=_['intersection'](_0x223045[_0xfb16('0x2e')],qs[_0xfb16('0x30')](_0x33df7e[_0xfb16('0x2a')]['fields']));_0x554c5b['attributes']=_0x554c5b[_0xfb16('0x2f')][_0xfb16('0x41')]?_0x554c5b[_0xfb16('0x2f')]:_0x223045[_0xfb16('0x2e')];if(_0x33df7e[_0xfb16('0x2a')][_0xfb16('0x42')]){_0x554c5b[_0xfb16('0x43')]=[{'all':!![]}];}_0x554c5b=_['merge']({},_0x554c5b,_0x33df7e['options']);return db[_0xfb16('0x3a')][_0xfb16('0x44')](_0x554c5b)[_0xfb16('0x21')](handleEntityNotFound(_0x37266a,null))[_0xfb16('0x21')](respondWithResult(_0x37266a,null))['catch'](handleError(_0x37266a,null));};exports[_0xfb16('0x45')]=function(_0x7a90b6,_0x44a792){return db[_0xfb16('0x3a')]['create'](_0x7a90b6[_0xfb16('0x46')],{})[_0xfb16('0x21')](respondWithResult(_0x44a792,0xc9))[_0xfb16('0x3d')](handleError(_0x44a792,null));};exports[_0xfb16('0x20')]=function(_0x131e4d,_0x3820d6){if(_0x131e4d[_0xfb16('0x46')]['id']){delete _0x131e4d[_0xfb16('0x46')]['id'];}return db[_0xfb16('0x3a')][_0xfb16('0x44')]({'where':{'id':_0x131e4d[_0xfb16('0x3f')]['id']}})[_0xfb16('0x21')](handleEntityNotFound(_0x3820d6,null))['then'](saveUpdates(_0x131e4d[_0xfb16('0x46')],null))[_0xfb16('0x21')](respondWithResult(_0x3820d6,null))['catch'](handleError(_0x3820d6,null));};exports[_0xfb16('0x22')]=function(_0x279620,_0x3ac1f9){return db[_0xfb16('0x3a')][_0xfb16('0x44')]({'where':{'id':_0x279620[_0xfb16('0x3f')]['id']}})[_0xfb16('0x21')](handleEntityNotFound(_0x3ac1f9,null))[_0xfb16('0x21')](removeEntity(_0x3ac1f9,null))[_0xfb16('0x3d')](handleError(_0x3ac1f9,null));};exports[_0xfb16('0x47')]=function(_0x7ca35c,_0x260076){return db['FaxQueueReport'][_0xfb16('0x47')]()[_0xfb16('0x21')](respondWithResult(_0x260076,null))[_0xfb16('0x3d')](handleError(_0x260076,null));};
\ No newline at end of file
index c933846..b4930aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf494=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','define','uniqueid','lodash'];(function(_0x5a26cf,_0x35a451){var _0x243630=function(_0x1fc97e){while(--_0x1fc97e){_0x5a26cf['push'](_0x5a26cf['shift']());}};_0x243630(++_0x35a451);}(_0xf494,0x1c6));var _0x4f49=function(_0x2fc64b,_0x535858){_0x2fc64b=_0x2fc64b-0x0;var _0x4a398b=_0xf494[_0x2fc64b];return _0x4a398b;};'use strict';var _=require(_0x4f49('0x0'));var util=require(_0x4f49('0x1'));var logger=require(_0x4f49('0x2'))('api');var moment=require(_0x4f49('0x3'));var BPromise=require(_0x4f49('0x4'));var rp=require(_0x4f49('0x5'));var fs=require('fs');var path=require(_0x4f49('0x6'));var rimraf=require(_0x4f49('0x7'));var config=require(_0x4f49('0x8'));var attributes=require(_0x4f49('0x9'));module[_0x4f49('0xa')]=function(_0xc5e778,_0x413530){return _0xc5e778[_0x4f49('0xb')]('FaxQueueReport',attributes,{'tableName':'report_fax_queue','paranoid':![],'indexes':[{'name':_0x4f49('0xc'),'fields':[_0x4f49('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5fc3=['util','api','moment','bluebird','request-promise','path','../../config/environment','./faxQueueReport.attributes','exports','define','report_fax_queue','uniqueid','lodash'];(function(_0x273055,_0xf47e4f){var _0x4a7fb1=function(_0x53cdfd){while(--_0x53cdfd){_0x273055['push'](_0x273055['shift']());}};_0x4a7fb1(++_0xf47e4f);}(_0x5fc3,0xa8));var _0x35fc=function(_0x11ce46,_0x177a85){_0x11ce46=_0x11ce46-0x0;var _0x368a1e=_0x5fc3[_0x11ce46];return _0x368a1e;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var logger=require('../../config/logger')(_0x35fc('0x2'));var moment=require(_0x35fc('0x3'));var BPromise=require(_0x35fc('0x4'));var rp=require(_0x35fc('0x5'));var fs=require('fs');var path=require(_0x35fc('0x6'));var rimraf=require('rimraf');var config=require(_0x35fc('0x7'));var attributes=require(_0x35fc('0x8'));module[_0x35fc('0x9')]=function(_0x5b85ad,_0x5754be){return _0x5b85ad[_0x35fc('0xa')]('FaxQueueReport',attributes,{'tableName':_0x35fc('0xb'),'paranoid':![],'indexes':[{'name':_0x35fc('0xc'),'fields':[_0x35fc('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 5c11940..106c56a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba06=['../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','debug','stringify','error','code','FaxQueueReport,\x20%s,\x20%s','message','info','result','catch','CreateFaxQueueReport','body','options','raw','update','attributes','limit','UpdateFaxQueueReport','ioredis','../../mysqldb','../../config/utils'];(function(_0x26d516,_0x163a55){var _0x2e7938=function(_0x328320){while(--_0x328320){_0x26d516['push'](_0x26d516['shift']());}};_0x2e7938(++_0x163a55);}(_0xba06,0x69));var _0x6ba0=function(_0x4fdcc0,_0x560a01){_0x4fdcc0=_0x4fdcc0-0x0;var _0xc0ce94=_0xba06[_0x4fdcc0];return _0xc0ce94;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6ba0('0x0'));var db=require(_0x6ba0('0x1'))['db'];var utils=require(_0x6ba0('0x2'));var logger=require(_0x6ba0('0x3'))(_0x6ba0('0x4'));var config=require(_0x6ba0('0x5'));var jayson=require(_0x6ba0('0x6'));var client=jayson[_0x6ba0('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3b0baa,_0x463fe6,_0x1e4a87){return new BPromise(function(_0x1a0146,_0x3da044){return client[_0x6ba0('0x8')](_0x3b0baa,_0x1e4a87)[_0x6ba0('0x9')](function(_0x5e78bb){logger['info']('FaxQueueReport,\x20%s,\x20%s',_0x463fe6,'request\x20sent');logger[_0x6ba0('0xa')]('FaxQueueReport,\x20%s,\x20%s,\x20%s',_0x463fe6,'request\x20sent',JSON[_0x6ba0('0xb')](_0x5e78bb));if(_0x5e78bb[_0x6ba0('0xc')]){if(_0x5e78bb['error'][_0x6ba0('0xd')]===0x1f4){logger[_0x6ba0('0xc')](_0x6ba0('0xe'),_0x463fe6,_0x5e78bb[_0x6ba0('0xc')][_0x6ba0('0xf')]);return _0x3da044(_0x5e78bb[_0x6ba0('0xc')]['message']);}logger['error'](_0x6ba0('0xe'),_0x463fe6,_0x5e78bb[_0x6ba0('0xc')]['message']);return _0x1a0146(_0x5e78bb[_0x6ba0('0xc')][_0x6ba0('0xf')]);}else{logger[_0x6ba0('0x10')]('FaxQueueReport,\x20%s,\x20%s',_0x463fe6,'request\x20sent');_0x1a0146(_0x5e78bb[_0x6ba0('0x11')][_0x6ba0('0xf')]);}})[_0x6ba0('0x12')](function(_0x28862d){logger[_0x6ba0('0xc')]('FaxQueueReport,\x20%s,\x20%s',_0x463fe6,_0x28862d);_0x3da044(_0x28862d);});});}exports[_0x6ba0('0x13')]=function(_0x4114d7){var _0x580707=this;return new Promise(function(_0x58f952,_0x4dda4d){return db['FaxQueueReport']['create'](_0x4114d7[_0x6ba0('0x14')],{'raw':_0x4114d7[_0x6ba0('0x15')]?_0x4114d7['options'][_0x6ba0('0x16')]===undefined?!![]:![]:!![]})['then'](function(_0x524d7b){logger[_0x6ba0('0x10')]('CreateFaxQueueReport',_0x4114d7);logger[_0x6ba0('0xa')](_0x6ba0('0x13'),_0x4114d7,JSON[_0x6ba0('0xb')](_0x524d7b));_0x58f952(_0x524d7b);})[_0x6ba0('0x12')](function(_0xebff94){logger[_0x6ba0('0xc')](_0x6ba0('0x13'),_0xebff94[_0x6ba0('0xf')],_0x4114d7);_0x4dda4d(_0x580707[_0x6ba0('0xc')](0x1f4,_0xebff94[_0x6ba0('0xf')]));});});};exports['UpdateFaxQueueReport']=function(_0x173711){var _0x155a2a=this;return new Promise(function(_0x50e759,_0x552ccc){return db['FaxQueueReport'][_0x6ba0('0x17')](_0x173711[_0x6ba0('0x14')],{'raw':_0x173711[_0x6ba0('0x15')]?_0x173711['options'][_0x6ba0('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x173711['options']?_0x173711['options']['where']||null:null,'attributes':_0x173711[_0x6ba0('0x15')]?_0x173711[_0x6ba0('0x15')][_0x6ba0('0x18')]||null:null,'limit':_0x173711[_0x6ba0('0x15')]?_0x173711[_0x6ba0('0x15')][_0x6ba0('0x19')]||null:null})['then'](function(_0x40ea99){logger['info'](_0x6ba0('0x1a'),_0x173711);logger[_0x6ba0('0xa')](_0x6ba0('0x1a'),_0x173711,JSON[_0x6ba0('0xb')](_0x40ea99));_0x50e759(_0x40ea99);})[_0x6ba0('0x12')](function(_0x4aa720){logger[_0x6ba0('0xc')](_0x6ba0('0x1a'),_0x4aa720[_0x6ba0('0xf')],_0x173711);_0x552ccc(_0x155a2a['error'](0x1f4,_0x4aa720[_0x6ba0('0xf')]));});});};
\ No newline at end of file
+var _0xca1b=['raw','debug','catch','update','where','limit','UpdateFaxQueueReport','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateFaxQueueReport','FaxQueueReport','create','body','options'];(function(_0x54f737,_0x336716){var _0x5371fa=function(_0x375f0e){while(--_0x375f0e){_0x54f737['push'](_0x54f737['shift']());}};_0x5371fa(++_0x336716);}(_0xca1b,0xcd));var _0xbca1=function(_0x5b5d77,_0x23c598){_0x5b5d77=_0x5b5d77-0x0;var _0x3ef770=_0xca1b[_0x5b5d77];return _0x3ef770;};'use strict';var _=require(_0xbca1('0x0'));var util=require(_0xbca1('0x1'));var moment=require(_0xbca1('0x2'));var BPromise=require(_0xbca1('0x3'));var rs=require(_0xbca1('0x4'));var fs=require('fs');var Redis=require(_0xbca1('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbca1('0x6'))(_0xbca1('0x7'));var config=require(_0xbca1('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xbca1('0x9')][_0xbca1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x367a9e,_0x194755,_0xbb70e4){return new BPromise(function(_0x3491c4,_0x231fba){return client['request'](_0x367a9e,_0xbb70e4)[_0xbca1('0xb')](function(_0x7a8b3b){logger[_0xbca1('0xc')](_0xbca1('0xd'),_0x194755,_0xbca1('0xe'));logger['debug'](_0xbca1('0xf'),_0x194755,_0xbca1('0xe'),JSON[_0xbca1('0x10')](_0x7a8b3b));if(_0x7a8b3b[_0xbca1('0x11')]){if(_0x7a8b3b[_0xbca1('0x11')][_0xbca1('0x12')]===0x1f4){logger[_0xbca1('0x11')](_0xbca1('0xd'),_0x194755,_0x7a8b3b[_0xbca1('0x11')][_0xbca1('0x13')]);return _0x231fba(_0x7a8b3b['error'][_0xbca1('0x13')]);}logger[_0xbca1('0x11')](_0xbca1('0xd'),_0x194755,_0x7a8b3b[_0xbca1('0x11')][_0xbca1('0x13')]);return _0x3491c4(_0x7a8b3b['error'][_0xbca1('0x13')]);}else{logger[_0xbca1('0xc')]('FaxQueueReport,\x20%s,\x20%s',_0x194755,_0xbca1('0xe'));_0x3491c4(_0x7a8b3b[_0xbca1('0x14')][_0xbca1('0x13')]);}})['catch'](function(_0x4bffae){logger[_0xbca1('0x11')]('FaxQueueReport,\x20%s,\x20%s',_0x194755,_0x4bffae);_0x231fba(_0x4bffae);});});}exports[_0xbca1('0x15')]=function(_0x493f27){var _0x143192=this;return new Promise(function(_0x2aa685,_0x5a2369){return db[_0xbca1('0x16')][_0xbca1('0x17')](_0x493f27[_0xbca1('0x18')],{'raw':_0x493f27[_0xbca1('0x19')]?_0x493f27[_0xbca1('0x19')][_0xbca1('0x1a')]===undefined?!![]:![]:!![]})[_0xbca1('0xb')](function(_0x38a085){logger[_0xbca1('0xc')](_0xbca1('0x15'),_0x493f27);logger[_0xbca1('0x1b')]('CreateFaxQueueReport',_0x493f27,JSON[_0xbca1('0x10')](_0x38a085));_0x2aa685(_0x38a085);})[_0xbca1('0x1c')](function(_0x273a49){logger[_0xbca1('0x11')](_0xbca1('0x15'),_0x273a49[_0xbca1('0x13')],_0x493f27);_0x5a2369(_0x143192[_0xbca1('0x11')](0x1f4,_0x273a49['message']));});});};exports['UpdateFaxQueueReport']=function(_0x3fb2fd){var _0x277175=this;return new Promise(function(_0x54ca76,_0x185be5){return db[_0xbca1('0x16')][_0xbca1('0x1d')](_0x3fb2fd['body'],{'raw':_0x3fb2fd['options']?_0x3fb2fd[_0xbca1('0x19')][_0xbca1('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3fb2fd[_0xbca1('0x19')]?_0x3fb2fd[_0xbca1('0x19')][_0xbca1('0x1e')]||null:null,'attributes':_0x3fb2fd[_0xbca1('0x19')]?_0x3fb2fd[_0xbca1('0x19')]['attributes']||null:null,'limit':_0x3fb2fd['options']?_0x3fb2fd[_0xbca1('0x19')][_0xbca1('0x1f')]||null:null})[_0xbca1('0xb')](function(_0x33a799){logger[_0xbca1('0xc')](_0xbca1('0x20'),_0x3fb2fd);logger[_0xbca1('0x1b')]('UpdateFaxQueueReport',_0x3fb2fd,JSON[_0xbca1('0x10')](_0x33a799));_0x54ca76(_0x33a799);})[_0xbca1('0x1c')](function(_0x12e2d1){logger[_0xbca1('0x11')](_0xbca1('0x20'),_0x12e2d1[_0xbca1('0x13')],_0x3fb2fd);_0x185be5(_0x277175[_0xbca1('0x11')](0x1f4,_0x12e2d1[_0xbca1('0x13')]));});});};
\ No newline at end of file
index 11a8077..c47cf29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa45e=['get','/describe','/:id','post','create','put','update','exports','util','path','connect-timeout','express','Router','fs-extra','isAuthenticated','index'];(function(_0x32d5d4,_0x32840b){var _0x12a0ce=function(_0x11c59a){while(--_0x11c59a){_0x32d5d4['push'](_0x32d5d4['shift']());}};_0x12a0ce(++_0x32840b);}(_0xa45e,0x158));var _0xea45=function(_0x3a1c24,_0x29b8dd){_0x3a1c24=_0x3a1c24-0x0;var _0x442528=_0xa45e[_0x3a1c24];return _0x442528;};'use strict';var multer=require('multer');var util=require(_0xea45('0x0'));var path=require(_0xea45('0x1'));var timeout=require(_0xea45('0x2'));var express=require(_0xea45('0x3'));var router=express[_0xea45('0x4')]();var fs_extra=require(_0xea45('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./faxQueueReport.controller');router['get']('/',auth[_0xea45('0x6')](),controller[_0xea45('0x7')]);router[_0xea45('0x8')](_0xea45('0x9'),auth[_0xea45('0x6')](),controller['describe']);router[_0xea45('0x8')](_0xea45('0xa'),auth[_0xea45('0x6')](),controller['show']);router[_0xea45('0xb')]('/',auth[_0xea45('0x6')](),controller[_0xea45('0xc')]);router[_0xea45('0xd')](_0xea45('0xa'),auth[_0xea45('0x6')](),controller[_0xea45('0xe')]);router['delete'](_0xea45('0xa'),auth[_0xea45('0x6')](),controller['destroy']);module[_0xea45('0xf')]=router;
\ No newline at end of file
+var _0xcf2b=['put','update','delete','destroy','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','get','/describe','isAuthenticated','show','create'];(function(_0x44b289,_0x485125){var _0x3f2b98=function(_0x5557c7){while(--_0x5557c7){_0x44b289['push'](_0x44b289['shift']());}};_0x3f2b98(++_0x485125);}(_0xcf2b,0x124));var _0xbcf2=function(_0x32b79a,_0xd2538a){_0x32b79a=_0x32b79a-0x0;var _0x483450=_0xcf2b[_0x32b79a];return _0x483450;};'use strict';var multer=require(_0xbcf2('0x0'));var util=require(_0xbcf2('0x1'));var path=require(_0xbcf2('0x2'));var timeout=require('connect-timeout');var express=require(_0xbcf2('0x3'));var router=express['Router']();var fs_extra=require(_0xbcf2('0x4'));var auth=require(_0xbcf2('0x5'));var interaction=require(_0xbcf2('0x6'));var config=require(_0xbcf2('0x7'));var controller=require(_0xbcf2('0x8'));router[_0xbcf2('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xbcf2('0x9')](_0xbcf2('0xa'),auth[_0xbcf2('0xb')](),controller['describe']);router[_0xbcf2('0x9')]('/:id',auth[_0xbcf2('0xb')](),controller[_0xbcf2('0xc')]);router['post']('/',auth[_0xbcf2('0xb')](),controller[_0xbcf2('0xd')]);router[_0xbcf2('0xe')]('/:id',auth['isAuthenticated'](),controller[_0xbcf2('0xf')]);router[_0xbcf2('0x10')]('/:id',auth[_0xbcf2('0xb')](),controller[_0xbcf2('0x11')]);module['exports']=router;
\ No newline at end of file
index c2db264..a8c6a82 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(_0x4ab17e,_0x338b01){var _0x1dea64=function(_0x2be9c4){while(--_0x2be9c4){_0x4ab17e['push'](_0x4ab17e['shift']());}};_0x1dea64(++_0x338b01);}(_0xedd9,0xfc));var _0x9edd=function(_0x4af78d,_0x10b5e1){_0x4af78d=_0x4af78d-0x0;var _0x1892da=_0xedd9[_0x4af78d];return _0x1892da;};'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 _0xf3cd=['exports','STRING','ENUM','account','queue','DATE','moment','sequelize'];(function(_0x881538,_0x2bb6d8){var _0x63aaaa=function(_0x47605a){while(--_0x47605a){_0x881538['push'](_0x881538['shift']());}};_0x63aaaa(++_0x2bb6d8);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x292423,_0x1759b7){_0x292423=_0x292423-0x0;var _0x2801cb=_0xf3cd[_0x292423];return _0x2801cb;};'use strict';var moment=require(_0xdf3c('0x0'));var Sequelize=require(_0xdf3c('0x1'));module[_0xdf3c('0x2')]={'uniqueid':{'type':Sequelize[_0xdf3c('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xdf3c('0x4')](_0xdf3c('0x5'),'agent',_0xdf3c('0x6')),'allowNull':![],'defaultValue':_0xdf3c('0x6')},'transferredAt':{'type':Sequelize[_0xdf3c('0x7')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
index a5bc156..c4d42bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a49=['rimraf','zip-dir','fast-json-patch','request-promise','moment','util','sox','to-csv','ejs','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','save','update','then','destroy','stack','name','index','map','FaxTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','length','attributes','hasOwnProperty','nolimit','sort','merge','where','VIRTUAL','filter','options','includeAll','include','rows','catch','show','find','create','body','params','describe','eml-format'];(function(_0x266618,_0x18f637){var _0x54dbf5=function(_0x1f7985){while(--_0x1f7985){_0x266618['push'](_0x266618['shift']());}};_0x54dbf5(++_0x18f637);}(_0x7a49,0x171));var _0x97a4=function(_0x5c58b7,_0x40dfb0){_0x5c58b7=_0x5c58b7-0x0;var _0x522abb=_0x7a49[_0x5c58b7];return _0x522abb;};'use strict';var emlformat=require(_0x97a4('0x0'));var rimraf=require(_0x97a4('0x1'));var zipdir=require(_0x97a4('0x2'));var jsonpatch=require(_0x97a4('0x3'));var rp=require(_0x97a4('0x4'));var moment=require(_0x97a4('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x97a4('0x6'));var path=require('path');var sox=require(_0x97a4('0x7'));var csv=require(_0x97a4('0x8'));var ejs=require(_0x97a4('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x97a4('0xa'));var squel=require(_0x97a4('0xb'));var crypto=require('crypto');var jsforce=require(_0x97a4('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x97a4('0x8'));var querystring=require(_0x97a4('0xd'));var Papa=require(_0x97a4('0xe'));var Redis=require(_0x97a4('0xf'));var authService=require(_0x97a4('0x10'));var qs=require(_0x97a4('0x11'));var as=require(_0x97a4('0x12'));var hardwareService=require(_0x97a4('0x13'));var logger=require(_0x97a4('0x14'))(_0x97a4('0x15'));var utils=require('../../config/utils');var config=require(_0x97a4('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x97a4('0x17'))['db'];function respondWithStatusCode(_0x4fb404,_0x56f902){_0x56f902=_0x56f902||0xcc;return function(_0x3a1a29){if(_0x3a1a29){return _0x4fb404[_0x97a4('0x18')](_0x56f902);}return _0x4fb404[_0x97a4('0x19')](_0x56f902)[_0x97a4('0x1a')]();};}function respondWithResult(_0x12928c,_0x40b776){_0x40b776=_0x40b776||0xc8;return function(_0x1843ac){if(_0x1843ac){return _0x12928c['status'](_0x40b776)['json'](_0x1843ac);}};}function respondWithFilteredResult(_0x51e900,_0x4d08f1){return function(_0x593649){if(_0x593649){var _0x52e3b4=typeof _0x4d08f1['offset']===_0x97a4('0x1b')&&typeof _0x4d08f1[_0x97a4('0x1c')]===_0x97a4('0x1b');var _0x3c1f5d=_0x593649[_0x97a4('0x1d')];var _0x5bbce9=_0x52e3b4?0x0:_0x4d08f1[_0x97a4('0x1e')];var _0x1ec037=_0x52e3b4?_0x593649['count']:_0x4d08f1[_0x97a4('0x1e')]+_0x4d08f1[_0x97a4('0x1c')];var _0x3c3830;if(_0x1ec037>=_0x3c1f5d){_0x1ec037=_0x3c1f5d;_0x3c3830=0xc8;}else{_0x3c3830=0xce;}_0x51e900[_0x97a4('0x19')](_0x3c3830);return _0x51e900[_0x97a4('0x1f')](_0x97a4('0x20'),_0x5bbce9+'-'+_0x1ec037+'/'+_0x3c1f5d)[_0x97a4('0x21')](_0x593649);}return null;};}function patchUpdates(_0x300e13){return function(_0x365f6f){try{jsonpatch[_0x97a4('0x22')](_0x365f6f,_0x300e13,!![]);}catch(_0x215e4b){return BPromise['reject'](_0x215e4b);}return _0x365f6f[_0x97a4('0x23')]();};}function saveUpdates(_0x554c74,_0x9e9b8f){return function(_0x4c738b){if(_0x4c738b){return _0x4c738b[_0x97a4('0x24')](_0x554c74)[_0x97a4('0x25')](function(_0x361d53){return _0x361d53;});}return null;};}function removeEntity(_0x1c226a,_0x9e6223){return function(_0x2dc511){if(_0x2dc511){return _0x2dc511[_0x97a4('0x26')]()[_0x97a4('0x25')](function(){_0x1c226a[_0x97a4('0x19')](0xcc)[_0x97a4('0x1a')]();});}};}function handleEntityNotFound(_0x18f020,_0x467cb6){return function(_0x587f86){if(!_0x587f86){_0x18f020[_0x97a4('0x18')](0x194);}return _0x587f86;};}function handleError(_0x330503,_0x6ca259){_0x6ca259=_0x6ca259||0x1f4;return function(_0x55e51e){logger['error'](_0x55e51e[_0x97a4('0x27')]);if(_0x55e51e[_0x97a4('0x28')]){delete _0x55e51e[_0x97a4('0x28')];}_0x330503['status'](_0x6ca259)['send'](_0x55e51e);};}exports[_0x97a4('0x29')]=function(_0x2721e9,_0x2fa5e2){var _0x4bc7cf={},_0x3b109d={},_0x1b41ab={'count':0x0,'rows':[]};var _0x18018e=_[_0x97a4('0x2a')](db[_0x97a4('0x2b')][_0x97a4('0x2c')],function(_0x59c2cf){return{'name':_0x59c2cf[_0x97a4('0x2d')],'type':_0x59c2cf[_0x97a4('0x2e')][_0x97a4('0x2f')]};});_0x3b109d[_0x97a4('0x30')]=_['map'](_0x18018e,_0x97a4('0x28'));_0x3b109d[_0x97a4('0x31')]=_[_0x97a4('0x32')](_0x2721e9[_0x97a4('0x31')]);_0x3b109d[_0x97a4('0x33')]=_[_0x97a4('0x34')](_0x3b109d[_0x97a4('0x30')],_0x3b109d['query']);_0x4bc7cf['attributes']=_[_0x97a4('0x34')](_0x3b109d[_0x97a4('0x30')],qs[_0x97a4('0x35')](_0x2721e9[_0x97a4('0x31')][_0x97a4('0x35')]));_0x4bc7cf['attributes']=_0x4bc7cf['attributes'][_0x97a4('0x36')]?_0x4bc7cf[_0x97a4('0x37')]:_0x3b109d[_0x97a4('0x30')];if(!_0x2721e9[_0x97a4('0x31')][_0x97a4('0x38')](_0x97a4('0x39'))){_0x4bc7cf[_0x97a4('0x1c')]=qs['limit'](_0x2721e9[_0x97a4('0x31')][_0x97a4('0x1c')]);_0x4bc7cf[_0x97a4('0x1e')]=qs[_0x97a4('0x1e')](_0x2721e9[_0x97a4('0x31')]['offset']);}_0x4bc7cf['order']=qs[_0x97a4('0x3a')](_0x2721e9[_0x97a4('0x31')][_0x97a4('0x3a')]);_0x4bc7cf['where']=qs[_0x97a4('0x33')](_['pick'](_0x2721e9[_0x97a4('0x31')],_0x3b109d[_0x97a4('0x33')]),_0x18018e);if(_0x2721e9['query']['filter']){_0x4bc7cf['where']=_[_0x97a4('0x3b')](_0x4bc7cf[_0x97a4('0x3c')],{'$or':_['map'](_0x18018e,function(_0x5d32f7){if(_0x5d32f7[_0x97a4('0x2e')]!==_0x97a4('0x3d')){var _0x2d5b36={};_0x2d5b36[_0x5d32f7[_0x97a4('0x28')]]={'$like':'%'+_0x2721e9[_0x97a4('0x31')][_0x97a4('0x3e')]+'%'};return _0x2d5b36;}})});}_0x4bc7cf=_[_0x97a4('0x3b')]({},_0x4bc7cf,_0x2721e9[_0x97a4('0x3f')]);var _0x5e30d6={'where':_0x4bc7cf[_0x97a4('0x3c')]};return db[_0x97a4('0x2b')]['count'](_0x5e30d6)[_0x97a4('0x25')](function(_0x44db3){_0x1b41ab[_0x97a4('0x1d')]=_0x44db3;if(_0x2721e9['query'][_0x97a4('0x40')]){_0x4bc7cf[_0x97a4('0x41')]=[{'all':!![]}];}return db[_0x97a4('0x2b')]['findAll'](_0x4bc7cf);})[_0x97a4('0x25')](function(_0x3d1995){_0x1b41ab[_0x97a4('0x42')]=_0x3d1995;return _0x1b41ab;})[_0x97a4('0x25')](respondWithFilteredResult(_0x2fa5e2,_0x4bc7cf))[_0x97a4('0x43')](handleError(_0x2fa5e2,null));};exports[_0x97a4('0x44')]=function(_0x704c82,_0x3577e3){var _0x589545={'raw':!![],'where':{'id':_0x704c82['params']['id']}},_0x342740={};_0x342740[_0x97a4('0x30')]=_[_0x97a4('0x32')](db['FaxTransferReport'][_0x97a4('0x2c')]);_0x342740[_0x97a4('0x31')]=_[_0x97a4('0x32')](_0x704c82[_0x97a4('0x31')]);_0x342740[_0x97a4('0x33')]=_[_0x97a4('0x34')](_0x342740[_0x97a4('0x30')],_0x342740['query']);_0x589545[_0x97a4('0x37')]=_[_0x97a4('0x34')](_0x342740['model'],qs['fields'](_0x704c82[_0x97a4('0x31')][_0x97a4('0x35')]));_0x589545[_0x97a4('0x37')]=_0x589545[_0x97a4('0x37')][_0x97a4('0x36')]?_0x589545[_0x97a4('0x37')]:_0x342740['model'];if(_0x704c82['query'][_0x97a4('0x40')]){_0x589545[_0x97a4('0x41')]=[{'all':!![]}];}_0x589545=_[_0x97a4('0x3b')]({},_0x589545,_0x704c82[_0x97a4('0x3f')]);return db[_0x97a4('0x2b')][_0x97a4('0x45')](_0x589545)[_0x97a4('0x25')](handleEntityNotFound(_0x3577e3,null))['then'](respondWithResult(_0x3577e3,null))['catch'](handleError(_0x3577e3,null));};exports[_0x97a4('0x46')]=function(_0x48356f,_0x3448ed){return db['FaxTransferReport'][_0x97a4('0x46')](_0x48356f[_0x97a4('0x47')],{})[_0x97a4('0x25')](respondWithResult(_0x3448ed,0xc9))[_0x97a4('0x43')](handleError(_0x3448ed,null));};exports[_0x97a4('0x24')]=function(_0x4bdee2,_0x27bffe){if(_0x4bdee2[_0x97a4('0x47')]['id']){delete _0x4bdee2[_0x97a4('0x47')]['id'];}return db[_0x97a4('0x2b')][_0x97a4('0x45')]({'where':{'id':_0x4bdee2[_0x97a4('0x48')]['id']}})[_0x97a4('0x25')](handleEntityNotFound(_0x27bffe,null))[_0x97a4('0x25')](saveUpdates(_0x4bdee2['body'],null))['then'](respondWithResult(_0x27bffe,null))[_0x97a4('0x43')](handleError(_0x27bffe,null));};exports['destroy']=function(_0x55582c,_0x3da2a7){return db['FaxTransferReport'][_0x97a4('0x45')]({'where':{'id':_0x55582c[_0x97a4('0x48')]['id']}})[_0x97a4('0x25')](handleEntityNotFound(_0x3da2a7,null))['then'](removeEntity(_0x3da2a7,null))[_0x97a4('0x43')](handleError(_0x3da2a7,null));};exports[_0x97a4('0x49')]=function(_0x33bf2e,_0x2a9b9c){return db['FaxTransferReport'][_0x97a4('0x49')]()['then'](respondWithResult(_0x2a9b9c,null))['catch'](handleError(_0x2a9b9c,null));};
\ No newline at end of file
+var _0x00bf=['send','index','map','FaxTransferReport','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','keys','rawAttributes','find','catch','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','then','error','name'];(function(_0x46efd7,_0x43f84d){var _0x5637e4=function(_0x54e078){while(--_0x54e078){_0x46efd7['push'](_0x46efd7['shift']());}};_0x5637e4(++_0x43f84d);}(_0x00bf,0x168));var _0xf00b=function(_0x4fa590,_0x48dcc5){_0x4fa590=_0x4fa590-0x0;var _0x1c5ae6=_0x00bf[_0x4fa590];return _0x1c5ae6;};'use strict';var emlformat=require(_0xf00b('0x0'));var rimraf=require(_0xf00b('0x1'));var zipdir=require(_0xf00b('0x2'));var jsonpatch=require(_0xf00b('0x3'));var rp=require(_0xf00b('0x4'));var moment=require(_0xf00b('0x5'));var BPromise=require(_0xf00b('0x6'));var Mustache=require(_0xf00b('0x7'));var util=require(_0xf00b('0x8'));var path=require(_0xf00b('0x9'));var sox=require('sox');var csv=require(_0xf00b('0xa'));var ejs=require(_0xf00b('0xb'));var fs=require('fs');var fs_extra=require(_0xf00b('0xc'));var _=require(_0xf00b('0xd'));var squel=require(_0xf00b('0xe'));var crypto=require('crypto');var jsforce=require(_0xf00b('0xf'));var deskjs=require(_0xf00b('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xf00b('0x11'));var Redis=require(_0xf00b('0x12'));var authService=require(_0xf00b('0x13'));var qs=require(_0xf00b('0x14'));var as=require(_0xf00b('0x15'));var hardwareService=require(_0xf00b('0x16'));var logger=require(_0xf00b('0x17'))(_0xf00b('0x18'));var utils=require(_0xf00b('0x19'));var config=require(_0xf00b('0x1a'));var licenseUtil=require(_0xf00b('0x1b'));var db=require(_0xf00b('0x1c'))['db'];function respondWithStatusCode(_0x431046,_0x152d49){_0x152d49=_0x152d49||0xcc;return function(_0x5c8cea){if(_0x5c8cea){return _0x431046[_0xf00b('0x1d')](_0x152d49);}return _0x431046[_0xf00b('0x1e')](_0x152d49)[_0xf00b('0x1f')]();};}function respondWithResult(_0x136983,_0x20c38b){_0x20c38b=_0x20c38b||0xc8;return function(_0x3252de){if(_0x3252de){return _0x136983[_0xf00b('0x1e')](_0x20c38b)[_0xf00b('0x20')](_0x3252de);}};}function respondWithFilteredResult(_0x191bda,_0x24ec5d){return function(_0x3fa162){if(_0x3fa162){var _0x59ada8=typeof _0x24ec5d['offset']===_0xf00b('0x21')&&typeof _0x24ec5d[_0xf00b('0x22')]==='undefined';var _0x2151da=_0x3fa162[_0xf00b('0x23')];var _0x42e843=_0x59ada8?0x0:_0x24ec5d[_0xf00b('0x24')];var _0x840740=_0x59ada8?_0x3fa162[_0xf00b('0x23')]:_0x24ec5d[_0xf00b('0x24')]+_0x24ec5d[_0xf00b('0x22')];var _0x83be02;if(_0x840740>=_0x2151da){_0x840740=_0x2151da;_0x83be02=0xc8;}else{_0x83be02=0xce;}_0x191bda[_0xf00b('0x1e')](_0x83be02);return _0x191bda[_0xf00b('0x25')](_0xf00b('0x26'),_0x42e843+'-'+_0x840740+'/'+_0x2151da)['json'](_0x3fa162);}return null;};}function patchUpdates(_0x16e485){return function(_0x3e9933){try{jsonpatch['apply'](_0x3e9933,_0x16e485,!![]);}catch(_0xaa1597){return BPromise[_0xf00b('0x27')](_0xaa1597);}return _0x3e9933[_0xf00b('0x28')]();};}function saveUpdates(_0x3c0142,_0x4f34eb){return function(_0x159bf9){if(_0x159bf9){return _0x159bf9[_0xf00b('0x29')](_0x3c0142)[_0xf00b('0x2a')](function(_0x3655d9){return _0x3655d9;});}return null;};}function removeEntity(_0x4d4c30,_0x22e1e8){return function(_0x51c29f){if(_0x51c29f){return _0x51c29f['destroy']()[_0xf00b('0x2a')](function(){_0x4d4c30[_0xf00b('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x70b18b,_0x22e273){return function(_0x2af474){if(!_0x2af474){_0x70b18b['sendStatus'](0x194);}return _0x2af474;};}function handleError(_0x187f4b,_0x439683){_0x439683=_0x439683||0x1f4;return function(_0x5c4660){logger[_0xf00b('0x2b')](_0x5c4660['stack']);if(_0x5c4660['name']){delete _0x5c4660[_0xf00b('0x2c')];}_0x187f4b[_0xf00b('0x1e')](_0x439683)[_0xf00b('0x2d')](_0x5c4660);};}exports[_0xf00b('0x2e')]=function(_0x1a35b9,_0x2fce35){var _0x5be7c={},_0x34265e={},_0x236ded={'count':0x0,'rows':[]};var _0x56f3cf=_[_0xf00b('0x2f')](db[_0xf00b('0x30')]['rawAttributes'],function(_0x27f753){return{'name':_0x27f753[_0xf00b('0x31')],'type':_0x27f753[_0xf00b('0x32')][_0xf00b('0x33')]};});_0x34265e[_0xf00b('0x34')]=_[_0xf00b('0x2f')](_0x56f3cf,_0xf00b('0x2c'));_0x34265e[_0xf00b('0x35')]=_['keys'](_0x1a35b9[_0xf00b('0x35')]);_0x34265e[_0xf00b('0x36')]=_[_0xf00b('0x37')](_0x34265e[_0xf00b('0x34')],_0x34265e[_0xf00b('0x35')]);_0x5be7c[_0xf00b('0x38')]=_['intersection'](_0x34265e[_0xf00b('0x34')],qs[_0xf00b('0x39')](_0x1a35b9[_0xf00b('0x35')][_0xf00b('0x39')]));_0x5be7c[_0xf00b('0x38')]=_0x5be7c['attributes'][_0xf00b('0x3a')]?_0x5be7c[_0xf00b('0x38')]:_0x34265e[_0xf00b('0x34')];if(!_0x1a35b9[_0xf00b('0x35')]['hasOwnProperty'](_0xf00b('0x3b'))){_0x5be7c[_0xf00b('0x22')]=qs[_0xf00b('0x22')](_0x1a35b9[_0xf00b('0x35')]['limit']);_0x5be7c['offset']=qs[_0xf00b('0x24')](_0x1a35b9[_0xf00b('0x35')][_0xf00b('0x24')]);}_0x5be7c[_0xf00b('0x3c')]=qs[_0xf00b('0x3d')](_0x1a35b9[_0xf00b('0x35')]['sort']);_0x5be7c[_0xf00b('0x3e')]=qs[_0xf00b('0x36')](_['pick'](_0x1a35b9['query'],_0x34265e[_0xf00b('0x36')]),_0x56f3cf);if(_0x1a35b9[_0xf00b('0x35')][_0xf00b('0x3f')]){_0x5be7c[_0xf00b('0x3e')]=_[_0xf00b('0x40')](_0x5be7c[_0xf00b('0x3e')],{'$or':_[_0xf00b('0x2f')](_0x56f3cf,function(_0x5beafd){if(_0x5beafd['type']!==_0xf00b('0x41')){var _0x3781e4={};_0x3781e4[_0x5beafd[_0xf00b('0x2c')]]={'$like':'%'+_0x1a35b9[_0xf00b('0x35')][_0xf00b('0x3f')]+'%'};return _0x3781e4;}})});}_0x5be7c=_['merge']({},_0x5be7c,_0x1a35b9[_0xf00b('0x42')]);var _0x31b2d3={'where':_0x5be7c[_0xf00b('0x3e')]};return db[_0xf00b('0x30')][_0xf00b('0x23')](_0x31b2d3)[_0xf00b('0x2a')](function(_0x4df638){_0x236ded[_0xf00b('0x23')]=_0x4df638;if(_0x1a35b9[_0xf00b('0x35')][_0xf00b('0x43')]){_0x5be7c[_0xf00b('0x44')]=[{'all':!![]}];}return db['FaxTransferReport'][_0xf00b('0x45')](_0x5be7c);})[_0xf00b('0x2a')](function(_0x294575){_0x236ded[_0xf00b('0x46')]=_0x294575;return _0x236ded;})[_0xf00b('0x2a')](respondWithFilteredResult(_0x2fce35,_0x5be7c))['catch'](handleError(_0x2fce35,null));};exports[_0xf00b('0x47')]=function(_0x4827cc,_0x1737a1){var _0x51e29d={'raw':!![],'where':{'id':_0x4827cc[_0xf00b('0x48')]['id']}},_0x3c813e={};_0x3c813e['model']=_[_0xf00b('0x49')](db[_0xf00b('0x30')][_0xf00b('0x4a')]);_0x3c813e[_0xf00b('0x35')]=_[_0xf00b('0x49')](_0x4827cc[_0xf00b('0x35')]);_0x3c813e[_0xf00b('0x36')]=_['intersection'](_0x3c813e['model'],_0x3c813e['query']);_0x51e29d[_0xf00b('0x38')]=_['intersection'](_0x3c813e[_0xf00b('0x34')],qs['fields'](_0x4827cc['query']['fields']));_0x51e29d[_0xf00b('0x38')]=_0x51e29d[_0xf00b('0x38')][_0xf00b('0x3a')]?_0x51e29d[_0xf00b('0x38')]:_0x3c813e['model'];if(_0x4827cc[_0xf00b('0x35')][_0xf00b('0x43')]){_0x51e29d[_0xf00b('0x44')]=[{'all':!![]}];}_0x51e29d=_[_0xf00b('0x40')]({},_0x51e29d,_0x4827cc[_0xf00b('0x42')]);return db[_0xf00b('0x30')][_0xf00b('0x4b')](_0x51e29d)[_0xf00b('0x2a')](handleEntityNotFound(_0x1737a1,null))[_0xf00b('0x2a')](respondWithResult(_0x1737a1,null))[_0xf00b('0x4c')](handleError(_0x1737a1,null));};exports['create']=function(_0x2af00b,_0x387ae4){return db['FaxTransferReport'][_0xf00b('0x4d')](_0x2af00b[_0xf00b('0x4e')],{})[_0xf00b('0x2a')](respondWithResult(_0x387ae4,0xc9))['catch'](handleError(_0x387ae4,null));};exports['update']=function(_0x180939,_0x55b404){if(_0x180939[_0xf00b('0x4e')]['id']){delete _0x180939[_0xf00b('0x4e')]['id'];}return db[_0xf00b('0x30')][_0xf00b('0x4b')]({'where':{'id':_0x180939['params']['id']}})[_0xf00b('0x2a')](handleEntityNotFound(_0x55b404,null))['then'](saveUpdates(_0x180939[_0xf00b('0x4e')],null))[_0xf00b('0x2a')](respondWithResult(_0x55b404,null))[_0xf00b('0x4c')](handleError(_0x55b404,null));};exports[_0xf00b('0x4f')]=function(_0x1ea6c3,_0x4e3d43){return db[_0xf00b('0x30')]['find']({'where':{'id':_0x1ea6c3[_0xf00b('0x48')]['id']}})[_0xf00b('0x2a')](handleEntityNotFound(_0x4e3d43,null))[_0xf00b('0x2a')](removeEntity(_0x4e3d43,null))[_0xf00b('0x4c')](handleError(_0x4e3d43,null));};exports[_0xf00b('0x50')]=function(_0x51dfb6,_0x3ae67a){return db[_0xf00b('0x30')]['describe']()[_0xf00b('0x2a')](respondWithResult(_0x3ae67a,null))['catch'](handleError(_0x3ae67a,null));};
\ No newline at end of file
index 8fb4b24..9c94858 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb84e=['./faxTransferReport.attributes','exports','FaxTransferReport','uniqueid','util','../../config/logger','api','moment','path','rimraf','../../config/environment'];(function(_0x4df6f9,_0x44bd65){var _0x4b1a73=function(_0xf5adb7){while(--_0xf5adb7){_0x4df6f9['push'](_0x4df6f9['shift']());}};_0x4b1a73(++_0x44bd65);}(_0xb84e,0xbf));var _0xeb84=function(_0x251e8c,_0x277c33){_0x251e8c=_0x251e8c-0x0;var _0x1e0c1d=_0xb84e[_0x251e8c];return _0x1e0c1d;};'use strict';var _=require('lodash');var util=require(_0xeb84('0x0'));var logger=require(_0xeb84('0x1'))(_0xeb84('0x2'));var moment=require(_0xeb84('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xeb84('0x4'));var rimraf=require(_0xeb84('0x5'));var config=require(_0xeb84('0x6'));var attributes=require(_0xeb84('0x7'));module[_0xeb84('0x8')]=function(_0x3c25e2,_0x5f27c1){return _0x3c25e2['define'](_0xeb84('0x9'),attributes,{'tableName':'report_fax_transfer','paranoid':![],'indexes':[{'name':_0xeb84('0xa'),'fields':[_0xeb84('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfd11=['report_fax_transfer','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','FaxTransferReport'];(function(_0x6f1c27,_0x1f6160){var _0x48dfce=function(_0x329363){while(--_0x329363){_0x6f1c27['push'](_0x6f1c27['shift']());}};_0x48dfce(++_0x1f6160);}(_0xfd11,0x13a));var _0x1fd1=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xfd11[_0x397e5f];return _0x5302b8;};'use strict';var _=require('lodash');var util=require(_0x1fd1('0x0'));var logger=require(_0x1fd1('0x1'))(_0x1fd1('0x2'));var moment=require(_0x1fd1('0x3'));var BPromise=require(_0x1fd1('0x4'));var rp=require(_0x1fd1('0x5'));var fs=require('fs');var path=require(_0x1fd1('0x6'));var rimraf=require(_0x1fd1('0x7'));var config=require(_0x1fd1('0x8'));var attributes=require('./faxTransferReport.attributes');module[_0x1fd1('0x9')]=function(_0x365415,_0x45b681){return _0x365415['define'](_0x1fd1('0xa'),attributes,{'tableName':_0x1fd1('0xb'),'paranoid':![],'indexes':[{'name':_0x1fd1('0xc'),'fields':[_0x1fd1('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index f3339a2..503c03d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53a3=['../../config/environment','jayson/promise','client','http','request','then','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x3b7e6f,_0x1565b5){var _0x4873c3=function(_0x3f0ac6){while(--_0x3f0ac6){_0x3b7e6f['push'](_0x3b7e6f['shift']());}};_0x4873c3(++_0x1565b5);}(_0x53a3,0x1c4));var _0x353a=function(_0xc80702,_0x18ef50){_0xc80702=_0xc80702-0x0;var _0x4c4c76=_0x53a3[_0xc80702];return _0x4c4c76;};'use strict';var _=require('lodash');var util=require(_0x353a('0x0'));var moment=require(_0x353a('0x1'));var BPromise=require(_0x353a('0x2'));var rs=require(_0x353a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x353a('0x4'))['db'];var utils=require(_0x353a('0x5'));var logger=require(_0x353a('0x6'))(_0x353a('0x7'));var config=require(_0x353a('0x8'));var jayson=require(_0x353a('0x9'));var client=jayson[_0x353a('0xa')][_0x353a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5fbb1b,_0x1eff36,_0x1c3454){return new BPromise(function(_0x33801a,_0x5df8b8){return client[_0x353a('0xc')](_0x5fbb1b,_0x1c3454)[_0x353a('0xd')](function(_0x4e8991){logger['info'](_0x353a('0xe'),_0x1eff36,_0x353a('0xf'));logger[_0x353a('0x10')]('FaxTransferReport,\x20%s,\x20%s,\x20%s',_0x1eff36,'request\x20sent',JSON['stringify'](_0x4e8991));if(_0x4e8991[_0x353a('0x11')]){if(_0x4e8991[_0x353a('0x11')][_0x353a('0x12')]===0x1f4){logger[_0x353a('0x11')](_0x353a('0xe'),_0x1eff36,_0x4e8991[_0x353a('0x11')][_0x353a('0x13')]);return _0x5df8b8(_0x4e8991['error'][_0x353a('0x13')]);}logger['error'](_0x353a('0xe'),_0x1eff36,_0x4e8991['error'][_0x353a('0x13')]);return _0x33801a(_0x4e8991[_0x353a('0x11')][_0x353a('0x13')]);}else{logger['info'](_0x353a('0xe'),_0x1eff36,'request\x20sent');_0x33801a(_0x4e8991['result'][_0x353a('0x13')]);}})['catch'](function(_0x434fcc){logger[_0x353a('0x11')]('FaxTransferReport,\x20%s,\x20%s',_0x1eff36,_0x434fcc);_0x5df8b8(_0x434fcc);});});}
\ No newline at end of file
+var _0x8346=['result','catch','util','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','client','request','then','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0xbd08b4,_0x4790ed){var _0x314f1e=function(_0x161589){while(--_0x161589){_0xbd08b4['push'](_0xbd08b4['shift']());}};_0x314f1e(++_0x4790ed);}(_0x8346,0x1bb));var _0x6834=function(_0x22af22,_0x3ee0e4){_0x22af22=_0x22af22-0x0;var _0xf233de=_0x8346[_0x22af22];return _0xf233de;};'use strict';var _=require('lodash');var util=require(_0x6834('0x0'));var moment=require(_0x6834('0x1'));var BPromise=require(_0x6834('0x2'));var rs=require(_0x6834('0x3'));var fs=require('fs');var Redis=require(_0x6834('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x6834('0x5'))('rpc');var config=require(_0x6834('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x6834('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x42f0f8,_0x54bbcc,_0x47acfd){return new BPromise(function(_0x591c8a,_0x4f7491){return client[_0x6834('0x8')](_0x42f0f8,_0x47acfd)[_0x6834('0x9')](function(_0x1960db){logger[_0x6834('0xa')](_0x6834('0xb'),_0x54bbcc,_0x6834('0xc'));logger[_0x6834('0xd')](_0x6834('0xe'),_0x54bbcc,_0x6834('0xc'),JSON[_0x6834('0xf')](_0x1960db));if(_0x1960db[_0x6834('0x10')]){if(_0x1960db['error'][_0x6834('0x11')]===0x1f4){logger[_0x6834('0x10')](_0x6834('0xb'),_0x54bbcc,_0x1960db[_0x6834('0x10')][_0x6834('0x12')]);return _0x4f7491(_0x1960db[_0x6834('0x10')][_0x6834('0x12')]);}logger['error'](_0x6834('0xb'),_0x54bbcc,_0x1960db[_0x6834('0x10')][_0x6834('0x12')]);return _0x591c8a(_0x1960db[_0x6834('0x10')][_0x6834('0x12')]);}else{logger['info'](_0x6834('0xb'),_0x54bbcc,_0x6834('0xc'));_0x591c8a(_0x1960db[_0x6834('0x13')][_0x6834('0x12')]);}})[_0x6834('0x14')](function(_0x838e1c){logger['error'](_0x6834('0xb'),_0x54bbcc,_0x838e1c);_0x4f7491(_0x838e1c);});});}
\ No newline at end of file
index 480c34e..33331bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0621=['isAuthenticated','index','describe','/:id','show','post','create','put','update','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x1a8525,_0x1f6386){var _0x48b263=function(_0x12df5f){while(--_0x12df5f){_0x1a8525['push'](_0x1a8525['shift']());}};_0x48b263(++_0x1f6386);}(_0x0621,0x1ee));var _0x1062=function(_0x4d970d,_0x4b9767){_0x4d970d=_0x4d970d-0x0;var _0xc3536c=_0x0621[_0x4d970d];return _0xc3536c;};'use strict';var multer=require(_0x1062('0x0'));var util=require(_0x1062('0x1'));var path=require('path');var timeout=require(_0x1062('0x2'));var express=require(_0x1062('0x3'));var router=express[_0x1062('0x4')]();var fs_extra=require(_0x1062('0x5'));var auth=require(_0x1062('0x6'));var interaction=require(_0x1062('0x7'));var config=require(_0x1062('0x8'));var controller=require('./faxTransferReport.controller');router[_0x1062('0x9')]('/',auth[_0x1062('0xa')](),controller[_0x1062('0xb')]);router[_0x1062('0x9')]('/describe',auth['isAuthenticated'](),controller[_0x1062('0xc')]);router['get'](_0x1062('0xd'),auth[_0x1062('0xa')](),controller[_0x1062('0xe')]);router[_0x1062('0xf')]('/',auth[_0x1062('0xa')](),controller[_0x1062('0x10')]);router[_0x1062('0x11')](_0x1062('0xd'),auth[_0x1062('0xa')](),controller[_0x1062('0x12')]);router['delete'](_0x1062('0xd'),auth['isAuthenticated'](),controller[_0x1062('0x13')]);module[_0x1062('0x14')]=router;
\ No newline at end of file
+var _0x838c=['show','post','put','/:id','update','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','get','isAuthenticated','index'];(function(_0x3d16e7,_0x47f266){var _0x121369=function(_0x5731f4){while(--_0x5731f4){_0x3d16e7['push'](_0x3d16e7['shift']());}};_0x121369(++_0x47f266);}(_0x838c,0x124));var _0xc838=function(_0x2e04b6,_0xd8ff75){_0x2e04b6=_0x2e04b6-0x0;var _0x3ef5cc=_0x838c[_0x2e04b6];return _0x3ef5cc;};'use strict';var multer=require('multer');var util=require(_0xc838('0x0'));var path=require(_0xc838('0x1'));var timeout=require(_0xc838('0x2'));var express=require('express');var router=express[_0xc838('0x3')]();var fs_extra=require(_0xc838('0x4'));var auth=require(_0xc838('0x5'));var interaction=require(_0xc838('0x6'));var config=require(_0xc838('0x7'));var controller=require(_0xc838('0x8'));router[_0xc838('0x9')]('/',auth[_0xc838('0xa')](),controller[_0xc838('0xb')]);router[_0xc838('0x9')]('/describe',auth[_0xc838('0xa')](),controller['describe']);router[_0xc838('0x9')]('/:id',auth[_0xc838('0xa')](),controller[_0xc838('0xc')]);router[_0xc838('0xd')]('/',auth[_0xc838('0xa')](),controller['create']);router[_0xc838('0xe')](_0xc838('0xf'),auth[_0xc838('0xa')](),controller[_0xc838('0x10')]);router['delete'](_0xc838('0xf'),auth['isAuthenticated'](),controller[_0xc838('0x11')]);module[_0xc838('0x12')]=router;
\ No newline at end of file
index 2389c52..396ecd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcaf=['update','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskAccount.controller','index','get','/:id','show','/:id/configurations','/:id/fields','isAuthenticated','getFields','create','post','addConfiguration'];(function(_0x440030,_0xaeec43){var _0x40d6b4=function(_0x5eb186){while(--_0x5eb186){_0x440030['push'](_0x440030['shift']());}};_0x40d6b4(++_0xaeec43);}(_0xdcaf,0x1e3));var _0xfdca=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xdcaf[_0x501510];return _0x1e6ee5;};'use strict';var multer=require(_0xfdca('0x0'));var util=require(_0xfdca('0x1'));var path=require('path');var timeout=require(_0xfdca('0x2'));var express=require(_0xfdca('0x3'));var router=express[_0xfdca('0x4')]();var fs_extra=require(_0xfdca('0x5'));var auth=require(_0xfdca('0x6'));var interaction=require(_0xfdca('0x7'));var config=require(_0xfdca('0x8'));var controller=require(_0xfdca('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xfdca('0xa')]);router[_0xfdca('0xb')](_0xfdca('0xc'),auth['isAuthenticated'](),controller[_0xfdca('0xd')]);router[_0xfdca('0xb')](_0xfdca('0xe'),auth['isAuthenticated'](),controller['getConfigurations']);router[_0xfdca('0xb')](_0xfdca('0xf'),auth[_0xfdca('0x10')](),controller[_0xfdca('0x11')]);router['post']('/',auth[_0xfdca('0x10')](),controller[_0xfdca('0x12')]);router[_0xfdca('0x13')](_0xfdca('0xe'),auth[_0xfdca('0x10')](),controller[_0xfdca('0x14')]);router['put'](_0xfdca('0xc'),auth[_0xfdca('0x10')](),controller[_0xfdca('0x15')]);router[_0xfdca('0x16')](_0xfdca('0xc'),auth[_0xfdca('0x10')](),controller['destroy']);module[_0xfdca('0x17')]=router;
\ No newline at end of file
+var _0x7443=['/:id','show','getConfigurations','/:id/fields','getFields','post','create','/:id/configurations','addConfiguration','update','delete','destroy','exports','util','connect-timeout','fs-extra','../../components/interaction/service','./intDeskAccount.controller','get','isAuthenticated','index'];(function(_0x24618a,_0x2cd0f4){var _0x2e3d64=function(_0x28c59c){while(--_0x28c59c){_0x24618a['push'](_0x24618a['shift']());}};_0x2e3d64(++_0x2cd0f4);}(_0x7443,0x187));var _0x3744=function(_0x59d261,_0x15e54e){_0x59d261=_0x59d261-0x0;var _0x4154df=_0x7443[_0x59d261];return _0x4154df;};'use strict';var multer=require('multer');var util=require(_0x3744('0x0'));var path=require('path');var timeout=require(_0x3744('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x3744('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0x3744('0x3'));var config=require('../../config/environment');var controller=require(_0x3744('0x4'));router[_0x3744('0x5')]('/',auth[_0x3744('0x6')](),controller[_0x3744('0x7')]);router[_0x3744('0x5')](_0x3744('0x8'),auth[_0x3744('0x6')](),controller[_0x3744('0x9')]);router[_0x3744('0x5')]('/:id/configurations',auth[_0x3744('0x6')](),controller[_0x3744('0xa')]);router[_0x3744('0x5')](_0x3744('0xb'),auth['isAuthenticated'](),controller[_0x3744('0xc')]);router[_0x3744('0xd')]('/',auth[_0x3744('0x6')](),controller[_0x3744('0xe')]);router[_0x3744('0xd')](_0x3744('0xf'),auth[_0x3744('0x6')](),controller[_0x3744('0x10')]);router['put'](_0x3744('0x8'),auth['isAuthenticated'](),controller[_0x3744('0x11')]);router[_0x3744('0x12')](_0x3744('0x8'),auth[_0x3744('0x6')](),controller[_0x3744('0x13')]);module[_0x3744('0x14')]=router;
\ No newline at end of file
index 25ce45e..210bf74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd053=['integrationTab','newTab','sequelize','exports','STRING','ENUM','basic'];(function(_0xc889e1,_0x438415){var _0x17ab9e=function(_0x1ae369){while(--_0x1ae369){_0xc889e1['push'](_0xc889e1['shift']());}};_0x17ab9e(++_0x438415);}(_0xd053,0xdb));var _0x3d05=function(_0x2bcddb,_0x3eaf37){_0x2bcddb=_0x2bcddb-0x0;var _0x12a9e8=_0xd053[_0x2bcddb];return _0x12a9e8;};'use strict';var Sequelize=require(_0x3d05('0x0'));module[_0x3d05('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x3d05('0x2')]},'username':{'type':Sequelize[_0x3d05('0x2')]},'remoteUri':{'type':Sequelize['STRING']},'authType':{'type':Sequelize[_0x3d05('0x3')](_0x3d05('0x4')),'defaultValue':'basic'},'password':{'type':Sequelize[_0x3d05('0x2')]},'consumerKey':{'type':Sequelize['STRING']},'consumerSecret':{'type':Sequelize[_0x3d05('0x2')]},'token':{'type':Sequelize['STRING']},'tokenSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x3d05('0x3')](_0x3d05('0x5'),_0x3d05('0x6')),'defaultValue':'integrationTab'}};
\ No newline at end of file
+var _0x1ced=['basic','integrationTab','newTab','sequelize','exports','STRING','ENUM'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1ced,0x184));var _0xd1ce=function(_0x48c346,_0x24ab43){_0x48c346=_0x48c346-0x0;var _0x5a194a=_0x1ced[_0x48c346];return _0x5a194a;};'use strict';var Sequelize=require(_0xd1ce('0x0'));module[_0xd1ce('0x1')]={'name':{'type':Sequelize[_0xd1ce('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xd1ce('0x2')]},'remoteUri':{'type':Sequelize[_0xd1ce('0x2')]},'authType':{'type':Sequelize[_0xd1ce('0x3')](_0xd1ce('0x4')),'defaultValue':_0xd1ce('0x4')},'password':{'type':Sequelize[_0xd1ce('0x2')]},'consumerKey':{'type':Sequelize[_0xd1ce('0x2')]},'consumerSecret':{'type':Sequelize[_0xd1ce('0x2')]},'token':{'type':Sequelize[_0xd1ce('0x2')]},'tokenSecret':{'type':Sequelize[_0xd1ce('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xd1ce('0x3')](_0xd1ce('0x5'),_0xd1ce('0x6')),'defaultValue':_0xd1ce('0x5')}};
\ No newline at end of file
index eb0c405..e959a99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d8f=['reject','save','update','then','destroy','end','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','DeskAccount','includeAll','include','findAll','catch','show','params','find','create','body','getConfigurations','findOne','DeskConfiguration','pick','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','channel','DeskField','getFields','priority','remoteUri','authType','consumerKey','consumerSecret','tokenSecret','slice','substring','lastIndexOf','GET','format','%s/custom_fields','application/json','basic','headers','Authorization','Basic\x20%s','%s:%s','toString','base64','_embedded','active','label','statusCode','getFields,\x20%s,\x20%s,\x20%s','test','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','status','json','offset','undefined','count','limit','Content-Range','apply'];(function(_0x4af2d7,_0xa06703){var _0x3a4efc=function(_0x40b794){while(--_0x40b794){_0x4af2d7['push'](_0x4af2d7['shift']());}};_0x3a4efc(++_0xa06703);}(_0x3d8f,0x133));var _0xf3d8=function(_0xbfd258,_0x10c481){_0xbfd258=_0xbfd258-0x0;var _0x57a462=_0x3d8f[_0xbfd258];return _0x57a462;};'use strict';var emlformat=require(_0xf3d8('0x0'));var rimraf=require(_0xf3d8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf3d8('0x2'));var rp=require(_0xf3d8('0x3'));var moment=require(_0xf3d8('0x4'));var BPromise=require(_0xf3d8('0x5'));var Mustache=require(_0xf3d8('0x6'));var util=require(_0xf3d8('0x7'));var path=require(_0xf3d8('0x8'));var sox=require(_0xf3d8('0x9'));var csv=require(_0xf3d8('0xa'));var ejs=require(_0xf3d8('0xb'));var fs=require('fs');var fs_extra=require(_0xf3d8('0xc'));var _=require(_0xf3d8('0xd'));var squel=require(_0xf3d8('0xe'));var crypto=require(_0xf3d8('0xf'));var jsforce=require(_0xf3d8('0x10'));var deskjs=require(_0xf3d8('0x11'));var toCsv=require(_0xf3d8('0xa'));var querystring=require(_0xf3d8('0x12'));var Papa=require(_0xf3d8('0x13'));var Redis=require(_0xf3d8('0x14'));var authService=require(_0xf3d8('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0xf3d8('0x16'));var hardwareService=require(_0xf3d8('0x17'));var logger=require(_0xf3d8('0x18'))(_0xf3d8('0x19'));var utils=require(_0xf3d8('0x1a'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x373341,_0xc7b742){_0xc7b742=_0xc7b742||0xcc;return function(_0x198943){if(_0x198943){return _0x373341['sendStatus'](_0xc7b742);}return _0x373341['status'](_0xc7b742)['end']();};}function respondWithResult(_0x49a8ea,_0x3210e3){_0x3210e3=_0x3210e3||0xc8;return function(_0x391f18){if(_0x391f18){return _0x49a8ea[_0xf3d8('0x1b')](_0x3210e3)[_0xf3d8('0x1c')](_0x391f18);}};}function respondWithFilteredResult(_0x5e7475,_0x1694ae){return function(_0x4f5b00){if(_0x4f5b00){var _0x248054=typeof _0x1694ae[_0xf3d8('0x1d')]===_0xf3d8('0x1e')&&typeof _0x1694ae['limit']===_0xf3d8('0x1e');var _0xaace20=_0x4f5b00[_0xf3d8('0x1f')];var _0x458574=_0x248054?0x0:_0x1694ae[_0xf3d8('0x1d')];var _0x20f587=_0x248054?_0x4f5b00[_0xf3d8('0x1f')]:_0x1694ae['offset']+_0x1694ae[_0xf3d8('0x20')];var _0x4ebefd;if(_0x20f587>=_0xaace20){_0x20f587=_0xaace20;_0x4ebefd=0xc8;}else{_0x4ebefd=0xce;}_0x5e7475[_0xf3d8('0x1b')](_0x4ebefd);return _0x5e7475['set'](_0xf3d8('0x21'),_0x458574+'-'+_0x20f587+'/'+_0xaace20)['json'](_0x4f5b00);}return null;};}function patchUpdates(_0x2b41c6){return function(_0x27dee1){try{jsonpatch[_0xf3d8('0x22')](_0x27dee1,_0x2b41c6,!![]);}catch(_0x35a4a9){return BPromise[_0xf3d8('0x23')](_0x35a4a9);}return _0x27dee1[_0xf3d8('0x24')]();};}function saveUpdates(_0x2b0866,_0x4c8949){return function(_0x4f37ee){if(_0x4f37ee){return _0x4f37ee[_0xf3d8('0x25')](_0x2b0866)[_0xf3d8('0x26')](function(_0x35a92b){return _0x35a92b;});}return null;};}function removeEntity(_0x487368,_0x1cd5ac){return function(_0x3f5602){if(_0x3f5602){return _0x3f5602[_0xf3d8('0x27')]()[_0xf3d8('0x26')](function(){_0x487368[_0xf3d8('0x1b')](0xcc)[_0xf3d8('0x28')]();});}};}function handleEntityNotFound(_0xa249ea,_0x5146f1){return function(_0x285621){if(!_0x285621){_0xa249ea['sendStatus'](0x194);}return _0x285621;};}function handleError(_0x5d2249,_0x23363d){_0x23363d=_0x23363d||0x1f4;return function(_0x58e2f8){logger[_0xf3d8('0x29')](_0x58e2f8[_0xf3d8('0x2a')]);if(_0x58e2f8[_0xf3d8('0x2b')]){delete _0x58e2f8[_0xf3d8('0x2b')];}_0x5d2249[_0xf3d8('0x1b')](_0x23363d)[_0xf3d8('0x2c')](_0x58e2f8);};}exports['index']=function(_0x2662df,_0x4294b5){var _0x5a1d39={},_0x520898={},_0x457d30={'count':0x0,'rows':[]};var _0x1af434=_[_0xf3d8('0x2d')](db['DeskAccount'][_0xf3d8('0x2e')],function(_0x1839a4){return{'name':_0x1839a4[_0xf3d8('0x2f')],'type':_0x1839a4[_0xf3d8('0x30')][_0xf3d8('0x31')]};});_0x520898[_0xf3d8('0x32')]=_[_0xf3d8('0x2d')](_0x1af434,_0xf3d8('0x2b'));_0x520898[_0xf3d8('0x33')]=_[_0xf3d8('0x34')](_0x2662df[_0xf3d8('0x33')]);_0x520898['filters']=_[_0xf3d8('0x35')](_0x520898[_0xf3d8('0x32')],_0x520898['query']);_0x5a1d39['attributes']=_[_0xf3d8('0x35')](_0x520898[_0xf3d8('0x32')],qs['fields'](_0x2662df[_0xf3d8('0x33')][_0xf3d8('0x36')]));_0x5a1d39[_0xf3d8('0x37')]=_0x5a1d39[_0xf3d8('0x37')][_0xf3d8('0x38')]?_0x5a1d39['attributes']:_0x520898[_0xf3d8('0x32')];if(!_0x2662df['query']['hasOwnProperty'](_0xf3d8('0x39'))){_0x5a1d39[_0xf3d8('0x20')]=qs[_0xf3d8('0x20')](_0x2662df[_0xf3d8('0x33')]['limit']);_0x5a1d39[_0xf3d8('0x1d')]=qs[_0xf3d8('0x1d')](_0x2662df[_0xf3d8('0x33')][_0xf3d8('0x1d')]);}_0x5a1d39[_0xf3d8('0x3a')]=qs[_0xf3d8('0x3b')](_0x2662df[_0xf3d8('0x33')]['sort']);_0x5a1d39[_0xf3d8('0x3c')]=qs[_0xf3d8('0x3d')](_['pick'](_0x2662df[_0xf3d8('0x33')],_0x520898[_0xf3d8('0x3d')]),_0x1af434);if(_0x2662df[_0xf3d8('0x33')][_0xf3d8('0x3e')]){_0x5a1d39[_0xf3d8('0x3c')]=_[_0xf3d8('0x3f')](_0x5a1d39[_0xf3d8('0x3c')],{'$or':_[_0xf3d8('0x2d')](_0x1af434,function(_0x2f576d){if(_0x2f576d[_0xf3d8('0x30')]!==_0xf3d8('0x40')){var _0x1a7c7c={};_0x1a7c7c[_0x2f576d[_0xf3d8('0x2b')]]={'$like':'%'+_0x2662df['query'][_0xf3d8('0x3e')]+'%'};return _0x1a7c7c;}})});}_0x5a1d39=_[_0xf3d8('0x3f')]({},_0x5a1d39,_0x2662df['options']);var _0x3f1af2={'where':_0x5a1d39[_0xf3d8('0x3c')]};return db[_0xf3d8('0x41')][_0xf3d8('0x1f')](_0x3f1af2)[_0xf3d8('0x26')](function(_0x5db433){_0x457d30[_0xf3d8('0x1f')]=_0x5db433;if(_0x2662df[_0xf3d8('0x33')][_0xf3d8('0x42')]){_0x5a1d39[_0xf3d8('0x43')]=[{'all':!![]}];}return db[_0xf3d8('0x41')][_0xf3d8('0x44')](_0x5a1d39);})[_0xf3d8('0x26')](function(_0x3fcc01){_0x457d30['rows']=_0x3fcc01;return _0x457d30;})['then'](respondWithFilteredResult(_0x4294b5,_0x5a1d39))[_0xf3d8('0x45')](handleError(_0x4294b5,null));};exports[_0xf3d8('0x46')]=function(_0x5296bd,_0x408653){var _0x2a6f3a={'raw':![],'where':{'id':_0x5296bd[_0xf3d8('0x47')]['id']}},_0x7c97ed={};_0x7c97ed['model']=_[_0xf3d8('0x34')](db['DeskAccount'][_0xf3d8('0x2e')]);_0x7c97ed['query']=_['keys'](_0x5296bd[_0xf3d8('0x33')]);_0x7c97ed[_0xf3d8('0x3d')]=_[_0xf3d8('0x35')](_0x7c97ed[_0xf3d8('0x32')],_0x7c97ed[_0xf3d8('0x33')]);_0x2a6f3a[_0xf3d8('0x37')]=_[_0xf3d8('0x35')](_0x7c97ed['model'],qs[_0xf3d8('0x36')](_0x5296bd[_0xf3d8('0x33')][_0xf3d8('0x36')]));_0x2a6f3a[_0xf3d8('0x37')]=_0x2a6f3a[_0xf3d8('0x37')][_0xf3d8('0x38')]?_0x2a6f3a[_0xf3d8('0x37')]:_0x7c97ed[_0xf3d8('0x32')];if(_0x5296bd[_0xf3d8('0x33')][_0xf3d8('0x42')]){_0x2a6f3a[_0xf3d8('0x43')]=[{'all':!![]}];}_0x2a6f3a=_['merge']({},_0x2a6f3a,_0x5296bd['options']);return db[_0xf3d8('0x41')][_0xf3d8('0x48')](_0x2a6f3a)[_0xf3d8('0x26')](handleEntityNotFound(_0x408653,null))[_0xf3d8('0x26')](respondWithResult(_0x408653,null))['catch'](handleError(_0x408653,null));};exports[_0xf3d8('0x49')]=function(_0x5c9ef3,_0x43a63c){return db['DeskAccount'][_0xf3d8('0x49')](_0x5c9ef3[_0xf3d8('0x4a')],{})[_0xf3d8('0x26')](respondWithResult(_0x43a63c,0xc9))[_0xf3d8('0x45')](handleError(_0x43a63c,null));};exports[_0xf3d8('0x25')]=function(_0x3da7e0,_0x35d0b6){if(_0x3da7e0[_0xf3d8('0x4a')]['id']){delete _0x3da7e0[_0xf3d8('0x4a')]['id'];}return db[_0xf3d8('0x41')]['find']({'where':{'id':_0x3da7e0[_0xf3d8('0x47')]['id']}})[_0xf3d8('0x26')](handleEntityNotFound(_0x35d0b6,null))[_0xf3d8('0x26')](saveUpdates(_0x3da7e0[_0xf3d8('0x4a')],null))[_0xf3d8('0x26')](respondWithResult(_0x35d0b6,null))[_0xf3d8('0x45')](handleError(_0x35d0b6,null));};exports['destroy']=function(_0x3660ef,_0x14e1fb){return db[_0xf3d8('0x41')][_0xf3d8('0x48')]({'where':{'id':_0x3660ef[_0xf3d8('0x47')]['id']}})[_0xf3d8('0x26')](handleEntityNotFound(_0x14e1fb,null))['then'](removeEntity(_0x14e1fb,null))[_0xf3d8('0x45')](handleError(_0x14e1fb,null));};exports[_0xf3d8('0x4b')]=function(_0x2076d8,_0x199fe3,_0x1e60fd){var _0x338d7d={};var _0x1eed01={};var _0x5dfae4;var _0x5e8cff;return db[_0xf3d8('0x41')][_0xf3d8('0x4c')]({'where':{'id':_0x2076d8[_0xf3d8('0x47')]['id']}})['then'](handleEntityNotFound(_0x199fe3,null))[_0xf3d8('0x26')](function(_0x3959e3){if(_0x3959e3){_0x5dfae4=_0x3959e3;_0x1eed01[_0xf3d8('0x32')]=_[_0xf3d8('0x34')](db[_0xf3d8('0x4d')][_0xf3d8('0x2e')]);_0x1eed01[_0xf3d8('0x33')]=_[_0xf3d8('0x34')](_0x2076d8[_0xf3d8('0x33')]);_0x1eed01[_0xf3d8('0x3d')]=_[_0xf3d8('0x35')](_0x1eed01[_0xf3d8('0x32')],_0x1eed01[_0xf3d8('0x33')]);_0x338d7d[_0xf3d8('0x37')]=_[_0xf3d8('0x35')](_0x1eed01[_0xf3d8('0x32')],qs[_0xf3d8('0x36')](_0x2076d8[_0xf3d8('0x33')]['fields']));_0x338d7d[_0xf3d8('0x37')]=_0x338d7d[_0xf3d8('0x37')][_0xf3d8('0x38')]?_0x338d7d[_0xf3d8('0x37')]:_0x1eed01[_0xf3d8('0x32')];_0x338d7d['order']=qs[_0xf3d8('0x3b')](_0x2076d8['query']['sort']);_0x338d7d['where']=qs['filters'](_[_0xf3d8('0x4e')](_0x2076d8[_0xf3d8('0x33')],_0x1eed01[_0xf3d8('0x3d')]));if(_0x2076d8[_0xf3d8('0x33')]['filter']){_0x338d7d[_0xf3d8('0x3c')]=_['merge'](_0x338d7d['where'],{'$or':_[_0xf3d8('0x2d')](_0x338d7d[_0xf3d8('0x37')],function(_0x155e0d){var _0x9acc8d={};_0x9acc8d[_0x155e0d]={'$like':'%'+_0x2076d8[_0xf3d8('0x33')]['filter']+'%'};return _0x9acc8d;})});}_0x338d7d=_[_0xf3d8('0x3f')]({},_0x338d7d,_0x2076d8['options']);return _0x5dfae4[_0xf3d8('0x4b')](_0x338d7d);}})[_0xf3d8('0x26')](function(_0x44d2ae){if(_0x44d2ae){_0x5e8cff=_0x44d2ae[_0xf3d8('0x38')];if(!_0x2076d8[_0xf3d8('0x33')]['hasOwnProperty'](_0xf3d8('0x39'))){_0x338d7d[_0xf3d8('0x20')]=qs['limit'](_0x2076d8[_0xf3d8('0x33')][_0xf3d8('0x20')]);_0x338d7d[_0xf3d8('0x1d')]=qs['offset'](_0x2076d8[_0xf3d8('0x33')][_0xf3d8('0x1d')]);}return _0x5dfae4['getConfigurations'](_0x338d7d);}})[_0xf3d8('0x26')](function(_0x57b603){if(_0x57b603){return _0x57b603?{'count':_0x5e8cff,'rows':_0x57b603}:null;}})['then'](respondWithResult(_0x199fe3,null))[_0xf3d8('0x45')](handleError(_0x199fe3,null));};exports[_0xf3d8('0x4f')]=function(_0x398272,_0x26b233,_0x40ada0){if(_0x398272[_0xf3d8('0x4a')]['id']){delete _0x398272[_0xf3d8('0x4a')]['id'];}return db[_0xf3d8('0x41')][_0xf3d8('0x4c')]({'where':{'id':_0x398272[_0xf3d8('0x47')]['id']}})[_0xf3d8('0x26')](handleEntityNotFound(_0x26b233,null))[_0xf3d8('0x26')](function(_0x37f252){if(_0x37f252){_0x398272[_0xf3d8('0x4a')][_0xf3d8('0x50')]=_0x37f252['id'];_0x398272[_0xf3d8('0x4a')][_0xf3d8('0x51')]=integrations[_0xf3d8('0x52')](_0x398272['body']['channel'],_0x398272['body']['type']);_0x398272['body'][_0xf3d8('0x53')]=integrations['getDescriptions'](_0x398272[_0xf3d8('0x4a')][_0xf3d8('0x54')],_0x398272[_0xf3d8('0x4a')]['type']);return db[_0xf3d8('0x4d')]['create'](_0x398272[_0xf3d8('0x4a')],{'include':[{'model':db[_0xf3d8('0x55')],'as':'Subjects'},{'model':db[_0xf3d8('0x55')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x26b233,null))[_0xf3d8('0x45')](handleError(_0x26b233,null));};exports[_0xf3d8('0x56')]=function(_0x3ef18e,_0x477df2,_0x29cc04){var _0x3b2e80=[{'name':_0xf3d8('0x57'),'label':_0xf3d8('0x57'),'custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0x225b83='';return db['DeskAccount']['findOne']({'where':{'id':_0x3ef18e[_0xf3d8('0x47')]['id']},'attributes':['id',_0xf3d8('0x58'),_0xf3d8('0x59'),'username','password',_0xf3d8('0x5a'),_0xf3d8('0x5b'),'token',_0xf3d8('0x5c')]})[_0xf3d8('0x26')](handleEntityNotFound(_0x477df2,null))['then'](function(_0x18beb6){if(_0x18beb6){_0x225b83=_0x18beb6[_0xf3d8('0x58')];var _0x4beda6=_0x225b83[_0xf3d8('0x5d')](-0x1);if(_0x4beda6==='/'){_0x225b83=_0x225b83[_0xf3d8('0x5e')](0x0,_0x225b83[_0xf3d8('0x5f')](_0x4beda6));}var _0x4c17f8={'method':_0xf3d8('0x60'),'uri':util[_0xf3d8('0x61')](_0xf3d8('0x62'),_0x225b83),'headers':{'Content-Type':_0xf3d8('0x63'),'Accept':_0xf3d8('0x63')},'json':!![]};if(_0x18beb6[_0xf3d8('0x59')]===_0xf3d8('0x64')){_0x4c17f8[_0xf3d8('0x65')][_0xf3d8('0x66')]=util[_0xf3d8('0x61')](_0xf3d8('0x67'),new Buffer(util[_0xf3d8('0x61')](_0xf3d8('0x68'),_0x18beb6['username'],_0x18beb6['password']))[_0xf3d8('0x69')](_0xf3d8('0x6a')));}return rp(_0x4c17f8)['then'](function(_0x10d90a){return _0x3b2e80['concat'](_['map'](_0x10d90a[_0xf3d8('0x6b')]['entries'],function(_0xbdd505){return{'id':_0xbdd505[_0xf3d8('0x2b')],'name':_0xbdd505[_0xf3d8('0x2b')],'type':_0xbdd505['type'],'active':_0xbdd505[_0xf3d8('0x6c')],'label':_0xbdd505[_0xf3d8('0x6d')],'custom':!![]};}));});}})[_0xf3d8('0x26')](function(_0x5e3de9){return{'count':_0x5e3de9[_0xf3d8('0x38')],'rows':_0x5e3de9};})['then'](respondWithResult(_0x477df2,null))[_0xf3d8('0x45')](function(_0x33efe4){var _0x1865cb=_0x3ef18e['query']['test']?0x1f4:_0x33efe4[_0xf3d8('0x6e')]||0x1f4;logger[_0xf3d8('0x29')](_0xf3d8('0x6f'),_0xf3d8('0x56'),_0x1865cb,JSON['stringify'](_0x33efe4));delete _0x33efe4[_0xf3d8('0x2b')];if(_0x1865cb===0x191){_0x1865cb=0x190;}_0x477df2[_0xf3d8('0x1b')](_0x1865cb)['send'](_0x3ef18e['query'][_0xf3d8('0x70')]?{'message':_0xf3d8('0x71'),'statusCode':_0x33efe4[_0xf3d8('0x6e')]}:_0x33efe4);});};
\ No newline at end of file
+var _0xa6b0=['base64','active','label','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','destroy','name','send','index','map','DeskAccount','rawAttributes','fieldName','type','key','model','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','rows','catch','show','params','keys','include','find','create','body','DeskConfiguration','addConfiguration','findOne','AccountId','getSubjects','channel','Descriptions','getDescriptions','DeskField','Subjects','getFields','priority','remoteUri','username','password','consumerKey','token','tokenSecret','slice','substring','lastIndexOf','GET','format','application/json','headers','Authorization','%s:%s','toString'];(function(_0x4bb087,_0x10fa44){var _0x6ea8db=function(_0x2b0991){while(--_0x2b0991){_0x4bb087['push'](_0x4bb087['shift']());}};_0x6ea8db(++_0x10fa44);}(_0xa6b0,0x7a));var _0x0a6b=function(_0x42b445,_0xea311d){_0x42b445=_0x42b445-0x0;var _0x1f7feb=_0xa6b0[_0x42b445];return _0x1f7feb;};'use strict';var emlformat=require(_0x0a6b('0x0'));var rimraf=require(_0x0a6b('0x1'));var zipdir=require(_0x0a6b('0x2'));var jsonpatch=require(_0x0a6b('0x3'));var rp=require('request-promise');var moment=require(_0x0a6b('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x0a6b('0x5'));var util=require(_0x0a6b('0x6'));var path=require(_0x0a6b('0x7'));var sox=require(_0x0a6b('0x8'));var csv=require('to-csv');var ejs=require(_0x0a6b('0x9'));var fs=require('fs');var fs_extra=require(_0x0a6b('0xa'));var _=require('lodash');var squel=require(_0x0a6b('0xb'));var crypto=require(_0x0a6b('0xc'));var jsforce=require(_0x0a6b('0xd'));var deskjs=require(_0x0a6b('0xe'));var toCsv=require(_0x0a6b('0xf'));var querystring=require(_0x0a6b('0x10'));var Papa=require(_0x0a6b('0x11'));var Redis=require(_0x0a6b('0x12'));var authService=require(_0x0a6b('0x13'));var qs=require(_0x0a6b('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0a6b('0x15'));var logger=require('../../config/logger')(_0x0a6b('0x16'));var utils=require(_0x0a6b('0x17'));var config=require(_0x0a6b('0x18'));var licenseUtil=require(_0x0a6b('0x19'));var db=require(_0x0a6b('0x1a'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x1c64bd,_0x197ea9){_0x197ea9=_0x197ea9||0xcc;return function(_0x6f3b63){if(_0x6f3b63){return _0x1c64bd[_0x0a6b('0x1b')](_0x197ea9);}return _0x1c64bd[_0x0a6b('0x1c')](_0x197ea9)[_0x0a6b('0x1d')]();};}function respondWithResult(_0xe46745,_0xbe91ef){_0xbe91ef=_0xbe91ef||0xc8;return function(_0x4f6a41){if(_0x4f6a41){return _0xe46745[_0x0a6b('0x1c')](_0xbe91ef)['json'](_0x4f6a41);}};}function respondWithFilteredResult(_0xaeacc9,_0x5c69ef){return function(_0x5f2a1f){if(_0x5f2a1f){var _0xfca1c=typeof _0x5c69ef[_0x0a6b('0x1e')]===_0x0a6b('0x1f')&&typeof _0x5c69ef[_0x0a6b('0x20')]===_0x0a6b('0x1f');var _0x2f71ee=_0x5f2a1f[_0x0a6b('0x21')];var _0x12b18a=_0xfca1c?0x0:_0x5c69ef[_0x0a6b('0x1e')];var _0x6e8257=_0xfca1c?_0x5f2a1f[_0x0a6b('0x21')]:_0x5c69ef[_0x0a6b('0x1e')]+_0x5c69ef[_0x0a6b('0x20')];var _0x103292;if(_0x6e8257>=_0x2f71ee){_0x6e8257=_0x2f71ee;_0x103292=0xc8;}else{_0x103292=0xce;}_0xaeacc9['status'](_0x103292);return _0xaeacc9[_0x0a6b('0x22')](_0x0a6b('0x23'),_0x12b18a+'-'+_0x6e8257+'/'+_0x2f71ee)[_0x0a6b('0x24')](_0x5f2a1f);}return null;};}function patchUpdates(_0x4d9863){return function(_0x420a0f){try{jsonpatch[_0x0a6b('0x25')](_0x420a0f,_0x4d9863,!![]);}catch(_0xff77fe){return BPromise['reject'](_0xff77fe);}return _0x420a0f[_0x0a6b('0x26')]();};}function saveUpdates(_0x541bbd,_0x161bcf){return function(_0x1909b0){if(_0x1909b0){return _0x1909b0[_0x0a6b('0x27')](_0x541bbd)[_0x0a6b('0x28')](function(_0x2acdba){return _0x2acdba;});}return null;};}function removeEntity(_0x3c1a40,_0x3fe65f){return function(_0x491bb2){if(_0x491bb2){return _0x491bb2[_0x0a6b('0x29')]()['then'](function(){_0x3c1a40[_0x0a6b('0x1c')](0xcc)[_0x0a6b('0x1d')]();});}};}function handleEntityNotFound(_0x5a1723,_0x259ef2){return function(_0x5ce771){if(!_0x5ce771){_0x5a1723[_0x0a6b('0x1b')](0x194);}return _0x5ce771;};}function handleError(_0x1f2202,_0x326478){_0x326478=_0x326478||0x1f4;return function(_0x5c3c89){logger['error'](_0x5c3c89['stack']);if(_0x5c3c89[_0x0a6b('0x2a')]){delete _0x5c3c89[_0x0a6b('0x2a')];}_0x1f2202[_0x0a6b('0x1c')](_0x326478)[_0x0a6b('0x2b')](_0x5c3c89);};}exports[_0x0a6b('0x2c')]=function(_0xb1466,_0x2867b7){var _0x13762b={},_0x5b4bf0={},_0xd293bc={'count':0x0,'rows':[]};var _0x21eb89=_[_0x0a6b('0x2d')](db[_0x0a6b('0x2e')][_0x0a6b('0x2f')],function(_0x60fa0a){return{'name':_0x60fa0a[_0x0a6b('0x30')],'type':_0x60fa0a[_0x0a6b('0x31')][_0x0a6b('0x32')]};});_0x5b4bf0[_0x0a6b('0x33')]=_[_0x0a6b('0x2d')](_0x21eb89,'name');_0x5b4bf0['query']=_['keys'](_0xb1466['query']);_0x5b4bf0[_0x0a6b('0x34')]=_[_0x0a6b('0x35')](_0x5b4bf0[_0x0a6b('0x33')],_0x5b4bf0[_0x0a6b('0x36')]);_0x13762b[_0x0a6b('0x37')]=_['intersection'](_0x5b4bf0[_0x0a6b('0x33')],qs[_0x0a6b('0x38')](_0xb1466[_0x0a6b('0x36')][_0x0a6b('0x38')]));_0x13762b['attributes']=_0x13762b[_0x0a6b('0x37')][_0x0a6b('0x39')]?_0x13762b[_0x0a6b('0x37')]:_0x5b4bf0[_0x0a6b('0x33')];if(!_0xb1466[_0x0a6b('0x36')][_0x0a6b('0x3a')](_0x0a6b('0x3b'))){_0x13762b[_0x0a6b('0x20')]=qs[_0x0a6b('0x20')](_0xb1466[_0x0a6b('0x36')][_0x0a6b('0x20')]);_0x13762b[_0x0a6b('0x1e')]=qs['offset'](_0xb1466['query'][_0x0a6b('0x1e')]);}_0x13762b[_0x0a6b('0x3c')]=qs['sort'](_0xb1466[_0x0a6b('0x36')][_0x0a6b('0x3d')]);_0x13762b[_0x0a6b('0x3e')]=qs[_0x0a6b('0x34')](_[_0x0a6b('0x3f')](_0xb1466[_0x0a6b('0x36')],_0x5b4bf0[_0x0a6b('0x34')]),_0x21eb89);if(_0xb1466['query'][_0x0a6b('0x40')]){_0x13762b[_0x0a6b('0x3e')]=_[_0x0a6b('0x41')](_0x13762b['where'],{'$or':_[_0x0a6b('0x2d')](_0x21eb89,function(_0x507a9c){if(_0x507a9c['type']!==_0x0a6b('0x42')){var _0x5267eb={};_0x5267eb[_0x507a9c['name']]={'$like':'%'+_0xb1466['query'][_0x0a6b('0x40')]+'%'};return _0x5267eb;}})});}_0x13762b=_[_0x0a6b('0x41')]({},_0x13762b,_0xb1466[_0x0a6b('0x43')]);var _0x19fddf={'where':_0x13762b[_0x0a6b('0x3e')]};return db[_0x0a6b('0x2e')][_0x0a6b('0x21')](_0x19fddf)[_0x0a6b('0x28')](function(_0x3bcc1b){_0xd293bc[_0x0a6b('0x21')]=_0x3bcc1b;if(_0xb1466[_0x0a6b('0x36')][_0x0a6b('0x44')]){_0x13762b['include']=[{'all':!![]}];}return db[_0x0a6b('0x2e')]['findAll'](_0x13762b);})[_0x0a6b('0x28')](function(_0x30b04a){_0xd293bc[_0x0a6b('0x45')]=_0x30b04a;return _0xd293bc;})['then'](respondWithFilteredResult(_0x2867b7,_0x13762b))[_0x0a6b('0x46')](handleError(_0x2867b7,null));};exports[_0x0a6b('0x47')]=function(_0x4ad54c,_0x17e6d3){var _0x98037c={'raw':![],'where':{'id':_0x4ad54c[_0x0a6b('0x48')]['id']}},_0x23f121={};_0x23f121[_0x0a6b('0x33')]=_[_0x0a6b('0x49')](db[_0x0a6b('0x2e')][_0x0a6b('0x2f')]);_0x23f121[_0x0a6b('0x36')]=_[_0x0a6b('0x49')](_0x4ad54c[_0x0a6b('0x36')]);_0x23f121['filters']=_['intersection'](_0x23f121[_0x0a6b('0x33')],_0x23f121[_0x0a6b('0x36')]);_0x98037c['attributes']=_[_0x0a6b('0x35')](_0x23f121[_0x0a6b('0x33')],qs['fields'](_0x4ad54c[_0x0a6b('0x36')][_0x0a6b('0x38')]));_0x98037c[_0x0a6b('0x37')]=_0x98037c['attributes'][_0x0a6b('0x39')]?_0x98037c[_0x0a6b('0x37')]:_0x23f121['model'];if(_0x4ad54c[_0x0a6b('0x36')][_0x0a6b('0x44')]){_0x98037c[_0x0a6b('0x4a')]=[{'all':!![]}];}_0x98037c=_[_0x0a6b('0x41')]({},_0x98037c,_0x4ad54c[_0x0a6b('0x43')]);return db[_0x0a6b('0x2e')][_0x0a6b('0x4b')](_0x98037c)[_0x0a6b('0x28')](handleEntityNotFound(_0x17e6d3,null))[_0x0a6b('0x28')](respondWithResult(_0x17e6d3,null))[_0x0a6b('0x46')](handleError(_0x17e6d3,null));};exports[_0x0a6b('0x4c')]=function(_0x5ba01f,_0x4b3c61){return db[_0x0a6b('0x2e')]['create'](_0x5ba01f['body'],{})[_0x0a6b('0x28')](respondWithResult(_0x4b3c61,0xc9))[_0x0a6b('0x46')](handleError(_0x4b3c61,null));};exports[_0x0a6b('0x27')]=function(_0x81e504,_0x517efb){if(_0x81e504[_0x0a6b('0x4d')]['id']){delete _0x81e504[_0x0a6b('0x4d')]['id'];}return db[_0x0a6b('0x2e')][_0x0a6b('0x4b')]({'where':{'id':_0x81e504[_0x0a6b('0x48')]['id']}})[_0x0a6b('0x28')](handleEntityNotFound(_0x517efb,null))['then'](saveUpdates(_0x81e504['body'],null))[_0x0a6b('0x28')](respondWithResult(_0x517efb,null))[_0x0a6b('0x46')](handleError(_0x517efb,null));};exports[_0x0a6b('0x29')]=function(_0x49c33b,_0x5482b3){return db[_0x0a6b('0x2e')][_0x0a6b('0x4b')]({'where':{'id':_0x49c33b[_0x0a6b('0x48')]['id']}})[_0x0a6b('0x28')](handleEntityNotFound(_0x5482b3,null))[_0x0a6b('0x28')](removeEntity(_0x5482b3,null))[_0x0a6b('0x46')](handleError(_0x5482b3,null));};exports['getConfigurations']=function(_0x172f6c,_0x40b144,_0x1b9093){var _0x20883c={};var _0x3cd999={};var _0x26f870;var _0x39753a;return db[_0x0a6b('0x2e')]['findOne']({'where':{'id':_0x172f6c['params']['id']}})[_0x0a6b('0x28')](handleEntityNotFound(_0x40b144,null))[_0x0a6b('0x28')](function(_0x3519af){if(_0x3519af){_0x26f870=_0x3519af;_0x3cd999[_0x0a6b('0x33')]=_[_0x0a6b('0x49')](db[_0x0a6b('0x4e')][_0x0a6b('0x2f')]);_0x3cd999[_0x0a6b('0x36')]=_['keys'](_0x172f6c['query']);_0x3cd999[_0x0a6b('0x34')]=_[_0x0a6b('0x35')](_0x3cd999[_0x0a6b('0x33')],_0x3cd999[_0x0a6b('0x36')]);_0x20883c[_0x0a6b('0x37')]=_[_0x0a6b('0x35')](_0x3cd999[_0x0a6b('0x33')],qs[_0x0a6b('0x38')](_0x172f6c[_0x0a6b('0x36')][_0x0a6b('0x38')]));_0x20883c['attributes']=_0x20883c[_0x0a6b('0x37')][_0x0a6b('0x39')]?_0x20883c['attributes']:_0x3cd999['model'];_0x20883c[_0x0a6b('0x3c')]=qs[_0x0a6b('0x3d')](_0x172f6c[_0x0a6b('0x36')][_0x0a6b('0x3d')]);_0x20883c[_0x0a6b('0x3e')]=qs[_0x0a6b('0x34')](_[_0x0a6b('0x3f')](_0x172f6c['query'],_0x3cd999['filters']));if(_0x172f6c[_0x0a6b('0x36')][_0x0a6b('0x40')]){_0x20883c['where']=_['merge'](_0x20883c[_0x0a6b('0x3e')],{'$or':_[_0x0a6b('0x2d')](_0x20883c['attributes'],function(_0x405249){var _0x78c8eb={};_0x78c8eb[_0x405249]={'$like':'%'+_0x172f6c[_0x0a6b('0x36')]['filter']+'%'};return _0x78c8eb;})});}_0x20883c=_[_0x0a6b('0x41')]({},_0x20883c,_0x172f6c['options']);return _0x26f870['getConfigurations'](_0x20883c);}})[_0x0a6b('0x28')](function(_0x1bf381){if(_0x1bf381){_0x39753a=_0x1bf381['length'];if(!_0x172f6c[_0x0a6b('0x36')][_0x0a6b('0x3a')](_0x0a6b('0x3b'))){_0x20883c[_0x0a6b('0x20')]=qs['limit'](_0x172f6c[_0x0a6b('0x36')][_0x0a6b('0x20')]);_0x20883c[_0x0a6b('0x1e')]=qs[_0x0a6b('0x1e')](_0x172f6c[_0x0a6b('0x36')][_0x0a6b('0x1e')]);}return _0x26f870['getConfigurations'](_0x20883c);}})[_0x0a6b('0x28')](function(_0x117142){if(_0x117142){return _0x117142?{'count':_0x39753a,'rows':_0x117142}:null;}})['then'](respondWithResult(_0x40b144,null))[_0x0a6b('0x46')](handleError(_0x40b144,null));};exports[_0x0a6b('0x4f')]=function(_0x49ceb6,_0x4b92bf,_0x2e328f){if(_0x49ceb6['body']['id']){delete _0x49ceb6[_0x0a6b('0x4d')]['id'];}return db[_0x0a6b('0x2e')][_0x0a6b('0x50')]({'where':{'id':_0x49ceb6[_0x0a6b('0x48')]['id']}})[_0x0a6b('0x28')](handleEntityNotFound(_0x4b92bf,null))[_0x0a6b('0x28')](function(_0x13c94a){if(_0x13c94a){_0x49ceb6[_0x0a6b('0x4d')][_0x0a6b('0x51')]=_0x13c94a['id'];_0x49ceb6[_0x0a6b('0x4d')]['Subjects']=integrations[_0x0a6b('0x52')](_0x49ceb6['body'][_0x0a6b('0x53')],_0x49ceb6['body']['type']);_0x49ceb6[_0x0a6b('0x4d')][_0x0a6b('0x54')]=integrations[_0x0a6b('0x55')](_0x49ceb6['body']['channel'],_0x49ceb6[_0x0a6b('0x4d')][_0x0a6b('0x31')]);return db[_0x0a6b('0x4e')][_0x0a6b('0x4c')](_0x49ceb6[_0x0a6b('0x4d')],{'include':[{'model':db[_0x0a6b('0x56')],'as':_0x0a6b('0x57')},{'model':db[_0x0a6b('0x56')],'as':_0x0a6b('0x54')}]});}return null;})['then'](respondWithResult(_0x4b92bf,null))[_0x0a6b('0x46')](handleError(_0x4b92bf,null));};exports[_0x0a6b('0x58')]=function(_0x5c70ff,_0x52279c,_0x43d6f7){var _0x1d0695=[{'name':_0x0a6b('0x59'),'label':_0x0a6b('0x59'),'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 _0x315421='';return db[_0x0a6b('0x2e')][_0x0a6b('0x50')]({'where':{'id':_0x5c70ff[_0x0a6b('0x48')]['id']},'attributes':['id',_0x0a6b('0x5a'),'authType',_0x0a6b('0x5b'),_0x0a6b('0x5c'),_0x0a6b('0x5d'),'consumerSecret',_0x0a6b('0x5e'),_0x0a6b('0x5f')]})[_0x0a6b('0x28')](handleEntityNotFound(_0x52279c,null))[_0x0a6b('0x28')](function(_0x44b1ac){if(_0x44b1ac){_0x315421=_0x44b1ac[_0x0a6b('0x5a')];var _0x33e95e=_0x315421[_0x0a6b('0x60')](-0x1);if(_0x33e95e==='/'){_0x315421=_0x315421[_0x0a6b('0x61')](0x0,_0x315421[_0x0a6b('0x62')](_0x33e95e));}var _0x8fe5ee={'method':_0x0a6b('0x63'),'uri':util[_0x0a6b('0x64')]('%s/custom_fields',_0x315421),'headers':{'Content-Type':_0x0a6b('0x65'),'Accept':'application/json'},'json':!![]};if(_0x44b1ac['authType']==='basic'){_0x8fe5ee[_0x0a6b('0x66')][_0x0a6b('0x67')]=util[_0x0a6b('0x64')]('Basic\x20%s',new Buffer(util[_0x0a6b('0x64')](_0x0a6b('0x68'),_0x44b1ac[_0x0a6b('0x5b')],_0x44b1ac[_0x0a6b('0x5c')]))[_0x0a6b('0x69')](_0x0a6b('0x6a')));}return rp(_0x8fe5ee)[_0x0a6b('0x28')](function(_0x45182d){return _0x1d0695['concat'](_[_0x0a6b('0x2d')](_0x45182d['_embedded']['entries'],function(_0x5e460d){return{'id':_0x5e460d[_0x0a6b('0x2a')],'name':_0x5e460d[_0x0a6b('0x2a')],'type':_0x5e460d['type'],'active':_0x5e460d[_0x0a6b('0x6b')],'label':_0x5e460d[_0x0a6b('0x6c')],'custom':!![]};}));});}})[_0x0a6b('0x28')](function(_0x345bcd){return{'count':_0x345bcd['length'],'rows':_0x345bcd};})[_0x0a6b('0x28')](respondWithResult(_0x52279c,null))[_0x0a6b('0x46')](function(_0x14fee1){var _0x3a2dad=_0x5c70ff[_0x0a6b('0x36')]['test']?0x1f4:_0x14fee1[_0x0a6b('0x6d')]||0x1f4;logger[_0x0a6b('0x6e')](_0x0a6b('0x6f'),'getFields',_0x3a2dad,JSON['stringify'](_0x14fee1));delete _0x14fee1[_0x0a6b('0x2a')];if(_0x3a2dad===0x191){_0x3a2dad=0x190;}_0x52279c['status'](_0x3a2dad)[_0x0a6b('0x2b')](_0x5c70ff['query'][_0x0a6b('0x70')]?{'message':_0x0a6b('0x71'),'statusCode':_0x14fee1[_0x0a6b('0x6d')]}:_0x14fee1);});};
\ No newline at end of file
index 747f513..99e4ff3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb584=['./intDeskAccount.attributes','../../components/integrations/configuration','exports','DeskAccount','int_desk_accounts','lodash','util','api','request-promise','path','rimraf','../../config/environment'];(function(_0x10291b,_0x518773){var _0x1d5fbe=function(_0x24df58){while(--_0x24df58){_0x10291b['push'](_0x10291b['shift']());}};_0x1d5fbe(++_0x518773);}(_0xb584,0x19d));var _0x4b58=function(_0xf95d2c,_0x5450a1){_0xf95d2c=_0xf95d2c-0x0;var _0x4f34db=_0xb584[_0xf95d2c];return _0x4f34db;};'use strict';var _=require(_0x4b58('0x0'));var util=require(_0x4b58('0x1'));var logger=require('../../config/logger')(_0x4b58('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x4b58('0x3'));var fs=require('fs');var path=require(_0x4b58('0x4'));var rimraf=require(_0x4b58('0x5'));var config=require(_0x4b58('0x6'));var attributes=require(_0x4b58('0x7'));var integrations=require(_0x4b58('0x8'));module[_0x4b58('0x9')]=function(_0x175261,_0x3c50b1){return _0x175261['define'](_0x4b58('0xa'),attributes,{'tableName':_0x4b58('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x52c9=['path','rimraf','../../config/environment','./intDeskAccount.attributes','exports','define','DeskAccount','../../config/logger','api','bluebird','request-promise'];(function(_0xc7f21c,_0x51f7de){var _0x1dc94e=function(_0xe360fb){while(--_0xe360fb){_0xc7f21c['push'](_0xc7f21c['shift']());}};_0x1dc94e(++_0x51f7de);}(_0x52c9,0x11a));var _0x952c=function(_0x387836,_0x3d6fd0){_0x387836=_0x387836-0x0;var _0x3214f3=_0x52c9[_0x387836];return _0x3214f3;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x952c('0x0'))(_0x952c('0x1'));var moment=require('moment');var BPromise=require(_0x952c('0x2'));var rp=require(_0x952c('0x3'));var fs=require('fs');var path=require(_0x952c('0x4'));var rimraf=require(_0x952c('0x5'));var config=require(_0x952c('0x6'));var attributes=require(_0x952c('0x7'));var integrations=require('../../components/integrations/configuration');module[_0x952c('0x8')]=function(_0x232ce8,_0x180709){return _0x232ce8[_0x952c('0x9')](_0x952c('0xa'),attributes,{'tableName':'int_desk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c3531c2..cf6f85c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8355=['error','DeskAccount,\x20%s,\x20%s','message','result','catch','GetDeskAccount','findAll','options','raw','where','attributes','limit','include','map','model','debug','ShowDeskAccount','DeskAccount','find','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','DeskAccount,\x20%s,\x20%s,\x20%s'];(function(_0x37c4ac,_0x5ba571){var _0x5dd98c=function(_0x55cb8f){while(--_0x55cb8f){_0x37c4ac['push'](_0x37c4ac['shift']());}};_0x5dd98c(++_0x5ba571);}(_0x8355,0xec));var _0x5835=function(_0x34be33,_0x30f795){_0x34be33=_0x34be33-0x0;var _0x26292b=_0x8355[_0x34be33];return _0x26292b;};'use strict';var _=require(_0x5835('0x0'));var util=require(_0x5835('0x1'));var moment=require(_0x5835('0x2'));var BPromise=require(_0x5835('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5835('0x4'));var db=require(_0x5835('0x5'))['db'];var utils=require(_0x5835('0x6'));var logger=require(_0x5835('0x7'))('rpc');var config=require(_0x5835('0x8'));var jayson=require(_0x5835('0x9'));var client=jayson[_0x5835('0xa')][_0x5835('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5eb3f6,_0x380294,_0x701aa3){return new BPromise(function(_0x6dde45,_0x3fe725){return client['request'](_0x5eb3f6,_0x701aa3)[_0x5835('0xc')](function(_0x27c3dd){logger[_0x5835('0xd')]('DeskAccount,\x20%s,\x20%s',_0x380294,_0x5835('0xe'));logger['debug'](_0x5835('0xf'),_0x380294,_0x5835('0xe'),JSON['stringify'](_0x27c3dd));if(_0x27c3dd[_0x5835('0x10')]){if(_0x27c3dd[_0x5835('0x10')]['code']===0x1f4){logger['error'](_0x5835('0x11'),_0x380294,_0x27c3dd['error'][_0x5835('0x12')]);return _0x3fe725(_0x27c3dd[_0x5835('0x10')]['message']);}logger[_0x5835('0x10')](_0x5835('0x11'),_0x380294,_0x27c3dd[_0x5835('0x10')][_0x5835('0x12')]);return _0x6dde45(_0x27c3dd[_0x5835('0x10')][_0x5835('0x12')]);}else{logger[_0x5835('0xd')]('DeskAccount,\x20%s,\x20%s',_0x380294,_0x5835('0xe'));_0x6dde45(_0x27c3dd[_0x5835('0x13')][_0x5835('0x12')]);}})[_0x5835('0x14')](function(_0xdef308){logger[_0x5835('0x10')]('DeskAccount,\x20%s,\x20%s',_0x380294,_0xdef308);_0x3fe725(_0xdef308);});});}exports[_0x5835('0x15')]=function(_0x15546f){var _0x49d3e3=this;return new Promise(function(_0x332f7c,_0x23b7d2){return db['DeskAccount'][_0x5835('0x16')]({'raw':_0x15546f['options']?_0x15546f[_0x5835('0x17')][_0x5835('0x18')]===undefined?!![]:![]:!![],'where':_0x15546f['options']?_0x15546f[_0x5835('0x17')][_0x5835('0x19')]||null:null,'attributes':_0x15546f['options']?_0x15546f[_0x5835('0x17')][_0x5835('0x1a')]||null:null,'limit':_0x15546f[_0x5835('0x17')]?_0x15546f[_0x5835('0x17')][_0x5835('0x1b')]||null:null,'include':_0x15546f[_0x5835('0x17')]?_0x15546f[_0x5835('0x17')][_0x5835('0x1c')]?_[_0x5835('0x1d')](_0x15546f[_0x5835('0x17')][_0x5835('0x1c')],function(_0xe56895){return{'model':db[_0xe56895[_0x5835('0x1e')]],'as':_0xe56895['as'],'attributes':_0xe56895[_0x5835('0x1a')],'include':_0xe56895[_0x5835('0x1c')]?_[_0x5835('0x1d')](_0xe56895['include'],function(_0x408c9c){return{'model':db[_0x408c9c[_0x5835('0x1e')]],'as':_0x408c9c['as'],'attributes':_0x408c9c[_0x5835('0x1a')],'include':_0x408c9c[_0x5835('0x1c')]?_[_0x5835('0x1d')](_0x408c9c[_0x5835('0x1c')],function(_0x27c934){return{'model':db[_0x27c934[_0x5835('0x1e')]],'as':_0x27c934['as'],'attributes':_0x27c934[_0x5835('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x5835('0xc')](function(_0x570e4e){logger[_0x5835('0xd')]('GetDeskAccount',_0x15546f);logger[_0x5835('0x1f')](_0x5835('0x15'),_0x15546f,JSON['stringify'](_0x570e4e));_0x332f7c(_0x570e4e);})[_0x5835('0x14')](function(_0x571e1b){logger[_0x5835('0x10')]('GetDeskAccount',_0x571e1b['message'],_0x15546f);_0x23b7d2(_0x49d3e3[_0x5835('0x10')](0x1f4,_0x571e1b[_0x5835('0x12')]));});});};exports[_0x5835('0x20')]=function(_0x44e446){var _0x10a88a=this;return new Promise(function(_0x5130e5,_0x4193df){return db[_0x5835('0x21')][_0x5835('0x22')]({'raw':_0x44e446[_0x5835('0x17')]?_0x44e446[_0x5835('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x44e446['options']?_0x44e446[_0x5835('0x17')]['where']||null:null,'attributes':_0x44e446['options']?_0x44e446['options']['attributes']||null:null,'include':_0x44e446[_0x5835('0x17')]?_0x44e446['options'][_0x5835('0x1c')]?_['map'](_0x44e446[_0x5835('0x17')][_0x5835('0x1c')],function(_0x54623e){return{'model':db[_0x54623e[_0x5835('0x1e')]],'as':_0x54623e['as'],'attributes':_0x54623e[_0x5835('0x1a')],'include':_0x54623e[_0x5835('0x1c')]?_[_0x5835('0x1d')](_0x54623e[_0x5835('0x1c')],function(_0xb9e544){return{'model':db[_0xb9e544[_0x5835('0x1e')]],'as':_0xb9e544['as'],'attributes':_0xb9e544[_0x5835('0x1a')],'include':_0xb9e544[_0x5835('0x1c')]?_['map'](_0xb9e544[_0x5835('0x1c')],function(_0x2f90f5){return{'model':db[_0x2f90f5[_0x5835('0x1e')]],'as':_0x2f90f5['as'],'attributes':_0x2f90f5['attributes']};}):[]};}):[]};}):[]:[]})[_0x5835('0xc')](function(_0x3f9d73){logger[_0x5835('0xd')](_0x5835('0x20'),_0x44e446);logger[_0x5835('0x1f')](_0x5835('0x20'),_0x44e446,JSON[_0x5835('0x23')](_0x3f9d73));_0x5130e5(_0x3f9d73);})[_0x5835('0x14')](function(_0x10de83){logger[_0x5835('0x10')](_0x5835('0x20'),_0x10de83[_0x5835('0x12')],_0x44e446);_0x4193df(_0x10a88a['error'](0x1f4,_0x10de83['message']));});});};
\ No newline at end of file
+var _0x47c4=['DeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetDeskAccount','DeskAccount','options','raw','where','attributes','include','map','model','catch','ShowDeskAccount','find','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','DeskAccount,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x1d7339,_0x51427c){var _0x5f4163=function(_0x15ac5f){while(--_0x15ac5f){_0x1d7339['push'](_0x1d7339['shift']());}};_0x5f4163(++_0x51427c);}(_0x47c4,0x12a));var _0x447c=function(_0x1d04fc,_0x57ff67){_0x1d04fc=_0x1d04fc-0x0;var _0x41b7e8=_0x47c4[_0x1d04fc];return _0x41b7e8;};'use strict';var _=require('lodash');var util=require(_0x447c('0x0'));var moment=require(_0x447c('0x1'));var BPromise=require(_0x447c('0x2'));var rs=require(_0x447c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x447c('0x4'))['db'];var utils=require(_0x447c('0x5'));var logger=require(_0x447c('0x6'))(_0x447c('0x7'));var config=require(_0x447c('0x8'));var jayson=require(_0x447c('0x9'));var client=jayson['client'][_0x447c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1f317e,_0x4346ba,_0x5c2d25){return new BPromise(function(_0x18bba5,_0x5d7e34){return client[_0x447c('0xb')](_0x1f317e,_0x5c2d25)[_0x447c('0xc')](function(_0x31de49){logger[_0x447c('0xd')](_0x447c('0xe'),_0x4346ba,_0x447c('0xf'));logger[_0x447c('0x10')](_0x447c('0x11'),_0x4346ba,_0x447c('0xf'),JSON[_0x447c('0x12')](_0x31de49));if(_0x31de49['error']){if(_0x31de49[_0x447c('0x13')][_0x447c('0x14')]===0x1f4){logger['error']('DeskAccount,\x20%s,\x20%s',_0x4346ba,_0x31de49[_0x447c('0x13')]['message']);return _0x5d7e34(_0x31de49['error'][_0x447c('0x15')]);}logger[_0x447c('0x13')]('DeskAccount,\x20%s,\x20%s',_0x4346ba,_0x31de49['error'][_0x447c('0x15')]);return _0x18bba5(_0x31de49[_0x447c('0x13')]['message']);}else{logger[_0x447c('0xd')](_0x447c('0xe'),_0x4346ba,_0x447c('0xf'));_0x18bba5(_0x31de49[_0x447c('0x16')][_0x447c('0x15')]);}})['catch'](function(_0x5b7c39){logger['error'](_0x447c('0xe'),_0x4346ba,_0x5b7c39);_0x5d7e34(_0x5b7c39);});});}exports[_0x447c('0x17')]=function(_0x166bfe){var _0x531a01=this;return new Promise(function(_0x1bba0c,_0x368f29){return db[_0x447c('0x18')]['findAll']({'raw':_0x166bfe[_0x447c('0x19')]?_0x166bfe[_0x447c('0x19')][_0x447c('0x1a')]===undefined?!![]:![]:!![],'where':_0x166bfe[_0x447c('0x19')]?_0x166bfe['options'][_0x447c('0x1b')]||null:null,'attributes':_0x166bfe[_0x447c('0x19')]?_0x166bfe['options'][_0x447c('0x1c')]||null:null,'limit':_0x166bfe[_0x447c('0x19')]?_0x166bfe[_0x447c('0x19')]['limit']||null:null,'include':_0x166bfe[_0x447c('0x19')]?_0x166bfe[_0x447c('0x19')][_0x447c('0x1d')]?_[_0x447c('0x1e')](_0x166bfe['options']['include'],function(_0x155af4){return{'model':db[_0x155af4[_0x447c('0x1f')]],'as':_0x155af4['as'],'attributes':_0x155af4[_0x447c('0x1c')],'include':_0x155af4['include']?_[_0x447c('0x1e')](_0x155af4[_0x447c('0x1d')],function(_0x188517){return{'model':db[_0x188517[_0x447c('0x1f')]],'as':_0x188517['as'],'attributes':_0x188517[_0x447c('0x1c')],'include':_0x188517['include']?_['map'](_0x188517[_0x447c('0x1d')],function(_0x5420c6){return{'model':db[_0x5420c6['model']],'as':_0x5420c6['as'],'attributes':_0x5420c6[_0x447c('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x447c('0xc')](function(_0x547006){logger['info']('GetDeskAccount',_0x166bfe);logger[_0x447c('0x10')](_0x447c('0x17'),_0x166bfe,JSON['stringify'](_0x547006));_0x1bba0c(_0x547006);})[_0x447c('0x20')](function(_0x10f470){logger[_0x447c('0x13')](_0x447c('0x17'),_0x10f470[_0x447c('0x15')],_0x166bfe);_0x368f29(_0x531a01[_0x447c('0x13')](0x1f4,_0x10f470[_0x447c('0x15')]));});});};exports[_0x447c('0x21')]=function(_0x1ab307){var _0x2114f7=this;return new Promise(function(_0x58ae1e,_0x52eb4c){return db['DeskAccount'][_0x447c('0x22')]({'raw':_0x1ab307[_0x447c('0x19')]?_0x1ab307[_0x447c('0x19')][_0x447c('0x1a')]===undefined?!![]:![]:!![],'where':_0x1ab307[_0x447c('0x19')]?_0x1ab307['options'][_0x447c('0x1b')]||null:null,'attributes':_0x1ab307[_0x447c('0x19')]?_0x1ab307[_0x447c('0x19')]['attributes']||null:null,'include':_0x1ab307[_0x447c('0x19')]?_0x1ab307[_0x447c('0x19')]['include']?_['map'](_0x1ab307[_0x447c('0x19')][_0x447c('0x1d')],function(_0x2228e4){return{'model':db[_0x2228e4['model']],'as':_0x2228e4['as'],'attributes':_0x2228e4['attributes'],'include':_0x2228e4['include']?_[_0x447c('0x1e')](_0x2228e4[_0x447c('0x1d')],function(_0x30398b){return{'model':db[_0x30398b[_0x447c('0x1f')]],'as':_0x30398b['as'],'attributes':_0x30398b[_0x447c('0x1c')],'include':_0x30398b[_0x447c('0x1d')]?_[_0x447c('0x1e')](_0x30398b[_0x447c('0x1d')],function(_0xaee932){return{'model':db[_0xaee932[_0x447c('0x1f')]],'as':_0xaee932['as'],'attributes':_0xaee932[_0x447c('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x361aca){logger['info']('ShowDeskAccount',_0x1ab307);logger[_0x447c('0x10')](_0x447c('0x21'),_0x1ab307,JSON[_0x447c('0x12')](_0x361aca));_0x58ae1e(_0x361aca);})[_0x447c('0x20')](function(_0x16496e){logger[_0x447c('0x13')](_0x447c('0x21'),_0x16496e[_0x447c('0x15')],_0x1ab307);_0x52eb4c(_0x2114f7[_0x447c('0x13')](0x1f4,_0x16496e[_0x447c('0x15')]));});});};
\ No newline at end of file
index 03d0df8..a042a5c 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(_0x599d7f,_0xc586e8){var _0x3346d3=function(_0x56b820){while(--_0x56b820){_0x599d7f['push'](_0x599d7f['shift']());}};_0x3346d3(++_0xc586e8);}(_0x55ca,0x126));var _0xa55c=function(_0x26371f,_0x3529d6){_0x26371f=_0x26371f-0x0;var _0x7bf77f=_0x55ca[_0x26371f];return _0x7bf77f;};'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 _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(_0x1d426f,_0x37e919){var _0x17f71a=function(_0x3bf60c){while(--_0x3bf60c){_0x1d426f['push'](_0x1d426f['shift']());}};_0x17f71a(++_0x37e919);}(_0x55ca,0x126));var _0xa55c=function(_0x2cfb48,_0x24b83b){_0x2cfb48=_0x2cfb48-0x0;var _0xc4594f=_0x55ca[_0x2cfb48];return _0xc4594f;};'use strict';var multer=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa55c('0x2')]();var fs_extra=require(_0xa55c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var controller=require(_0xa55c('0x6'));router[_0xa55c('0x7')]('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0x9')]);router[_0xa55c('0x7')]('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xa')]);router['get'](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller['getFields']);router['get'](_0xa55c('0xc'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xd')]);router[_0xa55c('0x7')](_0xa55c('0xe'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xf')]);router[_0xa55c('0x7')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller['getTags']);router['post']('/',auth[_0xa55c('0x8')](),controller['create']);router['post']('/:id/tags',auth[_0xa55c('0x8')](),controller[_0xa55c('0x11')]);router[_0xa55c('0x12')](_0xa55c('0x13'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x14')]);router['delete'](_0xa55c('0x13'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x15')]);module[_0xa55c('0x16')]=router;
\ No newline at end of file
index d3adfb1..6e6911d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaaee=['exports','STRING'];(function(_0x193694,_0x235cc1){var _0x523977=function(_0x17d266){while(--_0x17d266){_0x193694['push'](_0x193694['shift']());}};_0x523977(++_0x235cc1);}(_0xaaee,0x130));var _0xeaae=function(_0x192d5b,_0xe78fe1){_0x192d5b=_0x192d5b-0x0;var _0x308f55=_0xaaee[_0x192d5b];return _0x308f55;};'use strict';var Sequelize=require('sequelize');module[_0xeaae('0x0')]={'name':{'type':Sequelize[_0xeaae('0x1')]},'description':{'type':Sequelize[_0xeaae('0x1')]}};
\ No newline at end of file
+var _0x873b=['STRING','exports'];(function(_0x5a79e2,_0x319b1a){var _0x266c45=function(_0x172478){while(--_0x172478){_0x5a79e2['push'](_0x5a79e2['shift']());}};_0x266c45(++_0x319b1a);}(_0x873b,0x1d5));var _0xb873=function(_0x4d515d,_0x108c96){_0x4d515d=_0x4d515d-0x0;var _0x58fe07=_0x873b[_0x4d515d];return _0x58fe07;};'use strict';var Sequelize=require('sequelize');module[_0xb873('0x0')]={'name':{'type':Sequelize[_0xb873('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 56fd1cf..3136b96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x240c=['Tag','setTags','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','stack','name','send','index','map','DeskConfiguration','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','filter','where','merge','options','then','findAll','rows','show','includeAll','include','find','create','body','catch','params','destroy','getFields','findOne','nolimit','getSubjects','DeskField','pick','getDescriptions','getTags'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x240c,0xf8));var _0xc240=function(_0x4979df,_0x462658){_0x4979df=_0x4979df-0x0;var _0x156d84=_0x240c[_0x4979df];return _0x156d84;};'use strict';var emlformat=require(_0xc240('0x0'));var rimraf=require(_0xc240('0x1'));var zipdir=require(_0xc240('0x2'));var jsonpatch=require(_0xc240('0x3'));var rp=require(_0xc240('0x4'));var moment=require(_0xc240('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xc240('0x6'));var util=require('util');var path=require(_0xc240('0x7'));var sox=require(_0xc240('0x8'));var csv=require(_0xc240('0x9'));var ejs=require(_0xc240('0xa'));var fs=require('fs');var fs_extra=require(_0xc240('0xb'));var _=require(_0xc240('0xc'));var squel=require(_0xc240('0xd'));var crypto=require(_0xc240('0xe'));var jsforce=require(_0xc240('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xc240('0x9'));var querystring=require(_0xc240('0x10'));var Papa=require(_0xc240('0x11'));var Redis=require('ioredis');var authService=require(_0xc240('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xc240('0x13'));var hardwareService=require(_0xc240('0x14'));var logger=require(_0xc240('0x15'))(_0xc240('0x16'));var utils=require('../../config/utils');var config=require(_0xc240('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xc240('0x18'))['db'];function respondWithStatusCode(_0x43f8b7,_0x2cdd60){_0x2cdd60=_0x2cdd60||0xcc;return function(_0x5d6c36){if(_0x5d6c36){return _0x43f8b7[_0xc240('0x19')](_0x2cdd60);}return _0x43f8b7[_0xc240('0x1a')](_0x2cdd60)[_0xc240('0x1b')]();};}function respondWithResult(_0x2e4778,_0xfb2520){_0xfb2520=_0xfb2520||0xc8;return function(_0x365fc6){if(_0x365fc6){return _0x2e4778[_0xc240('0x1a')](_0xfb2520)[_0xc240('0x1c')](_0x365fc6);}};}function respondWithFilteredResult(_0x4ff1ef,_0x16f987){return function(_0x9e759b){if(_0x9e759b){var _0x12e414=typeof _0x16f987[_0xc240('0x1d')]===_0xc240('0x1e')&&typeof _0x16f987[_0xc240('0x1f')]===_0xc240('0x1e');var _0x106a03=_0x9e759b[_0xc240('0x20')];var _0x14bfba=_0x12e414?0x0:_0x16f987[_0xc240('0x1d')];var _0x5550f2=_0x12e414?_0x9e759b[_0xc240('0x20')]:_0x16f987[_0xc240('0x1d')]+_0x16f987['limit'];var _0x2e2826;if(_0x5550f2>=_0x106a03){_0x5550f2=_0x106a03;_0x2e2826=0xc8;}else{_0x2e2826=0xce;}_0x4ff1ef[_0xc240('0x1a')](_0x2e2826);return _0x4ff1ef[_0xc240('0x21')](_0xc240('0x22'),_0x14bfba+'-'+_0x5550f2+'/'+_0x106a03)[_0xc240('0x1c')](_0x9e759b);}return null;};}function patchUpdates(_0x1047ad){return function(_0x105e1f){try{jsonpatch['apply'](_0x105e1f,_0x1047ad,!![]);}catch(_0x5bc933){return BPromise['reject'](_0x5bc933);}return _0x105e1f['save']();};}function saveUpdates(_0x516439,_0x435bc1){return function(_0x12376c){if(_0x12376c){return _0x12376c[_0xc240('0x23')](_0x516439)['then'](function(_0x7a6d1b){return _0x7a6d1b;});}return null;};}function removeEntity(_0x44c203,_0x1fe8f4){return function(_0x231893){if(_0x231893){return _0x231893['destroy']()['then'](function(){_0x44c203['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x124438,_0x112fd4){return function(_0xec2031){if(!_0xec2031){_0x124438[_0xc240('0x19')](0x194);}return _0xec2031;};}function handleError(_0x2d3498,_0x4772f){_0x4772f=_0x4772f||0x1f4;return function(_0x10d8f0){logger['error'](_0x10d8f0[_0xc240('0x24')]);if(_0x10d8f0['name']){delete _0x10d8f0[_0xc240('0x25')];}_0x2d3498[_0xc240('0x1a')](_0x4772f)[_0xc240('0x26')](_0x10d8f0);};}exports[_0xc240('0x27')]=function(_0x290f18,_0x3b4fd8){var _0x318d36={},_0xfea182={},_0x1ca4d8={'count':0x0,'rows':[]};var _0x335efc=_[_0xc240('0x28')](db[_0xc240('0x29')][_0xc240('0x2a')],function(_0x58727d){return{'name':_0x58727d[_0xc240('0x2b')],'type':_0x58727d[_0xc240('0x2c')]['key']};});_0xfea182['model']=_[_0xc240('0x28')](_0x335efc,_0xc240('0x25'));_0xfea182[_0xc240('0x2d')]=_[_0xc240('0x2e')](_0x290f18[_0xc240('0x2d')]);_0xfea182[_0xc240('0x2f')]=_[_0xc240('0x30')](_0xfea182[_0xc240('0x31')],_0xfea182[_0xc240('0x2d')]);_0x318d36[_0xc240('0x32')]=_['intersection'](_0xfea182[_0xc240('0x31')],qs['fields'](_0x290f18[_0xc240('0x2d')][_0xc240('0x33')]));_0x318d36[_0xc240('0x32')]=_0x318d36[_0xc240('0x32')][_0xc240('0x34')]?_0x318d36[_0xc240('0x32')]:_0xfea182[_0xc240('0x31')];if(!_0x290f18[_0xc240('0x2d')][_0xc240('0x35')]('nolimit')){_0x318d36[_0xc240('0x1f')]=qs[_0xc240('0x1f')](_0x290f18[_0xc240('0x2d')][_0xc240('0x1f')]);_0x318d36['offset']=qs[_0xc240('0x1d')](_0x290f18[_0xc240('0x2d')]['offset']);}_0x318d36[_0xc240('0x36')]=qs[_0xc240('0x37')](_0x290f18['query'][_0xc240('0x37')]);_0x318d36['where']=qs[_0xc240('0x2f')](_['pick'](_0x290f18[_0xc240('0x2d')],_0xfea182[_0xc240('0x2f')]),_0x335efc);if(_0x290f18[_0xc240('0x2d')][_0xc240('0x38')]){_0x318d36[_0xc240('0x39')]=_[_0xc240('0x3a')](_0x318d36[_0xc240('0x39')],{'$or':_[_0xc240('0x28')](_0x335efc,function(_0x5680e8){if(_0x5680e8['type']!=='VIRTUAL'){var _0x5c89e3={};_0x5c89e3[_0x5680e8[_0xc240('0x25')]]={'$like':'%'+_0x290f18[_0xc240('0x2d')][_0xc240('0x38')]+'%'};return _0x5c89e3;}})});}_0x318d36=_[_0xc240('0x3a')]({},_0x318d36,_0x290f18[_0xc240('0x3b')]);var _0x2ae099={'where':_0x318d36[_0xc240('0x39')]};return db['DeskConfiguration'][_0xc240('0x20')](_0x2ae099)[_0xc240('0x3c')](function(_0x374636){_0x1ca4d8[_0xc240('0x20')]=_0x374636;if(_0x290f18['query']['includeAll']){_0x318d36['include']=[{'all':!![]}];}return db[_0xc240('0x29')][_0xc240('0x3d')](_0x318d36);})[_0xc240('0x3c')](function(_0x48d598){_0x1ca4d8[_0xc240('0x3e')]=_0x48d598;return _0x1ca4d8;})[_0xc240('0x3c')](respondWithFilteredResult(_0x3b4fd8,_0x318d36))['catch'](handleError(_0x3b4fd8,null));};exports[_0xc240('0x3f')]=function(_0xbea617,_0x15af01){var _0xaa14ee={'raw':![],'where':{'id':_0xbea617['params']['id']}},_0x529f34={};_0x529f34[_0xc240('0x31')]=_[_0xc240('0x2e')](db[_0xc240('0x29')][_0xc240('0x2a')]);_0x529f34[_0xc240('0x2d')]=_['keys'](_0xbea617[_0xc240('0x2d')]);_0x529f34['filters']=_[_0xc240('0x30')](_0x529f34[_0xc240('0x31')],_0x529f34['query']);_0xaa14ee[_0xc240('0x32')]=_[_0xc240('0x30')](_0x529f34[_0xc240('0x31')],qs['fields'](_0xbea617[_0xc240('0x2d')]['fields']));_0xaa14ee[_0xc240('0x32')]=_0xaa14ee[_0xc240('0x32')][_0xc240('0x34')]?_0xaa14ee[_0xc240('0x32')]:_0x529f34[_0xc240('0x31')];if(_0xbea617[_0xc240('0x2d')][_0xc240('0x40')]){_0xaa14ee[_0xc240('0x41')]=[{'all':!![]}];}_0xaa14ee=_[_0xc240('0x3a')]({},_0xaa14ee,_0xbea617[_0xc240('0x3b')]);return db[_0xc240('0x29')][_0xc240('0x42')](_0xaa14ee)['then'](handleEntityNotFound(_0x15af01,null))[_0xc240('0x3c')](respondWithResult(_0x15af01,null))['catch'](handleError(_0x15af01,null));};exports['create']=function(_0x2ece59,_0x4a22e0){return db['DeskConfiguration'][_0xc240('0x43')](_0x2ece59[_0xc240('0x44')],{})['then'](respondWithResult(_0x4a22e0,0xc9))[_0xc240('0x45')](handleError(_0x4a22e0,null));};exports[_0xc240('0x23')]=function(_0x247b2b,_0x30f6fe){if(_0x247b2b[_0xc240('0x44')]['id']){delete _0x247b2b['body']['id'];}return db['DeskConfiguration'][_0xc240('0x42')]({'where':{'id':_0x247b2b[_0xc240('0x46')]['id']}})['then'](handleEntityNotFound(_0x30f6fe,null))[_0xc240('0x3c')](saveUpdates(_0x247b2b[_0xc240('0x44')],null))[_0xc240('0x3c')](respondWithResult(_0x30f6fe,null))[_0xc240('0x45')](handleError(_0x30f6fe,null));};exports[_0xc240('0x47')]=function(_0x4f7d0c,_0x5c38f0){return db[_0xc240('0x29')]['find']({'where':{'id':_0x4f7d0c[_0xc240('0x46')]['id']}})[_0xc240('0x3c')](handleEntityNotFound(_0x5c38f0,null))[_0xc240('0x3c')](removeEntity(_0x5c38f0,null))[_0xc240('0x45')](handleError(_0x5c38f0,null));};exports[_0xc240('0x48')]=function(_0xdb00fa,_0x16abbd,_0x465a09){var _0x5c62ff={};var _0x1d4d73={};var _0x36ba05;var _0x1e798c;return db[_0xc240('0x29')][_0xc240('0x49')]({'where':{'id':_0xdb00fa[_0xc240('0x46')]['id']}})[_0xc240('0x3c')](handleEntityNotFound(_0x16abbd,null))['then'](function(_0x124fad){if(_0x124fad){_0x36ba05=_0x124fad;_0x1d4d73[_0xc240('0x31')]=_[_0xc240('0x2e')](db['DeskField'][_0xc240('0x2a')]);_0x1d4d73['query']=_[_0xc240('0x2e')](_0xdb00fa[_0xc240('0x2d')]);_0x1d4d73['filters']=_[_0xc240('0x30')](_0x1d4d73[_0xc240('0x31')],_0x1d4d73[_0xc240('0x2d')]);_0x5c62ff[_0xc240('0x32')]=_['intersection'](_0x1d4d73[_0xc240('0x31')],qs[_0xc240('0x33')](_0xdb00fa[_0xc240('0x2d')][_0xc240('0x33')]));_0x5c62ff[_0xc240('0x32')]=_0x5c62ff[_0xc240('0x32')][_0xc240('0x34')]?_0x5c62ff['attributes']:_0x1d4d73[_0xc240('0x31')];_0x5c62ff[_0xc240('0x36')]=qs[_0xc240('0x37')](_0xdb00fa[_0xc240('0x2d')]['sort']);_0x5c62ff[_0xc240('0x39')]=qs[_0xc240('0x2f')](_['pick'](_0xdb00fa[_0xc240('0x2d')],_0x1d4d73[_0xc240('0x2f')]));if(_0xdb00fa[_0xc240('0x2d')][_0xc240('0x38')]){_0x5c62ff[_0xc240('0x39')]=_['merge'](_0x5c62ff['where'],{'$or':_[_0xc240('0x28')](_0x5c62ff['attributes'],function(_0xf5827){var _0x8813c7={};_0x8813c7[_0xf5827]={'$like':'%'+_0xdb00fa['query'][_0xc240('0x38')]+'%'};return _0x8813c7;})});}_0x5c62ff=_[_0xc240('0x3a')]({},_0x5c62ff,_0xdb00fa[_0xc240('0x3b')]);return _0x36ba05[_0xc240('0x48')](_0x5c62ff);}})[_0xc240('0x3c')](function(_0x2cbfeb){if(_0x2cbfeb){_0x1e798c=_0x2cbfeb['length'];if(!_0xdb00fa[_0xc240('0x2d')][_0xc240('0x35')](_0xc240('0x4a'))){_0x5c62ff[_0xc240('0x1f')]=qs['limit'](_0xdb00fa['query']['limit']);_0x5c62ff['offset']=qs[_0xc240('0x1d')](_0xdb00fa['query'][_0xc240('0x1d')]);}return _0x36ba05[_0xc240('0x48')](_0x5c62ff);}})['then'](function(_0x5204c6){if(_0x5204c6){return _0x5204c6?{'count':_0x1e798c,'rows':_0x5204c6}:null;}})['then'](respondWithResult(_0x16abbd,null))[_0xc240('0x45')](handleError(_0x16abbd,null));};exports[_0xc240('0x4b')]=function(_0x41f6f7,_0x49c953,_0x3bbab3){var _0x1540e6={};var _0xf20c7e={};var _0x49b1b3;var _0x24f550;return db[_0xc240('0x29')][_0xc240('0x49')]({'where':{'id':_0x41f6f7[_0xc240('0x46')]['id']}})[_0xc240('0x3c')](handleEntityNotFound(_0x49c953,null))[_0xc240('0x3c')](function(_0x43bc49){if(_0x43bc49){_0x49b1b3=_0x43bc49;_0xf20c7e[_0xc240('0x31')]=_['keys'](db[_0xc240('0x4c')][_0xc240('0x2a')]);_0xf20c7e[_0xc240('0x2d')]=_[_0xc240('0x2e')](_0x41f6f7[_0xc240('0x2d')]);_0xf20c7e['filters']=_[_0xc240('0x30')](_0xf20c7e[_0xc240('0x31')],_0xf20c7e[_0xc240('0x2d')]);_0x1540e6['attributes']=_[_0xc240('0x30')](_0xf20c7e[_0xc240('0x31')],qs['fields'](_0x41f6f7['query'][_0xc240('0x33')]));_0x1540e6['attributes']=_0x1540e6['attributes'][_0xc240('0x34')]?_0x1540e6[_0xc240('0x32')]:_0xf20c7e[_0xc240('0x31')];_0x1540e6[_0xc240('0x36')]=qs[_0xc240('0x37')](_0x41f6f7[_0xc240('0x2d')][_0xc240('0x37')]);_0x1540e6['where']=qs['filters'](_[_0xc240('0x4d')](_0x41f6f7[_0xc240('0x2d')],_0xf20c7e['filters']));if(_0x41f6f7[_0xc240('0x2d')]['filter']){_0x1540e6[_0xc240('0x39')]=_[_0xc240('0x3a')](_0x1540e6[_0xc240('0x39')],{'$or':_['map'](_0x1540e6[_0xc240('0x32')],function(_0x59dbd5){var _0x1f757f={};_0x1f757f[_0x59dbd5]={'$like':'%'+_0x41f6f7[_0xc240('0x2d')][_0xc240('0x38')]+'%'};return _0x1f757f;})});}_0x1540e6=_[_0xc240('0x3a')]({},_0x1540e6,_0x41f6f7['options']);return _0x49b1b3['getSubjects'](_0x1540e6);}})[_0xc240('0x3c')](function(_0x1087d1){if(_0x1087d1){_0x24f550=_0x1087d1[_0xc240('0x34')];if(!_0x41f6f7['query'][_0xc240('0x35')](_0xc240('0x4a'))){_0x1540e6[_0xc240('0x1f')]=qs['limit'](_0x41f6f7[_0xc240('0x2d')]['limit']);_0x1540e6[_0xc240('0x1d')]=qs[_0xc240('0x1d')](_0x41f6f7['query'][_0xc240('0x1d')]);}return _0x49b1b3[_0xc240('0x4b')](_0x1540e6);}})[_0xc240('0x3c')](function(_0x30d531){if(_0x30d531){return _0x30d531?{'count':_0x24f550,'rows':_0x30d531}:null;}})[_0xc240('0x3c')](respondWithResult(_0x49c953,null))['catch'](handleError(_0x49c953,null));};exports[_0xc240('0x4e')]=function(_0x250326,_0x2c63c0,_0x59c027){var _0x2fada4={};var _0x3b0d4a={};var _0x1e3045;var _0x4586bc;return db[_0xc240('0x29')][_0xc240('0x49')]({'where':{'id':_0x250326[_0xc240('0x46')]['id']}})['then'](handleEntityNotFound(_0x2c63c0,null))['then'](function(_0x24626d){if(_0x24626d){_0x1e3045=_0x24626d;_0x3b0d4a[_0xc240('0x31')]=_['keys'](db['DeskField'][_0xc240('0x2a')]);_0x3b0d4a[_0xc240('0x2d')]=_[_0xc240('0x2e')](_0x250326[_0xc240('0x2d')]);_0x3b0d4a[_0xc240('0x2f')]=_[_0xc240('0x30')](_0x3b0d4a[_0xc240('0x31')],_0x3b0d4a[_0xc240('0x2d')]);_0x2fada4[_0xc240('0x32')]=_['intersection'](_0x3b0d4a['model'],qs['fields'](_0x250326[_0xc240('0x2d')][_0xc240('0x33')]));_0x2fada4['attributes']=_0x2fada4[_0xc240('0x32')]['length']?_0x2fada4[_0xc240('0x32')]:_0x3b0d4a['model'];_0x2fada4[_0xc240('0x36')]=qs[_0xc240('0x37')](_0x250326[_0xc240('0x2d')][_0xc240('0x37')]);_0x2fada4[_0xc240('0x39')]=qs[_0xc240('0x2f')](_[_0xc240('0x4d')](_0x250326[_0xc240('0x2d')],_0x3b0d4a[_0xc240('0x2f')]));if(_0x250326[_0xc240('0x2d')][_0xc240('0x38')]){_0x2fada4[_0xc240('0x39')]=_['merge'](_0x2fada4[_0xc240('0x39')],{'$or':_[_0xc240('0x28')](_0x2fada4[_0xc240('0x32')],function(_0x216ed7){var _0x34ad2f={};_0x34ad2f[_0x216ed7]={'$like':'%'+_0x250326['query'][_0xc240('0x38')]+'%'};return _0x34ad2f;})});}_0x2fada4=_['merge']({},_0x2fada4,_0x250326['options']);return _0x1e3045[_0xc240('0x4e')](_0x2fada4);}})[_0xc240('0x3c')](function(_0x354be6){if(_0x354be6){_0x4586bc=_0x354be6['length'];if(!_0x250326[_0xc240('0x2d')][_0xc240('0x35')]('nolimit')){_0x2fada4[_0xc240('0x1f')]=qs[_0xc240('0x1f')](_0x250326[_0xc240('0x2d')]['limit']);_0x2fada4[_0xc240('0x1d')]=qs[_0xc240('0x1d')](_0x250326[_0xc240('0x2d')][_0xc240('0x1d')]);}return _0x1e3045[_0xc240('0x4e')](_0x2fada4);}})['then'](function(_0x2cc897){if(_0x2cc897){return _0x2cc897?{'count':_0x4586bc,'rows':_0x2cc897}:null;}})[_0xc240('0x3c')](respondWithResult(_0x2c63c0,null))[_0xc240('0x45')](handleError(_0x2c63c0,null));};exports[_0xc240('0x4f')]=function(_0x2b7fb0,_0x3fb0ed,_0x5608eb){var _0x1cf53b={};var _0x2b0cbe={};var _0x782b90;var _0x357c2f;return db[_0xc240('0x29')][_0xc240('0x49')]({'where':{'id':_0x2b7fb0['params']['id']}})['then'](handleEntityNotFound(_0x3fb0ed,null))['then'](function(_0x4fef6f){if(_0x4fef6f){_0x782b90=_0x4fef6f;_0x2b0cbe[_0xc240('0x31')]=_['keys'](db[_0xc240('0x50')][_0xc240('0x2a')]);_0x2b0cbe['query']=_[_0xc240('0x2e')](_0x2b7fb0[_0xc240('0x2d')]);_0x2b0cbe[_0xc240('0x2f')]=_['intersection'](_0x2b0cbe[_0xc240('0x31')],_0x2b0cbe[_0xc240('0x2d')]);_0x1cf53b[_0xc240('0x32')]=_['intersection'](_0x2b0cbe['model'],qs[_0xc240('0x33')](_0x2b7fb0[_0xc240('0x2d')][_0xc240('0x33')]));_0x1cf53b['attributes']=_0x1cf53b[_0xc240('0x32')][_0xc240('0x34')]?_0x1cf53b['attributes']:_0x2b0cbe['model'];_0x1cf53b[_0xc240('0x36')]=qs[_0xc240('0x37')](_0x2b7fb0['query'][_0xc240('0x37')]);_0x1cf53b[_0xc240('0x39')]=qs[_0xc240('0x2f')](_['pick'](_0x2b7fb0[_0xc240('0x2d')],_0x2b0cbe[_0xc240('0x2f')]));if(_0x2b7fb0['query'][_0xc240('0x38')]){_0x1cf53b[_0xc240('0x39')]=_[_0xc240('0x3a')](_0x1cf53b[_0xc240('0x39')],{'$or':_[_0xc240('0x28')](_0x1cf53b['attributes'],function(_0x21bef9){var _0x67855={};_0x67855[_0x21bef9]={'$like':'%'+_0x2b7fb0[_0xc240('0x2d')][_0xc240('0x38')]+'%'};return _0x67855;})});}_0x1cf53b=_[_0xc240('0x3a')]({},_0x1cf53b,_0x2b7fb0['options']);return _0x782b90[_0xc240('0x4f')](_0x1cf53b);}})['then'](function(_0x1780d3){if(_0x1780d3){_0x357c2f=_0x1780d3[_0xc240('0x34')];if(!_0x2b7fb0[_0xc240('0x2d')][_0xc240('0x35')](_0xc240('0x4a'))){_0x1cf53b['limit']=qs[_0xc240('0x1f')](_0x2b7fb0[_0xc240('0x2d')][_0xc240('0x1f')]);_0x1cf53b[_0xc240('0x1d')]=qs[_0xc240('0x1d')](_0x2b7fb0['query'][_0xc240('0x1d')]);}return _0x782b90['getTags'](_0x1cf53b);}})['then'](function(_0x11c8e3){if(_0x11c8e3){return _0x11c8e3?{'count':_0x357c2f,'rows':_0x11c8e3}:null;}})[_0xc240('0x3c')](respondWithResult(_0x3fb0ed,null))[_0xc240('0x45')](handleError(_0x3fb0ed,null));};exports['setTags']=function(_0x4959b4,_0xfb68ac,_0x40c0b0){if(_0x4959b4['body']['id']){delete _0x4959b4['body']['id'];}return db['DeskConfiguration']['findOne']({'where':{'id':_0x4959b4[_0xc240('0x46')]['id']}})[_0xc240('0x3c')](handleEntityNotFound(_0xfb68ac,null))['then'](function(_0x842863){if(_0x842863){return _0x842863[_0xc240('0x51')](_0x4959b4[_0xc240('0x44')]['ids']||[]);}return null;})[_0xc240('0x3c')](respondWithResult(_0xfb68ac,null))[_0xc240('0x45')](handleError(_0xfb68ac,null));};
\ No newline at end of file
+var _0xbf2e=['../../config/logger','api','../../config/utils','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','sendStatus','stack','name','index','DeskConfiguration','type','key','map','query','model','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','filters','intersection','find','create','body','getFields','findOne','DeskField','length','getSubjects','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','fast-json-patch','request-promise','mustache','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch'];(function(_0x2228a7,_0xf58244){var _0x2e2773=function(_0x22a651){while(--_0x22a651){_0x2228a7['push'](_0x2228a7['shift']());}};_0x2e2773(++_0xf58244);}(_0xbf2e,0xe7));var _0xebf2=function(_0x437b4d,_0x460a2a){_0x437b4d=_0x437b4d-0x0;var _0x594df3=_0xbf2e[_0x437b4d];return _0x594df3;};'use strict';var emlformat=require(_0xebf2('0x0'));var rimraf=require(_0xebf2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xebf2('0x2'));var rp=require(_0xebf2('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xebf2('0x4'));var util=require('util');var path=require(_0xebf2('0x5'));var sox=require(_0xebf2('0x6'));var csv=require('to-csv');var ejs=require(_0xebf2('0x7'));var fs=require('fs');var fs_extra=require(_0xebf2('0x8'));var _=require('lodash');var squel=require(_0xebf2('0x9'));var crypto=require(_0xebf2('0xa'));var jsforce=require(_0xebf2('0xb'));var deskjs=require(_0xebf2('0xc'));var toCsv=require(_0xebf2('0xd'));var querystring=require(_0xebf2('0xe'));var Papa=require(_0xebf2('0xf'));var Redis=require('ioredis');var authService=require(_0xebf2('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xebf2('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xebf2('0x12'))(_0xebf2('0x13'));var utils=require(_0xebf2('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xebf2('0x15'))['db'];function respondWithStatusCode(_0x302fc3,_0x547fdc){_0x547fdc=_0x547fdc||0xcc;return function(_0x4b932c){if(_0x4b932c){return _0x302fc3['sendStatus'](_0x547fdc);}return _0x302fc3[_0xebf2('0x16')](_0x547fdc)['end']();};}function respondWithResult(_0x50498a,_0x4149fc){_0x4149fc=_0x4149fc||0xc8;return function(_0x4ff2d6){if(_0x4ff2d6){return _0x50498a[_0xebf2('0x16')](_0x4149fc)[_0xebf2('0x17')](_0x4ff2d6);}};}function respondWithFilteredResult(_0x2e64c6,_0x198d91){return function(_0x72886e){if(_0x72886e){var _0x25d999=typeof _0x198d91[_0xebf2('0x18')]===_0xebf2('0x19')&&typeof _0x198d91[_0xebf2('0x1a')]===_0xebf2('0x19');var _0xfd99bf=_0x72886e['count'];var _0x2255c8=_0x25d999?0x0:_0x198d91[_0xebf2('0x18')];var _0x447450=_0x25d999?_0x72886e[_0xebf2('0x1b')]:_0x198d91[_0xebf2('0x18')]+_0x198d91[_0xebf2('0x1a')];var _0x569588;if(_0x447450>=_0xfd99bf){_0x447450=_0xfd99bf;_0x569588=0xc8;}else{_0x569588=0xce;}_0x2e64c6[_0xebf2('0x16')](_0x569588);return _0x2e64c6[_0xebf2('0x1c')](_0xebf2('0x1d'),_0x2255c8+'-'+_0x447450+'/'+_0xfd99bf)['json'](_0x72886e);}return null;};}function patchUpdates(_0x304619){return function(_0x476acd){try{jsonpatch[_0xebf2('0x1e')](_0x476acd,_0x304619,!![]);}catch(_0x53044f){return BPromise[_0xebf2('0x1f')](_0x53044f);}return _0x476acd[_0xebf2('0x20')]();};}function saveUpdates(_0x417f05,_0x45b0cc){return function(_0x13665b){if(_0x13665b){return _0x13665b[_0xebf2('0x21')](_0x417f05)[_0xebf2('0x22')](function(_0x3994db){return _0x3994db;});}return null;};}function removeEntity(_0x1c87e9,_0x50bc11){return function(_0x2df34c){if(_0x2df34c){return _0x2df34c[_0xebf2('0x23')]()[_0xebf2('0x22')](function(){_0x1c87e9[_0xebf2('0x16')](0xcc)[_0xebf2('0x24')]();});}};}function handleEntityNotFound(_0x59a99a,_0x4d84c8){return function(_0x5aac7c){if(!_0x5aac7c){_0x59a99a[_0xebf2('0x25')](0x194);}return _0x5aac7c;};}function handleError(_0x54a85a,_0x314c88){_0x314c88=_0x314c88||0x1f4;return function(_0x162f54){logger['error'](_0x162f54[_0xebf2('0x26')]);if(_0x162f54['name']){delete _0x162f54[_0xebf2('0x27')];}_0x54a85a[_0xebf2('0x16')](_0x314c88)['send'](_0x162f54);};}exports[_0xebf2('0x28')]=function(_0x1022da,_0x1094cf){var _0xee3ca3={},_0x553514={},_0x18fc6d={'count':0x0,'rows':[]};var _0x4dd7db=_['map'](db[_0xebf2('0x29')]['rawAttributes'],function(_0x50255a){return{'name':_0x50255a['fieldName'],'type':_0x50255a[_0xebf2('0x2a')][_0xebf2('0x2b')]};});_0x553514['model']=_[_0xebf2('0x2c')](_0x4dd7db,'name');_0x553514[_0xebf2('0x2d')]=_['keys'](_0x1022da[_0xebf2('0x2d')]);_0x553514['filters']=_['intersection'](_0x553514[_0xebf2('0x2e')],_0x553514['query']);_0xee3ca3[_0xebf2('0x2f')]=_['intersection'](_0x553514['model'],qs[_0xebf2('0x30')](_0x1022da[_0xebf2('0x2d')]['fields']));_0xee3ca3[_0xebf2('0x2f')]=_0xee3ca3[_0xebf2('0x2f')]['length']?_0xee3ca3[_0xebf2('0x2f')]:_0x553514[_0xebf2('0x2e')];if(!_0x1022da[_0xebf2('0x2d')][_0xebf2('0x31')](_0xebf2('0x32'))){_0xee3ca3[_0xebf2('0x1a')]=qs[_0xebf2('0x1a')](_0x1022da[_0xebf2('0x2d')]['limit']);_0xee3ca3['offset']=qs['offset'](_0x1022da[_0xebf2('0x2d')][_0xebf2('0x18')]);}_0xee3ca3[_0xebf2('0x33')]=qs[_0xebf2('0x34')](_0x1022da['query']['sort']);_0xee3ca3['where']=qs['filters'](_[_0xebf2('0x35')](_0x1022da[_0xebf2('0x2d')],_0x553514['filters']),_0x4dd7db);if(_0x1022da[_0xebf2('0x2d')][_0xebf2('0x36')]){_0xee3ca3[_0xebf2('0x37')]=_[_0xebf2('0x38')](_0xee3ca3[_0xebf2('0x37')],{'$or':_[_0xebf2('0x2c')](_0x4dd7db,function(_0xdbd204){if(_0xdbd204[_0xebf2('0x2a')]!==_0xebf2('0x39')){var _0x1a1a5d={};_0x1a1a5d[_0xdbd204[_0xebf2('0x27')]]={'$like':'%'+_0x1022da[_0xebf2('0x2d')][_0xebf2('0x36')]+'%'};return _0x1a1a5d;}})});}_0xee3ca3=_[_0xebf2('0x38')]({},_0xee3ca3,_0x1022da[_0xebf2('0x3a')]);var _0x1d4359={'where':_0xee3ca3['where']};return db['DeskConfiguration']['count'](_0x1d4359)[_0xebf2('0x22')](function(_0x25ead1){_0x18fc6d[_0xebf2('0x1b')]=_0x25ead1;if(_0x1022da[_0xebf2('0x2d')][_0xebf2('0x3b')]){_0xee3ca3[_0xebf2('0x3c')]=[{'all':!![]}];}return db['DeskConfiguration'][_0xebf2('0x3d')](_0xee3ca3);})[_0xebf2('0x22')](function(_0x5a5e09){_0x18fc6d[_0xebf2('0x3e')]=_0x5a5e09;return _0x18fc6d;})[_0xebf2('0x22')](respondWithFilteredResult(_0x1094cf,_0xee3ca3))[_0xebf2('0x3f')](handleError(_0x1094cf,null));};exports[_0xebf2('0x40')]=function(_0x5b1f51,_0xd4b13){var _0x1febfe={'raw':![],'where':{'id':_0x5b1f51[_0xebf2('0x41')]['id']}},_0x19a3b6={};_0x19a3b6[_0xebf2('0x2e')]=_[_0xebf2('0x42')](db['DeskConfiguration'][_0xebf2('0x43')]);_0x19a3b6[_0xebf2('0x2d')]=_[_0xebf2('0x42')](_0x5b1f51[_0xebf2('0x2d')]);_0x19a3b6[_0xebf2('0x44')]=_[_0xebf2('0x45')](_0x19a3b6[_0xebf2('0x2e')],_0x19a3b6['query']);_0x1febfe['attributes']=_['intersection'](_0x19a3b6[_0xebf2('0x2e')],qs[_0xebf2('0x30')](_0x5b1f51[_0xebf2('0x2d')][_0xebf2('0x30')]));_0x1febfe[_0xebf2('0x2f')]=_0x1febfe[_0xebf2('0x2f')]['length']?_0x1febfe['attributes']:_0x19a3b6[_0xebf2('0x2e')];if(_0x5b1f51[_0xebf2('0x2d')][_0xebf2('0x3b')]){_0x1febfe['include']=[{'all':!![]}];}_0x1febfe=_[_0xebf2('0x38')]({},_0x1febfe,_0x5b1f51[_0xebf2('0x3a')]);return db[_0xebf2('0x29')][_0xebf2('0x46')](_0x1febfe)[_0xebf2('0x22')](handleEntityNotFound(_0xd4b13,null))[_0xebf2('0x22')](respondWithResult(_0xd4b13,null))[_0xebf2('0x3f')](handleError(_0xd4b13,null));};exports[_0xebf2('0x47')]=function(_0x35e0aa,_0x59470c){return db['DeskConfiguration'][_0xebf2('0x47')](_0x35e0aa[_0xebf2('0x48')],{})[_0xebf2('0x22')](respondWithResult(_0x59470c,0xc9))['catch'](handleError(_0x59470c,null));};exports[_0xebf2('0x21')]=function(_0x5e4367,_0x45efed){if(_0x5e4367[_0xebf2('0x48')]['id']){delete _0x5e4367[_0xebf2('0x48')]['id'];}return db['DeskConfiguration'][_0xebf2('0x46')]({'where':{'id':_0x5e4367[_0xebf2('0x41')]['id']}})['then'](handleEntityNotFound(_0x45efed,null))[_0xebf2('0x22')](saveUpdates(_0x5e4367[_0xebf2('0x48')],null))[_0xebf2('0x22')](respondWithResult(_0x45efed,null))['catch'](handleError(_0x45efed,null));};exports['destroy']=function(_0xde535f,_0x49509a){return db[_0xebf2('0x29')][_0xebf2('0x46')]({'where':{'id':_0xde535f[_0xebf2('0x41')]['id']}})[_0xebf2('0x22')](handleEntityNotFound(_0x49509a,null))[_0xebf2('0x22')](removeEntity(_0x49509a,null))['catch'](handleError(_0x49509a,null));};exports[_0xebf2('0x49')]=function(_0x16e89c,_0xdc257c,_0x1b1d23){var _0x176a11={};var _0xd9d61a={};var _0x14d8bc;var _0x3a99c7;return db[_0xebf2('0x29')][_0xebf2('0x4a')]({'where':{'id':_0x16e89c['params']['id']}})[_0xebf2('0x22')](handleEntityNotFound(_0xdc257c,null))['then'](function(_0x20fa55){if(_0x20fa55){_0x14d8bc=_0x20fa55;_0xd9d61a[_0xebf2('0x2e')]=_[_0xebf2('0x42')](db[_0xebf2('0x4b')][_0xebf2('0x43')]);_0xd9d61a[_0xebf2('0x2d')]=_[_0xebf2('0x42')](_0x16e89c[_0xebf2('0x2d')]);_0xd9d61a[_0xebf2('0x44')]=_['intersection'](_0xd9d61a['model'],_0xd9d61a[_0xebf2('0x2d')]);_0x176a11[_0xebf2('0x2f')]=_[_0xebf2('0x45')](_0xd9d61a[_0xebf2('0x2e')],qs[_0xebf2('0x30')](_0x16e89c['query']['fields']));_0x176a11[_0xebf2('0x2f')]=_0x176a11['attributes'][_0xebf2('0x4c')]?_0x176a11[_0xebf2('0x2f')]:_0xd9d61a[_0xebf2('0x2e')];_0x176a11[_0xebf2('0x33')]=qs['sort'](_0x16e89c[_0xebf2('0x2d')][_0xebf2('0x34')]);_0x176a11[_0xebf2('0x37')]=qs[_0xebf2('0x44')](_[_0xebf2('0x35')](_0x16e89c[_0xebf2('0x2d')],_0xd9d61a[_0xebf2('0x44')]));if(_0x16e89c[_0xebf2('0x2d')][_0xebf2('0x36')]){_0x176a11['where']=_[_0xebf2('0x38')](_0x176a11[_0xebf2('0x37')],{'$or':_['map'](_0x176a11[_0xebf2('0x2f')],function(_0x2ffbed){var _0x3e1015={};_0x3e1015[_0x2ffbed]={'$like':'%'+_0x16e89c[_0xebf2('0x2d')][_0xebf2('0x36')]+'%'};return _0x3e1015;})});}_0x176a11=_[_0xebf2('0x38')]({},_0x176a11,_0x16e89c[_0xebf2('0x3a')]);return _0x14d8bc[_0xebf2('0x49')](_0x176a11);}})[_0xebf2('0x22')](function(_0x2450a8){if(_0x2450a8){_0x3a99c7=_0x2450a8['length'];if(!_0x16e89c[_0xebf2('0x2d')][_0xebf2('0x31')]('nolimit')){_0x176a11[_0xebf2('0x1a')]=qs['limit'](_0x16e89c[_0xebf2('0x2d')][_0xebf2('0x1a')]);_0x176a11['offset']=qs[_0xebf2('0x18')](_0x16e89c['query'][_0xebf2('0x18')]);}return _0x14d8bc[_0xebf2('0x49')](_0x176a11);}})['then'](function(_0x2d2400){if(_0x2d2400){return _0x2d2400?{'count':_0x3a99c7,'rows':_0x2d2400}:null;}})['then'](respondWithResult(_0xdc257c,null))[_0xebf2('0x3f')](handleError(_0xdc257c,null));};exports[_0xebf2('0x4d')]=function(_0x41a8c5,_0xfb95d7,_0x18bbef){var _0x3be9ec={};var _0x4d4e70={};var _0xd45b93;var _0x46fc25;return db['DeskConfiguration']['findOne']({'where':{'id':_0x41a8c5[_0xebf2('0x41')]['id']}})[_0xebf2('0x22')](handleEntityNotFound(_0xfb95d7,null))[_0xebf2('0x22')](function(_0x5dc0e5){if(_0x5dc0e5){_0xd45b93=_0x5dc0e5;_0x4d4e70[_0xebf2('0x2e')]=_[_0xebf2('0x42')](db[_0xebf2('0x4b')][_0xebf2('0x43')]);_0x4d4e70['query']=_[_0xebf2('0x42')](_0x41a8c5[_0xebf2('0x2d')]);_0x4d4e70[_0xebf2('0x44')]=_[_0xebf2('0x45')](_0x4d4e70[_0xebf2('0x2e')],_0x4d4e70['query']);_0x3be9ec['attributes']=_[_0xebf2('0x45')](_0x4d4e70['model'],qs['fields'](_0x41a8c5[_0xebf2('0x2d')][_0xebf2('0x30')]));_0x3be9ec[_0xebf2('0x2f')]=_0x3be9ec[_0xebf2('0x2f')][_0xebf2('0x4c')]?_0x3be9ec['attributes']:_0x4d4e70[_0xebf2('0x2e')];_0x3be9ec[_0xebf2('0x33')]=qs['sort'](_0x41a8c5[_0xebf2('0x2d')][_0xebf2('0x34')]);_0x3be9ec[_0xebf2('0x37')]=qs[_0xebf2('0x44')](_['pick'](_0x41a8c5[_0xebf2('0x2d')],_0x4d4e70['filters']));if(_0x41a8c5[_0xebf2('0x2d')][_0xebf2('0x36')]){_0x3be9ec[_0xebf2('0x37')]=_[_0xebf2('0x38')](_0x3be9ec[_0xebf2('0x37')],{'$or':_[_0xebf2('0x2c')](_0x3be9ec[_0xebf2('0x2f')],function(_0x4d8e5b){var _0x277b81={};_0x277b81[_0x4d8e5b]={'$like':'%'+_0x41a8c5[_0xebf2('0x2d')][_0xebf2('0x36')]+'%'};return _0x277b81;})});}_0x3be9ec=_[_0xebf2('0x38')]({},_0x3be9ec,_0x41a8c5['options']);return _0xd45b93[_0xebf2('0x4d')](_0x3be9ec);}})[_0xebf2('0x22')](function(_0x4923cf){if(_0x4923cf){_0x46fc25=_0x4923cf[_0xebf2('0x4c')];if(!_0x41a8c5[_0xebf2('0x2d')][_0xebf2('0x31')]('nolimit')){_0x3be9ec[_0xebf2('0x1a')]=qs[_0xebf2('0x1a')](_0x41a8c5[_0xebf2('0x2d')][_0xebf2('0x1a')]);_0x3be9ec[_0xebf2('0x18')]=qs[_0xebf2('0x18')](_0x41a8c5[_0xebf2('0x2d')]['offset']);}return _0xd45b93[_0xebf2('0x4d')](_0x3be9ec);}})[_0xebf2('0x22')](function(_0x4f4d36){if(_0x4f4d36){return _0x4f4d36?{'count':_0x46fc25,'rows':_0x4f4d36}:null;}})[_0xebf2('0x22')](respondWithResult(_0xfb95d7,null))['catch'](handleError(_0xfb95d7,null));};exports[_0xebf2('0x4e')]=function(_0x2ba4e0,_0x33ffe0,_0x1b51d4){var _0x195b93={};var _0x283474={};var _0x2e9485;var _0x327a51;return db[_0xebf2('0x29')][_0xebf2('0x4a')]({'where':{'id':_0x2ba4e0[_0xebf2('0x41')]['id']}})[_0xebf2('0x22')](handleEntityNotFound(_0x33ffe0,null))['then'](function(_0x225f58){if(_0x225f58){_0x2e9485=_0x225f58;_0x283474[_0xebf2('0x2e')]=_[_0xebf2('0x42')](db[_0xebf2('0x4b')]['rawAttributes']);_0x283474[_0xebf2('0x2d')]=_[_0xebf2('0x42')](_0x2ba4e0[_0xebf2('0x2d')]);_0x283474[_0xebf2('0x44')]=_[_0xebf2('0x45')](_0x283474[_0xebf2('0x2e')],_0x283474[_0xebf2('0x2d')]);_0x195b93[_0xebf2('0x2f')]=_['intersection'](_0x283474[_0xebf2('0x2e')],qs[_0xebf2('0x30')](_0x2ba4e0[_0xebf2('0x2d')][_0xebf2('0x30')]));_0x195b93[_0xebf2('0x2f')]=_0x195b93['attributes'][_0xebf2('0x4c')]?_0x195b93['attributes']:_0x283474[_0xebf2('0x2e')];_0x195b93[_0xebf2('0x33')]=qs[_0xebf2('0x34')](_0x2ba4e0['query'][_0xebf2('0x34')]);_0x195b93[_0xebf2('0x37')]=qs[_0xebf2('0x44')](_[_0xebf2('0x35')](_0x2ba4e0[_0xebf2('0x2d')],_0x283474[_0xebf2('0x44')]));if(_0x2ba4e0[_0xebf2('0x2d')][_0xebf2('0x36')]){_0x195b93[_0xebf2('0x37')]=_[_0xebf2('0x38')](_0x195b93['where'],{'$or':_[_0xebf2('0x2c')](_0x195b93['attributes'],function(_0x2d80e6){var _0x46e9fa={};_0x46e9fa[_0x2d80e6]={'$like':'%'+_0x2ba4e0[_0xebf2('0x2d')][_0xebf2('0x36')]+'%'};return _0x46e9fa;})});}_0x195b93=_[_0xebf2('0x38')]({},_0x195b93,_0x2ba4e0['options']);return _0x2e9485[_0xebf2('0x4e')](_0x195b93);}})[_0xebf2('0x22')](function(_0x5de8ff){if(_0x5de8ff){_0x327a51=_0x5de8ff[_0xebf2('0x4c')];if(!_0x2ba4e0['query'][_0xebf2('0x31')]('nolimit')){_0x195b93[_0xebf2('0x1a')]=qs['limit'](_0x2ba4e0[_0xebf2('0x2d')][_0xebf2('0x1a')]);_0x195b93['offset']=qs[_0xebf2('0x18')](_0x2ba4e0[_0xebf2('0x2d')][_0xebf2('0x18')]);}return _0x2e9485[_0xebf2('0x4e')](_0x195b93);}})[_0xebf2('0x22')](function(_0x541c6c){if(_0x541c6c){return _0x541c6c?{'count':_0x327a51,'rows':_0x541c6c}:null;}})['then'](respondWithResult(_0x33ffe0,null))[_0xebf2('0x3f')](handleError(_0x33ffe0,null));};exports[_0xebf2('0x4f')]=function(_0x490809,_0x4609b6,_0x5afefa){var _0x4eff8b={};var _0x5bcff9={};var _0x220d7c;var _0x55eaa4;return db['DeskConfiguration'][_0xebf2('0x4a')]({'where':{'id':_0x490809[_0xebf2('0x41')]['id']}})[_0xebf2('0x22')](handleEntityNotFound(_0x4609b6,null))[_0xebf2('0x22')](function(_0x34d070){if(_0x34d070){_0x220d7c=_0x34d070;_0x5bcff9['model']=_[_0xebf2('0x42')](db[_0xebf2('0x50')][_0xebf2('0x43')]);_0x5bcff9['query']=_['keys'](_0x490809[_0xebf2('0x2d')]);_0x5bcff9[_0xebf2('0x44')]=_[_0xebf2('0x45')](_0x5bcff9[_0xebf2('0x2e')],_0x5bcff9[_0xebf2('0x2d')]);_0x4eff8b[_0xebf2('0x2f')]=_[_0xebf2('0x45')](_0x5bcff9['model'],qs[_0xebf2('0x30')](_0x490809[_0xebf2('0x2d')][_0xebf2('0x30')]));_0x4eff8b['attributes']=_0x4eff8b[_0xebf2('0x2f')][_0xebf2('0x4c')]?_0x4eff8b[_0xebf2('0x2f')]:_0x5bcff9[_0xebf2('0x2e')];_0x4eff8b[_0xebf2('0x33')]=qs['sort'](_0x490809['query']['sort']);_0x4eff8b['where']=qs[_0xebf2('0x44')](_[_0xebf2('0x35')](_0x490809['query'],_0x5bcff9[_0xebf2('0x44')]));if(_0x490809[_0xebf2('0x2d')][_0xebf2('0x36')]){_0x4eff8b[_0xebf2('0x37')]=_['merge'](_0x4eff8b[_0xebf2('0x37')],{'$or':_[_0xebf2('0x2c')](_0x4eff8b['attributes'],function(_0x225c6a){var _0x28ba00={};_0x28ba00[_0x225c6a]={'$like':'%'+_0x490809['query'][_0xebf2('0x36')]+'%'};return _0x28ba00;})});}_0x4eff8b=_[_0xebf2('0x38')]({},_0x4eff8b,_0x490809[_0xebf2('0x3a')]);return _0x220d7c['getTags'](_0x4eff8b);}})['then'](function(_0x5e5b4c){if(_0x5e5b4c){_0x55eaa4=_0x5e5b4c['length'];if(!_0x490809[_0xebf2('0x2d')][_0xebf2('0x31')](_0xebf2('0x32'))){_0x4eff8b[_0xebf2('0x1a')]=qs[_0xebf2('0x1a')](_0x490809['query'][_0xebf2('0x1a')]);_0x4eff8b[_0xebf2('0x18')]=qs[_0xebf2('0x18')](_0x490809[_0xebf2('0x2d')]['offset']);}return _0x220d7c['getTags'](_0x4eff8b);}})['then'](function(_0x2cde5a){if(_0x2cde5a){return _0x2cde5a?{'count':_0x55eaa4,'rows':_0x2cde5a}:null;}})[_0xebf2('0x22')](respondWithResult(_0x4609b6,null))[_0xebf2('0x3f')](handleError(_0x4609b6,null));};exports[_0xebf2('0x51')]=function(_0x1cd188,_0x4cfcd6,_0x52344b){if(_0x1cd188[_0xebf2('0x48')]['id']){delete _0x1cd188[_0xebf2('0x48')]['id'];}return db[_0xebf2('0x29')][_0xebf2('0x4a')]({'where':{'id':_0x1cd188[_0xebf2('0x41')]['id']}})['then'](handleEntityNotFound(_0x4cfcd6,null))[_0xebf2('0x22')](function(_0x44f586){if(_0x44f586){return _0x44f586[_0xebf2('0x51')](_0x1cd188['body'][_0xebf2('0x52')]||[]);}return null;})[_0xebf2('0x22')](respondWithResult(_0x4cfcd6,null))['catch'](handleError(_0x4cfcd6,null));};
\ No newline at end of file
index 5776ba3..ec3f311 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe920=['request-promise','path','rimraf','../../config/environment','exports','define','DeskConfiguration','int_desk_configurations','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x5cf0f9,_0x2d4318){var _0x89bf83=function(_0x3fcea3){while(--_0x3fcea3){_0x5cf0f9['push'](_0x5cf0f9['shift']());}};_0x89bf83(++_0x2d4318);}(_0xe920,0xbe));var _0x0e92=function(_0x30bd4d,_0x50eb60){_0x30bd4d=_0x30bd4d-0x0;var _0x306915=_0xe920[_0x30bd4d];return _0x306915;};'use strict';var _=require(_0x0e92('0x0'));var util=require(_0x0e92('0x1'));var logger=require(_0x0e92('0x2'))(_0x0e92('0x3'));var moment=require(_0x0e92('0x4'));var BPromise=require(_0x0e92('0x5'));var rp=require(_0x0e92('0x6'));var fs=require('fs');var path=require(_0x0e92('0x7'));var rimraf=require(_0x0e92('0x8'));var config=require(_0x0e92('0x9'));var attributes=require('./intDeskConfiguration.attributes');module[_0x0e92('0xa')]=function(_0x5291e2,_0x40d9f2){return _0x5291e2[_0x0e92('0xb')](_0x0e92('0xc'),attributes,{'tableName':_0x0e92('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6acf=['int_desk_configurations','lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./intDeskConfiguration.attributes','exports','define'];(function(_0x565ecf,_0x1487ca){var _0x4e8177=function(_0x455c21){while(--_0x455c21){_0x565ecf['push'](_0x565ecf['shift']());}};_0x4e8177(++_0x1487ca);}(_0x6acf,0x79));var _0xf6ac=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6acf[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xf6ac('0x0'));var util=require(_0xf6ac('0x1'));var logger=require(_0xf6ac('0x2'))(_0xf6ac('0x3'));var moment=require(_0xf6ac('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xf6ac('0x5'));var rimraf=require(_0xf6ac('0x6'));var config=require(_0xf6ac('0x7'));var attributes=require(_0xf6ac('0x8'));module[_0xf6ac('0x9')]=function(_0x263b50,_0x3ee27e){return _0x263b50[_0xf6ac('0xa')]('DeskConfiguration',attributes,{'tableName':_0xf6ac('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7422ca4..e4d2ee2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6478=['DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x39885a,_0x3f7b4e){var _0x62b39e=function(_0x578cef){while(--_0x578cef){_0x39885a['push'](_0x39885a['shift']());}};_0x62b39e(++_0x3f7b4e);}(_0x6478,0x1e7));var _0x8647=function(_0x2bcc3b,_0x2f6cb5){_0x2bcc3b=_0x2bcc3b-0x0;var _0x38f336=_0x6478[_0x2bcc3b];return _0x38f336;};'use strict';var _=require(_0x8647('0x0'));var util=require(_0x8647('0x1'));var moment=require(_0x8647('0x2'));var BPromise=require(_0x8647('0x3'));var rs=require(_0x8647('0x4'));var fs=require('fs');var Redis=require(_0x8647('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x8647('0x6'));var logger=require(_0x8647('0x7'))(_0x8647('0x8'));var config=require(_0x8647('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8647('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5ef3f8,_0x172a25,_0x41aaea){return new BPromise(function(_0x3abf85,_0x8768d6){return client[_0x8647('0xb')](_0x5ef3f8,_0x41aaea)[_0x8647('0xc')](function(_0x430976){logger[_0x8647('0xd')](_0x8647('0xe'),_0x172a25,_0x8647('0xf'));logger[_0x8647('0x10')](_0x8647('0x11'),_0x172a25,_0x8647('0xf'),JSON[_0x8647('0x12')](_0x430976));if(_0x430976[_0x8647('0x13')]){if(_0x430976[_0x8647('0x13')][_0x8647('0x14')]===0x1f4){logger['error'](_0x8647('0xe'),_0x172a25,_0x430976['error'][_0x8647('0x15')]);return _0x8768d6(_0x430976[_0x8647('0x13')][_0x8647('0x15')]);}logger[_0x8647('0x13')](_0x8647('0xe'),_0x172a25,_0x430976['error'][_0x8647('0x15')]);return _0x3abf85(_0x430976[_0x8647('0x13')][_0x8647('0x15')]);}else{logger[_0x8647('0xd')]('DeskConfiguration,\x20%s,\x20%s',_0x172a25,'request\x20sent');_0x3abf85(_0x430976[_0x8647('0x16')][_0x8647('0x15')]);}})[_0x8647('0x17')](function(_0x390d4d){logger['error']('DeskConfiguration,\x20%s,\x20%s',_0x172a25,_0x390d4d);_0x8768d6(_0x390d4d);});});}
\ No newline at end of file
+var _0x4b74=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','request\x20sent','debug','stringify','error','code','message','DeskConfiguration,\x20%s,\x20%s','catch','lodash','util','moment','randomstring','ioredis'];(function(_0x242a4f,_0x369c57){var _0x122117=function(_0x55a797){while(--_0x55a797){_0x242a4f['push'](_0x242a4f['shift']());}};_0x122117(++_0x369c57);}(_0x4b74,0x103));var _0x44b7=function(_0x24688d,_0x4a632c){_0x24688d=_0x24688d-0x0;var _0x432b7=_0x4b74[_0x24688d];return _0x432b7;};'use strict';var _=require(_0x44b7('0x0'));var util=require(_0x44b7('0x1'));var moment=require(_0x44b7('0x2'));var BPromise=require('bluebird');var rs=require(_0x44b7('0x3'));var fs=require('fs');var Redis=require(_0x44b7('0x4'));var db=require(_0x44b7('0x5'))['db'];var utils=require(_0x44b7('0x6'));var logger=require(_0x44b7('0x7'))(_0x44b7('0x8'));var config=require(_0x44b7('0x9'));var jayson=require(_0x44b7('0xa'));var client=jayson['client'][_0x44b7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2174f2,_0x7b80e9,_0x4a582b){return new BPromise(function(_0x45dfbe,_0xabf05c){return client[_0x44b7('0xc')](_0x2174f2,_0x4a582b)['then'](function(_0x7d4b17){logger[_0x44b7('0xd')]('DeskConfiguration,\x20%s,\x20%s',_0x7b80e9,_0x44b7('0xe'));logger[_0x44b7('0xf')]('DeskConfiguration,\x20%s,\x20%s,\x20%s',_0x7b80e9,_0x44b7('0xe'),JSON[_0x44b7('0x10')](_0x7d4b17));if(_0x7d4b17[_0x44b7('0x11')]){if(_0x7d4b17['error'][_0x44b7('0x12')]===0x1f4){logger[_0x44b7('0x11')]('DeskConfiguration,\x20%s,\x20%s',_0x7b80e9,_0x7d4b17[_0x44b7('0x11')]['message']);return _0xabf05c(_0x7d4b17[_0x44b7('0x11')][_0x44b7('0x13')]);}logger[_0x44b7('0x11')]('DeskConfiguration,\x20%s,\x20%s',_0x7b80e9,_0x7d4b17['error'][_0x44b7('0x13')]);return _0x45dfbe(_0x7d4b17['error']['message']);}else{logger['info'](_0x44b7('0x14'),_0x7b80e9,_0x44b7('0xe'));_0x45dfbe(_0x7d4b17['result'][_0x44b7('0x13')]);}})[_0x44b7('0x15')](function(_0x3528c8){logger[_0x44b7('0x11')](_0x44b7('0x14'),_0x7b80e9,_0x3528c8);_0xabf05c(_0x3528c8);});});}
\ No newline at end of file
index 47f91c1..bdef8ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5e4=['index','post','create','put','/:id','delete','exports','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskField.controller','get','isAuthenticated'];(function(_0x43d663,_0x483e9d){var _0x54f3d5=function(_0x3b74d4){while(--_0x3b74d4){_0x43d663['push'](_0x43d663['shift']());}};_0x54f3d5(++_0x483e9d);}(_0xc5e4,0x117));var _0x4c5e=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xc5e4[_0x122ef9];return _0x42fba0;};'use strict';var multer=require('multer');var util=require(_0x4c5e('0x0'));var path=require(_0x4c5e('0x1'));var timeout=require('connect-timeout');var express=require(_0x4c5e('0x2'));var router=express[_0x4c5e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x4c5e('0x4'));var interaction=require(_0x4c5e('0x5'));var config=require(_0x4c5e('0x6'));var controller=require(_0x4c5e('0x7'));router[_0x4c5e('0x8')]('/',auth[_0x4c5e('0x9')](),controller[_0x4c5e('0xa')]);router[_0x4c5e('0x8')]('/:id',auth[_0x4c5e('0x9')](),controller['show']);router[_0x4c5e('0xb')]('/',auth[_0x4c5e('0x9')](),controller[_0x4c5e('0xc')]);router[_0x4c5e('0xd')](_0x4c5e('0xe'),auth[_0x4c5e('0x9')](),controller['update']);router[_0x4c5e('0xf')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x4c5e('0x10')]=router;
\ No newline at end of file
+var _0x00c2=['update','delete','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intDeskField.controller','get','isAuthenticated','index','/:id','show','post','create'];(function(_0x2db086,_0xf3af9c){var _0x1ccd5e=function(_0x45a1fa){while(--_0x45a1fa){_0x2db086['push'](_0x2db086['shift']());}};_0x1ccd5e(++_0xf3af9c);}(_0x00c2,0x146));var _0x200c=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x00c2[_0x19e35c];return _0x3e1fe8;};'use strict';var multer=require('multer');var util=require(_0x200c('0x0'));var path=require(_0x200c('0x1'));var timeout=require(_0x200c('0x2'));var express=require(_0x200c('0x3'));var router=express[_0x200c('0x4')]();var fs_extra=require(_0x200c('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x200c('0x6'));var config=require(_0x200c('0x7'));var controller=require(_0x200c('0x8'));router[_0x200c('0x9')]('/',auth[_0x200c('0xa')](),controller[_0x200c('0xb')]);router[_0x200c('0x9')](_0x200c('0xc'),auth['isAuthenticated'](),controller[_0x200c('0xd')]);router[_0x200c('0xe')]('/',auth[_0x200c('0xa')](),controller[_0x200c('0xf')]);router['put'](_0x200c('0xc'),auth[_0x200c('0xa')](),controller[_0x200c('0x10')]);router[_0x200c('0x11')]('/:id',auth[_0x200c('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 5843f4a..380faba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x153c=['BOOLEAN','sequelize','exports','string','variable','keyValue','picklist','STRING','ENUM','customVariable'];(function(_0x11ea3d,_0x1a2411){var _0x16a26f=function(_0x2b0eed){while(--_0x2b0eed){_0x11ea3d['push'](_0x11ea3d['shift']());}};_0x16a26f(++_0x1a2411);}(_0x153c,0x191));var _0xc153=function(_0x42e020,_0xc69607){_0x42e020=_0x42e020-0x0;var _0x1dc38d=_0x153c[_0x42e020];return _0x1dc38d;};'use strict';var Sequelize=require(_0xc153('0x0'));module[_0xc153('0x1')]={'type':{'type':Sequelize['ENUM'](_0xc153('0x2'),_0xc153('0x3'),'customVariable',_0xc153('0x4'),_0xc153('0x5')),'defaultValue':_0xc153('0x2')},'content':{'type':Sequelize[_0xc153('0x6')]},'key':{'type':Sequelize[_0xc153('0x6')]},'keyType':{'type':Sequelize[_0xc153('0x7')]('string','variable',_0xc153('0x8'))},'keyContent':{'type':Sequelize[_0xc153('0x6')]},'idField':{'type':Sequelize[_0xc153('0x6')]},'nameField':{'type':Sequelize[_0xc153('0x6')]},'customField':{'type':Sequelize[_0xc153('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xc153('0x6')]}};
\ No newline at end of file
+var _0xcaf2=['customVariable','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcaf2,0x190));var _0x2caf=function(_0x56be45,_0x10cd0e){_0x56be45=_0x56be45-0x0;var _0x1b75d3=_0xcaf2[_0x56be45];return _0x1b75d3;};'use strict';var Sequelize=require(_0x2caf('0x0'));module[_0x2caf('0x1')]={'type':{'type':Sequelize[_0x2caf('0x2')](_0x2caf('0x3'),_0x2caf('0x4'),_0x2caf('0x5'),'keyValue',_0x2caf('0x6')),'defaultValue':_0x2caf('0x3')},'content':{'type':Sequelize[_0x2caf('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0x2caf('0x3'),_0x2caf('0x4'),_0x2caf('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x2caf('0x7')]},'nameField':{'type':Sequelize[_0x2caf('0x7')]},'customField':{'type':Sequelize[_0x2caf('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x2caf('0x7')]}};
\ No newline at end of file
index c1d1875..04627d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ca4=['length','options','find','create','update','body','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','Content-Range','apply','reject','save','then','destroy','error','send','index','map','fieldName','type','key','model','name','keys','filters','intersection','query','attributes','fields','hasOwnProperty','sort','where','filter','merge','VIRTUAL','DeskField','includeAll','include','findAll','catch','show','params','rawAttributes'];(function(_0x24ddee,_0x44c3e6){var _0x4a1a36=function(_0x138c2e){while(--_0x138c2e){_0x24ddee['push'](_0x24ddee['shift']());}};_0x4a1a36(++_0x44c3e6);}(_0x3ca4,0x17d));var _0x43ca=function(_0x538c5f,_0x45bf17){_0x538c5f=_0x538c5f-0x0;var _0x37eff3=_0x3ca4[_0x538c5f];return _0x37eff3;};'use strict';var emlformat=require(_0x43ca('0x0'));var rimraf=require(_0x43ca('0x1'));var zipdir=require(_0x43ca('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x43ca('0x3'));var BPromise=require(_0x43ca('0x4'));var Mustache=require(_0x43ca('0x5'));var util=require(_0x43ca('0x6'));var path=require(_0x43ca('0x7'));var sox=require(_0x43ca('0x8'));var csv=require(_0x43ca('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x43ca('0xa'));var _=require(_0x43ca('0xb'));var squel=require(_0x43ca('0xc'));var crypto=require(_0x43ca('0xd'));var jsforce=require(_0x43ca('0xe'));var deskjs=require(_0x43ca('0xf'));var toCsv=require(_0x43ca('0x9'));var querystring=require(_0x43ca('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x43ca('0x11'));var qs=require(_0x43ca('0x12'));var as=require(_0x43ca('0x13'));var hardwareService=require(_0x43ca('0x14'));var logger=require('../../config/logger')(_0x43ca('0x15'));var utils=require(_0x43ca('0x16'));var config=require(_0x43ca('0x17'));var licenseUtil=require(_0x43ca('0x18'));var db=require(_0x43ca('0x19'))['db'];function respondWithStatusCode(_0x246ead,_0x30184f){_0x30184f=_0x30184f||0xcc;return function(_0x2ede07){if(_0x2ede07){return _0x246ead[_0x43ca('0x1a')](_0x30184f);}return _0x246ead['status'](_0x30184f)[_0x43ca('0x1b')]();};}function respondWithResult(_0x13cf26,_0x4b710d){_0x4b710d=_0x4b710d||0xc8;return function(_0x309176){if(_0x309176){return _0x13cf26['status'](_0x4b710d)[_0x43ca('0x1c')](_0x309176);}};}function respondWithFilteredResult(_0x567579,_0xdccc62){return function(_0x1a8bf6){if(_0x1a8bf6){var _0x51a517=typeof _0xdccc62[_0x43ca('0x1d')]===_0x43ca('0x1e')&&typeof _0xdccc62[_0x43ca('0x1f')]==='undefined';var _0x4fb5e4=_0x1a8bf6['count'];var _0x5e50c9=_0x51a517?0x0:_0xdccc62[_0x43ca('0x1d')];var _0x268817=_0x51a517?_0x1a8bf6[_0x43ca('0x20')]:_0xdccc62['offset']+_0xdccc62[_0x43ca('0x1f')];var _0x806f68;if(_0x268817>=_0x4fb5e4){_0x268817=_0x4fb5e4;_0x806f68=0xc8;}else{_0x806f68=0xce;}_0x567579[_0x43ca('0x21')](_0x806f68);return _0x567579['set'](_0x43ca('0x22'),_0x5e50c9+'-'+_0x268817+'/'+_0x4fb5e4)['json'](_0x1a8bf6);}return null;};}function patchUpdates(_0x106d07){return function(_0x9bc5dc){try{jsonpatch[_0x43ca('0x23')](_0x9bc5dc,_0x106d07,!![]);}catch(_0x5ae497){return BPromise[_0x43ca('0x24')](_0x5ae497);}return _0x9bc5dc[_0x43ca('0x25')]();};}function saveUpdates(_0x2af64f,_0x2ad8fa){return function(_0x35d34c){if(_0x35d34c){return _0x35d34c['update'](_0x2af64f)[_0x43ca('0x26')](function(_0x34767e){return _0x34767e;});}return null;};}function removeEntity(_0x557b96,_0x379902){return function(_0x22d6ac){if(_0x22d6ac){return _0x22d6ac[_0x43ca('0x27')]()[_0x43ca('0x26')](function(){_0x557b96[_0x43ca('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2da1ec,_0xc07cde){return function(_0x29f2ee){if(!_0x29f2ee){_0x2da1ec[_0x43ca('0x1a')](0x194);}return _0x29f2ee;};}function handleError(_0x14287e,_0x1de54b){_0x1de54b=_0x1de54b||0x1f4;return function(_0x3b2078){logger[_0x43ca('0x28')](_0x3b2078['stack']);if(_0x3b2078['name']){delete _0x3b2078['name'];}_0x14287e[_0x43ca('0x21')](_0x1de54b)[_0x43ca('0x29')](_0x3b2078);};}exports[_0x43ca('0x2a')]=function(_0x9d09b9,_0x34dc4f){var _0x36884b={},_0xffad2d={},_0x3f0b2b={'count':0x0,'rows':[]};var _0x5f37ff=_[_0x43ca('0x2b')](db['DeskField']['rawAttributes'],function(_0x12b2a2){return{'name':_0x12b2a2[_0x43ca('0x2c')],'type':_0x12b2a2[_0x43ca('0x2d')][_0x43ca('0x2e')]};});_0xffad2d[_0x43ca('0x2f')]=_['map'](_0x5f37ff,_0x43ca('0x30'));_0xffad2d['query']=_[_0x43ca('0x31')](_0x9d09b9['query']);_0xffad2d[_0x43ca('0x32')]=_[_0x43ca('0x33')](_0xffad2d['model'],_0xffad2d[_0x43ca('0x34')]);_0x36884b[_0x43ca('0x35')]=_[_0x43ca('0x33')](_0xffad2d[_0x43ca('0x2f')],qs[_0x43ca('0x36')](_0x9d09b9[_0x43ca('0x34')][_0x43ca('0x36')]));_0x36884b['attributes']=_0x36884b[_0x43ca('0x35')]['length']?_0x36884b[_0x43ca('0x35')]:_0xffad2d[_0x43ca('0x2f')];if(!_0x9d09b9['query'][_0x43ca('0x37')]('nolimit')){_0x36884b['limit']=qs[_0x43ca('0x1f')](_0x9d09b9[_0x43ca('0x34')][_0x43ca('0x1f')]);_0x36884b[_0x43ca('0x1d')]=qs[_0x43ca('0x1d')](_0x9d09b9[_0x43ca('0x34')][_0x43ca('0x1d')]);}_0x36884b['order']=qs[_0x43ca('0x38')](_0x9d09b9[_0x43ca('0x34')]['sort']);_0x36884b[_0x43ca('0x39')]=qs[_0x43ca('0x32')](_['pick'](_0x9d09b9[_0x43ca('0x34')],_0xffad2d['filters']),_0x5f37ff);if(_0x9d09b9['query'][_0x43ca('0x3a')]){_0x36884b[_0x43ca('0x39')]=_[_0x43ca('0x3b')](_0x36884b[_0x43ca('0x39')],{'$or':_[_0x43ca('0x2b')](_0x5f37ff,function(_0x2205c4){if(_0x2205c4[_0x43ca('0x2d')]!==_0x43ca('0x3c')){var _0x35e316={};_0x35e316[_0x2205c4[_0x43ca('0x30')]]={'$like':'%'+_0x9d09b9[_0x43ca('0x34')][_0x43ca('0x3a')]+'%'};return _0x35e316;}})});}_0x36884b=_['merge']({},_0x36884b,_0x9d09b9['options']);var _0xb36699={'where':_0x36884b[_0x43ca('0x39')]};return db[_0x43ca('0x3d')]['count'](_0xb36699)[_0x43ca('0x26')](function(_0x57a2d4){_0x3f0b2b[_0x43ca('0x20')]=_0x57a2d4;if(_0x9d09b9['query'][_0x43ca('0x3e')]){_0x36884b[_0x43ca('0x3f')]=[{'all':!![]}];}return db[_0x43ca('0x3d')][_0x43ca('0x40')](_0x36884b);})[_0x43ca('0x26')](function(_0xc48edb){_0x3f0b2b['rows']=_0xc48edb;return _0x3f0b2b;})['then'](respondWithFilteredResult(_0x34dc4f,_0x36884b))[_0x43ca('0x41')](handleError(_0x34dc4f,null));};exports[_0x43ca('0x42')]=function(_0x1a3d8d,_0x331505){var _0x4343c0={'raw':!![],'where':{'id':_0x1a3d8d[_0x43ca('0x43')]['id']}},_0x35cb5e={};_0x35cb5e[_0x43ca('0x2f')]=_[_0x43ca('0x31')](db[_0x43ca('0x3d')][_0x43ca('0x44')]);_0x35cb5e[_0x43ca('0x34')]=_[_0x43ca('0x31')](_0x1a3d8d[_0x43ca('0x34')]);_0x35cb5e[_0x43ca('0x32')]=_[_0x43ca('0x33')](_0x35cb5e[_0x43ca('0x2f')],_0x35cb5e[_0x43ca('0x34')]);_0x4343c0[_0x43ca('0x35')]=_[_0x43ca('0x33')](_0x35cb5e[_0x43ca('0x2f')],qs['fields'](_0x1a3d8d[_0x43ca('0x34')][_0x43ca('0x36')]));_0x4343c0[_0x43ca('0x35')]=_0x4343c0['attributes'][_0x43ca('0x45')]?_0x4343c0[_0x43ca('0x35')]:_0x35cb5e[_0x43ca('0x2f')];if(_0x1a3d8d[_0x43ca('0x34')][_0x43ca('0x3e')]){_0x4343c0[_0x43ca('0x3f')]=[{'all':!![]}];}_0x4343c0=_[_0x43ca('0x3b')]({},_0x4343c0,_0x1a3d8d[_0x43ca('0x46')]);return db[_0x43ca('0x3d')][_0x43ca('0x47')](_0x4343c0)[_0x43ca('0x26')](handleEntityNotFound(_0x331505,null))['then'](respondWithResult(_0x331505,null))[_0x43ca('0x41')](handleError(_0x331505,null));};exports[_0x43ca('0x48')]=function(_0x31bbaf,_0x4b4c54){return db['DeskField'][_0x43ca('0x48')](_0x31bbaf['body'],{})[_0x43ca('0x26')](respondWithResult(_0x4b4c54,0xc9))['catch'](handleError(_0x4b4c54,null));};exports[_0x43ca('0x49')]=function(_0x25e0fd,_0x45cafd){if(_0x25e0fd['body']['id']){delete _0x25e0fd[_0x43ca('0x4a')]['id'];}return db[_0x43ca('0x3d')]['find']({'where':{'id':_0x25e0fd[_0x43ca('0x43')]['id']}})['then'](handleEntityNotFound(_0x45cafd,null))['then'](saveUpdates(_0x25e0fd[_0x43ca('0x4a')],null))[_0x43ca('0x26')](respondWithResult(_0x45cafd,null))[_0x43ca('0x41')](handleError(_0x45cafd,null));};exports[_0x43ca('0x27')]=function(_0x10c183,_0x435daa){return db['DeskField']['find']({'where':{'id':_0x10c183[_0x43ca('0x43')]['id']}})[_0x43ca('0x26')](handleEntityNotFound(_0x435daa,null))['then'](removeEntity(_0x435daa,null))['catch'](handleError(_0x435daa,null));};
\ No newline at end of file
+var _0x444e=['fieldName','type','key','model','keys','query','filters','intersection','attributes','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','includeAll','include','rows','catch','show','fields','options','find','create','body','params','eml-format','zip-dir','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../mysqldb','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','then','destroy','status','sendStatus','error','stack','name','index','map','DeskField','rawAttributes'];(function(_0x10fac7,_0x4a33c9){var _0x468727=function(_0x5ec81d){while(--_0x5ec81d){_0x10fac7['push'](_0x10fac7['shift']());}};_0x468727(++_0x4a33c9);}(_0x444e,0xe8));var _0xe444=function(_0x2adcb3,_0x4c9514){_0x2adcb3=_0x2adcb3-0x0;var _0x1a68f2=_0x444e[_0x2adcb3];return _0x1a68f2;};'use strict';var emlformat=require(_0xe444('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe444('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe444('0x2'));var moment=require('moment');var BPromise=require(_0xe444('0x3'));var Mustache=require('mustache');var util=require(_0xe444('0x4'));var path=require(_0xe444('0x5'));var sox=require(_0xe444('0x6'));var csv=require(_0xe444('0x7'));var ejs=require(_0xe444('0x8'));var fs=require('fs');var fs_extra=require(_0xe444('0x9'));var _=require('lodash');var squel=require(_0xe444('0xa'));var crypto=require('crypto');var jsforce=require(_0xe444('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xe444('0x7'));var querystring=require(_0xe444('0xc'));var Papa=require(_0xe444('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xe444('0xe'));var as=require(_0xe444('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe444('0x10'))('api');var utils=require('../../config/utils');var config=require(_0xe444('0x11'));var licenseUtil=require('../../config/license/util');var db=require(_0xe444('0x12'))['db'];function respondWithStatusCode(_0x2f9d12,_0x59792f){_0x59792f=_0x59792f||0xcc;return function(_0x28c3e4){if(_0x28c3e4){return _0x2f9d12['sendStatus'](_0x59792f);}return _0x2f9d12['status'](_0x59792f)[_0xe444('0x13')]();};}function respondWithResult(_0x3e3b9f,_0x5eb55c){_0x5eb55c=_0x5eb55c||0xc8;return function(_0x192c1a){if(_0x192c1a){return _0x3e3b9f['status'](_0x5eb55c)[_0xe444('0x14')](_0x192c1a);}};}function respondWithFilteredResult(_0x3acd97,_0x18f7cf){return function(_0x3af415){if(_0x3af415){var _0x363716=typeof _0x18f7cf[_0xe444('0x15')]===_0xe444('0x16')&&typeof _0x18f7cf[_0xe444('0x17')]===_0xe444('0x16');var _0x4009c7=_0x3af415[_0xe444('0x18')];var _0x3d9066=_0x363716?0x0:_0x18f7cf[_0xe444('0x15')];var _0x4e2711=_0x363716?_0x3af415[_0xe444('0x18')]:_0x18f7cf[_0xe444('0x15')]+_0x18f7cf[_0xe444('0x17')];var _0x2f6a4a;if(_0x4e2711>=_0x4009c7){_0x4e2711=_0x4009c7;_0x2f6a4a=0xc8;}else{_0x2f6a4a=0xce;}_0x3acd97['status'](_0x2f6a4a);return _0x3acd97[_0xe444('0x19')](_0xe444('0x1a'),_0x3d9066+'-'+_0x4e2711+'/'+_0x4009c7)[_0xe444('0x14')](_0x3af415);}return null;};}function patchUpdates(_0xf213c0){return function(_0x37c15e){try{jsonpatch['apply'](_0x37c15e,_0xf213c0,!![]);}catch(_0x21d01d){return BPromise[_0xe444('0x1b')](_0x21d01d);}return _0x37c15e['save']();};}function saveUpdates(_0x2b52a6,_0x5ef1a4){return function(_0x13108c){if(_0x13108c){return _0x13108c[_0xe444('0x1c')](_0x2b52a6)[_0xe444('0x1d')](function(_0x322c07){return _0x322c07;});}return null;};}function removeEntity(_0x1fa32b,_0x481762){return function(_0x527bf5){if(_0x527bf5){return _0x527bf5[_0xe444('0x1e')]()[_0xe444('0x1d')](function(){_0x1fa32b[_0xe444('0x1f')](0xcc)[_0xe444('0x13')]();});}};}function handleEntityNotFound(_0x2a03a2,_0x5e0311){return function(_0x3c9cf7){if(!_0x3c9cf7){_0x2a03a2[_0xe444('0x20')](0x194);}return _0x3c9cf7;};}function handleError(_0x5e36bb,_0x32055b){_0x32055b=_0x32055b||0x1f4;return function(_0x4f4412){logger[_0xe444('0x21')](_0x4f4412[_0xe444('0x22')]);if(_0x4f4412[_0xe444('0x23')]){delete _0x4f4412[_0xe444('0x23')];}_0x5e36bb[_0xe444('0x1f')](_0x32055b)['send'](_0x4f4412);};}exports[_0xe444('0x24')]=function(_0xe8814b,_0x311989){var _0x304b33={},_0x5bc063={},_0x594b43={'count':0x0,'rows':[]};var _0x1bfec6=_[_0xe444('0x25')](db[_0xe444('0x26')][_0xe444('0x27')],function(_0x5173d5){return{'name':_0x5173d5[_0xe444('0x28')],'type':_0x5173d5[_0xe444('0x29')][_0xe444('0x2a')]};});_0x5bc063[_0xe444('0x2b')]=_['map'](_0x1bfec6,'name');_0x5bc063['query']=_[_0xe444('0x2c')](_0xe8814b[_0xe444('0x2d')]);_0x5bc063[_0xe444('0x2e')]=_[_0xe444('0x2f')](_0x5bc063[_0xe444('0x2b')],_0x5bc063['query']);_0x304b33[_0xe444('0x30')]=_[_0xe444('0x2f')](_0x5bc063[_0xe444('0x2b')],qs['fields'](_0xe8814b[_0xe444('0x2d')]['fields']));_0x304b33['attributes']=_0x304b33[_0xe444('0x30')][_0xe444('0x31')]?_0x304b33['attributes']:_0x5bc063[_0xe444('0x2b')];if(!_0xe8814b['query'][_0xe444('0x32')]('nolimit')){_0x304b33['limit']=qs[_0xe444('0x17')](_0xe8814b['query'][_0xe444('0x17')]);_0x304b33[_0xe444('0x15')]=qs[_0xe444('0x15')](_0xe8814b[_0xe444('0x2d')]['offset']);}_0x304b33[_0xe444('0x33')]=qs[_0xe444('0x34')](_0xe8814b[_0xe444('0x2d')]['sort']);_0x304b33[_0xe444('0x35')]=qs['filters'](_[_0xe444('0x36')](_0xe8814b[_0xe444('0x2d')],_0x5bc063[_0xe444('0x2e')]),_0x1bfec6);if(_0xe8814b['query']['filter']){_0x304b33[_0xe444('0x35')]=_[_0xe444('0x37')](_0x304b33[_0xe444('0x35')],{'$or':_[_0xe444('0x25')](_0x1bfec6,function(_0xec1e35){if(_0xec1e35[_0xe444('0x29')]!==_0xe444('0x38')){var _0x5c2ddf={};_0x5c2ddf[_0xec1e35['name']]={'$like':'%'+_0xe8814b[_0xe444('0x2d')]['filter']+'%'};return _0x5c2ddf;}})});}_0x304b33=_[_0xe444('0x37')]({},_0x304b33,_0xe8814b['options']);var _0x3ad83c={'where':_0x304b33[_0xe444('0x35')]};return db[_0xe444('0x26')][_0xe444('0x18')](_0x3ad83c)[_0xe444('0x1d')](function(_0x2b1e25){_0x594b43['count']=_0x2b1e25;if(_0xe8814b[_0xe444('0x2d')][_0xe444('0x39')]){_0x304b33[_0xe444('0x3a')]=[{'all':!![]}];}return db[_0xe444('0x26')]['findAll'](_0x304b33);})[_0xe444('0x1d')](function(_0x19283c){_0x594b43[_0xe444('0x3b')]=_0x19283c;return _0x594b43;})[_0xe444('0x1d')](respondWithFilteredResult(_0x311989,_0x304b33))[_0xe444('0x3c')](handleError(_0x311989,null));};exports[_0xe444('0x3d')]=function(_0x62093c,_0x390ba0){var _0x16c249={'raw':!![],'where':{'id':_0x62093c['params']['id']}},_0x543bae={};_0x543bae['model']=_[_0xe444('0x2c')](db[_0xe444('0x26')][_0xe444('0x27')]);_0x543bae[_0xe444('0x2d')]=_[_0xe444('0x2c')](_0x62093c['query']);_0x543bae['filters']=_[_0xe444('0x2f')](_0x543bae[_0xe444('0x2b')],_0x543bae[_0xe444('0x2d')]);_0x16c249['attributes']=_[_0xe444('0x2f')](_0x543bae[_0xe444('0x2b')],qs[_0xe444('0x3e')](_0x62093c[_0xe444('0x2d')][_0xe444('0x3e')]));_0x16c249[_0xe444('0x30')]=_0x16c249['attributes']['length']?_0x16c249[_0xe444('0x30')]:_0x543bae[_0xe444('0x2b')];if(_0x62093c[_0xe444('0x2d')][_0xe444('0x39')]){_0x16c249['include']=[{'all':!![]}];}_0x16c249=_[_0xe444('0x37')]({},_0x16c249,_0x62093c[_0xe444('0x3f')]);return db[_0xe444('0x26')][_0xe444('0x40')](_0x16c249)[_0xe444('0x1d')](handleEntityNotFound(_0x390ba0,null))[_0xe444('0x1d')](respondWithResult(_0x390ba0,null))[_0xe444('0x3c')](handleError(_0x390ba0,null));};exports[_0xe444('0x41')]=function(_0x4ae871,_0x4315e8){return db[_0xe444('0x26')][_0xe444('0x41')](_0x4ae871['body'],{})[_0xe444('0x1d')](respondWithResult(_0x4315e8,0xc9))['catch'](handleError(_0x4315e8,null));};exports['update']=function(_0x4920a4,_0x3b2957){if(_0x4920a4[_0xe444('0x42')]['id']){delete _0x4920a4['body']['id'];}return db['DeskField'][_0xe444('0x40')]({'where':{'id':_0x4920a4[_0xe444('0x43')]['id']}})['then'](handleEntityNotFound(_0x3b2957,null))[_0xe444('0x1d')](saveUpdates(_0x4920a4[_0xe444('0x42')],null))[_0xe444('0x1d')](respondWithResult(_0x3b2957,null))['catch'](handleError(_0x3b2957,null));};exports[_0xe444('0x1e')]=function(_0x5ad4a8,_0xf40b55){return db[_0xe444('0x26')]['find']({'where':{'id':_0x5ad4a8['params']['id']}})[_0xe444('0x1d')](handleEntityNotFound(_0xf40b55,null))['then'](removeEntity(_0xf40b55,null))[_0xe444('0x3c')](handleError(_0xf40b55,null));};
\ No newline at end of file
index d37d562..7c8d123 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75c4=['DeskField','int_desk_fields','desk_unique_index','idField','lodash','util','../../config/logger','api','bluebird','request-promise','../../config/environment','./intDeskField.attributes','exports'];(function(_0x16b9ed,_0x56517a){var _0x66b1f8=function(_0x1c883){while(--_0x1c883){_0x16b9ed['push'](_0x16b9ed['shift']());}};_0x66b1f8(++_0x56517a);}(_0x75c4,0x93));var _0x475c=function(_0x1a8d2a,_0xdbe9b8){_0x1a8d2a=_0x1a8d2a-0x0;var _0x1cf709=_0x75c4[_0x1a8d2a];return _0x1cf709;};'use strict';var _=require(_0x475c('0x0'));var util=require(_0x475c('0x1'));var logger=require(_0x475c('0x2'))(_0x475c('0x3'));var moment=require('moment');var BPromise=require(_0x475c('0x4'));var rp=require(_0x475c('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x475c('0x6'));var attributes=require(_0x475c('0x7'));module[_0x475c('0x8')]=function(_0x163f36,_0x318209){return _0x163f36['define'](_0x475c('0x9'),attributes,{'tableName':_0x475c('0xa'),'paranoid':![],'indexes':[{'name':_0x475c('0xb'),'fields':[_0x475c('0xc'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x77fb=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./intDeskField.attributes','exports','define','DeskField','int_desk_fields','desk_unique_index','FieldId','lodash'];(function(_0x3207a4,_0x1b9024){var _0x5c8dff=function(_0x4611b9){while(--_0x4611b9){_0x3207a4['push'](_0x3207a4['shift']());}};_0x5c8dff(++_0x1b9024);}(_0x77fb,0x19f));var _0xb77f=function(_0x2e5ac8,_0x14dcd7){_0x2e5ac8=_0x2e5ac8-0x0;var _0x472d41=_0x77fb[_0x2e5ac8];return _0x472d41;};'use strict';var _=require(_0xb77f('0x0'));var util=require(_0xb77f('0x1'));var logger=require(_0xb77f('0x2'))(_0xb77f('0x3'));var moment=require('moment');var BPromise=require(_0xb77f('0x4'));var rp=require(_0xb77f('0x5'));var fs=require('fs');var path=require(_0xb77f('0x6'));var rimraf=require(_0xb77f('0x7'));var config=require(_0xb77f('0x8'));var attributes=require(_0xb77f('0x9'));module[_0xb77f('0xa')]=function(_0x3c8f30,_0x1de7b4){return _0x3c8f30[_0xb77f('0xb')](_0xb77f('0xc'),attributes,{'tableName':_0xb77f('0xd'),'paranoid':![],'indexes':[{'name':_0xb77f('0xe'),'fields':['idField',_0xb77f('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 34768e9..cc6baa2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x841c=['randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','request','DeskField,\x20%s,\x20%s','request\x20sent','debug','DeskField,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','util','moment','bluebird'];(function(_0x50cc34,_0x2d8a52){var _0x592e08=function(_0x19bc02){while(--_0x19bc02){_0x50cc34['push'](_0x50cc34['shift']());}};_0x592e08(++_0x2d8a52);}(_0x841c,0x123));var _0xc841=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0x841c[_0x1928c9];return _0x51b5fb;};'use strict';var _=require('lodash');var util=require(_0xc841('0x0'));var moment=require(_0xc841('0x1'));var BPromise=require(_0xc841('0x2'));var rs=require(_0xc841('0x3'));var fs=require('fs');var Redis=require(_0xc841('0x4'));var db=require(_0xc841('0x5'))['db'];var utils=require(_0xc841('0x6'));var logger=require('../../config/logger')(_0xc841('0x7'));var config=require(_0xc841('0x8'));var jayson=require(_0xc841('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x550f5e,_0x46c2bc,_0xcfddad){return new BPromise(function(_0x363b42,_0x297e57){return client[_0xc841('0xa')](_0x550f5e,_0xcfddad)['then'](function(_0x4d3c52){logger['info'](_0xc841('0xb'),_0x46c2bc,_0xc841('0xc'));logger[_0xc841('0xd')](_0xc841('0xe'),_0x46c2bc,_0xc841('0xc'),JSON[_0xc841('0xf')](_0x4d3c52));if(_0x4d3c52[_0xc841('0x10')]){if(_0x4d3c52[_0xc841('0x10')]['code']===0x1f4){logger['error']('DeskField,\x20%s,\x20%s',_0x46c2bc,_0x4d3c52[_0xc841('0x10')][_0xc841('0x11')]);return _0x297e57(_0x4d3c52[_0xc841('0x10')]['message']);}logger[_0xc841('0x10')](_0xc841('0xb'),_0x46c2bc,_0x4d3c52[_0xc841('0x10')][_0xc841('0x11')]);return _0x363b42(_0x4d3c52[_0xc841('0x10')][_0xc841('0x11')]);}else{logger[_0xc841('0x12')](_0xc841('0xb'),_0x46c2bc,_0xc841('0xc'));_0x363b42(_0x4d3c52[_0xc841('0x13')]['message']);}})[_0xc841('0x14')](function(_0x5214aa){logger[_0xc841('0x10')](_0xc841('0xb'),_0x46c2bc,_0x5214aa);_0x297e57(_0x5214aa);});});}
\ No newline at end of file
+var _0xe905=['debug','error','code','message','request\x20sent','result','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','DeskField,\x20%s,\x20%s'];(function(_0x2c1913,_0x301cfd){var _0x40b00b=function(_0x578301){while(--_0x578301){_0x2c1913['push'](_0x2c1913['shift']());}};_0x40b00b(++_0x301cfd);}(_0xe905,0xd9));var _0x5e90=function(_0x573255,_0x296c8e){_0x573255=_0x573255-0x0;var _0x109576=_0xe905[_0x573255];return _0x109576;};'use strict';var _=require(_0x5e90('0x0'));var util=require(_0x5e90('0x1'));var moment=require('moment');var BPromise=require(_0x5e90('0x2'));var rs=require(_0x5e90('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5e90('0x4'))['db'];var utils=require(_0x5e90('0x5'));var logger=require(_0x5e90('0x6'))(_0x5e90('0x7'));var config=require(_0x5e90('0x8'));var jayson=require(_0x5e90('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x746439,_0xadc8bb,_0x5085ca){return new BPromise(function(_0x4b1322,_0x57d736){return client[_0x5e90('0xa')](_0x746439,_0x5085ca)[_0x5e90('0xb')](function(_0x4a275e){logger[_0x5e90('0xc')](_0x5e90('0xd'),_0xadc8bb,'request\x20sent');logger[_0x5e90('0xe')]('DeskField,\x20%s,\x20%s,\x20%s',_0xadc8bb,'request\x20sent',JSON['stringify'](_0x4a275e));if(_0x4a275e[_0x5e90('0xf')]){if(_0x4a275e['error'][_0x5e90('0x10')]===0x1f4){logger[_0x5e90('0xf')](_0x5e90('0xd'),_0xadc8bb,_0x4a275e[_0x5e90('0xf')]['message']);return _0x57d736(_0x4a275e[_0x5e90('0xf')]['message']);}logger[_0x5e90('0xf')](_0x5e90('0xd'),_0xadc8bb,_0x4a275e[_0x5e90('0xf')][_0x5e90('0x11')]);return _0x4b1322(_0x4a275e[_0x5e90('0xf')]['message']);}else{logger[_0x5e90('0xc')](_0x5e90('0xd'),_0xadc8bb,_0x5e90('0x12'));_0x4b1322(_0x4a275e[_0x5e90('0x13')][_0x5e90('0x11')]);}})[_0x5e90('0x14')](function(_0x2e2a3d){logger[_0x5e90('0xf')](_0x5e90('0xd'),_0xadc8bb,_0x2e2a3d);_0x57d736(_0x2e2a3d);});});}
\ No newline at end of file
index 767871c..0fa21b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08bb=['get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','post','addConfiguration','put','update','delete','destroy','exports','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./intDynamics365Account.controller'];(function(_0xd40e46,_0x36e28a){var _0x6cd17b=function(_0xfb1f35){while(--_0xfb1f35){_0xd40e46['push'](_0xd40e46['shift']());}};_0x6cd17b(++_0x36e28a);}(_0x08bb,0x7d));var _0xb08b=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0x08bb[_0x1e4360];return _0x31e6b4;};'use strict';var multer=require('multer');var util=require(_0xb08b('0x0'));var path=require('path');var timeout=require(_0xb08b('0x1'));var express=require(_0xb08b('0x2'));var router=express[_0xb08b('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xb08b('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xb08b('0x5'));var controller=require(_0xb08b('0x6'));router[_0xb08b('0x7')]('/',auth[_0xb08b('0x8')](),controller[_0xb08b('0x9')]);router[_0xb08b('0x7')](_0xb08b('0xa'),auth[_0xb08b('0x8')](),controller[_0xb08b('0xb')]);router[_0xb08b('0x7')](_0xb08b('0xc'),auth[_0xb08b('0x8')](),controller[_0xb08b('0xd')]);router['get'](_0xb08b('0xe'),auth[_0xb08b('0x8')](),controller['getFields']);router[_0xb08b('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0xb08b('0xf')](_0xb08b('0xc'),auth[_0xb08b('0x8')](),controller[_0xb08b('0x10')]);router[_0xb08b('0x11')](_0xb08b('0xa'),auth[_0xb08b('0x8')](),controller[_0xb08b('0x12')]);router[_0xb08b('0x13')](_0xb08b('0xa'),auth[_0xb08b('0x8')](),controller[_0xb08b('0x14')]);module[_0xb08b('0x15')]=router;
\ No newline at end of file
+var _0xa157=['getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','get','isAuthenticated','/:id','show','/:id/configurations'];(function(_0x51ffcf,_0x31a886){var _0x551511=function(_0x2d6232){while(--_0x2d6232){_0x51ffcf['push'](_0x51ffcf['shift']());}};_0x551511(++_0x31a886);}(_0xa157,0x119));var _0x7a15=function(_0x5529d1,_0x3b45e1){_0x5529d1=_0x5529d1-0x0;var _0x4d977a=_0xa157[_0x5529d1];return _0x4d977a;};'use strict';var multer=require(_0x7a15('0x0'));var util=require(_0x7a15('0x1'));var path=require(_0x7a15('0x2'));var timeout=require(_0x7a15('0x3'));var express=require(_0x7a15('0x4'));var router=express[_0x7a15('0x5')]();var fs_extra=require(_0x7a15('0x6'));var auth=require(_0x7a15('0x7'));var interaction=require(_0x7a15('0x8'));var config=require(_0x7a15('0x9'));var controller=require(_0x7a15('0xa'));router[_0x7a15('0xb')]('/',auth[_0x7a15('0xc')](),controller['index']);router['get'](_0x7a15('0xd'),auth[_0x7a15('0xc')](),controller[_0x7a15('0xe')]);router[_0x7a15('0xb')](_0x7a15('0xf'),auth['isAuthenticated'](),controller[_0x7a15('0x10')]);router[_0x7a15('0xb')](_0x7a15('0x11'),auth['isAuthenticated'](),controller[_0x7a15('0x12')]);router[_0x7a15('0x13')]('/',auth['isAuthenticated'](),controller[_0x7a15('0x14')]);router[_0x7a15('0x13')](_0x7a15('0xf'),auth[_0x7a15('0xc')](),controller[_0x7a15('0x15')]);router[_0x7a15('0x16')](_0x7a15('0xd'),auth[_0x7a15('0xc')](),controller[_0x7a15('0x17')]);router[_0x7a15('0x18')](_0x7a15('0xd'),auth[_0x7a15('0xc')](),controller[_0x7a15('0x19')]);module[_0x7a15('0x1a')]=router;
\ No newline at end of file
index 4abf4ab..80fb296 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10dc=['exports','STRING','BOOLEAN','sequelize'];(function(_0x1be983,_0x4cff28){var _0x22432f=function(_0x118577){while(--_0x118577){_0x1be983['push'](_0x1be983['shift']());}};_0x22432f(++_0x4cff28);}(_0x10dc,0x107));var _0xc10d=function(_0xf937d7,_0x59d955){_0xf937d7=_0xf937d7-0x0;var _0x39edc8=_0x10dc[_0xf937d7];return _0x39edc8;};'use strict';var Sequelize=require(_0xc10d('0x0'));module[_0xc10d('0x1')]={'name':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xc10d('0x2')]},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xc10d('0x2')]},'tenantId':{'type':Sequelize[_0xc10d('0x2')]},'clientId':{'type':Sequelize[_0xc10d('0x2')]},'clientSecret':{'type':Sequelize[_0xc10d('0x2')]},'serverUrl':{'type':Sequelize[_0xc10d('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xc10d('0x2')]},'modernAuthentication':{'type':Sequelize[_0xc10d('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x4989=['BOOLEAN','sequelize','STRING'];(function(_0x2cc711,_0x300328){var _0x31a52e=function(_0x588378){while(--_0x588378){_0x2cc711['push'](_0x2cc711['shift']());}};_0x31a52e(++_0x300328);}(_0x4989,0x79));var _0x9498=function(_0x430469,_0x20e783){_0x430469=_0x430469-0x0;var _0x1ca55e=_0x4989[_0x430469];return _0x1ca55e;};'use strict';var Sequelize=require(_0x9498('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x9498('0x1')]},'password':{'type':Sequelize[_0x9498('0x1')]},'remoteUri':{'type':Sequelize[_0x9498('0x1')]},'tenantId':{'type':Sequelize[_0x9498('0x1')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x9498('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'modernAuthentication':{'type':Sequelize[_0x9498('0x2')],'defaultValue':!![]}};
\ No newline at end of file
index 2ae6c0d..3c42120 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96dd=['then','destroy','end','sendStatus','stack','name','index','map','rawAttributes','type','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','Dynamics365Account','include','findAll','rows','catch','show','includeAll','find','create','params','getConfigurations','findOne','keys','Dynamics365Configuration','length','options','body','AccountId','Subjects','getSubjects','channel','getDescriptions','Dynamics365Field','Descriptions','slice','substring','lastIndexOf','format','%s/api/data/v9.0/','getFields','ticketType','incident','Incident','title','customerid','ownerid','caseorigincode','subject','phonenumber','regardingobjectid','directioncode','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','contactidname','contactidyominame','createdbyexternalpartyname','createdbyexternalpartyyominame','createdon','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url','escalatedon','exchangerate','firstresponsebykpiidname','followupby','importsequencenumber','influencescore','kbarticleidname','lastonholdtime','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedonbehalfbyyominame','msdyn_incidenttypename','numberofchildincidents','owneridname','owneridtype','parentcaseidname','primarycontactidname','primarycontactidyominame','prioritycodename','productserialnumber','resolveby','resolvebykpiidname','responseby','responsiblecontactidyominame','sentimentvalue','socialprofileidname','statecode','statuscode','subjectidname','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','versionnumber','username','tenantId','clientId','clientSecret','modernAuthentication','CloudProvider','data5','data7','POST','https://login.microsoftonline.com/','/oauth2/token','password','access_token','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','value','MetadataId','GET','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Bearer\x20','4.0','Attributes','remove','LogicalName','forEach','@odata.type','PicklistAttributeMetadata','push','all','isNil','BooleanAttributeMetadata','DoubleAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','test','statusCode','error','send','Wrong\x20credentials',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','Options','Label','Value','DisplayName','OptionSet','TrueOption','UserLocalizedLabel','true','FalseOption','false','?$select=DisplayName,LogicalName','util','lodash','../../components/parsers/qs','../../config/logger','api','../../mysqldb','offset','undefined','count','limit','status','set','Content-Range','json'];(function(_0x4c1982,_0x4e831e){var _0x1cdf0d=function(_0x524344){while(--_0x524344){_0x4c1982['push'](_0x4c1982['shift']());}};_0x1cdf0d(++_0x4e831e);}(_0x96dd,0x162));var _0xd96d=function(_0x246c92,_0x994de4){_0x246c92=_0x246c92-0x0;var _0x1b8447=_0x96dd[_0x246c92];return _0x1b8447;};'use strict';var rp=require('request-promise');var util=require(_0xd96d('0x0'));var _=require(_0xd96d('0x1'));var qs=require(_0xd96d('0x2'));var logger=require(_0xd96d('0x3'))(_0xd96d('0x4'));var db=require(_0xd96d('0x5'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithResult(_0x24cd53,_0x59b407){_0x59b407=_0x59b407||0xc8;return function(_0xf7bd87){if(_0xf7bd87){return _0x24cd53['status'](_0x59b407)['json'](_0xf7bd87);}};}function respondWithFilteredResult(_0x3192be,_0x82ee86){return function(_0x193100){if(_0x193100){var _0x6658=typeof _0x82ee86[_0xd96d('0x6')]===_0xd96d('0x7')&&typeof _0x82ee86['limit']===_0xd96d('0x7');var _0x5cbf78=_0x193100[_0xd96d('0x8')];var _0x28b80e=_0x6658?0x0:_0x82ee86[_0xd96d('0x6')];var _0x4557e8=_0x6658?_0x193100[_0xd96d('0x8')]:_0x82ee86[_0xd96d('0x6')]+_0x82ee86[_0xd96d('0x9')];var _0x31f001;if(_0x4557e8>=_0x5cbf78){_0x4557e8=_0x5cbf78;_0x31f001=0xc8;}else{_0x31f001=0xce;}_0x3192be[_0xd96d('0xa')](_0x31f001);return _0x3192be[_0xd96d('0xb')](_0xd96d('0xc'),_0x28b80e+'-'+_0x4557e8+'/'+_0x5cbf78)[_0xd96d('0xd')](_0x193100);}return null;};}function saveUpdates(_0x3e68e9){return function(_0x46de32){if(_0x46de32){return _0x46de32['update'](_0x3e68e9)[_0xd96d('0xe')](function(_0x4f9de){return _0x4f9de;});}return null;};}function removeEntity(_0x575be5){return function(_0x50bbc1){if(_0x50bbc1){return _0x50bbc1[_0xd96d('0xf')]()[_0xd96d('0xe')](function(){_0x575be5[_0xd96d('0xa')](0xcc)[_0xd96d('0x10')]();});}};}function handleEntityNotFound(_0x3e93d4){return function(_0x58ee36){if(!_0x58ee36){_0x3e93d4[_0xd96d('0x11')](0x194);}return _0x58ee36;};}function handleError(_0x1674c0,_0x21fd7a){_0x21fd7a=_0x21fd7a||0x1f4;return function(_0xb9cb3a){logger['error'](_0xb9cb3a[_0xd96d('0x12')]);if(_0xb9cb3a[_0xd96d('0x13')]){delete _0xb9cb3a[_0xd96d('0x13')];}_0x1674c0[_0xd96d('0xa')](_0x21fd7a)['send'](_0xb9cb3a);};}exports[_0xd96d('0x14')]=function(_0x4c8e36,_0x32fb24){var _0xea4257={},_0xe13aa2={},_0x557d07={'count':0x0,'rows':[]};var _0x3c4be1=_[_0xd96d('0x15')](db['Dynamics365Account'][_0xd96d('0x16')],function(_0x572be3){return{'name':_0x572be3['fieldName'],'type':_0x572be3[_0xd96d('0x17')]['key']};});_0xe13aa2[_0xd96d('0x18')]=_[_0xd96d('0x15')](_0x3c4be1,_0xd96d('0x13'));_0xe13aa2['query']=_['keys'](_0x4c8e36[_0xd96d('0x19')]);_0xe13aa2[_0xd96d('0x1a')]=_[_0xd96d('0x1b')](_0xe13aa2[_0xd96d('0x18')],_0xe13aa2[_0xd96d('0x19')]);_0xea4257[_0xd96d('0x1c')]=_[_0xd96d('0x1b')](_0xe13aa2[_0xd96d('0x18')],qs['fields'](_0x4c8e36[_0xd96d('0x19')][_0xd96d('0x1d')]));_0xea4257[_0xd96d('0x1c')]=_0xea4257[_0xd96d('0x1c')]['length']?_0xea4257['attributes']:_0xe13aa2[_0xd96d('0x18')];if(!_0x4c8e36['query'][_0xd96d('0x1e')](_0xd96d('0x1f'))){_0xea4257[_0xd96d('0x9')]=qs[_0xd96d('0x9')](_0x4c8e36[_0xd96d('0x19')][_0xd96d('0x9')]);_0xea4257['offset']=qs[_0xd96d('0x6')](_0x4c8e36[_0xd96d('0x19')][_0xd96d('0x6')]);}_0xea4257[_0xd96d('0x20')]=qs['sort'](_0x4c8e36[_0xd96d('0x19')][_0xd96d('0x21')]);_0xea4257[_0xd96d('0x22')]=qs[_0xd96d('0x1a')](_['pick'](_0x4c8e36[_0xd96d('0x19')],_0xe13aa2['filters']),_0x3c4be1);if(_0x4c8e36[_0xd96d('0x19')][_0xd96d('0x23')]){_0xea4257[_0xd96d('0x22')]=_[_0xd96d('0x24')](_0xea4257[_0xd96d('0x22')],{'$or':_[_0xd96d('0x15')](_0x3c4be1,function(_0x23318f){if(_0x23318f[_0xd96d('0x17')]!==_0xd96d('0x25')){var _0xbdd624={};_0xbdd624[_0x23318f[_0xd96d('0x13')]]={'$like':'%'+_0x4c8e36[_0xd96d('0x19')][_0xd96d('0x23')]+'%'};return _0xbdd624;}})});}_0xea4257=_[_0xd96d('0x24')]({},_0xea4257,_0x4c8e36['options']);var _0x15be33={'where':_0xea4257[_0xd96d('0x22')]};return db[_0xd96d('0x26')][_0xd96d('0x8')](_0x15be33)[_0xd96d('0xe')](function(_0x225588){_0x557d07[_0xd96d('0x8')]=_0x225588;if(_0x4c8e36[_0xd96d('0x19')]['includeAll']){_0xea4257[_0xd96d('0x27')]=[{'all':!![]}];}return db[_0xd96d('0x26')][_0xd96d('0x28')](_0xea4257);})[_0xd96d('0xe')](function(_0x5cf8a7){_0x557d07[_0xd96d('0x29')]=_0x5cf8a7;return _0x557d07;})['then'](respondWithFilteredResult(_0x32fb24,_0xea4257))[_0xd96d('0x2a')](handleError(_0x32fb24,null));};exports[_0xd96d('0x2b')]=function(_0x3e2ced,_0x4f7584){var _0x223784={'raw':![],'where':{'id':_0x3e2ced['params']['id']}},_0x401220={};_0x401220[_0xd96d('0x18')]=_['keys'](db['Dynamics365Account'][_0xd96d('0x16')]);_0x401220[_0xd96d('0x19')]=_['keys'](_0x3e2ced[_0xd96d('0x19')]);_0x401220[_0xd96d('0x1a')]=_[_0xd96d('0x1b')](_0x401220[_0xd96d('0x18')],_0x401220['query']);_0x223784['attributes']=_[_0xd96d('0x1b')](_0x401220['model'],qs[_0xd96d('0x1d')](_0x3e2ced[_0xd96d('0x19')]['fields']));_0x223784[_0xd96d('0x1c')]=_0x223784[_0xd96d('0x1c')]['length']?_0x223784['attributes']:_0x401220[_0xd96d('0x18')];if(_0x3e2ced[_0xd96d('0x19')][_0xd96d('0x2c')]){_0x223784[_0xd96d('0x27')]=[{'all':!![]}];}_0x223784=_[_0xd96d('0x24')]({},_0x223784,_0x3e2ced['options']);return db['Dynamics365Account'][_0xd96d('0x2d')](_0x223784)['then'](handleEntityNotFound(_0x4f7584,null))[_0xd96d('0xe')](respondWithResult(_0x4f7584,null))[_0xd96d('0x2a')](handleError(_0x4f7584,null));};exports[_0xd96d('0x2e')]=function(_0x5b74b3,_0x218457){return db['Dynamics365Account'][_0xd96d('0x2e')](_0x5b74b3['body'],{})[_0xd96d('0xe')](respondWithResult(_0x218457,0xc9))[_0xd96d('0x2a')](handleError(_0x218457,null));};exports['update']=function(_0x401980,_0x926849){if(_0x401980['body']['id']){delete _0x401980['body']['id'];}return db[_0xd96d('0x26')][_0xd96d('0x2d')]({'where':{'id':_0x401980[_0xd96d('0x2f')]['id']}})[_0xd96d('0xe')](handleEntityNotFound(_0x926849,null))[_0xd96d('0xe')](saveUpdates(_0x401980['body'],null))[_0xd96d('0xe')](respondWithResult(_0x926849,null))[_0xd96d('0x2a')](handleError(_0x926849,null));};exports[_0xd96d('0xf')]=function(_0x3c72a9,_0x214087){return db[_0xd96d('0x26')]['find']({'where':{'id':_0x3c72a9[_0xd96d('0x2f')]['id']}})['then'](handleEntityNotFound(_0x214087,null))[_0xd96d('0xe')](removeEntity(_0x214087,null))['catch'](handleError(_0x214087,null));};exports[_0xd96d('0x30')]=function(_0x554c22,_0x3a9165){var _0x441096={};var _0x5f349f={};var _0x3eeba4;var _0x264624;return db[_0xd96d('0x26')][_0xd96d('0x31')]({'where':{'id':_0x554c22[_0xd96d('0x2f')]['id']}})['then'](handleEntityNotFound(_0x3a9165,null))['then'](function(_0x3884b2){if(_0x3884b2){_0x3eeba4=_0x3884b2;_0x5f349f['model']=_[_0xd96d('0x32')](db[_0xd96d('0x33')][_0xd96d('0x16')]);_0x5f349f[_0xd96d('0x19')]=_[_0xd96d('0x32')](_0x554c22[_0xd96d('0x19')]);_0x5f349f[_0xd96d('0x1a')]=_['intersection'](_0x5f349f[_0xd96d('0x18')],_0x5f349f[_0xd96d('0x19')]);_0x441096['attributes']=_[_0xd96d('0x1b')](_0x5f349f['model'],qs[_0xd96d('0x1d')](_0x554c22[_0xd96d('0x19')][_0xd96d('0x1d')]));_0x441096[_0xd96d('0x1c')]=_0x441096['attributes'][_0xd96d('0x34')]?_0x441096[_0xd96d('0x1c')]:_0x5f349f[_0xd96d('0x18')];_0x441096[_0xd96d('0x20')]=qs['sort'](_0x554c22[_0xd96d('0x19')][_0xd96d('0x21')]);_0x441096[_0xd96d('0x22')]=qs[_0xd96d('0x1a')](_['pick'](_0x554c22[_0xd96d('0x19')],_0x5f349f[_0xd96d('0x1a')]));if(_0x554c22['query'][_0xd96d('0x23')]){_0x441096['where']=_['merge'](_0x441096['where'],{'$or':_[_0xd96d('0x15')](_0x441096[_0xd96d('0x1c')],function(_0x334c7f){var _0x3b2a2d={};_0x3b2a2d[_0x334c7f]={'$like':'%'+_0x554c22[_0xd96d('0x19')][_0xd96d('0x23')]+'%'};return _0x3b2a2d;})});}_0x441096=_[_0xd96d('0x24')]({},_0x441096,_0x554c22[_0xd96d('0x35')]);return _0x3eeba4[_0xd96d('0x30')](_0x441096);}})[_0xd96d('0xe')](function(_0x181bbb){if(_0x181bbb){_0x264624=_0x181bbb[_0xd96d('0x34')];if(!_0x554c22[_0xd96d('0x19')][_0xd96d('0x1e')]('nolimit')){_0x441096[_0xd96d('0x9')]=qs[_0xd96d('0x9')](_0x554c22[_0xd96d('0x19')][_0xd96d('0x9')]);_0x441096[_0xd96d('0x6')]=qs['offset'](_0x554c22[_0xd96d('0x19')]['offset']);}return _0x3eeba4['getConfigurations'](_0x441096);}})[_0xd96d('0xe')](function(_0x43495f){if(_0x43495f){return _0x43495f?{'count':_0x264624,'rows':_0x43495f}:null;}})['then'](respondWithResult(_0x3a9165,null))['catch'](handleError(_0x3a9165,null));};exports['addConfiguration']=function(_0x37c39e,_0x1b8188){if(_0x37c39e[_0xd96d('0x36')]['id']){delete _0x37c39e['body']['id'];}return db[_0xd96d('0x26')][_0xd96d('0x31')]({'where':{'id':_0x37c39e[_0xd96d('0x2f')]['id']}})[_0xd96d('0xe')](handleEntityNotFound(_0x1b8188,null))[_0xd96d('0xe')](function(_0x38a768){if(_0x38a768){_0x37c39e[_0xd96d('0x36')][_0xd96d('0x37')]=_0x38a768['id'];_0x37c39e[_0xd96d('0x36')][_0xd96d('0x38')]=integrations[_0xd96d('0x39')](_0x37c39e[_0xd96d('0x36')][_0xd96d('0x3a')],_0x37c39e[_0xd96d('0x36')][_0xd96d('0x17')]);_0x37c39e[_0xd96d('0x36')]['Descriptions']=integrations[_0xd96d('0x3b')](_0x37c39e[_0xd96d('0x36')][_0xd96d('0x3a')],_0x37c39e[_0xd96d('0x36')][_0xd96d('0x17')]);return db[_0xd96d('0x33')][_0xd96d('0x2e')](_0x37c39e[_0xd96d('0x36')],{'include':[{'model':db[_0xd96d('0x3c')],'as':'Subjects'},{'model':db[_0xd96d('0x3c')],'as':_0xd96d('0x3d')}]});}return null;})[_0xd96d('0xe')](respondWithResult(_0x1b8188,null))[_0xd96d('0x2a')](handleError(_0x1b8188,null));};function sanitizeRemoteUri(_0x506300){var _0x40fe6c=_0x506300[_0xd96d('0x3e')](-0x1);if(_0x40fe6c==='/')return _0x506300[_0xd96d('0x3f')](0x0,_0x506300[_0xd96d('0x40')](_0x40fe6c));return _0x506300;}function getWebApiUrl(_0x41d947){return util[_0xd96d('0x41')](_0xd96d('0x42'),_0x41d947);}exports[_0xd96d('0x43')]=function(_0x245e71,_0x4df0bc){var _0x5c220d=_0x245e71[_0xd96d('0x19')][_0xd96d('0x44')];var _0x30c9c4=_0x5c220d===_0xd96d('0x45')?_0xd96d('0x46'):'PhoneCall';var _0x18ce3a='';var _0x3bd9f1='';var _0x25b16c='';var _0x4e4f25='';var _0x2a6bab='';var _0x42180a='';var _0x44cda5='';var _0x2d220a='';var _0x69e329=[_0xd96d('0x47'),'description',_0xd96d('0x48'),_0xd96d('0x49'),_0xd96d('0x4a'),_0xd96d('0x4b'),_0xd96d('0x4c'),_0xd96d('0x4d'),_0xd96d('0x4e'),_0xd96d('0x4f')];var _0xfeb6d4=[_0xd96d('0x50'),_0xd96d('0x51'),_0xd96d('0x52'),'billedserviceunits',_0xd96d('0x53'),_0xd96d('0x54'),'contractdetailidname','contractidname',_0xd96d('0x55'),_0xd96d('0x56'),'createdbyname','createdbyyominame',_0xd96d('0x57'),'createdonbehalfbyname','createdonbehalfbyyominame','customeridname','customeridtype','customeridyominame',_0xd96d('0x58'),_0xd96d('0x59'),_0xd96d('0x5a'),_0xd96d('0x5b'),_0xd96d('0x5c'),_0xd96d('0x5d'),_0xd96d('0x5e'),_0xd96d('0x5f'),_0xd96d('0x60'),_0xd96d('0x61'),_0xd96d('0x62'),_0xd96d('0x63'),'masteridname',_0xd96d('0x64'),_0xd96d('0x65'),_0xd96d('0x66'),_0xd96d('0x67'),'modifiedon','modifiedonbehalfbyname',_0xd96d('0x68'),_0xd96d('0x69'),'msdyn_iotalertname',_0xd96d('0x6a'),'onholdtime','overriddencreatedon',_0xd96d('0x6b'),_0xd96d('0x6c'),'owneridyominame',_0xd96d('0x6d'),_0xd96d('0x6e'),_0xd96d('0x6f'),_0xd96d('0x70'),'productidname',_0xd96d('0x71'),_0xd96d('0x72'),_0xd96d('0x73'),_0xd96d('0x74'),'responsiblecontactidname',_0xd96d('0x75'),_0xd96d('0x76'),'slainvokedidname','slaname',_0xd96d('0x77'),_0xd96d('0x78'),_0xd96d('0x79'),_0xd96d('0x7a'),_0xd96d('0x7b'),_0xd96d('0x7c'),_0xd96d('0x7d'),_0xd96d('0x7e'),'utcconversiontimezonecode',_0xd96d('0x7f')];var _0x506a6b=_0x69e329['concat'](_0xfeb6d4);return db['Dynamics365Account']['findOne']({'where':{'id':_0x245e71[_0xd96d('0x2f')]['id']},'attributes':['id',_0xd96d('0x80'),'password','remoteUri',_0xd96d('0x81'),_0xd96d('0x82'),_0xd96d('0x83'),_0xd96d('0x84')],'include':[{'model':db[_0xd96d('0x85')],'as':_0xd96d('0x85'),'attributes':['id',_0xd96d('0x86'),_0xd96d('0x87')]}]})[_0xd96d('0xe')](handleEntityNotFound(_0x4df0bc,null))[_0xd96d('0xe')](function(_0x4ba967){if(_0x4ba967){if(_0x4ba967[_0xd96d('0x84')]){_0x4ba967['access_token']=_0x4ba967['CloudProvider'][_0xd96d('0x86')];_0x2d220a=sanitizeRemoteUri(_0x4ba967[_0xd96d('0x85')][_0xd96d('0x87')]);_0x44cda5=getWebApiUrl(_0x2d220a);return _0x4ba967;}_0x2d220a=sanitizeRemoteUri(_0x4ba967['remoteUri']);_0x44cda5=getWebApiUrl(_0x2d220a);var _0x59aaae={'method':_0xd96d('0x88'),'uri':_0xd96d('0x89')+_0x4ba967[_0xd96d('0x81')]+_0xd96d('0x8a'),'form':{'client_id':_0x4ba967['clientId'],'resource':_0x2d220a,'username':_0x4ba967[_0xd96d('0x80')],'password':_0x4ba967[_0xd96d('0x8b')],'grant_type':'password','client_secret':_0x4ba967['clientSecret']},'json':!![]};return rp(_0x59aaae);}})[_0xd96d('0xe')](function(_0xe88b18){_0x42180a=_0xe88b18[_0xd96d('0x8c')];var _0x2691ce={'method':'GET','uri':encodeURI(_0x44cda5+_0xd96d('0x8d')+_0x30c9c4+'\x27'),'headers':{'Authorization':'Bearer\x20'+_0x42180a,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x2691ce);})[_0xd96d('0xe')](function(_0x3ad182){var _0x3da615=_0x3ad182[_0xd96d('0x8e')][0x0];var _0x4463d5=_0x3da615[_0xd96d('0x8f')];var _0x474208={'method':_0xd96d('0x90'),'uri':_0x44cda5+_0xd96d('0x91')+_0x4463d5+_0xd96d('0x92'),'headers':{'Authorization':_0xd96d('0x93')+_0x42180a,'If-None-Match':null,'OData-Version':_0xd96d('0x94')},'json':!![]};return rp(_0x474208);})[_0xd96d('0xe')](function(_0xbc4ac8){_0x18ce3a=_0xbc4ac8;_0x3bd9f1=_0x18ce3a[_0xd96d('0x95')];_0x3bd9f1=_[_0xd96d('0x96')](_0x3bd9f1,function(_0x2f6ab7){return!_0x506a6b['includes'](_0x2f6ab7[_0xd96d('0x97')]);});var _0x15b69b=[];var _0x4b5795=[];_0x3bd9f1[_0xd96d('0x98')](function(_0x24383b){if(_0x24383b['@odata.type']){var _0x4401eb=_0x24383b[_0xd96d('0x99')][_0xd96d('0x3f')](_0x24383b[_0xd96d('0x99')][_0xd96d('0x40')]('.')+0x1);if(_0x4401eb===_0xd96d('0x9a')){_0x15b69b[_0xd96d('0x9b')](getSelectList(_0x44cda5,_0x5c220d,_0x4b5795,_0x18ce3a[_0xd96d('0x8f')],_0x24383b['MetadataId'],_0x42180a));}}});return Promise[_0xd96d('0x9c')](_0x15b69b);})[_0xd96d('0xe')](function(_0x2ff622){_0x25b16c=_0x2ff622[0x0];var _0x22db58=[];var _0x153878=[];_0x3bd9f1[_0xd96d('0x98')](function(_0x443941){if(!_[_0xd96d('0x9d')](_0x443941[_0xd96d('0x99')])){var _0xd8af9c=_0x443941[_0xd96d('0x99')][_0xd96d('0x3f')](_0x443941[_0xd96d('0x99')][_0xd96d('0x40')]('.')+0x1);if(_0xd8af9c===_0xd96d('0x9e')){_0x22db58[_0xd96d('0x9b')](getBooleanList(_0x44cda5,_0x5c220d,_0x153878,_0x18ce3a[_0xd96d('0x8f')],_0x443941['MetadataId'],_0x42180a));}}});return Promise[_0xd96d('0x9c')](_0x22db58);})[_0xd96d('0xe')](function(_0x45624b){_0x4e4f25=_0x45624b[0x0];var _0x15fe2d=[];var _0x3179b2=[];_0x3bd9f1[_0xd96d('0x98')](function(_0x429bf5){if(_0x429bf5[_0xd96d('0x99')]){var _0x28b621=_0x429bf5[_0xd96d('0x99')]['substring'](_0x429bf5[_0xd96d('0x99')]['lastIndexOf']('.')+0x1);if(_0x28b621==='StringAttributeMetadata'||_0x28b621===_0xd96d('0x9f')||_0x28b621==='BigIntAttributeMetadata'||_0x28b621===_0xd96d('0xa0')||_0x28b621===_0xd96d('0xa1')||_0x28b621===_0xd96d('0xa2')||_0x28b621===_0xd96d('0xa3')||_0x28b621===_0xd96d('0xa4')||_0x28b621===_0xd96d('0xa5')||_0x28b621==='DecimalAttributeMetadata'){_0x15fe2d[_0xd96d('0x9b')](getInputList(_0x44cda5,_0x5c220d,_0x28b621,_0x3179b2,_0x18ce3a[_0xd96d('0x8f')],_0x429bf5[_0xd96d('0x8f')],_0x42180a));}}});return Promise[_0xd96d('0x9c')](_0x15fe2d);})[_0xd96d('0xe')](function(_0x3fb6a6){_0x2a6bab=_0x3fb6a6[0x0];var _0x422d2b=_0x25b16c['concat'](_0x4e4f25)['concat'](_0x2a6bab);var _0x4195bd={'count':_0x422d2b['length'],'rows':_0x422d2b};return _0x4195bd;})[_0xd96d('0xe')](respondWithResult(_0x4df0bc,null))[_0xd96d('0x2a')](function(_0x2ac231){var _0x589ac4=_0x245e71['query'][_0xd96d('0xa6')]?0x1f4:_0x2ac231[_0xd96d('0xa7')]||0x1f4;logger[_0xd96d('0xa8')](_0x2ac231['stack']);delete _0x2ac231['name'];if(_0x589ac4===0x191){_0x589ac4=0x190;}_0x4df0bc[_0xd96d('0xa')](_0x589ac4)[_0xd96d('0xa9')](_0x245e71[_0xd96d('0x19')][_0xd96d('0xa6')]?{'message':_0xd96d('0xaa'),'statusCode':_0x2ac231[_0xd96d('0xa7')]}:_0x2ac231);});};function getSelectList(_0xe8e792,_0x4333bb,_0x48fb14,_0x3cb8d5,_0x481f46,_0x11675b){var _0x6f83d0={'method':_0xd96d('0x90'),'uri':_0xe8e792+_0xd96d('0x91')+_0x3cb8d5+_0xd96d('0xab')+_0x481f46+_0xd96d('0xac')+'$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','headers':{'Authorization':_0xd96d('0x93')+_0x11675b,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x6f83d0)[_0xd96d('0xe')](function(_0x10e074){var _0x3d0b12=[];var _0x225000=_0x10e074['OptionSet'][_0xd96d('0xad')];_0x225000[_0xd96d('0x98')](function(_0x6819e1){_0x3d0b12[_0xd96d('0x9b')]({'name':_0x6819e1[_0xd96d('0xae')]['UserLocalizedLabel'][_0xd96d('0xae')],'value':String(_0x6819e1[_0xd96d('0xaf')])});});var _0x4ba88e={'id':_0x4333bb+'_'+_0x10e074[_0xd96d('0x97')],'name':_0x10e074[_0xd96d('0xb0')]['UserLocalizedLabel'][_0xd96d('0xae')],'custom':![],'options':_0x3d0b12};_0x48fb14[_0xd96d('0x9b')](_0x4ba88e);return _0x48fb14;});}function getBooleanList(_0x313993,_0x54d49b,_0x3eb78b,_0x47040b,_0x50680f,_0x986fa1){var _0xaa3804={'method':_0xd96d('0x90'),'uri':_0x313993+_0xd96d('0x91')+_0x47040b+_0xd96d('0xab')+_0x50680f+')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','headers':{'Authorization':_0xd96d('0x93')+_0x986fa1,'If-None-Match':null,'OData-Version':_0xd96d('0x94')},'json':!![]};return rp(_0xaa3804)['then'](function(_0x213896){var _0x52e635=[];_0x52e635[_0xd96d('0x9b')]({'name':_0x213896[_0xd96d('0xb1')][_0xd96d('0xb2')][_0xd96d('0xae')][_0xd96d('0xb3')][_0xd96d('0xae')],'value':_0xd96d('0xb4')},{'name':_0x213896['OptionSet'][_0xd96d('0xb5')][_0xd96d('0xae')][_0xd96d('0xb3')][_0xd96d('0xae')],'value':_0xd96d('0xb6')});var _0x596542={'id':_0x54d49b+'_'+_0x213896['LogicalName'],'name':_0x213896[_0xd96d('0xb0')][_0xd96d('0xb3')][_0xd96d('0xae')],'custom':![],'options':_0x52e635};_0x3eb78b[_0xd96d('0x9b')](_0x596542);return _0x3eb78b;});}function getInputList(_0xbbc2a9,_0x17f77e,_0x4972ae,_0xb36bcf,_0x21204c,_0x25c26d,_0x2ec231){var _0x45e727={'method':'GET','uri':_0xbbc2a9+'EntityDefinitions('+_0x21204c+')/Attributes('+_0x25c26d+')/Microsoft.Dynamics.CRM.'+_0x4972ae+_0xd96d('0xb7'),'headers':{'Authorization':_0xd96d('0x93')+_0x2ec231,'If-None-Match':null,'OData-Version':_0xd96d('0x94')},'json':!![]};return rp(_0x45e727)['then'](function(_0x4286e8){var _0x58f80c={'id':_0x17f77e+'_'+_0x4286e8['LogicalName'],'name':_0x4286e8[_0xd96d('0xb0')]['UserLocalizedLabel']?_0x4286e8[_0xd96d('0xb0')]['UserLocalizedLabel'][_0xd96d('0xae')]:_0x4286e8[_0xd96d('0x97')],'custom':![],'options':[]};_0xb36bcf[_0xd96d('0x9b')](_0x58f80c);return _0xb36bcf;});}
\ No newline at end of file
+var _0xe3cf=['DisplayName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','TrueOption','true','FalseOption','false','EntityDefinitions(',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','request-promise','util','lodash','../../components/parsers/qs','api','../../components/integrations/configuration','json','offset','limit','count','status','update','then','destroy','end','sendStatus','error','stack','name','index','fieldName','map','query','model','attributes','intersection','fields','length','order','sort','where','filters','pick','merge','type','VIRTUAL','filter','options','includeAll','include','Dynamics365Account','findAll','catch','show','keys','rawAttributes','find','create','body','params','getConfigurations','findOne','hasOwnProperty','nolimit','addConfiguration','AccountId','getSubjects','channel','Descriptions','getDescriptions','Dynamics365Configuration','Dynamics365Field','Subjects','slice','substring','lastIndexOf','format','%s/api/data/v9.0/','getFields','ticketType','incident','Incident','customerid','caseorigincode','subject','phonenumber','regardingobjectid','directioncode','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','billedserviceunits','contactidname','contactidyominame','contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyname','createdonbehalfbyyominame','customeridname','customeridyominame','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url','exchangerate','firstresponsebykpiidname','followupby','importsequencenumber','influencescore','lastonholdtime','modifiedbyexternalpartyyominame','modifiedbyname','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','onholdtime','owneridyominame','parentcaseidname','primarycontactidname','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname','socialprofileidname','statecode','statuscode','subjectidname','timezoneruleversionnumber','transactioncurrencyidname','utcconversiontimezonecode','versionnumber','concat','username','clientId','clientSecret','modernAuthentication','CloudProvider','data5','data7','remoteUri','POST','https://login.microsoftonline.com/','tenantId','password','access_token','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','4.0','MetadataId','Attributes','remove','includes','LogicalName','forEach','@odata.type','PicklistAttributeMetadata','push','all','isNil','BooleanAttributeMetadata','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','statusCode','send','Wrong\x20credentials',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','Options','Label','UserLocalizedLabel','Value'];(function(_0x37b81d,_0x569b45){var _0x5b4366=function(_0x42ec8a){while(--_0x42ec8a){_0x37b81d['push'](_0x37b81d['shift']());}};_0x5b4366(++_0x569b45);}(_0xe3cf,0x187));var _0xfe3c=function(_0x2ac993,_0x545060){_0x2ac993=_0x2ac993-0x0;var _0x43665b=_0xe3cf[_0x2ac993];return _0x43665b;};'use strict';var rp=require(_0xfe3c('0x0'));var util=require(_0xfe3c('0x1'));var _=require(_0xfe3c('0x2'));var qs=require(_0xfe3c('0x3'));var logger=require('../../config/logger')(_0xfe3c('0x4'));var db=require('../../mysqldb')['db'];var integrations=require(_0xfe3c('0x5'));function respondWithResult(_0x24021b,_0x3feaa2){_0x3feaa2=_0x3feaa2||0xc8;return function(_0x378e76){if(_0x378e76){return _0x24021b['status'](_0x3feaa2)[_0xfe3c('0x6')](_0x378e76);}};}function respondWithFilteredResult(_0x1b808e,_0x5e8bf5){return function(_0xfb0c76){if(_0xfb0c76){var _0x264070=typeof _0x5e8bf5[_0xfe3c('0x7')]==='undefined'&&typeof _0x5e8bf5[_0xfe3c('0x8')]==='undefined';var _0x418976=_0xfb0c76[_0xfe3c('0x9')];var _0x54d64d=_0x264070?0x0:_0x5e8bf5[_0xfe3c('0x7')];var _0x164581=_0x264070?_0xfb0c76[_0xfe3c('0x9')]:_0x5e8bf5['offset']+_0x5e8bf5[_0xfe3c('0x8')];var _0x52199d;if(_0x164581>=_0x418976){_0x164581=_0x418976;_0x52199d=0xc8;}else{_0x52199d=0xce;}_0x1b808e[_0xfe3c('0xa')](_0x52199d);return _0x1b808e['set']('Content-Range',_0x54d64d+'-'+_0x164581+'/'+_0x418976)[_0xfe3c('0x6')](_0xfb0c76);}return null;};}function saveUpdates(_0x5c3733){return function(_0xe3518b){if(_0xe3518b){return _0xe3518b[_0xfe3c('0xb')](_0x5c3733)[_0xfe3c('0xc')](function(_0x115c13){return _0x115c13;});}return null;};}function removeEntity(_0x199630){return function(_0x3496ed){if(_0x3496ed){return _0x3496ed[_0xfe3c('0xd')]()[_0xfe3c('0xc')](function(){_0x199630['status'](0xcc)[_0xfe3c('0xe')]();});}};}function handleEntityNotFound(_0x10cf25){return function(_0x18ee79){if(!_0x18ee79){_0x10cf25[_0xfe3c('0xf')](0x194);}return _0x18ee79;};}function handleError(_0xd40eae,_0xc8dff1){_0xc8dff1=_0xc8dff1||0x1f4;return function(_0x4afcc5){logger[_0xfe3c('0x10')](_0x4afcc5[_0xfe3c('0x11')]);if(_0x4afcc5['name']){delete _0x4afcc5[_0xfe3c('0x12')];}_0xd40eae[_0xfe3c('0xa')](_0xc8dff1)['send'](_0x4afcc5);};}exports[_0xfe3c('0x13')]=function(_0x563e0d,_0x4b69ad){var _0x12dc1f={},_0x4b4acf={},_0x2a8eb0={'count':0x0,'rows':[]};var _0xd221a1=_['map'](db['Dynamics365Account']['rawAttributes'],function(_0x152f06){return{'name':_0x152f06[_0xfe3c('0x14')],'type':_0x152f06['type']['key']};});_0x4b4acf['model']=_[_0xfe3c('0x15')](_0xd221a1,'name');_0x4b4acf[_0xfe3c('0x16')]=_['keys'](_0x563e0d[_0xfe3c('0x16')]);_0x4b4acf['filters']=_['intersection'](_0x4b4acf[_0xfe3c('0x17')],_0x4b4acf[_0xfe3c('0x16')]);_0x12dc1f[_0xfe3c('0x18')]=_[_0xfe3c('0x19')](_0x4b4acf[_0xfe3c('0x17')],qs[_0xfe3c('0x1a')](_0x563e0d[_0xfe3c('0x16')]['fields']));_0x12dc1f[_0xfe3c('0x18')]=_0x12dc1f[_0xfe3c('0x18')][_0xfe3c('0x1b')]?_0x12dc1f[_0xfe3c('0x18')]:_0x4b4acf[_0xfe3c('0x17')];if(!_0x563e0d[_0xfe3c('0x16')]['hasOwnProperty']('nolimit')){_0x12dc1f['limit']=qs[_0xfe3c('0x8')](_0x563e0d[_0xfe3c('0x16')][_0xfe3c('0x8')]);_0x12dc1f['offset']=qs[_0xfe3c('0x7')](_0x563e0d[_0xfe3c('0x16')]['offset']);}_0x12dc1f[_0xfe3c('0x1c')]=qs[_0xfe3c('0x1d')](_0x563e0d[_0xfe3c('0x16')][_0xfe3c('0x1d')]);_0x12dc1f[_0xfe3c('0x1e')]=qs[_0xfe3c('0x1f')](_[_0xfe3c('0x20')](_0x563e0d[_0xfe3c('0x16')],_0x4b4acf[_0xfe3c('0x1f')]),_0xd221a1);if(_0x563e0d[_0xfe3c('0x16')]['filter']){_0x12dc1f[_0xfe3c('0x1e')]=_[_0xfe3c('0x21')](_0x12dc1f[_0xfe3c('0x1e')],{'$or':_[_0xfe3c('0x15')](_0xd221a1,function(_0x3dfd1f){if(_0x3dfd1f[_0xfe3c('0x22')]!==_0xfe3c('0x23')){var _0x1d802d={};_0x1d802d[_0x3dfd1f['name']]={'$like':'%'+_0x563e0d[_0xfe3c('0x16')][_0xfe3c('0x24')]+'%'};return _0x1d802d;}})});}_0x12dc1f=_[_0xfe3c('0x21')]({},_0x12dc1f,_0x563e0d[_0xfe3c('0x25')]);var _0x171551={'where':_0x12dc1f['where']};return db['Dynamics365Account'][_0xfe3c('0x9')](_0x171551)[_0xfe3c('0xc')](function(_0x1cbcd1){_0x2a8eb0[_0xfe3c('0x9')]=_0x1cbcd1;if(_0x563e0d[_0xfe3c('0x16')][_0xfe3c('0x26')]){_0x12dc1f[_0xfe3c('0x27')]=[{'all':!![]}];}return db[_0xfe3c('0x28')][_0xfe3c('0x29')](_0x12dc1f);})[_0xfe3c('0xc')](function(_0x146a0d){_0x2a8eb0['rows']=_0x146a0d;return _0x2a8eb0;})['then'](respondWithFilteredResult(_0x4b69ad,_0x12dc1f))[_0xfe3c('0x2a')](handleError(_0x4b69ad,null));};exports[_0xfe3c('0x2b')]=function(_0x40204d,_0x588c74){var _0x19fe19={'raw':![],'where':{'id':_0x40204d['params']['id']}},_0x314f2c={};_0x314f2c[_0xfe3c('0x17')]=_[_0xfe3c('0x2c')](db[_0xfe3c('0x28')][_0xfe3c('0x2d')]);_0x314f2c[_0xfe3c('0x16')]=_[_0xfe3c('0x2c')](_0x40204d[_0xfe3c('0x16')]);_0x314f2c[_0xfe3c('0x1f')]=_[_0xfe3c('0x19')](_0x314f2c[_0xfe3c('0x17')],_0x314f2c[_0xfe3c('0x16')]);_0x19fe19[_0xfe3c('0x18')]=_[_0xfe3c('0x19')](_0x314f2c['model'],qs['fields'](_0x40204d[_0xfe3c('0x16')][_0xfe3c('0x1a')]));_0x19fe19[_0xfe3c('0x18')]=_0x19fe19[_0xfe3c('0x18')]['length']?_0x19fe19[_0xfe3c('0x18')]:_0x314f2c['model'];if(_0x40204d['query']['includeAll']){_0x19fe19[_0xfe3c('0x27')]=[{'all':!![]}];}_0x19fe19=_[_0xfe3c('0x21')]({},_0x19fe19,_0x40204d[_0xfe3c('0x25')]);return db[_0xfe3c('0x28')][_0xfe3c('0x2e')](_0x19fe19)['then'](handleEntityNotFound(_0x588c74,null))[_0xfe3c('0xc')](respondWithResult(_0x588c74,null))[_0xfe3c('0x2a')](handleError(_0x588c74,null));};exports['create']=function(_0x4881c6,_0x31c94d){return db['Dynamics365Account'][_0xfe3c('0x2f')](_0x4881c6[_0xfe3c('0x30')],{})[_0xfe3c('0xc')](respondWithResult(_0x31c94d,0xc9))[_0xfe3c('0x2a')](handleError(_0x31c94d,null));};exports[_0xfe3c('0xb')]=function(_0x377b50,_0x85ef4b){if(_0x377b50[_0xfe3c('0x30')]['id']){delete _0x377b50['body']['id'];}return db[_0xfe3c('0x28')][_0xfe3c('0x2e')]({'where':{'id':_0x377b50['params']['id']}})[_0xfe3c('0xc')](handleEntityNotFound(_0x85ef4b,null))[_0xfe3c('0xc')](saveUpdates(_0x377b50[_0xfe3c('0x30')],null))['then'](respondWithResult(_0x85ef4b,null))['catch'](handleError(_0x85ef4b,null));};exports['destroy']=function(_0x4b47d1,_0x404e12){return db[_0xfe3c('0x28')][_0xfe3c('0x2e')]({'where':{'id':_0x4b47d1[_0xfe3c('0x31')]['id']}})[_0xfe3c('0xc')](handleEntityNotFound(_0x404e12,null))[_0xfe3c('0xc')](removeEntity(_0x404e12,null))[_0xfe3c('0x2a')](handleError(_0x404e12,null));};exports[_0xfe3c('0x32')]=function(_0x51a621,_0x480b4d){var _0x43d7ee={};var _0x33d4b1={};var _0x1b6e5e;var _0xfa4315;return db[_0xfe3c('0x28')][_0xfe3c('0x33')]({'where':{'id':_0x51a621[_0xfe3c('0x31')]['id']}})[_0xfe3c('0xc')](handleEntityNotFound(_0x480b4d,null))['then'](function(_0x307e96){if(_0x307e96){_0x1b6e5e=_0x307e96;_0x33d4b1['model']=_['keys'](db['Dynamics365Configuration'][_0xfe3c('0x2d')]);_0x33d4b1['query']=_[_0xfe3c('0x2c')](_0x51a621[_0xfe3c('0x16')]);_0x33d4b1[_0xfe3c('0x1f')]=_[_0xfe3c('0x19')](_0x33d4b1['model'],_0x33d4b1[_0xfe3c('0x16')]);_0x43d7ee[_0xfe3c('0x18')]=_[_0xfe3c('0x19')](_0x33d4b1['model'],qs[_0xfe3c('0x1a')](_0x51a621[_0xfe3c('0x16')]['fields']));_0x43d7ee['attributes']=_0x43d7ee[_0xfe3c('0x18')][_0xfe3c('0x1b')]?_0x43d7ee[_0xfe3c('0x18')]:_0x33d4b1['model'];_0x43d7ee[_0xfe3c('0x1c')]=qs[_0xfe3c('0x1d')](_0x51a621[_0xfe3c('0x16')][_0xfe3c('0x1d')]);_0x43d7ee[_0xfe3c('0x1e')]=qs[_0xfe3c('0x1f')](_[_0xfe3c('0x20')](_0x51a621[_0xfe3c('0x16')],_0x33d4b1['filters']));if(_0x51a621[_0xfe3c('0x16')][_0xfe3c('0x24')]){_0x43d7ee[_0xfe3c('0x1e')]=_[_0xfe3c('0x21')](_0x43d7ee['where'],{'$or':_['map'](_0x43d7ee[_0xfe3c('0x18')],function(_0x443cb0){var _0x91d8d={};_0x91d8d[_0x443cb0]={'$like':'%'+_0x51a621['query'][_0xfe3c('0x24')]+'%'};return _0x91d8d;})});}_0x43d7ee=_[_0xfe3c('0x21')]({},_0x43d7ee,_0x51a621[_0xfe3c('0x25')]);return _0x1b6e5e[_0xfe3c('0x32')](_0x43d7ee);}})[_0xfe3c('0xc')](function(_0x3a37c1){if(_0x3a37c1){_0xfa4315=_0x3a37c1['length'];if(!_0x51a621[_0xfe3c('0x16')][_0xfe3c('0x34')](_0xfe3c('0x35'))){_0x43d7ee[_0xfe3c('0x8')]=qs[_0xfe3c('0x8')](_0x51a621[_0xfe3c('0x16')]['limit']);_0x43d7ee[_0xfe3c('0x7')]=qs[_0xfe3c('0x7')](_0x51a621[_0xfe3c('0x16')][_0xfe3c('0x7')]);}return _0x1b6e5e[_0xfe3c('0x32')](_0x43d7ee);}})['then'](function(_0x49c389){if(_0x49c389){return _0x49c389?{'count':_0xfa4315,'rows':_0x49c389}:null;}})[_0xfe3c('0xc')](respondWithResult(_0x480b4d,null))['catch'](handleError(_0x480b4d,null));};exports[_0xfe3c('0x36')]=function(_0x5a592e,_0x12f274){if(_0x5a592e[_0xfe3c('0x30')]['id']){delete _0x5a592e[_0xfe3c('0x30')]['id'];}return db[_0xfe3c('0x28')][_0xfe3c('0x33')]({'where':{'id':_0x5a592e[_0xfe3c('0x31')]['id']}})[_0xfe3c('0xc')](handleEntityNotFound(_0x12f274,null))[_0xfe3c('0xc')](function(_0x38c75a){if(_0x38c75a){_0x5a592e['body'][_0xfe3c('0x37')]=_0x38c75a['id'];_0x5a592e[_0xfe3c('0x30')]['Subjects']=integrations[_0xfe3c('0x38')](_0x5a592e['body'][_0xfe3c('0x39')],_0x5a592e['body']['type']);_0x5a592e['body'][_0xfe3c('0x3a')]=integrations[_0xfe3c('0x3b')](_0x5a592e['body'][_0xfe3c('0x39')],_0x5a592e[_0xfe3c('0x30')][_0xfe3c('0x22')]);return db[_0xfe3c('0x3c')][_0xfe3c('0x2f')](_0x5a592e[_0xfe3c('0x30')],{'include':[{'model':db[_0xfe3c('0x3d')],'as':_0xfe3c('0x3e')},{'model':db['Dynamics365Field'],'as':_0xfe3c('0x3a')}]});}return null;})['then'](respondWithResult(_0x12f274,null))[_0xfe3c('0x2a')](handleError(_0x12f274,null));};function sanitizeRemoteUri(_0x41067a){var _0x42efa9=_0x41067a[_0xfe3c('0x3f')](-0x1);if(_0x42efa9==='/')return _0x41067a[_0xfe3c('0x40')](0x0,_0x41067a[_0xfe3c('0x41')](_0x42efa9));return _0x41067a;}function getWebApiUrl(_0x2ee82a){return util[_0xfe3c('0x42')](_0xfe3c('0x43'),_0x2ee82a);}exports[_0xfe3c('0x44')]=function(_0x59dd2d,_0x197864){var _0x3ed7f9=_0x59dd2d[_0xfe3c('0x16')][_0xfe3c('0x45')];var _0x52fae0=_0x3ed7f9===_0xfe3c('0x46')?_0xfe3c('0x47'):'PhoneCall';var _0x1cc24d='';var _0x89fad6='';var _0x32267d='';var _0x4398db='';var _0x4c12b6='';var _0x3a9e24='';var _0x410a7f='';var _0x1f03a6='';var _0x3c513a=['title','description',_0xfe3c('0x48'),'ownerid',_0xfe3c('0x49'),_0xfe3c('0x4a'),_0xfe3c('0x4b'),_0xfe3c('0x4c'),_0xfe3c('0x4d'),_0xfe3c('0x4e')];var _0x433e5d=[_0xfe3c('0x4f'),_0xfe3c('0x50'),_0xfe3c('0x51'),_0xfe3c('0x52'),_0xfe3c('0x53'),_0xfe3c('0x54'),'contractdetailidname',_0xfe3c('0x55'),_0xfe3c('0x56'),_0xfe3c('0x57'),_0xfe3c('0x58'),_0xfe3c('0x59'),_0xfe3c('0x5a'),_0xfe3c('0x5b'),_0xfe3c('0x5c'),_0xfe3c('0x5d'),'customeridtype',_0xfe3c('0x5e'),_0xfe3c('0x5f'),_0xfe3c('0x60'),_0xfe3c('0x61'),_0xfe3c('0x62'),'escalatedon',_0xfe3c('0x63'),_0xfe3c('0x64'),_0xfe3c('0x65'),_0xfe3c('0x66'),_0xfe3c('0x67'),'kbarticleidname',_0xfe3c('0x68'),'masteridname','modifiedbyexternalpartyname',_0xfe3c('0x69'),_0xfe3c('0x6a'),'modifiedbyyominame',_0xfe3c('0x6b'),_0xfe3c('0x6c'),_0xfe3c('0x6d'),_0xfe3c('0x6e'),_0xfe3c('0x6f'),'numberofchildincidents',_0xfe3c('0x70'),'overriddencreatedon','owneridname','owneridtype',_0xfe3c('0x71'),_0xfe3c('0x72'),_0xfe3c('0x73'),'primarycontactidyominame','prioritycodename','productidname','productserialnumber',_0xfe3c('0x74'),_0xfe3c('0x75'),_0xfe3c('0x76'),_0xfe3c('0x77'),_0xfe3c('0x78'),_0xfe3c('0x79'),_0xfe3c('0x7a'),'slaname',_0xfe3c('0x7b'),_0xfe3c('0x7c'),_0xfe3c('0x7d'),_0xfe3c('0x7e'),'ticketnumber',_0xfe3c('0x7f'),_0xfe3c('0x80'),'traversedpath',_0xfe3c('0x81'),_0xfe3c('0x82')];var _0x4ccfca=_0x3c513a[_0xfe3c('0x83')](_0x433e5d);return db['Dynamics365Account']['findOne']({'where':{'id':_0x59dd2d[_0xfe3c('0x31')]['id']},'attributes':['id',_0xfe3c('0x84'),'password','remoteUri','tenantId',_0xfe3c('0x85'),_0xfe3c('0x86'),_0xfe3c('0x87')],'include':[{'model':db[_0xfe3c('0x88')],'as':'CloudProvider','attributes':['id',_0xfe3c('0x89'),_0xfe3c('0x8a')]}]})['then'](handleEntityNotFound(_0x197864,null))['then'](function(_0x376121){if(_0x376121){if(_0x376121[_0xfe3c('0x87')]){_0x376121['access_token']=_0x376121['CloudProvider']['data5'];_0x1f03a6=sanitizeRemoteUri(_0x376121[_0xfe3c('0x88')]['data7']);_0x410a7f=getWebApiUrl(_0x1f03a6);return _0x376121;}_0x1f03a6=sanitizeRemoteUri(_0x376121[_0xfe3c('0x8b')]);_0x410a7f=getWebApiUrl(_0x1f03a6);var _0x316ad6={'method':_0xfe3c('0x8c'),'uri':_0xfe3c('0x8d')+_0x376121[_0xfe3c('0x8e')]+'/oauth2/token','form':{'client_id':_0x376121[_0xfe3c('0x85')],'resource':_0x1f03a6,'username':_0x376121['username'],'password':_0x376121[_0xfe3c('0x8f')],'grant_type':_0xfe3c('0x8f'),'client_secret':_0x376121['clientSecret']},'json':!![]};return rp(_0x316ad6);}})[_0xfe3c('0xc')](function(_0x46f963){_0x3a9e24=_0x46f963[_0xfe3c('0x90')];var _0x427df5={'method':_0xfe3c('0x91'),'uri':encodeURI(_0x410a7f+_0xfe3c('0x92')+_0x52fae0+'\x27'),'headers':{'Authorization':_0xfe3c('0x93')+_0x3a9e24,'If-None-Match':null,'OData-Version':_0xfe3c('0x94')},'json':!![]};return rp(_0x427df5);})[_0xfe3c('0xc')](function(_0x232803){var _0x2aa444=_0x232803['value'][0x0];var _0x5cad5c=_0x2aa444[_0xfe3c('0x95')];var _0x2b39cc={'method':'GET','uri':_0x410a7f+'EntityDefinitions('+_0x5cad5c+')?$select=LogicalName&$expand=Attributes($select=LogicalName)','headers':{'Authorization':_0xfe3c('0x93')+_0x3a9e24,'If-None-Match':null,'OData-Version':_0xfe3c('0x94')},'json':!![]};return rp(_0x2b39cc);})[_0xfe3c('0xc')](function(_0x45847d){_0x1cc24d=_0x45847d;_0x89fad6=_0x1cc24d[_0xfe3c('0x96')];_0x89fad6=_[_0xfe3c('0x97')](_0x89fad6,function(_0x39d169){return!_0x4ccfca[_0xfe3c('0x98')](_0x39d169[_0xfe3c('0x99')]);});var _0x44b1c8=[];var _0x1e75e8=[];_0x89fad6[_0xfe3c('0x9a')](function(_0x5f4f59){if(_0x5f4f59[_0xfe3c('0x9b')]){var _0x3492d1=_0x5f4f59['@odata.type'][_0xfe3c('0x40')](_0x5f4f59[_0xfe3c('0x9b')][_0xfe3c('0x41')]('.')+0x1);if(_0x3492d1===_0xfe3c('0x9c')){_0x44b1c8[_0xfe3c('0x9d')](getSelectList(_0x410a7f,_0x3ed7f9,_0x1e75e8,_0x1cc24d['MetadataId'],_0x5f4f59[_0xfe3c('0x95')],_0x3a9e24));}}});return Promise[_0xfe3c('0x9e')](_0x44b1c8);})[_0xfe3c('0xc')](function(_0x49bedc){_0x32267d=_0x49bedc[0x0];var _0x212c1c=[];var _0x39a287=[];_0x89fad6['forEach'](function(_0x439a39){if(!_[_0xfe3c('0x9f')](_0x439a39['@odata.type'])){var _0x2236d4=_0x439a39[_0xfe3c('0x9b')][_0xfe3c('0x40')](_0x439a39[_0xfe3c('0x9b')][_0xfe3c('0x41')]('.')+0x1);if(_0x2236d4===_0xfe3c('0xa0')){_0x212c1c[_0xfe3c('0x9d')](getBooleanList(_0x410a7f,_0x3ed7f9,_0x39a287,_0x1cc24d[_0xfe3c('0x95')],_0x439a39[_0xfe3c('0x95')],_0x3a9e24));}}});return Promise[_0xfe3c('0x9e')](_0x212c1c);})[_0xfe3c('0xc')](function(_0x5811c3){_0x4398db=_0x5811c3[0x0];var _0x20cd1d=[];var _0x42e62a=[];_0x89fad6[_0xfe3c('0x9a')](function(_0x24ff2b){if(_0x24ff2b['@odata.type']){var _0xb29d51=_0x24ff2b[_0xfe3c('0x9b')][_0xfe3c('0x40')](_0x24ff2b[_0xfe3c('0x9b')]['lastIndexOf']('.')+0x1);if(_0xb29d51===_0xfe3c('0xa1')||_0xb29d51===_0xfe3c('0xa2')||_0xb29d51===_0xfe3c('0xa3')||_0xb29d51===_0xfe3c('0xa4')||_0xb29d51===_0xfe3c('0xa5')||_0xb29d51===_0xfe3c('0xa6')||_0xb29d51===_0xfe3c('0xa7')||_0xb29d51===_0xfe3c('0xa8')||_0xb29d51===_0xfe3c('0xa9')||_0xb29d51===_0xfe3c('0xaa')){_0x20cd1d[_0xfe3c('0x9d')](getInputList(_0x410a7f,_0x3ed7f9,_0xb29d51,_0x42e62a,_0x1cc24d[_0xfe3c('0x95')],_0x24ff2b['MetadataId'],_0x3a9e24));}}});return Promise[_0xfe3c('0x9e')](_0x20cd1d);})[_0xfe3c('0xc')](function(_0x525cbe){_0x4c12b6=_0x525cbe[0x0];var _0x2ddfbc=_0x32267d['concat'](_0x4398db)['concat'](_0x4c12b6);var _0x22bf69={'count':_0x2ddfbc['length'],'rows':_0x2ddfbc};return _0x22bf69;})[_0xfe3c('0xc')](respondWithResult(_0x197864,null))[_0xfe3c('0x2a')](function(_0x455d5b){var _0x4fdc88=_0x59dd2d['query']['test']?0x1f4:_0x455d5b[_0xfe3c('0xab')]||0x1f4;logger['error'](_0x455d5b[_0xfe3c('0x11')]);delete _0x455d5b[_0xfe3c('0x12')];if(_0x4fdc88===0x191){_0x4fdc88=0x190;}_0x197864[_0xfe3c('0xa')](_0x4fdc88)[_0xfe3c('0xac')](_0x59dd2d['query']['test']?{'message':_0xfe3c('0xad'),'statusCode':_0x455d5b[_0xfe3c('0xab')]}:_0x455d5b);});};function getSelectList(_0x19f795,_0x12ea93,_0x4a4a12,_0x158027,_0x5201a3,_0x5afb14){var _0x181418={'method':_0xfe3c('0x91'),'uri':_0x19f795+'EntityDefinitions('+_0x158027+_0xfe3c('0xae')+_0x5201a3+_0xfe3c('0xaf')+_0xfe3c('0xb0'),'headers':{'Authorization':'Bearer\x20'+_0x5afb14,'If-None-Match':null,'OData-Version':_0xfe3c('0x94')},'json':!![]};return rp(_0x181418)[_0xfe3c('0xc')](function(_0x4660d9){var _0x55d00f=[];var _0x3ae24d=_0x4660d9[_0xfe3c('0xb1')][_0xfe3c('0xb2')];_0x3ae24d[_0xfe3c('0x9a')](function(_0x377367){_0x55d00f[_0xfe3c('0x9d')]({'name':_0x377367[_0xfe3c('0xb3')][_0xfe3c('0xb4')]['Label'],'value':String(_0x377367[_0xfe3c('0xb5')])});});var _0x3a8f91={'id':_0x12ea93+'_'+_0x4660d9[_0xfe3c('0x99')],'name':_0x4660d9[_0xfe3c('0xb6')][_0xfe3c('0xb4')][_0xfe3c('0xb3')],'custom':![],'options':_0x55d00f};_0x4a4a12[_0xfe3c('0x9d')](_0x3a8f91);return _0x4a4a12;});}function getBooleanList(_0x3401fc,_0x4d1cdd,_0x1a9b0f,_0x52b007,_0x286175,_0x578cc8){var _0x1833e0={'method':_0xfe3c('0x91'),'uri':_0x3401fc+'EntityDefinitions('+_0x52b007+_0xfe3c('0xae')+_0x286175+_0xfe3c('0xb7'),'headers':{'Authorization':_0xfe3c('0x93')+_0x578cc8,'If-None-Match':null,'OData-Version':_0xfe3c('0x94')},'json':!![]};return rp(_0x1833e0)['then'](function(_0xd48fcf){var _0x545132=[];_0x545132[_0xfe3c('0x9d')]({'name':_0xd48fcf[_0xfe3c('0xb1')][_0xfe3c('0xb8')][_0xfe3c('0xb3')][_0xfe3c('0xb4')][_0xfe3c('0xb3')],'value':_0xfe3c('0xb9')},{'name':_0xd48fcf[_0xfe3c('0xb1')][_0xfe3c('0xba')]['Label']['UserLocalizedLabel'][_0xfe3c('0xb3')],'value':_0xfe3c('0xbb')});var _0x387662={'id':_0x4d1cdd+'_'+_0xd48fcf[_0xfe3c('0x99')],'name':_0xd48fcf['DisplayName'][_0xfe3c('0xb4')][_0xfe3c('0xb3')],'custom':![],'options':_0x545132};_0x1a9b0f[_0xfe3c('0x9d')](_0x387662);return _0x1a9b0f;});}function getInputList(_0x4bd3f6,_0x1dc233,_0x5aab18,_0x2a48f7,_0x376892,_0x3e6817,_0x1118e7){var _0x220658={'method':'GET','uri':_0x4bd3f6+_0xfe3c('0xbc')+_0x376892+_0xfe3c('0xae')+_0x3e6817+_0xfe3c('0xbd')+_0x5aab18+_0xfe3c('0xbe'),'headers':{'Authorization':_0xfe3c('0x93')+_0x1118e7,'If-None-Match':null,'OData-Version':_0xfe3c('0x94')},'json':!![]};return rp(_0x220658)[_0xfe3c('0xc')](function(_0x2e6b0a){var _0x189fd6={'id':_0x1dc233+'_'+_0x2e6b0a['LogicalName'],'name':_0x2e6b0a[_0xfe3c('0xb6')][_0xfe3c('0xb4')]?_0x2e6b0a[_0xfe3c('0xb6')][_0xfe3c('0xb4')][_0xfe3c('0xb3')]:_0x2e6b0a[_0xfe3c('0x99')],'custom':![],'options':[]};_0x2a48f7[_0xfe3c('0x9d')](_0x189fd6);return _0x2a48f7;});}
\ No newline at end of file
index 0a66708..dc4097b 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(_0x121ee8,_0x5be814){var _0x444819=function(_0x49ae0c){while(--_0x49ae0c){_0x121ee8['push'](_0x121ee8['shift']());}};_0x444819(++_0x5be814);}(_0xb7e7,0x121));var _0x7b7e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xb7e7[_0x9aada2];return _0x196dff;};'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 _0xb7e7=['int_dynamics365_accounts','lodash','../../config/logger','moment','request-promise','rimraf','../../config/environment','./intDynamics365Account.attributes','define'];(function(_0x2d194f,_0x5dbe19){var _0x1e673c=function(_0x3aef10){while(--_0x3aef10){_0x2d194f['push'](_0x2d194f['shift']());}};_0x1e673c(++_0x5dbe19);}(_0xb7e7,0x121));var _0x7b7e=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0xb7e7[_0x2a6809];return _0x11c371;};'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
index 46a78e8..bb43711 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04a6=['include','map','stringify','catch','ShowDynamics365Account','find','lodash','util','moment','bluebird','randomstring','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','code','error','Dynamics365Account,\x20%s,\x20%s','message','GetDynamics365Account','Dynamics365Account','findAll','options','raw','where','model','attributes'];(function(_0x3d9fc9,_0x51467e){var _0x317e72=function(_0x2f3638){while(--_0x2f3638){_0x3d9fc9['push'](_0x3d9fc9['shift']());}};_0x317e72(++_0x51467e);}(_0x04a6,0x15a));var _0x604a=function(_0x157bfa,_0x28760e){_0x157bfa=_0x157bfa-0x0;var _0x22643c=_0x04a6[_0x157bfa];return _0x22643c;};'use strict';var _=require(_0x604a('0x0'));var util=require(_0x604a('0x1'));var moment=require(_0x604a('0x2'));var BPromise=require(_0x604a('0x3'));var rs=require(_0x604a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x604a('0x5'))(_0x604a('0x6'));var config=require(_0x604a('0x7'));var jayson=require(_0x604a('0x8'));var client=jayson['client'][_0x604a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x97c389,_0x4b7733,_0x1fb1d1){return new BPromise(function(_0x521bda,_0x427ce1){return client[_0x604a('0xa')](_0x97c389,_0x1fb1d1)[_0x604a('0xb')](function(_0x23f03f){logger[_0x604a('0xc')]('Dynamics365Account,\x20%s,\x20%s',_0x4b7733,_0x604a('0xd'));logger[_0x604a('0xe')](_0x604a('0xf'),_0x4b7733,_0x604a('0xd'),JSON['stringify'](_0x23f03f));if(_0x23f03f['error']){if(_0x23f03f['error'][_0x604a('0x10')]===0x1f4){logger[_0x604a('0x11')](_0x604a('0x12'),_0x4b7733,_0x23f03f[_0x604a('0x11')][_0x604a('0x13')]);return _0x427ce1(_0x23f03f[_0x604a('0x11')][_0x604a('0x13')]);}logger[_0x604a('0x11')](_0x604a('0x12'),_0x4b7733,_0x23f03f[_0x604a('0x11')][_0x604a('0x13')]);return _0x521bda(_0x23f03f['error'][_0x604a('0x13')]);}else{logger[_0x604a('0xc')](_0x604a('0x12'),_0x4b7733,_0x604a('0xd'));_0x521bda(_0x23f03f['result'][_0x604a('0x13')]);}})['catch'](function(_0x3a8ee3){logger[_0x604a('0x11')](_0x604a('0x12'),_0x4b7733,_0x3a8ee3);_0x427ce1(_0x3a8ee3);});});}exports[_0x604a('0x14')]=function(_0x4d3a4f){var _0x29e4eb=this;return new Promise(function(_0x574562,_0x3c7d79){return db[_0x604a('0x15')][_0x604a('0x16')]({'raw':_0x4d3a4f[_0x604a('0x17')]?_0x4d3a4f[_0x604a('0x17')][_0x604a('0x18')]===undefined?!![]:![]:!![],'where':_0x4d3a4f[_0x604a('0x17')]?_0x4d3a4f[_0x604a('0x17')][_0x604a('0x19')]||null:null,'attributes':_0x4d3a4f[_0x604a('0x17')]?_0x4d3a4f[_0x604a('0x17')]['attributes']||null:null,'limit':_0x4d3a4f[_0x604a('0x17')]?_0x4d3a4f[_0x604a('0x17')]['limit']||null:null,'include':_0x4d3a4f[_0x604a('0x17')]?_0x4d3a4f[_0x604a('0x17')]['include']?_['map'](_0x4d3a4f[_0x604a('0x17')]['include'],function(_0x52b713){return{'model':db[_0x52b713[_0x604a('0x1a')]],'as':_0x52b713['as'],'attributes':_0x52b713[_0x604a('0x1b')],'include':_0x52b713[_0x604a('0x1c')]?_[_0x604a('0x1d')](_0x52b713['include'],function(_0x310c6f){return{'model':db[_0x310c6f[_0x604a('0x1a')]],'as':_0x310c6f['as'],'attributes':_0x310c6f[_0x604a('0x1b')],'include':_0x310c6f[_0x604a('0x1c')]?_[_0x604a('0x1d')](_0x310c6f[_0x604a('0x1c')],function(_0x5d8474){return{'model':db[_0x5d8474[_0x604a('0x1a')]],'as':_0x5d8474['as'],'attributes':_0x5d8474[_0x604a('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x604a('0xb')](function(_0x57e406){logger[_0x604a('0xc')](_0x604a('0x14'),_0x4d3a4f);logger['debug']('GetDynamics365Account',_0x4d3a4f,JSON[_0x604a('0x1e')](_0x57e406));_0x574562(_0x57e406);})[_0x604a('0x1f')](function(_0x3f5780){logger[_0x604a('0x11')](_0x604a('0x14'),_0x3f5780['message'],_0x4d3a4f);_0x3c7d79(_0x29e4eb['error'](0x1f4,_0x3f5780[_0x604a('0x13')]));});});};exports[_0x604a('0x20')]=function(_0x4952aa){var _0x5a5ce7=this;return new Promise(function(_0x354d4a,_0x4b6d48){return db[_0x604a('0x15')][_0x604a('0x21')]({'raw':_0x4952aa[_0x604a('0x17')]?_0x4952aa[_0x604a('0x17')][_0x604a('0x18')]===undefined?!![]:![]:!![],'where':_0x4952aa[_0x604a('0x17')]?_0x4952aa[_0x604a('0x17')]['where']||null:null,'attributes':_0x4952aa[_0x604a('0x17')]?_0x4952aa['options']['attributes']||null:null,'include':_0x4952aa[_0x604a('0x17')]?_0x4952aa[_0x604a('0x17')]['include']?_[_0x604a('0x1d')](_0x4952aa[_0x604a('0x17')][_0x604a('0x1c')],function(_0x2549a8){return{'model':db[_0x2549a8[_0x604a('0x1a')]],'as':_0x2549a8['as'],'attributes':_0x2549a8[_0x604a('0x1b')],'include':_0x2549a8[_0x604a('0x1c')]?_['map'](_0x2549a8[_0x604a('0x1c')],function(_0x504d42){return{'model':db[_0x504d42[_0x604a('0x1a')]],'as':_0x504d42['as'],'attributes':_0x504d42[_0x604a('0x1b')],'include':_0x504d42[_0x604a('0x1c')]?_['map'](_0x504d42['include'],function(_0x2516c8){return{'model':db[_0x2516c8[_0x604a('0x1a')]],'as':_0x2516c8['as'],'attributes':_0x2516c8['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x991b0a){logger[_0x604a('0xc')](_0x604a('0x20'),_0x4952aa);logger[_0x604a('0xe')](_0x604a('0x20'),_0x4952aa,JSON[_0x604a('0x1e')](_0x991b0a));_0x354d4a(_0x991b0a);})[_0x604a('0x1f')](function(_0x2c1ede){logger[_0x604a('0x11')](_0x604a('0x20'),_0x2c1ede[_0x604a('0x13')],_0x4952aa);_0x4b6d48(_0x5a5ce7[_0x604a('0x11')](0x1f4,_0x2c1ede[_0x604a('0x13')]));});});};
\ No newline at end of file
+var _0x1ac8=['then','info','Dynamics365Account,\x20%s,\x20%s','request\x20sent','stringify','error','message','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','../../config/environment','jayson/promise','http'];(function(_0x18bde,_0x2c4d46){var _0x5f42d7=function(_0x3b8239){while(--_0x3b8239){_0x18bde['push'](_0x18bde['shift']());}};_0x5f42d7(++_0x2c4d46);}(_0x1ac8,0x13e));var _0x81ac=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x1ac8[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x81ac('0x0'));var util=require(_0x81ac('0x1'));var moment=require('moment');var BPromise=require(_0x81ac('0x2'));var rs=require(_0x81ac('0x3'));var fs=require('fs');var Redis=require(_0x81ac('0x4'));var db=require(_0x81ac('0x5'))['db'];var utils=require(_0x81ac('0x6'));var logger=require(_0x81ac('0x7'))(_0x81ac('0x8'));var config=require(_0x81ac('0x9'));var jayson=require(_0x81ac('0xa'));var client=jayson['client'][_0x81ac('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x55f43,_0xe4b06,_0x1429e5){return new BPromise(function(_0x3221b8,_0x49eec0){return client['request'](_0x55f43,_0x1429e5)[_0x81ac('0xc')](function(_0xab9820){logger[_0x81ac('0xd')](_0x81ac('0xe'),_0xe4b06,_0x81ac('0xf'));logger['debug']('Dynamics365Account,\x20%s,\x20%s,\x20%s',_0xe4b06,'request\x20sent',JSON[_0x81ac('0x10')](_0xab9820));if(_0xab9820[_0x81ac('0x11')]){if(_0xab9820[_0x81ac('0x11')]['code']===0x1f4){logger['error'](_0x81ac('0xe'),_0xe4b06,_0xab9820[_0x81ac('0x11')]['message']);return _0x49eec0(_0xab9820[_0x81ac('0x11')][_0x81ac('0x12')]);}logger['error'](_0x81ac('0xe'),_0xe4b06,_0xab9820[_0x81ac('0x11')][_0x81ac('0x12')]);return _0x3221b8(_0xab9820[_0x81ac('0x11')][_0x81ac('0x12')]);}else{logger[_0x81ac('0xd')](_0x81ac('0xe'),_0xe4b06,'request\x20sent');_0x3221b8(_0xab9820['result'][_0x81ac('0x12')]);}})[_0x81ac('0x13')](function(_0x32d983){logger[_0x81ac('0x11')](_0x81ac('0xe'),_0xe4b06,_0x32d983);_0x49eec0(_0x32d983);});});}exports[_0x81ac('0x14')]=function(_0x27e9b3){var _0x21429f=this;return new Promise(function(_0x178ad1,_0x32c363){return db[_0x81ac('0x15')][_0x81ac('0x16')]({'raw':_0x27e9b3[_0x81ac('0x17')]?_0x27e9b3['options'][_0x81ac('0x18')]===undefined?!![]:![]:!![],'where':_0x27e9b3[_0x81ac('0x17')]?_0x27e9b3[_0x81ac('0x17')][_0x81ac('0x19')]||null:null,'attributes':_0x27e9b3[_0x81ac('0x17')]?_0x27e9b3[_0x81ac('0x17')][_0x81ac('0x1a')]||null:null,'limit':_0x27e9b3[_0x81ac('0x17')]?_0x27e9b3[_0x81ac('0x17')][_0x81ac('0x1b')]||null:null,'include':_0x27e9b3[_0x81ac('0x17')]?_0x27e9b3[_0x81ac('0x17')][_0x81ac('0x1c')]?_[_0x81ac('0x1d')](_0x27e9b3[_0x81ac('0x17')]['include'],function(_0x414d4f){return{'model':db[_0x414d4f[_0x81ac('0x1e')]],'as':_0x414d4f['as'],'attributes':_0x414d4f[_0x81ac('0x1a')],'include':_0x414d4f['include']?_['map'](_0x414d4f[_0x81ac('0x1c')],function(_0x2dc9e1){return{'model':db[_0x2dc9e1[_0x81ac('0x1e')]],'as':_0x2dc9e1['as'],'attributes':_0x2dc9e1[_0x81ac('0x1a')],'include':_0x2dc9e1[_0x81ac('0x1c')]?_[_0x81ac('0x1d')](_0x2dc9e1[_0x81ac('0x1c')],function(_0x2bfaae){return{'model':db[_0x2bfaae['model']],'as':_0x2bfaae['as'],'attributes':_0x2bfaae[_0x81ac('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x81ac('0xc')](function(_0x120e61){logger['info'](_0x81ac('0x14'),_0x27e9b3);logger['debug'](_0x81ac('0x14'),_0x27e9b3,JSON[_0x81ac('0x10')](_0x120e61));_0x178ad1(_0x120e61);})[_0x81ac('0x13')](function(_0x108b52){logger[_0x81ac('0x11')](_0x81ac('0x14'),_0x108b52[_0x81ac('0x12')],_0x27e9b3);_0x32c363(_0x21429f[_0x81ac('0x11')](0x1f4,_0x108b52[_0x81ac('0x12')]));});});};exports[_0x81ac('0x1f')]=function(_0xc258e5){var _0x41bdaf=this;return new Promise(function(_0x254fa5,_0x4caaef){return db['Dynamics365Account'][_0x81ac('0x20')]({'raw':_0xc258e5[_0x81ac('0x17')]?_0xc258e5[_0x81ac('0x17')][_0x81ac('0x18')]===undefined?!![]:![]:!![],'where':_0xc258e5[_0x81ac('0x17')]?_0xc258e5[_0x81ac('0x17')]['where']||null:null,'attributes':_0xc258e5[_0x81ac('0x17')]?_0xc258e5[_0x81ac('0x17')][_0x81ac('0x1a')]||null:null,'include':_0xc258e5['options']?_0xc258e5[_0x81ac('0x17')][_0x81ac('0x1c')]?_[_0x81ac('0x1d')](_0xc258e5[_0x81ac('0x17')][_0x81ac('0x1c')],function(_0x1618c8){return{'model':db[_0x1618c8[_0x81ac('0x1e')]],'as':_0x1618c8['as'],'attributes':_0x1618c8['attributes'],'include':_0x1618c8[_0x81ac('0x1c')]?_['map'](_0x1618c8[_0x81ac('0x1c')],function(_0x1befc7){return{'model':db[_0x1befc7[_0x81ac('0x1e')]],'as':_0x1befc7['as'],'attributes':_0x1befc7[_0x81ac('0x1a')],'include':_0x1befc7[_0x81ac('0x1c')]?_[_0x81ac('0x1d')](_0x1befc7[_0x81ac('0x1c')],function(_0x1f8f69){return{'model':db[_0x1f8f69[_0x81ac('0x1e')]],'as':_0x1f8f69['as'],'attributes':_0x1f8f69['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x18c13b){logger['info'](_0x81ac('0x1f'),_0xc258e5);logger['debug'](_0x81ac('0x1f'),_0xc258e5,JSON[_0x81ac('0x10')](_0x18c13b));_0x254fa5(_0x18c13b);})['catch'](function(_0x36f1be){logger[_0x81ac('0x11')](_0x81ac('0x1f'),_0x36f1be[_0x81ac('0x12')],_0xc258e5);_0x4caaef(_0x41bdaf[_0x81ac('0x11')](0x1f4,_0x36f1be['message']));});});};
\ No newline at end of file
index 808ff1e..74915c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea28=['index','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intDynamics365Configuration.controller','get'];(function(_0x5d8035,_0x36d383){var _0x310264=function(_0x599d30){while(--_0x599d30){_0x5d8035['push'](_0x5d8035['shift']());}};_0x310264(++_0x36d383);}(_0xea28,0x13a));var _0x8ea2=function(_0x1e3ab4,_0x17b137){_0x1e3ab4=_0x1e3ab4-0x0;var _0x4b62cd=_0xea28[_0x1e3ab4];return _0x4b62cd;};'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('0xa')](_0x8ea2('0xf'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x10')]);router[_0x8ea2('0xa')](_0x8ea2('0x11'),auth[_0x8ea2('0xd')](),controller['getSubjects']);router['get'](_0x8ea2('0x12'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x13')]);router['post']('/',auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x14')]);router[_0x8ea2('0x15')](_0x8ea2('0xc'),auth[_0x8ea2('0xd')](),controller['update']);router[_0x8ea2('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x8ea2('0x17')]);module[_0x8ea2('0x18')]=router;
\ No newline at end of file
+var _0xb429=['../../config/environment','./intDynamics365Configuration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','post','create','put','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x4cd96e,_0x220bba){var _0x37c2da=function(_0xbe1e0e){while(--_0xbe1e0e){_0x4cd96e['push'](_0x4cd96e['shift']());}};_0x37c2da(++_0x220bba);}(_0xb429,0x13e));var _0x9b42=function(_0x4e1d03,_0x786f3a){_0x4e1d03=_0x4e1d03-0x0;var _0x362d4b=_0xb429[_0x4e1d03];return _0x362d4b;};'use strict';var multer=require('multer');var util=require(_0x9b42('0x0'));var path=require('path');var timeout=require(_0x9b42('0x1'));var express=require(_0x9b42('0x2'));var router=express[_0x9b42('0x3')]();var fs_extra=require(_0x9b42('0x4'));var auth=require(_0x9b42('0x5'));var interaction=require(_0x9b42('0x6'));var config=require(_0x9b42('0x7'));var controller=require(_0x9b42('0x8'));router[_0x9b42('0x9')]('/',auth[_0x9b42('0xa')](),controller[_0x9b42('0xb')]);router[_0x9b42('0x9')](_0x9b42('0xc'),auth[_0x9b42('0xa')](),controller[_0x9b42('0xd')]);router[_0x9b42('0x9')](_0x9b42('0xe'),auth[_0x9b42('0xa')](),controller[_0x9b42('0xf')]);router[_0x9b42('0x9')](_0x9b42('0x10'),auth[_0x9b42('0xa')](),controller[_0x9b42('0x11')]);router['get'](_0x9b42('0x12'),auth[_0x9b42('0xa')](),controller['getDescriptions']);router[_0x9b42('0x13')]('/',auth[_0x9b42('0xa')](),controller[_0x9b42('0x14')]);router[_0x9b42('0x15')](_0x9b42('0xc'),auth[_0x9b42('0xa')](),controller['update']);router[_0x9b42('0x16')](_0x9b42('0xc'),auth[_0x9b42('0xa')](),controller[_0x9b42('0x17')]);module[_0x9b42('0x18')]=router;
\ No newline at end of file
index 16d4dfa..cd4114c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb7e=['incident','nothing','BOOLEAN','sequelize','exports','STRING','ENUM'];(function(_0x184f76,_0x11ec05){var _0x1a8dad=function(_0xf9b9c){while(--_0xf9b9c){_0x184f76['push'](_0x184f76['shift']());}};_0x1a8dad(++_0x11ec05);}(_0xbb7e,0x1c3));var _0xebb7=function(_0x279c36,_0x393144){_0x279c36=_0x279c36-0x0;var _0x1fc096=_0xbb7e[_0x279c36];return _0x1fc096;};'use strict';var Sequelize=require(_0xebb7('0x0'));module[_0xebb7('0x1')]={'name':{'type':Sequelize[_0xebb7('0x2')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0xebb7('0x3')](_0xebb7('0x4'),'phonecall'),'defaultValue':_0xebb7('0x4')},'moduleCreate':{'type':Sequelize[_0xebb7('0x3')]('contact',_0xebb7('0x5')),'defaultValue':'contact','allowNull':![]},'additionalSearchContact':{'type':Sequelize['STRING'],'allowNull':!![]},'openNewTab':{'type':Sequelize[_0xebb7('0x6')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x34b1=['sequelize','exports','STRING','ENUM','incident','contact'];(function(_0x21f9c2,_0x2b3d2a){var _0x3da17f=function(_0x57e2b9){while(--_0x57e2b9){_0x21f9c2['push'](_0x21f9c2['shift']());}};_0x3da17f(++_0x2b3d2a);}(_0x34b1,0x186));var _0x134b=function(_0x3ba69c,_0x3e370c){_0x3ba69c=_0x3ba69c-0x0;var _0x1c722b=_0x34b1[_0x3ba69c];return _0x1c722b;};'use strict';var Sequelize=require(_0x134b('0x0'));module[_0x134b('0x1')]={'name':{'type':Sequelize[_0x134b('0x2')]},'description':{'type':Sequelize[_0x134b('0x2')]},'ticketType':{'type':Sequelize[_0x134b('0x3')]('incident','phonecall'),'defaultValue':_0x134b('0x4')},'moduleCreate':{'type':Sequelize[_0x134b('0x3')](_0x134b('0x5'),'nothing'),'defaultValue':_0x134b('0x5'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize[_0x134b('0x2')],'allowNull':!![]}};
\ No newline at end of file
index bc3763d..fd174c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6df9=['query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','merge','where','VIRTUAL','filter','includeAll','include','rows','catch','show','params','keys','options','find','create','update','body','destroy','getFields','findOne','Dynamics365Field','getSubjects','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','then','end','error','stack','name','send','index','map','Dynamics365Configuration','rawAttributes','type'];(function(_0x152121,_0x120c53){var _0x592a85=function(_0x241cab){while(--_0x241cab){_0x152121['push'](_0x152121['shift']());}};_0x592a85(++_0x120c53);}(_0x6df9,0x118));var _0x96df=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x6df9[_0x397e5f];return _0x5302b8;};'use strict';var emlformat=require(_0x96df('0x0'));var rimraf=require(_0x96df('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x96df('0x2'));var rp=require(_0x96df('0x3'));var moment=require(_0x96df('0x4'));var BPromise=require(_0x96df('0x5'));var Mustache=require(_0x96df('0x6'));var util=require(_0x96df('0x7'));var path=require('path');var sox=require(_0x96df('0x8'));var csv=require(_0x96df('0x9'));var ejs=require(_0x96df('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x96df('0xb'));var squel=require('squel');var crypto=require(_0x96df('0xc'));var jsforce=require(_0x96df('0xd'));var deskjs=require(_0x96df('0xe'));var toCsv=require('to-csv');var querystring=require(_0x96df('0xf'));var Papa=require('papaparse');var Redis=require(_0x96df('0x10'));var authService=require(_0x96df('0x11'));var qs=require(_0x96df('0x12'));var as=require(_0x96df('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x96df('0x14'))(_0x96df('0x15'));var utils=require(_0x96df('0x16'));var config=require(_0x96df('0x17'));var licenseUtil=require(_0x96df('0x18'));var db=require(_0x96df('0x19'))['db'];function respondWithStatusCode(_0x387a7f,_0x3d8645){_0x3d8645=_0x3d8645||0xcc;return function(_0x432800){if(_0x432800){return _0x387a7f[_0x96df('0x1a')](_0x3d8645);}return _0x387a7f[_0x96df('0x1b')](_0x3d8645)['end']();};}function respondWithResult(_0x88edf1,_0x3552ac){_0x3552ac=_0x3552ac||0xc8;return function(_0x131a8a){if(_0x131a8a){return _0x88edf1['status'](_0x3552ac)[_0x96df('0x1c')](_0x131a8a);}};}function respondWithFilteredResult(_0x34c19a,_0x2312ef){return function(_0x20edf3){if(_0x20edf3){var _0x2cd5d2=typeof _0x2312ef[_0x96df('0x1d')]===_0x96df('0x1e')&&typeof _0x2312ef['limit']==='undefined';var _0x2ecd44=_0x20edf3[_0x96df('0x1f')];var _0x597f2d=_0x2cd5d2?0x0:_0x2312ef[_0x96df('0x1d')];var _0x51c572=_0x2cd5d2?_0x20edf3[_0x96df('0x1f')]:_0x2312ef[_0x96df('0x1d')]+_0x2312ef[_0x96df('0x20')];var _0x347f03;if(_0x51c572>=_0x2ecd44){_0x51c572=_0x2ecd44;_0x347f03=0xc8;}else{_0x347f03=0xce;}_0x34c19a['status'](_0x347f03);return _0x34c19a[_0x96df('0x21')](_0x96df('0x22'),_0x597f2d+'-'+_0x51c572+'/'+_0x2ecd44)['json'](_0x20edf3);}return null;};}function patchUpdates(_0x3c2752){return function(_0x5d07a){try{jsonpatch['apply'](_0x5d07a,_0x3c2752,!![]);}catch(_0x3fffef){return BPromise[_0x96df('0x23')](_0x3fffef);}return _0x5d07a[_0x96df('0x24')]();};}function saveUpdates(_0x52c921,_0x59304e){return function(_0x1584b2){if(_0x1584b2){return _0x1584b2['update'](_0x52c921)[_0x96df('0x25')](function(_0x5aa801){return _0x5aa801;});}return null;};}function removeEntity(_0x226181,_0x1c33aa){return function(_0x4811d5){if(_0x4811d5){return _0x4811d5['destroy']()['then'](function(){_0x226181[_0x96df('0x1b')](0xcc)[_0x96df('0x26')]();});}};}function handleEntityNotFound(_0x3b4ccb,_0x2458a0){return function(_0x189344){if(!_0x189344){_0x3b4ccb['sendStatus'](0x194);}return _0x189344;};}function handleError(_0x56e9d6,_0x363b48){_0x363b48=_0x363b48||0x1f4;return function(_0x108201){logger[_0x96df('0x27')](_0x108201[_0x96df('0x28')]);if(_0x108201['name']){delete _0x108201[_0x96df('0x29')];}_0x56e9d6[_0x96df('0x1b')](_0x363b48)[_0x96df('0x2a')](_0x108201);};}exports[_0x96df('0x2b')]=function(_0x52e953,_0x93d4e2){var _0x500694={},_0x36b270={},_0x44c2d8={'count':0x0,'rows':[]};var _0x5644ef=_[_0x96df('0x2c')](db[_0x96df('0x2d')][_0x96df('0x2e')],function(_0x36ba3f){return{'name':_0x36ba3f['fieldName'],'type':_0x36ba3f[_0x96df('0x2f')]['key']};});_0x36b270['model']=_[_0x96df('0x2c')](_0x5644ef,_0x96df('0x29'));_0x36b270[_0x96df('0x30')]=_['keys'](_0x52e953[_0x96df('0x30')]);_0x36b270[_0x96df('0x31')]=_[_0x96df('0x32')](_0x36b270[_0x96df('0x33')],_0x36b270[_0x96df('0x30')]);_0x500694[_0x96df('0x34')]=_[_0x96df('0x32')](_0x36b270[_0x96df('0x33')],qs[_0x96df('0x35')](_0x52e953['query']['fields']));_0x500694[_0x96df('0x34')]=_0x500694[_0x96df('0x34')][_0x96df('0x36')]?_0x500694[_0x96df('0x34')]:_0x36b270[_0x96df('0x33')];if(!_0x52e953[_0x96df('0x30')][_0x96df('0x37')](_0x96df('0x38'))){_0x500694[_0x96df('0x20')]=qs[_0x96df('0x20')](_0x52e953['query']['limit']);_0x500694['offset']=qs[_0x96df('0x1d')](_0x52e953['query'][_0x96df('0x1d')]);}_0x500694[_0x96df('0x39')]=qs[_0x96df('0x3a')](_0x52e953[_0x96df('0x30')][_0x96df('0x3a')]);_0x500694['where']=qs[_0x96df('0x31')](_[_0x96df('0x3b')](_0x52e953[_0x96df('0x30')],_0x36b270['filters']),_0x5644ef);if(_0x52e953[_0x96df('0x30')]['filter']){_0x500694['where']=_[_0x96df('0x3c')](_0x500694[_0x96df('0x3d')],{'$or':_[_0x96df('0x2c')](_0x5644ef,function(_0x4c6925){if(_0x4c6925[_0x96df('0x2f')]!==_0x96df('0x3e')){var _0x425f8c={};_0x425f8c[_0x4c6925[_0x96df('0x29')]]={'$like':'%'+_0x52e953['query'][_0x96df('0x3f')]+'%'};return _0x425f8c;}})});}_0x500694=_[_0x96df('0x3c')]({},_0x500694,_0x52e953['options']);var _0x9476a0={'where':_0x500694[_0x96df('0x3d')]};return db[_0x96df('0x2d')][_0x96df('0x1f')](_0x9476a0)['then'](function(_0x3ba352){_0x44c2d8[_0x96df('0x1f')]=_0x3ba352;if(_0x52e953['query'][_0x96df('0x40')]){_0x500694[_0x96df('0x41')]=[{'all':!![]}];}return db[_0x96df('0x2d')]['findAll'](_0x500694);})[_0x96df('0x25')](function(_0x554339){_0x44c2d8[_0x96df('0x42')]=_0x554339;return _0x44c2d8;})['then'](respondWithFilteredResult(_0x93d4e2,_0x500694))[_0x96df('0x43')](handleError(_0x93d4e2,null));};exports[_0x96df('0x44')]=function(_0x4d5282,_0x496300){var _0x33af3d={'raw':![],'where':{'id':_0x4d5282[_0x96df('0x45')]['id']}},_0x11a433={};_0x11a433['model']=_[_0x96df('0x46')](db['Dynamics365Configuration'][_0x96df('0x2e')]);_0x11a433[_0x96df('0x30')]=_[_0x96df('0x46')](_0x4d5282[_0x96df('0x30')]);_0x11a433[_0x96df('0x31')]=_[_0x96df('0x32')](_0x11a433[_0x96df('0x33')],_0x11a433[_0x96df('0x30')]);_0x33af3d[_0x96df('0x34')]=_[_0x96df('0x32')](_0x11a433['model'],qs[_0x96df('0x35')](_0x4d5282[_0x96df('0x30')][_0x96df('0x35')]));_0x33af3d[_0x96df('0x34')]=_0x33af3d[_0x96df('0x34')][_0x96df('0x36')]?_0x33af3d[_0x96df('0x34')]:_0x11a433['model'];if(_0x4d5282[_0x96df('0x30')][_0x96df('0x40')]){_0x33af3d[_0x96df('0x41')]=[{'all':!![]}];}_0x33af3d=_[_0x96df('0x3c')]({},_0x33af3d,_0x4d5282[_0x96df('0x47')]);return db[_0x96df('0x2d')][_0x96df('0x48')](_0x33af3d)[_0x96df('0x25')](handleEntityNotFound(_0x496300,null))[_0x96df('0x25')](respondWithResult(_0x496300,null))[_0x96df('0x43')](handleError(_0x496300,null));};exports['create']=function(_0x22c0c0,_0x503fe3){return db[_0x96df('0x2d')][_0x96df('0x49')](_0x22c0c0['body'],{})[_0x96df('0x25')](respondWithResult(_0x503fe3,0xc9))['catch'](handleError(_0x503fe3,null));};exports[_0x96df('0x4a')]=function(_0xe19c3c,_0x57209a){if(_0xe19c3c[_0x96df('0x4b')]['id']){delete _0xe19c3c[_0x96df('0x4b')]['id'];}return db['Dynamics365Configuration'][_0x96df('0x48')]({'where':{'id':_0xe19c3c['params']['id']}})[_0x96df('0x25')](handleEntityNotFound(_0x57209a,null))['then'](saveUpdates(_0xe19c3c[_0x96df('0x4b')],null))[_0x96df('0x25')](respondWithResult(_0x57209a,null))['catch'](handleError(_0x57209a,null));};exports[_0x96df('0x4c')]=function(_0x5e2cf1,_0x39cdb6){return db[_0x96df('0x2d')][_0x96df('0x48')]({'where':{'id':_0x5e2cf1['params']['id']}})[_0x96df('0x25')](handleEntityNotFound(_0x39cdb6,null))['then'](removeEntity(_0x39cdb6,null))['catch'](handleError(_0x39cdb6,null));};exports[_0x96df('0x4d')]=function(_0x2a99c2,_0x42910b,_0x5be16f){var _0x533579={};var _0x457880={};var _0x5da482;var _0x2020cd;return db[_0x96df('0x2d')][_0x96df('0x4e')]({'where':{'id':_0x2a99c2[_0x96df('0x45')]['id']}})['then'](handleEntityNotFound(_0x42910b,null))[_0x96df('0x25')](function(_0x246a87){if(_0x246a87){_0x5da482=_0x246a87;_0x457880[_0x96df('0x33')]=_[_0x96df('0x46')](db[_0x96df('0x4f')][_0x96df('0x2e')]);_0x457880[_0x96df('0x30')]=_[_0x96df('0x46')](_0x2a99c2['query']);_0x457880[_0x96df('0x31')]=_[_0x96df('0x32')](_0x457880[_0x96df('0x33')],_0x457880[_0x96df('0x30')]);_0x533579[_0x96df('0x34')]=_[_0x96df('0x32')](_0x457880['model'],qs[_0x96df('0x35')](_0x2a99c2[_0x96df('0x30')][_0x96df('0x35')]));_0x533579[_0x96df('0x34')]=_0x533579[_0x96df('0x34')]['length']?_0x533579[_0x96df('0x34')]:_0x457880[_0x96df('0x33')];_0x533579[_0x96df('0x39')]=qs[_0x96df('0x3a')](_0x2a99c2[_0x96df('0x30')][_0x96df('0x3a')]);_0x533579['where']=qs[_0x96df('0x31')](_[_0x96df('0x3b')](_0x2a99c2[_0x96df('0x30')],_0x457880[_0x96df('0x31')]));if(_0x2a99c2['query'][_0x96df('0x3f')]){_0x533579['where']=_[_0x96df('0x3c')](_0x533579[_0x96df('0x3d')],{'$or':_[_0x96df('0x2c')](_0x533579[_0x96df('0x34')],function(_0x35b478){var _0x5ce27a={};_0x5ce27a[_0x35b478]={'$like':'%'+_0x2a99c2[_0x96df('0x30')][_0x96df('0x3f')]+'%'};return _0x5ce27a;})});}_0x533579=_['merge']({},_0x533579,_0x2a99c2[_0x96df('0x47')]);return _0x5da482['getFields'](_0x533579);}})[_0x96df('0x25')](function(_0x15b9ed){if(_0x15b9ed){_0x2020cd=_0x15b9ed[_0x96df('0x36')];if(!_0x2a99c2[_0x96df('0x30')][_0x96df('0x37')](_0x96df('0x38'))){_0x533579[_0x96df('0x20')]=qs[_0x96df('0x20')](_0x2a99c2[_0x96df('0x30')][_0x96df('0x20')]);_0x533579[_0x96df('0x1d')]=qs['offset'](_0x2a99c2[_0x96df('0x30')][_0x96df('0x1d')]);}return _0x5da482[_0x96df('0x4d')](_0x533579);}})[_0x96df('0x25')](function(_0x5bad93){if(_0x5bad93){return _0x5bad93?{'count':_0x2020cd,'rows':_0x5bad93}:null;}})['then'](respondWithResult(_0x42910b,null))[_0x96df('0x43')](handleError(_0x42910b,null));};exports[_0x96df('0x50')]=function(_0x1bd0e8,_0x56cd37,_0x4b650e){var _0x5a774={};var _0x239613={};var _0x36360f;var _0x24002e;return db[_0x96df('0x2d')][_0x96df('0x4e')]({'where':{'id':_0x1bd0e8[_0x96df('0x45')]['id']}})[_0x96df('0x25')](handleEntityNotFound(_0x56cd37,null))['then'](function(_0x1db688){if(_0x1db688){_0x36360f=_0x1db688;_0x239613[_0x96df('0x33')]=_['keys'](db['Dynamics365Field'][_0x96df('0x2e')]);_0x239613[_0x96df('0x30')]=_[_0x96df('0x46')](_0x1bd0e8[_0x96df('0x30')]);_0x239613[_0x96df('0x31')]=_[_0x96df('0x32')](_0x239613[_0x96df('0x33')],_0x239613[_0x96df('0x30')]);_0x5a774['attributes']=_[_0x96df('0x32')](_0x239613['model'],qs[_0x96df('0x35')](_0x1bd0e8[_0x96df('0x30')][_0x96df('0x35')]));_0x5a774[_0x96df('0x34')]=_0x5a774[_0x96df('0x34')][_0x96df('0x36')]?_0x5a774[_0x96df('0x34')]:_0x239613['model'];_0x5a774[_0x96df('0x39')]=qs[_0x96df('0x3a')](_0x1bd0e8[_0x96df('0x30')][_0x96df('0x3a')]);_0x5a774[_0x96df('0x3d')]=qs[_0x96df('0x31')](_[_0x96df('0x3b')](_0x1bd0e8[_0x96df('0x30')],_0x239613[_0x96df('0x31')]));if(_0x1bd0e8['query'][_0x96df('0x3f')]){_0x5a774[_0x96df('0x3d')]=_[_0x96df('0x3c')](_0x5a774[_0x96df('0x3d')],{'$or':_[_0x96df('0x2c')](_0x5a774[_0x96df('0x34')],function(_0x196179){var _0x1cb95f={};_0x1cb95f[_0x196179]={'$like':'%'+_0x1bd0e8['query'][_0x96df('0x3f')]+'%'};return _0x1cb95f;})});}_0x5a774=_['merge']({},_0x5a774,_0x1bd0e8['options']);return _0x36360f[_0x96df('0x50')](_0x5a774);}})[_0x96df('0x25')](function(_0x276e6d){if(_0x276e6d){_0x24002e=_0x276e6d['length'];if(!_0x1bd0e8[_0x96df('0x30')][_0x96df('0x37')](_0x96df('0x38'))){_0x5a774[_0x96df('0x20')]=qs[_0x96df('0x20')](_0x1bd0e8[_0x96df('0x30')][_0x96df('0x20')]);_0x5a774['offset']=qs[_0x96df('0x1d')](_0x1bd0e8['query']['offset']);}return _0x36360f['getSubjects'](_0x5a774);}})['then'](function(_0x564000){if(_0x564000){return _0x564000?{'count':_0x24002e,'rows':_0x564000}:null;}})[_0x96df('0x25')](respondWithResult(_0x56cd37,null))['catch'](handleError(_0x56cd37,null));};exports['getDescriptions']=function(_0x3b128b,_0x4f3d0c,_0x1094e8){var _0x506ed7={};var _0x21abe4={};var _0x204608;var _0x28232a;return db[_0x96df('0x2d')][_0x96df('0x4e')]({'where':{'id':_0x3b128b['params']['id']}})['then'](handleEntityNotFound(_0x4f3d0c,null))[_0x96df('0x25')](function(_0x2b17b4){if(_0x2b17b4){_0x204608=_0x2b17b4;_0x21abe4['model']=_[_0x96df('0x46')](db[_0x96df('0x4f')][_0x96df('0x2e')]);_0x21abe4[_0x96df('0x30')]=_[_0x96df('0x46')](_0x3b128b[_0x96df('0x30')]);_0x21abe4[_0x96df('0x31')]=_[_0x96df('0x32')](_0x21abe4['model'],_0x21abe4[_0x96df('0x30')]);_0x506ed7['attributes']=_[_0x96df('0x32')](_0x21abe4[_0x96df('0x33')],qs[_0x96df('0x35')](_0x3b128b[_0x96df('0x30')][_0x96df('0x35')]));_0x506ed7[_0x96df('0x34')]=_0x506ed7[_0x96df('0x34')][_0x96df('0x36')]?_0x506ed7[_0x96df('0x34')]:_0x21abe4[_0x96df('0x33')];_0x506ed7['order']=qs[_0x96df('0x3a')](_0x3b128b[_0x96df('0x30')][_0x96df('0x3a')]);_0x506ed7[_0x96df('0x3d')]=qs[_0x96df('0x31')](_[_0x96df('0x3b')](_0x3b128b[_0x96df('0x30')],_0x21abe4[_0x96df('0x31')]));if(_0x3b128b[_0x96df('0x30')][_0x96df('0x3f')]){_0x506ed7['where']=_['merge'](_0x506ed7[_0x96df('0x3d')],{'$or':_['map'](_0x506ed7[_0x96df('0x34')],function(_0x511a6c){var _0x4dbe42={};_0x4dbe42[_0x511a6c]={'$like':'%'+_0x3b128b[_0x96df('0x30')][_0x96df('0x3f')]+'%'};return _0x4dbe42;})});}_0x506ed7=_['merge']({},_0x506ed7,_0x3b128b['options']);return _0x204608[_0x96df('0x51')](_0x506ed7);}})[_0x96df('0x25')](function(_0x2259b2){if(_0x2259b2){_0x28232a=_0x2259b2[_0x96df('0x36')];if(!_0x3b128b[_0x96df('0x30')][_0x96df('0x37')](_0x96df('0x38'))){_0x506ed7[_0x96df('0x20')]=qs['limit'](_0x3b128b[_0x96df('0x30')]['limit']);_0x506ed7[_0x96df('0x1d')]=qs[_0x96df('0x1d')](_0x3b128b[_0x96df('0x30')]['offset']);}return _0x204608[_0x96df('0x51')](_0x506ed7);}})['then'](function(_0x12bb8c){if(_0x12bb8c){return _0x12bb8c?{'count':_0x28232a,'rows':_0x12bb8c}:null;}})[_0x96df('0x25')](respondWithResult(_0x4f3d0c,null))[_0x96df('0x43')](handleError(_0x4f3d0c,null));};
\ No newline at end of file
+var _0xeb86=['findAll','show','rawAttributes','find','catch','create','params','getFields','Dynamics365Field','length','findOne','getSubjects','hasOwnProperty','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','set','Content-Range','apply','save','update','then','end','stack','name','send','index','Dynamics365Configuration','type','key','model','map','query','keys','filters','intersection','fields','attributes','nolimit','limit','order','sort','where','pick','filter','merge','options','includeAll','include'];(function(_0xf3a587,_0x475c74){var _0x46f9d4=function(_0x37370a){while(--_0x37370a){_0xf3a587['push'](_0xf3a587['shift']());}};_0x46f9d4(++_0x475c74);}(_0xeb86,0xaa));var _0x6eb8=function(_0x23b276,_0x39230b){_0x23b276=_0x23b276-0x0;var _0x19205f=_0xeb86[_0x23b276];return _0x19205f;};'use strict';var emlformat=require(_0x6eb8('0x0'));var rimraf=require(_0x6eb8('0x1'));var zipdir=require(_0x6eb8('0x2'));var jsonpatch=require(_0x6eb8('0x3'));var rp=require(_0x6eb8('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x6eb8('0x5'));var util=require(_0x6eb8('0x6'));var path=require(_0x6eb8('0x7'));var sox=require('sox');var csv=require(_0x6eb8('0x8'));var ejs=require(_0x6eb8('0x9'));var fs=require('fs');var fs_extra=require(_0x6eb8('0xa'));var _=require(_0x6eb8('0xb'));var squel=require('squel');var crypto=require(_0x6eb8('0xc'));var jsforce=require(_0x6eb8('0xd'));var deskjs=require(_0x6eb8('0xe'));var toCsv=require(_0x6eb8('0x8'));var querystring=require('querystring');var Papa=require(_0x6eb8('0xf'));var Redis=require(_0x6eb8('0x10'));var authService=require(_0x6eb8('0x11'));var qs=require(_0x6eb8('0x12'));var as=require(_0x6eb8('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6eb8('0x14'))('api');var utils=require(_0x6eb8('0x15'));var config=require(_0x6eb8('0x16'));var licenseUtil=require(_0x6eb8('0x17'));var db=require(_0x6eb8('0x18'))['db'];function respondWithStatusCode(_0xecb643,_0x241490){_0x241490=_0x241490||0xcc;return function(_0x4d8f30){if(_0x4d8f30){return _0xecb643[_0x6eb8('0x19')](_0x241490);}return _0xecb643[_0x6eb8('0x1a')](_0x241490)['end']();};}function respondWithResult(_0x250a72,_0x2b0df3){_0x2b0df3=_0x2b0df3||0xc8;return function(_0x5268b4){if(_0x5268b4){return _0x250a72[_0x6eb8('0x1a')](_0x2b0df3)[_0x6eb8('0x1b')](_0x5268b4);}};}function respondWithFilteredResult(_0x4192c0,_0x58563b){return function(_0x19c839){if(_0x19c839){var _0x3a118a=typeof _0x58563b[_0x6eb8('0x1c')]===_0x6eb8('0x1d')&&typeof _0x58563b['limit']===_0x6eb8('0x1d');var _0x4db237=_0x19c839[_0x6eb8('0x1e')];var _0x15a7f3=_0x3a118a?0x0:_0x58563b[_0x6eb8('0x1c')];var _0x1fb198=_0x3a118a?_0x19c839[_0x6eb8('0x1e')]:_0x58563b[_0x6eb8('0x1c')]+_0x58563b['limit'];var _0x2e09fb;if(_0x1fb198>=_0x4db237){_0x1fb198=_0x4db237;_0x2e09fb=0xc8;}else{_0x2e09fb=0xce;}_0x4192c0[_0x6eb8('0x1a')](_0x2e09fb);return _0x4192c0[_0x6eb8('0x1f')](_0x6eb8('0x20'),_0x15a7f3+'-'+_0x1fb198+'/'+_0x4db237)['json'](_0x19c839);}return null;};}function patchUpdates(_0x3c6e7d){return function(_0xba8fc8){try{jsonpatch[_0x6eb8('0x21')](_0xba8fc8,_0x3c6e7d,!![]);}catch(_0x17c057){return BPromise['reject'](_0x17c057);}return _0xba8fc8[_0x6eb8('0x22')]();};}function saveUpdates(_0x4daa20,_0x4c4a64){return function(_0x4a8edd){if(_0x4a8edd){return _0x4a8edd[_0x6eb8('0x23')](_0x4daa20)[_0x6eb8('0x24')](function(_0x1270e2){return _0x1270e2;});}return null;};}function removeEntity(_0x1c15e0,_0x2de24b){return function(_0x25b792){if(_0x25b792){return _0x25b792['destroy']()[_0x6eb8('0x24')](function(){_0x1c15e0[_0x6eb8('0x1a')](0xcc)[_0x6eb8('0x25')]();});}};}function handleEntityNotFound(_0x83aa1a,_0x412ab9){return function(_0x1470b9){if(!_0x1470b9){_0x83aa1a[_0x6eb8('0x19')](0x194);}return _0x1470b9;};}function handleError(_0x33e565,_0x2a1831){_0x2a1831=_0x2a1831||0x1f4;return function(_0x6b6806){logger['error'](_0x6b6806[_0x6eb8('0x26')]);if(_0x6b6806['name']){delete _0x6b6806[_0x6eb8('0x27')];}_0x33e565[_0x6eb8('0x1a')](_0x2a1831)[_0x6eb8('0x28')](_0x6b6806);};}exports[_0x6eb8('0x29')]=function(_0x2175d4,_0x1bb008){var _0x14d34b={},_0x1f817a={},_0x149175={'count':0x0,'rows':[]};var _0x211d29=_['map'](db[_0x6eb8('0x2a')]['rawAttributes'],function(_0x57077b){return{'name':_0x57077b['fieldName'],'type':_0x57077b[_0x6eb8('0x2b')][_0x6eb8('0x2c')]};});_0x1f817a[_0x6eb8('0x2d')]=_[_0x6eb8('0x2e')](_0x211d29,_0x6eb8('0x27'));_0x1f817a[_0x6eb8('0x2f')]=_[_0x6eb8('0x30')](_0x2175d4[_0x6eb8('0x2f')]);_0x1f817a[_0x6eb8('0x31')]=_[_0x6eb8('0x32')](_0x1f817a[_0x6eb8('0x2d')],_0x1f817a[_0x6eb8('0x2f')]);_0x14d34b['attributes']=_[_0x6eb8('0x32')](_0x1f817a['model'],qs[_0x6eb8('0x33')](_0x2175d4['query'][_0x6eb8('0x33')]));_0x14d34b[_0x6eb8('0x34')]=_0x14d34b[_0x6eb8('0x34')]['length']?_0x14d34b[_0x6eb8('0x34')]:_0x1f817a[_0x6eb8('0x2d')];if(!_0x2175d4['query']['hasOwnProperty'](_0x6eb8('0x35'))){_0x14d34b[_0x6eb8('0x36')]=qs[_0x6eb8('0x36')](_0x2175d4['query']['limit']);_0x14d34b['offset']=qs[_0x6eb8('0x1c')](_0x2175d4[_0x6eb8('0x2f')]['offset']);}_0x14d34b[_0x6eb8('0x37')]=qs[_0x6eb8('0x38')](_0x2175d4[_0x6eb8('0x2f')][_0x6eb8('0x38')]);_0x14d34b[_0x6eb8('0x39')]=qs[_0x6eb8('0x31')](_[_0x6eb8('0x3a')](_0x2175d4['query'],_0x1f817a['filters']),_0x211d29);if(_0x2175d4[_0x6eb8('0x2f')][_0x6eb8('0x3b')]){_0x14d34b[_0x6eb8('0x39')]=_[_0x6eb8('0x3c')](_0x14d34b[_0x6eb8('0x39')],{'$or':_[_0x6eb8('0x2e')](_0x211d29,function(_0x26cc9b){if(_0x26cc9b['type']!=='VIRTUAL'){var _0x297bb2={};_0x297bb2[_0x26cc9b[_0x6eb8('0x27')]]={'$like':'%'+_0x2175d4[_0x6eb8('0x2f')]['filter']+'%'};return _0x297bb2;}})});}_0x14d34b=_[_0x6eb8('0x3c')]({},_0x14d34b,_0x2175d4[_0x6eb8('0x3d')]);var _0x97eb18={'where':_0x14d34b[_0x6eb8('0x39')]};return db[_0x6eb8('0x2a')]['count'](_0x97eb18)[_0x6eb8('0x24')](function(_0x3a39c5){_0x149175['count']=_0x3a39c5;if(_0x2175d4[_0x6eb8('0x2f')][_0x6eb8('0x3e')]){_0x14d34b[_0x6eb8('0x3f')]=[{'all':!![]}];}return db[_0x6eb8('0x2a')][_0x6eb8('0x40')](_0x14d34b);})[_0x6eb8('0x24')](function(_0x124854){_0x149175['rows']=_0x124854;return _0x149175;})[_0x6eb8('0x24')](respondWithFilteredResult(_0x1bb008,_0x14d34b))['catch'](handleError(_0x1bb008,null));};exports[_0x6eb8('0x41')]=function(_0xd8f6fd,_0x4322bd){var _0x50b17c={'raw':![],'where':{'id':_0xd8f6fd['params']['id']}},_0xfc7064={};_0xfc7064[_0x6eb8('0x2d')]=_[_0x6eb8('0x30')](db['Dynamics365Configuration'][_0x6eb8('0x42')]);_0xfc7064[_0x6eb8('0x2f')]=_[_0x6eb8('0x30')](_0xd8f6fd['query']);_0xfc7064['filters']=_[_0x6eb8('0x32')](_0xfc7064[_0x6eb8('0x2d')],_0xfc7064[_0x6eb8('0x2f')]);_0x50b17c['attributes']=_[_0x6eb8('0x32')](_0xfc7064['model'],qs['fields'](_0xd8f6fd[_0x6eb8('0x2f')][_0x6eb8('0x33')]));_0x50b17c[_0x6eb8('0x34')]=_0x50b17c[_0x6eb8('0x34')]['length']?_0x50b17c[_0x6eb8('0x34')]:_0xfc7064[_0x6eb8('0x2d')];if(_0xd8f6fd[_0x6eb8('0x2f')][_0x6eb8('0x3e')]){_0x50b17c[_0x6eb8('0x3f')]=[{'all':!![]}];}_0x50b17c=_[_0x6eb8('0x3c')]({},_0x50b17c,_0xd8f6fd[_0x6eb8('0x3d')]);return db[_0x6eb8('0x2a')][_0x6eb8('0x43')](_0x50b17c)['then'](handleEntityNotFound(_0x4322bd,null))['then'](respondWithResult(_0x4322bd,null))[_0x6eb8('0x44')](handleError(_0x4322bd,null));};exports[_0x6eb8('0x45')]=function(_0x2be875,_0x4d0aa4){return db['Dynamics365Configuration'][_0x6eb8('0x45')](_0x2be875['body'],{})[_0x6eb8('0x24')](respondWithResult(_0x4d0aa4,0xc9))[_0x6eb8('0x44')](handleError(_0x4d0aa4,null));};exports[_0x6eb8('0x23')]=function(_0x57455e,_0x446544){if(_0x57455e['body']['id']){delete _0x57455e['body']['id'];}return db['Dynamics365Configuration'][_0x6eb8('0x43')]({'where':{'id':_0x57455e[_0x6eb8('0x46')]['id']}})[_0x6eb8('0x24')](handleEntityNotFound(_0x446544,null))[_0x6eb8('0x24')](saveUpdates(_0x57455e['body'],null))['then'](respondWithResult(_0x446544,null))['catch'](handleError(_0x446544,null));};exports['destroy']=function(_0x213da9,_0x29e57f){return db[_0x6eb8('0x2a')][_0x6eb8('0x43')]({'where':{'id':_0x213da9[_0x6eb8('0x46')]['id']}})[_0x6eb8('0x24')](handleEntityNotFound(_0x29e57f,null))[_0x6eb8('0x24')](removeEntity(_0x29e57f,null))[_0x6eb8('0x44')](handleError(_0x29e57f,null));};exports[_0x6eb8('0x47')]=function(_0x467b85,_0x25de28,_0x2fa436){var _0x384e84={};var _0x2d50a8={};var _0x9d157e;var _0x432760;return db[_0x6eb8('0x2a')]['findOne']({'where':{'id':_0x467b85[_0x6eb8('0x46')]['id']}})[_0x6eb8('0x24')](handleEntityNotFound(_0x25de28,null))[_0x6eb8('0x24')](function(_0x39b924){if(_0x39b924){_0x9d157e=_0x39b924;_0x2d50a8[_0x6eb8('0x2d')]=_[_0x6eb8('0x30')](db[_0x6eb8('0x48')][_0x6eb8('0x42')]);_0x2d50a8['query']=_['keys'](_0x467b85[_0x6eb8('0x2f')]);_0x2d50a8[_0x6eb8('0x31')]=_[_0x6eb8('0x32')](_0x2d50a8[_0x6eb8('0x2d')],_0x2d50a8[_0x6eb8('0x2f')]);_0x384e84['attributes']=_['intersection'](_0x2d50a8[_0x6eb8('0x2d')],qs[_0x6eb8('0x33')](_0x467b85[_0x6eb8('0x2f')]['fields']));_0x384e84[_0x6eb8('0x34')]=_0x384e84['attributes']['length']?_0x384e84['attributes']:_0x2d50a8[_0x6eb8('0x2d')];_0x384e84['order']=qs[_0x6eb8('0x38')](_0x467b85[_0x6eb8('0x2f')][_0x6eb8('0x38')]);_0x384e84[_0x6eb8('0x39')]=qs[_0x6eb8('0x31')](_[_0x6eb8('0x3a')](_0x467b85[_0x6eb8('0x2f')],_0x2d50a8['filters']));if(_0x467b85[_0x6eb8('0x2f')][_0x6eb8('0x3b')]){_0x384e84[_0x6eb8('0x39')]=_[_0x6eb8('0x3c')](_0x384e84[_0x6eb8('0x39')],{'$or':_[_0x6eb8('0x2e')](_0x384e84['attributes'],function(_0x537ebd){var _0x5abef3={};_0x5abef3[_0x537ebd]={'$like':'%'+_0x467b85[_0x6eb8('0x2f')][_0x6eb8('0x3b')]+'%'};return _0x5abef3;})});}_0x384e84=_[_0x6eb8('0x3c')]({},_0x384e84,_0x467b85['options']);return _0x9d157e[_0x6eb8('0x47')](_0x384e84);}})[_0x6eb8('0x24')](function(_0x1b7510){if(_0x1b7510){_0x432760=_0x1b7510[_0x6eb8('0x49')];if(!_0x467b85['query']['hasOwnProperty'](_0x6eb8('0x35'))){_0x384e84[_0x6eb8('0x36')]=qs['limit'](_0x467b85[_0x6eb8('0x2f')][_0x6eb8('0x36')]);_0x384e84[_0x6eb8('0x1c')]=qs[_0x6eb8('0x1c')](_0x467b85[_0x6eb8('0x2f')]['offset']);}return _0x9d157e[_0x6eb8('0x47')](_0x384e84);}})[_0x6eb8('0x24')](function(_0x22e590){if(_0x22e590){return _0x22e590?{'count':_0x432760,'rows':_0x22e590}:null;}})['then'](respondWithResult(_0x25de28,null))[_0x6eb8('0x44')](handleError(_0x25de28,null));};exports['getSubjects']=function(_0x586ffd,_0x48b90c,_0x265d36){var _0xdf1f59={};var _0x475960={};var _0x1142cd;var _0x34ec78;return db[_0x6eb8('0x2a')][_0x6eb8('0x4a')]({'where':{'id':_0x586ffd[_0x6eb8('0x46')]['id']}})[_0x6eb8('0x24')](handleEntityNotFound(_0x48b90c,null))[_0x6eb8('0x24')](function(_0x3f47f0){if(_0x3f47f0){_0x1142cd=_0x3f47f0;_0x475960[_0x6eb8('0x2d')]=_['keys'](db[_0x6eb8('0x48')][_0x6eb8('0x42')]);_0x475960[_0x6eb8('0x2f')]=_[_0x6eb8('0x30')](_0x586ffd['query']);_0x475960[_0x6eb8('0x31')]=_[_0x6eb8('0x32')](_0x475960['model'],_0x475960[_0x6eb8('0x2f')]);_0xdf1f59[_0x6eb8('0x34')]=_['intersection'](_0x475960[_0x6eb8('0x2d')],qs[_0x6eb8('0x33')](_0x586ffd[_0x6eb8('0x2f')][_0x6eb8('0x33')]));_0xdf1f59[_0x6eb8('0x34')]=_0xdf1f59[_0x6eb8('0x34')][_0x6eb8('0x49')]?_0xdf1f59['attributes']:_0x475960['model'];_0xdf1f59['order']=qs[_0x6eb8('0x38')](_0x586ffd[_0x6eb8('0x2f')][_0x6eb8('0x38')]);_0xdf1f59['where']=qs[_0x6eb8('0x31')](_['pick'](_0x586ffd['query'],_0x475960['filters']));if(_0x586ffd[_0x6eb8('0x2f')][_0x6eb8('0x3b')]){_0xdf1f59[_0x6eb8('0x39')]=_[_0x6eb8('0x3c')](_0xdf1f59[_0x6eb8('0x39')],{'$or':_['map'](_0xdf1f59[_0x6eb8('0x34')],function(_0x491e7e){var _0x2d7213={};_0x2d7213[_0x491e7e]={'$like':'%'+_0x586ffd[_0x6eb8('0x2f')]['filter']+'%'};return _0x2d7213;})});}_0xdf1f59=_[_0x6eb8('0x3c')]({},_0xdf1f59,_0x586ffd['options']);return _0x1142cd[_0x6eb8('0x4b')](_0xdf1f59);}})[_0x6eb8('0x24')](function(_0x1a09d6){if(_0x1a09d6){_0x34ec78=_0x1a09d6[_0x6eb8('0x49')];if(!_0x586ffd[_0x6eb8('0x2f')][_0x6eb8('0x4c')]('nolimit')){_0xdf1f59[_0x6eb8('0x36')]=qs[_0x6eb8('0x36')](_0x586ffd['query'][_0x6eb8('0x36')]);_0xdf1f59['offset']=qs['offset'](_0x586ffd[_0x6eb8('0x2f')][_0x6eb8('0x1c')]);}return _0x1142cd['getSubjects'](_0xdf1f59);}})[_0x6eb8('0x24')](function(_0x6a443a){if(_0x6a443a){return _0x6a443a?{'count':_0x34ec78,'rows':_0x6a443a}:null;}})['then'](respondWithResult(_0x48b90c,null))['catch'](handleError(_0x48b90c,null));};exports[_0x6eb8('0x4d')]=function(_0x2e515b,_0x32a668,_0x2fc2e9){var _0x5d3bec={};var _0x7d97ea={};var _0x37d3a3;var _0x3fa7fd;return db[_0x6eb8('0x2a')]['findOne']({'where':{'id':_0x2e515b[_0x6eb8('0x46')]['id']}})[_0x6eb8('0x24')](handleEntityNotFound(_0x32a668,null))[_0x6eb8('0x24')](function(_0x356ec2){if(_0x356ec2){_0x37d3a3=_0x356ec2;_0x7d97ea[_0x6eb8('0x2d')]=_[_0x6eb8('0x30')](db[_0x6eb8('0x48')][_0x6eb8('0x42')]);_0x7d97ea[_0x6eb8('0x2f')]=_[_0x6eb8('0x30')](_0x2e515b[_0x6eb8('0x2f')]);_0x7d97ea['filters']=_[_0x6eb8('0x32')](_0x7d97ea['model'],_0x7d97ea[_0x6eb8('0x2f')]);_0x5d3bec[_0x6eb8('0x34')]=_[_0x6eb8('0x32')](_0x7d97ea['model'],qs[_0x6eb8('0x33')](_0x2e515b['query']['fields']));_0x5d3bec[_0x6eb8('0x34')]=_0x5d3bec[_0x6eb8('0x34')][_0x6eb8('0x49')]?_0x5d3bec[_0x6eb8('0x34')]:_0x7d97ea['model'];_0x5d3bec[_0x6eb8('0x37')]=qs['sort'](_0x2e515b[_0x6eb8('0x2f')][_0x6eb8('0x38')]);_0x5d3bec[_0x6eb8('0x39')]=qs[_0x6eb8('0x31')](_['pick'](_0x2e515b[_0x6eb8('0x2f')],_0x7d97ea[_0x6eb8('0x31')]));if(_0x2e515b[_0x6eb8('0x2f')][_0x6eb8('0x3b')]){_0x5d3bec[_0x6eb8('0x39')]=_['merge'](_0x5d3bec[_0x6eb8('0x39')],{'$or':_['map'](_0x5d3bec[_0x6eb8('0x34')],function(_0x573f95){var _0x2fbb80={};_0x2fbb80[_0x573f95]={'$like':'%'+_0x2e515b[_0x6eb8('0x2f')]['filter']+'%'};return _0x2fbb80;})});}_0x5d3bec=_[_0x6eb8('0x3c')]({},_0x5d3bec,_0x2e515b[_0x6eb8('0x3d')]);return _0x37d3a3[_0x6eb8('0x4d')](_0x5d3bec);}})[_0x6eb8('0x24')](function(_0x10ba73){if(_0x10ba73){_0x3fa7fd=_0x10ba73['length'];if(!_0x2e515b['query'][_0x6eb8('0x4c')]('nolimit')){_0x5d3bec[_0x6eb8('0x36')]=qs[_0x6eb8('0x36')](_0x2e515b['query'][_0x6eb8('0x36')]);_0x5d3bec['offset']=qs['offset'](_0x2e515b[_0x6eb8('0x2f')][_0x6eb8('0x1c')]);}return _0x37d3a3['getDescriptions'](_0x5d3bec);}})[_0x6eb8('0x24')](function(_0x30e741){if(_0x30e741){return _0x30e741?{'count':_0x3fa7fd,'rows':_0x30e741}:null;}})[_0x6eb8('0x24')](respondWithResult(_0x32a668,null))[_0x6eb8('0x44')](handleError(_0x32a668,null));};
\ No newline at end of file
index d8360dd..de94e7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14d=['util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./intDynamics365Configuration.attributes','exports','int_dynamics365_configurations','lodash'];(function(_0x40ac5e,_0x2de228){var _0x2839d6=function(_0x123d47){while(--_0x123d47){_0x40ac5e['push'](_0x40ac5e['shift']());}};_0x2839d6(++_0x2de228);}(_0xe14d,0x1ee));var _0xde14=function(_0x397cfb,_0xb8f317){_0x397cfb=_0x397cfb-0x0;var _0x15fed9=_0xe14d[_0x397cfb];return _0x15fed9;};'use strict';var _=require(_0xde14('0x0'));var util=require(_0xde14('0x1'));var logger=require(_0xde14('0x2'))(_0xde14('0x3'));var moment=require('moment');var BPromise=require(_0xde14('0x4'));var rp=require(_0xde14('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xde14('0x6'));var config=require(_0xde14('0x7'));var attributes=require(_0xde14('0x8'));module[_0xde14('0x9')]=function(_0x461af3,_0xba1514){return _0x461af3['define']('Dynamics365Configuration',attributes,{'tableName':_0xde14('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8d0e=['define','Dynamics365Configuration','int_dynamics365_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intDynamics365Configuration.attributes'];(function(_0x156dea,_0x15b597){var _0x4f703c=function(_0xb963c9){while(--_0xb963c9){_0x156dea['push'](_0x156dea['shift']());}};_0x4f703c(++_0x15b597);}(_0x8d0e,0x1d7));var _0xe8d0=function(_0x5b9ad9,_0x537403){_0x5b9ad9=_0x5b9ad9-0x0;var _0x139829=_0x8d0e[_0x5b9ad9];return _0x139829;};'use strict';var _=require(_0xe8d0('0x0'));var util=require(_0xe8d0('0x1'));var logger=require(_0xe8d0('0x2'))(_0xe8d0('0x3'));var moment=require(_0xe8d0('0x4'));var BPromise=require(_0xe8d0('0x5'));var rp=require(_0xe8d0('0x6'));var fs=require('fs');var path=require(_0xe8d0('0x7'));var rimraf=require(_0xe8d0('0x8'));var config=require('../../config/environment');var attributes=require(_0xe8d0('0x9'));module['exports']=function(_0x560dab,_0x2e2985){return _0x560dab[_0xe8d0('0xa')](_0xe8d0('0xb'),attributes,{'tableName':_0xe8d0('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2be6b56..30d6896 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ac6=['client','http','then','info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise'];(function(_0x288ebb,_0x1ba07f){var _0x59b958=function(_0x41a8d2){while(--_0x41a8d2){_0x288ebb['push'](_0x288ebb['shift']());}};_0x59b958(++_0x1ba07f);}(_0x1ac6,0xb5));var _0x61ac=function(_0x1f885e,_0x83ce8){_0x1f885e=_0x1f885e-0x0;var _0xb76bca=_0x1ac6[_0x1f885e];return _0xb76bca;};'use strict';var _=require('lodash');var util=require(_0x61ac('0x0'));var moment=require(_0x61ac('0x1'));var BPromise=require(_0x61ac('0x2'));var rs=require(_0x61ac('0x3'));var fs=require('fs');var Redis=require(_0x61ac('0x4'));var db=require(_0x61ac('0x5'))['db'];var utils=require(_0x61ac('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x61ac('0x7'));var client=jayson[_0x61ac('0x8')][_0x61ac('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2ecf8e,_0xbe5c90,_0x499769){return new BPromise(function(_0x3af428,_0x2f289d){return client['request'](_0x2ecf8e,_0x499769)[_0x61ac('0xa')](function(_0x1f21b1){logger[_0x61ac('0xb')](_0x61ac('0xc'),_0xbe5c90,_0x61ac('0xd'));logger['debug'](_0x61ac('0xe'),_0xbe5c90,_0x61ac('0xd'),JSON[_0x61ac('0xf')](_0x1f21b1));if(_0x1f21b1[_0x61ac('0x10')]){if(_0x1f21b1[_0x61ac('0x10')][_0x61ac('0x11')]===0x1f4){logger['error'](_0x61ac('0xc'),_0xbe5c90,_0x1f21b1[_0x61ac('0x10')][_0x61ac('0x12')]);return _0x2f289d(_0x1f21b1[_0x61ac('0x10')][_0x61ac('0x12')]);}logger['error'](_0x61ac('0xc'),_0xbe5c90,_0x1f21b1[_0x61ac('0x10')][_0x61ac('0x12')]);return _0x3af428(_0x1f21b1['error'][_0x61ac('0x12')]);}else{logger['info'](_0x61ac('0xc'),_0xbe5c90,_0x61ac('0xd'));_0x3af428(_0x1f21b1[_0x61ac('0x13')][_0x61ac('0x12')]);}})[_0x61ac('0x14')](function(_0x454268){logger['error'](_0x61ac('0xc'),_0xbe5c90,_0x454268);_0x2f289d(_0x454268);});});}
\ No newline at end of file
+var _0xb6c5=['result','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','Dynamics365Configuration,\x20%s,\x20%s','message'];(function(_0xccd4ba,_0x110cf9){var _0x5d2eb4=function(_0x2c7cbd){while(--_0x2c7cbd){_0xccd4ba['push'](_0xccd4ba['shift']());}};_0x5d2eb4(++_0x110cf9);}(_0xb6c5,0x1b9));var _0x5b6c=function(_0xf28e5d,_0x203020){_0xf28e5d=_0xf28e5d-0x0;var _0x293141=_0xb6c5[_0xf28e5d];return _0x293141;};'use strict';var _=require(_0x5b6c('0x0'));var util=require(_0x5b6c('0x1'));var moment=require('moment');var BPromise=require(_0x5b6c('0x2'));var rs=require(_0x5b6c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5b6c('0x4'))['db'];var utils=require(_0x5b6c('0x5'));var logger=require(_0x5b6c('0x6'))(_0x5b6c('0x7'));var config=require(_0x5b6c('0x8'));var jayson=require(_0x5b6c('0x9'));var client=jayson[_0x5b6c('0xa')][_0x5b6c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x31a3c2,_0x3db222,_0x2cefb6){return new BPromise(function(_0x5e00a3,_0x1535de){return client[_0x5b6c('0xc')](_0x31a3c2,_0x2cefb6)[_0x5b6c('0xd')](function(_0x3d875e){logger['info']('Dynamics365Configuration,\x20%s,\x20%s',_0x3db222,_0x5b6c('0xe'));logger[_0x5b6c('0xf')](_0x5b6c('0x10'),_0x3db222,_0x5b6c('0xe'),JSON[_0x5b6c('0x11')](_0x3d875e));if(_0x3d875e[_0x5b6c('0x12')]){if(_0x3d875e[_0x5b6c('0x12')]['code']===0x1f4){logger['error'](_0x5b6c('0x13'),_0x3db222,_0x3d875e['error'][_0x5b6c('0x14')]);return _0x1535de(_0x3d875e['error'][_0x5b6c('0x14')]);}logger['error'](_0x5b6c('0x13'),_0x3db222,_0x3d875e[_0x5b6c('0x12')][_0x5b6c('0x14')]);return _0x5e00a3(_0x3d875e['error'][_0x5b6c('0x14')]);}else{logger['info'](_0x5b6c('0x13'),_0x3db222,'request\x20sent');_0x5e00a3(_0x3d875e[_0x5b6c('0x15')][_0x5b6c('0x14')]);}})['catch'](function(_0x4e39c1){logger[_0x5b6c('0x12')](_0x5b6c('0x13'),_0x3db222,_0x4e39c1);_0x1535de(_0x4e39c1);});});}
\ No newline at end of file
index d954328..78940a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ffd=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Field.controller','isAuthenticated','index','/:id','show','create','put','update','delete','destroy','exports','multer'];(function(_0x40eaeb,_0x468c13){var _0x409ad4=function(_0x43cd0a){while(--_0x43cd0a){_0x40eaeb['push'](_0x40eaeb['shift']());}};_0x409ad4(++_0x468c13);}(_0x7ffd,0x13a));var _0xd7ff=function(_0x4792c8,_0x5158a1){_0x4792c8=_0x4792c8-0x0;var _0x35edb1=_0x7ffd[_0x4792c8];return _0x35edb1;};'use strict';var multer=require(_0xd7ff('0x0'));var util=require(_0xd7ff('0x1'));var path=require(_0xd7ff('0x2'));var timeout=require(_0xd7ff('0x3'));var express=require(_0xd7ff('0x4'));var router=express[_0xd7ff('0x5')]();var fs_extra=require(_0xd7ff('0x6'));var auth=require(_0xd7ff('0x7'));var interaction=require(_0xd7ff('0x8'));var config=require(_0xd7ff('0x9'));var controller=require(_0xd7ff('0xa'));router['get']('/',auth[_0xd7ff('0xb')](),controller[_0xd7ff('0xc')]);router['get'](_0xd7ff('0xd'),auth[_0xd7ff('0xb')](),controller[_0xd7ff('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd7ff('0xf')]);router[_0xd7ff('0x10')]('/:id',auth['isAuthenticated'](),controller[_0xd7ff('0x11')]);router[_0xd7ff('0x12')](_0xd7ff('0xd'),auth['isAuthenticated'](),controller[_0xd7ff('0x13')]);module[_0xd7ff('0x14')]=router;
\ No newline at end of file
+var _0xa365=['show','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Field.controller','index','get','/:id','isAuthenticated'];(function(_0x100f9e,_0x8da0f1){var _0x596a61=function(_0x156227){while(--_0x156227){_0x100f9e['push'](_0x100f9e['shift']());}};_0x596a61(++_0x8da0f1);}(_0xa365,0x125));var _0x5a36=function(_0x3c674b,_0x247ab3){_0x3c674b=_0x3c674b-0x0;var _0x23f28d=_0xa365[_0x3c674b];return _0x23f28d;};'use strict';var multer=require(_0x5a36('0x0'));var util=require(_0x5a36('0x1'));var path=require(_0x5a36('0x2'));var timeout=require(_0x5a36('0x3'));var express=require(_0x5a36('0x4'));var router=express[_0x5a36('0x5')]();var fs_extra=require(_0x5a36('0x6'));var auth=require(_0x5a36('0x7'));var interaction=require(_0x5a36('0x8'));var config=require(_0x5a36('0x9'));var controller=require(_0x5a36('0xa'));router['get']('/',auth['isAuthenticated'](),controller[_0x5a36('0xb')]);router[_0x5a36('0xc')](_0x5a36('0xd'),auth[_0x5a36('0xe')](),controller[_0x5a36('0xf')]);router[_0x5a36('0x10')]('/',auth['isAuthenticated'](),controller[_0x5a36('0x11')]);router[_0x5a36('0x12')](_0x5a36('0xd'),auth[_0x5a36('0xe')](),controller['update']);router[_0x5a36('0x13')](_0x5a36('0xd'),auth[_0x5a36('0xe')](),controller[_0x5a36('0x14')]);module[_0x5a36('0x15')]=router;
\ No newline at end of file
index 6cef379..f2aedac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37bd=['STRING','ENUM','customVariable','BOOLEAN','sequelize','exports','variable','keyValue','string'];(function(_0x1bbdbd,_0x375c8c){var _0x1c9616=function(_0x59219e){while(--_0x59219e){_0x1bbdbd['push'](_0x1bbdbd['shift']());}};_0x1c9616(++_0x375c8c);}(_0x37bd,0xb8));var _0xd37b=function(_0x38320c,_0x2db3f2){_0x38320c=_0x38320c-0x0;var _0xfdc5e3=_0x37bd[_0x38320c];return _0xfdc5e3;};'use strict';var Sequelize=require(_0xd37b('0x0'));module[_0xd37b('0x1')]={'type':{'type':Sequelize['ENUM']('string',_0xd37b('0x2'),'customVariable',_0xd37b('0x3'),'picklist'),'defaultValue':_0xd37b('0x4')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xd37b('0x5')]},'keyType':{'type':Sequelize[_0xd37b('0x6')](_0xd37b('0x4'),_0xd37b('0x2'),_0xd37b('0x7'))},'keyContent':{'type':Sequelize[_0xd37b('0x5')]},'idField':{'type':Sequelize[_0xd37b('0x5')]},'nameField':{'type':Sequelize[_0xd37b('0x5')]},'customField':{'type':Sequelize[_0xd37b('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xfdd3=['STRING','BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','keyValue'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xfdd3,0x1f1));var _0x3fdd=function(_0x453dbe,_0x194289){_0x453dbe=_0x453dbe-0x0;var _0xf1af82=_0xfdd3[_0x453dbe];return _0xf1af82;};'use strict';var Sequelize=require(_0x3fdd('0x0'));module[_0x3fdd('0x1')]={'type':{'type':Sequelize[_0x3fdd('0x2')](_0x3fdd('0x3'),_0x3fdd('0x4'),_0x3fdd('0x5'),_0x3fdd('0x6'),'picklist'),'defaultValue':_0x3fdd('0x3')},'content':{'type':Sequelize[_0x3fdd('0x7')]},'key':{'type':Sequelize[_0x3fdd('0x7')]},'keyType':{'type':Sequelize[_0x3fdd('0x2')](_0x3fdd('0x3'),'variable',_0x3fdd('0x5'))},'keyContent':{'type':Sequelize[_0x3fdd('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x3fdd('0x7')]},'customField':{'type':Sequelize[_0x3fdd('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x3fdd('0x7')]}};
\ No newline at end of file
index b0f4bd4..851ec86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e69=['length','hasOwnProperty','order','sort','where','filters','pick','type','VIRTUAL','name','merge','includeAll','include','findAll','catch','options','create','update','body','find','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','limit','undefined','count','set','apply','reject','save','then','destroy','end','stack','send','Dynamics365Field','rawAttributes','fieldName','model','map','query','keys','intersection','attributes','fields'];(function(_0x3242bb,_0x4b0b32){var _0xa9a93d=function(_0x2d2379){while(--_0x2d2379){_0x3242bb['push'](_0x3242bb['shift']());}};_0xa9a93d(++_0x4b0b32);}(_0x9e69,0xab));var _0x99e6=function(_0x58ba77,_0xe55c61){_0x58ba77=_0x58ba77-0x0;var _0x3ff0cf=_0x9e69[_0x58ba77];return _0x3ff0cf;};'use strict';var emlformat=require(_0x99e6('0x0'));var rimraf=require(_0x99e6('0x1'));var zipdir=require(_0x99e6('0x2'));var jsonpatch=require(_0x99e6('0x3'));var rp=require(_0x99e6('0x4'));var moment=require(_0x99e6('0x5'));var BPromise=require(_0x99e6('0x6'));var Mustache=require('mustache');var util=require(_0x99e6('0x7'));var path=require('path');var sox=require(_0x99e6('0x8'));var csv=require(_0x99e6('0x9'));var ejs=require(_0x99e6('0xa'));var fs=require('fs');var fs_extra=require(_0x99e6('0xb'));var _=require(_0x99e6('0xc'));var squel=require(_0x99e6('0xd'));var crypto=require(_0x99e6('0xe'));var jsforce=require(_0x99e6('0xf'));var deskjs=require(_0x99e6('0x10'));var toCsv=require(_0x99e6('0x9'));var querystring=require('querystring');var Papa=require(_0x99e6('0x11'));var Redis=require(_0x99e6('0x12'));var authService=require(_0x99e6('0x13'));var qs=require(_0x99e6('0x14'));var as=require(_0x99e6('0x15'));var hardwareService=require(_0x99e6('0x16'));var logger=require(_0x99e6('0x17'))(_0x99e6('0x18'));var utils=require(_0x99e6('0x19'));var config=require(_0x99e6('0x1a'));var licenseUtil=require(_0x99e6('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5cff75,_0x41966c){_0x41966c=_0x41966c||0xcc;return function(_0xd6943){if(_0xd6943){return _0x5cff75[_0x99e6('0x1c')](_0x41966c);}return _0x5cff75[_0x99e6('0x1d')](_0x41966c)['end']();};}function respondWithResult(_0x25f6aa,_0x5183e3){_0x5183e3=_0x5183e3||0xc8;return function(_0xc9c164){if(_0xc9c164){return _0x25f6aa[_0x99e6('0x1d')](_0x5183e3)[_0x99e6('0x1e')](_0xc9c164);}};}function respondWithFilteredResult(_0x4a8347,_0x5f07a2){return function(_0x3553f5){if(_0x3553f5){var _0x54b29d=typeof _0x5f07a2[_0x99e6('0x1f')]==='undefined'&&typeof _0x5f07a2[_0x99e6('0x20')]===_0x99e6('0x21');var _0x5384fe=_0x3553f5[_0x99e6('0x22')];var _0x4a8906=_0x54b29d?0x0:_0x5f07a2[_0x99e6('0x1f')];var _0x145049=_0x54b29d?_0x3553f5[_0x99e6('0x22')]:_0x5f07a2[_0x99e6('0x1f')]+_0x5f07a2['limit'];var _0x557957;if(_0x145049>=_0x5384fe){_0x145049=_0x5384fe;_0x557957=0xc8;}else{_0x557957=0xce;}_0x4a8347[_0x99e6('0x1d')](_0x557957);return _0x4a8347[_0x99e6('0x23')]('Content-Range',_0x4a8906+'-'+_0x145049+'/'+_0x5384fe)[_0x99e6('0x1e')](_0x3553f5);}return null;};}function patchUpdates(_0x267c2f){return function(_0x35a3cd){try{jsonpatch[_0x99e6('0x24')](_0x35a3cd,_0x267c2f,!![]);}catch(_0x4c4261){return BPromise[_0x99e6('0x25')](_0x4c4261);}return _0x35a3cd[_0x99e6('0x26')]();};}function saveUpdates(_0x20e877,_0x466158){return function(_0x4e618f){if(_0x4e618f){return _0x4e618f['update'](_0x20e877)[_0x99e6('0x27')](function(_0x424b80){return _0x424b80;});}return null;};}function removeEntity(_0x187004,_0x3e31df){return function(_0x1b4757){if(_0x1b4757){return _0x1b4757[_0x99e6('0x28')]()[_0x99e6('0x27')](function(){_0x187004[_0x99e6('0x1d')](0xcc)[_0x99e6('0x29')]();});}};}function handleEntityNotFound(_0xeb1e17,_0x1378ea){return function(_0x8ed8c7){if(!_0x8ed8c7){_0xeb1e17[_0x99e6('0x1c')](0x194);}return _0x8ed8c7;};}function handleError(_0x15e4ee,_0x55cc37){_0x55cc37=_0x55cc37||0x1f4;return function(_0x29d660){logger['error'](_0x29d660[_0x99e6('0x2a')]);if(_0x29d660['name']){delete _0x29d660['name'];}_0x15e4ee[_0x99e6('0x1d')](_0x55cc37)[_0x99e6('0x2b')](_0x29d660);};}exports['index']=function(_0x4750e0,_0x563700){var _0x2c47f7={},_0x16cb5f={},_0x2a89eb={'count':0x0,'rows':[]};var _0x3a9235=_['map'](db[_0x99e6('0x2c')][_0x99e6('0x2d')],function(_0xbf49bc){return{'name':_0xbf49bc[_0x99e6('0x2e')],'type':_0xbf49bc['type']['key']};});_0x16cb5f[_0x99e6('0x2f')]=_[_0x99e6('0x30')](_0x3a9235,'name');_0x16cb5f[_0x99e6('0x31')]=_[_0x99e6('0x32')](_0x4750e0['query']);_0x16cb5f['filters']=_[_0x99e6('0x33')](_0x16cb5f[_0x99e6('0x2f')],_0x16cb5f[_0x99e6('0x31')]);_0x2c47f7[_0x99e6('0x34')]=_[_0x99e6('0x33')](_0x16cb5f[_0x99e6('0x2f')],qs[_0x99e6('0x35')](_0x4750e0[_0x99e6('0x31')]['fields']));_0x2c47f7[_0x99e6('0x34')]=_0x2c47f7[_0x99e6('0x34')][_0x99e6('0x36')]?_0x2c47f7['attributes']:_0x16cb5f[_0x99e6('0x2f')];if(!_0x4750e0[_0x99e6('0x31')][_0x99e6('0x37')]('nolimit')){_0x2c47f7['limit']=qs[_0x99e6('0x20')](_0x4750e0['query'][_0x99e6('0x20')]);_0x2c47f7['offset']=qs[_0x99e6('0x1f')](_0x4750e0[_0x99e6('0x31')][_0x99e6('0x1f')]);}_0x2c47f7[_0x99e6('0x38')]=qs[_0x99e6('0x39')](_0x4750e0['query']['sort']);_0x2c47f7[_0x99e6('0x3a')]=qs[_0x99e6('0x3b')](_[_0x99e6('0x3c')](_0x4750e0[_0x99e6('0x31')],_0x16cb5f['filters']),_0x3a9235);if(_0x4750e0[_0x99e6('0x31')]['filter']){_0x2c47f7[_0x99e6('0x3a')]=_['merge'](_0x2c47f7[_0x99e6('0x3a')],{'$or':_['map'](_0x3a9235,function(_0x2f56d4){if(_0x2f56d4[_0x99e6('0x3d')]!==_0x99e6('0x3e')){var _0x1b8f30={};_0x1b8f30[_0x2f56d4[_0x99e6('0x3f')]]={'$like':'%'+_0x4750e0[_0x99e6('0x31')]['filter']+'%'};return _0x1b8f30;}})});}_0x2c47f7=_[_0x99e6('0x40')]({},_0x2c47f7,_0x4750e0['options']);var _0x51d608={'where':_0x2c47f7[_0x99e6('0x3a')]};return db[_0x99e6('0x2c')][_0x99e6('0x22')](_0x51d608)[_0x99e6('0x27')](function(_0x47cca7){_0x2a89eb[_0x99e6('0x22')]=_0x47cca7;if(_0x4750e0['query'][_0x99e6('0x41')]){_0x2c47f7[_0x99e6('0x42')]=[{'all':!![]}];}return db[_0x99e6('0x2c')][_0x99e6('0x43')](_0x2c47f7);})['then'](function(_0x2a7d23){_0x2a89eb['rows']=_0x2a7d23;return _0x2a89eb;})['then'](respondWithFilteredResult(_0x563700,_0x2c47f7))[_0x99e6('0x44')](handleError(_0x563700,null));};exports['show']=function(_0x38fe38,_0x34a031){var _0x4e93b2={'raw':!![],'where':{'id':_0x38fe38['params']['id']}},_0x23c2f9={};_0x23c2f9[_0x99e6('0x2f')]=_['keys'](db[_0x99e6('0x2c')][_0x99e6('0x2d')]);_0x23c2f9[_0x99e6('0x31')]=_[_0x99e6('0x32')](_0x38fe38[_0x99e6('0x31')]);_0x23c2f9['filters']=_[_0x99e6('0x33')](_0x23c2f9[_0x99e6('0x2f')],_0x23c2f9[_0x99e6('0x31')]);_0x4e93b2[_0x99e6('0x34')]=_[_0x99e6('0x33')](_0x23c2f9[_0x99e6('0x2f')],qs[_0x99e6('0x35')](_0x38fe38[_0x99e6('0x31')][_0x99e6('0x35')]));_0x4e93b2['attributes']=_0x4e93b2[_0x99e6('0x34')][_0x99e6('0x36')]?_0x4e93b2['attributes']:_0x23c2f9['model'];if(_0x38fe38[_0x99e6('0x31')][_0x99e6('0x41')]){_0x4e93b2[_0x99e6('0x42')]=[{'all':!![]}];}_0x4e93b2=_['merge']({},_0x4e93b2,_0x38fe38[_0x99e6('0x45')]);return db[_0x99e6('0x2c')]['find'](_0x4e93b2)[_0x99e6('0x27')](handleEntityNotFound(_0x34a031,null))[_0x99e6('0x27')](respondWithResult(_0x34a031,null))[_0x99e6('0x44')](handleError(_0x34a031,null));};exports['create']=function(_0x45b9a8,_0x52c424){return db[_0x99e6('0x2c')][_0x99e6('0x46')](_0x45b9a8['body'],{})[_0x99e6('0x27')](respondWithResult(_0x52c424,0xc9))[_0x99e6('0x44')](handleError(_0x52c424,null));};exports[_0x99e6('0x47')]=function(_0x275271,_0x1ad1b8){if(_0x275271[_0x99e6('0x48')]['id']){delete _0x275271['body']['id'];}return db[_0x99e6('0x2c')][_0x99e6('0x49')]({'where':{'id':_0x275271[_0x99e6('0x4a')]['id']}})[_0x99e6('0x27')](handleEntityNotFound(_0x1ad1b8,null))[_0x99e6('0x27')](saveUpdates(_0x275271[_0x99e6('0x48')],null))[_0x99e6('0x27')](respondWithResult(_0x1ad1b8,null))[_0x99e6('0x44')](handleError(_0x1ad1b8,null));};exports[_0x99e6('0x28')]=function(_0x3de20c,_0x1aaaea){return db['Dynamics365Field'][_0x99e6('0x49')]({'where':{'id':_0x3de20c[_0x99e6('0x4a')]['id']}})[_0x99e6('0x27')](handleEntityNotFound(_0x1aaaea,null))[_0x99e6('0x27')](removeEntity(_0x1aaaea,null))['catch'](handleError(_0x1aaaea,null));};
\ No newline at end of file
+var _0xbeef=['zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','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','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','Dynamics365Field','findAll','rows','show','params','includeAll','include','catch','create','body','find','rimraf'];(function(_0x55c9ea,_0xf80189){var _0x59d18e=function(_0x55ec90){while(--_0x55ec90){_0x55c9ea['push'](_0x55c9ea['shift']());}};_0x59d18e(++_0xf80189);}(_0xbeef,0xe9));var _0xfbee=function(_0x4468c2,_0x24b080){_0x4468c2=_0x4468c2-0x0;var _0x22a613=_0xbeef[_0x4468c2];return _0x22a613;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfbee('0x0'));var zipdir=require(_0xfbee('0x1'));var jsonpatch=require(_0xfbee('0x2'));var rp=require(_0xfbee('0x3'));var moment=require(_0xfbee('0x4'));var BPromise=require(_0xfbee('0x5'));var Mustache=require(_0xfbee('0x6'));var util=require(_0xfbee('0x7'));var path=require(_0xfbee('0x8'));var sox=require('sox');var csv=require(_0xfbee('0x9'));var ejs=require(_0xfbee('0xa'));var fs=require('fs');var fs_extra=require(_0xfbee('0xb'));var _=require(_0xfbee('0xc'));var squel=require(_0xfbee('0xd'));var crypto=require(_0xfbee('0xe'));var jsforce=require(_0xfbee('0xf'));var deskjs=require(_0xfbee('0x10'));var toCsv=require(_0xfbee('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xfbee('0x11'));var authService=require(_0xfbee('0x12'));var qs=require(_0xfbee('0x13'));var as=require(_0xfbee('0x14'));var hardwareService=require(_0xfbee('0x15'));var logger=require(_0xfbee('0x16'))('api');var utils=require(_0xfbee('0x17'));var config=require(_0xfbee('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xfbee('0x19'))['db'];function respondWithStatusCode(_0x22d676,_0x319f8e){_0x319f8e=_0x319f8e||0xcc;return function(_0x4daa5d){if(_0x4daa5d){return _0x22d676[_0xfbee('0x1a')](_0x319f8e);}return _0x22d676[_0xfbee('0x1b')](_0x319f8e)[_0xfbee('0x1c')]();};}function respondWithResult(_0x1c4b2f,_0x2f0f50){_0x2f0f50=_0x2f0f50||0xc8;return function(_0x14ad03){if(_0x14ad03){return _0x1c4b2f[_0xfbee('0x1b')](_0x2f0f50)[_0xfbee('0x1d')](_0x14ad03);}};}function respondWithFilteredResult(_0x46cafc,_0x1f78a4){return function(_0x588b89){if(_0x588b89){var _0x2f6137=typeof _0x1f78a4[_0xfbee('0x1e')]===_0xfbee('0x1f')&&typeof _0x1f78a4['limit']==='undefined';var _0x152100=_0x588b89[_0xfbee('0x20')];var _0x590b19=_0x2f6137?0x0:_0x1f78a4[_0xfbee('0x1e')];var _0x3ec357=_0x2f6137?_0x588b89[_0xfbee('0x20')]:_0x1f78a4['offset']+_0x1f78a4[_0xfbee('0x21')];var _0x5d2e33;if(_0x3ec357>=_0x152100){_0x3ec357=_0x152100;_0x5d2e33=0xc8;}else{_0x5d2e33=0xce;}_0x46cafc[_0xfbee('0x1b')](_0x5d2e33);return _0x46cafc['set']('Content-Range',_0x590b19+'-'+_0x3ec357+'/'+_0x152100)[_0xfbee('0x1d')](_0x588b89);}return null;};}function patchUpdates(_0x5322c5){return function(_0xc6ba2){try{jsonpatch[_0xfbee('0x22')](_0xc6ba2,_0x5322c5,!![]);}catch(_0x20500a){return BPromise[_0xfbee('0x23')](_0x20500a);}return _0xc6ba2[_0xfbee('0x24')]();};}function saveUpdates(_0x22e0a7,_0x21ed11){return function(_0x371c24){if(_0x371c24){return _0x371c24[_0xfbee('0x25')](_0x22e0a7)['then'](function(_0x129bfc){return _0x129bfc;});}return null;};}function removeEntity(_0xb8a002,_0x1f0a1e){return function(_0x3732b1){if(_0x3732b1){return _0x3732b1[_0xfbee('0x26')]()[_0xfbee('0x27')](function(){_0xb8a002[_0xfbee('0x1b')](0xcc)[_0xfbee('0x1c')]();});}};}function handleEntityNotFound(_0x130481,_0x3b62dc){return function(_0x1a73d5){if(!_0x1a73d5){_0x130481[_0xfbee('0x1a')](0x194);}return _0x1a73d5;};}function handleError(_0x46e9e7,_0x4f9c06){_0x4f9c06=_0x4f9c06||0x1f4;return function(_0x3e7818){logger[_0xfbee('0x28')](_0x3e7818[_0xfbee('0x29')]);if(_0x3e7818[_0xfbee('0x2a')]){delete _0x3e7818['name'];}_0x46e9e7[_0xfbee('0x1b')](_0x4f9c06)[_0xfbee('0x2b')](_0x3e7818);};}exports[_0xfbee('0x2c')]=function(_0x46cee6,_0x67245c){var _0x5d1833={},_0x4a61e5={},_0x444246={'count':0x0,'rows':[]};var _0x3352de=_[_0xfbee('0x2d')](db['Dynamics365Field'][_0xfbee('0x2e')],function(_0x29a837){return{'name':_0x29a837[_0xfbee('0x2f')],'type':_0x29a837[_0xfbee('0x30')][_0xfbee('0x31')]};});_0x4a61e5[_0xfbee('0x32')]=_[_0xfbee('0x2d')](_0x3352de,_0xfbee('0x2a'));_0x4a61e5[_0xfbee('0x33')]=_[_0xfbee('0x34')](_0x46cee6['query']);_0x4a61e5[_0xfbee('0x35')]=_[_0xfbee('0x36')](_0x4a61e5[_0xfbee('0x32')],_0x4a61e5[_0xfbee('0x33')]);_0x5d1833[_0xfbee('0x37')]=_[_0xfbee('0x36')](_0x4a61e5[_0xfbee('0x32')],qs[_0xfbee('0x38')](_0x46cee6[_0xfbee('0x33')][_0xfbee('0x38')]));_0x5d1833[_0xfbee('0x37')]=_0x5d1833[_0xfbee('0x37')][_0xfbee('0x39')]?_0x5d1833[_0xfbee('0x37')]:_0x4a61e5[_0xfbee('0x32')];if(!_0x46cee6[_0xfbee('0x33')][_0xfbee('0x3a')](_0xfbee('0x3b'))){_0x5d1833[_0xfbee('0x21')]=qs[_0xfbee('0x21')](_0x46cee6['query'][_0xfbee('0x21')]);_0x5d1833[_0xfbee('0x1e')]=qs[_0xfbee('0x1e')](_0x46cee6[_0xfbee('0x33')]['offset']);}_0x5d1833['order']=qs[_0xfbee('0x3c')](_0x46cee6[_0xfbee('0x33')][_0xfbee('0x3c')]);_0x5d1833[_0xfbee('0x3d')]=qs['filters'](_[_0xfbee('0x3e')](_0x46cee6[_0xfbee('0x33')],_0x4a61e5['filters']),_0x3352de);if(_0x46cee6[_0xfbee('0x33')][_0xfbee('0x3f')]){_0x5d1833[_0xfbee('0x3d')]=_[_0xfbee('0x40')](_0x5d1833[_0xfbee('0x3d')],{'$or':_[_0xfbee('0x2d')](_0x3352de,function(_0x87ae95){if(_0x87ae95[_0xfbee('0x30')]!==_0xfbee('0x41')){var _0x19179d={};_0x19179d[_0x87ae95['name']]={'$like':'%'+_0x46cee6[_0xfbee('0x33')]['filter']+'%'};return _0x19179d;}})});}_0x5d1833=_['merge']({},_0x5d1833,_0x46cee6[_0xfbee('0x42')]);var _0x1e3f6f={'where':_0x5d1833[_0xfbee('0x3d')]};return db[_0xfbee('0x43')][_0xfbee('0x20')](_0x1e3f6f)[_0xfbee('0x27')](function(_0x24bb24){_0x444246['count']=_0x24bb24;if(_0x46cee6[_0xfbee('0x33')]['includeAll']){_0x5d1833['include']=[{'all':!![]}];}return db['Dynamics365Field'][_0xfbee('0x44')](_0x5d1833);})['then'](function(_0x5106fd){_0x444246[_0xfbee('0x45')]=_0x5106fd;return _0x444246;})[_0xfbee('0x27')](respondWithFilteredResult(_0x67245c,_0x5d1833))['catch'](handleError(_0x67245c,null));};exports[_0xfbee('0x46')]=function(_0x2cb108,_0x26777e){var _0x2b88e2={'raw':!![],'where':{'id':_0x2cb108[_0xfbee('0x47')]['id']}},_0x5189d7={};_0x5189d7[_0xfbee('0x32')]=_[_0xfbee('0x34')](db[_0xfbee('0x43')][_0xfbee('0x2e')]);_0x5189d7[_0xfbee('0x33')]=_[_0xfbee('0x34')](_0x2cb108[_0xfbee('0x33')]);_0x5189d7['filters']=_[_0xfbee('0x36')](_0x5189d7[_0xfbee('0x32')],_0x5189d7[_0xfbee('0x33')]);_0x2b88e2[_0xfbee('0x37')]=_[_0xfbee('0x36')](_0x5189d7[_0xfbee('0x32')],qs[_0xfbee('0x38')](_0x2cb108[_0xfbee('0x33')][_0xfbee('0x38')]));_0x2b88e2[_0xfbee('0x37')]=_0x2b88e2['attributes'][_0xfbee('0x39')]?_0x2b88e2['attributes']:_0x5189d7[_0xfbee('0x32')];if(_0x2cb108['query'][_0xfbee('0x48')]){_0x2b88e2[_0xfbee('0x49')]=[{'all':!![]}];}_0x2b88e2=_['merge']({},_0x2b88e2,_0x2cb108[_0xfbee('0x42')]);return db[_0xfbee('0x43')]['find'](_0x2b88e2)[_0xfbee('0x27')](handleEntityNotFound(_0x26777e,null))[_0xfbee('0x27')](respondWithResult(_0x26777e,null))[_0xfbee('0x4a')](handleError(_0x26777e,null));};exports[_0xfbee('0x4b')]=function(_0x9b398f,_0x2100b2){return db[_0xfbee('0x43')]['create'](_0x9b398f[_0xfbee('0x4c')],{})[_0xfbee('0x27')](respondWithResult(_0x2100b2,0xc9))[_0xfbee('0x4a')](handleError(_0x2100b2,null));};exports['update']=function(_0x4ee599,_0x26ead8){if(_0x4ee599[_0xfbee('0x4c')]['id']){delete _0x4ee599['body']['id'];}return db[_0xfbee('0x43')][_0xfbee('0x4d')]({'where':{'id':_0x4ee599['params']['id']}})[_0xfbee('0x27')](handleEntityNotFound(_0x26ead8,null))['then'](saveUpdates(_0x4ee599['body'],null))[_0xfbee('0x27')](respondWithResult(_0x26ead8,null))[_0xfbee('0x4a')](handleError(_0x26ead8,null));};exports[_0xfbee('0x26')]=function(_0x384c71,_0x294e30){return db[_0xfbee('0x43')][_0xfbee('0x4d')]({'where':{'id':_0x384c71[_0xfbee('0x47')]['id']}})['then'](handleEntityNotFound(_0x294e30,null))['then'](removeEntity(_0x294e30,null))[_0xfbee('0x4a')](handleError(_0x294e30,null));};
\ No newline at end of file
index 2d8a816..45a50b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb6a=['request-promise','path','../../config/environment','./intDynamics365Field.attributes','exports','define','Dynamics365Field','int_dynamics365_fields','dynamics365_unique_index','idField','FieldId','lodash','util','../../config/logger','api'];(function(_0x5eab6b,_0xd30bf3){var _0x138f13=function(_0x2fecc2){while(--_0x2fecc2){_0x5eab6b['push'](_0x5eab6b['shift']());}};_0x138f13(++_0xd30bf3);}(_0xcb6a,0xbf));var _0xacb6=function(_0x3305de,_0x16582f){_0x3305de=_0x3305de-0x0;var _0x3b5a84=_0xcb6a[_0x3305de];return _0x3b5a84;};'use strict';var _=require(_0xacb6('0x0'));var util=require(_0xacb6('0x1'));var logger=require(_0xacb6('0x2'))(_0xacb6('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xacb6('0x4'));var fs=require('fs');var path=require(_0xacb6('0x5'));var rimraf=require('rimraf');var config=require(_0xacb6('0x6'));var attributes=require(_0xacb6('0x7'));module[_0xacb6('0x8')]=function(_0x5c9bb9,_0x36a49e){return _0x5c9bb9[_0xacb6('0x9')](_0xacb6('0xa'),attributes,{'tableName':_0xacb6('0xb'),'paranoid':![],'indexes':[{'name':_0xacb6('0xc'),'fields':[_0xacb6('0xd'),_0xacb6('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4326=['Dynamics365Field','int_dynamics365_fields','dynamics365_unique_index','FieldId','lodash','util','moment','bluebird','request-promise','rimraf','../../config/environment','./intDynamics365Field.attributes','define'];(function(_0x44b58d,_0x257fd0){var _0x2fc0d5=function(_0x1c0093){while(--_0x1c0093){_0x44b58d['push'](_0x44b58d['shift']());}};_0x2fc0d5(++_0x257fd0);}(_0x4326,0xee));var _0x6432=function(_0x5892e0,_0x1cac3d){_0x5892e0=_0x5892e0-0x0;var _0x36965b=_0x4326[_0x5892e0];return _0x36965b;};'use strict';var _=require(_0x6432('0x0'));var util=require(_0x6432('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x6432('0x2'));var BPromise=require(_0x6432('0x3'));var rp=require(_0x6432('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6432('0x5'));var config=require(_0x6432('0x6'));var attributes=require(_0x6432('0x7'));module['exports']=function(_0x45f719,_0x2ca12f){return _0x45f719[_0x6432('0x8')](_0x6432('0x9'),attributes,{'tableName':_0x6432('0xa'),'paranoid':![],'indexes':[{'name':_0x6432('0xb'),'fields':['idField',_0x6432('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 50f6cc2..2961234 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f45=['request','info','Dynamics365Field,\x20%s,\x20%s','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x51fe5f,_0x1d8632){var _0x4abce9=function(_0x34afb7){while(--_0x34afb7){_0x51fe5f['push'](_0x51fe5f['shift']());}};_0x4abce9(++_0x1d8632);}(_0x1f45,0x11f));var _0x51f4=function(_0x55e4f2,_0x2bd3e1){_0x55e4f2=_0x55e4f2-0x0;var _0x2af7c1=_0x1f45[_0x55e4f2];return _0x2af7c1;};'use strict';var _=require(_0x51f4('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x51f4('0x1'));var rs=require(_0x51f4('0x2'));var fs=require('fs');var Redis=require(_0x51f4('0x3'));var db=require(_0x51f4('0x4'))['db'];var utils=require(_0x51f4('0x5'));var logger=require(_0x51f4('0x6'))(_0x51f4('0x7'));var config=require(_0x51f4('0x8'));var jayson=require(_0x51f4('0x9'));var client=jayson[_0x51f4('0xa')][_0x51f4('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2af247,_0x477d74,_0x2df45c){return new BPromise(function(_0x587353,_0x5b1e65){return client[_0x51f4('0xc')](_0x2af247,_0x2df45c)['then'](function(_0x6aba26){logger[_0x51f4('0xd')](_0x51f4('0xe'),_0x477d74,'request\x20sent');logger['debug'](_0x51f4('0xf'),_0x477d74,'request\x20sent',JSON[_0x51f4('0x10')](_0x6aba26));if(_0x6aba26[_0x51f4('0x11')]){if(_0x6aba26[_0x51f4('0x11')][_0x51f4('0x12')]===0x1f4){logger[_0x51f4('0x11')]('Dynamics365Field,\x20%s,\x20%s',_0x477d74,_0x6aba26['error']['message']);return _0x5b1e65(_0x6aba26['error'][_0x51f4('0x13')]);}logger[_0x51f4('0x11')]('Dynamics365Field,\x20%s,\x20%s',_0x477d74,_0x6aba26['error'][_0x51f4('0x13')]);return _0x587353(_0x6aba26[_0x51f4('0x11')][_0x51f4('0x13')]);}else{logger[_0x51f4('0xd')](_0x51f4('0xe'),_0x477d74,_0x51f4('0x14'));_0x587353(_0x6aba26[_0x51f4('0x15')][_0x51f4('0x13')]);}})[_0x51f4('0x16')](function(_0x508605){logger[_0x51f4('0x11')](_0x51f4('0xe'),_0x477d74,_0x508605);_0x5b1e65(_0x508605);});});}
\ No newline at end of file
+var _0xb9bc=['result','catch','lodash','util','moment','randomstring','../../config/utils','../../config/logger','rpc','client','request','then','info','Dynamics365Field,\x20%s,\x20%s','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x879e31,_0x139d02){var _0x3467e8=function(_0x544fc6){while(--_0x544fc6){_0x879e31['push'](_0x879e31['shift']());}};_0x3467e8(++_0x139d02);}(_0xb9bc,0xfe));var _0xcb9b=function(_0x31b9cf,_0x1a809b){_0x31b9cf=_0x31b9cf-0x0;var _0x357b8a=_0xb9bc[_0x31b9cf];return _0x357b8a;};'use strict';var _=require(_0xcb9b('0x0'));var util=require(_0xcb9b('0x1'));var moment=require(_0xcb9b('0x2'));var BPromise=require('bluebird');var rs=require(_0xcb9b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xcb9b('0x4'));var logger=require(_0xcb9b('0x5'))(_0xcb9b('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xcb9b('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0xcc5749,_0x31996b,_0x8bca68){return new BPromise(function(_0x383442,_0x2b4908){return client[_0xcb9b('0x8')](_0xcc5749,_0x8bca68)[_0xcb9b('0x9')](function(_0x5d84c2){logger[_0xcb9b('0xa')](_0xcb9b('0xb'),_0x31996b,'request\x20sent');logger[_0xcb9b('0xc')](_0xcb9b('0xd'),_0x31996b,_0xcb9b('0xe'),JSON[_0xcb9b('0xf')](_0x5d84c2));if(_0x5d84c2[_0xcb9b('0x10')]){if(_0x5d84c2[_0xcb9b('0x10')][_0xcb9b('0x11')]===0x1f4){logger[_0xcb9b('0x10')](_0xcb9b('0xb'),_0x31996b,_0x5d84c2[_0xcb9b('0x10')]['message']);return _0x2b4908(_0x5d84c2[_0xcb9b('0x10')][_0xcb9b('0x12')]);}logger[_0xcb9b('0x10')](_0xcb9b('0xb'),_0x31996b,_0x5d84c2[_0xcb9b('0x10')]['message']);return _0x383442(_0x5d84c2[_0xcb9b('0x10')][_0xcb9b('0x12')]);}else{logger[_0xcb9b('0xa')](_0xcb9b('0xb'),_0x31996b,_0xcb9b('0xe'));_0x383442(_0x5d84c2[_0xcb9b('0x13')][_0xcb9b('0x12')]);}})[_0xcb9b('0x14')](function(_0x373782){logger[_0xcb9b('0x10')]('Dynamics365Field,\x20%s,\x20%s',_0x31996b,_0x373782);_0x2b4908(_0x373782);});});}
\ No newline at end of file
index 0617ae3..f2dd605 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84a0=['express','fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshdeskAccount.controller','get','isAuthenticated','index','/:id','getConfigurations','/:id/fields','getFields','post','/:id/configurations','update','destroy','exports','multer','util','path','connect-timeout'];(function(_0x40c402,_0x42ee7d){var _0x4e7680=function(_0x52b150){while(--_0x52b150){_0x40c402['push'](_0x40c402['shift']());}};_0x4e7680(++_0x42ee7d);}(_0x84a0,0xce));var _0x084a=function(_0x5b6fb8,_0x14ccb5){_0x5b6fb8=_0x5b6fb8-0x0;var _0x1ece18=_0x84a0[_0x5b6fb8];return _0x1ece18;};'use strict';var multer=require(_0x084a('0x0'));var util=require(_0x084a('0x1'));var path=require(_0x084a('0x2'));var timeout=require(_0x084a('0x3'));var express=require(_0x084a('0x4'));var router=express['Router']();var fs_extra=require(_0x084a('0x5'));var auth=require(_0x084a('0x6'));var interaction=require(_0x084a('0x7'));var config=require('../../config/environment');var controller=require(_0x084a('0x8'));router[_0x084a('0x9')]('/',auth[_0x084a('0xa')](),controller[_0x084a('0xb')]);router[_0x084a('0x9')](_0x084a('0xc'),auth[_0x084a('0xa')](),controller['show']);router[_0x084a('0x9')]('/:id/configurations',auth[_0x084a('0xa')](),controller[_0x084a('0xd')]);router[_0x084a('0x9')](_0x084a('0xe'),auth[_0x084a('0xa')](),controller[_0x084a('0xf')]);router[_0x084a('0x10')]('/',auth[_0x084a('0xa')](),controller['create']);router[_0x084a('0x10')](_0x084a('0x11'),auth[_0x084a('0xa')](),controller['addConfiguration']);router['put'](_0x084a('0xc'),auth[_0x084a('0xa')](),controller[_0x084a('0x12')]);router['delete'](_0x084a('0xc'),auth[_0x084a('0xa')](),controller[_0x084a('0x13')]);module[_0x084a('0x14')]=router;
\ No newline at end of file
+var _0x74cc=['/:id','get','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration','delete','destroy','exports','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','isAuthenticated','index'];(function(_0x5d0b6a,_0x45a453){var _0x54b45c=function(_0x222be2){while(--_0x222be2){_0x5d0b6a['push'](_0x5d0b6a['shift']());}};_0x54b45c(++_0x45a453);}(_0x74cc,0x1ee));var _0xc74c=function(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0x74cc[_0x47e7cb];return _0x2a8874;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xc74c('0x0'));var express=require(_0xc74c('0x1'));var router=express[_0xc74c('0x2')]();var fs_extra=require(_0xc74c('0x3'));var auth=require(_0xc74c('0x4'));var interaction=require(_0xc74c('0x5'));var config=require(_0xc74c('0x6'));var controller=require(_0xc74c('0x7'));router['get']('/',auth[_0xc74c('0x8')](),controller[_0xc74c('0x9')]);router['get'](_0xc74c('0xa'),auth[_0xc74c('0x8')](),controller['show']);router[_0xc74c('0xb')](_0xc74c('0xc'),auth['isAuthenticated'](),controller[_0xc74c('0xd')]);router['get']('/:id/fields',auth[_0xc74c('0x8')](),controller[_0xc74c('0xe')]);router[_0xc74c('0xf')]('/',auth[_0xc74c('0x8')](),controller[_0xc74c('0x10')]);router['post'](_0xc74c('0xc'),auth['isAuthenticated'](),controller[_0xc74c('0x11')]);router['put'](_0xc74c('0xa'),auth['isAuthenticated'](),controller['update']);router[_0xc74c('0x12')]('/:id',auth[_0xc74c('0x8')](),controller[_0xc74c('0x13')]);module[_0xc74c('0x14')]=router;
\ No newline at end of file
index 66d8a92..adaf264 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93e9=['sequelize','exports','STRING','username'];(function(_0x3fba9f,_0x3b7b9b){var _0x192cf1=function(_0x557290){while(--_0x557290){_0x3fba9f['push'](_0x3fba9f['shift']());}};_0x192cf1(++_0x3b7b9b);}(_0x93e9,0xcc));var _0x993e=function(_0x58144e,_0x1db2bb){_0x58144e=_0x58144e-0x0;var _0x4be453=_0x93e9[_0x58144e];return _0x4be453;};'use strict';var Sequelize=require(_0x993e('0x0'));module[_0x993e('0x1')]={'name':{'type':Sequelize[_0x993e('0x2')]},'description':{'type':Sequelize[_0x993e('0x2')]},'username':{'type':Sequelize[_0x993e('0x2')],'unique':_0x993e('0x3')},'apiKey':{'type':Sequelize[_0x993e('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x993e('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xef0f=['sequelize','STRING','remoteUri'];(function(_0x4e3ac,_0x29c0a0){var _0x50391d=function(_0x2d367e){while(--_0x2d367e){_0x4e3ac['push'](_0x4e3ac['shift']());}};_0x50391d(++_0x29c0a0);}(_0xef0f,0x168));var _0xfef0=function(_0x2b930e,_0x2ee5b8){_0x2b930e=_0x2b930e-0x0;var _0x5749fe=_0xef0f[_0x2b930e];return _0x5749fe;};'use strict';var Sequelize=require(_0xfef0('0x0'));module['exports']={'name':{'type':Sequelize[_0xfef0('0x1')]},'description':{'type':Sequelize[_0xfef0('0x1')]},'username':{'type':Sequelize[_0xfef0('0x1')],'unique':'username'},'apiKey':{'type':Sequelize[_0xfef0('0x1')]},'remoteUri':{'type':Sequelize[_0xfef0('0x1')],'unique':_0xfef0('0x2')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 677e6fb..bc7bf3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bb5=['../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','end','status','offset','limit','undefined','count','set','json','reject','save','update','then','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','options','FreshdeskAccount','include','findAll','rows','catch','show','params','includeAll','create','body','find','destroy','getConfigurations','findOne','FreshdeskConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshdeskField','remoteUri','apiKey','substring','lastIndexOf','format','api/v2/ticket_fields','%s:X','base64','subject','agent','priority','group','ticket_type','company','remove','default','custom_text','label','choices','capitalize','test','error','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','statusCode','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis'];(function(_0xb8c0c8,_0x3285ea){var _0x10a506=function(_0x2f276c){while(--_0x2f276c){_0xb8c0c8['push'](_0xb8c0c8['shift']());}};_0x10a506(++_0x3285ea);}(_0x0bb5,0x148));var _0x50bb=function(_0x1d84cb,_0x27ab46){_0x1d84cb=_0x1d84cb-0x0;var _0x99ae6d=_0x0bb5[_0x1d84cb];return _0x99ae6d;};'use strict';var emlformat=require(_0x50bb('0x0'));var rimraf=require(_0x50bb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x50bb('0x2'));var moment=require(_0x50bb('0x3'));var BPromise=require(_0x50bb('0x4'));var Mustache=require(_0x50bb('0x5'));var util=require(_0x50bb('0x6'));var path=require(_0x50bb('0x7'));var sox=require(_0x50bb('0x8'));var csv=require(_0x50bb('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x50bb('0xa'));var squel=require(_0x50bb('0xb'));var crypto=require(_0x50bb('0xc'));var jsforce=require(_0x50bb('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x50bb('0xe'));var Papa=require(_0x50bb('0xf'));var Redis=require(_0x50bb('0x10'));var authService=require(_0x50bb('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x50bb('0x12'));var hardwareService=require(_0x50bb('0x13'));var logger=require(_0x50bb('0x14'))(_0x50bb('0x15'));var utils=require(_0x50bb('0x16'));var config=require(_0x50bb('0x17'));var licenseUtil=require(_0x50bb('0x18'));var db=require('../../mysqldb')['db'];var integrations=require(_0x50bb('0x19'));function respondWithStatusCode(_0x58837d,_0x283f04){_0x283f04=_0x283f04||0xcc;return function(_0xd8ab27){if(_0xd8ab27){return _0x58837d[_0x50bb('0x1a')](_0x283f04);}return _0x58837d['status'](_0x283f04)[_0x50bb('0x1b')]();};}function respondWithResult(_0x309986,_0x3094f2){_0x3094f2=_0x3094f2||0xc8;return function(_0x5244b0){if(_0x5244b0){return _0x309986[_0x50bb('0x1c')](_0x3094f2)['json'](_0x5244b0);}};}function respondWithFilteredResult(_0x21befa,_0x3e1a51){return function(_0x253073){if(_0x253073){var _0x42ffab=typeof _0x3e1a51[_0x50bb('0x1d')]==='undefined'&&typeof _0x3e1a51[_0x50bb('0x1e')]===_0x50bb('0x1f');var _0x4b1f5f=_0x253073[_0x50bb('0x20')];var _0x4796ec=_0x42ffab?0x0:_0x3e1a51[_0x50bb('0x1d')];var _0x431ed4=_0x42ffab?_0x253073['count']:_0x3e1a51['offset']+_0x3e1a51[_0x50bb('0x1e')];var _0x1499dc;if(_0x431ed4>=_0x4b1f5f){_0x431ed4=_0x4b1f5f;_0x1499dc=0xc8;}else{_0x1499dc=0xce;}_0x21befa[_0x50bb('0x1c')](_0x1499dc);return _0x21befa[_0x50bb('0x21')]('Content-Range',_0x4796ec+'-'+_0x431ed4+'/'+_0x4b1f5f)[_0x50bb('0x22')](_0x253073);}return null;};}function patchUpdates(_0x32bfc3){return function(_0x4020a0){try{jsonpatch['apply'](_0x4020a0,_0x32bfc3,!![]);}catch(_0x3104c8){return BPromise[_0x50bb('0x23')](_0x3104c8);}return _0x4020a0[_0x50bb('0x24')]();};}function saveUpdates(_0x4825f8,_0x1dbba2){return function(_0x4cc7f9){if(_0x4cc7f9){return _0x4cc7f9[_0x50bb('0x25')](_0x4825f8)[_0x50bb('0x26')](function(_0x1a2a0b){return _0x1a2a0b;});}return null;};}function removeEntity(_0x2ee87a,_0x846311){return function(_0x342078){if(_0x342078){return _0x342078['destroy']()[_0x50bb('0x26')](function(){_0x2ee87a[_0x50bb('0x1c')](0xcc)[_0x50bb('0x1b')]();});}};}function handleEntityNotFound(_0x3462c1,_0x5234d7){return function(_0x75fea6){if(!_0x75fea6){_0x3462c1['sendStatus'](0x194);}return _0x75fea6;};}function handleError(_0x55e87b,_0x2befd9){_0x2befd9=_0x2befd9||0x1f4;return function(_0x491632){logger['error'](_0x491632[_0x50bb('0x27')]);if(_0x491632[_0x50bb('0x28')]){delete _0x491632[_0x50bb('0x28')];}_0x55e87b[_0x50bb('0x1c')](_0x2befd9)[_0x50bb('0x29')](_0x491632);};}exports[_0x50bb('0x2a')]=function(_0x41a8ad,_0x41d479){var _0x4f7514={},_0x44ce86={},_0x461cf3={'count':0x0,'rows':[]};var _0x15ee2e=_[_0x50bb('0x2b')](db['FreshdeskAccount'][_0x50bb('0x2c')],function(_0x1a62fb){return{'name':_0x1a62fb[_0x50bb('0x2d')],'type':_0x1a62fb[_0x50bb('0x2e')][_0x50bb('0x2f')]};});_0x44ce86[_0x50bb('0x30')]=_[_0x50bb('0x2b')](_0x15ee2e,_0x50bb('0x28'));_0x44ce86[_0x50bb('0x31')]=_[_0x50bb('0x32')](_0x41a8ad[_0x50bb('0x31')]);_0x44ce86[_0x50bb('0x33')]=_['intersection'](_0x44ce86[_0x50bb('0x30')],_0x44ce86[_0x50bb('0x31')]);_0x4f7514[_0x50bb('0x34')]=_[_0x50bb('0x35')](_0x44ce86[_0x50bb('0x30')],qs[_0x50bb('0x36')](_0x41a8ad[_0x50bb('0x31')][_0x50bb('0x36')]));_0x4f7514[_0x50bb('0x34')]=_0x4f7514[_0x50bb('0x34')][_0x50bb('0x37')]?_0x4f7514['attributes']:_0x44ce86[_0x50bb('0x30')];if(!_0x41a8ad[_0x50bb('0x31')][_0x50bb('0x38')](_0x50bb('0x39'))){_0x4f7514[_0x50bb('0x1e')]=qs[_0x50bb('0x1e')](_0x41a8ad['query']['limit']);_0x4f7514[_0x50bb('0x1d')]=qs['offset'](_0x41a8ad[_0x50bb('0x31')][_0x50bb('0x1d')]);}_0x4f7514[_0x50bb('0x3a')]=qs[_0x50bb('0x3b')](_0x41a8ad[_0x50bb('0x31')]['sort']);_0x4f7514[_0x50bb('0x3c')]=qs['filters'](_[_0x50bb('0x3d')](_0x41a8ad[_0x50bb('0x31')],_0x44ce86[_0x50bb('0x33')]),_0x15ee2e);if(_0x41a8ad['query']['filter']){_0x4f7514[_0x50bb('0x3c')]=_[_0x50bb('0x3e')](_0x4f7514[_0x50bb('0x3c')],{'$or':_[_0x50bb('0x2b')](_0x15ee2e,function(_0x51750b){if(_0x51750b[_0x50bb('0x2e')]!=='VIRTUAL'){var _0x52059b={};_0x52059b[_0x51750b[_0x50bb('0x28')]]={'$like':'%'+_0x41a8ad['query'][_0x50bb('0x3f')]+'%'};return _0x52059b;}})});}_0x4f7514=_[_0x50bb('0x3e')]({},_0x4f7514,_0x41a8ad[_0x50bb('0x40')]);var _0x1f156e={'where':_0x4f7514[_0x50bb('0x3c')]};return db[_0x50bb('0x41')][_0x50bb('0x20')](_0x1f156e)[_0x50bb('0x26')](function(_0x46039a){_0x461cf3[_0x50bb('0x20')]=_0x46039a;if(_0x41a8ad['query']['includeAll']){_0x4f7514[_0x50bb('0x42')]=[{'all':!![]}];}return db[_0x50bb('0x41')][_0x50bb('0x43')](_0x4f7514);})[_0x50bb('0x26')](function(_0x5e8085){_0x461cf3[_0x50bb('0x44')]=_0x5e8085;return _0x461cf3;})['then'](respondWithFilteredResult(_0x41d479,_0x4f7514))[_0x50bb('0x45')](handleError(_0x41d479,null));};exports[_0x50bb('0x46')]=function(_0x379944,_0x40748d){var _0x1c438b={'raw':![],'where':{'id':_0x379944[_0x50bb('0x47')]['id']}},_0x355726={};_0x355726[_0x50bb('0x30')]=_[_0x50bb('0x32')](db[_0x50bb('0x41')][_0x50bb('0x2c')]);_0x355726[_0x50bb('0x31')]=_[_0x50bb('0x32')](_0x379944[_0x50bb('0x31')]);_0x355726[_0x50bb('0x33')]=_[_0x50bb('0x35')](_0x355726['model'],_0x355726[_0x50bb('0x31')]);_0x1c438b['attributes']=_[_0x50bb('0x35')](_0x355726[_0x50bb('0x30')],qs[_0x50bb('0x36')](_0x379944[_0x50bb('0x31')][_0x50bb('0x36')]));_0x1c438b[_0x50bb('0x34')]=_0x1c438b[_0x50bb('0x34')][_0x50bb('0x37')]?_0x1c438b[_0x50bb('0x34')]:_0x355726[_0x50bb('0x30')];if(_0x379944[_0x50bb('0x31')][_0x50bb('0x48')]){_0x1c438b[_0x50bb('0x42')]=[{'all':!![]}];}_0x1c438b=_[_0x50bb('0x3e')]({},_0x1c438b,_0x379944['options']);return db[_0x50bb('0x41')]['find'](_0x1c438b)[_0x50bb('0x26')](handleEntityNotFound(_0x40748d,null))[_0x50bb('0x26')](respondWithResult(_0x40748d,null))[_0x50bb('0x45')](handleError(_0x40748d,null));};exports[_0x50bb('0x49')]=function(_0x650e91,_0x39ac1a){return db[_0x50bb('0x41')][_0x50bb('0x49')](_0x650e91['body'],{})[_0x50bb('0x26')](respondWithResult(_0x39ac1a,0xc9))[_0x50bb('0x45')](handleError(_0x39ac1a,null));};exports[_0x50bb('0x25')]=function(_0x13afe2,_0x3659c4){if(_0x13afe2['body']['id']){delete _0x13afe2[_0x50bb('0x4a')]['id'];}return db[_0x50bb('0x41')][_0x50bb('0x4b')]({'where':{'id':_0x13afe2[_0x50bb('0x47')]['id']}})[_0x50bb('0x26')](handleEntityNotFound(_0x3659c4,null))['then'](saveUpdates(_0x13afe2['body'],null))[_0x50bb('0x26')](respondWithResult(_0x3659c4,null))['catch'](handleError(_0x3659c4,null));};exports[_0x50bb('0x4c')]=function(_0x57ee0e,_0x4316e4){return db[_0x50bb('0x41')][_0x50bb('0x4b')]({'where':{'id':_0x57ee0e['params']['id']}})[_0x50bb('0x26')](handleEntityNotFound(_0x4316e4,null))[_0x50bb('0x26')](removeEntity(_0x4316e4,null))['catch'](handleError(_0x4316e4,null));};exports[_0x50bb('0x4d')]=function(_0x1dff6a,_0x8d62af,_0x3c525c){var _0x55a4a6={};var _0x33e71f={};var _0x46b51e;var _0x2e0032;return db[_0x50bb('0x41')][_0x50bb('0x4e')]({'where':{'id':_0x1dff6a['params']['id']}})[_0x50bb('0x26')](handleEntityNotFound(_0x8d62af,null))['then'](function(_0x38a775){if(_0x38a775){_0x46b51e=_0x38a775;_0x33e71f['model']=_['keys'](db[_0x50bb('0x4f')]['rawAttributes']);_0x33e71f['query']=_[_0x50bb('0x32')](_0x1dff6a[_0x50bb('0x31')]);_0x33e71f[_0x50bb('0x33')]=_[_0x50bb('0x35')](_0x33e71f[_0x50bb('0x30')],_0x33e71f[_0x50bb('0x31')]);_0x55a4a6[_0x50bb('0x34')]=_[_0x50bb('0x35')](_0x33e71f['model'],qs['fields'](_0x1dff6a[_0x50bb('0x31')][_0x50bb('0x36')]));_0x55a4a6[_0x50bb('0x34')]=_0x55a4a6[_0x50bb('0x34')][_0x50bb('0x37')]?_0x55a4a6[_0x50bb('0x34')]:_0x33e71f[_0x50bb('0x30')];_0x55a4a6['order']=qs[_0x50bb('0x3b')](_0x1dff6a[_0x50bb('0x31')][_0x50bb('0x3b')]);_0x55a4a6[_0x50bb('0x3c')]=qs[_0x50bb('0x33')](_['pick'](_0x1dff6a[_0x50bb('0x31')],_0x33e71f[_0x50bb('0x33')]));if(_0x1dff6a[_0x50bb('0x31')][_0x50bb('0x3f')]){_0x55a4a6[_0x50bb('0x3c')]=_['merge'](_0x55a4a6[_0x50bb('0x3c')],{'$or':_['map'](_0x55a4a6['attributes'],function(_0x170761){var _0x3057f2={};_0x3057f2[_0x170761]={'$like':'%'+_0x1dff6a[_0x50bb('0x31')][_0x50bb('0x3f')]+'%'};return _0x3057f2;})});}_0x55a4a6=_[_0x50bb('0x3e')]({},_0x55a4a6,_0x1dff6a[_0x50bb('0x40')]);return _0x46b51e[_0x50bb('0x4d')](_0x55a4a6);}})[_0x50bb('0x26')](function(_0x330299){if(_0x330299){_0x2e0032=_0x330299[_0x50bb('0x37')];if(!_0x1dff6a[_0x50bb('0x31')]['hasOwnProperty'](_0x50bb('0x39'))){_0x55a4a6['limit']=qs[_0x50bb('0x1e')](_0x1dff6a[_0x50bb('0x31')]['limit']);_0x55a4a6[_0x50bb('0x1d')]=qs[_0x50bb('0x1d')](_0x1dff6a[_0x50bb('0x31')][_0x50bb('0x1d')]);}return _0x46b51e[_0x50bb('0x4d')](_0x55a4a6);}})[_0x50bb('0x26')](function(_0x2b7df6){if(_0x2b7df6){return _0x2b7df6?{'count':_0x2e0032,'rows':_0x2b7df6}:null;}})[_0x50bb('0x26')](respondWithResult(_0x8d62af,null))['catch'](handleError(_0x8d62af,null));};exports[_0x50bb('0x50')]=function(_0x2dc832,_0x3b17c8,_0x4a226d){if(_0x2dc832[_0x50bb('0x4a')]['id']){delete _0x2dc832[_0x50bb('0x4a')]['id'];}return db[_0x50bb('0x41')][_0x50bb('0x4e')]({'where':{'id':_0x2dc832[_0x50bb('0x47')]['id']}})[_0x50bb('0x26')](handleEntityNotFound(_0x3b17c8,null))['then'](function(_0xf47641){if(_0xf47641){_0x2dc832[_0x50bb('0x4a')][_0x50bb('0x51')]=_0xf47641['id'];_0x2dc832[_0x50bb('0x4a')][_0x50bb('0x52')]=integrations[_0x50bb('0x53')](_0x2dc832['body'][_0x50bb('0x54')],_0x2dc832[_0x50bb('0x4a')][_0x50bb('0x2e')]);_0x2dc832[_0x50bb('0x4a')][_0x50bb('0x55')]=integrations[_0x50bb('0x56')](_0x2dc832[_0x50bb('0x4a')][_0x50bb('0x54')],_0x2dc832[_0x50bb('0x4a')]['type']);return db[_0x50bb('0x4f')][_0x50bb('0x49')](_0x2dc832[_0x50bb('0x4a')],{'include':[{'model':db[_0x50bb('0x57')],'as':_0x50bb('0x52')},{'model':db[_0x50bb('0x57')],'as':_0x50bb('0x55')}]});}return null;})[_0x50bb('0x26')](respondWithResult(_0x3b17c8,null))[_0x50bb('0x45')](handleError(_0x3b17c8,null));};exports['getFields']=function(_0x58ad41,_0x5babbc,_0x4159ad){var _0x5ba597='';return db['FreshdeskAccount'][_0x50bb('0x4e')]({'where':{'id':_0x58ad41[_0x50bb('0x47')]['id']},'attributes':['id',_0x50bb('0x58'),_0x50bb('0x59')]})['then'](handleEntityNotFound(_0x5babbc,null))[_0x50bb('0x26')](function(_0x16a500){if(_0x16a500){_0x5ba597=_0x16a500['remoteUri'];var _0x13310d=_0x5ba597['slice'](-0x1);if(_0x13310d==='/'){_0x5ba597=_0x5ba597[_0x50bb('0x5a')](0x0,_0x5ba597[_0x50bb('0x5b')](_0x13310d));}return rp({'method':'GET','uri':util[_0x50bb('0x5c')]('%s/%s',_0x5ba597,_0x50bb('0x5d')),'headers':{'Authorization':util[_0x50bb('0x5c')]('Basic\x20%s',new Buffer(util[_0x50bb('0x5c')](_0x50bb('0x5e'),_0x16a500[_0x50bb('0x59')]))['toString'](_0x50bb('0x5f')))},'json':!![]});}})[_0x50bb('0x26')](function(_0x224256){if(_0x224256){var _0x31a583=['requester',_0x50bb('0x60'),_0x50bb('0x61'),'description','status',_0x50bb('0x62'),_0x50bb('0x63'),'source',_0x50bb('0x64'),_0x50bb('0x63'),_0x50bb('0x65')];_[_0x50bb('0x66')](_0x224256,function(_0x197798){return _0x31a583['includes'](_0x197798['name'])||!_0x197798[_0x50bb('0x67')]&&_0x197798[_0x50bb('0x2e')]!==_0x50bb('0x68')&&_0x197798[_0x50bb('0x2e')]!=='custom_dropdown';});return{'count':_0x224256[_0x50bb('0x37')],'rows':_['map'](_0x224256,function(_0x256125){return{'id':_0x256125[_0x50bb('0x28')],'name':_0x256125[_0x50bb('0x69')],'custom':!_0x256125[_0x50bb('0x67')],'options':_0x256125[_0x50bb('0x6a')]?_[_0x50bb('0x2b')](_0x256125[_0x50bb('0x6a')],function(_0x57ccc7){return{'name':_[_0x50bb('0x6b')](_0x57ccc7),'value':_0x57ccc7};}):[]};})};}})[_0x50bb('0x26')](respondWithResult(_0x5babbc,null))[_0x50bb('0x45')](function(_0x170923){var _0x5d2dc4=_0x58ad41[_0x50bb('0x31')][_0x50bb('0x6c')]?0x1f4:_0x170923['statusCode']||0x1f4;logger[_0x50bb('0x6d')](_0x50bb('0x6e'),_0x50bb('0x6f'),_0x5d2dc4,JSON[_0x50bb('0x70')](_0x170923));delete _0x170923[_0x50bb('0x28')];if(_0x5d2dc4===0x191){_0x5d2dc4=0x190;}_0x5babbc['status'](_0x5d2dc4)['send'](_0x58ad41[_0x50bb('0x31')]['test']?{'message':_0x50bb('0x71'),'statusCode':_0x170923[_0x50bb('0x72')]}:_0x170923);});};
\ No newline at end of file
+var _0xd87e=['../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','update','destroy','error','stack','name','index','FreshdeskAccount','rawAttributes','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','merge','VIRTUAL','options','include','findAll','then','rows','catch','show','params','includeAll','find','create','body','getConfigurations','findOne','order','pick','filter','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','channel','FreshdeskConfiguration','FreshdeskField','getFields','remoteUri','apiKey','slice','substring','lastIndexOf','GET','format','%s/%s','api/v2/ticket_fields','toString','base64','requester','subject','agent','description','priority','ticket_type','group','company','remove','includes','default','custom_text','custom_dropdown','label','choices','capitalize','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','send','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','path','sox','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api'];(function(_0x31986a,_0x4ab35c){var _0x54b131=function(_0xa0915){while(--_0xa0915){_0x31986a['push'](_0x31986a['shift']());}};_0x54b131(++_0x4ab35c);}(_0xd87e,0x1bf));var _0xed87=function(_0x4c858f,_0xcd21d1){_0x4c858f=_0x4c858f-0x0;var _0x322921=_0xd87e[_0x4c858f];return _0x322921;};'use strict';var emlformat=require(_0xed87('0x0'));var rimraf=require(_0xed87('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xed87('0x2'));var rp=require(_0xed87('0x3'));var moment=require(_0xed87('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xed87('0x5'));var util=require('util');var path=require(_0xed87('0x6'));var sox=require(_0xed87('0x7'));var csv=require('to-csv');var ejs=require(_0xed87('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xed87('0x9'));var crypto=require(_0xed87('0xa'));var jsforce=require(_0xed87('0xb'));var deskjs=require(_0xed87('0xc'));var toCsv=require('to-csv');var querystring=require(_0xed87('0xd'));var Papa=require(_0xed87('0xe'));var Redis=require(_0xed87('0xf'));var authService=require(_0xed87('0x10'));var qs=require(_0xed87('0x11'));var as=require(_0xed87('0x12'));var hardwareService=require(_0xed87('0x13'));var logger=require('../../config/logger')(_0xed87('0x14'));var utils=require(_0xed87('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xed87('0x16'));var db=require(_0xed87('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x4ffc2d,_0x466f35){_0x466f35=_0x466f35||0xcc;return function(_0x32276e){if(_0x32276e){return _0x4ffc2d[_0xed87('0x18')](_0x466f35);}return _0x4ffc2d[_0xed87('0x19')](_0x466f35)[_0xed87('0x1a')]();};}function respondWithResult(_0x3865c5,_0x52dfe8){_0x52dfe8=_0x52dfe8||0xc8;return function(_0x4494da){if(_0x4494da){return _0x3865c5[_0xed87('0x19')](_0x52dfe8)[_0xed87('0x1b')](_0x4494da);}};}function respondWithFilteredResult(_0x1e9a3d,_0x2f2fd3){return function(_0xd34e0e){if(_0xd34e0e){var _0x173413=typeof _0x2f2fd3[_0xed87('0x1c')]===_0xed87('0x1d')&&typeof _0x2f2fd3['limit']===_0xed87('0x1d');var _0x18ab7d=_0xd34e0e[_0xed87('0x1e')];var _0xfb8a44=_0x173413?0x0:_0x2f2fd3['offset'];var _0x211085=_0x173413?_0xd34e0e[_0xed87('0x1e')]:_0x2f2fd3[_0xed87('0x1c')]+_0x2f2fd3[_0xed87('0x1f')];var _0x98a2ca;if(_0x211085>=_0x18ab7d){_0x211085=_0x18ab7d;_0x98a2ca=0xc8;}else{_0x98a2ca=0xce;}_0x1e9a3d[_0xed87('0x19')](_0x98a2ca);return _0x1e9a3d[_0xed87('0x20')](_0xed87('0x21'),_0xfb8a44+'-'+_0x211085+'/'+_0x18ab7d)[_0xed87('0x1b')](_0xd34e0e);}return null;};}function patchUpdates(_0x52e81c){return function(_0x5a7329){try{jsonpatch['apply'](_0x5a7329,_0x52e81c,!![]);}catch(_0x47c121){return BPromise[_0xed87('0x22')](_0x47c121);}return _0x5a7329['save']();};}function saveUpdates(_0x4191a7,_0x2b0b98){return function(_0x5b1659){if(_0x5b1659){return _0x5b1659[_0xed87('0x23')](_0x4191a7)['then'](function(_0x3d1641){return _0x3d1641;});}return null;};}function removeEntity(_0x24962e,_0x27799a){return function(_0x2a8733){if(_0x2a8733){return _0x2a8733[_0xed87('0x24')]()['then'](function(){_0x24962e[_0xed87('0x19')](0xcc)[_0xed87('0x1a')]();});}};}function handleEntityNotFound(_0x41e0d4,_0x320bcc){return function(_0x31c600){if(!_0x31c600){_0x41e0d4[_0xed87('0x18')](0x194);}return _0x31c600;};}function handleError(_0x25a6f7,_0x4735b3){_0x4735b3=_0x4735b3||0x1f4;return function(_0x40b2fa){logger[_0xed87('0x25')](_0x40b2fa[_0xed87('0x26')]);if(_0x40b2fa[_0xed87('0x27')]){delete _0x40b2fa[_0xed87('0x27')];}_0x25a6f7[_0xed87('0x19')](_0x4735b3)['send'](_0x40b2fa);};}exports[_0xed87('0x28')]=function(_0x1c4a65,_0x4eaa44){var _0x3dff74={},_0x33c367={},_0x21c93b={'count':0x0,'rows':[]};var _0x4b259e=_['map'](db[_0xed87('0x29')][_0xed87('0x2a')],function(_0x21ab8a){return{'name':_0x21ab8a['fieldName'],'type':_0x21ab8a[_0xed87('0x2b')][_0xed87('0x2c')]};});_0x33c367[_0xed87('0x2d')]=_[_0xed87('0x2e')](_0x4b259e,_0xed87('0x27'));_0x33c367[_0xed87('0x2f')]=_[_0xed87('0x30')](_0x1c4a65[_0xed87('0x2f')]);_0x33c367[_0xed87('0x31')]=_['intersection'](_0x33c367[_0xed87('0x2d')],_0x33c367[_0xed87('0x2f')]);_0x3dff74['attributes']=_[_0xed87('0x32')](_0x33c367['model'],qs[_0xed87('0x33')](_0x1c4a65[_0xed87('0x2f')][_0xed87('0x33')]));_0x3dff74[_0xed87('0x34')]=_0x3dff74[_0xed87('0x34')][_0xed87('0x35')]?_0x3dff74[_0xed87('0x34')]:_0x33c367[_0xed87('0x2d')];if(!_0x1c4a65[_0xed87('0x2f')][_0xed87('0x36')](_0xed87('0x37'))){_0x3dff74['limit']=qs[_0xed87('0x1f')](_0x1c4a65[_0xed87('0x2f')]['limit']);_0x3dff74[_0xed87('0x1c')]=qs['offset'](_0x1c4a65[_0xed87('0x2f')][_0xed87('0x1c')]);}_0x3dff74['order']=qs[_0xed87('0x38')](_0x1c4a65[_0xed87('0x2f')][_0xed87('0x38')]);_0x3dff74[_0xed87('0x39')]=qs[_0xed87('0x31')](_['pick'](_0x1c4a65[_0xed87('0x2f')],_0x33c367['filters']),_0x4b259e);if(_0x1c4a65[_0xed87('0x2f')]['filter']){_0x3dff74[_0xed87('0x39')]=_[_0xed87('0x3a')](_0x3dff74[_0xed87('0x39')],{'$or':_[_0xed87('0x2e')](_0x4b259e,function(_0x319f69){if(_0x319f69[_0xed87('0x2b')]!==_0xed87('0x3b')){var _0x161491={};_0x161491[_0x319f69[_0xed87('0x27')]]={'$like':'%'+_0x1c4a65['query']['filter']+'%'};return _0x161491;}})});}_0x3dff74=_[_0xed87('0x3a')]({},_0x3dff74,_0x1c4a65[_0xed87('0x3c')]);var _0x1f16a8={'where':_0x3dff74[_0xed87('0x39')]};return db[_0xed87('0x29')][_0xed87('0x1e')](_0x1f16a8)['then'](function(_0x4398a0){_0x21c93b[_0xed87('0x1e')]=_0x4398a0;if(_0x1c4a65[_0xed87('0x2f')]['includeAll']){_0x3dff74[_0xed87('0x3d')]=[{'all':!![]}];}return db[_0xed87('0x29')][_0xed87('0x3e')](_0x3dff74);})[_0xed87('0x3f')](function(_0x1d1e99){_0x21c93b[_0xed87('0x40')]=_0x1d1e99;return _0x21c93b;})[_0xed87('0x3f')](respondWithFilteredResult(_0x4eaa44,_0x3dff74))[_0xed87('0x41')](handleError(_0x4eaa44,null));};exports[_0xed87('0x42')]=function(_0x406b73,_0x5c6925){var _0x7e6cbb={'raw':![],'where':{'id':_0x406b73[_0xed87('0x43')]['id']}},_0x3c7fcc={};_0x3c7fcc['model']=_['keys'](db[_0xed87('0x29')][_0xed87('0x2a')]);_0x3c7fcc[_0xed87('0x2f')]=_[_0xed87('0x30')](_0x406b73['query']);_0x3c7fcc[_0xed87('0x31')]=_[_0xed87('0x32')](_0x3c7fcc['model'],_0x3c7fcc[_0xed87('0x2f')]);_0x7e6cbb[_0xed87('0x34')]=_[_0xed87('0x32')](_0x3c7fcc[_0xed87('0x2d')],qs[_0xed87('0x33')](_0x406b73[_0xed87('0x2f')][_0xed87('0x33')]));_0x7e6cbb[_0xed87('0x34')]=_0x7e6cbb[_0xed87('0x34')][_0xed87('0x35')]?_0x7e6cbb[_0xed87('0x34')]:_0x3c7fcc['model'];if(_0x406b73[_0xed87('0x2f')][_0xed87('0x44')]){_0x7e6cbb[_0xed87('0x3d')]=[{'all':!![]}];}_0x7e6cbb=_[_0xed87('0x3a')]({},_0x7e6cbb,_0x406b73[_0xed87('0x3c')]);return db[_0xed87('0x29')][_0xed87('0x45')](_0x7e6cbb)[_0xed87('0x3f')](handleEntityNotFound(_0x5c6925,null))[_0xed87('0x3f')](respondWithResult(_0x5c6925,null))[_0xed87('0x41')](handleError(_0x5c6925,null));};exports[_0xed87('0x46')]=function(_0x26c8f4,_0x27ed22){return db[_0xed87('0x29')][_0xed87('0x46')](_0x26c8f4[_0xed87('0x47')],{})[_0xed87('0x3f')](respondWithResult(_0x27ed22,0xc9))['catch'](handleError(_0x27ed22,null));};exports[_0xed87('0x23')]=function(_0x1a68a7,_0x3a91c5){if(_0x1a68a7['body']['id']){delete _0x1a68a7[_0xed87('0x47')]['id'];}return db[_0xed87('0x29')]['find']({'where':{'id':_0x1a68a7[_0xed87('0x43')]['id']}})[_0xed87('0x3f')](handleEntityNotFound(_0x3a91c5,null))[_0xed87('0x3f')](saveUpdates(_0x1a68a7[_0xed87('0x47')],null))['then'](respondWithResult(_0x3a91c5,null))[_0xed87('0x41')](handleError(_0x3a91c5,null));};exports[_0xed87('0x24')]=function(_0x3ca34c,_0x272a07){return db[_0xed87('0x29')][_0xed87('0x45')]({'where':{'id':_0x3ca34c[_0xed87('0x43')]['id']}})[_0xed87('0x3f')](handleEntityNotFound(_0x272a07,null))[_0xed87('0x3f')](removeEntity(_0x272a07,null))[_0xed87('0x41')](handleError(_0x272a07,null));};exports[_0xed87('0x48')]=function(_0x18846f,_0x2e5a9f,_0x4df105){var _0x43ffa4={};var _0x4ea4e3={};var _0x17cad7;var _0x329973;return db[_0xed87('0x29')][_0xed87('0x49')]({'where':{'id':_0x18846f[_0xed87('0x43')]['id']}})[_0xed87('0x3f')](handleEntityNotFound(_0x2e5a9f,null))[_0xed87('0x3f')](function(_0xccdbb6){if(_0xccdbb6){_0x17cad7=_0xccdbb6;_0x4ea4e3[_0xed87('0x2d')]=_[_0xed87('0x30')](db['FreshdeskConfiguration'][_0xed87('0x2a')]);_0x4ea4e3[_0xed87('0x2f')]=_[_0xed87('0x30')](_0x18846f[_0xed87('0x2f')]);_0x4ea4e3[_0xed87('0x31')]=_[_0xed87('0x32')](_0x4ea4e3[_0xed87('0x2d')],_0x4ea4e3[_0xed87('0x2f')]);_0x43ffa4[_0xed87('0x34')]=_[_0xed87('0x32')](_0x4ea4e3[_0xed87('0x2d')],qs['fields'](_0x18846f['query'][_0xed87('0x33')]));_0x43ffa4[_0xed87('0x34')]=_0x43ffa4[_0xed87('0x34')][_0xed87('0x35')]?_0x43ffa4[_0xed87('0x34')]:_0x4ea4e3['model'];_0x43ffa4[_0xed87('0x4a')]=qs[_0xed87('0x38')](_0x18846f[_0xed87('0x2f')][_0xed87('0x38')]);_0x43ffa4[_0xed87('0x39')]=qs[_0xed87('0x31')](_[_0xed87('0x4b')](_0x18846f[_0xed87('0x2f')],_0x4ea4e3[_0xed87('0x31')]));if(_0x18846f[_0xed87('0x2f')][_0xed87('0x4c')]){_0x43ffa4[_0xed87('0x39')]=_[_0xed87('0x3a')](_0x43ffa4[_0xed87('0x39')],{'$or':_['map'](_0x43ffa4[_0xed87('0x34')],function(_0x10a19c){var _0x2f03d4={};_0x2f03d4[_0x10a19c]={'$like':'%'+_0x18846f[_0xed87('0x2f')][_0xed87('0x4c')]+'%'};return _0x2f03d4;})});}_0x43ffa4=_[_0xed87('0x3a')]({},_0x43ffa4,_0x18846f[_0xed87('0x3c')]);return _0x17cad7[_0xed87('0x48')](_0x43ffa4);}})['then'](function(_0x4367c3){if(_0x4367c3){_0x329973=_0x4367c3[_0xed87('0x35')];if(!_0x18846f[_0xed87('0x2f')][_0xed87('0x36')](_0xed87('0x37'))){_0x43ffa4[_0xed87('0x1f')]=qs['limit'](_0x18846f['query'][_0xed87('0x1f')]);_0x43ffa4[_0xed87('0x1c')]=qs[_0xed87('0x1c')](_0x18846f[_0xed87('0x2f')][_0xed87('0x1c')]);}return _0x17cad7[_0xed87('0x48')](_0x43ffa4);}})[_0xed87('0x3f')](function(_0x3bdf7c){if(_0x3bdf7c){return _0x3bdf7c?{'count':_0x329973,'rows':_0x3bdf7c}:null;}})['then'](respondWithResult(_0x2e5a9f,null))[_0xed87('0x41')](handleError(_0x2e5a9f,null));};exports['addConfiguration']=function(_0xd3b300,_0x3c82de,_0x4e5055){if(_0xd3b300[_0xed87('0x47')]['id']){delete _0xd3b300[_0xed87('0x47')]['id'];}return db['FreshdeskAccount'][_0xed87('0x49')]({'where':{'id':_0xd3b300[_0xed87('0x43')]['id']}})[_0xed87('0x3f')](handleEntityNotFound(_0x3c82de,null))[_0xed87('0x3f')](function(_0x112685){if(_0x112685){_0xd3b300['body'][_0xed87('0x4d')]=_0x112685['id'];_0xd3b300[_0xed87('0x47')][_0xed87('0x4e')]=integrations[_0xed87('0x4f')](_0xd3b300['body']['channel'],_0xd3b300[_0xed87('0x47')][_0xed87('0x2b')]);_0xd3b300['body'][_0xed87('0x50')]=integrations[_0xed87('0x51')](_0xd3b300[_0xed87('0x47')][_0xed87('0x52')],_0xd3b300[_0xed87('0x47')][_0xed87('0x2b')]);return db[_0xed87('0x53')][_0xed87('0x46')](_0xd3b300[_0xed87('0x47')],{'include':[{'model':db[_0xed87('0x54')],'as':_0xed87('0x4e')},{'model':db[_0xed87('0x54')],'as':_0xed87('0x50')}]});}return null;})[_0xed87('0x3f')](respondWithResult(_0x3c82de,null))['catch'](handleError(_0x3c82de,null));};exports[_0xed87('0x55')]=function(_0x2686cd,_0x566ace,_0x4f7b92){var _0x5136c9='';return db[_0xed87('0x29')][_0xed87('0x49')]({'where':{'id':_0x2686cd[_0xed87('0x43')]['id']},'attributes':['id',_0xed87('0x56'),_0xed87('0x57')]})[_0xed87('0x3f')](handleEntityNotFound(_0x566ace,null))[_0xed87('0x3f')](function(_0x48fcc7){if(_0x48fcc7){_0x5136c9=_0x48fcc7[_0xed87('0x56')];var _0x471521=_0x5136c9[_0xed87('0x58')](-0x1);if(_0x471521==='/'){_0x5136c9=_0x5136c9[_0xed87('0x59')](0x0,_0x5136c9[_0xed87('0x5a')](_0x471521));}return rp({'method':_0xed87('0x5b'),'uri':util[_0xed87('0x5c')](_0xed87('0x5d'),_0x5136c9,_0xed87('0x5e')),'headers':{'Authorization':util[_0xed87('0x5c')]('Basic\x20%s',new Buffer(util['format']('%s:X',_0x48fcc7[_0xed87('0x57')]))[_0xed87('0x5f')](_0xed87('0x60')))},'json':!![]});}})[_0xed87('0x3f')](function(_0xb13b0b){if(_0xb13b0b){var _0x57aecd=[_0xed87('0x61'),_0xed87('0x62'),_0xed87('0x63'),_0xed87('0x64'),_0xed87('0x19'),_0xed87('0x65'),'group','source',_0xed87('0x66'),_0xed87('0x67'),_0xed87('0x68')];_[_0xed87('0x69')](_0xb13b0b,function(_0x720d5d){return _0x57aecd[_0xed87('0x6a')](_0x720d5d[_0xed87('0x27')])||!_0x720d5d[_0xed87('0x6b')]&&_0x720d5d[_0xed87('0x2b')]!==_0xed87('0x6c')&&_0x720d5d[_0xed87('0x2b')]!==_0xed87('0x6d');});return{'count':_0xb13b0b['length'],'rows':_[_0xed87('0x2e')](_0xb13b0b,function(_0x1ac999){return{'id':_0x1ac999[_0xed87('0x27')],'name':_0x1ac999[_0xed87('0x6e')],'custom':!_0x1ac999[_0xed87('0x6b')],'options':_0x1ac999[_0xed87('0x6f')]?_['map'](_0x1ac999[_0xed87('0x6f')],function(_0x1b8f9d){return{'name':_[_0xed87('0x70')](_0x1b8f9d),'value':_0x1b8f9d};}):[]};})};}})[_0xed87('0x3f')](respondWithResult(_0x566ace,null))['catch'](function(_0x54277b){var _0x4bfca0=_0x2686cd['query']['test']?0x1f4:_0x54277b[_0xed87('0x71')]||0x1f4;logger[_0xed87('0x25')](_0xed87('0x72'),_0xed87('0x55'),_0x4bfca0,JSON[_0xed87('0x73')](_0x54277b));delete _0x54277b[_0xed87('0x27')];if(_0x4bfca0===0x191){_0x4bfca0=0x190;}_0x566ace[_0xed87('0x19')](_0x4bfca0)[_0xed87('0x74')](_0x2686cd[_0xed87('0x2f')]['test']?{'message':'Wrong\x20credentials','statusCode':_0x54277b[_0xed87('0x71')]}:_0x54277b);});};
\ No newline at end of file
index b08df99..08b4d0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ce1=['define','FreshdeskAccount','int_freshdesk_accounts','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshdeskAccount.attributes','exports'];(function(_0x2d9c6a,_0x59393d){var _0xf3c918=function(_0x4f3f26){while(--_0x4f3f26){_0x2d9c6a['push'](_0x2d9c6a['shift']());}};_0xf3c918(++_0x59393d);}(_0x0ce1,0xe0));var _0x10ce=function(_0x54edbf,_0x11c128){_0x54edbf=_0x54edbf-0x0;var _0x456124=_0x0ce1[_0x54edbf];return _0x456124;};'use strict';var _=require('lodash');var util=require(_0x10ce('0x0'));var logger=require(_0x10ce('0x1'))('api');var moment=require(_0x10ce('0x2'));var BPromise=require(_0x10ce('0x3'));var rp=require(_0x10ce('0x4'));var fs=require('fs');var path=require(_0x10ce('0x5'));var rimraf=require(_0x10ce('0x6'));var config=require(_0x10ce('0x7'));var attributes=require(_0x10ce('0x8'));var integrations=require('../../components/integrations/configuration');module[_0x10ce('0x9')]=function(_0x27312b,_0x276b88){return _0x27312b[_0x10ce('0xa')](_0x10ce('0xb'),attributes,{'tableName':_0x10ce('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6d25=['api','moment','bluebird','path','rimraf','../../config/environment','./intFreshdeskAccount.attributes','exports','define','int_freshdesk_accounts','lodash','../../config/logger'];(function(_0x13eea8,_0x5ed8b2){var _0x255a29=function(_0x2fa27e){while(--_0x2fa27e){_0x13eea8['push'](_0x13eea8['shift']());}};_0x255a29(++_0x5ed8b2);}(_0x6d25,0x76));var _0x56d2=function(_0x39f667,_0x58b881){_0x39f667=_0x39f667-0x0;var _0x4435be=_0x6d25[_0x39f667];return _0x4435be;};'use strict';var _=require(_0x56d2('0x0'));var util=require('util');var logger=require(_0x56d2('0x1'))(_0x56d2('0x2'));var moment=require(_0x56d2('0x3'));var BPromise=require(_0x56d2('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x56d2('0x5'));var rimraf=require(_0x56d2('0x6'));var config=require(_0x56d2('0x7'));var attributes=require(_0x56d2('0x8'));var integrations=require('../../components/integrations/configuration');module[_0x56d2('0x9')]=function(_0x2d7b3e,_0x42ee31){return _0x2d7b3e[_0x56d2('0xa')]('FreshdeskAccount',attributes,{'tableName':_0x56d2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cfeb524..04a4ffb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea05=['request','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetFreshdeskAccount','findAll','options','map','include','model','attributes','ShowFreshdeskAccount','FreshdeskAccount','raw','where','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x44bb4c,_0x4716a3){var _0x222a06=function(_0x354835){while(--_0x354835){_0x44bb4c['push'](_0x44bb4c['shift']());}};_0x222a06(++_0x4716a3);}(_0xea05,0x9f));var _0x5ea0=function(_0x213165,_0x32b035){_0x213165=_0x213165-0x0;var _0x165b25=_0xea05[_0x213165];return _0x165b25;};'use strict';var _=require(_0x5ea0('0x0'));var util=require(_0x5ea0('0x1'));var moment=require(_0x5ea0('0x2'));var BPromise=require(_0x5ea0('0x3'));var rs=require(_0x5ea0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x5ea0('0x5'));var logger=require(_0x5ea0('0x6'))(_0x5ea0('0x7'));var config=require(_0x5ea0('0x8'));var jayson=require(_0x5ea0('0x9'));var client=jayson['client'][_0x5ea0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x18ff5c,_0x5ee83b,_0x18b732){return new BPromise(function(_0x1f3ddb,_0x2af131){return client[_0x5ea0('0xb')](_0x18ff5c,_0x18b732)[_0x5ea0('0xc')](function(_0x5ea613){logger[_0x5ea0('0xd')](_0x5ea0('0xe'),_0x5ee83b,_0x5ea0('0xf'));logger[_0x5ea0('0x10')](_0x5ea0('0x11'),_0x5ee83b,'request\x20sent',JSON[_0x5ea0('0x12')](_0x5ea613));if(_0x5ea613[_0x5ea0('0x13')]){if(_0x5ea613[_0x5ea0('0x13')]['code']===0x1f4){logger[_0x5ea0('0x13')](_0x5ea0('0xe'),_0x5ee83b,_0x5ea613[_0x5ea0('0x13')][_0x5ea0('0x14')]);return _0x2af131(_0x5ea613[_0x5ea0('0x13')]['message']);}logger[_0x5ea0('0x13')](_0x5ea0('0xe'),_0x5ee83b,_0x5ea613[_0x5ea0('0x13')][_0x5ea0('0x14')]);return _0x1f3ddb(_0x5ea613['error'][_0x5ea0('0x14')]);}else{logger['info'](_0x5ea0('0xe'),_0x5ee83b,_0x5ea0('0xf'));_0x1f3ddb(_0x5ea613[_0x5ea0('0x15')][_0x5ea0('0x14')]);}})[_0x5ea0('0x16')](function(_0x213484){logger[_0x5ea0('0x13')](_0x5ea0('0xe'),_0x5ee83b,_0x213484);_0x2af131(_0x213484);});});}exports[_0x5ea0('0x17')]=function(_0x24a370){var _0x143098=this;return new Promise(function(_0x69f4a3,_0x2c6ad7){return db['FreshdeskAccount'][_0x5ea0('0x18')]({'raw':_0x24a370[_0x5ea0('0x19')]?_0x24a370['options']['raw']===undefined?!![]:![]:!![],'where':_0x24a370[_0x5ea0('0x19')]?_0x24a370['options']['where']||null:null,'attributes':_0x24a370[_0x5ea0('0x19')]?_0x24a370['options']['attributes']||null:null,'limit':_0x24a370[_0x5ea0('0x19')]?_0x24a370[_0x5ea0('0x19')]['limit']||null:null,'include':_0x24a370['options']?_0x24a370[_0x5ea0('0x19')]['include']?_[_0x5ea0('0x1a')](_0x24a370[_0x5ea0('0x19')][_0x5ea0('0x1b')],function(_0x1111fb){return{'model':db[_0x1111fb[_0x5ea0('0x1c')]],'as':_0x1111fb['as'],'attributes':_0x1111fb[_0x5ea0('0x1d')],'include':_0x1111fb[_0x5ea0('0x1b')]?_['map'](_0x1111fb[_0x5ea0('0x1b')],function(_0x3951f5){return{'model':db[_0x3951f5['model']],'as':_0x3951f5['as'],'attributes':_0x3951f5[_0x5ea0('0x1d')],'include':_0x3951f5[_0x5ea0('0x1b')]?_[_0x5ea0('0x1a')](_0x3951f5[_0x5ea0('0x1b')],function(_0x120c14){return{'model':db[_0x120c14[_0x5ea0('0x1c')]],'as':_0x120c14['as'],'attributes':_0x120c14[_0x5ea0('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2b4dcc){logger['info'](_0x5ea0('0x17'),_0x24a370);logger[_0x5ea0('0x10')](_0x5ea0('0x17'),_0x24a370,JSON['stringify'](_0x2b4dcc));_0x69f4a3(_0x2b4dcc);})[_0x5ea0('0x16')](function(_0x1e2af5){logger[_0x5ea0('0x13')]('GetFreshdeskAccount',_0x1e2af5[_0x5ea0('0x14')],_0x24a370);_0x2c6ad7(_0x143098['error'](0x1f4,_0x1e2af5[_0x5ea0('0x14')]));});});};exports[_0x5ea0('0x1e')]=function(_0x4f4383){var _0x3961a4=this;return new Promise(function(_0x3ca07d,_0x3c3c72){return db[_0x5ea0('0x1f')]['find']({'raw':_0x4f4383[_0x5ea0('0x19')]?_0x4f4383['options'][_0x5ea0('0x20')]===undefined?!![]:![]:!![],'where':_0x4f4383['options']?_0x4f4383['options'][_0x5ea0('0x21')]||null:null,'attributes':_0x4f4383[_0x5ea0('0x19')]?_0x4f4383[_0x5ea0('0x19')][_0x5ea0('0x1d')]||null:null,'include':_0x4f4383[_0x5ea0('0x19')]?_0x4f4383[_0x5ea0('0x19')]['include']?_[_0x5ea0('0x1a')](_0x4f4383[_0x5ea0('0x19')][_0x5ea0('0x1b')],function(_0x4c1294){return{'model':db[_0x4c1294[_0x5ea0('0x1c')]],'as':_0x4c1294['as'],'attributes':_0x4c1294[_0x5ea0('0x1d')],'include':_0x4c1294['include']?_[_0x5ea0('0x1a')](_0x4c1294[_0x5ea0('0x1b')],function(_0x16d578){return{'model':db[_0x16d578[_0x5ea0('0x1c')]],'as':_0x16d578['as'],'attributes':_0x16d578[_0x5ea0('0x1d')],'include':_0x16d578[_0x5ea0('0x1b')]?_[_0x5ea0('0x1a')](_0x16d578[_0x5ea0('0x1b')],function(_0x237421){return{'model':db[_0x237421[_0x5ea0('0x1c')]],'as':_0x237421['as'],'attributes':_0x237421[_0x5ea0('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x34570c){logger[_0x5ea0('0xd')](_0x5ea0('0x1e'),_0x4f4383);logger[_0x5ea0('0x10')](_0x5ea0('0x1e'),_0x4f4383,JSON[_0x5ea0('0x12')](_0x34570c));_0x3ca07d(_0x34570c);})['catch'](function(_0x1736ef){logger[_0x5ea0('0x13')](_0x5ea0('0x1e'),_0x1736ef[_0x5ea0('0x14')],_0x4f4383);_0x3c3c72(_0x3961a4[_0x5ea0('0x13')](0x1f4,_0x1736ef[_0x5ea0('0x14')]));});});};
\ No newline at end of file
+var _0x43d3=['raw','where','attributes','limit','include','map','model','GetFreshdeskAccount','stringify','catch','ShowFreshdeskAccount','find','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','FreshdeskAccount,\x20%s,\x20%s,\x20%s','error','message','FreshdeskAccount','findAll','options'];(function(_0x4a33ca,_0x54bf02){var _0x394f13=function(_0x4577b4){while(--_0x4577b4){_0x4a33ca['push'](_0x4a33ca['shift']());}};_0x394f13(++_0x54bf02);}(_0x43d3,0x182));var _0x343d=function(_0x442de8,_0x545ba3){_0x442de8=_0x442de8-0x0;var _0x5045ed=_0x43d3[_0x442de8];return _0x5045ed;};'use strict';var _=require('lodash');var util=require(_0x343d('0x0'));var moment=require(_0x343d('0x1'));var BPromise=require(_0x343d('0x2'));var rs=require(_0x343d('0x3'));var fs=require('fs');var Redis=require(_0x343d('0x4'));var db=require(_0x343d('0x5'))['db'];var utils=require(_0x343d('0x6'));var logger=require(_0x343d('0x7'))('rpc');var config=require(_0x343d('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x343d('0x9')][_0x343d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x203c0a,_0x374995,_0xa968a1){return new BPromise(function(_0x2dff3c,_0x1f8736){return client[_0x343d('0xb')](_0x203c0a,_0xa968a1)[_0x343d('0xc')](function(_0x147d8a){logger[_0x343d('0xd')](_0x343d('0xe'),_0x374995,_0x343d('0xf'));logger['debug'](_0x343d('0x10'),_0x374995,_0x343d('0xf'),JSON['stringify'](_0x147d8a));if(_0x147d8a[_0x343d('0x11')]){if(_0x147d8a[_0x343d('0x11')]['code']===0x1f4){logger[_0x343d('0x11')](_0x343d('0xe'),_0x374995,_0x147d8a['error'][_0x343d('0x12')]);return _0x1f8736(_0x147d8a[_0x343d('0x11')][_0x343d('0x12')]);}logger[_0x343d('0x11')](_0x343d('0xe'),_0x374995,_0x147d8a[_0x343d('0x11')][_0x343d('0x12')]);return _0x2dff3c(_0x147d8a[_0x343d('0x11')]['message']);}else{logger['info']('FreshdeskAccount,\x20%s,\x20%s',_0x374995,'request\x20sent');_0x2dff3c(_0x147d8a['result'][_0x343d('0x12')]);}})['catch'](function(_0x42f3e0){logger[_0x343d('0x11')](_0x343d('0xe'),_0x374995,_0x42f3e0);_0x1f8736(_0x42f3e0);});});}exports['GetFreshdeskAccount']=function(_0x49862c){var _0x39f588=this;return new Promise(function(_0x1dd0c5,_0x372300){return db[_0x343d('0x13')][_0x343d('0x14')]({'raw':_0x49862c['options']?_0x49862c[_0x343d('0x15')][_0x343d('0x16')]===undefined?!![]:![]:!![],'where':_0x49862c[_0x343d('0x15')]?_0x49862c[_0x343d('0x15')][_0x343d('0x17')]||null:null,'attributes':_0x49862c['options']?_0x49862c[_0x343d('0x15')][_0x343d('0x18')]||null:null,'limit':_0x49862c[_0x343d('0x15')]?_0x49862c[_0x343d('0x15')][_0x343d('0x19')]||null:null,'include':_0x49862c[_0x343d('0x15')]?_0x49862c[_0x343d('0x15')][_0x343d('0x1a')]?_[_0x343d('0x1b')](_0x49862c[_0x343d('0x15')][_0x343d('0x1a')],function(_0x35ce2e){return{'model':db[_0x35ce2e[_0x343d('0x1c')]],'as':_0x35ce2e['as'],'attributes':_0x35ce2e[_0x343d('0x18')],'include':_0x35ce2e['include']?_[_0x343d('0x1b')](_0x35ce2e[_0x343d('0x1a')],function(_0x2fb088){return{'model':db[_0x2fb088[_0x343d('0x1c')]],'as':_0x2fb088['as'],'attributes':_0x2fb088['attributes'],'include':_0x2fb088[_0x343d('0x1a')]?_[_0x343d('0x1b')](_0x2fb088['include'],function(_0x210426){return{'model':db[_0x210426[_0x343d('0x1c')]],'as':_0x210426['as'],'attributes':_0x210426[_0x343d('0x18')]};}):[]};}):[]};}):[]:[]})[_0x343d('0xc')](function(_0x4dac96){logger[_0x343d('0xd')](_0x343d('0x1d'),_0x49862c);logger['debug'](_0x343d('0x1d'),_0x49862c,JSON[_0x343d('0x1e')](_0x4dac96));_0x1dd0c5(_0x4dac96);})[_0x343d('0x1f')](function(_0x4bb55a){logger['error'](_0x343d('0x1d'),_0x4bb55a['message'],_0x49862c);_0x372300(_0x39f588[_0x343d('0x11')](0x1f4,_0x4bb55a[_0x343d('0x12')]));});});};exports[_0x343d('0x20')]=function(_0x13d258){var _0x16aed7=this;return new Promise(function(_0x32079c,_0x260f65){return db['FreshdeskAccount'][_0x343d('0x21')]({'raw':_0x13d258['options']?_0x13d258['options'][_0x343d('0x16')]===undefined?!![]:![]:!![],'where':_0x13d258[_0x343d('0x15')]?_0x13d258[_0x343d('0x15')]['where']||null:null,'attributes':_0x13d258['options']?_0x13d258[_0x343d('0x15')][_0x343d('0x18')]||null:null,'include':_0x13d258[_0x343d('0x15')]?_0x13d258['options']['include']?_[_0x343d('0x1b')](_0x13d258[_0x343d('0x15')]['include'],function(_0x197c85){return{'model':db[_0x197c85['model']],'as':_0x197c85['as'],'attributes':_0x197c85[_0x343d('0x18')],'include':_0x197c85[_0x343d('0x1a')]?_[_0x343d('0x1b')](_0x197c85['include'],function(_0x1125ec){return{'model':db[_0x1125ec[_0x343d('0x1c')]],'as':_0x1125ec['as'],'attributes':_0x1125ec[_0x343d('0x18')],'include':_0x1125ec[_0x343d('0x1a')]?_[_0x343d('0x1b')](_0x1125ec[_0x343d('0x1a')],function(_0x5510b6){return{'model':db[_0x5510b6[_0x343d('0x1c')]],'as':_0x5510b6['as'],'attributes':_0x5510b6[_0x343d('0x18')]};}):[]};}):[]};}):[]:[]})[_0x343d('0xc')](function(_0x442c14){logger[_0x343d('0xd')](_0x343d('0x20'),_0x13d258);logger['debug']('ShowFreshdeskAccount',_0x13d258,JSON[_0x343d('0x1e')](_0x442c14));_0x32079c(_0x442c14);})[_0x343d('0x1f')](function(_0x1939c9){logger[_0x343d('0x11')]('ShowFreshdeskAccount',_0x1939c9[_0x343d('0x12')],_0x13d258);_0x260f65(_0x16aed7[_0x343d('0x11')](0x1f4,_0x1939c9['message']));});});};
\ No newline at end of file
index 8ccce58..e651d24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83b9=['connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./intFreshdeskConfiguration.controller','get','isAuthenticated','index','/:id','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','create','put','update','delete','destroy','exports','multer','util','path'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x83b9,0x7f));var _0x983b=function(_0x4108e9,_0x58da63){_0x4108e9=_0x4108e9-0x0;var _0x369cc4=_0x83b9[_0x4108e9];return _0x369cc4;};'use strict';var multer=require(_0x983b('0x0'));var util=require(_0x983b('0x1'));var path=require(_0x983b('0x2'));var timeout=require(_0x983b('0x3'));var express=require('express');var router=express[_0x983b('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x983b('0x5'));var interaction=require(_0x983b('0x6'));var config=require('../../config/environment');var controller=require(_0x983b('0x7'));router[_0x983b('0x8')]('/',auth[_0x983b('0x9')](),controller[_0x983b('0xa')]);router[_0x983b('0x8')](_0x983b('0xb'),auth[_0x983b('0x9')](),controller['show']);router[_0x983b('0x8')](_0x983b('0xc'),auth['isAuthenticated'](),controller[_0x983b('0xd')]);router[_0x983b('0x8')](_0x983b('0xe'),auth[_0x983b('0x9')](),controller['getSubjects']);router[_0x983b('0x8')](_0x983b('0xf'),auth[_0x983b('0x9')](),controller[_0x983b('0x10')]);router[_0x983b('0x8')](_0x983b('0x11'),auth[_0x983b('0x9')](),controller[_0x983b('0x12')]);router[_0x983b('0x13')]('/',auth[_0x983b('0x9')](),controller[_0x983b('0x14')]);router['post']('/:id/tags',auth['isAuthenticated'](),controller['setTags']);router[_0x983b('0x15')](_0x983b('0xb'),auth[_0x983b('0x9')](),controller[_0x983b('0x16')]);router[_0x983b('0x17')]('/:id',auth[_0x983b('0x9')](),controller[_0x983b('0x18')]);module[_0x983b('0x19')]=router;
\ No newline at end of file
+var _0xd2f4=['getFields','/:id/subjects','getSubjects','/:id/descriptions','post','create','/:id/tags','update','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/fields'];(function(_0x8f35ee,_0x41ddc6){var _0x42d2ef=function(_0x3e2798){while(--_0x3e2798){_0x8f35ee['push'](_0x8f35ee['shift']());}};_0x42d2ef(++_0x41ddc6);}(_0xd2f4,0x150));var _0x4d2f=function(_0x1631cf,_0x231557){_0x1631cf=_0x1631cf-0x0;var _0x25e911=_0xd2f4[_0x1631cf];return _0x25e911;};'use strict';var multer=require(_0x4d2f('0x0'));var util=require(_0x4d2f('0x1'));var path=require(_0x4d2f('0x2'));var timeout=require(_0x4d2f('0x3'));var express=require(_0x4d2f('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x4d2f('0x5'));var interaction=require(_0x4d2f('0x6'));var config=require(_0x4d2f('0x7'));var controller=require('./intFreshdeskConfiguration.controller');router[_0x4d2f('0x8')]('/',auth[_0x4d2f('0x9')](),controller[_0x4d2f('0xa')]);router[_0x4d2f('0x8')](_0x4d2f('0xb'),auth[_0x4d2f('0x9')](),controller[_0x4d2f('0xc')]);router['get'](_0x4d2f('0xd'),auth[_0x4d2f('0x9')](),controller[_0x4d2f('0xe')]);router[_0x4d2f('0x8')](_0x4d2f('0xf'),auth[_0x4d2f('0x9')](),controller[_0x4d2f('0x10')]);router[_0x4d2f('0x8')](_0x4d2f('0x11'),auth[_0x4d2f('0x9')](),controller['getDescriptions']);router[_0x4d2f('0x8')]('/:id/tags',auth[_0x4d2f('0x9')](),controller['getTags']);router[_0x4d2f('0x12')]('/',auth[_0x4d2f('0x9')](),controller[_0x4d2f('0x13')]);router[_0x4d2f('0x12')](_0x4d2f('0x14'),auth[_0x4d2f('0x9')](),controller['setTags']);router['put'](_0x4d2f('0xb'),auth[_0x4d2f('0x9')](),controller[_0x4d2f('0x15')]);router[_0x4d2f('0x16')](_0x4d2f('0xb'),auth[_0x4d2f('0x9')](),controller[_0x4d2f('0x17')]);module[_0x4d2f('0x18')]=router;
\ No newline at end of file
index 7298cff..c46b719 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e25=['exports','STRING','sequelize'];(function(_0x170038,_0x430bfc){var _0x117982=function(_0x5278a6){while(--_0x5278a6){_0x170038['push'](_0x170038['shift']());}};_0x117982(++_0x430bfc);}(_0x2e25,0x92));var _0x52e2=function(_0x60e85e,_0x1611c7){_0x60e85e=_0x60e85e-0x0;var _0x5500e5=_0x2e25[_0x60e85e];return _0x5500e5;};'use strict';var Sequelize=require(_0x52e2('0x0'));module[_0x52e2('0x1')]={'name':{'type':Sequelize[_0x52e2('0x2')]},'description':{'type':Sequelize[_0x52e2('0x2')]}};
\ No newline at end of file
+var _0x854d=['STRING','sequelize'];(function(_0x15e749,_0x3f70d0){var _0xf62575=function(_0xfc899){while(--_0xfc899){_0x15e749['push'](_0x15e749['shift']());}};_0xf62575(++_0x3f70d0);}(_0x854d,0xf5));var _0xd854=function(_0x140e3e,_0x14dd43){_0x140e3e=_0x140e3e-0x0;var _0xdf0fdd=_0x854d[_0x140e3e];return _0xdf0fdd;};'use strict';var Sequelize=require(_0xd854('0x0'));module['exports']={'name':{'type':Sequelize[_0xd854('0x1')]},'description':{'type':Sequelize[_0xd854('0x1')]}};
\ No newline at end of file
index 5fec025..ca5b9c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c72=['attributes','fields','length','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','catch','create','body','find','getFields','findOne','pick','hasOwnProperty','nolimit','FreshdeskField','getDescriptions','Tag','getTags','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','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','then','destroy','error','stack','name','send','index','map','FreshdeskConfiguration','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model'];(function(_0x181a54,_0x3fd04c){var _0x59c884=function(_0x1143e7){while(--_0x1143e7){_0x181a54['push'](_0x181a54['shift']());}};_0x59c884(++_0x3fd04c);}(_0x9c72,0x173));var _0x29c7=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x9c72[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x29c7('0x0'));var rimraf=require(_0x29c7('0x1'));var zipdir=require(_0x29c7('0x2'));var jsonpatch=require(_0x29c7('0x3'));var rp=require(_0x29c7('0x4'));var moment=require(_0x29c7('0x5'));var BPromise=require(_0x29c7('0x6'));var Mustache=require(_0x29c7('0x7'));var util=require('util');var path=require(_0x29c7('0x8'));var sox=require(_0x29c7('0x9'));var csv=require(_0x29c7('0xa'));var ejs=require(_0x29c7('0xb'));var fs=require('fs');var fs_extra=require(_0x29c7('0xc'));var _=require(_0x29c7('0xd'));var squel=require(_0x29c7('0xe'));var crypto=require(_0x29c7('0xf'));var jsforce=require(_0x29c7('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x29c7('0xa'));var querystring=require(_0x29c7('0x11'));var Papa=require(_0x29c7('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x29c7('0x13'));var as=require(_0x29c7('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x29c7('0x15'))(_0x29c7('0x16'));var utils=require(_0x29c7('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x29c7('0x18'));var db=require(_0x29c7('0x19'))['db'];function respondWithStatusCode(_0x3d50cc,_0x506932){_0x506932=_0x506932||0xcc;return function(_0xe36b6b){if(_0xe36b6b){return _0x3d50cc[_0x29c7('0x1a')](_0x506932);}return _0x3d50cc[_0x29c7('0x1b')](_0x506932)[_0x29c7('0x1c')]();};}function respondWithResult(_0x25244d,_0x2bc0bf){_0x2bc0bf=_0x2bc0bf||0xc8;return function(_0x311ce7){if(_0x311ce7){return _0x25244d['status'](_0x2bc0bf)[_0x29c7('0x1d')](_0x311ce7);}};}function respondWithFilteredResult(_0x41e52e,_0x547d5d){return function(_0x13828a){if(_0x13828a){var _0x477aa3=typeof _0x547d5d[_0x29c7('0x1e')]==='undefined'&&typeof _0x547d5d[_0x29c7('0x1f')]===_0x29c7('0x20');var _0x3e2d8d=_0x13828a[_0x29c7('0x21')];var _0x56afb9=_0x477aa3?0x0:_0x547d5d['offset'];var _0x3cad29=_0x477aa3?_0x13828a['count']:_0x547d5d[_0x29c7('0x1e')]+_0x547d5d[_0x29c7('0x1f')];var _0x1f4749;if(_0x3cad29>=_0x3e2d8d){_0x3cad29=_0x3e2d8d;_0x1f4749=0xc8;}else{_0x1f4749=0xce;}_0x41e52e[_0x29c7('0x1b')](_0x1f4749);return _0x41e52e[_0x29c7('0x22')]('Content-Range',_0x56afb9+'-'+_0x3cad29+'/'+_0x3e2d8d)[_0x29c7('0x1d')](_0x13828a);}return null;};}function patchUpdates(_0x4132dc){return function(_0x7566a7){try{jsonpatch[_0x29c7('0x23')](_0x7566a7,_0x4132dc,!![]);}catch(_0x37def2){return BPromise['reject'](_0x37def2);}return _0x7566a7['save']();};}function saveUpdates(_0x34cdde,_0x363498){return function(_0x452c4f){if(_0x452c4f){return _0x452c4f['update'](_0x34cdde)[_0x29c7('0x24')](function(_0x4dd13a){return _0x4dd13a;});}return null;};}function removeEntity(_0x598688,_0x3aa89c){return function(_0x20c7fe){if(_0x20c7fe){return _0x20c7fe[_0x29c7('0x25')]()['then'](function(){_0x598688[_0x29c7('0x1b')](0xcc)[_0x29c7('0x1c')]();});}};}function handleEntityNotFound(_0x222b04,_0x27dde9){return function(_0x5941dc){if(!_0x5941dc){_0x222b04['sendStatus'](0x194);}return _0x5941dc;};}function handleError(_0x55e4a4,_0x25c0a6){_0x25c0a6=_0x25c0a6||0x1f4;return function(_0x1aff44){logger[_0x29c7('0x26')](_0x1aff44[_0x29c7('0x27')]);if(_0x1aff44[_0x29c7('0x28')]){delete _0x1aff44[_0x29c7('0x28')];}_0x55e4a4[_0x29c7('0x1b')](_0x25c0a6)[_0x29c7('0x29')](_0x1aff44);};}exports[_0x29c7('0x2a')]=function(_0x35a707,_0x18e5f0){var _0xb70567={},_0x533991={},_0x572515={'count':0x0,'rows':[]};var _0x552330=_[_0x29c7('0x2b')](db[_0x29c7('0x2c')][_0x29c7('0x2d')],function(_0x13bbc3){return{'name':_0x13bbc3[_0x29c7('0x2e')],'type':_0x13bbc3[_0x29c7('0x2f')][_0x29c7('0x30')]};});_0x533991['model']=_[_0x29c7('0x2b')](_0x552330,'name');_0x533991[_0x29c7('0x31')]=_[_0x29c7('0x32')](_0x35a707[_0x29c7('0x31')]);_0x533991[_0x29c7('0x33')]=_[_0x29c7('0x34')](_0x533991[_0x29c7('0x35')],_0x533991['query']);_0xb70567[_0x29c7('0x36')]=_[_0x29c7('0x34')](_0x533991[_0x29c7('0x35')],qs[_0x29c7('0x37')](_0x35a707['query'][_0x29c7('0x37')]));_0xb70567['attributes']=_0xb70567[_0x29c7('0x36')][_0x29c7('0x38')]?_0xb70567['attributes']:_0x533991[_0x29c7('0x35')];if(!_0x35a707[_0x29c7('0x31')]['hasOwnProperty']('nolimit')){_0xb70567[_0x29c7('0x1f')]=qs[_0x29c7('0x1f')](_0x35a707[_0x29c7('0x31')]['limit']);_0xb70567[_0x29c7('0x1e')]=qs['offset'](_0x35a707[_0x29c7('0x31')][_0x29c7('0x1e')]);}_0xb70567[_0x29c7('0x39')]=qs[_0x29c7('0x3a')](_0x35a707[_0x29c7('0x31')][_0x29c7('0x3a')]);_0xb70567[_0x29c7('0x3b')]=qs[_0x29c7('0x33')](_['pick'](_0x35a707[_0x29c7('0x31')],_0x533991[_0x29c7('0x33')]),_0x552330);if(_0x35a707[_0x29c7('0x31')]['filter']){_0xb70567[_0x29c7('0x3b')]=_[_0x29c7('0x3c')](_0xb70567[_0x29c7('0x3b')],{'$or':_[_0x29c7('0x2b')](_0x552330,function(_0x5a6bc2){if(_0x5a6bc2[_0x29c7('0x2f')]!==_0x29c7('0x3d')){var _0x3b81ea={};_0x3b81ea[_0x5a6bc2[_0x29c7('0x28')]]={'$like':'%'+_0x35a707[_0x29c7('0x31')][_0x29c7('0x3e')]+'%'};return _0x3b81ea;}})});}_0xb70567=_[_0x29c7('0x3c')]({},_0xb70567,_0x35a707[_0x29c7('0x3f')]);var _0x4ac129={'where':_0xb70567[_0x29c7('0x3b')]};return db['FreshdeskConfiguration'][_0x29c7('0x21')](_0x4ac129)['then'](function(_0x5ba9de){_0x572515[_0x29c7('0x21')]=_0x5ba9de;if(_0x35a707[_0x29c7('0x31')][_0x29c7('0x40')]){_0xb70567[_0x29c7('0x41')]=[{'all':!![]}];}return db[_0x29c7('0x2c')][_0x29c7('0x42')](_0xb70567);})['then'](function(_0x279959){_0x572515[_0x29c7('0x43')]=_0x279959;return _0x572515;})[_0x29c7('0x24')](respondWithFilteredResult(_0x18e5f0,_0xb70567))['catch'](handleError(_0x18e5f0,null));};exports[_0x29c7('0x44')]=function(_0x257be6,_0x301b98){var _0x42d626={'raw':![],'where':{'id':_0x257be6[_0x29c7('0x45')]['id']}},_0x4e19c8={};_0x4e19c8[_0x29c7('0x35')]=_[_0x29c7('0x32')](db[_0x29c7('0x2c')][_0x29c7('0x2d')]);_0x4e19c8['query']=_['keys'](_0x257be6[_0x29c7('0x31')]);_0x4e19c8['filters']=_[_0x29c7('0x34')](_0x4e19c8[_0x29c7('0x35')],_0x4e19c8[_0x29c7('0x31')]);_0x42d626[_0x29c7('0x36')]=_[_0x29c7('0x34')](_0x4e19c8[_0x29c7('0x35')],qs[_0x29c7('0x37')](_0x257be6['query'][_0x29c7('0x37')]));_0x42d626['attributes']=_0x42d626[_0x29c7('0x36')][_0x29c7('0x38')]?_0x42d626[_0x29c7('0x36')]:_0x4e19c8[_0x29c7('0x35')];if(_0x257be6[_0x29c7('0x31')][_0x29c7('0x40')]){_0x42d626[_0x29c7('0x41')]=[{'all':!![]}];}_0x42d626=_[_0x29c7('0x3c')]({},_0x42d626,_0x257be6[_0x29c7('0x3f')]);return db[_0x29c7('0x2c')]['find'](_0x42d626)['then'](handleEntityNotFound(_0x301b98,null))[_0x29c7('0x24')](respondWithResult(_0x301b98,null))[_0x29c7('0x46')](handleError(_0x301b98,null));};exports[_0x29c7('0x47')]=function(_0x309688,_0x4c8799){return db['FreshdeskConfiguration'][_0x29c7('0x47')](_0x309688[_0x29c7('0x48')],{})[_0x29c7('0x24')](respondWithResult(_0x4c8799,0xc9))[_0x29c7('0x46')](handleError(_0x4c8799,null));};exports['update']=function(_0x361388,_0x128da9){if(_0x361388[_0x29c7('0x48')]['id']){delete _0x361388['body']['id'];}return db[_0x29c7('0x2c')][_0x29c7('0x49')]({'where':{'id':_0x361388[_0x29c7('0x45')]['id']}})[_0x29c7('0x24')](handleEntityNotFound(_0x128da9,null))[_0x29c7('0x24')](saveUpdates(_0x361388[_0x29c7('0x48')],null))[_0x29c7('0x24')](respondWithResult(_0x128da9,null))[_0x29c7('0x46')](handleError(_0x128da9,null));};exports[_0x29c7('0x25')]=function(_0x1e0d44,_0x4b9598){return db[_0x29c7('0x2c')][_0x29c7('0x49')]({'where':{'id':_0x1e0d44[_0x29c7('0x45')]['id']}})[_0x29c7('0x24')](handleEntityNotFound(_0x4b9598,null))['then'](removeEntity(_0x4b9598,null))[_0x29c7('0x46')](handleError(_0x4b9598,null));};exports[_0x29c7('0x4a')]=function(_0x19a125,_0x24e63d,_0x3bafbe){var _0x31cb2b={};var _0x38de2c={};var _0xc548d5;var _0xdb2732;return db['FreshdeskConfiguration'][_0x29c7('0x4b')]({'where':{'id':_0x19a125[_0x29c7('0x45')]['id']}})[_0x29c7('0x24')](handleEntityNotFound(_0x24e63d,null))[_0x29c7('0x24')](function(_0x1e5fac){if(_0x1e5fac){_0xc548d5=_0x1e5fac;_0x38de2c['model']=_[_0x29c7('0x32')](db['FreshdeskField'][_0x29c7('0x2d')]);_0x38de2c[_0x29c7('0x31')]=_[_0x29c7('0x32')](_0x19a125['query']);_0x38de2c[_0x29c7('0x33')]=_['intersection'](_0x38de2c[_0x29c7('0x35')],_0x38de2c['query']);_0x31cb2b[_0x29c7('0x36')]=_['intersection'](_0x38de2c[_0x29c7('0x35')],qs[_0x29c7('0x37')](_0x19a125['query'][_0x29c7('0x37')]));_0x31cb2b[_0x29c7('0x36')]=_0x31cb2b['attributes'][_0x29c7('0x38')]?_0x31cb2b['attributes']:_0x38de2c[_0x29c7('0x35')];_0x31cb2b[_0x29c7('0x39')]=qs[_0x29c7('0x3a')](_0x19a125[_0x29c7('0x31')]['sort']);_0x31cb2b[_0x29c7('0x3b')]=qs[_0x29c7('0x33')](_[_0x29c7('0x4c')](_0x19a125[_0x29c7('0x31')],_0x38de2c[_0x29c7('0x33')]));if(_0x19a125[_0x29c7('0x31')]['filter']){_0x31cb2b[_0x29c7('0x3b')]=_[_0x29c7('0x3c')](_0x31cb2b[_0x29c7('0x3b')],{'$or':_[_0x29c7('0x2b')](_0x31cb2b['attributes'],function(_0x8d4e81){var _0x41b774={};_0x41b774[_0x8d4e81]={'$like':'%'+_0x19a125[_0x29c7('0x31')][_0x29c7('0x3e')]+'%'};return _0x41b774;})});}_0x31cb2b=_[_0x29c7('0x3c')]({},_0x31cb2b,_0x19a125[_0x29c7('0x3f')]);return _0xc548d5[_0x29c7('0x4a')](_0x31cb2b);}})[_0x29c7('0x24')](function(_0x4d9ac5){if(_0x4d9ac5){_0xdb2732=_0x4d9ac5[_0x29c7('0x38')];if(!_0x19a125[_0x29c7('0x31')][_0x29c7('0x4d')](_0x29c7('0x4e'))){_0x31cb2b['limit']=qs[_0x29c7('0x1f')](_0x19a125[_0x29c7('0x31')]['limit']);_0x31cb2b[_0x29c7('0x1e')]=qs[_0x29c7('0x1e')](_0x19a125[_0x29c7('0x31')]['offset']);}return _0xc548d5[_0x29c7('0x4a')](_0x31cb2b);}})['then'](function(_0x3ad9f9){if(_0x3ad9f9){return _0x3ad9f9?{'count':_0xdb2732,'rows':_0x3ad9f9}:null;}})[_0x29c7('0x24')](respondWithResult(_0x24e63d,null))['catch'](handleError(_0x24e63d,null));};exports['getSubjects']=function(_0xbe37e7,_0x1eeae9,_0xf67c58){var _0xcd2f2e={};var _0x249a24={};var _0x3d2d2e;var _0x5977fa;return db[_0x29c7('0x2c')][_0x29c7('0x4b')]({'where':{'id':_0xbe37e7['params']['id']}})[_0x29c7('0x24')](handleEntityNotFound(_0x1eeae9,null))[_0x29c7('0x24')](function(_0x48a8b1){if(_0x48a8b1){_0x3d2d2e=_0x48a8b1;_0x249a24[_0x29c7('0x35')]=_[_0x29c7('0x32')](db[_0x29c7('0x4f')][_0x29c7('0x2d')]);_0x249a24[_0x29c7('0x31')]=_[_0x29c7('0x32')](_0xbe37e7[_0x29c7('0x31')]);_0x249a24['filters']=_[_0x29c7('0x34')](_0x249a24[_0x29c7('0x35')],_0x249a24[_0x29c7('0x31')]);_0xcd2f2e['attributes']=_['intersection'](_0x249a24[_0x29c7('0x35')],qs[_0x29c7('0x37')](_0xbe37e7['query'][_0x29c7('0x37')]));_0xcd2f2e[_0x29c7('0x36')]=_0xcd2f2e[_0x29c7('0x36')][_0x29c7('0x38')]?_0xcd2f2e[_0x29c7('0x36')]:_0x249a24[_0x29c7('0x35')];_0xcd2f2e['order']=qs[_0x29c7('0x3a')](_0xbe37e7['query']['sort']);_0xcd2f2e[_0x29c7('0x3b')]=qs['filters'](_['pick'](_0xbe37e7[_0x29c7('0x31')],_0x249a24[_0x29c7('0x33')]));if(_0xbe37e7[_0x29c7('0x31')][_0x29c7('0x3e')]){_0xcd2f2e[_0x29c7('0x3b')]=_[_0x29c7('0x3c')](_0xcd2f2e[_0x29c7('0x3b')],{'$or':_[_0x29c7('0x2b')](_0xcd2f2e[_0x29c7('0x36')],function(_0x313255){var _0x5bae76={};_0x5bae76[_0x313255]={'$like':'%'+_0xbe37e7[_0x29c7('0x31')]['filter']+'%'};return _0x5bae76;})});}_0xcd2f2e=_[_0x29c7('0x3c')]({},_0xcd2f2e,_0xbe37e7['options']);return _0x3d2d2e['getSubjects'](_0xcd2f2e);}})['then'](function(_0x22140e){if(_0x22140e){_0x5977fa=_0x22140e['length'];if(!_0xbe37e7[_0x29c7('0x31')]['hasOwnProperty'](_0x29c7('0x4e'))){_0xcd2f2e['limit']=qs[_0x29c7('0x1f')](_0xbe37e7[_0x29c7('0x31')][_0x29c7('0x1f')]);_0xcd2f2e[_0x29c7('0x1e')]=qs['offset'](_0xbe37e7[_0x29c7('0x31')][_0x29c7('0x1e')]);}return _0x3d2d2e['getSubjects'](_0xcd2f2e);}})[_0x29c7('0x24')](function(_0x263eac){if(_0x263eac){return _0x263eac?{'count':_0x5977fa,'rows':_0x263eac}:null;}})['then'](respondWithResult(_0x1eeae9,null))[_0x29c7('0x46')](handleError(_0x1eeae9,null));};exports[_0x29c7('0x50')]=function(_0x47ff92,_0x5a4360,_0x47aa85){var _0x4e3383={};var _0x339211={};var _0x4157cc;var _0x571ce7;return db[_0x29c7('0x2c')][_0x29c7('0x4b')]({'where':{'id':_0x47ff92['params']['id']}})['then'](handleEntityNotFound(_0x5a4360,null))[_0x29c7('0x24')](function(_0x35bf36){if(_0x35bf36){_0x4157cc=_0x35bf36;_0x339211[_0x29c7('0x35')]=_[_0x29c7('0x32')](db[_0x29c7('0x4f')][_0x29c7('0x2d')]);_0x339211[_0x29c7('0x31')]=_[_0x29c7('0x32')](_0x47ff92[_0x29c7('0x31')]);_0x339211[_0x29c7('0x33')]=_[_0x29c7('0x34')](_0x339211[_0x29c7('0x35')],_0x339211['query']);_0x4e3383[_0x29c7('0x36')]=_[_0x29c7('0x34')](_0x339211[_0x29c7('0x35')],qs[_0x29c7('0x37')](_0x47ff92[_0x29c7('0x31')][_0x29c7('0x37')]));_0x4e3383[_0x29c7('0x36')]=_0x4e3383[_0x29c7('0x36')][_0x29c7('0x38')]?_0x4e3383[_0x29c7('0x36')]:_0x339211[_0x29c7('0x35')];_0x4e3383[_0x29c7('0x39')]=qs[_0x29c7('0x3a')](_0x47ff92['query'][_0x29c7('0x3a')]);_0x4e3383[_0x29c7('0x3b')]=qs['filters'](_[_0x29c7('0x4c')](_0x47ff92[_0x29c7('0x31')],_0x339211[_0x29c7('0x33')]));if(_0x47ff92[_0x29c7('0x31')]['filter']){_0x4e3383[_0x29c7('0x3b')]=_[_0x29c7('0x3c')](_0x4e3383[_0x29c7('0x3b')],{'$or':_[_0x29c7('0x2b')](_0x4e3383[_0x29c7('0x36')],function(_0x3c282d){var _0x39dc0c={};_0x39dc0c[_0x3c282d]={'$like':'%'+_0x47ff92[_0x29c7('0x31')][_0x29c7('0x3e')]+'%'};return _0x39dc0c;})});}_0x4e3383=_[_0x29c7('0x3c')]({},_0x4e3383,_0x47ff92[_0x29c7('0x3f')]);return _0x4157cc[_0x29c7('0x50')](_0x4e3383);}})[_0x29c7('0x24')](function(_0x35a276){if(_0x35a276){_0x571ce7=_0x35a276['length'];if(!_0x47ff92[_0x29c7('0x31')][_0x29c7('0x4d')](_0x29c7('0x4e'))){_0x4e3383[_0x29c7('0x1f')]=qs[_0x29c7('0x1f')](_0x47ff92[_0x29c7('0x31')][_0x29c7('0x1f')]);_0x4e3383[_0x29c7('0x1e')]=qs['offset'](_0x47ff92[_0x29c7('0x31')][_0x29c7('0x1e')]);}return _0x4157cc[_0x29c7('0x50')](_0x4e3383);}})[_0x29c7('0x24')](function(_0x599cd1){if(_0x599cd1){return _0x599cd1?{'count':_0x571ce7,'rows':_0x599cd1}:null;}})['then'](respondWithResult(_0x5a4360,null))[_0x29c7('0x46')](handleError(_0x5a4360,null));};exports['getTags']=function(_0x519995,_0x37c9a0,_0x3c6ab4){var _0x1214b8={};var _0x24c114={};var _0x2d3307;var _0x6b5d1d;return db[_0x29c7('0x2c')]['findOne']({'where':{'id':_0x519995['params']['id']}})[_0x29c7('0x24')](handleEntityNotFound(_0x37c9a0,null))[_0x29c7('0x24')](function(_0x237388){if(_0x237388){_0x2d3307=_0x237388;_0x24c114[_0x29c7('0x35')]=_[_0x29c7('0x32')](db[_0x29c7('0x51')][_0x29c7('0x2d')]);_0x24c114['query']=_['keys'](_0x519995[_0x29c7('0x31')]);_0x24c114[_0x29c7('0x33')]=_[_0x29c7('0x34')](_0x24c114['model'],_0x24c114[_0x29c7('0x31')]);_0x1214b8['attributes']=_[_0x29c7('0x34')](_0x24c114['model'],qs[_0x29c7('0x37')](_0x519995[_0x29c7('0x31')][_0x29c7('0x37')]));_0x1214b8[_0x29c7('0x36')]=_0x1214b8[_0x29c7('0x36')][_0x29c7('0x38')]?_0x1214b8[_0x29c7('0x36')]:_0x24c114[_0x29c7('0x35')];_0x1214b8[_0x29c7('0x39')]=qs[_0x29c7('0x3a')](_0x519995[_0x29c7('0x31')][_0x29c7('0x3a')]);_0x1214b8['where']=qs[_0x29c7('0x33')](_['pick'](_0x519995['query'],_0x24c114[_0x29c7('0x33')]));if(_0x519995[_0x29c7('0x31')][_0x29c7('0x3e')]){_0x1214b8[_0x29c7('0x3b')]=_[_0x29c7('0x3c')](_0x1214b8['where'],{'$or':_['map'](_0x1214b8[_0x29c7('0x36')],function(_0x4a600f){var _0x36710f={};_0x36710f[_0x4a600f]={'$like':'%'+_0x519995[_0x29c7('0x31')][_0x29c7('0x3e')]+'%'};return _0x36710f;})});}_0x1214b8=_['merge']({},_0x1214b8,_0x519995['options']);return _0x2d3307[_0x29c7('0x52')](_0x1214b8);}})[_0x29c7('0x24')](function(_0x59e3be){if(_0x59e3be){_0x6b5d1d=_0x59e3be[_0x29c7('0x38')];if(!_0x519995[_0x29c7('0x31')][_0x29c7('0x4d')](_0x29c7('0x4e'))){_0x1214b8[_0x29c7('0x1f')]=qs[_0x29c7('0x1f')](_0x519995[_0x29c7('0x31')]['limit']);_0x1214b8[_0x29c7('0x1e')]=qs['offset'](_0x519995[_0x29c7('0x31')]['offset']);}return _0x2d3307[_0x29c7('0x52')](_0x1214b8);}})[_0x29c7('0x24')](function(_0x5343cd){if(_0x5343cd){return _0x5343cd?{'count':_0x6b5d1d,'rows':_0x5343cd}:null;}})[_0x29c7('0x24')](respondWithResult(_0x37c9a0,null))['catch'](handleError(_0x37c9a0,null));};exports[_0x29c7('0x53')]=function(_0x19414b,_0x149d76,_0x247f79){if(_0x19414b['body']['id']){delete _0x19414b['body']['id'];}return db[_0x29c7('0x2c')][_0x29c7('0x4b')]({'where':{'id':_0x19414b['params']['id']}})[_0x29c7('0x24')](handleEntityNotFound(_0x149d76,null))[_0x29c7('0x24')](function(_0x54256f){if(_0x54256f){return _0x54256f[_0x29c7('0x53')](_0x19414b[_0x29c7('0x48')][_0x29c7('0x54')]||[]);}return null;})[_0x29c7('0x24')](respondWithResult(_0x149d76,null))['catch'](handleError(_0x149d76,null));};
\ No newline at end of file
+var _0x0565=['getTags','Tag','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','destroy','then','end','name','send','index','FreshdeskConfiguration','rawAttributes','fieldName','type','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','includeAll','findAll','rows','find','catch','create','body','findOne','params','FreshdeskField','getFields','getSubjects','getDescriptions'];(function(_0x55f8fa,_0x616528){var _0x20a9a9=function(_0x337bb5){while(--_0x337bb5){_0x55f8fa['push'](_0x55f8fa['shift']());}};_0x20a9a9(++_0x616528);}(_0x0565,0xae));var _0x5056=function(_0x307d86,_0x9264f2){_0x307d86=_0x307d86-0x0;var _0x361745=_0x0565[_0x307d86];return _0x361745;};'use strict';var emlformat=require(_0x5056('0x0'));var rimraf=require(_0x5056('0x1'));var zipdir=require(_0x5056('0x2'));var jsonpatch=require(_0x5056('0x3'));var rp=require(_0x5056('0x4'));var moment=require('moment');var BPromise=require(_0x5056('0x5'));var Mustache=require(_0x5056('0x6'));var util=require(_0x5056('0x7'));var path=require(_0x5056('0x8'));var sox=require(_0x5056('0x9'));var csv=require(_0x5056('0xa'));var ejs=require(_0x5056('0xb'));var fs=require('fs');var fs_extra=require(_0x5056('0xc'));var _=require('lodash');var squel=require(_0x5056('0xd'));var crypto=require('crypto');var jsforce=require(_0x5056('0xe'));var deskjs=require(_0x5056('0xf'));var toCsv=require('to-csv');var querystring=require(_0x5056('0x10'));var Papa=require(_0x5056('0x11'));var Redis=require(_0x5056('0x12'));var authService=require(_0x5056('0x13'));var qs=require(_0x5056('0x14'));var as=require(_0x5056('0x15'));var hardwareService=require(_0x5056('0x16'));var logger=require('../../config/logger')(_0x5056('0x17'));var utils=require('../../config/utils');var config=require(_0x5056('0x18'));var licenseUtil=require(_0x5056('0x19'));var db=require(_0x5056('0x1a'))['db'];function respondWithStatusCode(_0x2e274c,_0x12a328){_0x12a328=_0x12a328||0xcc;return function(_0x3b6f74){if(_0x3b6f74){return _0x2e274c[_0x5056('0x1b')](_0x12a328);}return _0x2e274c[_0x5056('0x1c')](_0x12a328)['end']();};}function respondWithResult(_0x2a2225,_0x11711d){_0x11711d=_0x11711d||0xc8;return function(_0x83fa03){if(_0x83fa03){return _0x2a2225[_0x5056('0x1c')](_0x11711d)[_0x5056('0x1d')](_0x83fa03);}};}function respondWithFilteredResult(_0x2636df,_0x42b0ed){return function(_0x4b8c73){if(_0x4b8c73){var _0x34c7a5=typeof _0x42b0ed['offset']===_0x5056('0x1e')&&typeof _0x42b0ed[_0x5056('0x1f')]===_0x5056('0x1e');var _0x5076aa=_0x4b8c73[_0x5056('0x20')];var _0x44d7d8=_0x34c7a5?0x0:_0x42b0ed[_0x5056('0x21')];var _0x5e874a=_0x34c7a5?_0x4b8c73[_0x5056('0x20')]:_0x42b0ed[_0x5056('0x21')]+_0x42b0ed['limit'];var _0x2264cf;if(_0x5e874a>=_0x5076aa){_0x5e874a=_0x5076aa;_0x2264cf=0xc8;}else{_0x2264cf=0xce;}_0x2636df['status'](_0x2264cf);return _0x2636df[_0x5056('0x22')](_0x5056('0x23'),_0x44d7d8+'-'+_0x5e874a+'/'+_0x5076aa)[_0x5056('0x1d')](_0x4b8c73);}return null;};}function patchUpdates(_0x5c397e){return function(_0x424f15){try{jsonpatch[_0x5056('0x24')](_0x424f15,_0x5c397e,!![]);}catch(_0x5af8ab){return BPromise[_0x5056('0x25')](_0x5af8ab);}return _0x424f15[_0x5056('0x26')]();};}function saveUpdates(_0x5ccaee,_0x480994){return function(_0x37c8e6){if(_0x37c8e6){return _0x37c8e6[_0x5056('0x27')](_0x5ccaee)['then'](function(_0x41afb8){return _0x41afb8;});}return null;};}function removeEntity(_0x5d68c4,_0x5b3555){return function(_0x7e0438){if(_0x7e0438){return _0x7e0438[_0x5056('0x28')]()[_0x5056('0x29')](function(){_0x5d68c4[_0x5056('0x1c')](0xcc)[_0x5056('0x2a')]();});}};}function handleEntityNotFound(_0x4b84b8,_0x308c97){return function(_0x962a09){if(!_0x962a09){_0x4b84b8['sendStatus'](0x194);}return _0x962a09;};}function handleError(_0x1e3979,_0xd7ded3){_0xd7ded3=_0xd7ded3||0x1f4;return function(_0x18dea6){logger['error'](_0x18dea6['stack']);if(_0x18dea6[_0x5056('0x2b')]){delete _0x18dea6[_0x5056('0x2b')];}_0x1e3979[_0x5056('0x1c')](_0xd7ded3)[_0x5056('0x2c')](_0x18dea6);};}exports[_0x5056('0x2d')]=function(_0x426cd8,_0x5d8fd2){var _0x340e54={},_0x572374={},_0x61d5ee={'count':0x0,'rows':[]};var _0x4133d9=_['map'](db[_0x5056('0x2e')][_0x5056('0x2f')],function(_0x58ea8c){return{'name':_0x58ea8c[_0x5056('0x30')],'type':_0x58ea8c[_0x5056('0x31')]['key']};});_0x572374[_0x5056('0x32')]=_[_0x5056('0x33')](_0x4133d9,_0x5056('0x2b'));_0x572374[_0x5056('0x34')]=_[_0x5056('0x35')](_0x426cd8[_0x5056('0x34')]);_0x572374['filters']=_[_0x5056('0x36')](_0x572374[_0x5056('0x32')],_0x572374['query']);_0x340e54[_0x5056('0x37')]=_[_0x5056('0x36')](_0x572374['model'],qs[_0x5056('0x38')](_0x426cd8[_0x5056('0x34')]['fields']));_0x340e54['attributes']=_0x340e54['attributes'][_0x5056('0x39')]?_0x340e54[_0x5056('0x37')]:_0x572374['model'];if(!_0x426cd8['query'][_0x5056('0x3a')](_0x5056('0x3b'))){_0x340e54[_0x5056('0x1f')]=qs[_0x5056('0x1f')](_0x426cd8[_0x5056('0x34')]['limit']);_0x340e54['offset']=qs[_0x5056('0x21')](_0x426cd8['query'][_0x5056('0x21')]);}_0x340e54[_0x5056('0x3c')]=qs[_0x5056('0x3d')](_0x426cd8[_0x5056('0x34')][_0x5056('0x3d')]);_0x340e54[_0x5056('0x3e')]=qs['filters'](_[_0x5056('0x3f')](_0x426cd8[_0x5056('0x34')],_0x572374[_0x5056('0x40')]),_0x4133d9);if(_0x426cd8[_0x5056('0x34')][_0x5056('0x41')]){_0x340e54[_0x5056('0x3e')]=_[_0x5056('0x42')](_0x340e54[_0x5056('0x3e')],{'$or':_[_0x5056('0x33')](_0x4133d9,function(_0x51d946){if(_0x51d946['type']!==_0x5056('0x43')){var _0x5c8845={};_0x5c8845[_0x51d946[_0x5056('0x2b')]]={'$like':'%'+_0x426cd8[_0x5056('0x34')][_0x5056('0x41')]+'%'};return _0x5c8845;}})});}_0x340e54=_[_0x5056('0x42')]({},_0x340e54,_0x426cd8['options']);var _0x3abfe0={'where':_0x340e54[_0x5056('0x3e')]};return db[_0x5056('0x2e')][_0x5056('0x20')](_0x3abfe0)[_0x5056('0x29')](function(_0x2c0543){_0x61d5ee['count']=_0x2c0543;if(_0x426cd8[_0x5056('0x34')][_0x5056('0x44')]){_0x340e54['include']=[{'all':!![]}];}return db[_0x5056('0x2e')][_0x5056('0x45')](_0x340e54);})['then'](function(_0x1e2e4d){_0x61d5ee[_0x5056('0x46')]=_0x1e2e4d;return _0x61d5ee;})['then'](respondWithFilteredResult(_0x5d8fd2,_0x340e54))['catch'](handleError(_0x5d8fd2,null));};exports['show']=function(_0x9800e5,_0x490f17){var _0x32fe84={'raw':![],'where':{'id':_0x9800e5['params']['id']}},_0x450e4d={};_0x450e4d[_0x5056('0x32')]=_[_0x5056('0x35')](db['FreshdeskConfiguration'][_0x5056('0x2f')]);_0x450e4d['query']=_[_0x5056('0x35')](_0x9800e5[_0x5056('0x34')]);_0x450e4d['filters']=_[_0x5056('0x36')](_0x450e4d['model'],_0x450e4d['query']);_0x32fe84[_0x5056('0x37')]=_[_0x5056('0x36')](_0x450e4d[_0x5056('0x32')],qs[_0x5056('0x38')](_0x9800e5['query'][_0x5056('0x38')]));_0x32fe84[_0x5056('0x37')]=_0x32fe84[_0x5056('0x37')][_0x5056('0x39')]?_0x32fe84[_0x5056('0x37')]:_0x450e4d[_0x5056('0x32')];if(_0x9800e5[_0x5056('0x34')][_0x5056('0x44')]){_0x32fe84['include']=[{'all':!![]}];}_0x32fe84=_[_0x5056('0x42')]({},_0x32fe84,_0x9800e5['options']);return db[_0x5056('0x2e')][_0x5056('0x47')](_0x32fe84)['then'](handleEntityNotFound(_0x490f17,null))['then'](respondWithResult(_0x490f17,null))[_0x5056('0x48')](handleError(_0x490f17,null));};exports[_0x5056('0x49')]=function(_0x53a7c7,_0x319aca){return db[_0x5056('0x2e')][_0x5056('0x49')](_0x53a7c7[_0x5056('0x4a')],{})[_0x5056('0x29')](respondWithResult(_0x319aca,0xc9))[_0x5056('0x48')](handleError(_0x319aca,null));};exports[_0x5056('0x27')]=function(_0x4cbbad,_0x574954){if(_0x4cbbad['body']['id']){delete _0x4cbbad[_0x5056('0x4a')]['id'];}return db[_0x5056('0x2e')]['find']({'where':{'id':_0x4cbbad['params']['id']}})[_0x5056('0x29')](handleEntityNotFound(_0x574954,null))[_0x5056('0x29')](saveUpdates(_0x4cbbad[_0x5056('0x4a')],null))[_0x5056('0x29')](respondWithResult(_0x574954,null))[_0x5056('0x48')](handleError(_0x574954,null));};exports['destroy']=function(_0x1846a1,_0x278ce5){return db[_0x5056('0x2e')]['find']({'where':{'id':_0x1846a1['params']['id']}})['then'](handleEntityNotFound(_0x278ce5,null))[_0x5056('0x29')](removeEntity(_0x278ce5,null))['catch'](handleError(_0x278ce5,null));};exports['getFields']=function(_0x5be359,_0x58633a,_0x188aa8){var _0x2133d9={};var _0xdc4c15={};var _0xa65adf;var _0x46ec01;return db[_0x5056('0x2e')][_0x5056('0x4b')]({'where':{'id':_0x5be359[_0x5056('0x4c')]['id']}})[_0x5056('0x29')](handleEntityNotFound(_0x58633a,null))[_0x5056('0x29')](function(_0xda2f66){if(_0xda2f66){_0xa65adf=_0xda2f66;_0xdc4c15[_0x5056('0x32')]=_[_0x5056('0x35')](db[_0x5056('0x4d')][_0x5056('0x2f')]);_0xdc4c15[_0x5056('0x34')]=_[_0x5056('0x35')](_0x5be359['query']);_0xdc4c15[_0x5056('0x40')]=_[_0x5056('0x36')](_0xdc4c15['model'],_0xdc4c15['query']);_0x2133d9[_0x5056('0x37')]=_[_0x5056('0x36')](_0xdc4c15[_0x5056('0x32')],qs[_0x5056('0x38')](_0x5be359['query'][_0x5056('0x38')]));_0x2133d9[_0x5056('0x37')]=_0x2133d9[_0x5056('0x37')][_0x5056('0x39')]?_0x2133d9[_0x5056('0x37')]:_0xdc4c15['model'];_0x2133d9['order']=qs['sort'](_0x5be359[_0x5056('0x34')][_0x5056('0x3d')]);_0x2133d9['where']=qs[_0x5056('0x40')](_[_0x5056('0x3f')](_0x5be359[_0x5056('0x34')],_0xdc4c15['filters']));if(_0x5be359[_0x5056('0x34')]['filter']){_0x2133d9['where']=_['merge'](_0x2133d9[_0x5056('0x3e')],{'$or':_['map'](_0x2133d9[_0x5056('0x37')],function(_0x2451e6){var _0x35ec1a={};_0x35ec1a[_0x2451e6]={'$like':'%'+_0x5be359[_0x5056('0x34')][_0x5056('0x41')]+'%'};return _0x35ec1a;})});}_0x2133d9=_['merge']({},_0x2133d9,_0x5be359['options']);return _0xa65adf[_0x5056('0x4e')](_0x2133d9);}})[_0x5056('0x29')](function(_0x2a5f21){if(_0x2a5f21){_0x46ec01=_0x2a5f21[_0x5056('0x39')];if(!_0x5be359[_0x5056('0x34')][_0x5056('0x3a')](_0x5056('0x3b'))){_0x2133d9[_0x5056('0x1f')]=qs[_0x5056('0x1f')](_0x5be359['query'][_0x5056('0x1f')]);_0x2133d9[_0x5056('0x21')]=qs['offset'](_0x5be359['query'][_0x5056('0x21')]);}return _0xa65adf['getFields'](_0x2133d9);}})['then'](function(_0x39330f){if(_0x39330f){return _0x39330f?{'count':_0x46ec01,'rows':_0x39330f}:null;}})['then'](respondWithResult(_0x58633a,null))['catch'](handleError(_0x58633a,null));};exports[_0x5056('0x4f')]=function(_0x2911c9,_0x8606dd,_0x35e69e){var _0x362506={};var _0x4f6a8d={};var _0x5bf337;var _0x28bab9;return db['FreshdeskConfiguration'][_0x5056('0x4b')]({'where':{'id':_0x2911c9['params']['id']}})[_0x5056('0x29')](handleEntityNotFound(_0x8606dd,null))['then'](function(_0x2ceffb){if(_0x2ceffb){_0x5bf337=_0x2ceffb;_0x4f6a8d[_0x5056('0x32')]=_[_0x5056('0x35')](db['FreshdeskField']['rawAttributes']);_0x4f6a8d[_0x5056('0x34')]=_['keys'](_0x2911c9[_0x5056('0x34')]);_0x4f6a8d[_0x5056('0x40')]=_[_0x5056('0x36')](_0x4f6a8d[_0x5056('0x32')],_0x4f6a8d['query']);_0x362506[_0x5056('0x37')]=_[_0x5056('0x36')](_0x4f6a8d['model'],qs[_0x5056('0x38')](_0x2911c9[_0x5056('0x34')]['fields']));_0x362506['attributes']=_0x362506[_0x5056('0x37')][_0x5056('0x39')]?_0x362506['attributes']:_0x4f6a8d[_0x5056('0x32')];_0x362506[_0x5056('0x3c')]=qs[_0x5056('0x3d')](_0x2911c9[_0x5056('0x34')]['sort']);_0x362506['where']=qs[_0x5056('0x40')](_[_0x5056('0x3f')](_0x2911c9[_0x5056('0x34')],_0x4f6a8d[_0x5056('0x40')]));if(_0x2911c9[_0x5056('0x34')][_0x5056('0x41')]){_0x362506[_0x5056('0x3e')]=_[_0x5056('0x42')](_0x362506[_0x5056('0x3e')],{'$or':_[_0x5056('0x33')](_0x362506[_0x5056('0x37')],function(_0x15cca7){var _0x2e6a94={};_0x2e6a94[_0x15cca7]={'$like':'%'+_0x2911c9[_0x5056('0x34')]['filter']+'%'};return _0x2e6a94;})});}_0x362506=_['merge']({},_0x362506,_0x2911c9['options']);return _0x5bf337['getSubjects'](_0x362506);}})[_0x5056('0x29')](function(_0x5e5b05){if(_0x5e5b05){_0x28bab9=_0x5e5b05[_0x5056('0x39')];if(!_0x2911c9[_0x5056('0x34')][_0x5056('0x3a')]('nolimit')){_0x362506['limit']=qs[_0x5056('0x1f')](_0x2911c9[_0x5056('0x34')][_0x5056('0x1f')]);_0x362506[_0x5056('0x21')]=qs[_0x5056('0x21')](_0x2911c9[_0x5056('0x34')][_0x5056('0x21')]);}return _0x5bf337[_0x5056('0x4f')](_0x362506);}})[_0x5056('0x29')](function(_0x551c7d){if(_0x551c7d){return _0x551c7d?{'count':_0x28bab9,'rows':_0x551c7d}:null;}})[_0x5056('0x29')](respondWithResult(_0x8606dd,null))[_0x5056('0x48')](handleError(_0x8606dd,null));};exports['getDescriptions']=function(_0x3c63ac,_0x3fa512,_0x47dd5b){var _0x4c6aa8={};var _0x2f0198={};var _0x578620;var _0x347fa9;return db['FreshdeskConfiguration'][_0x5056('0x4b')]({'where':{'id':_0x3c63ac[_0x5056('0x4c')]['id']}})[_0x5056('0x29')](handleEntityNotFound(_0x3fa512,null))['then'](function(_0x183393){if(_0x183393){_0x578620=_0x183393;_0x2f0198[_0x5056('0x32')]=_['keys'](db[_0x5056('0x4d')][_0x5056('0x2f')]);_0x2f0198['query']=_['keys'](_0x3c63ac[_0x5056('0x34')]);_0x2f0198[_0x5056('0x40')]=_[_0x5056('0x36')](_0x2f0198[_0x5056('0x32')],_0x2f0198[_0x5056('0x34')]);_0x4c6aa8[_0x5056('0x37')]=_[_0x5056('0x36')](_0x2f0198['model'],qs[_0x5056('0x38')](_0x3c63ac[_0x5056('0x34')][_0x5056('0x38')]));_0x4c6aa8[_0x5056('0x37')]=_0x4c6aa8[_0x5056('0x37')]['length']?_0x4c6aa8[_0x5056('0x37')]:_0x2f0198[_0x5056('0x32')];_0x4c6aa8['order']=qs[_0x5056('0x3d')](_0x3c63ac['query']['sort']);_0x4c6aa8[_0x5056('0x3e')]=qs[_0x5056('0x40')](_[_0x5056('0x3f')](_0x3c63ac['query'],_0x2f0198[_0x5056('0x40')]));if(_0x3c63ac['query']['filter']){_0x4c6aa8[_0x5056('0x3e')]=_[_0x5056('0x42')](_0x4c6aa8[_0x5056('0x3e')],{'$or':_[_0x5056('0x33')](_0x4c6aa8[_0x5056('0x37')],function(_0x565a92){var _0x211cd5={};_0x211cd5[_0x565a92]={'$like':'%'+_0x3c63ac[_0x5056('0x34')][_0x5056('0x41')]+'%'};return _0x211cd5;})});}_0x4c6aa8=_[_0x5056('0x42')]({},_0x4c6aa8,_0x3c63ac['options']);return _0x578620[_0x5056('0x50')](_0x4c6aa8);}})[_0x5056('0x29')](function(_0x374723){if(_0x374723){_0x347fa9=_0x374723[_0x5056('0x39')];if(!_0x3c63ac['query'][_0x5056('0x3a')]('nolimit')){_0x4c6aa8[_0x5056('0x1f')]=qs[_0x5056('0x1f')](_0x3c63ac[_0x5056('0x34')]['limit']);_0x4c6aa8[_0x5056('0x21')]=qs['offset'](_0x3c63ac[_0x5056('0x34')]['offset']);}return _0x578620[_0x5056('0x50')](_0x4c6aa8);}})[_0x5056('0x29')](function(_0x3f2062){if(_0x3f2062){return _0x3f2062?{'count':_0x347fa9,'rows':_0x3f2062}:null;}})[_0x5056('0x29')](respondWithResult(_0x3fa512,null))[_0x5056('0x48')](handleError(_0x3fa512,null));};exports[_0x5056('0x51')]=function(_0x1caad0,_0xf624be,_0x26183a){var _0x436900={};var _0x5341c4={};var _0x12f87c;var _0x7d8100;return db[_0x5056('0x2e')][_0x5056('0x4b')]({'where':{'id':_0x1caad0[_0x5056('0x4c')]['id']}})[_0x5056('0x29')](handleEntityNotFound(_0xf624be,null))[_0x5056('0x29')](function(_0x453da2){if(_0x453da2){_0x12f87c=_0x453da2;_0x5341c4[_0x5056('0x32')]=_['keys'](db[_0x5056('0x52')][_0x5056('0x2f')]);_0x5341c4[_0x5056('0x34')]=_[_0x5056('0x35')](_0x1caad0[_0x5056('0x34')]);_0x5341c4[_0x5056('0x40')]=_[_0x5056('0x36')](_0x5341c4[_0x5056('0x32')],_0x5341c4[_0x5056('0x34')]);_0x436900[_0x5056('0x37')]=_[_0x5056('0x36')](_0x5341c4[_0x5056('0x32')],qs[_0x5056('0x38')](_0x1caad0['query'][_0x5056('0x38')]));_0x436900[_0x5056('0x37')]=_0x436900[_0x5056('0x37')]['length']?_0x436900[_0x5056('0x37')]:_0x5341c4[_0x5056('0x32')];_0x436900[_0x5056('0x3c')]=qs[_0x5056('0x3d')](_0x1caad0['query'][_0x5056('0x3d')]);_0x436900[_0x5056('0x3e')]=qs[_0x5056('0x40')](_[_0x5056('0x3f')](_0x1caad0['query'],_0x5341c4['filters']));if(_0x1caad0[_0x5056('0x34')]['filter']){_0x436900['where']=_[_0x5056('0x42')](_0x436900[_0x5056('0x3e')],{'$or':_[_0x5056('0x33')](_0x436900[_0x5056('0x37')],function(_0x50ebb6){var _0x3c1b31={};_0x3c1b31[_0x50ebb6]={'$like':'%'+_0x1caad0[_0x5056('0x34')][_0x5056('0x41')]+'%'};return _0x3c1b31;})});}_0x436900=_['merge']({},_0x436900,_0x1caad0['options']);return _0x12f87c[_0x5056('0x51')](_0x436900);}})['then'](function(_0x175758){if(_0x175758){_0x7d8100=_0x175758['length'];if(!_0x1caad0[_0x5056('0x34')]['hasOwnProperty']('nolimit')){_0x436900[_0x5056('0x1f')]=qs[_0x5056('0x1f')](_0x1caad0[_0x5056('0x34')][_0x5056('0x1f')]);_0x436900[_0x5056('0x21')]=qs[_0x5056('0x21')](_0x1caad0['query'][_0x5056('0x21')]);}return _0x12f87c[_0x5056('0x51')](_0x436900);}})[_0x5056('0x29')](function(_0x579edb){if(_0x579edb){return _0x579edb?{'count':_0x7d8100,'rows':_0x579edb}:null;}})[_0x5056('0x29')](respondWithResult(_0xf624be,null))[_0x5056('0x48')](handleError(_0xf624be,null));};exports[_0x5056('0x53')]=function(_0x4f20cd,_0x13e84c,_0x5aa8ec){if(_0x4f20cd[_0x5056('0x4a')]['id']){delete _0x4f20cd[_0x5056('0x4a')]['id'];}return db[_0x5056('0x2e')]['findOne']({'where':{'id':_0x4f20cd[_0x5056('0x4c')]['id']}})[_0x5056('0x29')](handleEntityNotFound(_0x13e84c,null))[_0x5056('0x29')](function(_0x336be2){if(_0x336be2){return _0x336be2[_0x5056('0x53')](_0x4f20cd[_0x5056('0x4a')][_0x5056('0x54')]||[]);}return null;})[_0x5056('0x29')](respondWithResult(_0x13e84c,null))[_0x5056('0x48')](handleError(_0x13e84c,null));};
\ No newline at end of file
index 213829b..13a66b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdad9=['FreshdeskConfiguration','int_freshdesk_configurations','lodash','util','../../config/logger','api','moment','path','../../config/environment','./intFreshdeskConfiguration.attributes','define'];(function(_0x39d948,_0x3fece1){var _0x146f77=function(_0x1a21c9){while(--_0x1a21c9){_0x39d948['push'](_0x39d948['shift']());}};_0x146f77(++_0x3fece1);}(_0xdad9,0x91));var _0x9dad=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xdad9[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0x9dad('0x0'));var util=require(_0x9dad('0x1'));var logger=require(_0x9dad('0x2'))(_0x9dad('0x3'));var moment=require(_0x9dad('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x9dad('0x5'));var rimraf=require('rimraf');var config=require(_0x9dad('0x6'));var attributes=require(_0x9dad('0x7'));module['exports']=function(_0x1a7a67,_0x304f7f){return _0x1a7a67[_0x9dad('0x8')](_0x9dad('0x9'),attributes,{'tableName':_0x9dad('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdaa1=['util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intFreshdeskConfiguration.attributes','exports','define','FreshdeskConfiguration','int_freshdesk_configurations'];(function(_0x2d496e,_0x1c175a){var _0x1cacfe=function(_0x5bc7e3){while(--_0x5bc7e3){_0x2d496e['push'](_0x2d496e['shift']());}};_0x1cacfe(++_0x1c175a);}(_0xdaa1,0x16c));var _0x1daa=function(_0x52ec93,_0x4cef21){_0x52ec93=_0x52ec93-0x0;var _0x73a4b8=_0xdaa1[_0x52ec93];return _0x73a4b8;};'use strict';var _=require('lodash');var util=require(_0x1daa('0x0'));var logger=require(_0x1daa('0x1'))(_0x1daa('0x2'));var moment=require(_0x1daa('0x3'));var BPromise=require(_0x1daa('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1daa('0x5'));var rimraf=require(_0x1daa('0x6'));var config=require(_0x1daa('0x7'));var attributes=require(_0x1daa('0x8'));module[_0x1daa('0x9')]=function(_0x34ab46,_0x1a3de4){return _0x34ab46[_0x1daa('0xa')](_0x1daa('0xb'),attributes,{'tableName':_0x1daa('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7dab456..ee73dfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5014=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis'];(function(_0x5aa9a8,_0x4b37b6){var _0x395f0e=function(_0x5440e4){while(--_0x5440e4){_0x5aa9a8['push'](_0x5aa9a8['shift']());}};_0x395f0e(++_0x4b37b6);}(_0x5014,0x127));var _0x4501=function(_0x37f20d,_0x26fd1a){_0x37f20d=_0x37f20d-0x0;var _0xc9cef=_0x5014[_0x37f20d];return _0xc9cef;};'use strict';var _=require(_0x4501('0x0'));var util=require(_0x4501('0x1'));var moment=require('moment');var BPromise=require(_0x4501('0x2'));var rs=require(_0x4501('0x3'));var fs=require('fs');var Redis=require(_0x4501('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x4501('0x5'));var logger=require(_0x4501('0x6'))(_0x4501('0x7'));var config=require(_0x4501('0x8'));var jayson=require(_0x4501('0x9'));var client=jayson[_0x4501('0xa')][_0x4501('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x312b3a,_0x4afcb0,_0x5b886e){return new BPromise(function(_0x942371,_0x5cdc77){return client[_0x4501('0xc')](_0x312b3a,_0x5b886e)[_0x4501('0xd')](function(_0x59c2ee){logger[_0x4501('0xe')](_0x4501('0xf'),_0x4afcb0,_0x4501('0x10'));logger[_0x4501('0x11')](_0x4501('0x12'),_0x4afcb0,'request\x20sent',JSON[_0x4501('0x13')](_0x59c2ee));if(_0x59c2ee[_0x4501('0x14')]){if(_0x59c2ee[_0x4501('0x14')][_0x4501('0x15')]===0x1f4){logger[_0x4501('0x14')](_0x4501('0xf'),_0x4afcb0,_0x59c2ee[_0x4501('0x14')][_0x4501('0x16')]);return _0x5cdc77(_0x59c2ee[_0x4501('0x14')][_0x4501('0x16')]);}logger['error'](_0x4501('0xf'),_0x4afcb0,_0x59c2ee['error'][_0x4501('0x16')]);return _0x942371(_0x59c2ee['error'][_0x4501('0x16')]);}else{logger[_0x4501('0xe')](_0x4501('0xf'),_0x4afcb0,'request\x20sent');_0x942371(_0x59c2ee[_0x4501('0x17')][_0x4501('0x16')]);}})[_0x4501('0x18')](function(_0x390af5){logger[_0x4501('0x14')](_0x4501('0xf'),_0x4afcb0,_0x390af5);_0x5cdc77(_0x390af5);});});}
\ No newline at end of file
+var _0xa8f1=['info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','http','request','then'];(function(_0x577077,_0x52f056){var _0x370769=function(_0x34d109){while(--_0x34d109){_0x577077['push'](_0x577077['shift']());}};_0x370769(++_0x52f056);}(_0xa8f1,0xd0));var _0x1a8f=function(_0x435f1d,_0x4c832d){_0x435f1d=_0x435f1d-0x0;var _0x425c45=_0xa8f1[_0x435f1d];return _0x425c45;};'use strict';var _=require(_0x1a8f('0x0'));var util=require('util');var moment=require(_0x1a8f('0x1'));var BPromise=require(_0x1a8f('0x2'));var rs=require(_0x1a8f('0x3'));var fs=require('fs');var Redis=require(_0x1a8f('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x1a8f('0x5'));var logger=require('../../config/logger')(_0x1a8f('0x6'));var config=require(_0x1a8f('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x1a8f('0x8')][_0x1a8f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x39dece,_0x307251,_0x188e7b){return new BPromise(function(_0x4c9e04,_0xa406bf){return client[_0x1a8f('0xa')](_0x39dece,_0x188e7b)[_0x1a8f('0xb')](function(_0x465161){logger[_0x1a8f('0xc')](_0x1a8f('0xd'),_0x307251,_0x1a8f('0xe'));logger[_0x1a8f('0xf')](_0x1a8f('0x10'),_0x307251,_0x1a8f('0xe'),JSON[_0x1a8f('0x11')](_0x465161));if(_0x465161['error']){if(_0x465161['error'][_0x1a8f('0x12')]===0x1f4){logger['error'](_0x1a8f('0xd'),_0x307251,_0x465161[_0x1a8f('0x13')][_0x1a8f('0x14')]);return _0xa406bf(_0x465161[_0x1a8f('0x13')][_0x1a8f('0x14')]);}logger[_0x1a8f('0x13')](_0x1a8f('0xd'),_0x307251,_0x465161[_0x1a8f('0x13')][_0x1a8f('0x14')]);return _0x4c9e04(_0x465161[_0x1a8f('0x13')]['message']);}else{logger[_0x1a8f('0xc')](_0x1a8f('0xd'),_0x307251,'request\x20sent');_0x4c9e04(_0x465161[_0x1a8f('0x15')][_0x1a8f('0x14')]);}})['catch'](function(_0x4e902a){logger[_0x1a8f('0x13')](_0x1a8f('0xd'),_0x307251,_0x4e902a);_0xa406bf(_0x4e902a);});});}
\ No newline at end of file
index 8c82f1b..9792c4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff9a=['get','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x53b01b,_0xeaffff){var _0x5d2418=function(_0x5b315d){while(--_0x5b315d){_0x53b01b['push'](_0x53b01b['shift']());}};_0x5d2418(++_0xeaffff);}(_0xff9a,0x115));var _0xaff9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xff9a[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xaff9('0x0'));var util=require(_0xaff9('0x1'));var path=require(_0xaff9('0x2'));var timeout=require(_0xaff9('0x3'));var express=require('express');var router=express[_0xaff9('0x4')]();var fs_extra=require(_0xaff9('0x5'));var auth=require(_0xaff9('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xaff9('0x7'));var controller=require('./intFreshdeskField.controller');router[_0xaff9('0x8')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xaff9('0x9'),auth[_0xaff9('0xa')](),controller[_0xaff9('0xb')]);router[_0xaff9('0xc')]('/',auth[_0xaff9('0xa')](),controller[_0xaff9('0xd')]);router[_0xaff9('0xe')](_0xaff9('0x9'),auth['isAuthenticated'](),controller[_0xaff9('0xf')]);router[_0xaff9('0x10')](_0xaff9('0x9'),auth[_0xaff9('0xa')](),controller[_0xaff9('0x11')]);module[_0xaff9('0x12')]=router;
\ No newline at end of file
+var _0xb773=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intFreshdeskField.controller','get','isAuthenticated','index','/:id','create','update','delete','destroy','exports','util'];(function(_0x1972cd,_0x2200f5){var _0x369dd0=function(_0x23d72e){while(--_0x23d72e){_0x1972cd['push'](_0x1972cd['shift']());}};_0x369dd0(++_0x2200f5);}(_0xb773,0xa9));var _0x3b77=function(_0xefdc1c,_0x10f40b){_0xefdc1c=_0xefdc1c-0x0;var _0x48581c=_0xb773[_0xefdc1c];return _0x48581c;};'use strict';var multer=require('multer');var util=require(_0x3b77('0x0'));var path=require(_0x3b77('0x1'));var timeout=require(_0x3b77('0x2'));var express=require(_0x3b77('0x3'));var router=express[_0x3b77('0x4')]();var fs_extra=require(_0x3b77('0x5'));var auth=require(_0x3b77('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x3b77('0x7'));router[_0x3b77('0x8')]('/',auth[_0x3b77('0x9')](),controller[_0x3b77('0xa')]);router[_0x3b77('0x8')](_0x3b77('0xb'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x3b77('0xc')]);router['put'](_0x3b77('0xb'),auth['isAuthenticated'](),controller[_0x3b77('0xd')]);router[_0x3b77('0xe')]('/:id',auth[_0x3b77('0x9')](),controller[_0x3b77('0xf')]);module[_0x3b77('0x10')]=router;
\ No newline at end of file
index 8e64622..cdde37b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c8f=['BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING'];(function(_0x5abfbe,_0x51a14e){var _0xf6cd92=function(_0x24306e){while(--_0x24306e){_0x5abfbe['push'](_0x5abfbe['shift']());}};_0xf6cd92(++_0x51a14e);}(_0x7c8f,0x1c3));var _0xf7c8=function(_0x6a9946,_0x31c445){_0x6a9946=_0x6a9946-0x0;var _0x2c1145=_0x7c8f[_0x6a9946];return _0x2c1145;};'use strict';var Sequelize=require(_0xf7c8('0x0'));module[_0xf7c8('0x1')]={'type':{'type':Sequelize[_0xf7c8('0x2')](_0xf7c8('0x3'),_0xf7c8('0x4'),_0xf7c8('0x5'),_0xf7c8('0x6'),_0xf7c8('0x7')),'defaultValue':_0xf7c8('0x3')},'content':{'type':Sequelize[_0xf7c8('0x8')]},'key':{'type':Sequelize[_0xf7c8('0x8')]},'keyType':{'type':Sequelize[_0xf7c8('0x2')](_0xf7c8('0x3'),'variable',_0xf7c8('0x5'))},'keyContent':{'type':Sequelize[_0xf7c8('0x8')]},'idField':{'type':Sequelize[_0xf7c8('0x8')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xf7c8('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf7c8('0x8')]}};
\ No newline at end of file
+var _0xd9ee=['keyValue','picklist','STRING','sequelize','ENUM','string','variable'];(function(_0x33bfe5,_0x12a4c6){var _0x1ac2bc=function(_0x5c5d2d){while(--_0x5c5d2d){_0x33bfe5['push'](_0x33bfe5['shift']());}};_0x1ac2bc(++_0x12a4c6);}(_0xd9ee,0x13e));var _0xed9e=function(_0x1521d8,_0xa19901){_0x1521d8=_0x1521d8-0x0;var _0x47cdbe=_0xd9ee[_0x1521d8];return _0x47cdbe;};'use strict';var Sequelize=require(_0xed9e('0x0'));module['exports']={'type':{'type':Sequelize[_0xed9e('0x1')](_0xed9e('0x2'),_0xed9e('0x3'),'customVariable',_0xed9e('0x4'),_0xed9e('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0xed9e('0x6')]},'key':{'type':Sequelize[_0xed9e('0x6')]},'keyType':{'type':Sequelize[_0xed9e('0x1')](_0xed9e('0x2'),_0xed9e('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0xed9e('0x6')]},'idField':{'type':Sequelize[_0xed9e('0x6')]},'nameField':{'type':Sequelize[_0xed9e('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xed9e('0x6')]}};
\ No newline at end of file
index 98883d2..60e8ee5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74f0=['key','map','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','options','includeAll','findAll','rows','catch','show','find','create','body','params','rimraf','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','FreshdeskField','fieldName','type'];(function(_0x3f2c31,_0x21193f){var _0x524c10=function(_0x3d9447){while(--_0x3d9447){_0x3f2c31['push'](_0x3f2c31['shift']());}};_0x524c10(++_0x21193f);}(_0x74f0,0xf3));var _0x074f=function(_0x1678c8,_0x1c32f4){_0x1678c8=_0x1678c8-0x0;var _0x387aa9=_0x74f0[_0x1678c8];return _0x387aa9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x074f('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x074f('0x1'));var moment=require(_0x074f('0x2'));var BPromise=require(_0x074f('0x3'));var Mustache=require(_0x074f('0x4'));var util=require('util');var path=require('path');var sox=require(_0x074f('0x5'));var csv=require(_0x074f('0x6'));var ejs=require(_0x074f('0x7'));var fs=require('fs');var fs_extra=require(_0x074f('0x8'));var _=require(_0x074f('0x9'));var squel=require(_0x074f('0xa'));var crypto=require(_0x074f('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x074f('0xc'));var toCsv=require(_0x074f('0x6'));var querystring=require('querystring');var Papa=require(_0x074f('0xd'));var Redis=require(_0x074f('0xe'));var authService=require(_0x074f('0xf'));var qs=require(_0x074f('0x10'));var as=require(_0x074f('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x074f('0x12'));var utils=require(_0x074f('0x13'));var config=require(_0x074f('0x14'));var licenseUtil=require(_0x074f('0x15'));var db=require(_0x074f('0x16'))['db'];function respondWithStatusCode(_0x2416e0,_0x1d3304){_0x1d3304=_0x1d3304||0xcc;return function(_0x46cea0){if(_0x46cea0){return _0x2416e0[_0x074f('0x17')](_0x1d3304);}return _0x2416e0['status'](_0x1d3304)[_0x074f('0x18')]();};}function respondWithResult(_0x59f78a,_0x12ed92){_0x12ed92=_0x12ed92||0xc8;return function(_0x3bf07f){if(_0x3bf07f){return _0x59f78a[_0x074f('0x19')](_0x12ed92)[_0x074f('0x1a')](_0x3bf07f);}};}function respondWithFilteredResult(_0x2d7c55,_0x237960){return function(_0x7e19fe){if(_0x7e19fe){var _0x1edf9c=typeof _0x237960[_0x074f('0x1b')]===_0x074f('0x1c')&&typeof _0x237960[_0x074f('0x1d')]==='undefined';var _0x111e1f=_0x7e19fe[_0x074f('0x1e')];var _0x200e43=_0x1edf9c?0x0:_0x237960[_0x074f('0x1b')];var _0x315e7d=_0x1edf9c?_0x7e19fe[_0x074f('0x1e')]:_0x237960['offset']+_0x237960['limit'];var _0x1d241d;if(_0x315e7d>=_0x111e1f){_0x315e7d=_0x111e1f;_0x1d241d=0xc8;}else{_0x1d241d=0xce;}_0x2d7c55['status'](_0x1d241d);return _0x2d7c55['set'](_0x074f('0x1f'),_0x200e43+'-'+_0x315e7d+'/'+_0x111e1f)[_0x074f('0x1a')](_0x7e19fe);}return null;};}function patchUpdates(_0x1563f3){return function(_0x5feafd){try{jsonpatch[_0x074f('0x20')](_0x5feafd,_0x1563f3,!![]);}catch(_0x210221){return BPromise[_0x074f('0x21')](_0x210221);}return _0x5feafd[_0x074f('0x22')]();};}function saveUpdates(_0x1acf0a,_0x2c3b23){return function(_0x335170){if(_0x335170){return _0x335170[_0x074f('0x23')](_0x1acf0a)[_0x074f('0x24')](function(_0x2fc5b0){return _0x2fc5b0;});}return null;};}function removeEntity(_0x39e502,_0x1bd2c7){return function(_0xdfa2d8){if(_0xdfa2d8){return _0xdfa2d8[_0x074f('0x25')]()[_0x074f('0x24')](function(){_0x39e502[_0x074f('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ee6ac,_0x4e35a3){return function(_0x1051ce){if(!_0x1051ce){_0x4ee6ac[_0x074f('0x17')](0x194);}return _0x1051ce;};}function handleError(_0x151977,_0x3eb67d){_0x3eb67d=_0x3eb67d||0x1f4;return function(_0x5aabea){logger[_0x074f('0x26')](_0x5aabea[_0x074f('0x27')]);if(_0x5aabea[_0x074f('0x28')]){delete _0x5aabea[_0x074f('0x28')];}_0x151977[_0x074f('0x19')](_0x3eb67d)[_0x074f('0x29')](_0x5aabea);};}exports['index']=function(_0x1bf574,_0x3246cf){var _0x2b98d7={},_0x53b76d={},_0x1ee652={'count':0x0,'rows':[]};var _0x5d6edd=_['map'](db[_0x074f('0x2a')]['rawAttributes'],function(_0x4aa96f){return{'name':_0x4aa96f[_0x074f('0x2b')],'type':_0x4aa96f[_0x074f('0x2c')][_0x074f('0x2d')]};});_0x53b76d['model']=_[_0x074f('0x2e')](_0x5d6edd,_0x074f('0x28'));_0x53b76d[_0x074f('0x2f')]=_['keys'](_0x1bf574[_0x074f('0x2f')]);_0x53b76d[_0x074f('0x30')]=_[_0x074f('0x31')](_0x53b76d[_0x074f('0x32')],_0x53b76d[_0x074f('0x2f')]);_0x2b98d7['attributes']=_[_0x074f('0x31')](_0x53b76d[_0x074f('0x32')],qs['fields'](_0x1bf574[_0x074f('0x2f')][_0x074f('0x33')]));_0x2b98d7[_0x074f('0x34')]=_0x2b98d7['attributes'][_0x074f('0x35')]?_0x2b98d7[_0x074f('0x34')]:_0x53b76d['model'];if(!_0x1bf574[_0x074f('0x2f')][_0x074f('0x36')](_0x074f('0x37'))){_0x2b98d7[_0x074f('0x1d')]=qs[_0x074f('0x1d')](_0x1bf574[_0x074f('0x2f')][_0x074f('0x1d')]);_0x2b98d7[_0x074f('0x1b')]=qs[_0x074f('0x1b')](_0x1bf574[_0x074f('0x2f')]['offset']);}_0x2b98d7[_0x074f('0x38')]=qs[_0x074f('0x39')](_0x1bf574['query'][_0x074f('0x39')]);_0x2b98d7[_0x074f('0x3a')]=qs[_0x074f('0x30')](_[_0x074f('0x3b')](_0x1bf574[_0x074f('0x2f')],_0x53b76d[_0x074f('0x30')]),_0x5d6edd);if(_0x1bf574[_0x074f('0x2f')]['filter']){_0x2b98d7[_0x074f('0x3a')]=_[_0x074f('0x3c')](_0x2b98d7[_0x074f('0x3a')],{'$or':_[_0x074f('0x2e')](_0x5d6edd,function(_0x363ec0){if(_0x363ec0[_0x074f('0x2c')]!=='VIRTUAL'){var _0x405f4c={};_0x405f4c[_0x363ec0[_0x074f('0x28')]]={'$like':'%'+_0x1bf574['query'][_0x074f('0x3d')]+'%'};return _0x405f4c;}})});}_0x2b98d7=_[_0x074f('0x3c')]({},_0x2b98d7,_0x1bf574[_0x074f('0x3e')]);var _0x4d386e={'where':_0x2b98d7['where']};return db['FreshdeskField'][_0x074f('0x1e')](_0x4d386e)[_0x074f('0x24')](function(_0xdd9c2e){_0x1ee652['count']=_0xdd9c2e;if(_0x1bf574[_0x074f('0x2f')][_0x074f('0x3f')]){_0x2b98d7['include']=[{'all':!![]}];}return db[_0x074f('0x2a')][_0x074f('0x40')](_0x2b98d7);})[_0x074f('0x24')](function(_0x46ca91){_0x1ee652[_0x074f('0x41')]=_0x46ca91;return _0x1ee652;})[_0x074f('0x24')](respondWithFilteredResult(_0x3246cf,_0x2b98d7))[_0x074f('0x42')](handleError(_0x3246cf,null));};exports[_0x074f('0x43')]=function(_0x4b7f50,_0x406d33){var _0x58ff4d={'raw':!![],'where':{'id':_0x4b7f50['params']['id']}},_0x1bee97={};_0x1bee97[_0x074f('0x32')]=_['keys'](db[_0x074f('0x2a')]['rawAttributes']);_0x1bee97[_0x074f('0x2f')]=_['keys'](_0x4b7f50[_0x074f('0x2f')]);_0x1bee97[_0x074f('0x30')]=_[_0x074f('0x31')](_0x1bee97[_0x074f('0x32')],_0x1bee97[_0x074f('0x2f')]);_0x58ff4d[_0x074f('0x34')]=_[_0x074f('0x31')](_0x1bee97['model'],qs[_0x074f('0x33')](_0x4b7f50[_0x074f('0x2f')][_0x074f('0x33')]));_0x58ff4d[_0x074f('0x34')]=_0x58ff4d['attributes'][_0x074f('0x35')]?_0x58ff4d['attributes']:_0x1bee97[_0x074f('0x32')];if(_0x4b7f50[_0x074f('0x2f')][_0x074f('0x3f')]){_0x58ff4d['include']=[{'all':!![]}];}_0x58ff4d=_[_0x074f('0x3c')]({},_0x58ff4d,_0x4b7f50['options']);return db[_0x074f('0x2a')][_0x074f('0x44')](_0x58ff4d)['then'](handleEntityNotFound(_0x406d33,null))[_0x074f('0x24')](respondWithResult(_0x406d33,null))['catch'](handleError(_0x406d33,null));};exports[_0x074f('0x45')]=function(_0x130448,_0x598fee){return db['FreshdeskField']['create'](_0x130448['body'],{})[_0x074f('0x24')](respondWithResult(_0x598fee,0xc9))[_0x074f('0x42')](handleError(_0x598fee,null));};exports[_0x074f('0x23')]=function(_0xdd3709,_0x53b1e5){if(_0xdd3709[_0x074f('0x46')]['id']){delete _0xdd3709[_0x074f('0x46')]['id'];}return db[_0x074f('0x2a')][_0x074f('0x44')]({'where':{'id':_0xdd3709[_0x074f('0x47')]['id']}})[_0x074f('0x24')](handleEntityNotFound(_0x53b1e5,null))[_0x074f('0x24')](saveUpdates(_0xdd3709[_0x074f('0x46')],null))['then'](respondWithResult(_0x53b1e5,null))[_0x074f('0x42')](handleError(_0x53b1e5,null));};exports[_0x074f('0x25')]=function(_0x2ff3ab,_0x306a17){return db['FreshdeskField'][_0x074f('0x44')]({'where':{'id':_0x2ff3ab[_0x074f('0x47')]['id']}})['then'](handleEntityNotFound(_0x306a17,null))['then'](removeEntity(_0x306a17,null))[_0x074f('0x42')](handleError(_0x306a17,null));};
\ No newline at end of file
+var _0xa478=['rawAttributes','fieldName','model','query','keys','filters','intersection','fields','attributes','length','sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','error','name','send','map','FreshdeskField'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xa478,0x136));var _0x8a47=function(_0x3b534c,_0x2c614f){_0x3b534c=_0x3b534c-0x0;var _0x449ef9=_0xa478[_0x3b534c];return _0x449ef9;};'use strict';var emlformat=require(_0x8a47('0x0'));var rimraf=require(_0x8a47('0x1'));var zipdir=require(_0x8a47('0x2'));var jsonpatch=require(_0x8a47('0x3'));var rp=require(_0x8a47('0x4'));var moment=require(_0x8a47('0x5'));var BPromise=require(_0x8a47('0x6'));var Mustache=require(_0x8a47('0x7'));var util=require(_0x8a47('0x8'));var path=require(_0x8a47('0x9'));var sox=require(_0x8a47('0xa'));var csv=require(_0x8a47('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8a47('0xc'));var _=require(_0x8a47('0xd'));var squel=require(_0x8a47('0xe'));var crypto=require(_0x8a47('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x8a47('0x10'));var toCsv=require('to-csv');var querystring=require(_0x8a47('0x11'));var Papa=require(_0x8a47('0x12'));var Redis=require(_0x8a47('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x8a47('0x14'));var as=require(_0x8a47('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8a47('0x16'))('api');var utils=require(_0x8a47('0x17'));var config=require(_0x8a47('0x18'));var licenseUtil=require(_0x8a47('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5e3166,_0x59efc7){_0x59efc7=_0x59efc7||0xcc;return function(_0x36941a){if(_0x36941a){return _0x5e3166[_0x8a47('0x1a')](_0x59efc7);}return _0x5e3166['status'](_0x59efc7)[_0x8a47('0x1b')]();};}function respondWithResult(_0x28bbc5,_0x1a9a6f){_0x1a9a6f=_0x1a9a6f||0xc8;return function(_0x55985c){if(_0x55985c){return _0x28bbc5[_0x8a47('0x1c')](_0x1a9a6f)[_0x8a47('0x1d')](_0x55985c);}};}function respondWithFilteredResult(_0x2f682e,_0x1c8488){return function(_0x41bdaf){if(_0x41bdaf){var _0x18f2be=typeof _0x1c8488[_0x8a47('0x1e')]===_0x8a47('0x1f')&&typeof _0x1c8488[_0x8a47('0x20')]==='undefined';var _0x20fbf7=_0x41bdaf[_0x8a47('0x21')];var _0x3f9093=_0x18f2be?0x0:_0x1c8488['offset'];var _0x341089=_0x18f2be?_0x41bdaf['count']:_0x1c8488['offset']+_0x1c8488[_0x8a47('0x20')];var _0x2174b1;if(_0x341089>=_0x20fbf7){_0x341089=_0x20fbf7;_0x2174b1=0xc8;}else{_0x2174b1=0xce;}_0x2f682e[_0x8a47('0x1c')](_0x2174b1);return _0x2f682e[_0x8a47('0x22')](_0x8a47('0x23'),_0x3f9093+'-'+_0x341089+'/'+_0x20fbf7)[_0x8a47('0x1d')](_0x41bdaf);}return null;};}function patchUpdates(_0x44e119){return function(_0x1bbed6){try{jsonpatch[_0x8a47('0x24')](_0x1bbed6,_0x44e119,!![]);}catch(_0xc2065a){return BPromise['reject'](_0xc2065a);}return _0x1bbed6[_0x8a47('0x25')]();};}function saveUpdates(_0x5923ec,_0x289f28){return function(_0x3d7993){if(_0x3d7993){return _0x3d7993[_0x8a47('0x26')](_0x5923ec)[_0x8a47('0x27')](function(_0x5d4b6c){return _0x5d4b6c;});}return null;};}function removeEntity(_0x116b5e,_0x5ae186){return function(_0x50f6ba){if(_0x50f6ba){return _0x50f6ba['destroy']()['then'](function(){_0x116b5e[_0x8a47('0x1c')](0xcc)[_0x8a47('0x1b')]();});}};}function handleEntityNotFound(_0x5bed3e,_0x2bb0d4){return function(_0xb4590d){if(!_0xb4590d){_0x5bed3e[_0x8a47('0x1a')](0x194);}return _0xb4590d;};}function handleError(_0xfb9ae0,_0x44cf20){_0x44cf20=_0x44cf20||0x1f4;return function(_0xd06be6){logger[_0x8a47('0x28')](_0xd06be6['stack']);if(_0xd06be6[_0x8a47('0x29')]){delete _0xd06be6['name'];}_0xfb9ae0[_0x8a47('0x1c')](_0x44cf20)[_0x8a47('0x2a')](_0xd06be6);};}exports['index']=function(_0x1e89b1,_0x526571){var _0x4d5d32={},_0x12470a={},_0x9b51b8={'count':0x0,'rows':[]};var _0x1ddbcf=_[_0x8a47('0x2b')](db[_0x8a47('0x2c')][_0x8a47('0x2d')],function(_0x58aa06){return{'name':_0x58aa06[_0x8a47('0x2e')],'type':_0x58aa06['type']['key']};});_0x12470a[_0x8a47('0x2f')]=_[_0x8a47('0x2b')](_0x1ddbcf,_0x8a47('0x29'));_0x12470a[_0x8a47('0x30')]=_[_0x8a47('0x31')](_0x1e89b1[_0x8a47('0x30')]);_0x12470a[_0x8a47('0x32')]=_[_0x8a47('0x33')](_0x12470a[_0x8a47('0x2f')],_0x12470a[_0x8a47('0x30')]);_0x4d5d32['attributes']=_[_0x8a47('0x33')](_0x12470a[_0x8a47('0x2f')],qs[_0x8a47('0x34')](_0x1e89b1['query'][_0x8a47('0x34')]));_0x4d5d32[_0x8a47('0x35')]=_0x4d5d32['attributes'][_0x8a47('0x36')]?_0x4d5d32[_0x8a47('0x35')]:_0x12470a[_0x8a47('0x2f')];if(!_0x1e89b1[_0x8a47('0x30')]['hasOwnProperty']('nolimit')){_0x4d5d32[_0x8a47('0x20')]=qs[_0x8a47('0x20')](_0x1e89b1[_0x8a47('0x30')][_0x8a47('0x20')]);_0x4d5d32[_0x8a47('0x1e')]=qs[_0x8a47('0x1e')](_0x1e89b1[_0x8a47('0x30')]['offset']);}_0x4d5d32['order']=qs[_0x8a47('0x37')](_0x1e89b1[_0x8a47('0x30')][_0x8a47('0x37')]);_0x4d5d32[_0x8a47('0x38')]=qs[_0x8a47('0x32')](_[_0x8a47('0x39')](_0x1e89b1[_0x8a47('0x30')],_0x12470a[_0x8a47('0x32')]),_0x1ddbcf);if(_0x1e89b1[_0x8a47('0x30')][_0x8a47('0x3a')]){_0x4d5d32[_0x8a47('0x38')]=_['merge'](_0x4d5d32[_0x8a47('0x38')],{'$or':_['map'](_0x1ddbcf,function(_0x541832){if(_0x541832['type']!=='VIRTUAL'){var _0x57d38e={};_0x57d38e[_0x541832[_0x8a47('0x29')]]={'$like':'%'+_0x1e89b1[_0x8a47('0x30')][_0x8a47('0x3a')]+'%'};return _0x57d38e;}})});}_0x4d5d32=_[_0x8a47('0x3b')]({},_0x4d5d32,_0x1e89b1[_0x8a47('0x3c')]);var _0x20ba1c={'where':_0x4d5d32[_0x8a47('0x38')]};return db[_0x8a47('0x2c')]['count'](_0x20ba1c)['then'](function(_0x442870){_0x9b51b8[_0x8a47('0x21')]=_0x442870;if(_0x1e89b1[_0x8a47('0x30')][_0x8a47('0x3d')]){_0x4d5d32['include']=[{'all':!![]}];}return db[_0x8a47('0x2c')][_0x8a47('0x3e')](_0x4d5d32);})[_0x8a47('0x27')](function(_0x369dd5){_0x9b51b8[_0x8a47('0x3f')]=_0x369dd5;return _0x9b51b8;})['then'](respondWithFilteredResult(_0x526571,_0x4d5d32))[_0x8a47('0x40')](handleError(_0x526571,null));};exports[_0x8a47('0x41')]=function(_0x3010af,_0x5d23ed){var _0x2b3874={'raw':!![],'where':{'id':_0x3010af[_0x8a47('0x42')]['id']}},_0x2c70ea={};_0x2c70ea[_0x8a47('0x2f')]=_['keys'](db[_0x8a47('0x2c')][_0x8a47('0x2d')]);_0x2c70ea[_0x8a47('0x30')]=_[_0x8a47('0x31')](_0x3010af[_0x8a47('0x30')]);_0x2c70ea[_0x8a47('0x32')]=_['intersection'](_0x2c70ea['model'],_0x2c70ea[_0x8a47('0x30')]);_0x2b3874[_0x8a47('0x35')]=_[_0x8a47('0x33')](_0x2c70ea['model'],qs[_0x8a47('0x34')](_0x3010af[_0x8a47('0x30')]['fields']));_0x2b3874['attributes']=_0x2b3874[_0x8a47('0x35')]['length']?_0x2b3874[_0x8a47('0x35')]:_0x2c70ea[_0x8a47('0x2f')];if(_0x3010af[_0x8a47('0x30')][_0x8a47('0x3d')]){_0x2b3874[_0x8a47('0x43')]=[{'all':!![]}];}_0x2b3874=_[_0x8a47('0x3b')]({},_0x2b3874,_0x3010af['options']);return db['FreshdeskField'][_0x8a47('0x44')](_0x2b3874)[_0x8a47('0x27')](handleEntityNotFound(_0x5d23ed,null))[_0x8a47('0x27')](respondWithResult(_0x5d23ed,null))[_0x8a47('0x40')](handleError(_0x5d23ed,null));};exports[_0x8a47('0x45')]=function(_0x55dd7c,_0x4898d0){return db[_0x8a47('0x2c')]['create'](_0x55dd7c[_0x8a47('0x46')],{})[_0x8a47('0x27')](respondWithResult(_0x4898d0,0xc9))['catch'](handleError(_0x4898d0,null));};exports[_0x8a47('0x26')]=function(_0x237ed1,_0x14e22c){if(_0x237ed1[_0x8a47('0x46')]['id']){delete _0x237ed1[_0x8a47('0x46')]['id'];}return db[_0x8a47('0x2c')][_0x8a47('0x44')]({'where':{'id':_0x237ed1[_0x8a47('0x42')]['id']}})['then'](handleEntityNotFound(_0x14e22c,null))[_0x8a47('0x27')](saveUpdates(_0x237ed1[_0x8a47('0x46')],null))[_0x8a47('0x27')](respondWithResult(_0x14e22c,null))[_0x8a47('0x40')](handleError(_0x14e22c,null));};exports['destroy']=function(_0x11db4e,_0xa428dd){return db[_0x8a47('0x2c')][_0x8a47('0x44')]({'where':{'id':_0x11db4e[_0x8a47('0x42')]['id']}})[_0x8a47('0x27')](handleEntityNotFound(_0xa428dd,null))['then'](removeEntity(_0xa428dd,null))['catch'](handleError(_0xa428dd,null));};
\ No newline at end of file
index a437999..40a65f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1159=['define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','idField','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshdeskField.attributes'];(function(_0x582f2c,_0x1eb4ba){var _0x33d522=function(_0x40f475){while(--_0x40f475){_0x582f2c['push'](_0x582f2c['shift']());}};_0x33d522(++_0x1eb4ba);}(_0x1159,0xf3));var _0x9115=function(_0x492567,_0x44c56c){_0x492567=_0x492567-0x0;var _0x16b329=_0x1159[_0x492567];return _0x16b329;};'use strict';var _=require(_0x9115('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x9115('0x1'));var moment=require(_0x9115('0x2'));var BPromise=require(_0x9115('0x3'));var rp=require(_0x9115('0x4'));var fs=require('fs');var path=require(_0x9115('0x5'));var rimraf=require(_0x9115('0x6'));var config=require(_0x9115('0x7'));var attributes=require(_0x9115('0x8'));module['exports']=function(_0x4a23ba,_0x3fd395){return _0x4a23ba[_0x9115('0x9')](_0x9115('0xa'),attributes,{'tableName':_0x9115('0xb'),'paranoid':![],'indexes':[{'name':_0x9115('0xc'),'fields':[_0x9115('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3cd8=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshdeskField.attributes','exports','define','int_freshdesk_fields','idField','FieldId','lodash'];(function(_0x5104f5,_0x2908bd){var _0x2bb4f9=function(_0x431014){while(--_0x431014){_0x5104f5['push'](_0x5104f5['shift']());}};_0x2bb4f9(++_0x2908bd);}(_0x3cd8,0x10d));var _0x83cd=function(_0xbc25e1,_0x27007d){_0xbc25e1=_0xbc25e1-0x0;var _0xaf0a85=_0x3cd8[_0xbc25e1];return _0xaf0a85;};'use strict';var _=require(_0x83cd('0x0'));var util=require('util');var logger=require(_0x83cd('0x1'))(_0x83cd('0x2'));var moment=require(_0x83cd('0x3'));var BPromise=require(_0x83cd('0x4'));var rp=require(_0x83cd('0x5'));var fs=require('fs');var path=require(_0x83cd('0x6'));var rimraf=require(_0x83cd('0x7'));var config=require(_0x83cd('0x8'));var attributes=require(_0x83cd('0x9'));module[_0x83cd('0xa')]=function(_0x457494,_0x15593d){return _0x457494[_0x83cd('0xb')]('FreshdeskField',attributes,{'tableName':_0x83cd('0xc'),'paranoid':![],'indexes':[{'name':'freshdesk_unique_index','fields':[_0x83cd('0xd'),_0x83cd('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 7603622..5b0d9fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42b5=['code','error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','request','then','info','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x441794,_0x385392){var _0x32a5af=function(_0x444dbc){while(--_0x444dbc){_0x441794['push'](_0x441794['shift']());}};_0x32a5af(++_0x385392);}(_0x42b5,0x1d0));var _0x542b=function(_0x12beaf,_0xf1274a){_0x12beaf=_0x12beaf-0x0;var _0x583a2d=_0x42b5[_0x12beaf];return _0x583a2d;};'use strict';var _=require(_0x542b('0x0'));var util=require(_0x542b('0x1'));var moment=require(_0x542b('0x2'));var BPromise=require(_0x542b('0x3'));var rs=require(_0x542b('0x4'));var fs=require('fs');var Redis=require(_0x542b('0x5'));var db=require(_0x542b('0x6'))['db'];var utils=require(_0x542b('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0x542b('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x542b('0x9')][_0x542b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5373cb,_0x3c180c,_0x130427){return new BPromise(function(_0x2aefa0,_0x2e6cc7){return client[_0x542b('0xb')](_0x5373cb,_0x130427)[_0x542b('0xc')](function(_0x19fba8){logger[_0x542b('0xd')](_0x542b('0xe'),_0x3c180c,_0x542b('0xf'));logger[_0x542b('0x10')](_0x542b('0x11'),_0x3c180c,_0x542b('0xf'),JSON[_0x542b('0x12')](_0x19fba8));if(_0x19fba8['error']){if(_0x19fba8['error'][_0x542b('0x13')]===0x1f4){logger['error'](_0x542b('0xe'),_0x3c180c,_0x19fba8[_0x542b('0x14')][_0x542b('0x15')]);return _0x2e6cc7(_0x19fba8[_0x542b('0x14')][_0x542b('0x15')]);}logger['error'](_0x542b('0xe'),_0x3c180c,_0x19fba8[_0x542b('0x14')][_0x542b('0x15')]);return _0x2aefa0(_0x19fba8[_0x542b('0x14')]['message']);}else{logger['info'](_0x542b('0xe'),_0x3c180c,_0x542b('0xf'));_0x2aefa0(_0x19fba8['result']['message']);}})[_0x542b('0x16')](function(_0xa614da){logger[_0x542b('0x14')](_0x542b('0xe'),_0x3c180c,_0xa614da);_0x2e6cc7(_0xa614da);});});}
\ No newline at end of file
+var _0x086d=['result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','info','FreshdeskField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','FreshdeskField,\x20%s,\x20%s'];(function(_0x22e880,_0x28e910){var _0x2a806b=function(_0x4946fc){while(--_0x4946fc){_0x22e880['push'](_0x22e880['shift']());}};_0x2a806b(++_0x28e910);}(_0x086d,0x1d0));var _0xd086=function(_0x30841c,_0xc2e32){_0x30841c=_0x30841c-0x0;var _0x42e440=_0x086d[_0x30841c];return _0x42e440;};'use strict';var _=require(_0xd086('0x0'));var util=require(_0xd086('0x1'));var moment=require(_0xd086('0x2'));var BPromise=require(_0xd086('0x3'));var rs=require(_0xd086('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd086('0x5'))['db'];var utils=require(_0xd086('0x6'));var logger=require('../../config/logger')(_0xd086('0x7'));var config=require('../../config/environment');var jayson=require(_0xd086('0x8'));var client=jayson[_0xd086('0x9')][_0xd086('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x185f6e,_0x111b43,_0x1442d7){return new BPromise(function(_0x40543b,_0x535b8d){return client[_0xd086('0xb')](_0x185f6e,_0x1442d7)['then'](function(_0x1ffc40){logger[_0xd086('0xc')]('FreshdeskField,\x20%s,\x20%s',_0x111b43,'request\x20sent');logger['debug'](_0xd086('0xd'),_0x111b43,_0xd086('0xe'),JSON[_0xd086('0xf')](_0x1ffc40));if(_0x1ffc40[_0xd086('0x10')]){if(_0x1ffc40[_0xd086('0x10')][_0xd086('0x11')]===0x1f4){logger[_0xd086('0x10')]('FreshdeskField,\x20%s,\x20%s',_0x111b43,_0x1ffc40['error'][_0xd086('0x12')]);return _0x535b8d(_0x1ffc40[_0xd086('0x10')][_0xd086('0x12')]);}logger[_0xd086('0x10')](_0xd086('0x13'),_0x111b43,_0x1ffc40[_0xd086('0x10')][_0xd086('0x12')]);return _0x40543b(_0x1ffc40['error'][_0xd086('0x12')]);}else{logger['info'](_0xd086('0x13'),_0x111b43,'request\x20sent');_0x40543b(_0x1ffc40[_0xd086('0x14')][_0xd086('0x12')]);}})[_0xd086('0x15')](function(_0x1e57cd){logger[_0xd086('0x10')]('FreshdeskField,\x20%s,\x20%s',_0x111b43,_0x1e57cd);_0x535b8d(_0x1e57cd);});});}
\ No newline at end of file
index 57e4d91..44ea686 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd87e=['post','create','addConfiguration','update','delete','destroy','multer','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./intFreshsalesAccount.controller','isAuthenticated','/:id','show','get','getConfigurations','/:id/fields','getFields'];(function(_0x4f497f,_0x3d2544){var _0x4e8bc4=function(_0x9d24a3){while(--_0x9d24a3){_0x4f497f['push'](_0x4f497f['shift']());}};_0x4e8bc4(++_0x3d2544);}(_0xd87e,0x1bf));var _0xed87=function(_0x45e60e,_0x529bef){_0x45e60e=_0x45e60e-0x0;var _0x5717a5=_0xd87e[_0x45e60e];return _0x5717a5;};'use strict';var multer=require(_0xed87('0x0'));var util=require(_0xed87('0x1'));var path=require('path');var timeout=require(_0xed87('0x2'));var express=require(_0xed87('0x3'));var router=express[_0xed87('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xed87('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xed87('0x6'));var controller=require(_0xed87('0x7'));router['get']('/',auth[_0xed87('0x8')](),controller['index']);router['get'](_0xed87('0x9'),auth[_0xed87('0x8')](),controller[_0xed87('0xa')]);router[_0xed87('0xb')]('/:id/configurations',auth[_0xed87('0x8')](),controller[_0xed87('0xc')]);router[_0xed87('0xb')](_0xed87('0xd'),auth[_0xed87('0x8')](),controller[_0xed87('0xe')]);router[_0xed87('0xf')]('/',auth['isAuthenticated'](),controller[_0xed87('0x10')]);router[_0xed87('0xf')]('/:id/configurations',auth[_0xed87('0x8')](),controller[_0xed87('0x11')]);router['put']('/:id',auth[_0xed87('0x8')](),controller[_0xed87('0x12')]);router[_0xed87('0x13')](_0xed87('0x9'),auth[_0xed87('0x8')](),controller[_0xed87('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x6b20=['destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./intFreshsalesAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','post','addConfiguration','put','update','delete'];(function(_0x38d8e2,_0x48603c){var _0x5afbee=function(_0x2eca5e){while(--_0x2eca5e){_0x38d8e2['push'](_0x38d8e2['shift']());}};_0x5afbee(++_0x48603c);}(_0x6b20,0xd1));var _0x06b2=function(_0x1bb4ca,_0x12bce5){_0x1bb4ca=_0x1bb4ca-0x0;var _0x4a6ebc=_0x6b20[_0x1bb4ca];return _0x4a6ebc;};'use strict';var multer=require(_0x06b2('0x0'));var util=require(_0x06b2('0x1'));var path=require('path');var timeout=require(_0x06b2('0x2'));var express=require('express');var router=express[_0x06b2('0x3')]();var fs_extra=require(_0x06b2('0x4'));var auth=require(_0x06b2('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x06b2('0x6'));var controller=require(_0x06b2('0x7'));router[_0x06b2('0x8')]('/',auth[_0x06b2('0x9')](),controller[_0x06b2('0xa')]);router[_0x06b2('0x8')](_0x06b2('0xb'),auth['isAuthenticated'](),controller[_0x06b2('0xc')]);router[_0x06b2('0x8')](_0x06b2('0xd'),auth['isAuthenticated'](),controller[_0x06b2('0xe')]);router['get'](_0x06b2('0xf'),auth['isAuthenticated'](),controller['getFields']);router[_0x06b2('0x10')]('/',auth[_0x06b2('0x9')](),controller['create']);router[_0x06b2('0x10')](_0x06b2('0xd'),auth[_0x06b2('0x9')](),controller[_0x06b2('0x11')]);router[_0x06b2('0x12')](_0x06b2('0xb'),auth[_0x06b2('0x9')](),controller[_0x06b2('0x13')]);router[_0x06b2('0x14')](_0x06b2('0xb'),auth[_0x06b2('0x9')](),controller[_0x06b2('0x15')]);module[_0x06b2('0x16')]=router;
\ No newline at end of file
index e476255..b756fd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b84=['sequelize','exports','STRING','username','remoteUri'];(function(_0x3ea913,_0x255df2){var _0x2b4f28=function(_0x48bb25){while(--_0x48bb25){_0x3ea913['push'](_0x3ea913['shift']());}};_0x2b4f28(++_0x255df2);}(_0x7b84,0x17c));var _0x47b8=function(_0x316015,_0x5acf8e){_0x316015=_0x316015-0x0;var _0x2363ba=_0x7b84[_0x316015];return _0x2363ba;};'use strict';var Sequelize=require(_0x47b8('0x0'));module[_0x47b8('0x1')]={'name':{'type':Sequelize[_0x47b8('0x2')]},'description':{'type':Sequelize[_0x47b8('0x2')]},'username':{'type':Sequelize[_0x47b8('0x2')],'unique':_0x47b8('0x3')},'apiKey':{'type':Sequelize[_0x47b8('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0x47b8('0x4')},'serverUrl':{'type':Sequelize[_0x47b8('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x6d38=['exports','STRING','remoteUri'];(function(_0x470bfb,_0x389787){var _0x2f5d97=function(_0x3431b4){while(--_0x3431b4){_0x470bfb['push'](_0x470bfb['shift']());}};_0x2f5d97(++_0x389787);}(_0x6d38,0x1ef));var _0x86d3=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x6d38[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require('sequelize');module[_0x86d3('0x0')]={'name':{'type':Sequelize[_0x86d3('0x1')]},'description':{'type':Sequelize[_0x86d3('0x1')]},'username':{'type':Sequelize['STRING'],'unique':'username'},'apiKey':{'type':Sequelize[_0x86d3('0x1')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0x86d3('0x2')},'serverUrl':{'type':Sequelize[_0x86d3('0x1')],'allowNull':![]}};
\ No newline at end of file
index f7e5048..b15c0fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7edb=['mustache','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','count','limit','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','map','FreshsalesAccount','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filters','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','catch','params','find','create','body','getConfigurations','pick','nolimit','findOne','AccountId','Subjects','getSubjects','channel','getDescriptions','FreshsalesConfiguration','FreshsalesField','getFields','remoteUri','apiKey','username','slice','substring','GET','%s%s','Token\x20token=','users','email','Requested\x20Resource\x20not\x20Found','test','statusCode','stringify','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','request-promise','bluebird'];(function(_0x2bb922,_0x3fedcc){var _0x20619a=function(_0x57e20d){while(--_0x57e20d){_0x2bb922['push'](_0x2bb922['shift']());}};_0x20619a(++_0x3fedcc);}(_0x7edb,0xc5));var _0xb7ed=function(_0xf3248f,_0x407106){_0xf3248f=_0xf3248f-0x0;var _0x33e12f=_0x7edb[_0xf3248f];return _0x33e12f;};'use strict';var emlformat=require(_0xb7ed('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb7ed('0x1'));var jsonpatch=require(_0xb7ed('0x2'));var rp=require(_0xb7ed('0x3'));var moment=require('moment');var BPromise=require(_0xb7ed('0x4'));var Mustache=require(_0xb7ed('0x5'));var util=require('util');var path=require(_0xb7ed('0x6'));var sox=require(_0xb7ed('0x7'));var csv=require(_0xb7ed('0x8'));var ejs=require(_0xb7ed('0x9'));var fs=require('fs');var fs_extra=require(_0xb7ed('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xb7ed('0xb'));var jsforce=require(_0xb7ed('0xc'));var deskjs=require(_0xb7ed('0xd'));var toCsv=require(_0xb7ed('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb7ed('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xb7ed('0xf'));var as=require(_0xb7ed('0x10'));var hardwareService=require(_0xb7ed('0x11'));var logger=require(_0xb7ed('0x12'))(_0xb7ed('0x13'));var utils=require(_0xb7ed('0x14'));var config=require(_0xb7ed('0x15'));var licenseUtil=require(_0xb7ed('0x16'));var db=require(_0xb7ed('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x395f74,_0x19d96d){_0x19d96d=_0x19d96d||0xcc;return function(_0x287251){if(_0x287251){return _0x395f74[_0xb7ed('0x18')](_0x19d96d);}return _0x395f74['status'](_0x19d96d)[_0xb7ed('0x19')]();};}function respondWithResult(_0x454dd0,_0x31c6b7){_0x31c6b7=_0x31c6b7||0xc8;return function(_0x26655b){if(_0x26655b){return _0x454dd0[_0xb7ed('0x1a')](_0x31c6b7)['json'](_0x26655b);}};}function respondWithFilteredResult(_0x30db64,_0x3775c2){return function(_0x2f6c98){if(_0x2f6c98){var _0x362318=typeof _0x3775c2[_0xb7ed('0x1b')]===_0xb7ed('0x1c')&&typeof _0x3775c2['limit']==='undefined';var _0x59a913=_0x2f6c98[_0xb7ed('0x1d')];var _0x4d9453=_0x362318?0x0:_0x3775c2[_0xb7ed('0x1b')];var _0x246ab0=_0x362318?_0x2f6c98[_0xb7ed('0x1d')]:_0x3775c2[_0xb7ed('0x1b')]+_0x3775c2[_0xb7ed('0x1e')];var _0x569876;if(_0x246ab0>=_0x59a913){_0x246ab0=_0x59a913;_0x569876=0xc8;}else{_0x569876=0xce;}_0x30db64['status'](_0x569876);return _0x30db64['set'](_0xb7ed('0x1f'),_0x4d9453+'-'+_0x246ab0+'/'+_0x59a913)[_0xb7ed('0x20')](_0x2f6c98);}return null;};}function patchUpdates(_0x4ec6bc){return function(_0x59aa2c){try{jsonpatch[_0xb7ed('0x21')](_0x59aa2c,_0x4ec6bc,!![]);}catch(_0x8aec5){return BPromise[_0xb7ed('0x22')](_0x8aec5);}return _0x59aa2c[_0xb7ed('0x23')]();};}function saveUpdates(_0x4ff702,_0x2f03e1){return function(_0x529e45){if(_0x529e45){return _0x529e45[_0xb7ed('0x24')](_0x4ff702)[_0xb7ed('0x25')](function(_0x4f28a2){return _0x4f28a2;});}return null;};}function removeEntity(_0x1cf6d7,_0x3f490c){return function(_0x36943a){if(_0x36943a){return _0x36943a[_0xb7ed('0x26')]()[_0xb7ed('0x25')](function(){_0x1cf6d7[_0xb7ed('0x1a')](0xcc)[_0xb7ed('0x19')]();});}};}function handleEntityNotFound(_0x2a1005,_0x2f9493){return function(_0x4a3f9e){if(!_0x4a3f9e){_0x2a1005['sendStatus'](0x194);}return _0x4a3f9e;};}function handleError(_0x5b7069,_0x11c239){_0x11c239=_0x11c239||0x1f4;return function(_0x46a137){logger[_0xb7ed('0x27')](_0x46a137[_0xb7ed('0x28')]);if(_0x46a137[_0xb7ed('0x29')]){delete _0x46a137[_0xb7ed('0x29')];}_0x5b7069[_0xb7ed('0x1a')](_0x11c239)[_0xb7ed('0x2a')](_0x46a137);};}exports['index']=function(_0xab470e,_0x17894c){var _0x18e71d={},_0x1103db={},_0x4c3b35={'count':0x0,'rows':[]};var _0x379ffd=_[_0xb7ed('0x2b')](db[_0xb7ed('0x2c')][_0xb7ed('0x2d')],function(_0x1c1ed0){return{'name':_0x1c1ed0[_0xb7ed('0x2e')],'type':_0x1c1ed0[_0xb7ed('0x2f')][_0xb7ed('0x30')]};});_0x1103db[_0xb7ed('0x31')]=_['map'](_0x379ffd,_0xb7ed('0x29'));_0x1103db[_0xb7ed('0x32')]=_[_0xb7ed('0x33')](_0xab470e['query']);_0x1103db['filters']=_['intersection'](_0x1103db[_0xb7ed('0x31')],_0x1103db[_0xb7ed('0x32')]);_0x18e71d[_0xb7ed('0x34')]=_[_0xb7ed('0x35')](_0x1103db[_0xb7ed('0x31')],qs['fields'](_0xab470e[_0xb7ed('0x32')][_0xb7ed('0x36')]));_0x18e71d[_0xb7ed('0x34')]=_0x18e71d[_0xb7ed('0x34')][_0xb7ed('0x37')]?_0x18e71d[_0xb7ed('0x34')]:_0x1103db['model'];if(!_0xab470e[_0xb7ed('0x32')][_0xb7ed('0x38')]('nolimit')){_0x18e71d[_0xb7ed('0x1e')]=qs[_0xb7ed('0x1e')](_0xab470e[_0xb7ed('0x32')][_0xb7ed('0x1e')]);_0x18e71d[_0xb7ed('0x1b')]=qs['offset'](_0xab470e[_0xb7ed('0x32')][_0xb7ed('0x1b')]);}_0x18e71d[_0xb7ed('0x39')]=qs[_0xb7ed('0x3a')](_0xab470e[_0xb7ed('0x32')][_0xb7ed('0x3a')]);_0x18e71d[_0xb7ed('0x3b')]=qs[_0xb7ed('0x3c')](_['pick'](_0xab470e[_0xb7ed('0x32')],_0x1103db[_0xb7ed('0x3c')]),_0x379ffd);if(_0xab470e[_0xb7ed('0x32')]['filter']){_0x18e71d[_0xb7ed('0x3b')]=_['merge'](_0x18e71d[_0xb7ed('0x3b')],{'$or':_[_0xb7ed('0x2b')](_0x379ffd,function(_0x36c4ce){if(_0x36c4ce[_0xb7ed('0x2f')]!==_0xb7ed('0x3d')){var _0x262879={};_0x262879[_0x36c4ce[_0xb7ed('0x29')]]={'$like':'%'+_0xab470e[_0xb7ed('0x32')][_0xb7ed('0x3e')]+'%'};return _0x262879;}})});}_0x18e71d=_[_0xb7ed('0x3f')]({},_0x18e71d,_0xab470e[_0xb7ed('0x40')]);var _0x4a03fc={'where':_0x18e71d['where']};return db['FreshsalesAccount'][_0xb7ed('0x1d')](_0x4a03fc)[_0xb7ed('0x25')](function(_0x50f635){_0x4c3b35[_0xb7ed('0x1d')]=_0x50f635;if(_0xab470e[_0xb7ed('0x32')][_0xb7ed('0x41')]){_0x18e71d[_0xb7ed('0x42')]=[{'all':!![]}];}return db['FreshsalesAccount'][_0xb7ed('0x43')](_0x18e71d);})['then'](function(_0x3a2eef){_0x4c3b35[_0xb7ed('0x44')]=_0x3a2eef;return _0x4c3b35;})[_0xb7ed('0x25')](respondWithFilteredResult(_0x17894c,_0x18e71d))[_0xb7ed('0x45')](handleError(_0x17894c,null));};exports['show']=function(_0x5edbad,_0x27b7d9){var _0x9bbadc={'raw':![],'where':{'id':_0x5edbad[_0xb7ed('0x46')]['id']}},_0x34388b={};_0x34388b[_0xb7ed('0x31')]=_['keys'](db[_0xb7ed('0x2c')][_0xb7ed('0x2d')]);_0x34388b[_0xb7ed('0x32')]=_[_0xb7ed('0x33')](_0x5edbad[_0xb7ed('0x32')]);_0x34388b['filters']=_[_0xb7ed('0x35')](_0x34388b[_0xb7ed('0x31')],_0x34388b[_0xb7ed('0x32')]);_0x9bbadc['attributes']=_[_0xb7ed('0x35')](_0x34388b[_0xb7ed('0x31')],qs['fields'](_0x5edbad['query'][_0xb7ed('0x36')]));_0x9bbadc['attributes']=_0x9bbadc[_0xb7ed('0x34')][_0xb7ed('0x37')]?_0x9bbadc['attributes']:_0x34388b[_0xb7ed('0x31')];if(_0x5edbad[_0xb7ed('0x32')][_0xb7ed('0x41')]){_0x9bbadc[_0xb7ed('0x42')]=[{'all':!![]}];}_0x9bbadc=_['merge']({},_0x9bbadc,_0x5edbad[_0xb7ed('0x40')]);return db[_0xb7ed('0x2c')][_0xb7ed('0x47')](_0x9bbadc)[_0xb7ed('0x25')](handleEntityNotFound(_0x27b7d9,null))['then'](respondWithResult(_0x27b7d9,null))[_0xb7ed('0x45')](handleError(_0x27b7d9,null));};exports[_0xb7ed('0x48')]=function(_0x224db6,_0x1f02e5){return db[_0xb7ed('0x2c')][_0xb7ed('0x48')](_0x224db6[_0xb7ed('0x49')],{})[_0xb7ed('0x25')](respondWithResult(_0x1f02e5,0xc9))[_0xb7ed('0x45')](handleError(_0x1f02e5,null));};exports[_0xb7ed('0x24')]=function(_0x5ec23e,_0x3acf26){if(_0x5ec23e[_0xb7ed('0x49')]['id']){delete _0x5ec23e[_0xb7ed('0x49')]['id'];}return db[_0xb7ed('0x2c')][_0xb7ed('0x47')]({'where':{'id':_0x5ec23e[_0xb7ed('0x46')]['id']}})[_0xb7ed('0x25')](handleEntityNotFound(_0x3acf26,null))[_0xb7ed('0x25')](saveUpdates(_0x5ec23e[_0xb7ed('0x49')],null))[_0xb7ed('0x25')](respondWithResult(_0x3acf26,null))['catch'](handleError(_0x3acf26,null));};exports[_0xb7ed('0x26')]=function(_0x14cab7,_0x3d8f38){return db[_0xb7ed('0x2c')]['find']({'where':{'id':_0x14cab7[_0xb7ed('0x46')]['id']}})[_0xb7ed('0x25')](handleEntityNotFound(_0x3d8f38,null))[_0xb7ed('0x25')](removeEntity(_0x3d8f38,null))[_0xb7ed('0x45')](handleError(_0x3d8f38,null));};exports[_0xb7ed('0x4a')]=function(_0x1680ca,_0x4b75c5,_0x20f8e1){var _0x299e69={};var _0x41cd46={};var _0x26f29e;var _0x4d34df;return db[_0xb7ed('0x2c')]['findOne']({'where':{'id':_0x1680ca[_0xb7ed('0x46')]['id']}})[_0xb7ed('0x25')](handleEntityNotFound(_0x4b75c5,null))[_0xb7ed('0x25')](function(_0x1821b9){if(_0x1821b9){_0x26f29e=_0x1821b9;_0x41cd46[_0xb7ed('0x31')]=_['keys'](db['FreshsalesConfiguration']['rawAttributes']);_0x41cd46['query']=_[_0xb7ed('0x33')](_0x1680ca[_0xb7ed('0x32')]);_0x41cd46[_0xb7ed('0x3c')]=_[_0xb7ed('0x35')](_0x41cd46[_0xb7ed('0x31')],_0x41cd46[_0xb7ed('0x32')]);_0x299e69[_0xb7ed('0x34')]=_[_0xb7ed('0x35')](_0x41cd46['model'],qs['fields'](_0x1680ca['query'][_0xb7ed('0x36')]));_0x299e69[_0xb7ed('0x34')]=_0x299e69[_0xb7ed('0x34')][_0xb7ed('0x37')]?_0x299e69['attributes']:_0x41cd46[_0xb7ed('0x31')];_0x299e69[_0xb7ed('0x39')]=qs[_0xb7ed('0x3a')](_0x1680ca[_0xb7ed('0x32')]['sort']);_0x299e69[_0xb7ed('0x3b')]=qs[_0xb7ed('0x3c')](_[_0xb7ed('0x4b')](_0x1680ca[_0xb7ed('0x32')],_0x41cd46[_0xb7ed('0x3c')]));if(_0x1680ca[_0xb7ed('0x32')][_0xb7ed('0x3e')]){_0x299e69[_0xb7ed('0x3b')]=_[_0xb7ed('0x3f')](_0x299e69[_0xb7ed('0x3b')],{'$or':_['map'](_0x299e69['attributes'],function(_0x24ea6f){var _0x3ca2b5={};_0x3ca2b5[_0x24ea6f]={'$like':'%'+_0x1680ca[_0xb7ed('0x32')][_0xb7ed('0x3e')]+'%'};return _0x3ca2b5;})});}_0x299e69=_['merge']({},_0x299e69,_0x1680ca[_0xb7ed('0x40')]);return _0x26f29e[_0xb7ed('0x4a')](_0x299e69);}})[_0xb7ed('0x25')](function(_0x489d38){if(_0x489d38){_0x4d34df=_0x489d38[_0xb7ed('0x37')];if(!_0x1680ca[_0xb7ed('0x32')][_0xb7ed('0x38')](_0xb7ed('0x4c'))){_0x299e69['limit']=qs[_0xb7ed('0x1e')](_0x1680ca[_0xb7ed('0x32')]['limit']);_0x299e69[_0xb7ed('0x1b')]=qs['offset'](_0x1680ca['query'][_0xb7ed('0x1b')]);}return _0x26f29e['getConfigurations'](_0x299e69);}})['then'](function(_0x23025e){if(_0x23025e){return _0x23025e?{'count':_0x4d34df,'rows':_0x23025e}:null;}})[_0xb7ed('0x25')](respondWithResult(_0x4b75c5,null))[_0xb7ed('0x45')](handleError(_0x4b75c5,null));};exports['addConfiguration']=function(_0xdc3402,_0x30f594,_0x4071e3){if(_0xdc3402[_0xb7ed('0x49')]['id']){delete _0xdc3402[_0xb7ed('0x49')]['id'];}return db['FreshsalesAccount'][_0xb7ed('0x4d')]({'where':{'id':_0xdc3402[_0xb7ed('0x46')]['id']}})[_0xb7ed('0x25')](handleEntityNotFound(_0x30f594,null))[_0xb7ed('0x25')](function(_0x1ef240){if(_0x1ef240){_0xdc3402[_0xb7ed('0x49')][_0xb7ed('0x4e')]=_0x1ef240['id'];_0xdc3402[_0xb7ed('0x49')][_0xb7ed('0x4f')]=integrations[_0xb7ed('0x50')](_0xdc3402['body'][_0xb7ed('0x51')],_0xdc3402['body']['type']);_0xdc3402['body']['Descriptions']=integrations[_0xb7ed('0x52')](_0xdc3402[_0xb7ed('0x49')][_0xb7ed('0x51')],_0xdc3402[_0xb7ed('0x49')][_0xb7ed('0x2f')]);return db[_0xb7ed('0x53')][_0xb7ed('0x48')](_0xdc3402['body'],{'include':[{'model':db[_0xb7ed('0x54')],'as':_0xb7ed('0x4f')},{'model':db[_0xb7ed('0x54')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x30f594,null))[_0xb7ed('0x45')](handleError(_0x30f594,null));};exports[_0xb7ed('0x55')]=function(_0x44d98d,_0x179c9b,_0xcff00f){var _0x4f7a50='';var _0x29ad4c='';return db[_0xb7ed('0x2c')]['findOne']({'where':{'id':_0x44d98d['params']['id']},'attributes':['id','username',_0xb7ed('0x56'),_0xb7ed('0x57')]})[_0xb7ed('0x25')](handleEntityNotFound(_0x179c9b,null))[_0xb7ed('0x25')](function(_0x2f39e8){if(_0x2f39e8){_0x29ad4c=_0x2f39e8[_0xb7ed('0x58')];_0x4f7a50=_0x2f39e8[_0xb7ed('0x56')];var _0x1a4a81=_0x2f39e8[_0xb7ed('0x56')][_0xb7ed('0x59')](-0x1);if(_0x1a4a81==='/'){_0x4f7a50=_0x4f7a50[_0xb7ed('0x5a')](0x0,_0x4f7a50['lastIndexOf'](_0x1a4a81));}return rp({'method':_0xb7ed('0x5b'),'uri':util['format'](_0xb7ed('0x5c'),_0x4f7a50,'/api/selector/owners'),'headers':{'Authorization':_0xb7ed('0x5d')+_0x2f39e8[_0xb7ed('0x57')]},'json':!![]});}})[_0xb7ed('0x25')](function(_0x1ee851){if(_0x1ee851){var _0x4969d0=_0x1ee851[_0xb7ed('0x5e')];var _0x6c7813=![];var _0x265351=null;for(_0x265351=0x0;_0x265351<_0x4969d0[_0xb7ed('0x37')];_0x265351++){if(_0x4969d0[_0x265351][_0xb7ed('0x5f')]===_0x29ad4c){_0x6c7813=!![];}}if(_0x6c7813){return!![];}else{throw new Error({'statusCode':0x194,'message':_0xb7ed('0x60')});}}})[_0xb7ed('0x25')](respondWithResult(_0x179c9b,null))[_0xb7ed('0x45')](function(_0x33dfb5){var _0x34aa47=_0x44d98d[_0xb7ed('0x32')][_0xb7ed('0x61')]?0x1f4:_0x33dfb5[_0xb7ed('0x62')]||0x1f4;logger[_0xb7ed('0x27')]('getFields,\x20%s,\x20%s,\x20%s',_0xb7ed('0x55'),_0x34aa47,JSON[_0xb7ed('0x63')](_0x33dfb5));delete _0x33dfb5[_0xb7ed('0x29')];if(_0x34aa47===0x191){_0x34aa47=0x190;}_0x179c9b['status'](_0x34aa47)[_0xb7ed('0x2a')](_0x44d98d[_0xb7ed('0x32')][_0xb7ed('0x61')]?{'message':_0xb7ed('0x64'),'statusCode':_0x33dfb5[_0xb7ed('0x62')]}:_0x33dfb5);});};
\ No newline at end of file
+var _0xe931=['remoteUri','lastIndexOf','GET','/api/selector/owners','Token\x20token=','users','Requested\x20Resource\x20not\x20Found','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','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','undefined','limit','offset','count','set','Content-Range','apply','save','update','then','destroy','stack','name','send','index','map','FreshsalesAccount','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','rows','catch','params','options','find','create','body','findOne','FreshsalesConfiguration','nolimit','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','channel','FreshsalesField','Descriptions','getFields','username','apiKey'];(function(_0x373f81,_0x4cf99f){var _0x41a881=function(_0x2654b8){while(--_0x2654b8){_0x373f81['push'](_0x373f81['shift']());}};_0x41a881(++_0x4cf99f);}(_0xe931,0x142));var _0x1e93=function(_0x584feb,_0x57897a){_0x584feb=_0x584feb-0x0;var _0x8fedd5=_0xe931[_0x584feb];return _0x8fedd5;};'use strict';var emlformat=require(_0x1e93('0x0'));var rimraf=require(_0x1e93('0x1'));var zipdir=require(_0x1e93('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1e93('0x3'));var moment=require(_0x1e93('0x4'));var BPromise=require(_0x1e93('0x5'));var Mustache=require(_0x1e93('0x6'));var util=require(_0x1e93('0x7'));var path=require(_0x1e93('0x8'));var sox=require(_0x1e93('0x9'));var csv=require(_0x1e93('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1e93('0xb'));var _=require(_0x1e93('0xc'));var squel=require(_0x1e93('0xd'));var crypto=require(_0x1e93('0xe'));var jsforce=require(_0x1e93('0xf'));var deskjs=require(_0x1e93('0x10'));var toCsv=require(_0x1e93('0xa'));var querystring=require('querystring');var Papa=require(_0x1e93('0x11'));var Redis=require(_0x1e93('0x12'));var authService=require(_0x1e93('0x13'));var qs=require(_0x1e93('0x14'));var as=require(_0x1e93('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x1e93('0x16'));var config=require(_0x1e93('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x1e93('0x18'))['db'];var integrations=require(_0x1e93('0x19'));function respondWithStatusCode(_0x45158e,_0x1e8782){_0x1e8782=_0x1e8782||0xcc;return function(_0x54d7ef){if(_0x54d7ef){return _0x45158e[_0x1e93('0x1a')](_0x1e8782);}return _0x45158e[_0x1e93('0x1b')](_0x1e8782)[_0x1e93('0x1c')]();};}function respondWithResult(_0x4b6ba9,_0x57e405){_0x57e405=_0x57e405||0xc8;return function(_0x1c4d4a){if(_0x1c4d4a){return _0x4b6ba9[_0x1e93('0x1b')](_0x57e405)['json'](_0x1c4d4a);}};}function respondWithFilteredResult(_0x267d39,_0x2f94ec){return function(_0x4de461){if(_0x4de461){var _0x3dbebd=typeof _0x2f94ec['offset']===_0x1e93('0x1d')&&typeof _0x2f94ec[_0x1e93('0x1e')]===_0x1e93('0x1d');var _0x51dfc8=_0x4de461['count'];var _0x5661cc=_0x3dbebd?0x0:_0x2f94ec[_0x1e93('0x1f')];var _0x2b3261=_0x3dbebd?_0x4de461[_0x1e93('0x20')]:_0x2f94ec['offset']+_0x2f94ec[_0x1e93('0x1e')];var _0x32b592;if(_0x2b3261>=_0x51dfc8){_0x2b3261=_0x51dfc8;_0x32b592=0xc8;}else{_0x32b592=0xce;}_0x267d39['status'](_0x32b592);return _0x267d39[_0x1e93('0x21')](_0x1e93('0x22'),_0x5661cc+'-'+_0x2b3261+'/'+_0x51dfc8)['json'](_0x4de461);}return null;};}function patchUpdates(_0x5b3921){return function(_0x130104){try{jsonpatch[_0x1e93('0x23')](_0x130104,_0x5b3921,!![]);}catch(_0x5dfe81){return BPromise['reject'](_0x5dfe81);}return _0x130104[_0x1e93('0x24')]();};}function saveUpdates(_0x38cddc,_0x44f0f3){return function(_0x483142){if(_0x483142){return _0x483142[_0x1e93('0x25')](_0x38cddc)[_0x1e93('0x26')](function(_0x16a221){return _0x16a221;});}return null;};}function removeEntity(_0x1580a9,_0x447964){return function(_0x41ec9f){if(_0x41ec9f){return _0x41ec9f[_0x1e93('0x27')]()[_0x1e93('0x26')](function(){_0x1580a9[_0x1e93('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x399fbd,_0x244759){return function(_0x243839){if(!_0x243839){_0x399fbd['sendStatus'](0x194);}return _0x243839;};}function handleError(_0x19c0d8,_0x3d9fa9){_0x3d9fa9=_0x3d9fa9||0x1f4;return function(_0x3e100d){logger['error'](_0x3e100d[_0x1e93('0x28')]);if(_0x3e100d[_0x1e93('0x29')]){delete _0x3e100d[_0x1e93('0x29')];}_0x19c0d8[_0x1e93('0x1b')](_0x3d9fa9)[_0x1e93('0x2a')](_0x3e100d);};}exports[_0x1e93('0x2b')]=function(_0x472cd4,_0x28250a){var _0x2c9703={},_0x504f8d={},_0x3f2393={'count':0x0,'rows':[]};var _0x2da26b=_[_0x1e93('0x2c')](db[_0x1e93('0x2d')][_0x1e93('0x2e')],function(_0x30e58c){return{'name':_0x30e58c[_0x1e93('0x2f')],'type':_0x30e58c[_0x1e93('0x30')][_0x1e93('0x31')]};});_0x504f8d[_0x1e93('0x32')]=_[_0x1e93('0x2c')](_0x2da26b,_0x1e93('0x29'));_0x504f8d['query']=_[_0x1e93('0x33')](_0x472cd4[_0x1e93('0x34')]);_0x504f8d[_0x1e93('0x35')]=_[_0x1e93('0x36')](_0x504f8d[_0x1e93('0x32')],_0x504f8d[_0x1e93('0x34')]);_0x2c9703['attributes']=_[_0x1e93('0x36')](_0x504f8d['model'],qs[_0x1e93('0x37')](_0x472cd4['query'][_0x1e93('0x37')]));_0x2c9703[_0x1e93('0x38')]=_0x2c9703['attributes'][_0x1e93('0x39')]?_0x2c9703[_0x1e93('0x38')]:_0x504f8d[_0x1e93('0x32')];if(!_0x472cd4[_0x1e93('0x34')][_0x1e93('0x3a')]('nolimit')){_0x2c9703[_0x1e93('0x1e')]=qs[_0x1e93('0x1e')](_0x472cd4[_0x1e93('0x34')][_0x1e93('0x1e')]);_0x2c9703[_0x1e93('0x1f')]=qs[_0x1e93('0x1f')](_0x472cd4[_0x1e93('0x34')]['offset']);}_0x2c9703[_0x1e93('0x3b')]=qs[_0x1e93('0x3c')](_0x472cd4[_0x1e93('0x34')][_0x1e93('0x3c')]);_0x2c9703[_0x1e93('0x3d')]=qs[_0x1e93('0x35')](_[_0x1e93('0x3e')](_0x472cd4['query'],_0x504f8d[_0x1e93('0x35')]),_0x2da26b);if(_0x472cd4['query'][_0x1e93('0x3f')]){_0x2c9703[_0x1e93('0x3d')]=_['merge'](_0x2c9703[_0x1e93('0x3d')],{'$or':_['map'](_0x2da26b,function(_0x4670f2){if(_0x4670f2[_0x1e93('0x30')]!==_0x1e93('0x40')){var _0x34506d={};_0x34506d[_0x4670f2['name']]={'$like':'%'+_0x472cd4[_0x1e93('0x34')][_0x1e93('0x3f')]+'%'};return _0x34506d;}})});}_0x2c9703=_[_0x1e93('0x41')]({},_0x2c9703,_0x472cd4['options']);var _0x3f2ebb={'where':_0x2c9703[_0x1e93('0x3d')]};return db[_0x1e93('0x2d')][_0x1e93('0x20')](_0x3f2ebb)['then'](function(_0x1fa565){_0x3f2393[_0x1e93('0x20')]=_0x1fa565;if(_0x472cd4[_0x1e93('0x34')][_0x1e93('0x42')]){_0x2c9703[_0x1e93('0x43')]=[{'all':!![]}];}return db[_0x1e93('0x2d')][_0x1e93('0x44')](_0x2c9703);})[_0x1e93('0x26')](function(_0x1a785d){_0x3f2393[_0x1e93('0x45')]=_0x1a785d;return _0x3f2393;})[_0x1e93('0x26')](respondWithFilteredResult(_0x28250a,_0x2c9703))[_0x1e93('0x46')](handleError(_0x28250a,null));};exports['show']=function(_0x244368,_0x55abc1){var _0x5ef940={'raw':![],'where':{'id':_0x244368[_0x1e93('0x47')]['id']}},_0x2ddce7={};_0x2ddce7[_0x1e93('0x32')]=_[_0x1e93('0x33')](db[_0x1e93('0x2d')]['rawAttributes']);_0x2ddce7[_0x1e93('0x34')]=_[_0x1e93('0x33')](_0x244368[_0x1e93('0x34')]);_0x2ddce7['filters']=_['intersection'](_0x2ddce7[_0x1e93('0x32')],_0x2ddce7[_0x1e93('0x34')]);_0x5ef940[_0x1e93('0x38')]=_[_0x1e93('0x36')](_0x2ddce7['model'],qs[_0x1e93('0x37')](_0x244368[_0x1e93('0x34')][_0x1e93('0x37')]));_0x5ef940[_0x1e93('0x38')]=_0x5ef940[_0x1e93('0x38')][_0x1e93('0x39')]?_0x5ef940[_0x1e93('0x38')]:_0x2ddce7['model'];if(_0x244368['query'][_0x1e93('0x42')]){_0x5ef940[_0x1e93('0x43')]=[{'all':!![]}];}_0x5ef940=_[_0x1e93('0x41')]({},_0x5ef940,_0x244368[_0x1e93('0x48')]);return db[_0x1e93('0x2d')][_0x1e93('0x49')](_0x5ef940)[_0x1e93('0x26')](handleEntityNotFound(_0x55abc1,null))[_0x1e93('0x26')](respondWithResult(_0x55abc1,null))[_0x1e93('0x46')](handleError(_0x55abc1,null));};exports[_0x1e93('0x4a')]=function(_0x4d6bca,_0x53eb75){return db[_0x1e93('0x2d')]['create'](_0x4d6bca[_0x1e93('0x4b')],{})[_0x1e93('0x26')](respondWithResult(_0x53eb75,0xc9))[_0x1e93('0x46')](handleError(_0x53eb75,null));};exports[_0x1e93('0x25')]=function(_0x1c3a60,_0x128e9a){if(_0x1c3a60[_0x1e93('0x4b')]['id']){delete _0x1c3a60[_0x1e93('0x4b')]['id'];}return db[_0x1e93('0x2d')][_0x1e93('0x49')]({'where':{'id':_0x1c3a60['params']['id']}})['then'](handleEntityNotFound(_0x128e9a,null))[_0x1e93('0x26')](saveUpdates(_0x1c3a60['body'],null))[_0x1e93('0x26')](respondWithResult(_0x128e9a,null))[_0x1e93('0x46')](handleError(_0x128e9a,null));};exports[_0x1e93('0x27')]=function(_0xc0ac73,_0x3627af){return db['FreshsalesAccount'][_0x1e93('0x49')]({'where':{'id':_0xc0ac73[_0x1e93('0x47')]['id']}})[_0x1e93('0x26')](handleEntityNotFound(_0x3627af,null))[_0x1e93('0x26')](removeEntity(_0x3627af,null))[_0x1e93('0x46')](handleError(_0x3627af,null));};exports['getConfigurations']=function(_0x350b5a,_0x3c2959,_0x1a38f3){var _0x57f2ba={};var _0x4dd01f={};var _0x5b4333;var _0x1e142e;return db[_0x1e93('0x2d')][_0x1e93('0x4c')]({'where':{'id':_0x350b5a[_0x1e93('0x47')]['id']}})['then'](handleEntityNotFound(_0x3c2959,null))[_0x1e93('0x26')](function(_0x39cb5c){if(_0x39cb5c){_0x5b4333=_0x39cb5c;_0x4dd01f[_0x1e93('0x32')]=_['keys'](db[_0x1e93('0x4d')][_0x1e93('0x2e')]);_0x4dd01f[_0x1e93('0x34')]=_[_0x1e93('0x33')](_0x350b5a['query']);_0x4dd01f['filters']=_[_0x1e93('0x36')](_0x4dd01f[_0x1e93('0x32')],_0x4dd01f[_0x1e93('0x34')]);_0x57f2ba['attributes']=_['intersection'](_0x4dd01f[_0x1e93('0x32')],qs[_0x1e93('0x37')](_0x350b5a[_0x1e93('0x34')][_0x1e93('0x37')]));_0x57f2ba[_0x1e93('0x38')]=_0x57f2ba['attributes'][_0x1e93('0x39')]?_0x57f2ba[_0x1e93('0x38')]:_0x4dd01f[_0x1e93('0x32')];_0x57f2ba[_0x1e93('0x3b')]=qs[_0x1e93('0x3c')](_0x350b5a['query']['sort']);_0x57f2ba[_0x1e93('0x3d')]=qs[_0x1e93('0x35')](_[_0x1e93('0x3e')](_0x350b5a['query'],_0x4dd01f[_0x1e93('0x35')]));if(_0x350b5a[_0x1e93('0x34')][_0x1e93('0x3f')]){_0x57f2ba[_0x1e93('0x3d')]=_[_0x1e93('0x41')](_0x57f2ba[_0x1e93('0x3d')],{'$or':_['map'](_0x57f2ba[_0x1e93('0x38')],function(_0x1c7166){var _0x4ff311={};_0x4ff311[_0x1c7166]={'$like':'%'+_0x350b5a['query']['filter']+'%'};return _0x4ff311;})});}_0x57f2ba=_['merge']({},_0x57f2ba,_0x350b5a['options']);return _0x5b4333['getConfigurations'](_0x57f2ba);}})[_0x1e93('0x26')](function(_0x68c74b){if(_0x68c74b){_0x1e142e=_0x68c74b[_0x1e93('0x39')];if(!_0x350b5a['query'][_0x1e93('0x3a')](_0x1e93('0x4e'))){_0x57f2ba[_0x1e93('0x1e')]=qs['limit'](_0x350b5a[_0x1e93('0x34')][_0x1e93('0x1e')]);_0x57f2ba[_0x1e93('0x1f')]=qs[_0x1e93('0x1f')](_0x350b5a[_0x1e93('0x34')][_0x1e93('0x1f')]);}return _0x5b4333[_0x1e93('0x4f')](_0x57f2ba);}})['then'](function(_0x426cd5){if(_0x426cd5){return _0x426cd5?{'count':_0x1e142e,'rows':_0x426cd5}:null;}})[_0x1e93('0x26')](respondWithResult(_0x3c2959,null))[_0x1e93('0x46')](handleError(_0x3c2959,null));};exports[_0x1e93('0x50')]=function(_0x33cac4,_0x25d417,_0x5af82c){if(_0x33cac4[_0x1e93('0x4b')]['id']){delete _0x33cac4[_0x1e93('0x4b')]['id'];}return db[_0x1e93('0x2d')]['findOne']({'where':{'id':_0x33cac4['params']['id']}})[_0x1e93('0x26')](handleEntityNotFound(_0x25d417,null))[_0x1e93('0x26')](function(_0x4bcea4){if(_0x4bcea4){_0x33cac4['body'][_0x1e93('0x51')]=_0x4bcea4['id'];_0x33cac4[_0x1e93('0x4b')][_0x1e93('0x52')]=integrations[_0x1e93('0x53')](_0x33cac4[_0x1e93('0x4b')][_0x1e93('0x54')],_0x33cac4[_0x1e93('0x4b')]['type']);_0x33cac4[_0x1e93('0x4b')]['Descriptions']=integrations['getDescriptions'](_0x33cac4['body'][_0x1e93('0x54')],_0x33cac4[_0x1e93('0x4b')]['type']);return db[_0x1e93('0x4d')][_0x1e93('0x4a')](_0x33cac4['body'],{'include':[{'model':db[_0x1e93('0x55')],'as':_0x1e93('0x52')},{'model':db[_0x1e93('0x55')],'as':_0x1e93('0x56')}]});}return null;})[_0x1e93('0x26')](respondWithResult(_0x25d417,null))['catch'](handleError(_0x25d417,null));};exports[_0x1e93('0x57')]=function(_0x5e0b47,_0x5a71a6,_0x2ed000){var _0x20691b='';var _0x3b658c='';return db[_0x1e93('0x2d')]['findOne']({'where':{'id':_0x5e0b47['params']['id']},'attributes':['id',_0x1e93('0x58'),'remoteUri',_0x1e93('0x59')]})['then'](handleEntityNotFound(_0x5a71a6,null))[_0x1e93('0x26')](function(_0x3d6f98){if(_0x3d6f98){_0x3b658c=_0x3d6f98[_0x1e93('0x58')];_0x20691b=_0x3d6f98[_0x1e93('0x5a')];var _0x1328f1=_0x3d6f98['remoteUri']['slice'](-0x1);if(_0x1328f1==='/'){_0x20691b=_0x20691b['substring'](0x0,_0x20691b[_0x1e93('0x5b')](_0x1328f1));}return rp({'method':_0x1e93('0x5c'),'uri':util['format']('%s%s',_0x20691b,_0x1e93('0x5d')),'headers':{'Authorization':_0x1e93('0x5e')+_0x3d6f98[_0x1e93('0x59')]},'json':!![]});}})[_0x1e93('0x26')](function(_0x2fb235){if(_0x2fb235){var _0x179790=_0x2fb235[_0x1e93('0x5f')];var _0x2a3820=![];var _0x208a75=null;for(_0x208a75=0x0;_0x208a75<_0x179790[_0x1e93('0x39')];_0x208a75++){if(_0x179790[_0x208a75]['email']===_0x3b658c){_0x2a3820=!![];}}if(_0x2a3820){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x1e93('0x60')});}}})[_0x1e93('0x26')](respondWithResult(_0x5a71a6,null))[_0x1e93('0x46')](function(_0x1cdb6e){var _0x8f1a70=_0x5e0b47[_0x1e93('0x34')][_0x1e93('0x61')]?0x1f4:_0x1cdb6e[_0x1e93('0x62')]||0x1f4;logger[_0x1e93('0x63')](_0x1e93('0x64'),_0x1e93('0x57'),_0x8f1a70,JSON[_0x1e93('0x65')](_0x1cdb6e));delete _0x1cdb6e['name'];if(_0x8f1a70===0x191){_0x8f1a70=0x190;}_0x5a71a6['status'](_0x8f1a70)['send'](_0x5e0b47['query'][_0x1e93('0x61')]?{'message':_0x1e93('0x66'),'statusCode':_0x1cdb6e[_0x1e93('0x62')]}:_0x1cdb6e);});};
\ No newline at end of file
index 3a681b1..b850e33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x430c=['define','FreshsalesAccount','int_freshsales_accounts','lodash','api','moment','bluebird','./intFreshsalesAccount.attributes','../../components/integrations/configuration'];(function(_0x4748ef,_0x2e6bd4){var _0x293761=function(_0x4c9f5e){while(--_0x4c9f5e){_0x4748ef['push'](_0x4748ef['shift']());}};_0x293761(++_0x2e6bd4);}(_0x430c,0x1a1));var _0xc430=function(_0x2e8418,_0x58c529){_0x2e8418=_0x2e8418-0x0;var _0x548fe6=_0x430c[_0x2e8418];return _0x548fe6;};'use strict';var _=require(_0xc430('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xc430('0x1'));var moment=require(_0xc430('0x2'));var BPromise=require(_0xc430('0x3'));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(_0xc430('0x4'));var integrations=require(_0xc430('0x5'));module['exports']=function(_0x42aa9c,_0x4de44f){return _0x42aa9c[_0xc430('0x6')](_0xc430('0x7'),attributes,{'tableName':_0xc430('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xffd6=['path','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports','define','FreshsalesAccount','int_freshsales_accounts','lodash','util','../../config/logger','bluebird','request-promise'];(function(_0xfe903b,_0x1ee585){var _0x33456c=function(_0x17b439){while(--_0x17b439){_0xfe903b['push'](_0xfe903b['shift']());}};_0x33456c(++_0x1ee585);}(_0xffd6,0x97));var _0x6ffd=function(_0x490be3,_0xf0fca3){_0x490be3=_0x490be3-0x0;var _0x3f5140=_0xffd6[_0x490be3];return _0x3f5140;};'use strict';var _=require(_0x6ffd('0x0'));var util=require(_0x6ffd('0x1'));var logger=require(_0x6ffd('0x2'))('api');var moment=require('moment');var BPromise=require(_0x6ffd('0x3'));var rp=require(_0x6ffd('0x4'));var fs=require('fs');var path=require(_0x6ffd('0x5'));var rimraf=require('rimraf');var config=require(_0x6ffd('0x6'));var attributes=require(_0x6ffd('0x7'));var integrations=require(_0x6ffd('0x8'));module[_0x6ffd('0x9')]=function(_0x561055,_0x122b71){return _0x561055[_0x6ffd('0xa')](_0x6ffd('0xb'),attributes,{'tableName':_0x6ffd('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 384dd29..1352aa9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e2e=['limit','map','include','model','GetFreshsalesAccount','find','ShowFreshsalesAccount','debug','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','FreshsalesAccount','findAll','options','raw','where','attributes'];(function(_0x4d00ce,_0x4e9704){var _0x4f10ef=function(_0xd83575){while(--_0xd83575){_0x4d00ce['push'](_0x4d00ce['shift']());}};_0x4f10ef(++_0x4e9704);}(_0x4e2e,0x1f2));var _0xe4e2=function(_0x5f4ec8,_0x308469){_0x5f4ec8=_0x5f4ec8-0x0;var _0x444adc=_0x4e2e[_0x5f4ec8];return _0x444adc;};'use strict';var _=require('lodash');var util=require(_0xe4e2('0x0'));var moment=require(_0xe4e2('0x1'));var BPromise=require(_0xe4e2('0x2'));var rs=require(_0xe4e2('0x3'));var fs=require('fs');var Redis=require(_0xe4e2('0x4'));var db=require(_0xe4e2('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xe4e2('0x6'))(_0xe4e2('0x7'));var config=require(_0xe4e2('0x8'));var jayson=require(_0xe4e2('0x9'));var client=jayson['client'][_0xe4e2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x36b1c6,_0x1c4e64,_0x125338){return new BPromise(function(_0x956c75,_0x27304b){return client[_0xe4e2('0xb')](_0x36b1c6,_0x125338)[_0xe4e2('0xc')](function(_0x4912da){logger[_0xe4e2('0xd')](_0xe4e2('0xe'),_0x1c4e64,_0xe4e2('0xf'));logger['debug'](_0xe4e2('0x10'),_0x1c4e64,_0xe4e2('0xf'),JSON[_0xe4e2('0x11')](_0x4912da));if(_0x4912da[_0xe4e2('0x12')]){if(_0x4912da[_0xe4e2('0x12')]['code']===0x1f4){logger[_0xe4e2('0x12')](_0xe4e2('0xe'),_0x1c4e64,_0x4912da[_0xe4e2('0x12')][_0xe4e2('0x13')]);return _0x27304b(_0x4912da['error'][_0xe4e2('0x13')]);}logger[_0xe4e2('0x12')](_0xe4e2('0xe'),_0x1c4e64,_0x4912da[_0xe4e2('0x12')][_0xe4e2('0x13')]);return _0x956c75(_0x4912da['error']['message']);}else{logger[_0xe4e2('0xd')](_0xe4e2('0xe'),_0x1c4e64,_0xe4e2('0xf'));_0x956c75(_0x4912da[_0xe4e2('0x14')][_0xe4e2('0x13')]);}})['catch'](function(_0x754778){logger[_0xe4e2('0x12')](_0xe4e2('0xe'),_0x1c4e64,_0x754778);_0x27304b(_0x754778);});});}exports['GetFreshsalesAccount']=function(_0x196f16){var _0x54c80b=this;return new Promise(function(_0x1d5e9d,_0x3f313b){return db[_0xe4e2('0x15')][_0xe4e2('0x16')]({'raw':_0x196f16[_0xe4e2('0x17')]?_0x196f16[_0xe4e2('0x17')][_0xe4e2('0x18')]===undefined?!![]:![]:!![],'where':_0x196f16[_0xe4e2('0x17')]?_0x196f16[_0xe4e2('0x17')][_0xe4e2('0x19')]||null:null,'attributes':_0x196f16['options']?_0x196f16[_0xe4e2('0x17')][_0xe4e2('0x1a')]||null:null,'limit':_0x196f16[_0xe4e2('0x17')]?_0x196f16[_0xe4e2('0x17')][_0xe4e2('0x1b')]||null:null,'include':_0x196f16[_0xe4e2('0x17')]?_0x196f16[_0xe4e2('0x17')]['include']?_[_0xe4e2('0x1c')](_0x196f16[_0xe4e2('0x17')][_0xe4e2('0x1d')],function(_0x5373c0){return{'model':db[_0x5373c0[_0xe4e2('0x1e')]],'as':_0x5373c0['as'],'attributes':_0x5373c0[_0xe4e2('0x1a')],'include':_0x5373c0['include']?_[_0xe4e2('0x1c')](_0x5373c0[_0xe4e2('0x1d')],function(_0x29143c){return{'model':db[_0x29143c[_0xe4e2('0x1e')]],'as':_0x29143c['as'],'attributes':_0x29143c[_0xe4e2('0x1a')],'include':_0x29143c['include']?_[_0xe4e2('0x1c')](_0x29143c[_0xe4e2('0x1d')],function(_0x1f6d1f){return{'model':db[_0x1f6d1f['model']],'as':_0x1f6d1f['as'],'attributes':_0x1f6d1f[_0xe4e2('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xe4e2('0xc')](function(_0x31f651){logger['info'](_0xe4e2('0x1f'),_0x196f16);logger['debug'](_0xe4e2('0x1f'),_0x196f16,JSON[_0xe4e2('0x11')](_0x31f651));_0x1d5e9d(_0x31f651);})['catch'](function(_0x46926a){logger[_0xe4e2('0x12')](_0xe4e2('0x1f'),_0x46926a[_0xe4e2('0x13')],_0x196f16);_0x3f313b(_0x54c80b[_0xe4e2('0x12')](0x1f4,_0x46926a['message']));});});};exports['ShowFreshsalesAccount']=function(_0x2cb235){var _0x2fe075=this;return new Promise(function(_0x12848d,_0x26fb97){return db[_0xe4e2('0x15')][_0xe4e2('0x20')]({'raw':_0x2cb235[_0xe4e2('0x17')]?_0x2cb235[_0xe4e2('0x17')][_0xe4e2('0x18')]===undefined?!![]:![]:!![],'where':_0x2cb235[_0xe4e2('0x17')]?_0x2cb235[_0xe4e2('0x17')][_0xe4e2('0x19')]||null:null,'attributes':_0x2cb235['options']?_0x2cb235[_0xe4e2('0x17')][_0xe4e2('0x1a')]||null:null,'include':_0x2cb235[_0xe4e2('0x17')]?_0x2cb235[_0xe4e2('0x17')][_0xe4e2('0x1d')]?_[_0xe4e2('0x1c')](_0x2cb235['options'][_0xe4e2('0x1d')],function(_0x286714){return{'model':db[_0x286714[_0xe4e2('0x1e')]],'as':_0x286714['as'],'attributes':_0x286714[_0xe4e2('0x1a')],'include':_0x286714[_0xe4e2('0x1d')]?_[_0xe4e2('0x1c')](_0x286714[_0xe4e2('0x1d')],function(_0x36a26d){return{'model':db[_0x36a26d[_0xe4e2('0x1e')]],'as':_0x36a26d['as'],'attributes':_0x36a26d[_0xe4e2('0x1a')],'include':_0x36a26d[_0xe4e2('0x1d')]?_['map'](_0x36a26d[_0xe4e2('0x1d')],function(_0x4d3c5e){return{'model':db[_0x4d3c5e[_0xe4e2('0x1e')]],'as':_0x4d3c5e['as'],'attributes':_0x4d3c5e[_0xe4e2('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4194bd){logger[_0xe4e2('0xd')](_0xe4e2('0x21'),_0x2cb235);logger[_0xe4e2('0x22')]('ShowFreshsalesAccount',_0x2cb235,JSON[_0xe4e2('0x11')](_0x4194bd));_0x12848d(_0x4194bd);})['catch'](function(_0x2164d2){logger['error'](_0xe4e2('0x21'),_0x2164d2[_0xe4e2('0x13')],_0x2cb235);_0x26fb97(_0x2fe075[_0xe4e2('0x12')](0x1f4,_0x2164d2['message']));});});};
\ No newline at end of file
+var _0x81c6=['debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','info','result','catch','GetFreshsalesAccount','FreshsalesAccount','findAll','options','where','limit','include','map','model','attributes','ShowFreshsalesAccount','util','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','FreshsalesAccount,\x20%s,\x20%s'];(function(_0x34285d,_0x243cbc){var _0x28ad2c=function(_0x3453dc){while(--_0x3453dc){_0x34285d['push'](_0x34285d['shift']());}};_0x28ad2c(++_0x243cbc);}(_0x81c6,0x1d5));var _0x681c=function(_0x1ab170,_0x5197ff){_0x1ab170=_0x1ab170-0x0;var _0x431698=_0x81c6[_0x1ab170];return _0x431698;};'use strict';var _=require('lodash');var util=require(_0x681c('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x681c('0x1'));var db=require(_0x681c('0x2'))['db'];var utils=require(_0x681c('0x3'));var logger=require('../../config/logger')(_0x681c('0x4'));var config=require(_0x681c('0x5'));var jayson=require(_0x681c('0x6'));var client=jayson[_0x681c('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x45331,_0xdc57a5,_0x5624d7){return new BPromise(function(_0x5b5f22,_0x1750e2){return client[_0x681c('0x8')](_0x45331,_0x5624d7)[_0x681c('0x9')](function(_0x5de78e){logger['info'](_0x681c('0xa'),_0xdc57a5,'request\x20sent');logger[_0x681c('0xb')](_0x681c('0xc'),_0xdc57a5,_0x681c('0xd'),JSON[_0x681c('0xe')](_0x5de78e));if(_0x5de78e['error']){if(_0x5de78e['error'][_0x681c('0xf')]===0x1f4){logger[_0x681c('0x10')](_0x681c('0xa'),_0xdc57a5,_0x5de78e['error'][_0x681c('0x11')]);return _0x1750e2(_0x5de78e['error'][_0x681c('0x11')]);}logger['error'](_0x681c('0xa'),_0xdc57a5,_0x5de78e[_0x681c('0x10')][_0x681c('0x11')]);return _0x5b5f22(_0x5de78e[_0x681c('0x10')][_0x681c('0x11')]);}else{logger[_0x681c('0x12')]('FreshsalesAccount,\x20%s,\x20%s',_0xdc57a5,_0x681c('0xd'));_0x5b5f22(_0x5de78e[_0x681c('0x13')][_0x681c('0x11')]);}})[_0x681c('0x14')](function(_0x2fce11){logger[_0x681c('0x10')]('FreshsalesAccount,\x20%s,\x20%s',_0xdc57a5,_0x2fce11);_0x1750e2(_0x2fce11);});});}exports[_0x681c('0x15')]=function(_0x42f506){var _0x4a9192=this;return new Promise(function(_0x42304f,_0x5b03fd){return db[_0x681c('0x16')][_0x681c('0x17')]({'raw':_0x42f506['options']?_0x42f506[_0x681c('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x42f506[_0x681c('0x18')]?_0x42f506[_0x681c('0x18')][_0x681c('0x19')]||null:null,'attributes':_0x42f506[_0x681c('0x18')]?_0x42f506[_0x681c('0x18')]['attributes']||null:null,'limit':_0x42f506['options']?_0x42f506['options'][_0x681c('0x1a')]||null:null,'include':_0x42f506[_0x681c('0x18')]?_0x42f506[_0x681c('0x18')][_0x681c('0x1b')]?_[_0x681c('0x1c')](_0x42f506[_0x681c('0x18')][_0x681c('0x1b')],function(_0x3d0297){return{'model':db[_0x3d0297[_0x681c('0x1d')]],'as':_0x3d0297['as'],'attributes':_0x3d0297[_0x681c('0x1e')],'include':_0x3d0297[_0x681c('0x1b')]?_[_0x681c('0x1c')](_0x3d0297[_0x681c('0x1b')],function(_0x218410){return{'model':db[_0x218410[_0x681c('0x1d')]],'as':_0x218410['as'],'attributes':_0x218410[_0x681c('0x1e')],'include':_0x218410['include']?_[_0x681c('0x1c')](_0x218410['include'],function(_0x5f8d64){return{'model':db[_0x5f8d64['model']],'as':_0x5f8d64['as'],'attributes':_0x5f8d64['attributes']};}):[]};}):[]};}):[]:[]})[_0x681c('0x9')](function(_0x17ea7c){logger[_0x681c('0x12')](_0x681c('0x15'),_0x42f506);logger['debug'](_0x681c('0x15'),_0x42f506,JSON[_0x681c('0xe')](_0x17ea7c));_0x42304f(_0x17ea7c);})[_0x681c('0x14')](function(_0x936fce){logger[_0x681c('0x10')](_0x681c('0x15'),_0x936fce[_0x681c('0x11')],_0x42f506);_0x5b03fd(_0x4a9192['error'](0x1f4,_0x936fce[_0x681c('0x11')]));});});};exports[_0x681c('0x1f')]=function(_0x2e783d){var _0x4af6aa=this;return new Promise(function(_0x385b14,_0x2179cd){return db[_0x681c('0x16')]['find']({'raw':_0x2e783d[_0x681c('0x18')]?_0x2e783d['options']['raw']===undefined?!![]:![]:!![],'where':_0x2e783d[_0x681c('0x18')]?_0x2e783d[_0x681c('0x18')][_0x681c('0x19')]||null:null,'attributes':_0x2e783d['options']?_0x2e783d[_0x681c('0x18')]['attributes']||null:null,'include':_0x2e783d[_0x681c('0x18')]?_0x2e783d['options']['include']?_['map'](_0x2e783d[_0x681c('0x18')][_0x681c('0x1b')],function(_0x5a349a){return{'model':db[_0x5a349a[_0x681c('0x1d')]],'as':_0x5a349a['as'],'attributes':_0x5a349a['attributes'],'include':_0x5a349a['include']?_[_0x681c('0x1c')](_0x5a349a['include'],function(_0x35991d){return{'model':db[_0x35991d[_0x681c('0x1d')]],'as':_0x35991d['as'],'attributes':_0x35991d[_0x681c('0x1e')],'include':_0x35991d['include']?_['map'](_0x35991d[_0x681c('0x1b')],function(_0x4545ff){return{'model':db[_0x4545ff['model']],'as':_0x4545ff['as'],'attributes':_0x4545ff[_0x681c('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x681c('0x9')](function(_0x302dab){logger['info'](_0x681c('0x1f'),_0x2e783d);logger[_0x681c('0xb')]('ShowFreshsalesAccount',_0x2e783d,JSON[_0x681c('0xe')](_0x302dab));_0x385b14(_0x302dab);})[_0x681c('0x14')](function(_0x83953c){logger[_0x681c('0x10')](_0x681c('0x1f'),_0x83953c['message'],_0x2e783d);_0x2179cd(_0x4af6aa['error'](0x1f4,_0x83953c[_0x681c('0x11')]));});});};
\ No newline at end of file
index cfe8547..c577aba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88dc=['index','/:id','show','/:id/subjects','getSubjects','/:id/descriptions','/:id/fields','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intFreshsalesConfiguration.controller','get','isAuthenticated'];(function(_0x22e9dc,_0x30fc3d){var _0x229fd5=function(_0x1510c2){while(--_0x1510c2){_0x22e9dc['push'](_0x22e9dc['shift']());}};_0x229fd5(++_0x30fc3d);}(_0x88dc,0x185));var _0xc88d=function(_0x6f11a4,_0x2c6a95){_0x6f11a4=_0x6f11a4-0x0;var _0x16bdc1=_0x88dc[_0x6f11a4];return _0x16bdc1;};'use strict';var multer=require('multer');var util=require(_0xc88d('0x0'));var path=require(_0xc88d('0x1'));var timeout=require(_0xc88d('0x2'));var express=require(_0xc88d('0x3'));var router=express[_0xc88d('0x4')]();var fs_extra=require(_0xc88d('0x5'));var auth=require(_0xc88d('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc88d('0x7'));var controller=require(_0xc88d('0x8'));router[_0xc88d('0x9')]('/',auth[_0xc88d('0xa')](),controller[_0xc88d('0xb')]);router[_0xc88d('0x9')](_0xc88d('0xc'),auth[_0xc88d('0xa')](),controller[_0xc88d('0xd')]);router[_0xc88d('0x9')](_0xc88d('0xe'),auth['isAuthenticated'](),controller[_0xc88d('0xf')]);router[_0xc88d('0x9')](_0xc88d('0x10'),auth['isAuthenticated'](),controller['getDescriptions']);router['get'](_0xc88d('0x11'),auth[_0xc88d('0xa')](),controller['getFields']);router[_0xc88d('0x12')]('/',auth[_0xc88d('0xa')](),controller[_0xc88d('0x13')]);router[_0xc88d('0x14')](_0xc88d('0xc'),auth[_0xc88d('0xa')](),controller[_0xc88d('0x15')]);router[_0xc88d('0x16')](_0xc88d('0xc'),auth[_0xc88d('0xa')](),controller[_0xc88d('0x17')]);module[_0xc88d('0x18')]=router;
\ No newline at end of file
+var _0x9da7=['multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intFreshsalesConfiguration.controller','index','get','/:id','isAuthenticated','show','getSubjects','getDescriptions','/:id/fields','getFields','post','create','put','update','delete','destroy','exports'];(function(_0xffa80d,_0x1ea4f4){var _0x4e2737=function(_0x6e829d){while(--_0x6e829d){_0xffa80d['push'](_0xffa80d['shift']());}};_0x4e2737(++_0x1ea4f4);}(_0x9da7,0x1c2));var _0x79da=function(_0x49a57f,_0x405f38){_0x49a57f=_0x49a57f-0x0;var _0x2fa2a5=_0x9da7[_0x49a57f];return _0x2fa2a5;};'use strict';var multer=require(_0x79da('0x0'));var util=require(_0x79da('0x1'));var path=require(_0x79da('0x2'));var timeout=require(_0x79da('0x3'));var express=require(_0x79da('0x4'));var router=express[_0x79da('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x79da('0x6'));var interaction=require(_0x79da('0x7'));var config=require('../../config/environment');var controller=require(_0x79da('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x79da('0x9')]);router[_0x79da('0xa')](_0x79da('0xb'),auth[_0x79da('0xc')](),controller[_0x79da('0xd')]);router['get']('/:id/subjects',auth[_0x79da('0xc')](),controller[_0x79da('0xe')]);router[_0x79da('0xa')]('/:id/descriptions',auth[_0x79da('0xc')](),controller[_0x79da('0xf')]);router[_0x79da('0xa')](_0x79da('0x10'),auth['isAuthenticated'](),controller[_0x79da('0x11')]);router[_0x79da('0x12')]('/',auth[_0x79da('0xc')](),controller[_0x79da('0x13')]);router[_0x79da('0x14')](_0x79da('0xb'),auth[_0x79da('0xc')](),controller[_0x79da('0x15')]);router[_0x79da('0x16')](_0x79da('0xb'),auth['isAuthenticated'](),controller[_0x79da('0x17')]);module[_0x79da('0x18')]=router;
\ No newline at end of file
index 16bb801..af2d438 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a6c=['STRING'];(function(_0x5c8811,_0x4f77d5){var _0x2c0941=function(_0x30e2bc){while(--_0x30e2bc){_0x5c8811['push'](_0x5c8811['shift']());}};_0x2c0941(++_0x4f77d5);}(_0x0a6c,0x125));var _0xc0a6=function(_0x36114b,_0x31e3f6){_0x36114b=_0x36114b-0x0;var _0x35d7f6=_0x0a6c[_0x36114b];return _0x35d7f6;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xc0a6('0x0')]}};
\ No newline at end of file
+var _0xc95a=['STRING','exports'];(function(_0xe5bb60,_0x4567ee){var _0x1ed98c=function(_0x82ed){while(--_0x82ed){_0xe5bb60['push'](_0xe5bb60['shift']());}};_0x1ed98c(++_0x4567ee);}(_0xc95a,0x18d));var _0xac95=function(_0x11cf82,_0x5c97ca){_0x11cf82=_0x11cf82-0x0;var _0x62fdd6=_0xc95a[_0x11cf82];return _0x62fdd6;};'use strict';var Sequelize=require('sequelize');module[_0xac95('0x0')]={'name':{'type':Sequelize[_0xac95('0x1')]},'description':{'type':Sequelize[_0xac95('0x1')]}};
\ No newline at end of file
index 60a8995..b488b71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x225d=['filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','keys','create','body','update','find','getSubjects','findOne','FreshsalesField','getDescriptions','getFields','eml-format','fast-json-patch','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','destroy','then','error','name','send','index','map','FreshsalesConfiguration','rawAttributes','fieldName','type','key','model'];(function(_0x6dd2da,_0x3deda2){var _0x37fe08=function(_0x3f6426){while(--_0x3f6426){_0x6dd2da['push'](_0x6dd2da['shift']());}};_0x37fe08(++_0x3deda2);}(_0x225d,0xc4));var _0xd225=function(_0x494a99,_0x49d51c){_0x494a99=_0x494a99-0x0;var _0x5096d3=_0x225d[_0x494a99];return _0x5096d3;};'use strict';var emlformat=require(_0xd225('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xd225('0x1'));var rp=require('request-promise');var moment=require(_0xd225('0x2'));var BPromise=require(_0xd225('0x3'));var Mustache=require(_0xd225('0x4'));var util=require(_0xd225('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xd225('0x6'));var ejs=require(_0xd225('0x7'));var fs=require('fs');var fs_extra=require(_0xd225('0x8'));var _=require(_0xd225('0x9'));var squel=require(_0xd225('0xa'));var crypto=require(_0xd225('0xb'));var jsforce=require(_0xd225('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xd225('0xd'));var Papa=require(_0xd225('0xe'));var Redis=require(_0xd225('0xf'));var authService=require(_0xd225('0x10'));var qs=require(_0xd225('0x11'));var as=require(_0xd225('0x12'));var hardwareService=require(_0xd225('0x13'));var logger=require(_0xd225('0x14'))(_0xd225('0x15'));var utils=require(_0xd225('0x16'));var config=require(_0xd225('0x17'));var licenseUtil=require(_0xd225('0x18'));var db=require(_0xd225('0x19'))['db'];function respondWithStatusCode(_0x2c5ace,_0x5ab263){_0x5ab263=_0x5ab263||0xcc;return function(_0x4aa2a8){if(_0x4aa2a8){return _0x2c5ace[_0xd225('0x1a')](_0x5ab263);}return _0x2c5ace['status'](_0x5ab263)[_0xd225('0x1b')]();};}function respondWithResult(_0x33b929,_0x2c3949){_0x2c3949=_0x2c3949||0xc8;return function(_0x4f38f1){if(_0x4f38f1){return _0x33b929[_0xd225('0x1c')](_0x2c3949)[_0xd225('0x1d')](_0x4f38f1);}};}function respondWithFilteredResult(_0x1d4723,_0x217d4c){return function(_0x584958){if(_0x584958){var _0x483ecf=typeof _0x217d4c[_0xd225('0x1e')]===_0xd225('0x1f')&&typeof _0x217d4c[_0xd225('0x20')]===_0xd225('0x1f');var _0x1c464f=_0x584958[_0xd225('0x21')];var _0x56d76e=_0x483ecf?0x0:_0x217d4c[_0xd225('0x1e')];var _0x21599d=_0x483ecf?_0x584958[_0xd225('0x21')]:_0x217d4c[_0xd225('0x1e')]+_0x217d4c[_0xd225('0x20')];var _0xfea235;if(_0x21599d>=_0x1c464f){_0x21599d=_0x1c464f;_0xfea235=0xc8;}else{_0xfea235=0xce;}_0x1d4723[_0xd225('0x1c')](_0xfea235);return _0x1d4723[_0xd225('0x22')](_0xd225('0x23'),_0x56d76e+'-'+_0x21599d+'/'+_0x1c464f)['json'](_0x584958);}return null;};}function patchUpdates(_0x1a6e14){return function(_0x32fb51){try{jsonpatch['apply'](_0x32fb51,_0x1a6e14,!![]);}catch(_0x429df9){return BPromise[_0xd225('0x24')](_0x429df9);}return _0x32fb51['save']();};}function saveUpdates(_0x378e77,_0x13d00e){return function(_0x279f3f){if(_0x279f3f){return _0x279f3f['update'](_0x378e77)['then'](function(_0x49a275){return _0x49a275;});}return null;};}function removeEntity(_0x1810d3,_0x4cdf5a){return function(_0xf7e49c){if(_0xf7e49c){return _0xf7e49c[_0xd225('0x25')]()[_0xd225('0x26')](function(){_0x1810d3[_0xd225('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x339005,_0x306341){return function(_0x1debaa){if(!_0x1debaa){_0x339005[_0xd225('0x1a')](0x194);}return _0x1debaa;};}function handleError(_0x206a11,_0x36de45){_0x36de45=_0x36de45||0x1f4;return function(_0x35a651){logger[_0xd225('0x27')](_0x35a651['stack']);if(_0x35a651[_0xd225('0x28')]){delete _0x35a651[_0xd225('0x28')];}_0x206a11[_0xd225('0x1c')](_0x36de45)[_0xd225('0x29')](_0x35a651);};}exports[_0xd225('0x2a')]=function(_0x2e2100,_0x5b9cb8){var _0x4ee38a={},_0x422424={},_0x7ae155={'count':0x0,'rows':[]};var _0x41b4c3=_[_0xd225('0x2b')](db[_0xd225('0x2c')][_0xd225('0x2d')],function(_0x46ff1e){return{'name':_0x46ff1e[_0xd225('0x2e')],'type':_0x46ff1e[_0xd225('0x2f')][_0xd225('0x30')]};});_0x422424[_0xd225('0x31')]=_[_0xd225('0x2b')](_0x41b4c3,_0xd225('0x28'));_0x422424['query']=_['keys'](_0x2e2100['query']);_0x422424[_0xd225('0x32')]=_[_0xd225('0x33')](_0x422424[_0xd225('0x31')],_0x422424[_0xd225('0x34')]);_0x4ee38a[_0xd225('0x35')]=_[_0xd225('0x33')](_0x422424[_0xd225('0x31')],qs['fields'](_0x2e2100[_0xd225('0x34')][_0xd225('0x36')]));_0x4ee38a['attributes']=_0x4ee38a[_0xd225('0x35')][_0xd225('0x37')]?_0x4ee38a['attributes']:_0x422424[_0xd225('0x31')];if(!_0x2e2100['query'][_0xd225('0x38')](_0xd225('0x39'))){_0x4ee38a['limit']=qs['limit'](_0x2e2100[_0xd225('0x34')]['limit']);_0x4ee38a[_0xd225('0x1e')]=qs[_0xd225('0x1e')](_0x2e2100[_0xd225('0x34')]['offset']);}_0x4ee38a[_0xd225('0x3a')]=qs['sort'](_0x2e2100['query'][_0xd225('0x3b')]);_0x4ee38a[_0xd225('0x3c')]=qs[_0xd225('0x32')](_[_0xd225('0x3d')](_0x2e2100['query'],_0x422424[_0xd225('0x32')]),_0x41b4c3);if(_0x2e2100['query'][_0xd225('0x3e')]){_0x4ee38a[_0xd225('0x3c')]=_[_0xd225('0x3f')](_0x4ee38a[_0xd225('0x3c')],{'$or':_[_0xd225('0x2b')](_0x41b4c3,function(_0x5b4306){if(_0x5b4306['type']!==_0xd225('0x40')){var _0x23c8ea={};_0x23c8ea[_0x5b4306['name']]={'$like':'%'+_0x2e2100['query'][_0xd225('0x3e')]+'%'};return _0x23c8ea;}})});}_0x4ee38a=_[_0xd225('0x3f')]({},_0x4ee38a,_0x2e2100[_0xd225('0x41')]);var _0x4e69c0={'where':_0x4ee38a['where']};return db[_0xd225('0x2c')][_0xd225('0x21')](_0x4e69c0)[_0xd225('0x26')](function(_0x45ec5a){_0x7ae155[_0xd225('0x21')]=_0x45ec5a;if(_0x2e2100[_0xd225('0x34')][_0xd225('0x42')]){_0x4ee38a[_0xd225('0x43')]=[{'all':!![]}];}return db[_0xd225('0x2c')]['findAll'](_0x4ee38a);})['then'](function(_0x49877f){_0x7ae155[_0xd225('0x44')]=_0x49877f;return _0x7ae155;})['then'](respondWithFilteredResult(_0x5b9cb8,_0x4ee38a))[_0xd225('0x45')](handleError(_0x5b9cb8,null));};exports[_0xd225('0x46')]=function(_0x134a37,_0x3947e6){var _0x3f7a56={'raw':![],'where':{'id':_0x134a37[_0xd225('0x47')]['id']}},_0x176752={};_0x176752[_0xd225('0x31')]=_[_0xd225('0x48')](db[_0xd225('0x2c')][_0xd225('0x2d')]);_0x176752['query']=_[_0xd225('0x48')](_0x134a37[_0xd225('0x34')]);_0x176752[_0xd225('0x32')]=_[_0xd225('0x33')](_0x176752[_0xd225('0x31')],_0x176752[_0xd225('0x34')]);_0x3f7a56[_0xd225('0x35')]=_[_0xd225('0x33')](_0x176752[_0xd225('0x31')],qs[_0xd225('0x36')](_0x134a37[_0xd225('0x34')]['fields']));_0x3f7a56[_0xd225('0x35')]=_0x3f7a56[_0xd225('0x35')][_0xd225('0x37')]?_0x3f7a56[_0xd225('0x35')]:_0x176752[_0xd225('0x31')];if(_0x134a37[_0xd225('0x34')][_0xd225('0x42')]){_0x3f7a56[_0xd225('0x43')]=[{'all':!![]}];}_0x3f7a56=_['merge']({},_0x3f7a56,_0x134a37['options']);return db['FreshsalesConfiguration']['find'](_0x3f7a56)[_0xd225('0x26')](handleEntityNotFound(_0x3947e6,null))['then'](respondWithResult(_0x3947e6,null))['catch'](handleError(_0x3947e6,null));};exports['create']=function(_0x1f71b8,_0x59915a){return db[_0xd225('0x2c')][_0xd225('0x49')](_0x1f71b8[_0xd225('0x4a')],{})[_0xd225('0x26')](respondWithResult(_0x59915a,0xc9))[_0xd225('0x45')](handleError(_0x59915a,null));};exports[_0xd225('0x4b')]=function(_0x334f8a,_0x1a3b90){if(_0x334f8a[_0xd225('0x4a')]['id']){delete _0x334f8a[_0xd225('0x4a')]['id'];}return db[_0xd225('0x2c')][_0xd225('0x4c')]({'where':{'id':_0x334f8a[_0xd225('0x47')]['id']}})['then'](handleEntityNotFound(_0x1a3b90,null))[_0xd225('0x26')](saveUpdates(_0x334f8a[_0xd225('0x4a')],null))[_0xd225('0x26')](respondWithResult(_0x1a3b90,null))[_0xd225('0x45')](handleError(_0x1a3b90,null));};exports['destroy']=function(_0x531736,_0x26ca48){return db[_0xd225('0x2c')][_0xd225('0x4c')]({'where':{'id':_0x531736['params']['id']}})[_0xd225('0x26')](handleEntityNotFound(_0x26ca48,null))[_0xd225('0x26')](removeEntity(_0x26ca48,null))['catch'](handleError(_0x26ca48,null));};exports[_0xd225('0x4d')]=function(_0x5577e1,_0x2bd11d,_0x5a2a46){var _0x42afc1={};var _0x39b9fe={};var _0xb3f894;var _0x312973;return db[_0xd225('0x2c')][_0xd225('0x4e')]({'where':{'id':_0x5577e1[_0xd225('0x47')]['id']}})[_0xd225('0x26')](handleEntityNotFound(_0x2bd11d,null))['then'](function(_0x5bbb99){if(_0x5bbb99){_0xb3f894=_0x5bbb99;_0x39b9fe['model']=_[_0xd225('0x48')](db[_0xd225('0x4f')][_0xd225('0x2d')]);_0x39b9fe[_0xd225('0x34')]=_[_0xd225('0x48')](_0x5577e1['query']);_0x39b9fe[_0xd225('0x32')]=_[_0xd225('0x33')](_0x39b9fe['model'],_0x39b9fe[_0xd225('0x34')]);_0x42afc1[_0xd225('0x35')]=_['intersection'](_0x39b9fe['model'],qs[_0xd225('0x36')](_0x5577e1[_0xd225('0x34')][_0xd225('0x36')]));_0x42afc1['attributes']=_0x42afc1[_0xd225('0x35')][_0xd225('0x37')]?_0x42afc1[_0xd225('0x35')]:_0x39b9fe[_0xd225('0x31')];_0x42afc1[_0xd225('0x3a')]=qs['sort'](_0x5577e1['query'][_0xd225('0x3b')]);_0x42afc1[_0xd225('0x3c')]=qs[_0xd225('0x32')](_[_0xd225('0x3d')](_0x5577e1[_0xd225('0x34')],_0x39b9fe[_0xd225('0x32')]));if(_0x5577e1[_0xd225('0x34')][_0xd225('0x3e')]){_0x42afc1[_0xd225('0x3c')]=_[_0xd225('0x3f')](_0x42afc1['where'],{'$or':_[_0xd225('0x2b')](_0x42afc1[_0xd225('0x35')],function(_0xb94b7c){var _0x287dc={};_0x287dc[_0xb94b7c]={'$like':'%'+_0x5577e1[_0xd225('0x34')][_0xd225('0x3e')]+'%'};return _0x287dc;})});}_0x42afc1=_['merge']({},_0x42afc1,_0x5577e1[_0xd225('0x41')]);return _0xb3f894[_0xd225('0x4d')](_0x42afc1);}})[_0xd225('0x26')](function(_0x3938d8){if(_0x3938d8){_0x312973=_0x3938d8[_0xd225('0x37')];if(!_0x5577e1[_0xd225('0x34')][_0xd225('0x38')](_0xd225('0x39'))){_0x42afc1[_0xd225('0x20')]=qs[_0xd225('0x20')](_0x5577e1[_0xd225('0x34')][_0xd225('0x20')]);_0x42afc1[_0xd225('0x1e')]=qs[_0xd225('0x1e')](_0x5577e1[_0xd225('0x34')][_0xd225('0x1e')]);}return _0xb3f894[_0xd225('0x4d')](_0x42afc1);}})[_0xd225('0x26')](function(_0x2cc365){if(_0x2cc365){return _0x2cc365?{'count':_0x312973,'rows':_0x2cc365}:null;}})[_0xd225('0x26')](respondWithResult(_0x2bd11d,null))[_0xd225('0x45')](handleError(_0x2bd11d,null));};exports['getDescriptions']=function(_0x5c886c,_0x1377f8,_0x1da831){var _0x18f8f4={};var _0x37ce34={};var _0xa6b86b;var _0x21d70b;return db[_0xd225('0x2c')][_0xd225('0x4e')]({'where':{'id':_0x5c886c[_0xd225('0x47')]['id']}})[_0xd225('0x26')](handleEntityNotFound(_0x1377f8,null))[_0xd225('0x26')](function(_0x1dc7f0){if(_0x1dc7f0){_0xa6b86b=_0x1dc7f0;_0x37ce34[_0xd225('0x31')]=_[_0xd225('0x48')](db[_0xd225('0x4f')][_0xd225('0x2d')]);_0x37ce34[_0xd225('0x34')]=_[_0xd225('0x48')](_0x5c886c[_0xd225('0x34')]);_0x37ce34[_0xd225('0x32')]=_[_0xd225('0x33')](_0x37ce34[_0xd225('0x31')],_0x37ce34['query']);_0x18f8f4[_0xd225('0x35')]=_['intersection'](_0x37ce34['model'],qs['fields'](_0x5c886c[_0xd225('0x34')][_0xd225('0x36')]));_0x18f8f4[_0xd225('0x35')]=_0x18f8f4[_0xd225('0x35')][_0xd225('0x37')]?_0x18f8f4[_0xd225('0x35')]:_0x37ce34[_0xd225('0x31')];_0x18f8f4[_0xd225('0x3a')]=qs[_0xd225('0x3b')](_0x5c886c[_0xd225('0x34')][_0xd225('0x3b')]);_0x18f8f4[_0xd225('0x3c')]=qs['filters'](_[_0xd225('0x3d')](_0x5c886c[_0xd225('0x34')],_0x37ce34[_0xd225('0x32')]));if(_0x5c886c[_0xd225('0x34')][_0xd225('0x3e')]){_0x18f8f4[_0xd225('0x3c')]=_['merge'](_0x18f8f4[_0xd225('0x3c')],{'$or':_[_0xd225('0x2b')](_0x18f8f4[_0xd225('0x35')],function(_0x231d01){var _0x3fbc9c={};_0x3fbc9c[_0x231d01]={'$like':'%'+_0x5c886c['query']['filter']+'%'};return _0x3fbc9c;})});}_0x18f8f4=_[_0xd225('0x3f')]({},_0x18f8f4,_0x5c886c[_0xd225('0x41')]);return _0xa6b86b['getDescriptions'](_0x18f8f4);}})[_0xd225('0x26')](function(_0x51ec19){if(_0x51ec19){_0x21d70b=_0x51ec19[_0xd225('0x37')];if(!_0x5c886c[_0xd225('0x34')][_0xd225('0x38')]('nolimit')){_0x18f8f4[_0xd225('0x20')]=qs['limit'](_0x5c886c[_0xd225('0x34')][_0xd225('0x20')]);_0x18f8f4[_0xd225('0x1e')]=qs[_0xd225('0x1e')](_0x5c886c[_0xd225('0x34')][_0xd225('0x1e')]);}return _0xa6b86b[_0xd225('0x50')](_0x18f8f4);}})[_0xd225('0x26')](function(_0x2d604b){if(_0x2d604b){return _0x2d604b?{'count':_0x21d70b,'rows':_0x2d604b}:null;}})[_0xd225('0x26')](respondWithResult(_0x1377f8,null))['catch'](handleError(_0x1377f8,null));};exports[_0xd225('0x51')]=function(_0x7f009,_0x1f29eb,_0x1a5f32){var _0x27a5de={};var _0x5a1abd={};var _0x3ff7aa;var _0xbb07;return db[_0xd225('0x2c')][_0xd225('0x4e')]({'where':{'id':_0x7f009[_0xd225('0x47')]['id']}})['then'](handleEntityNotFound(_0x1f29eb,null))[_0xd225('0x26')](function(_0x26482a){if(_0x26482a){_0x3ff7aa=_0x26482a;_0x5a1abd[_0xd225('0x31')]=_[_0xd225('0x48')](db['FreshsalesField'][_0xd225('0x2d')]);_0x5a1abd['query']=_['keys'](_0x7f009[_0xd225('0x34')]);_0x5a1abd[_0xd225('0x32')]=_['intersection'](_0x5a1abd[_0xd225('0x31')],_0x5a1abd['query']);_0x27a5de[_0xd225('0x35')]=_['intersection'](_0x5a1abd[_0xd225('0x31')],qs[_0xd225('0x36')](_0x7f009['query'][_0xd225('0x36')]));_0x27a5de[_0xd225('0x35')]=_0x27a5de[_0xd225('0x35')][_0xd225('0x37')]?_0x27a5de['attributes']:_0x5a1abd[_0xd225('0x31')];_0x27a5de[_0xd225('0x3a')]=qs[_0xd225('0x3b')](_0x7f009['query'][_0xd225('0x3b')]);_0x27a5de[_0xd225('0x3c')]=qs[_0xd225('0x32')](_[_0xd225('0x3d')](_0x7f009[_0xd225('0x34')],_0x5a1abd['filters']));if(_0x7f009['query']['filter']){_0x27a5de['where']=_['merge'](_0x27a5de[_0xd225('0x3c')],{'$or':_['map'](_0x27a5de[_0xd225('0x35')],function(_0x338420){var _0x57a880={};_0x57a880[_0x338420]={'$like':'%'+_0x7f009[_0xd225('0x34')][_0xd225('0x3e')]+'%'};return _0x57a880;})});}_0x27a5de=_[_0xd225('0x3f')]({},_0x27a5de,_0x7f009[_0xd225('0x41')]);return _0x3ff7aa[_0xd225('0x51')](_0x27a5de);}})[_0xd225('0x26')](function(_0x4aade7){if(_0x4aade7){_0xbb07=_0x4aade7[_0xd225('0x37')];if(!_0x7f009[_0xd225('0x34')][_0xd225('0x38')]('nolimit')){_0x27a5de[_0xd225('0x20')]=qs['limit'](_0x7f009['query'][_0xd225('0x20')]);_0x27a5de[_0xd225('0x1e')]=qs[_0xd225('0x1e')](_0x7f009[_0xd225('0x34')][_0xd225('0x1e')]);}return _0x3ff7aa['getFields'](_0x27a5de);}})[_0xd225('0x26')](function(_0x5d9138){if(_0x5d9138){return _0x5d9138?{'count':_0xbb07,'rows':_0x5d9138}:null;}})[_0xd225('0x26')](respondWithResult(_0x1f29eb,null))[_0xd225('0x45')](handleError(_0x1f29eb,null));};
\ No newline at end of file
+var _0x5abf=['rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','FreshsalesConfiguration','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','rows','show','keys','find','catch','create','body','params','getSubjects','findOne','FreshsalesField','length','pick','getDescriptions','getFields'];(function(_0x51e738,_0x1f89b7){var _0xc42536=function(_0x39d6c5){while(--_0x39d6c5){_0x51e738['push'](_0x51e738['shift']());}};_0xc42536(++_0x1f89b7);}(_0x5abf,0xed));var _0xf5ab=function(_0x42bdad,_0x12836c){_0x42bdad=_0x42bdad-0x0;var _0x122626=_0x5abf[_0x42bdad];return _0x122626;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf5ab('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf5ab('0x1'));var rp=require(_0xf5ab('0x2'));var moment=require(_0xf5ab('0x3'));var BPromise=require(_0xf5ab('0x4'));var Mustache=require(_0xf5ab('0x5'));var util=require('util');var path=require(_0xf5ab('0x6'));var sox=require(_0xf5ab('0x7'));var csv=require(_0xf5ab('0x8'));var ejs=require(_0xf5ab('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf5ab('0xa'));var squel=require(_0xf5ab('0xb'));var crypto=require(_0xf5ab('0xc'));var jsforce=require(_0xf5ab('0xd'));var deskjs=require(_0xf5ab('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xf5ab('0xf'));var Redis=require('ioredis');var authService=require(_0xf5ab('0x10'));var qs=require(_0xf5ab('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf5ab('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xf5ab('0x13'));var config=require(_0xf5ab('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xf5ab('0x15'))['db'];function respondWithStatusCode(_0x1ee956,_0x382c10){_0x382c10=_0x382c10||0xcc;return function(_0x2c0447){if(_0x2c0447){return _0x1ee956['sendStatus'](_0x382c10);}return _0x1ee956[_0xf5ab('0x16')](_0x382c10)[_0xf5ab('0x17')]();};}function respondWithResult(_0x53d962,_0x34d97c){_0x34d97c=_0x34d97c||0xc8;return function(_0x450957){if(_0x450957){return _0x53d962[_0xf5ab('0x16')](_0x34d97c)[_0xf5ab('0x18')](_0x450957);}};}function respondWithFilteredResult(_0x15d60b,_0x3ce418){return function(_0x180968){if(_0x180968){var _0x64fa2c=typeof _0x3ce418[_0xf5ab('0x19')]===_0xf5ab('0x1a')&&typeof _0x3ce418[_0xf5ab('0x1b')]==='undefined';var _0x518e74=_0x180968[_0xf5ab('0x1c')];var _0x22d14e=_0x64fa2c?0x0:_0x3ce418[_0xf5ab('0x19')];var _0x21c774=_0x64fa2c?_0x180968['count']:_0x3ce418[_0xf5ab('0x19')]+_0x3ce418[_0xf5ab('0x1b')];var _0x3c3d83;if(_0x21c774>=_0x518e74){_0x21c774=_0x518e74;_0x3c3d83=0xc8;}else{_0x3c3d83=0xce;}_0x15d60b[_0xf5ab('0x16')](_0x3c3d83);return _0x15d60b[_0xf5ab('0x1d')](_0xf5ab('0x1e'),_0x22d14e+'-'+_0x21c774+'/'+_0x518e74)[_0xf5ab('0x18')](_0x180968);}return null;};}function patchUpdates(_0x31ad30){return function(_0x4062d4){try{jsonpatch['apply'](_0x4062d4,_0x31ad30,!![]);}catch(_0x2bc956){return BPromise[_0xf5ab('0x1f')](_0x2bc956);}return _0x4062d4[_0xf5ab('0x20')]();};}function saveUpdates(_0x378f48,_0x5d86da){return function(_0x23a972){if(_0x23a972){return _0x23a972[_0xf5ab('0x21')](_0x378f48)[_0xf5ab('0x22')](function(_0x54622c){return _0x54622c;});}return null;};}function removeEntity(_0x32e683,_0x3cf142){return function(_0x123245){if(_0x123245){return _0x123245[_0xf5ab('0x23')]()[_0xf5ab('0x22')](function(){_0x32e683[_0xf5ab('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3e092d,_0x91113f){return function(_0x3deb6d){if(!_0x3deb6d){_0x3e092d['sendStatus'](0x194);}return _0x3deb6d;};}function handleError(_0x3c52c7,_0xc48014){_0xc48014=_0xc48014||0x1f4;return function(_0x4e934e){logger[_0xf5ab('0x24')](_0x4e934e[_0xf5ab('0x25')]);if(_0x4e934e[_0xf5ab('0x26')]){delete _0x4e934e['name'];}_0x3c52c7[_0xf5ab('0x16')](_0xc48014)[_0xf5ab('0x27')](_0x4e934e);};}exports[_0xf5ab('0x28')]=function(_0x4e8045,_0x3067b8){var _0x1ea3e5={},_0x311b1e={},_0x4b1709={'count':0x0,'rows':[]};var _0x4bf06a=_[_0xf5ab('0x29')](db[_0xf5ab('0x2a')][_0xf5ab('0x2b')],function(_0x12c9d8){return{'name':_0x12c9d8[_0xf5ab('0x2c')],'type':_0x12c9d8[_0xf5ab('0x2d')][_0xf5ab('0x2e')]};});_0x311b1e['model']=_[_0xf5ab('0x29')](_0x4bf06a,'name');_0x311b1e[_0xf5ab('0x2f')]=_['keys'](_0x4e8045[_0xf5ab('0x2f')]);_0x311b1e[_0xf5ab('0x30')]=_[_0xf5ab('0x31')](_0x311b1e[_0xf5ab('0x32')],_0x311b1e[_0xf5ab('0x2f')]);_0x1ea3e5[_0xf5ab('0x33')]=_[_0xf5ab('0x31')](_0x311b1e[_0xf5ab('0x32')],qs[_0xf5ab('0x34')](_0x4e8045[_0xf5ab('0x2f')][_0xf5ab('0x34')]));_0x1ea3e5[_0xf5ab('0x33')]=_0x1ea3e5['attributes']['length']?_0x1ea3e5['attributes']:_0x311b1e[_0xf5ab('0x32')];if(!_0x4e8045['query'][_0xf5ab('0x35')](_0xf5ab('0x36'))){_0x1ea3e5[_0xf5ab('0x1b')]=qs['limit'](_0x4e8045[_0xf5ab('0x2f')][_0xf5ab('0x1b')]);_0x1ea3e5['offset']=qs[_0xf5ab('0x19')](_0x4e8045[_0xf5ab('0x2f')][_0xf5ab('0x19')]);}_0x1ea3e5[_0xf5ab('0x37')]=qs[_0xf5ab('0x38')](_0x4e8045['query']['sort']);_0x1ea3e5[_0xf5ab('0x39')]=qs[_0xf5ab('0x30')](_['pick'](_0x4e8045[_0xf5ab('0x2f')],_0x311b1e[_0xf5ab('0x30')]),_0x4bf06a);if(_0x4e8045[_0xf5ab('0x2f')]['filter']){_0x1ea3e5[_0xf5ab('0x39')]=_[_0xf5ab('0x3a')](_0x1ea3e5[_0xf5ab('0x39')],{'$or':_[_0xf5ab('0x29')](_0x4bf06a,function(_0x59fdd3){if(_0x59fdd3[_0xf5ab('0x2d')]!==_0xf5ab('0x3b')){var _0x5347a9={};_0x5347a9[_0x59fdd3['name']]={'$like':'%'+_0x4e8045[_0xf5ab('0x2f')][_0xf5ab('0x3c')]+'%'};return _0x5347a9;}})});}_0x1ea3e5=_[_0xf5ab('0x3a')]({},_0x1ea3e5,_0x4e8045[_0xf5ab('0x3d')]);var _0x1b77d9={'where':_0x1ea3e5[_0xf5ab('0x39')]};return db['FreshsalesConfiguration']['count'](_0x1b77d9)[_0xf5ab('0x22')](function(_0x2b609f){_0x4b1709[_0xf5ab('0x1c')]=_0x2b609f;if(_0x4e8045[_0xf5ab('0x2f')][_0xf5ab('0x3e')]){_0x1ea3e5[_0xf5ab('0x3f')]=[{'all':!![]}];}return db[_0xf5ab('0x2a')]['findAll'](_0x1ea3e5);})[_0xf5ab('0x22')](function(_0x2bed4a){_0x4b1709[_0xf5ab('0x40')]=_0x2bed4a;return _0x4b1709;})[_0xf5ab('0x22')](respondWithFilteredResult(_0x3067b8,_0x1ea3e5))['catch'](handleError(_0x3067b8,null));};exports[_0xf5ab('0x41')]=function(_0x59d1a3,_0x142d47){var _0x34e310={'raw':![],'where':{'id':_0x59d1a3['params']['id']}},_0x26f6c0={};_0x26f6c0[_0xf5ab('0x32')]=_[_0xf5ab('0x42')](db['FreshsalesConfiguration'][_0xf5ab('0x2b')]);_0x26f6c0[_0xf5ab('0x2f')]=_[_0xf5ab('0x42')](_0x59d1a3['query']);_0x26f6c0[_0xf5ab('0x30')]=_['intersection'](_0x26f6c0[_0xf5ab('0x32')],_0x26f6c0[_0xf5ab('0x2f')]);_0x34e310['attributes']=_[_0xf5ab('0x31')](_0x26f6c0[_0xf5ab('0x32')],qs['fields'](_0x59d1a3[_0xf5ab('0x2f')][_0xf5ab('0x34')]));_0x34e310[_0xf5ab('0x33')]=_0x34e310[_0xf5ab('0x33')]['length']?_0x34e310[_0xf5ab('0x33')]:_0x26f6c0[_0xf5ab('0x32')];if(_0x59d1a3[_0xf5ab('0x2f')][_0xf5ab('0x3e')]){_0x34e310[_0xf5ab('0x3f')]=[{'all':!![]}];}_0x34e310=_[_0xf5ab('0x3a')]({},_0x34e310,_0x59d1a3['options']);return db[_0xf5ab('0x2a')][_0xf5ab('0x43')](_0x34e310)[_0xf5ab('0x22')](handleEntityNotFound(_0x142d47,null))[_0xf5ab('0x22')](respondWithResult(_0x142d47,null))[_0xf5ab('0x44')](handleError(_0x142d47,null));};exports[_0xf5ab('0x45')]=function(_0x91c6c0,_0x19f4b4){return db[_0xf5ab('0x2a')][_0xf5ab('0x45')](_0x91c6c0[_0xf5ab('0x46')],{})[_0xf5ab('0x22')](respondWithResult(_0x19f4b4,0xc9))[_0xf5ab('0x44')](handleError(_0x19f4b4,null));};exports[_0xf5ab('0x21')]=function(_0x2ded42,_0x224112){if(_0x2ded42[_0xf5ab('0x46')]['id']){delete _0x2ded42[_0xf5ab('0x46')]['id'];}return db[_0xf5ab('0x2a')][_0xf5ab('0x43')]({'where':{'id':_0x2ded42[_0xf5ab('0x47')]['id']}})[_0xf5ab('0x22')](handleEntityNotFound(_0x224112,null))[_0xf5ab('0x22')](saveUpdates(_0x2ded42[_0xf5ab('0x46')],null))[_0xf5ab('0x22')](respondWithResult(_0x224112,null))[_0xf5ab('0x44')](handleError(_0x224112,null));};exports[_0xf5ab('0x23')]=function(_0x1a295e,_0x502fb5){return db[_0xf5ab('0x2a')][_0xf5ab('0x43')]({'where':{'id':_0x1a295e['params']['id']}})[_0xf5ab('0x22')](handleEntityNotFound(_0x502fb5,null))[_0xf5ab('0x22')](removeEntity(_0x502fb5,null))[_0xf5ab('0x44')](handleError(_0x502fb5,null));};exports[_0xf5ab('0x48')]=function(_0x26129e,_0x5159ef,_0x16b691){var _0x4fc90f={};var _0x1a2aed={};var _0x3b574b;var _0x1a9885;return db[_0xf5ab('0x2a')][_0xf5ab('0x49')]({'where':{'id':_0x26129e[_0xf5ab('0x47')]['id']}})['then'](handleEntityNotFound(_0x5159ef,null))[_0xf5ab('0x22')](function(_0x1229d0){if(_0x1229d0){_0x3b574b=_0x1229d0;_0x1a2aed[_0xf5ab('0x32')]=_['keys'](db[_0xf5ab('0x4a')][_0xf5ab('0x2b')]);_0x1a2aed[_0xf5ab('0x2f')]=_['keys'](_0x26129e['query']);_0x1a2aed[_0xf5ab('0x30')]=_[_0xf5ab('0x31')](_0x1a2aed[_0xf5ab('0x32')],_0x1a2aed['query']);_0x4fc90f[_0xf5ab('0x33')]=_[_0xf5ab('0x31')](_0x1a2aed['model'],qs[_0xf5ab('0x34')](_0x26129e[_0xf5ab('0x2f')][_0xf5ab('0x34')]));_0x4fc90f[_0xf5ab('0x33')]=_0x4fc90f[_0xf5ab('0x33')][_0xf5ab('0x4b')]?_0x4fc90f[_0xf5ab('0x33')]:_0x1a2aed[_0xf5ab('0x32')];_0x4fc90f['order']=qs[_0xf5ab('0x38')](_0x26129e[_0xf5ab('0x2f')][_0xf5ab('0x38')]);_0x4fc90f[_0xf5ab('0x39')]=qs[_0xf5ab('0x30')](_[_0xf5ab('0x4c')](_0x26129e['query'],_0x1a2aed['filters']));if(_0x26129e[_0xf5ab('0x2f')]['filter']){_0x4fc90f[_0xf5ab('0x39')]=_[_0xf5ab('0x3a')](_0x4fc90f[_0xf5ab('0x39')],{'$or':_['map'](_0x4fc90f[_0xf5ab('0x33')],function(_0x2f5a90){var _0x45bee1={};_0x45bee1[_0x2f5a90]={'$like':'%'+_0x26129e[_0xf5ab('0x2f')][_0xf5ab('0x3c')]+'%'};return _0x45bee1;})});}_0x4fc90f=_[_0xf5ab('0x3a')]({},_0x4fc90f,_0x26129e[_0xf5ab('0x3d')]);return _0x3b574b[_0xf5ab('0x48')](_0x4fc90f);}})[_0xf5ab('0x22')](function(_0x4a1b2f){if(_0x4a1b2f){_0x1a9885=_0x4a1b2f[_0xf5ab('0x4b')];if(!_0x26129e['query'][_0xf5ab('0x35')](_0xf5ab('0x36'))){_0x4fc90f['limit']=qs[_0xf5ab('0x1b')](_0x26129e[_0xf5ab('0x2f')][_0xf5ab('0x1b')]);_0x4fc90f['offset']=qs[_0xf5ab('0x19')](_0x26129e[_0xf5ab('0x2f')][_0xf5ab('0x19')]);}return _0x3b574b[_0xf5ab('0x48')](_0x4fc90f);}})[_0xf5ab('0x22')](function(_0x90332d){if(_0x90332d){return _0x90332d?{'count':_0x1a9885,'rows':_0x90332d}:null;}})['then'](respondWithResult(_0x5159ef,null))['catch'](handleError(_0x5159ef,null));};exports[_0xf5ab('0x4d')]=function(_0x3ab336,_0x4274af,_0x3ff259){var _0x4b3d77={};var _0x3decf4={};var _0x3a9a89;var _0x530940;return db[_0xf5ab('0x2a')][_0xf5ab('0x49')]({'where':{'id':_0x3ab336[_0xf5ab('0x47')]['id']}})[_0xf5ab('0x22')](handleEntityNotFound(_0x4274af,null))[_0xf5ab('0x22')](function(_0x2fdbda){if(_0x2fdbda){_0x3a9a89=_0x2fdbda;_0x3decf4[_0xf5ab('0x32')]=_[_0xf5ab('0x42')](db['FreshsalesField'][_0xf5ab('0x2b')]);_0x3decf4[_0xf5ab('0x2f')]=_['keys'](_0x3ab336[_0xf5ab('0x2f')]);_0x3decf4[_0xf5ab('0x30')]=_[_0xf5ab('0x31')](_0x3decf4[_0xf5ab('0x32')],_0x3decf4[_0xf5ab('0x2f')]);_0x4b3d77[_0xf5ab('0x33')]=_[_0xf5ab('0x31')](_0x3decf4[_0xf5ab('0x32')],qs[_0xf5ab('0x34')](_0x3ab336[_0xf5ab('0x2f')][_0xf5ab('0x34')]));_0x4b3d77[_0xf5ab('0x33')]=_0x4b3d77[_0xf5ab('0x33')][_0xf5ab('0x4b')]?_0x4b3d77[_0xf5ab('0x33')]:_0x3decf4[_0xf5ab('0x32')];_0x4b3d77[_0xf5ab('0x37')]=qs[_0xf5ab('0x38')](_0x3ab336[_0xf5ab('0x2f')][_0xf5ab('0x38')]);_0x4b3d77[_0xf5ab('0x39')]=qs['filters'](_[_0xf5ab('0x4c')](_0x3ab336['query'],_0x3decf4[_0xf5ab('0x30')]));if(_0x3ab336[_0xf5ab('0x2f')][_0xf5ab('0x3c')]){_0x4b3d77[_0xf5ab('0x39')]=_[_0xf5ab('0x3a')](_0x4b3d77[_0xf5ab('0x39')],{'$or':_[_0xf5ab('0x29')](_0x4b3d77[_0xf5ab('0x33')],function(_0x4bba56){var _0xd1ab67={};_0xd1ab67[_0x4bba56]={'$like':'%'+_0x3ab336[_0xf5ab('0x2f')]['filter']+'%'};return _0xd1ab67;})});}_0x4b3d77=_['merge']({},_0x4b3d77,_0x3ab336[_0xf5ab('0x3d')]);return _0x3a9a89[_0xf5ab('0x4d')](_0x4b3d77);}})[_0xf5ab('0x22')](function(_0xcae18){if(_0xcae18){_0x530940=_0xcae18[_0xf5ab('0x4b')];if(!_0x3ab336[_0xf5ab('0x2f')]['hasOwnProperty']('nolimit')){_0x4b3d77[_0xf5ab('0x1b')]=qs['limit'](_0x3ab336[_0xf5ab('0x2f')][_0xf5ab('0x1b')]);_0x4b3d77['offset']=qs[_0xf5ab('0x19')](_0x3ab336[_0xf5ab('0x2f')][_0xf5ab('0x19')]);}return _0x3a9a89[_0xf5ab('0x4d')](_0x4b3d77);}})['then'](function(_0x4159cc){if(_0x4159cc){return _0x4159cc?{'count':_0x530940,'rows':_0x4159cc}:null;}})['then'](respondWithResult(_0x4274af,null))[_0xf5ab('0x44')](handleError(_0x4274af,null));};exports[_0xf5ab('0x4e')]=function(_0x388375,_0x16f24e,_0x25ca92){var _0x5b5570={};var _0x2daf84={};var _0x37c290;var _0x46dd9c;return db[_0xf5ab('0x2a')][_0xf5ab('0x49')]({'where':{'id':_0x388375[_0xf5ab('0x47')]['id']}})[_0xf5ab('0x22')](handleEntityNotFound(_0x16f24e,null))[_0xf5ab('0x22')](function(_0x434d9a){if(_0x434d9a){_0x37c290=_0x434d9a;_0x2daf84[_0xf5ab('0x32')]=_['keys'](db['FreshsalesField'][_0xf5ab('0x2b')]);_0x2daf84[_0xf5ab('0x2f')]=_[_0xf5ab('0x42')](_0x388375['query']);_0x2daf84[_0xf5ab('0x30')]=_[_0xf5ab('0x31')](_0x2daf84[_0xf5ab('0x32')],_0x2daf84[_0xf5ab('0x2f')]);_0x5b5570[_0xf5ab('0x33')]=_[_0xf5ab('0x31')](_0x2daf84[_0xf5ab('0x32')],qs[_0xf5ab('0x34')](_0x388375[_0xf5ab('0x2f')][_0xf5ab('0x34')]));_0x5b5570['attributes']=_0x5b5570[_0xf5ab('0x33')][_0xf5ab('0x4b')]?_0x5b5570[_0xf5ab('0x33')]:_0x2daf84['model'];_0x5b5570[_0xf5ab('0x37')]=qs[_0xf5ab('0x38')](_0x388375[_0xf5ab('0x2f')][_0xf5ab('0x38')]);_0x5b5570[_0xf5ab('0x39')]=qs[_0xf5ab('0x30')](_['pick'](_0x388375[_0xf5ab('0x2f')],_0x2daf84[_0xf5ab('0x30')]));if(_0x388375['query'][_0xf5ab('0x3c')]){_0x5b5570[_0xf5ab('0x39')]=_[_0xf5ab('0x3a')](_0x5b5570[_0xf5ab('0x39')],{'$or':_[_0xf5ab('0x29')](_0x5b5570[_0xf5ab('0x33')],function(_0x1918ab){var _0x3d7b45={};_0x3d7b45[_0x1918ab]={'$like':'%'+_0x388375[_0xf5ab('0x2f')][_0xf5ab('0x3c')]+'%'};return _0x3d7b45;})});}_0x5b5570=_['merge']({},_0x5b5570,_0x388375[_0xf5ab('0x3d')]);return _0x37c290['getFields'](_0x5b5570);}})[_0xf5ab('0x22')](function(_0x53b56d){if(_0x53b56d){_0x46dd9c=_0x53b56d[_0xf5ab('0x4b')];if(!_0x388375[_0xf5ab('0x2f')]['hasOwnProperty'](_0xf5ab('0x36'))){_0x5b5570[_0xf5ab('0x1b')]=qs[_0xf5ab('0x1b')](_0x388375['query']['limit']);_0x5b5570[_0xf5ab('0x19')]=qs[_0xf5ab('0x19')](_0x388375['query'][_0xf5ab('0x19')]);}return _0x37c290[_0xf5ab('0x4e')](_0x5b5570);}})[_0xf5ab('0x22')](function(_0x18f428){if(_0x18f428){return _0x18f428?{'count':_0x46dd9c,'rows':_0x18f428}:null;}})['then'](respondWithResult(_0x16f24e,null))[_0xf5ab('0x44')](handleError(_0x16f24e,null));};
\ No newline at end of file
index c1f3362..c8f2ffb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16f6=['lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','exports','FreshsalesConfiguration','int_freshsales_configurations'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x16f6,0x8f));var _0x616f=function(_0xb31102,_0x3e89e5){_0xb31102=_0xb31102-0x0;var _0x22600f=_0x16f6[_0xb31102];return _0x22600f;};'use strict';var _=require(_0x616f('0x0'));var util=require(_0x616f('0x1'));var logger=require('../../config/logger')(_0x616f('0x2'));var moment=require(_0x616f('0x3'));var BPromise=require(_0x616f('0x4'));var rp=require(_0x616f('0x5'));var fs=require('fs');var path=require(_0x616f('0x6'));var rimraf=require(_0x616f('0x7'));var config=require(_0x616f('0x8'));var attributes=require(_0x616f('0x9'));module[_0x616f('0xa')]=function(_0x13eddc,_0x41d13c){return _0x13eddc['define'](_0x616f('0xb'),attributes,{'tableName':_0x616f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x916c=['bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','exports','define','FreshsalesConfiguration','int_freshsales_configurations','lodash','util','api','moment'];(function(_0x30a5c5,_0x4a0b0c){var _0x4c26d5=function(_0x3797ca){while(--_0x3797ca){_0x30a5c5['push'](_0x30a5c5['shift']());}};_0x4c26d5(++_0x4a0b0c);}(_0x916c,0xf8));var _0xc916=function(_0x4953da,_0x5adaca){_0x4953da=_0x4953da-0x0;var _0x2d3780=_0x916c[_0x4953da];return _0x2d3780;};'use strict';var _=require(_0xc916('0x0'));var util=require(_0xc916('0x1'));var logger=require('../../config/logger')(_0xc916('0x2'));var moment=require(_0xc916('0x3'));var BPromise=require(_0xc916('0x4'));var rp=require(_0xc916('0x5'));var fs=require('fs');var path=require(_0xc916('0x6'));var rimraf=require(_0xc916('0x7'));var config=require(_0xc916('0x8'));var attributes=require(_0xc916('0x9'));module[_0xc916('0xa')]=function(_0x2e2f24,_0x27ef70){return _0x2e2f24[_0xc916('0xb')](_0xc916('0xc'),attributes,{'tableName':_0xc916('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 30a23ad..d2cf6d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc90c=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','then','info','request\x20sent','debug','error','code','FreshsalesConfiguration,\x20%s,\x20%s','message','catch','util','moment'];(function(_0x4eb15b,_0x4cb887){var _0x531747=function(_0x3b3bbb){while(--_0x3b3bbb){_0x4eb15b['push'](_0x4eb15b['shift']());}};_0x531747(++_0x4cb887);}(_0xc90c,0x70));var _0xcc90=function(_0x3aa404,_0x2326ae){_0x3aa404=_0x3aa404-0x0;var _0x5629fe=_0xc90c[_0x3aa404];return _0x5629fe;};'use strict';var _=require('lodash');var util=require(_0xcc90('0x0'));var moment=require(_0xcc90('0x1'));var BPromise=require('bluebird');var rs=require(_0xcc90('0x2'));var fs=require('fs');var Redis=require(_0xcc90('0x3'));var db=require(_0xcc90('0x4'))['db'];var utils=require(_0xcc90('0x5'));var logger=require(_0xcc90('0x6'))(_0xcc90('0x7'));var config=require('../../config/environment');var jayson=require(_0xcc90('0x8'));var client=jayson[_0xcc90('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x14117f,_0x582740,_0x55c74c){return new BPromise(function(_0x10b06a,_0x1ef37f){return client['request'](_0x14117f,_0x55c74c)[_0xcc90('0xa')](function(_0x3a2980){logger[_0xcc90('0xb')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x582740,_0xcc90('0xc'));logger[_0xcc90('0xd')]('FreshsalesConfiguration,\x20%s,\x20%s,\x20%s',_0x582740,_0xcc90('0xc'),JSON['stringify'](_0x3a2980));if(_0x3a2980[_0xcc90('0xe')]){if(_0x3a2980[_0xcc90('0xe')][_0xcc90('0xf')]===0x1f4){logger[_0xcc90('0xe')](_0xcc90('0x10'),_0x582740,_0x3a2980['error'][_0xcc90('0x11')]);return _0x1ef37f(_0x3a2980[_0xcc90('0xe')][_0xcc90('0x11')]);}logger['error'](_0xcc90('0x10'),_0x582740,_0x3a2980[_0xcc90('0xe')]['message']);return _0x10b06a(_0x3a2980['error']['message']);}else{logger[_0xcc90('0xb')](_0xcc90('0x10'),_0x582740,'request\x20sent');_0x10b06a(_0x3a2980['result']['message']);}})[_0xcc90('0x12')](function(_0x443099){logger[_0xcc90('0xe')](_0xcc90('0x10'),_0x582740,_0x443099);_0x1ef37f(_0x443099);});});}
\ No newline at end of file
+var _0x3b24=['rpc','../../config/environment','jayson/promise','client','http','request','then','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x4c6c9f,_0x25c8a9){var _0x31e332=function(_0x55ec4f){while(--_0x55ec4f){_0x4c6c9f['push'](_0x4c6c9f['shift']());}};_0x31e332(++_0x25c8a9);}(_0x3b24,0x1b1));var _0x43b2=function(_0x218c58,_0x48c06a){_0x218c58=_0x218c58-0x0;var _0x415683=_0x3b24[_0x218c58];return _0x415683;};'use strict';var _=require(_0x43b2('0x0'));var util=require(_0x43b2('0x1'));var moment=require(_0x43b2('0x2'));var BPromise=require(_0x43b2('0x3'));var rs=require(_0x43b2('0x4'));var fs=require('fs');var Redis=require(_0x43b2('0x5'));var db=require(_0x43b2('0x6'))['db'];var utils=require(_0x43b2('0x7'));var logger=require(_0x43b2('0x8'))(_0x43b2('0x9'));var config=require(_0x43b2('0xa'));var jayson=require(_0x43b2('0xb'));var client=jayson[_0x43b2('0xc')][_0x43b2('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x2798d7,_0x22ef5d,_0x17e8c5){return new BPromise(function(_0x4f6f38,_0x5ca77b){return client[_0x43b2('0xe')](_0x2798d7,_0x17e8c5)[_0x43b2('0xf')](function(_0x54ee89){logger['info'](_0x43b2('0x10'),_0x22ef5d,_0x43b2('0x11'));logger[_0x43b2('0x12')](_0x43b2('0x13'),_0x22ef5d,'request\x20sent',JSON[_0x43b2('0x14')](_0x54ee89));if(_0x54ee89['error']){if(_0x54ee89[_0x43b2('0x15')][_0x43b2('0x16')]===0x1f4){logger['error'](_0x43b2('0x10'),_0x22ef5d,_0x54ee89[_0x43b2('0x15')][_0x43b2('0x17')]);return _0x5ca77b(_0x54ee89['error'][_0x43b2('0x17')]);}logger['error']('FreshsalesConfiguration,\x20%s,\x20%s',_0x22ef5d,_0x54ee89[_0x43b2('0x15')]['message']);return _0x4f6f38(_0x54ee89['error'][_0x43b2('0x17')]);}else{logger[_0x43b2('0x18')](_0x43b2('0x10'),_0x22ef5d,_0x43b2('0x11'));_0x4f6f38(_0x54ee89[_0x43b2('0x19')][_0x43b2('0x17')]);}})['catch'](function(_0xc1fe35){logger[_0x43b2('0x15')](_0x43b2('0x10'),_0x22ef5d,_0xc1fe35);_0x5ca77b(_0xc1fe35);});});}
\ No newline at end of file
index 041b6e6..550e3bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f37=['multer','util','path','Router','fs-extra','../../components/auth/service','../../config/environment','get','index','isAuthenticated','post','put','/:id','update','delete','destroy'];(function(_0x422a97,_0x30d53){var _0x569ed1=function(_0x44e8d5){while(--_0x44e8d5){_0x422a97['push'](_0x422a97['shift']());}};_0x569ed1(++_0x30d53);}(_0x8f37,0x190));var _0x78f3=function(_0x86ec50,_0x4593a4){_0x86ec50=_0x86ec50-0x0;var _0x2f3590=_0x8f37[_0x86ec50];return _0x2f3590;};'use strict';var multer=require(_0x78f3('0x0'));var util=require(_0x78f3('0x1'));var path=require(_0x78f3('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x78f3('0x3')]();var fs_extra=require(_0x78f3('0x4'));var auth=require(_0x78f3('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x78f3('0x6'));var controller=require('./intFreshsalesField.controller');router[_0x78f3('0x7')]('/',auth['isAuthenticated'](),controller[_0x78f3('0x8')]);router[_0x78f3('0x7')]('/:id',auth[_0x78f3('0x9')](),controller['show']);router[_0x78f3('0xa')]('/',auth[_0x78f3('0x9')](),controller['create']);router[_0x78f3('0xb')](_0x78f3('0xc'),auth[_0x78f3('0x9')](),controller[_0x78f3('0xd')]);router[_0x78f3('0xe')]('/:id',auth[_0x78f3('0x9')](),controller[_0x78f3('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x5b02=['util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','isAuthenticated','/:id','show','create','put','update','delete','destroy','exports','multer'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5b02,0xe9));var _0x25b0=function(_0x5b4726,_0x5897f6){_0x5b4726=_0x5b4726-0x0;var _0x502b91=_0x5b02[_0x5b4726];return _0x502b91;};'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['post']('/',auth['isAuthenticated'](),controller[_0x25b0('0xc')]);router[_0x25b0('0xd')](_0x25b0('0xa'),auth['isAuthenticated'](),controller[_0x25b0('0xe')]);router[_0x25b0('0xf')](_0x25b0('0xa'),auth[_0x25b0('0x9')](),controller[_0x25b0('0x10')]);module[_0x25b0('0x11')]=router;
\ No newline at end of file
index 8f436e0..bf6ade5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5718=['ENUM','string','variable','customVariable','picklist','STRING','sequelize','exports'];(function(_0x45fae2,_0x39d28d){var _0x3edca1=function(_0x52b2ba){while(--_0x52b2ba){_0x45fae2['push'](_0x45fae2['shift']());}};_0x3edca1(++_0x39d28d);}(_0x5718,0x126));var _0x8571=function(_0x32d945,_0x38cc61){_0x32d945=_0x32d945-0x0;var _0x5775bf=_0x5718[_0x32d945];return _0x5775bf;};'use strict';var Sequelize=require(_0x8571('0x0'));module[_0x8571('0x1')]={'type':{'type':Sequelize[_0x8571('0x2')](_0x8571('0x3'),_0x8571('0x4'),_0x8571('0x5'),'keyValue',_0x8571('0x6')),'defaultValue':_0x8571('0x3')},'content':{'type':Sequelize[_0x8571('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x8571('0x2')](_0x8571('0x3'),_0x8571('0x4'),_0x8571('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x8571('0x7')]},'nameField':{'type':Sequelize[_0x8571('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x8571('0x7')]}};
\ No newline at end of file
+var _0x278c=['variable','customVariable','keyValue','picklist','STRING','string','ENUM'];(function(_0x17468a,_0x293272){var _0x49dd08=function(_0xe0bc2c){while(--_0xe0bc2c){_0x17468a['push'](_0x17468a['shift']());}};_0x49dd08(++_0x293272);}(_0x278c,0xe6));var _0xc278=function(_0x591a90,_0x5525b0){_0x591a90=_0x591a90-0x0;var _0x551587=_0x278c[_0x591a90];return _0x551587;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0xc278('0x0')]('string',_0xc278('0x1'),_0xc278('0x2'),_0xc278('0x3'),_0xc278('0x4')),'defaultValue':'string'},'content':{'type':Sequelize[_0xc278('0x5')]},'key':{'type':Sequelize[_0xc278('0x5')]},'keyType':{'type':Sequelize['ENUM'](_0xc278('0x6'),_0xc278('0x1'),_0xc278('0x2'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xc278('0x5')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index a92c640..1d3417c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94ec=['squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','count','limit','set','save','update','then','destroy','end','error','name','send','index','map','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','merge','where','VIRTUAL','filter','options','FreshsalesField','includeAll','include','findAll','rows','catch','show','params','find','create','body','eml-format','zip-dir','fast-json-patch','bluebird','mustache','util','path','to-csv','ejs'];(function(_0x2657f7,_0x15c229){var _0x6d956=function(_0x2cb0cf){while(--_0x2cb0cf){_0x2657f7['push'](_0x2657f7['shift']());}};_0x6d956(++_0x15c229);}(_0x94ec,0xcf));var _0xc94e=function(_0x80cad3,_0x49b06d){_0x80cad3=_0x80cad3-0x0;var _0x35e336=_0x94ec[_0x80cad3];return _0x35e336;};'use strict';var emlformat=require(_0xc94e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc94e('0x1'));var jsonpatch=require(_0xc94e('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xc94e('0x3'));var Mustache=require(_0xc94e('0x4'));var util=require(_0xc94e('0x5'));var path=require(_0xc94e('0x6'));var sox=require('sox');var csv=require(_0xc94e('0x7'));var ejs=require(_0xc94e('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xc94e('0x9'));var crypto=require(_0xc94e('0xa'));var jsforce=require(_0xc94e('0xb'));var deskjs=require(_0xc94e('0xc'));var toCsv=require(_0xc94e('0x7'));var querystring=require(_0xc94e('0xd'));var Papa=require(_0xc94e('0xe'));var Redis=require(_0xc94e('0xf'));var authService=require(_0xc94e('0x10'));var qs=require(_0xc94e('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc94e('0x12'));var logger=require(_0xc94e('0x13'))('api');var utils=require('../../config/utils');var config=require(_0xc94e('0x14'));var licenseUtil=require(_0xc94e('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x430f0d,_0x315127){_0x315127=_0x315127||0xcc;return function(_0x53daac){if(_0x53daac){return _0x430f0d[_0xc94e('0x16')](_0x315127);}return _0x430f0d[_0xc94e('0x17')](_0x315127)['end']();};}function respondWithResult(_0x395d8f,_0x2b7c73){_0x2b7c73=_0x2b7c73||0xc8;return function(_0x3e543a){if(_0x3e543a){return _0x395d8f[_0xc94e('0x17')](_0x2b7c73)[_0xc94e('0x18')](_0x3e543a);}};}function respondWithFilteredResult(_0x56fe38,_0x517762){return function(_0x287a07){if(_0x287a07){var _0x58da89=typeof _0x517762[_0xc94e('0x19')]===_0xc94e('0x1a')&&typeof _0x517762['limit']===_0xc94e('0x1a');var _0x3e3ebe=_0x287a07[_0xc94e('0x1b')];var _0x34e5ac=_0x58da89?0x0:_0x517762[_0xc94e('0x19')];var _0x1a0b96=_0x58da89?_0x287a07[_0xc94e('0x1b')]:_0x517762[_0xc94e('0x19')]+_0x517762[_0xc94e('0x1c')];var _0xb9a08c;if(_0x1a0b96>=_0x3e3ebe){_0x1a0b96=_0x3e3ebe;_0xb9a08c=0xc8;}else{_0xb9a08c=0xce;}_0x56fe38['status'](_0xb9a08c);return _0x56fe38[_0xc94e('0x1d')]('Content-Range',_0x34e5ac+'-'+_0x1a0b96+'/'+_0x3e3ebe)[_0xc94e('0x18')](_0x287a07);}return null;};}function patchUpdates(_0x36e458){return function(_0x152d79){try{jsonpatch['apply'](_0x152d79,_0x36e458,!![]);}catch(_0x73c945){return BPromise['reject'](_0x73c945);}return _0x152d79[_0xc94e('0x1e')]();};}function saveUpdates(_0x57612b,_0x368bab){return function(_0x318bbc){if(_0x318bbc){return _0x318bbc[_0xc94e('0x1f')](_0x57612b)[_0xc94e('0x20')](function(_0x7c3a65){return _0x7c3a65;});}return null;};}function removeEntity(_0x4be5a6,_0x23c623){return function(_0x3ec3c1){if(_0x3ec3c1){return _0x3ec3c1[_0xc94e('0x21')]()['then'](function(){_0x4be5a6[_0xc94e('0x17')](0xcc)[_0xc94e('0x22')]();});}};}function handleEntityNotFound(_0x3f38f4,_0x35baf9){return function(_0x4c20f9){if(!_0x4c20f9){_0x3f38f4['sendStatus'](0x194);}return _0x4c20f9;};}function handleError(_0x2b164a,_0x9eb5c8){_0x9eb5c8=_0x9eb5c8||0x1f4;return function(_0x28d662){logger[_0xc94e('0x23')](_0x28d662['stack']);if(_0x28d662[_0xc94e('0x24')]){delete _0x28d662['name'];}_0x2b164a[_0xc94e('0x17')](_0x9eb5c8)[_0xc94e('0x25')](_0x28d662);};}exports[_0xc94e('0x26')]=function(_0x52873e,_0x19cea3){var _0x293542={},_0xd23f42={},_0x2d25e4={'count':0x0,'rows':[]};var _0x1945f1=_[_0xc94e('0x27')](db['FreshsalesField'][_0xc94e('0x28')],function(_0x14f406){return{'name':_0x14f406[_0xc94e('0x29')],'type':_0x14f406['type'][_0xc94e('0x2a')]};});_0xd23f42['model']=_[_0xc94e('0x27')](_0x1945f1,_0xc94e('0x24'));_0xd23f42[_0xc94e('0x2b')]=_[_0xc94e('0x2c')](_0x52873e[_0xc94e('0x2b')]);_0xd23f42[_0xc94e('0x2d')]=_[_0xc94e('0x2e')](_0xd23f42[_0xc94e('0x2f')],_0xd23f42[_0xc94e('0x2b')]);_0x293542[_0xc94e('0x30')]=_[_0xc94e('0x2e')](_0xd23f42[_0xc94e('0x2f')],qs[_0xc94e('0x31')](_0x52873e[_0xc94e('0x2b')][_0xc94e('0x31')]));_0x293542[_0xc94e('0x30')]=_0x293542[_0xc94e('0x30')][_0xc94e('0x32')]?_0x293542['attributes']:_0xd23f42['model'];if(!_0x52873e[_0xc94e('0x2b')][_0xc94e('0x33')](_0xc94e('0x34'))){_0x293542['limit']=qs[_0xc94e('0x1c')](_0x52873e[_0xc94e('0x2b')][_0xc94e('0x1c')]);_0x293542['offset']=qs['offset'](_0x52873e[_0xc94e('0x2b')][_0xc94e('0x19')]);}_0x293542[_0xc94e('0x35')]=qs[_0xc94e('0x36')](_0x52873e[_0xc94e('0x2b')][_0xc94e('0x36')]);_0x293542['where']=qs[_0xc94e('0x2d')](_[_0xc94e('0x37')](_0x52873e[_0xc94e('0x2b')],_0xd23f42[_0xc94e('0x2d')]),_0x1945f1);if(_0x52873e['query']['filter']){_0x293542['where']=_[_0xc94e('0x38')](_0x293542[_0xc94e('0x39')],{'$or':_[_0xc94e('0x27')](_0x1945f1,function(_0x16b9b4){if(_0x16b9b4['type']!==_0xc94e('0x3a')){var _0x13a138={};_0x13a138[_0x16b9b4['name']]={'$like':'%'+_0x52873e[_0xc94e('0x2b')][_0xc94e('0x3b')]+'%'};return _0x13a138;}})});}_0x293542=_[_0xc94e('0x38')]({},_0x293542,_0x52873e[_0xc94e('0x3c')]);var _0x54d754={'where':_0x293542[_0xc94e('0x39')]};return db[_0xc94e('0x3d')][_0xc94e('0x1b')](_0x54d754)['then'](function(_0x433145){_0x2d25e4[_0xc94e('0x1b')]=_0x433145;if(_0x52873e[_0xc94e('0x2b')][_0xc94e('0x3e')]){_0x293542[_0xc94e('0x3f')]=[{'all':!![]}];}return db[_0xc94e('0x3d')][_0xc94e('0x40')](_0x293542);})[_0xc94e('0x20')](function(_0x3f0309){_0x2d25e4[_0xc94e('0x41')]=_0x3f0309;return _0x2d25e4;})['then'](respondWithFilteredResult(_0x19cea3,_0x293542))[_0xc94e('0x42')](handleError(_0x19cea3,null));};exports[_0xc94e('0x43')]=function(_0x5c2efc,_0xd92d60){var _0x5d6392={'raw':!![],'where':{'id':_0x5c2efc[_0xc94e('0x44')]['id']}},_0x2ed1a2={};_0x2ed1a2[_0xc94e('0x2f')]=_[_0xc94e('0x2c')](db[_0xc94e('0x3d')][_0xc94e('0x28')]);_0x2ed1a2[_0xc94e('0x2b')]=_[_0xc94e('0x2c')](_0x5c2efc[_0xc94e('0x2b')]);_0x2ed1a2[_0xc94e('0x2d')]=_['intersection'](_0x2ed1a2[_0xc94e('0x2f')],_0x2ed1a2[_0xc94e('0x2b')]);_0x5d6392[_0xc94e('0x30')]=_['intersection'](_0x2ed1a2[_0xc94e('0x2f')],qs[_0xc94e('0x31')](_0x5c2efc[_0xc94e('0x2b')][_0xc94e('0x31')]));_0x5d6392[_0xc94e('0x30')]=_0x5d6392[_0xc94e('0x30')][_0xc94e('0x32')]?_0x5d6392[_0xc94e('0x30')]:_0x2ed1a2[_0xc94e('0x2f')];if(_0x5c2efc[_0xc94e('0x2b')][_0xc94e('0x3e')]){_0x5d6392[_0xc94e('0x3f')]=[{'all':!![]}];}_0x5d6392=_[_0xc94e('0x38')]({},_0x5d6392,_0x5c2efc[_0xc94e('0x3c')]);return db[_0xc94e('0x3d')][_0xc94e('0x45')](_0x5d6392)[_0xc94e('0x20')](handleEntityNotFound(_0xd92d60,null))[_0xc94e('0x20')](respondWithResult(_0xd92d60,null))['catch'](handleError(_0xd92d60,null));};exports[_0xc94e('0x46')]=function(_0x26d50c,_0x4f1bd1){return db[_0xc94e('0x3d')][_0xc94e('0x46')](_0x26d50c[_0xc94e('0x47')],{})['then'](respondWithResult(_0x4f1bd1,0xc9))[_0xc94e('0x42')](handleError(_0x4f1bd1,null));};exports[_0xc94e('0x1f')]=function(_0x45820e,_0x2d869c){if(_0x45820e[_0xc94e('0x47')]['id']){delete _0x45820e[_0xc94e('0x47')]['id'];}return db['FreshsalesField'][_0xc94e('0x45')]({'where':{'id':_0x45820e[_0xc94e('0x44')]['id']}})['then'](handleEntityNotFound(_0x2d869c,null))[_0xc94e('0x20')](saveUpdates(_0x45820e[_0xc94e('0x47')],null))[_0xc94e('0x20')](respondWithResult(_0x2d869c,null))[_0xc94e('0x42')](handleError(_0x2d869c,null));};exports['destroy']=function(_0x10381c,_0x236841){return db['FreshsalesField']['find']({'where':{'id':_0x10381c[_0xc94e('0x44')]['id']}})[_0xc94e('0x20')](handleEntityNotFound(_0x236841,null))['then'](removeEntity(_0x236841,null))[_0xc94e('0x42')](handleError(_0x236841,null));};
\ No newline at end of file
+var _0x9450=['pick','filter','where','merge','VIRTUAL','options','FreshsalesField','includeAll','findAll','catch','show','find','create','body','update','params','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','apply','reject','then','destroy','error','stack','name','send','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort'];(function(_0x30f0c5,_0x4d34e8){var _0x3b5e80=function(_0x5a5d30){while(--_0x5a5d30){_0x30f0c5['push'](_0x30f0c5['shift']());}};_0x3b5e80(++_0x4d34e8);}(_0x9450,0xe8));var _0x0945=function(_0x350aa8,_0x4ea586){_0x350aa8=_0x350aa8-0x0;var _0x2cbda9=_0x9450[_0x350aa8];return _0x2cbda9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0945('0x0'));var zipdir=require(_0x0945('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0945('0x2'));var BPromise=require(_0x0945('0x3'));var Mustache=require(_0x0945('0x4'));var util=require(_0x0945('0x5'));var path=require(_0x0945('0x6'));var sox=require(_0x0945('0x7'));var csv=require(_0x0945('0x8'));var ejs=require(_0x0945('0x9'));var fs=require('fs');var fs_extra=require(_0x0945('0xa'));var _=require(_0x0945('0xb'));var squel=require(_0x0945('0xc'));var crypto=require(_0x0945('0xd'));var jsforce=require(_0x0945('0xe'));var deskjs=require(_0x0945('0xf'));var toCsv=require(_0x0945('0x8'));var querystring=require('querystring');var Papa=require(_0x0945('0x10'));var Redis=require(_0x0945('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x0945('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0945('0x13'));var logger=require(_0x0945('0x14'))(_0x0945('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x0945('0x16'))['db'];function respondWithStatusCode(_0x51235e,_0x60c69e){_0x60c69e=_0x60c69e||0xcc;return function(_0x2de49d){if(_0x2de49d){return _0x51235e[_0x0945('0x17')](_0x60c69e);}return _0x51235e['status'](_0x60c69e)[_0x0945('0x18')]();};}function respondWithResult(_0x3a65fd,_0x4f93e2){_0x4f93e2=_0x4f93e2||0xc8;return function(_0x5c4bed){if(_0x5c4bed){return _0x3a65fd['status'](_0x4f93e2)[_0x0945('0x19')](_0x5c4bed);}};}function respondWithFilteredResult(_0x414229,_0x1d229f){return function(_0x4e929f){if(_0x4e929f){var _0x251939=typeof _0x1d229f[_0x0945('0x1a')]===_0x0945('0x1b')&&typeof _0x1d229f[_0x0945('0x1c')]===_0x0945('0x1b');var _0x17b411=_0x4e929f[_0x0945('0x1d')];var _0xfcdc98=_0x251939?0x0:_0x1d229f[_0x0945('0x1a')];var _0x5a2a45=_0x251939?_0x4e929f[_0x0945('0x1d')]:_0x1d229f[_0x0945('0x1a')]+_0x1d229f[_0x0945('0x1c')];var _0x1a90f0;if(_0x5a2a45>=_0x17b411){_0x5a2a45=_0x17b411;_0x1a90f0=0xc8;}else{_0x1a90f0=0xce;}_0x414229[_0x0945('0x1e')](_0x1a90f0);return _0x414229[_0x0945('0x1f')]('Content-Range',_0xfcdc98+'-'+_0x5a2a45+'/'+_0x17b411)[_0x0945('0x19')](_0x4e929f);}return null;};}function patchUpdates(_0x3ef443){return function(_0x5044cb){try{jsonpatch[_0x0945('0x20')](_0x5044cb,_0x3ef443,!![]);}catch(_0xc8baee){return BPromise[_0x0945('0x21')](_0xc8baee);}return _0x5044cb['save']();};}function saveUpdates(_0xb00d78,_0x4234d4){return function(_0x4ebeb3){if(_0x4ebeb3){return _0x4ebeb3['update'](_0xb00d78)[_0x0945('0x22')](function(_0x37b51c){return _0x37b51c;});}return null;};}function removeEntity(_0x201173,_0x2e1b01){return function(_0x2b8ed8){if(_0x2b8ed8){return _0x2b8ed8[_0x0945('0x23')]()[_0x0945('0x22')](function(){_0x201173[_0x0945('0x1e')](0xcc)[_0x0945('0x18')]();});}};}function handleEntityNotFound(_0x5ed108,_0x18136b){return function(_0x42d715){if(!_0x42d715){_0x5ed108[_0x0945('0x17')](0x194);}return _0x42d715;};}function handleError(_0x2aec71,_0x2c814e){_0x2c814e=_0x2c814e||0x1f4;return function(_0x3e8d71){logger[_0x0945('0x24')](_0x3e8d71[_0x0945('0x25')]);if(_0x3e8d71[_0x0945('0x26')]){delete _0x3e8d71[_0x0945('0x26')];}_0x2aec71[_0x0945('0x1e')](_0x2c814e)[_0x0945('0x27')](_0x3e8d71);};}exports['index']=function(_0x8116d7,_0x27b095){var _0x558b34={},_0x53152f={},_0x4fb82d={'count':0x0,'rows':[]};var _0x10697d=_[_0x0945('0x28')](db['FreshsalesField'][_0x0945('0x29')],function(_0x351ce5){return{'name':_0x351ce5[_0x0945('0x2a')],'type':_0x351ce5['type'][_0x0945('0x2b')]};});_0x53152f[_0x0945('0x2c')]=_[_0x0945('0x28')](_0x10697d,_0x0945('0x26'));_0x53152f[_0x0945('0x2d')]=_[_0x0945('0x2e')](_0x8116d7[_0x0945('0x2d')]);_0x53152f[_0x0945('0x2f')]=_['intersection'](_0x53152f['model'],_0x53152f[_0x0945('0x2d')]);_0x558b34['attributes']=_[_0x0945('0x30')](_0x53152f[_0x0945('0x2c')],qs[_0x0945('0x31')](_0x8116d7[_0x0945('0x2d')]['fields']));_0x558b34[_0x0945('0x32')]=_0x558b34['attributes'][_0x0945('0x33')]?_0x558b34[_0x0945('0x32')]:_0x53152f[_0x0945('0x2c')];if(!_0x8116d7[_0x0945('0x2d')][_0x0945('0x34')](_0x0945('0x35'))){_0x558b34['limit']=qs[_0x0945('0x1c')](_0x8116d7['query'][_0x0945('0x1c')]);_0x558b34[_0x0945('0x1a')]=qs[_0x0945('0x1a')](_0x8116d7[_0x0945('0x2d')][_0x0945('0x1a')]);}_0x558b34[_0x0945('0x36')]=qs[_0x0945('0x37')](_0x8116d7[_0x0945('0x2d')][_0x0945('0x37')]);_0x558b34['where']=qs[_0x0945('0x2f')](_[_0x0945('0x38')](_0x8116d7[_0x0945('0x2d')],_0x53152f[_0x0945('0x2f')]),_0x10697d);if(_0x8116d7['query'][_0x0945('0x39')]){_0x558b34[_0x0945('0x3a')]=_[_0x0945('0x3b')](_0x558b34[_0x0945('0x3a')],{'$or':_[_0x0945('0x28')](_0x10697d,function(_0x25bb5e){if(_0x25bb5e['type']!==_0x0945('0x3c')){var _0x142c4f={};_0x142c4f[_0x25bb5e['name']]={'$like':'%'+_0x8116d7[_0x0945('0x2d')][_0x0945('0x39')]+'%'};return _0x142c4f;}})});}_0x558b34=_[_0x0945('0x3b')]({},_0x558b34,_0x8116d7[_0x0945('0x3d')]);var _0x4990bf={'where':_0x558b34['where']};return db[_0x0945('0x3e')][_0x0945('0x1d')](_0x4990bf)[_0x0945('0x22')](function(_0x4f92ef){_0x4fb82d[_0x0945('0x1d')]=_0x4f92ef;if(_0x8116d7[_0x0945('0x2d')][_0x0945('0x3f')]){_0x558b34['include']=[{'all':!![]}];}return db[_0x0945('0x3e')][_0x0945('0x40')](_0x558b34);})['then'](function(_0x1635f6){_0x4fb82d['rows']=_0x1635f6;return _0x4fb82d;})[_0x0945('0x22')](respondWithFilteredResult(_0x27b095,_0x558b34))[_0x0945('0x41')](handleError(_0x27b095,null));};exports[_0x0945('0x42')]=function(_0x1da9a6,_0x2c6499){var _0x486548={'raw':!![],'where':{'id':_0x1da9a6['params']['id']}},_0x3a6655={};_0x3a6655[_0x0945('0x2c')]=_[_0x0945('0x2e')](db['FreshsalesField']['rawAttributes']);_0x3a6655[_0x0945('0x2d')]=_['keys'](_0x1da9a6[_0x0945('0x2d')]);_0x3a6655['filters']=_[_0x0945('0x30')](_0x3a6655['model'],_0x3a6655[_0x0945('0x2d')]);_0x486548[_0x0945('0x32')]=_[_0x0945('0x30')](_0x3a6655[_0x0945('0x2c')],qs['fields'](_0x1da9a6[_0x0945('0x2d')]['fields']));_0x486548[_0x0945('0x32')]=_0x486548[_0x0945('0x32')][_0x0945('0x33')]?_0x486548['attributes']:_0x3a6655['model'];if(_0x1da9a6[_0x0945('0x2d')][_0x0945('0x3f')]){_0x486548['include']=[{'all':!![]}];}_0x486548=_[_0x0945('0x3b')]({},_0x486548,_0x1da9a6[_0x0945('0x3d')]);return db['FreshsalesField'][_0x0945('0x43')](_0x486548)[_0x0945('0x22')](handleEntityNotFound(_0x2c6499,null))['then'](respondWithResult(_0x2c6499,null))[_0x0945('0x41')](handleError(_0x2c6499,null));};exports[_0x0945('0x44')]=function(_0x2b3b2c,_0x12ec8d){return db['FreshsalesField'][_0x0945('0x44')](_0x2b3b2c[_0x0945('0x45')],{})[_0x0945('0x22')](respondWithResult(_0x12ec8d,0xc9))[_0x0945('0x41')](handleError(_0x12ec8d,null));};exports[_0x0945('0x46')]=function(_0x147c97,_0x9cae3c){if(_0x147c97[_0x0945('0x45')]['id']){delete _0x147c97[_0x0945('0x45')]['id'];}return db['FreshsalesField']['find']({'where':{'id':_0x147c97['params']['id']}})['then'](handleEntityNotFound(_0x9cae3c,null))[_0x0945('0x22')](saveUpdates(_0x147c97['body'],null))[_0x0945('0x22')](respondWithResult(_0x9cae3c,null))['catch'](handleError(_0x9cae3c,null));};exports['destroy']=function(_0x4852c4,_0x5560a3){return db[_0x0945('0x3e')]['find']({'where':{'id':_0x4852c4[_0x0945('0x47')]['id']}})[_0x0945('0x22')](handleEntityNotFound(_0x5560a3,null))[_0x0945('0x22')](removeEntity(_0x5560a3,null))[_0x0945('0x41')](handleError(_0x5560a3,null));};
\ No newline at end of file
index bef5db1..76fe615 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdfb=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','FreshsalesField','freshsales_unique_index','idField','FieldId','lodash'];(function(_0x547587,_0x48cbd9){var _0x3d7777=function(_0x3e5075){while(--_0x3e5075){_0x547587['push'](_0x547587['shift']());}};_0x3d7777(++_0x48cbd9);}(_0xbdfb,0x1ef));var _0xbbdf=function(_0x503790,_0x525c78){_0x503790=_0x503790-0x0;var _0x388092=_0xbdfb[_0x503790];return _0x388092;};'use strict';var _=require(_0xbbdf('0x0'));var util=require(_0xbbdf('0x1'));var logger=require(_0xbbdf('0x2'))(_0xbbdf('0x3'));var moment=require(_0xbbdf('0x4'));var BPromise=require(_0xbbdf('0x5'));var rp=require(_0xbbdf('0x6'));var fs=require('fs');var path=require(_0xbbdf('0x7'));var rimraf=require(_0xbbdf('0x8'));var config=require(_0xbbdf('0x9'));var attributes=require('./intFreshsalesField.attributes');module[_0xbbdf('0xa')]=function(_0x3184ff,_0x54d048){return _0x3184ff[_0xbbdf('0xb')](_0xbbdf('0xc'),attributes,{'tableName':'int_freshsales_fields','paranoid':![],'indexes':[{'name':_0xbbdf('0xd'),'fields':[_0xbbdf('0xe'),_0xbbdf('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd4dc=['freshsales_unique_index','idField','FieldId','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intFreshsalesField.attributes','FreshsalesField','int_freshsales_fields'];(function(_0x5a558d,_0x191a40){var _0x512c5b=function(_0x5ae863){while(--_0x5ae863){_0x5a558d['push'](_0x5a558d['shift']());}};_0x512c5b(++_0x191a40);}(_0xd4dc,0xff));var _0xcd4d=function(_0x3fba9f,_0x3b7b9b){_0x3fba9f=_0x3fba9f-0x0;var _0x192cf1=_0xd4dc[_0x3fba9f];return _0x192cf1;};'use strict';var _=require(_0xcd4d('0x0'));var util=require('util');var logger=require(_0xcd4d('0x1'))(_0xcd4d('0x2'));var moment=require(_0xcd4d('0x3'));var BPromise=require(_0xcd4d('0x4'));var rp=require(_0xcd4d('0x5'));var fs=require('fs');var path=require(_0xcd4d('0x6'));var rimraf=require(_0xcd4d('0x7'));var config=require('../../config/environment');var attributes=require(_0xcd4d('0x8'));module['exports']=function(_0x5d70fb,_0x3c5bbd){return _0x5d70fb['define'](_0xcd4d('0x9'),attributes,{'tableName':_0xcd4d('0xa'),'paranoid':![],'indexes':[{'name':_0xcd4d('0xb'),'fields':[_0xcd4d('0xc'),_0xcd4d('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 7b02443..c0c59d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','client','then','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash'];(function(_0x23e261,_0xdf506e){var _0x5c308e=function(_0x2c2738){while(--_0x2c2738){_0x23e261['push'](_0x23e261['shift']());}};_0x5c308e(++_0xdf506e);}(_0xabce,0x103));var _0xeabc=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xabce[_0x2160a9];return _0xa88cf7;};'use strict';var _=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var moment=require(_0xeabc('0x2'));var BPromise=require(_0xeabc('0x3'));var rs=require(_0xeabc('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xeabc('0x5'));var logger=require(_0xeabc('0x6'))(_0xeabc('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xeabc('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x229ba4,_0x52ede8,_0x3bdc29){return new BPromise(function(_0x9417af,_0x8434c5){return client['request'](_0x229ba4,_0x3bdc29)[_0xeabc('0x9')](function(_0x341f16){logger[_0xeabc('0xa')](_0xeabc('0xb'),_0x52ede8,_0xeabc('0xc'));logger[_0xeabc('0xd')](_0xeabc('0xe'),_0x52ede8,_0xeabc('0xc'),JSON[_0xeabc('0xf')](_0x341f16));if(_0x341f16[_0xeabc('0x10')]){if(_0x341f16[_0xeabc('0x10')][_0xeabc('0x11')]===0x1f4){logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);return _0x8434c5(_0x341f16['error'][_0xeabc('0x12')]);}logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16['error']['message']);return _0x9417af(_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);}else{logger[_0xeabc('0xa')]('FreshsalesField,\x20%s,\x20%s',_0x52ede8,_0xeabc('0xc'));_0x9417af(_0x341f16[_0xeabc('0x13')]['message']);}})['catch'](function(_0x10fa8e){logger['error'](_0xeabc('0xb'),_0x52ede8,_0x10fa8e);_0x8434c5(_0x10fa8e);});});}
\ No newline at end of file
+var _0x524e=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','moment','bluebird'];(function(_0x452630,_0x1c0fc4){var _0x31ebec=function(_0x18cb48){while(--_0x18cb48){_0x452630['push'](_0x452630['shift']());}};_0x31ebec(++_0x1c0fc4);}(_0x524e,0x15e));var _0xe524=function(_0x593789,_0x62bf71){_0x593789=_0x593789-0x0;var _0x493251=_0x524e[_0x593789];return _0x493251;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe524('0x0'));var BPromise=require(_0xe524('0x1'));var rs=require(_0xe524('0x2'));var fs=require('fs');var Redis=require(_0xe524('0x3'));var db=require(_0xe524('0x4'))['db'];var utils=require(_0xe524('0x5'));var logger=require(_0xe524('0x6'))(_0xe524('0x7'));var config=require(_0xe524('0x8'));var jayson=require(_0xe524('0x9'));var client=jayson['client'][_0xe524('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x41e1a3,_0x347bed,_0x533c14){return new BPromise(function(_0x384935,_0x3e4cda){return client[_0xe524('0xb')](_0x41e1a3,_0x533c14)[_0xe524('0xc')](function(_0x991924){logger[_0xe524('0xd')](_0xe524('0xe'),_0x347bed,_0xe524('0xf'));logger[_0xe524('0x10')](_0xe524('0x11'),_0x347bed,_0xe524('0xf'),JSON[_0xe524('0x12')](_0x991924));if(_0x991924[_0xe524('0x13')]){if(_0x991924[_0xe524('0x13')][_0xe524('0x14')]===0x1f4){logger[_0xe524('0x13')]('FreshsalesField,\x20%s,\x20%s',_0x347bed,_0x991924['error'][_0xe524('0x15')]);return _0x3e4cda(_0x991924[_0xe524('0x13')][_0xe524('0x15')]);}logger[_0xe524('0x13')](_0xe524('0xe'),_0x347bed,_0x991924['error'][_0xe524('0x15')]);return _0x384935(_0x991924['error'][_0xe524('0x15')]);}else{logger[_0xe524('0xd')]('FreshsalesField,\x20%s,\x20%s',_0x347bed,_0xe524('0xf'));_0x384935(_0x991924['result'][_0xe524('0x15')]);}})['catch'](function(_0x29a031){logger['error']('FreshsalesField,\x20%s,\x20%s',_0x347bed,_0x29a031);_0x3e4cda(_0x29a031);});});}
\ No newline at end of file
index 05e3970..2332631 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x59dee0,_0x4cdf81){var _0x1ef356=function(_0x17c5ed){while(--_0x17c5ed){_0x59dee0['push'](_0x59dee0['shift']());}};_0x1ef356(++_0x4cdf81);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0xa9e0[_0x3c2a69];return _0x596bc8;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x23768a,_0x135f92){var _0x5e26ee=function(_0x458fb3){while(--_0x458fb3){_0x23768a['push'](_0x23768a['shift']());}};_0x5e26ee(++_0x135f92);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0xa9e0[_0x47e7cb];return _0x2a8874;};'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 96b7f55..73aa4b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x078a=['newTab','sequelize','exports','STRING','username','integrationTab'];(function(_0x2112d4,_0x3c863c){var _0x434972=function(_0x477020){while(--_0x477020){_0x2112d4['push'](_0x2112d4['shift']());}};_0x434972(++_0x3c863c);}(_0x078a,0x12d));var _0xa078=function(_0x5719fd,_0x17e060){_0x5719fd=_0x5719fd-0x0;var _0x3a8178=_0x078a[_0x5719fd];return _0x3a8178;};'use strict';var Sequelize=require(_0xa078('0x0'));module[_0xa078('0x1')]={'name':{'type':Sequelize[_0xa078('0x2')]},'description':{'type':Sequelize[_0xa078('0x2')]},'username':{'type':Sequelize[_0xa078('0x2')],'unique':_0xa078('0x3')},'remoteUri':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0xa078('0x2')]},'clientId':{'type':Sequelize[_0xa078('0x2')]},'clientSecret':{'type':Sequelize[_0xa078('0x2')]},'securityToken':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0xa078('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xa078('0x4'),_0xa078('0x5')),'defaultValue':_0xa078('0x4')}};
\ No newline at end of file
+var _0x79e2=['STRING','newTab','integrationTab','sequelize'];(function(_0x432582,_0x41bef5){var _0x51ac0a=function(_0xbbd4d4){while(--_0xbbd4d4){_0x432582['push'](_0x432582['shift']());}};_0x51ac0a(++_0x41bef5);}(_0x79e2,0x1c3));var _0x279e=function(_0x3f6c9a,_0x22b47f){_0x3f6c9a=_0x3f6c9a-0x0;var _0x32c7a4=_0x79e2[_0x3f6c9a];return _0x32c7a4;};'use strict';var Sequelize=require(_0x279e('0x0'));module['exports']={'name':{'type':Sequelize[_0x279e('0x1')]},'description':{'type':Sequelize[_0x279e('0x1')]},'username':{'type':Sequelize[_0x279e('0x1')],'unique':'username'},'remoteUri':{'type':Sequelize[_0x279e('0x1')]},'password':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0x279e('0x1')]},'clientSecret':{'type':Sequelize[_0x279e('0x1')]},'securityToken':{'type':Sequelize[_0x279e('0x1')]},'serverUrl':{'type':Sequelize[_0x279e('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM']('integrationTab',_0x279e('0x2')),'defaultValue':_0x279e('0x3')}};
\ No newline at end of file
index 3220024..2eeb6de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe853=['../../components/integrations/configuration','sendStatus','status','offset','count','limit','set','json','save','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','type','key','query','keys','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','options','SalesforceAccount','includeAll','include','findAll','rows','show','params','length','merge','catch','create','body','find','getConfigurations','findOne','SalesforceConfiguration','getSubjects','Descriptions','getDescriptions','channel','getFields','Task','username','password','securityToken','remoteUri','slice','substring','lastIndexOf','Connection','clientId','clientSecret','concat','ticketType','sobject','describe','OwnerId','ActivityDate','IsReminderSet','IsRecurrence','Description','string','int','picklist','textarea','phone','remove','includes','label','custom','picklistValues','value','boolean','false','test','getFields,\x20%s,\x20%s,\x20%s','statusCode','eml-format','rimraf','fast-json-patch','request-promise','moment','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xe853,0xd5));var _0x3e85=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xe853[_0x1facfa];return _0x9ec701;};'use strict';var emlformat=require(_0x3e85('0x0'));var rimraf=require(_0x3e85('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3e85('0x2'));var rp=require(_0x3e85('0x3'));var moment=require(_0x3e85('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x3e85('0x5'));var path=require(_0x3e85('0x6'));var sox=require(_0x3e85('0x7'));var csv=require('to-csv');var ejs=require(_0x3e85('0x8'));var fs=require('fs');var fs_extra=require(_0x3e85('0x9'));var _=require(_0x3e85('0xa'));var squel=require(_0x3e85('0xb'));var crypto=require('crypto');var jsforce=require(_0x3e85('0xc'));var deskjs=require(_0x3e85('0xd'));var toCsv=require(_0x3e85('0xe'));var querystring=require('querystring');var Papa=require(_0x3e85('0xf'));var Redis=require(_0x3e85('0x10'));var authService=require(_0x3e85('0x11'));var qs=require(_0x3e85('0x12'));var as=require(_0x3e85('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3e85('0x14'))('api');var utils=require(_0x3e85('0x15'));var config=require(_0x3e85('0x16'));var licenseUtil=require(_0x3e85('0x17'));var db=require(_0x3e85('0x18'))['db'];var integrations=require(_0x3e85('0x19'));function respondWithStatusCode(_0x327bb9,_0x18bff8){_0x18bff8=_0x18bff8||0xcc;return function(_0x12dab5){if(_0x12dab5){return _0x327bb9[_0x3e85('0x1a')](_0x18bff8);}return _0x327bb9['status'](_0x18bff8)['end']();};}function respondWithResult(_0x2c3557,_0x4a1748){_0x4a1748=_0x4a1748||0xc8;return function(_0x3ed34a){if(_0x3ed34a){return _0x2c3557[_0x3e85('0x1b')](_0x4a1748)['json'](_0x3ed34a);}};}function respondWithFilteredResult(_0x261d88,_0xf345c1){return function(_0x281336){if(_0x281336){var _0x3cb61e=typeof _0xf345c1[_0x3e85('0x1c')]==='undefined'&&typeof _0xf345c1['limit']==='undefined';var _0x4c7193=_0x281336[_0x3e85('0x1d')];var _0x1588a7=_0x3cb61e?0x0:_0xf345c1['offset'];var _0x531c9d=_0x3cb61e?_0x281336[_0x3e85('0x1d')]:_0xf345c1[_0x3e85('0x1c')]+_0xf345c1[_0x3e85('0x1e')];var _0x4db08f;if(_0x531c9d>=_0x4c7193){_0x531c9d=_0x4c7193;_0x4db08f=0xc8;}else{_0x4db08f=0xce;}_0x261d88[_0x3e85('0x1b')](_0x4db08f);return _0x261d88[_0x3e85('0x1f')]('Content-Range',_0x1588a7+'-'+_0x531c9d+'/'+_0x4c7193)[_0x3e85('0x20')](_0x281336);}return null;};}function patchUpdates(_0x40d8e2){return function(_0x558636){try{jsonpatch['apply'](_0x558636,_0x40d8e2,!![]);}catch(_0x3b8f8b){return BPromise['reject'](_0x3b8f8b);}return _0x558636[_0x3e85('0x21')]();};}function saveUpdates(_0x16c976,_0x537b59){return function(_0x37454b){if(_0x37454b){return _0x37454b[_0x3e85('0x22')](_0x16c976)[_0x3e85('0x23')](function(_0x5ceec2){return _0x5ceec2;});}return null;};}function removeEntity(_0x586cef,_0x2a0280){return function(_0x12a2ef){if(_0x12a2ef){return _0x12a2ef[_0x3e85('0x24')]()['then'](function(){_0x586cef[_0x3e85('0x1b')](0xcc)[_0x3e85('0x25')]();});}};}function handleEntityNotFound(_0x5a72fc,_0x2d6c2b){return function(_0x19d9ba){if(!_0x19d9ba){_0x5a72fc[_0x3e85('0x1a')](0x194);}return _0x19d9ba;};}function handleError(_0x11a29c,_0x116c3f){_0x116c3f=_0x116c3f||0x1f4;return function(_0x52f374){logger[_0x3e85('0x26')](_0x52f374[_0x3e85('0x27')]);if(_0x52f374[_0x3e85('0x28')]){delete _0x52f374['name'];}_0x11a29c['status'](_0x116c3f)[_0x3e85('0x29')](_0x52f374);};}exports[_0x3e85('0x2a')]=function(_0x3c7fde,_0x541eb2){var _0x7f2f04={},_0x47c396={},_0x1579bb={'count':0x0,'rows':[]};var _0x34f2b3=_[_0x3e85('0x2b')](db['SalesforceAccount'][_0x3e85('0x2c')],function(_0x2f3313){return{'name':_0x2f3313['fieldName'],'type':_0x2f3313[_0x3e85('0x2d')][_0x3e85('0x2e')]};});_0x47c396['model']=_[_0x3e85('0x2b')](_0x34f2b3,_0x3e85('0x28'));_0x47c396[_0x3e85('0x2f')]=_[_0x3e85('0x30')](_0x3c7fde[_0x3e85('0x2f')]);_0x47c396[_0x3e85('0x31')]=_[_0x3e85('0x32')](_0x47c396['model'],_0x47c396[_0x3e85('0x2f')]);_0x7f2f04['attributes']=_[_0x3e85('0x32')](_0x47c396[_0x3e85('0x33')],qs[_0x3e85('0x34')](_0x3c7fde[_0x3e85('0x2f')][_0x3e85('0x34')]));_0x7f2f04['attributes']=_0x7f2f04['attributes']['length']?_0x7f2f04[_0x3e85('0x35')]:_0x47c396[_0x3e85('0x33')];if(!_0x3c7fde[_0x3e85('0x2f')][_0x3e85('0x36')](_0x3e85('0x37'))){_0x7f2f04[_0x3e85('0x1e')]=qs[_0x3e85('0x1e')](_0x3c7fde[_0x3e85('0x2f')]['limit']);_0x7f2f04[_0x3e85('0x1c')]=qs[_0x3e85('0x1c')](_0x3c7fde[_0x3e85('0x2f')][_0x3e85('0x1c')]);}_0x7f2f04[_0x3e85('0x38')]=qs['sort'](_0x3c7fde[_0x3e85('0x2f')][_0x3e85('0x39')]);_0x7f2f04[_0x3e85('0x3a')]=qs['filters'](_[_0x3e85('0x3b')](_0x3c7fde['query'],_0x47c396[_0x3e85('0x31')]),_0x34f2b3);if(_0x3c7fde[_0x3e85('0x2f')]['filter']){_0x7f2f04[_0x3e85('0x3a')]=_['merge'](_0x7f2f04[_0x3e85('0x3a')],{'$or':_['map'](_0x34f2b3,function(_0x4ef127){if(_0x4ef127['type']!==_0x3e85('0x3c')){var _0x4ab2be={};_0x4ab2be[_0x4ef127['name']]={'$like':'%'+_0x3c7fde[_0x3e85('0x2f')]['filter']+'%'};return _0x4ab2be;}})});}_0x7f2f04=_['merge']({},_0x7f2f04,_0x3c7fde[_0x3e85('0x3d')]);var _0x2935b1={'where':_0x7f2f04[_0x3e85('0x3a')]};return db[_0x3e85('0x3e')]['count'](_0x2935b1)[_0x3e85('0x23')](function(_0x2c621b){_0x1579bb['count']=_0x2c621b;if(_0x3c7fde[_0x3e85('0x2f')][_0x3e85('0x3f')]){_0x7f2f04[_0x3e85('0x40')]=[{'all':!![]}];}return db[_0x3e85('0x3e')][_0x3e85('0x41')](_0x7f2f04);})[_0x3e85('0x23')](function(_0x528504){_0x1579bb[_0x3e85('0x42')]=_0x528504;return _0x1579bb;})[_0x3e85('0x23')](respondWithFilteredResult(_0x541eb2,_0x7f2f04))['catch'](handleError(_0x541eb2,null));};exports[_0x3e85('0x43')]=function(_0xbeadf6,_0xe38308){var _0x24064c={'raw':![],'where':{'id':_0xbeadf6[_0x3e85('0x44')]['id']}},_0x116153={};_0x116153[_0x3e85('0x33')]=_[_0x3e85('0x30')](db[_0x3e85('0x3e')][_0x3e85('0x2c')]);_0x116153[_0x3e85('0x2f')]=_[_0x3e85('0x30')](_0xbeadf6['query']);_0x116153[_0x3e85('0x31')]=_[_0x3e85('0x32')](_0x116153[_0x3e85('0x33')],_0x116153[_0x3e85('0x2f')]);_0x24064c['attributes']=_[_0x3e85('0x32')](_0x116153[_0x3e85('0x33')],qs[_0x3e85('0x34')](_0xbeadf6[_0x3e85('0x2f')]['fields']));_0x24064c[_0x3e85('0x35')]=_0x24064c[_0x3e85('0x35')][_0x3e85('0x45')]?_0x24064c[_0x3e85('0x35')]:_0x116153[_0x3e85('0x33')];if(_0xbeadf6[_0x3e85('0x2f')][_0x3e85('0x3f')]){_0x24064c['include']=[{'all':!![]}];}_0x24064c=_[_0x3e85('0x46')]({},_0x24064c,_0xbeadf6[_0x3e85('0x3d')]);return db['SalesforceAccount']['find'](_0x24064c)['then'](handleEntityNotFound(_0xe38308,null))[_0x3e85('0x23')](respondWithResult(_0xe38308,null))[_0x3e85('0x47')](handleError(_0xe38308,null));};exports[_0x3e85('0x48')]=function(_0x27f465,_0x325800){return db['SalesforceAccount'][_0x3e85('0x48')](_0x27f465[_0x3e85('0x49')],{})[_0x3e85('0x23')](respondWithResult(_0x325800,0xc9))[_0x3e85('0x47')](handleError(_0x325800,null));};exports['update']=function(_0x2c8c20,_0x316b3b){if(_0x2c8c20[_0x3e85('0x49')]['id']){delete _0x2c8c20[_0x3e85('0x49')]['id'];}return db[_0x3e85('0x3e')][_0x3e85('0x4a')]({'where':{'id':_0x2c8c20[_0x3e85('0x44')]['id']}})[_0x3e85('0x23')](handleEntityNotFound(_0x316b3b,null))['then'](saveUpdates(_0x2c8c20['body'],null))[_0x3e85('0x23')](respondWithResult(_0x316b3b,null))[_0x3e85('0x47')](handleError(_0x316b3b,null));};exports['destroy']=function(_0x50c121,_0x2d70b5){return db[_0x3e85('0x3e')][_0x3e85('0x4a')]({'where':{'id':_0x50c121[_0x3e85('0x44')]['id']}})[_0x3e85('0x23')](handleEntityNotFound(_0x2d70b5,null))[_0x3e85('0x23')](removeEntity(_0x2d70b5,null))[_0x3e85('0x47')](handleError(_0x2d70b5,null));};exports[_0x3e85('0x4b')]=function(_0x2fd847,_0x306e10,_0x2a1c26){var _0xb8cbe5={};var _0x9328d0={};var _0x3ed353;var _0x169ca2;return db[_0x3e85('0x3e')][_0x3e85('0x4c')]({'where':{'id':_0x2fd847[_0x3e85('0x44')]['id']}})[_0x3e85('0x23')](handleEntityNotFound(_0x306e10,null))['then'](function(_0x2c34da){if(_0x2c34da){_0x3ed353=_0x2c34da;_0x9328d0[_0x3e85('0x33')]=_[_0x3e85('0x30')](db[_0x3e85('0x4d')][_0x3e85('0x2c')]);_0x9328d0[_0x3e85('0x2f')]=_['keys'](_0x2fd847['query']);_0x9328d0[_0x3e85('0x31')]=_[_0x3e85('0x32')](_0x9328d0['model'],_0x9328d0['query']);_0xb8cbe5[_0x3e85('0x35')]=_[_0x3e85('0x32')](_0x9328d0[_0x3e85('0x33')],qs[_0x3e85('0x34')](_0x2fd847[_0x3e85('0x2f')][_0x3e85('0x34')]));_0xb8cbe5['attributes']=_0xb8cbe5['attributes']['length']?_0xb8cbe5[_0x3e85('0x35')]:_0x9328d0['model'];_0xb8cbe5['order']=qs['sort'](_0x2fd847[_0x3e85('0x2f')][_0x3e85('0x39')]);_0xb8cbe5['where']=qs['filters'](_[_0x3e85('0x3b')](_0x2fd847[_0x3e85('0x2f')],_0x9328d0[_0x3e85('0x31')]));if(_0x2fd847['query']['filter']){_0xb8cbe5[_0x3e85('0x3a')]=_['merge'](_0xb8cbe5[_0x3e85('0x3a')],{'$or':_[_0x3e85('0x2b')](_0xb8cbe5[_0x3e85('0x35')],function(_0x19559c){var _0x3bcace={};_0x3bcace[_0x19559c]={'$like':'%'+_0x2fd847[_0x3e85('0x2f')]['filter']+'%'};return _0x3bcace;})});}_0xb8cbe5=_[_0x3e85('0x46')]({},_0xb8cbe5,_0x2fd847['options']);return _0x3ed353[_0x3e85('0x4b')](_0xb8cbe5);}})[_0x3e85('0x23')](function(_0x31593c){if(_0x31593c){_0x169ca2=_0x31593c[_0x3e85('0x45')];if(!_0x2fd847['query'][_0x3e85('0x36')]('nolimit')){_0xb8cbe5[_0x3e85('0x1e')]=qs[_0x3e85('0x1e')](_0x2fd847[_0x3e85('0x2f')][_0x3e85('0x1e')]);_0xb8cbe5[_0x3e85('0x1c')]=qs[_0x3e85('0x1c')](_0x2fd847['query'][_0x3e85('0x1c')]);}return _0x3ed353[_0x3e85('0x4b')](_0xb8cbe5);}})['then'](function(_0x571a8c){if(_0x571a8c){return _0x571a8c?{'count':_0x169ca2,'rows':_0x571a8c}:null;}})['then'](respondWithResult(_0x306e10,null))[_0x3e85('0x47')](handleError(_0x306e10,null));};exports['addConfiguration']=function(_0x4f51a0,_0x216498,_0x32a9e9){if(_0x4f51a0[_0x3e85('0x49')]['id']){delete _0x4f51a0[_0x3e85('0x49')]['id'];}return db[_0x3e85('0x3e')][_0x3e85('0x4c')]({'where':{'id':_0x4f51a0[_0x3e85('0x44')]['id']}})['then'](handleEntityNotFound(_0x216498,null))['then'](function(_0x200aff){if(_0x200aff){_0x4f51a0['body']['AccountId']=_0x200aff['id'];_0x4f51a0[_0x3e85('0x49')]['Subjects']=integrations[_0x3e85('0x4e')](_0x4f51a0['body']['channel'],_0x4f51a0['body']['type']);_0x4f51a0[_0x3e85('0x49')][_0x3e85('0x4f')]=integrations[_0x3e85('0x50')](_0x4f51a0['body'][_0x3e85('0x51')],_0x4f51a0[_0x3e85('0x49')][_0x3e85('0x2d')]);return db['SalesforceConfiguration']['create'](_0x4f51a0[_0x3e85('0x49')],{'include':[{'model':db['SalesforceField'],'as':'Subjects'},{'model':db['SalesforceField'],'as':_0x3e85('0x4f')}]});}return null;})[_0x3e85('0x23')](respondWithResult(_0x216498,null))[_0x3e85('0x47')](handleError(_0x216498,null));};exports[_0x3e85('0x52')]=function(_0x78af87,_0x3d09ec,_0x2ce6b2){var _0x2d0f1e;var _0x12d5fe='';var _0x3d7d62=_0x3e85('0x53');return db[_0x3e85('0x3e')]['findOne']({'where':{'id':_0x78af87[_0x3e85('0x44')]['id']},'attributes':['id','remoteUri','clientId','clientSecret',_0x3e85('0x54'),_0x3e85('0x55'),_0x3e85('0x56')]})[_0x3e85('0x23')](handleEntityNotFound(_0x3d09ec,null))[_0x3e85('0x23')](function(_0x1578f1){if(_0x1578f1){_0x12d5fe=_0x1578f1[_0x3e85('0x57')];var _0xbe62d6=_0x12d5fe[_0x3e85('0x58')](-0x1);if(_0xbe62d6==='/'){_0x12d5fe=_0x12d5fe[_0x3e85('0x59')](0x0,_0x12d5fe[_0x3e85('0x5a')](_0xbe62d6));}_0x2d0f1e=new jsforce[(_0x3e85('0x5b'))]({'oauth2':{'loginUrl':_0x12d5fe,'clientId':_0x1578f1[_0x3e85('0x5c')],'clientSecret':_0x1578f1[_0x3e85('0x5d')]}});return _0x2d0f1e['login'](_0x1578f1['username'],_0x1578f1[_0x3e85('0x55')][_0x3e85('0x5e')](_0x1578f1[_0x3e85('0x56')]));}})[_0x3e85('0x23')](function(_0x183046){if(_0x183046){if(!_['isNil'](_0x78af87[_0x3e85('0x2f')]['ticketType'])){_0x3d7d62=_0x78af87[_0x3e85('0x2f')][_0x3e85('0x5f')];}return _0x2d0f1e[_0x3e85('0x60')](_0x3d7d62)[_0x3e85('0x61')]();}})[_0x3e85('0x23')](function(_0x509c8b){var _0x196369=[_0x3e85('0x62'),_0x3e85('0x63'),_0x3e85('0x64'),_0x3e85('0x65'),'Subject',_0x3e85('0x66')];var _0x11de46=[_0x3e85('0x67'),_0x3e85('0x68'),_0x3e85('0x69'),'boolean','email',_0x3e85('0x6a'),_0x3e85('0x6b')];if(_0x509c8b){_[_0x3e85('0x6c')](_0x509c8b[_0x3e85('0x34')],function(_0x52f98c){return _0x196369[_0x3e85('0x6d')](_0x52f98c[_0x3e85('0x28')])||!_0x11de46['includes'](_0x52f98c[_0x3e85('0x2d')]);});return{'count':_0x509c8b[_0x3e85('0x34')][_0x3e85('0x45')],'rows':_[_0x3e85('0x2b')](_0x509c8b[_0x3e85('0x34')],function(_0x4ce1dc){return{'id':_0x4ce1dc['name'],'name':_0x4ce1dc[_0x3e85('0x6e')],'custom':_0x4ce1dc[_0x3e85('0x6f')],'options':_0x4ce1dc['picklistValues']['length']>0x0?_[_0x3e85('0x2b')](_0x4ce1dc[_0x3e85('0x70')],function(_0x345809){return{'name':_0x345809[_0x3e85('0x6e')],'value':_0x345809[_0x3e85('0x71')]};}):_0x4ce1dc['type']==_0x3e85('0x72')?[{'name':'True','value':'true'},{'name':'False','value':_0x3e85('0x73')}]:[]};})};}})['then'](respondWithResult(_0x3d09ec,null))[_0x3e85('0x47')](function(_0x40df58){var _0x46ba78=_0x78af87[_0x3e85('0x2f')][_0x3e85('0x74')]?0x1f4:_0x40df58['statusCode']||0x1f4;logger[_0x3e85('0x26')](_0x3e85('0x75'),'getFields',_0x46ba78,JSON['stringify'](_0x40df58));delete _0x40df58['name'];if(_0x46ba78===0x191){_0x46ba78=0x190;}_0x3d09ec['status'](_0x46ba78)[_0x3e85('0x29')](_0x78af87[_0x3e85('0x2f')][_0x3e85('0x74')]?{'message':'Wrong\x20credentials','statusCode':_0x40df58[_0x3e85('0x76')]}:_0x40df58);});};
\ No newline at end of file
+var _0x3ff2=['type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','params','include','find','create','body','catch','getConfigurations','findOne','SalesforceConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','SalesforceField','Task','remoteUri','clientId','clientSecret','username','password','securityToken','slice','substring','lastIndexOf','Connection','login','concat','isNil','ticketType','sobject','describe','OwnerId','ActivityDate','IsReminderSet','IsRecurrence','string','boolean','email','textarea','phone','remove','includes','label','picklistValues','True','true','False','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','name','send','index','map','SalesforceAccount','rawAttributes','fieldName'];(function(_0x11e4e6,_0x5b2ad4){var _0x3f411e=function(_0x54a3bf){while(--_0x54a3bf){_0x11e4e6['push'](_0x11e4e6['shift']());}};_0x3f411e(++_0x5b2ad4);}(_0x3ff2,0x145));var _0x23ff=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x3ff2[_0x501510];return _0x1e6ee5;};'use strict';var emlformat=require(_0x23ff('0x0'));var rimraf=require(_0x23ff('0x1'));var zipdir=require(_0x23ff('0x2'));var jsonpatch=require(_0x23ff('0x3'));var rp=require(_0x23ff('0x4'));var moment=require(_0x23ff('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x23ff('0x6'));var util=require(_0x23ff('0x7'));var path=require('path');var sox=require(_0x23ff('0x8'));var csv=require('to-csv');var ejs=require(_0x23ff('0x9'));var fs=require('fs');var fs_extra=require(_0x23ff('0xa'));var _=require('lodash');var squel=require(_0x23ff('0xb'));var crypto=require(_0x23ff('0xc'));var jsforce=require(_0x23ff('0xd'));var deskjs=require(_0x23ff('0xe'));var toCsv=require(_0x23ff('0xf'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x23ff('0x10'));var hardwareService=require(_0x23ff('0x11'));var logger=require(_0x23ff('0x12'))(_0x23ff('0x13'));var utils=require(_0x23ff('0x14'));var config=require(_0x23ff('0x15'));var licenseUtil=require(_0x23ff('0x16'));var db=require('../../mysqldb')['db'];var integrations=require(_0x23ff('0x17'));function respondWithStatusCode(_0x28de46,_0x1f8638){_0x1f8638=_0x1f8638||0xcc;return function(_0x4c9dc5){if(_0x4c9dc5){return _0x28de46[_0x23ff('0x18')](_0x1f8638);}return _0x28de46[_0x23ff('0x19')](_0x1f8638)[_0x23ff('0x1a')]();};}function respondWithResult(_0x354db6,_0x15d4ea){_0x15d4ea=_0x15d4ea||0xc8;return function(_0x344808){if(_0x344808){return _0x354db6['status'](_0x15d4ea)['json'](_0x344808);}};}function respondWithFilteredResult(_0x7f8abf,_0x1bf17d){return function(_0x420213){if(_0x420213){var _0x4fa16f=typeof _0x1bf17d[_0x23ff('0x1b')]===_0x23ff('0x1c')&&typeof _0x1bf17d[_0x23ff('0x1d')]==='undefined';var _0x3996b4=_0x420213[_0x23ff('0x1e')];var _0x56f14e=_0x4fa16f?0x0:_0x1bf17d[_0x23ff('0x1b')];var _0xc10c36=_0x4fa16f?_0x420213[_0x23ff('0x1e')]:_0x1bf17d[_0x23ff('0x1b')]+_0x1bf17d[_0x23ff('0x1d')];var _0x3d41ab;if(_0xc10c36>=_0x3996b4){_0xc10c36=_0x3996b4;_0x3d41ab=0xc8;}else{_0x3d41ab=0xce;}_0x7f8abf['status'](_0x3d41ab);return _0x7f8abf[_0x23ff('0x1f')](_0x23ff('0x20'),_0x56f14e+'-'+_0xc10c36+'/'+_0x3996b4)[_0x23ff('0x21')](_0x420213);}return null;};}function patchUpdates(_0x3bfa7d){return function(_0x5c187d){try{jsonpatch[_0x23ff('0x22')](_0x5c187d,_0x3bfa7d,!![]);}catch(_0x54fbda){return BPromise[_0x23ff('0x23')](_0x54fbda);}return _0x5c187d[_0x23ff('0x24')]();};}function saveUpdates(_0x1346aa,_0x430ce2){return function(_0x46329c){if(_0x46329c){return _0x46329c[_0x23ff('0x25')](_0x1346aa)[_0x23ff('0x26')](function(_0x516b14){return _0x516b14;});}return null;};}function removeEntity(_0x50498b,_0x3f8aa0){return function(_0x301584){if(_0x301584){return _0x301584[_0x23ff('0x27')]()[_0x23ff('0x26')](function(){_0x50498b[_0x23ff('0x19')](0xcc)[_0x23ff('0x1a')]();});}};}function handleEntityNotFound(_0xcc8e8e,_0x33fb61){return function(_0x268a21){if(!_0x268a21){_0xcc8e8e[_0x23ff('0x18')](0x194);}return _0x268a21;};}function handleError(_0x43d63b,_0x1a0681){_0x1a0681=_0x1a0681||0x1f4;return function(_0x838a76){logger['error'](_0x838a76['stack']);if(_0x838a76[_0x23ff('0x28')]){delete _0x838a76[_0x23ff('0x28')];}_0x43d63b[_0x23ff('0x19')](_0x1a0681)[_0x23ff('0x29')](_0x838a76);};}exports[_0x23ff('0x2a')]=function(_0x1beb4c,_0x387afd){var _0x22337a={},_0x40dfc5={},_0x357b75={'count':0x0,'rows':[]};var _0x36c5c9=_[_0x23ff('0x2b')](db[_0x23ff('0x2c')][_0x23ff('0x2d')],function(_0x41144b){return{'name':_0x41144b[_0x23ff('0x2e')],'type':_0x41144b[_0x23ff('0x2f')][_0x23ff('0x30')]};});_0x40dfc5[_0x23ff('0x31')]=_[_0x23ff('0x2b')](_0x36c5c9,_0x23ff('0x28'));_0x40dfc5[_0x23ff('0x32')]=_[_0x23ff('0x33')](_0x1beb4c[_0x23ff('0x32')]);_0x40dfc5[_0x23ff('0x34')]=_[_0x23ff('0x35')](_0x40dfc5[_0x23ff('0x31')],_0x40dfc5[_0x23ff('0x32')]);_0x22337a[_0x23ff('0x36')]=_[_0x23ff('0x35')](_0x40dfc5[_0x23ff('0x31')],qs[_0x23ff('0x37')](_0x1beb4c['query']['fields']));_0x22337a[_0x23ff('0x36')]=_0x22337a[_0x23ff('0x36')][_0x23ff('0x38')]?_0x22337a[_0x23ff('0x36')]:_0x40dfc5[_0x23ff('0x31')];if(!_0x1beb4c[_0x23ff('0x32')][_0x23ff('0x39')](_0x23ff('0x3a'))){_0x22337a[_0x23ff('0x1d')]=qs['limit'](_0x1beb4c[_0x23ff('0x32')][_0x23ff('0x1d')]);_0x22337a[_0x23ff('0x1b')]=qs[_0x23ff('0x1b')](_0x1beb4c['query']['offset']);}_0x22337a['order']=qs[_0x23ff('0x3b')](_0x1beb4c[_0x23ff('0x32')]['sort']);_0x22337a[_0x23ff('0x3c')]=qs['filters'](_[_0x23ff('0x3d')](_0x1beb4c[_0x23ff('0x32')],_0x40dfc5['filters']),_0x36c5c9);if(_0x1beb4c[_0x23ff('0x32')][_0x23ff('0x3e')]){_0x22337a[_0x23ff('0x3c')]=_[_0x23ff('0x3f')](_0x22337a[_0x23ff('0x3c')],{'$or':_[_0x23ff('0x2b')](_0x36c5c9,function(_0x5255c9){if(_0x5255c9[_0x23ff('0x2f')]!==_0x23ff('0x40')){var _0x2906a3={};_0x2906a3[_0x5255c9[_0x23ff('0x28')]]={'$like':'%'+_0x1beb4c[_0x23ff('0x32')][_0x23ff('0x3e')]+'%'};return _0x2906a3;}})});}_0x22337a=_[_0x23ff('0x3f')]({},_0x22337a,_0x1beb4c[_0x23ff('0x41')]);var _0x3bccba={'where':_0x22337a[_0x23ff('0x3c')]};return db['SalesforceAccount'][_0x23ff('0x1e')](_0x3bccba)[_0x23ff('0x26')](function(_0x10bfd7){_0x357b75[_0x23ff('0x1e')]=_0x10bfd7;if(_0x1beb4c['query'][_0x23ff('0x42')]){_0x22337a['include']=[{'all':!![]}];}return db[_0x23ff('0x2c')][_0x23ff('0x43')](_0x22337a);})[_0x23ff('0x26')](function(_0x2e2c20){_0x357b75[_0x23ff('0x44')]=_0x2e2c20;return _0x357b75;})['then'](respondWithFilteredResult(_0x387afd,_0x22337a))['catch'](handleError(_0x387afd,null));};exports['show']=function(_0x4f3361,_0x1dcca9){var _0xc81a={'raw':![],'where':{'id':_0x4f3361[_0x23ff('0x45')]['id']}},_0x398a36={};_0x398a36[_0x23ff('0x31')]=_[_0x23ff('0x33')](db[_0x23ff('0x2c')]['rawAttributes']);_0x398a36[_0x23ff('0x32')]=_[_0x23ff('0x33')](_0x4f3361['query']);_0x398a36[_0x23ff('0x34')]=_['intersection'](_0x398a36['model'],_0x398a36['query']);_0xc81a[_0x23ff('0x36')]=_[_0x23ff('0x35')](_0x398a36[_0x23ff('0x31')],qs[_0x23ff('0x37')](_0x4f3361[_0x23ff('0x32')][_0x23ff('0x37')]));_0xc81a['attributes']=_0xc81a[_0x23ff('0x36')][_0x23ff('0x38')]?_0xc81a['attributes']:_0x398a36[_0x23ff('0x31')];if(_0x4f3361[_0x23ff('0x32')][_0x23ff('0x42')]){_0xc81a[_0x23ff('0x46')]=[{'all':!![]}];}_0xc81a=_['merge']({},_0xc81a,_0x4f3361[_0x23ff('0x41')]);return db[_0x23ff('0x2c')][_0x23ff('0x47')](_0xc81a)[_0x23ff('0x26')](handleEntityNotFound(_0x1dcca9,null))[_0x23ff('0x26')](respondWithResult(_0x1dcca9,null))['catch'](handleError(_0x1dcca9,null));};exports[_0x23ff('0x48')]=function(_0x5dab05,_0x3796fc){return db['SalesforceAccount']['create'](_0x5dab05[_0x23ff('0x49')],{})[_0x23ff('0x26')](respondWithResult(_0x3796fc,0xc9))[_0x23ff('0x4a')](handleError(_0x3796fc,null));};exports[_0x23ff('0x25')]=function(_0x32dead,_0x2e71d9){if(_0x32dead[_0x23ff('0x49')]['id']){delete _0x32dead[_0x23ff('0x49')]['id'];}return db['SalesforceAccount'][_0x23ff('0x47')]({'where':{'id':_0x32dead[_0x23ff('0x45')]['id']}})[_0x23ff('0x26')](handleEntityNotFound(_0x2e71d9,null))[_0x23ff('0x26')](saveUpdates(_0x32dead[_0x23ff('0x49')],null))[_0x23ff('0x26')](respondWithResult(_0x2e71d9,null))[_0x23ff('0x4a')](handleError(_0x2e71d9,null));};exports[_0x23ff('0x27')]=function(_0x37dfd7,_0x2e2f0e){return db[_0x23ff('0x2c')][_0x23ff('0x47')]({'where':{'id':_0x37dfd7[_0x23ff('0x45')]['id']}})[_0x23ff('0x26')](handleEntityNotFound(_0x2e2f0e,null))[_0x23ff('0x26')](removeEntity(_0x2e2f0e,null))[_0x23ff('0x4a')](handleError(_0x2e2f0e,null));};exports[_0x23ff('0x4b')]=function(_0x5b3263,_0x20cd2b,_0x12c44b){var _0x1239e0={};var _0x5839b2={};var _0xab08fa;var _0x408684;return db[_0x23ff('0x2c')][_0x23ff('0x4c')]({'where':{'id':_0x5b3263['params']['id']}})[_0x23ff('0x26')](handleEntityNotFound(_0x20cd2b,null))['then'](function(_0x2a8b14){if(_0x2a8b14){_0xab08fa=_0x2a8b14;_0x5839b2[_0x23ff('0x31')]=_['keys'](db[_0x23ff('0x4d')]['rawAttributes']);_0x5839b2[_0x23ff('0x32')]=_['keys'](_0x5b3263['query']);_0x5839b2[_0x23ff('0x34')]=_[_0x23ff('0x35')](_0x5839b2[_0x23ff('0x31')],_0x5839b2[_0x23ff('0x32')]);_0x1239e0[_0x23ff('0x36')]=_[_0x23ff('0x35')](_0x5839b2[_0x23ff('0x31')],qs[_0x23ff('0x37')](_0x5b3263['query'][_0x23ff('0x37')]));_0x1239e0[_0x23ff('0x36')]=_0x1239e0[_0x23ff('0x36')][_0x23ff('0x38')]?_0x1239e0[_0x23ff('0x36')]:_0x5839b2[_0x23ff('0x31')];_0x1239e0['order']=qs[_0x23ff('0x3b')](_0x5b3263['query'][_0x23ff('0x3b')]);_0x1239e0[_0x23ff('0x3c')]=qs['filters'](_[_0x23ff('0x3d')](_0x5b3263[_0x23ff('0x32')],_0x5839b2[_0x23ff('0x34')]));if(_0x5b3263['query'][_0x23ff('0x3e')]){_0x1239e0['where']=_[_0x23ff('0x3f')](_0x1239e0[_0x23ff('0x3c')],{'$or':_['map'](_0x1239e0[_0x23ff('0x36')],function(_0x1993c8){var _0x42c849={};_0x42c849[_0x1993c8]={'$like':'%'+_0x5b3263[_0x23ff('0x32')][_0x23ff('0x3e')]+'%'};return _0x42c849;})});}_0x1239e0=_[_0x23ff('0x3f')]({},_0x1239e0,_0x5b3263['options']);return _0xab08fa[_0x23ff('0x4b')](_0x1239e0);}})[_0x23ff('0x26')](function(_0x7b6f8a){if(_0x7b6f8a){_0x408684=_0x7b6f8a[_0x23ff('0x38')];if(!_0x5b3263['query'][_0x23ff('0x39')](_0x23ff('0x3a'))){_0x1239e0[_0x23ff('0x1d')]=qs[_0x23ff('0x1d')](_0x5b3263[_0x23ff('0x32')][_0x23ff('0x1d')]);_0x1239e0[_0x23ff('0x1b')]=qs['offset'](_0x5b3263[_0x23ff('0x32')][_0x23ff('0x1b')]);}return _0xab08fa['getConfigurations'](_0x1239e0);}})[_0x23ff('0x26')](function(_0x25fce8){if(_0x25fce8){return _0x25fce8?{'count':_0x408684,'rows':_0x25fce8}:null;}})[_0x23ff('0x26')](respondWithResult(_0x20cd2b,null))[_0x23ff('0x4a')](handleError(_0x20cd2b,null));};exports['addConfiguration']=function(_0x1e8e8e,_0x23579e,_0x42f328){if(_0x1e8e8e[_0x23ff('0x49')]['id']){delete _0x1e8e8e['body']['id'];}return db[_0x23ff('0x2c')][_0x23ff('0x4c')]({'where':{'id':_0x1e8e8e['params']['id']}})[_0x23ff('0x26')](handleEntityNotFound(_0x23579e,null))[_0x23ff('0x26')](function(_0x45aa4c){if(_0x45aa4c){_0x1e8e8e[_0x23ff('0x49')][_0x23ff('0x4e')]=_0x45aa4c['id'];_0x1e8e8e[_0x23ff('0x49')][_0x23ff('0x4f')]=integrations[_0x23ff('0x50')](_0x1e8e8e[_0x23ff('0x49')][_0x23ff('0x51')],_0x1e8e8e['body'][_0x23ff('0x2f')]);_0x1e8e8e[_0x23ff('0x49')][_0x23ff('0x52')]=integrations[_0x23ff('0x53')](_0x1e8e8e['body'][_0x23ff('0x51')],_0x1e8e8e[_0x23ff('0x49')][_0x23ff('0x2f')]);return db['SalesforceConfiguration']['create'](_0x1e8e8e['body'],{'include':[{'model':db[_0x23ff('0x54')],'as':'Subjects'},{'model':db[_0x23ff('0x54')],'as':_0x23ff('0x52')}]});}return null;})[_0x23ff('0x26')](respondWithResult(_0x23579e,null))[_0x23ff('0x4a')](handleError(_0x23579e,null));};exports['getFields']=function(_0x961c3c,_0x4a150b,_0x28e7b4){var _0x4e2656;var _0x291ac9='';var _0xd66995=_0x23ff('0x55');return db[_0x23ff('0x2c')]['findOne']({'where':{'id':_0x961c3c[_0x23ff('0x45')]['id']},'attributes':['id',_0x23ff('0x56'),_0x23ff('0x57'),_0x23ff('0x58'),_0x23ff('0x59'),_0x23ff('0x5a'),_0x23ff('0x5b')]})[_0x23ff('0x26')](handleEntityNotFound(_0x4a150b,null))[_0x23ff('0x26')](function(_0x4e647f){if(_0x4e647f){_0x291ac9=_0x4e647f[_0x23ff('0x56')];var _0x238262=_0x291ac9[_0x23ff('0x5c')](-0x1);if(_0x238262==='/'){_0x291ac9=_0x291ac9[_0x23ff('0x5d')](0x0,_0x291ac9[_0x23ff('0x5e')](_0x238262));}_0x4e2656=new jsforce[(_0x23ff('0x5f'))]({'oauth2':{'loginUrl':_0x291ac9,'clientId':_0x4e647f['clientId'],'clientSecret':_0x4e647f[_0x23ff('0x58')]}});return _0x4e2656[_0x23ff('0x60')](_0x4e647f[_0x23ff('0x59')],_0x4e647f['password'][_0x23ff('0x61')](_0x4e647f[_0x23ff('0x5b')]));}})['then'](function(_0x4e10a0){if(_0x4e10a0){if(!_[_0x23ff('0x62')](_0x961c3c[_0x23ff('0x32')][_0x23ff('0x63')])){_0xd66995=_0x961c3c[_0x23ff('0x32')][_0x23ff('0x63')];}return _0x4e2656[_0x23ff('0x64')](_0xd66995)[_0x23ff('0x65')]();}})[_0x23ff('0x26')](function(_0x5d08c9){var _0xc7b821=[_0x23ff('0x66'),_0x23ff('0x67'),_0x23ff('0x68'),_0x23ff('0x69'),'Subject','Description'];var _0x5986ff=[_0x23ff('0x6a'),'int','picklist',_0x23ff('0x6b'),_0x23ff('0x6c'),_0x23ff('0x6d'),_0x23ff('0x6e')];if(_0x5d08c9){_[_0x23ff('0x6f')](_0x5d08c9[_0x23ff('0x37')],function(_0x139066){return _0xc7b821[_0x23ff('0x70')](_0x139066['name'])||!_0x5986ff[_0x23ff('0x70')](_0x139066[_0x23ff('0x2f')]);});return{'count':_0x5d08c9[_0x23ff('0x37')][_0x23ff('0x38')],'rows':_[_0x23ff('0x2b')](_0x5d08c9[_0x23ff('0x37')],function(_0x1dc3e0){return{'id':_0x1dc3e0[_0x23ff('0x28')],'name':_0x1dc3e0[_0x23ff('0x71')],'custom':_0x1dc3e0['custom'],'options':_0x1dc3e0[_0x23ff('0x72')][_0x23ff('0x38')]>0x0?_[_0x23ff('0x2b')](_0x1dc3e0['picklistValues'],function(_0x50cc5e){return{'name':_0x50cc5e[_0x23ff('0x71')],'value':_0x50cc5e['value']};}):_0x1dc3e0['type']=='boolean'?[{'name':_0x23ff('0x73'),'value':_0x23ff('0x74')},{'name':_0x23ff('0x75'),'value':'false'}]:[]};})};}})[_0x23ff('0x26')](respondWithResult(_0x4a150b,null))['catch'](function(_0x25a58f){var _0x5680a8=_0x961c3c['query']['test']?0x1f4:_0x25a58f[_0x23ff('0x76')]||0x1f4;logger[_0x23ff('0x77')](_0x23ff('0x78'),_0x23ff('0x79'),_0x5680a8,JSON[_0x23ff('0x7a')](_0x25a58f));delete _0x25a58f[_0x23ff('0x28')];if(_0x5680a8===0x191){_0x5680a8=0x190;}_0x4a150b['status'](_0x5680a8)[_0x23ff('0x29')](_0x961c3c[_0x23ff('0x32')]['test']?{'message':_0x23ff('0x7b'),'statusCode':_0x25a58f[_0x23ff('0x76')]}:_0x25a58f);});};
\ No newline at end of file
index ef40c65..1c0dc96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd66c=['SalesforceAccount','int_salesforce_accounts','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration','exports'];(function(_0x43e08a,_0x4a7844){var _0x52b8a4=function(_0x4acaf6){while(--_0x4acaf6){_0x43e08a['push'](_0x43e08a['shift']());}};_0x52b8a4(++_0x4a7844);}(_0xd66c,0x106));var _0xcd66=function(_0xbcd2bc,_0x585e12){_0xbcd2bc=_0xbcd2bc-0x0;var _0x220204=_0xd66c[_0xbcd2bc];return _0x220204;};'use strict';var _=require(_0xcd66('0x0'));var util=require('util');var logger=require(_0xcd66('0x1'))(_0xcd66('0x2'));var moment=require(_0xcd66('0x3'));var BPromise=require(_0xcd66('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xcd66('0x5'));var rimraf=require(_0xcd66('0x6'));var config=require(_0xcd66('0x7'));var attributes=require(_0xcd66('0x8'));var integrations=require(_0xcd66('0x9'));module[_0xcd66('0xa')]=function(_0x476c79,_0x29e76e){return _0x476c79['define'](_0xcd66('0xb'),attributes,{'tableName':_0xcd66('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4345=['SalesforceAccount','int_salesforce_accounts','../../config/logger','api','bluebird','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','define'];(function(_0x24880b,_0x372954){var _0x168c2d=function(_0x504e42){while(--_0x504e42){_0x24880b['push'](_0x24880b['shift']());}};_0x168c2d(++_0x372954);}(_0x4345,0x1af));var _0x5434=function(_0x2a4d08,_0x1c8ade){_0x2a4d08=_0x2a4d08-0x0;var _0x490902=_0x4345[_0x2a4d08];return _0x490902;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x5434('0x0'))(_0x5434('0x1'));var moment=require('moment');var BPromise=require(_0x5434('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5434('0x3'));var rimraf=require(_0x5434('0x4'));var config=require(_0x5434('0x5'));var attributes=require('./intSalesforceAccount.attributes');var integrations=require(_0x5434('0x6'));module[_0x5434('0x7')]=function(_0x417d11,_0x35ddbf){return _0x417d11[_0x5434('0x8')](_0x5434('0x9'),attributes,{'tableName':_0x5434('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fb4d7b8..98a8ed9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1ef=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','GetSalesforceAccount','SalesforceAccount','findAll','options','raw','where','attributes','limit','include','map','model','catch','ShowSalesforceAccount','find','lodash'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xb1ef,0x93));var _0xfb1e=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xb1ef[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0xfb1e('0x0'));var util=require(_0xfb1e('0x1'));var moment=require('moment');var BPromise=require(_0xfb1e('0x2'));var rs=require(_0xfb1e('0x3'));var fs=require('fs');var Redis=require(_0xfb1e('0x4'));var db=require(_0xfb1e('0x5'))['db'];var utils=require(_0xfb1e('0x6'));var logger=require(_0xfb1e('0x7'))(_0xfb1e('0x8'));var config=require(_0xfb1e('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xfb1e('0xa')][_0xfb1e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1455fa,_0xccf70,_0x502d8e){return new BPromise(function(_0x5eadcc,_0x3c7643){return client[_0xfb1e('0xc')](_0x1455fa,_0x502d8e)[_0xfb1e('0xd')](function(_0x1ac2dd){logger[_0xfb1e('0xe')](_0xfb1e('0xf'),_0xccf70,_0xfb1e('0x10'));logger[_0xfb1e('0x11')]('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0xccf70,_0xfb1e('0x10'),JSON[_0xfb1e('0x12')](_0x1ac2dd));if(_0x1ac2dd[_0xfb1e('0x13')]){if(_0x1ac2dd[_0xfb1e('0x13')][_0xfb1e('0x14')]===0x1f4){logger[_0xfb1e('0x13')](_0xfb1e('0xf'),_0xccf70,_0x1ac2dd['error'][_0xfb1e('0x15')]);return _0x3c7643(_0x1ac2dd[_0xfb1e('0x13')]['message']);}logger[_0xfb1e('0x13')](_0xfb1e('0xf'),_0xccf70,_0x1ac2dd[_0xfb1e('0x13')][_0xfb1e('0x15')]);return _0x5eadcc(_0x1ac2dd[_0xfb1e('0x13')]['message']);}else{logger[_0xfb1e('0xe')](_0xfb1e('0xf'),_0xccf70,_0xfb1e('0x10'));_0x5eadcc(_0x1ac2dd[_0xfb1e('0x16')][_0xfb1e('0x15')]);}})['catch'](function(_0x2f3d7e){logger[_0xfb1e('0x13')](_0xfb1e('0xf'),_0xccf70,_0x2f3d7e);_0x3c7643(_0x2f3d7e);});});}exports[_0xfb1e('0x17')]=function(_0x2b0116){var _0x4f6432=this;return new Promise(function(_0x33215e,_0x23a2df){return db[_0xfb1e('0x18')][_0xfb1e('0x19')]({'raw':_0x2b0116[_0xfb1e('0x1a')]?_0x2b0116['options'][_0xfb1e('0x1b')]===undefined?!![]:![]:!![],'where':_0x2b0116['options']?_0x2b0116['options'][_0xfb1e('0x1c')]||null:null,'attributes':_0x2b0116['options']?_0x2b0116[_0xfb1e('0x1a')][_0xfb1e('0x1d')]||null:null,'limit':_0x2b0116[_0xfb1e('0x1a')]?_0x2b0116[_0xfb1e('0x1a')][_0xfb1e('0x1e')]||null:null,'include':_0x2b0116[_0xfb1e('0x1a')]?_0x2b0116[_0xfb1e('0x1a')][_0xfb1e('0x1f')]?_[_0xfb1e('0x20')](_0x2b0116[_0xfb1e('0x1a')][_0xfb1e('0x1f')],function(_0x1df2b8){return{'model':db[_0x1df2b8[_0xfb1e('0x21')]],'as':_0x1df2b8['as'],'attributes':_0x1df2b8[_0xfb1e('0x1d')],'include':_0x1df2b8[_0xfb1e('0x1f')]?_[_0xfb1e('0x20')](_0x1df2b8[_0xfb1e('0x1f')],function(_0x2b30d8){return{'model':db[_0x2b30d8['model']],'as':_0x2b30d8['as'],'attributes':_0x2b30d8['attributes'],'include':_0x2b30d8['include']?_[_0xfb1e('0x20')](_0x2b30d8[_0xfb1e('0x1f')],function(_0x20826c){return{'model':db[_0x20826c[_0xfb1e('0x21')]],'as':_0x20826c['as'],'attributes':_0x20826c[_0xfb1e('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xfb1e('0xd')](function(_0x244d80){logger[_0xfb1e('0xe')](_0xfb1e('0x17'),_0x2b0116);logger['debug'](_0xfb1e('0x17'),_0x2b0116,JSON[_0xfb1e('0x12')](_0x244d80));_0x33215e(_0x244d80);})[_0xfb1e('0x22')](function(_0x201881){logger[_0xfb1e('0x13')](_0xfb1e('0x17'),_0x201881[_0xfb1e('0x15')],_0x2b0116);_0x23a2df(_0x4f6432[_0xfb1e('0x13')](0x1f4,_0x201881['message']));});});};exports[_0xfb1e('0x23')]=function(_0x178785){var _0x1b5786=this;return new Promise(function(_0x5e97b0,_0x310eca){return db['SalesforceAccount'][_0xfb1e('0x24')]({'raw':_0x178785[_0xfb1e('0x1a')]?_0x178785[_0xfb1e('0x1a')][_0xfb1e('0x1b')]===undefined?!![]:![]:!![],'where':_0x178785[_0xfb1e('0x1a')]?_0x178785[_0xfb1e('0x1a')][_0xfb1e('0x1c')]||null:null,'attributes':_0x178785[_0xfb1e('0x1a')]?_0x178785[_0xfb1e('0x1a')]['attributes']||null:null,'include':_0x178785[_0xfb1e('0x1a')]?_0x178785[_0xfb1e('0x1a')]['include']?_[_0xfb1e('0x20')](_0x178785[_0xfb1e('0x1a')][_0xfb1e('0x1f')],function(_0x287ead){return{'model':db[_0x287ead[_0xfb1e('0x21')]],'as':_0x287ead['as'],'attributes':_0x287ead[_0xfb1e('0x1d')],'include':_0x287ead['include']?_['map'](_0x287ead[_0xfb1e('0x1f')],function(_0x3af7f4){return{'model':db[_0x3af7f4['model']],'as':_0x3af7f4['as'],'attributes':_0x3af7f4[_0xfb1e('0x1d')],'include':_0x3af7f4['include']?_[_0xfb1e('0x20')](_0x3af7f4[_0xfb1e('0x1f')],function(_0x573bcc){return{'model':db[_0x573bcc[_0xfb1e('0x21')]],'as':_0x573bcc['as'],'attributes':_0x573bcc['attributes']};}):[]};}):[]};}):[]:[]})[_0xfb1e('0xd')](function(_0x42baa0){logger[_0xfb1e('0xe')]('ShowSalesforceAccount',_0x178785);logger['debug'](_0xfb1e('0x23'),_0x178785,JSON[_0xfb1e('0x12')](_0x42baa0));_0x5e97b0(_0x42baa0);})[_0xfb1e('0x22')](function(_0x5dfc32){logger['error'](_0xfb1e('0x23'),_0x5dfc32[_0xfb1e('0x15')],_0x178785);_0x310eca(_0x1b5786[_0xfb1e('0x13')](0x1f4,_0x5dfc32[_0xfb1e('0x15')]));});});};
\ No newline at end of file
+var _0xe02a=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetSalesforceAccount','SalesforceAccount','findAll','options','raw','attributes','limit','include','model','map','then','ShowSalesforceAccount','where'];(function(_0x4e0733,_0xdd89d1){var _0x1879b8=function(_0x133c1d){while(--_0x133c1d){_0x4e0733['push'](_0x4e0733['shift']());}};_0x1879b8(++_0xdd89d1);}(_0xe02a,0xb9));var _0xae02=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xe02a[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0xae02('0x0'));var util=require(_0xae02('0x1'));var moment=require(_0xae02('0x2'));var BPromise=require(_0xae02('0x3'));var rs=require(_0xae02('0x4'));var fs=require('fs');var Redis=require(_0xae02('0x5'));var db=require(_0xae02('0x6'))['db'];var utils=require(_0xae02('0x7'));var logger=require('../../config/logger')(_0xae02('0x8'));var config=require(_0xae02('0x9'));var jayson=require(_0xae02('0xa'));var client=jayson[_0xae02('0xb')][_0xae02('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x148d67,_0x2d9e83,_0x7e9010){return new BPromise(function(_0x4dd6f4,_0x18dc75){return client[_0xae02('0xd')](_0x148d67,_0x7e9010)['then'](function(_0x32ad25){logger[_0xae02('0xe')](_0xae02('0xf'),_0x2d9e83,_0xae02('0x10'));logger[_0xae02('0x11')]('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0x2d9e83,'request\x20sent',JSON[_0xae02('0x12')](_0x32ad25));if(_0x32ad25['error']){if(_0x32ad25[_0xae02('0x13')][_0xae02('0x14')]===0x1f4){logger[_0xae02('0x13')](_0xae02('0xf'),_0x2d9e83,_0x32ad25['error'][_0xae02('0x15')]);return _0x18dc75(_0x32ad25['error'][_0xae02('0x15')]);}logger[_0xae02('0x13')](_0xae02('0xf'),_0x2d9e83,_0x32ad25['error'][_0xae02('0x15')]);return _0x4dd6f4(_0x32ad25[_0xae02('0x13')]['message']);}else{logger[_0xae02('0xe')](_0xae02('0xf'),_0x2d9e83,_0xae02('0x10'));_0x4dd6f4(_0x32ad25[_0xae02('0x16')][_0xae02('0x15')]);}})[_0xae02('0x17')](function(_0x432169){logger[_0xae02('0x13')](_0xae02('0xf'),_0x2d9e83,_0x432169);_0x18dc75(_0x432169);});});}exports[_0xae02('0x18')]=function(_0x3697a2){var _0x3b7073=this;return new Promise(function(_0x692172,_0x32c595){return db[_0xae02('0x19')][_0xae02('0x1a')]({'raw':_0x3697a2[_0xae02('0x1b')]?_0x3697a2[_0xae02('0x1b')][_0xae02('0x1c')]===undefined?!![]:![]:!![],'where':_0x3697a2['options']?_0x3697a2[_0xae02('0x1b')]['where']||null:null,'attributes':_0x3697a2[_0xae02('0x1b')]?_0x3697a2[_0xae02('0x1b')][_0xae02('0x1d')]||null:null,'limit':_0x3697a2[_0xae02('0x1b')]?_0x3697a2['options'][_0xae02('0x1e')]||null:null,'include':_0x3697a2[_0xae02('0x1b')]?_0x3697a2['options'][_0xae02('0x1f')]?_['map'](_0x3697a2[_0xae02('0x1b')][_0xae02('0x1f')],function(_0x2e88fb){return{'model':db[_0x2e88fb[_0xae02('0x20')]],'as':_0x2e88fb['as'],'attributes':_0x2e88fb[_0xae02('0x1d')],'include':_0x2e88fb[_0xae02('0x1f')]?_[_0xae02('0x21')](_0x2e88fb['include'],function(_0x592ba8){return{'model':db[_0x592ba8[_0xae02('0x20')]],'as':_0x592ba8['as'],'attributes':_0x592ba8[_0xae02('0x1d')],'include':_0x592ba8[_0xae02('0x1f')]?_[_0xae02('0x21')](_0x592ba8[_0xae02('0x1f')],function(_0x350358){return{'model':db[_0x350358[_0xae02('0x20')]],'as':_0x350358['as'],'attributes':_0x350358[_0xae02('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xae02('0x22')](function(_0x252402){logger[_0xae02('0xe')](_0xae02('0x18'),_0x3697a2);logger['debug'](_0xae02('0x18'),_0x3697a2,JSON[_0xae02('0x12')](_0x252402));_0x692172(_0x252402);})[_0xae02('0x17')](function(_0x320248){logger[_0xae02('0x13')](_0xae02('0x18'),_0x320248[_0xae02('0x15')],_0x3697a2);_0x32c595(_0x3b7073['error'](0x1f4,_0x320248[_0xae02('0x15')]));});});};exports[_0xae02('0x23')]=function(_0x322b6d){var _0x3afdea=this;return new Promise(function(_0x25a361,_0x1afe2f){return db[_0xae02('0x19')]['find']({'raw':_0x322b6d['options']?_0x322b6d[_0xae02('0x1b')][_0xae02('0x1c')]===undefined?!![]:![]:!![],'where':_0x322b6d[_0xae02('0x1b')]?_0x322b6d[_0xae02('0x1b')][_0xae02('0x24')]||null:null,'attributes':_0x322b6d[_0xae02('0x1b')]?_0x322b6d[_0xae02('0x1b')][_0xae02('0x1d')]||null:null,'include':_0x322b6d[_0xae02('0x1b')]?_0x322b6d[_0xae02('0x1b')][_0xae02('0x1f')]?_[_0xae02('0x21')](_0x322b6d[_0xae02('0x1b')][_0xae02('0x1f')],function(_0x57a630){return{'model':db[_0x57a630[_0xae02('0x20')]],'as':_0x57a630['as'],'attributes':_0x57a630[_0xae02('0x1d')],'include':_0x57a630[_0xae02('0x1f')]?_[_0xae02('0x21')](_0x57a630[_0xae02('0x1f')],function(_0x20956a){return{'model':db[_0x20956a[_0xae02('0x20')]],'as':_0x20956a['as'],'attributes':_0x20956a[_0xae02('0x1d')],'include':_0x20956a[_0xae02('0x1f')]?_['map'](_0x20956a[_0xae02('0x1f')],function(_0x48e016){return{'model':db[_0x48e016[_0xae02('0x20')]],'as':_0x48e016['as'],'attributes':_0x48e016[_0xae02('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xae02('0x22')](function(_0x4e8bc9){logger[_0xae02('0xe')](_0xae02('0x23'),_0x322b6d);logger[_0xae02('0x11')](_0xae02('0x23'),_0x322b6d,JSON[_0xae02('0x12')](_0x4e8bc9));_0x25a361(_0x4e8bc9);})[_0xae02('0x17')](function(_0x433110){logger[_0xae02('0x13')]('ShowSalesforceAccount',_0x433110[_0xae02('0x15')],_0x322b6d);_0x1afe2f(_0x3afdea['error'](0x1f4,_0x433110[_0xae02('0x15')]));});});};
\ No newline at end of file
index 76fcc5b..2ee05a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['post','create','put','/:id','update','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','/:id/subjects','getSubjects','getDescriptions'];(function(_0x3a6efd,_0x2a5102){var _0x487b9a=function(_0x104f89){while(--_0x104f89){_0x3a6efd['push'](_0x3a6efd['shift']());}};_0x487b9a(++_0x2a5102);}(_0x0b0e,0x187));var _0xe0b0=function(_0x28509b,_0x5831ff){_0x28509b=_0x28509b-0x0;var _0x1e0b6=_0x0b0e[_0x28509b];return _0x1e0b6;};'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['getFields']);router[_0xe0b0('0x9')](_0xe0b0('0xe'),auth['isAuthenticated'](),controller[_0xe0b0('0xf')]);router[_0xe0b0('0x9')]('/:id/descriptions',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x10')]);router[_0xe0b0('0x11')]('/',auth['isAuthenticated'](),controller[_0xe0b0('0x12')]);router[_0xe0b0('0x13')](_0xe0b0('0x14'),auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x15')]);router['delete'](_0xe0b0('0x14'),auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x16')]);module[_0xe0b0('0x17')]=router;
\ No newline at end of file
+var _0x5f66=['express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/fields','/:id/subjects','getSubjects','put','update','delete','destroy','exports','util','connect-timeout'];(function(_0x4f16e0,_0x20d689){var _0x102943=function(_0x341190){while(--_0x341190){_0x4f16e0['push'](_0x4f16e0['shift']());}};_0x102943(++_0x20d689);}(_0x5f66,0x1a0));var _0x65f6=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0x5f66[_0x173441];return _0x2423a8;};'use strict';var multer=require('multer');var util=require(_0x65f6('0x0'));var path=require('path');var timeout=require(_0x65f6('0x1'));var express=require(_0x65f6('0x2'));var router=express[_0x65f6('0x3')]();var fs_extra=require(_0x65f6('0x4'));var auth=require(_0x65f6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x65f6('0x6'));var controller=require('./intSalesforceConfiguration.controller');router[_0x65f6('0x7')]('/',auth[_0x65f6('0x8')](),controller['index']);router['get'](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xa')]);router[_0x65f6('0x7')](_0x65f6('0xb'),auth[_0x65f6('0x8')](),controller['getFields']);router['get'](_0x65f6('0xc'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xd')]);router[_0x65f6('0x7')]('/:id/descriptions',auth[_0x65f6('0x8')](),controller['getDescriptions']);router['post']('/',auth[_0x65f6('0x8')](),controller['create']);router[_0x65f6('0xe')]('/:id',auth[_0x65f6('0x8')](),controller[_0x65f6('0xf')]);router[_0x65f6('0x10')](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0x11')]);module[_0x65f6('0x12')]=router;
\ No newline at end of file
index 67a7348..9efcf65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb73=['lead','account_contact_lead','account','sequelize','STRING','ENUM','Task','contact_lead','contact'];(function(_0x3c31a5,_0x1edd6a){var _0x43c6e7=function(_0x13e586){while(--_0x13e586){_0x3c31a5['push'](_0x3c31a5['shift']());}};_0x43c6e7(++_0x1edd6a);}(_0xbb73,0x81));var _0x3bb7=function(_0x3c4e4d,_0x576d25){_0x3c4e4d=_0x3c4e4d-0x0;var _0x25b94d=_0xbb73[_0x3c4e4d];return _0x25b94d;};'use strict';var Sequelize=require(_0x3bb7('0x0'));module['exports']={'name':{'type':Sequelize[_0x3bb7('0x1')]},'description':{'type':Sequelize[_0x3bb7('0x1')]},'ticketType':{'type':Sequelize[_0x3bb7('0x2')](_0x3bb7('0x3'),'Case'),'defaultValue':'Task'},'moduleSearch':{'type':Sequelize[_0x3bb7('0x2')](_0x3bb7('0x4'),_0x3bb7('0x5'),_0x3bb7('0x6'),_0x3bb7('0x7'),_0x3bb7('0x8')),'defaultValue':'contact_lead'},'moduleCreate':{'type':Sequelize['ENUM']('nothing',_0x3bb7('0x5'),'lead',_0x3bb7('0x8')),'defaultValue':_0x3bb7('0x6')},'leadId':{'type':Sequelize[_0x3bb7('0x1')]},'additionalSearchAccount':{'type':Sequelize[_0x3bb7('0x1')]},'additionalSearchContact':{'type':Sequelize[_0x3bb7('0x1')]},'additionalSearchLead':{'type':Sequelize[_0x3bb7('0x1')]}};
\ No newline at end of file
+var _0xcac5=['sequelize','exports','STRING','ENUM','Task','Case','contact_lead','contact','lead','account'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xcac5,0x1cc));var _0x5cac=function(_0x58ed22,_0x338020){_0x58ed22=_0x58ed22-0x0;var _0x241b4e=_0xcac5[_0x58ed22];return _0x241b4e;};'use strict';var Sequelize=require(_0x5cac('0x0'));module[_0x5cac('0x1')]={'name':{'type':Sequelize[_0x5cac('0x2')]},'description':{'type':Sequelize[_0x5cac('0x2')]},'ticketType':{'type':Sequelize[_0x5cac('0x3')](_0x5cac('0x4'),_0x5cac('0x5')),'defaultValue':_0x5cac('0x4')},'moduleSearch':{'type':Sequelize[_0x5cac('0x3')](_0x5cac('0x6'),_0x5cac('0x7'),_0x5cac('0x8'),'account_contact_lead','account'),'defaultValue':_0x5cac('0x6')},'moduleCreate':{'type':Sequelize['ENUM']('nothing',_0x5cac('0x7'),_0x5cac('0x8'),_0x5cac('0x9')),'defaultValue':_0x5cac('0x8')},'leadId':{'type':Sequelize[_0x5cac('0x2')]},'additionalSearchAccount':{'type':Sequelize[_0x5cac('0x2')]},'additionalSearchContact':{'type':Sequelize[_0x5cac('0x2')]},'additionalSearchLead':{'type':Sequelize[_0x5cac('0x2')]}};
\ No newline at end of file
index 3fd6fab..09989d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2155=['fields','length','model','hasOwnProperty','nolimit','order','sort','where','merge','map','VIRTUAL','filter','options','include','findAll','show','params','includeAll','find','create','body','catch','getFields','findOne','getSubjects','pick','getDescriptions','SalesforceField','eml-format','rimraf','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','name','send','index','SalesforceConfiguration','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes'];(function(_0x2f76db,_0xf12673){var _0x588398=function(_0x76ea8){while(--_0x76ea8){_0x2f76db['push'](_0x2f76db['shift']());}};_0x588398(++_0xf12673);}(_0x2155,0xbe));var _0x5215=function(_0x13d09e,_0x37497d){_0x13d09e=_0x13d09e-0x0;var _0x4397dc=_0x2155[_0x13d09e];return _0x4397dc;};'use strict';var emlformat=require(_0x5215('0x0'));var rimraf=require(_0x5215('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5215('0x2'));var rp=require(_0x5215('0x3'));var moment=require(_0x5215('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x5215('0x5'));var path=require(_0x5215('0x6'));var sox=require(_0x5215('0x7'));var csv=require(_0x5215('0x8'));var ejs=require(_0x5215('0x9'));var fs=require('fs');var fs_extra=require(_0x5215('0xa'));var _=require(_0x5215('0xb'));var squel=require(_0x5215('0xc'));var crypto=require(_0x5215('0xd'));var jsforce=require(_0x5215('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x5215('0x8'));var querystring=require(_0x5215('0xf'));var Papa=require('papaparse');var Redis=require(_0x5215('0x10'));var authService=require(_0x5215('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x5215('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5215('0x13'))(_0x5215('0x14'));var utils=require(_0x5215('0x15'));var config=require(_0x5215('0x16'));var licenseUtil=require(_0x5215('0x17'));var db=require(_0x5215('0x18'))['db'];function respondWithStatusCode(_0xab43af,_0x581a76){_0x581a76=_0x581a76||0xcc;return function(_0x25a15e){if(_0x25a15e){return _0xab43af[_0x5215('0x19')](_0x581a76);}return _0xab43af[_0x5215('0x1a')](_0x581a76)[_0x5215('0x1b')]();};}function respondWithResult(_0x3a8f98,_0x2e8cc1){_0x2e8cc1=_0x2e8cc1||0xc8;return function(_0x17584f){if(_0x17584f){return _0x3a8f98[_0x5215('0x1a')](_0x2e8cc1)[_0x5215('0x1c')](_0x17584f);}};}function respondWithFilteredResult(_0x4b61b8,_0x1090aa){return function(_0x47ab4d){if(_0x47ab4d){var _0x29028e=typeof _0x1090aa[_0x5215('0x1d')]==='undefined'&&typeof _0x1090aa[_0x5215('0x1e')]==='undefined';var _0x1320e8=_0x47ab4d[_0x5215('0x1f')];var _0x153dcf=_0x29028e?0x0:_0x1090aa['offset'];var _0xe7ceb8=_0x29028e?_0x47ab4d['count']:_0x1090aa[_0x5215('0x1d')]+_0x1090aa[_0x5215('0x1e')];var _0x499fd5;if(_0xe7ceb8>=_0x1320e8){_0xe7ceb8=_0x1320e8;_0x499fd5=0xc8;}else{_0x499fd5=0xce;}_0x4b61b8[_0x5215('0x1a')](_0x499fd5);return _0x4b61b8[_0x5215('0x20')](_0x5215('0x21'),_0x153dcf+'-'+_0xe7ceb8+'/'+_0x1320e8)[_0x5215('0x1c')](_0x47ab4d);}return null;};}function patchUpdates(_0x2af8f1){return function(_0x4cb0eb){try{jsonpatch[_0x5215('0x22')](_0x4cb0eb,_0x2af8f1,!![]);}catch(_0x3dfc41){return BPromise[_0x5215('0x23')](_0x3dfc41);}return _0x4cb0eb[_0x5215('0x24')]();};}function saveUpdates(_0x2d6a21,_0xa64e57){return function(_0x4bb230){if(_0x4bb230){return _0x4bb230[_0x5215('0x25')](_0x2d6a21)[_0x5215('0x26')](function(_0x4dee94){return _0x4dee94;});}return null;};}function removeEntity(_0x2b196b,_0x11abba){return function(_0x4097c3){if(_0x4097c3){return _0x4097c3[_0x5215('0x27')]()[_0x5215('0x26')](function(){_0x2b196b['status'](0xcc)[_0x5215('0x1b')]();});}};}function handleEntityNotFound(_0x3b5afb,_0x23d07c){return function(_0x4ac3ea){if(!_0x4ac3ea){_0x3b5afb[_0x5215('0x19')](0x194);}return _0x4ac3ea;};}function handleError(_0x354fe6,_0x2f5a43){_0x2f5a43=_0x2f5a43||0x1f4;return function(_0x29461c){logger['error'](_0x29461c['stack']);if(_0x29461c['name']){delete _0x29461c[_0x5215('0x28')];}_0x354fe6[_0x5215('0x1a')](_0x2f5a43)[_0x5215('0x29')](_0x29461c);};}exports[_0x5215('0x2a')]=function(_0x2d837a,_0x2e3f99){var _0x5257bf={},_0x552970={},_0xcd927c={'count':0x0,'rows':[]};var _0x15d46a=_['map'](db[_0x5215('0x2b')][_0x5215('0x2c')],function(_0x11294f){return{'name':_0x11294f[_0x5215('0x2d')],'type':_0x11294f[_0x5215('0x2e')][_0x5215('0x2f')]};});_0x552970['model']=_['map'](_0x15d46a,_0x5215('0x28'));_0x552970[_0x5215('0x30')]=_[_0x5215('0x31')](_0x2d837a[_0x5215('0x30')]);_0x552970[_0x5215('0x32')]=_[_0x5215('0x33')](_0x552970['model'],_0x552970[_0x5215('0x30')]);_0x5257bf[_0x5215('0x34')]=_[_0x5215('0x33')](_0x552970['model'],qs[_0x5215('0x35')](_0x2d837a[_0x5215('0x30')][_0x5215('0x35')]));_0x5257bf[_0x5215('0x34')]=_0x5257bf['attributes'][_0x5215('0x36')]?_0x5257bf[_0x5215('0x34')]:_0x552970[_0x5215('0x37')];if(!_0x2d837a[_0x5215('0x30')][_0x5215('0x38')](_0x5215('0x39'))){_0x5257bf[_0x5215('0x1e')]=qs[_0x5215('0x1e')](_0x2d837a['query'][_0x5215('0x1e')]);_0x5257bf[_0x5215('0x1d')]=qs['offset'](_0x2d837a[_0x5215('0x30')][_0x5215('0x1d')]);}_0x5257bf[_0x5215('0x3a')]=qs[_0x5215('0x3b')](_0x2d837a[_0x5215('0x30')][_0x5215('0x3b')]);_0x5257bf[_0x5215('0x3c')]=qs['filters'](_['pick'](_0x2d837a[_0x5215('0x30')],_0x552970['filters']),_0x15d46a);if(_0x2d837a[_0x5215('0x30')]['filter']){_0x5257bf[_0x5215('0x3c')]=_[_0x5215('0x3d')](_0x5257bf[_0x5215('0x3c')],{'$or':_[_0x5215('0x3e')](_0x15d46a,function(_0x50afa0){if(_0x50afa0['type']!==_0x5215('0x3f')){var _0x3b3f40={};_0x3b3f40[_0x50afa0[_0x5215('0x28')]]={'$like':'%'+_0x2d837a[_0x5215('0x30')][_0x5215('0x40')]+'%'};return _0x3b3f40;}})});}_0x5257bf=_[_0x5215('0x3d')]({},_0x5257bf,_0x2d837a[_0x5215('0x41')]);var _0x36440c={'where':_0x5257bf[_0x5215('0x3c')]};return db[_0x5215('0x2b')][_0x5215('0x1f')](_0x36440c)[_0x5215('0x26')](function(_0x5a15a5){_0xcd927c[_0x5215('0x1f')]=_0x5a15a5;if(_0x2d837a[_0x5215('0x30')]['includeAll']){_0x5257bf[_0x5215('0x42')]=[{'all':!![]}];}return db['SalesforceConfiguration'][_0x5215('0x43')](_0x5257bf);})[_0x5215('0x26')](function(_0x28102d){_0xcd927c['rows']=_0x28102d;return _0xcd927c;})[_0x5215('0x26')](respondWithFilteredResult(_0x2e3f99,_0x5257bf))['catch'](handleError(_0x2e3f99,null));};exports[_0x5215('0x44')]=function(_0x1d0ee3,_0x423b6e){var _0x2a3543={'raw':![],'where':{'id':_0x1d0ee3[_0x5215('0x45')]['id']}},_0x24abec={};_0x24abec[_0x5215('0x37')]=_['keys'](db[_0x5215('0x2b')][_0x5215('0x2c')]);_0x24abec[_0x5215('0x30')]=_['keys'](_0x1d0ee3['query']);_0x24abec['filters']=_[_0x5215('0x33')](_0x24abec[_0x5215('0x37')],_0x24abec[_0x5215('0x30')]);_0x2a3543[_0x5215('0x34')]=_[_0x5215('0x33')](_0x24abec[_0x5215('0x37')],qs[_0x5215('0x35')](_0x1d0ee3['query']['fields']));_0x2a3543[_0x5215('0x34')]=_0x2a3543[_0x5215('0x34')][_0x5215('0x36')]?_0x2a3543[_0x5215('0x34')]:_0x24abec[_0x5215('0x37')];if(_0x1d0ee3[_0x5215('0x30')][_0x5215('0x46')]){_0x2a3543[_0x5215('0x42')]=[{'all':!![]}];}_0x2a3543=_[_0x5215('0x3d')]({},_0x2a3543,_0x1d0ee3[_0x5215('0x41')]);return db['SalesforceConfiguration'][_0x5215('0x47')](_0x2a3543)['then'](handleEntityNotFound(_0x423b6e,null))[_0x5215('0x26')](respondWithResult(_0x423b6e,null))['catch'](handleError(_0x423b6e,null));};exports[_0x5215('0x48')]=function(_0x38daa9,_0x126aa5){return db[_0x5215('0x2b')]['create'](_0x38daa9[_0x5215('0x49')],{})[_0x5215('0x26')](respondWithResult(_0x126aa5,0xc9))[_0x5215('0x4a')](handleError(_0x126aa5,null));};exports[_0x5215('0x25')]=function(_0x463b61,_0x5640dc){if(_0x463b61[_0x5215('0x49')]['id']){delete _0x463b61[_0x5215('0x49')]['id'];}return db[_0x5215('0x2b')][_0x5215('0x47')]({'where':{'id':_0x463b61[_0x5215('0x45')]['id']}})[_0x5215('0x26')](handleEntityNotFound(_0x5640dc,null))[_0x5215('0x26')](saveUpdates(_0x463b61['body'],null))[_0x5215('0x26')](respondWithResult(_0x5640dc,null))[_0x5215('0x4a')](handleError(_0x5640dc,null));};exports[_0x5215('0x27')]=function(_0x3566a0,_0x176e7b){return db[_0x5215('0x2b')][_0x5215('0x47')]({'where':{'id':_0x3566a0[_0x5215('0x45')]['id']}})['then'](handleEntityNotFound(_0x176e7b,null))[_0x5215('0x26')](removeEntity(_0x176e7b,null))[_0x5215('0x4a')](handleError(_0x176e7b,null));};exports[_0x5215('0x4b')]=function(_0x4384eb,_0x1b5088,_0x5d1979){var _0x553c84={};var _0x583c27={};var _0x4fea80;var _0x3e4309;return db[_0x5215('0x2b')][_0x5215('0x4c')]({'where':{'id':_0x4384eb['params']['id']}})[_0x5215('0x26')](handleEntityNotFound(_0x1b5088,null))[_0x5215('0x26')](function(_0x2dce20){if(_0x2dce20){_0x4fea80=_0x2dce20;_0x583c27[_0x5215('0x37')]=_[_0x5215('0x31')](db['SalesforceField'][_0x5215('0x2c')]);_0x583c27['query']=_['keys'](_0x4384eb[_0x5215('0x30')]);_0x583c27[_0x5215('0x32')]=_[_0x5215('0x33')](_0x583c27[_0x5215('0x37')],_0x583c27[_0x5215('0x30')]);_0x553c84[_0x5215('0x34')]=_['intersection'](_0x583c27[_0x5215('0x37')],qs['fields'](_0x4384eb[_0x5215('0x30')][_0x5215('0x35')]));_0x553c84[_0x5215('0x34')]=_0x553c84['attributes'][_0x5215('0x36')]?_0x553c84[_0x5215('0x34')]:_0x583c27[_0x5215('0x37')];_0x553c84[_0x5215('0x3a')]=qs[_0x5215('0x3b')](_0x4384eb[_0x5215('0x30')][_0x5215('0x3b')]);_0x553c84[_0x5215('0x3c')]=qs[_0x5215('0x32')](_['pick'](_0x4384eb[_0x5215('0x30')],_0x583c27[_0x5215('0x32')]));if(_0x4384eb['query'][_0x5215('0x40')]){_0x553c84[_0x5215('0x3c')]=_[_0x5215('0x3d')](_0x553c84[_0x5215('0x3c')],{'$or':_[_0x5215('0x3e')](_0x553c84[_0x5215('0x34')],function(_0x1da142){var _0x5768da={};_0x5768da[_0x1da142]={'$like':'%'+_0x4384eb[_0x5215('0x30')][_0x5215('0x40')]+'%'};return _0x5768da;})});}_0x553c84=_['merge']({},_0x553c84,_0x4384eb[_0x5215('0x41')]);return _0x4fea80[_0x5215('0x4b')](_0x553c84);}})[_0x5215('0x26')](function(_0x2747bc){if(_0x2747bc){_0x3e4309=_0x2747bc['length'];if(!_0x4384eb[_0x5215('0x30')][_0x5215('0x38')](_0x5215('0x39'))){_0x553c84[_0x5215('0x1e')]=qs[_0x5215('0x1e')](_0x4384eb[_0x5215('0x30')][_0x5215('0x1e')]);_0x553c84['offset']=qs['offset'](_0x4384eb['query']['offset']);}return _0x4fea80[_0x5215('0x4b')](_0x553c84);}})['then'](function(_0x344f16){if(_0x344f16){return _0x344f16?{'count':_0x3e4309,'rows':_0x344f16}:null;}})['then'](respondWithResult(_0x1b5088,null))[_0x5215('0x4a')](handleError(_0x1b5088,null));};exports[_0x5215('0x4d')]=function(_0x1ede12,_0x636ada,_0x45b727){var _0x11fdea={};var _0x579868={};var _0x22e07a;var _0x2500f0;return db[_0x5215('0x2b')][_0x5215('0x4c')]({'where':{'id':_0x1ede12['params']['id']}})[_0x5215('0x26')](handleEntityNotFound(_0x636ada,null))[_0x5215('0x26')](function(_0x3041ec){if(_0x3041ec){_0x22e07a=_0x3041ec;_0x579868[_0x5215('0x37')]=_[_0x5215('0x31')](db['SalesforceField'][_0x5215('0x2c')]);_0x579868[_0x5215('0x30')]=_[_0x5215('0x31')](_0x1ede12[_0x5215('0x30')]);_0x579868[_0x5215('0x32')]=_[_0x5215('0x33')](_0x579868[_0x5215('0x37')],_0x579868[_0x5215('0x30')]);_0x11fdea[_0x5215('0x34')]=_[_0x5215('0x33')](_0x579868[_0x5215('0x37')],qs[_0x5215('0x35')](_0x1ede12['query'][_0x5215('0x35')]));_0x11fdea[_0x5215('0x34')]=_0x11fdea[_0x5215('0x34')][_0x5215('0x36')]?_0x11fdea[_0x5215('0x34')]:_0x579868[_0x5215('0x37')];_0x11fdea[_0x5215('0x3a')]=qs[_0x5215('0x3b')](_0x1ede12['query']['sort']);_0x11fdea[_0x5215('0x3c')]=qs[_0x5215('0x32')](_[_0x5215('0x4e')](_0x1ede12[_0x5215('0x30')],_0x579868[_0x5215('0x32')]));if(_0x1ede12[_0x5215('0x30')][_0x5215('0x40')]){_0x11fdea[_0x5215('0x3c')]=_[_0x5215('0x3d')](_0x11fdea[_0x5215('0x3c')],{'$or':_[_0x5215('0x3e')](_0x11fdea[_0x5215('0x34')],function(_0x360c32){var _0x28d412={};_0x28d412[_0x360c32]={'$like':'%'+_0x1ede12[_0x5215('0x30')]['filter']+'%'};return _0x28d412;})});}_0x11fdea=_[_0x5215('0x3d')]({},_0x11fdea,_0x1ede12[_0x5215('0x41')]);return _0x22e07a[_0x5215('0x4d')](_0x11fdea);}})[_0x5215('0x26')](function(_0x1d5954){if(_0x1d5954){_0x2500f0=_0x1d5954['length'];if(!_0x1ede12[_0x5215('0x30')][_0x5215('0x38')](_0x5215('0x39'))){_0x11fdea[_0x5215('0x1e')]=qs['limit'](_0x1ede12[_0x5215('0x30')][_0x5215('0x1e')]);_0x11fdea['offset']=qs[_0x5215('0x1d')](_0x1ede12[_0x5215('0x30')][_0x5215('0x1d')]);}return _0x22e07a[_0x5215('0x4d')](_0x11fdea);}})['then'](function(_0x361d7c){if(_0x361d7c){return _0x361d7c?{'count':_0x2500f0,'rows':_0x361d7c}:null;}})[_0x5215('0x26')](respondWithResult(_0x636ada,null))['catch'](handleError(_0x636ada,null));};exports[_0x5215('0x4f')]=function(_0x2e403b,_0x36ea46,_0x529671){var _0x83a39={};var _0x41c9d5={};var _0x3e26f5;var _0x486d4a;return db[_0x5215('0x2b')][_0x5215('0x4c')]({'where':{'id':_0x2e403b[_0x5215('0x45')]['id']}})['then'](handleEntityNotFound(_0x36ea46,null))[_0x5215('0x26')](function(_0x3b3c94){if(_0x3b3c94){_0x3e26f5=_0x3b3c94;_0x41c9d5['model']=_[_0x5215('0x31')](db[_0x5215('0x50')][_0x5215('0x2c')]);_0x41c9d5['query']=_[_0x5215('0x31')](_0x2e403b[_0x5215('0x30')]);_0x41c9d5[_0x5215('0x32')]=_[_0x5215('0x33')](_0x41c9d5[_0x5215('0x37')],_0x41c9d5[_0x5215('0x30')]);_0x83a39[_0x5215('0x34')]=_['intersection'](_0x41c9d5[_0x5215('0x37')],qs[_0x5215('0x35')](_0x2e403b['query'][_0x5215('0x35')]));_0x83a39[_0x5215('0x34')]=_0x83a39[_0x5215('0x34')][_0x5215('0x36')]?_0x83a39[_0x5215('0x34')]:_0x41c9d5[_0x5215('0x37')];_0x83a39[_0x5215('0x3a')]=qs['sort'](_0x2e403b['query'][_0x5215('0x3b')]);_0x83a39[_0x5215('0x3c')]=qs[_0x5215('0x32')](_[_0x5215('0x4e')](_0x2e403b[_0x5215('0x30')],_0x41c9d5['filters']));if(_0x2e403b[_0x5215('0x30')]['filter']){_0x83a39['where']=_[_0x5215('0x3d')](_0x83a39[_0x5215('0x3c')],{'$or':_[_0x5215('0x3e')](_0x83a39[_0x5215('0x34')],function(_0x235c56){var _0x159b33={};_0x159b33[_0x235c56]={'$like':'%'+_0x2e403b[_0x5215('0x30')][_0x5215('0x40')]+'%'};return _0x159b33;})});}_0x83a39=_[_0x5215('0x3d')]({},_0x83a39,_0x2e403b['options']);return _0x3e26f5[_0x5215('0x4f')](_0x83a39);}})[_0x5215('0x26')](function(_0x5c67e5){if(_0x5c67e5){_0x486d4a=_0x5c67e5['length'];if(!_0x2e403b[_0x5215('0x30')][_0x5215('0x38')](_0x5215('0x39'))){_0x83a39[_0x5215('0x1e')]=qs['limit'](_0x2e403b[_0x5215('0x30')][_0x5215('0x1e')]);_0x83a39[_0x5215('0x1d')]=qs['offset'](_0x2e403b[_0x5215('0x30')]['offset']);}return _0x3e26f5[_0x5215('0x4f')](_0x83a39);}})[_0x5215('0x26')](function(_0x20b5ad){if(_0x20b5ad){return _0x20b5ad?{'count':_0x486d4a,'rows':_0x20b5ad}:null;}})[_0x5215('0x26')](respondWithResult(_0x36ea46,null))['catch'](handleError(_0x36ea46,null));};
\ No newline at end of file
+var _0x7dcc=['sort','pick','filter','merge','where','VIRTUAL','options','SalesforceConfiguration','includeAll','findAll','rows','catch','show','params','rawAttributes','length','include','find','body','getFields','findOne','SalesforceField','order','getSubjects','getDescriptions','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','count','offset','limit','set','Content-Range','apply','save','update','then','destroy','stack','name','send','map','fieldName','type','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit'];(function(_0x293c60,_0x90884d){var _0xbc3207=function(_0xf45d51){while(--_0xf45d51){_0x293c60['push'](_0x293c60['shift']());}};_0xbc3207(++_0x90884d);}(_0x7dcc,0xaf));var _0xc7dc=function(_0x1c208e,_0x2a0a5b){_0x1c208e=_0x1c208e-0x0;var _0x5104ff=_0x7dcc[_0x1c208e];return _0x5104ff;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc7dc('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc7dc('0x1'));var rp=require(_0xc7dc('0x2'));var moment=require(_0xc7dc('0x3'));var BPromise=require(_0xc7dc('0x4'));var Mustache=require(_0xc7dc('0x5'));var util=require(_0xc7dc('0x6'));var path=require(_0xc7dc('0x7'));var sox=require(_0xc7dc('0x8'));var csv=require(_0xc7dc('0x9'));var ejs=require(_0xc7dc('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xc7dc('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xc7dc('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xc7dc('0xc'));var qs=require(_0xc7dc('0xd'));var as=require(_0xc7dc('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc7dc('0xf'))('api');var utils=require(_0xc7dc('0x10'));var config=require(_0xc7dc('0x11'));var licenseUtil=require(_0xc7dc('0x12'));var db=require(_0xc7dc('0x13'))['db'];function respondWithStatusCode(_0x5d2ed2,_0x589062){_0x589062=_0x589062||0xcc;return function(_0x22d301){if(_0x22d301){return _0x5d2ed2[_0xc7dc('0x14')](_0x589062);}return _0x5d2ed2['status'](_0x589062)[_0xc7dc('0x15')]();};}function respondWithResult(_0x552aa6,_0x2f1b01){_0x2f1b01=_0x2f1b01||0xc8;return function(_0x2c30ad){if(_0x2c30ad){return _0x552aa6[_0xc7dc('0x16')](_0x2f1b01)[_0xc7dc('0x17')](_0x2c30ad);}};}function respondWithFilteredResult(_0x394878,_0x38e6db){return function(_0x10f8ac){if(_0x10f8ac){var _0x328c01=typeof _0x38e6db['offset']===_0xc7dc('0x18')&&typeof _0x38e6db['limit']===_0xc7dc('0x18');var _0x3728d0=_0x10f8ac[_0xc7dc('0x19')];var _0x538464=_0x328c01?0x0:_0x38e6db[_0xc7dc('0x1a')];var _0x3045e3=_0x328c01?_0x10f8ac[_0xc7dc('0x19')]:_0x38e6db[_0xc7dc('0x1a')]+_0x38e6db[_0xc7dc('0x1b')];var _0x356e2a;if(_0x3045e3>=_0x3728d0){_0x3045e3=_0x3728d0;_0x356e2a=0xc8;}else{_0x356e2a=0xce;}_0x394878['status'](_0x356e2a);return _0x394878[_0xc7dc('0x1c')](_0xc7dc('0x1d'),_0x538464+'-'+_0x3045e3+'/'+_0x3728d0)[_0xc7dc('0x17')](_0x10f8ac);}return null;};}function patchUpdates(_0xa74235){return function(_0xd1f171){try{jsonpatch[_0xc7dc('0x1e')](_0xd1f171,_0xa74235,!![]);}catch(_0xf4d54c){return BPromise['reject'](_0xf4d54c);}return _0xd1f171[_0xc7dc('0x1f')]();};}function saveUpdates(_0x4ff828,_0x1bf1fe){return function(_0x32d918){if(_0x32d918){return _0x32d918[_0xc7dc('0x20')](_0x4ff828)[_0xc7dc('0x21')](function(_0x252411){return _0x252411;});}return null;};}function removeEntity(_0x28b36a,_0x3320e1){return function(_0x4c42d6){if(_0x4c42d6){return _0x4c42d6[_0xc7dc('0x22')]()[_0xc7dc('0x21')](function(){_0x28b36a[_0xc7dc('0x16')](0xcc)[_0xc7dc('0x15')]();});}};}function handleEntityNotFound(_0x211fcf,_0x406f15){return function(_0x5e0dba){if(!_0x5e0dba){_0x211fcf[_0xc7dc('0x14')](0x194);}return _0x5e0dba;};}function handleError(_0x357eeb,_0x4589b3){_0x4589b3=_0x4589b3||0x1f4;return function(_0x4cc9f8){logger['error'](_0x4cc9f8[_0xc7dc('0x23')]);if(_0x4cc9f8['name']){delete _0x4cc9f8[_0xc7dc('0x24')];}_0x357eeb[_0xc7dc('0x16')](_0x4589b3)[_0xc7dc('0x25')](_0x4cc9f8);};}exports['index']=function(_0x582c72,_0x271db5){var _0x54505d={},_0x19cbea={},_0x428930={'count':0x0,'rows':[]};var _0x87e8a0=_[_0xc7dc('0x26')](db['SalesforceConfiguration']['rawAttributes'],function(_0x448878){return{'name':_0x448878[_0xc7dc('0x27')],'type':_0x448878[_0xc7dc('0x28')]['key']};});_0x19cbea[_0xc7dc('0x29')]=_['map'](_0x87e8a0,_0xc7dc('0x24'));_0x19cbea[_0xc7dc('0x2a')]=_[_0xc7dc('0x2b')](_0x582c72[_0xc7dc('0x2a')]);_0x19cbea[_0xc7dc('0x2c')]=_[_0xc7dc('0x2d')](_0x19cbea[_0xc7dc('0x29')],_0x19cbea[_0xc7dc('0x2a')]);_0x54505d['attributes']=_[_0xc7dc('0x2d')](_0x19cbea[_0xc7dc('0x29')],qs[_0xc7dc('0x2e')](_0x582c72[_0xc7dc('0x2a')]['fields']));_0x54505d['attributes']=_0x54505d[_0xc7dc('0x2f')]['length']?_0x54505d[_0xc7dc('0x2f')]:_0x19cbea[_0xc7dc('0x29')];if(!_0x582c72[_0xc7dc('0x2a')][_0xc7dc('0x30')](_0xc7dc('0x31'))){_0x54505d[_0xc7dc('0x1b')]=qs[_0xc7dc('0x1b')](_0x582c72['query']['limit']);_0x54505d[_0xc7dc('0x1a')]=qs[_0xc7dc('0x1a')](_0x582c72[_0xc7dc('0x2a')][_0xc7dc('0x1a')]);}_0x54505d['order']=qs['sort'](_0x582c72[_0xc7dc('0x2a')][_0xc7dc('0x32')]);_0x54505d['where']=qs[_0xc7dc('0x2c')](_[_0xc7dc('0x33')](_0x582c72[_0xc7dc('0x2a')],_0x19cbea[_0xc7dc('0x2c')]),_0x87e8a0);if(_0x582c72[_0xc7dc('0x2a')][_0xc7dc('0x34')]){_0x54505d['where']=_[_0xc7dc('0x35')](_0x54505d[_0xc7dc('0x36')],{'$or':_[_0xc7dc('0x26')](_0x87e8a0,function(_0x489db1){if(_0x489db1['type']!==_0xc7dc('0x37')){var _0x13b0c3={};_0x13b0c3[_0x489db1[_0xc7dc('0x24')]]={'$like':'%'+_0x582c72[_0xc7dc('0x2a')]['filter']+'%'};return _0x13b0c3;}})});}_0x54505d=_['merge']({},_0x54505d,_0x582c72[_0xc7dc('0x38')]);var _0x3e3f63={'where':_0x54505d[_0xc7dc('0x36')]};return db[_0xc7dc('0x39')][_0xc7dc('0x19')](_0x3e3f63)[_0xc7dc('0x21')](function(_0x78d43e){_0x428930['count']=_0x78d43e;if(_0x582c72[_0xc7dc('0x2a')][_0xc7dc('0x3a')]){_0x54505d['include']=[{'all':!![]}];}return db['SalesforceConfiguration'][_0xc7dc('0x3b')](_0x54505d);})[_0xc7dc('0x21')](function(_0x51bc07){_0x428930[_0xc7dc('0x3c')]=_0x51bc07;return _0x428930;})['then'](respondWithFilteredResult(_0x271db5,_0x54505d))[_0xc7dc('0x3d')](handleError(_0x271db5,null));};exports[_0xc7dc('0x3e')]=function(_0x434a61,_0xc355c3){var _0x481517={'raw':![],'where':{'id':_0x434a61[_0xc7dc('0x3f')]['id']}},_0x534de6={};_0x534de6['model']=_['keys'](db[_0xc7dc('0x39')][_0xc7dc('0x40')]);_0x534de6[_0xc7dc('0x2a')]=_['keys'](_0x434a61[_0xc7dc('0x2a')]);_0x534de6['filters']=_[_0xc7dc('0x2d')](_0x534de6[_0xc7dc('0x29')],_0x534de6[_0xc7dc('0x2a')]);_0x481517[_0xc7dc('0x2f')]=_[_0xc7dc('0x2d')](_0x534de6[_0xc7dc('0x29')],qs[_0xc7dc('0x2e')](_0x434a61[_0xc7dc('0x2a')][_0xc7dc('0x2e')]));_0x481517['attributes']=_0x481517[_0xc7dc('0x2f')][_0xc7dc('0x41')]?_0x481517['attributes']:_0x534de6[_0xc7dc('0x29')];if(_0x434a61[_0xc7dc('0x2a')][_0xc7dc('0x3a')]){_0x481517[_0xc7dc('0x42')]=[{'all':!![]}];}_0x481517=_[_0xc7dc('0x35')]({},_0x481517,_0x434a61['options']);return db[_0xc7dc('0x39')][_0xc7dc('0x43')](_0x481517)['then'](handleEntityNotFound(_0xc355c3,null))['then'](respondWithResult(_0xc355c3,null))[_0xc7dc('0x3d')](handleError(_0xc355c3,null));};exports['create']=function(_0x3ffda2,_0x41bfae){return db[_0xc7dc('0x39')]['create'](_0x3ffda2[_0xc7dc('0x44')],{})[_0xc7dc('0x21')](respondWithResult(_0x41bfae,0xc9))[_0xc7dc('0x3d')](handleError(_0x41bfae,null));};exports['update']=function(_0x4f9a35,_0x46b75e){if(_0x4f9a35[_0xc7dc('0x44')]['id']){delete _0x4f9a35[_0xc7dc('0x44')]['id'];}return db[_0xc7dc('0x39')]['find']({'where':{'id':_0x4f9a35[_0xc7dc('0x3f')]['id']}})[_0xc7dc('0x21')](handleEntityNotFound(_0x46b75e,null))[_0xc7dc('0x21')](saveUpdates(_0x4f9a35[_0xc7dc('0x44')],null))[_0xc7dc('0x21')](respondWithResult(_0x46b75e,null))[_0xc7dc('0x3d')](handleError(_0x46b75e,null));};exports['destroy']=function(_0x1212ee,_0x14df4e){return db[_0xc7dc('0x39')]['find']({'where':{'id':_0x1212ee['params']['id']}})[_0xc7dc('0x21')](handleEntityNotFound(_0x14df4e,null))[_0xc7dc('0x21')](removeEntity(_0x14df4e,null))['catch'](handleError(_0x14df4e,null));};exports[_0xc7dc('0x45')]=function(_0x311d1b,_0xdb8eb7,_0x490154){var _0x550741={};var _0x17bf4c={};var _0x22f230;var _0x25e7f1;return db[_0xc7dc('0x39')][_0xc7dc('0x46')]({'where':{'id':_0x311d1b[_0xc7dc('0x3f')]['id']}})['then'](handleEntityNotFound(_0xdb8eb7,null))[_0xc7dc('0x21')](function(_0x25a5b7){if(_0x25a5b7){_0x22f230=_0x25a5b7;_0x17bf4c[_0xc7dc('0x29')]=_[_0xc7dc('0x2b')](db[_0xc7dc('0x47')][_0xc7dc('0x40')]);_0x17bf4c['query']=_[_0xc7dc('0x2b')](_0x311d1b[_0xc7dc('0x2a')]);_0x17bf4c[_0xc7dc('0x2c')]=_[_0xc7dc('0x2d')](_0x17bf4c['model'],_0x17bf4c[_0xc7dc('0x2a')]);_0x550741[_0xc7dc('0x2f')]=_[_0xc7dc('0x2d')](_0x17bf4c[_0xc7dc('0x29')],qs[_0xc7dc('0x2e')](_0x311d1b['query'][_0xc7dc('0x2e')]));_0x550741[_0xc7dc('0x2f')]=_0x550741[_0xc7dc('0x2f')][_0xc7dc('0x41')]?_0x550741[_0xc7dc('0x2f')]:_0x17bf4c[_0xc7dc('0x29')];_0x550741[_0xc7dc('0x48')]=qs['sort'](_0x311d1b[_0xc7dc('0x2a')][_0xc7dc('0x32')]);_0x550741[_0xc7dc('0x36')]=qs[_0xc7dc('0x2c')](_[_0xc7dc('0x33')](_0x311d1b[_0xc7dc('0x2a')],_0x17bf4c[_0xc7dc('0x2c')]));if(_0x311d1b[_0xc7dc('0x2a')][_0xc7dc('0x34')]){_0x550741[_0xc7dc('0x36')]=_[_0xc7dc('0x35')](_0x550741['where'],{'$or':_[_0xc7dc('0x26')](_0x550741['attributes'],function(_0x490eee){var _0x341cb9={};_0x341cb9[_0x490eee]={'$like':'%'+_0x311d1b[_0xc7dc('0x2a')]['filter']+'%'};return _0x341cb9;})});}_0x550741=_[_0xc7dc('0x35')]({},_0x550741,_0x311d1b['options']);return _0x22f230['getFields'](_0x550741);}})['then'](function(_0x48cd04){if(_0x48cd04){_0x25e7f1=_0x48cd04['length'];if(!_0x311d1b[_0xc7dc('0x2a')][_0xc7dc('0x30')]('nolimit')){_0x550741[_0xc7dc('0x1b')]=qs[_0xc7dc('0x1b')](_0x311d1b['query']['limit']);_0x550741[_0xc7dc('0x1a')]=qs[_0xc7dc('0x1a')](_0x311d1b['query'][_0xc7dc('0x1a')]);}return _0x22f230['getFields'](_0x550741);}})['then'](function(_0x3f5613){if(_0x3f5613){return _0x3f5613?{'count':_0x25e7f1,'rows':_0x3f5613}:null;}})[_0xc7dc('0x21')](respondWithResult(_0xdb8eb7,null))[_0xc7dc('0x3d')](handleError(_0xdb8eb7,null));};exports[_0xc7dc('0x49')]=function(_0x4e8650,_0x271752,_0x503544){var _0x577504={};var _0x40a86c={};var _0x34b3f2;var _0x43b062;return db[_0xc7dc('0x39')][_0xc7dc('0x46')]({'where':{'id':_0x4e8650['params']['id']}})['then'](handleEntityNotFound(_0x271752,null))[_0xc7dc('0x21')](function(_0x317680){if(_0x317680){_0x34b3f2=_0x317680;_0x40a86c['model']=_[_0xc7dc('0x2b')](db['SalesforceField']['rawAttributes']);_0x40a86c[_0xc7dc('0x2a')]=_[_0xc7dc('0x2b')](_0x4e8650[_0xc7dc('0x2a')]);_0x40a86c['filters']=_[_0xc7dc('0x2d')](_0x40a86c[_0xc7dc('0x29')],_0x40a86c[_0xc7dc('0x2a')]);_0x577504['attributes']=_[_0xc7dc('0x2d')](_0x40a86c[_0xc7dc('0x29')],qs['fields'](_0x4e8650['query'][_0xc7dc('0x2e')]));_0x577504[_0xc7dc('0x2f')]=_0x577504[_0xc7dc('0x2f')][_0xc7dc('0x41')]?_0x577504[_0xc7dc('0x2f')]:_0x40a86c['model'];_0x577504[_0xc7dc('0x48')]=qs[_0xc7dc('0x32')](_0x4e8650[_0xc7dc('0x2a')]['sort']);_0x577504[_0xc7dc('0x36')]=qs[_0xc7dc('0x2c')](_[_0xc7dc('0x33')](_0x4e8650['query'],_0x40a86c[_0xc7dc('0x2c')]));if(_0x4e8650[_0xc7dc('0x2a')][_0xc7dc('0x34')]){_0x577504[_0xc7dc('0x36')]=_[_0xc7dc('0x35')](_0x577504[_0xc7dc('0x36')],{'$or':_['map'](_0x577504[_0xc7dc('0x2f')],function(_0x5bb15d){var _0x9d8215={};_0x9d8215[_0x5bb15d]={'$like':'%'+_0x4e8650[_0xc7dc('0x2a')][_0xc7dc('0x34')]+'%'};return _0x9d8215;})});}_0x577504=_['merge']({},_0x577504,_0x4e8650['options']);return _0x34b3f2[_0xc7dc('0x49')](_0x577504);}})[_0xc7dc('0x21')](function(_0x562636){if(_0x562636){_0x43b062=_0x562636[_0xc7dc('0x41')];if(!_0x4e8650['query'][_0xc7dc('0x30')](_0xc7dc('0x31'))){_0x577504[_0xc7dc('0x1b')]=qs['limit'](_0x4e8650['query'][_0xc7dc('0x1b')]);_0x577504[_0xc7dc('0x1a')]=qs[_0xc7dc('0x1a')](_0x4e8650['query'][_0xc7dc('0x1a')]);}return _0x34b3f2[_0xc7dc('0x49')](_0x577504);}})['then'](function(_0x3b694b){if(_0x3b694b){return _0x3b694b?{'count':_0x43b062,'rows':_0x3b694b}:null;}})[_0xc7dc('0x21')](respondWithResult(_0x271752,null))[_0xc7dc('0x3d')](handleError(_0x271752,null));};exports['getDescriptions']=function(_0x51a4a7,_0x501f6c,_0x1dbb30){var _0x19aa95={};var _0x55cf67={};var _0x4a2c16;var _0x16bb54;return db['SalesforceConfiguration'][_0xc7dc('0x46')]({'where':{'id':_0x51a4a7['params']['id']}})[_0xc7dc('0x21')](handleEntityNotFound(_0x501f6c,null))[_0xc7dc('0x21')](function(_0x2bc35c){if(_0x2bc35c){_0x4a2c16=_0x2bc35c;_0x55cf67[_0xc7dc('0x29')]=_['keys'](db[_0xc7dc('0x47')][_0xc7dc('0x40')]);_0x55cf67[_0xc7dc('0x2a')]=_[_0xc7dc('0x2b')](_0x51a4a7['query']);_0x55cf67[_0xc7dc('0x2c')]=_[_0xc7dc('0x2d')](_0x55cf67[_0xc7dc('0x29')],_0x55cf67[_0xc7dc('0x2a')]);_0x19aa95[_0xc7dc('0x2f')]=_['intersection'](_0x55cf67['model'],qs[_0xc7dc('0x2e')](_0x51a4a7[_0xc7dc('0x2a')]['fields']));_0x19aa95[_0xc7dc('0x2f')]=_0x19aa95['attributes']['length']?_0x19aa95[_0xc7dc('0x2f')]:_0x55cf67[_0xc7dc('0x29')];_0x19aa95[_0xc7dc('0x48')]=qs['sort'](_0x51a4a7[_0xc7dc('0x2a')][_0xc7dc('0x32')]);_0x19aa95[_0xc7dc('0x36')]=qs['filters'](_['pick'](_0x51a4a7[_0xc7dc('0x2a')],_0x55cf67[_0xc7dc('0x2c')]));if(_0x51a4a7[_0xc7dc('0x2a')][_0xc7dc('0x34')]){_0x19aa95[_0xc7dc('0x36')]=_['merge'](_0x19aa95['where'],{'$or':_[_0xc7dc('0x26')](_0x19aa95[_0xc7dc('0x2f')],function(_0x268afb){var _0x18295e={};_0x18295e[_0x268afb]={'$like':'%'+_0x51a4a7['query'][_0xc7dc('0x34')]+'%'};return _0x18295e;})});}_0x19aa95=_[_0xc7dc('0x35')]({},_0x19aa95,_0x51a4a7[_0xc7dc('0x38')]);return _0x4a2c16[_0xc7dc('0x4a')](_0x19aa95);}})[_0xc7dc('0x21')](function(_0x475ac9){if(_0x475ac9){_0x16bb54=_0x475ac9[_0xc7dc('0x41')];if(!_0x51a4a7[_0xc7dc('0x2a')][_0xc7dc('0x30')](_0xc7dc('0x31'))){_0x19aa95[_0xc7dc('0x1b')]=qs[_0xc7dc('0x1b')](_0x51a4a7[_0xc7dc('0x2a')]['limit']);_0x19aa95[_0xc7dc('0x1a')]=qs[_0xc7dc('0x1a')](_0x51a4a7[_0xc7dc('0x2a')][_0xc7dc('0x1a')]);}return _0x4a2c16[_0xc7dc('0x4a')](_0x19aa95);}})['then'](function(_0x5dff0f){if(_0x5dff0f){return _0x5dff0f?{'count':_0x16bb54,'rows':_0x5dff0f}:null;}})['then'](respondWithResult(_0x501f6c,null))[_0xc7dc('0x3d')](handleError(_0x501f6c,null));};
\ No newline at end of file
index 44ca2ab..ee904b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x027e=['lodash','moment','bluebird','request-promise','rimraf','exports','int_salesforce_configurations'];(function(_0x6bb8ca,_0x1b4019){var _0x5f4bf5=function(_0x336fea){while(--_0x336fea){_0x6bb8ca['push'](_0x6bb8ca['shift']());}};_0x5f4bf5(++_0x1b4019);}(_0x027e,0x126));var _0xe027=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0x027e[_0x9aada2];return _0x196dff;};'use strict';var _=require(_0xe027('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xe027('0x1'));var BPromise=require(_0xe027('0x2'));var rp=require(_0xe027('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe027('0x4'));var config=require('../../config/environment');var attributes=require('./intSalesforceConfiguration.attributes');module[_0xe027('0x5')]=function(_0x413ad0,_0xfba115){return _0x413ad0['define']('SalesforceConfiguration',attributes,{'tableName':_0xe027('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x63c4=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intSalesforceConfiguration.attributes','exports','SalesforceConfiguration','int_salesforce_configurations','lodash'];(function(_0x274e0f,_0x210add){var _0x46e604=function(_0x5427c2){while(--_0x5427c2){_0x274e0f['push'](_0x274e0f['shift']());}};_0x46e604(++_0x210add);}(_0x63c4,0x1c6));var _0x463c=function(_0x300bc0,_0x4a0b89){_0x300bc0=_0x300bc0-0x0;var _0xe6236=_0x63c4[_0x300bc0];return _0xe6236;};'use strict';var _=require(_0x463c('0x0'));var util=require(_0x463c('0x1'));var logger=require(_0x463c('0x2'))(_0x463c('0x3'));var moment=require(_0x463c('0x4'));var BPromise=require(_0x463c('0x5'));var rp=require(_0x463c('0x6'));var fs=require('fs');var path=require(_0x463c('0x7'));var rimraf=require(_0x463c('0x8'));var config=require('../../config/environment');var attributes=require(_0x463c('0x9'));module[_0x463c('0xa')]=function(_0x2bbd26,_0x34c171){return _0x2bbd26['define'](_0x463c('0xb'),attributes,{'tableName':_0x463c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index aa4e098..b472c2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0da3=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','SalesforceConfiguration,\x20%s,\x20%s','error','code','message','info','catch','lodash','util','bluebird'];(function(_0x9861ff,_0x41fb17){var _0x48852b=function(_0x557001){while(--_0x557001){_0x9861ff['push'](_0x9861ff['shift']());}};_0x48852b(++_0x41fb17);}(_0x0da3,0x1b2));var _0x30da=function(_0x128e1f,_0x1e4f0c){_0x128e1f=_0x128e1f-0x0;var _0x14132f=_0x0da3[_0x128e1f];return _0x14132f;};'use strict';var _=require(_0x30da('0x0'));var util=require(_0x30da('0x1'));var moment=require('moment');var BPromise=require(_0x30da('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x30da('0x3'));var db=require(_0x30da('0x4'))['db'];var utils=require(_0x30da('0x5'));var logger=require(_0x30da('0x6'))(_0x30da('0x7'));var config=require(_0x30da('0x8'));var jayson=require(_0x30da('0x9'));var client=jayson[_0x30da('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5763cc,_0x39111c,_0x52037a){return new BPromise(function(_0x2042bd,_0x3d6962){return client[_0x30da('0xb')](_0x5763cc,_0x52037a)[_0x30da('0xc')](function(_0x8526c1){logger['info'](_0x30da('0xd'),_0x39111c,'request\x20sent');logger['debug']('SalesforceConfiguration,\x20%s,\x20%s,\x20%s',_0x39111c,'request\x20sent',JSON['stringify'](_0x8526c1));if(_0x8526c1[_0x30da('0xe')]){if(_0x8526c1['error'][_0x30da('0xf')]===0x1f4){logger[_0x30da('0xe')]('SalesforceConfiguration,\x20%s,\x20%s',_0x39111c,_0x8526c1[_0x30da('0xe')][_0x30da('0x10')]);return _0x3d6962(_0x8526c1[_0x30da('0xe')]['message']);}logger[_0x30da('0xe')](_0x30da('0xd'),_0x39111c,_0x8526c1[_0x30da('0xe')][_0x30da('0x10')]);return _0x2042bd(_0x8526c1[_0x30da('0xe')][_0x30da('0x10')]);}else{logger[_0x30da('0x11')](_0x30da('0xd'),_0x39111c,'request\x20sent');_0x2042bd(_0x8526c1['result'][_0x30da('0x10')]);}})[_0x30da('0x12')](function(_0x34a7f7){logger[_0x30da('0xe')]('SalesforceConfiguration,\x20%s,\x20%s',_0x39111c,_0x34a7f7);_0x3d6962(_0x34a7f7);});});}
\ No newline at end of file
+var _0x19b3=['request\x20sent','debug','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','client','request','then','info','SalesforceConfiguration,\x20%s,\x20%s'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x19b3,0x197));var _0x319b=function(_0x381d3c,_0x4bc7d0){_0x381d3c=_0x381d3c-0x0;var _0x12542e=_0x19b3[_0x381d3c];return _0x12542e;};'use strict';var _=require(_0x319b('0x0'));var util=require('util');var moment=require(_0x319b('0x1'));var BPromise=require(_0x319b('0x2'));var rs=require(_0x319b('0x3'));var fs=require('fs');var Redis=require(_0x319b('0x4'));var db=require(_0x319b('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x319b('0x6'));var config=require(_0x319b('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x319b('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2ae1a8,_0x471716,_0x2f8798){return new BPromise(function(_0x5bc782,_0x656bf3){return client[_0x319b('0x9')](_0x2ae1a8,_0x2f8798)[_0x319b('0xa')](function(_0x536f4b){logger[_0x319b('0xb')](_0x319b('0xc'),_0x471716,_0x319b('0xd'));logger[_0x319b('0xe')]('SalesforceConfiguration,\x20%s,\x20%s,\x20%s',_0x471716,_0x319b('0xd'),JSON[_0x319b('0xf')](_0x536f4b));if(_0x536f4b[_0x319b('0x10')]){if(_0x536f4b[_0x319b('0x10')]['code']===0x1f4){logger[_0x319b('0x10')]('SalesforceConfiguration,\x20%s,\x20%s',_0x471716,_0x536f4b[_0x319b('0x10')][_0x319b('0x11')]);return _0x656bf3(_0x536f4b[_0x319b('0x10')]['message']);}logger[_0x319b('0x10')](_0x319b('0xc'),_0x471716,_0x536f4b[_0x319b('0x10')][_0x319b('0x11')]);return _0x5bc782(_0x536f4b[_0x319b('0x10')][_0x319b('0x11')]);}else{logger[_0x319b('0xb')](_0x319b('0xc'),_0x471716,_0x319b('0xd'));_0x5bc782(_0x536f4b[_0x319b('0x12')]['message']);}})[_0x319b('0x13')](function(_0x111895){logger['error']('SalesforceConfiguration,\x20%s,\x20%s',_0x471716,_0x111895);_0x656bf3(_0x111895);});});}
\ No newline at end of file
index d13cd3f..8fa90a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x755d=['fs-extra','../../config/environment','./intSalesforceField.controller','get','isAuthenticated','index','/:id','update','destroy','exports','multer','path','express','Router'];(function(_0x45e281,_0x1ee3e4){var _0x204b8b=function(_0x47be49){while(--_0x47be49){_0x45e281['push'](_0x45e281['shift']());}};_0x204b8b(++_0x1ee3e4);}(_0x755d,0xb2));var _0xd755=function(_0x37a7c6,_0x3a84b6){_0x37a7c6=_0x37a7c6-0x0;var _0x539905=_0x755d[_0x37a7c6];return _0x539905;};'use strict';var multer=require(_0xd755('0x0'));var util=require('util');var path=require(_0xd755('0x1'));var timeout=require('connect-timeout');var express=require(_0xd755('0x2'));var router=express[_0xd755('0x3')]();var fs_extra=require(_0xd755('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xd755('0x5'));var controller=require(_0xd755('0x6'));router[_0xd755('0x7')]('/',auth[_0xd755('0x8')](),controller[_0xd755('0x9')]);router[_0xd755('0x7')](_0xd755('0xa'),auth[_0xd755('0x8')](),controller['show']);router['post']('/',auth[_0xd755('0x8')](),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller[_0xd755('0xb')]);router['delete'](_0xd755('0xa'),auth[_0xd755('0x8')](),controller[_0xd755('0xc')]);module[_0xd755('0xd')]=router;
\ No newline at end of file
+var _0x2d5c=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceField.controller','isAuthenticated','get','/:id','show','create','put','update','delete','exports','multer','util','path','connect-timeout','Router'];(function(_0x2cf714,_0x4c03d1){var _0x135a2a=function(_0x41a1aa){while(--_0x41a1aa){_0x2cf714['push'](_0x2cf714['shift']());}};_0x135a2a(++_0x4c03d1);}(_0x2d5c,0x79));var _0xc2d5=function(_0x1e88b0,_0x24abb1){_0x1e88b0=_0x1e88b0-0x0;var _0x5575ec=_0x2d5c[_0x1e88b0];return _0x5575ec;};'use strict';var multer=require(_0xc2d5('0x0'));var util=require(_0xc2d5('0x1'));var path=require(_0xc2d5('0x2'));var timeout=require(_0xc2d5('0x3'));var express=require('express');var router=express[_0xc2d5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xc2d5('0x5'));var interaction=require(_0xc2d5('0x6'));var config=require(_0xc2d5('0x7'));var controller=require(_0xc2d5('0x8'));router['get']('/',auth[_0xc2d5('0x9')](),controller['index']);router[_0xc2d5('0xa')](_0xc2d5('0xb'),auth['isAuthenticated'](),controller[_0xc2d5('0xc')]);router['post']('/',auth[_0xc2d5('0x9')](),controller[_0xc2d5('0xd')]);router[_0xc2d5('0xe')](_0xc2d5('0xb'),auth[_0xc2d5('0x9')](),controller[_0xc2d5('0xf')]);router[_0xc2d5('0x10')]('/:id',auth[_0xc2d5('0x9')](),controller['destroy']);module[_0xc2d5('0x11')]=router;
\ No newline at end of file
index c051890..cdf2f2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52e2=['ENUM','customVariable','keyValue','STRING','sequelize','exports'];(function(_0x1caf6a,_0x26a5bf){var _0x1bf493=function(_0x3982f5){while(--_0x3982f5){_0x1caf6a['push'](_0x1caf6a['shift']());}};_0x1bf493(++_0x26a5bf);}(_0x52e2,0xca));var _0x252e=function(_0x20c260,_0x19a98e){_0x20c260=_0x20c260-0x0;var _0x6e0a59=_0x52e2[_0x20c260];return _0x6e0a59;};'use strict';var Sequelize=require(_0x252e('0x0'));module[_0x252e('0x1')]={'type':{'type':Sequelize[_0x252e('0x2')]('string','variable',_0x252e('0x3'),_0x252e('0x4'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x252e('0x2')]('string','variable','customVariable')},'keyContent':{'type':Sequelize[_0x252e('0x5')]},'idField':{'type':Sequelize['STRING']},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x1835=['sequelize','exports','ENUM','string','variable','customVariable','keyValue','STRING'];(function(_0x50c7d6,_0x43aaed){var _0x4e1b11=function(_0x247a15){while(--_0x247a15){_0x50c7d6['push'](_0x50c7d6['shift']());}};_0x4e1b11(++_0x43aaed);}(_0x1835,0xb8));var _0x5183=function(_0x126864,_0xc9de80){_0x126864=_0x126864-0x0;var _0x5a6bd5=_0x1835[_0x126864];return _0x5a6bd5;};'use strict';var Sequelize=require(_0x5183('0x0'));module[_0x5183('0x1')]={'type':{'type':Sequelize[_0x5183('0x2')](_0x5183('0x3'),_0x5183('0x4'),_0x5183('0x5'),_0x5183('0x6'),'picklist'),'defaultValue':_0x5183('0x3')},'content':{'type':Sequelize[_0x5183('0x7')]},'key':{'type':Sequelize[_0x5183('0x7')]},'keyType':{'type':Sequelize[_0x5183('0x2')]('string','variable',_0x5183('0x5'))},'keyContent':{'type':Sequelize[_0x5183('0x7')]},'idField':{'type':Sequelize[_0x5183('0x7')]},'variableName':{'type':Sequelize[_0x5183('0x7')]}};
\ No newline at end of file
index 0fe86e6..390f147 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe0b=['type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','SalesforceField','includeAll','include','findAll','show','merge','options','catch','create','body','find','params','eml-format','rimraf','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','then','end','stack','name','send','index','map','rawAttributes','fieldName'];(function(_0x2b49dd,_0x5c06ff){var _0x758949=function(_0x230e86){while(--_0x230e86){_0x2b49dd['push'](_0x2b49dd['shift']());}};_0x758949(++_0x5c06ff);}(_0xbe0b,0x1c5));var _0xbbe0=function(_0x7f91f8,_0x45e91b){_0x7f91f8=_0x7f91f8-0x0;var _0x49eb21=_0xbe0b[_0x7f91f8];return _0x49eb21;};'use strict';var emlformat=require(_0xbbe0('0x0'));var rimraf=require(_0xbbe0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xbbe0('0x2'));var BPromise=require(_0xbbe0('0x3'));var Mustache=require(_0xbbe0('0x4'));var util=require(_0xbbe0('0x5'));var path=require(_0xbbe0('0x6'));var sox=require('sox');var csv=require(_0xbbe0('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbbe0('0x8'));var _=require(_0xbbe0('0x9'));var squel=require(_0xbbe0('0xa'));var crypto=require(_0xbbe0('0xb'));var jsforce=require(_0xbbe0('0xc'));var deskjs=require(_0xbbe0('0xd'));var toCsv=require(_0xbbe0('0x7'));var querystring=require(_0xbbe0('0xe'));var Papa=require('papaparse');var Redis=require(_0xbbe0('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xbbe0('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xbbe0('0x11'))(_0xbbe0('0x12'));var utils=require(_0xbbe0('0x13'));var config=require(_0xbbe0('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xbbe0('0x15'))['db'];function respondWithStatusCode(_0x2ee01d,_0x4e11ea){_0x4e11ea=_0x4e11ea||0xcc;return function(_0x3809e2){if(_0x3809e2){return _0x2ee01d[_0xbbe0('0x16')](_0x4e11ea);}return _0x2ee01d[_0xbbe0('0x17')](_0x4e11ea)['end']();};}function respondWithResult(_0x33d348,_0x3a02f2){_0x3a02f2=_0x3a02f2||0xc8;return function(_0x390444){if(_0x390444){return _0x33d348[_0xbbe0('0x17')](_0x3a02f2)['json'](_0x390444);}};}function respondWithFilteredResult(_0xd78fa1,_0x67842d){return function(_0x37d7ba){if(_0x37d7ba){var _0x40add6=typeof _0x67842d['offset']===_0xbbe0('0x18')&&typeof _0x67842d[_0xbbe0('0x19')]===_0xbbe0('0x18');var _0x21751f=_0x37d7ba[_0xbbe0('0x1a')];var _0x3a85d6=_0x40add6?0x0:_0x67842d[_0xbbe0('0x1b')];var _0x2a551b=_0x40add6?_0x37d7ba[_0xbbe0('0x1a')]:_0x67842d[_0xbbe0('0x1b')]+_0x67842d[_0xbbe0('0x19')];var _0x43a763;if(_0x2a551b>=_0x21751f){_0x2a551b=_0x21751f;_0x43a763=0xc8;}else{_0x43a763=0xce;}_0xd78fa1['status'](_0x43a763);return _0xd78fa1[_0xbbe0('0x1c')](_0xbbe0('0x1d'),_0x3a85d6+'-'+_0x2a551b+'/'+_0x21751f)[_0xbbe0('0x1e')](_0x37d7ba);}return null;};}function patchUpdates(_0x4f010b){return function(_0x3e5292){try{jsonpatch[_0xbbe0('0x1f')](_0x3e5292,_0x4f010b,!![]);}catch(_0x21b8da){return BPromise[_0xbbe0('0x20')](_0x21b8da);}return _0x3e5292[_0xbbe0('0x21')]();};}function saveUpdates(_0x9746a6,_0x54be22){return function(_0x4ff00c){if(_0x4ff00c){return _0x4ff00c[_0xbbe0('0x22')](_0x9746a6)[_0xbbe0('0x23')](function(_0x37a3e3){return _0x37a3e3;});}return null;};}function removeEntity(_0x320600,_0x557803){return function(_0x5afc44){if(_0x5afc44){return _0x5afc44['destroy']()[_0xbbe0('0x23')](function(){_0x320600['status'](0xcc)[_0xbbe0('0x24')]();});}};}function handleEntityNotFound(_0x25231c,_0x5eebeb){return function(_0x254704){if(!_0x254704){_0x25231c[_0xbbe0('0x16')](0x194);}return _0x254704;};}function handleError(_0x50f8ee,_0xb637fe){_0xb637fe=_0xb637fe||0x1f4;return function(_0x15643a){logger['error'](_0x15643a[_0xbbe0('0x25')]);if(_0x15643a['name']){delete _0x15643a[_0xbbe0('0x26')];}_0x50f8ee[_0xbbe0('0x17')](_0xb637fe)[_0xbbe0('0x27')](_0x15643a);};}exports[_0xbbe0('0x28')]=function(_0xff99e5,_0x2c14e1){var _0x286d8b={},_0x5a5ac4={},_0x1b0f8a={'count':0x0,'rows':[]};var _0x4c7f65=_[_0xbbe0('0x29')](db['SalesforceField'][_0xbbe0('0x2a')],function(_0x5904e5){return{'name':_0x5904e5[_0xbbe0('0x2b')],'type':_0x5904e5[_0xbbe0('0x2c')]['key']};});_0x5a5ac4['model']=_[_0xbbe0('0x29')](_0x4c7f65,_0xbbe0('0x26'));_0x5a5ac4[_0xbbe0('0x2d')]=_[_0xbbe0('0x2e')](_0xff99e5['query']);_0x5a5ac4[_0xbbe0('0x2f')]=_[_0xbbe0('0x30')](_0x5a5ac4[_0xbbe0('0x31')],_0x5a5ac4[_0xbbe0('0x2d')]);_0x286d8b[_0xbbe0('0x32')]=_[_0xbbe0('0x30')](_0x5a5ac4[_0xbbe0('0x31')],qs['fields'](_0xff99e5[_0xbbe0('0x2d')][_0xbbe0('0x33')]));_0x286d8b[_0xbbe0('0x32')]=_0x286d8b[_0xbbe0('0x32')][_0xbbe0('0x34')]?_0x286d8b['attributes']:_0x5a5ac4[_0xbbe0('0x31')];if(!_0xff99e5[_0xbbe0('0x2d')][_0xbbe0('0x35')](_0xbbe0('0x36'))){_0x286d8b['limit']=qs[_0xbbe0('0x19')](_0xff99e5[_0xbbe0('0x2d')][_0xbbe0('0x19')]);_0x286d8b[_0xbbe0('0x1b')]=qs[_0xbbe0('0x1b')](_0xff99e5[_0xbbe0('0x2d')]['offset']);}_0x286d8b[_0xbbe0('0x37')]=qs['sort'](_0xff99e5[_0xbbe0('0x2d')][_0xbbe0('0x38')]);_0x286d8b['where']=qs['filters'](_['pick'](_0xff99e5[_0xbbe0('0x2d')],_0x5a5ac4[_0xbbe0('0x2f')]),_0x4c7f65);if(_0xff99e5[_0xbbe0('0x2d')][_0xbbe0('0x39')]){_0x286d8b['where']=_['merge'](_0x286d8b['where'],{'$or':_[_0xbbe0('0x29')](_0x4c7f65,function(_0x2a0048){if(_0x2a0048[_0xbbe0('0x2c')]!=='VIRTUAL'){var _0x5bf62d={};_0x5bf62d[_0x2a0048[_0xbbe0('0x26')]]={'$like':'%'+_0xff99e5[_0xbbe0('0x2d')]['filter']+'%'};return _0x5bf62d;}})});}_0x286d8b=_['merge']({},_0x286d8b,_0xff99e5['options']);var _0x106e50={'where':_0x286d8b[_0xbbe0('0x3a')]};return db[_0xbbe0('0x3b')][_0xbbe0('0x1a')](_0x106e50)[_0xbbe0('0x23')](function(_0x1a914d){_0x1b0f8a[_0xbbe0('0x1a')]=_0x1a914d;if(_0xff99e5['query'][_0xbbe0('0x3c')]){_0x286d8b[_0xbbe0('0x3d')]=[{'all':!![]}];}return db[_0xbbe0('0x3b')][_0xbbe0('0x3e')](_0x286d8b);})[_0xbbe0('0x23')](function(_0x46d1f3){_0x1b0f8a['rows']=_0x46d1f3;return _0x1b0f8a;})['then'](respondWithFilteredResult(_0x2c14e1,_0x286d8b))['catch'](handleError(_0x2c14e1,null));};exports[_0xbbe0('0x3f')]=function(_0x3066ff,_0x1ace08){var _0x31f31e={'raw':!![],'where':{'id':_0x3066ff['params']['id']}},_0x177c43={};_0x177c43[_0xbbe0('0x31')]=_['keys'](db[_0xbbe0('0x3b')][_0xbbe0('0x2a')]);_0x177c43[_0xbbe0('0x2d')]=_[_0xbbe0('0x2e')](_0x3066ff[_0xbbe0('0x2d')]);_0x177c43[_0xbbe0('0x2f')]=_[_0xbbe0('0x30')](_0x177c43[_0xbbe0('0x31')],_0x177c43[_0xbbe0('0x2d')]);_0x31f31e['attributes']=_['intersection'](_0x177c43['model'],qs[_0xbbe0('0x33')](_0x3066ff[_0xbbe0('0x2d')]['fields']));_0x31f31e[_0xbbe0('0x32')]=_0x31f31e[_0xbbe0('0x32')][_0xbbe0('0x34')]?_0x31f31e[_0xbbe0('0x32')]:_0x177c43[_0xbbe0('0x31')];if(_0x3066ff[_0xbbe0('0x2d')][_0xbbe0('0x3c')]){_0x31f31e['include']=[{'all':!![]}];}_0x31f31e=_[_0xbbe0('0x40')]({},_0x31f31e,_0x3066ff[_0xbbe0('0x41')]);return db[_0xbbe0('0x3b')]['find'](_0x31f31e)['then'](handleEntityNotFound(_0x1ace08,null))[_0xbbe0('0x23')](respondWithResult(_0x1ace08,null))[_0xbbe0('0x42')](handleError(_0x1ace08,null));};exports[_0xbbe0('0x43')]=function(_0x49a670,_0x26d519){return db[_0xbbe0('0x3b')]['create'](_0x49a670[_0xbbe0('0x44')],{})[_0xbbe0('0x23')](respondWithResult(_0x26d519,0xc9))[_0xbbe0('0x42')](handleError(_0x26d519,null));};exports[_0xbbe0('0x22')]=function(_0x4f14ad,_0x419181){if(_0x4f14ad[_0xbbe0('0x44')]['id']){delete _0x4f14ad[_0xbbe0('0x44')]['id'];}return db[_0xbbe0('0x3b')][_0xbbe0('0x45')]({'where':{'id':_0x4f14ad['params']['id']}})[_0xbbe0('0x23')](handleEntityNotFound(_0x419181,null))['then'](saveUpdates(_0x4f14ad['body'],null))[_0xbbe0('0x23')](respondWithResult(_0x419181,null))[_0xbbe0('0x42')](handleError(_0x419181,null));};exports['destroy']=function(_0x10c1e2,_0x36a8b1){return db[_0xbbe0('0x3b')]['find']({'where':{'id':_0x10c1e2[_0xbbe0('0x46')]['id']}})[_0xbbe0('0x23')](handleEntityNotFound(_0x36a8b1,null))[_0xbbe0('0x23')](removeEntity(_0x36a8b1,null))['catch'](handleError(_0x36a8b1,null));};
\ No newline at end of file
+var _0xbc32=['filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','then','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','Content-Range','json','apply','reject','save','update','destroy','end','error','stack','name','send','index','map','SalesforceField','fieldName','type','key','keys','query'];(function(_0x50c3ce,_0xe05aec){var _0x16557b=function(_0x49e4df){while(--_0x49e4df){_0x50c3ce['push'](_0x50c3ce['shift']());}};_0x16557b(++_0xe05aec);}(_0xbc32,0x6c));var _0x2bc3=function(_0x282878,_0x2cc775){_0x282878=_0x282878-0x0;var _0x1d8771=_0xbc32[_0x282878];return _0x1d8771;};'use strict';var emlformat=require(_0x2bc3('0x0'));var rimraf=require(_0x2bc3('0x1'));var zipdir=require(_0x2bc3('0x2'));var jsonpatch=require(_0x2bc3('0x3'));var rp=require(_0x2bc3('0x4'));var moment=require(_0x2bc3('0x5'));var BPromise=require(_0x2bc3('0x6'));var Mustache=require(_0x2bc3('0x7'));var util=require(_0x2bc3('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0x2bc3('0x9'));var ejs=require(_0x2bc3('0xa'));var fs=require('fs');var fs_extra=require(_0x2bc3('0xb'));var _=require(_0x2bc3('0xc'));var squel=require(_0x2bc3('0xd'));var crypto=require(_0x2bc3('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x2bc3('0xf'));var toCsv=require(_0x2bc3('0x9'));var querystring=require(_0x2bc3('0x10'));var Papa=require(_0x2bc3('0x11'));var Redis=require('ioredis');var authService=require(_0x2bc3('0x12'));var qs=require(_0x2bc3('0x13'));var as=require(_0x2bc3('0x14'));var hardwareService=require(_0x2bc3('0x15'));var logger=require(_0x2bc3('0x16'))(_0x2bc3('0x17'));var utils=require(_0x2bc3('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x2bc3('0x19'));var db=require(_0x2bc3('0x1a'))['db'];function respondWithStatusCode(_0x4c3995,_0x316e08){_0x316e08=_0x316e08||0xcc;return function(_0x507d3b){if(_0x507d3b){return _0x4c3995[_0x2bc3('0x1b')](_0x316e08);}return _0x4c3995[_0x2bc3('0x1c')](_0x316e08)['end']();};}function respondWithResult(_0x8744e3,_0x4b6f82){_0x4b6f82=_0x4b6f82||0xc8;return function(_0x5e3ba1){if(_0x5e3ba1){return _0x8744e3[_0x2bc3('0x1c')](_0x4b6f82)['json'](_0x5e3ba1);}};}function respondWithFilteredResult(_0x4d95f2,_0x84598b){return function(_0x4d74c6){if(_0x4d74c6){var _0x4a0120=typeof _0x84598b[_0x2bc3('0x1d')]===_0x2bc3('0x1e')&&typeof _0x84598b[_0x2bc3('0x1f')]===_0x2bc3('0x1e');var _0x2061bc=_0x4d74c6['count'];var _0x5ea9ff=_0x4a0120?0x0:_0x84598b[_0x2bc3('0x1d')];var _0x47f69d=_0x4a0120?_0x4d74c6['count']:_0x84598b['offset']+_0x84598b['limit'];var _0x494a8a;if(_0x47f69d>=_0x2061bc){_0x47f69d=_0x2061bc;_0x494a8a=0xc8;}else{_0x494a8a=0xce;}_0x4d95f2[_0x2bc3('0x1c')](_0x494a8a);return _0x4d95f2['set'](_0x2bc3('0x20'),_0x5ea9ff+'-'+_0x47f69d+'/'+_0x2061bc)[_0x2bc3('0x21')](_0x4d74c6);}return null;};}function patchUpdates(_0x3ce8e6){return function(_0x573964){try{jsonpatch[_0x2bc3('0x22')](_0x573964,_0x3ce8e6,!![]);}catch(_0x6a9216){return BPromise[_0x2bc3('0x23')](_0x6a9216);}return _0x573964[_0x2bc3('0x24')]();};}function saveUpdates(_0x587ec5,_0x265f26){return function(_0x571cae){if(_0x571cae){return _0x571cae[_0x2bc3('0x25')](_0x587ec5)['then'](function(_0x58dc0b){return _0x58dc0b;});}return null;};}function removeEntity(_0x120e4d,_0x41fe03){return function(_0x53a765){if(_0x53a765){return _0x53a765[_0x2bc3('0x26')]()['then'](function(){_0x120e4d[_0x2bc3('0x1c')](0xcc)[_0x2bc3('0x27')]();});}};}function handleEntityNotFound(_0x386d48,_0x3ebe68){return function(_0x1a1b4c){if(!_0x1a1b4c){_0x386d48[_0x2bc3('0x1b')](0x194);}return _0x1a1b4c;};}function handleError(_0x2ee8cf,_0x2873ba){_0x2873ba=_0x2873ba||0x1f4;return function(_0x5eea16){logger[_0x2bc3('0x28')](_0x5eea16[_0x2bc3('0x29')]);if(_0x5eea16[_0x2bc3('0x2a')]){delete _0x5eea16[_0x2bc3('0x2a')];}_0x2ee8cf['status'](_0x2873ba)[_0x2bc3('0x2b')](_0x5eea16);};}exports[_0x2bc3('0x2c')]=function(_0x12fbd5,_0x1237a1){var _0x542a35={},_0xb18ff1={},_0x4efed1={'count':0x0,'rows':[]};var _0xc771e2=_[_0x2bc3('0x2d')](db[_0x2bc3('0x2e')]['rawAttributes'],function(_0x163910){return{'name':_0x163910[_0x2bc3('0x2f')],'type':_0x163910[_0x2bc3('0x30')][_0x2bc3('0x31')]};});_0xb18ff1['model']=_[_0x2bc3('0x2d')](_0xc771e2,_0x2bc3('0x2a'));_0xb18ff1['query']=_[_0x2bc3('0x32')](_0x12fbd5[_0x2bc3('0x33')]);_0xb18ff1[_0x2bc3('0x34')]=_[_0x2bc3('0x35')](_0xb18ff1[_0x2bc3('0x36')],_0xb18ff1[_0x2bc3('0x33')]);_0x542a35[_0x2bc3('0x37')]=_[_0x2bc3('0x35')](_0xb18ff1[_0x2bc3('0x36')],qs['fields'](_0x12fbd5['query'][_0x2bc3('0x38')]));_0x542a35[_0x2bc3('0x37')]=_0x542a35[_0x2bc3('0x37')][_0x2bc3('0x39')]?_0x542a35['attributes']:_0xb18ff1[_0x2bc3('0x36')];if(!_0x12fbd5[_0x2bc3('0x33')][_0x2bc3('0x3a')](_0x2bc3('0x3b'))){_0x542a35[_0x2bc3('0x1f')]=qs[_0x2bc3('0x1f')](_0x12fbd5[_0x2bc3('0x33')]['limit']);_0x542a35['offset']=qs[_0x2bc3('0x1d')](_0x12fbd5[_0x2bc3('0x33')][_0x2bc3('0x1d')]);}_0x542a35[_0x2bc3('0x3c')]=qs[_0x2bc3('0x3d')](_0x12fbd5[_0x2bc3('0x33')]['sort']);_0x542a35[_0x2bc3('0x3e')]=qs['filters'](_[_0x2bc3('0x3f')](_0x12fbd5[_0x2bc3('0x33')],_0xb18ff1[_0x2bc3('0x34')]),_0xc771e2);if(_0x12fbd5[_0x2bc3('0x33')]['filter']){_0x542a35[_0x2bc3('0x3e')]=_[_0x2bc3('0x40')](_0x542a35[_0x2bc3('0x3e')],{'$or':_[_0x2bc3('0x2d')](_0xc771e2,function(_0x1deda4){if(_0x1deda4[_0x2bc3('0x30')]!==_0x2bc3('0x41')){var _0x256b69={};_0x256b69[_0x1deda4[_0x2bc3('0x2a')]]={'$like':'%'+_0x12fbd5[_0x2bc3('0x33')][_0x2bc3('0x42')]+'%'};return _0x256b69;}})});}_0x542a35=_['merge']({},_0x542a35,_0x12fbd5[_0x2bc3('0x43')]);var _0x272ad4={'where':_0x542a35[_0x2bc3('0x3e')]};return db[_0x2bc3('0x2e')]['count'](_0x272ad4)[_0x2bc3('0x44')](function(_0x7f5cbb){_0x4efed1['count']=_0x7f5cbb;if(_0x12fbd5['query'][_0x2bc3('0x45')]){_0x542a35[_0x2bc3('0x46')]=[{'all':!![]}];}return db['SalesforceField'][_0x2bc3('0x47')](_0x542a35);})[_0x2bc3('0x44')](function(_0x50e0ae){_0x4efed1[_0x2bc3('0x48')]=_0x50e0ae;return _0x4efed1;})[_0x2bc3('0x44')](respondWithFilteredResult(_0x1237a1,_0x542a35))[_0x2bc3('0x49')](handleError(_0x1237a1,null));};exports[_0x2bc3('0x4a')]=function(_0x4df163,_0x437cd7){var _0x5a05e8={'raw':!![],'where':{'id':_0x4df163[_0x2bc3('0x4b')]['id']}},_0x3f001f={};_0x3f001f[_0x2bc3('0x36')]=_[_0x2bc3('0x32')](db[_0x2bc3('0x2e')][_0x2bc3('0x4c')]);_0x3f001f[_0x2bc3('0x33')]=_[_0x2bc3('0x32')](_0x4df163[_0x2bc3('0x33')]);_0x3f001f[_0x2bc3('0x34')]=_[_0x2bc3('0x35')](_0x3f001f[_0x2bc3('0x36')],_0x3f001f[_0x2bc3('0x33')]);_0x5a05e8['attributes']=_['intersection'](_0x3f001f[_0x2bc3('0x36')],qs[_0x2bc3('0x38')](_0x4df163[_0x2bc3('0x33')][_0x2bc3('0x38')]));_0x5a05e8[_0x2bc3('0x37')]=_0x5a05e8['attributes'][_0x2bc3('0x39')]?_0x5a05e8[_0x2bc3('0x37')]:_0x3f001f[_0x2bc3('0x36')];if(_0x4df163['query']['includeAll']){_0x5a05e8[_0x2bc3('0x46')]=[{'all':!![]}];}_0x5a05e8=_[_0x2bc3('0x40')]({},_0x5a05e8,_0x4df163[_0x2bc3('0x43')]);return db[_0x2bc3('0x2e')]['find'](_0x5a05e8)[_0x2bc3('0x44')](handleEntityNotFound(_0x437cd7,null))[_0x2bc3('0x44')](respondWithResult(_0x437cd7,null))[_0x2bc3('0x49')](handleError(_0x437cd7,null));};exports[_0x2bc3('0x4d')]=function(_0x25819b,_0x4216a5){return db[_0x2bc3('0x2e')][_0x2bc3('0x4d')](_0x25819b[_0x2bc3('0x4e')],{})[_0x2bc3('0x44')](respondWithResult(_0x4216a5,0xc9))[_0x2bc3('0x49')](handleError(_0x4216a5,null));};exports['update']=function(_0x2914a6,_0x3d9abd){if(_0x2914a6[_0x2bc3('0x4e')]['id']){delete _0x2914a6[_0x2bc3('0x4e')]['id'];}return db['SalesforceField'][_0x2bc3('0x4f')]({'where':{'id':_0x2914a6[_0x2bc3('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3d9abd,null))[_0x2bc3('0x44')](saveUpdates(_0x2914a6['body'],null))[_0x2bc3('0x44')](respondWithResult(_0x3d9abd,null))[_0x2bc3('0x49')](handleError(_0x3d9abd,null));};exports['destroy']=function(_0x28ea19,_0x4a0f58){return db[_0x2bc3('0x2e')][_0x2bc3('0x4f')]({'where':{'id':_0x28ea19[_0x2bc3('0x4b')]['id']}})[_0x2bc3('0x44')](handleEntityNotFound(_0x4a0f58,null))[_0x2bc3('0x44')](removeEntity(_0x4a0f58,null))[_0x2bc3('0x49')](handleError(_0x4a0f58,null));};
\ No newline at end of file
index 878837c..13c3d7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc95b=['../../config/logger','api','request-promise','path','rimraf','./intSalesforceField.attributes','exports','define','SalesforceField','idField','FieldId','lodash','util'];(function(_0x24579a,_0x59612d){var _0x59dff7=function(_0x47c50f){while(--_0x47c50f){_0x24579a['push'](_0x24579a['shift']());}};_0x59dff7(++_0x59612d);}(_0xc95b,0x11c));var _0xbc95=function(_0x2b7737,_0x33c86c){_0x2b7737=_0x2b7737-0x0;var _0x518930=_0xc95b[_0x2b7737];return _0x518930;};'use strict';var _=require(_0xbc95('0x0'));var util=require(_0xbc95('0x1'));var logger=require(_0xbc95('0x2'))(_0xbc95('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xbc95('0x4'));var fs=require('fs');var path=require(_0xbc95('0x5'));var rimraf=require(_0xbc95('0x6'));var config=require('../../config/environment');var attributes=require(_0xbc95('0x7'));module[_0xbc95('0x8')]=function(_0x136b56,_0xa19af4){return _0x136b56[_0xbc95('0x9')](_0xbc95('0xa'),attributes,{'tableName':'int_salesforce_fields','paranoid':![],'indexes':[{'name':'salesforce_unique_index','fields':[_0xbc95('0xb'),_0xbc95('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9e21=['salesforce_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','int_salesforce_fields'];(function(_0x59eacf,_0x56ec4a){var _0x5d74f2=function(_0x5476ed){while(--_0x5476ed){_0x59eacf['push'](_0x59eacf['shift']());}};_0x5d74f2(++_0x56ec4a);}(_0x9e21,0x1a7));var _0x19e2=function(_0x5e5284,_0x52f86b){_0x5e5284=_0x5e5284-0x0;var _0x589562=_0x9e21[_0x5e5284];return _0x589562;};'use strict';var _=require(_0x19e2('0x0'));var util=require(_0x19e2('0x1'));var logger=require(_0x19e2('0x2'))(_0x19e2('0x3'));var moment=require(_0x19e2('0x4'));var BPromise=require(_0x19e2('0x5'));var rp=require(_0x19e2('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x19e2('0x7'));var attributes=require('./intSalesforceField.attributes');module['exports']=function(_0x549f84,_0x18737c){return _0x549f84['define']('SalesforceField',attributes,{'tableName':_0x19e2('0x8'),'paranoid':![],'indexes':[{'name':_0x19e2('0x9'),'fields':[_0x19e2('0xa'),_0x19e2('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 8cb7899..8219f50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5558=['message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SalesforceField,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code'];(function(_0x14475a,_0x3991a0){var _0xca466e=function(_0x520f6b){while(--_0x520f6b){_0x14475a['push'](_0x14475a['shift']());}};_0xca466e(++_0x3991a0);}(_0x5558,0x1e3));var _0x8555=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0x5558[_0x5d6456];return _0x4d66c1;};'use strict';var _=require(_0x8555('0x0'));var util=require('util');var moment=require(_0x8555('0x1'));var BPromise=require(_0x8555('0x2'));var rs=require(_0x8555('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8555('0x4'))['db'];var utils=require(_0x8555('0x5'));var logger=require(_0x8555('0x6'))(_0x8555('0x7'));var config=require(_0x8555('0x8'));var jayson=require(_0x8555('0x9'));var client=jayson[_0x8555('0xa')][_0x8555('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4d22c7,_0x396df4,_0x366362){return new BPromise(function(_0xf1af99,_0x2177b0){return client[_0x8555('0xc')](_0x4d22c7,_0x366362)[_0x8555('0xd')](function(_0x4f4f55){logger[_0x8555('0xe')](_0x8555('0xf'),_0x396df4,'request\x20sent');logger[_0x8555('0x10')]('SalesforceField,\x20%s,\x20%s,\x20%s',_0x396df4,_0x8555('0x11'),JSON[_0x8555('0x12')](_0x4f4f55));if(_0x4f4f55[_0x8555('0x13')]){if(_0x4f4f55[_0x8555('0x13')][_0x8555('0x14')]===0x1f4){logger[_0x8555('0x13')](_0x8555('0xf'),_0x396df4,_0x4f4f55[_0x8555('0x13')][_0x8555('0x15')]);return _0x2177b0(_0x4f4f55['error'][_0x8555('0x15')]);}logger[_0x8555('0x13')](_0x8555('0xf'),_0x396df4,_0x4f4f55[_0x8555('0x13')][_0x8555('0x15')]);return _0xf1af99(_0x4f4f55['error'][_0x8555('0x15')]);}else{logger[_0x8555('0xe')](_0x8555('0xf'),_0x396df4,_0x8555('0x11'));_0xf1af99(_0x4f4f55[_0x8555('0x16')]['message']);}})[_0x8555('0x17')](function(_0x41a9c8){logger[_0x8555('0x13')](_0x8555('0xf'),_0x396df4,_0x41a9c8);_0x2177b0(_0x41a9c8);});});}
\ No newline at end of file
+var _0x357f=['message','info','util','moment','bluebird','randomstring','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','error','code'];(function(_0x26b7ab,_0x2d3c33){var _0x5d039e=function(_0x410a83){while(--_0x410a83){_0x26b7ab['push'](_0x26b7ab['shift']());}};_0x5d039e(++_0x2d3c33);}(_0x357f,0x9a));var _0xf357=function(_0x24f252,_0x25b758){_0x24f252=_0x24f252-0x0;var _0x4162ab=_0x357f[_0x24f252];return _0x4162ab;};'use strict';var _=require('lodash');var util=require(_0xf357('0x0'));var moment=require(_0xf357('0x1'));var BPromise=require(_0xf357('0x2'));var rs=require(_0xf357('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xf357('0x4'))(_0xf357('0x5'));var config=require(_0xf357('0x6'));var jayson=require(_0xf357('0x7'));var client=jayson[_0xf357('0x8')][_0xf357('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2cfef9,_0x46f63f,_0x1984ee){return new BPromise(function(_0x4e9163,_0x45d635){return client[_0xf357('0xa')](_0x2cfef9,_0x1984ee)[_0xf357('0xb')](function(_0x1f214c){logger['info'](_0xf357('0xc'),_0x46f63f,_0xf357('0xd'));logger[_0xf357('0xe')]('SalesforceField,\x20%s,\x20%s,\x20%s',_0x46f63f,_0xf357('0xd'),JSON['stringify'](_0x1f214c));if(_0x1f214c['error']){if(_0x1f214c[_0xf357('0xf')][_0xf357('0x10')]===0x1f4){logger[_0xf357('0xf')](_0xf357('0xc'),_0x46f63f,_0x1f214c['error'][_0xf357('0x11')]);return _0x45d635(_0x1f214c['error']['message']);}logger[_0xf357('0xf')]('SalesforceField,\x20%s,\x20%s',_0x46f63f,_0x1f214c[_0xf357('0xf')][_0xf357('0x11')]);return _0x4e9163(_0x1f214c[_0xf357('0xf')][_0xf357('0x11')]);}else{logger[_0xf357('0x12')](_0xf357('0xc'),_0x46f63f,_0xf357('0xd'));_0x4e9163(_0x1f214c['result'][_0xf357('0x11')]);}})['catch'](function(_0x11046a){logger[_0xf357('0xf')]('SalesforceField,\x20%s,\x20%s',_0x46f63f,_0x11046a);_0x45d635(_0x11046a);});});}
\ No newline at end of file
index b44d9e6..5424a94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd59a=['create','/:id/configurations','addConfiguration','put','update','delete','destroy','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','/:id','show','getConfigurations','/:id/fields','getFields','post'];(function(_0x1203f,_0x554bbc){var _0x365f0a=function(_0x3531d0){while(--_0x3531d0){_0x1203f['push'](_0x1203f['shift']());}};_0x365f0a(++_0x554bbc);}(_0xd59a,0x17d));var _0xad59=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xd59a[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0xad59('0x0'));var util=require(_0xad59('0x1'));var path=require(_0xad59('0x2'));var timeout=require(_0xad59('0x3'));var express=require('express');var router=express[_0xad59('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xad59('0x5'));var interaction=require(_0xad59('0x6'));var config=require('../../config/environment');var controller=require('./intServicenowAccount.controller');router[_0xad59('0x7')]('/',auth[_0xad59('0x8')](),controller['index']);router[_0xad59('0x7')](_0xad59('0x9'),auth[_0xad59('0x8')](),controller[_0xad59('0xa')]);router['get']('/:id/configurations',auth[_0xad59('0x8')](),controller[_0xad59('0xb')]);router[_0xad59('0x7')](_0xad59('0xc'),auth['isAuthenticated'](),controller[_0xad59('0xd')]);router[_0xad59('0xe')]('/',auth[_0xad59('0x8')](),controller[_0xad59('0xf')]);router[_0xad59('0xe')](_0xad59('0x10'),auth['isAuthenticated'](),controller[_0xad59('0x11')]);router[_0xad59('0x12')](_0xad59('0x9'),auth[_0xad59('0x8')](),controller[_0xad59('0x13')]);router[_0xad59('0x14')]('/:id',auth[_0xad59('0x8')](),controller[_0xad59('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x6345=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','/:id/fields','getFields','create','post','put','update','delete','destroy','exports','multer','path','express','Router'];(function(_0x3855c5,_0x100c88){var _0x5ce395=function(_0x48f2ef){while(--_0x48f2ef){_0x3855c5['push'](_0x3855c5['shift']());}};_0x5ce395(++_0x100c88);}(_0x6345,0xa4));var _0x5634=function(_0x30a03d,_0x5ee411){_0x30a03d=_0x30a03d-0x0;var _0x1accd0=_0x6345[_0x30a03d];return _0x1accd0;};'use strict';var multer=require(_0x5634('0x0'));var util=require('util');var path=require(_0x5634('0x1'));var timeout=require('connect-timeout');var express=require(_0x5634('0x2'));var router=express[_0x5634('0x3')]();var fs_extra=require(_0x5634('0x4'));var auth=require(_0x5634('0x5'));var interaction=require(_0x5634('0x6'));var config=require(_0x5634('0x7'));var controller=require(_0x5634('0x8'));router[_0x5634('0x9')]('/',auth[_0x5634('0xa')](),controller[_0x5634('0xb')]);router['get'](_0x5634('0xc'),auth[_0x5634('0xa')](),controller[_0x5634('0xd')]);router['get'](_0x5634('0xe'),auth[_0x5634('0xa')](),controller['getConfigurations']);router[_0x5634('0x9')](_0x5634('0xf'),auth[_0x5634('0xa')](),controller[_0x5634('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0x5634('0x11')]);router[_0x5634('0x12')]('/:id/configurations',auth[_0x5634('0xa')](),controller['addConfiguration']);router[_0x5634('0x13')](_0x5634('0xc'),auth[_0x5634('0xa')](),controller[_0x5634('0x14')]);router[_0x5634('0x15')](_0x5634('0xc'),auth['isAuthenticated'](),controller[_0x5634('0x16')]);module[_0x5634('0x17')]=router;
\ No newline at end of file
index b3888e6..e38abf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7195=['exports','STRING','username','remoteUri','sequelize'];(function(_0x6c100e,_0x522bcb){var _0x41ce55=function(_0x401511){while(--_0x401511){_0x6c100e['push'](_0x6c100e['shift']());}};_0x41ce55(++_0x522bcb);}(_0x7195,0x18a));var _0x5719=function(_0x5d0ad8,_0x323b7e){_0x5d0ad8=_0x5d0ad8-0x0;var _0x189e00=_0x7195[_0x5d0ad8];return _0x189e00;};'use strict';var Sequelize=require(_0x5719('0x0'));module[_0x5719('0x1')]={'name':{'type':Sequelize[_0x5719('0x2')]},'description':{'type':Sequelize[_0x5719('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0x5719('0x3')},'password':{'type':Sequelize[_0x5719('0x2')]},'email':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x5719('0x2')],'unique':_0x5719('0x4')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x4fcf=['remoteUri','sequelize','STRING','username'];(function(_0x489e32,_0xda2e70){var _0x48f7af=function(_0x52e70b){while(--_0x52e70b){_0x489e32['push'](_0x489e32['shift']());}};_0x48f7af(++_0xda2e70);}(_0x4fcf,0x16d));var _0xf4fc=function(_0x285c58,_0x2a5057){_0x285c58=_0x285c58-0x0;var _0xc00c9f=_0x4fcf[_0x285c58];return _0xc00c9f;};'use strict';var Sequelize=require(_0xf4fc('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xf4fc('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0xf4fc('0x2')},'password':{'type':Sequelize[_0xf4fc('0x1')]},'email':{'type':Sequelize[_0xf4fc('0x1')]},'remoteUri':{'type':Sequelize[_0xf4fc('0x1')],'unique':_0xf4fc('0x3')},'serverUrl':{'type':Sequelize[_0xf4fc('0x1')],'allowNull':![]}};
\ No newline at end of file
index 2f36eee..e7453b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbea2=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','destroy','then','error','stack','name','index','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','include','ServicenowAccount','rows','show','find','catch','create','body','params','ServicenowConfiguration','map','nolimit','getConfigurations','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','ServicenowField','getFields','made_sla','knowledge','subcategory','notify','incident_state','parent','caused_by','watch_list','upon_reject','child_incidents','hold_reason','opened_by','state','sys_created_by','calendar_stc','closed_at','delivery_plan','impact','work_notes_list','business_service','rfc','time_worked','expected_start','opened_at','business_duration','group_list','work_end','reopened_time','resolved_at','caller_id','approval_set','short_description','close_code','correlation_display','delivery_task','additional_assignee_list','description','calendar_duration','sys_class_name','close_notes','closed_by','follow_up','parent_incident','reopened_by','problem_id','reassignment_count','assigned_to','severity','comments','sla_due','approval','comments_and_work_notes','due_date','sys_mod_count','sys_tags','escalation','correlation_id','location','category','username','serverUrl','remoteUri','slice','substring','lastIndexOf','format','%s/api/now/doc/table/schema/','%s/api/now/table/','password','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','includes','forEach','internalType','all','assign','TCL:\x20_object','remove','label','push','concat','ServiceNow\x20error:\x20','test','statusCode','send','Wrong\x20credentials','boolean','True','true','False','GET','sys_choice?sysparm_query=name=incident^element=','inactive','false','value','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x37d430,_0x624e09){var _0x556dce=function(_0xb9f7df){while(--_0xb9f7df){_0x37d430['push'](_0x37d430['shift']());}};_0x556dce(++_0x624e09);}(_0xbea2,0x164));var _0x2bea=function(_0x3ccc62,_0x192a1a){_0x3ccc62=_0x3ccc62-0x0;var _0x4c15d1=_0xbea2[_0x3ccc62];return _0x4c15d1;};'use strict';var emlformat=require(_0x2bea('0x0'));var rimraf=require(_0x2bea('0x1'));var zipdir=require(_0x2bea('0x2'));var jsonpatch=require(_0x2bea('0x3'));var rp=require(_0x2bea('0x4'));var moment=require(_0x2bea('0x5'));var BPromise=require(_0x2bea('0x6'));var Mustache=require(_0x2bea('0x7'));var util=require(_0x2bea('0x8'));var path=require(_0x2bea('0x9'));var sox=require(_0x2bea('0xa'));var csv=require(_0x2bea('0xb'));var ejs=require(_0x2bea('0xc'));var fs=require('fs');var fs_extra=require(_0x2bea('0xd'));var _=require('lodash');var squel=require(_0x2bea('0xe'));var crypto=require(_0x2bea('0xf'));var jsforce=require(_0x2bea('0x10'));var deskjs=require(_0x2bea('0x11'));var toCsv=require(_0x2bea('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x2bea('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x2bea('0x13'));var as=require(_0x2bea('0x14'));var hardwareService=require(_0x2bea('0x15'));var logger=require(_0x2bea('0x16'))(_0x2bea('0x17'));var utils=require(_0x2bea('0x18'));var config=require(_0x2bea('0x19'));var licenseUtil=require(_0x2bea('0x1a'));var db=require(_0x2bea('0x1b'))['db'];var integrations=require(_0x2bea('0x1c'));function respondWithStatusCode(_0xb9abe5,_0x559bd0){_0x559bd0=_0x559bd0||0xcc;return function(_0x598b1d){if(_0x598b1d){return _0xb9abe5[_0x2bea('0x1d')](_0x559bd0);}return _0xb9abe5[_0x2bea('0x1e')](_0x559bd0)[_0x2bea('0x1f')]();};}function respondWithResult(_0x180211,_0x45c304){_0x45c304=_0x45c304||0xc8;return function(_0x194208){if(_0x194208){return _0x180211[_0x2bea('0x1e')](_0x45c304)['json'](_0x194208);}};}function respondWithFilteredResult(_0x357cad,_0x1a1482){return function(_0x4bae9d){if(_0x4bae9d){var _0x440640=typeof _0x1a1482[_0x2bea('0x20')]===_0x2bea('0x21')&&typeof _0x1a1482[_0x2bea('0x22')]===_0x2bea('0x21');var _0x5db7b8=_0x4bae9d[_0x2bea('0x23')];var _0x2ff30d=_0x440640?0x0:_0x1a1482[_0x2bea('0x20')];var _0x2d9b0a=_0x440640?_0x4bae9d[_0x2bea('0x23')]:_0x1a1482[_0x2bea('0x20')]+_0x1a1482[_0x2bea('0x22')];var _0x5a59ea;if(_0x2d9b0a>=_0x5db7b8){_0x2d9b0a=_0x5db7b8;_0x5a59ea=0xc8;}else{_0x5a59ea=0xce;}_0x357cad['status'](_0x5a59ea);return _0x357cad[_0x2bea('0x24')](_0x2bea('0x25'),_0x2ff30d+'-'+_0x2d9b0a+'/'+_0x5db7b8)[_0x2bea('0x26')](_0x4bae9d);}return null;};}function patchUpdates(_0x46f780){return function(_0x4c4ea0){try{jsonpatch[_0x2bea('0x27')](_0x4c4ea0,_0x46f780,!![]);}catch(_0x948f11){return BPromise[_0x2bea('0x28')](_0x948f11);}return _0x4c4ea0['save']();};}function saveUpdates(_0x145add,_0x537a45){return function(_0x165540){if(_0x165540){return _0x165540[_0x2bea('0x29')](_0x145add)['then'](function(_0x537a17){return _0x537a17;});}return null;};}function removeEntity(_0x2f1104,_0x488516){return function(_0x372820){if(_0x372820){return _0x372820[_0x2bea('0x2a')]()[_0x2bea('0x2b')](function(){_0x2f1104[_0x2bea('0x1e')](0xcc)[_0x2bea('0x1f')]();});}};}function handleEntityNotFound(_0x2663ba,_0x282c42){return function(_0x54f9a0){if(!_0x54f9a0){_0x2663ba['sendStatus'](0x194);}return _0x54f9a0;};}function handleError(_0x16daae,_0x33778d){_0x33778d=_0x33778d||0x1f4;return function(_0x295e45){logger[_0x2bea('0x2c')](_0x295e45[_0x2bea('0x2d')]);if(_0x295e45[_0x2bea('0x2e')]){delete _0x295e45['name'];}_0x16daae[_0x2bea('0x1e')](_0x33778d)['send'](_0x295e45);};}exports[_0x2bea('0x2f')]=function(_0x5bd677,_0x11e924){var _0x440f10={},_0x4cb893={},_0x52d988={'count':0x0,'rows':[]};var _0xedf898=_['map'](db['ServicenowAccount'][_0x2bea('0x30')],function(_0x4b3c92){return{'name':_0x4b3c92[_0x2bea('0x31')],'type':_0x4b3c92[_0x2bea('0x32')][_0x2bea('0x33')]};});_0x4cb893[_0x2bea('0x34')]=_['map'](_0xedf898,_0x2bea('0x2e'));_0x4cb893[_0x2bea('0x35')]=_[_0x2bea('0x36')](_0x5bd677[_0x2bea('0x35')]);_0x4cb893[_0x2bea('0x37')]=_[_0x2bea('0x38')](_0x4cb893['model'],_0x4cb893[_0x2bea('0x35')]);_0x440f10[_0x2bea('0x39')]=_['intersection'](_0x4cb893[_0x2bea('0x34')],qs[_0x2bea('0x3a')](_0x5bd677[_0x2bea('0x35')][_0x2bea('0x3a')]));_0x440f10[_0x2bea('0x39')]=_0x440f10[_0x2bea('0x39')][_0x2bea('0x3b')]?_0x440f10[_0x2bea('0x39')]:_0x4cb893['model'];if(!_0x5bd677[_0x2bea('0x35')][_0x2bea('0x3c')]('nolimit')){_0x440f10[_0x2bea('0x22')]=qs[_0x2bea('0x22')](_0x5bd677[_0x2bea('0x35')]['limit']);_0x440f10[_0x2bea('0x20')]=qs[_0x2bea('0x20')](_0x5bd677['query']['offset']);}_0x440f10[_0x2bea('0x3d')]=qs['sort'](_0x5bd677[_0x2bea('0x35')][_0x2bea('0x3e')]);_0x440f10['where']=qs[_0x2bea('0x37')](_[_0x2bea('0x3f')](_0x5bd677[_0x2bea('0x35')],_0x4cb893['filters']),_0xedf898);if(_0x5bd677[_0x2bea('0x35')][_0x2bea('0x40')]){_0x440f10[_0x2bea('0x41')]=_['merge'](_0x440f10['where'],{'$or':_['map'](_0xedf898,function(_0x10506c){if(_0x10506c[_0x2bea('0x32')]!==_0x2bea('0x42')){var _0x3fb92d={};_0x3fb92d[_0x10506c[_0x2bea('0x2e')]]={'$like':'%'+_0x5bd677['query'][_0x2bea('0x40')]+'%'};return _0x3fb92d;}})});}_0x440f10=_[_0x2bea('0x43')]({},_0x440f10,_0x5bd677[_0x2bea('0x44')]);var _0x17ab39={'where':_0x440f10[_0x2bea('0x41')]};return db['ServicenowAccount'][_0x2bea('0x23')](_0x17ab39)[_0x2bea('0x2b')](function(_0x4dfb01){_0x52d988[_0x2bea('0x23')]=_0x4dfb01;if(_0x5bd677[_0x2bea('0x35')][_0x2bea('0x45')]){_0x440f10[_0x2bea('0x46')]=[{'all':!![]}];}return db[_0x2bea('0x47')]['findAll'](_0x440f10);})[_0x2bea('0x2b')](function(_0x1b4756){_0x52d988[_0x2bea('0x48')]=_0x1b4756;return _0x52d988;})[_0x2bea('0x2b')](respondWithFilteredResult(_0x11e924,_0x440f10))['catch'](handleError(_0x11e924,null));};exports[_0x2bea('0x49')]=function(_0x3cf632,_0x163aaa){var _0x3765f1={'raw':![],'where':{'id':_0x3cf632['params']['id']}},_0xd77030={};_0xd77030[_0x2bea('0x34')]=_[_0x2bea('0x36')](db[_0x2bea('0x47')][_0x2bea('0x30')]);_0xd77030[_0x2bea('0x35')]=_[_0x2bea('0x36')](_0x3cf632['query']);_0xd77030['filters']=_['intersection'](_0xd77030['model'],_0xd77030[_0x2bea('0x35')]);_0x3765f1[_0x2bea('0x39')]=_['intersection'](_0xd77030['model'],qs[_0x2bea('0x3a')](_0x3cf632[_0x2bea('0x35')][_0x2bea('0x3a')]));_0x3765f1[_0x2bea('0x39')]=_0x3765f1['attributes'][_0x2bea('0x3b')]?_0x3765f1['attributes']:_0xd77030['model'];if(_0x3cf632[_0x2bea('0x35')]['includeAll']){_0x3765f1[_0x2bea('0x46')]=[{'all':!![]}];}_0x3765f1=_[_0x2bea('0x43')]({},_0x3765f1,_0x3cf632[_0x2bea('0x44')]);return db[_0x2bea('0x47')][_0x2bea('0x4a')](_0x3765f1)[_0x2bea('0x2b')](handleEntityNotFound(_0x163aaa,null))['then'](respondWithResult(_0x163aaa,null))[_0x2bea('0x4b')](handleError(_0x163aaa,null));};exports[_0x2bea('0x4c')]=function(_0x3f4c8c,_0x2e8a33){return db['ServicenowAccount']['create'](_0x3f4c8c[_0x2bea('0x4d')],{})[_0x2bea('0x2b')](respondWithResult(_0x2e8a33,0xc9))[_0x2bea('0x4b')](handleError(_0x2e8a33,null));};exports[_0x2bea('0x29')]=function(_0xab6aa1,_0x513bea){if(_0xab6aa1[_0x2bea('0x4d')]['id']){delete _0xab6aa1[_0x2bea('0x4d')]['id'];}return db[_0x2bea('0x47')][_0x2bea('0x4a')]({'where':{'id':_0xab6aa1['params']['id']}})[_0x2bea('0x2b')](handleEntityNotFound(_0x513bea,null))['then'](saveUpdates(_0xab6aa1[_0x2bea('0x4d')],null))[_0x2bea('0x2b')](respondWithResult(_0x513bea,null))[_0x2bea('0x4b')](handleError(_0x513bea,null));};exports[_0x2bea('0x2a')]=function(_0x65b2dc,_0x1b210d){return db[_0x2bea('0x47')][_0x2bea('0x4a')]({'where':{'id':_0x65b2dc['params']['id']}})[_0x2bea('0x2b')](handleEntityNotFound(_0x1b210d,null))[_0x2bea('0x2b')](removeEntity(_0x1b210d,null))['catch'](handleError(_0x1b210d,null));};exports['getConfigurations']=function(_0x2c4e1e,_0x3c7068,_0x2f8692){var _0x4e1f0d={};var _0x26845b={};var _0x5ce865;var _0x2eaad3;return db[_0x2bea('0x47')]['findOne']({'where':{'id':_0x2c4e1e[_0x2bea('0x4e')]['id']}})[_0x2bea('0x2b')](handleEntityNotFound(_0x3c7068,null))['then'](function(_0x3e52e0){if(_0x3e52e0){_0x5ce865=_0x3e52e0;_0x26845b[_0x2bea('0x34')]=_[_0x2bea('0x36')](db[_0x2bea('0x4f')][_0x2bea('0x30')]);_0x26845b['query']=_[_0x2bea('0x36')](_0x2c4e1e['query']);_0x26845b[_0x2bea('0x37')]=_['intersection'](_0x26845b['model'],_0x26845b['query']);_0x4e1f0d[_0x2bea('0x39')]=_[_0x2bea('0x38')](_0x26845b[_0x2bea('0x34')],qs[_0x2bea('0x3a')](_0x2c4e1e[_0x2bea('0x35')][_0x2bea('0x3a')]));_0x4e1f0d['attributes']=_0x4e1f0d[_0x2bea('0x39')][_0x2bea('0x3b')]?_0x4e1f0d['attributes']:_0x26845b[_0x2bea('0x34')];_0x4e1f0d['order']=qs[_0x2bea('0x3e')](_0x2c4e1e[_0x2bea('0x35')]['sort']);_0x4e1f0d['where']=qs[_0x2bea('0x37')](_['pick'](_0x2c4e1e['query'],_0x26845b[_0x2bea('0x37')]));if(_0x2c4e1e[_0x2bea('0x35')][_0x2bea('0x40')]){_0x4e1f0d[_0x2bea('0x41')]=_[_0x2bea('0x43')](_0x4e1f0d['where'],{'$or':_[_0x2bea('0x50')](_0x4e1f0d[_0x2bea('0x39')],function(_0x119213){var _0x4f1634={};_0x4f1634[_0x119213]={'$like':'%'+_0x2c4e1e[_0x2bea('0x35')][_0x2bea('0x40')]+'%'};return _0x4f1634;})});}_0x4e1f0d=_[_0x2bea('0x43')]({},_0x4e1f0d,_0x2c4e1e[_0x2bea('0x44')]);return _0x5ce865['getConfigurations'](_0x4e1f0d);}})[_0x2bea('0x2b')](function(_0x4e6538){if(_0x4e6538){_0x2eaad3=_0x4e6538[_0x2bea('0x3b')];if(!_0x2c4e1e['query'][_0x2bea('0x3c')](_0x2bea('0x51'))){_0x4e1f0d[_0x2bea('0x22')]=qs['limit'](_0x2c4e1e['query']['limit']);_0x4e1f0d['offset']=qs['offset'](_0x2c4e1e[_0x2bea('0x35')][_0x2bea('0x20')]);}return _0x5ce865[_0x2bea('0x52')](_0x4e1f0d);}})[_0x2bea('0x2b')](function(_0x4e01b6){if(_0x4e01b6){return _0x4e01b6?{'count':_0x2eaad3,'rows':_0x4e01b6}:null;}})[_0x2bea('0x2b')](respondWithResult(_0x3c7068,null))[_0x2bea('0x4b')](handleError(_0x3c7068,null));};exports[_0x2bea('0x53')]=function(_0x1cf07f,_0x3183a8,_0x2f1e9e){if(_0x1cf07f[_0x2bea('0x4d')]['id']){delete _0x1cf07f[_0x2bea('0x4d')]['id'];}return db[_0x2bea('0x47')][_0x2bea('0x54')]({'where':{'id':_0x1cf07f[_0x2bea('0x4e')]['id']}})[_0x2bea('0x2b')](handleEntityNotFound(_0x3183a8,null))[_0x2bea('0x2b')](function(_0x1f1c10){if(_0x1f1c10){_0x1cf07f[_0x2bea('0x4d')][_0x2bea('0x55')]=_0x1f1c10['id'];_0x1cf07f[_0x2bea('0x4d')][_0x2bea('0x56')]=integrations[_0x2bea('0x57')](_0x1cf07f[_0x2bea('0x4d')][_0x2bea('0x58')],_0x1cf07f['body'][_0x2bea('0x32')]);_0x1cf07f[_0x2bea('0x4d')][_0x2bea('0x59')]=integrations['getDescriptions'](_0x1cf07f[_0x2bea('0x4d')]['channel'],_0x1cf07f[_0x2bea('0x4d')][_0x2bea('0x32')]);return db[_0x2bea('0x4f')][_0x2bea('0x4c')](_0x1cf07f[_0x2bea('0x4d')],{'include':[{'model':db[_0x2bea('0x5a')],'as':_0x2bea('0x56')},{'model':db[_0x2bea('0x5a')],'as':'Descriptions'}]});}return null;})[_0x2bea('0x2b')](respondWithResult(_0x3183a8,null))[_0x2bea('0x4b')](handleError(_0x3183a8,null));};exports[_0x2bea('0x5b')]=function(_0x1f0dbc,_0x2fcac6,_0x33dc1){var _0x48555b=[_0x2bea('0x5c'),'hold_reason',_0x2bea('0x5d'),_0x2bea('0x5e'),'close_code',_0x2bea('0x5f'),_0x2bea('0x60'),'severity','category'];var _0x53e5c1=[_0x2bea('0x61'),_0x2bea('0x5c'),_0x2bea('0x62'),_0x2bea('0x63'),_0x2bea('0x64'),'sys_updated_on',_0x2bea('0x65'),_0x2bea('0x66'),'approval_history','number','resolved_by','sys_updated_by',_0x2bea('0x67'),'user_input','sys_created_on','sys_domain',_0x2bea('0x68'),_0x2bea('0x69'),_0x2bea('0x5d'),_0x2bea('0x3d'),_0x2bea('0x6a'),_0x2bea('0x6b'),'cmdb_ci',_0x2bea('0x6c'),_0x2bea('0x6d'),'active',_0x2bea('0x6e'),_0x2bea('0x6f'),'priority','sys_domain_path',_0x2bea('0x70'),_0x2bea('0x71'),_0x2bea('0x72'),_0x2bea('0x73'),_0x2bea('0x74'),_0x2bea('0x75'),_0x2bea('0x76'),_0x2bea('0x77'),_0x2bea('0x78'),_0x2bea('0x79'),_0x2bea('0x7a'),_0x2bea('0x5e'),'work_notes',_0x2bea('0x7b'),_0x2bea('0x7c'),_0x2bea('0x7d'),_0x2bea('0x7e'),'work_start','assignment_group','business_stc',_0x2bea('0x7f'),_0x2bea('0x80'),_0x2bea('0x81'),'notify',_0x2bea('0x82'),_0x2bea('0x83'),_0x2bea('0x84'),_0x2bea('0x85'),_0x2bea('0x86'),'sys_id','contact_type',_0x2bea('0x87'),_0x2bea('0x60'),'urgency',_0x2bea('0x88'),'company',_0x2bea('0x89'),'activity_due',_0x2bea('0x8a'),_0x2bea('0x8b'),_0x2bea('0x8c'),_0x2bea('0x8d'),_0x2bea('0x8e'),_0x2bea('0x8f'),_0x2bea('0x90'),_0x2bea('0x91'),'reopen_count',_0x2bea('0x92'),_0x2bea('0x93'),'upon_approval',_0x2bea('0x94'),_0x2bea('0x95'),_0x2bea('0x96')];var _0x3502b1='';var _0x3e5bfb='';var _0x5b2c28=[];var _0x38ed34='';var _0x502a0d='';var _0x2fa3ce=[];var _0x4955ea='';var _0x1f4e69='';var _0x49f312={};var _0x28da3f='';return db['ServicenowAccount']['findOne']({'where':{'id':_0x1f0dbc[_0x2bea('0x4e')]['id']},'attributes':['id',_0x2bea('0x97'),'password','email','remoteUri',_0x2bea('0x98')]})[_0x2bea('0x2b')](handleEntityNotFound(_0x2fcac6,null))[_0x2bea('0x2b')](function(_0x5a39dd){if(_0x5a39dd){_0x28da3f=_0x5a39dd[_0x2bea('0x99')];var _0x1e87dc=_0x28da3f[_0x2bea('0x9a')](-0x1);if(_0x1e87dc==='/'){_0x28da3f=_0x28da3f[_0x2bea('0x9b')](0x0,_0x28da3f[_0x2bea('0x9c')](_0x1e87dc));}_0x1f4e69=util[_0x2bea('0x9d')](_0x2bea('0x9e'),_0x28da3f);_0x4955ea=util[_0x2bea('0x9d')](_0x2bea('0x9f'),_0x28da3f);_0x49f312={'user':_0x5a39dd[_0x2bea('0x97')],'pass':_0x5a39dd[_0x2bea('0xa0')]};var _0x25971b={'method':'GET','uri':_0x1f4e69+_0x2bea('0xa1'),'auth':_0x49f312,'json':!![]};return rp(_0x25971b);}})[_0x2bea('0x2b')](function(_0x26cb2d){if(_0x26cb2d[_0x2bea('0xa2')]['length']>0x0){_0x3502b1=_0x26cb2d[_0x2bea('0xa2')];}console[_0x2bea('0xa3')](_0x2bea('0xa4'),_0x3502b1);_0x2fa3ce=[];_0x3e5bfb=Object['assign']([],_0x3502b1);_['remove'](_0x3e5bfb,function(_0x350d79){return!_0x48555b[_0x2bea('0xa5')](_0x350d79[_0x2bea('0x2e')]);});_0x3e5bfb[_0x2bea('0xa6')](function(_0x250f34){var _0x1c5555=createFieldObject(_0x4955ea,_0x49f312,_0x250f34[_0x2bea('0xa7')],_0x250f34[_0x2bea('0x2e')],_0x250f34['label'],![]);_0x2fa3ce['push'](_0x1c5555);});return Promise[_0x2bea('0xa8')](_0x2fa3ce);})[_0x2bea('0x2b')](function(_0x1f91c0){_0x5b2c28=_0x1f91c0;_0x38ed34=Object[_0x2bea('0xa9')]([],_0x3502b1);console[_0x2bea('0xa3')](_0x2bea('0xaa'),_0x3502b1);_[_0x2bea('0xab')](_0x38ed34,function(_0xa66459){return _0x53e5c1['includes'](_0xa66459[_0x2bea('0x2e')]);});console[_0x2bea('0xa3')]('TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom',_0x38ed34);_0x2fa3ce=[];_0x38ed34[_0x2bea('0xa6')](function(_0x4a91de){var _0x132471=createFieldObject(_0x4955ea,_0x49f312,_0x4a91de[_0x2bea('0xa7')],_0x4a91de[_0x2bea('0x2e')],_0x4a91de[_0x2bea('0xac')],!![]);_0x2fa3ce[_0x2bea('0xad')](_0x132471);});return Promise[_0x2bea('0xa8')](_0x2fa3ce);})[_0x2bea('0x2b')](function(_0x58d4c0){_0x502a0d=_0x58d4c0;var _0x5032f2=_0x5b2c28[_0x2bea('0xae')](_0x502a0d);return{'count':_0x5032f2[_0x2bea('0x3b')],'rows':_0x5032f2};})[_0x2bea('0x2b')](respondWithResult(_0x2fcac6,null))['catch'](function(_0x5036dc){console[_0x2bea('0xa3')](_0x2bea('0xaf')+_0x5036dc);var _0x27b4f6=_0x1f0dbc['query'][_0x2bea('0xb0')]?0x1f4:_0x5036dc[_0x2bea('0xb1')]||0x1f4;logger[_0x2bea('0x2c')](_0x5036dc[_0x2bea('0x2d')]);delete _0x5036dc[_0x2bea('0x2e')];if(_0x27b4f6===0x191){_0x27b4f6=0x190;}_0x2fcac6[_0x2bea('0x1e')](_0x27b4f6)[_0x2bea('0xb2')](_0x1f0dbc[_0x2bea('0x35')][_0x2bea('0xb0')]?{'message':_0x2bea('0xb3'),'statusCode':_0x5036dc[_0x2bea('0xb1')]}:_0x5036dc);});};function createFieldObject(_0x541b5f,_0x508fbd,_0x43fa97,_0x2934a0,_0x37906e,_0x267e89){return new Promise(function(_0x2871cf,_0x17a8e0){var _0xcf69={'id':_0x2934a0,'name':_0x37906e,'custom':_0x267e89};if(_0x43fa97===_0x2bea('0xb4')){_0xcf69['options']=[{'name':_0x2bea('0xb5'),'value':_0x2bea('0xb6')},{'name':_0x2bea('0xb7'),'value':'false'}];_0x2871cf(_0xcf69);}else{var _0x4dcc40={'method':_0x2bea('0xb8'),'uri':_0x541b5f+_0x2bea('0xb9')+_0x2934a0,'auth':_0x508fbd,'json':!![]};return rp(_0x4dcc40)[_0x2bea('0x2b')](function(_0x595dc6){var _0x598dd4=[];if(_0x595dc6[_0x2bea('0xa2')][_0x2bea('0x3b')]>0x0){_0x595dc6[_0x2bea('0xa2')][_0x2bea('0xa6')](function(_0x44f822){if(_0x44f822[_0x2bea('0xba')]===_0x2bea('0xbb')){var _0x8cc00e={'name':_0x44f822['label'],'value':_0x44f822[_0x2bea('0xbc')]};_0x598dd4[_0x2bea('0xad')](_0x8cc00e);}});}_0xcf69[_0x2bea('0x44')]=_0x598dd4;if(_0xcf69[_0x2bea('0x44')]['length']>0x0){_0x2871cf(_0xcf69);}else{if(_0x267e89==![]){_0x2871cf();}else{_0x2871cf(_0xcf69);}}});}});}
\ No newline at end of file
+var _0x8336=['../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','stack','name','index','map','ServicenowAccount','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','rawAttributes','find','catch','create','body','destroy','ServicenowConfiguration','pick','getConfigurations','addConfiguration','findOne','AccountId','getSubjects','channel','Descriptions','getDescriptions','Subjects','ServicenowField','made_sla','hold_reason','knowledge','close_code','notify','incident_state','severity','parent','caused_by','watch_list','upon_reject','child_incidents','approval_history','number','resolved_by','sys_updated_by','opened_by','user_input','sys_created_on','sys_domain','state','calendar_stc','closed_at','cmdb_ci','delivery_plan','impact','active','work_notes_list','priority','sys_domain_path','rfc','expected_start','opened_at','group_list','work_end','reopened_time','caller_id','subcategory','work_notes','short_description','delivery_task','assignment_group','business_stc','additional_assignee_list','description','calendar_duration','follow_up','parent_incident','reopened_by','urgency','reassignment_count','activity_due','assigned_to','comments','sla_due','approval','comments_and_work_notes','due_date','sys_mod_count','escalation','upon_approval','correlation_id','location','category','username','email','remoteUri','slice','substring','lastIndexOf','%s/api/now/doc/table/schema/','format','%s/api/now/table/','password','GET','result','log','assign','remove','includes','forEach','internalType','label','push','all','TCL:\x20_object','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','concat','ServiceNow\x20error:\x20','test','send','boolean','True','true','False','false','sys_choice?sysparm_query=name=incident^element=','inactive','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x8336,0x160));var _0x6833=function(_0x903228,_0x42c429){_0x903228=_0x903228-0x0;var _0xcec81d=_0x8336[_0x903228];return _0xcec81d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6833('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6833('0x1'));var rp=require('request-promise');var moment=require(_0x6833('0x2'));var BPromise=require(_0x6833('0x3'));var Mustache=require(_0x6833('0x4'));var util=require(_0x6833('0x5'));var path=require(_0x6833('0x6'));var sox=require(_0x6833('0x7'));var csv=require(_0x6833('0x8'));var ejs=require(_0x6833('0x9'));var fs=require('fs');var fs_extra=require(_0x6833('0xa'));var _=require(_0x6833('0xb'));var squel=require(_0x6833('0xc'));var crypto=require('crypto');var jsforce=require(_0x6833('0xd'));var deskjs=require(_0x6833('0xe'));var toCsv=require('to-csv');var querystring=require(_0x6833('0xf'));var Papa=require(_0x6833('0x10'));var Redis=require('ioredis');var authService=require(_0x6833('0x11'));var qs=require(_0x6833('0x12'));var as=require(_0x6833('0x13'));var hardwareService=require(_0x6833('0x14'));var logger=require('../../config/logger')(_0x6833('0x15'));var utils=require(_0x6833('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x6833('0x17'));var db=require(_0x6833('0x18'))['db'];var integrations=require(_0x6833('0x19'));function respondWithStatusCode(_0x9d131a,_0x21bdb8){_0x21bdb8=_0x21bdb8||0xcc;return function(_0x34a15c){if(_0x34a15c){return _0x9d131a[_0x6833('0x1a')](_0x21bdb8);}return _0x9d131a[_0x6833('0x1b')](_0x21bdb8)[_0x6833('0x1c')]();};}function respondWithResult(_0x560cb6,_0x52d49f){_0x52d49f=_0x52d49f||0xc8;return function(_0x4d868e){if(_0x4d868e){return _0x560cb6['status'](_0x52d49f)[_0x6833('0x1d')](_0x4d868e);}};}function respondWithFilteredResult(_0x3cf88b,_0x38c9cb){return function(_0xddce6d){if(_0xddce6d){var _0x33af=typeof _0x38c9cb[_0x6833('0x1e')]===_0x6833('0x1f')&&typeof _0x38c9cb[_0x6833('0x20')]===_0x6833('0x1f');var _0x297f67=_0xddce6d[_0x6833('0x21')];var _0x5cffcd=_0x33af?0x0:_0x38c9cb['offset'];var _0x119964=_0x33af?_0xddce6d[_0x6833('0x21')]:_0x38c9cb[_0x6833('0x1e')]+_0x38c9cb['limit'];var _0x49d259;if(_0x119964>=_0x297f67){_0x119964=_0x297f67;_0x49d259=0xc8;}else{_0x49d259=0xce;}_0x3cf88b[_0x6833('0x1b')](_0x49d259);return _0x3cf88b[_0x6833('0x22')](_0x6833('0x23'),_0x5cffcd+'-'+_0x119964+'/'+_0x297f67)['json'](_0xddce6d);}return null;};}function patchUpdates(_0x5af06f){return function(_0x5b8524){try{jsonpatch[_0x6833('0x24')](_0x5b8524,_0x5af06f,!![]);}catch(_0x22dd9d){return BPromise[_0x6833('0x25')](_0x22dd9d);}return _0x5b8524[_0x6833('0x26')]();};}function saveUpdates(_0x5e75db,_0x424c0c){return function(_0x18bc5a){if(_0x18bc5a){return _0x18bc5a[_0x6833('0x27')](_0x5e75db)['then'](function(_0x2f3dda){return _0x2f3dda;});}return null;};}function removeEntity(_0x5c58de,_0x395918){return function(_0x2b64f0){if(_0x2b64f0){return _0x2b64f0['destroy']()[_0x6833('0x28')](function(){_0x5c58de[_0x6833('0x1b')](0xcc)[_0x6833('0x1c')]();});}};}function handleEntityNotFound(_0x81cc84,_0x39d3a7){return function(_0x176ec8){if(!_0x176ec8){_0x81cc84[_0x6833('0x1a')](0x194);}return _0x176ec8;};}function handleError(_0xba6ea1,_0x525ccd){_0x525ccd=_0x525ccd||0x1f4;return function(_0x696b39){logger['error'](_0x696b39[_0x6833('0x29')]);if(_0x696b39[_0x6833('0x2a')]){delete _0x696b39[_0x6833('0x2a')];}_0xba6ea1[_0x6833('0x1b')](_0x525ccd)['send'](_0x696b39);};}exports[_0x6833('0x2b')]=function(_0x3ec555,_0x12f31b){var _0x32f5c8={},_0x5e2f42={},_0x56d417={'count':0x0,'rows':[]};var _0x24f322=_[_0x6833('0x2c')](db[_0x6833('0x2d')]['rawAttributes'],function(_0x490ed6){return{'name':_0x490ed6[_0x6833('0x2e')],'type':_0x490ed6[_0x6833('0x2f')][_0x6833('0x30')]};});_0x5e2f42[_0x6833('0x31')]=_['map'](_0x24f322,_0x6833('0x2a'));_0x5e2f42[_0x6833('0x32')]=_[_0x6833('0x33')](_0x3ec555[_0x6833('0x32')]);_0x5e2f42[_0x6833('0x34')]=_[_0x6833('0x35')](_0x5e2f42['model'],_0x5e2f42[_0x6833('0x32')]);_0x32f5c8[_0x6833('0x36')]=_[_0x6833('0x35')](_0x5e2f42['model'],qs[_0x6833('0x37')](_0x3ec555[_0x6833('0x32')][_0x6833('0x37')]));_0x32f5c8['attributes']=_0x32f5c8[_0x6833('0x36')][_0x6833('0x38')]?_0x32f5c8['attributes']:_0x5e2f42[_0x6833('0x31')];if(!_0x3ec555[_0x6833('0x32')][_0x6833('0x39')](_0x6833('0x3a'))){_0x32f5c8[_0x6833('0x20')]=qs[_0x6833('0x20')](_0x3ec555['query'][_0x6833('0x20')]);_0x32f5c8['offset']=qs[_0x6833('0x1e')](_0x3ec555[_0x6833('0x32')][_0x6833('0x1e')]);}_0x32f5c8[_0x6833('0x3b')]=qs[_0x6833('0x3c')](_0x3ec555['query'][_0x6833('0x3c')]);_0x32f5c8[_0x6833('0x3d')]=qs['filters'](_['pick'](_0x3ec555['query'],_0x5e2f42[_0x6833('0x34')]),_0x24f322);if(_0x3ec555[_0x6833('0x32')]['filter']){_0x32f5c8[_0x6833('0x3d')]=_[_0x6833('0x3e')](_0x32f5c8[_0x6833('0x3d')],{'$or':_[_0x6833('0x2c')](_0x24f322,function(_0x44fd9b){if(_0x44fd9b[_0x6833('0x2f')]!==_0x6833('0x3f')){var _0x5cbc6f={};_0x5cbc6f[_0x44fd9b['name']]={'$like':'%'+_0x3ec555[_0x6833('0x32')][_0x6833('0x40')]+'%'};return _0x5cbc6f;}})});}_0x32f5c8=_[_0x6833('0x3e')]({},_0x32f5c8,_0x3ec555[_0x6833('0x41')]);var _0x1e3f6e={'where':_0x32f5c8['where']};return db[_0x6833('0x2d')][_0x6833('0x21')](_0x1e3f6e)['then'](function(_0x4dcbc3){_0x56d417[_0x6833('0x21')]=_0x4dcbc3;if(_0x3ec555[_0x6833('0x32')][_0x6833('0x42')]){_0x32f5c8[_0x6833('0x43')]=[{'all':!![]}];}return db[_0x6833('0x2d')][_0x6833('0x44')](_0x32f5c8);})[_0x6833('0x28')](function(_0x3c214b){_0x56d417[_0x6833('0x45')]=_0x3c214b;return _0x56d417;})[_0x6833('0x28')](respondWithFilteredResult(_0x12f31b,_0x32f5c8))['catch'](handleError(_0x12f31b,null));};exports[_0x6833('0x46')]=function(_0x3afb37,_0x233566){var _0x441af5={'raw':![],'where':{'id':_0x3afb37[_0x6833('0x47')]['id']}},_0xffcd48={};_0xffcd48[_0x6833('0x31')]=_['keys'](db[_0x6833('0x2d')][_0x6833('0x48')]);_0xffcd48[_0x6833('0x32')]=_[_0x6833('0x33')](_0x3afb37[_0x6833('0x32')]);_0xffcd48[_0x6833('0x34')]=_[_0x6833('0x35')](_0xffcd48[_0x6833('0x31')],_0xffcd48[_0x6833('0x32')]);_0x441af5['attributes']=_['intersection'](_0xffcd48[_0x6833('0x31')],qs['fields'](_0x3afb37[_0x6833('0x32')][_0x6833('0x37')]));_0x441af5[_0x6833('0x36')]=_0x441af5[_0x6833('0x36')][_0x6833('0x38')]?_0x441af5[_0x6833('0x36')]:_0xffcd48[_0x6833('0x31')];if(_0x3afb37[_0x6833('0x32')][_0x6833('0x42')]){_0x441af5[_0x6833('0x43')]=[{'all':!![]}];}_0x441af5=_[_0x6833('0x3e')]({},_0x441af5,_0x3afb37[_0x6833('0x41')]);return db['ServicenowAccount'][_0x6833('0x49')](_0x441af5)['then'](handleEntityNotFound(_0x233566,null))[_0x6833('0x28')](respondWithResult(_0x233566,null))[_0x6833('0x4a')](handleError(_0x233566,null));};exports[_0x6833('0x4b')]=function(_0x40e040,_0x2a344b){return db[_0x6833('0x2d')][_0x6833('0x4b')](_0x40e040['body'],{})[_0x6833('0x28')](respondWithResult(_0x2a344b,0xc9))[_0x6833('0x4a')](handleError(_0x2a344b,null));};exports['update']=function(_0x2d118c,_0x3219f6){if(_0x2d118c[_0x6833('0x4c')]['id']){delete _0x2d118c['body']['id'];}return db['ServicenowAccount'][_0x6833('0x49')]({'where':{'id':_0x2d118c[_0x6833('0x47')]['id']}})[_0x6833('0x28')](handleEntityNotFound(_0x3219f6,null))[_0x6833('0x28')](saveUpdates(_0x2d118c[_0x6833('0x4c')],null))[_0x6833('0x28')](respondWithResult(_0x3219f6,null))[_0x6833('0x4a')](handleError(_0x3219f6,null));};exports[_0x6833('0x4d')]=function(_0x5859b2,_0x35ced8){return db[_0x6833('0x2d')][_0x6833('0x49')]({'where':{'id':_0x5859b2[_0x6833('0x47')]['id']}})[_0x6833('0x28')](handleEntityNotFound(_0x35ced8,null))[_0x6833('0x28')](removeEntity(_0x35ced8,null))[_0x6833('0x4a')](handleError(_0x35ced8,null));};exports['getConfigurations']=function(_0xd3ae5e,_0x24596d,_0x1936e3){var _0x23b059={};var _0x5dd019={};var _0x46b264;var _0x4e8067;return db[_0x6833('0x2d')]['findOne']({'where':{'id':_0xd3ae5e[_0x6833('0x47')]['id']}})[_0x6833('0x28')](handleEntityNotFound(_0x24596d,null))[_0x6833('0x28')](function(_0x5e59a7){if(_0x5e59a7){_0x46b264=_0x5e59a7;_0x5dd019[_0x6833('0x31')]=_[_0x6833('0x33')](db[_0x6833('0x4e')][_0x6833('0x48')]);_0x5dd019['query']=_[_0x6833('0x33')](_0xd3ae5e[_0x6833('0x32')]);_0x5dd019[_0x6833('0x34')]=_['intersection'](_0x5dd019[_0x6833('0x31')],_0x5dd019[_0x6833('0x32')]);_0x23b059[_0x6833('0x36')]=_[_0x6833('0x35')](_0x5dd019[_0x6833('0x31')],qs[_0x6833('0x37')](_0xd3ae5e[_0x6833('0x32')]['fields']));_0x23b059[_0x6833('0x36')]=_0x23b059[_0x6833('0x36')]['length']?_0x23b059[_0x6833('0x36')]:_0x5dd019[_0x6833('0x31')];_0x23b059[_0x6833('0x3b')]=qs['sort'](_0xd3ae5e[_0x6833('0x32')][_0x6833('0x3c')]);_0x23b059[_0x6833('0x3d')]=qs[_0x6833('0x34')](_[_0x6833('0x4f')](_0xd3ae5e[_0x6833('0x32')],_0x5dd019[_0x6833('0x34')]));if(_0xd3ae5e[_0x6833('0x32')][_0x6833('0x40')]){_0x23b059[_0x6833('0x3d')]=_[_0x6833('0x3e')](_0x23b059[_0x6833('0x3d')],{'$or':_['map'](_0x23b059[_0x6833('0x36')],function(_0xebd89){var _0x3eeaee={};_0x3eeaee[_0xebd89]={'$like':'%'+_0xd3ae5e[_0x6833('0x32')][_0x6833('0x40')]+'%'};return _0x3eeaee;})});}_0x23b059=_[_0x6833('0x3e')]({},_0x23b059,_0xd3ae5e[_0x6833('0x41')]);return _0x46b264['getConfigurations'](_0x23b059);}})[_0x6833('0x28')](function(_0x4dc0d5){if(_0x4dc0d5){_0x4e8067=_0x4dc0d5[_0x6833('0x38')];if(!_0xd3ae5e[_0x6833('0x32')]['hasOwnProperty']('nolimit')){_0x23b059['limit']=qs[_0x6833('0x20')](_0xd3ae5e[_0x6833('0x32')][_0x6833('0x20')]);_0x23b059[_0x6833('0x1e')]=qs[_0x6833('0x1e')](_0xd3ae5e[_0x6833('0x32')][_0x6833('0x1e')]);}return _0x46b264[_0x6833('0x50')](_0x23b059);}})['then'](function(_0x5ed879){if(_0x5ed879){return _0x5ed879?{'count':_0x4e8067,'rows':_0x5ed879}:null;}})['then'](respondWithResult(_0x24596d,null))['catch'](handleError(_0x24596d,null));};exports[_0x6833('0x51')]=function(_0x3248ee,_0x23b912,_0x2e1619){if(_0x3248ee[_0x6833('0x4c')]['id']){delete _0x3248ee[_0x6833('0x4c')]['id'];}return db[_0x6833('0x2d')][_0x6833('0x52')]({'where':{'id':_0x3248ee[_0x6833('0x47')]['id']}})[_0x6833('0x28')](handleEntityNotFound(_0x23b912,null))[_0x6833('0x28')](function(_0x34b07e){if(_0x34b07e){_0x3248ee['body'][_0x6833('0x53')]=_0x34b07e['id'];_0x3248ee['body']['Subjects']=integrations[_0x6833('0x54')](_0x3248ee[_0x6833('0x4c')][_0x6833('0x55')],_0x3248ee[_0x6833('0x4c')][_0x6833('0x2f')]);_0x3248ee[_0x6833('0x4c')][_0x6833('0x56')]=integrations[_0x6833('0x57')](_0x3248ee[_0x6833('0x4c')][_0x6833('0x55')],_0x3248ee[_0x6833('0x4c')][_0x6833('0x2f')]);return db[_0x6833('0x4e')][_0x6833('0x4b')](_0x3248ee['body'],{'include':[{'model':db['ServicenowField'],'as':_0x6833('0x58')},{'model':db[_0x6833('0x59')],'as':_0x6833('0x56')}]});}return null;})[_0x6833('0x28')](respondWithResult(_0x23b912,null))[_0x6833('0x4a')](handleError(_0x23b912,null));};exports['getFields']=function(_0x141f1d,_0x3289ae,_0x2e14c3){var _0x4fc85a=[_0x6833('0x5a'),_0x6833('0x5b'),_0x6833('0x5c'),'subcategory',_0x6833('0x5d'),_0x6833('0x5e'),_0x6833('0x5f'),_0x6833('0x60'),'category'];var _0x1cbec2=[_0x6833('0x61'),_0x6833('0x5a'),_0x6833('0x62'),_0x6833('0x63'),_0x6833('0x64'),'sys_updated_on',_0x6833('0x65'),_0x6833('0x5b'),_0x6833('0x66'),_0x6833('0x67'),_0x6833('0x68'),_0x6833('0x69'),_0x6833('0x6a'),_0x6833('0x6b'),_0x6833('0x6c'),_0x6833('0x6d'),_0x6833('0x6e'),'sys_created_by',_0x6833('0x5c'),_0x6833('0x3b'),_0x6833('0x6f'),_0x6833('0x70'),_0x6833('0x71'),_0x6833('0x72'),_0x6833('0x73'),_0x6833('0x74'),_0x6833('0x75'),'business_service',_0x6833('0x76'),_0x6833('0x77'),_0x6833('0x78'),'time_worked',_0x6833('0x79'),_0x6833('0x7a'),'business_duration',_0x6833('0x7b'),_0x6833('0x7c'),_0x6833('0x7d'),'resolved_at',_0x6833('0x7e'),'approval_set',_0x6833('0x7f'),_0x6833('0x80'),_0x6833('0x81'),_0x6833('0x5d'),'correlation_display',_0x6833('0x82'),'work_start',_0x6833('0x83'),_0x6833('0x84'),_0x6833('0x85'),_0x6833('0x86'),_0x6833('0x87'),_0x6833('0x5e'),'sys_class_name','close_notes','closed_by',_0x6833('0x88'),_0x6833('0x89'),'sys_id','contact_type',_0x6833('0x8a'),_0x6833('0x5f'),_0x6833('0x8b'),'problem_id','company',_0x6833('0x8c'),_0x6833('0x8d'),_0x6833('0x8e'),_0x6833('0x60'),_0x6833('0x8f'),_0x6833('0x90'),_0x6833('0x91'),_0x6833('0x92'),_0x6833('0x93'),_0x6833('0x94'),'reopen_count','sys_tags',_0x6833('0x95'),_0x6833('0x96'),_0x6833('0x97'),_0x6833('0x98'),_0x6833('0x99')];var _0x2f78e0='';var _0x473ae3='';var _0x10f4f8=[];var _0x5e9bc9='';var _0x2539e1='';var _0xfdb80c=[];var _0x13f41a='';var _0xe0e423='';var _0x4cd36a={};var _0x56ea1b='';return db[_0x6833('0x2d')][_0x6833('0x52')]({'where':{'id':_0x141f1d[_0x6833('0x47')]['id']},'attributes':['id',_0x6833('0x9a'),'password',_0x6833('0x9b'),_0x6833('0x9c'),'serverUrl']})['then'](handleEntityNotFound(_0x3289ae,null))['then'](function(_0x36516b){if(_0x36516b){_0x56ea1b=_0x36516b['remoteUri'];var _0x53ef12=_0x56ea1b[_0x6833('0x9d')](-0x1);if(_0x53ef12==='/'){_0x56ea1b=_0x56ea1b[_0x6833('0x9e')](0x0,_0x56ea1b[_0x6833('0x9f')](_0x53ef12));}_0xe0e423=util['format'](_0x6833('0xa0'),_0x56ea1b);_0x13f41a=util[_0x6833('0xa1')](_0x6833('0xa2'),_0x56ea1b);_0x4cd36a={'user':_0x36516b[_0x6833('0x9a')],'pass':_0x36516b[_0x6833('0xa3')]};var _0x900a94={'method':_0x6833('0xa4'),'uri':_0xe0e423+'incident?sysparm_display_value=all','auth':_0x4cd36a,'json':!![]};return rp(_0x900a94);}})[_0x6833('0x28')](function(_0x25e178){if(_0x25e178[_0x6833('0xa5')][_0x6833('0x38')]>0x0){_0x2f78e0=_0x25e178[_0x6833('0xa5')];}console[_0x6833('0xa6')]('incident\x20table\x20objects',_0x2f78e0);_0xfdb80c=[];_0x473ae3=Object[_0x6833('0xa7')]([],_0x2f78e0);_[_0x6833('0xa8')](_0x473ae3,function(_0x37c7ec){return!_0x4fc85a[_0x6833('0xa9')](_0x37c7ec[_0x6833('0x2a')]);});_0x473ae3[_0x6833('0xaa')](function(_0x905f0d){var _0x5c3d93=createFieldObject(_0x13f41a,_0x4cd36a,_0x905f0d[_0x6833('0xab')],_0x905f0d[_0x6833('0x2a')],_0x905f0d[_0x6833('0xac')],![]);_0xfdb80c[_0x6833('0xad')](_0x5c3d93);});return Promise[_0x6833('0xae')](_0xfdb80c);})[_0x6833('0x28')](function(_0x4c2459){_0x10f4f8=_0x4c2459;_0x5e9bc9=Object[_0x6833('0xa7')]([],_0x2f78e0);console['log'](_0x6833('0xaf'),_0x2f78e0);_['remove'](_0x5e9bc9,function(_0x4dd653){return _0x1cbec2[_0x6833('0xa9')](_0x4dd653[_0x6833('0x2a')]);});console[_0x6833('0xa6')](_0x6833('0xb0'),_0x5e9bc9);_0xfdb80c=[];_0x5e9bc9[_0x6833('0xaa')](function(_0x4339af){var _0x548ff4=createFieldObject(_0x13f41a,_0x4cd36a,_0x4339af[_0x6833('0xab')],_0x4339af[_0x6833('0x2a')],_0x4339af[_0x6833('0xac')],!![]);_0xfdb80c[_0x6833('0xad')](_0x548ff4);});return Promise['all'](_0xfdb80c);})['then'](function(_0x2fa11f){_0x2539e1=_0x2fa11f;var _0x478f91=_0x10f4f8[_0x6833('0xb1')](_0x2539e1);return{'count':_0x478f91['length'],'rows':_0x478f91};})[_0x6833('0x28')](respondWithResult(_0x3289ae,null))[_0x6833('0x4a')](function(_0x373add){console[_0x6833('0xa6')](_0x6833('0xb2')+_0x373add);var _0xa535b1=_0x141f1d['query'][_0x6833('0xb3')]?0x1f4:_0x373add['statusCode']||0x1f4;logger['error'](_0x373add['stack']);delete _0x373add['name'];if(_0xa535b1===0x191){_0xa535b1=0x190;}_0x3289ae[_0x6833('0x1b')](_0xa535b1)[_0x6833('0xb4')](_0x141f1d[_0x6833('0x32')][_0x6833('0xb3')]?{'message':'Wrong\x20credentials','statusCode':_0x373add['statusCode']}:_0x373add);});};function createFieldObject(_0x5b9c23,_0x5c4f7d,_0x2d80cb,_0x2b8cc4,_0x4984aa,_0x58612d){return new Promise(function(_0x593133,_0x6c9098){var _0x205f36={'id':_0x2b8cc4,'name':_0x4984aa,'custom':_0x58612d};if(_0x2d80cb===_0x6833('0xb5')){_0x205f36[_0x6833('0x41')]=[{'name':_0x6833('0xb6'),'value':_0x6833('0xb7')},{'name':_0x6833('0xb8'),'value':_0x6833('0xb9')}];_0x593133(_0x205f36);}else{var _0xb18ea7={'method':'GET','uri':_0x5b9c23+_0x6833('0xba')+_0x2b8cc4,'auth':_0x5c4f7d,'json':!![]};return rp(_0xb18ea7)[_0x6833('0x28')](function(_0x5c58c5){var _0x4b8a68=[];if(_0x5c58c5[_0x6833('0xa5')][_0x6833('0x38')]>0x0){_0x5c58c5[_0x6833('0xa5')]['forEach'](function(_0x50e2d8){if(_0x50e2d8[_0x6833('0xbb')]===_0x6833('0xb9')){var _0x1f4f6d={'name':_0x50e2d8[_0x6833('0xac')],'value':_0x50e2d8['value']};_0x4b8a68[_0x6833('0xad')](_0x1f4f6d);}});}_0x205f36[_0x6833('0x41')]=_0x4b8a68;if(_0x205f36[_0x6833('0x41')][_0x6833('0x38')]>0x0){_0x593133(_0x205f36);}else{if(_0x58612d==![]){_0x593133();}else{_0x593133(_0x205f36);}}});}});}
\ No newline at end of file
index eff5173..155bd1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee14=['ServicenowAccount','int_servicenow_accounts','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intServicenowAccount.attributes','exports','define'];(function(_0x50e650,_0x2688e7){var _0x22cb82=function(_0x33f75f){while(--_0x33f75f){_0x50e650['push'](_0x50e650['shift']());}};_0x22cb82(++_0x2688e7);}(_0xee14,0x13a));var _0x4ee1=function(_0x3345a3,_0x17a2f1){_0x3345a3=_0x3345a3-0x0;var _0xf2af5b=_0xee14[_0x3345a3];return _0xf2af5b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4ee1('0x0'))(_0x4ee1('0x1'));var moment=require(_0x4ee1('0x2'));var BPromise=require(_0x4ee1('0x3'));var rp=require(_0x4ee1('0x4'));var fs=require('fs');var path=require(_0x4ee1('0x5'));var rimraf=require(_0x4ee1('0x6'));var config=require(_0x4ee1('0x7'));var attributes=require(_0x4ee1('0x8'));var integrations=require('../../components/integrations/configuration');module[_0x4ee1('0x9')]=function(_0x573700,_0x327c18){return _0x573700[_0x4ee1('0xa')](_0x4ee1('0xb'),attributes,{'tableName':_0x4ee1('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdc97=['request-promise','path','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','exports','int_servicenow_accounts','lodash','util','../../config/logger','moment'];(function(_0x388dc1,_0x3a6c1c){var _0x3ccf0b=function(_0x2fcfb9){while(--_0x2fcfb9){_0x388dc1['push'](_0x388dc1['shift']());}};_0x3ccf0b(++_0x3a6c1c);}(_0xdc97,0x13b));var _0x7dc9=function(_0x9b308e,_0x1244d0){_0x9b308e=_0x9b308e-0x0;var _0x6ad006=_0xdc97[_0x9b308e];return _0x6ad006;};'use strict';var _=require(_0x7dc9('0x0'));var util=require(_0x7dc9('0x1'));var logger=require(_0x7dc9('0x2'))('api');var moment=require(_0x7dc9('0x3'));var BPromise=require('bluebird');var rp=require(_0x7dc9('0x4'));var fs=require('fs');var path=require(_0x7dc9('0x5'));var rimraf=require('rimraf');var config=require(_0x7dc9('0x6'));var attributes=require(_0x7dc9('0x7'));var integrations=require(_0x7dc9('0x8'));module[_0x7dc9('0x9')]=function(_0x589f02,_0x2636ef){return _0x589f02['define']('ServicenowAccount',attributes,{'tableName':_0x7dc9('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 830250e..d3ba395 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7853=['map','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','ServicenowAccount,\x20%s,\x20%s','message','result','GetServicenowAccount','findAll','options','raw','where','attributes','limit','include','then','catch','ShowServicenowAccount','ServicenowAccount','find','model'];(function(_0x4d72ca,_0x3a2ff3){var _0x24beff=function(_0x116c07){while(--_0x116c07){_0x4d72ca['push'](_0x4d72ca['shift']());}};_0x24beff(++_0x3a2ff3);}(_0x7853,0x6d));var _0x3785=function(_0x2a711e,_0x1ce35c){_0x2a711e=_0x2a711e-0x0;var _0x589df7=_0x7853[_0x2a711e];return _0x589df7;};'use strict';var _=require(_0x3785('0x0'));var util=require(_0x3785('0x1'));var moment=require(_0x3785('0x2'));var BPromise=require('bluebird');var rs=require(_0x3785('0x3'));var fs=require('fs');var Redis=require(_0x3785('0x4'));var db=require(_0x3785('0x5'))['db'];var utils=require(_0x3785('0x6'));var logger=require(_0x3785('0x7'))(_0x3785('0x8'));var config=require(_0x3785('0x9'));var jayson=require(_0x3785('0xa'));var client=jayson[_0x3785('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x206db3,_0x350ccf,_0x10132c){return new BPromise(function(_0x2b7533,_0x247495){return client['request'](_0x206db3,_0x10132c)['then'](function(_0x8e85d0){logger[_0x3785('0xc')]('ServicenowAccount,\x20%s,\x20%s',_0x350ccf,_0x3785('0xd'));logger[_0x3785('0xe')](_0x3785('0xf'),_0x350ccf,_0x3785('0xd'),JSON[_0x3785('0x10')](_0x8e85d0));if(_0x8e85d0[_0x3785('0x11')]){if(_0x8e85d0['error']['code']===0x1f4){logger['error'](_0x3785('0x12'),_0x350ccf,_0x8e85d0[_0x3785('0x11')][_0x3785('0x13')]);return _0x247495(_0x8e85d0[_0x3785('0x11')][_0x3785('0x13')]);}logger[_0x3785('0x11')]('ServicenowAccount,\x20%s,\x20%s',_0x350ccf,_0x8e85d0[_0x3785('0x11')]['message']);return _0x2b7533(_0x8e85d0[_0x3785('0x11')][_0x3785('0x13')]);}else{logger[_0x3785('0xc')](_0x3785('0x12'),_0x350ccf,_0x3785('0xd'));_0x2b7533(_0x8e85d0[_0x3785('0x14')][_0x3785('0x13')]);}})['catch'](function(_0x36789d){logger[_0x3785('0x11')](_0x3785('0x12'),_0x350ccf,_0x36789d);_0x247495(_0x36789d);});});}exports[_0x3785('0x15')]=function(_0x42ce23){var _0xb7eb5c=this;return new Promise(function(_0x4c5dd9,_0x1cf0cd){return db['ServicenowAccount'][_0x3785('0x16')]({'raw':_0x42ce23[_0x3785('0x17')]?_0x42ce23[_0x3785('0x17')][_0x3785('0x18')]===undefined?!![]:![]:!![],'where':_0x42ce23[_0x3785('0x17')]?_0x42ce23[_0x3785('0x17')][_0x3785('0x19')]||null:null,'attributes':_0x42ce23[_0x3785('0x17')]?_0x42ce23[_0x3785('0x17')][_0x3785('0x1a')]||null:null,'limit':_0x42ce23[_0x3785('0x17')]?_0x42ce23[_0x3785('0x17')][_0x3785('0x1b')]||null:null,'include':_0x42ce23[_0x3785('0x17')]?_0x42ce23[_0x3785('0x17')][_0x3785('0x1c')]?_['map'](_0x42ce23[_0x3785('0x17')][_0x3785('0x1c')],function(_0x414ad8){return{'model':db[_0x414ad8['model']],'as':_0x414ad8['as'],'attributes':_0x414ad8[_0x3785('0x1a')],'include':_0x414ad8[_0x3785('0x1c')]?_['map'](_0x414ad8['include'],function(_0x38d7b5){return{'model':db[_0x38d7b5['model']],'as':_0x38d7b5['as'],'attributes':_0x38d7b5['attributes'],'include':_0x38d7b5[_0x3785('0x1c')]?_['map'](_0x38d7b5[_0x3785('0x1c')],function(_0x590bbf){return{'model':db[_0x590bbf['model']],'as':_0x590bbf['as'],'attributes':_0x590bbf[_0x3785('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x3785('0x1d')](function(_0x4b8b57){logger[_0x3785('0xc')](_0x3785('0x15'),_0x42ce23);logger['debug'](_0x3785('0x15'),_0x42ce23,JSON[_0x3785('0x10')](_0x4b8b57));_0x4c5dd9(_0x4b8b57);})[_0x3785('0x1e')](function(_0x1c6d6a){logger['error']('GetServicenowAccount',_0x1c6d6a[_0x3785('0x13')],_0x42ce23);_0x1cf0cd(_0xb7eb5c['error'](0x1f4,_0x1c6d6a[_0x3785('0x13')]));});});};exports[_0x3785('0x1f')]=function(_0x318060){var _0x58e7cd=this;return new Promise(function(_0x3e7574,_0x573244){return db[_0x3785('0x20')][_0x3785('0x21')]({'raw':_0x318060[_0x3785('0x17')]?_0x318060[_0x3785('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x318060[_0x3785('0x17')]?_0x318060[_0x3785('0x17')][_0x3785('0x19')]||null:null,'attributes':_0x318060[_0x3785('0x17')]?_0x318060[_0x3785('0x17')][_0x3785('0x1a')]||null:null,'include':_0x318060['options']?_0x318060[_0x3785('0x17')][_0x3785('0x1c')]?_['map'](_0x318060[_0x3785('0x17')][_0x3785('0x1c')],function(_0x10f941){return{'model':db[_0x10f941[_0x3785('0x22')]],'as':_0x10f941['as'],'attributes':_0x10f941[_0x3785('0x1a')],'include':_0x10f941[_0x3785('0x1c')]?_[_0x3785('0x23')](_0x10f941[_0x3785('0x1c')],function(_0x1b80de){return{'model':db[_0x1b80de[_0x3785('0x22')]],'as':_0x1b80de['as'],'attributes':_0x1b80de[_0x3785('0x1a')],'include':_0x1b80de[_0x3785('0x1c')]?_[_0x3785('0x23')](_0x1b80de[_0x3785('0x1c')],function(_0x129b56){return{'model':db[_0x129b56[_0x3785('0x22')]],'as':_0x129b56['as'],'attributes':_0x129b56[_0x3785('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x3785('0x1d')](function(_0x46c1bb){logger[_0x3785('0xc')](_0x3785('0x1f'),_0x318060);logger[_0x3785('0xe')](_0x3785('0x1f'),_0x318060,JSON[_0x3785('0x10')](_0x46c1bb));_0x3e7574(_0x46c1bb);})[_0x3785('0x1e')](function(_0x4ab055){logger[_0x3785('0x11')](_0x3785('0x1f'),_0x4ab055[_0x3785('0x13')],_0x318060);_0x573244(_0x58e7cd[_0x3785('0x11')](0x1f4,_0x4ab055[_0x3785('0x13')]));});});};
\ No newline at end of file
+var _0xb330=['ServicenowAccount,\x20%s,\x20%s,\x20%s','error','code','ServicenowAccount,\x20%s,\x20%s','message','request\x20sent','result','GetServicenowAccount','ServicenowAccount','findAll','options','raw','where','attributes','include','map','model','stringify','catch','ShowServicenowAccount','find','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug'];(function(_0x56d850,_0xc4a37f){var _0x22296c=function(_0x2c22e5){while(--_0x2c22e5){_0x56d850['push'](_0x56d850['shift']());}};_0x22296c(++_0xc4a37f);}(_0xb330,0x1ac));var _0x0b33=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb330[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x0b33('0x0'));var util=require(_0x0b33('0x1'));var moment=require(_0x0b33('0x2'));var BPromise=require(_0x0b33('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0b33('0x4'))['db'];var utils=require(_0x0b33('0x5'));var logger=require(_0x0b33('0x6'))(_0x0b33('0x7'));var config=require(_0x0b33('0x8'));var jayson=require(_0x0b33('0x9'));var client=jayson[_0x0b33('0xa')][_0x0b33('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x326428,_0x3023b1,_0x3f589f){return new BPromise(function(_0x5a1c9b,_0x214f38){return client[_0x0b33('0xc')](_0x326428,_0x3f589f)[_0x0b33('0xd')](function(_0x50c9e3){logger[_0x0b33('0xe')]('ServicenowAccount,\x20%s,\x20%s',_0x3023b1,'request\x20sent');logger[_0x0b33('0xf')](_0x0b33('0x10'),_0x3023b1,'request\x20sent',JSON['stringify'](_0x50c9e3));if(_0x50c9e3[_0x0b33('0x11')]){if(_0x50c9e3[_0x0b33('0x11')][_0x0b33('0x12')]===0x1f4){logger[_0x0b33('0x11')](_0x0b33('0x13'),_0x3023b1,_0x50c9e3[_0x0b33('0x11')][_0x0b33('0x14')]);return _0x214f38(_0x50c9e3[_0x0b33('0x11')][_0x0b33('0x14')]);}logger[_0x0b33('0x11')](_0x0b33('0x13'),_0x3023b1,_0x50c9e3[_0x0b33('0x11')][_0x0b33('0x14')]);return _0x5a1c9b(_0x50c9e3[_0x0b33('0x11')]['message']);}else{logger[_0x0b33('0xe')]('ServicenowAccount,\x20%s,\x20%s',_0x3023b1,_0x0b33('0x15'));_0x5a1c9b(_0x50c9e3[_0x0b33('0x16')][_0x0b33('0x14')]);}})['catch'](function(_0x1231d1){logger[_0x0b33('0x11')](_0x0b33('0x13'),_0x3023b1,_0x1231d1);_0x214f38(_0x1231d1);});});}exports[_0x0b33('0x17')]=function(_0x1cc9ec){var _0x2590ec=this;return new Promise(function(_0x5acc46,_0x260c43){return db[_0x0b33('0x18')][_0x0b33('0x19')]({'raw':_0x1cc9ec['options']?_0x1cc9ec[_0x0b33('0x1a')][_0x0b33('0x1b')]===undefined?!![]:![]:!![],'where':_0x1cc9ec[_0x0b33('0x1a')]?_0x1cc9ec['options'][_0x0b33('0x1c')]||null:null,'attributes':_0x1cc9ec[_0x0b33('0x1a')]?_0x1cc9ec[_0x0b33('0x1a')][_0x0b33('0x1d')]||null:null,'limit':_0x1cc9ec['options']?_0x1cc9ec[_0x0b33('0x1a')]['limit']||null:null,'include':_0x1cc9ec[_0x0b33('0x1a')]?_0x1cc9ec[_0x0b33('0x1a')][_0x0b33('0x1e')]?_[_0x0b33('0x1f')](_0x1cc9ec[_0x0b33('0x1a')][_0x0b33('0x1e')],function(_0x3d2032){return{'model':db[_0x3d2032[_0x0b33('0x20')]],'as':_0x3d2032['as'],'attributes':_0x3d2032[_0x0b33('0x1d')],'include':_0x3d2032['include']?_[_0x0b33('0x1f')](_0x3d2032[_0x0b33('0x1e')],function(_0x10d48a){return{'model':db[_0x10d48a['model']],'as':_0x10d48a['as'],'attributes':_0x10d48a['attributes'],'include':_0x10d48a[_0x0b33('0x1e')]?_[_0x0b33('0x1f')](_0x10d48a[_0x0b33('0x1e')],function(_0x1bbf22){return{'model':db[_0x1bbf22[_0x0b33('0x20')]],'as':_0x1bbf22['as'],'attributes':_0x1bbf22[_0x0b33('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x0b33('0xd')](function(_0x2a9a25){logger[_0x0b33('0xe')](_0x0b33('0x17'),_0x1cc9ec);logger[_0x0b33('0xf')]('GetServicenowAccount',_0x1cc9ec,JSON[_0x0b33('0x21')](_0x2a9a25));_0x5acc46(_0x2a9a25);})[_0x0b33('0x22')](function(_0x1c64fb){logger[_0x0b33('0x11')](_0x0b33('0x17'),_0x1c64fb[_0x0b33('0x14')],_0x1cc9ec);_0x260c43(_0x2590ec['error'](0x1f4,_0x1c64fb[_0x0b33('0x14')]));});});};exports[_0x0b33('0x23')]=function(_0x3817ec){var _0x5dfa77=this;return new Promise(function(_0x1162cf,_0x53603d){return db['ServicenowAccount'][_0x0b33('0x24')]({'raw':_0x3817ec[_0x0b33('0x1a')]?_0x3817ec[_0x0b33('0x1a')][_0x0b33('0x1b')]===undefined?!![]:![]:!![],'where':_0x3817ec[_0x0b33('0x1a')]?_0x3817ec['options'][_0x0b33('0x1c')]||null:null,'attributes':_0x3817ec[_0x0b33('0x1a')]?_0x3817ec[_0x0b33('0x1a')][_0x0b33('0x1d')]||null:null,'include':_0x3817ec[_0x0b33('0x1a')]?_0x3817ec['options'][_0x0b33('0x1e')]?_[_0x0b33('0x1f')](_0x3817ec[_0x0b33('0x1a')][_0x0b33('0x1e')],function(_0x2d1370){return{'model':db[_0x2d1370[_0x0b33('0x20')]],'as':_0x2d1370['as'],'attributes':_0x2d1370[_0x0b33('0x1d')],'include':_0x2d1370[_0x0b33('0x1e')]?_[_0x0b33('0x1f')](_0x2d1370[_0x0b33('0x1e')],function(_0x277fe9){return{'model':db[_0x277fe9[_0x0b33('0x20')]],'as':_0x277fe9['as'],'attributes':_0x277fe9[_0x0b33('0x1d')],'include':_0x277fe9[_0x0b33('0x1e')]?_[_0x0b33('0x1f')](_0x277fe9[_0x0b33('0x1e')],function(_0x5bef27){return{'model':db[_0x5bef27[_0x0b33('0x20')]],'as':_0x5bef27['as'],'attributes':_0x5bef27['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x520348){logger[_0x0b33('0xe')](_0x0b33('0x23'),_0x3817ec);logger['debug'](_0x0b33('0x23'),_0x3817ec,JSON[_0x0b33('0x21')](_0x520348));_0x1162cf(_0x520348);})[_0x0b33('0x22')](function(_0x86272){logger['error'](_0x0b33('0x23'),_0x86272['message'],_0x3817ec);_0x53603d(_0x5dfa77[_0x0b33('0x11')](0x1f4,_0x86272['message']));});});};
\ No newline at end of file
index 8e9c087..9f745db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe578=['../../components/interaction/service','./intServicenowConfiguration.controller','isAuthenticated','index','get','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service'];(function(_0x1e9424,_0x191cba){var _0x1bd96c=function(_0x5e952d){while(--_0x5e952d){_0x1e9424['push'](_0x1e9424['shift']());}};_0x1bd96c(++_0x191cba);}(_0xe578,0xa2));var _0x8e57=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xe578[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x8e57('0x0'));var util=require(_0x8e57('0x1'));var path=require(_0x8e57('0x2'));var timeout=require(_0x8e57('0x3'));var express=require(_0x8e57('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x8e57('0x5'));var interaction=require(_0x8e57('0x6'));var config=require('../../config/environment');var controller=require(_0x8e57('0x7'));router['get']('/',auth[_0x8e57('0x8')](),controller[_0x8e57('0x9')]);router[_0x8e57('0xa')](_0x8e57('0xb'),auth['isAuthenticated'](),controller[_0x8e57('0xc')]);router[_0x8e57('0xa')](_0x8e57('0xd'),auth[_0x8e57('0x8')](),controller[_0x8e57('0xe')]);router[_0x8e57('0xa')](_0x8e57('0xf'),auth['isAuthenticated'](),controller[_0x8e57('0x10')]);router[_0x8e57('0xa')](_0x8e57('0x11'),auth['isAuthenticated'](),controller['getDescriptions']);router[_0x8e57('0x12')]('/',auth['isAuthenticated'](),controller[_0x8e57('0x13')]);router[_0x8e57('0x14')]('/:id',auth[_0x8e57('0x8')](),controller[_0x8e57('0x15')]);router['delete'](_0x8e57('0xb'),auth[_0x8e57('0x8')](),controller[_0x8e57('0x16')]);module[_0x8e57('0x17')]=router;
\ No newline at end of file
+var _0xecdd=['put','update','delete','destroy','exports','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/fields','getSubjects','/:id/descriptions','getDescriptions','post','create'];(function(_0x380a3f,_0x202483){var _0x2b4eca=function(_0x1e99b2){while(--_0x1e99b2){_0x380a3f['push'](_0x380a3f['shift']());}};_0x2b4eca(++_0x202483);}(_0xecdd,0xf7));var _0xdecd=function(_0x186376,_0x5d988a){_0x186376=_0x186376-0x0;var _0x2dbdd9=_0xecdd[_0x186376];return _0x2dbdd9;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xdecd('0x0'));var timeout=require(_0xdecd('0x1'));var express=require('express');var router=express[_0xdecd('0x2')]();var fs_extra=require(_0xdecd('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xdecd('0x4'));var config=require(_0xdecd('0x5'));var controller=require('./intServicenowConfiguration.controller');router[_0xdecd('0x6')]('/',auth[_0xdecd('0x7')](),controller[_0xdecd('0x8')]);router['get'](_0xdecd('0x9'),auth['isAuthenticated'](),controller[_0xdecd('0xa')]);router[_0xdecd('0x6')](_0xdecd('0xb'),auth['isAuthenticated'](),controller['getFields']);router['get']('/:id/subjects',auth['isAuthenticated'](),controller[_0xdecd('0xc')]);router[_0xdecd('0x6')](_0xdecd('0xd'),auth[_0xdecd('0x7')](),controller[_0xdecd('0xe')]);router[_0xdecd('0xf')]('/',auth['isAuthenticated'](),controller[_0xdecd('0x10')]);router[_0xdecd('0x11')](_0xdecd('0x9'),auth[_0xdecd('0x7')](),controller[_0xdecd('0x12')]);router[_0xdecd('0x13')](_0xdecd('0x9'),auth['isAuthenticated'](),controller[_0xdecd('0x14')]);module[_0xdecd('0x15')]=router;
\ No newline at end of file
index 7298377..9081aee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3e5=['sequelize','exports','STRING'];(function(_0xfa634c,_0x414e0e){var _0x73e478=function(_0xac2a51){while(--_0xac2a51){_0xfa634c['push'](_0xfa634c['shift']());}};_0x73e478(++_0x414e0e);}(_0xf3e5,0x1b6));var _0x5f3e=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xf3e5[_0x4243a3];return _0x1b2a33;};'use strict';var Sequelize=require(_0x5f3e('0x0'));module[_0x5f3e('0x1')]={'name':{'type':Sequelize[_0x5f3e('0x2')]},'description':{'type':Sequelize[_0x5f3e('0x2')]}};
\ No newline at end of file
+var _0xca9b=['STRING','sequelize'];(function(_0x1b2763,_0x49e0b5){var _0x5a02a5=function(_0x4d13a9){while(--_0x4d13a9){_0x1b2763['push'](_0x1b2763['shift']());}};_0x5a02a5(++_0x49e0b5);}(_0xca9b,0x7b));var _0xbca9=function(_0x2d400d,_0x2e86bc){_0x2d400d=_0x2d400d-0x0;var _0x45ce52=_0xca9b[_0x2d400d];return _0x45ce52;};'use strict';var Sequelize=require(_0xbca9('0x0'));module['exports']={'name':{'type':Sequelize[_0xbca9('0x1')]},'description':{'type':Sequelize[_0xbca9('0x1')]}};
\ No newline at end of file
index 94fcdbe..d9090e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd46e=['sendStatus','status','end','offset','undefined','limit','count','json','apply','reject','save','then','error','stack','name','send','index','map','ServicenowConfiguration','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','filter','where','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','update','body','destroy','findOne','ServicenowField','pick','getFields','hasOwnProperty','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x31a938,_0x4daec6){var _0x1bf341=function(_0x514261){while(--_0x514261){_0x31a938['push'](_0x31a938['shift']());}};_0x1bf341(++_0x4daec6);}(_0xd46e,0x1d3));var _0xed46=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0xd46e[_0x1035c1];return _0x308d67;};'use strict';var emlformat=require(_0xed46('0x0'));var rimraf=require(_0xed46('0x1'));var zipdir=require(_0xed46('0x2'));var jsonpatch=require(_0xed46('0x3'));var rp=require(_0xed46('0x4'));var moment=require('moment');var BPromise=require(_0xed46('0x5'));var Mustache=require('mustache');var util=require(_0xed46('0x6'));var path=require(_0xed46('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xed46('0x8'));var fs=require('fs');var fs_extra=require(_0xed46('0x9'));var _=require(_0xed46('0xa'));var squel=require(_0xed46('0xb'));var crypto=require(_0xed46('0xc'));var jsforce=require(_0xed46('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xed46('0xe'));var querystring=require(_0xed46('0xf'));var Papa=require('papaparse');var Redis=require(_0xed46('0x10'));var authService=require(_0xed46('0x11'));var qs=require(_0xed46('0x12'));var as=require(_0xed46('0x13'));var hardwareService=require(_0xed46('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0xed46('0x15'));var config=require(_0xed46('0x16'));var licenseUtil=require(_0xed46('0x17'));var db=require(_0xed46('0x18'))['db'];function respondWithStatusCode(_0x22cbe9,_0x5a5924){_0x5a5924=_0x5a5924||0xcc;return function(_0x341adb){if(_0x341adb){return _0x22cbe9[_0xed46('0x19')](_0x5a5924);}return _0x22cbe9[_0xed46('0x1a')](_0x5a5924)[_0xed46('0x1b')]();};}function respondWithResult(_0x4111f9,_0x1cbef1){_0x1cbef1=_0x1cbef1||0xc8;return function(_0x2e6522){if(_0x2e6522){return _0x4111f9[_0xed46('0x1a')](_0x1cbef1)['json'](_0x2e6522);}};}function respondWithFilteredResult(_0x42ec3a,_0x5a7de2){return function(_0x128d4c){if(_0x128d4c){var _0x3b0406=typeof _0x5a7de2[_0xed46('0x1c')]===_0xed46('0x1d')&&typeof _0x5a7de2[_0xed46('0x1e')]==='undefined';var _0x4df193=_0x128d4c[_0xed46('0x1f')];var _0x3dc38b=_0x3b0406?0x0:_0x5a7de2['offset'];var _0x31c134=_0x3b0406?_0x128d4c[_0xed46('0x1f')]:_0x5a7de2[_0xed46('0x1c')]+_0x5a7de2[_0xed46('0x1e')];var _0x4f1966;if(_0x31c134>=_0x4df193){_0x31c134=_0x4df193;_0x4f1966=0xc8;}else{_0x4f1966=0xce;}_0x42ec3a[_0xed46('0x1a')](_0x4f1966);return _0x42ec3a['set']('Content-Range',_0x3dc38b+'-'+_0x31c134+'/'+_0x4df193)[_0xed46('0x20')](_0x128d4c);}return null;};}function patchUpdates(_0x1a3b14){return function(_0x13d553){try{jsonpatch[_0xed46('0x21')](_0x13d553,_0x1a3b14,!![]);}catch(_0x44658c){return BPromise[_0xed46('0x22')](_0x44658c);}return _0x13d553[_0xed46('0x23')]();};}function saveUpdates(_0x5d09ca,_0x1aa6eb){return function(_0x4d5b74){if(_0x4d5b74){return _0x4d5b74['update'](_0x5d09ca)[_0xed46('0x24')](function(_0x55ca90){return _0x55ca90;});}return null;};}function removeEntity(_0xa3d268,_0x25eb82){return function(_0x38a887){if(_0x38a887){return _0x38a887['destroy']()[_0xed46('0x24')](function(){_0xa3d268[_0xed46('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x519aea,_0x472a82){return function(_0x745144){if(!_0x745144){_0x519aea['sendStatus'](0x194);}return _0x745144;};}function handleError(_0x152a58,_0x21db52){_0x21db52=_0x21db52||0x1f4;return function(_0x5e3fa8){logger[_0xed46('0x25')](_0x5e3fa8[_0xed46('0x26')]);if(_0x5e3fa8[_0xed46('0x27')]){delete _0x5e3fa8[_0xed46('0x27')];}_0x152a58[_0xed46('0x1a')](_0x21db52)[_0xed46('0x28')](_0x5e3fa8);};}exports[_0xed46('0x29')]=function(_0x1cadff,_0x5ce32f){var _0x4643b9={},_0x2191e5={},_0x5614af={'count':0x0,'rows':[]};var _0x14b482=_[_0xed46('0x2a')](db[_0xed46('0x2b')][_0xed46('0x2c')],function(_0x3f00ea){return{'name':_0x3f00ea[_0xed46('0x2d')],'type':_0x3f00ea[_0xed46('0x2e')][_0xed46('0x2f')]};});_0x2191e5[_0xed46('0x30')]=_['map'](_0x14b482,_0xed46('0x27'));_0x2191e5[_0xed46('0x31')]=_['keys'](_0x1cadff[_0xed46('0x31')]);_0x2191e5[_0xed46('0x32')]=_[_0xed46('0x33')](_0x2191e5[_0xed46('0x30')],_0x2191e5[_0xed46('0x31')]);_0x4643b9[_0xed46('0x34')]=_[_0xed46('0x33')](_0x2191e5['model'],qs[_0xed46('0x35')](_0x1cadff[_0xed46('0x31')][_0xed46('0x35')]));_0x4643b9['attributes']=_0x4643b9[_0xed46('0x34')][_0xed46('0x36')]?_0x4643b9[_0xed46('0x34')]:_0x2191e5[_0xed46('0x30')];if(!_0x1cadff['query']['hasOwnProperty'](_0xed46('0x37'))){_0x4643b9[_0xed46('0x1e')]=qs[_0xed46('0x1e')](_0x1cadff[_0xed46('0x31')][_0xed46('0x1e')]);_0x4643b9['offset']=qs[_0xed46('0x1c')](_0x1cadff['query']['offset']);}_0x4643b9[_0xed46('0x38')]=qs[_0xed46('0x39')](_0x1cadff[_0xed46('0x31')][_0xed46('0x39')]);_0x4643b9['where']=qs[_0xed46('0x32')](_['pick'](_0x1cadff[_0xed46('0x31')],_0x2191e5['filters']),_0x14b482);if(_0x1cadff[_0xed46('0x31')][_0xed46('0x3a')]){_0x4643b9[_0xed46('0x3b')]=_[_0xed46('0x3c')](_0x4643b9[_0xed46('0x3b')],{'$or':_[_0xed46('0x2a')](_0x14b482,function(_0x2fb04a){if(_0x2fb04a[_0xed46('0x2e')]!=='VIRTUAL'){var _0x3ccbbe={};_0x3ccbbe[_0x2fb04a[_0xed46('0x27')]]={'$like':'%'+_0x1cadff[_0xed46('0x31')][_0xed46('0x3a')]+'%'};return _0x3ccbbe;}})});}_0x4643b9=_[_0xed46('0x3c')]({},_0x4643b9,_0x1cadff[_0xed46('0x3d')]);var _0x142ddb={'where':_0x4643b9[_0xed46('0x3b')]};return db[_0xed46('0x2b')][_0xed46('0x1f')](_0x142ddb)[_0xed46('0x24')](function(_0x3907b6){_0x5614af[_0xed46('0x1f')]=_0x3907b6;if(_0x1cadff[_0xed46('0x31')][_0xed46('0x3e')]){_0x4643b9[_0xed46('0x3f')]=[{'all':!![]}];}return db[_0xed46('0x2b')][_0xed46('0x40')](_0x4643b9);})['then'](function(_0x550ae8){_0x5614af[_0xed46('0x41')]=_0x550ae8;return _0x5614af;})['then'](respondWithFilteredResult(_0x5ce32f,_0x4643b9))[_0xed46('0x42')](handleError(_0x5ce32f,null));};exports[_0xed46('0x43')]=function(_0x32daca,_0x1aa0d0){var _0x26a05d={'raw':![],'where':{'id':_0x32daca[_0xed46('0x44')]['id']}},_0xc01ab2={};_0xc01ab2[_0xed46('0x30')]=_[_0xed46('0x45')](db[_0xed46('0x2b')][_0xed46('0x2c')]);_0xc01ab2[_0xed46('0x31')]=_['keys'](_0x32daca[_0xed46('0x31')]);_0xc01ab2[_0xed46('0x32')]=_['intersection'](_0xc01ab2[_0xed46('0x30')],_0xc01ab2[_0xed46('0x31')]);_0x26a05d['attributes']=_[_0xed46('0x33')](_0xc01ab2['model'],qs[_0xed46('0x35')](_0x32daca[_0xed46('0x31')][_0xed46('0x35')]));_0x26a05d[_0xed46('0x34')]=_0x26a05d['attributes'][_0xed46('0x36')]?_0x26a05d[_0xed46('0x34')]:_0xc01ab2[_0xed46('0x30')];if(_0x32daca['query'][_0xed46('0x3e')]){_0x26a05d[_0xed46('0x3f')]=[{'all':!![]}];}_0x26a05d=_['merge']({},_0x26a05d,_0x32daca[_0xed46('0x3d')]);return db[_0xed46('0x2b')][_0xed46('0x46')](_0x26a05d)['then'](handleEntityNotFound(_0x1aa0d0,null))[_0xed46('0x24')](respondWithResult(_0x1aa0d0,null))[_0xed46('0x42')](handleError(_0x1aa0d0,null));};exports[_0xed46('0x47')]=function(_0x3558a4,_0x1ff042){return db[_0xed46('0x2b')][_0xed46('0x47')](_0x3558a4['body'],{})['then'](respondWithResult(_0x1ff042,0xc9))[_0xed46('0x42')](handleError(_0x1ff042,null));};exports[_0xed46('0x48')]=function(_0x1e5a34,_0x5c00cc){if(_0x1e5a34[_0xed46('0x49')]['id']){delete _0x1e5a34['body']['id'];}return db[_0xed46('0x2b')]['find']({'where':{'id':_0x1e5a34['params']['id']}})['then'](handleEntityNotFound(_0x5c00cc,null))['then'](saveUpdates(_0x1e5a34[_0xed46('0x49')],null))[_0xed46('0x24')](respondWithResult(_0x5c00cc,null))[_0xed46('0x42')](handleError(_0x5c00cc,null));};exports[_0xed46('0x4a')]=function(_0x28885c,_0x557780){return db[_0xed46('0x2b')][_0xed46('0x46')]({'where':{'id':_0x28885c['params']['id']}})[_0xed46('0x24')](handleEntityNotFound(_0x557780,null))[_0xed46('0x24')](removeEntity(_0x557780,null))[_0xed46('0x42')](handleError(_0x557780,null));};exports['getFields']=function(_0x425f85,_0x2d79f8,_0x21df67){var _0x38950e={};var _0x232e29={};var _0x5e2920;var _0x44d959;return db[_0xed46('0x2b')][_0xed46('0x4b')]({'where':{'id':_0x425f85['params']['id']}})[_0xed46('0x24')](handleEntityNotFound(_0x2d79f8,null))[_0xed46('0x24')](function(_0x3bb8bf){if(_0x3bb8bf){_0x5e2920=_0x3bb8bf;_0x232e29[_0xed46('0x30')]=_['keys'](db[_0xed46('0x4c')][_0xed46('0x2c')]);_0x232e29[_0xed46('0x31')]=_[_0xed46('0x45')](_0x425f85[_0xed46('0x31')]);_0x232e29[_0xed46('0x32')]=_[_0xed46('0x33')](_0x232e29[_0xed46('0x30')],_0x232e29['query']);_0x38950e[_0xed46('0x34')]=_[_0xed46('0x33')](_0x232e29[_0xed46('0x30')],qs[_0xed46('0x35')](_0x425f85[_0xed46('0x31')][_0xed46('0x35')]));_0x38950e[_0xed46('0x34')]=_0x38950e[_0xed46('0x34')]['length']?_0x38950e['attributes']:_0x232e29[_0xed46('0x30')];_0x38950e[_0xed46('0x38')]=qs[_0xed46('0x39')](_0x425f85['query']['sort']);_0x38950e[_0xed46('0x3b')]=qs[_0xed46('0x32')](_[_0xed46('0x4d')](_0x425f85['query'],_0x232e29[_0xed46('0x32')]));if(_0x425f85[_0xed46('0x31')][_0xed46('0x3a')]){_0x38950e[_0xed46('0x3b')]=_[_0xed46('0x3c')](_0x38950e['where'],{'$or':_[_0xed46('0x2a')](_0x38950e[_0xed46('0x34')],function(_0x23d6fe){var _0x343dcf={};_0x343dcf[_0x23d6fe]={'$like':'%'+_0x425f85['query']['filter']+'%'};return _0x343dcf;})});}_0x38950e=_[_0xed46('0x3c')]({},_0x38950e,_0x425f85[_0xed46('0x3d')]);return _0x5e2920[_0xed46('0x4e')](_0x38950e);}})[_0xed46('0x24')](function(_0x56f92e){if(_0x56f92e){_0x44d959=_0x56f92e['length'];if(!_0x425f85[_0xed46('0x31')][_0xed46('0x4f')](_0xed46('0x37'))){_0x38950e[_0xed46('0x1e')]=qs[_0xed46('0x1e')](_0x425f85[_0xed46('0x31')][_0xed46('0x1e')]);_0x38950e[_0xed46('0x1c')]=qs[_0xed46('0x1c')](_0x425f85[_0xed46('0x31')]['offset']);}return _0x5e2920[_0xed46('0x4e')](_0x38950e);}})[_0xed46('0x24')](function(_0x10215e){if(_0x10215e){return _0x10215e?{'count':_0x44d959,'rows':_0x10215e}:null;}})['then'](respondWithResult(_0x2d79f8,null))['catch'](handleError(_0x2d79f8,null));};exports['getSubjects']=function(_0x37b971,_0x3119cc,_0x4068c7){var _0x5d9228={};var _0x544fcc={};var _0x1319ec;var _0x312330;return db[_0xed46('0x2b')][_0xed46('0x4b')]({'where':{'id':_0x37b971[_0xed46('0x44')]['id']}})[_0xed46('0x24')](handleEntityNotFound(_0x3119cc,null))['then'](function(_0x3a83b9){if(_0x3a83b9){_0x1319ec=_0x3a83b9;_0x544fcc[_0xed46('0x30')]=_[_0xed46('0x45')](db['ServicenowField']['rawAttributes']);_0x544fcc[_0xed46('0x31')]=_['keys'](_0x37b971[_0xed46('0x31')]);_0x544fcc[_0xed46('0x32')]=_[_0xed46('0x33')](_0x544fcc[_0xed46('0x30')],_0x544fcc['query']);_0x5d9228[_0xed46('0x34')]=_['intersection'](_0x544fcc['model'],qs[_0xed46('0x35')](_0x37b971[_0xed46('0x31')]['fields']));_0x5d9228[_0xed46('0x34')]=_0x5d9228[_0xed46('0x34')][_0xed46('0x36')]?_0x5d9228[_0xed46('0x34')]:_0x544fcc[_0xed46('0x30')];_0x5d9228[_0xed46('0x38')]=qs[_0xed46('0x39')](_0x37b971[_0xed46('0x31')][_0xed46('0x39')]);_0x5d9228['where']=qs[_0xed46('0x32')](_[_0xed46('0x4d')](_0x37b971[_0xed46('0x31')],_0x544fcc[_0xed46('0x32')]));if(_0x37b971[_0xed46('0x31')][_0xed46('0x3a')]){_0x5d9228['where']=_['merge'](_0x5d9228['where'],{'$or':_[_0xed46('0x2a')](_0x5d9228['attributes'],function(_0x1e4f50){var _0x5776e0={};_0x5776e0[_0x1e4f50]={'$like':'%'+_0x37b971[_0xed46('0x31')][_0xed46('0x3a')]+'%'};return _0x5776e0;})});}_0x5d9228=_[_0xed46('0x3c')]({},_0x5d9228,_0x37b971[_0xed46('0x3d')]);return _0x1319ec[_0xed46('0x50')](_0x5d9228);}})[_0xed46('0x24')](function(_0x46bc41){if(_0x46bc41){_0x312330=_0x46bc41['length'];if(!_0x37b971[_0xed46('0x31')][_0xed46('0x4f')]('nolimit')){_0x5d9228[_0xed46('0x1e')]=qs['limit'](_0x37b971['query'][_0xed46('0x1e')]);_0x5d9228['offset']=qs[_0xed46('0x1c')](_0x37b971[_0xed46('0x31')]['offset']);}return _0x1319ec[_0xed46('0x50')](_0x5d9228);}})['then'](function(_0x5a66b4){if(_0x5a66b4){return _0x5a66b4?{'count':_0x312330,'rows':_0x5a66b4}:null;}})[_0xed46('0x24')](respondWithResult(_0x3119cc,null))[_0xed46('0x42')](handleError(_0x3119cc,null));};exports[_0xed46('0x51')]=function(_0x2f1d7e,_0x48d676,_0x135249){var _0x3fb4c2={};var _0x377b68={};var _0x57787e;var _0x2f83de;return db[_0xed46('0x2b')]['findOne']({'where':{'id':_0x2f1d7e[_0xed46('0x44')]['id']}})[_0xed46('0x24')](handleEntityNotFound(_0x48d676,null))['then'](function(_0x22ff5b){if(_0x22ff5b){_0x57787e=_0x22ff5b;_0x377b68[_0xed46('0x30')]=_[_0xed46('0x45')](db[_0xed46('0x4c')]['rawAttributes']);_0x377b68['query']=_['keys'](_0x2f1d7e[_0xed46('0x31')]);_0x377b68[_0xed46('0x32')]=_[_0xed46('0x33')](_0x377b68[_0xed46('0x30')],_0x377b68[_0xed46('0x31')]);_0x3fb4c2[_0xed46('0x34')]=_['intersection'](_0x377b68['model'],qs[_0xed46('0x35')](_0x2f1d7e[_0xed46('0x31')]['fields']));_0x3fb4c2['attributes']=_0x3fb4c2[_0xed46('0x34')]['length']?_0x3fb4c2[_0xed46('0x34')]:_0x377b68['model'];_0x3fb4c2[_0xed46('0x38')]=qs[_0xed46('0x39')](_0x2f1d7e[_0xed46('0x31')]['sort']);_0x3fb4c2[_0xed46('0x3b')]=qs['filters'](_['pick'](_0x2f1d7e[_0xed46('0x31')],_0x377b68[_0xed46('0x32')]));if(_0x2f1d7e[_0xed46('0x31')][_0xed46('0x3a')]){_0x3fb4c2[_0xed46('0x3b')]=_[_0xed46('0x3c')](_0x3fb4c2[_0xed46('0x3b')],{'$or':_[_0xed46('0x2a')](_0x3fb4c2[_0xed46('0x34')],function(_0x564acc){var _0x31ec30={};_0x31ec30[_0x564acc]={'$like':'%'+_0x2f1d7e['query'][_0xed46('0x3a')]+'%'};return _0x31ec30;})});}_0x3fb4c2=_['merge']({},_0x3fb4c2,_0x2f1d7e[_0xed46('0x3d')]);return _0x57787e['getDescriptions'](_0x3fb4c2);}})['then'](function(_0x42be37){if(_0x42be37){_0x2f83de=_0x42be37['length'];if(!_0x2f1d7e[_0xed46('0x31')]['hasOwnProperty'](_0xed46('0x37'))){_0x3fb4c2[_0xed46('0x1e')]=qs['limit'](_0x2f1d7e[_0xed46('0x31')][_0xed46('0x1e')]);_0x3fb4c2['offset']=qs[_0xed46('0x1c')](_0x2f1d7e[_0xed46('0x31')][_0xed46('0x1c')]);}return _0x57787e[_0xed46('0x51')](_0x3fb4c2);}})[_0xed46('0x24')](function(_0x4f7594){if(_0x4f7594){return _0x4f7594?{'count':_0x2f83de,'rows':_0x4f7594}:null;}})[_0xed46('0x24')](respondWithResult(_0x48d676,null))['catch'](handleError(_0x48d676,null));};
\ No newline at end of file
+var _0xfca1=['getFields','ServicenowField','nolimit','getSubjects','findOne','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','sendStatus','stack','name','send','index','map','ServicenowConfiguration','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','order','sort','filters','pick','filter','where','VIRTUAL','merge','options','includeAll','include','catch','show','params','rawAttributes','find','create','body'];(function(_0x5d1566,_0x3fed4b){var _0x3441a2=function(_0x57c3fe){while(--_0x57c3fe){_0x5d1566['push'](_0x5d1566['shift']());}};_0x3441a2(++_0x3fed4b);}(_0xfca1,0xf0));var _0x1fca=function(_0x535fc5,_0x4bffe3){_0x535fc5=_0x535fc5-0x0;var _0x4a1be7=_0xfca1[_0x535fc5];return _0x4a1be7;};'use strict';var emlformat=require(_0x1fca('0x0'));var rimraf=require(_0x1fca('0x1'));var zipdir=require(_0x1fca('0x2'));var jsonpatch=require(_0x1fca('0x3'));var rp=require(_0x1fca('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x1fca('0x5'));var util=require(_0x1fca('0x6'));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(_0x1fca('0x7'));var _=require(_0x1fca('0x8'));var squel=require(_0x1fca('0x9'));var crypto=require(_0x1fca('0xa'));var jsforce=require(_0x1fca('0xb'));var deskjs=require(_0x1fca('0xc'));var toCsv=require(_0x1fca('0xd'));var querystring=require(_0x1fca('0xe'));var Papa=require(_0x1fca('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x1fca('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1fca('0x11'))(_0x1fca('0x12'));var utils=require(_0x1fca('0x13'));var config=require(_0x1fca('0x14'));var licenseUtil=require(_0x1fca('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5a5aff,_0x5af657){_0x5af657=_0x5af657||0xcc;return function(_0x3787a9){if(_0x3787a9){return _0x5a5aff['sendStatus'](_0x5af657);}return _0x5a5aff[_0x1fca('0x16')](_0x5af657)[_0x1fca('0x17')]();};}function respondWithResult(_0x3a2458,_0x24984b){_0x24984b=_0x24984b||0xc8;return function(_0x41f501){if(_0x41f501){return _0x3a2458[_0x1fca('0x16')](_0x24984b)[_0x1fca('0x18')](_0x41f501);}};}function respondWithFilteredResult(_0x15c99b,_0x33ece9){return function(_0x2526bd){if(_0x2526bd){var _0x522749=typeof _0x33ece9[_0x1fca('0x19')]===_0x1fca('0x1a')&&typeof _0x33ece9[_0x1fca('0x1b')]==='undefined';var _0x1c2ea8=_0x2526bd[_0x1fca('0x1c')];var _0xaa4ce8=_0x522749?0x0:_0x33ece9['offset'];var _0xdcfb9e=_0x522749?_0x2526bd[_0x1fca('0x1c')]:_0x33ece9['offset']+_0x33ece9['limit'];var _0x418f77;if(_0xdcfb9e>=_0x1c2ea8){_0xdcfb9e=_0x1c2ea8;_0x418f77=0xc8;}else{_0x418f77=0xce;}_0x15c99b[_0x1fca('0x16')](_0x418f77);return _0x15c99b['set'](_0x1fca('0x1d'),_0xaa4ce8+'-'+_0xdcfb9e+'/'+_0x1c2ea8)[_0x1fca('0x18')](_0x2526bd);}return null;};}function patchUpdates(_0xe35d89){return function(_0x2fbb0){try{jsonpatch[_0x1fca('0x1e')](_0x2fbb0,_0xe35d89,!![]);}catch(_0x12183d){return BPromise[_0x1fca('0x1f')](_0x12183d);}return _0x2fbb0[_0x1fca('0x20')]();};}function saveUpdates(_0x46294c,_0x39c7c4){return function(_0x2830d2){if(_0x2830d2){return _0x2830d2[_0x1fca('0x21')](_0x46294c)[_0x1fca('0x22')](function(_0x23f748){return _0x23f748;});}return null;};}function removeEntity(_0x195db0,_0x13d7a9){return function(_0x19ed8e){if(_0x19ed8e){return _0x19ed8e[_0x1fca('0x23')]()[_0x1fca('0x22')](function(){_0x195db0[_0x1fca('0x16')](0xcc)[_0x1fca('0x17')]();});}};}function handleEntityNotFound(_0xb32def,_0x45e175){return function(_0x5b10fa){if(!_0x5b10fa){_0xb32def[_0x1fca('0x24')](0x194);}return _0x5b10fa;};}function handleError(_0x539d06,_0x835692){_0x835692=_0x835692||0x1f4;return function(_0x1b8117){logger['error'](_0x1b8117[_0x1fca('0x25')]);if(_0x1b8117[_0x1fca('0x26')]){delete _0x1b8117[_0x1fca('0x26')];}_0x539d06[_0x1fca('0x16')](_0x835692)[_0x1fca('0x27')](_0x1b8117);};}exports[_0x1fca('0x28')]=function(_0x30ccb6,_0x33e4b2){var _0x2cb4e9={},_0x59d8ff={},_0x12365b={'count':0x0,'rows':[]};var _0x43a67d=_[_0x1fca('0x29')](db[_0x1fca('0x2a')]['rawAttributes'],function(_0x5c2263){return{'name':_0x5c2263[_0x1fca('0x2b')],'type':_0x5c2263[_0x1fca('0x2c')][_0x1fca('0x2d')]};});_0x59d8ff[_0x1fca('0x2e')]=_[_0x1fca('0x29')](_0x43a67d,_0x1fca('0x26'));_0x59d8ff[_0x1fca('0x2f')]=_[_0x1fca('0x30')](_0x30ccb6[_0x1fca('0x2f')]);_0x59d8ff['filters']=_['intersection'](_0x59d8ff[_0x1fca('0x2e')],_0x59d8ff[_0x1fca('0x2f')]);_0x2cb4e9[_0x1fca('0x31')]=_[_0x1fca('0x32')](_0x59d8ff[_0x1fca('0x2e')],qs[_0x1fca('0x33')](_0x30ccb6[_0x1fca('0x2f')]['fields']));_0x2cb4e9[_0x1fca('0x31')]=_0x2cb4e9['attributes'][_0x1fca('0x34')]?_0x2cb4e9[_0x1fca('0x31')]:_0x59d8ff['model'];if(!_0x30ccb6[_0x1fca('0x2f')][_0x1fca('0x35')]('nolimit')){_0x2cb4e9[_0x1fca('0x1b')]=qs[_0x1fca('0x1b')](_0x30ccb6['query']['limit']);_0x2cb4e9[_0x1fca('0x19')]=qs['offset'](_0x30ccb6[_0x1fca('0x2f')][_0x1fca('0x19')]);}_0x2cb4e9[_0x1fca('0x36')]=qs[_0x1fca('0x37')](_0x30ccb6['query'][_0x1fca('0x37')]);_0x2cb4e9['where']=qs[_0x1fca('0x38')](_[_0x1fca('0x39')](_0x30ccb6[_0x1fca('0x2f')],_0x59d8ff['filters']),_0x43a67d);if(_0x30ccb6[_0x1fca('0x2f')][_0x1fca('0x3a')]){_0x2cb4e9[_0x1fca('0x3b')]=_['merge'](_0x2cb4e9[_0x1fca('0x3b')],{'$or':_[_0x1fca('0x29')](_0x43a67d,function(_0x36ee5e){if(_0x36ee5e['type']!==_0x1fca('0x3c')){var _0x5d31f7={};_0x5d31f7[_0x36ee5e[_0x1fca('0x26')]]={'$like':'%'+_0x30ccb6['query'][_0x1fca('0x3a')]+'%'};return _0x5d31f7;}})});}_0x2cb4e9=_[_0x1fca('0x3d')]({},_0x2cb4e9,_0x30ccb6[_0x1fca('0x3e')]);var _0xb6867d={'where':_0x2cb4e9[_0x1fca('0x3b')]};return db[_0x1fca('0x2a')]['count'](_0xb6867d)['then'](function(_0x49026e){_0x12365b[_0x1fca('0x1c')]=_0x49026e;if(_0x30ccb6[_0x1fca('0x2f')][_0x1fca('0x3f')]){_0x2cb4e9[_0x1fca('0x40')]=[{'all':!![]}];}return db[_0x1fca('0x2a')]['findAll'](_0x2cb4e9);})['then'](function(_0x1be2b3){_0x12365b['rows']=_0x1be2b3;return _0x12365b;})['then'](respondWithFilteredResult(_0x33e4b2,_0x2cb4e9))[_0x1fca('0x41')](handleError(_0x33e4b2,null));};exports[_0x1fca('0x42')]=function(_0x11868f,_0x3b4409){var _0x55835c={'raw':![],'where':{'id':_0x11868f[_0x1fca('0x43')]['id']}},_0x5b8505={};_0x5b8505[_0x1fca('0x2e')]=_[_0x1fca('0x30')](db[_0x1fca('0x2a')][_0x1fca('0x44')]);_0x5b8505[_0x1fca('0x2f')]=_[_0x1fca('0x30')](_0x11868f[_0x1fca('0x2f')]);_0x5b8505[_0x1fca('0x38')]=_[_0x1fca('0x32')](_0x5b8505[_0x1fca('0x2e')],_0x5b8505[_0x1fca('0x2f')]);_0x55835c[_0x1fca('0x31')]=_[_0x1fca('0x32')](_0x5b8505[_0x1fca('0x2e')],qs[_0x1fca('0x33')](_0x11868f[_0x1fca('0x2f')][_0x1fca('0x33')]));_0x55835c[_0x1fca('0x31')]=_0x55835c[_0x1fca('0x31')][_0x1fca('0x34')]?_0x55835c[_0x1fca('0x31')]:_0x5b8505[_0x1fca('0x2e')];if(_0x11868f[_0x1fca('0x2f')][_0x1fca('0x3f')]){_0x55835c[_0x1fca('0x40')]=[{'all':!![]}];}_0x55835c=_[_0x1fca('0x3d')]({},_0x55835c,_0x11868f[_0x1fca('0x3e')]);return db[_0x1fca('0x2a')][_0x1fca('0x45')](_0x55835c)[_0x1fca('0x22')](handleEntityNotFound(_0x3b4409,null))['then'](respondWithResult(_0x3b4409,null))[_0x1fca('0x41')](handleError(_0x3b4409,null));};exports[_0x1fca('0x46')]=function(_0x412685,_0x2a0605){return db[_0x1fca('0x2a')][_0x1fca('0x46')](_0x412685[_0x1fca('0x47')],{})[_0x1fca('0x22')](respondWithResult(_0x2a0605,0xc9))[_0x1fca('0x41')](handleError(_0x2a0605,null));};exports['update']=function(_0x1aeaf9,_0x161a12){if(_0x1aeaf9[_0x1fca('0x47')]['id']){delete _0x1aeaf9[_0x1fca('0x47')]['id'];}return db[_0x1fca('0x2a')]['find']({'where':{'id':_0x1aeaf9[_0x1fca('0x43')]['id']}})[_0x1fca('0x22')](handleEntityNotFound(_0x161a12,null))[_0x1fca('0x22')](saveUpdates(_0x1aeaf9['body'],null))[_0x1fca('0x22')](respondWithResult(_0x161a12,null))[_0x1fca('0x41')](handleError(_0x161a12,null));};exports[_0x1fca('0x23')]=function(_0x230540,_0x3a911f){return db['ServicenowConfiguration'][_0x1fca('0x45')]({'where':{'id':_0x230540[_0x1fca('0x43')]['id']}})[_0x1fca('0x22')](handleEntityNotFound(_0x3a911f,null))['then'](removeEntity(_0x3a911f,null))['catch'](handleError(_0x3a911f,null));};exports[_0x1fca('0x48')]=function(_0x41a3b1,_0x25f294,_0x4ad17f){var _0xa682e6={};var _0x27ed2f={};var _0x355adb;var _0xeec267;return db[_0x1fca('0x2a')]['findOne']({'where':{'id':_0x41a3b1[_0x1fca('0x43')]['id']}})['then'](handleEntityNotFound(_0x25f294,null))['then'](function(_0x2009c6){if(_0x2009c6){_0x355adb=_0x2009c6;_0x27ed2f[_0x1fca('0x2e')]=_['keys'](db[_0x1fca('0x49')][_0x1fca('0x44')]);_0x27ed2f[_0x1fca('0x2f')]=_[_0x1fca('0x30')](_0x41a3b1[_0x1fca('0x2f')]);_0x27ed2f[_0x1fca('0x38')]=_[_0x1fca('0x32')](_0x27ed2f[_0x1fca('0x2e')],_0x27ed2f[_0x1fca('0x2f')]);_0xa682e6[_0x1fca('0x31')]=_[_0x1fca('0x32')](_0x27ed2f['model'],qs[_0x1fca('0x33')](_0x41a3b1['query'][_0x1fca('0x33')]));_0xa682e6[_0x1fca('0x31')]=_0xa682e6[_0x1fca('0x31')][_0x1fca('0x34')]?_0xa682e6[_0x1fca('0x31')]:_0x27ed2f[_0x1fca('0x2e')];_0xa682e6['order']=qs[_0x1fca('0x37')](_0x41a3b1[_0x1fca('0x2f')][_0x1fca('0x37')]);_0xa682e6[_0x1fca('0x3b')]=qs[_0x1fca('0x38')](_[_0x1fca('0x39')](_0x41a3b1['query'],_0x27ed2f[_0x1fca('0x38')]));if(_0x41a3b1[_0x1fca('0x2f')][_0x1fca('0x3a')]){_0xa682e6['where']=_[_0x1fca('0x3d')](_0xa682e6[_0x1fca('0x3b')],{'$or':_[_0x1fca('0x29')](_0xa682e6[_0x1fca('0x31')],function(_0x1f4650){var _0x4a2169={};_0x4a2169[_0x1f4650]={'$like':'%'+_0x41a3b1[_0x1fca('0x2f')][_0x1fca('0x3a')]+'%'};return _0x4a2169;})});}_0xa682e6=_[_0x1fca('0x3d')]({},_0xa682e6,_0x41a3b1[_0x1fca('0x3e')]);return _0x355adb[_0x1fca('0x48')](_0xa682e6);}})[_0x1fca('0x22')](function(_0x667e8f){if(_0x667e8f){_0xeec267=_0x667e8f[_0x1fca('0x34')];if(!_0x41a3b1['query'][_0x1fca('0x35')](_0x1fca('0x4a'))){_0xa682e6[_0x1fca('0x1b')]=qs[_0x1fca('0x1b')](_0x41a3b1['query'][_0x1fca('0x1b')]);_0xa682e6[_0x1fca('0x19')]=qs[_0x1fca('0x19')](_0x41a3b1[_0x1fca('0x2f')][_0x1fca('0x19')]);}return _0x355adb['getFields'](_0xa682e6);}})['then'](function(_0x1c0d8e){if(_0x1c0d8e){return _0x1c0d8e?{'count':_0xeec267,'rows':_0x1c0d8e}:null;}})[_0x1fca('0x22')](respondWithResult(_0x25f294,null))[_0x1fca('0x41')](handleError(_0x25f294,null));};exports[_0x1fca('0x4b')]=function(_0x1ccf70,_0x506515,_0x55cb23){var _0x17d27d={};var _0x3d2858={};var _0x3451c6;var _0x50bd35;return db[_0x1fca('0x2a')][_0x1fca('0x4c')]({'where':{'id':_0x1ccf70['params']['id']}})[_0x1fca('0x22')](handleEntityNotFound(_0x506515,null))[_0x1fca('0x22')](function(_0x18ab95){if(_0x18ab95){_0x3451c6=_0x18ab95;_0x3d2858['model']=_['keys'](db[_0x1fca('0x49')][_0x1fca('0x44')]);_0x3d2858[_0x1fca('0x2f')]=_['keys'](_0x1ccf70[_0x1fca('0x2f')]);_0x3d2858[_0x1fca('0x38')]=_[_0x1fca('0x32')](_0x3d2858[_0x1fca('0x2e')],_0x3d2858[_0x1fca('0x2f')]);_0x17d27d['attributes']=_[_0x1fca('0x32')](_0x3d2858[_0x1fca('0x2e')],qs[_0x1fca('0x33')](_0x1ccf70['query'][_0x1fca('0x33')]));_0x17d27d[_0x1fca('0x31')]=_0x17d27d[_0x1fca('0x31')]['length']?_0x17d27d[_0x1fca('0x31')]:_0x3d2858[_0x1fca('0x2e')];_0x17d27d['order']=qs[_0x1fca('0x37')](_0x1ccf70['query']['sort']);_0x17d27d[_0x1fca('0x3b')]=qs[_0x1fca('0x38')](_[_0x1fca('0x39')](_0x1ccf70[_0x1fca('0x2f')],_0x3d2858['filters']));if(_0x1ccf70[_0x1fca('0x2f')][_0x1fca('0x3a')]){_0x17d27d[_0x1fca('0x3b')]=_[_0x1fca('0x3d')](_0x17d27d[_0x1fca('0x3b')],{'$or':_[_0x1fca('0x29')](_0x17d27d[_0x1fca('0x31')],function(_0x212265){var _0x1db2dc={};_0x1db2dc[_0x212265]={'$like':'%'+_0x1ccf70[_0x1fca('0x2f')]['filter']+'%'};return _0x1db2dc;})});}_0x17d27d=_[_0x1fca('0x3d')]({},_0x17d27d,_0x1ccf70[_0x1fca('0x3e')]);return _0x3451c6[_0x1fca('0x4b')](_0x17d27d);}})[_0x1fca('0x22')](function(_0x214e3f){if(_0x214e3f){_0x50bd35=_0x214e3f['length'];if(!_0x1ccf70[_0x1fca('0x2f')][_0x1fca('0x35')](_0x1fca('0x4a'))){_0x17d27d[_0x1fca('0x1b')]=qs[_0x1fca('0x1b')](_0x1ccf70['query']['limit']);_0x17d27d[_0x1fca('0x19')]=qs[_0x1fca('0x19')](_0x1ccf70['query'][_0x1fca('0x19')]);}return _0x3451c6[_0x1fca('0x4b')](_0x17d27d);}})[_0x1fca('0x22')](function(_0xdd49f6){if(_0xdd49f6){return _0xdd49f6?{'count':_0x50bd35,'rows':_0xdd49f6}:null;}})[_0x1fca('0x22')](respondWithResult(_0x506515,null))[_0x1fca('0x41')](handleError(_0x506515,null));};exports[_0x1fca('0x4d')]=function(_0x10443c,_0x1e5666,_0x578a6b){var _0x537f44={};var _0x459132={};var _0x5e613a;var _0x2fe964;return db[_0x1fca('0x2a')]['findOne']({'where':{'id':_0x10443c[_0x1fca('0x43')]['id']}})[_0x1fca('0x22')](handleEntityNotFound(_0x1e5666,null))[_0x1fca('0x22')](function(_0x243637){if(_0x243637){_0x5e613a=_0x243637;_0x459132[_0x1fca('0x2e')]=_[_0x1fca('0x30')](db[_0x1fca('0x49')][_0x1fca('0x44')]);_0x459132[_0x1fca('0x2f')]=_['keys'](_0x10443c[_0x1fca('0x2f')]);_0x459132[_0x1fca('0x38')]=_[_0x1fca('0x32')](_0x459132[_0x1fca('0x2e')],_0x459132[_0x1fca('0x2f')]);_0x537f44[_0x1fca('0x31')]=_['intersection'](_0x459132[_0x1fca('0x2e')],qs[_0x1fca('0x33')](_0x10443c[_0x1fca('0x2f')]['fields']));_0x537f44['attributes']=_0x537f44[_0x1fca('0x31')][_0x1fca('0x34')]?_0x537f44[_0x1fca('0x31')]:_0x459132[_0x1fca('0x2e')];_0x537f44[_0x1fca('0x36')]=qs[_0x1fca('0x37')](_0x10443c[_0x1fca('0x2f')][_0x1fca('0x37')]);_0x537f44[_0x1fca('0x3b')]=qs[_0x1fca('0x38')](_['pick'](_0x10443c['query'],_0x459132[_0x1fca('0x38')]));if(_0x10443c[_0x1fca('0x2f')]['filter']){_0x537f44[_0x1fca('0x3b')]=_['merge'](_0x537f44['where'],{'$or':_[_0x1fca('0x29')](_0x537f44[_0x1fca('0x31')],function(_0x4eec90){var _0x4ae8a4={};_0x4ae8a4[_0x4eec90]={'$like':'%'+_0x10443c[_0x1fca('0x2f')][_0x1fca('0x3a')]+'%'};return _0x4ae8a4;})});}_0x537f44=_[_0x1fca('0x3d')]({},_0x537f44,_0x10443c[_0x1fca('0x3e')]);return _0x5e613a[_0x1fca('0x4d')](_0x537f44);}})[_0x1fca('0x22')](function(_0x46bb7f){if(_0x46bb7f){_0x2fe964=_0x46bb7f[_0x1fca('0x34')];if(!_0x10443c[_0x1fca('0x2f')][_0x1fca('0x35')](_0x1fca('0x4a'))){_0x537f44[_0x1fca('0x1b')]=qs[_0x1fca('0x1b')](_0x10443c[_0x1fca('0x2f')][_0x1fca('0x1b')]);_0x537f44[_0x1fca('0x19')]=qs['offset'](_0x10443c[_0x1fca('0x2f')]['offset']);}return _0x5e613a[_0x1fca('0x4d')](_0x537f44);}})['then'](function(_0x55c166){if(_0x55c166){return _0x55c166?{'count':_0x2fe964,'rows':_0x55c166}:null;}})[_0x1fca('0x22')](respondWithResult(_0x1e5666,null))['catch'](handleError(_0x1e5666,null));};
\ No newline at end of file
index 216566c..47d87b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fe5=['path','rimraf','./intServicenowConfiguration.attributes','exports','define','ServicenowConfiguration','int_servicenow_configurations','lodash','util','moment','bluebird','request-promise'];(function(_0x233855,_0x2de003){var _0xba66da=function(_0xd41bc5){while(--_0xd41bc5){_0x233855['push'](_0x233855['shift']());}};_0xba66da(++_0x2de003);}(_0x2fe5,0x14b));var _0x52fe=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x2fe5[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0x52fe('0x0'));var util=require(_0x52fe('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x52fe('0x2'));var BPromise=require(_0x52fe('0x3'));var rp=require(_0x52fe('0x4'));var fs=require('fs');var path=require(_0x52fe('0x5'));var rimraf=require(_0x52fe('0x6'));var config=require('../../config/environment');var attributes=require(_0x52fe('0x7'));module[_0x52fe('0x8')]=function(_0x584af7,_0x2efcaa){return _0x584af7[_0x52fe('0x9')](_0x52fe('0xa'),attributes,{'tableName':_0x52fe('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x85cf=['api','moment','bluebird','request-promise','path','rimraf','exports','define','ServicenowConfiguration','int_servicenow_configurations','util','../../config/logger'];(function(_0x36402a,_0x2f929f){var _0x15e35c=function(_0x33cc16){while(--_0x33cc16){_0x36402a['push'](_0x36402a['shift']());}};_0x15e35c(++_0x2f929f);}(_0x85cf,0x76));var _0xf85c=function(_0x1428d4,_0x15fe19){_0x1428d4=_0x1428d4-0x0;var _0x331168=_0x85cf[_0x1428d4];return _0x331168;};'use strict';var _=require('lodash');var util=require(_0xf85c('0x0'));var logger=require(_0xf85c('0x1'))(_0xf85c('0x2'));var moment=require(_0xf85c('0x3'));var BPromise=require(_0xf85c('0x4'));var rp=require(_0xf85c('0x5'));var fs=require('fs');var path=require(_0xf85c('0x6'));var rimraf=require(_0xf85c('0x7'));var config=require('../../config/environment');var attributes=require('./intServicenowConfiguration.attributes');module[_0xf85c('0x8')]=function(_0x3a5a32,_0x51ac85){return _0x3a5a32[_0xf85c('0x9')](_0xf85c('0xa'),attributes,{'tableName':_0xf85c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6ce7137..63e68be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1660=['ServicenowConfiguration,\x20%s,\x20%s','message','result','catch','moment','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','info','request\x20sent','error','code'];(function(_0x2d8be1,_0x330362){var _0x407ecd=function(_0x437078){while(--_0x437078){_0x2d8be1['push'](_0x2d8be1['shift']());}};_0x407ecd(++_0x330362);}(_0x1660,0x17a));var _0x0166=function(_0x1b6186,_0x1ec7f2){_0x1b6186=_0x1b6186-0x0;var _0x186121=_0x1660[_0x1b6186];return _0x186121;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x0166('0x0'));var BPromise=require(_0x0166('0x1'));var rs=require(_0x0166('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x0166('0x3'));var logger=require(_0x0166('0x4'))('rpc');var config=require(_0x0166('0x5'));var jayson=require(_0x0166('0x6'));var client=jayson[_0x0166('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x210432,_0x3c73d4,_0x727bd6){return new BPromise(function(_0x3d407e,_0x5b4e5a){return client[_0x0166('0x8')](_0x210432,_0x727bd6)['then'](function(_0x1e073e){logger[_0x0166('0x9')]('ServicenowConfiguration,\x20%s,\x20%s',_0x3c73d4,_0x0166('0xa'));logger['debug']('ServicenowConfiguration,\x20%s,\x20%s,\x20%s',_0x3c73d4,'request\x20sent',JSON['stringify'](_0x1e073e));if(_0x1e073e[_0x0166('0xb')]){if(_0x1e073e[_0x0166('0xb')][_0x0166('0xc')]===0x1f4){logger[_0x0166('0xb')](_0x0166('0xd'),_0x3c73d4,_0x1e073e[_0x0166('0xb')][_0x0166('0xe')]);return _0x5b4e5a(_0x1e073e[_0x0166('0xb')][_0x0166('0xe')]);}logger[_0x0166('0xb')](_0x0166('0xd'),_0x3c73d4,_0x1e073e['error'][_0x0166('0xe')]);return _0x3d407e(_0x1e073e['error'][_0x0166('0xe')]);}else{logger['info']('ServicenowConfiguration,\x20%s,\x20%s',_0x3c73d4,_0x0166('0xa'));_0x3d407e(_0x1e073e[_0x0166('0xf')]['message']);}})[_0x0166('0x10')](function(_0x549c3f){logger[_0x0166('0xb')]('ServicenowConfiguration,\x20%s,\x20%s',_0x3c73d4,_0x549c3f);_0x5b4e5a(_0x549c3f);});});}
\ No newline at end of file
+var _0xfb50=['request','then','info','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','http'];(function(_0x4b7895,_0x3c4f5d){var _0x264180=function(_0xe0e861){while(--_0xe0e861){_0x4b7895['push'](_0x4b7895['shift']());}};_0x264180(++_0x3c4f5d);}(_0xfb50,0x1ec));var _0x0fb5=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xfb50[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0x0fb5('0x0'));var util=require(_0x0fb5('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x0fb5('0x2'));var fs=require('fs');var Redis=require(_0x0fb5('0x3'));var db=require(_0x0fb5('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x0fb5('0x5'));var config=require(_0x0fb5('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x0fb5('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x23ea09,_0xb2691b,_0x5ddc62){return new BPromise(function(_0x13c81c,_0x41e446){return client[_0x0fb5('0x8')](_0x23ea09,_0x5ddc62)[_0x0fb5('0x9')](function(_0x3ce708){logger[_0x0fb5('0xa')](_0x0fb5('0xb'),_0xb2691b,_0x0fb5('0xc'));logger['debug'](_0x0fb5('0xd'),_0xb2691b,_0x0fb5('0xc'),JSON[_0x0fb5('0xe')](_0x3ce708));if(_0x3ce708['error']){if(_0x3ce708[_0x0fb5('0xf')][_0x0fb5('0x10')]===0x1f4){logger[_0x0fb5('0xf')]('ServicenowConfiguration,\x20%s,\x20%s',_0xb2691b,_0x3ce708[_0x0fb5('0xf')][_0x0fb5('0x11')]);return _0x41e446(_0x3ce708[_0x0fb5('0xf')][_0x0fb5('0x11')]);}logger[_0x0fb5('0xf')](_0x0fb5('0xb'),_0xb2691b,_0x3ce708[_0x0fb5('0xf')][_0x0fb5('0x11')]);return _0x13c81c(_0x3ce708[_0x0fb5('0xf')]['message']);}else{logger['info']('ServicenowConfiguration,\x20%s,\x20%s',_0xb2691b,_0x0fb5('0xc'));_0x13c81c(_0x3ce708[_0x0fb5('0x12')][_0x0fb5('0x11')]);}})[_0x0fb5('0x13')](function(_0xb3a437){logger[_0x0fb5('0xf')](_0x0fb5('0xb'),_0xb2691b,_0xb3a437);_0x41e446(_0xb3a437);});});}
\ No newline at end of file
index 39d242c..2cb05db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x928e=['../../components/auth/service','get','index','/:id','isAuthenticated','show','post','create','put','update','destroy','exports','multer','path','connect-timeout','express','fs-extra'];(function(_0x3ed1d5,_0x2c7b8e){var _0x5e7080=function(_0x65819d){while(--_0x65819d){_0x3ed1d5['push'](_0x3ed1d5['shift']());}};_0x5e7080(++_0x2c7b8e);}(_0x928e,0x193));var _0xe928=function(_0x5b6843,_0x29822c){_0x5b6843=_0x5b6843-0x0;var _0x50053c=_0x928e[_0x5b6843];return _0x50053c;};'use strict';var multer=require(_0xe928('0x0'));var util=require('util');var path=require(_0xe928('0x1'));var timeout=require(_0xe928('0x2'));var express=require(_0xe928('0x3'));var router=express['Router']();var fs_extra=require(_0xe928('0x4'));var auth=require(_0xe928('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intServicenowField.controller');router[_0xe928('0x6')]('/',auth['isAuthenticated'](),controller[_0xe928('0x7')]);router[_0xe928('0x6')](_0xe928('0x8'),auth[_0xe928('0x9')](),controller[_0xe928('0xa')]);router[_0xe928('0xb')]('/',auth[_0xe928('0x9')](),controller[_0xe928('0xc')]);router[_0xe928('0xd')](_0xe928('0x8'),auth[_0xe928('0x9')](),controller[_0xe928('0xe')]);router['delete']('/:id',auth[_0xe928('0x9')](),controller[_0xe928('0xf')]);module[_0xe928('0x10')]=router;
\ No newline at end of file
+var _0x3cf7=['exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','create','put','update'];(function(_0x504582,_0x5b3965){var _0x43c6ce=function(_0x1199a4){while(--_0x1199a4){_0x504582['push'](_0x504582['shift']());}};_0x43c6ce(++_0x5b3965);}(_0x3cf7,0x15a));var _0x73cf=function(_0x2ec2bf,_0x64e983){_0x2ec2bf=_0x2ec2bf-0x0;var _0x2c279c=_0x3cf7[_0x2ec2bf];return _0x2c279c;};'use strict';var multer=require(_0x73cf('0x0'));var util=require(_0x73cf('0x1'));var path=require(_0x73cf('0x2'));var timeout=require(_0x73cf('0x3'));var express=require(_0x73cf('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x73cf('0x5'));var interaction=require(_0x73cf('0x6'));var config=require('../../config/environment');var controller=require('./intServicenowField.controller');router[_0x73cf('0x7')]('/',auth[_0x73cf('0x8')](),controller[_0x73cf('0x9')]);router['get'](_0x73cf('0xa'),auth[_0x73cf('0x8')](),controller['show']);router['post']('/',auth[_0x73cf('0x8')](),controller[_0x73cf('0xb')]);router[_0x73cf('0xc')]('/:id',auth[_0x73cf('0x8')](),controller[_0x73cf('0xd')]);router['delete'](_0x73cf('0xa'),auth[_0x73cf('0x8')](),controller['destroy']);module[_0x73cf('0xe')]=router;
\ No newline at end of file
index a1ededa..5733e80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1379=['STRING','BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','keyValue','picklist'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x1379,0x1e2));var _0x9137=function(_0x324277,_0xa7681f){_0x324277=_0x324277-0x0;var _0x42965e=_0x1379[_0x324277];return _0x42965e;};'use strict';var Sequelize=require(_0x9137('0x0'));module[_0x9137('0x1')]={'type':{'type':Sequelize[_0x9137('0x2')](_0x9137('0x3'),_0x9137('0x4'),_0x9137('0x5'),_0x9137('0x6'),_0x9137('0x7')),'defaultValue':_0x9137('0x3')},'content':{'type':Sequelize[_0x9137('0x8')]},'key':{'type':Sequelize[_0x9137('0x8')]},'keyType':{'type':Sequelize[_0x9137('0x2')](_0x9137('0x3'),_0x9137('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0x9137('0x8')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x9137('0x8')]},'customField':{'type':Sequelize[_0x9137('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x9137('0x8')]}};
\ No newline at end of file
+var _0xf2b7=['BOOLEAN','exports','ENUM','string','keyValue','STRING','variable','customVariable'];(function(_0x4ffa03,_0x363a82){var _0x30d661=function(_0x36ba86){while(--_0x36ba86){_0x4ffa03['push'](_0x4ffa03['shift']());}};_0x30d661(++_0x363a82);}(_0xf2b7,0x1a9));var _0x7f2b=function(_0x1d6497,_0x1e6bb5){_0x1d6497=_0x1d6497-0x0;var _0x345f7f=_0xf2b7[_0x1d6497];return _0x345f7f;};'use strict';var Sequelize=require('sequelize');module[_0x7f2b('0x0')]={'type':{'type':Sequelize[_0x7f2b('0x1')](_0x7f2b('0x2'),'variable','customVariable',_0x7f2b('0x3'),'picklist'),'defaultValue':_0x7f2b('0x2')},'content':{'type':Sequelize[_0x7f2b('0x4')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x7f2b('0x1')](_0x7f2b('0x2'),_0x7f2b('0x5'),_0x7f2b('0x6'))},'keyContent':{'type':Sequelize[_0x7f2b('0x4')]},'idField':{'type':Sequelize[_0x7f2b('0x4')]},'nameField':{'type':Sequelize[_0x7f2b('0x4')]},'customField':{'type':Sequelize[_0x7f2b('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7f2b('0x4')]}};
\ No newline at end of file
index fa303ca..490b86e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44db=['json','reject','save','update','then','destroy','sendStatus','stack','send','index','map','fieldName','type','name','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','options','ServicenowField','include','rows','catch','show','params','keys','rawAttributes','find','create','body','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','offset','limit','undefined','set','Content-Range'];(function(_0x5e6515,_0x2954b1){var _0xd33ce2=function(_0x5ce7ea){while(--_0x5ce7ea){_0x5e6515['push'](_0x5e6515['shift']());}};_0xd33ce2(++_0x2954b1);}(_0x44db,0xb5));var _0xb44d=function(_0x100e36,_0x4da225){_0x100e36=_0x100e36-0x0;var _0x1df0c9=_0x44db[_0x100e36];return _0x1df0c9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb44d('0x0'));var zipdir=require(_0xb44d('0x1'));var jsonpatch=require(_0xb44d('0x2'));var rp=require(_0xb44d('0x3'));var moment=require('moment');var BPromise=require(_0xb44d('0x4'));var Mustache=require('mustache');var util=require(_0xb44d('0x5'));var path=require('path');var sox=require(_0xb44d('0x6'));var csv=require(_0xb44d('0x7'));var ejs=require(_0xb44d('0x8'));var fs=require('fs');var fs_extra=require(_0xb44d('0x9'));var _=require(_0xb44d('0xa'));var squel=require('squel');var crypto=require(_0xb44d('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xb44d('0xc'));var toCsv=require('to-csv');var querystring=require(_0xb44d('0xd'));var Papa=require(_0xb44d('0xe'));var Redis=require(_0xb44d('0xf'));var authService=require(_0xb44d('0x10'));var qs=require(_0xb44d('0x11'));var as=require(_0xb44d('0x12'));var hardwareService=require(_0xb44d('0x13'));var logger=require('../../config/logger')(_0xb44d('0x14'));var utils=require(_0xb44d('0x15'));var config=require(_0xb44d('0x16'));var licenseUtil=require(_0xb44d('0x17'));var db=require(_0xb44d('0x18'))['db'];function respondWithStatusCode(_0x3e8fc1,_0x2f41bd){_0x2f41bd=_0x2f41bd||0xcc;return function(_0x58b3db){if(_0x58b3db){return _0x3e8fc1['sendStatus'](_0x2f41bd);}return _0x3e8fc1['status'](_0x2f41bd)[_0xb44d('0x19')]();};}function respondWithResult(_0x51eb4b,_0x5e67be){_0x5e67be=_0x5e67be||0xc8;return function(_0x11fdb5){if(_0x11fdb5){return _0x51eb4b[_0xb44d('0x1a')](_0x5e67be)['json'](_0x11fdb5);}};}function respondWithFilteredResult(_0x2c9a6b,_0x938e6f){return function(_0x133f70){if(_0x133f70){var _0x59eb2d=typeof _0x938e6f[_0xb44d('0x1b')]==='undefined'&&typeof _0x938e6f[_0xb44d('0x1c')]===_0xb44d('0x1d');var _0x51472a=_0x133f70['count'];var _0x55cf31=_0x59eb2d?0x0:_0x938e6f[_0xb44d('0x1b')];var _0x36ca15=_0x59eb2d?_0x133f70['count']:_0x938e6f['offset']+_0x938e6f[_0xb44d('0x1c')];var _0x7e7a42;if(_0x36ca15>=_0x51472a){_0x36ca15=_0x51472a;_0x7e7a42=0xc8;}else{_0x7e7a42=0xce;}_0x2c9a6b[_0xb44d('0x1a')](_0x7e7a42);return _0x2c9a6b[_0xb44d('0x1e')](_0xb44d('0x1f'),_0x55cf31+'-'+_0x36ca15+'/'+_0x51472a)[_0xb44d('0x20')](_0x133f70);}return null;};}function patchUpdates(_0x487f9c){return function(_0x2c9d78){try{jsonpatch['apply'](_0x2c9d78,_0x487f9c,!![]);}catch(_0xaddd45){return BPromise[_0xb44d('0x21')](_0xaddd45);}return _0x2c9d78[_0xb44d('0x22')]();};}function saveUpdates(_0x34b189,_0x4eb88d){return function(_0x188744){if(_0x188744){return _0x188744[_0xb44d('0x23')](_0x34b189)[_0xb44d('0x24')](function(_0x54dde4){return _0x54dde4;});}return null;};}function removeEntity(_0x1f386a,_0x58aaed){return function(_0x714d75){if(_0x714d75){return _0x714d75[_0xb44d('0x25')]()[_0xb44d('0x24')](function(){_0x1f386a['status'](0xcc)[_0xb44d('0x19')]();});}};}function handleEntityNotFound(_0x109434,_0x527ee3){return function(_0xb2d94e){if(!_0xb2d94e){_0x109434[_0xb44d('0x26')](0x194);}return _0xb2d94e;};}function handleError(_0x3628e8,_0x3d6736){_0x3d6736=_0x3d6736||0x1f4;return function(_0x4605cb){logger['error'](_0x4605cb[_0xb44d('0x27')]);if(_0x4605cb['name']){delete _0x4605cb['name'];}_0x3628e8['status'](_0x3d6736)[_0xb44d('0x28')](_0x4605cb);};}exports[_0xb44d('0x29')]=function(_0xd8eafc,_0x2c63bd){var _0x9c7cd8={},_0x1081f2={},_0x1c2b1f={'count':0x0,'rows':[]};var _0x18470d=_[_0xb44d('0x2a')](db['ServicenowField']['rawAttributes'],function(_0x58b46c){return{'name':_0x58b46c[_0xb44d('0x2b')],'type':_0x58b46c[_0xb44d('0x2c')]['key']};});_0x1081f2['model']=_[_0xb44d('0x2a')](_0x18470d,_0xb44d('0x2d'));_0x1081f2[_0xb44d('0x2e')]=_['keys'](_0xd8eafc[_0xb44d('0x2e')]);_0x1081f2[_0xb44d('0x2f')]=_[_0xb44d('0x30')](_0x1081f2[_0xb44d('0x31')],_0x1081f2['query']);_0x9c7cd8[_0xb44d('0x32')]=_[_0xb44d('0x30')](_0x1081f2[_0xb44d('0x31')],qs[_0xb44d('0x33')](_0xd8eafc['query'][_0xb44d('0x33')]));_0x9c7cd8[_0xb44d('0x32')]=_0x9c7cd8[_0xb44d('0x32')][_0xb44d('0x34')]?_0x9c7cd8[_0xb44d('0x32')]:_0x1081f2[_0xb44d('0x31')];if(!_0xd8eafc[_0xb44d('0x2e')][_0xb44d('0x35')]('nolimit')){_0x9c7cd8['limit']=qs[_0xb44d('0x1c')](_0xd8eafc[_0xb44d('0x2e')]['limit']);_0x9c7cd8['offset']=qs['offset'](_0xd8eafc[_0xb44d('0x2e')][_0xb44d('0x1b')]);}_0x9c7cd8['order']=qs[_0xb44d('0x36')](_0xd8eafc['query'][_0xb44d('0x36')]);_0x9c7cd8[_0xb44d('0x37')]=qs['filters'](_[_0xb44d('0x38')](_0xd8eafc['query'],_0x1081f2[_0xb44d('0x2f')]),_0x18470d);if(_0xd8eafc[_0xb44d('0x2e')][_0xb44d('0x39')]){_0x9c7cd8[_0xb44d('0x37')]=_[_0xb44d('0x3a')](_0x9c7cd8[_0xb44d('0x37')],{'$or':_['map'](_0x18470d,function(_0x303f3b){if(_0x303f3b['type']!=='VIRTUAL'){var _0x315aa5={};_0x315aa5[_0x303f3b[_0xb44d('0x2d')]]={'$like':'%'+_0xd8eafc['query'][_0xb44d('0x39')]+'%'};return _0x315aa5;}})});}_0x9c7cd8=_[_0xb44d('0x3a')]({},_0x9c7cd8,_0xd8eafc[_0xb44d('0x3b')]);var _0x29b500={'where':_0x9c7cd8[_0xb44d('0x37')]};return db[_0xb44d('0x3c')]['count'](_0x29b500)['then'](function(_0x30ec6d){_0x1c2b1f['count']=_0x30ec6d;if(_0xd8eafc[_0xb44d('0x2e')]['includeAll']){_0x9c7cd8[_0xb44d('0x3d')]=[{'all':!![]}];}return db['ServicenowField']['findAll'](_0x9c7cd8);})[_0xb44d('0x24')](function(_0x2c153f){_0x1c2b1f[_0xb44d('0x3e')]=_0x2c153f;return _0x1c2b1f;})[_0xb44d('0x24')](respondWithFilteredResult(_0x2c63bd,_0x9c7cd8))[_0xb44d('0x3f')](handleError(_0x2c63bd,null));};exports[_0xb44d('0x40')]=function(_0x2d7dc3,_0xfc51ba){var _0x3304e6={'raw':!![],'where':{'id':_0x2d7dc3[_0xb44d('0x41')]['id']}},_0x176523={};_0x176523[_0xb44d('0x31')]=_[_0xb44d('0x42')](db[_0xb44d('0x3c')][_0xb44d('0x43')]);_0x176523[_0xb44d('0x2e')]=_['keys'](_0x2d7dc3[_0xb44d('0x2e')]);_0x176523['filters']=_[_0xb44d('0x30')](_0x176523[_0xb44d('0x31')],_0x176523[_0xb44d('0x2e')]);_0x3304e6[_0xb44d('0x32')]=_[_0xb44d('0x30')](_0x176523[_0xb44d('0x31')],qs[_0xb44d('0x33')](_0x2d7dc3[_0xb44d('0x2e')][_0xb44d('0x33')]));_0x3304e6[_0xb44d('0x32')]=_0x3304e6['attributes'][_0xb44d('0x34')]?_0x3304e6[_0xb44d('0x32')]:_0x176523['model'];if(_0x2d7dc3['query']['includeAll']){_0x3304e6[_0xb44d('0x3d')]=[{'all':!![]}];}_0x3304e6=_[_0xb44d('0x3a')]({},_0x3304e6,_0x2d7dc3[_0xb44d('0x3b')]);return db[_0xb44d('0x3c')][_0xb44d('0x44')](_0x3304e6)['then'](handleEntityNotFound(_0xfc51ba,null))[_0xb44d('0x24')](respondWithResult(_0xfc51ba,null))[_0xb44d('0x3f')](handleError(_0xfc51ba,null));};exports[_0xb44d('0x45')]=function(_0x3229b4,_0x24c3c3){return db[_0xb44d('0x3c')][_0xb44d('0x45')](_0x3229b4[_0xb44d('0x46')],{})['then'](respondWithResult(_0x24c3c3,0xc9))['catch'](handleError(_0x24c3c3,null));};exports[_0xb44d('0x23')]=function(_0x390509,_0x22cfa6){if(_0x390509[_0xb44d('0x46')]['id']){delete _0x390509['body']['id'];}return db[_0xb44d('0x3c')][_0xb44d('0x44')]({'where':{'id':_0x390509[_0xb44d('0x41')]['id']}})[_0xb44d('0x24')](handleEntityNotFound(_0x22cfa6,null))[_0xb44d('0x24')](saveUpdates(_0x390509[_0xb44d('0x46')],null))[_0xb44d('0x24')](respondWithResult(_0x22cfa6,null))[_0xb44d('0x3f')](handleError(_0x22cfa6,null));};exports[_0xb44d('0x25')]=function(_0x560b95,_0x32b710){return db[_0xb44d('0x3c')]['find']({'where':{'id':_0x560b95[_0xb44d('0x41')]['id']}})[_0xb44d('0x24')](handleEntityNotFound(_0x32b710,null))[_0xb44d('0x24')](removeEntity(_0x32b710,null))['catch'](handleError(_0x32b710,null));};
\ No newline at end of file
+var _0x65cd=['keys','intersection','attributes','fields','length','hasOwnProperty','where','filters','pick','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','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','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','map','ServicenowField','type','key','model','query'];(function(_0x41420c,_0x37374e){var _0x359cbd=function(_0x27f818){while(--_0x27f818){_0x41420c['push'](_0x41420c['shift']());}};_0x359cbd(++_0x37374e);}(_0x65cd,0x136));var _0xd65c=function(_0x4741e4,_0x457e2e){_0x4741e4=_0x4741e4-0x0;var _0x459f97=_0x65cd[_0x4741e4];return _0x459f97;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd65c('0x0'));var zipdir=require(_0xd65c('0x1'));var jsonpatch=require(_0xd65c('0x2'));var rp=require(_0xd65c('0x3'));var moment=require(_0xd65c('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd65c('0x5'));var util=require('util');var path=require(_0xd65c('0x6'));var sox=require(_0xd65c('0x7'));var csv=require(_0xd65c('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd65c('0x9'));var _=require(_0xd65c('0xa'));var squel=require(_0xd65c('0xb'));var crypto=require('crypto');var jsforce=require(_0xd65c('0xc'));var deskjs=require(_0xd65c('0xd'));var toCsv=require(_0xd65c('0x8'));var querystring=require(_0xd65c('0xe'));var Papa=require('papaparse');var Redis=require(_0xd65c('0xf'));var authService=require(_0xd65c('0x10'));var qs=require(_0xd65c('0x11'));var as=require(_0xd65c('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd65c('0x13'))(_0xd65c('0x14'));var utils=require(_0xd65c('0x15'));var config=require(_0xd65c('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xd65c('0x17'))['db'];function respondWithStatusCode(_0x3c3429,_0x106c8d){_0x106c8d=_0x106c8d||0xcc;return function(_0x383336){if(_0x383336){return _0x3c3429[_0xd65c('0x18')](_0x106c8d);}return _0x3c3429[_0xd65c('0x19')](_0x106c8d)[_0xd65c('0x1a')]();};}function respondWithResult(_0x404023,_0x42350c){_0x42350c=_0x42350c||0xc8;return function(_0x1277c9){if(_0x1277c9){return _0x404023['status'](_0x42350c)[_0xd65c('0x1b')](_0x1277c9);}};}function respondWithFilteredResult(_0x31a47c,_0x446df3){return function(_0x5b17e1){if(_0x5b17e1){var _0x1b15c7=typeof _0x446df3[_0xd65c('0x1c')]===_0xd65c('0x1d')&&typeof _0x446df3[_0xd65c('0x1e')]===_0xd65c('0x1d');var _0x4471c2=_0x5b17e1[_0xd65c('0x1f')];var _0x489447=_0x1b15c7?0x0:_0x446df3[_0xd65c('0x1c')];var _0x41449a=_0x1b15c7?_0x5b17e1[_0xd65c('0x1f')]:_0x446df3['offset']+_0x446df3[_0xd65c('0x1e')];var _0x4c4443;if(_0x41449a>=_0x4471c2){_0x41449a=_0x4471c2;_0x4c4443=0xc8;}else{_0x4c4443=0xce;}_0x31a47c[_0xd65c('0x19')](_0x4c4443);return _0x31a47c[_0xd65c('0x20')](_0xd65c('0x21'),_0x489447+'-'+_0x41449a+'/'+_0x4471c2)[_0xd65c('0x1b')](_0x5b17e1);}return null;};}function patchUpdates(_0x5b4879){return function(_0x1c01af){try{jsonpatch[_0xd65c('0x22')](_0x1c01af,_0x5b4879,!![]);}catch(_0x3bf4b6){return BPromise[_0xd65c('0x23')](_0x3bf4b6);}return _0x1c01af[_0xd65c('0x24')]();};}function saveUpdates(_0x37db3d,_0x4f4b9b){return function(_0x83e58a){if(_0x83e58a){return _0x83e58a[_0xd65c('0x25')](_0x37db3d)[_0xd65c('0x26')](function(_0x5d0e04){return _0x5d0e04;});}return null;};}function removeEntity(_0x3e2d4c,_0x58c0fb){return function(_0xf4d457){if(_0xf4d457){return _0xf4d457[_0xd65c('0x27')]()['then'](function(){_0x3e2d4c[_0xd65c('0x19')](0xcc)[_0xd65c('0x1a')]();});}};}function handleEntityNotFound(_0x35296c,_0x4997ff){return function(_0x92d22c){if(!_0x92d22c){_0x35296c['sendStatus'](0x194);}return _0x92d22c;};}function handleError(_0x30c4f6,_0x427ec3){_0x427ec3=_0x427ec3||0x1f4;return function(_0x35af5b){logger[_0xd65c('0x28')](_0x35af5b[_0xd65c('0x29')]);if(_0x35af5b[_0xd65c('0x2a')]){delete _0x35af5b['name'];}_0x30c4f6[_0xd65c('0x19')](_0x427ec3)['send'](_0x35af5b);};}exports[_0xd65c('0x2b')]=function(_0x2b7868,_0x530fb6){var _0x583bc5={},_0xaf1966={},_0x39837e={'count':0x0,'rows':[]};var _0xd43a94=_[_0xd65c('0x2c')](db[_0xd65c('0x2d')]['rawAttributes'],function(_0x1cea78){return{'name':_0x1cea78['fieldName'],'type':_0x1cea78[_0xd65c('0x2e')][_0xd65c('0x2f')]};});_0xaf1966[_0xd65c('0x30')]=_['map'](_0xd43a94,'name');_0xaf1966[_0xd65c('0x31')]=_[_0xd65c('0x32')](_0x2b7868['query']);_0xaf1966['filters']=_[_0xd65c('0x33')](_0xaf1966['model'],_0xaf1966[_0xd65c('0x31')]);_0x583bc5[_0xd65c('0x34')]=_['intersection'](_0xaf1966[_0xd65c('0x30')],qs[_0xd65c('0x35')](_0x2b7868[_0xd65c('0x31')][_0xd65c('0x35')]));_0x583bc5[_0xd65c('0x34')]=_0x583bc5['attributes'][_0xd65c('0x36')]?_0x583bc5['attributes']:_0xaf1966[_0xd65c('0x30')];if(!_0x2b7868[_0xd65c('0x31')][_0xd65c('0x37')]('nolimit')){_0x583bc5[_0xd65c('0x1e')]=qs[_0xd65c('0x1e')](_0x2b7868[_0xd65c('0x31')]['limit']);_0x583bc5[_0xd65c('0x1c')]=qs['offset'](_0x2b7868[_0xd65c('0x31')]['offset']);}_0x583bc5['order']=qs['sort'](_0x2b7868[_0xd65c('0x31')]['sort']);_0x583bc5[_0xd65c('0x38')]=qs[_0xd65c('0x39')](_[_0xd65c('0x3a')](_0x2b7868[_0xd65c('0x31')],_0xaf1966[_0xd65c('0x39')]),_0xd43a94);if(_0x2b7868[_0xd65c('0x31')]['filter']){_0x583bc5[_0xd65c('0x38')]=_['merge'](_0x583bc5['where'],{'$or':_[_0xd65c('0x2c')](_0xd43a94,function(_0x1f6ec6){if(_0x1f6ec6[_0xd65c('0x2e')]!=='VIRTUAL'){var _0x1f86ca={};_0x1f86ca[_0x1f6ec6[_0xd65c('0x2a')]]={'$like':'%'+_0x2b7868['query']['filter']+'%'};return _0x1f86ca;}})});}_0x583bc5=_[_0xd65c('0x3b')]({},_0x583bc5,_0x2b7868[_0xd65c('0x3c')]);var _0x300074={'where':_0x583bc5[_0xd65c('0x38')]};return db['ServicenowField'][_0xd65c('0x1f')](_0x300074)[_0xd65c('0x26')](function(_0x3a1cfa){_0x39837e[_0xd65c('0x1f')]=_0x3a1cfa;if(_0x2b7868['query'][_0xd65c('0x3d')]){_0x583bc5[_0xd65c('0x3e')]=[{'all':!![]}];}return db[_0xd65c('0x2d')][_0xd65c('0x3f')](_0x583bc5);})[_0xd65c('0x26')](function(_0x5380da){_0x39837e[_0xd65c('0x40')]=_0x5380da;return _0x39837e;})[_0xd65c('0x26')](respondWithFilteredResult(_0x530fb6,_0x583bc5))[_0xd65c('0x41')](handleError(_0x530fb6,null));};exports[_0xd65c('0x42')]=function(_0x5d64b8,_0x4a93cb){var _0x212d35={'raw':!![],'where':{'id':_0x5d64b8[_0xd65c('0x43')]['id']}},_0x26aa27={};_0x26aa27[_0xd65c('0x30')]=_[_0xd65c('0x32')](db['ServicenowField'][_0xd65c('0x44')]);_0x26aa27[_0xd65c('0x31')]=_[_0xd65c('0x32')](_0x5d64b8[_0xd65c('0x31')]);_0x26aa27['filters']=_['intersection'](_0x26aa27[_0xd65c('0x30')],_0x26aa27[_0xd65c('0x31')]);_0x212d35[_0xd65c('0x34')]=_[_0xd65c('0x33')](_0x26aa27[_0xd65c('0x30')],qs[_0xd65c('0x35')](_0x5d64b8['query']['fields']));_0x212d35[_0xd65c('0x34')]=_0x212d35[_0xd65c('0x34')]['length']?_0x212d35[_0xd65c('0x34')]:_0x26aa27[_0xd65c('0x30')];if(_0x5d64b8[_0xd65c('0x31')]['includeAll']){_0x212d35[_0xd65c('0x3e')]=[{'all':!![]}];}_0x212d35=_[_0xd65c('0x3b')]({},_0x212d35,_0x5d64b8[_0xd65c('0x3c')]);return db[_0xd65c('0x2d')][_0xd65c('0x45')](_0x212d35)[_0xd65c('0x26')](handleEntityNotFound(_0x4a93cb,null))['then'](respondWithResult(_0x4a93cb,null))['catch'](handleError(_0x4a93cb,null));};exports[_0xd65c('0x46')]=function(_0x50c78a,_0xbfbca4){return db[_0xd65c('0x2d')][_0xd65c('0x46')](_0x50c78a['body'],{})['then'](respondWithResult(_0xbfbca4,0xc9))[_0xd65c('0x41')](handleError(_0xbfbca4,null));};exports[_0xd65c('0x25')]=function(_0x522b89,_0x2c88bd){if(_0x522b89['body']['id']){delete _0x522b89[_0xd65c('0x47')]['id'];}return db[_0xd65c('0x2d')][_0xd65c('0x45')]({'where':{'id':_0x522b89[_0xd65c('0x43')]['id']}})[_0xd65c('0x26')](handleEntityNotFound(_0x2c88bd,null))[_0xd65c('0x26')](saveUpdates(_0x522b89[_0xd65c('0x47')],null))[_0xd65c('0x26')](respondWithResult(_0x2c88bd,null))['catch'](handleError(_0x2c88bd,null));};exports[_0xd65c('0x27')]=function(_0xa43dac,_0x29e4aa){return db['ServicenowField']['find']({'where':{'id':_0xa43dac['params']['id']}})[_0xd65c('0x26')](handleEntityNotFound(_0x29e4aa,null))[_0xd65c('0x26')](removeEntity(_0x29e4aa,null))[_0xd65c('0x41')](handleError(_0x29e4aa,null));};
\ No newline at end of file
index 7d35880..3e9c5f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b98=['util','api','moment','path','rimraf','../../config/environment','./intServicenowField.attributes','exports','define','int_servicenow_fields','idField','lodash'];(function(_0x1ecba4,_0x3a32b1){var _0x5b58d6=function(_0x361993){while(--_0x361993){_0x1ecba4['push'](_0x1ecba4['shift']());}};_0x5b58d6(++_0x3a32b1);}(_0x8b98,0xd7));var _0x88b9=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0x8b98[_0x4709c0];return _0x13348b;};'use strict';var _=require(_0x88b9('0x0'));var util=require(_0x88b9('0x1'));var logger=require('../../config/logger')(_0x88b9('0x2'));var moment=require(_0x88b9('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x88b9('0x4'));var rimraf=require(_0x88b9('0x5'));var config=require(_0x88b9('0x6'));var attributes=require(_0x88b9('0x7'));module[_0x88b9('0x8')]=function(_0x2bfea3,_0x395f46){return _0x2bfea3[_0x88b9('0x9')]('ServicenowField',attributes,{'tableName':_0x88b9('0xa'),'paranoid':![],'indexes':[{'name':'servicenow_unique_index','fields':[_0x88b9('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9868=['exports','define','ServicenowField','int_servicenow_fields','servicenow_unique_index','idField','FieldId','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intServicenowField.attributes'];(function(_0x1c782d,_0x5503d7){var _0x74693e=function(_0x8259ef){while(--_0x8259ef){_0x1c782d['push'](_0x1c782d['shift']());}};_0x74693e(++_0x5503d7);}(_0x9868,0x9d));var _0x8986=function(_0x3b23e1,_0x25b30f){_0x3b23e1=_0x3b23e1-0x0;var _0x2440d1=_0x9868[_0x3b23e1];return _0x2440d1;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x8986('0x0'))(_0x8986('0x1'));var moment=require(_0x8986('0x2'));var BPromise=require('bluebird');var rp=require(_0x8986('0x3'));var fs=require('fs');var path=require(_0x8986('0x4'));var rimraf=require(_0x8986('0x5'));var config=require(_0x8986('0x6'));var attributes=require(_0x8986('0x7'));module[_0x8986('0x8')]=function(_0x5f1e7b,_0x13ab3b){return _0x5f1e7b[_0x8986('0x9')](_0x8986('0xa'),attributes,{'tableName':_0x8986('0xb'),'paranoid':![],'indexes':[{'name':_0x8986('0xc'),'fields':[_0x8986('0xd'),_0x8986('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 1028ed7..63d9eea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','ioredis'];(function(_0x4a73dd,_0x58e46c){var _0x279e6b=function(_0x25254b){while(--_0x25254b){_0x4a73dd['push'](_0x4a73dd['shift']());}};_0x279e6b(++_0x58e46c);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0d8b('0x2'));var db=require(_0x0d8b('0x3'))['db'];var utils=require(_0x0d8b('0x4'));var logger=require(_0x0d8b('0x5'))(_0x0d8b('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0d8b('0x7')][_0x0d8b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x39f43a,_0x4a4470,_0x413284){return new BPromise(function(_0x284169,_0x58e4e2){return client[_0x0d8b('0x9')](_0x39f43a,_0x413284)[_0x0d8b('0xa')](function(_0x3b027f){logger[_0x0d8b('0xb')](_0x0d8b('0xc'),_0x4a4470,_0x0d8b('0xd'));logger[_0x0d8b('0xe')](_0x0d8b('0xf'),_0x4a4470,'request\x20sent',JSON[_0x0d8b('0x10')](_0x3b027f));if(_0x3b027f['error']){if(_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x12')]===0x1f4){logger[_0x0d8b('0x11')](_0x0d8b('0xc'),_0x4a4470,_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);return _0x58e4e2(_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);}logger[_0x0d8b('0x11')](_0x0d8b('0xc'),_0x4a4470,_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);return _0x284169(_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);}else{logger['info'](_0x0d8b('0xc'),_0x4a4470,_0x0d8b('0xd'));_0x284169(_0x3b027f[_0x0d8b('0x14')][_0x0d8b('0x13')]);}})[_0x0d8b('0x15')](function(_0x5cd485){logger[_0x0d8b('0x11')](_0x0d8b('0xc'),_0x4a4470,_0x5cd485);_0x58e4e2(_0x5cd485);});});}
\ No newline at end of file
+var _0x9ffd=['ServicenowField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','ServicenowField,\x20%s,\x20%s','info','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','debug'];(function(_0x79c042,_0x21246a){var _0x2ca8cc=function(_0x3e2a32){while(--_0x3e2a32){_0x79c042['push'](_0x79c042['shift']());}};_0x2ca8cc(++_0x21246a);}(_0x9ffd,0xaa));var _0xd9ff=function(_0xb81e7c,_0x286bd2){_0xb81e7c=_0xb81e7c-0x0;var _0x164727=_0x9ffd[_0xb81e7c];return _0x164727;};'use strict';var _=require(_0xd9ff('0x0'));var util=require(_0xd9ff('0x1'));var moment=require(_0xd9ff('0x2'));var BPromise=require('bluebird');var rs=require(_0xd9ff('0x3'));var fs=require('fs');var Redis=require(_0xd9ff('0x4'));var db=require(_0xd9ff('0x5'))['db'];var utils=require(_0xd9ff('0x6'));var logger=require('../../config/logger')(_0xd9ff('0x7'));var config=require(_0xd9ff('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd9ff('0x9')][_0xd9ff('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x13ea8c,_0x270eb2,_0x45c60a){return new BPromise(function(_0x66282d,_0x13954e){return client[_0xd9ff('0xb')](_0x13ea8c,_0x45c60a)[_0xd9ff('0xc')](function(_0x58e728){logger['info']('ServicenowField,\x20%s,\x20%s',_0x270eb2,'request\x20sent');logger[_0xd9ff('0xd')](_0xd9ff('0xe'),_0x270eb2,_0xd9ff('0xf'),JSON[_0xd9ff('0x10')](_0x58e728));if(_0x58e728[_0xd9ff('0x11')]){if(_0x58e728[_0xd9ff('0x11')][_0xd9ff('0x12')]===0x1f4){logger[_0xd9ff('0x11')]('ServicenowField,\x20%s,\x20%s',_0x270eb2,_0x58e728['error'][_0xd9ff('0x13')]);return _0x13954e(_0x58e728[_0xd9ff('0x11')][_0xd9ff('0x13')]);}logger[_0xd9ff('0x11')](_0xd9ff('0x14'),_0x270eb2,_0x58e728['error'][_0xd9ff('0x13')]);return _0x66282d(_0x58e728[_0xd9ff('0x11')]['message']);}else{logger[_0xd9ff('0x15')]('ServicenowField,\x20%s,\x20%s',_0x270eb2,'request\x20sent');_0x66282d(_0x58e728['result']['message']);}})[_0xd9ff('0x16')](function(_0x4f9d6d){logger[_0xd9ff('0x11')](_0xd9ff('0x14'),_0x270eb2,_0x4f9d6d);_0x13954e(_0x4f9d6d);});});}
\ No newline at end of file
index ff6f173..09b14a6 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(_0x4bfe1d,_0x54970c){var _0x16258c=function(_0x3524d6){while(--_0x3524d6){_0x4bfe1d['push'](_0x4bfe1d['shift']());}};_0x16258c(++_0x54970c);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x14cb5f,_0x5e4e27){var _0x4da279=function(_0x384781){while(--_0x384781){_0x14cb5f['push'](_0x14cb5f['shift']());}};_0x4da279(++_0x5e4e27);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index 7ccc162..ac942c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x106c66,_0x278197){var _0x12aea6=function(_0x18f3cb){while(--_0x18f3cb){_0x106c66['push'](_0x106c66['shift']());}};_0x12aea6(++_0x278197);}(_0xa9e0,0x123));var _0x0a9e=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xa9e0[_0x30ae5e];return _0x1f2e93;};'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(_0x599434,_0x4d5c36){var _0x379780=function(_0x3a2973){while(--_0x3a2973){_0x599434['push'](_0x599434['shift']());}};_0x379780(++_0x4d5c36);}(_0xa9e0,0x123));var _0x0a9e=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0xa9e0[_0x311c35];return _0x5cc50c;};'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 c008a00..9af1fcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa22=['addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','SugarcrmField','getFields','assigned_user_id','created_by','date_start','duration_hours','duration_minutes','parent_type','parent_name','username','password','remoteUri','slice','lastIndexOf','format','%s%s','/service/v4_1/rest.php','login','JSON','stringify','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','POST','get_module_fields','values','module_fields','includes','endsWith','value','statusCode','getFields,\x20%s,\x20%s,\x20%s','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../mysqldb','status','end','undefined','count','offset','Content-Range','json','apply','reject','save','update','then','destroy','error','name','send','SugarcrmAccount','type','key','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','rows','catch','params','rawAttributes','length','options','find','create','body','getConfigurations','findOne','keys','SugarcrmConfiguration'];(function(_0x28947d,_0x4cc9c6){var _0x12d2ee=function(_0x3f38fc){while(--_0x3f38fc){_0x28947d['push'](_0x28947d['shift']());}};_0x12d2ee(++_0x4cc9c6);}(_0xaa22,0x180));var _0x2aa2=function(_0x1c4468,_0x19a287){_0x1c4468=_0x1c4468-0x0;var _0x3acaf6=_0xaa22[_0x1c4468];return _0x3acaf6;};'use strict';var emlformat=require(_0x2aa2('0x0'));var rimraf=require(_0x2aa2('0x1'));var zipdir=require(_0x2aa2('0x2'));var jsonpatch=require(_0x2aa2('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x2aa2('0x4'));var Mustache=require(_0x2aa2('0x5'));var util=require(_0x2aa2('0x6'));var path=require('path');var sox=require(_0x2aa2('0x7'));var csv=require(_0x2aa2('0x8'));var ejs=require(_0x2aa2('0x9'));var fs=require('fs');var fs_extra=require(_0x2aa2('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x2aa2('0xb'));var jsforce=require(_0x2aa2('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x2aa2('0x8'));var querystring=require('querystring');var Papa=require(_0x2aa2('0xd'));var Redis=require(_0x2aa2('0xe'));var authService=require(_0x2aa2('0xf'));var qs=require(_0x2aa2('0x10'));var as=require(_0x2aa2('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2aa2('0x12'))('api');var utils=require(_0x2aa2('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x2aa2('0x14'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x4a5576,_0x5c086c){_0x5c086c=_0x5c086c||0xcc;return function(_0x222c73){if(_0x222c73){return _0x4a5576['sendStatus'](_0x5c086c);}return _0x4a5576[_0x2aa2('0x15')](_0x5c086c)[_0x2aa2('0x16')]();};}function respondWithResult(_0x1b408e,_0x35c8a0){_0x35c8a0=_0x35c8a0||0xc8;return function(_0x3324de){if(_0x3324de){return _0x1b408e[_0x2aa2('0x15')](_0x35c8a0)['json'](_0x3324de);}};}function respondWithFilteredResult(_0x4b48ca,_0x1d81a8){return function(_0x146a76){if(_0x146a76){var _0x24dd1c=typeof _0x1d81a8['offset']===_0x2aa2('0x17')&&typeof _0x1d81a8['limit']==='undefined';var _0x279d29=_0x146a76[_0x2aa2('0x18')];var _0x26fedc=_0x24dd1c?0x0:_0x1d81a8[_0x2aa2('0x19')];var _0x1477a6=_0x24dd1c?_0x146a76['count']:_0x1d81a8[_0x2aa2('0x19')]+_0x1d81a8['limit'];var _0x2fac9b;if(_0x1477a6>=_0x279d29){_0x1477a6=_0x279d29;_0x2fac9b=0xc8;}else{_0x2fac9b=0xce;}_0x4b48ca[_0x2aa2('0x15')](_0x2fac9b);return _0x4b48ca['set'](_0x2aa2('0x1a'),_0x26fedc+'-'+_0x1477a6+'/'+_0x279d29)[_0x2aa2('0x1b')](_0x146a76);}return null;};}function patchUpdates(_0x18a58f){return function(_0x5b5c9c){try{jsonpatch[_0x2aa2('0x1c')](_0x5b5c9c,_0x18a58f,!![]);}catch(_0x147a97){return BPromise[_0x2aa2('0x1d')](_0x147a97);}return _0x5b5c9c[_0x2aa2('0x1e')]();};}function saveUpdates(_0x52079c,_0x3ad153){return function(_0x3c1b50){if(_0x3c1b50){return _0x3c1b50[_0x2aa2('0x1f')](_0x52079c)[_0x2aa2('0x20')](function(_0x379e7f){return _0x379e7f;});}return null;};}function removeEntity(_0x19906c,_0x553caa){return function(_0x22d3d0){if(_0x22d3d0){return _0x22d3d0[_0x2aa2('0x21')]()['then'](function(){_0x19906c['status'](0xcc)[_0x2aa2('0x16')]();});}};}function handleEntityNotFound(_0x1579dd,_0x329851){return function(_0x372849){if(!_0x372849){_0x1579dd['sendStatus'](0x194);}return _0x372849;};}function handleError(_0x29323f,_0x1fe644){_0x1fe644=_0x1fe644||0x1f4;return function(_0x889ae7){logger[_0x2aa2('0x22')](_0x889ae7['stack']);if(_0x889ae7[_0x2aa2('0x23')]){delete _0x889ae7[_0x2aa2('0x23')];}_0x29323f[_0x2aa2('0x15')](_0x1fe644)[_0x2aa2('0x24')](_0x889ae7);};}exports['index']=function(_0x5f9c9a,_0xaee8f9){var _0x13c36f={},_0x5a2e57={},_0x2f3435={'count':0x0,'rows':[]};var _0x165f34=_['map'](db[_0x2aa2('0x25')]['rawAttributes'],function(_0x11dfb5){return{'name':_0x11dfb5['fieldName'],'type':_0x11dfb5[_0x2aa2('0x26')][_0x2aa2('0x27')]};});_0x5a2e57[_0x2aa2('0x28')]=_[_0x2aa2('0x29')](_0x165f34,'name');_0x5a2e57[_0x2aa2('0x2a')]=_['keys'](_0x5f9c9a['query']);_0x5a2e57[_0x2aa2('0x2b')]=_[_0x2aa2('0x2c')](_0x5a2e57[_0x2aa2('0x28')],_0x5a2e57['query']);_0x13c36f[_0x2aa2('0x2d')]=_[_0x2aa2('0x2c')](_0x5a2e57[_0x2aa2('0x28')],qs[_0x2aa2('0x2e')](_0x5f9c9a[_0x2aa2('0x2a')][_0x2aa2('0x2e')]));_0x13c36f[_0x2aa2('0x2d')]=_0x13c36f['attributes']['length']?_0x13c36f[_0x2aa2('0x2d')]:_0x5a2e57['model'];if(!_0x5f9c9a[_0x2aa2('0x2a')][_0x2aa2('0x2f')](_0x2aa2('0x30'))){_0x13c36f['limit']=qs[_0x2aa2('0x31')](_0x5f9c9a['query']['limit']);_0x13c36f[_0x2aa2('0x19')]=qs['offset'](_0x5f9c9a[_0x2aa2('0x2a')][_0x2aa2('0x19')]);}_0x13c36f[_0x2aa2('0x32')]=qs['sort'](_0x5f9c9a['query'][_0x2aa2('0x33')]);_0x13c36f['where']=qs[_0x2aa2('0x2b')](_[_0x2aa2('0x34')](_0x5f9c9a[_0x2aa2('0x2a')],_0x5a2e57[_0x2aa2('0x2b')]),_0x165f34);if(_0x5f9c9a['query'][_0x2aa2('0x35')]){_0x13c36f[_0x2aa2('0x36')]=_[_0x2aa2('0x37')](_0x13c36f[_0x2aa2('0x36')],{'$or':_[_0x2aa2('0x29')](_0x165f34,function(_0x26b617){if(_0x26b617[_0x2aa2('0x26')]!==_0x2aa2('0x38')){var _0x317d09={};_0x317d09[_0x26b617[_0x2aa2('0x23')]]={'$like':'%'+_0x5f9c9a[_0x2aa2('0x2a')][_0x2aa2('0x35')]+'%'};return _0x317d09;}})});}_0x13c36f=_[_0x2aa2('0x37')]({},_0x13c36f,_0x5f9c9a['options']);var _0x3094c4={'where':_0x13c36f[_0x2aa2('0x36')]};return db[_0x2aa2('0x25')][_0x2aa2('0x18')](_0x3094c4)[_0x2aa2('0x20')](function(_0x2817fd){_0x2f3435[_0x2aa2('0x18')]=_0x2817fd;if(_0x5f9c9a['query'][_0x2aa2('0x39')]){_0x13c36f[_0x2aa2('0x3a')]=[{'all':!![]}];}return db['SugarcrmAccount']['findAll'](_0x13c36f);})[_0x2aa2('0x20')](function(_0x5d6507){_0x2f3435[_0x2aa2('0x3b')]=_0x5d6507;return _0x2f3435;})['then'](respondWithFilteredResult(_0xaee8f9,_0x13c36f))[_0x2aa2('0x3c')](handleError(_0xaee8f9,null));};exports['show']=function(_0xe4f9ee,_0x57c491){var _0x206d48={'raw':![],'where':{'id':_0xe4f9ee[_0x2aa2('0x3d')]['id']}},_0x468e75={};_0x468e75[_0x2aa2('0x28')]=_['keys'](db[_0x2aa2('0x25')][_0x2aa2('0x3e')]);_0x468e75['query']=_['keys'](_0xe4f9ee[_0x2aa2('0x2a')]);_0x468e75[_0x2aa2('0x2b')]=_['intersection'](_0x468e75[_0x2aa2('0x28')],_0x468e75[_0x2aa2('0x2a')]);_0x206d48[_0x2aa2('0x2d')]=_[_0x2aa2('0x2c')](_0x468e75[_0x2aa2('0x28')],qs[_0x2aa2('0x2e')](_0xe4f9ee[_0x2aa2('0x2a')][_0x2aa2('0x2e')]));_0x206d48[_0x2aa2('0x2d')]=_0x206d48['attributes'][_0x2aa2('0x3f')]?_0x206d48[_0x2aa2('0x2d')]:_0x468e75['model'];if(_0xe4f9ee['query'][_0x2aa2('0x39')]){_0x206d48[_0x2aa2('0x3a')]=[{'all':!![]}];}_0x206d48=_['merge']({},_0x206d48,_0xe4f9ee[_0x2aa2('0x40')]);return db[_0x2aa2('0x25')][_0x2aa2('0x41')](_0x206d48)['then'](handleEntityNotFound(_0x57c491,null))[_0x2aa2('0x20')](respondWithResult(_0x57c491,null))[_0x2aa2('0x3c')](handleError(_0x57c491,null));};exports[_0x2aa2('0x42')]=function(_0x1bb3d7,_0x2ed2f4){return db[_0x2aa2('0x25')]['create'](_0x1bb3d7[_0x2aa2('0x43')],{})['then'](respondWithResult(_0x2ed2f4,0xc9))[_0x2aa2('0x3c')](handleError(_0x2ed2f4,null));};exports[_0x2aa2('0x1f')]=function(_0x550f46,_0x530eda){if(_0x550f46[_0x2aa2('0x43')]['id']){delete _0x550f46[_0x2aa2('0x43')]['id'];}return db[_0x2aa2('0x25')][_0x2aa2('0x41')]({'where':{'id':_0x550f46[_0x2aa2('0x3d')]['id']}})[_0x2aa2('0x20')](handleEntityNotFound(_0x530eda,null))[_0x2aa2('0x20')](saveUpdates(_0x550f46[_0x2aa2('0x43')],null))[_0x2aa2('0x20')](respondWithResult(_0x530eda,null))[_0x2aa2('0x3c')](handleError(_0x530eda,null));};exports['destroy']=function(_0x2720a2,_0x5d8e08){return db['SugarcrmAccount'][_0x2aa2('0x41')]({'where':{'id':_0x2720a2[_0x2aa2('0x3d')]['id']}})[_0x2aa2('0x20')](handleEntityNotFound(_0x5d8e08,null))[_0x2aa2('0x20')](removeEntity(_0x5d8e08,null))[_0x2aa2('0x3c')](handleError(_0x5d8e08,null));};exports[_0x2aa2('0x44')]=function(_0x3cce0e,_0x1921a6,_0x237ab9){var _0x1d00a3={};var _0x4f96d4={};var _0x4b5bc5;var _0x4e50b1;return db[_0x2aa2('0x25')][_0x2aa2('0x45')]({'where':{'id':_0x3cce0e[_0x2aa2('0x3d')]['id']}})[_0x2aa2('0x20')](handleEntityNotFound(_0x1921a6,null))[_0x2aa2('0x20')](function(_0x2ff05e){if(_0x2ff05e){_0x4b5bc5=_0x2ff05e;_0x4f96d4[_0x2aa2('0x28')]=_[_0x2aa2('0x46')](db[_0x2aa2('0x47')]['rawAttributes']);_0x4f96d4[_0x2aa2('0x2a')]=_[_0x2aa2('0x46')](_0x3cce0e[_0x2aa2('0x2a')]);_0x4f96d4[_0x2aa2('0x2b')]=_['intersection'](_0x4f96d4['model'],_0x4f96d4['query']);_0x1d00a3[_0x2aa2('0x2d')]=_[_0x2aa2('0x2c')](_0x4f96d4['model'],qs['fields'](_0x3cce0e[_0x2aa2('0x2a')][_0x2aa2('0x2e')]));_0x1d00a3[_0x2aa2('0x2d')]=_0x1d00a3[_0x2aa2('0x2d')][_0x2aa2('0x3f')]?_0x1d00a3[_0x2aa2('0x2d')]:_0x4f96d4['model'];_0x1d00a3['order']=qs[_0x2aa2('0x33')](_0x3cce0e[_0x2aa2('0x2a')]['sort']);_0x1d00a3[_0x2aa2('0x36')]=qs[_0x2aa2('0x2b')](_[_0x2aa2('0x34')](_0x3cce0e[_0x2aa2('0x2a')],_0x4f96d4[_0x2aa2('0x2b')]));if(_0x3cce0e[_0x2aa2('0x2a')][_0x2aa2('0x35')]){_0x1d00a3[_0x2aa2('0x36')]=_['merge'](_0x1d00a3[_0x2aa2('0x36')],{'$or':_[_0x2aa2('0x29')](_0x1d00a3[_0x2aa2('0x2d')],function(_0x1098fc){var _0x31b3fa={};_0x31b3fa[_0x1098fc]={'$like':'%'+_0x3cce0e[_0x2aa2('0x2a')][_0x2aa2('0x35')]+'%'};return _0x31b3fa;})});}_0x1d00a3=_[_0x2aa2('0x37')]({},_0x1d00a3,_0x3cce0e[_0x2aa2('0x40')]);return _0x4b5bc5[_0x2aa2('0x44')](_0x1d00a3);}})[_0x2aa2('0x20')](function(_0xcb244a){if(_0xcb244a){_0x4e50b1=_0xcb244a[_0x2aa2('0x3f')];if(!_0x3cce0e[_0x2aa2('0x2a')]['hasOwnProperty'](_0x2aa2('0x30'))){_0x1d00a3['limit']=qs['limit'](_0x3cce0e[_0x2aa2('0x2a')][_0x2aa2('0x31')]);_0x1d00a3[_0x2aa2('0x19')]=qs[_0x2aa2('0x19')](_0x3cce0e[_0x2aa2('0x2a')]['offset']);}return _0x4b5bc5[_0x2aa2('0x44')](_0x1d00a3);}})[_0x2aa2('0x20')](function(_0x274a4c){if(_0x274a4c){return _0x274a4c?{'count':_0x4e50b1,'rows':_0x274a4c}:null;}})[_0x2aa2('0x20')](respondWithResult(_0x1921a6,null))[_0x2aa2('0x3c')](handleError(_0x1921a6,null));};exports[_0x2aa2('0x48')]=function(_0x3c86b5,_0x11314e,_0x484033){if(_0x3c86b5[_0x2aa2('0x43')]['id']){delete _0x3c86b5[_0x2aa2('0x43')]['id'];}return db[_0x2aa2('0x25')][_0x2aa2('0x45')]({'where':{'id':_0x3c86b5[_0x2aa2('0x3d')]['id']}})[_0x2aa2('0x20')](handleEntityNotFound(_0x11314e,null))['then'](function(_0x2b1b17){if(_0x2b1b17){_0x3c86b5['body'][_0x2aa2('0x49')]=_0x2b1b17['id'];_0x3c86b5[_0x2aa2('0x43')][_0x2aa2('0x4a')]=integrations[_0x2aa2('0x4b')](_0x3c86b5[_0x2aa2('0x43')][_0x2aa2('0x4c')],_0x3c86b5[_0x2aa2('0x43')][_0x2aa2('0x26')]);_0x3c86b5[_0x2aa2('0x43')][_0x2aa2('0x4d')]=integrations[_0x2aa2('0x4e')](_0x3c86b5[_0x2aa2('0x43')]['channel'],_0x3c86b5[_0x2aa2('0x43')]['type']);return db['SugarcrmConfiguration'][_0x2aa2('0x42')](_0x3c86b5['body'],{'include':[{'model':db[_0x2aa2('0x4f')],'as':_0x2aa2('0x4a')},{'model':db[_0x2aa2('0x4f')],'as':_0x2aa2('0x4d')}]});}return null;})[_0x2aa2('0x20')](respondWithResult(_0x11314e,null))[_0x2aa2('0x3c')](handleError(_0x11314e,null));};exports[_0x2aa2('0x50')]=function(_0x32271a,_0x2c621c,_0x23a289){var _0x407b97='';var _0xcf29af=['id',_0x2aa2('0x23'),_0x2aa2('0x51'),_0x2aa2('0x52'),'description',_0x2aa2('0x53'),_0x2aa2('0x54'),_0x2aa2('0x55'),'parent_id',_0x2aa2('0x56'),_0x2aa2('0x57'),'direction'];return db[_0x2aa2('0x25')][_0x2aa2('0x45')]({'where':{'id':_0x32271a[_0x2aa2('0x3d')]['id']},'attributes':['id',_0x2aa2('0x58'),_0x2aa2('0x59'),_0x2aa2('0x5a')]})[_0x2aa2('0x20')](handleEntityNotFound(_0x2c621c,null))['then'](function(_0x434956){if(_0x434956){_0x407b97=_0x434956[_0x2aa2('0x5a')];var _0x60acc6=_0x407b97[_0x2aa2('0x5b')](-0x1);if(_0x60acc6==='/'){_0x407b97=_0x407b97['substring'](0x0,_0x407b97[_0x2aa2('0x5c')](_0x60acc6));}return rp({'method':'POST','uri':util[_0x2aa2('0x5d')](_0x2aa2('0x5e'),_0x407b97,_0x2aa2('0x5f')),'json':!![],'form':{'method':_0x2aa2('0x60'),'input_type':_0x2aa2('0x61'),'response_type':_0x2aa2('0x61'),'rest_data':JSON[_0x2aa2('0x62')]({'user_auth':{'user_name':_0x434956[_0x2aa2('0x58')],'password':_0x434956[_0x2aa2('0x59')],'encryption':_0x2aa2('0x63')},'application':_0x2aa2('0x64')})}});}})[_0x2aa2('0x20')](function(_0x3660e2){if(_0x3660e2&&_0x3660e2['name']!==_0x2aa2('0x65')&&_0x3660e2[_0x2aa2('0x23')]!==_0x2aa2('0x66')){return rp({'method':_0x2aa2('0x67'),'uri':util[_0x2aa2('0x5d')](_0x2aa2('0x5e'),_0x407b97,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0x2aa2('0x68'),'input_type':'JSON','response_type':'JSON','rest_data':JSON[_0x2aa2('0x62')]({'session':_0x3660e2['id'],'module_name':'Calls'})}})[_0x2aa2('0x20')](function(_0x242216){if(_0x242216){var _0x374085=_[_0x2aa2('0x69')](_0x242216[_0x2aa2('0x6a')]);_['remove'](_0x374085,function(_0x24ec35){return _0xcf29af[_0x2aa2('0x6b')](_0x24ec35['name']);});return{'count':_0x374085[_0x2aa2('0x3f')],'rows':_[_0x2aa2('0x29')](_0x374085,function(_0x204f76){return{'id':_0x204f76['name'],'name':_0x204f76['label'],'custom':_[_0x2aa2('0x6c')](_0x204f76[_0x2aa2('0x23')],'_c')?!![]:![],'options':_0x204f76[_0x2aa2('0x40')]?_[_0x2aa2('0x29')](_[_0x2aa2('0x69')](_0x204f76[_0x2aa2('0x40')]),function(_0x1b2c69){return{'name':_0x1b2c69[_0x2aa2('0x6d')],'value':_0x1b2c69[_0x2aa2('0x23')]};}):[]};})};}})[_0x2aa2('0x20')](respondWithResult(_0x2c621c,null))[_0x2aa2('0x3c')](function(_0x404242){var _0x11b26d=_0x32271a[_0x2aa2('0x2a')]['test']?0x1f4:_0x404242[_0x2aa2('0x6e')]||0x1f4;logger['error'](_0x2aa2('0x6f'),_0x2aa2('0x50'),_0x11b26d,JSON[_0x2aa2('0x62')](_0x404242));delete _0x404242['name'];if(_0x11b26d===0x191){_0x11b26d=0x190;}_0x2c621c[_0x2aa2('0x15')](_0x11b26d)[_0x2aa2('0x24')](_0x32271a[_0x2aa2('0x2a')][_0x2aa2('0x70')]?{'message':_0x2aa2('0x71'),'statusCode':_0x404242[_0x2aa2('0x6e')]}:_0x404242);});}else{var _0x5a2035=0x1f4;_0x2c621c[_0x2aa2('0x15')](_0x5a2035)['send']({'message':_0x2aa2('0x71'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0xe845=['sox','to-csv','ejs','lodash','squel','crypto','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','then','destroy','error','stack','name','index','SugarcrmAccount','fieldName','type','key','model','map','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','fields','options','find','body','update','getConfigurations','findOne','SugarcrmConfiguration','order','addConfiguration','AccountId','getSubjects','channel','getDescriptions','create','SugarcrmField','Subjects','Descriptions','getFields','assigned_user_id','created_by','description','date_start','duration_hours','duration_minutes','parent_id','parent_type','parent_name','direction','username','password','remoteUri','slice','substring','format','/service/v4_1/rest.php','login','JSON','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','POST','%s%s','get_module_fields','stringify','Calls','module_fields','remove','label','endsWith','values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','send','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util'];(function(_0x45fc77,_0x473d8c){var _0xd101e=function(_0x410215){while(--_0x410215){_0x45fc77['push'](_0x45fc77['shift']());}};_0xd101e(++_0x473d8c);}(_0xe845,0x78));var _0x5e84=function(_0x2dd8d1,_0x4ee1af){_0x2dd8d1=_0x2dd8d1-0x0;var _0x395586=_0xe845[_0x2dd8d1];return _0x395586;};'use strict';var emlformat=require(_0x5e84('0x0'));var rimraf=require(_0x5e84('0x1'));var zipdir=require(_0x5e84('0x2'));var jsonpatch=require(_0x5e84('0x3'));var rp=require(_0x5e84('0x4'));var moment=require(_0x5e84('0x5'));var BPromise=require(_0x5e84('0x6'));var Mustache=require(_0x5e84('0x7'));var util=require(_0x5e84('0x8'));var path=require('path');var sox=require(_0x5e84('0x9'));var csv=require(_0x5e84('0xa'));var ejs=require(_0x5e84('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5e84('0xc'));var squel=require(_0x5e84('0xd'));var crypto=require(_0x5e84('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x5e84('0xf'));var Redis=require(_0x5e84('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x5e84('0x11'));var as=require(_0x5e84('0x12'));var hardwareService=require(_0x5e84('0x13'));var logger=require(_0x5e84('0x14'))('api');var utils=require(_0x5e84('0x15'));var config=require(_0x5e84('0x16'));var licenseUtil=require(_0x5e84('0x17'));var db=require(_0x5e84('0x18'))['db'];var integrations=require(_0x5e84('0x19'));function respondWithStatusCode(_0x4188de,_0x509191){_0x509191=_0x509191||0xcc;return function(_0x3f8840){if(_0x3f8840){return _0x4188de[_0x5e84('0x1a')](_0x509191);}return _0x4188de['status'](_0x509191)[_0x5e84('0x1b')]();};}function respondWithResult(_0x18e265,_0x5286d1){_0x5286d1=_0x5286d1||0xc8;return function(_0x208490){if(_0x208490){return _0x18e265['status'](_0x5286d1)[_0x5e84('0x1c')](_0x208490);}};}function respondWithFilteredResult(_0x251eaf,_0x11d4d7){return function(_0x58c1c3){if(_0x58c1c3){var _0x413812=typeof _0x11d4d7[_0x5e84('0x1d')]===_0x5e84('0x1e')&&typeof _0x11d4d7[_0x5e84('0x1f')]===_0x5e84('0x1e');var _0xb4618e=_0x58c1c3[_0x5e84('0x20')];var _0x573773=_0x413812?0x0:_0x11d4d7[_0x5e84('0x1d')];var _0x4dfd42=_0x413812?_0x58c1c3['count']:_0x11d4d7[_0x5e84('0x1d')]+_0x11d4d7[_0x5e84('0x1f')];var _0x18e055;if(_0x4dfd42>=_0xb4618e){_0x4dfd42=_0xb4618e;_0x18e055=0xc8;}else{_0x18e055=0xce;}_0x251eaf[_0x5e84('0x21')](_0x18e055);return _0x251eaf[_0x5e84('0x22')](_0x5e84('0x23'),_0x573773+'-'+_0x4dfd42+'/'+_0xb4618e)['json'](_0x58c1c3);}return null;};}function patchUpdates(_0x74d0ef){return function(_0x886dc2){try{jsonpatch[_0x5e84('0x24')](_0x886dc2,_0x74d0ef,!![]);}catch(_0x54d23b){return BPromise[_0x5e84('0x25')](_0x54d23b);}return _0x886dc2['save']();};}function saveUpdates(_0x249490,_0x35c764){return function(_0xd5a168){if(_0xd5a168){return _0xd5a168['update'](_0x249490)[_0x5e84('0x26')](function(_0x4db320){return _0x4db320;});}return null;};}function removeEntity(_0x46ca2e,_0x2cffa0){return function(_0xa9f4b9){if(_0xa9f4b9){return _0xa9f4b9[_0x5e84('0x27')]()[_0x5e84('0x26')](function(){_0x46ca2e[_0x5e84('0x21')](0xcc)[_0x5e84('0x1b')]();});}};}function handleEntityNotFound(_0x2814ee,_0x41a4bd){return function(_0x483136){if(!_0x483136){_0x2814ee[_0x5e84('0x1a')](0x194);}return _0x483136;};}function handleError(_0x74aecd,_0xa29f0e){_0xa29f0e=_0xa29f0e||0x1f4;return function(_0x124bc3){logger[_0x5e84('0x28')](_0x124bc3[_0x5e84('0x29')]);if(_0x124bc3[_0x5e84('0x2a')]){delete _0x124bc3[_0x5e84('0x2a')];}_0x74aecd[_0x5e84('0x21')](_0xa29f0e)['send'](_0x124bc3);};}exports[_0x5e84('0x2b')]=function(_0x41ae65,_0x28fb6b){var _0x3b7d06={},_0x1cee59={},_0xff5b7e={'count':0x0,'rows':[]};var _0x2c2fd2=_['map'](db[_0x5e84('0x2c')]['rawAttributes'],function(_0x3bea6e){return{'name':_0x3bea6e[_0x5e84('0x2d')],'type':_0x3bea6e[_0x5e84('0x2e')][_0x5e84('0x2f')]};});_0x1cee59[_0x5e84('0x30')]=_[_0x5e84('0x31')](_0x2c2fd2,'name');_0x1cee59[_0x5e84('0x32')]=_['keys'](_0x41ae65['query']);_0x1cee59[_0x5e84('0x33')]=_[_0x5e84('0x34')](_0x1cee59[_0x5e84('0x30')],_0x1cee59[_0x5e84('0x32')]);_0x3b7d06['attributes']=_[_0x5e84('0x34')](_0x1cee59[_0x5e84('0x30')],qs['fields'](_0x41ae65[_0x5e84('0x32')]['fields']));_0x3b7d06[_0x5e84('0x35')]=_0x3b7d06[_0x5e84('0x35')][_0x5e84('0x36')]?_0x3b7d06[_0x5e84('0x35')]:_0x1cee59[_0x5e84('0x30')];if(!_0x41ae65['query'][_0x5e84('0x37')](_0x5e84('0x38'))){_0x3b7d06['limit']=qs[_0x5e84('0x1f')](_0x41ae65[_0x5e84('0x32')][_0x5e84('0x1f')]);_0x3b7d06[_0x5e84('0x1d')]=qs['offset'](_0x41ae65[_0x5e84('0x32')]['offset']);}_0x3b7d06['order']=qs['sort'](_0x41ae65[_0x5e84('0x32')][_0x5e84('0x39')]);_0x3b7d06[_0x5e84('0x3a')]=qs[_0x5e84('0x33')](_[_0x5e84('0x3b')](_0x41ae65[_0x5e84('0x32')],_0x1cee59[_0x5e84('0x33')]),_0x2c2fd2);if(_0x41ae65[_0x5e84('0x32')][_0x5e84('0x3c')]){_0x3b7d06['where']=_[_0x5e84('0x3d')](_0x3b7d06[_0x5e84('0x3a')],{'$or':_[_0x5e84('0x31')](_0x2c2fd2,function(_0x52290e){if(_0x52290e['type']!==_0x5e84('0x3e')){var _0x30db3a={};_0x30db3a[_0x52290e[_0x5e84('0x2a')]]={'$like':'%'+_0x41ae65[_0x5e84('0x32')][_0x5e84('0x3c')]+'%'};return _0x30db3a;}})});}_0x3b7d06=_[_0x5e84('0x3d')]({},_0x3b7d06,_0x41ae65['options']);var _0x36dfcd={'where':_0x3b7d06[_0x5e84('0x3a')]};return db[_0x5e84('0x2c')]['count'](_0x36dfcd)[_0x5e84('0x26')](function(_0x46810a){_0xff5b7e[_0x5e84('0x20')]=_0x46810a;if(_0x41ae65[_0x5e84('0x32')][_0x5e84('0x3f')]){_0x3b7d06[_0x5e84('0x40')]=[{'all':!![]}];}return db[_0x5e84('0x2c')][_0x5e84('0x41')](_0x3b7d06);})[_0x5e84('0x26')](function(_0x373093){_0xff5b7e[_0x5e84('0x42')]=_0x373093;return _0xff5b7e;})['then'](respondWithFilteredResult(_0x28fb6b,_0x3b7d06))[_0x5e84('0x43')](handleError(_0x28fb6b,null));};exports[_0x5e84('0x44')]=function(_0xcbce57,_0x3374fe){var _0x420a32={'raw':![],'where':{'id':_0xcbce57[_0x5e84('0x45')]['id']}},_0x4b3f7c={};_0x4b3f7c[_0x5e84('0x30')]=_[_0x5e84('0x46')](db['SugarcrmAccount'][_0x5e84('0x47')]);_0x4b3f7c[_0x5e84('0x32')]=_[_0x5e84('0x46')](_0xcbce57[_0x5e84('0x32')]);_0x4b3f7c[_0x5e84('0x33')]=_[_0x5e84('0x34')](_0x4b3f7c[_0x5e84('0x30')],_0x4b3f7c['query']);_0x420a32[_0x5e84('0x35')]=_[_0x5e84('0x34')](_0x4b3f7c['model'],qs['fields'](_0xcbce57['query'][_0x5e84('0x48')]));_0x420a32[_0x5e84('0x35')]=_0x420a32['attributes']['length']?_0x420a32[_0x5e84('0x35')]:_0x4b3f7c[_0x5e84('0x30')];if(_0xcbce57[_0x5e84('0x32')]['includeAll']){_0x420a32['include']=[{'all':!![]}];}_0x420a32=_[_0x5e84('0x3d')]({},_0x420a32,_0xcbce57[_0x5e84('0x49')]);return db[_0x5e84('0x2c')][_0x5e84('0x4a')](_0x420a32)[_0x5e84('0x26')](handleEntityNotFound(_0x3374fe,null))[_0x5e84('0x26')](respondWithResult(_0x3374fe,null))['catch'](handleError(_0x3374fe,null));};exports['create']=function(_0x3f33fe,_0x1ff43c){return db[_0x5e84('0x2c')]['create'](_0x3f33fe[_0x5e84('0x4b')],{})[_0x5e84('0x26')](respondWithResult(_0x1ff43c,0xc9))['catch'](handleError(_0x1ff43c,null));};exports[_0x5e84('0x4c')]=function(_0x30a7bb,_0xe6761e){if(_0x30a7bb[_0x5e84('0x4b')]['id']){delete _0x30a7bb[_0x5e84('0x4b')]['id'];}return db[_0x5e84('0x2c')][_0x5e84('0x4a')]({'where':{'id':_0x30a7bb[_0x5e84('0x45')]['id']}})[_0x5e84('0x26')](handleEntityNotFound(_0xe6761e,null))[_0x5e84('0x26')](saveUpdates(_0x30a7bb[_0x5e84('0x4b')],null))[_0x5e84('0x26')](respondWithResult(_0xe6761e,null))[_0x5e84('0x43')](handleError(_0xe6761e,null));};exports[_0x5e84('0x27')]=function(_0x2481f1,_0x44140d){return db[_0x5e84('0x2c')][_0x5e84('0x4a')]({'where':{'id':_0x2481f1[_0x5e84('0x45')]['id']}})[_0x5e84('0x26')](handleEntityNotFound(_0x44140d,null))['then'](removeEntity(_0x44140d,null))[_0x5e84('0x43')](handleError(_0x44140d,null));};exports[_0x5e84('0x4d')]=function(_0x32d4b4,_0x233f61,_0x227d66){var _0x1998a1={};var _0x26f252={};var _0x5d879f;var _0x2214f2;return db[_0x5e84('0x2c')][_0x5e84('0x4e')]({'where':{'id':_0x32d4b4[_0x5e84('0x45')]['id']}})['then'](handleEntityNotFound(_0x233f61,null))[_0x5e84('0x26')](function(_0x3e6baa){if(_0x3e6baa){_0x5d879f=_0x3e6baa;_0x26f252['model']=_[_0x5e84('0x46')](db[_0x5e84('0x4f')][_0x5e84('0x47')]);_0x26f252[_0x5e84('0x32')]=_[_0x5e84('0x46')](_0x32d4b4['query']);_0x26f252['filters']=_[_0x5e84('0x34')](_0x26f252[_0x5e84('0x30')],_0x26f252[_0x5e84('0x32')]);_0x1998a1[_0x5e84('0x35')]=_['intersection'](_0x26f252[_0x5e84('0x30')],qs[_0x5e84('0x48')](_0x32d4b4['query'][_0x5e84('0x48')]));_0x1998a1['attributes']=_0x1998a1[_0x5e84('0x35')][_0x5e84('0x36')]?_0x1998a1[_0x5e84('0x35')]:_0x26f252[_0x5e84('0x30')];_0x1998a1[_0x5e84('0x50')]=qs[_0x5e84('0x39')](_0x32d4b4['query'][_0x5e84('0x39')]);_0x1998a1['where']=qs[_0x5e84('0x33')](_[_0x5e84('0x3b')](_0x32d4b4[_0x5e84('0x32')],_0x26f252['filters']));if(_0x32d4b4[_0x5e84('0x32')]['filter']){_0x1998a1[_0x5e84('0x3a')]=_[_0x5e84('0x3d')](_0x1998a1['where'],{'$or':_['map'](_0x1998a1['attributes'],function(_0x20a927){var _0xd454a2={};_0xd454a2[_0x20a927]={'$like':'%'+_0x32d4b4[_0x5e84('0x32')][_0x5e84('0x3c')]+'%'};return _0xd454a2;})});}_0x1998a1=_[_0x5e84('0x3d')]({},_0x1998a1,_0x32d4b4[_0x5e84('0x49')]);return _0x5d879f['getConfigurations'](_0x1998a1);}})['then'](function(_0x8c6f5f){if(_0x8c6f5f){_0x2214f2=_0x8c6f5f[_0x5e84('0x36')];if(!_0x32d4b4[_0x5e84('0x32')][_0x5e84('0x37')](_0x5e84('0x38'))){_0x1998a1[_0x5e84('0x1f')]=qs[_0x5e84('0x1f')](_0x32d4b4[_0x5e84('0x32')][_0x5e84('0x1f')]);_0x1998a1['offset']=qs[_0x5e84('0x1d')](_0x32d4b4[_0x5e84('0x32')]['offset']);}return _0x5d879f[_0x5e84('0x4d')](_0x1998a1);}})[_0x5e84('0x26')](function(_0x3bfe00){if(_0x3bfe00){return _0x3bfe00?{'count':_0x2214f2,'rows':_0x3bfe00}:null;}})[_0x5e84('0x26')](respondWithResult(_0x233f61,null))[_0x5e84('0x43')](handleError(_0x233f61,null));};exports[_0x5e84('0x51')]=function(_0x972fcb,_0xcee706,_0x5a64ee){if(_0x972fcb['body']['id']){delete _0x972fcb[_0x5e84('0x4b')]['id'];}return db[_0x5e84('0x2c')]['findOne']({'where':{'id':_0x972fcb['params']['id']}})[_0x5e84('0x26')](handleEntityNotFound(_0xcee706,null))[_0x5e84('0x26')](function(_0x59b01e){if(_0x59b01e){_0x972fcb[_0x5e84('0x4b')][_0x5e84('0x52')]=_0x59b01e['id'];_0x972fcb[_0x5e84('0x4b')]['Subjects']=integrations[_0x5e84('0x53')](_0x972fcb['body'][_0x5e84('0x54')],_0x972fcb[_0x5e84('0x4b')]['type']);_0x972fcb[_0x5e84('0x4b')]['Descriptions']=integrations[_0x5e84('0x55')](_0x972fcb[_0x5e84('0x4b')][_0x5e84('0x54')],_0x972fcb[_0x5e84('0x4b')]['type']);return db[_0x5e84('0x4f')][_0x5e84('0x56')](_0x972fcb['body'],{'include':[{'model':db[_0x5e84('0x57')],'as':_0x5e84('0x58')},{'model':db[_0x5e84('0x57')],'as':_0x5e84('0x59')}]});}return null;})['then'](respondWithResult(_0xcee706,null))[_0x5e84('0x43')](handleError(_0xcee706,null));};exports[_0x5e84('0x5a')]=function(_0x25a0a2,_0x25def6,_0x4c49a1){var _0x1752a8='';var _0x4068a4=['id','name',_0x5e84('0x5b'),_0x5e84('0x5c'),_0x5e84('0x5d'),_0x5e84('0x5e'),_0x5e84('0x5f'),_0x5e84('0x60'),_0x5e84('0x61'),_0x5e84('0x62'),_0x5e84('0x63'),_0x5e84('0x64')];return db[_0x5e84('0x2c')][_0x5e84('0x4e')]({'where':{'id':_0x25a0a2[_0x5e84('0x45')]['id']},'attributes':['id',_0x5e84('0x65'),_0x5e84('0x66'),_0x5e84('0x67')]})[_0x5e84('0x26')](handleEntityNotFound(_0x25def6,null))[_0x5e84('0x26')](function(_0x43e1d8){if(_0x43e1d8){_0x1752a8=_0x43e1d8[_0x5e84('0x67')];var _0x3b3304=_0x1752a8[_0x5e84('0x68')](-0x1);if(_0x3b3304==='/'){_0x1752a8=_0x1752a8[_0x5e84('0x69')](0x0,_0x1752a8['lastIndexOf'](_0x3b3304));}return rp({'method':'POST','uri':util[_0x5e84('0x6a')]('%s%s',_0x1752a8,_0x5e84('0x6b')),'json':!![],'form':{'method':_0x5e84('0x6c'),'input_type':_0x5e84('0x6d'),'response_type':_0x5e84('0x6d'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x43e1d8[_0x5e84('0x65')],'password':_0x43e1d8[_0x5e84('0x66')],'encryption':_0x5e84('0x6e')},'application':_0x5e84('0x6f')})}});}})['then'](function(_0x372293){if(_0x372293&&_0x372293['name']!==_0x5e84('0x70')&&_0x372293[_0x5e84('0x2a')]!==_0x5e84('0x71')){return rp({'method':_0x5e84('0x72'),'uri':util['format'](_0x5e84('0x73'),_0x1752a8,_0x5e84('0x6b')),'json':!![],'form':{'method':_0x5e84('0x74'),'input_type':_0x5e84('0x6d'),'response_type':_0x5e84('0x6d'),'rest_data':JSON[_0x5e84('0x75')]({'session':_0x372293['id'],'module_name':_0x5e84('0x76')})}})['then'](function(_0x4fe87f){if(_0x4fe87f){var _0x506ccf=_['values'](_0x4fe87f[_0x5e84('0x77')]);_[_0x5e84('0x78')](_0x506ccf,function(_0x23f68e){return _0x4068a4['includes'](_0x23f68e['name']);});return{'count':_0x506ccf[_0x5e84('0x36')],'rows':_[_0x5e84('0x31')](_0x506ccf,function(_0x22d697){return{'id':_0x22d697[_0x5e84('0x2a')],'name':_0x22d697[_0x5e84('0x79')],'custom':_[_0x5e84('0x7a')](_0x22d697['name'],'_c')?!![]:![],'options':_0x22d697[_0x5e84('0x49')]?_[_0x5e84('0x31')](_[_0x5e84('0x7b')](_0x22d697[_0x5e84('0x49')]),function(_0x42e174){return{'name':_0x42e174['value'],'value':_0x42e174[_0x5e84('0x2a')]};}):[]};})};}})[_0x5e84('0x26')](respondWithResult(_0x25def6,null))[_0x5e84('0x43')](function(_0x5dc499){var _0xcc7b5=_0x25a0a2[_0x5e84('0x32')][_0x5e84('0x7c')]?0x1f4:_0x5dc499[_0x5e84('0x7d')]||0x1f4;logger['error'](_0x5e84('0x7e'),'getFields',_0xcc7b5,JSON['stringify'](_0x5dc499));delete _0x5dc499[_0x5e84('0x2a')];if(_0xcc7b5===0x191){_0xcc7b5=0x190;}_0x25def6[_0x5e84('0x21')](_0xcc7b5)[_0x5e84('0x7f')](_0x25a0a2['query']['test']?{'message':_0x5e84('0x80'),'statusCode':_0x5dc499['statusCode']}:_0x5dc499);});}else{var _0x15cc22=0x1f4;_0x25def6['status'](_0x15cc22)[_0x5e84('0x7f')]({'message':'Wrong\x20credentials','statusCode':0x190});}});};
\ No newline at end of file
index 71eec9a..37c22db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdc2=['path','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','SugarcrmAccount','int_sugarcrm_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x33a5b3,_0x2e6c02){var _0xd63a13=function(_0x39b648){while(--_0x39b648){_0x33a5b3['push'](_0x33a5b3['shift']());}};_0xd63a13(++_0x2e6c02);}(_0xcdc2,0x19d));var _0x2cdc=function(_0xd99a3e,_0x59cb04){_0xd99a3e=_0xd99a3e-0x0;var _0x4b3644=_0xcdc2[_0xd99a3e];return _0x4b3644;};'use strict';var _=require(_0x2cdc('0x0'));var util=require(_0x2cdc('0x1'));var logger=require(_0x2cdc('0x2'))(_0x2cdc('0x3'));var moment=require(_0x2cdc('0x4'));var BPromise=require(_0x2cdc('0x5'));var rp=require(_0x2cdc('0x6'));var fs=require('fs');var path=require(_0x2cdc('0x7'));var rimraf=require(_0x2cdc('0x8'));var config=require(_0x2cdc('0x9'));var attributes=require(_0x2cdc('0xa'));var integrations=require(_0x2cdc('0xb'));module['exports']=function(_0x581345,_0x10b817){return _0x581345['define'](_0x2cdc('0xc'),attributes,{'tableName':_0x2cdc('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbced=['define','SugarcrmAccount','api','moment','bluebird','request-promise','path','./intSugarcrmAccount.attributes','exports'];(function(_0x5828d3,_0x215a5f){var _0x2447d5=function(_0x45ac3f){while(--_0x45ac3f){_0x5828d3['push'](_0x5828d3['shift']());}};_0x2447d5(++_0x215a5f);}(_0xbced,0x1d6));var _0xdbce=function(_0xbeea0b,_0x29192f){_0xbeea0b=_0xbeea0b-0x0;var _0x5e095f=_0xbced[_0xbeea0b];return _0x5e095f;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xdbce('0x0'));var moment=require(_0xdbce('0x1'));var BPromise=require(_0xdbce('0x2'));var rp=require(_0xdbce('0x3'));var fs=require('fs');var path=require(_0xdbce('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xdbce('0x5'));var integrations=require('../../components/integrations/configuration');module[_0xdbce('0x6')]=function(_0x6a1016,_0x52e94b){return _0x6a1016[_0xdbce('0x7')](_0xdbce('0x8'),attributes,{'tableName':'int_sugarcrm_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2e8723a..867a1c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46e7=['bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetSugarcrmAccount','options','raw','where','attributes','limit','include','model','map','then','ShowSugarcrmAccount','SugarcrmAccount','find','lodash','util','moment'];(function(_0x59a1d9,_0x181115){var _0x577f9c=function(_0x364f7d){while(--_0x364f7d){_0x59a1d9['push'](_0x59a1d9['shift']());}};_0x577f9c(++_0x181115);}(_0x46e7,0xcf));var _0x746e=function(_0x40da51,_0x182d59){_0x40da51=_0x40da51-0x0;var _0x3f73d0=_0x46e7[_0x40da51];return _0x3f73d0;};'use strict';var _=require(_0x746e('0x0'));var util=require(_0x746e('0x1'));var moment=require(_0x746e('0x2'));var BPromise=require(_0x746e('0x3'));var rs=require(_0x746e('0x4'));var fs=require('fs');var Redis=require(_0x746e('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x746e('0x6'));var config=require(_0x746e('0x7'));var jayson=require(_0x746e('0x8'));var client=jayson[_0x746e('0x9')][_0x746e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x54129,_0x3a116f,_0x103b65){return new BPromise(function(_0x10706d,_0xbe1ef6){return client[_0x746e('0xb')](_0x54129,_0x103b65)['then'](function(_0x5dd90c){logger[_0x746e('0xc')](_0x746e('0xd'),_0x3a116f,_0x746e('0xe'));logger[_0x746e('0xf')]('SugarcrmAccount,\x20%s,\x20%s,\x20%s',_0x3a116f,_0x746e('0xe'),JSON[_0x746e('0x10')](_0x5dd90c));if(_0x5dd90c[_0x746e('0x11')]){if(_0x5dd90c['error'][_0x746e('0x12')]===0x1f4){logger['error']('SugarcrmAccount,\x20%s,\x20%s',_0x3a116f,_0x5dd90c[_0x746e('0x11')]['message']);return _0xbe1ef6(_0x5dd90c['error'][_0x746e('0x13')]);}logger[_0x746e('0x11')](_0x746e('0xd'),_0x3a116f,_0x5dd90c['error'][_0x746e('0x13')]);return _0x10706d(_0x5dd90c[_0x746e('0x11')]['message']);}else{logger[_0x746e('0xc')]('SugarcrmAccount,\x20%s,\x20%s',_0x3a116f,'request\x20sent');_0x10706d(_0x5dd90c[_0x746e('0x14')]['message']);}})[_0x746e('0x15')](function(_0x481689){logger['error'](_0x746e('0xd'),_0x3a116f,_0x481689);_0xbe1ef6(_0x481689);});});}exports[_0x746e('0x16')]=function(_0x50a2ae){var _0x5bd504=this;return new Promise(function(_0x4d6e1d,_0x428fea){return db['SugarcrmAccount']['findAll']({'raw':_0x50a2ae[_0x746e('0x17')]?_0x50a2ae[_0x746e('0x17')][_0x746e('0x18')]===undefined?!![]:![]:!![],'where':_0x50a2ae[_0x746e('0x17')]?_0x50a2ae[_0x746e('0x17')][_0x746e('0x19')]||null:null,'attributes':_0x50a2ae[_0x746e('0x17')]?_0x50a2ae[_0x746e('0x17')][_0x746e('0x1a')]||null:null,'limit':_0x50a2ae['options']?_0x50a2ae['options'][_0x746e('0x1b')]||null:null,'include':_0x50a2ae[_0x746e('0x17')]?_0x50a2ae[_0x746e('0x17')][_0x746e('0x1c')]?_['map'](_0x50a2ae['options'][_0x746e('0x1c')],function(_0x243139){return{'model':db[_0x243139[_0x746e('0x1d')]],'as':_0x243139['as'],'attributes':_0x243139[_0x746e('0x1a')],'include':_0x243139['include']?_[_0x746e('0x1e')](_0x243139[_0x746e('0x1c')],function(_0x54f277){return{'model':db[_0x54f277['model']],'as':_0x54f277['as'],'attributes':_0x54f277['attributes'],'include':_0x54f277['include']?_['map'](_0x54f277[_0x746e('0x1c')],function(_0x20279d){return{'model':db[_0x20279d[_0x746e('0x1d')]],'as':_0x20279d['as'],'attributes':_0x20279d[_0x746e('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x746e('0x1f')](function(_0xdb561c){logger['info']('GetSugarcrmAccount',_0x50a2ae);logger[_0x746e('0xf')](_0x746e('0x16'),_0x50a2ae,JSON[_0x746e('0x10')](_0xdb561c));_0x4d6e1d(_0xdb561c);})['catch'](function(_0x48d943){logger[_0x746e('0x11')]('GetSugarcrmAccount',_0x48d943[_0x746e('0x13')],_0x50a2ae);_0x428fea(_0x5bd504[_0x746e('0x11')](0x1f4,_0x48d943[_0x746e('0x13')]));});});};exports[_0x746e('0x20')]=function(_0x2b11bb){var _0x3a8320=this;return new Promise(function(_0x110637,_0x176e9e){return db[_0x746e('0x21')][_0x746e('0x22')]({'raw':_0x2b11bb['options']?_0x2b11bb['options'][_0x746e('0x18')]===undefined?!![]:![]:!![],'where':_0x2b11bb[_0x746e('0x17')]?_0x2b11bb[_0x746e('0x17')][_0x746e('0x19')]||null:null,'attributes':_0x2b11bb[_0x746e('0x17')]?_0x2b11bb[_0x746e('0x17')][_0x746e('0x1a')]||null:null,'include':_0x2b11bb['options']?_0x2b11bb[_0x746e('0x17')]['include']?_['map'](_0x2b11bb[_0x746e('0x17')][_0x746e('0x1c')],function(_0x41c110){return{'model':db[_0x41c110[_0x746e('0x1d')]],'as':_0x41c110['as'],'attributes':_0x41c110[_0x746e('0x1a')],'include':_0x41c110['include']?_['map'](_0x41c110[_0x746e('0x1c')],function(_0x4c00f){return{'model':db[_0x4c00f[_0x746e('0x1d')]],'as':_0x4c00f['as'],'attributes':_0x4c00f['attributes'],'include':_0x4c00f[_0x746e('0x1c')]?_['map'](_0x4c00f[_0x746e('0x1c')],function(_0x4b19af){return{'model':db[_0x4b19af['model']],'as':_0x4b19af['as'],'attributes':_0x4b19af[_0x746e('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x171c93){logger[_0x746e('0xc')](_0x746e('0x20'),_0x2b11bb);logger[_0x746e('0xf')]('ShowSugarcrmAccount',_0x2b11bb,JSON[_0x746e('0x10')](_0x171c93));_0x110637(_0x171c93);})[_0x746e('0x15')](function(_0x41dc72){logger[_0x746e('0x11')](_0x746e('0x20'),_0x41dc72[_0x746e('0x13')],_0x2b11bb);_0x176e9e(_0x3a8320[_0x746e('0x11')](0x1f4,_0x41dc72[_0x746e('0x13')]));});});};
\ No newline at end of file
+var _0xdea1=['util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','SugarcrmAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetSugarcrmAccount','SugarcrmAccount','findAll','options','raw','where','attributes','limit','include','map','model','debug','stringify','find','ShowSugarcrmAccount','lodash'];(function(_0x29d7ef,_0x2a9481){var _0x1c4e0e=function(_0x20113f){while(--_0x20113f){_0x29d7ef['push'](_0x29d7ef['shift']());}};_0x1c4e0e(++_0x2a9481);}(_0xdea1,0x8f));var _0x1dea=function(_0x181ec1,_0x487d11){_0x181ec1=_0x181ec1-0x0;var _0x166c84=_0xdea1[_0x181ec1];return _0x166c84;};'use strict';var _=require(_0x1dea('0x0'));var util=require(_0x1dea('0x1'));var moment=require(_0x1dea('0x2'));var BPromise=require(_0x1dea('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1dea('0x4'));var db=require(_0x1dea('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x1dea('0x6'))('rpc');var config=require(_0x1dea('0x7'));var jayson=require(_0x1dea('0x8'));var client=jayson[_0x1dea('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0xaabb86,_0x50b25b,_0x2e8ef6){return new BPromise(function(_0xf18a83,_0x11b8dc){return client[_0x1dea('0xa')](_0xaabb86,_0x2e8ef6)[_0x1dea('0xb')](function(_0x59405e){logger[_0x1dea('0xc')](_0x1dea('0xd'),_0x50b25b,_0x1dea('0xe'));logger['debug'](_0x1dea('0xf'),_0x50b25b,'request\x20sent',JSON['stringify'](_0x59405e));if(_0x59405e[_0x1dea('0x10')]){if(_0x59405e[_0x1dea('0x10')][_0x1dea('0x11')]===0x1f4){logger[_0x1dea('0x10')](_0x1dea('0xd'),_0x50b25b,_0x59405e[_0x1dea('0x10')][_0x1dea('0x12')]);return _0x11b8dc(_0x59405e[_0x1dea('0x10')][_0x1dea('0x12')]);}logger[_0x1dea('0x10')](_0x1dea('0xd'),_0x50b25b,_0x59405e['error'][_0x1dea('0x12')]);return _0xf18a83(_0x59405e[_0x1dea('0x10')][_0x1dea('0x12')]);}else{logger[_0x1dea('0xc')](_0x1dea('0xd'),_0x50b25b,_0x1dea('0xe'));_0xf18a83(_0x59405e[_0x1dea('0x13')][_0x1dea('0x12')]);}})[_0x1dea('0x14')](function(_0x324ae1){logger[_0x1dea('0x10')](_0x1dea('0xd'),_0x50b25b,_0x324ae1);_0x11b8dc(_0x324ae1);});});}exports[_0x1dea('0x15')]=function(_0x3e78c0){var _0x13d585=this;return new Promise(function(_0x2da55b,_0x1804b2){return db[_0x1dea('0x16')][_0x1dea('0x17')]({'raw':_0x3e78c0['options']?_0x3e78c0[_0x1dea('0x18')][_0x1dea('0x19')]===undefined?!![]:![]:!![],'where':_0x3e78c0['options']?_0x3e78c0[_0x1dea('0x18')][_0x1dea('0x1a')]||null:null,'attributes':_0x3e78c0[_0x1dea('0x18')]?_0x3e78c0[_0x1dea('0x18')][_0x1dea('0x1b')]||null:null,'limit':_0x3e78c0[_0x1dea('0x18')]?_0x3e78c0['options'][_0x1dea('0x1c')]||null:null,'include':_0x3e78c0['options']?_0x3e78c0[_0x1dea('0x18')][_0x1dea('0x1d')]?_[_0x1dea('0x1e')](_0x3e78c0[_0x1dea('0x18')][_0x1dea('0x1d')],function(_0x104140){return{'model':db[_0x104140[_0x1dea('0x1f')]],'as':_0x104140['as'],'attributes':_0x104140[_0x1dea('0x1b')],'include':_0x104140[_0x1dea('0x1d')]?_[_0x1dea('0x1e')](_0x104140[_0x1dea('0x1d')],function(_0x1a9f6b){return{'model':db[_0x1a9f6b[_0x1dea('0x1f')]],'as':_0x1a9f6b['as'],'attributes':_0x1a9f6b['attributes'],'include':_0x1a9f6b[_0x1dea('0x1d')]?_[_0x1dea('0x1e')](_0x1a9f6b[_0x1dea('0x1d')],function(_0x3ef784){return{'model':db[_0x3ef784['model']],'as':_0x3ef784['as'],'attributes':_0x3ef784[_0x1dea('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4449a3){logger['info']('GetSugarcrmAccount',_0x3e78c0);logger[_0x1dea('0x20')]('GetSugarcrmAccount',_0x3e78c0,JSON[_0x1dea('0x21')](_0x4449a3));_0x2da55b(_0x4449a3);})[_0x1dea('0x14')](function(_0x53e882){logger[_0x1dea('0x10')](_0x1dea('0x15'),_0x53e882[_0x1dea('0x12')],_0x3e78c0);_0x1804b2(_0x13d585['error'](0x1f4,_0x53e882[_0x1dea('0x12')]));});});};exports['ShowSugarcrmAccount']=function(_0xec04){var _0x13b445=this;return new Promise(function(_0x3de277,_0x2196cb){return db[_0x1dea('0x16')][_0x1dea('0x22')]({'raw':_0xec04[_0x1dea('0x18')]?_0xec04[_0x1dea('0x18')][_0x1dea('0x19')]===undefined?!![]:![]:!![],'where':_0xec04[_0x1dea('0x18')]?_0xec04[_0x1dea('0x18')][_0x1dea('0x1a')]||null:null,'attributes':_0xec04[_0x1dea('0x18')]?_0xec04[_0x1dea('0x18')][_0x1dea('0x1b')]||null:null,'include':_0xec04['options']?_0xec04[_0x1dea('0x18')]['include']?_[_0x1dea('0x1e')](_0xec04['options']['include'],function(_0x54602d){return{'model':db[_0x54602d[_0x1dea('0x1f')]],'as':_0x54602d['as'],'attributes':_0x54602d[_0x1dea('0x1b')],'include':_0x54602d['include']?_['map'](_0x54602d[_0x1dea('0x1d')],function(_0x4e7b55){return{'model':db[_0x4e7b55[_0x1dea('0x1f')]],'as':_0x4e7b55['as'],'attributes':_0x4e7b55[_0x1dea('0x1b')],'include':_0x4e7b55[_0x1dea('0x1d')]?_[_0x1dea('0x1e')](_0x4e7b55[_0x1dea('0x1d')],function(_0x2fbed6){return{'model':db[_0x2fbed6[_0x1dea('0x1f')]],'as':_0x2fbed6['as'],'attributes':_0x2fbed6['attributes']};}):[]};}):[]};}):[]:[]})[_0x1dea('0xb')](function(_0x442320){logger['info'](_0x1dea('0x23'),_0xec04);logger[_0x1dea('0x20')](_0x1dea('0x23'),_0xec04,JSON['stringify'](_0x442320));_0x3de277(_0x442320);})['catch'](function(_0x319a5d){logger[_0x1dea('0x10')](_0x1dea('0x23'),_0x319a5d[_0x1dea('0x12')],_0xec04);_0x2196cb(_0x13b445[_0x1dea('0x10')](0x1f4,_0x319a5d[_0x1dea('0x12')]));});});};
\ No newline at end of file
index 5ae67ac..9ec4f3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x348c=['get','index','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x348c,0x138));var _0xc348=function(_0xdeadc2,_0x49d558){_0xdeadc2=_0xdeadc2-0x0;var _0x8543cf=_0x348c[_0xdeadc2];return _0x8543cf;};'use strict';var multer=require(_0xc348('0x0'));var util=require(_0xc348('0x1'));var path=require(_0xc348('0x2'));var timeout=require(_0xc348('0x3'));var express=require(_0xc348('0x4'));var router=express[_0xc348('0x5')]();var fs_extra=require(_0xc348('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xc348('0x7'));var config=require(_0xc348('0x8'));var controller=require(_0xc348('0x9'));router[_0xc348('0xa')]('/',auth['isAuthenticated'](),controller[_0xc348('0xb')]);router[_0xc348('0xa')](_0xc348('0xc'),auth[_0xc348('0xd')](),controller[_0xc348('0xe')]);router[_0xc348('0xa')](_0xc348('0xf'),auth[_0xc348('0xd')](),controller[_0xc348('0x10')]);router[_0xc348('0xa')](_0xc348('0x11'),auth[_0xc348('0xd')](),controller[_0xc348('0x12')]);router[_0xc348('0xa')]('/:id/descriptions',auth[_0xc348('0xd')](),controller['getDescriptions']);router['post']('/',auth[_0xc348('0xd')](),controller['create']);router[_0xc348('0x13')]('/:id',auth[_0xc348('0xd')](),controller[_0xc348('0x14')]);router[_0xc348('0x15')](_0xc348('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0xc348('0x16')]=router;
\ No newline at end of file
+var _0xff96=['../../config/environment','./intSugarcrmConfiguration.controller','get','index','/:id','isAuthenticated','show','/:id/subjects','getSubjects','post','create','put','update','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x37d0bc,_0x109b96){var _0x170e60=function(_0xae2ad){while(--_0xae2ad){_0x37d0bc['push'](_0x37d0bc['shift']());}};_0x170e60(++_0x109b96);}(_0xff96,0x1f2));var _0x6ff9=function(_0x5ea60d,_0xf1b6f3){_0x5ea60d=_0x5ea60d-0x0;var _0x1d14eb=_0xff96[_0x5ea60d];return _0x1d14eb;};'use strict';var multer=require(_0x6ff9('0x0'));var util=require(_0x6ff9('0x1'));var path=require(_0x6ff9('0x2'));var timeout=require(_0x6ff9('0x3'));var express=require(_0x6ff9('0x4'));var router=express['Router']();var fs_extra=require(_0x6ff9('0x5'));var auth=require(_0x6ff9('0x6'));var interaction=require(_0x6ff9('0x7'));var config=require(_0x6ff9('0x8'));var controller=require(_0x6ff9('0x9'));router[_0x6ff9('0xa')]('/',auth['isAuthenticated'](),controller[_0x6ff9('0xb')]);router[_0x6ff9('0xa')](_0x6ff9('0xc'),auth[_0x6ff9('0xd')](),controller[_0x6ff9('0xe')]);router[_0x6ff9('0xa')]('/:id/fields',auth[_0x6ff9('0xd')](),controller['getFields']);router[_0x6ff9('0xa')](_0x6ff9('0xf'),auth['isAuthenticated'](),controller[_0x6ff9('0x10')]);router['get']('/:id/descriptions',auth[_0x6ff9('0xd')](),controller['getDescriptions']);router[_0x6ff9('0x11')]('/',auth[_0x6ff9('0xd')](),controller[_0x6ff9('0x12')]);router[_0x6ff9('0x13')](_0x6ff9('0xc'),auth[_0x6ff9('0xd')](),controller[_0x6ff9('0x14')]);router[_0x6ff9('0x15')]('/:id',auth[_0x6ff9('0xd')](),controller['destroy']);module[_0x6ff9('0x16')]=router;
\ No newline at end of file
index a89ba42..63eaa9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x836a=['exports','STRING','sequelize'];(function(_0x2bd1f5,_0x8db4ec){var _0x43a4b3=function(_0x41cdf6){while(--_0x41cdf6){_0x2bd1f5['push'](_0x2bd1f5['shift']());}};_0x43a4b3(++_0x8db4ec);}(_0x836a,0x1c7));var _0xa836=function(_0x51f99e,_0x70684d){_0x51f99e=_0x51f99e-0x0;var _0x5b12cd=_0x836a[_0x51f99e];return _0x5b12cd;};'use strict';var Sequelize=require(_0xa836('0x0'));module[_0xa836('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xa836('0x2')]}};
\ No newline at end of file
+var _0xe1aa=['sequelize','exports','STRING'];(function(_0x3b085,_0x250543){var _0x476a57=function(_0x480941){while(--_0x480941){_0x3b085['push'](_0x3b085['shift']());}};_0x476a57(++_0x250543);}(_0xe1aa,0x81));var _0xae1a=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xe1aa[_0x19e35c];return _0x3e1fe8;};'use strict';var Sequelize=require(_0xae1a('0x0'));module[_0xae1a('0x1')]={'name':{'type':Sequelize[_0xae1a('0x2')]},'description':{'type':Sequelize[_0xae1a('0x2')]}};
\ No newline at end of file
index 081da67..26d0742 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x243b=['fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','nolimit','limit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','length','find','create','body','destroy','getFields','findOne','SugarcrmField','order','hasOwnProperty','getSubjects','getDescriptions','eml-format','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','count','set','Content-Range','apply','update','then','error','stack','name','index','map','SugarcrmConfiguration','rawAttributes'];(function(_0x3a66fa,_0x399904){var _0x388cf9=function(_0x39be41){while(--_0x39be41){_0x3a66fa['push'](_0x3a66fa['shift']());}};_0x388cf9(++_0x399904);}(_0x243b,0x1bf));var _0xb243=function(_0x101108,_0x26408c){_0x101108=_0x101108-0x0;var _0x1a9fb3=_0x243b[_0x101108];return _0x1a9fb3;};'use strict';var emlformat=require(_0xb243('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb243('0x1'));var jsonpatch=require(_0xb243('0x2'));var rp=require(_0xb243('0x3'));var moment=require(_0xb243('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xb243('0x5'));var path=require(_0xb243('0x6'));var sox=require(_0xb243('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb243('0x8'));var _=require(_0xb243('0x9'));var squel=require(_0xb243('0xa'));var crypto=require(_0xb243('0xb'));var jsforce=require(_0xb243('0xc'));var deskjs=require(_0xb243('0xd'));var toCsv=require(_0xb243('0xe'));var querystring=require('querystring');var Papa=require(_0xb243('0xf'));var Redis=require(_0xb243('0x10'));var authService=require(_0xb243('0x11'));var qs=require(_0xb243('0x12'));var as=require(_0xb243('0x13'));var hardwareService=require(_0xb243('0x14'));var logger=require(_0xb243('0x15'))(_0xb243('0x16'));var utils=require(_0xb243('0x17'));var config=require(_0xb243('0x18'));var licenseUtil=require(_0xb243('0x19'));var db=require(_0xb243('0x1a'))['db'];function respondWithStatusCode(_0x457fa6,_0x1ed0a2){_0x1ed0a2=_0x1ed0a2||0xcc;return function(_0x123b2e){if(_0x123b2e){return _0x457fa6[_0xb243('0x1b')](_0x1ed0a2);}return _0x457fa6[_0xb243('0x1c')](_0x1ed0a2)[_0xb243('0x1d')]();};}function respondWithResult(_0x16917a,_0x180ce6){_0x180ce6=_0x180ce6||0xc8;return function(_0x15714a){if(_0x15714a){return _0x16917a['status'](_0x180ce6)[_0xb243('0x1e')](_0x15714a);}};}function respondWithFilteredResult(_0x431aae,_0x507446){return function(_0x4e21d6){if(_0x4e21d6){var _0x2b4612=typeof _0x507446[_0xb243('0x1f')]==='undefined'&&typeof _0x507446['limit']==='undefined';var _0xb27b89=_0x4e21d6['count'];var _0x2e1642=_0x2b4612?0x0:_0x507446[_0xb243('0x1f')];var _0x22c534=_0x2b4612?_0x4e21d6[_0xb243('0x20')]:_0x507446[_0xb243('0x1f')]+_0x507446['limit'];var _0x4f36dc;if(_0x22c534>=_0xb27b89){_0x22c534=_0xb27b89;_0x4f36dc=0xc8;}else{_0x4f36dc=0xce;}_0x431aae[_0xb243('0x1c')](_0x4f36dc);return _0x431aae[_0xb243('0x21')](_0xb243('0x22'),_0x2e1642+'-'+_0x22c534+'/'+_0xb27b89)['json'](_0x4e21d6);}return null;};}function patchUpdates(_0x1cdeb0){return function(_0x47a354){try{jsonpatch[_0xb243('0x23')](_0x47a354,_0x1cdeb0,!![]);}catch(_0x89f31d){return BPromise['reject'](_0x89f31d);}return _0x47a354['save']();};}function saveUpdates(_0x55e95b,_0x3fb578){return function(_0x60029){if(_0x60029){return _0x60029[_0xb243('0x24')](_0x55e95b)[_0xb243('0x25')](function(_0x5e5d17){return _0x5e5d17;});}return null;};}function removeEntity(_0xb3320a,_0x4c350f){return function(_0x4facbb){if(_0x4facbb){return _0x4facbb['destroy']()[_0xb243('0x25')](function(){_0xb3320a[_0xb243('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x377b20,_0xe468){return function(_0x1afa15){if(!_0x1afa15){_0x377b20['sendStatus'](0x194);}return _0x1afa15;};}function handleError(_0x56ad4f,_0x4442a2){_0x4442a2=_0x4442a2||0x1f4;return function(_0xd6c260){logger[_0xb243('0x26')](_0xd6c260[_0xb243('0x27')]);if(_0xd6c260[_0xb243('0x28')]){delete _0xd6c260[_0xb243('0x28')];}_0x56ad4f[_0xb243('0x1c')](_0x4442a2)['send'](_0xd6c260);};}exports[_0xb243('0x29')]=function(_0x3394da,_0x454047){var _0xfa92c2={},_0x383ff6={},_0x19436e={'count':0x0,'rows':[]};var _0x5b5a66=_[_0xb243('0x2a')](db[_0xb243('0x2b')][_0xb243('0x2c')],function(_0x5e92bb){return{'name':_0x5e92bb[_0xb243('0x2d')],'type':_0x5e92bb[_0xb243('0x2e')][_0xb243('0x2f')]};});_0x383ff6[_0xb243('0x30')]=_[_0xb243('0x2a')](_0x5b5a66,_0xb243('0x28'));_0x383ff6[_0xb243('0x31')]=_[_0xb243('0x32')](_0x3394da[_0xb243('0x31')]);_0x383ff6[_0xb243('0x33')]=_['intersection'](_0x383ff6[_0xb243('0x30')],_0x383ff6[_0xb243('0x31')]);_0xfa92c2['attributes']=_[_0xb243('0x34')](_0x383ff6[_0xb243('0x30')],qs[_0xb243('0x35')](_0x3394da['query'][_0xb243('0x35')]));_0xfa92c2['attributes']=_0xfa92c2[_0xb243('0x36')]['length']?_0xfa92c2[_0xb243('0x36')]:_0x383ff6[_0xb243('0x30')];if(!_0x3394da[_0xb243('0x31')]['hasOwnProperty'](_0xb243('0x37'))){_0xfa92c2[_0xb243('0x38')]=qs[_0xb243('0x38')](_0x3394da[_0xb243('0x31')][_0xb243('0x38')]);_0xfa92c2[_0xb243('0x1f')]=qs['offset'](_0x3394da['query'][_0xb243('0x1f')]);}_0xfa92c2['order']=qs['sort'](_0x3394da[_0xb243('0x31')][_0xb243('0x39')]);_0xfa92c2[_0xb243('0x3a')]=qs[_0xb243('0x33')](_[_0xb243('0x3b')](_0x3394da[_0xb243('0x31')],_0x383ff6['filters']),_0x5b5a66);if(_0x3394da[_0xb243('0x31')][_0xb243('0x3c')]){_0xfa92c2['where']=_['merge'](_0xfa92c2[_0xb243('0x3a')],{'$or':_[_0xb243('0x2a')](_0x5b5a66,function(_0x6f9eb4){if(_0x6f9eb4[_0xb243('0x2e')]!==_0xb243('0x3d')){var _0x243ca7={};_0x243ca7[_0x6f9eb4[_0xb243('0x28')]]={'$like':'%'+_0x3394da['query']['filter']+'%'};return _0x243ca7;}})});}_0xfa92c2=_[_0xb243('0x3e')]({},_0xfa92c2,_0x3394da[_0xb243('0x3f')]);var _0x602c02={'where':_0xfa92c2[_0xb243('0x3a')]};return db[_0xb243('0x2b')][_0xb243('0x20')](_0x602c02)[_0xb243('0x25')](function(_0x117a9d){_0x19436e[_0xb243('0x20')]=_0x117a9d;if(_0x3394da['query'][_0xb243('0x40')]){_0xfa92c2[_0xb243('0x41')]=[{'all':!![]}];}return db[_0xb243('0x2b')]['findAll'](_0xfa92c2);})[_0xb243('0x25')](function(_0x1f946c){_0x19436e[_0xb243('0x42')]=_0x1f946c;return _0x19436e;})[_0xb243('0x25')](respondWithFilteredResult(_0x454047,_0xfa92c2))[_0xb243('0x43')](handleError(_0x454047,null));};exports[_0xb243('0x44')]=function(_0x683d2c,_0x1223c3){var _0x26432d={'raw':![],'where':{'id':_0x683d2c[_0xb243('0x45')]['id']}},_0x481688={};_0x481688['model']=_[_0xb243('0x32')](db[_0xb243('0x2b')][_0xb243('0x2c')]);_0x481688[_0xb243('0x31')]=_[_0xb243('0x32')](_0x683d2c[_0xb243('0x31')]);_0x481688['filters']=_['intersection'](_0x481688['model'],_0x481688[_0xb243('0x31')]);_0x26432d['attributes']=_[_0xb243('0x34')](_0x481688[_0xb243('0x30')],qs['fields'](_0x683d2c[_0xb243('0x31')][_0xb243('0x35')]));_0x26432d[_0xb243('0x36')]=_0x26432d[_0xb243('0x36')][_0xb243('0x46')]?_0x26432d[_0xb243('0x36')]:_0x481688['model'];if(_0x683d2c[_0xb243('0x31')][_0xb243('0x40')]){_0x26432d['include']=[{'all':!![]}];}_0x26432d=_[_0xb243('0x3e')]({},_0x26432d,_0x683d2c[_0xb243('0x3f')]);return db[_0xb243('0x2b')][_0xb243('0x47')](_0x26432d)[_0xb243('0x25')](handleEntityNotFound(_0x1223c3,null))[_0xb243('0x25')](respondWithResult(_0x1223c3,null))[_0xb243('0x43')](handleError(_0x1223c3,null));};exports['create']=function(_0x2ae454,_0x28eed4){return db[_0xb243('0x2b')][_0xb243('0x48')](_0x2ae454[_0xb243('0x49')],{})[_0xb243('0x25')](respondWithResult(_0x28eed4,0xc9))[_0xb243('0x43')](handleError(_0x28eed4,null));};exports[_0xb243('0x24')]=function(_0x5c1803,_0x54b06d){if(_0x5c1803[_0xb243('0x49')]['id']){delete _0x5c1803[_0xb243('0x49')]['id'];}return db['SugarcrmConfiguration'][_0xb243('0x47')]({'where':{'id':_0x5c1803[_0xb243('0x45')]['id']}})[_0xb243('0x25')](handleEntityNotFound(_0x54b06d,null))['then'](saveUpdates(_0x5c1803[_0xb243('0x49')],null))['then'](respondWithResult(_0x54b06d,null))[_0xb243('0x43')](handleError(_0x54b06d,null));};exports[_0xb243('0x4a')]=function(_0x30447f,_0x3d3a28){return db[_0xb243('0x2b')][_0xb243('0x47')]({'where':{'id':_0x30447f[_0xb243('0x45')]['id']}})[_0xb243('0x25')](handleEntityNotFound(_0x3d3a28,null))['then'](removeEntity(_0x3d3a28,null))[_0xb243('0x43')](handleError(_0x3d3a28,null));};exports[_0xb243('0x4b')]=function(_0x555bc7,_0xc6f57f,_0x6f9741){var _0x19cad5={};var _0x19b7f9={};var _0x7b4933;var _0x461f50;return db['SugarcrmConfiguration'][_0xb243('0x4c')]({'where':{'id':_0x555bc7[_0xb243('0x45')]['id']}})[_0xb243('0x25')](handleEntityNotFound(_0xc6f57f,null))['then'](function(_0x580947){if(_0x580947){_0x7b4933=_0x580947;_0x19b7f9[_0xb243('0x30')]=_[_0xb243('0x32')](db[_0xb243('0x4d')][_0xb243('0x2c')]);_0x19b7f9[_0xb243('0x31')]=_[_0xb243('0x32')](_0x555bc7[_0xb243('0x31')]);_0x19b7f9['filters']=_[_0xb243('0x34')](_0x19b7f9['model'],_0x19b7f9[_0xb243('0x31')]);_0x19cad5[_0xb243('0x36')]=_[_0xb243('0x34')](_0x19b7f9[_0xb243('0x30')],qs[_0xb243('0x35')](_0x555bc7[_0xb243('0x31')][_0xb243('0x35')]));_0x19cad5[_0xb243('0x36')]=_0x19cad5[_0xb243('0x36')][_0xb243('0x46')]?_0x19cad5[_0xb243('0x36')]:_0x19b7f9[_0xb243('0x30')];_0x19cad5[_0xb243('0x4e')]=qs[_0xb243('0x39')](_0x555bc7[_0xb243('0x31')][_0xb243('0x39')]);_0x19cad5[_0xb243('0x3a')]=qs[_0xb243('0x33')](_[_0xb243('0x3b')](_0x555bc7[_0xb243('0x31')],_0x19b7f9['filters']));if(_0x555bc7[_0xb243('0x31')][_0xb243('0x3c')]){_0x19cad5[_0xb243('0x3a')]=_[_0xb243('0x3e')](_0x19cad5[_0xb243('0x3a')],{'$or':_[_0xb243('0x2a')](_0x19cad5[_0xb243('0x36')],function(_0x264f72){var _0x5188d5={};_0x5188d5[_0x264f72]={'$like':'%'+_0x555bc7[_0xb243('0x31')]['filter']+'%'};return _0x5188d5;})});}_0x19cad5=_[_0xb243('0x3e')]({},_0x19cad5,_0x555bc7[_0xb243('0x3f')]);return _0x7b4933[_0xb243('0x4b')](_0x19cad5);}})['then'](function(_0x226c6b){if(_0x226c6b){_0x461f50=_0x226c6b[_0xb243('0x46')];if(!_0x555bc7[_0xb243('0x31')][_0xb243('0x4f')]('nolimit')){_0x19cad5['limit']=qs[_0xb243('0x38')](_0x555bc7[_0xb243('0x31')][_0xb243('0x38')]);_0x19cad5[_0xb243('0x1f')]=qs[_0xb243('0x1f')](_0x555bc7[_0xb243('0x31')][_0xb243('0x1f')]);}return _0x7b4933['getFields'](_0x19cad5);}})['then'](function(_0x672c37){if(_0x672c37){return _0x672c37?{'count':_0x461f50,'rows':_0x672c37}:null;}})['then'](respondWithResult(_0xc6f57f,null))[_0xb243('0x43')](handleError(_0xc6f57f,null));};exports['getSubjects']=function(_0x3f795b,_0x58183d,_0x153d9a){var _0x1f592d={};var _0x3d0fc7={};var _0x5b8388;var _0x5406b0;return db['SugarcrmConfiguration'][_0xb243('0x4c')]({'where':{'id':_0x3f795b[_0xb243('0x45')]['id']}})[_0xb243('0x25')](handleEntityNotFound(_0x58183d,null))[_0xb243('0x25')](function(_0x1b6b1d){if(_0x1b6b1d){_0x5b8388=_0x1b6b1d;_0x3d0fc7['model']=_[_0xb243('0x32')](db['SugarcrmField'][_0xb243('0x2c')]);_0x3d0fc7[_0xb243('0x31')]=_[_0xb243('0x32')](_0x3f795b[_0xb243('0x31')]);_0x3d0fc7['filters']=_[_0xb243('0x34')](_0x3d0fc7['model'],_0x3d0fc7[_0xb243('0x31')]);_0x1f592d[_0xb243('0x36')]=_[_0xb243('0x34')](_0x3d0fc7['model'],qs['fields'](_0x3f795b[_0xb243('0x31')][_0xb243('0x35')]));_0x1f592d[_0xb243('0x36')]=_0x1f592d['attributes']['length']?_0x1f592d[_0xb243('0x36')]:_0x3d0fc7['model'];_0x1f592d[_0xb243('0x4e')]=qs[_0xb243('0x39')](_0x3f795b[_0xb243('0x31')][_0xb243('0x39')]);_0x1f592d[_0xb243('0x3a')]=qs[_0xb243('0x33')](_[_0xb243('0x3b')](_0x3f795b[_0xb243('0x31')],_0x3d0fc7[_0xb243('0x33')]));if(_0x3f795b['query']['filter']){_0x1f592d[_0xb243('0x3a')]=_[_0xb243('0x3e')](_0x1f592d[_0xb243('0x3a')],{'$or':_['map'](_0x1f592d['attributes'],function(_0x39b671){var _0xa22ac={};_0xa22ac[_0x39b671]={'$like':'%'+_0x3f795b[_0xb243('0x31')]['filter']+'%'};return _0xa22ac;})});}_0x1f592d=_[_0xb243('0x3e')]({},_0x1f592d,_0x3f795b['options']);return _0x5b8388['getSubjects'](_0x1f592d);}})['then'](function(_0x331fb3){if(_0x331fb3){_0x5406b0=_0x331fb3[_0xb243('0x46')];if(!_0x3f795b[_0xb243('0x31')][_0xb243('0x4f')](_0xb243('0x37'))){_0x1f592d[_0xb243('0x38')]=qs[_0xb243('0x38')](_0x3f795b[_0xb243('0x31')][_0xb243('0x38')]);_0x1f592d[_0xb243('0x1f')]=qs[_0xb243('0x1f')](_0x3f795b[_0xb243('0x31')]['offset']);}return _0x5b8388[_0xb243('0x50')](_0x1f592d);}})[_0xb243('0x25')](function(_0x514db6){if(_0x514db6){return _0x514db6?{'count':_0x5406b0,'rows':_0x514db6}:null;}})[_0xb243('0x25')](respondWithResult(_0x58183d,null))[_0xb243('0x43')](handleError(_0x58183d,null));};exports[_0xb243('0x51')]=function(_0x558c84,_0x58777f,_0x193bef){var _0x1c3550={};var _0xea2189={};var _0x261a6a;var _0x51726b;return db[_0xb243('0x2b')][_0xb243('0x4c')]({'where':{'id':_0x558c84[_0xb243('0x45')]['id']}})['then'](handleEntityNotFound(_0x58777f,null))[_0xb243('0x25')](function(_0x23aa7f){if(_0x23aa7f){_0x261a6a=_0x23aa7f;_0xea2189['model']=_[_0xb243('0x32')](db[_0xb243('0x4d')][_0xb243('0x2c')]);_0xea2189[_0xb243('0x31')]=_[_0xb243('0x32')](_0x558c84['query']);_0xea2189[_0xb243('0x33')]=_[_0xb243('0x34')](_0xea2189[_0xb243('0x30')],_0xea2189[_0xb243('0x31')]);_0x1c3550[_0xb243('0x36')]=_[_0xb243('0x34')](_0xea2189[_0xb243('0x30')],qs['fields'](_0x558c84['query'][_0xb243('0x35')]));_0x1c3550['attributes']=_0x1c3550[_0xb243('0x36')]['length']?_0x1c3550['attributes']:_0xea2189[_0xb243('0x30')];_0x1c3550['order']=qs[_0xb243('0x39')](_0x558c84[_0xb243('0x31')]['sort']);_0x1c3550[_0xb243('0x3a')]=qs[_0xb243('0x33')](_[_0xb243('0x3b')](_0x558c84['query'],_0xea2189[_0xb243('0x33')]));if(_0x558c84[_0xb243('0x31')]['filter']){_0x1c3550[_0xb243('0x3a')]=_[_0xb243('0x3e')](_0x1c3550[_0xb243('0x3a')],{'$or':_[_0xb243('0x2a')](_0x1c3550['attributes'],function(_0x1f8b96){var _0x46b104={};_0x46b104[_0x1f8b96]={'$like':'%'+_0x558c84[_0xb243('0x31')][_0xb243('0x3c')]+'%'};return _0x46b104;})});}_0x1c3550=_['merge']({},_0x1c3550,_0x558c84['options']);return _0x261a6a[_0xb243('0x51')](_0x1c3550);}})['then'](function(_0x10229b){if(_0x10229b){_0x51726b=_0x10229b[_0xb243('0x46')];if(!_0x558c84[_0xb243('0x31')]['hasOwnProperty'](_0xb243('0x37'))){_0x1c3550[_0xb243('0x38')]=qs[_0xb243('0x38')](_0x558c84['query'][_0xb243('0x38')]);_0x1c3550['offset']=qs['offset'](_0x558c84[_0xb243('0x31')][_0xb243('0x1f')]);}return _0x261a6a[_0xb243('0x51')](_0x1c3550);}})[_0xb243('0x25')](function(_0x13f2f9){if(_0x13f2f9){return _0x13f2f9?{'count':_0x51726b,'rows':_0x13f2f9}:null;}})[_0xb243('0x25')](respondWithResult(_0x58777f,null))[_0xb243('0x43')](handleError(_0x58777f,null));};
\ No newline at end of file
+var _0xdbd1=['sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/environment','../../mysqldb','sendStatus','end','status','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','VIRTUAL','options','includeAll','include','SugarcrmConfiguration','findAll','rows','catch','show','params','merge','find','create','body','destroy','getFields','findOne','SugarcrmField','order','getSubjects','getDescriptions','eml-format','rimraf','moment','bluebird','mustache','util','path'];(function(_0x2f7e42,_0x4aa0cf){var _0x1ac0d3=function(_0x473a5c){while(--_0x473a5c){_0x2f7e42['push'](_0x2f7e42['shift']());}};_0x1ac0d3(++_0x4aa0cf);}(_0xdbd1,0x145));var _0x1dbd=function(_0x1b3012,_0x4d340a){_0x1b3012=_0x1b3012-0x0;var _0x32336b=_0xdbd1[_0x1b3012];return _0x32336b;};'use strict';var emlformat=require(_0x1dbd('0x0'));var rimraf=require(_0x1dbd('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x1dbd('0x2'));var BPromise=require(_0x1dbd('0x3'));var Mustache=require(_0x1dbd('0x4'));var util=require(_0x1dbd('0x5'));var path=require(_0x1dbd('0x6'));var sox=require(_0x1dbd('0x7'));var csv=require(_0x1dbd('0x8'));var ejs=require(_0x1dbd('0x9'));var fs=require('fs');var fs_extra=require(_0x1dbd('0xa'));var _=require(_0x1dbd('0xb'));var squel=require(_0x1dbd('0xc'));var crypto=require(_0x1dbd('0xd'));var jsforce=require(_0x1dbd('0xe'));var deskjs=require(_0x1dbd('0xf'));var toCsv=require(_0x1dbd('0x8'));var querystring=require(_0x1dbd('0x10'));var Papa=require('papaparse');var Redis=require(_0x1dbd('0x11'));var authService=require(_0x1dbd('0x12'));var qs=require(_0x1dbd('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1dbd('0x14'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x1dbd('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x1dbd('0x16'))['db'];function respondWithStatusCode(_0x25ec7b,_0x33f89d){_0x33f89d=_0x33f89d||0xcc;return function(_0x4a41e5){if(_0x4a41e5){return _0x25ec7b[_0x1dbd('0x17')](_0x33f89d);}return _0x25ec7b['status'](_0x33f89d)[_0x1dbd('0x18')]();};}function respondWithResult(_0x1d4bfc,_0x1ca2bc){_0x1ca2bc=_0x1ca2bc||0xc8;return function(_0x35473a){if(_0x35473a){return _0x1d4bfc[_0x1dbd('0x19')](_0x1ca2bc)['json'](_0x35473a);}};}function respondWithFilteredResult(_0x5073b0,_0x13080c){return function(_0x3113a4){if(_0x3113a4){var _0x5a5241=typeof _0x13080c[_0x1dbd('0x1a')]==='undefined'&&typeof _0x13080c[_0x1dbd('0x1b')]===_0x1dbd('0x1c');var _0xce7fb=_0x3113a4[_0x1dbd('0x1d')];var _0x170a08=_0x5a5241?0x0:_0x13080c[_0x1dbd('0x1a')];var _0x1daf66=_0x5a5241?_0x3113a4[_0x1dbd('0x1d')]:_0x13080c[_0x1dbd('0x1a')]+_0x13080c[_0x1dbd('0x1b')];var _0x21a893;if(_0x1daf66>=_0xce7fb){_0x1daf66=_0xce7fb;_0x21a893=0xc8;}else{_0x21a893=0xce;}_0x5073b0[_0x1dbd('0x19')](_0x21a893);return _0x5073b0[_0x1dbd('0x1e')](_0x1dbd('0x1f'),_0x170a08+'-'+_0x1daf66+'/'+_0xce7fb)[_0x1dbd('0x20')](_0x3113a4);}return null;};}function patchUpdates(_0x3c8152){return function(_0x4b6fe6){try{jsonpatch[_0x1dbd('0x21')](_0x4b6fe6,_0x3c8152,!![]);}catch(_0x4884a0){return BPromise[_0x1dbd('0x22')](_0x4884a0);}return _0x4b6fe6[_0x1dbd('0x23')]();};}function saveUpdates(_0x33e061,_0x173d01){return function(_0x17b110){if(_0x17b110){return _0x17b110[_0x1dbd('0x24')](_0x33e061)[_0x1dbd('0x25')](function(_0x3dd918){return _0x3dd918;});}return null;};}function removeEntity(_0x194651,_0x13bcea){return function(_0x28a9cd){if(_0x28a9cd){return _0x28a9cd['destroy']()['then'](function(){_0x194651[_0x1dbd('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xed748e,_0x5da4b4){return function(_0xf4d4bd){if(!_0xf4d4bd){_0xed748e[_0x1dbd('0x17')](0x194);}return _0xf4d4bd;};}function handleError(_0x685bc9,_0x590221){_0x590221=_0x590221||0x1f4;return function(_0x3c7c6d){logger[_0x1dbd('0x26')](_0x3c7c6d[_0x1dbd('0x27')]);if(_0x3c7c6d['name']){delete _0x3c7c6d[_0x1dbd('0x28')];}_0x685bc9[_0x1dbd('0x19')](_0x590221)[_0x1dbd('0x29')](_0x3c7c6d);};}exports[_0x1dbd('0x2a')]=function(_0x13ade7,_0x51073d){var _0x42de0={},_0x48721d={},_0x2aa6f1={'count':0x0,'rows':[]};var _0x42431e=_[_0x1dbd('0x2b')](db['SugarcrmConfiguration'][_0x1dbd('0x2c')],function(_0x22b16b){return{'name':_0x22b16b[_0x1dbd('0x2d')],'type':_0x22b16b[_0x1dbd('0x2e')][_0x1dbd('0x2f')]};});_0x48721d[_0x1dbd('0x30')]=_[_0x1dbd('0x2b')](_0x42431e,_0x1dbd('0x28'));_0x48721d[_0x1dbd('0x31')]=_[_0x1dbd('0x32')](_0x13ade7[_0x1dbd('0x31')]);_0x48721d[_0x1dbd('0x33')]=_['intersection'](_0x48721d[_0x1dbd('0x30')],_0x48721d[_0x1dbd('0x31')]);_0x42de0[_0x1dbd('0x34')]=_[_0x1dbd('0x35')](_0x48721d[_0x1dbd('0x30')],qs[_0x1dbd('0x36')](_0x13ade7[_0x1dbd('0x31')][_0x1dbd('0x36')]));_0x42de0[_0x1dbd('0x34')]=_0x42de0[_0x1dbd('0x34')][_0x1dbd('0x37')]?_0x42de0[_0x1dbd('0x34')]:_0x48721d[_0x1dbd('0x30')];if(!_0x13ade7[_0x1dbd('0x31')][_0x1dbd('0x38')](_0x1dbd('0x39'))){_0x42de0[_0x1dbd('0x1b')]=qs[_0x1dbd('0x1b')](_0x13ade7[_0x1dbd('0x31')]['limit']);_0x42de0['offset']=qs['offset'](_0x13ade7[_0x1dbd('0x31')][_0x1dbd('0x1a')]);}_0x42de0['order']=qs[_0x1dbd('0x3a')](_0x13ade7[_0x1dbd('0x31')][_0x1dbd('0x3a')]);_0x42de0['where']=qs[_0x1dbd('0x33')](_[_0x1dbd('0x3b')](_0x13ade7[_0x1dbd('0x31')],_0x48721d[_0x1dbd('0x33')]),_0x42431e);if(_0x13ade7[_0x1dbd('0x31')][_0x1dbd('0x3c')]){_0x42de0[_0x1dbd('0x3d')]=_['merge'](_0x42de0[_0x1dbd('0x3d')],{'$or':_[_0x1dbd('0x2b')](_0x42431e,function(_0x4afe36){if(_0x4afe36['type']!==_0x1dbd('0x3e')){var _0x5c0440={};_0x5c0440[_0x4afe36['name']]={'$like':'%'+_0x13ade7[_0x1dbd('0x31')][_0x1dbd('0x3c')]+'%'};return _0x5c0440;}})});}_0x42de0=_['merge']({},_0x42de0,_0x13ade7[_0x1dbd('0x3f')]);var _0x300955={'where':_0x42de0['where']};return db['SugarcrmConfiguration'][_0x1dbd('0x1d')](_0x300955)[_0x1dbd('0x25')](function(_0x26d0fa){_0x2aa6f1[_0x1dbd('0x1d')]=_0x26d0fa;if(_0x13ade7[_0x1dbd('0x31')][_0x1dbd('0x40')]){_0x42de0[_0x1dbd('0x41')]=[{'all':!![]}];}return db[_0x1dbd('0x42')][_0x1dbd('0x43')](_0x42de0);})[_0x1dbd('0x25')](function(_0x5afe57){_0x2aa6f1[_0x1dbd('0x44')]=_0x5afe57;return _0x2aa6f1;})['then'](respondWithFilteredResult(_0x51073d,_0x42de0))[_0x1dbd('0x45')](handleError(_0x51073d,null));};exports[_0x1dbd('0x46')]=function(_0x13e3d0,_0x12c5a7){var _0x225402={'raw':![],'where':{'id':_0x13e3d0[_0x1dbd('0x47')]['id']}},_0x225a7a={};_0x225a7a['model']=_[_0x1dbd('0x32')](db[_0x1dbd('0x42')][_0x1dbd('0x2c')]);_0x225a7a[_0x1dbd('0x31')]=_['keys'](_0x13e3d0[_0x1dbd('0x31')]);_0x225a7a['filters']=_[_0x1dbd('0x35')](_0x225a7a[_0x1dbd('0x30')],_0x225a7a[_0x1dbd('0x31')]);_0x225402['attributes']=_['intersection'](_0x225a7a[_0x1dbd('0x30')],qs[_0x1dbd('0x36')](_0x13e3d0['query'][_0x1dbd('0x36')]));_0x225402[_0x1dbd('0x34')]=_0x225402['attributes'][_0x1dbd('0x37')]?_0x225402[_0x1dbd('0x34')]:_0x225a7a[_0x1dbd('0x30')];if(_0x13e3d0['query'][_0x1dbd('0x40')]){_0x225402[_0x1dbd('0x41')]=[{'all':!![]}];}_0x225402=_[_0x1dbd('0x48')]({},_0x225402,_0x13e3d0[_0x1dbd('0x3f')]);return db[_0x1dbd('0x42')][_0x1dbd('0x49')](_0x225402)[_0x1dbd('0x25')](handleEntityNotFound(_0x12c5a7,null))['then'](respondWithResult(_0x12c5a7,null))[_0x1dbd('0x45')](handleError(_0x12c5a7,null));};exports[_0x1dbd('0x4a')]=function(_0x5163a4,_0x58991b){return db[_0x1dbd('0x42')]['create'](_0x5163a4[_0x1dbd('0x4b')],{})[_0x1dbd('0x25')](respondWithResult(_0x58991b,0xc9))['catch'](handleError(_0x58991b,null));};exports[_0x1dbd('0x24')]=function(_0x440107,_0x531f65){if(_0x440107[_0x1dbd('0x4b')]['id']){delete _0x440107[_0x1dbd('0x4b')]['id'];}return db['SugarcrmConfiguration'][_0x1dbd('0x49')]({'where':{'id':_0x440107['params']['id']}})[_0x1dbd('0x25')](handleEntityNotFound(_0x531f65,null))[_0x1dbd('0x25')](saveUpdates(_0x440107[_0x1dbd('0x4b')],null))['then'](respondWithResult(_0x531f65,null))['catch'](handleError(_0x531f65,null));};exports[_0x1dbd('0x4c')]=function(_0x5817bd,_0x2a731d){return db[_0x1dbd('0x42')][_0x1dbd('0x49')]({'where':{'id':_0x5817bd['params']['id']}})[_0x1dbd('0x25')](handleEntityNotFound(_0x2a731d,null))[_0x1dbd('0x25')](removeEntity(_0x2a731d,null))[_0x1dbd('0x45')](handleError(_0x2a731d,null));};exports[_0x1dbd('0x4d')]=function(_0x49017d,_0x39181b,_0x1ee974){var _0x426bf2={};var _0x3eb601={};var _0x2813dc;var _0x54a568;return db['SugarcrmConfiguration'][_0x1dbd('0x4e')]({'where':{'id':_0x49017d[_0x1dbd('0x47')]['id']}})[_0x1dbd('0x25')](handleEntityNotFound(_0x39181b,null))[_0x1dbd('0x25')](function(_0x103670){if(_0x103670){_0x2813dc=_0x103670;_0x3eb601[_0x1dbd('0x30')]=_[_0x1dbd('0x32')](db[_0x1dbd('0x4f')][_0x1dbd('0x2c')]);_0x3eb601['query']=_[_0x1dbd('0x32')](_0x49017d[_0x1dbd('0x31')]);_0x3eb601[_0x1dbd('0x33')]=_[_0x1dbd('0x35')](_0x3eb601[_0x1dbd('0x30')],_0x3eb601['query']);_0x426bf2[_0x1dbd('0x34')]=_['intersection'](_0x3eb601[_0x1dbd('0x30')],qs['fields'](_0x49017d[_0x1dbd('0x31')][_0x1dbd('0x36')]));_0x426bf2[_0x1dbd('0x34')]=_0x426bf2['attributes']['length']?_0x426bf2[_0x1dbd('0x34')]:_0x3eb601[_0x1dbd('0x30')];_0x426bf2[_0x1dbd('0x50')]=qs[_0x1dbd('0x3a')](_0x49017d[_0x1dbd('0x31')][_0x1dbd('0x3a')]);_0x426bf2['where']=qs['filters'](_[_0x1dbd('0x3b')](_0x49017d['query'],_0x3eb601['filters']));if(_0x49017d['query'][_0x1dbd('0x3c')]){_0x426bf2[_0x1dbd('0x3d')]=_['merge'](_0x426bf2['where'],{'$or':_[_0x1dbd('0x2b')](_0x426bf2[_0x1dbd('0x34')],function(_0x46e0e2){var _0x50ebe5={};_0x50ebe5[_0x46e0e2]={'$like':'%'+_0x49017d['query'][_0x1dbd('0x3c')]+'%'};return _0x50ebe5;})});}_0x426bf2=_[_0x1dbd('0x48')]({},_0x426bf2,_0x49017d['options']);return _0x2813dc['getFields'](_0x426bf2);}})[_0x1dbd('0x25')](function(_0x3d24ab){if(_0x3d24ab){_0x54a568=_0x3d24ab[_0x1dbd('0x37')];if(!_0x49017d[_0x1dbd('0x31')]['hasOwnProperty'](_0x1dbd('0x39'))){_0x426bf2[_0x1dbd('0x1b')]=qs[_0x1dbd('0x1b')](_0x49017d[_0x1dbd('0x31')]['limit']);_0x426bf2[_0x1dbd('0x1a')]=qs[_0x1dbd('0x1a')](_0x49017d[_0x1dbd('0x31')]['offset']);}return _0x2813dc[_0x1dbd('0x4d')](_0x426bf2);}})['then'](function(_0x2cf800){if(_0x2cf800){return _0x2cf800?{'count':_0x54a568,'rows':_0x2cf800}:null;}})[_0x1dbd('0x25')](respondWithResult(_0x39181b,null))[_0x1dbd('0x45')](handleError(_0x39181b,null));};exports['getSubjects']=function(_0x3b9d26,_0x5bb1ff,_0x4188eb){var _0x54e427={};var _0x1e324b={};var _0x55767e;var _0x4a3ef6;return db['SugarcrmConfiguration'][_0x1dbd('0x4e')]({'where':{'id':_0x3b9d26['params']['id']}})[_0x1dbd('0x25')](handleEntityNotFound(_0x5bb1ff,null))[_0x1dbd('0x25')](function(_0x1ed13c){if(_0x1ed13c){_0x55767e=_0x1ed13c;_0x1e324b[_0x1dbd('0x30')]=_['keys'](db[_0x1dbd('0x4f')][_0x1dbd('0x2c')]);_0x1e324b['query']=_[_0x1dbd('0x32')](_0x3b9d26[_0x1dbd('0x31')]);_0x1e324b['filters']=_[_0x1dbd('0x35')](_0x1e324b[_0x1dbd('0x30')],_0x1e324b[_0x1dbd('0x31')]);_0x54e427[_0x1dbd('0x34')]=_[_0x1dbd('0x35')](_0x1e324b[_0x1dbd('0x30')],qs[_0x1dbd('0x36')](_0x3b9d26[_0x1dbd('0x31')][_0x1dbd('0x36')]));_0x54e427['attributes']=_0x54e427['attributes'][_0x1dbd('0x37')]?_0x54e427[_0x1dbd('0x34')]:_0x1e324b[_0x1dbd('0x30')];_0x54e427['order']=qs['sort'](_0x3b9d26['query']['sort']);_0x54e427['where']=qs['filters'](_[_0x1dbd('0x3b')](_0x3b9d26['query'],_0x1e324b[_0x1dbd('0x33')]));if(_0x3b9d26[_0x1dbd('0x31')][_0x1dbd('0x3c')]){_0x54e427[_0x1dbd('0x3d')]=_[_0x1dbd('0x48')](_0x54e427['where'],{'$or':_[_0x1dbd('0x2b')](_0x54e427[_0x1dbd('0x34')],function(_0x51a36d){var _0x2825b6={};_0x2825b6[_0x51a36d]={'$like':'%'+_0x3b9d26[_0x1dbd('0x31')][_0x1dbd('0x3c')]+'%'};return _0x2825b6;})});}_0x54e427=_[_0x1dbd('0x48')]({},_0x54e427,_0x3b9d26[_0x1dbd('0x3f')]);return _0x55767e[_0x1dbd('0x51')](_0x54e427);}})[_0x1dbd('0x25')](function(_0x25d580){if(_0x25d580){_0x4a3ef6=_0x25d580[_0x1dbd('0x37')];if(!_0x3b9d26[_0x1dbd('0x31')][_0x1dbd('0x38')](_0x1dbd('0x39'))){_0x54e427['limit']=qs[_0x1dbd('0x1b')](_0x3b9d26[_0x1dbd('0x31')][_0x1dbd('0x1b')]);_0x54e427[_0x1dbd('0x1a')]=qs[_0x1dbd('0x1a')](_0x3b9d26['query'][_0x1dbd('0x1a')]);}return _0x55767e['getSubjects'](_0x54e427);}})[_0x1dbd('0x25')](function(_0x598662){if(_0x598662){return _0x598662?{'count':_0x4a3ef6,'rows':_0x598662}:null;}})[_0x1dbd('0x25')](respondWithResult(_0x5bb1ff,null))[_0x1dbd('0x45')](handleError(_0x5bb1ff,null));};exports[_0x1dbd('0x52')]=function(_0x1f08da,_0x42bb89,_0x4363e9){var _0x4e913d={};var _0x41edb6={};var _0x461a94;var _0x3f00fb;return db[_0x1dbd('0x42')][_0x1dbd('0x4e')]({'where':{'id':_0x1f08da[_0x1dbd('0x47')]['id']}})[_0x1dbd('0x25')](handleEntityNotFound(_0x42bb89,null))[_0x1dbd('0x25')](function(_0x30427b){if(_0x30427b){_0x461a94=_0x30427b;_0x41edb6[_0x1dbd('0x30')]=_[_0x1dbd('0x32')](db[_0x1dbd('0x4f')][_0x1dbd('0x2c')]);_0x41edb6['query']=_[_0x1dbd('0x32')](_0x1f08da[_0x1dbd('0x31')]);_0x41edb6['filters']=_[_0x1dbd('0x35')](_0x41edb6[_0x1dbd('0x30')],_0x41edb6[_0x1dbd('0x31')]);_0x4e913d[_0x1dbd('0x34')]=_[_0x1dbd('0x35')](_0x41edb6[_0x1dbd('0x30')],qs[_0x1dbd('0x36')](_0x1f08da[_0x1dbd('0x31')][_0x1dbd('0x36')]));_0x4e913d[_0x1dbd('0x34')]=_0x4e913d[_0x1dbd('0x34')][_0x1dbd('0x37')]?_0x4e913d[_0x1dbd('0x34')]:_0x41edb6[_0x1dbd('0x30')];_0x4e913d[_0x1dbd('0x50')]=qs['sort'](_0x1f08da[_0x1dbd('0x31')]['sort']);_0x4e913d[_0x1dbd('0x3d')]=qs[_0x1dbd('0x33')](_[_0x1dbd('0x3b')](_0x1f08da['query'],_0x41edb6[_0x1dbd('0x33')]));if(_0x1f08da[_0x1dbd('0x31')][_0x1dbd('0x3c')]){_0x4e913d[_0x1dbd('0x3d')]=_['merge'](_0x4e913d['where'],{'$or':_[_0x1dbd('0x2b')](_0x4e913d[_0x1dbd('0x34')],function(_0x40ab4d){var _0x5629be={};_0x5629be[_0x40ab4d]={'$like':'%'+_0x1f08da[_0x1dbd('0x31')]['filter']+'%'};return _0x5629be;})});}_0x4e913d=_[_0x1dbd('0x48')]({},_0x4e913d,_0x1f08da[_0x1dbd('0x3f')]);return _0x461a94[_0x1dbd('0x52')](_0x4e913d);}})[_0x1dbd('0x25')](function(_0x438987){if(_0x438987){_0x3f00fb=_0x438987['length'];if(!_0x1f08da[_0x1dbd('0x31')][_0x1dbd('0x38')]('nolimit')){_0x4e913d[_0x1dbd('0x1b')]=qs[_0x1dbd('0x1b')](_0x1f08da['query']['limit']);_0x4e913d[_0x1dbd('0x1a')]=qs['offset'](_0x1f08da[_0x1dbd('0x31')][_0x1dbd('0x1a')]);}return _0x461a94[_0x1dbd('0x52')](_0x4e913d);}})[_0x1dbd('0x25')](function(_0x448927){if(_0x448927){return _0x448927?{'count':_0x3f00fb,'rows':_0x448927}:null;}})[_0x1dbd('0x25')](respondWithResult(_0x42bb89,null))[_0x1dbd('0x45')](handleError(_0x42bb89,null));};
\ No newline at end of file
index a0a3554..a73b9bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf3a=['define','SugarcrmConfiguration','lodash','moment','bluebird','request-promise','path','rimraf','./intSugarcrmConfiguration.attributes','exports'];(function(_0x3e618d,_0x22efd9){var _0x342551=function(_0x4e5d6a){while(--_0x4e5d6a){_0x3e618d['push'](_0x3e618d['shift']());}};_0x342551(++_0x22efd9);}(_0xcf3a,0x12e));var _0xacf3=function(_0xb340d,_0x3d7abe){_0xb340d=_0xb340d-0x0;var _0x4ab184=_0xcf3a[_0xb340d];return _0x4ab184;};'use strict';var _=require(_0xacf3('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xacf3('0x1'));var BPromise=require(_0xacf3('0x2'));var rp=require(_0xacf3('0x3'));var fs=require('fs');var path=require(_0xacf3('0x4'));var rimraf=require(_0xacf3('0x5'));var config=require('../../config/environment');var attributes=require(_0xacf3('0x6'));module[_0xacf3('0x7')]=function(_0x337c4e,_0x5b6b3){return _0x337c4e[_0xacf3('0x8')](_0xacf3('0x9'),attributes,{'tableName':'int_sugarcrm_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x39e4=['util','../../config/logger','moment','request-promise','rimraf','../../config/environment','./intSugarcrmConfiguration.attributes','exports','SugarcrmConfiguration','int_sugarcrm_configurations','lodash'];(function(_0xa148b7,_0x2f3eb2){var _0x51efd3=function(_0x34bcec){while(--_0x34bcec){_0xa148b7['push'](_0xa148b7['shift']());}};_0x51efd3(++_0x2f3eb2);}(_0x39e4,0x154));var _0x439e=function(_0x4fbbb7,_0x51ae8f){_0x4fbbb7=_0x4fbbb7-0x0;var _0x3fae1b=_0x39e4[_0x4fbbb7];return _0x3fae1b;};'use strict';var _=require(_0x439e('0x0'));var util=require(_0x439e('0x1'));var logger=require(_0x439e('0x2'))('api');var moment=require(_0x439e('0x3'));var BPromise=require('bluebird');var rp=require(_0x439e('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x439e('0x5'));var config=require(_0x439e('0x6'));var attributes=require(_0x439e('0x7'));module[_0x439e('0x8')]=function(_0x1eb18f,_0x5223ff){return _0x1eb18f['define'](_0x439e('0x9'),attributes,{'tableName':_0x439e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9dc8377..96afb42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2042=['util','moment','bluebird','randomstring','ioredis','rpc','jayson/promise','client','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash'];(function(_0xa91246,_0x559a72){var _0x44815f=function(_0x9655bb){while(--_0x9655bb){_0xa91246['push'](_0xa91246['shift']());}};_0x44815f(++_0x559a72);}(_0x2042,0x9f));var _0x2204=function(_0xce1945,_0x36527c){_0xce1945=_0xce1945-0x0;var _0x5a3a9e=_0x2042[_0xce1945];return _0x5a3a9e;};'use strict';var _=require(_0x2204('0x0'));var util=require(_0x2204('0x1'));var moment=require(_0x2204('0x2'));var BPromise=require(_0x2204('0x3'));var rs=require(_0x2204('0x4'));var fs=require('fs');var Redis=require(_0x2204('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x2204('0x6'));var config=require('../../config/environment');var jayson=require(_0x2204('0x7'));var client=jayson[_0x2204('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3e4f1c,_0x3d0f6b,_0x1b074b){return new BPromise(function(_0xd2957f,_0x5bce53){return client['request'](_0x3e4f1c,_0x1b074b)['then'](function(_0x4e5b44){logger['info'](_0x2204('0x9'),_0x3d0f6b,_0x2204('0xa'));logger[_0x2204('0xb')](_0x2204('0xc'),_0x3d0f6b,'request\x20sent',JSON[_0x2204('0xd')](_0x4e5b44));if(_0x4e5b44[_0x2204('0xe')]){if(_0x4e5b44[_0x2204('0xe')][_0x2204('0xf')]===0x1f4){logger[_0x2204('0xe')](_0x2204('0x9'),_0x3d0f6b,_0x4e5b44[_0x2204('0xe')]['message']);return _0x5bce53(_0x4e5b44[_0x2204('0xe')][_0x2204('0x10')]);}logger[_0x2204('0xe')](_0x2204('0x9'),_0x3d0f6b,_0x4e5b44[_0x2204('0xe')][_0x2204('0x10')]);return _0xd2957f(_0x4e5b44[_0x2204('0xe')][_0x2204('0x10')]);}else{logger[_0x2204('0x11')](_0x2204('0x9'),_0x3d0f6b,_0x2204('0xa'));_0xd2957f(_0x4e5b44[_0x2204('0x12')][_0x2204('0x10')]);}})[_0x2204('0x13')](function(_0x3c6f46){logger[_0x2204('0xe')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x3d0f6b,_0x3c6f46);_0x5bce53(_0x3c6f46);});});}
\ No newline at end of file
+var _0x5485=['../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils'];(function(_0x909abb,_0x49bef3){var _0x421e71=function(_0x4d445c){while(--_0x4d445c){_0x909abb['push'](_0x909abb['shift']());}};_0x421e71(++_0x49bef3);}(_0x5485,0x153));var _0x5548=function(_0x54924e,_0x2e2011){_0x54924e=_0x54924e-0x0;var _0x98c902=_0x5485[_0x54924e];return _0x98c902;};'use strict';var _=require(_0x5548('0x0'));var util=require(_0x5548('0x1'));var moment=require(_0x5548('0x2'));var BPromise=require(_0x5548('0x3'));var rs=require(_0x5548('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x5548('0x5'));var logger=require(_0x5548('0x6'))('rpc');var config=require(_0x5548('0x7'));var jayson=require(_0x5548('0x8'));var client=jayson[_0x5548('0x9')][_0x5548('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3e1c14,_0x277964,_0x16a408){return new BPromise(function(_0x2313d5,_0x462508){return client[_0x5548('0xb')](_0x3e1c14,_0x16a408)[_0x5548('0xc')](function(_0x2a7d52){logger[_0x5548('0xd')](_0x5548('0xe'),_0x277964,_0x5548('0xf'));logger[_0x5548('0x10')](_0x5548('0x11'),_0x277964,_0x5548('0xf'),JSON[_0x5548('0x12')](_0x2a7d52));if(_0x2a7d52['error']){if(_0x2a7d52[_0x5548('0x13')]['code']===0x1f4){logger[_0x5548('0x13')](_0x5548('0xe'),_0x277964,_0x2a7d52[_0x5548('0x13')]['message']);return _0x462508(_0x2a7d52[_0x5548('0x13')]['message']);}logger[_0x5548('0x13')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x277964,_0x2a7d52['error'][_0x5548('0x14')]);return _0x2313d5(_0x2a7d52[_0x5548('0x13')][_0x5548('0x14')]);}else{logger[_0x5548('0xd')](_0x5548('0xe'),_0x277964,'request\x20sent');_0x2313d5(_0x2a7d52[_0x5548('0x15')][_0x5548('0x14')]);}})[_0x5548('0x16')](function(_0x3834b8){logger[_0x5548('0x13')](_0x5548('0xe'),_0x277964,_0x3834b8);_0x462508(_0x3834b8);});});}
\ No newline at end of file
index 861ece6..ced9fc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2ca=['util','path','express','Router','../../components/auth/service','../../config/environment','./intSugarcrmField.controller','get','isAuthenticated','index','/:id','post','create','put','update','destroy','exports','multer'];(function(_0x570930,_0x4d79a4){var _0xdd3486=function(_0x4f8d99){while(--_0x4f8d99){_0x570930['push'](_0x570930['shift']());}};_0xdd3486(++_0x4d79a4);}(_0xc2ca,0x167));var _0xac2c=function(_0x392f82,_0x4dc713){_0x392f82=_0x392f82-0x0;var _0x3ad0b8=_0xc2ca[_0x392f82];return _0x3ad0b8;};'use strict';var multer=require(_0xac2c('0x0'));var util=require(_0xac2c('0x1'));var path=require(_0xac2c('0x2'));var timeout=require('connect-timeout');var express=require(_0xac2c('0x3'));var router=express[_0xac2c('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xac2c('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xac2c('0x6'));var controller=require(_0xac2c('0x7'));router[_0xac2c('0x8')]('/',auth[_0xac2c('0x9')](),controller[_0xac2c('0xa')]);router[_0xac2c('0x8')](_0xac2c('0xb'),auth[_0xac2c('0x9')](),controller['show']);router[_0xac2c('0xc')]('/',auth[_0xac2c('0x9')](),controller[_0xac2c('0xd')]);router[_0xac2c('0xe')](_0xac2c('0xb'),auth['isAuthenticated'](),controller[_0xac2c('0xf')]);router['delete'](_0xac2c('0xb'),auth[_0xac2c('0x9')](),controller[_0xac2c('0x10')]);module[_0xac2c('0x11')]=router;
\ No newline at end of file
+var _0x6ea9=['post','create','put','update','/:id','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0x1c0a91,_0x1e806f){var _0x5e43f5=function(_0x5c97c0){while(--_0x5c97c0){_0x1c0a91['push'](_0x1c0a91['shift']());}};_0x5e43f5(++_0x1e806f);}(_0x6ea9,0x155));var _0x96ea=function(_0x18488c,_0x2ffcef){_0x18488c=_0x18488c-0x0;var _0x143849=_0x6ea9[_0x18488c];return _0x143849;};'use strict';var multer=require(_0x96ea('0x0'));var util=require('util');var path=require(_0x96ea('0x1'));var timeout=require(_0x96ea('0x2'));var express=require(_0x96ea('0x3'));var router=express[_0x96ea('0x4')]();var fs_extra=require(_0x96ea('0x5'));var auth=require(_0x96ea('0x6'));var interaction=require(_0x96ea('0x7'));var config=require(_0x96ea('0x8'));var controller=require('./intSugarcrmField.controller');router[_0x96ea('0x9')]('/',auth[_0x96ea('0xa')](),controller['index']);router[_0x96ea('0x9')]('/:id',auth[_0x96ea('0xa')](),controller['show']);router[_0x96ea('0xb')]('/',auth[_0x96ea('0xa')](),controller[_0x96ea('0xc')]);router[_0x96ea('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x96ea('0xe')]);router['delete'](_0x96ea('0xf'),auth[_0x96ea('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 888e469..bed90c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd98e=['variable','customVariable','string','STRING','BOOLEAN','exports','ENUM'];(function(_0x183ceb,_0x33f37c){var _0x3ab282=function(_0x1daa92){while(--_0x1daa92){_0x183ceb['push'](_0x183ceb['shift']());}};_0x3ab282(++_0x33f37c);}(_0xd98e,0x116));var _0xed98=function(_0x266267,_0x479eed){_0x266267=_0x266267-0x0;var _0x2c7f5b=_0xd98e[_0x266267];return _0x2c7f5b;};'use strict';var Sequelize=require('sequelize');module[_0xed98('0x0')]={'type':{'type':Sequelize[_0xed98('0x1')]('string',_0xed98('0x2'),_0xed98('0x3'),'keyValue','picklist'),'defaultValue':_0xed98('0x4')},'content':{'type':Sequelize[_0xed98('0x5')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM']('string',_0xed98('0x2'),'customVariable')},'keyContent':{'type':Sequelize[_0xed98('0x5')]},'idField':{'type':Sequelize[_0xed98('0x5')]},'nameField':{'type':Sequelize[_0xed98('0x5')]},'customField':{'type':Sequelize[_0xed98('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xed98('0x5')]}};
\ No newline at end of file
+var _0xa7e5=['picklist','variable','STRING','BOOLEAN','ENUM','string','customVariable','keyValue'];(function(_0x363b81,_0x81e6ca){var _0x1d92fb=function(_0x129644){while(--_0x129644){_0x363b81['push'](_0x363b81['shift']());}};_0x1d92fb(++_0x81e6ca);}(_0xa7e5,0x74));var _0x5a7e=function(_0x31a6b8,_0x51ec83){_0x31a6b8=_0x31a6b8-0x0;var _0x4d7526=_0xa7e5[_0x31a6b8];return _0x4d7526;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x5a7e('0x0')](_0x5a7e('0x1'),'variable',_0x5a7e('0x2'),_0x5a7e('0x3'),_0x5a7e('0x4')),'defaultValue':_0x5a7e('0x1')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0x5a7e('0x1'),_0x5a7e('0x5'),_0x5a7e('0x2'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x5a7e('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x5a7e('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x5a7e('0x6')]}};
\ No newline at end of file
index f1bb4a1..809772a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc669=['rows','catch','params','keys','length','includeAll','find','create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','offset','limit','undefined','count','set','Content-Range','json','apply','save','update','then','destroy','end','sendStatus','error','stack','name','send','index','map','SugarcrmField','rawAttributes','fieldName','key','query','filters','intersection','attributes','model','fields','nolimit','order','sort','pick','filter','where','merge','type','options','findAll'];(function(_0x47bd4d,_0x4244b8){var _0x279b27=function(_0x2441de){while(--_0x2441de){_0x47bd4d['push'](_0x47bd4d['shift']());}};_0x279b27(++_0x4244b8);}(_0xc669,0x131));var _0x9c66=function(_0x5949a2,_0x5b2c58){_0x5949a2=_0x5949a2-0x0;var _0x1bd847=_0xc669[_0x5949a2];return _0x1bd847;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9c66('0x0'));var zipdir=require(_0x9c66('0x1'));var jsonpatch=require(_0x9c66('0x2'));var rp=require(_0x9c66('0x3'));var moment=require(_0x9c66('0x4'));var BPromise=require(_0x9c66('0x5'));var Mustache=require(_0x9c66('0x6'));var util=require('util');var path=require('path');var sox=require(_0x9c66('0x7'));var csv=require(_0x9c66('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9c66('0x9'));var _=require(_0x9c66('0xa'));var squel=require(_0x9c66('0xb'));var crypto=require(_0x9c66('0xc'));var jsforce=require(_0x9c66('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9c66('0xe'));var Redis=require(_0x9c66('0xf'));var authService=require(_0x9c66('0x10'));var qs=require(_0x9c66('0x11'));var as=require(_0x9c66('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9c66('0x13'))(_0x9c66('0x14'));var utils=require('../../config/utils');var config=require(_0x9c66('0x15'));var licenseUtil=require(_0x9c66('0x16'));var db=require(_0x9c66('0x17'))['db'];function respondWithStatusCode(_0x8bfc4f,_0x40a5e3){_0x40a5e3=_0x40a5e3||0xcc;return function(_0x21541f){if(_0x21541f){return _0x8bfc4f['sendStatus'](_0x40a5e3);}return _0x8bfc4f[_0x9c66('0x18')](_0x40a5e3)['end']();};}function respondWithResult(_0x4fe4a5,_0x31f1a9){_0x31f1a9=_0x31f1a9||0xc8;return function(_0x439c6e){if(_0x439c6e){return _0x4fe4a5['status'](_0x31f1a9)['json'](_0x439c6e);}};}function respondWithFilteredResult(_0x1f6f97,_0x37cd7d){return function(_0xba35e3){if(_0xba35e3){var _0x47a15b=typeof _0x37cd7d[_0x9c66('0x19')]==='undefined'&&typeof _0x37cd7d[_0x9c66('0x1a')]===_0x9c66('0x1b');var _0xc6fd72=_0xba35e3['count'];var _0x3b8932=_0x47a15b?0x0:_0x37cd7d[_0x9c66('0x19')];var _0x497ceb=_0x47a15b?_0xba35e3[_0x9c66('0x1c')]:_0x37cd7d[_0x9c66('0x19')]+_0x37cd7d[_0x9c66('0x1a')];var _0x32b5f6;if(_0x497ceb>=_0xc6fd72){_0x497ceb=_0xc6fd72;_0x32b5f6=0xc8;}else{_0x32b5f6=0xce;}_0x1f6f97[_0x9c66('0x18')](_0x32b5f6);return _0x1f6f97[_0x9c66('0x1d')](_0x9c66('0x1e'),_0x3b8932+'-'+_0x497ceb+'/'+_0xc6fd72)[_0x9c66('0x1f')](_0xba35e3);}return null;};}function patchUpdates(_0x333408){return function(_0x187776){try{jsonpatch[_0x9c66('0x20')](_0x187776,_0x333408,!![]);}catch(_0x5bbf36){return BPromise['reject'](_0x5bbf36);}return _0x187776[_0x9c66('0x21')]();};}function saveUpdates(_0x26a949,_0x2635e1){return function(_0x314f4e){if(_0x314f4e){return _0x314f4e[_0x9c66('0x22')](_0x26a949)[_0x9c66('0x23')](function(_0x3f5d4a){return _0x3f5d4a;});}return null;};}function removeEntity(_0x41a02a,_0x2548fd){return function(_0x5f1e2d){if(_0x5f1e2d){return _0x5f1e2d[_0x9c66('0x24')]()['then'](function(){_0x41a02a[_0x9c66('0x18')](0xcc)[_0x9c66('0x25')]();});}};}function handleEntityNotFound(_0x81a769,_0x20147){return function(_0xc0decb){if(!_0xc0decb){_0x81a769[_0x9c66('0x26')](0x194);}return _0xc0decb;};}function handleError(_0x3bd356,_0x54f0fa){_0x54f0fa=_0x54f0fa||0x1f4;return function(_0x1a4549){logger[_0x9c66('0x27')](_0x1a4549[_0x9c66('0x28')]);if(_0x1a4549[_0x9c66('0x29')]){delete _0x1a4549[_0x9c66('0x29')];}_0x3bd356[_0x9c66('0x18')](_0x54f0fa)[_0x9c66('0x2a')](_0x1a4549);};}exports[_0x9c66('0x2b')]=function(_0x4c889c,_0x3ce1a6){var _0x3e1b9c={},_0x37642f={},_0x5c6b14={'count':0x0,'rows':[]};var _0x59b872=_[_0x9c66('0x2c')](db[_0x9c66('0x2d')][_0x9c66('0x2e')],function(_0x3cfb8c){return{'name':_0x3cfb8c[_0x9c66('0x2f')],'type':_0x3cfb8c['type'][_0x9c66('0x30')]};});_0x37642f['model']=_['map'](_0x59b872,_0x9c66('0x29'));_0x37642f['query']=_['keys'](_0x4c889c[_0x9c66('0x31')]);_0x37642f[_0x9c66('0x32')]=_[_0x9c66('0x33')](_0x37642f['model'],_0x37642f[_0x9c66('0x31')]);_0x3e1b9c[_0x9c66('0x34')]=_[_0x9c66('0x33')](_0x37642f[_0x9c66('0x35')],qs['fields'](_0x4c889c[_0x9c66('0x31')][_0x9c66('0x36')]));_0x3e1b9c[_0x9c66('0x34')]=_0x3e1b9c['attributes']['length']?_0x3e1b9c['attributes']:_0x37642f[_0x9c66('0x35')];if(!_0x4c889c[_0x9c66('0x31')]['hasOwnProperty'](_0x9c66('0x37'))){_0x3e1b9c[_0x9c66('0x1a')]=qs[_0x9c66('0x1a')](_0x4c889c[_0x9c66('0x31')][_0x9c66('0x1a')]);_0x3e1b9c[_0x9c66('0x19')]=qs['offset'](_0x4c889c['query']['offset']);}_0x3e1b9c[_0x9c66('0x38')]=qs[_0x9c66('0x39')](_0x4c889c[_0x9c66('0x31')][_0x9c66('0x39')]);_0x3e1b9c['where']=qs['filters'](_[_0x9c66('0x3a')](_0x4c889c[_0x9c66('0x31')],_0x37642f[_0x9c66('0x32')]),_0x59b872);if(_0x4c889c[_0x9c66('0x31')][_0x9c66('0x3b')]){_0x3e1b9c[_0x9c66('0x3c')]=_[_0x9c66('0x3d')](_0x3e1b9c[_0x9c66('0x3c')],{'$or':_[_0x9c66('0x2c')](_0x59b872,function(_0x478dd7){if(_0x478dd7[_0x9c66('0x3e')]!=='VIRTUAL'){var _0x50a40d={};_0x50a40d[_0x478dd7['name']]={'$like':'%'+_0x4c889c[_0x9c66('0x31')][_0x9c66('0x3b')]+'%'};return _0x50a40d;}})});}_0x3e1b9c=_[_0x9c66('0x3d')]({},_0x3e1b9c,_0x4c889c[_0x9c66('0x3f')]);var _0x489b2a={'where':_0x3e1b9c[_0x9c66('0x3c')]};return db['SugarcrmField'][_0x9c66('0x1c')](_0x489b2a)[_0x9c66('0x23')](function(_0x5668e0){_0x5c6b14['count']=_0x5668e0;if(_0x4c889c['query']['includeAll']){_0x3e1b9c['include']=[{'all':!![]}];}return db[_0x9c66('0x2d')][_0x9c66('0x40')](_0x3e1b9c);})[_0x9c66('0x23')](function(_0x4ae13b){_0x5c6b14[_0x9c66('0x41')]=_0x4ae13b;return _0x5c6b14;})['then'](respondWithFilteredResult(_0x3ce1a6,_0x3e1b9c))[_0x9c66('0x42')](handleError(_0x3ce1a6,null));};exports['show']=function(_0x192a78,_0x3aa5c4){var _0x3e6aa0={'raw':!![],'where':{'id':_0x192a78[_0x9c66('0x43')]['id']}},_0x4eda8f={};_0x4eda8f[_0x9c66('0x35')]=_[_0x9c66('0x44')](db[_0x9c66('0x2d')]['rawAttributes']);_0x4eda8f[_0x9c66('0x31')]=_[_0x9c66('0x44')](_0x192a78['query']);_0x4eda8f[_0x9c66('0x32')]=_['intersection'](_0x4eda8f['model'],_0x4eda8f['query']);_0x3e6aa0[_0x9c66('0x34')]=_[_0x9c66('0x33')](_0x4eda8f[_0x9c66('0x35')],qs[_0x9c66('0x36')](_0x192a78[_0x9c66('0x31')][_0x9c66('0x36')]));_0x3e6aa0[_0x9c66('0x34')]=_0x3e6aa0[_0x9c66('0x34')][_0x9c66('0x45')]?_0x3e6aa0[_0x9c66('0x34')]:_0x4eda8f[_0x9c66('0x35')];if(_0x192a78['query'][_0x9c66('0x46')]){_0x3e6aa0['include']=[{'all':!![]}];}_0x3e6aa0=_[_0x9c66('0x3d')]({},_0x3e6aa0,_0x192a78[_0x9c66('0x3f')]);return db[_0x9c66('0x2d')][_0x9c66('0x47')](_0x3e6aa0)[_0x9c66('0x23')](handleEntityNotFound(_0x3aa5c4,null))[_0x9c66('0x23')](respondWithResult(_0x3aa5c4,null))['catch'](handleError(_0x3aa5c4,null));};exports['create']=function(_0x5f4641,_0x11f1a1){return db[_0x9c66('0x2d')][_0x9c66('0x48')](_0x5f4641['body'],{})[_0x9c66('0x23')](respondWithResult(_0x11f1a1,0xc9))[_0x9c66('0x42')](handleError(_0x11f1a1,null));};exports['update']=function(_0x26c9a8,_0x8590ce){if(_0x26c9a8['body']['id']){delete _0x26c9a8[_0x9c66('0x49')]['id'];}return db['SugarcrmField'][_0x9c66('0x47')]({'where':{'id':_0x26c9a8[_0x9c66('0x43')]['id']}})[_0x9c66('0x23')](handleEntityNotFound(_0x8590ce,null))[_0x9c66('0x23')](saveUpdates(_0x26c9a8[_0x9c66('0x49')],null))[_0x9c66('0x23')](respondWithResult(_0x8590ce,null))[_0x9c66('0x42')](handleError(_0x8590ce,null));};exports[_0x9c66('0x24')]=function(_0x5d2311,_0x36628f){return db[_0x9c66('0x2d')][_0x9c66('0x47')]({'where':{'id':_0x5d2311[_0x9c66('0x43')]['id']}})[_0x9c66('0x23')](handleEntityNotFound(_0x36628f,null))['then'](removeEntity(_0x36628f,null))[_0x9c66('0x42')](handleError(_0x36628f,null));};
\ No newline at end of file
+var _0x12b5=['fields','length','hasOwnProperty','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','findAll','show','includeAll','find','catch','create','body','params','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','SugarcrmField','rawAttributes','fieldName','model','map','query','keys','attributes','intersection'];(function(_0x46dedd,_0x5c8eae){var _0x106cbe=function(_0x267bfd){while(--_0x267bfd){_0x46dedd['push'](_0x46dedd['shift']());}};_0x106cbe(++_0x5c8eae);}(_0x12b5,0xfe));var _0x512b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x12b5[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x512b('0x0'));var rimraf=require(_0x512b('0x1'));var zipdir=require(_0x512b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x512b('0x3'));var moment=require(_0x512b('0x4'));var BPromise=require(_0x512b('0x5'));var Mustache=require(_0x512b('0x6'));var util=require(_0x512b('0x7'));var path=require(_0x512b('0x8'));var sox=require(_0x512b('0x9'));var csv=require(_0x512b('0xa'));var ejs=require(_0x512b('0xb'));var fs=require('fs');var fs_extra=require(_0x512b('0xc'));var _=require('lodash');var squel=require(_0x512b('0xd'));var crypto=require(_0x512b('0xe'));var jsforce=require(_0x512b('0xf'));var deskjs=require(_0x512b('0x10'));var toCsv=require(_0x512b('0xa'));var querystring=require(_0x512b('0x11'));var Papa=require(_0x512b('0x12'));var Redis=require(_0x512b('0x13'));var authService=require(_0x512b('0x14'));var qs=require(_0x512b('0x15'));var as=require(_0x512b('0x16'));var hardwareService=require(_0x512b('0x17'));var logger=require(_0x512b('0x18'))(_0x512b('0x19'));var utils=require(_0x512b('0x1a'));var config=require('../../config/environment');var licenseUtil=require(_0x512b('0x1b'));var db=require(_0x512b('0x1c'))['db'];function respondWithStatusCode(_0x511fad,_0x24f727){_0x24f727=_0x24f727||0xcc;return function(_0x583cd5){if(_0x583cd5){return _0x511fad[_0x512b('0x1d')](_0x24f727);}return _0x511fad['status'](_0x24f727)[_0x512b('0x1e')]();};}function respondWithResult(_0xeebff4,_0x4f26db){_0x4f26db=_0x4f26db||0xc8;return function(_0x413566){if(_0x413566){return _0xeebff4[_0x512b('0x1f')](_0x4f26db)['json'](_0x413566);}};}function respondWithFilteredResult(_0x5232d4,_0x2ff39c){return function(_0x10e3b5){if(_0x10e3b5){var _0xbab925=typeof _0x2ff39c[_0x512b('0x20')]===_0x512b('0x21')&&typeof _0x2ff39c[_0x512b('0x22')]===_0x512b('0x21');var _0x47bb97=_0x10e3b5[_0x512b('0x23')];var _0x568ade=_0xbab925?0x0:_0x2ff39c[_0x512b('0x20')];var _0x2a8e61=_0xbab925?_0x10e3b5[_0x512b('0x23')]:_0x2ff39c[_0x512b('0x20')]+_0x2ff39c[_0x512b('0x22')];var _0x421cc0;if(_0x2a8e61>=_0x47bb97){_0x2a8e61=_0x47bb97;_0x421cc0=0xc8;}else{_0x421cc0=0xce;}_0x5232d4[_0x512b('0x1f')](_0x421cc0);return _0x5232d4[_0x512b('0x24')](_0x512b('0x25'),_0x568ade+'-'+_0x2a8e61+'/'+_0x47bb97)[_0x512b('0x26')](_0x10e3b5);}return null;};}function patchUpdates(_0x2f70ea){return function(_0xbedf1f){try{jsonpatch[_0x512b('0x27')](_0xbedf1f,_0x2f70ea,!![]);}catch(_0x5db6f4){return BPromise[_0x512b('0x28')](_0x5db6f4);}return _0xbedf1f[_0x512b('0x29')]();};}function saveUpdates(_0x1c98cd,_0x5abde6){return function(_0x3a6dbe){if(_0x3a6dbe){return _0x3a6dbe[_0x512b('0x2a')](_0x1c98cd)[_0x512b('0x2b')](function(_0x2a6a5e){return _0x2a6a5e;});}return null;};}function removeEntity(_0x1de957,_0x5b9f27){return function(_0x3fad63){if(_0x3fad63){return _0x3fad63[_0x512b('0x2c')]()['then'](function(){_0x1de957['status'](0xcc)[_0x512b('0x1e')]();});}};}function handleEntityNotFound(_0x1ada17,_0x3e17db){return function(_0x279806){if(!_0x279806){_0x1ada17['sendStatus'](0x194);}return _0x279806;};}function handleError(_0x563bb9,_0xf700dd){_0xf700dd=_0xf700dd||0x1f4;return function(_0x1ed2ae){logger[_0x512b('0x2d')](_0x1ed2ae[_0x512b('0x2e')]);if(_0x1ed2ae[_0x512b('0x2f')]){delete _0x1ed2ae['name'];}_0x563bb9[_0x512b('0x1f')](_0xf700dd)[_0x512b('0x30')](_0x1ed2ae);};}exports['index']=function(_0x51f5ef,_0x4ce2c8){var _0x5d0d56={},_0xc8a8b0={},_0x555824={'count':0x0,'rows':[]};var _0x16620b=_['map'](db[_0x512b('0x31')][_0x512b('0x32')],function(_0x420354){return{'name':_0x420354[_0x512b('0x33')],'type':_0x420354['type']['key']};});_0xc8a8b0[_0x512b('0x34')]=_[_0x512b('0x35')](_0x16620b,'name');_0xc8a8b0[_0x512b('0x36')]=_[_0x512b('0x37')](_0x51f5ef['query']);_0xc8a8b0['filters']=_['intersection'](_0xc8a8b0['model'],_0xc8a8b0[_0x512b('0x36')]);_0x5d0d56[_0x512b('0x38')]=_[_0x512b('0x39')](_0xc8a8b0['model'],qs[_0x512b('0x3a')](_0x51f5ef[_0x512b('0x36')][_0x512b('0x3a')]));_0x5d0d56[_0x512b('0x38')]=_0x5d0d56[_0x512b('0x38')][_0x512b('0x3b')]?_0x5d0d56['attributes']:_0xc8a8b0[_0x512b('0x34')];if(!_0x51f5ef[_0x512b('0x36')][_0x512b('0x3c')]('nolimit')){_0x5d0d56[_0x512b('0x22')]=qs[_0x512b('0x22')](_0x51f5ef[_0x512b('0x36')][_0x512b('0x22')]);_0x5d0d56[_0x512b('0x20')]=qs[_0x512b('0x20')](_0x51f5ef[_0x512b('0x36')][_0x512b('0x20')]);}_0x5d0d56[_0x512b('0x3d')]=qs[_0x512b('0x3e')](_0x51f5ef[_0x512b('0x36')]['sort']);_0x5d0d56[_0x512b('0x3f')]=qs[_0x512b('0x40')](_[_0x512b('0x41')](_0x51f5ef[_0x512b('0x36')],_0xc8a8b0['filters']),_0x16620b);if(_0x51f5ef[_0x512b('0x36')]['filter']){_0x5d0d56['where']=_[_0x512b('0x42')](_0x5d0d56[_0x512b('0x3f')],{'$or':_[_0x512b('0x35')](_0x16620b,function(_0x821422){if(_0x821422['type']!==_0x512b('0x43')){var _0x44afcf={};_0x44afcf[_0x821422[_0x512b('0x2f')]]={'$like':'%'+_0x51f5ef[_0x512b('0x36')][_0x512b('0x44')]+'%'};return _0x44afcf;}})});}_0x5d0d56=_[_0x512b('0x42')]({},_0x5d0d56,_0x51f5ef[_0x512b('0x45')]);var _0x1a56e3={'where':_0x5d0d56[_0x512b('0x3f')]};return db[_0x512b('0x31')]['count'](_0x1a56e3)[_0x512b('0x2b')](function(_0x15675e){_0x555824[_0x512b('0x23')]=_0x15675e;if(_0x51f5ef['query']['includeAll']){_0x5d0d56['include']=[{'all':!![]}];}return db[_0x512b('0x31')][_0x512b('0x46')](_0x5d0d56);})[_0x512b('0x2b')](function(_0x1a5b0f){_0x555824['rows']=_0x1a5b0f;return _0x555824;})[_0x512b('0x2b')](respondWithFilteredResult(_0x4ce2c8,_0x5d0d56))['catch'](handleError(_0x4ce2c8,null));};exports[_0x512b('0x47')]=function(_0x2e7202,_0x54203f){var _0x494075={'raw':!![],'where':{'id':_0x2e7202['params']['id']}},_0x28e3c4={};_0x28e3c4['model']=_[_0x512b('0x37')](db['SugarcrmField'][_0x512b('0x32')]);_0x28e3c4[_0x512b('0x36')]=_[_0x512b('0x37')](_0x2e7202[_0x512b('0x36')]);_0x28e3c4[_0x512b('0x40')]=_[_0x512b('0x39')](_0x28e3c4[_0x512b('0x34')],_0x28e3c4[_0x512b('0x36')]);_0x494075[_0x512b('0x38')]=_[_0x512b('0x39')](_0x28e3c4[_0x512b('0x34')],qs[_0x512b('0x3a')](_0x2e7202[_0x512b('0x36')][_0x512b('0x3a')]));_0x494075[_0x512b('0x38')]=_0x494075[_0x512b('0x38')][_0x512b('0x3b')]?_0x494075['attributes']:_0x28e3c4['model'];if(_0x2e7202[_0x512b('0x36')][_0x512b('0x48')]){_0x494075['include']=[{'all':!![]}];}_0x494075=_[_0x512b('0x42')]({},_0x494075,_0x2e7202['options']);return db[_0x512b('0x31')][_0x512b('0x49')](_0x494075)[_0x512b('0x2b')](handleEntityNotFound(_0x54203f,null))[_0x512b('0x2b')](respondWithResult(_0x54203f,null))[_0x512b('0x4a')](handleError(_0x54203f,null));};exports[_0x512b('0x4b')]=function(_0x195654,_0x282749){return db[_0x512b('0x31')]['create'](_0x195654[_0x512b('0x4c')],{})[_0x512b('0x2b')](respondWithResult(_0x282749,0xc9))[_0x512b('0x4a')](handleError(_0x282749,null));};exports[_0x512b('0x2a')]=function(_0x4b2f6e,_0x18c100){if(_0x4b2f6e[_0x512b('0x4c')]['id']){delete _0x4b2f6e[_0x512b('0x4c')]['id'];}return db[_0x512b('0x31')][_0x512b('0x49')]({'where':{'id':_0x4b2f6e[_0x512b('0x4d')]['id']}})[_0x512b('0x2b')](handleEntityNotFound(_0x18c100,null))['then'](saveUpdates(_0x4b2f6e['body'],null))[_0x512b('0x2b')](respondWithResult(_0x18c100,null))[_0x512b('0x4a')](handleError(_0x18c100,null));};exports[_0x512b('0x2c')]=function(_0x17b54c,_0x464277){return db[_0x512b('0x31')][_0x512b('0x49')]({'where':{'id':_0x17b54c[_0x512b('0x4d')]['id']}})[_0x512b('0x2b')](handleEntityNotFound(_0x464277,null))[_0x512b('0x2b')](removeEntity(_0x464277,null))['catch'](handleError(_0x464277,null));};
\ No newline at end of file
index eeb174d..6fd89c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b09=['exports','define','SugarcrmField','int_sugarcrm_fields','FieldId','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x152821,_0x614491){var _0x51dd02=function(_0x220303){while(--_0x220303){_0x152821['push'](_0x152821['shift']());}};_0x51dd02(++_0x614491);}(_0x2b09,0x9f));var _0x92b0=function(_0x2d64d6,_0x4e36a){_0x2d64d6=_0x2d64d6-0x0;var _0x35ffa0=_0x2b09[_0x2d64d6];return _0x35ffa0;};'use strict';var _=require(_0x92b0('0x0'));var util=require(_0x92b0('0x1'));var logger=require('../../config/logger')(_0x92b0('0x2'));var moment=require(_0x92b0('0x3'));var BPromise=require(_0x92b0('0x4'));var rp=require(_0x92b0('0x5'));var fs=require('fs');var path=require(_0x92b0('0x6'));var rimraf=require(_0x92b0('0x7'));var config=require(_0x92b0('0x8'));var attributes=require('./intSugarcrmField.attributes');module[_0x92b0('0x9')]=function(_0x4e8498,_0x404973){return _0x4e8498[_0x92b0('0xa')](_0x92b0('0xb'),attributes,{'tableName':_0x92b0('0xc'),'paranoid':![],'indexes':[{'name':'sugarcrm_unique_index','fields':['idField',_0x92b0('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xba16=['rimraf','exports','SugarcrmField','sugarcrm_unique_index','FieldId','util','api','moment','request-promise','path'];(function(_0x1bde65,_0x514eb8){var _0x2705a6=function(_0x179f4d){while(--_0x179f4d){_0x1bde65['push'](_0x1bde65['shift']());}};_0x2705a6(++_0x514eb8);}(_0xba16,0x1e5));var _0x6ba1=function(_0x1a5cd7,_0x3811e9){_0x1a5cd7=_0x1a5cd7-0x0;var _0x399402=_0xba16[_0x1a5cd7];return _0x399402;};'use strict';var _=require('lodash');var util=require(_0x6ba1('0x0'));var logger=require('../../config/logger')(_0x6ba1('0x1'));var moment=require(_0x6ba1('0x2'));var BPromise=require('bluebird');var rp=require(_0x6ba1('0x3'));var fs=require('fs');var path=require(_0x6ba1('0x4'));var rimraf=require(_0x6ba1('0x5'));var config=require('../../config/environment');var attributes=require('./intSugarcrmField.attributes');module[_0x6ba1('0x6')]=function(_0x189fdd,_0x4a5724){return _0x189fdd['define'](_0x6ba1('0x7'),attributes,{'tableName':'int_sugarcrm_fields','paranoid':![],'indexes':[{'name':_0x6ba1('0x8'),'fields':['idField',_0x6ba1('0x9')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index e37b685..232636c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x616c=['lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','request\x20sent','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','code','SugarcrmField,\x20%s,\x20%s','message','result','catch'];(function(_0x385bc5,_0x5210b6){var _0x1882ee=function(_0xe18a93){while(--_0xe18a93){_0x385bc5['push'](_0x385bc5['shift']());}};_0x1882ee(++_0x5210b6);}(_0x616c,0x142));var _0xc616=function(_0x31f7b6,_0x475b73){_0x31f7b6=_0x31f7b6-0x0;var _0x4221ef=_0x616c[_0x31f7b6];return _0x4221ef;};'use strict';var _=require(_0xc616('0x0'));var util=require(_0xc616('0x1'));var moment=require(_0xc616('0x2'));var BPromise=require(_0xc616('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc616('0x4'));var db=require(_0xc616('0x5'))['db'];var utils=require(_0xc616('0x6'));var logger=require(_0xc616('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xc616('0x8'));var client=jayson[_0xc616('0x9')][_0xc616('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1439e8,_0x4df72b,_0x128664){return new BPromise(function(_0x221794,_0x40e881){return client[_0xc616('0xb')](_0x1439e8,_0x128664)[_0xc616('0xc')](function(_0x41f633){logger[_0xc616('0xd')]('SugarcrmField,\x20%s,\x20%s',_0x4df72b,_0xc616('0xe'));logger['debug'](_0xc616('0xf'),_0x4df72b,_0xc616('0xe'),JSON[_0xc616('0x10')](_0x41f633));if(_0x41f633[_0xc616('0x11')]){if(_0x41f633[_0xc616('0x11')][_0xc616('0x12')]===0x1f4){logger['error'](_0xc616('0x13'),_0x4df72b,_0x41f633[_0xc616('0x11')][_0xc616('0x14')]);return _0x40e881(_0x41f633[_0xc616('0x11')]['message']);}logger[_0xc616('0x11')](_0xc616('0x13'),_0x4df72b,_0x41f633[_0xc616('0x11')][_0xc616('0x14')]);return _0x221794(_0x41f633['error'][_0xc616('0x14')]);}else{logger[_0xc616('0xd')]('SugarcrmField,\x20%s,\x20%s',_0x4df72b,_0xc616('0xe'));_0x221794(_0x41f633[_0xc616('0x15')]['message']);}})[_0xc616('0x16')](function(_0x2de8a1){logger[_0xc616('0x11')](_0xc616('0x13'),_0x4df72b,_0x2de8a1);_0x40e881(_0x2de8a1);});});}
\ No newline at end of file
+var _0xe8b4=['request\x20sent','debug','stringify','error','code','message','result','lodash','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','SugarcrmField,\x20%s,\x20%s'];(function(_0x1b0eb6,_0x378012){var _0x44f9b1=function(_0x74735a){while(--_0x74735a){_0x1b0eb6['push'](_0x1b0eb6['shift']());}};_0x44f9b1(++_0x378012);}(_0xe8b4,0xcf));var _0x4e8b=function(_0x5c46a1,_0x390418){_0x5c46a1=_0x5c46a1-0x0;var _0x1d9521=_0xe8b4[_0x5c46a1];return _0x1d9521;};'use strict';var _=require(_0x4e8b('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x4e8b('0x1'));var rs=require(_0x4e8b('0x2'));var fs=require('fs');var Redis=require(_0x4e8b('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x4e8b('0x4'));var logger=require('../../config/logger')(_0x4e8b('0x5'));var config=require(_0x4e8b('0x6'));var jayson=require(_0x4e8b('0x7'));var client=jayson[_0x4e8b('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x494180,_0x1d0539,_0x4ed898){return new BPromise(function(_0x24a309,_0x5c897b){return client[_0x4e8b('0x9')](_0x494180,_0x4ed898)[_0x4e8b('0xa')](function(_0x53c8ab){logger[_0x4e8b('0xb')](_0x4e8b('0xc'),_0x1d0539,_0x4e8b('0xd'));logger[_0x4e8b('0xe')]('SugarcrmField,\x20%s,\x20%s,\x20%s',_0x1d0539,_0x4e8b('0xd'),JSON[_0x4e8b('0xf')](_0x53c8ab));if(_0x53c8ab[_0x4e8b('0x10')]){if(_0x53c8ab[_0x4e8b('0x10')][_0x4e8b('0x11')]===0x1f4){logger[_0x4e8b('0x10')](_0x4e8b('0xc'),_0x1d0539,_0x53c8ab['error'][_0x4e8b('0x12')]);return _0x5c897b(_0x53c8ab[_0x4e8b('0x10')]['message']);}logger[_0x4e8b('0x10')](_0x4e8b('0xc'),_0x1d0539,_0x53c8ab['error'][_0x4e8b('0x12')]);return _0x24a309(_0x53c8ab[_0x4e8b('0x10')]['message']);}else{logger[_0x4e8b('0xb')](_0x4e8b('0xc'),_0x1d0539,'request\x20sent');_0x24a309(_0x53c8ab[_0x4e8b('0x13')][_0x4e8b('0x12')]);}})['catch'](function(_0x40847a){logger[_0x4e8b('0x10')](_0x4e8b('0xc'),_0x1d0539,_0x40847a);_0x5c897b(_0x40847a);});});}
\ No newline at end of file
index f072ca8..964d858 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfac4=['show','/:id/configurations','/:id/fields','create','put','update','delete','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','isAuthenticated','index','get','/:id'];(function(_0x23bdc9,_0x263a65){var _0x122214=function(_0x5dc0c4){while(--_0x5dc0c4){_0x23bdc9['push'](_0x23bdc9['shift']());}};_0x122214(++_0x263a65);}(_0xfac4,0xb1));var _0x4fac=function(_0x139769,_0x54fbfe){_0x139769=_0x139769-0x0;var _0x10c09a=_0xfac4[_0x139769];return _0x10c09a;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x4fac('0x0'));var timeout=require(_0x4fac('0x1'));var express=require(_0x4fac('0x2'));var router=express[_0x4fac('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x4fac('0x4'));var interaction=require(_0x4fac('0x5'));var config=require(_0x4fac('0x6'));var controller=require(_0x4fac('0x7'));router['get']('/',auth[_0x4fac('0x8')](),controller[_0x4fac('0x9')]);router[_0x4fac('0xa')](_0x4fac('0xb'),auth[_0x4fac('0x8')](),controller[_0x4fac('0xc')]);router[_0x4fac('0xa')](_0x4fac('0xd'),auth[_0x4fac('0x8')](),controller['getConfigurations']);router['get'](_0x4fac('0xe'),auth[_0x4fac('0x8')](),controller['getFields']);router['post']('/',auth[_0x4fac('0x8')](),controller[_0x4fac('0xf')]);router['post']('/:id/configurations',auth['isAuthenticated'](),controller['addConfiguration']);router[_0x4fac('0x10')]('/:id',auth[_0x4fac('0x8')](),controller[_0x4fac('0x11')]);router[_0x4fac('0x12')]('/:id',auth[_0x4fac('0x8')](),controller[_0x4fac('0x13')]);module[_0x4fac('0x14')]=router;
\ No newline at end of file
+var _0xf7c3=['/:id','update','delete','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id/configurations','/:id/fields','getFields','create','post','addConfiguration','put'];(function(_0x51aa38,_0x5d342b){var _0x14b978=function(_0x128d2c){while(--_0x128d2c){_0x51aa38['push'](_0x51aa38['shift']());}};_0x14b978(++_0x5d342b);}(_0xf7c3,0x154));var _0x3f7c=function(_0x33f269,_0x5998a3){_0x33f269=_0x33f269-0x0;var _0x4e94ff=_0xf7c3[_0x33f269];return _0x4e94ff;};'use strict';var multer=require(_0x3f7c('0x0'));var util=require(_0x3f7c('0x1'));var path=require(_0x3f7c('0x2'));var timeout=require(_0x3f7c('0x3'));var express=require('express');var router=express[_0x3f7c('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x3f7c('0x5'));var interaction=require(_0x3f7c('0x6'));var config=require(_0x3f7c('0x7'));var controller=require('./intVtigerAccount.controller');router[_0x3f7c('0x8')]('/',auth[_0x3f7c('0x9')](),controller['index']);router[_0x3f7c('0x8')]('/:id',auth[_0x3f7c('0x9')](),controller['show']);router[_0x3f7c('0x8')](_0x3f7c('0xa'),auth[_0x3f7c('0x9')](),controller['getConfigurations']);router[_0x3f7c('0x8')](_0x3f7c('0xb'),auth[_0x3f7c('0x9')](),controller[_0x3f7c('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0x3f7c('0xd')]);router[_0x3f7c('0xe')]('/:id/configurations',auth[_0x3f7c('0x9')](),controller[_0x3f7c('0xf')]);router[_0x3f7c('0x10')](_0x3f7c('0x11'),auth['isAuthenticated'](),controller[_0x3f7c('0x12')]);router[_0x3f7c('0x13')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x3f7c('0x14')]=router;
\ No newline at end of file
index cb6221b..17c5ce5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe4a=['sequelize','exports','STRING'];(function(_0x4ce8a4,_0x40c3aa){var _0x4200bb=function(_0x225fe9){while(--_0x225fe9){_0x4ce8a4['push'](_0x4ce8a4['shift']());}};_0x4200bb(++_0x40c3aa);}(_0xbe4a,0x180));var _0xabe4=function(_0x1ded25,_0x26be3d){_0x1ded25=_0x1ded25-0x0;var _0x8ec99f=_0xbe4a[_0x1ded25];return _0x8ec99f;};'use strict';var Sequelize=require(_0xabe4('0x0'));module[_0xabe4('0x1')]={'name':{'type':Sequelize[_0xabe4('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xabe4('0x2')]},'username':{'type':Sequelize[_0xabe4('0x2')],'allowNull':![]},'moduleName':{'type':Sequelize[_0xabe4('0x2')],'allowNull':![],'defaultValue':'HelpDesk'},'remoteUri':{'type':Sequelize[_0xabe4('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0xabe4('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x86c2=['STRING','HelpDesk','sequelize','exports'];(function(_0x4ccf45,_0x548deb){var _0x4513dd=function(_0x180191){while(--_0x180191){_0x4ccf45['push'](_0x4ccf45['shift']());}};_0x4513dd(++_0x548deb);}(_0x86c2,0xba));var _0x286c=function(_0x4d0402,_0x316967){_0x4d0402=_0x4d0402-0x0;var _0x492669=_0x86c2[_0x4d0402];return _0x492669;};'use strict';var Sequelize=require(_0x286c('0x0'));module[_0x286c('0x1')]={'name':{'type':Sequelize[_0x286c('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x286c('0x2')]},'username':{'type':Sequelize[_0x286c('0x2')],'allowNull':![]},'moduleName':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x286c('0x3')},'remoteUri':{'type':Sequelize['STRING'],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x286c('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x286c('0x2')],'allowNull':![]}};
\ No newline at end of file
index 7f736b3..1b1b1b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9400=['rawAttributes','type','key','name','query','keys','filters','attributes','intersection','fields','length','model','sort','where','pick','merge','VIRTUAL','filter','options','count','includeAll','include','findAll','rows','catch','show','params','find','create','body','update','findOne','VtigerConfiguration','getConfigurations','hasOwnProperty','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','VtigerField','getFields','username','description','moduleName','remoteUri','serverUrl','accessKey','substring','format','%s/webservice.php','GET','getchallenge','success','POST','login','result','token','describe','sessionName','autogenerated','owner','remove','includes','editable','false','cf_','picklist','picklistValues','label','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','rimraf','fast-json-patch','moment','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','Content-Range','apply','reject','save','then','destroy','error','stack','send','index','map','VtigerAccount'];(function(_0x141f9a,_0x5517aa){var _0x333adb=function(_0x2acb15){while(--_0x2acb15){_0x141f9a['push'](_0x141f9a['shift']());}};_0x333adb(++_0x5517aa);}(_0x9400,0x1ab));var _0x0940=function(_0x3bd71c,_0x1293be){_0x3bd71c=_0x3bd71c-0x0;var _0x2c50d4=_0x9400[_0x3bd71c];return _0x2c50d4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0940('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0940('0x1'));var rp=require('request-promise');var moment=require(_0x0940('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x0940('0x3'));var path=require('path');var sox=require(_0x0940('0x4'));var csv=require(_0x0940('0x5'));var ejs=require(_0x0940('0x6'));var fs=require('fs');var fs_extra=require(_0x0940('0x7'));var _=require(_0x0940('0x8'));var squel=require(_0x0940('0x9'));var crypto=require(_0x0940('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x0940('0xb'));var toCsv=require(_0x0940('0x5'));var querystring=require(_0x0940('0xc'));var Papa=require('papaparse');var Redis=require(_0x0940('0xd'));var authService=require(_0x0940('0xe'));var qs=require(_0x0940('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0940('0x10'));var logger=require(_0x0940('0x11'))('api');var utils=require(_0x0940('0x12'));var config=require(_0x0940('0x13'));var licenseUtil=require(_0x0940('0x14'));var db=require(_0x0940('0x15'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x155442,_0x752dc7){_0x752dc7=_0x752dc7||0xcc;return function(_0x2aca90){if(_0x2aca90){return _0x155442[_0x0940('0x16')](_0x752dc7);}return _0x155442[_0x0940('0x17')](_0x752dc7)[_0x0940('0x18')]();};}function respondWithResult(_0xe5fbc9,_0x465301){_0x465301=_0x465301||0xc8;return function(_0x11589d){if(_0x11589d){return _0xe5fbc9[_0x0940('0x17')](_0x465301)[_0x0940('0x19')](_0x11589d);}};}function respondWithFilteredResult(_0xfaa683,_0x309abf){return function(_0x2dcef5){if(_0x2dcef5){var _0x26ac0=typeof _0x309abf[_0x0940('0x1a')]===_0x0940('0x1b')&&typeof _0x309abf[_0x0940('0x1c')]===_0x0940('0x1b');var _0x377e83=_0x2dcef5['count'];var _0x1701cd=_0x26ac0?0x0:_0x309abf[_0x0940('0x1a')];var _0x47c140=_0x26ac0?_0x2dcef5['count']:_0x309abf[_0x0940('0x1a')]+_0x309abf[_0x0940('0x1c')];var _0xc1cccf;if(_0x47c140>=_0x377e83){_0x47c140=_0x377e83;_0xc1cccf=0xc8;}else{_0xc1cccf=0xce;}_0xfaa683[_0x0940('0x17')](_0xc1cccf);return _0xfaa683['set'](_0x0940('0x1d'),_0x1701cd+'-'+_0x47c140+'/'+_0x377e83)[_0x0940('0x19')](_0x2dcef5);}return null;};}function patchUpdates(_0x5974d1){return function(_0x364bbe){try{jsonpatch[_0x0940('0x1e')](_0x364bbe,_0x5974d1,!![]);}catch(_0x593774){return BPromise[_0x0940('0x1f')](_0x593774);}return _0x364bbe[_0x0940('0x20')]();};}function saveUpdates(_0xd9ccbc,_0x7ba1be){return function(_0x379051){if(_0x379051){return _0x379051['update'](_0xd9ccbc)[_0x0940('0x21')](function(_0x42bd91){return _0x42bd91;});}return null;};}function removeEntity(_0x585e50,_0x266cb6){return function(_0x273793){if(_0x273793){return _0x273793[_0x0940('0x22')]()[_0x0940('0x21')](function(){_0x585e50['status'](0xcc)[_0x0940('0x18')]();});}};}function handleEntityNotFound(_0x19e41d,_0x551ec3){return function(_0xfe3df4){if(!_0xfe3df4){_0x19e41d['sendStatus'](0x194);}return _0xfe3df4;};}function handleError(_0xaf5de6,_0x2f7dd3){_0x2f7dd3=_0x2f7dd3||0x1f4;return function(_0x3b6496){logger[_0x0940('0x23')](_0x3b6496[_0x0940('0x24')]);if(_0x3b6496['name']){delete _0x3b6496['name'];}_0xaf5de6[_0x0940('0x17')](_0x2f7dd3)[_0x0940('0x25')](_0x3b6496);};}exports[_0x0940('0x26')]=function(_0x1bf1e7,_0x4cf7da){var _0x4f4922={},_0x302924={},_0xdc78b9={'count':0x0,'rows':[]};var _0xd3a2ef=_[_0x0940('0x27')](db[_0x0940('0x28')][_0x0940('0x29')],function(_0x2c6bbc){return{'name':_0x2c6bbc['fieldName'],'type':_0x2c6bbc[_0x0940('0x2a')][_0x0940('0x2b')]};});_0x302924['model']=_[_0x0940('0x27')](_0xd3a2ef,_0x0940('0x2c'));_0x302924[_0x0940('0x2d')]=_[_0x0940('0x2e')](_0x1bf1e7[_0x0940('0x2d')]);_0x302924[_0x0940('0x2f')]=_['intersection'](_0x302924['model'],_0x302924[_0x0940('0x2d')]);_0x4f4922[_0x0940('0x30')]=_[_0x0940('0x31')](_0x302924['model'],qs[_0x0940('0x32')](_0x1bf1e7[_0x0940('0x2d')][_0x0940('0x32')]));_0x4f4922[_0x0940('0x30')]=_0x4f4922[_0x0940('0x30')][_0x0940('0x33')]?_0x4f4922['attributes']:_0x302924[_0x0940('0x34')];if(!_0x1bf1e7['query']['hasOwnProperty']('nolimit')){_0x4f4922[_0x0940('0x1c')]=qs[_0x0940('0x1c')](_0x1bf1e7['query'][_0x0940('0x1c')]);_0x4f4922[_0x0940('0x1a')]=qs['offset'](_0x1bf1e7['query']['offset']);}_0x4f4922['order']=qs['sort'](_0x1bf1e7[_0x0940('0x2d')][_0x0940('0x35')]);_0x4f4922[_0x0940('0x36')]=qs[_0x0940('0x2f')](_[_0x0940('0x37')](_0x1bf1e7[_0x0940('0x2d')],_0x302924['filters']),_0xd3a2ef);if(_0x1bf1e7[_0x0940('0x2d')]['filter']){_0x4f4922[_0x0940('0x36')]=_[_0x0940('0x38')](_0x4f4922[_0x0940('0x36')],{'$or':_[_0x0940('0x27')](_0xd3a2ef,function(_0x2d7e9f){if(_0x2d7e9f[_0x0940('0x2a')]!==_0x0940('0x39')){var _0x35c5e2={};_0x35c5e2[_0x2d7e9f[_0x0940('0x2c')]]={'$like':'%'+_0x1bf1e7[_0x0940('0x2d')][_0x0940('0x3a')]+'%'};return _0x35c5e2;}})});}_0x4f4922=_[_0x0940('0x38')]({},_0x4f4922,_0x1bf1e7[_0x0940('0x3b')]);var _0x32d37d={'where':_0x4f4922[_0x0940('0x36')]};return db[_0x0940('0x28')][_0x0940('0x3c')](_0x32d37d)['then'](function(_0x368f95){_0xdc78b9[_0x0940('0x3c')]=_0x368f95;if(_0x1bf1e7['query'][_0x0940('0x3d')]){_0x4f4922[_0x0940('0x3e')]=[{'all':!![]}];}return db[_0x0940('0x28')][_0x0940('0x3f')](_0x4f4922);})[_0x0940('0x21')](function(_0x1d5ccc){_0xdc78b9[_0x0940('0x40')]=_0x1d5ccc;return _0xdc78b9;})[_0x0940('0x21')](respondWithFilteredResult(_0x4cf7da,_0x4f4922))[_0x0940('0x41')](handleError(_0x4cf7da,null));};exports[_0x0940('0x42')]=function(_0x4c576b,_0x2591f6){var _0x57a1ef={'raw':![],'where':{'id':_0x4c576b[_0x0940('0x43')]['id']}},_0x2ad5a0={};_0x2ad5a0[_0x0940('0x34')]=_[_0x0940('0x2e')](db[_0x0940('0x28')][_0x0940('0x29')]);_0x2ad5a0[_0x0940('0x2d')]=_[_0x0940('0x2e')](_0x4c576b[_0x0940('0x2d')]);_0x2ad5a0[_0x0940('0x2f')]=_[_0x0940('0x31')](_0x2ad5a0[_0x0940('0x34')],_0x2ad5a0[_0x0940('0x2d')]);_0x57a1ef[_0x0940('0x30')]=_[_0x0940('0x31')](_0x2ad5a0['model'],qs[_0x0940('0x32')](_0x4c576b[_0x0940('0x2d')][_0x0940('0x32')]));_0x57a1ef[_0x0940('0x30')]=_0x57a1ef[_0x0940('0x30')][_0x0940('0x33')]?_0x57a1ef[_0x0940('0x30')]:_0x2ad5a0['model'];if(_0x4c576b[_0x0940('0x2d')][_0x0940('0x3d')]){_0x57a1ef[_0x0940('0x3e')]=[{'all':!![]}];}_0x57a1ef=_['merge']({},_0x57a1ef,_0x4c576b['options']);return db[_0x0940('0x28')][_0x0940('0x44')](_0x57a1ef)['then'](handleEntityNotFound(_0x2591f6,null))['then'](respondWithResult(_0x2591f6,null))[_0x0940('0x41')](handleError(_0x2591f6,null));};exports[_0x0940('0x45')]=function(_0x57b2a8,_0x55bb00){return db[_0x0940('0x28')][_0x0940('0x45')](_0x57b2a8[_0x0940('0x46')],{})[_0x0940('0x21')](respondWithResult(_0x55bb00,0xc9))[_0x0940('0x41')](handleError(_0x55bb00,null));};exports[_0x0940('0x47')]=function(_0x25cad6,_0x1ee3c0){if(_0x25cad6[_0x0940('0x46')]['id']){delete _0x25cad6['body']['id'];}return db[_0x0940('0x28')][_0x0940('0x44')]({'where':{'id':_0x25cad6[_0x0940('0x43')]['id']}})[_0x0940('0x21')](handleEntityNotFound(_0x1ee3c0,null))[_0x0940('0x21')](saveUpdates(_0x25cad6['body'],null))[_0x0940('0x21')](respondWithResult(_0x1ee3c0,null))['catch'](handleError(_0x1ee3c0,null));};exports['destroy']=function(_0x3bc063,_0x1aea27){return db[_0x0940('0x28')]['find']({'where':{'id':_0x3bc063['params']['id']}})[_0x0940('0x21')](handleEntityNotFound(_0x1aea27,null))['then'](removeEntity(_0x1aea27,null))[_0x0940('0x41')](handleError(_0x1aea27,null));};exports['getConfigurations']=function(_0x12041f,_0x4bf558,_0x31bdee){var _0x1de325={};var _0x2c66eb={};var _0xb0db00;var _0x1037aa;return db[_0x0940('0x28')][_0x0940('0x48')]({'where':{'id':_0x12041f[_0x0940('0x43')]['id']}})[_0x0940('0x21')](handleEntityNotFound(_0x4bf558,null))[_0x0940('0x21')](function(_0x21e36a){if(_0x21e36a){_0xb0db00=_0x21e36a;_0x2c66eb['model']=_['keys'](db[_0x0940('0x49')][_0x0940('0x29')]);_0x2c66eb['query']=_[_0x0940('0x2e')](_0x12041f[_0x0940('0x2d')]);_0x2c66eb['filters']=_[_0x0940('0x31')](_0x2c66eb['model'],_0x2c66eb[_0x0940('0x2d')]);_0x1de325[_0x0940('0x30')]=_[_0x0940('0x31')](_0x2c66eb[_0x0940('0x34')],qs[_0x0940('0x32')](_0x12041f[_0x0940('0x2d')][_0x0940('0x32')]));_0x1de325[_0x0940('0x30')]=_0x1de325[_0x0940('0x30')][_0x0940('0x33')]?_0x1de325['attributes']:_0x2c66eb[_0x0940('0x34')];_0x1de325['order']=qs[_0x0940('0x35')](_0x12041f[_0x0940('0x2d')][_0x0940('0x35')]);_0x1de325['where']=qs[_0x0940('0x2f')](_[_0x0940('0x37')](_0x12041f[_0x0940('0x2d')],_0x2c66eb[_0x0940('0x2f')]));if(_0x12041f['query']['filter']){_0x1de325[_0x0940('0x36')]=_['merge'](_0x1de325[_0x0940('0x36')],{'$or':_[_0x0940('0x27')](_0x1de325['attributes'],function(_0x2fc3ef){var _0x33c9d5={};_0x33c9d5[_0x2fc3ef]={'$like':'%'+_0x12041f['query']['filter']+'%'};return _0x33c9d5;})});}_0x1de325=_[_0x0940('0x38')]({},_0x1de325,_0x12041f[_0x0940('0x3b')]);return _0xb0db00[_0x0940('0x4a')](_0x1de325);}})[_0x0940('0x21')](function(_0x274e70){if(_0x274e70){_0x1037aa=_0x274e70['length'];if(!_0x12041f[_0x0940('0x2d')][_0x0940('0x4b')](_0x0940('0x4c'))){_0x1de325['limit']=qs['limit'](_0x12041f['query'][_0x0940('0x1c')]);_0x1de325['offset']=qs['offset'](_0x12041f['query'][_0x0940('0x1a')]);}return _0xb0db00[_0x0940('0x4a')](_0x1de325);}})[_0x0940('0x21')](function(_0x559c7d){if(_0x559c7d){return _0x559c7d?{'count':_0x1037aa,'rows':_0x559c7d}:null;}})[_0x0940('0x21')](respondWithResult(_0x4bf558,null))['catch'](handleError(_0x4bf558,null));};exports[_0x0940('0x4d')]=function(_0x2df253,_0x4abbe6,_0x5c9501){if(_0x2df253[_0x0940('0x46')]['id']){delete _0x2df253[_0x0940('0x46')]['id'];}return db['VtigerAccount'][_0x0940('0x48')]({'where':{'id':_0x2df253[_0x0940('0x43')]['id']}})[_0x0940('0x21')](handleEntityNotFound(_0x4abbe6,null))[_0x0940('0x21')](function(_0x21560d){if(_0x21560d){_0x2df253[_0x0940('0x46')][_0x0940('0x4e')]=_0x21560d['id'];_0x2df253['body'][_0x0940('0x4f')]=integrations[_0x0940('0x50')](_0x2df253[_0x0940('0x46')][_0x0940('0x51')],_0x2df253[_0x0940('0x46')][_0x0940('0x2a')]);_0x2df253[_0x0940('0x46')][_0x0940('0x52')]=integrations['getDescriptions'](_0x2df253[_0x0940('0x46')][_0x0940('0x51')],_0x2df253[_0x0940('0x46')][_0x0940('0x2a')]);return db['VtigerConfiguration'][_0x0940('0x45')](_0x2df253[_0x0940('0x46')],{'include':[{'model':db[_0x0940('0x53')],'as':_0x0940('0x4f')},{'model':db[_0x0940('0x53')],'as':_0x0940('0x52')}]});}return null;})[_0x0940('0x21')](respondWithResult(_0x4abbe6,null))[_0x0940('0x41')](handleError(_0x4abbe6,null));};var md5=require('md5');exports[_0x0940('0x54')]=function(_0x2a6742,_0x4080e2,_0xc80277){var _0x42ccb5=null;var _0x2b3d16=null;var _0xd541e0=null;var _0x50d42e=null;var _0x528a9b='';return db[_0x0940('0x28')][_0x0940('0x48')]({'where':{'id':_0x2a6742[_0x0940('0x43')]['id']},'attributes':['id',_0x0940('0x2c'),_0x0940('0x55'),_0x0940('0x56'),_0x0940('0x57'),_0x0940('0x58'),_0x0940('0x59'),_0x0940('0x5a')]})[_0x0940('0x21')](handleEntityNotFound(_0x4080e2,null))[_0x0940('0x21')](function(_0x9874a8){if(_0x9874a8){_0x42ccb5=_0x9874a8[_0x0940('0x55')];_0x2b3d16=_0x9874a8['accessKey'];_0xd541e0=_0x9874a8[_0x0940('0x57')];_0x528a9b=_0x9874a8['remoteUri'];var _0x4d7dbb=_0x528a9b['slice'](-0x1);if(_0x4d7dbb==='/'){_0x528a9b=_0x528a9b[_0x0940('0x5b')](0x0,_0x528a9b['lastIndexOf'](_0x4d7dbb));}_0x50d42e=util[_0x0940('0x5c')](_0x0940('0x5d'),_0x528a9b);var _0x1bf146={'method':_0x0940('0x5e'),'uri':_0x50d42e,'qs':{'operation':_0x0940('0x5f'),'username':_0x9874a8[_0x0940('0x55')]},'json':!![]};return rp(_0x1bf146);}})[_0x0940('0x21')](function(_0x14543a){if(_0x14543a[_0x0940('0x60')]){var _0xb07bb1={'method':_0x0940('0x61'),'uri':_0x50d42e,'form':{'operation':_0x0940('0x62'),'username':_0x42ccb5,'accessKey':md5(_0x14543a[_0x0940('0x63')][_0x0940('0x64')]+_0x2b3d16)},'json':!![]};return rp(_0xb07bb1);}})[_0x0940('0x21')](function(_0x55d20d){if(_0x55d20d['success']){var _0x343631={'method':_0x0940('0x5e'),'uri':_0x50d42e,'qs':{'operation':_0x0940('0x65'),'username':_0x42ccb5,'sessionName':_0x55d20d[_0x0940('0x63')][_0x0940('0x66')],'elementType':_0xd541e0},'json':!![]};return rp(_0x343631);}})[_0x0940('0x21')](function(_0x2ecedd){if(_0x2ecedd[_0x0940('0x60')]){var _0x259cb0=[_0x0940('0x67'),'reference',_0x0940('0x68')];_[_0x0940('0x69')](_0x2ecedd[_0x0940('0x63')][_0x0940('0x32')],function(_0x2fcef6){return _0x259cb0[_0x0940('0x6a')](_0x2fcef6[_0x0940('0x2a')]['name']);});_['remove'](_0x2ecedd[_0x0940('0x63')][_0x0940('0x32')],function(_0x4bcc52){return _0x4bcc52[_0x0940('0x6b')]===_0x0940('0x6c');});return{'count':_0x2ecedd[_0x0940('0x63')][_0x0940('0x32')][_0x0940('0x33')],'rows':_[_0x0940('0x27')](_0x2ecedd[_0x0940('0x63')][_0x0940('0x32')],function(_0x7f57b2){return{'id':_0x7f57b2[_0x0940('0x2c')],'name':_0x7f57b2['label'],'custom':_['startsWith'](_0x7f57b2['name'],_0x0940('0x6d'))?!![]:![],'options':_0x7f57b2[_0x0940('0x2a')][_0x0940('0x2c')]===_0x0940('0x6e')&&_0x7f57b2['type'][_0x0940('0x6f')]['length']>0x0?_[_0x0940('0x27')](_0x7f57b2[_0x0940('0x2a')][_0x0940('0x6f')],function(_0x177749){return{'name':_0x177749[_0x0940('0x70')],'value':_0x177749['value']};}):[]};})};}})[_0x0940('0x21')](respondWithResult(_0x4080e2,null))['catch'](function(_0x18949a){console['log']('vTiger\x20error:\x20'+_0x18949a);var _0x2ed417=_0x2a6742[_0x0940('0x2d')][_0x0940('0x71')]?0x1f4:_0x18949a[_0x0940('0x72')]||0x1f4;logger[_0x0940('0x23')](_0x0940('0x73'),_0x0940('0x54'),_0x2ed417,JSON[_0x0940('0x74')](_0x18949a));delete _0x18949a[_0x0940('0x2c')];if(_0x2ed417===0x191){_0x2ed417=0x190;}_0x4080e2[_0x0940('0x17')](_0x2ed417)['send'](_0x2a6742[_0x0940('0x2d')][_0x0940('0x71')]?{'message':'Wrong\x20credentials','statusCode':_0x18949a[_0x0940('0x72')]}:_0x18949a);});};
\ No newline at end of file
+var _0xde55=['%s/webservice.php','GET','success','login','result','describe','sessionName','reference','owner','remove','includes','editable','picklist','picklistValues','label','value','log','test','statusCode','stringify','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','limit','undefined','count','offset','set','json','apply','save','update','then','error','stack','name','send','map','VtigerAccount','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','findAll','rows','catch','show','params','length','include','find','create','body','destroy','getConfigurations','findOne','options','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','VtigerConfiguration','VtigerField','md5','getFields','username','description','moduleName','remoteUri','serverUrl','accessKey','substring','lastIndexOf'];(function(_0x58cf22,_0x541f42){var _0x4a65b0=function(_0x45c940){while(--_0x45c940){_0x58cf22['push'](_0x58cf22['shift']());}};_0x4a65b0(++_0x541f42);}(_0xde55,0x177));var _0x5de5=function(_0x178178,_0x229a5b){_0x178178=_0x178178-0x0;var _0x23e90a=_0xde55[_0x178178];return _0x23e90a;};'use strict';var emlformat=require(_0x5de5('0x0'));var rimraf=require(_0x5de5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5de5('0x2'));var rp=require(_0x5de5('0x3'));var moment=require(_0x5de5('0x4'));var BPromise=require(_0x5de5('0x5'));var Mustache=require(_0x5de5('0x6'));var util=require(_0x5de5('0x7'));var path=require(_0x5de5('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x5de5('0x9'));var fs=require('fs');var fs_extra=require(_0x5de5('0xa'));var _=require(_0x5de5('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x5de5('0xc'));var deskjs=require(_0x5de5('0xd'));var toCsv=require(_0x5de5('0xe'));var querystring=require(_0x5de5('0xf'));var Papa=require(_0x5de5('0x10'));var Redis=require(_0x5de5('0x11'));var authService=require(_0x5de5('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5de5('0x13'));var logger=require('../../config/logger')(_0x5de5('0x14'));var utils=require(_0x5de5('0x15'));var config=require(_0x5de5('0x16'));var licenseUtil=require(_0x5de5('0x17'));var db=require(_0x5de5('0x18'))['db'];var integrations=require(_0x5de5('0x19'));function respondWithStatusCode(_0x10c272,_0x99ba3b){_0x99ba3b=_0x99ba3b||0xcc;return function(_0x2ccb53){if(_0x2ccb53){return _0x10c272[_0x5de5('0x1a')](_0x99ba3b);}return _0x10c272[_0x5de5('0x1b')](_0x99ba3b)[_0x5de5('0x1c')]();};}function respondWithResult(_0x1c3e7c,_0x427e4f){_0x427e4f=_0x427e4f||0xc8;return function(_0x399a89){if(_0x399a89){return _0x1c3e7c[_0x5de5('0x1b')](_0x427e4f)['json'](_0x399a89);}};}function respondWithFilteredResult(_0x282ed2,_0x4181df){return function(_0x37c69d){if(_0x37c69d){var _0x384676=typeof _0x4181df['offset']==='undefined'&&typeof _0x4181df[_0x5de5('0x1d')]===_0x5de5('0x1e');var _0x117372=_0x37c69d[_0x5de5('0x1f')];var _0x1852a2=_0x384676?0x0:_0x4181df[_0x5de5('0x20')];var _0x348b86=_0x384676?_0x37c69d['count']:_0x4181df[_0x5de5('0x20')]+_0x4181df[_0x5de5('0x1d')];var _0x337a43;if(_0x348b86>=_0x117372){_0x348b86=_0x117372;_0x337a43=0xc8;}else{_0x337a43=0xce;}_0x282ed2[_0x5de5('0x1b')](_0x337a43);return _0x282ed2[_0x5de5('0x21')]('Content-Range',_0x1852a2+'-'+_0x348b86+'/'+_0x117372)[_0x5de5('0x22')](_0x37c69d);}return null;};}function patchUpdates(_0x5ab4ea){return function(_0x163ae8){try{jsonpatch[_0x5de5('0x23')](_0x163ae8,_0x5ab4ea,!![]);}catch(_0x43303c){return BPromise['reject'](_0x43303c);}return _0x163ae8[_0x5de5('0x24')]();};}function saveUpdates(_0x46d031,_0x378bdc){return function(_0x41b5f9){if(_0x41b5f9){return _0x41b5f9[_0x5de5('0x25')](_0x46d031)['then'](function(_0x26aed2){return _0x26aed2;});}return null;};}function removeEntity(_0x13ca4e,_0x5fa7f){return function(_0x54595a){if(_0x54595a){return _0x54595a['destroy']()[_0x5de5('0x26')](function(){_0x13ca4e[_0x5de5('0x1b')](0xcc)[_0x5de5('0x1c')]();});}};}function handleEntityNotFound(_0x473848,_0x25781c){return function(_0x4c3969){if(!_0x4c3969){_0x473848[_0x5de5('0x1a')](0x194);}return _0x4c3969;};}function handleError(_0x1ea628,_0x7aa08f){_0x7aa08f=_0x7aa08f||0x1f4;return function(_0x3af41e){logger[_0x5de5('0x27')](_0x3af41e[_0x5de5('0x28')]);if(_0x3af41e[_0x5de5('0x29')]){delete _0x3af41e['name'];}_0x1ea628['status'](_0x7aa08f)[_0x5de5('0x2a')](_0x3af41e);};}exports['index']=function(_0x417e5b,_0x4385fa){var _0x3ee61e={},_0x487ecb={},_0xa67552={'count':0x0,'rows':[]};var _0x13554b=_[_0x5de5('0x2b')](db[_0x5de5('0x2c')][_0x5de5('0x2d')],function(_0x415662){return{'name':_0x415662[_0x5de5('0x2e')],'type':_0x415662[_0x5de5('0x2f')][_0x5de5('0x30')]};});_0x487ecb['model']=_[_0x5de5('0x2b')](_0x13554b,_0x5de5('0x29'));_0x487ecb[_0x5de5('0x31')]=_[_0x5de5('0x32')](_0x417e5b['query']);_0x487ecb[_0x5de5('0x33')]=_[_0x5de5('0x34')](_0x487ecb[_0x5de5('0x35')],_0x487ecb[_0x5de5('0x31')]);_0x3ee61e[_0x5de5('0x36')]=_['intersection'](_0x487ecb[_0x5de5('0x35')],qs[_0x5de5('0x37')](_0x417e5b[_0x5de5('0x31')][_0x5de5('0x37')]));_0x3ee61e[_0x5de5('0x36')]=_0x3ee61e[_0x5de5('0x36')]['length']?_0x3ee61e[_0x5de5('0x36')]:_0x487ecb[_0x5de5('0x35')];if(!_0x417e5b[_0x5de5('0x31')]['hasOwnProperty'](_0x5de5('0x38'))){_0x3ee61e[_0x5de5('0x1d')]=qs[_0x5de5('0x1d')](_0x417e5b[_0x5de5('0x31')][_0x5de5('0x1d')]);_0x3ee61e['offset']=qs[_0x5de5('0x20')](_0x417e5b[_0x5de5('0x31')][_0x5de5('0x20')]);}_0x3ee61e[_0x5de5('0x39')]=qs[_0x5de5('0x3a')](_0x417e5b['query'][_0x5de5('0x3a')]);_0x3ee61e[_0x5de5('0x3b')]=qs[_0x5de5('0x33')](_[_0x5de5('0x3c')](_0x417e5b[_0x5de5('0x31')],_0x487ecb['filters']),_0x13554b);if(_0x417e5b['query'][_0x5de5('0x3d')]){_0x3ee61e[_0x5de5('0x3b')]=_['merge'](_0x3ee61e[_0x5de5('0x3b')],{'$or':_[_0x5de5('0x2b')](_0x13554b,function(_0x2ad35c){if(_0x2ad35c[_0x5de5('0x2f')]!==_0x5de5('0x3e')){var _0x3cc708={};_0x3cc708[_0x2ad35c['name']]={'$like':'%'+_0x417e5b[_0x5de5('0x31')][_0x5de5('0x3d')]+'%'};return _0x3cc708;}})});}_0x3ee61e=_[_0x5de5('0x3f')]({},_0x3ee61e,_0x417e5b['options']);var _0x39c0fd={'where':_0x3ee61e['where']};return db['VtigerAccount']['count'](_0x39c0fd)[_0x5de5('0x26')](function(_0x4c3edf){_0xa67552[_0x5de5('0x1f')]=_0x4c3edf;if(_0x417e5b[_0x5de5('0x31')][_0x5de5('0x40')]){_0x3ee61e['include']=[{'all':!![]}];}return db['VtigerAccount'][_0x5de5('0x41')](_0x3ee61e);})[_0x5de5('0x26')](function(_0x1042c9){_0xa67552[_0x5de5('0x42')]=_0x1042c9;return _0xa67552;})[_0x5de5('0x26')](respondWithFilteredResult(_0x4385fa,_0x3ee61e))[_0x5de5('0x43')](handleError(_0x4385fa,null));};exports[_0x5de5('0x44')]=function(_0xd55d07,_0x3cb064){var _0x66ba88={'raw':![],'where':{'id':_0xd55d07[_0x5de5('0x45')]['id']}},_0x3d8f2d={};_0x3d8f2d[_0x5de5('0x35')]=_[_0x5de5('0x32')](db[_0x5de5('0x2c')][_0x5de5('0x2d')]);_0x3d8f2d[_0x5de5('0x31')]=_[_0x5de5('0x32')](_0xd55d07['query']);_0x3d8f2d[_0x5de5('0x33')]=_[_0x5de5('0x34')](_0x3d8f2d[_0x5de5('0x35')],_0x3d8f2d[_0x5de5('0x31')]);_0x66ba88['attributes']=_[_0x5de5('0x34')](_0x3d8f2d['model'],qs[_0x5de5('0x37')](_0xd55d07['query'][_0x5de5('0x37')]));_0x66ba88['attributes']=_0x66ba88['attributes'][_0x5de5('0x46')]?_0x66ba88[_0x5de5('0x36')]:_0x3d8f2d[_0x5de5('0x35')];if(_0xd55d07[_0x5de5('0x31')][_0x5de5('0x40')]){_0x66ba88[_0x5de5('0x47')]=[{'all':!![]}];}_0x66ba88=_[_0x5de5('0x3f')]({},_0x66ba88,_0xd55d07['options']);return db[_0x5de5('0x2c')][_0x5de5('0x48')](_0x66ba88)[_0x5de5('0x26')](handleEntityNotFound(_0x3cb064,null))[_0x5de5('0x26')](respondWithResult(_0x3cb064,null))['catch'](handleError(_0x3cb064,null));};exports[_0x5de5('0x49')]=function(_0x21715c,_0x4913ed){return db[_0x5de5('0x2c')][_0x5de5('0x49')](_0x21715c[_0x5de5('0x4a')],{})['then'](respondWithResult(_0x4913ed,0xc9))[_0x5de5('0x43')](handleError(_0x4913ed,null));};exports[_0x5de5('0x25')]=function(_0x59be25,_0x33ed18){if(_0x59be25[_0x5de5('0x4a')]['id']){delete _0x59be25['body']['id'];}return db[_0x5de5('0x2c')][_0x5de5('0x48')]({'where':{'id':_0x59be25[_0x5de5('0x45')]['id']}})[_0x5de5('0x26')](handleEntityNotFound(_0x33ed18,null))[_0x5de5('0x26')](saveUpdates(_0x59be25[_0x5de5('0x4a')],null))['then'](respondWithResult(_0x33ed18,null))[_0x5de5('0x43')](handleError(_0x33ed18,null));};exports[_0x5de5('0x4b')]=function(_0x36b15c,_0x386e18){return db['VtigerAccount'][_0x5de5('0x48')]({'where':{'id':_0x36b15c[_0x5de5('0x45')]['id']}})['then'](handleEntityNotFound(_0x386e18,null))[_0x5de5('0x26')](removeEntity(_0x386e18,null))[_0x5de5('0x43')](handleError(_0x386e18,null));};exports[_0x5de5('0x4c')]=function(_0x29590c,_0x16f2d8,_0x3f722b){var _0x3cfcb1={};var _0x39e093={};var _0x58ffbb;var _0x55c0d4;return db['VtigerAccount'][_0x5de5('0x4d')]({'where':{'id':_0x29590c[_0x5de5('0x45')]['id']}})[_0x5de5('0x26')](handleEntityNotFound(_0x16f2d8,null))['then'](function(_0x20c4ec){if(_0x20c4ec){_0x58ffbb=_0x20c4ec;_0x39e093[_0x5de5('0x35')]=_[_0x5de5('0x32')](db['VtigerConfiguration'][_0x5de5('0x2d')]);_0x39e093[_0x5de5('0x31')]=_[_0x5de5('0x32')](_0x29590c[_0x5de5('0x31')]);_0x39e093[_0x5de5('0x33')]=_['intersection'](_0x39e093['model'],_0x39e093[_0x5de5('0x31')]);_0x3cfcb1[_0x5de5('0x36')]=_[_0x5de5('0x34')](_0x39e093[_0x5de5('0x35')],qs['fields'](_0x29590c['query'][_0x5de5('0x37')]));_0x3cfcb1[_0x5de5('0x36')]=_0x3cfcb1[_0x5de5('0x36')][_0x5de5('0x46')]?_0x3cfcb1[_0x5de5('0x36')]:_0x39e093[_0x5de5('0x35')];_0x3cfcb1[_0x5de5('0x39')]=qs[_0x5de5('0x3a')](_0x29590c[_0x5de5('0x31')][_0x5de5('0x3a')]);_0x3cfcb1['where']=qs['filters'](_['pick'](_0x29590c[_0x5de5('0x31')],_0x39e093[_0x5de5('0x33')]));if(_0x29590c['query'][_0x5de5('0x3d')]){_0x3cfcb1['where']=_[_0x5de5('0x3f')](_0x3cfcb1[_0x5de5('0x3b')],{'$or':_['map'](_0x3cfcb1[_0x5de5('0x36')],function(_0x3a2944){var _0x5c5dc8={};_0x5c5dc8[_0x3a2944]={'$like':'%'+_0x29590c[_0x5de5('0x31')][_0x5de5('0x3d')]+'%'};return _0x5c5dc8;})});}_0x3cfcb1=_[_0x5de5('0x3f')]({},_0x3cfcb1,_0x29590c[_0x5de5('0x4e')]);return _0x58ffbb[_0x5de5('0x4c')](_0x3cfcb1);}})[_0x5de5('0x26')](function(_0x383ab3){if(_0x383ab3){_0x55c0d4=_0x383ab3[_0x5de5('0x46')];if(!_0x29590c[_0x5de5('0x31')]['hasOwnProperty']('nolimit')){_0x3cfcb1[_0x5de5('0x1d')]=qs[_0x5de5('0x1d')](_0x29590c[_0x5de5('0x31')]['limit']);_0x3cfcb1[_0x5de5('0x20')]=qs[_0x5de5('0x20')](_0x29590c[_0x5de5('0x31')][_0x5de5('0x20')]);}return _0x58ffbb[_0x5de5('0x4c')](_0x3cfcb1);}})['then'](function(_0x22a02c){if(_0x22a02c){return _0x22a02c?{'count':_0x55c0d4,'rows':_0x22a02c}:null;}})[_0x5de5('0x26')](respondWithResult(_0x16f2d8,null))[_0x5de5('0x43')](handleError(_0x16f2d8,null));};exports[_0x5de5('0x4f')]=function(_0xec8014,_0x1f3374,_0x4b0112){if(_0xec8014[_0x5de5('0x4a')]['id']){delete _0xec8014[_0x5de5('0x4a')]['id'];}return db[_0x5de5('0x2c')]['findOne']({'where':{'id':_0xec8014['params']['id']}})[_0x5de5('0x26')](handleEntityNotFound(_0x1f3374,null))['then'](function(_0x1578ef){if(_0x1578ef){_0xec8014[_0x5de5('0x4a')][_0x5de5('0x50')]=_0x1578ef['id'];_0xec8014[_0x5de5('0x4a')][_0x5de5('0x51')]=integrations[_0x5de5('0x52')](_0xec8014['body'][_0x5de5('0x53')],_0xec8014[_0x5de5('0x4a')][_0x5de5('0x2f')]);_0xec8014[_0x5de5('0x4a')][_0x5de5('0x54')]=integrations['getDescriptions'](_0xec8014['body']['channel'],_0xec8014['body']['type']);return db[_0x5de5('0x55')][_0x5de5('0x49')](_0xec8014[_0x5de5('0x4a')],{'include':[{'model':db[_0x5de5('0x56')],'as':_0x5de5('0x51')},{'model':db[_0x5de5('0x56')],'as':_0x5de5('0x54')}]});}return null;})[_0x5de5('0x26')](respondWithResult(_0x1f3374,null))['catch'](handleError(_0x1f3374,null));};var md5=require(_0x5de5('0x57'));exports[_0x5de5('0x58')]=function(_0x5d374a,_0x1833d0,_0x5a6146){var _0x5ee307=null;var _0x26645a=null;var _0x3e2842=null;var _0x11bd4f=null;var _0x2d515e='';return db['VtigerAccount'][_0x5de5('0x4d')]({'where':{'id':_0x5d374a['params']['id']},'attributes':['id',_0x5de5('0x29'),_0x5de5('0x59'),_0x5de5('0x5a'),_0x5de5('0x5b'),_0x5de5('0x5c'),_0x5de5('0x5d'),_0x5de5('0x5e')]})['then'](handleEntityNotFound(_0x1833d0,null))[_0x5de5('0x26')](function(_0x493aab){if(_0x493aab){_0x5ee307=_0x493aab[_0x5de5('0x59')];_0x26645a=_0x493aab[_0x5de5('0x5e')];_0x3e2842=_0x493aab['moduleName'];_0x2d515e=_0x493aab[_0x5de5('0x5c')];var _0x4412e1=_0x2d515e['slice'](-0x1);if(_0x4412e1==='/'){_0x2d515e=_0x2d515e[_0x5de5('0x5f')](0x0,_0x2d515e[_0x5de5('0x60')](_0x4412e1));}_0x11bd4f=util['format'](_0x5de5('0x61'),_0x2d515e);var _0x3f1d2f={'method':_0x5de5('0x62'),'uri':_0x11bd4f,'qs':{'operation':'getchallenge','username':_0x493aab[_0x5de5('0x59')]},'json':!![]};return rp(_0x3f1d2f);}})[_0x5de5('0x26')](function(_0x3fa205){if(_0x3fa205[_0x5de5('0x63')]){var _0x495bad={'method':'POST','uri':_0x11bd4f,'form':{'operation':_0x5de5('0x64'),'username':_0x5ee307,'accessKey':md5(_0x3fa205[_0x5de5('0x65')]['token']+_0x26645a)},'json':!![]};return rp(_0x495bad);}})[_0x5de5('0x26')](function(_0x307f8b){if(_0x307f8b[_0x5de5('0x63')]){var _0x27c7cb={'method':_0x5de5('0x62'),'uri':_0x11bd4f,'qs':{'operation':_0x5de5('0x66'),'username':_0x5ee307,'sessionName':_0x307f8b[_0x5de5('0x65')][_0x5de5('0x67')],'elementType':_0x3e2842},'json':!![]};return rp(_0x27c7cb);}})[_0x5de5('0x26')](function(_0x55ef06){if(_0x55ef06[_0x5de5('0x63')]){var _0x147b06=['autogenerated',_0x5de5('0x68'),_0x5de5('0x69')];_[_0x5de5('0x6a')](_0x55ef06[_0x5de5('0x65')][_0x5de5('0x37')],function(_0x34eb3d){return _0x147b06[_0x5de5('0x6b')](_0x34eb3d[_0x5de5('0x2f')]['name']);});_[_0x5de5('0x6a')](_0x55ef06[_0x5de5('0x65')][_0x5de5('0x37')],function(_0x555479){return _0x555479[_0x5de5('0x6c')]==='false';});return{'count':_0x55ef06[_0x5de5('0x65')]['fields'][_0x5de5('0x46')],'rows':_[_0x5de5('0x2b')](_0x55ef06[_0x5de5('0x65')]['fields'],function(_0x365282){return{'id':_0x365282[_0x5de5('0x29')],'name':_0x365282['label'],'custom':_['startsWith'](_0x365282[_0x5de5('0x29')],'cf_')?!![]:![],'options':_0x365282[_0x5de5('0x2f')]['name']===_0x5de5('0x6d')&&_0x365282[_0x5de5('0x2f')][_0x5de5('0x6e')][_0x5de5('0x46')]>0x0?_['map'](_0x365282[_0x5de5('0x2f')][_0x5de5('0x6e')],function(_0x1fc2e0){return{'name':_0x1fc2e0[_0x5de5('0x6f')],'value':_0x1fc2e0[_0x5de5('0x70')]};}):[]};})};}})['then'](respondWithResult(_0x1833d0,null))['catch'](function(_0xc9a5f5){console[_0x5de5('0x71')]('vTiger\x20error:\x20'+_0xc9a5f5);var _0x51c9e7=_0x5d374a[_0x5de5('0x31')][_0x5de5('0x72')]?0x1f4:_0xc9a5f5[_0x5de5('0x73')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x5de5('0x58'),_0x51c9e7,JSON[_0x5de5('0x74')](_0xc9a5f5));delete _0xc9a5f5[_0x5de5('0x29')];if(_0x51c9e7===0x191){_0x51c9e7=0x190;}_0x1833d0['status'](_0x51c9e7)[_0x5de5('0x2a')](_0x5d374a[_0x5de5('0x31')][_0x5de5('0x72')]?{'message':_0x5de5('0x75'),'statusCode':_0xc9a5f5[_0x5de5('0x73')]}:_0xc9a5f5);});};
\ No newline at end of file
index daf6b80..de639c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3411=['define','VtigerAccount','int_vtiger_accounts','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intVtigerAccount.attributes','../../components/integrations/configuration','exports'];(function(_0x582f34,_0x50e8a1){var _0x3cc88b=function(_0xdd559){while(--_0xdd559){_0x582f34['push'](_0x582f34['shift']());}};_0x3cc88b(++_0x50e8a1);}(_0x3411,0x121));var _0x1341=function(_0xeb46ce,_0x3042b3){_0xeb46ce=_0xeb46ce-0x0;var _0x14acda=_0x3411[_0xeb46ce];return _0x14acda;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1341('0x0'))(_0x1341('0x1'));var moment=require(_0x1341('0x2'));var BPromise=require(_0x1341('0x3'));var rp=require(_0x1341('0x4'));var fs=require('fs');var path=require(_0x1341('0x5'));var rimraf=require(_0x1341('0x6'));var config=require('../../config/environment');var attributes=require(_0x1341('0x7'));var integrations=require(_0x1341('0x8'));module[_0x1341('0x9')]=function(_0x2ad44c,_0x4fab4d){return _0x2ad44c[_0x1341('0xa')](_0x1341('0xb'),attributes,{'tableName':_0x1341('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x867f=['../../config/environment','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','define','VtigerAccount','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x867f,0xbc));var _0xf867=function(_0x484cb9,_0x103489){_0x484cb9=_0x484cb9-0x0;var _0x59517e=_0x867f[_0x484cb9];return _0x59517e;};'use strict';var _=require(_0xf867('0x0'));var util=require(_0xf867('0x1'));var logger=require(_0xf867('0x2'))(_0xf867('0x3'));var moment=require(_0xf867('0x4'));var BPromise=require(_0xf867('0x5'));var rp=require(_0xf867('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf867('0x7'));var config=require(_0xf867('0x8'));var attributes=require(_0xf867('0x9'));var integrations=require(_0xf867('0xa'));module[_0xf867('0xb')]=function(_0xce4382,_0x3fc708){return _0xce4382[_0xf867('0xc')](_0xf867('0xd'),attributes,{'tableName':'int_vtiger_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 36cb425..7bea72f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7334=['code','message','request\x20sent','result','GetVtigerAccount','findAll','options','raw','where','attributes','limit','include','map','model','VtigerAccount','find','ShowVtigerAccount','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VtigerAccount,\x20%s,\x20%s','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x7334,0x184));var _0x4733=function(_0x2aa874,_0xf40fa4){_0x2aa874=_0x2aa874-0x0;var _0x4ff621=_0x7334[_0x2aa874];return _0x4ff621;};'use strict';var _=require(_0x4733('0x0'));var util=require(_0x4733('0x1'));var moment=require(_0x4733('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4733('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x4733('0x4'));var logger=require(_0x4733('0x5'))(_0x4733('0x6'));var config=require(_0x4733('0x7'));var jayson=require(_0x4733('0x8'));var client=jayson[_0x4733('0x9')][_0x4733('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x283754,_0x12cafa,_0x43d95c){return new BPromise(function(_0x8257cf,_0x3562b7){return client[_0x4733('0xb')](_0x283754,_0x43d95c)[_0x4733('0xc')](function(_0x2d5fde){logger[_0x4733('0xd')](_0x4733('0xe'),_0x12cafa,'request\x20sent');logger[_0x4733('0xf')](_0x4733('0x10'),_0x12cafa,'request\x20sent',JSON[_0x4733('0x11')](_0x2d5fde));if(_0x2d5fde['error']){if(_0x2d5fde[_0x4733('0x12')][_0x4733('0x13')]===0x1f4){logger[_0x4733('0x12')](_0x4733('0xe'),_0x12cafa,_0x2d5fde[_0x4733('0x12')][_0x4733('0x14')]);return _0x3562b7(_0x2d5fde[_0x4733('0x12')]['message']);}logger[_0x4733('0x12')]('VtigerAccount,\x20%s,\x20%s',_0x12cafa,_0x2d5fde[_0x4733('0x12')][_0x4733('0x14')]);return _0x8257cf(_0x2d5fde[_0x4733('0x12')][_0x4733('0x14')]);}else{logger[_0x4733('0xd')](_0x4733('0xe'),_0x12cafa,_0x4733('0x15'));_0x8257cf(_0x2d5fde[_0x4733('0x16')][_0x4733('0x14')]);}})['catch'](function(_0x2c0031){logger[_0x4733('0x12')]('VtigerAccount,\x20%s,\x20%s',_0x12cafa,_0x2c0031);_0x3562b7(_0x2c0031);});});}exports[_0x4733('0x17')]=function(_0x1d2fb6){var _0x2aa223=this;return new Promise(function(_0x384e0c,_0x579f67){return db['VtigerAccount'][_0x4733('0x18')]({'raw':_0x1d2fb6[_0x4733('0x19')]?_0x1d2fb6['options'][_0x4733('0x1a')]===undefined?!![]:![]:!![],'where':_0x1d2fb6[_0x4733('0x19')]?_0x1d2fb6[_0x4733('0x19')][_0x4733('0x1b')]||null:null,'attributes':_0x1d2fb6['options']?_0x1d2fb6[_0x4733('0x19')][_0x4733('0x1c')]||null:null,'limit':_0x1d2fb6['options']?_0x1d2fb6[_0x4733('0x19')][_0x4733('0x1d')]||null:null,'include':_0x1d2fb6['options']?_0x1d2fb6[_0x4733('0x19')][_0x4733('0x1e')]?_[_0x4733('0x1f')](_0x1d2fb6[_0x4733('0x19')][_0x4733('0x1e')],function(_0x24db74){return{'model':db[_0x24db74[_0x4733('0x20')]],'as':_0x24db74['as'],'attributes':_0x24db74[_0x4733('0x1c')],'include':_0x24db74['include']?_[_0x4733('0x1f')](_0x24db74[_0x4733('0x1e')],function(_0x7884e5){return{'model':db[_0x7884e5[_0x4733('0x20')]],'as':_0x7884e5['as'],'attributes':_0x7884e5[_0x4733('0x1c')],'include':_0x7884e5[_0x4733('0x1e')]?_[_0x4733('0x1f')](_0x7884e5[_0x4733('0x1e')],function(_0x13bc12){return{'model':db[_0x13bc12[_0x4733('0x20')]],'as':_0x13bc12['as'],'attributes':_0x13bc12['attributes']};}):[]};}):[]};}):[]:[]})[_0x4733('0xc')](function(_0x4c91bc){logger['info'](_0x4733('0x17'),_0x1d2fb6);logger['debug'](_0x4733('0x17'),_0x1d2fb6,JSON['stringify'](_0x4c91bc));_0x384e0c(_0x4c91bc);})['catch'](function(_0x517c73){logger[_0x4733('0x12')](_0x4733('0x17'),_0x517c73[_0x4733('0x14')],_0x1d2fb6);_0x579f67(_0x2aa223[_0x4733('0x12')](0x1f4,_0x517c73['message']));});});};exports['ShowVtigerAccount']=function(_0x50f67e){var _0x2b2757=this;return new Promise(function(_0x56872b,_0x5a4814){return db[_0x4733('0x21')][_0x4733('0x22')]({'raw':_0x50f67e[_0x4733('0x19')]?_0x50f67e['options']['raw']===undefined?!![]:![]:!![],'where':_0x50f67e[_0x4733('0x19')]?_0x50f67e[_0x4733('0x19')][_0x4733('0x1b')]||null:null,'attributes':_0x50f67e[_0x4733('0x19')]?_0x50f67e[_0x4733('0x19')]['attributes']||null:null,'include':_0x50f67e[_0x4733('0x19')]?_0x50f67e[_0x4733('0x19')][_0x4733('0x1e')]?_[_0x4733('0x1f')](_0x50f67e[_0x4733('0x19')]['include'],function(_0x570bc6){return{'model':db[_0x570bc6[_0x4733('0x20')]],'as':_0x570bc6['as'],'attributes':_0x570bc6[_0x4733('0x1c')],'include':_0x570bc6[_0x4733('0x1e')]?_[_0x4733('0x1f')](_0x570bc6[_0x4733('0x1e')],function(_0x5e31c8){return{'model':db[_0x5e31c8[_0x4733('0x20')]],'as':_0x5e31c8['as'],'attributes':_0x5e31c8[_0x4733('0x1c')],'include':_0x5e31c8[_0x4733('0x1e')]?_['map'](_0x5e31c8[_0x4733('0x1e')],function(_0x10a5e9){return{'model':db[_0x10a5e9[_0x4733('0x20')]],'as':_0x10a5e9['as'],'attributes':_0x10a5e9[_0x4733('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x4733('0xc')](function(_0x311c1d){logger[_0x4733('0xd')](_0x4733('0x23'),_0x50f67e);logger['debug'](_0x4733('0x23'),_0x50f67e,JSON['stringify'](_0x311c1d));_0x56872b(_0x311c1d);})[_0x4733('0x24')](function(_0x29db03){logger[_0x4733('0x12')](_0x4733('0x23'),_0x29db03[_0x4733('0x14')],_0x50f67e);_0x5a4814(_0x2b2757[_0x4733('0x12')](0x1f4,_0x29db03[_0x4733('0x14')]));});});};
\ No newline at end of file
+var _0xe1e3=['result','GetVtigerAccount','options','raw','where','attributes','limit','include','model','map','debug','catch','find','ShowVtigerAccount','lodash','util','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','VtigerAccount,\x20%s,\x20%s','message','info'];(function(_0x29decf,_0x443f28){var _0x59f165=function(_0x552aae){while(--_0x552aae){_0x29decf['push'](_0x29decf['shift']());}};_0x59f165(++_0x443f28);}(_0xe1e3,0x1bb));var _0x3e1e=function(_0xf946d7,_0xf3aa1c){_0xf946d7=_0xf946d7-0x0;var _0x84e97d=_0xe1e3[_0xf946d7];return _0x84e97d;};'use strict';var _=require(_0x3e1e('0x0'));var util=require(_0x3e1e('0x1'));var moment=require('moment');var BPromise=require(_0x3e1e('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3e1e('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x3e1e('0x4'))(_0x3e1e('0x5'));var config=require(_0x3e1e('0x6'));var jayson=require(_0x3e1e('0x7'));var client=jayson[_0x3e1e('0x8')][_0x3e1e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x55cfba,_0x1574e5,_0x13926d){return new BPromise(function(_0x2f0e12,_0xa67e35){return client[_0x3e1e('0xa')](_0x55cfba,_0x13926d)[_0x3e1e('0xb')](function(_0x5e7d1f){logger['info']('VtigerAccount,\x20%s,\x20%s',_0x1574e5,_0x3e1e('0xc'));logger['debug'](_0x3e1e('0xd'),_0x1574e5,_0x3e1e('0xc'),JSON[_0x3e1e('0xe')](_0x5e7d1f));if(_0x5e7d1f['error']){if(_0x5e7d1f[_0x3e1e('0xf')]['code']===0x1f4){logger['error']('VtigerAccount,\x20%s,\x20%s',_0x1574e5,_0x5e7d1f['error']['message']);return _0xa67e35(_0x5e7d1f[_0x3e1e('0xf')]['message']);}logger['error'](_0x3e1e('0x10'),_0x1574e5,_0x5e7d1f[_0x3e1e('0xf')][_0x3e1e('0x11')]);return _0x2f0e12(_0x5e7d1f['error']['message']);}else{logger[_0x3e1e('0x12')](_0x3e1e('0x10'),_0x1574e5,'request\x20sent');_0x2f0e12(_0x5e7d1f[_0x3e1e('0x13')][_0x3e1e('0x11')]);}})['catch'](function(_0x11c07f){logger['error'](_0x3e1e('0x10'),_0x1574e5,_0x11c07f);_0xa67e35(_0x11c07f);});});}exports[_0x3e1e('0x14')]=function(_0x1d786c){var _0x39eaa7=this;return new Promise(function(_0x791ed8,_0x1c181b){return db['VtigerAccount']['findAll']({'raw':_0x1d786c['options']?_0x1d786c[_0x3e1e('0x15')][_0x3e1e('0x16')]===undefined?!![]:![]:!![],'where':_0x1d786c[_0x3e1e('0x15')]?_0x1d786c['options'][_0x3e1e('0x17')]||null:null,'attributes':_0x1d786c['options']?_0x1d786c[_0x3e1e('0x15')][_0x3e1e('0x18')]||null:null,'limit':_0x1d786c[_0x3e1e('0x15')]?_0x1d786c['options'][_0x3e1e('0x19')]||null:null,'include':_0x1d786c[_0x3e1e('0x15')]?_0x1d786c[_0x3e1e('0x15')]['include']?_['map'](_0x1d786c[_0x3e1e('0x15')][_0x3e1e('0x1a')],function(_0x488f9f){return{'model':db[_0x488f9f[_0x3e1e('0x1b')]],'as':_0x488f9f['as'],'attributes':_0x488f9f[_0x3e1e('0x18')],'include':_0x488f9f[_0x3e1e('0x1a')]?_[_0x3e1e('0x1c')](_0x488f9f[_0x3e1e('0x1a')],function(_0x159212){return{'model':db[_0x159212[_0x3e1e('0x1b')]],'as':_0x159212['as'],'attributes':_0x159212[_0x3e1e('0x18')],'include':_0x159212['include']?_['map'](_0x159212[_0x3e1e('0x1a')],function(_0x541ef1){return{'model':db[_0x541ef1['model']],'as':_0x541ef1['as'],'attributes':_0x541ef1['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1a33bb){logger[_0x3e1e('0x12')]('GetVtigerAccount',_0x1d786c);logger[_0x3e1e('0x1d')]('GetVtigerAccount',_0x1d786c,JSON[_0x3e1e('0xe')](_0x1a33bb));_0x791ed8(_0x1a33bb);})[_0x3e1e('0x1e')](function(_0x53a6ff){logger[_0x3e1e('0xf')](_0x3e1e('0x14'),_0x53a6ff[_0x3e1e('0x11')],_0x1d786c);_0x1c181b(_0x39eaa7['error'](0x1f4,_0x53a6ff[_0x3e1e('0x11')]));});});};exports['ShowVtigerAccount']=function(_0x591c36){var _0x494c75=this;return new Promise(function(_0x39da8d,_0x5b8f95){return db['VtigerAccount'][_0x3e1e('0x1f')]({'raw':_0x591c36[_0x3e1e('0x15')]?_0x591c36[_0x3e1e('0x15')][_0x3e1e('0x16')]===undefined?!![]:![]:!![],'where':_0x591c36[_0x3e1e('0x15')]?_0x591c36['options']['where']||null:null,'attributes':_0x591c36['options']?_0x591c36['options'][_0x3e1e('0x18')]||null:null,'include':_0x591c36[_0x3e1e('0x15')]?_0x591c36[_0x3e1e('0x15')][_0x3e1e('0x1a')]?_[_0x3e1e('0x1c')](_0x591c36[_0x3e1e('0x15')][_0x3e1e('0x1a')],function(_0x431bd5){return{'model':db[_0x431bd5['model']],'as':_0x431bd5['as'],'attributes':_0x431bd5[_0x3e1e('0x18')],'include':_0x431bd5[_0x3e1e('0x1a')]?_['map'](_0x431bd5[_0x3e1e('0x1a')],function(_0x3f4ef3){return{'model':db[_0x3f4ef3[_0x3e1e('0x1b')]],'as':_0x3f4ef3['as'],'attributes':_0x3f4ef3[_0x3e1e('0x18')],'include':_0x3f4ef3['include']?_['map'](_0x3f4ef3[_0x3e1e('0x1a')],function(_0x332f1e){return{'model':db[_0x332f1e['model']],'as':_0x332f1e['as'],'attributes':_0x332f1e[_0x3e1e('0x18')]};}):[]};}):[]};}):[]:[]})[_0x3e1e('0xb')](function(_0x4e9acd){logger[_0x3e1e('0x12')](_0x3e1e('0x20'),_0x591c36);logger[_0x3e1e('0x1d')](_0x3e1e('0x20'),_0x591c36,JSON[_0x3e1e('0xe')](_0x4e9acd));_0x39da8d(_0x4e9acd);})['catch'](function(_0x1da527){logger[_0x3e1e('0xf')](_0x3e1e('0x20'),_0x1da527[_0x3e1e('0x11')],_0x591c36);_0x5b8f95(_0x494c75['error'](0x1f4,_0x1da527[_0x3e1e('0x11')]));});});};
\ No newline at end of file
index c691477..87fe4b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9189=['delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','get','/:id','isAuthenticated','/:id/fields','getFields','getSubjects','getDescriptions','post','create','put'];(function(_0x1c3dcd,_0x242958){var _0x2d5a9e=function(_0x2b2b5a){while(--_0x2b2b5a){_0x1c3dcd['push'](_0x1c3dcd['shift']());}};_0x2d5a9e(++_0x242958);}(_0x9189,0x163));var _0x9918=function(_0x75a182,_0xf96dfc){_0x75a182=_0x75a182-0x0;var _0x419689=_0x9189[_0x75a182];return _0x419689;};'use strict';var multer=require('multer');var util=require(_0x9918('0x0'));var path=require(_0x9918('0x1'));var timeout=require(_0x9918('0x2'));var express=require('express');var router=express[_0x9918('0x3')]();var fs_extra=require(_0x9918('0x4'));var auth=require(_0x9918('0x5'));var interaction=require(_0x9918('0x6'));var config=require(_0x9918('0x7'));var controller=require(_0x9918('0x8'));router[_0x9918('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x9918('0x9')](_0x9918('0xa'),auth[_0x9918('0xb')](),controller['show']);router['get'](_0x9918('0xc'),auth[_0x9918('0xb')](),controller[_0x9918('0xd')]);router[_0x9918('0x9')]('/:id/subjects',auth['isAuthenticated'](),controller[_0x9918('0xe')]);router[_0x9918('0x9')]('/:id/descriptions',auth['isAuthenticated'](),controller[_0x9918('0xf')]);router[_0x9918('0x10')]('/',auth[_0x9918('0xb')](),controller[_0x9918('0x11')]);router[_0x9918('0x12')]('/:id',auth[_0x9918('0xb')](),controller['update']);router[_0x9918('0x13')](_0x9918('0xa'),auth[_0x9918('0xb')](),controller[_0x9918('0x14')]);module[_0x9918('0x15')]=router;
\ No newline at end of file
+var _0x3aa5=['post','create','put','/:id','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated','index','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x3aa5,0x9c));var _0x53aa=function(_0x4c11c9,_0x3aef22){_0x4c11c9=_0x4c11c9-0x0;var _0x3c0288=_0x3aa5[_0x4c11c9];return _0x3c0288;};'use strict';var multer=require(_0x53aa('0x0'));var util=require(_0x53aa('0x1'));var path=require(_0x53aa('0x2'));var timeout=require(_0x53aa('0x3'));var express=require(_0x53aa('0x4'));var router=express[_0x53aa('0x5')]();var fs_extra=require(_0x53aa('0x6'));var auth=require(_0x53aa('0x7'));var interaction=require(_0x53aa('0x8'));var config=require(_0x53aa('0x9'));var controller=require(_0x53aa('0xa'));router[_0x53aa('0xb')]('/',auth[_0x53aa('0xc')](),controller[_0x53aa('0xd')]);router['get']('/:id',auth[_0x53aa('0xc')](),controller['show']);router[_0x53aa('0xb')]('/:id/fields',auth[_0x53aa('0xc')](),controller[_0x53aa('0xe')]);router[_0x53aa('0xb')](_0x53aa('0xf'),auth[_0x53aa('0xc')](),controller[_0x53aa('0x10')]);router[_0x53aa('0xb')](_0x53aa('0x11'),auth[_0x53aa('0xc')](),controller[_0x53aa('0x12')]);router[_0x53aa('0x13')]('/',auth[_0x53aa('0xc')](),controller[_0x53aa('0x14')]);router[_0x53aa('0x15')](_0x53aa('0x16'),auth[_0x53aa('0xc')](),controller[_0x53aa('0x17')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x53aa('0x18')]=router;
\ No newline at end of file
index 4a36993..bb526ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7237=['STRING','sequelize'];(function(_0x217779,_0x33aceb){var _0x4f0bf3=function(_0x4814dd){while(--_0x4814dd){_0x217779['push'](_0x217779['shift']());}};_0x4f0bf3(++_0x33aceb);}(_0x7237,0x185));var _0x7723=function(_0x2a3e74,_0x33f889){_0x2a3e74=_0x2a3e74-0x0;var _0xa054b=_0x7237[_0x2a3e74];return _0xa054b;};'use strict';var Sequelize=require(_0x7723('0x0'));module['exports']={'name':{'type':Sequelize[_0x7723('0x1')]},'description':{'type':Sequelize[_0x7723('0x1')]}};
\ No newline at end of file
+var _0x8f51=['sequelize','STRING'];(function(_0x321d5c,_0x433c09){var _0xbdc7ae=function(_0xcff5ff){while(--_0xcff5ff){_0x321d5c['push'](_0x321d5c['shift']());}};_0xbdc7ae(++_0x433c09);}(_0x8f51,0x1a6));var _0x18f5=function(_0x1e4a8e,_0x18022b){_0x1e4a8e=_0x1e4a8e-0x0;var _0x5408f9=_0x8f51[_0x1e4a8e];return _0x5408f9;};'use strict';var Sequelize=require(_0x18f5('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x18f5('0x1')]}};
\ No newline at end of file
index 4a6017e..d55ce6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b02=['fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','destroy','then','status','error','name','send','index','map','VtigerConfiguration','rawAttributes','fieldName','type','model','query','keys','intersection','fields','length','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','create','body','find','params','getFields','filter','findOne','VtigerField','getSubjects','getDescriptions','eml-format','zip-dir'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x3b02,0x1d2));var _0x23b0=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0x3b02[_0x47a7d0];return _0xb9bd08;};'use strict';var emlformat=require(_0x23b0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x23b0('0x1'));var jsonpatch=require(_0x23b0('0x2'));var rp=require(_0x23b0('0x3'));var moment=require(_0x23b0('0x4'));var BPromise=require(_0x23b0('0x5'));var Mustache=require(_0x23b0('0x6'));var util=require(_0x23b0('0x7'));var path=require('path');var sox=require(_0x23b0('0x8'));var csv=require(_0x23b0('0x9'));var ejs=require(_0x23b0('0xa'));var fs=require('fs');var fs_extra=require(_0x23b0('0xb'));var _=require(_0x23b0('0xc'));var squel=require('squel');var crypto=require(_0x23b0('0xd'));var jsforce=require(_0x23b0('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x23b0('0x9'));var querystring=require(_0x23b0('0xf'));var Papa=require(_0x23b0('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x23b0('0x11'));var hardwareService=require(_0x23b0('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x23b0('0x13'));var config=require(_0x23b0('0x14'));var licenseUtil=require(_0x23b0('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x448128,_0x37383a){_0x37383a=_0x37383a||0xcc;return function(_0xa30a08){if(_0xa30a08){return _0x448128[_0x23b0('0x16')](_0x37383a);}return _0x448128['status'](_0x37383a)[_0x23b0('0x17')]();};}function respondWithResult(_0x2895c4,_0x565f07){_0x565f07=_0x565f07||0xc8;return function(_0x126978){if(_0x126978){return _0x2895c4['status'](_0x565f07)[_0x23b0('0x18')](_0x126978);}};}function respondWithFilteredResult(_0x380875,_0x23e4d8){return function(_0x240103){if(_0x240103){var _0x1a6614=typeof _0x23e4d8[_0x23b0('0x19')]===_0x23b0('0x1a')&&typeof _0x23e4d8[_0x23b0('0x1b')]===_0x23b0('0x1a');var _0x55dbd8=_0x240103[_0x23b0('0x1c')];var _0x3c702a=_0x1a6614?0x0:_0x23e4d8[_0x23b0('0x19')];var _0x4c76d4=_0x1a6614?_0x240103[_0x23b0('0x1c')]:_0x23e4d8['offset']+_0x23e4d8[_0x23b0('0x1b')];var _0x4fcb85;if(_0x4c76d4>=_0x55dbd8){_0x4c76d4=_0x55dbd8;_0x4fcb85=0xc8;}else{_0x4fcb85=0xce;}_0x380875['status'](_0x4fcb85);return _0x380875[_0x23b0('0x1d')](_0x23b0('0x1e'),_0x3c702a+'-'+_0x4c76d4+'/'+_0x55dbd8)['json'](_0x240103);}return null;};}function patchUpdates(_0x213ec5){return function(_0xdc4492){try{jsonpatch[_0x23b0('0x1f')](_0xdc4492,_0x213ec5,!![]);}catch(_0x55dbd1){return BPromise['reject'](_0x55dbd1);}return _0xdc4492['save']();};}function saveUpdates(_0x53e4ed,_0x13dc16){return function(_0x49a963){if(_0x49a963){return _0x49a963[_0x23b0('0x20')](_0x53e4ed)['then'](function(_0x374b50){return _0x374b50;});}return null;};}function removeEntity(_0x34e560,_0x14be2c){return function(_0x43f73e){if(_0x43f73e){return _0x43f73e[_0x23b0('0x21')]()[_0x23b0('0x22')](function(){_0x34e560[_0x23b0('0x23')](0xcc)['end']();});}};}function handleEntityNotFound(_0x43ecc9,_0x28311){return function(_0x4aae74){if(!_0x4aae74){_0x43ecc9[_0x23b0('0x16')](0x194);}return _0x4aae74;};}function handleError(_0x113e37,_0x460607){_0x460607=_0x460607||0x1f4;return function(_0x3bcfb6){logger[_0x23b0('0x24')](_0x3bcfb6['stack']);if(_0x3bcfb6['name']){delete _0x3bcfb6[_0x23b0('0x25')];}_0x113e37[_0x23b0('0x23')](_0x460607)[_0x23b0('0x26')](_0x3bcfb6);};}exports[_0x23b0('0x27')]=function(_0x17e21d,_0xc3d0b8){var _0x144410={},_0x15e182={},_0x39bd78={'count':0x0,'rows':[]};var _0x115642=_[_0x23b0('0x28')](db[_0x23b0('0x29')][_0x23b0('0x2a')],function(_0x27d403){return{'name':_0x27d403[_0x23b0('0x2b')],'type':_0x27d403[_0x23b0('0x2c')]['key']};});_0x15e182[_0x23b0('0x2d')]=_['map'](_0x115642,_0x23b0('0x25'));_0x15e182[_0x23b0('0x2e')]=_[_0x23b0('0x2f')](_0x17e21d['query']);_0x15e182['filters']=_['intersection'](_0x15e182['model'],_0x15e182[_0x23b0('0x2e')]);_0x144410['attributes']=_[_0x23b0('0x30')](_0x15e182[_0x23b0('0x2d')],qs['fields'](_0x17e21d[_0x23b0('0x2e')][_0x23b0('0x31')]));_0x144410['attributes']=_0x144410['attributes'][_0x23b0('0x32')]?_0x144410[_0x23b0('0x33')]:_0x15e182[_0x23b0('0x2d')];if(!_0x17e21d['query'][_0x23b0('0x34')](_0x23b0('0x35'))){_0x144410[_0x23b0('0x1b')]=qs['limit'](_0x17e21d[_0x23b0('0x2e')][_0x23b0('0x1b')]);_0x144410[_0x23b0('0x19')]=qs[_0x23b0('0x19')](_0x17e21d[_0x23b0('0x2e')]['offset']);}_0x144410[_0x23b0('0x36')]=qs[_0x23b0('0x37')](_0x17e21d[_0x23b0('0x2e')]['sort']);_0x144410[_0x23b0('0x38')]=qs[_0x23b0('0x39')](_[_0x23b0('0x3a')](_0x17e21d[_0x23b0('0x2e')],_0x15e182[_0x23b0('0x39')]),_0x115642);if(_0x17e21d['query']['filter']){_0x144410['where']=_[_0x23b0('0x3b')](_0x144410[_0x23b0('0x38')],{'$or':_[_0x23b0('0x28')](_0x115642,function(_0xec8731){if(_0xec8731[_0x23b0('0x2c')]!==_0x23b0('0x3c')){var _0x3cb426={};_0x3cb426[_0xec8731['name']]={'$like':'%'+_0x17e21d[_0x23b0('0x2e')]['filter']+'%'};return _0x3cb426;}})});}_0x144410=_[_0x23b0('0x3b')]({},_0x144410,_0x17e21d[_0x23b0('0x3d')]);var _0xa9cfcb={'where':_0x144410[_0x23b0('0x38')]};return db[_0x23b0('0x29')][_0x23b0('0x1c')](_0xa9cfcb)[_0x23b0('0x22')](function(_0x243b20){_0x39bd78['count']=_0x243b20;if(_0x17e21d[_0x23b0('0x2e')][_0x23b0('0x3e')]){_0x144410[_0x23b0('0x3f')]=[{'all':!![]}];}return db[_0x23b0('0x29')][_0x23b0('0x40')](_0x144410);})[_0x23b0('0x22')](function(_0x2a5328){_0x39bd78[_0x23b0('0x41')]=_0x2a5328;return _0x39bd78;})['then'](respondWithFilteredResult(_0xc3d0b8,_0x144410))[_0x23b0('0x42')](handleError(_0xc3d0b8,null));};exports[_0x23b0('0x43')]=function(_0x156306,_0x5e969c){var _0x295e3b={'raw':![],'where':{'id':_0x156306['params']['id']}},_0x5d1bb2={};_0x5d1bb2['model']=_[_0x23b0('0x2f')](db['VtigerConfiguration'][_0x23b0('0x2a')]);_0x5d1bb2[_0x23b0('0x2e')]=_['keys'](_0x156306[_0x23b0('0x2e')]);_0x5d1bb2['filters']=_[_0x23b0('0x30')](_0x5d1bb2[_0x23b0('0x2d')],_0x5d1bb2[_0x23b0('0x2e')]);_0x295e3b['attributes']=_[_0x23b0('0x30')](_0x5d1bb2[_0x23b0('0x2d')],qs[_0x23b0('0x31')](_0x156306['query'][_0x23b0('0x31')]));_0x295e3b[_0x23b0('0x33')]=_0x295e3b['attributes'][_0x23b0('0x32')]?_0x295e3b[_0x23b0('0x33')]:_0x5d1bb2[_0x23b0('0x2d')];if(_0x156306[_0x23b0('0x2e')]['includeAll']){_0x295e3b[_0x23b0('0x3f')]=[{'all':!![]}];}_0x295e3b=_[_0x23b0('0x3b')]({},_0x295e3b,_0x156306[_0x23b0('0x3d')]);return db[_0x23b0('0x29')]['find'](_0x295e3b)[_0x23b0('0x22')](handleEntityNotFound(_0x5e969c,null))[_0x23b0('0x22')](respondWithResult(_0x5e969c,null))[_0x23b0('0x42')](handleError(_0x5e969c,null));};exports['create']=function(_0x49f915,_0x18775d){return db[_0x23b0('0x29')][_0x23b0('0x44')](_0x49f915[_0x23b0('0x45')],{})['then'](respondWithResult(_0x18775d,0xc9))[_0x23b0('0x42')](handleError(_0x18775d,null));};exports[_0x23b0('0x20')]=function(_0x488b22,_0x397c63){if(_0x488b22[_0x23b0('0x45')]['id']){delete _0x488b22[_0x23b0('0x45')]['id'];}return db['VtigerConfiguration'][_0x23b0('0x46')]({'where':{'id':_0x488b22[_0x23b0('0x47')]['id']}})['then'](handleEntityNotFound(_0x397c63,null))[_0x23b0('0x22')](saveUpdates(_0x488b22[_0x23b0('0x45')],null))[_0x23b0('0x22')](respondWithResult(_0x397c63,null))['catch'](handleError(_0x397c63,null));};exports['destroy']=function(_0x26afa4,_0xe4b300){return db[_0x23b0('0x29')]['find']({'where':{'id':_0x26afa4[_0x23b0('0x47')]['id']}})[_0x23b0('0x22')](handleEntityNotFound(_0xe4b300,null))[_0x23b0('0x22')](removeEntity(_0xe4b300,null))[_0x23b0('0x42')](handleError(_0xe4b300,null));};exports[_0x23b0('0x48')]=function(_0x3e0458,_0x7bf499,_0x5840e6){var _0x58ff6a={};var _0x448e51={};var _0x2cd30c;var _0x464440;return db[_0x23b0('0x29')]['findOne']({'where':{'id':_0x3e0458['params']['id']}})[_0x23b0('0x22')](handleEntityNotFound(_0x7bf499,null))[_0x23b0('0x22')](function(_0x110fcf){if(_0x110fcf){_0x2cd30c=_0x110fcf;_0x448e51[_0x23b0('0x2d')]=_[_0x23b0('0x2f')](db['VtigerField'][_0x23b0('0x2a')]);_0x448e51[_0x23b0('0x2e')]=_[_0x23b0('0x2f')](_0x3e0458[_0x23b0('0x2e')]);_0x448e51[_0x23b0('0x39')]=_[_0x23b0('0x30')](_0x448e51[_0x23b0('0x2d')],_0x448e51[_0x23b0('0x2e')]);_0x58ff6a[_0x23b0('0x33')]=_[_0x23b0('0x30')](_0x448e51['model'],qs['fields'](_0x3e0458['query'][_0x23b0('0x31')]));_0x58ff6a['attributes']=_0x58ff6a[_0x23b0('0x33')][_0x23b0('0x32')]?_0x58ff6a[_0x23b0('0x33')]:_0x448e51[_0x23b0('0x2d')];_0x58ff6a[_0x23b0('0x36')]=qs['sort'](_0x3e0458[_0x23b0('0x2e')][_0x23b0('0x37')]);_0x58ff6a[_0x23b0('0x38')]=qs['filters'](_[_0x23b0('0x3a')](_0x3e0458['query'],_0x448e51[_0x23b0('0x39')]));if(_0x3e0458['query'][_0x23b0('0x49')]){_0x58ff6a['where']=_[_0x23b0('0x3b')](_0x58ff6a[_0x23b0('0x38')],{'$or':_[_0x23b0('0x28')](_0x58ff6a['attributes'],function(_0x16dc52){var _0x1b04b8={};_0x1b04b8[_0x16dc52]={'$like':'%'+_0x3e0458[_0x23b0('0x2e')][_0x23b0('0x49')]+'%'};return _0x1b04b8;})});}_0x58ff6a=_['merge']({},_0x58ff6a,_0x3e0458[_0x23b0('0x3d')]);return _0x2cd30c[_0x23b0('0x48')](_0x58ff6a);}})[_0x23b0('0x22')](function(_0x532ed0){if(_0x532ed0){_0x464440=_0x532ed0[_0x23b0('0x32')];if(!_0x3e0458['query'][_0x23b0('0x34')](_0x23b0('0x35'))){_0x58ff6a['limit']=qs[_0x23b0('0x1b')](_0x3e0458['query'][_0x23b0('0x1b')]);_0x58ff6a[_0x23b0('0x19')]=qs[_0x23b0('0x19')](_0x3e0458[_0x23b0('0x2e')][_0x23b0('0x19')]);}return _0x2cd30c['getFields'](_0x58ff6a);}})[_0x23b0('0x22')](function(_0x15adab){if(_0x15adab){return _0x15adab?{'count':_0x464440,'rows':_0x15adab}:null;}})[_0x23b0('0x22')](respondWithResult(_0x7bf499,null))['catch'](handleError(_0x7bf499,null));};exports['getSubjects']=function(_0x1cb060,_0x512ab6,_0x61eec8){var _0x38c5a1={};var _0x115326={};var _0x3cad04;var _0x29bf70;return db[_0x23b0('0x29')][_0x23b0('0x4a')]({'where':{'id':_0x1cb060[_0x23b0('0x47')]['id']}})[_0x23b0('0x22')](handleEntityNotFound(_0x512ab6,null))['then'](function(_0x164dcd){if(_0x164dcd){_0x3cad04=_0x164dcd;_0x115326[_0x23b0('0x2d')]=_[_0x23b0('0x2f')](db[_0x23b0('0x4b')][_0x23b0('0x2a')]);_0x115326[_0x23b0('0x2e')]=_['keys'](_0x1cb060[_0x23b0('0x2e')]);_0x115326[_0x23b0('0x39')]=_[_0x23b0('0x30')](_0x115326[_0x23b0('0x2d')],_0x115326[_0x23b0('0x2e')]);_0x38c5a1['attributes']=_[_0x23b0('0x30')](_0x115326[_0x23b0('0x2d')],qs[_0x23b0('0x31')](_0x1cb060[_0x23b0('0x2e')][_0x23b0('0x31')]));_0x38c5a1[_0x23b0('0x33')]=_0x38c5a1[_0x23b0('0x33')][_0x23b0('0x32')]?_0x38c5a1[_0x23b0('0x33')]:_0x115326['model'];_0x38c5a1[_0x23b0('0x36')]=qs[_0x23b0('0x37')](_0x1cb060[_0x23b0('0x2e')][_0x23b0('0x37')]);_0x38c5a1[_0x23b0('0x38')]=qs[_0x23b0('0x39')](_['pick'](_0x1cb060[_0x23b0('0x2e')],_0x115326['filters']));if(_0x1cb060['query'][_0x23b0('0x49')]){_0x38c5a1['where']=_[_0x23b0('0x3b')](_0x38c5a1[_0x23b0('0x38')],{'$or':_[_0x23b0('0x28')](_0x38c5a1[_0x23b0('0x33')],function(_0x131cd0){var _0x1e0527={};_0x1e0527[_0x131cd0]={'$like':'%'+_0x1cb060['query'][_0x23b0('0x49')]+'%'};return _0x1e0527;})});}_0x38c5a1=_[_0x23b0('0x3b')]({},_0x38c5a1,_0x1cb060['options']);return _0x3cad04[_0x23b0('0x4c')](_0x38c5a1);}})[_0x23b0('0x22')](function(_0x24a058){if(_0x24a058){_0x29bf70=_0x24a058[_0x23b0('0x32')];if(!_0x1cb060[_0x23b0('0x2e')][_0x23b0('0x34')]('nolimit')){_0x38c5a1[_0x23b0('0x1b')]=qs[_0x23b0('0x1b')](_0x1cb060[_0x23b0('0x2e')][_0x23b0('0x1b')]);_0x38c5a1[_0x23b0('0x19')]=qs['offset'](_0x1cb060[_0x23b0('0x2e')][_0x23b0('0x19')]);}return _0x3cad04[_0x23b0('0x4c')](_0x38c5a1);}})[_0x23b0('0x22')](function(_0x2c2b93){if(_0x2c2b93){return _0x2c2b93?{'count':_0x29bf70,'rows':_0x2c2b93}:null;}})[_0x23b0('0x22')](respondWithResult(_0x512ab6,null))[_0x23b0('0x42')](handleError(_0x512ab6,null));};exports[_0x23b0('0x4d')]=function(_0x22b617,_0xf3cc82,_0x317bd0){var _0x1c3c14={};var _0xf8ba3c={};var _0x24bf28;var _0x3eaf09;return db[_0x23b0('0x29')][_0x23b0('0x4a')]({'where':{'id':_0x22b617['params']['id']}})[_0x23b0('0x22')](handleEntityNotFound(_0xf3cc82,null))['then'](function(_0x533824){if(_0x533824){_0x24bf28=_0x533824;_0xf8ba3c['model']=_[_0x23b0('0x2f')](db['VtigerField'][_0x23b0('0x2a')]);_0xf8ba3c[_0x23b0('0x2e')]=_['keys'](_0x22b617['query']);_0xf8ba3c[_0x23b0('0x39')]=_[_0x23b0('0x30')](_0xf8ba3c['model'],_0xf8ba3c[_0x23b0('0x2e')]);_0x1c3c14[_0x23b0('0x33')]=_[_0x23b0('0x30')](_0xf8ba3c[_0x23b0('0x2d')],qs['fields'](_0x22b617[_0x23b0('0x2e')][_0x23b0('0x31')]));_0x1c3c14[_0x23b0('0x33')]=_0x1c3c14[_0x23b0('0x33')][_0x23b0('0x32')]?_0x1c3c14[_0x23b0('0x33')]:_0xf8ba3c[_0x23b0('0x2d')];_0x1c3c14[_0x23b0('0x36')]=qs[_0x23b0('0x37')](_0x22b617[_0x23b0('0x2e')][_0x23b0('0x37')]);_0x1c3c14[_0x23b0('0x38')]=qs[_0x23b0('0x39')](_[_0x23b0('0x3a')](_0x22b617[_0x23b0('0x2e')],_0xf8ba3c[_0x23b0('0x39')]));if(_0x22b617['query'][_0x23b0('0x49')]){_0x1c3c14[_0x23b0('0x38')]=_['merge'](_0x1c3c14[_0x23b0('0x38')],{'$or':_[_0x23b0('0x28')](_0x1c3c14[_0x23b0('0x33')],function(_0x318135){var _0x296f94={};_0x296f94[_0x318135]={'$like':'%'+_0x22b617[_0x23b0('0x2e')][_0x23b0('0x49')]+'%'};return _0x296f94;})});}_0x1c3c14=_['merge']({},_0x1c3c14,_0x22b617[_0x23b0('0x3d')]);return _0x24bf28[_0x23b0('0x4d')](_0x1c3c14);}})[_0x23b0('0x22')](function(_0x2df386){if(_0x2df386){_0x3eaf09=_0x2df386[_0x23b0('0x32')];if(!_0x22b617[_0x23b0('0x2e')][_0x23b0('0x34')]('nolimit')){_0x1c3c14[_0x23b0('0x1b')]=qs[_0x23b0('0x1b')](_0x22b617['query'][_0x23b0('0x1b')]);_0x1c3c14[_0x23b0('0x19')]=qs[_0x23b0('0x19')](_0x22b617[_0x23b0('0x2e')]['offset']);}return _0x24bf28[_0x23b0('0x4d')](_0x1c3c14);}})[_0x23b0('0x22')](function(_0x55ca6d){if(_0x55ca6d){return _0x55ca6d?{'count':_0x3eaf09,'rows':_0x55ca6d}:null;}})[_0x23b0('0x22')](respondWithResult(_0xf3cc82,null))[_0x23b0('0x42')](handleError(_0xf3cc82,null));};
\ No newline at end of file
+var _0xc73e=['options','includeAll','findAll','rows','show','params','find','catch','create','body','getFields','findOne','VtigerField','getSubjects','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','util','path','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','destroy','then','error','stack','name','send','index','VtigerConfiguration','rawAttributes','fieldName','type','key','map','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter'];(function(_0x86bbe,_0x370e8d){var _0x112ec6=function(_0x2a4e7b){while(--_0x2a4e7b){_0x86bbe['push'](_0x86bbe['shift']());}};_0x112ec6(++_0x370e8d);}(_0xc73e,0x1e9));var _0xec73=function(_0x534371,_0x253834){_0x534371=_0x534371-0x0;var _0x4b4a1a=_0xc73e[_0x534371];return _0x4b4a1a;};'use strict';var emlformat=require(_0xec73('0x0'));var rimraf=require(_0xec73('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xec73('0x2'));var rp=require(_0xec73('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xec73('0x4'));var path=require(_0xec73('0x5'));var sox=require('sox');var csv=require(_0xec73('0x6'));var ejs=require(_0xec73('0x7'));var fs=require('fs');var fs_extra=require(_0xec73('0x8'));var _=require(_0xec73('0x9'));var squel=require('squel');var crypto=require(_0xec73('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xec73('0xb'));var toCsv=require(_0xec73('0x6'));var querystring=require(_0xec73('0xc'));var Papa=require(_0xec73('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xec73('0xe'));var as=require(_0xec73('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xec73('0x10'));var utils=require(_0xec73('0x11'));var config=require(_0xec73('0x12'));var licenseUtil=require(_0xec73('0x13'));var db=require(_0xec73('0x14'))['db'];function respondWithStatusCode(_0x19d0f2,_0x1e67ac){_0x1e67ac=_0x1e67ac||0xcc;return function(_0x5f5594){if(_0x5f5594){return _0x19d0f2[_0xec73('0x15')](_0x1e67ac);}return _0x19d0f2['status'](_0x1e67ac)[_0xec73('0x16')]();};}function respondWithResult(_0x4be73c,_0x10f003){_0x10f003=_0x10f003||0xc8;return function(_0x1e4869){if(_0x1e4869){return _0x4be73c[_0xec73('0x17')](_0x10f003)[_0xec73('0x18')](_0x1e4869);}};}function respondWithFilteredResult(_0x3690c3,_0x2a3296){return function(_0x35be28){if(_0x35be28){var _0x2b4e70=typeof _0x2a3296['offset']===_0xec73('0x19')&&typeof _0x2a3296[_0xec73('0x1a')]===_0xec73('0x19');var _0x219119=_0x35be28[_0xec73('0x1b')];var _0x2d646e=_0x2b4e70?0x0:_0x2a3296['offset'];var _0x1bacbf=_0x2b4e70?_0x35be28[_0xec73('0x1b')]:_0x2a3296[_0xec73('0x1c')]+_0x2a3296['limit'];var _0x57ac66;if(_0x1bacbf>=_0x219119){_0x1bacbf=_0x219119;_0x57ac66=0xc8;}else{_0x57ac66=0xce;}_0x3690c3[_0xec73('0x17')](_0x57ac66);return _0x3690c3[_0xec73('0x1d')](_0xec73('0x1e'),_0x2d646e+'-'+_0x1bacbf+'/'+_0x219119)[_0xec73('0x18')](_0x35be28);}return null;};}function patchUpdates(_0x1169c4){return function(_0x5d4c7c){try{jsonpatch['apply'](_0x5d4c7c,_0x1169c4,!![]);}catch(_0x3eeaff){return BPromise[_0xec73('0x1f')](_0x3eeaff);}return _0x5d4c7c[_0xec73('0x20')]();};}function saveUpdates(_0x60bfec,_0x451715){return function(_0x4a862b){if(_0x4a862b){return _0x4a862b[_0xec73('0x21')](_0x60bfec)['then'](function(_0x3d58bc){return _0x3d58bc;});}return null;};}function removeEntity(_0x4f95d2,_0x4df08e){return function(_0x490ee2){if(_0x490ee2){return _0x490ee2[_0xec73('0x22')]()[_0xec73('0x23')](function(){_0x4f95d2[_0xec73('0x17')](0xcc)[_0xec73('0x16')]();});}};}function handleEntityNotFound(_0x3df864,_0x5b48c3){return function(_0x572a81){if(!_0x572a81){_0x3df864[_0xec73('0x15')](0x194);}return _0x572a81;};}function handleError(_0x34e706,_0x5a6e81){_0x5a6e81=_0x5a6e81||0x1f4;return function(_0x358d67){logger[_0xec73('0x24')](_0x358d67[_0xec73('0x25')]);if(_0x358d67[_0xec73('0x26')]){delete _0x358d67[_0xec73('0x26')];}_0x34e706[_0xec73('0x17')](_0x5a6e81)[_0xec73('0x27')](_0x358d67);};}exports[_0xec73('0x28')]=function(_0x49a1da,_0x595635){var _0x2bec99={},_0x2af2db={},_0x3f3104={'count':0x0,'rows':[]};var _0x178aa2=_['map'](db[_0xec73('0x29')][_0xec73('0x2a')],function(_0x24268b){return{'name':_0x24268b[_0xec73('0x2b')],'type':_0x24268b[_0xec73('0x2c')][_0xec73('0x2d')]};});_0x2af2db['model']=_[_0xec73('0x2e')](_0x178aa2,_0xec73('0x26'));_0x2af2db[_0xec73('0x2f')]=_[_0xec73('0x30')](_0x49a1da[_0xec73('0x2f')]);_0x2af2db[_0xec73('0x31')]=_['intersection'](_0x2af2db[_0xec73('0x32')],_0x2af2db[_0xec73('0x2f')]);_0x2bec99[_0xec73('0x33')]=_[_0xec73('0x34')](_0x2af2db[_0xec73('0x32')],qs[_0xec73('0x35')](_0x49a1da[_0xec73('0x2f')]['fields']));_0x2bec99[_0xec73('0x33')]=_0x2bec99['attributes'][_0xec73('0x36')]?_0x2bec99[_0xec73('0x33')]:_0x2af2db[_0xec73('0x32')];if(!_0x49a1da[_0xec73('0x2f')][_0xec73('0x37')](_0xec73('0x38'))){_0x2bec99[_0xec73('0x1a')]=qs[_0xec73('0x1a')](_0x49a1da[_0xec73('0x2f')]['limit']);_0x2bec99['offset']=qs[_0xec73('0x1c')](_0x49a1da[_0xec73('0x2f')][_0xec73('0x1c')]);}_0x2bec99[_0xec73('0x39')]=qs[_0xec73('0x3a')](_0x49a1da[_0xec73('0x2f')][_0xec73('0x3a')]);_0x2bec99[_0xec73('0x3b')]=qs['filters'](_[_0xec73('0x3c')](_0x49a1da[_0xec73('0x2f')],_0x2af2db[_0xec73('0x31')]),_0x178aa2);if(_0x49a1da['query']['filter']){_0x2bec99['where']=_[_0xec73('0x3d')](_0x2bec99['where'],{'$or':_[_0xec73('0x2e')](_0x178aa2,function(_0x5c7776){if(_0x5c7776['type']!==_0xec73('0x3e')){var _0x59cceb={};_0x59cceb[_0x5c7776[_0xec73('0x26')]]={'$like':'%'+_0x49a1da['query'][_0xec73('0x3f')]+'%'};return _0x59cceb;}})});}_0x2bec99=_['merge']({},_0x2bec99,_0x49a1da[_0xec73('0x40')]);var _0x2780cf={'where':_0x2bec99['where']};return db['VtigerConfiguration']['count'](_0x2780cf)[_0xec73('0x23')](function(_0x4b7da4){_0x3f3104[_0xec73('0x1b')]=_0x4b7da4;if(_0x49a1da[_0xec73('0x2f')][_0xec73('0x41')]){_0x2bec99['include']=[{'all':!![]}];}return db[_0xec73('0x29')][_0xec73('0x42')](_0x2bec99);})[_0xec73('0x23')](function(_0x1c5e2b){_0x3f3104[_0xec73('0x43')]=_0x1c5e2b;return _0x3f3104;})['then'](respondWithFilteredResult(_0x595635,_0x2bec99))['catch'](handleError(_0x595635,null));};exports[_0xec73('0x44')]=function(_0x60c562,_0x38fec3){var _0x46c8c7={'raw':![],'where':{'id':_0x60c562[_0xec73('0x45')]['id']}},_0x1f6eeb={};_0x1f6eeb[_0xec73('0x32')]=_[_0xec73('0x30')](db[_0xec73('0x29')][_0xec73('0x2a')]);_0x1f6eeb[_0xec73('0x2f')]=_[_0xec73('0x30')](_0x60c562[_0xec73('0x2f')]);_0x1f6eeb[_0xec73('0x31')]=_['intersection'](_0x1f6eeb['model'],_0x1f6eeb[_0xec73('0x2f')]);_0x46c8c7[_0xec73('0x33')]=_[_0xec73('0x34')](_0x1f6eeb[_0xec73('0x32')],qs[_0xec73('0x35')](_0x60c562[_0xec73('0x2f')][_0xec73('0x35')]));_0x46c8c7[_0xec73('0x33')]=_0x46c8c7[_0xec73('0x33')]['length']?_0x46c8c7['attributes']:_0x1f6eeb[_0xec73('0x32')];if(_0x60c562['query'][_0xec73('0x41')]){_0x46c8c7['include']=[{'all':!![]}];}_0x46c8c7=_[_0xec73('0x3d')]({},_0x46c8c7,_0x60c562[_0xec73('0x40')]);return db[_0xec73('0x29')][_0xec73('0x46')](_0x46c8c7)[_0xec73('0x23')](handleEntityNotFound(_0x38fec3,null))['then'](respondWithResult(_0x38fec3,null))[_0xec73('0x47')](handleError(_0x38fec3,null));};exports[_0xec73('0x48')]=function(_0x57d608,_0x28c84d){return db[_0xec73('0x29')][_0xec73('0x48')](_0x57d608[_0xec73('0x49')],{})[_0xec73('0x23')](respondWithResult(_0x28c84d,0xc9))['catch'](handleError(_0x28c84d,null));};exports['update']=function(_0x42e20f,_0x2a7bec){if(_0x42e20f[_0xec73('0x49')]['id']){delete _0x42e20f['body']['id'];}return db[_0xec73('0x29')]['find']({'where':{'id':_0x42e20f[_0xec73('0x45')]['id']}})[_0xec73('0x23')](handleEntityNotFound(_0x2a7bec,null))[_0xec73('0x23')](saveUpdates(_0x42e20f[_0xec73('0x49')],null))[_0xec73('0x23')](respondWithResult(_0x2a7bec,null))[_0xec73('0x47')](handleError(_0x2a7bec,null));};exports['destroy']=function(_0x5ab01e,_0x40de69){return db['VtigerConfiguration'][_0xec73('0x46')]({'where':{'id':_0x5ab01e[_0xec73('0x45')]['id']}})[_0xec73('0x23')](handleEntityNotFound(_0x40de69,null))['then'](removeEntity(_0x40de69,null))[_0xec73('0x47')](handleError(_0x40de69,null));};exports[_0xec73('0x4a')]=function(_0x3a4fd1,_0x16bbdb,_0x2f361a){var _0x40516b={};var _0x93a2b3={};var _0x2826f5;var _0x13ae82;return db[_0xec73('0x29')][_0xec73('0x4b')]({'where':{'id':_0x3a4fd1[_0xec73('0x45')]['id']}})[_0xec73('0x23')](handleEntityNotFound(_0x16bbdb,null))[_0xec73('0x23')](function(_0x4c5321){if(_0x4c5321){_0x2826f5=_0x4c5321;_0x93a2b3[_0xec73('0x32')]=_[_0xec73('0x30')](db[_0xec73('0x4c')][_0xec73('0x2a')]);_0x93a2b3[_0xec73('0x2f')]=_[_0xec73('0x30')](_0x3a4fd1['query']);_0x93a2b3[_0xec73('0x31')]=_[_0xec73('0x34')](_0x93a2b3[_0xec73('0x32')],_0x93a2b3['query']);_0x40516b[_0xec73('0x33')]=_[_0xec73('0x34')](_0x93a2b3[_0xec73('0x32')],qs[_0xec73('0x35')](_0x3a4fd1[_0xec73('0x2f')][_0xec73('0x35')]));_0x40516b[_0xec73('0x33')]=_0x40516b[_0xec73('0x33')]['length']?_0x40516b[_0xec73('0x33')]:_0x93a2b3[_0xec73('0x32')];_0x40516b[_0xec73('0x39')]=qs['sort'](_0x3a4fd1[_0xec73('0x2f')][_0xec73('0x3a')]);_0x40516b[_0xec73('0x3b')]=qs[_0xec73('0x31')](_['pick'](_0x3a4fd1[_0xec73('0x2f')],_0x93a2b3[_0xec73('0x31')]));if(_0x3a4fd1[_0xec73('0x2f')][_0xec73('0x3f')]){_0x40516b['where']=_[_0xec73('0x3d')](_0x40516b[_0xec73('0x3b')],{'$or':_['map'](_0x40516b['attributes'],function(_0x3998ea){var _0x2595ff={};_0x2595ff[_0x3998ea]={'$like':'%'+_0x3a4fd1[_0xec73('0x2f')]['filter']+'%'};return _0x2595ff;})});}_0x40516b=_[_0xec73('0x3d')]({},_0x40516b,_0x3a4fd1[_0xec73('0x40')]);return _0x2826f5[_0xec73('0x4a')](_0x40516b);}})[_0xec73('0x23')](function(_0x35051d){if(_0x35051d){_0x13ae82=_0x35051d['length'];if(!_0x3a4fd1[_0xec73('0x2f')][_0xec73('0x37')]('nolimit')){_0x40516b[_0xec73('0x1a')]=qs[_0xec73('0x1a')](_0x3a4fd1[_0xec73('0x2f')][_0xec73('0x1a')]);_0x40516b[_0xec73('0x1c')]=qs[_0xec73('0x1c')](_0x3a4fd1[_0xec73('0x2f')][_0xec73('0x1c')]);}return _0x2826f5[_0xec73('0x4a')](_0x40516b);}})[_0xec73('0x23')](function(_0x5657ea){if(_0x5657ea){return _0x5657ea?{'count':_0x13ae82,'rows':_0x5657ea}:null;}})[_0xec73('0x23')](respondWithResult(_0x16bbdb,null))['catch'](handleError(_0x16bbdb,null));};exports[_0xec73('0x4d')]=function(_0x49cd66,_0xec02d7,_0x405c01){var _0x130904={};var _0x4f0694={};var _0x47d6ba;var _0x18ac4b;return db[_0xec73('0x29')][_0xec73('0x4b')]({'where':{'id':_0x49cd66['params']['id']}})['then'](handleEntityNotFound(_0xec02d7,null))[_0xec73('0x23')](function(_0x5563bb){if(_0x5563bb){_0x47d6ba=_0x5563bb;_0x4f0694['model']=_[_0xec73('0x30')](db['VtigerField'][_0xec73('0x2a')]);_0x4f0694[_0xec73('0x2f')]=_[_0xec73('0x30')](_0x49cd66[_0xec73('0x2f')]);_0x4f0694[_0xec73('0x31')]=_[_0xec73('0x34')](_0x4f0694['model'],_0x4f0694[_0xec73('0x2f')]);_0x130904[_0xec73('0x33')]=_[_0xec73('0x34')](_0x4f0694[_0xec73('0x32')],qs['fields'](_0x49cd66['query']['fields']));_0x130904[_0xec73('0x33')]=_0x130904[_0xec73('0x33')][_0xec73('0x36')]?_0x130904[_0xec73('0x33')]:_0x4f0694[_0xec73('0x32')];_0x130904[_0xec73('0x39')]=qs[_0xec73('0x3a')](_0x49cd66[_0xec73('0x2f')][_0xec73('0x3a')]);_0x130904[_0xec73('0x3b')]=qs[_0xec73('0x31')](_[_0xec73('0x3c')](_0x49cd66['query'],_0x4f0694[_0xec73('0x31')]));if(_0x49cd66[_0xec73('0x2f')][_0xec73('0x3f')]){_0x130904[_0xec73('0x3b')]=_[_0xec73('0x3d')](_0x130904['where'],{'$or':_[_0xec73('0x2e')](_0x130904[_0xec73('0x33')],function(_0x211615){var _0x1af366={};_0x1af366[_0x211615]={'$like':'%'+_0x49cd66[_0xec73('0x2f')][_0xec73('0x3f')]+'%'};return _0x1af366;})});}_0x130904=_['merge']({},_0x130904,_0x49cd66['options']);return _0x47d6ba['getSubjects'](_0x130904);}})[_0xec73('0x23')](function(_0x3f227a){if(_0x3f227a){_0x18ac4b=_0x3f227a[_0xec73('0x36')];if(!_0x49cd66[_0xec73('0x2f')][_0xec73('0x37')](_0xec73('0x38'))){_0x130904[_0xec73('0x1a')]=qs[_0xec73('0x1a')](_0x49cd66['query'][_0xec73('0x1a')]);_0x130904[_0xec73('0x1c')]=qs['offset'](_0x49cd66['query'][_0xec73('0x1c')]);}return _0x47d6ba[_0xec73('0x4d')](_0x130904);}})['then'](function(_0x16e849){if(_0x16e849){return _0x16e849?{'count':_0x18ac4b,'rows':_0x16e849}:null;}})[_0xec73('0x23')](respondWithResult(_0xec02d7,null))['catch'](handleError(_0xec02d7,null));};exports['getDescriptions']=function(_0x505395,_0x30e492,_0x3c4644){var _0x36e85d={};var _0x535271={};var _0x3f296f;var _0x4c3f56;return db[_0xec73('0x29')][_0xec73('0x4b')]({'where':{'id':_0x505395[_0xec73('0x45')]['id']}})[_0xec73('0x23')](handleEntityNotFound(_0x30e492,null))[_0xec73('0x23')](function(_0x25e059){if(_0x25e059){_0x3f296f=_0x25e059;_0x535271[_0xec73('0x32')]=_[_0xec73('0x30')](db[_0xec73('0x4c')][_0xec73('0x2a')]);_0x535271[_0xec73('0x2f')]=_[_0xec73('0x30')](_0x505395[_0xec73('0x2f')]);_0x535271[_0xec73('0x31')]=_[_0xec73('0x34')](_0x535271[_0xec73('0x32')],_0x535271['query']);_0x36e85d[_0xec73('0x33')]=_['intersection'](_0x535271[_0xec73('0x32')],qs[_0xec73('0x35')](_0x505395[_0xec73('0x2f')][_0xec73('0x35')]));_0x36e85d[_0xec73('0x33')]=_0x36e85d[_0xec73('0x33')]['length']?_0x36e85d[_0xec73('0x33')]:_0x535271[_0xec73('0x32')];_0x36e85d[_0xec73('0x39')]=qs[_0xec73('0x3a')](_0x505395['query'][_0xec73('0x3a')]);_0x36e85d[_0xec73('0x3b')]=qs[_0xec73('0x31')](_[_0xec73('0x3c')](_0x505395[_0xec73('0x2f')],_0x535271[_0xec73('0x31')]));if(_0x505395['query'][_0xec73('0x3f')]){_0x36e85d[_0xec73('0x3b')]=_[_0xec73('0x3d')](_0x36e85d[_0xec73('0x3b')],{'$or':_[_0xec73('0x2e')](_0x36e85d[_0xec73('0x33')],function(_0x3b8b96){var _0x17e743={};_0x17e743[_0x3b8b96]={'$like':'%'+_0x505395['query'][_0xec73('0x3f')]+'%'};return _0x17e743;})});}_0x36e85d=_[_0xec73('0x3d')]({},_0x36e85d,_0x505395[_0xec73('0x40')]);return _0x3f296f[_0xec73('0x4e')](_0x36e85d);}})[_0xec73('0x23')](function(_0x22d726){if(_0x22d726){_0x4c3f56=_0x22d726['length'];if(!_0x505395[_0xec73('0x2f')][_0xec73('0x37')](_0xec73('0x38'))){_0x36e85d[_0xec73('0x1a')]=qs[_0xec73('0x1a')](_0x505395['query'][_0xec73('0x1a')]);_0x36e85d[_0xec73('0x1c')]=qs[_0xec73('0x1c')](_0x505395[_0xec73('0x2f')][_0xec73('0x1c')]);}return _0x3f296f[_0xec73('0x4e')](_0x36e85d);}})[_0xec73('0x23')](function(_0x1695e7){if(_0x1695e7){return _0x1695e7?{'count':_0x4c3f56,'rows':_0x1695e7}:null;}})[_0xec73('0x23')](respondWithResult(_0x30e492,null))['catch'](handleError(_0x30e492,null));};
\ No newline at end of file
index 6c7bed9..9209ef0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a74=['lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./intVtigerConfiguration.attributes','exports'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0x5a74,0x168));var _0x45a7=function(_0xbbbeae,_0x4a414a){_0xbbbeae=_0xbbbeae-0x0;var _0x1cb9c9=_0x5a74[_0xbbbeae];return _0x1cb9c9;};'use strict';var _=require(_0x45a7('0x0'));var util=require(_0x45a7('0x1'));var logger=require(_0x45a7('0x2'))(_0x45a7('0x3'));var moment=require(_0x45a7('0x4'));var BPromise=require(_0x45a7('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x45a7('0x6'));var config=require(_0x45a7('0x7'));var attributes=require(_0x45a7('0x8'));module[_0x45a7('0x9')]=function(_0x4c0232,_0x1031e8){return _0x4c0232['define']('VtigerConfiguration',attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4da9=['define','VtigerConfiguration','int_vtiger_configurations','lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./intVtigerConfiguration.attributes','exports'];(function(_0x10f100,_0x20f3d3){var _0x51546e=function(_0x488217){while(--_0x488217){_0x10f100['push'](_0x10f100['shift']());}};_0x51546e(++_0x20f3d3);}(_0x4da9,0xc6));var _0x94da=function(_0x3aab89,_0x15f000){_0x3aab89=_0x3aab89-0x0;var _0x4c8c2e=_0x4da9[_0x3aab89];return _0x4c8c2e;};'use strict';var _=require(_0x94da('0x0'));var util=require('util');var logger=require(_0x94da('0x1'))(_0x94da('0x2'));var moment=require(_0x94da('0x3'));var BPromise=require(_0x94da('0x4'));var rp=require(_0x94da('0x5'));var fs=require('fs');var path=require(_0x94da('0x6'));var rimraf=require('rimraf');var config=require(_0x94da('0x7'));var attributes=require(_0x94da('0x8'));module[_0x94da('0x9')]=function(_0x5e8989,_0x474921){return _0x5e8989[_0x94da('0xa')](_0x94da('0xb'),attributes,{'tableName':_0x94da('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bb063c1..08834f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd81f=['util','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','info','VtigerConfiguration,\x20%s,\x20%s','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','lodash'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xd81f,0x11f));var _0xfd81=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xd81f[_0x2c91e9];return _0x13f0ff;};'use strict';var _=require(_0xfd81('0x0'));var util=require(_0xfd81('0x1'));var moment=require('moment');var BPromise=require(_0xfd81('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfd81('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xfd81('0x4'));var logger=require('../../config/logger')(_0xfd81('0x5'));var config=require(_0xfd81('0x6'));var jayson=require(_0xfd81('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2db92b,_0x54e5e9,_0x28adb1){return new BPromise(function(_0x34eff9,_0x40b4b3){return client['request'](_0x2db92b,_0x28adb1)['then'](function(_0x51decd){logger[_0xfd81('0x8')](_0xfd81('0x9'),_0x54e5e9,'request\x20sent');logger[_0xfd81('0xa')](_0xfd81('0xb'),_0x54e5e9,'request\x20sent',JSON[_0xfd81('0xc')](_0x51decd));if(_0x51decd[_0xfd81('0xd')]){if(_0x51decd[_0xfd81('0xd')]['code']===0x1f4){logger[_0xfd81('0xd')](_0xfd81('0x9'),_0x54e5e9,_0x51decd['error'][_0xfd81('0xe')]);return _0x40b4b3(_0x51decd[_0xfd81('0xd')][_0xfd81('0xe')]);}logger[_0xfd81('0xd')](_0xfd81('0x9'),_0x54e5e9,_0x51decd[_0xfd81('0xd')][_0xfd81('0xe')]);return _0x34eff9(_0x51decd[_0xfd81('0xd')][_0xfd81('0xe')]);}else{logger[_0xfd81('0x8')](_0xfd81('0x9'),_0x54e5e9,_0xfd81('0xf'));_0x34eff9(_0x51decd[_0xfd81('0x10')]['message']);}})[_0xfd81('0x11')](function(_0x25e0fb){logger['error']('VtigerConfiguration,\x20%s,\x20%s',_0x54e5e9,_0x25e0fb);_0x40b4b3(_0x25e0fb);});});}
\ No newline at end of file
+var _0x9f58=['moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util'];(function(_0x46093d,_0x5026a2){var _0x1498a5=function(_0x43a3b0){while(--_0x43a3b0){_0x46093d['push'](_0x46093d['shift']());}};_0x1498a5(++_0x5026a2);}(_0x9f58,0x148));var _0x89f5=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x9f58[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x89f5('0x0'));var util=require(_0x89f5('0x1'));var moment=require(_0x89f5('0x2'));var BPromise=require('bluebird');var rs=require(_0x89f5('0x3'));var fs=require('fs');var Redis=require(_0x89f5('0x4'));var db=require(_0x89f5('0x5'))['db'];var utils=require(_0x89f5('0x6'));var logger=require(_0x89f5('0x7'))('rpc');var config=require(_0x89f5('0x8'));var jayson=require(_0x89f5('0x9'));var client=jayson[_0x89f5('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4158b1,_0x16b5de,_0x289dda){return new BPromise(function(_0x3d4614,_0x39084d){return client['request'](_0x4158b1,_0x289dda)[_0x89f5('0xb')](function(_0x4eef31){logger[_0x89f5('0xc')](_0x89f5('0xd'),_0x16b5de,_0x89f5('0xe'));logger[_0x89f5('0xf')]('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x16b5de,_0x89f5('0xe'),JSON[_0x89f5('0x10')](_0x4eef31));if(_0x4eef31[_0x89f5('0x11')]){if(_0x4eef31[_0x89f5('0x11')][_0x89f5('0x12')]===0x1f4){logger[_0x89f5('0x11')](_0x89f5('0xd'),_0x16b5de,_0x4eef31[_0x89f5('0x11')][_0x89f5('0x13')]);return _0x39084d(_0x4eef31[_0x89f5('0x11')][_0x89f5('0x13')]);}logger[_0x89f5('0x11')]('VtigerConfiguration,\x20%s,\x20%s',_0x16b5de,_0x4eef31[_0x89f5('0x11')][_0x89f5('0x13')]);return _0x3d4614(_0x4eef31['error']['message']);}else{logger[_0x89f5('0xc')](_0x89f5('0xd'),_0x16b5de,_0x89f5('0xe'));_0x3d4614(_0x4eef31[_0x89f5('0x14')][_0x89f5('0x13')]);}})[_0x89f5('0x15')](function(_0x5479bd){logger[_0x89f5('0x11')](_0x89f5('0xd'),_0x16b5de,_0x5479bd);_0x39084d(_0x5479bd);});});}
\ No newline at end of file
index be1bdd0..7976fb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc872=['util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerField.controller','get','isAuthenticated','index','/:id','put','update','delete','destroy','exports','multer'];(function(_0x4720b6,_0x3b453a){var _0x3ccad3=function(_0x57d73a){while(--_0x57d73a){_0x4720b6['push'](_0x4720b6['shift']());}};_0x3ccad3(++_0x3b453a);}(_0xc872,0xe9));var _0x2c87=function(_0x547add,_0x387042){_0x547add=_0x547add-0x0;var _0x2ed1f3=_0xc872[_0x547add];return _0x2ed1f3;};'use strict';var multer=require(_0x2c87('0x0'));var util=require(_0x2c87('0x1'));var path=require(_0x2c87('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x2c87('0x3')]();var fs_extra=require(_0x2c87('0x4'));var auth=require(_0x2c87('0x5'));var interaction=require(_0x2c87('0x6'));var config=require(_0x2c87('0x7'));var controller=require(_0x2c87('0x8'));router[_0x2c87('0x9')]('/',auth[_0x2c87('0xa')](),controller[_0x2c87('0xb')]);router[_0x2c87('0x9')](_0x2c87('0xc'),auth[_0x2c87('0xa')](),controller['show']);router['post']('/',auth[_0x2c87('0xa')](),controller['create']);router[_0x2c87('0xd')](_0x2c87('0xc'),auth[_0x2c87('0xa')](),controller[_0x2c87('0xe')]);router[_0x2c87('0xf')](_0x2c87('0xc'),auth[_0x2c87('0xa')](),controller[_0x2c87('0x10')]);module[_0x2c87('0x11')]=router;
\ No newline at end of file
+var _0x8c48=['update','/:id','destroy','exports','multer','util','path','express','fs-extra','./intVtigerField.controller','get','index','isAuthenticated','post','create','put'];(function(_0x414f73,_0x10b610){var _0x370c9c=function(_0x22a41b){while(--_0x22a41b){_0x414f73['push'](_0x414f73['shift']());}};_0x370c9c(++_0x10b610);}(_0x8c48,0x174));var _0x88c4=function(_0xcc3e19,_0x40532c){_0xcc3e19=_0xcc3e19-0x0;var _0x4d8895=_0x8c48[_0xcc3e19];return _0x4d8895;};'use strict';var multer=require(_0x88c4('0x0'));var util=require(_0x88c4('0x1'));var path=require(_0x88c4('0x2'));var timeout=require('connect-timeout');var express=require(_0x88c4('0x3'));var router=express['Router']();var fs_extra=require(_0x88c4('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x88c4('0x5'));router[_0x88c4('0x6')]('/',auth['isAuthenticated'](),controller[_0x88c4('0x7')]);router['get']('/:id',auth[_0x88c4('0x8')](),controller['show']);router[_0x88c4('0x9')]('/',auth[_0x88c4('0x8')](),controller[_0x88c4('0xa')]);router[_0x88c4('0xb')]('/:id',auth[_0x88c4('0x8')](),controller[_0x88c4('0xc')]);router['delete'](_0x88c4('0xd'),auth[_0x88c4('0x8')](),controller[_0x88c4('0xe')]);module[_0x88c4('0xf')]=router;
\ No newline at end of file
index f92c701..a095cac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0dc7=['BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING'];(function(_0x50e1ec,_0x5d20b2){var _0x15deb6=function(_0x458a47){while(--_0x458a47){_0x50e1ec['push'](_0x50e1ec['shift']());}};_0x15deb6(++_0x5d20b2);}(_0x0dc7,0x155));var _0x70dc=function(_0x102ff9,_0x907658){_0x102ff9=_0x102ff9-0x0;var _0x24fa97=_0x0dc7[_0x102ff9];return _0x24fa97;};'use strict';var Sequelize=require(_0x70dc('0x0'));module[_0x70dc('0x1')]={'type':{'type':Sequelize[_0x70dc('0x2')](_0x70dc('0x3'),_0x70dc('0x4'),_0x70dc('0x5'),_0x70dc('0x6'),_0x70dc('0x7')),'defaultValue':_0x70dc('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x70dc('0x2')](_0x70dc('0x3'),_0x70dc('0x4'),_0x70dc('0x5'))},'keyContent':{'type':Sequelize[_0x70dc('0x8')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x70dc('0x8')]},'customField':{'type':Sequelize[_0x70dc('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x70dc('0x8')]}};
\ No newline at end of file
+var _0xef07=['exports','string','variable','customVariable','keyValue','picklist','STRING','ENUM','BOOLEAN','sequelize'];(function(_0x5982ad,_0x585f7a){var _0x4fd214=function(_0x4824e7){while(--_0x4824e7){_0x5982ad['push'](_0x5982ad['shift']());}};_0x4fd214(++_0x585f7a);}(_0xef07,0x8b));var _0x7ef0=function(_0x912d27,_0x28e0e3){_0x912d27=_0x912d27-0x0;var _0x31b918=_0xef07[_0x912d27];return _0x31b918;};'use strict';var Sequelize=require(_0x7ef0('0x0'));module[_0x7ef0('0x1')]={'type':{'type':Sequelize['ENUM'](_0x7ef0('0x2'),_0x7ef0('0x3'),_0x7ef0('0x4'),_0x7ef0('0x5'),_0x7ef0('0x6')),'defaultValue':_0x7ef0('0x2')},'content':{'type':Sequelize[_0x7ef0('0x7')]},'key':{'type':Sequelize[_0x7ef0('0x7')]},'keyType':{'type':Sequelize[_0x7ef0('0x8')](_0x7ef0('0x2'),'variable',_0x7ef0('0x4'))},'keyContent':{'type':Sequelize[_0x7ef0('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x7ef0('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 8a902ca..138d697 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e54=['save','destroy','then','error','send','index','map','rawAttributes','fieldName','type','key','name','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','VtigerField','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','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','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject'];(function(_0x24d0ce,_0x1abd83){var _0x3eeb8d=function(_0x5c04bd){while(--_0x5c04bd){_0x24d0ce['push'](_0x24d0ce['shift']());}};_0x3eeb8d(++_0x1abd83);}(_0x8e54,0x74));var _0x48e5=function(_0x571435,_0x10719c){_0x571435=_0x571435-0x0;var _0x16cc54=_0x8e54[_0x571435];return _0x16cc54;};'use strict';var emlformat=require(_0x48e5('0x0'));var rimraf=require(_0x48e5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x48e5('0x2'));var rp=require(_0x48e5('0x3'));var moment=require(_0x48e5('0x4'));var BPromise=require(_0x48e5('0x5'));var Mustache=require(_0x48e5('0x6'));var util=require('util');var path=require('path');var sox=require(_0x48e5('0x7'));var csv=require(_0x48e5('0x8'));var ejs=require(_0x48e5('0x9'));var fs=require('fs');var fs_extra=require(_0x48e5('0xa'));var _=require(_0x48e5('0xb'));var squel=require(_0x48e5('0xc'));var crypto=require('crypto');var jsforce=require(_0x48e5('0xd'));var deskjs=require(_0x48e5('0xe'));var toCsv=require(_0x48e5('0x8'));var querystring=require(_0x48e5('0xf'));var Papa=require('papaparse');var Redis=require(_0x48e5('0x10'));var authService=require(_0x48e5('0x11'));var qs=require(_0x48e5('0x12'));var as=require(_0x48e5('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x48e5('0x14'))(_0x48e5('0x15'));var utils=require(_0x48e5('0x16'));var config=require(_0x48e5('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1b1ad8,_0x586b0){_0x586b0=_0x586b0||0xcc;return function(_0x3442b1){if(_0x3442b1){return _0x1b1ad8[_0x48e5('0x18')](_0x586b0);}return _0x1b1ad8[_0x48e5('0x19')](_0x586b0)[_0x48e5('0x1a')]();};}function respondWithResult(_0x2f1e2f,_0x4c4c9e){_0x4c4c9e=_0x4c4c9e||0xc8;return function(_0x2e9be4){if(_0x2e9be4){return _0x2f1e2f[_0x48e5('0x19')](_0x4c4c9e)[_0x48e5('0x1b')](_0x2e9be4);}};}function respondWithFilteredResult(_0x3090e6,_0x1e7c01){return function(_0x48918e){if(_0x48918e){var _0x147a3f=typeof _0x1e7c01[_0x48e5('0x1c')]==='undefined'&&typeof _0x1e7c01[_0x48e5('0x1d')]===_0x48e5('0x1e');var _0x1a8f68=_0x48918e[_0x48e5('0x1f')];var _0x5701fe=_0x147a3f?0x0:_0x1e7c01[_0x48e5('0x1c')];var _0xdc301e=_0x147a3f?_0x48918e[_0x48e5('0x1f')]:_0x1e7c01[_0x48e5('0x1c')]+_0x1e7c01[_0x48e5('0x1d')];var _0x3d0b1a;if(_0xdc301e>=_0x1a8f68){_0xdc301e=_0x1a8f68;_0x3d0b1a=0xc8;}else{_0x3d0b1a=0xce;}_0x3090e6[_0x48e5('0x19')](_0x3d0b1a);return _0x3090e6[_0x48e5('0x20')](_0x48e5('0x21'),_0x5701fe+'-'+_0xdc301e+'/'+_0x1a8f68)[_0x48e5('0x1b')](_0x48918e);}return null;};}function patchUpdates(_0x215455){return function(_0x3a0f42){try{jsonpatch[_0x48e5('0x22')](_0x3a0f42,_0x215455,!![]);}catch(_0x4f438c){return BPromise[_0x48e5('0x23')](_0x4f438c);}return _0x3a0f42[_0x48e5('0x24')]();};}function saveUpdates(_0x3f651b,_0x5d3c07){return function(_0x18def5){if(_0x18def5){return _0x18def5['update'](_0x3f651b)['then'](function(_0x5b64fd){return _0x5b64fd;});}return null;};}function removeEntity(_0x4190cd,_0x4ce9b5){return function(_0xdbdafc){if(_0xdbdafc){return _0xdbdafc[_0x48e5('0x25')]()[_0x48e5('0x26')](function(){_0x4190cd['status'](0xcc)[_0x48e5('0x1a')]();});}};}function handleEntityNotFound(_0x21eeea,_0x1ae26d){return function(_0x38fdb2){if(!_0x38fdb2){_0x21eeea[_0x48e5('0x18')](0x194);}return _0x38fdb2;};}function handleError(_0x463956,_0x1fefea){_0x1fefea=_0x1fefea||0x1f4;return function(_0x4d36c8){logger[_0x48e5('0x27')](_0x4d36c8['stack']);if(_0x4d36c8['name']){delete _0x4d36c8['name'];}_0x463956['status'](_0x1fefea)[_0x48e5('0x28')](_0x4d36c8);};}exports[_0x48e5('0x29')]=function(_0xf3857f,_0x6ab9d7){var _0xf07a7b={},_0x1d31ef={},_0xd1f043={'count':0x0,'rows':[]};var _0x416809=_[_0x48e5('0x2a')](db['VtigerField'][_0x48e5('0x2b')],function(_0x1e7a01){return{'name':_0x1e7a01[_0x48e5('0x2c')],'type':_0x1e7a01[_0x48e5('0x2d')][_0x48e5('0x2e')]};});_0x1d31ef['model']=_[_0x48e5('0x2a')](_0x416809,_0x48e5('0x2f'));_0x1d31ef[_0x48e5('0x30')]=_['keys'](_0xf3857f['query']);_0x1d31ef[_0x48e5('0x31')]=_[_0x48e5('0x32')](_0x1d31ef[_0x48e5('0x33')],_0x1d31ef[_0x48e5('0x30')]);_0xf07a7b[_0x48e5('0x34')]=_['intersection'](_0x1d31ef[_0x48e5('0x33')],qs[_0x48e5('0x35')](_0xf3857f['query'][_0x48e5('0x35')]));_0xf07a7b[_0x48e5('0x34')]=_0xf07a7b['attributes'][_0x48e5('0x36')]?_0xf07a7b[_0x48e5('0x34')]:_0x1d31ef[_0x48e5('0x33')];if(!_0xf3857f[_0x48e5('0x30')][_0x48e5('0x37')]('nolimit')){_0xf07a7b[_0x48e5('0x1d')]=qs[_0x48e5('0x1d')](_0xf3857f[_0x48e5('0x30')][_0x48e5('0x1d')]);_0xf07a7b[_0x48e5('0x1c')]=qs[_0x48e5('0x1c')](_0xf3857f[_0x48e5('0x30')][_0x48e5('0x1c')]);}_0xf07a7b[_0x48e5('0x38')]=qs['sort'](_0xf3857f[_0x48e5('0x30')][_0x48e5('0x39')]);_0xf07a7b[_0x48e5('0x3a')]=qs[_0x48e5('0x31')](_[_0x48e5('0x3b')](_0xf3857f[_0x48e5('0x30')],_0x1d31ef[_0x48e5('0x31')]),_0x416809);if(_0xf3857f[_0x48e5('0x30')][_0x48e5('0x3c')]){_0xf07a7b['where']=_['merge'](_0xf07a7b[_0x48e5('0x3a')],{'$or':_[_0x48e5('0x2a')](_0x416809,function(_0xc1e093){if(_0xc1e093[_0x48e5('0x2d')]!==_0x48e5('0x3d')){var _0x8f0e14={};_0x8f0e14[_0xc1e093[_0x48e5('0x2f')]]={'$like':'%'+_0xf3857f[_0x48e5('0x30')][_0x48e5('0x3c')]+'%'};return _0x8f0e14;}})});}_0xf07a7b=_[_0x48e5('0x3e')]({},_0xf07a7b,_0xf3857f[_0x48e5('0x3f')]);var _0x258302={'where':_0xf07a7b[_0x48e5('0x3a')]};return db[_0x48e5('0x40')]['count'](_0x258302)[_0x48e5('0x26')](function(_0x289d3f){_0xd1f043['count']=_0x289d3f;if(_0xf3857f[_0x48e5('0x30')][_0x48e5('0x41')]){_0xf07a7b[_0x48e5('0x42')]=[{'all':!![]}];}return db[_0x48e5('0x40')][_0x48e5('0x43')](_0xf07a7b);})[_0x48e5('0x26')](function(_0x354ffe){_0xd1f043[_0x48e5('0x44')]=_0x354ffe;return _0xd1f043;})[_0x48e5('0x26')](respondWithFilteredResult(_0x6ab9d7,_0xf07a7b))[_0x48e5('0x45')](handleError(_0x6ab9d7,null));};exports[_0x48e5('0x46')]=function(_0xf37a10,_0xbede6d){var _0x2c743a={'raw':!![],'where':{'id':_0xf37a10[_0x48e5('0x47')]['id']}},_0x42f510={};_0x42f510['model']=_['keys'](db['VtigerField']['rawAttributes']);_0x42f510[_0x48e5('0x30')]=_[_0x48e5('0x48')](_0xf37a10[_0x48e5('0x30')]);_0x42f510[_0x48e5('0x31')]=_[_0x48e5('0x32')](_0x42f510[_0x48e5('0x33')],_0x42f510[_0x48e5('0x30')]);_0x2c743a[_0x48e5('0x34')]=_[_0x48e5('0x32')](_0x42f510[_0x48e5('0x33')],qs[_0x48e5('0x35')](_0xf37a10[_0x48e5('0x30')][_0x48e5('0x35')]));_0x2c743a[_0x48e5('0x34')]=_0x2c743a['attributes']['length']?_0x2c743a['attributes']:_0x42f510[_0x48e5('0x33')];if(_0xf37a10[_0x48e5('0x30')]['includeAll']){_0x2c743a[_0x48e5('0x42')]=[{'all':!![]}];}_0x2c743a=_['merge']({},_0x2c743a,_0xf37a10[_0x48e5('0x3f')]);return db[_0x48e5('0x40')][_0x48e5('0x49')](_0x2c743a)[_0x48e5('0x26')](handleEntityNotFound(_0xbede6d,null))['then'](respondWithResult(_0xbede6d,null))['catch'](handleError(_0xbede6d,null));};exports[_0x48e5('0x4a')]=function(_0x402cd8,_0x598fbe){return db[_0x48e5('0x40')][_0x48e5('0x4a')](_0x402cd8[_0x48e5('0x4b')],{})['then'](respondWithResult(_0x598fbe,0xc9))[_0x48e5('0x45')](handleError(_0x598fbe,null));};exports['update']=function(_0x45cdbc,_0x38e5c0){if(_0x45cdbc[_0x48e5('0x4b')]['id']){delete _0x45cdbc['body']['id'];}return db[_0x48e5('0x40')][_0x48e5('0x49')]({'where':{'id':_0x45cdbc[_0x48e5('0x47')]['id']}})['then'](handleEntityNotFound(_0x38e5c0,null))[_0x48e5('0x26')](saveUpdates(_0x45cdbc[_0x48e5('0x4b')],null))[_0x48e5('0x26')](respondWithResult(_0x38e5c0,null))[_0x48e5('0x45')](handleError(_0x38e5c0,null));};exports[_0x48e5('0x25')]=function(_0x369027,_0x5c45f5){return db[_0x48e5('0x40')][_0x48e5('0x49')]({'where':{'id':_0x369027[_0x48e5('0x47')]['id']}})[_0x48e5('0x26')](handleEntityNotFound(_0x5c45f5,null))[_0x48e5('0x26')](removeEntity(_0x5c45f5,null))[_0x48e5('0x45')](handleError(_0x5c45f5,null));};
\ No newline at end of file
+var _0x477c=['lodash','squel','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','reject','save','update','destroy','then','error','name','send','index','map','VtigerField','rawAttributes','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra'];(function(_0x2fbe07,_0x2debeb){var _0x485843=function(_0x5d9fdc){while(--_0x5d9fdc){_0x2fbe07['push'](_0x2fbe07['shift']());}};_0x485843(++_0x2debeb);}(_0x477c,0xd7));var _0xc477=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0x477c[_0x1cc8fe];return _0x230054;};'use strict';var emlformat=require(_0xc477('0x0'));var rimraf=require(_0xc477('0x1'));var zipdir=require(_0xc477('0x2'));var jsonpatch=require(_0xc477('0x3'));var rp=require(_0xc477('0x4'));var moment=require(_0xc477('0x5'));var BPromise=require(_0xc477('0x6'));var Mustache=require(_0xc477('0x7'));var util=require(_0xc477('0x8'));var path=require(_0xc477('0x9'));var sox=require(_0xc477('0xa'));var csv=require(_0xc477('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc477('0xc'));var _=require(_0xc477('0xd'));var squel=require(_0xc477('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xc477('0xf'));var toCsv=require(_0xc477('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xc477('0x10'));var authService=require(_0xc477('0x11'));var qs=require(_0xc477('0x12'));var as=require(_0xc477('0x13'));var hardwareService=require(_0xc477('0x14'));var logger=require('../../config/logger')(_0xc477('0x15'));var utils=require('../../config/utils');var config=require(_0xc477('0x16'));var licenseUtil=require(_0xc477('0x17'));var db=require(_0xc477('0x18'))['db'];function respondWithStatusCode(_0x17aa88,_0x68db27){_0x68db27=_0x68db27||0xcc;return function(_0x1de69e){if(_0x1de69e){return _0x17aa88[_0xc477('0x19')](_0x68db27);}return _0x17aa88[_0xc477('0x1a')](_0x68db27)[_0xc477('0x1b')]();};}function respondWithResult(_0x42ca56,_0x480f48){_0x480f48=_0x480f48||0xc8;return function(_0x205b4c){if(_0x205b4c){return _0x42ca56[_0xc477('0x1a')](_0x480f48)[_0xc477('0x1c')](_0x205b4c);}};}function respondWithFilteredResult(_0x2e2370,_0x58e0d2){return function(_0x26c0f2){if(_0x26c0f2){var _0x559e21=typeof _0x58e0d2['offset']===_0xc477('0x1d')&&typeof _0x58e0d2[_0xc477('0x1e')]===_0xc477('0x1d');var _0x12291a=_0x26c0f2[_0xc477('0x1f')];var _0x283e11=_0x559e21?0x0:_0x58e0d2[_0xc477('0x20')];var _0x4c8bd8=_0x559e21?_0x26c0f2[_0xc477('0x1f')]:_0x58e0d2[_0xc477('0x20')]+_0x58e0d2[_0xc477('0x1e')];var _0x258479;if(_0x4c8bd8>=_0x12291a){_0x4c8bd8=_0x12291a;_0x258479=0xc8;}else{_0x258479=0xce;}_0x2e2370[_0xc477('0x1a')](_0x258479);return _0x2e2370[_0xc477('0x21')]('Content-Range',_0x283e11+'-'+_0x4c8bd8+'/'+_0x12291a)['json'](_0x26c0f2);}return null;};}function patchUpdates(_0x302cf8){return function(_0x3ef136){try{jsonpatch[_0xc477('0x22')](_0x3ef136,_0x302cf8,!![]);}catch(_0x36dbb5){return BPromise[_0xc477('0x23')](_0x36dbb5);}return _0x3ef136[_0xc477('0x24')]();};}function saveUpdates(_0x30df6a,_0x38f812){return function(_0x859a21){if(_0x859a21){return _0x859a21[_0xc477('0x25')](_0x30df6a)['then'](function(_0x49c55d){return _0x49c55d;});}return null;};}function removeEntity(_0x550301,_0x5aa0c8){return function(_0x259467){if(_0x259467){return _0x259467[_0xc477('0x26')]()[_0xc477('0x27')](function(){_0x550301[_0xc477('0x1a')](0xcc)[_0xc477('0x1b')]();});}};}function handleEntityNotFound(_0x26f069,_0x3d2e2c){return function(_0x3de712){if(!_0x3de712){_0x26f069[_0xc477('0x19')](0x194);}return _0x3de712;};}function handleError(_0xcc4c0,_0x348999){_0x348999=_0x348999||0x1f4;return function(_0x1b1a64){logger[_0xc477('0x28')](_0x1b1a64['stack']);if(_0x1b1a64[_0xc477('0x29')]){delete _0x1b1a64[_0xc477('0x29')];}_0xcc4c0['status'](_0x348999)[_0xc477('0x2a')](_0x1b1a64);};}exports[_0xc477('0x2b')]=function(_0x4a7ee1,_0xcc3b52){var _0x2b906a={},_0x4f0271={},_0x342c44={'count':0x0,'rows':[]};var _0x3634a7=_[_0xc477('0x2c')](db[_0xc477('0x2d')][_0xc477('0x2e')],function(_0x49ad32){return{'name':_0x49ad32[_0xc477('0x2f')],'type':_0x49ad32[_0xc477('0x30')][_0xc477('0x31')]};});_0x4f0271['model']=_[_0xc477('0x2c')](_0x3634a7,_0xc477('0x29'));_0x4f0271[_0xc477('0x32')]=_[_0xc477('0x33')](_0x4a7ee1[_0xc477('0x32')]);_0x4f0271[_0xc477('0x34')]=_['intersection'](_0x4f0271[_0xc477('0x35')],_0x4f0271[_0xc477('0x32')]);_0x2b906a[_0xc477('0x36')]=_[_0xc477('0x37')](_0x4f0271[_0xc477('0x35')],qs[_0xc477('0x38')](_0x4a7ee1['query']['fields']));_0x2b906a[_0xc477('0x36')]=_0x2b906a[_0xc477('0x36')][_0xc477('0x39')]?_0x2b906a['attributes']:_0x4f0271['model'];if(!_0x4a7ee1[_0xc477('0x32')][_0xc477('0x3a')](_0xc477('0x3b'))){_0x2b906a['limit']=qs[_0xc477('0x1e')](_0x4a7ee1[_0xc477('0x32')][_0xc477('0x1e')]);_0x2b906a[_0xc477('0x20')]=qs[_0xc477('0x20')](_0x4a7ee1[_0xc477('0x32')]['offset']);}_0x2b906a[_0xc477('0x3c')]=qs[_0xc477('0x3d')](_0x4a7ee1[_0xc477('0x32')][_0xc477('0x3d')]);_0x2b906a[_0xc477('0x3e')]=qs[_0xc477('0x34')](_[_0xc477('0x3f')](_0x4a7ee1[_0xc477('0x32')],_0x4f0271['filters']),_0x3634a7);if(_0x4a7ee1[_0xc477('0x32')]['filter']){_0x2b906a[_0xc477('0x3e')]=_[_0xc477('0x40')](_0x2b906a['where'],{'$or':_['map'](_0x3634a7,function(_0x1e5675){if(_0x1e5675[_0xc477('0x30')]!=='VIRTUAL'){var _0x251b33={};_0x251b33[_0x1e5675[_0xc477('0x29')]]={'$like':'%'+_0x4a7ee1[_0xc477('0x32')]['filter']+'%'};return _0x251b33;}})});}_0x2b906a=_[_0xc477('0x40')]({},_0x2b906a,_0x4a7ee1[_0xc477('0x41')]);var _0x592994={'where':_0x2b906a['where']};return db['VtigerField'][_0xc477('0x1f')](_0x592994)[_0xc477('0x27')](function(_0x2e2e7d){_0x342c44[_0xc477('0x1f')]=_0x2e2e7d;if(_0x4a7ee1['query'][_0xc477('0x42')]){_0x2b906a[_0xc477('0x43')]=[{'all':!![]}];}return db[_0xc477('0x2d')][_0xc477('0x44')](_0x2b906a);})[_0xc477('0x27')](function(_0x44cec4){_0x342c44[_0xc477('0x45')]=_0x44cec4;return _0x342c44;})['then'](respondWithFilteredResult(_0xcc3b52,_0x2b906a))[_0xc477('0x46')](handleError(_0xcc3b52,null));};exports[_0xc477('0x47')]=function(_0x144f47,_0x140c64){var _0x2140b3={'raw':!![],'where':{'id':_0x144f47[_0xc477('0x48')]['id']}},_0x21db9e={};_0x21db9e[_0xc477('0x35')]=_['keys'](db[_0xc477('0x2d')][_0xc477('0x2e')]);_0x21db9e['query']=_[_0xc477('0x33')](_0x144f47[_0xc477('0x32')]);_0x21db9e[_0xc477('0x34')]=_[_0xc477('0x37')](_0x21db9e[_0xc477('0x35')],_0x21db9e[_0xc477('0x32')]);_0x2140b3[_0xc477('0x36')]=_[_0xc477('0x37')](_0x21db9e[_0xc477('0x35')],qs[_0xc477('0x38')](_0x144f47[_0xc477('0x32')][_0xc477('0x38')]));_0x2140b3[_0xc477('0x36')]=_0x2140b3[_0xc477('0x36')][_0xc477('0x39')]?_0x2140b3['attributes']:_0x21db9e[_0xc477('0x35')];if(_0x144f47[_0xc477('0x32')][_0xc477('0x42')]){_0x2140b3[_0xc477('0x43')]=[{'all':!![]}];}_0x2140b3=_['merge']({},_0x2140b3,_0x144f47[_0xc477('0x41')]);return db[_0xc477('0x2d')][_0xc477('0x49')](_0x2140b3)[_0xc477('0x27')](handleEntityNotFound(_0x140c64,null))['then'](respondWithResult(_0x140c64,null))[_0xc477('0x46')](handleError(_0x140c64,null));};exports[_0xc477('0x4a')]=function(_0x299d85,_0x4b313b){return db[_0xc477('0x2d')]['create'](_0x299d85['body'],{})[_0xc477('0x27')](respondWithResult(_0x4b313b,0xc9))[_0xc477('0x46')](handleError(_0x4b313b,null));};exports[_0xc477('0x25')]=function(_0x177f6f,_0x7be298){if(_0x177f6f[_0xc477('0x4b')]['id']){delete _0x177f6f[_0xc477('0x4b')]['id'];}return db['VtigerField']['find']({'where':{'id':_0x177f6f[_0xc477('0x48')]['id']}})[_0xc477('0x27')](handleEntityNotFound(_0x7be298,null))[_0xc477('0x27')](saveUpdates(_0x177f6f[_0xc477('0x4b')],null))[_0xc477('0x27')](respondWithResult(_0x7be298,null))[_0xc477('0x46')](handleError(_0x7be298,null));};exports[_0xc477('0x26')]=function(_0x1e6a53,_0x7e1eb2){return db['VtigerField'][_0xc477('0x49')]({'where':{'id':_0x1e6a53['params']['id']}})['then'](handleEntityNotFound(_0x7e1eb2,null))[_0xc477('0x27')](removeEntity(_0x7e1eb2,null))[_0xc477('0x46')](handleError(_0x7e1eb2,null));};
\ No newline at end of file
index 5e68a41..e3303fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf290=['lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./intVtigerField.attributes','define','VtigerField','int_vtiger_fields','vtiger_unique_index'];(function(_0xf04651,_0x19e0ea){var _0x2201d5=function(_0x3e66f6){while(--_0x3e66f6){_0xf04651['push'](_0xf04651['shift']());}};_0x2201d5(++_0x19e0ea);}(_0xf290,0xf7));var _0x0f29=function(_0x255ac0,_0x3f6645){_0x255ac0=_0x255ac0-0x0;var _0x437bf1=_0xf290[_0x255ac0];return _0x437bf1;};'use strict';var _=require(_0x0f29('0x0'));var util=require(_0x0f29('0x1'));var logger=require(_0x0f29('0x2'))(_0x0f29('0x3'));var moment=require('moment');var BPromise=require(_0x0f29('0x4'));var rp=require(_0x0f29('0x5'));var fs=require('fs');var path=require(_0x0f29('0x6'));var rimraf=require(_0x0f29('0x7'));var config=require('../../config/environment');var attributes=require(_0x0f29('0x8'));module['exports']=function(_0x26a094,_0x490aaf){return _0x26a094[_0x0f29('0x9')](_0x0f29('0xa'),attributes,{'tableName':_0x0f29('0xb'),'paranoid':![],'indexes':[{'name':_0x0f29('0xc'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9700=['api','moment','bluebird','path','rimraf','../../config/environment','./intVtigerField.attributes','define','int_vtiger_fields','idField','FieldId','lodash','util'];(function(_0x2763f2,_0x416af8){var _0x3ef471=function(_0x288aa2){while(--_0x288aa2){_0x2763f2['push'](_0x2763f2['shift']());}};_0x3ef471(++_0x416af8);}(_0x9700,0x9a));var _0x0970=function(_0xa8107,_0x5a159f){_0xa8107=_0xa8107-0x0;var _0x2f2296=_0x9700[_0xa8107];return _0x2f2296;};'use strict';var _=require(_0x0970('0x0'));var util=require(_0x0970('0x1'));var logger=require('../../config/logger')(_0x0970('0x2'));var moment=require(_0x0970('0x3'));var BPromise=require(_0x0970('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0970('0x5'));var rimraf=require(_0x0970('0x6'));var config=require(_0x0970('0x7'));var attributes=require(_0x0970('0x8'));module['exports']=function(_0x163169,_0x5758ae){return _0x163169[_0x0970('0x9')]('VtigerField',attributes,{'tableName':_0x0970('0xa'),'paranoid':![],'indexes':[{'name':'vtiger_unique_index','fields':[_0x0970('0xb'),_0x0970('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index fc94590..5f6c1ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9dc=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','client','http','request','info','VtigerField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0xd9dc,0xa1));var _0xcd9d=function(_0x268dc1,_0x230cef){_0x268dc1=_0x268dc1-0x0;var _0x395f5c=_0xd9dc[_0x268dc1];return _0x395f5c;};'use strict';var _=require(_0xcd9d('0x0'));var util=require(_0xcd9d('0x1'));var moment=require(_0xcd9d('0x2'));var BPromise=require(_0xcd9d('0x3'));var rs=require(_0xcd9d('0x4'));var fs=require('fs');var Redis=require(_0xcd9d('0x5'));var db=require(_0xcd9d('0x6'))['db'];var utils=require(_0xcd9d('0x7'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xcd9d('0x8')][_0xcd9d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x10edff,_0x2427f0,_0x2a48b4){return new BPromise(function(_0x129d77,_0x5e1ab6){return client[_0xcd9d('0xa')](_0x10edff,_0x2a48b4)['then'](function(_0x1a7816){logger[_0xcd9d('0xb')](_0xcd9d('0xc'),_0x2427f0,_0xcd9d('0xd'));logger[_0xcd9d('0xe')]('VtigerField,\x20%s,\x20%s,\x20%s',_0x2427f0,_0xcd9d('0xd'),JSON[_0xcd9d('0xf')](_0x1a7816));if(_0x1a7816[_0xcd9d('0x10')]){if(_0x1a7816['error'][_0xcd9d('0x11')]===0x1f4){logger['error']('VtigerField,\x20%s,\x20%s',_0x2427f0,_0x1a7816[_0xcd9d('0x10')]['message']);return _0x5e1ab6(_0x1a7816[_0xcd9d('0x10')][_0xcd9d('0x12')]);}logger[_0xcd9d('0x10')](_0xcd9d('0xc'),_0x2427f0,_0x1a7816[_0xcd9d('0x10')]['message']);return _0x129d77(_0x1a7816[_0xcd9d('0x10')][_0xcd9d('0x12')]);}else{logger[_0xcd9d('0xb')](_0xcd9d('0xc'),_0x2427f0,'request\x20sent');_0x129d77(_0x1a7816['result']['message']);}})[_0xcd9d('0x13')](function(_0x390786){logger[_0xcd9d('0x10')](_0xcd9d('0xc'),_0x2427f0,_0x390786);_0x5e1ab6(_0x390786);});});}
\ No newline at end of file
+var _0xb5e4=['client','request','info','request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','stringify','code','error','VtigerField,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x32d19e,_0xec5e1c){var _0x57af93=function(_0x20bd3d){while(--_0x20bd3d){_0x32d19e['push'](_0x32d19e['shift']());}};_0x57af93(++_0xec5e1c);}(_0xb5e4,0x1da));var _0x4b5e=function(_0xebba26,_0x2b213d){_0xebba26=_0xebba26-0x0;var _0x1e574c=_0xb5e4[_0xebba26];return _0x1e574c;};'use strict';var _=require(_0x4b5e('0x0'));var util=require(_0x4b5e('0x1'));var moment=require(_0x4b5e('0x2'));var BPromise=require(_0x4b5e('0x3'));var rs=require(_0x4b5e('0x4'));var fs=require('fs');var Redis=require(_0x4b5e('0x5'));var db=require(_0x4b5e('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x4b5e('0x7'))(_0x4b5e('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x4b5e('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3dc1ea,_0x3d5958,_0x1f5448){return new BPromise(function(_0x49c210,_0x51498c){return client[_0x4b5e('0xa')](_0x3dc1ea,_0x1f5448)['then'](function(_0x2f2051){logger[_0x4b5e('0xb')]('VtigerField,\x20%s,\x20%s',_0x3d5958,_0x4b5e('0xc'));logger[_0x4b5e('0xd')](_0x4b5e('0xe'),_0x3d5958,_0x4b5e('0xc'),JSON[_0x4b5e('0xf')](_0x2f2051));if(_0x2f2051['error']){if(_0x2f2051['error'][_0x4b5e('0x10')]===0x1f4){logger[_0x4b5e('0x11')](_0x4b5e('0x12'),_0x3d5958,_0x2f2051[_0x4b5e('0x11')][_0x4b5e('0x13')]);return _0x51498c(_0x2f2051[_0x4b5e('0x11')][_0x4b5e('0x13')]);}logger['error'](_0x4b5e('0x12'),_0x3d5958,_0x2f2051[_0x4b5e('0x11')][_0x4b5e('0x13')]);return _0x49c210(_0x2f2051[_0x4b5e('0x11')][_0x4b5e('0x13')]);}else{logger[_0x4b5e('0xb')](_0x4b5e('0x12'),_0x3d5958,_0x4b5e('0xc'));_0x49c210(_0x2f2051[_0x4b5e('0x14')][_0x4b5e('0x13')]);}})['catch'](function(_0x4b5158){logger[_0x4b5e('0x11')](_0x4b5e('0x12'),_0x3d5958,_0x4b5158);_0x51498c(_0x4b5158);});});}
\ No newline at end of file
index 6fb2a81..7e56b64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3c1=['/:id','show','/:id/configurations','post','addConfiguration','put','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get'];(function(_0x193fa9,_0x561f42){var _0x5e1ad3=function(_0x199c38){while(--_0x199c38){_0x193fa9['push'](_0x193fa9['shift']());}};_0x5e1ad3(++_0x561f42);}(_0xe3c1,0x10c));var _0x1e3c=function(_0x228ac9,_0x42f065){_0x228ac9=_0x228ac9-0x0;var _0x69fe02=_0xe3c1[_0x228ac9];return _0x69fe02;};'use strict';var multer=require(_0x1e3c('0x0'));var util=require(_0x1e3c('0x1'));var path=require(_0x1e3c('0x2'));var timeout=require(_0x1e3c('0x3'));var express=require(_0x1e3c('0x4'));var router=express[_0x1e3c('0x5')]();var fs_extra=require(_0x1e3c('0x6'));var auth=require(_0x1e3c('0x7'));var interaction=require(_0x1e3c('0x8'));var config=require(_0x1e3c('0x9'));var controller=require('./intZendeskAccount.controller');router['get']('/',auth[_0x1e3c('0xa')](),controller['index']);router[_0x1e3c('0xb')](_0x1e3c('0xc'),auth['isAuthenticated'](),controller[_0x1e3c('0xd')]);router[_0x1e3c('0xb')](_0x1e3c('0xe'),auth[_0x1e3c('0xa')](),controller['getConfigurations']);router['get']('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router['post']('/',auth[_0x1e3c('0xa')](),controller['create']);router[_0x1e3c('0xf')](_0x1e3c('0xe'),auth[_0x1e3c('0xa')](),controller[_0x1e3c('0x10')]);router[_0x1e3c('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x1e3c('0x12')]);router['delete']('/:id',auth[_0x1e3c('0xa')](),controller['destroy']);module[_0x1e3c('0x13')]=router;
\ No newline at end of file
+var _0x68dc=['getConfigurations','/:id/fields','post','create','addConfiguration','put','delete','destroy','exports','util','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show','/:id/configurations'];(function(_0x5b7f03,_0x1872d6){var _0xd6aa38=function(_0x489b15){while(--_0x489b15){_0x5b7f03['push'](_0x5b7f03['shift']());}};_0xd6aa38(++_0x1872d6);}(_0x68dc,0x185));var _0xc68d=function(_0xbf8ebe,_0x3b69a5){_0xbf8ebe=_0xbf8ebe-0x0;var _0x1e25e8=_0x68dc[_0xbf8ebe];return _0x1e25e8;};'use strict';var multer=require('multer');var util=require(_0xc68d('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xc68d('0x1'));var auth=require(_0xc68d('0x2'));var interaction=require(_0xc68d('0x3'));var config=require('../../config/environment');var controller=require('./intZendeskAccount.controller');router[_0xc68d('0x4')]('/',auth[_0xc68d('0x5')](),controller[_0xc68d('0x6')]);router['get'](_0xc68d('0x7'),auth[_0xc68d('0x5')](),controller[_0xc68d('0x8')]);router[_0xc68d('0x4')](_0xc68d('0x9'),auth[_0xc68d('0x5')](),controller[_0xc68d('0xa')]);router[_0xc68d('0x4')](_0xc68d('0xb'),auth[_0xc68d('0x5')](),controller['getFields']);router[_0xc68d('0xc')]('/',auth[_0xc68d('0x5')](),controller[_0xc68d('0xd')]);router[_0xc68d('0xc')](_0xc68d('0x9'),auth[_0xc68d('0x5')](),controller[_0xc68d('0xe')]);router[_0xc68d('0xf')](_0xc68d('0x7'),auth[_0xc68d('0x5')](),controller['update']);router[_0xc68d('0x10')](_0xc68d('0x7'),auth[_0xc68d('0x5')](),controller[_0xc68d('0x11')]);module[_0xc68d('0x12')]=router;
\ No newline at end of file
index c35d4b5..2ab7f05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16ce=['password','integrationTab','newTab','exports','STRING','username','ENUM','token'];(function(_0x5d595f,_0x1b636d){var _0x1bf214=function(_0x222b1e){while(--_0x222b1e){_0x5d595f['push'](_0x5d595f['shift']());}};_0x1bf214(++_0x1b636d);}(_0x16ce,0xfb));var _0xe16c=function(_0x589325,_0x323c5a){_0x589325=_0x589325-0x0;var _0x5236f0=_0x16ce[_0x589325];return _0x5236f0;};'use strict';var Sequelize=require('sequelize');module[_0xe16c('0x0')]={'name':{'type':Sequelize[_0xe16c('0x1')]},'description':{'type':Sequelize[_0xe16c('0x1')]},'username':{'type':Sequelize[_0xe16c('0x1')],'unique':_0xe16c('0x2')},'password':{'type':Sequelize[_0xe16c('0x1')]},'token':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING'],'unique':'remoteUri'},'authType':{'type':Sequelize[_0xe16c('0x3')]('password',_0xe16c('0x4')),'defaultValue':_0xe16c('0x5')},'serverUrl':{'type':Sequelize[_0xe16c('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xe16c('0x3')](_0xe16c('0x6'),_0xe16c('0x7')),'defaultValue':_0xe16c('0x6')}};
\ No newline at end of file
+var _0x44ff=['password','integrationTab','newTab','exports','STRING','remoteUri','token'];(function(_0x94cd9e,_0x2b50f2){var _0x1bf136=function(_0xf97f0){while(--_0xf97f0){_0x94cd9e['push'](_0x94cd9e['shift']());}};_0x1bf136(++_0x2b50f2);}(_0x44ff,0x1c3));var _0xf44f=function(_0x5e01ca,_0x2e113e){_0x5e01ca=_0x5e01ca-0x0;var _0x482dcd=_0x44ff[_0x5e01ca];return _0x482dcd;};'use strict';var Sequelize=require('sequelize');module[_0xf44f('0x0')]={'name':{'type':Sequelize[_0xf44f('0x1')]},'description':{'type':Sequelize[_0xf44f('0x1')]},'username':{'type':Sequelize['STRING'],'unique':'username'},'password':{'type':Sequelize['STRING']},'token':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xf44f('0x1')],'unique':_0xf44f('0x2')},'authType':{'type':Sequelize['ENUM']('password',_0xf44f('0x3')),'defaultValue':_0xf44f('0x4')},'serverUrl':{'type':Sequelize[_0xf44f('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xf44f('0x5'),_0xf44f('0x6')),'defaultValue':_0xf44f('0x5')}};
\ No newline at end of file
index 3ead65b..e3da687 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1be1=['type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','filter','merge','where','VIRTUAL','options','ZendeskAccount','include','findAll','rows','catch','show','params','rawAttributes','includeAll','find','create','body','update','getConfigurations','findOne','ZendeskConfiguration','pick','length','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZendeskField','username','password','authType','remoteUri','GET','format','%s/%s','ticket_fields','headers','Basic\x20%s','toString','base64','%s/token:%s','Sequelize','ValidationError','subject','description','group','remove','includes','position','title','system_field_options','custom_field_options','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','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','sendStatus','offset','undefined','limit','status','set','json','apply','reject','save','then','destroy','error','stack','name','send','index','map','fieldName'];(function(_0x296923,_0x4adaed){var _0x29af70=function(_0x4eeedb){while(--_0x4eeedb){_0x296923['push'](_0x296923['shift']());}};_0x29af70(++_0x4adaed);}(_0x1be1,0x192));var _0x11be=function(_0x539029,_0x85fd4d){_0x539029=_0x539029-0x0;var _0x4c798d=_0x1be1[_0x539029];return _0x4c798d;};'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'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x3ff31f,_0x2dad05){_0x2dad05=_0x2dad05||0xcc;return function(_0x4ce3ae){if(_0x4ce3ae){return _0x3ff31f[_0x11be('0x17')](_0x2dad05);}return _0x3ff31f['status'](_0x2dad05)['end']();};}function respondWithResult(_0x569842,_0x4b6e7e){_0x4b6e7e=_0x4b6e7e||0xc8;return function(_0x4e4efd){if(_0x4e4efd){return _0x569842['status'](_0x4b6e7e)['json'](_0x4e4efd);}};}function respondWithFilteredResult(_0x2280e2,_0x52bbef){return function(_0x31047c){if(_0x31047c){var _0x241eec=typeof _0x52bbef[_0x11be('0x18')]===_0x11be('0x19')&&typeof _0x52bbef['limit']===_0x11be('0x19');var _0x403d7a=_0x31047c['count'];var _0x299f45=_0x241eec?0x0:_0x52bbef[_0x11be('0x18')];var _0x23aa5f=_0x241eec?_0x31047c['count']:_0x52bbef['offset']+_0x52bbef[_0x11be('0x1a')];var _0x976e51;if(_0x23aa5f>=_0x403d7a){_0x23aa5f=_0x403d7a;_0x976e51=0xc8;}else{_0x976e51=0xce;}_0x2280e2[_0x11be('0x1b')](_0x976e51);return _0x2280e2[_0x11be('0x1c')]('Content-Range',_0x299f45+'-'+_0x23aa5f+'/'+_0x403d7a)[_0x11be('0x1d')](_0x31047c);}return null;};}function patchUpdates(_0x45136f){return function(_0x1c6dd4){try{jsonpatch[_0x11be('0x1e')](_0x1c6dd4,_0x45136f,!![]);}catch(_0x7c554a){return BPromise[_0x11be('0x1f')](_0x7c554a);}return _0x1c6dd4[_0x11be('0x20')]();};}function saveUpdates(_0x17678d,_0x3aea14){return function(_0x2782ae){if(_0x2782ae){return _0x2782ae['update'](_0x17678d)[_0x11be('0x21')](function(_0x46b7c2){return _0x46b7c2;});}return null;};}function removeEntity(_0x2fe43c,_0x5d1690){return function(_0x4b329b){if(_0x4b329b){return _0x4b329b[_0x11be('0x22')]()[_0x11be('0x21')](function(){_0x2fe43c[_0x11be('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x106167,_0x518e2b){return function(_0x46111f){if(!_0x46111f){_0x106167['sendStatus'](0x194);}return _0x46111f;};}function handleError(_0x28310d,_0xb11f3d){_0xb11f3d=_0xb11f3d||0x1f4;return function(_0x5002d7){logger[_0x11be('0x23')](_0x5002d7[_0x11be('0x24')]);if(_0x5002d7[_0x11be('0x25')]){delete _0x5002d7[_0x11be('0x25')];}_0x28310d[_0x11be('0x1b')](_0xb11f3d)[_0x11be('0x26')](_0x5002d7);};}exports[_0x11be('0x27')]=function(_0x2cf9aa,_0x43ab30){var _0x5966c5={},_0x32c796={},_0x4e899f={'count':0x0,'rows':[]};var _0x182f6b=_[_0x11be('0x28')](db['ZendeskAccount']['rawAttributes'],function(_0x49fd5c){return{'name':_0x49fd5c[_0x11be('0x29')],'type':_0x49fd5c[_0x11be('0x2a')][_0x11be('0x2b')]};});_0x32c796[_0x11be('0x2c')]=_[_0x11be('0x28')](_0x182f6b,_0x11be('0x25'));_0x32c796[_0x11be('0x2d')]=_[_0x11be('0x2e')](_0x2cf9aa['query']);_0x32c796[_0x11be('0x2f')]=_[_0x11be('0x30')](_0x32c796[_0x11be('0x2c')],_0x32c796[_0x11be('0x2d')]);_0x5966c5[_0x11be('0x31')]=_[_0x11be('0x30')](_0x32c796['model'],qs[_0x11be('0x32')](_0x2cf9aa[_0x11be('0x2d')][_0x11be('0x32')]));_0x5966c5[_0x11be('0x31')]=_0x5966c5[_0x11be('0x31')]['length']?_0x5966c5[_0x11be('0x31')]:_0x32c796[_0x11be('0x2c')];if(!_0x2cf9aa[_0x11be('0x2d')]['hasOwnProperty'](_0x11be('0x33'))){_0x5966c5['limit']=qs['limit'](_0x2cf9aa['query']['limit']);_0x5966c5[_0x11be('0x18')]=qs[_0x11be('0x18')](_0x2cf9aa[_0x11be('0x2d')]['offset']);}_0x5966c5[_0x11be('0x34')]=qs[_0x11be('0x35')](_0x2cf9aa['query'][_0x11be('0x35')]);_0x5966c5['where']=qs[_0x11be('0x2f')](_['pick'](_0x2cf9aa[_0x11be('0x2d')],_0x32c796[_0x11be('0x2f')]),_0x182f6b);if(_0x2cf9aa[_0x11be('0x2d')][_0x11be('0x36')]){_0x5966c5['where']=_[_0x11be('0x37')](_0x5966c5[_0x11be('0x38')],{'$or':_[_0x11be('0x28')](_0x182f6b,function(_0x18d402){if(_0x18d402['type']!==_0x11be('0x39')){var _0x361877={};_0x361877[_0x18d402[_0x11be('0x25')]]={'$like':'%'+_0x2cf9aa[_0x11be('0x2d')][_0x11be('0x36')]+'%'};return _0x361877;}})});}_0x5966c5=_[_0x11be('0x37')]({},_0x5966c5,_0x2cf9aa[_0x11be('0x3a')]);var _0x5ee47c={'where':_0x5966c5[_0x11be('0x38')]};return db[_0x11be('0x3b')]['count'](_0x5ee47c)[_0x11be('0x21')](function(_0x28df0f){_0x4e899f['count']=_0x28df0f;if(_0x2cf9aa[_0x11be('0x2d')]['includeAll']){_0x5966c5[_0x11be('0x3c')]=[{'all':!![]}];}return db['ZendeskAccount'][_0x11be('0x3d')](_0x5966c5);})[_0x11be('0x21')](function(_0x5db494){_0x4e899f[_0x11be('0x3e')]=_0x5db494;return _0x4e899f;})['then'](respondWithFilteredResult(_0x43ab30,_0x5966c5))[_0x11be('0x3f')](handleError(_0x43ab30,null));};exports[_0x11be('0x40')]=function(_0x2deae3,_0x383604){var _0x2b847a={'raw':![],'where':{'id':_0x2deae3[_0x11be('0x41')]['id']}},_0x182c28={};_0x182c28['model']=_[_0x11be('0x2e')](db[_0x11be('0x3b')][_0x11be('0x42')]);_0x182c28[_0x11be('0x2d')]=_['keys'](_0x2deae3['query']);_0x182c28['filters']=_[_0x11be('0x30')](_0x182c28['model'],_0x182c28[_0x11be('0x2d')]);_0x2b847a['attributes']=_[_0x11be('0x30')](_0x182c28[_0x11be('0x2c')],qs[_0x11be('0x32')](_0x2deae3[_0x11be('0x2d')][_0x11be('0x32')]));_0x2b847a[_0x11be('0x31')]=_0x2b847a[_0x11be('0x31')]['length']?_0x2b847a[_0x11be('0x31')]:_0x182c28['model'];if(_0x2deae3[_0x11be('0x2d')][_0x11be('0x43')]){_0x2b847a[_0x11be('0x3c')]=[{'all':!![]}];}_0x2b847a=_['merge']({},_0x2b847a,_0x2deae3['options']);return db['ZendeskAccount'][_0x11be('0x44')](_0x2b847a)[_0x11be('0x21')](handleEntityNotFound(_0x383604,null))['then'](respondWithResult(_0x383604,null))['catch'](handleError(_0x383604,null));};exports['create']=function(_0x44e2e8,_0x1dfece){return db[_0x11be('0x3b')][_0x11be('0x45')](_0x44e2e8[_0x11be('0x46')],{})[_0x11be('0x21')](respondWithResult(_0x1dfece,0xc9))[_0x11be('0x3f')](handleError(_0x1dfece,null));};exports[_0x11be('0x47')]=function(_0x2ce110,_0x205582){if(_0x2ce110[_0x11be('0x46')]['id']){delete _0x2ce110['body']['id'];}return db[_0x11be('0x3b')][_0x11be('0x44')]({'where':{'id':_0x2ce110['params']['id']}})['then'](handleEntityNotFound(_0x205582,null))['then'](saveUpdates(_0x2ce110[_0x11be('0x46')],null))['then'](respondWithResult(_0x205582,null))[_0x11be('0x3f')](handleError(_0x205582,null));};exports[_0x11be('0x22')]=function(_0x2716dc,_0x1fb48d){return db[_0x11be('0x3b')][_0x11be('0x44')]({'where':{'id':_0x2716dc[_0x11be('0x41')]['id']}})[_0x11be('0x21')](handleEntityNotFound(_0x1fb48d,null))[_0x11be('0x21')](removeEntity(_0x1fb48d,null))['catch'](handleError(_0x1fb48d,null));};exports[_0x11be('0x48')]=function(_0x4ad866,_0x1737ef,_0x2e74f0){var _0x5a776a={};var _0x46f15b={};var _0x1164a4;var _0x4c0e37;return db[_0x11be('0x3b')][_0x11be('0x49')]({'where':{'id':_0x4ad866['params']['id']}})['then'](handleEntityNotFound(_0x1737ef,null))[_0x11be('0x21')](function(_0x2886ac){if(_0x2886ac){_0x1164a4=_0x2886ac;_0x46f15b['model']=_['keys'](db[_0x11be('0x4a')][_0x11be('0x42')]);_0x46f15b[_0x11be('0x2d')]=_['keys'](_0x4ad866['query']);_0x46f15b['filters']=_[_0x11be('0x30')](_0x46f15b[_0x11be('0x2c')],_0x46f15b[_0x11be('0x2d')]);_0x5a776a['attributes']=_['intersection'](_0x46f15b[_0x11be('0x2c')],qs[_0x11be('0x32')](_0x4ad866[_0x11be('0x2d')][_0x11be('0x32')]));_0x5a776a['attributes']=_0x5a776a[_0x11be('0x31')]['length']?_0x5a776a['attributes']:_0x46f15b['model'];_0x5a776a['order']=qs[_0x11be('0x35')](_0x4ad866[_0x11be('0x2d')][_0x11be('0x35')]);_0x5a776a[_0x11be('0x38')]=qs[_0x11be('0x2f')](_[_0x11be('0x4b')](_0x4ad866[_0x11be('0x2d')],_0x46f15b['filters']));if(_0x4ad866['query'][_0x11be('0x36')]){_0x5a776a[_0x11be('0x38')]=_[_0x11be('0x37')](_0x5a776a[_0x11be('0x38')],{'$or':_[_0x11be('0x28')](_0x5a776a[_0x11be('0x31')],function(_0xb56259){var _0x3816ab={};_0x3816ab[_0xb56259]={'$like':'%'+_0x4ad866[_0x11be('0x2d')]['filter']+'%'};return _0x3816ab;})});}_0x5a776a=_[_0x11be('0x37')]({},_0x5a776a,_0x4ad866[_0x11be('0x3a')]);return _0x1164a4[_0x11be('0x48')](_0x5a776a);}})['then'](function(_0x3b3cf9){if(_0x3b3cf9){_0x4c0e37=_0x3b3cf9[_0x11be('0x4c')];if(!_0x4ad866['query']['hasOwnProperty'](_0x11be('0x33'))){_0x5a776a[_0x11be('0x1a')]=qs[_0x11be('0x1a')](_0x4ad866[_0x11be('0x2d')]['limit']);_0x5a776a[_0x11be('0x18')]=qs[_0x11be('0x18')](_0x4ad866[_0x11be('0x2d')][_0x11be('0x18')]);}return _0x1164a4[_0x11be('0x48')](_0x5a776a);}})[_0x11be('0x21')](function(_0x44c88d){if(_0x44c88d){return _0x44c88d?{'count':_0x4c0e37,'rows':_0x44c88d}:null;}})[_0x11be('0x21')](respondWithResult(_0x1737ef,null))[_0x11be('0x3f')](handleError(_0x1737ef,null));};exports['addConfiguration']=function(_0x558a57,_0x9237ea,_0x138156){if(_0x558a57['body']['id']){delete _0x558a57[_0x11be('0x46')]['id'];}return db[_0x11be('0x3b')][_0x11be('0x49')]({'where':{'id':_0x558a57[_0x11be('0x41')]['id']}})[_0x11be('0x21')](handleEntityNotFound(_0x9237ea,null))[_0x11be('0x21')](function(_0x308599){if(_0x308599){_0x558a57['body']['AccountId']=_0x308599['id'];_0x558a57[_0x11be('0x46')][_0x11be('0x4d')]=integrations[_0x11be('0x4e')](_0x558a57['body'][_0x11be('0x4f')],_0x558a57[_0x11be('0x46')][_0x11be('0x2a')]);_0x558a57[_0x11be('0x46')][_0x11be('0x50')]=integrations[_0x11be('0x51')](_0x558a57[_0x11be('0x46')][_0x11be('0x4f')],_0x558a57[_0x11be('0x46')][_0x11be('0x2a')]);return db[_0x11be('0x4a')][_0x11be('0x45')](_0x558a57[_0x11be('0x46')],{'include':[{'model':db[_0x11be('0x52')],'as':_0x11be('0x4d')},{'model':db[_0x11be('0x52')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x9237ea,null))[_0x11be('0x3f')](handleError(_0x9237ea,null));};exports['getFields']=function(_0x1c92cd,_0xbe1daf,_0x422e33){var _0x2f895f='';return db[_0x11be('0x3b')][_0x11be('0x49')]({'where':{'id':_0x1c92cd[_0x11be('0x41')]['id']},'attributes':['id',_0x11be('0x53'),_0x11be('0x54'),'token',_0x11be('0x55'),_0x11be('0x56')]})[_0x11be('0x21')](handleEntityNotFound(_0xbe1daf,null))['then'](function(_0x3006e2){if(_0x3006e2){_0x2f895f=_0x3006e2[_0x11be('0x56')];var _0x530c68=_0x2f895f['slice'](-0x1);if(_0x530c68==='/'){_0x2f895f=_0x2f895f['substring'](0x0,_0x2f895f['lastIndexOf'](_0x530c68));}var _0xe5d364={'method':_0x11be('0x57'),'uri':util[_0x11be('0x58')](_0x11be('0x59'),_0x2f895f,_0x11be('0x5a')),'json':!![]};switch(_0x3006e2['authType']){case _0x11be('0x54'):_0xe5d364[_0x11be('0x5b')]={'Authorization':util[_0x11be('0x58')](_0x11be('0x5c'),new Buffer(util[_0x11be('0x58')]('%s:%s',_0x3006e2[_0x11be('0x53')],_0x3006e2[_0x11be('0x54')]))[_0x11be('0x5d')](_0x11be('0x5e')))};break;case'token':_0xe5d364[_0x11be('0x5b')]={'Authorization':util[_0x11be('0x58')](_0x11be('0x5c'),new Buffer(util[_0x11be('0x58')](_0x11be('0x5f'),_0x3006e2[_0x11be('0x53')],_0x3006e2['token']))[_0x11be('0x5d')](_0x11be('0x5e')))};break;default:throw new db[(_0x11be('0x60'))][(_0x11be('0x61'))]('Unknown\x20authentication\x20type');}return rp(_0xe5d364);}})[_0x11be('0x21')](function(_0x531953){if(_0x531953){var _0x278650=[_0x11be('0x62'),_0x11be('0x63'),_0x11be('0x64'),'assignee'];_[_0x11be('0x65')](_0x531953[_0x11be('0x5a')],function(_0x4e77ca){return _0x278650[_0x11be('0x66')](_0x4e77ca[_0x11be('0x2a')]);});return{'count':_0x531953[_0x11be('0x5a')][_0x11be('0x4c')],'rows':_['map'](_0x531953[_0x11be('0x5a')],function(_0x2ab4ce){return{'id':_0x2ab4ce['id'],'name':_0x2ab4ce[_0x11be('0x67')]>0x7?_0x2ab4ce[_0x11be('0x68')]:_0x2ab4ce[_0x11be('0x2a')],'custom':_0x2ab4ce[_0x11be('0x67')]>0x7?!![]:![],'options':_0x2ab4ce[_0x11be('0x69')]?_0x2ab4ce[_0x11be('0x69')]:_0x2ab4ce['custom_field_options']?_0x2ab4ce[_0x11be('0x6a')]:[]};})};}})['then'](respondWithResult(_0xbe1daf,null))['catch'](function(_0x151b88){var _0x658255=_0x1c92cd[_0x11be('0x2d')][_0x11be('0x6b')]?0x1f4:_0x151b88[_0x11be('0x6c')]||0x1f4;logger[_0x11be('0x23')](_0x11be('0x6d'),'getFields',_0x658255,JSON['stringify'](_0x151b88));delete _0x151b88[_0x11be('0x25')];if(_0x658255===0x191){_0x658255=0x190;}_0xbe1daf['status'](_0x658255)['send'](_0x1c92cd[_0x11be('0x2d')]['test']?{'message':_0x11be('0x6e'),'statusCode':_0x151b88[_0x11be('0x6c')]}:_0x151b88);});};
\ No newline at end of file
+var _0xab40=['../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','reject','save','then','destroy','error','name','rawAttributes','fieldName','type','key','query','keys','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','map','VIRTUAL','merge','options','ZendeskAccount','include','findAll','rows','catch','show','params','includeAll','find','create','body','update','findOne','ZendeskConfiguration','order','getConfigurations','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZendeskField','getFields','username','token','authType','remoteUri','slice','lastIndexOf','format','%s/%s','ticket_fields','password','headers','Basic\x20%s','toString','base64','Sequelize','ValidationError','Unknown\x20authentication\x20type','description','assignee','remove','includes','position','title','system_field_options','custom_field_options','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','send','Wrong\x20credentials','eml-format','rimraf','moment','bluebird','mustache','util','path','ejs','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util'];(function(_0x24ffa5,_0x119b94){var _0x1f0a5f=function(_0x3c013f){while(--_0x3c013f){_0x24ffa5['push'](_0x24ffa5['shift']());}};_0x1f0a5f(++_0x119b94);}(_0xab40,0xcd));var _0x0ab4=function(_0x46c46f,_0x31de69){_0x46c46f=_0x46c46f-0x0;var _0x280cc9=_0xab40[_0x46c46f];return _0x280cc9;};'use strict';var emlformat=require(_0x0ab4('0x0'));var rimraf=require(_0x0ab4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0ab4('0x2'));var BPromise=require(_0x0ab4('0x3'));var Mustache=require(_0x0ab4('0x4'));var util=require(_0x0ab4('0x5'));var path=require(_0x0ab4('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x0ab4('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0ab4('0x8'));var squel=require(_0x0ab4('0x9'));var crypto=require(_0x0ab4('0xa'));var jsforce=require(_0x0ab4('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0ab4('0xc'));var Redis=require(_0x0ab4('0xd'));var authService=require(_0x0ab4('0xe'));var qs=require(_0x0ab4('0xf'));var as=require(_0x0ab4('0x10'));var hardwareService=require(_0x0ab4('0x11'));var logger=require(_0x0ab4('0x12'))(_0x0ab4('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0ab4('0x14'));var db=require('../../mysqldb')['db'];var integrations=require(_0x0ab4('0x15'));function respondWithStatusCode(_0x45e6fd,_0x1e7555){_0x1e7555=_0x1e7555||0xcc;return function(_0x1e2b56){if(_0x1e2b56){return _0x45e6fd[_0x0ab4('0x16')](_0x1e7555);}return _0x45e6fd[_0x0ab4('0x17')](_0x1e7555)[_0x0ab4('0x18')]();};}function respondWithResult(_0x2cc644,_0x3cb1df){_0x3cb1df=_0x3cb1df||0xc8;return function(_0x2033c8){if(_0x2033c8){return _0x2cc644[_0x0ab4('0x17')](_0x3cb1df)[_0x0ab4('0x19')](_0x2033c8);}};}function respondWithFilteredResult(_0x293e20,_0x45fad1){return function(_0x2a83a8){if(_0x2a83a8){var _0x2403db=typeof _0x45fad1[_0x0ab4('0x1a')]===_0x0ab4('0x1b')&&typeof _0x45fad1['limit']==='undefined';var _0x49634f=_0x2a83a8[_0x0ab4('0x1c')];var _0x30d5df=_0x2403db?0x0:_0x45fad1[_0x0ab4('0x1a')];var _0x53723c=_0x2403db?_0x2a83a8[_0x0ab4('0x1c')]:_0x45fad1[_0x0ab4('0x1a')]+_0x45fad1[_0x0ab4('0x1d')];var _0x31ee29;if(_0x53723c>=_0x49634f){_0x53723c=_0x49634f;_0x31ee29=0xc8;}else{_0x31ee29=0xce;}_0x293e20['status'](_0x31ee29);return _0x293e20['set'](_0x0ab4('0x1e'),_0x30d5df+'-'+_0x53723c+'/'+_0x49634f)['json'](_0x2a83a8);}return null;};}function patchUpdates(_0x2b0e29){return function(_0x30abff){try{jsonpatch['apply'](_0x30abff,_0x2b0e29,!![]);}catch(_0xacd68e){return BPromise[_0x0ab4('0x1f')](_0xacd68e);}return _0x30abff[_0x0ab4('0x20')]();};}function saveUpdates(_0x1d5c14,_0x12d06d){return function(_0x52d7d3){if(_0x52d7d3){return _0x52d7d3['update'](_0x1d5c14)[_0x0ab4('0x21')](function(_0x14087f){return _0x14087f;});}return null;};}function removeEntity(_0x392afe,_0x13c882){return function(_0x4e4b80){if(_0x4e4b80){return _0x4e4b80[_0x0ab4('0x22')]()[_0x0ab4('0x21')](function(){_0x392afe[_0x0ab4('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4c5caf,_0x176ff1){return function(_0x1c132c){if(!_0x1c132c){_0x4c5caf[_0x0ab4('0x16')](0x194);}return _0x1c132c;};}function handleError(_0x4ae515,_0x519b23){_0x519b23=_0x519b23||0x1f4;return function(_0x49c72d){logger[_0x0ab4('0x23')](_0x49c72d['stack']);if(_0x49c72d[_0x0ab4('0x24')]){delete _0x49c72d[_0x0ab4('0x24')];}_0x4ae515['status'](_0x519b23)['send'](_0x49c72d);};}exports['index']=function(_0x3d38a4,_0x183bac){var _0x1cfdad={},_0x3f61cb={},_0x25385e={'count':0x0,'rows':[]};var _0x588e0d=_['map'](db['ZendeskAccount'][_0x0ab4('0x25')],function(_0x2b66d5){return{'name':_0x2b66d5[_0x0ab4('0x26')],'type':_0x2b66d5[_0x0ab4('0x27')][_0x0ab4('0x28')]};});_0x3f61cb['model']=_['map'](_0x588e0d,_0x0ab4('0x24'));_0x3f61cb[_0x0ab4('0x29')]=_[_0x0ab4('0x2a')](_0x3d38a4['query']);_0x3f61cb['filters']=_[_0x0ab4('0x2b')](_0x3f61cb['model'],_0x3f61cb[_0x0ab4('0x29')]);_0x1cfdad[_0x0ab4('0x2c')]=_[_0x0ab4('0x2b')](_0x3f61cb[_0x0ab4('0x2d')],qs[_0x0ab4('0x2e')](_0x3d38a4[_0x0ab4('0x29')]['fields']));_0x1cfdad[_0x0ab4('0x2c')]=_0x1cfdad[_0x0ab4('0x2c')][_0x0ab4('0x2f')]?_0x1cfdad[_0x0ab4('0x2c')]:_0x3f61cb['model'];if(!_0x3d38a4['query'][_0x0ab4('0x30')](_0x0ab4('0x31'))){_0x1cfdad[_0x0ab4('0x1d')]=qs['limit'](_0x3d38a4['query']['limit']);_0x1cfdad[_0x0ab4('0x1a')]=qs[_0x0ab4('0x1a')](_0x3d38a4[_0x0ab4('0x29')]['offset']);}_0x1cfdad['order']=qs['sort'](_0x3d38a4[_0x0ab4('0x29')][_0x0ab4('0x32')]);_0x1cfdad[_0x0ab4('0x33')]=qs[_0x0ab4('0x34')](_[_0x0ab4('0x35')](_0x3d38a4[_0x0ab4('0x29')],_0x3f61cb[_0x0ab4('0x34')]),_0x588e0d);if(_0x3d38a4[_0x0ab4('0x29')][_0x0ab4('0x36')]){_0x1cfdad[_0x0ab4('0x33')]=_['merge'](_0x1cfdad[_0x0ab4('0x33')],{'$or':_[_0x0ab4('0x37')](_0x588e0d,function(_0xb6bc6a){if(_0xb6bc6a[_0x0ab4('0x27')]!==_0x0ab4('0x38')){var _0x34c74f={};_0x34c74f[_0xb6bc6a[_0x0ab4('0x24')]]={'$like':'%'+_0x3d38a4[_0x0ab4('0x29')][_0x0ab4('0x36')]+'%'};return _0x34c74f;}})});}_0x1cfdad=_[_0x0ab4('0x39')]({},_0x1cfdad,_0x3d38a4[_0x0ab4('0x3a')]);var _0x1974ce={'where':_0x1cfdad['where']};return db[_0x0ab4('0x3b')][_0x0ab4('0x1c')](_0x1974ce)[_0x0ab4('0x21')](function(_0x3acb8d){_0x25385e['count']=_0x3acb8d;if(_0x3d38a4[_0x0ab4('0x29')]['includeAll']){_0x1cfdad[_0x0ab4('0x3c')]=[{'all':!![]}];}return db[_0x0ab4('0x3b')][_0x0ab4('0x3d')](_0x1cfdad);})[_0x0ab4('0x21')](function(_0xd2293){_0x25385e[_0x0ab4('0x3e')]=_0xd2293;return _0x25385e;})['then'](respondWithFilteredResult(_0x183bac,_0x1cfdad))[_0x0ab4('0x3f')](handleError(_0x183bac,null));};exports[_0x0ab4('0x40')]=function(_0xe3df73,_0x48029f){var _0x395e0b={'raw':![],'where':{'id':_0xe3df73[_0x0ab4('0x41')]['id']}},_0xeac8ad={};_0xeac8ad[_0x0ab4('0x2d')]=_[_0x0ab4('0x2a')](db['ZendeskAccount']['rawAttributes']);_0xeac8ad['query']=_[_0x0ab4('0x2a')](_0xe3df73[_0x0ab4('0x29')]);_0xeac8ad['filters']=_[_0x0ab4('0x2b')](_0xeac8ad['model'],_0xeac8ad[_0x0ab4('0x29')]);_0x395e0b['attributes']=_[_0x0ab4('0x2b')](_0xeac8ad[_0x0ab4('0x2d')],qs[_0x0ab4('0x2e')](_0xe3df73[_0x0ab4('0x29')][_0x0ab4('0x2e')]));_0x395e0b[_0x0ab4('0x2c')]=_0x395e0b['attributes'][_0x0ab4('0x2f')]?_0x395e0b[_0x0ab4('0x2c')]:_0xeac8ad[_0x0ab4('0x2d')];if(_0xe3df73[_0x0ab4('0x29')][_0x0ab4('0x42')]){_0x395e0b[_0x0ab4('0x3c')]=[{'all':!![]}];}_0x395e0b=_['merge']({},_0x395e0b,_0xe3df73[_0x0ab4('0x3a')]);return db['ZendeskAccount'][_0x0ab4('0x43')](_0x395e0b)[_0x0ab4('0x21')](handleEntityNotFound(_0x48029f,null))[_0x0ab4('0x21')](respondWithResult(_0x48029f,null))['catch'](handleError(_0x48029f,null));};exports[_0x0ab4('0x44')]=function(_0x1fcc3b,_0x1ce096){return db[_0x0ab4('0x3b')][_0x0ab4('0x44')](_0x1fcc3b[_0x0ab4('0x45')],{})['then'](respondWithResult(_0x1ce096,0xc9))[_0x0ab4('0x3f')](handleError(_0x1ce096,null));};exports[_0x0ab4('0x46')]=function(_0x302894,_0x2801ff){if(_0x302894[_0x0ab4('0x45')]['id']){delete _0x302894[_0x0ab4('0x45')]['id'];}return db[_0x0ab4('0x3b')][_0x0ab4('0x43')]({'where':{'id':_0x302894[_0x0ab4('0x41')]['id']}})[_0x0ab4('0x21')](handleEntityNotFound(_0x2801ff,null))[_0x0ab4('0x21')](saveUpdates(_0x302894[_0x0ab4('0x45')],null))[_0x0ab4('0x21')](respondWithResult(_0x2801ff,null))['catch'](handleError(_0x2801ff,null));};exports[_0x0ab4('0x22')]=function(_0x354bc,_0x5800cc){return db[_0x0ab4('0x3b')]['find']({'where':{'id':_0x354bc['params']['id']}})[_0x0ab4('0x21')](handleEntityNotFound(_0x5800cc,null))[_0x0ab4('0x21')](removeEntity(_0x5800cc,null))[_0x0ab4('0x3f')](handleError(_0x5800cc,null));};exports['getConfigurations']=function(_0x12a2df,_0xb3bd1e,_0xeddaa1){var _0xaed2d={};var _0x30ba95={};var _0x3f20de;var _0x1eea3b;return db['ZendeskAccount'][_0x0ab4('0x47')]({'where':{'id':_0x12a2df['params']['id']}})[_0x0ab4('0x21')](handleEntityNotFound(_0xb3bd1e,null))['then'](function(_0x2597f2){if(_0x2597f2){_0x3f20de=_0x2597f2;_0x30ba95['model']=_['keys'](db[_0x0ab4('0x48')][_0x0ab4('0x25')]);_0x30ba95[_0x0ab4('0x29')]=_[_0x0ab4('0x2a')](_0x12a2df['query']);_0x30ba95[_0x0ab4('0x34')]=_[_0x0ab4('0x2b')](_0x30ba95[_0x0ab4('0x2d')],_0x30ba95[_0x0ab4('0x29')]);_0xaed2d[_0x0ab4('0x2c')]=_[_0x0ab4('0x2b')](_0x30ba95[_0x0ab4('0x2d')],qs[_0x0ab4('0x2e')](_0x12a2df[_0x0ab4('0x29')][_0x0ab4('0x2e')]));_0xaed2d[_0x0ab4('0x2c')]=_0xaed2d[_0x0ab4('0x2c')][_0x0ab4('0x2f')]?_0xaed2d[_0x0ab4('0x2c')]:_0x30ba95[_0x0ab4('0x2d')];_0xaed2d[_0x0ab4('0x49')]=qs[_0x0ab4('0x32')](_0x12a2df[_0x0ab4('0x29')][_0x0ab4('0x32')]);_0xaed2d['where']=qs[_0x0ab4('0x34')](_[_0x0ab4('0x35')](_0x12a2df[_0x0ab4('0x29')],_0x30ba95[_0x0ab4('0x34')]));if(_0x12a2df[_0x0ab4('0x29')][_0x0ab4('0x36')]){_0xaed2d[_0x0ab4('0x33')]=_[_0x0ab4('0x39')](_0xaed2d['where'],{'$or':_[_0x0ab4('0x37')](_0xaed2d[_0x0ab4('0x2c')],function(_0x54ea92){var _0x48191f={};_0x48191f[_0x54ea92]={'$like':'%'+_0x12a2df[_0x0ab4('0x29')][_0x0ab4('0x36')]+'%'};return _0x48191f;})});}_0xaed2d=_['merge']({},_0xaed2d,_0x12a2df['options']);return _0x3f20de[_0x0ab4('0x4a')](_0xaed2d);}})['then'](function(_0x597d26){if(_0x597d26){_0x1eea3b=_0x597d26[_0x0ab4('0x2f')];if(!_0x12a2df[_0x0ab4('0x29')][_0x0ab4('0x30')](_0x0ab4('0x31'))){_0xaed2d[_0x0ab4('0x1d')]=qs[_0x0ab4('0x1d')](_0x12a2df[_0x0ab4('0x29')]['limit']);_0xaed2d[_0x0ab4('0x1a')]=qs[_0x0ab4('0x1a')](_0x12a2df[_0x0ab4('0x29')][_0x0ab4('0x1a')]);}return _0x3f20de[_0x0ab4('0x4a')](_0xaed2d);}})[_0x0ab4('0x21')](function(_0x4f1847){if(_0x4f1847){return _0x4f1847?{'count':_0x1eea3b,'rows':_0x4f1847}:null;}})[_0x0ab4('0x21')](respondWithResult(_0xb3bd1e,null))[_0x0ab4('0x3f')](handleError(_0xb3bd1e,null));};exports['addConfiguration']=function(_0x66364c,_0x5b41af,_0x410198){if(_0x66364c['body']['id']){delete _0x66364c[_0x0ab4('0x45')]['id'];}return db[_0x0ab4('0x3b')][_0x0ab4('0x47')]({'where':{'id':_0x66364c[_0x0ab4('0x41')]['id']}})['then'](handleEntityNotFound(_0x5b41af,null))['then'](function(_0x10dd5b){if(_0x10dd5b){_0x66364c[_0x0ab4('0x45')]['AccountId']=_0x10dd5b['id'];_0x66364c[_0x0ab4('0x45')][_0x0ab4('0x4b')]=integrations[_0x0ab4('0x4c')](_0x66364c['body'][_0x0ab4('0x4d')],_0x66364c[_0x0ab4('0x45')][_0x0ab4('0x27')]);_0x66364c[_0x0ab4('0x45')][_0x0ab4('0x4e')]=integrations[_0x0ab4('0x4f')](_0x66364c[_0x0ab4('0x45')][_0x0ab4('0x4d')],_0x66364c['body']['type']);return db[_0x0ab4('0x48')][_0x0ab4('0x44')](_0x66364c[_0x0ab4('0x45')],{'include':[{'model':db[_0x0ab4('0x50')],'as':'Subjects'},{'model':db[_0x0ab4('0x50')],'as':'Descriptions'}]});}return null;})[_0x0ab4('0x21')](respondWithResult(_0x5b41af,null))[_0x0ab4('0x3f')](handleError(_0x5b41af,null));};exports[_0x0ab4('0x51')]=function(_0x3e5f11,_0x340129,_0x41b65f){var _0x46a008='';return db[_0x0ab4('0x3b')][_0x0ab4('0x47')]({'where':{'id':_0x3e5f11['params']['id']},'attributes':['id',_0x0ab4('0x52'),'password',_0x0ab4('0x53'),_0x0ab4('0x54'),_0x0ab4('0x55')]})[_0x0ab4('0x21')](handleEntityNotFound(_0x340129,null))[_0x0ab4('0x21')](function(_0x32282c){if(_0x32282c){_0x46a008=_0x32282c[_0x0ab4('0x55')];var _0xa3a87c=_0x46a008[_0x0ab4('0x56')](-0x1);if(_0xa3a87c==='/'){_0x46a008=_0x46a008['substring'](0x0,_0x46a008[_0x0ab4('0x57')](_0xa3a87c));}var _0x9b1a87={'method':'GET','uri':util[_0x0ab4('0x58')](_0x0ab4('0x59'),_0x46a008,_0x0ab4('0x5a')),'json':!![]};switch(_0x32282c['authType']){case _0x0ab4('0x5b'):_0x9b1a87[_0x0ab4('0x5c')]={'Authorization':util[_0x0ab4('0x58')](_0x0ab4('0x5d'),new Buffer(util['format']('%s:%s',_0x32282c[_0x0ab4('0x52')],_0x32282c[_0x0ab4('0x5b')]))[_0x0ab4('0x5e')](_0x0ab4('0x5f')))};break;case'token':_0x9b1a87[_0x0ab4('0x5c')]={'Authorization':util[_0x0ab4('0x58')](_0x0ab4('0x5d'),new Buffer(util['format']('%s/token:%s',_0x32282c[_0x0ab4('0x52')],_0x32282c[_0x0ab4('0x53')]))[_0x0ab4('0x5e')](_0x0ab4('0x5f')))};break;default:throw new db[(_0x0ab4('0x60'))][(_0x0ab4('0x61'))](_0x0ab4('0x62'));}return rp(_0x9b1a87);}})['then'](function(_0xe18f04){if(_0xe18f04){var _0x57ed73=['subject',_0x0ab4('0x63'),'group',_0x0ab4('0x64')];_[_0x0ab4('0x65')](_0xe18f04[_0x0ab4('0x5a')],function(_0x368573){return _0x57ed73[_0x0ab4('0x66')](_0x368573['type']);});return{'count':_0xe18f04['ticket_fields'][_0x0ab4('0x2f')],'rows':_[_0x0ab4('0x37')](_0xe18f04['ticket_fields'],function(_0x550cc5){return{'id':_0x550cc5['id'],'name':_0x550cc5[_0x0ab4('0x67')]>0x7?_0x550cc5[_0x0ab4('0x68')]:_0x550cc5['type'],'custom':_0x550cc5[_0x0ab4('0x67')]>0x7?!![]:![],'options':_0x550cc5[_0x0ab4('0x69')]?_0x550cc5[_0x0ab4('0x69')]:_0x550cc5['custom_field_options']?_0x550cc5[_0x0ab4('0x6a')]:[]};})};}})[_0x0ab4('0x21')](respondWithResult(_0x340129,null))[_0x0ab4('0x3f')](function(_0x1be1b9){var _0x4f745e=_0x3e5f11[_0x0ab4('0x29')][_0x0ab4('0x6b')]?0x1f4:_0x1be1b9[_0x0ab4('0x6c')]||0x1f4;logger[_0x0ab4('0x23')](_0x0ab4('0x6d'),_0x0ab4('0x51'),_0x4f745e,JSON[_0x0ab4('0x6e')](_0x1be1b9));delete _0x1be1b9[_0x0ab4('0x24')];if(_0x4f745e===0x191){_0x4f745e=0x190;}_0x340129[_0x0ab4('0x17')](_0x4f745e)[_0x0ab4('0x6f')](_0x3e5f11['query'][_0x0ab4('0x6b')]?{'message':_0x0ab4('0x70'),'statusCode':_0x1be1b9[_0x0ab4('0x6c')]}:_0x1be1b9);});};
\ No newline at end of file
index 69bea23..27b0447 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc281=['../../config/environment','./intZendeskAccount.attributes','../../components/integrations/configuration','exports','define','util','../../config/logger','moment','bluebird','request-promise','path','rimraf'];(function(_0xc6a2a4,_0x4a3740){var _0x48aba0=function(_0x445b8c){while(--_0x445b8c){_0xc6a2a4['push'](_0xc6a2a4['shift']());}};_0x48aba0(++_0x4a3740);}(_0xc281,0xa1));var _0x1c28=function(_0x210b46,_0x52a05f){_0x210b46=_0x210b46-0x0;var _0x203df2=_0xc281[_0x210b46];return _0x203df2;};'use strict';var _=require('lodash');var util=require(_0x1c28('0x0'));var logger=require(_0x1c28('0x1'))('api');var moment=require(_0x1c28('0x2'));var BPromise=require(_0x1c28('0x3'));var rp=require(_0x1c28('0x4'));var fs=require('fs');var path=require(_0x1c28('0x5'));var rimraf=require(_0x1c28('0x6'));var config=require(_0x1c28('0x7'));var attributes=require(_0x1c28('0x8'));var integrations=require(_0x1c28('0x9'));module[_0x1c28('0xa')]=function(_0x38abdf,_0x1df9bd){return _0x38abdf[_0x1c28('0xb')]('ZendeskAccount',attributes,{'tableName':'int_zendesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9007=['lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','./intZendeskAccount.attributes','../../components/integrations/configuration','exports','ZendeskAccount','int_zendesk_accounts'];(function(_0x288536,_0x369b51){var _0x525e94=function(_0x2fe9db){while(--_0x2fe9db){_0x288536['push'](_0x288536['shift']());}};_0x525e94(++_0x369b51);}(_0x9007,0xfc));var _0x7900=function(_0xb113d7,_0x2fc306){_0xb113d7=_0xb113d7-0x0;var _0xd5a08d=_0x9007[_0xb113d7];return _0xd5a08d;};'use strict';var _=require(_0x7900('0x0'));var util=require('util');var logger=require(_0x7900('0x1'))(_0x7900('0x2'));var moment=require(_0x7900('0x3'));var BPromise=require(_0x7900('0x4'));var rp=require(_0x7900('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7900('0x6'));var config=require('../../config/environment');var attributes=require(_0x7900('0x7'));var integrations=require(_0x7900('0x8'));module[_0x7900('0x9')]=function(_0x2e4ffe,_0x831171){return _0x2e4ffe['define'](_0x7900('0xa'),attributes,{'tableName':_0x7900('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4a36f4a..69db50c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd583=['request','then','ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetZendeskAccount','ZendeskAccount','findAll','options','raw','where','limit','include','map','model','attributes','find','ShowZendeskAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http'];(function(_0x4dca55,_0x2fc2f5){var _0x1cf5ce=function(_0x5b5ed9){while(--_0x5b5ed9){_0x4dca55['push'](_0x4dca55['shift']());}};_0x1cf5ce(++_0x2fc2f5);}(_0xd583,0xb2));var _0x3d58=function(_0x38d3bd,_0x49f837){_0x38d3bd=_0x38d3bd-0x0;var _0x19022c=_0xd583[_0x38d3bd];return _0x19022c;};'use strict';var _=require(_0x3d58('0x0'));var util=require(_0x3d58('0x1'));var moment=require(_0x3d58('0x2'));var BPromise=require(_0x3d58('0x3'));var rs=require(_0x3d58('0x4'));var fs=require('fs');var Redis=require(_0x3d58('0x5'));var db=require(_0x3d58('0x6'))['db'];var utils=require(_0x3d58('0x7'));var logger=require(_0x3d58('0x8'))(_0x3d58('0x9'));var config=require('../../config/environment');var jayson=require(_0x3d58('0xa'));var client=jayson['client'][_0x3d58('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x269b8a,_0x42a67e,_0x5ad78e){return new BPromise(function(_0x46fd6b,_0x2c7c50){return client[_0x3d58('0xc')](_0x269b8a,_0x5ad78e)[_0x3d58('0xd')](function(_0x137304){logger['info'](_0x3d58('0xe'),_0x42a67e,_0x3d58('0xf'));logger[_0x3d58('0x10')](_0x3d58('0x11'),_0x42a67e,_0x3d58('0xf'),JSON[_0x3d58('0x12')](_0x137304));if(_0x137304['error']){if(_0x137304[_0x3d58('0x13')][_0x3d58('0x14')]===0x1f4){logger[_0x3d58('0x13')](_0x3d58('0xe'),_0x42a67e,_0x137304['error'][_0x3d58('0x15')]);return _0x2c7c50(_0x137304[_0x3d58('0x13')]['message']);}logger[_0x3d58('0x13')](_0x3d58('0xe'),_0x42a67e,_0x137304['error'][_0x3d58('0x15')]);return _0x46fd6b(_0x137304[_0x3d58('0x13')][_0x3d58('0x15')]);}else{logger[_0x3d58('0x16')](_0x3d58('0xe'),_0x42a67e,_0x3d58('0xf'));_0x46fd6b(_0x137304[_0x3d58('0x17')][_0x3d58('0x15')]);}})[_0x3d58('0x18')](function(_0x21f58d){logger[_0x3d58('0x13')](_0x3d58('0xe'),_0x42a67e,_0x21f58d);_0x2c7c50(_0x21f58d);});});}exports[_0x3d58('0x19')]=function(_0x4b1c03){var _0x4d2688=this;return new Promise(function(_0x186cb3,_0x15d2fe){return db[_0x3d58('0x1a')][_0x3d58('0x1b')]({'raw':_0x4b1c03[_0x3d58('0x1c')]?_0x4b1c03[_0x3d58('0x1c')][_0x3d58('0x1d')]===undefined?!![]:![]:!![],'where':_0x4b1c03[_0x3d58('0x1c')]?_0x4b1c03['options'][_0x3d58('0x1e')]||null:null,'attributes':_0x4b1c03['options']?_0x4b1c03['options']['attributes']||null:null,'limit':_0x4b1c03['options']?_0x4b1c03['options'][_0x3d58('0x1f')]||null:null,'include':_0x4b1c03[_0x3d58('0x1c')]?_0x4b1c03['options'][_0x3d58('0x20')]?_[_0x3d58('0x21')](_0x4b1c03['options']['include'],function(_0x593702){return{'model':db[_0x593702['model']],'as':_0x593702['as'],'attributes':_0x593702['attributes'],'include':_0x593702['include']?_[_0x3d58('0x21')](_0x593702[_0x3d58('0x20')],function(_0x25df01){return{'model':db[_0x25df01[_0x3d58('0x22')]],'as':_0x25df01['as'],'attributes':_0x25df01[_0x3d58('0x23')],'include':_0x25df01[_0x3d58('0x20')]?_[_0x3d58('0x21')](_0x25df01[_0x3d58('0x20')],function(_0x22983d){return{'model':db[_0x22983d[_0x3d58('0x22')]],'as':_0x22983d['as'],'attributes':_0x22983d['attributes']};}):[]};}):[]};}):[]:[]})[_0x3d58('0xd')](function(_0x11e6ce){logger[_0x3d58('0x16')](_0x3d58('0x19'),_0x4b1c03);logger['debug'](_0x3d58('0x19'),_0x4b1c03,JSON[_0x3d58('0x12')](_0x11e6ce));_0x186cb3(_0x11e6ce);})[_0x3d58('0x18')](function(_0x308119){logger['error'](_0x3d58('0x19'),_0x308119[_0x3d58('0x15')],_0x4b1c03);_0x15d2fe(_0x4d2688[_0x3d58('0x13')](0x1f4,_0x308119[_0x3d58('0x15')]));});});};exports['ShowZendeskAccount']=function(_0x3ed10a){var _0x47b23f=this;return new Promise(function(_0x296e51,_0xd0cbfe){return db['ZendeskAccount'][_0x3d58('0x24')]({'raw':_0x3ed10a[_0x3d58('0x1c')]?_0x3ed10a[_0x3d58('0x1c')][_0x3d58('0x1d')]===undefined?!![]:![]:!![],'where':_0x3ed10a[_0x3d58('0x1c')]?_0x3ed10a[_0x3d58('0x1c')][_0x3d58('0x1e')]||null:null,'attributes':_0x3ed10a[_0x3d58('0x1c')]?_0x3ed10a[_0x3d58('0x1c')]['attributes']||null:null,'include':_0x3ed10a[_0x3d58('0x1c')]?_0x3ed10a[_0x3d58('0x1c')][_0x3d58('0x20')]?_[_0x3d58('0x21')](_0x3ed10a['options'][_0x3d58('0x20')],function(_0x5261fe){return{'model':db[_0x5261fe[_0x3d58('0x22')]],'as':_0x5261fe['as'],'attributes':_0x5261fe[_0x3d58('0x23')],'include':_0x5261fe[_0x3d58('0x20')]?_[_0x3d58('0x21')](_0x5261fe['include'],function(_0x472b23){return{'model':db[_0x472b23[_0x3d58('0x22')]],'as':_0x472b23['as'],'attributes':_0x472b23[_0x3d58('0x23')],'include':_0x472b23[_0x3d58('0x20')]?_[_0x3d58('0x21')](_0x472b23[_0x3d58('0x20')],function(_0x2bf33c){return{'model':db[_0x2bf33c[_0x3d58('0x22')]],'as':_0x2bf33c['as'],'attributes':_0x2bf33c[_0x3d58('0x23')]};}):[]};}):[]};}):[]:[]})[_0x3d58('0xd')](function(_0x21408c){logger['info'](_0x3d58('0x25'),_0x3ed10a);logger[_0x3d58('0x10')](_0x3d58('0x25'),_0x3ed10a,JSON['stringify'](_0x21408c));_0x296e51(_0x21408c);})[_0x3d58('0x18')](function(_0x183d65){logger[_0x3d58('0x13')](_0x3d58('0x25'),_0x183d65['message'],_0x3ed10a);_0xd0cbfe(_0x47b23f['error'](0x1f4,_0x183d65[_0x3d58('0x15')]));});});};
\ No newline at end of file
+var _0x61fd=['info','stringify','error','code','ZendeskAccount,\x20%s,\x20%s','message','request\x20sent','result','GetZendeskAccount','ZendeskAccount','options','where','attributes','include','map','model','then','debug','catch','ShowZendeskAccount','find','raw','util','moment','ioredis','../../config/logger','rpc','../../config/environment','http','request'];(function(_0x512ce8,_0x408e7b){var _0x560cde=function(_0x451749){while(--_0x451749){_0x512ce8['push'](_0x512ce8['shift']());}};_0x560cde(++_0x408e7b);}(_0x61fd,0x106));var _0xd61f=function(_0x484fe8,_0x327321){_0x484fe8=_0x484fe8-0x0;var _0x39bfff=_0x61fd[_0x484fe8];return _0x39bfff;};'use strict';var _=require('lodash');var util=require(_0xd61f('0x0'));var moment=require(_0xd61f('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd61f('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xd61f('0x3'))(_0xd61f('0x4'));var config=require(_0xd61f('0x5'));var jayson=require('jayson/promise');var client=jayson['client'][_0xd61f('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x4b8137,_0x9e5a19,_0x431207){return new BPromise(function(_0x359eb3,_0x5cb23c){return client[_0xd61f('0x7')](_0x4b8137,_0x431207)['then'](function(_0x3d5d24){logger[_0xd61f('0x8')]('ZendeskAccount,\x20%s,\x20%s',_0x9e5a19,'request\x20sent');logger['debug']('ZendeskAccount,\x20%s,\x20%s,\x20%s',_0x9e5a19,'request\x20sent',JSON[_0xd61f('0x9')](_0x3d5d24));if(_0x3d5d24[_0xd61f('0xa')]){if(_0x3d5d24[_0xd61f('0xa')][_0xd61f('0xb')]===0x1f4){logger[_0xd61f('0xa')](_0xd61f('0xc'),_0x9e5a19,_0x3d5d24['error']['message']);return _0x5cb23c(_0x3d5d24[_0xd61f('0xa')][_0xd61f('0xd')]);}logger[_0xd61f('0xa')](_0xd61f('0xc'),_0x9e5a19,_0x3d5d24[_0xd61f('0xa')]['message']);return _0x359eb3(_0x3d5d24[_0xd61f('0xa')]['message']);}else{logger['info'](_0xd61f('0xc'),_0x9e5a19,_0xd61f('0xe'));_0x359eb3(_0x3d5d24[_0xd61f('0xf')][_0xd61f('0xd')]);}})['catch'](function(_0x3643c0){logger[_0xd61f('0xa')](_0xd61f('0xc'),_0x9e5a19,_0x3643c0);_0x5cb23c(_0x3643c0);});});}exports[_0xd61f('0x10')]=function(_0x3e51b4){var _0x3ab94f=this;return new Promise(function(_0x23ae8d,_0x19a91f){return db[_0xd61f('0x11')]['findAll']({'raw':_0x3e51b4[_0xd61f('0x12')]?_0x3e51b4[_0xd61f('0x12')]['raw']===undefined?!![]:![]:!![],'where':_0x3e51b4[_0xd61f('0x12')]?_0x3e51b4[_0xd61f('0x12')][_0xd61f('0x13')]||null:null,'attributes':_0x3e51b4[_0xd61f('0x12')]?_0x3e51b4[_0xd61f('0x12')][_0xd61f('0x14')]||null:null,'limit':_0x3e51b4[_0xd61f('0x12')]?_0x3e51b4['options']['limit']||null:null,'include':_0x3e51b4[_0xd61f('0x12')]?_0x3e51b4[_0xd61f('0x12')][_0xd61f('0x15')]?_[_0xd61f('0x16')](_0x3e51b4[_0xd61f('0x12')][_0xd61f('0x15')],function(_0x3f62e7){return{'model':db[_0x3f62e7[_0xd61f('0x17')]],'as':_0x3f62e7['as'],'attributes':_0x3f62e7['attributes'],'include':_0x3f62e7[_0xd61f('0x15')]?_['map'](_0x3f62e7[_0xd61f('0x15')],function(_0x4a3edc){return{'model':db[_0x4a3edc[_0xd61f('0x17')]],'as':_0x4a3edc['as'],'attributes':_0x4a3edc[_0xd61f('0x14')],'include':_0x4a3edc[_0xd61f('0x15')]?_[_0xd61f('0x16')](_0x4a3edc[_0xd61f('0x15')],function(_0x3d613){return{'model':db[_0x3d613['model']],'as':_0x3d613['as'],'attributes':_0x3d613['attributes']};}):[]};}):[]};}):[]:[]})[_0xd61f('0x18')](function(_0x276f11){logger['info'](_0xd61f('0x10'),_0x3e51b4);logger[_0xd61f('0x19')](_0xd61f('0x10'),_0x3e51b4,JSON['stringify'](_0x276f11));_0x23ae8d(_0x276f11);})[_0xd61f('0x1a')](function(_0x2ff41e){logger[_0xd61f('0xa')]('GetZendeskAccount',_0x2ff41e[_0xd61f('0xd')],_0x3e51b4);_0x19a91f(_0x3ab94f['error'](0x1f4,_0x2ff41e[_0xd61f('0xd')]));});});};exports[_0xd61f('0x1b')]=function(_0x39639a){var _0x24d988=this;return new Promise(function(_0x11f150,_0x44c139){return db['ZendeskAccount'][_0xd61f('0x1c')]({'raw':_0x39639a[_0xd61f('0x12')]?_0x39639a['options'][_0xd61f('0x1d')]===undefined?!![]:![]:!![],'where':_0x39639a[_0xd61f('0x12')]?_0x39639a[_0xd61f('0x12')]['where']||null:null,'attributes':_0x39639a[_0xd61f('0x12')]?_0x39639a[_0xd61f('0x12')][_0xd61f('0x14')]||null:null,'include':_0x39639a[_0xd61f('0x12')]?_0x39639a[_0xd61f('0x12')][_0xd61f('0x15')]?_[_0xd61f('0x16')](_0x39639a[_0xd61f('0x12')][_0xd61f('0x15')],function(_0x343c4){return{'model':db[_0x343c4['model']],'as':_0x343c4['as'],'attributes':_0x343c4['attributes'],'include':_0x343c4[_0xd61f('0x15')]?_[_0xd61f('0x16')](_0x343c4[_0xd61f('0x15')],function(_0x55a053){return{'model':db[_0x55a053[_0xd61f('0x17')]],'as':_0x55a053['as'],'attributes':_0x55a053['attributes'],'include':_0x55a053[_0xd61f('0x15')]?_['map'](_0x55a053[_0xd61f('0x15')],function(_0xd2a4b0){return{'model':db[_0xd2a4b0[_0xd61f('0x17')]],'as':_0xd2a4b0['as'],'attributes':_0xd2a4b0[_0xd61f('0x14')]};}):[]};}):[]};}):[]:[]})[_0xd61f('0x18')](function(_0x10b3bd){logger[_0xd61f('0x8')](_0xd61f('0x1b'),_0x39639a);logger[_0xd61f('0x19')](_0xd61f('0x1b'),_0x39639a,JSON[_0xd61f('0x9')](_0x10b3bd));_0x11f150(_0x10b3bd);})['catch'](function(_0x2aed4f){logger[_0xd61f('0xa')]('ShowZendeskAccount',_0x2aed4f['message'],_0x39639a);_0x44c139(_0x24d988[_0xd61f('0xa')](0x1f4,_0x2aed4f[_0xd61f('0xd')]));});});};
\ No newline at end of file
index cc96d6c..1967864 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4483=['getSubjects','/:id/descriptions','getDescriptions','getTags','post','create','/:id/tags','setTags','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intZendeskConfiguration.controller','get','isAuthenticated','index','/:id','show','getFields','/:id/subjects'];(function(_0xb08125,_0x561acb){var _0x2ace23=function(_0x50dbbf){while(--_0x50dbbf){_0xb08125['push'](_0xb08125['shift']());}};_0x2ace23(++_0x561acb);}(_0x4483,0x1a3));var _0x3448=function(_0x15b000,_0x31712c){_0x15b000=_0x15b000-0x0;var _0xd3e217=_0x4483[_0x15b000];return _0xd3e217;};'use strict';var multer=require(_0x3448('0x0'));var util=require(_0x3448('0x1'));var path=require(_0x3448('0x2'));var timeout=require('connect-timeout');var express=require(_0x3448('0x3'));var router=express[_0x3448('0x4')]();var fs_extra=require(_0x3448('0x5'));var auth=require(_0x3448('0x6'));var interaction=require(_0x3448('0x7'));var config=require('../../config/environment');var controller=require(_0x3448('0x8'));router[_0x3448('0x9')]('/',auth[_0x3448('0xa')](),controller[_0x3448('0xb')]);router[_0x3448('0x9')](_0x3448('0xc'),auth[_0x3448('0xa')](),controller[_0x3448('0xd')]);router['get']('/:id/fields',auth[_0x3448('0xa')](),controller[_0x3448('0xe')]);router[_0x3448('0x9')](_0x3448('0xf'),auth[_0x3448('0xa')](),controller[_0x3448('0x10')]);router[_0x3448('0x9')](_0x3448('0x11'),auth[_0x3448('0xa')](),controller[_0x3448('0x12')]);router[_0x3448('0x9')]('/:id/tags',auth['isAuthenticated'](),controller[_0x3448('0x13')]);router[_0x3448('0x14')]('/',auth['isAuthenticated'](),controller[_0x3448('0x15')]);router[_0x3448('0x14')](_0x3448('0x16'),auth['isAuthenticated'](),controller[_0x3448('0x17')]);router[_0x3448('0x18')]('/:id',auth[_0x3448('0xa')](),controller[_0x3448('0x19')]);router[_0x3448('0x1a')]('/:id',auth[_0x3448('0xa')](),controller[_0x3448('0x1b')]);module[_0x3448('0x1c')]=router;
\ No newline at end of file
+var _0x750a=['getTags','post','setTags','put','update','delete','destroy','exports','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','isAuthenticated','index','/:id','/:id/fields','getFields','getSubjects','/:id/tags'];(function(_0x1390cb,_0x44752f){var _0x97918a=function(_0xe1b7dc){while(--_0xe1b7dc){_0x1390cb['push'](_0x1390cb['shift']());}};_0x97918a(++_0x44752f);}(_0x750a,0x140));var _0xa750=function(_0x22e571,_0x443a32){_0x22e571=_0x22e571-0x0;var _0x5b3f1c=_0x750a[_0x22e571];return _0x5b3f1c;};'use strict';var multer=require('multer');var util=require(_0xa750('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xa750('0x1'));var router=express[_0xa750('0x2')]();var fs_extra=require(_0xa750('0x3'));var auth=require(_0xa750('0x4'));var interaction=require(_0xa750('0x5'));var config=require(_0xa750('0x6'));var controller=require(_0xa750('0x7'));router[_0xa750('0x8')]('/',auth[_0xa750('0x9')](),controller[_0xa750('0xa')]);router[_0xa750('0x8')](_0xa750('0xb'),auth[_0xa750('0x9')](),controller['show']);router['get'](_0xa750('0xc'),auth['isAuthenticated'](),controller[_0xa750('0xd')]);router[_0xa750('0x8')]('/:id/subjects',auth[_0xa750('0x9')](),controller[_0xa750('0xe')]);router['get']('/:id/descriptions',auth[_0xa750('0x9')](),controller['getDescriptions']);router[_0xa750('0x8')](_0xa750('0xf'),auth['isAuthenticated'](),controller[_0xa750('0x10')]);router[_0xa750('0x11')]('/',auth[_0xa750('0x9')](),controller['create']);router[_0xa750('0x11')](_0xa750('0xf'),auth[_0xa750('0x9')](),controller[_0xa750('0x12')]);router[_0xa750('0x13')](_0xa750('0xb'),auth['isAuthenticated'](),controller[_0xa750('0x14')]);router[_0xa750('0x15')](_0xa750('0xb'),auth['isAuthenticated'](),controller[_0xa750('0x16')]);module[_0xa750('0x17')]=router;
\ No newline at end of file
index 2172141..3d3136b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc67c=['STRING','sequelize'];(function(_0x255975,_0x3238c4){var _0x13f66a=function(_0x2f30e9){while(--_0x2f30e9){_0x255975['push'](_0x255975['shift']());}};_0x13f66a(++_0x3238c4);}(_0xc67c,0x73));var _0xcc67=function(_0x297da9,_0x5addea){_0x297da9=_0x297da9-0x0;var _0x155141=_0xc67c[_0x297da9];return _0x155141;};'use strict';var Sequelize=require(_0xcc67('0x0'));module['exports']={'name':{'type':Sequelize[_0xcc67('0x1')]},'description':{'type':Sequelize[_0xcc67('0x1')]}};
\ No newline at end of file
+var _0x11fa=['STRING','sequelize','exports'];(function(_0x285a14,_0x394a27){var _0x3430cc=function(_0x46d2d7){while(--_0x46d2d7){_0x285a14['push'](_0x285a14['shift']());}};_0x3430cc(++_0x394a27);}(_0x11fa,0x1a2));var _0xa11f=function(_0x2112d4,_0x3c863c){_0x2112d4=_0x2112d4-0x0;var _0x434972=_0x11fa[_0x2112d4];return _0x434972;};'use strict';var Sequelize=require(_0xa11f('0x0'));module[_0xa11f('0x1')]={'name':{'type':Sequelize[_0xa11f('0x2')]},'description':{'type':Sequelize[_0xa11f('0x2')]}};
\ No newline at end of file
index 897b2d9..a54d9d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7562=['sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','map','ZendeskConfiguration','includeAll','catch','include','options','find','create','body','params','getFields','findOne','ZendeskField','nolimit','getSubjects','getDescriptions','Tag','setTags','ids','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x7562,0xf3));var _0x2756=function(_0x27a11d,_0x4ad80a){_0x27a11d=_0x27a11d-0x0;var _0x14665b=_0x7562[_0x27a11d];return _0x14665b;};'use strict';var emlformat=require(_0x2756('0x0'));var rimraf=require(_0x2756('0x1'));var zipdir=require(_0x2756('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2756('0x3'));var moment=require(_0x2756('0x4'));var BPromise=require(_0x2756('0x5'));var Mustache=require(_0x2756('0x6'));var util=require(_0x2756('0x7'));var path=require(_0x2756('0x8'));var sox=require(_0x2756('0x9'));var csv=require(_0x2756('0xa'));var ejs=require(_0x2756('0xb'));var fs=require('fs');var fs_extra=require(_0x2756('0xc'));var _=require(_0x2756('0xd'));var squel=require(_0x2756('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x2756('0xf'));var toCsv=require(_0x2756('0xa'));var querystring=require(_0x2756('0x10'));var Papa=require(_0x2756('0x11'));var Redis=require(_0x2756('0x12'));var authService=require(_0x2756('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2756('0x14'));var logger=require('../../config/logger')(_0x2756('0x15'));var utils=require(_0x2756('0x16'));var config=require(_0x2756('0x17'));var licenseUtil=require(_0x2756('0x18'));var db=require(_0x2756('0x19'))['db'];function respondWithStatusCode(_0x11c1f3,_0x155827){_0x155827=_0x155827||0xcc;return function(_0x353861){if(_0x353861){return _0x11c1f3['sendStatus'](_0x155827);}return _0x11c1f3[_0x2756('0x1a')](_0x155827)[_0x2756('0x1b')]();};}function respondWithResult(_0x8d0da3,_0x16931f){_0x16931f=_0x16931f||0xc8;return function(_0x5b4486){if(_0x5b4486){return _0x8d0da3['status'](_0x16931f)[_0x2756('0x1c')](_0x5b4486);}};}function respondWithFilteredResult(_0x163d75,_0x5762eb){return function(_0x1190b6){if(_0x1190b6){var _0xf1df37=typeof _0x5762eb[_0x2756('0x1d')]==='undefined'&&typeof _0x5762eb[_0x2756('0x1e')]===_0x2756('0x1f');var _0x47e409=_0x1190b6[_0x2756('0x20')];var _0x1a860d=_0xf1df37?0x0:_0x5762eb[_0x2756('0x1d')];var _0xd00366=_0xf1df37?_0x1190b6[_0x2756('0x20')]:_0x5762eb[_0x2756('0x1d')]+_0x5762eb['limit'];var _0x48a238;if(_0xd00366>=_0x47e409){_0xd00366=_0x47e409;_0x48a238=0xc8;}else{_0x48a238=0xce;}_0x163d75[_0x2756('0x1a')](_0x48a238);return _0x163d75[_0x2756('0x21')](_0x2756('0x22'),_0x1a860d+'-'+_0xd00366+'/'+_0x47e409)[_0x2756('0x1c')](_0x1190b6);}return null;};}function patchUpdates(_0x576322){return function(_0xfbd13e){try{jsonpatch['apply'](_0xfbd13e,_0x576322,!![]);}catch(_0x6dc1e0){return BPromise[_0x2756('0x23')](_0x6dc1e0);}return _0xfbd13e[_0x2756('0x24')]();};}function saveUpdates(_0x1cbcf8,_0x14de1c){return function(_0x64ca34){if(_0x64ca34){return _0x64ca34[_0x2756('0x25')](_0x1cbcf8)[_0x2756('0x26')](function(_0x294339){return _0x294339;});}return null;};}function removeEntity(_0x433b4a,_0x57d55c){return function(_0x181e73){if(_0x181e73){return _0x181e73[_0x2756('0x27')]()[_0x2756('0x26')](function(){_0x433b4a[_0x2756('0x1a')](0xcc)[_0x2756('0x1b')]();});}};}function handleEntityNotFound(_0x3993fd,_0x222f55){return function(_0x543445){if(!_0x543445){_0x3993fd[_0x2756('0x28')](0x194);}return _0x543445;};}function handleError(_0x731aa6,_0x43979d){_0x43979d=_0x43979d||0x1f4;return function(_0x48ea1c){logger[_0x2756('0x29')](_0x48ea1c[_0x2756('0x2a')]);if(_0x48ea1c[_0x2756('0x2b')]){delete _0x48ea1c[_0x2756('0x2b')];}_0x731aa6['status'](_0x43979d)[_0x2756('0x2c')](_0x48ea1c);};}exports[_0x2756('0x2d')]=function(_0x992045,_0x5a3545){var _0x2c6749={},_0xf89fb4={},_0x57b179={'count':0x0,'rows':[]};var _0x152e86=_['map'](db['ZendeskConfiguration'][_0x2756('0x2e')],function(_0x175bed){return{'name':_0x175bed[_0x2756('0x2f')],'type':_0x175bed[_0x2756('0x30')][_0x2756('0x31')]};});_0xf89fb4[_0x2756('0x32')]=_['map'](_0x152e86,_0x2756('0x2b'));_0xf89fb4['query']=_[_0x2756('0x33')](_0x992045[_0x2756('0x34')]);_0xf89fb4[_0x2756('0x35')]=_[_0x2756('0x36')](_0xf89fb4[_0x2756('0x32')],_0xf89fb4[_0x2756('0x34')]);_0x2c6749[_0x2756('0x37')]=_[_0x2756('0x36')](_0xf89fb4[_0x2756('0x32')],qs[_0x2756('0x38')](_0x992045[_0x2756('0x34')]['fields']));_0x2c6749[_0x2756('0x37')]=_0x2c6749[_0x2756('0x37')][_0x2756('0x39')]?_0x2c6749[_0x2756('0x37')]:_0xf89fb4['model'];if(!_0x992045[_0x2756('0x34')][_0x2756('0x3a')]('nolimit')){_0x2c6749[_0x2756('0x1e')]=qs[_0x2756('0x1e')](_0x992045[_0x2756('0x34')]['limit']);_0x2c6749[_0x2756('0x1d')]=qs[_0x2756('0x1d')](_0x992045[_0x2756('0x34')][_0x2756('0x1d')]);}_0x2c6749[_0x2756('0x3b')]=qs['sort'](_0x992045['query'][_0x2756('0x3c')]);_0x2c6749[_0x2756('0x3d')]=qs[_0x2756('0x35')](_[_0x2756('0x3e')](_0x992045['query'],_0xf89fb4['filters']),_0x152e86);if(_0x992045[_0x2756('0x34')][_0x2756('0x3f')]){_0x2c6749[_0x2756('0x3d')]=_[_0x2756('0x40')](_0x2c6749[_0x2756('0x3d')],{'$or':_[_0x2756('0x41')](_0x152e86,function(_0x11e9a8){if(_0x11e9a8[_0x2756('0x30')]!=='VIRTUAL'){var _0x3b6bd9={};_0x3b6bd9[_0x11e9a8[_0x2756('0x2b')]]={'$like':'%'+_0x992045[_0x2756('0x34')][_0x2756('0x3f')]+'%'};return _0x3b6bd9;}})});}_0x2c6749=_['merge']({},_0x2c6749,_0x992045['options']);var _0x31109c={'where':_0x2c6749[_0x2756('0x3d')]};return db[_0x2756('0x42')][_0x2756('0x20')](_0x31109c)[_0x2756('0x26')](function(_0x4298d2){_0x57b179[_0x2756('0x20')]=_0x4298d2;if(_0x992045[_0x2756('0x34')][_0x2756('0x43')]){_0x2c6749['include']=[{'all':!![]}];}return db[_0x2756('0x42')]['findAll'](_0x2c6749);})[_0x2756('0x26')](function(_0x44a2e6){_0x57b179['rows']=_0x44a2e6;return _0x57b179;})[_0x2756('0x26')](respondWithFilteredResult(_0x5a3545,_0x2c6749))[_0x2756('0x44')](handleError(_0x5a3545,null));};exports['show']=function(_0x52b0ca,_0x248367){var _0x329e7e={'raw':![],'where':{'id':_0x52b0ca['params']['id']}},_0x4a3281={};_0x4a3281[_0x2756('0x32')]=_[_0x2756('0x33')](db[_0x2756('0x42')][_0x2756('0x2e')]);_0x4a3281[_0x2756('0x34')]=_[_0x2756('0x33')](_0x52b0ca['query']);_0x4a3281[_0x2756('0x35')]=_['intersection'](_0x4a3281[_0x2756('0x32')],_0x4a3281[_0x2756('0x34')]);_0x329e7e[_0x2756('0x37')]=_[_0x2756('0x36')](_0x4a3281[_0x2756('0x32')],qs['fields'](_0x52b0ca['query']['fields']));_0x329e7e[_0x2756('0x37')]=_0x329e7e['attributes']['length']?_0x329e7e['attributes']:_0x4a3281[_0x2756('0x32')];if(_0x52b0ca[_0x2756('0x34')][_0x2756('0x43')]){_0x329e7e[_0x2756('0x45')]=[{'all':!![]}];}_0x329e7e=_[_0x2756('0x40')]({},_0x329e7e,_0x52b0ca[_0x2756('0x46')]);return db[_0x2756('0x42')][_0x2756('0x47')](_0x329e7e)[_0x2756('0x26')](handleEntityNotFound(_0x248367,null))['then'](respondWithResult(_0x248367,null))[_0x2756('0x44')](handleError(_0x248367,null));};exports['create']=function(_0x4b6227,_0x28e721){return db[_0x2756('0x42')][_0x2756('0x48')](_0x4b6227[_0x2756('0x49')],{})[_0x2756('0x26')](respondWithResult(_0x28e721,0xc9))[_0x2756('0x44')](handleError(_0x28e721,null));};exports['update']=function(_0x340be1,_0x25c683){if(_0x340be1[_0x2756('0x49')]['id']){delete _0x340be1['body']['id'];}return db[_0x2756('0x42')][_0x2756('0x47')]({'where':{'id':_0x340be1[_0x2756('0x4a')]['id']}})[_0x2756('0x26')](handleEntityNotFound(_0x25c683,null))[_0x2756('0x26')](saveUpdates(_0x340be1[_0x2756('0x49')],null))[_0x2756('0x26')](respondWithResult(_0x25c683,null))['catch'](handleError(_0x25c683,null));};exports[_0x2756('0x27')]=function(_0x3995df,_0x11c500){return db[_0x2756('0x42')][_0x2756('0x47')]({'where':{'id':_0x3995df[_0x2756('0x4a')]['id']}})['then'](handleEntityNotFound(_0x11c500,null))['then'](removeEntity(_0x11c500,null))['catch'](handleError(_0x11c500,null));};exports[_0x2756('0x4b')]=function(_0x1f7390,_0x373b3c,_0x2915a5){var _0x4b933c={};var _0x485b5c={};var _0x55cb49;var _0x432bfe;return db[_0x2756('0x42')][_0x2756('0x4c')]({'where':{'id':_0x1f7390['params']['id']}})[_0x2756('0x26')](handleEntityNotFound(_0x373b3c,null))[_0x2756('0x26')](function(_0xd96bab){if(_0xd96bab){_0x55cb49=_0xd96bab;_0x485b5c[_0x2756('0x32')]=_[_0x2756('0x33')](db[_0x2756('0x4d')][_0x2756('0x2e')]);_0x485b5c[_0x2756('0x34')]=_['keys'](_0x1f7390['query']);_0x485b5c[_0x2756('0x35')]=_['intersection'](_0x485b5c[_0x2756('0x32')],_0x485b5c[_0x2756('0x34')]);_0x4b933c['attributes']=_[_0x2756('0x36')](_0x485b5c[_0x2756('0x32')],qs[_0x2756('0x38')](_0x1f7390['query'][_0x2756('0x38')]));_0x4b933c[_0x2756('0x37')]=_0x4b933c[_0x2756('0x37')]['length']?_0x4b933c[_0x2756('0x37')]:_0x485b5c['model'];_0x4b933c['order']=qs[_0x2756('0x3c')](_0x1f7390[_0x2756('0x34')]['sort']);_0x4b933c[_0x2756('0x3d')]=qs['filters'](_['pick'](_0x1f7390['query'],_0x485b5c['filters']));if(_0x1f7390[_0x2756('0x34')][_0x2756('0x3f')]){_0x4b933c['where']=_[_0x2756('0x40')](_0x4b933c[_0x2756('0x3d')],{'$or':_[_0x2756('0x41')](_0x4b933c[_0x2756('0x37')],function(_0x3fafff){var _0x475fe3={};_0x475fe3[_0x3fafff]={'$like':'%'+_0x1f7390[_0x2756('0x34')][_0x2756('0x3f')]+'%'};return _0x475fe3;})});}_0x4b933c=_['merge']({},_0x4b933c,_0x1f7390[_0x2756('0x46')]);return _0x55cb49[_0x2756('0x4b')](_0x4b933c);}})['then'](function(_0x50f4e3){if(_0x50f4e3){_0x432bfe=_0x50f4e3[_0x2756('0x39')];if(!_0x1f7390[_0x2756('0x34')][_0x2756('0x3a')](_0x2756('0x4e'))){_0x4b933c[_0x2756('0x1e')]=qs[_0x2756('0x1e')](_0x1f7390[_0x2756('0x34')][_0x2756('0x1e')]);_0x4b933c[_0x2756('0x1d')]=qs[_0x2756('0x1d')](_0x1f7390[_0x2756('0x34')][_0x2756('0x1d')]);}return _0x55cb49['getFields'](_0x4b933c);}})[_0x2756('0x26')](function(_0x5076f8){if(_0x5076f8){return _0x5076f8?{'count':_0x432bfe,'rows':_0x5076f8}:null;}})[_0x2756('0x26')](respondWithResult(_0x373b3c,null))[_0x2756('0x44')](handleError(_0x373b3c,null));};exports['getSubjects']=function(_0x3ea386,_0x502ff9,_0x151a93){var _0x367466={};var _0x126455={};var _0x6326fc;var _0xbece68;return db['ZendeskConfiguration'][_0x2756('0x4c')]({'where':{'id':_0x3ea386['params']['id']}})['then'](handleEntityNotFound(_0x502ff9,null))[_0x2756('0x26')](function(_0x4472a4){if(_0x4472a4){_0x6326fc=_0x4472a4;_0x126455[_0x2756('0x32')]=_[_0x2756('0x33')](db[_0x2756('0x4d')][_0x2756('0x2e')]);_0x126455[_0x2756('0x34')]=_[_0x2756('0x33')](_0x3ea386['query']);_0x126455[_0x2756('0x35')]=_['intersection'](_0x126455[_0x2756('0x32')],_0x126455[_0x2756('0x34')]);_0x367466[_0x2756('0x37')]=_['intersection'](_0x126455['model'],qs[_0x2756('0x38')](_0x3ea386[_0x2756('0x34')]['fields']));_0x367466['attributes']=_0x367466[_0x2756('0x37')][_0x2756('0x39')]?_0x367466[_0x2756('0x37')]:_0x126455[_0x2756('0x32')];_0x367466[_0x2756('0x3b')]=qs[_0x2756('0x3c')](_0x3ea386[_0x2756('0x34')][_0x2756('0x3c')]);_0x367466[_0x2756('0x3d')]=qs[_0x2756('0x35')](_[_0x2756('0x3e')](_0x3ea386[_0x2756('0x34')],_0x126455['filters']));if(_0x3ea386[_0x2756('0x34')][_0x2756('0x3f')]){_0x367466['where']=_[_0x2756('0x40')](_0x367466['where'],{'$or':_[_0x2756('0x41')](_0x367466['attributes'],function(_0x1fbe3e){var _0x43222={};_0x43222[_0x1fbe3e]={'$like':'%'+_0x3ea386[_0x2756('0x34')]['filter']+'%'};return _0x43222;})});}_0x367466=_[_0x2756('0x40')]({},_0x367466,_0x3ea386[_0x2756('0x46')]);return _0x6326fc[_0x2756('0x4f')](_0x367466);}})['then'](function(_0x248c09){if(_0x248c09){_0xbece68=_0x248c09['length'];if(!_0x3ea386[_0x2756('0x34')]['hasOwnProperty'](_0x2756('0x4e'))){_0x367466[_0x2756('0x1e')]=qs[_0x2756('0x1e')](_0x3ea386['query'][_0x2756('0x1e')]);_0x367466[_0x2756('0x1d')]=qs[_0x2756('0x1d')](_0x3ea386[_0x2756('0x34')][_0x2756('0x1d')]);}return _0x6326fc['getSubjects'](_0x367466);}})[_0x2756('0x26')](function(_0x303c84){if(_0x303c84){return _0x303c84?{'count':_0xbece68,'rows':_0x303c84}:null;}})['then'](respondWithResult(_0x502ff9,null))['catch'](handleError(_0x502ff9,null));};exports['getDescriptions']=function(_0x333653,_0x4c8171,_0x449861){var _0x49d2f3={};var _0x5cfdaa={};var _0x2630ff;var _0x4538ae;return db[_0x2756('0x42')][_0x2756('0x4c')]({'where':{'id':_0x333653[_0x2756('0x4a')]['id']}})[_0x2756('0x26')](handleEntityNotFound(_0x4c8171,null))[_0x2756('0x26')](function(_0x1dc6d9){if(_0x1dc6d9){_0x2630ff=_0x1dc6d9;_0x5cfdaa['model']=_['keys'](db[_0x2756('0x4d')][_0x2756('0x2e')]);_0x5cfdaa[_0x2756('0x34')]=_[_0x2756('0x33')](_0x333653['query']);_0x5cfdaa['filters']=_[_0x2756('0x36')](_0x5cfdaa[_0x2756('0x32')],_0x5cfdaa[_0x2756('0x34')]);_0x49d2f3['attributes']=_[_0x2756('0x36')](_0x5cfdaa[_0x2756('0x32')],qs[_0x2756('0x38')](_0x333653[_0x2756('0x34')][_0x2756('0x38')]));_0x49d2f3[_0x2756('0x37')]=_0x49d2f3[_0x2756('0x37')][_0x2756('0x39')]?_0x49d2f3[_0x2756('0x37')]:_0x5cfdaa[_0x2756('0x32')];_0x49d2f3[_0x2756('0x3b')]=qs[_0x2756('0x3c')](_0x333653['query'][_0x2756('0x3c')]);_0x49d2f3[_0x2756('0x3d')]=qs[_0x2756('0x35')](_[_0x2756('0x3e')](_0x333653[_0x2756('0x34')],_0x5cfdaa['filters']));if(_0x333653[_0x2756('0x34')][_0x2756('0x3f')]){_0x49d2f3[_0x2756('0x3d')]=_[_0x2756('0x40')](_0x49d2f3[_0x2756('0x3d')],{'$or':_[_0x2756('0x41')](_0x49d2f3[_0x2756('0x37')],function(_0x32ab8f){var _0x578497={};_0x578497[_0x32ab8f]={'$like':'%'+_0x333653['query'][_0x2756('0x3f')]+'%'};return _0x578497;})});}_0x49d2f3=_[_0x2756('0x40')]({},_0x49d2f3,_0x333653[_0x2756('0x46')]);return _0x2630ff[_0x2756('0x50')](_0x49d2f3);}})[_0x2756('0x26')](function(_0x3c10fd){if(_0x3c10fd){_0x4538ae=_0x3c10fd[_0x2756('0x39')];if(!_0x333653['query']['hasOwnProperty'](_0x2756('0x4e'))){_0x49d2f3['limit']=qs['limit'](_0x333653[_0x2756('0x34')][_0x2756('0x1e')]);_0x49d2f3[_0x2756('0x1d')]=qs[_0x2756('0x1d')](_0x333653[_0x2756('0x34')]['offset']);}return _0x2630ff[_0x2756('0x50')](_0x49d2f3);}})[_0x2756('0x26')](function(_0x297dd9){if(_0x297dd9){return _0x297dd9?{'count':_0x4538ae,'rows':_0x297dd9}:null;}})['then'](respondWithResult(_0x4c8171,null))[_0x2756('0x44')](handleError(_0x4c8171,null));};exports['getTags']=function(_0x5cd244,_0x3f7427,_0x5e2ec3){var _0x20ec63={};var _0x43f99a={};var _0x15337b;var _0x36344f;return db[_0x2756('0x42')][_0x2756('0x4c')]({'where':{'id':_0x5cd244[_0x2756('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3f7427,null))[_0x2756('0x26')](function(_0xbbf6ea){if(_0xbbf6ea){_0x15337b=_0xbbf6ea;_0x43f99a['model']=_[_0x2756('0x33')](db[_0x2756('0x51')][_0x2756('0x2e')]);_0x43f99a[_0x2756('0x34')]=_[_0x2756('0x33')](_0x5cd244[_0x2756('0x34')]);_0x43f99a['filters']=_['intersection'](_0x43f99a[_0x2756('0x32')],_0x43f99a['query']);_0x20ec63['attributes']=_[_0x2756('0x36')](_0x43f99a[_0x2756('0x32')],qs['fields'](_0x5cd244['query'][_0x2756('0x38')]));_0x20ec63[_0x2756('0x37')]=_0x20ec63[_0x2756('0x37')][_0x2756('0x39')]?_0x20ec63['attributes']:_0x43f99a[_0x2756('0x32')];_0x20ec63[_0x2756('0x3b')]=qs[_0x2756('0x3c')](_0x5cd244['query'][_0x2756('0x3c')]);_0x20ec63[_0x2756('0x3d')]=qs[_0x2756('0x35')](_[_0x2756('0x3e')](_0x5cd244[_0x2756('0x34')],_0x43f99a['filters']));if(_0x5cd244['query'][_0x2756('0x3f')]){_0x20ec63['where']=_[_0x2756('0x40')](_0x20ec63['where'],{'$or':_['map'](_0x20ec63[_0x2756('0x37')],function(_0xbe3a64){var _0x2d07e8={};_0x2d07e8[_0xbe3a64]={'$like':'%'+_0x5cd244['query'][_0x2756('0x3f')]+'%'};return _0x2d07e8;})});}_0x20ec63=_[_0x2756('0x40')]({},_0x20ec63,_0x5cd244[_0x2756('0x46')]);return _0x15337b['getTags'](_0x20ec63);}})[_0x2756('0x26')](function(_0x5b4570){if(_0x5b4570){_0x36344f=_0x5b4570[_0x2756('0x39')];if(!_0x5cd244['query'][_0x2756('0x3a')](_0x2756('0x4e'))){_0x20ec63[_0x2756('0x1e')]=qs[_0x2756('0x1e')](_0x5cd244['query'][_0x2756('0x1e')]);_0x20ec63[_0x2756('0x1d')]=qs[_0x2756('0x1d')](_0x5cd244['query'][_0x2756('0x1d')]);}return _0x15337b['getTags'](_0x20ec63);}})['then'](function(_0xa24d80){if(_0xa24d80){return _0xa24d80?{'count':_0x36344f,'rows':_0xa24d80}:null;}})[_0x2756('0x26')](respondWithResult(_0x3f7427,null))[_0x2756('0x44')](handleError(_0x3f7427,null));};exports[_0x2756('0x52')]=function(_0x24f4b8,_0x4ae9a7,_0x5933d8){if(_0x24f4b8['body']['id']){delete _0x24f4b8['body']['id'];}return db[_0x2756('0x42')][_0x2756('0x4c')]({'where':{'id':_0x24f4b8[_0x2756('0x4a')]['id']}})['then'](handleEntityNotFound(_0x4ae9a7,null))[_0x2756('0x26')](function(_0x413731){if(_0x413731){return _0x413731[_0x2756('0x52')](_0x24f4b8[_0x2756('0x49')][_0x2756('0x53')]||[]);}return null;})[_0x2756('0x26')](respondWithResult(_0x4ae9a7,null))[_0x2756('0x44')](handleError(_0x4ae9a7,null));};
\ No newline at end of file
+var _0xe56d=['setTags','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','destroy','then','error','stack','name','send','index','map','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','ZendeskConfiguration','findAll','rows','show','params','length','find','catch','body','getFields','ZendeskField','getSubjects','findOne','getDescriptions','getTags'];(function(_0x3644b9,_0x5cd3a6){var _0x4d196d=function(_0x2bb4ef){while(--_0x2bb4ef){_0x3644b9['push'](_0x3644b9['shift']());}};_0x4d196d(++_0x5cd3a6);}(_0xe56d,0xf4));var _0xde56=function(_0x28c7a7,_0x55a356){_0x28c7a7=_0x28c7a7-0x0;var _0x50610f=_0xe56d[_0x28c7a7];return _0x50610f;};'use strict';var emlformat=require(_0xde56('0x0'));var rimraf=require(_0xde56('0x1'));var zipdir=require(_0xde56('0x2'));var jsonpatch=require(_0xde56('0x3'));var rp=require(_0xde56('0x4'));var moment=require(_0xde56('0x5'));var BPromise=require(_0xde56('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0xde56('0x7'));var sox=require(_0xde56('0x8'));var csv=require(_0xde56('0x9'));var ejs=require(_0xde56('0xa'));var fs=require('fs');var fs_extra=require(_0xde56('0xb'));var _=require(_0xde56('0xc'));var squel=require(_0xde56('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xde56('0x9'));var querystring=require(_0xde56('0xe'));var Papa=require(_0xde56('0xf'));var Redis=require(_0xde56('0x10'));var authService=require(_0xde56('0x11'));var qs=require(_0xde56('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xde56('0x13'));var logger=require(_0xde56('0x14'))('api');var utils=require(_0xde56('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xde56('0x16'));var db=require(_0xde56('0x17'))['db'];function respondWithStatusCode(_0x349853,_0x17d2ec){_0x17d2ec=_0x17d2ec||0xcc;return function(_0x53fb8d){if(_0x53fb8d){return _0x349853[_0xde56('0x18')](_0x17d2ec);}return _0x349853[_0xde56('0x19')](_0x17d2ec)[_0xde56('0x1a')]();};}function respondWithResult(_0x24aec5,_0x71ed74){_0x71ed74=_0x71ed74||0xc8;return function(_0x180c2d){if(_0x180c2d){return _0x24aec5[_0xde56('0x19')](_0x71ed74)[_0xde56('0x1b')](_0x180c2d);}};}function respondWithFilteredResult(_0x2d34ec,_0x2a6065){return function(_0x29f551){if(_0x29f551){var _0x46e632=typeof _0x2a6065[_0xde56('0x1c')]===_0xde56('0x1d')&&typeof _0x2a6065[_0xde56('0x1e')]===_0xde56('0x1d');var _0x3457c0=_0x29f551[_0xde56('0x1f')];var _0x2d34c3=_0x46e632?0x0:_0x2a6065['offset'];var _0x3f94d4=_0x46e632?_0x29f551[_0xde56('0x1f')]:_0x2a6065['offset']+_0x2a6065[_0xde56('0x1e')];var _0x6c7a7a;if(_0x3f94d4>=_0x3457c0){_0x3f94d4=_0x3457c0;_0x6c7a7a=0xc8;}else{_0x6c7a7a=0xce;}_0x2d34ec['status'](_0x6c7a7a);return _0x2d34ec[_0xde56('0x20')](_0xde56('0x21'),_0x2d34c3+'-'+_0x3f94d4+'/'+_0x3457c0)[_0xde56('0x1b')](_0x29f551);}return null;};}function patchUpdates(_0x5a4173){return function(_0x1a8130){try{jsonpatch['apply'](_0x1a8130,_0x5a4173,!![]);}catch(_0x1d76ea){return BPromise[_0xde56('0x22')](_0x1d76ea);}return _0x1a8130['save']();};}function saveUpdates(_0x222795,_0x232c86){return function(_0x3e085c){if(_0x3e085c){return _0x3e085c['update'](_0x222795)['then'](function(_0x59289c){return _0x59289c;});}return null;};}function removeEntity(_0x25903d,_0x4961b7){return function(_0x183928){if(_0x183928){return _0x183928[_0xde56('0x23')]()[_0xde56('0x24')](function(){_0x25903d['status'](0xcc)[_0xde56('0x1a')]();});}};}function handleEntityNotFound(_0x22f123,_0x288ad1){return function(_0x5875b5){if(!_0x5875b5){_0x22f123[_0xde56('0x18')](0x194);}return _0x5875b5;};}function handleError(_0x5a97d6,_0x3c4a3d){_0x3c4a3d=_0x3c4a3d||0x1f4;return function(_0x3b898e){logger[_0xde56('0x25')](_0x3b898e[_0xde56('0x26')]);if(_0x3b898e[_0xde56('0x27')]){delete _0x3b898e['name'];}_0x5a97d6[_0xde56('0x19')](_0x3c4a3d)[_0xde56('0x28')](_0x3b898e);};}exports[_0xde56('0x29')]=function(_0x424c3a,_0x1fbce0){var _0x4389e2={},_0x3d61ea={},_0x49acf8={'count':0x0,'rows':[]};var _0x90024=_[_0xde56('0x2a')](db['ZendeskConfiguration'][_0xde56('0x2b')],function(_0x40e1b1){return{'name':_0x40e1b1[_0xde56('0x2c')],'type':_0x40e1b1['type']['key']};});_0x3d61ea[_0xde56('0x2d')]=_[_0xde56('0x2a')](_0x90024,'name');_0x3d61ea[_0xde56('0x2e')]=_[_0xde56('0x2f')](_0x424c3a[_0xde56('0x2e')]);_0x3d61ea[_0xde56('0x30')]=_[_0xde56('0x31')](_0x3d61ea['model'],_0x3d61ea[_0xde56('0x2e')]);_0x4389e2[_0xde56('0x32')]=_['intersection'](_0x3d61ea[_0xde56('0x2d')],qs[_0xde56('0x33')](_0x424c3a[_0xde56('0x2e')]['fields']));_0x4389e2[_0xde56('0x32')]=_0x4389e2[_0xde56('0x32')]['length']?_0x4389e2['attributes']:_0x3d61ea[_0xde56('0x2d')];if(!_0x424c3a[_0xde56('0x2e')][_0xde56('0x34')](_0xde56('0x35'))){_0x4389e2[_0xde56('0x1e')]=qs[_0xde56('0x1e')](_0x424c3a[_0xde56('0x2e')][_0xde56('0x1e')]);_0x4389e2[_0xde56('0x1c')]=qs[_0xde56('0x1c')](_0x424c3a[_0xde56('0x2e')]['offset']);}_0x4389e2[_0xde56('0x36')]=qs[_0xde56('0x37')](_0x424c3a[_0xde56('0x2e')][_0xde56('0x37')]);_0x4389e2[_0xde56('0x38')]=qs['filters'](_[_0xde56('0x39')](_0x424c3a[_0xde56('0x2e')],_0x3d61ea['filters']),_0x90024);if(_0x424c3a[_0xde56('0x2e')][_0xde56('0x3a')]){_0x4389e2['where']=_[_0xde56('0x3b')](_0x4389e2[_0xde56('0x38')],{'$or':_['map'](_0x90024,function(_0xf5d07c){if(_0xf5d07c[_0xde56('0x3c')]!==_0xde56('0x3d')){var _0x1ed0a6={};_0x1ed0a6[_0xf5d07c['name']]={'$like':'%'+_0x424c3a[_0xde56('0x2e')][_0xde56('0x3a')]+'%'};return _0x1ed0a6;}})});}_0x4389e2=_[_0xde56('0x3b')]({},_0x4389e2,_0x424c3a[_0xde56('0x3e')]);var _0xca6bcf={'where':_0x4389e2[_0xde56('0x38')]};return db['ZendeskConfiguration'][_0xde56('0x1f')](_0xca6bcf)[_0xde56('0x24')](function(_0x3cdff6){_0x49acf8[_0xde56('0x1f')]=_0x3cdff6;if(_0x424c3a[_0xde56('0x2e')][_0xde56('0x3f')]){_0x4389e2[_0xde56('0x40')]=[{'all':!![]}];}return db[_0xde56('0x41')][_0xde56('0x42')](_0x4389e2);})[_0xde56('0x24')](function(_0x3f00d1){_0x49acf8[_0xde56('0x43')]=_0x3f00d1;return _0x49acf8;})['then'](respondWithFilteredResult(_0x1fbce0,_0x4389e2))['catch'](handleError(_0x1fbce0,null));};exports[_0xde56('0x44')]=function(_0x42cedd,_0x25a0ff){var _0x219f75={'raw':![],'where':{'id':_0x42cedd[_0xde56('0x45')]['id']}},_0x2f6fb8={};_0x2f6fb8[_0xde56('0x2d')]=_[_0xde56('0x2f')](db[_0xde56('0x41')][_0xde56('0x2b')]);_0x2f6fb8[_0xde56('0x2e')]=_[_0xde56('0x2f')](_0x42cedd['query']);_0x2f6fb8[_0xde56('0x30')]=_[_0xde56('0x31')](_0x2f6fb8[_0xde56('0x2d')],_0x2f6fb8['query']);_0x219f75[_0xde56('0x32')]=_[_0xde56('0x31')](_0x2f6fb8[_0xde56('0x2d')],qs[_0xde56('0x33')](_0x42cedd['query']['fields']));_0x219f75[_0xde56('0x32')]=_0x219f75[_0xde56('0x32')][_0xde56('0x46')]?_0x219f75[_0xde56('0x32')]:_0x2f6fb8['model'];if(_0x42cedd[_0xde56('0x2e')][_0xde56('0x3f')]){_0x219f75[_0xde56('0x40')]=[{'all':!![]}];}_0x219f75=_[_0xde56('0x3b')]({},_0x219f75,_0x42cedd[_0xde56('0x3e')]);return db['ZendeskConfiguration'][_0xde56('0x47')](_0x219f75)['then'](handleEntityNotFound(_0x25a0ff,null))[_0xde56('0x24')](respondWithResult(_0x25a0ff,null))[_0xde56('0x48')](handleError(_0x25a0ff,null));};exports['create']=function(_0x4f7225,_0x5b97da){return db[_0xde56('0x41')]['create'](_0x4f7225['body'],{})[_0xde56('0x24')](respondWithResult(_0x5b97da,0xc9))['catch'](handleError(_0x5b97da,null));};exports['update']=function(_0x9d3b5c,_0x5c66d2){if(_0x9d3b5c[_0xde56('0x49')]['id']){delete _0x9d3b5c[_0xde56('0x49')]['id'];}return db[_0xde56('0x41')][_0xde56('0x47')]({'where':{'id':_0x9d3b5c[_0xde56('0x45')]['id']}})[_0xde56('0x24')](handleEntityNotFound(_0x5c66d2,null))[_0xde56('0x24')](saveUpdates(_0x9d3b5c[_0xde56('0x49')],null))['then'](respondWithResult(_0x5c66d2,null))[_0xde56('0x48')](handleError(_0x5c66d2,null));};exports[_0xde56('0x23')]=function(_0x2b06cc,_0x182a4f){return db[_0xde56('0x41')][_0xde56('0x47')]({'where':{'id':_0x2b06cc[_0xde56('0x45')]['id']}})['then'](handleEntityNotFound(_0x182a4f,null))[_0xde56('0x24')](removeEntity(_0x182a4f,null))['catch'](handleError(_0x182a4f,null));};exports[_0xde56('0x4a')]=function(_0xe9c753,_0x181386,_0x2c770a){var _0x37f575={};var _0x1f8cfe={};var _0x4d51c7;var _0x507c3c;return db[_0xde56('0x41')]['findOne']({'where':{'id':_0xe9c753[_0xde56('0x45')]['id']}})[_0xde56('0x24')](handleEntityNotFound(_0x181386,null))[_0xde56('0x24')](function(_0x1352aa){if(_0x1352aa){_0x4d51c7=_0x1352aa;_0x1f8cfe[_0xde56('0x2d')]=_['keys'](db[_0xde56('0x4b')]['rawAttributes']);_0x1f8cfe[_0xde56('0x2e')]=_[_0xde56('0x2f')](_0xe9c753[_0xde56('0x2e')]);_0x1f8cfe[_0xde56('0x30')]=_[_0xde56('0x31')](_0x1f8cfe[_0xde56('0x2d')],_0x1f8cfe['query']);_0x37f575['attributes']=_[_0xde56('0x31')](_0x1f8cfe[_0xde56('0x2d')],qs['fields'](_0xe9c753['query'][_0xde56('0x33')]));_0x37f575['attributes']=_0x37f575[_0xde56('0x32')][_0xde56('0x46')]?_0x37f575[_0xde56('0x32')]:_0x1f8cfe[_0xde56('0x2d')];_0x37f575['order']=qs[_0xde56('0x37')](_0xe9c753[_0xde56('0x2e')][_0xde56('0x37')]);_0x37f575['where']=qs[_0xde56('0x30')](_['pick'](_0xe9c753[_0xde56('0x2e')],_0x1f8cfe[_0xde56('0x30')]));if(_0xe9c753[_0xde56('0x2e')][_0xde56('0x3a')]){_0x37f575[_0xde56('0x38')]=_['merge'](_0x37f575[_0xde56('0x38')],{'$or':_[_0xde56('0x2a')](_0x37f575['attributes'],function(_0x42fa33){var _0x484cef={};_0x484cef[_0x42fa33]={'$like':'%'+_0xe9c753[_0xde56('0x2e')][_0xde56('0x3a')]+'%'};return _0x484cef;})});}_0x37f575=_[_0xde56('0x3b')]({},_0x37f575,_0xe9c753[_0xde56('0x3e')]);return _0x4d51c7['getFields'](_0x37f575);}})[_0xde56('0x24')](function(_0x27a39b){if(_0x27a39b){_0x507c3c=_0x27a39b[_0xde56('0x46')];if(!_0xe9c753[_0xde56('0x2e')][_0xde56('0x34')]('nolimit')){_0x37f575['limit']=qs[_0xde56('0x1e')](_0xe9c753['query'][_0xde56('0x1e')]);_0x37f575[_0xde56('0x1c')]=qs[_0xde56('0x1c')](_0xe9c753[_0xde56('0x2e')][_0xde56('0x1c')]);}return _0x4d51c7['getFields'](_0x37f575);}})[_0xde56('0x24')](function(_0x5346a9){if(_0x5346a9){return _0x5346a9?{'count':_0x507c3c,'rows':_0x5346a9}:null;}})[_0xde56('0x24')](respondWithResult(_0x181386,null))['catch'](handleError(_0x181386,null));};exports['getSubjects']=function(_0x53e024,_0x48d833,_0x3b3146){var _0x4b1b39={};var _0x5622d4={};var _0x53a95c;var _0x47879c;return db[_0xde56('0x41')]['findOne']({'where':{'id':_0x53e024[_0xde56('0x45')]['id']}})['then'](handleEntityNotFound(_0x48d833,null))[_0xde56('0x24')](function(_0x38e832){if(_0x38e832){_0x53a95c=_0x38e832;_0x5622d4[_0xde56('0x2d')]=_['keys'](db[_0xde56('0x4b')][_0xde56('0x2b')]);_0x5622d4[_0xde56('0x2e')]=_[_0xde56('0x2f')](_0x53e024[_0xde56('0x2e')]);_0x5622d4['filters']=_[_0xde56('0x31')](_0x5622d4[_0xde56('0x2d')],_0x5622d4[_0xde56('0x2e')]);_0x4b1b39[_0xde56('0x32')]=_[_0xde56('0x31')](_0x5622d4[_0xde56('0x2d')],qs[_0xde56('0x33')](_0x53e024[_0xde56('0x2e')][_0xde56('0x33')]));_0x4b1b39['attributes']=_0x4b1b39[_0xde56('0x32')][_0xde56('0x46')]?_0x4b1b39[_0xde56('0x32')]:_0x5622d4[_0xde56('0x2d')];_0x4b1b39[_0xde56('0x36')]=qs[_0xde56('0x37')](_0x53e024[_0xde56('0x2e')][_0xde56('0x37')]);_0x4b1b39['where']=qs['filters'](_['pick'](_0x53e024[_0xde56('0x2e')],_0x5622d4[_0xde56('0x30')]));if(_0x53e024[_0xde56('0x2e')][_0xde56('0x3a')]){_0x4b1b39[_0xde56('0x38')]=_['merge'](_0x4b1b39[_0xde56('0x38')],{'$or':_['map'](_0x4b1b39[_0xde56('0x32')],function(_0x2a32ba){var _0xd2e54c={};_0xd2e54c[_0x2a32ba]={'$like':'%'+_0x53e024[_0xde56('0x2e')]['filter']+'%'};return _0xd2e54c;})});}_0x4b1b39=_[_0xde56('0x3b')]({},_0x4b1b39,_0x53e024[_0xde56('0x3e')]);return _0x53a95c[_0xde56('0x4c')](_0x4b1b39);}})[_0xde56('0x24')](function(_0x42f66d){if(_0x42f66d){_0x47879c=_0x42f66d[_0xde56('0x46')];if(!_0x53e024[_0xde56('0x2e')][_0xde56('0x34')](_0xde56('0x35'))){_0x4b1b39['limit']=qs['limit'](_0x53e024[_0xde56('0x2e')][_0xde56('0x1e')]);_0x4b1b39['offset']=qs[_0xde56('0x1c')](_0x53e024[_0xde56('0x2e')][_0xde56('0x1c')]);}return _0x53a95c[_0xde56('0x4c')](_0x4b1b39);}})['then'](function(_0x285591){if(_0x285591){return _0x285591?{'count':_0x47879c,'rows':_0x285591}:null;}})[_0xde56('0x24')](respondWithResult(_0x48d833,null))['catch'](handleError(_0x48d833,null));};exports['getDescriptions']=function(_0x22de76,_0x599510,_0x2b6d71){var _0x5866d3={};var _0x2d3c23={};var _0x30e1be;var _0x39f359;return db[_0xde56('0x41')][_0xde56('0x4d')]({'where':{'id':_0x22de76[_0xde56('0x45')]['id']}})[_0xde56('0x24')](handleEntityNotFound(_0x599510,null))['then'](function(_0x18d701){if(_0x18d701){_0x30e1be=_0x18d701;_0x2d3c23[_0xde56('0x2d')]=_['keys'](db[_0xde56('0x4b')][_0xde56('0x2b')]);_0x2d3c23[_0xde56('0x2e')]=_[_0xde56('0x2f')](_0x22de76['query']);_0x2d3c23[_0xde56('0x30')]=_[_0xde56('0x31')](_0x2d3c23[_0xde56('0x2d')],_0x2d3c23[_0xde56('0x2e')]);_0x5866d3[_0xde56('0x32')]=_[_0xde56('0x31')](_0x2d3c23[_0xde56('0x2d')],qs[_0xde56('0x33')](_0x22de76[_0xde56('0x2e')]['fields']));_0x5866d3[_0xde56('0x32')]=_0x5866d3['attributes'][_0xde56('0x46')]?_0x5866d3[_0xde56('0x32')]:_0x2d3c23['model'];_0x5866d3[_0xde56('0x36')]=qs['sort'](_0x22de76[_0xde56('0x2e')][_0xde56('0x37')]);_0x5866d3['where']=qs['filters'](_[_0xde56('0x39')](_0x22de76['query'],_0x2d3c23[_0xde56('0x30')]));if(_0x22de76[_0xde56('0x2e')][_0xde56('0x3a')]){_0x5866d3['where']=_[_0xde56('0x3b')](_0x5866d3[_0xde56('0x38')],{'$or':_[_0xde56('0x2a')](_0x5866d3['attributes'],function(_0x115bdd){var _0x20b4da={};_0x20b4da[_0x115bdd]={'$like':'%'+_0x22de76[_0xde56('0x2e')][_0xde56('0x3a')]+'%'};return _0x20b4da;})});}_0x5866d3=_[_0xde56('0x3b')]({},_0x5866d3,_0x22de76[_0xde56('0x3e')]);return _0x30e1be[_0xde56('0x4e')](_0x5866d3);}})[_0xde56('0x24')](function(_0x49d681){if(_0x49d681){_0x39f359=_0x49d681[_0xde56('0x46')];if(!_0x22de76['query'][_0xde56('0x34')](_0xde56('0x35'))){_0x5866d3[_0xde56('0x1e')]=qs['limit'](_0x22de76[_0xde56('0x2e')][_0xde56('0x1e')]);_0x5866d3[_0xde56('0x1c')]=qs[_0xde56('0x1c')](_0x22de76['query'][_0xde56('0x1c')]);}return _0x30e1be['getDescriptions'](_0x5866d3);}})[_0xde56('0x24')](function(_0x1e91f7){if(_0x1e91f7){return _0x1e91f7?{'count':_0x39f359,'rows':_0x1e91f7}:null;}})[_0xde56('0x24')](respondWithResult(_0x599510,null))[_0xde56('0x48')](handleError(_0x599510,null));};exports['getTags']=function(_0x158388,_0x39304c,_0xa7b78b){var _0x221c72={};var _0x5ea868={};var _0x1eaab0;var _0x306d29;return db[_0xde56('0x41')][_0xde56('0x4d')]({'where':{'id':_0x158388[_0xde56('0x45')]['id']}})[_0xde56('0x24')](handleEntityNotFound(_0x39304c,null))['then'](function(_0x44a722){if(_0x44a722){_0x1eaab0=_0x44a722;_0x5ea868[_0xde56('0x2d')]=_[_0xde56('0x2f')](db['Tag']['rawAttributes']);_0x5ea868[_0xde56('0x2e')]=_[_0xde56('0x2f')](_0x158388[_0xde56('0x2e')]);_0x5ea868[_0xde56('0x30')]=_['intersection'](_0x5ea868[_0xde56('0x2d')],_0x5ea868['query']);_0x221c72[_0xde56('0x32')]=_[_0xde56('0x31')](_0x5ea868[_0xde56('0x2d')],qs[_0xde56('0x33')](_0x158388['query']['fields']));_0x221c72[_0xde56('0x32')]=_0x221c72['attributes'][_0xde56('0x46')]?_0x221c72['attributes']:_0x5ea868[_0xde56('0x2d')];_0x221c72[_0xde56('0x36')]=qs[_0xde56('0x37')](_0x158388['query'][_0xde56('0x37')]);_0x221c72['where']=qs[_0xde56('0x30')](_[_0xde56('0x39')](_0x158388[_0xde56('0x2e')],_0x5ea868[_0xde56('0x30')]));if(_0x158388[_0xde56('0x2e')][_0xde56('0x3a')]){_0x221c72[_0xde56('0x38')]=_[_0xde56('0x3b')](_0x221c72[_0xde56('0x38')],{'$or':_['map'](_0x221c72[_0xde56('0x32')],function(_0x3a578d){var _0x2aa1b2={};_0x2aa1b2[_0x3a578d]={'$like':'%'+_0x158388['query'][_0xde56('0x3a')]+'%'};return _0x2aa1b2;})});}_0x221c72=_[_0xde56('0x3b')]({},_0x221c72,_0x158388[_0xde56('0x3e')]);return _0x1eaab0[_0xde56('0x4f')](_0x221c72);}})[_0xde56('0x24')](function(_0x3e5b57){if(_0x3e5b57){_0x306d29=_0x3e5b57[_0xde56('0x46')];if(!_0x158388[_0xde56('0x2e')][_0xde56('0x34')](_0xde56('0x35'))){_0x221c72[_0xde56('0x1e')]=qs[_0xde56('0x1e')](_0x158388[_0xde56('0x2e')][_0xde56('0x1e')]);_0x221c72[_0xde56('0x1c')]=qs[_0xde56('0x1c')](_0x158388['query']['offset']);}return _0x1eaab0[_0xde56('0x4f')](_0x221c72);}})['then'](function(_0x1cc7e3){if(_0x1cc7e3){return _0x1cc7e3?{'count':_0x306d29,'rows':_0x1cc7e3}:null;}})[_0xde56('0x24')](respondWithResult(_0x39304c,null))[_0xde56('0x48')](handleError(_0x39304c,null));};exports['setTags']=function(_0x1c1a40,_0x484911,_0x44ec3e){if(_0x1c1a40[_0xde56('0x49')]['id']){delete _0x1c1a40[_0xde56('0x49')]['id'];}return db[_0xde56('0x41')][_0xde56('0x4d')]({'where':{'id':_0x1c1a40[_0xde56('0x45')]['id']}})[_0xde56('0x24')](handleEntityNotFound(_0x484911,null))[_0xde56('0x24')](function(_0x366036){if(_0x366036){return _0x366036[_0xde56('0x50')](_0x1c1a40[_0xde56('0x49')]['ids']||[]);}return null;})[_0xde56('0x24')](respondWithResult(_0x484911,null))[_0xde56('0x48')](handleError(_0x484911,null));};
\ No newline at end of file
index 31d13db..673b625 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['api','moment','request-promise','path','rimraf','../../config/environment','./intZendeskConfiguration.attributes','exports','define','int_zendesk_configurations','lodash','../../config/logger'];(function(_0x162ee0,_0x291661){var _0x48fc5e=function(_0x297a35){while(--_0x297a35){_0x162ee0['push'](_0x162ee0['shift']());}};_0x48fc5e(++_0x291661);}(_0xb10b,0x12a));var _0xbb10=function(_0x185deb,_0x20e36f){_0x185deb=_0x185deb-0x0;var _0x37436e=_0xb10b[_0x185deb];return _0x37436e;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var logger=require(_0xbb10('0x1'))(_0xbb10('0x2'));var moment=require(_0xbb10('0x3'));var BPromise=require('bluebird');var rp=require(_0xbb10('0x4'));var fs=require('fs');var path=require(_0xbb10('0x5'));var rimraf=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var attributes=require(_0xbb10('0x8'));module[_0xbb10('0x9')]=function(_0x481979,_0x328583){return _0x481979[_0xbb10('0xa')]('ZendeskConfiguration',attributes,{'tableName':_0xbb10('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1c9a=['moment','bluebird','request-promise','rimraf','../../config/environment','./intZendeskConfiguration.attributes','exports','ZendeskConfiguration','int_zendesk_configurations','lodash','../../config/logger'];(function(_0x3310f6,_0x1ab122){var _0x4ec026=function(_0x5906e0){while(--_0x5906e0){_0x3310f6['push'](_0x3310f6['shift']());}};_0x4ec026(++_0x1ab122);}(_0x1c9a,0x98));var _0xa1c9=function(_0x5484b7,_0xac1bb1){_0x5484b7=_0x5484b7-0x0;var _0x1e49df=_0x1c9a[_0x5484b7];return _0x1e49df;};'use strict';var _=require(_0xa1c9('0x0'));var util=require('util');var logger=require(_0xa1c9('0x1'))('api');var moment=require(_0xa1c9('0x2'));var BPromise=require(_0xa1c9('0x3'));var rp=require(_0xa1c9('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa1c9('0x5'));var config=require(_0xa1c9('0x6'));var attributes=require(_0xa1c9('0x7'));module[_0xa1c9('0x8')]=function(_0x572229,_0x144e91){return _0x572229['define'](_0xa1c9('0x9'),attributes,{'tableName':_0xa1c9('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ab0347c..632673f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x192d=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','http','then','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','util','moment'];(function(_0x7e8599,_0x4c0dd9){var _0x1040a9=function(_0x5e42e7){while(--_0x5e42e7){_0x7e8599['push'](_0x7e8599['shift']());}};_0x1040a9(++_0x4c0dd9);}(_0x192d,0x12e));var _0xd192=function(_0x31988f,_0xaa9c3b){_0x31988f=_0x31988f-0x0;var _0xb67873=_0x192d[_0x31988f];return _0xb67873;};'use strict';var _=require('lodash');var util=require(_0xd192('0x0'));var moment=require(_0xd192('0x1'));var BPromise=require(_0xd192('0x2'));var rs=require(_0xd192('0x3'));var fs=require('fs');var Redis=require(_0xd192('0x4'));var db=require(_0xd192('0x5'))['db'];var utils=require(_0xd192('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xd192('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xd192('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x30cdd2,_0x2f0484,_0x1290e6){return new BPromise(function(_0x289b46,_0x4a18ff){return client['request'](_0x30cdd2,_0x1290e6)[_0xd192('0x9')](function(_0x323f4b){logger['info'](_0xd192('0xa'),_0x2f0484,_0xd192('0xb'));logger[_0xd192('0xc')](_0xd192('0xd'),_0x2f0484,_0xd192('0xb'),JSON['stringify'](_0x323f4b));if(_0x323f4b[_0xd192('0xe')]){if(_0x323f4b['error']['code']===0x1f4){logger[_0xd192('0xe')](_0xd192('0xa'),_0x2f0484,_0x323f4b[_0xd192('0xe')]['message']);return _0x4a18ff(_0x323f4b[_0xd192('0xe')][_0xd192('0xf')]);}logger[_0xd192('0xe')](_0xd192('0xa'),_0x2f0484,_0x323f4b[_0xd192('0xe')]['message']);return _0x289b46(_0x323f4b[_0xd192('0xe')][_0xd192('0xf')]);}else{logger[_0xd192('0x10')]('ZendeskConfiguration,\x20%s,\x20%s',_0x2f0484,_0xd192('0xb'));_0x289b46(_0x323f4b[_0xd192('0x11')][_0xd192('0xf')]);}})[_0xd192('0x12')](function(_0x5e7d5b){logger[_0xd192('0xe')](_0xd192('0xa'),_0x2f0484,_0x5e7d5b);_0x4a18ff(_0x5e7d5b);});});}
\ No newline at end of file
+var _0x98e9=['message','request\x20sent','catch','lodash','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','ZendeskConfiguration,\x20%s,\x20%s','debug','stringify','code','error'];(function(_0x1ec1d4,_0x42fd9a){var _0x5c24e8=function(_0x46f1ff){while(--_0x46f1ff){_0x1ec1d4['push'](_0x1ec1d4['shift']());}};_0x5c24e8(++_0x42fd9a);}(_0x98e9,0x96));var _0x998e=function(_0x1c85c1,_0x125a6a){_0x1c85c1=_0x1c85c1-0x0;var _0x9ed01a=_0x98e9[_0x1c85c1];return _0x9ed01a;};'use strict';var _=require(_0x998e('0x0'));var util=require('util');var moment=require(_0x998e('0x1'));var BPromise=require(_0x998e('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x998e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x998e('0x4'));var logger=require(_0x998e('0x5'))(_0x998e('0x6'));var config=require(_0x998e('0x7'));var jayson=require(_0x998e('0x8'));var client=jayson[_0x998e('0x9')][_0x998e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x283640,_0x13403,_0x1c29b9){return new BPromise(function(_0x4433ae,_0x25a6a5){return client[_0x998e('0xb')](_0x283640,_0x1c29b9)['then'](function(_0x4eeafc){logger[_0x998e('0xc')](_0x998e('0xd'),_0x13403,'request\x20sent');logger[_0x998e('0xe')]('ZendeskConfiguration,\x20%s,\x20%s,\x20%s',_0x13403,'request\x20sent',JSON[_0x998e('0xf')](_0x4eeafc));if(_0x4eeafc['error']){if(_0x4eeafc['error'][_0x998e('0x10')]===0x1f4){logger[_0x998e('0x11')](_0x998e('0xd'),_0x13403,_0x4eeafc[_0x998e('0x11')][_0x998e('0x12')]);return _0x25a6a5(_0x4eeafc[_0x998e('0x11')][_0x998e('0x12')]);}logger['error'](_0x998e('0xd'),_0x13403,_0x4eeafc[_0x998e('0x11')][_0x998e('0x12')]);return _0x4433ae(_0x4eeafc[_0x998e('0x11')]['message']);}else{logger[_0x998e('0xc')](_0x998e('0xd'),_0x13403,_0x998e('0x13'));_0x4433ae(_0x4eeafc['result']['message']);}})[_0x998e('0x14')](function(_0x513076){logger['error'](_0x998e('0xd'),_0x13403,_0x513076);_0x25a6a5(_0x513076);});});}
\ No newline at end of file
index 6365a99..2411668 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeda4=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intZendeskField.controller','isAuthenticated','index','get','/:id','show','post'];(function(_0x5654b2,_0x1554be){var _0x105651=function(_0x5f3b08){while(--_0x5f3b08){_0x5654b2['push'](_0x5654b2['shift']());}};_0x105651(++_0x1554be);}(_0xeda4,0xe0));var _0x4eda=function(_0x547ff4,_0x416fa1){_0x547ff4=_0x547ff4-0x0;var _0xe41057=_0xeda4[_0x547ff4];return _0xe41057;};'use strict';var multer=require(_0x4eda('0x0'));var util=require(_0x4eda('0x1'));var path=require(_0x4eda('0x2'));var timeout=require(_0x4eda('0x3'));var express=require(_0x4eda('0x4'));var router=express[_0x4eda('0x5')]();var fs_extra=require(_0x4eda('0x6'));var auth=require(_0x4eda('0x7'));var interaction=require(_0x4eda('0x8'));var config=require('../../config/environment');var controller=require(_0x4eda('0x9'));router['get']('/',auth[_0x4eda('0xa')](),controller[_0x4eda('0xb')]);router[_0x4eda('0xc')](_0x4eda('0xd'),auth[_0x4eda('0xa')](),controller[_0x4eda('0xe')]);router[_0x4eda('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x4eda('0xd'),auth['isAuthenticated'](),controller[_0x4eda('0x10')]);router[_0x4eda('0x11')](_0x4eda('0xd'),auth[_0x4eda('0xa')](),controller[_0x4eda('0x12')]);module[_0x4eda('0x13')]=router;
\ No newline at end of file
+var _0x6e62=['update','delete','destroy','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./intZendeskField.controller','get','isAuthenticated','show','post','create','put','/:id'];(function(_0x225252,_0x3f32bc){var _0x31ee07=function(_0x2d7a25){while(--_0x2d7a25){_0x225252['push'](_0x225252['shift']());}};_0x31ee07(++_0x3f32bc);}(_0x6e62,0x1f0));var _0x26e6=function(_0x4d6317,_0x2b9c4e){_0x4d6317=_0x4d6317-0x0;var _0x25b89e=_0x6e62[_0x4d6317];return _0x25b89e;};'use strict';var multer=require(_0x26e6('0x0'));var util=require('util');var path=require(_0x26e6('0x1'));var timeout=require(_0x26e6('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x26e6('0x3'));var auth=require(_0x26e6('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x26e6('0x5'));var controller=require(_0x26e6('0x6'));router[_0x26e6('0x7')]('/',auth[_0x26e6('0x8')](),controller['index']);router['get']('/:id',auth[_0x26e6('0x8')](),controller[_0x26e6('0x9')]);router[_0x26e6('0xa')]('/',auth[_0x26e6('0x8')](),controller[_0x26e6('0xb')]);router[_0x26e6('0xc')](_0x26e6('0xd'),auth['isAuthenticated'](),controller[_0x26e6('0xe')]);router[_0x26e6('0xf')](_0x26e6('0xd'),auth[_0x26e6('0x8')](),controller[_0x26e6('0x10')]);module['exports']=router;
\ No newline at end of file
index 06e76d2..71e6d83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e1f=['STRING','BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','keyValue','picklist'];(function(_0x57828e,_0xe55d3){var _0x426a8c=function(_0x40f416){while(--_0x40f416){_0x57828e['push'](_0x57828e['shift']());}};_0x426a8c(++_0xe55d3);}(_0x3e1f,0x1ce));var _0xf3e1=function(_0x37fcda,_0x2f5aa1){_0x37fcda=_0x37fcda-0x0;var _0xf5ed91=_0x3e1f[_0x37fcda];return _0xf5ed91;};'use strict';var Sequelize=require(_0xf3e1('0x0'));module[_0xf3e1('0x1')]={'type':{'type':Sequelize[_0xf3e1('0x2')](_0xf3e1('0x3'),_0xf3e1('0x4'),_0xf3e1('0x5'),_0xf3e1('0x6'),_0xf3e1('0x7')),'defaultValue':_0xf3e1('0x3')},'content':{'type':Sequelize[_0xf3e1('0x8')]},'key':{'type':Sequelize[_0xf3e1('0x8')]},'keyType':{'type':Sequelize[_0xf3e1('0x2')](_0xf3e1('0x3'),'variable',_0xf3e1('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xf3e1('0x8')]},'customField':{'type':Sequelize[_0xf3e1('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x91aa=['string','variable','customVariable','keyValue','STRING','BOOLEAN','exports','ENUM'];(function(_0x192fd5,_0x1f7dc3){var _0x229ed5=function(_0x2cbcd4){while(--_0x2cbcd4){_0x192fd5['push'](_0x192fd5['shift']());}};_0x229ed5(++_0x1f7dc3);}(_0x91aa,0x1ae));var _0xa91a=function(_0x4c2800,_0x35e245){_0x4c2800=_0x4c2800-0x0;var _0x286693=_0x91aa[_0x4c2800];return _0x286693;};'use strict';var Sequelize=require('sequelize');module[_0xa91a('0x0')]={'type':{'type':Sequelize[_0xa91a('0x1')](_0xa91a('0x2'),_0xa91a('0x3'),_0xa91a('0x4'),_0xa91a('0x5'),'picklist'),'defaultValue':_0xa91a('0x2')},'content':{'type':Sequelize[_0xa91a('0x6')]},'key':{'type':Sequelize[_0xa91a('0x6')]},'keyType':{'type':Sequelize[_0xa91a('0x1')](_0xa91a('0x2'),'variable',_0xa91a('0x4'))},'keyContent':{'type':Sequelize[_0xa91a('0x6')]},'idField':{'type':Sequelize[_0xa91a('0x6')]},'nameField':{'type':Sequelize[_0xa91a('0x6')]},'customField':{'type':Sequelize[_0xa91a('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xa91a('0x6')]}};
\ No newline at end of file
index af57396..d503717 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x521a=['show','keys','rawAttributes','find','create','body','params','destroy','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','sendStatus','error','stack','name','index','map','ZendeskField','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','options','includeAll','findAll','rows','catch'];(function(_0x32116f,_0x17bda0){var _0x273eab=function(_0x5c5254){while(--_0x5c5254){_0x32116f['push'](_0x32116f['shift']());}};_0x273eab(++_0x17bda0);}(_0x521a,0x184));var _0xa521=function(_0x855e77,_0x348ad7){_0x855e77=_0x855e77-0x0;var _0x1edd15=_0x521a[_0x855e77];return _0x1edd15;};'use strict';var emlformat=require(_0xa521('0x0'));var rimraf=require(_0xa521('0x1'));var zipdir=require(_0xa521('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa521('0x3'));var moment=require(_0xa521('0x4'));var BPromise=require(_0xa521('0x5'));var Mustache=require(_0xa521('0x6'));var util=require(_0xa521('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xa521('0x8'));var fs=require('fs');var fs_extra=require(_0xa521('0x9'));var _=require(_0xa521('0xa'));var squel=require(_0xa521('0xb'));var crypto=require(_0xa521('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xa521('0xd'));var toCsv=require('to-csv');var querystring=require(_0xa521('0xe'));var Papa=require(_0xa521('0xf'));var Redis=require(_0xa521('0x10'));var authService=require(_0xa521('0x11'));var qs=require(_0xa521('0x12'));var as=require(_0xa521('0x13'));var hardwareService=require(_0xa521('0x14'));var logger=require(_0xa521('0x15'))(_0xa521('0x16'));var utils=require(_0xa521('0x17'));var config=require(_0xa521('0x18'));var licenseUtil=require(_0xa521('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x460a68,_0x2b4be8){_0x2b4be8=_0x2b4be8||0xcc;return function(_0xc56bce){if(_0xc56bce){return _0x460a68['sendStatus'](_0x2b4be8);}return _0x460a68['status'](_0x2b4be8)[_0xa521('0x1a')]();};}function respondWithResult(_0x48ea53,_0x9537a3){_0x9537a3=_0x9537a3||0xc8;return function(_0x1ff4a8){if(_0x1ff4a8){return _0x48ea53[_0xa521('0x1b')](_0x9537a3)[_0xa521('0x1c')](_0x1ff4a8);}};}function respondWithFilteredResult(_0x10d115,_0x2683d7){return function(_0x2a6df6){if(_0x2a6df6){var _0x20e338=typeof _0x2683d7[_0xa521('0x1d')]==='undefined'&&typeof _0x2683d7[_0xa521('0x1e')]===_0xa521('0x1f');var _0x5f3dcd=_0x2a6df6[_0xa521('0x20')];var _0x3d28ee=_0x20e338?0x0:_0x2683d7['offset'];var _0x5e8520=_0x20e338?_0x2a6df6[_0xa521('0x20')]:_0x2683d7['offset']+_0x2683d7[_0xa521('0x1e')];var _0x5ea8c3;if(_0x5e8520>=_0x5f3dcd){_0x5e8520=_0x5f3dcd;_0x5ea8c3=0xc8;}else{_0x5ea8c3=0xce;}_0x10d115['status'](_0x5ea8c3);return _0x10d115[_0xa521('0x21')](_0xa521('0x22'),_0x3d28ee+'-'+_0x5e8520+'/'+_0x5f3dcd)[_0xa521('0x1c')](_0x2a6df6);}return null;};}function patchUpdates(_0x1f62d8){return function(_0x1f717f){try{jsonpatch[_0xa521('0x23')](_0x1f717f,_0x1f62d8,!![]);}catch(_0x3af165){return BPromise[_0xa521('0x24')](_0x3af165);}return _0x1f717f['save']();};}function saveUpdates(_0x3dad23,_0x7531aa){return function(_0x55a964){if(_0x55a964){return _0x55a964[_0xa521('0x25')](_0x3dad23)[_0xa521('0x26')](function(_0x103039){return _0x103039;});}return null;};}function removeEntity(_0x28b6b7,_0x3b08cf){return function(_0x22d475){if(_0x22d475){return _0x22d475['destroy']()[_0xa521('0x26')](function(){_0x28b6b7[_0xa521('0x1b')](0xcc)[_0xa521('0x1a')]();});}};}function handleEntityNotFound(_0x3507cc,_0x4ae9fa){return function(_0x3b9b61){if(!_0x3b9b61){_0x3507cc[_0xa521('0x27')](0x194);}return _0x3b9b61;};}function handleError(_0x468182,_0x55b993){_0x55b993=_0x55b993||0x1f4;return function(_0x1087ef){logger[_0xa521('0x28')](_0x1087ef[_0xa521('0x29')]);if(_0x1087ef[_0xa521('0x2a')]){delete _0x1087ef[_0xa521('0x2a')];}_0x468182[_0xa521('0x1b')](_0x55b993)['send'](_0x1087ef);};}exports[_0xa521('0x2b')]=function(_0x36f9ef,_0x4b9fc9){var _0x30ea3e={},_0x5c4125={},_0x53f3e0={'count':0x0,'rows':[]};var _0x51203b=_[_0xa521('0x2c')](db[_0xa521('0x2d')]['rawAttributes'],function(_0x8b129d){return{'name':_0x8b129d[_0xa521('0x2e')],'type':_0x8b129d[_0xa521('0x2f')][_0xa521('0x30')]};});_0x5c4125[_0xa521('0x31')]=_[_0xa521('0x2c')](_0x51203b,'name');_0x5c4125[_0xa521('0x32')]=_['keys'](_0x36f9ef[_0xa521('0x32')]);_0x5c4125['filters']=_[_0xa521('0x33')](_0x5c4125[_0xa521('0x31')],_0x5c4125[_0xa521('0x32')]);_0x30ea3e[_0xa521('0x34')]=_[_0xa521('0x33')](_0x5c4125['model'],qs[_0xa521('0x35')](_0x36f9ef[_0xa521('0x32')][_0xa521('0x35')]));_0x30ea3e[_0xa521('0x34')]=_0x30ea3e[_0xa521('0x34')][_0xa521('0x36')]?_0x30ea3e['attributes']:_0x5c4125['model'];if(!_0x36f9ef[_0xa521('0x32')][_0xa521('0x37')]('nolimit')){_0x30ea3e[_0xa521('0x1e')]=qs[_0xa521('0x1e')](_0x36f9ef['query']['limit']);_0x30ea3e[_0xa521('0x1d')]=qs[_0xa521('0x1d')](_0x36f9ef[_0xa521('0x32')][_0xa521('0x1d')]);}_0x30ea3e[_0xa521('0x38')]=qs[_0xa521('0x39')](_0x36f9ef[_0xa521('0x32')][_0xa521('0x39')]);_0x30ea3e[_0xa521('0x3a')]=qs[_0xa521('0x3b')](_[_0xa521('0x3c')](_0x36f9ef['query'],_0x5c4125[_0xa521('0x3b')]),_0x51203b);if(_0x36f9ef[_0xa521('0x32')][_0xa521('0x3d')]){_0x30ea3e[_0xa521('0x3a')]=_[_0xa521('0x3e')](_0x30ea3e[_0xa521('0x3a')],{'$or':_[_0xa521('0x2c')](_0x51203b,function(_0x3c6d4c){if(_0x3c6d4c['type']!=='VIRTUAL'){var _0x2ce2df={};_0x2ce2df[_0x3c6d4c['name']]={'$like':'%'+_0x36f9ef[_0xa521('0x32')][_0xa521('0x3d')]+'%'};return _0x2ce2df;}})});}_0x30ea3e=_[_0xa521('0x3e')]({},_0x30ea3e,_0x36f9ef[_0xa521('0x3f')]);var _0x556922={'where':_0x30ea3e['where']};return db[_0xa521('0x2d')]['count'](_0x556922)[_0xa521('0x26')](function(_0x50ee26){_0x53f3e0[_0xa521('0x20')]=_0x50ee26;if(_0x36f9ef[_0xa521('0x32')][_0xa521('0x40')]){_0x30ea3e['include']=[{'all':!![]}];}return db['ZendeskField'][_0xa521('0x41')](_0x30ea3e);})[_0xa521('0x26')](function(_0x509bae){_0x53f3e0[_0xa521('0x42')]=_0x509bae;return _0x53f3e0;})[_0xa521('0x26')](respondWithFilteredResult(_0x4b9fc9,_0x30ea3e))[_0xa521('0x43')](handleError(_0x4b9fc9,null));};exports[_0xa521('0x44')]=function(_0x492494,_0x4451e6){var _0x11efca={'raw':!![],'where':{'id':_0x492494['params']['id']}},_0xe2e13b={};_0xe2e13b[_0xa521('0x31')]=_[_0xa521('0x45')](db['ZendeskField'][_0xa521('0x46')]);_0xe2e13b[_0xa521('0x32')]=_[_0xa521('0x45')](_0x492494[_0xa521('0x32')]);_0xe2e13b['filters']=_[_0xa521('0x33')](_0xe2e13b['model'],_0xe2e13b[_0xa521('0x32')]);_0x11efca['attributes']=_[_0xa521('0x33')](_0xe2e13b[_0xa521('0x31')],qs['fields'](_0x492494[_0xa521('0x32')][_0xa521('0x35')]));_0x11efca[_0xa521('0x34')]=_0x11efca['attributes']['length']?_0x11efca[_0xa521('0x34')]:_0xe2e13b[_0xa521('0x31')];if(_0x492494[_0xa521('0x32')][_0xa521('0x40')]){_0x11efca['include']=[{'all':!![]}];}_0x11efca=_[_0xa521('0x3e')]({},_0x11efca,_0x492494[_0xa521('0x3f')]);return db[_0xa521('0x2d')][_0xa521('0x47')](_0x11efca)['then'](handleEntityNotFound(_0x4451e6,null))[_0xa521('0x26')](respondWithResult(_0x4451e6,null))[_0xa521('0x43')](handleError(_0x4451e6,null));};exports[_0xa521('0x48')]=function(_0x3ee7c2,_0x23077e){return db[_0xa521('0x2d')][_0xa521('0x48')](_0x3ee7c2[_0xa521('0x49')],{})[_0xa521('0x26')](respondWithResult(_0x23077e,0xc9))[_0xa521('0x43')](handleError(_0x23077e,null));};exports['update']=function(_0x4cb8d1,_0x1eb5e0){if(_0x4cb8d1['body']['id']){delete _0x4cb8d1[_0xa521('0x49')]['id'];}return db[_0xa521('0x2d')]['find']({'where':{'id':_0x4cb8d1[_0xa521('0x4a')]['id']}})[_0xa521('0x26')](handleEntityNotFound(_0x1eb5e0,null))[_0xa521('0x26')](saveUpdates(_0x4cb8d1[_0xa521('0x49')],null))[_0xa521('0x26')](respondWithResult(_0x1eb5e0,null))[_0xa521('0x43')](handleError(_0x1eb5e0,null));};exports[_0xa521('0x4b')]=function(_0x37b4e8,_0x1d7632){return db[_0xa521('0x2d')]['find']({'where':{'id':_0x37b4e8[_0xa521('0x4a')]['id']}})[_0xa521('0x26')](handleEntityNotFound(_0x1d7632,null))['then'](removeEntity(_0x1d7632,null))[_0xa521('0x43')](handleError(_0x1d7632,null));};
\ No newline at end of file
+var _0xd8c8=['destroy','sendStatus','error','stack','name','send','index','map','rawAttributes','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','offset','order','sort','where','pick','filter','merge','VIRTUAL','options','include','rows','catch','keys','ZendeskField','includeAll','find','create','body','update','params','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','limit','undefined','count','set','reject','save','then'];(function(_0xf66c15,_0xf099e5){var _0x506314=function(_0xea3841){while(--_0xea3841){_0xf66c15['push'](_0xf66c15['shift']());}};_0x506314(++_0xf099e5);}(_0xd8c8,0xba));var _0x8d8c=function(_0x586a10,_0x261c7c){_0x586a10=_0x586a10-0x0;var _0x5d0230=_0xd8c8[_0x586a10];return _0x5d0230;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x8d8c('0x0'));var jsonpatch=require(_0x8d8c('0x1'));var rp=require(_0x8d8c('0x2'));var moment=require(_0x8d8c('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x8d8c('0x4'));var path=require(_0x8d8c('0x5'));var sox=require(_0x8d8c('0x6'));var csv=require(_0x8d8c('0x7'));var ejs=require(_0x8d8c('0x8'));var fs=require('fs');var fs_extra=require(_0x8d8c('0x9'));var _=require(_0x8d8c('0xa'));var squel=require(_0x8d8c('0xb'));var crypto=require('crypto');var jsforce=require(_0x8d8c('0xc'));var deskjs=require(_0x8d8c('0xd'));var toCsv=require(_0x8d8c('0x7'));var querystring=require(_0x8d8c('0xe'));var Papa=require(_0x8d8c('0xf'));var Redis=require(_0x8d8c('0x10'));var authService=require(_0x8d8c('0x11'));var qs=require(_0x8d8c('0x12'));var as=require(_0x8d8c('0x13'));var hardwareService=require(_0x8d8c('0x14'));var logger=require(_0x8d8c('0x15'))(_0x8d8c('0x16'));var utils=require(_0x8d8c('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x8d8c('0x18'));var db=require(_0x8d8c('0x19'))['db'];function respondWithStatusCode(_0x5573ce,_0x31694a){_0x31694a=_0x31694a||0xcc;return function(_0x28368b){if(_0x28368b){return _0x5573ce['sendStatus'](_0x31694a);}return _0x5573ce[_0x8d8c('0x1a')](_0x31694a)[_0x8d8c('0x1b')]();};}function respondWithResult(_0x43e066,_0x29e1cf){_0x29e1cf=_0x29e1cf||0xc8;return function(_0x1c605d){if(_0x1c605d){return _0x43e066[_0x8d8c('0x1a')](_0x29e1cf)[_0x8d8c('0x1c')](_0x1c605d);}};}function respondWithFilteredResult(_0x188472,_0x4819c9){return function(_0xfc22dd){if(_0xfc22dd){var _0x2263c2=typeof _0x4819c9['offset']==='undefined'&&typeof _0x4819c9[_0x8d8c('0x1d')]===_0x8d8c('0x1e');var _0x3ebb17=_0xfc22dd[_0x8d8c('0x1f')];var _0x3f4279=_0x2263c2?0x0:_0x4819c9['offset'];var _0x55a669=_0x2263c2?_0xfc22dd[_0x8d8c('0x1f')]:_0x4819c9['offset']+_0x4819c9[_0x8d8c('0x1d')];var _0x50ae38;if(_0x55a669>=_0x3ebb17){_0x55a669=_0x3ebb17;_0x50ae38=0xc8;}else{_0x50ae38=0xce;}_0x188472[_0x8d8c('0x1a')](_0x50ae38);return _0x188472[_0x8d8c('0x20')]('Content-Range',_0x3f4279+'-'+_0x55a669+'/'+_0x3ebb17)[_0x8d8c('0x1c')](_0xfc22dd);}return null;};}function patchUpdates(_0x16f7d7){return function(_0x10d900){try{jsonpatch['apply'](_0x10d900,_0x16f7d7,!![]);}catch(_0x3a64b9){return BPromise[_0x8d8c('0x21')](_0x3a64b9);}return _0x10d900[_0x8d8c('0x22')]();};}function saveUpdates(_0x56bd8e,_0xaedb9f){return function(_0x22c500){if(_0x22c500){return _0x22c500['update'](_0x56bd8e)[_0x8d8c('0x23')](function(_0x38d96f){return _0x38d96f;});}return null;};}function removeEntity(_0x22865d,_0x2ba9f9){return function(_0x29166d){if(_0x29166d){return _0x29166d[_0x8d8c('0x24')]()[_0x8d8c('0x23')](function(){_0x22865d[_0x8d8c('0x1a')](0xcc)[_0x8d8c('0x1b')]();});}};}function handleEntityNotFound(_0x550e6d,_0xd05ca){return function(_0x310a61){if(!_0x310a61){_0x550e6d[_0x8d8c('0x25')](0x194);}return _0x310a61;};}function handleError(_0x3c7059,_0x89af60){_0x89af60=_0x89af60||0x1f4;return function(_0x69ca7a){logger[_0x8d8c('0x26')](_0x69ca7a[_0x8d8c('0x27')]);if(_0x69ca7a[_0x8d8c('0x28')]){delete _0x69ca7a['name'];}_0x3c7059[_0x8d8c('0x1a')](_0x89af60)[_0x8d8c('0x29')](_0x69ca7a);};}exports[_0x8d8c('0x2a')]=function(_0x4475f3,_0x3c9053){var _0x268b90={},_0x3dd8a9={},_0x2ea898={'count':0x0,'rows':[]};var _0x27efe7=_[_0x8d8c('0x2b')](db['ZendeskField'][_0x8d8c('0x2c')],function(_0x558347){return{'name':_0x558347['fieldName'],'type':_0x558347[_0x8d8c('0x2d')]['key']};});_0x3dd8a9[_0x8d8c('0x2e')]=_[_0x8d8c('0x2b')](_0x27efe7,'name');_0x3dd8a9[_0x8d8c('0x2f')]=_['keys'](_0x4475f3[_0x8d8c('0x2f')]);_0x3dd8a9[_0x8d8c('0x30')]=_[_0x8d8c('0x31')](_0x3dd8a9[_0x8d8c('0x2e')],_0x3dd8a9[_0x8d8c('0x2f')]);_0x268b90[_0x8d8c('0x32')]=_[_0x8d8c('0x31')](_0x3dd8a9['model'],qs[_0x8d8c('0x33')](_0x4475f3[_0x8d8c('0x2f')][_0x8d8c('0x33')]));_0x268b90[_0x8d8c('0x32')]=_0x268b90[_0x8d8c('0x32')][_0x8d8c('0x34')]?_0x268b90['attributes']:_0x3dd8a9[_0x8d8c('0x2e')];if(!_0x4475f3[_0x8d8c('0x2f')][_0x8d8c('0x35')]('nolimit')){_0x268b90[_0x8d8c('0x1d')]=qs['limit'](_0x4475f3['query'][_0x8d8c('0x1d')]);_0x268b90['offset']=qs[_0x8d8c('0x36')](_0x4475f3[_0x8d8c('0x2f')]['offset']);}_0x268b90[_0x8d8c('0x37')]=qs['sort'](_0x4475f3[_0x8d8c('0x2f')][_0x8d8c('0x38')]);_0x268b90[_0x8d8c('0x39')]=qs['filters'](_[_0x8d8c('0x3a')](_0x4475f3[_0x8d8c('0x2f')],_0x3dd8a9[_0x8d8c('0x30')]),_0x27efe7);if(_0x4475f3['query'][_0x8d8c('0x3b')]){_0x268b90[_0x8d8c('0x39')]=_[_0x8d8c('0x3c')](_0x268b90[_0x8d8c('0x39')],{'$or':_[_0x8d8c('0x2b')](_0x27efe7,function(_0x3cca0a){if(_0x3cca0a['type']!==_0x8d8c('0x3d')){var _0x4050dc={};_0x4050dc[_0x3cca0a[_0x8d8c('0x28')]]={'$like':'%'+_0x4475f3['query']['filter']+'%'};return _0x4050dc;}})});}_0x268b90=_[_0x8d8c('0x3c')]({},_0x268b90,_0x4475f3[_0x8d8c('0x3e')]);var _0x3353e2={'where':_0x268b90[_0x8d8c('0x39')]};return db['ZendeskField'][_0x8d8c('0x1f')](_0x3353e2)[_0x8d8c('0x23')](function(_0x452985){_0x2ea898[_0x8d8c('0x1f')]=_0x452985;if(_0x4475f3[_0x8d8c('0x2f')]['includeAll']){_0x268b90[_0x8d8c('0x3f')]=[{'all':!![]}];}return db['ZendeskField']['findAll'](_0x268b90);})[_0x8d8c('0x23')](function(_0x23fd94){_0x2ea898[_0x8d8c('0x40')]=_0x23fd94;return _0x2ea898;})['then'](respondWithFilteredResult(_0x3c9053,_0x268b90))[_0x8d8c('0x41')](handleError(_0x3c9053,null));};exports['show']=function(_0x50d4b,_0x2b5399){var _0x3fc5ac={'raw':!![],'where':{'id':_0x50d4b['params']['id']}},_0x2c7e37={};_0x2c7e37['model']=_[_0x8d8c('0x42')](db[_0x8d8c('0x43')][_0x8d8c('0x2c')]);_0x2c7e37['query']=_[_0x8d8c('0x42')](_0x50d4b[_0x8d8c('0x2f')]);_0x2c7e37['filters']=_[_0x8d8c('0x31')](_0x2c7e37[_0x8d8c('0x2e')],_0x2c7e37['query']);_0x3fc5ac[_0x8d8c('0x32')]=_[_0x8d8c('0x31')](_0x2c7e37[_0x8d8c('0x2e')],qs[_0x8d8c('0x33')](_0x50d4b[_0x8d8c('0x2f')][_0x8d8c('0x33')]));_0x3fc5ac['attributes']=_0x3fc5ac['attributes'][_0x8d8c('0x34')]?_0x3fc5ac['attributes']:_0x2c7e37[_0x8d8c('0x2e')];if(_0x50d4b[_0x8d8c('0x2f')][_0x8d8c('0x44')]){_0x3fc5ac[_0x8d8c('0x3f')]=[{'all':!![]}];}_0x3fc5ac=_[_0x8d8c('0x3c')]({},_0x3fc5ac,_0x50d4b[_0x8d8c('0x3e')]);return db[_0x8d8c('0x43')][_0x8d8c('0x45')](_0x3fc5ac)[_0x8d8c('0x23')](handleEntityNotFound(_0x2b5399,null))['then'](respondWithResult(_0x2b5399,null))[_0x8d8c('0x41')](handleError(_0x2b5399,null));};exports[_0x8d8c('0x46')]=function(_0x33ff0d,_0xba43da){return db[_0x8d8c('0x43')]['create'](_0x33ff0d[_0x8d8c('0x47')],{})[_0x8d8c('0x23')](respondWithResult(_0xba43da,0xc9))[_0x8d8c('0x41')](handleError(_0xba43da,null));};exports[_0x8d8c('0x48')]=function(_0x95965c,_0x25a80d){if(_0x95965c[_0x8d8c('0x47')]['id']){delete _0x95965c[_0x8d8c('0x47')]['id'];}return db[_0x8d8c('0x43')][_0x8d8c('0x45')]({'where':{'id':_0x95965c[_0x8d8c('0x49')]['id']}})[_0x8d8c('0x23')](handleEntityNotFound(_0x25a80d,null))[_0x8d8c('0x23')](saveUpdates(_0x95965c['body'],null))[_0x8d8c('0x23')](respondWithResult(_0x25a80d,null))[_0x8d8c('0x41')](handleError(_0x25a80d,null));};exports[_0x8d8c('0x24')]=function(_0x1e9672,_0x103f85){return db[_0x8d8c('0x43')][_0x8d8c('0x45')]({'where':{'id':_0x1e9672['params']['id']}})[_0x8d8c('0x23')](handleEntityNotFound(_0x103f85,null))[_0x8d8c('0x23')](removeEntity(_0x103f85,null))[_0x8d8c('0x41')](handleError(_0x103f85,null));};
\ No newline at end of file
index 149b9a7..d780bec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb516=['zendesk_unique_index','idField','FieldId','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZendeskField.attributes','exports','define','ZendeskField'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb516,0x145));var _0x6b51=function(_0x22b49a,_0x21c46b){_0x22b49a=_0x22b49a-0x0;var _0xe06af2=_0xb516[_0x22b49a];return _0xe06af2;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x6b51('0x0'))('api');var moment=require(_0x6b51('0x1'));var BPromise=require(_0x6b51('0x2'));var rp=require(_0x6b51('0x3'));var fs=require('fs');var path=require(_0x6b51('0x4'));var rimraf=require(_0x6b51('0x5'));var config=require(_0x6b51('0x6'));var attributes=require(_0x6b51('0x7'));module[_0x6b51('0x8')]=function(_0x5147b9,_0x454778){return _0x5147b9[_0x6b51('0x9')](_0x6b51('0xa'),attributes,{'tableName':'int_zendesk_fields','paranoid':![],'indexes':[{'name':_0x6b51('0xb'),'fields':[_0x6b51('0xc'),_0x6b51('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x65cc=['FieldId','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./intZendeskField.attributes','exports','define','int_zendesk_fields','zendesk_unique_index','idField'];(function(_0x233d47,_0x5c74fe){var _0x1d7eed=function(_0x2e9d9b){while(--_0x2e9d9b){_0x233d47['push'](_0x233d47['shift']());}};_0x1d7eed(++_0x5c74fe);}(_0x65cc,0x189));var _0xc65c=function(_0x37e799,_0x32625f){_0x37e799=_0x37e799-0x0;var _0x436718=_0x65cc[_0x37e799];return _0x436718;};'use strict';var _=require('lodash');var util=require(_0xc65c('0x0'));var logger=require(_0xc65c('0x1'))(_0xc65c('0x2'));var moment=require(_0xc65c('0x3'));var BPromise=require('bluebird');var rp=require(_0xc65c('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc65c('0x5'));var config=require(_0xc65c('0x6'));var attributes=require(_0xc65c('0x7'));module[_0xc65c('0x8')]=function(_0x55e8b7,_0x158243){return _0x55e8b7[_0xc65c('0x9')]('ZendeskField',attributes,{'tableName':_0xc65c('0xa'),'paranoid':![],'indexes':[{'name':_0xc65c('0xb'),'fields':[_0xc65c('0xc'),_0xc65c('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index dbafc78..11c0a8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a27=['randomstring','ioredis','../../mysqldb','../../config/utils','rpc','client','http','request','then','ZendeskField,\x20%s,\x20%s','request\x20sent','debug','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','util','moment','bluebird'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x2a27,0x15d));var _0x72a2=function(_0x5b7260,_0x45d5e2){_0x5b7260=_0x5b7260-0x0;var _0x260c87=_0x2a27[_0x5b7260];return _0x260c87;};'use strict';var _=require('lodash');var util=require(_0x72a2('0x0'));var moment=require(_0x72a2('0x1'));var BPromise=require(_0x72a2('0x2'));var rs=require(_0x72a2('0x3'));var fs=require('fs');var Redis=require(_0x72a2('0x4'));var db=require(_0x72a2('0x5'))['db'];var utils=require(_0x72a2('0x6'));var logger=require('../../config/logger')(_0x72a2('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x72a2('0x8')][_0x72a2('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x37c60e,_0x27938f,_0x1d4c3b){return new BPromise(function(_0xd2803c,_0x26ecbf){return client[_0x72a2('0xa')](_0x37c60e,_0x1d4c3b)[_0x72a2('0xb')](function(_0x1bc0ef){logger['info'](_0x72a2('0xc'),_0x27938f,_0x72a2('0xd'));logger[_0x72a2('0xe')](_0x72a2('0xf'),_0x27938f,_0x72a2('0xd'),JSON[_0x72a2('0x10')](_0x1bc0ef));if(_0x1bc0ef[_0x72a2('0x11')]){if(_0x1bc0ef['error'][_0x72a2('0x12')]===0x1f4){logger[_0x72a2('0x11')](_0x72a2('0xc'),_0x27938f,_0x1bc0ef[_0x72a2('0x11')][_0x72a2('0x13')]);return _0x26ecbf(_0x1bc0ef[_0x72a2('0x11')][_0x72a2('0x13')]);}logger[_0x72a2('0x11')](_0x72a2('0xc'),_0x27938f,_0x1bc0ef['error']['message']);return _0xd2803c(_0x1bc0ef[_0x72a2('0x11')]['message']);}else{logger[_0x72a2('0x14')](_0x72a2('0xc'),_0x27938f,_0x72a2('0xd'));_0xd2803c(_0x1bc0ef[_0x72a2('0x15')][_0x72a2('0x13')]);}})['catch'](function(_0x35db42){logger[_0x72a2('0x11')](_0x72a2('0xc'),_0x27938f,_0x35db42);_0x26ecbf(_0x35db42);});});}
\ No newline at end of file
+var _0x1bea=['../../config/environment','jayson/promise','client','http','then','info','ZendeskField,\x20%s,\x20%s','ZendeskField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0xd62fb8,_0x4422b3){var _0xe26a4=function(_0x54f7fb){while(--_0x54f7fb){_0xd62fb8['push'](_0xd62fb8['shift']());}};_0xe26a4(++_0x4422b3);}(_0x1bea,0xfd));var _0xa1be=function(_0x1f933c,_0x5526f8){_0x1f933c=_0x1f933c-0x0;var _0x11adf8=_0x1bea[_0x1f933c];return _0x11adf8;};'use strict';var _=require(_0xa1be('0x0'));var util=require('util');var moment=require(_0xa1be('0x1'));var BPromise=require(_0xa1be('0x2'));var rs=require(_0xa1be('0x3'));var fs=require('fs');var Redis=require(_0xa1be('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa1be('0x5'));var logger=require(_0xa1be('0x6'))('rpc');var config=require(_0xa1be('0x7'));var jayson=require(_0xa1be('0x8'));var client=jayson[_0xa1be('0x9')][_0xa1be('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x20cb79,_0x225996,_0x13699b){return new BPromise(function(_0x294413,_0x5582a5){return client['request'](_0x20cb79,_0x13699b)[_0xa1be('0xb')](function(_0x5b9a3e){logger[_0xa1be('0xc')](_0xa1be('0xd'),_0x225996,'request\x20sent');logger['debug'](_0xa1be('0xe'),_0x225996,_0xa1be('0xf'),JSON[_0xa1be('0x10')](_0x5b9a3e));if(_0x5b9a3e[_0xa1be('0x11')]){if(_0x5b9a3e[_0xa1be('0x11')][_0xa1be('0x12')]===0x1f4){logger[_0xa1be('0x11')](_0xa1be('0xd'),_0x225996,_0x5b9a3e[_0xa1be('0x11')]['message']);return _0x5582a5(_0x5b9a3e['error'][_0xa1be('0x13')]);}logger[_0xa1be('0x11')](_0xa1be('0xd'),_0x225996,_0x5b9a3e[_0xa1be('0x11')]['message']);return _0x294413(_0x5b9a3e['error'][_0xa1be('0x13')]);}else{logger[_0xa1be('0xc')](_0xa1be('0xd'),_0x225996,_0xa1be('0xf'));_0x294413(_0x5b9a3e['result']['message']);}})['catch'](function(_0x438b19){logger[_0xa1be('0x11')](_0xa1be('0xd'),_0x225996,_0x438b19);_0x5582a5(_0x438b19);});});}
\ No newline at end of file
index ae506f0..46a3bff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd95=['exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','post','create','put','update','delete','/:id'];(function(_0x457cd9,_0x330104){var _0x5c82ce=function(_0x2dde83){while(--_0x2dde83){_0x457cd9['push'](_0x457cd9['shift']());}};_0x5c82ce(++_0x330104);}(_0xdd95,0x79));var _0x5dd9=function(_0x2130f1,_0x4dbcba){_0x2130f1=_0x2130f1-0x0;var _0x3e4b16=_0xdd95[_0x2130f1];return _0x3e4b16;};'use strict';var multer=require(_0x5dd9('0x0'));var util=require(_0x5dd9('0x1'));var path=require('path');var timeout=require(_0x5dd9('0x2'));var express=require(_0x5dd9('0x3'));var router=express[_0x5dd9('0x4')]();var fs_extra=require(_0x5dd9('0x5'));var auth=require(_0x5dd9('0x6'));var interaction=require(_0x5dd9('0x7'));var config=require(_0x5dd9('0x8'));var controller=require(_0x5dd9('0x9'));router[_0x5dd9('0xa')]('/',auth[_0x5dd9('0xb')](),controller[_0x5dd9('0xc')]);router[_0x5dd9('0xa')]('/:id',auth[_0x5dd9('0xb')](),controller[_0x5dd9('0xd')]);router[_0x5dd9('0xa')](_0x5dd9('0xe'),auth[_0x5dd9('0xb')](),controller[_0x5dd9('0xf')]);router['get'](_0x5dd9('0x10'),auth['isAuthenticated'](),controller['getFields']);router[_0x5dd9('0x11')]('/',auth[_0x5dd9('0xb')](),controller[_0x5dd9('0x12')]);router['post'](_0x5dd9('0xe'),auth[_0x5dd9('0xb')](),controller['addConfiguration']);router[_0x5dd9('0x13')]('/:id',auth[_0x5dd9('0xb')](),controller[_0x5dd9('0x14')]);router[_0x5dd9('0x15')](_0x5dd9('0x16'),auth[_0x5dd9('0xb')](),controller['destroy']);module[_0x5dd9('0x17')]=router;
\ No newline at end of file
+var _0xd15f=['get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x58ef45,_0x525bd7){var _0x12006f=function(_0x27a79c){while(--_0x27a79c){_0x58ef45['push'](_0x58ef45['shift']());}};_0x12006f(++_0x525bd7);}(_0xd15f,0x191));var _0xfd15=function(_0x5b740b,_0x381833){_0x5b740b=_0x5b740b-0x0;var _0x6f8f4e=_0xd15f[_0x5b740b];return _0x6f8f4e;};'use strict';var multer=require(_0xfd15('0x0'));var util=require('util');var path=require(_0xfd15('0x1'));var timeout=require(_0xfd15('0x2'));var express=require('express');var router=express[_0xfd15('0x3')]();var fs_extra=require(_0xfd15('0x4'));var auth=require(_0xfd15('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xfd15('0x6'));var controller=require('./intZohoAccount.controller');router[_0xfd15('0x7')]('/',auth[_0xfd15('0x8')](),controller[_0xfd15('0x9')]);router['get'](_0xfd15('0xa'),auth[_0xfd15('0x8')](),controller[_0xfd15('0xb')]);router['get'](_0xfd15('0xc'),auth[_0xfd15('0x8')](),controller[_0xfd15('0xd')]);router[_0xfd15('0x7')](_0xfd15('0xe'),auth[_0xfd15('0x8')](),controller[_0xfd15('0xf')]);router[_0xfd15('0x10')]('/',auth[_0xfd15('0x8')](),controller[_0xfd15('0x11')]);router[_0xfd15('0x10')](_0xfd15('0xc'),auth[_0xfd15('0x8')](),controller[_0xfd15('0x12')]);router[_0xfd15('0x13')](_0xfd15('0xa'),auth[_0xfd15('0x8')](),controller[_0xfd15('0x14')]);router[_0xfd15('0x15')](_0xfd15('0xa'),auth[_0xfd15('0x8')](),controller[_0xfd15('0x16')]);module[_0xfd15('0x17')]=router;
\ No newline at end of file
index a781db2..91e0ec0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb903=['exports','STRING','sequelize'];(function(_0x9cffbe,_0x5bd6d2){var _0x94b478=function(_0x25a8a3){while(--_0x25a8a3){_0x9cffbe['push'](_0x9cffbe['shift']());}};_0x94b478(++_0x5bd6d2);}(_0xb903,0x185));var _0x3b90=function(_0x31ffd8,_0x37e7b0){_0x31ffd8=_0x31ffd8-0x0;var _0x266fa7=_0xb903[_0x31ffd8];return _0x266fa7;};'use strict';var Sequelize=require(_0x3b90('0x0'));module[_0x3b90('0x1')]={'name':{'type':Sequelize[_0x3b90('0x2')]},'description':{'type':Sequelize[_0x3b90('0x2')]},'host':{'type':Sequelize['STRING']},'zone':{'type':Sequelize[_0x3b90('0x2')]},'clientId':{'type':Sequelize[_0x3b90('0x2')]},'clientSecret':{'type':Sequelize[_0x3b90('0x2')]},'serverUrl':{'type':Sequelize[_0x3b90('0x2')],'allowNull':![]},'code':{'type':Sequelize[_0x3b90('0x2')]},'refreshToken':{'type':Sequelize[_0x3b90('0x2')]}};
\ No newline at end of file
+var _0xedd9=['exports','STRING'];(function(_0x595c98,_0x1e3e7f){var _0x265612=function(_0x838393){while(--_0x838393){_0x595c98['push'](_0x595c98['shift']());}};_0x265612(++_0x1e3e7f);}(_0xedd9,0xfc));var _0x9edd=function(_0x5ad443,_0x1d5cc4){_0x5ad443=_0x5ad443-0x0;var _0x279bc4=_0xedd9[_0x5ad443];return _0x279bc4;};'use strict';var Sequelize=require('sequelize');module[_0x9edd('0x0')]={'name':{'type':Sequelize[_0x9edd('0x1')]},'description':{'type':Sequelize[_0x9edd('0x1')]},'host':{'type':Sequelize[_0x9edd('0x1')]},'zone':{'type':Sequelize[_0x9edd('0x1')]},'clientId':{'type':Sequelize[_0x9edd('0x1')]},'clientSecret':{'type':Sequelize[_0x9edd('0x1')]},'serverUrl':{'type':Sequelize[_0x9edd('0x1')],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0x9edd('0x1')]}};
\ No newline at end of file
index 3770510..a12acca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x265e=['catch','show','include','options','find','create','body','getConfigurations','params','ZohoConfiguration','addConfiguration','getSubjects','channel','Descriptions','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','findOne','host','serverUrl','code','com','slice','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','Calls','response','error','message','Owner','Description','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','api_name','system_mandatory','push','data_type','picklist','pick_list_values','test','statusCode','stringify','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../mysqldb','sendStatus','status','offset','undefined','limit','count','json','apply','reject','update','then','destroy','end','name','send','index','map','rawAttributes','fieldName','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','type','VIRTUAL','ZohoAccount','includeAll','findAll','rows'];(function(_0x5e729c,_0x5293ab){var _0x8468ef=function(_0x554d04){while(--_0x554d04){_0x5e729c['push'](_0x5e729c['shift']());}};_0x8468ef(++_0x5293ab);}(_0x265e,0x1bb));var _0xe265=function(_0x3aafee,_0x40490f){_0x3aafee=_0x3aafee-0x0;var _0x133dd9=_0x265e[_0x3aafee];return _0x133dd9;};'use strict';var emlformat=require(_0xe265('0x0'));var rimraf=require(_0xe265('0x1'));var zipdir=require(_0xe265('0x2'));var jsonpatch=require(_0xe265('0x3'));var rp=require(_0xe265('0x4'));var moment=require(_0xe265('0x5'));var BPromise=require(_0xe265('0x6'));var Mustache=require(_0xe265('0x7'));var util=require(_0xe265('0x8'));var path=require(_0xe265('0x9'));var sox=require(_0xe265('0xa'));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(_0xe265('0xb'));var crypto=require(_0xe265('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xe265('0xd'));var toCsv=require('to-csv');var querystring=require(_0xe265('0xe'));var Papa=require(_0xe265('0xf'));var Redis=require(_0xe265('0x10'));var authService=require(_0xe265('0x11'));var qs=require(_0xe265('0x12'));var as=require(_0xe265('0x13'));var hardwareService=require(_0xe265('0x14'));var logger=require('../../config/logger')(_0xe265('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xe265('0x16'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0xfeab18,_0x2d33dd){_0x2d33dd=_0x2d33dd||0xcc;return function(_0x29effe){if(_0x29effe){return _0xfeab18[_0xe265('0x17')](_0x2d33dd);}return _0xfeab18[_0xe265('0x18')](_0x2d33dd)['end']();};}function respondWithResult(_0x284548,_0x18a411){_0x18a411=_0x18a411||0xc8;return function(_0x286c0a){if(_0x286c0a){return _0x284548['status'](_0x18a411)['json'](_0x286c0a);}};}function respondWithFilteredResult(_0x5cff1c,_0x5321f6){return function(_0x5a30b9){if(_0x5a30b9){var _0x5c403c=typeof _0x5321f6[_0xe265('0x19')]===_0xe265('0x1a')&&typeof _0x5321f6[_0xe265('0x1b')]==='undefined';var _0x5ee96c=_0x5a30b9['count'];var _0x46f38e=_0x5c403c?0x0:_0x5321f6[_0xe265('0x19')];var _0x58e20a=_0x5c403c?_0x5a30b9[_0xe265('0x1c')]:_0x5321f6[_0xe265('0x19')]+_0x5321f6[_0xe265('0x1b')];var _0x47c9e9;if(_0x58e20a>=_0x5ee96c){_0x58e20a=_0x5ee96c;_0x47c9e9=0xc8;}else{_0x47c9e9=0xce;}_0x5cff1c[_0xe265('0x18')](_0x47c9e9);return _0x5cff1c['set']('Content-Range',_0x46f38e+'-'+_0x58e20a+'/'+_0x5ee96c)[_0xe265('0x1d')](_0x5a30b9);}return null;};}function patchUpdates(_0x3ab49c){return function(_0x4abf7c){try{jsonpatch[_0xe265('0x1e')](_0x4abf7c,_0x3ab49c,!![]);}catch(_0x44e7fb){return BPromise[_0xe265('0x1f')](_0x44e7fb);}return _0x4abf7c['save']();};}function saveUpdates(_0x41c279,_0x4873b0){return function(_0x4fb802){if(_0x4fb802){return _0x4fb802[_0xe265('0x20')](_0x41c279)[_0xe265('0x21')](function(_0x5f314a){return _0x5f314a;});}return null;};}function removeEntity(_0x27e934,_0x50d719){return function(_0x58021c){if(_0x58021c){return _0x58021c[_0xe265('0x22')]()[_0xe265('0x21')](function(){_0x27e934[_0xe265('0x18')](0xcc)[_0xe265('0x23')]();});}};}function handleEntityNotFound(_0x216d24,_0xc6163b){return function(_0x4e6995){if(!_0x4e6995){_0x216d24[_0xe265('0x17')](0x194);}return _0x4e6995;};}function handleError(_0x49c0f6,_0x4afab2){_0x4afab2=_0x4afab2||0x1f4;return function(_0x138738){logger['error'](_0x138738['stack']);if(_0x138738[_0xe265('0x24')]){delete _0x138738['name'];}_0x49c0f6[_0xe265('0x18')](_0x4afab2)[_0xe265('0x25')](_0x138738);};}exports[_0xe265('0x26')]=function(_0x55ebf8,_0x4828c1){var _0x387b54={},_0xaae332={},_0x2e7058={'count':0x0,'rows':[]};var _0x4099ab=_[_0xe265('0x27')](db['ZohoAccount'][_0xe265('0x28')],function(_0x34e781){return{'name':_0x34e781[_0xe265('0x29')],'type':_0x34e781['type'][_0xe265('0x2a')]};});_0xaae332['model']=_[_0xe265('0x27')](_0x4099ab,_0xe265('0x24'));_0xaae332[_0xe265('0x2b')]=_[_0xe265('0x2c')](_0x55ebf8[_0xe265('0x2b')]);_0xaae332['filters']=_[_0xe265('0x2d')](_0xaae332[_0xe265('0x2e')],_0xaae332[_0xe265('0x2b')]);_0x387b54[_0xe265('0x2f')]=_['intersection'](_0xaae332['model'],qs['fields'](_0x55ebf8['query'][_0xe265('0x30')]));_0x387b54[_0xe265('0x2f')]=_0x387b54[_0xe265('0x2f')][_0xe265('0x31')]?_0x387b54['attributes']:_0xaae332[_0xe265('0x2e')];if(!_0x55ebf8[_0xe265('0x2b')][_0xe265('0x32')](_0xe265('0x33'))){_0x387b54[_0xe265('0x1b')]=qs['limit'](_0x55ebf8[_0xe265('0x2b')][_0xe265('0x1b')]);_0x387b54[_0xe265('0x19')]=qs['offset'](_0x55ebf8[_0xe265('0x2b')][_0xe265('0x19')]);}_0x387b54[_0xe265('0x34')]=qs[_0xe265('0x35')](_0x55ebf8['query'][_0xe265('0x35')]);_0x387b54['where']=qs[_0xe265('0x36')](_[_0xe265('0x37')](_0x55ebf8[_0xe265('0x2b')],_0xaae332['filters']),_0x4099ab);if(_0x55ebf8[_0xe265('0x2b')][_0xe265('0x38')]){_0x387b54[_0xe265('0x39')]=_[_0xe265('0x3a')](_0x387b54[_0xe265('0x39')],{'$or':_[_0xe265('0x27')](_0x4099ab,function(_0x47fa26){if(_0x47fa26[_0xe265('0x3b')]!==_0xe265('0x3c')){var _0x4b07ec={};_0x4b07ec[_0x47fa26[_0xe265('0x24')]]={'$like':'%'+_0x55ebf8[_0xe265('0x2b')]['filter']+'%'};return _0x4b07ec;}})});}_0x387b54=_[_0xe265('0x3a')]({},_0x387b54,_0x55ebf8['options']);var _0x408b84={'where':_0x387b54[_0xe265('0x39')]};return db[_0xe265('0x3d')][_0xe265('0x1c')](_0x408b84)['then'](function(_0x1190b7){_0x2e7058[_0xe265('0x1c')]=_0x1190b7;if(_0x55ebf8[_0xe265('0x2b')][_0xe265('0x3e')]){_0x387b54['include']=[{'all':!![]}];}return db['ZohoAccount'][_0xe265('0x3f')](_0x387b54);})[_0xe265('0x21')](function(_0x587edd){_0x2e7058[_0xe265('0x40')]=_0x587edd;return _0x2e7058;})[_0xe265('0x21')](respondWithFilteredResult(_0x4828c1,_0x387b54))[_0xe265('0x41')](handleError(_0x4828c1,null));};exports[_0xe265('0x42')]=function(_0x2f7a74,_0x59b381){var _0x106c96={'raw':![],'where':{'id':_0x2f7a74['params']['id']}},_0x58559f={};_0x58559f[_0xe265('0x2e')]=_[_0xe265('0x2c')](db['ZohoAccount'][_0xe265('0x28')]);_0x58559f['query']=_[_0xe265('0x2c')](_0x2f7a74[_0xe265('0x2b')]);_0x58559f[_0xe265('0x36')]=_[_0xe265('0x2d')](_0x58559f[_0xe265('0x2e')],_0x58559f[_0xe265('0x2b')]);_0x106c96[_0xe265('0x2f')]=_['intersection'](_0x58559f[_0xe265('0x2e')],qs[_0xe265('0x30')](_0x2f7a74[_0xe265('0x2b')][_0xe265('0x30')]));_0x106c96[_0xe265('0x2f')]=_0x106c96[_0xe265('0x2f')][_0xe265('0x31')]?_0x106c96[_0xe265('0x2f')]:_0x58559f[_0xe265('0x2e')];if(_0x2f7a74[_0xe265('0x2b')]['includeAll']){_0x106c96[_0xe265('0x43')]=[{'all':!![]}];}_0x106c96=_['merge']({},_0x106c96,_0x2f7a74[_0xe265('0x44')]);return db['ZohoAccount'][_0xe265('0x45')](_0x106c96)[_0xe265('0x21')](handleEntityNotFound(_0x59b381,null))[_0xe265('0x21')](respondWithResult(_0x59b381,null))[_0xe265('0x41')](handleError(_0x59b381,null));};exports[_0xe265('0x46')]=function(_0x23d65f,_0xcf6ad0){return db[_0xe265('0x3d')][_0xe265('0x46')](_0x23d65f[_0xe265('0x47')],{})['then'](respondWithResult(_0xcf6ad0,0xc9))[_0xe265('0x41')](handleError(_0xcf6ad0,null));};exports[_0xe265('0x20')]=function(_0x83e980,_0x963cca){if(_0x83e980[_0xe265('0x47')]['id']){delete _0x83e980[_0xe265('0x47')]['id'];}return db['ZohoAccount'][_0xe265('0x45')]({'where':{'id':_0x83e980['params']['id']}})[_0xe265('0x21')](handleEntityNotFound(_0x963cca,null))[_0xe265('0x21')](saveUpdates(_0x83e980[_0xe265('0x47')],null))[_0xe265('0x21')](respondWithResult(_0x963cca,null))['catch'](handleError(_0x963cca,null));};exports[_0xe265('0x22')]=function(_0x12f589,_0x33efe4){return db[_0xe265('0x3d')]['find']({'where':{'id':_0x12f589['params']['id']}})[_0xe265('0x21')](handleEntityNotFound(_0x33efe4,null))[_0xe265('0x21')](removeEntity(_0x33efe4,null))[_0xe265('0x41')](handleError(_0x33efe4,null));};exports[_0xe265('0x48')]=function(_0x1ffd31,_0x4bf75d,_0x1c5029){var _0x18e953={};var _0x559695={};var _0x5d4f76;var _0x4eb992;return db['ZohoAccount']['findOne']({'where':{'id':_0x1ffd31[_0xe265('0x49')]['id']}})[_0xe265('0x21')](handleEntityNotFound(_0x4bf75d,null))[_0xe265('0x21')](function(_0x5d18a1){if(_0x5d18a1){_0x5d4f76=_0x5d18a1;_0x559695[_0xe265('0x2e')]=_[_0xe265('0x2c')](db[_0xe265('0x4a')][_0xe265('0x28')]);_0x559695['query']=_[_0xe265('0x2c')](_0x1ffd31[_0xe265('0x2b')]);_0x559695[_0xe265('0x36')]=_[_0xe265('0x2d')](_0x559695[_0xe265('0x2e')],_0x559695[_0xe265('0x2b')]);_0x18e953[_0xe265('0x2f')]=_[_0xe265('0x2d')](_0x559695['model'],qs[_0xe265('0x30')](_0x1ffd31[_0xe265('0x2b')][_0xe265('0x30')]));_0x18e953['attributes']=_0x18e953[_0xe265('0x2f')][_0xe265('0x31')]?_0x18e953[_0xe265('0x2f')]:_0x559695[_0xe265('0x2e')];_0x18e953[_0xe265('0x34')]=qs[_0xe265('0x35')](_0x1ffd31['query'][_0xe265('0x35')]);_0x18e953[_0xe265('0x39')]=qs[_0xe265('0x36')](_[_0xe265('0x37')](_0x1ffd31[_0xe265('0x2b')],_0x559695[_0xe265('0x36')]));if(_0x1ffd31[_0xe265('0x2b')][_0xe265('0x38')]){_0x18e953['where']=_[_0xe265('0x3a')](_0x18e953[_0xe265('0x39')],{'$or':_[_0xe265('0x27')](_0x18e953[_0xe265('0x2f')],function(_0x1ffaf8){var _0x543782={};_0x543782[_0x1ffaf8]={'$like':'%'+_0x1ffd31[_0xe265('0x2b')][_0xe265('0x38')]+'%'};return _0x543782;})});}_0x18e953=_['merge']({},_0x18e953,_0x1ffd31[_0xe265('0x44')]);return _0x5d4f76['getConfigurations'](_0x18e953);}})[_0xe265('0x21')](function(_0xfc425d){if(_0xfc425d){_0x4eb992=_0xfc425d['length'];if(!_0x1ffd31[_0xe265('0x2b')][_0xe265('0x32')]('nolimit')){_0x18e953[_0xe265('0x1b')]=qs[_0xe265('0x1b')](_0x1ffd31[_0xe265('0x2b')][_0xe265('0x1b')]);_0x18e953[_0xe265('0x19')]=qs[_0xe265('0x19')](_0x1ffd31[_0xe265('0x2b')][_0xe265('0x19')]);}return _0x5d4f76[_0xe265('0x48')](_0x18e953);}})[_0xe265('0x21')](function(_0x501773){if(_0x501773){return _0x501773?{'count':_0x4eb992,'rows':_0x501773}:null;}})[_0xe265('0x21')](respondWithResult(_0x4bf75d,null))[_0xe265('0x41')](handleError(_0x4bf75d,null));};exports[_0xe265('0x4b')]=function(_0xbdf40d,_0x579c9c,_0x4c3e63){if(_0xbdf40d[_0xe265('0x47')]['id']){delete _0xbdf40d[_0xe265('0x47')]['id'];}return db[_0xe265('0x3d')]['findOne']({'where':{'id':_0xbdf40d['params']['id']}})['then'](handleEntityNotFound(_0x579c9c,null))[_0xe265('0x21')](function(_0x730771){if(_0x730771){_0xbdf40d['body']['AccountId']=_0x730771['id'];_0xbdf40d[_0xe265('0x47')]['Subjects']=integrations[_0xe265('0x4c')](_0xbdf40d[_0xe265('0x47')][_0xe265('0x4d')],_0xbdf40d[_0xe265('0x47')]['type']);_0xbdf40d[_0xe265('0x47')][_0xe265('0x4e')]=integrations['getDescriptions'](_0xbdf40d[_0xe265('0x47')][_0xe265('0x4d')],_0xbdf40d[_0xe265('0x47')][_0xe265('0x3b')]);return db['ZohoConfiguration'][_0xe265('0x46')](_0xbdf40d[_0xe265('0x47')],{'include':[{'model':db[_0xe265('0x4f')],'as':'Subjects'},{'model':db[_0xe265('0x4f')],'as':'Descriptions'}]});}return null;})[_0xe265('0x21')](respondWithResult(_0x579c9c,null))[_0xe265('0x41')](handleError(_0x579c9c,null));};function getAccessToken(_0x38e431){return new Promise(function(_0x3ec192,_0x5cfc7b){var _0xe24956;switch(_0x38e431[_0xe265('0x50')]){case'US':_0xe24956=_0xe265('0x51');break;case'AU':_0xe24956=_0xe265('0x52');break;case'EU':_0xe24956=_0xe265('0x53');break;case'IN':_0xe24956=_0xe265('0x54');break;case'CN':_0xe24956=_0xe265('0x55');break;default:_0xe24956=_0xe265('0x53');break;}var _0x78bd53={'method':_0xe265('0x56'),'uri':_0xe24956+_0xe265('0x57'),'qs':{'refresh_token':_0x38e431[_0xe265('0x58')],'client_id':_0x38e431[_0xe265('0x59')],'client_secret':_0x38e431[_0xe265('0x5a')],'grant_type':_0xe265('0x5b')},'json':!![]};return rp(_0x78bd53)[_0xe265('0x21')](function(_0x48fb3d){if(_0x48fb3d[_0xe265('0x5c')]){_0x3ec192(_0x48fb3d[_0xe265('0x5c')]);}else{_0x5cfc7b(_0xe265('0x5d'));}})[_0xe265('0x41')](function(_0x2480d4){_0x5cfc7b(_0x2480d4);});});}exports[_0xe265('0x5e')]=function(_0x4db958,_0x531fb2,_0x23917e){var _0xd4d9fa,_0x22041f,_0x1a1efb,_0x210e7b,_0x1b9e30;return db['ZohoAccount'][_0xe265('0x5f')]({'where':{'id':_0x4db958[_0xe265('0x49')]['id']},'attributes':['id',_0xe265('0x60'),'zone',_0xe265('0x59'),_0xe265('0x5a'),_0xe265('0x61'),_0xe265('0x62'),_0xe265('0x58')]})['then'](handleEntityNotFound(_0x531fb2,null))[_0xe265('0x21')](function(_0x243e9d){_0x1b9e30=_0x243e9d;_0xd4d9fa=_0x1b9e30[_0xe265('0x60')];_0x22041f=_0xd4d9fa==='zoho.eu'?'eu':_0xe265('0x63');_0x1a1efb=_0x1b9e30[_0xe265('0x61')];var _0x4ae07c=_0x1a1efb[_0xe265('0x64')](-0x1);if(_0x4ae07c==='/'||_0x4ae07c==='\x5c'||_0x4ae07c===':'){_0x1a1efb=_0x1a1efb[_0xe265('0x65')](0x0,_0x1a1efb[_0xe265('0x66')](_0x4ae07c));}if(!_0x1b9e30['refreshToken']){throw new Error(_0xe265('0x67'));}return getAccessToken(_0x1b9e30);})[_0xe265('0x21')](function(_0x4cf96b){if(_0x4cf96b){return rp({'method':_0xe265('0x68'),'uri':util[_0xe265('0x69')]('https://www.zohoapis.%s/crm/v2/settings/fields',_0x22041f),'qs':{'module':_0xe265('0x6a')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x4cf96b},'json':!![]});}})[_0xe265('0x21')](function(_0x492638){if(_0x492638){if(_0x492638[_0xe265('0x6b')]&&_0x492638[_0xe265('0x6b')][_0xe265('0x6c')]){throw new Error(_0x492638['response'][_0xe265('0x6c')][_0xe265('0x6d')]);}var _0x3ec92c=[];var _0x12a2a4=[];var _0x4ba6c8=[_0xe265('0x6e'),'Subject',_0xe265('0x6f'),_0xe265('0x70'),_0xe265('0x71'),_0xe265('0x72'),_0xe265('0x73'),_0xe265('0x74')];_0x12a2a4=_[_0xe265('0x75')](_0x492638[_0xe265('0x30')],function(_0x2a1c37){return _0x4ba6c8['includes'](_0x2a1c37[_0xe265('0x76')]);});for(var _0x4ce831=0x0;_0x4ce831<_0x12a2a4['length'];_0x4ce831++){if(_0x12a2a4[_0x4ce831][_0xe265('0x77')]===![]){_0x3ec92c[_0xe265('0x78')]({'id':_0x12a2a4[_0x4ce831]['id'],'name':_0x12a2a4[_0x4ce831]['display_label'],'custom':_0x12a2a4[_0x4ce831]['custom_field'],'options':_0x12a2a4[_0x4ce831][_0xe265('0x79')]===_0xe265('0x7a')&&_0x12a2a4[_0x4ce831][_0xe265('0x7b')][_0xe265('0x31')]>-0x1?_[_0xe265('0x27')](_0x12a2a4[_0x4ce831][_0xe265('0x7b')],function(_0x51f59e){return{'name':_0x51f59e,'value':_0x51f59e};}):[]});}}return{'count':_0x3ec92c[_0xe265('0x31')],'rows':_0x3ec92c};}else{return{'count':0x0,'rows':[]};}})[_0xe265('0x21')](respondWithResult(_0x531fb2,null))[_0xe265('0x41')](function(_0x506ff4){var _0x19281b=_0x4db958[_0xe265('0x2b')][_0xe265('0x7c')]?0x1f4:_0x506ff4[_0xe265('0x7d')]||0x1f4;logger[_0xe265('0x6c')]('getFields,\x20%s,\x20%s,\x20%s',_0xe265('0x5e'),_0x19281b,JSON[_0xe265('0x7e')](_0x506ff4));delete _0x506ff4[_0xe265('0x24')];if(_0x19281b===0x191){_0x19281b=0x190;}_0x531fb2['status'](_0x19281b)[_0xe265('0x25')](_0x4db958[_0xe265('0x2b')][_0xe265('0x7c')]?{'message':'Wrong\x20credentials','statusCode':_0x506ff4[_0xe265('0x7d')]}:_0x506ff4);});};
\ No newline at end of file
+var _0x9897=['request-promise','moment','bluebird','mustache','path','sox','to-csv','lodash','squel','crypto','desk.js','querystring','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','error','name','send','index','map','ZohoAccount','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','type','VIRTUAL','include','findAll','rows','catch','show','includeAll','options','find','create','body','params','findOne','order','getConfigurations','addConfiguration','AccountId','getSubjects','channel','Descriptions','getDescriptions','ZohoField','Subjects','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','access_token','getFields','host','serverUrl','code','com','slice','substring','lastIndexOf','GET','https://www.zohoapis.%s/crm/v2/settings/fields','Zoho-oauthtoken\x20','response','message','Owner','Subject','Call_Duration','Call_Type','remove','api_name','system_mandatory','display_label','custom_field','data_type','picklist','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','zip-dir','fast-json-patch'];(function(_0x3f4e8f,_0x5eeef1){var _0x47cf72=function(_0x358788){while(--_0x358788){_0x3f4e8f['push'](_0x3f4e8f['shift']());}};_0x47cf72(++_0x5eeef1);}(_0x9897,0x172));var _0x7989=function(_0xaa0309,_0x1c8008){_0xaa0309=_0xaa0309-0x0;var _0x5de7ce=_0x9897[_0xaa0309];return _0x5de7ce;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x7989('0x0'));var jsonpatch=require(_0x7989('0x1'));var rp=require(_0x7989('0x2'));var moment=require(_0x7989('0x3'));var BPromise=require(_0x7989('0x4'));var Mustache=require(_0x7989('0x5'));var util=require('util');var path=require(_0x7989('0x6'));var sox=require(_0x7989('0x7'));var csv=require(_0x7989('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7989('0x9'));var squel=require(_0x7989('0xa'));var crypto=require(_0x7989('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x7989('0xc'));var toCsv=require(_0x7989('0x8'));var querystring=require(_0x7989('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x7989('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7989('0xf'));var logger=require(_0x7989('0x10'))('api');var utils=require(_0x7989('0x11'));var config=require(_0x7989('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x7989('0x13'))['db'];var integrations=require(_0x7989('0x14'));function respondWithStatusCode(_0x5dcaf2,_0x7cb0b9){_0x7cb0b9=_0x7cb0b9||0xcc;return function(_0x494847){if(_0x494847){return _0x5dcaf2[_0x7989('0x15')](_0x7cb0b9);}return _0x5dcaf2[_0x7989('0x16')](_0x7cb0b9)['end']();};}function respondWithResult(_0x21c111,_0x533068){_0x533068=_0x533068||0xc8;return function(_0x5ccfec){if(_0x5ccfec){return _0x21c111['status'](_0x533068)[_0x7989('0x17')](_0x5ccfec);}};}function respondWithFilteredResult(_0x540d9e,_0x40b3e4){return function(_0x3dd453){if(_0x3dd453){var _0x32da64=typeof _0x40b3e4[_0x7989('0x18')]===_0x7989('0x19')&&typeof _0x40b3e4['limit']===_0x7989('0x19');var _0x4a1ef6=_0x3dd453[_0x7989('0x1a')];var _0x298d9c=_0x32da64?0x0:_0x40b3e4[_0x7989('0x18')];var _0x378e04=_0x32da64?_0x3dd453['count']:_0x40b3e4[_0x7989('0x18')]+_0x40b3e4[_0x7989('0x1b')];var _0x7ee46b;if(_0x378e04>=_0x4a1ef6){_0x378e04=_0x4a1ef6;_0x7ee46b=0xc8;}else{_0x7ee46b=0xce;}_0x540d9e[_0x7989('0x16')](_0x7ee46b);return _0x540d9e[_0x7989('0x1c')](_0x7989('0x1d'),_0x298d9c+'-'+_0x378e04+'/'+_0x4a1ef6)[_0x7989('0x17')](_0x3dd453);}return null;};}function patchUpdates(_0x14ceaa){return function(_0x36e610){try{jsonpatch[_0x7989('0x1e')](_0x36e610,_0x14ceaa,!![]);}catch(_0x849901){return BPromise[_0x7989('0x1f')](_0x849901);}return _0x36e610[_0x7989('0x20')]();};}function saveUpdates(_0x1b212e,_0x1755ab){return function(_0xcabf25){if(_0xcabf25){return _0xcabf25[_0x7989('0x21')](_0x1b212e)[_0x7989('0x22')](function(_0x164582){return _0x164582;});}return null;};}function removeEntity(_0x70e8b1,_0x543ac4){return function(_0x145054){if(_0x145054){return _0x145054[_0x7989('0x23')]()[_0x7989('0x22')](function(){_0x70e8b1[_0x7989('0x16')](0xcc)[_0x7989('0x24')]();});}};}function handleEntityNotFound(_0x39bdcc,_0x1803ea){return function(_0x592bb6){if(!_0x592bb6){_0x39bdcc['sendStatus'](0x194);}return _0x592bb6;};}function handleError(_0x3a32e1,_0x507208){_0x507208=_0x507208||0x1f4;return function(_0x1df694){logger[_0x7989('0x25')](_0x1df694['stack']);if(_0x1df694[_0x7989('0x26')]){delete _0x1df694[_0x7989('0x26')];}_0x3a32e1[_0x7989('0x16')](_0x507208)[_0x7989('0x27')](_0x1df694);};}exports[_0x7989('0x28')]=function(_0x35ee19,_0x129d2f){var _0x371827={},_0x2b9b8d={},_0x38b8dd={'count':0x0,'rows':[]};var _0x5ccbc0=_[_0x7989('0x29')](db[_0x7989('0x2a')][_0x7989('0x2b')],function(_0x25b524){return{'name':_0x25b524[_0x7989('0x2c')],'type':_0x25b524['type'][_0x7989('0x2d')]};});_0x2b9b8d[_0x7989('0x2e')]=_[_0x7989('0x29')](_0x5ccbc0,'name');_0x2b9b8d[_0x7989('0x2f')]=_[_0x7989('0x30')](_0x35ee19[_0x7989('0x2f')]);_0x2b9b8d[_0x7989('0x31')]=_['intersection'](_0x2b9b8d[_0x7989('0x2e')],_0x2b9b8d[_0x7989('0x2f')]);_0x371827[_0x7989('0x32')]=_[_0x7989('0x33')](_0x2b9b8d[_0x7989('0x2e')],qs[_0x7989('0x34')](_0x35ee19[_0x7989('0x2f')]['fields']));_0x371827[_0x7989('0x32')]=_0x371827['attributes'][_0x7989('0x35')]?_0x371827['attributes']:_0x2b9b8d[_0x7989('0x2e')];if(!_0x35ee19[_0x7989('0x2f')][_0x7989('0x36')](_0x7989('0x37'))){_0x371827['limit']=qs[_0x7989('0x1b')](_0x35ee19[_0x7989('0x2f')][_0x7989('0x1b')]);_0x371827[_0x7989('0x18')]=qs[_0x7989('0x18')](_0x35ee19[_0x7989('0x2f')]['offset']);}_0x371827['order']=qs['sort'](_0x35ee19['query'][_0x7989('0x38')]);_0x371827['where']=qs[_0x7989('0x31')](_[_0x7989('0x39')](_0x35ee19['query'],_0x2b9b8d[_0x7989('0x31')]),_0x5ccbc0);if(_0x35ee19['query'][_0x7989('0x3a')]){_0x371827[_0x7989('0x3b')]=_[_0x7989('0x3c')](_0x371827[_0x7989('0x3b')],{'$or':_[_0x7989('0x29')](_0x5ccbc0,function(_0xbe752b){if(_0xbe752b[_0x7989('0x3d')]!==_0x7989('0x3e')){var _0x30539e={};_0x30539e[_0xbe752b['name']]={'$like':'%'+_0x35ee19['query'][_0x7989('0x3a')]+'%'};return _0x30539e;}})});}_0x371827=_[_0x7989('0x3c')]({},_0x371827,_0x35ee19['options']);var _0x13b53d={'where':_0x371827[_0x7989('0x3b')]};return db[_0x7989('0x2a')]['count'](_0x13b53d)['then'](function(_0x5d1a23){_0x38b8dd[_0x7989('0x1a')]=_0x5d1a23;if(_0x35ee19[_0x7989('0x2f')]['includeAll']){_0x371827[_0x7989('0x3f')]=[{'all':!![]}];}return db[_0x7989('0x2a')][_0x7989('0x40')](_0x371827);})[_0x7989('0x22')](function(_0x482023){_0x38b8dd[_0x7989('0x41')]=_0x482023;return _0x38b8dd;})[_0x7989('0x22')](respondWithFilteredResult(_0x129d2f,_0x371827))[_0x7989('0x42')](handleError(_0x129d2f,null));};exports[_0x7989('0x43')]=function(_0xd3950f,_0x10cf65){var _0x5ea5f4={'raw':![],'where':{'id':_0xd3950f['params']['id']}},_0x5763de={};_0x5763de[_0x7989('0x2e')]=_[_0x7989('0x30')](db['ZohoAccount']['rawAttributes']);_0x5763de['query']=_[_0x7989('0x30')](_0xd3950f[_0x7989('0x2f')]);_0x5763de[_0x7989('0x31')]=_[_0x7989('0x33')](_0x5763de[_0x7989('0x2e')],_0x5763de[_0x7989('0x2f')]);_0x5ea5f4[_0x7989('0x32')]=_[_0x7989('0x33')](_0x5763de[_0x7989('0x2e')],qs[_0x7989('0x34')](_0xd3950f[_0x7989('0x2f')][_0x7989('0x34')]));_0x5ea5f4[_0x7989('0x32')]=_0x5ea5f4[_0x7989('0x32')][_0x7989('0x35')]?_0x5ea5f4[_0x7989('0x32')]:_0x5763de[_0x7989('0x2e')];if(_0xd3950f['query'][_0x7989('0x44')]){_0x5ea5f4[_0x7989('0x3f')]=[{'all':!![]}];}_0x5ea5f4=_[_0x7989('0x3c')]({},_0x5ea5f4,_0xd3950f[_0x7989('0x45')]);return db['ZohoAccount'][_0x7989('0x46')](_0x5ea5f4)[_0x7989('0x22')](handleEntityNotFound(_0x10cf65,null))['then'](respondWithResult(_0x10cf65,null))[_0x7989('0x42')](handleError(_0x10cf65,null));};exports[_0x7989('0x47')]=function(_0x214612,_0x21440c){return db[_0x7989('0x2a')][_0x7989('0x47')](_0x214612[_0x7989('0x48')],{})['then'](respondWithResult(_0x21440c,0xc9))['catch'](handleError(_0x21440c,null));};exports['update']=function(_0x4b31f6,_0x4c2ba1){if(_0x4b31f6['body']['id']){delete _0x4b31f6[_0x7989('0x48')]['id'];}return db[_0x7989('0x2a')][_0x7989('0x46')]({'where':{'id':_0x4b31f6[_0x7989('0x49')]['id']}})[_0x7989('0x22')](handleEntityNotFound(_0x4c2ba1,null))[_0x7989('0x22')](saveUpdates(_0x4b31f6[_0x7989('0x48')],null))[_0x7989('0x22')](respondWithResult(_0x4c2ba1,null))[_0x7989('0x42')](handleError(_0x4c2ba1,null));};exports[_0x7989('0x23')]=function(_0xf6cb2a,_0x51ed25){return db[_0x7989('0x2a')][_0x7989('0x46')]({'where':{'id':_0xf6cb2a[_0x7989('0x49')]['id']}})[_0x7989('0x22')](handleEntityNotFound(_0x51ed25,null))['then'](removeEntity(_0x51ed25,null))[_0x7989('0x42')](handleError(_0x51ed25,null));};exports['getConfigurations']=function(_0x74e1e7,_0x2d0f17,_0x441d30){var _0x25bd8d={};var _0x4578df={};var _0x1d96d2;var _0x3dab04;return db[_0x7989('0x2a')][_0x7989('0x4a')]({'where':{'id':_0x74e1e7['params']['id']}})[_0x7989('0x22')](handleEntityNotFound(_0x2d0f17,null))[_0x7989('0x22')](function(_0x472db1){if(_0x472db1){_0x1d96d2=_0x472db1;_0x4578df[_0x7989('0x2e')]=_[_0x7989('0x30')](db['ZohoConfiguration'][_0x7989('0x2b')]);_0x4578df[_0x7989('0x2f')]=_['keys'](_0x74e1e7['query']);_0x4578df[_0x7989('0x31')]=_[_0x7989('0x33')](_0x4578df[_0x7989('0x2e')],_0x4578df['query']);_0x25bd8d['attributes']=_[_0x7989('0x33')](_0x4578df[_0x7989('0x2e')],qs[_0x7989('0x34')](_0x74e1e7['query'][_0x7989('0x34')]));_0x25bd8d['attributes']=_0x25bd8d[_0x7989('0x32')][_0x7989('0x35')]?_0x25bd8d[_0x7989('0x32')]:_0x4578df['model'];_0x25bd8d[_0x7989('0x4b')]=qs[_0x7989('0x38')](_0x74e1e7['query'][_0x7989('0x38')]);_0x25bd8d[_0x7989('0x3b')]=qs[_0x7989('0x31')](_[_0x7989('0x39')](_0x74e1e7[_0x7989('0x2f')],_0x4578df['filters']));if(_0x74e1e7[_0x7989('0x2f')][_0x7989('0x3a')]){_0x25bd8d[_0x7989('0x3b')]=_[_0x7989('0x3c')](_0x25bd8d[_0x7989('0x3b')],{'$or':_[_0x7989('0x29')](_0x25bd8d[_0x7989('0x32')],function(_0xb6eb4b){var _0x30f7cb={};_0x30f7cb[_0xb6eb4b]={'$like':'%'+_0x74e1e7[_0x7989('0x2f')][_0x7989('0x3a')]+'%'};return _0x30f7cb;})});}_0x25bd8d=_[_0x7989('0x3c')]({},_0x25bd8d,_0x74e1e7[_0x7989('0x45')]);return _0x1d96d2[_0x7989('0x4c')](_0x25bd8d);}})['then'](function(_0x18d56b){if(_0x18d56b){_0x3dab04=_0x18d56b[_0x7989('0x35')];if(!_0x74e1e7[_0x7989('0x2f')][_0x7989('0x36')](_0x7989('0x37'))){_0x25bd8d[_0x7989('0x1b')]=qs[_0x7989('0x1b')](_0x74e1e7['query'][_0x7989('0x1b')]);_0x25bd8d[_0x7989('0x18')]=qs[_0x7989('0x18')](_0x74e1e7[_0x7989('0x2f')][_0x7989('0x18')]);}return _0x1d96d2['getConfigurations'](_0x25bd8d);}})[_0x7989('0x22')](function(_0x3ced76){if(_0x3ced76){return _0x3ced76?{'count':_0x3dab04,'rows':_0x3ced76}:null;}})[_0x7989('0x22')](respondWithResult(_0x2d0f17,null))[_0x7989('0x42')](handleError(_0x2d0f17,null));};exports[_0x7989('0x4d')]=function(_0x2c13c8,_0x59d25e,_0x2649f0){if(_0x2c13c8['body']['id']){delete _0x2c13c8[_0x7989('0x48')]['id'];}return db[_0x7989('0x2a')][_0x7989('0x4a')]({'where':{'id':_0x2c13c8['params']['id']}})[_0x7989('0x22')](handleEntityNotFound(_0x59d25e,null))['then'](function(_0x4a62b8){if(_0x4a62b8){_0x2c13c8[_0x7989('0x48')][_0x7989('0x4e')]=_0x4a62b8['id'];_0x2c13c8[_0x7989('0x48')]['Subjects']=integrations[_0x7989('0x4f')](_0x2c13c8[_0x7989('0x48')][_0x7989('0x50')],_0x2c13c8[_0x7989('0x48')][_0x7989('0x3d')]);_0x2c13c8[_0x7989('0x48')][_0x7989('0x51')]=integrations[_0x7989('0x52')](_0x2c13c8[_0x7989('0x48')][_0x7989('0x50')],_0x2c13c8[_0x7989('0x48')][_0x7989('0x3d')]);return db['ZohoConfiguration'][_0x7989('0x47')](_0x2c13c8['body'],{'include':[{'model':db[_0x7989('0x53')],'as':_0x7989('0x54')},{'model':db[_0x7989('0x53')],'as':_0x7989('0x51')}]});}return null;})[_0x7989('0x22')](respondWithResult(_0x59d25e,null))[_0x7989('0x42')](handleError(_0x59d25e,null));};function getAccessToken(_0x209e1a){return new Promise(function(_0x2d9dc9,_0x12d223){var _0x48fd23;switch(_0x209e1a['zone']){case'US':_0x48fd23='https://accounts.zoho.com';break;case'AU':_0x48fd23='https://accounts.zoho.com.au';break;case'EU':_0x48fd23='https://accounts.zoho.eu';break;case'IN':_0x48fd23=_0x7989('0x55');break;case'CN':_0x48fd23=_0x7989('0x56');break;default:_0x48fd23='https://accounts.zoho.eu';break;}var _0x71a416={'method':_0x7989('0x57'),'uri':_0x48fd23+_0x7989('0x58'),'qs':{'refresh_token':_0x209e1a[_0x7989('0x59')],'client_id':_0x209e1a[_0x7989('0x5a')],'client_secret':_0x209e1a[_0x7989('0x5b')],'grant_type':_0x7989('0x5c')},'json':!![]};return rp(_0x71a416)[_0x7989('0x22')](function(_0x34258b){if(_0x34258b[_0x7989('0x5d')]){_0x2d9dc9(_0x34258b[_0x7989('0x5d')]);}else{_0x12d223('Unable\x20to\x20retrieve\x20the\x20access\x20token');}})[_0x7989('0x42')](function(_0x82f980){_0x12d223(_0x82f980);});});}exports[_0x7989('0x5e')]=function(_0x5467da,_0x27529c,_0x4cb9f4){var _0x6edc5a,_0x26e06f,_0x2f049d,_0x569b32,_0x55408a;return db['ZohoAccount'][_0x7989('0x4a')]({'where':{'id':_0x5467da[_0x7989('0x49')]['id']},'attributes':['id',_0x7989('0x5f'),'zone',_0x7989('0x5a'),_0x7989('0x5b'),_0x7989('0x60'),_0x7989('0x61'),_0x7989('0x59')]})[_0x7989('0x22')](handleEntityNotFound(_0x27529c,null))[_0x7989('0x22')](function(_0x4e6a6d){_0x55408a=_0x4e6a6d;_0x6edc5a=_0x55408a[_0x7989('0x5f')];_0x26e06f=_0x6edc5a==='zoho.eu'?'eu':_0x7989('0x62');_0x2f049d=_0x55408a[_0x7989('0x60')];var _0x57f611=_0x2f049d[_0x7989('0x63')](-0x1);if(_0x57f611==='/'||_0x57f611==='\x5c'||_0x57f611===':'){_0x2f049d=_0x2f049d[_0x7989('0x64')](0x0,_0x2f049d[_0x7989('0x65')](_0x57f611));}if(!_0x55408a['refreshToken']){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x55408a);})[_0x7989('0x22')](function(_0xefe7a8){if(_0xefe7a8){return rp({'method':_0x7989('0x66'),'uri':util['format'](_0x7989('0x67'),_0x26e06f),'qs':{'module':'Calls'},'headers':{'Authorization':_0x7989('0x68')+_0xefe7a8},'json':!![]});}})['then'](function(_0x27cada){if(_0x27cada){if(_0x27cada[_0x7989('0x69')]&&_0x27cada[_0x7989('0x69')][_0x7989('0x25')]){throw new Error(_0x27cada[_0x7989('0x69')][_0x7989('0x25')][_0x7989('0x6a')]);}var _0x4d9449=[];var _0x5bf02f=[];var _0x2a18dd=[_0x7989('0x6b'),_0x7989('0x6c'),'Description','WhoId',_0x7989('0x6d'),'Call_Result','Call_Start_Time',_0x7989('0x6e')];_0x5bf02f=_[_0x7989('0x6f')](_0x27cada[_0x7989('0x34')],function(_0x206f34){return _0x2a18dd['includes'](_0x206f34[_0x7989('0x70')]);});for(var _0x3bf730=0x0;_0x3bf730<_0x5bf02f[_0x7989('0x35')];_0x3bf730++){if(_0x5bf02f[_0x3bf730][_0x7989('0x71')]===![]){_0x4d9449['push']({'id':_0x5bf02f[_0x3bf730]['id'],'name':_0x5bf02f[_0x3bf730][_0x7989('0x72')],'custom':_0x5bf02f[_0x3bf730][_0x7989('0x73')],'options':_0x5bf02f[_0x3bf730][_0x7989('0x74')]===_0x7989('0x75')&&_0x5bf02f[_0x3bf730][_0x7989('0x76')]['length']>-0x1?_[_0x7989('0x29')](_0x5bf02f[_0x3bf730][_0x7989('0x76')],function(_0x1b4897){return{'name':_0x1b4897,'value':_0x1b4897};}):[]});}}return{'count':_0x4d9449[_0x7989('0x35')],'rows':_0x4d9449};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x27529c,null))[_0x7989('0x42')](function(_0x2febb1){var _0x194801=_0x5467da[_0x7989('0x2f')][_0x7989('0x77')]?0x1f4:_0x2febb1[_0x7989('0x78')]||0x1f4;logger[_0x7989('0x25')](_0x7989('0x79'),_0x7989('0x5e'),_0x194801,JSON[_0x7989('0x7a')](_0x2febb1));delete _0x2febb1[_0x7989('0x26')];if(_0x194801===0x191){_0x194801=0x190;}_0x27529c['status'](_0x194801)[_0x7989('0x27')](_0x5467da[_0x7989('0x2f')][_0x7989('0x77')]?{'message':_0x7989('0x7b'),'statusCode':_0x2febb1[_0x7989('0x78')]}:_0x2febb1);});};
\ No newline at end of file
index 1df3133..45758ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a53=['rimraf','./intZohoAccount.attributes','../../components/integrations/configuration','exports','define','ZohoAccount','int_zoho_accounts','changed','zone','serverUrl','clientSecret','code','host','slice','substring','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','authorization_code','application/x-www-form-urlencoded','then','parse','refresh_token','refreshToken','info','format','name','error','inspect','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','clientId','/oauth/v2/token','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','catch','util','../../config/logger','api','moment','request-promise'];(function(_0x2837f5,_0xec4edb){var _0x14368a=function(_0xd211ff){while(--_0xd211ff){_0x2837f5['push'](_0x2837f5['shift']());}};_0x14368a(++_0xec4edb);}(_0x3a53,0x79));var _0x33a5=function(_0x49d41c,_0x2bdc35){_0x49d41c=_0x49d41c-0x0;var _0xb64c5f=_0x3a53[_0x49d41c];return _0xb64c5f;};'use strict';var _=require('lodash');var util=require(_0x33a5('0x0'));var logger=require(_0x33a5('0x1'))(_0x33a5('0x2'));var moment=require(_0x33a5('0x3'));var BPromise=require('bluebird');var rp=require(_0x33a5('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x33a5('0x5'));var config=require('../../config/environment');var attributes=require(_0x33a5('0x6'));var integrations=require(_0x33a5('0x7'));module[_0x33a5('0x8')]=function(_0x5f06b1,_0x16073a){return _0x5f06b1[_0x33a5('0x9')](_0x33a5('0xa'),attributes,{'tableName':_0x33a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x1fbc86,_0x437c88,_0x992633){if(_0x1fbc86[_0x33a5('0xc')](_0x33a5('0xd'))||_0x1fbc86[_0x33a5('0xc')](_0x33a5('0xe'))||_0x1fbc86[_0x33a5('0xc')]('clientId')||_0x1fbc86[_0x33a5('0xc')](_0x33a5('0xf'))||_0x1fbc86[_0x33a5('0xc')](_0x33a5('0x10'))||_0x1fbc86['changed'](_0x33a5('0x11'))){var _0x35c9e1,_0x3697fa;_0x35c9e1=_0x1fbc86[_0x33a5('0xe')];var _0x5c1d40=_0x35c9e1[_0x33a5('0x12')](-0x1);if(_0x5c1d40==='/'||_0x5c1d40==='\x5c'||_0x5c1d40===':'){_0x35c9e1=_0x35c9e1[_0x33a5('0x13')](0x0,_0x35c9e1[_0x33a5('0x14')](_0x5c1d40));}switch(_0x1fbc86[_0x33a5('0xd')]){case'US':_0x3697fa=_0x33a5('0x15');break;case'AU':_0x3697fa=_0x33a5('0x16');break;case'IN':_0x3697fa=_0x33a5('0x17');break;case'CN':_0x3697fa=_0x33a5('0x18');break;default:_0x3697fa=_0x33a5('0x19');break;}var _0x1de60d={'method':'POST','uri':_0x3697fa+'/oauth/v2/token','form':{'grant_type':_0x33a5('0x1a'),'client_id':_0x1fbc86['clientId'],'client_secret':_0x1fbc86['clientSecret'],'redirect_uri':_0x1fbc86[_0x33a5('0xe')],'code':_0x1fbc86[_0x33a5('0x10')]},'headers':{'Content-Type':_0x33a5('0x1b')}};return rp(_0x1de60d)[_0x33a5('0x1c')](function(_0x127ffa){var _0x56ed10=JSON[_0x33a5('0x1d')](_0x127ffa);if(_0x56ed10[_0x33a5('0x1e')]){_0x1fbc86[_0x33a5('0x1f')]=_0x56ed10[_0x33a5('0x1e')];logger[_0x33a5('0x20')](util[_0x33a5('0x21')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x1fbc86[_0x33a5('0x22')],_0x1fbc86['id']));}else{logger[_0x33a5('0x23')](util[_0x33a5('0x21')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x1fbc86[_0x33a5('0x22')],_0x1fbc86['id']),util[_0x33a5('0x24')](_0x56ed10,{'showHidden':![],'depth':null}));}return _0x992633(null,_0x437c88);})['catch'](function(_0x48d627){logger[_0x33a5('0x23')](util[_0x33a5('0x21')](_0x33a5('0x25'),_0x1fbc86[_0x33a5('0x22')],_0x1fbc86['id']),util[_0x33a5('0x24')](parsedResult,{'showHidden':![],'depth':null}));return _0x992633(_0x48d627);});}else{return _0x992633(null,_0x437c88);}},'beforeUpdate':function(_0x5a34b4,_0x66b312,_0x29fe32){if(_0x5a34b4[_0x33a5('0xc')](_0x33a5('0xd'))||_0x5a34b4[_0x33a5('0xc')](_0x33a5('0xe'))||_0x5a34b4[_0x33a5('0xc')](_0x33a5('0x26'))||_0x5a34b4[_0x33a5('0xc')](_0x33a5('0xf'))||_0x5a34b4['changed'](_0x33a5('0x10'))||_0x5a34b4[_0x33a5('0xc')]('host')){var _0x5ea5db,_0x596913;_0x5ea5db=_0x5a34b4[_0x33a5('0xe')];var _0x493ae9=_0x5ea5db[_0x33a5('0x12')](-0x1);if(_0x493ae9==='/'||_0x493ae9==='\x5c'||_0x493ae9===':'){_0x5ea5db=_0x5ea5db[_0x33a5('0x13')](0x0,_0x5ea5db['lastIndexOf'](_0x493ae9));}switch(_0x5a34b4[_0x33a5('0xd')]){case'US':_0x596913='https://accounts.zoho.com';break;case'AU':_0x596913='https://accounts.zoho.com.au';break;case'IN':_0x596913=_0x33a5('0x17');break;case'CN':_0x596913=_0x33a5('0x18');break;default:_0x596913='https://accounts.zoho.eu';break;}var _0xf2dbee={'method':'POST','uri':_0x596913+_0x33a5('0x27'),'form':{'grant_type':'authorization_code','client_id':_0x5a34b4[_0x33a5('0x26')],'client_secret':_0x5a34b4[_0x33a5('0xf')],'redirect_uri':_0x5a34b4[_0x33a5('0xe')],'code':_0x5a34b4[_0x33a5('0x10')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0xf2dbee)['then'](function(_0x4d0048){var _0x206eb2=JSON[_0x33a5('0x1d')](_0x4d0048);if(_0x206eb2[_0x33a5('0x1e')]){_0x5a34b4[_0x33a5('0x1f')]=_0x206eb2[_0x33a5('0x1e')];logger[_0x33a5('0x20')](util[_0x33a5('0x21')](_0x33a5('0x28'),_0x5a34b4[_0x33a5('0x22')],_0x5a34b4['id']));}else{logger[_0x33a5('0x23')](util['format'](_0x33a5('0x25'),_0x5a34b4[_0x33a5('0x22')],_0x5a34b4['id']),util[_0x33a5('0x24')](_0x206eb2,{'showHidden':![],'depth':null}));}return _0x29fe32(null,_0x66b312);})[_0x33a5('0x29')](function(_0xda8bbb){logger['error'](util[_0x33a5('0x21')](_0x33a5('0x25'),_0x5a34b4['name'],_0x5a34b4['id']),util[_0x33a5('0x24')](parsedResult,{'showHidden':![],'depth':null}));return _0x29fe32(_0xda8bbb);});}else{return _0x29fe32(null,_0x66b312);}}}});};
\ No newline at end of file
+var _0x2787=['refresh_token','refreshToken','info','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','name','inspect','catch','slice','https://accounts.zoho.com.au','POST','parse','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','define','int_zoho_accounts','changed','zone','serverUrl','clientId','host','substring','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','/oauth/v2/token','authorization_code','clientSecret','code','then'];(function(_0x497a11,_0x1afffc){var _0x36f2b2=function(_0x591eac){while(--_0x591eac){_0x497a11['push'](_0x497a11['shift']());}};_0x36f2b2(++_0x1afffc);}(_0x2787,0x15e));var _0x7278=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0x2787[_0x138adb];return _0x1b27f2;};'use strict';var _=require(_0x7278('0x0'));var util=require('util');var logger=require(_0x7278('0x1'))('api');var moment=require(_0x7278('0x2'));var BPromise=require(_0x7278('0x3'));var rp=require(_0x7278('0x4'));var fs=require('fs');var path=require(_0x7278('0x5'));var rimraf=require(_0x7278('0x6'));var config=require(_0x7278('0x7'));var attributes=require('./intZohoAccount.attributes');var integrations=require(_0x7278('0x8'));module[_0x7278('0x9')]=function(_0x4e5598,_0x106ce9){return _0x4e5598[_0x7278('0xa')]('ZohoAccount',attributes,{'tableName':_0x7278('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x457a0e,_0xef9617,_0x2fb2a7){if(_0x457a0e[_0x7278('0xc')](_0x7278('0xd'))||_0x457a0e['changed'](_0x7278('0xe'))||_0x457a0e[_0x7278('0xc')](_0x7278('0xf'))||_0x457a0e['changed']('clientSecret')||_0x457a0e[_0x7278('0xc')]('code')||_0x457a0e[_0x7278('0xc')](_0x7278('0x10'))){var _0x573822,_0x1fd572;_0x573822=_0x457a0e['serverUrl'];var _0x48ba25=_0x573822['slice'](-0x1);if(_0x48ba25==='/'||_0x48ba25==='\x5c'||_0x48ba25===':'){_0x573822=_0x573822[_0x7278('0x11')](0x0,_0x573822[_0x7278('0x12')](_0x48ba25));}switch(_0x457a0e[_0x7278('0xd')]){case'US':_0x1fd572=_0x7278('0x13');break;case'AU':_0x1fd572='https://accounts.zoho.com.au';break;case'IN':_0x1fd572=_0x7278('0x14');break;case'CN':_0x1fd572=_0x7278('0x15');break;default:_0x1fd572=_0x7278('0x16');break;}var _0x3b883c={'method':'POST','uri':_0x1fd572+_0x7278('0x17'),'form':{'grant_type':_0x7278('0x18'),'client_id':_0x457a0e[_0x7278('0xf')],'client_secret':_0x457a0e[_0x7278('0x19')],'redirect_uri':_0x457a0e[_0x7278('0xe')],'code':_0x457a0e[_0x7278('0x1a')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x3b883c)[_0x7278('0x1b')](function(_0x366fec){var _0x2e0216=JSON['parse'](_0x366fec);if(_0x2e0216[_0x7278('0x1c')]){_0x457a0e[_0x7278('0x1d')]=_0x2e0216[_0x7278('0x1c')];logger[_0x7278('0x1e')](util[_0x7278('0x1f')](_0x7278('0x20'),_0x457a0e['name'],_0x457a0e['id']));}else{logger[_0x7278('0x21')](util['format'](_0x7278('0x22'),_0x457a0e[_0x7278('0x23')],_0x457a0e['id']),util[_0x7278('0x24')](_0x2e0216,{'showHidden':![],'depth':null}));}return _0x2fb2a7(null,_0xef9617);})[_0x7278('0x25')](function(_0x523b02){logger[_0x7278('0x21')](util[_0x7278('0x1f')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x457a0e['name'],_0x457a0e['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x2fb2a7(_0x523b02);});}else{return _0x2fb2a7(null,_0xef9617);}},'beforeUpdate':function(_0x4e307b,_0x597670,_0x38b90f){if(_0x4e307b[_0x7278('0xc')](_0x7278('0xd'))||_0x4e307b[_0x7278('0xc')](_0x7278('0xe'))||_0x4e307b[_0x7278('0xc')]('clientId')||_0x4e307b[_0x7278('0xc')]('clientSecret')||_0x4e307b[_0x7278('0xc')](_0x7278('0x1a'))||_0x4e307b[_0x7278('0xc')](_0x7278('0x10'))){var _0xb21818,_0x56ecb7;_0xb21818=_0x4e307b[_0x7278('0xe')];var _0x3c9b08=_0xb21818[_0x7278('0x26')](-0x1);if(_0x3c9b08==='/'||_0x3c9b08==='\x5c'||_0x3c9b08===':'){_0xb21818=_0xb21818[_0x7278('0x11')](0x0,_0xb21818[_0x7278('0x12')](_0x3c9b08));}switch(_0x4e307b[_0x7278('0xd')]){case'US':_0x56ecb7=_0x7278('0x13');break;case'AU':_0x56ecb7=_0x7278('0x27');break;case'IN':_0x56ecb7=_0x7278('0x14');break;case'CN':_0x56ecb7=_0x7278('0x15');break;default:_0x56ecb7=_0x7278('0x16');break;}var _0x5e2a2d={'method':_0x7278('0x28'),'uri':_0x56ecb7+_0x7278('0x17'),'form':{'grant_type':'authorization_code','client_id':_0x4e307b['clientId'],'client_secret':_0x4e307b[_0x7278('0x19')],'redirect_uri':_0x4e307b[_0x7278('0xe')],'code':_0x4e307b['code']},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x5e2a2d)[_0x7278('0x1b')](function(_0x265c57){var _0x173d9c=JSON[_0x7278('0x29')](_0x265c57);if(_0x173d9c[_0x7278('0x1c')]){_0x4e307b[_0x7278('0x1d')]=_0x173d9c['refresh_token'];logger[_0x7278('0x1e')](util[_0x7278('0x1f')](_0x7278('0x20'),_0x4e307b['name'],_0x4e307b['id']));}else{logger['error'](util[_0x7278('0x1f')](_0x7278('0x22'),_0x4e307b[_0x7278('0x23')],_0x4e307b['id']),util[_0x7278('0x24')](_0x173d9c,{'showHidden':![],'depth':null}));}return _0x38b90f(null,_0x597670);})[_0x7278('0x25')](function(_0x452126){logger[_0x7278('0x21')](util[_0x7278('0x1f')](_0x7278('0x22'),_0x4e307b['name'],_0x4e307b['id']),util[_0x7278('0x24')](parsedResult,{'showHidden':![],'depth':null}));return _0x38b90f(_0x452126);});}else{return _0x38b90f(null,_0x597670);}}}});};
\ No newline at end of file
index c6f3068..4f1c908 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63a6=['ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetZohoAccount','options','where','attributes','include','map','model','ShowZohoAccount','find','raw','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','request','then'];(function(_0x1f6737,_0x40e5c1){var _0x2dcf1f=function(_0x521ff6){while(--_0x521ff6){_0x1f6737['push'](_0x1f6737['shift']());}};_0x2dcf1f(++_0x40e5c1);}(_0x63a6,0x1c7));var _0x663a=function(_0xf60cd0,_0x34bf81){_0xf60cd0=_0xf60cd0-0x0;var _0x32ad56=_0x63a6[_0xf60cd0];return _0x32ad56;};'use strict';var _=require('lodash');var util=require(_0x663a('0x0'));var moment=require(_0x663a('0x1'));var BPromise=require('bluebird');var rs=require(_0x663a('0x2'));var fs=require('fs');var Redis=require(_0x663a('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x663a('0x4'));var logger=require(_0x663a('0x5'))(_0x663a('0x6'));var config=require(_0x663a('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x14b552,_0x20203b,_0x4b1314){return new BPromise(function(_0x4d4249,_0x326b53){return client[_0x663a('0x8')](_0x14b552,_0x4b1314)[_0x663a('0x9')](function(_0x4aa93a){logger['info'](_0x663a('0xa'),_0x20203b,_0x663a('0xb'));logger[_0x663a('0xc')](_0x663a('0xd'),_0x20203b,_0x663a('0xb'),JSON[_0x663a('0xe')](_0x4aa93a));if(_0x4aa93a['error']){if(_0x4aa93a[_0x663a('0xf')][_0x663a('0x10')]===0x1f4){logger[_0x663a('0xf')]('ZohoAccount,\x20%s,\x20%s',_0x20203b,_0x4aa93a['error'][_0x663a('0x11')]);return _0x326b53(_0x4aa93a['error']['message']);}logger[_0x663a('0xf')](_0x663a('0xa'),_0x20203b,_0x4aa93a['error'][_0x663a('0x11')]);return _0x4d4249(_0x4aa93a['error'][_0x663a('0x11')]);}else{logger[_0x663a('0x12')](_0x663a('0xa'),_0x20203b,_0x663a('0xb'));_0x4d4249(_0x4aa93a[_0x663a('0x13')]['message']);}})[_0x663a('0x14')](function(_0x5cc6ab){logger[_0x663a('0xf')](_0x663a('0xa'),_0x20203b,_0x5cc6ab);_0x326b53(_0x5cc6ab);});});}exports[_0x663a('0x15')]=function(_0x1508ab){var _0x54c5e6=this;return new Promise(function(_0x2a1f33,_0x5d7a6a){return db['ZohoAccount']['findAll']({'raw':_0x1508ab[_0x663a('0x16')]?_0x1508ab[_0x663a('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x1508ab['options']?_0x1508ab[_0x663a('0x16')][_0x663a('0x17')]||null:null,'attributes':_0x1508ab[_0x663a('0x16')]?_0x1508ab[_0x663a('0x16')][_0x663a('0x18')]||null:null,'limit':_0x1508ab[_0x663a('0x16')]?_0x1508ab[_0x663a('0x16')]['limit']||null:null,'include':_0x1508ab[_0x663a('0x16')]?_0x1508ab[_0x663a('0x16')][_0x663a('0x19')]?_[_0x663a('0x1a')](_0x1508ab[_0x663a('0x16')][_0x663a('0x19')],function(_0x5e1bd1){return{'model':db[_0x5e1bd1[_0x663a('0x1b')]],'as':_0x5e1bd1['as'],'attributes':_0x5e1bd1[_0x663a('0x18')],'include':_0x5e1bd1['include']?_[_0x663a('0x1a')](_0x5e1bd1[_0x663a('0x19')],function(_0x5463d5){return{'model':db[_0x5463d5[_0x663a('0x1b')]],'as':_0x5463d5['as'],'attributes':_0x5463d5[_0x663a('0x18')],'include':_0x5463d5['include']?_[_0x663a('0x1a')](_0x5463d5[_0x663a('0x19')],function(_0x57131d){return{'model':db[_0x57131d[_0x663a('0x1b')]],'as':_0x57131d['as'],'attributes':_0x57131d['attributes']};}):[]};}):[]};}):[]:[]})[_0x663a('0x9')](function(_0x2ab007){logger[_0x663a('0x12')](_0x663a('0x15'),_0x1508ab);logger[_0x663a('0xc')]('GetZohoAccount',_0x1508ab,JSON[_0x663a('0xe')](_0x2ab007));_0x2a1f33(_0x2ab007);})[_0x663a('0x14')](function(_0x1ab286){logger[_0x663a('0xf')](_0x663a('0x15'),_0x1ab286[_0x663a('0x11')],_0x1508ab);_0x5d7a6a(_0x54c5e6[_0x663a('0xf')](0x1f4,_0x1ab286['message']));});});};exports[_0x663a('0x1c')]=function(_0x2a0577){var _0x2cf498=this;return new Promise(function(_0x6ab5a2,_0x472e02){return db['ZohoAccount'][_0x663a('0x1d')]({'raw':_0x2a0577['options']?_0x2a0577[_0x663a('0x16')][_0x663a('0x1e')]===undefined?!![]:![]:!![],'where':_0x2a0577[_0x663a('0x16')]?_0x2a0577[_0x663a('0x16')][_0x663a('0x17')]||null:null,'attributes':_0x2a0577['options']?_0x2a0577[_0x663a('0x16')]['attributes']||null:null,'include':_0x2a0577[_0x663a('0x16')]?_0x2a0577[_0x663a('0x16')][_0x663a('0x19')]?_[_0x663a('0x1a')](_0x2a0577['options'][_0x663a('0x19')],function(_0x87a4d9){return{'model':db[_0x87a4d9[_0x663a('0x1b')]],'as':_0x87a4d9['as'],'attributes':_0x87a4d9[_0x663a('0x18')],'include':_0x87a4d9[_0x663a('0x19')]?_[_0x663a('0x1a')](_0x87a4d9[_0x663a('0x19')],function(_0x104f5c){return{'model':db[_0x104f5c['model']],'as':_0x104f5c['as'],'attributes':_0x104f5c[_0x663a('0x18')],'include':_0x104f5c[_0x663a('0x19')]?_['map'](_0x104f5c[_0x663a('0x19')],function(_0x162a38){return{'model':db[_0x162a38[_0x663a('0x1b')]],'as':_0x162a38['as'],'attributes':_0x162a38[_0x663a('0x18')]};}):[]};}):[]};}):[]:[]})[_0x663a('0x9')](function(_0x531681){logger[_0x663a('0x12')]('ShowZohoAccount',_0x2a0577);logger[_0x663a('0xc')](_0x663a('0x1c'),_0x2a0577,JSON['stringify'](_0x531681));_0x6ab5a2(_0x531681);})['catch'](function(_0x3a424e){logger[_0x663a('0xf')]('ShowZohoAccount',_0x3a424e[_0x663a('0x11')],_0x2a0577);_0x472e02(_0x2cf498[_0x663a('0xf')](0x1f4,_0x3a424e[_0x663a('0x11')]));});});};
\ No newline at end of file
+var _0x6ab9=['request','then','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetZohoAccount','ZohoAccount','findAll','options','raw','where','attributes','include','model','map','catch','ShowZohoAccount','find','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client'];(function(_0x53cf8e,_0x3d290f){var _0x459197=function(_0x67073c){while(--_0x67073c){_0x53cf8e['push'](_0x53cf8e['shift']());}};_0x459197(++_0x3d290f);}(_0x6ab9,0x19a));var _0x96ab=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0x6ab9[_0x17b6e3];return _0x3906f3;};'use strict';var _=require(_0x96ab('0x0'));var util=require(_0x96ab('0x1'));var moment=require('moment');var BPromise=require(_0x96ab('0x2'));var rs=require(_0x96ab('0x3'));var fs=require('fs');var Redis=require(_0x96ab('0x4'));var db=require(_0x96ab('0x5'))['db'];var utils=require(_0x96ab('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x96ab('0x7'));var jayson=require(_0x96ab('0x8'));var client=jayson[_0x96ab('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3d2a35,_0xf8e2b1,_0x516cf7){return new BPromise(function(_0x313efb,_0x1e3f17){return client[_0x96ab('0xa')](_0x3d2a35,_0x516cf7)[_0x96ab('0xb')](function(_0x39b50e){logger[_0x96ab('0xc')](_0x96ab('0xd'),_0xf8e2b1,_0x96ab('0xe'));logger[_0x96ab('0xf')](_0x96ab('0x10'),_0xf8e2b1,_0x96ab('0xe'),JSON[_0x96ab('0x11')](_0x39b50e));if(_0x39b50e[_0x96ab('0x12')]){if(_0x39b50e['error'][_0x96ab('0x13')]===0x1f4){logger['error'](_0x96ab('0xd'),_0xf8e2b1,_0x39b50e[_0x96ab('0x12')][_0x96ab('0x14')]);return _0x1e3f17(_0x39b50e[_0x96ab('0x12')][_0x96ab('0x14')]);}logger[_0x96ab('0x12')](_0x96ab('0xd'),_0xf8e2b1,_0x39b50e[_0x96ab('0x12')][_0x96ab('0x14')]);return _0x313efb(_0x39b50e[_0x96ab('0x12')][_0x96ab('0x14')]);}else{logger['info']('ZohoAccount,\x20%s,\x20%s',_0xf8e2b1,_0x96ab('0xe'));_0x313efb(_0x39b50e[_0x96ab('0x15')][_0x96ab('0x14')]);}})['catch'](function(_0x43e35e){logger[_0x96ab('0x12')]('ZohoAccount,\x20%s,\x20%s',_0xf8e2b1,_0x43e35e);_0x1e3f17(_0x43e35e);});});}exports[_0x96ab('0x16')]=function(_0x4eca78){var _0x231ed5=this;return new Promise(function(_0x1a502a,_0x397ffc){return db[_0x96ab('0x17')][_0x96ab('0x18')]({'raw':_0x4eca78[_0x96ab('0x19')]?_0x4eca78[_0x96ab('0x19')][_0x96ab('0x1a')]===undefined?!![]:![]:!![],'where':_0x4eca78[_0x96ab('0x19')]?_0x4eca78[_0x96ab('0x19')][_0x96ab('0x1b')]||null:null,'attributes':_0x4eca78['options']?_0x4eca78['options'][_0x96ab('0x1c')]||null:null,'limit':_0x4eca78[_0x96ab('0x19')]?_0x4eca78[_0x96ab('0x19')]['limit']||null:null,'include':_0x4eca78[_0x96ab('0x19')]?_0x4eca78['options'][_0x96ab('0x1d')]?_['map'](_0x4eca78[_0x96ab('0x19')][_0x96ab('0x1d')],function(_0x5a02d0){return{'model':db[_0x5a02d0[_0x96ab('0x1e')]],'as':_0x5a02d0['as'],'attributes':_0x5a02d0[_0x96ab('0x1c')],'include':_0x5a02d0[_0x96ab('0x1d')]?_[_0x96ab('0x1f')](_0x5a02d0[_0x96ab('0x1d')],function(_0x27d6d5){return{'model':db[_0x27d6d5[_0x96ab('0x1e')]],'as':_0x27d6d5['as'],'attributes':_0x27d6d5[_0x96ab('0x1c')],'include':_0x27d6d5[_0x96ab('0x1d')]?_['map'](_0x27d6d5[_0x96ab('0x1d')],function(_0x524e1c){return{'model':db[_0x524e1c[_0x96ab('0x1e')]],'as':_0x524e1c['as'],'attributes':_0x524e1c[_0x96ab('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x96ab('0xb')](function(_0x240553){logger[_0x96ab('0xc')](_0x96ab('0x16'),_0x4eca78);logger[_0x96ab('0xf')](_0x96ab('0x16'),_0x4eca78,JSON['stringify'](_0x240553));_0x1a502a(_0x240553);})[_0x96ab('0x20')](function(_0x269c51){logger[_0x96ab('0x12')]('GetZohoAccount',_0x269c51[_0x96ab('0x14')],_0x4eca78);_0x397ffc(_0x231ed5[_0x96ab('0x12')](0x1f4,_0x269c51[_0x96ab('0x14')]));});});};exports[_0x96ab('0x21')]=function(_0xaccba6){var _0x4c9a55=this;return new Promise(function(_0x40a55b,_0x44529b){return db['ZohoAccount'][_0x96ab('0x22')]({'raw':_0xaccba6['options']?_0xaccba6['options']['raw']===undefined?!![]:![]:!![],'where':_0xaccba6['options']?_0xaccba6[_0x96ab('0x19')]['where']||null:null,'attributes':_0xaccba6[_0x96ab('0x19')]?_0xaccba6[_0x96ab('0x19')][_0x96ab('0x1c')]||null:null,'include':_0xaccba6[_0x96ab('0x19')]?_0xaccba6[_0x96ab('0x19')]['include']?_['map'](_0xaccba6[_0x96ab('0x19')][_0x96ab('0x1d')],function(_0x56e3e2){return{'model':db[_0x56e3e2[_0x96ab('0x1e')]],'as':_0x56e3e2['as'],'attributes':_0x56e3e2[_0x96ab('0x1c')],'include':_0x56e3e2['include']?_['map'](_0x56e3e2[_0x96ab('0x1d')],function(_0x39f56d){return{'model':db[_0x39f56d[_0x96ab('0x1e')]],'as':_0x39f56d['as'],'attributes':_0x39f56d[_0x96ab('0x1c')],'include':_0x39f56d['include']?_[_0x96ab('0x1f')](_0x39f56d['include'],function(_0x5e9020){return{'model':db[_0x5e9020[_0x96ab('0x1e')]],'as':_0x5e9020['as'],'attributes':_0x5e9020['attributes']};}):[]};}):[]};}):[]:[]})[_0x96ab('0xb')](function(_0xd3ec3b){logger[_0x96ab('0xc')](_0x96ab('0x21'),_0xaccba6);logger['debug'](_0x96ab('0x21'),_0xaccba6,JSON[_0x96ab('0x11')](_0xd3ec3b));_0x40a55b(_0xd3ec3b);})[_0x96ab('0x20')](function(_0x376775){logger[_0x96ab('0x12')]('ShowZohoAccount',_0x376775[_0x96ab('0x14')],_0xaccba6);_0x44529b(_0x4c9a55['error'](0x1f4,_0x376775[_0x96ab('0x14')]));});});};
\ No newline at end of file
index d6e380f..a1ff82a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe678=['show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','create','put','update','destroy','exports','util','path','express','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id'];(function(_0x358916,_0x367a0c){var _0x57f57b=function(_0x2c6da){while(--_0x2c6da){_0x358916['push'](_0x358916['shift']());}};_0x57f57b(++_0x367a0c);}(_0xe678,0x1f0));var _0x8e67=function(_0x48a887,_0x1d2b7b){_0x48a887=_0x48a887-0x0;var _0x576724=_0xe678[_0x48a887];return _0x576724;};'use strict';var multer=require('multer');var util=require(_0x8e67('0x0'));var path=require(_0x8e67('0x1'));var timeout=require('connect-timeout');var express=require(_0x8e67('0x2'));var router=express['Router']();var fs_extra=require(_0x8e67('0x3'));var auth=require(_0x8e67('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x8e67('0x5'));var controller=require('./intZohoConfiguration.controller');router[_0x8e67('0x6')]('/',auth[_0x8e67('0x7')](),controller[_0x8e67('0x8')]);router[_0x8e67('0x6')](_0x8e67('0x9'),auth[_0x8e67('0x7')](),controller[_0x8e67('0xa')]);router['get'](_0x8e67('0xb'),auth[_0x8e67('0x7')](),controller[_0x8e67('0xc')]);router[_0x8e67('0x6')](_0x8e67('0xd'),auth[_0x8e67('0x7')](),controller[_0x8e67('0xe')]);router[_0x8e67('0x6')](_0x8e67('0xf'),auth['isAuthenticated'](),controller[_0x8e67('0x10')]);router['post']('/',auth[_0x8e67('0x7')](),controller[_0x8e67('0x11')]);router[_0x8e67('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x8e67('0x13')]);router['delete'](_0x8e67('0x9'),auth['isAuthenticated'](),controller[_0x8e67('0x14')]);module[_0x8e67('0x15')]=router;
\ No newline at end of file
+var _0x68db=['../../config/environment','./intZohoConfiguration.controller','isAuthenticated','index','get','show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','post','create','put','/:id','update','destroy','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x2edf17,_0x5c731d){var _0x3c028a=function(_0x1c5909){while(--_0x1c5909){_0x2edf17['push'](_0x2edf17['shift']());}};_0x3c028a(++_0x5c731d);}(_0x68db,0x191));var _0xb68d=function(_0x11c31a,_0x315228){_0x11c31a=_0x11c31a-0x0;var _0x2b0f2b=_0x68db[_0x11c31a];return _0x2b0f2b;};'use strict';var multer=require('multer');var util=require(_0xb68d('0x0'));var path=require(_0xb68d('0x1'));var timeout=require('connect-timeout');var express=require(_0xb68d('0x2'));var router=express[_0xb68d('0x3')]();var fs_extra=require(_0xb68d('0x4'));var auth=require(_0xb68d('0x5'));var interaction=require(_0xb68d('0x6'));var config=require(_0xb68d('0x7'));var controller=require(_0xb68d('0x8'));router['get']('/',auth[_0xb68d('0x9')](),controller[_0xb68d('0xa')]);router[_0xb68d('0xb')]('/:id',auth['isAuthenticated'](),controller[_0xb68d('0xc')]);router[_0xb68d('0xb')](_0xb68d('0xd'),auth[_0xb68d('0x9')](),controller[_0xb68d('0xe')]);router[_0xb68d('0xb')]('/:id/subjects',auth[_0xb68d('0x9')](),controller[_0xb68d('0xf')]);router[_0xb68d('0xb')](_0xb68d('0x10'),auth[_0xb68d('0x9')](),controller[_0xb68d('0x11')]);router[_0xb68d('0x12')]('/',auth[_0xb68d('0x9')](),controller[_0xb68d('0x13')]);router[_0xb68d('0x14')](_0xb68d('0x15'),auth[_0xb68d('0x9')](),controller[_0xb68d('0x16')]);router['delete'](_0xb68d('0x15'),auth['isAuthenticated'](),controller[_0xb68d('0x17')]);module['exports']=router;
\ No newline at end of file
index 9a1700c..a9f21cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd9e=['STRING','ENUM','lead','contact','contact_lead','sequelize','exports'];(function(_0x1c281b,_0x2d2c67){var _0x533cb2=function(_0x480090){while(--_0x480090){_0x1c281b['push'](_0x1c281b['shift']());}};_0x533cb2(++_0x2d2c67);}(_0xcd9e,0x6e));var _0xecd9=function(_0x52541b,_0x496eb9){_0x52541b=_0x52541b-0x0;var _0x209983=_0xcd9e[_0x52541b];return _0x209983;};'use strict';var Sequelize=require(_0xecd9('0x0'));module[_0xecd9('0x1')]={'name':{'type':Sequelize[_0xecd9('0x2')]},'moduleCreate':{'type':Sequelize[_0xecd9('0x3')](_0xecd9('0x4'),_0xecd9('0x5'),'nothing'),'defaultValue':_0xecd9('0x4')},'moduleSearch':{'type':Sequelize[_0xecd9('0x3')]('contact_lead',_0xecd9('0x5'),_0xecd9('0x4')),'defaultValue':_0xecd9('0x6')},'description':{'type':Sequelize[_0xecd9('0x2')]}};
\ No newline at end of file
+var _0x4bba=['contact_lead','sequelize','exports','STRING','ENUM','lead','contact','nothing'];(function(_0x153a6c,_0x5c3a60){var _0xeca1f2=function(_0x56c3be){while(--_0x56c3be){_0x153a6c['push'](_0x153a6c['shift']());}};_0xeca1f2(++_0x5c3a60);}(_0x4bba,0x131));var _0xa4bb=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0x4bba[_0x47a7d0];return _0xb9bd08;};'use strict';var Sequelize=require(_0xa4bb('0x0'));module[_0xa4bb('0x1')]={'name':{'type':Sequelize[_0xa4bb('0x2')]},'moduleCreate':{'type':Sequelize[_0xa4bb('0x3')](_0xa4bb('0x4'),_0xa4bb('0x5'),_0xa4bb('0x6')),'defaultValue':_0xa4bb('0x4')},'moduleSearch':{'type':Sequelize['ENUM'](_0xa4bb('0x7'),_0xa4bb('0x5'),'lead'),'defaultValue':_0xa4bb('0x7')},'description':{'type':Sequelize[_0xa4bb('0x2')]}};
\ No newline at end of file
index 4f301de..651bf3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f68=['lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','end','sendStatus','stack','name','send','index','map','ZohoConfiguration','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','include','findAll','rows','show','params','includeAll','catch','create','body','find','destroy','getFields','ZohoField','getSubjects','findOne','getDescriptions','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra'];(function(_0x392852,_0x17d03e){var _0x3ec7d7=function(_0x5a408d){while(--_0x5a408d){_0x392852['push'](_0x392852['shift']());}};_0x3ec7d7(++_0x17d03e);}(_0x3f68,0x18f));var _0x83f6=function(_0x34247a,_0xb9fc7){_0x34247a=_0x34247a-0x0;var _0x53aa73=_0x3f68[_0x34247a];return _0x53aa73;};'use strict';var emlformat=require(_0x83f6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x83f6('0x1'));var jsonpatch=require(_0x83f6('0x2'));var rp=require(_0x83f6('0x3'));var moment=require(_0x83f6('0x4'));var BPromise=require(_0x83f6('0x5'));var Mustache=require('mustache');var util=require(_0x83f6('0x6'));var path=require(_0x83f6('0x7'));var sox=require(_0x83f6('0x8'));var csv=require(_0x83f6('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x83f6('0xa'));var _=require(_0x83f6('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x83f6('0xc'));var deskjs=require(_0x83f6('0xd'));var toCsv=require(_0x83f6('0x9'));var querystring=require(_0x83f6('0xe'));var Papa=require(_0x83f6('0xf'));var Redis=require('ioredis');var authService=require(_0x83f6('0x10'));var qs=require(_0x83f6('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x83f6('0x12'));var logger=require('../../config/logger')(_0x83f6('0x13'));var utils=require(_0x83f6('0x14'));var config=require(_0x83f6('0x15'));var licenseUtil=require(_0x83f6('0x16'));var db=require(_0x83f6('0x17'))['db'];function respondWithStatusCode(_0x38cf2e,_0x4f418b){_0x4f418b=_0x4f418b||0xcc;return function(_0x38c42b){if(_0x38c42b){return _0x38cf2e['sendStatus'](_0x4f418b);}return _0x38cf2e[_0x83f6('0x18')](_0x4f418b)['end']();};}function respondWithResult(_0x4060b5,_0x278c90){_0x278c90=_0x278c90||0xc8;return function(_0x35d019){if(_0x35d019){return _0x4060b5[_0x83f6('0x18')](_0x278c90)[_0x83f6('0x19')](_0x35d019);}};}function respondWithFilteredResult(_0x2ae38f,_0xc90f33){return function(_0x3ef143){if(_0x3ef143){var _0x38ac85=typeof _0xc90f33[_0x83f6('0x1a')]===_0x83f6('0x1b')&&typeof _0xc90f33['limit']===_0x83f6('0x1b');var _0x3df7a5=_0x3ef143[_0x83f6('0x1c')];var _0x5469eb=_0x38ac85?0x0:_0xc90f33[_0x83f6('0x1a')];var _0x47018e=_0x38ac85?_0x3ef143[_0x83f6('0x1c')]:_0xc90f33['offset']+_0xc90f33[_0x83f6('0x1d')];var _0x11a8f2;if(_0x47018e>=_0x3df7a5){_0x47018e=_0x3df7a5;_0x11a8f2=0xc8;}else{_0x11a8f2=0xce;}_0x2ae38f[_0x83f6('0x18')](_0x11a8f2);return _0x2ae38f[_0x83f6('0x1e')](_0x83f6('0x1f'),_0x5469eb+'-'+_0x47018e+'/'+_0x3df7a5)[_0x83f6('0x19')](_0x3ef143);}return null;};}function patchUpdates(_0x3daca6){return function(_0x4274cf){try{jsonpatch[_0x83f6('0x20')](_0x4274cf,_0x3daca6,!![]);}catch(_0x41576a){return BPromise['reject'](_0x41576a);}return _0x4274cf[_0x83f6('0x21')]();};}function saveUpdates(_0x99a063,_0x2ad5ab){return function(_0x26bf9a){if(_0x26bf9a){return _0x26bf9a[_0x83f6('0x22')](_0x99a063)[_0x83f6('0x23')](function(_0x2cce20){return _0x2cce20;});}return null;};}function removeEntity(_0x31796b,_0x378f81){return function(_0x35a987){if(_0x35a987){return _0x35a987['destroy']()[_0x83f6('0x23')](function(){_0x31796b[_0x83f6('0x18')](0xcc)[_0x83f6('0x24')]();});}};}function handleEntityNotFound(_0x5527cf,_0x3f9b3f){return function(_0x7e5254){if(!_0x7e5254){_0x5527cf[_0x83f6('0x25')](0x194);}return _0x7e5254;};}function handleError(_0x5d6d39,_0x1bf262){_0x1bf262=_0x1bf262||0x1f4;return function(_0x407972){logger['error'](_0x407972[_0x83f6('0x26')]);if(_0x407972['name']){delete _0x407972[_0x83f6('0x27')];}_0x5d6d39[_0x83f6('0x18')](_0x1bf262)[_0x83f6('0x28')](_0x407972);};}exports[_0x83f6('0x29')]=function(_0xbe0d0d,_0x2351ca){var _0x4487b1={},_0x544b8d={},_0x5c10b8={'count':0x0,'rows':[]};var _0x2fbe80=_[_0x83f6('0x2a')](db[_0x83f6('0x2b')][_0x83f6('0x2c')],function(_0x1f2425){return{'name':_0x1f2425[_0x83f6('0x2d')],'type':_0x1f2425[_0x83f6('0x2e')][_0x83f6('0x2f')]};});_0x544b8d['model']=_[_0x83f6('0x2a')](_0x2fbe80,_0x83f6('0x27'));_0x544b8d[_0x83f6('0x30')]=_[_0x83f6('0x31')](_0xbe0d0d['query']);_0x544b8d[_0x83f6('0x32')]=_['intersection'](_0x544b8d['model'],_0x544b8d[_0x83f6('0x30')]);_0x4487b1['attributes']=_[_0x83f6('0x33')](_0x544b8d[_0x83f6('0x34')],qs[_0x83f6('0x35')](_0xbe0d0d['query']['fields']));_0x4487b1['attributes']=_0x4487b1[_0x83f6('0x36')][_0x83f6('0x37')]?_0x4487b1['attributes']:_0x544b8d['model'];if(!_0xbe0d0d[_0x83f6('0x30')][_0x83f6('0x38')](_0x83f6('0x39'))){_0x4487b1[_0x83f6('0x1d')]=qs[_0x83f6('0x1d')](_0xbe0d0d[_0x83f6('0x30')]['limit']);_0x4487b1[_0x83f6('0x1a')]=qs[_0x83f6('0x1a')](_0xbe0d0d[_0x83f6('0x30')][_0x83f6('0x1a')]);}_0x4487b1[_0x83f6('0x3a')]=qs[_0x83f6('0x3b')](_0xbe0d0d[_0x83f6('0x30')][_0x83f6('0x3b')]);_0x4487b1[_0x83f6('0x3c')]=qs[_0x83f6('0x32')](_[_0x83f6('0x3d')](_0xbe0d0d['query'],_0x544b8d[_0x83f6('0x32')]),_0x2fbe80);if(_0xbe0d0d['query']['filter']){_0x4487b1[_0x83f6('0x3c')]=_[_0x83f6('0x3e')](_0x4487b1['where'],{'$or':_[_0x83f6('0x2a')](_0x2fbe80,function(_0x1cd61b){if(_0x1cd61b['type']!==_0x83f6('0x3f')){var _0x5cff0d={};_0x5cff0d[_0x1cd61b[_0x83f6('0x27')]]={'$like':'%'+_0xbe0d0d[_0x83f6('0x30')][_0x83f6('0x40')]+'%'};return _0x5cff0d;}})});}_0x4487b1=_[_0x83f6('0x3e')]({},_0x4487b1,_0xbe0d0d[_0x83f6('0x41')]);var _0x57c817={'where':_0x4487b1['where']};return db['ZohoConfiguration'][_0x83f6('0x1c')](_0x57c817)[_0x83f6('0x23')](function(_0x336ff1){_0x5c10b8[_0x83f6('0x1c')]=_0x336ff1;if(_0xbe0d0d[_0x83f6('0x30')]['includeAll']){_0x4487b1[_0x83f6('0x42')]=[{'all':!![]}];}return db[_0x83f6('0x2b')][_0x83f6('0x43')](_0x4487b1);})[_0x83f6('0x23')](function(_0x71a651){_0x5c10b8[_0x83f6('0x44')]=_0x71a651;return _0x5c10b8;})['then'](respondWithFilteredResult(_0x2351ca,_0x4487b1))['catch'](handleError(_0x2351ca,null));};exports[_0x83f6('0x45')]=function(_0x1b3f34,_0x142d3b){var _0x29e5a4={'raw':![],'where':{'id':_0x1b3f34[_0x83f6('0x46')]['id']}},_0xcab13b={};_0xcab13b['model']=_[_0x83f6('0x31')](db[_0x83f6('0x2b')]['rawAttributes']);_0xcab13b['query']=_[_0x83f6('0x31')](_0x1b3f34[_0x83f6('0x30')]);_0xcab13b[_0x83f6('0x32')]=_[_0x83f6('0x33')](_0xcab13b[_0x83f6('0x34')],_0xcab13b[_0x83f6('0x30')]);_0x29e5a4[_0x83f6('0x36')]=_[_0x83f6('0x33')](_0xcab13b[_0x83f6('0x34')],qs[_0x83f6('0x35')](_0x1b3f34['query'][_0x83f6('0x35')]));_0x29e5a4[_0x83f6('0x36')]=_0x29e5a4[_0x83f6('0x36')][_0x83f6('0x37')]?_0x29e5a4[_0x83f6('0x36')]:_0xcab13b[_0x83f6('0x34')];if(_0x1b3f34[_0x83f6('0x30')][_0x83f6('0x47')]){_0x29e5a4[_0x83f6('0x42')]=[{'all':!![]}];}_0x29e5a4=_[_0x83f6('0x3e')]({},_0x29e5a4,_0x1b3f34[_0x83f6('0x41')]);return db[_0x83f6('0x2b')]['find'](_0x29e5a4)[_0x83f6('0x23')](handleEntityNotFound(_0x142d3b,null))[_0x83f6('0x23')](respondWithResult(_0x142d3b,null))[_0x83f6('0x48')](handleError(_0x142d3b,null));};exports[_0x83f6('0x49')]=function(_0x57c0e4,_0x46c67d){return db[_0x83f6('0x2b')]['create'](_0x57c0e4[_0x83f6('0x4a')],{})[_0x83f6('0x23')](respondWithResult(_0x46c67d,0xc9))[_0x83f6('0x48')](handleError(_0x46c67d,null));};exports[_0x83f6('0x22')]=function(_0x53efca,_0x2f5a38){if(_0x53efca['body']['id']){delete _0x53efca['body']['id'];}return db['ZohoConfiguration'][_0x83f6('0x4b')]({'where':{'id':_0x53efca['params']['id']}})[_0x83f6('0x23')](handleEntityNotFound(_0x2f5a38,null))[_0x83f6('0x23')](saveUpdates(_0x53efca['body'],null))[_0x83f6('0x23')](respondWithResult(_0x2f5a38,null))[_0x83f6('0x48')](handleError(_0x2f5a38,null));};exports[_0x83f6('0x4c')]=function(_0x12ef52,_0x56f508){return db[_0x83f6('0x2b')][_0x83f6('0x4b')]({'where':{'id':_0x12ef52[_0x83f6('0x46')]['id']}})['then'](handleEntityNotFound(_0x56f508,null))['then'](removeEntity(_0x56f508,null))[_0x83f6('0x48')](handleError(_0x56f508,null));};exports[_0x83f6('0x4d')]=function(_0x60eaa8,_0x37ccb3,_0x48f32b){var _0x443be6={};var _0x58e1b4={};var _0x15605f;var _0x5ed6c9;return db[_0x83f6('0x2b')]['findOne']({'where':{'id':_0x60eaa8[_0x83f6('0x46')]['id']}})[_0x83f6('0x23')](handleEntityNotFound(_0x37ccb3,null))['then'](function(_0x348801){if(_0x348801){_0x15605f=_0x348801;_0x58e1b4[_0x83f6('0x34')]=_[_0x83f6('0x31')](db[_0x83f6('0x4e')][_0x83f6('0x2c')]);_0x58e1b4[_0x83f6('0x30')]=_['keys'](_0x60eaa8[_0x83f6('0x30')]);_0x58e1b4[_0x83f6('0x32')]=_[_0x83f6('0x33')](_0x58e1b4[_0x83f6('0x34')],_0x58e1b4[_0x83f6('0x30')]);_0x443be6['attributes']=_['intersection'](_0x58e1b4[_0x83f6('0x34')],qs[_0x83f6('0x35')](_0x60eaa8['query']['fields']));_0x443be6[_0x83f6('0x36')]=_0x443be6['attributes'][_0x83f6('0x37')]?_0x443be6['attributes']:_0x58e1b4[_0x83f6('0x34')];_0x443be6[_0x83f6('0x3a')]=qs[_0x83f6('0x3b')](_0x60eaa8[_0x83f6('0x30')][_0x83f6('0x3b')]);_0x443be6['where']=qs['filters'](_[_0x83f6('0x3d')](_0x60eaa8['query'],_0x58e1b4[_0x83f6('0x32')]));if(_0x60eaa8[_0x83f6('0x30')][_0x83f6('0x40')]){_0x443be6[_0x83f6('0x3c')]=_[_0x83f6('0x3e')](_0x443be6[_0x83f6('0x3c')],{'$or':_[_0x83f6('0x2a')](_0x443be6[_0x83f6('0x36')],function(_0x17c6d9){var _0x3b6d82={};_0x3b6d82[_0x17c6d9]={'$like':'%'+_0x60eaa8[_0x83f6('0x30')]['filter']+'%'};return _0x3b6d82;})});}_0x443be6=_['merge']({},_0x443be6,_0x60eaa8[_0x83f6('0x41')]);return _0x15605f[_0x83f6('0x4d')](_0x443be6);}})[_0x83f6('0x23')](function(_0x160052){if(_0x160052){_0x5ed6c9=_0x160052[_0x83f6('0x37')];if(!_0x60eaa8[_0x83f6('0x30')]['hasOwnProperty'](_0x83f6('0x39'))){_0x443be6[_0x83f6('0x1d')]=qs[_0x83f6('0x1d')](_0x60eaa8['query'][_0x83f6('0x1d')]);_0x443be6[_0x83f6('0x1a')]=qs[_0x83f6('0x1a')](_0x60eaa8['query'][_0x83f6('0x1a')]);}return _0x15605f['getFields'](_0x443be6);}})[_0x83f6('0x23')](function(_0x4eea05){if(_0x4eea05){return _0x4eea05?{'count':_0x5ed6c9,'rows':_0x4eea05}:null;}})[_0x83f6('0x23')](respondWithResult(_0x37ccb3,null))[_0x83f6('0x48')](handleError(_0x37ccb3,null));};exports[_0x83f6('0x4f')]=function(_0x1d5514,_0x360a7c,_0x1ff482){var _0x49a5e9={};var _0x1dcffe={};var _0x5e92f5;var _0x271dfc;return db[_0x83f6('0x2b')][_0x83f6('0x50')]({'where':{'id':_0x1d5514['params']['id']}})[_0x83f6('0x23')](handleEntityNotFound(_0x360a7c,null))[_0x83f6('0x23')](function(_0x18c9a4){if(_0x18c9a4){_0x5e92f5=_0x18c9a4;_0x1dcffe[_0x83f6('0x34')]=_[_0x83f6('0x31')](db[_0x83f6('0x4e')][_0x83f6('0x2c')]);_0x1dcffe['query']=_['keys'](_0x1d5514[_0x83f6('0x30')]);_0x1dcffe[_0x83f6('0x32')]=_[_0x83f6('0x33')](_0x1dcffe['model'],_0x1dcffe['query']);_0x49a5e9['attributes']=_[_0x83f6('0x33')](_0x1dcffe[_0x83f6('0x34')],qs['fields'](_0x1d5514[_0x83f6('0x30')][_0x83f6('0x35')]));_0x49a5e9[_0x83f6('0x36')]=_0x49a5e9[_0x83f6('0x36')][_0x83f6('0x37')]?_0x49a5e9[_0x83f6('0x36')]:_0x1dcffe['model'];_0x49a5e9['order']=qs['sort'](_0x1d5514[_0x83f6('0x30')]['sort']);_0x49a5e9['where']=qs[_0x83f6('0x32')](_['pick'](_0x1d5514[_0x83f6('0x30')],_0x1dcffe['filters']));if(_0x1d5514['query']['filter']){_0x49a5e9['where']=_['merge'](_0x49a5e9[_0x83f6('0x3c')],{'$or':_[_0x83f6('0x2a')](_0x49a5e9[_0x83f6('0x36')],function(_0x45fd73){var _0x1cd713={};_0x1cd713[_0x45fd73]={'$like':'%'+_0x1d5514[_0x83f6('0x30')][_0x83f6('0x40')]+'%'};return _0x1cd713;})});}_0x49a5e9=_['merge']({},_0x49a5e9,_0x1d5514[_0x83f6('0x41')]);return _0x5e92f5['getSubjects'](_0x49a5e9);}})[_0x83f6('0x23')](function(_0x2eca9b){if(_0x2eca9b){_0x271dfc=_0x2eca9b[_0x83f6('0x37')];if(!_0x1d5514['query'][_0x83f6('0x38')](_0x83f6('0x39'))){_0x49a5e9[_0x83f6('0x1d')]=qs[_0x83f6('0x1d')](_0x1d5514['query'][_0x83f6('0x1d')]);_0x49a5e9[_0x83f6('0x1a')]=qs['offset'](_0x1d5514['query']['offset']);}return _0x5e92f5[_0x83f6('0x4f')](_0x49a5e9);}})[_0x83f6('0x23')](function(_0xdd3f67){if(_0xdd3f67){return _0xdd3f67?{'count':_0x271dfc,'rows':_0xdd3f67}:null;}})[_0x83f6('0x23')](respondWithResult(_0x360a7c,null))[_0x83f6('0x48')](handleError(_0x360a7c,null));};exports[_0x83f6('0x51')]=function(_0x317e52,_0x401a75,_0x26586f){var _0x52646e={};var _0x480f7e={};var _0xf1b5e4;var _0x4b2e96;return db[_0x83f6('0x2b')]['findOne']({'where':{'id':_0x317e52[_0x83f6('0x46')]['id']}})[_0x83f6('0x23')](handleEntityNotFound(_0x401a75,null))[_0x83f6('0x23')](function(_0x4f2ef1){if(_0x4f2ef1){_0xf1b5e4=_0x4f2ef1;_0x480f7e[_0x83f6('0x34')]=_[_0x83f6('0x31')](db[_0x83f6('0x4e')][_0x83f6('0x2c')]);_0x480f7e['query']=_[_0x83f6('0x31')](_0x317e52[_0x83f6('0x30')]);_0x480f7e[_0x83f6('0x32')]=_[_0x83f6('0x33')](_0x480f7e[_0x83f6('0x34')],_0x480f7e[_0x83f6('0x30')]);_0x52646e[_0x83f6('0x36')]=_[_0x83f6('0x33')](_0x480f7e[_0x83f6('0x34')],qs[_0x83f6('0x35')](_0x317e52[_0x83f6('0x30')][_0x83f6('0x35')]));_0x52646e[_0x83f6('0x36')]=_0x52646e[_0x83f6('0x36')][_0x83f6('0x37')]?_0x52646e['attributes']:_0x480f7e[_0x83f6('0x34')];_0x52646e[_0x83f6('0x3a')]=qs[_0x83f6('0x3b')](_0x317e52[_0x83f6('0x30')]['sort']);_0x52646e[_0x83f6('0x3c')]=qs[_0x83f6('0x32')](_[_0x83f6('0x3d')](_0x317e52[_0x83f6('0x30')],_0x480f7e[_0x83f6('0x32')]));if(_0x317e52[_0x83f6('0x30')]['filter']){_0x52646e[_0x83f6('0x3c')]=_[_0x83f6('0x3e')](_0x52646e[_0x83f6('0x3c')],{'$or':_[_0x83f6('0x2a')](_0x52646e[_0x83f6('0x36')],function(_0x191e19){var _0x1144c2={};_0x1144c2[_0x191e19]={'$like':'%'+_0x317e52['query'][_0x83f6('0x40')]+'%'};return _0x1144c2;})});}_0x52646e=_[_0x83f6('0x3e')]({},_0x52646e,_0x317e52[_0x83f6('0x41')]);return _0xf1b5e4[_0x83f6('0x51')](_0x52646e);}})[_0x83f6('0x23')](function(_0xa49282){if(_0xa49282){_0x4b2e96=_0xa49282[_0x83f6('0x37')];if(!_0x317e52['query'][_0x83f6('0x38')]('nolimit')){_0x52646e['limit']=qs[_0x83f6('0x1d')](_0x317e52[_0x83f6('0x30')][_0x83f6('0x1d')]);_0x52646e[_0x83f6('0x1a')]=qs[_0x83f6('0x1a')](_0x317e52[_0x83f6('0x30')][_0x83f6('0x1a')]);}return _0xf1b5e4['getDescriptions'](_0x52646e);}})[_0x83f6('0x23')](function(_0x1b8094){if(_0x1b8094){return _0x1b8094?{'count':_0x4b2e96,'rows':_0x1b8094}:null;}})[_0x83f6('0x23')](respondWithResult(_0x401a75,null))['catch'](handleError(_0x401a75,null));};
\ No newline at end of file
+var _0x76f9=['stack','name','index','ZohoConfiguration','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','limit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','create','body','find','getFields','findOne','map','hasOwnProperty','getSubjects','ZohoField','getDescriptions','eml-format','moment','bluebird','mustache','path','to-csv','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','apply','update','then','destroy'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x76f9,0x101));var _0x976f=function(_0x46d865,_0x2d378a){_0x46d865=_0x46d865-0x0;var _0x41c343=_0x76f9[_0x46d865];return _0x41c343;};'use strict';var emlformat=require(_0x976f('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x976f('0x1'));var BPromise=require(_0x976f('0x2'));var Mustache=require(_0x976f('0x3'));var util=require('util');var path=require(_0x976f('0x4'));var sox=require('sox');var csv=require(_0x976f('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x976f('0x6'));var _=require(_0x976f('0x7'));var squel=require(_0x976f('0x8'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x976f('0x9'));var toCsv=require(_0x976f('0x5'));var querystring=require(_0x976f('0xa'));var Papa=require(_0x976f('0xb'));var Redis=require(_0x976f('0xc'));var authService=require(_0x976f('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x976f('0xe'));var hardwareService=require(_0x976f('0xf'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x976f('0x10'));var licenseUtil=require(_0x976f('0x11'));var db=require(_0x976f('0x12'))['db'];function respondWithStatusCode(_0x15e2e,_0x800e22){_0x800e22=_0x800e22||0xcc;return function(_0x99fb58){if(_0x99fb58){return _0x15e2e[_0x976f('0x13')](_0x800e22);}return _0x15e2e[_0x976f('0x14')](_0x800e22)[_0x976f('0x15')]();};}function respondWithResult(_0x31fef8,_0x54e36d){_0x54e36d=_0x54e36d||0xc8;return function(_0x21be12){if(_0x21be12){return _0x31fef8[_0x976f('0x14')](_0x54e36d)[_0x976f('0x16')](_0x21be12);}};}function respondWithFilteredResult(_0xc00f63,_0x43225b){return function(_0x3ce150){if(_0x3ce150){var _0x2ca449=typeof _0x43225b[_0x976f('0x17')]===_0x976f('0x18')&&typeof _0x43225b['limit']==='undefined';var _0x70b9ce=_0x3ce150[_0x976f('0x19')];var _0x1af892=_0x2ca449?0x0:_0x43225b[_0x976f('0x17')];var _0x6288de=_0x2ca449?_0x3ce150['count']:_0x43225b['offset']+_0x43225b['limit'];var _0x51be77;if(_0x6288de>=_0x70b9ce){_0x6288de=_0x70b9ce;_0x51be77=0xc8;}else{_0x51be77=0xce;}_0xc00f63['status'](_0x51be77);return _0xc00f63[_0x976f('0x1a')]('Content-Range',_0x1af892+'-'+_0x6288de+'/'+_0x70b9ce)[_0x976f('0x16')](_0x3ce150);}return null;};}function patchUpdates(_0x1e3d06){return function(_0x1e7a15){try{jsonpatch[_0x976f('0x1b')](_0x1e7a15,_0x1e3d06,!![]);}catch(_0x27f3cb){return BPromise['reject'](_0x27f3cb);}return _0x1e7a15['save']();};}function saveUpdates(_0x48e1a1,_0x4ad148){return function(_0xe53c67){if(_0xe53c67){return _0xe53c67[_0x976f('0x1c')](_0x48e1a1)[_0x976f('0x1d')](function(_0x3936b9){return _0x3936b9;});}return null;};}function removeEntity(_0x489473,_0x439640){return function(_0x286d7c){if(_0x286d7c){return _0x286d7c[_0x976f('0x1e')]()['then'](function(){_0x489473[_0x976f('0x14')](0xcc)[_0x976f('0x15')]();});}};}function handleEntityNotFound(_0x1ddf52,_0x113f6b){return function(_0x3dbc5b){if(!_0x3dbc5b){_0x1ddf52[_0x976f('0x13')](0x194);}return _0x3dbc5b;};}function handleError(_0x2b3fa8,_0xd50a67){_0xd50a67=_0xd50a67||0x1f4;return function(_0xd5c45e){logger['error'](_0xd5c45e[_0x976f('0x1f')]);if(_0xd5c45e['name']){delete _0xd5c45e[_0x976f('0x20')];}_0x2b3fa8['status'](_0xd50a67)['send'](_0xd5c45e);};}exports[_0x976f('0x21')]=function(_0x3cb95c,_0x17d201){var _0x2e35ad={},_0x5d800f={},_0x3209cf={'count':0x0,'rows':[]};var _0x2967b0=_['map'](db[_0x976f('0x22')][_0x976f('0x23')],function(_0x163976){return{'name':_0x163976[_0x976f('0x24')],'type':_0x163976[_0x976f('0x25')]['key']};});_0x5d800f[_0x976f('0x26')]=_['map'](_0x2967b0,_0x976f('0x20'));_0x5d800f[_0x976f('0x27')]=_[_0x976f('0x28')](_0x3cb95c[_0x976f('0x27')]);_0x5d800f[_0x976f('0x29')]=_[_0x976f('0x2a')](_0x5d800f[_0x976f('0x26')],_0x5d800f[_0x976f('0x27')]);_0x2e35ad[_0x976f('0x2b')]=_[_0x976f('0x2a')](_0x5d800f[_0x976f('0x26')],qs[_0x976f('0x2c')](_0x3cb95c['query'][_0x976f('0x2c')]));_0x2e35ad[_0x976f('0x2b')]=_0x2e35ad[_0x976f('0x2b')][_0x976f('0x2d')]?_0x2e35ad[_0x976f('0x2b')]:_0x5d800f[_0x976f('0x26')];if(!_0x3cb95c['query']['hasOwnProperty'](_0x976f('0x2e'))){_0x2e35ad[_0x976f('0x2f')]=qs[_0x976f('0x2f')](_0x3cb95c[_0x976f('0x27')][_0x976f('0x2f')]);_0x2e35ad[_0x976f('0x17')]=qs[_0x976f('0x17')](_0x3cb95c[_0x976f('0x27')][_0x976f('0x17')]);}_0x2e35ad[_0x976f('0x30')]=qs[_0x976f('0x31')](_0x3cb95c['query']['sort']);_0x2e35ad[_0x976f('0x32')]=qs[_0x976f('0x29')](_[_0x976f('0x33')](_0x3cb95c[_0x976f('0x27')],_0x5d800f[_0x976f('0x29')]),_0x2967b0);if(_0x3cb95c[_0x976f('0x27')]['filter']){_0x2e35ad[_0x976f('0x32')]=_['merge'](_0x2e35ad['where'],{'$or':_['map'](_0x2967b0,function(_0x50228d){if(_0x50228d[_0x976f('0x25')]!=='VIRTUAL'){var _0x7f7c95={};_0x7f7c95[_0x50228d[_0x976f('0x20')]]={'$like':'%'+_0x3cb95c['query'][_0x976f('0x34')]+'%'};return _0x7f7c95;}})});}_0x2e35ad=_[_0x976f('0x35')]({},_0x2e35ad,_0x3cb95c[_0x976f('0x36')]);var _0x474556={'where':_0x2e35ad[_0x976f('0x32')]};return db[_0x976f('0x22')][_0x976f('0x19')](_0x474556)[_0x976f('0x1d')](function(_0x3c2165){_0x3209cf[_0x976f('0x19')]=_0x3c2165;if(_0x3cb95c[_0x976f('0x27')][_0x976f('0x37')]){_0x2e35ad[_0x976f('0x38')]=[{'all':!![]}];}return db[_0x976f('0x22')][_0x976f('0x39')](_0x2e35ad);})[_0x976f('0x1d')](function(_0x49a05e){_0x3209cf[_0x976f('0x3a')]=_0x49a05e;return _0x3209cf;})[_0x976f('0x1d')](respondWithFilteredResult(_0x17d201,_0x2e35ad))[_0x976f('0x3b')](handleError(_0x17d201,null));};exports[_0x976f('0x3c')]=function(_0x1eb627,_0x197800){var _0x312a02={'raw':![],'where':{'id':_0x1eb627[_0x976f('0x3d')]['id']}},_0x20a702={};_0x20a702[_0x976f('0x26')]=_[_0x976f('0x28')](db['ZohoConfiguration'][_0x976f('0x23')]);_0x20a702[_0x976f('0x27')]=_[_0x976f('0x28')](_0x1eb627[_0x976f('0x27')]);_0x20a702[_0x976f('0x29')]=_[_0x976f('0x2a')](_0x20a702[_0x976f('0x26')],_0x20a702[_0x976f('0x27')]);_0x312a02[_0x976f('0x2b')]=_[_0x976f('0x2a')](_0x20a702['model'],qs['fields'](_0x1eb627[_0x976f('0x27')]['fields']));_0x312a02[_0x976f('0x2b')]=_0x312a02[_0x976f('0x2b')][_0x976f('0x2d')]?_0x312a02[_0x976f('0x2b')]:_0x20a702[_0x976f('0x26')];if(_0x1eb627['query'][_0x976f('0x37')]){_0x312a02['include']=[{'all':!![]}];}_0x312a02=_[_0x976f('0x35')]({},_0x312a02,_0x1eb627['options']);return db[_0x976f('0x22')]['find'](_0x312a02)[_0x976f('0x1d')](handleEntityNotFound(_0x197800,null))[_0x976f('0x1d')](respondWithResult(_0x197800,null))[_0x976f('0x3b')](handleError(_0x197800,null));};exports[_0x976f('0x3e')]=function(_0xbf57cf,_0x3b27cd){return db['ZohoConfiguration'][_0x976f('0x3e')](_0xbf57cf[_0x976f('0x3f')],{})['then'](respondWithResult(_0x3b27cd,0xc9))[_0x976f('0x3b')](handleError(_0x3b27cd,null));};exports[_0x976f('0x1c')]=function(_0x5e3f2c,_0x2ac774){if(_0x5e3f2c[_0x976f('0x3f')]['id']){delete _0x5e3f2c[_0x976f('0x3f')]['id'];}return db['ZohoConfiguration'][_0x976f('0x40')]({'where':{'id':_0x5e3f2c['params']['id']}})[_0x976f('0x1d')](handleEntityNotFound(_0x2ac774,null))[_0x976f('0x1d')](saveUpdates(_0x5e3f2c[_0x976f('0x3f')],null))[_0x976f('0x1d')](respondWithResult(_0x2ac774,null))[_0x976f('0x3b')](handleError(_0x2ac774,null));};exports['destroy']=function(_0x32e723,_0x44735e){return db[_0x976f('0x22')][_0x976f('0x40')]({'where':{'id':_0x32e723[_0x976f('0x3d')]['id']}})['then'](handleEntityNotFound(_0x44735e,null))[_0x976f('0x1d')](removeEntity(_0x44735e,null))[_0x976f('0x3b')](handleError(_0x44735e,null));};exports[_0x976f('0x41')]=function(_0x508c5a,_0x4e130a,_0x2ef3fb){var _0x3a2e60={};var _0x76699d={};var _0x147385;var _0x1cfd57;return db[_0x976f('0x22')][_0x976f('0x42')]({'where':{'id':_0x508c5a[_0x976f('0x3d')]['id']}})[_0x976f('0x1d')](handleEntityNotFound(_0x4e130a,null))['then'](function(_0x149e68){if(_0x149e68){_0x147385=_0x149e68;_0x76699d[_0x976f('0x26')]=_[_0x976f('0x28')](db['ZohoField'][_0x976f('0x23')]);_0x76699d[_0x976f('0x27')]=_['keys'](_0x508c5a['query']);_0x76699d[_0x976f('0x29')]=_['intersection'](_0x76699d[_0x976f('0x26')],_0x76699d[_0x976f('0x27')]);_0x3a2e60[_0x976f('0x2b')]=_[_0x976f('0x2a')](_0x76699d[_0x976f('0x26')],qs[_0x976f('0x2c')](_0x508c5a['query'][_0x976f('0x2c')]));_0x3a2e60[_0x976f('0x2b')]=_0x3a2e60[_0x976f('0x2b')][_0x976f('0x2d')]?_0x3a2e60['attributes']:_0x76699d[_0x976f('0x26')];_0x3a2e60[_0x976f('0x30')]=qs[_0x976f('0x31')](_0x508c5a[_0x976f('0x27')]['sort']);_0x3a2e60[_0x976f('0x32')]=qs['filters'](_[_0x976f('0x33')](_0x508c5a[_0x976f('0x27')],_0x76699d[_0x976f('0x29')]));if(_0x508c5a['query']['filter']){_0x3a2e60['where']=_[_0x976f('0x35')](_0x3a2e60[_0x976f('0x32')],{'$or':_[_0x976f('0x43')](_0x3a2e60[_0x976f('0x2b')],function(_0x3c20f1){var _0x50ace7={};_0x50ace7[_0x3c20f1]={'$like':'%'+_0x508c5a[_0x976f('0x27')]['filter']+'%'};return _0x50ace7;})});}_0x3a2e60=_[_0x976f('0x35')]({},_0x3a2e60,_0x508c5a[_0x976f('0x36')]);return _0x147385[_0x976f('0x41')](_0x3a2e60);}})[_0x976f('0x1d')](function(_0xe5d99){if(_0xe5d99){_0x1cfd57=_0xe5d99[_0x976f('0x2d')];if(!_0x508c5a[_0x976f('0x27')][_0x976f('0x44')](_0x976f('0x2e'))){_0x3a2e60[_0x976f('0x2f')]=qs[_0x976f('0x2f')](_0x508c5a['query'][_0x976f('0x2f')]);_0x3a2e60[_0x976f('0x17')]=qs[_0x976f('0x17')](_0x508c5a['query'][_0x976f('0x17')]);}return _0x147385[_0x976f('0x41')](_0x3a2e60);}})[_0x976f('0x1d')](function(_0x113871){if(_0x113871){return _0x113871?{'count':_0x1cfd57,'rows':_0x113871}:null;}})['then'](respondWithResult(_0x4e130a,null))[_0x976f('0x3b')](handleError(_0x4e130a,null));};exports[_0x976f('0x45')]=function(_0x4c11d3,_0x998170,_0x1fc309){var _0x439896={};var _0x4df6df={};var _0x1c7d20;var _0x273752;return db[_0x976f('0x22')][_0x976f('0x42')]({'where':{'id':_0x4c11d3[_0x976f('0x3d')]['id']}})[_0x976f('0x1d')](handleEntityNotFound(_0x998170,null))[_0x976f('0x1d')](function(_0x2a6d82){if(_0x2a6d82){_0x1c7d20=_0x2a6d82;_0x4df6df['model']=_[_0x976f('0x28')](db[_0x976f('0x46')][_0x976f('0x23')]);_0x4df6df['query']=_[_0x976f('0x28')](_0x4c11d3[_0x976f('0x27')]);_0x4df6df['filters']=_[_0x976f('0x2a')](_0x4df6df[_0x976f('0x26')],_0x4df6df[_0x976f('0x27')]);_0x439896[_0x976f('0x2b')]=_['intersection'](_0x4df6df[_0x976f('0x26')],qs[_0x976f('0x2c')](_0x4c11d3[_0x976f('0x27')][_0x976f('0x2c')]));_0x439896['attributes']=_0x439896[_0x976f('0x2b')][_0x976f('0x2d')]?_0x439896[_0x976f('0x2b')]:_0x4df6df[_0x976f('0x26')];_0x439896[_0x976f('0x30')]=qs[_0x976f('0x31')](_0x4c11d3['query'][_0x976f('0x31')]);_0x439896[_0x976f('0x32')]=qs[_0x976f('0x29')](_['pick'](_0x4c11d3[_0x976f('0x27')],_0x4df6df[_0x976f('0x29')]));if(_0x4c11d3['query']['filter']){_0x439896[_0x976f('0x32')]=_[_0x976f('0x35')](_0x439896['where'],{'$or':_[_0x976f('0x43')](_0x439896['attributes'],function(_0x565b40){var _0xd42999={};_0xd42999[_0x565b40]={'$like':'%'+_0x4c11d3[_0x976f('0x27')][_0x976f('0x34')]+'%'};return _0xd42999;})});}_0x439896=_['merge']({},_0x439896,_0x4c11d3['options']);return _0x1c7d20[_0x976f('0x45')](_0x439896);}})[_0x976f('0x1d')](function(_0x39619e){if(_0x39619e){_0x273752=_0x39619e['length'];if(!_0x4c11d3['query'][_0x976f('0x44')]('nolimit')){_0x439896[_0x976f('0x2f')]=qs[_0x976f('0x2f')](_0x4c11d3['query'][_0x976f('0x2f')]);_0x439896[_0x976f('0x17')]=qs[_0x976f('0x17')](_0x4c11d3['query'][_0x976f('0x17')]);}return _0x1c7d20['getSubjects'](_0x439896);}})[_0x976f('0x1d')](function(_0x25e803){if(_0x25e803){return _0x25e803?{'count':_0x273752,'rows':_0x25e803}:null;}})[_0x976f('0x1d')](respondWithResult(_0x998170,null))[_0x976f('0x3b')](handleError(_0x998170,null));};exports['getDescriptions']=function(_0x4f79ef,_0x443dc8,_0x4b8b66){var _0x3257aa={};var _0x424072={};var _0x3f4897;var _0x230c41;return db[_0x976f('0x22')][_0x976f('0x42')]({'where':{'id':_0x4f79ef[_0x976f('0x3d')]['id']}})[_0x976f('0x1d')](handleEntityNotFound(_0x443dc8,null))['then'](function(_0x4d24a1){if(_0x4d24a1){_0x3f4897=_0x4d24a1;_0x424072[_0x976f('0x26')]=_[_0x976f('0x28')](db[_0x976f('0x46')][_0x976f('0x23')]);_0x424072[_0x976f('0x27')]=_[_0x976f('0x28')](_0x4f79ef[_0x976f('0x27')]);_0x424072['filters']=_[_0x976f('0x2a')](_0x424072['model'],_0x424072[_0x976f('0x27')]);_0x3257aa['attributes']=_[_0x976f('0x2a')](_0x424072[_0x976f('0x26')],qs[_0x976f('0x2c')](_0x4f79ef[_0x976f('0x27')][_0x976f('0x2c')]));_0x3257aa['attributes']=_0x3257aa[_0x976f('0x2b')][_0x976f('0x2d')]?_0x3257aa[_0x976f('0x2b')]:_0x424072['model'];_0x3257aa[_0x976f('0x30')]=qs[_0x976f('0x31')](_0x4f79ef[_0x976f('0x27')][_0x976f('0x31')]);_0x3257aa[_0x976f('0x32')]=qs[_0x976f('0x29')](_[_0x976f('0x33')](_0x4f79ef[_0x976f('0x27')],_0x424072['filters']));if(_0x4f79ef['query']['filter']){_0x3257aa[_0x976f('0x32')]=_[_0x976f('0x35')](_0x3257aa['where'],{'$or':_[_0x976f('0x43')](_0x3257aa[_0x976f('0x2b')],function(_0x5a196f){var _0x2eb12c={};_0x2eb12c[_0x5a196f]={'$like':'%'+_0x4f79ef['query'][_0x976f('0x34')]+'%'};return _0x2eb12c;})});}_0x3257aa=_[_0x976f('0x35')]({},_0x3257aa,_0x4f79ef[_0x976f('0x36')]);return _0x3f4897[_0x976f('0x47')](_0x3257aa);}})[_0x976f('0x1d')](function(_0x4b9cd2){if(_0x4b9cd2){_0x230c41=_0x4b9cd2['length'];if(!_0x4f79ef[_0x976f('0x27')]['hasOwnProperty'](_0x976f('0x2e'))){_0x3257aa['limit']=qs[_0x976f('0x2f')](_0x4f79ef[_0x976f('0x27')][_0x976f('0x2f')]);_0x3257aa[_0x976f('0x17')]=qs[_0x976f('0x17')](_0x4f79ef[_0x976f('0x27')][_0x976f('0x17')]);}return _0x3f4897[_0x976f('0x47')](_0x3257aa);}})[_0x976f('0x1d')](function(_0x4643c8){if(_0x4643c8){return _0x4643c8?{'count':_0x230c41,'rows':_0x4643c8}:null;}})[_0x976f('0x1d')](respondWithResult(_0x443dc8,null))['catch'](handleError(_0x443dc8,null));};
\ No newline at end of file
index 3da84e3..c32dc7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9459=['ZohoConfiguration','int_zoho_configurations','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZohoConfiguration.attributes','exports','define'];(function(_0x4a6cf8,_0x5534ef){var _0x22205e=function(_0x3f4d0d){while(--_0x3f4d0d){_0x4a6cf8['push'](_0x4a6cf8['shift']());}};_0x22205e(++_0x5534ef);}(_0x9459,0x11a));var _0x9945=function(_0x53091b,_0x324058){_0x53091b=_0x53091b-0x0;var _0xc7d5d5=_0x9459[_0x53091b];return _0xc7d5d5;};'use strict';var _=require(_0x9945('0x0'));var util=require(_0x9945('0x1'));var logger=require(_0x9945('0x2'))('api');var moment=require(_0x9945('0x3'));var BPromise=require(_0x9945('0x4'));var rp=require(_0x9945('0x5'));var fs=require('fs');var path=require(_0x9945('0x6'));var rimraf=require(_0x9945('0x7'));var config=require(_0x9945('0x8'));var attributes=require(_0x9945('0x9'));module[_0x9945('0xa')]=function(_0x8c6151,_0x5e37d1){return _0x8c6151[_0x9945('0xb')](_0x9945('0xc'),attributes,{'tableName':_0x9945('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xba87=['int_zoho_configurations','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intZohoConfiguration.attributes','exports','define'];(function(_0x29b609,_0x19d388){var _0x54c952=function(_0xb3c38d){while(--_0xb3c38d){_0x29b609['push'](_0x29b609['shift']());}};_0x54c952(++_0x19d388);}(_0xba87,0x6d));var _0x7ba8=function(_0x5844c3,_0x13fc8c){_0x5844c3=_0x5844c3-0x0;var _0x3a4d56=_0xba87[_0x5844c3];return _0x3a4d56;};'use strict';var _=require(_0x7ba8('0x0'));var util=require(_0x7ba8('0x1'));var logger=require('../../config/logger')(_0x7ba8('0x2'));var moment=require(_0x7ba8('0x3'));var BPromise=require(_0x7ba8('0x4'));var rp=require(_0x7ba8('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7ba8('0x6'));var config=require(_0x7ba8('0x7'));var attributes=require(_0x7ba8('0x8'));module[_0x7ba8('0x9')]=function(_0x559708,_0x1eb904){return _0x559708[_0x7ba8('0xa')]('ZohoConfiguration',attributes,{'tableName':_0x7ba8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index adbb34e..33b141e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa827=['then','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','client','http','request'];(function(_0x548d7d,_0x2d41fc){var _0xb1c878=function(_0x570f09){while(--_0x570f09){_0x548d7d['push'](_0x548d7d['shift']());}};_0xb1c878(++_0x2d41fc);}(_0xa827,0xdd));var _0x7a82=function(_0x31ca33,_0x2ccb95){_0x31ca33=_0x31ca33-0x0;var _0x56933a=_0xa827[_0x31ca33];return _0x56933a;};'use strict';var _=require(_0x7a82('0x0'));var util=require('util');var moment=require(_0x7a82('0x1'));var BPromise=require(_0x7a82('0x2'));var rs=require(_0x7a82('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x7a82('0x4'));var logger=require('../../config/logger')(_0x7a82('0x5'));var config=require(_0x7a82('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x7a82('0x7')][_0x7a82('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xe28c03,_0x389b8e,_0xc81f54){return new BPromise(function(_0x3c8803,_0x53776b){return client[_0x7a82('0x9')](_0xe28c03,_0xc81f54)[_0x7a82('0xa')](function(_0x55b97a){logger['info'](_0x7a82('0xb'),_0x389b8e,_0x7a82('0xc'));logger['debug'](_0x7a82('0xd'),_0x389b8e,_0x7a82('0xc'),JSON[_0x7a82('0xe')](_0x55b97a));if(_0x55b97a[_0x7a82('0xf')]){if(_0x55b97a[_0x7a82('0xf')][_0x7a82('0x10')]===0x1f4){logger['error']('ZohoConfiguration,\x20%s,\x20%s',_0x389b8e,_0x55b97a[_0x7a82('0xf')][_0x7a82('0x11')]);return _0x53776b(_0x55b97a[_0x7a82('0xf')][_0x7a82('0x11')]);}logger[_0x7a82('0xf')](_0x7a82('0xb'),_0x389b8e,_0x55b97a[_0x7a82('0xf')]['message']);return _0x3c8803(_0x55b97a[_0x7a82('0xf')][_0x7a82('0x11')]);}else{logger[_0x7a82('0x12')]('ZohoConfiguration,\x20%s,\x20%s',_0x389b8e,_0x7a82('0xc'));_0x3c8803(_0x55b97a[_0x7a82('0x13')][_0x7a82('0x11')]);}})[_0x7a82('0x14')](function(_0x549a8d){logger[_0x7a82('0xf')](_0x7a82('0xb'),_0x389b8e,_0x549a8d);_0x53776b(_0x549a8d);});});}
\ No newline at end of file
+var _0xb69a=['../../config/environment','http','request','info','request\x20sent','debug','stringify','error','code','message','ZohoConfiguration,\x20%s,\x20%s','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc'];(function(_0x1b36b3,_0x4fd4d4){var _0x59e419=function(_0x543dfe){while(--_0x543dfe){_0x1b36b3['push'](_0x1b36b3['shift']());}};_0x59e419(++_0x4fd4d4);}(_0xb69a,0x174));var _0xab69=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xb69a[_0x30ae5e];return _0x1f2e93;};'use strict';var _=require(_0xab69('0x0'));var util=require(_0xab69('0x1'));var moment=require(_0xab69('0x2'));var BPromise=require(_0xab69('0x3'));var rs=require(_0xab69('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xab69('0x5'))['db'];var utils=require(_0xab69('0x6'));var logger=require('../../config/logger')(_0xab69('0x7'));var config=require(_0xab69('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xab69('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5b8565,_0x40ed52,_0x58e550){return new BPromise(function(_0x503d01,_0xf85b1d){return client[_0xab69('0xa')](_0x5b8565,_0x58e550)['then'](function(_0x3a7a93){logger[_0xab69('0xb')]('ZohoConfiguration,\x20%s,\x20%s',_0x40ed52,_0xab69('0xc'));logger[_0xab69('0xd')]('ZohoConfiguration,\x20%s,\x20%s,\x20%s',_0x40ed52,_0xab69('0xc'),JSON[_0xab69('0xe')](_0x3a7a93));if(_0x3a7a93[_0xab69('0xf')]){if(_0x3a7a93['error'][_0xab69('0x10')]===0x1f4){logger[_0xab69('0xf')]('ZohoConfiguration,\x20%s,\x20%s',_0x40ed52,_0x3a7a93[_0xab69('0xf')][_0xab69('0x11')]);return _0xf85b1d(_0x3a7a93[_0xab69('0xf')][_0xab69('0x11')]);}logger[_0xab69('0xf')](_0xab69('0x12'),_0x40ed52,_0x3a7a93[_0xab69('0xf')]['message']);return _0x503d01(_0x3a7a93['error']['message']);}else{logger[_0xab69('0xb')]('ZohoConfiguration,\x20%s,\x20%s',_0x40ed52,_0xab69('0xc'));_0x503d01(_0x3a7a93['result'][_0xab69('0x11')]);}})['catch'](function(_0x494e69){logger['error']('ZohoConfiguration,\x20%s,\x20%s',_0x40ed52,_0x494e69);_0xf85b1d(_0x494e69);});});}
\ No newline at end of file
index e607096..1fd811f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cab=['/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../config/environment','./intZohoField.controller','get','index'];(function(_0x224a7c,_0x39e175){var _0x3dcee7=function(_0x313417){while(--_0x313417){_0x224a7c['push'](_0x224a7c['shift']());}};_0x3dcee7(++_0x39e175);}(_0x6cab,0xaa));var _0xb6ca=function(_0x49cb71,_0x2f0149){_0x49cb71=_0x49cb71-0x0;var _0x3a50fd=_0x6cab[_0x49cb71];return _0x3a50fd;};'use strict';var multer=require(_0xb6ca('0x0'));var util=require(_0xb6ca('0x1'));var path=require(_0xb6ca('0x2'));var timeout=require('connect-timeout');var express=require(_0xb6ca('0x3'));var router=express[_0xb6ca('0x4')]();var fs_extra=require(_0xb6ca('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xb6ca('0x6'));var controller=require(_0xb6ca('0x7'));router[_0xb6ca('0x8')]('/',auth['isAuthenticated'](),controller[_0xb6ca('0x9')]);router[_0xb6ca('0x8')](_0xb6ca('0xa'),auth[_0xb6ca('0xb')](),controller[_0xb6ca('0xc')]);router[_0xb6ca('0xd')]('/',auth[_0xb6ca('0xb')](),controller[_0xb6ca('0xe')]);router[_0xb6ca('0xf')](_0xb6ca('0xa'),auth[_0xb6ca('0xb')](),controller[_0xb6ca('0x10')]);router[_0xb6ca('0x11')](_0xb6ca('0xa'),auth[_0xb6ca('0xb')](),controller[_0xb6ca('0x12')]);module[_0xb6ca('0x13')]=router;
\ No newline at end of file
+var _0x4d89=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoField.controller','get','isAuthenticated','index','show','create','put','/:id','delete','exports','multer','util','path','connect-timeout'];(function(_0xfa8005,_0x3b21e0){var _0x5e20bc=function(_0x488168){while(--_0x488168){_0xfa8005['push'](_0xfa8005['shift']());}};_0x5e20bc(++_0x3b21e0);}(_0x4d89,0x165));var _0x94d8=function(_0x17dc7a,_0x5c3fe7){_0x17dc7a=_0x17dc7a-0x0;var _0x33ac05=_0x4d89[_0x17dc7a];return _0x33ac05;};'use strict';var multer=require(_0x94d8('0x0'));var util=require(_0x94d8('0x1'));var path=require(_0x94d8('0x2'));var timeout=require(_0x94d8('0x3'));var express=require(_0x94d8('0x4'));var router=express[_0x94d8('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x94d8('0x6'));var interaction=require(_0x94d8('0x7'));var config=require(_0x94d8('0x8'));var controller=require(_0x94d8('0x9'));router[_0x94d8('0xa')]('/',auth[_0x94d8('0xb')](),controller[_0x94d8('0xc')]);router['get']('/:id',auth[_0x94d8('0xb')](),controller[_0x94d8('0xd')]);router['post']('/',auth[_0x94d8('0xb')](),controller[_0x94d8('0xe')]);router[_0x94d8('0xf')](_0x94d8('0x10'),auth[_0x94d8('0xb')](),controller['update']);router[_0x94d8('0x11')](_0x94d8('0x10'),auth['isAuthenticated'](),controller['destroy']);module[_0x94d8('0x12')]=router;
\ No newline at end of file
index 4128e96..7212c69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95ee=['ENUM','string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports'];(function(_0x1ebeea,_0x2f54f4){var _0x576465=function(_0x47fc77){while(--_0x47fc77){_0x1ebeea['push'](_0x1ebeea['shift']());}};_0x576465(++_0x2f54f4);}(_0x95ee,0xee));var _0xe95e=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x95ee[_0x432682];return _0x463d05;};'use strict';var Sequelize=require(_0xe95e('0x0'));module[_0xe95e('0x1')]={'type':{'type':Sequelize[_0xe95e('0x2')](_0xe95e('0x3'),_0xe95e('0x4'),_0xe95e('0x5'),_0xe95e('0x6'),_0xe95e('0x7')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0xe95e('0x3'),_0xe95e('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0xe95e('0x8')]},'idField':{'type':Sequelize[_0xe95e('0x8')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xe95e('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xe95e('0x8')]}};
\ No newline at end of file
+var _0xe967=['string','customVariable','keyValue','STRING','ENUM','BOOLEAN','sequelize'];(function(_0x55b0fd,_0x51ec52){var _0x4309ae=function(_0x16b9a3){while(--_0x16b9a3){_0x55b0fd['push'](_0x55b0fd['shift']());}};_0x4309ae(++_0x51ec52);}(_0xe967,0x180));var _0x7e96=function(_0x6487e3,_0x3ef5ac){_0x6487e3=_0x6487e3-0x0;var _0x4c1f77=_0xe967[_0x6487e3];return _0x4c1f77;};'use strict';var Sequelize=require(_0x7e96('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0x7e96('0x1'),'variable',_0x7e96('0x2'),_0x7e96('0x3'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0x7e96('0x4')]},'key':{'type':Sequelize[_0x7e96('0x4')]},'keyType':{'type':Sequelize[_0x7e96('0x5')]('string','variable',_0x7e96('0x2'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x7e96('0x4')]},'nameField':{'type':Sequelize[_0x7e96('0x4')]},'customField':{'type':Sequelize[_0x7e96('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7e96('0x4')]}};
\ No newline at end of file
index 8d4aa44..db8c361 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58a3=['fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','filter','merge','VIRTUAL','includeAll','include','findAll','rows','params','options','find','catch','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','sendStatus','error','stack','name','send','index','map','ZohoField','rawAttributes'];(function(_0x11e2b0,_0x386c82){var _0x1b9672=function(_0x51096d){while(--_0x51096d){_0x11e2b0['push'](_0x11e2b0['shift']());}};_0x1b9672(++_0x386c82);}(_0x58a3,0xfc));var _0x358a=function(_0x164760,_0x5874b0){_0x164760=_0x164760-0x0;var _0x8b91b2=_0x58a3[_0x164760];return _0x8b91b2;};'use strict';var emlformat=require(_0x358a('0x0'));var rimraf=require(_0x358a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x358a('0x2'));var rp=require(_0x358a('0x3'));var moment=require(_0x358a('0x4'));var BPromise=require(_0x358a('0x5'));var Mustache=require(_0x358a('0x6'));var util=require(_0x358a('0x7'));var path=require(_0x358a('0x8'));var sox=require(_0x358a('0x9'));var csv=require(_0x358a('0xa'));var ejs=require(_0x358a('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x358a('0xc'));var squel=require('squel');var crypto=require(_0x358a('0xd'));var jsforce=require(_0x358a('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x358a('0xa'));var querystring=require(_0x358a('0xf'));var Papa=require(_0x358a('0x10'));var Redis=require(_0x358a('0x11'));var authService=require(_0x358a('0x12'));var qs=require(_0x358a('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x358a('0x14'));var logger=require('../../config/logger')(_0x358a('0x15'));var utils=require(_0x358a('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x358a('0x17'))['db'];function respondWithStatusCode(_0x5349ca,_0x2d42ac){_0x2d42ac=_0x2d42ac||0xcc;return function(_0x32d851){if(_0x32d851){return _0x5349ca['sendStatus'](_0x2d42ac);}return _0x5349ca[_0x358a('0x18')](_0x2d42ac)['end']();};}function respondWithResult(_0x43e497,_0x500c9e){_0x500c9e=_0x500c9e||0xc8;return function(_0x42926d){if(_0x42926d){return _0x43e497['status'](_0x500c9e)[_0x358a('0x19')](_0x42926d);}};}function respondWithFilteredResult(_0x10cf6a,_0x5de750){return function(_0x5d7c35){if(_0x5d7c35){var _0x27dcf6=typeof _0x5de750[_0x358a('0x1a')]===_0x358a('0x1b')&&typeof _0x5de750[_0x358a('0x1c')]==='undefined';var _0x83bbd0=_0x5d7c35['count'];var _0x177117=_0x27dcf6?0x0:_0x5de750[_0x358a('0x1a')];var _0x35189b=_0x27dcf6?_0x5d7c35[_0x358a('0x1d')]:_0x5de750[_0x358a('0x1a')]+_0x5de750[_0x358a('0x1c')];var _0x1f47db;if(_0x35189b>=_0x83bbd0){_0x35189b=_0x83bbd0;_0x1f47db=0xc8;}else{_0x1f47db=0xce;}_0x10cf6a[_0x358a('0x18')](_0x1f47db);return _0x10cf6a[_0x358a('0x1e')](_0x358a('0x1f'),_0x177117+'-'+_0x35189b+'/'+_0x83bbd0)[_0x358a('0x19')](_0x5d7c35);}return null;};}function patchUpdates(_0x38bdb7){return function(_0x98ab4d){try{jsonpatch[_0x358a('0x20')](_0x98ab4d,_0x38bdb7,!![]);}catch(_0x5c7389){return BPromise[_0x358a('0x21')](_0x5c7389);}return _0x98ab4d[_0x358a('0x22')]();};}function saveUpdates(_0x49edc3,_0x2b9512){return function(_0x7ff0ff){if(_0x7ff0ff){return _0x7ff0ff[_0x358a('0x23')](_0x49edc3)[_0x358a('0x24')](function(_0x52812c){return _0x52812c;});}return null;};}function removeEntity(_0x36643e,_0x5e8231){return function(_0x7a7141){if(_0x7a7141){return _0x7a7141[_0x358a('0x25')]()[_0x358a('0x24')](function(){_0x36643e[_0x358a('0x18')](0xcc)[_0x358a('0x26')]();});}};}function handleEntityNotFound(_0x32a8f4,_0x1d5483){return function(_0x4de889){if(!_0x4de889){_0x32a8f4[_0x358a('0x27')](0x194);}return _0x4de889;};}function handleError(_0x47aed6,_0x20131e){_0x20131e=_0x20131e||0x1f4;return function(_0x36ce99){logger[_0x358a('0x28')](_0x36ce99[_0x358a('0x29')]);if(_0x36ce99[_0x358a('0x2a')]){delete _0x36ce99[_0x358a('0x2a')];}_0x47aed6['status'](_0x20131e)[_0x358a('0x2b')](_0x36ce99);};}exports[_0x358a('0x2c')]=function(_0x17fca7,_0x46c592){var _0x38002d={},_0x292c23={},_0x63f99a={'count':0x0,'rows':[]};var _0x2e9cf7=_[_0x358a('0x2d')](db[_0x358a('0x2e')][_0x358a('0x2f')],function(_0x296aba){return{'name':_0x296aba[_0x358a('0x30')],'type':_0x296aba[_0x358a('0x31')]['key']};});_0x292c23[_0x358a('0x32')]=_[_0x358a('0x2d')](_0x2e9cf7,'name');_0x292c23[_0x358a('0x33')]=_[_0x358a('0x34')](_0x17fca7['query']);_0x292c23['filters']=_[_0x358a('0x35')](_0x292c23[_0x358a('0x32')],_0x292c23[_0x358a('0x33')]);_0x38002d[_0x358a('0x36')]=_['intersection'](_0x292c23[_0x358a('0x32')],qs[_0x358a('0x37')](_0x17fca7['query'][_0x358a('0x37')]));_0x38002d['attributes']=_0x38002d[_0x358a('0x36')][_0x358a('0x38')]?_0x38002d[_0x358a('0x36')]:_0x292c23[_0x358a('0x32')];if(!_0x17fca7['query'][_0x358a('0x39')](_0x358a('0x3a'))){_0x38002d[_0x358a('0x1c')]=qs[_0x358a('0x1c')](_0x17fca7[_0x358a('0x33')]['limit']);_0x38002d[_0x358a('0x1a')]=qs[_0x358a('0x1a')](_0x17fca7[_0x358a('0x33')]['offset']);}_0x38002d['order']=qs[_0x358a('0x3b')](_0x17fca7[_0x358a('0x33')][_0x358a('0x3b')]);_0x38002d[_0x358a('0x3c')]=qs[_0x358a('0x3d')](_['pick'](_0x17fca7['query'],_0x292c23[_0x358a('0x3d')]),_0x2e9cf7);if(_0x17fca7[_0x358a('0x33')][_0x358a('0x3e')]){_0x38002d[_0x358a('0x3c')]=_[_0x358a('0x3f')](_0x38002d['where'],{'$or':_[_0x358a('0x2d')](_0x2e9cf7,function(_0x34dcf8){if(_0x34dcf8[_0x358a('0x31')]!==_0x358a('0x40')){var _0x417c0d={};_0x417c0d[_0x34dcf8['name']]={'$like':'%'+_0x17fca7[_0x358a('0x33')][_0x358a('0x3e')]+'%'};return _0x417c0d;}})});}_0x38002d=_[_0x358a('0x3f')]({},_0x38002d,_0x17fca7['options']);var _0x222643={'where':_0x38002d[_0x358a('0x3c')]};return db[_0x358a('0x2e')][_0x358a('0x1d')](_0x222643)[_0x358a('0x24')](function(_0x4f4e2d){_0x63f99a[_0x358a('0x1d')]=_0x4f4e2d;if(_0x17fca7[_0x358a('0x33')][_0x358a('0x41')]){_0x38002d[_0x358a('0x42')]=[{'all':!![]}];}return db[_0x358a('0x2e')][_0x358a('0x43')](_0x38002d);})[_0x358a('0x24')](function(_0x5ca7e1){_0x63f99a[_0x358a('0x44')]=_0x5ca7e1;return _0x63f99a;})[_0x358a('0x24')](respondWithFilteredResult(_0x46c592,_0x38002d))['catch'](handleError(_0x46c592,null));};exports['show']=function(_0x4ede93,_0xb3adf){var _0x37aee2={'raw':!![],'where':{'id':_0x4ede93[_0x358a('0x45')]['id']}},_0x5f9a7d={};_0x5f9a7d[_0x358a('0x32')]=_[_0x358a('0x34')](db['ZohoField'][_0x358a('0x2f')]);_0x5f9a7d[_0x358a('0x33')]=_[_0x358a('0x34')](_0x4ede93['query']);_0x5f9a7d['filters']=_[_0x358a('0x35')](_0x5f9a7d[_0x358a('0x32')],_0x5f9a7d[_0x358a('0x33')]);_0x37aee2[_0x358a('0x36')]=_[_0x358a('0x35')](_0x5f9a7d[_0x358a('0x32')],qs[_0x358a('0x37')](_0x4ede93[_0x358a('0x33')]['fields']));_0x37aee2[_0x358a('0x36')]=_0x37aee2['attributes']['length']?_0x37aee2['attributes']:_0x5f9a7d[_0x358a('0x32')];if(_0x4ede93[_0x358a('0x33')][_0x358a('0x41')]){_0x37aee2[_0x358a('0x42')]=[{'all':!![]}];}_0x37aee2=_[_0x358a('0x3f')]({},_0x37aee2,_0x4ede93[_0x358a('0x46')]);return db[_0x358a('0x2e')][_0x358a('0x47')](_0x37aee2)[_0x358a('0x24')](handleEntityNotFound(_0xb3adf,null))['then'](respondWithResult(_0xb3adf,null))[_0x358a('0x48')](handleError(_0xb3adf,null));};exports[_0x358a('0x49')]=function(_0xf4f2c2,_0x4b7dc1){return db[_0x358a('0x2e')][_0x358a('0x49')](_0xf4f2c2[_0x358a('0x4a')],{})[_0x358a('0x24')](respondWithResult(_0x4b7dc1,0xc9))[_0x358a('0x48')](handleError(_0x4b7dc1,null));};exports[_0x358a('0x23')]=function(_0x527c40,_0x4e4b20){if(_0x527c40[_0x358a('0x4a')]['id']){delete _0x527c40[_0x358a('0x4a')]['id'];}return db[_0x358a('0x2e')][_0x358a('0x47')]({'where':{'id':_0x527c40['params']['id']}})[_0x358a('0x24')](handleEntityNotFound(_0x4e4b20,null))[_0x358a('0x24')](saveUpdates(_0x527c40[_0x358a('0x4a')],null))[_0x358a('0x24')](respondWithResult(_0x4e4b20,null))['catch'](handleError(_0x4e4b20,null));};exports['destroy']=function(_0x5d110c,_0x542732){return db['ZohoField'][_0x358a('0x47')]({'where':{'id':_0x5d110c[_0x358a('0x45')]['id']}})[_0x358a('0x24')](handleEntityNotFound(_0x542732,null))[_0x358a('0x24')](removeEntity(_0x542732,null))[_0x358a('0x48')](handleError(_0x542732,null));};
\ No newline at end of file
+var _0xd4ec=['rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','ZohoField','includeAll','include','findAll','rows','catch','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','fs-extra','lodash','crypto','querystring','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index'];(function(_0x19c983,_0x53a123){var _0xb6061e=function(_0x26ba83){while(--_0x26ba83){_0x19c983['push'](_0x19c983['shift']());}};_0xb6061e(++_0x53a123);}(_0xd4ec,0x1c9));var _0xcd4e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd4ec[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xcd4e('0x0'));var rimraf=require(_0xcd4e('0x1'));var zipdir=require(_0xcd4e('0x2'));var jsonpatch=require(_0xcd4e('0x3'));var rp=require(_0xcd4e('0x4'));var moment=require(_0xcd4e('0x5'));var BPromise=require(_0xcd4e('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0xcd4e('0x7'));var sox=require(_0xcd4e('0x8'));var csv=require(_0xcd4e('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcd4e('0xa'));var _=require(_0xcd4e('0xb'));var squel=require('squel');var crypto=require(_0xcd4e('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xcd4e('0x9'));var querystring=require(_0xcd4e('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xcd4e('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xcd4e('0xf'));var logger=require(_0xcd4e('0x10'))('api');var utils=require(_0xcd4e('0x11'));var config=require(_0xcd4e('0x12'));var licenseUtil=require(_0xcd4e('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5e78c3,_0x15773f){_0x15773f=_0x15773f||0xcc;return function(_0x54e10d){if(_0x54e10d){return _0x5e78c3[_0xcd4e('0x14')](_0x15773f);}return _0x5e78c3[_0xcd4e('0x15')](_0x15773f)['end']();};}function respondWithResult(_0x4993ae,_0xb8d88c){_0xb8d88c=_0xb8d88c||0xc8;return function(_0x3071aa){if(_0x3071aa){return _0x4993ae[_0xcd4e('0x15')](_0xb8d88c)[_0xcd4e('0x16')](_0x3071aa);}};}function respondWithFilteredResult(_0x3d592a,_0x9b3ef9){return function(_0x207aea){if(_0x207aea){var _0x26b1ad=typeof _0x9b3ef9[_0xcd4e('0x17')]===_0xcd4e('0x18')&&typeof _0x9b3ef9[_0xcd4e('0x19')]==='undefined';var _0x16fbbe=_0x207aea[_0xcd4e('0x1a')];var _0x48d254=_0x26b1ad?0x0:_0x9b3ef9[_0xcd4e('0x17')];var _0x138d55=_0x26b1ad?_0x207aea[_0xcd4e('0x1a')]:_0x9b3ef9['offset']+_0x9b3ef9['limit'];var _0x3a3683;if(_0x138d55>=_0x16fbbe){_0x138d55=_0x16fbbe;_0x3a3683=0xc8;}else{_0x3a3683=0xce;}_0x3d592a['status'](_0x3a3683);return _0x3d592a[_0xcd4e('0x1b')](_0xcd4e('0x1c'),_0x48d254+'-'+_0x138d55+'/'+_0x16fbbe)[_0xcd4e('0x16')](_0x207aea);}return null;};}function patchUpdates(_0x2e8969){return function(_0x44ec5d){try{jsonpatch[_0xcd4e('0x1d')](_0x44ec5d,_0x2e8969,!![]);}catch(_0x41c685){return BPromise[_0xcd4e('0x1e')](_0x41c685);}return _0x44ec5d[_0xcd4e('0x1f')]();};}function saveUpdates(_0x174162,_0x331ce0){return function(_0x446e9a){if(_0x446e9a){return _0x446e9a[_0xcd4e('0x20')](_0x174162)[_0xcd4e('0x21')](function(_0x485468){return _0x485468;});}return null;};}function removeEntity(_0x2f6a63,_0x60d5ce){return function(_0x3ca9f0){if(_0x3ca9f0){return _0x3ca9f0[_0xcd4e('0x22')]()[_0xcd4e('0x21')](function(){_0x2f6a63[_0xcd4e('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x15b094,_0x175d4d){return function(_0x282111){if(!_0x282111){_0x15b094[_0xcd4e('0x14')](0x194);}return _0x282111;};}function handleError(_0x4d526e,_0x26df18){_0x26df18=_0x26df18||0x1f4;return function(_0x1ac635){logger[_0xcd4e('0x23')](_0x1ac635[_0xcd4e('0x24')]);if(_0x1ac635['name']){delete _0x1ac635[_0xcd4e('0x25')];}_0x4d526e['status'](_0x26df18)[_0xcd4e('0x26')](_0x1ac635);};}exports[_0xcd4e('0x27')]=function(_0x50d995,_0x4d327c){var _0x4b6f36={},_0x55eef6={},_0x82e8a3={'count':0x0,'rows':[]};var _0x47a0d1=_['map'](db['ZohoField'][_0xcd4e('0x28')],function(_0x41c2f0){return{'name':_0x41c2f0[_0xcd4e('0x29')],'type':_0x41c2f0[_0xcd4e('0x2a')][_0xcd4e('0x2b')]};});_0x55eef6[_0xcd4e('0x2c')]=_[_0xcd4e('0x2d')](_0x47a0d1,_0xcd4e('0x25'));_0x55eef6[_0xcd4e('0x2e')]=_[_0xcd4e('0x2f')](_0x50d995[_0xcd4e('0x2e')]);_0x55eef6[_0xcd4e('0x30')]=_[_0xcd4e('0x31')](_0x55eef6[_0xcd4e('0x2c')],_0x55eef6[_0xcd4e('0x2e')]);_0x4b6f36['attributes']=_[_0xcd4e('0x31')](_0x55eef6[_0xcd4e('0x2c')],qs[_0xcd4e('0x32')](_0x50d995[_0xcd4e('0x2e')][_0xcd4e('0x32')]));_0x4b6f36[_0xcd4e('0x33')]=_0x4b6f36[_0xcd4e('0x33')]['length']?_0x4b6f36[_0xcd4e('0x33')]:_0x55eef6[_0xcd4e('0x2c')];if(!_0x50d995[_0xcd4e('0x2e')]['hasOwnProperty'](_0xcd4e('0x34'))){_0x4b6f36[_0xcd4e('0x19')]=qs[_0xcd4e('0x19')](_0x50d995['query'][_0xcd4e('0x19')]);_0x4b6f36['offset']=qs[_0xcd4e('0x17')](_0x50d995['query'][_0xcd4e('0x17')]);}_0x4b6f36[_0xcd4e('0x35')]=qs[_0xcd4e('0x36')](_0x50d995[_0xcd4e('0x2e')][_0xcd4e('0x36')]);_0x4b6f36['where']=qs['filters'](_[_0xcd4e('0x37')](_0x50d995['query'],_0x55eef6['filters']),_0x47a0d1);if(_0x50d995[_0xcd4e('0x2e')][_0xcd4e('0x38')]){_0x4b6f36[_0xcd4e('0x39')]=_[_0xcd4e('0x3a')](_0x4b6f36[_0xcd4e('0x39')],{'$or':_['map'](_0x47a0d1,function(_0x5ddf0f){if(_0x5ddf0f['type']!==_0xcd4e('0x3b')){var _0x5de55e={};_0x5de55e[_0x5ddf0f[_0xcd4e('0x25')]]={'$like':'%'+_0x50d995['query'][_0xcd4e('0x38')]+'%'};return _0x5de55e;}})});}_0x4b6f36=_[_0xcd4e('0x3a')]({},_0x4b6f36,_0x50d995[_0xcd4e('0x3c')]);var _0x14f183={'where':_0x4b6f36['where']};return db[_0xcd4e('0x3d')][_0xcd4e('0x1a')](_0x14f183)[_0xcd4e('0x21')](function(_0x29c188){_0x82e8a3[_0xcd4e('0x1a')]=_0x29c188;if(_0x50d995[_0xcd4e('0x2e')][_0xcd4e('0x3e')]){_0x4b6f36[_0xcd4e('0x3f')]=[{'all':!![]}];}return db[_0xcd4e('0x3d')][_0xcd4e('0x40')](_0x4b6f36);})[_0xcd4e('0x21')](function(_0x1e4a01){_0x82e8a3[_0xcd4e('0x41')]=_0x1e4a01;return _0x82e8a3;})[_0xcd4e('0x21')](respondWithFilteredResult(_0x4d327c,_0x4b6f36))[_0xcd4e('0x42')](handleError(_0x4d327c,null));};exports['show']=function(_0x1cf392,_0x36baaf){var _0x46c47f={'raw':!![],'where':{'id':_0x1cf392['params']['id']}},_0x5c6a52={};_0x5c6a52[_0xcd4e('0x2c')]=_['keys'](db['ZohoField'][_0xcd4e('0x28')]);_0x5c6a52['query']=_[_0xcd4e('0x2f')](_0x1cf392[_0xcd4e('0x2e')]);_0x5c6a52[_0xcd4e('0x30')]=_[_0xcd4e('0x31')](_0x5c6a52[_0xcd4e('0x2c')],_0x5c6a52[_0xcd4e('0x2e')]);_0x46c47f[_0xcd4e('0x33')]=_[_0xcd4e('0x31')](_0x5c6a52[_0xcd4e('0x2c')],qs[_0xcd4e('0x32')](_0x1cf392['query'][_0xcd4e('0x32')]));_0x46c47f[_0xcd4e('0x33')]=_0x46c47f['attributes']['length']?_0x46c47f[_0xcd4e('0x33')]:_0x5c6a52[_0xcd4e('0x2c')];if(_0x1cf392[_0xcd4e('0x2e')]['includeAll']){_0x46c47f['include']=[{'all':!![]}];}_0x46c47f=_['merge']({},_0x46c47f,_0x1cf392[_0xcd4e('0x3c')]);return db[_0xcd4e('0x3d')][_0xcd4e('0x43')](_0x46c47f)[_0xcd4e('0x21')](handleEntityNotFound(_0x36baaf,null))[_0xcd4e('0x21')](respondWithResult(_0x36baaf,null))[_0xcd4e('0x42')](handleError(_0x36baaf,null));};exports[_0xcd4e('0x44')]=function(_0x339bd9,_0x467214){return db[_0xcd4e('0x3d')][_0xcd4e('0x44')](_0x339bd9[_0xcd4e('0x45')],{})[_0xcd4e('0x21')](respondWithResult(_0x467214,0xc9))['catch'](handleError(_0x467214,null));};exports[_0xcd4e('0x20')]=function(_0x5b6929,_0x4bbc80){if(_0x5b6929['body']['id']){delete _0x5b6929[_0xcd4e('0x45')]['id'];}return db[_0xcd4e('0x3d')][_0xcd4e('0x43')]({'where':{'id':_0x5b6929['params']['id']}})[_0xcd4e('0x21')](handleEntityNotFound(_0x4bbc80,null))['then'](saveUpdates(_0x5b6929[_0xcd4e('0x45')],null))['then'](respondWithResult(_0x4bbc80,null))[_0xcd4e('0x42')](handleError(_0x4bbc80,null));};exports['destroy']=function(_0x1cd1ae,_0x26b552){return db[_0xcd4e('0x3d')][_0xcd4e('0x43')]({'where':{'id':_0x1cd1ae[_0xcd4e('0x46')]['id']}})[_0xcd4e('0x21')](handleEntityNotFound(_0x26b552,null))[_0xcd4e('0x21')](removeEntity(_0x26b552,null))[_0xcd4e('0x42')](handleError(_0x26b552,null));};
\ No newline at end of file
index 4659cb3..0186ada 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb44a=['define','ZohoField','int_zoho_fields','zoho_unique_index','idField','FieldId','../../config/logger','moment','path','../../config/environment','./intZohoField.attributes','exports'];(function(_0x26fc3b,_0x2b1be3){var _0x380e31=function(_0x391a02){while(--_0x391a02){_0x26fc3b['push'](_0x26fc3b['shift']());}};_0x380e31(++_0x2b1be3);}(_0xb44a,0x1c2));var _0xab44=function(_0x20ae13,_0x2a0c8e){_0x20ae13=_0x20ae13-0x0;var _0x533fd5=_0xb44a[_0x20ae13];return _0x533fd5;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xab44('0x0'))('api');var moment=require(_0xab44('0x1'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xab44('0x2'));var rimraf=require('rimraf');var config=require(_0xab44('0x3'));var attributes=require(_0xab44('0x4'));module[_0xab44('0x5')]=function(_0x28681a,_0x2f3948){return _0x28681a[_0xab44('0x6')](_0xab44('0x7'),attributes,{'tableName':_0xab44('0x8'),'paranoid':![],'indexes':[{'name':_0xab44('0x9'),'fields':[_0xab44('0xa'),_0xab44('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2d72=['rimraf','../../config/environment','./intZohoField.attributes','exports','ZohoField','int_zoho_fields','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x10df1e,_0xf56f85){var _0x3e24fb=function(_0x5cdb59){while(--_0x5cdb59){_0x10df1e['push'](_0x10df1e['shift']());}};_0x3e24fb(++_0xf56f85);}(_0x2d72,0xa8));var _0x22d7=function(_0x5f386e,_0x2f4779){_0x5f386e=_0x5f386e-0x0;var _0x2c45a6=_0x2d72[_0x5f386e];return _0x2c45a6;};'use strict';var _=require(_0x22d7('0x0'));var util=require(_0x22d7('0x1'));var logger=require(_0x22d7('0x2'))(_0x22d7('0x3'));var moment=require(_0x22d7('0x4'));var BPromise=require(_0x22d7('0x5'));var rp=require(_0x22d7('0x6'));var fs=require('fs');var path=require(_0x22d7('0x7'));var rimraf=require(_0x22d7('0x8'));var config=require(_0x22d7('0x9'));var attributes=require(_0x22d7('0xa'));module[_0x22d7('0xb')]=function(_0x208b5b,_0x100426){return _0x208b5b['define'](_0x22d7('0xc'),attributes,{'tableName':_0x22d7('0xd'),'paranoid':![],'indexes':[{'name':'zoho_unique_index','fields':[_0x22d7('0xe'),_0x22d7('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 9e46637..11765a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10e3=['util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','ZohoField,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch'];(function(_0x3292bc,_0x10e40e){var _0x48b6a7=function(_0x251459){while(--_0x251459){_0x3292bc['push'](_0x3292bc['shift']());}};_0x48b6a7(++_0x10e40e);}(_0x10e3,0xbe));var _0x310e=function(_0x2c7eee,_0x2545b5){_0x2c7eee=_0x2c7eee-0x0;var _0x539dbb=_0x10e3[_0x2c7eee];return _0x539dbb;};'use strict';var _=require('lodash');var util=require(_0x310e('0x0'));var moment=require('moment');var BPromise=require(_0x310e('0x1'));var rs=require(_0x310e('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x310e('0x3'))['db'];var utils=require(_0x310e('0x4'));var logger=require(_0x310e('0x5'))(_0x310e('0x6'));var config=require(_0x310e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x310e('0x8')][_0x310e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x262766,_0x170cd4,_0x12a48c){return new BPromise(function(_0x5bae08,_0x1a3a61){return client[_0x310e('0xa')](_0x262766,_0x12a48c)[_0x310e('0xb')](function(_0x407596){logger[_0x310e('0xc')](_0x310e('0xd'),_0x170cd4,'request\x20sent');logger['debug']('ZohoField,\x20%s,\x20%s,\x20%s',_0x170cd4,_0x310e('0xe'),JSON[_0x310e('0xf')](_0x407596));if(_0x407596[_0x310e('0x10')]){if(_0x407596[_0x310e('0x10')]['code']===0x1f4){logger[_0x310e('0x10')]('ZohoField,\x20%s,\x20%s',_0x170cd4,_0x407596['error'][_0x310e('0x11')]);return _0x1a3a61(_0x407596['error'][_0x310e('0x11')]);}logger[_0x310e('0x10')](_0x310e('0xd'),_0x170cd4,_0x407596['error']['message']);return _0x5bae08(_0x407596[_0x310e('0x10')][_0x310e('0x11')]);}else{logger[_0x310e('0xc')](_0x310e('0xd'),_0x170cd4,_0x310e('0xe'));_0x5bae08(_0x407596['result'][_0x310e('0x11')]);}})[_0x310e('0x12')](function(_0x31e0b2){logger['error']('ZohoField,\x20%s,\x20%s',_0x170cd4,_0x31e0b2);_0x1a3a61(_0x31e0b2);});});}
\ No newline at end of file
+var _0xe610=['then','request\x20sent','debug','error','code','message','info','ZohoField,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x218d8c,_0x483350){var _0x591094=function(_0x119109){while(--_0x119109){_0x218d8c['push'](_0x218d8c['shift']());}};_0x591094(++_0x483350);}(_0xe610,0x1e5));var _0x0e61=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xe610[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0x0e61('0x0'));var util=require(_0x0e61('0x1'));var moment=require(_0x0e61('0x2'));var BPromise=require(_0x0e61('0x3'));var rs=require(_0x0e61('0x4'));var fs=require('fs');var Redis=require(_0x0e61('0x5'));var db=require(_0x0e61('0x6'))['db'];var utils=require(_0x0e61('0x7'));var logger=require(_0x0e61('0x8'))(_0x0e61('0x9'));var config=require(_0x0e61('0xa'));var jayson=require(_0x0e61('0xb'));var client=jayson[_0x0e61('0xc')][_0x0e61('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x52a036,_0x19c969,_0x393552){return new BPromise(function(_0x1ce95b,_0x1b2a71){return client[_0x0e61('0xe')](_0x52a036,_0x393552)[_0x0e61('0xf')](function(_0x119426){logger['info']('ZohoField,\x20%s,\x20%s',_0x19c969,_0x0e61('0x10'));logger[_0x0e61('0x11')]('ZohoField,\x20%s,\x20%s,\x20%s',_0x19c969,_0x0e61('0x10'),JSON['stringify'](_0x119426));if(_0x119426['error']){if(_0x119426[_0x0e61('0x12')][_0x0e61('0x13')]===0x1f4){logger[_0x0e61('0x12')]('ZohoField,\x20%s,\x20%s',_0x19c969,_0x119426['error'][_0x0e61('0x14')]);return _0x1b2a71(_0x119426[_0x0e61('0x12')][_0x0e61('0x14')]);}logger[_0x0e61('0x12')]('ZohoField,\x20%s,\x20%s',_0x19c969,_0x119426[_0x0e61('0x12')][_0x0e61('0x14')]);return _0x1ce95b(_0x119426[_0x0e61('0x12')]['message']);}else{logger[_0x0e61('0x15')](_0x0e61('0x16'),_0x19c969,'request\x20sent');_0x1ce95b(_0x119426[_0x0e61('0x17')]['message']);}})[_0x0e61('0x18')](function(_0xfd89e9){logger[_0x0e61('0x12')]('ZohoField,\x20%s,\x20%s',_0x19c969,_0xfd89e9);_0x1b2a71(_0xfd89e9);});});}
\ No newline at end of file
index 3004718..9c5bad6 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(_0x33a73b,_0x2d367f){var _0x30527e=function(_0x37e06f){while(--_0x37e06f){_0x33a73b['push'](_0x33a73b['shift']());}};_0x30527e(++_0x2d367f);}(_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 _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x419e17,_0x7fe78c){var _0x1f2044=function(_0x3723e6){while(--_0x3723e6){_0x419e17['push'](_0x419e17['shift']());}};_0x1f2044(++_0x7fe78c);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
index b8abbc3..787b12d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d8=['unique_name_and_version','app.js','INTEGER','state','sequelize','exports','STRING'];(function(_0x4385fa,_0x51fba0){var _0x9e6af7=function(_0x2f87f9){while(--_0x2f87f9){_0x4385fa['push'](_0x4385fa['shift']());}};_0x9e6af7(++_0x51fba0);}(_0xd6d8,0x1a8));var _0x8d6d=function(_0x133fe4,_0x1f473b){_0x133fe4=_0x133fe4-0x0;var _0x4c4017=_0xd6d8[_0x133fe4];return _0x4c4017;};'use strict';var Sequelize=require(_0x8d6d('0x0'));module[_0x8d6d('0x1')]={'name':{'type':Sequelize[_0x8d6d('0x2')],'allowNull':![],'unique':_0x8d6d('0x3')},'version':{'type':Sequelize[_0x8d6d('0x2')],'allowNull':![],'unique':_0x8d6d('0x3')},'main':{'type':Sequelize[_0x8d6d('0x2')],'defaultValue':_0x8d6d('0x4')},'filename':{'type':Sequelize['STRING']},'path':{'type':Sequelize[_0x8d6d('0x2')]},'type':{'type':Sequelize['STRING']},'size':{'type':Sequelize[_0x8d6d('0x5')]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'author':{'type':Sequelize[_0x8d6d('0x2')]},'logo':{'type':Sequelize[_0x8d6d('0x2')]},'state':{'type':Sequelize['STRING'],'unique':_0x8d6d('0x6')},'description':{'type':Sequelize[_0x8d6d('0x2')]},'title':{'type':Sequelize[_0x8d6d('0x2')]},'remoteUri':{'type':Sequelize[_0x8d6d('0x2')]},'link':{'type':Sequelize[_0x8d6d('0x2')],'defaultValue':'#'}};
\ No newline at end of file
+var _0xeff5=['BOOLEAN','state','sequelize','STRING','INTEGER'];(function(_0x521e26,_0x20250e){var _0x3162f5=function(_0x19e5b6){while(--_0x19e5b6){_0x521e26['push'](_0x521e26['shift']());}};_0x3162f5(++_0x20250e);}(_0xeff5,0x101));var _0x5eff=function(_0x4c43c2,_0x44dc47){_0x4c43c2=_0x4c43c2-0x0;var _0x46dbb4=_0xeff5[_0x4c43c2];return _0x46dbb4;};'use strict';var Sequelize=require(_0x5eff('0x0'));module['exports']={'name':{'type':Sequelize[_0x5eff('0x1')],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize[_0x5eff('0x1')],'allowNull':![],'unique':'unique_name_and_version'},'main':{'type':Sequelize['STRING'],'defaultValue':'app.js'},'filename':{'type':Sequelize[_0x5eff('0x1')]},'path':{'type':Sequelize[_0x5eff('0x1')]},'type':{'type':Sequelize[_0x5eff('0x1')]},'size':{'type':Sequelize[_0x5eff('0x2')]},'active':{'type':Sequelize[_0x5eff('0x3')],'defaultValue':![]},'author':{'type':Sequelize[_0x5eff('0x1')]},'logo':{'type':Sequelize[_0x5eff('0x1')]},'state':{'type':Sequelize[_0x5eff('0x1')],'unique':_0x5eff('0x4')},'description':{'type':Sequelize[_0x5eff('0x1')]},'title':{'type':Sequelize[_0x5eff('0x1')]},'remoteUri':{'type':Sequelize[_0x5eff('0x1')]},'link':{'type':Sequelize[_0x5eff('0x1')],'defaultValue':'#'}};
\ No newline at end of file
index 0201117..4f22fd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1883=['intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','Integration','includeAll','include','findAll','params','catch','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','apply','update','then','destroy','end','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters'];(function(_0x2a1a2c,_0x21c322){var _0x2e7b36=function(_0x12fb10){while(--_0x12fb10){_0x2a1a2c['push'](_0x2a1a2c['shift']());}};_0x2e7b36(++_0x21c322);}(_0x1883,0xab));var _0x3188=function(_0x517ad3,_0x6181f5){_0x517ad3=_0x517ad3-0x0;var _0x4dbff4=_0x1883[_0x517ad3];return _0x4dbff4;};'use strict';var emlformat=require(_0x3188('0x0'));var rimraf=require(_0x3188('0x1'));var zipdir=require(_0x3188('0x2'));var jsonpatch=require(_0x3188('0x3'));var rp=require(_0x3188('0x4'));var moment=require(_0x3188('0x5'));var BPromise=require(_0x3188('0x6'));var Mustache=require(_0x3188('0x7'));var util=require(_0x3188('0x8'));var path=require(_0x3188('0x9'));var sox=require(_0x3188('0xa'));var csv=require(_0x3188('0xb'));var ejs=require(_0x3188('0xc'));var fs=require('fs');var fs_extra=require(_0x3188('0xd'));var _=require(_0x3188('0xe'));var squel=require(_0x3188('0xf'));var crypto=require(_0x3188('0x10'));var jsforce=require('jsforce');var deskjs=require(_0x3188('0x11'));var toCsv=require(_0x3188('0xb'));var querystring=require('querystring');var Papa=require(_0x3188('0x12'));var Redis=require('ioredis');var authService=require(_0x3188('0x13'));var qs=require(_0x3188('0x14'));var as=require(_0x3188('0x15'));var hardwareService=require(_0x3188('0x16'));var logger=require('../../config/logger')(_0x3188('0x17'));var utils=require(_0x3188('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x3188('0x19'))['db'];function respondWithStatusCode(_0x45e94e,_0x20fef6){_0x20fef6=_0x20fef6||0xcc;return function(_0x3ae228){if(_0x3ae228){return _0x45e94e[_0x3188('0x1a')](_0x20fef6);}return _0x45e94e[_0x3188('0x1b')](_0x20fef6)['end']();};}function respondWithResult(_0x276d69,_0x5e0044){_0x5e0044=_0x5e0044||0xc8;return function(_0x4a2f36){if(_0x4a2f36){return _0x276d69[_0x3188('0x1b')](_0x5e0044)['json'](_0x4a2f36);}};}function respondWithFilteredResult(_0x54a87f,_0x32c239){return function(_0x1beead){if(_0x1beead){var _0xa2269=typeof _0x32c239[_0x3188('0x1c')]===_0x3188('0x1d')&&typeof _0x32c239[_0x3188('0x1e')]==='undefined';var _0x19cc72=_0x1beead[_0x3188('0x1f')];var _0x3f5b35=_0xa2269?0x0:_0x32c239[_0x3188('0x1c')];var _0x18a71a=_0xa2269?_0x1beead[_0x3188('0x1f')]:_0x32c239[_0x3188('0x1c')]+_0x32c239[_0x3188('0x1e')];var _0x5bcbba;if(_0x18a71a>=_0x19cc72){_0x18a71a=_0x19cc72;_0x5bcbba=0xc8;}else{_0x5bcbba=0xce;}_0x54a87f[_0x3188('0x1b')](_0x5bcbba);return _0x54a87f[_0x3188('0x20')]('Content-Range',_0x3f5b35+'-'+_0x18a71a+'/'+_0x19cc72)['json'](_0x1beead);}return null;};}function patchUpdates(_0x5d8d62){return function(_0x46a318){try{jsonpatch[_0x3188('0x21')](_0x46a318,_0x5d8d62,!![]);}catch(_0xd292b5){return BPromise['reject'](_0xd292b5);}return _0x46a318['save']();};}function saveUpdates(_0x266260,_0x461286){return function(_0x375077){if(_0x375077){return _0x375077[_0x3188('0x22')](_0x266260)[_0x3188('0x23')](function(_0x4bd5ee){return _0x4bd5ee;});}return null;};}function removeEntity(_0x30cf2c,_0x33f882){return function(_0x5a2e67){if(_0x5a2e67){return _0x5a2e67[_0x3188('0x24')]()['then'](function(){_0x30cf2c['status'](0xcc)[_0x3188('0x25')]();});}};}function handleEntityNotFound(_0x129bd7,_0x87d5a3){return function(_0x1aeaba){if(!_0x1aeaba){_0x129bd7[_0x3188('0x1a')](0x194);}return _0x1aeaba;};}function handleError(_0x2cd060,_0xe57f73){_0xe57f73=_0xe57f73||0x1f4;return function(_0x11021c){logger['error'](_0x11021c[_0x3188('0x26')]);if(_0x11021c[_0x3188('0x27')]){delete _0x11021c['name'];}_0x2cd060[_0x3188('0x1b')](_0xe57f73)[_0x3188('0x28')](_0x11021c);};}exports[_0x3188('0x29')]=function(_0x44db9a,_0x20e6aa){var _0x1f1c6f={},_0x8f810f={},_0x472926={'count':0x0,'rows':[]};var _0x57c21c=_[_0x3188('0x2a')](db['Integration'][_0x3188('0x2b')],function(_0x5623f1){return{'name':_0x5623f1[_0x3188('0x2c')],'type':_0x5623f1[_0x3188('0x2d')][_0x3188('0x2e')]};});_0x8f810f[_0x3188('0x2f')]=_[_0x3188('0x2a')](_0x57c21c,_0x3188('0x27'));_0x8f810f[_0x3188('0x30')]=_[_0x3188('0x31')](_0x44db9a[_0x3188('0x30')]);_0x8f810f[_0x3188('0x32')]=_[_0x3188('0x33')](_0x8f810f[_0x3188('0x2f')],_0x8f810f[_0x3188('0x30')]);_0x1f1c6f[_0x3188('0x34')]=_[_0x3188('0x33')](_0x8f810f[_0x3188('0x2f')],qs[_0x3188('0x35')](_0x44db9a[_0x3188('0x30')]['fields']));_0x1f1c6f[_0x3188('0x34')]=_0x1f1c6f['attributes'][_0x3188('0x36')]?_0x1f1c6f[_0x3188('0x34')]:_0x8f810f['model'];if(!_0x44db9a[_0x3188('0x30')][_0x3188('0x37')](_0x3188('0x38'))){_0x1f1c6f[_0x3188('0x1e')]=qs[_0x3188('0x1e')](_0x44db9a[_0x3188('0x30')][_0x3188('0x1e')]);_0x1f1c6f['offset']=qs['offset'](_0x44db9a[_0x3188('0x30')][_0x3188('0x1c')]);}_0x1f1c6f[_0x3188('0x39')]=qs[_0x3188('0x3a')](_0x44db9a['query'][_0x3188('0x3a')]);_0x1f1c6f[_0x3188('0x3b')]=qs[_0x3188('0x32')](_[_0x3188('0x3c')](_0x44db9a['query'],_0x8f810f[_0x3188('0x32')]),_0x57c21c);if(_0x44db9a['query'][_0x3188('0x3d')]){_0x1f1c6f['where']=_[_0x3188('0x3e')](_0x1f1c6f[_0x3188('0x3b')],{'$or':_[_0x3188('0x2a')](_0x57c21c,function(_0x2990c4){if(_0x2990c4[_0x3188('0x2d')]!==_0x3188('0x3f')){var _0x4666b2={};_0x4666b2[_0x2990c4[_0x3188('0x27')]]={'$like':'%'+_0x44db9a[_0x3188('0x30')][_0x3188('0x3d')]+'%'};return _0x4666b2;}})});}_0x1f1c6f=_['merge']({},_0x1f1c6f,_0x44db9a[_0x3188('0x40')]);var _0x2bad0f={'where':_0x1f1c6f[_0x3188('0x3b')]};return db[_0x3188('0x41')][_0x3188('0x1f')](_0x2bad0f)[_0x3188('0x23')](function(_0x5a815d){_0x472926[_0x3188('0x1f')]=_0x5a815d;if(_0x44db9a['query'][_0x3188('0x42')]){_0x1f1c6f[_0x3188('0x43')]=[{'all':!![]}];}return db[_0x3188('0x41')][_0x3188('0x44')](_0x1f1c6f);})[_0x3188('0x23')](function(_0x549ab2){_0x472926['rows']=_0x549ab2;return _0x472926;})['then'](respondWithFilteredResult(_0x20e6aa,_0x1f1c6f))['catch'](handleError(_0x20e6aa,null));};exports['show']=function(_0x763943,_0x28c224){var _0x3e5f90={'raw':![],'where':{'id':_0x763943[_0x3188('0x45')]['id']}},_0x1b40b1={};_0x1b40b1['model']=_[_0x3188('0x31')](db['Integration'][_0x3188('0x2b')]);_0x1b40b1[_0x3188('0x30')]=_[_0x3188('0x31')](_0x763943[_0x3188('0x30')]);_0x1b40b1['filters']=_[_0x3188('0x33')](_0x1b40b1[_0x3188('0x2f')],_0x1b40b1[_0x3188('0x30')]);_0x3e5f90[_0x3188('0x34')]=_[_0x3188('0x33')](_0x1b40b1['model'],qs['fields'](_0x763943[_0x3188('0x30')][_0x3188('0x35')]));_0x3e5f90['attributes']=_0x3e5f90[_0x3188('0x34')][_0x3188('0x36')]?_0x3e5f90['attributes']:_0x1b40b1[_0x3188('0x2f')];if(_0x763943[_0x3188('0x30')][_0x3188('0x42')]){_0x3e5f90[_0x3188('0x43')]=[{'all':!![]}];}_0x3e5f90=_[_0x3188('0x3e')]({},_0x3e5f90,_0x763943['options']);return db[_0x3188('0x41')]['find'](_0x3e5f90)[_0x3188('0x23')](handleEntityNotFound(_0x28c224,null))[_0x3188('0x23')](respondWithResult(_0x28c224,null))[_0x3188('0x46')](handleError(_0x28c224,null));};exports[_0x3188('0x47')]=function(_0xe4cbb0,_0x315524){return db[_0x3188('0x41')][_0x3188('0x47')](_0xe4cbb0[_0x3188('0x48')],{})[_0x3188('0x23')](respondWithResult(_0x315524,0xc9))[_0x3188('0x46')](handleError(_0x315524,null));};exports['update']=function(_0x50fd56,_0x1b012d){if(_0x50fd56['body']['id']){delete _0x50fd56[_0x3188('0x48')]['id'];}return db[_0x3188('0x41')]['find']({'where':{'id':_0x50fd56[_0x3188('0x45')]['id']}})[_0x3188('0x23')](handleEntityNotFound(_0x1b012d,null))[_0x3188('0x23')](saveUpdates(_0x50fd56[_0x3188('0x48')],null))[_0x3188('0x23')](respondWithResult(_0x1b012d,null))[_0x3188('0x46')](handleError(_0x1b012d,null));};exports[_0x3188('0x24')]=function(_0x1e3592,_0x59a177){return db[_0x3188('0x41')][_0x3188('0x49')]({'where':{'id':_0x1e3592['params']['id']}})[_0x3188('0x23')](handleEntityNotFound(_0x59a177,null))['then'](removeEntity(_0x59a177,null))[_0x3188('0x46')](handleError(_0x59a177,null));};
\ No newline at end of file
+var _0xb016=['eml-format','rimraf','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','end','error','name','send','index','map','Integration','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','params','update','find','body'];(function(_0x30b108,_0x1f5d2a){var _0x5697b9=function(_0x31a96e){while(--_0x31a96e){_0x30b108['push'](_0x30b108['shift']());}};_0x5697b9(++_0x1f5d2a);}(_0xb016,0x159));var _0x6b01=function(_0xbce236,_0x16207d){_0xbce236=_0xbce236-0x0;var _0x109c1c=_0xb016[_0xbce236];return _0x109c1c;};'use strict';var emlformat=require(_0x6b01('0x0'));var rimraf=require(_0x6b01('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x6b01('0x2'));var moment=require('moment');var BPromise=require(_0x6b01('0x3'));var Mustache=require(_0x6b01('0x4'));var util=require(_0x6b01('0x5'));var path=require(_0x6b01('0x6'));var sox=require('sox');var csv=require(_0x6b01('0x7'));var ejs=require(_0x6b01('0x8'));var fs=require('fs');var fs_extra=require(_0x6b01('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x6b01('0xa'));var jsforce=require(_0x6b01('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x6b01('0xc'));var Papa=require(_0x6b01('0xd'));var Redis=require(_0x6b01('0xe'));var authService=require(_0x6b01('0xf'));var qs=require(_0x6b01('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x6b01('0x11'))(_0x6b01('0x12'));var utils=require(_0x6b01('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x6b01('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x51f976,_0x26f2a0){_0x26f2a0=_0x26f2a0||0xcc;return function(_0x4fa826){if(_0x4fa826){return _0x51f976[_0x6b01('0x15')](_0x26f2a0);}return _0x51f976[_0x6b01('0x16')](_0x26f2a0)['end']();};}function respondWithResult(_0x2c305e,_0x4ea5fa){_0x4ea5fa=_0x4ea5fa||0xc8;return function(_0x50d778){if(_0x50d778){return _0x2c305e['status'](_0x4ea5fa)[_0x6b01('0x17')](_0x50d778);}};}function respondWithFilteredResult(_0x4cbd38,_0x5b2f60){return function(_0x3a259f){if(_0x3a259f){var _0x327e86=typeof _0x5b2f60[_0x6b01('0x18')]===_0x6b01('0x19')&&typeof _0x5b2f60[_0x6b01('0x1a')]===_0x6b01('0x19');var _0x122769=_0x3a259f[_0x6b01('0x1b')];var _0x9c6571=_0x327e86?0x0:_0x5b2f60[_0x6b01('0x18')];var _0x18f336=_0x327e86?_0x3a259f['count']:_0x5b2f60[_0x6b01('0x18')]+_0x5b2f60[_0x6b01('0x1a')];var _0x3b0bab;if(_0x18f336>=_0x122769){_0x18f336=_0x122769;_0x3b0bab=0xc8;}else{_0x3b0bab=0xce;}_0x4cbd38[_0x6b01('0x16')](_0x3b0bab);return _0x4cbd38[_0x6b01('0x1c')](_0x6b01('0x1d'),_0x9c6571+'-'+_0x18f336+'/'+_0x122769)[_0x6b01('0x17')](_0x3a259f);}return null;};}function patchUpdates(_0x3c0573){return function(_0x54a942){try{jsonpatch[_0x6b01('0x1e')](_0x54a942,_0x3c0573,!![]);}catch(_0xc1f453){return BPromise[_0x6b01('0x1f')](_0xc1f453);}return _0x54a942[_0x6b01('0x20')]();};}function saveUpdates(_0x1fced4,_0x181b09){return function(_0x2cea6e){if(_0x2cea6e){return _0x2cea6e['update'](_0x1fced4)[_0x6b01('0x21')](function(_0xcf9200){return _0xcf9200;});}return null;};}function removeEntity(_0x42c990,_0x51243c){return function(_0x399808){if(_0x399808){return _0x399808[_0x6b01('0x22')]()[_0x6b01('0x21')](function(){_0x42c990[_0x6b01('0x16')](0xcc)[_0x6b01('0x23')]();});}};}function handleEntityNotFound(_0x2456e9,_0x1b46fb){return function(_0x136452){if(!_0x136452){_0x2456e9[_0x6b01('0x15')](0x194);}return _0x136452;};}function handleError(_0x152dda,_0x3c0607){_0x3c0607=_0x3c0607||0x1f4;return function(_0xa846d8){logger[_0x6b01('0x24')](_0xa846d8['stack']);if(_0xa846d8[_0x6b01('0x25')]){delete _0xa846d8[_0x6b01('0x25')];}_0x152dda[_0x6b01('0x16')](_0x3c0607)[_0x6b01('0x26')](_0xa846d8);};}exports[_0x6b01('0x27')]=function(_0x528cbd,_0x54f030){var _0x3fae61={},_0x3df3d4={},_0xc574c={'count':0x0,'rows':[]};var _0x8883d1=_[_0x6b01('0x28')](db[_0x6b01('0x29')]['rawAttributes'],function(_0x39f193){return{'name':_0x39f193['fieldName'],'type':_0x39f193[_0x6b01('0x2a')]['key']};});_0x3df3d4[_0x6b01('0x2b')]=_[_0x6b01('0x28')](_0x8883d1,_0x6b01('0x25'));_0x3df3d4[_0x6b01('0x2c')]=_[_0x6b01('0x2d')](_0x528cbd['query']);_0x3df3d4[_0x6b01('0x2e')]=_[_0x6b01('0x2f')](_0x3df3d4[_0x6b01('0x2b')],_0x3df3d4['query']);_0x3fae61['attributes']=_[_0x6b01('0x2f')](_0x3df3d4['model'],qs[_0x6b01('0x30')](_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x30')]));_0x3fae61['attributes']=_0x3fae61[_0x6b01('0x31')][_0x6b01('0x32')]?_0x3fae61[_0x6b01('0x31')]:_0x3df3d4['model'];if(!_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x33')](_0x6b01('0x34'))){_0x3fae61[_0x6b01('0x1a')]=qs[_0x6b01('0x1a')](_0x528cbd['query'][_0x6b01('0x1a')]);_0x3fae61[_0x6b01('0x18')]=qs[_0x6b01('0x18')](_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x18')]);}_0x3fae61[_0x6b01('0x35')]=qs[_0x6b01('0x36')](_0x528cbd[_0x6b01('0x2c')]['sort']);_0x3fae61[_0x6b01('0x37')]=qs['filters'](_[_0x6b01('0x38')](_0x528cbd[_0x6b01('0x2c')],_0x3df3d4[_0x6b01('0x2e')]),_0x8883d1);if(_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x39')]){_0x3fae61[_0x6b01('0x37')]=_[_0x6b01('0x3a')](_0x3fae61['where'],{'$or':_[_0x6b01('0x28')](_0x8883d1,function(_0x15f274){if(_0x15f274[_0x6b01('0x2a')]!==_0x6b01('0x3b')){var _0x1ca3aa={};_0x1ca3aa[_0x15f274[_0x6b01('0x25')]]={'$like':'%'+_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x39')]+'%'};return _0x1ca3aa;}})});}_0x3fae61=_['merge']({},_0x3fae61,_0x528cbd[_0x6b01('0x3c')]);var _0x55907f={'where':_0x3fae61[_0x6b01('0x37')]};return db[_0x6b01('0x29')]['count'](_0x55907f)[_0x6b01('0x21')](function(_0x2e661b){_0xc574c[_0x6b01('0x1b')]=_0x2e661b;if(_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x3d')]){_0x3fae61[_0x6b01('0x3e')]=[{'all':!![]}];}return db[_0x6b01('0x29')][_0x6b01('0x3f')](_0x3fae61);})[_0x6b01('0x21')](function(_0x17f335){_0xc574c['rows']=_0x17f335;return _0xc574c;})[_0x6b01('0x21')](respondWithFilteredResult(_0x54f030,_0x3fae61))[_0x6b01('0x40')](handleError(_0x54f030,null));};exports['show']=function(_0x52cec0,_0x32b9ec){var _0xd11195={'raw':![],'where':{'id':_0x52cec0[_0x6b01('0x41')]['id']}},_0x558ec1={};_0x558ec1[_0x6b01('0x2b')]=_['keys'](db[_0x6b01('0x29')]['rawAttributes']);_0x558ec1[_0x6b01('0x2c')]=_[_0x6b01('0x2d')](_0x52cec0[_0x6b01('0x2c')]);_0x558ec1['filters']=_[_0x6b01('0x2f')](_0x558ec1[_0x6b01('0x2b')],_0x558ec1['query']);_0xd11195['attributes']=_['intersection'](_0x558ec1[_0x6b01('0x2b')],qs[_0x6b01('0x30')](_0x52cec0[_0x6b01('0x2c')][_0x6b01('0x30')]));_0xd11195[_0x6b01('0x31')]=_0xd11195[_0x6b01('0x31')]['length']?_0xd11195[_0x6b01('0x31')]:_0x558ec1[_0x6b01('0x2b')];if(_0x52cec0[_0x6b01('0x2c')][_0x6b01('0x3d')]){_0xd11195[_0x6b01('0x3e')]=[{'all':!![]}];}_0xd11195=_[_0x6b01('0x3a')]({},_0xd11195,_0x52cec0['options']);return db[_0x6b01('0x29')]['find'](_0xd11195)['then'](handleEntityNotFound(_0x32b9ec,null))[_0x6b01('0x21')](respondWithResult(_0x32b9ec,null))[_0x6b01('0x40')](handleError(_0x32b9ec,null));};exports['create']=function(_0x408bb0,_0x27442e){return db[_0x6b01('0x29')]['create'](_0x408bb0['body'],{})['then'](respondWithResult(_0x27442e,0xc9))[_0x6b01('0x40')](handleError(_0x27442e,null));};exports[_0x6b01('0x42')]=function(_0x518d94,_0x34cef6){if(_0x518d94['body']['id']){delete _0x518d94['body']['id'];}return db['Integration'][_0x6b01('0x43')]({'where':{'id':_0x518d94[_0x6b01('0x41')]['id']}})['then'](handleEntityNotFound(_0x34cef6,null))['then'](saveUpdates(_0x518d94[_0x6b01('0x44')],null))['then'](respondWithResult(_0x34cef6,null))[_0x6b01('0x40')](handleError(_0x34cef6,null));};exports[_0x6b01('0x22')]=function(_0x32d446,_0x172a56){return db[_0x6b01('0x29')]['find']({'where':{'id':_0x32d446[_0x6b01('0x41')]['id']}})[_0x6b01('0x21')](handleEntityNotFound(_0x172a56,null))[_0x6b01('0x21')](removeEntity(_0x172a56,null))['catch'](handleError(_0x172a56,null));};
\ No newline at end of file
index ddcbc54..872c9cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x937b=['./integration.attributes','exports','define','Integration','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x13b392,_0x3481f2){var _0x39db24=function(_0xab91e5){while(--_0xab91e5){_0x13b392['push'](_0x13b392['shift']());}};_0x39db24(++_0x3481f2);}(_0x937b,0x79));var _0xb937=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x937b[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xb937('0x0'));var util=require(_0xb937('0x1'));var logger=require(_0xb937('0x2'))('api');var moment=require(_0xb937('0x3'));var BPromise=require(_0xb937('0x4'));var rp=require(_0xb937('0x5'));var fs=require('fs');var path=require(_0xb937('0x6'));var rimraf=require(_0xb937('0x7'));var config=require(_0xb937('0x8'));var attributes=require(_0xb937('0x9'));module[_0xb937('0xa')]=function(_0x63b2fa,_0x5a4fd2){return _0x63b2fa[_0xb937('0xb')](_0xb937('0xc'),attributes,{'tableName':'integrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe518=['./integration.attributes','exports','define','Integration','util','../../config/logger','api','moment','bluebird','path','rimraf'];(function(_0x51e266,_0x5d84b6){var _0x268fb1=function(_0xf8de84){while(--_0xf8de84){_0x51e266['push'](_0x51e266['shift']());}};_0x268fb1(++_0x5d84b6);}(_0xe518,0xbf));var _0x8e51=function(_0x3fccfe,_0x580ddd){_0x3fccfe=_0x3fccfe-0x0;var _0x15c8c9=_0xe518[_0x3fccfe];return _0x15c8c9;};'use strict';var _=require('lodash');var util=require(_0x8e51('0x0'));var logger=require(_0x8e51('0x1'))(_0x8e51('0x2'));var moment=require(_0x8e51('0x3'));var BPromise=require(_0x8e51('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8e51('0x5'));var rimraf=require(_0x8e51('0x6'));var config=require('../../config/environment');var attributes=require(_0x8e51('0x7'));module[_0x8e51('0x8')]=function(_0x1319d3,_0x3f5da3){return _0x1319d3[_0x8e51('0x9')](_0x8e51('0xa'),attributes,{'tableName':'integrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3e8cba1..4ca42fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a85=['../../config/logger','rpc','jayson/promise','http','info','Integration,\x20%s,\x20%s','request\x20sent','debug','Integration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','../../config/utils'];(function(_0x16bf74,_0x1251ee){var _0x3eac3b=function(_0x5012fd){while(--_0x5012fd){_0x16bf74['push'](_0x16bf74['shift']());}};_0x3eac3b(++_0x1251ee);}(_0x1a85,0x178));var _0x51a8=function(_0xa03344,_0x581292){_0xa03344=_0xa03344-0x0;var _0x38acfd=_0x1a85[_0xa03344];return _0x38acfd;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x51a8('0x0'));var BPromise=require(_0x51a8('0x1'));var rs=require(_0x51a8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x51a8('0x3'));var logger=require(_0x51a8('0x4'))(_0x51a8('0x5'));var config=require('../../config/environment');var jayson=require(_0x51a8('0x6'));var client=jayson['client'][_0x51a8('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5cf430,_0x331117,_0x16a21e){return new BPromise(function(_0x4f3919,_0x228c64){return client['request'](_0x5cf430,_0x16a21e)['then'](function(_0x39e06a){logger[_0x51a8('0x8')](_0x51a8('0x9'),_0x331117,_0x51a8('0xa'));logger[_0x51a8('0xb')](_0x51a8('0xc'),_0x331117,_0x51a8('0xa'),JSON[_0x51a8('0xd')](_0x39e06a));if(_0x39e06a[_0x51a8('0xe')]){if(_0x39e06a[_0x51a8('0xe')][_0x51a8('0xf')]===0x1f4){logger[_0x51a8('0xe')](_0x51a8('0x9'),_0x331117,_0x39e06a[_0x51a8('0xe')][_0x51a8('0x10')]);return _0x228c64(_0x39e06a[_0x51a8('0xe')][_0x51a8('0x10')]);}logger['error'](_0x51a8('0x9'),_0x331117,_0x39e06a[_0x51a8('0xe')][_0x51a8('0x10')]);return _0x4f3919(_0x39e06a['error'][_0x51a8('0x10')]);}else{logger['info'](_0x51a8('0x9'),_0x331117,_0x51a8('0xa'));_0x4f3919(_0x39e06a[_0x51a8('0x11')][_0x51a8('0x10')]);}})[_0x51a8('0x12')](function(_0x3e0603){logger[_0x51a8('0xe')]('Integration,\x20%s,\x20%s',_0x331117,_0x3e0603);_0x228c64(_0x3e0603);});});}
\ No newline at end of file
+var _0x14a0=['../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','then','debug','request\x20sent','stringify','error','code','Integration,\x20%s,\x20%s','message','info','result','catch','util','moment','bluebird','randomstring','ioredis'];(function(_0x139229,_0x236164){var _0xa15684=function(_0x107918){while(--_0x107918){_0x139229['push'](_0x139229['shift']());}};_0xa15684(++_0x236164);}(_0x14a0,0x8e));var _0x014a=function(_0x7ca44f,_0x38f5d4){_0x7ca44f=_0x7ca44f-0x0;var _0x6e86d9=_0x14a0[_0x7ca44f];return _0x6e86d9;};'use strict';var _=require('lodash');var util=require(_0x014a('0x0'));var moment=require(_0x014a('0x1'));var BPromise=require(_0x014a('0x2'));var rs=require(_0x014a('0x3'));var fs=require('fs');var Redis=require(_0x014a('0x4'));var db=require(_0x014a('0x5'))['db'];var utils=require(_0x014a('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x014a('0x7'));var jayson=require(_0x014a('0x8'));var client=jayson[_0x014a('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5a61ac,_0x11b8ce,_0x6d05f2){return new BPromise(function(_0x22f17c,_0x4d943b){return client['request'](_0x5a61ac,_0x6d05f2)[_0x014a('0xa')](function(_0x4f5506){logger['info']('Integration,\x20%s,\x20%s',_0x11b8ce,'request\x20sent');logger[_0x014a('0xb')]('Integration,\x20%s,\x20%s,\x20%s',_0x11b8ce,_0x014a('0xc'),JSON[_0x014a('0xd')](_0x4f5506));if(_0x4f5506['error']){if(_0x4f5506[_0x014a('0xe')][_0x014a('0xf')]===0x1f4){logger[_0x014a('0xe')](_0x014a('0x10'),_0x11b8ce,_0x4f5506[_0x014a('0xe')][_0x014a('0x11')]);return _0x4d943b(_0x4f5506[_0x014a('0xe')][_0x014a('0x11')]);}logger[_0x014a('0xe')](_0x014a('0x10'),_0x11b8ce,_0x4f5506[_0x014a('0xe')][_0x014a('0x11')]);return _0x22f17c(_0x4f5506['error'][_0x014a('0x11')]);}else{logger[_0x014a('0x12')]('Integration,\x20%s,\x20%s',_0x11b8ce,_0x014a('0xc'));_0x22f17c(_0x4f5506[_0x014a('0x13')]['message']);}})[_0x014a('0x14')](function(_0x17e4be){logger[_0x014a('0xe')](_0x014a('0x10'),_0x11b8ce,_0x17e4be);_0x4d943b(_0x17e4be);});});}
\ No newline at end of file
index dd08be7..f166bc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x31b315,_0x320116){var _0x352464=function(_0x1a8e12){while(--_0x1a8e12){_0x31b315['push'](_0x31b315['shift']());}};_0x352464(++_0x320116);}(_0x4975,0x86));var _0x5497=function(_0x5e3dca,_0x4193c5){_0x5e3dca=_0x5e3dca-0x0;var _0x200653=_0x4975[_0x5e3dca];return _0x200653;};'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
+var _0xda2d=['show','create','put','/:id','update','delete','util','path','connect-timeout','express','Router','../../config/environment','./integrationReport.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0xda2d,0x102));var _0xdda2=function(_0x3da547,_0x4c6e1d){_0x3da547=_0x3da547-0x0;var _0x4281ba=_0xda2d[_0x3da547];return _0x4281ba;};'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('0x7')]('/:id',auth[_0xdda2('0x8')](),controller[_0xdda2('0xc')]);router['post']('/',auth[_0xdda2('0x8')](),controller[_0xdda2('0xd')]);router[_0xdda2('0xe')](_0xdda2('0xf'),auth[_0xdda2('0x8')](),controller[_0xdda2('0x10')]);router[_0xdda2('0x11')](_0xdda2('0xf'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index b75f7ba..0d619cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d35=['SENDING','FAILED','STRING','DATE','INTEGER','BOOLEAN','TEXT','ENUM'];(function(_0x575bfa,_0x2913aa){var _0x1a3f34=function(_0x5d0da1){while(--_0x5d0da1){_0x575bfa['push'](_0x575bfa['shift']());}};_0x1a3f34(++_0x2913aa);}(_0x1d35,0x142));var _0x51d3=function(_0x40e21d,_0xe32def){_0x40e21d=_0x40e21d-0x0;var _0x30f13e=_0x1d35[_0x40e21d];return _0x30f13e;};'use strict';var Sequelize=require('sequelize');module['exports']={'integration':{'type':Sequelize['STRING']},'eventChannel':{'type':Sequelize['STRING']},'exitStatus':{'type':Sequelize[_0x51d3('0x0')]},'ticketId':{'type':Sequelize[_0x51d3('0x0')]},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize[_0x51d3('0x0')]},'uniqueid':{'type':Sequelize[_0x51d3('0x0')]},'calleridnum':{'type':Sequelize[_0x51d3('0x0')]},'calleridname':{'type':Sequelize[_0x51d3('0x0')]},'queue':{'type':Sequelize[_0x51d3('0x0')]},'interface':{'type':Sequelize[_0x51d3('0x0')]},'membername':{'type':Sequelize[_0x51d3('0x0')]},'agentcalledAt':{'type':Sequelize[_0x51d3('0x1')]},'agentconnectAt':{'type':Sequelize[_0x51d3('0x1')]},'holdtime':{'type':Sequelize[_0x51d3('0x2')]},'agentcomplete':{'type':Sequelize[_0x51d3('0x3')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x51d3('0x1')]},'talktime':{'type':Sequelize['INTEGER']},'agentacw':{'type':Sequelize[_0x51d3('0x3')],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize['STRING']},'agentringnoanswer':{'type':Sequelize[_0x51d3('0x3')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x51d3('0x1')]},'agentdump':{'type':Sequelize[_0x51d3('0x3')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize[_0x51d3('0x0')]},'channel':{'type':Sequelize[_0x51d3('0x0')]},'channelstate':{'type':Sequelize[_0x51d3('0x2')]},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x51d3('0x0')]},'connectedlinename':{'type':Sequelize[_0x51d3('0x0')]},'language':{'type':Sequelize[_0x51d3('0x0')]},'accountcode':{'type':Sequelize[_0x51d3('0x0')]},'context':{'type':Sequelize[_0x51d3('0x0')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x51d3('0x0')]},'destchannel':{'type':Sequelize[_0x51d3('0x0')]},'destchannelstate':{'type':Sequelize[_0x51d3('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x51d3('0x0')]},'destcalleridnum':{'type':Sequelize[_0x51d3('0x0')]},'destcalleridname':{'type':Sequelize[_0x51d3('0x0')]},'destconnectedlinenum':{'type':Sequelize[_0x51d3('0x0')]},'destconnectedlinename':{'type':Sequelize[_0x51d3('0x0')]},'destlanguage':{'type':Sequelize[_0x51d3('0x0')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x51d3('0x0')]},'destexten':{'type':Sequelize[_0x51d3('0x0')]},'destpriority':{'type':Sequelize[_0x51d3('0x0')]},'destuniqueid':{'type':Sequelize['STRING']},'messageId':{'type':Sequelize[_0x51d3('0x0')]},'inReplyTo':{'type':Sequelize[_0x51d3('0x0')]},'subject':{'type':Sequelize[_0x51d3('0x0')]},'from':{'type':Sequelize[_0x51d3('0x0')]},'to':{'type':Sequelize[_0x51d3('0x0')]},'cc':{'type':Sequelize[_0x51d3('0x0')]},'attachment':{'type':Sequelize[_0x51d3('0x4')]},'html':{'type':Sequelize[_0x51d3('0x4')]},'text':{'type':Sequelize[_0x51d3('0x4')]},'status':{'type':Sequelize[_0x51d3('0x5')]('SENT',_0x51d3('0x6'),'RECEIVED',_0x51d3('0x7'))},'url':{'type':Sequelize[_0x51d3('0x0')]},'app':{'type':Sequelize[_0x51d3('0x0')]},'appdata':{'type':Sequelize[_0x51d3('0x0')]},'projectId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x6fe5=['INTEGER','DATE','BOOLEAN','TEXT','ENUM','SENT','SENDING','RECEIVED','FAILED','sequelize','exports','STRING'];(function(_0x513835,_0x93de04){var _0x567b24=function(_0x19dde6){while(--_0x19dde6){_0x513835['push'](_0x513835['shift']());}};_0x567b24(++_0x93de04);}(_0x6fe5,0xbd));var _0x56fe=function(_0x1142ed,_0x59b6b1){_0x1142ed=_0x1142ed-0x0;var _0x49053e=_0x6fe5[_0x1142ed];return _0x49053e;};'use strict';var Sequelize=require(_0x56fe('0x0'));module[_0x56fe('0x1')]={'integration':{'type':Sequelize[_0x56fe('0x2')]},'eventChannel':{'type':Sequelize[_0x56fe('0x2')]},'exitStatus':{'type':Sequelize['STRING']},'ticketId':{'type':Sequelize[_0x56fe('0x2')]},'integrationId':{'type':Sequelize[_0x56fe('0x3')]},'contacts':{'type':Sequelize[_0x56fe('0x2')]},'uniqueid':{'type':Sequelize[_0x56fe('0x2')]},'calleridnum':{'type':Sequelize[_0x56fe('0x2')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x56fe('0x2')]},'interface':{'type':Sequelize[_0x56fe('0x2')]},'membername':{'type':Sequelize[_0x56fe('0x2')]},'agentcalledAt':{'type':Sequelize[_0x56fe('0x4')]},'agentconnectAt':{'type':Sequelize[_0x56fe('0x4')]},'holdtime':{'type':Sequelize[_0x56fe('0x3')]},'agentcomplete':{'type':Sequelize[_0x56fe('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize['DATE']},'talktime':{'type':Sequelize[_0x56fe('0x3')]},'agentacw':{'type':Sequelize[_0x56fe('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize['STRING']},'agentringnoanswer':{'type':Sequelize[_0x56fe('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x56fe('0x4')]},'agentdump':{'type':Sequelize[_0x56fe('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x56fe('0x4')]},'lastevent':{'type':Sequelize[_0x56fe('0x2')]},'channel':{'type':Sequelize[_0x56fe('0x2')]},'channelstate':{'type':Sequelize[_0x56fe('0x3')]},'channelstatedesc':{'type':Sequelize[_0x56fe('0x2')]},'connectedlinenum':{'type':Sequelize[_0x56fe('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x56fe('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x56fe('0x2')]},'priority':{'type':Sequelize[_0x56fe('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0x56fe('0x2')]},'destcalleridnum':{'type':Sequelize[_0x56fe('0x2')]},'destcalleridname':{'type':Sequelize[_0x56fe('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x56fe('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x56fe('0x2')]},'destlanguage':{'type':Sequelize[_0x56fe('0x2')]},'destaccountcode':{'type':Sequelize[_0x56fe('0x2')]},'destcontext':{'type':Sequelize[_0x56fe('0x2')]},'destexten':{'type':Sequelize[_0x56fe('0x2')]},'destpriority':{'type':Sequelize[_0x56fe('0x2')]},'destuniqueid':{'type':Sequelize[_0x56fe('0x2')]},'messageId':{'type':Sequelize[_0x56fe('0x2')]},'inReplyTo':{'type':Sequelize[_0x56fe('0x2')]},'subject':{'type':Sequelize[_0x56fe('0x2')]},'from':{'type':Sequelize[_0x56fe('0x2')]},'to':{'type':Sequelize[_0x56fe('0x2')]},'cc':{'type':Sequelize[_0x56fe('0x2')]},'attachment':{'type':Sequelize[_0x56fe('0x6')]},'html':{'type':Sequelize['TEXT']},'text':{'type':Sequelize[_0x56fe('0x6')]},'status':{'type':Sequelize[_0x56fe('0x7')](_0x56fe('0x8'),_0x56fe('0x9'),_0x56fe('0xa'),_0x56fe('0xb'))},'url':{'type':Sequelize[_0x56fe('0x2')]},'app':{'type':Sequelize['STRING']},'appdata':{'type':Sequelize[_0x56fe('0x2')]},'projectId':{'type':Sequelize[_0x56fe('0x3')]}};
\ No newline at end of file
index e3eff67..6c5a37b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaa7=['sort','where','pick','filters','filter','type','VIRTUAL','merge','options','includeAll','findAll','catch','show','include','find','create','body','params','describe','rimraf','zip-dir','request-promise','moment','sox','to-csv','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','count','offset','reject','update','then','destroy','error','stack','name','index','map','IntegrationReport','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order'];(function(_0x48bdc9,_0x3ec482){var _0x75dbd6=function(_0x50364a){while(--_0x50364a){_0x48bdc9['push'](_0x48bdc9['shift']());}};_0x75dbd6(++_0x3ec482);}(_0xbaa7,0x1c3));var _0x7baa=function(_0x33032e,_0x31411a){_0x33032e=_0x33032e-0x0;var _0x13316b=_0xbaa7[_0x33032e];return _0x13316b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7baa('0x0'));var zipdir=require(_0x7baa('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7baa('0x2'));var moment=require(_0x7baa('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x7baa('0x4'));var csv=require(_0x7baa('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7baa('0x6'));var _=require(_0x7baa('0x7'));var squel=require(_0x7baa('0x8'));var crypto=require(_0x7baa('0x9'));var jsforce=require(_0x7baa('0xa'));var deskjs=require(_0x7baa('0xb'));var toCsv=require(_0x7baa('0x5'));var querystring=require(_0x7baa('0xc'));var Papa=require('papaparse');var Redis=require(_0x7baa('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x7baa('0xe'));var as=require(_0x7baa('0xf'));var hardwareService=require(_0x7baa('0x10'));var logger=require(_0x7baa('0x11'))(_0x7baa('0x12'));var utils=require(_0x7baa('0x13'));var config=require(_0x7baa('0x14'));var licenseUtil=require(_0x7baa('0x15'));var db=require(_0x7baa('0x16'))['db'];function respondWithStatusCode(_0x346485,_0x211441){_0x211441=_0x211441||0xcc;return function(_0x57e359){if(_0x57e359){return _0x346485[_0x7baa('0x17')](_0x211441);}return _0x346485[_0x7baa('0x18')](_0x211441)[_0x7baa('0x19')]();};}function respondWithResult(_0x5b5b0c,_0x48e052){_0x48e052=_0x48e052||0xc8;return function(_0xb0f6f9){if(_0xb0f6f9){return _0x5b5b0c[_0x7baa('0x18')](_0x48e052)[_0x7baa('0x1a')](_0xb0f6f9);}};}function respondWithFilteredResult(_0x16a42b,_0x402546){return function(_0x9ef4cf){if(_0x9ef4cf){var _0x4c320d=typeof _0x402546['offset']===_0x7baa('0x1b')&&typeof _0x402546[_0x7baa('0x1c')]===_0x7baa('0x1b');var _0xa2e689=_0x9ef4cf[_0x7baa('0x1d')];var _0x4930ab=_0x4c320d?0x0:_0x402546[_0x7baa('0x1e')];var _0x4a0be9=_0x4c320d?_0x9ef4cf[_0x7baa('0x1d')]:_0x402546[_0x7baa('0x1e')]+_0x402546[_0x7baa('0x1c')];var _0x1893eb;if(_0x4a0be9>=_0xa2e689){_0x4a0be9=_0xa2e689;_0x1893eb=0xc8;}else{_0x1893eb=0xce;}_0x16a42b[_0x7baa('0x18')](_0x1893eb);return _0x16a42b['set']('Content-Range',_0x4930ab+'-'+_0x4a0be9+'/'+_0xa2e689)['json'](_0x9ef4cf);}return null;};}function patchUpdates(_0x361fa3){return function(_0x541fef){try{jsonpatch['apply'](_0x541fef,_0x361fa3,!![]);}catch(_0x2caeac){return BPromise[_0x7baa('0x1f')](_0x2caeac);}return _0x541fef['save']();};}function saveUpdates(_0x488ffa,_0x39f1bb){return function(_0x4667ec){if(_0x4667ec){return _0x4667ec[_0x7baa('0x20')](_0x488ffa)[_0x7baa('0x21')](function(_0x4f9310){return _0x4f9310;});}return null;};}function removeEntity(_0x31dd07,_0x959d50){return function(_0x38f4d7){if(_0x38f4d7){return _0x38f4d7[_0x7baa('0x22')]()[_0x7baa('0x21')](function(){_0x31dd07[_0x7baa('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5c49b,_0x3884c5){return function(_0x24e75c){if(!_0x24e75c){_0x5c49b['sendStatus'](0x194);}return _0x24e75c;};}function handleError(_0xc6f069,_0xc73256){_0xc73256=_0xc73256||0x1f4;return function(_0x5230c5){logger[_0x7baa('0x23')](_0x5230c5[_0x7baa('0x24')]);if(_0x5230c5[_0x7baa('0x25')]){delete _0x5230c5[_0x7baa('0x25')];}_0xc6f069[_0x7baa('0x18')](_0xc73256)['send'](_0x5230c5);};}exports[_0x7baa('0x26')]=function(_0x2728a4,_0x30d186){var _0xa6b9d1={},_0x167ade={},_0x55feb9={'count':0x0,'rows':[]};var _0x506003=_[_0x7baa('0x27')](db[_0x7baa('0x28')][_0x7baa('0x29')],function(_0x2322ec){return{'name':_0x2322ec[_0x7baa('0x2a')],'type':_0x2322ec['type'][_0x7baa('0x2b')]};});_0x167ade[_0x7baa('0x2c')]=_['map'](_0x506003,_0x7baa('0x25'));_0x167ade[_0x7baa('0x2d')]=_[_0x7baa('0x2e')](_0x2728a4[_0x7baa('0x2d')]);_0x167ade['filters']=_[_0x7baa('0x2f')](_0x167ade['model'],_0x167ade[_0x7baa('0x2d')]);_0xa6b9d1[_0x7baa('0x30')]=_[_0x7baa('0x2f')](_0x167ade['model'],qs[_0x7baa('0x31')](_0x2728a4['query'][_0x7baa('0x31')]));_0xa6b9d1[_0x7baa('0x30')]=_0xa6b9d1[_0x7baa('0x30')][_0x7baa('0x32')]?_0xa6b9d1[_0x7baa('0x30')]:_0x167ade[_0x7baa('0x2c')];if(!_0x2728a4[_0x7baa('0x2d')][_0x7baa('0x33')]('nolimit')){_0xa6b9d1[_0x7baa('0x1c')]=qs[_0x7baa('0x1c')](_0x2728a4['query'][_0x7baa('0x1c')]);_0xa6b9d1[_0x7baa('0x1e')]=qs[_0x7baa('0x1e')](_0x2728a4['query'][_0x7baa('0x1e')]);}_0xa6b9d1[_0x7baa('0x34')]=qs[_0x7baa('0x35')](_0x2728a4['query']['sort']);_0xa6b9d1[_0x7baa('0x36')]=qs['filters'](_[_0x7baa('0x37')](_0x2728a4[_0x7baa('0x2d')],_0x167ade[_0x7baa('0x38')]),_0x506003);if(_0x2728a4[_0x7baa('0x2d')][_0x7baa('0x39')]){_0xa6b9d1['where']=_['merge'](_0xa6b9d1[_0x7baa('0x36')],{'$or':_[_0x7baa('0x27')](_0x506003,function(_0x20996d){if(_0x20996d[_0x7baa('0x3a')]!==_0x7baa('0x3b')){var _0x4b06d8={};_0x4b06d8[_0x20996d[_0x7baa('0x25')]]={'$like':'%'+_0x2728a4[_0x7baa('0x2d')]['filter']+'%'};return _0x4b06d8;}})});}_0xa6b9d1=_[_0x7baa('0x3c')]({},_0xa6b9d1,_0x2728a4[_0x7baa('0x3d')]);var _0x3dcb35={'where':_0xa6b9d1['where']};return db[_0x7baa('0x28')][_0x7baa('0x1d')](_0x3dcb35)[_0x7baa('0x21')](function(_0xb9ad56){_0x55feb9[_0x7baa('0x1d')]=_0xb9ad56;if(_0x2728a4['query'][_0x7baa('0x3e')]){_0xa6b9d1['include']=[{'all':!![]}];}return db[_0x7baa('0x28')][_0x7baa('0x3f')](_0xa6b9d1);})[_0x7baa('0x21')](function(_0x163bd2){_0x55feb9['rows']=_0x163bd2;return _0x55feb9;})[_0x7baa('0x21')](respondWithFilteredResult(_0x30d186,_0xa6b9d1))[_0x7baa('0x40')](handleError(_0x30d186,null));};exports[_0x7baa('0x41')]=function(_0x41da6f,_0x161871){var _0x5a9360={'raw':![],'where':{'id':_0x41da6f['params']['id']}},_0x34fc89={};_0x34fc89[_0x7baa('0x2c')]=_[_0x7baa('0x2e')](db['IntegrationReport']['rawAttributes']);_0x34fc89[_0x7baa('0x2d')]=_[_0x7baa('0x2e')](_0x41da6f['query']);_0x34fc89[_0x7baa('0x38')]=_[_0x7baa('0x2f')](_0x34fc89['model'],_0x34fc89[_0x7baa('0x2d')]);_0x5a9360['attributes']=_[_0x7baa('0x2f')](_0x34fc89['model'],qs[_0x7baa('0x31')](_0x41da6f[_0x7baa('0x2d')][_0x7baa('0x31')]));_0x5a9360['attributes']=_0x5a9360[_0x7baa('0x30')][_0x7baa('0x32')]?_0x5a9360['attributes']:_0x34fc89[_0x7baa('0x2c')];if(_0x41da6f['query']['includeAll']){_0x5a9360[_0x7baa('0x42')]=[{'all':!![]}];}_0x5a9360=_[_0x7baa('0x3c')]({},_0x5a9360,_0x41da6f[_0x7baa('0x3d')]);return db[_0x7baa('0x28')][_0x7baa('0x43')](_0x5a9360)['then'](handleEntityNotFound(_0x161871,null))[_0x7baa('0x21')](respondWithResult(_0x161871,null))[_0x7baa('0x40')](handleError(_0x161871,null));};exports['create']=function(_0x5b191c,_0x2266af){return db[_0x7baa('0x28')][_0x7baa('0x44')](_0x5b191c['body'],{})[_0x7baa('0x21')](respondWithResult(_0x2266af,0xc9))[_0x7baa('0x40')](handleError(_0x2266af,null));};exports[_0x7baa('0x20')]=function(_0x287290,_0x48b5f6){if(_0x287290['body']['id']){delete _0x287290[_0x7baa('0x45')]['id'];}return db[_0x7baa('0x28')]['find']({'where':{'id':_0x287290['params']['id']}})[_0x7baa('0x21')](handleEntityNotFound(_0x48b5f6,null))[_0x7baa('0x21')](saveUpdates(_0x287290['body'],null))[_0x7baa('0x21')](respondWithResult(_0x48b5f6,null))[_0x7baa('0x40')](handleError(_0x48b5f6,null));};exports[_0x7baa('0x22')]=function(_0x1f3bb9,_0x3336b4){return db[_0x7baa('0x28')][_0x7baa('0x43')]({'where':{'id':_0x1f3bb9[_0x7baa('0x46')]['id']}})['then'](handleEntityNotFound(_0x3336b4,null))[_0x7baa('0x21')](removeEntity(_0x3336b4,null))['catch'](handleError(_0x3336b4,null));};exports[_0x7baa('0x47')]=function(_0x27b862,_0xcffdc3){return db[_0x7baa('0x28')][_0x7baa('0x47')]()[_0x7baa('0x21')](respondWithResult(_0xcffdc3,null))[_0x7baa('0x40')](handleError(_0xcffdc3,null));};
\ No newline at end of file
+var _0xfb12=['query','keys','filters','intersection','attributes','length','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','findAll','catch','show','params','rawAttributes','fields','include','find','create','body','describe','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','reject','save','update','then','destroy','error','name','send','index','map','IntegrationReport','model'];(function(_0x5cb633,_0x163669){var _0x4558d7=function(_0x26461a){while(--_0x26461a){_0x5cb633['push'](_0x5cb633['shift']());}};_0x4558d7(++_0x163669);}(_0xfb12,0x13c));var _0x2fb1=function(_0x2ac0b0,_0x115490){_0x2ac0b0=_0x2ac0b0-0x0;var _0x352688=_0xfb12[_0x2ac0b0];return _0x352688;};'use strict';var emlformat=require(_0x2fb1('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x2fb1('0x1'));var rp=require(_0x2fb1('0x2'));var moment=require(_0x2fb1('0x3'));var BPromise=require(_0x2fb1('0x4'));var Mustache=require(_0x2fb1('0x5'));var util=require(_0x2fb1('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x2fb1('0x7'));var ejs=require(_0x2fb1('0x8'));var fs=require('fs');var fs_extra=require(_0x2fb1('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x2fb1('0xa'));var jsforce=require(_0x2fb1('0xb'));var deskjs=require(_0x2fb1('0xc'));var toCsv=require(_0x2fb1('0x7'));var querystring=require(_0x2fb1('0xd'));var Papa=require(_0x2fb1('0xe'));var Redis=require(_0x2fb1('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x2fb1('0x10'));var hardwareService=require(_0x2fb1('0x11'));var logger=require(_0x2fb1('0x12'))(_0x2fb1('0x13'));var utils=require(_0x2fb1('0x14'));var config=require(_0x2fb1('0x15'));var licenseUtil=require(_0x2fb1('0x16'));var db=require(_0x2fb1('0x17'))['db'];function respondWithStatusCode(_0x4e85cc,_0x4731f3){_0x4731f3=_0x4731f3||0xcc;return function(_0x3c415e){if(_0x3c415e){return _0x4e85cc[_0x2fb1('0x18')](_0x4731f3);}return _0x4e85cc[_0x2fb1('0x19')](_0x4731f3)['end']();};}function respondWithResult(_0x2a5941,_0x329802){_0x329802=_0x329802||0xc8;return function(_0x583e9c){if(_0x583e9c){return _0x2a5941[_0x2fb1('0x19')](_0x329802)[_0x2fb1('0x1a')](_0x583e9c);}};}function respondWithFilteredResult(_0x4d21eb,_0x4165a7){return function(_0x49edc0){if(_0x49edc0){var _0x4056a3=typeof _0x4165a7[_0x2fb1('0x1b')]===_0x2fb1('0x1c')&&typeof _0x4165a7[_0x2fb1('0x1d')]===_0x2fb1('0x1c');var _0x24b5af=_0x49edc0[_0x2fb1('0x1e')];var _0x1b9472=_0x4056a3?0x0:_0x4165a7[_0x2fb1('0x1b')];var _0x3efa7d=_0x4056a3?_0x49edc0[_0x2fb1('0x1e')]:_0x4165a7[_0x2fb1('0x1b')]+_0x4165a7[_0x2fb1('0x1d')];var _0xe5be50;if(_0x3efa7d>=_0x24b5af){_0x3efa7d=_0x24b5af;_0xe5be50=0xc8;}else{_0xe5be50=0xce;}_0x4d21eb[_0x2fb1('0x19')](_0xe5be50);return _0x4d21eb[_0x2fb1('0x1f')]('Content-Range',_0x1b9472+'-'+_0x3efa7d+'/'+_0x24b5af)[_0x2fb1('0x1a')](_0x49edc0);}return null;};}function patchUpdates(_0x51e3d8){return function(_0x3f42ad){try{jsonpatch['apply'](_0x3f42ad,_0x51e3d8,!![]);}catch(_0x52fa03){return BPromise[_0x2fb1('0x20')](_0x52fa03);}return _0x3f42ad[_0x2fb1('0x21')]();};}function saveUpdates(_0x55a0a6,_0x1b7256){return function(_0xed7c4a){if(_0xed7c4a){return _0xed7c4a[_0x2fb1('0x22')](_0x55a0a6)[_0x2fb1('0x23')](function(_0x57f767){return _0x57f767;});}return null;};}function removeEntity(_0x2494c3,_0x4e210a){return function(_0x5ed6ca){if(_0x5ed6ca){return _0x5ed6ca[_0x2fb1('0x24')]()[_0x2fb1('0x23')](function(){_0x2494c3['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1de105,_0x4addd9){return function(_0xb4ff9c){if(!_0xb4ff9c){_0x1de105[_0x2fb1('0x18')](0x194);}return _0xb4ff9c;};}function handleError(_0x40b279,_0x4a14e0){_0x4a14e0=_0x4a14e0||0x1f4;return function(_0x1476a3){logger[_0x2fb1('0x25')](_0x1476a3['stack']);if(_0x1476a3[_0x2fb1('0x26')]){delete _0x1476a3[_0x2fb1('0x26')];}_0x40b279[_0x2fb1('0x19')](_0x4a14e0)[_0x2fb1('0x27')](_0x1476a3);};}exports[_0x2fb1('0x28')]=function(_0x30e2d5,_0x2ed9e2){var _0x1af8e4={},_0xc6bc81={},_0x3c2ef8={'count':0x0,'rows':[]};var _0x22ecd5=_[_0x2fb1('0x29')](db[_0x2fb1('0x2a')]['rawAttributes'],function(_0x2d5b63){return{'name':_0x2d5b63['fieldName'],'type':_0x2d5b63['type']['key']};});_0xc6bc81[_0x2fb1('0x2b')]=_['map'](_0x22ecd5,_0x2fb1('0x26'));_0xc6bc81[_0x2fb1('0x2c')]=_[_0x2fb1('0x2d')](_0x30e2d5['query']);_0xc6bc81[_0x2fb1('0x2e')]=_[_0x2fb1('0x2f')](_0xc6bc81[_0x2fb1('0x2b')],_0xc6bc81['query']);_0x1af8e4[_0x2fb1('0x30')]=_[_0x2fb1('0x2f')](_0xc6bc81[_0x2fb1('0x2b')],qs['fields'](_0x30e2d5['query']['fields']));_0x1af8e4[_0x2fb1('0x30')]=_0x1af8e4[_0x2fb1('0x30')][_0x2fb1('0x31')]?_0x1af8e4[_0x2fb1('0x30')]:_0xc6bc81[_0x2fb1('0x2b')];if(!_0x30e2d5[_0x2fb1('0x2c')]['hasOwnProperty'](_0x2fb1('0x32'))){_0x1af8e4[_0x2fb1('0x1d')]=qs[_0x2fb1('0x1d')](_0x30e2d5[_0x2fb1('0x2c')][_0x2fb1('0x1d')]);_0x1af8e4['offset']=qs[_0x2fb1('0x1b')](_0x30e2d5[_0x2fb1('0x2c')][_0x2fb1('0x1b')]);}_0x1af8e4[_0x2fb1('0x33')]=qs[_0x2fb1('0x34')](_0x30e2d5[_0x2fb1('0x2c')]['sort']);_0x1af8e4[_0x2fb1('0x35')]=qs[_0x2fb1('0x2e')](_[_0x2fb1('0x36')](_0x30e2d5['query'],_0xc6bc81[_0x2fb1('0x2e')]),_0x22ecd5);if(_0x30e2d5['query']['filter']){_0x1af8e4[_0x2fb1('0x35')]=_[_0x2fb1('0x37')](_0x1af8e4[_0x2fb1('0x35')],{'$or':_['map'](_0x22ecd5,function(_0x16abdc){if(_0x16abdc[_0x2fb1('0x38')]!==_0x2fb1('0x39')){var _0xcaebeb={};_0xcaebeb[_0x16abdc[_0x2fb1('0x26')]]={'$like':'%'+_0x30e2d5['query'][_0x2fb1('0x3a')]+'%'};return _0xcaebeb;}})});}_0x1af8e4=_[_0x2fb1('0x37')]({},_0x1af8e4,_0x30e2d5[_0x2fb1('0x3b')]);var _0x54be75={'where':_0x1af8e4['where']};return db[_0x2fb1('0x2a')][_0x2fb1('0x1e')](_0x54be75)[_0x2fb1('0x23')](function(_0x5f2e65){_0x3c2ef8['count']=_0x5f2e65;if(_0x30e2d5[_0x2fb1('0x2c')][_0x2fb1('0x3c')]){_0x1af8e4['include']=[{'all':!![]}];}return db[_0x2fb1('0x2a')][_0x2fb1('0x3d')](_0x1af8e4);})[_0x2fb1('0x23')](function(_0x45d1ce){_0x3c2ef8['rows']=_0x45d1ce;return _0x3c2ef8;})[_0x2fb1('0x23')](respondWithFilteredResult(_0x2ed9e2,_0x1af8e4))[_0x2fb1('0x3e')](handleError(_0x2ed9e2,null));};exports[_0x2fb1('0x3f')]=function(_0x296b44,_0x38fa1a){var _0x5d4ea3={'raw':![],'where':{'id':_0x296b44[_0x2fb1('0x40')]['id']}},_0x3ec9b6={};_0x3ec9b6[_0x2fb1('0x2b')]=_[_0x2fb1('0x2d')](db[_0x2fb1('0x2a')][_0x2fb1('0x41')]);_0x3ec9b6[_0x2fb1('0x2c')]=_[_0x2fb1('0x2d')](_0x296b44[_0x2fb1('0x2c')]);_0x3ec9b6[_0x2fb1('0x2e')]=_[_0x2fb1('0x2f')](_0x3ec9b6['model'],_0x3ec9b6[_0x2fb1('0x2c')]);_0x5d4ea3[_0x2fb1('0x30')]=_['intersection'](_0x3ec9b6[_0x2fb1('0x2b')],qs['fields'](_0x296b44[_0x2fb1('0x2c')][_0x2fb1('0x42')]));_0x5d4ea3['attributes']=_0x5d4ea3[_0x2fb1('0x30')][_0x2fb1('0x31')]?_0x5d4ea3[_0x2fb1('0x30')]:_0x3ec9b6[_0x2fb1('0x2b')];if(_0x296b44[_0x2fb1('0x2c')][_0x2fb1('0x3c')]){_0x5d4ea3[_0x2fb1('0x43')]=[{'all':!![]}];}_0x5d4ea3=_[_0x2fb1('0x37')]({},_0x5d4ea3,_0x296b44[_0x2fb1('0x3b')]);return db[_0x2fb1('0x2a')][_0x2fb1('0x44')](_0x5d4ea3)[_0x2fb1('0x23')](handleEntityNotFound(_0x38fa1a,null))['then'](respondWithResult(_0x38fa1a,null))[_0x2fb1('0x3e')](handleError(_0x38fa1a,null));};exports[_0x2fb1('0x45')]=function(_0x582025,_0x50ec34){return db[_0x2fb1('0x2a')][_0x2fb1('0x45')](_0x582025['body'],{})[_0x2fb1('0x23')](respondWithResult(_0x50ec34,0xc9))[_0x2fb1('0x3e')](handleError(_0x50ec34,null));};exports[_0x2fb1('0x22')]=function(_0x482a0d,_0x3ff245){if(_0x482a0d[_0x2fb1('0x46')]['id']){delete _0x482a0d[_0x2fb1('0x46')]['id'];}return db[_0x2fb1('0x2a')][_0x2fb1('0x44')]({'where':{'id':_0x482a0d[_0x2fb1('0x40')]['id']}})[_0x2fb1('0x23')](handleEntityNotFound(_0x3ff245,null))[_0x2fb1('0x23')](saveUpdates(_0x482a0d['body'],null))[_0x2fb1('0x23')](respondWithResult(_0x3ff245,null))[_0x2fb1('0x3e')](handleError(_0x3ff245,null));};exports[_0x2fb1('0x24')]=function(_0xdbd896,_0x26c56f){return db[_0x2fb1('0x2a')]['find']({'where':{'id':_0xdbd896['params']['id']}})['then'](handleEntityNotFound(_0x26c56f,null))[_0x2fb1('0x23')](removeEntity(_0x26c56f,null))[_0x2fb1('0x3e')](handleError(_0x26c56f,null));};exports[_0x2fb1('0x47')]=function(_0x43f8ab,_0x3ded95){return db['IntegrationReport'][_0x2fb1('0x47')]()[_0x2fb1('0x23')](respondWithResult(_0x3ded95,null))['catch'](handleError(_0x3ded95,null));};
\ No newline at end of file
index 483f321..bf772fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0614=['../../config/logger','api','moment','bluebird','rimraf','define','IntegrationReport','lodash','util'];(function(_0x493221,_0x282a30){var _0x527301=function(_0x86193e){while(--_0x86193e){_0x493221['push'](_0x493221['shift']());}};_0x527301(++_0x282a30);}(_0x0614,0x16f));var _0x4061=function(_0x40c3e5,_0x21b743){_0x40c3e5=_0x40c3e5-0x0;var _0x4d1df7=_0x0614[_0x40c3e5];return _0x4d1df7;};'use strict';var _=require(_0x4061('0x0'));var util=require(_0x4061('0x1'));var logger=require(_0x4061('0x2'))(_0x4061('0x3'));var moment=require(_0x4061('0x4'));var BPromise=require(_0x4061('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4061('0x6'));var config=require('../../config/environment');var attributes=require('./integrationReport.attributes');module['exports']=function(_0x29f326,_0x4ba2b9){return _0x29f326[_0x4061('0x7')](_0x4061('0x8'),attributes,{'tableName':'report_integration','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfff7=['moment','bluebird','request-promise','path','./integrationReport.attributes','exports','define','IntegrationReport','util','../../config/logger'];(function(_0x129e9c,_0x22273a){var _0x1f61e2=function(_0x2d2b24){while(--_0x2d2b24){_0x129e9c['push'](_0x129e9c['shift']());}};_0x1f61e2(++_0x22273a);}(_0xfff7,0x76));var _0x7fff=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xfff7[_0x59ee6f];return _0x4c0979;};'use strict';var _=require('lodash');var util=require(_0x7fff('0x0'));var logger=require(_0x7fff('0x1'))('api');var moment=require(_0x7fff('0x2'));var BPromise=require(_0x7fff('0x3'));var rp=require(_0x7fff('0x4'));var fs=require('fs');var path=require(_0x7fff('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x7fff('0x6'));module[_0x7fff('0x7')]=function(_0x2422b8,_0x566cdb){return _0x2422b8[_0x7fff('0x8')](_0x7fff('0x9'),attributes,{'tableName':'report_integration','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 58bda06..8e61454 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['info','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','IntegrationReport,\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(_0x266618,_0x18f637){var _0x54dbf5=function(_0x1f7985){while(--_0x1f7985){_0x266618['push'](_0x266618['shift']());}};_0x54dbf5(++_0x18f637);}(_0x814b,0x1a2));var _0xb814=function(_0x53ba51,_0x2f2321){_0x53ba51=_0x53ba51-0x0;var _0x2e776e=_0x814b[_0x53ba51];return _0x2e776e;};'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')]('IntegrationReport,\x20%s,\x20%s',_0x2e6272,_0x21b73f);_0x2913a6(_0x21b73f);});});}
\ No newline at end of file
+var _0x3f8a=['catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','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','info','result'];(function(_0x25e7cb,_0x3579b7){var _0x375d92=function(_0xe8cf3b){while(--_0xe8cf3b){_0x25e7cb['push'](_0x25e7cb['shift']());}};_0x375d92(++_0x3579b7);}(_0x3f8a,0x1d5));var _0xa3f8=function(_0x454697,_0x2e5871){_0x454697=_0x454697-0x0;var _0x4ef0aa=_0x3f8a[_0x454697];return _0x4ef0aa;};'use strict';var _=require(_0xa3f8('0x0'));var util=require(_0xa3f8('0x1'));var moment=require(_0xa3f8('0x2'));var BPromise=require(_0xa3f8('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa3f8('0x4'));var db=require(_0xa3f8('0x5'))['db'];var utils=require(_0xa3f8('0x6'));var logger=require(_0xa3f8('0x7'))(_0xa3f8('0x8'));var config=require(_0xa3f8('0x9'));var jayson=require(_0xa3f8('0xa'));var client=jayson[_0xa3f8('0xb')][_0xa3f8('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xf895d9,_0xcfea5,_0x268332){return new BPromise(function(_0x2faf2e,_0x2448de){return client[_0xa3f8('0xd')](_0xf895d9,_0x268332)[_0xa3f8('0xe')](function(_0xcdb0d4){logger['info'](_0xa3f8('0xf'),_0xcfea5,_0xa3f8('0x10'));logger[_0xa3f8('0x11')](_0xa3f8('0x12'),_0xcfea5,'request\x20sent',JSON[_0xa3f8('0x13')](_0xcdb0d4));if(_0xcdb0d4[_0xa3f8('0x14')]){if(_0xcdb0d4[_0xa3f8('0x14')][_0xa3f8('0x15')]===0x1f4){logger[_0xa3f8('0x14')](_0xa3f8('0xf'),_0xcfea5,_0xcdb0d4[_0xa3f8('0x14')][_0xa3f8('0x16')]);return _0x2448de(_0xcdb0d4[_0xa3f8('0x14')][_0xa3f8('0x16')]);}logger[_0xa3f8('0x14')](_0xa3f8('0xf'),_0xcfea5,_0xcdb0d4['error'][_0xa3f8('0x16')]);return _0x2faf2e(_0xcdb0d4[_0xa3f8('0x14')][_0xa3f8('0x16')]);}else{logger[_0xa3f8('0x17')]('IntegrationReport,\x20%s,\x20%s',_0xcfea5,_0xa3f8('0x10'));_0x2faf2e(_0xcdb0d4[_0xa3f8('0x18')][_0xa3f8('0x16')]);}})[_0xa3f8('0x19')](function(_0x45ef64){logger[_0xa3f8('0x14')](_0xa3f8('0xf'),_0xcfea5,_0x45ef64);_0x2448de(_0x45ef64);});});}
\ No newline at end of file
index a7ae03c..75e18b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d61=['addIntervals','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./interval.controller','get','isAuthenticated','index','/:id','post','/:id/sub_intervals','addInterval','/:id/sub_intervals/create_many'];(function(_0x386d7c,_0x3cc8a0){var _0x1c9524=function(_0x21b57f){while(--_0x21b57f){_0x386d7c['push'](_0x386d7c['shift']());}};_0x1c9524(++_0x3cc8a0);}(_0x4d61,0x147));var _0x14d6=function(_0xf01579,_0x914885){_0xf01579=_0xf01579-0x0;var _0x146774=_0x4d61[_0xf01579];return _0x146774;};'use strict';var multer=require(_0x14d6('0x0'));var util=require(_0x14d6('0x1'));var path=require(_0x14d6('0x2'));var timeout=require(_0x14d6('0x3'));var express=require(_0x14d6('0x4'));var router=express[_0x14d6('0x5')]();var fs_extra=require(_0x14d6('0x6'));var auth=require(_0x14d6('0x7'));var interaction=require(_0x14d6('0x8'));var config=require('../../config/environment');var controller=require(_0x14d6('0x9'));router[_0x14d6('0xa')]('/',auth[_0x14d6('0xb')](),controller[_0x14d6('0xc')]);router[_0x14d6('0xa')](_0x14d6('0xd'),auth[_0x14d6('0xb')](),controller['show']);router[_0x14d6('0xa')]('/:id/sub_intervals',auth[_0x14d6('0xb')](),controller['getIntervals']);router[_0x14d6('0xe')]('/',auth[_0x14d6('0xb')](),controller['create']);router[_0x14d6('0xe')](_0x14d6('0xf'),auth[_0x14d6('0xb')](),controller[_0x14d6('0x10')]);router[_0x14d6('0xe')](_0x14d6('0x11'),auth[_0x14d6('0xb')](),controller[_0x14d6('0x12')]);router[_0x14d6('0x13')](_0x14d6('0xd'),auth[_0x14d6('0xb')](),controller['update']);router[_0x14d6('0x14')](_0x14d6('0xd'),auth[_0x14d6('0xb')](),controller[_0x14d6('0x15')]);module[_0x14d6('0x16')]=router;
\ No newline at end of file
+var _0x1224=['create','addInterval','/:id/sub_intervals/create_many','addIntervals','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/sub_intervals','getIntervals','post'];(function(_0x334841,_0x2bbc4c){var _0x5beb4b=function(_0x4bea72){while(--_0x4bea72){_0x334841['push'](_0x334841['shift']());}};_0x5beb4b(++_0x2bbc4c);}(_0x1224,0x10d));var _0x4122=function(_0x17d96b,_0x346ba7){_0x17d96b=_0x17d96b-0x0;var _0x949d6f=_0x1224[_0x17d96b];return _0x949d6f;};'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('./interval.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('0x10')](_0x4122('0xe'),auth[_0x4122('0xa')](),controller[_0x4122('0x12')]);router[_0x4122('0x10')](_0x4122('0x13'),auth[_0x4122('0xa')](),controller[_0x4122('0x14')]);router[_0x4122('0x15')](_0x4122('0xc'),auth[_0x4122('0xa')](),controller[_0x4122('0x16')]);router[_0x4122('0x17')](_0x4122('0xc'),auth[_0x4122('0xa')](),controller[_0x4122('0x18')]);module[_0x4122('0x19')]=router;
\ No newline at end of file
index 0bdc4b3..d25cf5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04b9=['exports','STRING','sequelize'];(function(_0x342700,_0x569f75){var _0x53406f=function(_0x3b3c32){while(--_0x3b3c32){_0x342700['push'](_0x342700['shift']());}};_0x53406f(++_0x569f75);}(_0x04b9,0xe3));var _0x904b=function(_0x3eb209,_0x5bb276){_0x3eb209=_0x3eb209-0x0;var _0x2870f3=_0x04b9[_0x3eb209];return _0x2870f3;};'use strict';var Sequelize=require(_0x904b('0x0'));module[_0x904b('0x1')]={'name':{'type':Sequelize[_0x904b('0x2')]},'description':{'type':Sequelize[_0x904b('0x2')]},'interval':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
+var _0x3c57=['STRING','sequelize','exports'];(function(_0xe9fc75,_0x301b64){var _0x482b79=function(_0x842fc6){while(--_0x842fc6){_0xe9fc75['push'](_0xe9fc75['shift']());}};_0x482b79(++_0x301b64);}(_0x3c57,0x1e4));var _0x73c5=function(_0x475af5,_0x461eca){_0x475af5=_0x475af5-0x0;var _0x1ccafa=_0x3c57[_0x475af5];return _0x1ccafa;};'use strict';var Sequelize=require(_0x73c5('0x0'));module[_0x73c5('0x1')]={'name':{'type':Sequelize[_0x73c5('0x2')]},'description':{'type':Sequelize[_0x73c5('0x2')]},'interval':{'type':Sequelize[_0x73c5('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 9894fec..bb7b9b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fab=['sort','where','pick','filter','merge','options','include','Interval','findAll','catch','length','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','params','addInterval','getIntervals','findOne','addIntervals','sequelize','transaction','bulkCreate','fast-json-patch','request-promise','bluebird','mustache','path','to-csv','ejs','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','../../components/extensions/rewrite','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','destroy','Intervals','UserProfileResource','then','sendStatus','error','stack','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order'];(function(_0x906e88,_0x2b5046){var _0x551acb=function(_0x450171){while(--_0x450171){_0x906e88['push'](_0x906e88['shift']());}};_0x551acb(++_0x2b5046);}(_0x3fab,0x114));var _0xb3fa=function(_0x10f16b,_0x1c583e){_0x10f16b=_0x10f16b-0x0;var _0x446189=_0x3fab[_0x10f16b];return _0x446189;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xb3fa('0x0'));var rp=require(_0xb3fa('0x1'));var moment=require('moment');var BPromise=require(_0xb3fa('0x2'));var Mustache=require(_0xb3fa('0x3'));var util=require('util');var path=require(_0xb3fa('0x4'));var sox=require('sox');var csv=require(_0xb3fa('0x5'));var ejs=require(_0xb3fa('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0xb3fa('0x7'));var jsforce=require(_0xb3fa('0x8'));var deskjs=require(_0xb3fa('0x9'));var toCsv=require(_0xb3fa('0x5'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb3fa('0xa'));var authService=require(_0xb3fa('0xb'));var qs=require(_0xb3fa('0xc'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb3fa('0xd'));var logger=require(_0xb3fa('0xe'))(_0xb3fa('0xf'));var utils=require(_0xb3fa('0x10'));var config=require(_0xb3fa('0x11'));var licenseUtil=require('../../config/license/util');var db=require(_0xb3fa('0x12'))['db'];var extensions=require(_0xb3fa('0x13'));function respondWithStatusCode(_0x233a58,_0x2dc178){_0x2dc178=_0x2dc178||0xcc;return function(_0x22ad56){if(_0x22ad56){return _0x233a58['sendStatus'](_0x2dc178);}return _0x233a58[_0xb3fa('0x14')](_0x2dc178)[_0xb3fa('0x15')]();};}function respondWithResult(_0x2bdbd1,_0x1fc9d4){_0x1fc9d4=_0x1fc9d4||0xc8;return function(_0x3ad3a2){if(_0x3ad3a2){return _0x2bdbd1[_0xb3fa('0x14')](_0x1fc9d4)['json'](_0x3ad3a2);}};}function respondWithFilteredResult(_0x56fe3d,_0xd864c1){return function(_0x2adee0){if(_0x2adee0){var _0x36813b=typeof _0xd864c1[_0xb3fa('0x16')]===_0xb3fa('0x17')&&typeof _0xd864c1[_0xb3fa('0x18')]==='undefined';var _0x5bf7f4=_0x2adee0[_0xb3fa('0x19')];var _0x221b8b=_0x36813b?0x0:_0xd864c1[_0xb3fa('0x16')];var _0x39c015=_0x36813b?_0x2adee0['count']:_0xd864c1['offset']+_0xd864c1[_0xb3fa('0x18')];var _0x346344;if(_0x39c015>=_0x5bf7f4){_0x39c015=_0x5bf7f4;_0x346344=0xc8;}else{_0x346344=0xce;}_0x56fe3d['status'](_0x346344);return _0x56fe3d['set'](_0xb3fa('0x1a'),_0x221b8b+'-'+_0x39c015+'/'+_0x5bf7f4)[_0xb3fa('0x1b')](_0x2adee0);}return null;};}function patchUpdates(_0x46a247){return function(_0x90efb9){try{jsonpatch[_0xb3fa('0x1c')](_0x90efb9,_0x46a247,!![]);}catch(_0x5488c4){return BPromise[_0xb3fa('0x1d')](_0x5488c4);}return _0x90efb9[_0xb3fa('0x1e')]();};}function saveUpdates(_0x17ad1f,_0x533f5b){return function(_0x5dc121){if(_0x5dc121){return _0x5dc121[_0xb3fa('0x1f')](_0x17ad1f)['then'](function(_0x1ca1d4){return _0x1ca1d4;});}return null;};}function removeEntity(_0x2a7901,_0x3641d8){return function(_0x1a95fe){if(_0x1a95fe){return _0x1a95fe[_0xb3fa('0x20')]()['then'](function(){var _0x416353=_0x1a95fe['get']({'plain':!![]});var _0xe4d3f5=_0xb3fa('0x21');return db[_0xb3fa('0x22')][_0xb3fa('0x20')]({'where':{'type':_0xe4d3f5,'resourceId':_0x416353['id']}})[_0xb3fa('0x23')](function(){return _0x1a95fe;});})[_0xb3fa('0x23')](function(){_0x2a7901['status'](0xcc)[_0xb3fa('0x15')]();});}};}function handleEntityNotFound(_0x45039b,_0x33736c){return function(_0x57e6b9){if(!_0x57e6b9){_0x45039b[_0xb3fa('0x24')](0x194);}return _0x57e6b9;};}function handleError(_0x19d7d4,_0x11deae){_0x11deae=_0x11deae||0x1f4;return function(_0x55d4f0){logger[_0xb3fa('0x25')](_0x55d4f0[_0xb3fa('0x26')]);if(_0x55d4f0[_0xb3fa('0x27')]){delete _0x55d4f0[_0xb3fa('0x27')];}_0x19d7d4['status'](_0x11deae)['send'](_0x55d4f0);};}exports[_0xb3fa('0x28')]=function(_0x2c52d0,_0x272f19){var _0x17b20d={},_0x25ceb8={},_0x2495a6={'count':0x0,'rows':[]};var _0x8ed1fd=_[_0xb3fa('0x29')](db['Interval'][_0xb3fa('0x2a')],function(_0x3aae8f){return{'name':_0x3aae8f[_0xb3fa('0x2b')],'type':_0x3aae8f[_0xb3fa('0x2c')][_0xb3fa('0x2d')]};});_0x25ceb8[_0xb3fa('0x2e')]=_[_0xb3fa('0x29')](_0x8ed1fd,'name');_0x25ceb8[_0xb3fa('0x2f')]=_[_0xb3fa('0x30')](_0x2c52d0[_0xb3fa('0x2f')]);_0x25ceb8[_0xb3fa('0x31')]=_[_0xb3fa('0x32')](_0x25ceb8[_0xb3fa('0x2e')],_0x25ceb8[_0xb3fa('0x2f')]);_0x17b20d['attributes']=_[_0xb3fa('0x32')](_0x25ceb8[_0xb3fa('0x2e')],qs['fields'](_0x2c52d0['query'][_0xb3fa('0x33')]));_0x17b20d[_0xb3fa('0x34')]=_0x17b20d[_0xb3fa('0x34')]['length']?_0x17b20d[_0xb3fa('0x34')]:_0x25ceb8[_0xb3fa('0x2e')];if(!_0x2c52d0[_0xb3fa('0x2f')][_0xb3fa('0x35')](_0xb3fa('0x36'))){_0x17b20d['limit']=qs[_0xb3fa('0x18')](_0x2c52d0[_0xb3fa('0x2f')][_0xb3fa('0x18')]);_0x17b20d[_0xb3fa('0x16')]=qs['offset'](_0x2c52d0['query'][_0xb3fa('0x16')]);}_0x17b20d[_0xb3fa('0x37')]=qs[_0xb3fa('0x38')](_0x2c52d0['query'][_0xb3fa('0x38')]);_0x17b20d[_0xb3fa('0x39')]=qs[_0xb3fa('0x31')](_[_0xb3fa('0x3a')](_0x2c52d0[_0xb3fa('0x2f')],_0x25ceb8[_0xb3fa('0x31')]),_0x8ed1fd);if(_0x2c52d0['query'][_0xb3fa('0x3b')]){_0x17b20d[_0xb3fa('0x39')]=_[_0xb3fa('0x3c')](_0x17b20d[_0xb3fa('0x39')],{'$or':_[_0xb3fa('0x29')](_0x8ed1fd,function(_0x2e8a76){if(_0x2e8a76[_0xb3fa('0x2c')]!=='VIRTUAL'){var _0x122039={};_0x122039[_0x2e8a76['name']]={'$like':'%'+_0x2c52d0['query'][_0xb3fa('0x3b')]+'%'};return _0x122039;}})});}_0x17b20d=_[_0xb3fa('0x3c')]({},_0x17b20d,_0x2c52d0[_0xb3fa('0x3d')]);var _0x2cc054={'where':_0x17b20d[_0xb3fa('0x39')]};return db['Interval']['count'](_0x2cc054)[_0xb3fa('0x23')](function(_0x53709e){_0x2495a6['count']=_0x53709e;if(_0x2c52d0['query']['includeAll']){_0x17b20d[_0xb3fa('0x3e')]=[{'all':!![]}];}return db[_0xb3fa('0x3f')][_0xb3fa('0x40')](_0x17b20d);})[_0xb3fa('0x23')](function(_0x55573a){_0x2495a6['rows']=_0x55573a;return _0x2495a6;})['then'](respondWithFilteredResult(_0x272f19,_0x17b20d))[_0xb3fa('0x41')](handleError(_0x272f19,null));};exports['show']=function(_0x93d0d4,_0x41b526){var _0x4ba0d2={'raw':!![],'where':{'id':_0x93d0d4['params']['id']}},_0x1faf5d={};_0x1faf5d[_0xb3fa('0x2e')]=_[_0xb3fa('0x30')](db[_0xb3fa('0x3f')]['rawAttributes']);_0x1faf5d[_0xb3fa('0x2f')]=_[_0xb3fa('0x30')](_0x93d0d4['query']);_0x1faf5d[_0xb3fa('0x31')]=_[_0xb3fa('0x32')](_0x1faf5d['model'],_0x1faf5d['query']);_0x4ba0d2['attributes']=_[_0xb3fa('0x32')](_0x1faf5d[_0xb3fa('0x2e')],qs[_0xb3fa('0x33')](_0x93d0d4['query'][_0xb3fa('0x33')]));_0x4ba0d2[_0xb3fa('0x34')]=_0x4ba0d2[_0xb3fa('0x34')][_0xb3fa('0x42')]?_0x4ba0d2[_0xb3fa('0x34')]:_0x1faf5d[_0xb3fa('0x2e')];if(_0x93d0d4['query']['includeAll']){_0x4ba0d2[_0xb3fa('0x3e')]=[{'all':!![]}];}_0x4ba0d2=_[_0xb3fa('0x3c')]({},_0x4ba0d2,_0x93d0d4['options']);return db[_0xb3fa('0x3f')][_0xb3fa('0x43')](_0x4ba0d2)['then'](handleEntityNotFound(_0x41b526,null))[_0xb3fa('0x23')](respondWithResult(_0x41b526,null))[_0xb3fa('0x41')](handleError(_0x41b526,null));};exports[_0xb3fa('0x44')]=function(_0x5470df,_0x3ef8a7){return db[_0xb3fa('0x3f')][_0xb3fa('0x44')](_0x5470df[_0xb3fa('0x45')],{})[_0xb3fa('0x23')](function(_0x256955){var _0xddd9bd=_0x5470df[_0xb3fa('0x46')][_0xb3fa('0x47')]({'plain':!![]});if(!_0xddd9bd)throw new Error(_0xb3fa('0x48'));if(_0xddd9bd['role']===_0xb3fa('0x46')){var _0x4c1e38=_0x256955[_0xb3fa('0x47')]({'plain':!![]});var _0x297a0f=_0xb3fa('0x21');return db['UserProfileSection'][_0xb3fa('0x43')]({'where':{'name':_0x297a0f,'userProfileId':_0xddd9bd[_0xb3fa('0x49')]},'raw':!![]})[_0xb3fa('0x23')](function(_0x583d71){if(_0x583d71&&_0x583d71[_0xb3fa('0x4a')]===0x0){return db['UserProfileResource'][_0xb3fa('0x44')]({'name':_0x4c1e38[_0xb3fa('0x27')],'resourceId':_0x4c1e38['id'],'type':_0x583d71[_0xb3fa('0x27')],'sectionId':_0x583d71['id']},{})[_0xb3fa('0x23')](function(){return _0x256955;});}else{return _0x256955;}})['catch'](function(_0x2b88e5){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2b88e5);throw _0x2b88e5;});}return _0x256955;})[_0xb3fa('0x23')](respondWithResult(_0x3ef8a7,0xc9))[_0xb3fa('0x41')](handleError(_0x3ef8a7,null));};exports['update']=function(_0x2d7290,_0x258a42){if(_0x2d7290['body']['id']){delete _0x2d7290[_0xb3fa('0x45')]['id'];}return db[_0xb3fa('0x3f')][_0xb3fa('0x43')]({'where':{'id':_0x2d7290[_0xb3fa('0x4b')]['id']}})[_0xb3fa('0x23')](handleEntityNotFound(_0x258a42,null))[_0xb3fa('0x23')](saveUpdates(_0x2d7290['body'],null))[_0xb3fa('0x23')](respondWithResult(_0x258a42,null))['catch'](handleError(_0x258a42,null));};exports['destroy']=function(_0x2f1e74,_0x3d94af){return db[_0xb3fa('0x3f')][_0xb3fa('0x43')]({'where':{'id':_0x2f1e74[_0xb3fa('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3d94af,null))[_0xb3fa('0x23')](removeEntity(_0x3d94af,null))[_0xb3fa('0x41')](handleError(_0x3d94af,null));};exports[_0xb3fa('0x4c')]=function(_0x1ee780,_0xc389c6,_0x433363){if(_0x1ee780['body']['id']){delete _0x1ee780[_0xb3fa('0x45')]['id'];}return db[_0xb3fa('0x3f')]['find']({'where':{'id':_0x1ee780[_0xb3fa('0x4b')]['id']}})[_0xb3fa('0x23')](handleEntityNotFound(_0xc389c6,null))[_0xb3fa('0x23')](function(_0x2962a2){if(_0x2962a2){_0x1ee780[_0xb3fa('0x45')]['IntervalId']=_0x2962a2['id'];return db[_0xb3fa('0x3f')][_0xb3fa('0x44')](_0x1ee780[_0xb3fa('0x45')]);}})[_0xb3fa('0x23')](respondWithResult(_0xc389c6,null))[_0xb3fa('0x41')](handleError(_0xc389c6,null));};exports[_0xb3fa('0x4d')]=function(_0x3d9d8f,_0x1dca75,_0x363eeb){var _0x3758b4={};var _0x5b5908={};var _0x1c62c1;var _0x2ea99c;return db[_0xb3fa('0x3f')][_0xb3fa('0x4e')]({'where':{'id':_0x3d9d8f['params']['id']}})[_0xb3fa('0x23')](handleEntityNotFound(_0x1dca75,null))[_0xb3fa('0x23')](function(_0x1b0ab4){if(_0x1b0ab4){_0x1c62c1=_0x1b0ab4;_0x5b5908[_0xb3fa('0x2e')]=_[_0xb3fa('0x30')](db['Interval'][_0xb3fa('0x2a')]);_0x5b5908[_0xb3fa('0x2f')]=_[_0xb3fa('0x30')](_0x3d9d8f['query']);_0x5b5908[_0xb3fa('0x31')]=_[_0xb3fa('0x32')](_0x5b5908[_0xb3fa('0x2e')],_0x5b5908[_0xb3fa('0x2f')]);_0x3758b4[_0xb3fa('0x34')]=_['intersection'](_0x5b5908[_0xb3fa('0x2e')],qs['fields'](_0x3d9d8f['query'][_0xb3fa('0x33')]));_0x3758b4['attributes']=_0x3758b4[_0xb3fa('0x34')]['length']?_0x3758b4[_0xb3fa('0x34')]:_0x5b5908['model'];_0x3758b4[_0xb3fa('0x37')]=qs[_0xb3fa('0x38')](_0x3d9d8f[_0xb3fa('0x2f')][_0xb3fa('0x38')]);_0x3758b4[_0xb3fa('0x39')]=qs[_0xb3fa('0x31')](_[_0xb3fa('0x3a')](_0x3d9d8f[_0xb3fa('0x2f')],_0x5b5908[_0xb3fa('0x31')]));if(_0x3d9d8f['query'][_0xb3fa('0x3b')]){_0x3758b4[_0xb3fa('0x39')]=_[_0xb3fa('0x3c')](_0x3758b4[_0xb3fa('0x39')],{'$or':_[_0xb3fa('0x29')](_0x3758b4['attributes'],function(_0x13cb69){var _0x2ccbff={};_0x2ccbff[_0x13cb69]={'$like':'%'+_0x3d9d8f[_0xb3fa('0x2f')][_0xb3fa('0x3b')]+'%'};return _0x2ccbff;})});}_0x3758b4=_[_0xb3fa('0x3c')]({},_0x3758b4,_0x3d9d8f[_0xb3fa('0x3d')]);return _0x1c62c1[_0xb3fa('0x4d')](_0x3758b4);}})['then'](function(_0x3a0dc5){if(_0x3a0dc5){_0x2ea99c=_0x3a0dc5[_0xb3fa('0x42')];if(!_0x3d9d8f['query']['hasOwnProperty'](_0xb3fa('0x36'))){_0x3758b4[_0xb3fa('0x18')]=qs[_0xb3fa('0x18')](_0x3d9d8f['query'][_0xb3fa('0x18')]);_0x3758b4[_0xb3fa('0x16')]=qs[_0xb3fa('0x16')](_0x3d9d8f[_0xb3fa('0x2f')]['offset']);}return _0x1c62c1['getIntervals'](_0x3758b4);}})[_0xb3fa('0x23')](function(_0x43b2e1){if(_0x43b2e1){return _0x43b2e1?{'count':_0x2ea99c,'rows':_0x43b2e1}:null;}})[_0xb3fa('0x23')](respondWithResult(_0x1dca75,null))[_0xb3fa('0x41')](handleError(_0x1dca75,null));};exports[_0xb3fa('0x4f')]=function(_0x5846db,_0x2dbbd0,_0x12b4ad){return db[_0xb3fa('0x3f')]['findOne']({'where':{'id':_0x5846db[_0xb3fa('0x4b')]['id']}})[_0xb3fa('0x23')](handleEntityNotFound(_0x2dbbd0,null))[_0xb3fa('0x23')](function(_0x44ef18){if(_0x44ef18){return db[_0xb3fa('0x50')][_0xb3fa('0x51')](function(_0x65d0d4){return db[_0xb3fa('0x3f')][_0xb3fa('0x20')]({'where':{'IntervalId':_0x5846db['params']['id']},'transaction':_0x65d0d4})['then'](function(_0x53b1e6){var _0x4d5f7f=_[_0xb3fa('0x29')](_0x5846db[_0xb3fa('0x45')],function(_0x167c0c){delete _0x167c0c['id'];_0x167c0c['IntervalId']=_0x5846db['params']['id'];return _0x167c0c;});return db[_0xb3fa('0x3f')][_0xb3fa('0x52')](_0x4d5f7f,{'transaction':_0x65d0d4});});})[_0xb3fa('0x23')](function(){return db[_0xb3fa('0x3f')][_0xb3fa('0x40')]({'where':{'IntervalId':_0x5846db[_0xb3fa('0x4b')]['id']}});});}})['then'](respondWithResult(_0x2dbbd0,null))[_0xb3fa('0x41')](handleError(_0x2dbbd0,null));};
\ No newline at end of file
+var _0x51a5=['Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','addInterval','IntervalId','getIntervals','pick','addIntervals','findOne','sequelize','transaction','bulkCreate','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','update','then','get','Intervals','UserProfileResource','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','VIRTUAL','filter','merge','options','Interval','include','rows','catch','show','params','length','find','create'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x51a5,0x1e0));var _0x551a=function(_0x5cd9d0,_0x58c5ff){_0x5cd9d0=_0x5cd9d0-0x0;var _0x748d8f=_0x51a5[_0x5cd9d0];return _0x748d8f;};'use strict';var emlformat=require(_0x551a('0x0'));var rimraf=require(_0x551a('0x1'));var zipdir=require(_0x551a('0x2'));var jsonpatch=require(_0x551a('0x3'));var rp=require('request-promise');var moment=require(_0x551a('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x551a('0x5'));var util=require('util');var path=require(_0x551a('0x6'));var sox=require(_0x551a('0x7'));var csv=require(_0x551a('0x8'));var ejs=require(_0x551a('0x9'));var fs=require('fs');var fs_extra=require(_0x551a('0xa'));var _=require('lodash');var squel=require(_0x551a('0xb'));var crypto=require(_0x551a('0xc'));var jsforce=require(_0x551a('0xd'));var deskjs=require(_0x551a('0xe'));var toCsv=require('to-csv');var querystring=require(_0x551a('0xf'));var Papa=require(_0x551a('0x10'));var Redis=require(_0x551a('0x11'));var authService=require(_0x551a('0x12'));var qs=require(_0x551a('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x551a('0x14'));var logger=require(_0x551a('0x15'))(_0x551a('0x16'));var utils=require('../../config/utils');var config=require(_0x551a('0x17'));var licenseUtil=require(_0x551a('0x18'));var db=require(_0x551a('0x19'))['db'];var extensions=require(_0x551a('0x1a'));function respondWithStatusCode(_0x4be61a,_0xe2836e){_0xe2836e=_0xe2836e||0xcc;return function(_0x53fcc7){if(_0x53fcc7){return _0x4be61a[_0x551a('0x1b')](_0xe2836e);}return _0x4be61a[_0x551a('0x1c')](_0xe2836e)[_0x551a('0x1d')]();};}function respondWithResult(_0x479b2f,_0x5df5d1){_0x5df5d1=_0x5df5d1||0xc8;return function(_0x155cc0){if(_0x155cc0){return _0x479b2f[_0x551a('0x1c')](_0x5df5d1)[_0x551a('0x1e')](_0x155cc0);}};}function respondWithFilteredResult(_0x8a5850,_0x46fcbe){return function(_0x3d314b){if(_0x3d314b){var _0x2f0466=typeof _0x46fcbe[_0x551a('0x1f')]===_0x551a('0x20')&&typeof _0x46fcbe['limit']===_0x551a('0x20');var _0xd8af2f=_0x3d314b[_0x551a('0x21')];var _0x2fff46=_0x2f0466?0x0:_0x46fcbe[_0x551a('0x1f')];var _0x12b7ac=_0x2f0466?_0x3d314b['count']:_0x46fcbe['offset']+_0x46fcbe[_0x551a('0x22')];var _0x108e92;if(_0x12b7ac>=_0xd8af2f){_0x12b7ac=_0xd8af2f;_0x108e92=0xc8;}else{_0x108e92=0xce;}_0x8a5850[_0x551a('0x1c')](_0x108e92);return _0x8a5850['set'](_0x551a('0x23'),_0x2fff46+'-'+_0x12b7ac+'/'+_0xd8af2f)['json'](_0x3d314b);}return null;};}function patchUpdates(_0x6e675e){return function(_0x5ad1fe){try{jsonpatch[_0x551a('0x24')](_0x5ad1fe,_0x6e675e,!![]);}catch(_0x3cee6f){return BPromise[_0x551a('0x25')](_0x3cee6f);}return _0x5ad1fe['save']();};}function saveUpdates(_0x2c7d1c,_0x2f3f89){return function(_0x4ad62c){if(_0x4ad62c){return _0x4ad62c[_0x551a('0x26')](_0x2c7d1c)['then'](function(_0x43d6fd){return _0x43d6fd;});}return null;};}function removeEntity(_0x4d2c66,_0x3f674b){return function(_0x26fb50){if(_0x26fb50){return _0x26fb50['destroy']()[_0x551a('0x27')](function(){var _0x16f261=_0x26fb50[_0x551a('0x28')]({'plain':!![]});var _0xd9d528=_0x551a('0x29');return db[_0x551a('0x2a')][_0x551a('0x2b')]({'where':{'type':_0xd9d528,'resourceId':_0x16f261['id']}})[_0x551a('0x27')](function(){return _0x26fb50;});})[_0x551a('0x27')](function(){_0x4d2c66[_0x551a('0x1c')](0xcc)[_0x551a('0x1d')]();});}};}function handleEntityNotFound(_0x42d7e2,_0x333870){return function(_0x313651){if(!_0x313651){_0x42d7e2['sendStatus'](0x194);}return _0x313651;};}function handleError(_0x37d1a0,_0x1d0f2b){_0x1d0f2b=_0x1d0f2b||0x1f4;return function(_0x5d4c05){logger[_0x551a('0x2c')](_0x5d4c05[_0x551a('0x2d')]);if(_0x5d4c05['name']){delete _0x5d4c05[_0x551a('0x2e')];}_0x37d1a0['status'](_0x1d0f2b)[_0x551a('0x2f')](_0x5d4c05);};}exports[_0x551a('0x30')]=function(_0x39a444,_0x411a4c){var _0x41d1db={},_0x1dd3ef={},_0x33d912={'count':0x0,'rows':[]};var _0x4d1f29=_[_0x551a('0x31')](db['Interval'][_0x551a('0x32')],function(_0x508f8a){return{'name':_0x508f8a[_0x551a('0x33')],'type':_0x508f8a[_0x551a('0x34')]['key']};});_0x1dd3ef[_0x551a('0x35')]=_[_0x551a('0x31')](_0x4d1f29,_0x551a('0x2e'));_0x1dd3ef[_0x551a('0x36')]=_[_0x551a('0x37')](_0x39a444['query']);_0x1dd3ef[_0x551a('0x38')]=_[_0x551a('0x39')](_0x1dd3ef[_0x551a('0x35')],_0x1dd3ef['query']);_0x41d1db['attributes']=_[_0x551a('0x39')](_0x1dd3ef[_0x551a('0x35')],qs[_0x551a('0x3a')](_0x39a444[_0x551a('0x36')]['fields']));_0x41d1db[_0x551a('0x3b')]=_0x41d1db['attributes']['length']?_0x41d1db[_0x551a('0x3b')]:_0x1dd3ef['model'];if(!_0x39a444['query'][_0x551a('0x3c')](_0x551a('0x3d'))){_0x41d1db[_0x551a('0x22')]=qs[_0x551a('0x22')](_0x39a444[_0x551a('0x36')]['limit']);_0x41d1db['offset']=qs[_0x551a('0x1f')](_0x39a444['query']['offset']);}_0x41d1db[_0x551a('0x3e')]=qs[_0x551a('0x3f')](_0x39a444[_0x551a('0x36')][_0x551a('0x3f')]);_0x41d1db[_0x551a('0x40')]=qs[_0x551a('0x38')](_['pick'](_0x39a444[_0x551a('0x36')],_0x1dd3ef[_0x551a('0x38')]),_0x4d1f29);if(_0x39a444[_0x551a('0x36')]['filter']){_0x41d1db[_0x551a('0x40')]=_['merge'](_0x41d1db[_0x551a('0x40')],{'$or':_[_0x551a('0x31')](_0x4d1f29,function(_0x50f4e9){if(_0x50f4e9[_0x551a('0x34')]!==_0x551a('0x41')){var _0x34e7ee={};_0x34e7ee[_0x50f4e9[_0x551a('0x2e')]]={'$like':'%'+_0x39a444[_0x551a('0x36')][_0x551a('0x42')]+'%'};return _0x34e7ee;}})});}_0x41d1db=_[_0x551a('0x43')]({},_0x41d1db,_0x39a444[_0x551a('0x44')]);var _0x508a45={'where':_0x41d1db['where']};return db[_0x551a('0x45')][_0x551a('0x21')](_0x508a45)[_0x551a('0x27')](function(_0x3c2907){_0x33d912['count']=_0x3c2907;if(_0x39a444[_0x551a('0x36')]['includeAll']){_0x41d1db[_0x551a('0x46')]=[{'all':!![]}];}return db[_0x551a('0x45')]['findAll'](_0x41d1db);})[_0x551a('0x27')](function(_0x458273){_0x33d912[_0x551a('0x47')]=_0x458273;return _0x33d912;})[_0x551a('0x27')](respondWithFilteredResult(_0x411a4c,_0x41d1db))[_0x551a('0x48')](handleError(_0x411a4c,null));};exports[_0x551a('0x49')]=function(_0x450f40,_0x24052a){var _0x58aab2={'raw':!![],'where':{'id':_0x450f40[_0x551a('0x4a')]['id']}},_0x51263d={};_0x51263d['model']=_['keys'](db['Interval'][_0x551a('0x32')]);_0x51263d[_0x551a('0x36')]=_[_0x551a('0x37')](_0x450f40[_0x551a('0x36')]);_0x51263d['filters']=_[_0x551a('0x39')](_0x51263d[_0x551a('0x35')],_0x51263d[_0x551a('0x36')]);_0x58aab2[_0x551a('0x3b')]=_['intersection'](_0x51263d[_0x551a('0x35')],qs[_0x551a('0x3a')](_0x450f40[_0x551a('0x36')]['fields']));_0x58aab2[_0x551a('0x3b')]=_0x58aab2[_0x551a('0x3b')][_0x551a('0x4b')]?_0x58aab2[_0x551a('0x3b')]:_0x51263d['model'];if(_0x450f40[_0x551a('0x36')]['includeAll']){_0x58aab2[_0x551a('0x46')]=[{'all':!![]}];}_0x58aab2=_[_0x551a('0x43')]({},_0x58aab2,_0x450f40[_0x551a('0x44')]);return db[_0x551a('0x45')][_0x551a('0x4c')](_0x58aab2)['then'](handleEntityNotFound(_0x24052a,null))[_0x551a('0x27')](respondWithResult(_0x24052a,null))[_0x551a('0x48')](handleError(_0x24052a,null));};exports[_0x551a('0x4d')]=function(_0x277544,_0x51f290){return db[_0x551a('0x45')][_0x551a('0x4d')](_0x277544['body'],{})[_0x551a('0x27')](function(_0x2b5eeb){var _0x315f8a=_0x277544['user'][_0x551a('0x28')]({'plain':!![]});if(!_0x315f8a)throw new Error(_0x551a('0x4e'));if(_0x315f8a[_0x551a('0x4f')]===_0x551a('0x50')){var _0x53685a=_0x2b5eeb['get']({'plain':!![]});var _0x245520=_0x551a('0x29');return db['UserProfileSection'][_0x551a('0x4c')]({'where':{'name':_0x245520,'userProfileId':_0x315f8a['userProfileId']},'raw':!![]})[_0x551a('0x27')](function(_0x2dbe2b){if(_0x2dbe2b&&_0x2dbe2b[_0x551a('0x51')]===0x0){return db[_0x551a('0x2a')][_0x551a('0x4d')]({'name':_0x53685a['name'],'resourceId':_0x53685a['id'],'type':_0x2dbe2b[_0x551a('0x2e')],'sectionId':_0x2dbe2b['id']},{})[_0x551a('0x27')](function(){return _0x2b5eeb;});}else{return _0x2b5eeb;}})[_0x551a('0x48')](function(_0x3198fe){logger['error'](_0x551a('0x52'),_0x3198fe);throw _0x3198fe;});}return _0x2b5eeb;})[_0x551a('0x27')](respondWithResult(_0x51f290,0xc9))[_0x551a('0x48')](handleError(_0x51f290,null));};exports[_0x551a('0x26')]=function(_0x359cc5,_0x581681){if(_0x359cc5[_0x551a('0x53')]['id']){delete _0x359cc5[_0x551a('0x53')]['id'];}return db['Interval']['find']({'where':{'id':_0x359cc5[_0x551a('0x4a')]['id']}})[_0x551a('0x27')](handleEntityNotFound(_0x581681,null))[_0x551a('0x27')](saveUpdates(_0x359cc5[_0x551a('0x53')],null))[_0x551a('0x27')](respondWithResult(_0x581681,null))[_0x551a('0x48')](handleError(_0x581681,null));};exports['destroy']=function(_0x1f9758,_0x1258db){return db['Interval']['find']({'where':{'id':_0x1f9758[_0x551a('0x4a')]['id']}})[_0x551a('0x27')](handleEntityNotFound(_0x1258db,null))['then'](removeEntity(_0x1258db,null))['catch'](handleError(_0x1258db,null));};exports[_0x551a('0x54')]=function(_0x5a09cb,_0x415e08,_0x1392a4){if(_0x5a09cb[_0x551a('0x53')]['id']){delete _0x5a09cb[_0x551a('0x53')]['id'];}return db[_0x551a('0x45')]['find']({'where':{'id':_0x5a09cb['params']['id']}})[_0x551a('0x27')](handleEntityNotFound(_0x415e08,null))[_0x551a('0x27')](function(_0x4ef1e2){if(_0x4ef1e2){_0x5a09cb['body'][_0x551a('0x55')]=_0x4ef1e2['id'];return db[_0x551a('0x45')][_0x551a('0x4d')](_0x5a09cb['body']);}})[_0x551a('0x27')](respondWithResult(_0x415e08,null))[_0x551a('0x48')](handleError(_0x415e08,null));};exports[_0x551a('0x56')]=function(_0x236b69,_0x3d46da,_0x58b1c5){var _0x4dc1a8={};var _0x100063={};var _0x41cb15;var _0x78630f;return db[_0x551a('0x45')]['findOne']({'where':{'id':_0x236b69['params']['id']}})[_0x551a('0x27')](handleEntityNotFound(_0x3d46da,null))[_0x551a('0x27')](function(_0x2691ba){if(_0x2691ba){_0x41cb15=_0x2691ba;_0x100063['model']=_['keys'](db[_0x551a('0x45')]['rawAttributes']);_0x100063[_0x551a('0x36')]=_['keys'](_0x236b69[_0x551a('0x36')]);_0x100063['filters']=_[_0x551a('0x39')](_0x100063[_0x551a('0x35')],_0x100063['query']);_0x4dc1a8[_0x551a('0x3b')]=_[_0x551a('0x39')](_0x100063[_0x551a('0x35')],qs['fields'](_0x236b69[_0x551a('0x36')][_0x551a('0x3a')]));_0x4dc1a8[_0x551a('0x3b')]=_0x4dc1a8[_0x551a('0x3b')][_0x551a('0x4b')]?_0x4dc1a8[_0x551a('0x3b')]:_0x100063[_0x551a('0x35')];_0x4dc1a8['order']=qs[_0x551a('0x3f')](_0x236b69[_0x551a('0x36')][_0x551a('0x3f')]);_0x4dc1a8[_0x551a('0x40')]=qs[_0x551a('0x38')](_[_0x551a('0x57')](_0x236b69[_0x551a('0x36')],_0x100063[_0x551a('0x38')]));if(_0x236b69['query'][_0x551a('0x42')]){_0x4dc1a8[_0x551a('0x40')]=_[_0x551a('0x43')](_0x4dc1a8[_0x551a('0x40')],{'$or':_[_0x551a('0x31')](_0x4dc1a8[_0x551a('0x3b')],function(_0x25ea07){var _0x280694={};_0x280694[_0x25ea07]={'$like':'%'+_0x236b69[_0x551a('0x36')]['filter']+'%'};return _0x280694;})});}_0x4dc1a8=_[_0x551a('0x43')]({},_0x4dc1a8,_0x236b69['options']);return _0x41cb15[_0x551a('0x56')](_0x4dc1a8);}})[_0x551a('0x27')](function(_0x486d03){if(_0x486d03){_0x78630f=_0x486d03[_0x551a('0x4b')];if(!_0x236b69[_0x551a('0x36')][_0x551a('0x3c')](_0x551a('0x3d'))){_0x4dc1a8['limit']=qs[_0x551a('0x22')](_0x236b69['query'][_0x551a('0x22')]);_0x4dc1a8['offset']=qs[_0x551a('0x1f')](_0x236b69['query'][_0x551a('0x1f')]);}return _0x41cb15[_0x551a('0x56')](_0x4dc1a8);}})[_0x551a('0x27')](function(_0x31497e){if(_0x31497e){return _0x31497e?{'count':_0x78630f,'rows':_0x31497e}:null;}})['then'](respondWithResult(_0x3d46da,null))[_0x551a('0x48')](handleError(_0x3d46da,null));};exports[_0x551a('0x58')]=function(_0x66be9e,_0x57ac9d,_0x2f1e19){return db[_0x551a('0x45')][_0x551a('0x59')]({'where':{'id':_0x66be9e['params']['id']}})[_0x551a('0x27')](handleEntityNotFound(_0x57ac9d,null))[_0x551a('0x27')](function(_0x57394a){if(_0x57394a){return db[_0x551a('0x5a')][_0x551a('0x5b')](function(_0x489660){return db[_0x551a('0x45')]['destroy']({'where':{'IntervalId':_0x66be9e['params']['id']},'transaction':_0x489660})[_0x551a('0x27')](function(_0x2fa4c2){var _0x395ee5=_[_0x551a('0x31')](_0x66be9e[_0x551a('0x53')],function(_0x18d8f1){delete _0x18d8f1['id'];_0x18d8f1[_0x551a('0x55')]=_0x66be9e['params']['id'];return _0x18d8f1;});return db[_0x551a('0x45')][_0x551a('0x5c')](_0x395ee5,{'transaction':_0x489660});});})[_0x551a('0x27')](function(){return db[_0x551a('0x45')]['findAll']({'where':{'IntervalId':_0x66be9e[_0x551a('0x4a')]['id']}});});}})[_0x551a('0x27')](respondWithResult(_0x57ac9d,null))[_0x551a('0x48')](handleError(_0x57ac9d,null));};
\ No newline at end of file
index 7d60249..7927938 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda25=['lodash','../../config/logger','request-promise','path','rimraf','../../config/environment','../../components/extensions/rewrite','exports','Interval','tools_intervals','rewrite'];(function(_0x147bcf,_0x110ecf){var _0x52f769=function(_0x1797ee){while(--_0x1797ee){_0x147bcf['push'](_0x147bcf['shift']());}};_0x52f769(++_0x110ecf);}(_0xda25,0x181));var _0x5da2=function(_0x2070da,_0x45e586){_0x2070da=_0x2070da-0x0;var _0x4f9fe1=_0xda25[_0x2070da];return _0x4f9fe1;};'use strict';var _=require(_0x5da2('0x0'));var util=require('util');var logger=require(_0x5da2('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5da2('0x2'));var fs=require('fs');var path=require(_0x5da2('0x3'));var rimraf=require(_0x5da2('0x4'));var config=require(_0x5da2('0x5'));var attributes=require('./interval.attributes');var extensions=require(_0x5da2('0x6'));module[_0x5da2('0x7')]=function(_0x18c474,_0xfe46aa){return _0x18c474['define'](_0x5da2('0x8'),attributes,{'tableName':_0x5da2('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x26ecf4,_0x49514d){extensions[_0x5da2('0xa')](_0x18c474,_0x26ecf4);},'afterBulkCreate':function(_0x27f4b1,_0x3d77e0,_0x54d28f){_0x54d28f();extensions[_0x5da2('0xa')](_0x18c474,_0x27f4b1[0x0]);},'afterUpdate':function(_0x542c22,_0x77bccb){extensions['rewrite'](_0x18c474,_0x542c22);},'afterDestroy':function(_0x13dde4,_0x42d089){extensions[_0x5da2('0xa')](_0x18c474,_0x13dde4);}}});};
\ No newline at end of file
+var _0xa676=['api','moment','path','rimraf','../../config/environment','./interval.attributes','../../components/extensions/rewrite','exports','Interval','rewrite','lodash','util','../../config/logger'];(function(_0x126491,_0x26c7c2){var _0x1ee4ac=function(_0x718db2){while(--_0x718db2){_0x126491['push'](_0x126491['shift']());}};_0x1ee4ac(++_0x26c7c2);}(_0xa676,0x101));var _0x6a67=function(_0x39d9c8,_0x599617){_0x39d9c8=_0x39d9c8-0x0;var _0x2a7718=_0xa676[_0x39d9c8];return _0x2a7718;};'use strict';var _=require(_0x6a67('0x0'));var util=require(_0x6a67('0x1'));var logger=require(_0x6a67('0x2'))(_0x6a67('0x3'));var moment=require(_0x6a67('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x6a67('0x5'));var rimraf=require(_0x6a67('0x6'));var config=require(_0x6a67('0x7'));var attributes=require(_0x6a67('0x8'));var extensions=require(_0x6a67('0x9'));module[_0x6a67('0xa')]=function(_0x14e8c5,_0x7e0b24){return _0x14e8c5['define'](_0x6a67('0xb'),attributes,{'tableName':'tools_intervals','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x220754,_0x496739){extensions[_0x6a67('0xc')](_0x14e8c5,_0x220754);},'afterBulkCreate':function(_0x12dcb0,_0x5bd7ad,_0x324d7c){_0x324d7c();extensions[_0x6a67('0xc')](_0x14e8c5,_0x12dcb0[0x0]);},'afterUpdate':function(_0x27cfc9,_0x25b545){extensions[_0x6a67('0xc')](_0x14e8c5,_0x27cfc9);},'afterDestroy':function(_0x4ba5fe,_0x2c99ed){extensions['rewrite'](_0x14e8c5,_0x4ba5fe);}}});};
\ No newline at end of file
index 1423851..c6332e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['code','error','message','result','catch','Interval','findAll','options','raw','where','attributes','include','map','model','GetInterval','stringify','ShowInterval','find','then','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Interval,\x20%s,\x20%s','request\x20sent','debug','Interval,\x20%s,\x20%s,\x20%s'];(function(_0x358806,_0x322b66){var _0x19fdcb=function(_0xe01b8d){while(--_0xe01b8d){_0x358806['push'](_0x358806['shift']());}};_0x19fdcb(++_0x322b66);}(_0xa9e0,0x123));var _0x0a9e=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0xa9e0[_0x12d033];return _0x3b4e80;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}exports['GetInterval']=function(_0x459eb1){var _0x478723=this;return new Promise(function(_0x106033,_0x205fd6){return db[_0x0a9e('0x14')][_0x0a9e('0x15')]({'raw':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x18')]||null:null,'attributes':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x19')]||null:null,'limit':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')]['limit']||null:null,'include':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x459eb1[_0x0a9e('0x16')]['include'],function(_0xfb6e48){return{'model':db[_0xfb6e48[_0x0a9e('0x1c')]],'as':_0xfb6e48['as'],'attributes':_0xfb6e48[_0x0a9e('0x19')],'include':_0xfb6e48[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0xfb6e48[_0x0a9e('0x1a')],function(_0x16b1ca){return{'model':db[_0x16b1ca['model']],'as':_0x16b1ca['as'],'attributes':_0x16b1ca['attributes'],'include':_0x16b1ca[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x16b1ca[_0x0a9e('0x1a')],function(_0x33161b){return{'model':db[_0x33161b['model']],'as':_0x33161b['as'],'attributes':_0x33161b[_0x0a9e('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45a1e7){logger['info'](_0x0a9e('0x1d'),_0x459eb1);logger[_0x0a9e('0xd')](_0x0a9e('0x1d'),_0x459eb1,JSON[_0x0a9e('0x1e')](_0x45a1e7));_0x106033(_0x45a1e7);})[_0x0a9e('0x13')](function(_0x1538a4){logger[_0x0a9e('0x10')](_0x0a9e('0x1d'),_0x1538a4['message'],_0x459eb1);_0x205fd6(_0x478723[_0x0a9e('0x10')](0x1f4,_0x1538a4[_0x0a9e('0x11')]));});});};exports[_0x0a9e('0x1f')]=function(_0x2ec755){var _0x5c877d=this;return new Promise(function(_0x15b200,_0x40e7a3){return db[_0x0a9e('0x14')][_0x0a9e('0x20')]({'raw':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')]['where']||null:null,'attributes':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755['options'][_0x0a9e('0x19')]||null:null,'include':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x2ec755['options'][_0x0a9e('0x1a')],function(_0x46f0a5){return{'model':db[_0x46f0a5[_0x0a9e('0x1c')]],'as':_0x46f0a5['as'],'attributes':_0x46f0a5[_0x0a9e('0x19')],'include':_0x46f0a5[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x46f0a5[_0x0a9e('0x1a')],function(_0x39e565){return{'model':db[_0x39e565['model']],'as':_0x39e565['as'],'attributes':_0x39e565[_0x0a9e('0x19')],'include':_0x39e565['include']?_[_0x0a9e('0x1b')](_0x39e565[_0x0a9e('0x1a')],function(_0x2b7e7f){return{'model':db[_0x2b7e7f[_0x0a9e('0x1c')]],'as':_0x2b7e7f['as'],'attributes':_0x2b7e7f['attributes']};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x21')](function(_0xd1836d){logger[_0x0a9e('0xa')](_0x0a9e('0x1f'),_0x2ec755);logger['debug']('ShowInterval',_0x2ec755,JSON[_0x0a9e('0x1e')](_0xd1836d));_0x15b200(_0xd1836d);})['catch'](function(_0x24936a){logger[_0x0a9e('0x10')](_0x0a9e('0x1f'),_0x24936a[_0x0a9e('0x11')],_0x2ec755);_0x40e7a3(_0x5c877d['error'](0x1f4,_0x24936a[_0x0a9e('0x11')]));});});};
\ No newline at end of file
+var _0xa9e0=['code','error','message','result','catch','Interval','findAll','options','raw','where','attributes','include','map','model','GetInterval','stringify','ShowInterval','find','then','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Interval,\x20%s,\x20%s','request\x20sent','debug','Interval,\x20%s,\x20%s,\x20%s'];(function(_0x5cb97e,_0x132a39){var _0x1714b4=function(_0x384210){while(--_0x384210){_0x5cb97e['push'](_0x5cb97e['shift']());}};_0x1714b4(++_0x132a39);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}exports['GetInterval']=function(_0x459eb1){var _0x478723=this;return new Promise(function(_0x106033,_0x205fd6){return db[_0x0a9e('0x14')][_0x0a9e('0x15')]({'raw':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x18')]||null:null,'attributes':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x19')]||null:null,'limit':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')]['limit']||null:null,'include':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x459eb1[_0x0a9e('0x16')]['include'],function(_0xfb6e48){return{'model':db[_0xfb6e48[_0x0a9e('0x1c')]],'as':_0xfb6e48['as'],'attributes':_0xfb6e48[_0x0a9e('0x19')],'include':_0xfb6e48[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0xfb6e48[_0x0a9e('0x1a')],function(_0x16b1ca){return{'model':db[_0x16b1ca['model']],'as':_0x16b1ca['as'],'attributes':_0x16b1ca['attributes'],'include':_0x16b1ca[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x16b1ca[_0x0a9e('0x1a')],function(_0x33161b){return{'model':db[_0x33161b['model']],'as':_0x33161b['as'],'attributes':_0x33161b[_0x0a9e('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45a1e7){logger['info'](_0x0a9e('0x1d'),_0x459eb1);logger[_0x0a9e('0xd')](_0x0a9e('0x1d'),_0x459eb1,JSON[_0x0a9e('0x1e')](_0x45a1e7));_0x106033(_0x45a1e7);})[_0x0a9e('0x13')](function(_0x1538a4){logger[_0x0a9e('0x10')](_0x0a9e('0x1d'),_0x1538a4['message'],_0x459eb1);_0x205fd6(_0x478723[_0x0a9e('0x10')](0x1f4,_0x1538a4[_0x0a9e('0x11')]));});});};exports[_0x0a9e('0x1f')]=function(_0x2ec755){var _0x5c877d=this;return new Promise(function(_0x15b200,_0x40e7a3){return db[_0x0a9e('0x14')][_0x0a9e('0x20')]({'raw':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')]['where']||null:null,'attributes':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755['options'][_0x0a9e('0x19')]||null:null,'include':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x2ec755['options'][_0x0a9e('0x1a')],function(_0x46f0a5){return{'model':db[_0x46f0a5[_0x0a9e('0x1c')]],'as':_0x46f0a5['as'],'attributes':_0x46f0a5[_0x0a9e('0x19')],'include':_0x46f0a5[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x46f0a5[_0x0a9e('0x1a')],function(_0x39e565){return{'model':db[_0x39e565['model']],'as':_0x39e565['as'],'attributes':_0x39e565[_0x0a9e('0x19')],'include':_0x39e565['include']?_[_0x0a9e('0x1b')](_0x39e565[_0x0a9e('0x1a')],function(_0x2b7e7f){return{'model':db[_0x2b7e7f[_0x0a9e('0x1c')]],'as':_0x2b7e7f['as'],'attributes':_0x2b7e7f['attributes']};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x21')](function(_0xd1836d){logger[_0x0a9e('0xa')](_0x0a9e('0x1f'),_0x2ec755);logger['debug']('ShowInterval',_0x2ec755,JSON[_0x0a9e('0x1e')](_0xd1836d));_0x15b200(_0xd1836d);})['catch'](function(_0x24936a){logger[_0x0a9e('0x10')](_0x0a9e('0x1f'),_0x24936a[_0x0a9e('0x11')],_0x2ec755);_0x40e7a3(_0x5c877d['error'](0x1f4,_0x24936a[_0x0a9e('0x11')]));});});};
\ No newline at end of file
index 4a049f7..4e3200b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['./jira.controller','post','send','exports','express','../../components/auth/service'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xb10b,0x12a));var _0xbb10=function(_0x29b1a7,_0x1ed6b6){_0x29b1a7=_0x29b1a7-0x0;var _0x4a69af=_0xb10b[_0x29b1a7];return _0x4a69af;};'use strict';var express=require(_0xbb10('0x0'));var router=express['Router']();var auth=require(_0xbb10('0x1'));var controller=require(_0xbb10('0x2'));router[_0xbb10('0x3')]('/',auth['isAuthenticated'](),controller[_0xbb10('0x4')]);module[_0xbb10('0x5')]=router;
\ No newline at end of file
+var _0x5f66=['send','exports','Router','./jira.controller','post','isAuthenticated'];(function(_0x258fb0,_0x5362dc){var _0x4d1afe=function(_0x1c8f24){while(--_0x1c8f24){_0x258fb0['push'](_0x258fb0['shift']());}};_0x4d1afe(++_0x5362dc);}(_0x5f66,0x1a0));var _0x65f6=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x5f66[_0x13d07a];return _0x5ee0ee;};'use strict';var express=require('express');var router=express[_0x65f6('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x65f6('0x1'));router[_0x65f6('0x2')]('/',auth[_0x65f6('0x3')](),controller[_0x65f6('0x4')]);module[_0x65f6('0x5')]=router;
\ No newline at end of file
index 5b34cc2..65bd7a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2db7=['name','reason','track.xcallymotion.com','/rest/api/2/issue','POST','application/json','Basic\x20','toString','base64','request','setEncoding','utf8','end','status','statusCode','parse','error','json','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','write','openIssue','send','body','headers','x-forwarded-for','connection','remoteAddress','socket','bluebird','https','../../config/logger','api','support','MOTGUI','summary','Report','\x20from\x20','description','stringify','fields','customfield_11500','email','customfield_11501','customfield_11502','newToken'];(function(_0x2431d6,_0x25189a){var _0x4d0f9b=function(_0x52cd84){while(--_0x52cd84){_0x2431d6['push'](_0x2431d6['shift']());}};_0x4d0f9b(++_0x25189a);}(_0x2db7,0x1b1));var _0x72db=function(_0x176265,_0x103def){_0x176265=_0x176265-0x0;var _0x4596ac=_0x2db7[_0x176265];return _0x4596ac;};'use strict';var BPromise=require(_0x72db('0x0'));var https=require(_0x72db('0x1'));var logger=require(_0x72db('0x2'))(_0x72db('0x3'));var USERNAME=_0x72db('0x4');var PASSWORD='3eAmWpBVP0';function openIssue(_0x5a2e99,_0x38cc61){var _0x2d30dd={'fields':{'project':{'key':_0x5a2e99['key']||_0x72db('0x5')},'summary':(_0x5a2e99[_0x72db('0x6')]||_0x72db('0x7'))+_0x72db('0x8')+_0x5a2e99['ip'],'description':_0x5a2e99[_0x72db('0x9')]||JSON[_0x72db('0xa')](_0x5a2e99),'issuetype':{'name':_0x5a2e99['issuetype']||'Bug'}}};_0x2d30dd[_0x72db('0xb')][_0x72db('0xc')]=_0x5a2e99[_0x72db('0xd')];_0x2d30dd[_0x72db('0xb')][_0x72db('0xe')]=_0x5a2e99['oldToken'];_0x2d30dd[_0x72db('0xb')][_0x72db('0xf')]=_0x5a2e99[_0x72db('0x10')];_0x2d30dd[_0x72db('0xb')]['customfield_11503']=_0x5a2e99[_0x72db('0x11')];_0x2d30dd[_0x72db('0xb')]['customfield_11504']=_0x5a2e99[_0x72db('0x12')];_0x2d30dd['fields']['customfield_10102']=_0x5a2e99['ip'];var _0x1d369f={'host':_0x72db('0x13'),'port':0x1bb,'path':_0x72db('0x14'),'method':_0x72db('0x15'),'timeout':0x4e20,'headers':{'Content-Type':_0x72db('0x16'),'Authorization':_0x72db('0x17')+new Buffer(USERNAME+':'+PASSWORD)[_0x72db('0x18')](_0x72db('0x19'))}};var _0x3d2285=JSON[_0x72db('0xa')](_0x2d30dd);var _0x841efe=https[_0x72db('0x1a')](_0x1d369f,function(_0xfc96b9){_0xfc96b9[_0x72db('0x1b')](_0x72db('0x1c'));var _0x4284af='';_0xfc96b9['on']('data',function(_0x3d8844){_0x4284af+=_0x3d8844;});_0xfc96b9['on'](_0x72db('0x1d'),function(){if(_0x38cc61){return _0x38cc61[_0x72db('0x1e')](_0xfc96b9[_0x72db('0x1f')])['json'](JSON[_0x72db('0x20')](_0x4284af));}});});_0x841efe['on'](_0x72db('0x21'),function(_0x59c12a){if(_0x38cc61){return _0x38cc61[_0x72db('0x1e')](0x1f4)[_0x72db('0x22')]({'errors':[{'message':_0x72db('0x23'),'type':'api.jira'}]});}});_0x841efe[_0x72db('0x24')](_0x3d2285);_0x841efe['end']();}exports[_0x72db('0x25')]=openIssue;exports[_0x72db('0x26')]=function(_0x554b34,_0x18233a){_0x554b34[_0x72db('0x27')]['ip']=_0x554b34[_0x72db('0x28')][_0x72db('0x29')]||_0x554b34[_0x72db('0x2a')][_0x72db('0x2b')]||_0x554b34[_0x72db('0x2c')][_0x72db('0x2b')]||_0x554b34[_0x72db('0x2a')][_0x72db('0x2c')][_0x72db('0x2b')];return openIssue(_0x554b34[_0x72db('0x27')],_0x18233a);};
\ No newline at end of file
+var _0xa260=['connection','remoteAddress','socket','bluebird','../../config/logger','api','support','key','MOTGUI','summary','Report','\x20from\x20','description','stringify','issuetype','Bug','fields','customfield_11500','email','customfield_11501','oldToken','customfield_11503','customfield_11504','reason','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','POST','application/json','Basic\x20','toString','request','setEncoding','utf8','data','statusCode','parse','error','status','json','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','write','end','openIssue','send','body','headers','x-forwarded-for'];(function(_0x3ea8b8,_0x508efb){var _0x7d213f=function(_0x13c1e1){while(--_0x13c1e1){_0x3ea8b8['push'](_0x3ea8b8['shift']());}};_0x7d213f(++_0x508efb);}(_0xa260,0x153));var _0x0a26=function(_0x2065af,_0x29d814){_0x2065af=_0x2065af-0x0;var _0x1fdcc3=_0xa260[_0x2065af];return _0x1fdcc3;};'use strict';var BPromise=require(_0x0a26('0x0'));var https=require('https');var logger=require(_0x0a26('0x1'))(_0x0a26('0x2'));var USERNAME=_0x0a26('0x3');var PASSWORD='3eAmWpBVP0';function openIssue(_0x2b1936,_0x7aaf7){var _0x40fff0={'fields':{'project':{'key':_0x2b1936[_0x0a26('0x4')]||_0x0a26('0x5')},'summary':(_0x2b1936[_0x0a26('0x6')]||_0x0a26('0x7'))+_0x0a26('0x8')+_0x2b1936['ip'],'description':_0x2b1936[_0x0a26('0x9')]||JSON[_0x0a26('0xa')](_0x2b1936),'issuetype':{'name':_0x2b1936[_0x0a26('0xb')]||_0x0a26('0xc')}}};_0x40fff0[_0x0a26('0xd')][_0x0a26('0xe')]=_0x2b1936[_0x0a26('0xf')];_0x40fff0['fields'][_0x0a26('0x10')]=_0x2b1936[_0x0a26('0x11')];_0x40fff0[_0x0a26('0xd')]['customfield_11502']=_0x2b1936['newToken'];_0x40fff0[_0x0a26('0xd')][_0x0a26('0x12')]=_0x2b1936['name'];_0x40fff0[_0x0a26('0xd')][_0x0a26('0x13')]=_0x2b1936[_0x0a26('0x14')];_0x40fff0[_0x0a26('0xd')][_0x0a26('0x15')]=_0x2b1936['ip'];var _0x568742={'host':_0x0a26('0x16'),'port':0x1bb,'path':_0x0a26('0x17'),'method':_0x0a26('0x18'),'timeout':0x4e20,'headers':{'Content-Type':_0x0a26('0x19'),'Authorization':_0x0a26('0x1a')+new Buffer(USERNAME+':'+PASSWORD)[_0x0a26('0x1b')]('base64')}};var _0x4ddc45=JSON[_0x0a26('0xa')](_0x40fff0);var _0x3a0e5d=https[_0x0a26('0x1c')](_0x568742,function(_0x14dc30){_0x14dc30[_0x0a26('0x1d')](_0x0a26('0x1e'));var _0x497d05='';_0x14dc30['on'](_0x0a26('0x1f'),function(_0x5b90ca){_0x497d05+=_0x5b90ca;});_0x14dc30['on']('end',function(){if(_0x7aaf7){return _0x7aaf7['status'](_0x14dc30[_0x0a26('0x20')])['json'](JSON[_0x0a26('0x21')](_0x497d05));}});});_0x3a0e5d['on'](_0x0a26('0x22'),function(_0xa33945){if(_0x7aaf7){return _0x7aaf7[_0x0a26('0x23')](0x1f4)[_0x0a26('0x24')]({'errors':[{'message':_0x0a26('0x25'),'type':'api.jira'}]});}});_0x3a0e5d[_0x0a26('0x26')](_0x4ddc45);_0x3a0e5d[_0x0a26('0x27')]();}exports[_0x0a26('0x28')]=openIssue;exports[_0x0a26('0x29')]=function(_0xa3460d,_0x42cb9f){_0xa3460d[_0x0a26('0x2a')]['ip']=_0xa3460d[_0x0a26('0x2b')][_0x0a26('0x2c')]||_0xa3460d[_0x0a26('0x2d')][_0x0a26('0x2e')]||_0xa3460d[_0x0a26('0x2f')][_0x0a26('0x2e')]||_0xa3460d[_0x0a26('0x2d')]['socket'][_0x0a26('0x2e')];return openIssue(_0xa3460d['body'],_0x42cb9f);};
\ No newline at end of file
index 768a0ba..2382293 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee5b=['fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','show','post','put','/:id','update','delete','destroy','exports','multer','path','connect-timeout','Router'];(function(_0x249a5b,_0x8aa6f8){var _0x259973=function(_0x5d3800){while(--_0x5d3800){_0x249a5b['push'](_0x249a5b['shift']());}};_0x259973(++_0x8aa6f8);}(_0xee5b,0x1f4));var _0xbee5=function(_0x4da617,_0x1e8350){_0x4da617=_0x4da617-0x0;var _0xc58fd6=_0xee5b[_0x4da617];return _0xc58fd6;};'use strict';var multer=require(_0xbee5('0x0'));var util=require('util');var path=require(_0xbee5('0x1'));var timeout=require(_0xbee5('0x2'));var express=require('express');var router=express[_0xbee5('0x3')]();var fs_extra=require(_0xbee5('0x4'));var auth=require(_0xbee5('0x5'));var interaction=require(_0xbee5('0x6'));var config=require('../../config/environment');var controller=require('./jscriptyAnswerReport.controller');router[_0xbee5('0x7')]('/',auth[_0xbee5('0x8')](),controller[_0xbee5('0x9')]);router[_0xbee5('0x7')]('/describe',auth['isAuthenticated'](),controller['describe']);router['get']('/:id',auth[_0xbee5('0x8')](),controller[_0xbee5('0xa')]);router[_0xbee5('0xb')]('/',auth[_0xbee5('0x8')](),controller['create']);router[_0xbee5('0xc')](_0xbee5('0xd'),auth[_0xbee5('0x8')](),controller[_0xbee5('0xe')]);router[_0xbee5('0xf')](_0xbee5('0xd'),auth[_0xbee5('0x8')](),controller[_0xbee5('0x10')]);module[_0xbee5('0x11')]=router;
\ No newline at end of file
+var _0x5ff3=['/:id','post','create','put','update','destroy','exports','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyAnswerReport.controller','get','isAuthenticated','index'];(function(_0x434bb8,_0x145b7d){var _0x463c1a=function(_0x23f5cf){while(--_0x23f5cf){_0x434bb8['push'](_0x434bb8['shift']());}};_0x463c1a(++_0x145b7d);}(_0x5ff3,0x17d));var _0x35ff=function(_0x20fac4,_0x5a2116){_0x20fac4=_0x20fac4-0x0;var _0x505258=_0x5ff3[_0x20fac4];return _0x505258;};'use strict';var multer=require('multer');var util=require(_0x35ff('0x0'));var path=require('path');var timeout=require(_0x35ff('0x1'));var express=require('express');var router=express[_0x35ff('0x2')]();var fs_extra=require(_0x35ff('0x3'));var auth=require(_0x35ff('0x4'));var interaction=require(_0x35ff('0x5'));var config=require('../../config/environment');var controller=require(_0x35ff('0x6'));router[_0x35ff('0x7')]('/',auth[_0x35ff('0x8')](),controller[_0x35ff('0x9')]);router[_0x35ff('0x7')]('/describe',auth[_0x35ff('0x8')](),controller['describe']);router[_0x35ff('0x7')](_0x35ff('0xa'),auth[_0x35ff('0x8')](),controller['show']);router[_0x35ff('0xb')]('/',auth['isAuthenticated'](),controller[_0x35ff('0xc')]);router[_0x35ff('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x35ff('0xe')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x35ff('0xf')]);module[_0x35ff('0x10')]=router;
\ No newline at end of file
index 2c44ead..ecb176d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x7a54,0x106));var _0x47a5=function(_0x502df9,_0x582654){_0x502df9=_0x502df9-0x0;var _0x51cf1b=_0x7a54[_0x502df9];return _0x51cf1b;};'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(_0x50a0c2,_0x4befab){var _0x5ebadd=function(_0x3a3342){while(--_0x3a3342){_0x50a0c2['push'](_0x50a0c2['shift']());}};_0x5ebadd(++_0x4befab);}(_0x7a54,0x106));var _0x47a5=function(_0x3b4cf5,_0x406630){_0x3b4cf5=_0x3b4cf5-0x0;var _0x342a61=_0x7a54[_0x3b4cf5];return _0x342a61;};'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 b06b6c9..869dbf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c49=['count','offset','set','update','then','destroy','error','stack','name','send','index','map','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','options','JscriptyAnswerReport','include','findAll','rows','catch','show','create','body','find','params','describe','eml-format','rimraf','request-promise','bluebird','mustache','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0x7c49,0x141));var _0x97c4=function(_0x3d721c,_0x2d6b5e){_0x3d721c=_0x3d721c-0x0;var _0x541db7=_0x7c49[_0x3d721c];return _0x541db7;};'use strict';var emlformat=require(_0x97c4('0x0'));var rimraf=require(_0x97c4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x97c4('0x2'));var moment=require('moment');var BPromise=require(_0x97c4('0x3'));var Mustache=require(_0x97c4('0x4'));var util=require('util');var path=require('path');var sox=require(_0x97c4('0x5'));var csv=require(_0x97c4('0x6'));var ejs=require(_0x97c4('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x97c4('0x8'));var squel=require(_0x97c4('0x9'));var crypto=require(_0x97c4('0xa'));var jsforce=require(_0x97c4('0xb'));var deskjs=require(_0x97c4('0xc'));var toCsv=require(_0x97c4('0x6'));var querystring=require(_0x97c4('0xd'));var Papa=require(_0x97c4('0xe'));var Redis=require(_0x97c4('0xf'));var authService=require(_0x97c4('0x10'));var qs=require(_0x97c4('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x97c4('0x12'))(_0x97c4('0x13'));var utils=require('../../config/utils');var config=require(_0x97c4('0x14'));var licenseUtil=require(_0x97c4('0x15'));var db=require(_0x97c4('0x16'))['db'];function respondWithStatusCode(_0x5bd0a2,_0x4e5e98){_0x4e5e98=_0x4e5e98||0xcc;return function(_0x1f16cc){if(_0x1f16cc){return _0x5bd0a2[_0x97c4('0x17')](_0x4e5e98);}return _0x5bd0a2['status'](_0x4e5e98)[_0x97c4('0x18')]();};}function respondWithResult(_0x519188,_0xbd9965){_0xbd9965=_0xbd9965||0xc8;return function(_0x37b746){if(_0x37b746){return _0x519188[_0x97c4('0x19')](_0xbd9965)[_0x97c4('0x1a')](_0x37b746);}};}function respondWithFilteredResult(_0x94f8ed,_0x3434ee){return function(_0x50d8ad){if(_0x50d8ad){var _0x1fff7e=typeof _0x3434ee['offset']===_0x97c4('0x1b')&&typeof _0x3434ee[_0x97c4('0x1c')]===_0x97c4('0x1b');var _0x1f178b=_0x50d8ad[_0x97c4('0x1d')];var _0x142f94=_0x1fff7e?0x0:_0x3434ee[_0x97c4('0x1e')];var _0x1ce103=_0x1fff7e?_0x50d8ad[_0x97c4('0x1d')]:_0x3434ee[_0x97c4('0x1e')]+_0x3434ee['limit'];var _0x317916;if(_0x1ce103>=_0x1f178b){_0x1ce103=_0x1f178b;_0x317916=0xc8;}else{_0x317916=0xce;}_0x94f8ed[_0x97c4('0x19')](_0x317916);return _0x94f8ed[_0x97c4('0x1f')]('Content-Range',_0x142f94+'-'+_0x1ce103+'/'+_0x1f178b)[_0x97c4('0x1a')](_0x50d8ad);}return null;};}function patchUpdates(_0x222ba2){return function(_0x288284){try{jsonpatch['apply'](_0x288284,_0x222ba2,!![]);}catch(_0x511947){return BPromise['reject'](_0x511947);}return _0x288284['save']();};}function saveUpdates(_0x3373f8,_0x3447fc){return function(_0x40859){if(_0x40859){return _0x40859[_0x97c4('0x20')](_0x3373f8)[_0x97c4('0x21')](function(_0x8e8544){return _0x8e8544;});}return null;};}function removeEntity(_0x2ca647,_0x3c00aa){return function(_0x42abf6){if(_0x42abf6){return _0x42abf6[_0x97c4('0x22')]()[_0x97c4('0x21')](function(){_0x2ca647[_0x97c4('0x19')](0xcc)[_0x97c4('0x18')]();});}};}function handleEntityNotFound(_0x4afb57,_0x3da867){return function(_0x15a15f){if(!_0x15a15f){_0x4afb57[_0x97c4('0x17')](0x194);}return _0x15a15f;};}function handleError(_0x58f724,_0x2daa91){_0x2daa91=_0x2daa91||0x1f4;return function(_0x531c31){logger[_0x97c4('0x23')](_0x531c31[_0x97c4('0x24')]);if(_0x531c31[_0x97c4('0x25')]){delete _0x531c31[_0x97c4('0x25')];}_0x58f724[_0x97c4('0x19')](_0x2daa91)[_0x97c4('0x26')](_0x531c31);};}exports[_0x97c4('0x27')]=function(_0x38cb3f,_0x174be5){var _0x3c4323={},_0x3bc0d2={},_0x53dc8d={'count':0x0,'rows':[]};var _0xd727c0=_[_0x97c4('0x28')](db['JscriptyAnswerReport']['rawAttributes'],function(_0x2acdaf){return{'name':_0x2acdaf['fieldName'],'type':_0x2acdaf[_0x97c4('0x29')]['key']};});_0x3bc0d2[_0x97c4('0x2a')]=_[_0x97c4('0x28')](_0xd727c0,_0x97c4('0x25'));_0x3bc0d2[_0x97c4('0x2b')]=_[_0x97c4('0x2c')](_0x38cb3f[_0x97c4('0x2b')]);_0x3bc0d2[_0x97c4('0x2d')]=_[_0x97c4('0x2e')](_0x3bc0d2[_0x97c4('0x2a')],_0x3bc0d2['query']);_0x3c4323['attributes']=_[_0x97c4('0x2e')](_0x3bc0d2[_0x97c4('0x2a')],qs[_0x97c4('0x2f')](_0x38cb3f[_0x97c4('0x2b')][_0x97c4('0x2f')]));_0x3c4323[_0x97c4('0x30')]=_0x3c4323[_0x97c4('0x30')][_0x97c4('0x31')]?_0x3c4323['attributes']:_0x3bc0d2[_0x97c4('0x2a')];if(!_0x38cb3f[_0x97c4('0x2b')][_0x97c4('0x32')](_0x97c4('0x33'))){_0x3c4323[_0x97c4('0x1c')]=qs[_0x97c4('0x1c')](_0x38cb3f[_0x97c4('0x2b')]['limit']);_0x3c4323[_0x97c4('0x1e')]=qs['offset'](_0x38cb3f['query'][_0x97c4('0x1e')]);}_0x3c4323[_0x97c4('0x34')]=qs[_0x97c4('0x35')](_0x38cb3f[_0x97c4('0x2b')][_0x97c4('0x35')]);_0x3c4323['where']=qs['filters'](_['pick'](_0x38cb3f['query'],_0x3bc0d2[_0x97c4('0x2d')]),_0xd727c0);if(_0x38cb3f[_0x97c4('0x2b')][_0x97c4('0x36')]){_0x3c4323[_0x97c4('0x37')]=_[_0x97c4('0x38')](_0x3c4323[_0x97c4('0x37')],{'$or':_[_0x97c4('0x28')](_0xd727c0,function(_0x4f14c7){if(_0x4f14c7['type']!==_0x97c4('0x39')){var _0xd2feb9={};_0xd2feb9[_0x4f14c7['name']]={'$like':'%'+_0x38cb3f[_0x97c4('0x2b')]['filter']+'%'};return _0xd2feb9;}})});}_0x3c4323=_[_0x97c4('0x38')]({},_0x3c4323,_0x38cb3f[_0x97c4('0x3a')]);var _0x359936={'where':_0x3c4323['where']};return db[_0x97c4('0x3b')][_0x97c4('0x1d')](_0x359936)[_0x97c4('0x21')](function(_0x568891){_0x53dc8d[_0x97c4('0x1d')]=_0x568891;if(_0x38cb3f[_0x97c4('0x2b')]['includeAll']){_0x3c4323[_0x97c4('0x3c')]=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0x97c4('0x3d')](_0x3c4323);})[_0x97c4('0x21')](function(_0x421dd9){_0x53dc8d[_0x97c4('0x3e')]=_0x421dd9;return _0x53dc8d;})['then'](respondWithFilteredResult(_0x174be5,_0x3c4323))[_0x97c4('0x3f')](handleError(_0x174be5,null));};exports[_0x97c4('0x40')]=function(_0x138f90,_0xad540a){var _0x4ee24a={'raw':!![],'where':{'id':_0x138f90['params']['id']}},_0x541993={};_0x541993['model']=_[_0x97c4('0x2c')](db[_0x97c4('0x3b')]['rawAttributes']);_0x541993[_0x97c4('0x2b')]=_[_0x97c4('0x2c')](_0x138f90[_0x97c4('0x2b')]);_0x541993[_0x97c4('0x2d')]=_[_0x97c4('0x2e')](_0x541993[_0x97c4('0x2a')],_0x541993[_0x97c4('0x2b')]);_0x4ee24a['attributes']=_['intersection'](_0x541993[_0x97c4('0x2a')],qs[_0x97c4('0x2f')](_0x138f90[_0x97c4('0x2b')][_0x97c4('0x2f')]));_0x4ee24a['attributes']=_0x4ee24a['attributes']['length']?_0x4ee24a[_0x97c4('0x30')]:_0x541993['model'];if(_0x138f90['query']['includeAll']){_0x4ee24a['include']=[{'all':!![]}];}_0x4ee24a=_[_0x97c4('0x38')]({},_0x4ee24a,_0x138f90['options']);return db[_0x97c4('0x3b')]['find'](_0x4ee24a)['then'](handleEntityNotFound(_0xad540a,null))[_0x97c4('0x21')](respondWithResult(_0xad540a,null))[_0x97c4('0x3f')](handleError(_0xad540a,null));};exports[_0x97c4('0x41')]=function(_0x26607b,_0x3e7047){return db[_0x97c4('0x3b')]['create'](_0x26607b['body'],{})[_0x97c4('0x21')](respondWithResult(_0x3e7047,0xc9))[_0x97c4('0x3f')](handleError(_0x3e7047,null));};exports[_0x97c4('0x20')]=function(_0x2e1185,_0x1fe055){if(_0x2e1185[_0x97c4('0x42')]['id']){delete _0x2e1185['body']['id'];}return db[_0x97c4('0x3b')][_0x97c4('0x43')]({'where':{'id':_0x2e1185[_0x97c4('0x44')]['id']}})[_0x97c4('0x21')](handleEntityNotFound(_0x1fe055,null))[_0x97c4('0x21')](saveUpdates(_0x2e1185[_0x97c4('0x42')],null))[_0x97c4('0x21')](respondWithResult(_0x1fe055,null))[_0x97c4('0x3f')](handleError(_0x1fe055,null));};exports[_0x97c4('0x22')]=function(_0x3a3d72,_0x32c973){return db[_0x97c4('0x3b')][_0x97c4('0x43')]({'where':{'id':_0x3a3d72[_0x97c4('0x44')]['id']}})[_0x97c4('0x21')](handleEntityNotFound(_0x32c973,null))[_0x97c4('0x21')](removeEntity(_0x32c973,null))[_0x97c4('0x3f')](handleError(_0x32c973,null));};exports[_0x97c4('0x45')]=function(_0xbeb854,_0x285a5e){return db[_0x97c4('0x3b')]['describe']()[_0x97c4('0x21')](respondWithResult(_0x285a5e,null))['catch'](handleError(_0x285a5e,null));};
\ No newline at end of file
+var _0x96aa=['attributes','fields','length','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','params','keys','rawAttributes','find','create','body','update','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','stack','name','send','map','JscriptyAnswerReport','fieldName','type','key','model','query','filters','intersection'];(function(_0x5b561d,_0x422b7c){var _0x431060=function(_0x401409){while(--_0x401409){_0x5b561d['push'](_0x5b561d['shift']());}};_0x431060(++_0x422b7c);}(_0x96aa,0x67));var _0xa96a=function(_0x28b23a,_0x54f18b){_0x28b23a=_0x28b23a-0x0;var _0x47a638=_0x96aa[_0x28b23a];return _0x47a638;};'use strict';var emlformat=require(_0xa96a('0x0'));var rimraf=require(_0xa96a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa96a('0x2'));var rp=require(_0xa96a('0x3'));var moment=require(_0xa96a('0x4'));var BPromise=require(_0xa96a('0x5'));var Mustache=require(_0xa96a('0x6'));var util=require('util');var path=require(_0xa96a('0x7'));var sox=require(_0xa96a('0x8'));var csv=require('to-csv');var ejs=require(_0xa96a('0x9'));var fs=require('fs');var fs_extra=require(_0xa96a('0xa'));var _=require(_0xa96a('0xb'));var squel=require(_0xa96a('0xc'));var crypto=require(_0xa96a('0xd'));var jsforce=require(_0xa96a('0xe'));var deskjs=require(_0xa96a('0xf'));var toCsv=require(_0xa96a('0x10'));var querystring=require(_0xa96a('0x11'));var Papa=require(_0xa96a('0x12'));var Redis=require(_0xa96a('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xa96a('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa96a('0x15'));var logger=require(_0xa96a('0x16'))('api');var utils=require(_0xa96a('0x17'));var config=require(_0xa96a('0x18'));var licenseUtil=require(_0xa96a('0x19'));var db=require(_0xa96a('0x1a'))['db'];function respondWithStatusCode(_0x26267e,_0x3f0f9e){_0x3f0f9e=_0x3f0f9e||0xcc;return function(_0x225192){if(_0x225192){return _0x26267e[_0xa96a('0x1b')](_0x3f0f9e);}return _0x26267e[_0xa96a('0x1c')](_0x3f0f9e)[_0xa96a('0x1d')]();};}function respondWithResult(_0x431927,_0x3983ba){_0x3983ba=_0x3983ba||0xc8;return function(_0x4dc5a8){if(_0x4dc5a8){return _0x431927['status'](_0x3983ba)[_0xa96a('0x1e')](_0x4dc5a8);}};}function respondWithFilteredResult(_0x4f44b0,_0x14927b){return function(_0x5cd3f7){if(_0x5cd3f7){var _0x170e3d=typeof _0x14927b[_0xa96a('0x1f')]===_0xa96a('0x20')&&typeof _0x14927b[_0xa96a('0x21')]===_0xa96a('0x20');var _0x16257d=_0x5cd3f7['count'];var _0x8d32c0=_0x170e3d?0x0:_0x14927b[_0xa96a('0x1f')];var _0x48ca06=_0x170e3d?_0x5cd3f7[_0xa96a('0x22')]:_0x14927b[_0xa96a('0x1f')]+_0x14927b[_0xa96a('0x21')];var _0x2e8c75;if(_0x48ca06>=_0x16257d){_0x48ca06=_0x16257d;_0x2e8c75=0xc8;}else{_0x2e8c75=0xce;}_0x4f44b0[_0xa96a('0x1c')](_0x2e8c75);return _0x4f44b0[_0xa96a('0x23')](_0xa96a('0x24'),_0x8d32c0+'-'+_0x48ca06+'/'+_0x16257d)[_0xa96a('0x1e')](_0x5cd3f7);}return null;};}function patchUpdates(_0x3f41ad){return function(_0x5ee7ba){try{jsonpatch[_0xa96a('0x25')](_0x5ee7ba,_0x3f41ad,!![]);}catch(_0x5b7cbc){return BPromise[_0xa96a('0x26')](_0x5b7cbc);}return _0x5ee7ba['save']();};}function saveUpdates(_0x1572bd,_0x96a6b2){return function(_0x484ee7){if(_0x484ee7){return _0x484ee7['update'](_0x1572bd)[_0xa96a('0x27')](function(_0x33feeb){return _0x33feeb;});}return null;};}function removeEntity(_0x2c5db0,_0x2f2173){return function(_0x3eca00){if(_0x3eca00){return _0x3eca00[_0xa96a('0x28')]()['then'](function(){_0x2c5db0['status'](0xcc)[_0xa96a('0x1d')]();});}};}function handleEntityNotFound(_0x5916af,_0x36f3ae){return function(_0x44c4ee){if(!_0x44c4ee){_0x5916af[_0xa96a('0x1b')](0x194);}return _0x44c4ee;};}function handleError(_0x573ea7,_0x171450){_0x171450=_0x171450||0x1f4;return function(_0x485fb1){logger['error'](_0x485fb1[_0xa96a('0x29')]);if(_0x485fb1['name']){delete _0x485fb1[_0xa96a('0x2a')];}_0x573ea7[_0xa96a('0x1c')](_0x171450)[_0xa96a('0x2b')](_0x485fb1);};}exports['index']=function(_0x1bb965,_0x5256cb){var _0x55b8be={},_0x14c246={},_0x5576b9={'count':0x0,'rows':[]};var _0x585af1=_[_0xa96a('0x2c')](db[_0xa96a('0x2d')]['rawAttributes'],function(_0x34ef72){return{'name':_0x34ef72[_0xa96a('0x2e')],'type':_0x34ef72[_0xa96a('0x2f')][_0xa96a('0x30')]};});_0x14c246[_0xa96a('0x31')]=_['map'](_0x585af1,_0xa96a('0x2a'));_0x14c246[_0xa96a('0x32')]=_['keys'](_0x1bb965[_0xa96a('0x32')]);_0x14c246[_0xa96a('0x33')]=_[_0xa96a('0x34')](_0x14c246[_0xa96a('0x31')],_0x14c246[_0xa96a('0x32')]);_0x55b8be[_0xa96a('0x35')]=_[_0xa96a('0x34')](_0x14c246['model'],qs[_0xa96a('0x36')](_0x1bb965[_0xa96a('0x32')][_0xa96a('0x36')]));_0x55b8be[_0xa96a('0x35')]=_0x55b8be[_0xa96a('0x35')][_0xa96a('0x37')]?_0x55b8be['attributes']:_0x14c246['model'];if(!_0x1bb965['query']['hasOwnProperty'](_0xa96a('0x38'))){_0x55b8be[_0xa96a('0x21')]=qs[_0xa96a('0x21')](_0x1bb965[_0xa96a('0x32')][_0xa96a('0x21')]);_0x55b8be[_0xa96a('0x1f')]=qs[_0xa96a('0x1f')](_0x1bb965[_0xa96a('0x32')][_0xa96a('0x1f')]);}_0x55b8be[_0xa96a('0x39')]=qs[_0xa96a('0x3a')](_0x1bb965[_0xa96a('0x32')]['sort']);_0x55b8be['where']=qs[_0xa96a('0x33')](_[_0xa96a('0x3b')](_0x1bb965['query'],_0x14c246[_0xa96a('0x33')]),_0x585af1);if(_0x1bb965['query']['filter']){_0x55b8be[_0xa96a('0x3c')]=_[_0xa96a('0x3d')](_0x55b8be[_0xa96a('0x3c')],{'$or':_[_0xa96a('0x2c')](_0x585af1,function(_0x169acd){if(_0x169acd[_0xa96a('0x2f')]!==_0xa96a('0x3e')){var _0xbb2011={};_0xbb2011[_0x169acd[_0xa96a('0x2a')]]={'$like':'%'+_0x1bb965['query'][_0xa96a('0x3f')]+'%'};return _0xbb2011;}})});}_0x55b8be=_[_0xa96a('0x3d')]({},_0x55b8be,_0x1bb965[_0xa96a('0x40')]);var _0x5e4bf6={'where':_0x55b8be['where']};return db['JscriptyAnswerReport']['count'](_0x5e4bf6)[_0xa96a('0x27')](function(_0x2ee9d3){_0x5576b9['count']=_0x2ee9d3;if(_0x1bb965[_0xa96a('0x32')][_0xa96a('0x41')]){_0x55b8be[_0xa96a('0x42')]=[{'all':!![]}];}return db[_0xa96a('0x2d')][_0xa96a('0x43')](_0x55b8be);})[_0xa96a('0x27')](function(_0x4b66f5){_0x5576b9['rows']=_0x4b66f5;return _0x5576b9;})['then'](respondWithFilteredResult(_0x5256cb,_0x55b8be))[_0xa96a('0x44')](handleError(_0x5256cb,null));};exports[_0xa96a('0x45')]=function(_0x231ff2,_0x48cc46){var _0x101191={'raw':!![],'where':{'id':_0x231ff2[_0xa96a('0x46')]['id']}},_0x2edf92={};_0x2edf92['model']=_[_0xa96a('0x47')](db[_0xa96a('0x2d')][_0xa96a('0x48')]);_0x2edf92[_0xa96a('0x32')]=_[_0xa96a('0x47')](_0x231ff2[_0xa96a('0x32')]);_0x2edf92[_0xa96a('0x33')]=_['intersection'](_0x2edf92[_0xa96a('0x31')],_0x2edf92[_0xa96a('0x32')]);_0x101191['attributes']=_['intersection'](_0x2edf92[_0xa96a('0x31')],qs[_0xa96a('0x36')](_0x231ff2['query']['fields']));_0x101191[_0xa96a('0x35')]=_0x101191[_0xa96a('0x35')][_0xa96a('0x37')]?_0x101191[_0xa96a('0x35')]:_0x2edf92[_0xa96a('0x31')];if(_0x231ff2['query'][_0xa96a('0x41')]){_0x101191[_0xa96a('0x42')]=[{'all':!![]}];}_0x101191=_[_0xa96a('0x3d')]({},_0x101191,_0x231ff2['options']);return db['JscriptyAnswerReport'][_0xa96a('0x49')](_0x101191)[_0xa96a('0x27')](handleEntityNotFound(_0x48cc46,null))[_0xa96a('0x27')](respondWithResult(_0x48cc46,null))['catch'](handleError(_0x48cc46,null));};exports['create']=function(_0x1eea0f,_0x2bd9e2){return db[_0xa96a('0x2d')][_0xa96a('0x4a')](_0x1eea0f[_0xa96a('0x4b')],{})[_0xa96a('0x27')](respondWithResult(_0x2bd9e2,0xc9))[_0xa96a('0x44')](handleError(_0x2bd9e2,null));};exports[_0xa96a('0x4c')]=function(_0x193042,_0x2afe5b){if(_0x193042[_0xa96a('0x4b')]['id']){delete _0x193042[_0xa96a('0x4b')]['id'];}return db[_0xa96a('0x2d')][_0xa96a('0x49')]({'where':{'id':_0x193042[_0xa96a('0x46')]['id']}})['then'](handleEntityNotFound(_0x2afe5b,null))[_0xa96a('0x27')](saveUpdates(_0x193042['body'],null))['then'](respondWithResult(_0x2afe5b,null))[_0xa96a('0x44')](handleError(_0x2afe5b,null));};exports['destroy']=function(_0x4608fa,_0x195188){return db[_0xa96a('0x2d')][_0xa96a('0x49')]({'where':{'id':_0x4608fa[_0xa96a('0x46')]['id']}})[_0xa96a('0x27')](handleEntityNotFound(_0x195188,null))[_0xa96a('0x27')](removeEntity(_0x195188,null))[_0xa96a('0x44')](handleError(_0x195188,null));};exports[_0xa96a('0x4d')]=function(_0x285eca,_0x432a10){return db['JscriptyAnswerReport'][_0xa96a('0x4d')]()[_0xa96a('0x27')](respondWithResult(_0x432a10,null))['catch'](handleError(_0x432a10,null));};
\ No newline at end of file
index 428bd04..942c67f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4860=['path','rimraf','./jscriptyAnswerReport.attributes','define','JscriptyAnswerReport','report_jscripty_answers','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x1fc613,_0x1b48f1){var _0x3c81ad=function(_0x122419){while(--_0x122419){_0x1fc613['push'](_0x1fc613['shift']());}};_0x3c81ad(++_0x1b48f1);}(_0x4860,0xa2));var _0x0486=function(_0x54bb3d,_0x2964b0){_0x54bb3d=_0x54bb3d-0x0;var _0x148252=_0x4860[_0x54bb3d];return _0x148252;};'use strict';var _=require('lodash');var util=require(_0x0486('0x0'));var logger=require(_0x0486('0x1'))(_0x0486('0x2'));var moment=require(_0x0486('0x3'));var BPromise=require(_0x0486('0x4'));var rp=require(_0x0486('0x5'));var fs=require('fs');var path=require(_0x0486('0x6'));var rimraf=require(_0x0486('0x7'));var config=require('../../config/environment');var attributes=require(_0x0486('0x8'));module['exports']=function(_0x2f0001,_0x2df3db){return _0x2f0001[_0x0486('0x9')](_0x0486('0xa'),attributes,{'tableName':_0x0486('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x23e9=['report_jscripty_answers','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./jscriptyAnswerReport.attributes','exports','define'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0x23e9,0x156));var _0x923e=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x23e9[_0x4b055c];return _0x4b62bb;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x923e('0x0'))(_0x923e('0x1'));var moment=require(_0x923e('0x2'));var BPromise=require(_0x923e('0x3'));var rp=require(_0x923e('0x4'));var fs=require('fs');var path=require(_0x923e('0x5'));var rimraf=require(_0x923e('0x6'));var config=require('../../config/environment');var attributes=require(_0x923e('0x7'));module[_0x923e('0x8')]=function(_0x27cdbb,_0x4d873a){return _0x27cdbb[_0x923e('0x9')]('JscriptyAnswerReport',attributes,{'tableName':_0x923e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5fa03db..6ce2a67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5160=['rpc','../../config/environment','http','request','then','info','JscriptyAnswerReport,\x20%s,\x20%s','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x3f70af,_0x19a0a0){var _0xad0960=function(_0x3a56b0){while(--_0x3a56b0){_0x3f70af['push'](_0x3f70af['shift']());}};_0xad0960(++_0x19a0a0);}(_0x5160,0xb0));var _0x0516=function(_0x16e4f0,_0xb4df3e){_0x16e4f0=_0x16e4f0-0x0;var _0x1aefaf=_0x5160[_0x16e4f0];return _0x1aefaf;};'use strict';var _=require(_0x0516('0x0'));var util=require('util');var moment=require(_0x0516('0x1'));var BPromise=require(_0x0516('0x2'));var rs=require(_0x0516('0x3'));var fs=require('fs');var Redis=require(_0x0516('0x4'));var db=require(_0x0516('0x5'))['db'];var utils=require(_0x0516('0x6'));var logger=require(_0x0516('0x7'))(_0x0516('0x8'));var config=require(_0x0516('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x0516('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xf36661,_0x149c13,_0x3d5190){return new BPromise(function(_0xae6dca,_0x1362c4){return client[_0x0516('0xb')](_0xf36661,_0x3d5190)[_0x0516('0xc')](function(_0x4c7c30){logger[_0x0516('0xd')](_0x0516('0xe'),_0x149c13,'request\x20sent');logger[_0x0516('0xf')](_0x0516('0x10'),_0x149c13,_0x0516('0x11'),JSON[_0x0516('0x12')](_0x4c7c30));if(_0x4c7c30['error']){if(_0x4c7c30[_0x0516('0x13')][_0x0516('0x14')]===0x1f4){logger['error'](_0x0516('0xe'),_0x149c13,_0x4c7c30['error'][_0x0516('0x15')]);return _0x1362c4(_0x4c7c30[_0x0516('0x13')][_0x0516('0x15')]);}logger['error']('JscriptyAnswerReport,\x20%s,\x20%s',_0x149c13,_0x4c7c30['error'][_0x0516('0x15')]);return _0xae6dca(_0x4c7c30['error']['message']);}else{logger[_0x0516('0xd')](_0x0516('0xe'),_0x149c13,_0x0516('0x11'));_0xae6dca(_0x4c7c30['result'][_0x0516('0x15')]);}})[_0x0516('0x16')](function(_0x327a7e){logger['error'](_0x0516('0xe'),_0x149c13,_0x327a7e);_0x1362c4(_0x327a7e);});});}
\ No newline at end of file
+var _0x18a0=['result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message'];(function(_0x20589d,_0x55d5bf){var _0x422de9=function(_0x44cbbb){while(--_0x44cbbb){_0x20589d['push'](_0x20589d['shift']());}};_0x422de9(++_0x55d5bf);}(_0x18a0,0x1a6));var _0x018a=function(_0x1e7e12,_0x586d42){_0x1e7e12=_0x1e7e12-0x0;var _0x32781c=_0x18a0[_0x1e7e12];return _0x32781c;};'use strict';var _=require('lodash');var util=require(_0x018a('0x0'));var moment=require('moment');var BPromise=require(_0x018a('0x1'));var rs=require(_0x018a('0x2'));var fs=require('fs');var Redis=require(_0x018a('0x3'));var db=require(_0x018a('0x4'))['db'];var utils=require(_0x018a('0x5'));var logger=require(_0x018a('0x6'))(_0x018a('0x7'));var config=require('../../config/environment');var jayson=require(_0x018a('0x8'));var client=jayson['client'][_0x018a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2004e0,_0x1a5663,_0x3b0569){return new BPromise(function(_0x125f9b,_0x10d899){return client[_0x018a('0xa')](_0x2004e0,_0x3b0569)[_0x018a('0xb')](function(_0x5534c2){logger[_0x018a('0xc')](_0x018a('0xd'),_0x1a5663,_0x018a('0xe'));logger[_0x018a('0xf')]('JscriptyAnswerReport,\x20%s,\x20%s,\x20%s',_0x1a5663,_0x018a('0xe'),JSON['stringify'](_0x5534c2));if(_0x5534c2[_0x018a('0x10')]){if(_0x5534c2[_0x018a('0x10')][_0x018a('0x11')]===0x1f4){logger[_0x018a('0x10')](_0x018a('0xd'),_0x1a5663,_0x5534c2[_0x018a('0x10')][_0x018a('0x12')]);return _0x10d899(_0x5534c2[_0x018a('0x10')]['message']);}logger['error'](_0x018a('0xd'),_0x1a5663,_0x5534c2[_0x018a('0x10')][_0x018a('0x12')]);return _0x125f9b(_0x5534c2[_0x018a('0x10')][_0x018a('0x12')]);}else{logger[_0x018a('0xc')](_0x018a('0xd'),_0x1a5663,_0x018a('0xe'));_0x125f9b(_0x5534c2[_0x018a('0x13')]['message']);}})[_0x018a('0x14')](function(_0x2b0d25){logger[_0x018a('0x10')](_0x018a('0xd'),_0x1a5663,_0x2b0d25);_0x10d899(_0x2b0d25);});});}
\ No newline at end of file
index 32a3c76..0f687e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe88a=['put','update','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./jscriptyProject.controller','get','isAuthenticated','index','/:id','show','/:id/answers','getAnswers','/:id/summary','getSummary','post','create','/:id/clone'];(function(_0x22dc22,_0x1f9d4b){var _0x556925=function(_0x580593){while(--_0x580593){_0x22dc22['push'](_0x22dc22['shift']());}};_0x556925(++_0x1f9d4b);}(_0xe88a,0x1c5));var _0xae88=function(_0x41bdc0,_0x4512d1){_0x41bdc0=_0x41bdc0-0x0;var _0x22993c=_0xe88a[_0x41bdc0];return _0x22993c;};'use strict';var multer=require(_0xae88('0x0'));var util=require(_0xae88('0x1'));var path=require(_0xae88('0x2'));var timeout=require(_0xae88('0x3'));var express=require(_0xae88('0x4'));var router=express[_0xae88('0x5')]();var fs_extra=require(_0xae88('0x6'));var auth=require(_0xae88('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xae88('0x8'));var controller=require(_0xae88('0x9'));router[_0xae88('0xa')]('/',auth[_0xae88('0xb')](),controller[_0xae88('0xc')]);router[_0xae88('0xa')](_0xae88('0xd'),auth['isAuthenticated'](),controller[_0xae88('0xe')]);router[_0xae88('0xa')]('/:id/sessions',auth[_0xae88('0xb')](),controller['getSessions']);router[_0xae88('0xa')](_0xae88('0xf'),auth[_0xae88('0xb')](),controller[_0xae88('0x10')]);router['get'](_0xae88('0x11'),auth[_0xae88('0xb')](),timeout('30s'),controller[_0xae88('0x12')]);router[_0xae88('0x13')]('/',auth[_0xae88('0xb')](),controller[_0xae88('0x14')]);router['post'](_0xae88('0x15'),auth[_0xae88('0xb')](),controller['clone']);router[_0xae88('0x16')](_0xae88('0xd'),auth[_0xae88('0xb')](),controller[_0xae88('0x17')]);router[_0xae88('0x18')](_0xae88('0xd'),auth[_0xae88('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x9bc6=['30s','getSummary','post','create','/:id/clone','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../config/environment','./jscriptyProject.controller','get','isAuthenticated','/:id','/:id/sessions','getSessions','/:id/answers','getAnswers'];(function(_0x2bea85,_0x5cd34c){var _0x24d728=function(_0x251c00){while(--_0x251c00){_0x2bea85['push'](_0x2bea85['shift']());}};_0x24d728(++_0x5cd34c);}(_0x9bc6,0x81));var _0x69bc=function(_0x4f14bd,_0x28b9db){_0x4f14bd=_0x4f14bd-0x0;var _0x515b8b=_0x9bc6[_0x4f14bd];return _0x515b8b;};'use strict';var multer=require(_0x69bc('0x0'));var util=require(_0x69bc('0x1'));var path=require(_0x69bc('0x2'));var timeout=require(_0x69bc('0x3'));var express=require(_0x69bc('0x4'));var router=express[_0x69bc('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x69bc('0x6'));var controller=require(_0x69bc('0x7'));router[_0x69bc('0x8')]('/',auth[_0x69bc('0x9')](),controller['index']);router['get'](_0x69bc('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x69bc('0x8')](_0x69bc('0xb'),auth['isAuthenticated'](),controller[_0x69bc('0xc')]);router[_0x69bc('0x8')](_0x69bc('0xd'),auth[_0x69bc('0x9')](),controller[_0x69bc('0xe')]);router['get']('/:id/summary',auth['isAuthenticated'](),timeout(_0x69bc('0xf')),controller[_0x69bc('0x10')]);router[_0x69bc('0x11')]('/',auth[_0x69bc('0x9')](),controller[_0x69bc('0x12')]);router[_0x69bc('0x11')](_0x69bc('0x13'),auth[_0x69bc('0x9')](),controller['clone']);router[_0x69bc('0x14')](_0x69bc('0xa'),auth[_0x69bc('0x9')](),controller['update']);router[_0x69bc('0x15')](_0x69bc('0xa'),auth[_0x69bc('0x9')](),controller[_0x69bc('0x16')]);module[_0x69bc('0x17')]=router;
\ No newline at end of file
index ad4d934..d16aee6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefce=['BOOLEAN','sequelize','lodash','util','exports','STRING','TEXT','long','isObjectLike','setDataValue','formData','stringify','isString','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','name','description'];(function(_0x5471ec,_0x1ce81a){var _0x121d4c=function(_0xefb655){while(--_0xefb655){_0x5471ec['push'](_0x5471ec['shift']());}};_0x121d4c(++_0x1ce81a);}(_0xefce,0x9a));var _0xeefc=function(_0x4ac31f,_0x3bf843){_0x4ac31f=_0x4ac31f-0x0;var _0x1f1926=_0xefce[_0x4ac31f];return _0x1f1926;};'use strict';var Sequelize=require(_0xeefc('0x0'));var _=require(_0xeefc('0x1'));var util=require(_0xeefc('0x2'));module[_0xeefc('0x3')]={'name':{'type':Sequelize['STRING'],'unique':'name'},'description':{'type':Sequelize[_0xeefc('0x4')]},'formData':{'type':Sequelize[_0xeefc('0x5')](_0xeefc('0x6')),'set':function(_0x1e526e){if(_[_0xeefc('0x7')](_0x1e526e)){this[_0xeefc('0x8')](_0xeefc('0x9'),JSON[_0xeefc('0xa')](_0x1e526e));}else if(_[_0xeefc('0xb')](_0x1e526e)){this[_0xeefc('0x8')](_0xeefc('0x9'),_0x1e526e);}else{this[_0xeefc('0x8')](_0xeefc('0x9'),util['format'](_0xeefc('0xc'),this[_0xeefc('0xd')](_0xeefc('0xe'))||'',this[_0xeefc('0xd')](_0xeefc('0xf'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0xeefc('0x10')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0xeefc('0x10')],'defaultValue':![]}};
\ No newline at end of file
+var _0x7975=['sequelize','lodash','STRING','name','TEXT','long','isObjectLike','formData','stringify','isString','setDataValue','format','getDataValue','description','BOOLEAN'];(function(_0x41bc38,_0x14f669){var _0x1085a8=function(_0x1095ca){while(--_0x1095ca){_0x41bc38['push'](_0x41bc38['shift']());}};_0x1085a8(++_0x14f669);}(_0x7975,0x78));var _0x5797=function(_0xf73886,_0xc13608){_0xf73886=_0xf73886-0x0;var _0x1bbe08=_0x7975[_0xf73886];return _0x1bbe08;};'use strict';var Sequelize=require(_0x5797('0x0'));var _=require(_0x5797('0x1'));var util=require('util');module['exports']={'name':{'type':Sequelize[_0x5797('0x2')],'unique':_0x5797('0x3')},'description':{'type':Sequelize[_0x5797('0x2')]},'formData':{'type':Sequelize[_0x5797('0x4')](_0x5797('0x5')),'set':function(_0x2f7aa6){if(_[_0x5797('0x6')](_0x2f7aa6)){this['setDataValue'](_0x5797('0x7'),JSON[_0x5797('0x8')](_0x2f7aa6));}else if(_[_0x5797('0x9')](_0x2f7aa6)){this[_0x5797('0xa')]('formData',_0x2f7aa6);}else{this[_0x5797('0xa')](_0x5797('0x7'),util[_0x5797('0xb')]('{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}',this[_0x5797('0xc')]('name')||'',this[_0x5797('0xc')](_0x5797('0xd'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x5797('0xe')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x5797('0xe')],'defaultValue':![]}};
\ No newline at end of file
index 28679d6..226e73f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94c9=['apply','then','destroy','get','Projects','UserProfileResource','end','sendStatus','error','name','send','index','map','JscriptyProject','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','rawAttributes','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','clone','omit','createdAt','updatedAt','UserProfileSection','update','getSessions','findOne','JscriptySessionReport','order','pick','ProjectId','JscriptyAnswerReport','nolimit','number','fromCharCode','toString','indexOf','replace','getSummary','starttime','parse','startTime','JscriptyQuestionReport','-createdAt','questionId','question','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','push','now','writeFileSync','/tmp/Jscripty_Project_%d_Summary_%s.csv','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','download','request-promise','bluebird','mustache','util','path','sox','to-csv','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','offset','limit','undefined','count','set'];(function(_0x255177,_0x5f3e5c){var _0x37e9f9=function(_0x3d9ac4){while(--_0x3d9ac4){_0x255177['push'](_0x255177['shift']());}};_0x37e9f9(++_0x5f3e5c);}(_0x94c9,0x1b5));var _0x994c=function(_0x1c44f5,_0x1de2bd){_0x1c44f5=_0x1c44f5-0x0;var _0x527ce0=_0x94c9[_0x1c44f5];return _0x527ce0;};'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(_0x994c('0x0'));var moment=require('moment');var BPromise=require(_0x994c('0x1'));var Mustache=require(_0x994c('0x2'));var util=require(_0x994c('0x3'));var path=require(_0x994c('0x4'));var sox=require(_0x994c('0x5'));var csv=require(_0x994c('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x994c('0x7'));var squel=require(_0x994c('0x8'));var crypto=require('crypto');var jsforce=require(_0x994c('0x9'));var deskjs=require(_0x994c('0xa'));var toCsv=require('to-csv');var querystring=require(_0x994c('0xb'));var Papa=require(_0x994c('0xc'));var Redis=require(_0x994c('0xd'));var authService=require(_0x994c('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x994c('0xf'));var hardwareService=require(_0x994c('0x10'));var logger=require(_0x994c('0x11'))('api');var utils=require('../../config/utils');var config=require(_0x994c('0x12'));var licenseUtil=require(_0x994c('0x13'));var db=require(_0x994c('0x14'))['db'];function respondWithStatusCode(_0x2ae113,_0x31636d){_0x31636d=_0x31636d||0xcc;return function(_0x257fb1){if(_0x257fb1){return _0x2ae113['sendStatus'](_0x31636d);}return _0x2ae113[_0x994c('0x15')](_0x31636d)['end']();};}function respondWithResult(_0x3d7db1,_0x39fa1d){_0x39fa1d=_0x39fa1d||0xc8;return function(_0x127091){if(_0x127091){return _0x3d7db1['status'](_0x39fa1d)['json'](_0x127091);}};}function respondWithFilteredResult(_0x2ff397,_0x780bcd){return function(_0x25fbef){if(_0x25fbef){var _0x44db3e=typeof _0x780bcd[_0x994c('0x16')]==='undefined'&&typeof _0x780bcd[_0x994c('0x17')]===_0x994c('0x18');var _0x22d40a=_0x25fbef[_0x994c('0x19')];var _0x2264a6=_0x44db3e?0x0:_0x780bcd[_0x994c('0x16')];var _0x4a9f35=_0x44db3e?_0x25fbef[_0x994c('0x19')]:_0x780bcd[_0x994c('0x16')]+_0x780bcd[_0x994c('0x17')];var _0x4f2d41;if(_0x4a9f35>=_0x22d40a){_0x4a9f35=_0x22d40a;_0x4f2d41=0xc8;}else{_0x4f2d41=0xce;}_0x2ff397[_0x994c('0x15')](_0x4f2d41);return _0x2ff397[_0x994c('0x1a')]('Content-Range',_0x2264a6+'-'+_0x4a9f35+'/'+_0x22d40a)['json'](_0x25fbef);}return null;};}function patchUpdates(_0x508886){return function(_0x334a23){try{jsonpatch[_0x994c('0x1b')](_0x334a23,_0x508886,!![]);}catch(_0x3de515){return BPromise['reject'](_0x3de515);}return _0x334a23['save']();};}function saveUpdates(_0x21cf7c,_0x2403d2){return function(_0x34e5bf){if(_0x34e5bf){return _0x34e5bf['update'](_0x21cf7c)[_0x994c('0x1c')](function(_0x320d26){return _0x320d26;});}return null;};}function removeEntity(_0x538a70,_0x52261c){return function(_0x3118fa){if(_0x3118fa){return _0x3118fa[_0x994c('0x1d')]()[_0x994c('0x1c')](function(){var _0x4d341f=_0x3118fa[_0x994c('0x1e')]({'plain':!![]});var _0x5974c5=_0x994c('0x1f');return db[_0x994c('0x20')]['destroy']({'where':{'type':_0x5974c5,'resourceId':_0x4d341f['id']}})[_0x994c('0x1c')](function(){return _0x3118fa;});})[_0x994c('0x1c')](function(){_0x538a70[_0x994c('0x15')](0xcc)[_0x994c('0x21')]();});}};}function handleEntityNotFound(_0x8ff02e,_0x33d8e9){return function(_0x1984f6){if(!_0x1984f6){_0x8ff02e[_0x994c('0x22')](0x194);}return _0x1984f6;};}function handleError(_0x3d52f4,_0x3931e8){_0x3931e8=_0x3931e8||0x1f4;return function(_0x10de08){logger[_0x994c('0x23')](_0x10de08['stack']);if(_0x10de08[_0x994c('0x24')]){delete _0x10de08[_0x994c('0x24')];}_0x3d52f4[_0x994c('0x15')](_0x3931e8)[_0x994c('0x25')](_0x10de08);};}exports[_0x994c('0x26')]=function(_0x327b94,_0x822fd4){var _0x9bb112={},_0x26a27e={},_0xdfab08={'count':0x0,'rows':[]};var _0x238989=_[_0x994c('0x27')](db[_0x994c('0x28')]['rawAttributes'],function(_0x4d3a50){return{'name':_0x4d3a50[_0x994c('0x29')],'type':_0x4d3a50[_0x994c('0x2a')][_0x994c('0x2b')]};});_0x26a27e[_0x994c('0x2c')]=_['map'](_0x238989,_0x994c('0x24'));_0x26a27e[_0x994c('0x2d')]=_[_0x994c('0x2e')](_0x327b94[_0x994c('0x2d')]);_0x26a27e[_0x994c('0x2f')]=_[_0x994c('0x30')](_0x26a27e['model'],_0x26a27e[_0x994c('0x2d')]);_0x9bb112[_0x994c('0x31')]=_[_0x994c('0x30')](_0x26a27e[_0x994c('0x2c')],qs[_0x994c('0x32')](_0x327b94[_0x994c('0x2d')][_0x994c('0x32')]));_0x9bb112[_0x994c('0x31')]=_0x9bb112[_0x994c('0x31')][_0x994c('0x33')]?_0x9bb112[_0x994c('0x31')]:_0x26a27e['model'];if(!_0x327b94[_0x994c('0x2d')][_0x994c('0x34')]('nolimit')){_0x9bb112[_0x994c('0x17')]=qs[_0x994c('0x17')](_0x327b94[_0x994c('0x2d')]['limit']);_0x9bb112[_0x994c('0x16')]=qs[_0x994c('0x16')](_0x327b94[_0x994c('0x2d')][_0x994c('0x16')]);}_0x9bb112['order']=qs[_0x994c('0x35')](_0x327b94[_0x994c('0x2d')][_0x994c('0x35')]);_0x9bb112[_0x994c('0x36')]=qs[_0x994c('0x2f')](_['pick'](_0x327b94[_0x994c('0x2d')],_0x26a27e[_0x994c('0x2f')]),_0x238989);if(_0x327b94[_0x994c('0x2d')][_0x994c('0x37')]){_0x9bb112[_0x994c('0x36')]=_[_0x994c('0x38')](_0x9bb112[_0x994c('0x36')],{'$or':_['map'](_0x238989,function(_0x4b9d6d){if(_0x4b9d6d[_0x994c('0x2a')]!==_0x994c('0x39')){var _0x42f383={};_0x42f383[_0x4b9d6d[_0x994c('0x24')]]={'$like':'%'+_0x327b94[_0x994c('0x2d')][_0x994c('0x37')]+'%'};return _0x42f383;}})});}_0x9bb112=_[_0x994c('0x38')]({},_0x9bb112,_0x327b94[_0x994c('0x3a')]);var _0x10a4d6={'where':_0x9bb112['where']};return db[_0x994c('0x28')][_0x994c('0x19')](_0x10a4d6)[_0x994c('0x1c')](function(_0x51a291){_0xdfab08[_0x994c('0x19')]=_0x51a291;if(_0x327b94['query'][_0x994c('0x3b')]){_0x9bb112[_0x994c('0x3c')]=[{'all':!![]}];}return db[_0x994c('0x28')][_0x994c('0x3d')](_0x9bb112);})[_0x994c('0x1c')](function(_0x347b2d){_0xdfab08[_0x994c('0x3e')]=_0x347b2d;return _0xdfab08;})[_0x994c('0x1c')](respondWithFilteredResult(_0x822fd4,_0x9bb112))['catch'](handleError(_0x822fd4,null));};exports[_0x994c('0x3f')]=function(_0xc106fe,_0x3b26ec){var _0x5adbc6={'raw':![],'where':{'id':_0xc106fe[_0x994c('0x40')]['id']}},_0xa6f632={};_0xa6f632['model']=_[_0x994c('0x2e')](db['JscriptyProject'][_0x994c('0x41')]);_0xa6f632[_0x994c('0x2d')]=_['keys'](_0xc106fe[_0x994c('0x2d')]);_0xa6f632[_0x994c('0x2f')]=_[_0x994c('0x30')](_0xa6f632[_0x994c('0x2c')],_0xa6f632['query']);_0x5adbc6[_0x994c('0x31')]=_[_0x994c('0x30')](_0xa6f632[_0x994c('0x2c')],qs[_0x994c('0x32')](_0xc106fe[_0x994c('0x2d')][_0x994c('0x32')]));_0x5adbc6[_0x994c('0x31')]=_0x5adbc6['attributes'][_0x994c('0x33')]?_0x5adbc6['attributes']:_0xa6f632[_0x994c('0x2c')];if(_0xc106fe[_0x994c('0x2d')][_0x994c('0x3b')]){_0x5adbc6[_0x994c('0x3c')]=[{'all':!![]}];}_0x5adbc6=_['merge']({},_0x5adbc6,_0xc106fe[_0x994c('0x3a')]);return db[_0x994c('0x28')][_0x994c('0x42')](_0x5adbc6)[_0x994c('0x1c')](handleEntityNotFound(_0x3b26ec,null))['then'](respondWithResult(_0x3b26ec,null))[_0x994c('0x43')](handleError(_0x3b26ec,null));};exports[_0x994c('0x44')]=function(_0xc1d383,_0x18667e){return db[_0x994c('0x28')][_0x994c('0x44')](_0xc1d383[_0x994c('0x45')],{})[_0x994c('0x1c')](function(_0x54f01b){var _0x29ca1c=_0xc1d383[_0x994c('0x46')]['get']({'plain':!![]});if(!_0x29ca1c)throw new Error(_0x994c('0x47'));if(_0x29ca1c[_0x994c('0x48')]===_0x994c('0x46')){var _0xc25e99=_0x54f01b[_0x994c('0x1e')]({'plain':!![]});var _0x11a417=_0x994c('0x1f');return db['UserProfileSection'][_0x994c('0x42')]({'where':{'name':_0x11a417,'userProfileId':_0x29ca1c[_0x994c('0x49')]},'raw':!![]})[_0x994c('0x1c')](function(_0x5e02c5){if(_0x5e02c5&&_0x5e02c5[_0x994c('0x4a')]===0x0){return db[_0x994c('0x20')][_0x994c('0x44')]({'name':_0xc25e99[_0x994c('0x24')],'resourceId':_0xc25e99['id'],'type':_0x5e02c5[_0x994c('0x24')],'sectionId':_0x5e02c5['id']},{})['then'](function(){return _0x54f01b;});}else{return _0x54f01b;}})[_0x994c('0x43')](function(_0x5766b2){logger[_0x994c('0x23')](_0x994c('0x4b'),_0x5766b2);throw _0x5766b2;});}return _0x54f01b;})[_0x994c('0x1c')](respondWithResult(_0x18667e,0xc9))['catch'](handleError(_0x18667e,null));};exports[_0x994c('0x4c')]=function(_0x560c37,_0x418b3f){var _0x159b26={'where':{'id':_0x560c37[_0x994c('0x40')]['id']}},_0x3e2e01={};_0x3e2e01[_0x994c('0x2c')]=_[_0x994c('0x2e')](db[_0x994c('0x28')]['rawAttributes']);_0x159b26[_0x994c('0x31')]=_[_0x994c('0x30')](_0x3e2e01['model'],qs[_0x994c('0x32')](_0x560c37[_0x994c('0x2d')]['fields']));_0x159b26[_0x994c('0x31')]=_0x159b26[_0x994c('0x31')]['length']?_0x159b26[_0x994c('0x31')]:_0x3e2e01[_0x994c('0x2c')];if(_0x560c37[_0x994c('0x2d')][_0x994c('0x3b')]){_0x159b26['include']=[{'all':!![]}];}_0x159b26=_['merge']({},_0x159b26,_0x560c37[_0x994c('0x3a')]);return db[_0x994c('0x28')][_0x994c('0x42')](_0x159b26)[_0x994c('0x1c')](handleEntityNotFound(_0x418b3f,null))[_0x994c('0x1c')](function(_0x4294c7){if(_0x4294c7){var _0x4958bb=_0x4294c7['get']({'plain':!![]});_0x4958bb=qs[_0x994c('0x4d')](_0x4958bb,['id','createdAt','updatedAt']);_0x560c37['body']=_[_0x994c('0x4d')](_0x560c37['body'],['id',_0x994c('0x4e'),_0x994c('0x4f')]);return db[_0x994c('0x28')][_0x994c('0x44')](_[_0x994c('0x38')](_0x4958bb,_0x560c37['body']),{'include':_0x560c37[_0x994c('0x2d')][_0x994c('0x3b')]?[{'all':!![]}]:undefined})[_0x994c('0x1c')](function(_0x391756){var _0x419c9d=_0x560c37[_0x994c('0x46')][_0x994c('0x1e')]({'plain':!![]});if(!_0x419c9d)throw new Error(_0x994c('0x47'));if(_0x419c9d[_0x994c('0x48')]===_0x994c('0x46')){var _0x4753c7=_0x391756[_0x994c('0x1e')]({'plain':!![]});var _0x264cd6=_0x994c('0x1f');return db[_0x994c('0x50')]['find']({'where':{'name':_0x264cd6,'userProfileId':_0x419c9d['userProfileId']},'raw':!![]})[_0x994c('0x1c')](function(_0x521c74){if(_0x521c74&&_0x521c74['autoAssociation']===0x0){return db[_0x994c('0x20')]['create']({'name':_0x4753c7[_0x994c('0x24')],'resourceId':_0x4753c7['id'],'type':_0x521c74[_0x994c('0x24')],'sectionId':_0x521c74['id']},{})['then'](function(){return _0x391756;});}else{return _0x391756;}})[_0x994c('0x43')](function(_0x833477){logger[_0x994c('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x833477);throw _0x833477;});}return _0x391756;});}})[_0x994c('0x1c')](respondWithResult(_0x418b3f,0xc9))[_0x994c('0x43')](handleError(_0x418b3f,null));};exports[_0x994c('0x51')]=function(_0x224e9c,_0x6fc99f){if(_0x224e9c[_0x994c('0x45')]['id']){delete _0x224e9c[_0x994c('0x45')]['id'];}return db['JscriptyProject']['find']({'where':{'id':_0x224e9c['params']['id']}})[_0x994c('0x1c')](handleEntityNotFound(_0x6fc99f,null))[_0x994c('0x1c')](saveUpdates(_0x224e9c[_0x994c('0x45')],null))['then'](respondWithResult(_0x6fc99f,null))[_0x994c('0x43')](handleError(_0x6fc99f,null));};exports[_0x994c('0x1d')]=function(_0x4da13e,_0x48b4d9){return db[_0x994c('0x28')][_0x994c('0x42')]({'where':{'id':_0x4da13e[_0x994c('0x40')]['id']}})[_0x994c('0x1c')](handleEntityNotFound(_0x48b4d9,null))[_0x994c('0x1c')](removeEntity(_0x48b4d9,null))[_0x994c('0x43')](handleError(_0x48b4d9,null));};exports[_0x994c('0x52')]=function(_0x3a420,_0x31e6d5,_0x54c6f3){var _0x3c33a8={'raw':!![],'where':{}};var _0x45274a={};var _0x24e60a={'count':0x0,'rows':[]};return db[_0x994c('0x28')][_0x994c('0x53')]({'where':{'id':_0x3a420[_0x994c('0x40')]['id']}})[_0x994c('0x1c')](handleEntityNotFound(_0x31e6d5,null))[_0x994c('0x1c')](function(_0x379218){if(_0x379218){_0x45274a[_0x994c('0x2c')]=_[_0x994c('0x2e')](db[_0x994c('0x54')][_0x994c('0x41')]);_0x45274a[_0x994c('0x2d')]=_[_0x994c('0x2e')](_0x3a420[_0x994c('0x2d')]);_0x45274a[_0x994c('0x2f')]=_[_0x994c('0x30')](_0x45274a[_0x994c('0x2c')],_0x45274a[_0x994c('0x2d')]);_0x3c33a8[_0x994c('0x31')]=_[_0x994c('0x30')](_0x45274a[_0x994c('0x2c')],qs[_0x994c('0x32')](_0x3a420[_0x994c('0x2d')][_0x994c('0x32')]));_0x3c33a8[_0x994c('0x31')]=_0x3c33a8[_0x994c('0x31')][_0x994c('0x33')]?_0x3c33a8[_0x994c('0x31')]:_0x45274a[_0x994c('0x2c')];if(!_0x3a420[_0x994c('0x2d')][_0x994c('0x34')]('nolimit')){_0x3c33a8[_0x994c('0x17')]=qs[_0x994c('0x17')](_0x3a420[_0x994c('0x2d')][_0x994c('0x17')]);_0x3c33a8[_0x994c('0x16')]=qs[_0x994c('0x16')](_0x3a420[_0x994c('0x2d')][_0x994c('0x16')]);}_0x3c33a8[_0x994c('0x55')]=qs['sort'](_0x3a420[_0x994c('0x2d')][_0x994c('0x35')]);_0x3c33a8['where']=qs[_0x994c('0x2f')](_[_0x994c('0x56')](_0x3a420[_0x994c('0x2d')],_0x45274a[_0x994c('0x2f')]));_0x3c33a8[_0x994c('0x36')][_0x994c('0x57')]=_0x379218['id'];if(_0x3a420[_0x994c('0x2d')][_0x994c('0x37')]){_0x3c33a8['where']=_['merge'](_0x3c33a8[_0x994c('0x36')],{'$or':_[_0x994c('0x27')](_0x3c33a8[_0x994c('0x31')],function(_0x1a7da5){var _0x2d584c={};_0x2d584c[_0x1a7da5]={'$like':'%'+_0x3a420[_0x994c('0x2d')][_0x994c('0x37')]+'%'};return _0x2d584c;})});}_0x3c33a8=_[_0x994c('0x38')]({},_0x3c33a8,_0x3a420[_0x994c('0x3a')]);return db[_0x994c('0x54')]['count']({'where':_0x3c33a8[_0x994c('0x36')]})[_0x994c('0x1c')](function(_0x7871b){_0x24e60a[_0x994c('0x19')]=_0x7871b;if(_0x3a420['query'][_0x994c('0x3b')]){_0x3c33a8['include']=[{'all':!![]}];}return db[_0x994c('0x54')][_0x994c('0x3d')](_0x3c33a8);})[_0x994c('0x1c')](function(_0x1bb164){_0x24e60a[_0x994c('0x3e')]=_0x1bb164;return _0x24e60a;});}})['then'](respondWithFilteredResult(_0x31e6d5,_0x3c33a8))[_0x994c('0x43')](handleError(_0x31e6d5,null));};exports['getAnswers']=function(_0x20eedb,_0x400ed3,_0x25e389){var _0x18be97={'raw':!![],'where':{}};var _0x2700e9={};var _0x131a5b={'count':0x0,'rows':[]};return db[_0x994c('0x28')][_0x994c('0x53')]({'where':{'id':_0x20eedb[_0x994c('0x40')]['id']}})['then'](handleEntityNotFound(_0x400ed3,null))['then'](function(_0x26a15d){if(_0x26a15d){_0x2700e9[_0x994c('0x2c')]=_[_0x994c('0x2e')](db[_0x994c('0x58')]['rawAttributes']);_0x2700e9[_0x994c('0x2d')]=_[_0x994c('0x2e')](_0x20eedb['query']);_0x2700e9[_0x994c('0x2f')]=_[_0x994c('0x30')](_0x2700e9['model'],_0x2700e9['query']);_0x18be97[_0x994c('0x31')]=_[_0x994c('0x30')](_0x2700e9[_0x994c('0x2c')],qs[_0x994c('0x32')](_0x20eedb[_0x994c('0x2d')][_0x994c('0x32')]));_0x18be97['attributes']=_0x18be97[_0x994c('0x31')][_0x994c('0x33')]?_0x18be97[_0x994c('0x31')]:_0x2700e9['model'];if(!_0x20eedb[_0x994c('0x2d')]['hasOwnProperty'](_0x994c('0x59'))){_0x18be97[_0x994c('0x17')]=qs['limit'](_0x20eedb[_0x994c('0x2d')]['limit']);_0x18be97[_0x994c('0x16')]=qs['offset'](_0x20eedb['query'][_0x994c('0x16')]);}_0x18be97[_0x994c('0x55')]=qs[_0x994c('0x35')](_0x20eedb[_0x994c('0x2d')][_0x994c('0x35')]);_0x18be97[_0x994c('0x36')]=qs[_0x994c('0x2f')](_[_0x994c('0x56')](_0x20eedb[_0x994c('0x2d')],_0x2700e9['filters']));_0x18be97[_0x994c('0x36')]['ProjectId']=_0x26a15d['id'];if(_0x20eedb[_0x994c('0x2d')][_0x994c('0x37')]){_0x18be97[_0x994c('0x36')]=_[_0x994c('0x38')](_0x18be97['where'],{'$or':_[_0x994c('0x27')](_0x18be97[_0x994c('0x31')],function(_0x52fee5){var _0x151c16={};_0x151c16[_0x52fee5]={'$like':'%'+_0x20eedb[_0x994c('0x2d')][_0x994c('0x37')]+'%'};return _0x151c16;})});}_0x18be97=_[_0x994c('0x38')]({},_0x18be97,_0x20eedb['options']);return db[_0x994c('0x58')][_0x994c('0x19')]({'where':_0x18be97[_0x994c('0x36')]})[_0x994c('0x1c')](function(_0x284eb9){_0x131a5b['count']=_0x284eb9;if(_0x20eedb[_0x994c('0x2d')][_0x994c('0x3b')]){_0x18be97[_0x994c('0x3c')]=[{'all':!![]}];}return db[_0x994c('0x58')][_0x994c('0x3d')](_0x18be97);})[_0x994c('0x1c')](function(_0x600dea){_0x131a5b[_0x994c('0x3e')]=_0x600dea;return _0x131a5b;});}})[_0x994c('0x1c')](respondWithFilteredResult(_0x400ed3,_0x18be97))[_0x994c('0x43')](handleError(_0x400ed3,null));};function char(_0x584804){return _0x994c('0x5a')===typeof _0x584804?String[_0x994c('0x5b')][_0x994c('0x1b')](null,arguments):_0x584804;}function needsEncapsulation(_0x245790){return!!_0x245790&&(_0x245790[_0x994c('0x5c')]()['indexOf'](char(0xd))>=0x0||_0x245790[_0x994c('0x5c')]()[_0x994c('0x5d')](char(0xa))>=0x0||_0x245790[_0x994c('0x5c')]()[_0x994c('0x5d')](char(0x2c))>=0x0||_0x245790[_0x994c('0x5c')]()['indexOf'](char(0x22))>=0x0);}function encapsulate(_0x4e06ea){var _0x2cf69f=char(0x22),_0xe19ed5='\x5c'+char(0x22),_0x3d35cf=_0x4e06ea['toString']()[_0x994c('0x5e')](new RegExp(_0x2cf69f,'g'),_0xe19ed5);return _0x2cf69f+_0x3d35cf+_0x2cf69f;}exports[_0x994c('0x5f')]=function(_0x1a23cf,_0x3b4f6e,_0x57e331){var _0x4a7db1,_0x4d1008;var _0x1ee1e5={'where':{'ProjectId':_0x1a23cf['params']['id']}};if(_0x1a23cf[_0x994c('0x2d')]['startTime']){_0x1ee1e5[_0x994c('0x36')][_0x994c('0x60')]=JSON[_0x994c('0x61')](_0x1a23cf[_0x994c('0x2d')][_0x994c('0x62')]);}return db['JscriptySessionReport'][_0x994c('0x3d')](_0x1ee1e5)[_0x994c('0x1c')](handleEntityNotFound(_0x3b4f6e,null))[_0x994c('0x1c')](function(_0x50307d){if(_0x50307d){_0x4a7db1=_0x50307d;return db[_0x994c('0x63')]['findAll']({'where':{'SessionId':{'$in':_[_0x994c('0x27')](_0x4a7db1,'id')},'ProjectId':_0x1a23cf[_0x994c('0x40')]['id']},'order':_0x994c('0x64')});}})[_0x994c('0x1c')](handleEntityNotFound(_0x3b4f6e,null))['then'](function(_0x20002c){if(_0x20002c){_0x4d1008=_0x20002c;var _0x16ecfb={};for(var _0x501783=0x0,_0x5ab799=_0x4d1008[_0x994c('0x33')];_0x501783<_0x5ab799;_0x501783++){if(!_0x16ecfb[_0x994c('0x34')](_0x4d1008[_0x501783][_0x994c('0x65')])){_0x16ecfb[_0x4d1008[_0x501783][_0x994c('0x65')]]=needsEncapsulation(_0x4d1008[_0x501783][_0x994c('0x66')])?encapsulate(_0x4d1008[_0x501783][_0x994c('0x66')]):_0x4d1008[_0x501783]['question'];}}var _0x1ce72d=[],_0x399358={};for(var _0x201745=0x0,_0x352039=_0x4a7db1[_0x994c('0x33')];_0x201745<_0x352039;_0x201745++){_0x399358={'ProjectId':_0x1a23cf['params']['id'],'SessionId':_0x4a7db1[_0x201745]['id'],'StartTime':moment(_0x4a7db1[_0x201745][_0x994c('0x60')])[_0x994c('0x67')](_0x994c('0x68'))};for(var _0x3e2c02=0x0,_0x4a3e09=_0x4d1008[_0x994c('0x33')];_0x3e2c02<_0x4a3e09;_0x3e2c02++){if(_0x4d1008[_0x3e2c02][_0x994c('0x69')]==_0x4a7db1[_0x201745]['id']&&_0x16ecfb[_0x994c('0x34')](_0x4d1008[_0x3e2c02][_0x994c('0x65')])){_0x399358[_0x16ecfb[_0x4d1008[_0x3e2c02][_0x994c('0x65')]]]=_0x4d1008[_0x3e2c02][_0x994c('0x6a')];}}for(var _0x1ceb42 in _0x16ecfb){if(!_0x399358[_0x994c('0x34')](_0x16ecfb[_0x1ceb42])){_0x399358[_0x16ecfb[_0x1ceb42]]=null;}}_0x1ce72d[_0x994c('0x6b')](_0x399358);}return _0x1ce72d;}})[_0x994c('0x1c')](function(_0x21403f){if(!_['isEmpty'](_0x21403f)){var _0x28a8b7=toCsv(_0x21403f);var _0x378778=Date[_0x994c('0x6c')]();fs[_0x994c('0x6d')](util[_0x994c('0x67')](_0x994c('0x6e'),_0x1a23cf[_0x994c('0x40')]['id'],_0x378778),_0x28a8b7);_0x3b4f6e['setHeader'](_0x994c('0x6f'),_0x994c('0x70')+util['format'](_0x994c('0x71'),_0x1a23cf[_0x994c('0x40')]['id'],_0x378778));_0x3b4f6e['setHeader'](_0x994c('0x72'),'text/csv');return _0x3b4f6e[_0x994c('0x73')](util[_0x994c('0x67')](_0x994c('0x6e'),_0x1a23cf[_0x994c('0x40')]['id'],_0x378778));}else{return _0x3b4f6e['sendStatus'](0xcc);}})[_0x994c('0x43')](handleError(_0x3b4f6e,null));};
\ No newline at end of file
+var _0x7cd6=['hasOwnProperty','ProjectId','getAnswers','JscriptyAnswerReport','number','fromCharCode','toString','indexOf','replace','getSummary','startTime','starttime','parse','JscriptyQuestionReport','-createdAt','questionId','question','answer','push','isEmpty','now','writeFileSync','format','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','setHeader','/tmp/Jscripty_Project_%d_Summary_%s.csv','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','to-csv','querystring','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','then','destroy','Projects','UserProfileResource','error','stack','send','index','JscriptyProject','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','attributes','length','nolimit','order','sort','pick','merge','where','map','filter','count','includeAll','include','findAll','rows','catch','params','fields','options','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','createdAt','updatedAt','body','omit','user','update','getSessions','findOne','JscriptySessionReport'];(function(_0x4b7664,_0x1a1699){var _0x4ff2ce=function(_0x4d88ec){while(--_0x4d88ec){_0x4b7664['push'](_0x4b7664['shift']());}};_0x4ff2ce(++_0x1a1699);}(_0x7cd6,0x1f4));var _0x67cd=function(_0x54047b,_0x30d819){_0x54047b=_0x54047b-0x0;var _0x59a657=_0x7cd6[_0x54047b];return _0x59a657;};'use strict';var emlformat=require(_0x67cd('0x0'));var rimraf=require(_0x67cd('0x1'));var zipdir=require(_0x67cd('0x2'));var jsonpatch=require(_0x67cd('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x67cd('0x4'));var Mustache=require(_0x67cd('0x5'));var util=require(_0x67cd('0x6'));var path=require('path');var sox=require(_0x67cd('0x7'));var csv=require('to-csv');var ejs=require(_0x67cd('0x8'));var fs=require('fs');var fs_extra=require(_0x67cd('0x9'));var _=require(_0x67cd('0xa'));var squel=require(_0x67cd('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x67cd('0xc'));var querystring=require(_0x67cd('0xd'));var Papa=require('papaparse');var Redis=require(_0x67cd('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x67cd('0xf'));var logger=require(_0x67cd('0x10'))(_0x67cd('0x11'));var utils=require(_0x67cd('0x12'));var config=require(_0x67cd('0x13'));var licenseUtil=require(_0x67cd('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a0a05,_0x39c6ca){_0x39c6ca=_0x39c6ca||0xcc;return function(_0x1693d7){if(_0x1693d7){return _0x2a0a05[_0x67cd('0x15')](_0x39c6ca);}return _0x2a0a05[_0x67cd('0x16')](_0x39c6ca)[_0x67cd('0x17')]();};}function respondWithResult(_0x158bf0,_0x2d5aca){_0x2d5aca=_0x2d5aca||0xc8;return function(_0x15da7d){if(_0x15da7d){return _0x158bf0[_0x67cd('0x16')](_0x2d5aca)[_0x67cd('0x18')](_0x15da7d);}};}function respondWithFilteredResult(_0xc3fb41,_0x4c5b6d){return function(_0x3fdccf){if(_0x3fdccf){var _0x465590=typeof _0x4c5b6d[_0x67cd('0x19')]===_0x67cd('0x1a')&&typeof _0x4c5b6d[_0x67cd('0x1b')]==='undefined';var _0xb147d8=_0x3fdccf['count'];var _0x30cb35=_0x465590?0x0:_0x4c5b6d['offset'];var _0x5596e0=_0x465590?_0x3fdccf['count']:_0x4c5b6d[_0x67cd('0x19')]+_0x4c5b6d[_0x67cd('0x1b')];var _0x4370e0;if(_0x5596e0>=_0xb147d8){_0x5596e0=_0xb147d8;_0x4370e0=0xc8;}else{_0x4370e0=0xce;}_0xc3fb41[_0x67cd('0x16')](_0x4370e0);return _0xc3fb41[_0x67cd('0x1c')](_0x67cd('0x1d'),_0x30cb35+'-'+_0x5596e0+'/'+_0xb147d8)[_0x67cd('0x18')](_0x3fdccf);}return null;};}function patchUpdates(_0x2011e5){return function(_0x1fff15){try{jsonpatch[_0x67cd('0x1e')](_0x1fff15,_0x2011e5,!![]);}catch(_0x591019){return BPromise[_0x67cd('0x1f')](_0x591019);}return _0x1fff15[_0x67cd('0x20')]();};}function saveUpdates(_0x1003b6,_0x22b153){return function(_0x512760){if(_0x512760){return _0x512760['update'](_0x1003b6)[_0x67cd('0x21')](function(_0x35ba2f){return _0x35ba2f;});}return null;};}function removeEntity(_0x21d5f1,_0x5f042c){return function(_0x2230c1){if(_0x2230c1){return _0x2230c1[_0x67cd('0x22')]()['then'](function(){var _0x3428aa=_0x2230c1['get']({'plain':!![]});var _0x6b9e7=_0x67cd('0x23');return db[_0x67cd('0x24')][_0x67cd('0x22')]({'where':{'type':_0x6b9e7,'resourceId':_0x3428aa['id']}})[_0x67cd('0x21')](function(){return _0x2230c1;});})['then'](function(){_0x21d5f1[_0x67cd('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x104b8e,_0x46002e){return function(_0x363b24){if(!_0x363b24){_0x104b8e[_0x67cd('0x15')](0x194);}return _0x363b24;};}function handleError(_0x55caae,_0x4c1d39){_0x4c1d39=_0x4c1d39||0x1f4;return function(_0x1f252d){logger[_0x67cd('0x25')](_0x1f252d[_0x67cd('0x26')]);if(_0x1f252d['name']){delete _0x1f252d['name'];}_0x55caae[_0x67cd('0x16')](_0x4c1d39)[_0x67cd('0x27')](_0x1f252d);};}exports[_0x67cd('0x28')]=function(_0x3868af,_0x49e1e2){var _0x1578ce={},_0x2fbcca={},_0x331aba={'count':0x0,'rows':[]};var _0x554566=_['map'](db[_0x67cd('0x29')][_0x67cd('0x2a')],function(_0x528bb2){return{'name':_0x528bb2[_0x67cd('0x2b')],'type':_0x528bb2[_0x67cd('0x2c')][_0x67cd('0x2d')]};});_0x2fbcca[_0x67cd('0x2e')]=_['map'](_0x554566,_0x67cd('0x2f'));_0x2fbcca[_0x67cd('0x30')]=_[_0x67cd('0x31')](_0x3868af[_0x67cd('0x30')]);_0x2fbcca[_0x67cd('0x32')]=_[_0x67cd('0x33')](_0x2fbcca[_0x67cd('0x2e')],_0x2fbcca[_0x67cd('0x30')]);_0x1578ce[_0x67cd('0x34')]=_[_0x67cd('0x33')](_0x2fbcca['model'],qs['fields'](_0x3868af[_0x67cd('0x30')]['fields']));_0x1578ce[_0x67cd('0x34')]=_0x1578ce[_0x67cd('0x34')][_0x67cd('0x35')]?_0x1578ce['attributes']:_0x2fbcca[_0x67cd('0x2e')];if(!_0x3868af[_0x67cd('0x30')]['hasOwnProperty'](_0x67cd('0x36'))){_0x1578ce['limit']=qs[_0x67cd('0x1b')](_0x3868af[_0x67cd('0x30')]['limit']);_0x1578ce[_0x67cd('0x19')]=qs[_0x67cd('0x19')](_0x3868af[_0x67cd('0x30')][_0x67cd('0x19')]);}_0x1578ce[_0x67cd('0x37')]=qs[_0x67cd('0x38')](_0x3868af[_0x67cd('0x30')][_0x67cd('0x38')]);_0x1578ce['where']=qs[_0x67cd('0x32')](_[_0x67cd('0x39')](_0x3868af[_0x67cd('0x30')],_0x2fbcca[_0x67cd('0x32')]),_0x554566);if(_0x3868af[_0x67cd('0x30')]['filter']){_0x1578ce['where']=_[_0x67cd('0x3a')](_0x1578ce[_0x67cd('0x3b')],{'$or':_[_0x67cd('0x3c')](_0x554566,function(_0x2bb9d1){if(_0x2bb9d1['type']!=='VIRTUAL'){var _0x8f018e={};_0x8f018e[_0x2bb9d1[_0x67cd('0x2f')]]={'$like':'%'+_0x3868af[_0x67cd('0x30')][_0x67cd('0x3d')]+'%'};return _0x8f018e;}})});}_0x1578ce=_[_0x67cd('0x3a')]({},_0x1578ce,_0x3868af['options']);var _0x363c49={'where':_0x1578ce[_0x67cd('0x3b')]};return db[_0x67cd('0x29')][_0x67cd('0x3e')](_0x363c49)['then'](function(_0x2bccd4){_0x331aba[_0x67cd('0x3e')]=_0x2bccd4;if(_0x3868af[_0x67cd('0x30')][_0x67cd('0x3f')]){_0x1578ce[_0x67cd('0x40')]=[{'all':!![]}];}return db[_0x67cd('0x29')][_0x67cd('0x41')](_0x1578ce);})[_0x67cd('0x21')](function(_0x9ab74f){_0x331aba[_0x67cd('0x42')]=_0x9ab74f;return _0x331aba;})['then'](respondWithFilteredResult(_0x49e1e2,_0x1578ce))[_0x67cd('0x43')](handleError(_0x49e1e2,null));};exports['show']=function(_0x418859,_0x595ed3){var _0xbcaa74={'raw':![],'where':{'id':_0x418859[_0x67cd('0x44')]['id']}},_0x956307={};_0x956307[_0x67cd('0x2e')]=_[_0x67cd('0x31')](db[_0x67cd('0x29')][_0x67cd('0x2a')]);_0x956307[_0x67cd('0x30')]=_[_0x67cd('0x31')](_0x418859[_0x67cd('0x30')]);_0x956307[_0x67cd('0x32')]=_[_0x67cd('0x33')](_0x956307[_0x67cd('0x2e')],_0x956307[_0x67cd('0x30')]);_0xbcaa74[_0x67cd('0x34')]=_['intersection'](_0x956307[_0x67cd('0x2e')],qs[_0x67cd('0x45')](_0x418859[_0x67cd('0x30')]['fields']));_0xbcaa74[_0x67cd('0x34')]=_0xbcaa74['attributes'][_0x67cd('0x35')]?_0xbcaa74[_0x67cd('0x34')]:_0x956307['model'];if(_0x418859[_0x67cd('0x30')][_0x67cd('0x3f')]){_0xbcaa74[_0x67cd('0x40')]=[{'all':!![]}];}_0xbcaa74=_[_0x67cd('0x3a')]({},_0xbcaa74,_0x418859[_0x67cd('0x46')]);return db[_0x67cd('0x29')][_0x67cd('0x47')](_0xbcaa74)[_0x67cd('0x21')](handleEntityNotFound(_0x595ed3,null))[_0x67cd('0x21')](respondWithResult(_0x595ed3,null))[_0x67cd('0x43')](handleError(_0x595ed3,null));};exports['create']=function(_0x227278,_0x591450){return db[_0x67cd('0x29')][_0x67cd('0x48')](_0x227278['body'],{})['then'](function(_0x5a0cb9){var _0x1fd7f0=_0x227278['user']['get']({'plain':!![]});if(!_0x1fd7f0)throw new Error(_0x67cd('0x49'));if(_0x1fd7f0[_0x67cd('0x4a')]==='user'){var _0x5bdafb=_0x5a0cb9[_0x67cd('0x4b')]({'plain':!![]});var _0x7c94ac='Projects';return db[_0x67cd('0x4c')][_0x67cd('0x47')]({'where':{'name':_0x7c94ac,'userProfileId':_0x1fd7f0[_0x67cd('0x4d')]},'raw':!![]})[_0x67cd('0x21')](function(_0x49d2f5){if(_0x49d2f5&&_0x49d2f5[_0x67cd('0x4e')]===0x0){return db['UserProfileResource']['create']({'name':_0x5bdafb['name'],'resourceId':_0x5bdafb['id'],'type':_0x49d2f5[_0x67cd('0x2f')],'sectionId':_0x49d2f5['id']},{})[_0x67cd('0x21')](function(){return _0x5a0cb9;});}else{return _0x5a0cb9;}})['catch'](function(_0x4f357f){logger[_0x67cd('0x25')](_0x67cd('0x4f'),_0x4f357f);throw _0x4f357f;});}return _0x5a0cb9;})[_0x67cd('0x21')](respondWithResult(_0x591450,0xc9))[_0x67cd('0x43')](handleError(_0x591450,null));};exports[_0x67cd('0x50')]=function(_0x2ba07f,_0x5f382d){var _0x19bc5d={'where':{'id':_0x2ba07f[_0x67cd('0x44')]['id']}},_0x4a07bb={};_0x4a07bb[_0x67cd('0x2e')]=_[_0x67cd('0x31')](db[_0x67cd('0x29')][_0x67cd('0x2a')]);_0x19bc5d[_0x67cd('0x34')]=_[_0x67cd('0x33')](_0x4a07bb[_0x67cd('0x2e')],qs[_0x67cd('0x45')](_0x2ba07f['query']['fields']));_0x19bc5d[_0x67cd('0x34')]=_0x19bc5d[_0x67cd('0x34')][_0x67cd('0x35')]?_0x19bc5d[_0x67cd('0x34')]:_0x4a07bb[_0x67cd('0x2e')];if(_0x2ba07f['query'][_0x67cd('0x3f')]){_0x19bc5d[_0x67cd('0x40')]=[{'all':!![]}];}_0x19bc5d=_[_0x67cd('0x3a')]({},_0x19bc5d,_0x2ba07f['options']);return db[_0x67cd('0x29')]['find'](_0x19bc5d)['then'](handleEntityNotFound(_0x5f382d,null))[_0x67cd('0x21')](function(_0x3dacaa){if(_0x3dacaa){var _0x15234d=_0x3dacaa[_0x67cd('0x4b')]({'plain':!![]});_0x15234d=qs['omit'](_0x15234d,['id',_0x67cd('0x51'),_0x67cd('0x52')]);_0x2ba07f[_0x67cd('0x53')]=_[_0x67cd('0x54')](_0x2ba07f[_0x67cd('0x53')],['id',_0x67cd('0x51'),_0x67cd('0x52')]);return db['JscriptyProject'][_0x67cd('0x48')](_[_0x67cd('0x3a')](_0x15234d,_0x2ba07f[_0x67cd('0x53')]),{'include':_0x2ba07f[_0x67cd('0x30')]['includeAll']?[{'all':!![]}]:undefined})[_0x67cd('0x21')](function(_0x149a39){var _0x391558=_0x2ba07f['user'][_0x67cd('0x4b')]({'plain':!![]});if(!_0x391558)throw new Error(_0x67cd('0x49'));if(_0x391558[_0x67cd('0x4a')]===_0x67cd('0x55')){var _0x5632db=_0x149a39[_0x67cd('0x4b')]({'plain':!![]});var _0x4e944e=_0x67cd('0x23');return db['UserProfileSection'][_0x67cd('0x47')]({'where':{'name':_0x4e944e,'userProfileId':_0x391558[_0x67cd('0x4d')]},'raw':!![]})[_0x67cd('0x21')](function(_0x506cdb){if(_0x506cdb&&_0x506cdb[_0x67cd('0x4e')]===0x0){return db[_0x67cd('0x24')][_0x67cd('0x48')]({'name':_0x5632db['name'],'resourceId':_0x5632db['id'],'type':_0x506cdb[_0x67cd('0x2f')],'sectionId':_0x506cdb['id']},{})[_0x67cd('0x21')](function(){return _0x149a39;});}else{return _0x149a39;}})['catch'](function(_0x30b6b1){logger['error'](_0x67cd('0x4f'),_0x30b6b1);throw _0x30b6b1;});}return _0x149a39;});}})[_0x67cd('0x21')](respondWithResult(_0x5f382d,0xc9))[_0x67cd('0x43')](handleError(_0x5f382d,null));};exports[_0x67cd('0x56')]=function(_0x52fdbe,_0x2745b0){if(_0x52fdbe[_0x67cd('0x53')]['id']){delete _0x52fdbe[_0x67cd('0x53')]['id'];}return db['JscriptyProject']['find']({'where':{'id':_0x52fdbe[_0x67cd('0x44')]['id']}})[_0x67cd('0x21')](handleEntityNotFound(_0x2745b0,null))[_0x67cd('0x21')](saveUpdates(_0x52fdbe['body'],null))[_0x67cd('0x21')](respondWithResult(_0x2745b0,null))['catch'](handleError(_0x2745b0,null));};exports[_0x67cd('0x22')]=function(_0x361df7,_0x35d3e1){return db['JscriptyProject']['find']({'where':{'id':_0x361df7[_0x67cd('0x44')]['id']}})['then'](handleEntityNotFound(_0x35d3e1,null))[_0x67cd('0x21')](removeEntity(_0x35d3e1,null))['catch'](handleError(_0x35d3e1,null));};exports[_0x67cd('0x57')]=function(_0x238ea9,_0x168124,_0x16a22e){var _0x492873={'raw':!![],'where':{}};var _0x5dcb0c={};var _0x185f40={'count':0x0,'rows':[]};return db[_0x67cd('0x29')][_0x67cd('0x58')]({'where':{'id':_0x238ea9[_0x67cd('0x44')]['id']}})[_0x67cd('0x21')](handleEntityNotFound(_0x168124,null))[_0x67cd('0x21')](function(_0x3d745d){if(_0x3d745d){_0x5dcb0c[_0x67cd('0x2e')]=_[_0x67cd('0x31')](db[_0x67cd('0x59')][_0x67cd('0x2a')]);_0x5dcb0c['query']=_[_0x67cd('0x31')](_0x238ea9[_0x67cd('0x30')]);_0x5dcb0c[_0x67cd('0x32')]=_[_0x67cd('0x33')](_0x5dcb0c[_0x67cd('0x2e')],_0x5dcb0c[_0x67cd('0x30')]);_0x492873[_0x67cd('0x34')]=_[_0x67cd('0x33')](_0x5dcb0c[_0x67cd('0x2e')],qs[_0x67cd('0x45')](_0x238ea9['query'][_0x67cd('0x45')]));_0x492873[_0x67cd('0x34')]=_0x492873[_0x67cd('0x34')][_0x67cd('0x35')]?_0x492873['attributes']:_0x5dcb0c[_0x67cd('0x2e')];if(!_0x238ea9[_0x67cd('0x30')][_0x67cd('0x5a')]('nolimit')){_0x492873[_0x67cd('0x1b')]=qs[_0x67cd('0x1b')](_0x238ea9[_0x67cd('0x30')][_0x67cd('0x1b')]);_0x492873['offset']=qs[_0x67cd('0x19')](_0x238ea9[_0x67cd('0x30')][_0x67cd('0x19')]);}_0x492873[_0x67cd('0x37')]=qs[_0x67cd('0x38')](_0x238ea9[_0x67cd('0x30')][_0x67cd('0x38')]);_0x492873[_0x67cd('0x3b')]=qs[_0x67cd('0x32')](_['pick'](_0x238ea9[_0x67cd('0x30')],_0x5dcb0c[_0x67cd('0x32')]));_0x492873[_0x67cd('0x3b')][_0x67cd('0x5b')]=_0x3d745d['id'];if(_0x238ea9[_0x67cd('0x30')][_0x67cd('0x3d')]){_0x492873[_0x67cd('0x3b')]=_[_0x67cd('0x3a')](_0x492873[_0x67cd('0x3b')],{'$or':_[_0x67cd('0x3c')](_0x492873[_0x67cd('0x34')],function(_0x8d313d){var _0x11e473={};_0x11e473[_0x8d313d]={'$like':'%'+_0x238ea9[_0x67cd('0x30')][_0x67cd('0x3d')]+'%'};return _0x11e473;})});}_0x492873=_[_0x67cd('0x3a')]({},_0x492873,_0x238ea9[_0x67cd('0x46')]);return db[_0x67cd('0x59')]['count']({'where':_0x492873[_0x67cd('0x3b')]})['then'](function(_0xfed9d5){_0x185f40['count']=_0xfed9d5;if(_0x238ea9[_0x67cd('0x30')][_0x67cd('0x3f')]){_0x492873['include']=[{'all':!![]}];}return db[_0x67cd('0x59')][_0x67cd('0x41')](_0x492873);})[_0x67cd('0x21')](function(_0x54e89d){_0x185f40['rows']=_0x54e89d;return _0x185f40;});}})[_0x67cd('0x21')](respondWithFilteredResult(_0x168124,_0x492873))[_0x67cd('0x43')](handleError(_0x168124,null));};exports[_0x67cd('0x5c')]=function(_0x392235,_0x33aa3d,_0x2adc5f){var _0x17ce4a={'raw':!![],'where':{}};var _0x198652={};var _0x58afd1={'count':0x0,'rows':[]};return db[_0x67cd('0x29')][_0x67cd('0x58')]({'where':{'id':_0x392235[_0x67cd('0x44')]['id']}})['then'](handleEntityNotFound(_0x33aa3d,null))[_0x67cd('0x21')](function(_0x23fab3){if(_0x23fab3){_0x198652['model']=_[_0x67cd('0x31')](db[_0x67cd('0x5d')]['rawAttributes']);_0x198652['query']=_[_0x67cd('0x31')](_0x392235['query']);_0x198652[_0x67cd('0x32')]=_[_0x67cd('0x33')](_0x198652['model'],_0x198652[_0x67cd('0x30')]);_0x17ce4a[_0x67cd('0x34')]=_[_0x67cd('0x33')](_0x198652[_0x67cd('0x2e')],qs[_0x67cd('0x45')](_0x392235[_0x67cd('0x30')][_0x67cd('0x45')]));_0x17ce4a[_0x67cd('0x34')]=_0x17ce4a['attributes'][_0x67cd('0x35')]?_0x17ce4a['attributes']:_0x198652['model'];if(!_0x392235[_0x67cd('0x30')][_0x67cd('0x5a')](_0x67cd('0x36'))){_0x17ce4a[_0x67cd('0x1b')]=qs['limit'](_0x392235[_0x67cd('0x30')][_0x67cd('0x1b')]);_0x17ce4a[_0x67cd('0x19')]=qs['offset'](_0x392235[_0x67cd('0x30')][_0x67cd('0x19')]);}_0x17ce4a[_0x67cd('0x37')]=qs['sort'](_0x392235[_0x67cd('0x30')][_0x67cd('0x38')]);_0x17ce4a['where']=qs[_0x67cd('0x32')](_['pick'](_0x392235['query'],_0x198652[_0x67cd('0x32')]));_0x17ce4a[_0x67cd('0x3b')][_0x67cd('0x5b')]=_0x23fab3['id'];if(_0x392235[_0x67cd('0x30')][_0x67cd('0x3d')]){_0x17ce4a['where']=_[_0x67cd('0x3a')](_0x17ce4a[_0x67cd('0x3b')],{'$or':_['map'](_0x17ce4a['attributes'],function(_0x4f9060){var _0x5932b2={};_0x5932b2[_0x4f9060]={'$like':'%'+_0x392235['query'][_0x67cd('0x3d')]+'%'};return _0x5932b2;})});}_0x17ce4a=_[_0x67cd('0x3a')]({},_0x17ce4a,_0x392235[_0x67cd('0x46')]);return db[_0x67cd('0x5d')][_0x67cd('0x3e')]({'where':_0x17ce4a[_0x67cd('0x3b')]})[_0x67cd('0x21')](function(_0x18ba85){_0x58afd1['count']=_0x18ba85;if(_0x392235[_0x67cd('0x30')][_0x67cd('0x3f')]){_0x17ce4a['include']=[{'all':!![]}];}return db[_0x67cd('0x5d')][_0x67cd('0x41')](_0x17ce4a);})['then'](function(_0x63f484){_0x58afd1[_0x67cd('0x42')]=_0x63f484;return _0x58afd1;});}})['then'](respondWithFilteredResult(_0x33aa3d,_0x17ce4a))[_0x67cd('0x43')](handleError(_0x33aa3d,null));};function char(_0x36019a){return _0x67cd('0x5e')===typeof _0x36019a?String[_0x67cd('0x5f')]['apply'](null,arguments):_0x36019a;}function needsEncapsulation(_0x17260c){return!!_0x17260c&&(_0x17260c[_0x67cd('0x60')]()['indexOf'](char(0xd))>=0x0||_0x17260c['toString']()[_0x67cd('0x61')](char(0xa))>=0x0||_0x17260c[_0x67cd('0x60')]()[_0x67cd('0x61')](char(0x2c))>=0x0||_0x17260c[_0x67cd('0x60')]()['indexOf'](char(0x22))>=0x0);}function encapsulate(_0x3abc02){var _0x3f3f17=char(0x22),_0x10c422='\x5c'+char(0x22),_0x6cde1e=_0x3abc02[_0x67cd('0x60')]()[_0x67cd('0x62')](new RegExp(_0x3f3f17,'g'),_0x10c422);return _0x3f3f17+_0x6cde1e+_0x3f3f17;}exports[_0x67cd('0x63')]=function(_0x570098,_0x490060,_0x2e0ee4){var _0x57647e,_0x19bb26;var _0x17510d={'where':{'ProjectId':_0x570098[_0x67cd('0x44')]['id']}};if(_0x570098['query'][_0x67cd('0x64')]){_0x17510d[_0x67cd('0x3b')][_0x67cd('0x65')]=JSON[_0x67cd('0x66')](_0x570098[_0x67cd('0x30')][_0x67cd('0x64')]);}return db['JscriptySessionReport'][_0x67cd('0x41')](_0x17510d)[_0x67cd('0x21')](handleEntityNotFound(_0x490060,null))[_0x67cd('0x21')](function(_0x8fbe3b){if(_0x8fbe3b){_0x57647e=_0x8fbe3b;return db[_0x67cd('0x67')][_0x67cd('0x41')]({'where':{'SessionId':{'$in':_['map'](_0x57647e,'id')},'ProjectId':_0x570098[_0x67cd('0x44')]['id']},'order':_0x67cd('0x68')});}})[_0x67cd('0x21')](handleEntityNotFound(_0x490060,null))[_0x67cd('0x21')](function(_0x4db20b){if(_0x4db20b){_0x19bb26=_0x4db20b;var _0x38d14d={};for(var _0x163c2e=0x0,_0x57a67a=_0x19bb26['length'];_0x163c2e<_0x57a67a;_0x163c2e++){if(!_0x38d14d[_0x67cd('0x5a')](_0x19bb26[_0x163c2e][_0x67cd('0x69')])){_0x38d14d[_0x19bb26[_0x163c2e][_0x67cd('0x69')]]=needsEncapsulation(_0x19bb26[_0x163c2e]['question'])?encapsulate(_0x19bb26[_0x163c2e][_0x67cd('0x6a')]):_0x19bb26[_0x163c2e][_0x67cd('0x6a')];}}var _0x4a24bc=[],_0x51f455={};for(var _0x244786=0x0,_0x3eba60=_0x57647e[_0x67cd('0x35')];_0x244786<_0x3eba60;_0x244786++){_0x51f455={'ProjectId':_0x570098[_0x67cd('0x44')]['id'],'SessionId':_0x57647e[_0x244786]['id'],'StartTime':moment(_0x57647e[_0x244786][_0x67cd('0x65')])['format']('YYYY-MM-DD\x20HH:mm:ss')};for(var _0x1831c7=0x0,_0x3ec3c6=_0x19bb26[_0x67cd('0x35')];_0x1831c7<_0x3ec3c6;_0x1831c7++){if(_0x19bb26[_0x1831c7]['SessionId']==_0x57647e[_0x244786]['id']&&_0x38d14d[_0x67cd('0x5a')](_0x19bb26[_0x1831c7][_0x67cd('0x69')])){_0x51f455[_0x38d14d[_0x19bb26[_0x1831c7][_0x67cd('0x69')]]]=_0x19bb26[_0x1831c7][_0x67cd('0x6b')];}}for(var _0x57997b in _0x38d14d){if(!_0x51f455[_0x67cd('0x5a')](_0x38d14d[_0x57997b])){_0x51f455[_0x38d14d[_0x57997b]]=null;}}_0x4a24bc[_0x67cd('0x6c')](_0x51f455);}return _0x4a24bc;}})[_0x67cd('0x21')](function(_0x5ed241){if(!_[_0x67cd('0x6d')](_0x5ed241)){var _0x42d9d3=toCsv(_0x5ed241);var _0x4574a2=Date[_0x67cd('0x6e')]();fs[_0x67cd('0x6f')](util[_0x67cd('0x70')]('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x570098[_0x67cd('0x44')]['id'],_0x4574a2),_0x42d9d3);_0x490060['setHeader'](_0x67cd('0x71'),_0x67cd('0x72')+util[_0x67cd('0x70')](_0x67cd('0x73'),_0x570098['params']['id'],_0x4574a2));_0x490060[_0x67cd('0x74')]('Content-type','text/csv');return _0x490060['download'](util[_0x67cd('0x70')](_0x67cd('0x75'),_0x570098[_0x67cd('0x44')]['id'],_0x4574a2));}else{return _0x490060[_0x67cd('0x15')](0xcc);}})[_0x67cd('0x43')](handleError(_0x490060,null));};
\ No newline at end of file
index bdcf75f..b7de58c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45d1=['define','JscriptyProject','jscripty_projects','lodash','util','api','moment','request-promise','rimraf','../../config/environment','./jscriptyProject.attributes','exports'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x45d1,0x1cb));var _0x145d=function(_0x193ddf,_0x6f30bb){_0x193ddf=_0x193ddf-0x0;var _0x5bc6df=_0x45d1[_0x193ddf];return _0x5bc6df;};'use strict';var _=require(_0x145d('0x0'));var util=require(_0x145d('0x1'));var logger=require('../../config/logger')(_0x145d('0x2'));var moment=require(_0x145d('0x3'));var BPromise=require('bluebird');var rp=require(_0x145d('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x145d('0x5'));var config=require(_0x145d('0x6'));var attributes=require(_0x145d('0x7'));module[_0x145d('0x8')]=function(_0x14ddd8,_0x2896c3){return _0x14ddd8[_0x145d('0x9')](_0x145d('0xa'),attributes,{'tableName':_0x145d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9576=['request-promise','path','rimraf','../../config/environment','./jscriptyProject.attributes','exports','define','JscriptyProject','jscripty_projects','lodash','util','../../config/logger','api'];(function(_0x1a37e3,_0x5db8f6){var _0x4db78a=function(_0x15e6c1){while(--_0x15e6c1){_0x1a37e3['push'](_0x1a37e3['shift']());}};_0x4db78a(++_0x5db8f6);}(_0x9576,0x182));var _0x6957=function(_0x104015,_0x2b137b){_0x104015=_0x104015-0x0;var _0x2bfaeb=_0x9576[_0x104015];return _0x2bfaeb;};'use strict';var _=require(_0x6957('0x0'));var util=require(_0x6957('0x1'));var logger=require(_0x6957('0x2'))(_0x6957('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6957('0x4'));var fs=require('fs');var path=require(_0x6957('0x5'));var rimraf=require(_0x6957('0x6'));var config=require(_0x6957('0x7'));var attributes=require(_0x6957('0x8'));module[_0x6957('0x9')]=function(_0x2eb79e,_0x49e08a){return _0x2eb79e[_0x6957('0xa')](_0x6957('0xb'),attributes,{'tableName':_0x6957('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 76c6e38..d712913 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x3036ad,_0x130a44){var _0x1e8441=function(_0x1cd302){while(--_0x1cd302){_0x3036ad['push'](_0x3036ad['shift']());}};_0x1e8441(++_0x130a44);}(_0xb7e7,0x121));var _0x7b7e=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0xb7e7[_0x2a6809];return _0x11c371;};'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
+var _0xac4a=['JscriptyProject,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','then','info','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xac4a,0x13f));var _0xaac4=function(_0x4e93d2,_0x522f6e){_0x4e93d2=_0x4e93d2-0x0;var _0x117aac=_0xac4a[_0x4e93d2];return _0x117aac;};'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')]('JscriptyProject,\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')]('JscriptyProject,\x20%s,\x20%s',_0x5870e8,_0x1766c2);_0x567295(_0x1766c2);});});}
\ No newline at end of file
index 8d98e05..fd4c077 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ea4=['get','isAuthenticated','index','/describe','describe','/:id','show','create','update','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','./jscriptyQuestionReport.controller'];(function(_0x1147ab,_0x10e72b){var _0x55cb5a=function(_0x364bd6){while(--_0x364bd6){_0x1147ab['push'](_0x1147ab['shift']());}};_0x55cb5a(++_0x10e72b);}(_0x3ea4,0x187));var _0x43ea=function(_0x2a1b33,_0x409f50){_0x2a1b33=_0x2a1b33-0x0;var _0x4c50e7=_0x3ea4[_0x2a1b33];return _0x4c50e7;};'use strict';var multer=require(_0x43ea('0x0'));var util=require(_0x43ea('0x1'));var path=require(_0x43ea('0x2'));var timeout=require(_0x43ea('0x3'));var express=require(_0x43ea('0x4'));var router=express[_0x43ea('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x43ea('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x43ea('0x7'));router[_0x43ea('0x8')]('/',auth[_0x43ea('0x9')](),controller[_0x43ea('0xa')]);router['get'](_0x43ea('0xb'),auth[_0x43ea('0x9')](),controller[_0x43ea('0xc')]);router['get'](_0x43ea('0xd'),auth[_0x43ea('0x9')](),controller[_0x43ea('0xe')]);router['post']('/',auth[_0x43ea('0x9')](),controller[_0x43ea('0xf')]);router['put'](_0x43ea('0xd'),auth[_0x43ea('0x9')](),controller[_0x43ea('0x10')]);router['delete'](_0x43ea('0xd'),auth['isAuthenticated'](),controller[_0x43ea('0x11')]);module[_0x43ea('0x12')]=router;
\ No newline at end of file
+var _0x450b=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','get','index','/describe','isAuthenticated','describe','post','create','put','/:id','update','delete','destroy','util','path'];(function(_0x5730f7,_0x22a654){var _0x4bc214=function(_0x1dc21a){while(--_0x1dc21a){_0x5730f7['push'](_0x5730f7['shift']());}};_0x4bc214(++_0x22a654);}(_0x450b,0x1b6));var _0xb450=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x450b[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0xb450('0x0'));var path=require(_0xb450('0x1'));var timeout=require(_0xb450('0x2'));var express=require(_0xb450('0x3'));var router=express[_0xb450('0x4')]();var fs_extra=require(_0xb450('0x5'));var auth=require(_0xb450('0x6'));var interaction=require(_0xb450('0x7'));var config=require(_0xb450('0x8'));var controller=require(_0xb450('0x9'));router[_0xb450('0xa')]('/',auth['isAuthenticated'](),controller[_0xb450('0xb')]);router[_0xb450('0xa')](_0xb450('0xc'),auth[_0xb450('0xd')](),controller[_0xb450('0xe')]);router[_0xb450('0xa')]('/:id',auth[_0xb450('0xd')](),controller['show']);router[_0xb450('0xf')]('/',auth[_0xb450('0xd')](),controller[_0xb450('0x10')]);router[_0xb450('0x11')](_0xb450('0x12'),auth[_0xb450('0xd')](),controller[_0xb450('0x13')]);router[_0xb450('0x14')](_0xb450('0x12'),auth[_0xb450('0xd')](),controller[_0xb450('0x15')]);module['exports']=router;
\ No newline at end of file
index 2d22c1e..24f0137 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0x7a54,0x106));var _0x47a5=function(_0x1b91de,_0x3dc249){_0x1b91de=_0x1b91de-0x0;var _0x4334f3=_0x7a54[_0x1b91de];return _0x4334f3;};'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(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0x7a54,0x106));var _0x47a5=function(_0x25b07d,_0x4777ef){_0x25b07d=_0x25b07d-0x0;var _0x2878ec=_0x7a54[_0x25b07d];return _0x2878ec;};'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 d3c7b0c..fa8b18e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0e3=['ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','json','apply','reject','save','update','then','destroy','end','error','stack','name','index','map','JscriptyQuestionReport','fieldName','type','key','query','model','attributes','intersection','fields','length','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','rawAttributes','include','find','create','body','describe','eml-format','rimraf','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse'];(function(_0x295f9b,_0x4c040d){var _0x5ebf2d=function(_0x58456b){while(--_0x58456b){_0x295f9b['push'](_0x295f9b['shift']());}};_0x5ebf2d(++_0x4c040d);}(_0xc0e3,0x1b2));var _0x3c0e=function(_0x203271,_0x542139){_0x203271=_0x203271-0x0;var _0x37b0dd=_0xc0e3[_0x203271];return _0x37b0dd;};'use strict';var emlformat=require(_0x3c0e('0x0'));var rimraf=require(_0x3c0e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x3c0e('0x2'));var BPromise=require(_0x3c0e('0x3'));var Mustache=require(_0x3c0e('0x4'));var util=require(_0x3c0e('0x5'));var path=require(_0x3c0e('0x6'));var sox=require(_0x3c0e('0x7'));var csv=require('to-csv');var ejs=require(_0x3c0e('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3c0e('0x9'));var squel=require(_0x3c0e('0xa'));var crypto=require(_0x3c0e('0xb'));var jsforce=require(_0x3c0e('0xc'));var deskjs=require(_0x3c0e('0xd'));var toCsv=require('to-csv');var querystring=require(_0x3c0e('0xe'));var Papa=require(_0x3c0e('0xf'));var Redis=require(_0x3c0e('0x10'));var authService=require(_0x3c0e('0x11'));var qs=require(_0x3c0e('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x3c0e('0x13'));var utils=require(_0x3c0e('0x14'));var config=require(_0x3c0e('0x15'));var licenseUtil=require(_0x3c0e('0x16'));var db=require(_0x3c0e('0x17'))['db'];function respondWithStatusCode(_0x1d38b9,_0x50eed9){_0x50eed9=_0x50eed9||0xcc;return function(_0x34cd56){if(_0x34cd56){return _0x1d38b9[_0x3c0e('0x18')](_0x50eed9);}return _0x1d38b9['status'](_0x50eed9)['end']();};}function respondWithResult(_0x19b591,_0x3f8a97){_0x3f8a97=_0x3f8a97||0xc8;return function(_0x3c7230){if(_0x3c7230){return _0x19b591[_0x3c0e('0x19')](_0x3f8a97)['json'](_0x3c7230);}};}function respondWithFilteredResult(_0x437330,_0x516383){return function(_0x10565a){if(_0x10565a){var _0x1407a3=typeof _0x516383[_0x3c0e('0x1a')]===_0x3c0e('0x1b')&&typeof _0x516383[_0x3c0e('0x1c')]===_0x3c0e('0x1b');var _0x434e73=_0x10565a[_0x3c0e('0x1d')];var _0x3d3978=_0x1407a3?0x0:_0x516383[_0x3c0e('0x1a')];var _0x5371f2=_0x1407a3?_0x10565a[_0x3c0e('0x1d')]:_0x516383[_0x3c0e('0x1a')]+_0x516383[_0x3c0e('0x1c')];var _0x345cb4;if(_0x5371f2>=_0x434e73){_0x5371f2=_0x434e73;_0x345cb4=0xc8;}else{_0x345cb4=0xce;}_0x437330[_0x3c0e('0x19')](_0x345cb4);return _0x437330['set']('Content-Range',_0x3d3978+'-'+_0x5371f2+'/'+_0x434e73)[_0x3c0e('0x1e')](_0x10565a);}return null;};}function patchUpdates(_0x435902){return function(_0x2402ab){try{jsonpatch[_0x3c0e('0x1f')](_0x2402ab,_0x435902,!![]);}catch(_0x46299c){return BPromise[_0x3c0e('0x20')](_0x46299c);}return _0x2402ab[_0x3c0e('0x21')]();};}function saveUpdates(_0x4b8914,_0x43cefd){return function(_0x51b1db){if(_0x51b1db){return _0x51b1db[_0x3c0e('0x22')](_0x4b8914)[_0x3c0e('0x23')](function(_0x1d7903){return _0x1d7903;});}return null;};}function removeEntity(_0xa0bde0,_0x58ebb){return function(_0x3aafd2){if(_0x3aafd2){return _0x3aafd2[_0x3c0e('0x24')]()[_0x3c0e('0x23')](function(){_0xa0bde0[_0x3c0e('0x19')](0xcc)[_0x3c0e('0x25')]();});}};}function handleEntityNotFound(_0x18993a,_0x168705){return function(_0x55ecbd){if(!_0x55ecbd){_0x18993a['sendStatus'](0x194);}return _0x55ecbd;};}function handleError(_0x194ec2,_0x3d2816){_0x3d2816=_0x3d2816||0x1f4;return function(_0x480fe9){logger[_0x3c0e('0x26')](_0x480fe9[_0x3c0e('0x27')]);if(_0x480fe9['name']){delete _0x480fe9[_0x3c0e('0x28')];}_0x194ec2[_0x3c0e('0x19')](_0x3d2816)['send'](_0x480fe9);};}exports[_0x3c0e('0x29')]=function(_0x75c194,_0x5cf461){var _0x3597e1={},_0x28fa9b={},_0xa02f92={'count':0x0,'rows':[]};var _0x428233=_[_0x3c0e('0x2a')](db[_0x3c0e('0x2b')]['rawAttributes'],function(_0x44d4a0){return{'name':_0x44d4a0[_0x3c0e('0x2c')],'type':_0x44d4a0[_0x3c0e('0x2d')][_0x3c0e('0x2e')]};});_0x28fa9b['model']=_[_0x3c0e('0x2a')](_0x428233,_0x3c0e('0x28'));_0x28fa9b[_0x3c0e('0x2f')]=_['keys'](_0x75c194[_0x3c0e('0x2f')]);_0x28fa9b['filters']=_['intersection'](_0x28fa9b[_0x3c0e('0x30')],_0x28fa9b[_0x3c0e('0x2f')]);_0x3597e1[_0x3c0e('0x31')]=_[_0x3c0e('0x32')](_0x28fa9b['model'],qs['fields'](_0x75c194[_0x3c0e('0x2f')][_0x3c0e('0x33')]));_0x3597e1[_0x3c0e('0x31')]=_0x3597e1[_0x3c0e('0x31')][_0x3c0e('0x34')]?_0x3597e1[_0x3c0e('0x31')]:_0x28fa9b[_0x3c0e('0x30')];if(!_0x75c194[_0x3c0e('0x2f')]['hasOwnProperty']('nolimit')){_0x3597e1[_0x3c0e('0x1c')]=qs[_0x3c0e('0x1c')](_0x75c194[_0x3c0e('0x2f')][_0x3c0e('0x1c')]);_0x3597e1['offset']=qs['offset'](_0x75c194[_0x3c0e('0x2f')][_0x3c0e('0x1a')]);}_0x3597e1[_0x3c0e('0x35')]=qs[_0x3c0e('0x36')](_0x75c194['query'][_0x3c0e('0x36')]);_0x3597e1[_0x3c0e('0x37')]=qs[_0x3c0e('0x38')](_[_0x3c0e('0x39')](_0x75c194[_0x3c0e('0x2f')],_0x28fa9b[_0x3c0e('0x38')]),_0x428233);if(_0x75c194[_0x3c0e('0x2f')][_0x3c0e('0x3a')]){_0x3597e1[_0x3c0e('0x37')]=_[_0x3c0e('0x3b')](_0x3597e1[_0x3c0e('0x37')],{'$or':_[_0x3c0e('0x2a')](_0x428233,function(_0x22f406){if(_0x22f406[_0x3c0e('0x2d')]!==_0x3c0e('0x3c')){var _0xa99108={};_0xa99108[_0x22f406['name']]={'$like':'%'+_0x75c194['query'][_0x3c0e('0x3a')]+'%'};return _0xa99108;}})});}_0x3597e1=_[_0x3c0e('0x3b')]({},_0x3597e1,_0x75c194[_0x3c0e('0x3d')]);var _0x309ed6={'where':_0x3597e1['where']};return db['JscriptyQuestionReport'][_0x3c0e('0x1d')](_0x309ed6)[_0x3c0e('0x23')](function(_0x19f63f){_0xa02f92[_0x3c0e('0x1d')]=_0x19f63f;if(_0x75c194['query'][_0x3c0e('0x3e')]){_0x3597e1['include']=[{'all':!![]}];}return db[_0x3c0e('0x2b')][_0x3c0e('0x3f')](_0x3597e1);})[_0x3c0e('0x23')](function(_0x3c12db){_0xa02f92[_0x3c0e('0x40')]=_0x3c12db;return _0xa02f92;})[_0x3c0e('0x23')](respondWithFilteredResult(_0x5cf461,_0x3597e1))[_0x3c0e('0x41')](handleError(_0x5cf461,null));};exports[_0x3c0e('0x42')]=function(_0x5e957d,_0x20c8e4){var _0x1ecc01={'raw':!![],'where':{'id':_0x5e957d[_0x3c0e('0x43')]['id']}},_0x417221={};_0x417221[_0x3c0e('0x30')]=_[_0x3c0e('0x44')](db[_0x3c0e('0x2b')][_0x3c0e('0x45')]);_0x417221[_0x3c0e('0x2f')]=_[_0x3c0e('0x44')](_0x5e957d[_0x3c0e('0x2f')]);_0x417221[_0x3c0e('0x38')]=_[_0x3c0e('0x32')](_0x417221['model'],_0x417221[_0x3c0e('0x2f')]);_0x1ecc01[_0x3c0e('0x31')]=_[_0x3c0e('0x32')](_0x417221[_0x3c0e('0x30')],qs[_0x3c0e('0x33')](_0x5e957d['query'][_0x3c0e('0x33')]));_0x1ecc01[_0x3c0e('0x31')]=_0x1ecc01['attributes']['length']?_0x1ecc01['attributes']:_0x417221[_0x3c0e('0x30')];if(_0x5e957d[_0x3c0e('0x2f')][_0x3c0e('0x3e')]){_0x1ecc01[_0x3c0e('0x46')]=[{'all':!![]}];}_0x1ecc01=_[_0x3c0e('0x3b')]({},_0x1ecc01,_0x5e957d[_0x3c0e('0x3d')]);return db['JscriptyQuestionReport'][_0x3c0e('0x47')](_0x1ecc01)[_0x3c0e('0x23')](handleEntityNotFound(_0x20c8e4,null))[_0x3c0e('0x23')](respondWithResult(_0x20c8e4,null))[_0x3c0e('0x41')](handleError(_0x20c8e4,null));};exports[_0x3c0e('0x48')]=function(_0x25123a,_0x4dc041){return db['JscriptyQuestionReport']['create'](_0x25123a[_0x3c0e('0x49')],{})[_0x3c0e('0x23')](respondWithResult(_0x4dc041,0xc9))[_0x3c0e('0x41')](handleError(_0x4dc041,null));};exports[_0x3c0e('0x22')]=function(_0x392498,_0xb4023d){if(_0x392498[_0x3c0e('0x49')]['id']){delete _0x392498['body']['id'];}return db[_0x3c0e('0x2b')][_0x3c0e('0x47')]({'where':{'id':_0x392498[_0x3c0e('0x43')]['id']}})[_0x3c0e('0x23')](handleEntityNotFound(_0xb4023d,null))[_0x3c0e('0x23')](saveUpdates(_0x392498['body'],null))[_0x3c0e('0x23')](respondWithResult(_0xb4023d,null))[_0x3c0e('0x41')](handleError(_0xb4023d,null));};exports[_0x3c0e('0x24')]=function(_0xe8f5c6,_0x4b12a1){return db['JscriptyQuestionReport'][_0x3c0e('0x47')]({'where':{'id':_0xe8f5c6[_0x3c0e('0x43')]['id']}})[_0x3c0e('0x23')](handleEntityNotFound(_0x4b12a1,null))[_0x3c0e('0x23')](removeEntity(_0x4b12a1,null))['catch'](handleError(_0x4b12a1,null));};exports['describe']=function(_0x597dc6,_0x4749fb){return db[_0x3c0e('0x2b')][_0x3c0e('0x4a')]()['then'](respondWithResult(_0x4749fb,null))[_0x3c0e('0x41')](handleError(_0x4749fb,null));};
\ No newline at end of file
+var _0x68c3=['where','pick','filter','merge','type','VIRTUAL','includeAll','include','catch','show','options','create','body','find','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','sox','to-csv','ejs','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','reject','update','then','error','name','send','map','JscriptyQuestionReport','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','order','sort'];(function(_0x356770,_0x151c4c){var _0x32a35f=function(_0xf1de1){while(--_0xf1de1){_0x356770['push'](_0x356770['shift']());}};_0x32a35f(++_0x151c4c);}(_0x68c3,0xd9));var _0x368c=function(_0x301bee,_0x91a563){_0x301bee=_0x301bee-0x0;var _0x3fbdbc=_0x68c3[_0x301bee];return _0x3fbdbc;};'use strict';var emlformat=require(_0x368c('0x0'));var rimraf=require(_0x368c('0x1'));var zipdir=require(_0x368c('0x2'));var jsonpatch=require(_0x368c('0x3'));var rp=require(_0x368c('0x4'));var moment=require(_0x368c('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x368c('0x6'));var path=require('path');var sox=require(_0x368c('0x7'));var csv=require(_0x368c('0x8'));var ejs=require(_0x368c('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x368c('0xa'));var squel=require(_0x368c('0xb'));var crypto=require(_0x368c('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x368c('0x8'));var querystring=require(_0x368c('0xd'));var Papa=require(_0x368c('0xe'));var Redis=require(_0x368c('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x368c('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x368c('0x11'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x368c('0x12'));var db=require(_0x368c('0x13'))['db'];function respondWithStatusCode(_0x3f08b2,_0x5d64d6){_0x5d64d6=_0x5d64d6||0xcc;return function(_0x2ec7de){if(_0x2ec7de){return _0x3f08b2[_0x368c('0x14')](_0x5d64d6);}return _0x3f08b2[_0x368c('0x15')](_0x5d64d6)[_0x368c('0x16')]();};}function respondWithResult(_0xd09931,_0x389d10){_0x389d10=_0x389d10||0xc8;return function(_0x362a1){if(_0x362a1){return _0xd09931['status'](_0x389d10)[_0x368c('0x17')](_0x362a1);}};}function respondWithFilteredResult(_0x13c9b2,_0x369ecd){return function(_0x5bd831){if(_0x5bd831){var _0x355597=typeof _0x369ecd[_0x368c('0x18')]==='undefined'&&typeof _0x369ecd['limit']===_0x368c('0x19');var _0xeb671c=_0x5bd831[_0x368c('0x1a')];var _0x203ed1=_0x355597?0x0:_0x369ecd[_0x368c('0x18')];var _0x44e201=_0x355597?_0x5bd831[_0x368c('0x1a')]:_0x369ecd['offset']+_0x369ecd[_0x368c('0x1b')];var _0x3619c1;if(_0x44e201>=_0xeb671c){_0x44e201=_0xeb671c;_0x3619c1=0xc8;}else{_0x3619c1=0xce;}_0x13c9b2[_0x368c('0x15')](_0x3619c1);return _0x13c9b2[_0x368c('0x1c')]('Content-Range',_0x203ed1+'-'+_0x44e201+'/'+_0xeb671c)[_0x368c('0x17')](_0x5bd831);}return null;};}function patchUpdates(_0x4dff33){return function(_0x178ce8){try{jsonpatch[_0x368c('0x1d')](_0x178ce8,_0x4dff33,!![]);}catch(_0x4799c9){return BPromise[_0x368c('0x1e')](_0x4799c9);}return _0x178ce8['save']();};}function saveUpdates(_0x5df510,_0x608817){return function(_0x49e83a){if(_0x49e83a){return _0x49e83a[_0x368c('0x1f')](_0x5df510)[_0x368c('0x20')](function(_0x5d4f9c){return _0x5d4f9c;});}return null;};}function removeEntity(_0xb96950,_0x3e3da5){return function(_0x1e3ffe){if(_0x1e3ffe){return _0x1e3ffe['destroy']()[_0x368c('0x20')](function(){_0xb96950['status'](0xcc)[_0x368c('0x16')]();});}};}function handleEntityNotFound(_0x24a611,_0x160072){return function(_0x17b74f){if(!_0x17b74f){_0x24a611[_0x368c('0x14')](0x194);}return _0x17b74f;};}function handleError(_0x2eb6b4,_0x53501b){_0x53501b=_0x53501b||0x1f4;return function(_0xd58e73){logger[_0x368c('0x21')](_0xd58e73['stack']);if(_0xd58e73[_0x368c('0x22')]){delete _0xd58e73[_0x368c('0x22')];}_0x2eb6b4[_0x368c('0x15')](_0x53501b)[_0x368c('0x23')](_0xd58e73);};}exports['index']=function(_0x7801e2,_0x55e702){var _0x2e5ef9={},_0x37d141={},_0x36491f={'count':0x0,'rows':[]};var _0x53823b=_[_0x368c('0x24')](db[_0x368c('0x25')][_0x368c('0x26')],function(_0x310ed6){return{'name':_0x310ed6[_0x368c('0x27')],'type':_0x310ed6['type'][_0x368c('0x28')]};});_0x37d141[_0x368c('0x29')]=_['map'](_0x53823b,_0x368c('0x22'));_0x37d141[_0x368c('0x2a')]=_[_0x368c('0x2b')](_0x7801e2[_0x368c('0x2a')]);_0x37d141[_0x368c('0x2c')]=_['intersection'](_0x37d141['model'],_0x37d141[_0x368c('0x2a')]);_0x2e5ef9[_0x368c('0x2d')]=_[_0x368c('0x2e')](_0x37d141[_0x368c('0x29')],qs[_0x368c('0x2f')](_0x7801e2[_0x368c('0x2a')]['fields']));_0x2e5ef9[_0x368c('0x2d')]=_0x2e5ef9[_0x368c('0x2d')]['length']?_0x2e5ef9[_0x368c('0x2d')]:_0x37d141[_0x368c('0x29')];if(!_0x7801e2[_0x368c('0x2a')][_0x368c('0x30')]('nolimit')){_0x2e5ef9[_0x368c('0x1b')]=qs['limit'](_0x7801e2['query'][_0x368c('0x1b')]);_0x2e5ef9[_0x368c('0x18')]=qs[_0x368c('0x18')](_0x7801e2[_0x368c('0x2a')]['offset']);}_0x2e5ef9[_0x368c('0x31')]=qs[_0x368c('0x32')](_0x7801e2[_0x368c('0x2a')]['sort']);_0x2e5ef9[_0x368c('0x33')]=qs[_0x368c('0x2c')](_[_0x368c('0x34')](_0x7801e2['query'],_0x37d141[_0x368c('0x2c')]),_0x53823b);if(_0x7801e2['query'][_0x368c('0x35')]){_0x2e5ef9[_0x368c('0x33')]=_[_0x368c('0x36')](_0x2e5ef9[_0x368c('0x33')],{'$or':_[_0x368c('0x24')](_0x53823b,function(_0x19e4d1){if(_0x19e4d1[_0x368c('0x37')]!==_0x368c('0x38')){var _0x1002b0={};_0x1002b0[_0x19e4d1[_0x368c('0x22')]]={'$like':'%'+_0x7801e2[_0x368c('0x2a')][_0x368c('0x35')]+'%'};return _0x1002b0;}})});}_0x2e5ef9=_['merge']({},_0x2e5ef9,_0x7801e2['options']);var _0x5e3776={'where':_0x2e5ef9['where']};return db[_0x368c('0x25')][_0x368c('0x1a')](_0x5e3776)[_0x368c('0x20')](function(_0x3507fa){_0x36491f['count']=_0x3507fa;if(_0x7801e2[_0x368c('0x2a')][_0x368c('0x39')]){_0x2e5ef9[_0x368c('0x3a')]=[{'all':!![]}];}return db[_0x368c('0x25')]['findAll'](_0x2e5ef9);})[_0x368c('0x20')](function(_0x50a789){_0x36491f['rows']=_0x50a789;return _0x36491f;})[_0x368c('0x20')](respondWithFilteredResult(_0x55e702,_0x2e5ef9))[_0x368c('0x3b')](handleError(_0x55e702,null));};exports[_0x368c('0x3c')]=function(_0x1d1210,_0x3df4a4){var _0x5b368e={'raw':!![],'where':{'id':_0x1d1210['params']['id']}},_0x24bfbd={};_0x24bfbd[_0x368c('0x29')]=_[_0x368c('0x2b')](db['JscriptyQuestionReport'][_0x368c('0x26')]);_0x24bfbd['query']=_[_0x368c('0x2b')](_0x1d1210[_0x368c('0x2a')]);_0x24bfbd['filters']=_[_0x368c('0x2e')](_0x24bfbd[_0x368c('0x29')],_0x24bfbd[_0x368c('0x2a')]);_0x5b368e['attributes']=_[_0x368c('0x2e')](_0x24bfbd[_0x368c('0x29')],qs[_0x368c('0x2f')](_0x1d1210['query'][_0x368c('0x2f')]));_0x5b368e[_0x368c('0x2d')]=_0x5b368e['attributes']['length']?_0x5b368e[_0x368c('0x2d')]:_0x24bfbd[_0x368c('0x29')];if(_0x1d1210['query']['includeAll']){_0x5b368e['include']=[{'all':!![]}];}_0x5b368e=_[_0x368c('0x36')]({},_0x5b368e,_0x1d1210[_0x368c('0x3d')]);return db['JscriptyQuestionReport']['find'](_0x5b368e)[_0x368c('0x20')](handleEntityNotFound(_0x3df4a4,null))[_0x368c('0x20')](respondWithResult(_0x3df4a4,null))[_0x368c('0x3b')](handleError(_0x3df4a4,null));};exports[_0x368c('0x3e')]=function(_0x2775e7,_0x24c37a){return db[_0x368c('0x25')][_0x368c('0x3e')](_0x2775e7[_0x368c('0x3f')],{})['then'](respondWithResult(_0x24c37a,0xc9))[_0x368c('0x3b')](handleError(_0x24c37a,null));};exports[_0x368c('0x1f')]=function(_0x2b9b28,_0x5773ae){if(_0x2b9b28[_0x368c('0x3f')]['id']){delete _0x2b9b28[_0x368c('0x3f')]['id'];}return db[_0x368c('0x25')][_0x368c('0x40')]({'where':{'id':_0x2b9b28[_0x368c('0x41')]['id']}})['then'](handleEntityNotFound(_0x5773ae,null))['then'](saveUpdates(_0x2b9b28[_0x368c('0x3f')],null))[_0x368c('0x20')](respondWithResult(_0x5773ae,null))[_0x368c('0x3b')](handleError(_0x5773ae,null));};exports['destroy']=function(_0x4dd90d,_0x13cabc){return db[_0x368c('0x25')][_0x368c('0x40')]({'where':{'id':_0x4dd90d[_0x368c('0x41')]['id']}})[_0x368c('0x20')](handleEntityNotFound(_0x13cabc,null))[_0x368c('0x20')](removeEntity(_0x13cabc,null))[_0x368c('0x3b')](handleError(_0x13cabc,null));};exports[_0x368c('0x42')]=function(_0x321edb,_0x2bbbb4){return db[_0x368c('0x25')][_0x368c('0x42')]()[_0x368c('0x20')](respondWithResult(_0x2bbbb4,null))[_0x368c('0x3b')](handleError(_0x2bbbb4,null));};
\ No newline at end of file
index d811908..ed01e74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6316=['moment','bluebird','request-promise','path','./jscriptyQuestionReport.attributes','define','lodash','../../config/logger'];(function(_0xf386a7,_0xc40bda){var _0x56c1d1=function(_0x191a27){while(--_0x191a27){_0xf386a7['push'](_0xf386a7['shift']());}};_0x56c1d1(++_0xc40bda);}(_0x6316,0x1be));var _0x6631=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x6316[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0x6631('0x0'));var util=require('util');var logger=require(_0x6631('0x1'))('api');var moment=require(_0x6631('0x2'));var BPromise=require(_0x6631('0x3'));var rp=require(_0x6631('0x4'));var fs=require('fs');var path=require(_0x6631('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x6631('0x6'));module['exports']=function(_0x40b61c,_0x3c0142){return _0x40b61c[_0x6631('0x7')]('JscriptyQuestionReport',attributes,{'tableName':'report_jscripty_questions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0db9=['util','api','moment','request-promise','path','rimraf','./jscriptyQuestionReport.attributes','exports','JscriptyQuestionReport','report_jscripty_questions','lodash'];(function(_0x289efd,_0x548456){var _0x591cec=function(_0x590c01){while(--_0x590c01){_0x289efd['push'](_0x289efd['shift']());}};_0x591cec(++_0x548456);}(_0x0db9,0x16a));var _0x90db=function(_0x4232d8,_0x13fd09){_0x4232d8=_0x4232d8-0x0;var _0x324de2=_0x0db9[_0x4232d8];return _0x324de2;};'use strict';var _=require(_0x90db('0x0'));var util=require(_0x90db('0x1'));var logger=require('../../config/logger')(_0x90db('0x2'));var moment=require(_0x90db('0x3'));var BPromise=require('bluebird');var rp=require(_0x90db('0x4'));var fs=require('fs');var path=require(_0x90db('0x5'));var rimraf=require(_0x90db('0x6'));var config=require('../../config/environment');var attributes=require(_0x90db('0x7'));module[_0x90db('0x8')]=function(_0x195cab,_0x3aabca){return _0x195cab['define'](_0x90db('0x9'),attributes,{'tableName':_0x90db('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8f3848e..651a4ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09b9=['client','http','request','then','info','request\x20sent','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','error','code','JscriptyQuestionReport,\x20%s,\x20%s','message','catch','lodash','util','../../config/logger','rpc','jayson/promise'];(function(_0x44abff,_0x4b95fa){var _0x305107=function(_0x21dfba){while(--_0x21dfba){_0x44abff['push'](_0x44abff['shift']());}};_0x305107(++_0x4b95fa);}(_0x09b9,0x14f));var _0x909b=function(_0x576360,_0x5d5d4a){_0x576360=_0x576360-0x0;var _0x46a899=_0x09b9[_0x576360];return _0x46a899;};'use strict';var _=require(_0x909b('0x0'));var util=require(_0x909b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x909b('0x2'))(_0x909b('0x3'));var config=require('../../config/environment');var jayson=require(_0x909b('0x4'));var client=jayson[_0x909b('0x5')][_0x909b('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x1ae099,_0x46a4ec,_0x24f909){return new BPromise(function(_0x11e4a3,_0x383c05){return client[_0x909b('0x7')](_0x1ae099,_0x24f909)[_0x909b('0x8')](function(_0x11ab97){logger[_0x909b('0x9')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x46a4ec,_0x909b('0xa'));logger['debug'](_0x909b('0xb'),_0x46a4ec,_0x909b('0xa'),JSON['stringify'](_0x11ab97));if(_0x11ab97[_0x909b('0xc')]){if(_0x11ab97['error'][_0x909b('0xd')]===0x1f4){logger['error'](_0x909b('0xe'),_0x46a4ec,_0x11ab97['error'][_0x909b('0xf')]);return _0x383c05(_0x11ab97[_0x909b('0xc')]['message']);}logger['error'](_0x909b('0xe'),_0x46a4ec,_0x11ab97[_0x909b('0xc')]['message']);return _0x11e4a3(_0x11ab97[_0x909b('0xc')][_0x909b('0xf')]);}else{logger[_0x909b('0x9')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x46a4ec,_0x909b('0xa'));_0x11e4a3(_0x11ab97['result'][_0x909b('0xf')]);}})[_0x909b('0x10')](function(_0xc3e406){logger[_0x909b('0xc')](_0x909b('0xe'),_0x46a4ec,_0xc3e406);_0x383c05(_0xc3e406);});});}
\ No newline at end of file
+var _0x15c6=['../../config/environment','jayson/promise','client','http','request','then','info','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','JscriptyQuestionReport,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x17928f,_0x4ad33f){var _0x500b63=function(_0x127644){while(--_0x127644){_0x17928f['push'](_0x17928f['shift']());}};_0x500b63(++_0x4ad33f);}(_0x15c6,0x115));var _0x615c=function(_0x178f52,_0x5d9675){_0x178f52=_0x178f52-0x0;var _0x556f99=_0x15c6[_0x178f52];return _0x556f99;};'use strict';var _=require(_0x615c('0x0'));var util=require(_0x615c('0x1'));var moment=require(_0x615c('0x2'));var BPromise=require(_0x615c('0x3'));var rs=require(_0x615c('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x615c('0x5'))['db'];var utils=require(_0x615c('0x6'));var logger=require(_0x615c('0x7'))(_0x615c('0x8'));var config=require(_0x615c('0x9'));var jayson=require(_0x615c('0xa'));var client=jayson[_0x615c('0xb')][_0x615c('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x22490f,_0x3015b5,_0x385ab9){return new BPromise(function(_0x32f0dc,_0x31ee75){return client[_0x615c('0xd')](_0x22490f,_0x385ab9)[_0x615c('0xe')](function(_0x338fde){logger[_0x615c('0xf')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x3015b5,'request\x20sent');logger[_0x615c('0x10')](_0x615c('0x11'),_0x3015b5,_0x615c('0x12'),JSON[_0x615c('0x13')](_0x338fde));if(_0x338fde[_0x615c('0x14')]){if(_0x338fde[_0x615c('0x14')][_0x615c('0x15')]===0x1f4){logger[_0x615c('0x14')](_0x615c('0x16'),_0x3015b5,_0x338fde[_0x615c('0x14')][_0x615c('0x17')]);return _0x31ee75(_0x338fde['error']['message']);}logger[_0x615c('0x14')](_0x615c('0x16'),_0x3015b5,_0x338fde[_0x615c('0x14')][_0x615c('0x17')]);return _0x32f0dc(_0x338fde['error']['message']);}else{logger[_0x615c('0xf')](_0x615c('0x16'),_0x3015b5,_0x615c('0x12'));_0x32f0dc(_0x338fde[_0x615c('0x18')][_0x615c('0x17')]);}})[_0x615c('0x19')](function(_0x5f32c7){logger['error'](_0x615c('0x16'),_0x3015b5,_0x5f32c7);_0x31ee75(_0x5f32c7);});});}
\ No newline at end of file
index 9188510..3b66f1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc601=['../../components/interaction/service','../../config/environment','get','/describe','isAuthenticated','/:id','show','post','create','put','update','delete','destroy','multer','util','path','Router','fs-extra'];(function(_0x3b5518,_0x42ef85){var _0x23d180=function(_0x3494b8){while(--_0x3494b8){_0x3b5518['push'](_0x3b5518['shift']());}};_0x23d180(++_0x42ef85);}(_0xc601,0x13f));var _0x1c60=function(_0x1d3b2f,_0x369eb8){_0x1d3b2f=_0x1d3b2f-0x0;var _0xb96f6d=_0xc601[_0x1d3b2f];return _0xb96f6d;};'use strict';var multer=require(_0x1c60('0x0'));var util=require(_0x1c60('0x1'));var path=require(_0x1c60('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x1c60('0x3')]();var fs_extra=require(_0x1c60('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x1c60('0x5'));var config=require(_0x1c60('0x6'));var controller=require('./jscriptySessionReport.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x1c60('0x7')](_0x1c60('0x8'),auth[_0x1c60('0x9')](),controller['describe']);router[_0x1c60('0x7')](_0x1c60('0xa'),auth[_0x1c60('0x9')](),controller[_0x1c60('0xb')]);router['get']('/:id/questions',auth['isAuthenticated'](),controller['getQuestions']);router[_0x1c60('0xc')]('/',auth[_0x1c60('0x9')](),controller[_0x1c60('0xd')]);router[_0x1c60('0xe')](_0x1c60('0xa'),auth[_0x1c60('0x9')](),controller[_0x1c60('0xf')]);router[_0x1c60('0x10')](_0x1c60('0xa'),auth[_0x1c60('0x9')](),controller[_0x1c60('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xe3dd=['/:id/questions','getQuestions','post','put','update','delete','destroy','multer','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptySessionReport.controller','isAuthenticated','index','get','/describe','/:id'];(function(_0xd2337d,_0xae5fd7){var _0x5c1662=function(_0x8da675){while(--_0x8da675){_0xd2337d['push'](_0xd2337d['shift']());}};_0x5c1662(++_0xae5fd7);}(_0xe3dd,0x9f));var _0xde3d=function(_0x42d728,_0xaabde){_0x42d728=_0x42d728-0x0;var _0x3680be=_0xe3dd[_0x42d728];return _0x3680be;};'use strict';var multer=require(_0xde3d('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xde3d('0x1'));var express=require('express');var router=express[_0xde3d('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xde3d('0x3'));var interaction=require(_0xde3d('0x4'));var config=require(_0xde3d('0x5'));var controller=require(_0xde3d('0x6'));router['get']('/',auth[_0xde3d('0x7')](),controller[_0xde3d('0x8')]);router[_0xde3d('0x9')](_0xde3d('0xa'),auth[_0xde3d('0x7')](),controller['describe']);router[_0xde3d('0x9')](_0xde3d('0xb'),auth[_0xde3d('0x7')](),controller['show']);router[_0xde3d('0x9')](_0xde3d('0xc'),auth[_0xde3d('0x7')](),controller[_0xde3d('0xd')]);router[_0xde3d('0xe')]('/',auth[_0xde3d('0x7')](),controller['create']);router[_0xde3d('0xf')](_0xde3d('0xb'),auth[_0xde3d('0x7')](),controller[_0xde3d('0x10')]);router[_0xde3d('0x11')](_0xde3d('0xb'),auth[_0xde3d('0x7')](),controller[_0xde3d('0x12')]);module['exports']=router;
\ No newline at end of file
index 91dd2cc..6a49f63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d43=['STRING','BOOLEAN','moment','sequelize','DATE','setDataValue','starttime','endtime'];(function(_0x43026b,_0x928d8c){var _0x4a96cd=function(_0x362cbd){while(--_0x362cbd){_0x43026b['push'](_0x43026b['shift']());}};_0x4a96cd(++_0x928d8c);}(_0x4d43,0x9a));var _0x34d4=function(_0x1995dd,_0x237a08){_0x1995dd=_0x1995dd-0x0;var _0x588bde=_0x4d43[_0x1995dd];return _0x588bde;};'use strict';var moment=require(_0x34d4('0x0'));var Sequelize=require(_0x34d4('0x1'));module['exports']={'starttime':{'type':Sequelize[_0x34d4('0x2')],'set':function(_0x183826){this[_0x34d4('0x3')](_0x34d4('0x4'),_0x183826);this[_0x34d4('0x3')](_0x34d4('0x5'),moment()['format']('YYYY-MM-DD\x20HH:mm:ss'));}},'endtime':{'type':Sequelize[_0x34d4('0x2')]},'membername':{'type':Sequelize[_0x34d4('0x6')]},'projectname':{'type':Sequelize[_0x34d4('0x6')]},'queue':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x34d4('0x6')]},'calleridnum':{'type':Sequelize['STRING']},'completed':{'type':Sequelize[_0x34d4('0x7')],'defaultValue':![]}};
\ No newline at end of file
+var _0x3dbe=['YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN','moment','exports','DATE','setDataValue','starttime','endtime','format'];(function(_0x2ae0f2,_0x694210){var _0x388842=function(_0x1fee2e){while(--_0x1fee2e){_0x2ae0f2['push'](_0x2ae0f2['shift']());}};_0x388842(++_0x694210);}(_0x3dbe,0x71));var _0xe3db=function(_0x29124a,_0x4db1fa){_0x29124a=_0x29124a-0x0;var _0x1d946e=_0x3dbe[_0x29124a];return _0x1d946e;};'use strict';var moment=require(_0xe3db('0x0'));var Sequelize=require('sequelize');module[_0xe3db('0x1')]={'starttime':{'type':Sequelize[_0xe3db('0x2')],'set':function(_0x444d0d){this[_0xe3db('0x3')](_0xe3db('0x4'),_0x444d0d);this[_0xe3db('0x3')](_0xe3db('0x5'),moment()[_0xe3db('0x6')](_0xe3db('0x7')));}},'endtime':{'type':Sequelize[_0xe3db('0x2')]},'membername':{'type':Sequelize['STRING']},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xe3db('0x8')]},'calleridname':{'type':Sequelize[_0xe3db('0x8')]},'calleridnum':{'type':Sequelize[_0xe3db('0x8')]},'completed':{'type':Sequelize[_0xe3db('0x9')],'defaultValue':![]}};
\ No newline at end of file
index c35ae88..99006a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x413d=['intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','options','include','findAll','rows','catch','show','params','includeAll','find','create','update','describe','getQuestions','findOne','SessionId','JscriptyQuestionReport','eml-format','rimraf','fast-json-patch','request-promise','moment','util','to-csv','ejs','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','stack','name','send','map','JscriptySessionReport','rawAttributes','type','key','model','keys','query','filters','attributes'];(function(_0x4a96ca,_0x13754e){var _0x2aed48=function(_0x361330){while(--_0x361330){_0x4a96ca['push'](_0x4a96ca['shift']());}};_0x2aed48(++_0x13754e);}(_0x413d,0x147));var _0xd413=function(_0x2cfb58,_0x3d9412){_0x2cfb58=_0x2cfb58-0x0;var _0xd99951=_0x413d[_0x2cfb58];return _0xd99951;};'use strict';var emlformat=require(_0xd413('0x0'));var rimraf=require(_0xd413('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd413('0x2'));var rp=require(_0xd413('0x3'));var moment=require(_0xd413('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xd413('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xd413('0x6'));var ejs=require(_0xd413('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd413('0x8'));var squel=require(_0xd413('0x9'));var crypto=require(_0xd413('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xd413('0xb'));var toCsv=require(_0xd413('0x6'));var querystring=require('querystring');var Papa=require(_0xd413('0xc'));var Redis=require(_0xd413('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xd413('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xd413('0xf'))(_0xd413('0x10'));var utils=require(_0xd413('0x11'));var config=require(_0xd413('0x12'));var licenseUtil=require(_0xd413('0x13'));var db=require(_0xd413('0x14'))['db'];function respondWithStatusCode(_0xc85dc6,_0x1aa7e1){_0x1aa7e1=_0x1aa7e1||0xcc;return function(_0x3920b1){if(_0x3920b1){return _0xc85dc6[_0xd413('0x15')](_0x1aa7e1);}return _0xc85dc6['status'](_0x1aa7e1)[_0xd413('0x16')]();};}function respondWithResult(_0x5b39f5,_0x3029a0){_0x3029a0=_0x3029a0||0xc8;return function(_0xff241d){if(_0xff241d){return _0x5b39f5[_0xd413('0x17')](_0x3029a0)[_0xd413('0x18')](_0xff241d);}};}function respondWithFilteredResult(_0x344839,_0x57e5e4){return function(_0xa3d254){if(_0xa3d254){var _0x3a9276=typeof _0x57e5e4[_0xd413('0x19')]===_0xd413('0x1a')&&typeof _0x57e5e4[_0xd413('0x1b')]===_0xd413('0x1a');var _0x39906e=_0xa3d254[_0xd413('0x1c')];var _0x4ee395=_0x3a9276?0x0:_0x57e5e4[_0xd413('0x19')];var _0x4960f7=_0x3a9276?_0xa3d254[_0xd413('0x1c')]:_0x57e5e4[_0xd413('0x19')]+_0x57e5e4[_0xd413('0x1b')];var _0x5099de;if(_0x4960f7>=_0x39906e){_0x4960f7=_0x39906e;_0x5099de=0xc8;}else{_0x5099de=0xce;}_0x344839[_0xd413('0x17')](_0x5099de);return _0x344839[_0xd413('0x1d')]('Content-Range',_0x4ee395+'-'+_0x4960f7+'/'+_0x39906e)[_0xd413('0x18')](_0xa3d254);}return null;};}function patchUpdates(_0x4b2985){return function(_0x4c1f39){try{jsonpatch[_0xd413('0x1e')](_0x4c1f39,_0x4b2985,!![]);}catch(_0x23e76a){return BPromise[_0xd413('0x1f')](_0x23e76a);}return _0x4c1f39[_0xd413('0x20')]();};}function saveUpdates(_0x562996,_0xa5e689){return function(_0x1f4d7c){if(_0x1f4d7c){return _0x1f4d7c['update'](_0x562996)[_0xd413('0x21')](function(_0x16232e){return _0x16232e;});}return null;};}function removeEntity(_0x420385,_0x2050c8){return function(_0x99051b){if(_0x99051b){return _0x99051b[_0xd413('0x22')]()[_0xd413('0x21')](function(){_0x420385[_0xd413('0x17')](0xcc)[_0xd413('0x16')]();});}};}function handleEntityNotFound(_0x4fdcdd,_0x2dac23){return function(_0x4163f0){if(!_0x4163f0){_0x4fdcdd[_0xd413('0x15')](0x194);}return _0x4163f0;};}function handleError(_0x4bfa99,_0x3400b6){_0x3400b6=_0x3400b6||0x1f4;return function(_0x1b542c){logger['error'](_0x1b542c[_0xd413('0x23')]);if(_0x1b542c['name']){delete _0x1b542c[_0xd413('0x24')];}_0x4bfa99[_0xd413('0x17')](_0x3400b6)[_0xd413('0x25')](_0x1b542c);};}exports['index']=function(_0x550b7b,_0x23a7e){var _0x11d9db={},_0x263927={},_0x285a08={'count':0x0,'rows':[]};var _0x2d9021=_[_0xd413('0x26')](db[_0xd413('0x27')][_0xd413('0x28')],function(_0x27e7fc){return{'name':_0x27e7fc['fieldName'],'type':_0x27e7fc[_0xd413('0x29')][_0xd413('0x2a')]};});_0x263927[_0xd413('0x2b')]=_[_0xd413('0x26')](_0x2d9021,_0xd413('0x24'));_0x263927['query']=_[_0xd413('0x2c')](_0x550b7b[_0xd413('0x2d')]);_0x263927[_0xd413('0x2e')]=_['intersection'](_0x263927[_0xd413('0x2b')],_0x263927[_0xd413('0x2d')]);_0x11d9db[_0xd413('0x2f')]=_[_0xd413('0x30')](_0x263927['model'],qs[_0xd413('0x31')](_0x550b7b['query'][_0xd413('0x31')]));_0x11d9db['attributes']=_0x11d9db[_0xd413('0x2f')][_0xd413('0x32')]?_0x11d9db['attributes']:_0x263927[_0xd413('0x2b')];if(!_0x550b7b[_0xd413('0x2d')][_0xd413('0x33')](_0xd413('0x34'))){_0x11d9db[_0xd413('0x1b')]=qs[_0xd413('0x1b')](_0x550b7b[_0xd413('0x2d')][_0xd413('0x1b')]);_0x11d9db[_0xd413('0x19')]=qs['offset'](_0x550b7b[_0xd413('0x2d')][_0xd413('0x19')]);}_0x11d9db[_0xd413('0x35')]=qs[_0xd413('0x36')](_0x550b7b[_0xd413('0x2d')]['sort']);_0x11d9db[_0xd413('0x37')]=qs[_0xd413('0x2e')](_[_0xd413('0x38')](_0x550b7b[_0xd413('0x2d')],_0x263927['filters']),_0x2d9021);if(_0x550b7b[_0xd413('0x2d')]['filter']){_0x11d9db[_0xd413('0x37')]=_[_0xd413('0x39')](_0x11d9db[_0xd413('0x37')],{'$or':_[_0xd413('0x26')](_0x2d9021,function(_0x43fa2c){if(_0x43fa2c[_0xd413('0x29')]!=='VIRTUAL'){var _0x1fb5fb={};_0x1fb5fb[_0x43fa2c[_0xd413('0x24')]]={'$like':'%'+_0x550b7b[_0xd413('0x2d')][_0xd413('0x3a')]+'%'};return _0x1fb5fb;}})});}_0x11d9db=_[_0xd413('0x39')]({},_0x11d9db,_0x550b7b[_0xd413('0x3b')]);var _0x5b15fd={'where':_0x11d9db[_0xd413('0x37')]};return db[_0xd413('0x27')][_0xd413('0x1c')](_0x5b15fd)['then'](function(_0x54fa2d){_0x285a08['count']=_0x54fa2d;if(_0x550b7b[_0xd413('0x2d')]['includeAll']){_0x11d9db[_0xd413('0x3c')]=[{'all':!![]}];}return db[_0xd413('0x27')][_0xd413('0x3d')](_0x11d9db);})[_0xd413('0x21')](function(_0x316e59){_0x285a08[_0xd413('0x3e')]=_0x316e59;return _0x285a08;})[_0xd413('0x21')](respondWithFilteredResult(_0x23a7e,_0x11d9db))[_0xd413('0x3f')](handleError(_0x23a7e,null));};exports[_0xd413('0x40')]=function(_0x1c4293,_0x2a95a5){var _0xfdc494={'raw':!![],'where':{'id':_0x1c4293[_0xd413('0x41')]['id']}},_0x2ced89={};_0x2ced89['model']=_[_0xd413('0x2c')](db[_0xd413('0x27')][_0xd413('0x28')]);_0x2ced89[_0xd413('0x2d')]=_['keys'](_0x1c4293[_0xd413('0x2d')]);_0x2ced89['filters']=_[_0xd413('0x30')](_0x2ced89[_0xd413('0x2b')],_0x2ced89[_0xd413('0x2d')]);_0xfdc494[_0xd413('0x2f')]=_[_0xd413('0x30')](_0x2ced89[_0xd413('0x2b')],qs['fields'](_0x1c4293[_0xd413('0x2d')][_0xd413('0x31')]));_0xfdc494[_0xd413('0x2f')]=_0xfdc494[_0xd413('0x2f')][_0xd413('0x32')]?_0xfdc494[_0xd413('0x2f')]:_0x2ced89[_0xd413('0x2b')];if(_0x1c4293[_0xd413('0x2d')][_0xd413('0x42')]){_0xfdc494[_0xd413('0x3c')]=[{'all':!![]}];}_0xfdc494=_[_0xd413('0x39')]({},_0xfdc494,_0x1c4293[_0xd413('0x3b')]);return db['JscriptySessionReport'][_0xd413('0x43')](_0xfdc494)[_0xd413('0x21')](handleEntityNotFound(_0x2a95a5,null))[_0xd413('0x21')](respondWithResult(_0x2a95a5,null))[_0xd413('0x3f')](handleError(_0x2a95a5,null));};exports['create']=function(_0xbc69c1,_0x9fe3f1){return db[_0xd413('0x27')][_0xd413('0x44')](_0xbc69c1['body'],{})['then'](respondWithResult(_0x9fe3f1,0xc9))['catch'](handleError(_0x9fe3f1,null));};exports[_0xd413('0x45')]=function(_0x520992,_0x1a0dae){if(_0x520992['body']['id']){delete _0x520992['body']['id'];}return db[_0xd413('0x27')][_0xd413('0x43')]({'where':{'id':_0x520992[_0xd413('0x41')]['id']}})['then'](handleEntityNotFound(_0x1a0dae,null))['then'](saveUpdates(_0x520992['body'],null))[_0xd413('0x21')](respondWithResult(_0x1a0dae,null))[_0xd413('0x3f')](handleError(_0x1a0dae,null));};exports[_0xd413('0x22')]=function(_0x426610,_0x5e10b1){return db['JscriptySessionReport'][_0xd413('0x43')]({'where':{'id':_0x426610[_0xd413('0x41')]['id']}})[_0xd413('0x21')](handleEntityNotFound(_0x5e10b1,null))[_0xd413('0x21')](removeEntity(_0x5e10b1,null))[_0xd413('0x3f')](handleError(_0x5e10b1,null));};exports['describe']=function(_0x3518d3,_0x4c7859){return db[_0xd413('0x27')][_0xd413('0x46')]()[_0xd413('0x21')](respondWithResult(_0x4c7859,null))[_0xd413('0x3f')](handleError(_0x4c7859,null));};exports[_0xd413('0x47')]=function(_0x2ddbd7,_0xa4c113,_0x141e79){var _0x360d9d={'raw':!![],'where':{}};var _0x323e02={};var _0x27aa15={'count':0x0,'rows':[]};return db['JscriptySessionReport'][_0xd413('0x48')]({'where':{'id':_0x2ddbd7[_0xd413('0x41')]['id']}})['then'](handleEntityNotFound(_0xa4c113,null))['then'](function(_0x678df9){if(_0x678df9){_0x323e02[_0xd413('0x2b')]=_[_0xd413('0x2c')](db['JscriptyQuestionReport'][_0xd413('0x28')]);_0x323e02[_0xd413('0x2d')]=_[_0xd413('0x2c')](_0x2ddbd7[_0xd413('0x2d')]);_0x323e02['filters']=_[_0xd413('0x30')](_0x323e02[_0xd413('0x2b')],_0x323e02[_0xd413('0x2d')]);_0x360d9d[_0xd413('0x2f')]=_[_0xd413('0x30')](_0x323e02[_0xd413('0x2b')],qs[_0xd413('0x31')](_0x2ddbd7[_0xd413('0x2d')][_0xd413('0x31')]));_0x360d9d['attributes']=_0x360d9d[_0xd413('0x2f')][_0xd413('0x32')]?_0x360d9d[_0xd413('0x2f')]:_0x323e02[_0xd413('0x2b')];if(!_0x2ddbd7['query'][_0xd413('0x33')](_0xd413('0x34'))){_0x360d9d[_0xd413('0x1b')]=qs['limit'](_0x2ddbd7['query'][_0xd413('0x1b')]);_0x360d9d[_0xd413('0x19')]=qs['offset'](_0x2ddbd7[_0xd413('0x2d')]['offset']);}_0x360d9d['order']=qs[_0xd413('0x36')](_0x2ddbd7[_0xd413('0x2d')][_0xd413('0x36')]);_0x360d9d[_0xd413('0x37')]=qs[_0xd413('0x2e')](_[_0xd413('0x38')](_0x2ddbd7[_0xd413('0x2d')],_0x323e02[_0xd413('0x2e')]));_0x360d9d['where'][_0xd413('0x49')]=_0x678df9['id'];if(_0x2ddbd7['query']['filter']){_0x360d9d[_0xd413('0x37')]=_[_0xd413('0x39')](_0x360d9d[_0xd413('0x37')],{'$or':_[_0xd413('0x26')](_0x360d9d['attributes'],function(_0x21527c){var _0x47d548={};_0x47d548[_0x21527c]={'$like':'%'+_0x2ddbd7[_0xd413('0x2d')]['filter']+'%'};return _0x47d548;})});}_0x360d9d=_[_0xd413('0x39')]({},_0x360d9d,_0x2ddbd7['options']);return db[_0xd413('0x4a')][_0xd413('0x1c')]({'where':_0x360d9d['where']})[_0xd413('0x21')](function(_0x31cee5){_0x27aa15['count']=_0x31cee5;if(_0x2ddbd7[_0xd413('0x2d')][_0xd413('0x42')]){_0x360d9d[_0xd413('0x3c')]=[{'all':!![]}];}return db['JscriptyQuestionReport'][_0xd413('0x3d')](_0x360d9d);})[_0xd413('0x21')](function(_0x21d9f1){_0x27aa15[_0xd413('0x3e')]=_0x21d9f1;return _0x27aa15;});}})['then'](respondWithFilteredResult(_0xa4c113,_0x360d9d))[_0xd413('0x3f')](handleError(_0xa4c113,null));};
\ No newline at end of file
+var _0xd3d9=['body','destroy','describe','findOne','nolimit','SessionId','JscriptyQuestionReport','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','then','error','stack','name','send','map','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','JscriptySessionReport','include','findAll','rows','catch','show','params','rawAttributes','includeAll','find','create'];(function(_0x238acd,_0x1ec75c){var _0x9dc34b=function(_0x5ea204){while(--_0x5ea204){_0x238acd['push'](_0x238acd['shift']());}};_0x9dc34b(++_0x1ec75c);}(_0xd3d9,0x192));var _0x9d3d=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0xd3d9[_0xfae23b];return _0x200640;};'use strict';var emlformat=require(_0x9d3d('0x0'));var rimraf=require(_0x9d3d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9d3d('0x2'));var rp=require(_0x9d3d('0x3'));var moment=require(_0x9d3d('0x4'));var BPromise=require(_0x9d3d('0x5'));var Mustache=require('mustache');var util=require(_0x9d3d('0x6'));var path=require(_0x9d3d('0x7'));var sox=require(_0x9d3d('0x8'));var csv=require(_0x9d3d('0x9'));var ejs=require(_0x9d3d('0xa'));var fs=require('fs');var fs_extra=require(_0x9d3d('0xb'));var _=require(_0x9d3d('0xc'));var squel=require('squel');var crypto=require(_0x9d3d('0xd'));var jsforce=require(_0x9d3d('0xe'));var deskjs=require(_0x9d3d('0xf'));var toCsv=require(_0x9d3d('0x9'));var querystring=require(_0x9d3d('0x10'));var Papa=require(_0x9d3d('0x11'));var Redis=require(_0x9d3d('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x9d3d('0x13'));var hardwareService=require(_0x9d3d('0x14'));var logger=require(_0x9d3d('0x15'))('api');var utils=require(_0x9d3d('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x9d3d('0x17'));var db=require(_0x9d3d('0x18'))['db'];function respondWithStatusCode(_0x571e07,_0x2c536b){_0x2c536b=_0x2c536b||0xcc;return function(_0x1a3b79){if(_0x1a3b79){return _0x571e07[_0x9d3d('0x19')](_0x2c536b);}return _0x571e07[_0x9d3d('0x1a')](_0x2c536b)['end']();};}function respondWithResult(_0x4bbb05,_0x4a80ac){_0x4a80ac=_0x4a80ac||0xc8;return function(_0xb92b37){if(_0xb92b37){return _0x4bbb05[_0x9d3d('0x1a')](_0x4a80ac)['json'](_0xb92b37);}};}function respondWithFilteredResult(_0x943ef1,_0x5ba29d){return function(_0x305e97){if(_0x305e97){var _0x3ff055=typeof _0x5ba29d[_0x9d3d('0x1b')]==='undefined'&&typeof _0x5ba29d[_0x9d3d('0x1c')]===_0x9d3d('0x1d');var _0x2495ed=_0x305e97[_0x9d3d('0x1e')];var _0x207f2f=_0x3ff055?0x0:_0x5ba29d[_0x9d3d('0x1b')];var _0x5897bf=_0x3ff055?_0x305e97[_0x9d3d('0x1e')]:_0x5ba29d[_0x9d3d('0x1b')]+_0x5ba29d[_0x9d3d('0x1c')];var _0x420d75;if(_0x5897bf>=_0x2495ed){_0x5897bf=_0x2495ed;_0x420d75=0xc8;}else{_0x420d75=0xce;}_0x943ef1[_0x9d3d('0x1a')](_0x420d75);return _0x943ef1[_0x9d3d('0x1f')](_0x9d3d('0x20'),_0x207f2f+'-'+_0x5897bf+'/'+_0x2495ed)[_0x9d3d('0x21')](_0x305e97);}return null;};}function patchUpdates(_0x5c9c2e){return function(_0x4760e1){try{jsonpatch[_0x9d3d('0x22')](_0x4760e1,_0x5c9c2e,!![]);}catch(_0x369083){return BPromise[_0x9d3d('0x23')](_0x369083);}return _0x4760e1[_0x9d3d('0x24')]();};}function saveUpdates(_0xf59fb8,_0x247d51){return function(_0x5513dd){if(_0x5513dd){return _0x5513dd['update'](_0xf59fb8)[_0x9d3d('0x25')](function(_0x2efe77){return _0x2efe77;});}return null;};}function removeEntity(_0x5a7785,_0x42e46a){return function(_0x20a8bb){if(_0x20a8bb){return _0x20a8bb['destroy']()[_0x9d3d('0x25')](function(){_0x5a7785[_0x9d3d('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x262e45,_0x16bfbc){return function(_0x4a3fbc){if(!_0x4a3fbc){_0x262e45[_0x9d3d('0x19')](0x194);}return _0x4a3fbc;};}function handleError(_0x3a0cc6,_0x25b7c2){_0x25b7c2=_0x25b7c2||0x1f4;return function(_0x161eef){logger[_0x9d3d('0x26')](_0x161eef[_0x9d3d('0x27')]);if(_0x161eef['name']){delete _0x161eef[_0x9d3d('0x28')];}_0x3a0cc6['status'](_0x25b7c2)[_0x9d3d('0x29')](_0x161eef);};}exports['index']=function(_0x4f8d89,_0x53ff32){var _0x58c738={},_0x18e3fe={},_0x5a39c4={'count':0x0,'rows':[]};var _0x23d5da=_[_0x9d3d('0x2a')](db['JscriptySessionReport']['rawAttributes'],function(_0x277573){return{'name':_0x277573[_0x9d3d('0x2b')],'type':_0x277573[_0x9d3d('0x2c')]['key']};});_0x18e3fe['model']=_[_0x9d3d('0x2a')](_0x23d5da,'name');_0x18e3fe[_0x9d3d('0x2d')]=_[_0x9d3d('0x2e')](_0x4f8d89[_0x9d3d('0x2d')]);_0x18e3fe[_0x9d3d('0x2f')]=_[_0x9d3d('0x30')](_0x18e3fe[_0x9d3d('0x31')],_0x18e3fe[_0x9d3d('0x2d')]);_0x58c738[_0x9d3d('0x32')]=_[_0x9d3d('0x30')](_0x18e3fe['model'],qs[_0x9d3d('0x33')](_0x4f8d89[_0x9d3d('0x2d')][_0x9d3d('0x33')]));_0x58c738['attributes']=_0x58c738['attributes'][_0x9d3d('0x34')]?_0x58c738[_0x9d3d('0x32')]:_0x18e3fe['model'];if(!_0x4f8d89[_0x9d3d('0x2d')][_0x9d3d('0x35')]('nolimit')){_0x58c738[_0x9d3d('0x1c')]=qs['limit'](_0x4f8d89[_0x9d3d('0x2d')]['limit']);_0x58c738[_0x9d3d('0x1b')]=qs[_0x9d3d('0x1b')](_0x4f8d89[_0x9d3d('0x2d')]['offset']);}_0x58c738[_0x9d3d('0x36')]=qs[_0x9d3d('0x37')](_0x4f8d89['query']['sort']);_0x58c738[_0x9d3d('0x38')]=qs['filters'](_[_0x9d3d('0x39')](_0x4f8d89['query'],_0x18e3fe[_0x9d3d('0x2f')]),_0x23d5da);if(_0x4f8d89[_0x9d3d('0x2d')][_0x9d3d('0x3a')]){_0x58c738[_0x9d3d('0x38')]=_[_0x9d3d('0x3b')](_0x58c738[_0x9d3d('0x38')],{'$or':_[_0x9d3d('0x2a')](_0x23d5da,function(_0x566880){if(_0x566880['type']!=='VIRTUAL'){var _0x8801b4={};_0x8801b4[_0x566880[_0x9d3d('0x28')]]={'$like':'%'+_0x4f8d89['query']['filter']+'%'};return _0x8801b4;}})});}_0x58c738=_['merge']({},_0x58c738,_0x4f8d89[_0x9d3d('0x3c')]);var _0x2dc501={'where':_0x58c738[_0x9d3d('0x38')]};return db[_0x9d3d('0x3d')][_0x9d3d('0x1e')](_0x2dc501)['then'](function(_0x22d932){_0x5a39c4[_0x9d3d('0x1e')]=_0x22d932;if(_0x4f8d89[_0x9d3d('0x2d')]['includeAll']){_0x58c738[_0x9d3d('0x3e')]=[{'all':!![]}];}return db[_0x9d3d('0x3d')][_0x9d3d('0x3f')](_0x58c738);})['then'](function(_0x49d76c){_0x5a39c4[_0x9d3d('0x40')]=_0x49d76c;return _0x5a39c4;})[_0x9d3d('0x25')](respondWithFilteredResult(_0x53ff32,_0x58c738))[_0x9d3d('0x41')](handleError(_0x53ff32,null));};exports[_0x9d3d('0x42')]=function(_0x5ba441,_0x49053d){var _0x23ac46={'raw':!![],'where':{'id':_0x5ba441[_0x9d3d('0x43')]['id']}},_0x283fa0={};_0x283fa0['model']=_[_0x9d3d('0x2e')](db['JscriptySessionReport'][_0x9d3d('0x44')]);_0x283fa0['query']=_['keys'](_0x5ba441[_0x9d3d('0x2d')]);_0x283fa0[_0x9d3d('0x2f')]=_[_0x9d3d('0x30')](_0x283fa0[_0x9d3d('0x31')],_0x283fa0[_0x9d3d('0x2d')]);_0x23ac46[_0x9d3d('0x32')]=_[_0x9d3d('0x30')](_0x283fa0['model'],qs[_0x9d3d('0x33')](_0x5ba441[_0x9d3d('0x2d')][_0x9d3d('0x33')]));_0x23ac46[_0x9d3d('0x32')]=_0x23ac46[_0x9d3d('0x32')][_0x9d3d('0x34')]?_0x23ac46[_0x9d3d('0x32')]:_0x283fa0['model'];if(_0x5ba441['query'][_0x9d3d('0x45')]){_0x23ac46[_0x9d3d('0x3e')]=[{'all':!![]}];}_0x23ac46=_['merge']({},_0x23ac46,_0x5ba441['options']);return db[_0x9d3d('0x3d')][_0x9d3d('0x46')](_0x23ac46)[_0x9d3d('0x25')](handleEntityNotFound(_0x49053d,null))[_0x9d3d('0x25')](respondWithResult(_0x49053d,null))['catch'](handleError(_0x49053d,null));};exports[_0x9d3d('0x47')]=function(_0x260cbd,_0x2d7725){return db['JscriptySessionReport'][_0x9d3d('0x47')](_0x260cbd[_0x9d3d('0x48')],{})[_0x9d3d('0x25')](respondWithResult(_0x2d7725,0xc9))[_0x9d3d('0x41')](handleError(_0x2d7725,null));};exports['update']=function(_0x415314,_0x5a13ba){if(_0x415314[_0x9d3d('0x48')]['id']){delete _0x415314['body']['id'];}return db[_0x9d3d('0x3d')]['find']({'where':{'id':_0x415314['params']['id']}})['then'](handleEntityNotFound(_0x5a13ba,null))[_0x9d3d('0x25')](saveUpdates(_0x415314[_0x9d3d('0x48')],null))[_0x9d3d('0x25')](respondWithResult(_0x5a13ba,null))['catch'](handleError(_0x5a13ba,null));};exports[_0x9d3d('0x49')]=function(_0x213fb2,_0x584231){return db[_0x9d3d('0x3d')][_0x9d3d('0x46')]({'where':{'id':_0x213fb2[_0x9d3d('0x43')]['id']}})[_0x9d3d('0x25')](handleEntityNotFound(_0x584231,null))[_0x9d3d('0x25')](removeEntity(_0x584231,null))[_0x9d3d('0x41')](handleError(_0x584231,null));};exports['describe']=function(_0x4377f1,_0x52445f){return db[_0x9d3d('0x3d')][_0x9d3d('0x4a')]()['then'](respondWithResult(_0x52445f,null))['catch'](handleError(_0x52445f,null));};exports['getQuestions']=function(_0x9a3896,_0x4991a3,_0x284b5){var _0x4de18={'raw':!![],'where':{}};var _0x4cac38={};var _0x5b697e={'count':0x0,'rows':[]};return db['JscriptySessionReport'][_0x9d3d('0x4b')]({'where':{'id':_0x9a3896[_0x9d3d('0x43')]['id']}})[_0x9d3d('0x25')](handleEntityNotFound(_0x4991a3,null))['then'](function(_0x1b7046){if(_0x1b7046){_0x4cac38[_0x9d3d('0x31')]=_[_0x9d3d('0x2e')](db['JscriptyQuestionReport'][_0x9d3d('0x44')]);_0x4cac38['query']=_['keys'](_0x9a3896[_0x9d3d('0x2d')]);_0x4cac38[_0x9d3d('0x2f')]=_[_0x9d3d('0x30')](_0x4cac38[_0x9d3d('0x31')],_0x4cac38[_0x9d3d('0x2d')]);_0x4de18[_0x9d3d('0x32')]=_['intersection'](_0x4cac38[_0x9d3d('0x31')],qs[_0x9d3d('0x33')](_0x9a3896[_0x9d3d('0x2d')]['fields']));_0x4de18[_0x9d3d('0x32')]=_0x4de18[_0x9d3d('0x32')]['length']?_0x4de18[_0x9d3d('0x32')]:_0x4cac38[_0x9d3d('0x31')];if(!_0x9a3896[_0x9d3d('0x2d')][_0x9d3d('0x35')](_0x9d3d('0x4c'))){_0x4de18[_0x9d3d('0x1c')]=qs[_0x9d3d('0x1c')](_0x9a3896[_0x9d3d('0x2d')]['limit']);_0x4de18['offset']=qs[_0x9d3d('0x1b')](_0x9a3896[_0x9d3d('0x2d')][_0x9d3d('0x1b')]);}_0x4de18[_0x9d3d('0x36')]=qs[_0x9d3d('0x37')](_0x9a3896[_0x9d3d('0x2d')][_0x9d3d('0x37')]);_0x4de18[_0x9d3d('0x38')]=qs[_0x9d3d('0x2f')](_[_0x9d3d('0x39')](_0x9a3896[_0x9d3d('0x2d')],_0x4cac38[_0x9d3d('0x2f')]));_0x4de18[_0x9d3d('0x38')][_0x9d3d('0x4d')]=_0x1b7046['id'];if(_0x9a3896[_0x9d3d('0x2d')][_0x9d3d('0x3a')]){_0x4de18[_0x9d3d('0x38')]=_['merge'](_0x4de18[_0x9d3d('0x38')],{'$or':_[_0x9d3d('0x2a')](_0x4de18['attributes'],function(_0x9e40aa){var _0x3d54a1={};_0x3d54a1[_0x9e40aa]={'$like':'%'+_0x9a3896['query'][_0x9d3d('0x3a')]+'%'};return _0x3d54a1;})});}_0x4de18=_['merge']({},_0x4de18,_0x9a3896[_0x9d3d('0x3c')]);return db[_0x9d3d('0x4e')][_0x9d3d('0x1e')]({'where':_0x4de18[_0x9d3d('0x38')]})[_0x9d3d('0x25')](function(_0x34412f){_0x5b697e[_0x9d3d('0x1e')]=_0x34412f;if(_0x9a3896[_0x9d3d('0x2d')][_0x9d3d('0x45')]){_0x4de18['include']=[{'all':!![]}];}return db[_0x9d3d('0x4e')][_0x9d3d('0x3f')](_0x4de18);})[_0x9d3d('0x25')](function(_0x3167b9){_0x5b697e[_0x9d3d('0x40')]=_0x3167b9;return _0x5b697e;});}})[_0x9d3d('0x25')](respondWithFilteredResult(_0x4991a3,_0x4de18))[_0x9d3d('0x41')](handleError(_0x4991a3,null));};
\ No newline at end of file
index 93ac392..19e3fa7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptySessionReport.attributes','exports','define','JscriptySessionReport'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x10fac0,_0x59160c){_0x10fac0=_0x10fac0-0x0;var _0x22bc13=_0x7fbe[_0x10fac0];return _0x22bc13;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe7fb('0x0'))(_0xe7fb('0x1'));var moment=require(_0xe7fb('0x2'));var BPromise=require(_0xe7fb('0x3'));var rp=require(_0xe7fb('0x4'));var fs=require('fs');var path=require(_0xe7fb('0x5'));var rimraf=require(_0xe7fb('0x6'));var config=require(_0xe7fb('0x7'));var attributes=require(_0xe7fb('0x8'));module[_0xe7fb('0x9')]=function(_0x290172,_0x12d1b0){return _0x290172[_0xe7fb('0xa')](_0xe7fb('0xb'),attributes,{'tableName':'report_jscripty_sessions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2bd8=['./jscriptySessionReport.attributes','exports','define','JscriptySessionReport','report_jscripty_sessions','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x33654f,_0x1313a8){var _0x1e01b4=function(_0x162879){while(--_0x162879){_0x33654f['push'](_0x33654f['shift']());}};_0x1e01b4(++_0x1313a8);}(_0x2bd8,0x130));var _0x82bd=function(_0x2b49e3,_0x33a778){_0x2b49e3=_0x2b49e3-0x0;var _0xcb731=_0x2bd8[_0x2b49e3];return _0xcb731;};'use strict';var _=require(_0x82bd('0x0'));var util=require('util');var logger=require(_0x82bd('0x1'))(_0x82bd('0x2'));var moment=require(_0x82bd('0x3'));var BPromise=require(_0x82bd('0x4'));var rp=require(_0x82bd('0x5'));var fs=require('fs');var path=require(_0x82bd('0x6'));var rimraf=require(_0x82bd('0x7'));var config=require('../../config/environment');var attributes=require(_0x82bd('0x8'));module[_0x82bd('0x9')]=function(_0x3bf810,_0x5ceb60){return _0x3bf810[_0x82bd('0xa')](_0x82bd('0xb'),attributes,{'tableName':_0x82bd('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3484201..cf53fb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01d9=['../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0xcf453a,_0x788f30){var _0x5dcd13=function(_0x4844c1){while(--_0x4844c1){_0xcf453a['push'](_0xcf453a['shift']());}};_0x5dcd13(++_0x788f30);}(_0x01d9,0x6c));var _0x901d=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x01d9[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x901d('0x0'));var util=require(_0x901d('0x1'));var moment=require(_0x901d('0x2'));var BPromise=require(_0x901d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x901d('0x4'));var db=require(_0x901d('0x5'))['db'];var utils=require(_0x901d('0x6'));var logger=require(_0x901d('0x7'))(_0x901d('0x8'));var config=require(_0x901d('0x9'));var jayson=require(_0x901d('0xa'));var client=jayson['client'][_0x901d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x6c9ac8,_0x21e1d7,_0x12c39f){return new BPromise(function(_0x313f85,_0x39fc94){return client[_0x901d('0xc')](_0x6c9ac8,_0x12c39f)[_0x901d('0xd')](function(_0x15076e){logger[_0x901d('0xe')](_0x901d('0xf'),_0x21e1d7,_0x901d('0x10'));logger[_0x901d('0x11')]('JscriptySessionReport,\x20%s,\x20%s,\x20%s',_0x21e1d7,_0x901d('0x10'),JSON['stringify'](_0x15076e));if(_0x15076e[_0x901d('0x12')]){if(_0x15076e[_0x901d('0x12')][_0x901d('0x13')]===0x1f4){logger[_0x901d('0x12')](_0x901d('0xf'),_0x21e1d7,_0x15076e['error'][_0x901d('0x14')]);return _0x39fc94(_0x15076e[_0x901d('0x12')][_0x901d('0x14')]);}logger[_0x901d('0x12')](_0x901d('0xf'),_0x21e1d7,_0x15076e[_0x901d('0x12')]['message']);return _0x313f85(_0x15076e[_0x901d('0x12')][_0x901d('0x14')]);}else{logger[_0x901d('0xe')](_0x901d('0xf'),_0x21e1d7,_0x901d('0x10'));_0x313f85(_0x15076e[_0x901d('0x15')][_0x901d('0x14')]);}})[_0x901d('0x16')](function(_0x3368fc){logger[_0x901d('0x12')](_0x901d('0xf'),_0x21e1d7,_0x3368fc);_0x39fc94(_0x3368fc);});});}
\ No newline at end of file
+var _0x27a0=['message','util','moment','bluebird','randomstring','ioredis','../../config/environment','jayson/promise','client','http','request','info','JscriptySessionReport,\x20%s,\x20%s','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x40d04c,_0x1502a3){var _0x2ed53a=function(_0x40e8a4){while(--_0x40e8a4){_0x40d04c['push'](_0x40d04c['shift']());}};_0x2ed53a(++_0x1502a3);}(_0x27a0,0xbf));var _0x027a=function(_0x5a0259,_0x21ca8c){_0x5a0259=_0x5a0259-0x0;var _0x34b1d4=_0x27a0[_0x5a0259];return _0x34b1d4;};'use strict';var _=require('lodash');var util=require(_0x027a('0x0'));var moment=require(_0x027a('0x1'));var BPromise=require(_0x027a('0x2'));var rs=require(_0x027a('0x3'));var fs=require('fs');var Redis=require(_0x027a('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x027a('0x5'));var jayson=require(_0x027a('0x6'));var client=jayson[_0x027a('0x7')][_0x027a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xe233ed,_0x3c7d67,_0x550fbb){return new BPromise(function(_0x3d1429,_0x271dfe){return client[_0x027a('0x9')](_0xe233ed,_0x550fbb)['then'](function(_0x44c56a){logger[_0x027a('0xa')](_0x027a('0xb'),_0x3c7d67,'request\x20sent');logger[_0x027a('0xc')](_0x027a('0xd'),_0x3c7d67,_0x027a('0xe'),JSON[_0x027a('0xf')](_0x44c56a));if(_0x44c56a[_0x027a('0x10')]){if(_0x44c56a[_0x027a('0x10')][_0x027a('0x11')]===0x1f4){logger[_0x027a('0x10')](_0x027a('0xb'),_0x3c7d67,_0x44c56a[_0x027a('0x10')][_0x027a('0x12')]);return _0x271dfe(_0x44c56a['error'][_0x027a('0x12')]);}logger[_0x027a('0x10')](_0x027a('0xb'),_0x3c7d67,_0x44c56a[_0x027a('0x10')][_0x027a('0x12')]);return _0x3d1429(_0x44c56a['error']['message']);}else{logger[_0x027a('0xa')]('JscriptySessionReport,\x20%s,\x20%s',_0x3c7d67,_0x027a('0xe'));_0x3d1429(_0x44c56a['result'][_0x027a('0x12')]);}})['catch'](function(_0x4dc3ab){logger['error'](_0x027a('0xb'),_0x3c7d67,_0x4dc3ab);_0x271dfe(_0x4dc3ab);});});}
\ No newline at end of file
index 0fefb86..ca9d19e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b69=['../../components/auth/service','../../components/interaction/service','./license.controller','get','/:id','isAuthenticated','/download_log_file','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x36123a,_0x37ce40){var _0x4f40ae=function(_0x3aabee){while(--_0x3aabee){_0x36123a['push'](_0x36123a['shift']());}};_0x4f40ae(++_0x37ce40);}(_0x4b69,0x107));var _0x94b6=function(_0x41cf07,_0x18b087){_0x41cf07=_0x41cf07-0x0;var _0x54e273=_0x4b69[_0x41cf07];return _0x54e273;};'use strict';var multer=require(_0x94b6('0x0'));var util=require(_0x94b6('0x1'));var path=require(_0x94b6('0x2'));var timeout=require(_0x94b6('0x3'));var express=require(_0x94b6('0x4'));var router=express[_0x94b6('0x5')]();var fs_extra=require(_0x94b6('0x6'));var auth=require(_0x94b6('0x7'));var interaction=require(_0x94b6('0x8'));var config=require('../../config/environment');var controller=require(_0x94b6('0x9'));router[_0x94b6('0xa')]('/',controller['index']);router['put'](_0x94b6('0xb'),auth[_0x94b6('0xc')](),controller['update']);router['get'](_0x94b6('0xd'),auth[_0x94b6('0xc')](),controller['downloadLogFile']);module[_0x94b6('0xe')]=router;
\ No newline at end of file
+var _0x5186=['connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./license.controller','get','index','put','isAuthenticated','update','multer','util','path'];(function(_0x22589f,_0x3f33b7){var _0x4b1e54=function(_0x301401){while(--_0x301401){_0x22589f['push'](_0x22589f['shift']());}};_0x4b1e54(++_0x3f33b7);}(_0x5186,0x14d));var _0x6518=function(_0x787bb7,_0x2243ea){_0x787bb7=_0x787bb7-0x0;var _0x585e1a=_0x5186[_0x787bb7];return _0x585e1a;};'use strict';var multer=require(_0x6518('0x0'));var util=require(_0x6518('0x1'));var path=require(_0x6518('0x2'));var timeout=require(_0x6518('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x6518('0x4'));var auth=require(_0x6518('0x5'));var interaction=require(_0x6518('0x6'));var config=require(_0x6518('0x7'));var controller=require(_0x6518('0x8'));router[_0x6518('0x9')]('/',controller[_0x6518('0xa')]);router[_0x6518('0xb')]('/:id',auth[_0x6518('0xc')](),controller[_0x6518('0xd')]);router[_0x6518('0x9')]('/download_log_file',auth[_0x6518('0xc')](),controller['downloadLogFile']);module['exports']=router;
\ No newline at end of file
index 919a99e..b6995cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fff=['TEXT','STRING','INTEGER','sequelize','exports'];(function(_0x172660,_0x260d9b){var _0x83204f=function(_0x4d6c80){while(--_0x4d6c80){_0x172660['push'](_0x172660['shift']());}};_0x83204f(++_0x260d9b);}(_0x6fff,0x1bb));var _0xf6ff=function(_0x4c6110,_0x3391bc){_0x4c6110=_0x4c6110-0x0;var _0x41c4d8=_0x6fff[_0x4c6110];return _0x41c4d8;};'use strict';var Sequelize=require(_0xf6ff('0x0'));module[_0xf6ff('0x1')]={'license':{'type':Sequelize[_0xf6ff('0x2')]},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0xf6ff('0x3')]},'chatLicenseExceeded':{'type':Sequelize[_0xf6ff('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x33d4=['exports','STRING','sequelize'];(function(_0x57c677,_0x2f3c30){var _0x12c1c4=function(_0x4c3391){while(--_0x4c3391){_0x57c677['push'](_0x57c677['shift']());}};_0x12c1c4(++_0x2f3c30);}(_0x33d4,0x92));var _0x433d=function(_0x238f44,_0xd51cf2){_0x238f44=_0x238f44-0x0;var _0x278bf6=_0x33d4[_0x238f44];return _0x278bf6;};'use strict';var Sequelize=require(_0x433d('0x0'));module[_0x433d('0x1')]={'license':{'type':Sequelize['TEXT']},'data1':{'type':Sequelize[_0x433d('0x2')]},'data2':{'type':Sequelize[_0x433d('0x2')]},'chatLicenseExceeded':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 73f102d..3cc4ef9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2171=['apply','update','destroy','then','sendStatus','stack','name','send','index','License','rawAttributes','query','intersection','model','attributes','fields','merge','options','getLicense','catch','body','params','get','license-info.log','join','/var','log','xcally','setHeader','attachment;\x20filename=','Content-Type','text/plain','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','limit','count','Content-Range'];(function(_0x4e0103,_0x49a31d){var _0xf7baa=function(_0x371c6b){while(--_0x371c6b){_0x4e0103['push'](_0x4e0103['shift']());}};_0xf7baa(++_0x49a31d);}(_0x2171,0xa5));var _0x1217=function(_0xa9b36e,_0x2ea8c8){_0xa9b36e=_0xa9b36e-0x0;var _0x297bad=_0x2171[_0xa9b36e];return _0x297bad;};'use strict';var emlformat=require(_0x1217('0x0'));var rimraf=require(_0x1217('0x1'));var zipdir=require(_0x1217('0x2'));var jsonpatch=require(_0x1217('0x3'));var rp=require(_0x1217('0x4'));var moment=require(_0x1217('0x5'));var BPromise=require(_0x1217('0x6'));var Mustache=require(_0x1217('0x7'));var util=require(_0x1217('0x8'));var path=require(_0x1217('0x9'));var sox=require(_0x1217('0xa'));var csv=require('to-csv');var ejs=require(_0x1217('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1217('0xc'));var squel=require('squel');var crypto=require(_0x1217('0xd'));var jsforce=require(_0x1217('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x1217('0xf'));var querystring=require(_0x1217('0x10'));var Papa=require(_0x1217('0x11'));var Redis=require(_0x1217('0x12'));var authService=require(_0x1217('0x13'));var qs=require(_0x1217('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1217('0x15'));var logger=require('../../config/logger')(_0x1217('0x16'));var utils=require(_0x1217('0x17'));var config=require(_0x1217('0x18'));var licenseUtil=require(_0x1217('0x19'));var db=require(_0x1217('0x1a'))['db'];function respondWithStatusCode(_0x52c8f2,_0x4fb67d){_0x4fb67d=_0x4fb67d||0xcc;return function(_0x171dd){if(_0x171dd){return _0x52c8f2['sendStatus'](_0x4fb67d);}return _0x52c8f2[_0x1217('0x1b')](_0x4fb67d)['end']();};}function respondWithResult(_0x102b91,_0x4b3f79){_0x4b3f79=_0x4b3f79||0xc8;return function(_0x1c1651){if(_0x1c1651){return _0x102b91[_0x1217('0x1b')](_0x4b3f79)['json'](_0x1c1651);}};}function respondWithFilteredResult(_0xfd841e,_0x2a063b){return function(_0xfc39cd){if(_0xfc39cd){var _0x5012be=typeof _0x2a063b[_0x1217('0x1c')]===_0x1217('0x1d')&&typeof _0x2a063b[_0x1217('0x1e')]==='undefined';var _0x24863d=_0xfc39cd[_0x1217('0x1f')];var _0x47e6cd=_0x5012be?0x0:_0x2a063b['offset'];var _0x3f84f7=_0x5012be?_0xfc39cd[_0x1217('0x1f')]:_0x2a063b['offset']+_0x2a063b['limit'];var _0x24e855;if(_0x3f84f7>=_0x24863d){_0x3f84f7=_0x24863d;_0x24e855=0xc8;}else{_0x24e855=0xce;}_0xfd841e['status'](_0x24e855);return _0xfd841e['set'](_0x1217('0x20'),_0x47e6cd+'-'+_0x3f84f7+'/'+_0x24863d)['json'](_0xfc39cd);}return null;};}function patchUpdates(_0x3521d4){return function(_0x2fe4fe){try{jsonpatch[_0x1217('0x21')](_0x2fe4fe,_0x3521d4,!![]);}catch(_0x5a7e78){return BPromise['reject'](_0x5a7e78);}return _0x2fe4fe['save']();};}function saveUpdates(_0xe71764,_0x49acef){return function(_0x4014f7){if(_0x4014f7){return _0x4014f7[_0x1217('0x22')](_0xe71764)['then'](function(_0x9aa503){return _0x9aa503;});}return null;};}function removeEntity(_0x18cc3d,_0xa91f6b){return function(_0x42eddc){if(_0x42eddc){return _0x42eddc[_0x1217('0x23')]()[_0x1217('0x24')](function(){_0x18cc3d['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ae00c,_0x96f6ad){return function(_0x3b2500){if(!_0x3b2500){_0x1ae00c[_0x1217('0x25')](0x194);}return _0x3b2500;};}function handleError(_0x423135,_0x193abc){_0x193abc=_0x193abc||0x1f4;return function(_0x3085a2){logger['error'](_0x3085a2[_0x1217('0x26')]);if(_0x3085a2[_0x1217('0x27')]){delete _0x3085a2[_0x1217('0x27')];}_0x423135[_0x1217('0x1b')](_0x193abc)[_0x1217('0x28')](_0x3085a2);};}var utilLicense=require('../../config/license/util');exports[_0x1217('0x29')]=function(_0x43be65,_0x4b5f04){var _0x11ecbe={'raw':!![],'where':{'id':0x1}},_0x7ac326={};_0x7ac326['model']=_['keys'](db[_0x1217('0x2a')][_0x1217('0x2b')]);_0x7ac326[_0x1217('0x2c')]=_['keys'](_0x43be65[_0x1217('0x2c')]);_0x7ac326['filters']=_[_0x1217('0x2d')](_0x7ac326[_0x1217('0x2e')],_0x7ac326[_0x1217('0x2c')]);_0x11ecbe[_0x1217('0x2f')]=_[_0x1217('0x2d')](_0x7ac326[_0x1217('0x2e')],qs[_0x1217('0x30')](_0x43be65[_0x1217('0x2c')][_0x1217('0x30')]));_0x11ecbe[_0x1217('0x2f')]=_0x11ecbe['attributes']['length']?_0x11ecbe[_0x1217('0x2f')]:_0x7ac326[_0x1217('0x2e')];_0x11ecbe=_[_0x1217('0x31')]({},_0x11ecbe,_0x43be65[_0x1217('0x32')]);return utilLicense[_0x1217('0x33')](_0x11ecbe)[_0x1217('0x24')](respondWithResult(_0x4b5f04,null))[_0x1217('0x34')](handleError(_0x4b5f04,null));};exports[_0x1217('0x22')]=function(_0x29d5db,_0x37f502){if(_0x29d5db[_0x1217('0x35')]['id']){delete _0x29d5db['body']['id'];}return db[_0x1217('0x2a')]['find']({'where':{'id':_0x29d5db[_0x1217('0x36')]['id']}})['then'](handleEntityNotFound(_0x37f502,null))[_0x1217('0x24')](function(_0x5a4937){var _0x391c9c=_0x5a4937[_0x1217('0x37')]({'plain':!![]});return utilLicense['checkLicense'](_0x391c9c,_0x29d5db[_0x1217('0x35')]['key']);})[_0x1217('0x24')](function(_0x588c78){if(!_0x588c78['demo']){return saveUpdates(_0x29d5db[_0x1217('0x35')],null);}return _0x588c78;})[_0x1217('0x24')](respondWithResult(_0x37f502,null))[_0x1217('0x34')](handleError(_0x37f502,null));};exports['downloadLogFile']=function(_0xb2bfbe,_0x5cb31c){var _0x8b885=_0x1217('0x38');var _0x465fd2=path[_0x1217('0x39')](_0x1217('0x3a'),_0x1217('0x3b'),_0x1217('0x3c'),_0x8b885);_0x5cb31c[_0x1217('0x3d')]('Content-disposition',_0x1217('0x3e')+_0x8b885);_0x5cb31c['set'](_0x1217('0x3f'),_0x1217('0x40'));_0x5cb31c[_0x1217('0x41')](_0x465fd2);};
\ No newline at end of file
+var _0x8bfc=['catch','downloadLogFile','join','/var','log','xcally','setHeader','attachment;\x20filename=','set','Content-Type','text/plain','download','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','limit','Content-Range','apply','reject','save','then','destroy','sendStatus','name','send','keys','License','rawAttributes','query','filters','intersection','model','attributes','length','merge','getLicense','update','body','find','params','checkLicense','key','demo'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x8bfc,0x9a));var _0xc8bf=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0x8bfc[_0x55f8b4];return _0x2475f9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc8bf('0x0'));var zipdir=require(_0xc8bf('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc8bf('0x2'));var moment=require(_0xc8bf('0x3'));var BPromise=require(_0xc8bf('0x4'));var Mustache=require(_0xc8bf('0x5'));var util=require(_0xc8bf('0x6'));var path=require(_0xc8bf('0x7'));var sox=require(_0xc8bf('0x8'));var csv=require(_0xc8bf('0x9'));var ejs=require(_0xc8bf('0xa'));var fs=require('fs');var fs_extra=require(_0xc8bf('0xb'));var _=require('lodash');var squel=require(_0xc8bf('0xc'));var crypto=require('crypto');var jsforce=require(_0xc8bf('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xc8bf('0x9'));var querystring=require('querystring');var Papa=require(_0xc8bf('0xe'));var Redis=require(_0xc8bf('0xf'));var authService=require(_0xc8bf('0x10'));var qs=require(_0xc8bf('0x11'));var as=require(_0xc8bf('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc8bf('0x13'))(_0xc8bf('0x14'));var utils=require(_0xc8bf('0x15'));var config=require(_0xc8bf('0x16'));var licenseUtil=require(_0xc8bf('0x17'));var db=require(_0xc8bf('0x18'))['db'];function respondWithStatusCode(_0x273a72,_0x54cb4a){_0x54cb4a=_0x54cb4a||0xcc;return function(_0x3059bb){if(_0x3059bb){return _0x273a72['sendStatus'](_0x54cb4a);}return _0x273a72[_0xc8bf('0x19')](_0x54cb4a)[_0xc8bf('0x1a')]();};}function respondWithResult(_0x42d8e0,_0x2291a8){_0x2291a8=_0x2291a8||0xc8;return function(_0x54343b){if(_0x54343b){return _0x42d8e0[_0xc8bf('0x19')](_0x2291a8)[_0xc8bf('0x1b')](_0x54343b);}};}function respondWithFilteredResult(_0x3048db,_0x5639a1){return function(_0x2d456f){if(_0x2d456f){var _0x2dd758=typeof _0x5639a1['offset']===_0xc8bf('0x1c')&&typeof _0x5639a1['limit']===_0xc8bf('0x1c');var _0xfb1730=_0x2d456f['count'];var _0x36e376=_0x2dd758?0x0:_0x5639a1['offset'];var _0x10e4a3=_0x2dd758?_0x2d456f[_0xc8bf('0x1d')]:_0x5639a1[_0xc8bf('0x1e')]+_0x5639a1[_0xc8bf('0x1f')];var _0x247a46;if(_0x10e4a3>=_0xfb1730){_0x10e4a3=_0xfb1730;_0x247a46=0xc8;}else{_0x247a46=0xce;}_0x3048db['status'](_0x247a46);return _0x3048db['set'](_0xc8bf('0x20'),_0x36e376+'-'+_0x10e4a3+'/'+_0xfb1730)[_0xc8bf('0x1b')](_0x2d456f);}return null;};}function patchUpdates(_0xfb6eeb){return function(_0x290706){try{jsonpatch[_0xc8bf('0x21')](_0x290706,_0xfb6eeb,!![]);}catch(_0x4fa28d){return BPromise[_0xc8bf('0x22')](_0x4fa28d);}return _0x290706[_0xc8bf('0x23')]();};}function saveUpdates(_0x2057fa,_0x1ddfcc){return function(_0x4a567e){if(_0x4a567e){return _0x4a567e['update'](_0x2057fa)[_0xc8bf('0x24')](function(_0x732d5a){return _0x732d5a;});}return null;};}function removeEntity(_0x4507df,_0x1e400b){return function(_0x546b7b){if(_0x546b7b){return _0x546b7b[_0xc8bf('0x25')]()[_0xc8bf('0x24')](function(){_0x4507df[_0xc8bf('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x17b014,_0x5b4da9){return function(_0x37ddaf){if(!_0x37ddaf){_0x17b014[_0xc8bf('0x26')](0x194);}return _0x37ddaf;};}function handleError(_0xc54235,_0x3d2732){_0x3d2732=_0x3d2732||0x1f4;return function(_0x2fecac){logger['error'](_0x2fecac['stack']);if(_0x2fecac['name']){delete _0x2fecac[_0xc8bf('0x27')];}_0xc54235[_0xc8bf('0x19')](_0x3d2732)[_0xc8bf('0x28')](_0x2fecac);};}var utilLicense=require(_0xc8bf('0x17'));exports['index']=function(_0x242199,_0x155250){var _0x566e80={'raw':!![],'where':{'id':0x1}},_0x5d147e={};_0x5d147e['model']=_[_0xc8bf('0x29')](db[_0xc8bf('0x2a')][_0xc8bf('0x2b')]);_0x5d147e['query']=_[_0xc8bf('0x29')](_0x242199[_0xc8bf('0x2c')]);_0x5d147e[_0xc8bf('0x2d')]=_[_0xc8bf('0x2e')](_0x5d147e[_0xc8bf('0x2f')],_0x5d147e['query']);_0x566e80['attributes']=_[_0xc8bf('0x2e')](_0x5d147e[_0xc8bf('0x2f')],qs['fields'](_0x242199[_0xc8bf('0x2c')]['fields']));_0x566e80[_0xc8bf('0x30')]=_0x566e80['attributes'][_0xc8bf('0x31')]?_0x566e80['attributes']:_0x5d147e[_0xc8bf('0x2f')];_0x566e80=_[_0xc8bf('0x32')]({},_0x566e80,_0x242199['options']);return utilLicense[_0xc8bf('0x33')](_0x566e80)[_0xc8bf('0x24')](respondWithResult(_0x155250,null))['catch'](handleError(_0x155250,null));};exports[_0xc8bf('0x34')]=function(_0x45d59d,_0x51813c){if(_0x45d59d['body']['id']){delete _0x45d59d[_0xc8bf('0x35')]['id'];}return db[_0xc8bf('0x2a')][_0xc8bf('0x36')]({'where':{'id':_0x45d59d[_0xc8bf('0x37')]['id']}})[_0xc8bf('0x24')](handleEntityNotFound(_0x51813c,null))['then'](function(_0x6973a4){var _0x4f92a6=_0x6973a4['get']({'plain':!![]});return utilLicense[_0xc8bf('0x38')](_0x4f92a6,_0x45d59d[_0xc8bf('0x35')][_0xc8bf('0x39')]);})['then'](function(_0x52c5c6){if(!_0x52c5c6[_0xc8bf('0x3a')]){return saveUpdates(_0x45d59d['body'],null);}return _0x52c5c6;})[_0xc8bf('0x24')](respondWithResult(_0x51813c,null))[_0xc8bf('0x3b')](handleError(_0x51813c,null));};exports[_0xc8bf('0x3c')]=function(_0xe93376,_0x4b02b4){var _0x4e8505='license-info.log';var _0x217847=path[_0xc8bf('0x3d')](_0xc8bf('0x3e'),_0xc8bf('0x3f'),_0xc8bf('0x40'),_0x4e8505);_0x4b02b4[_0xc8bf('0x41')]('Content-disposition',_0xc8bf('0x42')+_0x4e8505);_0x4b02b4[_0xc8bf('0x43')](_0xc8bf('0x44'),_0xc8bf('0x45'));_0x4b02b4[_0xc8bf('0x46')](_0x217847);};
\ No newline at end of file
index 6b1a258..3aeeed3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c9f=['path','rimraf','../../config/environment','./license.attributes','exports','define','License','license','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x465e26,_0x49aab0){var _0x3e415c=function(_0x3cc2b0){while(--_0x3cc2b0){_0x465e26['push'](_0x465e26['shift']());}};_0x3e415c(++_0x49aab0);}(_0x3c9f,0x166));var _0xf3c9=function(_0x57bce8,_0x529f6e){_0x57bce8=_0x57bce8-0x0;var _0x3ea7d7=_0x3c9f[_0x57bce8];return _0x3ea7d7;};'use strict';var _=require(_0xf3c9('0x0'));var util=require(_0xf3c9('0x1'));var logger=require(_0xf3c9('0x2'))(_0xf3c9('0x3'));var moment=require('moment');var BPromise=require(_0xf3c9('0x4'));var rp=require(_0xf3c9('0x5'));var fs=require('fs');var path=require(_0xf3c9('0x6'));var rimraf=require(_0xf3c9('0x7'));var config=require(_0xf3c9('0x8'));var attributes=require(_0xf3c9('0x9'));module[_0xf3c9('0xa')]=function(_0x412d90,_0x3f940d){return _0x412d90[_0xf3c9('0xb')](_0xf3c9('0xc'),attributes,{'tableName':_0xf3c9('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x06b8=['rimraf','../../config/environment','./license.attributes','exports','define','License','license','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x4e3920,_0x4f85ea){var _0x2215c1=function(_0x339f88){while(--_0x339f88){_0x4e3920['push'](_0x4e3920['shift']());}};_0x2215c1(++_0x4f85ea);}(_0x06b8,0x111));var _0x806b=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x06b8[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0x806b('0x0'));var util=require(_0x806b('0x1'));var logger=require('../../config/logger')(_0x806b('0x2'));var moment=require(_0x806b('0x3'));var BPromise=require(_0x806b('0x4'));var rp=require(_0x806b('0x5'));var fs=require('fs');var path=require(_0x806b('0x6'));var rimraf=require(_0x806b('0x7'));var config=require(_0x806b('0x8'));var attributes=require(_0x806b('0x9'));module[_0x806b('0xa')]=function(_0x10f79d,_0x3d8dba){return _0x10f79d[_0x806b('0xb')](_0x806b('0xc'),attributes,{'tableName':_0x806b('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a600ab2..2cce1f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeaf4=['randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','License,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xeaf4,0xf0));var _0x4eaf=function(_0x1fec8b,_0x1a7ad1){_0x1fec8b=_0x1fec8b-0x0;var _0x5019a6=_0xeaf4[_0x1fec8b];return _0x5019a6;};'use strict';var _=require(_0x4eaf('0x0'));var util=require(_0x4eaf('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x4eaf('0x2'));var fs=require('fs');var Redis=require(_0x4eaf('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x4eaf('0x4'));var logger=require(_0x4eaf('0x5'))(_0x4eaf('0x6'));var config=require(_0x4eaf('0x7'));var jayson=require(_0x4eaf('0x8'));var client=jayson[_0x4eaf('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1e2702,_0xc50af4,_0x11b25a){return new BPromise(function(_0x464aef,_0x995475){return client[_0x4eaf('0xa')](_0x1e2702,_0x11b25a)[_0x4eaf('0xb')](function(_0x459471){logger[_0x4eaf('0xc')](_0x4eaf('0xd'),_0xc50af4,_0x4eaf('0xe'));logger[_0x4eaf('0xf')]('License,\x20%s,\x20%s,\x20%s',_0xc50af4,_0x4eaf('0xe'),JSON[_0x4eaf('0x10')](_0x459471));if(_0x459471[_0x4eaf('0x11')]){if(_0x459471[_0x4eaf('0x11')][_0x4eaf('0x12')]===0x1f4){logger[_0x4eaf('0x11')]('License,\x20%s,\x20%s',_0xc50af4,_0x459471['error'][_0x4eaf('0x13')]);return _0x995475(_0x459471[_0x4eaf('0x11')][_0x4eaf('0x13')]);}logger[_0x4eaf('0x11')](_0x4eaf('0xd'),_0xc50af4,_0x459471['error'][_0x4eaf('0x13')]);return _0x464aef(_0x459471['error'][_0x4eaf('0x13')]);}else{logger[_0x4eaf('0xc')]('License,\x20%s,\x20%s',_0xc50af4,_0x4eaf('0xe'));_0x464aef(_0x459471[_0x4eaf('0x14')][_0x4eaf('0x13')]);}})[_0x4eaf('0x15')](function(_0x4f0b2b){logger['error'](_0x4eaf('0xd'),_0xc50af4,_0x4f0b2b);_0x995475(_0x4f0b2b);});});}
\ No newline at end of file
+var _0x78f3=['util','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','then','info','License,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash'];(function(_0x20ef64,_0x4a8fe9){var _0x3707d8=function(_0x5b9a88){while(--_0x5b9a88){_0x20ef64['push'](_0x20ef64['shift']());}};_0x3707d8(++_0x4a8fe9);}(_0x78f3,0x142));var _0x378f=function(_0x4f5205,_0xb5022){_0x4f5205=_0x4f5205-0x0;var _0x1d7b0f=_0x78f3[_0x4f5205];return _0x1d7b0f;};'use strict';var _=require(_0x378f('0x0'));var util=require(_0x378f('0x1'));var moment=require(_0x378f('0x2'));var BPromise=require(_0x378f('0x3'));var rs=require(_0x378f('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x378f('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x378f('0x6'));var config=require(_0x378f('0x7'));var jayson=require(_0x378f('0x8'));var client=jayson[_0x378f('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x14727e,_0xf102bd,_0x28a192){return new BPromise(function(_0x2702af,_0xdadd14){return client['request'](_0x14727e,_0x28a192)[_0x378f('0xa')](function(_0x5002df){logger[_0x378f('0xb')](_0x378f('0xc'),_0xf102bd,_0x378f('0xd'));logger['debug']('License,\x20%s,\x20%s,\x20%s',_0xf102bd,_0x378f('0xd'),JSON[_0x378f('0xe')](_0x5002df));if(_0x5002df[_0x378f('0xf')]){if(_0x5002df[_0x378f('0xf')][_0x378f('0x10')]===0x1f4){logger[_0x378f('0xf')](_0x378f('0xc'),_0xf102bd,_0x5002df[_0x378f('0xf')][_0x378f('0x11')]);return _0xdadd14(_0x5002df['error'][_0x378f('0x11')]);}logger[_0x378f('0xf')](_0x378f('0xc'),_0xf102bd,_0x5002df[_0x378f('0xf')]['message']);return _0x2702af(_0x5002df['error'][_0x378f('0x11')]);}else{logger[_0x378f('0xb')](_0x378f('0xc'),_0xf102bd,'request\x20sent');_0x2702af(_0x5002df[_0x378f('0x12')][_0x378f('0x11')]);}})['catch'](function(_0xfab87){logger['error'](_0x378f('0xc'),_0xf102bd,_0xfab87);_0xdadd14(_0xfab87);});});}
\ No newline at end of file
index 91b969d..c575c22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf28b=['getMessages','/:id/verify','verifySmtp','/:id/users','getAgents','addDisposition','post','addAnswer','create','addSmtp','addApplications','/:id/send','send','addAgents','put','/:id','update','delete','removeDispositions','removeAnswers','removeImap','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailAccount.controller','get','index','isAuthenticated','show','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/in_servers','getImap','/:id/out_servers','/:id/interactions','getInteractions','/:id/applications'];(function(_0x1d9d94,_0x58b0b3){var _0x4406b6=function(_0xa609bc){while(--_0xa609bc){_0x1d9d94['push'](_0x1d9d94['shift']());}};_0x4406b6(++_0x58b0b3);}(_0xf28b,0xa0));var _0xbf28=function(_0x1eb7fe,_0x9cd060){_0x1eb7fe=_0x1eb7fe-0x0;var _0x542e41=_0xf28b[_0x1eb7fe];return _0x542e41;};'use strict';var multer=require(_0xbf28('0x0'));var util=require(_0xbf28('0x1'));var path=require(_0xbf28('0x2'));var timeout=require(_0xbf28('0x3'));var express=require(_0xbf28('0x4'));var router=express[_0xbf28('0x5')]();var fs_extra=require(_0xbf28('0x6'));var auth=require(_0xbf28('0x7'));var interaction=require(_0xbf28('0x8'));var config=require(_0xbf28('0x9'));var controller=require(_0xbf28('0xa'));router[_0xbf28('0xb')]('/',auth['isAuthenticated'](),controller[_0xbf28('0xc')]);router[_0xbf28('0xb')]('/describe',auth[_0xbf28('0xd')](),controller['describe']);router[_0xbf28('0xb')]('/:id',auth[_0xbf28('0xd')](),controller[_0xbf28('0xe')]);router['get'](_0xbf28('0xf'),auth['isAuthenticated'](),controller[_0xbf28('0x10')]);router[_0xbf28('0xb')](_0xbf28('0x11'),auth[_0xbf28('0xd')](),controller['getAnswers']);router[_0xbf28('0xb')](_0xbf28('0x12'),auth[_0xbf28('0xd')](),controller[_0xbf28('0x13')]);router['get'](_0xbf28('0x14'),auth['isAuthenticated'](),controller['getSmtp']);router[_0xbf28('0xb')](_0xbf28('0x15'),auth['isAuthenticated'](),controller[_0xbf28('0x16')]);router['get'](_0xbf28('0x17'),auth['isAuthenticated'](),controller['getApplications']);router[_0xbf28('0xb')]('/:id/messages',auth[_0xbf28('0xd')](),controller[_0xbf28('0x18')]);router[_0xbf28('0xb')](_0xbf28('0x19'),auth['isAuthenticated'](),controller[_0xbf28('0x1a')]);router[_0xbf28('0xb')](_0xbf28('0x1b'),auth[_0xbf28('0xd')](),controller[_0xbf28('0x1c')]);router['post'](_0xbf28('0xf'),auth[_0xbf28('0xd')](),controller[_0xbf28('0x1d')]);router[_0xbf28('0x1e')](_0xbf28('0x11'),auth[_0xbf28('0xd')](),controller[_0xbf28('0x1f')]);router['post']('/',auth[_0xbf28('0xd')](),controller[_0xbf28('0x20')]);router['post'](_0xbf28('0x12'),auth[_0xbf28('0xd')](),controller['addImap']);router[_0xbf28('0x1e')]('/:id/out_servers',auth[_0xbf28('0xd')](),controller[_0xbf28('0x21')]);router['post']('/:id/interactions',auth[_0xbf28('0xd')](),controller['addInteraction']);router[_0xbf28('0x1e')]('/:id/applications',auth[_0xbf28('0xd')](),controller[_0xbf28('0x22')]);router[_0xbf28('0x1e')](_0xbf28('0x23'),auth[_0xbf28('0xd')](),controller[_0xbf28('0x24')]);router['post'](_0xbf28('0x1b'),auth['isAuthenticated'](),controller[_0xbf28('0x25')]);router[_0xbf28('0x26')](_0xbf28('0x27'),auth[_0xbf28('0xd')](),controller[_0xbf28('0x28')]);router[_0xbf28('0x29')](_0xbf28('0xf'),auth[_0xbf28('0xd')](),controller[_0xbf28('0x2a')]);router[_0xbf28('0x29')]('/:id/canned_answers',auth[_0xbf28('0xd')](),controller[_0xbf28('0x2b')]);router['delete'](_0xbf28('0x12'),auth[_0xbf28('0xd')](),controller[_0xbf28('0x2c')]);router[_0xbf28('0x29')](_0xbf28('0x14'),auth[_0xbf28('0xd')](),controller['removeSmtp']);router[_0xbf28('0x29')](_0xbf28('0x27'),auth[_0xbf28('0xd')](),controller[_0xbf28('0x2d')]);router['delete']('/:id/users',auth[_0xbf28('0xd')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0xf864=['verifySmtp','/:id/users','post','addDisposition','addAnswer','addImap','addSmtp','addInteraction','addApplications','addAgents','put','update','delete','removeDispositions','removeAnswers','removeImap','removeSmtp','destroy','removeAgents','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailAccount.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/dispositions','getDispositions','getAnswers','/:id/in_servers','/:id/out_servers','getSmtp','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/messages','getMessages'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0xf864,0x71));var _0x4f86=function(_0x286f20,_0x519022){_0x286f20=_0x286f20-0x0;var _0x50c51a=_0xf864[_0x286f20];return _0x50c51a;};'use strict';var multer=require(_0x4f86('0x0'));var util=require(_0x4f86('0x1'));var path=require(_0x4f86('0x2'));var timeout=require(_0x4f86('0x3'));var express=require(_0x4f86('0x4'));var router=express[_0x4f86('0x5')]();var fs_extra=require(_0x4f86('0x6'));var auth=require(_0x4f86('0x7'));var interaction=require(_0x4f86('0x8'));var config=require('../../config/environment');var controller=require(_0x4f86('0x9'));router[_0x4f86('0xa')]('/',auth[_0x4f86('0xb')](),controller['index']);router[_0x4f86('0xa')](_0x4f86('0xc'),auth[_0x4f86('0xb')](),controller[_0x4f86('0xd')]);router[_0x4f86('0xa')](_0x4f86('0xe'),auth[_0x4f86('0xb')](),controller[_0x4f86('0xf')]);router['get'](_0x4f86('0x10'),auth[_0x4f86('0xb')](),controller[_0x4f86('0x11')]);router[_0x4f86('0xa')]('/:id/canned_answers',auth[_0x4f86('0xb')](),controller[_0x4f86('0x12')]);router[_0x4f86('0xa')](_0x4f86('0x13'),auth[_0x4f86('0xb')](),controller['getImap']);router[_0x4f86('0xa')](_0x4f86('0x14'),auth[_0x4f86('0xb')](),controller[_0x4f86('0x15')]);router[_0x4f86('0xa')](_0x4f86('0x16'),auth[_0x4f86('0xb')](),controller[_0x4f86('0x17')]);router[_0x4f86('0xa')](_0x4f86('0x18'),auth[_0x4f86('0xb')](),controller[_0x4f86('0x19')]);router[_0x4f86('0xa')](_0x4f86('0x1a'),auth[_0x4f86('0xb')](),controller[_0x4f86('0x1b')]);router['get']('/:id/verify',auth[_0x4f86('0xb')](),controller[_0x4f86('0x1c')]);router[_0x4f86('0xa')](_0x4f86('0x1d'),auth[_0x4f86('0xb')](),controller['getAgents']);router[_0x4f86('0x1e')]('/:id/dispositions',auth[_0x4f86('0xb')](),controller[_0x4f86('0x1f')]);router[_0x4f86('0x1e')]('/:id/canned_answers',auth[_0x4f86('0xb')](),controller[_0x4f86('0x20')]);router['post']('/',auth[_0x4f86('0xb')](),controller['create']);router[_0x4f86('0x1e')](_0x4f86('0x13'),auth[_0x4f86('0xb')](),controller[_0x4f86('0x21')]);router[_0x4f86('0x1e')](_0x4f86('0x14'),auth[_0x4f86('0xb')](),controller[_0x4f86('0x22')]);router[_0x4f86('0x1e')](_0x4f86('0x16'),auth['isAuthenticated'](),controller[_0x4f86('0x23')]);router[_0x4f86('0x1e')](_0x4f86('0x18'),auth['isAuthenticated'](),controller[_0x4f86('0x24')]);router[_0x4f86('0x1e')]('/:id/send',auth[_0x4f86('0xb')](),controller['send']);router[_0x4f86('0x1e')](_0x4f86('0x1d'),auth[_0x4f86('0xb')](),controller[_0x4f86('0x25')]);router[_0x4f86('0x26')]('/:id',auth['isAuthenticated'](),controller[_0x4f86('0x27')]);router[_0x4f86('0x28')]('/:id/dispositions',auth[_0x4f86('0xb')](),controller[_0x4f86('0x29')]);router[_0x4f86('0x28')]('/:id/canned_answers',auth['isAuthenticated'](),controller[_0x4f86('0x2a')]);router[_0x4f86('0x28')]('/:id/in_servers',auth[_0x4f86('0xb')](),controller[_0x4f86('0x2b')]);router[_0x4f86('0x28')](_0x4f86('0x14'),auth[_0x4f86('0xb')](),controller[_0x4f86('0x2c')]);router[_0x4f86('0x28')]('/:id',auth[_0x4f86('0xb')](),controller[_0x4f86('0x2d')]);router[_0x4f86('0x28')](_0x4f86('0x1d'),auth[_0x4f86('0xb')](),controller[_0x4f86('0x2e')]);module['exports']=router;
\ No newline at end of file
index 1d18df4..57a1331 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a11=['provider','getDataValue','custom','exports','STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','INTEGER','UNSIGNED','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','ENUM','hotmail','yahoo'];(function(_0x451869,_0x490465){var _0x1263fd=function(_0x4de1db){while(--_0x4de1db){_0x451869['push'](_0x451869['shift']());}};_0x1263fd(++_0x490465);}(_0x9a11,0x16c));var _0x19a1=function(_0x549182,_0x17dcbb){_0x549182=_0x549182-0x0;var _0x294433=_0x9a11[_0x549182];return _0x294433;};'use strict';var Sequelize=require('sequelize');module[_0x19a1('0x0')]={'description':{'type':Sequelize[_0x19a1('0x1')]},'name':{'type':Sequelize[_0x19a1('0x1')],'allowNull':![]},'service':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0x19a1('0x1')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x19a1('0x2')],'defaultValue':!![]},'key':{'type':Sequelize[_0x19a1('0x1')],'allowNull':![]},'template':{'type':Sequelize[_0x19a1('0x3')]},'markAsUnread':{'type':Sequelize[_0x19a1('0x2')],'defaultValue':![]},'fontFamily':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x19a1('0x4')},'fontSize':{'type':Sequelize[_0x19a1('0x5')](0x2)[_0x19a1('0x6')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x19a1('0x3')],'defaultValue':function(){return _0x19a1('0x7');}},'notificationSound':{'type':Sequelize[_0x19a1('0x2')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x19a1('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x19a1('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x19a1('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x19a1('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x19a1('0x2')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x19a1('0x5')],'allowNull':!![],'defaultValue':null,'comment':_0x19a1('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x19a1('0x2')],'defaultValue':![],'comment':_0x19a1('0x9'),'set':function(_0x557482){if(!_0x557482)this[_0x19a1('0xa')](_0x19a1('0xb'),null);this[_0x19a1('0xa')](_0x19a1('0xc'),_0x557482);}},'provider':{'type':Sequelize[_0x19a1('0xd')]('gmail',_0x19a1('0xe'),_0x19a1('0xf'),'outlook365'),'defaultValue':null,'get':function(){if(!this['getDataValue'](_0x19a1('0x10')))return'custom';return this[_0x19a1('0x11')]('provider');},'set':function(_0x15b36c){if(_0x15b36c===_0x19a1('0x12'))_0x15b36c=null;return this[_0x19a1('0xa')](_0x19a1('0x10'),_0x15b36c);}}};
\ No newline at end of file
+var _0x10fb=['Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','ENUM','gmail','hotmail','outlook365','getDataValue','provider','custom','STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','INTEGER','UNSIGNED'];(function(_0x258b31,_0xe92c55){var _0x53774a=function(_0x5b861c){while(--_0x5b861c){_0x258b31['push'](_0x258b31['shift']());}};_0x53774a(++_0xe92c55);}(_0x10fb,0x150));var _0xb10f=function(_0x150c65,_0x303f38){_0x150c65=_0x150c65-0x0;var _0x4ca489=_0x10fb[_0x150c65];return _0x4ca489;};'use strict';var Sequelize=require('sequelize');module['exports']={'description':{'type':Sequelize[_0xb10f('0x0')]},'name':{'type':Sequelize[_0xb10f('0x0')],'allowNull':![]},'service':{'type':Sequelize[_0xb10f('0x1')],'defaultValue':![]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0xb10f('0x1')],'defaultValue':!![]},'key':{'type':Sequelize[_0xb10f('0x0')],'allowNull':![]},'template':{'type':Sequelize[_0xb10f('0x2')]},'markAsUnread':{'type':Sequelize[_0xb10f('0x1')],'defaultValue':![]},'fontFamily':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xb10f('0x3')},'fontSize':{'type':Sequelize[_0xb10f('0x4')](0x2)[_0xb10f('0x5')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0xb10f('0x2')],'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[_0xb10f('0x1')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xb10f('0x1')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xb10f('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xb10f('0x1')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xb10f('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xb10f('0x4')],'allowNull':!![],'defaultValue':null,'comment':_0xb10f('0x6')},'mandatoryDisposition':{'type':Sequelize[_0xb10f('0x1')],'defaultValue':![],'comment':_0xb10f('0x7'),'set':function(_0x3f8124){if(!_0x3f8124)this[_0xb10f('0x8')](_0xb10f('0x9'),null);this[_0xb10f('0x8')](_0xb10f('0xa'),_0x3f8124);}},'provider':{'type':Sequelize[_0xb10f('0xb')](_0xb10f('0xc'),_0xb10f('0xd'),'yahoo',_0xb10f('0xe')),'defaultValue':null,'get':function(){if(!this[_0xb10f('0xf')](_0xb10f('0x10')))return _0xb10f('0x11');return this['getDataValue']('provider');},'set':function(_0x3e7a7b){if(_0x3e7a7b===_0xb10f('0x11'))_0x3e7a7b=null;return this[_0xb10f('0x8')](_0xb10f('0x10'),_0x3e7a7b);}}};
\ No newline at end of file
index cb4aa0a..7e0fb9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0dac=['setImap','getSmtp','removeSmtp','addInteraction','MailInteraction','getInteractions','CmContact','Contact','User','Tag','tag','rows','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','MailApplication','bulkCreate','findAndCountAll','priority','finally','getApplications','$gte','format','MailMessage','split','CmList','List','Contacts','DESC','CloudProvider','Smtp\x20configuration\x20not\x20found','isNil','from','attachments','join','root','server/files/attachments','basename','sendMail','List\x20not\x20found','subject','attach','out','YYYY-MM-DD\x20HH:mm:ss','messageId','Interaction','verifySmtp','VerifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','omit','spread','userMailAccount:save','removeAgents','isArray','emit','userMailAccount:remove','getAgents','moment','util','path','juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','register','jayson/promise','client','request','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','error','message','catch','sendStatus','end','json','offset','undefined','count','status','set','update','then','destroy','MailAccounts','UserProfileResource','stack','name','send','gmail','imap.gmail.com','hotmail','imap-mail.outlook.com','outlook365','outlook.office365.com','Unknown\x20email\x20service\x20provider','smtp.gmail.com','yahoo','smtp-mail.outlook.com','smtp.office365.com','user','username','password','pass','modernAuthentication','CloudProviderId','port','host','secure','service','authentication','Imap','Smtp','index','Pause','mandatoryDispositionPause','MailAccount','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','nolimit','limit','order','sort','where','pick','filter','merge','includeAll','include','findAll','MailServerIn','MailServerOut','keys','body','custom','provider','find','describe','params','MailAccountId','Disposition','create','findOne','hasOwnProperty','options','removeDispositions','ids','addAnswer','CannedAnswer','removeAnswers','email','ListId','active','description','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','removeImap'];(function(_0x27eda0,_0x42a3cf){var _0x2b63a5=function(_0x431084){while(--_0x431084){_0x27eda0['push'](_0x27eda0['shift']());}};_0x2b63a5(++_0x42a3cf);}(_0x0dac,0xfa));var _0xc0da=function(_0x38571d,_0x316088){_0x38571d=_0x38571d-0x0;var _0x424170=_0x0dac[_0x38571d];return _0x424170;};'use strict';var moment=require(_0xc0da('0x0'));var BPromise=require('bluebird');var util=require(_0xc0da('0x1'));var path=require(_0xc0da('0x2'));var _=require('lodash');var juice=require(_0xc0da('0x3'));var Redis=require(_0xc0da('0x4'));var qs=require(_0xc0da('0x5'));var logger=require(_0xc0da('0x6'))(_0xc0da('0x7'));var config=require(_0xc0da('0x8'));var db=require(_0xc0da('0x9'))['db'];config[_0xc0da('0xa')]=_[_0xc0da('0xb')](config[_0xc0da('0xa')],{'host':_0xc0da('0xc'),'port':0x18eb});var socket=require(_0xc0da('0xd'))(new Redis(config[_0xc0da('0xa')]));require(_0xc0da('0xe'))[_0xc0da('0xf')](socket);var jayson=require(_0xc0da('0x10'));var client=jayson[_0xc0da('0x11')]['http']({'port':0x232b});function respondWithRpcPromise(_0x347dbf,_0x419fd5,_0x344d40,_0x5a0b3b){return new BPromise(function(_0x3a1103,_0x19e1ae){var _0x2c33f4=_0x5a0b3b||client;return _0x2c33f4[_0xc0da('0x12')](_0x347dbf,_0x344d40)['then'](function(_0xe41f6f){logger[_0xc0da('0x13')](_0xc0da('0x14'),_0x419fd5,_0xc0da('0x15'));logger[_0xc0da('0x16')](_0xc0da('0x17'),_0x419fd5,'request\x20sent',JSON['stringify'](_0xe41f6f));if(_0xe41f6f[_0xc0da('0x18')]){if(_0xe41f6f[_0xc0da('0x18')]['code']===0x1f4){logger[_0xc0da('0x18')](_0xc0da('0x14'),_0x419fd5,_0xe41f6f[_0xc0da('0x18')][_0xc0da('0x19')]);return _0x19e1ae(_0xe41f6f[_0xc0da('0x18')][_0xc0da('0x19')]);}logger[_0xc0da('0x18')](_0xc0da('0x14'),_0x419fd5,_0xe41f6f[_0xc0da('0x18')][_0xc0da('0x19')]);return _0x3a1103(_0xe41f6f['error'][_0xc0da('0x19')]);}else{logger[_0xc0da('0x13')]('MailAccount,\x20%s,\x20%s',_0x419fd5,_0xc0da('0x15'));_0x3a1103(_0xe41f6f['result'][_0xc0da('0x19')]);}})[_0xc0da('0x1a')](function(_0x33fbba){logger[_0xc0da('0x18')]('MailAccount,\x20%s,\x20%s',_0x419fd5,_0x33fbba);_0x19e1ae(_0x33fbba);});});}function respondWithStatusCode(_0x465700,_0x2d1487){_0x2d1487=_0x2d1487||0xcc;return function(_0x19ff99){if(_0x19ff99){return _0x465700[_0xc0da('0x1b')](_0x2d1487);}return _0x465700['status'](_0x2d1487)[_0xc0da('0x1c')]();};}function respondWithResult(_0x43abaf,_0x35a969){_0x35a969=_0x35a969||0xc8;return function(_0x23dd6c){if(_0x23dd6c){return _0x43abaf['status'](_0x35a969)[_0xc0da('0x1d')](_0x23dd6c);}};}function respondWithFilteredResult(_0x31efac,_0xf84360){return function(_0x5dfcae){if(_0x5dfcae){var _0x4e9901=typeof _0xf84360[_0xc0da('0x1e')]===_0xc0da('0x1f')&&typeof _0xf84360['limit']===_0xc0da('0x1f');var _0x19b7c6=_0x5dfcae[_0xc0da('0x20')];var _0x2126c9=_0x4e9901?0x0:_0xf84360[_0xc0da('0x1e')];var _0x40d8dc=_0x4e9901?_0x5dfcae[_0xc0da('0x20')]:_0xf84360[_0xc0da('0x1e')]+_0xf84360['limit'];var _0x21d532;if(_0x40d8dc>=_0x19b7c6){_0x40d8dc=_0x19b7c6;_0x21d532=0xc8;}else{_0x21d532=0xce;}_0x31efac[_0xc0da('0x21')](_0x21d532);return _0x31efac[_0xc0da('0x22')]('Content-Range',_0x2126c9+'-'+_0x40d8dc+'/'+_0x19b7c6)[_0xc0da('0x1d')](_0x5dfcae);}return null;};}function saveUpdates(_0x262d13){return function(_0x2cfeb2){if(_0x2cfeb2){return _0x2cfeb2[_0xc0da('0x23')](_0x262d13)[_0xc0da('0x24')](function(_0x519ce5){return _0x519ce5;});}return null;};}function removeEntity(_0xb5b7b1){return function(_0x232c22){if(_0x232c22){return _0x232c22[_0xc0da('0x25')]()[_0xc0da('0x24')](function(){var _0x35c6aa=_0x232c22['get']({'plain':!![]});var _0x13d947=_0xc0da('0x26');return db[_0xc0da('0x27')][_0xc0da('0x25')]({'where':{'type':_0x13d947,'resourceId':_0x35c6aa['id']}})[_0xc0da('0x24')](function(){return _0x232c22;});})[_0xc0da('0x24')](function(){_0xb5b7b1[_0xc0da('0x21')](0xcc)[_0xc0da('0x1c')]();});}};}function handleEntityNotFound(_0x5dde7d){return function(_0x48b8c6){if(!_0x48b8c6){_0x5dde7d[_0xc0da('0x1b')](0x194);}return _0x48b8c6;};}function handleError(_0x1ee40a,_0x3b30a9){_0x3b30a9=_0x3b30a9||0x1f4;return function(_0xec79b8){logger[_0xc0da('0x18')](_0xec79b8[_0xc0da('0x28')]);if(_0xec79b8[_0xc0da('0x29')]){delete _0xec79b8['name'];}_0x1ee40a['status'](_0x3b30a9)[_0xc0da('0x2a')](_0xec79b8);};}function getImapHost(_0x2e7d63){switch(_0x2e7d63){case _0xc0da('0x2b'):return _0xc0da('0x2c');case'yahoo':return'imap.mail.yahoo.com';case _0xc0da('0x2d'):return _0xc0da('0x2e');case _0xc0da('0x2f'):return _0xc0da('0x30');}throw new Error(_0xc0da('0x31'),_0x2e7d63);}function getSmtpHost(_0xc3595c){switch(_0xc3595c){case'gmail':return _0xc0da('0x32');case _0xc0da('0x33'):return'smtp.mail.yahoo.com';case _0xc0da('0x2d'):return _0xc0da('0x34');case _0xc0da('0x2f'):return _0xc0da('0x35');}throw new Error(_0xc0da('0x31'),_0xc3595c);}function getAuthenticationOptions(_0x85ce19,_0x4224a2){var _0x1b87d6={};var _0x2c0a40={};if(_0x85ce19){_0x1b87d6[_0xc0da('0x36')]=_0x2c0a40[_0xc0da('0x36')]=_0x4224a2[_0xc0da('0x37')];_0x1b87d6[_0xc0da('0x38')]=_0x2c0a40[_0xc0da('0x39')]=_0x4224a2[_0xc0da('0x38')];if(_0x4224a2[_0xc0da('0x3a')]){_0x1b87d6[_0xc0da('0x3a')]=_0x2c0a40[_0xc0da('0x3a')]=!![];_0x1b87d6['CloudProviderId']=_0x2c0a40['CloudProviderId']=_0x4224a2[_0xc0da('0x3b')];_0x1b87d6[_0xc0da('0x38')]=_0x2c0a40[_0xc0da('0x39')]=null;}else{_0x1b87d6[_0xc0da('0x3b')]=_0x2c0a40[_0xc0da('0x3b')]=null;}_0x1b87d6['host']=getImapHost(_0x85ce19);_0x1b87d6[_0xc0da('0x3c')]=0x3e1;_0x2c0a40[_0xc0da('0x3d')]=getSmtpHost(_0x85ce19);_0x2c0a40[_0xc0da('0x3c')]=0x24b;_0x2c0a40[_0xc0da('0x3e')]=![];_0x1b87d6[_0xc0da('0x3f')]=_0x2c0a40[_0xc0da('0x3f')]=null;}else{if(_0x4224a2[_0xc0da('0x40')]){_0x1b87d6[_0xc0da('0x36')]=_0x2c0a40['user']=_0x4224a2[_0xc0da('0x37')];_0x1b87d6['password']=_0x2c0a40['pass']=_0x4224a2['password'];}else{_0x1b87d6[_0xc0da('0x40')]=_0x2c0a40['authentication']=![];_0x1b87d6[_0xc0da('0x36')]=_0x2c0a40[_0xc0da('0x36')]=null;_0x1b87d6[_0xc0da('0x38')]=_0x2c0a40[_0xc0da('0x39')]=null;}_0x1b87d6[_0xc0da('0x3d')]=_0x4224a2['Imap'][_0xc0da('0x3d')];_0x1b87d6[_0xc0da('0x3c')]=_0x4224a2[_0xc0da('0x41')][_0xc0da('0x3c')];_0x2c0a40[_0xc0da('0x3d')]=_0x4224a2[_0xc0da('0x42')][_0xc0da('0x3d')];_0x2c0a40['port']=_0x4224a2[_0xc0da('0x42')]['port'];}return{'Imap':_0x1b87d6,'Smtp':_0x2c0a40};}exports[_0xc0da('0x43')]=function(_0xa6097b,_0x13c8f4){var _0x3e7988={'include':[{'model':db['MailServerIn'],'as':_0xc0da('0x41')},{'model':db['MailServerOut'],'as':'Smtp'},{'model':db[_0xc0da('0x44')],'as':_0xc0da('0x45')}]},_0x1925b5={},_0x4145b8={'count':0x0,'rows':[]};var _0x5a20cb=_['map'](db[_0xc0da('0x46')][_0xc0da('0x47')],function(_0x2005a1){return{'name':_0x2005a1[_0xc0da('0x48')],'type':_0x2005a1[_0xc0da('0x49')][_0xc0da('0x4a')]};});_0x1925b5[_0xc0da('0x4b')]=_[_0xc0da('0x4c')](_0x5a20cb,_0xc0da('0x29'));_0x1925b5[_0xc0da('0x4d')]=_['keys'](_0xa6097b[_0xc0da('0x4d')]);_0x1925b5[_0xc0da('0x4e')]=_[_0xc0da('0x4f')](_0x1925b5[_0xc0da('0x4b')],_0x1925b5['query']);_0x3e7988[_0xc0da('0x50')]=_[_0xc0da('0x4f')](_0x1925b5[_0xc0da('0x4b')],qs[_0xc0da('0x51')](_0xa6097b[_0xc0da('0x4d')][_0xc0da('0x51')]));_0x3e7988[_0xc0da('0x50')]=_0x3e7988[_0xc0da('0x50')][_0xc0da('0x52')]?_0x3e7988[_0xc0da('0x50')]:_0x1925b5[_0xc0da('0x4b')];if(!_0xa6097b[_0xc0da('0x4d')]['hasOwnProperty'](_0xc0da('0x53'))){_0x3e7988[_0xc0da('0x54')]=qs[_0xc0da('0x54')](_0xa6097b[_0xc0da('0x4d')][_0xc0da('0x54')]);_0x3e7988['offset']=qs[_0xc0da('0x1e')](_0xa6097b[_0xc0da('0x4d')][_0xc0da('0x1e')]);}_0x3e7988[_0xc0da('0x55')]=qs['sort'](_0xa6097b[_0xc0da('0x4d')][_0xc0da('0x56')]);_0x3e7988[_0xc0da('0x57')]=qs['filters'](_[_0xc0da('0x58')](_0xa6097b[_0xc0da('0x4d')],_0x1925b5[_0xc0da('0x4e')]),_0x5a20cb);if(_0xa6097b[_0xc0da('0x4d')][_0xc0da('0x59')]){_0x3e7988[_0xc0da('0x57')]=_['merge'](_0x3e7988['where'],{'$or':_[_0xc0da('0x4c')](_0x5a20cb,function(_0xedf1e0){if(_0xedf1e0[_0xc0da('0x49')]!=='VIRTUAL'){var _0x386601={};_0x386601[_0xedf1e0['name']]={'$like':'%'+_0xa6097b[_0xc0da('0x4d')][_0xc0da('0x59')]+'%'};return _0x386601;}})});}_0x3e7988=_[_0xc0da('0x5a')]({},_0x3e7988,_0xa6097b['options']);var _0xbe7389={'where':_0x3e7988[_0xc0da('0x57')]};return db[_0xc0da('0x46')][_0xc0da('0x20')](_0xbe7389)[_0xc0da('0x24')](function(_0x48248f){_0x4145b8[_0xc0da('0x20')]=_0x48248f;if(_0xa6097b[_0xc0da('0x4d')][_0xc0da('0x5b')]){_0x3e7988[_0xc0da('0x5c')]=[{'all':!![]}];}return db[_0xc0da('0x46')][_0xc0da('0x5d')](_0x3e7988);})[_0xc0da('0x24')](function(_0x5b2b59){_0x4145b8['rows']=_0x5b2b59;return _0x4145b8;})[_0xc0da('0x24')](respondWithFilteredResult(_0x13c8f4,_0x3e7988))[_0xc0da('0x1a')](handleError(_0x13c8f4,null));};exports['show']=function(_0x15a5f1,_0x4973c6){var _0x516f2b={'raw':![],'where':{'id':_0x15a5f1['params']['id']},'include':[{'model':db[_0xc0da('0x5e')],'as':_0xc0da('0x41')},{'model':db[_0xc0da('0x5f')],'as':_0xc0da('0x42')},{'model':db[_0xc0da('0x44')],'as':_0xc0da('0x45')}]},_0x1da322={};_0x1da322[_0xc0da('0x4b')]=_[_0xc0da('0x60')](db[_0xc0da('0x46')][_0xc0da('0x47')]);_0x1da322['query']=_[_0xc0da('0x60')](_0x15a5f1[_0xc0da('0x4d')]);_0x1da322[_0xc0da('0x4e')]=_[_0xc0da('0x4f')](_0x1da322['model'],_0x1da322['query']);_0x516f2b['attributes']=_[_0xc0da('0x4f')](_0x1da322[_0xc0da('0x4b')],qs['fields'](_0x15a5f1[_0xc0da('0x4d')]['fields']));_0x516f2b[_0xc0da('0x50')]=_0x516f2b[_0xc0da('0x50')][_0xc0da('0x52')]?_0x516f2b[_0xc0da('0x50')]:_0x1da322[_0xc0da('0x4b')];if(_0x15a5f1[_0xc0da('0x4d')][_0xc0da('0x5b')]){_0x516f2b['include']=[{'all':!![]}];}_0x516f2b=_[_0xc0da('0x5a')]({},_0x516f2b,_0x15a5f1['options']);return db[_0xc0da('0x46')]['find'](_0x516f2b)[_0xc0da('0x24')](handleEntityNotFound(_0x4973c6,null))[_0xc0da('0x24')](respondWithResult(_0x4973c6,null))[_0xc0da('0x1a')](handleError(_0x4973c6,null));};exports[_0xc0da('0x23')]=function(_0x591053,_0xdfe2f7){if(_0x591053[_0xc0da('0x61')]['id']){delete _0x591053[_0xc0da('0x61')]['id'];}var _0x9ddca6=_0x591053[_0xc0da('0x61')]['provider']===_0xc0da('0x62')?null:_0x591053['body'][_0xc0da('0x63')];var _0x39edc0=_0x591053[_0xc0da('0x61')][_0xc0da('0x41')]||{};var _0x1577a3=_0x591053[_0xc0da('0x61')]['Smtp']||{};if(_0x9ddca6){_0x39edc0[_0xc0da('0x3d')]=getImapHost(_0x9ddca6);_0x39edc0[_0xc0da('0x3c')]=0x3e1;_0x1577a3['host']=getSmtpHost(_0x9ddca6);_0x1577a3[_0xc0da('0x3c')]=0x24b;_0x1577a3['secure']=![];}if(_0x1577a3[_0xc0da('0x3a')]){_0x1577a3[_0xc0da('0x3e')]=![];}else{_0x1577a3['CloudProviderId']=null;}if(!_0x39edc0[_0xc0da('0x3a')])_0x39edc0['CloudProviderId']=null;_0x591053[_0xc0da('0x61')][_0xc0da('0x41')]=_0x39edc0;_0x591053[_0xc0da('0x61')][_0xc0da('0x42')]=_0x1577a3;return db[_0xc0da('0x46')][_0xc0da('0x64')]({'where':{'id':_0x591053['params']['id']},'include':[{'model':db[_0xc0da('0x5e')],'as':_0xc0da('0x41')},{'model':db['MailServerOut'],'as':'Smtp'},{'model':db[_0xc0da('0x44')],'as':'mandatoryDispositionPause'}]})[_0xc0da('0x24')](handleEntityNotFound(_0xdfe2f7,null))[_0xc0da('0x24')](function(_0x348b9e){if(!_0x348b9e)throw new Error('Mail\x20Account\x20not\x20found');if(_0x348b9e['service'])delete _0x591053[_0xc0da('0x61')][_0xc0da('0x41')];return _0x348b9e;})[_0xc0da('0x24')](saveUpdates(_0x591053[_0xc0da('0x61')],null))[_0xc0da('0x24')](function(_0x6e324){if(!_0x591053['body']['Imap'])return _0x6e324;return db['MailServerIn']['update'](_0x591053[_0xc0da('0x61')][_0xc0da('0x41')],{'where':{'MailAccountId':_0x6e324['id']}})['then'](function(){return _0x6e324;});})[_0xc0da('0x24')](function(_0x32b54e){if(!_0x591053[_0xc0da('0x61')]['Smtp'])return _0x32b54e;return db[_0xc0da('0x5f')][_0xc0da('0x23')](_0x591053[_0xc0da('0x61')][_0xc0da('0x42')],{'where':{'MailAccountId':_0x32b54e['id']}})[_0xc0da('0x24')](function(){return _0x32b54e;});})['then'](respondWithResult(_0xdfe2f7,null))[_0xc0da('0x1a')](handleError(_0xdfe2f7,null));};exports[_0xc0da('0x65')]=function(_0x354cef,_0x388604){return db['MailAccount'][_0xc0da('0x65')]()[_0xc0da('0x24')](respondWithResult(_0x388604,null))[_0xc0da('0x1a')](handleError(_0x388604,null));};exports['addDisposition']=function(_0x259f72,_0x20edf7){if(_0x259f72[_0xc0da('0x61')]['id']){delete _0x259f72[_0xc0da('0x61')]['id'];}return db['MailAccount'][_0xc0da('0x64')]({'where':{'id':_0x259f72[_0xc0da('0x66')]['id']}})['then'](handleEntityNotFound(_0x20edf7,null))[_0xc0da('0x24')](function(_0xff8fad){if(_0xff8fad){_0x259f72['body'][_0xc0da('0x67')]=_0xff8fad['id'];return db[_0xc0da('0x68')][_0xc0da('0x69')](_0x259f72['body']);}})[_0xc0da('0x24')](respondWithResult(_0x20edf7,null))[_0xc0da('0x1a')](handleError(_0x20edf7,null));};exports['getDispositions']=function(_0x129b44,_0x51a3b6){var _0x4d3569={'raw':![],'where':{}};var _0x2eaa4b={};var _0x42ec8a={'count':0x0,'rows':[]};return db[_0xc0da('0x46')][_0xc0da('0x6a')]({'where':{'id':_0x129b44['params']['id']}})['then'](handleEntityNotFound(_0x51a3b6,null))[_0xc0da('0x24')](function(_0x347b74){if(_0x347b74){_0x2eaa4b[_0xc0da('0x4b')]=_['keys'](db['Disposition'][_0xc0da('0x47')]);_0x2eaa4b[_0xc0da('0x4d')]=_[_0xc0da('0x60')](_0x129b44[_0xc0da('0x4d')]);_0x2eaa4b[_0xc0da('0x4e')]=_[_0xc0da('0x4f')](_0x2eaa4b['model'],_0x2eaa4b[_0xc0da('0x4d')]);_0x4d3569[_0xc0da('0x50')]=_['intersection'](_0x2eaa4b['model'],qs[_0xc0da('0x51')](_0x129b44['query'][_0xc0da('0x51')]));_0x4d3569[_0xc0da('0x50')]=_0x4d3569[_0xc0da('0x50')]['length']?_0x4d3569['attributes']:_0x2eaa4b[_0xc0da('0x4b')];if(!_0x129b44[_0xc0da('0x4d')][_0xc0da('0x6b')](_0xc0da('0x53'))){_0x4d3569[_0xc0da('0x54')]=qs[_0xc0da('0x54')](_0x129b44[_0xc0da('0x4d')][_0xc0da('0x54')]);_0x4d3569[_0xc0da('0x1e')]=qs[_0xc0da('0x1e')](_0x129b44[_0xc0da('0x4d')]['offset']);}_0x4d3569['order']=qs[_0xc0da('0x56')](_0x129b44[_0xc0da('0x4d')][_0xc0da('0x56')]);_0x4d3569[_0xc0da('0x57')]=qs[_0xc0da('0x4e')](_[_0xc0da('0x58')](_0x129b44[_0xc0da('0x4d')],_0x2eaa4b[_0xc0da('0x4e')]));_0x4d3569['where'][_0xc0da('0x67')]=_0x347b74['id'];if(_0x129b44['query']['filter']){_0x4d3569['where']=_[_0xc0da('0x5a')](_0x4d3569[_0xc0da('0x57')],{'$or':_[_0xc0da('0x4c')](_0x4d3569[_0xc0da('0x50')],function(_0x5469d7){var _0x2f5c05={};_0x2f5c05[_0x5469d7]={'$like':'%'+_0x129b44['query'][_0xc0da('0x59')]+'%'};return _0x2f5c05;})});}_0x4d3569=_[_0xc0da('0x5a')]({},_0x4d3569,_0x129b44[_0xc0da('0x6c')]);return db[_0xc0da('0x68')][_0xc0da('0x20')]({'where':_0x4d3569['where']})['then'](function(_0x347ad7){_0x42ec8a['count']=_0x347ad7;if(_0x129b44[_0xc0da('0x4d')][_0xc0da('0x5b')]){_0x4d3569[_0xc0da('0x5c')]=[{'all':!![]}];}return db[_0xc0da('0x68')][_0xc0da('0x5d')](_0x4d3569);})[_0xc0da('0x24')](function(_0x46d0e7){_0x42ec8a['rows']=_0x46d0e7;return _0x42ec8a;});}})['then'](respondWithFilteredResult(_0x51a3b6,_0x4d3569))[_0xc0da('0x1a')](handleError(_0x51a3b6,null));};exports['removeDispositions']=function(_0x25448a,_0x43dfea){return db[_0xc0da('0x46')][_0xc0da('0x64')]({'where':{'id':_0x25448a[_0xc0da('0x66')]['id']}})[_0xc0da('0x24')](handleEntityNotFound(_0x43dfea,null))[_0xc0da('0x24')](function(_0x572c10){if(_0x572c10){return _0x572c10[_0xc0da('0x6d')](_0x25448a[_0xc0da('0x4d')][_0xc0da('0x6e')]);}})[_0xc0da('0x24')](respondWithStatusCode(_0x43dfea,null))[_0xc0da('0x1a')](handleError(_0x43dfea,null));};exports[_0xc0da('0x6f')]=function(_0x1fe54c,_0x27af90){if(_0x1fe54c['body']['id']){delete _0x1fe54c['body']['id'];}return db[_0xc0da('0x46')]['find']({'where':{'id':_0x1fe54c[_0xc0da('0x66')]['id']}})[_0xc0da('0x24')](handleEntityNotFound(_0x27af90,null))['then'](function(_0x4da909){if(_0x4da909){_0x1fe54c['body'][_0xc0da('0x67')]=_0x4da909['id'];return db[_0xc0da('0x70')][_0xc0da('0x69')](_0x1fe54c['body']);}})[_0xc0da('0x24')](respondWithResult(_0x27af90,null))[_0xc0da('0x1a')](handleError(_0x27af90,null));};exports['getAnswers']=function(_0x4e9dbb,_0x604382){var _0x2f9efb={'raw':![],'where':{}};var _0x297664={};var _0x4d0a7d={'count':0x0,'rows':[]};return db[_0xc0da('0x46')][_0xc0da('0x6a')]({'where':{'id':_0x4e9dbb[_0xc0da('0x66')]['id']}})[_0xc0da('0x24')](handleEntityNotFound(_0x604382,null))['then'](function(_0x553471){if(_0x553471){_0x297664[_0xc0da('0x4b')]=_[_0xc0da('0x60')](db[_0xc0da('0x70')][_0xc0da('0x47')]);_0x297664['query']=_[_0xc0da('0x60')](_0x4e9dbb[_0xc0da('0x4d')]);_0x297664['filters']=_['intersection'](_0x297664[_0xc0da('0x4b')],_0x297664[_0xc0da('0x4d')]);_0x2f9efb[_0xc0da('0x50')]=_[_0xc0da('0x4f')](_0x297664[_0xc0da('0x4b')],qs['fields'](_0x4e9dbb[_0xc0da('0x4d')]['fields']));_0x2f9efb[_0xc0da('0x50')]=_0x2f9efb[_0xc0da('0x50')][_0xc0da('0x52')]?_0x2f9efb[_0xc0da('0x50')]:_0x297664[_0xc0da('0x4b')];if(!_0x4e9dbb[_0xc0da('0x4d')][_0xc0da('0x6b')]('nolimit')){_0x2f9efb['limit']=qs['limit'](_0x4e9dbb['query']['limit']);_0x2f9efb['offset']=qs[_0xc0da('0x1e')](_0x4e9dbb[_0xc0da('0x4d')]['offset']);}_0x2f9efb['order']=qs[_0xc0da('0x56')](_0x4e9dbb[_0xc0da('0x4d')][_0xc0da('0x56')]);_0x2f9efb[_0xc0da('0x57')]=qs[_0xc0da('0x4e')](_['pick'](_0x4e9dbb['query'],_0x297664[_0xc0da('0x4e')]));_0x2f9efb[_0xc0da('0x57')]['MailAccountId']=_0x553471['id'];if(_0x4e9dbb[_0xc0da('0x4d')][_0xc0da('0x59')]){_0x2f9efb[_0xc0da('0x57')]=_['merge'](_0x2f9efb['where'],{'$or':_['map'](_0x2f9efb[_0xc0da('0x50')],function(_0x312ba1){var _0x53b6a9={};_0x53b6a9[_0x312ba1]={'$like':'%'+_0x4e9dbb[_0xc0da('0x4d')][_0xc0da('0x59')]+'%'};return _0x53b6a9;})});}_0x2f9efb=_['merge']({},_0x2f9efb,_0x4e9dbb[_0xc0da('0x6c')]);return db[_0xc0da('0x70')]['count']({'where':_0x2f9efb[_0xc0da('0x57')]})[_0xc0da('0x24')](function(_0x465c4e){_0x4d0a7d['count']=_0x465c4e;if(_0x4e9dbb[_0xc0da('0x4d')]['includeAll']){_0x2f9efb[_0xc0da('0x5c')]=[{'all':!![]}];}return db['CannedAnswer'][_0xc0da('0x5d')](_0x2f9efb);})[_0xc0da('0x24')](function(_0x154759){_0x4d0a7d['rows']=_0x154759;return _0x4d0a7d;});}})[_0xc0da('0x24')](respondWithFilteredResult(_0x604382,_0x2f9efb))[_0xc0da('0x1a')](handleError(_0x604382,null));};exports[_0xc0da('0x71')]=function(_0x142b3b,_0x1b9154){return db[_0xc0da('0x46')][_0xc0da('0x64')]({'where':{'id':_0x142b3b[_0xc0da('0x66')]['id']}})[_0xc0da('0x24')](handleEntityNotFound(_0x1b9154,null))['then'](function(_0x478006){if(_0x478006){return _0x478006[_0xc0da('0x71')](_0x142b3b[_0xc0da('0x4d')][_0xc0da('0x6e')]);}})[_0xc0da('0x24')](respondWithStatusCode(_0x1b9154,null))[_0xc0da('0x1a')](handleError(_0x1b9154,null));};exports[_0xc0da('0x69')]=function(_0x300da1,_0x777c8){var _0x313194={'name':_0x300da1['body'][_0xc0da('0x29')],'key':_0x300da1[_0xc0da('0x61')]['key'],'provider':_0x300da1['body'][_0xc0da('0x63')]===_0xc0da('0x62')?null:_0x300da1['body']['provider'],'email':_0x300da1[_0xc0da('0x61')][_0xc0da('0x72')],'ListId':_0x300da1[_0xc0da('0x61')][_0xc0da('0x73')],'active':!_['isNil'](_0x300da1[_0xc0da('0x61')][_0xc0da('0x74')])?_0x300da1['body'][_0xc0da('0x74')]:!![],'description':_0x300da1[_0xc0da('0x61')][_0xc0da('0x75')]||null};var _0x8863d9=getAuthenticationOptions(_0x313194[_0xc0da('0x63')],_0x300da1[_0xc0da('0x61')]);_0x313194[_0xc0da('0x41')]=_0x8863d9[_0xc0da('0x41')];_0x313194[_0xc0da('0x42')]=_0x8863d9[_0xc0da('0x42')];return db[_0xc0da('0x46')][_0xc0da('0x69')](_0x313194,{'include':[{'model':db['MailServerOut'],'as':'Smtp'},{'model':db['MailServerIn'],'as':_0xc0da('0x41')}]})[_0xc0da('0x24')](function(_0x3f1668){var _0x104c2c=_0x300da1['user'][_0xc0da('0x76')]({'plain':!![]});if(!_0x104c2c)throw new Error(_0xc0da('0x77'));if(_0x104c2c[_0xc0da('0x78')]===_0xc0da('0x36')){var _0x5e947a=_0x3f1668[_0xc0da('0x76')]({'plain':!![]});return db[_0xc0da('0x79')][_0xc0da('0x64')]({'where':{'name':_0xc0da('0x26'),'userProfileId':_0x104c2c[_0xc0da('0x7a')]},'raw':!![]})[_0xc0da('0x24')](function(_0x2c899e){if(_0x2c899e&&_0x2c899e['autoAssociation']===0x0){return db[_0xc0da('0x27')]['create']({'name':_0x5e947a[_0xc0da('0x29')],'resourceId':_0x5e947a['id'],'type':_0x2c899e[_0xc0da('0x29')],'sectionId':_0x2c899e['id']},{})['then'](function(){return _0x3f1668;});}else{return _0x3f1668;}})['catch'](function(_0x425e24){logger['error'](_0xc0da('0x7b'),_0x425e24);throw _0x425e24;});}return _0x3f1668;})[_0xc0da('0x24')](respondWithResult(_0x777c8,0xc9))[_0xc0da('0x1a')](handleError(_0x777c8,null));};exports[_0xc0da('0x7c')]=function(_0x475845,_0x4a3bf3){return db[_0xc0da('0x46')]['findOne']({'where':{'id':_0x475845['params']['id']}})['then'](handleEntityNotFound(_0x4a3bf3,null))['then'](function(_0x4ffcb2){if(_0x4ffcb2){return _0x4ffcb2[_0xc0da('0x7c')]();}return null;})[_0xc0da('0x24')](respondWithResult(_0x4a3bf3,null))[_0xc0da('0x1a')](handleError(_0x4a3bf3,null));};exports['addImap']=function(_0x65e60d,_0x393e67){if(_0x65e60d[_0xc0da('0x61')]['id']){delete _0x65e60d['body']['id'];}return db[_0xc0da('0x46')][_0xc0da('0x64')]({'where':{'id':_0x65e60d['params']['id']}})[_0xc0da('0x24')](handleEntityNotFound(_0x393e67,null))[_0xc0da('0x24')](function(_0xb824a2){if(_0xb824a2){_0x65e60d[_0xc0da('0x61')][_0xc0da('0x67')]=_0xb824a2['id'];return db[_0xc0da('0x5e')]['create'](_0x65e60d['body']);}})['then'](respondWithResult(_0x393e67,null))['catch'](handleError(_0x393e67,null));};exports[_0xc0da('0x7d')]=function(_0x4b2aec,_0x53536c){return db['MailAccount'][_0xc0da('0x6a')]({'where':{'id':_0x4b2aec[_0xc0da('0x66')]['id']}})[_0xc0da('0x24')](handleEntityNotFound(_0x53536c,null))[_0xc0da('0x24')](function(_0x3ed892){if(_0x3ed892){return _0x3ed892[_0xc0da('0x7e')](null);}return null;})[_0xc0da('0x24')](respondWithStatusCode(_0x53536c,null))['catch'](handleError(_0x53536c,null));};exports[_0xc0da('0x7f')]=function(_0x2df3bb,_0x374124){return db[_0xc0da('0x46')]['findOne']({'where':{'id':_0x2df3bb[_0xc0da('0x66')]['id']}})['then'](handleEntityNotFound(_0x374124,null))[_0xc0da('0x24')](function(_0x1f5be1){if(_0x1f5be1){return _0x1f5be1[_0xc0da('0x7f')]();}return null;})['then'](respondWithResult(_0x374124,null))[_0xc0da('0x1a')](handleError(_0x374124,null));};exports['addSmtp']=function(_0xb18d5e,_0x5c7b21){if(_0xb18d5e[_0xc0da('0x61')]['id']){delete _0xb18d5e[_0xc0da('0x61')]['id'];}return db[_0xc0da('0x46')]['find']({'where':{'id':_0xb18d5e[_0xc0da('0x66')]['id']}})['then'](handleEntityNotFound(_0x5c7b21,null))[_0xc0da('0x24')](function(_0x19c8b0){if(_0x19c8b0){_0xb18d5e[_0xc0da('0x61')][_0xc0da('0x67')]=_0x19c8b0['id'];return db[_0xc0da('0x5f')][_0xc0da('0x69')](_0xb18d5e[_0xc0da('0x61')]);}})[_0xc0da('0x24')](respondWithResult(_0x5c7b21,null))[_0xc0da('0x1a')](handleError(_0x5c7b21,null));};exports[_0xc0da('0x80')]=function(_0x439780,_0x3581dc){return db[_0xc0da('0x46')]['findOne']({'where':{'id':_0x439780[_0xc0da('0x66')]['id']}})[_0xc0da('0x24')](handleEntityNotFound(_0x3581dc,null))[_0xc0da('0x24')](function(_0x3e5045){if(_0x3e5045){return _0x3e5045['setSmtp'](null);}return null;})[_0xc0da('0x24')](respondWithStatusCode(_0x3581dc,null))[_0xc0da('0x1a')](handleError(_0x3581dc,null));};exports[_0xc0da('0x81')]=function(_0x55f966,_0x4c3f7b){return db[_0xc0da('0x82')][_0xc0da('0x64')]({'where':{'id':_0x55f966[_0xc0da('0x66')]['id']}})[_0xc0da('0x24')](handleEntityNotFound(_0x4c3f7b,null))[_0xc0da('0x24')](function(_0x52e444){if(_0x52e444){return _0x52e444['addInteraction'](_0x55f966['body']['ids'],_['omit'](_0x55f966['body'],[_0xc0da('0x6e'),'id'])||{});}})[_0xc0da('0x24')](respondWithResult(_0x4c3f7b,null))[_0xc0da('0x1a')](handleError(_0x4c3f7b,null));};exports[_0xc0da('0x83')]=function(_0x404650,_0x1db543){var _0x14764f={'raw':![],'where':{}};var _0x233680={};var _0x51dfee={'count':0x0,'rows':[]};return db[_0xc0da('0x46')][_0xc0da('0x6a')]({'where':{'id':_0x404650[_0xc0da('0x66')]['id']}})['then'](handleEntityNotFound(_0x1db543,null))[_0xc0da('0x24')](function(_0x4e6b06){if(_0x4e6b06){_0x233680['model']=_[_0xc0da('0x60')](db['MailInteraction']['rawAttributes']);_0x233680['query']=_[_0xc0da('0x60')](_0x404650[_0xc0da('0x4d')]);_0x233680[_0xc0da('0x4e')]=_[_0xc0da('0x4f')](_0x233680[_0xc0da('0x4b')],_0x233680['query']);_0x14764f[_0xc0da('0x50')]=_['intersection'](_0x233680[_0xc0da('0x4b')],qs[_0xc0da('0x51')](_0x404650[_0xc0da('0x4d')][_0xc0da('0x51')]));_0x14764f['attributes']=_0x14764f[_0xc0da('0x50')]['length']?_0x14764f[_0xc0da('0x50')]:_0x233680['model'];if(!_0x404650['query'][_0xc0da('0x6b')](_0xc0da('0x53'))){_0x14764f[_0xc0da('0x54')]=qs[_0xc0da('0x54')](_0x404650['query']['limit']);_0x14764f['offset']=qs[_0xc0da('0x1e')](_0x404650[_0xc0da('0x4d')][_0xc0da('0x1e')]);}_0x14764f[_0xc0da('0x55')]=qs[_0xc0da('0x56')](_0x404650['query'][_0xc0da('0x56')]);_0x14764f['where']=qs[_0xc0da('0x4e')](_[_0xc0da('0x58')](_0x404650['query'],_0x233680[_0xc0da('0x4e')]));_0x14764f[_0xc0da('0x57')]['MailAccountId']=_0x4e6b06['id'];if(_0x404650[_0xc0da('0x4d')][_0xc0da('0x59')]){_0x14764f[_0xc0da('0x57')]=_[_0xc0da('0x5a')](_0x14764f[_0xc0da('0x57')],{'$or':_['map'](_0x14764f[_0xc0da('0x50')],function(_0x2ba8bc){var _0xc2cffa={};_0xc2cffa[_0x2ba8bc]={'$like':'%'+_0x404650[_0xc0da('0x4d')][_0xc0da('0x59')]+'%'};return _0xc2cffa;})});}_0x14764f=_[_0xc0da('0x5a')]({},_0x14764f,_0x404650[_0xc0da('0x6c')]);return db[_0xc0da('0x82')][_0xc0da('0x20')]({'where':_0x14764f['where']})[_0xc0da('0x24')](function(_0x14dfe8){_0x51dfee[_0xc0da('0x20')]=_0x14dfe8;if(_0x404650[_0xc0da('0x4d')][_0xc0da('0x5b')]){_0x14764f['include']=[{'model':db[_0xc0da('0x84')],'as':_0xc0da('0x85'),'required':![]},{'model':db[_0xc0da('0x86')],'as':'Owner','attributes':[_0xc0da('0x29'),'fullname','internal'],'required':![]},{'model':db[_0xc0da('0x87')],'as':'Tags','attributes':['id',_0xc0da('0x29'),'color'],'where':_0x404650[_0xc0da('0x4d')][_0xc0da('0x88')]?{'id':_0x404650[_0xc0da('0x4d')]['tag']}:undefined,'required':_0x404650[_0xc0da('0x4d')][_0xc0da('0x88')]?!![]:![]}];}return db['MailInteraction'][_0xc0da('0x5d')](_0x14764f);})['then'](function(_0x1281a5){_0x51dfee[_0xc0da('0x89')]=_0x1281a5;return _0x51dfee;});}})[_0xc0da('0x24')](respondWithFilteredResult(_0x1db543,_0x14764f))['catch'](handleError(_0x1db543,null));};exports['addApplications']=function addApplications(_0x1a6c01,_0x356d3e){var _0x5e548a=_0x1a6c01[_0xc0da('0x66')]['id'];var _0x50bfcf=_0x1a6c01[_0xc0da('0x61')];var _0xfb5bf0=0xc8;var _0xd14701=null;return db[_0xc0da('0x8a')][_0xc0da('0x8b')]({'isolationLevel':db[_0xc0da('0x8a')][_0xc0da('0x8c')][_0xc0da('0x8d')][_0xc0da('0x8e')]},function(_0x156b74){return db['MailAccount'][_0xc0da('0x6a')]({'where':{'id':_0x5e548a},'transaction':_0x156b74})[_0xc0da('0x24')](function(_0x3a61ca){if(_0x3a61ca){return db[_0xc0da('0x8f')][_0xc0da('0x25')]({'where':{'MailAccountId':_0x5e548a},'transaction':_0x156b74})[_0xc0da('0x24')](function(){var _0x4bdc41=_[_0xc0da('0x4c')](_0x50bfcf,function(_0x1f2f70){_0x1f2f70[_0xc0da('0x67')]=_0x5e548a;return _0x1f2f70;});return db['MailApplication'][_0xc0da('0x90')](_0x4bdc41,{'transaction':_0x156b74});});}else{_0xfb5bf0=0x194;_0xd14701=[];}});})['then'](function(){if(_0xfb5bf0!==0x194){return db['MailApplication'][_0xc0da('0x91')]({'where':{'MailAccountId':_0x5e548a},'order':_0xc0da('0x92')})[_0xc0da('0x24')](function(_0x3a1abf){_0xd14701=_0x3a1abf;});}})['catch'](function(_0x535ef3){_0xfb5bf0=0x1f4;logger[_0xc0da('0x18')](_0x535ef3[_0xc0da('0x28')]);if(_0x535ef3[_0xc0da('0x29')]){delete _0x535ef3[_0xc0da('0x29')];}_0xd14701=_0x535ef3;})[_0xc0da('0x93')](function(){if(_0xd14701===null){_0x356d3e[_0xc0da('0x1b')](_0xfb5bf0);}else{if(_0xfb5bf0===0x1f4){_0x356d3e[_0xc0da('0x21')](_0xfb5bf0)['send'](_0xd14701);}else{_0x356d3e[_0xc0da('0x21')](_0xfb5bf0)[_0xc0da('0x1d')](_0xd14701);}}});};exports[_0xc0da('0x94')]=function(_0x234628,_0x45cc17){var _0x2f8431={};var _0x524f94={};var _0x58695c;var _0x342c7;return db[_0xc0da('0x46')][_0xc0da('0x6a')]({'where':{'id':_0x234628['params']['id']}})['then'](handleEntityNotFound(_0x45cc17,null))[_0xc0da('0x24')](function(_0x536bf7){if(_0x536bf7){_0x58695c=_0x536bf7;_0x524f94['model']=_[_0xc0da('0x60')](db['MailApplication'][_0xc0da('0x47')]);_0x524f94[_0xc0da('0x4d')]=_[_0xc0da('0x60')](_0x234628[_0xc0da('0x4d')]);_0x524f94['filters']=_[_0xc0da('0x4f')](_0x524f94['model'],_0x524f94[_0xc0da('0x4d')]);_0x2f8431['attributes']=_['intersection'](_0x524f94['model'],qs[_0xc0da('0x51')](_0x234628['query'][_0xc0da('0x51')]));_0x2f8431[_0xc0da('0x50')]=_0x2f8431[_0xc0da('0x50')][_0xc0da('0x52')]?_0x2f8431['attributes']:_0x524f94[_0xc0da('0x4b')];_0x2f8431['order']=qs[_0xc0da('0x56')](_0x234628['query']['sort']);_0x2f8431['where']=qs[_0xc0da('0x4e')](_['pick'](_0x234628[_0xc0da('0x4d')],_0x524f94[_0xc0da('0x4e')]));if(_0x234628['query'][_0xc0da('0x59')]){_0x2f8431[_0xc0da('0x57')]=_[_0xc0da('0x5a')](_0x2f8431[_0xc0da('0x57')],{'$or':_[_0xc0da('0x4c')](_0x2f8431[_0xc0da('0x50')],function(_0x2bd6f9){var _0x4e5e51={};_0x4e5e51[_0x2bd6f9]={'$like':'%'+_0x234628[_0xc0da('0x4d')][_0xc0da('0x59')]+'%'};return _0x4e5e51;})});}_0x2f8431=_['merge']({},_0x2f8431,_0x234628[_0xc0da('0x6c')]);return _0x58695c[_0xc0da('0x94')](_0x2f8431);}})[_0xc0da('0x24')](function(_0x1924b5){if(_0x1924b5){_0x342c7=_0x1924b5[_0xc0da('0x52')];if(!_0x234628[_0xc0da('0x4d')]['hasOwnProperty'](_0xc0da('0x53'))){_0x2f8431[_0xc0da('0x54')]=qs[_0xc0da('0x54')](_0x234628['query'][_0xc0da('0x54')]);_0x2f8431['offset']=qs[_0xc0da('0x1e')](_0x234628[_0xc0da('0x4d')][_0xc0da('0x1e')]);}return _0x58695c[_0xc0da('0x94')](_0x2f8431);}})[_0xc0da('0x24')](function(_0x7fbe53){if(_0x7fbe53){return _0x7fbe53?{'count':_0x342c7,'rows':_0x7fbe53}:null;}})['then'](respondWithResult(_0x45cc17,null))[_0xc0da('0x1a')](handleError(_0x45cc17,null));};exports['getMessages']=function(_0x57362f,_0x6c7987){var _0x3250bc={'raw':!![],'where':{}};var _0x5efbad={};var _0x4d6e56={'count':0x0,'rows':[]};return db[_0xc0da('0x46')][_0xc0da('0x6a')]({'where':{'id':_0x57362f[_0xc0da('0x66')]['id']}})[_0xc0da('0x24')](handleEntityNotFound(_0x6c7987,null))[_0xc0da('0x24')](function(_0x5517f1){if(_0x5517f1){_0x5efbad['model']=_['keys'](db['MailMessage']['rawAttributes']);_0x5efbad['query']=_[_0xc0da('0x60')](_0x57362f['query']);_0x5efbad[_0xc0da('0x4e')]=_['intersection'](_0x5efbad[_0xc0da('0x4b')],_0x5efbad[_0xc0da('0x4d')]);_0x3250bc[_0xc0da('0x50')]=_[_0xc0da('0x4f')](_0x5efbad[_0xc0da('0x4b')],qs[_0xc0da('0x51')](_0x57362f['query'][_0xc0da('0x51')]));_0x3250bc[_0xc0da('0x50')]=_0x3250bc[_0xc0da('0x50')][_0xc0da('0x52')]?_0x3250bc[_0xc0da('0x50')]:_0x5efbad[_0xc0da('0x4b')];if(!_0x57362f[_0xc0da('0x4d')][_0xc0da('0x6b')]('nolimit')){_0x3250bc[_0xc0da('0x54')]=qs[_0xc0da('0x54')](_0x57362f['query'][_0xc0da('0x54')]);_0x3250bc[_0xc0da('0x1e')]=qs[_0xc0da('0x1e')](_0x57362f['query'][_0xc0da('0x1e')]);}_0x3250bc[_0xc0da('0x55')]=qs[_0xc0da('0x56')](_0x57362f['query'][_0xc0da('0x56')]);_0x3250bc['where']=qs[_0xc0da('0x4e')](_[_0xc0da('0x58')](_0x57362f[_0xc0da('0x4d')],_0x5efbad[_0xc0da('0x4e')]));_0x3250bc['where'][_0xc0da('0x67')]=_0x5517f1['id'];if(_0x57362f[_0xc0da('0x4d')]['filter']){_0x3250bc[_0xc0da('0x57')]=_[_0xc0da('0x5a')](_0x3250bc[_0xc0da('0x57')],{'$or':_['map'](_0x3250bc[_0xc0da('0x50')],function(_0x274c6a){var _0x231ff3={};_0x231ff3[_0x274c6a]={'$like':'%'+_0x57362f[_0xc0da('0x4d')][_0xc0da('0x59')]+'%'};return _0x231ff3;})});}if(_0x57362f[_0xc0da('0x4d')]['$gte']){var _0x2c6358=_0x57362f['query'][_0xc0da('0x95')]['split'](',');var _0x562412={};_0x562412[_0x2c6358[0x0]]={'$gte':moment(_0x2c6358[0x1])[_0xc0da('0x96')]('YYYY-MM-DD\x20HH:mm:ss')};_0x3250bc[_0xc0da('0x57')]=_['merge'](_0x3250bc[_0xc0da('0x57')],_0x562412);}_0x3250bc=_[_0xc0da('0x5a')]({},_0x3250bc,_0x57362f[_0xc0da('0x6c')]);return db['MailMessage'][_0xc0da('0x20')]({'where':_0x3250bc[_0xc0da('0x57')]})[_0xc0da('0x24')](function(_0x1dba34){_0x4d6e56['count']=_0x1dba34;if(_0x57362f['query']['includeAll']){_0x3250bc['include']=[{'all':!![]}];}return db[_0xc0da('0x97')][_0xc0da('0x5d')](_0x3250bc);})[_0xc0da('0x24')](function(_0xfbf49){if(_0x57362f[_0xc0da('0x4d')]['inlineCss']==='true'){for(var _0xf3eacb=0x0;_0xf3eacb<_0xfbf49[_0xc0da('0x52')];_0xf3eacb++){_0xfbf49[_0xf3eacb][_0xc0da('0x61')]=juice(_0xfbf49[_0xf3eacb][_0xc0da('0x61')]);}}_0x4d6e56['rows']=_0xfbf49;return _0x4d6e56;});}})[_0xc0da('0x24')](respondWithFilteredResult(_0x6c7987,_0x3250bc))[_0xc0da('0x1a')](handleError(_0x6c7987,null));};exports[_0xc0da('0x2a')]=function(_0x2e996d,_0x43b3d4){var _0x1a5a8f,_0x3b429a={},_0x4f2a5a;if(_0x2e996d[_0xc0da('0x61')]['to']){_0x4f2a5a=_0x2e996d[_0xc0da('0x61')]['to'][_0xc0da('0x98')](',')[0x0];}return db[_0xc0da('0x46')][_0xc0da('0x64')]({'where':{'id':_0x2e996d[_0xc0da('0x66')]['id']},'include':[{'model':db[_0xc0da('0x99')],'as':_0xc0da('0x9a'),'include':[{'model':db[_0xc0da('0x84')],'as':_0xc0da('0x9b'),'where':{'email':_0x4f2a5a},'limit':0x1,'order':[['updatedAt',_0xc0da('0x9c')]]}]},{'model':db['MailServerOut'],'as':'Smtp','raw':!![],'include':[{'model':db[_0xc0da('0x9d')],'as':_0xc0da('0x9d'),'raw':!![]}]}]})[_0xc0da('0x24')](handleEntityNotFound(_0x43b3d4,null))['then'](function(_0x8d0182){if(!_0x8d0182)return;_0x1a5a8f=_0x8d0182;if(!_0x8d0182[_0xc0da('0x42')])throw new Error(_0xc0da('0x9e'));if(_[_0xc0da('0x9f')](_0x2e996d[_0xc0da('0x61')][_0xc0da('0xa0')])){_0x2e996d[_0xc0da('0x61')][_0xc0da('0xa0')]=util['format']('%s\x20<%s>',_0x8d0182[_0xc0da('0x29')],_0x8d0182[_0xc0da('0x72')]||_0x8d0182[_0xc0da('0x42')][_0xc0da('0x36')]);}if(_0x2e996d[_0xc0da('0x61')]['attachments']&&_0x2e996d['body'][_0xc0da('0xa1')][_0xc0da('0x52')]){for(var _0x2709a0=0x0;_0x2709a0<_0x2e996d[_0xc0da('0x61')][_0xc0da('0xa1')][_0xc0da('0x52')];_0x2709a0+=0x1){_0x2e996d['body']['attachments'][_0x2709a0]={'filename':_0x2e996d[_0xc0da('0x61')]['attachments'][_0x2709a0][_0xc0da('0x29')],'path':path[_0xc0da('0xa2')](config[_0xc0da('0xa3')],_0xc0da('0xa4'),_0x2e996d[_0xc0da('0x61')]['attachments'][_0x2709a0][_0xc0da('0xa5')])};}}var _0x25c38c=_0x8d0182['getSmtpOptions']();return respondWithRpcPromise('SendMail',_0xc0da('0xa6'),{'account':_0x25c38c,'message':_0x2e996d[_0xc0da('0x61')]});})[_0xc0da('0x24')](function(_0x204377){if(!_0x204377)return;_0x3b429a=_0x204377;if(!_0x1a5a8f[_0xc0da('0x9a')])throw new Error(_0xc0da('0xa7'));if(_0x1a5a8f[_0xc0da('0x9a')][_0xc0da('0x9b')][_0xc0da('0x52')])return _0x1a5a8f['List'][_0xc0da('0x9b')][0x0];return db['CmContact'][_0xc0da('0x69')](_[_0xc0da('0xb')](_0x2e996d[_0xc0da('0x61')],{'firstName':_0x2e996d[_0xc0da('0x61')]['to'],'email':_0x2e996d[_0xc0da('0x61')]['to'],'phone':_0x2e996d['body']['to'],'ListId':_0x1a5a8f[_0xc0da('0x73')]}));})[_0xc0da('0x24')](function(_0x5cfe7e){if(!_0x5cfe7e)return;var _0x8416a3={'UserId':_0x2e996d['user']['id'],'ContactId':_0x5cfe7e['id'],'MailAccountId':_0x1a5a8f['id'],'inReplyTo':_0x3b429a['messageId'],'to':_0x2e996d[_0xc0da('0x61')][_0xc0da('0xa0')],'cc':_0x2e996d[_0xc0da('0x61')]['cc'],'subject':_0x2e996d['body'][_0xc0da('0xa8')],'attach':_0x2e996d[_0xc0da('0x61')][_0xc0da('0xa9')],'firstMsgDirection':_0xc0da('0xaa'),'lastMsgAt':moment()[_0xc0da('0x96')](_0xc0da('0xab')),'lastMsgDirection':'out','Messages':[_[_0xc0da('0x5a')](_0x2e996d[_0xc0da('0x61')],{'messageId':_0x3b429a[_0xc0da('0xac')],'sentAt':moment()[_0xc0da('0x96')]('YYYY-MM-DD\x20HH:mm:ss'),'read':!![],'MailAccountId':_0x1a5a8f['id'],'UserId':_0x2e996d[_0xc0da('0x36')]['id'],'ContactId':_0x5cfe7e['id']})]};if(_0x2e996d['body'][_0xc0da('0xad')]){_0x8416a3=_[_0xc0da('0x5a')](_0x8416a3,_0x2e996d[_0xc0da('0x61')]['Interaction']);}return db[_0xc0da('0x82')][_0xc0da('0x69')](_0x8416a3,{'include':[{'model':db['MailMessage'],'as':'Messages'}]});})['then'](respondWithResult(_0x43b3d4,null))[_0xc0da('0x1a')](handleError(_0x43b3d4,null));};exports[_0xc0da('0xae')]=function(_0xcc2e1d,_0x3a7b4c){return db[_0xc0da('0x46')][_0xc0da('0x64')]({'where':{'id':_0xcc2e1d[_0xc0da('0x66')]['id']},'include':[{'model':db[_0xc0da('0x5f')],'as':_0xc0da('0x42'),'raw':!![],'include':[{'model':db[_0xc0da('0x9d')],'as':'CloudProvider','raw':!![]}]}]})['then'](handleEntityNotFound(_0x3a7b4c,null))[_0xc0da('0x24')](function(_0x5401c3){if(!_0x5401c3[_0xc0da('0x42')])return;var _0x255ead=_0x5401c3['getSmtpOptions']();return respondWithRpcPromise(_0xc0da('0xaf'),_0xc0da('0xae'),{'account':_0x255ead});})[_0xc0da('0x24')](respondWithResult(_0x3a7b4c,null))[_0xc0da('0x1a')](handleError(_0x3a7b4c,null));};exports[_0xc0da('0x25')]=function(_0x3371a4,_0x1cb09b){return db[_0xc0da('0x46')][_0xc0da('0x64')]({'where':{'id':_0x3371a4[_0xc0da('0x66')]['id']}})[_0xc0da('0x24')](handleEntityNotFound(_0x1cb09b,null))[_0xc0da('0x24')](function(_0x25fd97){if(_0x25fd97&&_0x25fd97[_0xc0da('0x3f')]){throw new db[(_0xc0da('0xb0'))][(_0xc0da('0xb1'))](_0xc0da('0xb2'));}return _0x25fd97;})[_0xc0da('0x24')](removeEntity(_0x1cb09b,null))[_0xc0da('0x1a')](handleError(_0x1cb09b,null));};exports[_0xc0da('0xb3')]=function(_0x4b6f61,_0x145ed6){return db[_0xc0da('0x46')][_0xc0da('0x64')]({'where':{'id':_0x4b6f61[_0xc0da('0x66')]['id']}})[_0xc0da('0x24')](handleEntityNotFound(_0x145ed6,null))[_0xc0da('0x24')](function(_0x5896eb){if(_0x5896eb){return _0x5896eb[_0xc0da('0xb3')](_0x4b6f61[_0xc0da('0x61')][_0xc0da('0x6e')],_[_0xc0da('0xb4')](_0x4b6f61[_0xc0da('0x61')],[_0xc0da('0x6e'),'id'])||{})[_0xc0da('0xb5')](function(_0x394b0f){for(var _0x3db831=0x0;_0x3db831<_0x4b6f61[_0xc0da('0x61')][_0xc0da('0x6e')][_0xc0da('0x52')];_0x3db831+=0x1){socket['emit'](_0xc0da('0xb6'),{'UserId':Number(_0x4b6f61['body']['ids'][_0x3db831]),'MailAccountId':Number(_0x4b6f61[_0xc0da('0x66')]['id'])});}return _0x394b0f;});}})[_0xc0da('0x24')](respondWithResult(_0x145ed6,null))[_0xc0da('0x1a')](handleError(_0x145ed6,null));};exports[_0xc0da('0xb7')]=function(_0x11e301,_0x2c390e){return db[_0xc0da('0x46')][_0xc0da('0x64')]({'where':{'id':_0x11e301[_0xc0da('0x66')]['id']}})[_0xc0da('0x24')](handleEntityNotFound(_0x2c390e,null))['then'](function(_0x575e97){if(_0x575e97){return _0x575e97[_0xc0da('0xb7')](_0x11e301[_0xc0da('0x4d')][_0xc0da('0x6e')])[_0xc0da('0x24')](function(){if(_[_0xc0da('0xb8')](_0x11e301[_0xc0da('0x4d')]['ids'])){for(var _0xcd29ad=0x0;_0xcd29ad<_0x11e301[_0xc0da('0x4d')][_0xc0da('0x6e')][_0xc0da('0x52')];_0xcd29ad+=0x1){socket[_0xc0da('0xb9')](_0xc0da('0xba'),{'UserId':Number(_0x11e301[_0xc0da('0x4d')][_0xc0da('0x6e')][_0xcd29ad]),'MailAccountId':Number(_0x11e301['params']['id'])});}}else{socket['emit'](_0xc0da('0xba'),{'UserId':Number(_0x11e301[_0xc0da('0x4d')][_0xc0da('0x6e')]),'MailAccountId':Number(_0x11e301[_0xc0da('0x66')]['id'])});}});}})[_0xc0da('0x24')](respondWithStatusCode(_0x2c390e,null))[_0xc0da('0x1a')](handleError(_0x2c390e,null));};exports['getAgents']=function(_0x4a4d17,_0x31832e){var _0x1499cb={};var _0x1bd185={};var _0x26dfb1;var _0x4fb0c7;return db[_0xc0da('0x46')][_0xc0da('0x6a')]({'where':{'id':_0x4a4d17[_0xc0da('0x66')]['id']}})[_0xc0da('0x24')](handleEntityNotFound(_0x31832e,null))['then'](function(_0x170fad){if(_0x170fad){_0x26dfb1=_0x170fad;_0x1bd185[_0xc0da('0x4b')]=_[_0xc0da('0x60')](db['User'][_0xc0da('0x47')]);_0x1bd185[_0xc0da('0x4d')]=_[_0xc0da('0x60')](_0x4a4d17[_0xc0da('0x4d')]);_0x1bd185[_0xc0da('0x4e')]=_[_0xc0da('0x4f')](_0x1bd185['model'],_0x1bd185['query']);_0x1499cb[_0xc0da('0x50')]=_['intersection'](_0x1bd185[_0xc0da('0x4b')],qs['fields'](_0x4a4d17[_0xc0da('0x4d')]['fields']));_0x1499cb[_0xc0da('0x50')]=_0x1499cb[_0xc0da('0x50')][_0xc0da('0x52')]?_0x1499cb[_0xc0da('0x50')]:_0x1bd185[_0xc0da('0x4b')];_0x1499cb[_0xc0da('0x55')]=qs[_0xc0da('0x56')](_0x4a4d17[_0xc0da('0x4d')]['sort']);_0x1499cb[_0xc0da('0x57')]=qs[_0xc0da('0x4e')](_[_0xc0da('0x58')](_0x4a4d17[_0xc0da('0x4d')],_0x1bd185[_0xc0da('0x4e')]));if(_0x4a4d17[_0xc0da('0x4d')]['filter']){_0x1499cb['where']=_[_0xc0da('0x5a')](_0x1499cb[_0xc0da('0x57')],{'$or':_['map'](_0x1499cb[_0xc0da('0x50')],function(_0x2b822c){var _0x980f8b={};_0x980f8b[_0x2b822c]={'$like':'%'+_0x4a4d17[_0xc0da('0x4d')][_0xc0da('0x59')]+'%'};return _0x980f8b;})});}_0x1499cb=_[_0xc0da('0x5a')]({},_0x1499cb,_0x4a4d17['options']);return _0x26dfb1['getAgents'](_0x1499cb);}})[_0xc0da('0x24')](function(_0x19573a){if(_0x19573a){_0x4fb0c7=_0x19573a['length'];if(!_0x4a4d17[_0xc0da('0x4d')][_0xc0da('0x6b')](_0xc0da('0x53'))){_0x1499cb['limit']=qs['limit'](_0x4a4d17[_0xc0da('0x4d')]['limit']);_0x1499cb[_0xc0da('0x1e')]=qs[_0xc0da('0x1e')](_0x4a4d17['query'][_0xc0da('0x1e')]);}return _0x26dfb1[_0xc0da('0xbb')](_0x1499cb);}})[_0xc0da('0x24')](function(_0x3c99ca){if(_0x3c99ca){return _0x3c99ca?{'count':_0x4fb0c7,'rows':_0x3c99ca}:null;}})[_0xc0da('0x24')](respondWithResult(_0x31832e,null))['catch'](handleError(_0x31832e,null));};
\ No newline at end of file
+var _0xe426=['offset','limit','undefined','count','set','Content-Range','destroy','get','MailAccounts','UserProfileResource','stack','name','send','gmail','imap.gmail.com','yahoo','hotmail','outlook365','outlook.office365.com','smtp-mail.outlook.com','smtp.office365.com','Unknown\x20email\x20service\x20provider','user','username','password','modernAuthentication','CloudProviderId','pass','host','port','secure','service','authentication','Imap','Smtp','index','MailServerIn','MailServerOut','Pause','mandatoryDispositionPause','map','MailAccount','fieldName','type','query','filters','intersection','model','fields','attributes','length','nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','keys','find','body','provider','custom','Mail\x20Account\x20not\x20found','update','describe','addDisposition','Disposition','MailAccountId','removeDispositions','ids','addAnswer','CannedAnswer','create','getAnswers','findOne','removeAnswers','key','isNil','active','description','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','getImap','addImap','removeImap','getSmtp','addSmtp','removeSmtp','setSmtp','addInteraction','MailInteraction','omit','getInteractions','pick','CmContact','User','fullname','internal','Tags','tag','addApplications','Transaction','ISOLATION_LEVELS','READ_COMMITTED','MailApplication','bulkCreate','findAndCountAll','priority','finally','getApplications','hasOwnProperty','getMessages','MailMessage','$gte','split','format','inlineCss','true','CmList','List','Contacts','updatedAt','CloudProvider','Smtp\x20configuration\x20not\x20found','from','attachments','join','root','server/files/attachments','basename','sendMail','List\x20not\x20found','ListId','messageId','subject','attach','out','YYYY-MM-DD\x20HH:mm:ss','Interaction','Messages','verifySmtp','getSmtpOptions','VerifySmtp','Sequelize','ValidationError','addAgents','spread','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','getAgents','moment','bluebird','util','path','lodash','juice','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./mailAccount.socket','register','jayson/promise','http','request','then','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result','sendStatus','status','end','json'];(function(_0x2f1238,_0x2ddb24){var _0x1d626f=function(_0x142063){while(--_0x142063){_0x2f1238['push'](_0x2f1238['shift']());}};_0x1d626f(++_0x2ddb24);}(_0xe426,0x16b));var _0x6e42=function(_0x32b03e,_0x568dae){_0x32b03e=_0x32b03e-0x0;var _0x11e244=_0xe426[_0x32b03e];return _0x11e244;};'use strict';var moment=require(_0x6e42('0x0'));var BPromise=require(_0x6e42('0x1'));var util=require(_0x6e42('0x2'));var path=require(_0x6e42('0x3'));var _=require(_0x6e42('0x4'));var juice=require(_0x6e42('0x5'));var Redis=require('ioredis');var qs=require(_0x6e42('0x6'));var logger=require(_0x6e42('0x7'))(_0x6e42('0x8'));var config=require(_0x6e42('0x9'));var db=require(_0x6e42('0xa'))['db'];config['redis']=_[_0x6e42('0xb')](config[_0x6e42('0xc')],{'host':_0x6e42('0xd'),'port':0x18eb});var socket=require(_0x6e42('0xe'))(new Redis(config[_0x6e42('0xc')]));require(_0x6e42('0xf'))[_0x6e42('0x10')](socket);var jayson=require(_0x6e42('0x11'));var client=jayson['client'][_0x6e42('0x12')]({'port':0x232b});function respondWithRpcPromise(_0x5b76ec,_0x130aab,_0x1208ed,_0x1c0f33){return new BPromise(function(_0x594553,_0x504ae4){var _0x6f272f=_0x1c0f33||client;return _0x6f272f[_0x6e42('0x13')](_0x5b76ec,_0x1208ed)[_0x6e42('0x14')](function(_0x523768){logger['info'](_0x6e42('0x15'),_0x130aab,'request\x20sent');logger[_0x6e42('0x16')](_0x6e42('0x17'),_0x130aab,'request\x20sent',JSON[_0x6e42('0x18')](_0x523768));if(_0x523768[_0x6e42('0x19')]){if(_0x523768[_0x6e42('0x19')][_0x6e42('0x1a')]===0x1f4){logger[_0x6e42('0x19')](_0x6e42('0x15'),_0x130aab,_0x523768[_0x6e42('0x19')][_0x6e42('0x1b')]);return _0x504ae4(_0x523768[_0x6e42('0x19')][_0x6e42('0x1b')]);}logger[_0x6e42('0x19')]('MailAccount,\x20%s,\x20%s',_0x130aab,_0x523768['error'][_0x6e42('0x1b')]);return _0x594553(_0x523768[_0x6e42('0x19')][_0x6e42('0x1b')]);}else{logger[_0x6e42('0x1c')](_0x6e42('0x15'),_0x130aab,_0x6e42('0x1d'));_0x594553(_0x523768[_0x6e42('0x1e')][_0x6e42('0x1b')]);}})['catch'](function(_0x420ce6){logger[_0x6e42('0x19')](_0x6e42('0x15'),_0x130aab,_0x420ce6);_0x504ae4(_0x420ce6);});});}function respondWithStatusCode(_0x58ad79,_0x1cc261){_0x1cc261=_0x1cc261||0xcc;return function(_0x5c6872){if(_0x5c6872){return _0x58ad79[_0x6e42('0x1f')](_0x1cc261);}return _0x58ad79[_0x6e42('0x20')](_0x1cc261)[_0x6e42('0x21')]();};}function respondWithResult(_0x508d70,_0x14caa4){_0x14caa4=_0x14caa4||0xc8;return function(_0x2ff634){if(_0x2ff634){return _0x508d70[_0x6e42('0x20')](_0x14caa4)[_0x6e42('0x22')](_0x2ff634);}};}function respondWithFilteredResult(_0x5de375,_0x33c39f){return function(_0x4159f9){if(_0x4159f9){var _0x2c8a81=typeof _0x33c39f[_0x6e42('0x23')]==='undefined'&&typeof _0x33c39f[_0x6e42('0x24')]===_0x6e42('0x25');var _0x208ac4=_0x4159f9[_0x6e42('0x26')];var _0x4a6fe9=_0x2c8a81?0x0:_0x33c39f[_0x6e42('0x23')];var _0x54d87f=_0x2c8a81?_0x4159f9[_0x6e42('0x26')]:_0x33c39f[_0x6e42('0x23')]+_0x33c39f['limit'];var _0x3303f1;if(_0x54d87f>=_0x208ac4){_0x54d87f=_0x208ac4;_0x3303f1=0xc8;}else{_0x3303f1=0xce;}_0x5de375[_0x6e42('0x20')](_0x3303f1);return _0x5de375[_0x6e42('0x27')](_0x6e42('0x28'),_0x4a6fe9+'-'+_0x54d87f+'/'+_0x208ac4)[_0x6e42('0x22')](_0x4159f9);}return null;};}function saveUpdates(_0x1c0826){return function(_0x154400){if(_0x154400){return _0x154400['update'](_0x1c0826)[_0x6e42('0x14')](function(_0x10fcdf){return _0x10fcdf;});}return null;};}function removeEntity(_0x2a251a){return function(_0x3032c0){if(_0x3032c0){return _0x3032c0[_0x6e42('0x29')]()[_0x6e42('0x14')](function(){var _0x223f84=_0x3032c0[_0x6e42('0x2a')]({'plain':!![]});var _0x4f31b1=_0x6e42('0x2b');return db[_0x6e42('0x2c')][_0x6e42('0x29')]({'where':{'type':_0x4f31b1,'resourceId':_0x223f84['id']}})[_0x6e42('0x14')](function(){return _0x3032c0;});})[_0x6e42('0x14')](function(){_0x2a251a[_0x6e42('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x40ab36){return function(_0x2c8f0b){if(!_0x2c8f0b){_0x40ab36[_0x6e42('0x1f')](0x194);}return _0x2c8f0b;};}function handleError(_0x3f1823,_0x30ee41){_0x30ee41=_0x30ee41||0x1f4;return function(_0x122d59){logger['error'](_0x122d59[_0x6e42('0x2d')]);if(_0x122d59[_0x6e42('0x2e')]){delete _0x122d59[_0x6e42('0x2e')];}_0x3f1823[_0x6e42('0x20')](_0x30ee41)[_0x6e42('0x2f')](_0x122d59);};}function getImapHost(_0x259caa){switch(_0x259caa){case _0x6e42('0x30'):return _0x6e42('0x31');case _0x6e42('0x32'):return'imap.mail.yahoo.com';case _0x6e42('0x33'):return'imap-mail.outlook.com';case _0x6e42('0x34'):return _0x6e42('0x35');}throw new Error('Unknown\x20email\x20service\x20provider',_0x259caa);}function getSmtpHost(_0x28b069){switch(_0x28b069){case _0x6e42('0x30'):return'smtp.gmail.com';case _0x6e42('0x32'):return'smtp.mail.yahoo.com';case'hotmail':return _0x6e42('0x36');case'outlook365':return _0x6e42('0x37');}throw new Error(_0x6e42('0x38'),_0x28b069);}function getAuthenticationOptions(_0x235403,_0x21d7f4){var _0x9c0857={};var _0x244797={};if(_0x235403){_0x9c0857[_0x6e42('0x39')]=_0x244797[_0x6e42('0x39')]=_0x21d7f4[_0x6e42('0x3a')];_0x9c0857[_0x6e42('0x3b')]=_0x244797['pass']=_0x21d7f4['password'];if(_0x21d7f4[_0x6e42('0x3c')]){_0x9c0857[_0x6e42('0x3c')]=_0x244797[_0x6e42('0x3c')]=!![];_0x9c0857[_0x6e42('0x3d')]=_0x244797['CloudProviderId']=_0x21d7f4[_0x6e42('0x3d')];_0x9c0857[_0x6e42('0x3b')]=_0x244797[_0x6e42('0x3e')]=null;}else{_0x9c0857[_0x6e42('0x3d')]=_0x244797[_0x6e42('0x3d')]=null;}_0x9c0857[_0x6e42('0x3f')]=getImapHost(_0x235403);_0x9c0857[_0x6e42('0x40')]=0x3e1;_0x244797['host']=getSmtpHost(_0x235403);_0x244797['port']=0x24b;_0x244797[_0x6e42('0x41')]=![];_0x9c0857[_0x6e42('0x42')]=_0x244797[_0x6e42('0x42')]=null;}else{if(_0x21d7f4[_0x6e42('0x43')]){_0x9c0857[_0x6e42('0x39')]=_0x244797['user']=_0x21d7f4[_0x6e42('0x3a')];_0x9c0857[_0x6e42('0x3b')]=_0x244797['pass']=_0x21d7f4[_0x6e42('0x3b')];}else{_0x9c0857[_0x6e42('0x43')]=_0x244797['authentication']=![];_0x9c0857[_0x6e42('0x39')]=_0x244797['user']=null;_0x9c0857['password']=_0x244797[_0x6e42('0x3e')]=null;}_0x9c0857[_0x6e42('0x3f')]=_0x21d7f4[_0x6e42('0x44')][_0x6e42('0x3f')];_0x9c0857['port']=_0x21d7f4['Imap']['port'];_0x244797[_0x6e42('0x3f')]=_0x21d7f4[_0x6e42('0x45')][_0x6e42('0x3f')];_0x244797[_0x6e42('0x40')]=_0x21d7f4['Smtp'][_0x6e42('0x40')];}return{'Imap':_0x9c0857,'Smtp':_0x244797};}exports[_0x6e42('0x46')]=function(_0xd921a6,_0x3b2153){var _0x19b6a0={'include':[{'model':db[_0x6e42('0x47')],'as':_0x6e42('0x44')},{'model':db[_0x6e42('0x48')],'as':_0x6e42('0x45')},{'model':db[_0x6e42('0x49')],'as':_0x6e42('0x4a')}]},_0x2e6aaa={},_0x788a85={'count':0x0,'rows':[]};var _0x47877c=_[_0x6e42('0x4b')](db[_0x6e42('0x4c')]['rawAttributes'],function(_0x204034){return{'name':_0x204034[_0x6e42('0x4d')],'type':_0x204034[_0x6e42('0x4e')]['key']};});_0x2e6aaa['model']=_[_0x6e42('0x4b')](_0x47877c,_0x6e42('0x2e'));_0x2e6aaa[_0x6e42('0x4f')]=_['keys'](_0xd921a6[_0x6e42('0x4f')]);_0x2e6aaa[_0x6e42('0x50')]=_[_0x6e42('0x51')](_0x2e6aaa[_0x6e42('0x52')],_0x2e6aaa[_0x6e42('0x4f')]);_0x19b6a0['attributes']=_[_0x6e42('0x51')](_0x2e6aaa[_0x6e42('0x52')],qs['fields'](_0xd921a6['query'][_0x6e42('0x53')]));_0x19b6a0[_0x6e42('0x54')]=_0x19b6a0[_0x6e42('0x54')][_0x6e42('0x55')]?_0x19b6a0[_0x6e42('0x54')]:_0x2e6aaa[_0x6e42('0x52')];if(!_0xd921a6[_0x6e42('0x4f')]['hasOwnProperty'](_0x6e42('0x56'))){_0x19b6a0[_0x6e42('0x24')]=qs[_0x6e42('0x24')](_0xd921a6[_0x6e42('0x4f')][_0x6e42('0x24')]);_0x19b6a0[_0x6e42('0x23')]=qs[_0x6e42('0x23')](_0xd921a6[_0x6e42('0x4f')]['offset']);}_0x19b6a0[_0x6e42('0x57')]=qs[_0x6e42('0x58')](_0xd921a6[_0x6e42('0x4f')][_0x6e42('0x58')]);_0x19b6a0[_0x6e42('0x59')]=qs['filters'](_['pick'](_0xd921a6['query'],_0x2e6aaa['filters']),_0x47877c);if(_0xd921a6[_0x6e42('0x4f')][_0x6e42('0x5a')]){_0x19b6a0[_0x6e42('0x59')]=_[_0x6e42('0x5b')](_0x19b6a0[_0x6e42('0x59')],{'$or':_[_0x6e42('0x4b')](_0x47877c,function(_0x2414ee){if(_0x2414ee[_0x6e42('0x4e')]!=='VIRTUAL'){var _0x14fa16={};_0x14fa16[_0x2414ee[_0x6e42('0x2e')]]={'$like':'%'+_0xd921a6[_0x6e42('0x4f')][_0x6e42('0x5a')]+'%'};return _0x14fa16;}})});}_0x19b6a0=_[_0x6e42('0x5b')]({},_0x19b6a0,_0xd921a6[_0x6e42('0x5c')]);var _0x1df5dc={'where':_0x19b6a0[_0x6e42('0x59')]};return db[_0x6e42('0x4c')][_0x6e42('0x26')](_0x1df5dc)['then'](function(_0xe875de){_0x788a85[_0x6e42('0x26')]=_0xe875de;if(_0xd921a6[_0x6e42('0x4f')][_0x6e42('0x5d')]){_0x19b6a0[_0x6e42('0x5e')]=[{'all':!![]}];}return db[_0x6e42('0x4c')][_0x6e42('0x5f')](_0x19b6a0);})['then'](function(_0x1c82eb){_0x788a85[_0x6e42('0x60')]=_0x1c82eb;return _0x788a85;})[_0x6e42('0x14')](respondWithFilteredResult(_0x3b2153,_0x19b6a0))[_0x6e42('0x61')](handleError(_0x3b2153,null));};exports[_0x6e42('0x62')]=function(_0xc015ef,_0x1c937b){var _0x19c900={'raw':![],'where':{'id':_0xc015ef[_0x6e42('0x63')]['id']},'include':[{'model':db[_0x6e42('0x47')],'as':'Imap'},{'model':db[_0x6e42('0x48')],'as':_0x6e42('0x45')},{'model':db['Pause'],'as':_0x6e42('0x4a')}]},_0x376084={};_0x376084[_0x6e42('0x52')]=_['keys'](db['MailAccount'][_0x6e42('0x64')]);_0x376084[_0x6e42('0x4f')]=_[_0x6e42('0x65')](_0xc015ef[_0x6e42('0x4f')]);_0x376084['filters']=_[_0x6e42('0x51')](_0x376084[_0x6e42('0x52')],_0x376084[_0x6e42('0x4f')]);_0x19c900[_0x6e42('0x54')]=_[_0x6e42('0x51')](_0x376084[_0x6e42('0x52')],qs['fields'](_0xc015ef[_0x6e42('0x4f')][_0x6e42('0x53')]));_0x19c900[_0x6e42('0x54')]=_0x19c900[_0x6e42('0x54')][_0x6e42('0x55')]?_0x19c900[_0x6e42('0x54')]:_0x376084['model'];if(_0xc015ef['query']['includeAll']){_0x19c900['include']=[{'all':!![]}];}_0x19c900=_[_0x6e42('0x5b')]({},_0x19c900,_0xc015ef['options']);return db[_0x6e42('0x4c')][_0x6e42('0x66')](_0x19c900)[_0x6e42('0x14')](handleEntityNotFound(_0x1c937b,null))[_0x6e42('0x14')](respondWithResult(_0x1c937b,null))[_0x6e42('0x61')](handleError(_0x1c937b,null));};exports['update']=function(_0x4221c2,_0x1b26b3){if(_0x4221c2[_0x6e42('0x67')]['id']){delete _0x4221c2[_0x6e42('0x67')]['id'];}var _0x4cf58c=_0x4221c2[_0x6e42('0x67')][_0x6e42('0x68')]===_0x6e42('0x69')?null:_0x4221c2[_0x6e42('0x67')][_0x6e42('0x68')];var _0x40bd24=_0x4221c2['body']['Imap']||{};var _0x2049d5=_0x4221c2[_0x6e42('0x67')][_0x6e42('0x45')]||{};if(_0x4cf58c){_0x40bd24['host']=getImapHost(_0x4cf58c);_0x40bd24['port']=0x3e1;_0x2049d5['host']=getSmtpHost(_0x4cf58c);_0x2049d5[_0x6e42('0x40')]=0x24b;_0x2049d5[_0x6e42('0x41')]=![];}if(_0x2049d5[_0x6e42('0x3c')]){_0x2049d5[_0x6e42('0x41')]=![];}else{_0x2049d5[_0x6e42('0x3d')]=null;}if(!_0x40bd24[_0x6e42('0x3c')])_0x40bd24['CloudProviderId']=null;_0x4221c2['body'][_0x6e42('0x44')]=_0x40bd24;_0x4221c2['body'][_0x6e42('0x45')]=_0x2049d5;return db[_0x6e42('0x4c')][_0x6e42('0x66')]({'where':{'id':_0x4221c2[_0x6e42('0x63')]['id']},'include':[{'model':db[_0x6e42('0x47')],'as':_0x6e42('0x44')},{'model':db[_0x6e42('0x48')],'as':_0x6e42('0x45')},{'model':db[_0x6e42('0x49')],'as':_0x6e42('0x4a')}]})[_0x6e42('0x14')](handleEntityNotFound(_0x1b26b3,null))['then'](function(_0xc4438b){if(!_0xc4438b)throw new Error(_0x6e42('0x6a'));if(_0xc4438b[_0x6e42('0x42')])delete _0x4221c2[_0x6e42('0x67')][_0x6e42('0x44')];return _0xc4438b;})[_0x6e42('0x14')](saveUpdates(_0x4221c2[_0x6e42('0x67')],null))[_0x6e42('0x14')](function(_0x6a2d45){if(!_0x4221c2[_0x6e42('0x67')]['Imap'])return _0x6a2d45;return db[_0x6e42('0x47')][_0x6e42('0x6b')](_0x4221c2['body']['Imap'],{'where':{'MailAccountId':_0x6a2d45['id']}})[_0x6e42('0x14')](function(){return _0x6a2d45;});})[_0x6e42('0x14')](function(_0xe1f855){if(!_0x4221c2[_0x6e42('0x67')][_0x6e42('0x45')])return _0xe1f855;return db[_0x6e42('0x48')][_0x6e42('0x6b')](_0x4221c2[_0x6e42('0x67')]['Smtp'],{'where':{'MailAccountId':_0xe1f855['id']}})['then'](function(){return _0xe1f855;});})[_0x6e42('0x14')](respondWithResult(_0x1b26b3,null))[_0x6e42('0x61')](handleError(_0x1b26b3,null));};exports[_0x6e42('0x6c')]=function(_0x105318,_0x3baa2c){return db[_0x6e42('0x4c')][_0x6e42('0x6c')]()[_0x6e42('0x14')](respondWithResult(_0x3baa2c,null))['catch'](handleError(_0x3baa2c,null));};exports[_0x6e42('0x6d')]=function(_0x5d2ee1,_0x4cea93){if(_0x5d2ee1[_0x6e42('0x67')]['id']){delete _0x5d2ee1[_0x6e42('0x67')]['id'];}return db[_0x6e42('0x4c')][_0x6e42('0x66')]({'where':{'id':_0x5d2ee1[_0x6e42('0x63')]['id']}})['then'](handleEntityNotFound(_0x4cea93,null))[_0x6e42('0x14')](function(_0x3c0dfc){if(_0x3c0dfc){_0x5d2ee1['body']['MailAccountId']=_0x3c0dfc['id'];return db[_0x6e42('0x6e')]['create'](_0x5d2ee1[_0x6e42('0x67')]);}})['then'](respondWithResult(_0x4cea93,null))[_0x6e42('0x61')](handleError(_0x4cea93,null));};exports['getDispositions']=function(_0x31e574,_0x4c091f){var _0x1a50f0={'raw':![],'where':{}};var _0x55cbe8={};var _0x1fd63e={'count':0x0,'rows':[]};return db['MailAccount']['findOne']({'where':{'id':_0x31e574[_0x6e42('0x63')]['id']}})['then'](handleEntityNotFound(_0x4c091f,null))['then'](function(_0x5757a1){if(_0x5757a1){_0x55cbe8['model']=_[_0x6e42('0x65')](db['Disposition'][_0x6e42('0x64')]);_0x55cbe8['query']=_['keys'](_0x31e574['query']);_0x55cbe8[_0x6e42('0x50')]=_['intersection'](_0x55cbe8[_0x6e42('0x52')],_0x55cbe8[_0x6e42('0x4f')]);_0x1a50f0[_0x6e42('0x54')]=_['intersection'](_0x55cbe8[_0x6e42('0x52')],qs[_0x6e42('0x53')](_0x31e574['query'][_0x6e42('0x53')]));_0x1a50f0[_0x6e42('0x54')]=_0x1a50f0['attributes']['length']?_0x1a50f0['attributes']:_0x55cbe8['model'];if(!_0x31e574[_0x6e42('0x4f')]['hasOwnProperty'](_0x6e42('0x56'))){_0x1a50f0[_0x6e42('0x24')]=qs['limit'](_0x31e574[_0x6e42('0x4f')][_0x6e42('0x24')]);_0x1a50f0[_0x6e42('0x23')]=qs[_0x6e42('0x23')](_0x31e574[_0x6e42('0x4f')]['offset']);}_0x1a50f0[_0x6e42('0x57')]=qs[_0x6e42('0x58')](_0x31e574[_0x6e42('0x4f')][_0x6e42('0x58')]);_0x1a50f0[_0x6e42('0x59')]=qs[_0x6e42('0x50')](_['pick'](_0x31e574[_0x6e42('0x4f')],_0x55cbe8['filters']));_0x1a50f0[_0x6e42('0x59')][_0x6e42('0x6f')]=_0x5757a1['id'];if(_0x31e574['query']['filter']){_0x1a50f0[_0x6e42('0x59')]=_[_0x6e42('0x5b')](_0x1a50f0[_0x6e42('0x59')],{'$or':_[_0x6e42('0x4b')](_0x1a50f0[_0x6e42('0x54')],function(_0x7726b4){var _0x3ab176={};_0x3ab176[_0x7726b4]={'$like':'%'+_0x31e574[_0x6e42('0x4f')]['filter']+'%'};return _0x3ab176;})});}_0x1a50f0=_[_0x6e42('0x5b')]({},_0x1a50f0,_0x31e574[_0x6e42('0x5c')]);return db['Disposition'][_0x6e42('0x26')]({'where':_0x1a50f0[_0x6e42('0x59')]})[_0x6e42('0x14')](function(_0x5a4c28){_0x1fd63e['count']=_0x5a4c28;if(_0x31e574[_0x6e42('0x4f')][_0x6e42('0x5d')]){_0x1a50f0[_0x6e42('0x5e')]=[{'all':!![]}];}return db[_0x6e42('0x6e')][_0x6e42('0x5f')](_0x1a50f0);})[_0x6e42('0x14')](function(_0x54cd16){_0x1fd63e[_0x6e42('0x60')]=_0x54cd16;return _0x1fd63e;});}})[_0x6e42('0x14')](respondWithFilteredResult(_0x4c091f,_0x1a50f0))[_0x6e42('0x61')](handleError(_0x4c091f,null));};exports[_0x6e42('0x70')]=function(_0x4885d3,_0x1a552a){return db['MailAccount'][_0x6e42('0x66')]({'where':{'id':_0x4885d3['params']['id']}})['then'](handleEntityNotFound(_0x1a552a,null))[_0x6e42('0x14')](function(_0x50f8ae){if(_0x50f8ae){return _0x50f8ae[_0x6e42('0x70')](_0x4885d3[_0x6e42('0x4f')][_0x6e42('0x71')]);}})[_0x6e42('0x14')](respondWithStatusCode(_0x1a552a,null))['catch'](handleError(_0x1a552a,null));};exports[_0x6e42('0x72')]=function(_0x14deeb,_0x475140){if(_0x14deeb[_0x6e42('0x67')]['id']){delete _0x14deeb[_0x6e42('0x67')]['id'];}return db['MailAccount'][_0x6e42('0x66')]({'where':{'id':_0x14deeb[_0x6e42('0x63')]['id']}})['then'](handleEntityNotFound(_0x475140,null))['then'](function(_0x884a10){if(_0x884a10){_0x14deeb[_0x6e42('0x67')][_0x6e42('0x6f')]=_0x884a10['id'];return db[_0x6e42('0x73')][_0x6e42('0x74')](_0x14deeb['body']);}})[_0x6e42('0x14')](respondWithResult(_0x475140,null))[_0x6e42('0x61')](handleError(_0x475140,null));};exports[_0x6e42('0x75')]=function(_0x30cc02,_0x32178d){var _0x49efa4={'raw':![],'where':{}};var _0x36c05e={};var _0x141ab1={'count':0x0,'rows':[]};return db[_0x6e42('0x4c')][_0x6e42('0x76')]({'where':{'id':_0x30cc02[_0x6e42('0x63')]['id']}})[_0x6e42('0x14')](handleEntityNotFound(_0x32178d,null))[_0x6e42('0x14')](function(_0x409362){if(_0x409362){_0x36c05e[_0x6e42('0x52')]=_[_0x6e42('0x65')](db[_0x6e42('0x73')][_0x6e42('0x64')]);_0x36c05e['query']=_[_0x6e42('0x65')](_0x30cc02[_0x6e42('0x4f')]);_0x36c05e[_0x6e42('0x50')]=_['intersection'](_0x36c05e['model'],_0x36c05e[_0x6e42('0x4f')]);_0x49efa4['attributes']=_[_0x6e42('0x51')](_0x36c05e['model'],qs[_0x6e42('0x53')](_0x30cc02[_0x6e42('0x4f')]['fields']));_0x49efa4[_0x6e42('0x54')]=_0x49efa4['attributes'][_0x6e42('0x55')]?_0x49efa4[_0x6e42('0x54')]:_0x36c05e['model'];if(!_0x30cc02[_0x6e42('0x4f')]['hasOwnProperty']('nolimit')){_0x49efa4[_0x6e42('0x24')]=qs[_0x6e42('0x24')](_0x30cc02['query'][_0x6e42('0x24')]);_0x49efa4[_0x6e42('0x23')]=qs[_0x6e42('0x23')](_0x30cc02[_0x6e42('0x4f')][_0x6e42('0x23')]);}_0x49efa4[_0x6e42('0x57')]=qs['sort'](_0x30cc02[_0x6e42('0x4f')]['sort']);_0x49efa4[_0x6e42('0x59')]=qs[_0x6e42('0x50')](_['pick'](_0x30cc02[_0x6e42('0x4f')],_0x36c05e['filters']));_0x49efa4[_0x6e42('0x59')][_0x6e42('0x6f')]=_0x409362['id'];if(_0x30cc02[_0x6e42('0x4f')][_0x6e42('0x5a')]){_0x49efa4['where']=_[_0x6e42('0x5b')](_0x49efa4[_0x6e42('0x59')],{'$or':_[_0x6e42('0x4b')](_0x49efa4[_0x6e42('0x54')],function(_0x1895f9){var _0x54ab87={};_0x54ab87[_0x1895f9]={'$like':'%'+_0x30cc02[_0x6e42('0x4f')][_0x6e42('0x5a')]+'%'};return _0x54ab87;})});}_0x49efa4=_[_0x6e42('0x5b')]({},_0x49efa4,_0x30cc02[_0x6e42('0x5c')]);return db[_0x6e42('0x73')][_0x6e42('0x26')]({'where':_0x49efa4['where']})[_0x6e42('0x14')](function(_0x1b8b89){_0x141ab1[_0x6e42('0x26')]=_0x1b8b89;if(_0x30cc02[_0x6e42('0x4f')][_0x6e42('0x5d')]){_0x49efa4[_0x6e42('0x5e')]=[{'all':!![]}];}return db[_0x6e42('0x73')][_0x6e42('0x5f')](_0x49efa4);})[_0x6e42('0x14')](function(_0x19af19){_0x141ab1['rows']=_0x19af19;return _0x141ab1;});}})[_0x6e42('0x14')](respondWithFilteredResult(_0x32178d,_0x49efa4))[_0x6e42('0x61')](handleError(_0x32178d,null));};exports[_0x6e42('0x77')]=function(_0x5a5c27,_0x5d2921){return db[_0x6e42('0x4c')][_0x6e42('0x66')]({'where':{'id':_0x5a5c27['params']['id']}})[_0x6e42('0x14')](handleEntityNotFound(_0x5d2921,null))[_0x6e42('0x14')](function(_0x1fce8b){if(_0x1fce8b){return _0x1fce8b[_0x6e42('0x77')](_0x5a5c27[_0x6e42('0x4f')][_0x6e42('0x71')]);}})['then'](respondWithStatusCode(_0x5d2921,null))[_0x6e42('0x61')](handleError(_0x5d2921,null));};exports['create']=function(_0x1c6f9b,_0x9f2a32){var _0x1c85cf={'name':_0x1c6f9b[_0x6e42('0x67')]['name'],'key':_0x1c6f9b['body'][_0x6e42('0x78')],'provider':_0x1c6f9b['body'][_0x6e42('0x68')]===_0x6e42('0x69')?null:_0x1c6f9b[_0x6e42('0x67')][_0x6e42('0x68')],'email':_0x1c6f9b[_0x6e42('0x67')]['email'],'ListId':_0x1c6f9b[_0x6e42('0x67')]['ListId'],'active':!_[_0x6e42('0x79')](_0x1c6f9b['body']['active'])?_0x1c6f9b[_0x6e42('0x67')][_0x6e42('0x7a')]:!![],'description':_0x1c6f9b['body'][_0x6e42('0x7b')]||null};var _0x49c7c1=getAuthenticationOptions(_0x1c85cf[_0x6e42('0x68')],_0x1c6f9b[_0x6e42('0x67')]);_0x1c85cf[_0x6e42('0x44')]=_0x49c7c1[_0x6e42('0x44')];_0x1c85cf[_0x6e42('0x45')]=_0x49c7c1[_0x6e42('0x45')];return db['MailAccount'][_0x6e42('0x74')](_0x1c85cf,{'include':[{'model':db['MailServerOut'],'as':_0x6e42('0x45')},{'model':db['MailServerIn'],'as':_0x6e42('0x44')}]})[_0x6e42('0x14')](function(_0x17fc01){var _0x58918a=_0x1c6f9b[_0x6e42('0x39')][_0x6e42('0x2a')]({'plain':!![]});if(!_0x58918a)throw new Error(_0x6e42('0x7c'));if(_0x58918a[_0x6e42('0x7d')]===_0x6e42('0x39')){var _0x41f712=_0x17fc01[_0x6e42('0x2a')]({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':_0x6e42('0x2b'),'userProfileId':_0x58918a[_0x6e42('0x7e')]},'raw':!![]})['then'](function(_0x31c789){if(_0x31c789&&_0x31c789[_0x6e42('0x7f')]===0x0){return db[_0x6e42('0x2c')][_0x6e42('0x74')]({'name':_0x41f712[_0x6e42('0x2e')],'resourceId':_0x41f712['id'],'type':_0x31c789['name'],'sectionId':_0x31c789['id']},{})[_0x6e42('0x14')](function(){return _0x17fc01;});}else{return _0x17fc01;}})['catch'](function(_0x11875d){logger[_0x6e42('0x19')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x11875d);throw _0x11875d;});}return _0x17fc01;})[_0x6e42('0x14')](respondWithResult(_0x9f2a32,0xc9))[_0x6e42('0x61')](handleError(_0x9f2a32,null));};exports['getImap']=function(_0x45b072,_0x660785){return db['MailAccount']['findOne']({'where':{'id':_0x45b072[_0x6e42('0x63')]['id']}})[_0x6e42('0x14')](handleEntityNotFound(_0x660785,null))[_0x6e42('0x14')](function(_0x55f5a0){if(_0x55f5a0){return _0x55f5a0[_0x6e42('0x80')]();}return null;})[_0x6e42('0x14')](respondWithResult(_0x660785,null))[_0x6e42('0x61')](handleError(_0x660785,null));};exports[_0x6e42('0x81')]=function(_0x5b0db9,_0x210839){if(_0x5b0db9[_0x6e42('0x67')]['id']){delete _0x5b0db9[_0x6e42('0x67')]['id'];}return db[_0x6e42('0x4c')][_0x6e42('0x66')]({'where':{'id':_0x5b0db9[_0x6e42('0x63')]['id']}})['then'](handleEntityNotFound(_0x210839,null))[_0x6e42('0x14')](function(_0x1c84f3){if(_0x1c84f3){_0x5b0db9[_0x6e42('0x67')][_0x6e42('0x6f')]=_0x1c84f3['id'];return db['MailServerIn'][_0x6e42('0x74')](_0x5b0db9[_0x6e42('0x67')]);}})[_0x6e42('0x14')](respondWithResult(_0x210839,null))[_0x6e42('0x61')](handleError(_0x210839,null));};exports[_0x6e42('0x82')]=function(_0x285474,_0x415727){return db[_0x6e42('0x4c')][_0x6e42('0x76')]({'where':{'id':_0x285474['params']['id']}})[_0x6e42('0x14')](handleEntityNotFound(_0x415727,null))[_0x6e42('0x14')](function(_0x4a24c7){if(_0x4a24c7){return _0x4a24c7['setImap'](null);}return null;})[_0x6e42('0x14')](respondWithStatusCode(_0x415727,null))[_0x6e42('0x61')](handleError(_0x415727,null));};exports['getSmtp']=function(_0x532745,_0x579b46){return db[_0x6e42('0x4c')][_0x6e42('0x76')]({'where':{'id':_0x532745[_0x6e42('0x63')]['id']}})[_0x6e42('0x14')](handleEntityNotFound(_0x579b46,null))[_0x6e42('0x14')](function(_0xb9df11){if(_0xb9df11){return _0xb9df11[_0x6e42('0x83')]();}return null;})[_0x6e42('0x14')](respondWithResult(_0x579b46,null))['catch'](handleError(_0x579b46,null));};exports[_0x6e42('0x84')]=function(_0x1091f6,_0x566b44){if(_0x1091f6[_0x6e42('0x67')]['id']){delete _0x1091f6[_0x6e42('0x67')]['id'];}return db[_0x6e42('0x4c')][_0x6e42('0x66')]({'where':{'id':_0x1091f6[_0x6e42('0x63')]['id']}})[_0x6e42('0x14')](handleEntityNotFound(_0x566b44,null))[_0x6e42('0x14')](function(_0x5470f4){if(_0x5470f4){_0x1091f6[_0x6e42('0x67')][_0x6e42('0x6f')]=_0x5470f4['id'];return db['MailServerOut'][_0x6e42('0x74')](_0x1091f6[_0x6e42('0x67')]);}})[_0x6e42('0x14')](respondWithResult(_0x566b44,null))[_0x6e42('0x61')](handleError(_0x566b44,null));};exports[_0x6e42('0x85')]=function(_0x1b93cd,_0xc4801d){return db['MailAccount']['findOne']({'where':{'id':_0x1b93cd[_0x6e42('0x63')]['id']}})[_0x6e42('0x14')](handleEntityNotFound(_0xc4801d,null))[_0x6e42('0x14')](function(_0x3f0591){if(_0x3f0591){return _0x3f0591[_0x6e42('0x86')](null);}return null;})['then'](respondWithStatusCode(_0xc4801d,null))[_0x6e42('0x61')](handleError(_0xc4801d,null));};exports[_0x6e42('0x87')]=function(_0x2127a5,_0x49a2ac){return db[_0x6e42('0x88')]['find']({'where':{'id':_0x2127a5[_0x6e42('0x63')]['id']}})['then'](handleEntityNotFound(_0x49a2ac,null))[_0x6e42('0x14')](function(_0x58805f){if(_0x58805f){return _0x58805f[_0x6e42('0x87')](_0x2127a5['body']['ids'],_[_0x6e42('0x89')](_0x2127a5[_0x6e42('0x67')],['ids','id'])||{});}})[_0x6e42('0x14')](respondWithResult(_0x49a2ac,null))[_0x6e42('0x61')](handleError(_0x49a2ac,null));};exports[_0x6e42('0x8a')]=function(_0x275492,_0x2a35f3){var _0x222dd8={'raw':![],'where':{}};var _0x9b68a0={};var _0x3b55fc={'count':0x0,'rows':[]};return db['MailAccount'][_0x6e42('0x76')]({'where':{'id':_0x275492[_0x6e42('0x63')]['id']}})[_0x6e42('0x14')](handleEntityNotFound(_0x2a35f3,null))['then'](function(_0x12c24f){if(_0x12c24f){_0x9b68a0[_0x6e42('0x52')]=_[_0x6e42('0x65')](db[_0x6e42('0x88')][_0x6e42('0x64')]);_0x9b68a0['query']=_[_0x6e42('0x65')](_0x275492['query']);_0x9b68a0[_0x6e42('0x50')]=_[_0x6e42('0x51')](_0x9b68a0['model'],_0x9b68a0[_0x6e42('0x4f')]);_0x222dd8['attributes']=_[_0x6e42('0x51')](_0x9b68a0[_0x6e42('0x52')],qs[_0x6e42('0x53')](_0x275492[_0x6e42('0x4f')][_0x6e42('0x53')]));_0x222dd8['attributes']=_0x222dd8[_0x6e42('0x54')][_0x6e42('0x55')]?_0x222dd8[_0x6e42('0x54')]:_0x9b68a0[_0x6e42('0x52')];if(!_0x275492['query']['hasOwnProperty'](_0x6e42('0x56'))){_0x222dd8['limit']=qs[_0x6e42('0x24')](_0x275492[_0x6e42('0x4f')]['limit']);_0x222dd8[_0x6e42('0x23')]=qs[_0x6e42('0x23')](_0x275492[_0x6e42('0x4f')]['offset']);}_0x222dd8[_0x6e42('0x57')]=qs[_0x6e42('0x58')](_0x275492[_0x6e42('0x4f')][_0x6e42('0x58')]);_0x222dd8['where']=qs[_0x6e42('0x50')](_[_0x6e42('0x8b')](_0x275492[_0x6e42('0x4f')],_0x9b68a0[_0x6e42('0x50')]));_0x222dd8[_0x6e42('0x59')][_0x6e42('0x6f')]=_0x12c24f['id'];if(_0x275492[_0x6e42('0x4f')][_0x6e42('0x5a')]){_0x222dd8[_0x6e42('0x59')]=_['merge'](_0x222dd8[_0x6e42('0x59')],{'$or':_[_0x6e42('0x4b')](_0x222dd8[_0x6e42('0x54')],function(_0x352734){var _0x2c0a6a={};_0x2c0a6a[_0x352734]={'$like':'%'+_0x275492[_0x6e42('0x4f')][_0x6e42('0x5a')]+'%'};return _0x2c0a6a;})});}_0x222dd8=_[_0x6e42('0x5b')]({},_0x222dd8,_0x275492[_0x6e42('0x5c')]);return db[_0x6e42('0x88')][_0x6e42('0x26')]({'where':_0x222dd8[_0x6e42('0x59')]})[_0x6e42('0x14')](function(_0x23ee0e){_0x3b55fc[_0x6e42('0x26')]=_0x23ee0e;if(_0x275492[_0x6e42('0x4f')]['includeAll']){_0x222dd8['include']=[{'model':db[_0x6e42('0x8c')],'as':'Contact','required':![]},{'model':db[_0x6e42('0x8d')],'as':'Owner','attributes':[_0x6e42('0x2e'),_0x6e42('0x8e'),_0x6e42('0x8f')],'required':![]},{'model':db['Tag'],'as':_0x6e42('0x90'),'attributes':['id',_0x6e42('0x2e'),'color'],'where':_0x275492[_0x6e42('0x4f')][_0x6e42('0x91')]?{'id':_0x275492[_0x6e42('0x4f')][_0x6e42('0x91')]}:undefined,'required':_0x275492[_0x6e42('0x4f')]['tag']?!![]:![]}];}return db[_0x6e42('0x88')][_0x6e42('0x5f')](_0x222dd8);})[_0x6e42('0x14')](function(_0x1dd381){_0x3b55fc['rows']=_0x1dd381;return _0x3b55fc;});}})[_0x6e42('0x14')](respondWithFilteredResult(_0x2a35f3,_0x222dd8))[_0x6e42('0x61')](handleError(_0x2a35f3,null));};exports[_0x6e42('0x92')]=function addApplications(_0x36160e,_0x3d63b4){var _0x487d3c=_0x36160e[_0x6e42('0x63')]['id'];var _0x5f9b39=_0x36160e[_0x6e42('0x67')];var _0x4aac89=0xc8;var _0x388cf7=null;return db['sequelize']['transaction']({'isolationLevel':db['sequelize'][_0x6e42('0x93')][_0x6e42('0x94')][_0x6e42('0x95')]},function(_0x793d8a){return db[_0x6e42('0x4c')][_0x6e42('0x76')]({'where':{'id':_0x487d3c},'transaction':_0x793d8a})[_0x6e42('0x14')](function(_0x1997cf){if(_0x1997cf){return db[_0x6e42('0x96')][_0x6e42('0x29')]({'where':{'MailAccountId':_0x487d3c},'transaction':_0x793d8a})[_0x6e42('0x14')](function(){var _0x5436e4=_[_0x6e42('0x4b')](_0x5f9b39,function(_0x49fa85){_0x49fa85[_0x6e42('0x6f')]=_0x487d3c;return _0x49fa85;});return db['MailApplication'][_0x6e42('0x97')](_0x5436e4,{'transaction':_0x793d8a});});}else{_0x4aac89=0x194;_0x388cf7=[];}});})[_0x6e42('0x14')](function(){if(_0x4aac89!==0x194){return db['MailApplication'][_0x6e42('0x98')]({'where':{'MailAccountId':_0x487d3c},'order':_0x6e42('0x99')})[_0x6e42('0x14')](function(_0x592eae){_0x388cf7=_0x592eae;});}})['catch'](function(_0x37ca6c){_0x4aac89=0x1f4;logger[_0x6e42('0x19')](_0x37ca6c['stack']);if(_0x37ca6c['name']){delete _0x37ca6c['name'];}_0x388cf7=_0x37ca6c;})[_0x6e42('0x9a')](function(){if(_0x388cf7===null){_0x3d63b4[_0x6e42('0x1f')](_0x4aac89);}else{if(_0x4aac89===0x1f4){_0x3d63b4[_0x6e42('0x20')](_0x4aac89)[_0x6e42('0x2f')](_0x388cf7);}else{_0x3d63b4[_0x6e42('0x20')](_0x4aac89)['json'](_0x388cf7);}}});};exports[_0x6e42('0x9b')]=function(_0x3e3487,_0x16e11a){var _0x4472a4={};var _0x231b82={};var _0x1d324e;var _0x4e6197;return db[_0x6e42('0x4c')]['findOne']({'where':{'id':_0x3e3487[_0x6e42('0x63')]['id']}})[_0x6e42('0x14')](handleEntityNotFound(_0x16e11a,null))[_0x6e42('0x14')](function(_0xa224f5){if(_0xa224f5){_0x1d324e=_0xa224f5;_0x231b82['model']=_[_0x6e42('0x65')](db[_0x6e42('0x96')]['rawAttributes']);_0x231b82[_0x6e42('0x4f')]=_[_0x6e42('0x65')](_0x3e3487[_0x6e42('0x4f')]);_0x231b82['filters']=_[_0x6e42('0x51')](_0x231b82[_0x6e42('0x52')],_0x231b82[_0x6e42('0x4f')]);_0x4472a4[_0x6e42('0x54')]=_['intersection'](_0x231b82[_0x6e42('0x52')],qs['fields'](_0x3e3487[_0x6e42('0x4f')][_0x6e42('0x53')]));_0x4472a4[_0x6e42('0x54')]=_0x4472a4[_0x6e42('0x54')][_0x6e42('0x55')]?_0x4472a4[_0x6e42('0x54')]:_0x231b82[_0x6e42('0x52')];_0x4472a4['order']=qs['sort'](_0x3e3487['query'][_0x6e42('0x58')]);_0x4472a4[_0x6e42('0x59')]=qs['filters'](_['pick'](_0x3e3487['query'],_0x231b82[_0x6e42('0x50')]));if(_0x3e3487[_0x6e42('0x4f')][_0x6e42('0x5a')]){_0x4472a4[_0x6e42('0x59')]=_[_0x6e42('0x5b')](_0x4472a4[_0x6e42('0x59')],{'$or':_['map'](_0x4472a4[_0x6e42('0x54')],function(_0x4a99ab){var _0x1663cf={};_0x1663cf[_0x4a99ab]={'$like':'%'+_0x3e3487[_0x6e42('0x4f')][_0x6e42('0x5a')]+'%'};return _0x1663cf;})});}_0x4472a4=_['merge']({},_0x4472a4,_0x3e3487[_0x6e42('0x5c')]);return _0x1d324e['getApplications'](_0x4472a4);}})[_0x6e42('0x14')](function(_0x5b15f7){if(_0x5b15f7){_0x4e6197=_0x5b15f7[_0x6e42('0x55')];if(!_0x3e3487[_0x6e42('0x4f')][_0x6e42('0x9c')](_0x6e42('0x56'))){_0x4472a4[_0x6e42('0x24')]=qs[_0x6e42('0x24')](_0x3e3487['query'][_0x6e42('0x24')]);_0x4472a4['offset']=qs[_0x6e42('0x23')](_0x3e3487[_0x6e42('0x4f')][_0x6e42('0x23')]);}return _0x1d324e[_0x6e42('0x9b')](_0x4472a4);}})['then'](function(_0x1b493b){if(_0x1b493b){return _0x1b493b?{'count':_0x4e6197,'rows':_0x1b493b}:null;}})[_0x6e42('0x14')](respondWithResult(_0x16e11a,null))[_0x6e42('0x61')](handleError(_0x16e11a,null));};exports[_0x6e42('0x9d')]=function(_0x3f9131,_0x2ba349){var _0x150a78={'raw':!![],'where':{}};var _0x5a447e={};var _0x578189={'count':0x0,'rows':[]};return db[_0x6e42('0x4c')][_0x6e42('0x76')]({'where':{'id':_0x3f9131['params']['id']}})['then'](handleEntityNotFound(_0x2ba349,null))[_0x6e42('0x14')](function(_0x539629){if(_0x539629){_0x5a447e['model']=_[_0x6e42('0x65')](db[_0x6e42('0x9e')][_0x6e42('0x64')]);_0x5a447e[_0x6e42('0x4f')]=_['keys'](_0x3f9131[_0x6e42('0x4f')]);_0x5a447e[_0x6e42('0x50')]=_[_0x6e42('0x51')](_0x5a447e[_0x6e42('0x52')],_0x5a447e[_0x6e42('0x4f')]);_0x150a78[_0x6e42('0x54')]=_[_0x6e42('0x51')](_0x5a447e['model'],qs[_0x6e42('0x53')](_0x3f9131[_0x6e42('0x4f')][_0x6e42('0x53')]));_0x150a78[_0x6e42('0x54')]=_0x150a78[_0x6e42('0x54')][_0x6e42('0x55')]?_0x150a78[_0x6e42('0x54')]:_0x5a447e[_0x6e42('0x52')];if(!_0x3f9131['query'][_0x6e42('0x9c')]('nolimit')){_0x150a78[_0x6e42('0x24')]=qs[_0x6e42('0x24')](_0x3f9131[_0x6e42('0x4f')][_0x6e42('0x24')]);_0x150a78[_0x6e42('0x23')]=qs[_0x6e42('0x23')](_0x3f9131[_0x6e42('0x4f')][_0x6e42('0x23')]);}_0x150a78[_0x6e42('0x57')]=qs['sort'](_0x3f9131[_0x6e42('0x4f')]['sort']);_0x150a78[_0x6e42('0x59')]=qs['filters'](_[_0x6e42('0x8b')](_0x3f9131[_0x6e42('0x4f')],_0x5a447e[_0x6e42('0x50')]));_0x150a78[_0x6e42('0x59')]['MailAccountId']=_0x539629['id'];if(_0x3f9131[_0x6e42('0x4f')][_0x6e42('0x5a')]){_0x150a78[_0x6e42('0x59')]=_[_0x6e42('0x5b')](_0x150a78[_0x6e42('0x59')],{'$or':_[_0x6e42('0x4b')](_0x150a78[_0x6e42('0x54')],function(_0x4a8a4e){var _0x1fe19f={};_0x1fe19f[_0x4a8a4e]={'$like':'%'+_0x3f9131[_0x6e42('0x4f')][_0x6e42('0x5a')]+'%'};return _0x1fe19f;})});}if(_0x3f9131['query'][_0x6e42('0x9f')]){var _0x39b216=_0x3f9131[_0x6e42('0x4f')][_0x6e42('0x9f')][_0x6e42('0xa0')](',');var _0xa165d2={};_0xa165d2[_0x39b216[0x0]]={'$gte':moment(_0x39b216[0x1])[_0x6e42('0xa1')]('YYYY-MM-DD\x20HH:mm:ss')};_0x150a78[_0x6e42('0x59')]=_[_0x6e42('0x5b')](_0x150a78['where'],_0xa165d2);}_0x150a78=_[_0x6e42('0x5b')]({},_0x150a78,_0x3f9131['options']);return db['MailMessage'][_0x6e42('0x26')]({'where':_0x150a78[_0x6e42('0x59')]})['then'](function(_0xcc1449){_0x578189[_0x6e42('0x26')]=_0xcc1449;if(_0x3f9131['query']['includeAll']){_0x150a78[_0x6e42('0x5e')]=[{'all':!![]}];}return db[_0x6e42('0x9e')][_0x6e42('0x5f')](_0x150a78);})[_0x6e42('0x14')](function(_0x233b9b){if(_0x3f9131[_0x6e42('0x4f')][_0x6e42('0xa2')]===_0x6e42('0xa3')){for(var _0x20f52a=0x0;_0x20f52a<_0x233b9b[_0x6e42('0x55')];_0x20f52a++){_0x233b9b[_0x20f52a][_0x6e42('0x67')]=juice(_0x233b9b[_0x20f52a]['body']);}}_0x578189[_0x6e42('0x60')]=_0x233b9b;return _0x578189;});}})[_0x6e42('0x14')](respondWithFilteredResult(_0x2ba349,_0x150a78))[_0x6e42('0x61')](handleError(_0x2ba349,null));};exports[_0x6e42('0x2f')]=function(_0x384974,_0x893e35){var _0x2cd9ea,_0x173882={},_0xdbafef;if(_0x384974[_0x6e42('0x67')]['to']){_0xdbafef=_0x384974[_0x6e42('0x67')]['to'][_0x6e42('0xa0')](',')[0x0];}return db[_0x6e42('0x4c')][_0x6e42('0x66')]({'where':{'id':_0x384974[_0x6e42('0x63')]['id']},'include':[{'model':db[_0x6e42('0xa4')],'as':_0x6e42('0xa5'),'include':[{'model':db[_0x6e42('0x8c')],'as':_0x6e42('0xa6'),'where':{'email':_0xdbafef},'limit':0x1,'order':[[_0x6e42('0xa7'),'DESC']]}]},{'model':db[_0x6e42('0x48')],'as':'Smtp','raw':!![],'include':[{'model':db[_0x6e42('0xa8')],'as':_0x6e42('0xa8'),'raw':!![]}]}]})['then'](handleEntityNotFound(_0x893e35,null))[_0x6e42('0x14')](function(_0x480e63){if(!_0x480e63)return;_0x2cd9ea=_0x480e63;if(!_0x480e63[_0x6e42('0x45')])throw new Error(_0x6e42('0xa9'));if(_[_0x6e42('0x79')](_0x384974[_0x6e42('0x67')]['from'])){_0x384974[_0x6e42('0x67')][_0x6e42('0xaa')]=util[_0x6e42('0xa1')]('%s\x20<%s>',_0x480e63['name'],_0x480e63['email']||_0x480e63['Smtp'][_0x6e42('0x39')]);}if(_0x384974[_0x6e42('0x67')][_0x6e42('0xab')]&&_0x384974[_0x6e42('0x67')][_0x6e42('0xab')][_0x6e42('0x55')]){for(var _0x3124ee=0x0;_0x3124ee<_0x384974[_0x6e42('0x67')][_0x6e42('0xab')][_0x6e42('0x55')];_0x3124ee+=0x1){_0x384974['body']['attachments'][_0x3124ee]={'filename':_0x384974[_0x6e42('0x67')][_0x6e42('0xab')][_0x3124ee][_0x6e42('0x2e')],'path':path[_0x6e42('0xac')](config[_0x6e42('0xad')],_0x6e42('0xae'),_0x384974[_0x6e42('0x67')][_0x6e42('0xab')][_0x3124ee][_0x6e42('0xaf')])};}}var _0x145a91=_0x480e63['getSmtpOptions']();return respondWithRpcPromise('SendMail',_0x6e42('0xb0'),{'account':_0x145a91,'message':_0x384974['body']});})['then'](function(_0x4532d6){if(!_0x4532d6)return;_0x173882=_0x4532d6;if(!_0x2cd9ea[_0x6e42('0xa5')])throw new Error(_0x6e42('0xb1'));if(_0x2cd9ea['List'][_0x6e42('0xa6')][_0x6e42('0x55')])return _0x2cd9ea[_0x6e42('0xa5')][_0x6e42('0xa6')][0x0];return db[_0x6e42('0x8c')]['create'](_['defaults'](_0x384974[_0x6e42('0x67')],{'firstName':_0x384974['body']['to'],'email':_0x384974[_0x6e42('0x67')]['to'],'phone':_0x384974['body']['to'],'ListId':_0x2cd9ea[_0x6e42('0xb2')]}));})['then'](function(_0x2f3043){if(!_0x2f3043)return;var _0x449899={'UserId':_0x384974[_0x6e42('0x39')]['id'],'ContactId':_0x2f3043['id'],'MailAccountId':_0x2cd9ea['id'],'inReplyTo':_0x173882[_0x6e42('0xb3')],'to':_0x384974[_0x6e42('0x67')]['from'],'cc':_0x384974[_0x6e42('0x67')]['cc'],'subject':_0x384974[_0x6e42('0x67')][_0x6e42('0xb4')],'attach':_0x384974['body'][_0x6e42('0xb5')],'firstMsgDirection':_0x6e42('0xb6'),'lastMsgAt':moment()[_0x6e42('0xa1')](_0x6e42('0xb7')),'lastMsgDirection':_0x6e42('0xb6'),'Messages':[_[_0x6e42('0x5b')](_0x384974[_0x6e42('0x67')],{'messageId':_0x173882[_0x6e42('0xb3')],'sentAt':moment()[_0x6e42('0xa1')](_0x6e42('0xb7')),'read':!![],'MailAccountId':_0x2cd9ea['id'],'UserId':_0x384974['user']['id'],'ContactId':_0x2f3043['id']})]};if(_0x384974['body'][_0x6e42('0xb8')]){_0x449899=_[_0x6e42('0x5b')](_0x449899,_0x384974[_0x6e42('0x67')][_0x6e42('0xb8')]);}return db[_0x6e42('0x88')][_0x6e42('0x74')](_0x449899,{'include':[{'model':db[_0x6e42('0x9e')],'as':_0x6e42('0xb9')}]});})[_0x6e42('0x14')](respondWithResult(_0x893e35,null))[_0x6e42('0x61')](handleError(_0x893e35,null));};exports[_0x6e42('0xba')]=function(_0x127414,_0x4bb802){return db[_0x6e42('0x4c')][_0x6e42('0x66')]({'where':{'id':_0x127414[_0x6e42('0x63')]['id']},'include':[{'model':db[_0x6e42('0x48')],'as':'Smtp','raw':!![],'include':[{'model':db[_0x6e42('0xa8')],'as':_0x6e42('0xa8'),'raw':!![]}]}]})['then'](handleEntityNotFound(_0x4bb802,null))[_0x6e42('0x14')](function(_0x565be5){if(!_0x565be5[_0x6e42('0x45')])return;var _0x1c2f98=_0x565be5[_0x6e42('0xbb')]();return respondWithRpcPromise(_0x6e42('0xbc'),_0x6e42('0xba'),{'account':_0x1c2f98});})[_0x6e42('0x14')](respondWithResult(_0x4bb802,null))[_0x6e42('0x61')](handleError(_0x4bb802,null));};exports['destroy']=function(_0x1a0963,_0x2b0e33){return db[_0x6e42('0x4c')][_0x6e42('0x66')]({'where':{'id':_0x1a0963[_0x6e42('0x63')]['id']}})[_0x6e42('0x14')](handleEntityNotFound(_0x2b0e33,null))[_0x6e42('0x14')](function(_0x4393d4){if(_0x4393d4&&_0x4393d4['service']){throw new db[(_0x6e42('0xbd'))][(_0x6e42('0xbe'))]('You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account');}return _0x4393d4;})[_0x6e42('0x14')](removeEntity(_0x2b0e33,null))['catch'](handleError(_0x2b0e33,null));};exports[_0x6e42('0xbf')]=function(_0x2738ab,_0x3f568f){return db[_0x6e42('0x4c')][_0x6e42('0x66')]({'where':{'id':_0x2738ab[_0x6e42('0x63')]['id']}})[_0x6e42('0x14')](handleEntityNotFound(_0x3f568f,null))[_0x6e42('0x14')](function(_0x2f8870){if(_0x2f8870){return _0x2f8870[_0x6e42('0xbf')](_0x2738ab[_0x6e42('0x67')][_0x6e42('0x71')],_[_0x6e42('0x89')](_0x2738ab[_0x6e42('0x67')],[_0x6e42('0x71'),'id'])||{})[_0x6e42('0xc0')](function(_0x1bb115){for(var _0x28e775=0x0;_0x28e775<_0x2738ab['body'][_0x6e42('0x71')][_0x6e42('0x55')];_0x28e775+=0x1){socket[_0x6e42('0xc1')](_0x6e42('0xc2'),{'UserId':Number(_0x2738ab['body']['ids'][_0x28e775]),'MailAccountId':Number(_0x2738ab[_0x6e42('0x63')]['id'])});}return _0x1bb115;});}})[_0x6e42('0x14')](respondWithResult(_0x3f568f,null))[_0x6e42('0x61')](handleError(_0x3f568f,null));};exports[_0x6e42('0xc3')]=function(_0x332e2b,_0xc58f6b){return db['MailAccount']['find']({'where':{'id':_0x332e2b['params']['id']}})['then'](handleEntityNotFound(_0xc58f6b,null))[_0x6e42('0x14')](function(_0x630b85){if(_0x630b85){return _0x630b85[_0x6e42('0xc3')](_0x332e2b[_0x6e42('0x4f')]['ids'])[_0x6e42('0x14')](function(){if(_[_0x6e42('0xc4')](_0x332e2b[_0x6e42('0x4f')]['ids'])){for(var _0x26880a=0x0;_0x26880a<_0x332e2b[_0x6e42('0x4f')][_0x6e42('0x71')][_0x6e42('0x55')];_0x26880a+=0x1){socket[_0x6e42('0xc1')](_0x6e42('0xc5'),{'UserId':Number(_0x332e2b[_0x6e42('0x4f')][_0x6e42('0x71')][_0x26880a]),'MailAccountId':Number(_0x332e2b[_0x6e42('0x63')]['id'])});}}else{socket[_0x6e42('0xc1')](_0x6e42('0xc5'),{'UserId':Number(_0x332e2b[_0x6e42('0x4f')][_0x6e42('0x71')]),'MailAccountId':Number(_0x332e2b[_0x6e42('0x63')]['id'])});}});}})[_0x6e42('0x14')](respondWithStatusCode(_0xc58f6b,null))[_0x6e42('0x61')](handleError(_0xc58f6b,null));};exports[_0x6e42('0xc6')]=function(_0x2dd0d8,_0x321b72){var _0x501322={};var _0x61c95b={};var _0x4643b1;var _0x51b75e;return db['MailAccount']['findOne']({'where':{'id':_0x2dd0d8['params']['id']}})[_0x6e42('0x14')](handleEntityNotFound(_0x321b72,null))[_0x6e42('0x14')](function(_0x57cf04){if(_0x57cf04){_0x4643b1=_0x57cf04;_0x61c95b[_0x6e42('0x52')]=_['keys'](db[_0x6e42('0x8d')][_0x6e42('0x64')]);_0x61c95b[_0x6e42('0x4f')]=_[_0x6e42('0x65')](_0x2dd0d8['query']);_0x61c95b['filters']=_[_0x6e42('0x51')](_0x61c95b['model'],_0x61c95b[_0x6e42('0x4f')]);_0x501322['attributes']=_[_0x6e42('0x51')](_0x61c95b[_0x6e42('0x52')],qs[_0x6e42('0x53')](_0x2dd0d8[_0x6e42('0x4f')][_0x6e42('0x53')]));_0x501322[_0x6e42('0x54')]=_0x501322[_0x6e42('0x54')]['length']?_0x501322[_0x6e42('0x54')]:_0x61c95b['model'];_0x501322[_0x6e42('0x57')]=qs[_0x6e42('0x58')](_0x2dd0d8[_0x6e42('0x4f')][_0x6e42('0x58')]);_0x501322[_0x6e42('0x59')]=qs['filters'](_[_0x6e42('0x8b')](_0x2dd0d8[_0x6e42('0x4f')],_0x61c95b[_0x6e42('0x50')]));if(_0x2dd0d8[_0x6e42('0x4f')][_0x6e42('0x5a')]){_0x501322['where']=_[_0x6e42('0x5b')](_0x501322[_0x6e42('0x59')],{'$or':_[_0x6e42('0x4b')](_0x501322['attributes'],function(_0x421aca){var _0x23aa9b={};_0x23aa9b[_0x421aca]={'$like':'%'+_0x2dd0d8[_0x6e42('0x4f')]['filter']+'%'};return _0x23aa9b;})});}_0x501322=_[_0x6e42('0x5b')]({},_0x501322,_0x2dd0d8['options']);return _0x4643b1[_0x6e42('0xc6')](_0x501322);}})[_0x6e42('0x14')](function(_0x6e3474){if(_0x6e3474){_0x51b75e=_0x6e3474[_0x6e42('0x55')];if(!_0x2dd0d8[_0x6e42('0x4f')][_0x6e42('0x9c')]('nolimit')){_0x501322[_0x6e42('0x24')]=qs[_0x6e42('0x24')](_0x2dd0d8['query'][_0x6e42('0x24')]);_0x501322[_0x6e42('0x23')]=qs[_0x6e42('0x23')](_0x2dd0d8['query'][_0x6e42('0x23')]);}return _0x4643b1[_0x6e42('0xc6')](_0x501322);}})['then'](function(_0x257dc1){if(_0x257dc1){return _0x257dc1?{'count':_0x51b75e,'rows':_0x257dc1}:null;}})[_0x6e42('0x14')](respondWithResult(_0x321b72,null))[_0x6e42('0x61')](handleError(_0x321b72,null));};
\ No newline at end of file
index e73208e..6a3c361 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b77=['../../mysqldb','MailAccount','setMaxListeners','update','remove','emit','hasOwnProperty','hook','events'];(function(_0x6b2c5c,_0x3f6949){var _0x18e3ce=function(_0x1a143f){while(--_0x1a143f){_0x6b2c5c['push'](_0x6b2c5c['shift']());}};_0x18e3ce(++_0x3f6949);}(_0x7b77,0x179));var _0x77b7=function(_0x9cfe28,_0x1a335c){_0x9cfe28=_0x9cfe28-0x0;var _0x54a1d0=_0x7b77[_0x9cfe28];return _0x54a1d0;};'use strict';var EventEmitter=require(_0x77b7('0x0'));var MailAccount=require(_0x77b7('0x1'))['db'][_0x77b7('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x77b7('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x77b7('0x4'),'afterDestroy':_0x77b7('0x5')};function emitEvent(_0x3dbd97){return function(_0x5cfb6f,_0x4716a1,_0x139f98){MailAccountEvents[_0x77b7('0x6')](_0x3dbd97+':'+_0x5cfb6f['id'],_0x5cfb6f);MailAccountEvents[_0x77b7('0x6')](_0x3dbd97,_0x5cfb6f);_0x139f98(null);};}for(var e in events){if(events[_0x77b7('0x7')](e)){var event=events[e];MailAccount[_0x77b7('0x8')](e,emitEvent(event));}}module['exports']=MailAccountEvents;
\ No newline at end of file
+var _0xaa3f=['events','../../mysqldb','MailAccount','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x4eb7e6,_0x451464){var _0x3cf508=function(_0x462471){while(--_0x462471){_0x4eb7e6['push'](_0x4eb7e6['shift']());}};_0x3cf508(++_0x451464);}(_0xaa3f,0xbb));var _0xfaa3=function(_0x414ff1,_0xf0462b){_0x414ff1=_0x414ff1-0x0;var _0x29c53f=_0xaa3f[_0x414ff1];return _0x29c53f;};'use strict';var EventEmitter=require(_0xfaa3('0x0'));var MailAccount=require(_0xfaa3('0x1'))['db'][_0xfaa3('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0xfaa3('0x3')](0x0);var events={'afterCreate':_0xfaa3('0x4'),'afterUpdate':_0xfaa3('0x5'),'afterDestroy':_0xfaa3('0x6')};function emitEvent(_0x2b1aaf){return function(_0x32f4e1,_0x5123a3,_0x513eea){MailAccountEvents[_0xfaa3('0x7')](_0x2b1aaf+':'+_0x32f4e1['id'],_0x32f4e1);MailAccountEvents['emit'](_0x2b1aaf,_0x32f4e1);_0x513eea(null);};}for(var e in events){if(events[_0xfaa3('0x8')](e)){var event=events[e];MailAccount[_0xfaa3('0x9')](e,emitEvent(event));}}module[_0xfaa3('0xa')]=MailAccountEvents;
\ No newline at end of file
index ef70a92..f0f1b23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe77e=['./mailAccount.attributes','define','MailAccount','provider','custom','host','Smtp','port','secure','modernAuthentication','CloudProvider','OAuth2','user','auth'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe77e,0x118));var _0xee77=function(_0x19743f,_0x3afb96){_0x19743f=_0x19743f-0x0;var _0x34166d=_0xe77e[_0x19743f];return _0x34166d;};'use strict';var attributes=require(_0xee77('0x0'));module['exports']=function(_0x266703){return _0x266703[_0xee77('0x1')](_0xee77('0x2'),attributes,{'tableName':'mail_accounts','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x41c446=this;var _0xc70502={'id':_0x41c446['id'],'tls':{'rejectUnauthorized':![]}};if(_0x41c446[_0xee77('0x3')]!==_0xee77('0x4')){_0xc70502['service']=_0x41c446['provider'];}else{_0xc70502[_0xee77('0x5')]=_0x41c446[_0xee77('0x6')][_0xee77('0x5')];_0xc70502[_0xee77('0x7')]=_0x41c446['Smtp']['port'];_0xc70502['secure']=_0x41c446[_0xee77('0x6')][_0xee77('0x8')];}if(_0x41c446[_0xee77('0x6')]['authentication']){if(_0x41c446[_0xee77('0x6')][_0xee77('0x9')]){if(!_0x41c446[_0xee77('0x6')][_0xee77('0xa')])throw new Error('Cloud\x20Provider\x20configuration\x20not\x20found');_0xc70502['auth']={'type':_0xee77('0xb'),'user':_0x41c446[_0xee77('0x6')][_0xee77('0xc')],'accessToken':_0x41c446['Smtp'][_0xee77('0xa')]['data5']};}else{_0xc70502[_0xee77('0xd')]={'user':_0x41c446[_0xee77('0x6')][_0xee77('0xc')],'pass':_0x41c446[_0xee77('0x6')]['pass']};}}return _0xc70502;}}});};
\ No newline at end of file
+var _0xa75a=['OAuth2','user','data5','auth','pass','exports','define','MailAccount','mail_accounts','provider','service','host','port','Smtp','secure','modernAuthentication','CloudProvider','Cloud\x20Provider\x20configuration\x20not\x20found'];(function(_0x3005d5,_0xf588c7){var _0x547c7e=function(_0x4514dc){while(--_0x4514dc){_0x3005d5['push'](_0x3005d5['shift']());}};_0x547c7e(++_0xf588c7);}(_0xa75a,0xa7));var _0xaa75=function(_0x1cb931,_0x41493d){_0x1cb931=_0x1cb931-0x0;var _0x1ef86b=_0xa75a[_0x1cb931];return _0x1ef86b;};'use strict';var attributes=require('./mailAccount.attributes');module[_0xaa75('0x0')]=function(_0x57ac52){return _0x57ac52[_0xaa75('0x1')](_0xaa75('0x2'),attributes,{'tableName':_0xaa75('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x575742=this;var _0x62d609={'id':_0x575742['id'],'tls':{'rejectUnauthorized':![]}};if(_0x575742[_0xaa75('0x4')]!=='custom'){_0x62d609[_0xaa75('0x5')]=_0x575742[_0xaa75('0x4')];}else{_0x62d609['host']=_0x575742['Smtp'][_0xaa75('0x6')];_0x62d609[_0xaa75('0x7')]=_0x575742[_0xaa75('0x8')][_0xaa75('0x7')];_0x62d609[_0xaa75('0x9')]=_0x575742[_0xaa75('0x8')]['secure'];}if(_0x575742['Smtp']['authentication']){if(_0x575742[_0xaa75('0x8')][_0xaa75('0xa')]){if(!_0x575742[_0xaa75('0x8')][_0xaa75('0xb')])throw new Error(_0xaa75('0xc'));_0x62d609['auth']={'type':_0xaa75('0xd'),'user':_0x575742[_0xaa75('0x8')][_0xaa75('0xe')],'accessToken':_0x575742[_0xaa75('0x8')][_0xaa75('0xb')][_0xaa75('0xf')]};}else{_0x62d609[_0xaa75('0x10')]={'user':_0x575742[_0xaa75('0x8')][_0xaa75('0xe')],'pass':_0x575742[_0xaa75('0x8')][_0xaa75('0x11')]};}}return _0x62d609;}}});};
\ No newline at end of file
index 979ca07..437898f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef0f=['Applications','MailServerOut','CloudProvider','get','omit','smtpOptions','list','applications','orderBy','priority','asc','autoclose','push','*,*,*,*','length','create','List\x20not\x20found','contact','messageId','generate','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','inReplyTo','Contact\x20not\x20found','spread','update','subject','interaction','created','originTo','bcc','ChatWebsiteId','Email','ChatOfflineMessageId','Attachment','Attachments','UserId','name','waitForTheAssignedAgent','Start','startRouting','lodash','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','register','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetMailAccount','MailAccount','findAll','options','attributes','limit','include','map','model','find','where','setDataValue','getSmtpOptions','ShowMailAccount','body','mail','difference','keys','rawAttributes','createdAt','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','account','CmList','List','Contacts','MailApplication'];(function(_0x327016,_0x24fda2){var _0x30ba07=function(_0x4bc063){while(--_0x4bc063){_0x327016['push'](_0x327016['shift']());}};_0x30ba07(++_0x24fda2);}(_0xef0f,0x168));var _0xfef0=function(_0x1f807a,_0x29a76e){_0x1f807a=_0x1f807a-0x0;var _0x191415=_0xef0f[_0x1f807a];return _0x191415;};'use strict';var _=require(_0xfef0('0x0'));var moment=require('moment');var BPromise=require(_0xfef0('0x1'));var rs=require(_0xfef0('0x2'));var Redis=require(_0xfef0('0x3'));var db=require('../../mysqldb')['db'];var logger=require(_0xfef0('0x4'))(_0xfef0('0x5'));var config=require(_0xfef0('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xfef0('0x7')][_0xfef0('0x8')]({'port':0x232c});config[_0xfef0('0x9')]=_[_0xfef0('0xa')](config[_0xfef0('0x9')],{'host':_0xfef0('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xfef0('0x9')]));require('./mailAccount.socket')[_0xfef0('0xc')](socket);function respondWithRpcPromise(_0x100e3a,_0x3a81cc,_0x2d42dc){return new BPromise(function(_0x334e74,_0x402dff){return client[_0xfef0('0xd')](_0x100e3a,_0x2d42dc)[_0xfef0('0xe')](function(_0x11bbca){logger[_0xfef0('0xf')](_0xfef0('0x10'),_0x3a81cc,_0xfef0('0x11'));logger[_0xfef0('0x12')](_0xfef0('0x13'),_0x3a81cc,'request\x20sent',JSON[_0xfef0('0x14')](_0x11bbca));if(_0x11bbca[_0xfef0('0x15')]){if(_0x11bbca[_0xfef0('0x15')][_0xfef0('0x16')]===0x1f4){logger[_0xfef0('0x15')](_0xfef0('0x10'),_0x3a81cc,_0x11bbca[_0xfef0('0x15')]['message']);return _0x402dff(_0x11bbca[_0xfef0('0x15')]['message']);}logger['error']('MailAccount,\x20%s,\x20%s',_0x3a81cc,_0x11bbca[_0xfef0('0x15')][_0xfef0('0x17')]);return _0x334e74(_0x11bbca[_0xfef0('0x15')][_0xfef0('0x17')]);}else{logger[_0xfef0('0xf')](_0xfef0('0x10'),_0x3a81cc,_0xfef0('0x11'));_0x334e74(_0x11bbca[_0xfef0('0x18')]['message']);}})[_0xfef0('0x19')](function(_0x1642cd){logger[_0xfef0('0x15')](_0xfef0('0x10'),_0x3a81cc,_0x1642cd);_0x402dff(_0x1642cd);});});}exports[_0xfef0('0x1a')]=function(_0x55912f){var _0x5283e1=this;return new Promise(function(_0x4e24de,_0x20826b){return db[_0xfef0('0x1b')][_0xfef0('0x1c')]({'raw':_0x55912f['options']?_0x55912f[_0xfef0('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x55912f[_0xfef0('0x1d')]?_0x55912f[_0xfef0('0x1d')]['where']||null:null,'attributes':_0x55912f['options']?_0x55912f['options'][_0xfef0('0x1e')]||null:null,'limit':_0x55912f['options']?_0x55912f[_0xfef0('0x1d')][_0xfef0('0x1f')]||null:null,'include':_0x55912f[_0xfef0('0x1d')]?_0x55912f[_0xfef0('0x1d')][_0xfef0('0x20')]?_[_0xfef0('0x21')](_0x55912f['options']['include'],function(_0x316e20){return{'model':db[_0x316e20[_0xfef0('0x22')]],'as':_0x316e20['as'],'attributes':_0x316e20[_0xfef0('0x1e')],'include':_0x316e20[_0xfef0('0x20')]?_[_0xfef0('0x21')](_0x316e20[_0xfef0('0x20')],function(_0x5df04f){return{'model':db[_0x5df04f[_0xfef0('0x22')]],'as':_0x5df04f['as'],'attributes':_0x5df04f[_0xfef0('0x1e')],'include':_0x5df04f['include']?_[_0xfef0('0x21')](_0x5df04f[_0xfef0('0x20')],function(_0xca0cce){return{'model':db[_0xca0cce[_0xfef0('0x22')]],'as':_0xca0cce['as'],'attributes':_0xca0cce[_0xfef0('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xfef0('0xe')](function(_0x3e3c4c){logger[_0xfef0('0xf')](_0xfef0('0x1a'),_0x55912f);logger[_0xfef0('0x12')](_0xfef0('0x1a'),_0x55912f,JSON[_0xfef0('0x14')](_0x3e3c4c));_0x4e24de(_0x3e3c4c);})['catch'](function(_0x445625){logger['error']('GetMailAccount',_0x445625[_0xfef0('0x17')],_0x55912f);_0x20826b(_0x5283e1[_0xfef0('0x15')](0x1f4,_0x445625['message']));});});};exports['ShowMailAccount']=function(_0x5cf518){var _0x4f65cd=this;return new Promise(function(_0x4cce8a,_0x417535){return db[_0xfef0('0x1b')][_0xfef0('0x23')]({'raw':_0x5cf518['options']?_0x5cf518['options']['raw']===undefined?!![]:![]:!![],'where':_0x5cf518[_0xfef0('0x1d')]?_0x5cf518['options'][_0xfef0('0x24')]||null:null,'attributes':_0x5cf518[_0xfef0('0x1d')]?_0x5cf518[_0xfef0('0x1d')]['attributes']||null:null,'include':_0x5cf518[_0xfef0('0x1d')]?_0x5cf518['options'][_0xfef0('0x20')]?_[_0xfef0('0x21')](_0x5cf518[_0xfef0('0x1d')][_0xfef0('0x20')],function(_0x3e1a64){return{'model':db[_0x3e1a64[_0xfef0('0x22')]],'as':_0x3e1a64['as'],'attributes':_0x3e1a64[_0xfef0('0x1e')],'include':_0x3e1a64[_0xfef0('0x20')]?_['map'](_0x3e1a64[_0xfef0('0x20')],function(_0xea09ec){return{'model':db[_0xea09ec[_0xfef0('0x22')]],'as':_0xea09ec['as'],'attributes':_0xea09ec[_0xfef0('0x1e')],'include':_0xea09ec[_0xfef0('0x20')]?_[_0xfef0('0x21')](_0xea09ec[_0xfef0('0x20')],function(_0xeb75e2){return{'model':db[_0xeb75e2[_0xfef0('0x22')]],'as':_0xeb75e2['as'],'attributes':_0xeb75e2[_0xfef0('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xfef0('0xe')](function(_0x22acf9){if(_0x5cf518[_0xfef0('0x1d')]['smtp']===!![])_0x22acf9[_0xfef0('0x25')]('smtpOptions',_0x22acf9[_0xfef0('0x26')]());logger[_0xfef0('0xf')](_0xfef0('0x27'),_0x5cf518);logger['debug'](_0xfef0('0x27'),_0x5cf518,JSON[_0xfef0('0x14')](_0x22acf9));_0x4cce8a(_0x22acf9);})[_0xfef0('0x19')](function(_0x5537c8){logger[_0xfef0('0x15')](_0xfef0('0x27'),_0x5537c8[_0xfef0('0x17')],_0x5cf518);_0x417535(_0x4f65cd['error'](0x1f4,_0x5537c8[_0xfef0('0x17')]));});});};exports['NotifyMailAccount']=function(_0x49ed48){var _0xf30aff=this;return new Promise(function(_0x547a5d,_0x5c3305){var _0xbf6ddd={'body':_0x49ed48[_0xfef0('0x28')],'channel':_0xfef0('0x29')};var _0x1a6593=_[_0xfef0('0x2a')](_[_0xfef0('0x2b')](db['CmContact'][_0xfef0('0x2c')]),[_0xfef0('0x2d'),'updatedAt','CompanyId',_0xfef0('0x2e')]);var _0x5dc824=![];if(_0x49ed48[_0xfef0('0x28')]['id']){delete _0x49ed48[_0xfef0('0x28')]['id'];}if(_[_0xfef0('0x2f')](_0x49ed48[_0xfef0('0x28')][_0xfef0('0x30')])){return _0x5c3305(_0xf30aff[_0xfef0('0x15')](0x1f4,_0xfef0('0x31')));}if(_[_0xfef0('0x2f')](_0x49ed48['body'][_0xfef0('0x28')])||_0x49ed48['body']['body']===''){return _0x5c3305(_0xf30aff[_0xfef0('0x15')](0x1f4,_0xfef0('0x32')));}if(_['isNil'](_0x49ed48[_0xfef0('0x28')]['mapKey'])){return _0x5c3305(_0xf30aff[_0xfef0('0x15')](0x1f4,_0xfef0('0x33')+_0x1a6593));}if(!_[_0xfef0('0x34')](_0x1a6593,_0x49ed48[_0xfef0('0x28')]['mapKey'])){return _0x5c3305(_0xf30aff[_0xfef0('0x15')](0x1f4,_0xfef0('0x35')+_0x1a6593));}var _0x504967={};_0x504967[_0x49ed48['body'][_0xfef0('0x36')]]=_0x49ed48['body'][_0xfef0('0x30')];return db[_0xfef0('0x1b')][_0xfef0('0x23')]({'where':{'id':_0x49ed48[_0xfef0('0x37')]['id']},'include':[{'model':db[_0xfef0('0x38')],'as':_0xfef0('0x39'),'include':[{'model':db['CmContact'],'as':_0xfef0('0x3a'),'where':_0x504967,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0xfef0('0x3b')],'as':_0xfef0('0x3c')},{'model':db[_0xfef0('0x3d')],'as':'Smtp','include':[{'model':db[_0xfef0('0x3e')],'as':'CloudProvider'}]}]})['then'](function(_0x51f207){if(_0x51f207&&_0x51f207[_0xfef0('0x39')]){var _0x3d471c=_0x51f207[_0xfef0('0x3f')]({'plain':!![]});_0xbf6ddd[_0xfef0('0x37')]=_[_0xfef0('0x40')](_0x3d471c,[_0xfef0('0x3c'),_0xfef0('0x39')]);_0xbf6ddd[_0xfef0('0x37')][_0xfef0('0x41')]=_0x51f207['getSmtpOptions']();_0xbf6ddd['applications']=_0x3d471c[_0xfef0('0x3c')];_0xbf6ddd[_0xfef0('0x42')]=_0x3d471c[_0xfef0('0x39')];_0xbf6ddd[_0xfef0('0x43')]=_[_0xfef0('0x44')](_0xbf6ddd[_0xfef0('0x43')],[_0xfef0('0x45')],[_0xfef0('0x46')]);if(_0xbf6ddd['account']&&_0xbf6ddd[_0xfef0('0x37')][_0xfef0('0x47')]){_0xbf6ddd[_0xfef0('0x43')][_0xfef0('0x48')]({'id':0x0,'priority':_0xbf6ddd[_0xfef0('0x43')]['length']+0x1,'app':'close','appdata':'autoclose','interval':_0xfef0('0x49')});}if(_0xbf6ddd[_0xfef0('0x37')][_0xfef0('0x3c')]){delete _0xbf6ddd[_0xfef0('0x37')]['Applications'];}if(_0xbf6ddd[_0xfef0('0x37')][_0xfef0('0x39')]){delete _0xbf6ddd[_0xfef0('0x37')][_0xfef0('0x39')];}if(_0x3d471c[_0xfef0('0x39')][_0xfef0('0x3a')][_0xfef0('0x4a')]){return _0x3d471c['List'][_0xfef0('0x3a')][0x0];}var _0x163255=_['defaults'](_0x49ed48[_0xfef0('0x28')],{'firstName':_0x49ed48['body'][_0xfef0('0x30')],'ListId':_0x3d471c[_0xfef0('0x2e')]});_0x163255[_0x49ed48['body'][_0xfef0('0x36')]]=_0x49ed48['body']['from'];return db['CmContact'][_0xfef0('0x4b')](_0x163255);}else{throw new Error(_0xfef0('0x4c'));}})[_0xfef0('0xe')](function(_0x34fda3){_0xbf6ddd[_0xfef0('0x4d')]=_0x34fda3;if(_0x34fda3){if(!_0x49ed48[_0xfef0('0x28')]['message'][_0xfef0('0x4e')]){_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')][_0xfef0('0x4e')]=rs[_0xfef0('0x4f')]()+'\x20'+_0x49ed48['body'][_0xfef0('0x17')]['from'];}var _0x135653={'ContactId':_0x34fda3['id'],'MailAccountId':_0x49ed48['account']['id'],'inReplyTo':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')][_0xfef0('0x4e')],'to':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')]['from'],'cc':_0x49ed48[_0xfef0('0x28')]['message']['cc'],'subject':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')]['subject'],'attach':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')][_0xfef0('0x50')],'lastMsgAt':moment()[_0xfef0('0x51')](_0xfef0('0x52')),'lastMsgDirection':'in'};return db[_0xfef0('0x53')][_0xfef0('0x23')]({'where':{'closed':![],'MailAccountId':_0x49ed48[_0xfef0('0x37')]['id']},'include':[{'model':db[_0xfef0('0x54')],'as':_0xfef0('0x55'),'attributes':[_0xfef0('0x4e')],'where':{'messageId':_0x49ed48[_0xfef0('0x28')]['message'][_0xfef0('0x56')]}}]})[_0xfef0('0xe')](function(_0x28cab7){if(_0x28cab7){return[_0x28cab7,![]];}return db[_0xfef0('0x53')][_0xfef0('0x4b')](_0x135653)['then'](function(_0x12e383){return[_0x12e383,!![]];});});}else{throw new Error(_0xfef0('0x57'));}})[_0xfef0('0x58')](function(_0x3c6bb8,_0x176fc7){if(_0x3c6bb8){_0x5dc824=_0x176fc7;if(!_0x176fc7){return _0x3c6bb8[_0xfef0('0x59')]({'inReplyTo':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')][_0xfef0('0x4e')],'to':_0x49ed48[_0xfef0('0x28')]['message'][_0xfef0('0x30')],'cc':_0x49ed48['body'][_0xfef0('0x17')]['cc'],'subject':_0x49ed48[_0xfef0('0x28')]['message'][_0xfef0('0x5a')],'attach':_0x3c6bb8[_0xfef0('0x50')]?_0x3c6bb8[_0xfef0('0x50')]:_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')]['attach'],'substatus':null,'substatusAt':moment()[_0xfef0('0x51')](_0xfef0('0x52')),'lastMsgAt':moment()[_0xfef0('0x51')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'});}else{return _0x3c6bb8;}}})[_0xfef0('0xe')](function(_0x2ab666){_0xbf6ddd[_0xfef0('0x5b')]=_0x2ab666[_0xfef0('0x3f')]({'plain':!![]});_0xbf6ddd[_0xfef0('0x5b')][_0xfef0('0x5c')]=_0x5dc824;return db[_0xfef0('0x54')]['create']({'body':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x28')],'MailAccountId':_0x49ed48[_0xfef0('0x37')]['id'],'MailInteractionId':_0x2ab666['id'],'direction':'in','ContactId':_0xbf6ddd[_0xfef0('0x4d')]['id'],'messageId':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')]['messageId'],'from':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')][_0xfef0('0x30')],'to':_0x49ed48[_0xfef0('0x28')]['message']['to'],'cc':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')]['cc'],'subject':_0x49ed48['body'][_0xfef0('0x17')][_0xfef0('0x5a')],'attach':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')][_0xfef0('0x50')],'Attachments':_0x49ed48['body']['message']['attachments'],'originTo':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')][_0xfef0('0x5d')],'originCc':_0x49ed48['body'][_0xfef0('0x17')]['originCc'],'bcc':_0x49ed48['body']['message'][_0xfef0('0x5e')],'ChatWebsiteId':_0x49ed48[_0xfef0('0x28')]['message'][_0xfef0('0x5f')]||null,'originChannel':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')]['originChannel']||_0xfef0('0x60'),'ChatOfflineMessageId':_0x49ed48['body']['message'][_0xfef0('0x61')]||null},{'include':[{'model':db[_0xfef0('0x62')],'as':_0xfef0('0x63')}]});})[_0xfef0('0xe')](function(_0x4df63b){_0xbf6ddd['message']=_0x4df63b;if(_0xbf6ddd['interaction'][_0xfef0('0x64')]){return db['User'][_0xfef0('0x23')]({'attributes':['id',_0xfef0('0x65')],'where':{'id':_0xbf6ddd[_0xfef0('0x5b')][_0xfef0('0x64')]}})[_0xfef0('0xe')](function(_0x4be622){if(_0x4be622){_0xbf6ddd[_0xfef0('0x43')]['unshift']({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x4be622[_0xfef0('0x65')]+','+(_0xbf6ddd[_0xfef0('0x37')][_0xfef0('0x66')]||0xa),'interval':_0xfef0('0x49')});}return respondWithRpcPromise('Start','startRouting',_0xbf6ddd);});}return respondWithRpcPromise(_0xfef0('0x67'),_0xfef0('0x68'),_0xbf6ddd);})['then'](function(_0x872f99){_0x547a5d(_0x872f99);})[_0xfef0('0x19')](function(_0x4690c0){_0x5c3305(_0xf30aff[_0xfef0('0x15')](0x1f4,_0x4690c0[_0xfef0('0x17')]));});});};
\ No newline at end of file
+var _0x5fab=['DESC','MailApplication','Applications','MailServerOut','Smtp','CloudProvider','omit','smtpOptions','getSmtpOptions','applications','orderBy','priority','push','length','close','autoclose','*,*,*,*','defaults','ListId','List\x20not\x20found','messageId','generate','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','spread','interaction','get','created','create','attachments','originTo','originCc','bcc','originChannel','Email','Attachment','Attachments','UserId','name','agent','waitForTheAssignedAgent','Start','startRouting','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetMailAccount','findAll','options','attributes','limit','include','model','map','ShowMailAccount','find','where','body','mail','difference','keys','CmContact','rawAttributes','createdAt','CompanyId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','account','CmList','List','Contacts','updatedAt'];(function(_0x4b2251,_0x393f10){var _0x5d22fb=function(_0x10992c){while(--_0x10992c){_0x4b2251['push'](_0x4b2251['shift']());}};_0x5d22fb(++_0x393f10);}(_0x5fab,0x177));var _0xb5fa=function(_0x2b216a,_0x5ebea4){_0x2b216a=_0x2b216a-0x0;var _0x39ab62=_0x5fab[_0x2b216a];return _0x39ab62;};'use strict';var _=require(_0xb5fa('0x0'));var moment=require(_0xb5fa('0x1'));var BPromise=require('bluebird');var rs=require(_0xb5fa('0x2'));var Redis=require(_0xb5fa('0x3'));var db=require(_0xb5fa('0x4'))['db'];var logger=require(_0xb5fa('0x5'))(_0xb5fa('0x6'));var config=require(_0xb5fa('0x7'));var jayson=require(_0xb5fa('0x8'));var client=jayson[_0xb5fa('0x9')][_0xb5fa('0xa')]({'port':0x232c});config[_0xb5fa('0xb')]=_['defaults'](config['redis'],{'host':_0xb5fa('0xc'),'port':0x18eb});var socket=require(_0xb5fa('0xd'))(new Redis(config[_0xb5fa('0xb')]));require('./mailAccount.socket')[_0xb5fa('0xe')](socket);function respondWithRpcPromise(_0x38d9a3,_0x2cf4a5,_0x54c7eb){return new BPromise(function(_0x5b5ea8,_0x3a8e1b){return client[_0xb5fa('0xf')](_0x38d9a3,_0x54c7eb)[_0xb5fa('0x10')](function(_0x44e6c8){logger[_0xb5fa('0x11')](_0xb5fa('0x12'),_0x2cf4a5,_0xb5fa('0x13'));logger[_0xb5fa('0x14')](_0xb5fa('0x15'),_0x2cf4a5,'request\x20sent',JSON[_0xb5fa('0x16')](_0x44e6c8));if(_0x44e6c8[_0xb5fa('0x17')]){if(_0x44e6c8['error'][_0xb5fa('0x18')]===0x1f4){logger['error'](_0xb5fa('0x12'),_0x2cf4a5,_0x44e6c8[_0xb5fa('0x17')][_0xb5fa('0x19')]);return _0x3a8e1b(_0x44e6c8[_0xb5fa('0x17')][_0xb5fa('0x19')]);}logger['error']('MailAccount,\x20%s,\x20%s',_0x2cf4a5,_0x44e6c8[_0xb5fa('0x17')][_0xb5fa('0x19')]);return _0x5b5ea8(_0x44e6c8[_0xb5fa('0x17')][_0xb5fa('0x19')]);}else{logger['info']('MailAccount,\x20%s,\x20%s',_0x2cf4a5,_0xb5fa('0x13'));_0x5b5ea8(_0x44e6c8[_0xb5fa('0x1a')][_0xb5fa('0x19')]);}})[_0xb5fa('0x1b')](function(_0x324ba5){logger[_0xb5fa('0x17')](_0xb5fa('0x12'),_0x2cf4a5,_0x324ba5);_0x3a8e1b(_0x324ba5);});});}exports[_0xb5fa('0x1c')]=function(_0xc14dc4){var _0x368cb1=this;return new Promise(function(_0x3c8d53,_0x1f5064){return db['MailAccount'][_0xb5fa('0x1d')]({'raw':_0xc14dc4['options']?_0xc14dc4[_0xb5fa('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0xc14dc4[_0xb5fa('0x1e')]?_0xc14dc4[_0xb5fa('0x1e')]['where']||null:null,'attributes':_0xc14dc4[_0xb5fa('0x1e')]?_0xc14dc4[_0xb5fa('0x1e')][_0xb5fa('0x1f')]||null:null,'limit':_0xc14dc4['options']?_0xc14dc4[_0xb5fa('0x1e')][_0xb5fa('0x20')]||null:null,'include':_0xc14dc4[_0xb5fa('0x1e')]?_0xc14dc4['options'][_0xb5fa('0x21')]?_['map'](_0xc14dc4[_0xb5fa('0x1e')][_0xb5fa('0x21')],function(_0x11053a){return{'model':db[_0x11053a[_0xb5fa('0x22')]],'as':_0x11053a['as'],'attributes':_0x11053a[_0xb5fa('0x1f')],'include':_0x11053a[_0xb5fa('0x21')]?_[_0xb5fa('0x23')](_0x11053a[_0xb5fa('0x21')],function(_0x568870){return{'model':db[_0x568870['model']],'as':_0x568870['as'],'attributes':_0x568870['attributes'],'include':_0x568870['include']?_[_0xb5fa('0x23')](_0x568870[_0xb5fa('0x21')],function(_0x12c0d4){return{'model':db[_0x12c0d4[_0xb5fa('0x22')]],'as':_0x12c0d4['as'],'attributes':_0x12c0d4[_0xb5fa('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xb5fa('0x10')](function(_0x358549){logger[_0xb5fa('0x11')](_0xb5fa('0x1c'),_0xc14dc4);logger[_0xb5fa('0x14')](_0xb5fa('0x1c'),_0xc14dc4,JSON[_0xb5fa('0x16')](_0x358549));_0x3c8d53(_0x358549);})[_0xb5fa('0x1b')](function(_0x1f4380){logger[_0xb5fa('0x17')](_0xb5fa('0x1c'),_0x1f4380[_0xb5fa('0x19')],_0xc14dc4);_0x1f5064(_0x368cb1[_0xb5fa('0x17')](0x1f4,_0x1f4380[_0xb5fa('0x19')]));});});};exports[_0xb5fa('0x24')]=function(_0x291938){var _0x370d95=this;return new Promise(function(_0x10fb43,_0x25fc7c){return db['MailAccount'][_0xb5fa('0x25')]({'raw':_0x291938['options']?_0x291938['options']['raw']===undefined?!![]:![]:!![],'where':_0x291938[_0xb5fa('0x1e')]?_0x291938['options'][_0xb5fa('0x26')]||null:null,'attributes':_0x291938['options']?_0x291938['options'][_0xb5fa('0x1f')]||null:null,'include':_0x291938[_0xb5fa('0x1e')]?_0x291938['options']['include']?_[_0xb5fa('0x23')](_0x291938[_0xb5fa('0x1e')][_0xb5fa('0x21')],function(_0x560b53){return{'model':db[_0x560b53[_0xb5fa('0x22')]],'as':_0x560b53['as'],'attributes':_0x560b53[_0xb5fa('0x1f')],'include':_0x560b53['include']?_[_0xb5fa('0x23')](_0x560b53[_0xb5fa('0x21')],function(_0x204d6b){return{'model':db[_0x204d6b['model']],'as':_0x204d6b['as'],'attributes':_0x204d6b[_0xb5fa('0x1f')],'include':_0x204d6b[_0xb5fa('0x21')]?_[_0xb5fa('0x23')](_0x204d6b['include'],function(_0x117694){return{'model':db[_0x117694[_0xb5fa('0x22')]],'as':_0x117694['as'],'attributes':_0x117694[_0xb5fa('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xb5fa('0x10')](function(_0x5e7770){if(_0x291938['options']['smtp']===!![])_0x5e7770['setDataValue']('smtpOptions',_0x5e7770['getSmtpOptions']());logger[_0xb5fa('0x11')]('ShowMailAccount',_0x291938);logger[_0xb5fa('0x14')](_0xb5fa('0x24'),_0x291938,JSON[_0xb5fa('0x16')](_0x5e7770));_0x10fb43(_0x5e7770);})[_0xb5fa('0x1b')](function(_0x40c1c0){logger[_0xb5fa('0x17')]('ShowMailAccount',_0x40c1c0['message'],_0x291938);_0x25fc7c(_0x370d95['error'](0x1f4,_0x40c1c0[_0xb5fa('0x19')]));});});};exports['NotifyMailAccount']=function(_0x73d425){var _0x5addd5=this;return new Promise(function(_0x58aa97,_0x3cdf63){var _0x42d331={'body':_0x73d425[_0xb5fa('0x27')],'channel':_0xb5fa('0x28')};var _0x5bc93f=_[_0xb5fa('0x29')](_[_0xb5fa('0x2a')](db[_0xb5fa('0x2b')][_0xb5fa('0x2c')]),[_0xb5fa('0x2d'),'updatedAt',_0xb5fa('0x2e'),'ListId']);var _0x233f90=![];if(_0x73d425[_0xb5fa('0x27')]['id']){delete _0x73d425[_0xb5fa('0x27')]['id'];}if(_[_0xb5fa('0x2f')](_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x30')])){return _0x3cdf63(_0x5addd5[_0xb5fa('0x17')](0x1f4,_0xb5fa('0x31')));}if(_['isNil'](_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x27')])||_0x73d425['body'][_0xb5fa('0x27')]===''){return _0x3cdf63(_0x5addd5['error'](0x1f4,_0xb5fa('0x32')));}if(_[_0xb5fa('0x2f')](_0x73d425['body']['mapKey'])){return _0x3cdf63(_0x5addd5[_0xb5fa('0x17')](0x1f4,_0xb5fa('0x33')+_0x5bc93f));}if(!_[_0xb5fa('0x34')](_0x5bc93f,_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x35')])){return _0x3cdf63(_0x5addd5[_0xb5fa('0x17')](0x1f4,_0xb5fa('0x36')+_0x5bc93f));}var _0x125a5c={};_0x125a5c[_0x73d425['body'][_0xb5fa('0x35')]]=_0x73d425[_0xb5fa('0x27')]['from'];return db[_0xb5fa('0x37')][_0xb5fa('0x25')]({'where':{'id':_0x73d425[_0xb5fa('0x38')]['id']},'include':[{'model':db[_0xb5fa('0x39')],'as':_0xb5fa('0x3a'),'include':[{'model':db[_0xb5fa('0x2b')],'as':_0xb5fa('0x3b'),'where':_0x125a5c,'limit':0x1,'order':[[_0xb5fa('0x3c'),_0xb5fa('0x3d')]]}]},{'model':db[_0xb5fa('0x3e')],'as':_0xb5fa('0x3f')},{'model':db[_0xb5fa('0x40')],'as':_0xb5fa('0x41'),'include':[{'model':db[_0xb5fa('0x42')],'as':_0xb5fa('0x42')}]}]})[_0xb5fa('0x10')](function(_0x52f5d8){if(_0x52f5d8&&_0x52f5d8['List']){var _0x46194d=_0x52f5d8['get']({'plain':!![]});_0x42d331[_0xb5fa('0x38')]=_[_0xb5fa('0x43')](_0x46194d,['Applications',_0xb5fa('0x3a')]);_0x42d331[_0xb5fa('0x38')][_0xb5fa('0x44')]=_0x52f5d8[_0xb5fa('0x45')]();_0x42d331[_0xb5fa('0x46')]=_0x46194d[_0xb5fa('0x3f')];_0x42d331['list']=_0x46194d[_0xb5fa('0x3a')];_0x42d331['applications']=_[_0xb5fa('0x47')](_0x42d331[_0xb5fa('0x46')],[_0xb5fa('0x48')],['asc']);if(_0x42d331[_0xb5fa('0x38')]&&_0x42d331[_0xb5fa('0x38')]['autoclose']){_0x42d331['applications'][_0xb5fa('0x49')]({'id':0x0,'priority':_0x42d331[_0xb5fa('0x46')][_0xb5fa('0x4a')]+0x1,'app':_0xb5fa('0x4b'),'appdata':_0xb5fa('0x4c'),'interval':_0xb5fa('0x4d')});}if(_0x42d331[_0xb5fa('0x38')][_0xb5fa('0x3f')]){delete _0x42d331[_0xb5fa('0x38')][_0xb5fa('0x3f')];}if(_0x42d331[_0xb5fa('0x38')][_0xb5fa('0x3a')]){delete _0x42d331[_0xb5fa('0x38')][_0xb5fa('0x3a')];}if(_0x46194d[_0xb5fa('0x3a')][_0xb5fa('0x3b')][_0xb5fa('0x4a')]){return _0x46194d[_0xb5fa('0x3a')]['Contacts'][0x0];}var _0x1900a5=_[_0xb5fa('0x4e')](_0x73d425[_0xb5fa('0x27')],{'firstName':_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x30')],'ListId':_0x46194d[_0xb5fa('0x4f')]});_0x1900a5[_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x35')]]=_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x30')];return db['CmContact']['create'](_0x1900a5);}else{throw new Error(_0xb5fa('0x50'));}})[_0xb5fa('0x10')](function(_0x1e78cb){_0x42d331['contact']=_0x1e78cb;if(_0x1e78cb){if(!_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x19')][_0xb5fa('0x51')]){_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x19')][_0xb5fa('0x51')]=rs[_0xb5fa('0x52')]()+'\x20'+_0x73d425['body'][_0xb5fa('0x19')][_0xb5fa('0x30')];}var _0x4afc02={'ContactId':_0x1e78cb['id'],'MailAccountId':_0x73d425[_0xb5fa('0x38')]['id'],'inReplyTo':_0x73d425[_0xb5fa('0x27')]['message'][_0xb5fa('0x51')],'to':_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x19')][_0xb5fa('0x30')],'cc':_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x19')]['cc'],'subject':_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x19')][_0xb5fa('0x53')],'attach':_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x19')][_0xb5fa('0x54')],'lastMsgAt':moment()[_0xb5fa('0x55')](_0xb5fa('0x56')),'lastMsgDirection':'in'};return db[_0xb5fa('0x57')][_0xb5fa('0x25')]({'where':{'closed':![],'MailAccountId':_0x73d425[_0xb5fa('0x38')]['id']},'include':[{'model':db[_0xb5fa('0x58')],'as':_0xb5fa('0x59'),'attributes':[_0xb5fa('0x51')],'where':{'messageId':_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x19')]['inReplyTo']}}]})[_0xb5fa('0x10')](function(_0x34ebd0){if(_0x34ebd0){return[_0x34ebd0,![]];}return db[_0xb5fa('0x57')]['create'](_0x4afc02)[_0xb5fa('0x10')](function(_0x2d786e){return[_0x2d786e,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0xb5fa('0x5a')](function(_0xb535c3,_0x5c25f6){if(_0xb535c3){_0x233f90=_0x5c25f6;if(!_0x5c25f6){return _0xb535c3['update']({'inReplyTo':_0x73d425['body'][_0xb5fa('0x19')][_0xb5fa('0x51')],'to':_0x73d425[_0xb5fa('0x27')]['message'][_0xb5fa('0x30')],'cc':_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x19')]['cc'],'subject':_0x73d425[_0xb5fa('0x27')]['message']['subject'],'attach':_0xb535c3['attach']?_0xb535c3[_0xb5fa('0x54')]:_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x19')]['attach'],'substatus':null,'substatusAt':moment()[_0xb5fa('0x55')](_0xb5fa('0x56')),'lastMsgAt':moment()[_0xb5fa('0x55')](_0xb5fa('0x56')),'lastMsgDirection':'in'});}else{return _0xb535c3;}}})[_0xb5fa('0x10')](function(_0x36b709){_0x42d331[_0xb5fa('0x5b')]=_0x36b709[_0xb5fa('0x5c')]({'plain':!![]});_0x42d331[_0xb5fa('0x5b')][_0xb5fa('0x5d')]=_0x233f90;return db[_0xb5fa('0x58')][_0xb5fa('0x5e')]({'body':_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x27')],'MailAccountId':_0x73d425[_0xb5fa('0x38')]['id'],'MailInteractionId':_0x36b709['id'],'direction':'in','ContactId':_0x42d331['contact']['id'],'messageId':_0x73d425[_0xb5fa('0x27')]['message'][_0xb5fa('0x51')],'from':_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x19')][_0xb5fa('0x30')],'to':_0x73d425[_0xb5fa('0x27')]['message']['to'],'cc':_0x73d425[_0xb5fa('0x27')]['message']['cc'],'subject':_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x19')][_0xb5fa('0x53')],'attach':_0x73d425[_0xb5fa('0x27')]['message']['attach'],'Attachments':_0x73d425['body'][_0xb5fa('0x19')][_0xb5fa('0x5f')],'originTo':_0x73d425[_0xb5fa('0x27')][_0xb5fa('0x19')][_0xb5fa('0x60')],'originCc':_0x73d425[_0xb5fa('0x27')]['message'][_0xb5fa('0x61')],'bcc':_0x73d425['body']['message'][_0xb5fa('0x62')],'ChatWebsiteId':_0x73d425['body']['message']['ChatWebsiteId']||null,'originChannel':_0x73d425[_0xb5fa('0x27')]['message'][_0xb5fa('0x63')]||_0xb5fa('0x64'),'ChatOfflineMessageId':_0x73d425[_0xb5fa('0x27')]['message']['ChatOfflineMessageId']||null},{'include':[{'model':db[_0xb5fa('0x65')],'as':_0xb5fa('0x66')}]});})['then'](function(_0x2d0c95){_0x42d331[_0xb5fa('0x19')]=_0x2d0c95;if(_0x42d331[_0xb5fa('0x5b')][_0xb5fa('0x67')]){return db['User'][_0xb5fa('0x25')]({'attributes':['id',_0xb5fa('0x68')],'where':{'id':_0x42d331[_0xb5fa('0x5b')][_0xb5fa('0x67')]}})[_0xb5fa('0x10')](function(_0x3348f7){if(_0x3348f7){_0x42d331[_0xb5fa('0x46')]['unshift']({'id':0x0,'priority':0x0,'app':_0xb5fa('0x69'),'appdata':_0x3348f7['name']+','+(_0x42d331[_0xb5fa('0x38')][_0xb5fa('0x6a')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0xb5fa('0x6b'),_0xb5fa('0x6c'),_0x42d331);});}return respondWithRpcPromise(_0xb5fa('0x6b'),_0xb5fa('0x6c'),_0x42d331);})[_0xb5fa('0x10')](function(_0x8ce5b8){_0x58aa97(_0x8ce5b8);})[_0xb5fa('0x1b')](function(_0x1bac54){_0x3cdf63(_0x5addd5['error'](0x1f4,_0x1bac54[_0xb5fa('0x19')]));});});};
\ No newline at end of file
index 4db46ed..e35bb06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63f5=['emit','removeListener','register','length','mailAccount:','./mailAccount.events','save','remove'];(function(_0xf2662b,_0x4d8f41){var _0x257dc7=function(_0x46b1d1){while(--_0x46b1d1){_0xf2662b['push'](_0xf2662b['shift']());}};_0x257dc7(++_0x4d8f41);}(_0x63f5,0x105));var _0x563f=function(_0x459a0a,_0x25c46f){_0x459a0a=_0x459a0a-0x0;var _0x4ab46c=_0x63f5[_0x459a0a];return _0x4ab46c;};'use strict';var MailAccountEvents=require(_0x563f('0x0'));var events=[_0x563f('0x1'),_0x563f('0x2'),'update'];function createListener(_0x5bf489,_0x3a07a1){return function(_0x350178){_0x3a07a1[_0x563f('0x3')](_0x5bf489,_0x350178);};}function removeListener(_0x550197,_0x252682){return function(){MailAccountEvents[_0x563f('0x4')](_0x550197,_0x252682);};}exports[_0x563f('0x5')]=function(_0x58ba84){for(var _0x1cd440=0x0,_0xde606b=events[_0x563f('0x6')];_0x1cd440<_0xde606b;_0x1cd440++){var _0x10d50c=events[_0x1cd440];var _0x29881f=createListener(_0x563f('0x7')+_0x10d50c,_0x58ba84);MailAccountEvents['on'](_0x10d50c,_0x29881f);}};
\ No newline at end of file
+var _0x164b=['update','emit','removeListener','./mailAccount.events','save'];(function(_0x56e9f8,_0x446620){var _0x36ae2a=function(_0x53d41e){while(--_0x53d41e){_0x56e9f8['push'](_0x56e9f8['shift']());}};_0x36ae2a(++_0x446620);}(_0x164b,0x157));var _0xb164=function(_0xa07a09,_0x2035da){_0xa07a09=_0xa07a09-0x0;var _0x549fa9=_0x164b[_0xa07a09];return _0x549fa9;};'use strict';var MailAccountEvents=require(_0xb164('0x0'));var events=[_0xb164('0x1'),'remove',_0xb164('0x2')];function createListener(_0xa8679c,_0x2f0130){return function(_0x329bcd){_0x2f0130[_0xb164('0x3')](_0xa8679c,_0x329bcd);};}function removeListener(_0x337e09,_0x49895c){return function(){MailAccountEvents[_0xb164('0x4')](_0x337e09,_0x49895c);};}exports['register']=function(_0x10c9cf){for(var _0x5f36c4=0x0,_0x435953=events['length'];_0x5f36c4<_0x435953;_0x5f36c4++){var _0x346fc4=events[_0x5f36c4];var _0x23b058=createListener('mailAccount:'+_0x346fc4,_0x10c9cf);MailAccountEvents['on'](_0x346fc4,_0x23b058);}};
\ No newline at end of file
index 4030b1a..d75d80f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3415=['../../components/interaction/service','../../config/environment','/:id','isAuthenticated','show','put','update','delete','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x3415,0x1ca));var _0x5341=function(_0x1728c9,_0x20180a){_0x1728c9=_0x1728c9-0x0;var _0x2f2746=_0x3415[_0x1728c9];return _0x2f2746;};'use strict';var multer=require(_0x5341('0x0'));var util=require('util');var path=require(_0x5341('0x1'));var timeout=require(_0x5341('0x2'));var express=require(_0x5341('0x3'));var router=express[_0x5341('0x4')]();var fs_extra=require(_0x5341('0x5'));var auth=require(_0x5341('0x6'));var interaction=require(_0x5341('0x7'));var config=require(_0x5341('0x8'));var controller=require('./mailApplication.controller');router['get'](_0x5341('0x9'),auth[_0x5341('0xa')](),controller[_0x5341('0xb')]);router[_0x5341('0xc')](_0x5341('0x9'),auth[_0x5341('0xa')](),controller[_0x5341('0xd')]);router[_0x5341('0xe')](_0x5341('0x9'),auth[_0x5341('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x7087=['isAuthenticated','show','put','destroy','exports','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id'];(function(_0x304907,_0x10ad49){var _0x27b2c8=function(_0x37b621){while(--_0x37b621){_0x304907['push'](_0x304907['shift']());}};_0x27b2c8(++_0x10ad49);}(_0x7087,0xbb));var _0x7708=function(_0x2412d2,_0x3d00a1){_0x2412d2=_0x2412d2-0x0;var _0x18004e=_0x7087[_0x2412d2];return _0x18004e;};'use strict';var multer=require('multer');var util=require(_0x7708('0x0'));var path=require(_0x7708('0x1'));var timeout=require(_0x7708('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x7708('0x3'));var auth=require(_0x7708('0x4'));var interaction=require(_0x7708('0x5'));var config=require(_0x7708('0x6'));var controller=require('./mailApplication.controller');router[_0x7708('0x7')](_0x7708('0x8'),auth[_0x7708('0x9')](),controller[_0x7708('0xa')]);router[_0x7708('0xb')](_0x7708('0x8'),auth[_0x7708('0x9')](),controller['update']);router['delete'](_0x7708('0x8'),auth[_0x7708('0x9')](),controller[_0x7708('0xc')]);module[_0x7708('0xd')]=router;
\ No newline at end of file
index 8414f29..3eee9f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43d8=['sequelize','exports','INTEGER','TEXT','STRING','*,*,*,*'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x43d8,0xc0));var _0x843d=function(_0x37eca7,_0x3e016e){_0x37eca7=_0x37eca7-0x0;var _0x222bce=_0x43d8[_0x37eca7];return _0x222bce;};'use strict';var Sequelize=require(_0x843d('0x0'));module[_0x843d('0x1')]={'priority':{'type':Sequelize[_0x843d('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x843d('0x3')]()},'description':{'type':Sequelize[_0x843d('0x4')]},'interval':{'type':Sequelize[_0x843d('0x4')],'defaultValue':_0x843d('0x5')}};
\ No newline at end of file
+var _0x5ff1=['INTEGER','noop','STRING','*,*,*,*','sequelize','exports'];(function(_0x4426d3,_0x1c0e52){var _0x48315d=function(_0x2fc2ec){while(--_0x2fc2ec){_0x4426d3['push'](_0x4426d3['shift']());}};_0x48315d(++_0x1c0e52);}(_0x5ff1,0xa0));var _0x15ff=function(_0xea8947,_0x1b573d){_0xea8947=_0xea8947-0x0;var _0x2455e9=_0x5ff1[_0xea8947];return _0x2455e9;};'use strict';var Sequelize=require(_0x15ff('0x0'));module[_0x15ff('0x1')]={'priority':{'type':Sequelize[_0x15ff('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x15ff('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x15ff('0x4')],'defaultValue':_0x15ff('0x5')}};
\ No newline at end of file
index 14f2c5b..60b5d42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['query','filters','intersection','model','attributes','fields','length','includeAll','include','merge','options','find','catch','update','body','destroy','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','show','params','keys','MailApplication','rawAttributes'];(function(_0xfa634c,_0x414e0e){var _0x73e478=function(_0xac2a51){while(--_0xac2a51){_0xfa634c['push'](_0xfa634c['shift']());}};_0x73e478(++_0x414e0e);}(_0xedd9,0xfc));var _0x9edd=function(_0x32f24a,_0x4fbe6a){_0x32f24a=_0x32f24a-0x0;var _0x1f3e8f=_0xedd9[_0x32f24a];return _0x1f3e8f;};'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={'raw':!![],'where':{'id':_0x52746a[_0x9edd('0x27')]['id']}},_0x2ae8dd={};_0x2ae8dd['model']=_[_0x9edd('0x28')](db[_0x9edd('0x29')][_0x9edd('0x2a')]);_0x2ae8dd[_0x9edd('0x2b')]=_[_0x9edd('0x28')](_0x52746a[_0x9edd('0x2b')]);_0x2ae8dd[_0x9edd('0x2c')]=_[_0x9edd('0x2d')](_0x2ae8dd[_0x9edd('0x2e')],_0x2ae8dd[_0x9edd('0x2b')]);_0x28cfae[_0x9edd('0x2f')]=_[_0x9edd('0x2d')](_0x2ae8dd[_0x9edd('0x2e')],qs[_0x9edd('0x30')](_0x52746a[_0x9edd('0x2b')]['fields']));_0x28cfae[_0x9edd('0x2f')]=_0x28cfae[_0x9edd('0x2f')][_0x9edd('0x31')]?_0x28cfae['attributes']:_0x2ae8dd[_0x9edd('0x2e')];if(_0x52746a[_0x9edd('0x2b')][_0x9edd('0x32')]){_0x28cfae[_0x9edd('0x33')]=[{'all':!![]}];}_0x28cfae=_[_0x9edd('0x34')]({},_0x28cfae,_0x52746a[_0x9edd('0x35')]);return db[_0x9edd('0x29')][_0x9edd('0x36')](_0x28cfae)[_0x9edd('0x21')](handleEntityNotFound(_0x238b22,null))[_0x9edd('0x21')](respondWithResult(_0x238b22,null))[_0x9edd('0x37')](handleError(_0x238b22,null));};exports[_0x9edd('0x38')]=function(_0x27eb7e,_0x14f780){if(_0x27eb7e['body']['id']){delete _0x27eb7e[_0x9edd('0x39')]['id'];}return db['MailApplication'][_0x9edd('0x36')]({'where':{'id':_0x27eb7e[_0x9edd('0x27')]['id']}})[_0x9edd('0x21')](handleEntityNotFound(_0x14f780,null))[_0x9edd('0x21')](saveUpdates(_0x27eb7e[_0x9edd('0x39')],null))['then'](respondWithResult(_0x14f780,null))[_0x9edd('0x37')](handleError(_0x14f780,null));};exports[_0x9edd('0x3a')]=function(_0x2b3469,_0x38e9be){return db[_0x9edd('0x29')][_0x9edd('0x36')]({'where':{'id':_0x2b3469[_0x9edd('0x27')]['id']}})[_0x9edd('0x21')](handleEntityNotFound(_0x38e9be,null))[_0x9edd('0x21')](removeEntity(_0x38e9be,null))[_0x9edd('0x37')](handleError(_0x38e9be,null));};
\ No newline at end of file
+var _0xbdb7=['update','error','stack','name','send','show','params','model','keys','MailApplication','query','filters','intersection','attributes','length','includeAll','merge','find','then','body','catch','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','fs-extra','lodash','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','save'];(function(_0x311f44,_0x1d7f5b){var _0x46f1e6=function(_0x27342a){while(--_0x27342a){_0x311f44['push'](_0x311f44['shift']());}};_0x46f1e6(++_0x1d7f5b);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x2373f5,_0x55fbde){_0x2373f5=_0x2373f5-0x0;var _0x31cf35=_0xbdb7[_0x2373f5];return _0x31cf35;};'use strict';var emlformat=require(_0x7bdb('0x0'));var rimraf=require(_0x7bdb('0x1'));var zipdir=require(_0x7bdb('0x2'));var jsonpatch=require(_0x7bdb('0x3'));var rp=require(_0x7bdb('0x4'));var moment=require(_0x7bdb('0x5'));var BPromise=require(_0x7bdb('0x6'));var Mustache=require(_0x7bdb('0x7'));var util=require(_0x7bdb('0x8'));var path=require('path');var sox=require(_0x7bdb('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7bdb('0xa'));var _=require(_0x7bdb('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7bdb('0xc'));var deskjs=require(_0x7bdb('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x7bdb('0xe'));var Redis=require(_0x7bdb('0xf'));var authService=require(_0x7bdb('0x10'));var qs=require(_0x7bdb('0x11'));var as=require(_0x7bdb('0x12'));var hardwareService=require(_0x7bdb('0x13'));var logger=require(_0x7bdb('0x14'))(_0x7bdb('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x7bdb('0x16'))['db'];function respondWithStatusCode(_0x25e3cb,_0x496613){_0x496613=_0x496613||0xcc;return function(_0x8d74ff){if(_0x8d74ff){return _0x25e3cb['sendStatus'](_0x496613);}return _0x25e3cb['status'](_0x496613)[_0x7bdb('0x17')]();};}function respondWithResult(_0x46dd4a,_0x4fd91a){_0x4fd91a=_0x4fd91a||0xc8;return function(_0x50eeca){if(_0x50eeca){return _0x46dd4a['status'](_0x4fd91a)[_0x7bdb('0x18')](_0x50eeca);}};}function respondWithFilteredResult(_0x195b2e,_0xe9919f){return function(_0x25d417){if(_0x25d417){var _0x31c909=typeof _0xe9919f[_0x7bdb('0x19')]===_0x7bdb('0x1a')&&typeof _0xe9919f[_0x7bdb('0x1b')]==='undefined';var _0x1c5750=_0x25d417[_0x7bdb('0x1c')];var _0x5723f4=_0x31c909?0x0:_0xe9919f[_0x7bdb('0x19')];var _0x4ffd4b=_0x31c909?_0x25d417[_0x7bdb('0x1c')]:_0xe9919f[_0x7bdb('0x19')]+_0xe9919f['limit'];var _0x3e5f8e;if(_0x4ffd4b>=_0x1c5750){_0x4ffd4b=_0x1c5750;_0x3e5f8e=0xc8;}else{_0x3e5f8e=0xce;}_0x195b2e[_0x7bdb('0x1d')](_0x3e5f8e);return _0x195b2e[_0x7bdb('0x1e')](_0x7bdb('0x1f'),_0x5723f4+'-'+_0x4ffd4b+'/'+_0x1c5750)[_0x7bdb('0x18')](_0x25d417);}return null;};}function patchUpdates(_0x5bfc35){return function(_0x49f353){try{jsonpatch[_0x7bdb('0x20')](_0x49f353,_0x5bfc35,!![]);}catch(_0xcb25f2){return BPromise['reject'](_0xcb25f2);}return _0x49f353[_0x7bdb('0x21')]();};}function saveUpdates(_0x118ea1,_0x346c72){return function(_0x3f53e7){if(_0x3f53e7){return _0x3f53e7[_0x7bdb('0x22')](_0x118ea1)['then'](function(_0x1d37ac){return _0x1d37ac;});}return null;};}function removeEntity(_0xdad53d,_0x40c447){return function(_0x3a456f){if(_0x3a456f){return _0x3a456f['destroy']()['then'](function(){_0xdad53d[_0x7bdb('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x47abaf,_0x4a9e02){return function(_0x2abef6){if(!_0x2abef6){_0x47abaf['sendStatus'](0x194);}return _0x2abef6;};}function handleError(_0x2b14bc,_0x72ba69){_0x72ba69=_0x72ba69||0x1f4;return function(_0x3ec129){logger[_0x7bdb('0x23')](_0x3ec129[_0x7bdb('0x24')]);if(_0x3ec129['name']){delete _0x3ec129[_0x7bdb('0x25')];}_0x2b14bc[_0x7bdb('0x1d')](_0x72ba69)[_0x7bdb('0x26')](_0x3ec129);};}exports[_0x7bdb('0x27')]=function(_0x371e8a,_0x2e8e65){var _0x1e9996={'raw':!![],'where':{'id':_0x371e8a[_0x7bdb('0x28')]['id']}},_0xd2d7be={};_0xd2d7be[_0x7bdb('0x29')]=_[_0x7bdb('0x2a')](db[_0x7bdb('0x2b')]['rawAttributes']);_0xd2d7be[_0x7bdb('0x2c')]=_[_0x7bdb('0x2a')](_0x371e8a[_0x7bdb('0x2c')]);_0xd2d7be[_0x7bdb('0x2d')]=_[_0x7bdb('0x2e')](_0xd2d7be['model'],_0xd2d7be[_0x7bdb('0x2c')]);_0x1e9996[_0x7bdb('0x2f')]=_[_0x7bdb('0x2e')](_0xd2d7be[_0x7bdb('0x29')],qs['fields'](_0x371e8a['query']['fields']));_0x1e9996[_0x7bdb('0x2f')]=_0x1e9996['attributes'][_0x7bdb('0x30')]?_0x1e9996['attributes']:_0xd2d7be[_0x7bdb('0x29')];if(_0x371e8a[_0x7bdb('0x2c')][_0x7bdb('0x31')]){_0x1e9996['include']=[{'all':!![]}];}_0x1e9996=_[_0x7bdb('0x32')]({},_0x1e9996,_0x371e8a['options']);return db['MailApplication'][_0x7bdb('0x33')](_0x1e9996)['then'](handleEntityNotFound(_0x2e8e65,null))[_0x7bdb('0x34')](respondWithResult(_0x2e8e65,null))['catch'](handleError(_0x2e8e65,null));};exports['update']=function(_0x206c26,_0x353b26){if(_0x206c26[_0x7bdb('0x35')]['id']){delete _0x206c26[_0x7bdb('0x35')]['id'];}return db[_0x7bdb('0x2b')][_0x7bdb('0x33')]({'where':{'id':_0x206c26['params']['id']}})[_0x7bdb('0x34')](handleEntityNotFound(_0x353b26,null))[_0x7bdb('0x34')](saveUpdates(_0x206c26[_0x7bdb('0x35')],null))[_0x7bdb('0x34')](respondWithResult(_0x353b26,null))[_0x7bdb('0x36')](handleError(_0x353b26,null));};exports[_0x7bdb('0x37')]=function(_0x228340,_0x2587af){return db[_0x7bdb('0x2b')]['find']({'where':{'id':_0x228340['params']['id']}})[_0x7bdb('0x34')](handleEntityNotFound(_0x2587af,null))[_0x7bdb('0x34')](removeEntity(_0x2587af,null))[_0x7bdb('0x36')](handleError(_0x2587af,null));};
\ No newline at end of file
index 9ecfcdc..7020b8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9e7=['util','../../config/logger','api','bluebird','path','../../config/environment','exports','define','MailApplication','mail_applications','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x5a45d1,_0xdab6){var _0x1d0493=function(_0x15b56b){while(--_0x15b56b){_0x5a45d1['push'](_0x5a45d1['shift']());}};_0x1d0493(++_0xdab6);}(_0xb9e7,0x15e));var _0x7b9e=function(_0x35bd6c,_0x585087){_0x35bd6c=_0x35bd6c-0x0;var _0x2f421d=_0xb9e7[_0x35bd6c];return _0x2f421d;};'use strict';var _=require(_0x7b9e('0x0'));var util=require(_0x7b9e('0x1'));var logger=require(_0x7b9e('0x2'))(_0x7b9e('0x3'));var moment=require('moment');var BPromise=require(_0x7b9e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7b9e('0x5'));var rimraf=require('rimraf');var config=require(_0x7b9e('0x6'));var attributes=require('./mailApplication.attributes');module[_0x7b9e('0x7')]=function(_0x203125,_0x244c58){return _0x203125[_0x7b9e('0x8')](_0x7b9e('0x9'),attributes,{'tableName':_0x7b9e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x7b9e('0xb'),'collate':_0x7b9e('0xc')});};
\ No newline at end of file
+var _0x3546=['define','mail_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','exports'];(function(_0x2b16b3,_0x1611a1){var _0x415632=function(_0x64039a){while(--_0x64039a){_0x2b16b3['push'](_0x2b16b3['shift']());}};_0x415632(++_0x1611a1);}(_0x3546,0x190));var _0x6354=function(_0x53afe9,_0x2c9f40){_0x53afe9=_0x53afe9-0x0;var _0x396396=_0x3546[_0x53afe9];return _0x396396;};'use strict';var _=require(_0x6354('0x0'));var util=require(_0x6354('0x1'));var logger=require(_0x6354('0x2'))(_0x6354('0x3'));var moment=require(_0x6354('0x4'));var BPromise=require(_0x6354('0x5'));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('./mailApplication.attributes');module[_0x6354('0x6')]=function(_0x36648b,_0xc4e2eb){return _0x36648b[_0x6354('0x7')]('MailApplication',attributes,{'tableName':_0x6354('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x6354('0x9'),'collate':_0x6354('0xa')});};
\ No newline at end of file
index e1c038c..9ca038b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe60=['catch','UpdateMailApplication','MailApplication','options','where','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','MailApplication,\x20%s,\x20%s','request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x4fd3c5,_0x3522ff){var _0x558dc2=function(_0x5382d6){while(--_0x5382d6){_0x4fd3c5['push'](_0x4fd3c5['shift']());}};_0x558dc2(++_0x3522ff);}(_0xfe60,0x128));var _0x0fe6=function(_0x38c507,_0x4a4fa1){_0x38c507=_0x38c507-0x0;var _0x1e8e00=_0xfe60[_0x38c507];return _0x1e8e00;};'use strict';var _=require(_0x0fe6('0x0'));var util=require(_0x0fe6('0x1'));var moment=require(_0x0fe6('0x2'));var BPromise=require(_0x0fe6('0x3'));var rs=require(_0x0fe6('0x4'));var fs=require('fs');var Redis=require(_0x0fe6('0x5'));var db=require(_0x0fe6('0x6'))['db'];var utils=require(_0x0fe6('0x7'));var logger=require(_0x0fe6('0x8'))('rpc');var config=require(_0x0fe6('0x9'));var jayson=require(_0x0fe6('0xa'));var client=jayson['client'][_0x0fe6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x538953,_0x159565,_0x48bf97){return new BPromise(function(_0x3a309f,_0x3f2bd2){return client['request'](_0x538953,_0x48bf97)[_0x0fe6('0xc')](function(_0x10a0d7){logger[_0x0fe6('0xd')](_0x0fe6('0xe'),_0x159565,_0x0fe6('0xf'));logger[_0x0fe6('0x10')](_0x0fe6('0x11'),_0x159565,_0x0fe6('0xf'),JSON[_0x0fe6('0x12')](_0x10a0d7));if(_0x10a0d7[_0x0fe6('0x13')]){if(_0x10a0d7[_0x0fe6('0x13')][_0x0fe6('0x14')]===0x1f4){logger[_0x0fe6('0x13')]('MailApplication,\x20%s,\x20%s',_0x159565,_0x10a0d7[_0x0fe6('0x13')]['message']);return _0x3f2bd2(_0x10a0d7['error'][_0x0fe6('0x15')]);}logger[_0x0fe6('0x13')]('MailApplication,\x20%s,\x20%s',_0x159565,_0x10a0d7[_0x0fe6('0x13')][_0x0fe6('0x15')]);return _0x3a309f(_0x10a0d7[_0x0fe6('0x13')][_0x0fe6('0x15')]);}else{logger['info'](_0x0fe6('0xe'),_0x159565,'request\x20sent');_0x3a309f(_0x10a0d7[_0x0fe6('0x16')][_0x0fe6('0x15')]);}})[_0x0fe6('0x17')](function(_0x4d60cf){logger[_0x0fe6('0x13')](_0x0fe6('0xe'),_0x159565,_0x4d60cf);_0x3f2bd2(_0x4d60cf);});});}exports[_0x0fe6('0x18')]=function(_0x2c34aa){var _0x99ebe=this;return new Promise(function(_0x5af049,_0x25a7b1){return db[_0x0fe6('0x19')]['update'](_0x2c34aa['body'],{'raw':_0x2c34aa[_0x0fe6('0x1a')]?_0x2c34aa[_0x0fe6('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2c34aa['options']?_0x2c34aa[_0x0fe6('0x1a')][_0x0fe6('0x1b')]||null:null,'attributes':_0x2c34aa['options']?_0x2c34aa[_0x0fe6('0x1a')]['attributes']||null:null,'limit':_0x2c34aa[_0x0fe6('0x1a')]?_0x2c34aa[_0x0fe6('0x1a')][_0x0fe6('0x1c')]||null:null})[_0x0fe6('0xc')](function(_0x11a71b){logger[_0x0fe6('0xd')](_0x0fe6('0x18'),_0x2c34aa);logger[_0x0fe6('0x10')]('UpdateMailApplication',_0x2c34aa,JSON['stringify'](_0x11a71b));_0x5af049(_0x11a71b);})['catch'](function(_0x340016){logger[_0x0fe6('0x13')](_0x0fe6('0x18'),_0x340016[_0x0fe6('0x15')],_0x2c34aa);_0x25a7b1(_0x99ebe['error'](0x1f4,_0x340016[_0x0fe6('0x15')]));});});};
\ No newline at end of file
+var _0x7b35=['request\x20sent','MailApplication,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','UpdateMailApplication','update','options','attributes','limit','debug','stringify','lodash','util','bluebird','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','MailApplication,\x20%s,\x20%s'];(function(_0x14a6fb,_0x481cfd){var _0x46acf7=function(_0x53c710){while(--_0x53c710){_0x14a6fb['push'](_0x14a6fb['shift']());}};_0x46acf7(++_0x481cfd);}(_0x7b35,0x16d));var _0x57b3=function(_0x426dcd,_0x2846bf){_0x426dcd=_0x426dcd-0x0;var _0x27c01c=_0x7b35[_0x426dcd];return _0x27c01c;};'use strict';var _=require(_0x57b3('0x0'));var util=require(_0x57b3('0x1'));var moment=require('moment');var BPromise=require(_0x57b3('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x57b3('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x57b3('0x4'));var logger=require(_0x57b3('0x5'))(_0x57b3('0x6'));var config=require('../../config/environment');var jayson=require(_0x57b3('0x7'));var client=jayson[_0x57b3('0x8')][_0x57b3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x436925,_0x4b4bdb,_0x37c20c){return new BPromise(function(_0x54b2d7,_0x4c60d2){return client[_0x57b3('0xa')](_0x436925,_0x37c20c)['then'](function(_0x4d5d44){logger[_0x57b3('0xb')](_0x57b3('0xc'),_0x4b4bdb,_0x57b3('0xd'));logger['debug'](_0x57b3('0xe'),_0x4b4bdb,'request\x20sent',JSON['stringify'](_0x4d5d44));if(_0x4d5d44['error']){if(_0x4d5d44[_0x57b3('0xf')][_0x57b3('0x10')]===0x1f4){logger[_0x57b3('0xf')](_0x57b3('0xc'),_0x4b4bdb,_0x4d5d44[_0x57b3('0xf')][_0x57b3('0x11')]);return _0x4c60d2(_0x4d5d44[_0x57b3('0xf')]['message']);}logger[_0x57b3('0xf')](_0x57b3('0xc'),_0x4b4bdb,_0x4d5d44[_0x57b3('0xf')]['message']);return _0x54b2d7(_0x4d5d44[_0x57b3('0xf')][_0x57b3('0x11')]);}else{logger[_0x57b3('0xb')](_0x57b3('0xc'),_0x4b4bdb,'request\x20sent');_0x54b2d7(_0x4d5d44[_0x57b3('0x12')][_0x57b3('0x11')]);}})[_0x57b3('0x13')](function(_0x12b10a){logger[_0x57b3('0xf')](_0x57b3('0xc'),_0x4b4bdb,_0x12b10a);_0x4c60d2(_0x12b10a);});});}exports[_0x57b3('0x14')]=function(_0x1a3c51){var _0x398c20=this;return new Promise(function(_0x19dd0a,_0x38ec1d){return db['MailApplication'][_0x57b3('0x15')](_0x1a3c51['body'],{'raw':_0x1a3c51[_0x57b3('0x16')]?_0x1a3c51[_0x57b3('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1a3c51[_0x57b3('0x16')]?_0x1a3c51[_0x57b3('0x16')]['where']||null:null,'attributes':_0x1a3c51[_0x57b3('0x16')]?_0x1a3c51[_0x57b3('0x16')][_0x57b3('0x17')]||null:null,'limit':_0x1a3c51[_0x57b3('0x16')]?_0x1a3c51[_0x57b3('0x16')][_0x57b3('0x18')]||null:null})['then'](function(_0x3922ab){logger['info'](_0x57b3('0x14'),_0x1a3c51);logger[_0x57b3('0x19')](_0x57b3('0x14'),_0x1a3c51,JSON[_0x57b3('0x1a')](_0x3922ab));_0x19dd0a(_0x3922ab);})['catch'](function(_0x45ef5a){logger[_0x57b3('0xf')](_0x57b3('0x14'),_0x45ef5a['message'],_0x1a3c51);_0x38ec1d(_0x398c20[_0x57b3('0xf')](0x1f4,_0x45ef5a[_0x57b3('0x11')]));});});};
\ No newline at end of file
index b3b3eda..5d1b863 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd036=['mailinteraction:update','update','delete','mailinteraction:destroy','destroy','removeTags','exports','express','../../components/interaction/service','./mailInteraction.controller','get','isAuthenticated','describe','/:id','show','/:id/messages','getMessages','/:id/download','post','addMessage','/:id/tags','tracked','mail','mailinteraction:addtags','addTags','put'];(function(_0x34500c,_0x4770a4){var _0x3cd6e5=function(_0x375cf5){while(--_0x375cf5){_0x34500c['push'](_0x34500c['shift']());}};_0x3cd6e5(++_0x4770a4);}(_0xd036,0x173));var _0x6d03=function(_0x5cfb92,_0x5797e6){_0x5cfb92=_0x5cfb92-0x0;var _0x1cd7c2=_0xd036[_0x5cfb92];return _0x1cd7c2;};'use strict';var express=require(_0x6d03('0x0'));var router=express['Router']();var auth=require('../../components/auth/service');var interaction=require(_0x6d03('0x1'));var controller=require(_0x6d03('0x2'));router[_0x6d03('0x3')]('/',auth['isAuthenticated'](),controller['index']);router[_0x6d03('0x3')]('/describe',auth[_0x6d03('0x4')](),controller[_0x6d03('0x5')]);router['get'](_0x6d03('0x6'),auth[_0x6d03('0x4')](),controller[_0x6d03('0x7')]);router[_0x6d03('0x3')](_0x6d03('0x8'),auth[_0x6d03('0x4')](),controller[_0x6d03('0x9')]);router[_0x6d03('0x3')](_0x6d03('0xa'),auth['isAuthenticated'](),controller['download']);router[_0x6d03('0xb')]('/',auth[_0x6d03('0x4')](),controller['create']);router[_0x6d03('0xb')]('/:id/messages',auth[_0x6d03('0x4')](),controller[_0x6d03('0xc')]);router[_0x6d03('0xb')](_0x6d03('0xd'),auth[_0x6d03('0x4')](),interaction[_0x6d03('0xe')](_0x6d03('0xf'),_0x6d03('0x10')),controller[_0x6d03('0x11')]);router[_0x6d03('0x12')]('/:id',auth[_0x6d03('0x4')](),interaction[_0x6d03('0xe')](_0x6d03('0xf'),_0x6d03('0x13')),controller[_0x6d03('0x14')]);router[_0x6d03('0x15')]('/:id',auth[_0x6d03('0x4')](),interaction['tracked']('mail',_0x6d03('0x16')),controller[_0x6d03('0x17')]);router['delete']('/:id/tags',auth[_0x6d03('0x4')](),controller[_0x6d03('0x18')]);module[_0x6d03('0x19')]=router;
\ No newline at end of file
+var _0x4a5e=['index','describe','/:id','show','/:id/download','download','post','create','tracked','mailinteraction:addtags','mail','mailinteraction:update','update','mailinteraction:destroy','destroy','delete','removeTags','exports','express','Router','../../components/interaction/service','get','isAuthenticated'];(function(_0x1e8e21,_0x315b01){var _0x363f16=function(_0x3b0409){while(--_0x3b0409){_0x1e8e21['push'](_0x1e8e21['shift']());}};_0x363f16(++_0x315b01);}(_0x4a5e,0x126));var _0xe4a5=function(_0x599570,_0x460668){_0x599570=_0x599570-0x0;var _0x3d743f=_0x4a5e[_0x599570];return _0x3d743f;};'use strict';var express=require(_0xe4a5('0x0'));var router=express[_0xe4a5('0x1')]();var auth=require('../../components/auth/service');var interaction=require(_0xe4a5('0x2'));var controller=require('./mailInteraction.controller');router[_0xe4a5('0x3')]('/',auth[_0xe4a5('0x4')](),controller[_0xe4a5('0x5')]);router[_0xe4a5('0x3')]('/describe',auth[_0xe4a5('0x4')](),controller[_0xe4a5('0x6')]);router['get'](_0xe4a5('0x7'),auth[_0xe4a5('0x4')](),controller[_0xe4a5('0x8')]);router[_0xe4a5('0x3')]('/:id/messages',auth[_0xe4a5('0x4')](),controller['getMessages']);router['get'](_0xe4a5('0x9'),auth[_0xe4a5('0x4')](),controller[_0xe4a5('0xa')]);router[_0xe4a5('0xb')]('/',auth['isAuthenticated'](),controller[_0xe4a5('0xc')]);router['post']('/:id/messages',auth['isAuthenticated'](),controller['addMessage']);router['post']('/:id/tags',auth[_0xe4a5('0x4')](),interaction[_0xe4a5('0xd')]('mail',_0xe4a5('0xe')),controller['addTags']);router['put'](_0xe4a5('0x7'),auth[_0xe4a5('0x4')](),interaction[_0xe4a5('0xd')](_0xe4a5('0xf'),_0xe4a5('0x10')),controller[_0xe4a5('0x11')]);router['delete'](_0xe4a5('0x7'),auth[_0xe4a5('0x4')](),interaction[_0xe4a5('0xd')](_0xe4a5('0xf'),_0xe4a5('0x12')),controller[_0xe4a5('0x13')]);router[_0xe4a5('0x14')]('/:id/tags',auth['isAuthenticated'](),controller[_0xe4a5('0x15')]);module[_0xe4a5('0x16')]=router;
\ No newline at end of file
index e454308..25f216d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1be1=['long','TEXT','DATE','ENUM','out','sequelize','iconv','exports','BOOLEAN','STRING'];(function(_0x280f70,_0x3b7b1a){var _0x223686=function(_0xe4d582){while(--_0xe4d582){_0x280f70['push'](_0x280f70['shift']());}};_0x223686(++_0x3b7b1a);}(_0x1be1,0x19f));var _0x11be=function(_0x1d0b0a,_0x5eacbd){_0x1d0b0a=_0x1d0b0a-0x0;var _0x39c24f=_0x1be1[_0x1d0b0a];return _0x39c24f;};'use strict';var Sequelize=require(_0x11be('0x0'));var iconv=require(_0x11be('0x1'));module[_0x11be('0x2')]={'closed':{'type':Sequelize[_0x11be('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x11be('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize[_0x11be('0x4')](0x1fe)},'to':{'type':Sequelize[_0x11be('0x4')]},'cc':{'type':Sequelize['TEXT'](_0x11be('0x5'))},'subject':{'type':Sequelize[_0x11be('0x6')]()},'attach':{'type':Sequelize[_0x11be('0x3')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x11be('0x7')]},'substatus':{'type':Sequelize[_0x11be('0x4')](0x3c)},'substatusAt':{'type':Sequelize[_0x11be('0x7')]},'firstMsgDirection':{'type':Sequelize[_0x11be('0x8')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x11be('0x7')]},'lastMsgDirection':{'type':Sequelize[_0x11be('0x8')]('in',_0x11be('0x9')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x11be('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x7548=['TEXT','ENUM','out','BOOLEAN','DATE','STRING','long'];(function(_0x20152e,_0x36dd3f){var _0xe9952e=function(_0x2c4995){while(--_0x2c4995){_0x20152e['push'](_0x20152e['shift']());}};_0xe9952e(++_0x36dd3f);}(_0x7548,0x1d8));var _0x8754=function(_0x25a4cb,_0x2460b9){_0x25a4cb=_0x25a4cb-0x0;var _0x9507bb=_0x7548[_0x25a4cb];return _0x9507bb;};'use strict';var Sequelize=require('sequelize');var iconv=require('iconv');module['exports']={'closed':{'type':Sequelize[_0x8754('0x0')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x8754('0x1')]},'disposition':{'type':Sequelize[_0x8754('0x2')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x8754('0x2')]},'inReplyTo':{'type':Sequelize[_0x8754('0x2')](0x1fe)},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize['TEXT'](_0x8754('0x3'))},'subject':{'type':Sequelize[_0x8754('0x4')]()},'attach':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x8754('0x1')]},'substatus':{'type':Sequelize[_0x8754('0x2')](0x3c)},'substatusAt':{'type':Sequelize[_0x8754('0x1')]},'firstMsgDirection':{'type':Sequelize[_0x8754('0x5')]('in',_0x8754('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x8754('0x5')]('in',_0x8754('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 2bf3768..16af46a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa681=['getFullTextValue','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','i.id','QueryTypes','SELECT','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','resolve','i.MailAccountId\x20IS\x20NOT\x20NULL','user','getMailAccounts','i.MailAccountId\x20IS\x20NULL','role','agent','sequelize','toString','keyBy','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','a.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.createdAt','i.updatedAt','i.closed','i.closedAt','i.lastMsgDirection','i.subject','i.disposition','i.secondDisposition','i.thirdDisposition','i.substatus','i.to','i.ContactId','i.MailAccountId','i.UserId','c.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','Owner.internal','ui.MailInteractionId\x20IN\x20?','groupBy','MailInteractionId','enableEmailPreview','all','rows','show','params','includeAll','options','create','body','describe','addMessage','MailMessage','ids','omit','getMessages','merge','format','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss','true','addTags','setTags','spread','mailInteractionTags:save','removeTags','download','join','root','server','tmp','files','attachments','transcript-%d-%s.zip','Attachment','Attachments','Messages','bcc','get','mkdirSync','each','subject','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','basename','existsSync','readFileSync','build','writeFileSync','message%d.eml','eml-format','zip-dir','bluebird','path','lodash','squel','juice','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../mysqldb','redis','defaults','localhost','./mailInteraction.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','update','then','destroy','error','stack','name','send','Users','map','TagIds','Tags','split','forEach','push','findOne','out','-id','plainBody','lastMsgText','catch','waiting','answered','unmanaged','total','closed','UserId','talking','index','MailInteraction','rawAttributes','type','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','select','field','color','u.id','u.fullname','left_join','u.id\x20=\x20ui.UserId','from','mail_interactions','cm_contacts','users','o.id\x20=\x20i.UserId','mail_accounts','a.id\x20=\x20i.MailAccountId','mail_messages','me.MailInteractionId\x20=\x20i.id','mail_interaction_has_tags','it.MailInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','length','unreadMessages','value','having','`\x20=\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','find','some','compact','isEmpty','MailAccountId','i.MailAccountId\x20IN\x20?','createdAt','parse','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','isEmail'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0xa681,0x6a));var _0x1a68=function(_0xe8bdc2,_0x3bc6a3){_0xe8bdc2=_0xe8bdc2-0x0;var _0x1a2580=_0xa681[_0xe8bdc2];return _0x1a2580;};'use strict';var emlformat=require(_0x1a68('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1a68('0x1'));var moment=require('moment');var BPromise=require(_0x1a68('0x2'));var util=require('util');var path=require(_0x1a68('0x3'));var fs=require('fs');var _=require(_0x1a68('0x4'));var squel=require(_0x1a68('0x5'));var juice=require(_0x1a68('0x6'));var Redis=require(_0x1a68('0x7'));var qs=require(_0x1a68('0x8'));var as=require(_0x1a68('0x9'));var logger=require('../../config/logger')(_0x1a68('0xa'));var config=require(_0x1a68('0xb'));var db=require(_0x1a68('0xc'))['db'];var htmlEntities=require('html-entities');config[_0x1a68('0xd')]=_[_0x1a68('0xe')](config[_0x1a68('0xd')],{'host':_0x1a68('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x1a68('0x10'))[_0x1a68('0x11')](socket);function respondWithStatusCode(_0x435664,_0x433a1b){_0x433a1b=_0x433a1b||0xcc;return function(_0x50e899){if(_0x50e899){return _0x435664[_0x1a68('0x12')](_0x433a1b);}return _0x435664['status'](_0x433a1b)[_0x1a68('0x13')]();};}function respondWithResult(_0x1f4e21,_0x206b3a){_0x206b3a=_0x206b3a||0xc8;return function(_0x2c432b){if(_0x2c432b){return _0x1f4e21[_0x1a68('0x14')](_0x206b3a)[_0x1a68('0x15')](_0x2c432b);}};}function respondWithFilteredResult(_0x57572e,_0x4d5e48){return function(_0x1835ee){if(_0x1835ee){var _0x35e41f=typeof _0x4d5e48[_0x1a68('0x16')]===_0x1a68('0x17')&&typeof _0x4d5e48[_0x1a68('0x18')]===_0x1a68('0x17');var _0x33a3fa=_0x1835ee[_0x1a68('0x19')];var _0x2bf6b2=_0x35e41f?0x0:_0x4d5e48[_0x1a68('0x16')];var _0x501042=_0x35e41f?_0x1835ee['count']:_0x4d5e48[_0x1a68('0x16')]+_0x4d5e48[_0x1a68('0x18')];var _0x3497c3;if(_0x501042>=_0x33a3fa){_0x501042=_0x33a3fa;_0x3497c3=0xc8;}else{_0x3497c3=0xce;}_0x57572e[_0x1a68('0x14')](_0x3497c3);return _0x57572e['set']('Content-Range',_0x2bf6b2+'-'+_0x501042+'/'+_0x33a3fa)[_0x1a68('0x15')](_0x1835ee);}return null;};}function saveUpdates(_0x60b3e3){return function(_0x20013e){if(_0x20013e){return _0x20013e[_0x1a68('0x1a')](_0x60b3e3)[_0x1a68('0x1b')](function(_0x2f4339){return _0x2f4339;});}return null;};}function removeEntity(_0x31dd1a){return function(_0x4dd80b){if(_0x4dd80b){return _0x4dd80b[_0x1a68('0x1c')]()[_0x1a68('0x1b')](function(){_0x31dd1a['status'](0xcc)[_0x1a68('0x13')]();});}};}function handleEntityNotFound(_0x39bfad){return function(_0x261324){if(!_0x261324){_0x39bfad['sendStatus'](0x194);}return _0x261324;};}function handleError(_0x53d5c9,_0x49b911){_0x49b911=_0x49b911||0x1f4;return function(_0x5966da){logger[_0x1a68('0x1d')](_0x5966da[_0x1a68('0x1e')]);if(_0x5966da[_0x1a68('0x1f')]){delete _0x5966da['name'];}_0x53d5c9[_0x1a68('0x14')](_0x49b911)[_0x1a68('0x20')](_0x5966da);};}function getInteractionUsers(_0x35fb09,_0x9e50a9){return new BPromise(function(_0x39d93a,_0x519ee9){try{if(_0x9e50a9[_0x35fb09['id']]){_0x35fb09[_0x1a68('0x21')]=_[_0x1a68('0x22')](_0x9e50a9[_0x35fb09['id']],function(_0x4e8e15){return{'id':_0x4e8e15['id'],'fullname':_0x4e8e15['fullname']};});}}catch(_0x11f402){_0x519ee9(_0x11f402);}_0x39d93a(_0x35fb09);});}function getInteractionTags(_0x491fd4,_0x1b9e2f){return new BPromise(function(_0x433ab6,_0xc316f6){try{if(_0x491fd4[_0x1a68('0x23')]){_0x491fd4[_0x1a68('0x24')]=[];_0x491fd4[_0x1a68('0x23')][_0x1a68('0x25')](',')[_0x1a68('0x26')](function(_0x445c82){_0x491fd4[_0x1a68('0x24')][_0x1a68('0x27')](_0x1b9e2f[_0x445c82]);});}delete _0x491fd4[_0x1a68('0x23')];}catch(_0x2dbeac){_0xc316f6(_0x2dbeac);}_0x433ab6(_0x491fd4);});}function getLastMessageText(_0x2ecb62){return new BPromise(function(_0x4dddec,_0x18d751){return db['MailMessage'][_0x1a68('0x28')]({'where':{'$and':[{'MailInteractionId':_0x2ecb62['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x1a68('0x29')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':_0x1a68('0x2a'),'raw':!![]})[_0x1a68('0x1b')](function(_0x293009){if(_0x293009&&_0x293009[_0x1a68('0x2b')]){_0x2ecb62[_0x1a68('0x2c')]=_['trimStart'](_0x293009[_0x1a68('0x2b')]);}_0x4dddec(_0x2ecb62);})[_0x1a68('0x2d')](function(_0x1b4a73){_0x18d751(_0x1b4a73);});});}function updateMailInteraction(_0x25113d,_0x2a866b,_0x162527,_0x17f6f5){return new BPromise(function(_0x2d952d,_0x333b57){return getInteractionUsers(_0x25113d,_0x162527)[_0x1a68('0x1b')](function(_0x50e19f){return getInteractionTags(_0x50e19f,_0x2a866b);})[_0x1a68('0x1b')](function(_0x4329ae){return getStateInteraction(_0x4329ae);})[_0x1a68('0x1b')](function(_0x1b8422){if(_0x17f6f5){_0x2d952d(getLastMessageText(_0x1b8422));}else{_0x2d952d(_0x1b8422);}})[_0x1a68('0x2d')](function(_0x2bbdde){_0x333b57(_0x2bbdde);});});}function getStateInteraction(_0x21aff1){return new BPromise(function(_0x1bb893){_0x21aff1[_0x1a68('0x2e')]=0x0;_0x21aff1['talking']=0x0;_0x21aff1[_0x1a68('0x2f')]=0x0;_0x21aff1[_0x1a68('0x30')]=0x0;_0x21aff1[_0x1a68('0x31')]=0x0;if(!_0x21aff1[_0x1a68('0x32')]&&!_0x21aff1[_0x1a68('0x33')]){_0x21aff1[_0x1a68('0x2e')]+=0x1;}if(!_0x21aff1['closed']&&_0x21aff1[_0x1a68('0x33')]){_0x21aff1['talking']+=0x1;if(_0x21aff1['waiting']){_0x21aff1[_0x1a68('0x2e')]-=0x1;}}if(_0x21aff1[_0x1a68('0x32')]&&_0x21aff1['UserId']){_0x21aff1[_0x1a68('0x2f')]+=0x1;if(_0x21aff1['talking']){_0x21aff1[_0x1a68('0x34')]-=0x1;}}if(_0x21aff1[_0x1a68('0x32')]&&!_0x21aff1[_0x1a68('0x33')]){_0x21aff1[_0x1a68('0x30')]+=0x1;if(_0x21aff1['waiting']){_0x21aff1['waiting']-=0x1;}}_0x21aff1[_0x1a68('0x31')]+=0x1;_0x1bb893(_0x21aff1);});}exports[_0x1a68('0x35')]=function(_0x54579c,_0x319c17){var _0x27d7a5={},_0x6a7ca={},_0x4e8a02={'count':0x0,'rows':[]};var _0x24293d=_[_0x1a68('0x22')](db[_0x1a68('0x36')][_0x1a68('0x37')],function(_0xd1eef6){return{'name':_0xd1eef6['fieldName'],'type':_0xd1eef6[_0x1a68('0x38')]['key']};});_0x6a7ca[_0x1a68('0x39')]=_[_0x1a68('0x22')](_0x24293d,'name');_0x6a7ca['query']=_[_0x1a68('0x3a')](_0x54579c[_0x1a68('0x3b')]);_0x6a7ca[_0x1a68('0x3c')]=_['intersection'](_0x6a7ca[_0x1a68('0x39')],_0x6a7ca['query']);_0x27d7a5['attributes']=_[_0x1a68('0x3d')](_0x6a7ca[_0x1a68('0x39')],qs[_0x1a68('0x3e')](_0x54579c[_0x1a68('0x3b')]['fields']));_0x27d7a5[_0x1a68('0x3f')]=_0x27d7a5['attributes']['length']?_0x27d7a5[_0x1a68('0x3f')]:_0x6a7ca[_0x1a68('0x39')];if(!_0x54579c[_0x1a68('0x3b')][_0x1a68('0x40')](_0x1a68('0x41'))){_0x27d7a5[_0x1a68('0x18')]=qs[_0x1a68('0x18')](_0x54579c['query'][_0x1a68('0x18')]);_0x27d7a5['offset']=qs[_0x1a68('0x16')](_0x54579c[_0x1a68('0x3b')][_0x1a68('0x16')]);}_0x27d7a5[_0x1a68('0x42')]=qs['sort'](_0x54579c[_0x1a68('0x3b')][_0x1a68('0x43')]);_0x27d7a5[_0x1a68('0x44')]=qs['filters'](_[_0x1a68('0x45')](_0x54579c[_0x1a68('0x3b')],_0x6a7ca[_0x1a68('0x3c')]),_0x24293d);var _0x48a96c=[];var _0x53718a=squel[_0x1a68('0x46')]()[_0x1a68('0x47')]('id')[_0x1a68('0x47')](_0x1a68('0x1f'))[_0x1a68('0x47')](_0x1a68('0x48'))['from']('tools_tags');var _0x58267a=squel['select']()[_0x1a68('0x47')](_0x1a68('0x49'))[_0x1a68('0x47')](_0x1a68('0x4a'))['field']('ui.MailInteractionId')['from']('user_has_mail_interactions','ui')[_0x1a68('0x4b')]('users','u',_0x1a68('0x4c'));var _0x1b9ed3=squel[_0x1a68('0x46')]()[_0x1a68('0x4d')](_0x1a68('0x4e'),'i')['left_join'](_0x1a68('0x4f'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x1a68('0x4b')](_0x1a68('0x50'),'o',_0x1a68('0x51'))[_0x1a68('0x4b')](_0x1a68('0x52'),'a',_0x1a68('0x53'))[_0x1a68('0x4b')](_0x1a68('0x54'),'me',_0x1a68('0x55'))['left_join'](_0x1a68('0x56'),'it',_0x1a68('0x57'))[_0x1a68('0x4b')]('tools_tags','t',_0x1a68('0x58'));var _0x30bdf2=squel[_0x1a68('0x59')]();var _0x4c41ef=[];var _0x21e8e1=squel[_0x1a68('0x59')]();var _0x7eab3e;if(_0x54579c[_0x1a68('0x3b')][_0x1a68('0x5a')]){_0x7eab3e=as[_0x1a68('0x5b')](_0x54579c[_0x1a68('0x3b')]['search']);var _0xe1ff4c=_0x7eab3e[_0x1a68('0x5c')];for(var _0x2119e1=0x0;_0x2119e1<_0x7eab3e[_0x1a68('0x5d')][_0x1a68('0x5e')];_0x2119e1++){var _0x51055d=_0x7eab3e[_0x1a68('0x5d')][_0x2119e1];var _0x23c965='i';var _0x253234=_['find'](_0x24293d,[_0x1a68('0x1f'),_0x51055d[_0x1a68('0x47')]]);if(!_0x253234){switch(_0x51055d[_0x1a68('0x47')]){case _0x1a68('0x5f'):if(_0x51055d[_0x1a68('0x60')]==0x1){_0x1b9ed3[_0x1a68('0x61')]('`'+_0x51055d[_0x1a68('0x47')]+_0x1a68('0x62'));}else{_0x1b9ed3[_0x1a68('0x61')]('`'+_0x51055d[_0x1a68('0x47')]+'`\x20>\x200');}break;case _0x1a68('0x63'):if(_0x51055d[_0x1a68('0x64')]===_0x1a68('0x65')){if(_0x51055d[_0x1a68('0x60')]['split']('\x20')[_0x1a68('0x5e')]>0x1){_0x30bdf2[_0xe1ff4c](_0x1a68('0x66'),qs['getFullTextValue'](_0x51055d[_0x1a68('0x60')]),null);}else{var _0x50bea3='%'+_0x51055d[_0x1a68('0x60')]+'%';_0x30bdf2[_0xe1ff4c]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x50bea3,_0x50bea3,_0x50bea3);}}else{_0x253234=_['find'](_0x24293d,[_0x1a68('0x1f'),_0x1a68('0x67')]);_0x51055d[_0x1a68('0x47')]='ContactId';_0x220b9b=as[_0x1a68('0x68')](_0x23c965,_0x253234['type'],_0x51055d);_0x30bdf2[_0xe1ff4c](_0x220b9b[_0x1a68('0x69')],_0x220b9b[_0x1a68('0x60')][_0x1a68('0x6a')],_0x220b9b[_0x1a68('0x60')][_0x1a68('0x13')]);}break;case _0x1a68('0x6b'):var _0x425e56=_0x51055d['value'][_0x1a68('0x25')](',')[_0x1a68('0x22')](function(_0x1253e3){return Number(_0x1253e3);});_0x425e56[_0x1a68('0x26')](function(_0x20b292){_0x21e8e1['or'](_0x1a68('0x6c'),'%,'+_0x20b292+',%');});_0x4c41ef=_[_0x1a68('0x6d')](_0x4c41ef,_0x425e56);break;case _0x1a68('0x6e'):if(_0x51055d['operator']==='$substring'){_0x30bdf2[_0xe1ff4c](_0x1a68('0x6f'),'%'+_0x51055d[_0x1a68('0x60')]+'%',null);}else{_0x253234=_[_0x1a68('0x70')](_0x24293d,[_0x1a68('0x1f'),_0x1a68('0x33')]);_0x51055d['field']=_0x1a68('0x33');_0x220b9b=as[_0x1a68('0x68')](_0x23c965,_0x253234['type'],_0x51055d);_0x30bdf2[_0xe1ff4c](_0x220b9b['text'],_0x220b9b[_0x1a68('0x60')][_0x1a68('0x6a')],_0x220b9b['value'][_0x1a68('0x13')]);}break;case'plainBody':_0x220b9b=as[_0x1a68('0x68')]('me',null,_0x51055d);_0x30bdf2[_0xe1ff4c](_0x220b9b['text'],_0x220b9b['value'][_0x1a68('0x6a')],_0x220b9b[_0x1a68('0x60')][_0x1a68('0x13')]);break;}}else{var _0x220b9b=as[_0x1a68('0x68')](_0x23c965,_0x253234[_0x1a68('0x38')],_0x51055d);_0x30bdf2[_0xe1ff4c](_0x220b9b[_0x1a68('0x69')],_0x220b9b[_0x1a68('0x60')][_0x1a68('0x6a')],_0x220b9b['value'][_0x1a68('0x13')]);}}}else{var _0x1e8922=_(_0x54579c[_0x1a68('0x3b')])[_0x1a68('0x3a')]()[_0x1a68('0x22')](function(_0x4316aa){return _[_0x1a68('0x71')](_0x24293d,[_0x1a68('0x1f'),_0x4316aa])?_0x4316aa:undefined;})[_0x1a68('0x72')]()[_0x1a68('0x60')]();if(!_[_0x1a68('0x73')](_0x1e8922)){_0x1e8922[_0x1a68('0x26')](function(_0xd5b064){if(_0xd5b064===_0x1a68('0x74')){_0x1b9ed3['where'](_0x1a68('0x75'),[]['concat'](_0x54579c[_0x1a68('0x3b')][_0xd5b064]));}else if(_0xd5b064===_0x1a68('0x76')){var _0x1b4d9a=JSON['parse'](_0x54579c[_0x1a68('0x3b')][_0xd5b064])['$gte'];var _0x421f83=JSON[_0x1a68('0x77')](_0x54579c[_0x1a68('0x3b')][_0xd5b064])['$lte'];_0x1b9ed3[_0x1a68('0x44')](_0x1a68('0x78'),_0x1b4d9a,_0x421f83);}else{if(_0x54579c[_0x1a68('0x3b')][_0xd5b064]===_0x1a68('0x79')){_0x1b9ed3[_0x1a68('0x44')]('i.'+_0xd5b064+_0x1a68('0x7a'));}else{_0x1b9ed3['where']('i.'+_0xd5b064+_0x1a68('0x7b'),_0x54579c['query'][_0xd5b064]);}}});}if(_0x54579c[_0x1a68('0x3b')][_0x1a68('0x7c')]){if(_0x54579c[_0x1a68('0x3b')][_0x1a68('0x7c')]==0x1){_0x1b9ed3['having'](_0x1a68('0x7d'));}else{_0x1b9ed3[_0x1a68('0x61')](_0x1a68('0x7e'));}}if(_0x54579c['query'][_0x1a68('0x7f')]){_0x4c41ef=_['isArray'](_0x54579c[_0x1a68('0x3b')][_0x1a68('0x7f')])?_0x54579c['query'][_0x1a68('0x7f')]:new Array(_0x54579c['query']['tag']);_0x4c41ef[_0x1a68('0x26')](function(_0xf73b91){_0x21e8e1['or'](_0x1a68('0x6c'),'%,'+_0xf73b91+',%');});}if(_0x54579c[_0x1a68('0x3b')][_0x1a68('0x80')]){var _0xe9714b=_0x54579c['query']['filter'][_0x1a68('0x81')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x1a68('0x82')](_0xe9714b)){_0x30bdf2['or'](_0x1a68('0x83'),_0xe9714b+'%');}else if(qs[_0x1a68('0x84')](_0xe9714b)){_0x30bdf2['or']('c.email\x20LIKE\x20?',_0xe9714b+'%');}else{_0x30bdf2['or']('MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x1a68('0x85')](_0xe9714b))['or'](_0x1a68('0x86'),qs['getFullTextValue'](_0xe9714b));}}}_0x1b9ed3[_0x1a68('0x44')](_0x30bdf2);_0x1b9ed3['group'](_0x1a68('0x87'));var _0xaaa514={'type':db['Sequelize'][_0x1a68('0x88')][_0x1a68('0x89')],'raw':!![]};var _0x5c8dc2=_0x1b9ed3['clone']();_0x5c8dc2[_0x1a68('0x47')](_0x1a68('0x87'));_0x5c8dc2['field'](_0x1a68('0x8a'),_0x1a68('0x5f'));if(_0x27d7a5[_0x1a68('0x42')]){_0x27d7a5['order'][_0x1a68('0x26')](function(_0x4b3bfb){var _0x49fcc0=_0x4b3bfb[0x0]===_0x1a68('0x8b')?_0x4b3bfb[0x0]:'i.'+_0x4b3bfb[0x0];_0x1b9ed3['order'](_0x49fcc0,_0x4b3bfb[0x1]===_0x1a68('0x8c')?![]:!![]);});}if(!_[_0x1a68('0x73')](_0x4c41ef)){_0x1b9ed3[_0x1a68('0x61')](_0x21e8e1);_0x5c8dc2['where']('t.id\x20IN\x20?',_0x4c41ef);}BPromise[_0x1a68('0x8d')]()[_0x1a68('0x1b')](function(){if(!_0x7eab3e){if(_0x54579c['query'][_0x1a68('0x74')])return;_0x5c8dc2[_0x1a68('0x44')](_0x1a68('0x8e'));_0x1b9ed3[_0x1a68('0x44')](_0x1a68('0x8e'));return;}if(_0x54579c[_0x1a68('0x8f')]['role']!=='agent')return;return _0x54579c[_0x1a68('0x8f')][_0x1a68('0x90')]({'attributes':['id'],'raw':!![]})[_0x1a68('0x1b')](function(_0x18ed7d){if(_[_0x1a68('0x73')](_0x18ed7d)){_0x5c8dc2[_0x1a68('0x44')](_0x1a68('0x91'));_0x1b9ed3[_0x1a68('0x44')](_0x1a68('0x91'));}else{_0x5c8dc2[_0x1a68('0x44')](_0x1a68('0x75'),_[_0x1a68('0x22')](_0x18ed7d,'id'));_0x1b9ed3[_0x1a68('0x44')]('i.MailAccountId\x20IN\x20?',_[_0x1a68('0x22')](_0x18ed7d,'id'));}});})['then'](function(){if(_0x54579c[_0x1a68('0x8f')][_0x1a68('0x92')]===_0x1a68('0x93')&&!_0x7eab3e&&!_0x54579c[_0x1a68('0x3b')][_0x1a68('0x74')])return[];return db[_0x1a68('0x94')][_0x1a68('0x3b')](_0x5c8dc2[_0x1a68('0x95')](),_0xaaa514);})[_0x1a68('0x1b')](function(_0xd411a3){_0x4e8a02[_0x1a68('0x19')]=_0xd411a3[_0x1a68('0x5e')];if(_0x4e8a02['count']===0x0)return[];return db[_0x1a68('0x94')][_0x1a68('0x3b')](_0x53718a[_0x1a68('0x95')](),_0xaaa514)[_0x1a68('0x1b')](function(_0x486765){_0x48a96c=_[_0x1a68('0x96')](_0x486765,'id');_0xaaa514=_['merge'](_0xaaa514,{'model':db['MailInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x54579c['query']['fields']){_0x27d7a5[_0x1a68('0x3f')][_0x1a68('0x26')](function(_0xa248){_0x1b9ed3[_0x1a68('0x47')]('i.'+_0xa248);});}else{_0x1b9ed3['field'](_0x1a68('0x8a'),_0x1a68('0x5f'));_0x1b9ed3[_0x1a68('0x47')](_0x1a68('0x97'),_0x1a68('0x98'));_0x1b9ed3[_0x1a68('0x47')](_0x1a68('0x99'),_0x1a68('0x9a'));_0x1b9ed3[_0x1a68('0x47')](_0x1a68('0x9b'),'Account.email');_0x1b9ed3[_0x1a68('0x47')](_0x1a68('0x9c'),_0x1a68('0x8b'));_0x1b9ed3[_0x1a68('0x47')](_0x1a68('0x87'));_0x1b9ed3[_0x1a68('0x47')](_0x1a68('0x9d'));_0x1b9ed3[_0x1a68('0x47')](_0x1a68('0x9e'));_0x1b9ed3['field'](_0x1a68('0x9f'));_0x1b9ed3[_0x1a68('0x47')](_0x1a68('0xa0'));_0x1b9ed3[_0x1a68('0x47')]('i.attach');_0x1b9ed3[_0x1a68('0x47')]('i.lastMsgAt');_0x1b9ed3[_0x1a68('0x47')](_0x1a68('0xa1'));_0x1b9ed3[_0x1a68('0x47')](_0x1a68('0xa2'));_0x1b9ed3[_0x1a68('0x47')](_0x1a68('0xa3'));_0x1b9ed3[_0x1a68('0x47')](_0x1a68('0xa4'));_0x1b9ed3[_0x1a68('0x47')](_0x1a68('0xa5'));_0x1b9ed3[_0x1a68('0x47')](_0x1a68('0xa6'));_0x1b9ed3[_0x1a68('0x47')](_0x1a68('0xa7'));_0x1b9ed3[_0x1a68('0x47')](_0x1a68('0xa8'));_0x1b9ed3['field'](_0x1a68('0xa9'));_0x1b9ed3['field'](_0x1a68('0xaa'));_0x1b9ed3[_0x1a68('0x47')](_0x1a68('0xab'),'Contact.firstName');_0x1b9ed3[_0x1a68('0x47')](_0x1a68('0xac'),_0x1a68('0xad'));_0x1b9ed3[_0x1a68('0x47')](_0x1a68('0xae'),_0x1a68('0xaf'));_0x1b9ed3['field']('c.phone',_0x1a68('0xb0'));_0x1b9ed3[_0x1a68('0x47')](_0x1a68('0xb1'),_0x1a68('0xb2'));_0x1b9ed3[_0x1a68('0x47')](_0x1a68('0xb3'),_0x1a68('0xb4'));_0x1b9ed3[_0x1a68('0x47')](_0x1a68('0xb5'),_0x1a68('0xb6'));_0x1b9ed3['field'](_0x1a68('0xb7'),_0x1a68('0xb8'));_0x1b9ed3[_0x1a68('0x47')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x1a68('0x23'));}if(_0x27d7a5[_0x1a68('0x18')])_0x1b9ed3[_0x1a68('0x18')](_0x27d7a5['limit']);if(_0x27d7a5['offset'])_0x1b9ed3[_0x1a68('0x16')](_0x27d7a5[_0x1a68('0x16')]);return db[_0x1a68('0x94')][_0x1a68('0x3b')](_0x1b9ed3['toString'](),_0xaaa514);})[_0x1a68('0x1b')](function(_0x3fc91c){if(_0x3fc91c[_0x1a68('0x5e')]>0x0)_0x58267a[_0x1a68('0x44')](_0x1a68('0xb9'),_['map'](_0x3fc91c,'id'));return db[_0x1a68('0x94')][_0x1a68('0x3b')](_0x58267a[_0x1a68('0x95')](),_0xaaa514)['then'](function(_0xda67f0){var _0x343b52=_[_0x1a68('0xba')](_0xda67f0,_0x1a68('0xbb'));var _0x3a0513=[];return db['Setting']['findOne']({'attributes':[_0x1a68('0xbc')],'raw':!![]})['then'](function(_0x412cca){var _0x1e8c30=_0x412cca[_0x1a68('0xbc')];_0x3fc91c[_0x1a68('0x26')](function(_0x49eb80){_0x3a0513[_0x1a68('0x27')](updateMailInteraction(_0x49eb80,_0x48a96c,_0x343b52,_0x1e8c30));});return BPromise[_0x1a68('0xbd')](_0x3a0513);});});});})['then'](function(_0x3eecfb){_0x4e8a02[_0x1a68('0xbe')]=_0x3eecfb;return _0x4e8a02;})[_0x1a68('0x1b')](respondWithFilteredResult(_0x319c17,_0x27d7a5))[_0x1a68('0x2d')](handleError(_0x319c17,null));};exports[_0x1a68('0xbf')]=function(_0xf2104d,_0x56f422){var _0x296f13={'raw':![],'where':{'id':_0xf2104d[_0x1a68('0xc0')]['id']}},_0x255cbc={};_0x255cbc['model']=_['keys'](db[_0x1a68('0x36')][_0x1a68('0x37')]);_0x255cbc[_0x1a68('0x3b')]=_[_0x1a68('0x3a')](_0xf2104d[_0x1a68('0x3b')]);_0x255cbc[_0x1a68('0x3c')]=_[_0x1a68('0x3d')](_0x255cbc['model'],_0x255cbc[_0x1a68('0x3b')]);_0x296f13[_0x1a68('0x3f')]=_[_0x1a68('0x3d')](_0x255cbc[_0x1a68('0x39')],qs[_0x1a68('0x3e')](_0xf2104d['query'][_0x1a68('0x3e')]));_0x296f13[_0x1a68('0x3f')]=_0x296f13['attributes']['length']?_0x296f13[_0x1a68('0x3f')]:_0x255cbc[_0x1a68('0x39')];if(_0xf2104d['query'][_0x1a68('0xc1')]){_0x296f13['include']=[{'all':!![]}];}_0x296f13=_['merge']({},_0x296f13,_0xf2104d[_0x1a68('0xc2')]);return db[_0x1a68('0x36')][_0x1a68('0x70')](_0x296f13)[_0x1a68('0x1b')](handleEntityNotFound(_0x56f422,null))['then'](respondWithResult(_0x56f422,null))['catch'](handleError(_0x56f422,null));};exports['create']=function(_0x4145f8,_0x40ba80){return db[_0x1a68('0x36')][_0x1a68('0xc3')](_0x4145f8[_0x1a68('0xc4')],{})['then'](respondWithResult(_0x40ba80,0xc9))[_0x1a68('0x2d')](handleError(_0x40ba80,null));};exports[_0x1a68('0x1a')]=function(_0xdea27d,_0x5c59bc){if(_0xdea27d[_0x1a68('0xc4')]['id']){delete _0xdea27d['body']['id'];}return db[_0x1a68('0x36')][_0x1a68('0x70')]({'where':{'id':_0xdea27d[_0x1a68('0xc0')]['id']}})[_0x1a68('0x1b')](handleEntityNotFound(_0x5c59bc,null))['then'](saveUpdates(_0xdea27d['body'],null))[_0x1a68('0x1b')](respondWithResult(_0x5c59bc,null))[_0x1a68('0x2d')](handleError(_0x5c59bc,null));};exports[_0x1a68('0x1c')]=function(_0x388674,_0x56401c){return db['MailInteraction'][_0x1a68('0x70')]({'where':{'id':_0x388674[_0x1a68('0xc0')]['id']}})[_0x1a68('0x1b')](handleEntityNotFound(_0x56401c,null))[_0x1a68('0x1b')](removeEntity(_0x56401c,null))[_0x1a68('0x2d')](handleError(_0x56401c,null));};exports[_0x1a68('0xc5')]=function(_0x12a664,_0x58005b){return db[_0x1a68('0x36')][_0x1a68('0xc5')]()['then'](respondWithResult(_0x58005b,null))['catch'](handleError(_0x58005b,null));};exports[_0x1a68('0xc6')]=function(_0x350daf,_0x285388){return db[_0x1a68('0xc7')]['find']({'where':{'id':_0x350daf['params']['id']}})[_0x1a68('0x1b')](handleEntityNotFound(_0x285388,null))[_0x1a68('0x1b')](function(_0x1b730e){if(_0x1b730e){return _0x1b730e[_0x1a68('0xc6')](_0x350daf[_0x1a68('0xc4')][_0x1a68('0xc8')],_[_0x1a68('0xc9')](_0x350daf[_0x1a68('0xc4')],[_0x1a68('0xc8'),'id'])||{});}})['then'](respondWithResult(_0x285388,null))[_0x1a68('0x2d')](handleError(_0x285388,null));};exports[_0x1a68('0xca')]=function(_0x10bf8e,_0x28b184){var _0x9d267d={'raw':![],'where':{}};var _0x23c56f={};var _0x3b9f89={'count':0x0,'rows':[]};return db[_0x1a68('0x36')]['findOne']({'where':{'id':_0x10bf8e[_0x1a68('0xc0')]['id']}})[_0x1a68('0x1b')](handleEntityNotFound(_0x28b184,null))[_0x1a68('0x1b')](function(_0x36dd24){if(_0x36dd24){_0x23c56f[_0x1a68('0x39')]=_[_0x1a68('0x3a')](db[_0x1a68('0xc7')][_0x1a68('0x37')]);_0x23c56f['query']=_[_0x1a68('0x3a')](_0x10bf8e[_0x1a68('0x3b')]);_0x23c56f['filters']=_[_0x1a68('0x3d')](_0x23c56f[_0x1a68('0x39')],_0x23c56f[_0x1a68('0x3b')]);_0x9d267d[_0x1a68('0x3f')]=_[_0x1a68('0x3d')](_0x23c56f[_0x1a68('0x39')],qs[_0x1a68('0x3e')](_0x10bf8e[_0x1a68('0x3b')]['fields']));_0x9d267d[_0x1a68('0x3f')]=_0x9d267d[_0x1a68('0x3f')][_0x1a68('0x5e')]?_0x9d267d['attributes']:_0x23c56f[_0x1a68('0x39')];if(!_0x10bf8e[_0x1a68('0x3b')][_0x1a68('0x40')](_0x1a68('0x41'))){_0x9d267d[_0x1a68('0x18')]=qs[_0x1a68('0x18')](_0x10bf8e[_0x1a68('0x3b')][_0x1a68('0x18')]);_0x9d267d[_0x1a68('0x16')]=qs[_0x1a68('0x16')](_0x10bf8e[_0x1a68('0x3b')][_0x1a68('0x16')]);}_0x9d267d[_0x1a68('0x42')]=qs[_0x1a68('0x43')](_0x10bf8e[_0x1a68('0x3b')][_0x1a68('0x43')]);_0x9d267d[_0x1a68('0x44')]=qs[_0x1a68('0x3c')](_[_0x1a68('0x45')](_0x10bf8e['query'],_0x23c56f[_0x1a68('0x3c')]));_0x9d267d[_0x1a68('0x44')]['MailInteractionId']=_0x36dd24['id'];if(_0x10bf8e[_0x1a68('0x3b')][_0x1a68('0x80')]){_0x9d267d[_0x1a68('0x44')]=_[_0x1a68('0xcb')](_0x9d267d[_0x1a68('0x44')],{'$or':_[_0x1a68('0x22')](_0x9d267d[_0x1a68('0x3f')],function(_0x25df5f){var _0x984b33={};_0x984b33[_0x25df5f]={'$like':'%'+_0x10bf8e[_0x1a68('0x3b')][_0x1a68('0x80')]+'%'};return _0x984b33;})});}if(_0x10bf8e['query']['$gte']){var _0x17a063=_0x10bf8e[_0x1a68('0x3b')]['$gte'][_0x1a68('0x25')](',');var _0x19eacd={};_0x19eacd[_0x17a063[0x0]]={'$gte':moment(_0x17a063[0x1])[_0x1a68('0xcc')](_0x1a68('0xcd'))};_0x9d267d[_0x1a68('0x44')]=_[_0x1a68('0xcb')](_0x9d267d[_0x1a68('0x44')],_0x19eacd);}_0x9d267d=_[_0x1a68('0xcb')]({},_0x9d267d,_0x10bf8e[_0x1a68('0xc2')]);return db[_0x1a68('0xc7')][_0x1a68('0x19')]({'where':_0x9d267d['where']})['then'](function(_0x42739d){_0x3b9f89[_0x1a68('0x19')]=_0x42739d;if(_0x10bf8e[_0x1a68('0x3b')]['includeAll']){_0x9d267d['include']=[{'all':!![]}];}return db[_0x1a68('0xc7')][_0x1a68('0xce')](_0x9d267d);})[_0x1a68('0x1b')](function(_0x432f0e){if(_0x10bf8e['query'][_0x1a68('0xcf')]===_0x1a68('0xd0')){for(var _0x4edef6=0x0;_0x4edef6<_0x432f0e[_0x1a68('0x5e')];_0x4edef6++){_0x432f0e[_0x4edef6][_0x1a68('0xc4')]=juice(_0x432f0e[_0x4edef6]['body']);}}_0x3b9f89[_0x1a68('0xbe')]=_0x432f0e;return _0x3b9f89;});}})[_0x1a68('0x1b')](respondWithFilteredResult(_0x28b184,_0x9d267d))[_0x1a68('0x2d')](handleError(_0x28b184,null));};exports[_0x1a68('0xd1')]=function(_0x2d9fef,_0x5a3286){return db[_0x1a68('0x36')][_0x1a68('0x70')]({'where':{'id':_0x2d9fef[_0x1a68('0xc0')]['id']}})[_0x1a68('0x1b')](handleEntityNotFound(_0x5a3286,null))[_0x1a68('0x1b')](function(_0x27756d){if(_0x27756d){return _0x27756d[_0x1a68('0xd2')](_0x2d9fef['body'][_0x1a68('0xc8')],_[_0x1a68('0xc9')](_0x2d9fef[_0x1a68('0xc4')],[_0x1a68('0xc8'),'id'])||{})[_0x1a68('0xd3')](function(){return db[_0x1a68('0x6b')][_0x1a68('0xce')]({'attributes':['id',_0x1a68('0x1f'),_0x1a68('0x48')],'where':{'id':_0x2d9fef[_0x1a68('0xc4')][_0x1a68('0xc8')]}});})[_0x1a68('0x1b')](function(_0x113c4d){socket['emit'](_0x1a68('0xd4'),{'id':Number(_0x2d9fef[_0x1a68('0xc0')]['id']),'tags':_0x113c4d||[]});return{'id':Number(_0x2d9fef[_0x1a68('0xc0')]['id']),'tags':_0x113c4d||[]};});}})[_0x1a68('0x1b')](respondWithResult(_0x5a3286,null))['catch'](handleError(_0x5a3286,null));};exports[_0x1a68('0xd5')]=function(_0x3f6f41,_0xaf4d9b){return db['MailInteraction'][_0x1a68('0x70')]({'where':{'id':_0x3f6f41['params']['id']}})[_0x1a68('0x1b')](handleEntityNotFound(_0xaf4d9b,null))[_0x1a68('0x1b')](function(_0x41b623){if(_0x41b623){return _0x41b623[_0x1a68('0xd5')](_0x3f6f41['query'][_0x1a68('0xc8')]);}})[_0x1a68('0x1b')](respondWithStatusCode(_0xaf4d9b,null))[_0x1a68('0x2d')](handleError(_0xaf4d9b,null));};exports[_0x1a68('0xd6')]=function(_0x37d137,_0x555838){var _0x46bbaf=moment()['unix']()[_0x1a68('0x95')]();var _0x192e8a=path[_0x1a68('0xd7')](config[_0x1a68('0xd8')],_0x1a68('0xd9'),'files',_0x1a68('0xda'));var _0x3d36b6=path[_0x1a68('0xd7')](config[_0x1a68('0xd8')],_0x1a68('0xd9'),_0x1a68('0xdb'),_0x1a68('0xdc'));var _0x2d9bdd=path['join'](_0x192e8a,_0x46bbaf);var _0x55df9b=util['format'](_0x1a68('0xdd'),_0x37d137[_0x1a68('0xc0')]['id'],_0x46bbaf);var _0x584e5c=path[_0x1a68('0xd7')](_0x192e8a,_0x55df9b);var _0x4e9343=[];if(_0x37d137[_0x1a68('0x3b')][_0x1a68('0xdc')]){_0x4e9343[_0x1a68('0x27')]({'model':db[_0x1a68('0xde')],'as':_0x1a68('0xdf'),'raw':!![]});}var _0x24d1ed=[{'model':db[_0x1a68('0xc7')],'as':_0x1a68('0xe0'),'attributes':['id',_0x1a68('0xc4'),_0x1a68('0x4d'),'to','cc',_0x1a68('0xe1'),'subject',_0x1a68('0x76')],'where':{'secret':![]},'order':qs[_0x1a68('0x43')]('id'),'include':_0x4e9343}];return db[_0x1a68('0x36')]['find']({'where':{'id':_0x37d137[_0x1a68('0xc0')]['id']},'include':_0x24d1ed})[_0x1a68('0x1b')](handleEntityNotFound(_0x555838,null))[_0x1a68('0x1b')](function(_0x2707a7){if(_0x2707a7&&_0x2707a7[_0x1a68('0xe0')]){var _0x3d2db3=_0x2707a7[_0x1a68('0xe2')]({'plain':!![]});fs[_0x1a68('0xe3')](_0x2d9bdd);return BPromise[_0x1a68('0xe4')](_0x3d2db3[_0x1a68('0xe0')],function(_0x4b118c,_0x713e11){var _0x8e7f37={'from':_0x4b118c[_0x1a68('0x4d')],'to':_0x4b118c['to'],'subject':_0x4b118c[_0x1a68('0xe5')],'html':htmlEntities['decode'](_0x4b118c[_0x1a68('0xc4')]),'headers':{'Date':moment(_0x4b118c[_0x1a68('0x76')])['format'](_0x1a68('0xe6'))},'attachments':[]};if(_0x4b118c['cc']){_0x8e7f37[_0x1a68('0xe7')]['Cc']=_0x4b118c['cc'];}if(_0x4b118c[_0x1a68('0xe1')]){_0x8e7f37[_0x1a68('0xe7')][_0x1a68('0xe8')]=_0x4b118c[_0x1a68('0xe1')];}return new BPromise(function(_0x4feafb,_0x523246){if(_0x4b118c[_0x1a68('0xdf')]){for(var _0x1791f5=0x0;_0x1791f5<_0x4b118c['Attachments']['length'];_0x1791f5++){var _0x47b532=_0x4b118c[_0x1a68('0xdf')][_0x1791f5];var _0x30ce95=path[_0x1a68('0xd7')](_0x3d36b6,_0x47b532[_0x1a68('0xe9')]);if(fs[_0x1a68('0xea')](_0x30ce95)){_0x8e7f37[_0x1a68('0xdc')][_0x1a68('0x27')]({'name':_0x47b532[_0x1a68('0x1f')],'contentType':_0x47b532['type'],'data':fs[_0x1a68('0xeb')](_0x30ce95)});}}}emlformat[_0x1a68('0xec')](_0x8e7f37,function(_0x3278e6,_0x134a3f){if(_0x3278e6)return _0x523246(_0x3278e6);fs[_0x1a68('0xed')](path[_0x1a68('0xd7')](_0x2d9bdd,util['format'](_0x1a68('0xee'),_0x713e11)),_0x134a3f);return _0x4feafb(_0x134a3f);});});})[_0x1a68('0x1b')](function(){return new BPromise(function(_0x389d4c,_0x4768b9){zipdir(_0x2d9bdd,{'saveTo':_0x584e5c},function(_0x4f2688,_0x4cfe06){if(_0x4f2688)return _0x4768b9(_0x4f2688);return _0x389d4c(_0x4cfe06);});})[_0x1a68('0x1b')](function(){return new BPromise(function(_0x2335b0,_0x178c37){rimraf(_0x2d9bdd,function(_0x3623a1){if(_0x3623a1)_0x178c37(_0x3623a1);return _0x2335b0();});});})[_0x1a68('0x1b')](function(){return _0x555838[_0x1a68('0xd6')](_0x584e5c,_0x55df9b,function(_0x20e5ac){if(!_0x20e5ac)fs['unlinkSync'](_0x584e5c);});});});}else{return _0x555838['sendStatus'](0xc8);}})[_0x1a68('0x2d')](handleError(_0x555838,null));};
\ No newline at end of file
+var _0x3837=['squel','juice','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','html-entities','redis','localhost','socket.io-emitter','./mailInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','error','name','send','map','fullname','TagIds','Tags','split','forEach','push','out','plainBody','-id','lastMsgText','trimStart','catch','waiting','talking','unmanaged','total','closed','UserId','answered','index','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','hasOwnProperty','order','sort','where','pick','field','from','u.id','ui.MailInteractionId','users','u.id\x20=\x20ui.UserId','select','mail_interactions','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','mail_accounts','a.id\x20=\x20i.MailAccountId','me.MailInteractionId\x20=\x20i.id','it.MailInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','conditions','find','unreadMessages','having','`\x20=\x200','`\x20>\x200','operator','length','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','value','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','text','some','compact','isEmpty','i.MailAccountId\x20IN\x20?','concat','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','c.email\x20LIKE\x20?','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','i.id','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','MailAccountId','i.MailAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getMailAccounts','i.MailAccountId\x20IS\x20NULL','toString','keyBy','MailInteraction','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20(\x27%\x27\x20+\x20a.email\x20+\x20\x27%\x27)\x20THEN\x20SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201)\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.createdAt','i.updatedAt','i.closed','i.closedAt','i.attach','i.lastMsgAt','i.lastMsgDirection','i.subject','i.disposition','i.secondDisposition','i.thirdDisposition','i.substatus','i.to','i.ContactId','c.firstName','c.lastName','c.email','Contact.email','c.phone','c.mobile','c.fax','o.fullname','Owner.fullname','o.internal','sequelize','groupBy','enableEmailPreview','all','rows','show','params','keys','includeAll','include','merge','options','create','body','describe','addMessage','MailMessage','omit','nolimit','MailInteractionId','format','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss','true','addTags','ids','color','emit','removeTags','download','unix','join','root','server','files','tmp','attachments','Attachment','Messages','bcc','subject','get','decode','Bcc','Attachments','basename','readFileSync','build','writeFileSync','message%d.eml','unlinkSync','rimraf','moment','util','path','lodash'];(function(_0x4f87cc,_0x5cebcf){var _0x24c400=function(_0x59563c){while(--_0x59563c){_0x4f87cc['push'](_0x4f87cc['shift']());}};_0x24c400(++_0x5cebcf);}(_0x3837,0x1d1));var _0x7383=function(_0x48c852,_0x4d6d4f){_0x48c852=_0x48c852-0x0;var _0x5c39cc=_0x3837[_0x48c852];return _0x5c39cc;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7383('0x0'));var zipdir=require('zip-dir');var moment=require(_0x7383('0x1'));var BPromise=require('bluebird');var util=require(_0x7383('0x2'));var path=require(_0x7383('0x3'));var fs=require('fs');var _=require(_0x7383('0x4'));var squel=require(_0x7383('0x5'));var juice=require(_0x7383('0x6'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var as=require(_0x7383('0x7'));var logger=require(_0x7383('0x8'))(_0x7383('0x9'));var config=require(_0x7383('0xa'));var db=require(_0x7383('0xb'))['db'];var htmlEntities=require(_0x7383('0xc'));config[_0x7383('0xd')]=_['defaults'](config[_0x7383('0xd')],{'host':_0x7383('0xe'),'port':0x18eb});var socket=require(_0x7383('0xf'))(new Redis(config[_0x7383('0xd')]));require(_0x7383('0x10'))[_0x7383('0x11')](socket);function respondWithStatusCode(_0x19f134,_0x58905d){_0x58905d=_0x58905d||0xcc;return function(_0xfdec8a){if(_0xfdec8a){return _0x19f134[_0x7383('0x12')](_0x58905d);}return _0x19f134[_0x7383('0x13')](_0x58905d)[_0x7383('0x14')]();};}function respondWithResult(_0x3f135b,_0x35e5f4){_0x35e5f4=_0x35e5f4||0xc8;return function(_0xe359e8){if(_0xe359e8){return _0x3f135b[_0x7383('0x13')](_0x35e5f4)[_0x7383('0x15')](_0xe359e8);}};}function respondWithFilteredResult(_0x24be15,_0x250e57){return function(_0x5b018f){if(_0x5b018f){var _0x43c1d6=typeof _0x250e57[_0x7383('0x16')]===_0x7383('0x17')&&typeof _0x250e57[_0x7383('0x18')]==='undefined';var _0x566949=_0x5b018f['count'];var _0x5cf093=_0x43c1d6?0x0:_0x250e57[_0x7383('0x16')];var _0x2f7d85=_0x43c1d6?_0x5b018f[_0x7383('0x19')]:_0x250e57[_0x7383('0x16')]+_0x250e57[_0x7383('0x18')];var _0x52af85;if(_0x2f7d85>=_0x566949){_0x2f7d85=_0x566949;_0x52af85=0xc8;}else{_0x52af85=0xce;}_0x24be15[_0x7383('0x13')](_0x52af85);return _0x24be15[_0x7383('0x1a')](_0x7383('0x1b'),_0x5cf093+'-'+_0x2f7d85+'/'+_0x566949)[_0x7383('0x15')](_0x5b018f);}return null;};}function saveUpdates(_0x251702){return function(_0x29cab0){if(_0x29cab0){return _0x29cab0[_0x7383('0x1c')](_0x251702)[_0x7383('0x1d')](function(_0x9d2b6a){return _0x9d2b6a;});}return null;};}function removeEntity(_0x7c71a5){return function(_0x4a6b3d){if(_0x4a6b3d){return _0x4a6b3d[_0x7383('0x1e')]()[_0x7383('0x1d')](function(){_0x7c71a5[_0x7383('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x183ccb){return function(_0xff5467){if(!_0xff5467){_0x183ccb['sendStatus'](0x194);}return _0xff5467;};}function handleError(_0x316204,_0x57420d){_0x57420d=_0x57420d||0x1f4;return function(_0x1e2e79){logger[_0x7383('0x1f')](_0x1e2e79['stack']);if(_0x1e2e79[_0x7383('0x20')]){delete _0x1e2e79[_0x7383('0x20')];}_0x316204[_0x7383('0x13')](_0x57420d)[_0x7383('0x21')](_0x1e2e79);};}function getInteractionUsers(_0x16befa,_0x523525){return new BPromise(function(_0x313cb0,_0x5eaf6a){try{if(_0x523525[_0x16befa['id']]){_0x16befa['Users']=_[_0x7383('0x22')](_0x523525[_0x16befa['id']],function(_0x1175b2){return{'id':_0x1175b2['id'],'fullname':_0x1175b2[_0x7383('0x23')]};});}}catch(_0x208ef9){_0x5eaf6a(_0x208ef9);}_0x313cb0(_0x16befa);});}function getInteractionTags(_0x4a1840,_0x43448e){return new BPromise(function(_0x4f8a0b,_0x1187cf){try{if(_0x4a1840[_0x7383('0x24')]){_0x4a1840[_0x7383('0x25')]=[];_0x4a1840[_0x7383('0x24')][_0x7383('0x26')](',')[_0x7383('0x27')](function(_0x272d78){_0x4a1840[_0x7383('0x25')][_0x7383('0x28')](_0x43448e[_0x272d78]);});}delete _0x4a1840[_0x7383('0x24')];}catch(_0x512a98){_0x1187cf(_0x512a98);}_0x4f8a0b(_0x4a1840);});}function getLastMessageText(_0xf05918){return new BPromise(function(_0x2d0631,_0x579f22){return db['MailMessage']['findOne']({'where':{'$and':[{'MailInteractionId':_0xf05918['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x7383('0x29')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0x7383('0x2a')],'order':_0x7383('0x2b'),'raw':!![]})[_0x7383('0x1d')](function(_0x2a61d7){if(_0x2a61d7&&_0x2a61d7[_0x7383('0x2a')]){_0xf05918[_0x7383('0x2c')]=_[_0x7383('0x2d')](_0x2a61d7[_0x7383('0x2a')]);}_0x2d0631(_0xf05918);})[_0x7383('0x2e')](function(_0xe8c863){_0x579f22(_0xe8c863);});});}function updateMailInteraction(_0x350425,_0x14843e,_0x448a62,_0xf77b8a){return new BPromise(function(_0x15f35b,_0x2ffffc){return getInteractionUsers(_0x350425,_0x448a62)[_0x7383('0x1d')](function(_0x3a71fa){return getInteractionTags(_0x3a71fa,_0x14843e);})[_0x7383('0x1d')](function(_0x4f9cc7){return getStateInteraction(_0x4f9cc7);})[_0x7383('0x1d')](function(_0xd7055d){if(_0xf77b8a){_0x15f35b(getLastMessageText(_0xd7055d));}else{_0x15f35b(_0xd7055d);}})['catch'](function(_0x3e945c){_0x2ffffc(_0x3e945c);});});}function getStateInteraction(_0x31663d){return new BPromise(function(_0x36de0f){_0x31663d[_0x7383('0x2f')]=0x0;_0x31663d[_0x7383('0x30')]=0x0;_0x31663d['answered']=0x0;_0x31663d[_0x7383('0x31')]=0x0;_0x31663d[_0x7383('0x32')]=0x0;if(!_0x31663d[_0x7383('0x33')]&&!_0x31663d[_0x7383('0x34')]){_0x31663d[_0x7383('0x2f')]+=0x1;}if(!_0x31663d[_0x7383('0x33')]&&_0x31663d[_0x7383('0x34')]){_0x31663d['talking']+=0x1;if(_0x31663d['waiting']){_0x31663d['waiting']-=0x1;}}if(_0x31663d[_0x7383('0x33')]&&_0x31663d[_0x7383('0x34')]){_0x31663d[_0x7383('0x35')]+=0x1;if(_0x31663d[_0x7383('0x30')]){_0x31663d[_0x7383('0x30')]-=0x1;}}if(_0x31663d[_0x7383('0x33')]&&!_0x31663d[_0x7383('0x34')]){_0x31663d[_0x7383('0x31')]+=0x1;if(_0x31663d[_0x7383('0x2f')]){_0x31663d['waiting']-=0x1;}}_0x31663d[_0x7383('0x32')]+=0x1;_0x36de0f(_0x31663d);});}exports[_0x7383('0x36')]=function(_0x3c2795,_0x3c3bd9){var _0x34513c={},_0x34f585={},_0x4f328a={'count':0x0,'rows':[]};var _0x32a9a7=_['map'](db['MailInteraction'][_0x7383('0x37')],function(_0x34e69a){return{'name':_0x34e69a[_0x7383('0x38')],'type':_0x34e69a[_0x7383('0x39')][_0x7383('0x3a')]};});_0x34f585['model']=_['map'](_0x32a9a7,_0x7383('0x20'));_0x34f585[_0x7383('0x3b')]=_['keys'](_0x3c2795['query']);_0x34f585[_0x7383('0x3c')]=_[_0x7383('0x3d')](_0x34f585[_0x7383('0x3e')],_0x34f585[_0x7383('0x3b')]);_0x34513c[_0x7383('0x3f')]=_['intersection'](_0x34f585[_0x7383('0x3e')],qs['fields'](_0x3c2795[_0x7383('0x3b')][_0x7383('0x40')]));_0x34513c[_0x7383('0x3f')]=_0x34513c[_0x7383('0x3f')]['length']?_0x34513c[_0x7383('0x3f')]:_0x34f585[_0x7383('0x3e')];if(!_0x3c2795[_0x7383('0x3b')][_0x7383('0x41')]('nolimit')){_0x34513c[_0x7383('0x18')]=qs[_0x7383('0x18')](_0x3c2795[_0x7383('0x3b')][_0x7383('0x18')]);_0x34513c[_0x7383('0x16')]=qs[_0x7383('0x16')](_0x3c2795[_0x7383('0x3b')][_0x7383('0x16')]);}_0x34513c[_0x7383('0x42')]=qs[_0x7383('0x43')](_0x3c2795[_0x7383('0x3b')][_0x7383('0x43')]);_0x34513c[_0x7383('0x44')]=qs['filters'](_[_0x7383('0x45')](_0x3c2795['query'],_0x34f585[_0x7383('0x3c')]),_0x32a9a7);var _0x322af1=[];var _0x40b29a=squel['select']()[_0x7383('0x46')]('id')[_0x7383('0x46')]('name')[_0x7383('0x46')]('color')[_0x7383('0x47')]('tools_tags');var _0x39fe70=squel['select']()[_0x7383('0x46')](_0x7383('0x48'))[_0x7383('0x46')]('u.fullname')[_0x7383('0x46')](_0x7383('0x49'))[_0x7383('0x47')]('user_has_mail_interactions','ui')['left_join'](_0x7383('0x4a'),'u',_0x7383('0x4b'));var _0x23d9fe=squel[_0x7383('0x4c')]()[_0x7383('0x47')](_0x7383('0x4d'),'i')[_0x7383('0x4e')](_0x7383('0x4f'),'c',_0x7383('0x50'))[_0x7383('0x4e')]('users','o',_0x7383('0x51'))[_0x7383('0x4e')](_0x7383('0x52'),'a',_0x7383('0x53'))[_0x7383('0x4e')]('mail_messages','me',_0x7383('0x54'))[_0x7383('0x4e')]('mail_interaction_has_tags','it',_0x7383('0x55'))[_0x7383('0x4e')](_0x7383('0x56'),'t',_0x7383('0x57'));var _0x4417d9=squel[_0x7383('0x58')]();var _0x37601b=[];var _0x3b7495=squel[_0x7383('0x58')]();var _0x2928d0;if(_0x3c2795[_0x7383('0x3b')][_0x7383('0x59')]){_0x2928d0=as[_0x7383('0x5a')](_0x3c2795[_0x7383('0x3b')]['search']);var _0x3490a1=_0x2928d0['sqlOperator'];for(var _0x16a0db=0x0;_0x16a0db<_0x2928d0[_0x7383('0x5b')]['length'];_0x16a0db++){var _0x1c1670=_0x2928d0[_0x7383('0x5b')][_0x16a0db];var _0x1188c8='i';var _0x56abd5=_[_0x7383('0x5c')](_0x32a9a7,[_0x7383('0x20'),_0x1c1670[_0x7383('0x46')]]);if(!_0x56abd5){switch(_0x1c1670['field']){case _0x7383('0x5d'):if(_0x1c1670['value']==0x1){_0x23d9fe[_0x7383('0x5e')]('`'+_0x1c1670['field']+_0x7383('0x5f'));}else{_0x23d9fe[_0x7383('0x5e')]('`'+_0x1c1670[_0x7383('0x46')]+_0x7383('0x60'));}break;case'Contact':if(_0x1c1670[_0x7383('0x61')]==='$substring'){if(_0x1c1670['value']['split']('\x20')[_0x7383('0x62')]>0x1){_0x4417d9[_0x3490a1](_0x7383('0x63'),qs[_0x7383('0x64')](_0x1c1670[_0x7383('0x65')]),null);}else{var _0x2fc69a='%'+_0x1c1670[_0x7383('0x65')]+'%';_0x4417d9[_0x3490a1](_0x7383('0x66'),_0x2fc69a,_0x2fc69a,_0x2fc69a);}}else{_0x56abd5=_['find'](_0x32a9a7,['name',_0x7383('0x67')]);_0x1c1670['field']=_0x7383('0x67');_0x1196fc=as[_0x7383('0x68')](_0x1188c8,_0x56abd5[_0x7383('0x39')],_0x1c1670);_0x4417d9[_0x3490a1](_0x1196fc['text'],_0x1196fc['value'][_0x7383('0x69')],_0x1196fc[_0x7383('0x65')][_0x7383('0x14')]);}break;case _0x7383('0x6a'):var _0x3965f8=_0x1c1670[_0x7383('0x65')][_0x7383('0x26')](',')[_0x7383('0x22')](function(_0x53b454){return Number(_0x53b454);});_0x3965f8[_0x7383('0x27')](function(_0x2e62f9){_0x3b7495['or'](_0x7383('0x6b'),'%,'+_0x2e62f9+',%');});_0x37601b=_[_0x7383('0x6c')](_0x37601b,_0x3965f8);break;case _0x7383('0x6d'):if(_0x1c1670[_0x7383('0x61')]===_0x7383('0x6e')){_0x4417d9[_0x3490a1](_0x7383('0x6f'),'%'+_0x1c1670[_0x7383('0x65')]+'%',null);}else{_0x56abd5=_[_0x7383('0x5c')](_0x32a9a7,[_0x7383('0x20'),_0x7383('0x34')]);_0x1c1670[_0x7383('0x46')]=_0x7383('0x34');_0x1196fc=as['buildExpression'](_0x1188c8,_0x56abd5[_0x7383('0x39')],_0x1c1670);_0x4417d9[_0x3490a1](_0x1196fc[_0x7383('0x70')],_0x1196fc[_0x7383('0x65')][_0x7383('0x69')],_0x1196fc[_0x7383('0x65')][_0x7383('0x14')]);}break;case _0x7383('0x2a'):_0x1196fc=as[_0x7383('0x68')]('me',null,_0x1c1670);_0x4417d9[_0x3490a1](_0x1196fc['text'],_0x1196fc[_0x7383('0x65')][_0x7383('0x69')],_0x1196fc['value'][_0x7383('0x14')]);break;}}else{var _0x1196fc=as[_0x7383('0x68')](_0x1188c8,_0x56abd5[_0x7383('0x39')],_0x1c1670);_0x4417d9[_0x3490a1](_0x1196fc['text'],_0x1196fc[_0x7383('0x65')][_0x7383('0x69')],_0x1196fc['value'][_0x7383('0x14')]);}}}else{var _0x4955e5=_(_0x3c2795[_0x7383('0x3b')])['keys']()[_0x7383('0x22')](function(_0x440dfa){return _[_0x7383('0x71')](_0x32a9a7,[_0x7383('0x20'),_0x440dfa])?_0x440dfa:undefined;})[_0x7383('0x72')]()[_0x7383('0x65')]();if(!_[_0x7383('0x73')](_0x4955e5)){_0x4955e5[_0x7383('0x27')](function(_0x8a1b92){if(_0x8a1b92==='MailAccountId'){_0x23d9fe[_0x7383('0x44')](_0x7383('0x74'),[][_0x7383('0x75')](_0x3c2795['query'][_0x8a1b92]));}else if(_0x8a1b92===_0x7383('0x76')){var _0x253ccb=JSON[_0x7383('0x77')](_0x3c2795[_0x7383('0x3b')][_0x8a1b92])[_0x7383('0x78')];var _0x53d63c=JSON['parse'](_0x3c2795['query'][_0x8a1b92])['$lte'];_0x23d9fe[_0x7383('0x44')](_0x7383('0x79'),_0x253ccb,_0x53d63c);}else{if(_0x3c2795[_0x7383('0x3b')][_0x8a1b92]===_0x7383('0x7a')){_0x23d9fe[_0x7383('0x44')]('i.'+_0x8a1b92+_0x7383('0x7b'));}else{_0x23d9fe['where']('i.'+_0x8a1b92+_0x7383('0x7c'),_0x3c2795[_0x7383('0x3b')][_0x8a1b92]);}}});}if(_0x3c2795[_0x7383('0x3b')][_0x7383('0x7d')]){if(_0x3c2795[_0x7383('0x3b')][_0x7383('0x7d')]==0x1){_0x23d9fe[_0x7383('0x5e')]('`unreadMessages`\x20=\x200');}else{_0x23d9fe['having']('`unreadMessages`\x20>\x200');}}if(_0x3c2795[_0x7383('0x3b')][_0x7383('0x7e')]){_0x37601b=_[_0x7383('0x7f')](_0x3c2795['query'][_0x7383('0x7e')])?_0x3c2795[_0x7383('0x3b')][_0x7383('0x7e')]:new Array(_0x3c2795['query'][_0x7383('0x7e')]);_0x37601b[_0x7383('0x27')](function(_0x2b8402){_0x3b7495['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2b8402+',%');});}if(_0x3c2795[_0x7383('0x3b')][_0x7383('0x80')]){var _0x46b222=_0x3c2795[_0x7383('0x3b')][_0x7383('0x80')][_0x7383('0x81')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x7383('0x82')](_0x46b222)){_0x4417d9['or'](_0x7383('0x83'),_0x46b222+'%');}else if(qs['isEmail'](_0x46b222)){_0x4417d9['or'](_0x7383('0x84'),_0x46b222+'%');}else{_0x4417d9['or'](_0x7383('0x85'),qs['getFullTextValue'](_0x46b222))['or'](_0x7383('0x86'),qs[_0x7383('0x64')](_0x46b222));}}}_0x23d9fe[_0x7383('0x44')](_0x4417d9);_0x23d9fe[_0x7383('0x87')](_0x7383('0x88'));var _0x2decfc={'type':db['Sequelize']['QueryTypes'][_0x7383('0x89')],'raw':!![]};var _0x43f2f0=_0x23d9fe[_0x7383('0x8a')]();_0x43f2f0[_0x7383('0x46')](_0x7383('0x88'));_0x43f2f0[_0x7383('0x46')](_0x7383('0x8b'),'unreadMessages');if(_0x34513c[_0x7383('0x42')]){_0x34513c[_0x7383('0x42')][_0x7383('0x27')](function(_0x4f463b){var _0x3b444a=_0x4f463b[0x0]===_0x7383('0x8c')?_0x4f463b[0x0]:'i.'+_0x4f463b[0x0];_0x23d9fe[_0x7383('0x42')](_0x3b444a,_0x4f463b[0x1]===_0x7383('0x8d')?![]:!![]);});}if(!_[_0x7383('0x73')](_0x37601b)){_0x23d9fe[_0x7383('0x5e')](_0x3b7495);_0x43f2f0[_0x7383('0x44')](_0x7383('0x8e'),_0x37601b);}BPromise[_0x7383('0x8f')]()[_0x7383('0x1d')](function(){if(!_0x2928d0){if(_0x3c2795[_0x7383('0x3b')][_0x7383('0x90')])return;_0x43f2f0['where'](_0x7383('0x91'));_0x23d9fe[_0x7383('0x44')](_0x7383('0x91'));return;}if(_0x3c2795[_0x7383('0x92')][_0x7383('0x93')]!==_0x7383('0x94'))return;return _0x3c2795[_0x7383('0x92')][_0x7383('0x95')]({'attributes':['id'],'raw':!![]})['then'](function(_0x18067e){if(_[_0x7383('0x73')](_0x18067e)){_0x43f2f0['where'](_0x7383('0x96'));_0x23d9fe[_0x7383('0x44')]('i.MailAccountId\x20IS\x20NULL');}else{_0x43f2f0['where'](_0x7383('0x74'),_[_0x7383('0x22')](_0x18067e,'id'));_0x23d9fe['where']('i.MailAccountId\x20IN\x20?',_[_0x7383('0x22')](_0x18067e,'id'));}});})[_0x7383('0x1d')](function(){if(_0x3c2795[_0x7383('0x92')]['role']==='agent'&&!_0x2928d0&&!_0x3c2795[_0x7383('0x3b')]['MailAccountId'])return[];return db['sequelize'][_0x7383('0x3b')](_0x43f2f0[_0x7383('0x97')](),_0x2decfc);})[_0x7383('0x1d')](function(_0x3dc04a){_0x4f328a[_0x7383('0x19')]=_0x3dc04a[_0x7383('0x62')];if(_0x4f328a[_0x7383('0x19')]===0x0)return[];return db['sequelize'][_0x7383('0x3b')](_0x40b29a[_0x7383('0x97')](),_0x2decfc)[_0x7383('0x1d')](function(_0x1ea3df){_0x322af1=_[_0x7383('0x98')](_0x1ea3df,'id');_0x2decfc=_['merge'](_0x2decfc,{'model':db[_0x7383('0x99')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x3c2795[_0x7383('0x3b')][_0x7383('0x40')]){_0x34513c[_0x7383('0x3f')][_0x7383('0x27')](function(_0x1357b1){_0x23d9fe[_0x7383('0x46')]('i.'+_0x1357b1);});}else{_0x23d9fe[_0x7383('0x46')](_0x7383('0x8b'),_0x7383('0x5d'));_0x23d9fe[_0x7383('0x46')](_0x7383('0x9a'),_0x7383('0x9b'));_0x23d9fe['field'](_0x7383('0x9c'),_0x7383('0x9d'));_0x23d9fe['field'](_0x7383('0x9e'),_0x7383('0x8c'));_0x23d9fe[_0x7383('0x46')]('i.id');_0x23d9fe['field'](_0x7383('0x9f'));_0x23d9fe[_0x7383('0x46')](_0x7383('0xa0'));_0x23d9fe[_0x7383('0x46')](_0x7383('0xa1'));_0x23d9fe[_0x7383('0x46')](_0x7383('0xa2'));_0x23d9fe[_0x7383('0x46')](_0x7383('0xa3'));_0x23d9fe[_0x7383('0x46')](_0x7383('0xa4'));_0x23d9fe[_0x7383('0x46')](_0x7383('0xa5'));_0x23d9fe[_0x7383('0x46')](_0x7383('0xa6'));_0x23d9fe[_0x7383('0x46')](_0x7383('0xa7'));_0x23d9fe['field'](_0x7383('0xa8'));_0x23d9fe['field'](_0x7383('0xa9'));_0x23d9fe[_0x7383('0x46')](_0x7383('0xaa'));_0x23d9fe[_0x7383('0x46')](_0x7383('0xab'));_0x23d9fe[_0x7383('0x46')](_0x7383('0xac'));_0x23d9fe[_0x7383('0x46')]('i.MailAccountId');_0x23d9fe[_0x7383('0x46')]('i.UserId');_0x23d9fe[_0x7383('0x46')](_0x7383('0xad'),'Contact.firstName');_0x23d9fe[_0x7383('0x46')](_0x7383('0xae'),'Contact.lastName');_0x23d9fe['field'](_0x7383('0xaf'),_0x7383('0xb0'));_0x23d9fe[_0x7383('0x46')](_0x7383('0xb1'),'Contact.phone');_0x23d9fe[_0x7383('0x46')](_0x7383('0xb2'),'Contact.mobile');_0x23d9fe['field'](_0x7383('0xb3'),'Contact.fax');_0x23d9fe[_0x7383('0x46')](_0x7383('0xb4'),_0x7383('0xb5'));_0x23d9fe[_0x7383('0x46')](_0x7383('0xb6'),'Owner.internal');_0x23d9fe['field']('GROUP_CONCAT(DISTINCT\x20t.id)',_0x7383('0x24'));}if(_0x34513c[_0x7383('0x18')])_0x23d9fe[_0x7383('0x18')](_0x34513c['limit']);if(_0x34513c[_0x7383('0x16')])_0x23d9fe[_0x7383('0x16')](_0x34513c[_0x7383('0x16')]);return db['sequelize'][_0x7383('0x3b')](_0x23d9fe[_0x7383('0x97')](),_0x2decfc);})['then'](function(_0x8b06f9){if(_0x8b06f9[_0x7383('0x62')]>0x0)_0x39fe70[_0x7383('0x44')]('ui.MailInteractionId\x20IN\x20?',_[_0x7383('0x22')](_0x8b06f9,'id'));return db[_0x7383('0xb7')]['query'](_0x39fe70['toString'](),_0x2decfc)[_0x7383('0x1d')](function(_0x4cf777){var _0x54c69c=_[_0x7383('0xb8')](_0x4cf777,'MailInteractionId');var _0x1229f9=[];return db['Setting']['findOne']({'attributes':[_0x7383('0xb9')],'raw':!![]})['then'](function(_0x1feeb2){var _0xb1b670=_0x1feeb2[_0x7383('0xb9')];_0x8b06f9[_0x7383('0x27')](function(_0x35ddba){_0x1229f9['push'](updateMailInteraction(_0x35ddba,_0x322af1,_0x54c69c,_0xb1b670));});return BPromise[_0x7383('0xba')](_0x1229f9);});});});})['then'](function(_0x88b57){_0x4f328a[_0x7383('0xbb')]=_0x88b57;return _0x4f328a;})[_0x7383('0x1d')](respondWithFilteredResult(_0x3c3bd9,_0x34513c))[_0x7383('0x2e')](handleError(_0x3c3bd9,null));};exports[_0x7383('0xbc')]=function(_0xcb7347,_0x5834b9){var _0x1f30f4={'raw':![],'where':{'id':_0xcb7347[_0x7383('0xbd')]['id']}},_0x5ccfaf={};_0x5ccfaf['model']=_[_0x7383('0xbe')](db[_0x7383('0x99')][_0x7383('0x37')]);_0x5ccfaf[_0x7383('0x3b')]=_[_0x7383('0xbe')](_0xcb7347[_0x7383('0x3b')]);_0x5ccfaf[_0x7383('0x3c')]=_['intersection'](_0x5ccfaf[_0x7383('0x3e')],_0x5ccfaf['query']);_0x1f30f4['attributes']=_[_0x7383('0x3d')](_0x5ccfaf[_0x7383('0x3e')],qs[_0x7383('0x40')](_0xcb7347['query'][_0x7383('0x40')]));_0x1f30f4[_0x7383('0x3f')]=_0x1f30f4[_0x7383('0x3f')]['length']?_0x1f30f4['attributes']:_0x5ccfaf[_0x7383('0x3e')];if(_0xcb7347[_0x7383('0x3b')][_0x7383('0xbf')]){_0x1f30f4[_0x7383('0xc0')]=[{'all':!![]}];}_0x1f30f4=_[_0x7383('0xc1')]({},_0x1f30f4,_0xcb7347[_0x7383('0xc2')]);return db[_0x7383('0x99')]['find'](_0x1f30f4)[_0x7383('0x1d')](handleEntityNotFound(_0x5834b9,null))[_0x7383('0x1d')](respondWithResult(_0x5834b9,null))[_0x7383('0x2e')](handleError(_0x5834b9,null));};exports[_0x7383('0xc3')]=function(_0x5a8eac,_0x3f21e9){return db[_0x7383('0x99')][_0x7383('0xc3')](_0x5a8eac[_0x7383('0xc4')],{})[_0x7383('0x1d')](respondWithResult(_0x3f21e9,0xc9))[_0x7383('0x2e')](handleError(_0x3f21e9,null));};exports[_0x7383('0x1c')]=function(_0x3c04c3,_0x2aaf9){if(_0x3c04c3[_0x7383('0xc4')]['id']){delete _0x3c04c3[_0x7383('0xc4')]['id'];}return db[_0x7383('0x99')][_0x7383('0x5c')]({'where':{'id':_0x3c04c3[_0x7383('0xbd')]['id']}})[_0x7383('0x1d')](handleEntityNotFound(_0x2aaf9,null))[_0x7383('0x1d')](saveUpdates(_0x3c04c3[_0x7383('0xc4')],null))[_0x7383('0x1d')](respondWithResult(_0x2aaf9,null))[_0x7383('0x2e')](handleError(_0x2aaf9,null));};exports[_0x7383('0x1e')]=function(_0x1284b4,_0x174eb7){return db['MailInteraction'][_0x7383('0x5c')]({'where':{'id':_0x1284b4[_0x7383('0xbd')]['id']}})['then'](handleEntityNotFound(_0x174eb7,null))[_0x7383('0x1d')](removeEntity(_0x174eb7,null))[_0x7383('0x2e')](handleError(_0x174eb7,null));};exports[_0x7383('0xc5')]=function(_0x1ed6c1,_0x14cd58){return db[_0x7383('0x99')][_0x7383('0xc5')]()[_0x7383('0x1d')](respondWithResult(_0x14cd58,null))[_0x7383('0x2e')](handleError(_0x14cd58,null));};exports[_0x7383('0xc6')]=function(_0x13754f,_0x306c2b){return db[_0x7383('0xc7')][_0x7383('0x5c')]({'where':{'id':_0x13754f[_0x7383('0xbd')]['id']}})['then'](handleEntityNotFound(_0x306c2b,null))['then'](function(_0x127b6a){if(_0x127b6a){return _0x127b6a[_0x7383('0xc6')](_0x13754f['body']['ids'],_[_0x7383('0xc8')](_0x13754f[_0x7383('0xc4')],['ids','id'])||{});}})[_0x7383('0x1d')](respondWithResult(_0x306c2b,null))[_0x7383('0x2e')](handleError(_0x306c2b,null));};exports['getMessages']=function(_0x4d121b,_0x13b4b6){var _0x18c04c={'raw':![],'where':{}};var _0xe210de={};var _0x1a1cf4={'count':0x0,'rows':[]};return db[_0x7383('0x99')]['findOne']({'where':{'id':_0x4d121b[_0x7383('0xbd')]['id']}})[_0x7383('0x1d')](handleEntityNotFound(_0x13b4b6,null))[_0x7383('0x1d')](function(_0x496bb9){if(_0x496bb9){_0xe210de[_0x7383('0x3e')]=_[_0x7383('0xbe')](db[_0x7383('0xc7')]['rawAttributes']);_0xe210de[_0x7383('0x3b')]=_[_0x7383('0xbe')](_0x4d121b['query']);_0xe210de[_0x7383('0x3c')]=_[_0x7383('0x3d')](_0xe210de[_0x7383('0x3e')],_0xe210de[_0x7383('0x3b')]);_0x18c04c[_0x7383('0x3f')]=_[_0x7383('0x3d')](_0xe210de[_0x7383('0x3e')],qs[_0x7383('0x40')](_0x4d121b[_0x7383('0x3b')][_0x7383('0x40')]));_0x18c04c[_0x7383('0x3f')]=_0x18c04c[_0x7383('0x3f')]['length']?_0x18c04c[_0x7383('0x3f')]:_0xe210de[_0x7383('0x3e')];if(!_0x4d121b[_0x7383('0x3b')][_0x7383('0x41')](_0x7383('0xc9'))){_0x18c04c[_0x7383('0x18')]=qs['limit'](_0x4d121b[_0x7383('0x3b')][_0x7383('0x18')]);_0x18c04c[_0x7383('0x16')]=qs['offset'](_0x4d121b[_0x7383('0x3b')]['offset']);}_0x18c04c[_0x7383('0x42')]=qs['sort'](_0x4d121b[_0x7383('0x3b')][_0x7383('0x43')]);_0x18c04c[_0x7383('0x44')]=qs[_0x7383('0x3c')](_[_0x7383('0x45')](_0x4d121b['query'],_0xe210de[_0x7383('0x3c')]));_0x18c04c[_0x7383('0x44')][_0x7383('0xca')]=_0x496bb9['id'];if(_0x4d121b[_0x7383('0x3b')][_0x7383('0x80')]){_0x18c04c['where']=_[_0x7383('0xc1')](_0x18c04c[_0x7383('0x44')],{'$or':_[_0x7383('0x22')](_0x18c04c[_0x7383('0x3f')],function(_0x186768){var _0x47b04b={};_0x47b04b[_0x186768]={'$like':'%'+_0x4d121b['query'][_0x7383('0x80')]+'%'};return _0x47b04b;})});}if(_0x4d121b[_0x7383('0x3b')][_0x7383('0x78')]){var _0x3a699c=_0x4d121b[_0x7383('0x3b')][_0x7383('0x78')]['split'](',');var _0x5638b9={};_0x5638b9[_0x3a699c[0x0]]={'$gte':moment(_0x3a699c[0x1])[_0x7383('0xcb')](_0x7383('0xcc'))};_0x18c04c[_0x7383('0x44')]=_[_0x7383('0xc1')](_0x18c04c[_0x7383('0x44')],_0x5638b9);}_0x18c04c=_[_0x7383('0xc1')]({},_0x18c04c,_0x4d121b['options']);return db[_0x7383('0xc7')][_0x7383('0x19')]({'where':_0x18c04c[_0x7383('0x44')]})[_0x7383('0x1d')](function(_0x3fbb63){_0x1a1cf4['count']=_0x3fbb63;if(_0x4d121b['query'][_0x7383('0xbf')]){_0x18c04c[_0x7383('0xc0')]=[{'all':!![]}];}return db[_0x7383('0xc7')][_0x7383('0xcd')](_0x18c04c);})[_0x7383('0x1d')](function(_0x26df26){if(_0x4d121b[_0x7383('0x3b')][_0x7383('0xce')]===_0x7383('0xcf')){for(var _0x14921c=0x0;_0x14921c<_0x26df26[_0x7383('0x62')];_0x14921c++){_0x26df26[_0x14921c][_0x7383('0xc4')]=juice(_0x26df26[_0x14921c][_0x7383('0xc4')]);}}_0x1a1cf4[_0x7383('0xbb')]=_0x26df26;return _0x1a1cf4;});}})[_0x7383('0x1d')](respondWithFilteredResult(_0x13b4b6,_0x18c04c))['catch'](handleError(_0x13b4b6,null));};exports[_0x7383('0xd0')]=function(_0x1faf7d,_0x333158){return db['MailInteraction'][_0x7383('0x5c')]({'where':{'id':_0x1faf7d[_0x7383('0xbd')]['id']}})[_0x7383('0x1d')](handleEntityNotFound(_0x333158,null))[_0x7383('0x1d')](function(_0x14cddf){if(_0x14cddf){return _0x14cddf['setTags'](_0x1faf7d[_0x7383('0xc4')][_0x7383('0xd1')],_[_0x7383('0xc8')](_0x1faf7d[_0x7383('0xc4')],[_0x7383('0xd1'),'id'])||{})['spread'](function(){return db[_0x7383('0x6a')]['findAll']({'attributes':['id',_0x7383('0x20'),_0x7383('0xd2')],'where':{'id':_0x1faf7d[_0x7383('0xc4')][_0x7383('0xd1')]}});})[_0x7383('0x1d')](function(_0x1be9ea){socket[_0x7383('0xd3')]('mailInteractionTags:save',{'id':Number(_0x1faf7d[_0x7383('0xbd')]['id']),'tags':_0x1be9ea||[]});return{'id':Number(_0x1faf7d['params']['id']),'tags':_0x1be9ea||[]};});}})[_0x7383('0x1d')](respondWithResult(_0x333158,null))[_0x7383('0x2e')](handleError(_0x333158,null));};exports[_0x7383('0xd4')]=function(_0x41f952,_0x40fbb6){return db[_0x7383('0x99')]['find']({'where':{'id':_0x41f952[_0x7383('0xbd')]['id']}})[_0x7383('0x1d')](handleEntityNotFound(_0x40fbb6,null))[_0x7383('0x1d')](function(_0x384dc1){if(_0x384dc1){return _0x384dc1[_0x7383('0xd4')](_0x41f952[_0x7383('0x3b')][_0x7383('0xd1')]);}})[_0x7383('0x1d')](respondWithStatusCode(_0x40fbb6,null))[_0x7383('0x2e')](handleError(_0x40fbb6,null));};exports[_0x7383('0xd5')]=function(_0x49e0b0,_0x2f0e5e){var _0xc2d12=moment()[_0x7383('0xd6')]()['toString']();var _0x3f3c7d=path[_0x7383('0xd7')](config[_0x7383('0xd8')],_0x7383('0xd9'),_0x7383('0xda'),_0x7383('0xdb'));var _0x23f9fe=path[_0x7383('0xd7')](config[_0x7383('0xd8')],_0x7383('0xd9'),_0x7383('0xda'),'attachments');var _0x3700ea=path['join'](_0x3f3c7d,_0xc2d12);var _0x87a645=util[_0x7383('0xcb')]('transcript-%d-%s.zip',_0x49e0b0[_0x7383('0xbd')]['id'],_0xc2d12);var _0x424c95=path[_0x7383('0xd7')](_0x3f3c7d,_0x87a645);var _0x11188a=[];if(_0x49e0b0[_0x7383('0x3b')][_0x7383('0xdc')]){_0x11188a['push']({'model':db[_0x7383('0xdd')],'as':'Attachments','raw':!![]});}var _0x17659b=[{'model':db[_0x7383('0xc7')],'as':_0x7383('0xde'),'attributes':['id',_0x7383('0xc4'),_0x7383('0x47'),'to','cc',_0x7383('0xdf'),_0x7383('0xe0'),'createdAt'],'where':{'secret':![]},'order':qs[_0x7383('0x43')]('id'),'include':_0x11188a}];return db['MailInteraction']['find']({'where':{'id':_0x49e0b0[_0x7383('0xbd')]['id']},'include':_0x17659b})[_0x7383('0x1d')](handleEntityNotFound(_0x2f0e5e,null))[_0x7383('0x1d')](function(_0x39e728){if(_0x39e728&&_0x39e728[_0x7383('0xde')]){var _0x1d67ea=_0x39e728[_0x7383('0xe1')]({'plain':!![]});fs['mkdirSync'](_0x3700ea);return BPromise['each'](_0x1d67ea['Messages'],function(_0x1fce7a,_0x59da1f){var _0x38c9f6={'from':_0x1fce7a['from'],'to':_0x1fce7a['to'],'subject':_0x1fce7a['subject'],'html':htmlEntities[_0x7383('0xe2')](_0x1fce7a['body']),'headers':{'Date':moment(_0x1fce7a[_0x7383('0x76')])[_0x7383('0xcb')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x1fce7a['cc']){_0x38c9f6['headers']['Cc']=_0x1fce7a['cc'];}if(_0x1fce7a[_0x7383('0xdf')]){_0x38c9f6['headers'][_0x7383('0xe3')]=_0x1fce7a[_0x7383('0xdf')];}return new BPromise(function(_0x5d902c,_0x35a06e){if(_0x1fce7a[_0x7383('0xe4')]){for(var _0x5603b2=0x0;_0x5603b2<_0x1fce7a['Attachments'][_0x7383('0x62')];_0x5603b2++){var _0xeb9d88=_0x1fce7a['Attachments'][_0x5603b2];var _0xec4bc4=path['join'](_0x23f9fe,_0xeb9d88[_0x7383('0xe5')]);if(fs['existsSync'](_0xec4bc4)){_0x38c9f6[_0x7383('0xdc')]['push']({'name':_0xeb9d88[_0x7383('0x20')],'contentType':_0xeb9d88[_0x7383('0x39')],'data':fs[_0x7383('0xe6')](_0xec4bc4)});}}}emlformat[_0x7383('0xe7')](_0x38c9f6,function(_0x139ee5,_0xfb0187){if(_0x139ee5)return _0x35a06e(_0x139ee5);fs[_0x7383('0xe8')](path['join'](_0x3700ea,util[_0x7383('0xcb')](_0x7383('0xe9'),_0x59da1f)),_0xfb0187);return _0x5d902c(_0xfb0187);});});})['then'](function(){return new BPromise(function(_0x33fead,_0x5b2534){zipdir(_0x3700ea,{'saveTo':_0x424c95},function(_0x8aed4e,_0x175631){if(_0x8aed4e)return _0x5b2534(_0x8aed4e);return _0x33fead(_0x175631);});})['then'](function(){return new BPromise(function(_0x4584d0,_0x5a3a7d){rimraf(_0x3700ea,function(_0x405962){if(_0x405962)_0x5a3a7d(_0x405962);return _0x4584d0();});});})[_0x7383('0x1d')](function(){return _0x2f0e5e['download'](_0x424c95,_0x87a645,function(_0x418ca2){if(!_0x418ca2)fs[_0x7383('0xea')](_0x424c95);});});});}else{return _0x2f0e5e[_0x7383('0x12')](0xc8);}})[_0x7383('0x2e')](handleError(_0x2f0e5e,null));};
\ No newline at end of file
index e4d0b0c..b8ba9cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0ee=['MailMessage','setMaxListeners','save','remove','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','exports','events','../../mysqldb','MailInteraction'];(function(_0x58997a,_0x5903fd){var _0x11b02a=function(_0x8ff015){while(--_0x8ff015){_0x58997a['push'](_0x58997a['shift']());}};_0x11b02a(++_0x5903fd);}(_0xd0ee,0x19b));var _0xed0e=function(_0x56e3ff,_0x4f952f){_0x56e3ff=_0x56e3ff-0x0;var _0xa15e30=_0xd0ee[_0x56e3ff];return _0xa15e30;};'use strict';var EventEmitter=require(_0xed0e('0x0'));var MailInteraction=require(_0xed0e('0x1'))['db'][_0xed0e('0x2')];var MailMessage=require(_0xed0e('0x1'))['db'][_0xed0e('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0xed0e('0x4')](0x0);var events={'afterCreate':_0xed0e('0x5'),'afterUpdate':'update','afterDestroy':_0xed0e('0x6')};function emitEvent(_0xa688d5){return function(_0x3577b4,_0x597741,_0x4de43c){_0x3577b4[_0xed0e('0x7')]({'attributes':['id'],'raw':!![]})[_0xed0e('0x8')](function(_0x25759a){_0x3577b4[_0xed0e('0x9')](_0xed0e('0xa'),_0x25759a[_0xed0e('0xb')](function(_0x268500){return{'id':_0x268500['id']};}));return MailMessage[_0xed0e('0xc')]({'where':{'MailInteractionId':_0x3577b4['id'],'direction':'in','read':![]},'raw':!![]});})[_0xed0e('0x8')](function(_0x5a11f9){_0x3577b4[_0xed0e('0x9')](_0xed0e('0xd'),_0x5a11f9[_0xed0e('0xe')]);MailInteractionEvents['emit'](_0xa688d5+':'+_0x3577b4['id'],_0x3577b4);MailInteractionEvents[_0xed0e('0xf')](_0xa688d5,_0x3577b4);_0x4de43c(null);})[_0xed0e('0x10')](_0x4de43c(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailInteraction['hook'](e,emitEvent(event));}}module[_0xed0e('0x11')]=MailInteractionEvents;
\ No newline at end of file
+var _0x1703=['setDataValue','Users','map','findAll','then','unreadMessages','length','emit','hasOwnProperty','exports','../../mysqldb','MailMessage','setMaxListeners','save','update','getUsers'];(function(_0x1a5490,_0x147fb3){var _0x4b4076=function(_0x55c39b){while(--_0x55c39b){_0x1a5490['push'](_0x1a5490['shift']());}};_0x4b4076(++_0x147fb3);}(_0x1703,0x16a));var _0x3170=function(_0x2c3b5e,_0x1434ea){_0x2c3b5e=_0x2c3b5e-0x0;var _0x98e7e8=_0x1703[_0x2c3b5e];return _0x98e7e8;};'use strict';var EventEmitter=require('events');var MailInteraction=require(_0x3170('0x0'))['db']['MailInteraction'];var MailMessage=require(_0x3170('0x0'))['db'][_0x3170('0x1')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x3170('0x2')](0x0);var events={'afterCreate':_0x3170('0x3'),'afterUpdate':_0x3170('0x4'),'afterDestroy':'remove'};function emitEvent(_0x46dead){return function(_0x48a6c2,_0x3f62fc,_0x4254a3){_0x48a6c2[_0x3170('0x5')]({'attributes':['id'],'raw':!![]})['then'](function(_0x92e8d2){_0x48a6c2[_0x3170('0x6')](_0x3170('0x7'),_0x92e8d2[_0x3170('0x8')](function(_0x93395c){return{'id':_0x93395c['id']};}));return MailMessage[_0x3170('0x9')]({'where':{'MailInteractionId':_0x48a6c2['id'],'direction':'in','read':![]},'raw':!![]});})[_0x3170('0xa')](function(_0x5dea31){_0x48a6c2['setDataValue'](_0x3170('0xb'),_0x5dea31[_0x3170('0xc')]);MailInteractionEvents[_0x3170('0xd')](_0x46dead+':'+_0x48a6c2['id'],_0x48a6c2);MailInteractionEvents[_0x3170('0xd')](_0x46dead,_0x48a6c2);_0x4254a3(null);})['catch'](_0x4254a3(null));};}for(var e in events){if(events[_0x3170('0xe')](e)){var event=events[e];MailInteraction['hook'](e,emitEvent(event));}}module[_0x3170('0xf')]=MailInteractionEvents;
\ No newline at end of file
index affc394..dd9e311 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79e9=['changed','models','get','update','then','catch','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','exports','define','MailInteraction','mail_interactions','subject','FULLTEXT','substatus','substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt'];(function(_0x1d79e2,_0xb36e2a){var _0x4aeed3=function(_0x9211b5){while(--_0x9211b5){_0x1d79e2['push'](_0x1d79e2['shift']());}};_0x4aeed3(++_0xb36e2a);}(_0x79e9,0x1b7));var _0x979e=function(_0x209801,_0x3dca07){_0x209801=_0x209801-0x0;var _0x593d6c=_0x79e9[_0x209801];return _0x593d6c;};'use strict';var _=require(_0x979e('0x0'));var util=require('util');var logger=require(_0x979e('0x1'))(_0x979e('0x2'));var moment=require(_0x979e('0x3'));var BPromise=require(_0x979e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x979e('0x5'));var rimraf=require(_0x979e('0x6'));var config=require(_0x979e('0x7'));var attributes=require('./mailInteraction.attributes');module[_0x979e('0x8')]=function(_0x5adda4,_0x4ea3e8){return _0x5adda4[_0x979e('0x9')](_0x979e('0xa'),attributes,{'tableName':_0x979e('0xb'),'paranoid':![],'indexes':[{'name':'fti_mail_interactions','fields':[_0x979e('0xc'),'to'],'type':_0x979e('0xd')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x22d807,_0x21ed4a,_0x3e6a7d){if(_0x22d807[_0x979e('0xe')]){_0x22d807[_0x979e('0xf')]=moment()[_0x979e('0x10')](_0x979e('0x11'));}if(_0x22d807[_0x979e('0x12')]){_0x22d807[_0x979e('0x13')]=moment()[_0x979e('0x10')](_0x979e('0x11'));}_0x3e6a7d(null,_0x21ed4a);},'beforeUpdate':function(_0x3ddef2,_0x333676,_0xfe6313){if(_0x3ddef2[_0x979e('0x14')]('substatus')){_0x3ddef2[_0x979e('0xf')]=_0x3ddef2[_0x979e('0xe')]?moment()[_0x979e('0x10')](_0x979e('0x11')):null;}if(_0x3ddef2[_0x979e('0x14')]('closed')){_0x3ddef2['closedAt']=moment()[_0x979e('0x10')](_0x979e('0x11'));_0x3ddef2[_0x979e('0xe')]=null;_0x3ddef2[_0x979e('0xf')]=null;}_0xfe6313(null,_0x3ddef2);},'afterUpdate':function(_0x217666,_0x9cf273,_0x681aa){var _0x40057=_0x5adda4[_0x979e('0x15')];var _0xf59e5e=_0x217666[_0x979e('0x16')]({'plain':!![]});if(_0xf59e5e[_0x979e('0x12')]){return _0x40057['MailMessage'][_0x979e('0x17')]({'read':!![]},{'where':{'MailInteractionId':_0xf59e5e['id']}})[_0x979e('0x18')](function(){_0x681aa();})[_0x979e('0x19')](function(_0x42050f){_0x681aa(_0x42050f);});}else{_0x681aa();}}},'charset':'utf8mb4','collate':_0x979e('0x1a')});};
\ No newline at end of file
+var _0xae59=['changed','substatus','closed','models','MailMessage','update','then','utf8mb4','utf8mb4_unicode_ci','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','mail_interactions','subject','FULLTEXT','substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','closedAt'];(function(_0x2cc348,_0x56c5ea){var _0x3ad6d5=function(_0x513f90){while(--_0x513f90){_0x2cc348['push'](_0x2cc348['shift']());}};_0x3ad6d5(++_0x56c5ea);}(_0xae59,0x71));var _0x9ae5=function(_0x4c99ee,_0x2d8768){_0x4c99ee=_0x4c99ee-0x0;var _0x24bc5f=_0xae59[_0x4c99ee];return _0x24bc5f;};'use strict';var _=require(_0x9ae5('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x9ae5('0x1'));var moment=require(_0x9ae5('0x2'));var BPromise=require(_0x9ae5('0x3'));var rp=require(_0x9ae5('0x4'));var fs=require('fs');var path=require(_0x9ae5('0x5'));var rimraf=require(_0x9ae5('0x6'));var config=require(_0x9ae5('0x7'));var attributes=require('./mailInteraction.attributes');module[_0x9ae5('0x8')]=function(_0x5d9802,_0x2a9c56){return _0x5d9802[_0x9ae5('0x9')]('MailInteraction',attributes,{'tableName':_0x9ae5('0xa'),'paranoid':![],'indexes':[{'name':'fti_mail_interactions','fields':[_0x9ae5('0xb'),'to'],'type':_0x9ae5('0xc')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x403ec7,_0x483b1e,_0x39e4df){if(_0x403ec7['substatus']){_0x403ec7[_0x9ae5('0xd')]=moment()[_0x9ae5('0xe')](_0x9ae5('0xf'));}if(_0x403ec7['closed']){_0x403ec7[_0x9ae5('0x10')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x39e4df(null,_0x483b1e);},'beforeUpdate':function(_0x4401b3,_0xbba68d,_0x532a71){if(_0x4401b3[_0x9ae5('0x11')](_0x9ae5('0x12'))){_0x4401b3['substatusAt']=_0x4401b3[_0x9ae5('0x12')]?moment()[_0x9ae5('0xe')](_0x9ae5('0xf')):null;}if(_0x4401b3[_0x9ae5('0x11')](_0x9ae5('0x13'))){_0x4401b3[_0x9ae5('0x10')]=moment()[_0x9ae5('0xe')]('YYYY-MM-DD\x20HH:mm:ss');_0x4401b3['substatus']=null;_0x4401b3[_0x9ae5('0xd')]=null;}_0x532a71(null,_0x4401b3);},'afterUpdate':function(_0x14338a,_0x5554a9,_0x228b50){var _0x2da432=_0x5d9802[_0x9ae5('0x14')];var _0x4f7079=_0x14338a['get']({'plain':!![]});if(_0x4f7079[_0x9ae5('0x13')]){return _0x2da432[_0x9ae5('0x15')][_0x9ae5('0x16')]({'read':!![]},{'where':{'MailInteractionId':_0x4f7079['id']}})[_0x9ae5('0x17')](function(){_0x228b50();})['catch'](function(_0x348238){_0x228b50(_0x348238);});}else{_0x228b50();}}},'charset':_0x9ae5('0x18'),'collate':_0x9ae5('0x19')});};
\ No newline at end of file
index c13dc2c..735ff90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7e1=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','register','info','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','UpdateMailInteraction','MailInteraction','update','options','raw','attributes','then','where','body','ids','spread','AddTags','lodash','util'];(function(_0x5cfcb8,_0x4521b5){var _0x190f68=function(_0x1bad3c){while(--_0x1bad3c){_0x5cfcb8['push'](_0x5cfcb8['shift']());}};_0x190f68(++_0x4521b5);}(_0xc7e1,0x15d));var _0x1c7e=function(_0x12976d,_0x185633){_0x12976d=_0x12976d-0x0;var _0x1481c7=_0xc7e1[_0x12976d];return _0x1481c7;};'use strict';var _=require(_0x1c7e('0x0'));var util=require(_0x1c7e('0x1'));var moment=require(_0x1c7e('0x2'));var BPromise=require(_0x1c7e('0x3'));var rs=require(_0x1c7e('0x4'));var fs=require('fs');var Redis=require(_0x1c7e('0x5'));var db=require(_0x1c7e('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x1c7e('0x7'))(_0x1c7e('0x8'));var config=require(_0x1c7e('0x9'));var jayson=require(_0x1c7e('0xa'));var client=jayson['client'][_0x1c7e('0xb')]({'port':0x232a});config[_0x1c7e('0xc')]=_[_0x1c7e('0xd')](config['redis'],{'host':_0x1c7e('0xe'),'port':0x18eb});var socket=require(_0x1c7e('0xf'))(new Redis(config[_0x1c7e('0xc')]));require(_0x1c7e('0x10'))[_0x1c7e('0x11')](socket);function respondWithRpcPromise(_0x2a86de,_0x11c7e5,_0x3cb68c){return new BPromise(function(_0x3ad47b,_0x32a1c1){return client['request'](_0x2a86de,_0x3cb68c)['then'](function(_0x456399){logger[_0x1c7e('0x12')](_0x1c7e('0x13'),_0x11c7e5,_0x1c7e('0x14'));logger[_0x1c7e('0x15')]('MailInteraction,\x20%s,\x20%s,\x20%s',_0x11c7e5,_0x1c7e('0x14'),JSON[_0x1c7e('0x16')](_0x456399));if(_0x456399[_0x1c7e('0x17')]){if(_0x456399[_0x1c7e('0x17')]['code']===0x1f4){logger[_0x1c7e('0x17')](_0x1c7e('0x13'),_0x11c7e5,_0x456399[_0x1c7e('0x17')][_0x1c7e('0x18')]);return _0x32a1c1(_0x456399[_0x1c7e('0x17')][_0x1c7e('0x18')]);}logger['error'](_0x1c7e('0x13'),_0x11c7e5,_0x456399['error'][_0x1c7e('0x18')]);return _0x3ad47b(_0x456399[_0x1c7e('0x17')][_0x1c7e('0x18')]);}else{logger[_0x1c7e('0x12')]('MailInteraction,\x20%s,\x20%s',_0x11c7e5,_0x1c7e('0x14'));_0x3ad47b(_0x456399[_0x1c7e('0x19')][_0x1c7e('0x18')]);}})[_0x1c7e('0x1a')](function(_0x2cea9b){logger['error'](_0x1c7e('0x13'),_0x11c7e5,_0x2cea9b);_0x32a1c1(_0x2cea9b);});});}exports[_0x1c7e('0x1b')]=function(_0x1e8ef1){var _0x1b3632=this;return new Promise(function(_0x337d1b,_0x329509){return db[_0x1c7e('0x1c')][_0x1c7e('0x1d')](_0x1e8ef1['body'],{'raw':_0x1e8ef1['options']?_0x1e8ef1[_0x1c7e('0x1e')][_0x1c7e('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1e8ef1[_0x1c7e('0x1e')]?_0x1e8ef1['options']['where']||null:null,'attributes':_0x1e8ef1[_0x1c7e('0x1e')]?_0x1e8ef1['options'][_0x1c7e('0x20')]||null:null,'limit':_0x1e8ef1['options']?_0x1e8ef1[_0x1c7e('0x1e')]['limit']||null:null})[_0x1c7e('0x21')](function(_0x299662){logger[_0x1c7e('0x12')](_0x1c7e('0x1b'),_0x1e8ef1);logger[_0x1c7e('0x15')](_0x1c7e('0x1b'),_0x1e8ef1,JSON['stringify'](_0x299662));_0x337d1b(_0x299662);})[_0x1c7e('0x1a')](function(_0x28b758){logger[_0x1c7e('0x17')](_0x1c7e('0x1b'),_0x28b758[_0x1c7e('0x18')],_0x1e8ef1);_0x329509(_0x1b3632[_0x1c7e('0x17')](0x1f4,_0x28b758[_0x1c7e('0x18')]));});});};exports['AddTagsToMailInteraction']=function(_0x4879c9){return new Promise(function(_0x4eba2f,_0xb6a4cf){return db[_0x1c7e('0x1c')]['find']({'where':_0x4879c9[_0x1c7e('0x1e')]?_0x4879c9['options'][_0x1c7e('0x22')]||null:null})[_0x1c7e('0x21')](function(_0x16ac04){if(_0x16ac04){return _0x16ac04['addTags'](_0x4879c9[_0x1c7e('0x23')][_0x1c7e('0x24')],_['omit'](_0x4879c9[_0x1c7e('0x23')],[_0x1c7e('0x24'),'id'])||{});}})[_0x1c7e('0x25')](function(_0xcac1d3){logger[_0x1c7e('0x12')](_0x1c7e('0x26'),_0x4879c9);logger['debug'](_0x1c7e('0x26'),_0x4879c9,JSON[_0x1c7e('0x16')](_0xcac1d3));_0x4eba2f(_0xcac1d3);})[_0x1c7e('0x1a')](function(_0x2f01d7){logger[_0x1c7e('0x17')](_0x1c7e('0x26'),_0x2f01d7[_0x1c7e('0x18')],_0x4879c9);_0xb6a4cf(_this[_0x1c7e('0x17')](0x1f4,_0x2f01d7[_0x1c7e('0x18')]));});});};
\ No newline at end of file
+var _0x1e05=['MailInteraction','update','body','options','raw','where','attributes','limit','AddTagsToMailInteraction','find','then','addTags','ids','omit','spread','AddTags','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./mailInteraction.socket','register','request','info','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateMailInteraction'];(function(_0x27f2cb,_0x49724f){var _0x35117d=function(_0x1be369){while(--_0x1be369){_0x27f2cb['push'](_0x27f2cb['shift']());}};_0x35117d(++_0x49724f);}(_0x1e05,0x170));var _0x51e0=function(_0x1a13b1,_0x4d1d25){_0x1a13b1=_0x1a13b1-0x0;var _0x395e05=_0x1e05[_0x1a13b1];return _0x395e05;};'use strict';var _=require(_0x51e0('0x0'));var util=require(_0x51e0('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x51e0('0x2'));var fs=require('fs');var Redis=require(_0x51e0('0x3'));var db=require(_0x51e0('0x4'))['db'];var utils=require(_0x51e0('0x5'));var logger=require('../../config/logger')(_0x51e0('0x6'));var config=require(_0x51e0('0x7'));var jayson=require(_0x51e0('0x8'));var client=jayson[_0x51e0('0x9')][_0x51e0('0xa')]({'port':0x232a});config[_0x51e0('0xb')]=_['defaults'](config['redis'],{'host':_0x51e0('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x51e0('0xd'))[_0x51e0('0xe')](socket);function respondWithRpcPromise(_0x51b4ed,_0x51cb9e,_0x14424e){return new BPromise(function(_0x5ce89f,_0x5b8c58){return client[_0x51e0('0xf')](_0x51b4ed,_0x14424e)['then'](function(_0x4af567){logger[_0x51e0('0x10')](_0x51e0('0x11'),_0x51cb9e,_0x51e0('0x12'));logger[_0x51e0('0x13')](_0x51e0('0x14'),_0x51cb9e,'request\x20sent',JSON[_0x51e0('0x15')](_0x4af567));if(_0x4af567[_0x51e0('0x16')]){if(_0x4af567[_0x51e0('0x16')][_0x51e0('0x17')]===0x1f4){logger['error'](_0x51e0('0x11'),_0x51cb9e,_0x4af567['error'][_0x51e0('0x18')]);return _0x5b8c58(_0x4af567[_0x51e0('0x16')]['message']);}logger[_0x51e0('0x16')](_0x51e0('0x11'),_0x51cb9e,_0x4af567[_0x51e0('0x16')][_0x51e0('0x18')]);return _0x5ce89f(_0x4af567[_0x51e0('0x16')][_0x51e0('0x18')]);}else{logger[_0x51e0('0x10')](_0x51e0('0x11'),_0x51cb9e,'request\x20sent');_0x5ce89f(_0x4af567[_0x51e0('0x19')][_0x51e0('0x18')]);}})[_0x51e0('0x1a')](function(_0x88194a){logger[_0x51e0('0x16')]('MailInteraction,\x20%s,\x20%s',_0x51cb9e,_0x88194a);_0x5b8c58(_0x88194a);});});}exports[_0x51e0('0x1b')]=function(_0x231fe3){var _0x1c1826=this;return new Promise(function(_0x26a77b,_0x4ae272){return db[_0x51e0('0x1c')][_0x51e0('0x1d')](_0x231fe3[_0x51e0('0x1e')],{'raw':_0x231fe3[_0x51e0('0x1f')]?_0x231fe3[_0x51e0('0x1f')][_0x51e0('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x231fe3[_0x51e0('0x1f')]?_0x231fe3['options'][_0x51e0('0x21')]||null:null,'attributes':_0x231fe3['options']?_0x231fe3[_0x51e0('0x1f')][_0x51e0('0x22')]||null:null,'limit':_0x231fe3['options']?_0x231fe3[_0x51e0('0x1f')][_0x51e0('0x23')]||null:null})['then'](function(_0x5e7d23){logger[_0x51e0('0x10')](_0x51e0('0x1b'),_0x231fe3);logger['debug'](_0x51e0('0x1b'),_0x231fe3,JSON[_0x51e0('0x15')](_0x5e7d23));_0x26a77b(_0x5e7d23);})[_0x51e0('0x1a')](function(_0x48e8af){logger[_0x51e0('0x16')](_0x51e0('0x1b'),_0x48e8af[_0x51e0('0x18')],_0x231fe3);_0x4ae272(_0x1c1826[_0x51e0('0x16')](0x1f4,_0x48e8af[_0x51e0('0x18')]));});});};exports[_0x51e0('0x24')]=function(_0x3f8101){return new Promise(function(_0x53bd3d,_0x4f4ce9){return db[_0x51e0('0x1c')][_0x51e0('0x25')]({'where':_0x3f8101[_0x51e0('0x1f')]?_0x3f8101[_0x51e0('0x1f')][_0x51e0('0x21')]||null:null})[_0x51e0('0x26')](function(_0x1c2e28){if(_0x1c2e28){return _0x1c2e28[_0x51e0('0x27')](_0x3f8101[_0x51e0('0x1e')][_0x51e0('0x28')],_[_0x51e0('0x29')](_0x3f8101['body'],[_0x51e0('0x28'),'id'])||{});}})[_0x51e0('0x2a')](function(_0x5f48d5){logger[_0x51e0('0x10')]('AddTags',_0x3f8101);logger['debug'](_0x51e0('0x2b'),_0x3f8101,JSON[_0x51e0('0x15')](_0x5f48d5));_0x53bd3d(_0x5f48d5);})[_0x51e0('0x1a')](function(_0x3e7a52){logger['error'](_0x51e0('0x2b'),_0x3e7a52[_0x51e0('0x18')],_0x3f8101);_0x4f4ce9(_this[_0x51e0('0x16')](0x1f4,_0x3e7a52[_0x51e0('0x18')]));});});};
\ No newline at end of file
index 59d5449..a33c0ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8b0=['update','emit','length','./mailInteraction.events','save','remove'];(function(_0x5baafb,_0x54a754){var _0x3b592d=function(_0xc821b5){while(--_0xc821b5){_0x5baafb['push'](_0x5baafb['shift']());}};_0x3b592d(++_0x54a754);}(_0xe8b0,0xc9));var _0x0e8b=function(_0x53047b,_0x31d719){_0x53047b=_0x53047b-0x0;var _0x5d77c7=_0xe8b0[_0x53047b];return _0x5d77c7;};'use strict';var MailInteractionEvents=require(_0x0e8b('0x0'));var events=[_0x0e8b('0x1'),_0x0e8b('0x2'),_0x0e8b('0x3')];function createListener(_0x31b3cb,_0x11c71f){return function(_0x41559f){_0x11c71f[_0x0e8b('0x4')](_0x31b3cb,_0x41559f);};}function removeListener(_0x555d6f,_0x59b574){return function(){MailInteractionEvents['removeListener'](_0x555d6f,_0x59b574);};}exports['register']=function(_0x35ce5f){for(var _0xdf36fb=0x0,_0x39deab=events[_0x0e8b('0x5')];_0xdf36fb<_0x39deab;_0xdf36fb++){var _0x4c9e54=events[_0xdf36fb];var _0x12a7d5=createListener('mailInteraction:'+_0x4c9e54,_0x35ce5f);MailInteractionEvents['on'](_0x4c9e54,_0x12a7d5);}};
\ No newline at end of file
+var _0x4157=['register','length','mailInteraction:','./mailInteraction.events','save','remove','emit','removeListener'];(function(_0x3549fa,_0x57b558){var _0x306723=function(_0x46afd0){while(--_0x46afd0){_0x3549fa['push'](_0x3549fa['shift']());}};_0x306723(++_0x57b558);}(_0x4157,0xd3));var _0x7415=function(_0x1bd30a,_0x22f9e0){_0x1bd30a=_0x1bd30a-0x0;var _0xd6319e=_0x4157[_0x1bd30a];return _0xd6319e;};'use strict';var MailInteractionEvents=require(_0x7415('0x0'));var events=[_0x7415('0x1'),_0x7415('0x2'),'update'];function createListener(_0x5cf757,_0x465f8a){return function(_0x174992){_0x465f8a[_0x7415('0x3')](_0x5cf757,_0x174992);};}function removeListener(_0x30570a,_0xf2d629){return function(){MailInteractionEvents[_0x7415('0x4')](_0x30570a,_0xf2d629);};}exports[_0x7415('0x5')]=function(_0x3fd790){for(var _0x4622b1=0x0,_0x4ec773=events[_0x7415('0x6')];_0x4622b1<_0x4ec773;_0x4622b1++){var _0x494e87=events[_0x4622b1];var _0x4bdaae=createListener(_0x7415('0x7')+_0x494e87,_0x3fd790);MailInteractionEvents['on'](_0x494e87,_0x4bdaae);}};
\ No newline at end of file
index 4e20d54..08d0509 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac7a=['update','accept','/:id/reject','reject','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./mailMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download','download','post','tracked','mail','mailmessage:create','put'];(function(_0x14a54b,_0x3eec32){var _0x5b5e4b=function(_0x1b3f00){while(--_0x1b3f00){_0x14a54b['push'](_0x14a54b['shift']());}};_0x5b5e4b(++_0x3eec32);}(_0xac7a,0x128));var _0xaac7=function(_0x5234d1,_0x49df0b){_0x5234d1=_0x5234d1-0x0;var _0x23022f=_0xac7a[_0x5234d1];return _0x23022f;};'use strict';var multer=require(_0xaac7('0x0'));var util=require(_0xaac7('0x1'));var path=require(_0xaac7('0x2'));var timeout=require(_0xaac7('0x3'));var express=require(_0xaac7('0x4'));var router=express[_0xaac7('0x5')]();var fs_extra=require(_0xaac7('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xaac7('0x7'));var config=require('../../config/environment');var controller=require(_0xaac7('0x8'));router[_0xaac7('0x9')]('/',auth[_0xaac7('0xa')](),controller[_0xaac7('0xb')]);router[_0xaac7('0x9')](_0xaac7('0xc'),auth[_0xaac7('0xa')](),controller[_0xaac7('0xd')]);router[_0xaac7('0x9')](_0xaac7('0xe'),auth[_0xaac7('0xa')](),controller[_0xaac7('0xf')]);router[_0xaac7('0x9')](_0xaac7('0x10'),auth[_0xaac7('0xa')](),controller[_0xaac7('0x11')]);router[_0xaac7('0x12')]('/',auth[_0xaac7('0xa')](),interaction[_0xaac7('0x13')](_0xaac7('0x14'),_0xaac7('0x15')),controller['create']);router[_0xaac7('0x16')](_0xaac7('0xe'),auth[_0xaac7('0xa')](),controller[_0xaac7('0x17')]);router['put']('/:id/accept',auth[_0xaac7('0xa')](),controller[_0xaac7('0x18')]);router[_0xaac7('0x16')](_0xaac7('0x19'),auth[_0xaac7('0xa')](),controller[_0xaac7('0x1a')]);router[_0xaac7('0x1b')](_0xaac7('0xe'),auth['isAuthenticated'](),controller[_0xaac7('0x1c')]);module['exports']=router;
\ No newline at end of file
+var _0x78e2=['index','/describe','describe','/:id','show','download','post','tracked','mail','mailmessage:create','put','update','/:id/accept','accept','/:id/reject','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','isAuthenticated'];(function(_0x1b54f9,_0x27d352){var _0x4c893e=function(_0x47d012){while(--_0x47d012){_0x1b54f9['push'](_0x1b54f9['shift']());}};_0x4c893e(++_0x27d352);}(_0x78e2,0x1a8));var _0x278e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x78e2[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x278e('0x0'));var util=require(_0x278e('0x1'));var path=require(_0x278e('0x2'));var timeout=require(_0x278e('0x3'));var express=require(_0x278e('0x4'));var router=express['Router']();var fs_extra=require(_0x278e('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x278e('0x6'));var config=require(_0x278e('0x7'));var controller=require(_0x278e('0x8'));router[_0x278e('0x9')]('/',auth[_0x278e('0xa')](),controller[_0x278e('0xb')]);router[_0x278e('0x9')](_0x278e('0xc'),auth[_0x278e('0xa')](),controller[_0x278e('0xd')]);router[_0x278e('0x9')](_0x278e('0xe'),auth[_0x278e('0xa')](),controller[_0x278e('0xf')]);router[_0x278e('0x9')]('/:id/download',auth[_0x278e('0xa')](),controller[_0x278e('0x10')]);router[_0x278e('0x11')]('/',auth[_0x278e('0xa')](),interaction[_0x278e('0x12')](_0x278e('0x13'),_0x278e('0x14')),controller['create']);router[_0x278e('0x15')](_0x278e('0xe'),auth['isAuthenticated'](),controller[_0x278e('0x16')]);router['put'](_0x278e('0x17'),auth['isAuthenticated'](),controller[_0x278e('0x18')]);router[_0x278e('0x15')](_0x278e('0x19'),auth['isAuthenticated'](),controller['reject']);router[_0x278e('0x1a')](_0x278e('0xe'),auth['isAuthenticated'](),controller[_0x278e('0x1b')]);module[_0x278e('0x1c')]=router;
\ No newline at end of file
index 17f9bf8..386ab67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b20=['medium','BOOLEAN','ENUM','out','STRING','DATE','INTEGER','Email','lodash','TEXT','long'];(function(_0x3245f7,_0x26bfad){var _0x472f77=function(_0x391589){while(--_0x391589){_0x3245f7['push'](_0x3245f7['shift']());}};_0x472f77(++_0x26bfad);}(_0x4b20,0xa2));var _0x04b2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4b20[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');var _=require(_0x04b2('0x0'));module['exports']={'body':{'type':Sequelize[_0x04b2('0x1')](_0x04b2('0x2')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x04b2('0x1')](_0x04b2('0x3'))},'read':{'type':Sequelize[_0x04b2('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x04b2('0x5')]('in',_0x04b2('0x6')),'defaultValue':_0x04b2('0x6'),'allowNull':![]},'messageId':{'type':Sequelize[_0x04b2('0x7')](0x1fe)},'from':{'type':Sequelize[_0x04b2('0x7')]},'to':{'type':Sequelize[_0x04b2('0x1')](_0x04b2('0x2'))},'cc':{'type':Sequelize[_0x04b2('0x1')](_0x04b2('0x2'))},'bcc':{'type':Sequelize[_0x04b2('0x1')]('long')},'subject':{'type':Sequelize[_0x04b2('0x1')]},'sentAt':{'type':Sequelize[_0x04b2('0x8')]},'attach':{'type':Sequelize[_0x04b2('0x9')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x04b2('0x4')],'defaultValue':![]},'readAt':{'type':Sequelize[_0x04b2('0x8')]},'originTo':{'type':Sequelize[_0x04b2('0x1')]('long')},'originCc':{'type':Sequelize[_0x04b2('0x1')](_0x04b2('0x2'))},'originChannel':{'type':Sequelize[_0x04b2('0x5')](_0x04b2('0xa'),'Chat'),'defaultValue':_0x04b2('0xa'),'allowNull':![]}};
\ No newline at end of file
+var _0x1336=['BOOLEAN','ENUM','Email','Chat','sequelize','exports','TEXT','long','medium','out','STRING','DATE','INTEGER'];(function(_0x438550,_0x14e77b){var _0x270ad8=function(_0x20ff69){while(--_0x20ff69){_0x438550['push'](_0x438550['shift']());}};_0x270ad8(++_0x14e77b);}(_0x1336,0xe1));var _0x6133=function(_0x73a5dd,_0x1c6bda){_0x73a5dd=_0x73a5dd-0x0;var _0xbb756c=_0x1336[_0x73a5dd];return _0xbb756c;};'use strict';var Sequelize=require(_0x6133('0x0'));var _=require('lodash');module[_0x6133('0x1')]={'body':{'type':Sequelize[_0x6133('0x2')](_0x6133('0x3')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x6133('0x2')](_0x6133('0x4'))},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x6133('0x5')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize['STRING'](0x1fe)},'from':{'type':Sequelize[_0x6133('0x6')]},'to':{'type':Sequelize[_0x6133('0x2')](_0x6133('0x3'))},'cc':{'type':Sequelize['TEXT'](_0x6133('0x3'))},'bcc':{'type':Sequelize[_0x6133('0x2')]('long')},'subject':{'type':Sequelize[_0x6133('0x2')]},'sentAt':{'type':Sequelize[_0x6133('0x7')]},'attach':{'type':Sequelize[_0x6133('0x8')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x6133('0x9')],'defaultValue':![]},'readAt':{'type':Sequelize[_0x6133('0x7')]},'originTo':{'type':Sequelize[_0x6133('0x2')]('long')},'originCc':{'type':Sequelize['TEXT'](_0x6133('0x3'))},'originChannel':{'type':Sequelize[_0x6133('0xa')](_0x6133('0xb'),_0x6133('0xc')),'defaultValue':_0x6133('0xb'),'allowNull':![]}};
\ No newline at end of file
index 7941b13..225af6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb25=['util','path','lodash','ioredis','../../components/parsers/qs','../../config/logger','mail-interactions','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','register','client','http','request','info','MailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','MailMessage,\x20%s,\x20%s','catch','status','json','offset','limit','undefined','count','set','Content-Range','update','then','destroy','end','sendStatus','name','send','index','map','MailMessage','rawAttributes','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','includeAll','show','params','keys','include','find','body','describe','create','direction','out','secret','MailAccount','CmList','List','CmContact','Contacts','DESC','MailServerOut','Smtp','CloudProvider','getSmtpOptions','attachments','join','root','server/files/attachments','basename','ListId','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','accept','read','readAt','UserId','user','isNil','interaction','get','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','stringify','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','agent','email','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','reject','mail','MailInteraction','MailInteractionId','role','RejectMessage','fullname','internal','fromString','download','toString','server','files','bcc','createdAt','Attachments','from','subject','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','existsSync','push','readFileSync','writeFileSync','unlinkSync','eml-format','moment'];(function(_0x92c450,_0x41f1e3){var _0x2a9599=function(_0x4f27df){while(--_0x4f27df){_0x92c450['push'](_0x92c450['shift']());}};_0x2a9599(++_0x41f1e3);}(_0xbb25,0x96));var _0x5bb2=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xbb25[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x5bb2('0x0'));var moment=require(_0x5bb2('0x1'));var BPromise=require('bluebird');var util=require(_0x5bb2('0x2'));var path=require(_0x5bb2('0x3'));var fs=require('fs');var _=require(_0x5bb2('0x4'));var Redis=require(_0x5bb2('0x5'));var htmlToText=require('html-to-text');var qs=require(_0x5bb2('0x6'));var logger=require(_0x5bb2('0x7'))('api');var interaction_log=require('../../config/logger')(_0x5bb2('0x8'));var config=require(_0x5bb2('0x9'));var db=require(_0x5bb2('0xa'))['db'];config[_0x5bb2('0xb')]=_[_0x5bb2('0xc')](config['redis'],{'host':_0x5bb2('0xd'),'port':0x18eb});var socket=require(_0x5bb2('0xe'))(new Redis(config[_0x5bb2('0xb')]));var htmlEntities=require('html-entities');require(_0x5bb2('0xf'))[_0x5bb2('0x10')](socket);var jayson=require('jayson/promise');var client=jayson[_0x5bb2('0x11')][_0x5bb2('0x12')]({'port':0x232c});var client9003=jayson[_0x5bb2('0x11')][_0x5bb2('0x12')]({'port':0x232b});var client9002=jayson[_0x5bb2('0x11')][_0x5bb2('0x12')]({'port':0x232a});function respondWithRpcPromise(_0x4ed8d1,_0x15ea9f,_0x374e9d,_0x13cb97){return new BPromise(function(_0x23be6b,_0x58c1ce){var _0x4ef4e4=_0x13cb97||client;return _0x4ef4e4[_0x5bb2('0x13')](_0x4ed8d1,_0x374e9d)['then'](function(_0x56ff93){logger[_0x5bb2('0x14')]('MailMessage,\x20%s,\x20%s',_0x15ea9f,'request\x20sent');logger['debug'](_0x5bb2('0x15'),_0x15ea9f,_0x5bb2('0x16'),JSON['stringify'](_0x56ff93));if(_0x56ff93[_0x5bb2('0x17')]){if(_0x56ff93[_0x5bb2('0x17')][_0x5bb2('0x18')]===0x1f4){logger['error']('MailMessage,\x20%s,\x20%s',_0x15ea9f,_0x56ff93[_0x5bb2('0x17')]['message']);return _0x58c1ce(_0x56ff93[_0x5bb2('0x17')][_0x5bb2('0x19')]);}logger[_0x5bb2('0x17')]('MailMessage,\x20%s,\x20%s',_0x15ea9f,_0x56ff93[_0x5bb2('0x17')]['message']);return _0x23be6b(_0x56ff93['error']['message']);}else{logger['info'](_0x5bb2('0x1a'),_0x15ea9f,_0x5bb2('0x16'));_0x23be6b(_0x56ff93['result'][_0x5bb2('0x19')]);}})[_0x5bb2('0x1b')](function(_0x29903e){logger[_0x5bb2('0x17')](_0x5bb2('0x1a'),_0x15ea9f,_0x29903e);_0x58c1ce(_0x29903e);});});}function respondWithResult(_0x258c02,_0x3ec607){_0x3ec607=_0x3ec607||0xc8;return function(_0x22dae5){if(_0x22dae5){return _0x258c02[_0x5bb2('0x1c')](_0x3ec607)[_0x5bb2('0x1d')](_0x22dae5);}};}function respondWithFilteredResult(_0x39fbf2,_0x263d48){return function(_0x34cb6a){if(_0x34cb6a){var _0x291110=typeof _0x263d48[_0x5bb2('0x1e')]==='undefined'&&typeof _0x263d48[_0x5bb2('0x1f')]===_0x5bb2('0x20');var _0xec6054=_0x34cb6a[_0x5bb2('0x21')];var _0x318fcb=_0x291110?0x0:_0x263d48[_0x5bb2('0x1e')];var _0x1ff4c0=_0x291110?_0x34cb6a[_0x5bb2('0x21')]:_0x263d48[_0x5bb2('0x1e')]+_0x263d48[_0x5bb2('0x1f')];var _0x58b650;if(_0x1ff4c0>=_0xec6054){_0x1ff4c0=_0xec6054;_0x58b650=0xc8;}else{_0x58b650=0xce;}_0x39fbf2[_0x5bb2('0x1c')](_0x58b650);return _0x39fbf2[_0x5bb2('0x22')](_0x5bb2('0x23'),_0x318fcb+'-'+_0x1ff4c0+'/'+_0xec6054)[_0x5bb2('0x1d')](_0x34cb6a);}return null;};}function saveUpdates(_0x1f8868){return function(_0x486391){if(_0x486391){return _0x486391[_0x5bb2('0x24')](_0x1f8868)[_0x5bb2('0x25')](function(_0x1e8adc){return _0x1e8adc;});}return null;};}function removeEntity(_0x1ffe46){return function(_0x2c8162){if(_0x2c8162){return _0x2c8162[_0x5bb2('0x26')]()[_0x5bb2('0x25')](function(){_0x1ffe46['status'](0xcc)[_0x5bb2('0x27')]();});}};}function handleEntityNotFound(_0x160073){return function(_0x32668f){if(!_0x32668f){_0x160073[_0x5bb2('0x28')](0x194);}return _0x32668f;};}function handleError(_0x45a81a,_0x35ce00){_0x35ce00=_0x35ce00||0x1f4;return function(_0x454519){logger[_0x5bb2('0x17')](_0x454519['stack']);if(_0x454519[_0x5bb2('0x29')]){delete _0x454519[_0x5bb2('0x29')];}_0x45a81a['status'](_0x35ce00)[_0x5bb2('0x2a')](_0x454519);};}exports[_0x5bb2('0x2b')]=function(_0xc2a0a0,_0x3c08d2){var _0x746b20={},_0x9b9e20={},_0x188e69={'count':0x0,'rows':[]};var _0xb48373=_[_0x5bb2('0x2c')](db[_0x5bb2('0x2d')][_0x5bb2('0x2e')],function(_0x460342){return{'name':_0x460342['fieldName'],'type':_0x460342[_0x5bb2('0x2f')][_0x5bb2('0x30')]};});_0x9b9e20[_0x5bb2('0x31')]=_[_0x5bb2('0x2c')](_0xb48373,_0x5bb2('0x29'));_0x9b9e20[_0x5bb2('0x32')]=_['keys'](_0xc2a0a0['query']);_0x9b9e20[_0x5bb2('0x33')]=_[_0x5bb2('0x34')](_0x9b9e20['model'],_0x9b9e20[_0x5bb2('0x32')]);_0x746b20['attributes']=_[_0x5bb2('0x34')](_0x9b9e20['model'],qs['fields'](_0xc2a0a0[_0x5bb2('0x32')][_0x5bb2('0x35')]));_0x746b20[_0x5bb2('0x36')]=_0x746b20['attributes'][_0x5bb2('0x37')]?_0x746b20['attributes']:_0x9b9e20[_0x5bb2('0x31')];if(!_0xc2a0a0['query'][_0x5bb2('0x38')](_0x5bb2('0x39'))){_0x746b20[_0x5bb2('0x1f')]=qs[_0x5bb2('0x1f')](_0xc2a0a0[_0x5bb2('0x32')][_0x5bb2('0x1f')]);_0x746b20[_0x5bb2('0x1e')]=qs['offset'](_0xc2a0a0['query'][_0x5bb2('0x1e')]);}_0x746b20[_0x5bb2('0x3a')]=qs[_0x5bb2('0x3b')](_0xc2a0a0['query'][_0x5bb2('0x3b')]);_0x746b20[_0x5bb2('0x3c')]=qs['filters'](_[_0x5bb2('0x3d')](_0xc2a0a0[_0x5bb2('0x32')],_0x9b9e20[_0x5bb2('0x33')]),_0xb48373);if(_0xc2a0a0[_0x5bb2('0x32')][_0x5bb2('0x3e')]){_0x746b20[_0x5bb2('0x3c')]=_['merge'](_0x746b20[_0x5bb2('0x3c')],{'$or':_[_0x5bb2('0x2c')](_0xb48373,function(_0x17d420){if(_0x17d420['type']!==_0x5bb2('0x3f')){var _0x288384={};_0x288384[_0x17d420[_0x5bb2('0x29')]]={'$like':'%'+_0xc2a0a0['query'][_0x5bb2('0x3e')]+'%'};return _0x288384;}})});}_0x746b20=_['merge']({},_0x746b20,_0xc2a0a0[_0x5bb2('0x40')]);var _0x13d28f={'where':_0x746b20[_0x5bb2('0x3c')]};return db[_0x5bb2('0x2d')][_0x5bb2('0x21')](_0x13d28f)[_0x5bb2('0x25')](function(_0x39aa89){_0x188e69[_0x5bb2('0x21')]=_0x39aa89;if(_0xc2a0a0[_0x5bb2('0x32')][_0x5bb2('0x41')]){_0x746b20['include']=[{'all':!![]}];}return db['MailMessage']['findAll'](_0x746b20);})[_0x5bb2('0x25')](function(_0x41123d){_0x188e69['rows']=_0x41123d;return _0x188e69;})[_0x5bb2('0x25')](respondWithFilteredResult(_0x3c08d2,_0x746b20))[_0x5bb2('0x1b')](handleError(_0x3c08d2,null));};exports[_0x5bb2('0x42')]=function(_0x1fab72,_0x36173c){var _0x39caf0={'raw':!![],'where':{'id':_0x1fab72[_0x5bb2('0x43')]['id']}},_0x93e7f0={};_0x93e7f0[_0x5bb2('0x31')]=_[_0x5bb2('0x44')](db[_0x5bb2('0x2d')][_0x5bb2('0x2e')]);_0x93e7f0[_0x5bb2('0x32')]=_['keys'](_0x1fab72[_0x5bb2('0x32')]);_0x93e7f0[_0x5bb2('0x33')]=_[_0x5bb2('0x34')](_0x93e7f0['model'],_0x93e7f0[_0x5bb2('0x32')]);_0x39caf0[_0x5bb2('0x36')]=_[_0x5bb2('0x34')](_0x93e7f0[_0x5bb2('0x31')],qs[_0x5bb2('0x35')](_0x1fab72['query'][_0x5bb2('0x35')]));_0x39caf0['attributes']=_0x39caf0[_0x5bb2('0x36')]['length']?_0x39caf0[_0x5bb2('0x36')]:_0x93e7f0['model'];if(_0x1fab72[_0x5bb2('0x32')][_0x5bb2('0x41')]){_0x39caf0[_0x5bb2('0x45')]=[{'all':!![]}];}_0x39caf0=_['merge']({},_0x39caf0,_0x1fab72['options']);return db[_0x5bb2('0x2d')][_0x5bb2('0x46')](_0x39caf0)[_0x5bb2('0x25')](handleEntityNotFound(_0x36173c,null))[_0x5bb2('0x25')](respondWithResult(_0x36173c,null))[_0x5bb2('0x1b')](handleError(_0x36173c,null));};exports[_0x5bb2('0x24')]=function(_0x46374b,_0x48ef1b){if(_0x46374b[_0x5bb2('0x47')]['id']){delete _0x46374b[_0x5bb2('0x47')]['id'];}return db[_0x5bb2('0x2d')]['find']({'where':{'id':_0x46374b[_0x5bb2('0x43')]['id']}})[_0x5bb2('0x25')](handleEntityNotFound(_0x48ef1b,null))[_0x5bb2('0x25')](saveUpdates(_0x46374b[_0x5bb2('0x47')],null))[_0x5bb2('0x25')](respondWithResult(_0x48ef1b,null))[_0x5bb2('0x1b')](handleError(_0x48ef1b,null));};exports['destroy']=function(_0x2bb880,_0x438c0f){return db[_0x5bb2('0x2d')]['find']({'where':{'id':_0x2bb880['params']['id']}})[_0x5bb2('0x25')](handleEntityNotFound(_0x438c0f,null))[_0x5bb2('0x25')](removeEntity(_0x438c0f,null))[_0x5bb2('0x1b')](handleError(_0x438c0f,null));};exports[_0x5bb2('0x48')]=function(_0x3b7674,_0x375435){return db[_0x5bb2('0x2d')][_0x5bb2('0x48')]()['then'](respondWithResult(_0x375435,null))[_0x5bb2('0x1b')](handleError(_0x375435,null));};exports[_0x5bb2('0x49')]=function(_0x44b3e3,_0x442942){return db[_0x5bb2('0x2d')][_0x5bb2('0x49')](_0x44b3e3[_0x5bb2('0x47')])[_0x5bb2('0x25')](function(_0x538f5b){if(_0x538f5b){if(_0x538f5b[_0x5bb2('0x4a')]===_0x5bb2('0x4b')&&!_0x538f5b[_0x5bb2('0x4c')]){var _0x4425b7,_0x23998b,_0x49604b;if(_0x44b3e3['body']['to']){_0x23998b=_0x44b3e3[_0x5bb2('0x47')]['to']['split'](',')[0x0];}return db[_0x5bb2('0x4d')]['findOne']({'where':{'id':_0x538f5b['MailAccountId']},'include':[{'model':db[_0x5bb2('0x4e')],'as':_0x5bb2('0x4f'),'include':[{'model':db[_0x5bb2('0x50')],'as':_0x5bb2('0x51'),'where':{'email':_0x23998b},'limit':0x1,'order':[['updatedAt',_0x5bb2('0x52')]]}]},{'model':db[_0x5bb2('0x53')],'as':_0x5bb2('0x54'),'raw':!![],'include':[{'model':db[_0x5bb2('0x55')],'as':_0x5bb2('0x55'),'raw':!![]}]}]})[_0x5bb2('0x25')](function(_0xd6640d){_0x4425b7=_0xd6640d;if(!_0x4425b7||!_0x4425b7[_0x5bb2('0x54')])return;var _0x51bf09=_0x4425b7[_0x5bb2('0x56')]();if(_0x44b3e3[_0x5bb2('0x47')][_0x5bb2('0x57')]&&_0x44b3e3[_0x5bb2('0x47')][_0x5bb2('0x57')][_0x5bb2('0x37')]){for(var _0x3fac34=0x0;_0x3fac34<_0x44b3e3['body']['attachments']['length'];_0x3fac34+=0x1){_0x44b3e3[_0x5bb2('0x47')][_0x5bb2('0x57')][_0x3fac34]={'filename':_0x44b3e3[_0x5bb2('0x47')][_0x5bb2('0x57')][_0x3fac34]['name'],'path':path[_0x5bb2('0x58')](config[_0x5bb2('0x59')],_0x5bb2('0x5a'),_0x44b3e3[_0x5bb2('0x47')][_0x5bb2('0x57')][_0x3fac34][_0x5bb2('0x5b')])};}}_0x49604b={'account':_0x51bf09,'message':_0x44b3e3[_0x5bb2('0x47')]};return;})[_0x5bb2('0x25')](function(){if(_0x4425b7[_0x5bb2('0x4f')]){if(_0x4425b7[_0x5bb2('0x4f')][_0x5bb2('0x51')][_0x5bb2('0x37')]){return _0x4425b7[_0x5bb2('0x4f')]['Contacts'][0x0];}else{return db[_0x5bb2('0x50')]['create'](_[_0x5bb2('0xc')](_0x44b3e3[_0x5bb2('0x47')],{'firstName':_0x44b3e3[_0x5bb2('0x47')]['to'],'email':_0x44b3e3[_0x5bb2('0x47')]['to'],'phone':_0x44b3e3[_0x5bb2('0x47')]['to'],'ListId':_0x4425b7[_0x5bb2('0x5c')]}));}}else{throw new Error('List\x20not\x20found');}})['then'](function(){if(_0x49604b){return respondWithRpcPromise('SendMail',_0x5bb2('0x5d'),_0x49604b,client9003)[_0x5bb2('0x25')](function(_0x351ecc){return _0x538f5b[_0x5bb2('0x24')]({'read':!![],'messageId':_0x351ecc[_0x5bb2('0x5e')],'sentAt':moment()[_0x5bb2('0x5f')](_0x5bb2('0x60'))});})[_0x5bb2('0x1b')](function(_0xa48148){logger[_0x5bb2('0x17')]('%s',JSON['stringify'](_0xa48148));return _0x538f5b;});}return _0x538f5b;});}return _0x538f5b;}})['then'](respondWithResult(_0x442942,0xc9))[_0x5bb2('0x1b')](handleError(_0x442942,null));};exports[_0x5bb2('0x61')]=function(_0x2c7fa4,_0x21ee13){var _0x523871={'agent':{},'channel':'mail'};if(_0x2c7fa4['body']['id']){delete _0x2c7fa4[_0x5bb2('0x47')]['id'];}_0x2c7fa4[_0x5bb2('0x47')][_0x5bb2('0x62')]=!![];_0x2c7fa4[_0x5bb2('0x47')][_0x5bb2('0x63')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x2c7fa4[_0x5bb2('0x47')]['UserId']=_0x2c7fa4[_0x5bb2('0x47')][_0x5bb2('0x64')]||_0x2c7fa4[_0x5bb2('0x65')]['id'];_0x523871['agent']['id']=_0x2c7fa4[_0x5bb2('0x47')]['UserId'];return db['MailMessage'][_0x5bb2('0x46')]({'where':{'id':_0x2c7fa4[_0x5bb2('0x43')]['id'],'UserId':null}})[_0x5bb2('0x25')](handleEntityNotFound(_0x21ee13,null))[_0x5bb2('0x25')](saveUpdates(_0x2c7fa4['body'],null))['then'](function(_0x2ab885){if(_0x2ab885){_0x523871[_0x5bb2('0x19')]=_0x2ab885['get']({'plain':!![]});return db['MailInteraction'][_0x5bb2('0x46')]({'where':{'id':_0x2ab885['MailInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x21ee13,null))[_0x5bb2('0x25')](function(_0x334320){if(_0x334320){return _0x334320[_0x5bb2('0x24')]({'UserId':_0x2c7fa4[_0x5bb2('0x47')]['UserId'],'read1stAt':_[_0x5bb2('0x66')](_0x334320['read1stAt'])?moment()['format'](_0x5bb2('0x60')):undefined});}return null;})['then'](function(_0x365cd8){if(_0x365cd8){_0x523871[_0x5bb2('0x67')]=_0x365cd8[_0x5bb2('0x68')]({'plain':!![]});interaction_log[_0x5bb2('0x14')](_0x5bb2('0x69'),_0x2c7fa4['user']['id'],_0x2c7fa4[_0x5bb2('0x65')][_0x5bb2('0x29')],_0x2c7fa4[_0x5bb2('0x65')]['role'],_0x523871[_0x5bb2('0x67')]['id'],_0x2c7fa4[_0x5bb2('0x47')]?JSON[_0x5bb2('0x6a')](_0x2c7fa4['body']):'null');return respondWithRpcPromise(_0x5bb2('0x6b'),'acceptMessage',_0x523871);}return null;})[_0x5bb2('0x25')](function(_0x48b780){var _0x4d63ae=_0x5bb2('0x6c')+_0x48b780['message'][_0x5bb2('0x6d')];return db[_0x5bb2('0x6e')]['query'](_0x4d63ae,{'type':db[_0x5bb2('0x6f')][_0x5bb2('0x70')][_0x5bb2('0x71')],'raw':!![]})['then'](function(_0x261b91){return _0x261b91;});})['then'](function(_0x24b9e1){if(_0x24b9e1){_0x523871['message'][_0x5bb2('0x72')]=_0x24b9e1[0x0];if(!_0x2c7fa4['body'][_0x5bb2('0x64')])return;return db[_0x5bb2('0x73')]['find']({'where':{'id':_0x2c7fa4[_0x5bb2('0x47')][_0x5bb2('0x64')],'role':_0x5bb2('0x74')},'attributes':['id',_0x5bb2('0x29'),'fullname',_0x5bb2('0x75'),'internal'],'raw':!![]});}return null;})[_0x5bb2('0x25')](function(_0x3deaa8){if(!_0x3deaa8)return null;_0x523871[_0x5bb2('0x19')]['agent']=_0x3deaa8;return _0x523871;})[_0x5bb2('0x25')](function(_0xe4f103){if(_0xe4f103){if(_0x2c7fa4[_0x5bb2('0x47')][_0x5bb2('0x76')]){_0x523871[_0x5bb2('0x19')][_0x5bb2('0x77')]=util['format'](_0x5bb2('0x78'),_0x2c7fa4[_0x5bb2('0x65')]['name']);_0x523871[_0x5bb2('0x19')][_0x5bb2('0x79')]=_0x523871['channel'];_0x523871['message'][_0x5bb2('0x7a')]=_0x523871[_0x5bb2('0x79')];_0x523871[_0x5bb2('0x19')][_0x5bb2('0x7b')]=_0x5bb2('0x61');_0x523871[_0x5bb2('0x19')][_0x5bb2('0x47')]=htmlToText['fromString'](_0x523871[_0x5bb2('0x19')][_0x5bb2('0x47')]);return respondWithRpcPromise('EventManager',_0x5bb2('0x7c'),{'event':_0x5bb2('0x7d'),'message':_0x523871[_0x5bb2('0x19')]},client9002)['then'](function(){return _0x523871;});}return _0x523871;}return null;})[_0x5bb2('0x25')](respondWithResult(_0x21ee13,null))['catch'](handleError(_0x21ee13,null));};exports[_0x5bb2('0x7e')]=function(_0x1f42b6,_0x171057){var _0x4046a7={'agent':{},'channel':_0x5bb2('0x7f')};if(_0x1f42b6[_0x5bb2('0x47')]['id']){delete _0x1f42b6['body']['id'];}_0x1f42b6[_0x5bb2('0x47')]['UserId']=_0x1f42b6[_0x5bb2('0x47')]['UserId']||_0x1f42b6[_0x5bb2('0x65')]['id'];_0x4046a7[_0x5bb2('0x74')]['id']=_0x1f42b6['body'][_0x5bb2('0x64')];return db[_0x5bb2('0x2d')][_0x5bb2('0x46')]({'where':{'id':_0x1f42b6[_0x5bb2('0x43')]['id'],'UserId':null}})[_0x5bb2('0x25')](handleEntityNotFound(_0x171057,null))['then'](function(_0x220660){if(_0x220660){_0x4046a7[_0x5bb2('0x19')]=_0x220660[_0x5bb2('0x68')]({'plain':!![]});return db[_0x5bb2('0x80')][_0x5bb2('0x46')]({'where':{'id':_0x220660[_0x5bb2('0x81')]}});}return null;})[_0x5bb2('0x25')](handleEntityNotFound(_0x171057,null))[_0x5bb2('0x25')](function(_0x375d4e){if(_0x375d4e){_0x4046a7[_0x5bb2('0x67')]=_0x375d4e['get']({'plain':!![]});interaction_log['info']('[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x1f42b6[_0x5bb2('0x65')]['id'],_0x1f42b6['user'][_0x5bb2('0x29')],_0x1f42b6[_0x5bb2('0x65')][_0x5bb2('0x82')],_0x4046a7['interaction']['id'],_0x1f42b6[_0x5bb2('0x47')]?JSON[_0x5bb2('0x6a')](_0x1f42b6[_0x5bb2('0x47')]):'null');return respondWithRpcPromise(_0x5bb2('0x83'),'rejectMessage',_0x4046a7);}return null;})[_0x5bb2('0x25')](function(_0x57c7db){var _0x481302=_0x5bb2('0x6c')+_0x57c7db[_0x5bb2('0x19')][_0x5bb2('0x6d')];return db['sequelize'][_0x5bb2('0x32')](_0x481302,{'type':db[_0x5bb2('0x6f')][_0x5bb2('0x70')][_0x5bb2('0x71')],'raw':!![]})[_0x5bb2('0x25')](function(_0x1f90f0){return _0x1f90f0;});})['then'](function(_0xbccf0c){if(_0xbccf0c){_0x4046a7[_0x5bb2('0x19')][_0x5bb2('0x72')]=_0xbccf0c[0x0];if(!_0x1f42b6[_0x5bb2('0x47')][_0x5bb2('0x64')])return;return db[_0x5bb2('0x73')][_0x5bb2('0x46')]({'where':{'id':_0x1f42b6['body'][_0x5bb2('0x64')],'role':'agent'},'attributes':['id',_0x5bb2('0x29'),_0x5bb2('0x84'),'email',_0x5bb2('0x85')],'raw':!![]});}return null;})[_0x5bb2('0x25')](function(_0x6f6c9d){if(!_0x6f6c9d)return null;_0x4046a7[_0x5bb2('0x19')][_0x5bb2('0x74')]=_0x6f6c9d;return _0x4046a7;})[_0x5bb2('0x25')](function(_0x2c306c){if(_0x2c306c){_0x2c306c['message'][_0x5bb2('0x77')]=util[_0x5bb2('0x5f')](_0x5bb2('0x78'),_0x1f42b6[_0x5bb2('0x65')][_0x5bb2('0x29')]);_0x2c306c['message'][_0x5bb2('0x79')]=_0x4046a7[_0x5bb2('0x79')];_0x2c306c['message'][_0x5bb2('0x7a')]=_0x4046a7['channel'];_0x2c306c[_0x5bb2('0x19')][_0x5bb2('0x7b')]=_0x5bb2('0x7e');_0x2c306c['message'][_0x5bb2('0x47')]=htmlToText[_0x5bb2('0x86')](_0x4046a7[_0x5bb2('0x19')][_0x5bb2('0x47')]);respondWithRpcPromise(_0x5bb2('0x7c'),_0x5bb2('0x7c'),{'event':'rejectmessage','message':_0x2c306c[_0x5bb2('0x19')]},client9002);return _0x4046a7;}return null;})[_0x5bb2('0x25')](respondWithResult(_0x171057,null))['catch'](handleError(_0x171057,null));};exports[_0x5bb2('0x87')]=function(_0x284c21,_0x2b6751){var _0x1881f3=moment()['unix']()[_0x5bb2('0x88')]();var _0x45e5b5=path[_0x5bb2('0x58')](config[_0x5bb2('0x59')],_0x5bb2('0x89'),_0x5bb2('0x8a'),'tmp');var _0x337364=path[_0x5bb2('0x58')](config[_0x5bb2('0x59')],_0x5bb2('0x89'),_0x5bb2('0x8a'),_0x5bb2('0x57'));var _0x361e80=util[_0x5bb2('0x5f')]('message-%s.eml',_0x1881f3);return db[_0x5bb2('0x2d')][_0x5bb2('0x46')]({'where':{'id':_0x284c21['params']['id']},'attributes':['id',_0x5bb2('0x47'),'from','to','cc',_0x5bb2('0x8b'),'subject',_0x5bb2('0x8c')],'include':_0x284c21[_0x5bb2('0x32')][_0x5bb2('0x57')]?[{'model':db['Attachment'],'as':_0x5bb2('0x8d')}]:undefined})[_0x5bb2('0x25')](handleEntityNotFound(_0x2b6751,null))[_0x5bb2('0x25')](function(_0x3c6cb6){if(_0x3c6cb6){var _0x4463a9=_0x3c6cb6;var _0x530e80={'from':_0x4463a9[_0x5bb2('0x8e')],'to':_0x4463a9['to'],'subject':_0x4463a9[_0x5bb2('0x8f')],'html':htmlEntities['decode'](_0x4463a9[_0x5bb2('0x47')]),'headers':{'Date':moment(_0x4463a9['createdAt'])[_0x5bb2('0x5f')](_0x5bb2('0x90'))},'attachments':[]};if(_0x3c6cb6['cc']){_0x530e80[_0x5bb2('0x91')]['Cc']=_0x3c6cb6['cc'];}if(_0x3c6cb6['bcc']){_0x530e80[_0x5bb2('0x91')][_0x5bb2('0x92')]=_0x3c6cb6[_0x5bb2('0x8b')];}return new BPromise(function(_0x459bd5,_0xa4bade){if(_0x3c6cb6['Attachments']){for(var _0xb60b2a=0x0;_0xb60b2a<_0x3c6cb6[_0x5bb2('0x8d')][_0x5bb2('0x37')];_0xb60b2a++){var _0x1ec96e=_0x3c6cb6[_0x5bb2('0x8d')][_0xb60b2a];var _0x4d76f7=path[_0x5bb2('0x58')](_0x337364,_0x1ec96e[_0x5bb2('0x5b')]);if(fs[_0x5bb2('0x93')](_0x4d76f7)){_0x530e80[_0x5bb2('0x57')][_0x5bb2('0x94')]({'name':_0x1ec96e[_0x5bb2('0x29')],'contentType':_0x1ec96e[_0x5bb2('0x2f')],'data':fs[_0x5bb2('0x95')](_0x4d76f7)});}}}emlformat['build'](_0x530e80,function(_0x5ed3fa,_0x285a58){if(_0x5ed3fa)return _0xa4bade(_0x5ed3fa);fs[_0x5bb2('0x96')](path[_0x5bb2('0x58')](_0x45e5b5,_0x361e80),_0x285a58);return _0x459bd5(_0x285a58);});});}})['then'](function(_0x36069c){if(_0x36069c){return _0x2b6751['download'](path['join'](_0x45e5b5,_0x361e80),_0x361e80,function(_0x4890c5){if(!_0x4890c5)fs[_0x5bb2('0x97')](path[_0x5bb2('0x58')](_0x45e5b5,_0x361e80));});}})[_0x5bb2('0x1b')](handleError(_0x2b6751,null));};
\ No newline at end of file
+var _0xb93d=['sequelize','Sequelize','SELECT','contact','User','agent','email','manual','interface','channel','motionChannel','EventManager','acceptmessage','reject','mail','RejectMessage','rejectMessage','fullname','internal','SIP/%s','event','fromString','rejectmessage','download','unix','toString','root','server','files','tmp','bcc','subject','createdAt','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','Attachments','existsSync','push','build','writeFileSync','unlinkSync','moment','bluebird','util','path','lodash','html-to-text','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','html-entities','./mailMessage.socket','register','jayson/promise','client','http','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','status','json','offset','undefined','limit','count','set','Content-Range','update','destroy','end','sendStatus','name','index','MailMessage','fieldName','type','key','model','map','query','keys','intersection','fields','attributes','length','order','where','filters','pick','filter','merge','VIRTUAL','include','findAll','rows','show','params','rawAttributes','includeAll','options','find','body','describe','create','out','secret','MailAccount','findOne','MailAccountId','CmList','List','CmContact','updatedAt','DESC','MailServerOut','Smtp','CloudProvider','getSmtpOptions','attachments','join','basename','Contacts','List\x20not\x20found','SendMail','sendMail','format','accept','read','UserId','MailInteraction','MailInteractionId','read1stAt','interaction','get','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId'];(function(_0x3a6b59,_0x2d911e){var _0x330c6e=function(_0xb4d1c2){while(--_0xb4d1c2){_0x3a6b59['push'](_0x3a6b59['shift']());}};_0x330c6e(++_0x2d911e);}(_0xb93d,0xc5));var _0xdb93=function(_0x136619,_0x31c9b2){_0x136619=_0x136619-0x0;var _0x38c4a5=_0xb93d[_0x136619];return _0x38c4a5;};'use strict';var emlformat=require('eml-format');var moment=require(_0xdb93('0x0'));var BPromise=require(_0xdb93('0x1'));var util=require(_0xdb93('0x2'));var path=require(_0xdb93('0x3'));var fs=require('fs');var _=require(_0xdb93('0x4'));var Redis=require('ioredis');var htmlToText=require(_0xdb93('0x5'));var qs=require(_0xdb93('0x6'));var logger=require(_0xdb93('0x7'))(_0xdb93('0x8'));var interaction_log=require(_0xdb93('0x7'))('mail-interactions');var config=require(_0xdb93('0x9'));var db=require(_0xdb93('0xa'))['db'];config[_0xdb93('0xb')]=_[_0xdb93('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xdb93('0xd'))(new Redis(config['redis']));var htmlEntities=require(_0xdb93('0xe'));require(_0xdb93('0xf'))[_0xdb93('0x10')](socket);var jayson=require(_0xdb93('0x11'));var client=jayson[_0xdb93('0x12')][_0xdb93('0x13')]({'port':0x232c});var client9003=jayson[_0xdb93('0x12')][_0xdb93('0x13')]({'port':0x232b});var client9002=jayson[_0xdb93('0x12')][_0xdb93('0x13')]({'port':0x232a});function respondWithRpcPromise(_0x1e6d81,_0x2731d2,_0x45a7da,_0x4f495b){return new BPromise(function(_0x59c2d2,_0x137afb){var _0x42c80a=_0x4f495b||client;return _0x42c80a['request'](_0x1e6d81,_0x45a7da)[_0xdb93('0x14')](function(_0x40c854){logger[_0xdb93('0x15')](_0xdb93('0x16'),_0x2731d2,_0xdb93('0x17'));logger[_0xdb93('0x18')]('MailMessage,\x20%s,\x20%s,\x20%s',_0x2731d2,'request\x20sent',JSON[_0xdb93('0x19')](_0x40c854));if(_0x40c854[_0xdb93('0x1a')]){if(_0x40c854[_0xdb93('0x1a')]['code']===0x1f4){logger[_0xdb93('0x1a')]('MailMessage,\x20%s,\x20%s',_0x2731d2,_0x40c854['error'][_0xdb93('0x1b')]);return _0x137afb(_0x40c854['error'][_0xdb93('0x1b')]);}logger[_0xdb93('0x1a')](_0xdb93('0x16'),_0x2731d2,_0x40c854[_0xdb93('0x1a')][_0xdb93('0x1b')]);return _0x59c2d2(_0x40c854[_0xdb93('0x1a')][_0xdb93('0x1b')]);}else{logger[_0xdb93('0x15')]('MailMessage,\x20%s,\x20%s',_0x2731d2,_0xdb93('0x17'));_0x59c2d2(_0x40c854['result'][_0xdb93('0x1b')]);}})[_0xdb93('0x1c')](function(_0x13fa9a){logger[_0xdb93('0x1a')](_0xdb93('0x16'),_0x2731d2,_0x13fa9a);_0x137afb(_0x13fa9a);});});}function respondWithResult(_0x4203ed,_0x2a16c8){_0x2a16c8=_0x2a16c8||0xc8;return function(_0x224c61){if(_0x224c61){return _0x4203ed[_0xdb93('0x1d')](_0x2a16c8)[_0xdb93('0x1e')](_0x224c61);}};}function respondWithFilteredResult(_0x427b3c,_0x5a20a8){return function(_0x4f15bf){if(_0x4f15bf){var _0x7e4847=typeof _0x5a20a8[_0xdb93('0x1f')]===_0xdb93('0x20')&&typeof _0x5a20a8[_0xdb93('0x21')]==='undefined';var _0x4ebe76=_0x4f15bf[_0xdb93('0x22')];var _0x270f2f=_0x7e4847?0x0:_0x5a20a8[_0xdb93('0x1f')];var _0x19fe0c=_0x7e4847?_0x4f15bf[_0xdb93('0x22')]:_0x5a20a8['offset']+_0x5a20a8[_0xdb93('0x21')];var _0x489844;if(_0x19fe0c>=_0x4ebe76){_0x19fe0c=_0x4ebe76;_0x489844=0xc8;}else{_0x489844=0xce;}_0x427b3c[_0xdb93('0x1d')](_0x489844);return _0x427b3c[_0xdb93('0x23')](_0xdb93('0x24'),_0x270f2f+'-'+_0x19fe0c+'/'+_0x4ebe76)['json'](_0x4f15bf);}return null;};}function saveUpdates(_0x19b701){return function(_0x470167){if(_0x470167){return _0x470167[_0xdb93('0x25')](_0x19b701)[_0xdb93('0x14')](function(_0x4ff8c8){return _0x4ff8c8;});}return null;};}function removeEntity(_0x1bdd0e){return function(_0x1f7dd6){if(_0x1f7dd6){return _0x1f7dd6[_0xdb93('0x26')]()[_0xdb93('0x14')](function(){_0x1bdd0e[_0xdb93('0x1d')](0xcc)[_0xdb93('0x27')]();});}};}function handleEntityNotFound(_0x4a3931){return function(_0x2ae031){if(!_0x2ae031){_0x4a3931[_0xdb93('0x28')](0x194);}return _0x2ae031;};}function handleError(_0xa91fdf,_0x1fe5df){_0x1fe5df=_0x1fe5df||0x1f4;return function(_0x49f5cf){logger[_0xdb93('0x1a')](_0x49f5cf['stack']);if(_0x49f5cf['name']){delete _0x49f5cf[_0xdb93('0x29')];}_0xa91fdf[_0xdb93('0x1d')](_0x1fe5df)['send'](_0x49f5cf);};}exports[_0xdb93('0x2a')]=function(_0x4f530c,_0x471b8c){var _0x540ab3={},_0x268a66={},_0x59de2c={'count':0x0,'rows':[]};var _0x3a08e6=_['map'](db[_0xdb93('0x2b')]['rawAttributes'],function(_0x1a4534){return{'name':_0x1a4534[_0xdb93('0x2c')],'type':_0x1a4534[_0xdb93('0x2d')][_0xdb93('0x2e')]};});_0x268a66[_0xdb93('0x2f')]=_[_0xdb93('0x30')](_0x3a08e6,_0xdb93('0x29'));_0x268a66[_0xdb93('0x31')]=_[_0xdb93('0x32')](_0x4f530c[_0xdb93('0x31')]);_0x268a66['filters']=_[_0xdb93('0x33')](_0x268a66[_0xdb93('0x2f')],_0x268a66[_0xdb93('0x31')]);_0x540ab3['attributes']=_[_0xdb93('0x33')](_0x268a66[_0xdb93('0x2f')],qs[_0xdb93('0x34')](_0x4f530c[_0xdb93('0x31')][_0xdb93('0x34')]));_0x540ab3['attributes']=_0x540ab3[_0xdb93('0x35')][_0xdb93('0x36')]?_0x540ab3[_0xdb93('0x35')]:_0x268a66['model'];if(!_0x4f530c[_0xdb93('0x31')]['hasOwnProperty']('nolimit')){_0x540ab3[_0xdb93('0x21')]=qs[_0xdb93('0x21')](_0x4f530c[_0xdb93('0x31')][_0xdb93('0x21')]);_0x540ab3[_0xdb93('0x1f')]=qs[_0xdb93('0x1f')](_0x4f530c[_0xdb93('0x31')]['offset']);}_0x540ab3[_0xdb93('0x37')]=qs['sort'](_0x4f530c[_0xdb93('0x31')]['sort']);_0x540ab3[_0xdb93('0x38')]=qs[_0xdb93('0x39')](_[_0xdb93('0x3a')](_0x4f530c[_0xdb93('0x31')],_0x268a66[_0xdb93('0x39')]),_0x3a08e6);if(_0x4f530c['query'][_0xdb93('0x3b')]){_0x540ab3[_0xdb93('0x38')]=_[_0xdb93('0x3c')](_0x540ab3[_0xdb93('0x38')],{'$or':_['map'](_0x3a08e6,function(_0x35267f){if(_0x35267f[_0xdb93('0x2d')]!==_0xdb93('0x3d')){var _0x3fc8e9={};_0x3fc8e9[_0x35267f[_0xdb93('0x29')]]={'$like':'%'+_0x4f530c['query'][_0xdb93('0x3b')]+'%'};return _0x3fc8e9;}})});}_0x540ab3=_[_0xdb93('0x3c')]({},_0x540ab3,_0x4f530c['options']);var _0x3de262={'where':_0x540ab3[_0xdb93('0x38')]};return db[_0xdb93('0x2b')]['count'](_0x3de262)[_0xdb93('0x14')](function(_0x3713a3){_0x59de2c[_0xdb93('0x22')]=_0x3713a3;if(_0x4f530c[_0xdb93('0x31')]['includeAll']){_0x540ab3[_0xdb93('0x3e')]=[{'all':!![]}];}return db[_0xdb93('0x2b')][_0xdb93('0x3f')](_0x540ab3);})[_0xdb93('0x14')](function(_0x5c5aee){_0x59de2c[_0xdb93('0x40')]=_0x5c5aee;return _0x59de2c;})['then'](respondWithFilteredResult(_0x471b8c,_0x540ab3))[_0xdb93('0x1c')](handleError(_0x471b8c,null));};exports[_0xdb93('0x41')]=function(_0x39cffd,_0x3f75fd){var _0x2a3e32={'raw':!![],'where':{'id':_0x39cffd[_0xdb93('0x42')]['id']}},_0x391c09={};_0x391c09['model']=_['keys'](db[_0xdb93('0x2b')][_0xdb93('0x43')]);_0x391c09[_0xdb93('0x31')]=_[_0xdb93('0x32')](_0x39cffd[_0xdb93('0x31')]);_0x391c09[_0xdb93('0x39')]=_[_0xdb93('0x33')](_0x391c09[_0xdb93('0x2f')],_0x391c09['query']);_0x2a3e32['attributes']=_[_0xdb93('0x33')](_0x391c09[_0xdb93('0x2f')],qs['fields'](_0x39cffd[_0xdb93('0x31')][_0xdb93('0x34')]));_0x2a3e32['attributes']=_0x2a3e32[_0xdb93('0x35')]['length']?_0x2a3e32['attributes']:_0x391c09[_0xdb93('0x2f')];if(_0x39cffd[_0xdb93('0x31')][_0xdb93('0x44')]){_0x2a3e32[_0xdb93('0x3e')]=[{'all':!![]}];}_0x2a3e32=_[_0xdb93('0x3c')]({},_0x2a3e32,_0x39cffd[_0xdb93('0x45')]);return db[_0xdb93('0x2b')][_0xdb93('0x46')](_0x2a3e32)['then'](handleEntityNotFound(_0x3f75fd,null))[_0xdb93('0x14')](respondWithResult(_0x3f75fd,null))[_0xdb93('0x1c')](handleError(_0x3f75fd,null));};exports[_0xdb93('0x25')]=function(_0x1ec8e7,_0x170bed){if(_0x1ec8e7['body']['id']){delete _0x1ec8e7['body']['id'];}return db[_0xdb93('0x2b')][_0xdb93('0x46')]({'where':{'id':_0x1ec8e7['params']['id']}})[_0xdb93('0x14')](handleEntityNotFound(_0x170bed,null))[_0xdb93('0x14')](saveUpdates(_0x1ec8e7[_0xdb93('0x47')],null))['then'](respondWithResult(_0x170bed,null))[_0xdb93('0x1c')](handleError(_0x170bed,null));};exports['destroy']=function(_0x3f4bab,_0x3b4f63){return db[_0xdb93('0x2b')][_0xdb93('0x46')]({'where':{'id':_0x3f4bab['params']['id']}})[_0xdb93('0x14')](handleEntityNotFound(_0x3b4f63,null))[_0xdb93('0x14')](removeEntity(_0x3b4f63,null))[_0xdb93('0x1c')](handleError(_0x3b4f63,null));};exports[_0xdb93('0x48')]=function(_0x1a5b4c,_0x5ec0e4){return db[_0xdb93('0x2b')][_0xdb93('0x48')]()[_0xdb93('0x14')](respondWithResult(_0x5ec0e4,null))[_0xdb93('0x1c')](handleError(_0x5ec0e4,null));};exports[_0xdb93('0x49')]=function(_0x23b6ad,_0x21d7c0){return db['MailMessage'][_0xdb93('0x49')](_0x23b6ad[_0xdb93('0x47')])[_0xdb93('0x14')](function(_0x1fcf98){if(_0x1fcf98){if(_0x1fcf98['direction']===_0xdb93('0x4a')&&!_0x1fcf98[_0xdb93('0x4b')]){var _0x394126,_0x3c8ec3,_0x16d21e;if(_0x23b6ad[_0xdb93('0x47')]['to']){_0x3c8ec3=_0x23b6ad[_0xdb93('0x47')]['to']['split'](',')[0x0];}return db[_0xdb93('0x4c')][_0xdb93('0x4d')]({'where':{'id':_0x1fcf98[_0xdb93('0x4e')]},'include':[{'model':db[_0xdb93('0x4f')],'as':_0xdb93('0x50'),'include':[{'model':db[_0xdb93('0x51')],'as':'Contacts','where':{'email':_0x3c8ec3},'limit':0x1,'order':[[_0xdb93('0x52'),_0xdb93('0x53')]]}]},{'model':db[_0xdb93('0x54')],'as':_0xdb93('0x55'),'raw':!![],'include':[{'model':db[_0xdb93('0x56')],'as':_0xdb93('0x56'),'raw':!![]}]}]})[_0xdb93('0x14')](function(_0x52b5bf){_0x394126=_0x52b5bf;if(!_0x394126||!_0x394126['Smtp'])return;var _0x12e5dc=_0x394126[_0xdb93('0x57')]();if(_0x23b6ad[_0xdb93('0x47')][_0xdb93('0x58')]&&_0x23b6ad[_0xdb93('0x47')][_0xdb93('0x58')]['length']){for(var _0x2ed828=0x0;_0x2ed828<_0x23b6ad[_0xdb93('0x47')]['attachments'][_0xdb93('0x36')];_0x2ed828+=0x1){_0x23b6ad['body']['attachments'][_0x2ed828]={'filename':_0x23b6ad[_0xdb93('0x47')][_0xdb93('0x58')][_0x2ed828]['name'],'path':path[_0xdb93('0x59')](config['root'],'server/files/attachments',_0x23b6ad['body'][_0xdb93('0x58')][_0x2ed828][_0xdb93('0x5a')])};}}_0x16d21e={'account':_0x12e5dc,'message':_0x23b6ad[_0xdb93('0x47')]};return;})['then'](function(){if(_0x394126[_0xdb93('0x50')]){if(_0x394126[_0xdb93('0x50')][_0xdb93('0x5b')][_0xdb93('0x36')]){return _0x394126[_0xdb93('0x50')][_0xdb93('0x5b')][0x0];}else{return db[_0xdb93('0x51')][_0xdb93('0x49')](_[_0xdb93('0xc')](_0x23b6ad['body'],{'firstName':_0x23b6ad[_0xdb93('0x47')]['to'],'email':_0x23b6ad['body']['to'],'phone':_0x23b6ad[_0xdb93('0x47')]['to'],'ListId':_0x394126['ListId']}));}}else{throw new Error(_0xdb93('0x5c'));}})[_0xdb93('0x14')](function(){if(_0x16d21e){return respondWithRpcPromise(_0xdb93('0x5d'),_0xdb93('0x5e'),_0x16d21e,client9003)['then'](function(_0x373cb4){return _0x1fcf98[_0xdb93('0x25')]({'read':!![],'messageId':_0x373cb4['messageId'],'sentAt':moment()[_0xdb93('0x5f')]('YYYY-MM-DD\x20HH:mm:ss')});})[_0xdb93('0x1c')](function(_0x29308e){logger[_0xdb93('0x1a')]('%s',JSON['stringify'](_0x29308e));return _0x1fcf98;});}return _0x1fcf98;});}return _0x1fcf98;}})[_0xdb93('0x14')](respondWithResult(_0x21d7c0,0xc9))[_0xdb93('0x1c')](handleError(_0x21d7c0,null));};exports[_0xdb93('0x60')]=function(_0x5e5009,_0x58bdfc){var _0x9b9566={'agent':{},'channel':'mail'};if(_0x5e5009['body']['id']){delete _0x5e5009[_0xdb93('0x47')]['id'];}_0x5e5009[_0xdb93('0x47')][_0xdb93('0x61')]=!![];_0x5e5009[_0xdb93('0x47')]['readAt']=moment()[_0xdb93('0x5f')]('YYYY-MM-DD\x20HH:mm:ss');_0x5e5009[_0xdb93('0x47')][_0xdb93('0x62')]=_0x5e5009[_0xdb93('0x47')][_0xdb93('0x62')]||_0x5e5009['user']['id'];_0x9b9566['agent']['id']=_0x5e5009[_0xdb93('0x47')][_0xdb93('0x62')];return db['MailMessage'][_0xdb93('0x46')]({'where':{'id':_0x5e5009[_0xdb93('0x42')]['id'],'UserId':null}})[_0xdb93('0x14')](handleEntityNotFound(_0x58bdfc,null))[_0xdb93('0x14')](saveUpdates(_0x5e5009['body'],null))['then'](function(_0x109d98){if(_0x109d98){_0x9b9566['message']=_0x109d98['get']({'plain':!![]});return db[_0xdb93('0x63')][_0xdb93('0x46')]({'where':{'id':_0x109d98[_0xdb93('0x64')]}});}return null;})['then'](handleEntityNotFound(_0x58bdfc,null))[_0xdb93('0x14')](function(_0x388398){if(_0x388398){return _0x388398[_0xdb93('0x25')]({'UserId':_0x5e5009['body'][_0xdb93('0x62')],'read1stAt':_['isNil'](_0x388398[_0xdb93('0x65')])?moment()[_0xdb93('0x5f')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xdb93('0x14')](function(_0x3c198e){if(_0x3c198e){_0x9b9566[_0xdb93('0x66')]=_0x3c198e[_0xdb93('0x67')]({'plain':!![]});interaction_log['info'](_0xdb93('0x68'),_0x5e5009[_0xdb93('0x69')]['id'],_0x5e5009[_0xdb93('0x69')]['name'],_0x5e5009[_0xdb93('0x69')][_0xdb93('0x6a')],_0x9b9566[_0xdb93('0x66')]['id'],_0x5e5009[_0xdb93('0x47')]?JSON['stringify'](_0x5e5009[_0xdb93('0x47')]):_0xdb93('0x6b'));return respondWithRpcPromise('AcceptMessage',_0xdb93('0x6c'),_0x9b9566);}return null;})[_0xdb93('0x14')](function(_0x54bcd9){var _0x2e84b7=_0xdb93('0x6d')+_0x54bcd9['message'][_0xdb93('0x6e')];return db[_0xdb93('0x6f')][_0xdb93('0x31')](_0x2e84b7,{'type':db[_0xdb93('0x70')]['QueryTypes'][_0xdb93('0x71')],'raw':!![]})[_0xdb93('0x14')](function(_0x157fd9){return _0x157fd9;});})['then'](function(_0x4b131d){if(_0x4b131d){_0x9b9566[_0xdb93('0x1b')][_0xdb93('0x72')]=_0x4b131d[0x0];if(!_0x5e5009[_0xdb93('0x47')][_0xdb93('0x62')])return;return db[_0xdb93('0x73')][_0xdb93('0x46')]({'where':{'id':_0x5e5009[_0xdb93('0x47')][_0xdb93('0x62')],'role':_0xdb93('0x74')},'attributes':['id',_0xdb93('0x29'),'fullname',_0xdb93('0x75'),'internal'],'raw':!![]});}return null;})['then'](function(_0x5a7601){if(!_0x5a7601)return null;_0x9b9566['message'][_0xdb93('0x74')]=_0x5a7601;return _0x9b9566;})[_0xdb93('0x14')](function(_0x4b348d){if(_0x4b348d){if(_0x5e5009[_0xdb93('0x47')][_0xdb93('0x76')]){_0x9b9566[_0xdb93('0x1b')][_0xdb93('0x77')]=util['format']('SIP/%s',_0x5e5009[_0xdb93('0x69')]['name']);_0x9b9566[_0xdb93('0x1b')][_0xdb93('0x78')]=_0x9b9566['channel'];_0x9b9566[_0xdb93('0x1b')][_0xdb93('0x79')]=_0x9b9566[_0xdb93('0x78')];_0x9b9566[_0xdb93('0x1b')]['event']=_0xdb93('0x60');_0x9b9566[_0xdb93('0x1b')][_0xdb93('0x47')]=htmlToText['fromString'](_0x9b9566['message']['body']);return respondWithRpcPromise(_0xdb93('0x7a'),_0xdb93('0x7a'),{'event':_0xdb93('0x7b'),'message':_0x9b9566[_0xdb93('0x1b')]},client9002)[_0xdb93('0x14')](function(){return _0x9b9566;});}return _0x9b9566;}return null;})[_0xdb93('0x14')](respondWithResult(_0x58bdfc,null))['catch'](handleError(_0x58bdfc,null));};exports[_0xdb93('0x7c')]=function(_0x1500d3,_0x346c8b){var _0x5e0f83={'agent':{},'channel':_0xdb93('0x7d')};if(_0x1500d3[_0xdb93('0x47')]['id']){delete _0x1500d3[_0xdb93('0x47')]['id'];}_0x1500d3[_0xdb93('0x47')][_0xdb93('0x62')]=_0x1500d3[_0xdb93('0x47')][_0xdb93('0x62')]||_0x1500d3['user']['id'];_0x5e0f83[_0xdb93('0x74')]['id']=_0x1500d3[_0xdb93('0x47')]['UserId'];return db[_0xdb93('0x2b')]['find']({'where':{'id':_0x1500d3[_0xdb93('0x42')]['id'],'UserId':null}})[_0xdb93('0x14')](handleEntityNotFound(_0x346c8b,null))['then'](function(_0x367341){if(_0x367341){_0x5e0f83['message']=_0x367341['get']({'plain':!![]});return db['MailInteraction']['find']({'where':{'id':_0x367341[_0xdb93('0x64')]}});}return null;})[_0xdb93('0x14')](handleEntityNotFound(_0x346c8b,null))['then'](function(_0x3a88c1){if(_0x3a88c1){_0x5e0f83[_0xdb93('0x66')]=_0x3a88c1[_0xdb93('0x67')]({'plain':!![]});interaction_log[_0xdb93('0x15')]('[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x1500d3['user']['id'],_0x1500d3[_0xdb93('0x69')]['name'],_0x1500d3[_0xdb93('0x69')][_0xdb93('0x6a')],_0x5e0f83[_0xdb93('0x66')]['id'],_0x1500d3[_0xdb93('0x47')]?JSON[_0xdb93('0x19')](_0x1500d3[_0xdb93('0x47')]):_0xdb93('0x6b'));return respondWithRpcPromise(_0xdb93('0x7e'),_0xdb93('0x7f'),_0x5e0f83);}return null;})['then'](function(_0x113348){var _0x7544d9=_0xdb93('0x6d')+_0x113348['message'][_0xdb93('0x6e')];return db['sequelize']['query'](_0x7544d9,{'type':db[_0xdb93('0x70')]['QueryTypes'][_0xdb93('0x71')],'raw':!![]})[_0xdb93('0x14')](function(_0x262ffe){return _0x262ffe;});})[_0xdb93('0x14')](function(_0x62f93e){if(_0x62f93e){_0x5e0f83[_0xdb93('0x1b')][_0xdb93('0x72')]=_0x62f93e[0x0];if(!_0x1500d3['body'][_0xdb93('0x62')])return;return db[_0xdb93('0x73')][_0xdb93('0x46')]({'where':{'id':_0x1500d3[_0xdb93('0x47')]['UserId'],'role':'agent'},'attributes':['id',_0xdb93('0x29'),_0xdb93('0x80'),'email',_0xdb93('0x81')],'raw':!![]});}return null;})['then'](function(_0xb9e1af){if(!_0xb9e1af)return null;_0x5e0f83[_0xdb93('0x1b')]['agent']=_0xb9e1af;return _0x5e0f83;})[_0xdb93('0x14')](function(_0x4d1ccd){if(_0x4d1ccd){_0x4d1ccd[_0xdb93('0x1b')][_0xdb93('0x77')]=util[_0xdb93('0x5f')](_0xdb93('0x82'),_0x1500d3[_0xdb93('0x69')][_0xdb93('0x29')]);_0x4d1ccd[_0xdb93('0x1b')]['channel']=_0x5e0f83[_0xdb93('0x78')];_0x4d1ccd[_0xdb93('0x1b')][_0xdb93('0x79')]=_0x5e0f83[_0xdb93('0x78')];_0x4d1ccd[_0xdb93('0x1b')][_0xdb93('0x83')]=_0xdb93('0x7c');_0x4d1ccd[_0xdb93('0x1b')][_0xdb93('0x47')]=htmlToText[_0xdb93('0x84')](_0x5e0f83[_0xdb93('0x1b')]['body']);respondWithRpcPromise(_0xdb93('0x7a'),_0xdb93('0x7a'),{'event':_0xdb93('0x85'),'message':_0x4d1ccd['message']},client9002);return _0x5e0f83;}return null;})[_0xdb93('0x14')](respondWithResult(_0x346c8b,null))[_0xdb93('0x1c')](handleError(_0x346c8b,null));};exports[_0xdb93('0x86')]=function(_0x359256,_0x5e5324){var _0x32ff40=moment()[_0xdb93('0x87')]()[_0xdb93('0x88')]();var _0x53d056=path[_0xdb93('0x59')](config[_0xdb93('0x89')],_0xdb93('0x8a'),_0xdb93('0x8b'),_0xdb93('0x8c'));var _0x53fe40=path['join'](config['root'],'server',_0xdb93('0x8b'),_0xdb93('0x58'));var _0x2380c4=util[_0xdb93('0x5f')]('message-%s.eml',_0x32ff40);return db[_0xdb93('0x2b')][_0xdb93('0x46')]({'where':{'id':_0x359256[_0xdb93('0x42')]['id']},'attributes':['id',_0xdb93('0x47'),'from','to','cc',_0xdb93('0x8d'),_0xdb93('0x8e'),_0xdb93('0x8f')],'include':_0x359256[_0xdb93('0x31')][_0xdb93('0x58')]?[{'model':db['Attachment'],'as':'Attachments'}]:undefined})[_0xdb93('0x14')](handleEntityNotFound(_0x5e5324,null))[_0xdb93('0x14')](function(_0x3e4590){if(_0x3e4590){var _0x394458=_0x3e4590;var _0x2dc05c={'from':_0x394458['from'],'to':_0x394458['to'],'subject':_0x394458[_0xdb93('0x8e')],'html':htmlEntities[_0xdb93('0x90')](_0x394458[_0xdb93('0x47')]),'headers':{'Date':moment(_0x394458[_0xdb93('0x8f')])[_0xdb93('0x5f')](_0xdb93('0x91'))},'attachments':[]};if(_0x3e4590['cc']){_0x2dc05c[_0xdb93('0x92')]['Cc']=_0x3e4590['cc'];}if(_0x3e4590[_0xdb93('0x8d')]){_0x2dc05c[_0xdb93('0x92')][_0xdb93('0x93')]=_0x3e4590[_0xdb93('0x8d')];}return new BPromise(function(_0x5e6ce6,_0x2a851f){if(_0x3e4590[_0xdb93('0x94')]){for(var _0xdafc8=0x0;_0xdafc8<_0x3e4590[_0xdb93('0x94')]['length'];_0xdafc8++){var _0x279d9c=_0x3e4590[_0xdb93('0x94')][_0xdafc8];var _0x310ef9=path[_0xdb93('0x59')](_0x53fe40,_0x279d9c[_0xdb93('0x5a')]);if(fs[_0xdb93('0x95')](_0x310ef9)){_0x2dc05c['attachments'][_0xdb93('0x96')]({'name':_0x279d9c[_0xdb93('0x29')],'contentType':_0x279d9c[_0xdb93('0x2d')],'data':fs['readFileSync'](_0x310ef9)});}}}emlformat[_0xdb93('0x97')](_0x2dc05c,function(_0x15bea9,_0x245561){if(_0x15bea9)return _0x2a851f(_0x15bea9);fs[_0xdb93('0x98')](path['join'](_0x53d056,_0x2380c4),_0x245561);return _0x5e6ce6(_0x245561);});});}})[_0xdb93('0x14')](function(_0x19c4ce){if(_0x19c4ce){return _0x5e5324['download'](path[_0xdb93('0x59')](_0x53d056,_0x2380c4),_0x2380c4,function(_0x43f49a){if(!_0x43f49a)fs[_0xdb93('0x99')](path[_0xdb93('0x59')](_0x53d056,_0x2380c4));});}})[_0xdb93('0x1c')](handleError(_0x5e5324,null));};
\ No newline at end of file
index affa023..1b1ac7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6c0=['update','emit','hook','exports','events','../../mysqldb','MailMessage','setMaxListeners','save'];(function(_0xa9b4c5,_0x10167d){var _0xf67d20=function(_0x37108f){while(--_0x37108f){_0xa9b4c5['push'](_0xa9b4c5['shift']());}};_0xf67d20(++_0x10167d);}(_0xf6c0,0x151));var _0x0f6c=function(_0x5f23aa,_0x1cbee9){_0x5f23aa=_0x5f23aa-0x0;var _0xfe4781=_0xf6c0[_0x5f23aa];return _0xfe4781;};'use strict';var EventEmitter=require(_0x0f6c('0x0'));var MailMessage=require(_0x0f6c('0x1'))['db'][_0x0f6c('0x2')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x0f6c('0x3')](0x0);var events={'afterCreate':_0x0f6c('0x4'),'afterUpdate':_0x0f6c('0x5'),'afterDestroy':'remove'};function emitEvent(_0x3b3d07){return function(_0x388846,_0x4ec43b,_0x36781f){MailMessageEvents[_0x0f6c('0x6')](_0x3b3d07+':'+_0x388846['id'],_0x388846);MailMessageEvents['emit'](_0x3b3d07,_0x388846);_0x36781f(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailMessage[_0x0f6c('0x7')](e,emitEvent(event));}}module[_0x0f6c('0x8')]=MailMessageEvents;
\ No newline at end of file
+var _0x59fd=['hook','exports','events','MailMessage','setMaxListeners','save','update','emit','hasOwnProperty'];(function(_0x49ca18,_0x5e6d05){var _0x145d54=function(_0x30b9be){while(--_0x30b9be){_0x49ca18['push'](_0x49ca18['shift']());}};_0x145d54(++_0x5e6d05);}(_0x59fd,0x77));var _0xd59f=function(_0x305250,_0x11fac6){_0x305250=_0x305250-0x0;var _0x4e6c30=_0x59fd[_0x305250];return _0x4e6c30;};'use strict';var EventEmitter=require(_0xd59f('0x0'));var MailMessage=require('../../mysqldb')['db'][_0xd59f('0x1')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0xd59f('0x2')](0x0);var events={'afterCreate':_0xd59f('0x3'),'afterUpdate':_0xd59f('0x4'),'afterDestroy':'remove'};function emitEvent(_0x55741c){return function(_0x502263,_0x5c11a5,_0x46ae6d){MailMessageEvents[_0xd59f('0x5')](_0x55741c+':'+_0x502263['id'],_0x502263);MailMessageEvents[_0xd59f('0x5')](_0x55741c,_0x502263);_0x46ae6d(null);};}for(var e in events){if(events[_0xd59f('0x6')](e)){var event=events[e];MailMessage[_0xd59f('0x7')](e,emitEvent(event));}}module[_0xd59f('0x8')]=MailMessageEvents;
\ No newline at end of file
index 869d12a..4883963 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x848c=['UserId','MailInteraction','findOne','MailInteractionId','then','createdAt','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','path','exports','MailMessage','mail_messages','messageId','fti_mail_messages','subject','body','plainBody','fromString','models','get','direction','toLowerCase','out','secret','isNil'];(function(_0x1531a9,_0x30bd51){var _0x11b216=function(_0x3cc88f){while(--_0x3cc88f){_0x1531a9['push'](_0x1531a9['shift']());}};_0x11b216(++_0x30bd51);}(_0x848c,0x120));var _0xc848=function(_0x5477d9,_0x4cbcbf){_0x5477d9=_0x5477d9-0x0;var _0x44f7a1=_0x848c[_0x5477d9];return _0x44f7a1;};'use strict';var _=require(_0xc848('0x0'));var util=require(_0xc848('0x1'));var logger=require('../../config/logger')(_0xc848('0x2'));var moment=require(_0xc848('0x3'));var BPromise=require(_0xc848('0x4'));var rp=require('request-promise');var htmlToText=require('html-to-text');var fs=require('fs');var path=require(_0xc848('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./mailMessage.attributes');module[_0xc848('0x6')]=function(_0xf52cd2,_0x27e7ef){return _0xf52cd2['define'](_0xc848('0x7'),attributes,{'tableName':_0xc848('0x8'),'paranoid':![],'indexes':[{'name':_0xc848('0x9'),'fields':['messageId']},{'name':_0xc848('0xa'),'fields':['plainBody',_0xc848('0xb')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x41a276,_0x254ba2,_0x181c4e){if(_0x41a276[_0xc848('0xc')]){_0x41a276[_0xc848('0xd')]=htmlToText[_0xc848('0xe')](_0x41a276[_0xc848('0xc')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x181c4e(null,_0x254ba2);},'afterCreate':function(_0x126931,_0x4fba7f,_0x3cf7ff){var _0x30392b=_0xf52cd2[_0xc848('0xf')];var _0x123b2b=_0x126931[_0xc848('0x10')]({'plain':!![]});if(_0x123b2b[_0xc848('0x11')]['toLowerCase']()==='in'||_0x123b2b[_0xc848('0x11')][_0xc848('0x12')]()===_0xc848('0x13')&&!_0x123b2b[_0xc848('0x14')]&&!_[_0xc848('0x15')](_0x123b2b[_0xc848('0x16')])){_0x30392b[_0xc848('0x17')][_0xc848('0x18')]({'where':{'id':_0x123b2b[_0xc848('0x19')]}})[_0xc848('0x1a')](function(_0x33e5a6){if(_0x33e5a6){_0x33e5a6['update']({'lastMsgAt':_0x123b2b[_0xc848('0x1b')],'lastMsgDirection':_0x123b2b[_0xc848('0x11')][_0xc848('0x12')]()});}})['catch'](function(_0x53fd79){console[_0xc848('0x1c')](_0x53fd79);});}_0x3cf7ff();}},'charset':_0xc848('0x1d'),'collate':_0xc848('0x1e')});};
\ No newline at end of file
+var _0x46d5=['toLowerCase','out','secret','MailInteractionId','then','createdAt','catch','error','utf8mb4_unicode_ci','lodash','api','moment','bluebird','request-promise','html-to-text','path','../../config/environment','./mailMessage.attributes','exports','define','MailMessage','messageId','FULLTEXT','body','plainBody','models','get','direction'];(function(_0x5c12a6,_0x53301e){var _0x4e9306=function(_0x3d4f63){while(--_0x3d4f63){_0x5c12a6['push'](_0x5c12a6['shift']());}};_0x4e9306(++_0x53301e);}(_0x46d5,0xcd));var _0x546d=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x46d5[_0x167cc1];return _0x10bc4b;};'use strict';var _=require(_0x546d('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x546d('0x1'));var moment=require(_0x546d('0x2'));var BPromise=require(_0x546d('0x3'));var rp=require(_0x546d('0x4'));var htmlToText=require(_0x546d('0x5'));var fs=require('fs');var path=require(_0x546d('0x6'));var rimraf=require('rimraf');var config=require(_0x546d('0x7'));var attributes=require(_0x546d('0x8'));module[_0x546d('0x9')]=function(_0x2caf60,_0x596f9b){return _0x2caf60[_0x546d('0xa')](_0x546d('0xb'),attributes,{'tableName':'mail_messages','paranoid':![],'indexes':[{'name':_0x546d('0xc'),'fields':[_0x546d('0xc')]},{'name':'fti_mail_messages','fields':['plainBody','subject'],'type':_0x546d('0xd')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5246e1,_0x2de805,_0x41939c){if(_0x5246e1[_0x546d('0xe')]){_0x5246e1[_0x546d('0xf')]=htmlToText['fromString'](_0x5246e1[_0x546d('0xe')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x41939c(null,_0x2de805);},'afterCreate':function(_0x95c47a,_0x4ba89b,_0x544a7e){var _0x41bdab=_0x2caf60[_0x546d('0x10')];var _0x535610=_0x95c47a[_0x546d('0x11')]({'plain':!![]});if(_0x535610[_0x546d('0x12')][_0x546d('0x13')]()==='in'||_0x535610[_0x546d('0x12')][_0x546d('0x13')]()===_0x546d('0x14')&&!_0x535610[_0x546d('0x15')]&&!_['isNil'](_0x535610['UserId'])){_0x41bdab['MailInteraction']['findOne']({'where':{'id':_0x535610[_0x546d('0x16')]}})[_0x546d('0x17')](function(_0x4ff791){if(_0x4ff791){_0x4ff791['update']({'lastMsgAt':_0x535610[_0x546d('0x18')],'lastMsgDirection':_0x535610[_0x546d('0x12')][_0x546d('0x13')]()});}})[_0x546d('0x19')](function(_0x36c04f){console[_0x546d('0x1a')](_0x36c04f);});}_0x544a7e();}},'charset':'utf8mb4','collate':_0x546d('0x1b')});};
\ No newline at end of file
index 6ae289b..c4c5b7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3de3=['ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','defaults','redis','localhost','./mailMessage.socket','register','request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','result','CreateMailMessage','MailMessage','create','options','catch','lodash','moment','bluebird'];(function(_0x255326,_0x4ae5e3){var _0xba1c6a=function(_0x5b17cf){while(--_0x5b17cf){_0x255326['push'](_0x255326['shift']());}};_0xba1c6a(++_0x4ae5e3);}(_0x3de3,0x1ce));var _0x33de=function(_0xfd9fdb,_0x11b357){_0xfd9fdb=_0xfd9fdb-0x0;var _0x1558b1=_0x3de3[_0xfd9fdb];return _0x1558b1;};'use strict';var _=require(_0x33de('0x0'));var util=require('util');var moment=require(_0x33de('0x1'));var BPromise=require(_0x33de('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x33de('0x3'));var db=require(_0x33de('0x4'))['db'];var utils=require(_0x33de('0x5'));var logger=require(_0x33de('0x6'))('rpc');var config=require(_0x33de('0x7'));var jayson=require(_0x33de('0x8'));var client=jayson['client'][_0x33de('0x9')]({'port':0x232a});config['redis']=_[_0x33de('0xa')](config[_0x33de('0xb')],{'host':_0x33de('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x33de('0xb')]));require(_0x33de('0xd'))[_0x33de('0xe')](socket);function respondWithRpcPromise(_0x5e1be7,_0x2cbf35,_0x348720){return new BPromise(function(_0x8b655d,_0x241211){return client[_0x33de('0xf')](_0x5e1be7,_0x348720)[_0x33de('0x10')](function(_0x8dfa3b){logger[_0x33de('0x11')](_0x33de('0x12'),_0x2cbf35,_0x33de('0x13'));logger[_0x33de('0x14')]('MailMessage,\x20%s,\x20%s,\x20%s',_0x2cbf35,_0x33de('0x13'),JSON[_0x33de('0x15')](_0x8dfa3b));if(_0x8dfa3b['error']){if(_0x8dfa3b['error'][_0x33de('0x16')]===0x1f4){logger[_0x33de('0x17')](_0x33de('0x12'),_0x2cbf35,_0x8dfa3b[_0x33de('0x17')]['message']);return _0x241211(_0x8dfa3b[_0x33de('0x17')][_0x33de('0x18')]);}logger['error']('MailMessage,\x20%s,\x20%s',_0x2cbf35,_0x8dfa3b[_0x33de('0x17')][_0x33de('0x18')]);return _0x8b655d(_0x8dfa3b[_0x33de('0x17')]['message']);}else{logger[_0x33de('0x11')](_0x33de('0x12'),_0x2cbf35,'request\x20sent');_0x8b655d(_0x8dfa3b[_0x33de('0x19')][_0x33de('0x18')]);}})['catch'](function(_0x5bb74e){logger[_0x33de('0x17')]('MailMessage,\x20%s,\x20%s',_0x2cbf35,_0x5bb74e);_0x241211(_0x5bb74e);});});}exports[_0x33de('0x1a')]=function(_0x2f0529){var _0x3810b5=this;return new Promise(function(_0x315c9b,_0xc4f1a4){return db[_0x33de('0x1b')][_0x33de('0x1c')](_0x2f0529['body'],{'raw':_0x2f0529['options']?_0x2f0529[_0x33de('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0x33de('0x10')](function(_0x4cd8db){logger[_0x33de('0x11')](_0x33de('0x1a'),_0x2f0529);logger['debug'](_0x33de('0x1a'),_0x2f0529,JSON['stringify'](_0x4cd8db));_0x315c9b(_0x4cd8db);})[_0x33de('0x1e')](function(_0x5c602d){logger[_0x33de('0x17')](_0x33de('0x1a'),_0x5c602d[_0x33de('0x18')],_0x2f0529);_0xc4f1a4(_0x3810b5['error'](0x1f4,_0x5c602d[_0x33de('0x18')]));});});};
\ No newline at end of file
+var _0x7880=['redis','defaults','localhost','register','request','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','MailMessage','create','body','options','CreateMailMessage','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x438c8b,_0x4cce66){var _0x3aa276=function(_0x416ee){while(--_0x416ee){_0x438c8b['push'](_0x438c8b['shift']());}};_0x3aa276(++_0x4cce66);}(_0x7880,0x1f4));var _0x0788=function(_0x307ce2,_0x41a7b3){_0x307ce2=_0x307ce2-0x0;var _0x24006e=_0x7880[_0x307ce2];return _0x24006e;};'use strict';var _=require('lodash');var util=require(_0x0788('0x0'));var moment=require(_0x0788('0x1'));var BPromise=require(_0x0788('0x2'));var rs=require(_0x0788('0x3'));var fs=require('fs');var Redis=require(_0x0788('0x4'));var db=require(_0x0788('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x0788('0x6'))(_0x0788('0x7'));var config=require(_0x0788('0x8'));var jayson=require(_0x0788('0x9'));var client=jayson[_0x0788('0xa')][_0x0788('0xb')]({'port':0x232a});config[_0x0788('0xc')]=_[_0x0788('0xd')](config[_0x0788('0xc')],{'host':_0x0788('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0788('0xc')]));require('./mailMessage.socket')[_0x0788('0xf')](socket);function respondWithRpcPromise(_0x53b2f2,_0x433c26,_0x3c6d18){return new BPromise(function(_0x1f9ff6,_0xee8670){return client[_0x0788('0x10')](_0x53b2f2,_0x3c6d18)['then'](function(_0x1920b3){logger[_0x0788('0x11')](_0x0788('0x12'),_0x433c26,_0x0788('0x13'));logger[_0x0788('0x14')](_0x0788('0x15'),_0x433c26,_0x0788('0x13'),JSON['stringify'](_0x1920b3));if(_0x1920b3[_0x0788('0x16')]){if(_0x1920b3[_0x0788('0x16')][_0x0788('0x17')]===0x1f4){logger[_0x0788('0x16')]('MailMessage,\x20%s,\x20%s',_0x433c26,_0x1920b3[_0x0788('0x16')]['message']);return _0xee8670(_0x1920b3[_0x0788('0x16')][_0x0788('0x18')]);}logger[_0x0788('0x16')](_0x0788('0x12'),_0x433c26,_0x1920b3[_0x0788('0x16')][_0x0788('0x18')]);return _0x1f9ff6(_0x1920b3['error']['message']);}else{logger[_0x0788('0x11')](_0x0788('0x12'),_0x433c26,'request\x20sent');_0x1f9ff6(_0x1920b3[_0x0788('0x19')][_0x0788('0x18')]);}})[_0x0788('0x1a')](function(_0x52c339){logger[_0x0788('0x16')](_0x0788('0x12'),_0x433c26,_0x52c339);_0xee8670(_0x52c339);});});}exports['CreateMailMessage']=function(_0x11ea01){var _0x5173d6=this;return new Promise(function(_0x7d0869,_0x48bc5f){return db[_0x0788('0x1b')][_0x0788('0x1c')](_0x11ea01[_0x0788('0x1d')],{'raw':_0x11ea01[_0x0788('0x1e')]?_0x11ea01[_0x0788('0x1e')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x2270d4){logger[_0x0788('0x11')](_0x0788('0x1f'),_0x11ea01);logger[_0x0788('0x14')]('CreateMailMessage',_0x11ea01,JSON['stringify'](_0x2270d4));_0x7d0869(_0x2270d4);})[_0x0788('0x1a')](function(_0x18cc33){logger[_0x0788('0x16')]('CreateMailMessage',_0x18cc33['message'],_0x11ea01);_0x48bc5f(_0x5173d6[_0x0788('0x16')](0x1f4,_0x18cc33[_0x0788('0x18')]));});});};
\ No newline at end of file
index ab746ee..0d2535c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe790=['emit','removeListener','register','length','save','remove','update'];(function(_0x3f87d7,_0x2b39a8){var _0x1409c3=function(_0x1d1012){while(--_0x1d1012){_0x3f87d7['push'](_0x3f87d7['shift']());}};_0x1409c3(++_0x2b39a8);}(_0xe790,0x90));var _0x0e79=function(_0x299061,_0x5c660f){_0x299061=_0x299061-0x0;var _0x8c1c83=_0xe790[_0x299061];return _0x8c1c83;};'use strict';var MailMessageEvents=require('./mailMessage.events');var events=[_0x0e79('0x0'),_0x0e79('0x1'),_0x0e79('0x2')];function createListener(_0x452fca,_0x3111df){return function(_0xa7bac6){_0x3111df[_0x0e79('0x3')](_0x452fca,_0xa7bac6);};}function removeListener(_0x235f68,_0x5b674c){return function(){MailMessageEvents[_0x0e79('0x4')](_0x235f68,_0x5b674c);};}exports[_0x0e79('0x5')]=function(_0x596f75){for(var _0xca4738=0x0,_0x3a7e30=events[_0x0e79('0x6')];_0xca4738<_0x3a7e30;_0xca4738++){var _0x5c3314=events[_0xca4738];var _0x4e399a=createListener('mailMessage:'+_0x5c3314,_0x596f75);MailMessageEvents['on'](_0x5c3314,_0x4e399a);}};
\ No newline at end of file
+var _0x1306=['./mailMessage.events','save','remove','update','emit','removeListener','register','length','mailMessage:'];(function(_0x3fd689,_0x4aeec9){var _0x2a78c5=function(_0x4ed8b5){while(--_0x4ed8b5){_0x3fd689['push'](_0x3fd689['shift']());}};_0x2a78c5(++_0x4aeec9);}(_0x1306,0x17a));var _0x6130=function(_0x1f9d34,_0x7dbd84){_0x1f9d34=_0x1f9d34-0x0;var _0x415e86=_0x1306[_0x1f9d34];return _0x415e86;};'use strict';var MailMessageEvents=require(_0x6130('0x0'));var events=[_0x6130('0x1'),_0x6130('0x2'),_0x6130('0x3')];function createListener(_0x193b62,_0x31415c){return function(_0xdfa9cd){_0x31415c[_0x6130('0x4')](_0x193b62,_0xdfa9cd);};}function removeListener(_0x1c10f4,_0x33f042){return function(){MailMessageEvents[_0x6130('0x5')](_0x1c10f4,_0x33f042);};}exports[_0x6130('0x6')]=function(_0x213e6a){for(var _0x2b965d=0x0,_0x1db089=events[_0x6130('0x7')];_0x2b965d<_0x1db089;_0x2b965d++){var _0x354501=events[_0x2b965d];var _0x288b1d=createListener(_0x6130('0x8')+_0x354501,_0x213e6a);MailMessageEvents['on'](_0x354501,_0x288b1d);}};
\ No newline at end of file
index d377128..1a2de7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5be=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','show','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','addAgents','put','/:id','update','delete','destroy','/:id/teams','removeTeams','removeAgents','exports','multer','path','express','Router','fs-extra'];(function(_0x2272b5,_0x362458){var _0x110156=function(_0x5c2e32){while(--_0x5c2e32){_0x2272b5['push'](_0x2272b5['shift']());}};_0x110156(++_0x362458);}(_0xc5be,0x1bd));var _0xec5b=function(_0x1344d6,_0x2181e6){_0x1344d6=_0x1344d6-0x0;var _0xf45b24=_0xc5be[_0x1344d6];return _0xf45b24;};'use strict';var multer=require(_0xec5b('0x0'));var util=require('util');var path=require(_0xec5b('0x1'));var timeout=require('connect-timeout');var express=require(_0xec5b('0x2'));var router=express[_0xec5b('0x3')]();var fs_extra=require(_0xec5b('0x4'));var auth=require(_0xec5b('0x5'));var interaction=require(_0xec5b('0x6'));var config=require(_0xec5b('0x7'));var controller=require('./mailQueue.controller');router[_0xec5b('0x8')]('/',auth[_0xec5b('0x9')](),controller[_0xec5b('0xa')]);router['get'](_0xec5b('0xb'),auth[_0xec5b('0x9')](),controller[_0xec5b('0xc')]);router[_0xec5b('0x8')]('/:id',auth[_0xec5b('0x9')](),controller[_0xec5b('0xd')]);router['get'](_0xec5b('0xe'),auth[_0xec5b('0x9')](),controller[_0xec5b('0xf')]);router['get']('/:id/teams',auth[_0xec5b('0x9')](),controller[_0xec5b('0x10')]);router['get'](_0xec5b('0x11'),auth['isAuthenticated'](),controller[_0xec5b('0x12')]);router[_0xec5b('0x13')]('/',auth[_0xec5b('0x9')](),controller['create']);router[_0xec5b('0x13')]('/:id/teams',auth[_0xec5b('0x9')](),controller['addTeams']);router['post']('/:id/users',auth['isAuthenticated'](),controller[_0xec5b('0x14')]);router[_0xec5b('0x15')](_0xec5b('0x16'),auth[_0xec5b('0x9')](),controller[_0xec5b('0x17')]);router[_0xec5b('0x18')]('/:id',auth[_0xec5b('0x9')](),controller[_0xec5b('0x19')]);router[_0xec5b('0x18')](_0xec5b('0x1a'),auth[_0xec5b('0x9')](),controller[_0xec5b('0x1b')]);router[_0xec5b('0x18')](_0xec5b('0x11'),auth[_0xec5b('0x9')](),controller[_0xec5b('0x1c')]);module[_0xec5b('0x1d')]=router;
\ No newline at end of file
+var _0x5c4a=['index','describe','/:id','show','/:id/teams','getTeams','/:id/users','post','create','addTeams','addAgents','put','update','delete','destroy','removeTeams','exports','multer','util','path','express','Router','../../components/auth/service','../../config/environment','./mailQueue.controller','get','isAuthenticated'];(function(_0x2160a9,_0x3cbd9e){var _0xa88cf7=function(_0x51ab6f){while(--_0x51ab6f){_0x2160a9['push'](_0x2160a9['shift']());}};_0xa88cf7(++_0x3cbd9e);}(_0x5c4a,0x1dc));var _0xa5c4=function(_0xe83e2,_0xea786b){_0xe83e2=_0xe83e2-0x0;var _0x5f31aa=_0x5c4a[_0xe83e2];return _0x5f31aa;};'use strict';var multer=require(_0xa5c4('0x0'));var util=require(_0xa5c4('0x1'));var path=require(_0xa5c4('0x2'));var timeout=require('connect-timeout');var express=require(_0xa5c4('0x3'));var router=express[_0xa5c4('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xa5c4('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xa5c4('0x6'));var controller=require(_0xa5c4('0x7'));router[_0xa5c4('0x8')]('/',auth[_0xa5c4('0x9')](),controller[_0xa5c4('0xa')]);router[_0xa5c4('0x8')]('/describe',auth['isAuthenticated'](),controller[_0xa5c4('0xb')]);router[_0xa5c4('0x8')](_0xa5c4('0xc'),auth[_0xa5c4('0x9')](),controller[_0xa5c4('0xd')]);router['get']('/:id/members',auth['isAuthenticated'](),controller['getMembers']);router[_0xa5c4('0x8')](_0xa5c4('0xe'),auth['isAuthenticated'](),controller[_0xa5c4('0xf')]);router[_0xa5c4('0x8')](_0xa5c4('0x10'),auth[_0xa5c4('0x9')](),controller['getAgents']);router[_0xa5c4('0x11')]('/',auth[_0xa5c4('0x9')](),controller[_0xa5c4('0x12')]);router[_0xa5c4('0x11')](_0xa5c4('0xe'),auth[_0xa5c4('0x9')](),controller[_0xa5c4('0x13')]);router['post'](_0xa5c4('0x10'),auth['isAuthenticated'](),controller[_0xa5c4('0x14')]);router[_0xa5c4('0x15')](_0xa5c4('0xc'),auth[_0xa5c4('0x9')](),controller[_0xa5c4('0x16')]);router[_0xa5c4('0x17')](_0xa5c4('0xc'),auth[_0xa5c4('0x9')](),controller[_0xa5c4('0x18')]);router['delete']('/:id/teams',auth[_0xa5c4('0x9')](),controller[_0xa5c4('0x19')]);router['delete'](_0xa5c4('0x10'),auth[_0xa5c4('0x9')](),controller['removeAgents']);module[_0xa5c4('0x1a')]=router;
\ No newline at end of file
index e19e803..2a87972 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3be=['sequelize','exports','STRING','INTEGER','rrmemory','beepall','roundrobin'];(function(_0x1e4dca,_0x44147a){var _0x355ca9=function(_0x4d49b2){while(--_0x4d49b2){_0x1e4dca['push'](_0x1e4dca['shift']());}};_0x355ca9(++_0x44147a);}(_0xf3be,0xe0));var _0xef3b=function(_0x4099b4,_0x5455cc){_0x4099b4=_0x4099b4-0x0;var _0x32faa7=_0xf3be[_0x4099b4];return _0x32faa7;};'use strict';var Sequelize=require(_0xef3b('0x0'));module[_0xef3b('0x1')]={'name':{'type':Sequelize[_0xef3b('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xef3b('0x2')]},'timeout':{'type':Sequelize[_0xef3b('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xef3b('0x4'),_0xef3b('0x5'),_0xef3b('0x6'))}};
\ No newline at end of file
+var _0xbabc=['roundrobin','sequelize','exports','STRING','name','INTEGER','ENUM','rrmemory'];(function(_0x4a0411,_0x5a91d4){var _0x248d1f=function(_0x5e60ec){while(--_0x5e60ec){_0x4a0411['push'](_0x4a0411['shift']());}};_0x248d1f(++_0x5a91d4);}(_0xbabc,0x81));var _0xcbab=function(_0x1b2633,_0x40384e){_0x1b2633=_0x1b2633-0x0;var _0xafc59f=_0xbabc[_0x1b2633];return _0xafc59f;};'use strict';var Sequelize=require(_0xcbab('0x0'));module[_0xcbab('0x1')]={'name':{'type':Sequelize[_0xcbab('0x2')],'unique':_0xcbab('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xcbab('0x2')]},'timeout':{'type':Sequelize[_0xcbab('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xcbab('0x5')](_0xcbab('0x6'),'beepall',_0xcbab('0x7'))}};
\ No newline at end of file
index 77ff89c..39a7135 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x142b=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','crypto','jsforce','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','MailQueues','end','error','name','send','index','map','MailQueue','type','query','keys','filters','intersection','attributes','model','fields','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','rawAttributes','length','merge','find','create','body','user','get','UserProfileSection','autoAssociation','UserProfileResource','getMembers','findOne','UserMailQueue','order','MailQueueId','User','findAndCountAll','UserId','mailPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','addTeams','ids','voicePause','interface','flatMap','Agents','transaction','each','findOrCreate','emit','userMailQueue:save','removeTeams','field','tq.TeamId','from','team_has_mail_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','sequelize','QueryTypes','SELECT','TeamId','all','union','value','isEmpty','removeAgents','userMailQueue:remove','addAgents','omit','spread','isArray','getAgents'];(function(_0x285726,_0x167ab9){var _0x54feb3=function(_0x53ab3f){while(--_0x53ab3f){_0x285726['push'](_0x285726['shift']());}};_0x54feb3(++_0x167ab9);}(_0x142b,0x10e));var _0xb142=function(_0x1d8b89,_0x4ed786){_0x1d8b89=_0x1d8b89-0x0;var _0x29a9b7=_0x142b[_0x1d8b89];return _0x29a9b7;};'use strict';var emlformat=require(_0xb142('0x0'));var rimraf=require(_0xb142('0x1'));var zipdir=require(_0xb142('0x2'));var jsonpatch=require(_0xb142('0x3'));var rp=require(_0xb142('0x4'));var moment=require('moment');var BPromise=require(_0xb142('0x5'));var Mustache=require(_0xb142('0x6'));var util=require(_0xb142('0x7'));var path=require(_0xb142('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('lodash');var squel=require('squel');var crypto=require(_0xb142('0x9'));var jsforce=require(_0xb142('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xb142('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb142('0xc'));var authService=require(_0xb142('0xd'));var qs=require(_0xb142('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb142('0xf'));var logger=require(_0xb142('0x10'))(_0xb142('0x11'));var utils=require('../../config/utils');var config=require(_0xb142('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xb142('0x13'))['db'];config[_0xb142('0x14')]=_[_0xb142('0x15')](config[_0xb142('0x14')],{'host':_0xb142('0x16'),'port':0x18eb});var socket=require(_0xb142('0x17'))(new Redis(config[_0xb142('0x14')]));require('./mailQueue.socket')[_0xb142('0x18')](socket);function respondWithStatusCode(_0x2e8e3c,_0x457945){_0x457945=_0x457945||0xcc;return function(_0x5cd126){if(_0x5cd126){return _0x2e8e3c['sendStatus'](_0x457945);}return _0x2e8e3c[_0xb142('0x19')](_0x457945)['end']();};}function respondWithResult(_0x49df23,_0x18fc62){_0x18fc62=_0x18fc62||0xc8;return function(_0x3012d8){if(_0x3012d8){return _0x49df23[_0xb142('0x19')](_0x18fc62)[_0xb142('0x1a')](_0x3012d8);}};}function respondWithFilteredResult(_0x579bce,_0x3f732f){return function(_0x260dbf){if(_0x260dbf){var _0x39fe76=typeof _0x3f732f['offset']===_0xb142('0x1b')&&typeof _0x3f732f[_0xb142('0x1c')]===_0xb142('0x1b');var _0x19a64d=_0x260dbf[_0xb142('0x1d')];var _0x3ccebe=_0x39fe76?0x0:_0x3f732f[_0xb142('0x1e')];var _0x462b45=_0x39fe76?_0x260dbf['count']:_0x3f732f[_0xb142('0x1e')]+_0x3f732f[_0xb142('0x1c')];var _0x18cae5;if(_0x462b45>=_0x19a64d){_0x462b45=_0x19a64d;_0x18cae5=0xc8;}else{_0x18cae5=0xce;}_0x579bce['status'](_0x18cae5);return _0x579bce[_0xb142('0x1f')](_0xb142('0x20'),_0x3ccebe+'-'+_0x462b45+'/'+_0x19a64d)[_0xb142('0x1a')](_0x260dbf);}return null;};}function patchUpdates(_0x4b5d55){return function(_0xcb0a22){try{jsonpatch[_0xb142('0x21')](_0xcb0a22,_0x4b5d55,!![]);}catch(_0x387c96){return BPromise[_0xb142('0x22')](_0x387c96);}return _0xcb0a22[_0xb142('0x23')]();};}function saveUpdates(_0x50094f,_0x38a68e){return function(_0x13193e){if(_0x13193e){return _0x13193e[_0xb142('0x24')](_0x50094f)[_0xb142('0x25')](function(_0x587250){return _0x587250;});}return null;};}function removeEntity(_0x3f02ac,_0x45fa72){return function(_0x3f6137){if(_0x3f6137){return _0x3f6137[_0xb142('0x26')]()[_0xb142('0x25')](function(){var _0x4725a2=_0x3f6137['get']({'plain':!![]});var _0x3bc169=_0xb142('0x27');return db['UserProfileResource'][_0xb142('0x26')]({'where':{'type':_0x3bc169,'resourceId':_0x4725a2['id']}})[_0xb142('0x25')](function(){return _0x3f6137;});})[_0xb142('0x25')](function(){_0x3f02ac[_0xb142('0x19')](0xcc)[_0xb142('0x28')]();});}};}function handleEntityNotFound(_0x2b47db,_0x54af32){return function(_0x595aaf){if(!_0x595aaf){_0x2b47db['sendStatus'](0x194);}return _0x595aaf;};}function handleError(_0x3bcfb7,_0x2b522c){_0x2b522c=_0x2b522c||0x1f4;return function(_0x22670b){logger[_0xb142('0x29')](_0x22670b['stack']);if(_0x22670b[_0xb142('0x2a')]){delete _0x22670b[_0xb142('0x2a')];}_0x3bcfb7[_0xb142('0x19')](_0x2b522c)[_0xb142('0x2b')](_0x22670b);};}exports[_0xb142('0x2c')]=function(_0x235833,_0x2645d8){var _0x414074={},_0x533de0={},_0x519c5f={'count':0x0,'rows':[]};var _0xe5dfe0=_[_0xb142('0x2d')](db[_0xb142('0x2e')]['rawAttributes'],function(_0x26d218){return{'name':_0x26d218['fieldName'],'type':_0x26d218[_0xb142('0x2f')]['key']};});_0x533de0['model']=_['map'](_0xe5dfe0,_0xb142('0x2a'));_0x533de0[_0xb142('0x30')]=_[_0xb142('0x31')](_0x235833[_0xb142('0x30')]);_0x533de0[_0xb142('0x32')]=_[_0xb142('0x33')](_0x533de0['model'],_0x533de0[_0xb142('0x30')]);_0x414074[_0xb142('0x34')]=_[_0xb142('0x33')](_0x533de0[_0xb142('0x35')],qs[_0xb142('0x36')](_0x235833[_0xb142('0x30')][_0xb142('0x36')]));_0x414074[_0xb142('0x34')]=_0x414074[_0xb142('0x34')]['length']?_0x414074[_0xb142('0x34')]:_0x533de0[_0xb142('0x35')];if(!_0x235833[_0xb142('0x30')][_0xb142('0x37')](_0xb142('0x38'))){_0x414074[_0xb142('0x1c')]=qs['limit'](_0x235833[_0xb142('0x30')]['limit']);_0x414074[_0xb142('0x1e')]=qs[_0xb142('0x1e')](_0x235833[_0xb142('0x30')][_0xb142('0x1e')]);}_0x414074['order']=qs[_0xb142('0x39')](_0x235833['query'][_0xb142('0x39')]);_0x414074[_0xb142('0x3a')]=qs[_0xb142('0x32')](_[_0xb142('0x3b')](_0x235833['query'],_0x533de0['filters']),_0xe5dfe0);if(_0x235833[_0xb142('0x30')][_0xb142('0x3c')]){_0x414074['where']=_['merge'](_0x414074[_0xb142('0x3a')],{'$or':_['map'](_0xe5dfe0,function(_0x34933c){if(_0x34933c[_0xb142('0x2f')]!==_0xb142('0x3d')){var _0x213b25={};_0x213b25[_0x34933c[_0xb142('0x2a')]]={'$like':'%'+_0x235833[_0xb142('0x30')][_0xb142('0x3c')]+'%'};return _0x213b25;}})});}_0x414074=_['merge']({},_0x414074,_0x235833[_0xb142('0x3e')]);var _0x4d9279={'where':_0x414074['where']};return db['MailQueue']['count'](_0x4d9279)['then'](function(_0x155f37){_0x519c5f[_0xb142('0x1d')]=_0x155f37;if(_0x235833['query'][_0xb142('0x3f')]){_0x414074['include']=[{'all':!![]}];}return db[_0xb142('0x2e')][_0xb142('0x40')](_0x414074);})[_0xb142('0x25')](function(_0x5164c0){_0x519c5f[_0xb142('0x41')]=_0x5164c0;return _0x519c5f;})[_0xb142('0x25')](respondWithFilteredResult(_0x2645d8,_0x414074))[_0xb142('0x42')](handleError(_0x2645d8,null));};exports[_0xb142('0x43')]=function(_0x1c99c9,_0x169a47){var _0x44eec4={'raw':!![],'where':{'id':_0x1c99c9[_0xb142('0x44')]['id']}},_0x440f00={};_0x440f00['model']=_['keys'](db['MailQueue'][_0xb142('0x45')]);_0x440f00[_0xb142('0x30')]=_[_0xb142('0x31')](_0x1c99c9[_0xb142('0x30')]);_0x440f00['filters']=_[_0xb142('0x33')](_0x440f00[_0xb142('0x35')],_0x440f00[_0xb142('0x30')]);_0x44eec4[_0xb142('0x34')]=_[_0xb142('0x33')](_0x440f00[_0xb142('0x35')],qs['fields'](_0x1c99c9[_0xb142('0x30')]['fields']));_0x44eec4[_0xb142('0x34')]=_0x44eec4[_0xb142('0x34')][_0xb142('0x46')]?_0x44eec4[_0xb142('0x34')]:_0x440f00[_0xb142('0x35')];if(_0x1c99c9[_0xb142('0x30')][_0xb142('0x3f')]){_0x44eec4['include']=[{'all':!![]}];}_0x44eec4=_[_0xb142('0x47')]({},_0x44eec4,_0x1c99c9['options']);return db[_0xb142('0x2e')][_0xb142('0x48')](_0x44eec4)[_0xb142('0x25')](handleEntityNotFound(_0x169a47,null))[_0xb142('0x25')](respondWithResult(_0x169a47,null))[_0xb142('0x42')](handleError(_0x169a47,null));};exports[_0xb142('0x49')]=function(_0x2c4608,_0x52fe){return db['MailQueue'][_0xb142('0x49')](_0x2c4608[_0xb142('0x4a')],{})[_0xb142('0x25')](function(_0x112940){var _0x2898f2=_0x2c4608[_0xb142('0x4b')][_0xb142('0x4c')]({'plain':!![]});if(!_0x2898f2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2898f2['role']===_0xb142('0x4b')){var _0x401548=_0x112940['get']({'plain':!![]});var _0x433c61=_0xb142('0x27');return db[_0xb142('0x4d')][_0xb142('0x48')]({'where':{'name':_0x433c61,'userProfileId':_0x2898f2['userProfileId']},'raw':!![]})[_0xb142('0x25')](function(_0x1842f2){if(_0x1842f2&&_0x1842f2[_0xb142('0x4e')]===0x0){return db[_0xb142('0x4f')]['create']({'name':_0x401548[_0xb142('0x2a')],'resourceId':_0x401548['id'],'type':_0x1842f2[_0xb142('0x2a')],'sectionId':_0x1842f2['id']},{})[_0xb142('0x25')](function(){return _0x112940;});}else{return _0x112940;}})[_0xb142('0x42')](function(_0x27f7d9){logger[_0xb142('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x27f7d9);throw _0x27f7d9;});}return _0x112940;})['then'](respondWithResult(_0x52fe,0xc9))[_0xb142('0x42')](handleError(_0x52fe,null));};exports[_0xb142('0x24')]=function(_0xb240c7,_0x3f059d){if(_0xb240c7[_0xb142('0x4a')]['id']){delete _0xb240c7['body']['id'];}return db[_0xb142('0x2e')]['find']({'where':{'id':_0xb240c7['params']['id']}})[_0xb142('0x25')](handleEntityNotFound(_0x3f059d,null))[_0xb142('0x25')](saveUpdates(_0xb240c7[_0xb142('0x4a')],null))[_0xb142('0x25')](respondWithResult(_0x3f059d,null))[_0xb142('0x42')](handleError(_0x3f059d,null));};exports[_0xb142('0x26')]=function(_0x924d1c,_0x3cdfa4){return db[_0xb142('0x2e')][_0xb142('0x48')]({'where':{'id':_0x924d1c[_0xb142('0x44')]['id']}})[_0xb142('0x25')](handleEntityNotFound(_0x3cdfa4,null))['then'](removeEntity(_0x3cdfa4,null))[_0xb142('0x42')](handleError(_0x3cdfa4,null));};exports['describe']=function(_0x1fd601,_0x3bedc5){return db[_0xb142('0x2e')]['describe']()[_0xb142('0x25')](respondWithResult(_0x3bedc5,null))[_0xb142('0x42')](handleError(_0x3bedc5,null));};exports[_0xb142('0x50')]=function(_0x1fcfd5,_0xe8f0b3,_0x104802){var _0x12dd35={'raw':!![],'where':{}},_0x5ce745={},_0x334e25;return db[_0xb142('0x2e')][_0xb142('0x51')]({'where':{'id':_0x1fcfd5['params']['id']}})['then'](handleEntityNotFound(_0xe8f0b3,null))['then'](function(_0x232146){if(_0x232146){_0x334e25=_0x232146[_0xb142('0x4c')]({'plain':!![]});_0x5ce745[_0xb142('0x35')]=_['keys'](db[_0xb142('0x52')][_0xb142('0x45')]);_0x5ce745[_0xb142('0x30')]=_[_0xb142('0x31')](_0x1fcfd5[_0xb142('0x30')]);_0x5ce745['filters']=_[_0xb142('0x33')](_0x5ce745[_0xb142('0x35')],_0x5ce745['query']);_0x12dd35[_0xb142('0x34')]=_[_0xb142('0x33')](_0x5ce745[_0xb142('0x35')],qs[_0xb142('0x36')](_0x1fcfd5[_0xb142('0x30')][_0xb142('0x36')]));_0x12dd35[_0xb142('0x34')]=_0x12dd35[_0xb142('0x34')][_0xb142('0x46')]?_0x12dd35[_0xb142('0x34')]:_0x5ce745[_0xb142('0x35')];if(!_0x1fcfd5[_0xb142('0x30')][_0xb142('0x37')](_0xb142('0x38'))){_0x12dd35[_0xb142('0x1c')]=qs[_0xb142('0x1c')](_0x1fcfd5[_0xb142('0x30')][_0xb142('0x1c')]);_0x12dd35[_0xb142('0x1e')]=qs[_0xb142('0x1e')](_0x1fcfd5['query'][_0xb142('0x1e')]);}_0x12dd35[_0xb142('0x53')]=qs[_0xb142('0x39')](_0x1fcfd5[_0xb142('0x30')][_0xb142('0x39')]);_0x12dd35[_0xb142('0x3a')]=qs[_0xb142('0x32')](_[_0xb142('0x3b')](_0x1fcfd5[_0xb142('0x30')],_0x5ce745['filters']));_0x12dd35['where'][_0xb142('0x54')]=_0x232146['id'];if(_0x1fcfd5[_0xb142('0x30')]['filter']){_0x12dd35['where']=_[_0xb142('0x47')](_0x12dd35['where'],{'$or':_['map'](_0x12dd35['attributes'],function(_0xa954fc){var _0x150499={};_0x150499[_0xa954fc]={'$like':'%'+_0x1fcfd5['query'][_0xb142('0x3c')]+'%'};return _0x150499;})});}_0x12dd35=_['merge']({},_0x12dd35,_0x1fcfd5['options']);return db[_0xb142('0x52')][_0xb142('0x40')](_0x12dd35);}})['then'](function(_0x4e5e95){if(_0x4e5e95){return db[_0xb142('0x55')][_0xb142('0x56')]({'where':{'id':_[_0xb142('0x2d')](_0x4e5e95,_0xb142('0x57')),'role':'agent'},'attributes':['id','name',_0xb142('0x58'),_0xb142('0x59'),_0xb142('0x5a')]});}})[_0xb142('0x25')](function(_0x398bd1){if(_0x398bd1){return{'count':_0x398bd1[_0xb142('0x1d')],'rows':_[_0xb142('0x2d')](_0x398bd1[_0xb142('0x41')],function(_0x3bfb83){return{'membername':_0x3bfb83[_0xb142('0x2a')],'UserId':_0x3bfb83['id'],'queue_name':_0x334e25[_0xb142('0x2a')],'MailQueueId':_0x334e25['id'],'interface':util[_0xb142('0x5b')](_0xb142('0x5c'),_0xb142('0x5d'),_0x3bfb83[_0xb142('0x2a')]),'penalty':0x0,'paused':_0x3bfb83[_0xb142('0x58')],'createdAt':_0x3bfb83[_0xb142('0x5a')],'updatedAt':_0x3bfb83[_0xb142('0x59')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0xe8f0b3,_0x12dd35))['catch'](handleError(_0xe8f0b3,null));};exports[_0xb142('0x5e')]=function(_0x19ae67,_0x362198,_0x3d0fe7){var _0x55902d={};var _0x3f4e18={};var _0x1debe0;var _0x5242b4;return db['MailQueue']['findOne']({'where':{'id':_0x19ae67[_0xb142('0x44')]['id']}})[_0xb142('0x25')](handleEntityNotFound(_0x362198,null))[_0xb142('0x25')](function(_0x8691d7){if(_0x8691d7){_0x1debe0=_0x8691d7;_0x3f4e18[_0xb142('0x35')]=_[_0xb142('0x31')](db[_0xb142('0x5f')]['rawAttributes']);_0x3f4e18['query']=_[_0xb142('0x31')](_0x19ae67['query']);_0x3f4e18[_0xb142('0x32')]=_['intersection'](_0x3f4e18[_0xb142('0x35')],_0x3f4e18[_0xb142('0x30')]);_0x55902d['attributes']=_[_0xb142('0x33')](_0x3f4e18['model'],qs[_0xb142('0x36')](_0x19ae67['query']['fields']));_0x55902d['attributes']=_0x55902d[_0xb142('0x34')][_0xb142('0x46')]?_0x55902d[_0xb142('0x34')]:_0x3f4e18[_0xb142('0x35')];_0x55902d[_0xb142('0x53')]=qs[_0xb142('0x39')](_0x19ae67[_0xb142('0x30')]['sort']);_0x55902d[_0xb142('0x3a')]=qs[_0xb142('0x32')](_[_0xb142('0x3b')](_0x19ae67[_0xb142('0x30')],_0x3f4e18[_0xb142('0x32')]));if(_0x19ae67[_0xb142('0x30')][_0xb142('0x3c')]){_0x55902d[_0xb142('0x3a')]=_['merge'](_0x55902d[_0xb142('0x3a')],{'$or':_[_0xb142('0x2d')](_0x55902d[_0xb142('0x34')],function(_0x36fa97){var _0xba7f02={};_0xba7f02[_0x36fa97]={'$like':'%'+_0x19ae67[_0xb142('0x30')][_0xb142('0x3c')]+'%'};return _0xba7f02;})});}_0x55902d=_[_0xb142('0x47')]({},_0x55902d,_0x19ae67[_0xb142('0x3e')]);return _0x1debe0[_0xb142('0x5e')](_0x55902d);}})[_0xb142('0x25')](function(_0x2c7bcf){if(_0x2c7bcf){_0x5242b4=_0x2c7bcf['length'];if(!_0x19ae67['query'][_0xb142('0x37')](_0xb142('0x38'))){_0x55902d[_0xb142('0x1c')]=qs[_0xb142('0x1c')](_0x19ae67[_0xb142('0x30')][_0xb142('0x1c')]);_0x55902d[_0xb142('0x1e')]=qs[_0xb142('0x1e')](_0x19ae67[_0xb142('0x30')][_0xb142('0x1e')]);}return _0x1debe0['getTeams'](_0x55902d);}})['then'](function(_0x5c508c){if(_0x5c508c){return _0x5c508c?{'count':_0x5242b4,'rows':_0x5c508c}:null;}})[_0xb142('0x25')](respondWithResult(_0x362198,null))[_0xb142('0x42')](handleError(_0x362198,null));};exports[_0xb142('0x60')]=function(_0x238004,_0x25b138,_0x360471){var _0x284a2f=_0x238004[_0xb142('0x4a')][_0xb142('0x61')];return db[_0xb142('0x5f')]['findAll']({'where':{'id':_0x284a2f},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0xb142('0x2a'),'online',_0xb142('0x62'),_0xb142('0x63')],'raw':!![]}]})[_0xb142('0x25')](function(_0xd5cdea){if(_0xd5cdea){var _0x502fb5=_[_0xb142('0x64')](_0xd5cdea,function(_0x51dca6){var _0x1a8346=_0x51dca6[_0xb142('0x4c')]({'plain':!![]});return _0x1a8346[_0xb142('0x65')];});return db[_0xb142('0x2e')][_0xb142('0x48')]({'where':{'id':_0x238004[_0xb142('0x44')]['id']}})[_0xb142('0x25')](function(_0x4c501f){return db['sequelize'][_0xb142('0x66')](function(_0x642c91){return _0x4c501f['addTeams'](_0x284a2f,{'transaction':_0x642c91})['then'](function(){return BPromise[_0xb142('0x67')](_0x502fb5,function(_0x35eb51){return db[_0xb142('0x52')][_0xb142('0x68')]({'where':{'UserId':_0x35eb51['id'],'MailQueueId':_0x238004[_0xb142('0x44')]['id']},'transaction':_0x642c91});});})[_0xb142('0x25')](function(){_0x502fb5['forEach'](function(_0x1ad086){socket[_0xb142('0x69')](_0xb142('0x6a'),{'UserId':_0x1ad086['id'],'MailQueueId':_0x4c501f['id']});});});});});}})[_0xb142('0x25')](respondWithStatusCode(_0x25b138,null))[_0xb142('0x42')](handleError(_0x25b138,null));};exports[_0xb142('0x6b')]=function(_0x5e1166,_0x558f06,_0x1ada71){return db[_0xb142('0x5f')][_0xb142('0x40')]({'where':{'id':_0x5e1166[_0xb142('0x30')][_0xb142('0x61')]},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xb142('0x25')](handleEntityNotFound(_0x558f06,null))[_0xb142('0x25')](function(_0x48ac4c){var _0x162134=_[_0xb142('0x2d')](_0x48ac4c,'id');var _0x2214a4=[];var _0x214f98=[];var _0x26ffbc=squel['select']();_0x26ffbc[_0xb142('0x6c')](_0xb142('0x6d'))[_0xb142('0x6e')](_0xb142('0x6f'),'tq')[_0xb142('0x70')](_0xb142('0x71'),'ut',_0xb142('0x72'))[_0xb142('0x3a')](_0xb142('0x73'),_0x5e1166['params']['id']);for(var _0x554bd3=0x0;_0x554bd3<_0x48ac4c['length'];_0x554bd3+=0x1){let _0x1ba260=_0x48ac4c[_0x554bd3];for(var _0x1bb7bd=0x0;_0x1bb7bd<_0x1ba260[_0xb142('0x65')][_0xb142('0x46')];_0x1bb7bd+=0x1){let _0x378a9f=_0x1ba260['Agents'][_0x1bb7bd];var _0x472d61=_0x26ffbc[_0xb142('0x74')]();_0x472d61[_0xb142('0x3a')](_0xb142('0x75'),_0x378a9f['id']);_0x214f98[_0xb142('0x76')](db['sequelize'][_0xb142('0x30')](_0x472d61[_0xb142('0x77')](),{'type':db[_0xb142('0x78')][_0xb142('0x79')][_0xb142('0x7a')]})['then'](function(_0x36a972){if(_0x36a972[_0xb142('0x46')]===0x1){return _0x378a9f['id'];}else{var _0x36e3f4=_['every'](_[_0xb142('0x2d')](_0x36a972,_0xb142('0x7b')),function(_0x562b1c){return _['includes'](_0x162134,_0x562b1c);});if(_0x36e3f4){return _0x378a9f['id'];}}}));}}return BPromise[_0xb142('0x7c')](_0x214f98)['then'](function(_0x57061c){_0x2214a4=_(_0x2214a4)[_0xb142('0x7d')](_0x57061c)['compact']()[_0xb142('0x7e')]();return db[_0xb142('0x2e')][_0xb142('0x48')]({'where':{'id':_0x5e1166[_0xb142('0x44')]['id']}})[_0xb142('0x25')](function(_0x5b3118){return db['sequelize'][_0xb142('0x66')](function(_0x235abc){return _0x5b3118['removeTeams'](_0x5e1166[_0xb142('0x30')]['ids'],{'transaction':_0x235abc})[_0xb142('0x25')](function(){if(!_[_0xb142('0x7f')](_0x2214a4)){return _0x5b3118[_0xb142('0x80')](_0x2214a4,{'transaction':_0x235abc});}})[_0xb142('0x25')](function(){_0x2214a4['forEach'](function(_0x29187a){socket[_0xb142('0x69')](_0xb142('0x81'),{'UserId':_0x29187a,'MailQueueId':_0x5b3118['id']});});});});});});})['then'](respondWithStatusCode(_0x558f06,null))[_0xb142('0x42')](handleError(_0x558f06,null));};exports['addAgents']=function(_0x25d381,_0x4a8dfc,_0x2b4327){return db['MailQueue'][_0xb142('0x48')]({'where':{'id':_0x25d381['params']['id']}})[_0xb142('0x25')](handleEntityNotFound(_0x4a8dfc,null))[_0xb142('0x25')](function(_0x549a21){if(_0x549a21){return _0x549a21[_0xb142('0x82')](_0x25d381[_0xb142('0x4a')][_0xb142('0x61')],_[_0xb142('0x83')](_0x25d381['body'],['ids','id'])||{})[_0xb142('0x84')](function(_0x5e4adb){for(var _0x39f344=0x0;_0x39f344<_0x25d381[_0xb142('0x4a')]['ids']['length'];_0x39f344+=0x1){socket[_0xb142('0x69')]('userMailQueue:save',{'UserId':Number(_0x25d381['body']['ids'][_0x39f344]),'MailQueueId':Number(_0x25d381[_0xb142('0x44')]['id'])});}return _0x5e4adb;});}})[_0xb142('0x25')](respondWithResult(_0x4a8dfc,null))['catch'](handleError(_0x4a8dfc,null));};exports[_0xb142('0x80')]=function(_0x34ad50,_0x4fdeb0,_0x5e040a){return db[_0xb142('0x2e')][_0xb142('0x48')]({'where':{'id':_0x34ad50[_0xb142('0x44')]['id']}})[_0xb142('0x25')](handleEntityNotFound(_0x4fdeb0,null))[_0xb142('0x25')](function(_0x17cbe5){if(_0x17cbe5){return _0x17cbe5[_0xb142('0x80')](_0x34ad50[_0xb142('0x30')]['ids'])[_0xb142('0x25')](function(){if(_[_0xb142('0x85')](_0x34ad50[_0xb142('0x30')][_0xb142('0x61')])){for(var _0x28a4aa=0x0;_0x28a4aa<_0x34ad50[_0xb142('0x30')][_0xb142('0x61')]['length'];_0x28a4aa+=0x1){socket[_0xb142('0x69')](_0xb142('0x81'),{'UserId':Number(_0x34ad50[_0xb142('0x30')][_0xb142('0x61')][_0x28a4aa]),'MailQueueId':Number(_0x34ad50[_0xb142('0x44')]['id'])});}}else{socket[_0xb142('0x69')]('userMailQueue:remove',{'UserId':Number(_0x34ad50['query'][_0xb142('0x61')]),'MailQueueId':Number(_0x34ad50[_0xb142('0x44')]['id'])});}});}})['then'](respondWithStatusCode(_0x4fdeb0,null))[_0xb142('0x42')](handleError(_0x4fdeb0,null));};exports[_0xb142('0x86')]=function(_0x57bdf1,_0x3e168e,_0x3c29ee){var _0x20ca3a={};var _0x3ff679={};var _0x3fe10c;var _0x24df08;return db[_0xb142('0x2e')][_0xb142('0x51')]({'where':{'id':_0x57bdf1[_0xb142('0x44')]['id']}})[_0xb142('0x25')](handleEntityNotFound(_0x3e168e,null))[_0xb142('0x25')](function(_0x55cba5){if(_0x55cba5){_0x3fe10c=_0x55cba5;_0x3ff679['model']=_[_0xb142('0x31')](db[_0xb142('0x55')][_0xb142('0x45')]);_0x3ff679[_0xb142('0x30')]=_[_0xb142('0x31')](_0x57bdf1[_0xb142('0x30')]);_0x3ff679[_0xb142('0x32')]=_[_0xb142('0x33')](_0x3ff679[_0xb142('0x35')],_0x3ff679[_0xb142('0x30')]);_0x20ca3a['attributes']=_[_0xb142('0x33')](_0x3ff679['model'],qs[_0xb142('0x36')](_0x57bdf1['query'][_0xb142('0x36')]));_0x20ca3a[_0xb142('0x34')]=_0x20ca3a[_0xb142('0x34')][_0xb142('0x46')]?_0x20ca3a[_0xb142('0x34')]:_0x3ff679[_0xb142('0x35')];_0x20ca3a['order']=qs[_0xb142('0x39')](_0x57bdf1[_0xb142('0x30')][_0xb142('0x39')]);_0x20ca3a[_0xb142('0x3a')]=qs['filters'](_[_0xb142('0x3b')](_0x57bdf1[_0xb142('0x30')],_0x3ff679['filters']));if(_0x57bdf1[_0xb142('0x30')][_0xb142('0x3c')]){_0x20ca3a[_0xb142('0x3a')]=_[_0xb142('0x47')](_0x20ca3a[_0xb142('0x3a')],{'$or':_['map'](_0x20ca3a[_0xb142('0x34')],function(_0x388752){var _0x47a633={};_0x47a633[_0x388752]={'$like':'%'+_0x57bdf1[_0xb142('0x30')][_0xb142('0x3c')]+'%'};return _0x47a633;})});}_0x20ca3a=_['merge']({},_0x20ca3a,_0x57bdf1[_0xb142('0x3e')]);return _0x3fe10c[_0xb142('0x86')](_0x20ca3a);}})[_0xb142('0x25')](function(_0x3f5729){if(_0x3f5729){_0x24df08=_0x3f5729[_0xb142('0x46')];if(!_0x57bdf1[_0xb142('0x30')][_0xb142('0x37')](_0xb142('0x38'))){_0x20ca3a[_0xb142('0x1c')]=qs[_0xb142('0x1c')](_0x57bdf1['query'][_0xb142('0x1c')]);_0x20ca3a['offset']=qs[_0xb142('0x1e')](_0x57bdf1['query'][_0xb142('0x1e')]);}return _0x3fe10c[_0xb142('0x86')](_0x20ca3a);}})[_0xb142('0x25')](function(_0x1ff26a){if(_0x1ff26a){return _0x1ff26a?{'count':_0x24df08,'rows':_0x1ff26a}:null;}})[_0xb142('0x25')](respondWithResult(_0x3e168e,null))['catch'](handleError(_0x3e168e,null));};
\ No newline at end of file
+var _0x1eaa=['findOne','UserMailQueue','User','UserId','agent','mailPause','updatedAt','format','SIP','getTeams','addTeams','ids','Team','Agents','online','voicePause','interface','flatMap','sequelize','findOrCreate','forEach','emit','userMailQueue:save','removeTeams','field','tq.TeamId','team_has_mail_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','all','compact','value','isEmpty','addAgents','omit','removeAgents','isArray','userMailQueue:remove','getAgents','eml-format','fast-json-patch','request-promise','bluebird','path','sox','ejs','fs-extra','lodash','crypto','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','sendStatus','status','end','undefined','limit','count','set','Content-Range','json','apply','reject','then','MailQueues','UserProfileResource','destroy','stack','name','send','map','MailQueue','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','params','rawAttributes','options','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe'];(function(_0x1d47a1,_0x1673bf){var _0x3fac4e=function(_0x56b89d){while(--_0x56b89d){_0x1d47a1['push'](_0x1d47a1['shift']());}};_0x3fac4e(++_0x1673bf);}(_0x1eaa,0x1c7));var _0xa1ea=function(_0x1bd50f,_0x136e51){_0x1bd50f=_0x1bd50f-0x0;var _0xa9ef2=_0x1eaa[_0x1bd50f];return _0xa9ef2;};'use strict';var emlformat=require(_0xa1ea('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xa1ea('0x1'));var rp=require(_0xa1ea('0x2'));var moment=require('moment');var BPromise=require(_0xa1ea('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0xa1ea('0x4'));var sox=require(_0xa1ea('0x5'));var csv=require('to-csv');var ejs=require(_0xa1ea('0x6'));var fs=require('fs');var fs_extra=require(_0xa1ea('0x7'));var _=require(_0xa1ea('0x8'));var squel=require('squel');var crypto=require(_0xa1ea('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xa1ea('0xa'));var querystring=require(_0xa1ea('0xb'));var Papa=require(_0xa1ea('0xc'));var Redis=require(_0xa1ea('0xd'));var authService=require(_0xa1ea('0xe'));var qs=require(_0xa1ea('0xf'));var as=require(_0xa1ea('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa1ea('0x11'))('api');var utils=require('../../config/utils');var config=require(_0xa1ea('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xa1ea('0x13'))['db'];config[_0xa1ea('0x14')]=_[_0xa1ea('0x15')](config[_0xa1ea('0x14')],{'host':_0xa1ea('0x16'),'port':0x18eb});var socket=require(_0xa1ea('0x17'))(new Redis(config[_0xa1ea('0x14')]));require(_0xa1ea('0x18'))['register'](socket);function respondWithStatusCode(_0x31a58d,_0x3c4036){_0x3c4036=_0x3c4036||0xcc;return function(_0x49e059){if(_0x49e059){return _0x31a58d[_0xa1ea('0x19')](_0x3c4036);}return _0x31a58d[_0xa1ea('0x1a')](_0x3c4036)[_0xa1ea('0x1b')]();};}function respondWithResult(_0x3547d9,_0x34a21d){_0x34a21d=_0x34a21d||0xc8;return function(_0x37b165){if(_0x37b165){return _0x3547d9['status'](_0x34a21d)['json'](_0x37b165);}};}function respondWithFilteredResult(_0x2a2ee9,_0x5e2c0c){return function(_0x3edef5){if(_0x3edef5){var _0x576126=typeof _0x5e2c0c['offset']===_0xa1ea('0x1c')&&typeof _0x5e2c0c[_0xa1ea('0x1d')]===_0xa1ea('0x1c');var _0x5c2e52=_0x3edef5[_0xa1ea('0x1e')];var _0x521607=_0x576126?0x0:_0x5e2c0c['offset'];var _0x42154a=_0x576126?_0x3edef5['count']:_0x5e2c0c['offset']+_0x5e2c0c['limit'];var _0x76bf84;if(_0x42154a>=_0x5c2e52){_0x42154a=_0x5c2e52;_0x76bf84=0xc8;}else{_0x76bf84=0xce;}_0x2a2ee9['status'](_0x76bf84);return _0x2a2ee9[_0xa1ea('0x1f')](_0xa1ea('0x20'),_0x521607+'-'+_0x42154a+'/'+_0x5c2e52)[_0xa1ea('0x21')](_0x3edef5);}return null;};}function patchUpdates(_0x4816bb){return function(_0x327a7b){try{jsonpatch[_0xa1ea('0x22')](_0x327a7b,_0x4816bb,!![]);}catch(_0x23502d){return BPromise[_0xa1ea('0x23')](_0x23502d);}return _0x327a7b['save']();};}function saveUpdates(_0x80a8c,_0x3aa7b0){return function(_0x33b0f8){if(_0x33b0f8){return _0x33b0f8['update'](_0x80a8c)[_0xa1ea('0x24')](function(_0x4781e5){return _0x4781e5;});}return null;};}function removeEntity(_0xe77c76,_0x5c0137){return function(_0x5b308c){if(_0x5b308c){return _0x5b308c['destroy']()[_0xa1ea('0x24')](function(){var _0x50fb15=_0x5b308c['get']({'plain':!![]});var _0xd87e5c=_0xa1ea('0x25');return db[_0xa1ea('0x26')][_0xa1ea('0x27')]({'where':{'type':_0xd87e5c,'resourceId':_0x50fb15['id']}})[_0xa1ea('0x24')](function(){return _0x5b308c;});})[_0xa1ea('0x24')](function(){_0xe77c76[_0xa1ea('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4d8219,_0x2ef67a){return function(_0x1b9eff){if(!_0x1b9eff){_0x4d8219['sendStatus'](0x194);}return _0x1b9eff;};}function handleError(_0x526648,_0x1a8bd5){_0x1a8bd5=_0x1a8bd5||0x1f4;return function(_0x431727){logger['error'](_0x431727[_0xa1ea('0x28')]);if(_0x431727[_0xa1ea('0x29')]){delete _0x431727['name'];}_0x526648['status'](_0x1a8bd5)[_0xa1ea('0x2a')](_0x431727);};}exports['index']=function(_0x40cdac,_0x563688){var _0x14345e={},_0x306533={},_0x4b7c1b={'count':0x0,'rows':[]};var _0x4ab052=_[_0xa1ea('0x2b')](db[_0xa1ea('0x2c')]['rawAttributes'],function(_0x1f410a){return{'name':_0x1f410a[_0xa1ea('0x2d')],'type':_0x1f410a[_0xa1ea('0x2e')][_0xa1ea('0x2f')]};});_0x306533[_0xa1ea('0x30')]=_[_0xa1ea('0x2b')](_0x4ab052,_0xa1ea('0x29'));_0x306533[_0xa1ea('0x31')]=_[_0xa1ea('0x32')](_0x40cdac['query']);_0x306533[_0xa1ea('0x33')]=_['intersection'](_0x306533[_0xa1ea('0x30')],_0x306533['query']);_0x14345e[_0xa1ea('0x34')]=_[_0xa1ea('0x35')](_0x306533['model'],qs[_0xa1ea('0x36')](_0x40cdac[_0xa1ea('0x31')][_0xa1ea('0x36')]));_0x14345e['attributes']=_0x14345e[_0xa1ea('0x34')][_0xa1ea('0x37')]?_0x14345e[_0xa1ea('0x34')]:_0x306533['model'];if(!_0x40cdac[_0xa1ea('0x31')][_0xa1ea('0x38')](_0xa1ea('0x39'))){_0x14345e['limit']=qs['limit'](_0x40cdac[_0xa1ea('0x31')]['limit']);_0x14345e[_0xa1ea('0x3a')]=qs[_0xa1ea('0x3a')](_0x40cdac['query'][_0xa1ea('0x3a')]);}_0x14345e[_0xa1ea('0x3b')]=qs[_0xa1ea('0x3c')](_0x40cdac[_0xa1ea('0x31')][_0xa1ea('0x3c')]);_0x14345e[_0xa1ea('0x3d')]=qs['filters'](_[_0xa1ea('0x3e')](_0x40cdac[_0xa1ea('0x31')],_0x306533[_0xa1ea('0x33')]),_0x4ab052);if(_0x40cdac[_0xa1ea('0x31')][_0xa1ea('0x3f')]){_0x14345e[_0xa1ea('0x3d')]=_['merge'](_0x14345e[_0xa1ea('0x3d')],{'$or':_[_0xa1ea('0x2b')](_0x4ab052,function(_0x28a613){if(_0x28a613[_0xa1ea('0x2e')]!==_0xa1ea('0x40')){var _0x143851={};_0x143851[_0x28a613['name']]={'$like':'%'+_0x40cdac[_0xa1ea('0x31')][_0xa1ea('0x3f')]+'%'};return _0x143851;}})});}_0x14345e=_[_0xa1ea('0x41')]({},_0x14345e,_0x40cdac['options']);var _0x4372d1={'where':_0x14345e[_0xa1ea('0x3d')]};return db[_0xa1ea('0x2c')][_0xa1ea('0x1e')](_0x4372d1)['then'](function(_0x4b674f){_0x4b7c1b[_0xa1ea('0x1e')]=_0x4b674f;if(_0x40cdac[_0xa1ea('0x31')][_0xa1ea('0x42')]){_0x14345e[_0xa1ea('0x43')]=[{'all':!![]}];}return db[_0xa1ea('0x2c')][_0xa1ea('0x44')](_0x14345e);})[_0xa1ea('0x24')](function(_0x296699){_0x4b7c1b[_0xa1ea('0x45')]=_0x296699;return _0x4b7c1b;})[_0xa1ea('0x24')](respondWithFilteredResult(_0x563688,_0x14345e))[_0xa1ea('0x46')](handleError(_0x563688,null));};exports[_0xa1ea('0x47')]=function(_0x1261ad,_0x5092ee){var _0x2d6bd4={'raw':!![],'where':{'id':_0x1261ad[_0xa1ea('0x48')]['id']}},_0x3e9005={};_0x3e9005[_0xa1ea('0x30')]=_[_0xa1ea('0x32')](db[_0xa1ea('0x2c')][_0xa1ea('0x49')]);_0x3e9005[_0xa1ea('0x31')]=_[_0xa1ea('0x32')](_0x1261ad[_0xa1ea('0x31')]);_0x3e9005[_0xa1ea('0x33')]=_[_0xa1ea('0x35')](_0x3e9005['model'],_0x3e9005[_0xa1ea('0x31')]);_0x2d6bd4[_0xa1ea('0x34')]=_[_0xa1ea('0x35')](_0x3e9005[_0xa1ea('0x30')],qs[_0xa1ea('0x36')](_0x1261ad['query'][_0xa1ea('0x36')]));_0x2d6bd4[_0xa1ea('0x34')]=_0x2d6bd4['attributes'][_0xa1ea('0x37')]?_0x2d6bd4['attributes']:_0x3e9005[_0xa1ea('0x30')];if(_0x1261ad[_0xa1ea('0x31')][_0xa1ea('0x42')]){_0x2d6bd4[_0xa1ea('0x43')]=[{'all':!![]}];}_0x2d6bd4=_[_0xa1ea('0x41')]({},_0x2d6bd4,_0x1261ad[_0xa1ea('0x4a')]);return db['MailQueue'][_0xa1ea('0x4b')](_0x2d6bd4)['then'](handleEntityNotFound(_0x5092ee,null))[_0xa1ea('0x24')](respondWithResult(_0x5092ee,null))['catch'](handleError(_0x5092ee,null));};exports[_0xa1ea('0x4c')]=function(_0x21c645,_0x2aab2f){return db['MailQueue']['create'](_0x21c645[_0xa1ea('0x4d')],{})['then'](function(_0x520379){var _0x4c62db=_0x21c645[_0xa1ea('0x4e')][_0xa1ea('0x4f')]({'plain':!![]});if(!_0x4c62db)throw new Error(_0xa1ea('0x50'));if(_0x4c62db[_0xa1ea('0x51')]===_0xa1ea('0x4e')){var _0x56d4d4=_0x520379[_0xa1ea('0x4f')]({'plain':!![]});var _0x234d5f='MailQueues';return db[_0xa1ea('0x52')][_0xa1ea('0x4b')]({'where':{'name':_0x234d5f,'userProfileId':_0x4c62db[_0xa1ea('0x53')]},'raw':!![]})['then'](function(_0x2d1928){if(_0x2d1928&&_0x2d1928[_0xa1ea('0x54')]===0x0){return db[_0xa1ea('0x26')][_0xa1ea('0x4c')]({'name':_0x56d4d4[_0xa1ea('0x29')],'resourceId':_0x56d4d4['id'],'type':_0x2d1928[_0xa1ea('0x29')],'sectionId':_0x2d1928['id']},{})[_0xa1ea('0x24')](function(){return _0x520379;});}else{return _0x520379;}})['catch'](function(_0x47338f){logger[_0xa1ea('0x55')](_0xa1ea('0x56'),_0x47338f);throw _0x47338f;});}return _0x520379;})['then'](respondWithResult(_0x2aab2f,0xc9))[_0xa1ea('0x46')](handleError(_0x2aab2f,null));};exports[_0xa1ea('0x57')]=function(_0x327957,_0x1c046c){if(_0x327957['body']['id']){delete _0x327957[_0xa1ea('0x4d')]['id'];}return db[_0xa1ea('0x2c')][_0xa1ea('0x4b')]({'where':{'id':_0x327957['params']['id']}})['then'](handleEntityNotFound(_0x1c046c,null))[_0xa1ea('0x24')](saveUpdates(_0x327957['body'],null))[_0xa1ea('0x24')](respondWithResult(_0x1c046c,null))[_0xa1ea('0x46')](handleError(_0x1c046c,null));};exports[_0xa1ea('0x27')]=function(_0x46e0a1,_0x27e7cb){return db[_0xa1ea('0x2c')][_0xa1ea('0x4b')]({'where':{'id':_0x46e0a1[_0xa1ea('0x48')]['id']}})[_0xa1ea('0x24')](handleEntityNotFound(_0x27e7cb,null))[_0xa1ea('0x24')](removeEntity(_0x27e7cb,null))[_0xa1ea('0x46')](handleError(_0x27e7cb,null));};exports[_0xa1ea('0x58')]=function(_0x1114cb,_0x59668b){return db[_0xa1ea('0x2c')][_0xa1ea('0x58')]()[_0xa1ea('0x24')](respondWithResult(_0x59668b,null))[_0xa1ea('0x46')](handleError(_0x59668b,null));};exports['getMembers']=function(_0x5c08bc,_0x103b8e,_0x2e9153){var _0x49a0e6={'raw':!![],'where':{}},_0x1b5eae={},_0x7313d0;return db[_0xa1ea('0x2c')][_0xa1ea('0x59')]({'where':{'id':_0x5c08bc[_0xa1ea('0x48')]['id']}})[_0xa1ea('0x24')](handleEntityNotFound(_0x103b8e,null))[_0xa1ea('0x24')](function(_0x4b2c65){if(_0x4b2c65){_0x7313d0=_0x4b2c65[_0xa1ea('0x4f')]({'plain':!![]});_0x1b5eae[_0xa1ea('0x30')]=_[_0xa1ea('0x32')](db[_0xa1ea('0x5a')]['rawAttributes']);_0x1b5eae['query']=_[_0xa1ea('0x32')](_0x5c08bc[_0xa1ea('0x31')]);_0x1b5eae[_0xa1ea('0x33')]=_[_0xa1ea('0x35')](_0x1b5eae[_0xa1ea('0x30')],_0x1b5eae['query']);_0x49a0e6[_0xa1ea('0x34')]=_['intersection'](_0x1b5eae[_0xa1ea('0x30')],qs[_0xa1ea('0x36')](_0x5c08bc['query'][_0xa1ea('0x36')]));_0x49a0e6['attributes']=_0x49a0e6[_0xa1ea('0x34')]['length']?_0x49a0e6['attributes']:_0x1b5eae['model'];if(!_0x5c08bc['query']['hasOwnProperty']('nolimit')){_0x49a0e6[_0xa1ea('0x1d')]=qs['limit'](_0x5c08bc[_0xa1ea('0x31')][_0xa1ea('0x1d')]);_0x49a0e6[_0xa1ea('0x3a')]=qs['offset'](_0x5c08bc[_0xa1ea('0x31')][_0xa1ea('0x3a')]);}_0x49a0e6['order']=qs['sort'](_0x5c08bc[_0xa1ea('0x31')][_0xa1ea('0x3c')]);_0x49a0e6[_0xa1ea('0x3d')]=qs[_0xa1ea('0x33')](_['pick'](_0x5c08bc[_0xa1ea('0x31')],_0x1b5eae['filters']));_0x49a0e6[_0xa1ea('0x3d')]['MailQueueId']=_0x4b2c65['id'];if(_0x5c08bc[_0xa1ea('0x31')][_0xa1ea('0x3f')]){_0x49a0e6[_0xa1ea('0x3d')]=_['merge'](_0x49a0e6[_0xa1ea('0x3d')],{'$or':_['map'](_0x49a0e6[_0xa1ea('0x34')],function(_0x2c7481){var _0x3a4057={};_0x3a4057[_0x2c7481]={'$like':'%'+_0x5c08bc[_0xa1ea('0x31')][_0xa1ea('0x3f')]+'%'};return _0x3a4057;})});}_0x49a0e6=_['merge']({},_0x49a0e6,_0x5c08bc[_0xa1ea('0x4a')]);return db['UserMailQueue']['findAll'](_0x49a0e6);}})[_0xa1ea('0x24')](function(_0x5ddcd6){if(_0x5ddcd6){return db[_0xa1ea('0x5b')]['findAndCountAll']({'where':{'id':_[_0xa1ea('0x2b')](_0x5ddcd6,_0xa1ea('0x5c')),'role':_0xa1ea('0x5d')},'attributes':['id',_0xa1ea('0x29'),_0xa1ea('0x5e'),_0xa1ea('0x5f'),'createdAt']});}})[_0xa1ea('0x24')](function(_0x28a72f){if(_0x28a72f){return{'count':_0x28a72f[_0xa1ea('0x1e')],'rows':_[_0xa1ea('0x2b')](_0x28a72f[_0xa1ea('0x45')],function(_0x3a496f){return{'membername':_0x3a496f[_0xa1ea('0x29')],'UserId':_0x3a496f['id'],'queue_name':_0x7313d0['name'],'MailQueueId':_0x7313d0['id'],'interface':util[_0xa1ea('0x60')]('%s/%s',_0xa1ea('0x61'),_0x3a496f[_0xa1ea('0x29')]),'penalty':0x0,'paused':_0x3a496f['mailPause'],'createdAt':_0x3a496f['createdAt'],'updatedAt':_0x3a496f[_0xa1ea('0x5f')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xa1ea('0x24')](respondWithFilteredResult(_0x103b8e,_0x49a0e6))[_0xa1ea('0x46')](handleError(_0x103b8e,null));};exports[_0xa1ea('0x62')]=function(_0x5507dd,_0x59d872,_0x464702){var _0x41dfac={};var _0x384bf5={};var _0x3ee2de;var _0x8c582;return db[_0xa1ea('0x2c')][_0xa1ea('0x59')]({'where':{'id':_0x5507dd[_0xa1ea('0x48')]['id']}})['then'](handleEntityNotFound(_0x59d872,null))[_0xa1ea('0x24')](function(_0xd2b9c5){if(_0xd2b9c5){_0x3ee2de=_0xd2b9c5;_0x384bf5['model']=_[_0xa1ea('0x32')](db['Team'][_0xa1ea('0x49')]);_0x384bf5[_0xa1ea('0x31')]=_[_0xa1ea('0x32')](_0x5507dd[_0xa1ea('0x31')]);_0x384bf5[_0xa1ea('0x33')]=_[_0xa1ea('0x35')](_0x384bf5[_0xa1ea('0x30')],_0x384bf5[_0xa1ea('0x31')]);_0x41dfac[_0xa1ea('0x34')]=_[_0xa1ea('0x35')](_0x384bf5[_0xa1ea('0x30')],qs['fields'](_0x5507dd[_0xa1ea('0x31')][_0xa1ea('0x36')]));_0x41dfac[_0xa1ea('0x34')]=_0x41dfac[_0xa1ea('0x34')][_0xa1ea('0x37')]?_0x41dfac['attributes']:_0x384bf5[_0xa1ea('0x30')];_0x41dfac[_0xa1ea('0x3b')]=qs['sort'](_0x5507dd['query'][_0xa1ea('0x3c')]);_0x41dfac[_0xa1ea('0x3d')]=qs[_0xa1ea('0x33')](_[_0xa1ea('0x3e')](_0x5507dd[_0xa1ea('0x31')],_0x384bf5[_0xa1ea('0x33')]));if(_0x5507dd[_0xa1ea('0x31')][_0xa1ea('0x3f')]){_0x41dfac[_0xa1ea('0x3d')]=_[_0xa1ea('0x41')](_0x41dfac[_0xa1ea('0x3d')],{'$or':_[_0xa1ea('0x2b')](_0x41dfac[_0xa1ea('0x34')],function(_0x15e758){var _0x252244={};_0x252244[_0x15e758]={'$like':'%'+_0x5507dd[_0xa1ea('0x31')][_0xa1ea('0x3f')]+'%'};return _0x252244;})});}_0x41dfac=_['merge']({},_0x41dfac,_0x5507dd[_0xa1ea('0x4a')]);return _0x3ee2de[_0xa1ea('0x62')](_0x41dfac);}})['then'](function(_0x4b7478){if(_0x4b7478){_0x8c582=_0x4b7478['length'];if(!_0x5507dd[_0xa1ea('0x31')]['hasOwnProperty']('nolimit')){_0x41dfac[_0xa1ea('0x1d')]=qs[_0xa1ea('0x1d')](_0x5507dd['query'][_0xa1ea('0x1d')]);_0x41dfac[_0xa1ea('0x3a')]=qs[_0xa1ea('0x3a')](_0x5507dd[_0xa1ea('0x31')][_0xa1ea('0x3a')]);}return _0x3ee2de[_0xa1ea('0x62')](_0x41dfac);}})[_0xa1ea('0x24')](function(_0x48950a){if(_0x48950a){return _0x48950a?{'count':_0x8c582,'rows':_0x48950a}:null;}})[_0xa1ea('0x24')](respondWithResult(_0x59d872,null))[_0xa1ea('0x46')](handleError(_0x59d872,null));};exports[_0xa1ea('0x63')]=function(_0x578abf,_0x4a0aed,_0x48e792){var _0x2714e2=_0x578abf[_0xa1ea('0x4d')][_0xa1ea('0x64')];return db[_0xa1ea('0x65')]['findAll']({'where':{'id':_0x2714e2},'attributes':['id'],'include':[{'model':db[_0xa1ea('0x5b')],'as':_0xa1ea('0x66'),'attributes':['id',_0xa1ea('0x29'),_0xa1ea('0x67'),_0xa1ea('0x68'),_0xa1ea('0x69')],'raw':!![]}]})[_0xa1ea('0x24')](function(_0x3c15b3){if(_0x3c15b3){var _0x23649a=_[_0xa1ea('0x6a')](_0x3c15b3,function(_0xffa751){var _0x5aefe8=_0xffa751[_0xa1ea('0x4f')]({'plain':!![]});return _0x5aefe8[_0xa1ea('0x66')];});return db[_0xa1ea('0x2c')][_0xa1ea('0x4b')]({'where':{'id':_0x578abf[_0xa1ea('0x48')]['id']}})[_0xa1ea('0x24')](function(_0x2efcda){return db[_0xa1ea('0x6b')]['transaction'](function(_0x49a10){return _0x2efcda[_0xa1ea('0x63')](_0x2714e2,{'transaction':_0x49a10})[_0xa1ea('0x24')](function(){return BPromise['each'](_0x23649a,function(_0xa58cef){return db[_0xa1ea('0x5a')][_0xa1ea('0x6c')]({'where':{'UserId':_0xa58cef['id'],'MailQueueId':_0x578abf[_0xa1ea('0x48')]['id']},'transaction':_0x49a10});});})[_0xa1ea('0x24')](function(){_0x23649a[_0xa1ea('0x6d')](function(_0x24f92d){socket[_0xa1ea('0x6e')](_0xa1ea('0x6f'),{'UserId':_0x24f92d['id'],'MailQueueId':_0x2efcda['id']});});});});});}})[_0xa1ea('0x24')](respondWithStatusCode(_0x4a0aed,null))['catch'](handleError(_0x4a0aed,null));};exports[_0xa1ea('0x70')]=function(_0xa0a870,_0x53c4b6,_0x31206d){return db[_0xa1ea('0x65')]['findAll']({'where':{'id':_0xa0a870[_0xa1ea('0x31')][_0xa1ea('0x64')]},'attributes':['id'],'include':[{'model':db[_0xa1ea('0x5b')],'as':_0xa1ea('0x66'),'attributes':['id'],'raw':!![]}]})[_0xa1ea('0x24')](handleEntityNotFound(_0x53c4b6,null))[_0xa1ea('0x24')](function(_0x1cfc1c){var _0x28ac0b=_[_0xa1ea('0x2b')](_0x1cfc1c,'id');var _0x631214=[];var _0x53f2fd=[];var _0x18268a=squel['select']();_0x18268a[_0xa1ea('0x71')](_0xa1ea('0x72'))['from'](_0xa1ea('0x73'),'tq')['join'](_0xa1ea('0x74'),'ut',_0xa1ea('0x75'))[_0xa1ea('0x3d')](_0xa1ea('0x76'),_0xa0a870[_0xa1ea('0x48')]['id']);for(var _0x55b5fd=0x0;_0x55b5fd<_0x1cfc1c[_0xa1ea('0x37')];_0x55b5fd+=0x1){let _0x1ab352=_0x1cfc1c[_0x55b5fd];for(var _0x2c84a8=0x0;_0x2c84a8<_0x1ab352[_0xa1ea('0x66')][_0xa1ea('0x37')];_0x2c84a8+=0x1){let _0x4c9092=_0x1ab352['Agents'][_0x2c84a8];var _0x2db739=_0x18268a[_0xa1ea('0x77')]();_0x2db739['where'](_0xa1ea('0x78'),_0x4c9092['id']);_0x53f2fd['push'](db[_0xa1ea('0x6b')][_0xa1ea('0x31')](_0x2db739[_0xa1ea('0x79')](),{'type':db[_0xa1ea('0x6b')][_0xa1ea('0x7a')][_0xa1ea('0x7b')]})['then'](function(_0x3e9838){if(_0x3e9838[_0xa1ea('0x37')]===0x1){return _0x4c9092['id'];}else{var _0x21cc34=_[_0xa1ea('0x7c')](_[_0xa1ea('0x2b')](_0x3e9838,_0xa1ea('0x7d')),function(_0x3b65f2){return _['includes'](_0x28ac0b,_0x3b65f2);});if(_0x21cc34){return _0x4c9092['id'];}}}));}}return BPromise[_0xa1ea('0x7e')](_0x53f2fd)[_0xa1ea('0x24')](function(_0x58fc15){_0x631214=_(_0x631214)['union'](_0x58fc15)[_0xa1ea('0x7f')]()[_0xa1ea('0x80')]();return db['MailQueue'][_0xa1ea('0x4b')]({'where':{'id':_0xa0a870[_0xa1ea('0x48')]['id']}})[_0xa1ea('0x24')](function(_0x5a28c4){return db[_0xa1ea('0x6b')]['transaction'](function(_0x32bba6){return _0x5a28c4['removeTeams'](_0xa0a870[_0xa1ea('0x31')][_0xa1ea('0x64')],{'transaction':_0x32bba6})[_0xa1ea('0x24')](function(){if(!_[_0xa1ea('0x81')](_0x631214)){return _0x5a28c4['removeAgents'](_0x631214,{'transaction':_0x32bba6});}})[_0xa1ea('0x24')](function(){_0x631214[_0xa1ea('0x6d')](function(_0x5ae647){socket[_0xa1ea('0x6e')]('userMailQueue:remove',{'UserId':_0x5ae647,'MailQueueId':_0x5a28c4['id']});});});});});});})[_0xa1ea('0x24')](respondWithStatusCode(_0x53c4b6,null))[_0xa1ea('0x46')](handleError(_0x53c4b6,null));};exports[_0xa1ea('0x82')]=function(_0x4dfb77,_0x2cb0ac,_0x30d354){return db[_0xa1ea('0x2c')][_0xa1ea('0x4b')]({'where':{'id':_0x4dfb77[_0xa1ea('0x48')]['id']}})['then'](handleEntityNotFound(_0x2cb0ac,null))[_0xa1ea('0x24')](function(_0x4236ce){if(_0x4236ce){return _0x4236ce['addAgents'](_0x4dfb77[_0xa1ea('0x4d')][_0xa1ea('0x64')],_[_0xa1ea('0x83')](_0x4dfb77['body'],[_0xa1ea('0x64'),'id'])||{})['spread'](function(_0x171c2c){for(var _0x36bb12=0x0;_0x36bb12<_0x4dfb77[_0xa1ea('0x4d')]['ids'][_0xa1ea('0x37')];_0x36bb12+=0x1){socket[_0xa1ea('0x6e')](_0xa1ea('0x6f'),{'UserId':Number(_0x4dfb77['body'][_0xa1ea('0x64')][_0x36bb12]),'MailQueueId':Number(_0x4dfb77[_0xa1ea('0x48')]['id'])});}return _0x171c2c;});}})[_0xa1ea('0x24')](respondWithResult(_0x2cb0ac,null))[_0xa1ea('0x46')](handleError(_0x2cb0ac,null));};exports[_0xa1ea('0x84')]=function(_0x282309,_0xb6e88d,_0x3f7b98){return db['MailQueue'][_0xa1ea('0x4b')]({'where':{'id':_0x282309[_0xa1ea('0x48')]['id']}})['then'](handleEntityNotFound(_0xb6e88d,null))['then'](function(_0x41b115){if(_0x41b115){return _0x41b115[_0xa1ea('0x84')](_0x282309[_0xa1ea('0x31')][_0xa1ea('0x64')])['then'](function(){if(_[_0xa1ea('0x85')](_0x282309[_0xa1ea('0x31')]['ids'])){for(var _0x167828=0x0;_0x167828<_0x282309[_0xa1ea('0x31')][_0xa1ea('0x64')]['length'];_0x167828+=0x1){socket[_0xa1ea('0x6e')](_0xa1ea('0x86'),{'UserId':Number(_0x282309[_0xa1ea('0x31')]['ids'][_0x167828]),'MailQueueId':Number(_0x282309['params']['id'])});}}else{socket[_0xa1ea('0x6e')]('userMailQueue:remove',{'UserId':Number(_0x282309[_0xa1ea('0x31')]['ids']),'MailQueueId':Number(_0x282309[_0xa1ea('0x48')]['id'])});}});}})[_0xa1ea('0x24')](respondWithStatusCode(_0xb6e88d,null))[_0xa1ea('0x46')](handleError(_0xb6e88d,null));};exports[_0xa1ea('0x87')]=function(_0xc6a4dd,_0x141c7e,_0x234296){var _0x2285ec={};var _0x2f7563={};var _0x361bf5;var _0x3c62ff;return db[_0xa1ea('0x2c')][_0xa1ea('0x59')]({'where':{'id':_0xc6a4dd['params']['id']}})['then'](handleEntityNotFound(_0x141c7e,null))['then'](function(_0x1c50b5){if(_0x1c50b5){_0x361bf5=_0x1c50b5;_0x2f7563[_0xa1ea('0x30')]=_[_0xa1ea('0x32')](db[_0xa1ea('0x5b')][_0xa1ea('0x49')]);_0x2f7563['query']=_['keys'](_0xc6a4dd['query']);_0x2f7563[_0xa1ea('0x33')]=_[_0xa1ea('0x35')](_0x2f7563['model'],_0x2f7563['query']);_0x2285ec[_0xa1ea('0x34')]=_[_0xa1ea('0x35')](_0x2f7563[_0xa1ea('0x30')],qs[_0xa1ea('0x36')](_0xc6a4dd[_0xa1ea('0x31')][_0xa1ea('0x36')]));_0x2285ec[_0xa1ea('0x34')]=_0x2285ec[_0xa1ea('0x34')][_0xa1ea('0x37')]?_0x2285ec[_0xa1ea('0x34')]:_0x2f7563[_0xa1ea('0x30')];_0x2285ec['order']=qs[_0xa1ea('0x3c')](_0xc6a4dd['query']['sort']);_0x2285ec[_0xa1ea('0x3d')]=qs[_0xa1ea('0x33')](_['pick'](_0xc6a4dd[_0xa1ea('0x31')],_0x2f7563[_0xa1ea('0x33')]));if(_0xc6a4dd[_0xa1ea('0x31')][_0xa1ea('0x3f')]){_0x2285ec['where']=_[_0xa1ea('0x41')](_0x2285ec[_0xa1ea('0x3d')],{'$or':_[_0xa1ea('0x2b')](_0x2285ec[_0xa1ea('0x34')],function(_0x347c3c){var _0x4e7121={};_0x4e7121[_0x347c3c]={'$like':'%'+_0xc6a4dd[_0xa1ea('0x31')][_0xa1ea('0x3f')]+'%'};return _0x4e7121;})});}_0x2285ec=_[_0xa1ea('0x41')]({},_0x2285ec,_0xc6a4dd[_0xa1ea('0x4a')]);return _0x361bf5[_0xa1ea('0x87')](_0x2285ec);}})['then'](function(_0x411100){if(_0x411100){_0x3c62ff=_0x411100[_0xa1ea('0x37')];if(!_0xc6a4dd[_0xa1ea('0x31')]['hasOwnProperty'](_0xa1ea('0x39'))){_0x2285ec['limit']=qs[_0xa1ea('0x1d')](_0xc6a4dd[_0xa1ea('0x31')][_0xa1ea('0x1d')]);_0x2285ec[_0xa1ea('0x3a')]=qs['offset'](_0xc6a4dd[_0xa1ea('0x31')][_0xa1ea('0x3a')]);}return _0x361bf5['getAgents'](_0x2285ec);}})[_0xa1ea('0x24')](function(_0x160db5){if(_0x160db5){return _0x160db5?{'count':_0x3c62ff,'rows':_0x160db5}:null;}})['then'](respondWithResult(_0x141c7e,null))[_0xa1ea('0x46')](handleError(_0x141c7e,null));};
\ No newline at end of file
index 4ca8ec2..1cea57e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78b2=['../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports','events'];(function(_0x166e96,_0x55191d){var _0x553d73=function(_0x586142){while(--_0x586142){_0x166e96['push'](_0x166e96['shift']());}};_0x553d73(++_0x55191d);}(_0x78b2,0xaa));var _0x278b=function(_0xad6060,_0x26376a){_0xad6060=_0xad6060-0x0;var _0x38bc8f=_0x78b2[_0xad6060];return _0x38bc8f;};'use strict';var EventEmitter=require(_0x278b('0x0'));var MailQueue=require(_0x278b('0x1'))['db']['MailQueue'];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x278b('0x2')](0x0);var events={'afterCreate':_0x278b('0x3'),'afterUpdate':_0x278b('0x4'),'afterDestroy':_0x278b('0x5')};function emitEvent(_0x187a82){return function(_0x2e6ae3,_0x478a5e,_0x9bf65a){MailQueueEvents[_0x278b('0x6')](_0x187a82+':'+_0x2e6ae3['id'],_0x2e6ae3);MailQueueEvents[_0x278b('0x6')](_0x187a82,_0x2e6ae3);_0x9bf65a(null);};}for(var e in events){if(events[_0x278b('0x7')](e)){var event=events[e];MailQueue['hook'](e,emitEvent(event));}}module[_0x278b('0x8')]=MailQueueEvents;
\ No newline at end of file
+var _0x68db=['hasOwnProperty','exports','events','setMaxListeners','save','update','remove','emit'];(function(_0x1736e8,_0x28cb17){var _0x23024e=function(_0x55b69c){while(--_0x55b69c){_0x1736e8['push'](_0x1736e8['shift']());}};_0x23024e(++_0x28cb17);}(_0x68db,0x172));var _0xb68d=function(_0x475e39,_0x429df3){_0x475e39=_0x475e39-0x0;var _0xc742e6=_0x68db[_0x475e39];return _0xc742e6;};'use strict';var EventEmitter=require(_0xb68d('0x0'));var MailQueue=require('../../mysqldb')['db']['MailQueue'];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0xb68d('0x1')](0x0);var events={'afterCreate':_0xb68d('0x2'),'afterUpdate':_0xb68d('0x3'),'afterDestroy':_0xb68d('0x4')};function emitEvent(_0x3d0bea){return function(_0x5c54b4,_0x493d71,_0x4a2857){MailQueueEvents['emit'](_0x3d0bea+':'+_0x5c54b4['id'],_0x5c54b4);MailQueueEvents[_0xb68d('0x5')](_0x3d0bea,_0x5c54b4);_0x4a2857(null);};}for(var e in events){if(events[_0xb68d('0x6')](e)){var event=events[e];MailQueue['hook'](e,emitEvent(event));}}module[_0xb68d('0x7')]=MailQueueEvents;
\ No newline at end of file
index 2c5e95e..1ba3595 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc242=['request-promise','path','./mailQueue.attributes','define','MailQueue','mail_queues','lodash','util','api','bluebird'];(function(_0x4e718f,_0x567732){var _0x15eb0d=function(_0x4db660){while(--_0x4db660){_0x4e718f['push'](_0x4e718f['shift']());}};_0x15eb0d(++_0x567732);}(_0xc242,0x1be));var _0x2c24=function(_0x8885c4,_0x1adf2c){_0x8885c4=_0x8885c4-0x0;var _0x56f93c=_0xc242[_0x8885c4];return _0x56f93c;};'use strict';var _=require(_0x2c24('0x0'));var util=require(_0x2c24('0x1'));var logger=require('../../config/logger')(_0x2c24('0x2'));var moment=require('moment');var BPromise=require(_0x2c24('0x3'));var rp=require(_0x2c24('0x4'));var fs=require('fs');var path=require(_0x2c24('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x2c24('0x6'));module['exports']=function(_0x2f474d,_0x23300){return _0x2f474d[_0x2c24('0x7')](_0x2c24('0x8'),attributes,{'tableName':_0x2c24('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd1eb=['define','MailQueue','lodash','api','moment','bluebird','path','rimraf','../../config/environment','./mailQueue.attributes','exports'];(function(_0x7eb3ad,_0x571c4e){var _0x19816b=function(_0x4201d5){while(--_0x4201d5){_0x7eb3ad['push'](_0x7eb3ad['shift']());}};_0x19816b(++_0x571c4e);}(_0xd1eb,0xa7));var _0xbd1e=function(_0x4b9b63,_0xd00f7e){_0x4b9b63=_0x4b9b63-0x0;var _0x24addb=_0xd1eb[_0x4b9b63];return _0x24addb;};'use strict';var _=require(_0xbd1e('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xbd1e('0x1'));var moment=require(_0xbd1e('0x2'));var BPromise=require(_0xbd1e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbd1e('0x4'));var rimraf=require(_0xbd1e('0x5'));var config=require(_0xbd1e('0x6'));var attributes=require(_0xbd1e('0x7'));module[_0xbd1e('0x8')]=function(_0x1103bf,_0x40c99a){return _0x1103bf[_0xbd1e('0x9')](_0xbd1e('0xa'),attributes,{'tableName':'mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4261ebc..d14b909 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec87=['MailQueue,\x20%s,\x20%s','MailQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','catch','GetMailQueue','MailQueue','findAll','options','where','attributes','include','map','model','debug','ShowMailQueue','find','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','request','then'];(function(_0x525c7b,_0x488fcc){var _0x27b33e=function(_0x56d43b){while(--_0x56d43b){_0x525c7b['push'](_0x525c7b['shift']());}};_0x27b33e(++_0x488fcc);}(_0xec87,0xd9));var _0x7ec8=function(_0xea35d1,_0x302471){_0xea35d1=_0xea35d1-0x0;var _0x1d7a7c=_0xec87[_0xea35d1];return _0x1d7a7c;};'use strict';var _=require(_0x7ec8('0x0'));var util=require(_0x7ec8('0x1'));var moment=require(_0x7ec8('0x2'));var BPromise=require(_0x7ec8('0x3'));var rs=require(_0x7ec8('0x4'));var fs=require('fs');var Redis=require(_0x7ec8('0x5'));var db=require(_0x7ec8('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7ec8('0x7'));var config=require('../../config/environment');var jayson=require(_0x7ec8('0x8'));var client=jayson[_0x7ec8('0x9')][_0x7ec8('0xa')]({'port':0x232a});config[_0x7ec8('0xb')]=_['defaults'](config[_0x7ec8('0xb')],{'host':_0x7ec8('0xc'),'port':0x18eb});var socket=require(_0x7ec8('0xd'))(new Redis(config[_0x7ec8('0xb')]));require('./mailQueue.socket')[_0x7ec8('0xe')](socket);function respondWithRpcPromise(_0x36bd16,_0x3a1ef1,_0xebdb99){return new BPromise(function(_0x18da41,_0x595257){return client[_0x7ec8('0xf')](_0x36bd16,_0xebdb99)[_0x7ec8('0x10')](function(_0x29dafb){logger['info'](_0x7ec8('0x11'),_0x3a1ef1,'request\x20sent');logger['debug'](_0x7ec8('0x12'),_0x3a1ef1,_0x7ec8('0x13'),JSON[_0x7ec8('0x14')](_0x29dafb));if(_0x29dafb['error']){if(_0x29dafb[_0x7ec8('0x15')][_0x7ec8('0x16')]===0x1f4){logger['error'](_0x7ec8('0x11'),_0x3a1ef1,_0x29dafb[_0x7ec8('0x15')][_0x7ec8('0x17')]);return _0x595257(_0x29dafb[_0x7ec8('0x15')][_0x7ec8('0x17')]);}logger['error'](_0x7ec8('0x11'),_0x3a1ef1,_0x29dafb['error'][_0x7ec8('0x17')]);return _0x18da41(_0x29dafb['error']['message']);}else{logger[_0x7ec8('0x18')]('MailQueue,\x20%s,\x20%s',_0x3a1ef1,_0x7ec8('0x13'));_0x18da41(_0x29dafb['result'][_0x7ec8('0x17')]);}})[_0x7ec8('0x19')](function(_0x4656a5){logger[_0x7ec8('0x15')](_0x7ec8('0x11'),_0x3a1ef1,_0x4656a5);_0x595257(_0x4656a5);});});}exports[_0x7ec8('0x1a')]=function(_0x98ec69){var _0x44ee8c=this;return new Promise(function(_0x285338,_0x2eb9c1){return db[_0x7ec8('0x1b')][_0x7ec8('0x1c')]({'raw':_0x98ec69[_0x7ec8('0x1d')]?_0x98ec69[_0x7ec8('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x98ec69[_0x7ec8('0x1d')]?_0x98ec69['options'][_0x7ec8('0x1e')]||null:null,'attributes':_0x98ec69[_0x7ec8('0x1d')]?_0x98ec69['options'][_0x7ec8('0x1f')]||null:null,'limit':_0x98ec69[_0x7ec8('0x1d')]?_0x98ec69[_0x7ec8('0x1d')]['limit']||null:null,'include':_0x98ec69[_0x7ec8('0x1d')]?_0x98ec69[_0x7ec8('0x1d')][_0x7ec8('0x20')]?_[_0x7ec8('0x21')](_0x98ec69[_0x7ec8('0x1d')][_0x7ec8('0x20')],function(_0x374a83){return{'model':db[_0x374a83['model']],'as':_0x374a83['as'],'attributes':_0x374a83[_0x7ec8('0x1f')],'include':_0x374a83[_0x7ec8('0x20')]?_[_0x7ec8('0x21')](_0x374a83[_0x7ec8('0x20')],function(_0x10137b){return{'model':db[_0x10137b[_0x7ec8('0x22')]],'as':_0x10137b['as'],'attributes':_0x10137b[_0x7ec8('0x1f')],'include':_0x10137b[_0x7ec8('0x20')]?_[_0x7ec8('0x21')](_0x10137b[_0x7ec8('0x20')],function(_0x3c3181){return{'model':db[_0x3c3181[_0x7ec8('0x22')]],'as':_0x3c3181['as'],'attributes':_0x3c3181['attributes']};}):[]};}):[]};}):[]:[]})[_0x7ec8('0x10')](function(_0x559014){logger[_0x7ec8('0x18')](_0x7ec8('0x1a'),_0x98ec69);logger[_0x7ec8('0x23')]('GetMailQueue',_0x98ec69,JSON[_0x7ec8('0x14')](_0x559014));_0x285338(_0x559014);})['catch'](function(_0x2be411){logger['error'](_0x7ec8('0x1a'),_0x2be411[_0x7ec8('0x17')],_0x98ec69);_0x2eb9c1(_0x44ee8c['error'](0x1f4,_0x2be411[_0x7ec8('0x17')]));});});};exports[_0x7ec8('0x24')]=function(_0x4cb481){var _0x293a71=this;return new Promise(function(_0x62c84e,_0xe979a0){return db['MailQueue'][_0x7ec8('0x25')]({'raw':_0x4cb481['options']?_0x4cb481[_0x7ec8('0x1d')][_0x7ec8('0x26')]===undefined?!![]:![]:!![],'where':_0x4cb481[_0x7ec8('0x1d')]?_0x4cb481[_0x7ec8('0x1d')][_0x7ec8('0x1e')]||null:null,'attributes':_0x4cb481[_0x7ec8('0x1d')]?_0x4cb481['options']['attributes']||null:null,'include':_0x4cb481[_0x7ec8('0x1d')]?_0x4cb481[_0x7ec8('0x1d')][_0x7ec8('0x20')]?_['map'](_0x4cb481[_0x7ec8('0x1d')][_0x7ec8('0x20')],function(_0x324d47){return{'model':db[_0x324d47[_0x7ec8('0x22')]],'as':_0x324d47['as'],'attributes':_0x324d47[_0x7ec8('0x1f')],'include':_0x324d47[_0x7ec8('0x20')]?_['map'](_0x324d47['include'],function(_0x5c25ff){return{'model':db[_0x5c25ff[_0x7ec8('0x22')]],'as':_0x5c25ff['as'],'attributes':_0x5c25ff['attributes'],'include':_0x5c25ff[_0x7ec8('0x20')]?_[_0x7ec8('0x21')](_0x5c25ff['include'],function(_0x4fcd56){return{'model':db[_0x4fcd56[_0x7ec8('0x22')]],'as':_0x4fcd56['as'],'attributes':_0x4fcd56[_0x7ec8('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x7ec8('0x10')](function(_0x559635){logger[_0x7ec8('0x18')](_0x7ec8('0x24'),_0x4cb481);logger['debug']('ShowMailQueue',_0x4cb481,JSON[_0x7ec8('0x14')](_0x559635));_0x62c84e(_0x559635);})[_0x7ec8('0x19')](function(_0x129135){logger[_0x7ec8('0x15')](_0x7ec8('0x24'),_0x129135[_0x7ec8('0x17')],_0x4cb481);_0xe979a0(_0x293a71[_0x7ec8('0x15')](0x1f4,_0x129135[_0x7ec8('0x17')]));});});};
\ No newline at end of file
+var _0x0941=['MailQueue,\x20%s,\x20%s,\x20%s','error','code','MailQueue,\x20%s,\x20%s','message','info','result','catch','GetMailQueue','options','raw','where','attributes','limit','include','map','model','stringify','ShowMailQueue','MailQueue','find','util','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','./mailQueue.socket','register','request','then','request\x20sent','debug'];(function(_0x518e11,_0xa5dbe5){var _0x532d46=function(_0x5cb6fd){while(--_0x5cb6fd){_0x518e11['push'](_0x518e11['shift']());}};_0x532d46(++_0xa5dbe5);}(_0x0941,0xd3));var _0x1094=function(_0x44d808,_0x3ced9a){_0x44d808=_0x44d808-0x0;var _0x5a3ead=_0x0941[_0x44d808];return _0x5a3ead;};'use strict';var _=require('lodash');var util=require(_0x1094('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1094('0x1'));var db=require('../../mysqldb')['db'];var utils=require(_0x1094('0x2'));var logger=require(_0x1094('0x3'))(_0x1094('0x4'));var config=require('../../config/environment');var jayson=require(_0x1094('0x5'));var client=jayson[_0x1094('0x6')][_0x1094('0x7')]({'port':0x232a});config[_0x1094('0x8')]=_[_0x1094('0x9')](config[_0x1094('0x8')],{'host':_0x1094('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1094('0x8')]));require(_0x1094('0xb'))[_0x1094('0xc')](socket);function respondWithRpcPromise(_0xcd47ad,_0x1c2495,_0x5cc29b){return new BPromise(function(_0x574eb4,_0x52d3ce){return client[_0x1094('0xd')](_0xcd47ad,_0x5cc29b)[_0x1094('0xe')](function(_0x3d730c){logger['info']('MailQueue,\x20%s,\x20%s',_0x1c2495,_0x1094('0xf'));logger[_0x1094('0x10')](_0x1094('0x11'),_0x1c2495,'request\x20sent',JSON['stringify'](_0x3d730c));if(_0x3d730c[_0x1094('0x12')]){if(_0x3d730c[_0x1094('0x12')][_0x1094('0x13')]===0x1f4){logger['error'](_0x1094('0x14'),_0x1c2495,_0x3d730c[_0x1094('0x12')][_0x1094('0x15')]);return _0x52d3ce(_0x3d730c['error']['message']);}logger[_0x1094('0x12')](_0x1094('0x14'),_0x1c2495,_0x3d730c[_0x1094('0x12')][_0x1094('0x15')]);return _0x574eb4(_0x3d730c[_0x1094('0x12')][_0x1094('0x15')]);}else{logger[_0x1094('0x16')](_0x1094('0x14'),_0x1c2495,_0x1094('0xf'));_0x574eb4(_0x3d730c[_0x1094('0x17')][_0x1094('0x15')]);}})[_0x1094('0x18')](function(_0x508844){logger['error'](_0x1094('0x14'),_0x1c2495,_0x508844);_0x52d3ce(_0x508844);});});}exports[_0x1094('0x19')]=function(_0x36ecc1){var _0x3f7898=this;return new Promise(function(_0x4073dc,_0x7834d9){return db['MailQueue']['findAll']({'raw':_0x36ecc1['options']?_0x36ecc1[_0x1094('0x1a')][_0x1094('0x1b')]===undefined?!![]:![]:!![],'where':_0x36ecc1[_0x1094('0x1a')]?_0x36ecc1[_0x1094('0x1a')][_0x1094('0x1c')]||null:null,'attributes':_0x36ecc1[_0x1094('0x1a')]?_0x36ecc1[_0x1094('0x1a')][_0x1094('0x1d')]||null:null,'limit':_0x36ecc1[_0x1094('0x1a')]?_0x36ecc1['options'][_0x1094('0x1e')]||null:null,'include':_0x36ecc1[_0x1094('0x1a')]?_0x36ecc1[_0x1094('0x1a')][_0x1094('0x1f')]?_[_0x1094('0x20')](_0x36ecc1[_0x1094('0x1a')][_0x1094('0x1f')],function(_0x4ed880){return{'model':db[_0x4ed880[_0x1094('0x21')]],'as':_0x4ed880['as'],'attributes':_0x4ed880[_0x1094('0x1d')],'include':_0x4ed880['include']?_[_0x1094('0x20')](_0x4ed880[_0x1094('0x1f')],function(_0x547ecc){return{'model':db[_0x547ecc[_0x1094('0x21')]],'as':_0x547ecc['as'],'attributes':_0x547ecc[_0x1094('0x1d')],'include':_0x547ecc['include']?_[_0x1094('0x20')](_0x547ecc['include'],function(_0x49f0dd){return{'model':db[_0x49f0dd[_0x1094('0x21')]],'as':_0x49f0dd['as'],'attributes':_0x49f0dd[_0x1094('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x1094('0xe')](function(_0xa4fb56){logger[_0x1094('0x16')]('GetMailQueue',_0x36ecc1);logger[_0x1094('0x10')](_0x1094('0x19'),_0x36ecc1,JSON[_0x1094('0x22')](_0xa4fb56));_0x4073dc(_0xa4fb56);})[_0x1094('0x18')](function(_0x27d8aa){logger[_0x1094('0x12')](_0x1094('0x19'),_0x27d8aa[_0x1094('0x15')],_0x36ecc1);_0x7834d9(_0x3f7898[_0x1094('0x12')](0x1f4,_0x27d8aa[_0x1094('0x15')]));});});};exports[_0x1094('0x23')]=function(_0x510cb4){var _0x47a5e3=this;return new Promise(function(_0x2faea5,_0x1def1d){return db[_0x1094('0x24')][_0x1094('0x25')]({'raw':_0x510cb4['options']?_0x510cb4[_0x1094('0x1a')][_0x1094('0x1b')]===undefined?!![]:![]:!![],'where':_0x510cb4[_0x1094('0x1a')]?_0x510cb4['options'][_0x1094('0x1c')]||null:null,'attributes':_0x510cb4[_0x1094('0x1a')]?_0x510cb4[_0x1094('0x1a')]['attributes']||null:null,'include':_0x510cb4['options']?_0x510cb4[_0x1094('0x1a')][_0x1094('0x1f')]?_[_0x1094('0x20')](_0x510cb4[_0x1094('0x1a')][_0x1094('0x1f')],function(_0x1d040d){return{'model':db[_0x1d040d[_0x1094('0x21')]],'as':_0x1d040d['as'],'attributes':_0x1d040d[_0x1094('0x1d')],'include':_0x1d040d[_0x1094('0x1f')]?_[_0x1094('0x20')](_0x1d040d[_0x1094('0x1f')],function(_0x49f1c8){return{'model':db[_0x49f1c8[_0x1094('0x21')]],'as':_0x49f1c8['as'],'attributes':_0x49f1c8[_0x1094('0x1d')],'include':_0x49f1c8['include']?_[_0x1094('0x20')](_0x49f1c8[_0x1094('0x1f')],function(_0x5894be){return{'model':db[_0x5894be[_0x1094('0x21')]],'as':_0x5894be['as'],'attributes':_0x5894be[_0x1094('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x1094('0xe')](function(_0x3a0bc3){logger[_0x1094('0x16')](_0x1094('0x23'),_0x510cb4);logger[_0x1094('0x10')]('ShowMailQueue',_0x510cb4,JSON['stringify'](_0x3a0bc3));_0x2faea5(_0x3a0bc3);})[_0x1094('0x18')](function(_0x2d1b21){logger[_0x1094('0x12')]('ShowMailQueue',_0x2d1b21[_0x1094('0x15')],_0x510cb4);_0x1def1d(_0x47a5e3[_0x1094('0x12')](0x1f4,_0x2d1b21[_0x1094('0x15')]));});});};
\ No newline at end of file
index fbf00bc..eab26bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf116=['register','length','mailQueue:','save','remove','update','removeListener'];(function(_0x43cf54,_0x3aa331){var _0x1d5856=function(_0x32d4af){while(--_0x32d4af){_0x43cf54['push'](_0x43cf54['shift']());}};_0x1d5856(++_0x3aa331);}(_0xf116,0x16f));var _0x6f11=function(_0x3dea7d,_0x2cd4ea){_0x3dea7d=_0x3dea7d-0x0;var _0x53919a=_0xf116[_0x3dea7d];return _0x53919a;};'use strict';var MailQueueEvents=require('./mailQueue.events');var events=[_0x6f11('0x0'),_0x6f11('0x1'),_0x6f11('0x2')];function createListener(_0x467cd2,_0x278619){return function(_0x31bce0){_0x278619['emit'](_0x467cd2,_0x31bce0);};}function removeListener(_0x2189df,_0x47642c){return function(){MailQueueEvents[_0x6f11('0x3')](_0x2189df,_0x47642c);};}exports[_0x6f11('0x4')]=function(_0xe6f39){for(var _0x48c0e8=0x0,_0x1ece0b=events[_0x6f11('0x5')];_0x48c0e8<_0x1ece0b;_0x48c0e8++){var _0x2deb88=events[_0x48c0e8];var _0x407bdd=createListener(_0x6f11('0x6')+_0x2deb88,_0xe6f39);MailQueueEvents['on'](_0x2deb88,_0x407bdd);}};
\ No newline at end of file
+var _0x7b3d=['remove','update','removeListener','./mailQueue.events','save'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x7b3d,0x1ca));var _0xd7b3=function(_0x59d511,_0x283263){_0x59d511=_0x59d511-0x0;var _0x1a53fb=_0x7b3d[_0x59d511];return _0x1a53fb;};'use strict';var MailQueueEvents=require(_0xd7b3('0x0'));var events=[_0xd7b3('0x1'),_0xd7b3('0x2'),_0xd7b3('0x3')];function createListener(_0x4d4552,_0x40c01c){return function(_0x1b2fb1){_0x40c01c['emit'](_0x4d4552,_0x1b2fb1);};}function removeListener(_0x5806ad,_0xb3f60d){return function(){MailQueueEvents[_0xd7b3('0x4')](_0x5806ad,_0xb3f60d);};}exports['register']=function(_0x43055b){for(var _0xec248e=0x0,_0xc2b07=events['length'];_0xec248e<_0xc2b07;_0xec248e++){var _0x4ee217=events[_0xec248e];var _0x2975e4=createListener('mailQueue:'+_0x4ee217,_0x43055b);MailQueueEvents['on'](_0x4ee217,_0x2975e4);}};
\ No newline at end of file
index 43d32eb..2049cd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4501=['util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','put','update','destroy'];(function(_0x137f49,_0xb32f69){var _0x37e612=function(_0x4f885c){while(--_0x4f885c){_0x137f49['push'](_0x137f49['shift']());}};_0x37e612(++_0xb32f69);}(_0x4501,0xd8));var _0x1450=function(_0x28d93a,_0x17c5ba){_0x28d93a=_0x28d93a-0x0;var _0x391791=_0x4501[_0x28d93a];return _0x391791;};'use strict';var multer=require('multer');var util=require(_0x1450('0x0'));var path=require(_0x1450('0x1'));var timeout=require('connect-timeout');var express=require(_0x1450('0x2'));var router=express[_0x1450('0x3')]();var fs_extra=require(_0x1450('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x1450('0x5'));var config=require(_0x1450('0x6'));var controller=require(_0x1450('0x7'));router[_0x1450('0x8')]('/',auth[_0x1450('0x9')](),controller[_0x1450('0xa')]);router[_0x1450('0x8')](_0x1450('0xb'),auth[_0x1450('0x9')](),controller[_0x1450('0xc')]);router[_0x1450('0x8')](_0x1450('0xd'),auth[_0x1450('0x9')](),controller[_0x1450('0xe')]);router['post']('/',auth[_0x1450('0x9')](),controller['create']);router[_0x1450('0xf')]('/:id',auth[_0x1450('0x9')](),controller[_0x1450('0x10')]);router['delete'](_0x1450('0xd'),auth[_0x1450('0x9')](),controller[_0x1450('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x597d=['destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./mailQueueReport.controller','get','isAuthenticated','index','/describe','describe','show','create','put','update','delete'];(function(_0x563c54,_0x2c3177){var _0x2183c4=function(_0x10f6f7){while(--_0x10f6f7){_0x563c54['push'](_0x563c54['shift']());}};_0x2183c4(++_0x2c3177);}(_0x597d,0xfe));var _0xd597=function(_0xbe4c7c,_0xa10021){_0xbe4c7c=_0xbe4c7c-0x0;var _0x42a740=_0x597d[_0xbe4c7c];return _0x42a740;};'use strict';var multer=require('multer');var util=require(_0xd597('0x0'));var path=require(_0xd597('0x1'));var timeout=require(_0xd597('0x2'));var express=require(_0xd597('0x3'));var router=express[_0xd597('0x4')]();var fs_extra=require(_0xd597('0x5'));var auth=require(_0xd597('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xd597('0x7'));var controller=require(_0xd597('0x8'));router[_0xd597('0x9')]('/',auth[_0xd597('0xa')](),controller[_0xd597('0xb')]);router[_0xd597('0x9')](_0xd597('0xc'),auth[_0xd597('0xa')](),controller[_0xd597('0xd')]);router[_0xd597('0x9')]('/:id',auth[_0xd597('0xa')](),controller[_0xd597('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd597('0xf')]);router[_0xd597('0x10')]('/:id',auth[_0xd597('0xa')](),controller[_0xd597('0x11')]);router[_0xd597('0x12')]('/:id',auth[_0xd597('0xa')](),controller[_0xd597('0x13')]);module[_0xd597('0x14')]=router;
\ No newline at end of file
index a2c5634..bede807 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76ba=['STRING','DATE','moment','sequelize','exports'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x76ba,0x1ab));var _0xa76b=function(_0x1ff90e,_0x117b05){_0x1ff90e=_0x1ff90e-0x0;var _0x4aab8e=_0x76ba[_0x1ff90e];return _0x4aab8e;};'use strict';var moment=require(_0xa76b('0x0'));var Sequelize=require(_0xa76b('0x1'));module[_0xa76b('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xa76b('0x3')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xa76b('0x4')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xa76b('0x3')]}};
\ No newline at end of file
+var _0x6165=['STRING','DATE','sequelize'];(function(_0x2b9181,_0x501b0b){var _0x3237ed=function(_0x2be491){while(--_0x2be491){_0x2b9181['push'](_0x2b9181['shift']());}};_0x3237ed(++_0x501b0b);}(_0x6165,0xfe));var _0x5616=function(_0x57bda7,_0x1fed79){_0x57bda7=_0x57bda7-0x0;var _0x87a394=_0x6165[_0x57bda7];return _0x87a394;};'use strict';var moment=require('moment');var Sequelize=require(_0x5616('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x5616('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0x5616('0x1')]},'joinAt':{'type':Sequelize[_0x5616('0x2')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x5616('0x1')]}};
\ No newline at end of file
index ec01890..c016dee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8952=['filter','VIRTUAL','merge','options','findAll','rows','show','params','keys','includeAll','include','catch','create','body','destroy','find','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','end','stack','name','map','MailQueueReport','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x4792c8,_0x5158a1){var _0x35edb1=function(_0x2472d3){while(--_0x2472d3){_0x4792c8['push'](_0x4792c8['shift']());}};_0x35edb1(++_0x5158a1);}(_0x8952,0x17e));var _0x2895=function(_0x28392d,_0x19ba2e){_0x28392d=_0x28392d-0x0;var _0x371950=_0x8952[_0x28392d];return _0x371950;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2895('0x0'));var zipdir=require(_0x2895('0x1'));var jsonpatch=require(_0x2895('0x2'));var rp=require(_0x2895('0x3'));var moment=require(_0x2895('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2895('0x5'));var util=require(_0x2895('0x6'));var path=require(_0x2895('0x7'));var sox=require('sox');var csv=require(_0x2895('0x8'));var ejs=require(_0x2895('0x9'));var fs=require('fs');var fs_extra=require(_0x2895('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x2895('0xb'));var jsforce=require(_0x2895('0xc'));var deskjs=require(_0x2895('0xd'));var toCsv=require(_0x2895('0x8'));var querystring=require(_0x2895('0xe'));var Papa=require('papaparse');var Redis=require(_0x2895('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x2895('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x2895('0x11'));var utils=require(_0x2895('0x12'));var config=require(_0x2895('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x2895('0x14'))['db'];function respondWithStatusCode(_0x3924be,_0x4b1342){_0x4b1342=_0x4b1342||0xcc;return function(_0x32574c){if(_0x32574c){return _0x3924be[_0x2895('0x15')](_0x4b1342);}return _0x3924be['status'](_0x4b1342)['end']();};}function respondWithResult(_0x1d1493,_0x2ca2ac){_0x2ca2ac=_0x2ca2ac||0xc8;return function(_0x5777a0){if(_0x5777a0){return _0x1d1493[_0x2895('0x16')](_0x2ca2ac)[_0x2895('0x17')](_0x5777a0);}};}function respondWithFilteredResult(_0x27b50e,_0x1ae013){return function(_0x1d3659){if(_0x1d3659){var _0x2627e6=typeof _0x1ae013[_0x2895('0x18')]===_0x2895('0x19')&&typeof _0x1ae013[_0x2895('0x1a')]===_0x2895('0x19');var _0x10a1bf=_0x1d3659[_0x2895('0x1b')];var _0xbf8b63=_0x2627e6?0x0:_0x1ae013[_0x2895('0x18')];var _0x155124=_0x2627e6?_0x1d3659[_0x2895('0x1b')]:_0x1ae013[_0x2895('0x18')]+_0x1ae013[_0x2895('0x1a')];var _0x5a8eab;if(_0x155124>=_0x10a1bf){_0x155124=_0x10a1bf;_0x5a8eab=0xc8;}else{_0x5a8eab=0xce;}_0x27b50e['status'](_0x5a8eab);return _0x27b50e['set'](_0x2895('0x1c'),_0xbf8b63+'-'+_0x155124+'/'+_0x10a1bf)[_0x2895('0x17')](_0x1d3659);}return null;};}function patchUpdates(_0x3ec4da){return function(_0x593e47){try{jsonpatch[_0x2895('0x1d')](_0x593e47,_0x3ec4da,!![]);}catch(_0x190b79){return BPromise[_0x2895('0x1e')](_0x190b79);}return _0x593e47[_0x2895('0x1f')]();};}function saveUpdates(_0x8b75e0,_0x5dbbfe){return function(_0x30c6c3){if(_0x30c6c3){return _0x30c6c3[_0x2895('0x20')](_0x8b75e0)['then'](function(_0x142e58){return _0x142e58;});}return null;};}function removeEntity(_0x384357,_0x6f8ad4){return function(_0x511286){if(_0x511286){return _0x511286['destroy']()[_0x2895('0x21')](function(){_0x384357[_0x2895('0x16')](0xcc)[_0x2895('0x22')]();});}};}function handleEntityNotFound(_0x4a21cf,_0x3d3320){return function(_0x3690ce){if(!_0x3690ce){_0x4a21cf['sendStatus'](0x194);}return _0x3690ce;};}function handleError(_0x293ad3,_0x127540){_0x127540=_0x127540||0x1f4;return function(_0x2cd4df){logger['error'](_0x2cd4df[_0x2895('0x23')]);if(_0x2cd4df[_0x2895('0x24')]){delete _0x2cd4df['name'];}_0x293ad3[_0x2895('0x16')](_0x127540)['send'](_0x2cd4df);};}exports['index']=function(_0x18a935,_0x4ee2cc){var _0xfa4f85={},_0x381538={},_0x4fdd94={'count':0x0,'rows':[]};var _0x5574bf=_[_0x2895('0x25')](db[_0x2895('0x26')][_0x2895('0x27')],function(_0x14e343){return{'name':_0x14e343[_0x2895('0x28')],'type':_0x14e343[_0x2895('0x29')][_0x2895('0x2a')]};});_0x381538['model']=_[_0x2895('0x25')](_0x5574bf,_0x2895('0x24'));_0x381538[_0x2895('0x2b')]=_['keys'](_0x18a935[_0x2895('0x2b')]);_0x381538[_0x2895('0x2c')]=_[_0x2895('0x2d')](_0x381538[_0x2895('0x2e')],_0x381538['query']);_0xfa4f85[_0x2895('0x2f')]=_[_0x2895('0x2d')](_0x381538[_0x2895('0x2e')],qs[_0x2895('0x30')](_0x18a935[_0x2895('0x2b')]['fields']));_0xfa4f85['attributes']=_0xfa4f85[_0x2895('0x2f')][_0x2895('0x31')]?_0xfa4f85['attributes']:_0x381538[_0x2895('0x2e')];if(!_0x18a935['query'][_0x2895('0x32')](_0x2895('0x33'))){_0xfa4f85['limit']=qs[_0x2895('0x1a')](_0x18a935['query'][_0x2895('0x1a')]);_0xfa4f85['offset']=qs['offset'](_0x18a935[_0x2895('0x2b')][_0x2895('0x18')]);}_0xfa4f85[_0x2895('0x34')]=qs['sort'](_0x18a935[_0x2895('0x2b')][_0x2895('0x35')]);_0xfa4f85[_0x2895('0x36')]=qs[_0x2895('0x2c')](_[_0x2895('0x37')](_0x18a935[_0x2895('0x2b')],_0x381538[_0x2895('0x2c')]),_0x5574bf);if(_0x18a935[_0x2895('0x2b')][_0x2895('0x38')]){_0xfa4f85[_0x2895('0x36')]=_['merge'](_0xfa4f85[_0x2895('0x36')],{'$or':_[_0x2895('0x25')](_0x5574bf,function(_0x47413d){if(_0x47413d[_0x2895('0x29')]!==_0x2895('0x39')){var _0x12d7d8={};_0x12d7d8[_0x47413d[_0x2895('0x24')]]={'$like':'%'+_0x18a935['query']['filter']+'%'};return _0x12d7d8;}})});}_0xfa4f85=_[_0x2895('0x3a')]({},_0xfa4f85,_0x18a935[_0x2895('0x3b')]);var _0x24b9e0={'where':_0xfa4f85[_0x2895('0x36')]};return db[_0x2895('0x26')][_0x2895('0x1b')](_0x24b9e0)['then'](function(_0x5d18ef){_0x4fdd94[_0x2895('0x1b')]=_0x5d18ef;if(_0x18a935[_0x2895('0x2b')]['includeAll']){_0xfa4f85['include']=[{'all':!![]}];}return db[_0x2895('0x26')][_0x2895('0x3c')](_0xfa4f85);})[_0x2895('0x21')](function(_0x28967f){_0x4fdd94[_0x2895('0x3d')]=_0x28967f;return _0x4fdd94;})[_0x2895('0x21')](respondWithFilteredResult(_0x4ee2cc,_0xfa4f85))['catch'](handleError(_0x4ee2cc,null));};exports[_0x2895('0x3e')]=function(_0x2cfb24,_0x18ca24){var _0x1537fd={'raw':!![],'where':{'id':_0x2cfb24[_0x2895('0x3f')]['id']}},_0x4af6d6={};_0x4af6d6[_0x2895('0x2e')]=_[_0x2895('0x40')](db[_0x2895('0x26')]['rawAttributes']);_0x4af6d6['query']=_[_0x2895('0x40')](_0x2cfb24[_0x2895('0x2b')]);_0x4af6d6[_0x2895('0x2c')]=_[_0x2895('0x2d')](_0x4af6d6[_0x2895('0x2e')],_0x4af6d6['query']);_0x1537fd['attributes']=_[_0x2895('0x2d')](_0x4af6d6[_0x2895('0x2e')],qs[_0x2895('0x30')](_0x2cfb24[_0x2895('0x2b')][_0x2895('0x30')]));_0x1537fd[_0x2895('0x2f')]=_0x1537fd[_0x2895('0x2f')]['length']?_0x1537fd[_0x2895('0x2f')]:_0x4af6d6[_0x2895('0x2e')];if(_0x2cfb24[_0x2895('0x2b')][_0x2895('0x41')]){_0x1537fd[_0x2895('0x42')]=[{'all':!![]}];}_0x1537fd=_[_0x2895('0x3a')]({},_0x1537fd,_0x2cfb24[_0x2895('0x3b')]);return db[_0x2895('0x26')]['find'](_0x1537fd)[_0x2895('0x21')](handleEntityNotFound(_0x18ca24,null))[_0x2895('0x21')](respondWithResult(_0x18ca24,null))[_0x2895('0x43')](handleError(_0x18ca24,null));};exports['create']=function(_0xc85aa1,_0x5307a9){return db['MailQueueReport'][_0x2895('0x44')](_0xc85aa1[_0x2895('0x45')],{})[_0x2895('0x21')](respondWithResult(_0x5307a9,0xc9))[_0x2895('0x43')](handleError(_0x5307a9,null));};exports[_0x2895('0x20')]=function(_0x3cc331,_0x11e53a){if(_0x3cc331['body']['id']){delete _0x3cc331[_0x2895('0x45')]['id'];}return db[_0x2895('0x26')]['find']({'where':{'id':_0x3cc331['params']['id']}})['then'](handleEntityNotFound(_0x11e53a,null))[_0x2895('0x21')](saveUpdates(_0x3cc331[_0x2895('0x45')],null))[_0x2895('0x21')](respondWithResult(_0x11e53a,null))[_0x2895('0x43')](handleError(_0x11e53a,null));};exports[_0x2895('0x46')]=function(_0x3c5261,_0xaca46c){return db[_0x2895('0x26')][_0x2895('0x47')]({'where':{'id':_0x3c5261[_0x2895('0x3f')]['id']}})[_0x2895('0x21')](handleEntityNotFound(_0xaca46c,null))[_0x2895('0x21')](removeEntity(_0xaca46c,null))[_0x2895('0x43')](handleError(_0xaca46c,null));};exports[_0x2895('0x48')]=function(_0x356d35,_0x3c1135){return db[_0x2895('0x26')][_0x2895('0x48')]()[_0x2895('0x21')](respondWithResult(_0x3c1135,null))[_0x2895('0x43')](handleError(_0x3c1135,null));};
\ No newline at end of file
+var _0x1a37=['index','map','MailQueueReport','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','VIRTUAL','merge','includeAll','include','findAll','catch','show','options','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1a37,0xb4));var _0x71a3=function(_0x23e7c1,_0x35110c){_0x23e7c1=_0x23e7c1-0x0;var _0x1add43=_0x1a37[_0x23e7c1];return _0x1add43;};'use strict';var emlformat=require(_0x71a3('0x0'));var rimraf=require(_0x71a3('0x1'));var zipdir=require(_0x71a3('0x2'));var jsonpatch=require(_0x71a3('0x3'));var rp=require(_0x71a3('0x4'));var moment=require(_0x71a3('0x5'));var BPromise=require(_0x71a3('0x6'));var Mustache=require(_0x71a3('0x7'));var util=require(_0x71a3('0x8'));var path=require(_0x71a3('0x9'));var sox=require('sox');var csv=require(_0x71a3('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x71a3('0xb'));var _=require(_0x71a3('0xc'));var squel=require(_0x71a3('0xd'));var crypto=require(_0x71a3('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x71a3('0xf'));var Redis=require(_0x71a3('0x10'));var authService=require(_0x71a3('0x11'));var qs=require(_0x71a3('0x12'));var as=require(_0x71a3('0x13'));var hardwareService=require(_0x71a3('0x14'));var logger=require(_0x71a3('0x15'))(_0x71a3('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x71a3('0x17'))['db'];function respondWithStatusCode(_0x3830cb,_0x27e46d){_0x27e46d=_0x27e46d||0xcc;return function(_0x229134){if(_0x229134){return _0x3830cb[_0x71a3('0x18')](_0x27e46d);}return _0x3830cb[_0x71a3('0x19')](_0x27e46d)[_0x71a3('0x1a')]();};}function respondWithResult(_0x3b256c,_0x4dc4ed){_0x4dc4ed=_0x4dc4ed||0xc8;return function(_0x203ee1){if(_0x203ee1){return _0x3b256c[_0x71a3('0x19')](_0x4dc4ed)['json'](_0x203ee1);}};}function respondWithFilteredResult(_0x1743d7,_0x32591a){return function(_0x59021f){if(_0x59021f){var _0x4aa918=typeof _0x32591a[_0x71a3('0x1b')]===_0x71a3('0x1c')&&typeof _0x32591a[_0x71a3('0x1d')]===_0x71a3('0x1c');var _0x1af1bc=_0x59021f[_0x71a3('0x1e')];var _0x5d4dee=_0x4aa918?0x0:_0x32591a[_0x71a3('0x1b')];var _0x27bfb4=_0x4aa918?_0x59021f['count']:_0x32591a['offset']+_0x32591a[_0x71a3('0x1d')];var _0x250db3;if(_0x27bfb4>=_0x1af1bc){_0x27bfb4=_0x1af1bc;_0x250db3=0xc8;}else{_0x250db3=0xce;}_0x1743d7[_0x71a3('0x19')](_0x250db3);return _0x1743d7[_0x71a3('0x1f')](_0x71a3('0x20'),_0x5d4dee+'-'+_0x27bfb4+'/'+_0x1af1bc)['json'](_0x59021f);}return null;};}function patchUpdates(_0x1ab947){return function(_0x4156e1){try{jsonpatch[_0x71a3('0x21')](_0x4156e1,_0x1ab947,!![]);}catch(_0x3ea036){return BPromise[_0x71a3('0x22')](_0x3ea036);}return _0x4156e1['save']();};}function saveUpdates(_0x1af24b,_0x5bbaee){return function(_0x3bf78e){if(_0x3bf78e){return _0x3bf78e[_0x71a3('0x23')](_0x1af24b)[_0x71a3('0x24')](function(_0x21899d){return _0x21899d;});}return null;};}function removeEntity(_0x452bc4,_0x2847b4){return function(_0x5f33c5){if(_0x5f33c5){return _0x5f33c5[_0x71a3('0x25')]()[_0x71a3('0x24')](function(){_0x452bc4[_0x71a3('0x19')](0xcc)[_0x71a3('0x1a')]();});}};}function handleEntityNotFound(_0xb0f3aa,_0x4fd214){return function(_0x107fbd){if(!_0x107fbd){_0xb0f3aa[_0x71a3('0x18')](0x194);}return _0x107fbd;};}function handleError(_0x4c1a3d,_0x412746){_0x412746=_0x412746||0x1f4;return function(_0x515519){logger[_0x71a3('0x26')](_0x515519[_0x71a3('0x27')]);if(_0x515519[_0x71a3('0x28')]){delete _0x515519[_0x71a3('0x28')];}_0x4c1a3d[_0x71a3('0x19')](_0x412746)[_0x71a3('0x29')](_0x515519);};}exports[_0x71a3('0x2a')]=function(_0x242b85,_0x305eb1){var _0x3fc578={},_0x3ea7aa={},_0x228afa={'count':0x0,'rows':[]};var _0x51cde3=_[_0x71a3('0x2b')](db[_0x71a3('0x2c')][_0x71a3('0x2d')],function(_0x23ae85){return{'name':_0x23ae85['fieldName'],'type':_0x23ae85[_0x71a3('0x2e')][_0x71a3('0x2f')]};});_0x3ea7aa[_0x71a3('0x30')]=_[_0x71a3('0x2b')](_0x51cde3,_0x71a3('0x28'));_0x3ea7aa[_0x71a3('0x31')]=_[_0x71a3('0x32')](_0x242b85['query']);_0x3ea7aa[_0x71a3('0x33')]=_[_0x71a3('0x34')](_0x3ea7aa[_0x71a3('0x30')],_0x3ea7aa[_0x71a3('0x31')]);_0x3fc578[_0x71a3('0x35')]=_[_0x71a3('0x34')](_0x3ea7aa[_0x71a3('0x30')],qs[_0x71a3('0x36')](_0x242b85[_0x71a3('0x31')][_0x71a3('0x36')]));_0x3fc578[_0x71a3('0x35')]=_0x3fc578[_0x71a3('0x35')][_0x71a3('0x37')]?_0x3fc578['attributes']:_0x3ea7aa['model'];if(!_0x242b85[_0x71a3('0x31')][_0x71a3('0x38')]('nolimit')){_0x3fc578[_0x71a3('0x1d')]=qs[_0x71a3('0x1d')](_0x242b85['query'][_0x71a3('0x1d')]);_0x3fc578[_0x71a3('0x1b')]=qs[_0x71a3('0x1b')](_0x242b85[_0x71a3('0x31')][_0x71a3('0x1b')]);}_0x3fc578[_0x71a3('0x39')]=qs[_0x71a3('0x3a')](_0x242b85['query'][_0x71a3('0x3a')]);_0x3fc578[_0x71a3('0x3b')]=qs[_0x71a3('0x33')](_['pick'](_0x242b85[_0x71a3('0x31')],_0x3ea7aa[_0x71a3('0x33')]),_0x51cde3);if(_0x242b85[_0x71a3('0x31')][_0x71a3('0x3c')]){_0x3fc578[_0x71a3('0x3b')]=_['merge'](_0x3fc578['where'],{'$or':_[_0x71a3('0x2b')](_0x51cde3,function(_0x2b3197){if(_0x2b3197[_0x71a3('0x2e')]!==_0x71a3('0x3d')){var _0x36ed2e={};_0x36ed2e[_0x2b3197['name']]={'$like':'%'+_0x242b85[_0x71a3('0x31')][_0x71a3('0x3c')]+'%'};return _0x36ed2e;}})});}_0x3fc578=_[_0x71a3('0x3e')]({},_0x3fc578,_0x242b85['options']);var _0x17c467={'where':_0x3fc578['where']};return db[_0x71a3('0x2c')][_0x71a3('0x1e')](_0x17c467)[_0x71a3('0x24')](function(_0x43c6d1){_0x228afa[_0x71a3('0x1e')]=_0x43c6d1;if(_0x242b85[_0x71a3('0x31')][_0x71a3('0x3f')]){_0x3fc578[_0x71a3('0x40')]=[{'all':!![]}];}return db[_0x71a3('0x2c')][_0x71a3('0x41')](_0x3fc578);})['then'](function(_0xa49846){_0x228afa['rows']=_0xa49846;return _0x228afa;})[_0x71a3('0x24')](respondWithFilteredResult(_0x305eb1,_0x3fc578))[_0x71a3('0x42')](handleError(_0x305eb1,null));};exports[_0x71a3('0x43')]=function(_0x18974c,_0x59c7c9){var _0x412bce={'raw':!![],'where':{'id':_0x18974c['params']['id']}},_0x4b4fde={};_0x4b4fde[_0x71a3('0x30')]=_[_0x71a3('0x32')](db[_0x71a3('0x2c')][_0x71a3('0x2d')]);_0x4b4fde['query']=_[_0x71a3('0x32')](_0x18974c[_0x71a3('0x31')]);_0x4b4fde[_0x71a3('0x33')]=_[_0x71a3('0x34')](_0x4b4fde[_0x71a3('0x30')],_0x4b4fde[_0x71a3('0x31')]);_0x412bce[_0x71a3('0x35')]=_[_0x71a3('0x34')](_0x4b4fde[_0x71a3('0x30')],qs[_0x71a3('0x36')](_0x18974c[_0x71a3('0x31')][_0x71a3('0x36')]));_0x412bce[_0x71a3('0x35')]=_0x412bce[_0x71a3('0x35')][_0x71a3('0x37')]?_0x412bce[_0x71a3('0x35')]:_0x4b4fde['model'];if(_0x18974c[_0x71a3('0x31')][_0x71a3('0x3f')]){_0x412bce['include']=[{'all':!![]}];}_0x412bce=_[_0x71a3('0x3e')]({},_0x412bce,_0x18974c[_0x71a3('0x44')]);return db[_0x71a3('0x2c')][_0x71a3('0x45')](_0x412bce)[_0x71a3('0x24')](handleEntityNotFound(_0x59c7c9,null))['then'](respondWithResult(_0x59c7c9,null))['catch'](handleError(_0x59c7c9,null));};exports[_0x71a3('0x46')]=function(_0x4305ee,_0x51d20d){return db[_0x71a3('0x2c')][_0x71a3('0x46')](_0x4305ee[_0x71a3('0x47')],{})[_0x71a3('0x24')](respondWithResult(_0x51d20d,0xc9))[_0x71a3('0x42')](handleError(_0x51d20d,null));};exports[_0x71a3('0x23')]=function(_0x501a62,_0x1c9ba6){if(_0x501a62['body']['id']){delete _0x501a62[_0x71a3('0x47')]['id'];}return db[_0x71a3('0x2c')][_0x71a3('0x45')]({'where':{'id':_0x501a62[_0x71a3('0x48')]['id']}})[_0x71a3('0x24')](handleEntityNotFound(_0x1c9ba6,null))['then'](saveUpdates(_0x501a62[_0x71a3('0x47')],null))[_0x71a3('0x24')](respondWithResult(_0x1c9ba6,null))[_0x71a3('0x42')](handleError(_0x1c9ba6,null));};exports['destroy']=function(_0x6c34,_0x4e6423){return db[_0x71a3('0x2c')][_0x71a3('0x45')]({'where':{'id':_0x6c34['params']['id']}})[_0x71a3('0x24')](handleEntityNotFound(_0x4e6423,null))[_0x71a3('0x24')](removeEntity(_0x4e6423,null))[_0x71a3('0x42')](handleError(_0x4e6423,null));};exports[_0x71a3('0x49')]=function(_0x11391d,_0x3952c0){return db[_0x71a3('0x2c')]['describe']()[_0x71a3('0x24')](respondWithResult(_0x3952c0,null))['catch'](handleError(_0x3952c0,null));};
\ No newline at end of file
index 1ffe632..d5a4f29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa777=['rimraf','../../config/environment','./mailQueueReport.attributes','exports','define','uniqueid','util','../../config/logger','api','moment','bluebird','path'];(function(_0x2cb1df,_0x4b439c){var _0x30e674=function(_0x532f8b){while(--_0x532f8b){_0x2cb1df['push'](_0x2cb1df['shift']());}};_0x30e674(++_0x4b439c);}(_0xa777,0x102));var _0x7a77=function(_0x5c85b0,_0x578796){_0x5c85b0=_0x5c85b0-0x0;var _0x5ea3fd=_0xa777[_0x5c85b0];return _0x5ea3fd;};'use strict';var _=require('lodash');var util=require(_0x7a77('0x0'));var logger=require(_0x7a77('0x1'))(_0x7a77('0x2'));var moment=require(_0x7a77('0x3'));var BPromise=require(_0x7a77('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7a77('0x5'));var rimraf=require(_0x7a77('0x6'));var config=require(_0x7a77('0x7'));var attributes=require(_0x7a77('0x8'));module[_0x7a77('0x9')]=function(_0x493a5f,_0x451da3){return _0x493a5f[_0x7a77('0xa')]('MailQueueReport',attributes,{'tableName':'report_mail_queue','paranoid':![],'indexes':[{'name':_0x7a77('0xb'),'fields':[_0x7a77('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfe0a=['api','bluebird','request-promise','path','rimraf','../../config/environment','./mailQueueReport.attributes','exports','MailQueueReport','report_mail_queue','uniqueid','lodash','util','../../config/logger'];(function(_0x5a3d26,_0x2fffcd){var _0x24cf61=function(_0xf44a08){while(--_0xf44a08){_0x5a3d26['push'](_0x5a3d26['shift']());}};_0x24cf61(++_0x2fffcd);}(_0xfe0a,0xcf));var _0xafe0=function(_0x1c30aa,_0x4cd5e8){_0x1c30aa=_0x1c30aa-0x0;var _0x27731e=_0xfe0a[_0x1c30aa];return _0x27731e;};'use strict';var _=require(_0xafe0('0x0'));var util=require(_0xafe0('0x1'));var logger=require(_0xafe0('0x2'))(_0xafe0('0x3'));var moment=require('moment');var BPromise=require(_0xafe0('0x4'));var rp=require(_0xafe0('0x5'));var fs=require('fs');var path=require(_0xafe0('0x6'));var rimraf=require(_0xafe0('0x7'));var config=require(_0xafe0('0x8'));var attributes=require(_0xafe0('0x9'));module[_0xafe0('0xa')]=function(_0x3466d5,_0x141036){return _0x3466d5['define'](_0xafe0('0xb'),attributes,{'tableName':_0xafe0('0xc'),'paranoid':![],'indexes':[{'name':_0xafe0('0xd'),'fields':[_0xafe0('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index cf9c97b..4f0af8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['UpdateMailQueueReport','MailQueueReport','update','raw','where','limit','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','MailQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','CreateMailQueueReport','create','body','options'];(function(_0x57cb4f,_0x541f57){var _0x29bb45=function(_0x462bee){while(--_0x462bee){_0x57cb4f['push'](_0x57cb4f['shift']());}};_0x29bb45(++_0x541f57);}(_0xdb28,0x106));var _0x8db2=function(_0x385bdc,_0x183251){_0x385bdc=_0x385bdc-0x0;var _0x3c8d20=_0xdb28[_0x385bdc];return _0x3c8d20;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var moment=require(_0x8db2('0x2'));var BPromise=require(_0x8db2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8db2('0x4'));var db=require(_0x8db2('0x5'))['db'];var utils=require(_0x8db2('0x6'));var logger=require(_0x8db2('0x7'))(_0x8db2('0x8'));var config=require('../../config/environment');var jayson=require(_0x8db2('0x9'));var client=jayson[_0x8db2('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x494b40,_0x477f50,_0x46932f){return new BPromise(function(_0x131537,_0x29f698){return client[_0x8db2('0xb')](_0x494b40,_0x46932f)[_0x8db2('0xc')](function(_0x126c78){logger['info'](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));logger[_0x8db2('0xf')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x477f50,_0x8db2('0xe'),JSON[_0x8db2('0x10')](_0x126c78));if(_0x126c78['error']){if(_0x126c78[_0x8db2('0x11')][_0x8db2('0x12')]===0x1f4){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')]['message']);return _0x29f698(_0x126c78['error'][_0x8db2('0x13')]);}logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);return _0x131537(_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);}else{logger[_0x8db2('0x14')](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));_0x131537(_0x126c78['result'][_0x8db2('0x13')]);}})[_0x8db2('0x15')](function(_0x48101e){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x48101e);_0x29f698(_0x48101e);});});}exports[_0x8db2('0x16')]=function(_0x3fddc2){var _0x2efd06=this;return new Promise(function(_0x46ce14,_0x51d60d){return db['MailQueueReport'][_0x8db2('0x17')](_0x3fddc2[_0x8db2('0x18')],{'raw':_0x3fddc2[_0x8db2('0x19')]?_0x3fddc2[_0x8db2('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x8db2('0xc')](function(_0x36a9ff){logger[_0x8db2('0x14')](_0x8db2('0x16'),_0x3fddc2);logger[_0x8db2('0xf')]('CreateMailQueueReport',_0x3fddc2,JSON[_0x8db2('0x10')](_0x36a9ff));_0x46ce14(_0x36a9ff);})[_0x8db2('0x15')](function(_0x18f69c){logger[_0x8db2('0x11')](_0x8db2('0x16'),_0x18f69c[_0x8db2('0x13')],_0x3fddc2);_0x51d60d(_0x2efd06[_0x8db2('0x11')](0x1f4,_0x18f69c['message']));});});};exports[_0x8db2('0x1a')]=function(_0x4f6516){var _0x5725f0=this;return new Promise(function(_0x52a9ca,_0x4d923c){return db[_0x8db2('0x1b')][_0x8db2('0x1c')](_0x4f6516[_0x8db2('0x18')],{'raw':_0x4f6516[_0x8db2('0x19')]?_0x4f6516[_0x8db2('0x19')][_0x8db2('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4f6516['options']?_0x4f6516[_0x8db2('0x19')][_0x8db2('0x1e')]||null:null,'attributes':_0x4f6516[_0x8db2('0x19')]?_0x4f6516[_0x8db2('0x19')]['attributes']||null:null,'limit':_0x4f6516[_0x8db2('0x19')]?_0x4f6516[_0x8db2('0x19')][_0x8db2('0x1f')]||null:null})[_0x8db2('0xc')](function(_0xbe5ece){logger[_0x8db2('0x14')](_0x8db2('0x1a'),_0x4f6516);logger[_0x8db2('0xf')](_0x8db2('0x1a'),_0x4f6516,JSON['stringify'](_0xbe5ece));_0x52a9ca(_0xbe5ece);})[_0x8db2('0x15')](function(_0x50b28d){logger['error'](_0x8db2('0x1a'),_0x50b28d[_0x8db2('0x13')],_0x4f6516);_0x4d923c(_0x5725f0[_0x8db2('0x11')](0x1f4,_0x50b28d['message']));});});};
\ No newline at end of file
+var _0xadb5=['MailQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateMailQueueReport','create','options','raw','debug','MailQueueReport','body','attributes','limit','UpdateMailQueueReport','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info'];(function(_0x409263,_0x402ccc){var _0x51e1ea=function(_0x21a809){while(--_0x21a809){_0x409263['push'](_0x409263['shift']());}};_0x51e1ea(++_0x402ccc);}(_0xadb5,0xad));var _0x5adb=function(_0x509513,_0x25d867){_0x509513=_0x509513-0x0;var _0x335512=_0xadb5[_0x509513];return _0x335512;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('MailQueueReport,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}exports[_0x5adb('0x15')]=function(_0x529b65){var _0x3fff62=this;return new Promise(function(_0x5de028,_0x1d9e86){return db['MailQueueReport'][_0x5adb('0x16')](_0x529b65['body'],{'raw':_0x529b65['options']?_0x529b65[_0x5adb('0x17')][_0x5adb('0x18')]===undefined?!![]:![]:!![]})[_0x5adb('0xb')](function(_0x1fd4a7){logger[_0x5adb('0xc')]('CreateMailQueueReport',_0x529b65);logger[_0x5adb('0x19')]('CreateMailQueueReport',_0x529b65,JSON['stringify'](_0x1fd4a7));_0x5de028(_0x1fd4a7);})[_0x5adb('0x14')](function(_0x379b33){logger[_0x5adb('0x10')](_0x5adb('0x15'),_0x379b33[_0x5adb('0x12')],_0x529b65);_0x1d9e86(_0x3fff62[_0x5adb('0x10')](0x1f4,_0x379b33[_0x5adb('0x12')]));});});};exports['UpdateMailQueueReport']=function(_0x4b1957){var _0x373cc3=this;return new Promise(function(_0x3220cd,_0x3839fb){return db[_0x5adb('0x1a')]['update'](_0x4b1957[_0x5adb('0x1b')],{'raw':_0x4b1957[_0x5adb('0x17')]?_0x4b1957['options'][_0x5adb('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')]['where']||null:null,'attributes':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')][_0x5adb('0x1c')]||null:null,'limit':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')][_0x5adb('0x1d')]||null:null})['then'](function(_0x49992e){logger['info'](_0x5adb('0x1e'),_0x4b1957);logger[_0x5adb('0x19')](_0x5adb('0x1e'),_0x4b1957,JSON[_0x5adb('0xf')](_0x49992e));_0x3220cd(_0x49992e);})[_0x5adb('0x14')](function(_0x4de310){logger[_0x5adb('0x10')](_0x5adb('0x1e'),_0x4de310[_0x5adb('0x12')],_0x4b1957);_0x3839fb(_0x373cc3[_0x5adb('0x10')](0x1f4,_0x4de310[_0x5adb('0x12')]));});});};
\ No newline at end of file
index c22b78a..17e78d5 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(_0x4a44ae,_0xf0beeb){var _0x35f76f=function(_0x57e5fb){while(--_0x57e5fb){_0x4a44ae['push'](_0x4a44ae['shift']());}};_0x35f76f(++_0xf0beeb);}(_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(_0x393525,_0x258412){var _0x5e8282=function(_0x24a496){while(--_0x24a496){_0x393525['push'](_0x393525['shift']());}};_0x5e8282(++_0x258412);}(_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 7357a3d..4abb1ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafec=['sequelize','STRING','BOOLEAN','INTEGER','INBOX'];(function(_0x100b96,_0x1bac2c){var _0x44bbcf=function(_0x3ed853){while(--_0x3ed853){_0x100b96['push'](_0x100b96['shift']());}};_0x44bbcf(++_0x1bac2c);}(_0xafec,0x168));var _0xcafe=function(_0x39bc06,_0x18d7ff){_0x39bc06=_0x39bc06-0x0;var _0x131143=_0xafec[_0x39bc06];return _0x131143;};'use strict';var Sequelize=require(_0xcafe('0x0'));module['exports']={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xcafe('0x1')]},'authentication':{'type':Sequelize[_0xcafe('0x2')],'defaultValue':!![]},'user':{'type':Sequelize[_0xcafe('0x1')]},'password':{'type':Sequelize[_0xcafe('0x1')]},'port':{'type':Sequelize[_0xcafe('0x3')]},'tls':{'type':Sequelize[_0xcafe('0x2')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0xcafe('0x1')],'defaultValue':_0xcafe('0x4')},'connTimeout':{'type':Sequelize[_0xcafe('0x3')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0xcafe('0x3')],'defaultValue':0x5},'service':{'type':Sequelize[_0xcafe('0x1')]},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xb5ef=['BOOLEAN','INTEGER','INBOX','STRING'];(function(_0x1a91b3,_0x4a12c0){var _0x37d1e5=function(_0x257e68){while(--_0x257e68){_0x1a91b3['push'](_0x1a91b3['shift']());}};_0x37d1e5(++_0x4a12c0);}(_0xb5ef,0xbf));var _0xfb5e=function(_0x476c92,_0x65087d){_0x476c92=_0x476c92-0x0;var _0x24e075=_0xb5ef[_0x476c92];return _0x24e075;};'use strict';var Sequelize=require('sequelize');module['exports']={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xfb5e('0x0')]},'authentication':{'type':Sequelize[_0xfb5e('0x1')],'defaultValue':!![]},'user':{'type':Sequelize[_0xfb5e('0x0')]},'password':{'type':Sequelize[_0xfb5e('0x0')]},'port':{'type':Sequelize[_0xfb5e('0x2')]},'tls':{'type':Sequelize[_0xfb5e('0x1')],'defaultValue':!![]},'mailbox':{'type':Sequelize['STRING'],'defaultValue':_0xfb5e('0x3')},'connTimeout':{'type':Sequelize[_0xfb5e('0x2')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0xfb5e('0x2')],'defaultValue':0x5},'service':{'type':Sequelize[_0xfb5e('0x0')]},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 8a980e5..74f5cd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa197=['bluebird','request-promise','path','rimraf','../../config/environment','exports','define','MailServerIn','mail_servers_in','api'];(function(_0x195cae,_0x3d40ca){var _0x4a37bc=function(_0x2543dd){while(--_0x2543dd){_0x195cae['push'](_0x195cae['shift']());}};_0x4a37bc(++_0x3d40ca);}(_0xa197,0x1d5));var _0x7a19=function(_0x1030ce,_0xbe3f74){_0x1030ce=_0x1030ce-0x0;var _0x3367fd=_0xa197[_0x1030ce];return _0x3367fd;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x7a19('0x0'));var moment=require('moment');var BPromise=require(_0x7a19('0x1'));var rp=require(_0x7a19('0x2'));var fs=require('fs');var path=require(_0x7a19('0x3'));var rimraf=require(_0x7a19('0x4'));var config=require(_0x7a19('0x5'));var attributes=require('./mailServerIn.attributes');module[_0x7a19('0x6')]=function(_0x4d4da5,_0x18335f){return _0x4d4da5[_0x7a19('0x7')](_0x7a19('0x8'),attributes,{'tableName':_0x7a19('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc7f7=['define','mail_servers_in','lodash','util','api','moment','bluebird','rimraf','../../config/environment','./mailServerIn.attributes'];(function(_0x1ab120,_0x442aa6){var _0x1c34df=function(_0x1f24c6){while(--_0x1f24c6){_0x1ab120['push'](_0x1ab120['shift']());}};_0x1c34df(++_0x442aa6);}(_0xc7f7,0x1ce));var _0x7c7f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc7f7[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7c7f('0x0'));var util=require(_0x7c7f('0x1'));var logger=require('../../config/logger')(_0x7c7f('0x2'));var moment=require(_0x7c7f('0x3'));var BPromise=require(_0x7c7f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x7c7f('0x5'));var config=require(_0x7c7f('0x6'));var attributes=require(_0x7c7f('0x7'));module['exports']=function(_0x4269c9,_0x2816d2){return _0x4269c9[_0x7c7f('0x8')]('MailServerIn',attributes,{'tableName':_0x7c7f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 69829b0..9ff5667 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xada2=['request','info','MailServerIn,\x20%s,\x20%s','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','error','code','message','GetMailServerIn','MailServerIn','options','raw','where','attributes','limit','include','map','model','then','stringify','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http'];(function(_0x5138f4,_0x5a79d8){var _0x5e46fb=function(_0x367368){while(--_0x367368){_0x5138f4['push'](_0x5138f4['shift']());}};_0x5e46fb(++_0x5a79d8);}(_0xada2,0xfd));var _0x2ada=function(_0x5414b3,_0x495f76){_0x5414b3=_0x5414b3-0x0;var _0x4b5d1f=_0xada2[_0x5414b3];return _0x4b5d1f;};'use strict';var _=require(_0x2ada('0x0'));var util=require(_0x2ada('0x1'));var moment=require(_0x2ada('0x2'));var BPromise=require(_0x2ada('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2ada('0x4'));var db=require(_0x2ada('0x5'))['db'];var utils=require(_0x2ada('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x2ada('0x7'));var jayson=require(_0x2ada('0x8'));var client=jayson[_0x2ada('0x9')][_0x2ada('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xa4b8b1,_0x3f3726,_0x4166d8){return new BPromise(function(_0x1deb4a,_0x1d204f){return client[_0x2ada('0xb')](_0xa4b8b1,_0x4166d8)['then'](function(_0x508398){logger[_0x2ada('0xc')](_0x2ada('0xd'),_0x3f3726,_0x2ada('0xe'));logger[_0x2ada('0xf')](_0x2ada('0x10'),_0x3f3726,_0x2ada('0xe'),JSON['stringify'](_0x508398));if(_0x508398[_0x2ada('0x11')]){if(_0x508398[_0x2ada('0x11')][_0x2ada('0x12')]===0x1f4){logger[_0x2ada('0x11')]('MailServerIn,\x20%s,\x20%s',_0x3f3726,_0x508398[_0x2ada('0x11')]['message']);return _0x1d204f(_0x508398[_0x2ada('0x11')][_0x2ada('0x13')]);}logger[_0x2ada('0x11')](_0x2ada('0xd'),_0x3f3726,_0x508398[_0x2ada('0x11')][_0x2ada('0x13')]);return _0x1deb4a(_0x508398[_0x2ada('0x11')][_0x2ada('0x13')]);}else{logger[_0x2ada('0xc')]('MailServerIn,\x20%s,\x20%s',_0x3f3726,_0x2ada('0xe'));_0x1deb4a(_0x508398['result'][_0x2ada('0x13')]);}})['catch'](function(_0x1f6622){logger[_0x2ada('0x11')](_0x2ada('0xd'),_0x3f3726,_0x1f6622);_0x1d204f(_0x1f6622);});});}exports[_0x2ada('0x14')]=function(_0x343434){var _0x1f88b6=this;return new Promise(function(_0x1a3350,_0x2ce0a7){return db[_0x2ada('0x15')]['findAll']({'raw':_0x343434[_0x2ada('0x16')]?_0x343434['options'][_0x2ada('0x17')]===undefined?!![]:![]:!![],'where':_0x343434[_0x2ada('0x16')]?_0x343434[_0x2ada('0x16')][_0x2ada('0x18')]||null:null,'attributes':_0x343434[_0x2ada('0x16')]?_0x343434[_0x2ada('0x16')][_0x2ada('0x19')]||null:null,'limit':_0x343434[_0x2ada('0x16')]?_0x343434[_0x2ada('0x16')][_0x2ada('0x1a')]||null:null,'include':_0x343434[_0x2ada('0x16')]?_0x343434[_0x2ada('0x16')][_0x2ada('0x1b')]?_[_0x2ada('0x1c')](_0x343434[_0x2ada('0x16')][_0x2ada('0x1b')],function(_0x376ff6){return{'model':db[_0x376ff6[_0x2ada('0x1d')]],'as':_0x376ff6['as'],'attributes':_0x376ff6[_0x2ada('0x19')],'include':_0x376ff6[_0x2ada('0x1b')]?_['map'](_0x376ff6[_0x2ada('0x1b')],function(_0x27a28f){return{'model':db[_0x27a28f[_0x2ada('0x1d')]],'as':_0x27a28f['as'],'attributes':_0x27a28f[_0x2ada('0x19')],'include':_0x27a28f[_0x2ada('0x1b')]?_[_0x2ada('0x1c')](_0x27a28f[_0x2ada('0x1b')],function(_0x4c9f85){return{'model':db[_0x4c9f85[_0x2ada('0x1d')]],'as':_0x4c9f85['as'],'attributes':_0x4c9f85[_0x2ada('0x19')]};}):[]};}):[]};}):[]:[]})[_0x2ada('0x1e')](function(_0x369ff3){logger[_0x2ada('0xc')](_0x2ada('0x14'),_0x343434);logger[_0x2ada('0xf')]('GetMailServerIn',_0x343434,JSON[_0x2ada('0x1f')](_0x369ff3));_0x1a3350(_0x369ff3);})[_0x2ada('0x20')](function(_0x25ce7c){logger[_0x2ada('0x11')](_0x2ada('0x14'),_0x25ce7c[_0x2ada('0x13')],_0x343434);_0x2ce0a7(_0x1f88b6[_0x2ada('0x11')](0x1f4,_0x25ce7c[_0x2ada('0x13')]));});});};
\ No newline at end of file
+var _0x0884=['MailServerIn','findAll','options','raw','limit','include','map','model','attributes','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','MailServerIn,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetMailServerIn'];(function(_0x27215a,_0x249933){var _0x563c8d=function(_0x778538){while(--_0x778538){_0x27215a['push'](_0x27215a['shift']());}};_0x563c8d(++_0x249933);}(_0x0884,0xb3));var _0x4088=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0884[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x4088('0x0'));var util=require(_0x4088('0x1'));var moment=require(_0x4088('0x2'));var BPromise=require(_0x4088('0x3'));var rs=require(_0x4088('0x4'));var fs=require('fs');var Redis=require(_0x4088('0x5'));var db=require(_0x4088('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x4088('0x7'))(_0x4088('0x8'));var config=require(_0x4088('0x9'));var jayson=require(_0x4088('0xa'));var client=jayson[_0x4088('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4d68aa,_0x42b2c3,_0x52baff){return new BPromise(function(_0x680227,_0x8f007c){return client[_0x4088('0xc')](_0x4d68aa,_0x52baff)[_0x4088('0xd')](function(_0x32fbb6){logger[_0x4088('0xe')](_0x4088('0xf'),_0x42b2c3,_0x4088('0x10'));logger[_0x4088('0x11')]('MailServerIn,\x20%s,\x20%s,\x20%s',_0x42b2c3,_0x4088('0x10'),JSON[_0x4088('0x12')](_0x32fbb6));if(_0x32fbb6[_0x4088('0x13')]){if(_0x32fbb6['error'][_0x4088('0x14')]===0x1f4){logger[_0x4088('0x13')]('MailServerIn,\x20%s,\x20%s',_0x42b2c3,_0x32fbb6[_0x4088('0x13')][_0x4088('0x15')]);return _0x8f007c(_0x32fbb6[_0x4088('0x13')][_0x4088('0x15')]);}logger[_0x4088('0x13')](_0x4088('0xf'),_0x42b2c3,_0x32fbb6[_0x4088('0x13')][_0x4088('0x15')]);return _0x680227(_0x32fbb6[_0x4088('0x13')][_0x4088('0x15')]);}else{logger[_0x4088('0xe')](_0x4088('0xf'),_0x42b2c3,_0x4088('0x10'));_0x680227(_0x32fbb6[_0x4088('0x16')][_0x4088('0x15')]);}})[_0x4088('0x17')](function(_0x38c6d6){logger[_0x4088('0x13')]('MailServerIn,\x20%s,\x20%s',_0x42b2c3,_0x38c6d6);_0x8f007c(_0x38c6d6);});});}exports[_0x4088('0x18')]=function(_0x24fe84){var _0xc7fc8e=this;return new Promise(function(_0xf21ee7,_0x40bea5){return db[_0x4088('0x19')][_0x4088('0x1a')]({'raw':_0x24fe84[_0x4088('0x1b')]?_0x24fe84[_0x4088('0x1b')][_0x4088('0x1c')]===undefined?!![]:![]:!![],'where':_0x24fe84['options']?_0x24fe84[_0x4088('0x1b')]['where']||null:null,'attributes':_0x24fe84['options']?_0x24fe84['options']['attributes']||null:null,'limit':_0x24fe84[_0x4088('0x1b')]?_0x24fe84[_0x4088('0x1b')][_0x4088('0x1d')]||null:null,'include':_0x24fe84[_0x4088('0x1b')]?_0x24fe84['options'][_0x4088('0x1e')]?_[_0x4088('0x1f')](_0x24fe84[_0x4088('0x1b')]['include'],function(_0x4c98ef){return{'model':db[_0x4c98ef[_0x4088('0x20')]],'as':_0x4c98ef['as'],'attributes':_0x4c98ef[_0x4088('0x21')],'include':_0x4c98ef[_0x4088('0x1e')]?_[_0x4088('0x1f')](_0x4c98ef[_0x4088('0x1e')],function(_0x1274c5){return{'model':db[_0x1274c5['model']],'as':_0x1274c5['as'],'attributes':_0x1274c5['attributes'],'include':_0x1274c5[_0x4088('0x1e')]?_[_0x4088('0x1f')](_0x1274c5[_0x4088('0x1e')],function(_0x3f49f6){return{'model':db[_0x3f49f6[_0x4088('0x20')]],'as':_0x3f49f6['as'],'attributes':_0x3f49f6[_0x4088('0x21')]};}):[]};}):[]};}):[]:[]})[_0x4088('0xd')](function(_0x5d94aa){logger[_0x4088('0xe')]('GetMailServerIn',_0x24fe84);logger['debug'](_0x4088('0x18'),_0x24fe84,JSON[_0x4088('0x12')](_0x5d94aa));_0xf21ee7(_0x5d94aa);})[_0x4088('0x17')](function(_0x5b2b91){logger[_0x4088('0x13')](_0x4088('0x18'),_0x5b2b91[_0x4088('0x15')],_0x24fe84);_0x40bea5(_0xc7fc8e['error'](0x1f4,_0x5b2b91[_0x4088('0x15')]));});});};
\ No newline at end of file
index f9175ce..55d27a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['index','/:id','isAuthenticated','post','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailServerOut.controller','get'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x7a54,0x106));var _0x47a5=function(_0x53624d,_0x340e9e){_0x53624d=_0x53624d-0x0;var _0x2a4964=_0x7a54[_0x53624d];return _0x2a4964;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['update']);router[_0x47a5('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x47a5('0xf')]);module[_0x47a5('0x10')]=router;
\ No newline at end of file
+var _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(_0x28d18d,_0x55896b){var _0x470640=function(_0x57e78b){while(--_0x57e78b){_0x28d18d['push'](_0x28d18d['shift']());}};_0x470640(++_0x55896b);}(_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
index 8e85902..997ccc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7916=['sequelize','STRING','INTEGER','BOOLEAN'];(function(_0x44b827,_0x1bb1aa){var _0x527342=function(_0x481338){while(--_0x481338){_0x44b827['push'](_0x44b827['shift']());}};_0x527342(++_0x1bb1aa);}(_0x7916,0x128));var _0x6791=function(_0x39ae31,_0x4b4125){_0x39ae31=_0x39ae31-0x0;var _0x245cee=_0x7916[_0x39ae31];return _0x245cee;};'use strict';var Sequelize=require(_0x6791('0x0'));module['exports']={'description':{'type':Sequelize[_0x6791('0x1')]},'host':{'type':Sequelize[_0x6791('0x1')]},'user':{'type':Sequelize['STRING']},'pass':{'type':Sequelize[_0x6791('0x1')]},'port':{'type':Sequelize[_0x6791('0x2')]},'secure':{'type':Sequelize[_0x6791('0x3')],'defaultValue':![]},'service':{'type':Sequelize[_0x6791('0x1')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize[_0x6791('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x2f68=['INTEGER','BOOLEAN','exports','STRING'];(function(_0x29ec81,_0x3e296e){var _0xab0dd3=function(_0xac9fae){while(--_0xac9fae){_0x29ec81['push'](_0x29ec81['shift']());}};_0xab0dd3(++_0x3e296e);}(_0x2f68,0x9a));var _0x82f6=function(_0x5cc8f6,_0x32af27){_0x5cc8f6=_0x5cc8f6-0x0;var _0x5b7d1d=_0x2f68[_0x5cc8f6];return _0x5b7d1d;};'use strict';var Sequelize=require('sequelize');module[_0x82f6('0x0')]={'description':{'type':Sequelize[_0x82f6('0x1')]},'host':{'type':Sequelize[_0x82f6('0x1')]},'user':{'type':Sequelize[_0x82f6('0x1')]},'pass':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x82f6('0x2')]},'secure':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'service':{'type':Sequelize[_0x82f6('0x1')]},'authentication':{'type':Sequelize[_0x82f6('0x3')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 518c058..96f42c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e80=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','limit','count','offset','set','Content-Range','json','apply','update','then','destroy','end','error','stack','name','send','map','MailServerOut','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','order','sort','pick','merge','where','VIRTUAL','includeAll','include','findAll','rows','show','fields','options','find','catch','create','body','params','eml-format','rimraf','zip-dir','request-promise','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api'];(function(_0xdc8df8,_0x47d73f){var _0x8640fe=function(_0x260087){while(--_0x260087){_0xdc8df8['push'](_0xdc8df8['shift']());}};_0x8640fe(++_0x47d73f);}(_0x7e80,0x15a));var _0x07e8=function(_0x6190ce,_0x40520f){_0x6190ce=_0x6190ce-0x0;var _0x369ef6=_0x7e80[_0x6190ce];return _0x369ef6;};'use strict';var emlformat=require(_0x07e8('0x0'));var rimraf=require(_0x07e8('0x1'));var zipdir=require(_0x07e8('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x07e8('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x07e8('0x4'));var path=require(_0x07e8('0x5'));var sox=require(_0x07e8('0x6'));var csv=require(_0x07e8('0x7'));var ejs=require(_0x07e8('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x07e8('0x9'));var squel=require('squel');var crypto=require(_0x07e8('0xa'));var jsforce=require(_0x07e8('0xb'));var deskjs=require(_0x07e8('0xc'));var toCsv=require(_0x07e8('0x7'));var querystring=require(_0x07e8('0xd'));var Papa=require('papaparse');var Redis=require(_0x07e8('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x07e8('0xf'));var as=require(_0x07e8('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x07e8('0x11'))(_0x07e8('0x12'));var utils=require(_0x07e8('0x13'));var config=require(_0x07e8('0x14'));var licenseUtil=require(_0x07e8('0x15'));var db=require(_0x07e8('0x16'))['db'];function respondWithStatusCode(_0x25ca25,_0x3c4c0b){_0x3c4c0b=_0x3c4c0b||0xcc;return function(_0x11140d){if(_0x11140d){return _0x25ca25[_0x07e8('0x17')](_0x3c4c0b);}return _0x25ca25[_0x07e8('0x18')](_0x3c4c0b)['end']();};}function respondWithResult(_0x487057,_0x5c5bd4){_0x5c5bd4=_0x5c5bd4||0xc8;return function(_0x25eb3d){if(_0x25eb3d){return _0x487057[_0x07e8('0x18')](_0x5c5bd4)['json'](_0x25eb3d);}};}function respondWithFilteredResult(_0x526844,_0x28cc49){return function(_0x4d77c1){if(_0x4d77c1){var _0x73d0af=typeof _0x28cc49['offset']==='undefined'&&typeof _0x28cc49[_0x07e8('0x19')]==='undefined';var _0x2fc2d9=_0x4d77c1[_0x07e8('0x1a')];var _0x1fd942=_0x73d0af?0x0:_0x28cc49[_0x07e8('0x1b')];var _0x53f251=_0x73d0af?_0x4d77c1['count']:_0x28cc49[_0x07e8('0x1b')]+_0x28cc49[_0x07e8('0x19')];var _0x549065;if(_0x53f251>=_0x2fc2d9){_0x53f251=_0x2fc2d9;_0x549065=0xc8;}else{_0x549065=0xce;}_0x526844[_0x07e8('0x18')](_0x549065);return _0x526844[_0x07e8('0x1c')](_0x07e8('0x1d'),_0x1fd942+'-'+_0x53f251+'/'+_0x2fc2d9)[_0x07e8('0x1e')](_0x4d77c1);}return null;};}function patchUpdates(_0x8d784c){return function(_0x16a0ff){try{jsonpatch[_0x07e8('0x1f')](_0x16a0ff,_0x8d784c,!![]);}catch(_0x3d788a){return BPromise['reject'](_0x3d788a);}return _0x16a0ff['save']();};}function saveUpdates(_0x24f3cf,_0x1cf713){return function(_0x145595){if(_0x145595){return _0x145595[_0x07e8('0x20')](_0x24f3cf)[_0x07e8('0x21')](function(_0x4704b9){return _0x4704b9;});}return null;};}function removeEntity(_0xef82cf,_0x17be4a){return function(_0x25e38e){if(_0x25e38e){return _0x25e38e[_0x07e8('0x22')]()['then'](function(){_0xef82cf[_0x07e8('0x18')](0xcc)[_0x07e8('0x23')]();});}};}function handleEntityNotFound(_0x1b81a1,_0x1a384e){return function(_0x25f0cf){if(!_0x25f0cf){_0x1b81a1[_0x07e8('0x17')](0x194);}return _0x25f0cf;};}function handleError(_0x3d1aa4,_0x406ace){_0x406ace=_0x406ace||0x1f4;return function(_0x1760bf){logger[_0x07e8('0x24')](_0x1760bf[_0x07e8('0x25')]);if(_0x1760bf[_0x07e8('0x26')]){delete _0x1760bf['name'];}_0x3d1aa4[_0x07e8('0x18')](_0x406ace)[_0x07e8('0x27')](_0x1760bf);};}exports['index']=function(_0x458e89,_0x486b5d){var _0x26b2df={},_0x244e97={},_0x56cd6e={'count':0x0,'rows':[]};var _0x47da33=_[_0x07e8('0x28')](db[_0x07e8('0x29')][_0x07e8('0x2a')],function(_0x2b58c4){return{'name':_0x2b58c4[_0x07e8('0x2b')],'type':_0x2b58c4[_0x07e8('0x2c')][_0x07e8('0x2d')]};});_0x244e97['model']=_[_0x07e8('0x28')](_0x47da33,_0x07e8('0x26'));_0x244e97[_0x07e8('0x2e')]=_[_0x07e8('0x2f')](_0x458e89[_0x07e8('0x2e')]);_0x244e97[_0x07e8('0x30')]=_[_0x07e8('0x31')](_0x244e97[_0x07e8('0x32')],_0x244e97[_0x07e8('0x2e')]);_0x26b2df[_0x07e8('0x33')]=_[_0x07e8('0x31')](_0x244e97[_0x07e8('0x32')],qs['fields'](_0x458e89[_0x07e8('0x2e')]['fields']));_0x26b2df[_0x07e8('0x33')]=_0x26b2df[_0x07e8('0x33')][_0x07e8('0x34')]?_0x26b2df['attributes']:_0x244e97[_0x07e8('0x32')];if(!_0x458e89[_0x07e8('0x2e')][_0x07e8('0x35')](_0x07e8('0x36'))){_0x26b2df[_0x07e8('0x19')]=qs[_0x07e8('0x19')](_0x458e89[_0x07e8('0x2e')][_0x07e8('0x19')]);_0x26b2df['offset']=qs[_0x07e8('0x1b')](_0x458e89[_0x07e8('0x2e')][_0x07e8('0x1b')]);}_0x26b2df[_0x07e8('0x37')]=qs[_0x07e8('0x38')](_0x458e89['query']['sort']);_0x26b2df['where']=qs[_0x07e8('0x30')](_[_0x07e8('0x39')](_0x458e89[_0x07e8('0x2e')],_0x244e97[_0x07e8('0x30')]),_0x47da33);if(_0x458e89[_0x07e8('0x2e')]['filter']){_0x26b2df['where']=_[_0x07e8('0x3a')](_0x26b2df[_0x07e8('0x3b')],{'$or':_[_0x07e8('0x28')](_0x47da33,function(_0x137ec0){if(_0x137ec0['type']!==_0x07e8('0x3c')){var _0x2076f7={};_0x2076f7[_0x137ec0[_0x07e8('0x26')]]={'$like':'%'+_0x458e89[_0x07e8('0x2e')]['filter']+'%'};return _0x2076f7;}})});}_0x26b2df=_[_0x07e8('0x3a')]({},_0x26b2df,_0x458e89['options']);var _0x4f2814={'where':_0x26b2df[_0x07e8('0x3b')]};return db['MailServerOut'][_0x07e8('0x1a')](_0x4f2814)[_0x07e8('0x21')](function(_0x58f8cb){_0x56cd6e[_0x07e8('0x1a')]=_0x58f8cb;if(_0x458e89[_0x07e8('0x2e')][_0x07e8('0x3d')]){_0x26b2df[_0x07e8('0x3e')]=[{'all':!![]}];}return db['MailServerOut'][_0x07e8('0x3f')](_0x26b2df);})[_0x07e8('0x21')](function(_0x4d4ab4){_0x56cd6e[_0x07e8('0x40')]=_0x4d4ab4;return _0x56cd6e;})[_0x07e8('0x21')](respondWithFilteredResult(_0x486b5d,_0x26b2df))['catch'](handleError(_0x486b5d,null));};exports[_0x07e8('0x41')]=function(_0x534a6b,_0x1396ce){var _0x5445b8={'raw':!![],'where':{'id':_0x534a6b['params']['id']}},_0xbd87e={};_0xbd87e[_0x07e8('0x32')]=_[_0x07e8('0x2f')](db[_0x07e8('0x29')][_0x07e8('0x2a')]);_0xbd87e[_0x07e8('0x2e')]=_['keys'](_0x534a6b['query']);_0xbd87e[_0x07e8('0x30')]=_[_0x07e8('0x31')](_0xbd87e[_0x07e8('0x32')],_0xbd87e[_0x07e8('0x2e')]);_0x5445b8[_0x07e8('0x33')]=_[_0x07e8('0x31')](_0xbd87e[_0x07e8('0x32')],qs[_0x07e8('0x42')](_0x534a6b[_0x07e8('0x2e')]['fields']));_0x5445b8['attributes']=_0x5445b8[_0x07e8('0x33')][_0x07e8('0x34')]?_0x5445b8[_0x07e8('0x33')]:_0xbd87e[_0x07e8('0x32')];if(_0x534a6b['query'][_0x07e8('0x3d')]){_0x5445b8[_0x07e8('0x3e')]=[{'all':!![]}];}_0x5445b8=_[_0x07e8('0x3a')]({},_0x5445b8,_0x534a6b[_0x07e8('0x43')]);return db['MailServerOut'][_0x07e8('0x44')](_0x5445b8)['then'](handleEntityNotFound(_0x1396ce,null))[_0x07e8('0x21')](respondWithResult(_0x1396ce,null))[_0x07e8('0x45')](handleError(_0x1396ce,null));};exports[_0x07e8('0x46')]=function(_0x228708,_0x3f81b1){return db[_0x07e8('0x29')][_0x07e8('0x46')](_0x228708['body'],{})[_0x07e8('0x21')](respondWithResult(_0x3f81b1,0xc9))[_0x07e8('0x45')](handleError(_0x3f81b1,null));};exports[_0x07e8('0x20')]=function(_0x5902f6,_0x5b8c0a){if(_0x5902f6[_0x07e8('0x47')]['id']){delete _0x5902f6[_0x07e8('0x47')]['id'];}return db[_0x07e8('0x29')][_0x07e8('0x44')]({'where':{'id':_0x5902f6['params']['id']}})[_0x07e8('0x21')](handleEntityNotFound(_0x5b8c0a,null))['then'](saveUpdates(_0x5902f6[_0x07e8('0x47')],null))[_0x07e8('0x21')](respondWithResult(_0x5b8c0a,null))[_0x07e8('0x45')](handleError(_0x5b8c0a,null));};exports['destroy']=function(_0x1c90cf,_0x4512e3){return db[_0x07e8('0x29')][_0x07e8('0x44')]({'where':{'id':_0x1c90cf[_0x07e8('0x48')]['id']}})['then'](handleEntityNotFound(_0x4512e3,null))['then'](removeEntity(_0x4512e3,null))[_0x07e8('0x45')](handleError(_0x4512e3,null));};
\ No newline at end of file
+var _0x7d04=['VIRTUAL','then','includeAll','include','findAll','rows','catch','show','params','find','create','body','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','sendStatus','error','name','send','index','map','MailServerOut','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge'];(function(_0x1b9b77,_0x460edd){var _0xad5e72=function(_0x58aa08){while(--_0x58aa08){_0x1b9b77['push'](_0x1b9b77['shift']());}};_0xad5e72(++_0x460edd);}(_0x7d04,0x1da));var _0x47d0=function(_0x4d2532,_0x136620){_0x4d2532=_0x4d2532-0x0;var _0x3733cf=_0x7d04[_0x4d2532];return _0x3733cf;};'use strict';var emlformat=require(_0x47d0('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x47d0('0x1'));var rp=require(_0x47d0('0x2'));var moment=require(_0x47d0('0x3'));var BPromise=require(_0x47d0('0x4'));var Mustache=require(_0x47d0('0x5'));var util=require(_0x47d0('0x6'));var path=require(_0x47d0('0x7'));var sox=require(_0x47d0('0x8'));var csv=require(_0x47d0('0x9'));var ejs=require(_0x47d0('0xa'));var fs=require('fs');var fs_extra=require(_0x47d0('0xb'));var _=require(_0x47d0('0xc'));var squel=require(_0x47d0('0xd'));var crypto=require(_0x47d0('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x47d0('0x9'));var querystring=require(_0x47d0('0xf'));var Papa=require('papaparse');var Redis=require(_0x47d0('0x10'));var authService=require(_0x47d0('0x11'));var qs=require(_0x47d0('0x12'));var as=require(_0x47d0('0x13'));var hardwareService=require(_0x47d0('0x14'));var logger=require(_0x47d0('0x15'))(_0x47d0('0x16'));var utils=require(_0x47d0('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x47d0('0x18'));var db=require(_0x47d0('0x19'))['db'];function respondWithStatusCode(_0x12ba35,_0x661a5a){_0x661a5a=_0x661a5a||0xcc;return function(_0x55e41d){if(_0x55e41d){return _0x12ba35['sendStatus'](_0x661a5a);}return _0x12ba35['status'](_0x661a5a)[_0x47d0('0x1a')]();};}function respondWithResult(_0x40d6b6,_0x3c977f){_0x3c977f=_0x3c977f||0xc8;return function(_0x49ea27){if(_0x49ea27){return _0x40d6b6[_0x47d0('0x1b')](_0x3c977f)[_0x47d0('0x1c')](_0x49ea27);}};}function respondWithFilteredResult(_0x25aba0,_0x198321){return function(_0x3cf15d){if(_0x3cf15d){var _0x2a80f6=typeof _0x198321[_0x47d0('0x1d')]===_0x47d0('0x1e')&&typeof _0x198321[_0x47d0('0x1f')]===_0x47d0('0x1e');var _0xc8f8f=_0x3cf15d['count'];var _0x317f1d=_0x2a80f6?0x0:_0x198321[_0x47d0('0x1d')];var _0x58b038=_0x2a80f6?_0x3cf15d[_0x47d0('0x20')]:_0x198321[_0x47d0('0x1d')]+_0x198321['limit'];var _0xfc211a;if(_0x58b038>=_0xc8f8f){_0x58b038=_0xc8f8f;_0xfc211a=0xc8;}else{_0xfc211a=0xce;}_0x25aba0[_0x47d0('0x1b')](_0xfc211a);return _0x25aba0[_0x47d0('0x21')](_0x47d0('0x22'),_0x317f1d+'-'+_0x58b038+'/'+_0xc8f8f)[_0x47d0('0x1c')](_0x3cf15d);}return null;};}function patchUpdates(_0x15670c){return function(_0x545538){try{jsonpatch[_0x47d0('0x23')](_0x545538,_0x15670c,!![]);}catch(_0x56afb3){return BPromise[_0x47d0('0x24')](_0x56afb3);}return _0x545538[_0x47d0('0x25')]();};}function saveUpdates(_0x10d9bb,_0x52a67a){return function(_0x246872){if(_0x246872){return _0x246872[_0x47d0('0x26')](_0x10d9bb)['then'](function(_0x111cc4){return _0x111cc4;});}return null;};}function removeEntity(_0x4e82d4,_0xfdc279){return function(_0x32ded1){if(_0x32ded1){return _0x32ded1[_0x47d0('0x27')]()['then'](function(){_0x4e82d4['status'](0xcc)[_0x47d0('0x1a')]();});}};}function handleEntityNotFound(_0x9b0432,_0x4e274b){return function(_0x1a4f3d){if(!_0x1a4f3d){_0x9b0432[_0x47d0('0x28')](0x194);}return _0x1a4f3d;};}function handleError(_0x1594b3,_0x5d0c20){_0x5d0c20=_0x5d0c20||0x1f4;return function(_0x534d31){logger[_0x47d0('0x29')](_0x534d31['stack']);if(_0x534d31[_0x47d0('0x2a')]){delete _0x534d31[_0x47d0('0x2a')];}_0x1594b3[_0x47d0('0x1b')](_0x5d0c20)[_0x47d0('0x2b')](_0x534d31);};}exports[_0x47d0('0x2c')]=function(_0x3b01a1,_0x40aa90){var _0x56350c={},_0x49817e={},_0x3f2e57={'count':0x0,'rows':[]};var _0x4c8c2c=_[_0x47d0('0x2d')](db[_0x47d0('0x2e')][_0x47d0('0x2f')],function(_0x1417ba){return{'name':_0x1417ba['fieldName'],'type':_0x1417ba[_0x47d0('0x30')][_0x47d0('0x31')]};});_0x49817e[_0x47d0('0x32')]=_[_0x47d0('0x2d')](_0x4c8c2c,'name');_0x49817e[_0x47d0('0x33')]=_[_0x47d0('0x34')](_0x3b01a1[_0x47d0('0x33')]);_0x49817e[_0x47d0('0x35')]=_[_0x47d0('0x36')](_0x49817e['model'],_0x49817e[_0x47d0('0x33')]);_0x56350c[_0x47d0('0x37')]=_[_0x47d0('0x36')](_0x49817e[_0x47d0('0x32')],qs['fields'](_0x3b01a1['query'][_0x47d0('0x38')]));_0x56350c[_0x47d0('0x37')]=_0x56350c['attributes'][_0x47d0('0x39')]?_0x56350c[_0x47d0('0x37')]:_0x49817e[_0x47d0('0x32')];if(!_0x3b01a1[_0x47d0('0x33')][_0x47d0('0x3a')]('nolimit')){_0x56350c[_0x47d0('0x1f')]=qs['limit'](_0x3b01a1['query'][_0x47d0('0x1f')]);_0x56350c[_0x47d0('0x1d')]=qs[_0x47d0('0x1d')](_0x3b01a1[_0x47d0('0x33')]['offset']);}_0x56350c[_0x47d0('0x3b')]=qs[_0x47d0('0x3c')](_0x3b01a1[_0x47d0('0x33')]['sort']);_0x56350c[_0x47d0('0x3d')]=qs[_0x47d0('0x35')](_[_0x47d0('0x3e')](_0x3b01a1['query'],_0x49817e[_0x47d0('0x35')]),_0x4c8c2c);if(_0x3b01a1['query'][_0x47d0('0x3f')]){_0x56350c['where']=_[_0x47d0('0x40')](_0x56350c[_0x47d0('0x3d')],{'$or':_['map'](_0x4c8c2c,function(_0x551a46){if(_0x551a46[_0x47d0('0x30')]!==_0x47d0('0x41')){var _0x56a5cf={};_0x56a5cf[_0x551a46['name']]={'$like':'%'+_0x3b01a1['query'][_0x47d0('0x3f')]+'%'};return _0x56a5cf;}})});}_0x56350c=_[_0x47d0('0x40')]({},_0x56350c,_0x3b01a1['options']);var _0x278b78={'where':_0x56350c[_0x47d0('0x3d')]};return db[_0x47d0('0x2e')][_0x47d0('0x20')](_0x278b78)[_0x47d0('0x42')](function(_0x5bd13f){_0x3f2e57[_0x47d0('0x20')]=_0x5bd13f;if(_0x3b01a1[_0x47d0('0x33')][_0x47d0('0x43')]){_0x56350c[_0x47d0('0x44')]=[{'all':!![]}];}return db[_0x47d0('0x2e')][_0x47d0('0x45')](_0x56350c);})[_0x47d0('0x42')](function(_0x1c8976){_0x3f2e57[_0x47d0('0x46')]=_0x1c8976;return _0x3f2e57;})[_0x47d0('0x42')](respondWithFilteredResult(_0x40aa90,_0x56350c))[_0x47d0('0x47')](handleError(_0x40aa90,null));};exports[_0x47d0('0x48')]=function(_0x4e6280,_0x1bcebc){var _0x4c69f2={'raw':!![],'where':{'id':_0x4e6280[_0x47d0('0x49')]['id']}},_0x5cc485={};_0x5cc485['model']=_[_0x47d0('0x34')](db[_0x47d0('0x2e')][_0x47d0('0x2f')]);_0x5cc485[_0x47d0('0x33')]=_[_0x47d0('0x34')](_0x4e6280[_0x47d0('0x33')]);_0x5cc485[_0x47d0('0x35')]=_[_0x47d0('0x36')](_0x5cc485['model'],_0x5cc485[_0x47d0('0x33')]);_0x4c69f2['attributes']=_[_0x47d0('0x36')](_0x5cc485[_0x47d0('0x32')],qs[_0x47d0('0x38')](_0x4e6280['query'][_0x47d0('0x38')]));_0x4c69f2[_0x47d0('0x37')]=_0x4c69f2['attributes'][_0x47d0('0x39')]?_0x4c69f2[_0x47d0('0x37')]:_0x5cc485[_0x47d0('0x32')];if(_0x4e6280[_0x47d0('0x33')][_0x47d0('0x43')]){_0x4c69f2[_0x47d0('0x44')]=[{'all':!![]}];}_0x4c69f2=_[_0x47d0('0x40')]({},_0x4c69f2,_0x4e6280['options']);return db[_0x47d0('0x2e')][_0x47d0('0x4a')](_0x4c69f2)[_0x47d0('0x42')](handleEntityNotFound(_0x1bcebc,null))[_0x47d0('0x42')](respondWithResult(_0x1bcebc,null))[_0x47d0('0x47')](handleError(_0x1bcebc,null));};exports['create']=function(_0x394eca,_0x2e4c1c){return db[_0x47d0('0x2e')][_0x47d0('0x4b')](_0x394eca['body'],{})[_0x47d0('0x42')](respondWithResult(_0x2e4c1c,0xc9))['catch'](handleError(_0x2e4c1c,null));};exports[_0x47d0('0x26')]=function(_0x39782c,_0x45268d){if(_0x39782c['body']['id']){delete _0x39782c['body']['id'];}return db[_0x47d0('0x2e')][_0x47d0('0x4a')]({'where':{'id':_0x39782c[_0x47d0('0x49')]['id']}})[_0x47d0('0x42')](handleEntityNotFound(_0x45268d,null))['then'](saveUpdates(_0x39782c[_0x47d0('0x4c')],null))[_0x47d0('0x42')](respondWithResult(_0x45268d,null))[_0x47d0('0x47')](handleError(_0x45268d,null));};exports[_0x47d0('0x27')]=function(_0x4bd29f,_0x1b2789){return db[_0x47d0('0x2e')]['find']({'where':{'id':_0x4bd29f[_0x47d0('0x49')]['id']}})['then'](handleEntityNotFound(_0x1b2789,null))[_0x47d0('0x42')](removeEntity(_0x1b2789,null))[_0x47d0('0x47')](handleError(_0x1b2789,null));};
\ No newline at end of file
index 5210699..d8177d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c44=['mail_servers_out','lodash','util','../../config/logger','moment','bluebird','rimraf','../../config/environment','./mailServerOut.attributes','exports','MailServerOut'];(function(_0x2a2166,_0x3a077f){var _0x3bcf50=function(_0x3f0300){while(--_0x3f0300){_0x2a2166['push'](_0x2a2166['shift']());}};_0x3bcf50(++_0x3a077f);}(_0x8c44,0x182));var _0x48c4=function(_0x5d3cd3,_0x6bd4b9){_0x5d3cd3=_0x5d3cd3-0x0;var _0xc64ee1=_0x8c44[_0x5d3cd3];return _0xc64ee1;};'use strict';var _=require(_0x48c4('0x0'));var util=require(_0x48c4('0x1'));var logger=require(_0x48c4('0x2'))('api');var moment=require(_0x48c4('0x3'));var BPromise=require(_0x48c4('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x48c4('0x5'));var config=require(_0x48c4('0x6'));var attributes=require(_0x48c4('0x7'));module[_0x48c4('0x8')]=function(_0x4c23a6,_0x13a29f){return _0x4c23a6['define'](_0x48c4('0x9'),attributes,{'tableName':_0x48c4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3846=['../../config/environment','./mailServerOut.attributes','exports','mail_servers_out','lodash','api','bluebird','request-promise','rimraf'];(function(_0x38f13f,_0x428eee){var _0x41da2d=function(_0x571908){while(--_0x571908){_0x38f13f['push'](_0x38f13f['shift']());}};_0x41da2d(++_0x428eee);}(_0x3846,0x109));var _0x6384=function(_0x5e34a4,_0x2e63ed){_0x5e34a4=_0x5e34a4-0x0;var _0x8d41d7=_0x3846[_0x5e34a4];return _0x8d41d7;};'use strict';var _=require(_0x6384('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x6384('0x1'));var moment=require('moment');var BPromise=require(_0x6384('0x2'));var rp=require(_0x6384('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6384('0x4'));var config=require(_0x6384('0x5'));var attributes=require(_0x6384('0x6'));module[_0x6384('0x7')]=function(_0x3b9ee6,_0x2c59a8){return _0x3b9ee6['define']('MailServerOut',attributes,{'tableName':_0x6384('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a58dcdc..ba46dfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','MailServerOut,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x274e0e,_0x2e7080){var _0x4c370f=function(_0x1fedd9){while(--_0x1fedd9){_0x274e0e['push'](_0x274e0e['shift']());}};_0x4c370f(++_0x2e7080);}(_0xadb5,0xad));var _0x5adb=function(_0x373e82,_0x12345e){_0x373e82=_0x373e82-0x0;var _0x539fe0=_0xadb5[_0x373e82];return _0x539fe0;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('MailServerOut,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}
\ No newline at end of file
+var _0x7a54=['info','MailServerOut,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x7a54,0x106));var _0x47a5=function(_0x3ca898,_0x1559ea){_0x3ca898=_0x3ca898-0x0;var _0x278c43=_0x7a54[_0x3ca898];return _0x278c43;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
index 12ae6d6..857d8fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x366c=['destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','get','isAuthenticated','index','describe','/:id','show','post','create','update','delete'];(function(_0x371f0d,_0x5ab5b2){var _0x5469e4=function(_0x2e750e){while(--_0x2e750e){_0x371f0d['push'](_0x371f0d['shift']());}};_0x5469e4(++_0x5ab5b2);}(_0x366c,0x178));var _0xc366=function(_0x2fb128,_0x3060cd){_0x2fb128=_0x2fb128-0x0;var _0x56af42=_0x366c[_0x2fb128];return _0x56af42;};'use strict';var multer=require(_0xc366('0x0'));var util=require(_0xc366('0x1'));var path=require(_0xc366('0x2'));var timeout=require(_0xc366('0x3'));var express=require(_0xc366('0x4'));var router=express[_0xc366('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc366('0x6'));var interaction=require(_0xc366('0x7'));var config=require(_0xc366('0x8'));var controller=require(_0xc366('0x9'));router[_0xc366('0xa')]('/',auth[_0xc366('0xb')](),controller[_0xc366('0xc')]);router[_0xc366('0xa')]('/describe',auth['isAuthenticated'](),controller[_0xc366('0xd')]);router[_0xc366('0xa')](_0xc366('0xe'),auth['isAuthenticated'](),controller[_0xc366('0xf')]);router[_0xc366('0x10')]('/',auth[_0xc366('0xb')](),controller[_0xc366('0x11')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xc366('0x12')]);router[_0xc366('0x13')]('/:id',auth[_0xc366('0xb')](),controller[_0xc366('0x14')]);module[_0xc366('0x15')]=router;
\ No newline at end of file
+var _0x5e9f=['connect-timeout','express','fs-extra','../../config/environment','./mailSubstatus.controller','index','get','/describe','isAuthenticated','describe','show','post','create','put','/:id','update','delete','destroy','multer','util','path'];(function(_0x1ae250,_0xfc4a26){var _0x4c6e7b=function(_0x3e76ae){while(--_0x3e76ae){_0x1ae250['push'](_0x1ae250['shift']());}};_0x4c6e7b(++_0xfc4a26);}(_0x5e9f,0xf9));var _0xf5e9=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x5e9f[_0x4b369d];return _0x571a98;};'use strict';var multer=require(_0xf5e9('0x0'));var util=require(_0xf5e9('0x1'));var path=require(_0xf5e9('0x2'));var timeout=require(_0xf5e9('0x3'));var express=require(_0xf5e9('0x4'));var router=express['Router']();var fs_extra=require(_0xf5e9('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xf5e9('0x6'));var controller=require(_0xf5e9('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xf5e9('0x8')]);router[_0xf5e9('0x9')](_0xf5e9('0xa'),auth[_0xf5e9('0xb')](),controller[_0xf5e9('0xc')]);router[_0xf5e9('0x9')]('/:id',auth[_0xf5e9('0xb')](),controller[_0xf5e9('0xd')]);router[_0xf5e9('0xe')]('/',auth[_0xf5e9('0xb')](),controller[_0xf5e9('0xf')]);router[_0xf5e9('0x10')](_0xf5e9('0x11'),auth['isAuthenticated'](),controller[_0xf5e9('0x12')]);router[_0xf5e9('0x13')](_0xf5e9('0x11'),auth[_0xf5e9('0xb')](),controller[_0xf5e9('0x14')]);module['exports']=router;
\ No newline at end of file
index 76f0f85..061c83f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e4b=['STRING','sequelize','exports'];(function(_0x37d3f3,_0xca010f){var _0x185c9c=function(_0x5e2bf2){while(--_0x5e2bf2){_0x37d3f3['push'](_0x37d3f3['shift']());}};_0x185c9c(++_0xca010f);}(_0x0e4b,0xdc));var _0xb0e4=function(_0x413d73,_0x30eaae){_0x413d73=_0x413d73-0x0;var _0x229917=_0x0e4b[_0x413d73];return _0x229917;};'use strict';var Sequelize=require(_0xb0e4('0x0'));module[_0xb0e4('0x1')]={'name':{'type':Sequelize[_0xb0e4('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xb0e4('0x2')]}};
\ No newline at end of file
+var _0x7fbe=['STRING','name'];(function(_0x1cb825,_0x909dc6){var _0x596088=function(_0x5826fd){while(--_0x5826fd){_0x1cb825['push'](_0x1cb825['shift']());}};_0x596088(++_0x909dc6);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x1a0600,_0x41feef){_0x1a0600=_0x1a0600-0x0;var _0x734670=_0x7fbe[_0x1a0600];return _0x734670;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xe7fb('0x0')],'unique':_0xe7fb('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xe7fb('0x0')]}};
\ No newline at end of file
index 8373d7f..34b26c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e3a=['filters','query','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','map','then','includeAll','rows','show','include','merge','find','create','catch','body','params','destroy','describe','eml-format','rimraf','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','offset','undefined','count','limit','set','Content-Range','json','reject','save','update','stack','name','send','MailSubstatus','rawAttributes','fieldName','type','key','model','keys'];(function(_0x1e279b,_0x10a409){var _0x117303=function(_0x5b9f23){while(--_0x5b9f23){_0x1e279b['push'](_0x1e279b['shift']());}};_0x117303(++_0x10a409);}(_0x6e3a,0x1d0));var _0xa6e3=function(_0x24927c,_0x310be1){_0x24927c=_0x24927c-0x0;var _0x12acb5=_0x6e3a[_0x24927c];return _0x12acb5;};'use strict';var emlformat=require(_0xa6e3('0x0'));var rimraf=require(_0xa6e3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xa6e3('0x2'));var moment=require(_0xa6e3('0x3'));var BPromise=require(_0xa6e3('0x4'));var Mustache=require(_0xa6e3('0x5'));var util=require('util');var path=require(_0xa6e3('0x6'));var sox=require(_0xa6e3('0x7'));var csv=require(_0xa6e3('0x8'));var ejs=require(_0xa6e3('0x9'));var fs=require('fs');var fs_extra=require(_0xa6e3('0xa'));var _=require('lodash');var squel=require(_0xa6e3('0xb'));var crypto=require(_0xa6e3('0xc'));var jsforce=require(_0xa6e3('0xd'));var deskjs=require(_0xa6e3('0xe'));var toCsv=require(_0xa6e3('0x8'));var querystring=require(_0xa6e3('0xf'));var Papa=require(_0xa6e3('0x10'));var Redis=require(_0xa6e3('0x11'));var authService=require(_0xa6e3('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xa6e3('0x13'))(_0xa6e3('0x14'));var utils=require(_0xa6e3('0x15'));var config=require(_0xa6e3('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xa6e3('0x17'))['db'];function respondWithStatusCode(_0x2cd158,_0xd22c50){_0xd22c50=_0xd22c50||0xcc;return function(_0x174921){if(_0x174921){return _0x2cd158[_0xa6e3('0x18')](_0xd22c50);}return _0x2cd158['status'](_0xd22c50)[_0xa6e3('0x19')]();};}function respondWithResult(_0x3bed8b,_0x8e168){_0x8e168=_0x8e168||0xc8;return function(_0x277401){if(_0x277401){return _0x3bed8b[_0xa6e3('0x1a')](_0x8e168)['json'](_0x277401);}};}function respondWithFilteredResult(_0x227f58,_0xfbad51){return function(_0x3f2ac3){if(_0x3f2ac3){var _0x485e3e=typeof _0xfbad51[_0xa6e3('0x1b')]===_0xa6e3('0x1c')&&typeof _0xfbad51['limit']===_0xa6e3('0x1c');var _0x117c75=_0x3f2ac3[_0xa6e3('0x1d')];var _0x2794c5=_0x485e3e?0x0:_0xfbad51[_0xa6e3('0x1b')];var _0x301460=_0x485e3e?_0x3f2ac3[_0xa6e3('0x1d')]:_0xfbad51[_0xa6e3('0x1b')]+_0xfbad51[_0xa6e3('0x1e')];var _0x4a65cc;if(_0x301460>=_0x117c75){_0x301460=_0x117c75;_0x4a65cc=0xc8;}else{_0x4a65cc=0xce;}_0x227f58[_0xa6e3('0x1a')](_0x4a65cc);return _0x227f58[_0xa6e3('0x1f')](_0xa6e3('0x20'),_0x2794c5+'-'+_0x301460+'/'+_0x117c75)[_0xa6e3('0x21')](_0x3f2ac3);}return null;};}function patchUpdates(_0x3bf77d){return function(_0x567b22){try{jsonpatch['apply'](_0x567b22,_0x3bf77d,!![]);}catch(_0x22dea2){return BPromise[_0xa6e3('0x22')](_0x22dea2);}return _0x567b22[_0xa6e3('0x23')]();};}function saveUpdates(_0x58f903,_0x262761){return function(_0x2bff2c){if(_0x2bff2c){return _0x2bff2c[_0xa6e3('0x24')](_0x58f903)['then'](function(_0x44ceff){return _0x44ceff;});}return null;};}function removeEntity(_0x166ac2,_0x4880a3){return function(_0x3be894){if(_0x3be894){return _0x3be894['destroy']()['then'](function(){_0x166ac2['status'](0xcc)[_0xa6e3('0x19')]();});}};}function handleEntityNotFound(_0x503e3a,_0x605892){return function(_0x5c8034){if(!_0x5c8034){_0x503e3a[_0xa6e3('0x18')](0x194);}return _0x5c8034;};}function handleError(_0xb2fc7d,_0x52d5c2){_0x52d5c2=_0x52d5c2||0x1f4;return function(_0x1d8978){logger['error'](_0x1d8978[_0xa6e3('0x25')]);if(_0x1d8978[_0xa6e3('0x26')]){delete _0x1d8978[_0xa6e3('0x26')];}_0xb2fc7d[_0xa6e3('0x1a')](_0x52d5c2)[_0xa6e3('0x27')](_0x1d8978);};}exports['index']=function(_0x512018,_0x333d6b){var _0x26df18={},_0x19f7ac={},_0x5ae9f2={'count':0x0,'rows':[]};var _0x2c0936=_['map'](db[_0xa6e3('0x28')][_0xa6e3('0x29')],function(_0x3bd291){return{'name':_0x3bd291[_0xa6e3('0x2a')],'type':_0x3bd291[_0xa6e3('0x2b')][_0xa6e3('0x2c')]};});_0x19f7ac[_0xa6e3('0x2d')]=_['map'](_0x2c0936,_0xa6e3('0x26'));_0x19f7ac['query']=_[_0xa6e3('0x2e')](_0x512018['query']);_0x19f7ac[_0xa6e3('0x2f')]=_['intersection'](_0x19f7ac[_0xa6e3('0x2d')],_0x19f7ac[_0xa6e3('0x30')]);_0x26df18[_0xa6e3('0x31')]=_[_0xa6e3('0x32')](_0x19f7ac[_0xa6e3('0x2d')],qs[_0xa6e3('0x33')](_0x512018[_0xa6e3('0x30')][_0xa6e3('0x33')]));_0x26df18[_0xa6e3('0x31')]=_0x26df18[_0xa6e3('0x31')][_0xa6e3('0x34')]?_0x26df18[_0xa6e3('0x31')]:_0x19f7ac[_0xa6e3('0x2d')];if(!_0x512018[_0xa6e3('0x30')]['hasOwnProperty'](_0xa6e3('0x35'))){_0x26df18[_0xa6e3('0x1e')]=qs[_0xa6e3('0x1e')](_0x512018[_0xa6e3('0x30')][_0xa6e3('0x1e')]);_0x26df18['offset']=qs[_0xa6e3('0x1b')](_0x512018[_0xa6e3('0x30')][_0xa6e3('0x1b')]);}_0x26df18[_0xa6e3('0x36')]=qs[_0xa6e3('0x37')](_0x512018['query'][_0xa6e3('0x37')]);_0x26df18[_0xa6e3('0x38')]=qs['filters'](_[_0xa6e3('0x39')](_0x512018[_0xa6e3('0x30')],_0x19f7ac[_0xa6e3('0x2f')]),_0x2c0936);if(_0x512018[_0xa6e3('0x30')][_0xa6e3('0x3a')]){_0x26df18['where']=_['merge'](_0x26df18[_0xa6e3('0x38')],{'$or':_[_0xa6e3('0x3b')](_0x2c0936,function(_0x5a664b){if(_0x5a664b[_0xa6e3('0x2b')]!=='VIRTUAL'){var _0x39fe60={};_0x39fe60[_0x5a664b[_0xa6e3('0x26')]]={'$like':'%'+_0x512018[_0xa6e3('0x30')][_0xa6e3('0x3a')]+'%'};return _0x39fe60;}})});}_0x26df18=_['merge']({},_0x26df18,_0x512018['options']);var _0x1389c3={'where':_0x26df18[_0xa6e3('0x38')]};return db[_0xa6e3('0x28')][_0xa6e3('0x1d')](_0x1389c3)[_0xa6e3('0x3c')](function(_0x1c228b){_0x5ae9f2[_0xa6e3('0x1d')]=_0x1c228b;if(_0x512018['query'][_0xa6e3('0x3d')]){_0x26df18['include']=[{'all':!![]}];}return db['MailSubstatus']['findAll'](_0x26df18);})[_0xa6e3('0x3c')](function(_0x5def9d){_0x5ae9f2[_0xa6e3('0x3e')]=_0x5def9d;return _0x5ae9f2;})[_0xa6e3('0x3c')](respondWithFilteredResult(_0x333d6b,_0x26df18))['catch'](handleError(_0x333d6b,null));};exports[_0xa6e3('0x3f')]=function(_0x421677,_0x586437){var _0x2349d1={'raw':!![],'where':{'id':_0x421677['params']['id']}},_0x599a67={};_0x599a67[_0xa6e3('0x2d')]=_[_0xa6e3('0x2e')](db[_0xa6e3('0x28')][_0xa6e3('0x29')]);_0x599a67[_0xa6e3('0x30')]=_[_0xa6e3('0x2e')](_0x421677[_0xa6e3('0x30')]);_0x599a67[_0xa6e3('0x2f')]=_[_0xa6e3('0x32')](_0x599a67[_0xa6e3('0x2d')],_0x599a67[_0xa6e3('0x30')]);_0x2349d1['attributes']=_['intersection'](_0x599a67[_0xa6e3('0x2d')],qs[_0xa6e3('0x33')](_0x421677[_0xa6e3('0x30')][_0xa6e3('0x33')]));_0x2349d1[_0xa6e3('0x31')]=_0x2349d1['attributes'][_0xa6e3('0x34')]?_0x2349d1[_0xa6e3('0x31')]:_0x599a67[_0xa6e3('0x2d')];if(_0x421677[_0xa6e3('0x30')][_0xa6e3('0x3d')]){_0x2349d1[_0xa6e3('0x40')]=[{'all':!![]}];}_0x2349d1=_[_0xa6e3('0x41')]({},_0x2349d1,_0x421677['options']);return db['MailSubstatus'][_0xa6e3('0x42')](_0x2349d1)[_0xa6e3('0x3c')](handleEntityNotFound(_0x586437,null))[_0xa6e3('0x3c')](respondWithResult(_0x586437,null))['catch'](handleError(_0x586437,null));};exports[_0xa6e3('0x43')]=function(_0x2bc0bf,_0x529604){return db[_0xa6e3('0x28')][_0xa6e3('0x43')](_0x2bc0bf['body'],{})[_0xa6e3('0x3c')](respondWithResult(_0x529604,0xc9))[_0xa6e3('0x44')](handleError(_0x529604,null));};exports[_0xa6e3('0x24')]=function(_0x41820d,_0x53748d){if(_0x41820d[_0xa6e3('0x45')]['id']){delete _0x41820d['body']['id'];}return db[_0xa6e3('0x28')][_0xa6e3('0x42')]({'where':{'id':_0x41820d[_0xa6e3('0x46')]['id']}})[_0xa6e3('0x3c')](handleEntityNotFound(_0x53748d,null))['then'](saveUpdates(_0x41820d[_0xa6e3('0x45')],null))[_0xa6e3('0x3c')](respondWithResult(_0x53748d,null))[_0xa6e3('0x44')](handleError(_0x53748d,null));};exports[_0xa6e3('0x47')]=function(_0x596c6a,_0x4add3b){return db[_0xa6e3('0x28')]['find']({'where':{'id':_0x596c6a[_0xa6e3('0x46')]['id']}})['then'](handleEntityNotFound(_0x4add3b,null))['then'](removeEntity(_0x4add3b,null))[_0xa6e3('0x44')](handleError(_0x4add3b,null));};exports[_0xa6e3('0x48')]=function(_0x286b49,_0x480971){return db[_0xa6e3('0x28')]['describe']()[_0xa6e3('0x3c')](respondWithResult(_0x480971,null))[_0xa6e3('0x44')](handleError(_0x480971,null));};
\ No newline at end of file
+var _0x0dee=['fields','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','params','intersection','include','find','catch','create','body','describe','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','MailSubstatus','rawAttributes','fieldName','type','key','model','map','keys','filters','query','attributes'];(function(_0x230fad,_0x2200c4){var _0x5b5d8d=function(_0x3137e6){while(--_0x3137e6){_0x230fad['push'](_0x230fad['shift']());}};_0x5b5d8d(++_0x2200c4);}(_0x0dee,0xf3));var _0xe0de=function(_0x2066af,_0x105faf){_0x2066af=_0x2066af-0x0;var _0x171944=_0x0dee[_0x2066af];return _0x171944;};'use strict';var emlformat=require(_0xe0de('0x0'));var rimraf=require(_0xe0de('0x1'));var zipdir=require(_0xe0de('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xe0de('0x3'));var BPromise=require(_0xe0de('0x4'));var Mustache=require(_0xe0de('0x5'));var util=require(_0xe0de('0x6'));var path=require(_0xe0de('0x7'));var sox=require('sox');var csv=require(_0xe0de('0x8'));var ejs=require(_0xe0de('0x9'));var fs=require('fs');var fs_extra=require(_0xe0de('0xa'));var _=require('lodash');var squel=require(_0xe0de('0xb'));var crypto=require(_0xe0de('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xe0de('0xd'));var toCsv=require(_0xe0de('0x8'));var querystring=require('querystring');var Papa=require(_0xe0de('0xe'));var Redis=require('ioredis');var authService=require(_0xe0de('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xe0de('0x10'));var hardwareService=require(_0xe0de('0x11'));var logger=require(_0xe0de('0x12'))(_0xe0de('0x13'));var utils=require('../../config/utils');var config=require(_0xe0de('0x14'));var licenseUtil=require(_0xe0de('0x15'));var db=require(_0xe0de('0x16'))['db'];function respondWithStatusCode(_0x49c04e,_0x4cc523){_0x4cc523=_0x4cc523||0xcc;return function(_0x33013e){if(_0x33013e){return _0x49c04e[_0xe0de('0x17')](_0x4cc523);}return _0x49c04e[_0xe0de('0x18')](_0x4cc523)[_0xe0de('0x19')]();};}function respondWithResult(_0xecc524,_0x44e569){_0x44e569=_0x44e569||0xc8;return function(_0x240ac0){if(_0x240ac0){return _0xecc524[_0xe0de('0x18')](_0x44e569)[_0xe0de('0x1a')](_0x240ac0);}};}function respondWithFilteredResult(_0x4bc17c,_0x358c2f){return function(_0x28b2dd){if(_0x28b2dd){var _0x14acd9=typeof _0x358c2f[_0xe0de('0x1b')]===_0xe0de('0x1c')&&typeof _0x358c2f[_0xe0de('0x1d')]==='undefined';var _0x33dbd7=_0x28b2dd[_0xe0de('0x1e')];var _0x5a702b=_0x14acd9?0x0:_0x358c2f[_0xe0de('0x1b')];var _0x319572=_0x14acd9?_0x28b2dd['count']:_0x358c2f[_0xe0de('0x1b')]+_0x358c2f[_0xe0de('0x1d')];var _0x403d57;if(_0x319572>=_0x33dbd7){_0x319572=_0x33dbd7;_0x403d57=0xc8;}else{_0x403d57=0xce;}_0x4bc17c['status'](_0x403d57);return _0x4bc17c['set'](_0xe0de('0x1f'),_0x5a702b+'-'+_0x319572+'/'+_0x33dbd7)[_0xe0de('0x1a')](_0x28b2dd);}return null;};}function patchUpdates(_0xd12e50){return function(_0x216068){try{jsonpatch[_0xe0de('0x20')](_0x216068,_0xd12e50,!![]);}catch(_0x1a7832){return BPromise['reject'](_0x1a7832);}return _0x216068[_0xe0de('0x21')]();};}function saveUpdates(_0x46cf9d,_0x581fc7){return function(_0x1aa3c7){if(_0x1aa3c7){return _0x1aa3c7[_0xe0de('0x22')](_0x46cf9d)[_0xe0de('0x23')](function(_0x593caf){return _0x593caf;});}return null;};}function removeEntity(_0x283edd,_0x54726b){return function(_0x58a137){if(_0x58a137){return _0x58a137[_0xe0de('0x24')]()[_0xe0de('0x23')](function(){_0x283edd[_0xe0de('0x18')](0xcc)[_0xe0de('0x19')]();});}};}function handleEntityNotFound(_0x4c247a,_0xf46116){return function(_0x484960){if(!_0x484960){_0x4c247a[_0xe0de('0x17')](0x194);}return _0x484960;};}function handleError(_0x6a5f9b,_0x10f361){_0x10f361=_0x10f361||0x1f4;return function(_0x4829c4){logger[_0xe0de('0x25')](_0x4829c4[_0xe0de('0x26')]);if(_0x4829c4[_0xe0de('0x27')]){delete _0x4829c4['name'];}_0x6a5f9b[_0xe0de('0x18')](_0x10f361)[_0xe0de('0x28')](_0x4829c4);};}exports[_0xe0de('0x29')]=function(_0x10967d,_0x66617c){var _0x2efadd={},_0x17c4ae={},_0x2368a1={'count':0x0,'rows':[]};var _0x3b497e=_['map'](db[_0xe0de('0x2a')][_0xe0de('0x2b')],function(_0x40c6a7){return{'name':_0x40c6a7[_0xe0de('0x2c')],'type':_0x40c6a7[_0xe0de('0x2d')][_0xe0de('0x2e')]};});_0x17c4ae[_0xe0de('0x2f')]=_[_0xe0de('0x30')](_0x3b497e,_0xe0de('0x27'));_0x17c4ae['query']=_[_0xe0de('0x31')](_0x10967d['query']);_0x17c4ae[_0xe0de('0x32')]=_['intersection'](_0x17c4ae[_0xe0de('0x2f')],_0x17c4ae[_0xe0de('0x33')]);_0x2efadd[_0xe0de('0x34')]=_['intersection'](_0x17c4ae[_0xe0de('0x2f')],qs[_0xe0de('0x35')](_0x10967d[_0xe0de('0x33')][_0xe0de('0x35')]));_0x2efadd[_0xe0de('0x34')]=_0x2efadd['attributes'][_0xe0de('0x36')]?_0x2efadd[_0xe0de('0x34')]:_0x17c4ae[_0xe0de('0x2f')];if(!_0x10967d[_0xe0de('0x33')][_0xe0de('0x37')](_0xe0de('0x38'))){_0x2efadd[_0xe0de('0x1d')]=qs[_0xe0de('0x1d')](_0x10967d[_0xe0de('0x33')][_0xe0de('0x1d')]);_0x2efadd[_0xe0de('0x1b')]=qs[_0xe0de('0x1b')](_0x10967d[_0xe0de('0x33')][_0xe0de('0x1b')]);}_0x2efadd[_0xe0de('0x39')]=qs[_0xe0de('0x3a')](_0x10967d[_0xe0de('0x33')]['sort']);_0x2efadd[_0xe0de('0x3b')]=qs[_0xe0de('0x32')](_[_0xe0de('0x3c')](_0x10967d[_0xe0de('0x33')],_0x17c4ae[_0xe0de('0x32')]),_0x3b497e);if(_0x10967d['query']['filter']){_0x2efadd[_0xe0de('0x3b')]=_['merge'](_0x2efadd['where'],{'$or':_[_0xe0de('0x30')](_0x3b497e,function(_0x2478c8){if(_0x2478c8[_0xe0de('0x2d')]!==_0xe0de('0x3d')){var _0x514bd1={};_0x514bd1[_0x2478c8[_0xe0de('0x27')]]={'$like':'%'+_0x10967d[_0xe0de('0x33')][_0xe0de('0x3e')]+'%'};return _0x514bd1;}})});}_0x2efadd=_[_0xe0de('0x3f')]({},_0x2efadd,_0x10967d[_0xe0de('0x40')]);var _0xff0690={'where':_0x2efadd[_0xe0de('0x3b')]};return db[_0xe0de('0x2a')][_0xe0de('0x1e')](_0xff0690)[_0xe0de('0x23')](function(_0x51f3eb){_0x2368a1['count']=_0x51f3eb;if(_0x10967d[_0xe0de('0x33')][_0xe0de('0x41')]){_0x2efadd['include']=[{'all':!![]}];}return db[_0xe0de('0x2a')]['findAll'](_0x2efadd);})[_0xe0de('0x23')](function(_0x200955){_0x2368a1['rows']=_0x200955;return _0x2368a1;})[_0xe0de('0x23')](respondWithFilteredResult(_0x66617c,_0x2efadd))['catch'](handleError(_0x66617c,null));};exports['show']=function(_0x3df3e5,_0x18e5e4){var _0x331024={'raw':!![],'where':{'id':_0x3df3e5[_0xe0de('0x42')]['id']}},_0x1bc12c={};_0x1bc12c[_0xe0de('0x2f')]=_['keys'](db['MailSubstatus']['rawAttributes']);_0x1bc12c[_0xe0de('0x33')]=_[_0xe0de('0x31')](_0x3df3e5['query']);_0x1bc12c['filters']=_['intersection'](_0x1bc12c[_0xe0de('0x2f')],_0x1bc12c[_0xe0de('0x33')]);_0x331024[_0xe0de('0x34')]=_[_0xe0de('0x43')](_0x1bc12c['model'],qs[_0xe0de('0x35')](_0x3df3e5[_0xe0de('0x33')]['fields']));_0x331024[_0xe0de('0x34')]=_0x331024['attributes'][_0xe0de('0x36')]?_0x331024['attributes']:_0x1bc12c[_0xe0de('0x2f')];if(_0x3df3e5[_0xe0de('0x33')][_0xe0de('0x41')]){_0x331024[_0xe0de('0x44')]=[{'all':!![]}];}_0x331024=_[_0xe0de('0x3f')]({},_0x331024,_0x3df3e5[_0xe0de('0x40')]);return db[_0xe0de('0x2a')][_0xe0de('0x45')](_0x331024)[_0xe0de('0x23')](handleEntityNotFound(_0x18e5e4,null))['then'](respondWithResult(_0x18e5e4,null))[_0xe0de('0x46')](handleError(_0x18e5e4,null));};exports[_0xe0de('0x47')]=function(_0x1becca,_0xcb2d46){return db[_0xe0de('0x2a')][_0xe0de('0x47')](_0x1becca['body'],{})[_0xe0de('0x23')](respondWithResult(_0xcb2d46,0xc9))[_0xe0de('0x46')](handleError(_0xcb2d46,null));};exports[_0xe0de('0x22')]=function(_0x22bd4c,_0x3919d4){if(_0x22bd4c['body']['id']){delete _0x22bd4c[_0xe0de('0x48')]['id'];}return db[_0xe0de('0x2a')][_0xe0de('0x45')]({'where':{'id':_0x22bd4c[_0xe0de('0x42')]['id']}})[_0xe0de('0x23')](handleEntityNotFound(_0x3919d4,null))[_0xe0de('0x23')](saveUpdates(_0x22bd4c['body'],null))[_0xe0de('0x23')](respondWithResult(_0x3919d4,null))[_0xe0de('0x46')](handleError(_0x3919d4,null));};exports[_0xe0de('0x24')]=function(_0x4329f8,_0x1e5c20){return db[_0xe0de('0x2a')][_0xe0de('0x45')]({'where':{'id':_0x4329f8[_0xe0de('0x42')]['id']}})['then'](handleEntityNotFound(_0x1e5c20,null))['then'](removeEntity(_0x1e5c20,null))['catch'](handleError(_0x1e5c20,null));};exports[_0xe0de('0x49')]=function(_0x539de2,_0x7ad3f7){return db[_0xe0de('0x2a')][_0xe0de('0x49')]()[_0xe0de('0x23')](respondWithResult(_0x7ad3f7,null))['catch'](handleError(_0x7ad3f7,null));};
\ No newline at end of file
index 9f247ec..073f526 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74f3=['MailSubstatus','setMaxListeners','emit','hasOwnProperty','exports','../../mysqldb'];(function(_0x56dda5,_0x40d426){var _0x12574f=function(_0x27934c){while(--_0x27934c){_0x56dda5['push'](_0x56dda5['shift']());}};_0x12574f(++_0x40d426);}(_0x74f3,0x101));var _0x374f=function(_0x523f60,_0x1fb007){_0x523f60=_0x523f60-0x0;var _0x2f3ad0=_0x74f3[_0x523f60];return _0x2f3ad0;};'use strict';var EventEmitter=require('events');var MailSubstatus=require(_0x374f('0x0'))['db'][_0x374f('0x1')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0x374f('0x2')](0x0);var events={'afterUpdate':'update'};function emitEvent(_0x17d636){return function(_0x100672,_0x373391,_0x3a347b){MailSubstatusEvents[_0x374f('0x3')](_0x17d636+':'+_0x100672['id'],_0x100672);MailSubstatusEvents['emit'](_0x17d636,_0x100672);_0x3a347b(null);};}for(var e in events){if(events[_0x374f('0x4')](e)){var event=events[e];MailSubstatus['hook'](e,emitEvent(event));}}module[_0x374f('0x5')]=MailSubstatusEvents;
\ No newline at end of file
+var _0x1300=['update','hasOwnProperty','hook','exports','events','MailSubstatus'];(function(_0x313927,_0x2b3a6d){var _0x545b28=function(_0x1be96e){while(--_0x1be96e){_0x313927['push'](_0x313927['shift']());}};_0x545b28(++_0x2b3a6d);}(_0x1300,0xc4));var _0x0130=function(_0x12096f,_0xcea054){_0x12096f=_0x12096f-0x0;var _0x265671=_0x1300[_0x12096f];return _0x265671;};'use strict';var EventEmitter=require(_0x0130('0x0'));var MailSubstatus=require('../../mysqldb')['db'][_0x0130('0x1')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents['setMaxListeners'](0x0);var events={'afterUpdate':_0x0130('0x2')};function emitEvent(_0x4f4060){return function(_0x207f8d,_0xe36b4e,_0x24a923){MailSubstatusEvents['emit'](_0x4f4060+':'+_0x207f8d['id'],_0x207f8d);MailSubstatusEvents['emit'](_0x4f4060,_0x207f8d);_0x24a923(null);};}for(var e in events){if(events[_0x0130('0x3')](e)){var event=events[e];MailSubstatus[_0x0130('0x4')](e,emitEvent(event));}}module[_0x0130('0x5')]=MailSubstatusEvents;
\ No newline at end of file
index 15bb942..84ca4c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x802e=['_previousDataValues','then','./mailSubstatus.attributes','exports','models','define','mail_substatuses','Condition','update','name','mailSubstatus'];(function(_0x3c67ad,_0x154414){var _0x4cc5f=function(_0x5b590b){while(--_0x5b590b){_0x3c67ad['push'](_0x3c67ad['shift']());}};_0x4cc5f(++_0x154414);}(_0x802e,0x9c));var _0xe802=function(_0x3511d3,_0x4107ae){_0x3511d3=_0x3511d3-0x0;var _0x5d6321=_0x802e[_0x3511d3];return _0x5d6321;};'use strict';var attributes=require(_0xe802('0x0'));module[_0xe802('0x1')]=function(_0x932456){var _0x335ad7=_0x932456[_0xe802('0x2')];return _0x932456[_0xe802('0x3')]('MailSubstatus',attributes,{'tableName':_0xe802('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x5981bd,_0x41941a,_0x58503d){return _0x335ad7[_0xe802('0x5')][_0xe802('0x6')]({'value':_0x5981bd[_0xe802('0x7')]},{'where':{'field':_0xe802('0x8'),'value':_0x5981bd[_0xe802('0x9')][_0xe802('0x7')]}})[_0xe802('0xa')](function(){_0x58503d();})['catch'](function(_0x1184fd){_0x58503d(_0x1184fd);});}}});};
\ No newline at end of file
+var _0x0521=['MailSubstatus','mail_substatuses','Condition','update','mailSubstatus','_previousDataValues','catch','./mailSubstatus.attributes','exports','define'];(function(_0x5856af,_0x6a158d){var _0x22a93a=function(_0x732b60){while(--_0x732b60){_0x5856af['push'](_0x5856af['shift']());}};_0x22a93a(++_0x6a158d);}(_0x0521,0x151));var _0x1052=function(_0x5bc21c,_0xf4f0aa){_0x5bc21c=_0x5bc21c-0x0;var _0x208a6b=_0x0521[_0x5bc21c];return _0x208a6b;};'use strict';var attributes=require(_0x1052('0x0'));module[_0x1052('0x1')]=function(_0x1f1fe6){var _0x296069=_0x1f1fe6['models'];return _0x1f1fe6[_0x1052('0x2')](_0x1052('0x3'),attributes,{'tableName':_0x1052('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x29ec99,_0x5eef7f,_0x2a041f){return _0x296069[_0x1052('0x5')][_0x1052('0x6')]({'value':_0x29ec99['name']},{'where':{'field':_0x1052('0x7'),'value':_0x29ec99[_0x1052('0x8')]['name']}})['then'](function(){_0x2a041f();})[_0x1052('0x9')](function(_0x3c2d6a){_0x2a041f(_0x3c2d6a);});}}});};
\ No newline at end of file
index ebd3384..2e0f09c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb21a=['client','http','request','then','info','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x325e42,_0x4d06){var _0x5218c7=function(_0x5a97ab){while(--_0x5a97ab){_0x325e42['push'](_0x325e42['shift']());}};_0x5218c7(++_0x4d06);}(_0xb21a,0x121));var _0xab21=function(_0x3fa80a,_0x5d3e0b){_0x3fa80a=_0x3fa80a-0x0;var _0x4b1c0d=_0xb21a[_0x3fa80a];return _0x4b1c0d;};'use strict';var _=require(_0xab21('0x0'));var util=require(_0xab21('0x1'));var moment=require(_0xab21('0x2'));var BPromise=require(_0xab21('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xab21('0x4'));var db=require(_0xab21('0x5'))['db'];var utils=require(_0xab21('0x6'));var logger=require(_0xab21('0x7'))(_0xab21('0x8'));var config=require(_0xab21('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xab21('0xa')][_0xab21('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4e6a40,_0x3c22f3,_0xc5b67e){return new BPromise(function(_0x3df6b5,_0x262f87){return client[_0xab21('0xc')](_0x4e6a40,_0xc5b67e)[_0xab21('0xd')](function(_0x3fc865){logger[_0xab21('0xe')](_0xab21('0xf'),_0x3c22f3,_0xab21('0x10'));logger[_0xab21('0x11')]('MailSubstatus,\x20%s,\x20%s,\x20%s',_0x3c22f3,_0xab21('0x10'),JSON[_0xab21('0x12')](_0x3fc865));if(_0x3fc865[_0xab21('0x13')]){if(_0x3fc865[_0xab21('0x13')][_0xab21('0x14')]===0x1f4){logger[_0xab21('0x13')]('MailSubstatus,\x20%s,\x20%s',_0x3c22f3,_0x3fc865[_0xab21('0x13')]['message']);return _0x262f87(_0x3fc865['error'][_0xab21('0x15')]);}logger[_0xab21('0x13')](_0xab21('0xf'),_0x3c22f3,_0x3fc865[_0xab21('0x13')][_0xab21('0x15')]);return _0x3df6b5(_0x3fc865[_0xab21('0x13')][_0xab21('0x15')]);}else{logger[_0xab21('0xe')](_0xab21('0xf'),_0x3c22f3,'request\x20sent');_0x3df6b5(_0x3fc865['result'][_0xab21('0x15')]);}})[_0xab21('0x16')](function(_0x3e3903){logger['error']('MailSubstatus,\x20%s,\x20%s',_0x3c22f3,_0x3e3903);_0x262f87(_0x3e3903);});});}
\ No newline at end of file
+var _0xd324=['request','then','debug','request\x20sent','stringify','error','message','MailSubstatus,\x20%s,\x20%s','info','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x4ea5bf,_0x323a9a){var _0x14efb1=function(_0x3465cb){while(--_0x3465cb){_0x4ea5bf['push'](_0x4ea5bf['shift']());}};_0x14efb1(++_0x323a9a);}(_0xd324,0xa5));var _0x4d32=function(_0x1e4f2d,_0x22e2bb){_0x1e4f2d=_0x1e4f2d-0x0;var _0xd05ce5=_0xd324[_0x1e4f2d];return _0xd05ce5;};'use strict';var _=require(_0x4d32('0x0'));var util=require(_0x4d32('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x4d32('0x2'));var fs=require('fs');var Redis=require(_0x4d32('0x3'));var db=require(_0x4d32('0x4'))['db'];var utils=require(_0x4d32('0x5'));var logger=require(_0x4d32('0x6'))(_0x4d32('0x7'));var config=require(_0x4d32('0x8'));var jayson=require(_0x4d32('0x9'));var client=jayson['client'][_0x4d32('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x465376,_0x3af84d,_0x2f9ac3){return new BPromise(function(_0x39408c,_0x4323bb){return client[_0x4d32('0xb')](_0x465376,_0x2f9ac3)[_0x4d32('0xc')](function(_0x36d8f3){logger['info']('MailSubstatus,\x20%s,\x20%s',_0x3af84d,'request\x20sent');logger[_0x4d32('0xd')]('MailSubstatus,\x20%s,\x20%s,\x20%s',_0x3af84d,_0x4d32('0xe'),JSON[_0x4d32('0xf')](_0x36d8f3));if(_0x36d8f3['error']){if(_0x36d8f3[_0x4d32('0x10')]['code']===0x1f4){logger[_0x4d32('0x10')]('MailSubstatus,\x20%s,\x20%s',_0x3af84d,_0x36d8f3['error'][_0x4d32('0x11')]);return _0x4323bb(_0x36d8f3[_0x4d32('0x10')][_0x4d32('0x11')]);}logger['error'](_0x4d32('0x12'),_0x3af84d,_0x36d8f3[_0x4d32('0x10')][_0x4d32('0x11')]);return _0x39408c(_0x36d8f3['error'][_0x4d32('0x11')]);}else{logger[_0x4d32('0x13')](_0x4d32('0x12'),_0x3af84d,_0x4d32('0xe'));_0x39408c(_0x36d8f3[_0x4d32('0x14')][_0x4d32('0x11')]);}})[_0x4d32('0x15')](function(_0x50c8f1){logger['error'](_0x4d32('0x12'),_0x3af84d,_0x50c8f1);_0x4323bb(_0x50c8f1);});});}
\ No newline at end of file
index 116d181..db8ae8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93e3=['create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x2cd6d3,_0x29efaa){var _0x21a83c=function(_0x3323ab){while(--_0x3323ab){_0x2cd6d3['push'](_0x2cd6d3['shift']());}};_0x21a83c(++_0x29efaa);}(_0x93e3,0x150));var _0x393e=function(_0x2ff762,_0x342c0b){_0x2ff762=_0x2ff762-0x0;var _0x158b02=_0x93e3[_0x2ff762];return _0x158b02;};'use strict';var multer=require(_0x393e('0x0'));var util=require('util');var path=require(_0x393e('0x1'));var timeout=require(_0x393e('0x2'));var express=require(_0x393e('0x3'));var router=express[_0x393e('0x4')]();var fs_extra=require(_0x393e('0x5'));var auth=require(_0x393e('0x6'));var interaction=require(_0x393e('0x7'));var config=require(_0x393e('0x8'));var controller=require('./mailTransferReport.controller');router[_0x393e('0x9')]('/',auth[_0x393e('0xa')](),controller[_0x393e('0xb')]);router[_0x393e('0x9')](_0x393e('0xc'),auth[_0x393e('0xa')](),controller[_0x393e('0xd')]);router[_0x393e('0x9')](_0x393e('0xe'),auth[_0x393e('0xa')](),controller[_0x393e('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0x393e('0x10')]);router[_0x393e('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x393e('0x12')]);router[_0x393e('0x13')](_0x393e('0xe'),auth['isAuthenticated'](),controller[_0x393e('0x14')]);module[_0x393e('0x15')]=router;
\ No newline at end of file
+var _0x16d6=['isAuthenticated','index','describe','/:id','post','put','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./mailTransferReport.controller','get'];(function(_0x4820d1,_0x9ca326){var _0x4fd096=function(_0x57e865){while(--_0x57e865){_0x4820d1['push'](_0x4820d1['shift']());}};_0x4fd096(++_0x9ca326);}(_0x16d6,0xa1));var _0x616d=function(_0x2c5340,_0x5c86e5){_0x2c5340=_0x2c5340-0x0;var _0x3c505e=_0x16d6[_0x2c5340];return _0x3c505e;};'use strict';var multer=require('multer');var util=require(_0x616d('0x0'));var path=require(_0x616d('0x1'));var timeout=require(_0x616d('0x2'));var express=require('express');var router=express[_0x616d('0x3')]();var fs_extra=require(_0x616d('0x4'));var auth=require(_0x616d('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x616d('0x6'));var controller=require(_0x616d('0x7'));router[_0x616d('0x8')]('/',auth[_0x616d('0x9')](),controller[_0x616d('0xa')]);router[_0x616d('0x8')]('/describe',auth[_0x616d('0x9')](),controller[_0x616d('0xb')]);router[_0x616d('0x8')](_0x616d('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x616d('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x616d('0xe')](_0x616d('0xc'),auth[_0x616d('0x9')](),controller['update']);router['delete'](_0x616d('0xc'),auth[_0x616d('0x9')](),controller[_0x616d('0xf')]);module[_0x616d('0x10')]=router;
\ No newline at end of file
index d960f72..e4f6e62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x440c2a,_0x5c66fd){var _0x503d8a=function(_0x3bbb59){while(--_0x3bbb59){_0x440c2a['push'](_0x440c2a['shift']());}};_0x503d8a(++_0x5c66fd);}(_0xf4eb,0xec));var _0xbf4e=function(_0x4c7a5a,_0x116d21){_0x4c7a5a=_0x4c7a5a-0x0;var _0x447687=_0xf4eb[_0x4c7a5a];return _0x447687;};'use strict';var moment=require(_0xbf4e('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xbf4e('0x1'),'agent','queue'),'allowNull':![],'defaultValue':_0xbf4e('0x2')},'transferredAt':{'type':Sequelize[_0xbf4e('0x3')],'allowNull':![],'defaultValue':Sequelize[_0xbf4e('0x4')]}};
\ No newline at end of file
+var _0xaa88=['account','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x1bf718,_0x28b49c){var _0x1db05f=function(_0x2a6fad){while(--_0x2a6fad){_0x1bf718['push'](_0x1bf718['shift']());}};_0x1db05f(++_0x28b49c);}(_0xaa88,0x137));var _0x8aa8=function(_0x1d558c,_0x1e497c){_0x1d558c=_0x1d558c-0x0;var _0x15767d=_0xaa88[_0x1d558c];return _0x15767d;};'use strict';var moment=require(_0x8aa8('0x0'));var Sequelize=require(_0x8aa8('0x1'));module[_0x8aa8('0x2')]={'uniqueid':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x8aa8('0x4'),_0x8aa8('0x5'),_0x8aa8('0x6')),'allowNull':![],'defaultValue':_0x8aa8('0x6')},'transferredAt':{'type':Sequelize[_0x8aa8('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x8aa8('0x8')]}};
\ No newline at end of file
index cd47fab..cfee894 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bde=['Content-Range','save','update','then','destroy','error','stack','name','send','map','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','catch','keys','MailTransferReport','rawAttributes','find','create','body','params','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','to-csv','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','set'];(function(_0x2e9708,_0x131c9b){var _0x13bcff=function(_0x4965d6){while(--_0x4965d6){_0x2e9708['push'](_0x2e9708['shift']());}};_0x13bcff(++_0x131c9b);}(_0x1bde,0x1d2));var _0xe1bd=function(_0x263cb4,_0x53ce57){_0x263cb4=_0x263cb4-0x0;var _0x32a04b=_0x1bde[_0x263cb4];return _0x32a04b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe1bd('0x0'));var zipdir=require(_0xe1bd('0x1'));var jsonpatch=require(_0xe1bd('0x2'));var rp=require(_0xe1bd('0x3'));var moment=require('moment');var BPromise=require(_0xe1bd('0x4'));var Mustache=require(_0xe1bd('0x5'));var util=require('util');var path=require(_0xe1bd('0x6'));var sox=require(_0xe1bd('0x7'));var csv=require('to-csv');var ejs=require(_0xe1bd('0x8'));var fs=require('fs');var fs_extra=require(_0xe1bd('0x9'));var _=require(_0xe1bd('0xa'));var squel=require(_0xe1bd('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xe1bd('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xe1bd('0xd'));var authService=require(_0xe1bd('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xe1bd('0xf'));var hardwareService=require(_0xe1bd('0x10'));var logger=require('../../config/logger')(_0xe1bd('0x11'));var utils=require(_0xe1bd('0x12'));var config=require(_0xe1bd('0x13'));var licenseUtil=require(_0xe1bd('0x14'));var db=require(_0xe1bd('0x15'))['db'];function respondWithStatusCode(_0x126818,_0x3b6726){_0x3b6726=_0x3b6726||0xcc;return function(_0x5022b3){if(_0x5022b3){return _0x126818[_0xe1bd('0x16')](_0x3b6726);}return _0x126818[_0xe1bd('0x17')](_0x3b6726)[_0xe1bd('0x18')]();};}function respondWithResult(_0x49fb20,_0x121cd7){_0x121cd7=_0x121cd7||0xc8;return function(_0x5d204f){if(_0x5d204f){return _0x49fb20[_0xe1bd('0x17')](_0x121cd7)[_0xe1bd('0x19')](_0x5d204f);}};}function respondWithFilteredResult(_0x4bb233,_0x4c7f0a){return function(_0x4308b0){if(_0x4308b0){var _0x5d17f5=typeof _0x4c7f0a['offset']==='undefined'&&typeof _0x4c7f0a[_0xe1bd('0x1a')]===_0xe1bd('0x1b');var _0x207532=_0x4308b0[_0xe1bd('0x1c')];var _0x2bb28f=_0x5d17f5?0x0:_0x4c7f0a[_0xe1bd('0x1d')];var _0xf1cc8f=_0x5d17f5?_0x4308b0[_0xe1bd('0x1c')]:_0x4c7f0a[_0xe1bd('0x1d')]+_0x4c7f0a[_0xe1bd('0x1a')];var _0x3abd13;if(_0xf1cc8f>=_0x207532){_0xf1cc8f=_0x207532;_0x3abd13=0xc8;}else{_0x3abd13=0xce;}_0x4bb233[_0xe1bd('0x17')](_0x3abd13);return _0x4bb233[_0xe1bd('0x1e')](_0xe1bd('0x1f'),_0x2bb28f+'-'+_0xf1cc8f+'/'+_0x207532)[_0xe1bd('0x19')](_0x4308b0);}return null;};}function patchUpdates(_0x45897d){return function(_0x38aa80){try{jsonpatch['apply'](_0x38aa80,_0x45897d,!![]);}catch(_0x3ee98d){return BPromise['reject'](_0x3ee98d);}return _0x38aa80[_0xe1bd('0x20')]();};}function saveUpdates(_0x37aaa6,_0x11dfc0){return function(_0x4f7dcf){if(_0x4f7dcf){return _0x4f7dcf[_0xe1bd('0x21')](_0x37aaa6)[_0xe1bd('0x22')](function(_0x496d05){return _0x496d05;});}return null;};}function removeEntity(_0x5597a2,_0x6effe6){return function(_0x2c7e35){if(_0x2c7e35){return _0x2c7e35[_0xe1bd('0x23')]()[_0xe1bd('0x22')](function(){_0x5597a2[_0xe1bd('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0xbe2f40,_0x187538){return function(_0x2be081){if(!_0x2be081){_0xbe2f40[_0xe1bd('0x16')](0x194);}return _0x2be081;};}function handleError(_0x45880f,_0x547a81){_0x547a81=_0x547a81||0x1f4;return function(_0x15f771){logger[_0xe1bd('0x24')](_0x15f771[_0xe1bd('0x25')]);if(_0x15f771[_0xe1bd('0x26')]){delete _0x15f771[_0xe1bd('0x26')];}_0x45880f[_0xe1bd('0x17')](_0x547a81)[_0xe1bd('0x27')](_0x15f771);};}exports['index']=function(_0x44a598,_0x4941d6){var _0x3eb654={},_0x574754={},_0x49b125={'count':0x0,'rows':[]};var _0x1bfdae=_[_0xe1bd('0x28')](db['MailTransferReport']['rawAttributes'],function(_0x44404e){return{'name':_0x44404e[_0xe1bd('0x29')],'type':_0x44404e[_0xe1bd('0x2a')][_0xe1bd('0x2b')]};});_0x574754[_0xe1bd('0x2c')]=_[_0xe1bd('0x28')](_0x1bfdae,_0xe1bd('0x26'));_0x574754[_0xe1bd('0x2d')]=_['keys'](_0x44a598[_0xe1bd('0x2d')]);_0x574754[_0xe1bd('0x2e')]=_[_0xe1bd('0x2f')](_0x574754[_0xe1bd('0x2c')],_0x574754[_0xe1bd('0x2d')]);_0x3eb654[_0xe1bd('0x30')]=_[_0xe1bd('0x2f')](_0x574754[_0xe1bd('0x2c')],qs[_0xe1bd('0x31')](_0x44a598[_0xe1bd('0x2d')][_0xe1bd('0x31')]));_0x3eb654[_0xe1bd('0x30')]=_0x3eb654[_0xe1bd('0x30')][_0xe1bd('0x32')]?_0x3eb654['attributes']:_0x574754[_0xe1bd('0x2c')];if(!_0x44a598['query'][_0xe1bd('0x33')](_0xe1bd('0x34'))){_0x3eb654['limit']=qs[_0xe1bd('0x1a')](_0x44a598['query'][_0xe1bd('0x1a')]);_0x3eb654[_0xe1bd('0x1d')]=qs['offset'](_0x44a598[_0xe1bd('0x2d')][_0xe1bd('0x1d')]);}_0x3eb654[_0xe1bd('0x35')]=qs[_0xe1bd('0x36')](_0x44a598[_0xe1bd('0x2d')][_0xe1bd('0x36')]);_0x3eb654[_0xe1bd('0x37')]=qs[_0xe1bd('0x2e')](_[_0xe1bd('0x38')](_0x44a598['query'],_0x574754[_0xe1bd('0x2e')]),_0x1bfdae);if(_0x44a598[_0xe1bd('0x2d')][_0xe1bd('0x39')]){_0x3eb654[_0xe1bd('0x37')]=_['merge'](_0x3eb654['where'],{'$or':_['map'](_0x1bfdae,function(_0x4b362a){if(_0x4b362a[_0xe1bd('0x2a')]!=='VIRTUAL'){var _0x376f7b={};_0x376f7b[_0x4b362a[_0xe1bd('0x26')]]={'$like':'%'+_0x44a598['query'][_0xe1bd('0x39')]+'%'};return _0x376f7b;}})});}_0x3eb654=_[_0xe1bd('0x3a')]({},_0x3eb654,_0x44a598[_0xe1bd('0x3b')]);var _0x5787c8={'where':_0x3eb654['where']};return db['MailTransferReport']['count'](_0x5787c8)[_0xe1bd('0x22')](function(_0x367275){_0x49b125[_0xe1bd('0x1c')]=_0x367275;if(_0x44a598[_0xe1bd('0x2d')][_0xe1bd('0x3c')]){_0x3eb654[_0xe1bd('0x3d')]=[{'all':!![]}];}return db['MailTransferReport']['findAll'](_0x3eb654);})[_0xe1bd('0x22')](function(_0x37a903){_0x49b125['rows']=_0x37a903;return _0x49b125;})[_0xe1bd('0x22')](respondWithFilteredResult(_0x4941d6,_0x3eb654))[_0xe1bd('0x3e')](handleError(_0x4941d6,null));};exports['show']=function(_0x4d8023,_0xc9b949){var _0x22e030={'raw':!![],'where':{'id':_0x4d8023['params']['id']}},_0x5e64ad={};_0x5e64ad[_0xe1bd('0x2c')]=_[_0xe1bd('0x3f')](db[_0xe1bd('0x40')][_0xe1bd('0x41')]);_0x5e64ad[_0xe1bd('0x2d')]=_[_0xe1bd('0x3f')](_0x4d8023[_0xe1bd('0x2d')]);_0x5e64ad[_0xe1bd('0x2e')]=_[_0xe1bd('0x2f')](_0x5e64ad[_0xe1bd('0x2c')],_0x5e64ad['query']);_0x22e030[_0xe1bd('0x30')]=_[_0xe1bd('0x2f')](_0x5e64ad[_0xe1bd('0x2c')],qs[_0xe1bd('0x31')](_0x4d8023[_0xe1bd('0x2d')]['fields']));_0x22e030[_0xe1bd('0x30')]=_0x22e030[_0xe1bd('0x30')][_0xe1bd('0x32')]?_0x22e030['attributes']:_0x5e64ad[_0xe1bd('0x2c')];if(_0x4d8023[_0xe1bd('0x2d')][_0xe1bd('0x3c')]){_0x22e030[_0xe1bd('0x3d')]=[{'all':!![]}];}_0x22e030=_[_0xe1bd('0x3a')]({},_0x22e030,_0x4d8023['options']);return db['MailTransferReport'][_0xe1bd('0x42')](_0x22e030)[_0xe1bd('0x22')](handleEntityNotFound(_0xc9b949,null))[_0xe1bd('0x22')](respondWithResult(_0xc9b949,null))[_0xe1bd('0x3e')](handleError(_0xc9b949,null));};exports[_0xe1bd('0x43')]=function(_0x40eb58,_0x2c396c){return db[_0xe1bd('0x40')][_0xe1bd('0x43')](_0x40eb58[_0xe1bd('0x44')],{})[_0xe1bd('0x22')](respondWithResult(_0x2c396c,0xc9))[_0xe1bd('0x3e')](handleError(_0x2c396c,null));};exports[_0xe1bd('0x21')]=function(_0x459748,_0x544d9b){if(_0x459748[_0xe1bd('0x44')]['id']){delete _0x459748['body']['id'];}return db[_0xe1bd('0x40')][_0xe1bd('0x42')]({'where':{'id':_0x459748[_0xe1bd('0x45')]['id']}})[_0xe1bd('0x22')](handleEntityNotFound(_0x544d9b,null))[_0xe1bd('0x22')](saveUpdates(_0x459748[_0xe1bd('0x44')],null))['then'](respondWithResult(_0x544d9b,null))['catch'](handleError(_0x544d9b,null));};exports[_0xe1bd('0x23')]=function(_0x4ad820,_0x584f88){return db[_0xe1bd('0x40')][_0xe1bd('0x42')]({'where':{'id':_0x4ad820['params']['id']}})[_0xe1bd('0x22')](handleEntityNotFound(_0x584f88,null))[_0xe1bd('0x22')](removeEntity(_0x584f88,null))[_0xe1bd('0x3e')](handleError(_0x584f88,null));};exports[_0xe1bd('0x46')]=function(_0x4a8494,_0x153ef2){return db[_0xe1bd('0x40')][_0xe1bd('0x46')]()[_0xe1bd('0x22')](respondWithResult(_0x153ef2,null))['catch'](handleError(_0x153ef2,null));};
\ No newline at end of file
+var _0xa5e7=['include','findAll','rows','catch','show','keys','rawAttributes','options','find','create','body','params','describe','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','offset','undefined','limit','count','Content-Range','json','apply','save','update','then','destroy','sendStatus','error','stack','name','index','map','MailTransferReport','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','includeAll'];(function(_0x3a0006,_0x2cc0ef){var _0x2b22d5=function(_0x4daaf8){while(--_0x4daaf8){_0x3a0006['push'](_0x3a0006['shift']());}};_0x2b22d5(++_0x2cc0ef);}(_0xa5e7,0xab));var _0x7a5e=function(_0x39726d,_0x2f93c4){_0x39726d=_0x39726d-0x0;var _0x6b16f7=_0xa5e7[_0x39726d];return _0x6b16f7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7a5e('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7a5e('0x1'));var rp=require(_0x7a5e('0x2'));var moment=require(_0x7a5e('0x3'));var BPromise=require(_0x7a5e('0x4'));var Mustache=require(_0x7a5e('0x5'));var util=require(_0x7a5e('0x6'));var path=require(_0x7a5e('0x7'));var sox=require(_0x7a5e('0x8'));var csv=require('to-csv');var ejs=require(_0x7a5e('0x9'));var fs=require('fs');var fs_extra=require(_0x7a5e('0xa'));var _=require('lodash');var squel=require(_0x7a5e('0xb'));var crypto=require('crypto');var jsforce=require(_0x7a5e('0xc'));var deskjs=require(_0x7a5e('0xd'));var toCsv=require(_0x7a5e('0xe'));var querystring=require(_0x7a5e('0xf'));var Papa=require(_0x7a5e('0x10'));var Redis=require(_0x7a5e('0x11'));var authService=require(_0x7a5e('0x12'));var qs=require(_0x7a5e('0x13'));var as=require(_0x7a5e('0x14'));var hardwareService=require(_0x7a5e('0x15'));var logger=require(_0x7a5e('0x16'))(_0x7a5e('0x17'));var utils=require(_0x7a5e('0x18'));var config=require(_0x7a5e('0x19'));var licenseUtil=require(_0x7a5e('0x1a'));var db=require(_0x7a5e('0x1b'))['db'];function respondWithStatusCode(_0x49cf57,_0x395a9d){_0x395a9d=_0x395a9d||0xcc;return function(_0x2cd0c4){if(_0x2cd0c4){return _0x49cf57['sendStatus'](_0x395a9d);}return _0x49cf57['status'](_0x395a9d)[_0x7a5e('0x1c')]();};}function respondWithResult(_0x27788d,_0x53dcb2){_0x53dcb2=_0x53dcb2||0xc8;return function(_0xa6637e){if(_0xa6637e){return _0x27788d[_0x7a5e('0x1d')](_0x53dcb2)['json'](_0xa6637e);}};}function respondWithFilteredResult(_0x30e453,_0x50aeb1){return function(_0x4cc078){if(_0x4cc078){var _0x36dcd0=typeof _0x50aeb1[_0x7a5e('0x1e')]===_0x7a5e('0x1f')&&typeof _0x50aeb1[_0x7a5e('0x20')]===_0x7a5e('0x1f');var _0x1fef18=_0x4cc078[_0x7a5e('0x21')];var _0x139d27=_0x36dcd0?0x0:_0x50aeb1[_0x7a5e('0x1e')];var _0xf3ae50=_0x36dcd0?_0x4cc078[_0x7a5e('0x21')]:_0x50aeb1['offset']+_0x50aeb1[_0x7a5e('0x20')];var _0x291d91;if(_0xf3ae50>=_0x1fef18){_0xf3ae50=_0x1fef18;_0x291d91=0xc8;}else{_0x291d91=0xce;}_0x30e453[_0x7a5e('0x1d')](_0x291d91);return _0x30e453['set'](_0x7a5e('0x22'),_0x139d27+'-'+_0xf3ae50+'/'+_0x1fef18)[_0x7a5e('0x23')](_0x4cc078);}return null;};}function patchUpdates(_0x226a18){return function(_0x487164){try{jsonpatch[_0x7a5e('0x24')](_0x487164,_0x226a18,!![]);}catch(_0x227f8e){return BPromise['reject'](_0x227f8e);}return _0x487164[_0x7a5e('0x25')]();};}function saveUpdates(_0x13b68f,_0xcb567b){return function(_0xa5a9d2){if(_0xa5a9d2){return _0xa5a9d2[_0x7a5e('0x26')](_0x13b68f)[_0x7a5e('0x27')](function(_0x3775e0){return _0x3775e0;});}return null;};}function removeEntity(_0x275c9d,_0x4953e3){return function(_0xcebefd){if(_0xcebefd){return _0xcebefd[_0x7a5e('0x28')]()[_0x7a5e('0x27')](function(){_0x275c9d[_0x7a5e('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3af76a,_0x21f080){return function(_0x40535a){if(!_0x40535a){_0x3af76a[_0x7a5e('0x29')](0x194);}return _0x40535a;};}function handleError(_0x2aafd6,_0x2114a3){_0x2114a3=_0x2114a3||0x1f4;return function(_0x501458){logger[_0x7a5e('0x2a')](_0x501458[_0x7a5e('0x2b')]);if(_0x501458[_0x7a5e('0x2c')]){delete _0x501458[_0x7a5e('0x2c')];}_0x2aafd6[_0x7a5e('0x1d')](_0x2114a3)['send'](_0x501458);};}exports[_0x7a5e('0x2d')]=function(_0x7c9674,_0x306b8f){var _0x2e904a={},_0xa9b18b={},_0x217ed6={'count':0x0,'rows':[]};var _0x565931=_[_0x7a5e('0x2e')](db[_0x7a5e('0x2f')]['rawAttributes'],function(_0x36f275){return{'name':_0x36f275[_0x7a5e('0x30')],'type':_0x36f275[_0x7a5e('0x31')][_0x7a5e('0x32')]};});_0xa9b18b[_0x7a5e('0x33')]=_[_0x7a5e('0x2e')](_0x565931,_0x7a5e('0x2c'));_0xa9b18b[_0x7a5e('0x34')]=_['keys'](_0x7c9674[_0x7a5e('0x34')]);_0xa9b18b[_0x7a5e('0x35')]=_['intersection'](_0xa9b18b[_0x7a5e('0x33')],_0xa9b18b[_0x7a5e('0x34')]);_0x2e904a[_0x7a5e('0x36')]=_[_0x7a5e('0x37')](_0xa9b18b[_0x7a5e('0x33')],qs[_0x7a5e('0x38')](_0x7c9674[_0x7a5e('0x34')]['fields']));_0x2e904a[_0x7a5e('0x36')]=_0x2e904a[_0x7a5e('0x36')][_0x7a5e('0x39')]?_0x2e904a[_0x7a5e('0x36')]:_0xa9b18b[_0x7a5e('0x33')];if(!_0x7c9674['query'][_0x7a5e('0x3a')](_0x7a5e('0x3b'))){_0x2e904a[_0x7a5e('0x20')]=qs['limit'](_0x7c9674[_0x7a5e('0x34')]['limit']);_0x2e904a['offset']=qs[_0x7a5e('0x1e')](_0x7c9674[_0x7a5e('0x34')][_0x7a5e('0x1e')]);}_0x2e904a['order']=qs['sort'](_0x7c9674[_0x7a5e('0x34')][_0x7a5e('0x3c')]);_0x2e904a[_0x7a5e('0x3d')]=qs['filters'](_[_0x7a5e('0x3e')](_0x7c9674[_0x7a5e('0x34')],_0xa9b18b[_0x7a5e('0x35')]),_0x565931);if(_0x7c9674['query'][_0x7a5e('0x3f')]){_0x2e904a[_0x7a5e('0x3d')]=_[_0x7a5e('0x40')](_0x2e904a[_0x7a5e('0x3d')],{'$or':_[_0x7a5e('0x2e')](_0x565931,function(_0x5d9a9d){if(_0x5d9a9d['type']!=='VIRTUAL'){var _0x16fe41={};_0x16fe41[_0x5d9a9d['name']]={'$like':'%'+_0x7c9674[_0x7a5e('0x34')]['filter']+'%'};return _0x16fe41;}})});}_0x2e904a=_['merge']({},_0x2e904a,_0x7c9674['options']);var _0x3c5de0={'where':_0x2e904a[_0x7a5e('0x3d')]};return db['MailTransferReport']['count'](_0x3c5de0)[_0x7a5e('0x27')](function(_0x11c15a){_0x217ed6[_0x7a5e('0x21')]=_0x11c15a;if(_0x7c9674[_0x7a5e('0x34')][_0x7a5e('0x41')]){_0x2e904a[_0x7a5e('0x42')]=[{'all':!![]}];}return db[_0x7a5e('0x2f')][_0x7a5e('0x43')](_0x2e904a);})[_0x7a5e('0x27')](function(_0x536538){_0x217ed6[_0x7a5e('0x44')]=_0x536538;return _0x217ed6;})['then'](respondWithFilteredResult(_0x306b8f,_0x2e904a))[_0x7a5e('0x45')](handleError(_0x306b8f,null));};exports[_0x7a5e('0x46')]=function(_0x4ad944,_0x372cbf){var _0x5df664={'raw':!![],'where':{'id':_0x4ad944['params']['id']}},_0x491b2e={};_0x491b2e[_0x7a5e('0x33')]=_[_0x7a5e('0x47')](db[_0x7a5e('0x2f')][_0x7a5e('0x48')]);_0x491b2e['query']=_[_0x7a5e('0x47')](_0x4ad944[_0x7a5e('0x34')]);_0x491b2e[_0x7a5e('0x35')]=_[_0x7a5e('0x37')](_0x491b2e[_0x7a5e('0x33')],_0x491b2e[_0x7a5e('0x34')]);_0x5df664[_0x7a5e('0x36')]=_[_0x7a5e('0x37')](_0x491b2e['model'],qs[_0x7a5e('0x38')](_0x4ad944[_0x7a5e('0x34')][_0x7a5e('0x38')]));_0x5df664[_0x7a5e('0x36')]=_0x5df664[_0x7a5e('0x36')][_0x7a5e('0x39')]?_0x5df664[_0x7a5e('0x36')]:_0x491b2e[_0x7a5e('0x33')];if(_0x4ad944[_0x7a5e('0x34')][_0x7a5e('0x41')]){_0x5df664['include']=[{'all':!![]}];}_0x5df664=_['merge']({},_0x5df664,_0x4ad944[_0x7a5e('0x49')]);return db[_0x7a5e('0x2f')][_0x7a5e('0x4a')](_0x5df664)[_0x7a5e('0x27')](handleEntityNotFound(_0x372cbf,null))[_0x7a5e('0x27')](respondWithResult(_0x372cbf,null))[_0x7a5e('0x45')](handleError(_0x372cbf,null));};exports[_0x7a5e('0x4b')]=function(_0x13e078,_0x4e0b2a){return db[_0x7a5e('0x2f')][_0x7a5e('0x4b')](_0x13e078[_0x7a5e('0x4c')],{})[_0x7a5e('0x27')](respondWithResult(_0x4e0b2a,0xc9))['catch'](handleError(_0x4e0b2a,null));};exports[_0x7a5e('0x26')]=function(_0x6752f4,_0x532bee){if(_0x6752f4['body']['id']){delete _0x6752f4['body']['id'];}return db[_0x7a5e('0x2f')][_0x7a5e('0x4a')]({'where':{'id':_0x6752f4[_0x7a5e('0x4d')]['id']}})[_0x7a5e('0x27')](handleEntityNotFound(_0x532bee,null))[_0x7a5e('0x27')](saveUpdates(_0x6752f4['body'],null))['then'](respondWithResult(_0x532bee,null))[_0x7a5e('0x45')](handleError(_0x532bee,null));};exports['destroy']=function(_0x21f14c,_0x55cda5){return db[_0x7a5e('0x2f')][_0x7a5e('0x4a')]({'where':{'id':_0x21f14c[_0x7a5e('0x4d')]['id']}})[_0x7a5e('0x27')](handleEntityNotFound(_0x55cda5,null))[_0x7a5e('0x27')](removeEntity(_0x55cda5,null))['catch'](handleError(_0x55cda5,null));};exports['describe']=function(_0x37c2f9,_0xdbb32a){return db[_0x7a5e('0x2f')][_0x7a5e('0x4e')]()['then'](respondWithResult(_0xdbb32a,null))[_0x7a5e('0x45')](handleError(_0xdbb32a,null));};
\ No newline at end of file
index f0cfa78..b748083 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f91=['bluebird','request-promise','path','../../config/environment','./mailTransferReport.attributes','exports','define','MailTransferReport','lodash','util','../../config/logger','moment'];(function(_0x42f4e0,_0x1a481f){var _0x5eb3e0=function(_0x4ba1fa){while(--_0x4ba1fa){_0x42f4e0['push'](_0x42f4e0['shift']());}};_0x5eb3e0(++_0x1a481f);}(_0x2f91,0x98));var _0x12f9=function(_0x2d2869,_0x84cb32){_0x2d2869=_0x2d2869-0x0;var _0xf6a4=_0x2f91[_0x2d2869];return _0xf6a4;};'use strict';var _=require(_0x12f9('0x0'));var util=require(_0x12f9('0x1'));var logger=require(_0x12f9('0x2'))('api');var moment=require(_0x12f9('0x3'));var BPromise=require(_0x12f9('0x4'));var rp=require(_0x12f9('0x5'));var fs=require('fs');var path=require(_0x12f9('0x6'));var rimraf=require('rimraf');var config=require(_0x12f9('0x7'));var attributes=require(_0x12f9('0x8'));module[_0x12f9('0x9')]=function(_0xf06fa3,_0x57a5ff){return _0xf06fa3[_0x12f9('0xa')](_0x12f9('0xb'),attributes,{'tableName':'report_mail_transfer','paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc997=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./mailTransferReport.attributes','exports','define','report_mail_transfer','uniqueid','util'];(function(_0x44a54b,_0x4fab7b){var _0x5a2d5d=function(_0x2837ee){while(--_0x2837ee){_0x44a54b['push'](_0x44a54b['shift']());}};_0x5a2d5d(++_0x4fab7b);}(_0xc997,0x1ac));var _0x7c99=function(_0x1212de,_0xebf35f){_0x1212de=_0x1212de-0x0;var _0x41d8c6=_0xc997[_0x1212de];return _0x41d8c6;};'use strict';var _=require('lodash');var util=require(_0x7c99('0x0'));var logger=require(_0x7c99('0x1'))(_0x7c99('0x2'));var moment=require(_0x7c99('0x3'));var BPromise=require(_0x7c99('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7c99('0x5'));var rimraf=require(_0x7c99('0x6'));var config=require(_0x7c99('0x7'));var attributes=require(_0x7c99('0x8'));module[_0x7c99('0x9')]=function(_0x404ffb,_0x1a21e1){return _0x404ffb[_0x7c99('0xa')]('MailTransferReport',attributes,{'tableName':_0x7c99('0xb'),'paranoid':![],'indexes':[{'name':_0x7c99('0xc'),'fields':[_0x7c99('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 7c441f0..bd73cc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc002=['debug','MailTransferReport,\x20%s,\x20%s,\x20%s','error','code','MailTransferReport,\x20%s,\x20%s','message','info','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','request\x20sent'];(function(_0x215cf3,_0x48545b){var _0x1e2e7c=function(_0x3fad60){while(--_0x3fad60){_0x215cf3['push'](_0x215cf3['shift']());}};_0x1e2e7c(++_0x48545b);}(_0xc002,0xb8));var _0x2c00=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0xc002[_0x36ed48];return _0x51c63a;};'use strict';var _=require(_0x2c00('0x0'));var util=require('util');var moment=require(_0x2c00('0x1'));var BPromise=require(_0x2c00('0x2'));var rs=require(_0x2c00('0x3'));var fs=require('fs');var Redis=require(_0x2c00('0x4'));var db=require(_0x2c00('0x5'))['db'];var utils=require(_0x2c00('0x6'));var logger=require(_0x2c00('0x7'))(_0x2c00('0x8'));var config=require(_0x2c00('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x2c00('0xa')][_0x2c00('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x18f293,_0x176d54,_0x59a620){return new BPromise(function(_0x46a167,_0x2cae56){return client['request'](_0x18f293,_0x59a620)[_0x2c00('0xc')](function(_0x431f55){logger['info']('MailTransferReport,\x20%s,\x20%s',_0x176d54,_0x2c00('0xd'));logger[_0x2c00('0xe')](_0x2c00('0xf'),_0x176d54,_0x2c00('0xd'),JSON['stringify'](_0x431f55));if(_0x431f55[_0x2c00('0x10')]){if(_0x431f55['error'][_0x2c00('0x11')]===0x1f4){logger['error'](_0x2c00('0x12'),_0x176d54,_0x431f55[_0x2c00('0x10')][_0x2c00('0x13')]);return _0x2cae56(_0x431f55[_0x2c00('0x10')][_0x2c00('0x13')]);}logger[_0x2c00('0x10')](_0x2c00('0x12'),_0x176d54,_0x431f55[_0x2c00('0x10')]['message']);return _0x46a167(_0x431f55[_0x2c00('0x10')][_0x2c00('0x13')]);}else{logger[_0x2c00('0x14')]('MailTransferReport,\x20%s,\x20%s',_0x176d54,'request\x20sent');_0x46a167(_0x431f55['result'][_0x2c00('0x13')]);}})[_0x2c00('0x15')](function(_0x33852d){logger[_0x2c00('0x10')](_0x2c00('0x12'),_0x176d54,_0x33852d);_0x2cae56(_0x33852d);});});}
\ No newline at end of file
+var _0xb3df=['MailTransferReport,\x20%s,\x20%s','request\x20sent','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xb3df,0x1a8));var _0xfb3d=function(_0x893284,_0x2bd9f8){_0x893284=_0x893284-0x0;var _0x2da683=_0xb3df[_0x893284];return _0x2da683;};'use strict';var _=require(_0xfb3d('0x0'));var util=require(_0xfb3d('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xfb3d('0x2'));var fs=require('fs');var Redis=require(_0xfb3d('0x3'));var db=require(_0xfb3d('0x4'))['db'];var utils=require(_0xfb3d('0x5'));var logger=require('../../config/logger')(_0xfb3d('0x6'));var config=require(_0xfb3d('0x7'));var jayson=require(_0xfb3d('0x8'));var client=jayson[_0xfb3d('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x613974,_0x5f1098,_0x1f9af1){return new BPromise(function(_0x1e4d9c,_0x4d6590){return client[_0xfb3d('0xa')](_0x613974,_0x1f9af1)[_0xfb3d('0xb')](function(_0x16da27){logger[_0xfb3d('0xc')](_0xfb3d('0xd'),_0x5f1098,_0xfb3d('0xe'));logger[_0xfb3d('0xf')](_0xfb3d('0x10'),_0x5f1098,_0xfb3d('0xe'),JSON[_0xfb3d('0x11')](_0x16da27));if(_0x16da27[_0xfb3d('0x12')]){if(_0x16da27['error'][_0xfb3d('0x13')]===0x1f4){logger['error'](_0xfb3d('0xd'),_0x5f1098,_0x16da27[_0xfb3d('0x12')][_0xfb3d('0x14')]);return _0x4d6590(_0x16da27[_0xfb3d('0x12')]['message']);}logger[_0xfb3d('0x12')]('MailTransferReport,\x20%s,\x20%s',_0x5f1098,_0x16da27[_0xfb3d('0x12')][_0xfb3d('0x14')]);return _0x1e4d9c(_0x16da27[_0xfb3d('0x12')][_0xfb3d('0x14')]);}else{logger['info'](_0xfb3d('0xd'),_0x5f1098,_0xfb3d('0xe'));_0x1e4d9c(_0x16da27[_0xfb3d('0x15')]['message']);}})[_0xfb3d('0x16')](function(_0xfcdc66){logger[_0xfb3d('0x12')](_0xfb3d('0xd'),_0x5f1098,_0xfcdc66);_0x4d6590(_0xfcdc66);});});}
\ No newline at end of file
index 9f2685e..71ba283 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b1b=['exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','get','isAuthenticated','index','/describe','describe','create','put','/:id','update','destroy'];(function(_0x50027a,_0x7f0218){var _0x3fab50=function(_0x5f5a38){while(--_0x5f5a38){_0x50027a['push'](_0x50027a['shift']());}};_0x3fab50(++_0x7f0218);}(_0x2b1b,0x1a5));var _0xb2b1=function(_0x3cf730,_0x97950a){_0x3cf730=_0x3cf730-0x0;var _0xf6883b=_0x2b1b[_0x3cf730];return _0xf6883b;};'use strict';var multer=require(_0xb2b1('0x0'));var util=require(_0xb2b1('0x1'));var path=require(_0xb2b1('0x2'));var timeout=require(_0xb2b1('0x3'));var express=require(_0xb2b1('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xb2b1('0x5'));var interaction=require(_0xb2b1('0x6'));var config=require(_0xb2b1('0x7'));var controller=require(_0xb2b1('0x8'));router[_0xb2b1('0x9')]('/',auth[_0xb2b1('0xa')](),controller[_0xb2b1('0xb')]);router['get'](_0xb2b1('0xc'),auth['isAuthenticated'](),controller[_0xb2b1('0xd')]);router[_0xb2b1('0x9')]('/:id',auth[_0xb2b1('0xa')](),controller['show']);router['post']('/',auth[_0xb2b1('0xa')](),controller[_0xb2b1('0xe')]);router[_0xb2b1('0xf')](_0xb2b1('0x10'),auth[_0xb2b1('0xa')](),controller[_0xb2b1('0x11')]);router['delete'](_0xb2b1('0x10'),auth[_0xb2b1('0xa')](),controller[_0xb2b1('0x12')]);module[_0xb2b1('0x13')]=router;
\ No newline at end of file
+var _0xc011=['delete','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./memberReport.controller','get','isAuthenticated','/describe','/:id','show','post','create','put','update'];(function(_0x2a8021,_0x4eb97c){var _0x131b0f=function(_0x2cc7dd){while(--_0x2cc7dd){_0x2a8021['push'](_0x2a8021['shift']());}};_0x131b0f(++_0x4eb97c);}(_0xc011,0x1dd));var _0x1c01=function(_0x47adb8,_0x591ccc){_0x47adb8=_0x47adb8-0x0;var _0x4689a8=_0xc011[_0x47adb8];return _0x4689a8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1c01('0x0'));var timeout=require(_0x1c01('0x1'));var express=require(_0x1c01('0x2'));var router=express[_0x1c01('0x3')]();var fs_extra=require(_0x1c01('0x4'));var auth=require(_0x1c01('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x1c01('0x6'));var controller=require(_0x1c01('0x7'));router[_0x1c01('0x8')]('/',auth[_0x1c01('0x9')](),controller['index']);router[_0x1c01('0x8')](_0x1c01('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x1c01('0x8')](_0x1c01('0xb'),auth[_0x1c01('0x9')](),controller[_0x1c01('0xc')]);router[_0x1c01('0xd')]('/',auth[_0x1c01('0x9')](),controller[_0x1c01('0xe')]);router[_0x1c01('0xf')](_0x1c01('0xb'),auth[_0x1c01('0x9')](),controller[_0x1c01('0x10')]);router[_0x1c01('0x11')](_0x1c01('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x1c01('0x12')]=router;
\ No newline at end of file
index 6dd6061..ad87af1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d88=['talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','talk:[dial\x20string]','talk:[queue]','sequelize','moment','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','setDataValue','exitAt'];(function(_0xffedaf,_0x17efea){var _0x140903=function(_0xcd0905){while(--_0xcd0905){_0xffedaf['push'](_0xffedaf['shift']());}};_0x140903(++_0x17efea);}(_0x8d88,0x7d));var _0x88d8=function(_0x49870c,_0x4d2e2b){_0x49870c=_0x49870c-0x0;var _0x2c98f5=_0x8d88[_0x49870c];return _0x2c98f5;};'use strict';var Sequelize=require(_0x88d8('0x0'));var moment=require(_0x88d8('0x1'));module[_0x88d8('0x2')]={'channel':{'type':Sequelize[_0x88d8('0x3')]},'membername':{'type':Sequelize[_0x88d8('0x3')]},'interface':{'type':Sequelize[_0x88d8('0x3')]},'type':{'type':Sequelize[_0x88d8('0x3')],'defaultValue':_0x88d8('0x4'),'comment':_0x88d8('0x5')},'duration':{'type':Sequelize[_0x88d8('0x6')]},'enterAt':{'type':Sequelize[_0x88d8('0x7')]},'exitAt':{'type':Sequelize[_0x88d8('0x7')],'set':function(_0x4c0f53){var _0x3cd223=moment(_0x4c0f53);var _0x3288b=moment(this['getDataValue']('enterAt'));var _0x4f50d4=_0x3cd223['diff'](_0x3288b,'seconds');this[_0x88d8('0x8')](_0x88d8('0x9'),_0x4c0f53);this[_0x88d8('0x8')]('duration',_0x4f50d4>=0x0?_0x4f50d4:null);}},'data1':{'type':Sequelize['STRING'],'comment':_0x88d8('0xa')},'data2':{'type':Sequelize['STRING'],'comment':_0x88d8('0xb')},'data3':{'type':Sequelize[_0x88d8('0x3')],'comment':_0x88d8('0xc')},'data4':{'type':Sequelize[_0x88d8('0x3')],'comment':_0x88d8('0xd')},'data5':{'type':Sequelize['STRING'],'comment':_0x88d8('0xe')},'role':{'type':Sequelize[_0x88d8('0x3')]},'internal':{'type':Sequelize[_0x88d8('0x6')]},'uniqueid':{'type':Sequelize[_0x88d8('0x3')]}};
\ No newline at end of file
+var _0xd89f=['getDataValue','enterAt','diff','seconds','exitAt','talk:[queue]','sequelize','moment','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER'];(function(_0x34e81a,_0x131247){var _0x5df1c5=function(_0x514247){while(--_0x514247){_0x34e81a['push'](_0x34e81a['shift']());}};_0x5df1c5(++_0x131247);}(_0xd89f,0x13e));var _0xfd89=function(_0x4106e2,_0x188b44){_0x4106e2=_0x4106e2-0x0;var _0x3647af=_0xd89f[_0x4106e2];return _0x3647af;};'use strict';var Sequelize=require(_0xfd89('0x0'));var moment=require(_0xfd89('0x1'));module['exports']={'channel':{'type':Sequelize[_0xfd89('0x2')]},'membername':{'type':Sequelize['STRING']},'interface':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING'],'defaultValue':_0xfd89('0x3'),'comment':_0xfd89('0x4')},'duration':{'type':Sequelize[_0xfd89('0x5')]},'enterAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE'],'set':function(_0x152cbc){var _0x36956d=moment(_0x152cbc);var _0x92d3a=moment(this[_0xfd89('0x6')](_0xfd89('0x7')));var _0x5837ff=_0x36956d[_0xfd89('0x8')](_0x92d3a,_0xfd89('0x9'));this['setDataValue'](_0xfd89('0xa'),_0x152cbc);this['setDataValue']('duration',_0x5837ff>=0x0?_0x5837ff:null);}},'data1':{'type':Sequelize[_0xfd89('0x2')],'comment':'talk:[inbound,\x20outbound],\x20pause:[reason]'},'data2':{'type':Sequelize[_0xfd89('0x2')],'comment':'talk:[start]'},'data3':{'type':Sequelize[_0xfd89('0x2')],'comment':'talk:[destination]'},'data4':{'type':Sequelize[_0xfd89('0x2')],'comment':'talk:[dial\x20string]'},'data5':{'type':Sequelize['STRING'],'comment':_0xfd89('0xb')},'role':{'type':Sequelize[_0xfd89('0x2')]},'internal':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize[_0xfd89('0x2')]}};
\ No newline at end of file
index 2642964..dc9263d 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(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x55ca,0x126));var _0xa55c=function(_0x15de11,_0x3cd20d){_0x15de11=_0x15de11-0x0;var _0x4f1c07=_0x55ca[_0x15de11];return _0x4f1c07;};'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(_0x9df060,_0x253d33){var _0x338dfe=function(_0x17d9a5){while(--_0x17d9a5){_0x9df060['push'](_0x9df060['shift']());}};_0x338dfe(++_0x253d33);}(_0xedd9,0xfc));var _0x9edd=function(_0x3e07ab,_0x2530c9){_0x3e07ab=_0x3e07ab-0x0;var _0x3e1f5b=_0xedd9[_0x3e07ab];return _0x3e1f5b;};'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 60bfab6..6436ddd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bb1=['moment','bluebird','request-promise','rimraf','../../config/environment','./memberReport.attributes','exports','define','MemberReport','report_member','membername_interface','membername','interface','util'];(function(_0x4d07cc,_0x587613){var _0x42de3b=function(_0x201f78){while(--_0x201f78){_0x4d07cc['push'](_0x4d07cc['shift']());}};_0x42de3b(++_0x587613);}(_0x0bb1,0x1cd));var _0x10bb=function(_0x2cd1e4,_0x23d906){_0x2cd1e4=_0x2cd1e4-0x0;var _0x167374=_0x0bb1[_0x2cd1e4];return _0x167374;};'use strict';var _=require('lodash');var util=require(_0x10bb('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x10bb('0x1'));var BPromise=require(_0x10bb('0x2'));var rp=require(_0x10bb('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x10bb('0x4'));var config=require(_0x10bb('0x5'));var attributes=require(_0x10bb('0x6'));module[_0x10bb('0x7')]=function(_0x6e2843,_0x2b6938){return _0x6e2843[_0x10bb('0x8')](_0x10bb('0x9'),attributes,{'tableName':_0x10bb('0xa'),'paranoid':![],'indexes':[{'name':_0x10bb('0xb'),'fields':[_0x10bb('0xc'),_0x10bb('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x518c=['rimraf','../../config/environment','./memberReport.attributes','exports','define','report_member','membername_interface','interface','lodash','util','../../config/logger','moment','bluebird'];(function(_0x3aa8da,_0x3c358a){var _0x4c6e40=function(_0x5d9e43){while(--_0x5d9e43){_0x3aa8da['push'](_0x3aa8da['shift']());}};_0x4c6e40(++_0x3c358a);}(_0x518c,0xd8));var _0xc518=function(_0x27dbd1,_0x2c6865){_0x27dbd1=_0x27dbd1-0x0;var _0x37f4b0=_0x518c[_0x27dbd1];return _0x37f4b0;};'use strict';var _=require(_0xc518('0x0'));var util=require(_0xc518('0x1'));var logger=require(_0xc518('0x2'))('api');var moment=require(_0xc518('0x3'));var BPromise=require(_0xc518('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xc518('0x5'));var config=require(_0xc518('0x6'));var attributes=require(_0xc518('0x7'));module[_0xc518('0x8')]=function(_0x4cbbdf,_0x1e2ef7){return _0x4cbbdf[_0xc518('0x9')]('MemberReport',attributes,{'tableName':_0xc518('0xa'),'paranoid':![],'indexes':[{'name':_0xc518('0xb'),'fields':['membername',_0xc518('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index a4f1b5a..03337f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf569=['model','debug','CreateMemberReport','MemberReport','create','UpdateMemberReport','update','body','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','MemberReport,\x20%s,\x20%s','request\x20sent','MemberReport,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result','catch','GetMemberReport','findAll','options','raw','where','attributes','limit','map','include'];(function(_0x49718a,_0x3dc34b){var _0x5b02ba=function(_0x47a1e2){while(--_0x47a1e2){_0x49718a['push'](_0x49718a['shift']());}};_0x5b02ba(++_0x3dc34b);}(_0xf569,0xd0));var _0x9f56=function(_0x15c421,_0x6366f7){_0x15c421=_0x15c421-0x0;var _0x5e5ed5=_0xf569[_0x15c421];return _0x5e5ed5;};'use strict';var _=require('lodash');var util=require(_0x9f56('0x0'));var moment=require(_0x9f56('0x1'));var BPromise=require(_0x9f56('0x2'));var rs=require(_0x9f56('0x3'));var fs=require('fs');var Redis=require(_0x9f56('0x4'));var db=require(_0x9f56('0x5'))['db'];var utils=require(_0x9f56('0x6'));var logger=require(_0x9f56('0x7'))('rpc');var config=require(_0x9f56('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x9f56('0x9')][_0x9f56('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5c5e5f,_0x1bcede,_0x73c3b4){return new BPromise(function(_0x5980f2,_0x46fd92){return client[_0x9f56('0xb')](_0x5c5e5f,_0x73c3b4)[_0x9f56('0xc')](function(_0x4f398b){logger['info'](_0x9f56('0xd'),_0x1bcede,_0x9f56('0xe'));logger['debug'](_0x9f56('0xf'),_0x1bcede,_0x9f56('0xe'),JSON[_0x9f56('0x10')](_0x4f398b));if(_0x4f398b['error']){if(_0x4f398b['error'][_0x9f56('0x11')]===0x1f4){logger['error'](_0x9f56('0xd'),_0x1bcede,_0x4f398b['error']['message']);return _0x46fd92(_0x4f398b[_0x9f56('0x12')][_0x9f56('0x13')]);}logger['error'](_0x9f56('0xd'),_0x1bcede,_0x4f398b[_0x9f56('0x12')][_0x9f56('0x13')]);return _0x5980f2(_0x4f398b[_0x9f56('0x12')][_0x9f56('0x13')]);}else{logger[_0x9f56('0x14')](_0x9f56('0xd'),_0x1bcede,_0x9f56('0xe'));_0x5980f2(_0x4f398b[_0x9f56('0x15')][_0x9f56('0x13')]);}})[_0x9f56('0x16')](function(_0x13ebfa){logger[_0x9f56('0x12')](_0x9f56('0xd'),_0x1bcede,_0x13ebfa);_0x46fd92(_0x13ebfa);});});}exports[_0x9f56('0x17')]=function(_0x21808b){var _0x1bbbae=this;return new Promise(function(_0x175dbe,_0x5bd236){return db['MemberReport'][_0x9f56('0x18')]({'raw':_0x21808b[_0x9f56('0x19')]?_0x21808b[_0x9f56('0x19')][_0x9f56('0x1a')]===undefined?!![]:![]:!![],'where':_0x21808b[_0x9f56('0x19')]?_0x21808b['options'][_0x9f56('0x1b')]||null:null,'attributes':_0x21808b[_0x9f56('0x19')]?_0x21808b[_0x9f56('0x19')][_0x9f56('0x1c')]||null:null,'limit':_0x21808b[_0x9f56('0x19')]?_0x21808b[_0x9f56('0x19')][_0x9f56('0x1d')]||null:null,'include':_0x21808b['options']?_0x21808b[_0x9f56('0x19')]['include']?_[_0x9f56('0x1e')](_0x21808b[_0x9f56('0x19')][_0x9f56('0x1f')],function(_0x29441b){return{'model':db[_0x29441b['model']],'as':_0x29441b['as'],'attributes':_0x29441b[_0x9f56('0x1c')],'include':_0x29441b[_0x9f56('0x1f')]?_['map'](_0x29441b[_0x9f56('0x1f')],function(_0x2c0905){return{'model':db[_0x2c0905['model']],'as':_0x2c0905['as'],'attributes':_0x2c0905[_0x9f56('0x1c')],'include':_0x2c0905[_0x9f56('0x1f')]?_['map'](_0x2c0905['include'],function(_0x42c371){return{'model':db[_0x42c371[_0x9f56('0x20')]],'as':_0x42c371['as'],'attributes':_0x42c371[_0x9f56('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x9f56('0xc')](function(_0x1c7c89){logger[_0x9f56('0x14')]('GetMemberReport',_0x21808b);logger[_0x9f56('0x21')](_0x9f56('0x17'),_0x21808b,JSON[_0x9f56('0x10')](_0x1c7c89));_0x175dbe(_0x1c7c89);})[_0x9f56('0x16')](function(_0x4b4066){logger[_0x9f56('0x12')](_0x9f56('0x17'),_0x4b4066[_0x9f56('0x13')],_0x21808b);_0x5bd236(_0x1bbbae[_0x9f56('0x12')](0x1f4,_0x4b4066[_0x9f56('0x13')]));});});};exports[_0x9f56('0x22')]=function(_0x37ad42){var _0x4a8a38=this;return new Promise(function(_0x4e21a6,_0x1f1907){return db[_0x9f56('0x23')][_0x9f56('0x24')](_0x37ad42['body'],{'raw':_0x37ad42['options']?_0x37ad42[_0x9f56('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x9f56('0xc')](function(_0x3bc1d2){logger[_0x9f56('0x14')](_0x9f56('0x22'),_0x37ad42);logger[_0x9f56('0x21')](_0x9f56('0x22'),_0x37ad42,JSON[_0x9f56('0x10')](_0x3bc1d2));_0x4e21a6(_0x3bc1d2);})['catch'](function(_0x1b6c83){logger['error'](_0x9f56('0x22'),_0x1b6c83[_0x9f56('0x13')],_0x37ad42);_0x1f1907(_0x4a8a38[_0x9f56('0x12')](0x1f4,_0x1b6c83[_0x9f56('0x13')]));});});};exports[_0x9f56('0x25')]=function(_0x138444){var _0x1629cd=this;return new Promise(function(_0xac9929,_0x4b938f){return db['MemberReport'][_0x9f56('0x26')](_0x138444[_0x9f56('0x27')],{'raw':_0x138444['options']?_0x138444['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x138444[_0x9f56('0x19')]?_0x138444[_0x9f56('0x19')][_0x9f56('0x1b')]||null:null,'attributes':_0x138444['options']?_0x138444[_0x9f56('0x19')][_0x9f56('0x1c')]||null:null,'limit':_0x138444[_0x9f56('0x19')]?_0x138444['options'][_0x9f56('0x1d')]||null:null})[_0x9f56('0xc')](function(_0x50991c){logger[_0x9f56('0x14')]('UpdateMemberReport',_0x138444);logger[_0x9f56('0x21')]('UpdateMemberReport',_0x138444,JSON['stringify'](_0x50991c));_0xac9929(_0x50991c);})['catch'](function(_0x2fb359){logger[_0x9f56('0x12')](_0x9f56('0x25'),_0x2fb359['message'],_0x138444);_0x4b938f(_0x1629cd['error'](0x1f4,_0x2fb359[_0x9f56('0x13')]));});});};
\ No newline at end of file
+var _0x0fcd=['map','model','debug','catch','CreateMemberReport','MemberReport','body','update','UpdateMemberReport','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','MemberReport,\x20%s,\x20%s','MemberReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','GetMemberReport','options','raw','where','attributes','limit','include'];(function(_0x1e393b,_0x355f6b){var _0x3d0bfe=function(_0x320830){while(--_0x320830){_0x1e393b['push'](_0x1e393b['shift']());}};_0x3d0bfe(++_0x355f6b);}(_0x0fcd,0x129));var _0xd0fc=function(_0x41243e,_0x19b98c){_0x41243e=_0x41243e-0x0;var _0x540ef9=_0x0fcd[_0x41243e];return _0x540ef9;};'use strict';var _=require('lodash');var util=require(_0xd0fc('0x0'));var moment=require(_0xd0fc('0x1'));var BPromise=require(_0xd0fc('0x2'));var rs=require(_0xd0fc('0x3'));var fs=require('fs');var Redis=require(_0xd0fc('0x4'));var db=require(_0xd0fc('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xd0fc('0x6'))(_0xd0fc('0x7'));var config=require(_0xd0fc('0x8'));var jayson=require(_0xd0fc('0x9'));var client=jayson['client'][_0xd0fc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5d93cc,_0x5efebd,_0x5ad581){return new BPromise(function(_0x5e42a1,_0x2f1e84){return client[_0xd0fc('0xb')](_0x5d93cc,_0x5ad581)[_0xd0fc('0xc')](function(_0x499260){logger[_0xd0fc('0xd')](_0xd0fc('0xe'),_0x5efebd,'request\x20sent');logger['debug'](_0xd0fc('0xf'),_0x5efebd,_0xd0fc('0x10'),JSON[_0xd0fc('0x11')](_0x499260));if(_0x499260['error']){if(_0x499260[_0xd0fc('0x12')]['code']===0x1f4){logger[_0xd0fc('0x12')](_0xd0fc('0xe'),_0x5efebd,_0x499260['error'][_0xd0fc('0x13')]);return _0x2f1e84(_0x499260[_0xd0fc('0x12')][_0xd0fc('0x13')]);}logger['error'](_0xd0fc('0xe'),_0x5efebd,_0x499260[_0xd0fc('0x12')][_0xd0fc('0x13')]);return _0x5e42a1(_0x499260['error']['message']);}else{logger[_0xd0fc('0xd')](_0xd0fc('0xe'),_0x5efebd,_0xd0fc('0x10'));_0x5e42a1(_0x499260['result']['message']);}})['catch'](function(_0x53e28d){logger[_0xd0fc('0x12')]('MemberReport,\x20%s,\x20%s',_0x5efebd,_0x53e28d);_0x2f1e84(_0x53e28d);});});}exports[_0xd0fc('0x14')]=function(_0x5703f1){var _0x2ab894=this;return new Promise(function(_0x20849d,_0xae6918){return db['MemberReport']['findAll']({'raw':_0x5703f1[_0xd0fc('0x15')]?_0x5703f1['options'][_0xd0fc('0x16')]===undefined?!![]:![]:!![],'where':_0x5703f1[_0xd0fc('0x15')]?_0x5703f1[_0xd0fc('0x15')][_0xd0fc('0x17')]||null:null,'attributes':_0x5703f1[_0xd0fc('0x15')]?_0x5703f1[_0xd0fc('0x15')][_0xd0fc('0x18')]||null:null,'limit':_0x5703f1['options']?_0x5703f1[_0xd0fc('0x15')][_0xd0fc('0x19')]||null:null,'include':_0x5703f1['options']?_0x5703f1['options'][_0xd0fc('0x1a')]?_[_0xd0fc('0x1b')](_0x5703f1[_0xd0fc('0x15')][_0xd0fc('0x1a')],function(_0x1cdb25){return{'model':db[_0x1cdb25[_0xd0fc('0x1c')]],'as':_0x1cdb25['as'],'attributes':_0x1cdb25[_0xd0fc('0x18')],'include':_0x1cdb25[_0xd0fc('0x1a')]?_[_0xd0fc('0x1b')](_0x1cdb25[_0xd0fc('0x1a')],function(_0x57d598){return{'model':db[_0x57d598[_0xd0fc('0x1c')]],'as':_0x57d598['as'],'attributes':_0x57d598[_0xd0fc('0x18')],'include':_0x57d598[_0xd0fc('0x1a')]?_[_0xd0fc('0x1b')](_0x57d598[_0xd0fc('0x1a')],function(_0x94cbd){return{'model':db[_0x94cbd[_0xd0fc('0x1c')]],'as':_0x94cbd['as'],'attributes':_0x94cbd[_0xd0fc('0x18')]};}):[]};}):[]};}):[]:[]})[_0xd0fc('0xc')](function(_0x4389a8){logger[_0xd0fc('0xd')](_0xd0fc('0x14'),_0x5703f1);logger[_0xd0fc('0x1d')](_0xd0fc('0x14'),_0x5703f1,JSON[_0xd0fc('0x11')](_0x4389a8));_0x20849d(_0x4389a8);})[_0xd0fc('0x1e')](function(_0x131fdc){logger[_0xd0fc('0x12')](_0xd0fc('0x14'),_0x131fdc[_0xd0fc('0x13')],_0x5703f1);_0xae6918(_0x2ab894['error'](0x1f4,_0x131fdc[_0xd0fc('0x13')]));});});};exports[_0xd0fc('0x1f')]=function(_0x438c6a){var _0x27255e=this;return new Promise(function(_0x43afe1,_0x18e2e4){return db[_0xd0fc('0x20')]['create'](_0x438c6a[_0xd0fc('0x21')],{'raw':_0x438c6a[_0xd0fc('0x15')]?_0x438c6a['options']['raw']===undefined?!![]:![]:!![]})[_0xd0fc('0xc')](function(_0x124509){logger[_0xd0fc('0xd')](_0xd0fc('0x1f'),_0x438c6a);logger[_0xd0fc('0x1d')]('CreateMemberReport',_0x438c6a,JSON[_0xd0fc('0x11')](_0x124509));_0x43afe1(_0x124509);})[_0xd0fc('0x1e')](function(_0x16f7f3){logger[_0xd0fc('0x12')](_0xd0fc('0x1f'),_0x16f7f3[_0xd0fc('0x13')],_0x438c6a);_0x18e2e4(_0x27255e[_0xd0fc('0x12')](0x1f4,_0x16f7f3[_0xd0fc('0x13')]));});});};exports['UpdateMemberReport']=function(_0xb213fe){var _0x5d193e=this;return new Promise(function(_0x4f8ef4,_0x4fef30){return db['MemberReport'][_0xd0fc('0x22')](_0xb213fe[_0xd0fc('0x21')],{'raw':_0xb213fe[_0xd0fc('0x15')]?_0xb213fe[_0xd0fc('0x15')][_0xd0fc('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xb213fe[_0xd0fc('0x15')]?_0xb213fe[_0xd0fc('0x15')][_0xd0fc('0x17')]||null:null,'attributes':_0xb213fe[_0xd0fc('0x15')]?_0xb213fe['options'][_0xd0fc('0x18')]||null:null,'limit':_0xb213fe['options']?_0xb213fe['options'][_0xd0fc('0x19')]||null:null})[_0xd0fc('0xc')](function(_0x56bb7b){logger[_0xd0fc('0xd')](_0xd0fc('0x23'),_0xb213fe);logger[_0xd0fc('0x1d')](_0xd0fc('0x23'),_0xb213fe,JSON[_0xd0fc('0x11')](_0x56bb7b));_0x4f8ef4(_0x56bb7b);})[_0xd0fc('0x1e')](function(_0x4245a8){logger[_0xd0fc('0x12')](_0xd0fc('0x23'),_0x4245a8[_0xd0fc('0x13')],_0xb213fe);_0x4fef30(_0x5d193e[_0xd0fc('0x12')](0x1f4,_0x4245a8[_0xd0fc('0x13')]));});});};
\ No newline at end of file
index c87eb61..7c490ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbf1=['./migration.controller','get','index','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x1043b6,_0x2a1e39){var _0x575312=function(_0x2296bd){while(--_0x2296bd){_0x1043b6['push'](_0x1043b6['shift']());}};_0x575312(++_0x2a1e39);}(_0xfbf1,0x1a3));var _0x1fbf=function(_0x2aaf5e,_0x5a18f9){_0x2aaf5e=_0x2aaf5e-0x0;var _0x28c659=_0xfbf1[_0x2aaf5e];return _0x28c659;};'use strict';var multer=require(_0x1fbf('0x0'));var util=require(_0x1fbf('0x1'));var path=require(_0x1fbf('0x2'));var timeout=require(_0x1fbf('0x3'));var express=require(_0x1fbf('0x4'));var router=express[_0x1fbf('0x5')]();var fs_extra=require(_0x1fbf('0x6'));var auth=require(_0x1fbf('0x7'));var interaction=require(_0x1fbf('0x8'));var config=require(_0x1fbf('0x9'));var controller=require(_0x1fbf('0xa'));router[_0x1fbf('0xb')]('/',controller[_0x1fbf('0xc')]);module['exports']=router;
\ No newline at end of file
+var _0x58d3=['./migration.controller','get','index','exports','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x2cbad2,_0x222e68){var _0x1ef1e9=function(_0x5a760b){while(--_0x5a760b){_0x2cbad2['push'](_0x2cbad2['shift']());}};_0x1ef1e9(++_0x222e68);}(_0x58d3,0xd4));var _0x358d=function(_0x27266e,_0x5328ac){_0x27266e=_0x27266e-0x0;var _0x2a3065=_0x58d3[_0x27266e];return _0x2a3065;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x358d('0x0'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x358d('0x1'));var interaction=require(_0x358d('0x2'));var config=require(_0x358d('0x3'));var controller=require(_0x358d('0x4'));router[_0x358d('0x5')]('/',controller[_0x358d('0x6')]);module[_0x358d('0x7')]=router;
\ No newline at end of file
index d275331..b74e13c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7306=['version','sequelize','STRING'];(function(_0x29f993,_0x5075f5){var _0x453972=function(_0x4108bc){while(--_0x4108bc){_0x29f993['push'](_0x29f993['shift']());}};_0x453972(++_0x5075f5);}(_0x7306,0xd9));var _0x6730=function(_0x1eaeaa,_0xa7971b){_0x1eaeaa=_0x1eaeaa-0x0;var _0x2cbda8=_0x7306[_0x1eaeaa];return _0x2cbda8;};'use strict';var Sequelize=require(_0x6730('0x0'));module['exports']={'version':{'type':Sequelize[_0x6730('0x1')],'unique':_0x6730('0x2')}};
\ No newline at end of file
+var _0x28b8=['version','sequelize','exports','STRING'];(function(_0x301d69,_0x58c4a2){var _0x4108ae=function(_0x28a085){while(--_0x28a085){_0x301d69['push'](_0x301d69['shift']());}};_0x4108ae(++_0x58c4a2);}(_0x28b8,0x79));var _0x828b=function(_0x2d73da,_0x4e9643){_0x2d73da=_0x2d73da-0x0;var _0x2d06af=_0x28b8[_0x2d73da];return _0x2d06af;};'use strict';var Sequelize=require(_0x828b('0x0'));module[_0x828b('0x1')]={'version':{'type':Sequelize[_0x828b('0x2')],'unique':_0x828b('0x3')}};
\ No newline at end of file
index 83cb64c..615f031 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb242=['bluebird','mustache','sox','to-csv','fs-extra','lodash','squel','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','error','stack','Migration','rawAttributes','fieldName','type','key','model','map','name','query','keys','filters','attributes','intersection','fields','length','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','rimraf','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x35be81,_0x420fdd){var _0x3c5dcb=function(_0x5efb21){while(--_0x5efb21){_0x35be81['push'](_0x35be81['shift']());}};_0x3c5dcb(++_0x420fdd);}(_0xb242,0x1f3));var _0x2b24=function(_0x4c1ec2,_0x4f42b7){_0x4c1ec2=_0x4c1ec2-0x0;var _0x3f6f1c=_0xb242[_0x4c1ec2];return _0x3f6f1c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2b24('0x0'));var zipdir=require(_0x2b24('0x1'));var jsonpatch=require(_0x2b24('0x2'));var rp=require(_0x2b24('0x3'));var moment=require(_0x2b24('0x4'));var BPromise=require(_0x2b24('0x5'));var Mustache=require(_0x2b24('0x6'));var util=require('util');var path=require('path');var sox=require(_0x2b24('0x7'));var csv=require(_0x2b24('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2b24('0x9'));var _=require(_0x2b24('0xa'));var squel=require(_0x2b24('0xb'));var crypto=require('crypto');var jsforce=require(_0x2b24('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x2b24('0x8'));var querystring=require(_0x2b24('0xd'));var Papa=require('papaparse');var Redis=require(_0x2b24('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x2b24('0xf'));var as=require(_0x2b24('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x2b24('0x11'));var utils=require('../../config/utils');var config=require(_0x2b24('0x12'));var licenseUtil=require(_0x2b24('0x13'));var db=require(_0x2b24('0x14'))['db'];function respondWithStatusCode(_0x3917e5,_0x57df0e){_0x57df0e=_0x57df0e||0xcc;return function(_0x528d77){if(_0x528d77){return _0x3917e5[_0x2b24('0x15')](_0x57df0e);}return _0x3917e5[_0x2b24('0x16')](_0x57df0e)[_0x2b24('0x17')]();};}function respondWithResult(_0x1e44db,_0x1a99ea){_0x1a99ea=_0x1a99ea||0xc8;return function(_0x5f5b96){if(_0x5f5b96){return _0x1e44db[_0x2b24('0x16')](_0x1a99ea)[_0x2b24('0x18')](_0x5f5b96);}};}function respondWithFilteredResult(_0x56e1e5,_0x38cd5d){return function(_0x6038d2){if(_0x6038d2){var _0x486d9a=typeof _0x38cd5d[_0x2b24('0x19')]===_0x2b24('0x1a')&&typeof _0x38cd5d[_0x2b24('0x1b')]===_0x2b24('0x1a');var _0x5dea21=_0x6038d2[_0x2b24('0x1c')];var _0x2815dc=_0x486d9a?0x0:_0x38cd5d[_0x2b24('0x19')];var _0x4951af=_0x486d9a?_0x6038d2[_0x2b24('0x1c')]:_0x38cd5d[_0x2b24('0x19')]+_0x38cd5d[_0x2b24('0x1b')];var _0x4d8e4f;if(_0x4951af>=_0x5dea21){_0x4951af=_0x5dea21;_0x4d8e4f=0xc8;}else{_0x4d8e4f=0xce;}_0x56e1e5['status'](_0x4d8e4f);return _0x56e1e5[_0x2b24('0x1d')](_0x2b24('0x1e'),_0x2815dc+'-'+_0x4951af+'/'+_0x5dea21)[_0x2b24('0x18')](_0x6038d2);}return null;};}function patchUpdates(_0x357596){return function(_0x5574ef){try{jsonpatch[_0x2b24('0x1f')](_0x5574ef,_0x357596,!![]);}catch(_0x271ca7){return BPromise[_0x2b24('0x20')](_0x271ca7);}return _0x5574ef[_0x2b24('0x21')]();};}function saveUpdates(_0x5df507,_0x504ecf){return function(_0x22c8c5){if(_0x22c8c5){return _0x22c8c5['update'](_0x5df507)['then'](function(_0x4daa9d){return _0x4daa9d;});}return null;};}function removeEntity(_0x5973a1,_0x2acfcf){return function(_0x2c0665){if(_0x2c0665){return _0x2c0665[_0x2b24('0x22')]()[_0x2b24('0x23')](function(){_0x5973a1['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4d25e4,_0x1fde97){return function(_0x20801c){if(!_0x20801c){_0x4d25e4[_0x2b24('0x15')](0x194);}return _0x20801c;};}function handleError(_0x191318,_0x55fce4){_0x55fce4=_0x55fce4||0x1f4;return function(_0x5c9efb){logger[_0x2b24('0x24')](_0x5c9efb[_0x2b24('0x25')]);if(_0x5c9efb['name']){delete _0x5c9efb['name'];}_0x191318[_0x2b24('0x16')](_0x55fce4)['send'](_0x5c9efb);};}exports['index']=function(_0x2a9a05,_0x476753){var _0x12604d={},_0x3183cd={},_0x4e6991={'count':0x0,'rows':[]};var _0x652aa3=_['map'](db[_0x2b24('0x26')][_0x2b24('0x27')],function(_0x402fa9){return{'name':_0x402fa9[_0x2b24('0x28')],'type':_0x402fa9[_0x2b24('0x29')][_0x2b24('0x2a')]};});_0x3183cd[_0x2b24('0x2b')]=_[_0x2b24('0x2c')](_0x652aa3,_0x2b24('0x2d'));_0x3183cd[_0x2b24('0x2e')]=_[_0x2b24('0x2f')](_0x2a9a05['query']);_0x3183cd[_0x2b24('0x30')]=_['intersection'](_0x3183cd[_0x2b24('0x2b')],_0x3183cd['query']);_0x12604d[_0x2b24('0x31')]=_[_0x2b24('0x32')](_0x3183cd['model'],qs[_0x2b24('0x33')](_0x2a9a05[_0x2b24('0x2e')]['fields']));_0x12604d[_0x2b24('0x31')]=_0x12604d[_0x2b24('0x31')][_0x2b24('0x34')]?_0x12604d['attributes']:_0x3183cd[_0x2b24('0x2b')];if(!_0x2a9a05[_0x2b24('0x2e')]['hasOwnProperty'](_0x2b24('0x35'))){_0x12604d[_0x2b24('0x1b')]=qs['limit'](_0x2a9a05[_0x2b24('0x2e')][_0x2b24('0x1b')]);_0x12604d['offset']=qs[_0x2b24('0x19')](_0x2a9a05[_0x2b24('0x2e')][_0x2b24('0x19')]);}_0x12604d['order']=qs[_0x2b24('0x36')](_0x2a9a05[_0x2b24('0x2e')][_0x2b24('0x36')]);_0x12604d[_0x2b24('0x37')]=qs['filters'](_[_0x2b24('0x38')](_0x2a9a05[_0x2b24('0x2e')],_0x3183cd[_0x2b24('0x30')]),_0x652aa3);if(_0x2a9a05[_0x2b24('0x2e')][_0x2b24('0x39')]){_0x12604d[_0x2b24('0x37')]=_['merge'](_0x12604d[_0x2b24('0x37')],{'$or':_[_0x2b24('0x2c')](_0x652aa3,function(_0x181da8){if(_0x181da8[_0x2b24('0x29')]!==_0x2b24('0x3a')){var _0x5e284e={};_0x5e284e[_0x181da8[_0x2b24('0x2d')]]={'$like':'%'+_0x2a9a05[_0x2b24('0x2e')]['filter']+'%'};return _0x5e284e;}})});}_0x12604d=_[_0x2b24('0x3b')]({},_0x12604d,_0x2a9a05[_0x2b24('0x3c')]);var _0x54c3db={'where':_0x12604d[_0x2b24('0x37')]};return db[_0x2b24('0x26')][_0x2b24('0x1c')](_0x54c3db)[_0x2b24('0x23')](function(_0x1ff337){_0x4e6991[_0x2b24('0x1c')]=_0x1ff337;if(_0x2a9a05['query'][_0x2b24('0x3d')]){_0x12604d[_0x2b24('0x3e')]=[{'all':!![]}];}return db['Migration']['findAll'](_0x12604d);})[_0x2b24('0x23')](function(_0x32c29b){_0x4e6991['rows']=_0x32c29b;return _0x4e6991;})['then'](respondWithFilteredResult(_0x476753,_0x12604d))['catch'](handleError(_0x476753,null));};
\ No newline at end of file
+var _0x6e7a=['update','then','destroy','error','stack','name','send','map','Migration','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','filters','pick','filter','merge','type','options','includeAll','rows','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','undefined','count','offset','set','Content-Range','apply','reject'];(function(_0x172747,_0x1732bd){var _0x509692=function(_0x448c56){while(--_0x448c56){_0x172747['push'](_0x172747['shift']());}};_0x509692(++_0x1732bd);}(_0x6e7a,0xe9));var _0xa6e7=function(_0x56dd58,_0xb1287d){_0x56dd58=_0x56dd58-0x0;var _0x103e75=_0x6e7a[_0x56dd58];return _0x103e75;};'use strict';var emlformat=require(_0xa6e7('0x0'));var rimraf=require(_0xa6e7('0x1'));var zipdir=require(_0xa6e7('0x2'));var jsonpatch=require(_0xa6e7('0x3'));var rp=require(_0xa6e7('0x4'));var moment=require('moment');var BPromise=require(_0xa6e7('0x5'));var Mustache=require(_0xa6e7('0x6'));var util=require(_0xa6e7('0x7'));var path=require(_0xa6e7('0x8'));var sox=require(_0xa6e7('0x9'));var csv=require(_0xa6e7('0xa'));var ejs=require(_0xa6e7('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa6e7('0xc'));var squel=require(_0xa6e7('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa6e7('0xe'));var toCsv=require(_0xa6e7('0xa'));var querystring=require(_0xa6e7('0xf'));var Papa=require(_0xa6e7('0x10'));var Redis=require(_0xa6e7('0x11'));var authService=require(_0xa6e7('0x12'));var qs=require(_0xa6e7('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa6e7('0x14'));var logger=require(_0xa6e7('0x15'))('api');var utils=require(_0xa6e7('0x16'));var config=require(_0xa6e7('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xa6e7('0x18'))['db'];function respondWithStatusCode(_0x5a39b0,_0x5a02dd){_0x5a02dd=_0x5a02dd||0xcc;return function(_0x4ac133){if(_0x4ac133){return _0x5a39b0[_0xa6e7('0x19')](_0x5a02dd);}return _0x5a39b0[_0xa6e7('0x1a')](_0x5a02dd)[_0xa6e7('0x1b')]();};}function respondWithResult(_0xded8c0,_0x369187){_0x369187=_0x369187||0xc8;return function(_0xc3ff6){if(_0xc3ff6){return _0xded8c0[_0xa6e7('0x1a')](_0x369187)['json'](_0xc3ff6);}};}function respondWithFilteredResult(_0x32decf,_0x594661){return function(_0x4619e9){if(_0x4619e9){var _0x303529=typeof _0x594661['offset']===_0xa6e7('0x1c')&&typeof _0x594661['limit']===_0xa6e7('0x1c');var _0x4f5dbd=_0x4619e9[_0xa6e7('0x1d')];var _0x232468=_0x303529?0x0:_0x594661['offset'];var _0xfa193a=_0x303529?_0x4619e9[_0xa6e7('0x1d')]:_0x594661[_0xa6e7('0x1e')]+_0x594661['limit'];var _0x2ceb1d;if(_0xfa193a>=_0x4f5dbd){_0xfa193a=_0x4f5dbd;_0x2ceb1d=0xc8;}else{_0x2ceb1d=0xce;}_0x32decf[_0xa6e7('0x1a')](_0x2ceb1d);return _0x32decf[_0xa6e7('0x1f')](_0xa6e7('0x20'),_0x232468+'-'+_0xfa193a+'/'+_0x4f5dbd)['json'](_0x4619e9);}return null;};}function patchUpdates(_0x5d5f59){return function(_0x1bdff8){try{jsonpatch[_0xa6e7('0x21')](_0x1bdff8,_0x5d5f59,!![]);}catch(_0x5b3b64){return BPromise[_0xa6e7('0x22')](_0x5b3b64);}return _0x1bdff8['save']();};}function saveUpdates(_0x1fc3d1,_0x1a3bba){return function(_0x439748){if(_0x439748){return _0x439748[_0xa6e7('0x23')](_0x1fc3d1)[_0xa6e7('0x24')](function(_0xec06f9){return _0xec06f9;});}return null;};}function removeEntity(_0x88ac3e,_0x5c978f){return function(_0x1c1437){if(_0x1c1437){return _0x1c1437[_0xa6e7('0x25')]()[_0xa6e7('0x24')](function(){_0x88ac3e[_0xa6e7('0x1a')](0xcc)[_0xa6e7('0x1b')]();});}};}function handleEntityNotFound(_0x65505d,_0x835799){return function(_0x109174){if(!_0x109174){_0x65505d[_0xa6e7('0x19')](0x194);}return _0x109174;};}function handleError(_0x49fa99,_0x55d442){_0x55d442=_0x55d442||0x1f4;return function(_0x3ae2fe){logger[_0xa6e7('0x26')](_0x3ae2fe[_0xa6e7('0x27')]);if(_0x3ae2fe[_0xa6e7('0x28')]){delete _0x3ae2fe[_0xa6e7('0x28')];}_0x49fa99['status'](_0x55d442)[_0xa6e7('0x29')](_0x3ae2fe);};}exports['index']=function(_0x5ebcc3,_0x5bd304){var _0x2ebc95={},_0x523759={},_0xff9865={'count':0x0,'rows':[]};var _0x383957=_[_0xa6e7('0x2a')](db[_0xa6e7('0x2b')]['rawAttributes'],function(_0xa6fbed){return{'name':_0xa6fbed[_0xa6e7('0x2c')],'type':_0xa6fbed['type'][_0xa6e7('0x2d')]};});_0x523759[_0xa6e7('0x2e')]=_[_0xa6e7('0x2a')](_0x383957,'name');_0x523759[_0xa6e7('0x2f')]=_[_0xa6e7('0x30')](_0x5ebcc3[_0xa6e7('0x2f')]);_0x523759['filters']=_[_0xa6e7('0x31')](_0x523759[_0xa6e7('0x2e')],_0x523759[_0xa6e7('0x2f')]);_0x2ebc95[_0xa6e7('0x32')]=_[_0xa6e7('0x31')](_0x523759['model'],qs[_0xa6e7('0x33')](_0x5ebcc3[_0xa6e7('0x2f')]['fields']));_0x2ebc95[_0xa6e7('0x32')]=_0x2ebc95[_0xa6e7('0x32')][_0xa6e7('0x34')]?_0x2ebc95['attributes']:_0x523759[_0xa6e7('0x2e')];if(!_0x5ebcc3[_0xa6e7('0x2f')][_0xa6e7('0x35')](_0xa6e7('0x36'))){_0x2ebc95['limit']=qs[_0xa6e7('0x37')](_0x5ebcc3['query'][_0xa6e7('0x37')]);_0x2ebc95[_0xa6e7('0x1e')]=qs[_0xa6e7('0x1e')](_0x5ebcc3['query']['offset']);}_0x2ebc95['order']=qs[_0xa6e7('0x38')](_0x5ebcc3[_0xa6e7('0x2f')][_0xa6e7('0x38')]);_0x2ebc95[_0xa6e7('0x39')]=qs[_0xa6e7('0x3a')](_[_0xa6e7('0x3b')](_0x5ebcc3[_0xa6e7('0x2f')],_0x523759[_0xa6e7('0x3a')]),_0x383957);if(_0x5ebcc3[_0xa6e7('0x2f')][_0xa6e7('0x3c')]){_0x2ebc95[_0xa6e7('0x39')]=_[_0xa6e7('0x3d')](_0x2ebc95['where'],{'$or':_[_0xa6e7('0x2a')](_0x383957,function(_0x342028){if(_0x342028[_0xa6e7('0x3e')]!=='VIRTUAL'){var _0x535a81={};_0x535a81[_0x342028[_0xa6e7('0x28')]]={'$like':'%'+_0x5ebcc3[_0xa6e7('0x2f')]['filter']+'%'};return _0x535a81;}})});}_0x2ebc95=_[_0xa6e7('0x3d')]({},_0x2ebc95,_0x5ebcc3[_0xa6e7('0x3f')]);var _0x39bdd2={'where':_0x2ebc95[_0xa6e7('0x39')]};return db[_0xa6e7('0x2b')][_0xa6e7('0x1d')](_0x39bdd2)[_0xa6e7('0x24')](function(_0x36d725){_0xff9865[_0xa6e7('0x1d')]=_0x36d725;if(_0x5ebcc3[_0xa6e7('0x2f')][_0xa6e7('0x40')]){_0x2ebc95['include']=[{'all':!![]}];}return db['Migration']['findAll'](_0x2ebc95);})['then'](function(_0x44db27){_0xff9865[_0xa6e7('0x41')]=_0x44db27;return _0xff9865;})['then'](respondWithFilteredResult(_0x5bd304,_0x2ebc95))[_0xa6e7('0x42')](handleError(_0x5bd304,null));};
\ No newline at end of file
index d504222..7857276 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e8d=['Migration','lodash','util','moment','request-promise','path','rimraf','exports'];(function(_0x49b5e5,_0x1bae46){var _0x5b0e11=function(_0x11a761){while(--_0x11a761){_0x49b5e5['push'](_0x49b5e5['shift']());}};_0x5b0e11(++_0x1bae46);}(_0x1e8d,0x101));var _0xd1e8=function(_0x5d0a1d,_0x20d127){_0x5d0a1d=_0x5d0a1d-0x0;var _0x5768e0=_0x1e8d[_0x5d0a1d];return _0x5768e0;};'use strict';var _=require(_0xd1e8('0x0'));var util=require(_0xd1e8('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xd1e8('0x2'));var BPromise=require('bluebird');var rp=require(_0xd1e8('0x3'));var fs=require('fs');var path=require(_0xd1e8('0x4'));var rimraf=require(_0xd1e8('0x5'));var config=require('../../config/environment');var attributes=require('./migration.attributes');module[_0xd1e8('0x6')]=function(_0x5eafaa,_0x32b0e0){return _0x5eafaa['define'](_0xd1e8('0x7'),attributes,{'tableName':'migrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xced6=['../../config/environment','./migration.attributes','exports','define','Migration','migrations','lodash','../../config/logger','api','request-promise'];(function(_0x509059,_0x4d9202){var _0x4c2479=function(_0x4319dc){while(--_0x4319dc){_0x509059['push'](_0x509059['shift']());}};_0x4c2479(++_0x4d9202);}(_0xced6,0x1f0));var _0x6ced=function(_0x3b6508,_0x267ba6){_0x3b6508=_0x3b6508-0x0;var _0x53b2ad=_0xced6[_0x3b6508];return _0x53b2ad;};'use strict';var _=require(_0x6ced('0x0'));var util=require('util');var logger=require(_0x6ced('0x1'))(_0x6ced('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6ced('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x6ced('0x4'));var attributes=require(_0x6ced('0x5'));module[_0x6ced('0x6')]=function(_0x468f53,_0x528f20){return _0x468f53[_0x6ced('0x7')](_0x6ced('0x8'),attributes,{'tableName':_0x6ced('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 167135c..2aa0e0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fce=['Migration,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/logger','rpc','client','then','info','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','error'];(function(_0x2e2b8e,_0x365ada){var _0x5d2b16=function(_0x164e7a){while(--_0x164e7a){_0x2e2b8e['push'](_0x2e2b8e['shift']());}};_0x5d2b16(++_0x365ada);}(_0x7fce,0xdc));var _0xe7fc=function(_0x3e71c2,_0xe4c464){_0x3e71c2=_0x3e71c2-0x0;var _0x1c879f=_0x7fce[_0x3e71c2];return _0x1c879f;};'use strict';var _=require(_0xe7fc('0x0'));var util=require(_0xe7fc('0x1'));var moment=require(_0xe7fc('0x2'));var BPromise=require('bluebird');var rs=require(_0xe7fc('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe7fc('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xe7fc('0x5'))(_0xe7fc('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xe7fc('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4665f6,_0x161dca,_0x296b2e){return new BPromise(function(_0x19eeef,_0x22fabf){return client['request'](_0x4665f6,_0x296b2e)[_0xe7fc('0x8')](function(_0x4a1209){logger[_0xe7fc('0x9')]('Migration,\x20%s,\x20%s',_0x161dca,_0xe7fc('0xa'));logger[_0xe7fc('0xb')](_0xe7fc('0xc'),_0x161dca,_0xe7fc('0xa'),JSON['stringify'](_0x4a1209));if(_0x4a1209[_0xe7fc('0xd')]){if(_0x4a1209[_0xe7fc('0xd')]['code']===0x1f4){logger['error'](_0xe7fc('0xe'),_0x161dca,_0x4a1209['error'][_0xe7fc('0xf')]);return _0x22fabf(_0x4a1209['error']['message']);}logger[_0xe7fc('0xd')](_0xe7fc('0xe'),_0x161dca,_0x4a1209[_0xe7fc('0xd')][_0xe7fc('0xf')]);return _0x19eeef(_0x4a1209[_0xe7fc('0xd')]['message']);}else{logger[_0xe7fc('0x9')]('Migration,\x20%s,\x20%s',_0x161dca,'request\x20sent');_0x19eeef(_0x4a1209[_0xe7fc('0x10')][_0xe7fc('0xf')]);}})[_0xe7fc('0x11')](function(_0x3a44a6){logger['error']('Migration,\x20%s,\x20%s',_0x161dca,_0x3a44a6);_0x22fabf(_0x3a44a6);});});}
\ No newline at end of file
+var _0x5db8=['info','Migration,\x20%s,\x20%s','request\x20sent','debug','error','message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','then'];(function(_0x2b5eae,_0x55010d){var _0x5f3ac9=function(_0x397bfc){while(--_0x397bfc){_0x2b5eae['push'](_0x2b5eae['shift']());}};_0x5f3ac9(++_0x55010d);}(_0x5db8,0xbb));var _0x85db=function(_0x503ffd,_0x8ecde){_0x503ffd=_0x503ffd-0x0;var _0x160437=_0x5db8[_0x503ffd];return _0x160437;};'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')]('Migration,\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')]('Migration,\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);});});}
\ No newline at end of file
index f4550c4..db9477c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e4b=['../../config/environment','./network.controller','isAuthenticated','index','get','/:id','create','put','update','delete','destroy','exports','multer','util','path','express'];(function(_0x52e9b6,_0x4c6b01){var _0x22d53d=function(_0x3d98a3){while(--_0x3d98a3){_0x52e9b6['push'](_0x52e9b6['shift']());}};_0x22d53d(++_0x4c6b01);}(_0x0e4b,0xdc));var _0xb0e4=function(_0x3975e7,_0x16a167){_0x3975e7=_0x3975e7-0x0;var _0x213145=_0x0e4b[_0x3975e7];return _0x213145;};'use strict';var multer=require(_0xb0e4('0x0'));var util=require(_0xb0e4('0x1'));var path=require(_0xb0e4('0x2'));var timeout=require('connect-timeout');var express=require(_0xb0e4('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(_0xb0e4('0x4'));var controller=require(_0xb0e4('0x5'));router['get']('/',auth[_0xb0e4('0x6')](),controller[_0xb0e4('0x7')]);router[_0xb0e4('0x8')](_0xb0e4('0x9'),auth[_0xb0e4('0x6')](),controller['show']);router['post']('/',auth[_0xb0e4('0x6')](),controller[_0xb0e4('0xa')]);router[_0xb0e4('0xb')](_0xb0e4('0x9'),auth[_0xb0e4('0x6')](),controller[_0xb0e4('0xc')]);router[_0xb0e4('0xd')](_0xb0e4('0x9'),auth[_0xb0e4('0x6')](),controller[_0xb0e4('0xe')]);module[_0xb0e4('0xf')]=router;
\ No newline at end of file
+var _0x3946=['isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./network.controller'];(function(_0x18cac4,_0x57a4d5){var _0x2227c6=function(_0x72934d){while(--_0x72934d){_0x18cac4['push'](_0x18cac4['shift']());}};_0x2227c6(++_0x57a4d5);}(_0x3946,0x10e));var _0x6394=function(_0x5a2f34,_0x4857a1){_0x5a2f34=_0x5a2f34-0x0;var _0x5452fe=_0x3946[_0x5a2f34];return _0x5452fe;};'use strict';var multer=require(_0x6394('0x0'));var util=require(_0x6394('0x1'));var path=require(_0x6394('0x2'));var timeout=require(_0x6394('0x3'));var express=require(_0x6394('0x4'));var router=express[_0x6394('0x5')]();var fs_extra=require(_0x6394('0x6'));var auth=require(_0x6394('0x7'));var interaction=require(_0x6394('0x8'));var config=require('../../config/environment');var controller=require(_0x6394('0x9'));router['get']('/',auth[_0x6394('0xa')](),controller[_0x6394('0xb')]);router['get'](_0x6394('0xc'),auth[_0x6394('0xa')](),controller[_0x6394('0xd')]);router[_0x6394('0xe')]('/',auth[_0x6394('0xa')](),controller[_0x6394('0xf')]);router[_0x6394('0x10')](_0x6394('0xc'),auth[_0x6394('0xa')](),controller[_0x6394('0x11')]);router[_0x6394('0x12')]('/:id',auth[_0x6394('0xa')](),controller[_0x6394('0x13')]);module['exports']=router;
\ No newline at end of file
index 317b579..bdb28c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fa8=['sequelize','exports','ENUM','localnet','stun','turn'];(function(_0x3fecba,_0x25f1e9){var _0x4e06cb=function(_0x3c347b){while(--_0x3c347b){_0x3fecba['push'](_0x3fecba['shift']());}};_0x4e06cb(++_0x25f1e9);}(_0x3fa8,0x1d4));var _0x83fa=function(_0x38e30a,_0x1f92c3){_0x38e30a=_0x38e30a-0x0;var _0x40a899=_0x3fa8[_0x38e30a];return _0x40a899;};'use strict';var Sequelize=require(_0x83fa('0x0'));module[_0x83fa('0x1')]={'type':{'type':Sequelize[_0x83fa('0x2')](_0x83fa('0x3'),'externip',_0x83fa('0x4'),_0x83fa('0x5'))},'value':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x78f5=['sequelize','ENUM','localnet','stun','turn','STRING'];(function(_0x3d94a6,_0x6b5972){var _0x249bad=function(_0x1fc85d){while(--_0x1fc85d){_0x3d94a6['push'](_0x3d94a6['shift']());}};_0x249bad(++_0x6b5972);}(_0x78f5,0x9c));var _0x578f=function(_0xd3b0ac,_0x2f5065){_0xd3b0ac=_0xd3b0ac-0x0;var _0x3d773e=_0x78f5[_0xd3b0ac];return _0x3d773e;};'use strict';var Sequelize=require(_0x578f('0x0'));module['exports']={'type':{'type':Sequelize[_0x578f('0x1')](_0x578f('0x2'),'externip',_0x578f('0x3'),_0x578f('0x4'))},'value':{'type':Sequelize[_0x578f('0x5')]},'username':{'type':Sequelize[_0x578f('0x5')]},'password':{'type':Sequelize[_0x578f('0x5')]}};
\ No newline at end of file
index 3457d8c..b2ff5e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0748=['stack','name','send','map','rawAttributes','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','type','VIRTUAL','options','Network','includeAll','include','findAll','rows','show','params','keys','merge','find','body','toUpperCase','STUN','readFileSync','join','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','create','res_stun_monitor.so','TURN','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','root','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','server/files/templates/network.ejs','chan_sip.so','util','path','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','jayson/promise','http','request','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','status','json','offset','undefined','limit','count','set','Content-Range','update','destroy','sendStatus'];(function(_0x4ea69d,_0x290f53){var _0x5318e0=function(_0x18e081){while(--_0x18e081){_0x4ea69d['push'](_0x4ea69d['shift']());}};_0x5318e0(++_0x290f53);}(_0x0748,0x134));var _0x8074=function(_0x494d1f,_0x3f72ff){_0x494d1f=_0x494d1f-0x0;var _0x457b6e=_0x0748[_0x494d1f];return _0x457b6e;};'use strict';var util=require(_0x8074('0x0'));var path=require(_0x8074('0x1'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x8074('0x2'));var qs=require(_0x8074('0x3'));var logger=require(_0x8074('0x4'))(_0x8074('0x5'));var config=require(_0x8074('0x6'));var db=require('../../mysqldb')['db'];var jayson=require(_0x8074('0x7'));var client=jayson['client'][_0x8074('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4988b9,_0x2eb66f,_0x13b9f8,_0x37bc25){return new Promise(function(_0x2bfb34,_0xa3e204){var _0x5ab38b=_0x37bc25||client;return _0x5ab38b[_0x8074('0x9')](_0x4988b9,_0x13b9f8)[_0x8074('0xa')](function(_0x4ac3ea){logger[_0x8074('0xb')](_0x8074('0xc'),_0x2eb66f,_0x8074('0xd'));logger[_0x8074('0xe')](_0x8074('0xf'),_0x2eb66f,'request\x20sent',JSON['stringify'](_0x4ac3ea));if(_0x4ac3ea[_0x8074('0x10')]){if(_0x4ac3ea[_0x8074('0x10')][_0x8074('0x11')]===0x1f4){logger[_0x8074('0x10')]('Network,\x20%s,\x20%s',_0x2eb66f,_0x4ac3ea[_0x8074('0x10')][_0x8074('0x12')]);return _0xa3e204(_0x4ac3ea[_0x8074('0x10')]['message']);}logger['error'](_0x8074('0xc'),_0x2eb66f,_0x4ac3ea[_0x8074('0x10')][_0x8074('0x12')]);return _0x2bfb34(_0x4ac3ea[_0x8074('0x10')][_0x8074('0x12')]);}else{logger[_0x8074('0xb')](_0x8074('0xc'),_0x2eb66f,_0x8074('0xd'));_0x2bfb34(_0x4ac3ea[_0x8074('0x13')][_0x8074('0x12')]);}})[_0x8074('0x14')](function(_0xf7d998){logger[_0x8074('0x10')](_0x8074('0xc'),_0x2eb66f,_0xf7d998);_0xa3e204(_0xf7d998);});});}function respondWithResult(_0x51f929,_0x2b8ca4){_0x2b8ca4=_0x2b8ca4||0xc8;return function(_0xbd00ef){if(_0xbd00ef){return _0x51f929[_0x8074('0x15')](_0x2b8ca4)[_0x8074('0x16')](_0xbd00ef);}};}function respondWithFilteredResult(_0x182ce0,_0x22b19a){return function(_0x1178cc){if(_0x1178cc){var _0x2b784a=typeof _0x22b19a[_0x8074('0x17')]===_0x8074('0x18')&&typeof _0x22b19a[_0x8074('0x19')]===_0x8074('0x18');var _0x50dadf=_0x1178cc[_0x8074('0x1a')];var _0x35be77=_0x2b784a?0x0:_0x22b19a[_0x8074('0x17')];var _0x45c71f=_0x2b784a?_0x1178cc[_0x8074('0x1a')]:_0x22b19a['offset']+_0x22b19a[_0x8074('0x19')];var _0x20b5e2;if(_0x45c71f>=_0x50dadf){_0x45c71f=_0x50dadf;_0x20b5e2=0xc8;}else{_0x20b5e2=0xce;}_0x182ce0[_0x8074('0x15')](_0x20b5e2);return _0x182ce0[_0x8074('0x1b')](_0x8074('0x1c'),_0x35be77+'-'+_0x45c71f+'/'+_0x50dadf)['json'](_0x1178cc);}return null;};}function saveUpdates(_0x58a988){return function(_0x22e58b){if(_0x22e58b){return _0x22e58b[_0x8074('0x1d')](_0x58a988)[_0x8074('0xa')](function(_0x161978){return _0x161978;});}return null;};}function removeEntity(_0x5e7b7c){return function(_0x2a5f89){if(_0x2a5f89){return _0x2a5f89[_0x8074('0x1e')]()[_0x8074('0xa')](function(){_0x5e7b7c[_0x8074('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x8353c9){return function(_0x2fda94){if(!_0x2fda94){_0x8353c9[_0x8074('0x1f')](0x194);}return _0x2fda94;};}function handleError(_0x448abf,_0x431667){_0x431667=_0x431667||0x1f4;return function(_0x56f319){logger[_0x8074('0x10')](_0x56f319[_0x8074('0x20')]);if(_0x56f319[_0x8074('0x21')]){delete _0x56f319[_0x8074('0x21')];}_0x448abf['status'](_0x431667)[_0x8074('0x22')](_0x56f319);};}exports['index']=function(_0x52fbec,_0x317f44){var _0x3638b6={},_0x24f51c={},_0x1d1c2e={'count':0x0,'rows':[]};var _0x197b6a=_[_0x8074('0x23')](db['Network'][_0x8074('0x24')],function(_0x1408f9){return{'name':_0x1408f9['fieldName'],'type':_0x1408f9['type'][_0x8074('0x25')]};});_0x24f51c[_0x8074('0x26')]=_[_0x8074('0x23')](_0x197b6a,_0x8074('0x21'));_0x24f51c[_0x8074('0x27')]=_['keys'](_0x52fbec[_0x8074('0x27')]);_0x24f51c[_0x8074('0x28')]=_[_0x8074('0x29')](_0x24f51c[_0x8074('0x26')],_0x24f51c['query']);_0x3638b6[_0x8074('0x2a')]=_[_0x8074('0x29')](_0x24f51c['model'],qs[_0x8074('0x2b')](_0x52fbec[_0x8074('0x27')]['fields']));_0x3638b6[_0x8074('0x2a')]=_0x3638b6[_0x8074('0x2a')][_0x8074('0x2c')]?_0x3638b6[_0x8074('0x2a')]:_0x24f51c[_0x8074('0x26')];if(!_0x52fbec['query'][_0x8074('0x2d')](_0x8074('0x2e'))){_0x3638b6['limit']=qs['limit'](_0x52fbec[_0x8074('0x27')]['limit']);_0x3638b6[_0x8074('0x17')]=qs[_0x8074('0x17')](_0x52fbec[_0x8074('0x27')]['offset']);}_0x3638b6['order']=qs[_0x8074('0x2f')](_0x52fbec[_0x8074('0x27')][_0x8074('0x2f')]);_0x3638b6[_0x8074('0x30')]=qs[_0x8074('0x28')](_['pick'](_0x52fbec[_0x8074('0x27')],_0x24f51c[_0x8074('0x28')]),_0x197b6a);if(_0x52fbec[_0x8074('0x27')][_0x8074('0x31')]){_0x3638b6[_0x8074('0x30')]=_['merge'](_0x3638b6['where'],{'$or':_[_0x8074('0x23')](_0x197b6a,function(_0x578484){if(_0x578484[_0x8074('0x32')]!==_0x8074('0x33')){var _0x358920={};_0x358920[_0x578484[_0x8074('0x21')]]={'$like':'%'+_0x52fbec['query'][_0x8074('0x31')]+'%'};return _0x358920;}})});}_0x3638b6=_['merge']({},_0x3638b6,_0x52fbec[_0x8074('0x34')]);var _0x540976={'where':_0x3638b6[_0x8074('0x30')]};return db[_0x8074('0x35')][_0x8074('0x1a')](_0x540976)[_0x8074('0xa')](function(_0x46d395){_0x1d1c2e[_0x8074('0x1a')]=_0x46d395;if(_0x52fbec[_0x8074('0x27')][_0x8074('0x36')]){_0x3638b6[_0x8074('0x37')]=[{'all':!![]}];}return db[_0x8074('0x35')][_0x8074('0x38')](_0x3638b6);})[_0x8074('0xa')](function(_0x2fefd5){_0x1d1c2e[_0x8074('0x39')]=_0x2fefd5;return _0x1d1c2e;})[_0x8074('0xa')](respondWithFilteredResult(_0x317f44,_0x3638b6))[_0x8074('0x14')](handleError(_0x317f44,null));};exports[_0x8074('0x3a')]=function(_0x2100e5,_0x1ca05d){var _0x1c013d={'raw':!![],'where':{'id':_0x2100e5[_0x8074('0x3b')]['id']}},_0x18f582={};_0x18f582[_0x8074('0x26')]=_[_0x8074('0x3c')](db[_0x8074('0x35')]['rawAttributes']);_0x18f582[_0x8074('0x27')]=_[_0x8074('0x3c')](_0x2100e5[_0x8074('0x27')]);_0x18f582['filters']=_['intersection'](_0x18f582[_0x8074('0x26')],_0x18f582[_0x8074('0x27')]);_0x1c013d[_0x8074('0x2a')]=_[_0x8074('0x29')](_0x18f582[_0x8074('0x26')],qs[_0x8074('0x2b')](_0x2100e5[_0x8074('0x27')]['fields']));_0x1c013d['attributes']=_0x1c013d[_0x8074('0x2a')][_0x8074('0x2c')]?_0x1c013d[_0x8074('0x2a')]:_0x18f582[_0x8074('0x26')];if(_0x2100e5['query'][_0x8074('0x36')]){_0x1c013d[_0x8074('0x37')]=[{'all':!![]}];}_0x1c013d=_[_0x8074('0x3d')]({},_0x1c013d,_0x2100e5[_0x8074('0x34')]);return db[_0x8074('0x35')][_0x8074('0x3e')](_0x1c013d)['then'](handleEntityNotFound(_0x1ca05d,null))[_0x8074('0xa')](respondWithResult(_0x1ca05d,null))['catch'](handleError(_0x1ca05d,null));};exports['create']=function(_0x4e809a,_0x3ce156){var _0x41ca18;return db[_0x8074('0x35')]['create'](_0x4e809a[_0x8074('0x3f')],{'raw':!![]})[_0x8074('0xa')](function(_0x530e6d){_0x41ca18=_0x530e6d;return db[_0x8074('0x35')]['findAll']({'where':{'type':_0x4e809a['body']['type']},'raw':!![]});})[_0x8074('0xa')](function(_0x5605e4){if(_0x41ca18[_0x8074('0x32')][_0x8074('0x40')]()==_0x8074('0x41')){var _0x542f60=fs[_0x8074('0x42')](path[_0x8074('0x43')](config['root'],_0x8074('0x44')),_0x8074('0x45'));var _0x433ab9=ejs[_0x8074('0x46')](_0x542f60,{'networks':_0x5605e4||[]});fs[_0x8074('0x47')](_0x8074('0x48'),_0x433ab9);return respondWithRpcPromise(_0x8074('0x49'),_0x8074('0x4a'),{'module':_0x8074('0x4b')});}else if(_0x41ca18[_0x8074('0x32')][_0x8074('0x40')]()==_0x8074('0x4c')){var _0x5e847b=fs['readFileSync'](path[_0x8074('0x43')](config['root'],_0x8074('0x4d')),_0x8074('0x45'));var _0xb22fd9=ejs[_0x8074('0x46')](_0x5e847b,{'networks':_0x5605e4||[]});fs[_0x8074('0x47')](_0x8074('0x4e'),_0xb22fd9);return respondWithRpcPromise(_0x8074('0x49'),'create',{'module':_0x8074('0x4b')});}else{var _0x5b1a46=fs[_0x8074('0x42')](path[_0x8074('0x43')](config[_0x8074('0x4f')],'server/files/templates/network.ejs'),'utf8');var _0x1e86ce=ejs[_0x8074('0x46')](_0x5b1a46,{'networks':_0x5605e4||[]});fs[_0x8074('0x47')](util[_0x8074('0x50')](_0x8074('0x51'),_0x4e809a[_0x8074('0x3f')]['type'][_0x8074('0x52')]()),_0x1e86ce);return respondWithRpcPromise(_0x8074('0x49'),_0x8074('0x4a'),{'module':'chan_sip.so'});}})[_0x8074('0xa')](function(){return _0x41ca18;})[_0x8074('0xa')](respondWithResult(_0x3ce156,0xc9))[_0x8074('0x14')](handleError(_0x3ce156,null));};exports[_0x8074('0x1d')]=function(_0x1c54bc,_0x5883ec){var _0x37d016;return db[_0x8074('0x35')][_0x8074('0x3e')]({'where':{'id':_0x1c54bc[_0x8074('0x3b')]['id']}})['then'](handleEntityNotFound(_0x5883ec,null))['then'](saveUpdates(_0x1c54bc[_0x8074('0x3f')],null))[_0x8074('0xa')](function(_0x2d4cd3){if(_0x2d4cd3){_0x37d016=_0x2d4cd3;return db[_0x8074('0x35')][_0x8074('0x38')]({'where':{'type':_0x37d016[_0x8074('0x32')]},'raw':!![]});}return null;})[_0x8074('0xa')](function(_0x4c6916){if(_0x37d016[_0x8074('0x32')][_0x8074('0x40')]()==_0x8074('0x41')){var _0x533775=fs[_0x8074('0x42')](path['join'](config[_0x8074('0x4f')],'server/files/templates/stun_multiple.ejs'),_0x8074('0x45'));var _0x266edf=ejs[_0x8074('0x46')](_0x533775,{'networks':_0x4c6916||[]});fs[_0x8074('0x47')](_0x8074('0x48'),_0x266edf);return respondWithRpcPromise('Reload',_0x8074('0x1d'),{'module':_0x8074('0x4b')});}else if(_0x37d016[_0x8074('0x32')][_0x8074('0x40')]()==_0x8074('0x4c')){var _0x30cd28=fs[_0x8074('0x42')](path['join'](config[_0x8074('0x4f')],_0x8074('0x4d')),_0x8074('0x45'));var _0x66f12d=ejs[_0x8074('0x46')](_0x30cd28,{'networks':_0x4c6916||[]});fs['writeFileSync'](_0x8074('0x4e'),_0x66f12d);return respondWithRpcPromise(_0x8074('0x49'),_0x8074('0x1d'),{'module':_0x8074('0x4b')});}else{var _0xb3e8ef=fs[_0x8074('0x42')](path[_0x8074('0x43')](config[_0x8074('0x4f')],_0x8074('0x53')),_0x8074('0x45'));var _0x27c865=ejs[_0x8074('0x46')](_0xb3e8ef,{'networks':_0x4c6916||[]});fs[_0x8074('0x47')](util[_0x8074('0x50')](_0x8074('0x51'),_0x1c54bc[_0x8074('0x3f')][_0x8074('0x32')][_0x8074('0x52')]()),_0x27c865);return respondWithRpcPromise(_0x8074('0x49'),_0x8074('0x1d'),{'module':_0x8074('0x54')});}})[_0x8074('0xa')](function(_0x5ad79c){if(_0x5ad79c){return _0x37d016;}return null;})[_0x8074('0xa')](respondWithResult(_0x5883ec,null))['catch'](handleError(_0x5883ec,null));};exports[_0x8074('0x1e')]=function(_0xc65d9e,_0x1012d4){var _0x599083;return db['Network'][_0x8074('0x3e')]({'where':{'id':_0xc65d9e['params']['id']}})[_0x8074('0xa')](function(_0xf244b5){_0x599083=_0xf244b5;return _0xf244b5;})[_0x8074('0xa')](handleEntityNotFound(_0x1012d4,null))[_0x8074('0xa')](removeEntity(_0x1012d4,null))[_0x8074('0xa')](function(){if(_0x599083){return db[_0x8074('0x35')][_0x8074('0x38')]({'where':{'type':_0x599083[_0x8074('0x32')]},'raw':!![]});}})[_0x8074('0xa')](function(_0x506f2b){if(_0x599083[_0x8074('0x32')][_0x8074('0x40')]()==_0x8074('0x41')){var _0xa17024=fs[_0x8074('0x42')](path[_0x8074('0x43')](config['root'],_0x8074('0x44')),_0x8074('0x45'));var _0x2fe74d=ejs[_0x8074('0x46')](_0xa17024,{'networks':_0x506f2b||[]});fs[_0x8074('0x47')](_0x8074('0x48'),_0x2fe74d);return respondWithRpcPromise(_0x8074('0x49'),'destroy',{'module':_0x8074('0x4b')});}else if(_0x599083[_0x8074('0x32')][_0x8074('0x40')]()=='TURN'){var _0x4d69cc=fs['readFileSync'](path[_0x8074('0x43')](config[_0x8074('0x4f')],_0x8074('0x4d')),'utf8');var _0x23122c=ejs[_0x8074('0x46')](_0x4d69cc,{'networks':_0x506f2b||[]});fs[_0x8074('0x47')](_0x8074('0x4e'),_0x23122c);return respondWithRpcPromise(_0x8074('0x49'),_0x8074('0x1e'),{'module':_0x8074('0x4b')});}else{var _0x3fc070=fs[_0x8074('0x42')](path['join'](config[_0x8074('0x4f')],_0x8074('0x53')),_0x8074('0x45'));var _0x2ad6dc=ejs[_0x8074('0x46')](_0x3fc070,{'networks':_0x506f2b||[]});fs['writeFileSync'](util[_0x8074('0x50')](_0x8074('0x51'),_0x599083[_0x8074('0x32')]['toLowerCase']()),_0x2ad6dc);return respondWithRpcPromise('Reload',_0x8074('0x1e'),{'module':_0x8074('0x54')});}})[_0x8074('0x14')](handleError(_0x1012d4,null));};
\ No newline at end of file
+var _0x0769=['show','params','length','create','body','type','toUpperCase','STUN','readFileSync','join','root','server/files/templates/stun_multiple.ejs','render','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','server/files/templates/turn_multiple.ejs','utf8','writeFileSync','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','chan_sip.so','update','findAll','TURN','toLowerCase','find','util','lodash','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','jayson/promise','client','http','then','info','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','Network,\x20%s,\x20%s','message','request\x20sent','status','json','offset','undefined','count','limit','Content-Range','destroy','stack','name','send','index','map','Network','rawAttributes','key','query','keys','filters','intersection','attributes','model','fields','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','include','rows','catch'];(function(_0x54d5ba,_0x1f1ba9){var _0x6a592e=function(_0x394f8d){while(--_0x394f8d){_0x54d5ba['push'](_0x54d5ba['shift']());}};_0x6a592e(++_0x1f1ba9);}(_0x0769,0x1b7));var _0x9076=function(_0x3e75ba,_0x2d46db){_0x3e75ba=_0x3e75ba-0x0;var _0x25bed6=_0x0769[_0x3e75ba];return _0x25bed6;};'use strict';var util=require(_0x9076('0x0'));var path=require('path');var ejs=require('ejs');var fs=require('fs');var _=require(_0x9076('0x1'));var qs=require(_0x9076('0x2'));var logger=require(_0x9076('0x3'))('api');var config=require(_0x9076('0x4'));var db=require(_0x9076('0x5'))['db'];var jayson=require(_0x9076('0x6'));var client=jayson[_0x9076('0x7')][_0x9076('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x35c500,_0x258ebc,_0x430e2e,_0xf7fc85){return new Promise(function(_0x1209cb,_0x1a9fbd){var _0x6af188=_0xf7fc85||client;return _0x6af188['request'](_0x35c500,_0x430e2e)[_0x9076('0x9')](function(_0x4ed1d0){logger[_0x9076('0xa')]('Network,\x20%s,\x20%s',_0x258ebc,'request\x20sent');logger[_0x9076('0xb')](_0x9076('0xc'),_0x258ebc,'request\x20sent',JSON[_0x9076('0xd')](_0x4ed1d0));if(_0x4ed1d0[_0x9076('0xe')]){if(_0x4ed1d0[_0x9076('0xe')]['code']===0x1f4){logger['error'](_0x9076('0xf'),_0x258ebc,_0x4ed1d0[_0x9076('0xe')]['message']);return _0x1a9fbd(_0x4ed1d0['error'][_0x9076('0x10')]);}logger['error']('Network,\x20%s,\x20%s',_0x258ebc,_0x4ed1d0[_0x9076('0xe')][_0x9076('0x10')]);return _0x1209cb(_0x4ed1d0[_0x9076('0xe')][_0x9076('0x10')]);}else{logger[_0x9076('0xa')](_0x9076('0xf'),_0x258ebc,_0x9076('0x11'));_0x1209cb(_0x4ed1d0['result'][_0x9076('0x10')]);}})['catch'](function(_0x419a93){logger[_0x9076('0xe')]('Network,\x20%s,\x20%s',_0x258ebc,_0x419a93);_0x1a9fbd(_0x419a93);});});}function respondWithResult(_0x51223d,_0x500ca2){_0x500ca2=_0x500ca2||0xc8;return function(_0x128ba9){if(_0x128ba9){return _0x51223d[_0x9076('0x12')](_0x500ca2)[_0x9076('0x13')](_0x128ba9);}};}function respondWithFilteredResult(_0x555b7b,_0x1c43c7){return function(_0x297c38){if(_0x297c38){var _0x64d88a=typeof _0x1c43c7[_0x9076('0x14')]===_0x9076('0x15')&&typeof _0x1c43c7['limit']===_0x9076('0x15');var _0x29dcaf=_0x297c38[_0x9076('0x16')];var _0x450aaf=_0x64d88a?0x0:_0x1c43c7['offset'];var _0x552fef=_0x64d88a?_0x297c38[_0x9076('0x16')]:_0x1c43c7[_0x9076('0x14')]+_0x1c43c7[_0x9076('0x17')];var _0x385da6;if(_0x552fef>=_0x29dcaf){_0x552fef=_0x29dcaf;_0x385da6=0xc8;}else{_0x385da6=0xce;}_0x555b7b[_0x9076('0x12')](_0x385da6);return _0x555b7b['set'](_0x9076('0x18'),_0x450aaf+'-'+_0x552fef+'/'+_0x29dcaf)['json'](_0x297c38);}return null;};}function saveUpdates(_0x3065e6){return function(_0x399258){if(_0x399258){return _0x399258['update'](_0x3065e6)[_0x9076('0x9')](function(_0x12058d){return _0x12058d;});}return null;};}function removeEntity(_0x67dc6d){return function(_0x434134){if(_0x434134){return _0x434134[_0x9076('0x19')]()[_0x9076('0x9')](function(){_0x67dc6d[_0x9076('0x12')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4aaf57){return function(_0x3dd524){if(!_0x3dd524){_0x4aaf57['sendStatus'](0x194);}return _0x3dd524;};}function handleError(_0xbd5e8d,_0x4a060b){_0x4a060b=_0x4a060b||0x1f4;return function(_0x22d73a){logger[_0x9076('0xe')](_0x22d73a[_0x9076('0x1a')]);if(_0x22d73a['name']){delete _0x22d73a[_0x9076('0x1b')];}_0xbd5e8d[_0x9076('0x12')](_0x4a060b)[_0x9076('0x1c')](_0x22d73a);};}exports[_0x9076('0x1d')]=function(_0x43999c,_0x5b7752){var _0xf04fd0={},_0x32a714={},_0x8e690a={'count':0x0,'rows':[]};var _0x10ee59=_[_0x9076('0x1e')](db[_0x9076('0x1f')][_0x9076('0x20')],function(_0x39196f){return{'name':_0x39196f['fieldName'],'type':_0x39196f['type'][_0x9076('0x21')]};});_0x32a714['model']=_[_0x9076('0x1e')](_0x10ee59,_0x9076('0x1b'));_0x32a714[_0x9076('0x22')]=_[_0x9076('0x23')](_0x43999c[_0x9076('0x22')]);_0x32a714[_0x9076('0x24')]=_[_0x9076('0x25')](_0x32a714['model'],_0x32a714[_0x9076('0x22')]);_0xf04fd0[_0x9076('0x26')]=_[_0x9076('0x25')](_0x32a714[_0x9076('0x27')],qs[_0x9076('0x28')](_0x43999c[_0x9076('0x22')]['fields']));_0xf04fd0[_0x9076('0x26')]=_0xf04fd0['attributes']['length']?_0xf04fd0[_0x9076('0x26')]:_0x32a714[_0x9076('0x27')];if(!_0x43999c[_0x9076('0x22')][_0x9076('0x29')](_0x9076('0x2a'))){_0xf04fd0[_0x9076('0x17')]=qs['limit'](_0x43999c[_0x9076('0x22')][_0x9076('0x17')]);_0xf04fd0[_0x9076('0x14')]=qs[_0x9076('0x14')](_0x43999c[_0x9076('0x22')][_0x9076('0x14')]);}_0xf04fd0['order']=qs['sort'](_0x43999c[_0x9076('0x22')][_0x9076('0x2b')]);_0xf04fd0[_0x9076('0x2c')]=qs[_0x9076('0x24')](_[_0x9076('0x2d')](_0x43999c[_0x9076('0x22')],_0x32a714[_0x9076('0x24')]),_0x10ee59);if(_0x43999c['query']['filter']){_0xf04fd0['where']=_[_0x9076('0x2e')](_0xf04fd0[_0x9076('0x2c')],{'$or':_[_0x9076('0x1e')](_0x10ee59,function(_0x5362a9){if(_0x5362a9['type']!==_0x9076('0x2f')){var _0x14d1cb={};_0x14d1cb[_0x5362a9[_0x9076('0x1b')]]={'$like':'%'+_0x43999c['query'][_0x9076('0x30')]+'%'};return _0x14d1cb;}})});}_0xf04fd0=_[_0x9076('0x2e')]({},_0xf04fd0,_0x43999c[_0x9076('0x31')]);var _0x34668e={'where':_0xf04fd0[_0x9076('0x2c')]};return db[_0x9076('0x1f')]['count'](_0x34668e)[_0x9076('0x9')](function(_0x4e35af){_0x8e690a[_0x9076('0x16')]=_0x4e35af;if(_0x43999c[_0x9076('0x22')]['includeAll']){_0xf04fd0[_0x9076('0x32')]=[{'all':!![]}];}return db[_0x9076('0x1f')]['findAll'](_0xf04fd0);})[_0x9076('0x9')](function(_0x8ce225){_0x8e690a[_0x9076('0x33')]=_0x8ce225;return _0x8e690a;})['then'](respondWithFilteredResult(_0x5b7752,_0xf04fd0))[_0x9076('0x34')](handleError(_0x5b7752,null));};exports[_0x9076('0x35')]=function(_0x491954,_0x46a2bb){var _0x3088b0={'raw':!![],'where':{'id':_0x491954[_0x9076('0x36')]['id']}},_0x549f44={};_0x549f44[_0x9076('0x27')]=_[_0x9076('0x23')](db[_0x9076('0x1f')]['rawAttributes']);_0x549f44['query']=_['keys'](_0x491954[_0x9076('0x22')]);_0x549f44[_0x9076('0x24')]=_['intersection'](_0x549f44[_0x9076('0x27')],_0x549f44['query']);_0x3088b0[_0x9076('0x26')]=_[_0x9076('0x25')](_0x549f44['model'],qs[_0x9076('0x28')](_0x491954[_0x9076('0x22')][_0x9076('0x28')]));_0x3088b0[_0x9076('0x26')]=_0x3088b0[_0x9076('0x26')][_0x9076('0x37')]?_0x3088b0[_0x9076('0x26')]:_0x549f44['model'];if(_0x491954[_0x9076('0x22')]['includeAll']){_0x3088b0[_0x9076('0x32')]=[{'all':!![]}];}_0x3088b0=_['merge']({},_0x3088b0,_0x491954[_0x9076('0x31')]);return db[_0x9076('0x1f')]['find'](_0x3088b0)[_0x9076('0x9')](handleEntityNotFound(_0x46a2bb,null))[_0x9076('0x9')](respondWithResult(_0x46a2bb,null))['catch'](handleError(_0x46a2bb,null));};exports[_0x9076('0x38')]=function(_0x2f4b68,_0x366952){var _0x57c23b;return db[_0x9076('0x1f')][_0x9076('0x38')](_0x2f4b68[_0x9076('0x39')],{'raw':!![]})[_0x9076('0x9')](function(_0x104281){_0x57c23b=_0x104281;return db[_0x9076('0x1f')]['findAll']({'where':{'type':_0x2f4b68['body']['type']},'raw':!![]});})['then'](function(_0x317ba2){if(_0x57c23b[_0x9076('0x3a')][_0x9076('0x3b')]()==_0x9076('0x3c')){var _0x41374=fs[_0x9076('0x3d')](path[_0x9076('0x3e')](config[_0x9076('0x3f')],_0x9076('0x40')),'utf8');var _0x35971d=ejs[_0x9076('0x41')](_0x41374,{'networks':_0x317ba2||[]});fs['writeFileSync'](_0x9076('0x42'),_0x35971d);return respondWithRpcPromise(_0x9076('0x43'),_0x9076('0x38'),{'module':_0x9076('0x44')});}else if(_0x57c23b[_0x9076('0x3a')][_0x9076('0x3b')]()=='TURN'){var _0x232c3f=fs[_0x9076('0x3d')](path['join'](config[_0x9076('0x3f')],_0x9076('0x45')),_0x9076('0x46'));var _0x57ade9=ejs[_0x9076('0x41')](_0x232c3f,{'networks':_0x317ba2||[]});fs[_0x9076('0x47')](_0x9076('0x48'),_0x57ade9);return respondWithRpcPromise('Reload',_0x9076('0x38'),{'module':_0x9076('0x44')});}else{var _0x3c3a3a=fs['readFileSync'](path[_0x9076('0x3e')](config[_0x9076('0x3f')],_0x9076('0x49')),_0x9076('0x46'));var _0x401068=ejs[_0x9076('0x41')](_0x3c3a3a,{'networks':_0x317ba2||[]});fs[_0x9076('0x47')](util[_0x9076('0x4a')](_0x9076('0x4b'),_0x2f4b68[_0x9076('0x39')]['type']['toLowerCase']()),_0x401068);return respondWithRpcPromise(_0x9076('0x43'),'create',{'module':_0x9076('0x4c')});}})['then'](function(){return _0x57c23b;})[_0x9076('0x9')](respondWithResult(_0x366952,0xc9))[_0x9076('0x34')](handleError(_0x366952,null));};exports[_0x9076('0x4d')]=function(_0x5c8f21,_0xf0d06f){var _0x454974;return db[_0x9076('0x1f')]['find']({'where':{'id':_0x5c8f21[_0x9076('0x36')]['id']}})[_0x9076('0x9')](handleEntityNotFound(_0xf0d06f,null))[_0x9076('0x9')](saveUpdates(_0x5c8f21['body'],null))['then'](function(_0x1479fb){if(_0x1479fb){_0x454974=_0x1479fb;return db[_0x9076('0x1f')][_0x9076('0x4e')]({'where':{'type':_0x454974['type']},'raw':!![]});}return null;})[_0x9076('0x9')](function(_0x282c06){if(_0x454974[_0x9076('0x3a')][_0x9076('0x3b')]()==_0x9076('0x3c')){var _0x1c816f=fs[_0x9076('0x3d')](path[_0x9076('0x3e')](config[_0x9076('0x3f')],_0x9076('0x40')),_0x9076('0x46'));var _0x2b79bd=ejs[_0x9076('0x41')](_0x1c816f,{'networks':_0x282c06||[]});fs[_0x9076('0x47')](_0x9076('0x42'),_0x2b79bd);return respondWithRpcPromise(_0x9076('0x43'),_0x9076('0x4d'),{'module':_0x9076('0x44')});}else if(_0x454974['type']['toUpperCase']()==_0x9076('0x4f')){var _0x4e4338=fs['readFileSync'](path[_0x9076('0x3e')](config[_0x9076('0x3f')],'server/files/templates/turn_multiple.ejs'),_0x9076('0x46'));var _0x1a310a=ejs[_0x9076('0x41')](_0x4e4338,{'networks':_0x282c06||[]});fs[_0x9076('0x47')]('/etc/asterisk/turn_xcally.conf',_0x1a310a);return respondWithRpcPromise(_0x9076('0x43'),_0x9076('0x4d'),{'module':_0x9076('0x44')});}else{var _0x38e30c=fs[_0x9076('0x3d')](path['join'](config['root'],_0x9076('0x49')),'utf8');var _0x499f1b=ejs['render'](_0x38e30c,{'networks':_0x282c06||[]});fs[_0x9076('0x47')](util['format'](_0x9076('0x4b'),_0x5c8f21[_0x9076('0x39')][_0x9076('0x3a')][_0x9076('0x50')]()),_0x499f1b);return respondWithRpcPromise(_0x9076('0x43'),_0x9076('0x4d'),{'module':'chan_sip.so'});}})[_0x9076('0x9')](function(_0x1720e2){if(_0x1720e2){return _0x454974;}return null;})[_0x9076('0x9')](respondWithResult(_0xf0d06f,null))['catch'](handleError(_0xf0d06f,null));};exports[_0x9076('0x19')]=function(_0x1e7938,_0x470557){var _0x4fbcda;return db[_0x9076('0x1f')][_0x9076('0x51')]({'where':{'id':_0x1e7938[_0x9076('0x36')]['id']}})[_0x9076('0x9')](function(_0x38ef87){_0x4fbcda=_0x38ef87;return _0x38ef87;})[_0x9076('0x9')](handleEntityNotFound(_0x470557,null))[_0x9076('0x9')](removeEntity(_0x470557,null))[_0x9076('0x9')](function(){if(_0x4fbcda){return db[_0x9076('0x1f')][_0x9076('0x4e')]({'where':{'type':_0x4fbcda[_0x9076('0x3a')]},'raw':!![]});}})[_0x9076('0x9')](function(_0x2b4e60){if(_0x4fbcda[_0x9076('0x3a')][_0x9076('0x3b')]()=='STUN'){var _0xc03ab=fs[_0x9076('0x3d')](path[_0x9076('0x3e')](config[_0x9076('0x3f')],_0x9076('0x40')),_0x9076('0x46'));var _0x41fec3=ejs[_0x9076('0x41')](_0xc03ab,{'networks':_0x2b4e60||[]});fs[_0x9076('0x47')](_0x9076('0x42'),_0x41fec3);return respondWithRpcPromise(_0x9076('0x43'),_0x9076('0x19'),{'module':'res_stun_monitor.so'});}else if(_0x4fbcda[_0x9076('0x3a')][_0x9076('0x3b')]()=='TURN'){var _0x3053f3=fs[_0x9076('0x3d')](path[_0x9076('0x3e')](config[_0x9076('0x3f')],'server/files/templates/turn_multiple.ejs'),_0x9076('0x46'));var _0x49c92e=ejs['render'](_0x3053f3,{'networks':_0x2b4e60||[]});fs['writeFileSync'](_0x9076('0x48'),_0x49c92e);return respondWithRpcPromise(_0x9076('0x43'),'destroy',{'module':_0x9076('0x44')});}else{var _0x108ec1=fs[_0x9076('0x3d')](path[_0x9076('0x3e')](config[_0x9076('0x3f')],_0x9076('0x49')),'utf8');var _0x4b9290=ejs[_0x9076('0x41')](_0x108ec1,{'networks':_0x2b4e60||[]});fs[_0x9076('0x47')](util[_0x9076('0x4a')](_0x9076('0x4b'),_0x4fbcda['type']['toLowerCase']()),_0x4b9290);return respondWithRpcPromise(_0x9076('0x43'),_0x9076('0x19'),{'module':_0x9076('0x4c')});}})[_0x9076('0x34')](handleError(_0x470557,null));};
\ No newline at end of file
index 98aa06f..8114248 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcea2=['../../config/environment','./network.attributes','define','Network','network','lodash','../../config/logger','moment','bluebird','request-promise','rimraf'];(function(_0x529b51,_0x5cf47d){var _0x3cfe37=function(_0x118a85){while(--_0x118a85){_0x529b51['push'](_0x529b51['shift']());}};_0x3cfe37(++_0x5cf47d);}(_0xcea2,0x15a));var _0x2cea=function(_0x487b0c,_0x14ff74){_0x487b0c=_0x487b0c-0x0;var _0x1adbdc=_0xcea2[_0x487b0c];return _0x1adbdc;};'use strict';var _=require(_0x2cea('0x0'));var util=require('util');var logger=require(_0x2cea('0x1'))('api');var moment=require(_0x2cea('0x2'));var BPromise=require(_0x2cea('0x3'));var rp=require(_0x2cea('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2cea('0x5'));var config=require(_0x2cea('0x6'));var attributes=require(_0x2cea('0x7'));module['exports']=function(_0x34f0f2,_0x485c26){return _0x34f0f2[_0x2cea('0x8')](_0x2cea('0x9'),attributes,{'tableName':_0x2cea('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9099=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./network.attributes','exports','define','Network','lodash'];(function(_0x5015e3,_0x1dc16b){var _0x57385c=function(_0x6fd62b){while(--_0x6fd62b){_0x5015e3['push'](_0x5015e3['shift']());}};_0x57385c(++_0x1dc16b);}(_0x9099,0x1ac));var _0x9909=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0x9099[_0x1cfa0d];return _0xe33279;};'use strict';var _=require(_0x9909('0x0'));var util=require('util');var logger=require(_0x9909('0x1'))(_0x9909('0x2'));var moment=require(_0x9909('0x3'));var BPromise=require(_0x9909('0x4'));var rp=require(_0x9909('0x5'));var fs=require('fs');var path=require(_0x9909('0x6'));var rimraf=require(_0x9909('0x7'));var config=require(_0x9909('0x8'));var attributes=require(_0x9909('0x9'));module[_0x9909('0xa')]=function(_0x3947ed,_0x41c07e){return _0x3947ed[_0x9909('0xb')](_0x9909('0xc'),attributes,{'tableName':'network','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index aa25810..74460d9 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(_0x45a98f,_0x306005){var _0x557328=function(_0x1120ef){while(--_0x1120ef){_0x45a98f['push'](_0x45a98f['shift']());}};_0x557328(++_0x306005);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var db=require(_0x7995('0x5'))['db'];var utils=require(_0x7995('0x6'));var logger=require(_0x7995('0x7'))('rpc');var config=require(_0x7995('0x8'));var jayson=require(_0x7995('0x9'));var client=jayson[_0x7995('0xa')][_0x7995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbda126,_0x326741,_0x4996ca){return new BPromise(function(_0x465276,_0x1cad37){return client['request'](_0xbda126,_0x4996ca)[_0x7995('0xc')](function(_0x3116fb){logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));logger[_0x7995('0x10')](_0x7995('0x11'),_0x326741,'request\x20sent',JSON[_0x7995('0x12')](_0x3116fb));if(_0x3116fb[_0x7995('0x13')]){if(_0x3116fb['error'][_0x7995('0x14')]===0x1f4){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x1cad37(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}logger['error']('Network,\x20%s,\x20%s',_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x465276(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}else{logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));_0x465276(_0x3116fb[_0x7995('0x16')]['message']);}})[_0x7995('0x17')](function(_0x565d97){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x565d97);_0x1cad37(_0x565d97);});});}
\ No newline at end of file
+var _0x7a54=['info','Network,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7a54,0x106));var _0x47a5=function(_0x201e6b,_0x837acb){_0x201e6b=_0x201e6b-0x0;var _0x30b8a0=_0x7a54[_0x201e6b];return _0x30b8a0;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Network,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
index b830659..ae6903e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdf5=['/:id/send','send','put','/:id','delete','destroy','removeAnswers','removeAgents','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelAccount.controller','get','isAuthenticated','index','/describe','describe','show','/:id/dispositions','getDispositions','getApplications','/:id/interactions','getInteractions','/:id/users','post','addDisposition','/:id/canned_answers','addAnswer','/:id/notify','notify','addAgents'];(function(_0x1aec7c,_0x50407d){var _0x2fda95=function(_0x45195d){while(--_0x45195d){_0x1aec7c['push'](_0x1aec7c['shift']());}};_0x2fda95(++_0x50407d);}(_0xbdf5,0x17b));var _0x5bdf=function(_0x32efa8,_0x280ab4){_0x32efa8=_0x32efa8-0x0;var _0x5d9644=_0xbdf5[_0x32efa8];return _0x5d9644;};'use strict';var multer=require(_0x5bdf('0x0'));var util=require(_0x5bdf('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x5bdf('0x2'));var router=express[_0x5bdf('0x3')]();var fs_extra=require(_0x5bdf('0x4'));var auth=require(_0x5bdf('0x5'));var interaction=require(_0x5bdf('0x6'));var config=require(_0x5bdf('0x7'));var controller=require(_0x5bdf('0x8'));router[_0x5bdf('0x9')]('/',auth[_0x5bdf('0xa')](),controller[_0x5bdf('0xb')]);router[_0x5bdf('0x9')](_0x5bdf('0xc'),auth[_0x5bdf('0xa')](),controller[_0x5bdf('0xd')]);router[_0x5bdf('0x9')]('/:id',auth[_0x5bdf('0xa')](),controller[_0x5bdf('0xe')]);router[_0x5bdf('0x9')](_0x5bdf('0xf'),auth[_0x5bdf('0xa')](),controller[_0x5bdf('0x10')]);router[_0x5bdf('0x9')]('/:id/canned_answers',auth[_0x5bdf('0xa')](),controller['getAnswers']);router[_0x5bdf('0x9')]('/:id/applications',auth['isAuthenticated'](),controller[_0x5bdf('0x11')]);router['get'](_0x5bdf('0x12'),auth[_0x5bdf('0xa')](),controller[_0x5bdf('0x13')]);router[_0x5bdf('0x9')](_0x5bdf('0x14'),auth['isAuthenticated'](),controller['getAgents']);router[_0x5bdf('0x15')]('/',auth[_0x5bdf('0xa')](),controller['create']);router[_0x5bdf('0x15')]('/:id/dispositions',auth[_0x5bdf('0xa')](),controller[_0x5bdf('0x16')]);router['post'](_0x5bdf('0x17'),auth[_0x5bdf('0xa')](),controller[_0x5bdf('0x18')]);router[_0x5bdf('0x15')](_0x5bdf('0x19'),controller[_0x5bdf('0x1a')]);router['post']('/:id/applications',auth[_0x5bdf('0xa')](),controller['addApplications']);router['post']('/:id/users',auth[_0x5bdf('0xa')](),controller[_0x5bdf('0x1b')]);router[_0x5bdf('0x15')](_0x5bdf('0x1c'),auth[_0x5bdf('0xa')](),controller[_0x5bdf('0x1d')]);router[_0x5bdf('0x1e')](_0x5bdf('0x1f'),auth[_0x5bdf('0xa')](),controller['update']);router[_0x5bdf('0x20')](_0x5bdf('0x1f'),auth[_0x5bdf('0xa')](),controller[_0x5bdf('0x21')]);router['delete'](_0x5bdf('0xf'),auth[_0x5bdf('0xa')](),controller['removeDispositions']);router[_0x5bdf('0x20')](_0x5bdf('0x17'),auth[_0x5bdf('0xa')](),controller[_0x5bdf('0x22')]);router[_0x5bdf('0x20')](_0x5bdf('0x14'),auth[_0x5bdf('0xa')](),controller[_0x5bdf('0x23')]);module[_0x5bdf('0x24')]=router;
\ No newline at end of file
+var _0x83c2=['put','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelAccount.controller','get','index','/describe','isAuthenticated','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','/:id/users','getAgents','post','create','addDisposition','addAnswer','/:id/notify','notify','addApplications','addAgents','/:id/send','send'];(function(_0x29e5b9,_0x409914){var _0x33c9c1=function(_0x1b9f0d){while(--_0x1b9f0d){_0x29e5b9['push'](_0x29e5b9['shift']());}};_0x33c9c1(++_0x409914);}(_0x83c2,0x81));var _0x283c=function(_0x5a6de2,_0x5c8b10){_0x5a6de2=_0x5a6de2-0x0;var _0x2c0525=_0x83c2[_0x5a6de2];return _0x2c0525;};'use strict';var multer=require(_0x283c('0x0'));var util=require('util');var path=require(_0x283c('0x1'));var timeout=require(_0x283c('0x2'));var express=require(_0x283c('0x3'));var router=express[_0x283c('0x4')]();var fs_extra=require(_0x283c('0x5'));var auth=require(_0x283c('0x6'));var interaction=require(_0x283c('0x7'));var config=require(_0x283c('0x8'));var controller=require(_0x283c('0x9'));router[_0x283c('0xa')]('/',auth['isAuthenticated'](),controller[_0x283c('0xb')]);router['get'](_0x283c('0xc'),auth[_0x283c('0xd')](),controller['describe']);router[_0x283c('0xa')](_0x283c('0xe'),auth[_0x283c('0xd')](),controller[_0x283c('0xf')]);router['get'](_0x283c('0x10'),auth[_0x283c('0xd')](),controller[_0x283c('0x11')]);router[_0x283c('0xa')](_0x283c('0x12'),auth[_0x283c('0xd')](),controller[_0x283c('0x13')]);router[_0x283c('0xa')](_0x283c('0x14'),auth['isAuthenticated'](),controller[_0x283c('0x15')]);router[_0x283c('0xa')](_0x283c('0x16'),auth[_0x283c('0xd')](),controller['getInteractions']);router[_0x283c('0xa')](_0x283c('0x17'),auth[_0x283c('0xd')](),controller[_0x283c('0x18')]);router[_0x283c('0x19')]('/',auth[_0x283c('0xd')](),controller[_0x283c('0x1a')]);router[_0x283c('0x19')]('/:id/dispositions',auth[_0x283c('0xd')](),controller[_0x283c('0x1b')]);router[_0x283c('0x19')](_0x283c('0x12'),auth[_0x283c('0xd')](),controller[_0x283c('0x1c')]);router[_0x283c('0x19')](_0x283c('0x1d'),controller[_0x283c('0x1e')]);router[_0x283c('0x19')]('/:id/applications',auth[_0x283c('0xd')](),controller[_0x283c('0x1f')]);router[_0x283c('0x19')](_0x283c('0x17'),auth[_0x283c('0xd')](),controller[_0x283c('0x20')]);router[_0x283c('0x19')](_0x283c('0x21'),auth[_0x283c('0xd')](),controller[_0x283c('0x22')]);router[_0x283c('0x23')](_0x283c('0xe'),auth[_0x283c('0xd')](),controller['update']);router[_0x283c('0x24')]('/:id',auth[_0x283c('0xd')](),controller['destroy']);router[_0x283c('0x24')](_0x283c('0x10'),auth['isAuthenticated'](),controller[_0x283c('0x25')]);router['delete'](_0x283c('0x12'),auth[_0x283c('0xd')](),controller[_0x283c('0x26')]);router[_0x283c('0x24')](_0x283c('0x17'),auth[_0x283c('0xd')](),controller[_0x283c('0x27')]);module[_0x283c('0x28')]=router;
\ No newline at end of file
index 95c4fcd..dca890f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b50=['STRING','name','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','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports'];(function(_0x1005d4,_0x5199ab){var _0x421977=function(_0x30c727){while(--_0x30c727){_0x1005d4['push'](_0x1005d4['shift']());}};_0x421977(++_0x5199ab);}(_0x6b50,0x1c4));var _0x06b5=function(_0x4cb272,_0x52c0e9){_0x4cb272=_0x4cb272-0x0;var _0x57b4aa=_0x6b50[_0x4cb272];return _0x57b4aa;};'use strict';var Sequelize=require(_0x06b5('0x0'));var rs=require(_0x06b5('0x1'));module[_0x06b5('0x2')]={'name':{'type':Sequelize[_0x06b5('0x3')],'unique':_0x06b5('0x4'),'allowNull':![]},'description':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x06b5('0x3')],'defaultValue':function(){return rs[_0x06b5('0x5')]();}},'replyUri':{'type':Sequelize[_0x06b5('0x3')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x06b5('0x3')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x06b5('0x6');}},'notificationSound':{'type':Sequelize[_0x06b5('0x7')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x06b5('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x06b5('0x3')]},'queueTransfer':{'type':Sequelize[_0x06b5('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x06b5('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x06b5('0x8')],'allowNull':!![],'defaultValue':null,'comment':_0x06b5('0x9')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x3d0712){if(!_0x3d0712)this[_0x06b5('0xa')](_0x06b5('0xb'),null);this[_0x06b5('0xa')](_0x06b5('0xc'),_0x3d0712);}}};
\ No newline at end of file
+var _0x1bca=['setDataValue','mandatoryDisposition','sequelize','randomstring','exports','STRING','name','generate','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1bca,0x1de));var _0xa1bc=function(_0x4ec12a,_0xb2221d){_0x4ec12a=_0x4ec12a-0x0;var _0x20c935=_0x1bca[_0x4ec12a];return _0x20c935;};'use strict';var Sequelize=require(_0xa1bc('0x0'));var rs=require(_0xa1bc('0x1'));module[_0xa1bc('0x2')]={'name':{'type':Sequelize[_0xa1bc('0x3')],'unique':_0xa1bc('0x4'),'allowNull':![]},'description':{'type':Sequelize[_0xa1bc('0x3')]},'token':{'type':Sequelize[_0xa1bc('0x3')],'defaultValue':function(){return rs[_0xa1bc('0x5')]();}},'replyUri':{'type':Sequelize[_0xa1bc('0x3')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xa1bc('0x3')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xa1bc('0x6')],'defaultValue':function(){return _0xa1bc('0x7');}},'notificationSound':{'type':Sequelize[_0xa1bc('0x8')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xa1bc('0x8')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xa1bc('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0xa1bc('0x3')]},'queueTransfer':{'type':Sequelize[_0xa1bc('0x8')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xa1bc('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xa1bc('0x9')],'allowNull':!![],'defaultValue':null,'comment':_0xa1bc('0xa')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xa1bc('0xb'),'set':function(_0x3fc43a){if(!_0x3fc43a)this[_0xa1bc('0xc')]('mandatoryDispositionPauseId',null);this[_0xa1bc('0xc')](_0xa1bc('0xd'),_0x3fc43a);}}};
\ No newline at end of file
index 1204c71..3bd20d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38df=['filters','intersection','model','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','params','options','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','catch','body','mandatoryDispositionPause','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','findOne','order','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','nolimit','removeAnswers','notify','CmContact','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','ListId','Sequelize','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','List','Contacts','Applications','account','applications','list','asc','defaults','contact','lastName','threadId','externalUrl','OpenchannelInteraction','ContactId','spread','firstName','messageId','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId','UserId','User','unshift','agent','Start','startRouting','EventManager','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','OpenchannelApplication','bulkCreate','priority','finally','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','color','tag','addAgents','omit','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','DESC','out','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','redis','localhost','socket.io-emitter','./openchannelAccount.socket','client','http','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','reject','save','update','destroy','OpenchannelAccounts','UserProfileResource','stack','name','send','index','Pause','map','OpenchannelAccount','rawAttributes','fieldName','type','key','keys','query'];(function(_0x2774ca,_0x511358){var _0x39837a=function(_0x51c079){while(--_0x51c079){_0x2774ca['push'](_0x2774ca['shift']());}};_0x39837a(++_0x511358);}(_0x38df,0x144));var _0xf38d=function(_0x50837b,_0x413961){_0x50837b=_0x50837b-0x0;var _0x2b1257=_0x38df[_0x50837b];return _0x2b1257;};'use strict';var emlformat=require(_0xf38d('0x0'));var rimraf=require(_0xf38d('0x1'));var zipdir=require(_0xf38d('0x2'));var jsonpatch=require(_0xf38d('0x3'));var rp=require(_0xf38d('0x4'));var moment=require(_0xf38d('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xf38d('0x6'));var path=require(_0xf38d('0x7'));var sox=require(_0xf38d('0x8'));var csv=require('to-csv');var ejs=require(_0xf38d('0x9'));var fs=require('fs');var fs_extra=require(_0xf38d('0xa'));var _=require(_0xf38d('0xb'));var squel=require(_0xf38d('0xc'));var crypto=require(_0xf38d('0xd'));var jsforce=require(_0xf38d('0xe'));var deskjs=require(_0xf38d('0xf'));var toCsv=require(_0xf38d('0x10'));var querystring=require(_0xf38d('0x11'));var Papa=require(_0xf38d('0x12'));var Redis=require(_0xf38d('0x13'));var authService=require(_0xf38d('0x14'));var qs=require(_0xf38d('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf38d('0x16'));var logger=require(_0xf38d('0x17'))(_0xf38d('0x18'));var utils=require(_0xf38d('0x19'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xf38d('0x1a'))['db'];config[_0xf38d('0x1b')]=_['defaults'](config[_0xf38d('0x1b')],{'host':_0xf38d('0x1c'),'port':0x18eb});var socket=require(_0xf38d('0x1d'))(new Redis(config['redis']));require(_0xf38d('0x1e'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0xf38d('0x1f')][_0xf38d('0x20')]({'port':0x232c});var client9002=jayson[_0xf38d('0x1f')][_0xf38d('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x22385b,_0xb42d76,_0x52dffb,_0xef11a2){return new BPromise(function(_0x1da9e6,_0x464c83){var _0x43da45=_0xef11a2||client;return _0x43da45[_0xf38d('0x21')](_0x22385b,_0x52dffb)[_0xf38d('0x22')](function(_0x387b60){logger[_0xf38d('0x23')](_0xf38d('0x24'),_0xb42d76,_0xf38d('0x25'));logger[_0xf38d('0x26')](_0xf38d('0x27'),_0xb42d76,_0xf38d('0x25'),JSON[_0xf38d('0x28')](_0x387b60));if(_0x387b60['error']){if(_0x387b60[_0xf38d('0x29')][_0xf38d('0x2a')]===0x1f4){logger[_0xf38d('0x29')](_0xf38d('0x24'),_0xb42d76,_0x387b60[_0xf38d('0x29')]['message']);return _0x464c83(_0x387b60['error'][_0xf38d('0x2b')]);}logger['error'](_0xf38d('0x24'),_0xb42d76,_0x387b60[_0xf38d('0x29')][_0xf38d('0x2b')]);return _0x1da9e6(_0x387b60[_0xf38d('0x29')][_0xf38d('0x2b')]);}else{logger[_0xf38d('0x23')](_0xf38d('0x24'),_0xb42d76,_0xf38d('0x25'));_0x1da9e6(_0x387b60[_0xf38d('0x2c')]['message']);}})['catch'](function(_0x352d69){logger[_0xf38d('0x29')](_0xf38d('0x24'),_0xb42d76,_0x352d69);_0x464c83(_0x352d69);});});}function respondWithStatusCode(_0x1b2ade,_0x150199){_0x150199=_0x150199||0xcc;return function(_0x23e05e){if(_0x23e05e){return _0x1b2ade[_0xf38d('0x2d')](_0x150199);}return _0x1b2ade[_0xf38d('0x2e')](_0x150199)[_0xf38d('0x2f')]();};}function respondWithResult(_0x57d6b1,_0x1168c8){_0x1168c8=_0x1168c8||0xc8;return function(_0x2eb126){if(_0x2eb126){return _0x57d6b1[_0xf38d('0x2e')](_0x1168c8)['json'](_0x2eb126);}};}function respondWithFilteredResult(_0x32c032,_0x5732bb){return function(_0x2bd260){if(_0x2bd260){var _0x3972a1=typeof _0x5732bb[_0xf38d('0x30')]===_0xf38d('0x31')&&typeof _0x5732bb['limit']===_0xf38d('0x31');var _0x456342=_0x2bd260[_0xf38d('0x32')];var _0x28fffb=_0x3972a1?0x0:_0x5732bb[_0xf38d('0x30')];var _0x42167d=_0x3972a1?_0x2bd260[_0xf38d('0x32')]:_0x5732bb[_0xf38d('0x30')]+_0x5732bb[_0xf38d('0x33')];var _0x3447d1;if(_0x42167d>=_0x456342){_0x42167d=_0x456342;_0x3447d1=0xc8;}else{_0x3447d1=0xce;}_0x32c032[_0xf38d('0x2e')](_0x3447d1);return _0x32c032[_0xf38d('0x34')](_0xf38d('0x35'),_0x28fffb+'-'+_0x42167d+'/'+_0x456342)[_0xf38d('0x36')](_0x2bd260);}return null;};}function patchUpdates(_0x558d58){return function(_0x3e5b23){try{jsonpatch['apply'](_0x3e5b23,_0x558d58,!![]);}catch(_0x348448){return BPromise[_0xf38d('0x37')](_0x348448);}return _0x3e5b23[_0xf38d('0x38')]();};}function saveUpdates(_0x3bc21a,_0x465463){return function(_0xe7e83d){if(_0xe7e83d){return _0xe7e83d[_0xf38d('0x39')](_0x3bc21a)[_0xf38d('0x22')](function(_0x9cbc12){return _0x9cbc12;});}return null;};}function removeEntity(_0x5497fc,_0x4820aa){return function(_0x18dc83){if(_0x18dc83){return _0x18dc83[_0xf38d('0x3a')]()[_0xf38d('0x22')](function(){var _0x347580=_0x18dc83['get']({'plain':!![]});var _0x2795e8=_0xf38d('0x3b');return db[_0xf38d('0x3c')][_0xf38d('0x3a')]({'where':{'type':_0x2795e8,'resourceId':_0x347580['id']}})['then'](function(){return _0x18dc83;});})[_0xf38d('0x22')](function(){_0x5497fc[_0xf38d('0x2e')](0xcc)[_0xf38d('0x2f')]();});}};}function handleEntityNotFound(_0x5d6358,_0x8cf7e1){return function(_0x9cfed9){if(!_0x9cfed9){_0x5d6358[_0xf38d('0x2d')](0x194);}return _0x9cfed9;};}function handleError(_0x475338,_0x404831){_0x404831=_0x404831||0x1f4;return function(_0x32e3c3){logger['error'](_0x32e3c3[_0xf38d('0x3d')]);if(_0x32e3c3['name']){delete _0x32e3c3[_0xf38d('0x3e')];}_0x475338[_0xf38d('0x2e')](_0x404831)[_0xf38d('0x3f')](_0x32e3c3);};}exports[_0xf38d('0x40')]=function(_0x198cf1,_0x24b42e){var _0x1f0a04={'include':[{'model':db[_0xf38d('0x41')],'as':'mandatoryDispositionPause'}]},_0x5e81e2={},_0x29baa5={'count':0x0,'rows':[]};var _0x3c4109=_[_0xf38d('0x42')](db[_0xf38d('0x43')][_0xf38d('0x44')],function(_0x5dd67f){return{'name':_0x5dd67f[_0xf38d('0x45')],'type':_0x5dd67f[_0xf38d('0x46')][_0xf38d('0x47')]};});_0x5e81e2['model']=_[_0xf38d('0x42')](_0x3c4109,'name');_0x5e81e2['query']=_[_0xf38d('0x48')](_0x198cf1[_0xf38d('0x49')]);_0x5e81e2[_0xf38d('0x4a')]=_[_0xf38d('0x4b')](_0x5e81e2[_0xf38d('0x4c')],_0x5e81e2[_0xf38d('0x49')]);_0x1f0a04[_0xf38d('0x4d')]=_[_0xf38d('0x4b')](_0x5e81e2[_0xf38d('0x4c')],qs[_0xf38d('0x4e')](_0x198cf1[_0xf38d('0x49')][_0xf38d('0x4e')]));_0x1f0a04[_0xf38d('0x4d')]=_0x1f0a04[_0xf38d('0x4d')][_0xf38d('0x4f')]?_0x1f0a04['attributes']:_0x5e81e2['model'];if(!_0x198cf1[_0xf38d('0x49')][_0xf38d('0x50')]('nolimit')){_0x1f0a04[_0xf38d('0x33')]=qs[_0xf38d('0x33')](_0x198cf1[_0xf38d('0x49')]['limit']);_0x1f0a04[_0xf38d('0x30')]=qs[_0xf38d('0x30')](_0x198cf1[_0xf38d('0x49')][_0xf38d('0x30')]);}_0x1f0a04['order']=qs[_0xf38d('0x51')](_0x198cf1[_0xf38d('0x49')][_0xf38d('0x51')]);_0x1f0a04[_0xf38d('0x52')]=qs['filters'](_[_0xf38d('0x53')](_0x198cf1[_0xf38d('0x49')],_0x5e81e2[_0xf38d('0x4a')]),_0x3c4109);if(_0x198cf1[_0xf38d('0x49')][_0xf38d('0x54')]){_0x1f0a04[_0xf38d('0x52')]=_[_0xf38d('0x55')](_0x1f0a04[_0xf38d('0x52')],{'$or':_['map'](_0x3c4109,function(_0x5643d3){if(_0x5643d3[_0xf38d('0x46')]!==_0xf38d('0x56')){var _0x23c815={};_0x23c815[_0x5643d3[_0xf38d('0x3e')]]={'$like':'%'+_0x198cf1[_0xf38d('0x49')][_0xf38d('0x54')]+'%'};return _0x23c815;}})});}_0x1f0a04=_['merge']({},_0x1f0a04,_0x198cf1['options']);var _0x2672e4={'where':_0x1f0a04['where']};return db['OpenchannelAccount'][_0xf38d('0x32')](_0x2672e4)[_0xf38d('0x22')](function(_0x2e1ffd){_0x29baa5['count']=_0x2e1ffd;if(_0x198cf1[_0xf38d('0x49')][_0xf38d('0x57')]){_0x1f0a04[_0xf38d('0x58')]=[{'all':!![]}];}return db[_0xf38d('0x43')][_0xf38d('0x59')](_0x1f0a04);})[_0xf38d('0x22')](function(_0x11ac95){_0x29baa5[_0xf38d('0x5a')]=_0x11ac95;return _0x29baa5;})['then'](respondWithFilteredResult(_0x24b42e,_0x1f0a04))['catch'](handleError(_0x24b42e,null));};exports['show']=function(_0x4c7123,_0x3a79a1){var _0x1fae7e={'raw':![],'where':{'id':_0x4c7123[_0xf38d('0x5b')]['id']},'include':[{'model':db[_0xf38d('0x41')],'as':'mandatoryDispositionPause'}]},_0x6417d9={};_0x6417d9[_0xf38d('0x4c')]=_[_0xf38d('0x48')](db[_0xf38d('0x43')]['rawAttributes']);_0x6417d9[_0xf38d('0x49')]=_['keys'](_0x4c7123[_0xf38d('0x49')]);_0x6417d9[_0xf38d('0x4a')]=_[_0xf38d('0x4b')](_0x6417d9[_0xf38d('0x4c')],_0x6417d9[_0xf38d('0x49')]);_0x1fae7e[_0xf38d('0x4d')]=_[_0xf38d('0x4b')](_0x6417d9[_0xf38d('0x4c')],qs[_0xf38d('0x4e')](_0x4c7123[_0xf38d('0x49')][_0xf38d('0x4e')]));_0x1fae7e['attributes']=_0x1fae7e[_0xf38d('0x4d')]['length']?_0x1fae7e[_0xf38d('0x4d')]:_0x6417d9['model'];if(_0x4c7123[_0xf38d('0x49')][_0xf38d('0x57')]){_0x1fae7e[_0xf38d('0x58')]=[{'all':!![]}];}_0x1fae7e=_[_0xf38d('0x55')]({},_0x1fae7e,_0x4c7123[_0xf38d('0x5c')]);return db[_0xf38d('0x43')][_0xf38d('0x5d')](_0x1fae7e)[_0xf38d('0x22')](handleEntityNotFound(_0x3a79a1,null))[_0xf38d('0x22')](respondWithResult(_0x3a79a1,null))['catch'](handleError(_0x3a79a1,null));};exports[_0xf38d('0x5e')]=function(_0x6257a,_0x5a85fd){return db[_0xf38d('0x43')][_0xf38d('0x5e')](_0x6257a['body'],{})[_0xf38d('0x22')](function(_0x42c6b7){var _0x2bbe32=_0x6257a[_0xf38d('0x5f')][_0xf38d('0x60')]({'plain':!![]});if(!_0x2bbe32)throw new Error(_0xf38d('0x61'));if(_0x2bbe32[_0xf38d('0x62')]===_0xf38d('0x5f')){var _0x435881=_0x42c6b7[_0xf38d('0x60')]({'plain':!![]});var _0x627c44=_0xf38d('0x3b');return db[_0xf38d('0x63')]['find']({'where':{'name':_0x627c44,'userProfileId':_0x2bbe32['userProfileId']},'raw':!![]})[_0xf38d('0x22')](function(_0x2813f7){if(_0x2813f7&&_0x2813f7['autoAssociation']===0x0){return db['UserProfileResource'][_0xf38d('0x5e')]({'name':_0x435881[_0xf38d('0x3e')],'resourceId':_0x435881['id'],'type':_0x2813f7[_0xf38d('0x3e')],'sectionId':_0x2813f7['id']},{})[_0xf38d('0x22')](function(){return _0x42c6b7;});}else{return _0x42c6b7;}})['catch'](function(_0x473481){logger[_0xf38d('0x29')](_0xf38d('0x64'),_0x473481);throw _0x473481;});}return _0x42c6b7;})[_0xf38d('0x22')](respondWithResult(_0x5a85fd,0xc9))[_0xf38d('0x65')](handleError(_0x5a85fd,null));};exports[_0xf38d('0x39')]=function(_0x5dcff2,_0x45a99e){if(_0x5dcff2['body']['id']){delete _0x5dcff2[_0xf38d('0x66')]['id'];}return db[_0xf38d('0x43')][_0xf38d('0x5d')]({'where':{'id':_0x5dcff2[_0xf38d('0x5b')]['id']},'include':[{'model':db[_0xf38d('0x41')],'as':_0xf38d('0x67')}]})[_0xf38d('0x22')](handleEntityNotFound(_0x45a99e,null))['then'](saveUpdates(_0x5dcff2[_0xf38d('0x66')],null))[_0xf38d('0x22')](respondWithResult(_0x45a99e,null))[_0xf38d('0x65')](handleError(_0x45a99e,null));};exports[_0xf38d('0x3a')]=function(_0x5cdb35,_0x50b7ba){return db[_0xf38d('0x43')][_0xf38d('0x5d')]({'where':{'id':_0x5cdb35[_0xf38d('0x5b')]['id']}})[_0xf38d('0x22')](handleEntityNotFound(_0x50b7ba,null))['then'](removeEntity(_0x50b7ba,null))[_0xf38d('0x65')](handleError(_0x50b7ba,null));};exports[_0xf38d('0x68')]=function(_0x101732,_0x2936da){return db[_0xf38d('0x43')]['describe']()[_0xf38d('0x22')](respondWithResult(_0x2936da,null))[_0xf38d('0x65')](handleError(_0x2936da,null));};exports[_0xf38d('0x69')]=function(_0x13f173,_0x268976,_0x5e1008){if(_0x13f173[_0xf38d('0x66')]['id']){delete _0x13f173[_0xf38d('0x66')]['id'];}return db[_0xf38d('0x43')][_0xf38d('0x5d')]({'where':{'id':_0x13f173['params']['id']}})['then'](handleEntityNotFound(_0x268976,null))['then'](function(_0x599d51){if(_0x599d51){_0x13f173['body'][_0xf38d('0x6a')]=_0x599d51['id'];return db[_0xf38d('0x6b')][_0xf38d('0x5e')](_0x13f173[_0xf38d('0x66')]);}})[_0xf38d('0x22')](respondWithResult(_0x268976,null))[_0xf38d('0x65')](handleError(_0x268976,null));};exports[_0xf38d('0x6c')]=function(_0xaf56c1,_0x5b282d,_0x550af8){var _0x3d1571={'raw':![],'where':{}};var _0x452c79={};var _0x3152ba={'count':0x0,'rows':[]};return db[_0xf38d('0x43')][_0xf38d('0x6d')]({'where':{'id':_0xaf56c1[_0xf38d('0x5b')]['id']}})[_0xf38d('0x22')](handleEntityNotFound(_0x5b282d,null))[_0xf38d('0x22')](function(_0x1497b6){if(_0x1497b6){_0x452c79[_0xf38d('0x4c')]=_[_0xf38d('0x48')](db['Disposition'][_0xf38d('0x44')]);_0x452c79[_0xf38d('0x49')]=_[_0xf38d('0x48')](_0xaf56c1[_0xf38d('0x49')]);_0x452c79[_0xf38d('0x4a')]=_['intersection'](_0x452c79['model'],_0x452c79['query']);_0x3d1571[_0xf38d('0x4d')]=_[_0xf38d('0x4b')](_0x452c79[_0xf38d('0x4c')],qs[_0xf38d('0x4e')](_0xaf56c1[_0xf38d('0x49')][_0xf38d('0x4e')]));_0x3d1571[_0xf38d('0x4d')]=_0x3d1571['attributes']['length']?_0x3d1571[_0xf38d('0x4d')]:_0x452c79['model'];if(!_0xaf56c1[_0xf38d('0x49')][_0xf38d('0x50')]('nolimit')){_0x3d1571[_0xf38d('0x33')]=qs[_0xf38d('0x33')](_0xaf56c1[_0xf38d('0x49')][_0xf38d('0x33')]);_0x3d1571[_0xf38d('0x30')]=qs[_0xf38d('0x30')](_0xaf56c1[_0xf38d('0x49')]['offset']);}_0x3d1571[_0xf38d('0x6e')]=qs[_0xf38d('0x51')](_0xaf56c1[_0xf38d('0x49')][_0xf38d('0x51')]);_0x3d1571[_0xf38d('0x52')]=qs[_0xf38d('0x4a')](_[_0xf38d('0x53')](_0xaf56c1[_0xf38d('0x49')],_0x452c79[_0xf38d('0x4a')]));_0x3d1571[_0xf38d('0x52')][_0xf38d('0x6a')]=_0x1497b6['id'];if(_0xaf56c1[_0xf38d('0x49')][_0xf38d('0x54')]){_0x3d1571[_0xf38d('0x52')]=_['merge'](_0x3d1571[_0xf38d('0x52')],{'$or':_[_0xf38d('0x42')](_0x3d1571['attributes'],function(_0x3dc86d){var _0xdcdbf8={};_0xdcdbf8[_0x3dc86d]={'$like':'%'+_0xaf56c1['query']['filter']+'%'};return _0xdcdbf8;})});}_0x3d1571=_[_0xf38d('0x55')]({},_0x3d1571,_0xaf56c1[_0xf38d('0x5c')]);return db[_0xf38d('0x6b')][_0xf38d('0x32')]({'where':_0x3d1571['where']})['then'](function(_0x5caa6d){_0x3152ba[_0xf38d('0x32')]=_0x5caa6d;if(_0xaf56c1[_0xf38d('0x49')][_0xf38d('0x57')]){_0x3d1571['include']=[{'all':!![]}];}return db[_0xf38d('0x6b')][_0xf38d('0x59')](_0x3d1571);})[_0xf38d('0x22')](function(_0x23e26c){_0x3152ba[_0xf38d('0x5a')]=_0x23e26c;return _0x3152ba;});}})[_0xf38d('0x22')](respondWithFilteredResult(_0x5b282d,_0x3d1571))[_0xf38d('0x65')](handleError(_0x5b282d,null));};exports['removeDispositions']=function(_0x1e36d4,_0x18b4ac,_0x87368d){return db[_0xf38d('0x43')][_0xf38d('0x5d')]({'where':{'id':_0x1e36d4[_0xf38d('0x5b')]['id']}})[_0xf38d('0x22')](handleEntityNotFound(_0x18b4ac,null))[_0xf38d('0x22')](function(_0x5c3a8c){if(_0x5c3a8c){return _0x5c3a8c[_0xf38d('0x6f')](_0x1e36d4[_0xf38d('0x49')][_0xf38d('0x70')]);}})[_0xf38d('0x22')](respondWithStatusCode(_0x18b4ac,null))[_0xf38d('0x65')](handleError(_0x18b4ac,null));};exports[_0xf38d('0x71')]=function(_0x336ae7,_0x40ba4f,_0x58cf75){if(_0x336ae7[_0xf38d('0x66')]['id']){delete _0x336ae7[_0xf38d('0x66')]['id'];}return db[_0xf38d('0x43')][_0xf38d('0x5d')]({'where':{'id':_0x336ae7['params']['id']}})[_0xf38d('0x22')](handleEntityNotFound(_0x40ba4f,null))['then'](function(_0x180e9d){if(_0x180e9d){_0x336ae7['body'][_0xf38d('0x6a')]=_0x180e9d['id'];return db[_0xf38d('0x72')][_0xf38d('0x5e')](_0x336ae7[_0xf38d('0x66')]);}})['then'](respondWithResult(_0x40ba4f,null))[_0xf38d('0x65')](handleError(_0x40ba4f,null));};exports[_0xf38d('0x73')]=function(_0x33c43d,_0x459702,_0x48aee5){var _0x346f2c={'raw':![],'where':{}};var _0x36f969={};var _0x23ee6b={'count':0x0,'rows':[]};return db[_0xf38d('0x43')][_0xf38d('0x6d')]({'where':{'id':_0x33c43d['params']['id']}})['then'](handleEntityNotFound(_0x459702,null))[_0xf38d('0x22')](function(_0x4cb261){if(_0x4cb261){_0x36f969['model']=_[_0xf38d('0x48')](db[_0xf38d('0x72')][_0xf38d('0x44')]);_0x36f969[_0xf38d('0x49')]=_[_0xf38d('0x48')](_0x33c43d[_0xf38d('0x49')]);_0x36f969[_0xf38d('0x4a')]=_[_0xf38d('0x4b')](_0x36f969[_0xf38d('0x4c')],_0x36f969[_0xf38d('0x49')]);_0x346f2c[_0xf38d('0x4d')]=_[_0xf38d('0x4b')](_0x36f969[_0xf38d('0x4c')],qs['fields'](_0x33c43d[_0xf38d('0x49')]['fields']));_0x346f2c[_0xf38d('0x4d')]=_0x346f2c[_0xf38d('0x4d')][_0xf38d('0x4f')]?_0x346f2c[_0xf38d('0x4d')]:_0x36f969[_0xf38d('0x4c')];if(!_0x33c43d[_0xf38d('0x49')][_0xf38d('0x50')](_0xf38d('0x74'))){_0x346f2c[_0xf38d('0x33')]=qs[_0xf38d('0x33')](_0x33c43d['query']['limit']);_0x346f2c[_0xf38d('0x30')]=qs[_0xf38d('0x30')](_0x33c43d[_0xf38d('0x49')][_0xf38d('0x30')]);}_0x346f2c[_0xf38d('0x6e')]=qs[_0xf38d('0x51')](_0x33c43d[_0xf38d('0x49')]['sort']);_0x346f2c[_0xf38d('0x52')]=qs[_0xf38d('0x4a')](_['pick'](_0x33c43d[_0xf38d('0x49')],_0x36f969['filters']));_0x346f2c['where']['OpenchannelAccountId']=_0x4cb261['id'];if(_0x33c43d[_0xf38d('0x49')]['filter']){_0x346f2c[_0xf38d('0x52')]=_['merge'](_0x346f2c[_0xf38d('0x52')],{'$or':_['map'](_0x346f2c[_0xf38d('0x4d')],function(_0x17b76f){var _0x2180d8={};_0x2180d8[_0x17b76f]={'$like':'%'+_0x33c43d['query']['filter']+'%'};return _0x2180d8;})});}_0x346f2c=_[_0xf38d('0x55')]({},_0x346f2c,_0x33c43d[_0xf38d('0x5c')]);return db['CannedAnswer'][_0xf38d('0x32')]({'where':_0x346f2c[_0xf38d('0x52')]})[_0xf38d('0x22')](function(_0xc0d97c){_0x23ee6b[_0xf38d('0x32')]=_0xc0d97c;if(_0x33c43d['query']['includeAll']){_0x346f2c[_0xf38d('0x58')]=[{'all':!![]}];}return db['CannedAnswer'][_0xf38d('0x59')](_0x346f2c);})[_0xf38d('0x22')](function(_0x437141){_0x23ee6b['rows']=_0x437141;return _0x23ee6b;});}})[_0xf38d('0x22')](respondWithFilteredResult(_0x459702,_0x346f2c))[_0xf38d('0x65')](handleError(_0x459702,null));};exports[_0xf38d('0x75')]=function(_0x407844,_0x4c125c,_0x29c61d){return db['OpenchannelAccount'][_0xf38d('0x5d')]({'where':{'id':_0x407844[_0xf38d('0x5b')]['id']}})[_0xf38d('0x22')](handleEntityNotFound(_0x4c125c,null))[_0xf38d('0x22')](function(_0x24b2d1){if(_0x24b2d1){return _0x24b2d1[_0xf38d('0x75')](_0x407844[_0xf38d('0x49')][_0xf38d('0x70')]);}})[_0xf38d('0x22')](respondWithStatusCode(_0x4c125c,null))['catch'](handleError(_0x4c125c,null));};exports[_0xf38d('0x76')]=function(_0x489cd0,_0x4247ee,_0x5ac491){var _0x3eec2d={'body':_0x489cd0[_0xf38d('0x66')],'channel':'openchannel'};var _0x32fd4a=[];var _0x373d03=[];var _0x37851a={};var _0x490432=![];return db[_0xf38d('0x77')][_0xf38d('0x68')]()[_0xf38d('0x22')](function(_0x3d1f4e){if(!_0x3d1f4e){throw new db['Sequelize'][(_0xf38d('0x78'))](_0xf38d('0x79'));}_0x32fd4a=_[_0xf38d('0x7a')](_[_0xf38d('0x48')](_0x3d1f4e),[_0xf38d('0x7b'),_0xf38d('0x7c')]);_0x373d03=_[_0xf38d('0x7a')](_[_0xf38d('0x48')](_0x3d1f4e),[_0xf38d('0x7b'),_0xf38d('0x7c'),'CompanyId',_0xf38d('0x7d')]);if(_0x489cd0[_0xf38d('0x66')]['id']){delete _0x489cd0[_0xf38d('0x66')]['id'];}if(_['isNil'](_0x489cd0['body']['from'])){throw new db[(_0xf38d('0x7e'))][(_0xf38d('0x78'))](_0xf38d('0x7f'));}if(_[_0xf38d('0x80')](_0x489cd0[_0xf38d('0x66')][_0xf38d('0x66')])||_0x489cd0['body'][_0xf38d('0x66')]===''){throw new db[(_0xf38d('0x7e'))][(_0xf38d('0x78'))](_0xf38d('0x81'));}if(_['isNil'](_0x489cd0['body'][_0xf38d('0x82')])){throw new db[(_0xf38d('0x7e'))][(_0xf38d('0x78'))](_0xf38d('0x83')+_0x373d03);}if(!_[_0xf38d('0x84')](_0x373d03,_0x489cd0[_0xf38d('0x66')]['mapKey'])){throw new db[(_0xf38d('0x7e'))][(_0xf38d('0x78'))](_0xf38d('0x85')+_0x373d03);}_0x37851a[_0x489cd0[_0xf38d('0x66')][_0xf38d('0x82')]]=_0x489cd0[_0xf38d('0x66')]['from'];})[_0xf38d('0x22')](function(){return db['OpenchannelAccount'][_0xf38d('0x5d')]({'where':{'id':_0x489cd0['params']['id']},'include':[{'model':db[_0xf38d('0x86')],'as':_0xf38d('0x87'),'include':[{'model':db[_0xf38d('0x77')],'as':_0xf38d('0x88'),'where':_0x37851a,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db['OpenchannelApplication'],'as':_0xf38d('0x89')}]});})[_0xf38d('0x22')](handleEntityNotFound(_0x4247ee,null))['then'](function(_0x3fa52e){if(_0x3fa52e&&_0x3fa52e['List']){_0x3eec2d[_0xf38d('0x8a')]=_0x3fa52e;_0x3eec2d[_0xf38d('0x8b')]=_0x3fa52e[_0xf38d('0x89')];_0x3eec2d[_0xf38d('0x8c')]=_0x3fa52e[_0xf38d('0x87')];_0x3eec2d[_0xf38d('0x8b')]=_['orderBy'](_0x3eec2d['applications'],['priority'],[_0xf38d('0x8d')]);if(_0x3eec2d['account'][_0xf38d('0x89')]){delete _0x3eec2d[_0xf38d('0x8a')][_0xf38d('0x89')];}if(_0x3eec2d['account']['List']&&_0x3eec2d[_0xf38d('0x8a')][_0xf38d('0x87')]['Contacts'][_0xf38d('0x4f')]){return _0x3eec2d[_0xf38d('0x8a')][_0xf38d('0x87')][_0xf38d('0x88')][0x0];}var _0x12d103=_[_0xf38d('0x8e')](_0x489cd0[_0xf38d('0x66')],{'firstName':_0x489cd0[_0xf38d('0x66')]['from'],'ListId':_0x3fa52e[_0xf38d('0x7d')]});_0x12d103[_0x489cd0[_0xf38d('0x66')][_0xf38d('0x82')]]=_0x489cd0[_0xf38d('0x66')]['from'];return db['CmContact']['create'](_0x12d103,{'fields':_0x32fd4a,'raw':!![]});}})[_0xf38d('0x22')](handleEntityNotFound(_0x4247ee,null))[_0xf38d('0x22')](function(_0x1f39e9){_0x3eec2d[_0xf38d('0x8f')]=_0x1f39e9;if(_0x1f39e9){var _0x2136da={'ContactId':_0x1f39e9['id'],'OpenchannelAccountId':_0x489cd0[_0xf38d('0x5b')]['id'],'from':(_0x1f39e9['firstName']||'')+'\x20'+(_0x1f39e9[_0xf38d('0x90')]||'')};var _0x1d0109={'OpenchannelAccountId':_0x489cd0[_0xf38d('0x5b')]['id'],'closed':![]};if(_0x489cd0['body'][_0xf38d('0x91')]){_0x1d0109[_0xf38d('0x91')]=_0x489cd0[_0xf38d('0x66')][_0xf38d('0x91')];return db['OpenchannelInteraction'][_0xf38d('0x5d')]({'where':_0x1d0109})[_0xf38d('0x22')](function(_0x21b022){if(_0x21b022){return[_0x21b022,![]];}_0x2136da['threadId']=_0x489cd0[_0xf38d('0x66')]['threadId'];_0x2136da[_0xf38d('0x92')]=_0x489cd0['body'][_0xf38d('0x92')];return db[_0xf38d('0x93')][_0xf38d('0x5e')](_0x2136da)[_0xf38d('0x22')](function(_0x20d7ba){return[_0x20d7ba,!![]];});});}else{_0x1d0109[_0xf38d('0x91')]=null;}_0x1d0109[_0xf38d('0x94')]=_0x1f39e9['id'];return db[_0xf38d('0x93')]['find']({'where':_0x1d0109})[_0xf38d('0x22')](function(_0x23e8e6){if(_0x23e8e6){return[_0x23e8e6,![]];}return db[_0xf38d('0x93')]['create'](_0x2136da)[_0xf38d('0x22')](function(_0x3fcc90){return[_0x3fcc90,!![]];});});}})[_0xf38d('0x95')](function(_0x3ef832,_0x714845){if(_0x3ef832){_0x490432=_0x714845;if(!_0x714845){var _0xe45c07={'from':(_0x3eec2d[_0xf38d('0x8f')][_0xf38d('0x96')]||'')+'\x20'+(_0x3eec2d[_0xf38d('0x8f')][_0xf38d('0x90')]||'')};if(_0x489cd0[_0xf38d('0x66')][_0xf38d('0x91')]&&_0x489cd0[_0xf38d('0x66')][_0xf38d('0x97')]&&_0x489cd0[_0xf38d('0x66')]['threadId']!=_0x489cd0['body'][_0xf38d('0x97')]){_0xe45c07[_0xf38d('0x91')]=_0x489cd0['body'][_0xf38d('0x97')];}return _0x3ef832[_0xf38d('0x39')](_0xe45c07);}else{return _0x3ef832;}}})[_0xf38d('0x22')](function(_0x2c0426){_0x3eec2d[_0xf38d('0x98')]=_0x2c0426[_0xf38d('0x60')]({'plain':!![]});_0x3eec2d[_0xf38d('0x98')][_0xf38d('0x99')]=_0x490432;if(_0x3eec2d[_0xf38d('0x98')][_0xf38d('0x99')]){if(_0x3eec2d[_0xf38d('0x8a')][_0xf38d('0x9a')]){_0x3eec2d[_0xf38d('0x8b')][_0xf38d('0x9b')]({'id':0x0,'priority':_0x3eec2d[_0xf38d('0x8b')]['length']+0x1,'app':_0xf38d('0x9c'),'appdata':_0xf38d('0x9d'),'interval':_0xf38d('0x9e')});}}return db[_0xf38d('0x9f')][_0xf38d('0x5e')]({'body':_0x489cd0['body']['body'],'OpenchannelAccountId':_0x489cd0[_0xf38d('0x5b')]['id'],'OpenchannelInteractionId':_0x2c0426['id'],'direction':'in','ContactId':_0x3eec2d['contact']['id'],'AttachmentId':_0x489cd0['body'][_0xf38d('0xa0')]});})['then'](function(_0x44e1b1){_0x3eec2d[_0xf38d('0x2b')]=_0x44e1b1;if(_0x3eec2d[_0xf38d('0x98')][_0xf38d('0xa1')]){return db[_0xf38d('0xa2')]['find']({'attributes':['id',_0xf38d('0x3e')],'where':{'id':_0x3eec2d[_0xf38d('0x98')][_0xf38d('0xa1')]}})[_0xf38d('0x22')](function(_0x4d5446){if(_0x4d5446){_0x3eec2d['applications'][_0xf38d('0xa3')]({'id':0x0,'priority':0x0,'app':_0xf38d('0xa4'),'appdata':_0x4d5446[_0xf38d('0x3e')]+','+(_0x3eec2d['account']['waitForTheAssignedAgent']||0xa),'interval':_0xf38d('0x9e')});_0x3eec2d['forcedOwnership']=![];}return respondWithRpcPromise(_0xf38d('0xa5'),_0xf38d('0xa6'),_0x3eec2d);});}return respondWithRpcPromise('Start',_0xf38d('0xa6'),_0x3eec2d);})[_0xf38d('0x22')](function(_0x413490){respondWithRpcPromise(_0xf38d('0xa7'),_0xf38d('0xa7'),{'event':_0xf38d('0x76'),'message':_0x413490},client9002);return _0x413490;})[_0xf38d('0x22')](respondWithResult(_0x4247ee,null))[_0xf38d('0x65')](handleError(_0x4247ee,null));};exports[_0xf38d('0xa8')]=function(_0x3eddc6,_0x38a41e){var _0x8f0cf=_0x3eddc6[_0xf38d('0x5b')]['id'];var _0x747800=_0x3eddc6[_0xf38d('0x66')];var _0x385047=0xc8;var _0x44105a=null;return db[_0xf38d('0xa9')][_0xf38d('0xaa')]({'isolationLevel':db[_0xf38d('0xa9')][_0xf38d('0xab')][_0xf38d('0xac')]['READ_COMMITTED']},function(_0x4ded58){return db['OpenchannelAccount'][_0xf38d('0x6d')]({'where':{'id':_0x8f0cf},'transaction':_0x4ded58})['then'](function(_0x3af186){if(_0x3af186){return db[_0xf38d('0xad')][_0xf38d('0x3a')]({'where':{'OpenchannelAccountId':_0x8f0cf},'transaction':_0x4ded58})[_0xf38d('0x22')](function(){var _0x57eaa9=_[_0xf38d('0x42')](_0x747800,function(_0x4cea19){_0x4cea19[_0xf38d('0x6a')]=_0x8f0cf;return _0x4cea19;});return db[_0xf38d('0xad')][_0xf38d('0xae')](_0x57eaa9,{'transaction':_0x4ded58});});}else{_0x385047=0x194;_0x44105a=[];}});})[_0xf38d('0x22')](function(){if(_0x385047!==0x194){return db[_0xf38d('0xad')]['findAndCountAll']({'where':{'OpenchannelAccountId':_0x8f0cf},'order':_0xf38d('0xaf')})[_0xf38d('0x22')](function(_0x28874f){_0x44105a=_0x28874f;});}})[_0xf38d('0x65')](function(_0x27ec17){_0x385047=0x1f4;logger[_0xf38d('0x29')](_0x27ec17[_0xf38d('0x3d')]);if(_0x27ec17[_0xf38d('0x3e')]){delete _0x27ec17[_0xf38d('0x3e')];}_0x44105a=_0x27ec17;})[_0xf38d('0xb0')](function(){if(_0x44105a===null){_0x38a41e[_0xf38d('0x2d')](_0x385047);}else{if(_0x385047===0x1f4){_0x38a41e[_0xf38d('0x2e')](_0x385047)[_0xf38d('0x3f')](_0x44105a);}else{_0x38a41e[_0xf38d('0x2e')](_0x385047)[_0xf38d('0x36')](_0x44105a);}}});};exports[_0xf38d('0xb1')]=function(_0x213716,_0x36e9b9,_0x54f85f){var _0xccd8a0={};var _0x50a167={};var _0x5971ef;var _0x8a28aa;return db['OpenchannelAccount'][_0xf38d('0x6d')]({'where':{'id':_0x213716[_0xf38d('0x5b')]['id']}})[_0xf38d('0x22')](handleEntityNotFound(_0x36e9b9,null))[_0xf38d('0x22')](function(_0x354379){if(_0x354379){_0x5971ef=_0x354379;_0x50a167[_0xf38d('0x4c')]=_[_0xf38d('0x48')](db['OpenchannelApplication'][_0xf38d('0x44')]);_0x50a167[_0xf38d('0x49')]=_['keys'](_0x213716[_0xf38d('0x49')]);_0x50a167[_0xf38d('0x4a')]=_[_0xf38d('0x4b')](_0x50a167['model'],_0x50a167[_0xf38d('0x49')]);_0xccd8a0[_0xf38d('0x4d')]=_[_0xf38d('0x4b')](_0x50a167['model'],qs[_0xf38d('0x4e')](_0x213716['query'][_0xf38d('0x4e')]));_0xccd8a0[_0xf38d('0x4d')]=_0xccd8a0[_0xf38d('0x4d')][_0xf38d('0x4f')]?_0xccd8a0[_0xf38d('0x4d')]:_0x50a167[_0xf38d('0x4c')];_0xccd8a0[_0xf38d('0x6e')]=qs[_0xf38d('0x51')](_0x213716[_0xf38d('0x49')][_0xf38d('0x51')]);_0xccd8a0[_0xf38d('0x52')]=qs[_0xf38d('0x4a')](_[_0xf38d('0x53')](_0x213716[_0xf38d('0x49')],_0x50a167[_0xf38d('0x4a')]));if(_0x213716[_0xf38d('0x49')][_0xf38d('0x54')]){_0xccd8a0[_0xf38d('0x52')]=_[_0xf38d('0x55')](_0xccd8a0[_0xf38d('0x52')],{'$or':_[_0xf38d('0x42')](_0xccd8a0[_0xf38d('0x4d')],function(_0x3d6e72){var _0x1af79a={};_0x1af79a[_0x3d6e72]={'$like':'%'+_0x213716[_0xf38d('0x49')][_0xf38d('0x54')]+'%'};return _0x1af79a;})});}_0xccd8a0=_[_0xf38d('0x55')]({},_0xccd8a0,_0x213716[_0xf38d('0x5c')]);return _0x5971ef[_0xf38d('0xb1')](_0xccd8a0);}})['then'](function(_0x1a8048){if(_0x1a8048){_0x8a28aa=_0x1a8048['length'];if(!_0x213716[_0xf38d('0x49')]['hasOwnProperty'](_0xf38d('0x74'))){_0xccd8a0[_0xf38d('0x33')]=qs[_0xf38d('0x33')](_0x213716[_0xf38d('0x49')]['limit']);_0xccd8a0[_0xf38d('0x30')]=qs[_0xf38d('0x30')](_0x213716[_0xf38d('0x49')][_0xf38d('0x30')]);}return _0x5971ef['getApplications'](_0xccd8a0);}})[_0xf38d('0x22')](function(_0x4a3ff7){if(_0x4a3ff7){return _0x4a3ff7?{'count':_0x8a28aa,'rows':_0x4a3ff7}:null;}})[_0xf38d('0x22')](respondWithResult(_0x36e9b9,null))[_0xf38d('0x65')](handleError(_0x36e9b9,null));};exports[_0xf38d('0xb2')]=function(_0x980640,_0x541d17,_0x4c0662){var _0x24a0dc={'raw':![],'where':{}};var _0x346293={};var _0x5d9f95={'count':0x0,'rows':[]};return db[_0xf38d('0x43')][_0xf38d('0x6d')]({'where':{'id':_0x980640['params']['id']}})[_0xf38d('0x22')](handleEntityNotFound(_0x541d17,null))[_0xf38d('0x22')](function(_0x3282d1){if(_0x3282d1){_0x346293[_0xf38d('0x4c')]=_[_0xf38d('0x48')](db[_0xf38d('0x93')][_0xf38d('0x44')]);_0x346293[_0xf38d('0x49')]=_['keys'](_0x980640['query']);_0x346293[_0xf38d('0x4a')]=_[_0xf38d('0x4b')](_0x346293[_0xf38d('0x4c')],_0x346293[_0xf38d('0x49')]);_0x24a0dc['attributes']=_[_0xf38d('0x4b')](_0x346293[_0xf38d('0x4c')],qs['fields'](_0x980640['query'][_0xf38d('0x4e')]));_0x24a0dc[_0xf38d('0x4d')]=_0x24a0dc[_0xf38d('0x4d')][_0xf38d('0x4f')]?_0x24a0dc[_0xf38d('0x4d')]:_0x346293[_0xf38d('0x4c')];if(!_0x980640[_0xf38d('0x49')][_0xf38d('0x50')](_0xf38d('0x74'))){_0x24a0dc[_0xf38d('0x33')]=qs[_0xf38d('0x33')](_0x980640[_0xf38d('0x49')][_0xf38d('0x33')]);_0x24a0dc[_0xf38d('0x30')]=qs[_0xf38d('0x30')](_0x980640['query']['offset']);}_0x24a0dc[_0xf38d('0x6e')]=qs[_0xf38d('0x51')](_0x980640[_0xf38d('0x49')][_0xf38d('0x51')]);_0x24a0dc[_0xf38d('0x52')]=qs[_0xf38d('0x4a')](_['pick'](_0x980640[_0xf38d('0x49')],_0x346293['filters']));_0x24a0dc[_0xf38d('0x52')][_0xf38d('0x6a')]=_0x3282d1['id'];if(_0x980640['query'][_0xf38d('0x54')]){_0x24a0dc[_0xf38d('0x52')]=_[_0xf38d('0x55')](_0x24a0dc[_0xf38d('0x52')],{'$or':_[_0xf38d('0x42')](_0x24a0dc['attributes'],function(_0x4c6665){var _0x576595={};_0x576595[_0x4c6665]={'$like':'%'+_0x980640[_0xf38d('0x49')][_0xf38d('0x54')]+'%'};return _0x576595;})});}_0x24a0dc=_[_0xf38d('0x55')]({},_0x24a0dc,_0x980640[_0xf38d('0x5c')]);return db[_0xf38d('0x93')]['count']({'where':_0x24a0dc[_0xf38d('0x52')]})[_0xf38d('0x22')](function(_0x5f1dd0){_0x5d9f95[_0xf38d('0x32')]=_0x5f1dd0;if(_0x980640[_0xf38d('0x49')][_0xf38d('0x57')]){_0x24a0dc[_0xf38d('0x58')]=[{'model':db[_0xf38d('0x77')],'as':_0xf38d('0xb3'),'required':![]},{'model':db['User'],'as':_0xf38d('0xb4'),'attributes':[_0xf38d('0x3e'),_0xf38d('0xb5'),_0xf38d('0xb6')],'required':![]},{'model':db[_0xf38d('0xb7')],'as':_0xf38d('0xb8'),'attributes':['id',_0xf38d('0x3e'),_0xf38d('0xb9')],'where':_0x980640[_0xf38d('0x49')][_0xf38d('0xba')]?{'id':_0x980640[_0xf38d('0x49')][_0xf38d('0xba')]}:undefined,'required':_0x980640[_0xf38d('0x49')][_0xf38d('0xba')]?!![]:![]}];}return db['OpenchannelInteraction']['findAll'](_0x24a0dc);})['then'](function(_0xef69f){_0x5d9f95[_0xf38d('0x5a')]=_0xef69f;return _0x5d9f95;});}})[_0xf38d('0x22')](respondWithFilteredResult(_0x541d17,_0x24a0dc))[_0xf38d('0x65')](handleError(_0x541d17,null));};exports[_0xf38d('0xbb')]=function(_0x4a23b7,_0x5a6b78,_0x3783c9){return db[_0xf38d('0x43')][_0xf38d('0x5d')]({'where':{'id':_0x4a23b7[_0xf38d('0x5b')]['id']}})[_0xf38d('0x22')](handleEntityNotFound(_0x5a6b78,null))[_0xf38d('0x22')](function(_0x247284){if(_0x247284){return _0x247284[_0xf38d('0xbb')](_0x4a23b7[_0xf38d('0x66')]['ids'],_[_0xf38d('0xbc')](_0x4a23b7[_0xf38d('0x66')],['ids','id'])||{})[_0xf38d('0x95')](function(_0x504023){for(var _0x3ad634=0x0;_0x3ad634<_0x4a23b7[_0xf38d('0x66')][_0xf38d('0x70')][_0xf38d('0x4f')];_0x3ad634+=0x1){socket[_0xf38d('0xbd')](_0xf38d('0xbe'),{'UserId':Number(_0x4a23b7[_0xf38d('0x66')]['ids'][_0x3ad634]),'OpenchannelAccountId':Number(_0x4a23b7[_0xf38d('0x5b')]['id'])});}return _0x504023;});}})['then'](respondWithResult(_0x5a6b78,null))['catch'](handleError(_0x5a6b78,null));};exports[_0xf38d('0xbf')]=function(_0x2bf726,_0x5b9481,_0x7fcda9){return db[_0xf38d('0x43')][_0xf38d('0x5d')]({'where':{'id':_0x2bf726[_0xf38d('0x5b')]['id']}})[_0xf38d('0x22')](handleEntityNotFound(_0x5b9481,null))[_0xf38d('0x22')](function(_0x49f254){if(_0x49f254){return _0x49f254[_0xf38d('0xbf')](_0x2bf726[_0xf38d('0x49')]['ids'])['then'](function(){if(_[_0xf38d('0xc0')](_0x2bf726[_0xf38d('0x49')][_0xf38d('0x70')])){for(var _0x548117=0x0;_0x548117<_0x2bf726[_0xf38d('0x49')][_0xf38d('0x70')]['length'];_0x548117+=0x1){socket[_0xf38d('0xbd')](_0xf38d('0xc1'),{'UserId':Number(_0x2bf726[_0xf38d('0x49')][_0xf38d('0x70')][_0x548117]),'OpenchannelAccountId':Number(_0x2bf726[_0xf38d('0x5b')]['id'])});}}else{socket[_0xf38d('0xbd')](_0xf38d('0xc1'),{'UserId':Number(_0x2bf726[_0xf38d('0x49')][_0xf38d('0x70')]),'OpenchannelAccountId':Number(_0x2bf726[_0xf38d('0x5b')]['id'])});}});}})[_0xf38d('0x22')](respondWithStatusCode(_0x5b9481,null))[_0xf38d('0x65')](handleError(_0x5b9481,null));};exports[_0xf38d('0xc2')]=function(_0x510bf4,_0x938599,_0x5d5381){var _0x5501d4={};var _0x54b024={};var _0x5f3c56;var _0x1fa830;return db[_0xf38d('0x43')][_0xf38d('0x6d')]({'where':{'id':_0x510bf4[_0xf38d('0x5b')]['id']}})[_0xf38d('0x22')](handleEntityNotFound(_0x938599,null))['then'](function(_0xbb107d){if(_0xbb107d){_0x5f3c56=_0xbb107d;_0x54b024['model']=_['keys'](db[_0xf38d('0xa2')]['rawAttributes']);_0x54b024[_0xf38d('0x49')]=_[_0xf38d('0x48')](_0x510bf4['query']);_0x54b024[_0xf38d('0x4a')]=_['intersection'](_0x54b024[_0xf38d('0x4c')],_0x54b024[_0xf38d('0x49')]);_0x5501d4['attributes']=_['intersection'](_0x54b024[_0xf38d('0x4c')],qs[_0xf38d('0x4e')](_0x510bf4[_0xf38d('0x49')][_0xf38d('0x4e')]));_0x5501d4[_0xf38d('0x4d')]=_0x5501d4[_0xf38d('0x4d')][_0xf38d('0x4f')]?_0x5501d4[_0xf38d('0x4d')]:_0x54b024['model'];_0x5501d4[_0xf38d('0x6e')]=qs[_0xf38d('0x51')](_0x510bf4[_0xf38d('0x49')][_0xf38d('0x51')]);_0x5501d4[_0xf38d('0x52')]=qs[_0xf38d('0x4a')](_[_0xf38d('0x53')](_0x510bf4[_0xf38d('0x49')],_0x54b024['filters']));if(_0x510bf4[_0xf38d('0x49')]['filter']){_0x5501d4[_0xf38d('0x52')]=_[_0xf38d('0x55')](_0x5501d4[_0xf38d('0x52')],{'$or':_[_0xf38d('0x42')](_0x5501d4[_0xf38d('0x4d')],function(_0xedde15){var _0x241e9f={};_0x241e9f[_0xedde15]={'$like':'%'+_0x510bf4[_0xf38d('0x49')][_0xf38d('0x54')]+'%'};return _0x241e9f;})});}_0x5501d4=_[_0xf38d('0x55')]({},_0x5501d4,_0x510bf4[_0xf38d('0x5c')]);return _0x5f3c56[_0xf38d('0xc2')](_0x5501d4);}})[_0xf38d('0x22')](function(_0x31e810){if(_0x31e810){_0x1fa830=_0x31e810[_0xf38d('0x4f')];if(!_0x510bf4[_0xf38d('0x49')][_0xf38d('0x50')](_0xf38d('0x74'))){_0x5501d4[_0xf38d('0x33')]=qs[_0xf38d('0x33')](_0x510bf4[_0xf38d('0x49')][_0xf38d('0x33')]);_0x5501d4[_0xf38d('0x30')]=qs[_0xf38d('0x30')](_0x510bf4['query'][_0xf38d('0x30')]);}return _0x5f3c56[_0xf38d('0xc2')](_0x5501d4);}})[_0xf38d('0x22')](function(_0x415278){if(_0x415278){return _0x415278?{'count':_0x1fa830,'rows':_0x415278}:null;}})[_0xf38d('0x22')](respondWithResult(_0x938599,null))[_0xf38d('0x65')](handleError(_0x938599,null));};exports['send']=function(_0x5d5205,_0x39ccd2,_0x231b44){var _0xfc05f3,_0x928027,_0x4417b8;if(_['isNil'](_0x5d5205['body'][_0xf38d('0x66')])||_0x5d5205[_0xf38d('0x66')]['body']===''){throw new db[(_0xf38d('0x7e'))][(_0xf38d('0x78'))](_0xf38d('0x81'));}if(_['isNil'](_0x5d5205['body']['to'])){}_0xfc05f3=_0x5d5205[_0xf38d('0x66')]['to'];return db[_0xf38d('0x43')][_0xf38d('0x6d')]({'where':{'id':_0x5d5205[_0xf38d('0x5b')]['id']}})[_0xf38d('0x22')](handleEntityNotFound(_0x39ccd2,null))[_0xf38d('0x22')](function(_0x3abbe2){if(_0x3abbe2){return db['OpenchannelAccount']['find']({'where':{'id':_0x3abbe2['id']},'include':[{'model':db['CmList'],'as':_0xf38d('0x87'),'include':[{'model':db['CmContact'],'as':_0xf38d('0x88'),'where':{[_0x3abbe2[_0xf38d('0x82')]]:_0xfc05f3},'limit':0x1,'order':[[_0xf38d('0x7c'),_0xf38d('0xc3')]]}]}]})['then'](handleEntityNotFound(_0x39ccd2,null))[_0xf38d('0x22')](function(_0x291a29){if(_0x291a29&&_0x291a29['List']){_0x928027=_0x291a29[_0xf38d('0x60')]({'plain':!![]});if(_0x928027[_0xf38d('0x87')]&&_0x928027[_0xf38d('0x87')][_0xf38d('0x88')][_0xf38d('0x4f')]){return _0x928027[_0xf38d('0x87')][_0xf38d('0x88')][0x0];}return db[_0xf38d('0x77')][_0xf38d('0x5e')](_[_0xf38d('0x8e')](_0x5d5205['body'],{'firstName':_0xfc05f3,[_0x291a29[_0xf38d('0x82')]]:_0xfc05f3,'phone':_0xfc05f3,'ListId':_0x928027[_0xf38d('0x7d')]}));}})['then'](handleEntityNotFound(_0x39ccd2,null))[_0xf38d('0x22')](function(_0xe88125){if(_0xe88125){_0x4417b8=_0xe88125;return db[_0xf38d('0x93')][_0xf38d('0x5d')]({'where':{'ContactId':_0x4417b8['id'],'closed':![],'OpenchannelAccountId':_0x928027['id']}})[_0xf38d('0x22')](function(_0x4d3b65){if(_0x4d3b65){return[_0x4d3b65,![]];}return db[_0xf38d('0x93')][_0xf38d('0x5e')]({'UserId':_0x5d5205[_0xf38d('0x5f')]['id'],'ContactId':_0x4417b8['id'],'OpenchannelAccountId':_0x928027['id'],'lastMsgDirection':_0xf38d('0xc4'),'firstMsgDirection':_0xf38d('0xc4'),'Messages':[_[_0xf38d('0x55')](_0x5d5205['body'],{'read':![],'body':_0x5d5205[_0xf38d('0x66')][_0xf38d('0x66')],'OpenchannelAccountId':_0x928027['id'],'UserId':_0x5d5205[_0xf38d('0x5f')]['id'],'ContactId':_0x4417b8['id']})]},{'include':[{'model':db[_0xf38d('0x9f')],'as':_0xf38d('0xc5')}]})['then'](function(_0x1881e1){return[_0x1881e1,!![]];});});}})[_0xf38d('0x95')](function(_0xde6168,_0x62257f){if(_0x62257f){return _0xde6168;}return db[_0xf38d('0x9f')][_0xf38d('0x5e')](_['merge'](_0x5d5205[_0xf38d('0x66')],{'read':![],'body':_0x5d5205[_0xf38d('0x66')][_0xf38d('0x66')],'OpenchannelAccountId':_0x928027['id'],'OpenchannelInteractionId':_0xde6168['id'],'UserId':_0x5d5205[_0xf38d('0x5f')]['id'],'ContactId':_0x4417b8['id']}))[_0xf38d('0x22')](function(_0x3b77ec){_0xde6168[_0xf38d('0xc6')][_0xf38d('0xc5')]=[];_0xde6168[_0xf38d('0xc6')]['Messages'][_0xf38d('0x9b')](_0x3b77ec[_0xf38d('0xc6')]);return _0xde6168;});});}})[_0xf38d('0x22')](respondWithResult(_0x39ccd2,null))[_0xf38d('0x65')](handleError(_0x39ccd2,null));};
\ No newline at end of file
+var _0xeb3a=['userProfileId','autoAssociation','UserProfileResource','update','body','find','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','findOne','rawAttributes','findAll','removeDispositions','addAnswer','CannedAnswer','getAnswers','removeAnswers','ids','openchannel','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','OpenchannelApplication','Applications','account','applications','list','orderBy','priority','asc','Contacts','contact','firstName','threadId','OpenchannelInteraction','externalUrl','ContactId','spread','lastName','messageId','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','startRouting','Start','EventManager','notify','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findAndCountAll','finally','json','getApplications','getInteractions','Owner','fullname','internal','Tag','Tags','color','tag','addAgents','omit','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','DESC','out','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','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','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','jayson/promise','client','http','request','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','error','code','message','info','catch','sendStatus','status','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','destroy','get','OpenchannelAccounts','end','stack','name','send','mandatoryDispositionPause','map','OpenchannelAccount','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','type','VIRTUAL','merge','options','includeAll','include','rows','show','params','Pause','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role'];(function(_0xb1b166,_0x27a312){var _0x5ee259=function(_0x1117ac){while(--_0x1117ac){_0xb1b166['push'](_0xb1b166['shift']());}};_0x5ee259(++_0x27a312);}(_0xeb3a,0x12f));var _0xaeb3=function(_0x5cc933,_0x842dbe){_0x5cc933=_0x5cc933-0x0;var _0x50e2b7=_0xeb3a[_0x5cc933];return _0x50e2b7;};'use strict';var emlformat=require(_0xaeb3('0x0'));var rimraf=require(_0xaeb3('0x1'));var zipdir=require(_0xaeb3('0x2'));var jsonpatch=require(_0xaeb3('0x3'));var rp=require(_0xaeb3('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xaeb3('0x5'));var util=require(_0xaeb3('0x6'));var path=require(_0xaeb3('0x7'));var sox=require(_0xaeb3('0x8'));var csv=require(_0xaeb3('0x9'));var ejs=require(_0xaeb3('0xa'));var fs=require('fs');var fs_extra=require(_0xaeb3('0xb'));var _=require(_0xaeb3('0xc'));var squel=require('squel');var crypto=require(_0xaeb3('0xd'));var jsforce=require(_0xaeb3('0xe'));var deskjs=require(_0xaeb3('0xf'));var toCsv=require(_0xaeb3('0x9'));var querystring=require(_0xaeb3('0x10'));var Papa=require(_0xaeb3('0x11'));var Redis=require(_0xaeb3('0x12'));var authService=require(_0xaeb3('0x13'));var qs=require(_0xaeb3('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xaeb3('0x15'));var logger=require('../../config/logger')(_0xaeb3('0x16'));var utils=require(_0xaeb3('0x17'));var config=require(_0xaeb3('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xaeb3('0x19'))['db'];config[_0xaeb3('0x1a')]=_[_0xaeb3('0x1b')](config[_0xaeb3('0x1a')],{'host':_0xaeb3('0x1c'),'port':0x18eb});var socket=require(_0xaeb3('0x1d'))(new Redis(config['redis']));require('./openchannelAccount.socket')['register'](socket);var jayson=require(_0xaeb3('0x1e'));var client=jayson[_0xaeb3('0x1f')][_0xaeb3('0x20')]({'port':0x232c});var client9002=jayson[_0xaeb3('0x1f')][_0xaeb3('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x1c7df6,_0x573c50,_0x2fa648,_0x2b6901){return new BPromise(function(_0x59e3ca,_0x59dac2){var _0x2151d2=_0x2b6901||client;return _0x2151d2[_0xaeb3('0x21')](_0x1c7df6,_0x2fa648)['then'](function(_0x4da5ad){logger['info'](_0xaeb3('0x22'),_0x573c50,_0xaeb3('0x23'));logger[_0xaeb3('0x24')](_0xaeb3('0x25'),_0x573c50,_0xaeb3('0x23'),JSON['stringify'](_0x4da5ad));if(_0x4da5ad[_0xaeb3('0x26')]){if(_0x4da5ad[_0xaeb3('0x26')][_0xaeb3('0x27')]===0x1f4){logger[_0xaeb3('0x26')](_0xaeb3('0x22'),_0x573c50,_0x4da5ad['error']['message']);return _0x59dac2(_0x4da5ad[_0xaeb3('0x26')][_0xaeb3('0x28')]);}logger[_0xaeb3('0x26')](_0xaeb3('0x22'),_0x573c50,_0x4da5ad[_0xaeb3('0x26')][_0xaeb3('0x28')]);return _0x59e3ca(_0x4da5ad[_0xaeb3('0x26')][_0xaeb3('0x28')]);}else{logger[_0xaeb3('0x29')](_0xaeb3('0x22'),_0x573c50,_0xaeb3('0x23'));_0x59e3ca(_0x4da5ad['result'][_0xaeb3('0x28')]);}})[_0xaeb3('0x2a')](function(_0x8be2f6){logger[_0xaeb3('0x26')]('OpenchannelAccount,\x20%s,\x20%s',_0x573c50,_0x8be2f6);_0x59dac2(_0x8be2f6);});});}function respondWithStatusCode(_0x23e4d7,_0x583838){_0x583838=_0x583838||0xcc;return function(_0x12cbd5){if(_0x12cbd5){return _0x23e4d7[_0xaeb3('0x2b')](_0x583838);}return _0x23e4d7[_0xaeb3('0x2c')](_0x583838)['end']();};}function respondWithResult(_0xb10cd4,_0x588592){_0x588592=_0x588592||0xc8;return function(_0x3d98cb){if(_0x3d98cb){return _0xb10cd4[_0xaeb3('0x2c')](_0x588592)['json'](_0x3d98cb);}};}function respondWithFilteredResult(_0x1ff26a,_0x23dd08){return function(_0x456d19){if(_0x456d19){var _0x54cacb=typeof _0x23dd08[_0xaeb3('0x2d')]===_0xaeb3('0x2e')&&typeof _0x23dd08['limit']===_0xaeb3('0x2e');var _0x4811e0=_0x456d19[_0xaeb3('0x2f')];var _0x52be91=_0x54cacb?0x0:_0x23dd08['offset'];var _0x51d081=_0x54cacb?_0x456d19[_0xaeb3('0x2f')]:_0x23dd08[_0xaeb3('0x2d')]+_0x23dd08[_0xaeb3('0x30')];var _0x500693;if(_0x51d081>=_0x4811e0){_0x51d081=_0x4811e0;_0x500693=0xc8;}else{_0x500693=0xce;}_0x1ff26a['status'](_0x500693);return _0x1ff26a[_0xaeb3('0x31')](_0xaeb3('0x32'),_0x52be91+'-'+_0x51d081+'/'+_0x4811e0)['json'](_0x456d19);}return null;};}function patchUpdates(_0x27f4be){return function(_0xd5287e){try{jsonpatch[_0xaeb3('0x33')](_0xd5287e,_0x27f4be,!![]);}catch(_0x3917e0){return BPromise[_0xaeb3('0x34')](_0x3917e0);}return _0xd5287e[_0xaeb3('0x35')]();};}function saveUpdates(_0x55b52b,_0x4a6049){return function(_0x382091){if(_0x382091){return _0x382091['update'](_0x55b52b)[_0xaeb3('0x36')](function(_0x2b77ec){return _0x2b77ec;});}return null;};}function removeEntity(_0x2f7a3d,_0x195e89){return function(_0x2b2f7c){if(_0x2b2f7c){return _0x2b2f7c[_0xaeb3('0x37')]()['then'](function(){var _0x164b62=_0x2b2f7c[_0xaeb3('0x38')]({'plain':!![]});var _0x3b5428=_0xaeb3('0x39');return db['UserProfileResource']['destroy']({'where':{'type':_0x3b5428,'resourceId':_0x164b62['id']}})['then'](function(){return _0x2b2f7c;});})[_0xaeb3('0x36')](function(){_0x2f7a3d['status'](0xcc)[_0xaeb3('0x3a')]();});}};}function handleEntityNotFound(_0x33c166,_0x4193cd){return function(_0x1db858){if(!_0x1db858){_0x33c166['sendStatus'](0x194);}return _0x1db858;};}function handleError(_0x21a169,_0x14a88e){_0x14a88e=_0x14a88e||0x1f4;return function(_0x2acb76){logger['error'](_0x2acb76[_0xaeb3('0x3b')]);if(_0x2acb76[_0xaeb3('0x3c')]){delete _0x2acb76[_0xaeb3('0x3c')];}_0x21a169[_0xaeb3('0x2c')](_0x14a88e)[_0xaeb3('0x3d')](_0x2acb76);};}exports['index']=function(_0x2a5e60,_0x5149bd){var _0x2fddd8={'include':[{'model':db['Pause'],'as':_0xaeb3('0x3e')}]},_0x5d2751={},_0x216a51={'count':0x0,'rows':[]};var _0x209c8f=_[_0xaeb3('0x3f')](db[_0xaeb3('0x40')]['rawAttributes'],function(_0x1c3fe6){return{'name':_0x1c3fe6['fieldName'],'type':_0x1c3fe6['type'][_0xaeb3('0x41')]};});_0x5d2751['model']=_[_0xaeb3('0x3f')](_0x209c8f,_0xaeb3('0x3c'));_0x5d2751[_0xaeb3('0x42')]=_[_0xaeb3('0x43')](_0x2a5e60[_0xaeb3('0x42')]);_0x5d2751[_0xaeb3('0x44')]=_[_0xaeb3('0x45')](_0x5d2751[_0xaeb3('0x46')],_0x5d2751[_0xaeb3('0x42')]);_0x2fddd8[_0xaeb3('0x47')]=_[_0xaeb3('0x45')](_0x5d2751[_0xaeb3('0x46')],qs['fields'](_0x2a5e60['query'][_0xaeb3('0x48')]));_0x2fddd8[_0xaeb3('0x47')]=_0x2fddd8[_0xaeb3('0x47')][_0xaeb3('0x49')]?_0x2fddd8['attributes']:_0x5d2751[_0xaeb3('0x46')];if(!_0x2a5e60[_0xaeb3('0x42')][_0xaeb3('0x4a')](_0xaeb3('0x4b'))){_0x2fddd8[_0xaeb3('0x30')]=qs['limit'](_0x2a5e60['query']['limit']);_0x2fddd8['offset']=qs[_0xaeb3('0x2d')](_0x2a5e60[_0xaeb3('0x42')][_0xaeb3('0x2d')]);}_0x2fddd8[_0xaeb3('0x4c')]=qs[_0xaeb3('0x4d')](_0x2a5e60[_0xaeb3('0x42')][_0xaeb3('0x4d')]);_0x2fddd8['where']=qs['filters'](_[_0xaeb3('0x4e')](_0x2a5e60[_0xaeb3('0x42')],_0x5d2751[_0xaeb3('0x44')]),_0x209c8f);if(_0x2a5e60[_0xaeb3('0x42')][_0xaeb3('0x4f')]){_0x2fddd8['where']=_['merge'](_0x2fddd8[_0xaeb3('0x50')],{'$or':_['map'](_0x209c8f,function(_0x50659c){if(_0x50659c[_0xaeb3('0x51')]!==_0xaeb3('0x52')){var _0x5770ad={};_0x5770ad[_0x50659c[_0xaeb3('0x3c')]]={'$like':'%'+_0x2a5e60['query']['filter']+'%'};return _0x5770ad;}})});}_0x2fddd8=_[_0xaeb3('0x53')]({},_0x2fddd8,_0x2a5e60[_0xaeb3('0x54')]);var _0x49d8e1={'where':_0x2fddd8[_0xaeb3('0x50')]};return db[_0xaeb3('0x40')][_0xaeb3('0x2f')](_0x49d8e1)['then'](function(_0x635df){_0x216a51[_0xaeb3('0x2f')]=_0x635df;if(_0x2a5e60['query'][_0xaeb3('0x55')]){_0x2fddd8[_0xaeb3('0x56')]=[{'all':!![]}];}return db[_0xaeb3('0x40')]['findAll'](_0x2fddd8);})[_0xaeb3('0x36')](function(_0x1f813e){_0x216a51[_0xaeb3('0x57')]=_0x1f813e;return _0x216a51;})['then'](respondWithFilteredResult(_0x5149bd,_0x2fddd8))['catch'](handleError(_0x5149bd,null));};exports[_0xaeb3('0x58')]=function(_0x43ea04,_0x3ce163){var _0x5d4ea6={'raw':![],'where':{'id':_0x43ea04[_0xaeb3('0x59')]['id']},'include':[{'model':db[_0xaeb3('0x5a')],'as':_0xaeb3('0x3e')}]},_0xf6a6b3={};_0xf6a6b3[_0xaeb3('0x46')]=_[_0xaeb3('0x43')](db[_0xaeb3('0x40')]['rawAttributes']);_0xf6a6b3[_0xaeb3('0x42')]=_[_0xaeb3('0x43')](_0x43ea04['query']);_0xf6a6b3[_0xaeb3('0x44')]=_[_0xaeb3('0x45')](_0xf6a6b3[_0xaeb3('0x46')],_0xf6a6b3[_0xaeb3('0x42')]);_0x5d4ea6[_0xaeb3('0x47')]=_[_0xaeb3('0x45')](_0xf6a6b3[_0xaeb3('0x46')],qs['fields'](_0x43ea04[_0xaeb3('0x42')][_0xaeb3('0x48')]));_0x5d4ea6['attributes']=_0x5d4ea6['attributes']['length']?_0x5d4ea6[_0xaeb3('0x47')]:_0xf6a6b3['model'];if(_0x43ea04['query'][_0xaeb3('0x55')]){_0x5d4ea6['include']=[{'all':!![]}];}_0x5d4ea6=_['merge']({},_0x5d4ea6,_0x43ea04['options']);return db[_0xaeb3('0x40')]['find'](_0x5d4ea6)[_0xaeb3('0x36')](handleEntityNotFound(_0x3ce163,null))[_0xaeb3('0x36')](respondWithResult(_0x3ce163,null))[_0xaeb3('0x2a')](handleError(_0x3ce163,null));};exports[_0xaeb3('0x5b')]=function(_0x5c672b,_0x152512){return db['OpenchannelAccount']['create'](_0x5c672b['body'],{})[_0xaeb3('0x36')](function(_0x383e86){var _0x3a3c2c=_0x5c672b[_0xaeb3('0x5c')]['get']({'plain':!![]});if(!_0x3a3c2c)throw new Error(_0xaeb3('0x5d'));if(_0x3a3c2c[_0xaeb3('0x5e')]===_0xaeb3('0x5c')){var _0x4388e1=_0x383e86['get']({'plain':!![]});var _0x44d3e1='OpenchannelAccounts';return db['UserProfileSection']['find']({'where':{'name':_0x44d3e1,'userProfileId':_0x3a3c2c[_0xaeb3('0x5f')]},'raw':!![]})[_0xaeb3('0x36')](function(_0x1c93dd){if(_0x1c93dd&&_0x1c93dd[_0xaeb3('0x60')]===0x0){return db[_0xaeb3('0x61')]['create']({'name':_0x4388e1[_0xaeb3('0x3c')],'resourceId':_0x4388e1['id'],'type':_0x1c93dd[_0xaeb3('0x3c')],'sectionId':_0x1c93dd['id']},{})[_0xaeb3('0x36')](function(){return _0x383e86;});}else{return _0x383e86;}})[_0xaeb3('0x2a')](function(_0x386a1f){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x386a1f);throw _0x386a1f;});}return _0x383e86;})['then'](respondWithResult(_0x152512,0xc9))[_0xaeb3('0x2a')](handleError(_0x152512,null));};exports[_0xaeb3('0x62')]=function(_0x3053bb,_0x40ce9a){if(_0x3053bb['body']['id']){delete _0x3053bb[_0xaeb3('0x63')]['id'];}return db['OpenchannelAccount'][_0xaeb3('0x64')]({'where':{'id':_0x3053bb[_0xaeb3('0x59')]['id']},'include':[{'model':db['Pause'],'as':_0xaeb3('0x3e')}]})['then'](handleEntityNotFound(_0x40ce9a,null))[_0xaeb3('0x36')](saveUpdates(_0x3053bb['body'],null))[_0xaeb3('0x36')](respondWithResult(_0x40ce9a,null))['catch'](handleError(_0x40ce9a,null));};exports[_0xaeb3('0x37')]=function(_0x37f937,_0xc3b294){return db[_0xaeb3('0x40')]['find']({'where':{'id':_0x37f937[_0xaeb3('0x59')]['id']}})['then'](handleEntityNotFound(_0xc3b294,null))['then'](removeEntity(_0xc3b294,null))['catch'](handleError(_0xc3b294,null));};exports[_0xaeb3('0x65')]=function(_0x345b8c,_0x1ed52b){return db[_0xaeb3('0x40')][_0xaeb3('0x65')]()[_0xaeb3('0x36')](respondWithResult(_0x1ed52b,null))[_0xaeb3('0x2a')](handleError(_0x1ed52b,null));};exports[_0xaeb3('0x66')]=function(_0x2fe620,_0x2750fc,_0x51162d){if(_0x2fe620['body']['id']){delete _0x2fe620[_0xaeb3('0x63')]['id'];}return db['OpenchannelAccount'][_0xaeb3('0x64')]({'where':{'id':_0x2fe620[_0xaeb3('0x59')]['id']}})['then'](handleEntityNotFound(_0x2750fc,null))[_0xaeb3('0x36')](function(_0x21002c){if(_0x21002c){_0x2fe620['body'][_0xaeb3('0x67')]=_0x21002c['id'];return db[_0xaeb3('0x68')][_0xaeb3('0x5b')](_0x2fe620[_0xaeb3('0x63')]);}})[_0xaeb3('0x36')](respondWithResult(_0x2750fc,null))[_0xaeb3('0x2a')](handleError(_0x2750fc,null));};exports[_0xaeb3('0x69')]=function(_0x5505f4,_0x2c682c,_0x214445){var _0x2dcaf4={'raw':![],'where':{}};var _0x5dcbc0={};var _0x118dbc={'count':0x0,'rows':[]};return db[_0xaeb3('0x40')][_0xaeb3('0x6a')]({'where':{'id':_0x5505f4['params']['id']}})[_0xaeb3('0x36')](handleEntityNotFound(_0x2c682c,null))[_0xaeb3('0x36')](function(_0x35e8ba){if(_0x35e8ba){_0x5dcbc0[_0xaeb3('0x46')]=_[_0xaeb3('0x43')](db[_0xaeb3('0x68')][_0xaeb3('0x6b')]);_0x5dcbc0['query']=_[_0xaeb3('0x43')](_0x5505f4[_0xaeb3('0x42')]);_0x5dcbc0[_0xaeb3('0x44')]=_[_0xaeb3('0x45')](_0x5dcbc0[_0xaeb3('0x46')],_0x5dcbc0[_0xaeb3('0x42')]);_0x2dcaf4['attributes']=_[_0xaeb3('0x45')](_0x5dcbc0[_0xaeb3('0x46')],qs['fields'](_0x5505f4[_0xaeb3('0x42')]['fields']));_0x2dcaf4[_0xaeb3('0x47')]=_0x2dcaf4[_0xaeb3('0x47')][_0xaeb3('0x49')]?_0x2dcaf4[_0xaeb3('0x47')]:_0x5dcbc0[_0xaeb3('0x46')];if(!_0x5505f4['query'][_0xaeb3('0x4a')]('nolimit')){_0x2dcaf4[_0xaeb3('0x30')]=qs[_0xaeb3('0x30')](_0x5505f4[_0xaeb3('0x42')][_0xaeb3('0x30')]);_0x2dcaf4['offset']=qs['offset'](_0x5505f4[_0xaeb3('0x42')][_0xaeb3('0x2d')]);}_0x2dcaf4[_0xaeb3('0x4c')]=qs[_0xaeb3('0x4d')](_0x5505f4['query'][_0xaeb3('0x4d')]);_0x2dcaf4[_0xaeb3('0x50')]=qs[_0xaeb3('0x44')](_[_0xaeb3('0x4e')](_0x5505f4[_0xaeb3('0x42')],_0x5dcbc0['filters']));_0x2dcaf4[_0xaeb3('0x50')][_0xaeb3('0x67')]=_0x35e8ba['id'];if(_0x5505f4[_0xaeb3('0x42')][_0xaeb3('0x4f')]){_0x2dcaf4[_0xaeb3('0x50')]=_[_0xaeb3('0x53')](_0x2dcaf4['where'],{'$or':_[_0xaeb3('0x3f')](_0x2dcaf4[_0xaeb3('0x47')],function(_0x3bc1a9){var _0x580945={};_0x580945[_0x3bc1a9]={'$like':'%'+_0x5505f4['query'][_0xaeb3('0x4f')]+'%'};return _0x580945;})});}_0x2dcaf4=_[_0xaeb3('0x53')]({},_0x2dcaf4,_0x5505f4['options']);return db['Disposition'][_0xaeb3('0x2f')]({'where':_0x2dcaf4['where']})[_0xaeb3('0x36')](function(_0x371b4b){_0x118dbc[_0xaeb3('0x2f')]=_0x371b4b;if(_0x5505f4['query']['includeAll']){_0x2dcaf4[_0xaeb3('0x56')]=[{'all':!![]}];}return db[_0xaeb3('0x68')][_0xaeb3('0x6c')](_0x2dcaf4);})[_0xaeb3('0x36')](function(_0x1ddf84){_0x118dbc[_0xaeb3('0x57')]=_0x1ddf84;return _0x118dbc;});}})['then'](respondWithFilteredResult(_0x2c682c,_0x2dcaf4))[_0xaeb3('0x2a')](handleError(_0x2c682c,null));};exports[_0xaeb3('0x6d')]=function(_0x2e2d66,_0x326793,_0x16a8d7){return db[_0xaeb3('0x40')][_0xaeb3('0x64')]({'where':{'id':_0x2e2d66['params']['id']}})[_0xaeb3('0x36')](handleEntityNotFound(_0x326793,null))[_0xaeb3('0x36')](function(_0x10021b){if(_0x10021b){return _0x10021b[_0xaeb3('0x6d')](_0x2e2d66[_0xaeb3('0x42')]['ids']);}})[_0xaeb3('0x36')](respondWithStatusCode(_0x326793,null))[_0xaeb3('0x2a')](handleError(_0x326793,null));};exports[_0xaeb3('0x6e')]=function(_0x3f1d04,_0xf971dc,_0x326bb8){if(_0x3f1d04[_0xaeb3('0x63')]['id']){delete _0x3f1d04[_0xaeb3('0x63')]['id'];}return db[_0xaeb3('0x40')][_0xaeb3('0x64')]({'where':{'id':_0x3f1d04[_0xaeb3('0x59')]['id']}})['then'](handleEntityNotFound(_0xf971dc,null))['then'](function(_0x32f427){if(_0x32f427){_0x3f1d04['body']['OpenchannelAccountId']=_0x32f427['id'];return db[_0xaeb3('0x6f')]['create'](_0x3f1d04[_0xaeb3('0x63')]);}})[_0xaeb3('0x36')](respondWithResult(_0xf971dc,null))[_0xaeb3('0x2a')](handleError(_0xf971dc,null));};exports[_0xaeb3('0x70')]=function(_0x11cf62,_0x3b538f,_0x6bc08e){var _0x3dfdc1={'raw':![],'where':{}};var _0x7c1a97={};var _0xaf2358={'count':0x0,'rows':[]};return db[_0xaeb3('0x40')][_0xaeb3('0x6a')]({'where':{'id':_0x11cf62[_0xaeb3('0x59')]['id']}})['then'](handleEntityNotFound(_0x3b538f,null))[_0xaeb3('0x36')](function(_0x5e2944){if(_0x5e2944){_0x7c1a97[_0xaeb3('0x46')]=_[_0xaeb3('0x43')](db[_0xaeb3('0x6f')][_0xaeb3('0x6b')]);_0x7c1a97[_0xaeb3('0x42')]=_[_0xaeb3('0x43')](_0x11cf62[_0xaeb3('0x42')]);_0x7c1a97['filters']=_[_0xaeb3('0x45')](_0x7c1a97[_0xaeb3('0x46')],_0x7c1a97[_0xaeb3('0x42')]);_0x3dfdc1['attributes']=_['intersection'](_0x7c1a97[_0xaeb3('0x46')],qs[_0xaeb3('0x48')](_0x11cf62[_0xaeb3('0x42')]['fields']));_0x3dfdc1[_0xaeb3('0x47')]=_0x3dfdc1['attributes'][_0xaeb3('0x49')]?_0x3dfdc1[_0xaeb3('0x47')]:_0x7c1a97[_0xaeb3('0x46')];if(!_0x11cf62[_0xaeb3('0x42')][_0xaeb3('0x4a')]('nolimit')){_0x3dfdc1[_0xaeb3('0x30')]=qs[_0xaeb3('0x30')](_0x11cf62[_0xaeb3('0x42')][_0xaeb3('0x30')]);_0x3dfdc1[_0xaeb3('0x2d')]=qs[_0xaeb3('0x2d')](_0x11cf62[_0xaeb3('0x42')][_0xaeb3('0x2d')]);}_0x3dfdc1[_0xaeb3('0x4c')]=qs[_0xaeb3('0x4d')](_0x11cf62['query'][_0xaeb3('0x4d')]);_0x3dfdc1[_0xaeb3('0x50')]=qs['filters'](_[_0xaeb3('0x4e')](_0x11cf62[_0xaeb3('0x42')],_0x7c1a97[_0xaeb3('0x44')]));_0x3dfdc1[_0xaeb3('0x50')][_0xaeb3('0x67')]=_0x5e2944['id'];if(_0x11cf62[_0xaeb3('0x42')]['filter']){_0x3dfdc1['where']=_['merge'](_0x3dfdc1[_0xaeb3('0x50')],{'$or':_[_0xaeb3('0x3f')](_0x3dfdc1[_0xaeb3('0x47')],function(_0x5d7739){var _0x2a223a={};_0x2a223a[_0x5d7739]={'$like':'%'+_0x11cf62[_0xaeb3('0x42')]['filter']+'%'};return _0x2a223a;})});}_0x3dfdc1=_['merge']({},_0x3dfdc1,_0x11cf62['options']);return db['CannedAnswer']['count']({'where':_0x3dfdc1[_0xaeb3('0x50')]})[_0xaeb3('0x36')](function(_0x204927){_0xaf2358['count']=_0x204927;if(_0x11cf62[_0xaeb3('0x42')]['includeAll']){_0x3dfdc1[_0xaeb3('0x56')]=[{'all':!![]}];}return db['CannedAnswer'][_0xaeb3('0x6c')](_0x3dfdc1);})[_0xaeb3('0x36')](function(_0x4a03f0){_0xaf2358[_0xaeb3('0x57')]=_0x4a03f0;return _0xaf2358;});}})[_0xaeb3('0x36')](respondWithFilteredResult(_0x3b538f,_0x3dfdc1))[_0xaeb3('0x2a')](handleError(_0x3b538f,null));};exports[_0xaeb3('0x71')]=function(_0x1f8364,_0x1d0fd7,_0x335a37){return db['OpenchannelAccount']['find']({'where':{'id':_0x1f8364[_0xaeb3('0x59')]['id']}})['then'](handleEntityNotFound(_0x1d0fd7,null))[_0xaeb3('0x36')](function(_0x56acd5){if(_0x56acd5){return _0x56acd5[_0xaeb3('0x71')](_0x1f8364[_0xaeb3('0x42')][_0xaeb3('0x72')]);}})[_0xaeb3('0x36')](respondWithStatusCode(_0x1d0fd7,null))[_0xaeb3('0x2a')](handleError(_0x1d0fd7,null));};exports['notify']=function(_0x1f13bc,_0x15a700,_0x8cfabe){var _0x3584f2={'body':_0x1f13bc['body'],'channel':_0xaeb3('0x73')};var _0x553591=[];var _0x3232e3=[];var _0x445bfb={};var _0x4fe4d8=![];return db[_0xaeb3('0x74')]['describe']()[_0xaeb3('0x36')](function(_0xaa5d72){if(!_0xaa5d72){throw new db[(_0xaeb3('0x75'))][(_0xaeb3('0x76'))](_0xaeb3('0x77'));}_0x553591=_[_0xaeb3('0x78')](_[_0xaeb3('0x43')](_0xaa5d72),[_0xaeb3('0x79'),_0xaeb3('0x7a')]);_0x3232e3=_['difference'](_[_0xaeb3('0x43')](_0xaa5d72),[_0xaeb3('0x79'),_0xaeb3('0x7a'),_0xaeb3('0x7b'),'ListId']);if(_0x1f13bc[_0xaeb3('0x63')]['id']){delete _0x1f13bc['body']['id'];}if(_[_0xaeb3('0x7c')](_0x1f13bc[_0xaeb3('0x63')][_0xaeb3('0x7d')])){throw new db[(_0xaeb3('0x75'))]['ValidationError'](_0xaeb3('0x7e'));}if(_[_0xaeb3('0x7c')](_0x1f13bc[_0xaeb3('0x63')][_0xaeb3('0x63')])||_0x1f13bc[_0xaeb3('0x63')][_0xaeb3('0x63')]===''){throw new db['Sequelize'][(_0xaeb3('0x76'))](_0xaeb3('0x7f'));}if(_[_0xaeb3('0x7c')](_0x1f13bc[_0xaeb3('0x63')][_0xaeb3('0x80')])){throw new db[(_0xaeb3('0x75'))][(_0xaeb3('0x76'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x3232e3);}if(!_['includes'](_0x3232e3,_0x1f13bc[_0xaeb3('0x63')][_0xaeb3('0x80')])){throw new db['Sequelize']['ValidationError'](_0xaeb3('0x81')+_0x3232e3);}_0x445bfb[_0x1f13bc['body'][_0xaeb3('0x80')]]=_0x1f13bc[_0xaeb3('0x63')]['from'];})[_0xaeb3('0x36')](function(){return db[_0xaeb3('0x40')][_0xaeb3('0x64')]({'where':{'id':_0x1f13bc[_0xaeb3('0x59')]['id']},'include':[{'model':db[_0xaeb3('0x82')],'as':_0xaeb3('0x83'),'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x445bfb,'limit':0x1,'order':[[_0xaeb3('0x7a'),'DESC']]}]},{'model':db[_0xaeb3('0x84')],'as':_0xaeb3('0x85')}]});})[_0xaeb3('0x36')](handleEntityNotFound(_0x15a700,null))[_0xaeb3('0x36')](function(_0x509800){if(_0x509800&&_0x509800[_0xaeb3('0x83')]){_0x3584f2[_0xaeb3('0x86')]=_0x509800;_0x3584f2[_0xaeb3('0x87')]=_0x509800[_0xaeb3('0x85')];_0x3584f2[_0xaeb3('0x88')]=_0x509800['List'];_0x3584f2[_0xaeb3('0x87')]=_[_0xaeb3('0x89')](_0x3584f2[_0xaeb3('0x87')],[_0xaeb3('0x8a')],[_0xaeb3('0x8b')]);if(_0x3584f2[_0xaeb3('0x86')][_0xaeb3('0x85')]){delete _0x3584f2[_0xaeb3('0x86')]['Applications'];}if(_0x3584f2[_0xaeb3('0x86')][_0xaeb3('0x83')]&&_0x3584f2['account'][_0xaeb3('0x83')]['Contacts'][_0xaeb3('0x49')]){return _0x3584f2[_0xaeb3('0x86')][_0xaeb3('0x83')][_0xaeb3('0x8c')][0x0];}var _0x24d365=_[_0xaeb3('0x1b')](_0x1f13bc['body'],{'firstName':_0x1f13bc[_0xaeb3('0x63')]['from'],'ListId':_0x509800['ListId']});_0x24d365[_0x1f13bc[_0xaeb3('0x63')][_0xaeb3('0x80')]]=_0x1f13bc['body'][_0xaeb3('0x7d')];return db['CmContact']['create'](_0x24d365,{'fields':_0x553591,'raw':!![]});}})[_0xaeb3('0x36')](handleEntityNotFound(_0x15a700,null))['then'](function(_0x55eeac){_0x3584f2[_0xaeb3('0x8d')]=_0x55eeac;if(_0x55eeac){var _0x2da11b={'ContactId':_0x55eeac['id'],'OpenchannelAccountId':_0x1f13bc[_0xaeb3('0x59')]['id'],'from':(_0x55eeac[_0xaeb3('0x8e')]||'')+'\x20'+(_0x55eeac['lastName']||'')};var _0x134174={'OpenchannelAccountId':_0x1f13bc[_0xaeb3('0x59')]['id'],'closed':![]};if(_0x1f13bc[_0xaeb3('0x63')][_0xaeb3('0x8f')]){_0x134174[_0xaeb3('0x8f')]=_0x1f13bc['body']['threadId'];return db[_0xaeb3('0x90')]['find']({'where':_0x134174})['then'](function(_0x5bd513){if(_0x5bd513){return[_0x5bd513,![]];}_0x2da11b[_0xaeb3('0x8f')]=_0x1f13bc[_0xaeb3('0x63')][_0xaeb3('0x8f')];_0x2da11b[_0xaeb3('0x91')]=_0x1f13bc[_0xaeb3('0x63')][_0xaeb3('0x91')];return db[_0xaeb3('0x90')][_0xaeb3('0x5b')](_0x2da11b)[_0xaeb3('0x36')](function(_0x21c73a){return[_0x21c73a,!![]];});});}else{_0x134174[_0xaeb3('0x8f')]=null;}_0x134174[_0xaeb3('0x92')]=_0x55eeac['id'];return db[_0xaeb3('0x90')][_0xaeb3('0x64')]({'where':_0x134174})[_0xaeb3('0x36')](function(_0x106813){if(_0x106813){return[_0x106813,![]];}return db[_0xaeb3('0x90')][_0xaeb3('0x5b')](_0x2da11b)[_0xaeb3('0x36')](function(_0x1579e8){return[_0x1579e8,!![]];});});}})[_0xaeb3('0x93')](function(_0x2cb3ef,_0x503609){if(_0x2cb3ef){_0x4fe4d8=_0x503609;if(!_0x503609){var _0x17f387={'from':(_0x3584f2[_0xaeb3('0x8d')][_0xaeb3('0x8e')]||'')+'\x20'+(_0x3584f2[_0xaeb3('0x8d')][_0xaeb3('0x94')]||'')};if(_0x1f13bc[_0xaeb3('0x63')]['threadId']&&_0x1f13bc[_0xaeb3('0x63')][_0xaeb3('0x95')]&&_0x1f13bc[_0xaeb3('0x63')]['threadId']!=_0x1f13bc[_0xaeb3('0x63')][_0xaeb3('0x95')]){_0x17f387[_0xaeb3('0x8f')]=_0x1f13bc[_0xaeb3('0x63')]['messageId'];}return _0x2cb3ef[_0xaeb3('0x62')](_0x17f387);}else{return _0x2cb3ef;}}})[_0xaeb3('0x36')](function(_0xa2146b){_0x3584f2[_0xaeb3('0x96')]=_0xa2146b[_0xaeb3('0x38')]({'plain':!![]});_0x3584f2['interaction'][_0xaeb3('0x97')]=_0x4fe4d8;if(_0x3584f2[_0xaeb3('0x96')][_0xaeb3('0x97')]){if(_0x3584f2[_0xaeb3('0x86')][_0xaeb3('0x98')]){_0x3584f2[_0xaeb3('0x87')][_0xaeb3('0x99')]({'id':0x0,'priority':_0x3584f2[_0xaeb3('0x87')][_0xaeb3('0x49')]+0x1,'app':_0xaeb3('0x9a'),'appdata':_0xaeb3('0x9b'),'interval':_0xaeb3('0x9c')});}}return db[_0xaeb3('0x9d')][_0xaeb3('0x5b')]({'body':_0x1f13bc[_0xaeb3('0x63')][_0xaeb3('0x63')],'OpenchannelAccountId':_0x1f13bc['params']['id'],'OpenchannelInteractionId':_0xa2146b['id'],'direction':'in','ContactId':_0x3584f2[_0xaeb3('0x8d')]['id'],'AttachmentId':_0x1f13bc[_0xaeb3('0x63')][_0xaeb3('0x9e')]});})[_0xaeb3('0x36')](function(_0x1d2b54){_0x3584f2['message']=_0x1d2b54;if(_0x3584f2[_0xaeb3('0x96')][_0xaeb3('0x9f')]){return db[_0xaeb3('0xa0')][_0xaeb3('0x64')]({'attributes':['id','name'],'where':{'id':_0x3584f2[_0xaeb3('0x96')][_0xaeb3('0x9f')]}})['then'](function(_0x464ea5){if(_0x464ea5){_0x3584f2[_0xaeb3('0x87')][_0xaeb3('0xa1')]({'id':0x0,'priority':0x0,'app':_0xaeb3('0xa2'),'appdata':_0x464ea5['name']+','+(_0x3584f2[_0xaeb3('0x86')][_0xaeb3('0xa3')]||0xa),'interval':_0xaeb3('0x9c')});_0x3584f2[_0xaeb3('0xa4')]=![];}return respondWithRpcPromise('Start',_0xaeb3('0xa5'),_0x3584f2);});}return respondWithRpcPromise(_0xaeb3('0xa6'),'startRouting',_0x3584f2);})[_0xaeb3('0x36')](function(_0x30c818){respondWithRpcPromise('EventManager',_0xaeb3('0xa7'),{'event':_0xaeb3('0xa8'),'message':_0x30c818},client9002);return _0x30c818;})[_0xaeb3('0x36')](respondWithResult(_0x15a700,null))[_0xaeb3('0x2a')](handleError(_0x15a700,null));};exports[_0xaeb3('0xa9')]=function(_0x6189d6,_0x17a508){var _0x5de97b=_0x6189d6[_0xaeb3('0x59')]['id'];var _0x113c91=_0x6189d6[_0xaeb3('0x63')];var _0x2ae358=0xc8;var _0x199625=null;return db['sequelize'][_0xaeb3('0xaa')]({'isolationLevel':db[_0xaeb3('0xab')][_0xaeb3('0xac')][_0xaeb3('0xad')][_0xaeb3('0xae')]},function(_0x3ed05a){return db[_0xaeb3('0x40')][_0xaeb3('0x6a')]({'where':{'id':_0x5de97b},'transaction':_0x3ed05a})[_0xaeb3('0x36')](function(_0x174a79){if(_0x174a79){return db[_0xaeb3('0x84')][_0xaeb3('0x37')]({'where':{'OpenchannelAccountId':_0x5de97b},'transaction':_0x3ed05a})[_0xaeb3('0x36')](function(){var _0x16e052=_[_0xaeb3('0x3f')](_0x113c91,function(_0xe971fe){_0xe971fe[_0xaeb3('0x67')]=_0x5de97b;return _0xe971fe;});return db[_0xaeb3('0x84')]['bulkCreate'](_0x16e052,{'transaction':_0x3ed05a});});}else{_0x2ae358=0x194;_0x199625=[];}});})[_0xaeb3('0x36')](function(){if(_0x2ae358!==0x194){return db[_0xaeb3('0x84')][_0xaeb3('0xaf')]({'where':{'OpenchannelAccountId':_0x5de97b},'order':_0xaeb3('0x8a')})[_0xaeb3('0x36')](function(_0xed293){_0x199625=_0xed293;});}})[_0xaeb3('0x2a')](function(_0x36a8eb){_0x2ae358=0x1f4;logger['error'](_0x36a8eb[_0xaeb3('0x3b')]);if(_0x36a8eb['name']){delete _0x36a8eb['name'];}_0x199625=_0x36a8eb;})[_0xaeb3('0xb0')](function(){if(_0x199625===null){_0x17a508[_0xaeb3('0x2b')](_0x2ae358);}else{if(_0x2ae358===0x1f4){_0x17a508[_0xaeb3('0x2c')](_0x2ae358)['send'](_0x199625);}else{_0x17a508[_0xaeb3('0x2c')](_0x2ae358)[_0xaeb3('0xb1')](_0x199625);}}});};exports['getApplications']=function(_0xd981b7,_0x1c68b3,_0x39404f){var _0x5b285a={};var _0x23b74e={};var _0x1a438c;var _0x39e9b1;return db[_0xaeb3('0x40')][_0xaeb3('0x6a')]({'where':{'id':_0xd981b7[_0xaeb3('0x59')]['id']}})['then'](handleEntityNotFound(_0x1c68b3,null))[_0xaeb3('0x36')](function(_0x10cc20){if(_0x10cc20){_0x1a438c=_0x10cc20;_0x23b74e['model']=_[_0xaeb3('0x43')](db[_0xaeb3('0x84')][_0xaeb3('0x6b')]);_0x23b74e[_0xaeb3('0x42')]=_[_0xaeb3('0x43')](_0xd981b7[_0xaeb3('0x42')]);_0x23b74e[_0xaeb3('0x44')]=_[_0xaeb3('0x45')](_0x23b74e['model'],_0x23b74e[_0xaeb3('0x42')]);_0x5b285a['attributes']=_[_0xaeb3('0x45')](_0x23b74e['model'],qs[_0xaeb3('0x48')](_0xd981b7[_0xaeb3('0x42')][_0xaeb3('0x48')]));_0x5b285a[_0xaeb3('0x47')]=_0x5b285a['attributes'][_0xaeb3('0x49')]?_0x5b285a[_0xaeb3('0x47')]:_0x23b74e[_0xaeb3('0x46')];_0x5b285a[_0xaeb3('0x4c')]=qs[_0xaeb3('0x4d')](_0xd981b7['query'][_0xaeb3('0x4d')]);_0x5b285a[_0xaeb3('0x50')]=qs[_0xaeb3('0x44')](_[_0xaeb3('0x4e')](_0xd981b7[_0xaeb3('0x42')],_0x23b74e[_0xaeb3('0x44')]));if(_0xd981b7[_0xaeb3('0x42')]['filter']){_0x5b285a[_0xaeb3('0x50')]=_[_0xaeb3('0x53')](_0x5b285a[_0xaeb3('0x50')],{'$or':_[_0xaeb3('0x3f')](_0x5b285a[_0xaeb3('0x47')],function(_0x41845d){var _0xdeee0c={};_0xdeee0c[_0x41845d]={'$like':'%'+_0xd981b7[_0xaeb3('0x42')]['filter']+'%'};return _0xdeee0c;})});}_0x5b285a=_[_0xaeb3('0x53')]({},_0x5b285a,_0xd981b7['options']);return _0x1a438c['getApplications'](_0x5b285a);}})['then'](function(_0x492e34){if(_0x492e34){_0x39e9b1=_0x492e34[_0xaeb3('0x49')];if(!_0xd981b7[_0xaeb3('0x42')][_0xaeb3('0x4a')](_0xaeb3('0x4b'))){_0x5b285a[_0xaeb3('0x30')]=qs[_0xaeb3('0x30')](_0xd981b7[_0xaeb3('0x42')][_0xaeb3('0x30')]);_0x5b285a[_0xaeb3('0x2d')]=qs[_0xaeb3('0x2d')](_0xd981b7[_0xaeb3('0x42')]['offset']);}return _0x1a438c[_0xaeb3('0xb2')](_0x5b285a);}})[_0xaeb3('0x36')](function(_0x28354f){if(_0x28354f){return _0x28354f?{'count':_0x39e9b1,'rows':_0x28354f}:null;}})[_0xaeb3('0x36')](respondWithResult(_0x1c68b3,null))[_0xaeb3('0x2a')](handleError(_0x1c68b3,null));};exports[_0xaeb3('0xb3')]=function(_0x63e14,_0x249747,_0x38ebe6){var _0x1cec50={'raw':![],'where':{}};var _0x44d340={};var _0x2ec317={'count':0x0,'rows':[]};return db[_0xaeb3('0x40')][_0xaeb3('0x6a')]({'where':{'id':_0x63e14[_0xaeb3('0x59')]['id']}})[_0xaeb3('0x36')](handleEntityNotFound(_0x249747,null))[_0xaeb3('0x36')](function(_0x4c8f32){if(_0x4c8f32){_0x44d340['model']=_[_0xaeb3('0x43')](db[_0xaeb3('0x90')]['rawAttributes']);_0x44d340['query']=_[_0xaeb3('0x43')](_0x63e14['query']);_0x44d340[_0xaeb3('0x44')]=_['intersection'](_0x44d340[_0xaeb3('0x46')],_0x44d340[_0xaeb3('0x42')]);_0x1cec50[_0xaeb3('0x47')]=_[_0xaeb3('0x45')](_0x44d340[_0xaeb3('0x46')],qs[_0xaeb3('0x48')](_0x63e14[_0xaeb3('0x42')]['fields']));_0x1cec50[_0xaeb3('0x47')]=_0x1cec50['attributes']['length']?_0x1cec50['attributes']:_0x44d340['model'];if(!_0x63e14[_0xaeb3('0x42')][_0xaeb3('0x4a')](_0xaeb3('0x4b'))){_0x1cec50[_0xaeb3('0x30')]=qs['limit'](_0x63e14[_0xaeb3('0x42')][_0xaeb3('0x30')]);_0x1cec50[_0xaeb3('0x2d')]=qs[_0xaeb3('0x2d')](_0x63e14[_0xaeb3('0x42')][_0xaeb3('0x2d')]);}_0x1cec50[_0xaeb3('0x4c')]=qs[_0xaeb3('0x4d')](_0x63e14[_0xaeb3('0x42')][_0xaeb3('0x4d')]);_0x1cec50[_0xaeb3('0x50')]=qs[_0xaeb3('0x44')](_['pick'](_0x63e14['query'],_0x44d340[_0xaeb3('0x44')]));_0x1cec50[_0xaeb3('0x50')][_0xaeb3('0x67')]=_0x4c8f32['id'];if(_0x63e14[_0xaeb3('0x42')][_0xaeb3('0x4f')]){_0x1cec50[_0xaeb3('0x50')]=_['merge'](_0x1cec50[_0xaeb3('0x50')],{'$or':_['map'](_0x1cec50[_0xaeb3('0x47')],function(_0x1ad967){var _0x1ceae9={};_0x1ceae9[_0x1ad967]={'$like':'%'+_0x63e14[_0xaeb3('0x42')]['filter']+'%'};return _0x1ceae9;})});}_0x1cec50=_[_0xaeb3('0x53')]({},_0x1cec50,_0x63e14['options']);return db[_0xaeb3('0x90')][_0xaeb3('0x2f')]({'where':_0x1cec50[_0xaeb3('0x50')]})[_0xaeb3('0x36')](function(_0x1cfc21){_0x2ec317[_0xaeb3('0x2f')]=_0x1cfc21;if(_0x63e14['query'][_0xaeb3('0x55')]){_0x1cec50[_0xaeb3('0x56')]=[{'model':db[_0xaeb3('0x74')],'as':'Contact','required':![]},{'model':db[_0xaeb3('0xa0')],'as':_0xaeb3('0xb4'),'attributes':[_0xaeb3('0x3c'),_0xaeb3('0xb5'),_0xaeb3('0xb6')],'required':![]},{'model':db[_0xaeb3('0xb7')],'as':_0xaeb3('0xb8'),'attributes':['id',_0xaeb3('0x3c'),_0xaeb3('0xb9')],'where':_0x63e14[_0xaeb3('0x42')][_0xaeb3('0xba')]?{'id':_0x63e14[_0xaeb3('0x42')][_0xaeb3('0xba')]}:undefined,'required':_0x63e14['query'][_0xaeb3('0xba')]?!![]:![]}];}return db[_0xaeb3('0x90')][_0xaeb3('0x6c')](_0x1cec50);})['then'](function(_0x14d1f5){_0x2ec317[_0xaeb3('0x57')]=_0x14d1f5;return _0x2ec317;});}})[_0xaeb3('0x36')](respondWithFilteredResult(_0x249747,_0x1cec50))[_0xaeb3('0x2a')](handleError(_0x249747,null));};exports[_0xaeb3('0xbb')]=function(_0x72a4c9,_0x2ec864,_0xfacce9){return db[_0xaeb3('0x40')]['find']({'where':{'id':_0x72a4c9[_0xaeb3('0x59')]['id']}})[_0xaeb3('0x36')](handleEntityNotFound(_0x2ec864,null))['then'](function(_0xc40e5b){if(_0xc40e5b){return _0xc40e5b[_0xaeb3('0xbb')](_0x72a4c9['body']['ids'],_[_0xaeb3('0xbc')](_0x72a4c9[_0xaeb3('0x63')],['ids','id'])||{})[_0xaeb3('0x93')](function(_0xb81ea3){for(var _0x1d0642=0x0;_0x1d0642<_0x72a4c9[_0xaeb3('0x63')]['ids'][_0xaeb3('0x49')];_0x1d0642+=0x1){socket[_0xaeb3('0xbd')](_0xaeb3('0xbe'),{'UserId':Number(_0x72a4c9[_0xaeb3('0x63')]['ids'][_0x1d0642]),'OpenchannelAccountId':Number(_0x72a4c9[_0xaeb3('0x59')]['id'])});}return _0xb81ea3;});}})['then'](respondWithResult(_0x2ec864,null))[_0xaeb3('0x2a')](handleError(_0x2ec864,null));};exports['removeAgents']=function(_0xaa7c32,_0x734083,_0x3e7826){return db['OpenchannelAccount'][_0xaeb3('0x64')]({'where':{'id':_0xaa7c32[_0xaeb3('0x59')]['id']}})[_0xaeb3('0x36')](handleEntityNotFound(_0x734083,null))[_0xaeb3('0x36')](function(_0x5632e2){if(_0x5632e2){return _0x5632e2[_0xaeb3('0xbf')](_0xaa7c32['query']['ids'])['then'](function(){if(_[_0xaeb3('0xc0')](_0xaa7c32[_0xaeb3('0x42')][_0xaeb3('0x72')])){for(var _0x461b32=0x0;_0x461b32<_0xaa7c32['query']['ids']['length'];_0x461b32+=0x1){socket[_0xaeb3('0xbd')](_0xaeb3('0xc1'),{'UserId':Number(_0xaa7c32[_0xaeb3('0x42')][_0xaeb3('0x72')][_0x461b32]),'OpenchannelAccountId':Number(_0xaa7c32['params']['id'])});}}else{socket['emit'](_0xaeb3('0xc1'),{'UserId':Number(_0xaa7c32[_0xaeb3('0x42')][_0xaeb3('0x72')]),'OpenchannelAccountId':Number(_0xaa7c32[_0xaeb3('0x59')]['id'])});}});}})[_0xaeb3('0x36')](respondWithStatusCode(_0x734083,null))[_0xaeb3('0x2a')](handleError(_0x734083,null));};exports[_0xaeb3('0xc2')]=function(_0x6e2c78,_0x357d6a,_0x5300a7){var _0x55307e={};var _0x310c74={};var _0x4b9f98;var _0x42d682;return db['OpenchannelAccount'][_0xaeb3('0x6a')]({'where':{'id':_0x6e2c78[_0xaeb3('0x59')]['id']}})[_0xaeb3('0x36')](handleEntityNotFound(_0x357d6a,null))[_0xaeb3('0x36')](function(_0x230b87){if(_0x230b87){_0x4b9f98=_0x230b87;_0x310c74[_0xaeb3('0x46')]=_[_0xaeb3('0x43')](db[_0xaeb3('0xa0')][_0xaeb3('0x6b')]);_0x310c74[_0xaeb3('0x42')]=_[_0xaeb3('0x43')](_0x6e2c78['query']);_0x310c74[_0xaeb3('0x44')]=_[_0xaeb3('0x45')](_0x310c74[_0xaeb3('0x46')],_0x310c74[_0xaeb3('0x42')]);_0x55307e[_0xaeb3('0x47')]=_[_0xaeb3('0x45')](_0x310c74['model'],qs['fields'](_0x6e2c78['query'][_0xaeb3('0x48')]));_0x55307e[_0xaeb3('0x47')]=_0x55307e[_0xaeb3('0x47')][_0xaeb3('0x49')]?_0x55307e['attributes']:_0x310c74['model'];_0x55307e['order']=qs[_0xaeb3('0x4d')](_0x6e2c78[_0xaeb3('0x42')][_0xaeb3('0x4d')]);_0x55307e[_0xaeb3('0x50')]=qs['filters'](_[_0xaeb3('0x4e')](_0x6e2c78[_0xaeb3('0x42')],_0x310c74[_0xaeb3('0x44')]));if(_0x6e2c78[_0xaeb3('0x42')][_0xaeb3('0x4f')]){_0x55307e[_0xaeb3('0x50')]=_[_0xaeb3('0x53')](_0x55307e[_0xaeb3('0x50')],{'$or':_[_0xaeb3('0x3f')](_0x55307e['attributes'],function(_0x3d161d){var _0x57162b={};_0x57162b[_0x3d161d]={'$like':'%'+_0x6e2c78['query'][_0xaeb3('0x4f')]+'%'};return _0x57162b;})});}_0x55307e=_[_0xaeb3('0x53')]({},_0x55307e,_0x6e2c78[_0xaeb3('0x54')]);return _0x4b9f98[_0xaeb3('0xc2')](_0x55307e);}})[_0xaeb3('0x36')](function(_0x295f0a){if(_0x295f0a){_0x42d682=_0x295f0a[_0xaeb3('0x49')];if(!_0x6e2c78['query'][_0xaeb3('0x4a')]('nolimit')){_0x55307e[_0xaeb3('0x30')]=qs[_0xaeb3('0x30')](_0x6e2c78['query'][_0xaeb3('0x30')]);_0x55307e[_0xaeb3('0x2d')]=qs[_0xaeb3('0x2d')](_0x6e2c78[_0xaeb3('0x42')][_0xaeb3('0x2d')]);}return _0x4b9f98[_0xaeb3('0xc2')](_0x55307e);}})['then'](function(_0x55bb51){if(_0x55bb51){return _0x55bb51?{'count':_0x42d682,'rows':_0x55bb51}:null;}})[_0xaeb3('0x36')](respondWithResult(_0x357d6a,null))[_0xaeb3('0x2a')](handleError(_0x357d6a,null));};exports[_0xaeb3('0x3d')]=function(_0x1fae45,_0x235eb4,_0x203edb){var _0x56330e,_0x26954f,_0x2ff49c;if(_[_0xaeb3('0x7c')](_0x1fae45[_0xaeb3('0x63')][_0xaeb3('0x63')])||_0x1fae45[_0xaeb3('0x63')]['body']===''){throw new db[(_0xaeb3('0x75'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xaeb3('0x7c')](_0x1fae45[_0xaeb3('0x63')]['to'])){}_0x56330e=_0x1fae45['body']['to'];return db[_0xaeb3('0x40')][_0xaeb3('0x6a')]({'where':{'id':_0x1fae45[_0xaeb3('0x59')]['id']}})[_0xaeb3('0x36')](handleEntityNotFound(_0x235eb4,null))[_0xaeb3('0x36')](function(_0x550a49){if(_0x550a49){return db['OpenchannelAccount'][_0xaeb3('0x64')]({'where':{'id':_0x550a49['id']},'include':[{'model':db['CmList'],'as':_0xaeb3('0x83'),'include':[{'model':db[_0xaeb3('0x74')],'as':'Contacts','where':{[_0x550a49[_0xaeb3('0x80')]]:_0x56330e},'limit':0x1,'order':[['updatedAt',_0xaeb3('0xc3')]]}]}]})['then'](handleEntityNotFound(_0x235eb4,null))[_0xaeb3('0x36')](function(_0x4d5175){if(_0x4d5175&&_0x4d5175[_0xaeb3('0x83')]){_0x26954f=_0x4d5175[_0xaeb3('0x38')]({'plain':!![]});if(_0x26954f[_0xaeb3('0x83')]&&_0x26954f[_0xaeb3('0x83')]['Contacts'][_0xaeb3('0x49')]){return _0x26954f[_0xaeb3('0x83')][_0xaeb3('0x8c')][0x0];}return db['CmContact'][_0xaeb3('0x5b')](_['defaults'](_0x1fae45['body'],{'firstName':_0x56330e,[_0x4d5175[_0xaeb3('0x80')]]:_0x56330e,'phone':_0x56330e,'ListId':_0x26954f['ListId']}));}})[_0xaeb3('0x36')](handleEntityNotFound(_0x235eb4,null))[_0xaeb3('0x36')](function(_0x5a1896){if(_0x5a1896){_0x2ff49c=_0x5a1896;return db[_0xaeb3('0x90')]['find']({'where':{'ContactId':_0x2ff49c['id'],'closed':![],'OpenchannelAccountId':_0x26954f['id']}})['then'](function(_0x1a2863){if(_0x1a2863){return[_0x1a2863,![]];}return db[_0xaeb3('0x90')][_0xaeb3('0x5b')]({'UserId':_0x1fae45[_0xaeb3('0x5c')]['id'],'ContactId':_0x2ff49c['id'],'OpenchannelAccountId':_0x26954f['id'],'lastMsgDirection':'out','firstMsgDirection':_0xaeb3('0xc4'),'Messages':[_[_0xaeb3('0x53')](_0x1fae45[_0xaeb3('0x63')],{'read':![],'body':_0x1fae45[_0xaeb3('0x63')][_0xaeb3('0x63')],'OpenchannelAccountId':_0x26954f['id'],'UserId':_0x1fae45[_0xaeb3('0x5c')]['id'],'ContactId':_0x2ff49c['id']})]},{'include':[{'model':db[_0xaeb3('0x9d')],'as':_0xaeb3('0xc5')}]})[_0xaeb3('0x36')](function(_0x1eaf5f){return[_0x1eaf5f,!![]];});});}})[_0xaeb3('0x93')](function(_0xec3dc1,_0x22c8c9){if(_0x22c8c9){return _0xec3dc1;}return db[_0xaeb3('0x9d')]['create'](_['merge'](_0x1fae45[_0xaeb3('0x63')],{'read':![],'body':_0x1fae45[_0xaeb3('0x63')][_0xaeb3('0x63')],'OpenchannelAccountId':_0x26954f['id'],'OpenchannelInteractionId':_0xec3dc1['id'],'UserId':_0x1fae45['user']['id'],'ContactId':_0x2ff49c['id']}))[_0xaeb3('0x36')](function(_0x1e0b0f){_0xec3dc1['dataValues'][_0xaeb3('0xc5')]=[];_0xec3dc1[_0xaeb3('0xc6')][_0xaeb3('0xc5')][_0xaeb3('0x99')](_0x1e0b0f['dataValues']);return _0xec3dc1;});});}})['then'](respondWithResult(_0x235eb4,null))[_0xaeb3('0x2a')](handleError(_0x235eb4,null));};
\ No newline at end of file
index e95c5ef..95cd8af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdace=['save','remove','emit','hasOwnProperty','exports','events','OpenchannelAccount','setMaxListeners'];(function(_0x4a9beb,_0x159482){var _0x2d4c58=function(_0x28dabf){while(--_0x28dabf){_0x4a9beb['push'](_0x4a9beb['shift']());}};_0x2d4c58(++_0x159482);}(_0xdace,0xc5));var _0xedac=function(_0x4e93a9,_0x413f30){_0x4e93a9=_0x4e93a9-0x0;var _0x43013c=_0xdace[_0x4e93a9];return _0x43013c;};'use strict';var EventEmitter=require(_0xedac('0x0'));var OpenchannelAccount=require('../../mysqldb')['db'][_0xedac('0x1')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0xedac('0x2')](0x0);var events={'afterCreate':_0xedac('0x3'),'afterUpdate':'update','afterDestroy':_0xedac('0x4')};function emitEvent(_0x36bcd2){return function(_0x15d3bd,_0xefb142,_0x5a97c0){OpenchannelAccountEvents[_0xedac('0x5')](_0x36bcd2+':'+_0x15d3bd['id'],_0x15d3bd);OpenchannelAccountEvents[_0xedac('0x5')](_0x36bcd2,_0x15d3bd);_0x5a97c0(null);};}for(var e in events){if(events[_0xedac('0x6')](e)){var event=events[e];OpenchannelAccount['hook'](e,emitEvent(event));}}module[_0xedac('0x7')]=OpenchannelAccountEvents;
\ No newline at end of file
+var _0x22fb=['hook','exports','OpenchannelAccount','save','update','remove','emit','hasOwnProperty'];(function(_0x46451c,_0x88ddd){var _0x12dce4=function(_0x2e4087){while(--_0x2e4087){_0x46451c['push'](_0x46451c['shift']());}};_0x12dce4(++_0x88ddd);}(_0x22fb,0x192));var _0xb22f=function(_0x5a4d58,_0x5db250){_0x5a4d58=_0x5a4d58-0x0;var _0x1f1a8c=_0x22fb[_0x5a4d58];return _0x1f1a8c;};'use strict';var EventEmitter=require('events');var OpenchannelAccount=require('../../mysqldb')['db'][_0xb22f('0x0')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xb22f('0x1'),'afterUpdate':_0xb22f('0x2'),'afterDestroy':_0xb22f('0x3')};function emitEvent(_0x10d2c4){return function(_0x201512,_0x50cdab,_0x44717d){OpenchannelAccountEvents[_0xb22f('0x4')](_0x10d2c4+':'+_0x201512['id'],_0x201512);OpenchannelAccountEvents[_0xb22f('0x4')](_0x10d2c4,_0x201512);_0x44717d(null);};}for(var e in events){if(events[_0xb22f('0x5')](e)){var event=events[e];OpenchannelAccount[_0xb22f('0x6')](e,emitEvent(event));}}module[_0xb22f('0x7')]=OpenchannelAccountEvents;
\ No newline at end of file
index 9c0b883..b5f0c0a 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(_0x7e08fb,_0x14af22){var _0x305048=function(_0xc29084){while(--_0xc29084){_0x7e08fb['push'](_0x7e08fb['shift']());}};_0x305048(++_0x14af22);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0xa9e0[_0x1b349a];return _0x5d1f7c;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var 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(_0x4234cf,_0x1f37d7){var _0x11616b=function(_0x2bbe95){while(--_0x2bbe95){_0x4234cf['push'](_0x4234cf['shift']());}};_0x11616b(++_0x1f37d7);}(_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':'openchannel_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2580768..c53c37d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c00=['code','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','socket.io-emitter','./openchannelAccount.socket','register','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x24f0a3,_0x390cf7){var _0x56fa54=function(_0x28259a){while(--_0x28259a){_0x24f0a3['push'](_0x24f0a3['shift']());}};_0x56fa54(++_0x390cf7);}(_0x5c00,0x17e));var _0x05c0=function(_0x276de9,_0x2c2f75){_0x276de9=_0x276de9-0x0;var _0xbac321=_0x5c00[_0x276de9];return _0xbac321;};'use strict';var _=require(_0x05c0('0x0'));var util=require(_0x05c0('0x1'));var moment=require(_0x05c0('0x2'));var BPromise=require('bluebird');var rs=require(_0x05c0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x05c0('0x4'))['db'];var utils=require(_0x05c0('0x5'));var logger=require(_0x05c0('0x6'))(_0x05c0('0x7'));var config=require('../../config/environment');var jayson=require(_0x05c0('0x8'));var client=jayson[_0x05c0('0x9')][_0x05c0('0xa')]({'port':0x232a});config[_0x05c0('0xb')]=_['defaults'](config[_0x05c0('0xb')],{'host':_0x05c0('0xc'),'port':0x18eb});var socket=require(_0x05c0('0xd'))(new Redis(config['redis']));require(_0x05c0('0xe'))[_0x05c0('0xf')](socket);function respondWithRpcPromise(_0x996d6b,_0x321c09,_0x273b2d){return new BPromise(function(_0x1edbb,_0x5226c5){return client['request'](_0x996d6b,_0x273b2d)[_0x05c0('0x10')](function(_0x516a66){logger[_0x05c0('0x11')](_0x05c0('0x12'),_0x321c09,_0x05c0('0x13'));logger['debug'](_0x05c0('0x14'),_0x321c09,'request\x20sent',JSON[_0x05c0('0x15')](_0x516a66));if(_0x516a66[_0x05c0('0x16')]){if(_0x516a66[_0x05c0('0x16')][_0x05c0('0x17')]===0x1f4){logger[_0x05c0('0x16')](_0x05c0('0x12'),_0x321c09,_0x516a66[_0x05c0('0x16')][_0x05c0('0x18')]);return _0x5226c5(_0x516a66['error'][_0x05c0('0x18')]);}logger[_0x05c0('0x16')](_0x05c0('0x12'),_0x321c09,_0x516a66[_0x05c0('0x16')][_0x05c0('0x18')]);return _0x1edbb(_0x516a66[_0x05c0('0x16')][_0x05c0('0x18')]);}else{logger[_0x05c0('0x11')](_0x05c0('0x12'),_0x321c09,'request\x20sent');_0x1edbb(_0x516a66[_0x05c0('0x19')][_0x05c0('0x18')]);}})[_0x05c0('0x1a')](function(_0x54fef0){logger[_0x05c0('0x16')](_0x05c0('0x12'),_0x321c09,_0x54fef0);_0x5226c5(_0x54fef0);});});}
\ No newline at end of file
+var _0x4058=['request','then','debug','code','error','message','OpenchannelAccount,\x20%s,\x20%s','info','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','redis','defaults','socket.io-emitter','./openchannelAccount.socket'];(function(_0x6199b5,_0x15454d){var _0x4018bd=function(_0x2e5748){while(--_0x2e5748){_0x6199b5['push'](_0x6199b5['shift']());}};_0x4018bd(++_0x15454d);}(_0x4058,0x129));var _0x8405=function(_0x1eac0e,_0x1107cd){_0x1eac0e=_0x1eac0e-0x0;var _0x32362f=_0x4058[_0x1eac0e];return _0x32362f;};'use strict';var _=require(_0x8405('0x0'));var util=require(_0x8405('0x1'));var moment=require(_0x8405('0x2'));var BPromise=require(_0x8405('0x3'));var rs=require(_0x8405('0x4'));var fs=require('fs');var Redis=require(_0x8405('0x5'));var db=require(_0x8405('0x6'))['db'];var utils=require(_0x8405('0x7'));var logger=require(_0x8405('0x8'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x8405('0x9')][_0x8405('0xa')]({'port':0x232a});config[_0x8405('0xb')]=_[_0x8405('0xc')](config[_0x8405('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x8405('0xd'))(new Redis(config[_0x8405('0xb')]));require(_0x8405('0xe'))['register'](socket);function respondWithRpcPromise(_0x30705f,_0x5e132b,_0x6979fd){return new BPromise(function(_0xb442,_0x50344e){return client[_0x8405('0xf')](_0x30705f,_0x6979fd)[_0x8405('0x10')](function(_0x5b94d5){logger['info']('OpenchannelAccount,\x20%s,\x20%s',_0x5e132b,'request\x20sent');logger[_0x8405('0x11')]('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x5e132b,'request\x20sent',JSON['stringify'](_0x5b94d5));if(_0x5b94d5['error']){if(_0x5b94d5['error'][_0x8405('0x12')]===0x1f4){logger[_0x8405('0x13')]('OpenchannelAccount,\x20%s,\x20%s',_0x5e132b,_0x5b94d5[_0x8405('0x13')][_0x8405('0x14')]);return _0x50344e(_0x5b94d5[_0x8405('0x13')][_0x8405('0x14')]);}logger['error'](_0x8405('0x15'),_0x5e132b,_0x5b94d5[_0x8405('0x13')][_0x8405('0x14')]);return _0xb442(_0x5b94d5[_0x8405('0x13')][_0x8405('0x14')]);}else{logger[_0x8405('0x16')](_0x8405('0x15'),_0x5e132b,_0x8405('0x17'));_0xb442(_0x5b94d5[_0x8405('0x18')][_0x8405('0x14')]);}})[_0x8405('0x19')](function(_0x21376d){logger[_0x8405('0x13')](_0x8405('0x15'),_0x5e132b,_0x21376d);_0x50344e(_0x21376d);});});}
\ No newline at end of file
index 77c7ffe..45853bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cfb=['./openchannelAccount.events','save','remove','update','emit','removeListener','register','length'];(function(_0x1793de,_0x4d7233){var _0x4f0309=function(_0x229ee7){while(--_0x229ee7){_0x1793de['push'](_0x1793de['shift']());}};_0x4f0309(++_0x4d7233);}(_0x3cfb,0x1b8));var _0xb3cf=function(_0x1b697c,_0x3256f8){_0x1b697c=_0x1b697c-0x0;var _0xd975e8=_0x3cfb[_0x1b697c];return _0xd975e8;};'use strict';var OpenchannelAccountEvents=require(_0xb3cf('0x0'));var events=[_0xb3cf('0x1'),_0xb3cf('0x2'),_0xb3cf('0x3')];function createListener(_0xa3584d,_0x147066){return function(_0x3112c1){_0x147066[_0xb3cf('0x4')](_0xa3584d,_0x3112c1);};}function removeListener(_0x51cf89,_0x4740b9){return function(){OpenchannelAccountEvents[_0xb3cf('0x5')](_0x51cf89,_0x4740b9);};}exports[_0xb3cf('0x6')]=function(_0x59c604){for(var _0x2e5c00=0x0,_0x1b7131=events[_0xb3cf('0x7')];_0x2e5c00<_0x1b7131;_0x2e5c00++){var _0x53be8c=events[_0x2e5c00];var _0x19ed7d=createListener('openchannelAccount:'+_0x53be8c,_0x59c604);OpenchannelAccountEvents['on'](_0x53be8c,_0x19ed7d);}};
\ No newline at end of file
+var _0xc79f=['register','openchannelAccount:','./openchannelAccount.events','save','remove','update','emit','removeListener'];(function(_0x35949a,_0xece70){var _0x9e2198=function(_0x5f5839){while(--_0x5f5839){_0x35949a['push'](_0x35949a['shift']());}};_0x9e2198(++_0xece70);}(_0xc79f,0x82));var _0xfc79=function(_0x2aaf3c,_0xb0b3fb){_0x2aaf3c=_0x2aaf3c-0x0;var _0x1fb208=_0xc79f[_0x2aaf3c];return _0x1fb208;};'use strict';var OpenchannelAccountEvents=require(_0xfc79('0x0'));var events=[_0xfc79('0x1'),_0xfc79('0x2'),_0xfc79('0x3')];function createListener(_0x33533f,_0x5e2603){return function(_0x34c2d6){_0x5e2603[_0xfc79('0x4')](_0x33533f,_0x34c2d6);};}function removeListener(_0xa5d8da,_0x274bb5){return function(){OpenchannelAccountEvents[_0xfc79('0x5')](_0xa5d8da,_0x274bb5);};}exports[_0xfc79('0x6')]=function(_0x660769){for(var _0x1ba054=0x0,_0x3df358=events['length'];_0x1ba054<_0x3df358;_0x1ba054++){var _0x8c8b37=events[_0x1ba054];var _0x59bf11=createListener(_0xfc79('0x7')+_0x8c8b37,_0x660769);OpenchannelAccountEvents['on'](_0x8c8b37,_0x59bf11);}};
\ No newline at end of file
index b1ed7f8..225003e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bcc=['get','isAuthenticated','index','/:id','show','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','./openchannelApplication.controller'];(function(_0x4536a4,_0x55af7b){var _0x4fd1c1=function(_0x4c68cd){while(--_0x4c68cd){_0x4536a4['push'](_0x4536a4['shift']());}};_0x4fd1c1(++_0x55af7b);}(_0x4bcc,0x90));var _0xc4bc=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x4bcc[_0x4cf98e];return _0x1623ac;};'use strict';var multer=require(_0xc4bc('0x0'));var util=require(_0xc4bc('0x1'));var path=require(_0xc4bc('0x2'));var timeout=require(_0xc4bc('0x3'));var express=require('express');var router=express[_0xc4bc('0x4')]();var fs_extra=require(_0xc4bc('0x5'));var auth=require(_0xc4bc('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xc4bc('0x7'));router[_0xc4bc('0x8')]('/',auth[_0xc4bc('0x9')](),controller[_0xc4bc('0xa')]);router[_0xc4bc('0x8')](_0xc4bc('0xb'),auth[_0xc4bc('0x9')](),controller[_0xc4bc('0xc')]);router[_0xc4bc('0xd')]('/',auth[_0xc4bc('0x9')](),controller['create']);router[_0xc4bc('0xe')]('/:id',auth[_0xc4bc('0x9')](),controller[_0xc4bc('0xf')]);router[_0xc4bc('0x10')](_0xc4bc('0xb'),auth[_0xc4bc('0x9')](),controller[_0xc4bc('0x11')]);module[_0xc4bc('0x12')]=router;
\ No newline at end of file
+var _0xf60b=['/:id','post','isAuthenticated','put','update','delete','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index'];(function(_0xea343d,_0x311197){var _0x2c6e9c=function(_0x454bd6){while(--_0x454bd6){_0xea343d['push'](_0xea343d['shift']());}};_0x2c6e9c(++_0x311197);}(_0xf60b,0x1d2));var _0xbf60=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0xf60b[_0x138f59];return _0x3d114d;};'use strict';var multer=require(_0xbf60('0x0'));var util=require(_0xbf60('0x1'));var path=require('path');var timeout=require(_0xbf60('0x2'));var express=require(_0xbf60('0x3'));var router=express[_0xbf60('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xbf60('0x5'));var interaction=require(_0xbf60('0x6'));var config=require(_0xbf60('0x7'));var controller=require('./openchannelApplication.controller');router[_0xbf60('0x8')]('/',auth['isAuthenticated'](),controller[_0xbf60('0x9')]);router['get'](_0xbf60('0xa'),auth['isAuthenticated'](),controller['show']);router[_0xbf60('0xb')]('/',auth[_0xbf60('0xc')](),controller['create']);router[_0xbf60('0xd')](_0xbf60('0xa'),auth[_0xbf60('0xc')](),controller[_0xbf60('0xe')]);router[_0xbf60('0xf')]('/:id',auth[_0xbf60('0xc')](),controller['destroy']);module[_0xbf60('0x10')]=router;
\ No newline at end of file
index 7d295db..4eab69c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbed5=['exports','INTEGER','noop','TEXT','STRING','*,*,*,*'];(function(_0x5e2531,_0x2bf32b){var _0x56538e=function(_0x25a195){while(--_0x25a195){_0x5e2531['push'](_0x5e2531['shift']());}};_0x56538e(++_0x2bf32b);}(_0xbed5,0x1aa));var _0x5bed=function(_0x28b3dd,_0x55100c){_0x28b3dd=_0x28b3dd-0x0;var _0x26fa07=_0xbed5[_0x28b3dd];return _0x26fa07;};'use strict';var Sequelize=require('sequelize');module[_0x5bed('0x0')]={'priority':{'type':Sequelize[_0x5bed('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x5bed('0x2')},'appdata':{'type':Sequelize[_0x5bed('0x3')]()},'description':{'type':Sequelize[_0x5bed('0x4')]},'interval':{'type':Sequelize[_0x5bed('0x4')],'defaultValue':_0x5bed('0x5')}};
\ No newline at end of file
+var _0x6c0d=['INTEGER','noop','TEXT','STRING','*,*,*,*','sequelize','exports'];(function(_0x1e3e85,_0x3c05c6){var _0x83ca15=function(_0x1d5169){while(--_0x1d5169){_0x1e3e85['push'](_0x1e3e85['shift']());}};_0x83ca15(++_0x3c05c6);}(_0x6c0d,0x132));var _0xd6c0=function(_0x3f3a42,_0x5396de){_0x3f3a42=_0x3f3a42-0x0;var _0x22d566=_0x6c0d[_0x3f3a42];return _0x22d566;};'use strict';var Sequelize=require(_0xd6c0('0x0'));module[_0xd6c0('0x1')]={'priority':{'type':Sequelize[_0xd6c0('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xd6c0('0x3')},'appdata':{'type':Sequelize[_0xd6c0('0x4')]()},'description':{'type':Sequelize[_0xd6c0('0x5')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xd6c0('0x6')}};
\ No newline at end of file
index a2d5737..7fec260 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8063=['fields','hasOwnProperty','nolimit','sort','pick','filter','where','merge','type','options','includeAll','include','OpenchannelApplication','findAll','rows','catch','show','params','find','create','body','rimraf','zip-dir','moment','bluebird','path','sox','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','map','rawAttributes','fieldName','query','keys','filters','intersection','model','attributes'];(function(_0x2aea9e,_0x1f587f){var _0x430b92=function(_0x416c37){while(--_0x416c37){_0x2aea9e['push'](_0x2aea9e['shift']());}};_0x430b92(++_0x1f587f);}(_0x8063,0xa1));var _0x3806=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x8063[_0x4a9fb1];return _0x348672;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3806('0x0'));var zipdir=require(_0x3806('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x3806('0x2'));var BPromise=require(_0x3806('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x3806('0x4'));var sox=require(_0x3806('0x5'));var csv=require(_0x3806('0x6'));var ejs=require(_0x3806('0x7'));var fs=require('fs');var fs_extra=require(_0x3806('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x3806('0x9'));var deskjs=require(_0x3806('0xa'));var toCsv=require('to-csv');var querystring=require(_0x3806('0xb'));var Papa=require(_0x3806('0xc'));var Redis=require(_0x3806('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x3806('0xe'));var hardwareService=require(_0x3806('0xf'));var logger=require(_0x3806('0x10'))(_0x3806('0x11'));var utils=require(_0x3806('0x12'));var config=require(_0x3806('0x13'));var licenseUtil=require(_0x3806('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x61b3be,_0xf07829){_0xf07829=_0xf07829||0xcc;return function(_0x2bba37){if(_0x2bba37){return _0x61b3be[_0x3806('0x15')](_0xf07829);}return _0x61b3be[_0x3806('0x16')](_0xf07829)[_0x3806('0x17')]();};}function respondWithResult(_0x1a4d7f,_0x11c6a6){_0x11c6a6=_0x11c6a6||0xc8;return function(_0x6c0f5){if(_0x6c0f5){return _0x1a4d7f[_0x3806('0x16')](_0x11c6a6)[_0x3806('0x18')](_0x6c0f5);}};}function respondWithFilteredResult(_0x14a769,_0x586c93){return function(_0xe5e7){if(_0xe5e7){var _0x2de6c1=typeof _0x586c93[_0x3806('0x19')]==='undefined'&&typeof _0x586c93[_0x3806('0x1a')]==='undefined';var _0x39fc6d=_0xe5e7[_0x3806('0x1b')];var _0x24f2b5=_0x2de6c1?0x0:_0x586c93[_0x3806('0x19')];var _0x28aba9=_0x2de6c1?_0xe5e7[_0x3806('0x1b')]:_0x586c93[_0x3806('0x19')]+_0x586c93[_0x3806('0x1a')];var _0x139a1b;if(_0x28aba9>=_0x39fc6d){_0x28aba9=_0x39fc6d;_0x139a1b=0xc8;}else{_0x139a1b=0xce;}_0x14a769['status'](_0x139a1b);return _0x14a769[_0x3806('0x1c')](_0x3806('0x1d'),_0x24f2b5+'-'+_0x28aba9+'/'+_0x39fc6d)[_0x3806('0x18')](_0xe5e7);}return null;};}function patchUpdates(_0x3d845e){return function(_0x23e788){try{jsonpatch[_0x3806('0x1e')](_0x23e788,_0x3d845e,!![]);}catch(_0x553b53){return BPromise[_0x3806('0x1f')](_0x553b53);}return _0x23e788[_0x3806('0x20')]();};}function saveUpdates(_0x51000b,_0x2265d8){return function(_0x26a575){if(_0x26a575){return _0x26a575[_0x3806('0x21')](_0x51000b)[_0x3806('0x22')](function(_0x66b5db){return _0x66b5db;});}return null;};}function removeEntity(_0x202172,_0xacf97e){return function(_0x14aff4){if(_0x14aff4){return _0x14aff4[_0x3806('0x23')]()[_0x3806('0x22')](function(){_0x202172[_0x3806('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x919d26,_0x3e8110){return function(_0x426dc9){if(!_0x426dc9){_0x919d26['sendStatus'](0x194);}return _0x426dc9;};}function handleError(_0x10973a,_0x341158){_0x341158=_0x341158||0x1f4;return function(_0x407a53){logger[_0x3806('0x24')](_0x407a53['stack']);if(_0x407a53[_0x3806('0x25')]){delete _0x407a53[_0x3806('0x25')];}_0x10973a['status'](_0x341158)[_0x3806('0x26')](_0x407a53);};}exports[_0x3806('0x27')]=function(_0x362d51,_0x1a04a6){var _0x4d83a6={},_0x2be218={},_0x370d6c={'count':0x0,'rows':[]};var _0x53d147=_[_0x3806('0x28')](db['OpenchannelApplication'][_0x3806('0x29')],function(_0x36bcaf){return{'name':_0x36bcaf[_0x3806('0x2a')],'type':_0x36bcaf['type']['key']};});_0x2be218['model']=_[_0x3806('0x28')](_0x53d147,_0x3806('0x25'));_0x2be218[_0x3806('0x2b')]=_[_0x3806('0x2c')](_0x362d51['query']);_0x2be218[_0x3806('0x2d')]=_[_0x3806('0x2e')](_0x2be218[_0x3806('0x2f')],_0x2be218[_0x3806('0x2b')]);_0x4d83a6[_0x3806('0x30')]=_[_0x3806('0x2e')](_0x2be218['model'],qs[_0x3806('0x31')](_0x362d51[_0x3806('0x2b')][_0x3806('0x31')]));_0x4d83a6[_0x3806('0x30')]=_0x4d83a6['attributes']['length']?_0x4d83a6[_0x3806('0x30')]:_0x2be218['model'];if(!_0x362d51[_0x3806('0x2b')][_0x3806('0x32')](_0x3806('0x33'))){_0x4d83a6[_0x3806('0x1a')]=qs[_0x3806('0x1a')](_0x362d51[_0x3806('0x2b')][_0x3806('0x1a')]);_0x4d83a6[_0x3806('0x19')]=qs['offset'](_0x362d51['query'][_0x3806('0x19')]);}_0x4d83a6['order']=qs[_0x3806('0x34')](_0x362d51['query']['sort']);_0x4d83a6['where']=qs[_0x3806('0x2d')](_[_0x3806('0x35')](_0x362d51['query'],_0x2be218[_0x3806('0x2d')]),_0x53d147);if(_0x362d51[_0x3806('0x2b')][_0x3806('0x36')]){_0x4d83a6[_0x3806('0x37')]=_[_0x3806('0x38')](_0x4d83a6[_0x3806('0x37')],{'$or':_[_0x3806('0x28')](_0x53d147,function(_0x2a5510){if(_0x2a5510[_0x3806('0x39')]!=='VIRTUAL'){var _0x8107d6={};_0x8107d6[_0x2a5510['name']]={'$like':'%'+_0x362d51[_0x3806('0x2b')][_0x3806('0x36')]+'%'};return _0x8107d6;}})});}_0x4d83a6=_['merge']({},_0x4d83a6,_0x362d51[_0x3806('0x3a')]);var _0x164636={'where':_0x4d83a6[_0x3806('0x37')]};return db['OpenchannelApplication']['count'](_0x164636)['then'](function(_0x378c4a){_0x370d6c[_0x3806('0x1b')]=_0x378c4a;if(_0x362d51[_0x3806('0x2b')][_0x3806('0x3b')]){_0x4d83a6[_0x3806('0x3c')]=[{'all':!![]}];}return db[_0x3806('0x3d')][_0x3806('0x3e')](_0x4d83a6);})[_0x3806('0x22')](function(_0x6ebf3b){_0x370d6c[_0x3806('0x3f')]=_0x6ebf3b;return _0x370d6c;})[_0x3806('0x22')](respondWithFilteredResult(_0x1a04a6,_0x4d83a6))[_0x3806('0x40')](handleError(_0x1a04a6,null));};exports[_0x3806('0x41')]=function(_0x490f29,_0x2f302e){var _0x417c2a={'raw':!![],'where':{'id':_0x490f29[_0x3806('0x42')]['id']}},_0x14e16d={};_0x14e16d[_0x3806('0x2f')]=_['keys'](db[_0x3806('0x3d')][_0x3806('0x29')]);_0x14e16d[_0x3806('0x2b')]=_[_0x3806('0x2c')](_0x490f29[_0x3806('0x2b')]);_0x14e16d[_0x3806('0x2d')]=_[_0x3806('0x2e')](_0x14e16d['model'],_0x14e16d[_0x3806('0x2b')]);_0x417c2a[_0x3806('0x30')]=_[_0x3806('0x2e')](_0x14e16d[_0x3806('0x2f')],qs['fields'](_0x490f29[_0x3806('0x2b')][_0x3806('0x31')]));_0x417c2a[_0x3806('0x30')]=_0x417c2a[_0x3806('0x30')]['length']?_0x417c2a[_0x3806('0x30')]:_0x14e16d[_0x3806('0x2f')];if(_0x490f29[_0x3806('0x2b')][_0x3806('0x3b')]){_0x417c2a[_0x3806('0x3c')]=[{'all':!![]}];}_0x417c2a=_[_0x3806('0x38')]({},_0x417c2a,_0x490f29[_0x3806('0x3a')]);return db[_0x3806('0x3d')][_0x3806('0x43')](_0x417c2a)[_0x3806('0x22')](handleEntityNotFound(_0x2f302e,null))[_0x3806('0x22')](respondWithResult(_0x2f302e,null))[_0x3806('0x40')](handleError(_0x2f302e,null));};exports[_0x3806('0x44')]=function(_0x5039fc,_0x55d383){return db['OpenchannelApplication']['create'](_0x5039fc[_0x3806('0x45')],{})['then'](respondWithResult(_0x55d383,0xc9))[_0x3806('0x40')](handleError(_0x55d383,null));};exports['update']=function(_0x5eb451,_0x4b11c3){if(_0x5eb451[_0x3806('0x45')]['id']){delete _0x5eb451[_0x3806('0x45')]['id'];}return db[_0x3806('0x3d')]['find']({'where':{'id':_0x5eb451[_0x3806('0x42')]['id']}})['then'](handleEntityNotFound(_0x4b11c3,null))[_0x3806('0x22')](saveUpdates(_0x5eb451[_0x3806('0x45')],null))[_0x3806('0x22')](respondWithResult(_0x4b11c3,null))[_0x3806('0x40')](handleError(_0x4b11c3,null));};exports[_0x3806('0x23')]=function(_0x4b8bae,_0x46d005){return db[_0x3806('0x3d')][_0x3806('0x43')]({'where':{'id':_0x4b8bae[_0x3806('0x42')]['id']}})[_0x3806('0x22')](handleEntityNotFound(_0x46d005,null))['then'](removeEntity(_0x46d005,null))[_0x3806('0x40')](handleError(_0x46d005,null));};
\ No newline at end of file
+var _0x04cb=['OpenchannelApplication','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','fields','attributes','length','hasOwnProperty','order','sort','filters','pick','filter','where','merge','options','includeAll','include','catch','show','params','find','create','body','destroy','eml-format','zip-dir','request-promise','moment','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','error','stack','name','send','index'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x04cb,0xf4));var _0xb04c=function(_0x3cbba5,_0x221530){_0x3cbba5=_0x3cbba5-0x0;var _0x54d5e1=_0x04cb[_0x3cbba5];return _0x54d5e1;};'use strict';var emlformat=require(_0xb04c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb04c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb04c('0x2'));var moment=require(_0xb04c('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xb04c('0x4'));var util=require(_0xb04c('0x5'));var path=require(_0xb04c('0x6'));var sox=require('sox');var csv=require(_0xb04c('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb04c('0x8'));var _=require(_0xb04c('0x9'));var squel=require(_0xb04c('0xa'));var crypto=require(_0xb04c('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xb04c('0xc'));var toCsv=require(_0xb04c('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb04c('0xd'));var authService=require(_0xb04c('0xe'));var qs=require(_0xb04c('0xf'));var as=require(_0xb04c('0x10'));var hardwareService=require(_0xb04c('0x11'));var logger=require(_0xb04c('0x12'))(_0xb04c('0x13'));var utils=require(_0xb04c('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x54bb75,_0x5bdf83){_0x5bdf83=_0x5bdf83||0xcc;return function(_0x55cf71){if(_0x55cf71){return _0x54bb75[_0xb04c('0x15')](_0x5bdf83);}return _0x54bb75[_0xb04c('0x16')](_0x5bdf83)[_0xb04c('0x17')]();};}function respondWithResult(_0x5b0023,_0x3b2c64){_0x3b2c64=_0x3b2c64||0xc8;return function(_0x248355){if(_0x248355){return _0x5b0023[_0xb04c('0x16')](_0x3b2c64)[_0xb04c('0x18')](_0x248355);}};}function respondWithFilteredResult(_0x117115,_0x26f5c3){return function(_0x40c1ec){if(_0x40c1ec){var _0x4031f0=typeof _0x26f5c3[_0xb04c('0x19')]===_0xb04c('0x1a')&&typeof _0x26f5c3[_0xb04c('0x1b')]===_0xb04c('0x1a');var _0x49dfb4=_0x40c1ec[_0xb04c('0x1c')];var _0x2972f6=_0x4031f0?0x0:_0x26f5c3[_0xb04c('0x19')];var _0x19539f=_0x4031f0?_0x40c1ec['count']:_0x26f5c3[_0xb04c('0x19')]+_0x26f5c3[_0xb04c('0x1b')];var _0x40b59d;if(_0x19539f>=_0x49dfb4){_0x19539f=_0x49dfb4;_0x40b59d=0xc8;}else{_0x40b59d=0xce;}_0x117115[_0xb04c('0x16')](_0x40b59d);return _0x117115[_0xb04c('0x1d')](_0xb04c('0x1e'),_0x2972f6+'-'+_0x19539f+'/'+_0x49dfb4)['json'](_0x40c1ec);}return null;};}function patchUpdates(_0x5e7571){return function(_0x4df805){try{jsonpatch[_0xb04c('0x1f')](_0x4df805,_0x5e7571,!![]);}catch(_0x81425){return BPromise['reject'](_0x81425);}return _0x4df805[_0xb04c('0x20')]();};}function saveUpdates(_0x5d3194,_0xb02404){return function(_0xfa139c){if(_0xfa139c){return _0xfa139c[_0xb04c('0x21')](_0x5d3194)['then'](function(_0x57e7c6){return _0x57e7c6;});}return null;};}function removeEntity(_0x378499,_0x3c402f){return function(_0x247222){if(_0x247222){return _0x247222['destroy']()[_0xb04c('0x22')](function(){_0x378499['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4e6557,_0x522610){return function(_0x171e10){if(!_0x171e10){_0x4e6557[_0xb04c('0x15')](0x194);}return _0x171e10;};}function handleError(_0x264d85,_0x1f2f23){_0x1f2f23=_0x1f2f23||0x1f4;return function(_0x15e0f3){logger[_0xb04c('0x23')](_0x15e0f3[_0xb04c('0x24')]);if(_0x15e0f3[_0xb04c('0x25')]){delete _0x15e0f3[_0xb04c('0x25')];}_0x264d85[_0xb04c('0x16')](_0x1f2f23)[_0xb04c('0x26')](_0x15e0f3);};}exports[_0xb04c('0x27')]=function(_0x1a1cbb,_0x5999c2){var _0x2e6607={},_0x5175d1={},_0x372904={'count':0x0,'rows':[]};var _0x3fa96a=_['map'](db[_0xb04c('0x28')][_0xb04c('0x29')],function(_0x5815f1){return{'name':_0x5815f1[_0xb04c('0x2a')],'type':_0x5815f1[_0xb04c('0x2b')][_0xb04c('0x2c')]};});_0x5175d1[_0xb04c('0x2d')]=_[_0xb04c('0x2e')](_0x3fa96a,_0xb04c('0x25'));_0x5175d1[_0xb04c('0x2f')]=_[_0xb04c('0x30')](_0x1a1cbb['query']);_0x5175d1['filters']=_[_0xb04c('0x31')](_0x5175d1[_0xb04c('0x2d')],_0x5175d1[_0xb04c('0x2f')]);_0x2e6607['attributes']=_[_0xb04c('0x31')](_0x5175d1[_0xb04c('0x2d')],qs['fields'](_0x1a1cbb[_0xb04c('0x2f')][_0xb04c('0x32')]));_0x2e6607[_0xb04c('0x33')]=_0x2e6607[_0xb04c('0x33')][_0xb04c('0x34')]?_0x2e6607[_0xb04c('0x33')]:_0x5175d1['model'];if(!_0x1a1cbb[_0xb04c('0x2f')][_0xb04c('0x35')]('nolimit')){_0x2e6607[_0xb04c('0x1b')]=qs[_0xb04c('0x1b')](_0x1a1cbb[_0xb04c('0x2f')][_0xb04c('0x1b')]);_0x2e6607[_0xb04c('0x19')]=qs[_0xb04c('0x19')](_0x1a1cbb[_0xb04c('0x2f')][_0xb04c('0x19')]);}_0x2e6607[_0xb04c('0x36')]=qs[_0xb04c('0x37')](_0x1a1cbb['query'][_0xb04c('0x37')]);_0x2e6607['where']=qs[_0xb04c('0x38')](_[_0xb04c('0x39')](_0x1a1cbb[_0xb04c('0x2f')],_0x5175d1[_0xb04c('0x38')]),_0x3fa96a);if(_0x1a1cbb['query'][_0xb04c('0x3a')]){_0x2e6607[_0xb04c('0x3b')]=_[_0xb04c('0x3c')](_0x2e6607[_0xb04c('0x3b')],{'$or':_[_0xb04c('0x2e')](_0x3fa96a,function(_0x339345){if(_0x339345['type']!=='VIRTUAL'){var _0xc6da04={};_0xc6da04[_0x339345[_0xb04c('0x25')]]={'$like':'%'+_0x1a1cbb['query'][_0xb04c('0x3a')]+'%'};return _0xc6da04;}})});}_0x2e6607=_[_0xb04c('0x3c')]({},_0x2e6607,_0x1a1cbb[_0xb04c('0x3d')]);var _0x49c82e={'where':_0x2e6607[_0xb04c('0x3b')]};return db[_0xb04c('0x28')][_0xb04c('0x1c')](_0x49c82e)['then'](function(_0x5d478c){_0x372904['count']=_0x5d478c;if(_0x1a1cbb['query'][_0xb04c('0x3e')]){_0x2e6607[_0xb04c('0x3f')]=[{'all':!![]}];}return db[_0xb04c('0x28')]['findAll'](_0x2e6607);})[_0xb04c('0x22')](function(_0x38ba89){_0x372904['rows']=_0x38ba89;return _0x372904;})['then'](respondWithFilteredResult(_0x5999c2,_0x2e6607))[_0xb04c('0x40')](handleError(_0x5999c2,null));};exports[_0xb04c('0x41')]=function(_0x1b89fb,_0x24638c){var _0x4bb35b={'raw':!![],'where':{'id':_0x1b89fb[_0xb04c('0x42')]['id']}},_0x501cbe={};_0x501cbe[_0xb04c('0x2d')]=_[_0xb04c('0x30')](db[_0xb04c('0x28')][_0xb04c('0x29')]);_0x501cbe[_0xb04c('0x2f')]=_[_0xb04c('0x30')](_0x1b89fb[_0xb04c('0x2f')]);_0x501cbe[_0xb04c('0x38')]=_[_0xb04c('0x31')](_0x501cbe['model'],_0x501cbe['query']);_0x4bb35b[_0xb04c('0x33')]=_[_0xb04c('0x31')](_0x501cbe['model'],qs['fields'](_0x1b89fb[_0xb04c('0x2f')][_0xb04c('0x32')]));_0x4bb35b[_0xb04c('0x33')]=_0x4bb35b[_0xb04c('0x33')]['length']?_0x4bb35b[_0xb04c('0x33')]:_0x501cbe[_0xb04c('0x2d')];if(_0x1b89fb[_0xb04c('0x2f')]['includeAll']){_0x4bb35b[_0xb04c('0x3f')]=[{'all':!![]}];}_0x4bb35b=_[_0xb04c('0x3c')]({},_0x4bb35b,_0x1b89fb['options']);return db[_0xb04c('0x28')][_0xb04c('0x43')](_0x4bb35b)['then'](handleEntityNotFound(_0x24638c,null))[_0xb04c('0x22')](respondWithResult(_0x24638c,null))['catch'](handleError(_0x24638c,null));};exports[_0xb04c('0x44')]=function(_0x2cfe0d,_0x28f8d1){return db[_0xb04c('0x28')]['create'](_0x2cfe0d[_0xb04c('0x45')],{})[_0xb04c('0x22')](respondWithResult(_0x28f8d1,0xc9))['catch'](handleError(_0x28f8d1,null));};exports[_0xb04c('0x21')]=function(_0x40f272,_0x399380){if(_0x40f272[_0xb04c('0x45')]['id']){delete _0x40f272['body']['id'];}return db['OpenchannelApplication'][_0xb04c('0x43')]({'where':{'id':_0x40f272[_0xb04c('0x42')]['id']}})[_0xb04c('0x22')](handleEntityNotFound(_0x399380,null))['then'](saveUpdates(_0x40f272['body'],null))[_0xb04c('0x22')](respondWithResult(_0x399380,null))[_0xb04c('0x40')](handleError(_0x399380,null));};exports[_0xb04c('0x46')]=function(_0x425719,_0x2f8b0f){return db[_0xb04c('0x28')][_0xb04c('0x43')]({'where':{'id':_0x425719['params']['id']}})[_0xb04c('0x22')](handleEntityNotFound(_0x2f8b0f,null))[_0xb04c('0x22')](removeEntity(_0x2f8b0f,null))[_0xb04c('0x40')](handleError(_0x2f8b0f,null));};
\ No newline at end of file
index f6e11c7..cc3007c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0091=['utf8mb4','util','../../config/logger','moment','./openchannelApplication.attributes','exports','OpenchannelApplication'];(function(_0x336051,_0x3ab13e){var _0x3eeb59=function(_0x258b0c){while(--_0x258b0c){_0x336051['push'](_0x336051['shift']());}};_0x3eeb59(++_0x3ab13e);}(_0x0091,0x1dd));var _0x1009=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x0091[_0xa464c9];return _0x3d73c4;};'use strict';var _=require('lodash');var util=require(_0x1009('0x0'));var logger=require(_0x1009('0x1'))('api');var moment=require(_0x1009('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x1009('0x3'));module[_0x1009('0x4')]=function(_0x6f82f5,_0x1407b2){return _0x6f82f5['define'](_0x1009('0x5'),attributes,{'tableName':'openchannel_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x1009('0x6'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x5224=['../../config/environment','./openchannelApplication.attributes','exports','define','utf8mb4','utf8mb4_unicode_ci','util','api','moment','bluebird','request-promise','path'];(function(_0x2ebee1,_0x183abd){var _0x51214a=function(_0x505dca){while(--_0x505dca){_0x2ebee1['push'](_0x2ebee1['shift']());}};_0x51214a(++_0x183abd);}(_0x5224,0x126));var _0x4522=function(_0x16e5d1,_0x9cf085){_0x16e5d1=_0x16e5d1-0x0;var _0x3f72e6=_0x5224[_0x16e5d1];return _0x3f72e6;};'use strict';var _=require('lodash');var util=require(_0x4522('0x0'));var logger=require('../../config/logger')(_0x4522('0x1'));var moment=require(_0x4522('0x2'));var BPromise=require(_0x4522('0x3'));var rp=require(_0x4522('0x4'));var fs=require('fs');var path=require(_0x4522('0x5'));var rimraf=require('rimraf');var config=require(_0x4522('0x6'));var attributes=require(_0x4522('0x7'));module[_0x4522('0x8')]=function(_0x30d8f1,_0x485a79){return _0x30d8f1[_0x4522('0x9')]('OpenchannelApplication',attributes,{'tableName':'openchannel_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x4522('0xa'),'collate':_0x4522('0xb')});};
\ No newline at end of file
index 9dfdec2..7374a53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6af=['jayson/promise','client','request','then','info','OpenchannelApplication,\x20%s,\x20%s','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','UpdateOpenchannelApplication','OpenchannelApplication','update','options','raw','where','attributes','limit','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x210cdf,_0x34a5a6){var _0x4dff80=function(_0x49e077){while(--_0x49e077){_0x210cdf['push'](_0x210cdf['shift']());}};_0x4dff80(++_0x34a5a6);}(_0xd6af,0x14a));var _0xfd6a=function(_0x24fdc7,_0x13b25d){_0x24fdc7=_0x24fdc7-0x0;var _0x321a1f=_0xd6af[_0x24fdc7];return _0x321a1f;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xfd6a('0x0'));var BPromise=require('bluebird');var rs=require(_0xfd6a('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfd6a('0x2'))['db'];var utils=require(_0xfd6a('0x3'));var logger=require(_0xfd6a('0x4'))(_0xfd6a('0x5'));var config=require('../../config/environment');var jayson=require(_0xfd6a('0x6'));var client=jayson[_0xfd6a('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1c5dba,_0x1298f2,_0x35cb58){return new BPromise(function(_0x280f92,_0x56024f){return client[_0xfd6a('0x8')](_0x1c5dba,_0x35cb58)[_0xfd6a('0x9')](function(_0x18fdf4){logger[_0xfd6a('0xa')](_0xfd6a('0xb'),_0x1298f2,'request\x20sent');logger[_0xfd6a('0xc')](_0xfd6a('0xd'),_0x1298f2,'request\x20sent',JSON[_0xfd6a('0xe')](_0x18fdf4));if(_0x18fdf4[_0xfd6a('0xf')]){if(_0x18fdf4[_0xfd6a('0xf')][_0xfd6a('0x10')]===0x1f4){logger['error'](_0xfd6a('0xb'),_0x1298f2,_0x18fdf4[_0xfd6a('0xf')][_0xfd6a('0x11')]);return _0x56024f(_0x18fdf4[_0xfd6a('0xf')][_0xfd6a('0x11')]);}logger[_0xfd6a('0xf')](_0xfd6a('0xb'),_0x1298f2,_0x18fdf4['error'][_0xfd6a('0x11')]);return _0x280f92(_0x18fdf4[_0xfd6a('0xf')]['message']);}else{logger[_0xfd6a('0xa')](_0xfd6a('0xb'),_0x1298f2,_0xfd6a('0x12'));_0x280f92(_0x18fdf4[_0xfd6a('0x13')][_0xfd6a('0x11')]);}})['catch'](function(_0xf6e76f){logger['error'](_0xfd6a('0xb'),_0x1298f2,_0xf6e76f);_0x56024f(_0xf6e76f);});});}exports[_0xfd6a('0x14')]=function(_0x4e5cb9){var _0x4af9f6=this;return new Promise(function(_0xc43dfa,_0x3357d3){return db[_0xfd6a('0x15')][_0xfd6a('0x16')](_0x4e5cb9['body'],{'raw':_0x4e5cb9['options']?_0x4e5cb9[_0xfd6a('0x17')][_0xfd6a('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4e5cb9['options']?_0x4e5cb9['options'][_0xfd6a('0x19')]||null:null,'attributes':_0x4e5cb9[_0xfd6a('0x17')]?_0x4e5cb9[_0xfd6a('0x17')][_0xfd6a('0x1a')]||null:null,'limit':_0x4e5cb9['options']?_0x4e5cb9['options'][_0xfd6a('0x1b')]||null:null})['then'](function(_0x344859){logger[_0xfd6a('0xa')](_0xfd6a('0x14'),_0x4e5cb9);logger[_0xfd6a('0xc')](_0xfd6a('0x14'),_0x4e5cb9,JSON[_0xfd6a('0xe')](_0x344859));_0xc43dfa(_0x344859);})['catch'](function(_0x5f3d7b){logger[_0xfd6a('0xf')]('UpdateOpenchannelApplication',_0x5f3d7b[_0xfd6a('0x11')],_0x4e5cb9);_0x3357d3(_0x4af9f6[_0xfd6a('0xf')](0x1f4,_0x5f3d7b[_0xfd6a('0x11')]));});});};
\ No newline at end of file
+var _0x9396=['update','body','options','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','OpenchannelApplication,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result','UpdateOpenchannelApplication','OpenchannelApplication'];(function(_0x18ae7d,_0x4a3fc6){var _0x422e3c=function(_0x594b37){while(--_0x594b37){_0x18ae7d['push'](_0x18ae7d['shift']());}};_0x422e3c(++_0x4a3fc6);}(_0x9396,0xf7));var _0x6939=function(_0x2663d4,_0x5b08a0){_0x2663d4=_0x2663d4-0x0;var _0x23f81f=_0x9396[_0x2663d4];return _0x23f81f;};'use strict';var _=require(_0x6939('0x0'));var util=require(_0x6939('0x1'));var moment=require('moment');var BPromise=require(_0x6939('0x2'));var rs=require(_0x6939('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6939('0x4'))['db'];var utils=require(_0x6939('0x5'));var logger=require(_0x6939('0x6'))(_0x6939('0x7'));var config=require(_0x6939('0x8'));var jayson=require(_0x6939('0x9'));var client=jayson[_0x6939('0xa')][_0x6939('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x57d630,_0x97a680,_0x2c2055){return new BPromise(function(_0x1338c0,_0x45c02f){return client['request'](_0x57d630,_0x2c2055)[_0x6939('0xc')](function(_0x459ebd){logger[_0x6939('0xd')](_0x6939('0xe'),_0x97a680,'request\x20sent');logger[_0x6939('0xf')]('OpenchannelApplication,\x20%s,\x20%s,\x20%s',_0x97a680,_0x6939('0x10'),JSON[_0x6939('0x11')](_0x459ebd));if(_0x459ebd['error']){if(_0x459ebd[_0x6939('0x12')]['code']===0x1f4){logger[_0x6939('0x12')](_0x6939('0xe'),_0x97a680,_0x459ebd['error'][_0x6939('0x13')]);return _0x45c02f(_0x459ebd['error'][_0x6939('0x13')]);}logger[_0x6939('0x12')](_0x6939('0xe'),_0x97a680,_0x459ebd['error']['message']);return _0x1338c0(_0x459ebd[_0x6939('0x12')]['message']);}else{logger[_0x6939('0xd')](_0x6939('0xe'),_0x97a680,_0x6939('0x10'));_0x1338c0(_0x459ebd[_0x6939('0x14')]['message']);}})['catch'](function(_0x6eab90){logger['error'](_0x6939('0xe'),_0x97a680,_0x6eab90);_0x45c02f(_0x6eab90);});});}exports[_0x6939('0x15')]=function(_0x5a86d6){var _0x1a706a=this;return new Promise(function(_0x3d3e66,_0x1651e6){return db[_0x6939('0x16')][_0x6939('0x17')](_0x5a86d6[_0x6939('0x18')],{'raw':_0x5a86d6[_0x6939('0x19')]?_0x5a86d6['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5a86d6[_0x6939('0x19')]?_0x5a86d6['options']['where']||null:null,'attributes':_0x5a86d6[_0x6939('0x19')]?_0x5a86d6[_0x6939('0x19')]['attributes']||null:null,'limit':_0x5a86d6['options']?_0x5a86d6[_0x6939('0x19')]['limit']||null:null})[_0x6939('0xc')](function(_0x13ca1a){logger[_0x6939('0xd')](_0x6939('0x15'),_0x5a86d6);logger['debug'](_0x6939('0x15'),_0x5a86d6,JSON[_0x6939('0x11')](_0x13ca1a));_0x3d3e66(_0x13ca1a);})[_0x6939('0x1a')](function(_0x382ed8){logger[_0x6939('0x12')](_0x6939('0x15'),_0x382ed8[_0x6939('0x13')],_0x5a86d6);_0x1651e6(_0x1a706a[_0x6939('0x12')](0x1f4,_0x382ed8['message']));});});};
\ No newline at end of file
index 864da88..5b80e49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadaa=['destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelInteraction.controller','/describe','get','isAuthenticated','/:id/messages','download','create','post','addMessage','/:id/tags','tracked','openchannelinteraction:addtags','addTags','put','/:id','openchannel','openchannelinteraction:update','update','delete','openchannelinteraction:destroy'];(function(_0x21c068,_0x369d6a){var _0x5cf199=function(_0x2c0159){while(--_0x2c0159){_0x21c068['push'](_0x21c068['shift']());}};_0x5cf199(++_0x369d6a);}(_0xadaa,0xf2));var _0xaada=function(_0x15cd19,_0x545187){_0x15cd19=_0x15cd19-0x0;var _0x2fd15c=_0xadaa[_0x15cd19];return _0x2fd15c;};'use strict';var multer=require(_0xaada('0x0'));var util=require('util');var path=require(_0xaada('0x1'));var timeout=require(_0xaada('0x2'));var express=require(_0xaada('0x3'));var router=express[_0xaada('0x4')]();var fs_extra=require(_0xaada('0x5'));var auth=require(_0xaada('0x6'));var interaction=require(_0xaada('0x7'));var config=require('../../config/environment');var controller=require(_0xaada('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xaada('0x9'),auth['isAuthenticated'](),controller['describe']);router[_0xaada('0xa')]('/:id',auth[_0xaada('0xb')](),controller['show']);router[_0xaada('0xa')](_0xaada('0xc'),auth[_0xaada('0xb')](),controller['getMessages']);router['get']('/:id/download',auth[_0xaada('0xb')](),controller[_0xaada('0xd')]);router['post']('/',auth[_0xaada('0xb')](),controller[_0xaada('0xe')]);router[_0xaada('0xf')](_0xaada('0xc'),auth[_0xaada('0xb')](),controller[_0xaada('0x10')]);router['post'](_0xaada('0x11'),auth['isAuthenticated'](),interaction[_0xaada('0x12')]('openchannel',_0xaada('0x13')),controller[_0xaada('0x14')]);router[_0xaada('0x15')](_0xaada('0x16'),auth[_0xaada('0xb')](),interaction[_0xaada('0x12')](_0xaada('0x17'),_0xaada('0x18')),controller[_0xaada('0x19')]);router[_0xaada('0x1a')](_0xaada('0x16'),auth[_0xaada('0xb')](),interaction[_0xaada('0x12')](_0xaada('0x17'),_0xaada('0x1b')),controller[_0xaada('0x1c')]);router[_0xaada('0x1a')](_0xaada('0x11'),auth[_0xaada('0xb')](),controller['removeTags']);module[_0xaada('0x1d')]=router;
\ No newline at end of file
+var _0xab7a=['download','post','create','addMessage','/:id/tags','tracked','openchannelinteraction:addtags','addTags','put','/:id','openchannel','openchannelinteraction:update','update','delete','openchannelinteraction:destroy','removeTags','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelInteraction.controller','get','isAuthenticated','index','/describe','describe','show','/:id/messages','getMessages','/:id/download'];(function(_0x17b0d4,_0x377add){var _0x2d02c7=function(_0x56e627){while(--_0x56e627){_0x17b0d4['push'](_0x17b0d4['shift']());}};_0x2d02c7(++_0x377add);}(_0xab7a,0x9c));var _0xaab7=function(_0x1e132a,_0x829341){_0x1e132a=_0x1e132a-0x0;var _0x16b110=_0xab7a[_0x1e132a];return _0x16b110;};'use strict';var multer=require(_0xaab7('0x0'));var util=require(_0xaab7('0x1'));var path=require(_0xaab7('0x2'));var timeout=require(_0xaab7('0x3'));var express=require(_0xaab7('0x4'));var router=express[_0xaab7('0x5')]();var fs_extra=require(_0xaab7('0x6'));var auth=require(_0xaab7('0x7'));var interaction=require(_0xaab7('0x8'));var config=require('../../config/environment');var controller=require(_0xaab7('0x9'));router[_0xaab7('0xa')]('/',auth[_0xaab7('0xb')](),controller[_0xaab7('0xc')]);router[_0xaab7('0xa')](_0xaab7('0xd'),auth['isAuthenticated'](),controller[_0xaab7('0xe')]);router[_0xaab7('0xa')]('/:id',auth[_0xaab7('0xb')](),controller[_0xaab7('0xf')]);router[_0xaab7('0xa')](_0xaab7('0x10'),auth[_0xaab7('0xb')](),controller[_0xaab7('0x11')]);router['get'](_0xaab7('0x12'),auth[_0xaab7('0xb')](),controller[_0xaab7('0x13')]);router[_0xaab7('0x14')]('/',auth['isAuthenticated'](),controller[_0xaab7('0x15')]);router[_0xaab7('0x14')](_0xaab7('0x10'),auth[_0xaab7('0xb')](),controller[_0xaab7('0x16')]);router[_0xaab7('0x14')](_0xaab7('0x17'),auth[_0xaab7('0xb')](),interaction[_0xaab7('0x18')]('openchannel',_0xaab7('0x19')),controller[_0xaab7('0x1a')]);router[_0xaab7('0x1b')](_0xaab7('0x1c'),auth['isAuthenticated'](),interaction[_0xaab7('0x18')](_0xaab7('0x1d'),_0xaab7('0x1e')),controller[_0xaab7('0x1f')]);router[_0xaab7('0x20')]('/:id',auth['isAuthenticated'](),interaction['tracked'](_0xaab7('0x1d'),_0xaab7('0x21')),controller['destroy']);router[_0xaab7('0x20')](_0xaab7('0x17'),auth[_0xaab7('0xb')](),controller[_0xaab7('0x22')]);module['exports']=router;
\ No newline at end of file
index 405c25a..83bf216 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c02=['exports','BOOLEAN','STRING','DATE','ENUM','out'];(function(_0xfdab9c,_0x8699c0){var _0x4ec74d=function(_0x31cbeb){while(--_0x31cbeb){_0xfdab9c['push'](_0xfdab9c['shift']());}};_0x4ec74d(++_0x8699c0);}(_0x0c02,0x84));var _0x20c0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0c02[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0x20c0('0x0')]={'closed':{'type':Sequelize[_0x20c0('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x20c0('0x2')]},'secondDisposition':{'type':Sequelize[_0x20c0('0x2')]},'thirdDisposition':{'type':Sequelize[_0x20c0('0x2')]},'note':{'type':Sequelize[_0x20c0('0x2')]},'read1stAt':{'type':Sequelize[_0x20c0('0x3')]},'threadId':{'type':Sequelize[_0x20c0('0x2')]},'externalUrl':{'type':Sequelize[_0x20c0('0x2')]},'lastMsgAt':{'type':Sequelize[_0x20c0('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x20c0('0x4')]('in',_0x20c0('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize['STRING']},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xcc73=['DATE','ENUM','out','exports','BOOLEAN','STRING'];(function(_0x43f5c7,_0x118763){var _0x46be5f=function(_0x1a43f2){while(--_0x1a43f2){_0x43f5c7['push'](_0x43f5c7['shift']());}};_0x46be5f(++_0x118763);}(_0xcc73,0x1cb));var _0x3cc7=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xcc73[_0x6c993a];return _0x27f547;};'use strict';var Sequelize=require('sequelize');module[_0x3cc7('0x0')]={'closed':{'type':Sequelize[_0x3cc7('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x3cc7('0x2')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x3cc7('0x2')]},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize['STRING']},'externalUrl':{'type':Sequelize[_0x3cc7('0x2')]},'lastMsgAt':{'type':Sequelize[_0x3cc7('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x3cc7('0x4')]('in',_0x3cc7('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize[_0x3cc7('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x3cc7('0x2')]},'autoreplyExecuted':{'type':Sequelize[_0x3cc7('0x1')],'defaultValue':![]}};
\ No newline at end of file
index 23bf67e..f744558 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf5e=['i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','t.id\x20IN\x20?','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','role','getOpenchannelAccounts','i.OpenchannelAccountId\x20IS\x20NULL','agent','toString','sequelize','keyBy','merge','a.key','Account.key','CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','c.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','OpenchannelInteractionId','all','rows','show','params','includeAll','include','options','create','describe','addMessage','OpenchannelMessage','ids','omit','getMessages','findOne','hasOwnProperty','$gte','format','YYYY-MM-DD\x20HH:mm:ss','addTags','setTags','spread','emit','openchannelInteractionTags:save','removeTags','download','tmp','join','root','files','attachments','transcript-%d-%s.zip','fullname','CmContact','Contact','firstName','lastName','Attachment','Messages','direction','secret','OpenchannelAccount','Account','Owner','get','Openchannel','N.A.','closedAt','disposition','threadId','Private','basename','existsSync','createReadStream','pipe','System','out','server','views','downloadInteraction.ejs','transcript-','.pdf','log','unlinkSync','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','../../components/auth/service','../../components/parsers/qs','../../components/export/pdf','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','register','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','save','update','then','destroy','end','error','stack','name','send','Users','map','Tags','TagIds','split','forEach','push','catch','waiting','talking','unmanaged','total','UserId','closed','answered','index','OpenchannelInteraction','rawAttributes','fieldName','type','model','query','attributes','intersection','fields','nolimit','order','sort','where','pick','filters','select','field','color','from','tools_tags','u.id','u.fullname','ui.OpenchannelInteractionId','user_has_openchannel_interactions','left_join','users','openchannel_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','me.OpenchannelInteractionId\x20=\x20i.id','it.OpenchannelInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','search','sqlOperator','length','conditions','find','having','`\x20=\x200','operator','value','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','body','keys','some','isEmpty','OpenchannelAccountId','i.OpenchannelAccountId\x20IN\x20?','concat','createdAt','parse','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','i.from\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','Sequelize','SELECT'];(function(_0x51fc99,_0x5ac892){var _0x238028=function(_0xe06c81){while(--_0xe06c81){_0x51fc99['push'](_0x51fc99['shift']());}};_0x238028(++_0x5ac892);}(_0xaf5e,0x151));var _0xeaf5=function(_0x4f5b0f,_0x4e59e6){_0x4f5b0f=_0x4f5b0f-0x0;var _0x1c3ae6=_0xaf5e[_0x4f5b0f];return _0x1c3ae6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xeaf5('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xeaf5('0x1'));var rp=require(_0xeaf5('0x2'));var moment=require(_0xeaf5('0x3'));var BPromise=require(_0xeaf5('0x4'));var Mustache=require(_0xeaf5('0x5'));var util=require('util');var path=require(_0xeaf5('0x6'));var sox=require('sox');var csv=require(_0xeaf5('0x7'));var ejs=require(_0xeaf5('0x8'));var fs=require('fs');var fs_extra=require(_0xeaf5('0x9'));var _=require(_0xeaf5('0xa'));var squel=require('squel');var crypto=require(_0xeaf5('0xb'));var jsforce=require(_0xeaf5('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xeaf5('0xd'));var qs=require(_0xeaf5('0xe'));var as=require('../../components/parsers/advancedSearch');var pdf=require(_0xeaf5('0xf'));var hardwareService=require(_0xeaf5('0x10'));var logger=require(_0xeaf5('0x11'))('api');var utils=require('../../config/utils');var config=require(_0xeaf5('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xeaf5('0x13'))['db'];config[_0xeaf5('0x14')]=_['defaults'](config['redis'],{'host':_0xeaf5('0x15'),'port':0x18eb});var socket=require(_0xeaf5('0x16'))(new Redis(config[_0xeaf5('0x14')]));require(_0xeaf5('0x17'))[_0xeaf5('0x18')](socket);function respondWithStatusCode(_0x5778c0,_0x173087){_0x173087=_0x173087||0xcc;return function(_0x3c35f4){if(_0x3c35f4){return _0x5778c0[_0xeaf5('0x19')](_0x173087);}return _0x5778c0['status'](_0x173087)['end']();};}function respondWithResult(_0x28f968,_0x4e74cc){_0x4e74cc=_0x4e74cc||0xc8;return function(_0x1b4729){if(_0x1b4729){return _0x28f968[_0xeaf5('0x1a')](_0x4e74cc)[_0xeaf5('0x1b')](_0x1b4729);}};}function respondWithFilteredResult(_0x3209a2,_0x3675ab){return function(_0x583fa5){if(_0x583fa5){var _0x346d00=typeof _0x3675ab[_0xeaf5('0x1c')]==='undefined'&&typeof _0x3675ab[_0xeaf5('0x1d')]===_0xeaf5('0x1e');var _0x3ed1b0=_0x583fa5[_0xeaf5('0x1f')];var _0x2bf63f=_0x346d00?0x0:_0x3675ab[_0xeaf5('0x1c')];var _0x55bf28=_0x346d00?_0x583fa5[_0xeaf5('0x1f')]:_0x3675ab[_0xeaf5('0x1c')]+_0x3675ab[_0xeaf5('0x1d')];var _0x4d9745;if(_0x55bf28>=_0x3ed1b0){_0x55bf28=_0x3ed1b0;_0x4d9745=0xc8;}else{_0x4d9745=0xce;}_0x3209a2[_0xeaf5('0x1a')](_0x4d9745);return _0x3209a2[_0xeaf5('0x20')](_0xeaf5('0x21'),_0x2bf63f+'-'+_0x55bf28+'/'+_0x3ed1b0)[_0xeaf5('0x1b')](_0x583fa5);}return null;};}function patchUpdates(_0x1f82ba){return function(_0x4c91b3){try{jsonpatch[_0xeaf5('0x22')](_0x4c91b3,_0x1f82ba,!![]);}catch(_0x43609b){return BPromise['reject'](_0x43609b);}return _0x4c91b3[_0xeaf5('0x23')]();};}function saveUpdates(_0x5557cd,_0x46b1b5){return function(_0x4e9a9f){if(_0x4e9a9f){return _0x4e9a9f[_0xeaf5('0x24')](_0x5557cd)[_0xeaf5('0x25')](function(_0x58be8a){return _0x58be8a;});}return null;};}function removeEntity(_0x4f35d1,_0x2c107d){return function(_0x1e7fe6){if(_0x1e7fe6){return _0x1e7fe6[_0xeaf5('0x26')]()[_0xeaf5('0x25')](function(){_0x4f35d1[_0xeaf5('0x1a')](0xcc)[_0xeaf5('0x27')]();});}};}function handleEntityNotFound(_0x2aeba3,_0x2b7b0c){return function(_0x1038c8){if(!_0x1038c8){_0x2aeba3[_0xeaf5('0x19')](0x194);}return _0x1038c8;};}function handleError(_0x1cad3b,_0x11d744){_0x11d744=_0x11d744||0x1f4;return function(_0x308eb){logger[_0xeaf5('0x28')](_0x308eb[_0xeaf5('0x29')]);if(_0x308eb[_0xeaf5('0x2a')]){delete _0x308eb[_0xeaf5('0x2a')];}_0x1cad3b['status'](_0x11d744)[_0xeaf5('0x2b')](_0x308eb);};}function getInteractionUsers(_0x2e81a2,_0x11baa4){return new BPromise(function(_0x212641,_0x13f228){try{if(_0x11baa4[_0x2e81a2['id']]){_0x2e81a2[_0xeaf5('0x2c')]=_[_0xeaf5('0x2d')](_0x11baa4[_0x2e81a2['id']],function(_0x2eee4d){return{'id':_0x2eee4d['id'],'fullname':_0x2eee4d['fullname']};});}}catch(_0x2fdd8a){_0x13f228(_0x2fdd8a);}_0x212641(_0x2e81a2);});}function getInteractionTags(_0x82b53,_0x34d34a){return new BPromise(function(_0xdb17c2,_0x48a390){try{if(_0x82b53['TagIds']){_0x82b53[_0xeaf5('0x2e')]=[];_0x82b53[_0xeaf5('0x2f')][_0xeaf5('0x30')](',')[_0xeaf5('0x31')](function(_0x371b4c){_0x82b53['Tags'][_0xeaf5('0x32')](_0x34d34a[_0x371b4c]);});}delete _0x82b53[_0xeaf5('0x2f')];}catch(_0x2f6843){_0x48a390(_0x2f6843);}_0xdb17c2(_0x82b53);});}function updateOpenchannelInteraction(_0x405131,_0x52fd73,_0x358e8e){return new BPromise(function(_0x352c50,_0x25f106){return getInteractionUsers(_0x405131,_0x358e8e)[_0xeaf5('0x25')](function(_0x55710b){return getInteractionTags(_0x55710b,_0x52fd73);})[_0xeaf5('0x25')](function(_0x260eec){return getStateInteraction(_0x260eec);})[_0xeaf5('0x25')](function(_0x42afac){_0x352c50(_0x42afac);})[_0xeaf5('0x33')](function(_0xf0a99a){_0x25f106(_0xf0a99a);});});}function getStateInteraction(_0x4ea4f8){return new BPromise(function(_0x12aaeb){_0x4ea4f8[_0xeaf5('0x34')]=0x0;_0x4ea4f8[_0xeaf5('0x35')]=0x0;_0x4ea4f8['answered']=0x0;_0x4ea4f8[_0xeaf5('0x36')]=0x0;_0x4ea4f8[_0xeaf5('0x37')]=0x0;if(!_0x4ea4f8['closed']&&!_0x4ea4f8[_0xeaf5('0x38')]){_0x4ea4f8['waiting']+=0x1;}if(!_0x4ea4f8[_0xeaf5('0x39')]&&_0x4ea4f8[_0xeaf5('0x38')]){_0x4ea4f8['talking']+=0x1;if(_0x4ea4f8[_0xeaf5('0x34')]){_0x4ea4f8['waiting']-=0x1;}}if(_0x4ea4f8[_0xeaf5('0x39')]&&_0x4ea4f8[_0xeaf5('0x38')]){_0x4ea4f8[_0xeaf5('0x3a')]+=0x1;if(_0x4ea4f8['talking']){_0x4ea4f8[_0xeaf5('0x35')]-=0x1;}}if(_0x4ea4f8[_0xeaf5('0x39')]&&!_0x4ea4f8[_0xeaf5('0x38')]){_0x4ea4f8['unmanaged']+=0x1;if(_0x4ea4f8[_0xeaf5('0x34')]){_0x4ea4f8[_0xeaf5('0x34')]-=0x1;}}_0x4ea4f8[_0xeaf5('0x37')]+=0x1;_0x12aaeb(_0x4ea4f8);});}exports[_0xeaf5('0x3b')]=function(_0x54bf7a,_0x2d6fd3){var _0x195b31={},_0x391b1a={},_0x31d9ed={'count':0x0,'rows':[]};var _0x4816d4=_['map'](db[_0xeaf5('0x3c')][_0xeaf5('0x3d')],function(_0x4ef7fe){return{'name':_0x4ef7fe[_0xeaf5('0x3e')],'type':_0x4ef7fe[_0xeaf5('0x3f')]['key']};});_0x391b1a[_0xeaf5('0x40')]=_[_0xeaf5('0x2d')](_0x4816d4,_0xeaf5('0x2a'));_0x391b1a[_0xeaf5('0x41')]=_['keys'](_0x54bf7a['query']);_0x391b1a['filters']=_['intersection'](_0x391b1a[_0xeaf5('0x40')],_0x391b1a['query']);_0x195b31[_0xeaf5('0x42')]=_[_0xeaf5('0x43')](_0x391b1a[_0xeaf5('0x40')],qs[_0xeaf5('0x44')](_0x54bf7a[_0xeaf5('0x41')]['fields']));_0x195b31[_0xeaf5('0x42')]=_0x195b31[_0xeaf5('0x42')]['length']?_0x195b31[_0xeaf5('0x42')]:_0x391b1a[_0xeaf5('0x40')];if(!_0x54bf7a[_0xeaf5('0x41')]['hasOwnProperty'](_0xeaf5('0x45'))){_0x195b31[_0xeaf5('0x1d')]=qs[_0xeaf5('0x1d')](_0x54bf7a[_0xeaf5('0x41')]['limit']);_0x195b31[_0xeaf5('0x1c')]=qs[_0xeaf5('0x1c')](_0x54bf7a['query']['offset']);}_0x195b31[_0xeaf5('0x46')]=qs['sort'](_0x54bf7a['query'][_0xeaf5('0x47')]);_0x195b31[_0xeaf5('0x48')]=qs['filters'](_[_0xeaf5('0x49')](_0x54bf7a['query'],_0x391b1a[_0xeaf5('0x4a')]),_0x4816d4);var _0x46f757=[];var _0x162d42=squel[_0xeaf5('0x4b')]()[_0xeaf5('0x4c')]('id')[_0xeaf5('0x4c')]('name')[_0xeaf5('0x4c')](_0xeaf5('0x4d'))[_0xeaf5('0x4e')](_0xeaf5('0x4f'));var _0x2f9e7b=squel[_0xeaf5('0x4b')]()[_0xeaf5('0x4c')](_0xeaf5('0x50'))[_0xeaf5('0x4c')](_0xeaf5('0x51'))[_0xeaf5('0x4c')](_0xeaf5('0x52'))[_0xeaf5('0x4e')](_0xeaf5('0x53'),'ui')[_0xeaf5('0x54')](_0xeaf5('0x55'),'u','u.id\x20=\x20ui.UserId');var _0x3934c4=squel[_0xeaf5('0x4b')]()[_0xeaf5('0x4e')](_0xeaf5('0x56'),'i')[_0xeaf5('0x54')](_0xeaf5('0x57'),'c',_0xeaf5('0x58'))[_0xeaf5('0x54')](_0xeaf5('0x55'),'o',_0xeaf5('0x59'))['left_join']('openchannel_accounts','a','a.id\x20=\x20i.OpenchannelAccountId')[_0xeaf5('0x54')]('openchannel_messages','me',_0xeaf5('0x5a'))['left_join']('openchannel_interaction_has_tags','it',_0xeaf5('0x5b'))[_0xeaf5('0x54')](_0xeaf5('0x4f'),'t',_0xeaf5('0x5c'));var _0x317b5f=squel['expr']();var _0x3dba07=[];var _0x2c2763=squel['expr']();var _0x57fa52;if(_0x54bf7a[_0xeaf5('0x41')][_0xeaf5('0x5d')]){_0x57fa52=as['parseSearch'](_0x54bf7a[_0xeaf5('0x41')][_0xeaf5('0x5d')]);var _0xaa584e=_0x57fa52[_0xeaf5('0x5e')];for(var _0xade56e=0x0;_0xade56e<_0x57fa52['conditions'][_0xeaf5('0x5f')];_0xade56e++){var _0x2cdc18=_0x57fa52[_0xeaf5('0x60')][_0xade56e];var _0x23882b='i';var _0x2a00f4=_[_0xeaf5('0x61')](_0x4816d4,[_0xeaf5('0x2a'),_0x2cdc18[_0xeaf5('0x4c')]]);if(!_0x2a00f4){switch(_0x2cdc18['field']){case'unreadMessages':if(_0x2cdc18['value']==0x1){_0x3934c4[_0xeaf5('0x62')]('`'+_0x2cdc18['field']+_0xeaf5('0x63'));}else{_0x3934c4['having']('`'+_0x2cdc18['field']+'`\x20>\x200');}break;case'Contact':if(_0x2cdc18[_0xeaf5('0x64')]==='$substring'){if(_0x2cdc18[_0xeaf5('0x65')][_0xeaf5('0x30')]('\x20')[_0xeaf5('0x5f')]>0x1){_0x317b5f[_0xaa584e](_0xeaf5('0x66'),qs[_0xeaf5('0x67')](_0x2cdc18['value']),null);}else{var _0x1bd811='%'+_0x2cdc18['value']+'%';_0x317b5f[_0xaa584e]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x1bd811,_0x1bd811,_0x1bd811);}}else{_0x2a00f4=_['find'](_0x4816d4,[_0xeaf5('0x2a'),_0xeaf5('0x68')]);_0x2cdc18['field']='ContactId';_0x555672=as[_0xeaf5('0x69')](_0x23882b,_0x2a00f4['type'],_0x2cdc18);_0x317b5f[_0xaa584e](_0x555672[_0xeaf5('0x6a')],_0x555672['value'][_0xeaf5('0x6b')],_0x555672[_0xeaf5('0x65')]['end']);}break;case _0xeaf5('0x6c'):var _0x2b768e=_0x2cdc18['value']['split'](',')['map'](function(_0x299825){return Number(_0x299825);});_0x2b768e['forEach'](function(_0x289f4e){_0x2c2763['or'](_0xeaf5('0x6d'),'%,'+_0x289f4e+',%');});_0x3dba07=_['union'](_0x3dba07,_0x2b768e);break;case _0xeaf5('0x6e'):if(_0x2cdc18[_0xeaf5('0x64')]===_0xeaf5('0x6f')){_0x317b5f[_0xaa584e](_0xeaf5('0x70'),'%'+_0x2cdc18['value']+'%',null);}else{_0x2a00f4=_[_0xeaf5('0x61')](_0x4816d4,[_0xeaf5('0x2a'),_0xeaf5('0x38')]);_0x2cdc18[_0xeaf5('0x4c')]=_0xeaf5('0x38');_0x555672=as[_0xeaf5('0x69')](_0x23882b,_0x2a00f4[_0xeaf5('0x3f')],_0x2cdc18);_0x317b5f[_0xaa584e](_0x555672[_0xeaf5('0x6a')],_0x555672[_0xeaf5('0x65')][_0xeaf5('0x6b')],_0x555672['value'][_0xeaf5('0x27')]);}break;case _0xeaf5('0x71'):_0x555672=as[_0xeaf5('0x69')]('me',null,_0x2cdc18);_0x317b5f[_0xaa584e](_0x555672['text'],_0x555672[_0xeaf5('0x65')][_0xeaf5('0x6b')],_0x555672['value'][_0xeaf5('0x27')]);break;}}else{var _0x555672=as[_0xeaf5('0x69')](_0x23882b,_0x2a00f4[_0xeaf5('0x3f')],_0x2cdc18);_0x317b5f[_0xaa584e](_0x555672[_0xeaf5('0x6a')],_0x555672['value'][_0xeaf5('0x6b')],_0x555672[_0xeaf5('0x65')][_0xeaf5('0x27')]);}}}else{var _0x2fe11e=_(_0x54bf7a[_0xeaf5('0x41')])[_0xeaf5('0x72')]()[_0xeaf5('0x2d')](function(_0x21fb52){return _[_0xeaf5('0x73')](_0x4816d4,[_0xeaf5('0x2a'),_0x21fb52])?_0x21fb52:undefined;})['compact']()['value']();if(!_[_0xeaf5('0x74')](_0x2fe11e)){_0x2fe11e[_0xeaf5('0x31')](function(_0x4a2c7d){if(_0x4a2c7d===_0xeaf5('0x75')){_0x3934c4['where'](_0xeaf5('0x76'),[][_0xeaf5('0x77')](_0x54bf7a[_0xeaf5('0x41')][_0x4a2c7d]));}else if(_0x4a2c7d===_0xeaf5('0x78')){var _0x2e50ea=JSON[_0xeaf5('0x79')](_0x54bf7a[_0xeaf5('0x41')][_0x4a2c7d])['$gte'];var _0x428cfb=JSON[_0xeaf5('0x79')](_0x54bf7a[_0xeaf5('0x41')][_0x4a2c7d])['$lte'];_0x3934c4['where'](_0xeaf5('0x7a'),_0x2e50ea,_0x428cfb);}else{if(_0x54bf7a[_0xeaf5('0x41')][_0x4a2c7d]===_0xeaf5('0x7b')){_0x3934c4['where']('i.'+_0x4a2c7d+_0xeaf5('0x7c'));}else{_0x3934c4[_0xeaf5('0x48')]('i.'+_0x4a2c7d+_0xeaf5('0x7d'),_0x54bf7a['query'][_0x4a2c7d]);}}});}if(_0x54bf7a[_0xeaf5('0x41')][_0xeaf5('0x7e')]){if(_0x54bf7a[_0xeaf5('0x41')]['read']==0x1){_0x3934c4[_0xeaf5('0x62')](_0xeaf5('0x7f'));}else{_0x3934c4[_0xeaf5('0x62')](_0xeaf5('0x80'));}}if(_0x54bf7a[_0xeaf5('0x41')][_0xeaf5('0x81')]){_0x3dba07=_[_0xeaf5('0x82')](_0x54bf7a[_0xeaf5('0x41')][_0xeaf5('0x81')])?_0x54bf7a[_0xeaf5('0x41')][_0xeaf5('0x81')]:new Array(_0x54bf7a[_0xeaf5('0x41')][_0xeaf5('0x81')]);_0x3dba07[_0xeaf5('0x31')](function(_0x5774c9){_0x2c2763['or'](_0xeaf5('0x6d'),'%,'+_0x5774c9+',%');});}if(_0x54bf7a[_0xeaf5('0x41')][_0xeaf5('0x83')]){var _0x343f4b=_0x54bf7a[_0xeaf5('0x41')][_0xeaf5('0x83')][_0xeaf5('0x84')]('\x5c','\x5c\x5c')[_0xeaf5('0x84')](/'/g,'\x27\x27');if(qs[_0xeaf5('0x85')](_0x343f4b)){_0x317b5f['or'](_0xeaf5('0x86'),_0x343f4b+'%');}else{_0x317b5f['or'](_0xeaf5('0x87'),qs[_0xeaf5('0x67')](_0x343f4b))['or'](_0xeaf5('0x88'),_0x343f4b+'%')['or'](_0xeaf5('0x89'),_0x343f4b+'%');}}}_0x3934c4['where'](_0x317b5f);_0x3934c4[_0xeaf5('0x8a')]('i.id');var _0x595f57={'type':db[_0xeaf5('0x8b')]['QueryTypes'][_0xeaf5('0x8c')],'raw':!![]};var _0x326275=_0x3934c4['clone']();_0x326275[_0xeaf5('0x4c')](_0xeaf5('0x8d'));_0x326275[_0xeaf5('0x4c')](_0xeaf5('0x8e'),_0xeaf5('0x8f'));if(_0x195b31[_0xeaf5('0x46')]){_0x195b31[_0xeaf5('0x46')][_0xeaf5('0x31')](function(_0x44929b){var _0x56b096=_0x44929b[0x0]===_0xeaf5('0x90')?_0x44929b[0x0]:'i.'+_0x44929b[0x0];_0x3934c4[_0xeaf5('0x46')](_0x56b096,_0x44929b[0x1]==='DESC'?![]:!![]);});}if(!_[_0xeaf5('0x74')](_0x3dba07)){_0x3934c4['having'](_0x2c2763);_0x326275[_0xeaf5('0x48')](_0xeaf5('0x91'),_0x3dba07);}BPromise['resolve']()[_0xeaf5('0x25')](function(){if(!_0x57fa52){if(_0x54bf7a['query'][_0xeaf5('0x75')])return;_0x326275[_0xeaf5('0x48')](_0xeaf5('0x92'));_0x3934c4['where']('i.OpenchannelAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x54bf7a[_0xeaf5('0x93')][_0xeaf5('0x94')]!=='agent')return;return _0x54bf7a['user'][_0xeaf5('0x95')]({'attributes':['id'],'raw':!![]})[_0xeaf5('0x25')](function(_0x3477a9){if(_['isEmpty'](_0x3477a9)){_0x326275[_0xeaf5('0x48')](_0xeaf5('0x96'));_0x3934c4['where']('i.OpenchannelAccountId\x20IS\x20NULL');}else{_0x326275[_0xeaf5('0x48')](_0xeaf5('0x76'),_['map'](_0x3477a9,'id'));_0x3934c4[_0xeaf5('0x48')](_0xeaf5('0x76'),_['map'](_0x3477a9,'id'));}});})['then'](function(){if(_0x54bf7a[_0xeaf5('0x93')]['role']===_0xeaf5('0x97')&&!_0x57fa52&&!_0x54bf7a[_0xeaf5('0x41')][_0xeaf5('0x75')])return[];return db['sequelize'][_0xeaf5('0x41')](_0x326275[_0xeaf5('0x98')](),_0x595f57);})['then'](function(_0x21ccb9){_0x31d9ed[_0xeaf5('0x1f')]=_0x21ccb9[_0xeaf5('0x5f')];if(_0x31d9ed[_0xeaf5('0x1f')]===0x0)return[];return db[_0xeaf5('0x99')][_0xeaf5('0x41')](_0x162d42[_0xeaf5('0x98')](),_0x595f57)[_0xeaf5('0x25')](function(_0x21b915){_0x46f757=_[_0xeaf5('0x9a')](_0x21b915,'id');_0x595f57=_[_0xeaf5('0x9b')](_0x595f57,{'model':db[_0xeaf5('0x3c')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x54bf7a[_0xeaf5('0x41')][_0xeaf5('0x44')]){_0x195b31['attributes']['forEach'](function(_0x95edab){_0x3934c4[_0xeaf5('0x4c')]('i.'+_0x95edab);});}else{_0x3934c4[_0xeaf5('0x4c')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');_0x3934c4[_0xeaf5('0x4c')](_0xeaf5('0x9c'),_0xeaf5('0x9d'));_0x3934c4[_0xeaf5('0x4c')]('a.mandatoryDisposition','Account.mandatoryDisposition');_0x3934c4[_0xeaf5('0x4c')](_0xeaf5('0x9e'),'contactName');_0x3934c4['field'](_0xeaf5('0x9f'));_0x3934c4[_0xeaf5('0x4c')](_0xeaf5('0xa0'),_0xeaf5('0xa1'));_0x3934c4[_0xeaf5('0x4c')](_0xeaf5('0xa2'),'Contact.lastName');_0x3934c4[_0xeaf5('0x4c')](_0xeaf5('0xa3'),_0xeaf5('0xa4'));_0x3934c4[_0xeaf5('0x4c')]('c.phone',_0xeaf5('0xa5'));_0x3934c4['field'](_0xeaf5('0xa6'),_0xeaf5('0xa7'));_0x3934c4[_0xeaf5('0x4c')](_0xeaf5('0xa8'),_0xeaf5('0xa9'));_0x3934c4[_0xeaf5('0x4c')](_0xeaf5('0xaa'),_0xeaf5('0xab'));_0x3934c4[_0xeaf5('0x4c')]('o.internal','Owner.internal');_0x3934c4[_0xeaf5('0x4c')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0xeaf5('0x2f'));}if(_0x195b31[_0xeaf5('0x1d')])_0x3934c4[_0xeaf5('0x1d')](_0x195b31[_0xeaf5('0x1d')]);if(_0x195b31[_0xeaf5('0x1c')])_0x3934c4[_0xeaf5('0x1c')](_0x195b31[_0xeaf5('0x1c')]);return db[_0xeaf5('0x99')][_0xeaf5('0x41')](_0x3934c4[_0xeaf5('0x98')](),_0x595f57);})[_0xeaf5('0x25')](function(_0x456c8){if(_0x456c8['length']>0x0)_0x2f9e7b[_0xeaf5('0x48')](_0xeaf5('0xac'),_[_0xeaf5('0x2d')](_0x456c8,'id'));return db[_0xeaf5('0x99')][_0xeaf5('0x41')](_0x2f9e7b['toString'](),_0x595f57)[_0xeaf5('0x25')](function(_0x2c5443){var _0x5e2ab7=_[_0xeaf5('0xad')](_0x2c5443,_0xeaf5('0xae'));var _0x3d68db=[];_0x456c8[_0xeaf5('0x31')](function(_0x425069){_0x3d68db[_0xeaf5('0x32')](updateOpenchannelInteraction(_0x425069,_0x46f757,_0x5e2ab7));});return BPromise[_0xeaf5('0xaf')](_0x3d68db);});});})['then'](function(_0x2f1e00){_0x31d9ed[_0xeaf5('0xb0')]=_0x2f1e00;return _0x31d9ed;})[_0xeaf5('0x25')](respondWithFilteredResult(_0x2d6fd3,_0x195b31))['catch'](handleError(_0x2d6fd3,null));};exports[_0xeaf5('0xb1')]=function(_0x17062a,_0x592fe7){var _0x2efb27={};if(_0x17062a['query']['type']&&_0x17062a[_0xeaf5('0x41')]['type']===_0xeaf5('0x4e')){_0x2efb27['from']=_0x17062a[_0xeaf5('0xb2')]['id'];}else{_0x2efb27['id']=_0x17062a[_0xeaf5('0xb2')]['id'];}var _0x2b2207={'raw':![],'where':_0x2efb27},_0x9fbf95={};_0x9fbf95[_0xeaf5('0x40')]=_[_0xeaf5('0x72')](db[_0xeaf5('0x3c')][_0xeaf5('0x3d')]);_0x9fbf95[_0xeaf5('0x41')]=_[_0xeaf5('0x72')](_0x17062a[_0xeaf5('0x41')]);_0x9fbf95[_0xeaf5('0x4a')]=_[_0xeaf5('0x43')](_0x9fbf95[_0xeaf5('0x40')],_0x9fbf95[_0xeaf5('0x41')]);_0x2b2207['attributes']=_[_0xeaf5('0x43')](_0x9fbf95[_0xeaf5('0x40')],qs[_0xeaf5('0x44')](_0x17062a[_0xeaf5('0x41')][_0xeaf5('0x44')]));_0x2b2207[_0xeaf5('0x42')]=_0x2b2207[_0xeaf5('0x42')][_0xeaf5('0x5f')]?_0x2b2207[_0xeaf5('0x42')]:_0x9fbf95[_0xeaf5('0x40')];if(_0x17062a[_0xeaf5('0x41')][_0xeaf5('0xb3')]){_0x2b2207[_0xeaf5('0xb4')]=[{'all':!![]}];}_0x2b2207=_[_0xeaf5('0x9b')]({},_0x2b2207,_0x17062a[_0xeaf5('0xb5')]);return db['OpenchannelInteraction']['find'](_0x2b2207)[_0xeaf5('0x25')](handleEntityNotFound(_0x592fe7,null))[_0xeaf5('0x25')](respondWithResult(_0x592fe7,null))[_0xeaf5('0x33')](handleError(_0x592fe7,null));};exports[_0xeaf5('0xb6')]=function(_0x460525,_0x2cf576){return db[_0xeaf5('0x3c')][_0xeaf5('0xb6')](_0x460525[_0xeaf5('0x71')],{})['then'](respondWithResult(_0x2cf576,0xc9))['catch'](handleError(_0x2cf576,null));};exports[_0xeaf5('0x24')]=function(_0x519d44,_0x2bf887){if(_0x519d44[_0xeaf5('0x71')]['id']){delete _0x519d44[_0xeaf5('0x71')]['id'];}return db[_0xeaf5('0x3c')][_0xeaf5('0x61')]({'where':{'id':_0x519d44[_0xeaf5('0xb2')]['id']}})[_0xeaf5('0x25')](handleEntityNotFound(_0x2bf887,null))['then'](saveUpdates(_0x519d44['body'],null))['then'](respondWithResult(_0x2bf887,null))[_0xeaf5('0x33')](handleError(_0x2bf887,null));};exports[_0xeaf5('0x26')]=function(_0x631c59,_0x20ad5b){return db['OpenchannelInteraction'][_0xeaf5('0x61')]({'where':{'id':_0x631c59[_0xeaf5('0xb2')]['id']}})[_0xeaf5('0x25')](handleEntityNotFound(_0x20ad5b,null))[_0xeaf5('0x25')](removeEntity(_0x20ad5b,null))['catch'](handleError(_0x20ad5b,null));};exports[_0xeaf5('0xb7')]=function(_0xd3d193,_0x12195a){return db[_0xeaf5('0x3c')][_0xeaf5('0xb7')]()['then'](respondWithResult(_0x12195a,null))[_0xeaf5('0x33')](handleError(_0x12195a,null));};exports[_0xeaf5('0xb8')]=function(_0x48adc1,_0x1f84d8,_0x40df01){return db[_0xeaf5('0xb9')][_0xeaf5('0x61')]({'where':{'id':_0x48adc1[_0xeaf5('0xb2')]['id']}})['then'](handleEntityNotFound(_0x1f84d8,null))[_0xeaf5('0x25')](function(_0x33bcec){if(_0x33bcec){return _0x33bcec[_0xeaf5('0xb8')](_0x48adc1[_0xeaf5('0x71')][_0xeaf5('0xba')],_[_0xeaf5('0xbb')](_0x48adc1['body'],[_0xeaf5('0xba'),'id'])||{});}})[_0xeaf5('0x25')](respondWithResult(_0x1f84d8,null))[_0xeaf5('0x33')](handleError(_0x1f84d8,null));};exports[_0xeaf5('0xbc')]=function(_0x46a504,_0x3fa41f,_0x403d84){var _0x46894e={'raw':![],'where':{}};var _0x51a593={};var _0x144b66={'count':0x0,'rows':[]};return db[_0xeaf5('0x3c')][_0xeaf5('0xbd')]({'where':{'id':_0x46a504[_0xeaf5('0xb2')]['id']}})[_0xeaf5('0x25')](handleEntityNotFound(_0x3fa41f,null))['then'](function(_0x3d4e04){if(_0x3d4e04){_0x51a593[_0xeaf5('0x40')]=_['keys'](db[_0xeaf5('0xb9')]['rawAttributes']);_0x51a593[_0xeaf5('0x41')]=_[_0xeaf5('0x72')](_0x46a504[_0xeaf5('0x41')]);_0x51a593[_0xeaf5('0x4a')]=_['intersection'](_0x51a593[_0xeaf5('0x40')],_0x51a593[_0xeaf5('0x41')]);_0x46894e['attributes']=_['intersection'](_0x51a593[_0xeaf5('0x40')],qs[_0xeaf5('0x44')](_0x46a504[_0xeaf5('0x41')][_0xeaf5('0x44')]));_0x46894e['attributes']=_0x46894e[_0xeaf5('0x42')][_0xeaf5('0x5f')]?_0x46894e[_0xeaf5('0x42')]:_0x51a593['model'];if(!_0x46a504[_0xeaf5('0x41')][_0xeaf5('0xbe')](_0xeaf5('0x45'))){_0x46894e[_0xeaf5('0x1d')]=qs[_0xeaf5('0x1d')](_0x46a504[_0xeaf5('0x41')][_0xeaf5('0x1d')]);_0x46894e[_0xeaf5('0x1c')]=qs['offset'](_0x46a504[_0xeaf5('0x41')]['offset']);}_0x46894e[_0xeaf5('0x46')]=qs[_0xeaf5('0x47')](_0x46a504[_0xeaf5('0x41')][_0xeaf5('0x47')]);_0x46894e['where']=qs['filters'](_[_0xeaf5('0x49')](_0x46a504[_0xeaf5('0x41')],_0x51a593[_0xeaf5('0x4a')]));_0x46894e[_0xeaf5('0x48')][_0xeaf5('0xae')]=_0x3d4e04['id'];if(_0x46a504[_0xeaf5('0x41')][_0xeaf5('0x83')]){_0x46894e[_0xeaf5('0x48')]=_[_0xeaf5('0x9b')](_0x46894e['where'],{'$or':_[_0xeaf5('0x2d')](_0x46894e[_0xeaf5('0x42')],function(_0x31cd6b){var _0xb05bf9={};_0xb05bf9[_0x31cd6b]={'$like':'%'+_0x46a504[_0xeaf5('0x41')][_0xeaf5('0x83')]+'%'};return _0xb05bf9;})});}if(_0x46a504[_0xeaf5('0x41')][_0xeaf5('0xbf')]){var _0x5e04f2=_0x46a504[_0xeaf5('0x41')][_0xeaf5('0xbf')][_0xeaf5('0x30')](',');var _0x842c7c={};_0x842c7c[_0x5e04f2[0x0]]={'$gte':moment(_0x5e04f2[0x1])[_0xeaf5('0xc0')](_0xeaf5('0xc1'))};_0x46894e[_0xeaf5('0x48')]=_[_0xeaf5('0x9b')](_0x46894e['where'],_0x842c7c);}_0x46894e=_[_0xeaf5('0x9b')]({},_0x46894e,_0x46a504['options']);return db[_0xeaf5('0xb9')]['count']({'where':_0x46894e[_0xeaf5('0x48')]})[_0xeaf5('0x25')](function(_0x572541){_0x144b66[_0xeaf5('0x1f')]=_0x572541;if(_0x46a504['query'][_0xeaf5('0xb3')]){_0x46894e[_0xeaf5('0xb4')]=[{'all':!![]}];}return db['OpenchannelMessage']['findAll'](_0x46894e);})[_0xeaf5('0x25')](function(_0x13bc28){_0x144b66[_0xeaf5('0xb0')]=_0x13bc28;return _0x144b66;});}})[_0xeaf5('0x25')](respondWithFilteredResult(_0x3fa41f,_0x46894e))[_0xeaf5('0x33')](handleError(_0x3fa41f,null));};exports[_0xeaf5('0xc2')]=function(_0x44c7b4,_0x12d6a8,_0x2fcade){return db[_0xeaf5('0x3c')][_0xeaf5('0x61')]({'where':{'id':_0x44c7b4['params']['id']}})[_0xeaf5('0x25')](handleEntityNotFound(_0x12d6a8,null))[_0xeaf5('0x25')](function(_0x39c9fd){if(_0x39c9fd){return _0x39c9fd[_0xeaf5('0xc3')](_0x44c7b4[_0xeaf5('0x71')][_0xeaf5('0xba')],_[_0xeaf5('0xbb')](_0x44c7b4[_0xeaf5('0x71')],[_0xeaf5('0xba'),'id'])||{})[_0xeaf5('0xc4')](function(){return db['Tag']['findAll']({'attributes':['id',_0xeaf5('0x2a'),'color'],'where':{'id':_0x44c7b4[_0xeaf5('0x71')][_0xeaf5('0xba')]}});})[_0xeaf5('0x25')](function(_0x1e590f){socket[_0xeaf5('0xc5')](_0xeaf5('0xc6'),{'id':Number(_0x44c7b4[_0xeaf5('0xb2')]['id']),'tags':_0x1e590f||[]});return{'id':Number(_0x44c7b4[_0xeaf5('0xb2')]['id']),'tags':_0x1e590f||[]};});}})['then'](respondWithResult(_0x12d6a8,null))[_0xeaf5('0x33')](handleError(_0x12d6a8,null));};exports[_0xeaf5('0xc7')]=function(_0x4f6755,_0xb64b9d,_0x5ae6f7){return db['OpenchannelInteraction'][_0xeaf5('0x61')]({'where':{'id':_0x4f6755[_0xeaf5('0xb2')]['id']}})[_0xeaf5('0x25')](handleEntityNotFound(_0xb64b9d,null))[_0xeaf5('0x25')](function(_0x5a8cf7){if(_0x5a8cf7){return _0x5a8cf7[_0xeaf5('0xc7')](_0x4f6755[_0xeaf5('0x41')][_0xeaf5('0xba')]);}})['then'](respondWithStatusCode(_0xb64b9d,null))[_0xeaf5('0x33')](handleError(_0xb64b9d,null));};exports[_0xeaf5('0xc8')]=function(_0x402ff2,_0xe9a159){var _0x514106=moment()['unix']()[_0xeaf5('0x98')]();var _0x3ad640=path['join'](config['root'],'server','files',_0xeaf5('0xc9'));var _0x23af19=path[_0xeaf5('0xca')](config[_0xeaf5('0xcb')],'server',_0xeaf5('0xcc'),_0xeaf5('0xcd'));var _0x36ca80=path[_0xeaf5('0xca')](_0x3ad640,_0x514106);var _0x3177a6=util['format'](_0xeaf5('0xce'),_0x402ff2[_0xeaf5('0xb2')]['id'],_0x514106);var _0x58cebe=path['join'](_0x3ad640,_0x3177a6);var _0x5707da=[];_0x5707da['push']({'model':db[_0xeaf5('0x6e')],'as':_0xeaf5('0x6e'),'attributes':['id',_0xeaf5('0xcf')],'raw':!![]});_0x5707da[_0xeaf5('0x32')]({'model':db[_0xeaf5('0xd0')],'as':_0xeaf5('0xd1'),'attributes':['id',_0xeaf5('0xd2'),_0xeaf5('0xd3')],'raw':!![]});if(_0x402ff2['query'][_0xeaf5('0xcd')]){_0x5707da[_0xeaf5('0x32')]({'model':db[_0xeaf5('0xd4')],'as':_0xeaf5('0xd4'),'raw':!![]});}var _0x553efb=[{'model':db[_0xeaf5('0xb9')],'as':_0xeaf5('0xd5'),'attributes':['id',_0xeaf5('0x71'),_0xeaf5('0x78'),_0xeaf5('0xd6'),_0xeaf5('0xd7'),_0xeaf5('0x7e')],'include':_0x5707da}];_0x553efb['push']({'model':db[_0xeaf5('0xd8')],'as':_0xeaf5('0xd9'),'attributes':['id',_0xeaf5('0x2a')]});_0x553efb[_0xeaf5('0x32')]({'model':db[_0xeaf5('0x6e')],'as':_0xeaf5('0xda'),'attributes':['id',_0xeaf5('0xcf')]});return db[_0xeaf5('0x3c')][_0xeaf5('0x61')]({'where':{'id':_0x402ff2['params']['id']},'include':_0x553efb})[_0xeaf5('0x25')](handleEntityNotFound(_0xe9a159,null))[_0xeaf5('0x25')](function(_0x431ba6){if(_0x431ba6){var _0xccdc45=_0x431ba6[_0xeaf5('0xdb')]({'plain':!![]});fs['mkdirSync'](_0x36ca80);var _0xc7f4d0={'channel':_0xeaf5('0xdc'),'account':_0xccdc45[_0xeaf5('0xd9')][_0xeaf5('0x2a')],'agent':_0xccdc45[_0xeaf5('0xda')]?_0xccdc45[_0xeaf5('0xda')][_0xeaf5('0xcf')]:_0xeaf5('0xdd'),'createdAt':moment(_0xccdc45[_0xeaf5('0x78')])['format'](_0xeaf5('0xc1'))[_0xeaf5('0x98')](),'closedAt':_0xccdc45[_0xeaf5('0x39')]?moment(_0xccdc45[_0xeaf5('0xde')])[_0xeaf5('0xc0')](_0xeaf5('0xc1'))[_0xeaf5('0x98')]():'','disposition':_0xccdc45[_0xeaf5('0xdf')],'visibility':_0xccdc45[_0xeaf5('0xe0')]?'Public':_0xeaf5('0xe1'),'messages':_(_0xccdc45['Messages'])['filter']({'secret':![]})[_0xeaf5('0x2d')](function(_0x201180){if(_0x201180[_0xeaf5('0xd4')]){var _0x138aac=path[_0xeaf5('0xca')](_0x23af19,_0x201180['Attachment'][_0xeaf5('0xe2')]);if(fs[_0xeaf5('0xe3')](_0x138aac)){fs[_0xeaf5('0xe4')](_0x138aac)[_0xeaf5('0xe5')](fs['createWriteStream'](path[_0xeaf5('0xca')](_0x36ca80,_0x201180[_0xeaf5('0xd4')]['basename'])));}}return{'date':moment(_0x201180[_0xeaf5('0x78')])['format'](_0xeaf5('0xc1'))[_0xeaf5('0x98')](),'sender':_0x201180[_0xeaf5('0xd6')]==='out'?_0x201180['User']?_0x201180[_0xeaf5('0x6e')]['fullname']:_0xeaf5('0xe6'):_0x201180[_0xeaf5('0xd1')][_0xeaf5('0xd2')]+(_0x201180[_0xeaf5('0xd1')]['lastName']?'\x20'+_0x201180['Contact'][_0xeaf5('0xd3')]:''),'body':_0x201180[_0xeaf5('0xd4')]?_0x201180[_0xeaf5('0xd4')][_0xeaf5('0xe2')]:_0x201180[_0xeaf5('0x71')],'direction':_0x201180[_0xeaf5('0xd6')]===_0xeaf5('0xe7')?'A':'C','secret':_0x201180['secret'],'read':_0x201180[_0xeaf5('0x7e')],'attachment':_0x201180[_0xeaf5('0xd4')]};})[_0xeaf5('0x65')]()};return ejs['renderFile'](path['join'](config[_0xeaf5('0xcb')],_0xeaf5('0xe8'),_0xeaf5('0xe9'),_0xeaf5('0xea')),{'interaction':_0xc7f4d0})[_0xeaf5('0x25')](function(_0x5718c1){var _0x12cf60=path[_0xeaf5('0xca')](_0x36ca80,_0xeaf5('0xeb')+_0xccdc45['id']+'-'+_0x514106+_0xeaf5('0xec'));var _0x1c398b={'path':_0x12cf60,'channel':'Openchannel','interactionId':_0xccdc45['id']};return pdf['createPdfFromHTML'](_0x5718c1,_0x1c398b);})['then'](function(){return new BPromise(function(_0x5a427c,_0x450d34){zipdir(_0x36ca80,{'saveTo':_0x58cebe},function(_0xfcd633,_0x1b6872){if(_0xfcd633)return _0x450d34(_0xfcd633);return _0x5a427c(_0x1b6872);});})[_0xeaf5('0x25')](function(){return new BPromise(function(_0x23b766,_0x593eb5){rimraf(_0x36ca80,function(_0x2b964f){if(_0x2b964f)_0x593eb5(_0x2b964f);return _0x23b766();});});})[_0xeaf5('0x25')](function(){return _0xe9a159['download'](_0x58cebe,_0x3177a6,function(_0x366543){if(_0x366543){console[_0xeaf5('0xed')]('err',_0x366543);}else{fs[_0xeaf5('0xee')](_0x58cebe);}});});});}else{return _0xe9a159[_0xeaf5('0x19')](0xc8);}})[_0xeaf5('0x33')](handleError(_0xe9a159,null));};
\ No newline at end of file
+var _0xf054=['value','`\x20=\x200','having','Contact','operator','$substring','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','find','body','compact','isEmpty','where','i.OpenchannelAccountId\x20IN\x20?','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','isArray','tag','filter','replace','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','OpenchannelAccountId','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','role','getOpenchannelAccounts','i.OpenchannelAccountId\x20IS\x20NULL','user','agent','sequelize','toString','merge','OpenchannelInteraction','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','Contact.firstName','Contact.lastName','c.email','Contact.email','c.phone','c.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','OpenchannelInteractionId','all','show','params','include','create','destroy','describe','addMessage','ids','omit','getMessages','findOne','OpenchannelMessage','sort','pick','$gte','YYYY-MM-DD\x20HH:mm:ss','options','includeAll','findAll','addTags','emit','openchannelInteractionTags:save','removeTags','download','unix','join','root','server','tmp','files','format','transcript-%d-%s.zip','fullname','CmContact','firstName','lastName','attachments','Attachment','Messages','direction','OpenchannelAccount','Account','Owner','get','mkdirSync','Openchannel','N.A.','closedAt','threadId','Public','Private','basename','existsSync','createReadStream','pipe','createWriteStream','out','System','secret','renderFile','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','log','err','unlinkSync','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','then','error','stack','name','Users','map','TagIds','Tags','forEach','push','catch','waiting','talking','answered','unmanaged','total','closed','UserId','index','rawAttributes','type','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','select','field','color','from','u.id','u.fullname','ui.OpenchannelInteractionId','user_has_openchannel_interactions','left_join','u.id\x20=\x20ui.UserId','openchannel_interactions','cm_contacts','o.id\x20=\x20i.UserId','a.id\x20=\x20i.OpenchannelAccountId','me.OpenchannelInteractionId\x20=\x20i.id','openchannel_interaction_has_tags','it.OpenchannelInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','unreadMessages'];(function(_0x42ca03,_0x43eceb){var _0x2b0f8b=function(_0x44231a){while(--_0x44231a){_0x42ca03['push'](_0x42ca03['shift']());}};_0x2b0f8b(++_0x43eceb);}(_0xf054,0x18c));var _0x4f05=function(_0x536ee4,_0xd4dcaa){_0x536ee4=_0x536ee4-0x0;var _0xc6392a=_0xf054[_0x536ee4];return _0xc6392a;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x4f05('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4f05('0x1'));var moment=require('moment');var BPromise=require(_0x4f05('0x2'));var Mustache=require(_0x4f05('0x3'));var util=require(_0x4f05('0x4'));var path=require('path');var sox=require(_0x4f05('0x5'));var csv=require(_0x4f05('0x6'));var ejs=require(_0x4f05('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4f05('0x8'));var squel=require(_0x4f05('0x9'));var crypto=require(_0x4f05('0xa'));var jsforce=require(_0x4f05('0xb'));var deskjs=require(_0x4f05('0xc'));var toCsv=require(_0x4f05('0x6'));var querystring=require(_0x4f05('0xd'));var Papa=require(_0x4f05('0xe'));var Redis=require('ioredis');var authService=require(_0x4f05('0xf'));var qs=require(_0x4f05('0x10'));var as=require(_0x4f05('0x11'));var pdf=require('../../components/export/pdf');var hardwareService=require('../../config/license/hardware');var logger=require(_0x4f05('0x12'))(_0x4f05('0x13'));var utils=require(_0x4f05('0x14'));var config=require(_0x4f05('0x15'));var licenseUtil=require(_0x4f05('0x16'));var db=require(_0x4f05('0x17'))['db'];config['redis']=_[_0x4f05('0x18')](config[_0x4f05('0x19')],{'host':_0x4f05('0x1a'),'port':0x18eb});var socket=require(_0x4f05('0x1b'))(new Redis(config[_0x4f05('0x19')]));require(_0x4f05('0x1c'))[_0x4f05('0x1d')](socket);function respondWithStatusCode(_0x22f2df,_0xace651){_0xace651=_0xace651||0xcc;return function(_0x107438){if(_0x107438){return _0x22f2df[_0x4f05('0x1e')](_0xace651);}return _0x22f2df[_0x4f05('0x1f')](_0xace651)[_0x4f05('0x20')]();};}function respondWithResult(_0x121148,_0x22a8e8){_0x22a8e8=_0x22a8e8||0xc8;return function(_0x2caea){if(_0x2caea){return _0x121148[_0x4f05('0x1f')](_0x22a8e8)['json'](_0x2caea);}};}function respondWithFilteredResult(_0x5d7f64,_0xf8f780){return function(_0x330e4b){if(_0x330e4b){var _0xc6c796=typeof _0xf8f780[_0x4f05('0x21')]===_0x4f05('0x22')&&typeof _0xf8f780[_0x4f05('0x23')]===_0x4f05('0x22');var _0x3cb4c8=_0x330e4b['count'];var _0x26d125=_0xc6c796?0x0:_0xf8f780[_0x4f05('0x21')];var _0x218f5b=_0xc6c796?_0x330e4b[_0x4f05('0x24')]:_0xf8f780['offset']+_0xf8f780[_0x4f05('0x23')];var _0x368264;if(_0x218f5b>=_0x3cb4c8){_0x218f5b=_0x3cb4c8;_0x368264=0xc8;}else{_0x368264=0xce;}_0x5d7f64[_0x4f05('0x1f')](_0x368264);return _0x5d7f64[_0x4f05('0x25')]('Content-Range',_0x26d125+'-'+_0x218f5b+'/'+_0x3cb4c8)[_0x4f05('0x26')](_0x330e4b);}return null;};}function patchUpdates(_0x1f7dc8){return function(_0x3ff38b){try{jsonpatch[_0x4f05('0x27')](_0x3ff38b,_0x1f7dc8,!![]);}catch(_0x48dcb7){return BPromise[_0x4f05('0x28')](_0x48dcb7);}return _0x3ff38b[_0x4f05('0x29')]();};}function saveUpdates(_0x4ff236,_0x361c67){return function(_0x10aa9f){if(_0x10aa9f){return _0x10aa9f[_0x4f05('0x2a')](_0x4ff236)[_0x4f05('0x2b')](function(_0x4c5770){return _0x4c5770;});}return null;};}function removeEntity(_0x428f77,_0x36ede8){return function(_0x49aa89){if(_0x49aa89){return _0x49aa89['destroy']()[_0x4f05('0x2b')](function(){_0x428f77[_0x4f05('0x1f')](0xcc)[_0x4f05('0x20')]();});}};}function handleEntityNotFound(_0x27ab4c,_0x5a7cf7){return function(_0x16866b){if(!_0x16866b){_0x27ab4c['sendStatus'](0x194);}return _0x16866b;};}function handleError(_0x1acb4b,_0x3713cf){_0x3713cf=_0x3713cf||0x1f4;return function(_0x3eb2f9){logger[_0x4f05('0x2c')](_0x3eb2f9[_0x4f05('0x2d')]);if(_0x3eb2f9[_0x4f05('0x2e')]){delete _0x3eb2f9[_0x4f05('0x2e')];}_0x1acb4b[_0x4f05('0x1f')](_0x3713cf)['send'](_0x3eb2f9);};}function getInteractionUsers(_0x3ee801,_0xcb4fbd){return new BPromise(function(_0x29c75b,_0x19ad78){try{if(_0xcb4fbd[_0x3ee801['id']]){_0x3ee801[_0x4f05('0x2f')]=_[_0x4f05('0x30')](_0xcb4fbd[_0x3ee801['id']],function(_0x4678ba){return{'id':_0x4678ba['id'],'fullname':_0x4678ba['fullname']};});}}catch(_0x175b74){_0x19ad78(_0x175b74);}_0x29c75b(_0x3ee801);});}function getInteractionTags(_0x5efe75,_0x3299cc){return new BPromise(function(_0x30b769,_0x398881){try{if(_0x5efe75[_0x4f05('0x31')]){_0x5efe75[_0x4f05('0x32')]=[];_0x5efe75[_0x4f05('0x31')]['split'](',')[_0x4f05('0x33')](function(_0x3ba188){_0x5efe75[_0x4f05('0x32')][_0x4f05('0x34')](_0x3299cc[_0x3ba188]);});}delete _0x5efe75[_0x4f05('0x31')];}catch(_0xc05b5b){_0x398881(_0xc05b5b);}_0x30b769(_0x5efe75);});}function updateOpenchannelInteraction(_0x17b710,_0x39ca52,_0x4146e1){return new BPromise(function(_0x538cb1,_0x2eee0f){return getInteractionUsers(_0x17b710,_0x4146e1)[_0x4f05('0x2b')](function(_0x154642){return getInteractionTags(_0x154642,_0x39ca52);})[_0x4f05('0x2b')](function(_0x1cd5ac){return getStateInteraction(_0x1cd5ac);})[_0x4f05('0x2b')](function(_0x3d66f5){_0x538cb1(_0x3d66f5);})[_0x4f05('0x35')](function(_0x125af5){_0x2eee0f(_0x125af5);});});}function getStateInteraction(_0x5b7b85){return new BPromise(function(_0x4cc8ed){_0x5b7b85[_0x4f05('0x36')]=0x0;_0x5b7b85[_0x4f05('0x37')]=0x0;_0x5b7b85[_0x4f05('0x38')]=0x0;_0x5b7b85[_0x4f05('0x39')]=0x0;_0x5b7b85[_0x4f05('0x3a')]=0x0;if(!_0x5b7b85[_0x4f05('0x3b')]&&!_0x5b7b85[_0x4f05('0x3c')]){_0x5b7b85[_0x4f05('0x36')]+=0x1;}if(!_0x5b7b85['closed']&&_0x5b7b85[_0x4f05('0x3c')]){_0x5b7b85[_0x4f05('0x37')]+=0x1;if(_0x5b7b85['waiting']){_0x5b7b85['waiting']-=0x1;}}if(_0x5b7b85[_0x4f05('0x3b')]&&_0x5b7b85[_0x4f05('0x3c')]){_0x5b7b85[_0x4f05('0x38')]+=0x1;if(_0x5b7b85['talking']){_0x5b7b85[_0x4f05('0x37')]-=0x1;}}if(_0x5b7b85[_0x4f05('0x3b')]&&!_0x5b7b85[_0x4f05('0x3c')]){_0x5b7b85[_0x4f05('0x39')]+=0x1;if(_0x5b7b85[_0x4f05('0x36')]){_0x5b7b85[_0x4f05('0x36')]-=0x1;}}_0x5b7b85[_0x4f05('0x3a')]+=0x1;_0x4cc8ed(_0x5b7b85);});}exports[_0x4f05('0x3d')]=function(_0x4a68de,_0x5b4066){var _0x54f062={},_0xeb80f={},_0x2492e9={'count':0x0,'rows':[]};var _0x2070fa=_[_0x4f05('0x30')](db['OpenchannelInteraction'][_0x4f05('0x3e')],function(_0x36d933){return{'name':_0x36d933['fieldName'],'type':_0x36d933[_0x4f05('0x3f')]['key']};});_0xeb80f[_0x4f05('0x40')]=_[_0x4f05('0x30')](_0x2070fa,_0x4f05('0x2e'));_0xeb80f['query']=_[_0x4f05('0x41')](_0x4a68de[_0x4f05('0x42')]);_0xeb80f[_0x4f05('0x43')]=_['intersection'](_0xeb80f[_0x4f05('0x40')],_0xeb80f['query']);_0x54f062[_0x4f05('0x44')]=_[_0x4f05('0x45')](_0xeb80f[_0x4f05('0x40')],qs[_0x4f05('0x46')](_0x4a68de[_0x4f05('0x42')][_0x4f05('0x46')]));_0x54f062[_0x4f05('0x44')]=_0x54f062[_0x4f05('0x44')][_0x4f05('0x47')]?_0x54f062[_0x4f05('0x44')]:_0xeb80f['model'];if(!_0x4a68de[_0x4f05('0x42')][_0x4f05('0x48')](_0x4f05('0x49'))){_0x54f062['limit']=qs[_0x4f05('0x23')](_0x4a68de[_0x4f05('0x42')]['limit']);_0x54f062['offset']=qs['offset'](_0x4a68de['query'][_0x4f05('0x21')]);}_0x54f062[_0x4f05('0x4a')]=qs['sort'](_0x4a68de[_0x4f05('0x42')]['sort']);_0x54f062['where']=qs[_0x4f05('0x43')](_['pick'](_0x4a68de[_0x4f05('0x42')],_0xeb80f[_0x4f05('0x43')]),_0x2070fa);var _0x43b0a7=[];var _0x584955=squel[_0x4f05('0x4b')]()[_0x4f05('0x4c')]('id')[_0x4f05('0x4c')]('name')[_0x4f05('0x4c')](_0x4f05('0x4d'))[_0x4f05('0x4e')]('tools_tags');var _0x5166d9=squel['select']()['field'](_0x4f05('0x4f'))[_0x4f05('0x4c')](_0x4f05('0x50'))[_0x4f05('0x4c')](_0x4f05('0x51'))[_0x4f05('0x4e')](_0x4f05('0x52'),'ui')[_0x4f05('0x53')]('users','u',_0x4f05('0x54'));var _0x101dbe=squel[_0x4f05('0x4b')]()[_0x4f05('0x4e')](_0x4f05('0x55'),'i')[_0x4f05('0x53')](_0x4f05('0x56'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x4f05('0x53')]('users','o',_0x4f05('0x57'))[_0x4f05('0x53')]('openchannel_accounts','a',_0x4f05('0x58'))['left_join']('openchannel_messages','me',_0x4f05('0x59'))[_0x4f05('0x53')](_0x4f05('0x5a'),'it',_0x4f05('0x5b'))[_0x4f05('0x53')]('tools_tags','t',_0x4f05('0x5c'));var _0x19e22d=squel[_0x4f05('0x5d')]();var _0x47242f=[];var _0x183fde=squel[_0x4f05('0x5d')]();var _0x3fb10a;if(_0x4a68de[_0x4f05('0x42')]['search']){_0x3fb10a=as['parseSearch'](_0x4a68de[_0x4f05('0x42')][_0x4f05('0x5e')]);var _0x2cd566=_0x3fb10a[_0x4f05('0x5f')];for(var _0x5e4ee4=0x0;_0x5e4ee4<_0x3fb10a[_0x4f05('0x60')][_0x4f05('0x47')];_0x5e4ee4++){var _0x5eb3c4=_0x3fb10a[_0x4f05('0x60')][_0x5e4ee4];var _0x577239='i';var _0x1d5c48=_['find'](_0x2070fa,[_0x4f05('0x2e'),_0x5eb3c4[_0x4f05('0x4c')]]);if(!_0x1d5c48){switch(_0x5eb3c4[_0x4f05('0x4c')]){case _0x4f05('0x61'):if(_0x5eb3c4[_0x4f05('0x62')]==0x1){_0x101dbe['having']('`'+_0x5eb3c4[_0x4f05('0x4c')]+_0x4f05('0x63'));}else{_0x101dbe[_0x4f05('0x64')]('`'+_0x5eb3c4[_0x4f05('0x4c')]+'`\x20>\x200');}break;case _0x4f05('0x65'):if(_0x5eb3c4[_0x4f05('0x66')]===_0x4f05('0x67')){if(_0x5eb3c4[_0x4f05('0x62')][_0x4f05('0x68')]('\x20')[_0x4f05('0x47')]>0x1){_0x19e22d[_0x2cd566](_0x4f05('0x69'),qs['getFullTextValue'](_0x5eb3c4[_0x4f05('0x62')]),null);}else{var _0x2fea9d='%'+_0x5eb3c4[_0x4f05('0x62')]+'%';_0x19e22d[_0x2cd566](_0x4f05('0x6a'),_0x2fea9d,_0x2fea9d,_0x2fea9d);}}else{_0x1d5c48=_['find'](_0x2070fa,[_0x4f05('0x2e'),'ContactId']);_0x5eb3c4[_0x4f05('0x4c')]=_0x4f05('0x6b');_0xaa7150=as[_0x4f05('0x6c')](_0x577239,_0x1d5c48[_0x4f05('0x3f')],_0x5eb3c4);_0x19e22d[_0x2cd566](_0xaa7150[_0x4f05('0x6d')],_0xaa7150[_0x4f05('0x62')][_0x4f05('0x6e')],_0xaa7150[_0x4f05('0x62')][_0x4f05('0x20')]);}break;case _0x4f05('0x6f'):var _0x29a8b6=_0x5eb3c4[_0x4f05('0x62')]['split'](',')[_0x4f05('0x30')](function(_0x94c965){return Number(_0x94c965);});_0x29a8b6['forEach'](function(_0xea49a2){_0x183fde['or'](_0x4f05('0x70'),'%,'+_0xea49a2+',%');});_0x47242f=_[_0x4f05('0x71')](_0x47242f,_0x29a8b6);break;case _0x4f05('0x72'):if(_0x5eb3c4[_0x4f05('0x66')]==='$substring'){_0x19e22d[_0x2cd566](_0x4f05('0x73'),'%'+_0x5eb3c4[_0x4f05('0x62')]+'%',null);}else{_0x1d5c48=_[_0x4f05('0x74')](_0x2070fa,[_0x4f05('0x2e'),_0x4f05('0x3c')]);_0x5eb3c4['field']=_0x4f05('0x3c');_0xaa7150=as[_0x4f05('0x6c')](_0x577239,_0x1d5c48[_0x4f05('0x3f')],_0x5eb3c4);_0x19e22d[_0x2cd566](_0xaa7150[_0x4f05('0x6d')],_0xaa7150[_0x4f05('0x62')]['start'],_0xaa7150[_0x4f05('0x62')][_0x4f05('0x20')]);}break;case _0x4f05('0x75'):_0xaa7150=as['buildExpression']('me',null,_0x5eb3c4);_0x19e22d[_0x2cd566](_0xaa7150[_0x4f05('0x6d')],_0xaa7150[_0x4f05('0x62')][_0x4f05('0x6e')],_0xaa7150[_0x4f05('0x62')][_0x4f05('0x20')]);break;}}else{var _0xaa7150=as[_0x4f05('0x6c')](_0x577239,_0x1d5c48[_0x4f05('0x3f')],_0x5eb3c4);_0x19e22d[_0x2cd566](_0xaa7150[_0x4f05('0x6d')],_0xaa7150[_0x4f05('0x62')][_0x4f05('0x6e')],_0xaa7150[_0x4f05('0x62')][_0x4f05('0x20')]);}}}else{var _0x2981e3=_(_0x4a68de[_0x4f05('0x42')])[_0x4f05('0x41')]()[_0x4f05('0x30')](function(_0x27f4f0){return _['some'](_0x2070fa,[_0x4f05('0x2e'),_0x27f4f0])?_0x27f4f0:undefined;})[_0x4f05('0x76')]()[_0x4f05('0x62')]();if(!_[_0x4f05('0x77')](_0x2981e3)){_0x2981e3[_0x4f05('0x33')](function(_0x442fdd){if(_0x442fdd==='OpenchannelAccountId'){_0x101dbe[_0x4f05('0x78')](_0x4f05('0x79'),[]['concat'](_0x4a68de[_0x4f05('0x42')][_0x442fdd]));}else if(_0x442fdd===_0x4f05('0x7a')){var _0x5b2c54=JSON[_0x4f05('0x7b')](_0x4a68de[_0x4f05('0x42')][_0x442fdd])['$gte'];var _0x1b0784=JSON['parse'](_0x4a68de[_0x4f05('0x42')][_0x442fdd])[_0x4f05('0x7c')];_0x101dbe[_0x4f05('0x78')](_0x4f05('0x7d'),_0x5b2c54,_0x1b0784);}else{if(_0x4a68de[_0x4f05('0x42')][_0x442fdd]==='null'){_0x101dbe[_0x4f05('0x78')]('i.'+_0x442fdd+_0x4f05('0x7e'));}else{_0x101dbe[_0x4f05('0x78')]('i.'+_0x442fdd+_0x4f05('0x7f'),_0x4a68de[_0x4f05('0x42')][_0x442fdd]);}}});}if(_0x4a68de['query'][_0x4f05('0x80')]){if(_0x4a68de[_0x4f05('0x42')][_0x4f05('0x80')]==0x1){_0x101dbe[_0x4f05('0x64')](_0x4f05('0x81'));}else{_0x101dbe[_0x4f05('0x64')]('`unreadMessages`\x20>\x200');}}if(_0x4a68de[_0x4f05('0x42')]['tag']){_0x47242f=_[_0x4f05('0x82')](_0x4a68de['query'][_0x4f05('0x83')])?_0x4a68de['query'][_0x4f05('0x83')]:new Array(_0x4a68de[_0x4f05('0x42')][_0x4f05('0x83')]);_0x47242f['forEach'](function(_0x22e594){_0x183fde['or'](_0x4f05('0x70'),'%,'+_0x22e594+',%');});}if(_0x4a68de['query'][_0x4f05('0x84')]){var _0x2f6383=_0x4a68de[_0x4f05('0x42')][_0x4f05('0x84')][_0x4f05('0x85')]('\x5c','\x5c\x5c')[_0x4f05('0x85')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x2f6383)){_0x19e22d['or'](_0x4f05('0x86'),_0x2f6383+'%');}else{_0x19e22d['or'](_0x4f05('0x87'),qs[_0x4f05('0x88')](_0x2f6383))['or']('i.from\x20LIKE\x20?',_0x2f6383+'%')['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x2f6383+'%');}}}_0x101dbe[_0x4f05('0x78')](_0x19e22d);_0x101dbe[_0x4f05('0x89')](_0x4f05('0x8a'));var _0x1200d0={'type':db[_0x4f05('0x8b')][_0x4f05('0x8c')][_0x4f05('0x8d')],'raw':!![]};var _0x17d45f=_0x101dbe[_0x4f05('0x8e')]();_0x17d45f[_0x4f05('0x4c')](_0x4f05('0x8a'));_0x17d45f[_0x4f05('0x4c')](_0x4f05('0x8f'),_0x4f05('0x61'));if(_0x54f062[_0x4f05('0x4a')]){_0x54f062['order'][_0x4f05('0x33')](function(_0x5d012e){var _0x112db3=_0x5d012e[0x0]===_0x4f05('0x90')?_0x5d012e[0x0]:'i.'+_0x5d012e[0x0];_0x101dbe[_0x4f05('0x4a')](_0x112db3,_0x5d012e[0x1]===_0x4f05('0x91')?![]:!![]);});}if(!_['isEmpty'](_0x47242f)){_0x101dbe[_0x4f05('0x64')](_0x183fde);_0x17d45f['where'](_0x4f05('0x92'),_0x47242f);}BPromise[_0x4f05('0x93')]()[_0x4f05('0x2b')](function(){if(!_0x3fb10a){if(_0x4a68de['query'][_0x4f05('0x94')])return;_0x17d45f[_0x4f05('0x78')](_0x4f05('0x95'));_0x101dbe[_0x4f05('0x78')](_0x4f05('0x95'));return;}if(_0x4a68de['user'][_0x4f05('0x96')]!=='agent')return;return _0x4a68de['user'][_0x4f05('0x97')]({'attributes':['id'],'raw':!![]})[_0x4f05('0x2b')](function(_0x152f7e){if(_[_0x4f05('0x77')](_0x152f7e)){_0x17d45f[_0x4f05('0x78')]('i.OpenchannelAccountId\x20IS\x20NULL');_0x101dbe[_0x4f05('0x78')](_0x4f05('0x98'));}else{_0x17d45f[_0x4f05('0x78')](_0x4f05('0x79'),_[_0x4f05('0x30')](_0x152f7e,'id'));_0x101dbe[_0x4f05('0x78')](_0x4f05('0x79'),_[_0x4f05('0x30')](_0x152f7e,'id'));}});})[_0x4f05('0x2b')](function(){if(_0x4a68de[_0x4f05('0x99')][_0x4f05('0x96')]===_0x4f05('0x9a')&&!_0x3fb10a&&!_0x4a68de[_0x4f05('0x42')][_0x4f05('0x94')])return[];return db['sequelize'][_0x4f05('0x42')](_0x17d45f['toString'](),_0x1200d0);})[_0x4f05('0x2b')](function(_0x1c3485){_0x2492e9[_0x4f05('0x24')]=_0x1c3485['length'];if(_0x2492e9[_0x4f05('0x24')]===0x0)return[];return db[_0x4f05('0x9b')][_0x4f05('0x42')](_0x584955[_0x4f05('0x9c')](),_0x1200d0)[_0x4f05('0x2b')](function(_0x2a8197){_0x43b0a7=_['keyBy'](_0x2a8197,'id');_0x1200d0=_[_0x4f05('0x9d')](_0x1200d0,{'model':db[_0x4f05('0x9e')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x4a68de['query'][_0x4f05('0x46')]){_0x54f062['attributes'][_0x4f05('0x33')](function(_0x2a7d5a){_0x101dbe[_0x4f05('0x4c')]('i.'+_0x2a7d5a);});}else{_0x101dbe[_0x4f05('0x4c')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x4f05('0x61'));_0x101dbe['field'](_0x4f05('0x9f'),_0x4f05('0xa0'));_0x101dbe[_0x4f05('0x4c')](_0x4f05('0xa1'),_0x4f05('0xa2'));_0x101dbe['field'](_0x4f05('0xa3'),_0x4f05('0x90'));_0x101dbe['field'](_0x4f05('0xa4'));_0x101dbe[_0x4f05('0x4c')]('c.firstName',_0x4f05('0xa5'));_0x101dbe[_0x4f05('0x4c')]('c.lastName',_0x4f05('0xa6'));_0x101dbe[_0x4f05('0x4c')](_0x4f05('0xa7'),_0x4f05('0xa8'));_0x101dbe[_0x4f05('0x4c')](_0x4f05('0xa9'),'Contact.phone');_0x101dbe[_0x4f05('0x4c')](_0x4f05('0xaa'),'Contact.mobile');_0x101dbe['field'](_0x4f05('0xab'),_0x4f05('0xac'));_0x101dbe['field'](_0x4f05('0xad'),_0x4f05('0xae'));_0x101dbe[_0x4f05('0x4c')](_0x4f05('0xaf'),'Owner.internal');_0x101dbe[_0x4f05('0x4c')](_0x4f05('0xb0'),_0x4f05('0x31'));}if(_0x54f062[_0x4f05('0x23')])_0x101dbe['limit'](_0x54f062[_0x4f05('0x23')]);if(_0x54f062[_0x4f05('0x21')])_0x101dbe['offset'](_0x54f062[_0x4f05('0x21')]);return db[_0x4f05('0x9b')][_0x4f05('0x42')](_0x101dbe[_0x4f05('0x9c')](),_0x1200d0);})['then'](function(_0x4c0795){if(_0x4c0795[_0x4f05('0x47')]>0x0)_0x5166d9[_0x4f05('0x78')]('ui.OpenchannelInteractionId\x20IN\x20?',_[_0x4f05('0x30')](_0x4c0795,'id'));return db['sequelize'][_0x4f05('0x42')](_0x5166d9[_0x4f05('0x9c')](),_0x1200d0)[_0x4f05('0x2b')](function(_0x2210bd){var _0xa9bb17=_[_0x4f05('0xb1')](_0x2210bd,_0x4f05('0xb2'));var _0x20d431=[];_0x4c0795[_0x4f05('0x33')](function(_0x50071b){_0x20d431[_0x4f05('0x34')](updateOpenchannelInteraction(_0x50071b,_0x43b0a7,_0xa9bb17));});return BPromise[_0x4f05('0xb3')](_0x20d431);});});})[_0x4f05('0x2b')](function(_0x157cd6){_0x2492e9['rows']=_0x157cd6;return _0x2492e9;})[_0x4f05('0x2b')](respondWithFilteredResult(_0x5b4066,_0x54f062))[_0x4f05('0x35')](handleError(_0x5b4066,null));};exports[_0x4f05('0xb4')]=function(_0x286b1b,_0x312631){var _0x37a3bb={};if(_0x286b1b[_0x4f05('0x42')][_0x4f05('0x3f')]&&_0x286b1b[_0x4f05('0x42')][_0x4f05('0x3f')]===_0x4f05('0x4e')){_0x37a3bb['from']=_0x286b1b[_0x4f05('0xb5')]['id'];}else{_0x37a3bb['id']=_0x286b1b[_0x4f05('0xb5')]['id'];}var _0x722eba={'raw':![],'where':_0x37a3bb},_0x367f53={};_0x367f53[_0x4f05('0x40')]=_[_0x4f05('0x41')](db['OpenchannelInteraction'][_0x4f05('0x3e')]);_0x367f53[_0x4f05('0x42')]=_[_0x4f05('0x41')](_0x286b1b[_0x4f05('0x42')]);_0x367f53[_0x4f05('0x43')]=_[_0x4f05('0x45')](_0x367f53[_0x4f05('0x40')],_0x367f53[_0x4f05('0x42')]);_0x722eba[_0x4f05('0x44')]=_['intersection'](_0x367f53[_0x4f05('0x40')],qs[_0x4f05('0x46')](_0x286b1b[_0x4f05('0x42')]['fields']));_0x722eba[_0x4f05('0x44')]=_0x722eba[_0x4f05('0x44')][_0x4f05('0x47')]?_0x722eba['attributes']:_0x367f53['model'];if(_0x286b1b[_0x4f05('0x42')]['includeAll']){_0x722eba[_0x4f05('0xb6')]=[{'all':!![]}];}_0x722eba=_[_0x4f05('0x9d')]({},_0x722eba,_0x286b1b['options']);return db[_0x4f05('0x9e')]['find'](_0x722eba)[_0x4f05('0x2b')](handleEntityNotFound(_0x312631,null))[_0x4f05('0x2b')](respondWithResult(_0x312631,null))[_0x4f05('0x35')](handleError(_0x312631,null));};exports[_0x4f05('0xb7')]=function(_0x28f770,_0x50a20e){return db[_0x4f05('0x9e')]['create'](_0x28f770[_0x4f05('0x75')],{})['then'](respondWithResult(_0x50a20e,0xc9))['catch'](handleError(_0x50a20e,null));};exports[_0x4f05('0x2a')]=function(_0x4ddeb1,_0x30eb31){if(_0x4ddeb1['body']['id']){delete _0x4ddeb1[_0x4f05('0x75')]['id'];}return db[_0x4f05('0x9e')][_0x4f05('0x74')]({'where':{'id':_0x4ddeb1['params']['id']}})['then'](handleEntityNotFound(_0x30eb31,null))[_0x4f05('0x2b')](saveUpdates(_0x4ddeb1[_0x4f05('0x75')],null))[_0x4f05('0x2b')](respondWithResult(_0x30eb31,null))[_0x4f05('0x35')](handleError(_0x30eb31,null));};exports[_0x4f05('0xb8')]=function(_0x437b7b,_0x3f8134){return db[_0x4f05('0x9e')][_0x4f05('0x74')]({'where':{'id':_0x437b7b[_0x4f05('0xb5')]['id']}})[_0x4f05('0x2b')](handleEntityNotFound(_0x3f8134,null))[_0x4f05('0x2b')](removeEntity(_0x3f8134,null))['catch'](handleError(_0x3f8134,null));};exports[_0x4f05('0xb9')]=function(_0x43cedf,_0x4a6d9e){return db[_0x4f05('0x9e')]['describe']()[_0x4f05('0x2b')](respondWithResult(_0x4a6d9e,null))[_0x4f05('0x35')](handleError(_0x4a6d9e,null));};exports[_0x4f05('0xba')]=function(_0x2e26ec,_0x469f01,_0x448452){return db['OpenchannelMessage'][_0x4f05('0x74')]({'where':{'id':_0x2e26ec[_0x4f05('0xb5')]['id']}})[_0x4f05('0x2b')](handleEntityNotFound(_0x469f01,null))[_0x4f05('0x2b')](function(_0x41eb38){if(_0x41eb38){return _0x41eb38[_0x4f05('0xba')](_0x2e26ec[_0x4f05('0x75')][_0x4f05('0xbb')],_[_0x4f05('0xbc')](_0x2e26ec[_0x4f05('0x75')],[_0x4f05('0xbb'),'id'])||{});}})[_0x4f05('0x2b')](respondWithResult(_0x469f01,null))['catch'](handleError(_0x469f01,null));};exports[_0x4f05('0xbd')]=function(_0x5019a3,_0x3f5360,_0x445bb1){var _0x1838cc={'raw':![],'where':{}};var _0x139f51={};var _0x33c2de={'count':0x0,'rows':[]};return db[_0x4f05('0x9e')][_0x4f05('0xbe')]({'where':{'id':_0x5019a3[_0x4f05('0xb5')]['id']}})[_0x4f05('0x2b')](handleEntityNotFound(_0x3f5360,null))[_0x4f05('0x2b')](function(_0x1d79a7){if(_0x1d79a7){_0x139f51[_0x4f05('0x40')]=_[_0x4f05('0x41')](db[_0x4f05('0xbf')][_0x4f05('0x3e')]);_0x139f51[_0x4f05('0x42')]=_['keys'](_0x5019a3[_0x4f05('0x42')]);_0x139f51[_0x4f05('0x43')]=_[_0x4f05('0x45')](_0x139f51[_0x4f05('0x40')],_0x139f51[_0x4f05('0x42')]);_0x1838cc['attributes']=_[_0x4f05('0x45')](_0x139f51['model'],qs['fields'](_0x5019a3[_0x4f05('0x42')][_0x4f05('0x46')]));_0x1838cc[_0x4f05('0x44')]=_0x1838cc[_0x4f05('0x44')][_0x4f05('0x47')]?_0x1838cc['attributes']:_0x139f51[_0x4f05('0x40')];if(!_0x5019a3[_0x4f05('0x42')]['hasOwnProperty'](_0x4f05('0x49'))){_0x1838cc[_0x4f05('0x23')]=qs[_0x4f05('0x23')](_0x5019a3[_0x4f05('0x42')]['limit']);_0x1838cc[_0x4f05('0x21')]=qs[_0x4f05('0x21')](_0x5019a3[_0x4f05('0x42')][_0x4f05('0x21')]);}_0x1838cc[_0x4f05('0x4a')]=qs['sort'](_0x5019a3['query'][_0x4f05('0xc0')]);_0x1838cc['where']=qs[_0x4f05('0x43')](_[_0x4f05('0xc1')](_0x5019a3[_0x4f05('0x42')],_0x139f51[_0x4f05('0x43')]));_0x1838cc[_0x4f05('0x78')][_0x4f05('0xb2')]=_0x1d79a7['id'];if(_0x5019a3['query'][_0x4f05('0x84')]){_0x1838cc['where']=_[_0x4f05('0x9d')](_0x1838cc[_0x4f05('0x78')],{'$or':_[_0x4f05('0x30')](_0x1838cc[_0x4f05('0x44')],function(_0x95156d){var _0x17ab7f={};_0x17ab7f[_0x95156d]={'$like':'%'+_0x5019a3['query'][_0x4f05('0x84')]+'%'};return _0x17ab7f;})});}if(_0x5019a3[_0x4f05('0x42')]['$gte']){var _0x4472e7=_0x5019a3[_0x4f05('0x42')][_0x4f05('0xc2')][_0x4f05('0x68')](',');var _0xd33003={};_0xd33003[_0x4472e7[0x0]]={'$gte':moment(_0x4472e7[0x1])['format'](_0x4f05('0xc3'))};_0x1838cc['where']=_['merge'](_0x1838cc[_0x4f05('0x78')],_0xd33003);}_0x1838cc=_['merge']({},_0x1838cc,_0x5019a3[_0x4f05('0xc4')]);return db[_0x4f05('0xbf')][_0x4f05('0x24')]({'where':_0x1838cc[_0x4f05('0x78')]})['then'](function(_0x4a3163){_0x33c2de[_0x4f05('0x24')]=_0x4a3163;if(_0x5019a3[_0x4f05('0x42')][_0x4f05('0xc5')]){_0x1838cc[_0x4f05('0xb6')]=[{'all':!![]}];}return db[_0x4f05('0xbf')][_0x4f05('0xc6')](_0x1838cc);})['then'](function(_0x1aea9d){_0x33c2de['rows']=_0x1aea9d;return _0x33c2de;});}})[_0x4f05('0x2b')](respondWithFilteredResult(_0x3f5360,_0x1838cc))['catch'](handleError(_0x3f5360,null));};exports[_0x4f05('0xc7')]=function(_0x56a87c,_0x2ddc10,_0xc25eee){return db['OpenchannelInteraction'][_0x4f05('0x74')]({'where':{'id':_0x56a87c[_0x4f05('0xb5')]['id']}})[_0x4f05('0x2b')](handleEntityNotFound(_0x2ddc10,null))[_0x4f05('0x2b')](function(_0x2fccac){if(_0x2fccac){return _0x2fccac['setTags'](_0x56a87c['body'][_0x4f05('0xbb')],_[_0x4f05('0xbc')](_0x56a87c[_0x4f05('0x75')],[_0x4f05('0xbb'),'id'])||{})['spread'](function(){return db['Tag'][_0x4f05('0xc6')]({'attributes':['id','name',_0x4f05('0x4d')],'where':{'id':_0x56a87c['body'][_0x4f05('0xbb')]}});})[_0x4f05('0x2b')](function(_0x22314f){socket[_0x4f05('0xc8')](_0x4f05('0xc9'),{'id':Number(_0x56a87c[_0x4f05('0xb5')]['id']),'tags':_0x22314f||[]});return{'id':Number(_0x56a87c['params']['id']),'tags':_0x22314f||[]};});}})[_0x4f05('0x2b')](respondWithResult(_0x2ddc10,null))[_0x4f05('0x35')](handleError(_0x2ddc10,null));};exports[_0x4f05('0xca')]=function(_0x4007aa,_0x14f267,_0x57de94){return db['OpenchannelInteraction'][_0x4f05('0x74')]({'where':{'id':_0x4007aa[_0x4f05('0xb5')]['id']}})[_0x4f05('0x2b')](handleEntityNotFound(_0x14f267,null))[_0x4f05('0x2b')](function(_0x36ef43){if(_0x36ef43){return _0x36ef43[_0x4f05('0xca')](_0x4007aa[_0x4f05('0x42')][_0x4f05('0xbb')]);}})[_0x4f05('0x2b')](respondWithStatusCode(_0x14f267,null))[_0x4f05('0x35')](handleError(_0x14f267,null));};exports[_0x4f05('0xcb')]=function(_0x5d95a6,_0xd4f5f0){var _0x4c9975=moment()[_0x4f05('0xcc')]()[_0x4f05('0x9c')]();var _0xf5b2a1=path[_0x4f05('0xcd')](config[_0x4f05('0xce')],_0x4f05('0xcf'),'files',_0x4f05('0xd0'));var _0x1be3f6=path[_0x4f05('0xcd')](config['root'],_0x4f05('0xcf'),_0x4f05('0xd1'),'attachments');var _0x4fc764=path[_0x4f05('0xcd')](_0xf5b2a1,_0x4c9975);var _0x19ace0=util[_0x4f05('0xd2')](_0x4f05('0xd3'),_0x5d95a6[_0x4f05('0xb5')]['id'],_0x4c9975);var _0x11e0b9=path[_0x4f05('0xcd')](_0xf5b2a1,_0x19ace0);var _0x53813e=[];_0x53813e[_0x4f05('0x34')]({'model':db[_0x4f05('0x72')],'as':_0x4f05('0x72'),'attributes':['id',_0x4f05('0xd4')],'raw':!![]});_0x53813e['push']({'model':db[_0x4f05('0xd5')],'as':_0x4f05('0x65'),'attributes':['id',_0x4f05('0xd6'),_0x4f05('0xd7')],'raw':!![]});if(_0x5d95a6['query'][_0x4f05('0xd8')]){_0x53813e['push']({'model':db['Attachment'],'as':_0x4f05('0xd9'),'raw':!![]});}var _0x290d2c=[{'model':db[_0x4f05('0xbf')],'as':_0x4f05('0xda'),'attributes':['id',_0x4f05('0x75'),_0x4f05('0x7a'),_0x4f05('0xdb'),'secret','read'],'include':_0x53813e}];_0x290d2c[_0x4f05('0x34')]({'model':db[_0x4f05('0xdc')],'as':_0x4f05('0xdd'),'attributes':['id',_0x4f05('0x2e')]});_0x290d2c['push']({'model':db['User'],'as':_0x4f05('0xde'),'attributes':['id',_0x4f05('0xd4')]});return db[_0x4f05('0x9e')][_0x4f05('0x74')]({'where':{'id':_0x5d95a6[_0x4f05('0xb5')]['id']},'include':_0x290d2c})[_0x4f05('0x2b')](handleEntityNotFound(_0xd4f5f0,null))[_0x4f05('0x2b')](function(_0x3b7658){if(_0x3b7658){var _0x1be2a1=_0x3b7658[_0x4f05('0xdf')]({'plain':!![]});fs[_0x4f05('0xe0')](_0x4fc764);var _0x22f4a4={'channel':_0x4f05('0xe1'),'account':_0x1be2a1[_0x4f05('0xdd')][_0x4f05('0x2e')],'agent':_0x1be2a1['Owner']?_0x1be2a1[_0x4f05('0xde')]['fullname']:_0x4f05('0xe2'),'createdAt':moment(_0x1be2a1[_0x4f05('0x7a')])[_0x4f05('0xd2')]('YYYY-MM-DD\x20HH:mm:ss')[_0x4f05('0x9c')](),'closedAt':_0x1be2a1[_0x4f05('0x3b')]?moment(_0x1be2a1[_0x4f05('0xe3')])[_0x4f05('0xd2')](_0x4f05('0xc3'))[_0x4f05('0x9c')]():'','disposition':_0x1be2a1['disposition'],'visibility':_0x1be2a1[_0x4f05('0xe4')]?_0x4f05('0xe5'):_0x4f05('0xe6'),'messages':_(_0x1be2a1[_0x4f05('0xda')])[_0x4f05('0x84')]({'secret':![]})[_0x4f05('0x30')](function(_0x4ab90a){if(_0x4ab90a['Attachment']){var _0x377f96=path[_0x4f05('0xcd')](_0x1be3f6,_0x4ab90a[_0x4f05('0xd9')][_0x4f05('0xe7')]);if(fs[_0x4f05('0xe8')](_0x377f96)){fs[_0x4f05('0xe9')](_0x377f96)[_0x4f05('0xea')](fs[_0x4f05('0xeb')](path[_0x4f05('0xcd')](_0x4fc764,_0x4ab90a['Attachment'][_0x4f05('0xe7')])));}}return{'date':moment(_0x4ab90a[_0x4f05('0x7a')])[_0x4f05('0xd2')](_0x4f05('0xc3'))['toString'](),'sender':_0x4ab90a[_0x4f05('0xdb')]===_0x4f05('0xec')?_0x4ab90a[_0x4f05('0x72')]?_0x4ab90a[_0x4f05('0x72')][_0x4f05('0xd4')]:_0x4f05('0xed'):_0x4ab90a[_0x4f05('0x65')][_0x4f05('0xd6')]+(_0x4ab90a[_0x4f05('0x65')]['lastName']?'\x20'+_0x4ab90a[_0x4f05('0x65')][_0x4f05('0xd7')]:''),'body':_0x4ab90a[_0x4f05('0xd9')]?_0x4ab90a['Attachment'][_0x4f05('0xe7')]:_0x4ab90a[_0x4f05('0x75')],'direction':_0x4ab90a['direction']===_0x4f05('0xec')?'A':'C','secret':_0x4ab90a[_0x4f05('0xee')],'read':_0x4ab90a[_0x4f05('0x80')],'attachment':_0x4ab90a[_0x4f05('0xd9')]};})[_0x4f05('0x62')]()};return ejs[_0x4f05('0xef')](path[_0x4f05('0xcd')](config['root'],'server',_0x4f05('0xf0'),_0x4f05('0xf1')),{'interaction':_0x22f4a4})['then'](function(_0x15ec22){var _0x3674e5=path[_0x4f05('0xcd')](_0x4fc764,'transcript-'+_0x1be2a1['id']+'-'+_0x4c9975+_0x4f05('0xf2'));var _0x3eb0e7={'path':_0x3674e5,'channel':_0x4f05('0xe1'),'interactionId':_0x1be2a1['id']};return pdf[_0x4f05('0xf3')](_0x15ec22,_0x3eb0e7);})[_0x4f05('0x2b')](function(){return new BPromise(function(_0x2b84fc,_0x3b2d1e){zipdir(_0x4fc764,{'saveTo':_0x11e0b9},function(_0x1db15e,_0xd6383e){if(_0x1db15e)return _0x3b2d1e(_0x1db15e);return _0x2b84fc(_0xd6383e);});})[_0x4f05('0x2b')](function(){return new BPromise(function(_0x1f0d58,_0x34971f){rimraf(_0x4fc764,function(_0x291578){if(_0x291578)_0x34971f(_0x291578);return _0x1f0d58();});});})[_0x4f05('0x2b')](function(){return _0xd4f5f0['download'](_0x11e0b9,_0x19ace0,function(_0x428d0e){if(_0x428d0e){console[_0x4f05('0xf4')](_0x4f05('0xf5'),_0x428d0e);}else{fs[_0x4f05('0xf6')](_0x11e0b9);}});});});}else{return _0xd4f5f0[_0x4f05('0x1e')](0xc8);}})[_0x4f05('0x35')](handleError(_0xd4f5f0,null));};
\ No newline at end of file
index 2c0b48b..9ac7838 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c12=['Users','map','findAll','setDataValue','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','OpenchannelInteraction','../../mysqldb','OpenchannelMessage','setMaxListeners','save','update','getUsers','then'];(function(_0x316cb5,_0x3aea11){var _0x1804cd=function(_0x11f1a4){while(--_0x11f1a4){_0x316cb5['push'](_0x316cb5['shift']());}};_0x1804cd(++_0x3aea11);}(_0x1c12,0xbf));var _0x21c1=function(_0xd35e00,_0x5deffb){_0xd35e00=_0xd35e00-0x0;var _0x334894=_0x1c12[_0xd35e00];return _0x334894;};'use strict';var EventEmitter=require(_0x21c1('0x0'));var OpenchannelInteraction=require('../../mysqldb')['db'][_0x21c1('0x1')];var OpenchannelMessage=require(_0x21c1('0x2'))['db'][_0x21c1('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x21c1('0x4')](0x0);var events={'afterCreate':_0x21c1('0x5'),'afterUpdate':_0x21c1('0x6'),'afterDestroy':'remove'};function emitEvent(_0x3372e2){return function(_0x58b070,_0x290c3d,_0x2050ca){_0x58b070[_0x21c1('0x7')]({'attributes':['id'],'raw':!![]})[_0x21c1('0x8')](function(_0x30a3eb){_0x58b070['setDataValue'](_0x21c1('0x9'),_0x30a3eb[_0x21c1('0xa')](function(_0xb52316){return{'id':_0xb52316['id']};}));return OpenchannelMessage[_0x21c1('0xb')]({'where':{'OpenchannelInteractionId':_0x58b070['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0xf1a3f3){_0x58b070[_0x21c1('0xc')](_0x21c1('0xd'),_0xf1a3f3[_0x21c1('0xe')]);OpenchannelInteractionEvents[_0x21c1('0xf')](_0x3372e2+':'+_0x58b070['id'],_0x58b070);OpenchannelInteractionEvents[_0x21c1('0xf')](_0x3372e2,_0x58b070);_0x2050ca(null);})[_0x21c1('0x10')](_0x2050ca(null));};}for(var e in events){if(events[_0x21c1('0x11')](e)){var event=events[e];OpenchannelInteraction[_0x21c1('0x12')](e,emitEvent(event));}}module[_0x21c1('0x13')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0xdd35=['exports','events','setMaxListeners','update','remove','getUsers','then','setDataValue','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty'];(function(_0xaee31d,_0xd546e9){var _0x14c062=function(_0x1abe2a){while(--_0x1abe2a){_0xaee31d['push'](_0xaee31d['shift']());}};_0x14c062(++_0xd546e9);}(_0xdd35,0x88));var _0x5dd3=function(_0x246240,_0x56fdd3){_0x246240=_0x246240-0x0;var _0x28dc93=_0xdd35[_0x246240];return _0x28dc93;};'use strict';var EventEmitter=require(_0x5dd3('0x0'));var OpenchannelInteraction=require('../../mysqldb')['db']['OpenchannelInteraction'];var OpenchannelMessage=require('../../mysqldb')['db']['OpenchannelMessage'];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x5dd3('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x5dd3('0x2'),'afterDestroy':_0x5dd3('0x3')};function emitEvent(_0xab67d1){return function(_0x58dbca,_0x19ebcd,_0x1b75bb){_0x58dbca[_0x5dd3('0x4')]({'attributes':['id'],'raw':!![]})[_0x5dd3('0x5')](function(_0x226a15){_0x58dbca[_0x5dd3('0x6')]('Users',_0x226a15[_0x5dd3('0x7')](function(_0x2ec118){return{'id':_0x2ec118['id']};}));return OpenchannelMessage[_0x5dd3('0x8')]({'where':{'OpenchannelInteractionId':_0x58dbca['id'],'direction':'in','read':![]},'raw':!![]});})[_0x5dd3('0x5')](function(_0x22f9e9){_0x58dbca[_0x5dd3('0x6')](_0x5dd3('0x9'),_0x22f9e9[_0x5dd3('0xa')]);OpenchannelInteractionEvents[_0x5dd3('0xb')](_0xab67d1+':'+_0x58dbca['id'],_0x58dbca);OpenchannelInteractionEvents[_0x5dd3('0xb')](_0xab67d1,_0x58dbca);_0x1b75bb(null);})[_0x5dd3('0xc')](_0x1b75bb(null));};}for(var e in events){if(events[_0x5dd3('0xd')](e)){var event=events[e];OpenchannelInteraction['hook'](e,emitEvent(event));}}module[_0x5dd3('0xe')]=OpenchannelInteractionEvents;
\ No newline at end of file
index 89371fd..5c89084 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b69=['YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','exports','define','OpenchannelInteraction','openchannel_interactions','utf8mb4','utf8mb4_unicode_ci','changed','closed','closedAt','format'];(function(_0x384ab0,_0x4b2120){var _0x3f06ed=function(_0x1b19d0){while(--_0x1b19d0){_0x384ab0['push'](_0x384ab0['shift']());}};_0x3f06ed(++_0x4b2120);}(_0x9b69,0xa3));var _0x99b6=function(_0x4a4c78,_0x13d5b7){_0x4a4c78=_0x4a4c78-0x0;var _0xd58f32=_0x9b69[_0x4a4c78];return _0xd58f32;};'use strict';var _=require(_0x99b6('0x0'));var util=require(_0x99b6('0x1'));var logger=require(_0x99b6('0x2'))('api');var moment=require('moment');var BPromise=require(_0x99b6('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x99b6('0x4'));var rimraf=require(_0x99b6('0x5'));var config=require(_0x99b6('0x6'));var attributes=require('./openchannelInteraction.attributes');module[_0x99b6('0x7')]=function(_0x5c4062,_0xbcd357){return _0x5c4062[_0x99b6('0x8')](_0x99b6('0x9'),attributes,{'tableName':_0x99b6('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x99b6('0xb'),'collate':_0x99b6('0xc'),'hooks':{'beforeUpdate':function(_0xefa2a6,_0x29cda9,_0x1e8826){if(_0xefa2a6[_0x99b6('0xd')](_0x99b6('0xe'))){_0xefa2a6[_0x99b6('0xf')]=moment()[_0x99b6('0x10')](_0x99b6('0x11'));}_0x1e8826(null,_0xefa2a6);}}});};
\ No newline at end of file
+var _0x8e23=['changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','bluebird','rimraf','./openchannelInteraction.attributes','exports','define','OpenchannelInteraction','openchannel_interactions'];(function(_0x478ce5,_0x184a6c){var _0x2cbf74=function(_0x15531f){while(--_0x15531f){_0x478ce5['push'](_0x478ce5['shift']());}};_0x2cbf74(++_0x184a6c);}(_0x8e23,0x7c));var _0x38e2=function(_0x36c8dc,_0x56850d){_0x36c8dc=_0x36c8dc-0x0;var _0x151afe=_0x8e23[_0x36c8dc];return _0x151afe;};'use strict';var _=require(_0x38e2('0x0'));var util=require(_0x38e2('0x1'));var logger=require(_0x38e2('0x2'))(_0x38e2('0x3'));var moment=require('moment');var BPromise=require(_0x38e2('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x38e2('0x5'));var config=require('../../config/environment');var attributes=require(_0x38e2('0x6'));module[_0x38e2('0x7')]=function(_0x24640c,_0xc89280){return _0x24640c[_0x38e2('0x8')](_0x38e2('0x9'),attributes,{'tableName':_0x38e2('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci','hooks':{'beforeUpdate':function(_0x5bf6fe,_0x2b7902,_0xebabb2){if(_0x5bf6fe[_0x38e2('0xb')](_0x38e2('0xc'))){_0x5bf6fe[_0x38e2('0xd')]=moment()['format'](_0x38e2('0xe'));}_0xebabb2(null,_0x5bf6fe);}}});};
\ No newline at end of file
index 41bf9cf..bbb5410 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40de=['UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','raw','where','attributes','limit','then','stringify','catch','ids','spread','AddTags','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','defaults','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','register','request','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','error','code','message','result'];(function(_0x5476c1,_0x1cad0a){var _0x5d9757=function(_0x6974cd){while(--_0x6974cd){_0x5476c1['push'](_0x5476c1['shift']());}};_0x5d9757(++_0x1cad0a);}(_0x40de,0x1dd));var _0xe40d=function(_0x4e1d2d,_0x5a44e1){_0x4e1d2d=_0x4e1d2d-0x0;var _0x520f96=_0x40de[_0x4e1d2d];return _0x520f96;};'use strict';var _=require(_0xe40d('0x0'));var util=require(_0xe40d('0x1'));var moment=require('moment');var BPromise=require(_0xe40d('0x2'));var rs=require(_0xe40d('0x3'));var fs=require('fs');var Redis=require(_0xe40d('0x4'));var db=require(_0xe40d('0x5'))['db'];var utils=require(_0xe40d('0x6'));var logger=require(_0xe40d('0x7'))(_0xe40d('0x8'));var config=require(_0xe40d('0x9'));var jayson=require(_0xe40d('0xa'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0xe40d('0xb')](config[_0xe40d('0xc')],{'host':_0xe40d('0xd'),'port':0x18eb});var socket=require(_0xe40d('0xe'))(new Redis(config[_0xe40d('0xc')]));require(_0xe40d('0xf'))[_0xe40d('0x10')](socket);function respondWithRpcPromise(_0x30f850,_0x58cecd,_0x2167d4){return new BPromise(function(_0x1cdd8c,_0x209a32){return client[_0xe40d('0x11')](_0x30f850,_0x2167d4)['then'](function(_0x1abad0){logger[_0xe40d('0x12')](_0xe40d('0x13'),_0x58cecd,_0xe40d('0x14'));logger[_0xe40d('0x15')](_0xe40d('0x16'),_0x58cecd,_0xe40d('0x14'),JSON['stringify'](_0x1abad0));if(_0x1abad0[_0xe40d('0x17')]){if(_0x1abad0['error'][_0xe40d('0x18')]===0x1f4){logger['error'](_0xe40d('0x13'),_0x58cecd,_0x1abad0[_0xe40d('0x17')][_0xe40d('0x19')]);return _0x209a32(_0x1abad0[_0xe40d('0x17')][_0xe40d('0x19')]);}logger[_0xe40d('0x17')](_0xe40d('0x13'),_0x58cecd,_0x1abad0['error']['message']);return _0x1cdd8c(_0x1abad0[_0xe40d('0x17')][_0xe40d('0x19')]);}else{logger['info']('OpenchannelInteraction,\x20%s,\x20%s',_0x58cecd,'request\x20sent');_0x1cdd8c(_0x1abad0[_0xe40d('0x1a')][_0xe40d('0x19')]);}})['catch'](function(_0x3122ef){logger[_0xe40d('0x17')](_0xe40d('0x13'),_0x58cecd,_0x3122ef);_0x209a32(_0x3122ef);});});}exports[_0xe40d('0x1b')]=function(_0x549998){var _0x5d09c3=this;return new Promise(function(_0x5b23a9,_0x5f34e7){return db[_0xe40d('0x1c')][_0xe40d('0x1d')](_0x549998[_0xe40d('0x1e')],{'raw':_0x549998[_0xe40d('0x1f')]?_0x549998[_0xe40d('0x1f')][_0xe40d('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x549998['options']?_0x549998['options'][_0xe40d('0x21')]||null:null,'attributes':_0x549998[_0xe40d('0x1f')]?_0x549998['options'][_0xe40d('0x22')]||null:null,'limit':_0x549998[_0xe40d('0x1f')]?_0x549998['options'][_0xe40d('0x23')]||null:null})[_0xe40d('0x24')](function(_0x3dc325){logger['info'](_0xe40d('0x1b'),_0x549998);logger[_0xe40d('0x15')](_0xe40d('0x1b'),_0x549998,JSON[_0xe40d('0x25')](_0x3dc325));_0x5b23a9(_0x3dc325);})[_0xe40d('0x26')](function(_0x210f28){logger[_0xe40d('0x17')]('UpdateOpenchannelInteraction',_0x210f28[_0xe40d('0x19')],_0x549998);_0x5f34e7(_0x5d09c3[_0xe40d('0x17')](0x1f4,_0x210f28['message']));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x2742ee){return new Promise(function(_0x193def,_0xa83a){return db[_0xe40d('0x1c')]['find']({'where':_0x2742ee[_0xe40d('0x1f')]?_0x2742ee[_0xe40d('0x1f')]['where']||null:null})[_0xe40d('0x24')](function(_0x53328c){if(_0x53328c){return _0x53328c['addTags'](_0x2742ee[_0xe40d('0x1e')][_0xe40d('0x27')],_['omit'](_0x2742ee['body'],[_0xe40d('0x27'),'id'])||{});}})[_0xe40d('0x28')](function(_0x325c3e){logger[_0xe40d('0x12')](_0xe40d('0x29'),_0x2742ee);logger[_0xe40d('0x15')](_0xe40d('0x29'),_0x2742ee,JSON['stringify'](_0x325c3e));_0x193def(_0x325c3e);})[_0xe40d('0x26')](function(_0x40e1cb){logger[_0xe40d('0x17')]('AddTags',_0x40e1cb['message'],_0x2742ee);_0xa83a(_this['error'](0x1f4,_0x40e1cb['message']));});});};
\ No newline at end of file
+var _0xa41a=['ids','spread','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','socket.io-emitter','./openchannelInteraction.socket','register','request','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','UpdateOpenchannelInteraction','OpenchannelInteraction','body','options','raw','where','attributes','debug','catch','AddTagsToOpenchannelInteraction','find','then','addTags'];(function(_0x28cec9,_0x423a72){var _0x313426=function(_0xe943f2){while(--_0xe943f2){_0x28cec9['push'](_0x28cec9['shift']());}};_0x313426(++_0x423a72);}(_0xa41a,0xa6));var _0xaa41=function(_0x41044c,_0x161575){_0x41044c=_0x41044c-0x0;var _0x1cfc3c=_0xa41a[_0x41044c];return _0x1cfc3c;};'use strict';var _=require(_0xaa41('0x0'));var util=require(_0xaa41('0x1'));var moment=require(_0xaa41('0x2'));var BPromise=require(_0xaa41('0x3'));var rs=require(_0xaa41('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xaa41('0x5'))['db'];var utils=require(_0xaa41('0x6'));var logger=require(_0xaa41('0x7'))(_0xaa41('0x8'));var config=require(_0xaa41('0x9'));var jayson=require(_0xaa41('0xa'));var client=jayson[_0xaa41('0xb')]['http']({'port':0x232a});config['redis']=_[_0xaa41('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xaa41('0xd'))(new Redis(config['redis']));require(_0xaa41('0xe'))[_0xaa41('0xf')](socket);function respondWithRpcPromise(_0x3ebb08,_0x70c0b5,_0x4c2657){return new BPromise(function(_0x498ee6,_0x5d8108){return client[_0xaa41('0x10')](_0x3ebb08,_0x4c2657)['then'](function(_0xb058c6){logger[_0xaa41('0x11')](_0xaa41('0x12'),_0x70c0b5,_0xaa41('0x13'));logger['debug'](_0xaa41('0x14'),_0x70c0b5,'request\x20sent',JSON[_0xaa41('0x15')](_0xb058c6));if(_0xb058c6[_0xaa41('0x16')]){if(_0xb058c6[_0xaa41('0x16')][_0xaa41('0x17')]===0x1f4){logger[_0xaa41('0x16')](_0xaa41('0x12'),_0x70c0b5,_0xb058c6['error'][_0xaa41('0x18')]);return _0x5d8108(_0xb058c6[_0xaa41('0x16')][_0xaa41('0x18')]);}logger[_0xaa41('0x16')](_0xaa41('0x12'),_0x70c0b5,_0xb058c6['error'][_0xaa41('0x18')]);return _0x498ee6(_0xb058c6[_0xaa41('0x16')][_0xaa41('0x18')]);}else{logger[_0xaa41('0x11')](_0xaa41('0x12'),_0x70c0b5,_0xaa41('0x13'));_0x498ee6(_0xb058c6[_0xaa41('0x19')][_0xaa41('0x18')]);}})['catch'](function(_0x44a8a3){logger['error'](_0xaa41('0x12'),_0x70c0b5,_0x44a8a3);_0x5d8108(_0x44a8a3);});});}exports[_0xaa41('0x1a')]=function(_0x279307){var _0x29a292=this;return new Promise(function(_0x4a677c,_0x3dd464){return db[_0xaa41('0x1b')]['update'](_0x279307[_0xaa41('0x1c')],{'raw':_0x279307[_0xaa41('0x1d')]?_0x279307['options'][_0xaa41('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x279307['options']?_0x279307[_0xaa41('0x1d')][_0xaa41('0x1f')]||null:null,'attributes':_0x279307[_0xaa41('0x1d')]?_0x279307[_0xaa41('0x1d')][_0xaa41('0x20')]||null:null,'limit':_0x279307[_0xaa41('0x1d')]?_0x279307['options']['limit']||null:null})['then'](function(_0x1761c4){logger['info'](_0xaa41('0x1a'),_0x279307);logger[_0xaa41('0x21')](_0xaa41('0x1a'),_0x279307,JSON[_0xaa41('0x15')](_0x1761c4));_0x4a677c(_0x1761c4);})[_0xaa41('0x22')](function(_0x1fb1f8){logger[_0xaa41('0x16')](_0xaa41('0x1a'),_0x1fb1f8['message'],_0x279307);_0x3dd464(_0x29a292['error'](0x1f4,_0x1fb1f8[_0xaa41('0x18')]));});});};exports[_0xaa41('0x23')]=function(_0x457099){return new Promise(function(_0x2bf9b2,_0x103585){return db[_0xaa41('0x1b')][_0xaa41('0x24')]({'where':_0x457099[_0xaa41('0x1d')]?_0x457099[_0xaa41('0x1d')][_0xaa41('0x1f')]||null:null})[_0xaa41('0x25')](function(_0x5cd75e){if(_0x5cd75e){return _0x5cd75e[_0xaa41('0x26')](_0x457099[_0xaa41('0x1c')][_0xaa41('0x27')],_['omit'](_0x457099[_0xaa41('0x1c')],[_0xaa41('0x27'),'id'])||{});}})[_0xaa41('0x28')](function(_0x2f9b64){logger[_0xaa41('0x11')]('AddTags',_0x457099);logger[_0xaa41('0x21')]('AddTags',_0x457099,JSON[_0xaa41('0x15')](_0x2f9b64));_0x2bf9b2(_0x2f9b64);})[_0xaa41('0x22')](function(_0x300216){logger['error']('AddTags',_0x300216[_0xaa41('0x18')],_0x457099);_0x103585(_this[_0xaa41('0x16')](0x1f4,_0x300216[_0xaa41('0x18')]));});});};
\ No newline at end of file
index 1fa2106..f7304c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e66=['removeListener','register','length','openchannelInteraction:','remove','update','emit'];(function(_0x4409e7,_0x307f17){var _0x24c751=function(_0x3a7d33){while(--_0x3a7d33){_0x4409e7['push'](_0x4409e7['shift']());}};_0x24c751(++_0x307f17);}(_0x4e66,0x10e));var _0x64e6=function(_0xb25b74,_0x570b7b){_0xb25b74=_0xb25b74-0x0;var _0x4052bf=_0x4e66[_0xb25b74];return _0x4052bf;};'use strict';var OpenchannelInteractionEvents=require('./openchannelInteraction.events');var events=['save',_0x64e6('0x0'),_0x64e6('0x1')];function createListener(_0x2d08fb,_0x16c432){return function(_0x44413a){_0x16c432[_0x64e6('0x2')](_0x2d08fb,_0x44413a);};}function removeListener(_0x19172d,_0x4a08aa){return function(){OpenchannelInteractionEvents[_0x64e6('0x3')](_0x19172d,_0x4a08aa);};}exports[_0x64e6('0x4')]=function(_0x49d8e2){for(var _0x3cffa4=0x0,_0x1dbb35=events[_0x64e6('0x5')];_0x3cffa4<_0x1dbb35;_0x3cffa4++){var _0x3d7a28=events[_0x3cffa4];var _0x2f2878=createListener(_0x64e6('0x6')+_0x3d7a28,_0x49d8e2);OpenchannelInteractionEvents['on'](_0x3d7a28,_0x2f2878);}};
\ No newline at end of file
+var _0xea2a=['register','length','./openchannelInteraction.events','remove','emit'];(function(_0x2064e5,_0x4f6fa2){var _0x21a233=function(_0x1b2491){while(--_0x1b2491){_0x2064e5['push'](_0x2064e5['shift']());}};_0x21a233(++_0x4f6fa2);}(_0xea2a,0x13d));var _0xaea2=function(_0x54dfab,_0x4333f2){_0x54dfab=_0x54dfab-0x0;var _0x198d66=_0xea2a[_0x54dfab];return _0x198d66;};'use strict';var OpenchannelInteractionEvents=require(_0xaea2('0x0'));var events=['save',_0xaea2('0x1'),'update'];function createListener(_0x285ef2,_0x48c160){return function(_0x1a5cbc){_0x48c160[_0xaea2('0x2')](_0x285ef2,_0x1a5cbc);};}function removeListener(_0x310515,_0x20e887){return function(){OpenchannelInteractionEvents['removeListener'](_0x310515,_0x20e887);};}exports[_0xaea2('0x3')]=function(_0xcb7f0d){for(var _0x40e504=0x0,_0x2cde51=events[_0xaea2('0x4')];_0x40e504<_0x2cde51;_0x40e504++){var _0x354718=events[_0x40e504];var _0x30f5ce=createListener('openchannelInteraction:'+_0x354718,_0xcb7f0d);OpenchannelInteractionEvents['on'](_0x354718,_0x30f5ce);}};
\ No newline at end of file
index 12fe0d1..6ccc14a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0xaff976,_0x4d3126){var _0x4ae780=function(_0xd2f455){while(--_0xd2f455){_0xaff976['push'](_0xaff976['shift']());}};_0x4ae780(++_0x4d3126);}(_0xa9e0,0x123));var _0x0a9e=function(_0x387777,_0x356171){_0x387777=_0x387777-0x0;var _0x3f84c0=_0xa9e0[_0x387777];return _0x3f84c0;};'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
+var _0xe706=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','tracked','openchannel','openchannelmessage:create','create','update','put','/:id/accept','accept','/:id/reject','exports','multer','util','path','express','Router'];(function(_0x392ca0,_0x41916f){var _0x289124=function(_0x1c8d26){while(--_0x1c8d26){_0x392ca0['push'](_0x392ca0['shift']());}};_0x289124(++_0x41916f);}(_0xe706,0xa3));var _0x6e70=function(_0x1d83db,_0x89d115){_0x1d83db=_0x1d83db-0x0;var _0x2dc1d1=_0xe706[_0x1d83db];return _0x2dc1d1;};'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')](),interaction[_0x6e70('0x12')](_0x6e70('0x13'),_0x6e70('0x14')),controller[_0x6e70('0x15')]);router['put']('/:id',auth[_0x6e70('0xb')](),controller[_0x6e70('0x16')]);router[_0x6e70('0x17')](_0x6e70('0x18'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x19')]);router[_0x6e70('0x17')](_0x6e70('0x1a'),auth['isAuthenticated'](),controller['reject']);router['delete'](_0x6e70('0xf'),auth['isAuthenticated'](),controller['destroy']);module[_0x6e70('0x1b')]=router;
\ No newline at end of file
index 325110a..9f08993 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda3f=['DATE','exports','TEXT','ENUM','out'];(function(_0x37b651,_0x3f9c4d){var _0x411251=function(_0x15cbd6){while(--_0x15cbd6){_0x37b651['push'](_0x37b651['shift']());}};_0x411251(++_0x3f9c4d);}(_0xda3f,0xec));var _0xfda3=function(_0x1cc603,_0x1236b2){_0x1cc603=_0x1cc603-0x0;var _0x288106=_0xda3f[_0x1cc603];return _0x288106;};'use strict';var Sequelize=require('sequelize');module[_0xfda3('0x0')]={'body':{'type':Sequelize[_0xfda3('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xfda3('0x2')]('in','out'),'defaultValue':_0xfda3('0x3'),'allowNull':![]},'readAt':{'type':Sequelize[_0xfda3('0x4')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xfda3('0x1')]}};
\ No newline at end of file
+var _0x8580=['medium','ENUM','out','DATE','STRING','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x8580,0x1c7));var _0x0858=function(_0x13e93f,_0x38ae07){_0x13e93f=_0x13e93f-0x0;var _0x5a3e1e=_0x8580[_0x13e93f];return _0x5a3e1e;};'use strict';var Sequelize=require('sequelize');module[_0x0858('0x0')]={'body':{'type':Sequelize['TEXT'](_0x0858('0x1')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x0858('0x2')]('in',_0x0858('0x3')),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0x0858('0x4')]},'providerName':{'type':Sequelize[_0x0858('0x5')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 9f7b999..5bf2070 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98c6=['set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','OpenchannelMessage','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','count','findAll','params','includeAll','include','options','find','create','body','describe','openchannel-interactions','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','isNil','read1stAt','interaction','info','role','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','email','manual','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','openchannel','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','fullname','interface','rejectmessage','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','defaults','redis','localhost','socket.io-emitter','./openchannelMessage.socket','register','jayson/promise','client','http','request','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','sendStatus','status','end','json','undefined','limit','offset'];(function(_0x4a3fdf,_0x3a7043){var _0x3a6639=function(_0x37697f){while(--_0x37697f){_0x4a3fdf['push'](_0x4a3fdf['shift']());}};_0x3a6639(++_0x3a7043);}(_0x98c6,0x15a));var _0x698c=function(_0x1910c9,_0x162099){_0x1910c9=_0x1910c9-0x0;var _0x888c71=_0x98c6[_0x1910c9];return _0x888c71;};'use strict';var emlformat=require(_0x698c('0x0'));var rimraf=require(_0x698c('0x1'));var zipdir=require(_0x698c('0x2'));var jsonpatch=require(_0x698c('0x3'));var rp=require(_0x698c('0x4'));var moment=require('moment');var BPromise=require(_0x698c('0x5'));var Mustache=require(_0x698c('0x6'));var util=require('util');var path=require(_0x698c('0x7'));var sox=require('sox');var csv=require(_0x698c('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x698c('0x9'));var _=require(_0x698c('0xa'));var squel=require(_0x698c('0xb'));var crypto=require(_0x698c('0xc'));var jsforce=require(_0x698c('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x698c('0x8'));var querystring=require(_0x698c('0xe'));var Papa=require(_0x698c('0xf'));var Redis=require(_0x698c('0x10'));var authService=require(_0x698c('0x11'));var qs=require(_0x698c('0x12'));var as=require(_0x698c('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x698c('0x14'))('api');var utils=require(_0x698c('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_[_0x698c('0x16')](config[_0x698c('0x17')],{'host':_0x698c('0x18'),'port':0x18eb});var socket=require(_0x698c('0x19'))(new Redis(config[_0x698c('0x17')]));require(_0x698c('0x1a'))[_0x698c('0x1b')](socket);var jayson=require(_0x698c('0x1c'));var client=jayson[_0x698c('0x1d')]['http']({'port':0x232c});var client9002=jayson[_0x698c('0x1d')][_0x698c('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x3079c1,_0x2eb4fa,_0xd24fdf,_0x4f51ca){return new BPromise(function(_0x58d488,_0x10a651){var _0x1f428c=_0x4f51ca||client;return _0x1f428c[_0x698c('0x1f')](_0x3079c1,_0xd24fdf)['then'](function(_0x121e60){logger['info'](_0x698c('0x20'),_0x2eb4fa,_0x698c('0x21'));logger[_0x698c('0x22')](_0x698c('0x23'),_0x2eb4fa,'request\x20sent',JSON[_0x698c('0x24')](_0x121e60));if(_0x121e60[_0x698c('0x25')]){if(_0x121e60[_0x698c('0x25')]['code']===0x1f4){logger['error'](_0x698c('0x20'),_0x2eb4fa,_0x121e60[_0x698c('0x25')]['message']);return _0x10a651(_0x121e60['error'][_0x698c('0x26')]);}logger[_0x698c('0x25')](_0x698c('0x20'),_0x2eb4fa,_0x121e60[_0x698c('0x25')]['message']);return _0x58d488(_0x121e60[_0x698c('0x25')]['message']);}else{logger['info'](_0x698c('0x20'),_0x2eb4fa,'request\x20sent');_0x58d488(_0x121e60['result'][_0x698c('0x26')]);}})[_0x698c('0x27')](function(_0x5072ae){logger[_0x698c('0x25')]('OpenchannelMessage,\x20%s,\x20%s',_0x2eb4fa,_0x5072ae);_0x10a651(_0x5072ae);});});}function respondWithStatusCode(_0x4ba6fd,_0x57cc27){_0x57cc27=_0x57cc27||0xcc;return function(_0x25d9aa){if(_0x25d9aa){return _0x4ba6fd[_0x698c('0x28')](_0x57cc27);}return _0x4ba6fd[_0x698c('0x29')](_0x57cc27)[_0x698c('0x2a')]();};}function respondWithResult(_0x54cd9f,_0x26db1f){_0x26db1f=_0x26db1f||0xc8;return function(_0x10c5a4){if(_0x10c5a4){return _0x54cd9f[_0x698c('0x29')](_0x26db1f)[_0x698c('0x2b')](_0x10c5a4);}};}function respondWithFilteredResult(_0x489fb7,_0x392a14){return function(_0x4be050){if(_0x4be050){var _0x3bb577=typeof _0x392a14['offset']===_0x698c('0x2c')&&typeof _0x392a14[_0x698c('0x2d')]===_0x698c('0x2c');var _0x366d3a=_0x4be050['count'];var _0x56ad1f=_0x3bb577?0x0:_0x392a14[_0x698c('0x2e')];var _0x25f582=_0x3bb577?_0x4be050['count']:_0x392a14[_0x698c('0x2e')]+_0x392a14['limit'];var _0x2a9781;if(_0x25f582>=_0x366d3a){_0x25f582=_0x366d3a;_0x2a9781=0xc8;}else{_0x2a9781=0xce;}_0x489fb7[_0x698c('0x29')](_0x2a9781);return _0x489fb7[_0x698c('0x2f')](_0x698c('0x30'),_0x56ad1f+'-'+_0x25f582+'/'+_0x366d3a)[_0x698c('0x2b')](_0x4be050);}return null;};}function patchUpdates(_0x44081f){return function(_0x421e8a){try{jsonpatch[_0x698c('0x31')](_0x421e8a,_0x44081f,!![]);}catch(_0x20ec95){return BPromise[_0x698c('0x32')](_0x20ec95);}return _0x421e8a[_0x698c('0x33')]();};}function saveUpdates(_0xba0a8e,_0x516e96){return function(_0x4d2cd7){if(_0x4d2cd7){return _0x4d2cd7[_0x698c('0x34')](_0xba0a8e)[_0x698c('0x35')](function(_0x2655bc){return _0x2655bc;});}return null;};}function removeEntity(_0x2f474b,_0x54cdde){return function(_0x184a85){if(_0x184a85){return _0x184a85[_0x698c('0x36')]()['then'](function(){_0x2f474b[_0x698c('0x29')](0xcc)[_0x698c('0x2a')]();});}};}function handleEntityNotFound(_0x4cb4f7,_0x3758cb){return function(_0x6b2dfd){if(!_0x6b2dfd){_0x4cb4f7['sendStatus'](0x194);}return _0x6b2dfd;};}function handleError(_0x2e9334,_0x180c61){_0x180c61=_0x180c61||0x1f4;return function(_0x30b10f){logger[_0x698c('0x25')](_0x30b10f[_0x698c('0x37')]);if(_0x30b10f['name']){delete _0x30b10f[_0x698c('0x38')];}_0x2e9334[_0x698c('0x29')](_0x180c61)[_0x698c('0x39')](_0x30b10f);};}exports[_0x698c('0x3a')]=function(_0x2b95cf,_0x548f45){var _0x441b4f={},_0x55d839={},_0x179a7c={'count':0x0,'rows':[]};var _0x310a6c=_[_0x698c('0x3b')](db[_0x698c('0x3c')]['rawAttributes'],function(_0x4cb9ce){return{'name':_0x4cb9ce[_0x698c('0x3d')],'type':_0x4cb9ce[_0x698c('0x3e')][_0x698c('0x3f')]};});_0x55d839[_0x698c('0x40')]=_[_0x698c('0x3b')](_0x310a6c,_0x698c('0x38'));_0x55d839[_0x698c('0x41')]=_[_0x698c('0x42')](_0x2b95cf[_0x698c('0x41')]);_0x55d839[_0x698c('0x43')]=_[_0x698c('0x44')](_0x55d839[_0x698c('0x40')],_0x55d839[_0x698c('0x41')]);_0x441b4f[_0x698c('0x45')]=_['intersection'](_0x55d839[_0x698c('0x40')],qs[_0x698c('0x46')](_0x2b95cf['query'][_0x698c('0x46')]));_0x441b4f[_0x698c('0x45')]=_0x441b4f[_0x698c('0x45')][_0x698c('0x47')]?_0x441b4f[_0x698c('0x45')]:_0x55d839[_0x698c('0x40')];if(!_0x2b95cf[_0x698c('0x41')][_0x698c('0x48')](_0x698c('0x49'))){_0x441b4f['limit']=qs[_0x698c('0x2d')](_0x2b95cf[_0x698c('0x41')][_0x698c('0x2d')]);_0x441b4f[_0x698c('0x2e')]=qs[_0x698c('0x2e')](_0x2b95cf[_0x698c('0x41')][_0x698c('0x2e')]);}_0x441b4f[_0x698c('0x4a')]=qs['sort'](_0x2b95cf[_0x698c('0x41')][_0x698c('0x4b')]);_0x441b4f[_0x698c('0x4c')]=qs[_0x698c('0x43')](_[_0x698c('0x4d')](_0x2b95cf[_0x698c('0x41')],_0x55d839[_0x698c('0x43')]),_0x310a6c);if(_0x2b95cf[_0x698c('0x41')]['filter']){_0x441b4f[_0x698c('0x4c')]=_[_0x698c('0x4e')](_0x441b4f[_0x698c('0x4c')],{'$or':_['map'](_0x310a6c,function(_0x1bf206){if(_0x1bf206[_0x698c('0x3e')]!==_0x698c('0x4f')){var _0x229490={};_0x229490[_0x1bf206[_0x698c('0x38')]]={'$like':'%'+_0x2b95cf[_0x698c('0x41')][_0x698c('0x50')]+'%'};return _0x229490;}})});}_0x441b4f=_[_0x698c('0x4e')]({},_0x441b4f,_0x2b95cf['options']);var _0x58877a={'where':_0x441b4f[_0x698c('0x4c')]};return db[_0x698c('0x3c')]['count'](_0x58877a)[_0x698c('0x35')](function(_0x4565eb){_0x179a7c[_0x698c('0x51')]=_0x4565eb;if(_0x2b95cf[_0x698c('0x41')]['includeAll']){_0x441b4f['include']=[{'all':!![]}];}return db[_0x698c('0x3c')][_0x698c('0x52')](_0x441b4f);})[_0x698c('0x35')](function(_0x5f464f){_0x179a7c['rows']=_0x5f464f;return _0x179a7c;})[_0x698c('0x35')](respondWithFilteredResult(_0x548f45,_0x441b4f))[_0x698c('0x27')](handleError(_0x548f45,null));};exports['show']=function(_0x42e98b,_0x4463c3){var _0x2556c4={'raw':!![],'where':{'id':_0x42e98b[_0x698c('0x53')]['id']}},_0x57ff44={};_0x57ff44[_0x698c('0x40')]=_[_0x698c('0x42')](db[_0x698c('0x3c')]['rawAttributes']);_0x57ff44['query']=_[_0x698c('0x42')](_0x42e98b['query']);_0x57ff44[_0x698c('0x43')]=_[_0x698c('0x44')](_0x57ff44[_0x698c('0x40')],_0x57ff44['query']);_0x2556c4[_0x698c('0x45')]=_[_0x698c('0x44')](_0x57ff44[_0x698c('0x40')],qs['fields'](_0x42e98b[_0x698c('0x41')][_0x698c('0x46')]));_0x2556c4[_0x698c('0x45')]=_0x2556c4[_0x698c('0x45')][_0x698c('0x47')]?_0x2556c4['attributes']:_0x57ff44[_0x698c('0x40')];if(_0x42e98b[_0x698c('0x41')][_0x698c('0x54')]){_0x2556c4[_0x698c('0x55')]=[{'all':!![]}];}_0x2556c4=_[_0x698c('0x4e')]({},_0x2556c4,_0x42e98b[_0x698c('0x56')]);return db['OpenchannelMessage'][_0x698c('0x57')](_0x2556c4)[_0x698c('0x35')](handleEntityNotFound(_0x4463c3,null))[_0x698c('0x35')](respondWithResult(_0x4463c3,null))[_0x698c('0x27')](handleError(_0x4463c3,null));};exports[_0x698c('0x58')]=function(_0x30f35a,_0xfd839e){return db[_0x698c('0x3c')][_0x698c('0x58')](_0x30f35a[_0x698c('0x59')],{})[_0x698c('0x35')](respondWithResult(_0xfd839e,0xc9))['catch'](handleError(_0xfd839e,null));};exports[_0x698c('0x34')]=function(_0x5c00b0,_0x31f20b){if(_0x5c00b0[_0x698c('0x59')]['id']){delete _0x5c00b0[_0x698c('0x59')]['id'];}return db['OpenchannelMessage'][_0x698c('0x57')]({'where':{'id':_0x5c00b0[_0x698c('0x53')]['id']}})[_0x698c('0x35')](handleEntityNotFound(_0x31f20b,null))[_0x698c('0x35')](saveUpdates(_0x5c00b0['body'],null))[_0x698c('0x35')](respondWithResult(_0x31f20b,null))[_0x698c('0x27')](handleError(_0x31f20b,null));};exports[_0x698c('0x36')]=function(_0x19243a,_0x10b822){return db[_0x698c('0x3c')][_0x698c('0x57')]({'where':{'id':_0x19243a[_0x698c('0x53')]['id']}})['then'](handleEntityNotFound(_0x10b822,null))[_0x698c('0x35')](removeEntity(_0x10b822,null))['catch'](handleError(_0x10b822,null));};exports[_0x698c('0x5a')]=function(_0x1d619f,_0x34ccd8){return db[_0x698c('0x3c')]['describe']()[_0x698c('0x35')](respondWithResult(_0x34ccd8,null))[_0x698c('0x27')](handleError(_0x34ccd8,null));};var interaction_log=require(_0x698c('0x14'))(_0x698c('0x5b'));exports[_0x698c('0x5c')]=function(_0x11e330,_0x2a810f,_0x307869){var _0x735cf4={'agent':{},'channel':'openchannel'};if(_0x11e330[_0x698c('0x59')]['id']){delete _0x11e330[_0x698c('0x59')]['id'];}_0x11e330['body'][_0x698c('0x5d')]=!![];_0x11e330[_0x698c('0x59')][_0x698c('0x5e')]=moment()[_0x698c('0x5f')](_0x698c('0x60'));_0x11e330[_0x698c('0x59')][_0x698c('0x61')]=_0x11e330[_0x698c('0x59')][_0x698c('0x61')]||_0x11e330[_0x698c('0x62')]['id'];_0x735cf4[_0x698c('0x63')]['id']=_0x11e330['body'][_0x698c('0x61')];return db['OpenchannelMessage'][_0x698c('0x57')]({'where':{'id':_0x11e330[_0x698c('0x53')]['id'],'UserId':null}})[_0x698c('0x35')](handleEntityNotFound(_0x2a810f,null))[_0x698c('0x35')](saveUpdates(_0x11e330[_0x698c('0x59')],null))[_0x698c('0x35')](function(_0x1bcbeb){if(_0x1bcbeb){_0x735cf4[_0x698c('0x26')]=_0x1bcbeb[_0x698c('0x64')]({'plain':!![]});return db['OpenchannelInteraction'][_0x698c('0x57')]({'where':{'id':_0x1bcbeb['OpenchannelInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x2a810f,null))[_0x698c('0x35')](function(_0x491e3f){if(_0x491e3f){return _0x491e3f[_0x698c('0x34')]({'UserId':_0x11e330[_0x698c('0x59')][_0x698c('0x61')],'read1stAt':_[_0x698c('0x65')](_0x491e3f[_0x698c('0x66')])?moment()[_0x698c('0x5f')](_0x698c('0x60')):undefined});}return null;})[_0x698c('0x35')](function(_0x353669){if(_0x353669){_0x735cf4[_0x698c('0x67')]=_0x353669['get']({'plain':!![]});interaction_log[_0x698c('0x68')]('[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x11e330[_0x698c('0x62')]['id'],_0x11e330[_0x698c('0x62')]['name'],_0x11e330[_0x698c('0x62')][_0x698c('0x69')],_0x735cf4[_0x698c('0x67')]['id'],_0x11e330[_0x698c('0x59')]?JSON[_0x698c('0x24')](_0x11e330[_0x698c('0x59')]):'null');return respondWithRpcPromise(_0x698c('0x6a'),'acceptMessage',_0x735cf4);}return null;})[_0x698c('0x35')](function(_0x155008){var _0x1ee97a=_0x698c('0x6b')+_0x155008['message'][_0x698c('0x6c')];return db[_0x698c('0x6d')][_0x698c('0x41')](_0x1ee97a,{'type':db[_0x698c('0x6e')][_0x698c('0x6f')][_0x698c('0x70')],'raw':!![]})[_0x698c('0x35')](function(_0x54457b){return _0x54457b;});})[_0x698c('0x35')](function(_0x523364){if(_0x523364){_0x735cf4[_0x698c('0x26')][_0x698c('0x71')]=_0x523364[0x0];if(!_0x11e330[_0x698c('0x59')][_0x698c('0x61')])return;return db[_0x698c('0x72')]['find']({'where':{'id':_0x11e330[_0x698c('0x59')][_0x698c('0x61')],'role':_0x698c('0x63')},'attributes':['id',_0x698c('0x38'),'fullname',_0x698c('0x73'),'internal'],'raw':!![]});}return null;})[_0x698c('0x35')](function(_0x5c9350){if(!_0x5c9350)return null;_0x735cf4[_0x698c('0x26')][_0x698c('0x63')]=_0x5c9350;return _0x735cf4;})['then'](function(_0x1a8241){if(_0x1a8241){if(_0x11e330[_0x698c('0x59')][_0x698c('0x74')]){_0x735cf4['message']['interface']=util[_0x698c('0x5f')](_0x698c('0x75'),_0x11e330[_0x698c('0x62')][_0x698c('0x38')]);_0x735cf4[_0x698c('0x26')][_0x698c('0x76')]=_0x735cf4[_0x698c('0x76')];_0x735cf4[_0x698c('0x26')][_0x698c('0x77')]=_0x735cf4[_0x698c('0x76')];_0x735cf4[_0x698c('0x26')][_0x698c('0x78')]=_0x698c('0x5c');return respondWithRpcPromise(_0x698c('0x79'),_0x698c('0x79'),{'event':_0x698c('0x7a'),'message':_0x735cf4[_0x698c('0x26')]},client9002)[_0x698c('0x35')](function(){return _0x735cf4;});}return _0x735cf4;}return null;})[_0x698c('0x35')](respondWithResult(_0x2a810f,null))[_0x698c('0x27')](handleError(_0x2a810f,null));};var interaction_log=require(_0x698c('0x14'))(_0x698c('0x5b'));exports[_0x698c('0x32')]=function(_0x2a9033,_0x52bf28,_0x484fe9){var _0x92224a={'agent':{},'channel':_0x698c('0x7b')};if(_0x2a9033[_0x698c('0x59')]['id']){delete _0x2a9033[_0x698c('0x59')]['id'];}_0x2a9033[_0x698c('0x59')]['UserId']=_0x2a9033['body'][_0x698c('0x61')]||_0x2a9033['user']['id'];_0x92224a['agent']['id']=_0x2a9033[_0x698c('0x59')]['UserId'];return db[_0x698c('0x3c')][_0x698c('0x57')]({'where':{'id':_0x2a9033['params']['id'],'UserId':null}})[_0x698c('0x35')](handleEntityNotFound(_0x52bf28,null))['then'](function(_0x1c10f5){if(_0x1c10f5){_0x92224a[_0x698c('0x26')]=_0x1c10f5[_0x698c('0x64')]({'plain':!![]});return db['OpenchannelInteraction']['find']({'where':{'id':_0x1c10f5['OpenchannelInteractionId']}});}return null;})[_0x698c('0x35')](handleEntityNotFound(_0x52bf28,null))['then'](function(_0x8f1458){if(_0x8f1458){_0x92224a[_0x698c('0x67')]=_0x8f1458[_0x698c('0x64')]({'plain':!![]});interaction_log[_0x698c('0x68')](_0x698c('0x7c'),_0x2a9033['user']['id'],_0x2a9033[_0x698c('0x62')][_0x698c('0x38')],_0x2a9033[_0x698c('0x62')][_0x698c('0x69')],_0x92224a['interaction']['id'],_0x2a9033['body']?JSON[_0x698c('0x24')](_0x2a9033['body']):_0x698c('0x7d'));return respondWithRpcPromise(_0x698c('0x7e'),_0x698c('0x7f'),_0x92224a);}return null;})['then'](function(_0x132079){var _0x93263e=_0x698c('0x6b')+_0x132079[_0x698c('0x26')][_0x698c('0x6c')];return db[_0x698c('0x6d')][_0x698c('0x41')](_0x93263e,{'type':db[_0x698c('0x6e')][_0x698c('0x6f')][_0x698c('0x70')],'raw':!![]})[_0x698c('0x35')](function(_0x1f0187){return _0x1f0187;});})[_0x698c('0x35')](function(_0x89b091){if(_0x89b091){_0x92224a[_0x698c('0x26')][_0x698c('0x71')]=_0x89b091[0x0];if(!_0x2a9033[_0x698c('0x59')][_0x698c('0x61')])return;return db[_0x698c('0x72')]['find']({'where':{'id':_0x2a9033[_0x698c('0x59')][_0x698c('0x61')],'role':_0x698c('0x63')},'attributes':['id',_0x698c('0x38'),_0x698c('0x80'),_0x698c('0x73'),'internal'],'raw':!![]});}return null;})[_0x698c('0x35')](function(_0x1b754f){if(!_0x1b754f)return null;_0x92224a[_0x698c('0x26')]['agent']=_0x1b754f;return _0x92224a;})[_0x698c('0x35')](function(_0x1622fd){if(_0x1622fd){_0x1622fd[_0x698c('0x26')][_0x698c('0x81')]=util[_0x698c('0x5f')](_0x698c('0x75'),_0x2a9033[_0x698c('0x62')]['name']);_0x1622fd[_0x698c('0x26')]['channel']=_0x92224a[_0x698c('0x76')];_0x1622fd[_0x698c('0x26')][_0x698c('0x77')]=_0x92224a[_0x698c('0x76')];_0x1622fd[_0x698c('0x26')][_0x698c('0x78')]=_0x698c('0x32');respondWithRpcPromise('EventManager',_0x698c('0x79'),{'event':_0x698c('0x82'),'message':_0x1622fd[_0x698c('0x26')]},client9002);return _0x92224a;}return null;})['then'](respondWithResult(_0x52bf28,null))['catch'](handleError(_0x52bf28,null));};
\ No newline at end of file
+var _0x9ed1=['sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','jayson/promise','client','http','request','then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','end','status','json','offset','undefined','limit','count','set','apply','save','update','destroy','sendStatus','stack','name','send','index','map','OpenchannelMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','include','findAll','rows','show','find','create','body','params','describe','../../config/logger','openchannel-interactions','accept','openchannel','read','readAt','UserId','agent','get','OpenchannelInteraction','isNil','YYYY-MM-DD\x20HH:mm:ss','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','SELECT','contact','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','acceptmessage','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','User','format','event','EventManager','rejectmessage','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util'];(function(_0x2124d7,_0x2161cc){var _0x221f52=function(_0x24ecd0){while(--_0x24ecd0){_0x2124d7['push'](_0x2124d7['shift']());}};_0x221f52(++_0x2161cc);}(_0x9ed1,0x107));var _0x19ed=function(_0x4295c9,_0x184ff2){_0x4295c9=_0x4295c9-0x0;var _0x9049a3=_0x9ed1[_0x4295c9];return _0x9049a3;};'use strict';var emlformat=require(_0x19ed('0x0'));var rimraf=require(_0x19ed('0x1'));var zipdir=require(_0x19ed('0x2'));var jsonpatch=require(_0x19ed('0x3'));var rp=require(_0x19ed('0x4'));var moment=require('moment');var BPromise=require(_0x19ed('0x5'));var Mustache=require('mustache');var util=require(_0x19ed('0x6'));var path=require('path');var sox=require(_0x19ed('0x7'));var csv=require('to-csv');var ejs=require(_0x19ed('0x8'));var fs=require('fs');var fs_extra=require(_0x19ed('0x9'));var _=require(_0x19ed('0xa'));var squel=require(_0x19ed('0xb'));var crypto=require(_0x19ed('0xc'));var jsforce=require(_0x19ed('0xd'));var deskjs=require(_0x19ed('0xe'));var toCsv=require(_0x19ed('0xf'));var querystring=require(_0x19ed('0x10'));var Papa=require(_0x19ed('0x11'));var Redis=require(_0x19ed('0x12'));var authService=require(_0x19ed('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x19ed('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x19ed('0x15'));var utils=require(_0x19ed('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x19ed('0x17'));var db=require('../../mysqldb')['db'];config[_0x19ed('0x18')]=_[_0x19ed('0x19')](config[_0x19ed('0x18')],{'host':_0x19ed('0x1a'),'port':0x18eb});var socket=require(_0x19ed('0x1b'))(new Redis(config[_0x19ed('0x18')]));require(_0x19ed('0x1c'))[_0x19ed('0x1d')](socket);var jayson=require(_0x19ed('0x1e'));var client=jayson[_0x19ed('0x1f')][_0x19ed('0x20')]({'port':0x232c});var client9002=jayson[_0x19ed('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x434e98,_0x324537,_0x308117,_0x315fc5){return new BPromise(function(_0x1c2301,_0x4bb58b){var _0x110bce=_0x315fc5||client;return _0x110bce[_0x19ed('0x21')](_0x434e98,_0x308117)[_0x19ed('0x22')](function(_0xb03261){logger[_0x19ed('0x23')](_0x19ed('0x24'),_0x324537,_0x19ed('0x25'));logger[_0x19ed('0x26')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x324537,_0x19ed('0x25'),JSON[_0x19ed('0x27')](_0xb03261));if(_0xb03261['error']){if(_0xb03261[_0x19ed('0x28')][_0x19ed('0x29')]===0x1f4){logger[_0x19ed('0x28')](_0x19ed('0x24'),_0x324537,_0xb03261['error'][_0x19ed('0x2a')]);return _0x4bb58b(_0xb03261[_0x19ed('0x28')]['message']);}logger[_0x19ed('0x28')]('OpenchannelMessage,\x20%s,\x20%s',_0x324537,_0xb03261[_0x19ed('0x28')][_0x19ed('0x2a')]);return _0x1c2301(_0xb03261[_0x19ed('0x28')][_0x19ed('0x2a')]);}else{logger['info']('OpenchannelMessage,\x20%s,\x20%s',_0x324537,_0x19ed('0x25'));_0x1c2301(_0xb03261[_0x19ed('0x2b')][_0x19ed('0x2a')]);}})[_0x19ed('0x2c')](function(_0x323a61){logger[_0x19ed('0x28')](_0x19ed('0x24'),_0x324537,_0x323a61);_0x4bb58b(_0x323a61);});});}function respondWithStatusCode(_0x5bc3a9,_0x376809){_0x376809=_0x376809||0xcc;return function(_0x5902a0){if(_0x5902a0){return _0x5bc3a9['sendStatus'](_0x376809);}return _0x5bc3a9['status'](_0x376809)[_0x19ed('0x2d')]();};}function respondWithResult(_0x1e1047,_0x241592){_0x241592=_0x241592||0xc8;return function(_0x304be0){if(_0x304be0){return _0x1e1047[_0x19ed('0x2e')](_0x241592)[_0x19ed('0x2f')](_0x304be0);}};}function respondWithFilteredResult(_0x3a1b16,_0x31cd26){return function(_0x51cdd3){if(_0x51cdd3){var _0x116e93=typeof _0x31cd26[_0x19ed('0x30')]===_0x19ed('0x31')&&typeof _0x31cd26[_0x19ed('0x32')]===_0x19ed('0x31');var _0x533b85=_0x51cdd3['count'];var _0x908ad9=_0x116e93?0x0:_0x31cd26[_0x19ed('0x30')];var _0x45146d=_0x116e93?_0x51cdd3[_0x19ed('0x33')]:_0x31cd26[_0x19ed('0x30')]+_0x31cd26['limit'];var _0x57c211;if(_0x45146d>=_0x533b85){_0x45146d=_0x533b85;_0x57c211=0xc8;}else{_0x57c211=0xce;}_0x3a1b16[_0x19ed('0x2e')](_0x57c211);return _0x3a1b16[_0x19ed('0x34')]('Content-Range',_0x908ad9+'-'+_0x45146d+'/'+_0x533b85)[_0x19ed('0x2f')](_0x51cdd3);}return null;};}function patchUpdates(_0x44e1e1){return function(_0x5dd7bd){try{jsonpatch[_0x19ed('0x35')](_0x5dd7bd,_0x44e1e1,!![]);}catch(_0x159854){return BPromise['reject'](_0x159854);}return _0x5dd7bd[_0x19ed('0x36')]();};}function saveUpdates(_0x3ec111,_0x4928cf){return function(_0x458f49){if(_0x458f49){return _0x458f49[_0x19ed('0x37')](_0x3ec111)[_0x19ed('0x22')](function(_0x348191){return _0x348191;});}return null;};}function removeEntity(_0x3141f3,_0x16745e){return function(_0x12b0c1){if(_0x12b0c1){return _0x12b0c1[_0x19ed('0x38')]()[_0x19ed('0x22')](function(){_0x3141f3[_0x19ed('0x2e')](0xcc)[_0x19ed('0x2d')]();});}};}function handleEntityNotFound(_0x281602,_0x11c38f){return function(_0xfabd7d){if(!_0xfabd7d){_0x281602[_0x19ed('0x39')](0x194);}return _0xfabd7d;};}function handleError(_0x37e1db,_0x46384f){_0x46384f=_0x46384f||0x1f4;return function(_0x111e63){logger[_0x19ed('0x28')](_0x111e63[_0x19ed('0x3a')]);if(_0x111e63[_0x19ed('0x3b')]){delete _0x111e63[_0x19ed('0x3b')];}_0x37e1db['status'](_0x46384f)[_0x19ed('0x3c')](_0x111e63);};}exports[_0x19ed('0x3d')]=function(_0x3ce810,_0x2eb5fc){var _0x424e35={},_0x130709={},_0x24ecef={'count':0x0,'rows':[]};var _0x510bd4=_[_0x19ed('0x3e')](db[_0x19ed('0x3f')][_0x19ed('0x40')],function(_0x290752){return{'name':_0x290752[_0x19ed('0x41')],'type':_0x290752[_0x19ed('0x42')][_0x19ed('0x43')]};});_0x130709[_0x19ed('0x44')]=_[_0x19ed('0x3e')](_0x510bd4,_0x19ed('0x3b'));_0x130709[_0x19ed('0x45')]=_[_0x19ed('0x46')](_0x3ce810[_0x19ed('0x45')]);_0x130709[_0x19ed('0x47')]=_[_0x19ed('0x48')](_0x130709[_0x19ed('0x44')],_0x130709['query']);_0x424e35[_0x19ed('0x49')]=_['intersection'](_0x130709['model'],qs[_0x19ed('0x4a')](_0x3ce810['query'][_0x19ed('0x4a')]));_0x424e35[_0x19ed('0x49')]=_0x424e35[_0x19ed('0x49')][_0x19ed('0x4b')]?_0x424e35['attributes']:_0x130709[_0x19ed('0x44')];if(!_0x3ce810[_0x19ed('0x45')]['hasOwnProperty'](_0x19ed('0x4c'))){_0x424e35[_0x19ed('0x32')]=qs[_0x19ed('0x32')](_0x3ce810[_0x19ed('0x45')][_0x19ed('0x32')]);_0x424e35[_0x19ed('0x30')]=qs[_0x19ed('0x30')](_0x3ce810[_0x19ed('0x45')][_0x19ed('0x30')]);}_0x424e35[_0x19ed('0x4d')]=qs[_0x19ed('0x4e')](_0x3ce810[_0x19ed('0x45')][_0x19ed('0x4e')]);_0x424e35[_0x19ed('0x4f')]=qs['filters'](_[_0x19ed('0x50')](_0x3ce810[_0x19ed('0x45')],_0x130709['filters']),_0x510bd4);if(_0x3ce810['query']['filter']){_0x424e35[_0x19ed('0x4f')]=_['merge'](_0x424e35[_0x19ed('0x4f')],{'$or':_[_0x19ed('0x3e')](_0x510bd4,function(_0x316888){if(_0x316888[_0x19ed('0x42')]!==_0x19ed('0x51')){var _0x655ac5={};_0x655ac5[_0x316888[_0x19ed('0x3b')]]={'$like':'%'+_0x3ce810['query'][_0x19ed('0x52')]+'%'};return _0x655ac5;}})});}_0x424e35=_[_0x19ed('0x53')]({},_0x424e35,_0x3ce810[_0x19ed('0x54')]);var _0x31569a={'where':_0x424e35[_0x19ed('0x4f')]};return db[_0x19ed('0x3f')][_0x19ed('0x33')](_0x31569a)[_0x19ed('0x22')](function(_0x24a0f7){_0x24ecef[_0x19ed('0x33')]=_0x24a0f7;if(_0x3ce810[_0x19ed('0x45')]['includeAll']){_0x424e35[_0x19ed('0x55')]=[{'all':!![]}];}return db['OpenchannelMessage'][_0x19ed('0x56')](_0x424e35);})[_0x19ed('0x22')](function(_0x3152e1){_0x24ecef[_0x19ed('0x57')]=_0x3152e1;return _0x24ecef;})['then'](respondWithFilteredResult(_0x2eb5fc,_0x424e35))[_0x19ed('0x2c')](handleError(_0x2eb5fc,null));};exports[_0x19ed('0x58')]=function(_0x1dfb75,_0x13b487){var _0x21ce16={'raw':!![],'where':{'id':_0x1dfb75['params']['id']}},_0x3f5e77={};_0x3f5e77[_0x19ed('0x44')]=_[_0x19ed('0x46')](db[_0x19ed('0x3f')]['rawAttributes']);_0x3f5e77[_0x19ed('0x45')]=_[_0x19ed('0x46')](_0x1dfb75[_0x19ed('0x45')]);_0x3f5e77[_0x19ed('0x47')]=_['intersection'](_0x3f5e77[_0x19ed('0x44')],_0x3f5e77[_0x19ed('0x45')]);_0x21ce16[_0x19ed('0x49')]=_[_0x19ed('0x48')](_0x3f5e77[_0x19ed('0x44')],qs[_0x19ed('0x4a')](_0x1dfb75[_0x19ed('0x45')][_0x19ed('0x4a')]));_0x21ce16['attributes']=_0x21ce16[_0x19ed('0x49')][_0x19ed('0x4b')]?_0x21ce16['attributes']:_0x3f5e77['model'];if(_0x1dfb75[_0x19ed('0x45')]['includeAll']){_0x21ce16[_0x19ed('0x55')]=[{'all':!![]}];}_0x21ce16=_[_0x19ed('0x53')]({},_0x21ce16,_0x1dfb75[_0x19ed('0x54')]);return db[_0x19ed('0x3f')][_0x19ed('0x59')](_0x21ce16)[_0x19ed('0x22')](handleEntityNotFound(_0x13b487,null))[_0x19ed('0x22')](respondWithResult(_0x13b487,null))['catch'](handleError(_0x13b487,null));};exports[_0x19ed('0x5a')]=function(_0x1c6424,_0x36201f){return db[_0x19ed('0x3f')][_0x19ed('0x5a')](_0x1c6424[_0x19ed('0x5b')],{})[_0x19ed('0x22')](respondWithResult(_0x36201f,0xc9))[_0x19ed('0x2c')](handleError(_0x36201f,null));};exports[_0x19ed('0x37')]=function(_0x2118e1,_0x487c77){if(_0x2118e1[_0x19ed('0x5b')]['id']){delete _0x2118e1[_0x19ed('0x5b')]['id'];}return db[_0x19ed('0x3f')]['find']({'where':{'id':_0x2118e1[_0x19ed('0x5c')]['id']}})[_0x19ed('0x22')](handleEntityNotFound(_0x487c77,null))['then'](saveUpdates(_0x2118e1[_0x19ed('0x5b')],null))[_0x19ed('0x22')](respondWithResult(_0x487c77,null))[_0x19ed('0x2c')](handleError(_0x487c77,null));};exports[_0x19ed('0x38')]=function(_0x2f3e54,_0x135651){return db[_0x19ed('0x3f')]['find']({'where':{'id':_0x2f3e54[_0x19ed('0x5c')]['id']}})['then'](handleEntityNotFound(_0x135651,null))[_0x19ed('0x22')](removeEntity(_0x135651,null))[_0x19ed('0x2c')](handleError(_0x135651,null));};exports[_0x19ed('0x5d')]=function(_0x1e0c7f,_0x33a506){return db[_0x19ed('0x3f')][_0x19ed('0x5d')]()[_0x19ed('0x22')](respondWithResult(_0x33a506,null))[_0x19ed('0x2c')](handleError(_0x33a506,null));};var interaction_log=require(_0x19ed('0x5e'))(_0x19ed('0x5f'));exports[_0x19ed('0x60')]=function(_0x19f893,_0x37a3f6,_0xebafba){var _0x3d9e16={'agent':{},'channel':_0x19ed('0x61')};if(_0x19f893[_0x19ed('0x5b')]['id']){delete _0x19f893[_0x19ed('0x5b')]['id'];}_0x19f893['body'][_0x19ed('0x62')]=!![];_0x19f893[_0x19ed('0x5b')][_0x19ed('0x63')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x19f893['body'][_0x19ed('0x64')]=_0x19f893['body'][_0x19ed('0x64')]||_0x19f893['user']['id'];_0x3d9e16[_0x19ed('0x65')]['id']=_0x19f893['body'][_0x19ed('0x64')];return db[_0x19ed('0x3f')][_0x19ed('0x59')]({'where':{'id':_0x19f893[_0x19ed('0x5c')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x37a3f6,null))[_0x19ed('0x22')](saveUpdates(_0x19f893[_0x19ed('0x5b')],null))[_0x19ed('0x22')](function(_0x48db1f){if(_0x48db1f){_0x3d9e16[_0x19ed('0x2a')]=_0x48db1f[_0x19ed('0x66')]({'plain':!![]});return db[_0x19ed('0x67')][_0x19ed('0x59')]({'where':{'id':_0x48db1f['OpenchannelInteractionId']}});}return null;})[_0x19ed('0x22')](handleEntityNotFound(_0x37a3f6,null))[_0x19ed('0x22')](function(_0x2c92a6){if(_0x2c92a6){return _0x2c92a6[_0x19ed('0x37')]({'UserId':_0x19f893['body']['UserId'],'read1stAt':_[_0x19ed('0x68')](_0x2c92a6['read1stAt'])?moment()['format'](_0x19ed('0x69')):undefined});}return null;})[_0x19ed('0x22')](function(_0x523e41){if(_0x523e41){_0x3d9e16[_0x19ed('0x6a')]=_0x523e41['get']({'plain':!![]});interaction_log[_0x19ed('0x23')](_0x19ed('0x6b'),_0x19f893['user']['id'],_0x19f893['user'][_0x19ed('0x3b')],_0x19f893[_0x19ed('0x6c')][_0x19ed('0x6d')],_0x3d9e16[_0x19ed('0x6a')]['id'],_0x19f893[_0x19ed('0x5b')]?JSON['stringify'](_0x19f893[_0x19ed('0x5b')]):'null');return respondWithRpcPromise(_0x19ed('0x6e'),'acceptMessage',_0x3d9e16);}return null;})[_0x19ed('0x22')](function(_0x89759f){var _0x46ced1=_0x19ed('0x6f')+_0x89759f[_0x19ed('0x2a')][_0x19ed('0x70')];return db[_0x19ed('0x71')][_0x19ed('0x45')](_0x46ced1,{'type':db[_0x19ed('0x72')]['QueryTypes'][_0x19ed('0x73')],'raw':!![]})[_0x19ed('0x22')](function(_0x2d992c){return _0x2d992c;});})[_0x19ed('0x22')](function(_0x97c3d3){if(_0x97c3d3){_0x3d9e16['message'][_0x19ed('0x74')]=_0x97c3d3[0x0];if(!_0x19f893[_0x19ed('0x5b')][_0x19ed('0x64')])return;return db['User']['find']({'where':{'id':_0x19f893[_0x19ed('0x5b')][_0x19ed('0x64')],'role':_0x19ed('0x65')},'attributes':['id',_0x19ed('0x3b'),_0x19ed('0x75'),_0x19ed('0x76'),_0x19ed('0x77')],'raw':!![]});}return null;})[_0x19ed('0x22')](function(_0x2d15a5){if(!_0x2d15a5)return null;_0x3d9e16['message']['agent']=_0x2d15a5;return _0x3d9e16;})[_0x19ed('0x22')](function(_0x3b48ff){if(_0x3b48ff){if(_0x19f893['body'][_0x19ed('0x78')]){_0x3d9e16[_0x19ed('0x2a')][_0x19ed('0x79')]=util['format'](_0x19ed('0x7a'),_0x19f893[_0x19ed('0x6c')][_0x19ed('0x3b')]);_0x3d9e16[_0x19ed('0x2a')][_0x19ed('0x7b')]=_0x3d9e16[_0x19ed('0x7b')];_0x3d9e16['message'][_0x19ed('0x7c')]=_0x3d9e16[_0x19ed('0x7b')];_0x3d9e16[_0x19ed('0x2a')]['event']=_0x19ed('0x60');return respondWithRpcPromise('EventManager','EventManager',{'event':_0x19ed('0x7d'),'message':_0x3d9e16['message']},client9002)[_0x19ed('0x22')](function(){return _0x3d9e16;});}return _0x3d9e16;}return null;})[_0x19ed('0x22')](respondWithResult(_0x37a3f6,null))[_0x19ed('0x2c')](handleError(_0x37a3f6,null));};var interaction_log=require('../../config/logger')('openchannel-interactions');exports['reject']=function(_0x3b23d5,_0x316d8d,_0x5c4e43){var _0x3b4359={'agent':{},'channel':_0x19ed('0x61')};if(_0x3b23d5['body']['id']){delete _0x3b23d5[_0x19ed('0x5b')]['id'];}_0x3b23d5[_0x19ed('0x5b')][_0x19ed('0x64')]=_0x3b23d5[_0x19ed('0x5b')][_0x19ed('0x64')]||_0x3b23d5['user']['id'];_0x3b4359['agent']['id']=_0x3b23d5['body'][_0x19ed('0x64')];return db[_0x19ed('0x3f')][_0x19ed('0x59')]({'where':{'id':_0x3b23d5[_0x19ed('0x5c')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x316d8d,null))['then'](function(_0x5d1d9d){if(_0x5d1d9d){_0x3b4359[_0x19ed('0x2a')]=_0x5d1d9d['get']({'plain':!![]});return db['OpenchannelInteraction'][_0x19ed('0x59')]({'where':{'id':_0x5d1d9d['OpenchannelInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x316d8d,null))[_0x19ed('0x22')](function(_0x54529b){if(_0x54529b){_0x3b4359['interaction']=_0x54529b['get']({'plain':!![]});interaction_log[_0x19ed('0x23')](_0x19ed('0x7e'),_0x3b23d5[_0x19ed('0x6c')]['id'],_0x3b23d5[_0x19ed('0x6c')]['name'],_0x3b23d5[_0x19ed('0x6c')][_0x19ed('0x6d')],_0x3b4359[_0x19ed('0x6a')]['id'],_0x3b23d5[_0x19ed('0x5b')]?JSON[_0x19ed('0x27')](_0x3b23d5[_0x19ed('0x5b')]):_0x19ed('0x7f'));return respondWithRpcPromise(_0x19ed('0x80'),_0x19ed('0x81'),_0x3b4359);}return null;})[_0x19ed('0x22')](function(_0x2240aa){var _0x7e0ab8='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2240aa[_0x19ed('0x2a')][_0x19ed('0x70')];return db[_0x19ed('0x71')][_0x19ed('0x45')](_0x7e0ab8,{'type':db[_0x19ed('0x72')]['QueryTypes'][_0x19ed('0x73')],'raw':!![]})[_0x19ed('0x22')](function(_0x2216e8){return _0x2216e8;});})[_0x19ed('0x22')](function(_0x110b08){if(_0x110b08){_0x3b4359[_0x19ed('0x2a')][_0x19ed('0x74')]=_0x110b08[0x0];if(!_0x3b23d5[_0x19ed('0x5b')][_0x19ed('0x64')])return;return db[_0x19ed('0x82')][_0x19ed('0x59')]({'where':{'id':_0x3b23d5[_0x19ed('0x5b')]['UserId'],'role':'agent'},'attributes':['id',_0x19ed('0x3b'),_0x19ed('0x75'),_0x19ed('0x76'),_0x19ed('0x77')],'raw':!![]});}return null;})[_0x19ed('0x22')](function(_0x26ce43){if(!_0x26ce43)return null;_0x3b4359[_0x19ed('0x2a')][_0x19ed('0x65')]=_0x26ce43;return _0x3b4359;})[_0x19ed('0x22')](function(_0x303a6e){if(_0x303a6e){_0x303a6e[_0x19ed('0x2a')][_0x19ed('0x79')]=util[_0x19ed('0x83')]('SIP/%s',_0x3b23d5[_0x19ed('0x6c')][_0x19ed('0x3b')]);_0x303a6e['message'][_0x19ed('0x7b')]=_0x3b4359[_0x19ed('0x7b')];_0x303a6e[_0x19ed('0x2a')][_0x19ed('0x7c')]=_0x3b4359['channel'];_0x303a6e['message'][_0x19ed('0x84')]='reject';respondWithRpcPromise('EventManager',_0x19ed('0x85'),{'event':_0x19ed('0x86'),'message':_0x303a6e[_0x19ed('0x2a')]},client9002);return _0x3b4359;}return null;})[_0x19ed('0x22')](respondWithResult(_0x316d8d,null))[_0x19ed('0x2c')](handleError(_0x316d8d,null));};
\ No newline at end of file
index 3ddf333..2d5f3e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecac=['events','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x2abfc2,_0x50ddab){var _0x3bbaa5=function(_0x47396c){while(--_0x47396c){_0x2abfc2['push'](_0x2abfc2['shift']());}};_0x3bbaa5(++_0x50ddab);}(_0xecac,0x17a));var _0xceca=function(_0x77516e,_0x1cb826){_0x77516e=_0x77516e-0x0;var _0x3286c3=_0xecac[_0x77516e];return _0x3286c3;};'use strict';var EventEmitter=require(_0xceca('0x0'));var OpenchannelMessage=require('../../mysqldb')['db']['OpenchannelMessage'];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xceca('0x1'),'afterDestroy':_0xceca('0x2')};function emitEvent(_0xed066f){return function(_0x35ac88,_0x13f361,_0x108449){OpenchannelMessageEvents[_0xceca('0x3')](_0xed066f+':'+_0x35ac88['id'],_0x35ac88);OpenchannelMessageEvents['emit'](_0xed066f,_0x35ac88);_0x108449(null);};}for(var e in events){if(events[_0xceca('0x4')](e)){var event=events[e];OpenchannelMessage[_0xceca('0x5')](e,emitEvent(event));}}module[_0xceca('0x6')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0x51ce=['hook','exports','events','../../mysqldb','OpenchannelMessage','setMaxListeners','save','remove','emit','hasOwnProperty'];(function(_0x241a41,_0x4b9388){var _0xbc2b61=function(_0x5e0eed){while(--_0x5e0eed){_0x241a41['push'](_0x241a41['shift']());}};_0xbc2b61(++_0x4b9388);}(_0x51ce,0xf2));var _0xe51c=function(_0x3b5049,_0x495a94){_0x3b5049=_0x3b5049-0x0;var _0x12454e=_0x51ce[_0x3b5049];return _0x12454e;};'use strict';var EventEmitter=require(_0xe51c('0x0'));var OpenchannelMessage=require(_0xe51c('0x1'))['db'][_0xe51c('0x2')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0xe51c('0x3')](0x0);var events={'afterCreate':_0xe51c('0x4'),'afterUpdate':'update','afterDestroy':_0xe51c('0x5')};function emitEvent(_0x35f8e0){return function(_0x24d741,_0x63b355,_0x3d3ee8){OpenchannelMessageEvents[_0xe51c('0x6')](_0x35f8e0+':'+_0x24d741['id'],_0x24d741);OpenchannelMessageEvents[_0xe51c('0x6')](_0x35f8e0,_0x24d741);_0x3d3ee8(null);};}for(var e in events){if(events[_0xe51c('0x7')](e)){var event=events[e];OpenchannelMessage[_0xe51c('0x8')](e,emitEvent(event));}}module[_0xe51c('0x9')]=OpenchannelMessageEvents;
\ No newline at end of file
index 6b27726..8e7e1b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8d2=['models','get','direction','toLowerCase','out','secret','isNil','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId','then','update','createdAt','catch','describe','find','OpenchannelAccountId','Interactions','CmContact','replyUri','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','length','Interaction','omit','Contact','method','GET','POST','Message\x20%d\x20forwarded\x20to\x20%s','threadId','inspect','finally','utf8mb4','utf8mb4_unicode_ci','api','moment','request-promise','path','rimraf','../../config/environment','./openchannelMessage.attributes','exports','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body'];(function(_0x5447fd,_0x52a6b5){var _0x15b28a=function(_0x370d4f){while(--_0x370d4f){_0x5447fd['push'](_0x5447fd['shift']());}};_0x15b28a(++_0x52a6b5);}(_0xc8d2,0x18c));var _0x2c8d=function(_0x25464d,_0x1841e5){_0x25464d=_0x25464d-0x0;var _0x50299c=_0xc8d2[_0x25464d];return _0x50299c;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x2c8d('0x0'));var moment=require(_0x2c8d('0x1'));var BPromise=require('bluebird');var rp=require(_0x2c8d('0x2'));var fs=require('fs');var path=require(_0x2c8d('0x3'));var rimraf=require(_0x2c8d('0x4'));var config=require(_0x2c8d('0x5'));var attributes=require(_0x2c8d('0x6'));module[_0x2c8d('0x7')]=function(_0x365506,_0x31438b){return _0x365506['define'](_0x2c8d('0x8'),attributes,{'tableName':_0x2c8d('0x9'),'paranoid':![],'indexes':[{'name':_0x2c8d('0xa'),'fields':[_0x2c8d('0xb')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4bc418,_0x25a5cf,_0x55c7ce){var _0x5b66b2=_0x365506[_0x2c8d('0xc')];var _0x36db1b=_0x4bc418[_0x2c8d('0xd')]({'plain':!![]});if(_0x36db1b[_0x2c8d('0xe')][_0x2c8d('0xf')]()==='in'||_0x36db1b[_0x2c8d('0xe')][_0x2c8d('0xf')]()===_0x2c8d('0x10')&&!_0x36db1b[_0x2c8d('0x11')]&&!_[_0x2c8d('0x12')](_0x36db1b[_0x2c8d('0x13')])){_0x5b66b2[_0x2c8d('0x14')][_0x2c8d('0x15')]({'where':{'id':_0x36db1b[_0x2c8d('0x16')]}})[_0x2c8d('0x17')](function(_0x451afe){if(_0x451afe){_0x451afe[_0x2c8d('0x18')]({'lastMsgAt':_0x36db1b[_0x2c8d('0x19')],'lastMsgDirection':_0x36db1b[_0x2c8d('0xe')][_0x2c8d('0xf')]()});}})[_0x2c8d('0x1a')](function(_0x2b7ffa){console['error'](_0x2b7ffa);});}if(_0x36db1b[_0x2c8d('0xe')]===_0x2c8d('0x10')&&!_0x36db1b[_0x2c8d('0x11')]){var _0x55457a;_0x5b66b2['CmContact'][_0x2c8d('0x1b')]()['then'](function(_0x4b965b){return _0x5b66b2['OpenchannelAccount'][_0x2c8d('0x1c')]({'where':{'id':_0x36db1b[_0x2c8d('0x1d')]},'include':[{'model':_0x5b66b2['OpenchannelInteraction'],'as':_0x2c8d('0x1e'),'where':{'id':_0x36db1b[_0x2c8d('0x16')]},'limit':0x1,'include':[{'model':_0x5b66b2[_0x2c8d('0x1f')],'as':'Contact','attributes':_['keys'](_0x4b965b)}]}]});})[_0x2c8d('0x17')](function(_0x161398){_0x55457a=_0x161398[_0x2c8d('0xd')]({'plain':!![]});if(_0x55457a&&_0x55457a[_0x2c8d('0x20')]){logger[_0x2c8d('0x21')](_0x2c8d('0x22'),_0x2c8d('0x23'),util[_0x2c8d('0x24')](_0x2c8d('0x25'),_0x36db1b['id'],_0x55457a['replyUri']));if(_0x55457a['Interactions']&&_0x55457a['Interactions'][_0x2c8d('0x26')]){_0x36db1b[_0x2c8d('0x27')]=_[_0x2c8d('0x28')](_0x55457a['Interactions'][0x0],'Contact');_0x36db1b[_0x2c8d('0x29')]=_0x55457a[_0x2c8d('0x1e')][0x0]['Contact'];}var _0x25a5cf={'method':'POST','uri':encodeURI(_0x55457a['replyUri']),'json':!![],'resolveWithFullResponse':!![]};switch(_0x25a5cf[_0x2c8d('0x2a')]){case _0x2c8d('0x2b'):_0x25a5cf['qs']=_0x36db1b;break;case _0x2c8d('0x2c'):_0x25a5cf[_0x2c8d('0xb')]=_0x36db1b;break;}return rp(_0x25a5cf)[_0x2c8d('0x17')](function(_0x2cadd5){logger[_0x2c8d('0x21')]('OpenchannelMessage,\x20%s,\x20%s',_0x2c8d('0x23'),util[_0x2c8d('0x24')](_0x2c8d('0x2d'),_0x36db1b['id'],_0x55457a['replyUri']));if(_0x2cadd5[_0x2c8d('0xb')]['threadId']&&_0x2cadd5['body'][_0x2c8d('0x2e')]!=_0x36db1b[_0x2c8d('0x27')][_0x2c8d('0x2e')]){return _0x5b66b2['OpenchannelInteraction'][_0x2c8d('0x18')]({'threadId':_0x2cadd5[_0x2c8d('0xb')][_0x2c8d('0x2e')]},{'where':{'id':_0x36db1b[_0x2c8d('0x27')]['id']}});}else{return;}})[_0x2c8d('0x17')](function(){return _0x4bc418['update']({'read':!![]});})[_0x2c8d('0x1a')](function(_0x1ece92){logger['error'](_0x2c8d('0x22'),_0x2c8d('0x23'),util[_0x2c8d('0x2f')](_0x1ece92,{'showHidden':![],'depth':null}));_0x55c7ce();});}else{_0x55c7ce();}})[_0x2c8d('0x30')](function(){_0x55c7ce();});}else{_0x55c7ce();}}},'charset':_0x2c8d('0x31'),'collate':_0x2c8d('0x32')});};
\ No newline at end of file
+var _0xb773=['info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','Interaction','omit','POST','Message\x20%d\x20forwarded\x20to\x20%s','threadId','inspect','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./openchannelMessage.attributes','exports','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body','models','get','direction','toLowerCase','out','secret','isNil','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId','then','update','createdAt','catch','error','CmContact','describe','OpenchannelAccount','find','Interactions','Contact','keys','replyUri'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xb773,0xad));var _0x3b77=function(_0x1442bb,_0x1f994e){_0x1442bb=_0x1442bb-0x0;var _0x1d9b35=_0xb773[_0x1442bb];return _0x1d9b35;};'use strict';var _=require(_0x3b77('0x0'));var util=require(_0x3b77('0x1'));var logger=require(_0x3b77('0x2'))(_0x3b77('0x3'));var moment=require(_0x3b77('0x4'));var BPromise=require(_0x3b77('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3b77('0x6'));var rimraf=require(_0x3b77('0x7'));var config=require(_0x3b77('0x8'));var attributes=require(_0x3b77('0x9'));module[_0x3b77('0xa')]=function(_0xfe24b8,_0x2df7e3){return _0xfe24b8['define'](_0x3b77('0xb'),attributes,{'tableName':_0x3b77('0xc'),'paranoid':![],'indexes':[{'name':_0x3b77('0xd'),'fields':[_0x3b77('0xe')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x31497b,_0x23a5e7,_0x1432fe){var _0x39c2fe=_0xfe24b8[_0x3b77('0xf')];var _0x2639c2=_0x31497b[_0x3b77('0x10')]({'plain':!![]});if(_0x2639c2[_0x3b77('0x11')][_0x3b77('0x12')]()==='in'||_0x2639c2['direction']['toLowerCase']()===_0x3b77('0x13')&&!_0x2639c2[_0x3b77('0x14')]&&!_[_0x3b77('0x15')](_0x2639c2[_0x3b77('0x16')])){_0x39c2fe[_0x3b77('0x17')][_0x3b77('0x18')]({'where':{'id':_0x2639c2[_0x3b77('0x19')]}})[_0x3b77('0x1a')](function(_0x5b5edb){if(_0x5b5edb){_0x5b5edb[_0x3b77('0x1b')]({'lastMsgAt':_0x2639c2[_0x3b77('0x1c')],'lastMsgDirection':_0x2639c2[_0x3b77('0x11')]['toLowerCase']()});}})[_0x3b77('0x1d')](function(_0xe2f2d){console[_0x3b77('0x1e')](_0xe2f2d);});}if(_0x2639c2['direction']==='out'&&!_0x2639c2['secret']){var _0x2b3884;_0x39c2fe[_0x3b77('0x1f')][_0x3b77('0x20')]()[_0x3b77('0x1a')](function(_0x5e9732){return _0x39c2fe[_0x3b77('0x21')][_0x3b77('0x22')]({'where':{'id':_0x2639c2['OpenchannelAccountId']},'include':[{'model':_0x39c2fe['OpenchannelInteraction'],'as':_0x3b77('0x23'),'where':{'id':_0x2639c2[_0x3b77('0x19')]},'limit':0x1,'include':[{'model':_0x39c2fe[_0x3b77('0x1f')],'as':_0x3b77('0x24'),'attributes':_[_0x3b77('0x25')](_0x5e9732)}]}]});})['then'](function(_0x374a25){_0x2b3884=_0x374a25[_0x3b77('0x10')]({'plain':!![]});if(_0x2b3884&&_0x2b3884[_0x3b77('0x26')]){logger[_0x3b77('0x27')](_0x3b77('0x28'),_0x3b77('0x29'),util[_0x3b77('0x2a')](_0x3b77('0x2b'),_0x2639c2['id'],_0x2b3884[_0x3b77('0x26')]));if(_0x2b3884[_0x3b77('0x23')]&&_0x2b3884[_0x3b77('0x23')]['length']){_0x2639c2[_0x3b77('0x2c')]=_[_0x3b77('0x2d')](_0x2b3884[_0x3b77('0x23')][0x0],_0x3b77('0x24'));_0x2639c2['Contact']=_0x2b3884[_0x3b77('0x23')][0x0]['Contact'];}var _0x23a5e7={'method':_0x3b77('0x2e'),'uri':encodeURI(_0x2b3884[_0x3b77('0x26')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x23a5e7['method']){case'GET':_0x23a5e7['qs']=_0x2639c2;break;case'POST':_0x23a5e7[_0x3b77('0xe')]=_0x2639c2;break;}return rp(_0x23a5e7)['then'](function(_0x2741cf){logger[_0x3b77('0x27')](_0x3b77('0x28'),_0x3b77('0x29'),util['format'](_0x3b77('0x2f'),_0x2639c2['id'],_0x2b3884[_0x3b77('0x26')]));if(_0x2741cf['body']['threadId']&&_0x2741cf[_0x3b77('0xe')][_0x3b77('0x30')]!=_0x2639c2['Interaction'][_0x3b77('0x30')]){return _0x39c2fe[_0x3b77('0x17')]['update']({'threadId':_0x2741cf[_0x3b77('0xe')][_0x3b77('0x30')]},{'where':{'id':_0x2639c2[_0x3b77('0x2c')]['id']}});}else{return;}})[_0x3b77('0x1a')](function(){return _0x31497b[_0x3b77('0x1b')]({'read':!![]});})['catch'](function(_0x475bac){logger[_0x3b77('0x1e')](_0x3b77('0x28'),'afterCreate',util[_0x3b77('0x31')](_0x475bac,{'showHidden':![],'depth':null}));_0x1432fe();});}else{_0x1432fe();}})[_0x3b77('0x32')](function(){_0x1432fe();});}else{_0x1432fe();}}},'charset':_0x3b77('0x33'),'collate':_0x3b77('0x34')});};
\ No newline at end of file
index 95d10fa..701d0bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','CreateOpenchannelMessage','OpenchannelMessage','create','body','options','raw','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./openchannelMessage.socket','register','request'];(function(_0x56b913,_0x3ddf4e){var _0x4d2bcf=function(_0x5994db){while(--_0x5994db){_0x56b913['push'](_0x56b913['shift']());}};_0x4d2bcf(++_0x3ddf4e);}(_0xdb28,0x106));var _0x8db2=function(_0x2e37ed,_0x35ffc1){_0x2e37ed=_0x2e37ed-0x0;var _0x4544a7=_0xdb28[_0x2e37ed];return _0x4544a7;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var moment=require(_0x8db2('0x2'));var BPromise=require(_0x8db2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8db2('0x4'));var db=require(_0x8db2('0x5'))['db'];var utils=require(_0x8db2('0x6'));var logger=require(_0x8db2('0x7'))(_0x8db2('0x8'));var config=require('../../config/environment');var jayson=require(_0x8db2('0x9'));var client=jayson[_0x8db2('0xa')]['http']({'port':0x232a});config['redis']=_[_0x8db2('0xb')](config[_0x8db2('0xc')],{'host':_0x8db2('0xd'),'port':0x18eb});var socket=require(_0x8db2('0xe'))(new Redis(config[_0x8db2('0xc')]));require(_0x8db2('0xf'))[_0x8db2('0x10')](socket);function respondWithRpcPromise(_0x4ba340,_0x30dc90,_0x476216){return new BPromise(function(_0x1f62af,_0x57015f){return client[_0x8db2('0x11')](_0x4ba340,_0x476216)[_0x8db2('0x12')](function(_0x576475){logger[_0x8db2('0x13')](_0x8db2('0x14'),_0x30dc90,_0x8db2('0x15'));logger[_0x8db2('0x16')](_0x8db2('0x17'),_0x30dc90,'request\x20sent',JSON['stringify'](_0x576475));if(_0x576475[_0x8db2('0x18')]){if(_0x576475[_0x8db2('0x18')][_0x8db2('0x19')]===0x1f4){logger[_0x8db2('0x18')](_0x8db2('0x14'),_0x30dc90,_0x576475[_0x8db2('0x18')][_0x8db2('0x1a')]);return _0x57015f(_0x576475[_0x8db2('0x18')][_0x8db2('0x1a')]);}logger[_0x8db2('0x18')]('OpenchannelMessage,\x20%s,\x20%s',_0x30dc90,_0x576475[_0x8db2('0x18')][_0x8db2('0x1a')]);return _0x1f62af(_0x576475['error'][_0x8db2('0x1a')]);}else{logger[_0x8db2('0x13')](_0x8db2('0x14'),_0x30dc90,_0x8db2('0x15'));_0x1f62af(_0x576475[_0x8db2('0x1b')][_0x8db2('0x1a')]);}})['catch'](function(_0x5df464){logger[_0x8db2('0x18')](_0x8db2('0x14'),_0x30dc90,_0x5df464);_0x57015f(_0x5df464);});});}exports[_0x8db2('0x1c')]=function(_0x1b64e4){var _0x58562e=this;return new Promise(function(_0x431d60,_0x36a9ff){return db[_0x8db2('0x1d')][_0x8db2('0x1e')](_0x1b64e4[_0x8db2('0x1f')],{'raw':_0x1b64e4['options']?_0x1b64e4[_0x8db2('0x20')][_0x8db2('0x21')]===undefined?!![]:![]:!![]})[_0x8db2('0x12')](function(_0x125be2){logger[_0x8db2('0x13')](_0x8db2('0x1c'),_0x1b64e4);logger[_0x8db2('0x16')]('CreateOpenchannelMessage',_0x1b64e4,JSON[_0x8db2('0x22')](_0x125be2));_0x431d60(_0x125be2);})['catch'](function(_0x5725f0){logger['error']('CreateOpenchannelMessage',_0x5725f0[_0x8db2('0x1a')],_0x1b64e4);_0x36a9ff(_0x58562e[_0x8db2('0x18')](0x1f4,_0x5725f0[_0x8db2('0x1a')]));});});};
\ No newline at end of file
+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(_0x3f3970,_0x588789){var _0x5aa1e8=function(_0x23ceae){while(--_0x23ceae){_0x3f3970['push'](_0x3f3970['shift']());}};_0x5aa1e8(++_0x588789);}(_0x2ef3,0xba));var _0x32ef=function(_0x1ad3aa,_0x3e4480){_0x1ad3aa=_0x1ad3aa-0x0;var _0x93b6a3=_0x2ef3[_0x1ad3aa];return _0x93b6a3;};'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
index dab7afb..6928d87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee4a=['length','openchannelMessage:','./openchannelMessage.events','remove','update','removeListener'];(function(_0x365333,_0xdf1bf3){var _0x1584e2=function(_0x1ea366){while(--_0x1ea366){_0x365333['push'](_0x365333['shift']());}};_0x1584e2(++_0xdf1bf3);}(_0xee4a,0x9e));var _0xaee4=function(_0x3ac3c2,_0x3f978b){_0x3ac3c2=_0x3ac3c2-0x0;var _0x3eef07=_0xee4a[_0x3ac3c2];return _0x3eef07;};'use strict';var OpenchannelMessageEvents=require(_0xaee4('0x0'));var events=['save',_0xaee4('0x1'),_0xaee4('0x2')];function createListener(_0x3b9520,_0x50b58b){return function(_0x44af35){_0x50b58b['emit'](_0x3b9520,_0x44af35);};}function removeListener(_0x12b88f,_0x5a4a26){return function(){OpenchannelMessageEvents[_0xaee4('0x3')](_0x12b88f,_0x5a4a26);};}exports['register']=function(_0x23f47b){for(var _0x555e98=0x0,_0x24372a=events[_0xaee4('0x4')];_0x555e98<_0x24372a;_0x555e98++){var _0x37ed64=events[_0x555e98];var _0x5e0ab4=createListener(_0xaee4('0x5')+_0x37ed64,_0x23f47b);OpenchannelMessageEvents['on'](_0x37ed64,_0x5e0ab4);}};
\ No newline at end of file
+var _0xbdf3=['register','openchannelMessage:','save','remove','emit','removeListener'];(function(_0x5206a7,_0x3c7975){var _0x4cd7ee=function(_0x4ce1a5){while(--_0x4ce1a5){_0x5206a7['push'](_0x5206a7['shift']());}};_0x4cd7ee(++_0x3c7975);}(_0xbdf3,0x10a));var _0x3bdf=function(_0x10d670,_0x178996){_0x10d670=_0x10d670-0x0;var _0x20d6f8=_0xbdf3[_0x10d670];return _0x20d6f8;};'use strict';var OpenchannelMessageEvents=require('./openchannelMessage.events');var events=[_0x3bdf('0x0'),_0x3bdf('0x1'),'update'];function createListener(_0x406b91,_0x5a805d){return function(_0x15e9ef){_0x5a805d[_0x3bdf('0x2')](_0x406b91,_0x15e9ef);};}function removeListener(_0x4c0848,_0x54f417){return function(){OpenchannelMessageEvents[_0x3bdf('0x3')](_0x4c0848,_0x54f417);};}exports[_0x3bdf('0x4')]=function(_0x25a262){for(var _0x3594c0=0x0,_0x3088f1=events['length'];_0x3594c0<_0x3088f1;_0x3594c0++){var _0x603022=events[_0x3594c0];var _0x56174e=createListener(_0x3bdf('0x5')+_0x603022,_0x25a262);OpenchannelMessageEvents['on'](_0x603022,_0x56174e);}};
\ No newline at end of file
index 8dedeb5..b366aeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x655d=['./openchannelQueue.controller','get','isAuthenticated','/:id','/:id/members','getMembers','/:id/teams','/:id/users','post','create','addTeams','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x4d613c,_0x55f220){var _0x301fe3=function(_0x5eec0b){while(--_0x5eec0b){_0x4d613c['push'](_0x4d613c['shift']());}};_0x301fe3(++_0x55f220);}(_0x655d,0x15e));var _0xd655=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0x655d[_0x1cc8fe];return _0x230054;};'use strict';var multer=require(_0xd655('0x0'));var util=require(_0xd655('0x1'));var path=require(_0xd655('0x2'));var timeout=require(_0xd655('0x3'));var express=require(_0xd655('0x4'));var router=express[_0xd655('0x5')]();var fs_extra=require(_0xd655('0x6'));var auth=require(_0xd655('0x7'));var interaction=require(_0xd655('0x8'));var config=require(_0xd655('0x9'));var controller=require(_0xd655('0xa'));router[_0xd655('0xb')]('/',auth[_0xd655('0xc')](),controller['index']);router[_0xd655('0xb')]('/describe',auth[_0xd655('0xc')](),controller['describe']);router[_0xd655('0xb')](_0xd655('0xd'),auth[_0xd655('0xc')](),controller['show']);router[_0xd655('0xb')](_0xd655('0xe'),auth['isAuthenticated'](),controller[_0xd655('0xf')]);router[_0xd655('0xb')](_0xd655('0x10'),auth[_0xd655('0xc')](),controller['getTeams']);router[_0xd655('0xb')](_0xd655('0x11'),auth[_0xd655('0xc')](),controller['getAgents']);router[_0xd655('0x12')]('/',auth['isAuthenticated'](),controller[_0xd655('0x13')]);router['post'](_0xd655('0x10'),auth[_0xd655('0xc')](),controller[_0xd655('0x14')]);router[_0xd655('0x12')](_0xd655('0x11'),auth[_0xd655('0xc')](),controller['addAgents']);router['put'](_0xd655('0xd'),auth[_0xd655('0xc')](),controller['update']);router[_0xd655('0x15')](_0xd655('0xd'),auth[_0xd655('0xc')](),controller[_0xd655('0x16')]);router[_0xd655('0x15')](_0xd655('0x10'),auth[_0xd655('0xc')](),controller['removeTeams']);router[_0xd655('0x15')](_0xd655('0x11'),auth[_0xd655('0xc')](),controller['removeAgents']);module[_0xd655('0x17')]=router;
\ No newline at end of file
+var _0xc609=['isAuthenticated','index','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','update','destroy','delete','removeAgents','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x157033,_0x398810){var _0x45d09f=function(_0x55086b){while(--_0x55086b){_0x157033['push'](_0x157033['shift']());}};_0x45d09f(++_0x398810);}(_0xc609,0x1aa));var _0x9c60=function(_0x3a1f64,_0x366a3e){_0x3a1f64=_0x3a1f64-0x0;var _0x4f3f10=_0xc609[_0x3a1f64];return _0x4f3f10;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x9c60('0x0'));var timeout=require(_0x9c60('0x1'));var express=require(_0x9c60('0x2'));var router=express[_0x9c60('0x3')]();var fs_extra=require(_0x9c60('0x4'));var auth=require(_0x9c60('0x5'));var interaction=require(_0x9c60('0x6'));var config=require(_0x9c60('0x7'));var controller=require('./openchannelQueue.controller');router[_0x9c60('0x8')]('/',auth[_0x9c60('0x9')](),controller[_0x9c60('0xa')]);router[_0x9c60('0x8')]('/describe',auth[_0x9c60('0x9')](),controller['describe']);router[_0x9c60('0x8')](_0x9c60('0xb'),auth[_0x9c60('0x9')](),controller[_0x9c60('0xc')]);router[_0x9c60('0x8')](_0x9c60('0xd'),auth[_0x9c60('0x9')](),controller[_0x9c60('0xe')]);router['get'](_0x9c60('0xf'),auth['isAuthenticated'](),controller[_0x9c60('0x10')]);router[_0x9c60('0x8')](_0x9c60('0x11'),auth['isAuthenticated'](),controller[_0x9c60('0x12')]);router[_0x9c60('0x13')]('/',auth['isAuthenticated'](),controller[_0x9c60('0x14')]);router[_0x9c60('0x13')](_0x9c60('0xf'),auth[_0x9c60('0x9')](),controller[_0x9c60('0x15')]);router[_0x9c60('0x13')](_0x9c60('0x11'),auth[_0x9c60('0x9')](),controller[_0x9c60('0x16')]);router[_0x9c60('0x17')]('/:id',auth[_0x9c60('0x9')](),controller[_0x9c60('0x18')]);router['delete'](_0x9c60('0xb'),auth[_0x9c60('0x9')](),controller[_0x9c60('0x19')]);router[_0x9c60('0x1a')](_0x9c60('0xf'),auth[_0x9c60('0x9')](),controller['removeTeams']);router['delete'](_0x9c60('0x11'),auth['isAuthenticated'](),controller[_0x9c60('0x1b')]);module[_0x9c60('0x1c')]=router;
\ No newline at end of file
index f4f5ffb..0e692e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2ef=['name','ENUM','beepall','roundrobin','sequelize','exports','STRING'];(function(_0x263e02,_0x104322){var _0x4545c4=function(_0x32d613){while(--_0x32d613){_0x263e02['push'](_0x263e02['shift']());}};_0x4545c4(++_0x104322);}(_0xe2ef,0x100));var _0xfe2e=function(_0x38f577,_0x35b7c2){_0x38f577=_0x38f577-0x0;var _0xee073c=_0xe2ef[_0x38f577];return _0xee073c;};'use strict';var Sequelize=require(_0xfe2e('0x0'));module[_0xfe2e('0x1')]={'name':{'type':Sequelize[_0xfe2e('0x2')],'unique':_0xfe2e('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xfe2e('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xfe2e('0x4')]('rrmemory',_0xfe2e('0x5'),_0xfe2e('0x6'))}};
\ No newline at end of file
+var _0x4d3f=['name','STRING','INTEGER','ENUM','beepall','roundrobin','sequelize'];(function(_0x5bbf70,_0x2f58b3){var _0x397a54=function(_0x4b1bc7){while(--_0x4b1bc7){_0x5bbf70['push'](_0x5bbf70['shift']());}};_0x397a54(++_0x2f58b3);}(_0x4d3f,0xed));var _0xf4d3=function(_0x375c7d,_0x3003d5){_0x375c7d=_0x375c7d-0x0;var _0x2d21a2=_0x4d3f[_0x375c7d];return _0x2d21a2;};'use strict';var Sequelize=require(_0xf4d3('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xf4d3('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xf4d3('0x2')]},'timeout':{'type':Sequelize[_0xf4d3('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xf4d3('0x4')]('rrmemory',_0xf4d3('0x5'),_0xf4d3('0x6'))}};
\ No newline at end of file
index 5006819..62cca45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb061=['set','Content-Range','then','destroy','get','OpenchannelQueues','UserProfileResource','error','stack','name','index','OpenchannelQueue','fieldName','key','map','keys','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','pick','filter','where','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','rawAttributes','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','findOne','UserOpenchannelQueue','OpenchannelQueueId','User','UserId','createdAt','format','%s/%s','SIP','openchannelPause','getTeams','Team','nolimit','addTeams','Agents','online','voicePause','interface','flatMap','transaction','each','findOrCreate','emit','userOpenchannelQueue:save','removeTeams','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?','push','toString','sequelize','QueryTypes','TeamId','includes','all','union','compact','ids','isEmpty','removeAgents','forEach','addAgents','omit','userOpenchannelQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','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','redis','localhost','./openchannelQueue.socket','sendStatus','status','end','json','offset','undefined','limit','count'];(function(_0x5311a1,_0x304912){var _0x2acb9f=function(_0x4803e7){while(--_0x4803e7){_0x5311a1['push'](_0x5311a1['shift']());}};_0x2acb9f(++_0x304912);}(_0xb061,0xf9));var _0x1b06=function(_0x186861,_0x2311c7){_0x186861=_0x186861-0x0;var _0x5be31f=_0xb061[_0x186861];return _0x5be31f;};'use strict';var emlformat=require(_0x1b06('0x0'));var rimraf=require(_0x1b06('0x1'));var zipdir=require(_0x1b06('0x2'));var jsonpatch=require(_0x1b06('0x3'));var rp=require(_0x1b06('0x4'));var moment=require(_0x1b06('0x5'));var BPromise=require(_0x1b06('0x6'));var Mustache=require(_0x1b06('0x7'));var util=require(_0x1b06('0x8'));var path=require(_0x1b06('0x9'));var sox=require(_0x1b06('0xa'));var csv=require(_0x1b06('0xb'));var ejs=require(_0x1b06('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1b06('0xd'));var squel=require('squel');var crypto=require(_0x1b06('0xe'));var jsforce=require(_0x1b06('0xf'));var deskjs=require(_0x1b06('0x10'));var toCsv=require(_0x1b06('0xb'));var querystring=require(_0x1b06('0x11'));var Papa=require(_0x1b06('0x12'));var Redis=require('ioredis');var authService=require(_0x1b06('0x13'));var qs=require(_0x1b06('0x14'));var as=require(_0x1b06('0x15'));var hardwareService=require(_0x1b06('0x16'));var logger=require(_0x1b06('0x17'))(_0x1b06('0x18'));var utils=require(_0x1b06('0x19'));var config=require(_0x1b06('0x1a'));var licenseUtil=require(_0x1b06('0x1b'));var db=require('../../mysqldb')['db'];config[_0x1b06('0x1c')]=_['defaults'](config[_0x1b06('0x1c')],{'host':_0x1b06('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1b06('0x1c')]));require(_0x1b06('0x1e'))['register'](socket);function respondWithStatusCode(_0x4068ae,_0x2fa550){_0x2fa550=_0x2fa550||0xcc;return function(_0x8c773){if(_0x8c773){return _0x4068ae[_0x1b06('0x1f')](_0x2fa550);}return _0x4068ae[_0x1b06('0x20')](_0x2fa550)[_0x1b06('0x21')]();};}function respondWithResult(_0x2a768f,_0x124d50){_0x124d50=_0x124d50||0xc8;return function(_0x422a5b){if(_0x422a5b){return _0x2a768f['status'](_0x124d50)[_0x1b06('0x22')](_0x422a5b);}};}function respondWithFilteredResult(_0x1466fb,_0x3ac4f9){return function(_0x47ca51){if(_0x47ca51){var _0x4654cf=typeof _0x3ac4f9[_0x1b06('0x23')]===_0x1b06('0x24')&&typeof _0x3ac4f9[_0x1b06('0x25')]===_0x1b06('0x24');var _0x28991a=_0x47ca51[_0x1b06('0x26')];var _0x3dbd1c=_0x4654cf?0x0:_0x3ac4f9[_0x1b06('0x23')];var _0x3d23fe=_0x4654cf?_0x47ca51[_0x1b06('0x26')]:_0x3ac4f9[_0x1b06('0x23')]+_0x3ac4f9[_0x1b06('0x25')];var _0x2c3d26;if(_0x3d23fe>=_0x28991a){_0x3d23fe=_0x28991a;_0x2c3d26=0xc8;}else{_0x2c3d26=0xce;}_0x1466fb[_0x1b06('0x20')](_0x2c3d26);return _0x1466fb[_0x1b06('0x27')](_0x1b06('0x28'),_0x3dbd1c+'-'+_0x3d23fe+'/'+_0x28991a)[_0x1b06('0x22')](_0x47ca51);}return null;};}function patchUpdates(_0x400c20){return function(_0x28eb4b){try{jsonpatch['apply'](_0x28eb4b,_0x400c20,!![]);}catch(_0x1fce92){return BPromise['reject'](_0x1fce92);}return _0x28eb4b['save']();};}function saveUpdates(_0x2d5e93,_0x3fc4b3){return function(_0x37aef5){if(_0x37aef5){return _0x37aef5['update'](_0x2d5e93)[_0x1b06('0x29')](function(_0x4b37ae){return _0x4b37ae;});}return null;};}function removeEntity(_0x278b68,_0x213d5c){return function(_0x540454){if(_0x540454){return _0x540454[_0x1b06('0x2a')]()['then'](function(){var _0x4ca115=_0x540454[_0x1b06('0x2b')]({'plain':!![]});var _0xc3cf50=_0x1b06('0x2c');return db[_0x1b06('0x2d')][_0x1b06('0x2a')]({'where':{'type':_0xc3cf50,'resourceId':_0x4ca115['id']}})['then'](function(){return _0x540454;});})[_0x1b06('0x29')](function(){_0x278b68['status'](0xcc)[_0x1b06('0x21')]();});}};}function handleEntityNotFound(_0x2c137c,_0x40dad0){return function(_0x2fdd65){if(!_0x2fdd65){_0x2c137c[_0x1b06('0x1f')](0x194);}return _0x2fdd65;};}function handleError(_0x464a7e,_0x4523d8){_0x4523d8=_0x4523d8||0x1f4;return function(_0x5adbf6){logger[_0x1b06('0x2e')](_0x5adbf6[_0x1b06('0x2f')]);if(_0x5adbf6[_0x1b06('0x30')]){delete _0x5adbf6[_0x1b06('0x30')];}_0x464a7e[_0x1b06('0x20')](_0x4523d8)['send'](_0x5adbf6);};}exports[_0x1b06('0x31')]=function(_0x19679b,_0x15b2d4){var _0x41e306={},_0x4e8688={},_0x7bdb50={'count':0x0,'rows':[]};var _0x1fba7a=_['map'](db[_0x1b06('0x32')]['rawAttributes'],function(_0x5de905){return{'name':_0x5de905[_0x1b06('0x33')],'type':_0x5de905['type'][_0x1b06('0x34')]};});_0x4e8688['model']=_[_0x1b06('0x35')](_0x1fba7a,_0x1b06('0x30'));_0x4e8688['query']=_[_0x1b06('0x36')](_0x19679b[_0x1b06('0x37')]);_0x4e8688[_0x1b06('0x38')]=_[_0x1b06('0x39')](_0x4e8688['model'],_0x4e8688['query']);_0x41e306['attributes']=_[_0x1b06('0x39')](_0x4e8688[_0x1b06('0x3a')],qs[_0x1b06('0x3b')](_0x19679b[_0x1b06('0x37')]['fields']));_0x41e306[_0x1b06('0x3c')]=_0x41e306[_0x1b06('0x3c')][_0x1b06('0x3d')]?_0x41e306[_0x1b06('0x3c')]:_0x4e8688[_0x1b06('0x3a')];if(!_0x19679b[_0x1b06('0x37')][_0x1b06('0x3e')]('nolimit')){_0x41e306[_0x1b06('0x25')]=qs['limit'](_0x19679b[_0x1b06('0x37')]['limit']);_0x41e306[_0x1b06('0x23')]=qs[_0x1b06('0x23')](_0x19679b[_0x1b06('0x37')][_0x1b06('0x23')]);}_0x41e306[_0x1b06('0x3f')]=qs[_0x1b06('0x40')](_0x19679b['query'][_0x1b06('0x40')]);_0x41e306['where']=qs['filters'](_[_0x1b06('0x41')](_0x19679b[_0x1b06('0x37')],_0x4e8688[_0x1b06('0x38')]),_0x1fba7a);if(_0x19679b[_0x1b06('0x37')][_0x1b06('0x42')]){_0x41e306[_0x1b06('0x43')]=_['merge'](_0x41e306[_0x1b06('0x43')],{'$or':_['map'](_0x1fba7a,function(_0xd5c759){if(_0xd5c759[_0x1b06('0x44')]!==_0x1b06('0x45')){var _0xe92d38={};_0xe92d38[_0xd5c759[_0x1b06('0x30')]]={'$like':'%'+_0x19679b[_0x1b06('0x37')]['filter']+'%'};return _0xe92d38;}})});}_0x41e306=_[_0x1b06('0x46')]({},_0x41e306,_0x19679b[_0x1b06('0x47')]);var _0x2dfaa4={'where':_0x41e306[_0x1b06('0x43')]};return db[_0x1b06('0x32')]['count'](_0x2dfaa4)[_0x1b06('0x29')](function(_0x5a28ea){_0x7bdb50[_0x1b06('0x26')]=_0x5a28ea;if(_0x19679b['query'][_0x1b06('0x48')]){_0x41e306[_0x1b06('0x49')]=[{'all':!![]}];}return db[_0x1b06('0x32')][_0x1b06('0x4a')](_0x41e306);})[_0x1b06('0x29')](function(_0x5eea88){_0x7bdb50[_0x1b06('0x4b')]=_0x5eea88;return _0x7bdb50;})['then'](respondWithFilteredResult(_0x15b2d4,_0x41e306))['catch'](handleError(_0x15b2d4,null));};exports[_0x1b06('0x4c')]=function(_0x51bb07,_0x47b518){var _0x120cf5={'raw':!![],'where':{'id':_0x51bb07['params']['id']}},_0x2e5dd4={};_0x2e5dd4[_0x1b06('0x3a')]=_['keys'](db[_0x1b06('0x32')][_0x1b06('0x4d')]);_0x2e5dd4['query']=_['keys'](_0x51bb07['query']);_0x2e5dd4[_0x1b06('0x38')]=_['intersection'](_0x2e5dd4[_0x1b06('0x3a')],_0x2e5dd4[_0x1b06('0x37')]);_0x120cf5[_0x1b06('0x3c')]=_[_0x1b06('0x39')](_0x2e5dd4[_0x1b06('0x3a')],qs['fields'](_0x51bb07[_0x1b06('0x37')]['fields']));_0x120cf5[_0x1b06('0x3c')]=_0x120cf5['attributes'][_0x1b06('0x3d')]?_0x120cf5['attributes']:_0x2e5dd4['model'];if(_0x51bb07['query'][_0x1b06('0x48')]){_0x120cf5[_0x1b06('0x49')]=[{'all':!![]}];}_0x120cf5=_[_0x1b06('0x46')]({},_0x120cf5,_0x51bb07[_0x1b06('0x47')]);return db[_0x1b06('0x32')][_0x1b06('0x4e')](_0x120cf5)['then'](handleEntityNotFound(_0x47b518,null))[_0x1b06('0x29')](respondWithResult(_0x47b518,null))[_0x1b06('0x4f')](handleError(_0x47b518,null));};exports['create']=function(_0x13f73f,_0xaf2213){return db['OpenchannelQueue'][_0x1b06('0x50')](_0x13f73f[_0x1b06('0x51')],{})['then'](function(_0x13eb64){var _0x29fe05=_0x13f73f[_0x1b06('0x52')][_0x1b06('0x2b')]({'plain':!![]});if(!_0x29fe05)throw new Error(_0x1b06('0x53'));if(_0x29fe05[_0x1b06('0x54')]===_0x1b06('0x52')){var _0x113e69=_0x13eb64[_0x1b06('0x2b')]({'plain':!![]});var _0x6c409e=_0x1b06('0x2c');return db[_0x1b06('0x55')]['find']({'where':{'name':_0x6c409e,'userProfileId':_0x29fe05[_0x1b06('0x56')]},'raw':!![]})[_0x1b06('0x29')](function(_0x4143f1){if(_0x4143f1&&_0x4143f1[_0x1b06('0x57')]===0x0){return db[_0x1b06('0x2d')][_0x1b06('0x50')]({'name':_0x113e69['name'],'resourceId':_0x113e69['id'],'type':_0x4143f1[_0x1b06('0x30')],'sectionId':_0x4143f1['id']},{})[_0x1b06('0x29')](function(){return _0x13eb64;});}else{return _0x13eb64;}})[_0x1b06('0x4f')](function(_0x4f7be4){logger[_0x1b06('0x2e')](_0x1b06('0x58'),_0x4f7be4);throw _0x4f7be4;});}return _0x13eb64;})['then'](respondWithResult(_0xaf2213,0xc9))['catch'](handleError(_0xaf2213,null));};exports['update']=function(_0x4670d2,_0x92ba45){if(_0x4670d2[_0x1b06('0x51')]['id']){delete _0x4670d2[_0x1b06('0x51')]['id'];}return db['OpenchannelQueue'][_0x1b06('0x4e')]({'where':{'id':_0x4670d2[_0x1b06('0x59')]['id']}})[_0x1b06('0x29')](handleEntityNotFound(_0x92ba45,null))[_0x1b06('0x29')](saveUpdates(_0x4670d2[_0x1b06('0x51')],null))[_0x1b06('0x29')](respondWithResult(_0x92ba45,null))[_0x1b06('0x4f')](handleError(_0x92ba45,null));};exports[_0x1b06('0x2a')]=function(_0x47db74,_0x53a802){return db[_0x1b06('0x32')][_0x1b06('0x4e')]({'where':{'id':_0x47db74[_0x1b06('0x59')]['id']}})[_0x1b06('0x29')](handleEntityNotFound(_0x53a802,null))[_0x1b06('0x29')](removeEntity(_0x53a802,null))[_0x1b06('0x4f')](handleError(_0x53a802,null));};exports[_0x1b06('0x5a')]=function(_0x156515,_0x1343b0){return db['OpenchannelQueue'][_0x1b06('0x5a')]()[_0x1b06('0x29')](respondWithResult(_0x1343b0,null))['catch'](handleError(_0x1343b0,null));};exports[_0x1b06('0x5b')]=function(_0x1bf6e3,_0xb715e,_0x56acdd){var _0x223238={'raw':!![],'where':{}},_0x25c5ec={},_0x6ddad4;return db[_0x1b06('0x32')][_0x1b06('0x5c')]({'where':{'id':_0x1bf6e3[_0x1b06('0x59')]['id']}})[_0x1b06('0x29')](handleEntityNotFound(_0xb715e,null))[_0x1b06('0x29')](function(_0x1184b1){if(_0x1184b1){_0x6ddad4=_0x1184b1[_0x1b06('0x2b')]({'plain':!![]});_0x25c5ec['model']=_[_0x1b06('0x36')](db[_0x1b06('0x5d')][_0x1b06('0x4d')]);_0x25c5ec[_0x1b06('0x37')]=_[_0x1b06('0x36')](_0x1bf6e3[_0x1b06('0x37')]);_0x25c5ec['filters']=_[_0x1b06('0x39')](_0x25c5ec['model'],_0x25c5ec[_0x1b06('0x37')]);_0x223238['attributes']=_[_0x1b06('0x39')](_0x25c5ec[_0x1b06('0x3a')],qs[_0x1b06('0x3b')](_0x1bf6e3[_0x1b06('0x37')]['fields']));_0x223238['attributes']=_0x223238['attributes'][_0x1b06('0x3d')]?_0x223238[_0x1b06('0x3c')]:_0x25c5ec[_0x1b06('0x3a')];if(!_0x1bf6e3[_0x1b06('0x37')][_0x1b06('0x3e')]('nolimit')){_0x223238[_0x1b06('0x25')]=qs[_0x1b06('0x25')](_0x1bf6e3[_0x1b06('0x37')][_0x1b06('0x25')]);_0x223238[_0x1b06('0x23')]=qs[_0x1b06('0x23')](_0x1bf6e3[_0x1b06('0x37')][_0x1b06('0x23')]);}_0x223238[_0x1b06('0x3f')]=qs[_0x1b06('0x40')](_0x1bf6e3[_0x1b06('0x37')][_0x1b06('0x40')]);_0x223238[_0x1b06('0x43')]=qs[_0x1b06('0x38')](_[_0x1b06('0x41')](_0x1bf6e3[_0x1b06('0x37')],_0x25c5ec[_0x1b06('0x38')]));_0x223238['where'][_0x1b06('0x5e')]=_0x1184b1['id'];if(_0x1bf6e3[_0x1b06('0x37')][_0x1b06('0x42')]){_0x223238[_0x1b06('0x43')]=_['merge'](_0x223238[_0x1b06('0x43')],{'$or':_['map'](_0x223238[_0x1b06('0x3c')],function(_0x1d24d4){var _0xccbba2={};_0xccbba2[_0x1d24d4]={'$like':'%'+_0x1bf6e3[_0x1b06('0x37')][_0x1b06('0x42')]+'%'};return _0xccbba2;})});}_0x223238=_['merge']({},_0x223238,_0x1bf6e3['options']);return db[_0x1b06('0x5d')][_0x1b06('0x4a')](_0x223238);}})['then'](function(_0x2095b0){if(_0x2095b0){return db[_0x1b06('0x5f')]['findAndCountAll']({'where':{'id':_[_0x1b06('0x35')](_0x2095b0,_0x1b06('0x60')),'role':'agent'},'attributes':['id',_0x1b06('0x30'),'openchannelPause','updatedAt',_0x1b06('0x61')]});}})[_0x1b06('0x29')](function(_0x345fda){if(_0x345fda){return{'count':_0x345fda['count'],'rows':_[_0x1b06('0x35')](_0x345fda[_0x1b06('0x4b')],function(_0x21de47){return{'membername':_0x21de47['name'],'UserId':_0x21de47['id'],'queue_name':_0x6ddad4[_0x1b06('0x30')],'OpenchannelQueueId':_0x6ddad4['id'],'interface':util[_0x1b06('0x62')](_0x1b06('0x63'),_0x1b06('0x64'),_0x21de47[_0x1b06('0x30')]),'penalty':0x0,'paused':_0x21de47[_0x1b06('0x65')],'createdAt':_0x21de47[_0x1b06('0x61')],'updatedAt':_0x21de47['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0xb715e,_0x223238))['catch'](handleError(_0xb715e,null));};exports[_0x1b06('0x66')]=function(_0x67f062,_0x376674,_0x14bd01){var _0x16edf7={};var _0x562646={};var _0x218b35;var _0x565f3f;return db[_0x1b06('0x32')][_0x1b06('0x5c')]({'where':{'id':_0x67f062[_0x1b06('0x59')]['id']}})[_0x1b06('0x29')](handleEntityNotFound(_0x376674,null))['then'](function(_0x2c2001){if(_0x2c2001){_0x218b35=_0x2c2001;_0x562646[_0x1b06('0x3a')]=_[_0x1b06('0x36')](db[_0x1b06('0x67')][_0x1b06('0x4d')]);_0x562646[_0x1b06('0x37')]=_['keys'](_0x67f062[_0x1b06('0x37')]);_0x562646[_0x1b06('0x38')]=_[_0x1b06('0x39')](_0x562646['model'],_0x562646[_0x1b06('0x37')]);_0x16edf7[_0x1b06('0x3c')]=_[_0x1b06('0x39')](_0x562646[_0x1b06('0x3a')],qs[_0x1b06('0x3b')](_0x67f062[_0x1b06('0x37')][_0x1b06('0x3b')]));_0x16edf7[_0x1b06('0x3c')]=_0x16edf7['attributes'][_0x1b06('0x3d')]?_0x16edf7[_0x1b06('0x3c')]:_0x562646[_0x1b06('0x3a')];_0x16edf7[_0x1b06('0x3f')]=qs[_0x1b06('0x40')](_0x67f062[_0x1b06('0x37')][_0x1b06('0x40')]);_0x16edf7[_0x1b06('0x43')]=qs[_0x1b06('0x38')](_['pick'](_0x67f062['query'],_0x562646[_0x1b06('0x38')]));if(_0x67f062[_0x1b06('0x37')][_0x1b06('0x42')]){_0x16edf7[_0x1b06('0x43')]=_[_0x1b06('0x46')](_0x16edf7[_0x1b06('0x43')],{'$or':_[_0x1b06('0x35')](_0x16edf7['attributes'],function(_0x2a47c0){var _0x3f9d98={};_0x3f9d98[_0x2a47c0]={'$like':'%'+_0x67f062[_0x1b06('0x37')][_0x1b06('0x42')]+'%'};return _0x3f9d98;})});}_0x16edf7=_[_0x1b06('0x46')]({},_0x16edf7,_0x67f062['options']);return _0x218b35[_0x1b06('0x66')](_0x16edf7);}})[_0x1b06('0x29')](function(_0x5ba5bb){if(_0x5ba5bb){_0x565f3f=_0x5ba5bb[_0x1b06('0x3d')];if(!_0x67f062[_0x1b06('0x37')][_0x1b06('0x3e')](_0x1b06('0x68'))){_0x16edf7[_0x1b06('0x25')]=qs['limit'](_0x67f062[_0x1b06('0x37')][_0x1b06('0x25')]);_0x16edf7['offset']=qs[_0x1b06('0x23')](_0x67f062[_0x1b06('0x37')]['offset']);}return _0x218b35['getTeams'](_0x16edf7);}})['then'](function(_0x38cdd8){if(_0x38cdd8){return _0x38cdd8?{'count':_0x565f3f,'rows':_0x38cdd8}:null;}})[_0x1b06('0x29')](respondWithResult(_0x376674,null))[_0x1b06('0x4f')](handleError(_0x376674,null));};exports[_0x1b06('0x69')]=function(_0x142bb0,_0x25fdd4,_0x3a0c52){var _0xb39902=_0x142bb0[_0x1b06('0x51')]['ids'];return db['Team'][_0x1b06('0x4a')]({'where':{'id':_0xb39902},'attributes':['id'],'include':[{'model':db[_0x1b06('0x5f')],'as':_0x1b06('0x6a'),'attributes':['id','name',_0x1b06('0x6b'),_0x1b06('0x6c'),_0x1b06('0x6d')],'raw':!![]}]})[_0x1b06('0x29')](function(_0x409fac){if(_0x409fac){var _0x3d1fd3=_[_0x1b06('0x6e')](_0x409fac,function(_0x5211e6){var _0x2849a3=_0x5211e6[_0x1b06('0x2b')]({'plain':!![]});return _0x2849a3['Agents'];});return db[_0x1b06('0x32')]['find']({'where':{'id':_0x142bb0[_0x1b06('0x59')]['id']}})[_0x1b06('0x29')](function(_0x3d29d9){return db['sequelize'][_0x1b06('0x6f')](function(_0x4b6782){return _0x3d29d9[_0x1b06('0x69')](_0xb39902,{'transaction':_0x4b6782})['then'](function(){return BPromise[_0x1b06('0x70')](_0x3d1fd3,function(_0x3ad93e){return db[_0x1b06('0x5d')][_0x1b06('0x71')]({'where':{'UserId':_0x3ad93e['id'],'OpenchannelQueueId':_0x142bb0['params']['id']},'transaction':_0x4b6782});});})['then'](function(){_0x3d1fd3['forEach'](function(_0x143d42){socket[_0x1b06('0x72')](_0x1b06('0x73'),{'UserId':_0x143d42['id'],'OpenchannelQueueId':_0x3d29d9['id']});});});});});}})[_0x1b06('0x29')](respondWithStatusCode(_0x25fdd4,null))[_0x1b06('0x4f')](handleError(_0x25fdd4,null));};exports[_0x1b06('0x74')]=function(_0x2983a7,_0x487c60,_0x15f908){return db[_0x1b06('0x67')][_0x1b06('0x4a')]({'where':{'id':_0x2983a7[_0x1b06('0x37')]['ids']},'attributes':['id'],'include':[{'model':db[_0x1b06('0x5f')],'as':_0x1b06('0x6a'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x487c60,null))[_0x1b06('0x29')](function(_0x2bc8f0){var _0x1346ed=_[_0x1b06('0x35')](_0x2bc8f0,'id');var _0x280ded=[];var _0x44a1e5=[];var _0x12a440=squel['select']();_0x12a440[_0x1b06('0x75')](_0x1b06('0x76'))[_0x1b06('0x77')](_0x1b06('0x78'),'tq')[_0x1b06('0x79')](_0x1b06('0x7a'),'ut',_0x1b06('0x7b'))[_0x1b06('0x43')](_0x1b06('0x7c'),_0x2983a7[_0x1b06('0x59')]['id']);for(var _0x19e830=0x0;_0x19e830<_0x2bc8f0[_0x1b06('0x3d')];_0x19e830+=0x1){let _0xd938c7=_0x2bc8f0[_0x19e830];for(var _0x53d582=0x0;_0x53d582<_0xd938c7[_0x1b06('0x6a')]['length'];_0x53d582+=0x1){let _0x3ac6e3=_0xd938c7[_0x1b06('0x6a')][_0x53d582];var _0x255ad5=_0x12a440[_0x1b06('0x7d')]();_0x255ad5[_0x1b06('0x43')](_0x1b06('0x7e'),_0x3ac6e3['id']);_0x44a1e5[_0x1b06('0x7f')](db['sequelize']['query'](_0x255ad5[_0x1b06('0x80')](),{'type':db[_0x1b06('0x81')][_0x1b06('0x82')]['SELECT']})[_0x1b06('0x29')](function(_0x1695d0){if(_0x1695d0['length']===0x1){return _0x3ac6e3['id'];}else{var _0x494261=_['every'](_[_0x1b06('0x35')](_0x1695d0,_0x1b06('0x83')),function(_0x199b91){return _[_0x1b06('0x84')](_0x1346ed,_0x199b91);});if(_0x494261){return _0x3ac6e3['id'];}}}));}}return BPromise[_0x1b06('0x85')](_0x44a1e5)[_0x1b06('0x29')](function(_0x352fd1){_0x280ded=_(_0x280ded)[_0x1b06('0x86')](_0x352fd1)[_0x1b06('0x87')]()['value']();return db[_0x1b06('0x32')]['find']({'where':{'id':_0x2983a7['params']['id']}})['then'](function(_0x16ffcf){return db[_0x1b06('0x81')][_0x1b06('0x6f')](function(_0x31c4e1){return _0x16ffcf['removeTeams'](_0x2983a7[_0x1b06('0x37')][_0x1b06('0x88')],{'transaction':_0x31c4e1})[_0x1b06('0x29')](function(){if(!_[_0x1b06('0x89')](_0x280ded)){return _0x16ffcf[_0x1b06('0x8a')](_0x280ded,{'transaction':_0x31c4e1});}})['then'](function(){_0x280ded[_0x1b06('0x8b')](function(_0x2892b5){socket[_0x1b06('0x72')]('userOpenchannelQueue:remove',{'UserId':_0x2892b5,'OpenchannelQueueId':_0x16ffcf['id']});});});});});});})[_0x1b06('0x29')](respondWithStatusCode(_0x487c60,null))[_0x1b06('0x4f')](handleError(_0x487c60,null));};exports[_0x1b06('0x8c')]=function(_0xf01c2e,_0x5a6f80,_0x471293){return db[_0x1b06('0x32')][_0x1b06('0x4e')]({'where':{'id':_0xf01c2e[_0x1b06('0x59')]['id']}})[_0x1b06('0x29')](handleEntityNotFound(_0x5a6f80,null))[_0x1b06('0x29')](function(_0x147829){if(_0x147829){return _0x147829['addAgents'](_0xf01c2e[_0x1b06('0x51')][_0x1b06('0x88')],_[_0x1b06('0x8d')](_0xf01c2e[_0x1b06('0x51')],['ids','id'])||{})['spread'](function(_0x58f52){for(var _0x55213a=0x0;_0x55213a<_0xf01c2e['body'][_0x1b06('0x88')][_0x1b06('0x3d')];_0x55213a+=0x1){socket[_0x1b06('0x72')](_0x1b06('0x73'),{'UserId':Number(_0xf01c2e['body'][_0x1b06('0x88')][_0x55213a]),'OpenchannelQueueId':Number(_0xf01c2e[_0x1b06('0x59')]['id'])});}return _0x58f52;});}})[_0x1b06('0x29')](respondWithResult(_0x5a6f80,null))[_0x1b06('0x4f')](handleError(_0x5a6f80,null));};exports[_0x1b06('0x8a')]=function(_0x17c944,_0x3f41c2,_0x4ef85d){return db[_0x1b06('0x32')][_0x1b06('0x4e')]({'where':{'id':_0x17c944[_0x1b06('0x59')]['id']}})['then'](handleEntityNotFound(_0x3f41c2,null))[_0x1b06('0x29')](function(_0x13a1aa){if(_0x13a1aa){return _0x13a1aa[_0x1b06('0x8a')](_0x17c944[_0x1b06('0x37')][_0x1b06('0x88')])[_0x1b06('0x29')](function(){if(_['isArray'](_0x17c944[_0x1b06('0x37')][_0x1b06('0x88')])){for(var _0x2183df=0x0;_0x2183df<_0x17c944[_0x1b06('0x37')][_0x1b06('0x88')][_0x1b06('0x3d')];_0x2183df+=0x1){socket[_0x1b06('0x72')](_0x1b06('0x8e'),{'UserId':Number(_0x17c944[_0x1b06('0x37')][_0x1b06('0x88')][_0x2183df]),'OpenchannelQueueId':Number(_0x17c944[_0x1b06('0x59')]['id'])});}}else{socket[_0x1b06('0x72')](_0x1b06('0x8e'),{'UserId':Number(_0x17c944[_0x1b06('0x37')][_0x1b06('0x88')]),'OpenchannelQueueId':Number(_0x17c944['params']['id'])});}});}})[_0x1b06('0x29')](respondWithStatusCode(_0x3f41c2,null))[_0x1b06('0x4f')](handleError(_0x3f41c2,null));};exports['getAgents']=function(_0x423e2d,_0x151b24,_0x57c8be){var _0x3eb2f2={};var _0x451822={};var _0x13d681;var _0x2495d3;return db[_0x1b06('0x32')]['findOne']({'where':{'id':_0x423e2d['params']['id']}})[_0x1b06('0x29')](handleEntityNotFound(_0x151b24,null))[_0x1b06('0x29')](function(_0x415eec){if(_0x415eec){_0x13d681=_0x415eec;_0x451822['model']=_[_0x1b06('0x36')](db[_0x1b06('0x5f')]['rawAttributes']);_0x451822['query']=_[_0x1b06('0x36')](_0x423e2d['query']);_0x451822[_0x1b06('0x38')]=_[_0x1b06('0x39')](_0x451822[_0x1b06('0x3a')],_0x451822[_0x1b06('0x37')]);_0x3eb2f2[_0x1b06('0x3c')]=_[_0x1b06('0x39')](_0x451822[_0x1b06('0x3a')],qs['fields'](_0x423e2d['query'][_0x1b06('0x3b')]));_0x3eb2f2[_0x1b06('0x3c')]=_0x3eb2f2[_0x1b06('0x3c')][_0x1b06('0x3d')]?_0x3eb2f2[_0x1b06('0x3c')]:_0x451822['model'];_0x3eb2f2[_0x1b06('0x3f')]=qs[_0x1b06('0x40')](_0x423e2d['query']['sort']);_0x3eb2f2[_0x1b06('0x43')]=qs['filters'](_[_0x1b06('0x41')](_0x423e2d[_0x1b06('0x37')],_0x451822[_0x1b06('0x38')]));if(_0x423e2d[_0x1b06('0x37')]['filter']){_0x3eb2f2[_0x1b06('0x43')]=_['merge'](_0x3eb2f2[_0x1b06('0x43')],{'$or':_[_0x1b06('0x35')](_0x3eb2f2['attributes'],function(_0x18529f){var _0x39d5a7={};_0x39d5a7[_0x18529f]={'$like':'%'+_0x423e2d[_0x1b06('0x37')][_0x1b06('0x42')]+'%'};return _0x39d5a7;})});}_0x3eb2f2=_['merge']({},_0x3eb2f2,_0x423e2d[_0x1b06('0x47')]);return _0x13d681[_0x1b06('0x8f')](_0x3eb2f2);}})[_0x1b06('0x29')](function(_0x1c3bf7){if(_0x1c3bf7){_0x2495d3=_0x1c3bf7['length'];if(!_0x423e2d['query'][_0x1b06('0x3e')](_0x1b06('0x68'))){_0x3eb2f2[_0x1b06('0x25')]=qs[_0x1b06('0x25')](_0x423e2d[_0x1b06('0x37')][_0x1b06('0x25')]);_0x3eb2f2[_0x1b06('0x23')]=qs[_0x1b06('0x23')](_0x423e2d[_0x1b06('0x37')]['offset']);}return _0x13d681[_0x1b06('0x8f')](_0x3eb2f2);}})[_0x1b06('0x29')](function(_0xff610e){if(_0xff610e){return _0xff610e?{'count':_0x2495d3,'rows':_0xff610e}:null;}})['then'](respondWithResult(_0x151b24,null))[_0x1b06('0x4f')](handleError(_0x151b24,null));};
\ No newline at end of file
+var _0x849e=['Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','describe','getMembers','findOne','UserOpenchannelQueue','OpenchannelQueueId','User','findAndCountAll','openchannelPause','updatedAt','format','SIP','createdAt','getTeams','ids','Agents','online','voicePause','interface','flatMap','transaction','addTeams','each','findOrCreate','emit','userOpenchannelQueue:save','removeTeams','Team','field','team_has_openchannel_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','sequelize','QueryTypes','SELECT','every','TeamId','includes','all','compact','value','isEmpty','removeAgents','addAgents','omit','spread','getAgents','eml-format','zip-dir','moment','bluebird','mustache','util','ejs','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','then','destroy','get','OpenchannelQueues','UserProfileResource','error','stack','name','send','index','map','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','include','OpenchannelQueue','findAll','rows','show','params','rawAttributes','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','autoAssociation','catch'];(function(_0x5100bc,_0x35e471){var _0x1d6ec6=function(_0x24795f){while(--_0x24795f){_0x5100bc['push'](_0x5100bc['shift']());}};_0x1d6ec6(++_0x35e471);}(_0x849e,0x153));var _0xe849=function(_0x4f6309,_0xe71e00){_0x4f6309=_0x4f6309-0x0;var _0x1c43af=_0x849e[_0x4f6309];return _0x1c43af;};'use strict';var emlformat=require(_0xe849('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe849('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xe849('0x2'));var BPromise=require(_0xe849('0x3'));var Mustache=require(_0xe849('0x4'));var util=require(_0xe849('0x5'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xe849('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xe849('0x7'));var crypto=require('crypto');var jsforce=require(_0xe849('0x8'));var deskjs=require(_0xe849('0x9'));var toCsv=require('to-csv');var querystring=require(_0xe849('0xa'));var Papa=require(_0xe849('0xb'));var Redis=require(_0xe849('0xc'));var authService=require(_0xe849('0xd'));var qs=require(_0xe849('0xe'));var as=require(_0xe849('0xf'));var hardwareService=require(_0xe849('0x10'));var logger=require(_0xe849('0x11'))(_0xe849('0x12'));var utils=require(_0xe849('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xe849('0x14'));var db=require(_0xe849('0x15'))['db'];config[_0xe849('0x16')]=_[_0xe849('0x17')](config[_0xe849('0x16')],{'host':_0xe849('0x18'),'port':0x18eb});var socket=require(_0xe849('0x19'))(new Redis(config[_0xe849('0x16')]));require('./openchannelQueue.socket')[_0xe849('0x1a')](socket);function respondWithStatusCode(_0x5139d8,_0x56f853){_0x56f853=_0x56f853||0xcc;return function(_0x46f410){if(_0x46f410){return _0x5139d8[_0xe849('0x1b')](_0x56f853);}return _0x5139d8[_0xe849('0x1c')](_0x56f853)[_0xe849('0x1d')]();};}function respondWithResult(_0x36ca4a,_0x24b0ff){_0x24b0ff=_0x24b0ff||0xc8;return function(_0x147a93){if(_0x147a93){return _0x36ca4a[_0xe849('0x1c')](_0x24b0ff)[_0xe849('0x1e')](_0x147a93);}};}function respondWithFilteredResult(_0x1c59ed,_0x7943fe){return function(_0x57da14){if(_0x57da14){var _0x3be0c6=typeof _0x7943fe['offset']===_0xe849('0x1f')&&typeof _0x7943fe[_0xe849('0x20')]===_0xe849('0x1f');var _0x3bb7f9=_0x57da14[_0xe849('0x21')];var _0x49c5ec=_0x3be0c6?0x0:_0x7943fe[_0xe849('0x22')];var _0x2f8488=_0x3be0c6?_0x57da14[_0xe849('0x21')]:_0x7943fe[_0xe849('0x22')]+_0x7943fe['limit'];var _0x279534;if(_0x2f8488>=_0x3bb7f9){_0x2f8488=_0x3bb7f9;_0x279534=0xc8;}else{_0x279534=0xce;}_0x1c59ed['status'](_0x279534);return _0x1c59ed[_0xe849('0x23')](_0xe849('0x24'),_0x49c5ec+'-'+_0x2f8488+'/'+_0x3bb7f9)['json'](_0x57da14);}return null;};}function patchUpdates(_0xf6549a){return function(_0x1a83d0){try{jsonpatch[_0xe849('0x25')](_0x1a83d0,_0xf6549a,!![]);}catch(_0x43f179){return BPromise[_0xe849('0x26')](_0x43f179);}return _0x1a83d0['save']();};}function saveUpdates(_0x1a180f,_0x362e41){return function(_0x293ade){if(_0x293ade){return _0x293ade['update'](_0x1a180f)[_0xe849('0x27')](function(_0x281361){return _0x281361;});}return null;};}function removeEntity(_0xe25644,_0x5bd1d3){return function(_0x3c8999){if(_0x3c8999){return _0x3c8999[_0xe849('0x28')]()[_0xe849('0x27')](function(){var _0x5074ee=_0x3c8999[_0xe849('0x29')]({'plain':!![]});var _0x280750=_0xe849('0x2a');return db[_0xe849('0x2b')][_0xe849('0x28')]({'where':{'type':_0x280750,'resourceId':_0x5074ee['id']}})['then'](function(){return _0x3c8999;});})[_0xe849('0x27')](function(){_0xe25644[_0xe849('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x591799,_0x2e255d){return function(_0x2177d2){if(!_0x2177d2){_0x591799[_0xe849('0x1b')](0x194);}return _0x2177d2;};}function handleError(_0x24cf6c,_0x11a6f2){_0x11a6f2=_0x11a6f2||0x1f4;return function(_0x4fa2ef){logger[_0xe849('0x2c')](_0x4fa2ef[_0xe849('0x2d')]);if(_0x4fa2ef['name']){delete _0x4fa2ef[_0xe849('0x2e')];}_0x24cf6c['status'](_0x11a6f2)[_0xe849('0x2f')](_0x4fa2ef);};}exports[_0xe849('0x30')]=function(_0x5a02de,_0x7044c3){var _0x532ba1={},_0x581f16={},_0x46b36e={'count':0x0,'rows':[]};var _0x455d4b=_[_0xe849('0x31')](db['OpenchannelQueue']['rawAttributes'],function(_0xd920c6){return{'name':_0xd920c6[_0xe849('0x32')],'type':_0xd920c6[_0xe849('0x33')][_0xe849('0x34')]};});_0x581f16['model']=_[_0xe849('0x31')](_0x455d4b,'name');_0x581f16[_0xe849('0x35')]=_[_0xe849('0x36')](_0x5a02de[_0xe849('0x35')]);_0x581f16[_0xe849('0x37')]=_[_0xe849('0x38')](_0x581f16[_0xe849('0x39')],_0x581f16[_0xe849('0x35')]);_0x532ba1[_0xe849('0x3a')]=_[_0xe849('0x38')](_0x581f16[_0xe849('0x39')],qs['fields'](_0x5a02de[_0xe849('0x35')][_0xe849('0x3b')]));_0x532ba1[_0xe849('0x3a')]=_0x532ba1['attributes'][_0xe849('0x3c')]?_0x532ba1['attributes']:_0x581f16[_0xe849('0x39')];if(!_0x5a02de['query'][_0xe849('0x3d')](_0xe849('0x3e'))){_0x532ba1[_0xe849('0x20')]=qs[_0xe849('0x20')](_0x5a02de['query'][_0xe849('0x20')]);_0x532ba1[_0xe849('0x22')]=qs[_0xe849('0x22')](_0x5a02de[_0xe849('0x35')][_0xe849('0x22')]);}_0x532ba1[_0xe849('0x3f')]=qs[_0xe849('0x40')](_0x5a02de[_0xe849('0x35')][_0xe849('0x40')]);_0x532ba1['where']=qs[_0xe849('0x37')](_[_0xe849('0x41')](_0x5a02de['query'],_0x581f16[_0xe849('0x37')]),_0x455d4b);if(_0x5a02de[_0xe849('0x35')][_0xe849('0x42')]){_0x532ba1['where']=_[_0xe849('0x43')](_0x532ba1[_0xe849('0x44')],{'$or':_[_0xe849('0x31')](_0x455d4b,function(_0x42251c){if(_0x42251c[_0xe849('0x33')]!==_0xe849('0x45')){var _0x27c4fb={};_0x27c4fb[_0x42251c[_0xe849('0x2e')]]={'$like':'%'+_0x5a02de[_0xe849('0x35')][_0xe849('0x42')]+'%'};return _0x27c4fb;}})});}_0x532ba1=_['merge']({},_0x532ba1,_0x5a02de[_0xe849('0x46')]);var _0x519d44={'where':_0x532ba1['where']};return db['OpenchannelQueue'][_0xe849('0x21')](_0x519d44)['then'](function(_0x555dca){_0x46b36e[_0xe849('0x21')]=_0x555dca;if(_0x5a02de[_0xe849('0x35')][_0xe849('0x47')]){_0x532ba1[_0xe849('0x48')]=[{'all':!![]}];}return db[_0xe849('0x49')][_0xe849('0x4a')](_0x532ba1);})[_0xe849('0x27')](function(_0x2623d1){_0x46b36e[_0xe849('0x4b')]=_0x2623d1;return _0x46b36e;})[_0xe849('0x27')](respondWithFilteredResult(_0x7044c3,_0x532ba1))['catch'](handleError(_0x7044c3,null));};exports[_0xe849('0x4c')]=function(_0x2e5d58,_0x58de56){var _0x441af5={'raw':!![],'where':{'id':_0x2e5d58[_0xe849('0x4d')]['id']}},_0x58d748={};_0x58d748[_0xe849('0x39')]=_[_0xe849('0x36')](db[_0xe849('0x49')][_0xe849('0x4e')]);_0x58d748[_0xe849('0x35')]=_[_0xe849('0x36')](_0x2e5d58[_0xe849('0x35')]);_0x58d748[_0xe849('0x37')]=_[_0xe849('0x38')](_0x58d748[_0xe849('0x39')],_0x58d748[_0xe849('0x35')]);_0x441af5['attributes']=_['intersection'](_0x58d748[_0xe849('0x39')],qs[_0xe849('0x3b')](_0x2e5d58[_0xe849('0x35')][_0xe849('0x3b')]));_0x441af5[_0xe849('0x3a')]=_0x441af5['attributes'][_0xe849('0x3c')]?_0x441af5[_0xe849('0x3a')]:_0x58d748['model'];if(_0x2e5d58[_0xe849('0x35')][_0xe849('0x47')]){_0x441af5[_0xe849('0x48')]=[{'all':!![]}];}_0x441af5=_['merge']({},_0x441af5,_0x2e5d58[_0xe849('0x46')]);return db[_0xe849('0x49')][_0xe849('0x4f')](_0x441af5)['then'](handleEntityNotFound(_0x58de56,null))['then'](respondWithResult(_0x58de56,null))['catch'](handleError(_0x58de56,null));};exports['create']=function(_0x59388a,_0x372bff){return db[_0xe849('0x49')][_0xe849('0x50')](_0x59388a['body'],{})[_0xe849('0x27')](function(_0x582ac3){var _0x3167a=_0x59388a['user'][_0xe849('0x29')]({'plain':!![]});if(!_0x3167a)throw new Error(_0xe849('0x51'));if(_0x3167a[_0xe849('0x52')]===_0xe849('0x53')){var _0x2d0d9d=_0x582ac3['get']({'plain':!![]});var _0x285dc7='OpenchannelQueues';return db['UserProfileSection'][_0xe849('0x4f')]({'where':{'name':_0x285dc7,'userProfileId':_0x3167a[_0xe849('0x54')]},'raw':!![]})['then'](function(_0x3c996c){if(_0x3c996c&&_0x3c996c[_0xe849('0x55')]===0x0){return db['UserProfileResource'][_0xe849('0x50')]({'name':_0x2d0d9d[_0xe849('0x2e')],'resourceId':_0x2d0d9d['id'],'type':_0x3c996c['name'],'sectionId':_0x3c996c['id']},{})['then'](function(){return _0x582ac3;});}else{return _0x582ac3;}})[_0xe849('0x56')](function(_0x5a4ca4){logger[_0xe849('0x2c')](_0xe849('0x57'),_0x5a4ca4);throw _0x5a4ca4;});}return _0x582ac3;})[_0xe849('0x27')](respondWithResult(_0x372bff,0xc9))['catch'](handleError(_0x372bff,null));};exports[_0xe849('0x58')]=function(_0x44acf7,_0x270fcb){if(_0x44acf7[_0xe849('0x59')]['id']){delete _0x44acf7[_0xe849('0x59')]['id'];}return db[_0xe849('0x49')][_0xe849('0x4f')]({'where':{'id':_0x44acf7[_0xe849('0x4d')]['id']}})[_0xe849('0x27')](handleEntityNotFound(_0x270fcb,null))[_0xe849('0x27')](saveUpdates(_0x44acf7[_0xe849('0x59')],null))[_0xe849('0x27')](respondWithResult(_0x270fcb,null))[_0xe849('0x56')](handleError(_0x270fcb,null));};exports[_0xe849('0x28')]=function(_0x2ae936,_0x3c38ee){return db[_0xe849('0x49')][_0xe849('0x4f')]({'where':{'id':_0x2ae936[_0xe849('0x4d')]['id']}})['then'](handleEntityNotFound(_0x3c38ee,null))[_0xe849('0x27')](removeEntity(_0x3c38ee,null))[_0xe849('0x56')](handleError(_0x3c38ee,null));};exports[_0xe849('0x5a')]=function(_0x4f1cb9,_0x39878b){return db[_0xe849('0x49')][_0xe849('0x5a')]()[_0xe849('0x27')](respondWithResult(_0x39878b,null))[_0xe849('0x56')](handleError(_0x39878b,null));};exports[_0xe849('0x5b')]=function(_0x38844e,_0x76afd,_0xda16f3){var _0x4bac04={'raw':!![],'where':{}},_0x5c7883={},_0x240338;return db[_0xe849('0x49')][_0xe849('0x5c')]({'where':{'id':_0x38844e['params']['id']}})['then'](handleEntityNotFound(_0x76afd,null))[_0xe849('0x27')](function(_0x1d2ed0){if(_0x1d2ed0){_0x240338=_0x1d2ed0[_0xe849('0x29')]({'plain':!![]});_0x5c7883['model']=_[_0xe849('0x36')](db[_0xe849('0x5d')][_0xe849('0x4e')]);_0x5c7883[_0xe849('0x35')]=_[_0xe849('0x36')](_0x38844e['query']);_0x5c7883[_0xe849('0x37')]=_['intersection'](_0x5c7883['model'],_0x5c7883[_0xe849('0x35')]);_0x4bac04[_0xe849('0x3a')]=_['intersection'](_0x5c7883['model'],qs['fields'](_0x38844e[_0xe849('0x35')][_0xe849('0x3b')]));_0x4bac04['attributes']=_0x4bac04[_0xe849('0x3a')][_0xe849('0x3c')]?_0x4bac04[_0xe849('0x3a')]:_0x5c7883['model'];if(!_0x38844e[_0xe849('0x35')][_0xe849('0x3d')](_0xe849('0x3e'))){_0x4bac04[_0xe849('0x20')]=qs[_0xe849('0x20')](_0x38844e[_0xe849('0x35')]['limit']);_0x4bac04[_0xe849('0x22')]=qs[_0xe849('0x22')](_0x38844e[_0xe849('0x35')][_0xe849('0x22')]);}_0x4bac04[_0xe849('0x3f')]=qs[_0xe849('0x40')](_0x38844e[_0xe849('0x35')]['sort']);_0x4bac04['where']=qs[_0xe849('0x37')](_['pick'](_0x38844e[_0xe849('0x35')],_0x5c7883[_0xe849('0x37')]));_0x4bac04[_0xe849('0x44')][_0xe849('0x5e')]=_0x1d2ed0['id'];if(_0x38844e[_0xe849('0x35')][_0xe849('0x42')]){_0x4bac04[_0xe849('0x44')]=_[_0xe849('0x43')](_0x4bac04[_0xe849('0x44')],{'$or':_[_0xe849('0x31')](_0x4bac04[_0xe849('0x3a')],function(_0x513957){var _0x19ec32={};_0x19ec32[_0x513957]={'$like':'%'+_0x38844e[_0xe849('0x35')][_0xe849('0x42')]+'%'};return _0x19ec32;})});}_0x4bac04=_['merge']({},_0x4bac04,_0x38844e[_0xe849('0x46')]);return db[_0xe849('0x5d')]['findAll'](_0x4bac04);}})[_0xe849('0x27')](function(_0x1d0173){if(_0x1d0173){return db[_0xe849('0x5f')][_0xe849('0x60')]({'where':{'id':_[_0xe849('0x31')](_0x1d0173,'UserId'),'role':'agent'},'attributes':['id',_0xe849('0x2e'),_0xe849('0x61'),_0xe849('0x62'),'createdAt']});}})[_0xe849('0x27')](function(_0x7f5a25){if(_0x7f5a25){return{'count':_0x7f5a25['count'],'rows':_[_0xe849('0x31')](_0x7f5a25[_0xe849('0x4b')],function(_0x4bf99e){return{'membername':_0x4bf99e['name'],'UserId':_0x4bf99e['id'],'queue_name':_0x240338[_0xe849('0x2e')],'OpenchannelQueueId':_0x240338['id'],'interface':util[_0xe849('0x63')]('%s/%s',_0xe849('0x64'),_0x4bf99e[_0xe849('0x2e')]),'penalty':0x0,'paused':_0x4bf99e[_0xe849('0x61')],'createdAt':_0x4bf99e[_0xe849('0x65')],'updatedAt':_0x4bf99e[_0xe849('0x62')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xe849('0x27')](respondWithFilteredResult(_0x76afd,_0x4bac04))[_0xe849('0x56')](handleError(_0x76afd,null));};exports[_0xe849('0x66')]=function(_0xcabef,_0x23c244,_0x1637a5){var _0x3662f5={};var _0x3b7ee9={};var _0x136f45;var _0x5482d2;return db[_0xe849('0x49')][_0xe849('0x5c')]({'where':{'id':_0xcabef[_0xe849('0x4d')]['id']}})[_0xe849('0x27')](handleEntityNotFound(_0x23c244,null))[_0xe849('0x27')](function(_0xeea619){if(_0xeea619){_0x136f45=_0xeea619;_0x3b7ee9[_0xe849('0x39')]=_[_0xe849('0x36')](db['Team'][_0xe849('0x4e')]);_0x3b7ee9[_0xe849('0x35')]=_[_0xe849('0x36')](_0xcabef[_0xe849('0x35')]);_0x3b7ee9[_0xe849('0x37')]=_[_0xe849('0x38')](_0x3b7ee9[_0xe849('0x39')],_0x3b7ee9[_0xe849('0x35')]);_0x3662f5[_0xe849('0x3a')]=_[_0xe849('0x38')](_0x3b7ee9[_0xe849('0x39')],qs[_0xe849('0x3b')](_0xcabef[_0xe849('0x35')][_0xe849('0x3b')]));_0x3662f5[_0xe849('0x3a')]=_0x3662f5[_0xe849('0x3a')][_0xe849('0x3c')]?_0x3662f5[_0xe849('0x3a')]:_0x3b7ee9[_0xe849('0x39')];_0x3662f5['order']=qs[_0xe849('0x40')](_0xcabef[_0xe849('0x35')][_0xe849('0x40')]);_0x3662f5[_0xe849('0x44')]=qs[_0xe849('0x37')](_['pick'](_0xcabef['query'],_0x3b7ee9[_0xe849('0x37')]));if(_0xcabef[_0xe849('0x35')][_0xe849('0x42')]){_0x3662f5[_0xe849('0x44')]=_['merge'](_0x3662f5[_0xe849('0x44')],{'$or':_[_0xe849('0x31')](_0x3662f5['attributes'],function(_0x30cd4f){var _0x39d858={};_0x39d858[_0x30cd4f]={'$like':'%'+_0xcabef[_0xe849('0x35')][_0xe849('0x42')]+'%'};return _0x39d858;})});}_0x3662f5=_[_0xe849('0x43')]({},_0x3662f5,_0xcabef[_0xe849('0x46')]);return _0x136f45['getTeams'](_0x3662f5);}})['then'](function(_0x1ac2bd){if(_0x1ac2bd){_0x5482d2=_0x1ac2bd[_0xe849('0x3c')];if(!_0xcabef[_0xe849('0x35')]['hasOwnProperty'](_0xe849('0x3e'))){_0x3662f5[_0xe849('0x20')]=qs['limit'](_0xcabef['query'][_0xe849('0x20')]);_0x3662f5[_0xe849('0x22')]=qs[_0xe849('0x22')](_0xcabef[_0xe849('0x35')]['offset']);}return _0x136f45[_0xe849('0x66')](_0x3662f5);}})[_0xe849('0x27')](function(_0xd29bb3){if(_0xd29bb3){return _0xd29bb3?{'count':_0x5482d2,'rows':_0xd29bb3}:null;}})[_0xe849('0x27')](respondWithResult(_0x23c244,null))['catch'](handleError(_0x23c244,null));};exports['addTeams']=function(_0x484204,_0x5d2042,_0x528344){var _0x41b231=_0x484204[_0xe849('0x59')][_0xe849('0x67')];return db['Team'][_0xe849('0x4a')]({'where':{'id':_0x41b231},'attributes':['id'],'include':[{'model':db['User'],'as':_0xe849('0x68'),'attributes':['id',_0xe849('0x2e'),_0xe849('0x69'),_0xe849('0x6a'),_0xe849('0x6b')],'raw':!![]}]})[_0xe849('0x27')](function(_0x248f8b){if(_0x248f8b){var _0x5df7fe=_[_0xe849('0x6c')](_0x248f8b,function(_0x196c4f){var _0x4c8e45=_0x196c4f[_0xe849('0x29')]({'plain':!![]});return _0x4c8e45[_0xe849('0x68')];});return db[_0xe849('0x49')]['find']({'where':{'id':_0x484204[_0xe849('0x4d')]['id']}})[_0xe849('0x27')](function(_0x58a293){return db['sequelize'][_0xe849('0x6d')](function(_0x11552c){return _0x58a293[_0xe849('0x6e')](_0x41b231,{'transaction':_0x11552c})[_0xe849('0x27')](function(){return BPromise[_0xe849('0x6f')](_0x5df7fe,function(_0x33835e){return db[_0xe849('0x5d')][_0xe849('0x70')]({'where':{'UserId':_0x33835e['id'],'OpenchannelQueueId':_0x484204['params']['id']},'transaction':_0x11552c});});})[_0xe849('0x27')](function(){_0x5df7fe['forEach'](function(_0xec83eb){socket[_0xe849('0x71')](_0xe849('0x72'),{'UserId':_0xec83eb['id'],'OpenchannelQueueId':_0x58a293['id']});});});});});}})['then'](respondWithStatusCode(_0x5d2042,null))[_0xe849('0x56')](handleError(_0x5d2042,null));};exports[_0xe849('0x73')]=function(_0x12b402,_0x61834d,_0x3be64d){return db[_0xe849('0x74')][_0xe849('0x4a')]({'where':{'id':_0x12b402[_0xe849('0x35')][_0xe849('0x67')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0xe849('0x68'),'attributes':['id'],'raw':!![]}]})[_0xe849('0x27')](handleEntityNotFound(_0x61834d,null))[_0xe849('0x27')](function(_0x115d0f){var _0x5b757c=_[_0xe849('0x31')](_0x115d0f,'id');var _0x21163f=[];var _0x26a8df=[];var _0x4240b4=squel['select']();_0x4240b4[_0xe849('0x75')]('tq.TeamId')['from'](_0xe849('0x76'),'tq')[_0xe849('0x77')](_0xe849('0x78'),'ut',_0xe849('0x79'))[_0xe849('0x44')](_0xe849('0x7a'),_0x12b402['params']['id']);for(var _0x572cfd=0x0;_0x572cfd<_0x115d0f[_0xe849('0x3c')];_0x572cfd+=0x1){let _0x5cc7cb=_0x115d0f[_0x572cfd];for(var _0x1cd536=0x0;_0x1cd536<_0x5cc7cb['Agents'][_0xe849('0x3c')];_0x1cd536+=0x1){let _0x586218=_0x5cc7cb[_0xe849('0x68')][_0x1cd536];var _0x59d854=_0x4240b4[_0xe849('0x7b')]();_0x59d854[_0xe849('0x44')](_0xe849('0x7c'),_0x586218['id']);_0x26a8df[_0xe849('0x7d')](db['sequelize']['query'](_0x59d854[_0xe849('0x7e')](),{'type':db[_0xe849('0x7f')][_0xe849('0x80')][_0xe849('0x81')]})[_0xe849('0x27')](function(_0x43927a){if(_0x43927a[_0xe849('0x3c')]===0x1){return _0x586218['id'];}else{var _0x2a6866=_[_0xe849('0x82')](_[_0xe849('0x31')](_0x43927a,_0xe849('0x83')),function(_0x20dabd){return _[_0xe849('0x84')](_0x5b757c,_0x20dabd);});if(_0x2a6866){return _0x586218['id'];}}}));}}return BPromise[_0xe849('0x85')](_0x26a8df)[_0xe849('0x27')](function(_0x3b354c){_0x21163f=_(_0x21163f)['union'](_0x3b354c)[_0xe849('0x86')]()[_0xe849('0x87')]();return db[_0xe849('0x49')]['find']({'where':{'id':_0x12b402['params']['id']}})[_0xe849('0x27')](function(_0x5ac325){return db[_0xe849('0x7f')]['transaction'](function(_0x2dc2ab){return _0x5ac325['removeTeams'](_0x12b402[_0xe849('0x35')][_0xe849('0x67')],{'transaction':_0x2dc2ab})[_0xe849('0x27')](function(){if(!_[_0xe849('0x88')](_0x21163f)){return _0x5ac325[_0xe849('0x89')](_0x21163f,{'transaction':_0x2dc2ab});}})[_0xe849('0x27')](function(){_0x21163f['forEach'](function(_0x571f15){socket[_0xe849('0x71')]('userOpenchannelQueue:remove',{'UserId':_0x571f15,'OpenchannelQueueId':_0x5ac325['id']});});});});});});})[_0xe849('0x27')](respondWithStatusCode(_0x61834d,null))['catch'](handleError(_0x61834d,null));};exports[_0xe849('0x8a')]=function(_0x59ad53,_0x2b8e35,_0x55bba1){return db[_0xe849('0x49')][_0xe849('0x4f')]({'where':{'id':_0x59ad53[_0xe849('0x4d')]['id']}})[_0xe849('0x27')](handleEntityNotFound(_0x2b8e35,null))[_0xe849('0x27')](function(_0x3813d5){if(_0x3813d5){return _0x3813d5[_0xe849('0x8a')](_0x59ad53[_0xe849('0x59')]['ids'],_[_0xe849('0x8b')](_0x59ad53[_0xe849('0x59')],['ids','id'])||{})[_0xe849('0x8c')](function(_0x4c50b3){for(var _0x154fe8=0x0;_0x154fe8<_0x59ad53[_0xe849('0x59')]['ids'][_0xe849('0x3c')];_0x154fe8+=0x1){socket[_0xe849('0x71')]('userOpenchannelQueue:save',{'UserId':Number(_0x59ad53[_0xe849('0x59')][_0xe849('0x67')][_0x154fe8]),'OpenchannelQueueId':Number(_0x59ad53[_0xe849('0x4d')]['id'])});}return _0x4c50b3;});}})[_0xe849('0x27')](respondWithResult(_0x2b8e35,null))[_0xe849('0x56')](handleError(_0x2b8e35,null));};exports[_0xe849('0x89')]=function(_0x4ba16f,_0x218016,_0x3a3653){return db[_0xe849('0x49')][_0xe849('0x4f')]({'where':{'id':_0x4ba16f[_0xe849('0x4d')]['id']}})[_0xe849('0x27')](handleEntityNotFound(_0x218016,null))[_0xe849('0x27')](function(_0x17fe51){if(_0x17fe51){return _0x17fe51[_0xe849('0x89')](_0x4ba16f['query']['ids'])[_0xe849('0x27')](function(){if(_['isArray'](_0x4ba16f['query'][_0xe849('0x67')])){for(var _0x44fc01=0x0;_0x44fc01<_0x4ba16f[_0xe849('0x35')][_0xe849('0x67')][_0xe849('0x3c')];_0x44fc01+=0x1){socket[_0xe849('0x71')]('userOpenchannelQueue:remove',{'UserId':Number(_0x4ba16f[_0xe849('0x35')][_0xe849('0x67')][_0x44fc01]),'OpenchannelQueueId':Number(_0x4ba16f[_0xe849('0x4d')]['id'])});}}else{socket[_0xe849('0x71')]('userOpenchannelQueue:remove',{'UserId':Number(_0x4ba16f[_0xe849('0x35')][_0xe849('0x67')]),'OpenchannelQueueId':Number(_0x4ba16f['params']['id'])});}});}})[_0xe849('0x27')](respondWithStatusCode(_0x218016,null))[_0xe849('0x56')](handleError(_0x218016,null));};exports['getAgents']=function(_0x404cd1,_0x397262,_0x5701aa){var _0xf7e03b={};var _0x50353e={};var _0x422afc;var _0x49b806;return db[_0xe849('0x49')][_0xe849('0x5c')]({'where':{'id':_0x404cd1[_0xe849('0x4d')]['id']}})[_0xe849('0x27')](handleEntityNotFound(_0x397262,null))['then'](function(_0x120587){if(_0x120587){_0x422afc=_0x120587;_0x50353e[_0xe849('0x39')]=_['keys'](db[_0xe849('0x5f')][_0xe849('0x4e')]);_0x50353e[_0xe849('0x35')]=_[_0xe849('0x36')](_0x404cd1[_0xe849('0x35')]);_0x50353e[_0xe849('0x37')]=_[_0xe849('0x38')](_0x50353e[_0xe849('0x39')],_0x50353e[_0xe849('0x35')]);_0xf7e03b[_0xe849('0x3a')]=_[_0xe849('0x38')](_0x50353e[_0xe849('0x39')],qs[_0xe849('0x3b')](_0x404cd1['query']['fields']));_0xf7e03b[_0xe849('0x3a')]=_0xf7e03b[_0xe849('0x3a')][_0xe849('0x3c')]?_0xf7e03b['attributes']:_0x50353e[_0xe849('0x39')];_0xf7e03b['order']=qs['sort'](_0x404cd1['query']['sort']);_0xf7e03b[_0xe849('0x44')]=qs[_0xe849('0x37')](_['pick'](_0x404cd1['query'],_0x50353e[_0xe849('0x37')]));if(_0x404cd1['query'][_0xe849('0x42')]){_0xf7e03b[_0xe849('0x44')]=_[_0xe849('0x43')](_0xf7e03b[_0xe849('0x44')],{'$or':_[_0xe849('0x31')](_0xf7e03b[_0xe849('0x3a')],function(_0x5bf6fa){var _0x2019e6={};_0x2019e6[_0x5bf6fa]={'$like':'%'+_0x404cd1[_0xe849('0x35')][_0xe849('0x42')]+'%'};return _0x2019e6;})});}_0xf7e03b=_['merge']({},_0xf7e03b,_0x404cd1[_0xe849('0x46')]);return _0x422afc['getAgents'](_0xf7e03b);}})['then'](function(_0x59d81c){if(_0x59d81c){_0x49b806=_0x59d81c[_0xe849('0x3c')];if(!_0x404cd1['query'][_0xe849('0x3d')](_0xe849('0x3e'))){_0xf7e03b['limit']=qs[_0xe849('0x20')](_0x404cd1[_0xe849('0x35')][_0xe849('0x20')]);_0xf7e03b[_0xe849('0x22')]=qs[_0xe849('0x22')](_0x404cd1[_0xe849('0x35')]['offset']);}return _0x422afc[_0xe849('0x8d')](_0xf7e03b);}})[_0xe849('0x27')](function(_0x4b2626){if(_0x4b2626){return _0x4b2626?{'count':_0x49b806,'rows':_0x4b2626}:null;}})['then'](respondWithResult(_0x397262,null))[_0xe849('0x56')](handleError(_0x397262,null));};
\ No newline at end of file
index da66c91..d591412 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9122=['events','../../mysqldb','OpenchannelQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x1ac6ec,_0x1f81fc){var _0x48a489=function(_0xf38b04){while(--_0xf38b04){_0x1ac6ec['push'](_0x1ac6ec['shift']());}};_0x48a489(++_0x1f81fc);}(_0x9122,0xa5));var _0x2912=function(_0x1266bf,_0x1396a4){_0x1266bf=_0x1266bf-0x0;var _0x2b0fdc=_0x9122[_0x1266bf];return _0x2b0fdc;};'use strict';var EventEmitter=require(_0x2912('0x0'));var OpenchannelQueue=require(_0x2912('0x1'))['db'][_0x2912('0x2')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x2912('0x3')](0x0);var events={'afterCreate':_0x2912('0x4'),'afterUpdate':_0x2912('0x5'),'afterDestroy':_0x2912('0x6')};function emitEvent(_0x394455){return function(_0x354eb2,_0x448543,_0x2d5630){OpenchannelQueueEvents[_0x2912('0x7')](_0x394455+':'+_0x354eb2['id'],_0x354eb2);OpenchannelQueueEvents[_0x2912('0x7')](_0x394455,_0x354eb2);_0x2d5630(null);};}for(var e in events){if(events[_0x2912('0x8')](e)){var event=events[e];OpenchannelQueue[_0x2912('0x9')](e,emitEvent(event));}}module[_0x2912('0xa')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0xbb55=['save','update','remove','emit','hasOwnProperty','exports','../../mysqldb','setMaxListeners'];(function(_0xc839b7,_0xb0f76e){var _0x3848e7=function(_0x75bde7){while(--_0x75bde7){_0xc839b7['push'](_0xc839b7['shift']());}};_0x3848e7(++_0xb0f76e);}(_0xbb55,0x176));var _0x5bb5=function(_0x1bb947,_0x2aa37f){_0x1bb947=_0x1bb947-0x0;var _0x471c1a=_0xbb55[_0x1bb947];return _0x471c1a;};'use strict';var EventEmitter=require('events');var OpenchannelQueue=require(_0x5bb5('0x0'))['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x5bb5('0x1')](0x0);var events={'afterCreate':_0x5bb5('0x2'),'afterUpdate':_0x5bb5('0x3'),'afterDestroy':_0x5bb5('0x4')};function emitEvent(_0x1e9a09){return function(_0x97f5ec,_0x21dc37,_0x19c355){OpenchannelQueueEvents[_0x5bb5('0x5')](_0x1e9a09+':'+_0x97f5ec['id'],_0x97f5ec);OpenchannelQueueEvents[_0x5bb5('0x5')](_0x1e9a09,_0x97f5ec);_0x19c355(null);};}for(var e in events){if(events[_0x5bb5('0x6')](e)){var event=events[e];OpenchannelQueue['hook'](e,emitEvent(event));}}module[_0x5bb5('0x7')]=OpenchannelQueueEvents;
\ No newline at end of file
index f6e6c86..5bc8d2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fbc=['lodash','util','../../config/logger','api','path','../../config/environment','./openchannelQueue.attributes','openchannel_queues'];(function(_0x3b81d1,_0x544977){var _0x3872dc=function(_0x22ddf4){while(--_0x22ddf4){_0x3b81d1['push'](_0x3b81d1['shift']());}};_0x3872dc(++_0x544977);}(_0x5fbc,0x130));var _0xc5fb=function(_0x302633,_0x425207){_0x302633=_0x302633-0x0;var _0x37b7ac=_0x5fbc[_0x302633];return _0x37b7ac;};'use strict';var _=require(_0xc5fb('0x0'));var util=require(_0xc5fb('0x1'));var logger=require(_0xc5fb('0x2'))(_0xc5fb('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xc5fb('0x4'));var rimraf=require('rimraf');var config=require(_0xc5fb('0x5'));var attributes=require(_0xc5fb('0x6'));module['exports']=function(_0x2ed86d,_0x2a88b7){return _0x2ed86d['define']('OpenchannelQueue',attributes,{'tableName':_0xc5fb('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x120b=['openchannel_queues','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueue.attributes','exports','define','OpenchannelQueue'];(function(_0x39096d,_0x51f8a0){var _0x13da4f=function(_0x11e6b2){while(--_0x11e6b2){_0x39096d['push'](_0x39096d['shift']());}};_0x13da4f(++_0x51f8a0);}(_0x120b,0xde));var _0xb120=function(_0xb17c0e,_0x1b7569){_0xb17c0e=_0xb17c0e-0x0;var _0xab34db=_0x120b[_0xb17c0e];return _0xab34db;};'use strict';var _=require(_0xb120('0x0'));var util=require('util');var logger=require(_0xb120('0x1'))(_0xb120('0x2'));var moment=require('moment');var BPromise=require(_0xb120('0x3'));var rp=require(_0xb120('0x4'));var fs=require('fs');var path=require(_0xb120('0x5'));var rimraf=require(_0xb120('0x6'));var config=require(_0xb120('0x7'));var attributes=require(_0xb120('0x8'));module[_0xb120('0x9')]=function(_0x16bce2,_0x31395e){return _0x16bce2[_0xb120('0xa')](_0xb120('0xb'),attributes,{'tableName':_0xb120('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index aff49db..8954098 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf52=['ShowOpenchannelQueue','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','request','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw','attributes','limit','include','map','model','then'];(function(_0x4dbba7,_0x34d6d1){var _0x43ef83=function(_0x27acf1){while(--_0x27acf1){_0x4dbba7['push'](_0x4dbba7['shift']());}};_0x43ef83(++_0x34d6d1);}(_0xdf52,0xa6));var _0x2df5=function(_0x45b627,_0x568fc6){_0x45b627=_0x45b627-0x0;var _0x228da4=_0xdf52[_0x45b627];return _0x228da4;};'use strict';var _=require(_0x2df5('0x0'));var util=require(_0x2df5('0x1'));var moment=require(_0x2df5('0x2'));var BPromise=require(_0x2df5('0x3'));var rs=require(_0x2df5('0x4'));var fs=require('fs');var Redis=require(_0x2df5('0x5'));var db=require(_0x2df5('0x6'))['db'];var utils=require(_0x2df5('0x7'));var logger=require(_0x2df5('0x8'))(_0x2df5('0x9'));var config=require(_0x2df5('0xa'));var jayson=require(_0x2df5('0xb'));var client=jayson[_0x2df5('0xc')][_0x2df5('0xd')]({'port':0x232a});config['redis']=_[_0x2df5('0xe')](config[_0x2df5('0xf')],{'host':_0x2df5('0x10'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2df5('0xf')]));require('./openchannelQueue.socket')['register'](socket);function respondWithRpcPromise(_0x11a763,_0x53eb9d,_0x202330){return new BPromise(function(_0x18a101,_0x493a41){return client[_0x2df5('0x11')](_0x11a763,_0x202330)['then'](function(_0x53374e){logger[_0x2df5('0x12')](_0x2df5('0x13'),_0x53eb9d,_0x2df5('0x14'));logger[_0x2df5('0x15')](_0x2df5('0x16'),_0x53eb9d,_0x2df5('0x14'),JSON[_0x2df5('0x17')](_0x53374e));if(_0x53374e['error']){if(_0x53374e[_0x2df5('0x18')][_0x2df5('0x19')]===0x1f4){logger[_0x2df5('0x18')](_0x2df5('0x13'),_0x53eb9d,_0x53374e[_0x2df5('0x18')][_0x2df5('0x1a')]);return _0x493a41(_0x53374e[_0x2df5('0x18')][_0x2df5('0x1a')]);}logger[_0x2df5('0x18')](_0x2df5('0x13'),_0x53eb9d,_0x53374e[_0x2df5('0x18')][_0x2df5('0x1a')]);return _0x18a101(_0x53374e[_0x2df5('0x18')][_0x2df5('0x1a')]);}else{logger[_0x2df5('0x12')](_0x2df5('0x13'),_0x53eb9d,_0x2df5('0x14'));_0x18a101(_0x53374e['result'][_0x2df5('0x1a')]);}})[_0x2df5('0x1b')](function(_0x25aa6e){logger['error'](_0x2df5('0x13'),_0x53eb9d,_0x25aa6e);_0x493a41(_0x25aa6e);});});}exports[_0x2df5('0x1c')]=function(_0x195f3b){var _0x490083=this;return new Promise(function(_0x5732d1,_0x3e370a){return db[_0x2df5('0x1d')][_0x2df5('0x1e')]({'raw':_0x195f3b[_0x2df5('0x1f')]?_0x195f3b[_0x2df5('0x1f')][_0x2df5('0x20')]===undefined?!![]:![]:!![],'where':_0x195f3b['options']?_0x195f3b[_0x2df5('0x1f')]['where']||null:null,'attributes':_0x195f3b[_0x2df5('0x1f')]?_0x195f3b[_0x2df5('0x1f')][_0x2df5('0x21')]||null:null,'limit':_0x195f3b['options']?_0x195f3b['options'][_0x2df5('0x22')]||null:null,'include':_0x195f3b[_0x2df5('0x1f')]?_0x195f3b['options'][_0x2df5('0x23')]?_[_0x2df5('0x24')](_0x195f3b[_0x2df5('0x1f')]['include'],function(_0x1bbfd1){return{'model':db[_0x1bbfd1[_0x2df5('0x25')]],'as':_0x1bbfd1['as'],'attributes':_0x1bbfd1['attributes'],'include':_0x1bbfd1[_0x2df5('0x23')]?_['map'](_0x1bbfd1[_0x2df5('0x23')],function(_0x1b39b5){return{'model':db[_0x1b39b5[_0x2df5('0x25')]],'as':_0x1b39b5['as'],'attributes':_0x1b39b5[_0x2df5('0x21')],'include':_0x1b39b5[_0x2df5('0x23')]?_[_0x2df5('0x24')](_0x1b39b5['include'],function(_0x58246f){return{'model':db[_0x58246f[_0x2df5('0x25')]],'as':_0x58246f['as'],'attributes':_0x58246f[_0x2df5('0x21')]};}):[]};}):[]};}):[]:[]})[_0x2df5('0x26')](function(_0xb18289){logger['info'](_0x2df5('0x1c'),_0x195f3b);logger['debug'](_0x2df5('0x1c'),_0x195f3b,JSON[_0x2df5('0x17')](_0xb18289));_0x5732d1(_0xb18289);})[_0x2df5('0x1b')](function(_0x50930c){logger[_0x2df5('0x18')]('GetOpenchannelQueue',_0x50930c[_0x2df5('0x1a')],_0x195f3b);_0x3e370a(_0x490083[_0x2df5('0x18')](0x1f4,_0x50930c[_0x2df5('0x1a')]));});});};exports[_0x2df5('0x27')]=function(_0x2889b9){var _0x33ab41=this;return new Promise(function(_0x3e7f50,_0x5ab6a7){return db['OpenchannelQueue'][_0x2df5('0x28')]({'raw':_0x2889b9[_0x2df5('0x1f')]?_0x2889b9['options'][_0x2df5('0x20')]===undefined?!![]:![]:!![],'where':_0x2889b9[_0x2df5('0x1f')]?_0x2889b9['options']['where']||null:null,'attributes':_0x2889b9['options']?_0x2889b9[_0x2df5('0x1f')][_0x2df5('0x21')]||null:null,'include':_0x2889b9[_0x2df5('0x1f')]?_0x2889b9[_0x2df5('0x1f')]['include']?_['map'](_0x2889b9[_0x2df5('0x1f')]['include'],function(_0xc4f57d){return{'model':db[_0xc4f57d[_0x2df5('0x25')]],'as':_0xc4f57d['as'],'attributes':_0xc4f57d[_0x2df5('0x21')],'include':_0xc4f57d[_0x2df5('0x23')]?_['map'](_0xc4f57d[_0x2df5('0x23')],function(_0x1ad166){return{'model':db[_0x1ad166[_0x2df5('0x25')]],'as':_0x1ad166['as'],'attributes':_0x1ad166['attributes'],'include':_0x1ad166[_0x2df5('0x23')]?_[_0x2df5('0x24')](_0x1ad166[_0x2df5('0x23')],function(_0x5e8d82){return{'model':db[_0x5e8d82[_0x2df5('0x25')]],'as':_0x5e8d82['as'],'attributes':_0x5e8d82[_0x2df5('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x27105a){logger['info'](_0x2df5('0x27'),_0x2889b9);logger[_0x2df5('0x15')](_0x2df5('0x27'),_0x2889b9,JSON[_0x2df5('0x17')](_0x27105a));_0x3e7f50(_0x27105a);})[_0x2df5('0x1b')](function(_0x5cc78e){logger[_0x2df5('0x18')](_0x2df5('0x27'),_0x5cc78e['message'],_0x2889b9);_0x5ab6a7(_0x33ab41[_0x2df5('0x18')](0x1f4,_0x5cc78e[_0x2df5('0x1a')]));});});};
\ No newline at end of file
+var _0xbc80=['raw','where','attributes','limit','include','map','model','ShowOpenchannelQueue','find','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','redis','socket.io-emitter','request','then','info','request\x20sent','debug','stringify','error','code','OpenchannelQueue,\x20%s,\x20%s','message','catch','GetOpenchannelQueue','OpenchannelQueue','options'];(function(_0x15bc81,_0x4d4f77){var _0x59440e=function(_0x1b60f2){while(--_0x1b60f2){_0x15bc81['push'](_0x15bc81['shift']());}};_0x59440e(++_0x4d4f77);}(_0xbc80,0x75));var _0x0bc8=function(_0x5a2285,_0x3212d1){_0x5a2285=_0x5a2285-0x0;var _0x48f6ed=_0xbc80[_0x5a2285];return _0x48f6ed;};'use strict';var _=require(_0x0bc8('0x0'));var util=require(_0x0bc8('0x1'));var moment=require('moment');var BPromise=require(_0x0bc8('0x2'));var rs=require(_0x0bc8('0x3'));var fs=require('fs');var Redis=require(_0x0bc8('0x4'));var db=require(_0x0bc8('0x5'))['db'];var utils=require(_0x0bc8('0x6'));var logger=require('../../config/logger')(_0x0bc8('0x7'));var config=require(_0x0bc8('0x8'));var jayson=require(_0x0bc8('0x9'));var client=jayson[_0x0bc8('0xa')]['http']({'port':0x232a});config[_0x0bc8('0xb')]=_['defaults'](config[_0x0bc8('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x0bc8('0xc'))(new Redis(config[_0x0bc8('0xb')]));require('./openchannelQueue.socket')['register'](socket);function respondWithRpcPromise(_0x2b7d4f,_0x21cf24,_0x2a653a){return new BPromise(function(_0x5ec9cb,_0x112c7b){return client[_0x0bc8('0xd')](_0x2b7d4f,_0x2a653a)[_0x0bc8('0xe')](function(_0x184dc4){logger[_0x0bc8('0xf')]('OpenchannelQueue,\x20%s,\x20%s',_0x21cf24,_0x0bc8('0x10'));logger[_0x0bc8('0x11')]('OpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x21cf24,_0x0bc8('0x10'),JSON[_0x0bc8('0x12')](_0x184dc4));if(_0x184dc4[_0x0bc8('0x13')]){if(_0x184dc4['error'][_0x0bc8('0x14')]===0x1f4){logger[_0x0bc8('0x13')](_0x0bc8('0x15'),_0x21cf24,_0x184dc4[_0x0bc8('0x13')][_0x0bc8('0x16')]);return _0x112c7b(_0x184dc4[_0x0bc8('0x13')][_0x0bc8('0x16')]);}logger[_0x0bc8('0x13')](_0x0bc8('0x15'),_0x21cf24,_0x184dc4['error'][_0x0bc8('0x16')]);return _0x5ec9cb(_0x184dc4[_0x0bc8('0x13')][_0x0bc8('0x16')]);}else{logger[_0x0bc8('0xf')]('OpenchannelQueue,\x20%s,\x20%s',_0x21cf24,_0x0bc8('0x10'));_0x5ec9cb(_0x184dc4['result'][_0x0bc8('0x16')]);}})[_0x0bc8('0x17')](function(_0x35a9fb){logger[_0x0bc8('0x13')]('OpenchannelQueue,\x20%s,\x20%s',_0x21cf24,_0x35a9fb);_0x112c7b(_0x35a9fb);});});}exports[_0x0bc8('0x18')]=function(_0x16244d){var _0x22302a=this;return new Promise(function(_0xce50b4,_0x297d57){return db[_0x0bc8('0x19')]['findAll']({'raw':_0x16244d[_0x0bc8('0x1a')]?_0x16244d[_0x0bc8('0x1a')][_0x0bc8('0x1b')]===undefined?!![]:![]:!![],'where':_0x16244d[_0x0bc8('0x1a')]?_0x16244d['options'][_0x0bc8('0x1c')]||null:null,'attributes':_0x16244d[_0x0bc8('0x1a')]?_0x16244d[_0x0bc8('0x1a')][_0x0bc8('0x1d')]||null:null,'limit':_0x16244d[_0x0bc8('0x1a')]?_0x16244d[_0x0bc8('0x1a')][_0x0bc8('0x1e')]||null:null,'include':_0x16244d[_0x0bc8('0x1a')]?_0x16244d['options'][_0x0bc8('0x1f')]?_[_0x0bc8('0x20')](_0x16244d[_0x0bc8('0x1a')][_0x0bc8('0x1f')],function(_0x11fa89){return{'model':db[_0x11fa89[_0x0bc8('0x21')]],'as':_0x11fa89['as'],'attributes':_0x11fa89[_0x0bc8('0x1d')],'include':_0x11fa89[_0x0bc8('0x1f')]?_[_0x0bc8('0x20')](_0x11fa89[_0x0bc8('0x1f')],function(_0x1d608b){return{'model':db[_0x1d608b[_0x0bc8('0x21')]],'as':_0x1d608b['as'],'attributes':_0x1d608b['attributes'],'include':_0x1d608b[_0x0bc8('0x1f')]?_[_0x0bc8('0x20')](_0x1d608b[_0x0bc8('0x1f')],function(_0x5ce843){return{'model':db[_0x5ce843['model']],'as':_0x5ce843['as'],'attributes':_0x5ce843['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x2b5d35){logger[_0x0bc8('0xf')](_0x0bc8('0x18'),_0x16244d);logger[_0x0bc8('0x11')](_0x0bc8('0x18'),_0x16244d,JSON['stringify'](_0x2b5d35));_0xce50b4(_0x2b5d35);})[_0x0bc8('0x17')](function(_0x55bc46){logger[_0x0bc8('0x13')](_0x0bc8('0x18'),_0x55bc46['message'],_0x16244d);_0x297d57(_0x22302a[_0x0bc8('0x13')](0x1f4,_0x55bc46[_0x0bc8('0x16')]));});});};exports[_0x0bc8('0x22')]=function(_0x58ac37){var _0x485b04=this;return new Promise(function(_0xb40ccb,_0x35d4fb){return db[_0x0bc8('0x19')][_0x0bc8('0x23')]({'raw':_0x58ac37[_0x0bc8('0x1a')]?_0x58ac37['options']['raw']===undefined?!![]:![]:!![],'where':_0x58ac37[_0x0bc8('0x1a')]?_0x58ac37[_0x0bc8('0x1a')][_0x0bc8('0x1c')]||null:null,'attributes':_0x58ac37[_0x0bc8('0x1a')]?_0x58ac37[_0x0bc8('0x1a')][_0x0bc8('0x1d')]||null:null,'include':_0x58ac37[_0x0bc8('0x1a')]?_0x58ac37['options'][_0x0bc8('0x1f')]?_[_0x0bc8('0x20')](_0x58ac37[_0x0bc8('0x1a')]['include'],function(_0x1ee0c8){return{'model':db[_0x1ee0c8[_0x0bc8('0x21')]],'as':_0x1ee0c8['as'],'attributes':_0x1ee0c8[_0x0bc8('0x1d')],'include':_0x1ee0c8[_0x0bc8('0x1f')]?_[_0x0bc8('0x20')](_0x1ee0c8[_0x0bc8('0x1f')],function(_0x51438a){return{'model':db[_0x51438a[_0x0bc8('0x21')]],'as':_0x51438a['as'],'attributes':_0x51438a[_0x0bc8('0x1d')],'include':_0x51438a[_0x0bc8('0x1f')]?_[_0x0bc8('0x20')](_0x51438a[_0x0bc8('0x1f')],function(_0x32f4aa){return{'model':db[_0x32f4aa['model']],'as':_0x32f4aa['as'],'attributes':_0x32f4aa['attributes']};}):[]};}):[]};}):[]:[]})[_0x0bc8('0xe')](function(_0x3d0a66){logger[_0x0bc8('0xf')](_0x0bc8('0x22'),_0x58ac37);logger[_0x0bc8('0x11')](_0x0bc8('0x22'),_0x58ac37,JSON['stringify'](_0x3d0a66));_0xb40ccb(_0x3d0a66);})[_0x0bc8('0x17')](function(_0x31a8e4){logger[_0x0bc8('0x13')](_0x0bc8('0x22'),_0x31a8e4[_0x0bc8('0x16')],_0x58ac37);_0x35d4fb(_0x485b04[_0x0bc8('0x13')](0x1f4,_0x31a8e4[_0x0bc8('0x16')]));});});};
\ No newline at end of file
index 3dbc6ec..0bcff3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48ae=['./openchannelQueue.events','save','remove','update','emit','register','openchannelQueue:'];(function(_0x3d25e6,_0x2e55a3){var _0x3639c0=function(_0x2ac5a4){while(--_0x2ac5a4){_0x3d25e6['push'](_0x3d25e6['shift']());}};_0x3639c0(++_0x2e55a3);}(_0x48ae,0xd2));var _0xe48a=function(_0x3d93b0,_0x3fc8e2){_0x3d93b0=_0x3d93b0-0x0;var _0x539713=_0x48ae[_0x3d93b0];return _0x539713;};'use strict';var OpenchannelQueueEvents=require(_0xe48a('0x0'));var events=[_0xe48a('0x1'),_0xe48a('0x2'),_0xe48a('0x3')];function createListener(_0x196339,_0x111fa0){return function(_0x598b9a){_0x111fa0[_0xe48a('0x4')](_0x196339,_0x598b9a);};}function removeListener(_0x1ea8df,_0xd85a67){return function(){OpenchannelQueueEvents['removeListener'](_0x1ea8df,_0xd85a67);};}exports[_0xe48a('0x5')]=function(_0x258166){for(var _0x2a1ea3=0x0,_0xc233d9=events['length'];_0x2a1ea3<_0xc233d9;_0x2a1ea3++){var _0x533d93=events[_0x2a1ea3];var _0x2069ff=createListener(_0xe48a('0x6')+_0x533d93,_0x258166);OpenchannelQueueEvents['on'](_0x533d93,_0x2069ff);}};
\ No newline at end of file
+var _0x5da6=['removeListener','register','length','./openchannelQueue.events','remove','update'];(function(_0x488576,_0x2f7f88){var _0x8730e9=function(_0x12dec9){while(--_0x12dec9){_0x488576['push'](_0x488576['shift']());}};_0x8730e9(++_0x2f7f88);}(_0x5da6,0xd5));var _0x65da=function(_0x36d05c,_0x1cb82f){_0x36d05c=_0x36d05c-0x0;var _0x35773c=_0x5da6[_0x36d05c];return _0x35773c;};'use strict';var OpenchannelQueueEvents=require(_0x65da('0x0'));var events=['save',_0x65da('0x1'),_0x65da('0x2')];function createListener(_0x17b73c,_0x46ba84){return function(_0x2a92fd){_0x46ba84['emit'](_0x17b73c,_0x2a92fd);};}function removeListener(_0x50a60b,_0x5197e6){return function(){OpenchannelQueueEvents[_0x65da('0x3')](_0x50a60b,_0x5197e6);};}exports[_0x65da('0x4')]=function(_0x4eb539){for(var _0x2f4872=0x0,_0x1d15b6=events[_0x65da('0x5')];_0x2f4872<_0x1d15b6;_0x2f4872++){var _0x35fd48=events[_0x2f4872];var _0x908628=createListener('openchannelQueue:'+_0x35fd48,_0x4eb539);OpenchannelQueueEvents['on'](_0x35fd48,_0x908628);}};
\ No newline at end of file
index f5a1052..95c1f71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1331=['util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','/describe','describe','/:id','show','update','delete','destroy','exports','multer'];(function(_0x332875,_0x5675dc){var _0x16b33d=function(_0x4100ff){while(--_0x4100ff){_0x332875['push'](_0x332875['shift']());}};_0x16b33d(++_0x5675dc);}(_0x1331,0x10d));var _0x1133=function(_0x5372c7,_0x3e9062){_0x5372c7=_0x5372c7-0x0;var _0x1c22fc=_0x1331[_0x5372c7];return _0x1c22fc;};'use strict';var multer=require(_0x1133('0x0'));var util=require(_0x1133('0x1'));var path=require(_0x1133('0x2'));var timeout=require(_0x1133('0x3'));var express=require(_0x1133('0x4'));var router=express[_0x1133('0x5')]();var fs_extra=require(_0x1133('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x1133('0x7'));var config=require('../../config/environment');var controller=require('./openchannelQueueReport.controller');router[_0x1133('0x8')]('/',auth[_0x1133('0x9')](),controller['index']);router[_0x1133('0x8')](_0x1133('0xa'),auth[_0x1133('0x9')](),controller[_0x1133('0xb')]);router[_0x1133('0x8')](_0x1133('0xc'),auth[_0x1133('0x9')](),controller[_0x1133('0xd')]);router['post']('/',auth[_0x1133('0x9')](),controller['create']);router['put'](_0x1133('0xc'),auth[_0x1133('0x9')](),controller[_0x1133('0xe')]);router[_0x1133('0xf')]('/:id',auth[_0x1133('0x9')](),controller[_0x1133('0x10')]);module[_0x1133('0x11')]=router;
\ No newline at end of file
+var _0x683a=['/:id','show','create','put','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./openchannelQueueReport.controller','get','isAuthenticated','/describe','describe'];(function(_0x2cc569,_0x4e9568){var _0x1bfc2e=function(_0x5b8fcb){while(--_0x5b8fcb){_0x2cc569['push'](_0x2cc569['shift']());}};_0x1bfc2e(++_0x4e9568);}(_0x683a,0x191));var _0xa683=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x683a[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xa683('0x0'));var util=require(_0xa683('0x1'));var path=require(_0xa683('0x2'));var timeout=require(_0xa683('0x3'));var express=require(_0xa683('0x4'));var router=express[_0xa683('0x5')]();var fs_extra=require(_0xa683('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xa683('0x7'));var config=require('../../config/environment');var controller=require(_0xa683('0x8'));router[_0xa683('0x9')]('/',auth[_0xa683('0xa')](),controller['index']);router[_0xa683('0x9')](_0xa683('0xb'),auth[_0xa683('0xa')](),controller[_0xa683('0xc')]);router[_0xa683('0x9')](_0xa683('0xd'),auth['isAuthenticated'](),controller[_0xa683('0xe')]);router['post']('/',auth[_0xa683('0xa')](),controller[_0xa683('0xf')]);router[_0xa683('0x10')](_0xa683('0xd'),auth[_0xa683('0xa')](),controller['update']);router['delete'](_0xa683('0xd'),auth[_0xa683('0xa')](),controller['destroy']);module[_0xa683('0x11')]=router;
\ No newline at end of file
index ba3ad87..52ff24d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6b7=['exports','STRING','DATE','moment','sequelize'];(function(_0x8af6d4,_0x5d180c){var _0x345ac1=function(_0x3fafa6){while(--_0x3fafa6){_0x8af6d4['push'](_0x8af6d4['shift']());}};_0x345ac1(++_0x5d180c);}(_0xb6b7,0xe4));var _0x7b6b=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xb6b7[_0x501510];return _0x1e6ee5;};'use strict';var moment=require(_0x7b6b('0x0'));var Sequelize=require(_0x7b6b('0x1'));module[_0x7b6b('0x2')]={'uniqueid':{'type':Sequelize[_0x7b6b('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x7b6b('0x4')]},'acceptAt':{'type':Sequelize[_0x7b6b('0x4')]},'exitAt':{'type':Sequelize[_0x7b6b('0x4')]},'reason':{'type':Sequelize[_0x7b6b('0x3')]}};
\ No newline at end of file
+var _0x20a5=['STRING','DATE','moment','sequelize'];(function(_0x3afb9f,_0x47489d){var _0x53b96c=function(_0x15da12){while(--_0x15da12){_0x3afb9f['push'](_0x3afb9f['shift']());}};_0x53b96c(++_0x47489d);}(_0x20a5,0x122));var _0x520a=function(_0x593a95,_0x33e482){_0x593a95=_0x593a95-0x0;var _0x34dce8=_0x20a5[_0x593a95];return _0x34dce8;};'use strict';var moment=require(_0x520a('0x0'));var Sequelize=require(_0x520a('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0x520a('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x520a('0x3')]},'leaveAt':{'type':Sequelize[_0x520a('0x3')]},'acceptAt':{'type':Sequelize[_0x520a('0x3')]},'exitAt':{'type':Sequelize[_0x520a('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 27ab5b8..964d2b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf9e=['find','create','body','destroy','describe','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','reject','save','update','then','stack','name','index','map','rawAttributes','fieldName','type','key','keys','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','includeAll','include','rows','catch','params','OpenchannelQueueReport','options'];(function(_0x23157d,_0x2a11b0){var _0x46dd73=function(_0x57854a){while(--_0x57854a){_0x23157d['push'](_0x23157d['shift']());}};_0x46dd73(++_0x2a11b0);}(_0xbf9e,0x1af));var _0xebf9=function(_0x267e26,_0x43d2e7){_0x267e26=_0x267e26-0x0;var _0x1db11e=_0xbf9e[_0x267e26];return _0x1db11e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xebf9('0x0'));var jsonpatch=require(_0xebf9('0x1'));var rp=require(_0xebf9('0x2'));var moment=require(_0xebf9('0x3'));var BPromise=require(_0xebf9('0x4'));var Mustache=require(_0xebf9('0x5'));var util=require('util');var path=require(_0xebf9('0x6'));var sox=require(_0xebf9('0x7'));var csv=require('to-csv');var ejs=require(_0xebf9('0x8'));var fs=require('fs');var fs_extra=require(_0xebf9('0x9'));var _=require(_0xebf9('0xa'));var squel=require('squel');var crypto=require(_0xebf9('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xebf9('0xc'));var toCsv=require('to-csv');var querystring=require(_0xebf9('0xd'));var Papa=require('papaparse');var Redis=require(_0xebf9('0xe'));var authService=require(_0xebf9('0xf'));var qs=require(_0xebf9('0x10'));var as=require(_0xebf9('0x11'));var hardwareService=require(_0xebf9('0x12'));var logger=require(_0xebf9('0x13'))(_0xebf9('0x14'));var utils=require('../../config/utils');var config=require(_0xebf9('0x15'));var licenseUtil=require(_0xebf9('0x16'));var db=require(_0xebf9('0x17'))['db'];function respondWithStatusCode(_0x55ff57,_0x281a40){_0x281a40=_0x281a40||0xcc;return function(_0x1c7b9c){if(_0x1c7b9c){return _0x55ff57[_0xebf9('0x18')](_0x281a40);}return _0x55ff57['status'](_0x281a40)[_0xebf9('0x19')]();};}function respondWithResult(_0x1a7871,_0x2e6f21){_0x2e6f21=_0x2e6f21||0xc8;return function(_0x1a3f4d){if(_0x1a3f4d){return _0x1a7871[_0xebf9('0x1a')](_0x2e6f21)['json'](_0x1a3f4d);}};}function respondWithFilteredResult(_0x5fc185,_0x48ce06){return function(_0x309a86){if(_0x309a86){var _0x4f3c0d=typeof _0x48ce06[_0xebf9('0x1b')]===_0xebf9('0x1c')&&typeof _0x48ce06[_0xebf9('0x1d')]===_0xebf9('0x1c');var _0x11bf61=_0x309a86[_0xebf9('0x1e')];var _0x452022=_0x4f3c0d?0x0:_0x48ce06['offset'];var _0x21e594=_0x4f3c0d?_0x309a86[_0xebf9('0x1e')]:_0x48ce06[_0xebf9('0x1b')]+_0x48ce06[_0xebf9('0x1d')];var _0x5838e6;if(_0x21e594>=_0x11bf61){_0x21e594=_0x11bf61;_0x5838e6=0xc8;}else{_0x5838e6=0xce;}_0x5fc185[_0xebf9('0x1a')](_0x5838e6);return _0x5fc185[_0xebf9('0x1f')]('Content-Range',_0x452022+'-'+_0x21e594+'/'+_0x11bf61)['json'](_0x309a86);}return null;};}function patchUpdates(_0x5dcda5){return function(_0x1a79ae){try{jsonpatch['apply'](_0x1a79ae,_0x5dcda5,!![]);}catch(_0x8a2016){return BPromise[_0xebf9('0x20')](_0x8a2016);}return _0x1a79ae[_0xebf9('0x21')]();};}function saveUpdates(_0x45bbc4,_0x572a38){return function(_0x1b9998){if(_0x1b9998){return _0x1b9998[_0xebf9('0x22')](_0x45bbc4)[_0xebf9('0x23')](function(_0x25c543){return _0x25c543;});}return null;};}function removeEntity(_0x4e43a7,_0x53bf5a){return function(_0x482c73){if(_0x482c73){return _0x482c73['destroy']()[_0xebf9('0x23')](function(){_0x4e43a7[_0xebf9('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x479759,_0x402651){return function(_0x5ace5e){if(!_0x5ace5e){_0x479759[_0xebf9('0x18')](0x194);}return _0x5ace5e;};}function handleError(_0x193ab4,_0x5d9531){_0x5d9531=_0x5d9531||0x1f4;return function(_0x2dddcc){logger['error'](_0x2dddcc[_0xebf9('0x24')]);if(_0x2dddcc[_0xebf9('0x25')]){delete _0x2dddcc[_0xebf9('0x25')];}_0x193ab4[_0xebf9('0x1a')](_0x5d9531)['send'](_0x2dddcc);};}exports[_0xebf9('0x26')]=function(_0x258b60,_0x3de4d1){var _0x391833={},_0x44f40f={},_0x51db2c={'count':0x0,'rows':[]};var _0x5af81c=_[_0xebf9('0x27')](db['OpenchannelQueueReport'][_0xebf9('0x28')],function(_0x8fa8c4){return{'name':_0x8fa8c4[_0xebf9('0x29')],'type':_0x8fa8c4[_0xebf9('0x2a')][_0xebf9('0x2b')]};});_0x44f40f['model']=_[_0xebf9('0x27')](_0x5af81c,_0xebf9('0x25'));_0x44f40f['query']=_[_0xebf9('0x2c')](_0x258b60[_0xebf9('0x2d')]);_0x44f40f[_0xebf9('0x2e')]=_[_0xebf9('0x2f')](_0x44f40f['model'],_0x44f40f['query']);_0x391833[_0xebf9('0x30')]=_['intersection'](_0x44f40f[_0xebf9('0x31')],qs[_0xebf9('0x32')](_0x258b60[_0xebf9('0x2d')][_0xebf9('0x32')]));_0x391833['attributes']=_0x391833[_0xebf9('0x30')][_0xebf9('0x33')]?_0x391833['attributes']:_0x44f40f[_0xebf9('0x31')];if(!_0x258b60['query'][_0xebf9('0x34')]('nolimit')){_0x391833['limit']=qs[_0xebf9('0x1d')](_0x258b60[_0xebf9('0x2d')][_0xebf9('0x1d')]);_0x391833[_0xebf9('0x1b')]=qs[_0xebf9('0x1b')](_0x258b60[_0xebf9('0x2d')][_0xebf9('0x1b')]);}_0x391833[_0xebf9('0x35')]=qs[_0xebf9('0x36')](_0x258b60[_0xebf9('0x2d')][_0xebf9('0x36')]);_0x391833[_0xebf9('0x37')]=qs[_0xebf9('0x2e')](_[_0xebf9('0x38')](_0x258b60[_0xebf9('0x2d')],_0x44f40f['filters']),_0x5af81c);if(_0x258b60[_0xebf9('0x2d')][_0xebf9('0x39')]){_0x391833['where']=_[_0xebf9('0x3a')](_0x391833[_0xebf9('0x37')],{'$or':_[_0xebf9('0x27')](_0x5af81c,function(_0x23b02d){if(_0x23b02d[_0xebf9('0x2a')]!=='VIRTUAL'){var _0x312b61={};_0x312b61[_0x23b02d[_0xebf9('0x25')]]={'$like':'%'+_0x258b60['query']['filter']+'%'};return _0x312b61;}})});}_0x391833=_[_0xebf9('0x3a')]({},_0x391833,_0x258b60['options']);var _0xb76e7a={'where':_0x391833[_0xebf9('0x37')]};return db['OpenchannelQueueReport'][_0xebf9('0x1e')](_0xb76e7a)[_0xebf9('0x23')](function(_0x3a316d){_0x51db2c['count']=_0x3a316d;if(_0x258b60[_0xebf9('0x2d')][_0xebf9('0x3b')]){_0x391833[_0xebf9('0x3c')]=[{'all':!![]}];}return db['OpenchannelQueueReport']['findAll'](_0x391833);})['then'](function(_0x2984ef){_0x51db2c[_0xebf9('0x3d')]=_0x2984ef;return _0x51db2c;})[_0xebf9('0x23')](respondWithFilteredResult(_0x3de4d1,_0x391833))[_0xebf9('0x3e')](handleError(_0x3de4d1,null));};exports['show']=function(_0x1224ac,_0x4ab71d){var _0x287604={'raw':!![],'where':{'id':_0x1224ac[_0xebf9('0x3f')]['id']}},_0x5703b9={};_0x5703b9[_0xebf9('0x31')]=_[_0xebf9('0x2c')](db[_0xebf9('0x40')][_0xebf9('0x28')]);_0x5703b9[_0xebf9('0x2d')]=_[_0xebf9('0x2c')](_0x1224ac[_0xebf9('0x2d')]);_0x5703b9[_0xebf9('0x2e')]=_[_0xebf9('0x2f')](_0x5703b9[_0xebf9('0x31')],_0x5703b9['query']);_0x287604[_0xebf9('0x30')]=_[_0xebf9('0x2f')](_0x5703b9[_0xebf9('0x31')],qs['fields'](_0x1224ac[_0xebf9('0x2d')][_0xebf9('0x32')]));_0x287604[_0xebf9('0x30')]=_0x287604['attributes'][_0xebf9('0x33')]?_0x287604['attributes']:_0x5703b9[_0xebf9('0x31')];if(_0x1224ac[_0xebf9('0x2d')][_0xebf9('0x3b')]){_0x287604[_0xebf9('0x3c')]=[{'all':!![]}];}_0x287604=_[_0xebf9('0x3a')]({},_0x287604,_0x1224ac[_0xebf9('0x41')]);return db[_0xebf9('0x40')][_0xebf9('0x42')](_0x287604)[_0xebf9('0x23')](handleEntityNotFound(_0x4ab71d,null))['then'](respondWithResult(_0x4ab71d,null))[_0xebf9('0x3e')](handleError(_0x4ab71d,null));};exports[_0xebf9('0x43')]=function(_0x2d0ec9,_0x1f82f4){return db[_0xebf9('0x40')]['create'](_0x2d0ec9[_0xebf9('0x44')],{})['then'](respondWithResult(_0x1f82f4,0xc9))['catch'](handleError(_0x1f82f4,null));};exports[_0xebf9('0x22')]=function(_0x5c77f7,_0x3b1657){if(_0x5c77f7[_0xebf9('0x44')]['id']){delete _0x5c77f7[_0xebf9('0x44')]['id'];}return db['OpenchannelQueueReport'][_0xebf9('0x42')]({'where':{'id':_0x5c77f7[_0xebf9('0x3f')]['id']}})[_0xebf9('0x23')](handleEntityNotFound(_0x3b1657,null))[_0xebf9('0x23')](saveUpdates(_0x5c77f7[_0xebf9('0x44')],null))[_0xebf9('0x23')](respondWithResult(_0x3b1657,null))[_0xebf9('0x3e')](handleError(_0x3b1657,null));};exports[_0xebf9('0x45')]=function(_0x15a5d6,_0x1de9e4){return db['OpenchannelQueueReport']['find']({'where':{'id':_0x15a5d6[_0xebf9('0x3f')]['id']}})['then'](handleEntityNotFound(_0x1de9e4,null))[_0xebf9('0x23')](removeEntity(_0x1de9e4,null))[_0xebf9('0x3e')](handleError(_0x1de9e4,null));};exports[_0xebf9('0x46')]=function(_0x5eba87,_0x7bdc0f){return db['OpenchannelQueueReport'][_0xebf9('0x46')]()[_0xebf9('0x23')](respondWithResult(_0x7bdc0f,null))[_0xebf9('0x3e')](handleError(_0x7bdc0f,null));};
\ No newline at end of file
+var _0xaf78=['where','merge','VIRTUAL','filter','options','includeAll','include','rows','catch','show','params','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','destroy','end','error','send','index','map','OpenchannelQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick'];(function(_0x1f77ac,_0x509704){var _0x52bbf4=function(_0x569cd9){while(--_0x569cd9){_0x1f77ac['push'](_0x1f77ac['shift']());}};_0x52bbf4(++_0x509704);}(_0xaf78,0xa9));var _0x8af7=function(_0x5d528b,_0x48bedb){_0x5d528b=_0x5d528b-0x0;var _0x54983f=_0xaf78[_0x5d528b];return _0x54983f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8af7('0x0'));var zipdir=require(_0x8af7('0x1'));var jsonpatch=require(_0x8af7('0x2'));var rp=require(_0x8af7('0x3'));var moment=require(_0x8af7('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x8af7('0x5'));var util=require(_0x8af7('0x6'));var path=require(_0x8af7('0x7'));var sox=require(_0x8af7('0x8'));var csv=require(_0x8af7('0x9'));var ejs=require(_0x8af7('0xa'));var fs=require('fs');var fs_extra=require(_0x8af7('0xb'));var _=require('lodash');var squel=require(_0x8af7('0xc'));var crypto=require('crypto');var jsforce=require(_0x8af7('0xd'));var deskjs=require(_0x8af7('0xe'));var toCsv=require(_0x8af7('0x9'));var querystring=require(_0x8af7('0xf'));var Papa=require(_0x8af7('0x10'));var Redis=require(_0x8af7('0x11'));var authService=require(_0x8af7('0x12'));var qs=require(_0x8af7('0x13'));var as=require(_0x8af7('0x14'));var hardwareService=require(_0x8af7('0x15'));var logger=require(_0x8af7('0x16'))(_0x8af7('0x17'));var utils=require(_0x8af7('0x18'));var config=require(_0x8af7('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x234a36,_0x1814b9){_0x1814b9=_0x1814b9||0xcc;return function(_0x2f6418){if(_0x2f6418){return _0x234a36[_0x8af7('0x1a')](_0x1814b9);}return _0x234a36['status'](_0x1814b9)['end']();};}function respondWithResult(_0x59d6f6,_0x2955e0){_0x2955e0=_0x2955e0||0xc8;return function(_0x5bca19){if(_0x5bca19){return _0x59d6f6[_0x8af7('0x1b')](_0x2955e0)['json'](_0x5bca19);}};}function respondWithFilteredResult(_0x1e5e2b,_0x20dce3){return function(_0x547cbf){if(_0x547cbf){var _0x456ca7=typeof _0x20dce3[_0x8af7('0x1c')]===_0x8af7('0x1d')&&typeof _0x20dce3[_0x8af7('0x1e')]===_0x8af7('0x1d');var _0x5d133b=_0x547cbf[_0x8af7('0x1f')];var _0x506003=_0x456ca7?0x0:_0x20dce3[_0x8af7('0x1c')];var _0x52e18e=_0x456ca7?_0x547cbf[_0x8af7('0x1f')]:_0x20dce3[_0x8af7('0x1c')]+_0x20dce3[_0x8af7('0x1e')];var _0xaf2b55;if(_0x52e18e>=_0x5d133b){_0x52e18e=_0x5d133b;_0xaf2b55=0xc8;}else{_0xaf2b55=0xce;}_0x1e5e2b[_0x8af7('0x1b')](_0xaf2b55);return _0x1e5e2b[_0x8af7('0x20')](_0x8af7('0x21'),_0x506003+'-'+_0x52e18e+'/'+_0x5d133b)[_0x8af7('0x22')](_0x547cbf);}return null;};}function patchUpdates(_0x344c0b){return function(_0x1c5099){try{jsonpatch[_0x8af7('0x23')](_0x1c5099,_0x344c0b,!![]);}catch(_0x4c1bb9){return BPromise['reject'](_0x4c1bb9);}return _0x1c5099[_0x8af7('0x24')]();};}function saveUpdates(_0x4aecb2,_0x2fd356){return function(_0x57d44e){if(_0x57d44e){return _0x57d44e[_0x8af7('0x25')](_0x4aecb2)[_0x8af7('0x26')](function(_0x299679){return _0x299679;});}return null;};}function removeEntity(_0x1aedff,_0x2e925c){return function(_0x5d960a){if(_0x5d960a){return _0x5d960a[_0x8af7('0x27')]()[_0x8af7('0x26')](function(){_0x1aedff[_0x8af7('0x1b')](0xcc)[_0x8af7('0x28')]();});}};}function handleEntityNotFound(_0x45a65a,_0x1f4c52){return function(_0xe7f23b){if(!_0xe7f23b){_0x45a65a[_0x8af7('0x1a')](0x194);}return _0xe7f23b;};}function handleError(_0x142825,_0x40c152){_0x40c152=_0x40c152||0x1f4;return function(_0x68a2f8){logger[_0x8af7('0x29')](_0x68a2f8['stack']);if(_0x68a2f8['name']){delete _0x68a2f8['name'];}_0x142825[_0x8af7('0x1b')](_0x40c152)[_0x8af7('0x2a')](_0x68a2f8);};}exports[_0x8af7('0x2b')]=function(_0x15095a,_0x7166e5){var _0x48df3e={},_0x34c995={},_0x5bd380={'count':0x0,'rows':[]};var _0x519c48=_[_0x8af7('0x2c')](db[_0x8af7('0x2d')][_0x8af7('0x2e')],function(_0x5e5923){return{'name':_0x5e5923[_0x8af7('0x2f')],'type':_0x5e5923[_0x8af7('0x30')][_0x8af7('0x31')]};});_0x34c995[_0x8af7('0x32')]=_[_0x8af7('0x2c')](_0x519c48,'name');_0x34c995[_0x8af7('0x33')]=_[_0x8af7('0x34')](_0x15095a[_0x8af7('0x33')]);_0x34c995[_0x8af7('0x35')]=_[_0x8af7('0x36')](_0x34c995['model'],_0x34c995[_0x8af7('0x33')]);_0x48df3e[_0x8af7('0x37')]=_['intersection'](_0x34c995[_0x8af7('0x32')],qs[_0x8af7('0x38')](_0x15095a[_0x8af7('0x33')][_0x8af7('0x38')]));_0x48df3e[_0x8af7('0x37')]=_0x48df3e[_0x8af7('0x37')][_0x8af7('0x39')]?_0x48df3e[_0x8af7('0x37')]:_0x34c995[_0x8af7('0x32')];if(!_0x15095a[_0x8af7('0x33')][_0x8af7('0x3a')]('nolimit')){_0x48df3e[_0x8af7('0x1e')]=qs[_0x8af7('0x1e')](_0x15095a[_0x8af7('0x33')][_0x8af7('0x1e')]);_0x48df3e[_0x8af7('0x1c')]=qs['offset'](_0x15095a['query'][_0x8af7('0x1c')]);}_0x48df3e[_0x8af7('0x3b')]=qs[_0x8af7('0x3c')](_0x15095a['query'][_0x8af7('0x3c')]);_0x48df3e['where']=qs[_0x8af7('0x35')](_[_0x8af7('0x3d')](_0x15095a['query'],_0x34c995[_0x8af7('0x35')]),_0x519c48);if(_0x15095a[_0x8af7('0x33')]['filter']){_0x48df3e[_0x8af7('0x3e')]=_[_0x8af7('0x3f')](_0x48df3e[_0x8af7('0x3e')],{'$or':_[_0x8af7('0x2c')](_0x519c48,function(_0x3a6f28){if(_0x3a6f28[_0x8af7('0x30')]!==_0x8af7('0x40')){var _0x5e945b={};_0x5e945b[_0x3a6f28['name']]={'$like':'%'+_0x15095a[_0x8af7('0x33')][_0x8af7('0x41')]+'%'};return _0x5e945b;}})});}_0x48df3e=_['merge']({},_0x48df3e,_0x15095a[_0x8af7('0x42')]);var _0x59b4b1={'where':_0x48df3e[_0x8af7('0x3e')]};return db[_0x8af7('0x2d')][_0x8af7('0x1f')](_0x59b4b1)[_0x8af7('0x26')](function(_0x40b181){_0x5bd380[_0x8af7('0x1f')]=_0x40b181;if(_0x15095a[_0x8af7('0x33')][_0x8af7('0x43')]){_0x48df3e[_0x8af7('0x44')]=[{'all':!![]}];}return db[_0x8af7('0x2d')]['findAll'](_0x48df3e);})['then'](function(_0x37ec00){_0x5bd380[_0x8af7('0x45')]=_0x37ec00;return _0x5bd380;})[_0x8af7('0x26')](respondWithFilteredResult(_0x7166e5,_0x48df3e))[_0x8af7('0x46')](handleError(_0x7166e5,null));};exports[_0x8af7('0x47')]=function(_0x381635,_0x130ca8){var _0x95b8bc={'raw':!![],'where':{'id':_0x381635[_0x8af7('0x48')]['id']}},_0x349542={};_0x349542['model']=_[_0x8af7('0x34')](db[_0x8af7('0x2d')][_0x8af7('0x2e')]);_0x349542[_0x8af7('0x33')]=_[_0x8af7('0x34')](_0x381635[_0x8af7('0x33')]);_0x349542['filters']=_[_0x8af7('0x36')](_0x349542[_0x8af7('0x32')],_0x349542[_0x8af7('0x33')]);_0x95b8bc[_0x8af7('0x37')]=_[_0x8af7('0x36')](_0x349542[_0x8af7('0x32')],qs[_0x8af7('0x38')](_0x381635[_0x8af7('0x33')][_0x8af7('0x38')]));_0x95b8bc[_0x8af7('0x37')]=_0x95b8bc[_0x8af7('0x37')][_0x8af7('0x39')]?_0x95b8bc['attributes']:_0x349542[_0x8af7('0x32')];if(_0x381635[_0x8af7('0x33')][_0x8af7('0x43')]){_0x95b8bc[_0x8af7('0x44')]=[{'all':!![]}];}_0x95b8bc=_[_0x8af7('0x3f')]({},_0x95b8bc,_0x381635['options']);return db[_0x8af7('0x2d')][_0x8af7('0x49')](_0x95b8bc)[_0x8af7('0x26')](handleEntityNotFound(_0x130ca8,null))[_0x8af7('0x26')](respondWithResult(_0x130ca8,null))['catch'](handleError(_0x130ca8,null));};exports['create']=function(_0x40e567,_0x26ebab){return db['OpenchannelQueueReport'][_0x8af7('0x4a')](_0x40e567[_0x8af7('0x4b')],{})[_0x8af7('0x26')](respondWithResult(_0x26ebab,0xc9))['catch'](handleError(_0x26ebab,null));};exports[_0x8af7('0x25')]=function(_0x236148,_0x58f71f){if(_0x236148[_0x8af7('0x4b')]['id']){delete _0x236148['body']['id'];}return db['OpenchannelQueueReport'][_0x8af7('0x49')]({'where':{'id':_0x236148['params']['id']}})['then'](handleEntityNotFound(_0x58f71f,null))['then'](saveUpdates(_0x236148[_0x8af7('0x4b')],null))[_0x8af7('0x26')](respondWithResult(_0x58f71f,null))[_0x8af7('0x46')](handleError(_0x58f71f,null));};exports[_0x8af7('0x27')]=function(_0x48f036,_0x34ad57){return db[_0x8af7('0x2d')][_0x8af7('0x49')]({'where':{'id':_0x48f036[_0x8af7('0x48')]['id']}})[_0x8af7('0x26')](handleEntityNotFound(_0x34ad57,null))[_0x8af7('0x26')](removeEntity(_0x34ad57,null))[_0x8af7('0x46')](handleError(_0x34ad57,null));};exports[_0x8af7('0x4c')]=function(_0x5c94c1,_0x158a76){return db[_0x8af7('0x2d')][_0x8af7('0x4c')]()[_0x8af7('0x26')](respondWithResult(_0x158a76,null))['catch'](handleError(_0x158a76,null));};
\ No newline at end of file
index b6cf9fb..06b69b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','define','report_openchannel_queue','uniqueid','util'];(function(_0x1eda78,_0x3eb4f2){var _0x3dba39=function(_0x58c93e){while(--_0x58c93e){_0x1eda78['push'](_0x1eda78['shift']());}};_0x3dba39(++_0x3eb4f2);}(_0x1261,0x144));var _0x1126=function(_0x225d44,_0x399b52){_0x225d44=_0x225d44-0x0;var _0x4aa98a=_0x1261[_0x225d44];return _0x4aa98a;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var logger=require(_0x1126('0x1'))(_0x1126('0x2'));var moment=require(_0x1126('0x3'));var BPromise=require(_0x1126('0x4'));var rp=require(_0x1126('0x5'));var fs=require('fs');var path=require(_0x1126('0x6'));var rimraf=require(_0x1126('0x7'));var config=require(_0x1126('0x8'));var attributes=require(_0x1126('0x9'));module['exports']=function(_0x5c68c8,_0x40ba58){return _0x5c68c8[_0x1126('0xa')]('OpenchannelQueueReport',attributes,{'tableName':_0x1126('0xb'),'paranoid':![],'indexes':[{'name':_0x1126('0xc'),'fields':[_0x1126('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x814b=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','uniqueid','lodash','util'];(function(_0x32b122,_0x1ad490){var _0x4ad25a=function(_0x590ee6){while(--_0x590ee6){_0x32b122['push'](_0x32b122['shift']());}};_0x4ad25a(++_0x1ad490);}(_0x814b,0x1a2));var _0xb814=function(_0x5016c9,_0x57cdf0){_0x5016c9=_0x5016c9-0x0;var _0x5371ee=_0x814b[_0x5016c9];return _0x5371ee;};'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 b36d089..d237057 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34b7=['create','body','options','raw','then','UpdateOpenchannelQueueReport','update','where','attributes','limit','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','info','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelQueueReport,\x20%s,\x20%s','message','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport'];(function(_0x486585,_0x415233){var _0x216cb2=function(_0x7f6aad){while(--_0x7f6aad){_0x486585['push'](_0x486585['shift']());}};_0x216cb2(++_0x415233);}(_0x34b7,0x196));var _0x734b=function(_0x1cd5b1,_0x58dd23){_0x1cd5b1=_0x1cd5b1-0x0;var _0x25b4c7=_0x34b7[_0x1cd5b1];return _0x25b4c7;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x734b('0x0'));var BPromise=require(_0x734b('0x1'));var rs=require(_0x734b('0x2'));var fs=require('fs');var Redis=require(_0x734b('0x3'));var db=require(_0x734b('0x4'))['db'];var utils=require(_0x734b('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x734b('0x6'));var jayson=require(_0x734b('0x7'));var client=jayson[_0x734b('0x8')][_0x734b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x28918a,_0x35d685,_0x58e2f1){return new BPromise(function(_0x1eb803,_0x2e7932){return client['request'](_0x28918a,_0x58e2f1)['then'](function(_0x5f4b3a){logger[_0x734b('0xa')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x35d685,_0x734b('0xb'));logger[_0x734b('0xc')](_0x734b('0xd'),_0x35d685,_0x734b('0xb'),JSON[_0x734b('0xe')](_0x5f4b3a));if(_0x5f4b3a[_0x734b('0xf')]){if(_0x5f4b3a[_0x734b('0xf')][_0x734b('0x10')]===0x1f4){logger[_0x734b('0xf')](_0x734b('0x11'),_0x35d685,_0x5f4b3a[_0x734b('0xf')][_0x734b('0x12')]);return _0x2e7932(_0x5f4b3a[_0x734b('0xf')][_0x734b('0x12')]);}logger['error'](_0x734b('0x11'),_0x35d685,_0x5f4b3a[_0x734b('0xf')][_0x734b('0x12')]);return _0x1eb803(_0x5f4b3a[_0x734b('0xf')][_0x734b('0x12')]);}else{logger[_0x734b('0xa')](_0x734b('0x11'),_0x35d685,_0x734b('0xb'));_0x1eb803(_0x5f4b3a[_0x734b('0x13')][_0x734b('0x12')]);}})[_0x734b('0x14')](function(_0x4d2d23){logger[_0x734b('0xf')](_0x734b('0x11'),_0x35d685,_0x4d2d23);_0x2e7932(_0x4d2d23);});});}exports[_0x734b('0x15')]=function(_0x5edbe9){var _0x4d3b9c=this;return new Promise(function(_0x56a95c,_0xcd12a1){return db[_0x734b('0x16')][_0x734b('0x17')](_0x5edbe9[_0x734b('0x18')],{'raw':_0x5edbe9[_0x734b('0x19')]?_0x5edbe9[_0x734b('0x19')][_0x734b('0x1a')]===undefined?!![]:![]:!![]})[_0x734b('0x1b')](function(_0x67eed){logger[_0x734b('0xa')](_0x734b('0x15'),_0x5edbe9);logger[_0x734b('0xc')](_0x734b('0x15'),_0x5edbe9,JSON[_0x734b('0xe')](_0x67eed));_0x56a95c(_0x67eed);})['catch'](function(_0x1e4dcc){logger[_0x734b('0xf')]('CreateOpenchannelQueueReport',_0x1e4dcc[_0x734b('0x12')],_0x5edbe9);_0xcd12a1(_0x4d3b9c[_0x734b('0xf')](0x1f4,_0x1e4dcc[_0x734b('0x12')]));});});};exports[_0x734b('0x1c')]=function(_0x46d432){var _0x26d118=this;return new Promise(function(_0x26eccf,_0x104fff){return db[_0x734b('0x16')][_0x734b('0x1d')](_0x46d432[_0x734b('0x18')],{'raw':_0x46d432[_0x734b('0x19')]?_0x46d432[_0x734b('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x46d432['options']?_0x46d432[_0x734b('0x19')][_0x734b('0x1e')]||null:null,'attributes':_0x46d432['options']?_0x46d432[_0x734b('0x19')][_0x734b('0x1f')]||null:null,'limit':_0x46d432[_0x734b('0x19')]?_0x46d432[_0x734b('0x19')][_0x734b('0x20')]||null:null})[_0x734b('0x1b')](function(_0x3ba39c){logger['info'](_0x734b('0x1c'),_0x46d432);logger[_0x734b('0xc')](_0x734b('0x1c'),_0x46d432,JSON[_0x734b('0xe')](_0x3ba39c));_0x26eccf(_0x3ba39c);})[_0x734b('0x14')](function(_0x427c36){logger[_0x734b('0xf')](_0x734b('0x1c'),_0x427c36[_0x734b('0x12')],_0x46d432);_0x104fff(_0x26d118[_0x734b('0xf')](0x1f4,_0x427c36['message']));});});};
\ No newline at end of file
+var _0xb78e=['rpc','../../config/environment','client','http','then','info','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','body','options','update','where','limit','UpdateOpenchannelQueueReport','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x24c81e,_0x48843c){var _0x162bd2=function(_0x15a5de){while(--_0x15a5de){_0x24c81e['push'](_0x24c81e['shift']());}};_0x162bd2(++_0x48843c);}(_0xb78e,0x1c9));var _0xeb78=function(_0x21869e,_0x422ef7){_0x21869e=_0x21869e-0x0;var _0x509a52=_0xb78e[_0x21869e];return _0x509a52;};'use strict';var _=require(_0xeb78('0x0'));var util=require(_0xeb78('0x1'));var moment=require('moment');var BPromise=require(_0xeb78('0x2'));var rs=require(_0xeb78('0x3'));var fs=require('fs');var Redis=require(_0xeb78('0x4'));var db=require(_0xeb78('0x5'))['db'];var utils=require(_0xeb78('0x6'));var logger=require(_0xeb78('0x7'))(_0xeb78('0x8'));var config=require(_0xeb78('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xeb78('0xa')][_0xeb78('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1ccc2f,_0x30c884,_0x2b7925){return new BPromise(function(_0x36963f,_0x5259aa){return client['request'](_0x1ccc2f,_0x2b7925)[_0xeb78('0xc')](function(_0x1c941d){logger[_0xeb78('0xd')](_0xeb78('0xe'),_0x30c884,_0xeb78('0xf'));logger[_0xeb78('0x10')](_0xeb78('0x11'),_0x30c884,_0xeb78('0xf'),JSON[_0xeb78('0x12')](_0x1c941d));if(_0x1c941d['error']){if(_0x1c941d[_0xeb78('0x13')][_0xeb78('0x14')]===0x1f4){logger[_0xeb78('0x13')](_0xeb78('0xe'),_0x30c884,_0x1c941d[_0xeb78('0x13')][_0xeb78('0x15')]);return _0x5259aa(_0x1c941d[_0xeb78('0x13')][_0xeb78('0x15')]);}logger[_0xeb78('0x13')](_0xeb78('0xe'),_0x30c884,_0x1c941d['error'][_0xeb78('0x15')]);return _0x36963f(_0x1c941d[_0xeb78('0x13')]['message']);}else{logger['info']('OpenchannelQueueReport,\x20%s,\x20%s',_0x30c884,_0xeb78('0xf'));_0x36963f(_0x1c941d['result'][_0xeb78('0x15')]);}})[_0xeb78('0x16')](function(_0x49123d){logger[_0xeb78('0x13')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x30c884,_0x49123d);_0x5259aa(_0x49123d);});});}exports[_0xeb78('0x17')]=function(_0x92e410){var _0x576802=this;return new Promise(function(_0x45176e,_0xb97756){return db[_0xeb78('0x18')]['create'](_0x92e410[_0xeb78('0x19')],{'raw':_0x92e410[_0xeb78('0x1a')]?_0x92e410['options']['raw']===undefined?!![]:![]:!![]})[_0xeb78('0xc')](function(_0x106c5d){logger[_0xeb78('0xd')](_0xeb78('0x17'),_0x92e410);logger[_0xeb78('0x10')](_0xeb78('0x17'),_0x92e410,JSON[_0xeb78('0x12')](_0x106c5d));_0x45176e(_0x106c5d);})[_0xeb78('0x16')](function(_0x18f08d){logger['error']('CreateOpenchannelQueueReport',_0x18f08d['message'],_0x92e410);_0xb97756(_0x576802['error'](0x1f4,_0x18f08d[_0xeb78('0x15')]));});});};exports['UpdateOpenchannelQueueReport']=function(_0x2159c1){var _0x1fbf2f=this;return new Promise(function(_0x566336,_0x777ca3){return db['OpenchannelQueueReport'][_0xeb78('0x1b')](_0x2159c1[_0xeb78('0x19')],{'raw':_0x2159c1[_0xeb78('0x1a')]?_0x2159c1[_0xeb78('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2159c1[_0xeb78('0x1a')]?_0x2159c1['options'][_0xeb78('0x1c')]||null:null,'attributes':_0x2159c1[_0xeb78('0x1a')]?_0x2159c1[_0xeb78('0x1a')]['attributes']||null:null,'limit':_0x2159c1[_0xeb78('0x1a')]?_0x2159c1[_0xeb78('0x1a')][_0xeb78('0x1d')]||null:null})[_0xeb78('0xc')](function(_0x3d4a97){logger[_0xeb78('0xd')](_0xeb78('0x1e'),_0x2159c1);logger[_0xeb78('0x10')](_0xeb78('0x1e'),_0x2159c1,JSON[_0xeb78('0x12')](_0x3d4a97));_0x566336(_0x3d4a97);})[_0xeb78('0x16')](function(_0x505468){logger['error']('UpdateOpenchannelQueueReport',_0x505468[_0xeb78('0x15')],_0x2159c1);_0x777ca3(_0x1fbf2f[_0xeb78('0x13')](0x1f4,_0x505468[_0xeb78('0x15')]));});});};
\ No newline at end of file
index 5a7fc75..3e34e43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0ef=['/:id','update','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get','isAuthenticated','index','/describe','describe','show','post','create','put'];(function(_0x8267aa,_0x496ef0){var _0x2a437f=function(_0x447f72){while(--_0x447f72){_0x8267aa['push'](_0x8267aa['shift']());}};_0x2a437f(++_0x496ef0);}(_0xb0ef,0x1d0));var _0xfb0e=function(_0x109c7f,_0x30f10a){_0x109c7f=_0x109c7f-0x0;var _0x2e9b7b=_0xb0ef[_0x109c7f];return _0x2e9b7b;};'use strict';var multer=require(_0xfb0e('0x0'));var util=require(_0xfb0e('0x1'));var path=require('path');var timeout=require(_0xfb0e('0x2'));var express=require(_0xfb0e('0x3'));var router=express[_0xfb0e('0x4')]();var fs_extra=require(_0xfb0e('0x5'));var auth=require(_0xfb0e('0x6'));var interaction=require(_0xfb0e('0x7'));var config=require(_0xfb0e('0x8'));var controller=require(_0xfb0e('0x9'));router[_0xfb0e('0xa')]('/',auth[_0xfb0e('0xb')](),controller[_0xfb0e('0xc')]);router['get'](_0xfb0e('0xd'),auth[_0xfb0e('0xb')](),controller[_0xfb0e('0xe')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xfb0e('0xf')]);router[_0xfb0e('0x10')]('/',auth['isAuthenticated'](),controller[_0xfb0e('0x11')]);router[_0xfb0e('0x12')](_0xfb0e('0x13'),auth['isAuthenticated'](),controller[_0xfb0e('0x14')]);router['delete'](_0xfb0e('0x13'),auth[_0xfb0e('0xb')](),controller[_0xfb0e('0x15')]);module[_0xfb0e('0x16')]=router;
\ No newline at end of file
+var _0x1b16=['post','create','put','/:id','update','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./openchannelTransferReport.controller','get','isAuthenticated','index','/describe','describe','show'];(function(_0x5c78d9,_0x2736c7){var _0x69ae1f=function(_0x4b31ac){while(--_0x4b31ac){_0x5c78d9['push'](_0x5c78d9['shift']());}};_0x69ae1f(++_0x2736c7);}(_0x1b16,0x12d));var _0x61b1=function(_0xbdc13e,_0x2c3175){_0xbdc13e=_0xbdc13e-0x0;var _0x4af12b=_0x1b16[_0xbdc13e];return _0x4af12b;};'use strict';var multer=require(_0x61b1('0x0'));var util=require(_0x61b1('0x1'));var path=require('path');var timeout=require(_0x61b1('0x2'));var express=require(_0x61b1('0x3'));var router=express[_0x61b1('0x4')]();var fs_extra=require(_0x61b1('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x61b1('0x6'));var config=require('../../config/environment');var controller=require(_0x61b1('0x7'));router[_0x61b1('0x8')]('/',auth[_0x61b1('0x9')](),controller[_0x61b1('0xa')]);router[_0x61b1('0x8')](_0x61b1('0xb'),auth[_0x61b1('0x9')](),controller[_0x61b1('0xc')]);router[_0x61b1('0x8')]('/:id',auth[_0x61b1('0x9')](),controller[_0x61b1('0xd')]);router[_0x61b1('0xe')]('/',auth[_0x61b1('0x9')](),controller[_0x61b1('0xf')]);router[_0x61b1('0x10')](_0x61b1('0x11'),auth[_0x61b1('0x9')](),controller[_0x61b1('0x12')]);router[_0x61b1('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x61b1('0x14')]);module['exports']=router;
\ No newline at end of file
index cf6a13e..14c95c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x422be2,_0x1c439e){var _0x1b820e=function(_0x513cc8){while(--_0x513cc8){_0x422be2['push'](_0x422be2['shift']());}};_0x1b820e(++_0x1c439e);}(_0x9bde,0xe1));var _0xe9bd=function(_0x47ec7a,_0x16a733){_0x47ec7a=_0x47ec7a-0x0;var _0x47cb63=_0x9bde[_0x47ec7a];return _0x47cb63;};'use strict';var moment=require('moment');var Sequelize=require(_0xe9bd('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xe9bd('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xe9bd('0x2'),_0xe9bd('0x3'),_0xe9bd('0x4')),'allowNull':![],'defaultValue':_0xe9bd('0x4')},'transferredAt':{'type':Sequelize[_0xe9bd('0x5')],'allowNull':![],'defaultValue':Sequelize[_0xe9bd('0x6')]}};
\ No newline at end of file
+var _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0x5edc27,_0x124762){var _0xfdced3=function(_0x3ff36e){while(--_0x3ff36e){_0x5edc27['push'](_0x5edc27['shift']());}};_0xfdced3(++_0x124762);}(_0xedd9,0xfc));var _0x9edd=function(_0x2c18a6,_0x5359b1){_0x2c18a6=_0x2c18a6-0x0;var _0x1d15c0=_0xedd9[_0x2c18a6];return _0x1d15c0;};'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
index e8637af..124e9f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3d7=['mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','status','end','offset','limit','undefined','count','set','json','apply','save','then','destroy','stack','name','index','map','OpenchannelTransferReport','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','length','hasOwnProperty','order','sort','where','pick','VIRTUAL','filter','merge','options','include','findAll','rows','catch','params','fields','includeAll','create','body','update','find','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird'];(function(_0x362218,_0x171f8d){var _0x3de6a3=function(_0x561c5f){while(--_0x561c5f){_0x362218['push'](_0x362218['shift']());}};_0x3de6a3(++_0x171f8d);}(_0xb3d7,0x1b6));var _0x7b3d=function(_0x305a7f,_0x10ce25){_0x305a7f=_0x305a7f-0x0;var _0x770993=_0xb3d7[_0x305a7f];return _0x770993;};'use strict';var emlformat=require(_0x7b3d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7b3d('0x1'));var jsonpatch=require(_0x7b3d('0x2'));var rp=require(_0x7b3d('0x3'));var moment=require(_0x7b3d('0x4'));var BPromise=require(_0x7b3d('0x5'));var Mustache=require(_0x7b3d('0x6'));var util=require(_0x7b3d('0x7'));var path=require(_0x7b3d('0x8'));var sox=require('sox');var csv=require(_0x7b3d('0x9'));var ejs=require(_0x7b3d('0xa'));var fs=require('fs');var fs_extra=require(_0x7b3d('0xb'));var _=require(_0x7b3d('0xc'));var squel=require(_0x7b3d('0xd'));var crypto=require(_0x7b3d('0xe'));var jsforce=require(_0x7b3d('0xf'));var deskjs=require(_0x7b3d('0x10'));var toCsv=require(_0x7b3d('0x9'));var querystring=require(_0x7b3d('0x11'));var Papa=require(_0x7b3d('0x12'));var Redis=require(_0x7b3d('0x13'));var authService=require(_0x7b3d('0x14'));var qs=require(_0x7b3d('0x15'));var as=require(_0x7b3d('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7b3d('0x17'))(_0x7b3d('0x18'));var utils=require('../../config/utils');var config=require(_0x7b3d('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4eb481,_0x5c4c87){_0x5c4c87=_0x5c4c87||0xcc;return function(_0x2ff3c1){if(_0x2ff3c1){return _0x4eb481['sendStatus'](_0x5c4c87);}return _0x4eb481[_0x7b3d('0x1a')](_0x5c4c87)[_0x7b3d('0x1b')]();};}function respondWithResult(_0x250040,_0x18c956){_0x18c956=_0x18c956||0xc8;return function(_0x235366){if(_0x235366){return _0x250040['status'](_0x18c956)['json'](_0x235366);}};}function respondWithFilteredResult(_0x150ddc,_0x57907b){return function(_0x4b1e58){if(_0x4b1e58){var _0x564abc=typeof _0x57907b[_0x7b3d('0x1c')]==='undefined'&&typeof _0x57907b[_0x7b3d('0x1d')]===_0x7b3d('0x1e');var _0x34a40e=_0x4b1e58['count'];var _0x43eecb=_0x564abc?0x0:_0x57907b[_0x7b3d('0x1c')];var _0x30fb00=_0x564abc?_0x4b1e58[_0x7b3d('0x1f')]:_0x57907b[_0x7b3d('0x1c')]+_0x57907b['limit'];var _0x1bd4f9;if(_0x30fb00>=_0x34a40e){_0x30fb00=_0x34a40e;_0x1bd4f9=0xc8;}else{_0x1bd4f9=0xce;}_0x150ddc[_0x7b3d('0x1a')](_0x1bd4f9);return _0x150ddc[_0x7b3d('0x20')]('Content-Range',_0x43eecb+'-'+_0x30fb00+'/'+_0x34a40e)[_0x7b3d('0x21')](_0x4b1e58);}return null;};}function patchUpdates(_0x2bba36){return function(_0x1a9c70){try{jsonpatch[_0x7b3d('0x22')](_0x1a9c70,_0x2bba36,!![]);}catch(_0x20ee4e){return BPromise['reject'](_0x20ee4e);}return _0x1a9c70[_0x7b3d('0x23')]();};}function saveUpdates(_0x4efc42,_0x50bf76){return function(_0x4e46df){if(_0x4e46df){return _0x4e46df['update'](_0x4efc42)[_0x7b3d('0x24')](function(_0x4ecb4f){return _0x4ecb4f;});}return null;};}function removeEntity(_0x3e17df,_0xa6c9cf){return function(_0x40f8c7){if(_0x40f8c7){return _0x40f8c7[_0x7b3d('0x25')]()[_0x7b3d('0x24')](function(){_0x3e17df[_0x7b3d('0x1a')](0xcc)[_0x7b3d('0x1b')]();});}};}function handleEntityNotFound(_0x193556,_0x5c832b){return function(_0x1353b9){if(!_0x1353b9){_0x193556['sendStatus'](0x194);}return _0x1353b9;};}function handleError(_0x156af4,_0x2eb569){_0x2eb569=_0x2eb569||0x1f4;return function(_0x33746c){logger['error'](_0x33746c[_0x7b3d('0x26')]);if(_0x33746c[_0x7b3d('0x27')]){delete _0x33746c['name'];}_0x156af4[_0x7b3d('0x1a')](_0x2eb569)['send'](_0x33746c);};}exports[_0x7b3d('0x28')]=function(_0x54ebb0,_0x1c1b65){var _0x4ded29={},_0x4040af={},_0x42a335={'count':0x0,'rows':[]};var _0xf1f7aa=_[_0x7b3d('0x29')](db[_0x7b3d('0x2a')][_0x7b3d('0x2b')],function(_0x82a160){return{'name':_0x82a160[_0x7b3d('0x2c')],'type':_0x82a160[_0x7b3d('0x2d')]['key']};});_0x4040af[_0x7b3d('0x2e')]=_[_0x7b3d('0x29')](_0xf1f7aa,'name');_0x4040af['query']=_[_0x7b3d('0x2f')](_0x54ebb0[_0x7b3d('0x30')]);_0x4040af[_0x7b3d('0x31')]=_[_0x7b3d('0x32')](_0x4040af[_0x7b3d('0x2e')],_0x4040af['query']);_0x4ded29['attributes']=_[_0x7b3d('0x32')](_0x4040af[_0x7b3d('0x2e')],qs['fields'](_0x54ebb0[_0x7b3d('0x30')]['fields']));_0x4ded29['attributes']=_0x4ded29[_0x7b3d('0x33')][_0x7b3d('0x34')]?_0x4ded29[_0x7b3d('0x33')]:_0x4040af['model'];if(!_0x54ebb0[_0x7b3d('0x30')][_0x7b3d('0x35')]('nolimit')){_0x4ded29[_0x7b3d('0x1d')]=qs[_0x7b3d('0x1d')](_0x54ebb0[_0x7b3d('0x30')][_0x7b3d('0x1d')]);_0x4ded29['offset']=qs[_0x7b3d('0x1c')](_0x54ebb0[_0x7b3d('0x30')][_0x7b3d('0x1c')]);}_0x4ded29[_0x7b3d('0x36')]=qs[_0x7b3d('0x37')](_0x54ebb0['query'][_0x7b3d('0x37')]);_0x4ded29[_0x7b3d('0x38')]=qs[_0x7b3d('0x31')](_[_0x7b3d('0x39')](_0x54ebb0['query'],_0x4040af[_0x7b3d('0x31')]),_0xf1f7aa);if(_0x54ebb0[_0x7b3d('0x30')]['filter']){_0x4ded29[_0x7b3d('0x38')]=_['merge'](_0x4ded29['where'],{'$or':_[_0x7b3d('0x29')](_0xf1f7aa,function(_0x40f6b4){if(_0x40f6b4[_0x7b3d('0x2d')]!==_0x7b3d('0x3a')){var _0x558a17={};_0x558a17[_0x40f6b4[_0x7b3d('0x27')]]={'$like':'%'+_0x54ebb0[_0x7b3d('0x30')][_0x7b3d('0x3b')]+'%'};return _0x558a17;}})});}_0x4ded29=_[_0x7b3d('0x3c')]({},_0x4ded29,_0x54ebb0[_0x7b3d('0x3d')]);var _0x11024d={'where':_0x4ded29[_0x7b3d('0x38')]};return db['OpenchannelTransferReport'][_0x7b3d('0x1f')](_0x11024d)['then'](function(_0x5b543f){_0x42a335[_0x7b3d('0x1f')]=_0x5b543f;if(_0x54ebb0[_0x7b3d('0x30')]['includeAll']){_0x4ded29[_0x7b3d('0x3e')]=[{'all':!![]}];}return db[_0x7b3d('0x2a')][_0x7b3d('0x3f')](_0x4ded29);})['then'](function(_0x21b199){_0x42a335[_0x7b3d('0x40')]=_0x21b199;return _0x42a335;})[_0x7b3d('0x24')](respondWithFilteredResult(_0x1c1b65,_0x4ded29))[_0x7b3d('0x41')](handleError(_0x1c1b65,null));};exports['show']=function(_0x4e066a,_0x49cfcf){var _0x2cd053={'raw':!![],'where':{'id':_0x4e066a[_0x7b3d('0x42')]['id']}},_0x4dfcf9={};_0x4dfcf9[_0x7b3d('0x2e')]=_[_0x7b3d('0x2f')](db[_0x7b3d('0x2a')][_0x7b3d('0x2b')]);_0x4dfcf9[_0x7b3d('0x30')]=_[_0x7b3d('0x2f')](_0x4e066a['query']);_0x4dfcf9[_0x7b3d('0x31')]=_[_0x7b3d('0x32')](_0x4dfcf9[_0x7b3d('0x2e')],_0x4dfcf9[_0x7b3d('0x30')]);_0x2cd053[_0x7b3d('0x33')]=_['intersection'](_0x4dfcf9[_0x7b3d('0x2e')],qs['fields'](_0x4e066a[_0x7b3d('0x30')][_0x7b3d('0x43')]));_0x2cd053[_0x7b3d('0x33')]=_0x2cd053['attributes'][_0x7b3d('0x34')]?_0x2cd053[_0x7b3d('0x33')]:_0x4dfcf9[_0x7b3d('0x2e')];if(_0x4e066a['query'][_0x7b3d('0x44')]){_0x2cd053[_0x7b3d('0x3e')]=[{'all':!![]}];}_0x2cd053=_[_0x7b3d('0x3c')]({},_0x2cd053,_0x4e066a[_0x7b3d('0x3d')]);return db[_0x7b3d('0x2a')]['find'](_0x2cd053)['then'](handleEntityNotFound(_0x49cfcf,null))[_0x7b3d('0x24')](respondWithResult(_0x49cfcf,null))[_0x7b3d('0x41')](handleError(_0x49cfcf,null));};exports['create']=function(_0x20b725,_0x3bf03b){return db[_0x7b3d('0x2a')][_0x7b3d('0x45')](_0x20b725[_0x7b3d('0x46')],{})[_0x7b3d('0x24')](respondWithResult(_0x3bf03b,0xc9))[_0x7b3d('0x41')](handleError(_0x3bf03b,null));};exports[_0x7b3d('0x47')]=function(_0x40a2bf,_0x312168){if(_0x40a2bf[_0x7b3d('0x46')]['id']){delete _0x40a2bf[_0x7b3d('0x46')]['id'];}return db[_0x7b3d('0x2a')][_0x7b3d('0x48')]({'where':{'id':_0x40a2bf[_0x7b3d('0x42')]['id']}})['then'](handleEntityNotFound(_0x312168,null))[_0x7b3d('0x24')](saveUpdates(_0x40a2bf['body'],null))[_0x7b3d('0x24')](respondWithResult(_0x312168,null))[_0x7b3d('0x41')](handleError(_0x312168,null));};exports['destroy']=function(_0x5ed195,_0x15dfdf){return db[_0x7b3d('0x2a')][_0x7b3d('0x48')]({'where':{'id':_0x5ed195[_0x7b3d('0x42')]['id']}})[_0x7b3d('0x24')](handleEntityNotFound(_0x15dfdf,null))[_0x7b3d('0x24')](removeEntity(_0x15dfdf,null))[_0x7b3d('0x41')](handleError(_0x15dfdf,null));};exports[_0x7b3d('0x49')]=function(_0x144ef9,_0xca0030){return db[_0x7b3d('0x2a')][_0x7b3d('0x49')]()[_0x7b3d('0x24')](respondWithResult(_0xca0030,null))[_0x7b3d('0x41')](handleError(_0xca0030,null));};
\ No newline at end of file
+var _0x4629=['papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','error','name','send','index','OpenchannelTransferReport','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','sort','where','filter','map','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','rawAttributes','length','find','create','body','destroy','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','squel','desk.js','querystring'];(function(_0x1fad47,_0x5ea58a){var _0x4c71a1=function(_0xcc6599){while(--_0xcc6599){_0x1fad47['push'](_0x1fad47['shift']());}};_0x4c71a1(++_0x5ea58a);}(_0x4629,0x79));var _0x9462=function(_0x253d2b,_0x49a0fb){_0x253d2b=_0x253d2b-0x0;var _0x3ce8bd=_0x4629[_0x253d2b];return _0x3ce8bd;};'use strict';var emlformat=require(_0x9462('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9462('0x1'));var jsonpatch=require(_0x9462('0x2'));var rp=require(_0x9462('0x3'));var moment=require(_0x9462('0x4'));var BPromise=require(_0x9462('0x5'));var Mustache=require('mustache');var util=require(_0x9462('0x6'));var path=require(_0x9462('0x7'));var sox=require('sox');var csv=require(_0x9462('0x8'));var ejs=require(_0x9462('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x9462('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x9462('0xb'));var toCsv=require('to-csv');var querystring=require(_0x9462('0xc'));var Papa=require(_0x9462('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x9462('0xe'));var as=require(_0x9462('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x9462('0x10'));var licenseUtil=require(_0x9462('0x11'));var db=require(_0x9462('0x12'))['db'];function respondWithStatusCode(_0x42b603,_0x2e6fcf){_0x2e6fcf=_0x2e6fcf||0xcc;return function(_0x49d53b){if(_0x49d53b){return _0x42b603[_0x9462('0x13')](_0x2e6fcf);}return _0x42b603[_0x9462('0x14')](_0x2e6fcf)[_0x9462('0x15')]();};}function respondWithResult(_0x478b3d,_0x483d44){_0x483d44=_0x483d44||0xc8;return function(_0x160e2f){if(_0x160e2f){return _0x478b3d['status'](_0x483d44)[_0x9462('0x16')](_0x160e2f);}};}function respondWithFilteredResult(_0x42e779,_0x7a6865){return function(_0x1f741e){if(_0x1f741e){var _0x33ad90=typeof _0x7a6865[_0x9462('0x17')]===_0x9462('0x18')&&typeof _0x7a6865[_0x9462('0x19')]==='undefined';var _0x4ab890=_0x1f741e[_0x9462('0x1a')];var _0x529ad1=_0x33ad90?0x0:_0x7a6865['offset'];var _0x3e433c=_0x33ad90?_0x1f741e['count']:_0x7a6865['offset']+_0x7a6865['limit'];var _0x50bc8a;if(_0x3e433c>=_0x4ab890){_0x3e433c=_0x4ab890;_0x50bc8a=0xc8;}else{_0x50bc8a=0xce;}_0x42e779[_0x9462('0x14')](_0x50bc8a);return _0x42e779[_0x9462('0x1b')](_0x9462('0x1c'),_0x529ad1+'-'+_0x3e433c+'/'+_0x4ab890)[_0x9462('0x16')](_0x1f741e);}return null;};}function patchUpdates(_0x118652){return function(_0x4c2a40){try{jsonpatch[_0x9462('0x1d')](_0x4c2a40,_0x118652,!![]);}catch(_0x2f7cb1){return BPromise['reject'](_0x2f7cb1);}return _0x4c2a40[_0x9462('0x1e')]();};}function saveUpdates(_0x22995,_0x96cffa){return function(_0x435606){if(_0x435606){return _0x435606[_0x9462('0x1f')](_0x22995)[_0x9462('0x20')](function(_0x589e1d){return _0x589e1d;});}return null;};}function removeEntity(_0x137576,_0x283907){return function(_0x5b6259){if(_0x5b6259){return _0x5b6259['destroy']()[_0x9462('0x20')](function(){_0x137576[_0x9462('0x14')](0xcc)[_0x9462('0x15')]();});}};}function handleEntityNotFound(_0x389e04,_0x3ab454){return function(_0x1a69bf){if(!_0x1a69bf){_0x389e04[_0x9462('0x13')](0x194);}return _0x1a69bf;};}function handleError(_0x39d858,_0x3b241e){_0x3b241e=_0x3b241e||0x1f4;return function(_0x190a61){logger[_0x9462('0x21')](_0x190a61['stack']);if(_0x190a61['name']){delete _0x190a61[_0x9462('0x22')];}_0x39d858[_0x9462('0x14')](_0x3b241e)[_0x9462('0x23')](_0x190a61);};}exports[_0x9462('0x24')]=function(_0x49fa6a,_0x5addf5){var _0x4b68dc={},_0x31c738={},_0x5d3659={'count':0x0,'rows':[]};var _0x51044d=_['map'](db[_0x9462('0x25')]['rawAttributes'],function(_0x27050e){return{'name':_0x27050e['fieldName'],'type':_0x27050e['type'][_0x9462('0x26')]};});_0x31c738[_0x9462('0x27')]=_['map'](_0x51044d,_0x9462('0x22'));_0x31c738['query']=_[_0x9462('0x28')](_0x49fa6a[_0x9462('0x29')]);_0x31c738[_0x9462('0x2a')]=_[_0x9462('0x2b')](_0x31c738[_0x9462('0x27')],_0x31c738['query']);_0x4b68dc[_0x9462('0x2c')]=_[_0x9462('0x2b')](_0x31c738[_0x9462('0x27')],qs[_0x9462('0x2d')](_0x49fa6a[_0x9462('0x29')][_0x9462('0x2d')]));_0x4b68dc[_0x9462('0x2c')]=_0x4b68dc['attributes']['length']?_0x4b68dc[_0x9462('0x2c')]:_0x31c738[_0x9462('0x27')];if(!_0x49fa6a[_0x9462('0x29')][_0x9462('0x2e')]('nolimit')){_0x4b68dc['limit']=qs['limit'](_0x49fa6a[_0x9462('0x29')][_0x9462('0x19')]);_0x4b68dc['offset']=qs['offset'](_0x49fa6a[_0x9462('0x29')]['offset']);}_0x4b68dc['order']=qs[_0x9462('0x2f')](_0x49fa6a[_0x9462('0x29')]['sort']);_0x4b68dc[_0x9462('0x30')]=qs[_0x9462('0x2a')](_['pick'](_0x49fa6a[_0x9462('0x29')],_0x31c738[_0x9462('0x2a')]),_0x51044d);if(_0x49fa6a[_0x9462('0x29')][_0x9462('0x31')]){_0x4b68dc[_0x9462('0x30')]=_['merge'](_0x4b68dc[_0x9462('0x30')],{'$or':_[_0x9462('0x32')](_0x51044d,function(_0xe16b40){if(_0xe16b40['type']!==_0x9462('0x33')){var _0x4eaa0e={};_0x4eaa0e[_0xe16b40['name']]={'$like':'%'+_0x49fa6a['query'][_0x9462('0x31')]+'%'};return _0x4eaa0e;}})});}_0x4b68dc=_[_0x9462('0x34')]({},_0x4b68dc,_0x49fa6a[_0x9462('0x35')]);var _0x1b2d0f={'where':_0x4b68dc[_0x9462('0x30')]};return db[_0x9462('0x25')][_0x9462('0x1a')](_0x1b2d0f)[_0x9462('0x20')](function(_0x369fb7){_0x5d3659['count']=_0x369fb7;if(_0x49fa6a[_0x9462('0x29')][_0x9462('0x36')]){_0x4b68dc[_0x9462('0x37')]=[{'all':!![]}];}return db[_0x9462('0x25')]['findAll'](_0x4b68dc);})['then'](function(_0x573410){_0x5d3659[_0x9462('0x38')]=_0x573410;return _0x5d3659;})[_0x9462('0x20')](respondWithFilteredResult(_0x5addf5,_0x4b68dc))[_0x9462('0x39')](handleError(_0x5addf5,null));};exports[_0x9462('0x3a')]=function(_0x4646d0,_0x1fbaa4){var _0x4b02a4={'raw':!![],'where':{'id':_0x4646d0[_0x9462('0x3b')]['id']}},_0x364827={};_0x364827[_0x9462('0x27')]=_[_0x9462('0x28')](db[_0x9462('0x25')][_0x9462('0x3c')]);_0x364827[_0x9462('0x29')]=_['keys'](_0x4646d0[_0x9462('0x29')]);_0x364827[_0x9462('0x2a')]=_[_0x9462('0x2b')](_0x364827[_0x9462('0x27')],_0x364827[_0x9462('0x29')]);_0x4b02a4[_0x9462('0x2c')]=_['intersection'](_0x364827['model'],qs[_0x9462('0x2d')](_0x4646d0['query'][_0x9462('0x2d')]));_0x4b02a4[_0x9462('0x2c')]=_0x4b02a4['attributes'][_0x9462('0x3d')]?_0x4b02a4['attributes']:_0x364827[_0x9462('0x27')];if(_0x4646d0[_0x9462('0x29')]['includeAll']){_0x4b02a4['include']=[{'all':!![]}];}_0x4b02a4=_['merge']({},_0x4b02a4,_0x4646d0[_0x9462('0x35')]);return db[_0x9462('0x25')][_0x9462('0x3e')](_0x4b02a4)['then'](handleEntityNotFound(_0x1fbaa4,null))[_0x9462('0x20')](respondWithResult(_0x1fbaa4,null))[_0x9462('0x39')](handleError(_0x1fbaa4,null));};exports['create']=function(_0x1af829,_0xf7d8db){return db['OpenchannelTransferReport'][_0x9462('0x3f')](_0x1af829[_0x9462('0x40')],{})[_0x9462('0x20')](respondWithResult(_0xf7d8db,0xc9))[_0x9462('0x39')](handleError(_0xf7d8db,null));};exports[_0x9462('0x1f')]=function(_0x31e847,_0x32c9e5){if(_0x31e847[_0x9462('0x40')]['id']){delete _0x31e847['body']['id'];}return db['OpenchannelTransferReport'][_0x9462('0x3e')]({'where':{'id':_0x31e847['params']['id']}})['then'](handleEntityNotFound(_0x32c9e5,null))['then'](saveUpdates(_0x31e847[_0x9462('0x40')],null))[_0x9462('0x20')](respondWithResult(_0x32c9e5,null))[_0x9462('0x39')](handleError(_0x32c9e5,null));};exports[_0x9462('0x41')]=function(_0x67451c,_0x33876a){return db[_0x9462('0x25')]['find']({'where':{'id':_0x67451c['params']['id']}})[_0x9462('0x20')](handleEntityNotFound(_0x33876a,null))['then'](removeEntity(_0x33876a,null))['catch'](handleError(_0x33876a,null));};exports[_0x9462('0x42')]=function(_0x45455c,_0x2de95a){return db[_0x9462('0x25')][_0x9462('0x42')]()[_0x9462('0x20')](respondWithResult(_0x2de95a,null))[_0x9462('0x39')](handleError(_0x2de95a,null));};
\ No newline at end of file
index f726247..4e5e472 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed9e=['moment','request-promise','path','../../config/environment','./openchannelTransferReport.attributes','exports','OpenchannelTransferReport','uniqueid','lodash','util','../../config/logger','api'];(function(_0x413887,_0x2ea3f1){var _0x5d66aa=function(_0x52f1f8){while(--_0x52f1f8){_0x413887['push'](_0x413887['shift']());}};_0x5d66aa(++_0x2ea3f1);}(_0xed9e,0x80));var _0xeed9=function(_0x21e1b0,_0x1dc248){_0x21e1b0=_0x21e1b0-0x0;var _0x111c01=_0xed9e[_0x21e1b0];return _0x111c01;};'use strict';var _=require(_0xeed9('0x0'));var util=require(_0xeed9('0x1'));var logger=require(_0xeed9('0x2'))(_0xeed9('0x3'));var moment=require(_0xeed9('0x4'));var BPromise=require('bluebird');var rp=require(_0xeed9('0x5'));var fs=require('fs');var path=require(_0xeed9('0x6'));var rimraf=require('rimraf');var config=require(_0xeed9('0x7'));var attributes=require(_0xeed9('0x8'));module[_0xeed9('0x9')]=function(_0x806da6,_0xe31679){return _0x806da6['define'](_0xeed9('0xa'),attributes,{'tableName':'report_openchannel_transfer','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xeed9('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd7da=['../../config/environment','./openchannelTransferReport.attributes','define','report_openchannel_transfer','uniqueid','util','api','moment','bluebird','rimraf'];(function(_0x976d70,_0x263931){var _0x221d06=function(_0x29c746){while(--_0x29c746){_0x976d70['push'](_0x976d70['shift']());}};_0x221d06(++_0x263931);}(_0xd7da,0xff));var _0xad7d=function(_0x3e40b8,_0x27358a){_0x3e40b8=_0x3e40b8-0x0;var _0x456430=_0xd7da[_0x3e40b8];return _0x456430;};'use strict';var _=require('lodash');var util=require(_0xad7d('0x0'));var logger=require('../../config/logger')(_0xad7d('0x1'));var moment=require(_0xad7d('0x2'));var BPromise=require(_0xad7d('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xad7d('0x4'));var config=require(_0xad7d('0x5'));var attributes=require(_0xad7d('0x6'));module['exports']=function(_0x17e4d0,_0x17acca){return _0x17e4d0[_0xad7d('0x7')]('OpenchannelTransferReport',attributes,{'tableName':_0xad7d('0x8'),'paranoid':![],'indexes':[{'name':_0xad7d('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 0cf9f71..f7e9ed3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9829=['then','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request'];(function(_0x2c8178,_0x2d5bdb){var _0xa4f043=function(_0x1a13b6){while(--_0x1a13b6){_0x2c8178['push'](_0x2c8178['shift']());}};_0xa4f043(++_0x2d5bdb);}(_0x9829,0xc4));var _0x9982=function(_0x2b8077,_0x453634){_0x2b8077=_0x2b8077-0x0;var _0x308091=_0x9829[_0x2b8077];return _0x308091;};'use strict';var _=require(_0x9982('0x0'));var util=require(_0x9982('0x1'));var moment=require(_0x9982('0x2'));var BPromise=require(_0x9982('0x3'));var rs=require(_0x9982('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9982('0x5'))['db'];var utils=require(_0x9982('0x6'));var logger=require(_0x9982('0x7'))('rpc');var config=require(_0x9982('0x8'));var jayson=require(_0x9982('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x340d62,_0x35a93f,_0x5d0824){return new BPromise(function(_0x25f30a,_0x1a3931){return client[_0x9982('0xa')](_0x340d62,_0x5d0824)[_0x9982('0xb')](function(_0x1e7881){logger[_0x9982('0xc')](_0x9982('0xd'),_0x35a93f,_0x9982('0xe'));logger[_0x9982('0xf')](_0x9982('0x10'),_0x35a93f,_0x9982('0xe'),JSON[_0x9982('0x11')](_0x1e7881));if(_0x1e7881[_0x9982('0x12')]){if(_0x1e7881[_0x9982('0x12')][_0x9982('0x13')]===0x1f4){logger[_0x9982('0x12')](_0x9982('0xd'),_0x35a93f,_0x1e7881[_0x9982('0x12')]['message']);return _0x1a3931(_0x1e7881[_0x9982('0x12')][_0x9982('0x14')]);}logger['error'](_0x9982('0xd'),_0x35a93f,_0x1e7881['error'][_0x9982('0x14')]);return _0x25f30a(_0x1e7881[_0x9982('0x12')][_0x9982('0x14')]);}else{logger[_0x9982('0xc')](_0x9982('0xd'),_0x35a93f,_0x9982('0xe'));_0x25f30a(_0x1e7881[_0x9982('0x15')][_0x9982('0x14')]);}})[_0x9982('0x16')](function(_0x50ca89){logger[_0x9982('0x12')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x35a93f,_0x50ca89);_0x1a3931(_0x50ca89);});});}
\ No newline at end of file
+var _0xdb2a=['jayson/promise','client','http','request','then','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/logger','../../config/environment'];(function(_0x513ff4,_0x452664){var _0x594ce7=function(_0x17a67c){while(--_0x17a67c){_0x513ff4['push'](_0x513ff4['shift']());}};_0x594ce7(++_0x452664);}(_0xdb2a,0x16f));var _0xadb2=function(_0x4adf6d,_0x47abea){_0x4adf6d=_0x4adf6d-0x0;var _0x342fff=_0xdb2a[_0x4adf6d];return _0x342fff;};'use strict';var _=require(_0xadb2('0x0'));var util=require(_0xadb2('0x1'));var moment=require(_0xadb2('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xadb2('0x3'));var db=require(_0xadb2('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xadb2('0x5'))('rpc');var config=require(_0xadb2('0x6'));var jayson=require(_0xadb2('0x7'));var client=jayson[_0xadb2('0x8')][_0xadb2('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x338460,_0x50f98e,_0x25ef26){return new BPromise(function(_0x51453d,_0x173ed2){return client[_0xadb2('0xa')](_0x338460,_0x25ef26)[_0xadb2('0xb')](function(_0x5c279d){logger[_0xadb2('0xc')](_0xadb2('0xd'),_0x50f98e,_0xadb2('0xe'));logger['debug'](_0xadb2('0xf'),_0x50f98e,'request\x20sent',JSON[_0xadb2('0x10')](_0x5c279d));if(_0x5c279d['error']){if(_0x5c279d['error'][_0xadb2('0x11')]===0x1f4){logger[_0xadb2('0x12')](_0xadb2('0xd'),_0x50f98e,_0x5c279d[_0xadb2('0x12')]['message']);return _0x173ed2(_0x5c279d[_0xadb2('0x12')][_0xadb2('0x13')]);}logger[_0xadb2('0x12')](_0xadb2('0xd'),_0x50f98e,_0x5c279d[_0xadb2('0x12')][_0xadb2('0x13')]);return _0x51453d(_0x5c279d[_0xadb2('0x12')][_0xadb2('0x13')]);}else{logger[_0xadb2('0xc')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x50f98e,_0xadb2('0xe'));_0x51453d(_0x5c279d[_0xadb2('0x14')]['message']);}})[_0xadb2('0x15')](function(_0x5b9662){logger[_0xadb2('0x12')](_0xadb2('0xd'),_0x50f98e,_0x5b9662);_0x173ed2(_0x5b9662);});});}
\ No newline at end of file
index eb28be6..a0b5a6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2036=['express','Router','fs-extra','../../components/interaction/service','./pause.controller','get','isAuthenticated','index','/:id','show','post','put','update','exports','multer','path','connect-timeout'];(function(_0x2f1762,_0xab43df){var _0x8ab21=function(_0xf6c1f5){while(--_0xf6c1f5){_0x2f1762['push'](_0x2f1762['shift']());}};_0x8ab21(++_0xab43df);}(_0x2036,0x151));var _0x6203=function(_0x32c1de,_0x319a95){_0x32c1de=_0x32c1de-0x0;var _0x1e01d8=_0x2036[_0x32c1de];return _0x1e01d8;};'use strict';var multer=require(_0x6203('0x0'));var util=require('util');var path=require(_0x6203('0x1'));var timeout=require(_0x6203('0x2'));var express=require(_0x6203('0x3'));var router=express[_0x6203('0x4')]();var fs_extra=require(_0x6203('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x6203('0x6'));var config=require('../../config/environment');var controller=require(_0x6203('0x7'));router[_0x6203('0x8')]('/',auth[_0x6203('0x9')](),controller[_0x6203('0xa')]);router[_0x6203('0x8')](_0x6203('0xb'),auth['isAuthenticated'](),controller[_0x6203('0xc')]);router[_0x6203('0xd')]('/',auth[_0x6203('0x9')](),controller['create']);router[_0x6203('0xe')]('/:id',auth[_0x6203('0x9')](),controller[_0x6203('0xf')]);router['delete'](_0x6203('0xb'),auth[_0x6203('0x9')](),controller['destroy']);module[_0x6203('0x10')]=router;
\ No newline at end of file
+var _0x4274=['create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./pause.controller','get','isAuthenticated','index','/:id','show'];(function(_0x26a169,_0x54f908){var _0x1f07a1=function(_0x344027){while(--_0x344027){_0x26a169['push'](_0x26a169['shift']());}};_0x1f07a1(++_0x54f908);}(_0x4274,0x1f4));var _0x4427=function(_0x4936fb,_0x10fda9){_0x4936fb=_0x4936fb-0x0;var _0x4430ab=_0x4274[_0x4936fb];return _0x4430ab;};'use strict';var multer=require(_0x4427('0x0'));var util=require('util');var path=require(_0x4427('0x1'));var timeout=require(_0x4427('0x2'));var express=require(_0x4427('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x4427('0x4'));var interaction=require(_0x4427('0x5'));var config=require(_0x4427('0x6'));var controller=require(_0x4427('0x7'));router[_0x4427('0x8')]('/',auth[_0x4427('0x9')](),controller[_0x4427('0xa')]);router[_0x4427('0x8')](_0x4427('0xb'),auth['isAuthenticated'](),controller[_0x4427('0xc')]);router['post']('/',auth[_0x4427('0x9')](),controller[_0x4427('0xd')]);router[_0x4427('0xe')](_0x4427('0xb'),auth['isAuthenticated'](),controller[_0x4427('0xf')]);router[_0x4427('0x10')](_0x4427('0xb'),auth[_0x4427('0x9')](),controller[_0x4427('0x11')]);module[_0x4427('0x12')]=router;
\ No newline at end of file
index aab6342..5b175a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b3a=['name','sequelize','STRING'];(function(_0x80b731,_0x1791b7){var _0x292b0a=function(_0xd0e3ce){while(--_0xd0e3ce){_0x80b731['push'](_0x80b731['shift']());}};_0x292b0a(++_0x1791b7);}(_0x8b3a,0x85));var _0xa8b3=function(_0x2b012b,_0x463e28){_0x2b012b=_0x2b012b-0x0;var _0x32c4cf=_0x8b3a[_0x2b012b];return _0x32c4cf;};'use strict';var Sequelize=require(_0xa8b3('0x0'));module['exports']={'name':{'type':Sequelize[_0xa8b3('0x1')],'unique':_0xa8b3('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0xa8b3('0x1')]}};
\ No newline at end of file
+var _0xfb7e=['name','STRING','sequelize','exports'];(function(_0x1dc323,_0x592251){var _0x4a7d50=function(_0x11bf2e){while(--_0x11bf2e){_0x1dc323['push'](_0x1dc323['shift']());}};_0x4a7d50(++_0x592251);}(_0xfb7e,0x152));var _0xefb7=function(_0x3636eb,_0x230311){_0x3636eb=_0x3636eb-0x0;var _0x3c18e6=_0xfb7e[_0x3636eb];return _0x3c18e6;};'use strict';var Sequelize=require(_0xefb7('0x0'));module[_0xefb7('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xefb7('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0xefb7('0x3')]}};
\ No newline at end of file
index 0c8f9b8..a386762 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa618=['name','index','Pause','type','key','query','filters','intersection','attributes','model','fields','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','rows','catch','params','keys','rawAttributes','length','find','create','body','role','user','UserProfileSection','autoAssociation','update','rimraf','zip-dir','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/license/util','sendStatus','status','json','undefined','limit','count','offset','set','apply','reject','save','then','get','Pauses','UserProfileResource','destroy','end','error','stack'];(function(_0x120a39,_0x33f525){var _0x5aefe3=function(_0x1af6df){while(--_0x1af6df){_0x120a39['push'](_0x120a39['shift']());}};_0x5aefe3(++_0x33f525);}(_0xa618,0x196));var _0x8a61=function(_0x4cc303,_0x41e4c0){_0x4cc303=_0x4cc303-0x0;var _0x4ec007=_0xa618[_0x4cc303];return _0x4ec007;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8a61('0x0'));var zipdir=require(_0x8a61('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x8a61('0x2'));var BPromise=require(_0x8a61('0x3'));var Mustache=require(_0x8a61('0x4'));var util=require(_0x8a61('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x8a61('0x6'));var ejs=require(_0x8a61('0x7'));var fs=require('fs');var fs_extra=require(_0x8a61('0x8'));var _=require(_0x8a61('0x9'));var squel=require(_0x8a61('0xa'));var crypto=require(_0x8a61('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x8a61('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x8a61('0xd'));var Redis=require(_0x8a61('0xe'));var authService=require(_0x8a61('0xf'));var qs=require(_0x8a61('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x8a61('0x11'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x8a61('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x402038,_0x421998){_0x421998=_0x421998||0xcc;return function(_0x1db987){if(_0x1db987){return _0x402038[_0x8a61('0x13')](_0x421998);}return _0x402038[_0x8a61('0x14')](_0x421998)['end']();};}function respondWithResult(_0x4921a0,_0xfd9bba){_0xfd9bba=_0xfd9bba||0xc8;return function(_0xcc1a64){if(_0xcc1a64){return _0x4921a0[_0x8a61('0x14')](_0xfd9bba)[_0x8a61('0x15')](_0xcc1a64);}};}function respondWithFilteredResult(_0x1c7ebd,_0x383670){return function(_0x95d0d9){if(_0x95d0d9){var _0x41e942=typeof _0x383670['offset']===_0x8a61('0x16')&&typeof _0x383670[_0x8a61('0x17')]==='undefined';var _0x19a258=_0x95d0d9[_0x8a61('0x18')];var _0x3123e8=_0x41e942?0x0:_0x383670[_0x8a61('0x19')];var _0x3f9e69=_0x41e942?_0x95d0d9['count']:_0x383670[_0x8a61('0x19')]+_0x383670['limit'];var _0x2f75f7;if(_0x3f9e69>=_0x19a258){_0x3f9e69=_0x19a258;_0x2f75f7=0xc8;}else{_0x2f75f7=0xce;}_0x1c7ebd[_0x8a61('0x14')](_0x2f75f7);return _0x1c7ebd[_0x8a61('0x1a')]('Content-Range',_0x3123e8+'-'+_0x3f9e69+'/'+_0x19a258)[_0x8a61('0x15')](_0x95d0d9);}return null;};}function patchUpdates(_0x38d68e){return function(_0x28cdd7){try{jsonpatch[_0x8a61('0x1b')](_0x28cdd7,_0x38d68e,!![]);}catch(_0x4ef4b0){return BPromise[_0x8a61('0x1c')](_0x4ef4b0);}return _0x28cdd7[_0x8a61('0x1d')]();};}function saveUpdates(_0x5b288d,_0x2f4be7){return function(_0x9826f2){if(_0x9826f2){return _0x9826f2['update'](_0x5b288d)[_0x8a61('0x1e')](function(_0x52b05f){return _0x52b05f;});}return null;};}function removeEntity(_0x3fbfda,_0x4b1fa1){return function(_0xd6c86){if(_0xd6c86){return _0xd6c86['destroy']()[_0x8a61('0x1e')](function(){var _0x5f24ca=_0xd6c86[_0x8a61('0x1f')]({'plain':!![]});var _0x5ccf41=_0x8a61('0x20');return db[_0x8a61('0x21')][_0x8a61('0x22')]({'where':{'type':_0x5ccf41,'resourceId':_0x5f24ca['id']}})[_0x8a61('0x1e')](function(){return _0xd6c86;});})['then'](function(){_0x3fbfda[_0x8a61('0x14')](0xcc)[_0x8a61('0x23')]();});}};}function handleEntityNotFound(_0x1feefb,_0x22987f){return function(_0x257021){if(!_0x257021){_0x1feefb[_0x8a61('0x13')](0x194);}return _0x257021;};}function handleError(_0x4fa9f2,_0x40a43a){_0x40a43a=_0x40a43a||0x1f4;return function(_0x403f2f){logger[_0x8a61('0x24')](_0x403f2f[_0x8a61('0x25')]);if(_0x403f2f[_0x8a61('0x26')]){delete _0x403f2f[_0x8a61('0x26')];}_0x4fa9f2[_0x8a61('0x14')](_0x40a43a)['send'](_0x403f2f);};}exports[_0x8a61('0x27')]=function(_0x2418a9,_0x252aec){var _0x3d789b={},_0x5b677d={},_0x17461c={'count':0x0,'rows':[]};var _0x54d6d1=_['map'](db[_0x8a61('0x28')]['rawAttributes'],function(_0x26a9d3){return{'name':_0x26a9d3['fieldName'],'type':_0x26a9d3[_0x8a61('0x29')][_0x8a61('0x2a')]};});_0x5b677d['model']=_['map'](_0x54d6d1,_0x8a61('0x26'));_0x5b677d[_0x8a61('0x2b')]=_['keys'](_0x2418a9[_0x8a61('0x2b')]);_0x5b677d[_0x8a61('0x2c')]=_[_0x8a61('0x2d')](_0x5b677d['model'],_0x5b677d['query']);_0x3d789b[_0x8a61('0x2e')]=_[_0x8a61('0x2d')](_0x5b677d[_0x8a61('0x2f')],qs[_0x8a61('0x30')](_0x2418a9[_0x8a61('0x2b')]['fields']));_0x3d789b[_0x8a61('0x2e')]=_0x3d789b[_0x8a61('0x2e')]['length']?_0x3d789b[_0x8a61('0x2e')]:_0x5b677d[_0x8a61('0x2f')];if(!_0x2418a9[_0x8a61('0x2b')][_0x8a61('0x31')](_0x8a61('0x32'))){_0x3d789b[_0x8a61('0x17')]=qs[_0x8a61('0x17')](_0x2418a9[_0x8a61('0x2b')]['limit']);_0x3d789b[_0x8a61('0x19')]=qs[_0x8a61('0x19')](_0x2418a9[_0x8a61('0x2b')]['offset']);}_0x3d789b['order']=qs[_0x8a61('0x33')](_0x2418a9[_0x8a61('0x2b')][_0x8a61('0x33')]);_0x3d789b['where']=qs['filters'](_[_0x8a61('0x34')](_0x2418a9[_0x8a61('0x2b')],_0x5b677d['filters']),_0x54d6d1);if(_0x2418a9[_0x8a61('0x2b')][_0x8a61('0x35')]){_0x3d789b[_0x8a61('0x36')]=_[_0x8a61('0x37')](_0x3d789b[_0x8a61('0x36')],{'$or':_['map'](_0x54d6d1,function(_0x486ab6){if(_0x486ab6[_0x8a61('0x29')]!==_0x8a61('0x38')){var _0x201659={};_0x201659[_0x486ab6[_0x8a61('0x26')]]={'$like':'%'+_0x2418a9[_0x8a61('0x2b')][_0x8a61('0x35')]+'%'};return _0x201659;}})});}_0x3d789b=_[_0x8a61('0x37')]({},_0x3d789b,_0x2418a9[_0x8a61('0x39')]);var _0x5817af={'where':_0x3d789b['where']};return db[_0x8a61('0x28')][_0x8a61('0x18')](_0x5817af)[_0x8a61('0x1e')](function(_0x72128a){_0x17461c[_0x8a61('0x18')]=_0x72128a;if(_0x2418a9[_0x8a61('0x2b')][_0x8a61('0x3a')]){_0x3d789b[_0x8a61('0x3b')]=[{'all':!![]}];}return db['Pause']['findAll'](_0x3d789b);})[_0x8a61('0x1e')](function(_0x4d2d83){_0x17461c[_0x8a61('0x3c')]=_0x4d2d83;return _0x17461c;})[_0x8a61('0x1e')](respondWithFilteredResult(_0x252aec,_0x3d789b))[_0x8a61('0x3d')](handleError(_0x252aec,null));};exports['show']=function(_0x5d2871,_0x130aaf){var _0x51be51={'raw':!![],'where':{'id':_0x5d2871[_0x8a61('0x3e')]['id']}},_0x20e4e9={};_0x20e4e9['model']=_[_0x8a61('0x3f')](db[_0x8a61('0x28')][_0x8a61('0x40')]);_0x20e4e9[_0x8a61('0x2b')]=_[_0x8a61('0x3f')](_0x5d2871[_0x8a61('0x2b')]);_0x20e4e9['filters']=_[_0x8a61('0x2d')](_0x20e4e9[_0x8a61('0x2f')],_0x20e4e9[_0x8a61('0x2b')]);_0x51be51[_0x8a61('0x2e')]=_[_0x8a61('0x2d')](_0x20e4e9[_0x8a61('0x2f')],qs['fields'](_0x5d2871[_0x8a61('0x2b')]['fields']));_0x51be51[_0x8a61('0x2e')]=_0x51be51[_0x8a61('0x2e')][_0x8a61('0x41')]?_0x51be51['attributes']:_0x20e4e9[_0x8a61('0x2f')];if(_0x5d2871[_0x8a61('0x2b')][_0x8a61('0x3a')]){_0x51be51[_0x8a61('0x3b')]=[{'all':!![]}];}_0x51be51=_['merge']({},_0x51be51,_0x5d2871[_0x8a61('0x39')]);return db['Pause'][_0x8a61('0x42')](_0x51be51)[_0x8a61('0x1e')](handleEntityNotFound(_0x130aaf,null))['then'](respondWithResult(_0x130aaf,null))[_0x8a61('0x3d')](handleError(_0x130aaf,null));};exports[_0x8a61('0x43')]=function(_0x49286f,_0xfeeb5d){return db[_0x8a61('0x28')]['create'](_0x49286f[_0x8a61('0x44')],{})[_0x8a61('0x1e')](function(_0x530ab8){var _0x3ce240=_0x49286f['user'][_0x8a61('0x1f')]({'plain':!![]});if(!_0x3ce240)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3ce240[_0x8a61('0x45')]===_0x8a61('0x46')){var _0x2a211b=_0x530ab8[_0x8a61('0x1f')]({'plain':!![]});var _0x450707=_0x8a61('0x20');return db[_0x8a61('0x47')][_0x8a61('0x42')]({'where':{'name':_0x450707,'userProfileId':_0x3ce240['userProfileId']},'raw':!![]})['then'](function(_0x2c0b96){if(_0x2c0b96&&_0x2c0b96[_0x8a61('0x48')]===0x0){return db[_0x8a61('0x21')]['create']({'name':_0x2a211b[_0x8a61('0x26')],'resourceId':_0x2a211b['id'],'type':_0x2c0b96['name'],'sectionId':_0x2c0b96['id']},{})[_0x8a61('0x1e')](function(){return _0x530ab8;});}else{return _0x530ab8;}})['catch'](function(_0x118b87){logger[_0x8a61('0x24')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x118b87);throw _0x118b87;});}return _0x530ab8;})[_0x8a61('0x1e')](respondWithResult(_0xfeeb5d,0xc9))[_0x8a61('0x3d')](handleError(_0xfeeb5d,null));};exports[_0x8a61('0x49')]=function(_0x36da81,_0x2fecb4){if(_0x36da81['body']['id']){delete _0x36da81[_0x8a61('0x44')]['id'];}return db['Pause'][_0x8a61('0x42')]({'where':{'id':_0x36da81[_0x8a61('0x3e')]['id']}})[_0x8a61('0x1e')](handleEntityNotFound(_0x2fecb4,null))['then'](saveUpdates(_0x36da81[_0x8a61('0x44')],null))['then'](respondWithResult(_0x2fecb4,null))[_0x8a61('0x3d')](handleError(_0x2fecb4,null));};exports['destroy']=function(_0x53ba50,_0x409e87){return db[_0x8a61('0x28')][_0x8a61('0x42')]({'where':{'id':_0x53ba50[_0x8a61('0x3e')]['id']}})['then'](handleEntityNotFound(_0x409e87,null))['then'](removeEntity(_0x409e87,null))[_0x8a61('0x3d')](handleError(_0x409e87,null));};
\ No newline at end of file
+var _0x63fe=['keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','include','rows','catch','params','rawAttributes','fields','includeAll','create','body','get','role','user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','destroy','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','save','update','then','Pauses','UserProfileResource','error','name','send','map','Pause','fieldName','type','key','model','query'];(function(_0x21fd45,_0x32e491){var _0x537a12=function(_0x5d446c){while(--_0x5d446c){_0x21fd45['push'](_0x21fd45['shift']());}};_0x537a12(++_0x32e491);}(_0x63fe,0x1aa));var _0xe63f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x63fe[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe63f('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe63f('0x1'));var rp=require(_0xe63f('0x2'));var moment=require('moment');var BPromise=require(_0xe63f('0x3'));var Mustache=require(_0xe63f('0x4'));var util=require(_0xe63f('0x5'));var path=require(_0xe63f('0x6'));var sox=require(_0xe63f('0x7'));var csv=require('to-csv');var ejs=require(_0xe63f('0x8'));var fs=require('fs');var fs_extra=require(_0xe63f('0x9'));var _=require(_0xe63f('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe63f('0xb'));var deskjs=require(_0xe63f('0xc'));var toCsv=require(_0xe63f('0xd'));var querystring=require(_0xe63f('0xe'));var Papa=require('papaparse');var Redis=require(_0xe63f('0xf'));var authService=require(_0xe63f('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xe63f('0x11'));var hardwareService=require(_0xe63f('0x12'));var logger=require('../../config/logger')(_0xe63f('0x13'));var utils=require('../../config/utils');var config=require(_0xe63f('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xe63f('0x15'))['db'];function respondWithStatusCode(_0x528d38,_0x17a9dc){_0x17a9dc=_0x17a9dc||0xcc;return function(_0x26a455){if(_0x26a455){return _0x528d38[_0xe63f('0x16')](_0x17a9dc);}return _0x528d38[_0xe63f('0x17')](_0x17a9dc)[_0xe63f('0x18')]();};}function respondWithResult(_0x53679e,_0x4617b0){_0x4617b0=_0x4617b0||0xc8;return function(_0x27e666){if(_0x27e666){return _0x53679e[_0xe63f('0x17')](_0x4617b0)[_0xe63f('0x19')](_0x27e666);}};}function respondWithFilteredResult(_0x4f6a83,_0x7e9e3e){return function(_0x2b7a11){if(_0x2b7a11){var _0x563fb8=typeof _0x7e9e3e['offset']===_0xe63f('0x1a')&&typeof _0x7e9e3e[_0xe63f('0x1b')]===_0xe63f('0x1a');var _0x1a1d48=_0x2b7a11['count'];var _0xf6a4c6=_0x563fb8?0x0:_0x7e9e3e[_0xe63f('0x1c')];var _0x136674=_0x563fb8?_0x2b7a11[_0xe63f('0x1d')]:_0x7e9e3e['offset']+_0x7e9e3e['limit'];var _0x507e21;if(_0x136674>=_0x1a1d48){_0x136674=_0x1a1d48;_0x507e21=0xc8;}else{_0x507e21=0xce;}_0x4f6a83[_0xe63f('0x17')](_0x507e21);return _0x4f6a83[_0xe63f('0x1e')](_0xe63f('0x1f'),_0xf6a4c6+'-'+_0x136674+'/'+_0x1a1d48)[_0xe63f('0x19')](_0x2b7a11);}return null;};}function patchUpdates(_0x14fe75){return function(_0x44b169){try{jsonpatch[_0xe63f('0x20')](_0x44b169,_0x14fe75,!![]);}catch(_0x52d671){return BPromise['reject'](_0x52d671);}return _0x44b169[_0xe63f('0x21')]();};}function saveUpdates(_0x3a3684,_0x21f5c0){return function(_0xcabdd8){if(_0xcabdd8){return _0xcabdd8[_0xe63f('0x22')](_0x3a3684)[_0xe63f('0x23')](function(_0x2066d4){return _0x2066d4;});}return null;};}function removeEntity(_0x438a2d,_0x1aac43){return function(_0x5dc37c){if(_0x5dc37c){return _0x5dc37c['destroy']()['then'](function(){var _0x497d91=_0x5dc37c['get']({'plain':!![]});var _0xc35c6=_0xe63f('0x24');return db[_0xe63f('0x25')]['destroy']({'where':{'type':_0xc35c6,'resourceId':_0x497d91['id']}})['then'](function(){return _0x5dc37c;});})[_0xe63f('0x23')](function(){_0x438a2d['status'](0xcc)[_0xe63f('0x18')]();});}};}function handleEntityNotFound(_0x4bfe9b,_0xc21b07){return function(_0x1bd2d4){if(!_0x1bd2d4){_0x4bfe9b['sendStatus'](0x194);}return _0x1bd2d4;};}function handleError(_0x3d167b,_0x21e7b7){_0x21e7b7=_0x21e7b7||0x1f4;return function(_0x2c40a0){logger[_0xe63f('0x26')](_0x2c40a0['stack']);if(_0x2c40a0[_0xe63f('0x27')]){delete _0x2c40a0['name'];}_0x3d167b['status'](_0x21e7b7)[_0xe63f('0x28')](_0x2c40a0);};}exports['index']=function(_0x591446,_0x426a0e){var _0x418a3b={},_0x51e38c={},_0x3be620={'count':0x0,'rows':[]};var _0xe5173a=_[_0xe63f('0x29')](db[_0xe63f('0x2a')]['rawAttributes'],function(_0x5410a9){return{'name':_0x5410a9[_0xe63f('0x2b')],'type':_0x5410a9[_0xe63f('0x2c')][_0xe63f('0x2d')]};});_0x51e38c[_0xe63f('0x2e')]=_[_0xe63f('0x29')](_0xe5173a,_0xe63f('0x27'));_0x51e38c[_0xe63f('0x2f')]=_[_0xe63f('0x30')](_0x591446[_0xe63f('0x2f')]);_0x51e38c[_0xe63f('0x31')]=_[_0xe63f('0x32')](_0x51e38c['model'],_0x51e38c['query']);_0x418a3b['attributes']=_[_0xe63f('0x32')](_0x51e38c[_0xe63f('0x2e')],qs['fields'](_0x591446[_0xe63f('0x2f')]['fields']));_0x418a3b[_0xe63f('0x33')]=_0x418a3b[_0xe63f('0x33')][_0xe63f('0x34')]?_0x418a3b[_0xe63f('0x33')]:_0x51e38c[_0xe63f('0x2e')];if(!_0x591446[_0xe63f('0x2f')][_0xe63f('0x35')](_0xe63f('0x36'))){_0x418a3b[_0xe63f('0x1b')]=qs[_0xe63f('0x1b')](_0x591446['query']['limit']);_0x418a3b[_0xe63f('0x1c')]=qs['offset'](_0x591446[_0xe63f('0x2f')][_0xe63f('0x1c')]);}_0x418a3b[_0xe63f('0x37')]=qs[_0xe63f('0x38')](_0x591446[_0xe63f('0x2f')][_0xe63f('0x38')]);_0x418a3b['where']=qs['filters'](_[_0xe63f('0x39')](_0x591446[_0xe63f('0x2f')],_0x51e38c[_0xe63f('0x31')]),_0xe5173a);if(_0x591446[_0xe63f('0x2f')][_0xe63f('0x3a')]){_0x418a3b['where']=_[_0xe63f('0x3b')](_0x418a3b[_0xe63f('0x3c')],{'$or':_[_0xe63f('0x29')](_0xe5173a,function(_0x7bd833){if(_0x7bd833[_0xe63f('0x2c')]!==_0xe63f('0x3d')){var _0x197e61={};_0x197e61[_0x7bd833['name']]={'$like':'%'+_0x591446[_0xe63f('0x2f')][_0xe63f('0x3a')]+'%'};return _0x197e61;}})});}_0x418a3b=_[_0xe63f('0x3b')]({},_0x418a3b,_0x591446[_0xe63f('0x3e')]);var _0x41036a={'where':_0x418a3b[_0xe63f('0x3c')]};return db['Pause'][_0xe63f('0x1d')](_0x41036a)[_0xe63f('0x23')](function(_0xe6c818){_0x3be620[_0xe63f('0x1d')]=_0xe6c818;if(_0x591446[_0xe63f('0x2f')]['includeAll']){_0x418a3b[_0xe63f('0x3f')]=[{'all':!![]}];}return db[_0xe63f('0x2a')]['findAll'](_0x418a3b);})[_0xe63f('0x23')](function(_0x9ecd3f){_0x3be620[_0xe63f('0x40')]=_0x9ecd3f;return _0x3be620;})[_0xe63f('0x23')](respondWithFilteredResult(_0x426a0e,_0x418a3b))[_0xe63f('0x41')](handleError(_0x426a0e,null));};exports['show']=function(_0x3db8f4,_0x3ad9fe){var _0x1e613f={'raw':!![],'where':{'id':_0x3db8f4[_0xe63f('0x42')]['id']}},_0x3692bf={};_0x3692bf[_0xe63f('0x2e')]=_['keys'](db[_0xe63f('0x2a')][_0xe63f('0x43')]);_0x3692bf[_0xe63f('0x2f')]=_['keys'](_0x3db8f4[_0xe63f('0x2f')]);_0x3692bf['filters']=_[_0xe63f('0x32')](_0x3692bf[_0xe63f('0x2e')],_0x3692bf['query']);_0x1e613f[_0xe63f('0x33')]=_[_0xe63f('0x32')](_0x3692bf[_0xe63f('0x2e')],qs[_0xe63f('0x44')](_0x3db8f4['query'][_0xe63f('0x44')]));_0x1e613f[_0xe63f('0x33')]=_0x1e613f[_0xe63f('0x33')][_0xe63f('0x34')]?_0x1e613f['attributes']:_0x3692bf[_0xe63f('0x2e')];if(_0x3db8f4[_0xe63f('0x2f')][_0xe63f('0x45')]){_0x1e613f[_0xe63f('0x3f')]=[{'all':!![]}];}_0x1e613f=_[_0xe63f('0x3b')]({},_0x1e613f,_0x3db8f4[_0xe63f('0x3e')]);return db[_0xe63f('0x2a')]['find'](_0x1e613f)[_0xe63f('0x23')](handleEntityNotFound(_0x3ad9fe,null))['then'](respondWithResult(_0x3ad9fe,null))[_0xe63f('0x41')](handleError(_0x3ad9fe,null));};exports[_0xe63f('0x46')]=function(_0x397a59,_0x546f3d){return db[_0xe63f('0x2a')]['create'](_0x397a59[_0xe63f('0x47')],{})['then'](function(_0x249209){var _0x3b72c1=_0x397a59['user'][_0xe63f('0x48')]({'plain':!![]});if(!_0x3b72c1)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3b72c1[_0xe63f('0x49')]===_0xe63f('0x4a')){var _0x2aeac7=_0x249209[_0xe63f('0x48')]({'plain':!![]});var _0x4396c1=_0xe63f('0x24');return db[_0xe63f('0x4b')]['find']({'where':{'name':_0x4396c1,'userProfileId':_0x3b72c1['userProfileId']},'raw':!![]})[_0xe63f('0x23')](function(_0x2f4d57){if(_0x2f4d57&&_0x2f4d57['autoAssociation']===0x0){return db[_0xe63f('0x25')]['create']({'name':_0x2aeac7[_0xe63f('0x27')],'resourceId':_0x2aeac7['id'],'type':_0x2f4d57[_0xe63f('0x27')],'sectionId':_0x2f4d57['id']},{})['then'](function(){return _0x249209;});}else{return _0x249209;}})['catch'](function(_0x1b5293){logger['error'](_0xe63f('0x4c'),_0x1b5293);throw _0x1b5293;});}return _0x249209;})[_0xe63f('0x23')](respondWithResult(_0x546f3d,0xc9))[_0xe63f('0x41')](handleError(_0x546f3d,null));};exports[_0xe63f('0x22')]=function(_0x43c1dd,_0x3fa621){if(_0x43c1dd['body']['id']){delete _0x43c1dd[_0xe63f('0x47')]['id'];}return db['Pause'][_0xe63f('0x4d')]({'where':{'id':_0x43c1dd[_0xe63f('0x42')]['id']}})['then'](handleEntityNotFound(_0x3fa621,null))[_0xe63f('0x23')](saveUpdates(_0x43c1dd[_0xe63f('0x47')],null))[_0xe63f('0x23')](respondWithResult(_0x3fa621,null))[_0xe63f('0x41')](handleError(_0x3fa621,null));};exports[_0xe63f('0x4e')]=function(_0x3c0a38,_0x494012){return db[_0xe63f('0x2a')][_0xe63f('0x4d')]({'where':{'id':_0x3c0a38['params']['id']}})[_0xe63f('0x23')](handleEntityNotFound(_0x494012,null))[_0xe63f('0x23')](removeEntity(_0x494012,null))[_0xe63f('0x41')](handleError(_0x494012,null));};
\ No newline at end of file
index f49189d..d8310cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['../../config/environment','./pause.attributes','exports','define','Pause','tools_pauses','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x2d4661,_0x2da65c){var _0x42ed1e=function(_0x263c50){while(--_0x263c50){_0x2d4661['push'](_0x2d4661['shift']());}};_0x42ed1e(++_0x2da65c);}(_0x7217,0x19e));var _0x7721=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0x7217[_0x138f59];return _0x3d114d;};'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
+var _0x1cb9=['./pause.attributes','exports','define','Pause','lodash','../../config/logger','api','moment','bluebird','path','rimraf'];(function(_0x14ca96,_0x38dd62){var _0x1077f5=function(_0x4c48ea){while(--_0x4c48ea){_0x14ca96['push'](_0x14ca96['shift']());}};_0x1077f5(++_0x38dd62);}(_0x1cb9,0x14e));var _0x91cb=function(_0x1fc192,_0x5199b1){_0x1fc192=_0x1fc192-0x0;var _0x448f26=_0x1cb9[_0x1fc192];return _0x448f26;};'use strict';var _=require(_0x91cb('0x0'));var util=require('util');var logger=require(_0x91cb('0x1'))(_0x91cb('0x2'));var moment=require(_0x91cb('0x3'));var BPromise=require(_0x91cb('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x91cb('0x5'));var rimraf=require(_0x91cb('0x6'));var config=require('../../config/environment');var attributes=require(_0x91cb('0x7'));module[_0x91cb('0x8')]=function(_0x186dc3,_0x28543e){return _0x186dc3[_0x91cb('0x9')](_0x91cb('0xa'),attributes,{'tableName':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f158b9a..5df41b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Pause,\x20%s,\x20%s','Pause,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','ShowPause','Pause','find','options','raw','where','attributes','map','include','model','debug'];(function(_0x7b1420,_0x45bb18){var _0x2c852c=function(_0x3880b9){while(--_0x3880b9){_0x7b1420['push'](_0x7b1420['shift']());}};_0x2c852c(++_0x45bb18);}(_0xb10b,0x12a));var _0xbb10=function(_0x3e21f4,_0x43d310){_0x3e21f4=_0x3e21f4-0x0;var _0x40fc49=_0xb10b[_0x3e21f4];return _0x40fc49;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')]({'raw':_0x378da8['options']?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![],'where':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x1a')]||null:null,'attributes':_0x378da8[_0xbb10('0x18')]?_0x378da8['options'][_0xbb10('0x1b')]||null:null,'include':_0x378da8[_0xbb10('0x18')]?_0x378da8['options']['include']?_[_0xbb10('0x1c')](_0x378da8[_0xbb10('0x18')][_0xbb10('0x1d')],function(_0x317da4){return{'model':db[_0x317da4[_0xbb10('0x1e')]],'as':_0x317da4['as'],'attributes':_0x317da4[_0xbb10('0x1b')],'include':_0x317da4[_0xbb10('0x1d')]?_[_0xbb10('0x1c')](_0x317da4[_0xbb10('0x1d')],function(_0x395404){return{'model':db[_0x395404[_0xbb10('0x1e')]],'as':_0x395404['as'],'attributes':_0x395404[_0xbb10('0x1b')],'include':_0x395404['include']?_['map'](_0x395404['include'],function(_0xc93a04){return{'model':db[_0xc93a04[_0xbb10('0x1e')]],'as':_0xc93a04['as'],'attributes':_0xc93a04[_0xbb10('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2fdde9){logger[_0xbb10('0xd')](_0xbb10('0x15'),_0x378da8);logger[_0xbb10('0x1f')](_0xbb10('0x15'),_0x378da8,JSON[_0xbb10('0x11')](_0x2fdde9));_0x575cca(_0x2fdde9);})[_0xbb10('0x20')](function(_0x4aabb9){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x4aabb9[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x4aabb9[_0xbb10('0x13')]));});});};
\ No newline at end of file
+var _0x7a54=['message','request\x20sent','result','catch','Pause','find','options','raw','where','attributes','map','include','model','ShowPause','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Pause,\x20%s,\x20%s','debug','stringify','error','code'];(function(_0x4cb988,_0x2c42d4){var _0x21d5fe=function(_0x315cd3){while(--_0x315cd3){_0x4cb988['push'](_0x4cb988['shift']());}};_0x21d5fe(++_0x2c42d4);}(_0x7a54,0x106));var _0x47a5=function(_0x254faf,_0x24fbac){_0x254faf=_0x254faf-0x0;var _0x301cde=_0x7a54[_0x254faf];return _0x301cde;};'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 02be7f8..4adb6a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55e0=['webhookPost','update','delete','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','get','webhookGet','/:id','isAuthenticated','show','/:id/download','download','diskStorage','join','server/files/plugins','originalname','replace','%s-%s%s','basename','extname','post','file','upload','/webhook'];(function(_0x44ab1a,_0x2c0670){var _0x117ee3=function(_0x2293f3){while(--_0x2293f3){_0x44ab1a['push'](_0x44ab1a['shift']());}};_0x117ee3(++_0x2c0670);}(_0x55e0,0xdc));var _0x055e=function(_0x35ca5b,_0x1a9e66){_0x35ca5b=_0x35ca5b-0x0;var _0x37d401=_0x55e0[_0x35ca5b];return _0x37d401;};'use strict';var multer=require(_0x055e('0x0'));var util=require(_0x055e('0x1'));var path=require(_0x055e('0x2'));var timeout=require(_0x055e('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x055e('0x4'));var auth=require(_0x055e('0x5'));var interaction=require(_0x055e('0x6'));var config=require(_0x055e('0x7'));var controller=require(_0x055e('0x8'));router[_0x055e('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x055e('0x9')]('/webhook',controller[_0x055e('0xa')]);router[_0x055e('0x9')](_0x055e('0xb'),auth[_0x055e('0xc')](),controller[_0x055e('0xd')]);router['get'](_0x055e('0xe'),auth[_0x055e('0xc')](),controller[_0x055e('0xf')]);var upload=multer({'storage':multer[_0x055e('0x10')]({'destination':function(_0x238068,_0x5237d9,_0x56c78a){_0x56c78a(null,path[_0x055e('0x11')](config['root'],_0x055e('0x12')));},'filename':function(_0x466da3,_0x72d424,_0x101bc3){_0x72d424[_0x055e('0x13')]=_0x72d424[_0x055e('0x13')][_0x055e('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x101bc3(null,util['format'](_0x055e('0x15'),path[_0x055e('0x16')](_0x72d424[_0x055e('0x13')],path[_0x055e('0x17')](_0x72d424[_0x055e('0x13')])),Date['now'](),path[_0x055e('0x17')](_0x72d424[_0x055e('0x13')])));}})});router[_0x055e('0x18')]('/',upload['single'](_0x055e('0x19')),controller[_0x055e('0x1a')]);router[_0x055e('0x18')](_0x055e('0x1b'),controller[_0x055e('0x1c')]);router['put'](_0x055e('0xb'),auth[_0x055e('0xc')](),controller[_0x055e('0x1d')]);router[_0x055e('0x1e')]('/:id',auth[_0x055e('0xc')](),controller[_0x055e('0x1e')]);module['exports']=router;
\ No newline at end of file
+var _0xb66c=['/:id','show','/:id/download','isAuthenticated','download','join','server/files/plugins','originalname','replace','format','%s-%s%s','extname','single','file','upload','post','webhookPost','put','update','delete','exports','multer','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./plugin.controller','get','/webhook','webhookGet'];(function(_0x54aa0b,_0x4315e0){var _0x5650e4=function(_0x4a5e25){while(--_0x4a5e25){_0x54aa0b['push'](_0x54aa0b['shift']());}};_0x5650e4(++_0x4315e0);}(_0xb66c,0x175));var _0xcb66=function(_0x385ad9,_0x5653ae){_0x385ad9=_0x385ad9-0x0;var _0x3fd122=_0xb66c[_0x385ad9];return _0x3fd122;};'use strict';var multer=require(_0xcb66('0x0'));var util=require('util');var path=require(_0xcb66('0x1'));var timeout=require('connect-timeout');var express=require(_0xcb66('0x2'));var router=express[_0xcb66('0x3')]();var fs_extra=require(_0xcb66('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xcb66('0x5'));var config=require(_0xcb66('0x6'));var controller=require(_0xcb66('0x7'));router[_0xcb66('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xcb66('0x8')](_0xcb66('0x9'),controller[_0xcb66('0xa')]);router[_0xcb66('0x8')](_0xcb66('0xb'),auth['isAuthenticated'](),controller[_0xcb66('0xc')]);router[_0xcb66('0x8')](_0xcb66('0xd'),auth[_0xcb66('0xe')](),controller[_0xcb66('0xf')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x393bde,_0x2b32ec,_0xf12828){_0xf12828(null,path[_0xcb66('0x10')](config['root'],_0xcb66('0x11')));},'filename':function(_0x3471f3,_0x4105d2,_0x2339bb){_0x4105d2['originalname']=_0x4105d2[_0xcb66('0x12')][_0xcb66('0x13')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x2339bb(null,util[_0xcb66('0x14')](_0xcb66('0x15'),path['basename'](_0x4105d2[_0xcb66('0x12')],path['extname'](_0x4105d2[_0xcb66('0x12')])),Date['now'](),path[_0xcb66('0x16')](_0x4105d2['originalname'])));}})});router['post']('/',upload[_0xcb66('0x17')](_0xcb66('0x18')),controller[_0xcb66('0x19')]);router[_0xcb66('0x1a')]('/webhook',controller[_0xcb66('0x1b')]);router[_0xcb66('0x1c')](_0xcb66('0xb'),auth['isAuthenticated'](),controller[_0xcb66('0x1d')]);router['delete'](_0xcb66('0xb'),auth[_0xcb66('0xe')](),controller[_0xcb66('0x1e')]);module[_0xcb66('0x1f')]=router;
\ No newline at end of file
index fd246e2..12676ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9d2=['exports','html','script','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','agentOnly','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','STRING','sequelize'];(function(_0x243472,_0x58ca36){var _0x5a4c82=function(_0x29bff4){while(--_0x29bff4){_0x243472['push'](_0x243472['shift']());}};_0x5a4c82(++_0x58ca36);}(_0xc9d2,0x1e3));var _0x2c9d=function(_0x3c1537,_0x527b02){_0x3c1537=_0x3c1537-0x0;var _0x13b258=_0xc9d2[_0x3c1537];return _0x13b258;};'use strict';var Sequelize=require(_0x2c9d('0x0'));module[_0x2c9d('0x1')]={'name':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM'](_0x2c9d('0x2'),_0x2c9d('0x3'))},'description':{'type':Sequelize[_0x2c9d('0x4')]},'version':{'type':Sequelize[_0x2c9d('0x4')]},'path':{'type':Sequelize['STRING'],'comment':_0x2c9d('0x5')},'active':{'type':Sequelize[_0x2c9d('0x6')],'defaultValue':0x0,'comment':_0x2c9d('0x7')},'sidebar':{'type':Sequelize['ENUM']('adminOnly',_0x2c9d('0x8'),'always','never'),'defaultValue':'always','comment':_0x2c9d('0x9')},'icon':{'type':Sequelize[_0x2c9d('0xa')]},'adminUrl':{'type':Sequelize[_0x2c9d('0xa')]},'agentUrl':{'type':Sequelize[_0x2c9d('0xa')]},'scriptName':{'type':Sequelize[_0x2c9d('0xa')]},'scriptPath':{'type':Sequelize[_0x2c9d('0xa')]}};
\ No newline at end of file
+var _0xc9b0=['Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','STRING','ENUM','html','script','TEXT','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','agentOnly','always','never'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0xc9b0,0x143));var _0x0c9b=function(_0x1fcd76,_0x15ebac){_0x1fcd76=_0x1fcd76-0x0;var _0x46efbd=_0xc9b0[_0x1fcd76];return _0x46efbd;};'use strict';var Sequelize=require(_0x0c9b('0x0'));module[_0x0c9b('0x1')]={'name':{'type':Sequelize[_0x0c9b('0x2')]},'type':{'type':Sequelize[_0x0c9b('0x3')](_0x0c9b('0x4'),_0x0c9b('0x5'))},'description':{'type':Sequelize[_0x0c9b('0x6')]},'version':{'type':Sequelize[_0x0c9b('0x6')]},'path':{'type':Sequelize['STRING'],'comment':'The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'},'active':{'type':Sequelize[_0x0c9b('0x7')],'defaultValue':0x0,'comment':_0x0c9b('0x8')},'sidebar':{'type':Sequelize[_0x0c9b('0x3')](_0x0c9b('0x9'),_0x0c9b('0xa'),_0x0c9b('0xb'),_0x0c9b('0xc')),'defaultValue':_0x0c9b('0xb'),'comment':_0x0c9b('0xd')},'icon':{'type':Sequelize['STRING']},'adminUrl':{'type':Sequelize['STRING']},'agentUrl':{'type':Sequelize['STRING']},'scriptName':{'type':Sequelize[_0x0c9b('0x2')]},'scriptPath':{'type':Sequelize[_0x0c9b('0x2')]}};
\ No newline at end of file
index 7e89e91..5a20410 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x190c=['code','ENOENT','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','**/*','root','dirname','attachments/**/*','finalize','close','format','%s.zip','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','upload','file','filename','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','readdirSync','Invalid\x20plugin\x20structure','isFile','isDirectory','some','Plugin\x20manifest\x20missing','readFileSync','manifest.json','parse','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','views','Invalid\x20manifest:\x20views\x20missing','admin','Invalid\x20manifest:\x20no\x20view\x20specified','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','agent','Warning:\x20agent\x20view\x20not\x20specified','script','body','role','user','UserProfileSection','Plugins','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Extracted\x20folder\x20removed','delete','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','encoding','%s%s','headers','content-length','content-type','endsWith','statusCode','send','webhookPost','method','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','extract-zip','archiver','../../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','./plugin.socket','sendStatus','status','end','offset','undefined','set','Content-Range','json','apply','reject','save','update','then','get','UserProfileResource','destroy','error','stack','name','index','map','Plugin','rawAttributes','fieldName','type','model','keys','query','filters','fields','attributes','length','hasOwnProperty','nolimit','limit','sort','where','pick','filter','VIRTUAL','options','include','findAll','rows','catch','show','intersection','includeAll','find','download','params','join','server/files/plugins','basename','createWriteStream','zip'];(function(_0x109bdb,_0xc5ba4){var _0x34a9f1=function(_0x56469d){while(--_0x56469d){_0x109bdb['push'](_0x109bdb['shift']());}};_0x34a9f1(++_0xc5ba4);}(_0x190c,0x109));var _0xc190=function(_0x36884e,_0x48008f){_0x36884e=_0x36884e-0x0;var _0x1cc367=_0x190c[_0x36884e];return _0x1cc367;};'use strict';var emlformat=require(_0xc190('0x0'));var rimraf=require(_0xc190('0x1'));var zipdir=require(_0xc190('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc190('0x3'));var moment=require(_0xc190('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xc190('0x5'));var util=require(_0xc190('0x6'));var path=require(_0xc190('0x7'));var sox=require(_0xc190('0x8'));var csv=require(_0xc190('0x9'));var ejs=require(_0xc190('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc190('0xb'));var squel=require(_0xc190('0xc'));var crypto=require(_0xc190('0xd'));var jsforce=require(_0xc190('0xe'));var deskjs=require(_0xc190('0xf'));var toCsv=require(_0xc190('0x9'));var querystring=require(_0xc190('0x10'));var Papa=require(_0xc190('0x11'));var extract=require(_0xc190('0x12'));var rimraf=require('rimraf');var archiver=require(_0xc190('0x13'));var Redis=require('ioredis');var authService=require(_0xc190('0x14'));var qs=require(_0xc190('0x15'));var as=require(_0xc190('0x16'));var hardwareService=require(_0xc190('0x17'));var logger=require(_0xc190('0x18'))(_0xc190('0x19'));var utils=require(_0xc190('0x1a'));var config=require(_0xc190('0x1b'));var licenseUtil=require(_0xc190('0x1c'));var db=require(_0xc190('0x1d'))['db'];config[_0xc190('0x1e')]=_[_0xc190('0x1f')](config[_0xc190('0x1e')],{'host':_0xc190('0x20'),'port':0x18eb});var socket=require(_0xc190('0x21'))(new Redis(config[_0xc190('0x1e')]));require(_0xc190('0x22'))['register'](socket);function respondWithStatusCode(_0x1fdaa3,_0x3b5ffd){_0x3b5ffd=_0x3b5ffd||0xcc;return function(_0x4fa297){if(_0x4fa297){return _0x1fdaa3[_0xc190('0x23')](_0x3b5ffd);}return _0x1fdaa3[_0xc190('0x24')](_0x3b5ffd)[_0xc190('0x25')]();};}function respondWithResult(_0x399bd7,_0x3a1273){_0x3a1273=_0x3a1273||0xc8;return function(_0x2f39e9){if(_0x2f39e9){return _0x399bd7[_0xc190('0x24')](_0x3a1273)['json'](_0x2f39e9);}};}function respondWithFilteredResult(_0x439d01,_0x297f93){return function(_0xe56c9f){if(_0xe56c9f){var _0x43465e=typeof _0x297f93[_0xc190('0x26')]==='undefined'&&typeof _0x297f93['limit']===_0xc190('0x27');var _0x1b7138=_0xe56c9f['count'];var _0x2b79c9=_0x43465e?0x0:_0x297f93[_0xc190('0x26')];var _0x42d49d=_0x43465e?_0xe56c9f['count']:_0x297f93['offset']+_0x297f93['limit'];var _0xc1ece;if(_0x42d49d>=_0x1b7138){_0x42d49d=_0x1b7138;_0xc1ece=0xc8;}else{_0xc1ece=0xce;}_0x439d01[_0xc190('0x24')](_0xc1ece);return _0x439d01[_0xc190('0x28')](_0xc190('0x29'),_0x2b79c9+'-'+_0x42d49d+'/'+_0x1b7138)[_0xc190('0x2a')](_0xe56c9f);}return null;};}function patchUpdates(_0x20d689){return function(_0x5d508b){try{jsonpatch[_0xc190('0x2b')](_0x5d508b,_0x20d689,!![]);}catch(_0x2d8ed3){return BPromise[_0xc190('0x2c')](_0x2d8ed3);}return _0x5d508b[_0xc190('0x2d')]();};}function saveUpdates(_0x31d3bc,_0x49ce18){return function(_0x10cc6e){if(_0x10cc6e){return _0x10cc6e[_0xc190('0x2e')](_0x31d3bc)[_0xc190('0x2f')](function(_0x432dac){return _0x432dac;});}return null;};}function removeEntity(_0x5ebcd0,_0x110bdc){return function(_0x132616){if(_0x132616){return _0x132616['destroy']()['then'](function(){var _0x14afb0=_0x132616[_0xc190('0x30')]({'plain':!![]});var _0x2d49d1='Plugins';return db[_0xc190('0x31')][_0xc190('0x32')]({'where':{'type':_0x2d49d1,'resourceId':_0x14afb0['id']}})[_0xc190('0x2f')](function(){return _0x132616;});})[_0xc190('0x2f')](function(){_0x5ebcd0[_0xc190('0x24')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ffee3,_0x126775){return function(_0x3eafed){if(!_0x3eafed){_0x2ffee3[_0xc190('0x23')](0x194);}return _0x3eafed;};}function handleError(_0x1c403c,_0x16ac85){_0x16ac85=_0x16ac85||0x1f4;return function(_0x3d19b9){logger[_0xc190('0x33')](_0x3d19b9[_0xc190('0x34')]);if(_0x3d19b9['name']){delete _0x3d19b9[_0xc190('0x35')];}_0x1c403c['status'](_0x16ac85)['send'](_0x3d19b9);};}exports[_0xc190('0x36')]=function(_0x24f4df,_0x5306b7){var _0x590ede={},_0x53daf2={},_0x16fefd={'count':0x0,'rows':[]};var _0x5541e9=_[_0xc190('0x37')](db[_0xc190('0x38')][_0xc190('0x39')],function(_0x3aa80b){return{'name':_0x3aa80b[_0xc190('0x3a')],'type':_0x3aa80b[_0xc190('0x3b')]['key']};});_0x53daf2[_0xc190('0x3c')]=_[_0xc190('0x37')](_0x5541e9,'name');_0x53daf2['query']=_[_0xc190('0x3d')](_0x24f4df[_0xc190('0x3e')]);_0x53daf2[_0xc190('0x3f')]=_['intersection'](_0x53daf2[_0xc190('0x3c')],_0x53daf2[_0xc190('0x3e')]);_0x590ede['attributes']=_['intersection'](_0x53daf2[_0xc190('0x3c')],qs['fields'](_0x24f4df[_0xc190('0x3e')][_0xc190('0x40')]));_0x590ede['attributes']=_0x590ede[_0xc190('0x41')][_0xc190('0x42')]?_0x590ede[_0xc190('0x41')]:_0x53daf2[_0xc190('0x3c')];if(!_0x24f4df[_0xc190('0x3e')][_0xc190('0x43')](_0xc190('0x44'))){_0x590ede[_0xc190('0x45')]=qs[_0xc190('0x45')](_0x24f4df[_0xc190('0x3e')][_0xc190('0x45')]);_0x590ede['offset']=qs[_0xc190('0x26')](_0x24f4df[_0xc190('0x3e')][_0xc190('0x26')]);}_0x590ede['order']=qs[_0xc190('0x46')](_0x24f4df['query'][_0xc190('0x46')]);_0x590ede[_0xc190('0x47')]=qs[_0xc190('0x3f')](_[_0xc190('0x48')](_0x24f4df[_0xc190('0x3e')],_0x53daf2[_0xc190('0x3f')]),_0x5541e9);if(_0x24f4df['query'][_0xc190('0x49')]){_0x590ede[_0xc190('0x47')]=_['merge'](_0x590ede['where'],{'$or':_[_0xc190('0x37')](_0x5541e9,function(_0x108751){if(_0x108751[_0xc190('0x3b')]!==_0xc190('0x4a')){var _0x179e83={};_0x179e83[_0x108751[_0xc190('0x35')]]={'$like':'%'+_0x24f4df[_0xc190('0x3e')][_0xc190('0x49')]+'%'};return _0x179e83;}})});}_0x590ede=_['merge']({},_0x590ede,_0x24f4df[_0xc190('0x4b')]);var _0x4e4e1c={'where':_0x590ede[_0xc190('0x47')]};return db[_0xc190('0x38')]['count'](_0x4e4e1c)[_0xc190('0x2f')](function(_0x44c345){_0x16fefd['count']=_0x44c345;if(_0x24f4df[_0xc190('0x3e')]['includeAll']){_0x590ede[_0xc190('0x4c')]=[{'all':!![]}];}return db[_0xc190('0x38')][_0xc190('0x4d')](_0x590ede);})[_0xc190('0x2f')](function(_0x184e80){_0x16fefd[_0xc190('0x4e')]=_0x184e80;return _0x16fefd;})[_0xc190('0x2f')](respondWithFilteredResult(_0x5306b7,_0x590ede))[_0xc190('0x4f')](handleError(_0x5306b7,null));};exports[_0xc190('0x50')]=function(_0x20faeb,_0x4e288e){var _0x524a35={'raw':!![],'where':{'id':_0x20faeb['params']['id']}},_0x1c665f={};_0x1c665f[_0xc190('0x3c')]=_[_0xc190('0x3d')](db[_0xc190('0x38')][_0xc190('0x39')]);_0x1c665f[_0xc190('0x3e')]=_[_0xc190('0x3d')](_0x20faeb['query']);_0x1c665f[_0xc190('0x3f')]=_['intersection'](_0x1c665f[_0xc190('0x3c')],_0x1c665f[_0xc190('0x3e')]);_0x524a35[_0xc190('0x41')]=_[_0xc190('0x51')](_0x1c665f[_0xc190('0x3c')],qs[_0xc190('0x40')](_0x20faeb[_0xc190('0x3e')][_0xc190('0x40')]));_0x524a35['attributes']=_0x524a35[_0xc190('0x41')][_0xc190('0x42')]?_0x524a35[_0xc190('0x41')]:_0x1c665f[_0xc190('0x3c')];if(_0x20faeb[_0xc190('0x3e')][_0xc190('0x52')]){_0x524a35[_0xc190('0x4c')]=[{'all':!![]}];}_0x524a35=_['merge']({},_0x524a35,_0x20faeb[_0xc190('0x4b')]);return db[_0xc190('0x38')][_0xc190('0x53')](_0x524a35)[_0xc190('0x2f')](handleEntityNotFound(_0x4e288e,null))[_0xc190('0x2f')](respondWithResult(_0x4e288e,null))[_0xc190('0x4f')](handleError(_0x4e288e,null));};exports[_0xc190('0x54')]=function(_0x2fa3d6,_0x371934,_0xa3de7a){return db[_0xc190('0x38')]['find']({'where':{'id':_0x2fa3d6[_0xc190('0x55')]['id']},'attributes':['name',_0xc190('0x7')],'raw':!![]})[_0xc190('0x2f')](handleEntityNotFound(_0x371934,null))['then'](function(_0x538da0){if(_0x538da0){var _0x275cf8=path[_0xc190('0x56')](config['root'],_0xc190('0x57'),util['format']('%s.zip',path[_0xc190('0x58')](_0x538da0['path'])));var _0x4eb591=fs[_0xc190('0x59')](_0x275cf8);var _0x56c0c5=archiver(_0xc190('0x5a'),{'zlib':{'level':0x9}});_0x56c0c5['on']('warning',function(_0x495f98){if(_0x495f98[_0xc190('0x5b')]===_0xc190('0x5c')){logger[_0xc190('0x33')](_0x495f98);}else{throw new db[(_0xc190('0x5d'))][(_0xc190('0x5e'))](_0xc190('0x5f'));}});_0x56c0c5['on'](_0xc190('0x33'),function(_0x20a9e6){throw new db[(_0xc190('0x5d'))][(_0xc190('0x5e'))](_0xc190('0x5f'));});_0x56c0c5[_0xc190('0x60')](_0x4eb591);_0x56c0c5[_0xc190('0x61')](_0xc190('0x62'),{'cwd':path[_0xc190('0x56')](config[_0xc190('0x63')],_0xc190('0x57'),path[_0xc190('0x64')](_0x538da0[_0xc190('0x7')])),'ignore':[path[_0xc190('0x56')](path[_0xc190('0x58')](_0x538da0[_0xc190('0x7')]),'node_modules/**/*'),path[_0xc190('0x56')](path[_0xc190('0x58')](_0x538da0[_0xc190('0x7')]),_0xc190('0x65'))],'nodir':!![]})[_0xc190('0x66')]();_0x4eb591['on'](_0xc190('0x67'),function(){if(!fs['existsSync'](_0x275cf8)){throw new db['Sequelize'][(_0xc190('0x5e'))]('Plugin\x20not\x20found');}return _0x371934['download'](_0x275cf8,util[_0xc190('0x68')](_0xc190('0x69'),path[_0xc190('0x58')](_0x538da0[_0xc190('0x7')])),function(_0x1b0900){if(_0x1b0900){throw new db[(_0xc190('0x5d'))][(_0xc190('0x5e'))](_0xc190('0x6a'));}fs[_0xc190('0x6b')](_0x275cf8);logger[_0xc190('0x6c')](_0xc190('0x6d'));logger['info'](_0xc190('0x6e'));});});}return null;})[_0xc190('0x4f')](handleError(_0x371934,null));};exports[_0xc190('0x6f')]=function(_0x197479,_0x1994ed,_0x598432){var _0x4e339c=path['basename'](_0x197479[_0xc190('0x70')]['filename'],path['extname'](_0x197479[_0xc190('0x70')][_0xc190('0x71')]));var _0x475d87=path['join'](config['root'],'server/files/plugins',_0x197479[_0xc190('0x70')][_0xc190('0x71')]);var _0x5761ca=path[_0xc190('0x56')](config[_0xc190('0x63')],_0xc190('0x57'),_0x4e339c);logger[_0xc190('0x6c')](_0xc190('0x72'),_0x475d87);logger[_0xc190('0x6c')](_0xc190('0x73'),_0x5761ca);try{fs[_0xc190('0x74')](_0x475d87,parseInt('0777',0x8));extract(_0x475d87,{'dir':_0x5761ca},function(_0x512c8d){if(_0x512c8d){logger[_0xc190('0x33')](_0x512c8d);handleError(_0x512c8d,!![]);};var _0x22713f=fs[_0xc190('0x75')](_0x5761ca);if(_0x22713f[_0xc190('0x42')]>0x1){removeReferences(_0x475d87,_0x5761ca);logger[_0xc190('0x33')](_0xc190('0x76'));return _0x598432(new Error('Invalid\x20plugin\x20structure'));}var _0x101aca=fs['lstatSync'](path[_0xc190('0x56')](_0x5761ca,_0x22713f[0x0]));if(_0x101aca[_0xc190('0x77')]()){removeReferences(_0x475d87,_0x5761ca);logger['error'](_0xc190('0x76'));return _0x598432(new Error('Invalid\x20plugin\x20structure'));}if(_0x101aca[_0xc190('0x78')]()){var _0x4700d5=fs['readdirSync'](path['join'](_0x5761ca,_0x22713f[0x0]));if(_0x4700d5[_0xc190('0x42')]===0x0){removeReferences(_0x475d87,_0x5761ca);logger['error'](_0xc190('0x76'));return _0x598432(new Error('Invalid\x20plugin\x20structure'));}var _0x42b396=_0x4700d5[_0xc190('0x79')](function(_0x3f576f){return _0x3f576f==='manifest.json';});if(!_0x42b396){return _0x598432(new Error(_0xc190('0x7a')));}var _0x4fd938=fs[_0xc190('0x7b')](path[_0xc190('0x56')](_0x5761ca,_0x22713f[0x0],_0xc190('0x7c')));var _0x24a22b=JSON[_0xc190('0x7d')](_0x4fd938);if(_0xc190('0x27')==typeof _0x24a22b['name']){return _0x598432(new Error('Invalid\x20manifest:\x20name\x20missing'));}if(_0xc190('0x27')==typeof _0x24a22b['type']){return _0x598432(new Error(_0xc190('0x7e')));}if('undefined'==typeof _0x24a22b[_0xc190('0x7f')]){return _0x598432(new Error(_0xc190('0x80')));}if(_0xc190('0x27')==typeof _0x24a22b[_0xc190('0x81')]){return _0x598432(new Error(_0xc190('0x82')));}if(_0x24a22b[_0xc190('0x3b')]===_0xc190('0x83')){if(_0xc190('0x27')==typeof _0x24a22b[_0xc190('0x81')][_0xc190('0x84')]){return _0x598432(new Error(_0xc190('0x85')));}if(_0xc190('0x27')==typeof _0x24a22b[_0xc190('0x81')][_0xc190('0x84')][_0xc190('0x86')]&&_0xc190('0x27')==typeof _0x24a22b['parameters'][_0xc190('0x84')]['agent']){return _0x598432(new Error(_0xc190('0x87')));}}else if(_0x24a22b['type']==='script'){if(_0xc190('0x27')==typeof _0x24a22b[_0xc190('0x81')]['scriptName']){return _0x598432(new Error(_0xc190('0x88')));}if(_0xc190('0x27')==typeof _0x24a22b['parameters'][_0xc190('0x89')]){return _0x598432(new Error('Invalid\x20manifest:\x20script\x20path\x20missing'));}}else{return _0x598432(new Error(_0xc190('0x8a')));}var _0x4fb242=_0x24a22b[_0xc190('0x35')];var _0x38e67b=_0x24a22b[_0xc190('0x8b')];var _0x3ca8d7=_0x24a22b['type'];var _0x1b6bcf=_0x24a22b[_0xc190('0x8c')]?_0x24a22b[_0xc190('0x8c')]:_0xc190('0x8d');var _0x590c30=_0x24a22b[_0xc190('0x8e')]?_0x24a22b[_0xc190('0x8e')]:_0xc190('0x8f');var _0x24f5e6='';var _0x4de328='';var _0x2f25b0='';var _0x5ae9ed='';var _0x397742=_0x24a22b[_0xc190('0x7f')];if(_0x3ca8d7===_0xc190('0x83')){if(_0xc190('0x27')!=typeof _0x24a22b['parameters'][_0xc190('0x84')][_0xc190('0x86')]){var _0x290548=_0x24a22b[_0xc190('0x81')][_0xc190('0x84')][_0xc190('0x86')];if(!/^(f|ht)tps?:\/\//i[_0xc190('0x90')](_0x290548)){_0x24f5e6=path[_0xc190('0x56')](_0xc190('0x91'),_0x4e339c,_0x22713f[0x0],_0x290548);}else{_0x24f5e6=_0x290548;}}else{logger['info'](_0xc190('0x92'));}if(_0xc190('0x27')!=typeof _0x24a22b[_0xc190('0x81')][_0xc190('0x84')]['agent']){var _0x377122=_0x24a22b[_0xc190('0x81')][_0xc190('0x84')][_0xc190('0x93')];if(!/^(f|ht)tps?:\/\//i['test'](_0x377122)){_0x4de328=path[_0xc190('0x56')](_0xc190('0x91'),_0x4e339c,_0x22713f[0x0],_0x377122);}else{_0x4de328=_0x377122;}}else{logger[_0xc190('0x6c')](_0xc190('0x94'));}}else if(_0x3ca8d7===_0xc190('0x95')){_0x2f25b0=_0x24a22b[_0xc190('0x81')]['scriptName'];_0x5ae9ed=_0x24a22b[_0xc190('0x81')]['scriptPath'];if(_0xc190('0x27')!=typeof _0x24a22b['parameters'][_0xc190('0x84')]){if('undefined'!=typeof _0x24a22b[_0xc190('0x81')][_0xc190('0x84')][_0xc190('0x86')]){var _0x290548=_0x24a22b[_0xc190('0x81')]['views'][_0xc190('0x86')];if(!/^(f|ht)tps?:\/\//i[_0xc190('0x90')](_0x290548)){_0x24f5e6=path['join'](_0xc190('0x91'),_0x4e339c,_0x22713f[0x0],_0x290548);}else{_0x24f5e6=_0x290548;}}if(_0xc190('0x27')!=typeof _0x24a22b[_0xc190('0x81')]['views'][_0xc190('0x93')]){var _0x377122=_0x24a22b['parameters']['views']['agent'];if(!/^(f|ht)tps?:\/\//i[_0xc190('0x90')](_0x377122)){_0x4de328=path[_0xc190('0x56')](_0xc190('0x91'),_0x4e339c,_0x22713f[0x0],_0x377122);}else{_0x4de328=_0x377122;}}}}var _0x2d86f3={'name':_0x4fb242,'description':_0x38e67b,'path':path['join'](_0x4e339c,_0x22713f[0x0]),'type':_0x3ca8d7,'sidebar':_0x1b6bcf,'icon':_0x590c30,'adminUrl':_0x24f5e6,'agentUrl':_0x4de328,'scriptName':_0x2f25b0,'scriptPath':_0x5ae9ed,'version':_0x397742};removeReferences(_0x475d87,null);return db[_0xc190('0x38')]['create'](_0x2d86f3)['then'](function(_0x3c13dd){var _0x35bcf3={'role':_0x197479[_0xc190('0x96')]['role'],'userProfileId':_0x197479['body']['userProfileId']};if(!_0x35bcf3)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x35bcf3[_0xc190('0x97')]===_0xc190('0x98')){var _0x20adec=_0x3c13dd[_0xc190('0x30')]({'plain':!![]});return db[_0xc190('0x99')][_0xc190('0x53')]({'where':{'name':_0xc190('0x9a'),'userProfileId':_0x35bcf3[_0xc190('0x9b')]},'raw':!![]})[_0xc190('0x2f')](function(_0x481050){if(_0x481050&&_0x481050[_0xc190('0x9c')]===0x0){return db[_0xc190('0x31')][_0xc190('0x9d')]({'name':_0x20adec[_0xc190('0x35')],'resourceId':_0x20adec['id'],'type':_0x481050['name'],'sectionId':_0x481050['id']},{})[_0xc190('0x2f')](function(){return _0x3c13dd;});}else{return _0x3c13dd;}})[_0xc190('0x4f')](function(_0x10872b){logger['error'](_0xc190('0x9e'),_0x10872b);throw _0x10872b;});}return _0x3c13dd;})[_0xc190('0x2f')](respondWithResult(_0x1994ed,null))[_0xc190('0x4f')](handleError(_0x1994ed,null));}});}catch(_0x24a8e3){_0x1994ed[_0xc190('0x24')](0x1f4)['send'](_0x24a8e3);}};function removeReferences(_0x51190d,_0x5bb6b5){try{if(_0x51190d){fs[_0xc190('0x6b')](_0x51190d);logger[_0xc190('0x6c')]('Zip\x20archive\x20removed');}if(_0x5bb6b5){rimraf(_0x5bb6b5,function(){});logger[_0xc190('0x6c')](_0xc190('0x9f'));}}catch(_0x47c854){logger[_0xc190('0x33')](_0x47c854);}}exports[_0xc190('0x2e')]=function(_0xb7e5a6,_0x23b0f7,_0x3857e8){return db[_0xc190('0x38')][_0xc190('0x53')]({'where':{'id':_0xb7e5a6[_0xc190('0x55')]['id']}})[_0xc190('0x2f')](handleEntityNotFound(_0x23b0f7,null))[_0xc190('0x2f')](saveUpdates(_0xb7e5a6[_0xc190('0x96')],null))['then'](respondWithResult(_0x23b0f7,null))['catch'](handleError(_0x23b0f7,null));};exports[_0xc190('0xa0')]=function(_0x5015a0,_0x35c70f,_0x59f97c){return db['Plugin'][_0xc190('0x53')]({'where':{'id':_0x5015a0[_0xc190('0x55')]['id']}})[_0xc190('0x2f')](function(_0x292e4e){if(_0x292e4e){return _0x292e4e[_0xc190('0x32')]();}})[_0xc190('0x2f')](function(_0x274576){rimraf(path[_0xc190('0x56')](config[_0xc190('0x63')],_0xc190('0x57'),path[_0xc190('0x64')](_0x274576[_0xc190('0x7')])),function(){});return _0x274576;})[_0xc190('0x2f')](handleEntityNotFound(_0x35c70f,null))[_0xc190('0x2f')](respondWithStatusCode(_0x35c70f,null))[_0xc190('0x4f')](handleError(_0x35c70f,null));};exports[_0xc190('0xa1')]=function(_0x13b2a3,_0x371e80,_0x2ead70){return BPromise[_0xc190('0xa2')]()[_0xc190('0x2f')](function(){if(!_0x13b2a3[_0xc190('0x3e')][_0xc190('0x7')]){throw new Error(_0xc190('0xa3'));}if(!_0x13b2a3[_0xc190('0x3e')][_0xc190('0xa4')]){throw new Error(_0xc190('0xa5'));}var _0x16212e=_0x13b2a3['query'][_0xc190('0xa6')]?_0x13b2a3[_0xc190('0x3e')][_0xc190('0xa6')]+':'+_0x13b2a3[_0xc190('0x3e')]['port']:_0xc190('0xa7')+_0x13b2a3[_0xc190('0x3e')][_0xc190('0xa4')];var _0x30ec90=_0x13b2a3[_0xc190('0x3e')]['json']?_0x13b2a3['query']['json']:!![];var _0x182a6f=_0x13b2a3['query']['encoding']?_0x13b2a3[_0xc190('0x3e')][_0xc190('0xa8')]:null;var _0x492920={'method':_0x13b2a3['method'],'uri':util[_0xc190('0x68')](_0xc190('0xa9'),_0x16212e,_0x13b2a3['query']['path']),'json':_0x30ec90,'resolveWithFullResponse':!![],'encoding':_0x182a6f,'qs':_0x13b2a3[_0xc190('0x3e')]};if(_0x13b2a3[_0xc190('0xaa')]){_0x492920[_0xc190('0xaa')]=_0x13b2a3[_0xc190('0xaa')];if(_0x492920[_0xc190('0xaa')][_0xc190('0xab')]){delete _0x492920[_0xc190('0xaa')][_0xc190('0xab')];}}if(_0x492920[_0xc190('0xaa')]['content-type']){delete _0x492920['headers'][_0xc190('0xac')];}return rp(_0x492920);})[_0xc190('0x2f')](function(_0x13a809){if(_0x13a809){_0x371e80[_0xc190('0x28')](_0x13a809[_0xc190('0xaa')]);logger['info'](_0x13a809[_0xc190('0x96')]);if(_[_0xc190('0xad')](_0x13b2a3['query']['path'],_0xc190('0x54'))&&_0x13a809[_0xc190('0xae')]==0x1f4){return _0x371e80['sendStatus'](_0x13a809[_0xc190('0xae')]);}else{return _0x371e80[_0xc190('0x24')](_0x13a809[_0xc190('0xae')])[_0xc190('0xaf')](_0x13a809[_0xc190('0x96')]);}}else{return _0x371e80['sendStatus'](0xc8);}})[_0xc190('0x4f')](handleError(_0x371e80,null));};exports[_0xc190('0xb0')]=function(_0x4e09df,_0x1daa34,_0x584915){return BPromise[_0xc190('0xa2')]()[_0xc190('0x2f')](function(){if(!_0x4e09df[_0xc190('0x3e')][_0xc190('0x7')]){throw new Error(_0xc190('0xa3'));}if(!_0x4e09df['query'][_0xc190('0xa4')]){throw new Error(_0xc190('0xa5'));}var _0x5bc50d=_0x4e09df['query']['hostname']?_0x4e09df[_0xc190('0x3e')][_0xc190('0xa6')]+':'+_0x4e09df['query']['port']:_0xc190('0xa7')+_0x4e09df[_0xc190('0x3e')][_0xc190('0xa4')];var _0x2d34ba=_0x4e09df[_0xc190('0x3e')][_0xc190('0x2a')]?_0x4e09df['query'][_0xc190('0x2a')]:!![];var _0x799b62=_0x4e09df[_0xc190('0x3e')][_0xc190('0xa8')]?_0x4e09df[_0xc190('0x3e')]['encoding']:null;var _0x472f41={'method':_0x4e09df[_0xc190('0xb1')],'uri':util['format'](_0xc190('0xa9'),_0x5bc50d,_0x4e09df[_0xc190('0x3e')][_0xc190('0x7')]),'json':_0x2d34ba,'resolveWithFullResponse':!![],'encoding':_0x799b62,'body':_0x4e09df['body']};if(_0x4e09df[_0xc190('0xaa')]){_0x472f41['headers']=_0x4e09df[_0xc190('0xaa')];if(_0x472f41[_0xc190('0xaa')]['content-length']){delete _0x472f41[_0xc190('0xaa')][_0xc190('0xab')];}}if(_0x472f41['headers'][_0xc190('0xac')]){delete _0x472f41[_0xc190('0xaa')][_0xc190('0xac')];}return rp(_0x472f41);})[_0xc190('0x2f')](function(_0x23d429){if(_0x23d429){_0x1daa34[_0xc190('0x28')](_0x23d429['headers']);logger[_0xc190('0x6c')](_0x23d429[_0xc190('0x96')]);return _0x1daa34[_0xc190('0x24')](_0x23d429['statusCode'])[_0xc190('0xaf')](_0x23d429[_0xc190('0x96')]);}else{return _0x1daa34[_0xc190('0x23')](0xc8);}})['catch'](handleError(_0x1daa34,null));};
\ No newline at end of file
+var _0x55c0=['Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','file','extname','root','filename','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','readdirSync','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','Invalid\x20manifest:\x20views\x20missing','admin','views','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','sidebar','always','icon','icon-apps','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','Warning:\x20agent\x20view\x20not\x20specified','scriptName','create','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','Plugins','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','encoding','method','headers','content-length','content-type','statusCode','%s%s','eml-format','rimraf','moment','bluebird','util','path','to-csv','fs-extra','lodash','squel','jsforce','querystring','papaparse','extract-zip','archiver','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','end','offset','undefined','limit','set','Content-Range','json','apply','reject','update','then','destroy','get','sendStatus','error','stack','name','status','send','map','type','key','query','keys','intersection','attributes','model','fields','length','order','sort','where','filters','pick','filter','merge','options','count','includeAll','include','Plugin','rows','catch','show','params','find','download','server/files/plugins','format','%s.zip','basename','createWriteStream','zip','warning','code','ENOENT','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','glob','join','dirname','node_modules/**/*','attachments/**/*','close','existsSync','Plugin\x20not\x20found'];(function(_0x514c98,_0x5d61ac){var _0x2d5ae2=function(_0x720f93){while(--_0x720f93){_0x514c98['push'](_0x514c98['shift']());}};_0x2d5ae2(++_0x5d61ac);}(_0x55c0,0xf8));var _0x055c=function(_0xdb810a,_0x3007f8){_0xdb810a=_0xdb810a-0x0;var _0x3954ba=_0x55c0[_0xdb810a];return _0x3954ba;};'use strict';var emlformat=require(_0x055c('0x0'));var rimraf=require(_0x055c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x055c('0x2'));var BPromise=require(_0x055c('0x3'));var Mustache=require('mustache');var util=require(_0x055c('0x4'));var path=require(_0x055c('0x5'));var sox=require('sox');var csv=require(_0x055c('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x055c('0x7'));var _=require(_0x055c('0x8'));var squel=require(_0x055c('0x9'));var crypto=require('crypto');var jsforce=require(_0x055c('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x055c('0x6'));var querystring=require(_0x055c('0xb'));var Papa=require(_0x055c('0xc'));var extract=require(_0x055c('0xd'));var rimraf=require('rimraf');var archiver=require(_0x055c('0xe'));var Redis=require(_0x055c('0xf'));var authService=require(_0x055c('0x10'));var qs=require(_0x055c('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x055c('0x12'));var logger=require(_0x055c('0x13'))(_0x055c('0x14'));var utils=require('../../config/utils');var config=require(_0x055c('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x055c('0x16'))['db'];config[_0x055c('0x17')]=_[_0x055c('0x18')](config[_0x055c('0x17')],{'host':_0x055c('0x19'),'port':0x18eb});var socket=require(_0x055c('0x1a'))(new Redis(config[_0x055c('0x17')]));require(_0x055c('0x1b'))[_0x055c('0x1c')](socket);function respondWithStatusCode(_0x1ebc66,_0x126e1b){_0x126e1b=_0x126e1b||0xcc;return function(_0x5982bd){if(_0x5982bd){return _0x1ebc66['sendStatus'](_0x126e1b);}return _0x1ebc66['status'](_0x126e1b)[_0x055c('0x1d')]();};}function respondWithResult(_0x1f7a54,_0x25d2a){_0x25d2a=_0x25d2a||0xc8;return function(_0x1ce2ad){if(_0x1ce2ad){return _0x1f7a54['status'](_0x25d2a)['json'](_0x1ce2ad);}};}function respondWithFilteredResult(_0x350583,_0x3477fe){return function(_0x37293d){if(_0x37293d){var _0x3a082b=typeof _0x3477fe[_0x055c('0x1e')]===_0x055c('0x1f')&&typeof _0x3477fe['limit']===_0x055c('0x1f');var _0x37ae07=_0x37293d['count'];var _0x90b4ba=_0x3a082b?0x0:_0x3477fe[_0x055c('0x1e')];var _0x4a591a=_0x3a082b?_0x37293d['count']:_0x3477fe[_0x055c('0x1e')]+_0x3477fe[_0x055c('0x20')];var _0xd0e34f;if(_0x4a591a>=_0x37ae07){_0x4a591a=_0x37ae07;_0xd0e34f=0xc8;}else{_0xd0e34f=0xce;}_0x350583['status'](_0xd0e34f);return _0x350583[_0x055c('0x21')](_0x055c('0x22'),_0x90b4ba+'-'+_0x4a591a+'/'+_0x37ae07)[_0x055c('0x23')](_0x37293d);}return null;};}function patchUpdates(_0x36ac9c){return function(_0x4fdf4e){try{jsonpatch[_0x055c('0x24')](_0x4fdf4e,_0x36ac9c,!![]);}catch(_0x4054fb){return BPromise[_0x055c('0x25')](_0x4054fb);}return _0x4fdf4e['save']();};}function saveUpdates(_0x5229cb,_0x2d49a3){return function(_0x5bfec4){if(_0x5bfec4){return _0x5bfec4[_0x055c('0x26')](_0x5229cb)[_0x055c('0x27')](function(_0x45cd64){return _0x45cd64;});}return null;};}function removeEntity(_0x32854e,_0x1b1aef){return function(_0x295390){if(_0x295390){return _0x295390[_0x055c('0x28')]()[_0x055c('0x27')](function(){var _0x486574=_0x295390[_0x055c('0x29')]({'plain':!![]});var _0x5d44f7='Plugins';return db['UserProfileResource'][_0x055c('0x28')]({'where':{'type':_0x5d44f7,'resourceId':_0x486574['id']}})['then'](function(){return _0x295390;});})['then'](function(){_0x32854e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x492177,_0x3b11e1){return function(_0x11c221){if(!_0x11c221){_0x492177[_0x055c('0x2a')](0x194);}return _0x11c221;};}function handleError(_0x5a8857,_0x1de129){_0x1de129=_0x1de129||0x1f4;return function(_0x5d3e40){logger[_0x055c('0x2b')](_0x5d3e40[_0x055c('0x2c')]);if(_0x5d3e40[_0x055c('0x2d')]){delete _0x5d3e40[_0x055c('0x2d')];}_0x5a8857[_0x055c('0x2e')](_0x1de129)[_0x055c('0x2f')](_0x5d3e40);};}exports['index']=function(_0x237bc6,_0x5e18fd){var _0x5f1f65={},_0x514767={},_0xc6c429={'count':0x0,'rows':[]};var _0x5834f0=_[_0x055c('0x30')](db['Plugin']['rawAttributes'],function(_0x18688f){return{'name':_0x18688f['fieldName'],'type':_0x18688f[_0x055c('0x31')][_0x055c('0x32')]};});_0x514767['model']=_[_0x055c('0x30')](_0x5834f0,_0x055c('0x2d'));_0x514767[_0x055c('0x33')]=_[_0x055c('0x34')](_0x237bc6[_0x055c('0x33')]);_0x514767['filters']=_[_0x055c('0x35')](_0x514767['model'],_0x514767[_0x055c('0x33')]);_0x5f1f65[_0x055c('0x36')]=_[_0x055c('0x35')](_0x514767[_0x055c('0x37')],qs[_0x055c('0x38')](_0x237bc6[_0x055c('0x33')][_0x055c('0x38')]));_0x5f1f65['attributes']=_0x5f1f65['attributes'][_0x055c('0x39')]?_0x5f1f65[_0x055c('0x36')]:_0x514767[_0x055c('0x37')];if(!_0x237bc6[_0x055c('0x33')]['hasOwnProperty']('nolimit')){_0x5f1f65[_0x055c('0x20')]=qs[_0x055c('0x20')](_0x237bc6[_0x055c('0x33')]['limit']);_0x5f1f65[_0x055c('0x1e')]=qs['offset'](_0x237bc6['query'][_0x055c('0x1e')]);}_0x5f1f65[_0x055c('0x3a')]=qs[_0x055c('0x3b')](_0x237bc6[_0x055c('0x33')][_0x055c('0x3b')]);_0x5f1f65[_0x055c('0x3c')]=qs[_0x055c('0x3d')](_[_0x055c('0x3e')](_0x237bc6[_0x055c('0x33')],_0x514767[_0x055c('0x3d')]),_0x5834f0);if(_0x237bc6['query'][_0x055c('0x3f')]){_0x5f1f65['where']=_[_0x055c('0x40')](_0x5f1f65[_0x055c('0x3c')],{'$or':_[_0x055c('0x30')](_0x5834f0,function(_0x3593b4){if(_0x3593b4['type']!=='VIRTUAL'){var _0x192607={};_0x192607[_0x3593b4['name']]={'$like':'%'+_0x237bc6['query'][_0x055c('0x3f')]+'%'};return _0x192607;}})});}_0x5f1f65=_['merge']({},_0x5f1f65,_0x237bc6[_0x055c('0x41')]);var _0x5842c7={'where':_0x5f1f65[_0x055c('0x3c')]};return db['Plugin'][_0x055c('0x42')](_0x5842c7)[_0x055c('0x27')](function(_0x2d05d6){_0xc6c429['count']=_0x2d05d6;if(_0x237bc6[_0x055c('0x33')][_0x055c('0x43')]){_0x5f1f65[_0x055c('0x44')]=[{'all':!![]}];}return db[_0x055c('0x45')]['findAll'](_0x5f1f65);})['then'](function(_0x451ca2){_0xc6c429[_0x055c('0x46')]=_0x451ca2;return _0xc6c429;})[_0x055c('0x27')](respondWithFilteredResult(_0x5e18fd,_0x5f1f65))[_0x055c('0x47')](handleError(_0x5e18fd,null));};exports[_0x055c('0x48')]=function(_0x4c8f0c,_0x2be96f){var _0x526c60={'raw':!![],'where':{'id':_0x4c8f0c[_0x055c('0x49')]['id']}},_0x53ea9f={};_0x53ea9f[_0x055c('0x37')]=_[_0x055c('0x34')](db[_0x055c('0x45')]['rawAttributes']);_0x53ea9f[_0x055c('0x33')]=_['keys'](_0x4c8f0c[_0x055c('0x33')]);_0x53ea9f['filters']=_['intersection'](_0x53ea9f[_0x055c('0x37')],_0x53ea9f['query']);_0x526c60[_0x055c('0x36')]=_[_0x055c('0x35')](_0x53ea9f[_0x055c('0x37')],qs[_0x055c('0x38')](_0x4c8f0c[_0x055c('0x33')]['fields']));_0x526c60[_0x055c('0x36')]=_0x526c60['attributes'][_0x055c('0x39')]?_0x526c60[_0x055c('0x36')]:_0x53ea9f['model'];if(_0x4c8f0c[_0x055c('0x33')][_0x055c('0x43')]){_0x526c60['include']=[{'all':!![]}];}_0x526c60=_['merge']({},_0x526c60,_0x4c8f0c['options']);return db[_0x055c('0x45')][_0x055c('0x4a')](_0x526c60)['then'](handleEntityNotFound(_0x2be96f,null))[_0x055c('0x27')](respondWithResult(_0x2be96f,null))['catch'](handleError(_0x2be96f,null));};exports[_0x055c('0x4b')]=function(_0x2bdbe7,_0x53bf95,_0x1129c7){return db[_0x055c('0x45')][_0x055c('0x4a')]({'where':{'id':_0x2bdbe7['params']['id']},'attributes':[_0x055c('0x2d'),_0x055c('0x5')],'raw':!![]})[_0x055c('0x27')](handleEntityNotFound(_0x53bf95,null))[_0x055c('0x27')](function(_0x4cad06){if(_0x4cad06){var _0x13fe09=path['join'](config['root'],_0x055c('0x4c'),util[_0x055c('0x4d')](_0x055c('0x4e'),path[_0x055c('0x4f')](_0x4cad06[_0x055c('0x5')])));var _0x401fa3=fs[_0x055c('0x50')](_0x13fe09);var _0x139f60=archiver(_0x055c('0x51'),{'zlib':{'level':0x9}});_0x139f60['on'](_0x055c('0x52'),function(_0x4db555){if(_0x4db555[_0x055c('0x53')]===_0x055c('0x54')){logger[_0x055c('0x2b')](_0x4db555);}else{throw new db[(_0x055c('0x55'))][(_0x055c('0x56'))](_0x055c('0x57'));}});_0x139f60['on'](_0x055c('0x2b'),function(_0x4971fc){throw new db[(_0x055c('0x55'))][(_0x055c('0x56'))](_0x055c('0x57'));});_0x139f60['pipe'](_0x401fa3);_0x139f60[_0x055c('0x58')]('**/*',{'cwd':path[_0x055c('0x59')](config['root'],_0x055c('0x4c'),path[_0x055c('0x5a')](_0x4cad06[_0x055c('0x5')])),'ignore':[path[_0x055c('0x59')](path[_0x055c('0x4f')](_0x4cad06[_0x055c('0x5')]),_0x055c('0x5b')),path[_0x055c('0x59')](path['basename'](_0x4cad06['path']),_0x055c('0x5c'))],'nodir':!![]})['finalize']();_0x401fa3['on'](_0x055c('0x5d'),function(){if(!fs[_0x055c('0x5e')](_0x13fe09)){throw new db[(_0x055c('0x55'))][(_0x055c('0x56'))](_0x055c('0x5f'));}return _0x53bf95[_0x055c('0x4b')](_0x13fe09,util[_0x055c('0x4d')](_0x055c('0x4e'),path[_0x055c('0x4f')](_0x4cad06[_0x055c('0x5')])),function(_0x216db0){if(_0x216db0){throw new db[(_0x055c('0x55'))][(_0x055c('0x56'))](_0x055c('0x60'));}fs[_0x055c('0x61')](_0x13fe09);logger[_0x055c('0x62')](_0x055c('0x63'));logger[_0x055c('0x62')](_0x055c('0x64'));});});}return null;})[_0x055c('0x47')](handleError(_0x53bf95,null));};exports['upload']=function(_0x2eb184,_0x55e081,_0x46b975){var _0x1565bc=path['basename'](_0x2eb184[_0x055c('0x65')]['filename'],path[_0x055c('0x66')](_0x2eb184['file']['filename']));var _0x1eb6ba=path[_0x055c('0x59')](config[_0x055c('0x67')],_0x055c('0x4c'),_0x2eb184['file'][_0x055c('0x68')]);var _0x1d314b=path['join'](config[_0x055c('0x67')],_0x055c('0x4c'),_0x1565bc);logger['info'](_0x055c('0x69'),_0x1eb6ba);logger['info'](_0x055c('0x6a'),_0x1d314b);try{fs[_0x055c('0x6b')](_0x1eb6ba,parseInt(_0x055c('0x6c'),0x8));extract(_0x1eb6ba,{'dir':_0x1d314b},function(_0x2602cc){if(_0x2602cc){logger['error'](_0x2602cc);handleError(_0x2602cc,!![]);};var _0x203161=fs['readdirSync'](_0x1d314b);if(_0x203161[_0x055c('0x39')]>0x1){removeReferences(_0x1eb6ba,_0x1d314b);logger['error'](_0x055c('0x6d'));return _0x46b975(new Error(_0x055c('0x6d')));}var _0x543091=fs[_0x055c('0x6e')](path['join'](_0x1d314b,_0x203161[0x0]));if(_0x543091[_0x055c('0x6f')]()){removeReferences(_0x1eb6ba,_0x1d314b);logger['error']('Invalid\x20plugin\x20structure');return _0x46b975(new Error('Invalid\x20plugin\x20structure'));}if(_0x543091[_0x055c('0x70')]()){var _0x19c189=fs[_0x055c('0x71')](path[_0x055c('0x59')](_0x1d314b,_0x203161[0x0]));if(_0x19c189[_0x055c('0x39')]===0x0){removeReferences(_0x1eb6ba,_0x1d314b);logger[_0x055c('0x2b')](_0x055c('0x6d'));return _0x46b975(new Error(_0x055c('0x6d')));}var _0x1bf466=_0x19c189['some'](function(_0x1e87f4){return _0x1e87f4===_0x055c('0x72');});if(!_0x1bf466){return _0x46b975(new Error(_0x055c('0x73')));}var _0x3f7623=fs[_0x055c('0x74')](path[_0x055c('0x59')](_0x1d314b,_0x203161[0x0],_0x055c('0x72')));var _0x4ef63e=JSON[_0x055c('0x75')](_0x3f7623);if('undefined'==typeof _0x4ef63e[_0x055c('0x2d')]){return _0x46b975(new Error(_0x055c('0x76')));}if(_0x055c('0x1f')==typeof _0x4ef63e[_0x055c('0x31')]){return _0x46b975(new Error(_0x055c('0x77')));}if(_0x055c('0x1f')==typeof _0x4ef63e[_0x055c('0x78')]){return _0x46b975(new Error(_0x055c('0x79')));}if(_0x055c('0x1f')==typeof _0x4ef63e[_0x055c('0x7a')]){return _0x46b975(new Error(_0x055c('0x7b')));}if(_0x4ef63e[_0x055c('0x31')]===_0x055c('0x7c')){if(_0x055c('0x1f')==typeof _0x4ef63e[_0x055c('0x7a')]['views']){return _0x46b975(new Error(_0x055c('0x7d')));}if('undefined'==typeof _0x4ef63e[_0x055c('0x7a')]['views'][_0x055c('0x7e')]&&_0x055c('0x1f')==typeof _0x4ef63e[_0x055c('0x7a')][_0x055c('0x7f')][_0x055c('0x80')]){return _0x46b975(new Error(_0x055c('0x81')));}}else if(_0x4ef63e[_0x055c('0x31')]===_0x055c('0x82')){if(_0x055c('0x1f')==typeof _0x4ef63e[_0x055c('0x7a')]['scriptName']){return _0x46b975(new Error(_0x055c('0x83')));}if(_0x055c('0x1f')==typeof _0x4ef63e[_0x055c('0x7a')][_0x055c('0x84')]){return _0x46b975(new Error(_0x055c('0x85')));}}else{return _0x46b975(new Error(_0x055c('0x86')));}var _0x55ff5f=_0x4ef63e[_0x055c('0x2d')];var _0x174099=_0x4ef63e['description'];var _0x40ff07=_0x4ef63e[_0x055c('0x31')];var _0x2613b3=_0x4ef63e[_0x055c('0x87')]?_0x4ef63e['sidebar']:_0x055c('0x88');var _0x25e159=_0x4ef63e[_0x055c('0x89')]?_0x4ef63e['icon']:_0x055c('0x8a');var _0x4a28b2='';var _0x30359e='';var _0xd050a2='';var _0xb56570='';var _0x5497f1=_0x4ef63e[_0x055c('0x78')];if(_0x40ff07==='html'){if(_0x055c('0x1f')!=typeof _0x4ef63e['parameters'][_0x055c('0x7f')][_0x055c('0x7e')]){var _0x2a5d5b=_0x4ef63e[_0x055c('0x7a')][_0x055c('0x7f')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0x055c('0x8b')](_0x2a5d5b)){_0x4a28b2=path[_0x055c('0x59')](_0x055c('0x8c'),_0x1565bc,_0x203161[0x0],_0x2a5d5b);}else{_0x4a28b2=_0x2a5d5b;}}else{logger[_0x055c('0x62')](_0x055c('0x8d'));}if(_0x055c('0x1f')!=typeof _0x4ef63e[_0x055c('0x7a')]['views'][_0x055c('0x80')]){var _0x1ae01e=_0x4ef63e['parameters'][_0x055c('0x7f')]['agent'];if(!/^(f|ht)tps?:\/\//i['test'](_0x1ae01e)){_0x30359e=path[_0x055c('0x59')](_0x055c('0x8c'),_0x1565bc,_0x203161[0x0],_0x1ae01e);}else{_0x30359e=_0x1ae01e;}}else{logger[_0x055c('0x62')](_0x055c('0x8e'));}}else if(_0x40ff07===_0x055c('0x82')){_0xd050a2=_0x4ef63e[_0x055c('0x7a')][_0x055c('0x8f')];_0xb56570=_0x4ef63e[_0x055c('0x7a')]['scriptPath'];if(_0x055c('0x1f')!=typeof _0x4ef63e[_0x055c('0x7a')][_0x055c('0x7f')]){if(_0x055c('0x1f')!=typeof _0x4ef63e[_0x055c('0x7a')][_0x055c('0x7f')][_0x055c('0x7e')]){var _0x2a5d5b=_0x4ef63e[_0x055c('0x7a')]['views'][_0x055c('0x7e')];if(!/^(f|ht)tps?:\/\//i[_0x055c('0x8b')](_0x2a5d5b)){_0x4a28b2=path[_0x055c('0x59')](_0x055c('0x8c'),_0x1565bc,_0x203161[0x0],_0x2a5d5b);}else{_0x4a28b2=_0x2a5d5b;}}if(_0x055c('0x1f')!=typeof _0x4ef63e[_0x055c('0x7a')][_0x055c('0x7f')]['agent']){var _0x1ae01e=_0x4ef63e[_0x055c('0x7a')]['views']['agent'];if(!/^(f|ht)tps?:\/\//i['test'](_0x1ae01e)){_0x30359e=path[_0x055c('0x59')](_0x055c('0x8c'),_0x1565bc,_0x203161[0x0],_0x1ae01e);}else{_0x30359e=_0x1ae01e;}}}}var _0x299dbc={'name':_0x55ff5f,'description':_0x174099,'path':path[_0x055c('0x59')](_0x1565bc,_0x203161[0x0]),'type':_0x40ff07,'sidebar':_0x2613b3,'icon':_0x25e159,'adminUrl':_0x4a28b2,'agentUrl':_0x30359e,'scriptName':_0xd050a2,'scriptPath':_0xb56570,'version':_0x5497f1};removeReferences(_0x1eb6ba,null);return db[_0x055c('0x45')][_0x055c('0x90')](_0x299dbc)['then'](function(_0x47d841){var _0x47d9a8={'role':_0x2eb184[_0x055c('0x91')][_0x055c('0x92')],'userProfileId':_0x2eb184[_0x055c('0x91')][_0x055c('0x93')]};if(!_0x47d9a8)throw new Error(_0x055c('0x94'));if(_0x47d9a8['role']===_0x055c('0x95')){var _0xf71f0f=_0x47d841[_0x055c('0x29')]({'plain':!![]});return db[_0x055c('0x96')][_0x055c('0x4a')]({'where':{'name':_0x055c('0x97'),'userProfileId':_0x47d9a8[_0x055c('0x93')]},'raw':!![]})['then'](function(_0x22a922){if(_0x22a922&&_0x22a922[_0x055c('0x98')]===0x0){return db[_0x055c('0x99')][_0x055c('0x90')]({'name':_0xf71f0f['name'],'resourceId':_0xf71f0f['id'],'type':_0x22a922[_0x055c('0x2d')],'sectionId':_0x22a922['id']},{})[_0x055c('0x27')](function(){return _0x47d841;});}else{return _0x47d841;}})['catch'](function(_0x54bd23){logger[_0x055c('0x2b')](_0x055c('0x9a'),_0x54bd23);throw _0x54bd23;});}return _0x47d841;})[_0x055c('0x27')](respondWithResult(_0x55e081,null))[_0x055c('0x47')](handleError(_0x55e081,null));}});}catch(_0x529cef){_0x55e081[_0x055c('0x2e')](0x1f4)[_0x055c('0x2f')](_0x529cef);}};function removeReferences(_0x187fb5,_0x53f021){try{if(_0x187fb5){fs['unlinkSync'](_0x187fb5);logger[_0x055c('0x62')](_0x055c('0x9b'));}if(_0x53f021){rimraf(_0x53f021,function(){});logger[_0x055c('0x62')](_0x055c('0x9c'));}}catch(_0x12f9d7){logger[_0x055c('0x2b')](_0x12f9d7);}}exports[_0x055c('0x26')]=function(_0x50239d,_0x346602,_0x1eb4ba){return db[_0x055c('0x45')]['find']({'where':{'id':_0x50239d[_0x055c('0x49')]['id']}})[_0x055c('0x27')](handleEntityNotFound(_0x346602,null))[_0x055c('0x27')](saveUpdates(_0x50239d['body'],null))[_0x055c('0x27')](respondWithResult(_0x346602,null))[_0x055c('0x47')](handleError(_0x346602,null));};exports[_0x055c('0x9d')]=function(_0xdfa89e,_0x110797,_0x40987b){return db[_0x055c('0x45')]['find']({'where':{'id':_0xdfa89e[_0x055c('0x49')]['id']}})[_0x055c('0x27')](function(_0x3e9aa7){if(_0x3e9aa7){return _0x3e9aa7['destroy']();}})['then'](function(_0x180d91){rimraf(path['join'](config[_0x055c('0x67')],_0x055c('0x4c'),path[_0x055c('0x5a')](_0x180d91[_0x055c('0x5')])),function(){});return _0x180d91;})[_0x055c('0x27')](handleEntityNotFound(_0x110797,null))[_0x055c('0x27')](respondWithStatusCode(_0x110797,null))['catch'](handleError(_0x110797,null));};exports[_0x055c('0x9e')]=function(_0x5f0774,_0x27c971,_0x572827){return BPromise[_0x055c('0x9f')]()['then'](function(){if(!_0x5f0774['query'][_0x055c('0x5')]){throw new Error(_0x055c('0xa0'));}if(!_0x5f0774[_0x055c('0x33')][_0x055c('0xa1')]){throw new Error(_0x055c('0xa2'));}var _0x311c67=_0x5f0774['query'][_0x055c('0xa3')]?_0x5f0774['query']['hostname']+':'+_0x5f0774['query'][_0x055c('0xa1')]:_0x055c('0xa4')+_0x5f0774[_0x055c('0x33')][_0x055c('0xa1')];var _0x58f088=_0x5f0774[_0x055c('0x33')][_0x055c('0x23')]?_0x5f0774[_0x055c('0x33')][_0x055c('0x23')]:!![];var _0x7e4a8d=_0x5f0774[_0x055c('0x33')][_0x055c('0xa5')]?_0x5f0774[_0x055c('0x33')][_0x055c('0xa5')]:null;var _0x247d69={'method':_0x5f0774[_0x055c('0xa6')],'uri':util[_0x055c('0x4d')]('%s%s',_0x311c67,_0x5f0774[_0x055c('0x33')][_0x055c('0x5')]),'json':_0x58f088,'resolveWithFullResponse':!![],'encoding':_0x7e4a8d,'qs':_0x5f0774[_0x055c('0x33')]};if(_0x5f0774['headers']){_0x247d69[_0x055c('0xa7')]=_0x5f0774[_0x055c('0xa7')];if(_0x247d69[_0x055c('0xa7')][_0x055c('0xa8')]){delete _0x247d69['headers']['content-length'];}}if(_0x247d69[_0x055c('0xa7')][_0x055c('0xa9')]){delete _0x247d69['headers'][_0x055c('0xa9')];}return rp(_0x247d69);})['then'](function(_0x3ce7e5){if(_0x3ce7e5){_0x27c971[_0x055c('0x21')](_0x3ce7e5[_0x055c('0xa7')]);logger['info'](_0x3ce7e5[_0x055c('0x91')]);if(_['endsWith'](_0x5f0774[_0x055c('0x33')][_0x055c('0x5')],_0x055c('0x4b'))&&_0x3ce7e5[_0x055c('0xaa')]==0x1f4){return _0x27c971[_0x055c('0x2a')](_0x3ce7e5[_0x055c('0xaa')]);}else{return _0x27c971['status'](_0x3ce7e5['statusCode'])[_0x055c('0x2f')](_0x3ce7e5[_0x055c('0x91')]);}}else{return _0x27c971[_0x055c('0x2a')](0xc8);}})[_0x055c('0x47')](handleError(_0x27c971,null));};exports['webhookPost']=function(_0x1c482e,_0x1b46e4,_0x244211){return BPromise[_0x055c('0x9f')]()['then'](function(){if(!_0x1c482e['query'][_0x055c('0x5')]){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x1c482e[_0x055c('0x33')][_0x055c('0xa1')]){throw new Error(_0x055c('0xa2'));}var _0x203729=_0x1c482e[_0x055c('0x33')]['hostname']?_0x1c482e[_0x055c('0x33')][_0x055c('0xa3')]+':'+_0x1c482e['query'][_0x055c('0xa1')]:'http://localhost:'+_0x1c482e[_0x055c('0x33')]['port'];var _0x326ada=_0x1c482e[_0x055c('0x33')][_0x055c('0x23')]?_0x1c482e[_0x055c('0x33')]['json']:!![];var _0x483c23=_0x1c482e['query']['encoding']?_0x1c482e[_0x055c('0x33')][_0x055c('0xa5')]:null;var _0x1e2079={'method':_0x1c482e[_0x055c('0xa6')],'uri':util['format'](_0x055c('0xab'),_0x203729,_0x1c482e[_0x055c('0x33')][_0x055c('0x5')]),'json':_0x326ada,'resolveWithFullResponse':!![],'encoding':_0x483c23,'body':_0x1c482e[_0x055c('0x91')]};if(_0x1c482e['headers']){_0x1e2079['headers']=_0x1c482e['headers'];if(_0x1e2079[_0x055c('0xa7')][_0x055c('0xa8')]){delete _0x1e2079[_0x055c('0xa7')][_0x055c('0xa8')];}}if(_0x1e2079[_0x055c('0xa7')][_0x055c('0xa9')]){delete _0x1e2079[_0x055c('0xa7')][_0x055c('0xa9')];}return rp(_0x1e2079);})['then'](function(_0x2403b9){if(_0x2403b9){_0x1b46e4[_0x055c('0x21')](_0x2403b9[_0x055c('0xa7')]);logger[_0x055c('0x62')](_0x2403b9[_0x055c('0x91')]);return _0x1b46e4[_0x055c('0x2e')](_0x2403b9[_0x055c('0xaa')])[_0x055c('0x2f')](_0x2403b9[_0x055c('0x91')]);}else{return _0x1b46e4[_0x055c('0x2a')](0xc8);}})[_0x055c('0x47')](handleError(_0x1b46e4,null));};
\ No newline at end of file
index 6c11d9a..8339a96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5c8=['events','../../mysqldb','Plugin','save','emit','hasOwnProperty','hook','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc5c8,0x118));var _0x8c5c=function(_0x44836a,_0x135e0b){_0x44836a=_0x44836a-0x0;var _0x3b786b=_0xc5c8[_0x44836a];return _0x3b786b;};'use strict';var EventEmitter=require(_0x8c5c('0x0'));var Plugin=require(_0x8c5c('0x1'))['db'][_0x8c5c('0x2')];var PluginEvents=new EventEmitter();PluginEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8c5c('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0xf33a8e){return function(_0x210e70,_0x56f1db,_0x302b48){PluginEvents[_0x8c5c('0x4')](_0xf33a8e+':'+_0x210e70['id'],_0x210e70);PluginEvents[_0x8c5c('0x4')](_0xf33a8e,_0x210e70);_0x302b48(null);};}for(var e in events){if(events[_0x8c5c('0x5')](e)){var event=events[e];Plugin[_0x8c5c('0x6')](e,emitEvent(event));}}module[_0x8c5c('0x7')]=PluginEvents;
\ No newline at end of file
+var _0xba0d=['setMaxListeners','save','remove','emit','hook','exports','events','Plugin'];(function(_0x1af42e,_0x486436){var _0x4cc4f3=function(_0x1dc41d){while(--_0x1dc41d){_0x1af42e['push'](_0x1af42e['shift']());}};_0x4cc4f3(++_0x486436);}(_0xba0d,0x8e));var _0xdba0=function(_0x19bbba,_0x1923f5){_0x19bbba=_0x19bbba-0x0;var _0x2d23d9=_0xba0d[_0x19bbba];return _0x2d23d9;};'use strict';var EventEmitter=require(_0xdba0('0x0'));var Plugin=require('../../mysqldb')['db'][_0xdba0('0x1')];var PluginEvents=new EventEmitter();PluginEvents[_0xdba0('0x2')](0x0);var events={'afterCreate':_0xdba0('0x3'),'afterUpdate':'update','afterDestroy':_0xdba0('0x4')};function emitEvent(_0x50eadf){return function(_0xebb600,_0x426cac,_0x6a96ad){PluginEvents[_0xdba0('0x5')](_0x50eadf+':'+_0xebb600['id'],_0xebb600);PluginEvents['emit'](_0x50eadf,_0xebb600);_0x6a96ad(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Plugin[_0xdba0('0x6')](e,emitEvent(event));}}module[_0xdba0('0x7')]=PluginEvents;
\ No newline at end of file
index a9e2b6e..28d434c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f2b=['moment','request-promise','path','./plugin.attributes','exports','plugins','lodash','../../config/logger','api'];(function(_0x5bb207,_0x157700){var _0x4b198e=function(_0x4d6c36){while(--_0x4d6c36){_0x5bb207['push'](_0x5bb207['shift']());}};_0x4b198e(++_0x157700);}(_0x3f2b,0x72));var _0xb3f2=function(_0x46d550,_0x2aeca9){_0x46d550=_0x46d550-0x0;var _0x1165ef=_0x3f2b[_0x46d550];return _0x1165ef;};'use strict';var _=require(_0xb3f2('0x0'));var util=require('util');var logger=require(_0xb3f2('0x1'))(_0xb3f2('0x2'));var moment=require(_0xb3f2('0x3'));var BPromise=require('bluebird');var rp=require(_0xb3f2('0x4'));var fs=require('fs');var path=require(_0xb3f2('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xb3f2('0x6'));module[_0xb3f2('0x7')]=function(_0x1063b8,_0x3bba16){return _0x1063b8['define']('Plugin',attributes,{'tableName':_0xb3f2('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa39b=['exports','define','Plugin','plugins','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x427221,_0x524aff){var _0x32b62c=function(_0x4bfea1){while(--_0x4bfea1){_0x427221['push'](_0x427221['shift']());}};_0x32b62c(++_0x524aff);}(_0xa39b,0xf4));var _0xba39=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xa39b[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require(_0xba39('0x0'));var logger=require(_0xba39('0x1'))(_0xba39('0x2'));var moment=require(_0xba39('0x3'));var BPromise=require(_0xba39('0x4'));var rp=require(_0xba39('0x5'));var fs=require('fs');var path=require(_0xba39('0x6'));var rimraf=require(_0xba39('0x7'));var config=require('../../config/environment');var attributes=require('./plugin.attributes');module[_0xba39('0x8')]=function(_0x552bb0,_0x112e88){return _0x552bb0[_0xba39('0x9')](_0xba39('0xa'),attributes,{'tableName':_0xba39('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f2792eb..5ee4561 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25c5=['body','options','raw','CreatePlugin','catch','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./plugin.socket','request','then','info','Plugin,\x20%s,\x20%s','debug','Plugin,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x4baae2,_0x487ab6){var _0x1a2285=function(_0x1cea47){while(--_0x1cea47){_0x4baae2['push'](_0x4baae2['shift']());}};_0x1a2285(++_0x487ab6);}(_0x25c5,0xfd));var _0x525c=function(_0x1562a2,_0x2e4655){_0x1562a2=_0x1562a2-0x0;var _0x39a636=_0x25c5[_0x1562a2];return _0x39a636;};'use strict';var _=require('lodash');var util=require(_0x525c('0x0'));var moment=require(_0x525c('0x1'));var BPromise=require(_0x525c('0x2'));var rs=require(_0x525c('0x3'));var fs=require('fs');var Redis=require(_0x525c('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x525c('0x5'))(_0x525c('0x6'));var config=require(_0x525c('0x7'));var jayson=require(_0x525c('0x8'));var client=jayson[_0x525c('0x9')]['http']({'port':0x232a});config[_0x525c('0xa')]=_[_0x525c('0xb')](config[_0x525c('0xa')],{'host':_0x525c('0xc'),'port':0x18eb});var socket=require(_0x525c('0xd'))(new Redis(config['redis']));require(_0x525c('0xe'))['register'](socket);function respondWithRpcPromise(_0x57847,_0x1520c0,_0x531f1a){return new BPromise(function(_0x333e73,_0x29d556){return client[_0x525c('0xf')](_0x57847,_0x531f1a)[_0x525c('0x10')](function(_0x4a233f){logger[_0x525c('0x11')](_0x525c('0x12'),_0x1520c0,'request\x20sent');logger[_0x525c('0x13')](_0x525c('0x14'),_0x1520c0,_0x525c('0x15'),JSON[_0x525c('0x16')](_0x4a233f));if(_0x4a233f[_0x525c('0x17')]){if(_0x4a233f['error'][_0x525c('0x18')]===0x1f4){logger['error']('Plugin,\x20%s,\x20%s',_0x1520c0,_0x4a233f[_0x525c('0x17')][_0x525c('0x19')]);return _0x29d556(_0x4a233f[_0x525c('0x17')][_0x525c('0x19')]);}logger[_0x525c('0x17')](_0x525c('0x12'),_0x1520c0,_0x4a233f[_0x525c('0x17')][_0x525c('0x19')]);return _0x333e73(_0x4a233f['error']['message']);}else{logger[_0x525c('0x11')](_0x525c('0x12'),_0x1520c0,_0x525c('0x15'));_0x333e73(_0x4a233f['result'][_0x525c('0x19')]);}})['catch'](function(_0x5a6cac){logger[_0x525c('0x17')](_0x525c('0x12'),_0x1520c0,_0x5a6cac);_0x29d556(_0x5a6cac);});});}exports['CreatePlugin']=function(_0x1d4138){var _0x53a77c=this;return new Promise(function(_0x177b30,_0x5080f3){return db['Plugin']['create'](_0x1d4138[_0x525c('0x1a')],{'raw':_0x1d4138[_0x525c('0x1b')]?_0x1d4138[_0x525c('0x1b')][_0x525c('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x529afb){logger[_0x525c('0x11')](_0x525c('0x1d'),_0x1d4138);logger['debug'](_0x525c('0x1d'),_0x1d4138,JSON[_0x525c('0x16')](_0x529afb));_0x177b30(_0x529afb);})[_0x525c('0x1e')](function(_0x1cec3){logger['error'](_0x525c('0x1d'),_0x1cec3[_0x525c('0x19')],_0x1d4138);_0x5080f3(_0x53a77c[_0x525c('0x17')](0x1f4,_0x1cec3[_0x525c('0x19')]));});});};
\ No newline at end of file
+var _0x41dd=['then','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','request','Plugin,\x20%s,\x20%s','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result','catch','CreatePlugin','Plugin','create','options'];(function(_0x43d11d,_0xccff91){var _0x38cd08=function(_0x131ae2){while(--_0x131ae2){_0x43d11d['push'](_0x43d11d['shift']());}};_0x38cd08(++_0xccff91);}(_0x41dd,0x121));var _0xd41d=function(_0x5e905f,_0x2a3b62){_0x5e905f=_0x5e905f-0x0;var _0x4c7108=_0x41dd[_0x5e905f];return _0x4c7108;};'use strict';var _=require(_0xd41d('0x0'));var util=require('util');var moment=require(_0xd41d('0x1'));var BPromise=require(_0xd41d('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd41d('0x3'));var db=require(_0xd41d('0x4'))['db'];var utils=require(_0xd41d('0x5'));var logger=require('../../config/logger')(_0xd41d('0x6'));var config=require(_0xd41d('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xd41d('0x8')]['http']({'port':0x232a});config[_0xd41d('0x9')]=_[_0xd41d('0xa')](config[_0xd41d('0x9')],{'host':_0xd41d('0xb'),'port':0x18eb});var socket=require(_0xd41d('0xc'))(new Redis(config['redis']));require(_0xd41d('0xd'))[_0xd41d('0xe')](socket);function respondWithRpcPromise(_0x5bf2b2,_0x30e634,_0x3e46c7){return new BPromise(function(_0x3fae92,_0x272a52){return client[_0xd41d('0xf')](_0x5bf2b2,_0x3e46c7)['then'](function(_0x201e4d){logger['info'](_0xd41d('0x10'),_0x30e634,'request\x20sent');logger[_0xd41d('0x11')](_0xd41d('0x12'),_0x30e634,'request\x20sent',JSON[_0xd41d('0x13')](_0x201e4d));if(_0x201e4d[_0xd41d('0x14')]){if(_0x201e4d[_0xd41d('0x14')][_0xd41d('0x15')]===0x1f4){logger['error']('Plugin,\x20%s,\x20%s',_0x30e634,_0x201e4d[_0xd41d('0x14')][_0xd41d('0x16')]);return _0x272a52(_0x201e4d[_0xd41d('0x14')][_0xd41d('0x16')]);}logger[_0xd41d('0x14')](_0xd41d('0x10'),_0x30e634,_0x201e4d[_0xd41d('0x14')][_0xd41d('0x16')]);return _0x3fae92(_0x201e4d['error']['message']);}else{logger[_0xd41d('0x17')](_0xd41d('0x10'),_0x30e634,_0xd41d('0x18'));_0x3fae92(_0x201e4d[_0xd41d('0x19')][_0xd41d('0x16')]);}})[_0xd41d('0x1a')](function(_0x3e4cd0){logger['error'](_0xd41d('0x10'),_0x30e634,_0x3e4cd0);_0x272a52(_0x3e4cd0);});});}exports[_0xd41d('0x1b')]=function(_0x274ff2){var _0x1004dd=this;return new Promise(function(_0x5a73d4,_0x3f527c){return db[_0xd41d('0x1c')][_0xd41d('0x1d')](_0x274ff2['body'],{'raw':_0x274ff2['options']?_0x274ff2[_0xd41d('0x1e')]['raw']===undefined?!![]:![]:!![]})[_0xd41d('0x1f')](function(_0xa83349){logger[_0xd41d('0x17')](_0xd41d('0x1b'),_0x274ff2);logger[_0xd41d('0x11')](_0xd41d('0x1b'),_0x274ff2,JSON[_0xd41d('0x13')](_0xa83349));_0x5a73d4(_0xa83349);})[_0xd41d('0x1a')](function(_0x11671e){logger[_0xd41d('0x14')]('CreatePlugin',_0x11671e[_0xd41d('0x16')],_0x274ff2);_0x3f527c(_0x1004dd['error'](0x1f4,_0x11671e['message']));});});};
\ No newline at end of file
index 0cf5a42..e4d45cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x188a=['save','remove','emit','register','length','plugin:','./plugin.events'];(function(_0x2039a4,_0x187b1c){var _0x225330=function(_0x47801c){while(--_0x47801c){_0x2039a4['push'](_0x2039a4['shift']());}};_0x225330(++_0x187b1c);}(_0x188a,0x6f));var _0xa188=function(_0x352875,_0x14a0dd){_0x352875=_0x352875-0x0;var _0x157066=_0x188a[_0x352875];return _0x157066;};'use strict';var PluginEvents=require(_0xa188('0x0'));var events=[_0xa188('0x1'),_0xa188('0x2'),'update'];function createListener(_0x1531d4,_0xd8d71f){return function(_0x1f9af1){_0xd8d71f[_0xa188('0x3')](_0x1531d4,_0x1f9af1);};}function removeListener(_0x488918,_0x3ed7bd){return function(){PluginEvents['removeListener'](_0x488918,_0x3ed7bd);};}exports[_0xa188('0x4')]=function(_0x2ba930){for(var _0x3887d3=0x0,_0x1891bb=events[_0xa188('0x5')];_0x3887d3<_0x1891bb;_0x3887d3++){var _0xdb0d36=events[_0x3887d3];var _0x325304=createListener(_0xa188('0x6')+_0xdb0d36,_0x2ba930);PluginEvents['on'](_0xdb0d36,_0x325304);}};
\ No newline at end of file
+var _0xd5e2=['./plugin.events','save','remove','emit','removeListener','length'];(function(_0x307d86,_0x9264f2){var _0x361745=function(_0x1b64e1){while(--_0x1b64e1){_0x307d86['push'](_0x307d86['shift']());}};_0x361745(++_0x9264f2);}(_0xd5e2,0x1bc));var _0x2d5e=function(_0x49ed67,_0x290989){_0x49ed67=_0x49ed67-0x0;var _0x1523d5=_0xd5e2[_0x49ed67];return _0x1523d5;};'use strict';var PluginEvents=require(_0x2d5e('0x0'));var events=[_0x2d5e('0x1'),_0x2d5e('0x2'),'update'];function createListener(_0x8171da,_0x10bbb3){return function(_0x102928){_0x10bbb3[_0x2d5e('0x3')](_0x8171da,_0x102928);};}function removeListener(_0x1953ba,_0x405a87){return function(){PluginEvents[_0x2d5e('0x4')](_0x1953ba,_0x405a87);};}exports['register']=function(_0x49c41d){for(var _0x28e846=0x0,_0xfdb7ed=events[_0x2d5e('0x5')];_0x28e846<_0xfdb7ed;_0x28e846++){var _0x131238=events[_0x28e846];var _0x4eb26a=createListener('plugin:'+_0x131238,_0x49c41d);PluginEvents['on'](_0x131238,_0x4eb26a);}};
\ No newline at end of file
index 36dd2c6..cfd8155 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(_0x4e9327,_0x27a85e){var _0xb22635=function(_0x572dfc){while(--_0x572dfc){_0x4e9327['push'](_0x4e9327['shift']());}};_0xb22635(++_0x27a85e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0xa9e0[_0x3b5250];return _0xc844a1;};'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(_0x352e09,_0x37a7da){var _0x1b7094=function(_0x561074){while(--_0x561074){_0x352e09['push'](_0x352e09['shift']());}};_0x1b7094(++_0x37a7da);}(_0xa9e0,0x123));var _0x0a9e=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0xa9e0[_0x297fd3];return _0x2af381;};'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 4c974f1..d506f4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb688=['error','stack','name','send','info','index','then','reject','motion2','catch','show','describe','params','create','body','script','join','../../files/plugins','chdir','dirname','start','dump','update','stop','Unknown\x20status','destroy','Unknown\x20id','../../config/pm2','../../config/logger','api','path','child_process','exec','sendStatus','status','json'];(function(_0x45346d,_0xffd56b){var _0x5ce7ca=function(_0x27ce87){while(--_0x27ce87){_0x45346d['push'](_0x45346d['shift']());}};_0x5ce7ca(++_0xffd56b);}(_0xb688,0xcf));var _0x8b68=function(_0x46ef27,_0x567e39){_0x46ef27=_0x46ef27-0x0;var _0x346e96=_0xb688[_0x46ef27];return _0x346e96;};'use strict';var _=require('lodash');var pm2=require(_0x8b68('0x0'));var logger=require(_0x8b68('0x1'))(_0x8b68('0x2'));var path=require(_0x8b68('0x3'));var exec=require(_0x8b68('0x4'))[_0x8b68('0x5')];var BPromise=require('bluebird');function handleEntityNotFound(_0x41030e,_0x27925d){return function(_0x30f33d){if(!_0x30f33d){_0x41030e[_0x8b68('0x6')](0x194);;}return _0x30f33d;};}function respondWithResult(_0x583d16,_0x34314e){_0x34314e=_0x34314e||0xc8;return function(_0x57ee56){if(_0x57ee56){return _0x583d16[_0x8b68('0x7')](_0x34314e)[_0x8b68('0x8')](_0x57ee56);}return null;};}function handleError(_0x130892,_0xa5571b){_0xa5571b=_0xa5571b||0x1f4;return function(_0x132617){logger[_0x8b68('0x9')](_0x132617[_0x8b68('0xa')]);if(_0x132617[_0x8b68('0xb')]){delete _0x132617[_0x8b68('0xb')];}_0x130892[_0x8b68('0x7')](_0xa5571b)[_0x8b68('0xc')](_0x132617);};}function execChildProcess(){return new BPromise(function(_0x317d01,_0x2a852a){exec('npm\x20install',function(_0x2c0f3b,_0x4426d1,_0x5e76c){logger[_0x8b68('0xd')](_0x4426d1);logger[_0x8b68('0xd')](_0x5e76c);if(_0x2c0f3b){logger[_0x8b68('0x9')](_0x2c0f3b);return _0x2a852a(_0x2c0f3b);}return _0x317d01(_0x4426d1);});});}exports[_0x8b68('0xe')]=function(_0x137c8e,_0x2686c7){return pm2['list']()[_0x8b68('0xf')](function(_0x509033){if(_0x509033){var _0x5e3c66=_[_0x8b68('0x10')](_0x509033,function(_0x1554d6){return _0x1554d6[_0x8b68('0xb')]==='express'||_0x1554d6['name']===_0x8b68('0x11');});return{'rows':_0x5e3c66,'count':_0x5e3c66['length']};}return null;})[_0x8b68('0xf')](respondWithResult(_0x2686c7,null))[_0x8b68('0x12')](handleError(_0x2686c7,null));};exports[_0x8b68('0x13')]=function(_0x10c9c6,_0x491695){return pm2[_0x8b68('0x14')](_0x10c9c6[_0x8b68('0x15')]['id'])['then'](respondWithResult(_0x491695,null))[_0x8b68('0xf')](handleEntityNotFound(_0x491695,null))[_0x8b68('0x12')](handleError(_0x491695,null));};exports[_0x8b68('0x16')]=function(_0x17f321,_0x38b7a7){if(_0x17f321['body'][_0x8b68('0xb')]&&_0x17f321[_0x8b68('0x17')][_0x8b68('0x18')]){var _0x1a9788=path[_0x8b68('0x19')](__dirname,_0x8b68('0x1a'),_0x17f321['body']['script']);var _0x23edc1=process['cwd']();process[_0x8b68('0x1b')](path[_0x8b68('0x1c')](_0x1a9788));return execChildProcess()[_0x8b68('0xf')](function(_0x21ecca){process[_0x8b68('0x1b')](_0x23edc1);return pm2[_0x8b68('0x1d')]({'name':_0x17f321['body'][_0x8b68('0xb')],'script':_0x1a9788});})[_0x8b68('0xf')](function(_0x4ca77d){pm2[_0x8b68('0x1e')]();return _0x4ca77d[0x0];})[_0x8b68('0xf')](respondWithResult(_0x38b7a7,0xc9))[_0x8b68('0x12')](handleError(_0x38b7a7,null));}else{return _0x38b7a7['status'](0x1f4)['send']({'message':'Missing\x20name\x20and/or\x20path'});}};exports[_0x8b68('0x1f')]=function(_0x448e43,_0x2ba2a3){if(_0x448e43['body']['id']){delete _0x448e43[_0x8b68('0x17')]['id'];}var _0x53aaa2={'online':'restart','stopped':_0x8b68('0x20')};if(_0x53aaa2['hasOwnProperty'](_0x448e43[_0x8b68('0x17')][_0x8b68('0x7')])){return pm2[_0x53aaa2[_0x448e43['body']['status']]](_0x448e43[_0x8b68('0x15')]['id'])[_0x8b68('0xf')](respondWithResult(_0x2ba2a3,0xc8))[_0x8b68('0x12')](handleError(_0x2ba2a3,null));}else{return _0x2ba2a3[_0x8b68('0x7')](0x1f4)[_0x8b68('0xc')]({'message':_0x8b68('0x21')});}};exports[_0x8b68('0x22')]=function(_0x5b7ed1,_0x3b6d1b){if(_0x5b7ed1['body']['id']){delete _0x5b7ed1[_0x8b68('0x17')]['id'];}if(_0x5b7ed1[_0x8b68('0x15')]['id']){return pm2['delete'](_0x5b7ed1[_0x8b68('0x15')]['id'])[_0x8b68('0xf')](function(_0x26fe0e){pm2['dump']();return _0x26fe0e[0x0];})['then'](respondWithResult(_0x3b6d1b,null))[_0x8b68('0x12')](handleError(_0x3b6d1b,null));}else{return _0x3b6d1b[_0x8b68('0x7')](0x1f4)[_0x8b68('0xc')]({'message':_0x8b68('0x23')});}};
\ No newline at end of file
+var _0x4483=['error','stack','name','send','npm\x20install','info','list','express','motion2','length','then','catch','show','describe','body','script','join','../../files/plugins','chdir','dirname','start','dump','update','restart','stop','hasOwnProperty','params','delete','Unknown\x20id','lodash','../../config/pm2','../../config/logger','path','child_process','exec','bluebird','sendStatus','status','json'];(function(_0x315e5c,_0x28fbb1){var _0xc9fba6=function(_0x5f10ef){while(--_0x5f10ef){_0x315e5c['push'](_0x315e5c['shift']());}};_0xc9fba6(++_0x28fbb1);}(_0x4483,0x1a3));var _0x3448=function(_0x555479,_0x3aa2b4){_0x555479=_0x555479-0x0;var _0x560c8e=_0x4483[_0x555479];return _0x560c8e;};'use strict';var _=require(_0x3448('0x0'));var pm2=require(_0x3448('0x1'));var logger=require(_0x3448('0x2'))('api');var path=require(_0x3448('0x3'));var exec=require(_0x3448('0x4'))[_0x3448('0x5')];var BPromise=require(_0x3448('0x6'));function handleEntityNotFound(_0xef1a93,_0x5f5163){return function(_0xeb5b8){if(!_0xeb5b8){_0xef1a93[_0x3448('0x7')](0x194);;}return _0xeb5b8;};}function respondWithResult(_0x1b05db,_0xd3606d){_0xd3606d=_0xd3606d||0xc8;return function(_0x1bb7e5){if(_0x1bb7e5){return _0x1b05db[_0x3448('0x8')](_0xd3606d)[_0x3448('0x9')](_0x1bb7e5);}return null;};}function handleError(_0x34b926,_0x5923ee){_0x5923ee=_0x5923ee||0x1f4;return function(_0x5c82c6){logger[_0x3448('0xa')](_0x5c82c6[_0x3448('0xb')]);if(_0x5c82c6[_0x3448('0xc')]){delete _0x5c82c6[_0x3448('0xc')];}_0x34b926[_0x3448('0x8')](_0x5923ee)[_0x3448('0xd')](_0x5c82c6);};}function execChildProcess(){return new BPromise(function(_0x2bdf02,_0x32cd61){exec(_0x3448('0xe'),function(_0x35bb7b,_0x2a6048,_0x481a6f){logger['info'](_0x2a6048);logger[_0x3448('0xf')](_0x481a6f);if(_0x35bb7b){logger[_0x3448('0xa')](_0x35bb7b);return _0x32cd61(_0x35bb7b);}return _0x2bdf02(_0x2a6048);});});}exports['index']=function(_0x2661e1,_0xdfb89d){return pm2[_0x3448('0x10')]()['then'](function(_0x14104c){if(_0x14104c){var _0x2952a6=_['reject'](_0x14104c,function(_0x2387a3){return _0x2387a3[_0x3448('0xc')]===_0x3448('0x11')||_0x2387a3['name']===_0x3448('0x12');});return{'rows':_0x2952a6,'count':_0x2952a6[_0x3448('0x13')]};}return null;})[_0x3448('0x14')](respondWithResult(_0xdfb89d,null))[_0x3448('0x15')](handleError(_0xdfb89d,null));};exports[_0x3448('0x16')]=function(_0x1b2081,_0x247d1a){return pm2[_0x3448('0x17')](_0x1b2081['params']['id'])[_0x3448('0x14')](respondWithResult(_0x247d1a,null))['then'](handleEntityNotFound(_0x247d1a,null))['catch'](handleError(_0x247d1a,null));};exports['create']=function(_0x1e9774,_0x278736){if(_0x1e9774[_0x3448('0x18')]['name']&&_0x1e9774[_0x3448('0x18')][_0x3448('0x19')]){var _0x317de6=path[_0x3448('0x1a')](__dirname,_0x3448('0x1b'),_0x1e9774[_0x3448('0x18')]['script']);var _0x54c7ee=process['cwd']();process[_0x3448('0x1c')](path[_0x3448('0x1d')](_0x317de6));return execChildProcess()['then'](function(_0x5b1f7c){process[_0x3448('0x1c')](_0x54c7ee);return pm2[_0x3448('0x1e')]({'name':_0x1e9774[_0x3448('0x18')][_0x3448('0xc')],'script':_0x317de6});})[_0x3448('0x14')](function(_0x566ff5){pm2[_0x3448('0x1f')]();return _0x566ff5[0x0];})[_0x3448('0x14')](respondWithResult(_0x278736,0xc9))[_0x3448('0x15')](handleError(_0x278736,null));}else{return _0x278736[_0x3448('0x8')](0x1f4)[_0x3448('0xd')]({'message':'Missing\x20name\x20and/or\x20path'});}};exports[_0x3448('0x20')]=function(_0x393081,_0x52c163){if(_0x393081[_0x3448('0x18')]['id']){delete _0x393081[_0x3448('0x18')]['id'];}var _0x310912={'online':_0x3448('0x21'),'stopped':_0x3448('0x22')};if(_0x310912[_0x3448('0x23')](_0x393081[_0x3448('0x18')][_0x3448('0x8')])){return pm2[_0x310912[_0x393081['body'][_0x3448('0x8')]]](_0x393081[_0x3448('0x24')]['id'])[_0x3448('0x14')](respondWithResult(_0x52c163,0xc8))['catch'](handleError(_0x52c163,null));}else{return _0x52c163[_0x3448('0x8')](0x1f4)['send']({'message':'Unknown\x20status'});}};exports['destroy']=function(_0x52fb48,_0xff6513){if(_0x52fb48['body']['id']){delete _0x52fb48['body']['id'];}if(_0x52fb48[_0x3448('0x24')]['id']){return pm2[_0x3448('0x25')](_0x52fb48[_0x3448('0x24')]['id'])[_0x3448('0x14')](function(_0x4f4f32){pm2[_0x3448('0x1f')]();return _0x4f4f32[0x0];})[_0x3448('0x14')](respondWithResult(_0xff6513,null))[_0x3448('0x15')](handleError(_0xff6513,null));}else{return _0xff6513['status'](0x1f4)[_0x3448('0xd')]({'message':_0x3448('0x26')});}};
\ No newline at end of file
index 093551a..595adf6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3ce=['getAgents','/queues','exports','express','Router','../../components/auth/service','./realtime.controller','/agents','isAuthenticated'];(function(_0x11005e,_0x20c3d2){var _0x29338f=function(_0x3384e9){while(--_0x3384e9){_0x11005e['push'](_0x11005e['shift']());}};_0x29338f(++_0x20c3d2);}(_0xb3ce,0x9c));var _0xeb3c=function(_0x3477a8,_0x340d4e){_0x3477a8=_0x3477a8-0x0;var _0x40b0d8=_0xb3ce[_0x3477a8];return _0x40b0d8;};'use strict';var express=require(_0xeb3c('0x0'));var router=express[_0xeb3c('0x1')]();var auth=require(_0xeb3c('0x2'));var controller=require(_0xeb3c('0x3'));router['get'](_0xeb3c('0x4'),auth[_0xeb3c('0x5')](),controller[_0xeb3c('0x6')]);router['get'](_0xeb3c('0x7'),auth[_0xeb3c('0x5')](),controller['getQueues']);module[_0xeb3c('0x8')]=router;
\ No newline at end of file
+var _0xfe90=['isAuthenticated','getAgents','get','/queues','express','Router','../../components/auth/service','./realtime.controller','/agents'];(function(_0x494a2f,_0x2609ff){var _0x487c5a=function(_0xbb27ee){while(--_0xbb27ee){_0x494a2f['push'](_0x494a2f['shift']());}};_0x487c5a(++_0x2609ff);}(_0xfe90,0x67));var _0x0fe9=function(_0x4e6a67,_0x2dc242){_0x4e6a67=_0x4e6a67-0x0;var _0x176d8f=_0xfe90[_0x4e6a67];return _0x176d8f;};'use strict';var express=require(_0x0fe9('0x0'));var router=express[_0x0fe9('0x1')]();var auth=require(_0x0fe9('0x2'));var controller=require(_0x0fe9('0x3'));router['get'](_0x0fe9('0x4'),auth[_0x0fe9('0x5')](),controller[_0x0fe9('0x6')]);router[_0x0fe9('0x7')](_0x0fe9('0x8'),auth[_0x0fe9('0x5')](),controller['getQueues']);module['exports']=router;
\ No newline at end of file
index 3a0a308..95923d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcd6=['globalQueueFilter','rawAttributes','type','agent','raw','isEmpty','where','user','role','nolimit','getResources','findAndCountAll','rows','omit','globalStatusFilter','pauseTypeFilter','getQueues','resolve','fieldName','key','QueueCampaigns','util','lodash','../../components/parsers/qs','../../config/logger','api','client','http','limit','count','offset','Content-Range','json','error','stack','name','send','request','Agents','then','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','result','merge','catch','startCase','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','Unable\x20to\x20retrieve\x20voice\x20queues\x20channels','available','paused','outbound','push','dialActive','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','map','loggedIn','waiting','voice','busy','pTalking','originated','find','pick','filter','queue','length','connectedlinenum','internal','toString','talking','UserId','accountcode','voiceStatus','online','agents','User','Queue','Pause','findAll','QueueId','idle','unknown','unavailable','ringing','isNil','chatPause','faxPause','openchannelPause','whatsappPause','every','voicePause','pause','*pause','mail','chat','sms','openchannel','fax','whatsapp','includes','Invalid\x20channel','toLowerCase','all','uniq','value','fields','globalStatus','order','startsWith','ASC','sort','pauseType','lastLoginAt','address','chatCapacity','openchannelCapacity','smsCapacity','whatsappCapacity','faxCapacity','openchannelCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','chatStatus','openchannelStatus','mailStatus','smsStatus','whatsappStatus','faxStatus','chatStatusTime','openchannelStatusTime','mailStatusTime','faxStatusTime','destconnectedlinenum','screenrecording','phoneBarEnableAutomaticScreenRecording','routealias','mailPause','smsPause','query','channel','join'];(function(_0x39b949,_0x556461){var _0x33a041=function(_0x31aa34){while(--_0x31aa34){_0x39b949['push'](_0x39b949['shift']());}};_0x33a041(++_0x556461);}(_0xdcd6,0x1da));var _0x6dcd=function(_0x494f7f,_0x34a09b){_0x494f7f=_0x494f7f-0x0;var _0x18ebe4=_0xdcd6[_0x494f7f];return _0x18ebe4;};'use strict';var util=require(_0x6dcd('0x0'));var _=require(_0x6dcd('0x1'));var jayson=require('jayson/promise');var qs=require(_0x6dcd('0x2'));var logger=require(_0x6dcd('0x3'))(_0x6dcd('0x4'));var db=require('../../mysqldb')['db'];var amiClient=jayson[_0x6dcd('0x5')][_0x6dcd('0x6')]({'port':0x232a});var routingClient=jayson[_0x6dcd('0x5')][_0x6dcd('0x6')]({'port':0x232c});function respondWithFilteredResult(_0x42010b,_0x4ea5ae){return function(_0x48e2a4){if(_0x48e2a4){var _0x39291f=typeof _0x4ea5ae['offset']==='undefined'&&typeof _0x4ea5ae[_0x6dcd('0x7')]==='undefined';var _0x1c8a56=_0x48e2a4[_0x6dcd('0x8')];var _0x467b58=_0x39291f?0x0:_0x4ea5ae[_0x6dcd('0x9')];var _0x24090b=_0x39291f?_0x48e2a4['count']:_0x4ea5ae[_0x6dcd('0x9')]+_0x4ea5ae['limit'];var _0xa7ed16;if(_0x24090b>=_0x1c8a56){_0x24090b=_0x1c8a56;_0xa7ed16=0xc8;}else{_0xa7ed16=0xce;}_0x42010b['status'](_0xa7ed16);return _0x42010b['set'](_0x6dcd('0xa'),_0x467b58+'-'+_0x24090b+'/'+_0x1c8a56)[_0x6dcd('0xb')](_0x48e2a4);}return null;};}function handleError(_0x3174c4,_0x430ae0){_0x430ae0=_0x430ae0||0x1f4;return function(_0x40598b){logger[_0x6dcd('0xc')](_0x40598b[_0x6dcd('0xd')]);if(_0x40598b[_0x6dcd('0xe')]){delete _0x40598b[_0x6dcd('0xe')];}_0x3174c4['status'](_0x430ae0)[_0x6dcd('0xf')](_0x40598b);};}function getRealtimeAgents(){return new Promise(function(_0x3824e3,_0x5dcc53){return amiClient[_0x6dcd('0x10')](_0x6dcd('0x11'),{})['then'](function(_0x298ebd){if(_0x298ebd[_0x6dcd('0xc')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x15a9f6=_0x298ebd['result'];return routingClient[_0x6dcd('0x10')]('Agents',{})[_0x6dcd('0x12')](function(_0x15cb6f){if(_0x15cb6f[_0x6dcd('0xc')])throw new Error(_0x6dcd('0x13'));var _0x26bd62=_0x15cb6f[_0x6dcd('0x14')];return _0x3824e3(_[_0x6dcd('0x15')]({},_0x15a9f6,_0x26bd62));});})[_0x6dcd('0x16')](function(_0x51a5d3){_0x5dcc53(_0x51a5d3);});});}function getRealtimeQueues(_0x56e7f3,_0x2341af){return new Promise(function(_0x1a14a4,_0x1a00a3){var _0x526518=_0x2341af==='voice'?amiClient:routingClient;return _0x526518['request'](_[_0x6dcd('0x17')](_0x2341af)+'Queues',_0x56e7f3)[_0x6dcd('0x12')](function(_0x320994){if(_0x320994[_0x6dcd('0xc')])throw new Error(util['format'](_0x6dcd('0x18'),_0x2341af));return _0x1a14a4(_0x320994[_0x6dcd('0x14')]);})[_0x6dcd('0x16')](function(_0x52b338){_0x1a00a3(_0x52b338);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x869a09,_0x125dc0){return amiClient[_0x6dcd('0x10')]('VoiceQueuesChannels',{})[_0x6dcd('0x12')](function(_0x3e6c89){if(_0x3e6c89[_0x6dcd('0xc')])throw new Error(_0x6dcd('0x19'));return _0x869a09(_0x3e6c89[_0x6dcd('0x14')]);})[_0x6dcd('0x16')](function(_0x5a1a81){_0x125dc0(_0x5a1a81);});});}function initializeQueues(_0x4796a3,_0x4d87d5,_0x5e286f,_0x2078c2){var _0x3e2479=['loggedIn',_0x6dcd('0x1a'),'waiting','talking',_0x6dcd('0x1b')];if(_0x5e286f==='voice'&&_0x2078c2===_0x6dcd('0x1c')){_0x3e2479[_0x6dcd('0x1d')]('pTalking','originated','message',_0x6dcd('0x1e'),'dialMethod','Trunk',_0x6dcd('0x1f'),_0x6dcd('0x20'),_0x6dcd('0x21'),_0x6dcd('0x22'),_0x6dcd('0x23'),_0x6dcd('0x24'),_0x6dcd('0x25'),_0x6dcd('0x26'),_0x6dcd('0x27'),'predictiveIntervalAvailable','predictiveIntervalTotalCalls',_0x6dcd('0x28'),'predictiveIntervalDroppedCallsTimeout',_0x6dcd('0x29'),'predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime');}return _0x4796a3[_0x6dcd('0x2a')](function(_0x2e38f9){var _0x318559=_0x2e38f9['get']({'plain':!![]});_0x318559['agents']=[];_0x318559['paused']=0x0;_0x318559['loggedInDb']=0x0;_0x318559[_0x6dcd('0x2b')]=0x0;_0x318559[_0x6dcd('0x1a')]=0x0;_0x318559[_0x6dcd('0x2c')]=0x0;if(_0x5e286f===_0x6dcd('0x2d')){_0x318559['talking']=0x0;_0x318559[_0x6dcd('0x2e')]=0x0;if(_0x2078c2==='outbound'){_0x318559[_0x6dcd('0x2f')]=0x0;_0x318559[_0x6dcd('0x30')]=0x0;}}var _0x258aee=_[_0x6dcd('0x31')](_0x4d87d5,['id',_0x318559['id']]);if(_0x258aee)_[_0x6dcd('0x15')](_0x318559,_[_0x6dcd('0x32')](_0x258aee,_0x3e2479));return _0x318559;});}function updateAgentVoiceStatus(_0x5c4e68,_0x3950d6,_0x3bed10){var _0x489d32=_[_0x6dcd('0x33')](_0x3bed10,[_0x6dcd('0x34'),_0x3950d6[_0x6dcd('0xe')]]);if(_0x489d32[_0x6dcd('0x35')]===0x0)return _0x5c4e68[_0x6dcd('0x2e')]=!![];if(_['some'](_0x489d32,[_0x6dcd('0x36'),_0x5c4e68[_0x6dcd('0x37')][_0x6dcd('0x38')]()]))return _0x5c4e68[_0x6dcd('0x39')]=!![];if(!_0x5c4e68['talking'])return _0x5c4e68[_0x6dcd('0x2e')]=!![];}function getVoiceQueueAgents(_0x53a878,_0x3b339c,_0x7e8377,_0xc11a1b){var _0x202772=_[_0x6dcd('0x31')](_0x3b339c,['id',_0x53a878['id']]);if(!_0x202772)return _0x53a878;return _0x202772['getMembers']({'raw':!![]})['then'](function(_0x48cab5){for(var _0x490e90=0x0;_0x490e90<_0x48cab5[_0x6dcd('0x35')];_0x490e90++){var _0x41dc36=_['find'](_0x7e8377,['id',_0x48cab5[_0x490e90][_0x6dcd('0x3a')]]);if(!_0x41dc36){_0x41dc36={'id':_0x48cab5[_0x490e90]['UserId'],'name':_0x48cab5[_0x490e90]['UserId'],'accountcode':'','online':![]};}var _0x3988e4={'id':_0x41dc36['id'],'name':_0x41dc36[_0x6dcd('0xe')],'internal':_0x41dc36[_0x6dcd('0x3b')],'online':Boolean(_0x41dc36['online']),'paused':Boolean(_0x48cab5[_0x490e90][_0x6dcd('0x1b')])};if(_0x41dc36[_0x6dcd('0x3c')]===_0x6dcd('0x39'))updateAgentVoiceStatus(_0x3988e4,_0x53a878,_0xc11a1b);if(_0x3988e4[_0x6dcd('0x3d')])_0x53a878['loggedInDb']++;if(_0x3988e4[_0x6dcd('0x2e')])_0x53a878[_0x6dcd('0x2e')]++;if(_0x3988e4[_0x6dcd('0x1b')]&&!_0x3988e4[_0x6dcd('0x2e')]&&!_0x3988e4[_0x6dcd('0x39')])_0x53a878[_0x6dcd('0x1b')]++;_0x53a878[_0x6dcd('0x3e')][_0x6dcd('0x1d')](_0x3988e4);}return _0x53a878;});}function getQueueAgents(_0x4aa13a,_0x3e2da6,_0x47cece){var _0x1bdb99=_0x6dcd('0x3f')+_['startCase'](_0x47cece)+_0x6dcd('0x40');var _0x572edf=_0x47cece+_0x6dcd('0x41');return db[_0x1bdb99][_0x6dcd('0x42')]({'where':{[_[_0x6dcd('0x17')](_0x47cece)+_0x6dcd('0x43')]:_0x4aa13a['id']},'raw':!![]})[_0x6dcd('0x12')](function(_0x34a92b){for(var _0x596b18=0x0;_0x596b18<_0x34a92b[_0x6dcd('0x35')];_0x596b18++){var _0x731c77=_['find'](_0x3e2da6,['id',_0x34a92b[_0x596b18][_0x6dcd('0x3a')]]);if(!_0x731c77){_0x731c77={'id':_0x34a92b[_0x596b18][_0x6dcd('0x3a')],'name':_0x34a92b[_0x596b18]['UserId'],'online':![],['pauseField']:![]};}var _0x4504cc={'id':_0x731c77['id'],'name':_0x731c77[_0x6dcd('0xe')],'online':Boolean(_0x731c77[_0x6dcd('0x3d')]),'paused':Boolean(_0x731c77[_0x572edf])};if(_0x4504cc[_0x6dcd('0x3d')])_0x4aa13a['loggedInDb']++;_0x4aa13a[_0x6dcd('0x3e')][_0x6dcd('0x1d')](_0x4504cc);}return _0x4aa13a;});}function isIdle(_0x9a1582){return _0x9a1582===_0x6dcd('0x44')||_0x9a1582===_0x6dcd('0x45')||_0x9a1582===_0x6dcd('0x46')||_0x9a1582===_0x6dcd('0x47')||_[_0x6dcd('0x48')](_0x9a1582);}function isAgentPaused(_0x154dc0,_0x25b6e6){var _0x3f468e=[_0x154dc0[_0x6dcd('0x49')],_0x154dc0[_0x6dcd('0x4a')],_0x154dc0['mailPause'],_0x154dc0[_0x6dcd('0x4b')],_0x154dc0['smsPause'],_0x154dc0['voicePause'],_0x154dc0[_0x6dcd('0x4c')]];if(!_0x25b6e6)return _[_0x6dcd('0x4d')](_0x3f468e);var _0x22c66b=_[_0x6dcd('0x33')](_0x3f468e);return _0x22c66b['length']>0x0&&_0x22c66b[_0x6dcd('0x35')]<_0x3f468e[_0x6dcd('0x35')]?!![]:![];}function isAgentIdle(_0x3c15c8){if(_0x3c15c8['voiceStatus']!==_0x6dcd('0x44')&&_0x3c15c8[_0x6dcd('0x4e')]){_0x3c15c8['voiceStatus']='pause';return![];}return _[_0x6dcd('0x4d')]([_0x3c15c8['chatStatus'],_0x3c15c8['faxStatus'],_0x3c15c8['mailStatus'],_0x3c15c8['openchannelStatus'],_0x3c15c8['smsStatus'],_0x3c15c8['voiceStatus'],_0x3c15c8['whatsappStatus']],isIdle);}function getAgentStatus(_0x53af93){var _0x5d98a7=_0x6dcd('0x45');if(isAgentPaused(_0x53af93))_0x5d98a7=_0x6dcd('0x4f');else if(isAgentPaused(_0x53af93,!![]))_0x5d98a7=_0x6dcd('0x50');else if(isAgentIdle(_0x53af93))_0x5d98a7=_0x6dcd('0x44');else _0x5d98a7='busy';return _0x5d98a7;}function validateChannel(_0x26e7b2){var _0x1ea568=[_0x6dcd('0x51'),_0x6dcd('0x52'),_0x6dcd('0x53'),_0x6dcd('0x54'),_0x6dcd('0x55'),_0x6dcd('0x56'),_0x6dcd('0x2d')];if(!_[_0x6dcd('0x57')](_0x1ea568,_0x26e7b2['toLowerCase']()))throw new Error(_0x6dcd('0x58'));return _0x26e7b2[_0x6dcd('0x59')]();}function getFilteredAgentIds(_0xaaf0a4,_0x4e4d1a){var _0x1f1197=_['isArray'](_0xaaf0a4)?_0xaaf0a4:[_0xaaf0a4];var _0x125997=_['map'](_0x1f1197,function(_0x453b1d){return db[_0x4e4d1a]['findOne']({'where':{'name':_0x453b1d}})[_0x6dcd('0x12')](function(_0x58ed53){if(!_0x58ed53)return[];return _0x58ed53['getAgents']({'attributes':['id'],'raw':!![]});});});return Promise[_0x6dcd('0x5a')](_0x125997)['then'](function(_0x522fa4){var _0x45b8cb=_(_0x522fa4)['flatten']()[_0x6dcd('0x2a')]('id')[_0x6dcd('0x5b')]()[_0x6dcd('0x5c')]();return _0x45b8cb;});}function getUpdatedSortOptions(_0x425c17){var _0x181ee6={'fields':[],'order':null};var _0x149b11=_0x425c17['split'](',');_0x181ee6[_0x6dcd('0x5d')]=_['filter'](_0x149b11,function(_0x4a5804){if(!_0x4a5804[_0x6dcd('0x57')](_0x6dcd('0x5e')))return!![];_0x181ee6[_0x6dcd('0x5f')]=_[_0x6dcd('0x60')](_0x4a5804,'-')?'DESC':_0x6dcd('0x61');return![];});return _0x181ee6;}function orderAgentsByStatus(_0x3c8ad3,_0x36a340){return _0x3c8ad3[_0x6dcd('0x62')](function(_0x32a92b,_0x16b3ff){if(_0x32a92b[_0x6dcd('0x5e')]===_0x16b3ff[_0x6dcd('0x5e')]&&_0x32a92b[_0x6dcd('0x5e')]===_0x6dcd('0x4f')){if(_0x36a340==='DESC')return(_0x32a92b[_0x6dcd('0x63')]||'')<(_0x16b3ff[_0x6dcd('0x63')]||'')?0x1:-0x1;return _0x32a92b['pauseType']<_0x16b3ff[_0x6dcd('0x63')]?-0x1:0x1;}else{if(_0x36a340==='DESC')return _0x32a92b[_0x6dcd('0x5e')]<_0x16b3ff[_0x6dcd('0x5e')]?0x1:-0x1;return _0x32a92b[_0x6dcd('0x5e')]<_0x16b3ff[_0x6dcd('0x5e')]?-0x1:0x1;}});}exports['getAgents']=function(_0xa74d14,_0x445093){var _0x552f5e={'count':0x0,'rows':[]},_0x316ce1={},_0x35358e,_0x12a892,_0x503df4,_0x3f6c99,_0xd79d0d=['userpic','online',_0x6dcd('0x64'),'lastPauseAt',_0x6dcd('0x63'),'lastPauseAt',_0x6dcd('0x37'),_0x6dcd('0x65'),_0x6dcd('0x49'),_0x6dcd('0x4b'),'mailPause','smsPause','whatsappPause','faxPause',_0x6dcd('0x4e'),_0x6dcd('0x66'),_0x6dcd('0x67'),'mailCapacity',_0x6dcd('0x68'),_0x6dcd('0x69'),_0x6dcd('0x6a'),'chatCurrentCapacity',_0x6dcd('0x6b'),_0x6dcd('0x6c'),_0x6dcd('0x6d'),_0x6dcd('0x6e'),'faxCurrentCapacity',_0x6dcd('0x6f'),_0x6dcd('0x70'),_0x6dcd('0x71'),_0x6dcd('0x72'),_0x6dcd('0x73'),_0x6dcd('0x74'),_0x6dcd('0x3c'),_0x6dcd('0x75'),_0x6dcd('0x76'),_0x6dcd('0x77'),'smsStatusTime','whatsappStatusTime',_0x6dcd('0x78'),'voiceStatusTime',_0x6dcd('0x34'),_0x6dcd('0x79'),_0x6dcd('0x7a'),'phoneBarEnableScreenRecordingByAgent',_0x6dcd('0x7b'),_0x6dcd('0x7c')],_0x2a1501=[_0x6dcd('0x49'),_0x6dcd('0x4b'),_0x6dcd('0x7d'),_0x6dcd('0x7e'),'whatsappPause',_0x6dcd('0x4a'),_0x6dcd('0x4e'),_0x6dcd('0x3d')];Promise['resolve']()[_0x6dcd('0x12')](function(){if(_0xa74d14[_0x6dcd('0x7f')]['channel'])_0x35358e=validateChannel(_0xa74d14[_0x6dcd('0x7f')][_0x6dcd('0x80')]);if(!_0xa74d14[_0x6dcd('0x7f')][_0x6dcd('0x62')]||!_0xa74d14[_0x6dcd('0x7f')][_0x6dcd('0x62')][_0x6dcd('0x57')](_0x6dcd('0x5e')))return;var _0x2bdcb0=getUpdatedSortOptions(_0xa74d14[_0x6dcd('0x7f')][_0x6dcd('0x62')]);_0xa74d14[_0x6dcd('0x7f')]['sort']=_0x2bdcb0[_0x6dcd('0x5d')][_0x6dcd('0x81')](',');_0x12a892=_0x2bdcb0[_0x6dcd('0x5f')];})[_0x6dcd('0x12')](function(){if(!_0xa74d14[_0x6dcd('0x7f')][_0x6dcd('0x82')])return[];var _0xbc8b08=_[_0x6dcd('0x17')](_0x35358e)+_0x6dcd('0x40');return getFilteredAgentIds(_0xa74d14[_0x6dcd('0x7f')]['globalQueueFilter'],_0xbc8b08);})[_0x6dcd('0x12')](function(_0x57e1e9){var _0x48c390=_[_0x6dcd('0x2a')](db[_0x6dcd('0x3f')][_0x6dcd('0x83')],function(_0x661cd0){return{'name':_0x661cd0['fieldName'],'type':_0x661cd0[_0x6dcd('0x84')]['key']};});_0xa74d14['query']['role']=_0x6dcd('0x85');_0xa74d14[_0x6dcd('0x7f')]['online']=!![];_0x316ce1=qs['getOptions'](_0x48c390,_0xa74d14);_0x316ce1[_0x6dcd('0x86')]=!![];if(!_[_0x6dcd('0x87')](_0x57e1e9)){_0x316ce1[_0x6dcd('0x88')]=_['merge'](_0x316ce1[_0x6dcd('0x88')],{'$and':[{'id':{'$in':_0x57e1e9}}]});}else if(!_[_0x6dcd('0x87')](_0xa74d14[_0x6dcd('0x7f')][_0x6dcd('0x82')])){return _0x552f5e;}if(_0xa74d14[_0x6dcd('0x89')][_0x6dcd('0x8a')]===_0x6dcd('0x89')){var _0x2ed76c={'params':{'id':_0xa74d14[_0x6dcd('0x89')]['userProfileId']},'query':{'section':_0x6dcd('0x11'),'role':_0x6dcd('0x85'),'online':!![],'nolimit':_0xa74d14['query'][_0x6dcd('0x8b')],'sort':_0xa74d14['query'][_0x6dcd('0x62')],'filter':_0xa74d14[_0x6dcd('0x7f')][_0x6dcd('0x33')],'raw':!![],'ids':_0x57e1e9}};return db['UserProfile'][_0x6dcd('0x8c')](_0x2ed76c);}return db[_0x6dcd('0x3f')][_0x6dcd('0x8d')](_0x316ce1);})['then'](function(_0x725114){_0x552f5e[_0x6dcd('0x8')]=_0x725114['count'];_0x503df4=_0x725114[_0x6dcd('0x8e')];return getRealtimeAgents();})[_0x6dcd('0x12')](function(_0xb4c725){_0x3f6c99=_0xb4c725[_0x6dcd('0x8e')];return _0x503df4['map'](function(_0x47e86e){var _0x29d1a2=_[_0x6dcd('0x31')](_0x3f6c99,['id',_0x47e86e['id']]);if(_0x29d1a2)_['merge'](_0x47e86e,_[_0x6dcd('0x32')](_[_0x6dcd('0x8f')](_0x29d1a2,_0x2a1501),_0xd79d0d));_0x47e86e['globalStatus']=getAgentStatus(_0x47e86e);return _0x47e86e;});})[_0x6dcd('0x12')](function(_0x3479c6){var _0x75b7e3;if(_0xa74d14[_0x6dcd('0x7f')][_0x6dcd('0x90')]){_0x75b7e3=_[_0x6dcd('0x33')](_0x3479c6,['globalStatus',_0xa74d14[_0x6dcd('0x7f')]['globalStatusFilter']]);if(_0xa74d14['query']['pauseTypeFilter']){_0x75b7e3=_[_0x6dcd('0x33')](_0x75b7e3,[_0x6dcd('0x63'),_0xa74d14['query'][_0x6dcd('0x91')]]);}}if(_0x75b7e3)_0x3479c6=_0x75b7e3;if(!_0x12a892)return _0x3479c6;return orderAgentsByStatus(_0x3479c6,_0x12a892);})[_0x6dcd('0x12')](function(_0x2978c8){_0x552f5e[_0x6dcd('0x8e')]=_0x2978c8;return _0x552f5e;})[_0x6dcd('0x12')](respondWithFilteredResult(_0x445093,_0x316ce1))['catch'](handleError(_0x445093,null));};exports[_0x6dcd('0x92')]=function(_0x28e7f8,_0x57d1f1){var _0xc62ca3={'count':0x0,'rows':[]},_0x4437f7={},_0x4917ce,_0x1874ba,_0x4a7f1b,_0x49550b,_0x56a539;Promise[_0x6dcd('0x93')]()[_0x6dcd('0x12')](function(){if(_0x28e7f8['query']['channel'])_0x4917ce=validateChannel(_0x28e7f8[_0x6dcd('0x7f')][_0x6dcd('0x80')]);var _0x382b93=_[_0x6dcd('0x17')](_0x4917ce)+_0x6dcd('0x40');var _0x255a6d=_[_0x6dcd('0x2a')](db[_0x382b93][_0x6dcd('0x83')],function(_0x22339c){return{'name':_0x22339c[_0x6dcd('0x94')],'type':_0x22339c[_0x6dcd('0x84')][_0x6dcd('0x95')]};});_0x4437f7=qs['getOptions'](_0x255a6d,_0x28e7f8);if(_0x28e7f8['user'][_0x6dcd('0x8a')]===_0x6dcd('0x89')){var _0x457eb9={'params':{'id':_0x28e7f8[_0x6dcd('0x89')]['userProfileId']},'query':{'section':_0x4917ce===_0x6dcd('0x2d')&&_0x28e7f8[_0x6dcd('0x7f')][_0x6dcd('0x84')]==='outbound'?_0x6dcd('0x96'):_[_0x6dcd('0x17')](_0x4917ce)+'Queues','type':_0x28e7f8['query'][_0x6dcd('0x84')],'nolimit':!![],'sort':_0x6dcd('0xe'),'filter':_0x28e7f8[_0x6dcd('0x7f')][_0x6dcd('0x33')]}};return db['UserProfile'][_0x6dcd('0x8c')](_0x457eb9);}return db[_0x382b93][_0x6dcd('0x8d')](_0x4437f7);})['then'](function(_0x1f81af){_0xc62ca3[_0x6dcd('0x8')]=_0x1f81af[_0x6dcd('0x8')];_0x1874ba=_0x1f81af[_0x6dcd('0x8e')];return getRealtimeQueues(_0x28e7f8,_0x4917ce);})[_0x6dcd('0x12')](function(_0x274b57){_0x49550b=_0x274b57[_0x6dcd('0x8e')];return getRealtimeAgents();})[_0x6dcd('0x12')](function(_0x237c1c){_0x4a7f1b=_0x237c1c[_0x6dcd('0x8e')];if(_0x4917ce!=_0x6dcd('0x2d'))return;return getRealtimeVoiceQueueChannels();})[_0x6dcd('0x12')](function(_0x42715e){_0x56a539=_0x42715e?_0x42715e['rows']:[];return initializeQueues(_0x1874ba,_0x49550b,_0x4917ce,_0x28e7f8['query'][_0x6dcd('0x84')]);})[_0x6dcd('0x12')](function(_0x3dd63b){var _0xe7a956=_0x3dd63b[_0x6dcd('0x2a')](function(_0x5bb391){if(_0x4917ce==='voice')return getVoiceQueueAgents(_0x5bb391,_0x1874ba,_0x4a7f1b,_0x56a539);else return getQueueAgents(_0x5bb391,_0x4a7f1b,_0x4917ce);});return Promise[_0x6dcd('0x5a')](_0xe7a956);})[_0x6dcd('0x12')](function(_0x51e135){_0xc62ca3[_0x6dcd('0x8e')]=_0x51e135;return _0xc62ca3;})[_0x6dcd('0x12')](respondWithFilteredResult(_0x57d1f1,_0x4437f7))[_0x6dcd('0x16')](handleError(_0x57d1f1,null));};
\ No newline at end of file
+var _0x5242=['Queues','UserProfile','util','lodash','jayson/promise','../../components/parsers/qs','../../config/utils','api','../../mysqldb','client','http','offset','undefined','count','limit','status','set','error','stack','name','send','request','Agents','then','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','catch','voice','startCase','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','VoiceQueuesChannels','loggedIn','available','waiting','talking','paused','outbound','push','pTalking','originated','message','dialActive','dialMethod','Trunk','startPredictive','startProgressive','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','map','agents','loggedInDb','busy','find','filter','queue','length','some','internal','toString','UserId','accountcode','online','User','Queue','Pause','QueueId','chatPause','faxPause','mailPause','openchannelPause','smsPause','voicePause','whatsappPause','idle','unknown','ringing','isNil','voiceStatus','pause','chatStatus','faxStatus','mailStatus','openchannelStatus','*pause','Invalid\x20channel','toLowerCase','isArray','getAgents','all','uniq','value','includes','findAll','pauseType','split','fields','order','startsWith','DESC','sort','globalStatus','fullname','userpic','address','openchannelCapacity','mailCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','smsStatus','whatsappStatus','chatStatusTime','openchannelStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','faxStatusTime','destconnectedlinenum','screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','omit','getChannels','globalQueueFilter','query','pauseTypeFilter','resolve','channel','join','rows','type','key','role','agent','sequelize','literal','FIELD(id,','forEach','where','user','userProfileId','nolimit','extraQueryConditions','getResources','findAndCountAll','Status','getQueues','QueueCampaigns'];(function(_0x942fd1,_0x14e1bb){var _0x15fa5f=function(_0x2682ad){while(--_0x2682ad){_0x942fd1['push'](_0x942fd1['shift']());}};_0x15fa5f(++_0x14e1bb);}(_0x5242,0x148));var _0x2524=function(_0x3f0967,_0x2a4bc8){_0x3f0967=_0x3f0967-0x0;var _0x1312e9=_0x5242[_0x3f0967];return _0x1312e9;};'use strict';var util=require(_0x2524('0x0'));var _=require(_0x2524('0x1'));var jayson=require(_0x2524('0x2'));var qs=require(_0x2524('0x3'));var utils=require(_0x2524('0x4'));var logger=require('../../config/logger')(_0x2524('0x5'));var db=require(_0x2524('0x6'))['db'];var amiClient=jayson[_0x2524('0x7')][_0x2524('0x8')]({'port':0x232a});var routingClient=jayson[_0x2524('0x7')][_0x2524('0x8')]({'port':0x232c});function respondWithFilteredResult(_0x9140b3,_0x5e0f80){return function(_0x2b070c){if(_0x2b070c){var _0x1eca6b=typeof _0x5e0f80[_0x2524('0x9')]===_0x2524('0xa')&&typeof _0x5e0f80['limit']==='undefined';var _0x27992c=_0x2b070c[_0x2524('0xb')];var _0x40f826=_0x1eca6b?0x0:_0x5e0f80['offset'];var _0x11c213=_0x1eca6b?_0x2b070c[_0x2524('0xb')]:_0x5e0f80[_0x2524('0x9')]+_0x5e0f80[_0x2524('0xc')];var _0x28920d;if(_0x11c213>=_0x27992c){_0x11c213=_0x27992c;_0x28920d=0xc8;}else{_0x28920d=0xce;}_0x9140b3[_0x2524('0xd')](_0x28920d);return _0x9140b3[_0x2524('0xe')]('Content-Range',_0x40f826+'-'+_0x11c213+'/'+_0x27992c)['json'](_0x2b070c);}return null;};}function handleError(_0x44d626,_0x3ab81e){_0x3ab81e=_0x3ab81e||0x1f4;return function(_0x3b3d6d){logger[_0x2524('0xf')](_0x3b3d6d[_0x2524('0x10')]);if(_0x3b3d6d[_0x2524('0x11')]){delete _0x3b3d6d[_0x2524('0x11')];}_0x44d626[_0x2524('0xd')](_0x3ab81e)[_0x2524('0x12')](_0x3b3d6d);};}function getRealtimeAgents(){return amiClient[_0x2524('0x13')](_0x2524('0x14'),{})[_0x2524('0x15')](function(_0x19f481){if(_0x19f481[_0x2524('0xf')]){throw new Error(_0x2524('0x16'));}var _0xa91f4e=_0x19f481[_0x2524('0x17')];return routingClient[_0x2524('0x13')](_0x2524('0x14'),{})['then'](function(_0x36ac58){if(_0x36ac58[_0x2524('0xf')]){throw new Error(_0x2524('0x18'));}var _0x113bdd=_0x36ac58[_0x2524('0x17')];return _[_0x2524('0x19')]({},_0xa91f4e,_0x113bdd);});})[_0x2524('0x1a')](function(_0x3da9a2){throw _0x3da9a2;});}function getRealtimeQueues(_0x102b60,_0x5f5243){return new Promise(function(_0x125d00,_0x5be160){var _0x33a5d0=_0x5f5243===_0x2524('0x1b')?amiClient:routingClient;return _0x33a5d0[_0x2524('0x13')](_[_0x2524('0x1c')](_0x5f5243)+'Queues',_0x102b60)['then'](function(_0x29528f){if(_0x29528f[_0x2524('0xf')])throw new Error(util[_0x2524('0x1d')](_0x2524('0x1e'),_0x5f5243));return _0x125d00(_0x29528f['result']);})['catch'](function(_0x32203e){_0x5be160(_0x32203e);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x1cd4ca,_0x53ef2b){return amiClient['request'](_0x2524('0x1f'),{})[_0x2524('0x15')](function(_0x27d628){if(_0x27d628['error'])throw new Error('Unable\x20to\x20retrieve\x20voice\x20queues\x20channels');return _0x1cd4ca(_0x27d628[_0x2524('0x17')]);})[_0x2524('0x1a')](function(_0x57eb6c){_0x53ef2b(_0x57eb6c);});});}function initializeQueues(_0x3bce2c,_0x21b8a0,_0x497338,_0x3be820){var _0x2c5169=[_0x2524('0x20'),_0x2524('0x21'),_0x2524('0x22'),_0x2524('0x23'),_0x2524('0x24')];if(_0x497338===_0x2524('0x1b')&&_0x3be820===_0x2524('0x25')){_0x2c5169[_0x2524('0x26')](_0x2524('0x27'),_0x2524('0x28'),_0x2524('0x29'),_0x2524('0x2a'),_0x2524('0x2b'),_0x2524('0x2c'),_0x2524('0x2d'),_0x2524('0x2e'),'erlangCalls',_0x2524('0x2f'),_0x2524('0x30'),_0x2524('0x31'),_0x2524('0x32'),'dialPredictiveIntervalMaxThreshold',_0x2524('0x33'),_0x2524('0x34'),_0x2524('0x35'),'predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout',_0x2524('0x36'),_0x2524('0x37'),'predictiveIntervalAvgTalktime');}return _0x3bce2c[_0x2524('0x38')](function(_0x26fa77){var _0x4c6100=_0x26fa77['get']({'plain':!![]});_0x4c6100[_0x2524('0x39')]=[];_0x4c6100[_0x2524('0x24')]=0x0;_0x4c6100[_0x2524('0x3a')]=0x0;_0x4c6100[_0x2524('0x20')]=0x0;_0x4c6100['available']=0x0;_0x4c6100[_0x2524('0x22')]=0x0;if(_0x497338===_0x2524('0x1b')){_0x4c6100[_0x2524('0x23')]=0x0;_0x4c6100[_0x2524('0x3b')]=0x0;if(_0x3be820===_0x2524('0x25')){_0x4c6100[_0x2524('0x27')]=0x0;_0x4c6100[_0x2524('0x28')]=0x0;}}var _0x4777c0=_[_0x2524('0x3c')](_0x21b8a0,['id',_0x4c6100['id']]);if(_0x4777c0)_['merge'](_0x4c6100,_['pick'](_0x4777c0,_0x2c5169));return _0x4c6100;});}function updateAgentVoiceStatus(_0x55ab3a,_0x34294a,_0x2f5f32){var _0x391a5c=_[_0x2524('0x3d')](_0x2f5f32,[_0x2524('0x3e'),_0x34294a[_0x2524('0x11')]]);if(_0x391a5c[_0x2524('0x3f')]===0x0)return _0x55ab3a[_0x2524('0x3b')]=!![];if(_[_0x2524('0x40')](_0x391a5c,['connectedlinenum',_0x55ab3a[_0x2524('0x41')][_0x2524('0x42')]()]))return _0x55ab3a[_0x2524('0x23')]=!![];if(!_0x55ab3a[_0x2524('0x23')])return _0x55ab3a[_0x2524('0x3b')]=!![];}function getVoiceQueueAgents(_0x57d579,_0x38aa09,_0x222157,_0xeada22){var _0x211034=_[_0x2524('0x3c')](_0x38aa09,['id',_0x57d579['id']]);if(!_0x211034)return _0x57d579;return _0x211034['getMembers']({'raw':!![]})[_0x2524('0x15')](function(_0x7b8094){for(var _0x421e13=0x0;_0x421e13<_0x7b8094[_0x2524('0x3f')];_0x421e13++){var _0xa29480=_[_0x2524('0x3c')](_0x222157,['id',_0x7b8094[_0x421e13][_0x2524('0x43')]]);if(!_0xa29480){_0xa29480={'id':_0x7b8094[_0x421e13][_0x2524('0x43')],'name':_0x7b8094[_0x421e13][_0x2524('0x43')],'accountcode':'','online':![]};}var _0x51c1e0={'id':_0xa29480['id'],'name':_0xa29480[_0x2524('0x11')],'internal':_0xa29480[_0x2524('0x44')],'online':Boolean(_0xa29480[_0x2524('0x45')]),'paused':Boolean(_0x7b8094[_0x421e13][_0x2524('0x24')])};if(_0xa29480['voiceStatus']===_0x2524('0x23'))updateAgentVoiceStatus(_0x51c1e0,_0x57d579,_0xeada22);if(_0x51c1e0[_0x2524('0x45')])_0x57d579[_0x2524('0x3a')]++;if(_0x51c1e0[_0x2524('0x3b')])_0x57d579[_0x2524('0x3b')]++;if(_0x51c1e0[_0x2524('0x24')]&&!_0x51c1e0[_0x2524('0x3b')]&&!_0x51c1e0[_0x2524('0x23')])_0x57d579['paused']++;_0x57d579[_0x2524('0x39')][_0x2524('0x26')](_0x51c1e0);}return _0x57d579;});}function getQueueAgents(_0xb32e5a,_0x16f71e,_0x1cd6d4){var _0x12e551=_0x2524('0x46')+_['startCase'](_0x1cd6d4)+_0x2524('0x47');var _0x103a10=_0x1cd6d4+_0x2524('0x48');return db[_0x12e551]['findAll']({'where':{[_[_0x2524('0x1c')](_0x1cd6d4)+_0x2524('0x49')]:_0xb32e5a['id']},'raw':!![]})[_0x2524('0x15')](function(_0x3933fc){for(var _0x558283=0x0;_0x558283<_0x3933fc[_0x2524('0x3f')];_0x558283++){var _0x2f1228=_[_0x2524('0x3c')](_0x16f71e,['id',_0x3933fc[_0x558283][_0x2524('0x43')]]);if(!_0x2f1228){_0x2f1228={'id':_0x3933fc[_0x558283][_0x2524('0x43')],'name':_0x3933fc[_0x558283][_0x2524('0x43')],'online':![],['pauseField']:![]};}var _0x350a22={'id':_0x2f1228['id'],'name':_0x2f1228[_0x2524('0x11')],'online':Boolean(_0x2f1228[_0x2524('0x45')]),'paused':Boolean(_0x2f1228[_0x103a10])};if(_0x350a22[_0x2524('0x45')])_0xb32e5a[_0x2524('0x3a')]++;_0xb32e5a[_0x2524('0x39')]['push'](_0x350a22);}return _0xb32e5a;});}function isAgentPaused(_0x27bdbe,_0x196e63){var _0x143c3a=[_0x27bdbe[_0x2524('0x4a')],_0x27bdbe[_0x2524('0x4b')],_0x27bdbe[_0x2524('0x4c')],_0x27bdbe[_0x2524('0x4d')],_0x27bdbe[_0x2524('0x4e')],_0x27bdbe[_0x2524('0x4f')],_0x27bdbe[_0x2524('0x50')]];if(!_0x196e63)return _['every'](_0x143c3a);var _0x582c78=_[_0x2524('0x3d')](_0x143c3a);return _0x582c78['length']>0x0&&_0x582c78['length']<_0x143c3a[_0x2524('0x3f')]?!![]:![];}function isIdle(_0x561568){return _0x561568===_0x2524('0x51')||_0x561568===_0x2524('0x52')||_0x561568==='unavailable'||_0x561568===_0x2524('0x53')||_[_0x2524('0x54')](_0x561568);}function isAgentIdle(_0x5bac9c){if(_0x5bac9c[_0x2524('0x55')]!==_0x2524('0x51')&&_0x5bac9c[_0x2524('0x4f')]){_0x5bac9c[_0x2524('0x55')]=_0x2524('0x56');return![];}return _['every']([_0x5bac9c[_0x2524('0x57')],_0x5bac9c[_0x2524('0x58')],_0x5bac9c[_0x2524('0x59')],_0x5bac9c[_0x2524('0x5a')],_0x5bac9c['smsStatus'],_0x5bac9c['voiceStatus'],_0x5bac9c['whatsappStatus']],isIdle);}function getAgentStatus(_0x419a42){var _0x388939='unknown';if(isAgentPaused(_0x419a42))_0x388939=_0x2524('0x56');else if(isAgentPaused(_0x419a42,!![]))_0x388939=_0x2524('0x5b');else if(isAgentIdle(_0x419a42))_0x388939=_0x2524('0x51');else _0x388939=_0x2524('0x3b');return _0x388939;}function validateChannel(_0x9c4b82){var _0x1b2595=utils['getChannels']();if(!_['includes'](_0x1b2595,_0x9c4b82['toLowerCase']()))throw new Error(_0x2524('0x5c'));return _0x9c4b82[_0x2524('0x5d')]();}function getAgentIdsByQueues(_0x4869a0,_0x5b039a){var _0x22f36a=_[_0x2524('0x5e')](_0x4869a0)?_0x4869a0:[_0x4869a0];var _0x2e728f=_['startCase'](_0x5b039a)+_0x2524('0x47');var _0x4d21e0=_[_0x2524('0x38')](_0x22f36a,function(_0x21bddd){return db[_0x2e728f]['findOne']({'where':{'id':_0x21bddd}})['then'](function(_0x48caef){if(!_0x48caef)return[];return _0x48caef[_0x2524('0x5f')]({'attributes':['id'],'raw':!![]});});});return Promise[_0x2524('0x60')](_0x4d21e0)['then'](function(_0x7e771e){var _0x145378=_(_0x7e771e)['flatten']()[_0x2524('0x38')]('id')[_0x2524('0x61')]()[_0x2524('0x62')]();return _0x145378;});}function getAgentIdsByStatus(_0x516666,_0x20a4d4,_0x2fb1ad){try{if(_0x20a4d4[_0x2524('0x3f')]>0x0){_0x516666=_0x516666[_0x2524('0x3d')](function(_0x39fadf){return _0x20a4d4[_0x2524('0x63')](_0x39fadf['id']);});}var _0x16fd54=_0x516666[_0x2524('0x3d')](function(_0x549767){var _0x21947e=_0x2524('0x3b');if(isAgentIdle(_0x549767)){_0x21947e=_0x2524('0x51');}return _0x21947e===_0x2fb1ad;});return _[_0x2524('0x38')](_0x16fd54,'id');}catch(_0x30f140){throw _0x30f140;}}function getSortedAgentsIdsByStatus(_0x248c47,_0x18434c,_0x577310){return Promise['resolve']()['then'](function(){if(_0x18434c[_0x2524('0x3f')]>0x0){_0x248c47=_0x248c47[_0x2524('0x3d')](function(_0x492050){return _0x18434c[_0x2524('0x63')](_0x492050['id']);});}return _0x248c47;})[_0x2524('0x15')](function(){return db[_0x2524('0x46')][_0x2524('0x64')]({'attributes':['id',_0x2524('0x11'),'fullname',_0x2524('0x4a'),_0x2524('0x4b'),_0x2524('0x4c'),'openchannelPause',_0x2524('0x4e'),'voicePause',_0x2524('0x50'),_0x2524('0x65')],'where':{'id':{'$in':_['map'](_0x248c47,'id')}},'raw':!![]});})['then'](function(_0x18ac45){return _0x18ac45[_0x2524('0x38')](function(_0x589b78){var _0x35adcc=_[_0x2524('0x3c')](_0x248c47,['id',_0x589b78['id']]);var _0x404f81=filterAgentAttributes(_0x35adcc);_[_0x2524('0x19')](_0x589b78,_0x404f81);_0x589b78['globalStatus']=getAgentStatus(_0x589b78);return _0x589b78;});})[_0x2524('0x15')](function(_0x17bb4a){var _0x471a31=sortAgentsByStatus(_0x17bb4a,_0x577310);return _['map'](_0x471a31,'id');})['catch'](function(_0x26260c){throw _0x26260c;});}function getUpdatedSortOptions(_0x2d92e6){var _0xbd1bdb={'fields':[],'order':null};var _0x47a728=_0x2d92e6[_0x2524('0x66')](',');_0xbd1bdb[_0x2524('0x67')]=_[_0x2524('0x3d')](_0x47a728,function(_0x10baaa){if(!_0x10baaa[_0x2524('0x63')]('globalStatus'))return!![];_0xbd1bdb[_0x2524('0x68')]=_[_0x2524('0x69')](_0x10baaa,'-')?_0x2524('0x6a'):'ASC';return![];});return _0xbd1bdb;}function sortAgentsByStatus(_0x5dc8a9,_0x36b51f){var _0x1cf9e5=_0x5dc8a9[_0x2524('0x6b')](function(_0x2b9ce9,_0x304166){if(_0x2b9ce9[_0x2524('0x6c')]===_0x304166[_0x2524('0x6c')]){if(_0x2b9ce9[_0x2524('0x6c')]==='pause'){if(_0x36b51f===_0x2524('0x6a')){return(_0x2b9ce9['pauseType']||'')<(_0x304166[_0x2524('0x65')]||'')||_0x2b9ce9['fullname']['toLowerCase']()>_0x304166[_0x2524('0x6d')][_0x2524('0x5d')]()?0x1:-0x1;}else{return(_0x2b9ce9[_0x2524('0x65')]||'')<(_0x304166['pauseType']||'')||_0x2b9ce9['fullname'][_0x2524('0x5d')]()>_0x304166[_0x2524('0x6d')]['toLowerCase']()?-0x1:0x1;}}else{if(_0x36b51f===_0x2524('0x6a')){return _0x2b9ce9[_0x2524('0x6d')][_0x2524('0x5d')]()<_0x304166[_0x2524('0x6d')][_0x2524('0x5d')]()?0x1:-0x1;}else{return _0x2b9ce9[_0x2524('0x6d')]['toLowerCase']()<_0x304166['fullname'][_0x2524('0x5d')]()?-0x1:0x1;}}}else{if(_0x36b51f==='DESC'){return _0x2b9ce9['globalStatus']<_0x304166[_0x2524('0x6c')]?0x1:-0x1;}else{return _0x2b9ce9[_0x2524('0x6c')]<_0x304166[_0x2524('0x6c')]?-0x1:0x1;}}});return _0x1cf9e5;}function filterAgentAttributes(_0x281518){var _0x1303dc=[_0x2524('0x6e'),_0x2524('0x45'),'lastLoginAt','lastPauseAt',_0x2524('0x65'),'lastPauseAt',_0x2524('0x41'),_0x2524('0x6f'),'chatPause','openchannelPause',_0x2524('0x4c'),_0x2524('0x4e'),_0x2524('0x50'),_0x2524('0x4b'),'voicePause','chatCapacity',_0x2524('0x70'),_0x2524('0x71'),'smsCapacity',_0x2524('0x72'),_0x2524('0x73'),_0x2524('0x74'),_0x2524('0x75'),_0x2524('0x76'),_0x2524('0x77'),_0x2524('0x78'),_0x2524('0x79'),_0x2524('0x57'),'openchannelStatus',_0x2524('0x59'),_0x2524('0x7a'),_0x2524('0x7b'),_0x2524('0x58'),_0x2524('0x55'),_0x2524('0x7c'),_0x2524('0x7d'),_0x2524('0x7e'),_0x2524('0x7f'),_0x2524('0x80'),_0x2524('0x81'),'voiceStatusTime',_0x2524('0x3e'),_0x2524('0x82'),_0x2524('0x83'),_0x2524('0x84'),_0x2524('0x85'),'routealias'];var _0x5f514f=[_0x2524('0x4a'),'openchannelPause','mailPause',_0x2524('0x4e'),_0x2524('0x50'),_0x2524('0x4b'),_0x2524('0x4f'),_0x2524('0x45')];var _0x31d1ee=_(_0x281518)[_0x2524('0x86')](_0x5f514f)['pick'](_0x1303dc)['value']();return _0x31d1ee;}exports['getAgents']=function(_0x26f20e,_0x59658e){var _0x5ea81b={'count':0x0,'rows':[]};var _0x345f44={};var _0x69dff4;var _0x53f317;var _0xcc3cfa;var _0x448363;var _0x7497c5=utils[_0x2524('0x87')]();var _0x56fe91=_0x26f20e['query'][_0x2524('0x88')];var _0x3e930b=_0x26f20e[_0x2524('0x89')]['globalStatusFilter'];var _0x5dcbe0=_0x26f20e['query'][_0x2524('0x8a')];var _0x4db08a=_0x3e930b===_0x2524('0x56')||_0x3e930b===_0x2524('0x5b')?!![]:![];var _0x3b8757=[];var _0x1b5ad9;Promise[_0x2524('0x8b')]()[_0x2524('0x15')](function(){if(_0x26f20e[_0x2524('0x89')][_0x2524('0x8c')])_0x69dff4=validateChannel(_0x26f20e[_0x2524('0x89')][_0x2524('0x8c')]);if(!_0x26f20e[_0x2524('0x89')][_0x2524('0x6b')]||!_0x26f20e['query'][_0x2524('0x6b')]['includes'](_0x2524('0x6c'))){return;}var _0x290eb1=getUpdatedSortOptions(_0x26f20e[_0x2524('0x89')][_0x2524('0x6b')]);_0x26f20e['query'][_0x2524('0x6b')]=_0x290eb1['fields'][_0x2524('0x8d')](',');_0x53f317=_0x290eb1[_0x2524('0x68')];})[_0x2524('0x15')](function(){if(!_0x56fe91){return[];}return getAgentIdsByQueues(_0x56fe91,_0x69dff4);})[_0x2524('0x15')](function(_0x1fd5ea){_0x3b8757=_0x1fd5ea;return getRealtimeAgents();})[_0x2524('0x15')](function(_0x1573f4){_0x448363=_0x1573f4[_0x2524('0x8e')];if((!_0x3e930b||_0x4db08a)&&!_0x53f317){return _0x3b8757;}if(_0x53f317&&!_0x3e930b){return getSortedAgentsIdsByStatus(_0x448363,_0x3b8757,_0x53f317);}else{return getAgentIdsByStatus(_0x448363,_0x3b8757,_0x3e930b);}})[_0x2524('0x15')](function(_0x2f8b9d){_0x3b8757=_0x2f8b9d;var _0x56e255=![];if(_0x3b8757[_0x2524('0x3f')]===0x0){if(_0x56fe91||_0x3e930b){_0x56e255=!![];}if(_0x4db08a){_0x56e255=![];}}if(_0x56e255){return _0x5ea81b;}var _0xb7d89=_[_0x2524('0x38')](db[_0x2524('0x46')]['rawAttributes'],function(_0x5720a9){return{'name':_0x5720a9['fieldName'],'type':_0x5720a9[_0x2524('0x8f')][_0x2524('0x90')]};});_0x26f20e[_0x2524('0x89')][_0x2524('0x91')]=_0x2524('0x92');_0x26f20e[_0x2524('0x89')]['online']=!![];_0x345f44=qs['getOptions'](_0xb7d89,_0x26f20e);_0x345f44['raw']=!![];var _0x418944=[];if(_0x3b8757['length']>0x0){_0x418944[_0x2524('0x26')]({'id':{'$in':_0x3b8757}});if(_0x53f317&&!_0x3e930b){_0x1b5ad9=[db[_0x2524('0x93')][_0x2524('0x94')](_0x2524('0x95')+_0x3b8757+')')];_0x345f44[_0x2524('0x68')]=_0x1b5ad9;}}if(_0x4db08a){_0x7497c5[_0x2524('0x96')](function(_0x31c9d4){var _0x82749e=!![];if(_0x3e930b===_0x2524('0x5b')&&_0x69dff4!==_0x31c9d4){_0x82749e=![];}_0x418944[_0x2524('0x26')]({[_0x31c9d4+_0x2524('0x48')]:_0x82749e});});if(_0x5dcbe0){_0x418944['push']({'pauseType':_0x5dcbe0});}}else if(_0x3e930b){_0x7497c5[_0x2524('0x96')](function(_0x26c3a7){_0x418944[_0x2524('0x26')]({[_0x26c3a7+_0x2524('0x48')]:![]});});}_0x345f44['where']=_['merge'](_0x345f44[_0x2524('0x97')],{'$and':_0x418944});if(_0x26f20e[_0x2524('0x98')][_0x2524('0x91')]===_0x2524('0x98')){var _0x5b6c1d={'params':{'id':_0x26f20e[_0x2524('0x98')][_0x2524('0x99')]},'query':{'section':'Agents','role':'agent','online':!![],'nolimit':_0x26f20e[_0x2524('0x89')][_0x2524('0x9a')],'sort':_0x26f20e[_0x2524('0x89')][_0x2524('0x6b')],'filter':_0x26f20e[_0x2524('0x89')][_0x2524('0x3d')],'raw':!![],'ids':_0x3b8757,'customSorting':_0x1b5ad9}};if(_0x4db08a){_0x5b6c1d[_0x2524('0x89')][_0x2524('0x9b')]=_0x418944;}return db['UserProfile'][_0x2524('0x9c')](_0x5b6c1d);}return db['User'][_0x2524('0x9d')](_0x345f44);})[_0x2524('0x15')](function(_0x42c98d){_0x5ea81b[_0x2524('0xb')]=_0x42c98d[_0x2524('0xb')];_0xcc3cfa=_0x42c98d[_0x2524('0x8e')];return _0xcc3cfa['map'](function(_0x501ba6){var _0x39278f=_[_0x2524('0x3c')](_0x448363,['id',_0x501ba6['id']]);if(_0x39278f){var _0x8f1a10=filterAgentAttributes(_0x39278f);_[_0x2524('0x19')](_0x501ba6,_0x8f1a10);}_0x501ba6[_0x2524('0x6c')]=getAgentStatus(_0x501ba6);if(_0x501ba6['globalStatus'][_0x2524('0x63')]('pause')){_0x7497c5[_0x2524('0x96')](function(_0xc6af7a){if(_0x501ba6[_0xc6af7a+_0x2524('0x48')]){_0x501ba6[_0xc6af7a+_0x2524('0x9e')]=_0x2524('0x56');}});}return _0x501ba6;});})[_0x2524('0x15')](function(_0x470b2a){if(!_0x53f317||_0x1b5ad9){return _0x470b2a;}return sortAgentsByStatus(_0x470b2a,_0x53f317);})[_0x2524('0x15')](function(_0x5aebd4){_0x5ea81b[_0x2524('0x8e')]=_0x5aebd4;return _0x5ea81b;})[_0x2524('0x15')](respondWithFilteredResult(_0x59658e,_0x345f44))[_0x2524('0x1a')](handleError(_0x59658e,null));};exports[_0x2524('0x9f')]=function(_0x130dba,_0x414fc7){var _0x2202b8={'count':0x0,'rows':[]},_0x1b61d7={},_0x39f32b,_0x3a8dd0,_0x5cab17,_0x554395,_0xefcd3;Promise['resolve']()[_0x2524('0x15')](function(){if(_0x130dba[_0x2524('0x89')][_0x2524('0x8c')])_0x39f32b=validateChannel(_0x130dba[_0x2524('0x89')][_0x2524('0x8c')]);var _0x5b27bf=_[_0x2524('0x1c')](_0x39f32b)+_0x2524('0x47');var _0x982eac=_[_0x2524('0x38')](db[_0x5b27bf]['rawAttributes'],function(_0x475f06){return{'name':_0x475f06['fieldName'],'type':_0x475f06[_0x2524('0x8f')][_0x2524('0x90')]};});_0x1b61d7=qs['getOptions'](_0x982eac,_0x130dba);if(_0x130dba['user']['role']===_0x2524('0x98')){var _0x28115={'params':{'id':_0x130dba[_0x2524('0x98')]['userProfileId']},'query':{'section':_0x39f32b===_0x2524('0x1b')&&_0x130dba[_0x2524('0x89')][_0x2524('0x8f')]===_0x2524('0x25')?_0x2524('0xa0'):_['startCase'](_0x39f32b)+_0x2524('0xa1'),'type':_0x130dba[_0x2524('0x89')]['type'],'nolimit':!![],'sort':_0x2524('0x11'),'filter':_0x130dba[_0x2524('0x89')]['filter']}};return db[_0x2524('0xa2')][_0x2524('0x9c')](_0x28115);}return db[_0x5b27bf][_0x2524('0x9d')](_0x1b61d7);})['then'](function(_0xa23489){_0x2202b8[_0x2524('0xb')]=_0xa23489[_0x2524('0xb')];_0x3a8dd0=_0xa23489[_0x2524('0x8e')];return getRealtimeQueues(_0x130dba,_0x39f32b);})[_0x2524('0x15')](function(_0x367216){_0x554395=_0x367216[_0x2524('0x8e')];return getRealtimeAgents();})[_0x2524('0x15')](function(_0xc2c48c){_0x5cab17=_0xc2c48c[_0x2524('0x8e')];if(_0x39f32b!=_0x2524('0x1b'))return;return getRealtimeVoiceQueueChannels();})[_0x2524('0x15')](function(_0x1d6dae){_0xefcd3=_0x1d6dae?_0x1d6dae['rows']:[];return initializeQueues(_0x3a8dd0,_0x554395,_0x39f32b,_0x130dba['query'][_0x2524('0x8f')]);})['then'](function(_0xc3e0e8){var _0x4b7aad=_0xc3e0e8[_0x2524('0x38')](function(_0xc56b05){if(_0x39f32b===_0x2524('0x1b'))return getVoiceQueueAgents(_0xc56b05,_0x3a8dd0,_0x5cab17,_0xefcd3);else return getQueueAgents(_0xc56b05,_0x5cab17,_0x39f32b);});return Promise['all'](_0x4b7aad);})['then'](function(_0x8257bc){_0x2202b8[_0x2524('0x8e')]=_0x8257bc;return _0x2202b8;})[_0x2524('0x15')](respondWithFilteredResult(_0x414fc7,_0x1b61d7))[_0x2524('0x1a')](handleError(_0x414fc7,null));};
\ No newline at end of file
index 58a5378..5205f16 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(_0x2109cd,_0xaa6fee){var _0x5b8a78=function(_0x36d8e4){while(--_0x36d8e4){_0x2109cd['push'](_0x2109cd['shift']());}};_0x5b8a78(++_0xaa6fee);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x38ac0a,_0x1e7035){var _0x34657d=function(_0x4cc847){while(--_0x4cc847){_0x38ac0a['push'](_0x38ac0a['shift']());}};_0x34657d(++_0x1e7035);}(_0xe706,0xa3));var _0x6e70=function(_0x337800,_0x1e986e){_0x337800=_0x337800-0x0;var _0x2caa1d=_0xe706[_0x337800];return _0x2caa1d;};'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 6278dae..468a27b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bd7=['STRING','DATE','exports','INTEGER'];(function(_0x285326,_0x49318b){var _0x2c6ccf=function(_0x9d6d51){while(--_0x9d6d51){_0x285326['push'](_0x285326['shift']());}};_0x2c6ccf(++_0x49318b);}(_0x5bd7,0x12a));var _0x75bd=function(_0x34ed48,_0x2cc995){_0x34ed48=_0x34ed48-0x0;var _0x37da5c=_0x5bd7[_0x34ed48];return _0x37da5c;};'use strict';var Sequelize=require('sequelize');module[_0x75bd('0x0')]={'state':{'type':Sequelize[_0x75bd('0x1')](0x2)},'statedesc':{'type':Sequelize[_0x75bd('0x2')]},'scheduledat':{'type':Sequelize['DATE']},'uniqueid':{'type':Sequelize[_0x75bd('0x2')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x75bd('0x3')]},'ringtime':{'type':Sequelize[_0x75bd('0x1')],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x75bd('0x2')]},'membername':{'type':Sequelize[_0x75bd('0x2')]}};
\ No newline at end of file
+var _0xc15b=['sequelize','INTEGER','STRING','DATE'];(function(_0x5309c1,_0x19cc9b){var _0x5a08f7=function(_0x571172){while(--_0x571172){_0x5309c1['push'](_0x5309c1['shift']());}};_0x5a08f7(++_0x19cc9b);}(_0xc15b,0xe4));var _0xbc15=function(_0x49d41c,_0x2bdc35){_0x49d41c=_0x49d41c-0x0;var _0xb64c5f=_0xc15b[_0x49d41c];return _0xb64c5f;};'use strict';var Sequelize=require(_0xbc15('0x0'));module['exports']={'state':{'type':Sequelize[_0xbc15('0x1')](0x2)},'statedesc':{'type':Sequelize[_0xbc15('0x2')]},'scheduledat':{'type':Sequelize[_0xbc15('0x3')]},'uniqueid':{'type':Sequelize[_0xbc15('0x2')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0xbc15('0x1')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0xbc15('0x2')]},'campaigntype':{'type':Sequelize[_0xbc15('0x2')]},'membername':{'type':Sequelize['STRING']}};
\ No newline at end of file
index df76aeb..4cd19ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x858e=['../../config/logger','moment','bluebird','request-promise','path','rimraf','./reportAgentPreview.attributes','exports','define','ReportAgentPreview','lodash','util'];(function(_0x176259,_0x30e46f){var _0x48dc40=function(_0x3aa524){while(--_0x3aa524){_0x176259['push'](_0x176259['shift']());}};_0x48dc40(++_0x30e46f);}(_0x858e,0x9a));var _0xe858=function(_0x5b5199,_0x58a8e5){_0x5b5199=_0x5b5199-0x0;var _0x2f5736=_0x858e[_0x5b5199];return _0x2f5736;};'use strict';var _=require(_0xe858('0x0'));var util=require(_0xe858('0x1'));var logger=require(_0xe858('0x2'))('api');var moment=require(_0xe858('0x3'));var BPromise=require(_0xe858('0x4'));var rp=require(_0xe858('0x5'));var fs=require('fs');var path=require(_0xe858('0x6'));var rimraf=require(_0xe858('0x7'));var config=require('../../config/environment');var attributes=require(_0xe858('0x8'));module[_0xe858('0x9')]=function(_0x1388db,_0x5c4f74){return _0x1388db[_0xe858('0xa')](_0xe858('0xb'),attributes,{'tableName':'report_agent_preview','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x712a=['api','moment','bluebird','rimraf','../../config/environment','exports','define','ReportAgentPreview','report_agent_preview','../../config/logger'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x712a,0x103));var _0xa712=function(_0x1ff575,_0xdba21f){_0x1ff575=_0x1ff575-0x0;var _0x48fc9e=_0x712a[_0x1ff575];return _0x48fc9e;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xa712('0x0'))(_0xa712('0x1'));var moment=require(_0xa712('0x2'));var BPromise=require(_0xa712('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xa712('0x4'));var config=require(_0xa712('0x5'));var attributes=require('./reportAgentPreview.attributes');module[_0xa712('0x6')]=function(_0x439899,_0x4c1025){return _0x439899[_0xa712('0x7')](_0xa712('0x8'),attributes,{'tableName':_0xa712('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 31c8017..ec350e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd525=['info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateReportAgentPreview','ReportAgentPreview','create','body','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x500cce,_0x3e9235){var _0x3a16b2=function(_0x9b48f5){while(--_0x9b48f5){_0x500cce['push'](_0x500cce['shift']());}};_0x3a16b2(++_0x3e9235);}(_0xd525,0x1b2));var _0x5d52=function(_0x43cba5,_0x4a2f83){_0x43cba5=_0x43cba5-0x0;var _0x359d1a=_0xd525[_0x43cba5];return _0x359d1a;};'use strict';var _=require(_0x5d52('0x0'));var util=require(_0x5d52('0x1'));var moment=require(_0x5d52('0x2'));var BPromise=require(_0x5d52('0x3'));var rs=require(_0x5d52('0x4'));var fs=require('fs');var Redis=require(_0x5d52('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x5d52('0x6'));var logger=require(_0x5d52('0x7'))('rpc');var config=require(_0x5d52('0x8'));var jayson=require(_0x5d52('0x9'));var client=jayson[_0x5d52('0xa')][_0x5d52('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3b85af,_0x2e2a1d,_0x307872){return new BPromise(function(_0x29815d,_0x4cb690){return client[_0x5d52('0xc')](_0x3b85af,_0x307872)[_0x5d52('0xd')](function(_0xda09ad){logger[_0x5d52('0xe')](_0x5d52('0xf'),_0x2e2a1d,_0x5d52('0x10'));logger[_0x5d52('0x11')](_0x5d52('0x12'),_0x2e2a1d,_0x5d52('0x10'),JSON['stringify'](_0xda09ad));if(_0xda09ad[_0x5d52('0x13')]){if(_0xda09ad[_0x5d52('0x13')][_0x5d52('0x14')]===0x1f4){logger[_0x5d52('0x13')](_0x5d52('0xf'),_0x2e2a1d,_0xda09ad['error'][_0x5d52('0x15')]);return _0x4cb690(_0xda09ad[_0x5d52('0x13')][_0x5d52('0x15')]);}logger[_0x5d52('0x13')](_0x5d52('0xf'),_0x2e2a1d,_0xda09ad[_0x5d52('0x13')][_0x5d52('0x15')]);return _0x29815d(_0xda09ad[_0x5d52('0x13')][_0x5d52('0x15')]);}else{logger['info']('ReportAgentPreview,\x20%s,\x20%s',_0x2e2a1d,'request\x20sent');_0x29815d(_0xda09ad[_0x5d52('0x16')][_0x5d52('0x15')]);}})[_0x5d52('0x17')](function(_0x152eac){logger[_0x5d52('0x13')](_0x5d52('0xf'),_0x2e2a1d,_0x152eac);_0x4cb690(_0x152eac);});});}exports[_0x5d52('0x18')]=function(_0x144c4e){var _0x3c0e69=this;return new Promise(function(_0x265962,_0x318729){return db[_0x5d52('0x19')][_0x5d52('0x1a')](_0x144c4e[_0x5d52('0x1b')],{'raw':_0x144c4e['options']?_0x144c4e['options']['raw']===undefined?!![]:![]:!![]})[_0x5d52('0xd')](function(_0x367e61){logger[_0x5d52('0xe')](_0x5d52('0x18'),_0x144c4e);logger[_0x5d52('0x11')]('CreateReportAgentPreview',_0x144c4e,JSON['stringify'](_0x367e61));_0x265962(_0x367e61);})['catch'](function(_0x76a5af){logger[_0x5d52('0x13')](_0x5d52('0x18'),_0x76a5af['message'],_0x144c4e);_0x318729(_0x3c0e69[_0x5d52('0x13')](0x1f4,_0x76a5af[_0x5d52('0x15')]));});});};
\ No newline at end of file
+var _0xdb8d=['request','then','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','ReportAgentPreview','create','body','options','raw','info','CreateReportAgentPreview','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x13ae4d,_0x172ef1){var _0x4c5030=function(_0x1afd98){while(--_0x1afd98){_0x13ae4d['push'](_0x13ae4d['shift']());}};_0x4c5030(++_0x172ef1);}(_0xdb8d,0x128));var _0xddb8=function(_0x43499a,_0x4da4b9){_0x43499a=_0x43499a-0x0;var _0x2ef1f6=_0xdb8d[_0x43499a];return _0x2ef1f6;};'use strict';var _=require(_0xddb8('0x0'));var util=require(_0xddb8('0x1'));var moment=require(_0xddb8('0x2'));var BPromise=require(_0xddb8('0x3'));var rs=require(_0xddb8('0x4'));var fs=require('fs');var Redis=require(_0xddb8('0x5'));var db=require(_0xddb8('0x6'))['db'];var utils=require(_0xddb8('0x7'));var logger=require(_0xddb8('0x8'))(_0xddb8('0x9'));var config=require(_0xddb8('0xa'));var jayson=require(_0xddb8('0xb'));var client=jayson[_0xddb8('0xc')][_0xddb8('0xd')]({'port':0x232a});function respondWithRpcPromise(_0xf1184,_0x48eba2,_0x11fdc4){return new BPromise(function(_0x5d67ed,_0x32166a){return client[_0xddb8('0xe')](_0xf1184,_0x11fdc4)[_0xddb8('0xf')](function(_0x430b59){logger['info'](_0xddb8('0x10'),_0x48eba2,_0xddb8('0x11'));logger['debug']('ReportAgentPreview,\x20%s,\x20%s,\x20%s',_0x48eba2,_0xddb8('0x11'),JSON[_0xddb8('0x12')](_0x430b59));if(_0x430b59[_0xddb8('0x13')]){if(_0x430b59[_0xddb8('0x13')][_0xddb8('0x14')]===0x1f4){logger[_0xddb8('0x13')](_0xddb8('0x10'),_0x48eba2,_0x430b59[_0xddb8('0x13')]['message']);return _0x32166a(_0x430b59['error']['message']);}logger[_0xddb8('0x13')]('ReportAgentPreview,\x20%s,\x20%s',_0x48eba2,_0x430b59[_0xddb8('0x13')][_0xddb8('0x15')]);return _0x5d67ed(_0x430b59[_0xddb8('0x13')][_0xddb8('0x15')]);}else{logger['info']('ReportAgentPreview,\x20%s,\x20%s',_0x48eba2,'request\x20sent');_0x5d67ed(_0x430b59[_0xddb8('0x16')][_0xddb8('0x15')]);}})['catch'](function(_0x4ff2f3){logger['error'](_0xddb8('0x10'),_0x48eba2,_0x4ff2f3);_0x32166a(_0x4ff2f3);});});}exports['CreateReportAgentPreview']=function(_0x61d4a7){var _0x56ab7b=this;return new Promise(function(_0x44b8fa,_0x3642d4){return db[_0xddb8('0x17')][_0xddb8('0x18')](_0x61d4a7[_0xddb8('0x19')],{'raw':_0x61d4a7['options']?_0x61d4a7[_0xddb8('0x1a')][_0xddb8('0x1b')]===undefined?!![]:![]:!![]})[_0xddb8('0xf')](function(_0x15423f){logger[_0xddb8('0x1c')](_0xddb8('0x1d'),_0x61d4a7);logger[_0xddb8('0x1e')]('CreateReportAgentPreview',_0x61d4a7,JSON[_0xddb8('0x12')](_0x15423f));_0x44b8fa(_0x15423f);})['catch'](function(_0x35681b){logger[_0xddb8('0x13')](_0xddb8('0x1d'),_0x35681b[_0xddb8('0x15')],_0x61d4a7);_0x3642d4(_0x56ab7b[_0xddb8('0x13')](0x1f4,_0x35681b[_0xddb8('0x15')]));});});};
\ No newline at end of file
index a076b98..cb985ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08a7=['express','Router','../../components/auth/service','./rpc.controller','get','/voice/channels','isAuthenticated','voiceChannels','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','/chat/queues','chatQueues','mailQueues','/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','smsQueues','/whatsapp/queues','/fax/queues','faxQueues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','/outbound/channels','outboundChannels','/agents/:id/capacity','agentCapacity','/telephones','/trunks','trunks','/campaigns','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','post','/mail/queues/:id/notify','queueNotify','mail','showMailQueues','/chat/queues/:id/notify','chat','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','fax','/fax/queues/:id','showFaxQueues','openchannel','/sms/queues/:id/notify','sms','/sms/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','exports','multer','util'];(function(_0x31d446,_0x5b9ac1){var _0x21731c=function(_0x1cb0fa){while(--_0x1cb0fa){_0x31d446['push'](_0x31d446['shift']());}};_0x21731c(++_0x5b9ac1);}(_0x08a7,0xee));var _0x708a=function(_0x456c9d,_0xa6b604){_0x456c9d=_0x456c9d-0x0;var _0x38d5c=_0x08a7[_0x456c9d];return _0x38d5c;};'use strict';var multer=require(_0x708a('0x0'));var util=require(_0x708a('0x1'));var path=require('path');var express=require(_0x708a('0x2'));var router=express[_0x708a('0x3')]();var auth=require(_0x708a('0x4'));var controller=require(_0x708a('0x5'));router[_0x708a('0x6')](_0x708a('0x7'),auth[_0x708a('0x8')](),controller[_0x708a('0x9')]);router[_0x708a('0x6')]('/voice/channels/:uniqueid/mixmonitor',auth[_0x708a('0x8')](),controller[_0x708a('0xa')]);router[_0x708a('0x6')](_0x708a('0xb'),auth['isAuthenticated'](),controller[_0x708a('0xc')]);router[_0x708a('0x6')]('/voice/queues',auth[_0x708a('0x8')](),controller['voiceQueues']);router[_0x708a('0x6')](_0x708a('0xd'),auth[_0x708a('0x8')](),controller[_0x708a('0xe')]);router['get']('/mail/queues',auth[_0x708a('0x8')](),controller[_0x708a('0xf')]);router[_0x708a('0x6')](_0x708a('0x10'),auth[_0x708a('0x8')](),controller[_0x708a('0x11')]);router[_0x708a('0x6')](_0x708a('0x12'),auth[_0x708a('0x8')](),controller[_0x708a('0x13')]);router['get']('/sms/queues',auth[_0x708a('0x8')](),controller[_0x708a('0x14')]);router[_0x708a('0x6')](_0x708a('0x15'),auth[_0x708a('0x8')](),controller['whatsappQueues']);router['get'](_0x708a('0x16'),auth[_0x708a('0x8')](),controller[_0x708a('0x17')]);router[_0x708a('0x6')](_0x708a('0x18'),auth[_0x708a('0x8')](),controller[_0x708a('0x19')]);router[_0x708a('0x6')](_0x708a('0x1a'),auth['isAuthenticated'](),controller[_0x708a('0x1b')]);router[_0x708a('0x6')](_0x708a('0x1c'),auth[_0x708a('0x8')](),controller[_0x708a('0x1d')]);router[_0x708a('0x6')](_0x708a('0x1e'),auth['isAuthenticated'](),controller[_0x708a('0x1f')]);router[_0x708a('0x6')](_0x708a('0x20'),auth['isAuthenticated'](),controller['voiceQueuesChannelRedirect']);router[_0x708a('0x6')](_0x708a('0x21'),auth[_0x708a('0x8')](),controller[_0x708a('0x22')]);router[_0x708a('0x23')](_0x708a('0x21'),auth[_0x708a('0x8')](),controller[_0x708a('0x24')]);router[_0x708a('0x6')]('/outbound',auth[_0x708a('0x8')](),controller['outbound']);router[_0x708a('0x6')](_0x708a('0x25'),auth[_0x708a('0x8')](),controller[_0x708a('0x26')]);router[_0x708a('0x6')]('/agents',auth['isAuthenticated'](),controller['agents']);router[_0x708a('0x23')](_0x708a('0x27'),auth[_0x708a('0x8')](),controller[_0x708a('0x28')]);router['get'](_0x708a('0x29'),auth['isAuthenticated'](),controller['telephones']);router[_0x708a('0x6')](_0x708a('0x2a'),auth[_0x708a('0x8')](),controller[_0x708a('0x2b')]);router['get'](_0x708a('0x2c'),auth[_0x708a('0x8')](),controller[_0x708a('0x2d')]);router[_0x708a('0x6')](_0x708a('0x2e'),auth['isAuthenticated'](),controller[_0x708a('0x2f')]);router[_0x708a('0x6')](_0x708a('0x30'),auth['isAuthenticated'](),controller[_0x708a('0x31')]);router[_0x708a('0x6')](_0x708a('0x32'),auth[_0x708a('0x8')](),controller['mailQueuesWaitingInteractions']);router[_0x708a('0x6')](_0x708a('0x33'),auth[_0x708a('0x8')](),controller[_0x708a('0x34')]);router[_0x708a('0x6')](_0x708a('0x35'),auth[_0x708a('0x8')](),controller[_0x708a('0x36')]);router[_0x708a('0x6')](_0x708a('0x37'),auth[_0x708a('0x8')](),controller['smsQueuesWaitingInteractions']);router[_0x708a('0x6')](_0x708a('0x38'),auth['isAuthenticated'](),controller[_0x708a('0x39')]);router[_0x708a('0x6')](_0x708a('0x3a'),auth[_0x708a('0x8')](),controller['faxQueuesWaitingInteractions']);router[_0x708a('0x3b')](_0x708a('0x3c'),auth[_0x708a('0x8')](),controller[_0x708a('0x3d')](_0x708a('0x3e')));router[_0x708a('0x6')]('/mail/queues/:id',auth[_0x708a('0x8')](),controller[_0x708a('0x3f')]);router[_0x708a('0x3b')](_0x708a('0x40'),auth[_0x708a('0x8')](),controller[_0x708a('0x3d')](_0x708a('0x41')));router['get'](_0x708a('0x42'),auth[_0x708a('0x8')](),controller[_0x708a('0x43')]);router[_0x708a('0x3b')](_0x708a('0x44'),auth[_0x708a('0x8')](),controller['queueNotify'](_0x708a('0x45')));router[_0x708a('0x6')](_0x708a('0x46'),auth[_0x708a('0x8')](),controller[_0x708a('0x47')]);router[_0x708a('0x3b')]('/openchannel/queues/:id/notify',auth[_0x708a('0x8')](),controller[_0x708a('0x3d')](_0x708a('0x48')));router[_0x708a('0x6')]('/openchannel/queues/:id',auth['isAuthenticated'](),controller['showOpenchannelQueues']);router['post'](_0x708a('0x49'),auth['isAuthenticated'](),controller[_0x708a('0x3d')](_0x708a('0x4a')));router[_0x708a('0x3b')]('/whatsapp/queues/:id/notify',auth[_0x708a('0x8')](),controller[_0x708a('0x3d')]('whatsapp'));router['get'](_0x708a('0x4b'),auth[_0x708a('0x8')](),controller['showSmsQueues']);router['get']('/whatsapp/queues/:id',auth[_0x708a('0x8')](),controller[_0x708a('0x4c')]);router['post'](_0x708a('0x4d'),auth[_0x708a('0x8')](),controller[_0x708a('0x4e')]);module[_0x708a('0x4f')]=router;
\ No newline at end of file
+var _0x7e26=['mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','fax','showFaxQueues','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','/whatsapp/queues/:id','/agents/:id/notify','agentNotify','multer','path','express','Router','../../components/auth/service','./rpc.controller','get','/voice/channels','isAuthenticated','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','mailQueues','/openchannel/queues','openchannelQueues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','faxQueues','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues','put','/outbound','outbound','outboundChannels','agents','agentCapacity','/telephones','telephones','/trunks','campaigns','/fax/accounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','queueNotify'];(function(_0x38bf76,_0x313689){var _0x141848=function(_0x2ed9d6){while(--_0x2ed9d6){_0x38bf76['push'](_0x38bf76['shift']());}};_0x141848(++_0x313689);}(_0x7e26,0x151));var _0x67e2=function(_0x526f4a,_0x5513de){_0x526f4a=_0x526f4a-0x0;var _0x55b34e=_0x7e26[_0x526f4a];return _0x55b34e;};'use strict';var multer=require(_0x67e2('0x0'));var util=require('util');var path=require(_0x67e2('0x1'));var express=require(_0x67e2('0x2'));var router=express[_0x67e2('0x3')]();var auth=require(_0x67e2('0x4'));var controller=require(_0x67e2('0x5'));router[_0x67e2('0x6')](_0x67e2('0x7'),auth[_0x67e2('0x8')](),controller['voiceChannels']);router[_0x67e2('0x6')]('/voice/channels/:uniqueid/mixmonitor',auth[_0x67e2('0x8')](),controller[_0x67e2('0x9')]);router[_0x67e2('0x6')](_0x67e2('0xa'),auth[_0x67e2('0x8')](),controller[_0x67e2('0xb')]);router['get'](_0x67e2('0xc'),auth[_0x67e2('0x8')](),controller[_0x67e2('0xd')]);router['get']('/chat/queues',auth['isAuthenticated'](),controller['chatQueues']);router[_0x67e2('0x6')]('/mail/queues',auth[_0x67e2('0x8')](),controller[_0x67e2('0xe')]);router[_0x67e2('0x6')]('/mail/accounts',auth[_0x67e2('0x8')](),controller['mailAccounts']);router[_0x67e2('0x6')](_0x67e2('0xf'),auth[_0x67e2('0x8')](),controller[_0x67e2('0x10')]);router[_0x67e2('0x6')]('/sms/queues',auth[_0x67e2('0x8')](),controller[_0x67e2('0x11')]);router[_0x67e2('0x6')](_0x67e2('0x12'),auth[_0x67e2('0x8')](),controller[_0x67e2('0x13')]);router['get'](_0x67e2('0x14'),auth[_0x67e2('0x8')](),controller[_0x67e2('0x15')]);router[_0x67e2('0x6')]('/voice/queues/preview/:id',auth[_0x67e2('0x8')](),controller[_0x67e2('0x16')]);router[_0x67e2('0x6')](_0x67e2('0x17'),auth[_0x67e2('0x8')](),controller[_0x67e2('0x18')]);router[_0x67e2('0x6')](_0x67e2('0x19'),auth[_0x67e2('0x8')](),controller[_0x67e2('0x1a')]);router['get'](_0x67e2('0x1b'),auth[_0x67e2('0x8')](),controller[_0x67e2('0x1c')]);router[_0x67e2('0x6')](_0x67e2('0x1d'),auth[_0x67e2('0x8')](),controller[_0x67e2('0x1e')]);router[_0x67e2('0x6')](_0x67e2('0x1f'),auth['isAuthenticated'](),controller[_0x67e2('0x20')]);router[_0x67e2('0x21')]('/voice/queues/:id',auth['isAuthenticated'](),controller['updateVoiceQueue']);router[_0x67e2('0x6')](_0x67e2('0x22'),auth[_0x67e2('0x8')](),controller[_0x67e2('0x23')]);router[_0x67e2('0x6')]('/outbound/channels',auth[_0x67e2('0x8')](),controller[_0x67e2('0x24')]);router[_0x67e2('0x6')]('/agents',auth[_0x67e2('0x8')](),controller[_0x67e2('0x25')]);router['put']('/agents/:id/capacity',auth[_0x67e2('0x8')](),controller[_0x67e2('0x26')]);router[_0x67e2('0x6')](_0x67e2('0x27'),auth['isAuthenticated'](),controller[_0x67e2('0x28')]);router[_0x67e2('0x6')](_0x67e2('0x29'),auth[_0x67e2('0x8')](),controller['trunks']);router[_0x67e2('0x6')]('/campaigns',auth['isAuthenticated'](),controller[_0x67e2('0x2a')]);router[_0x67e2('0x6')](_0x67e2('0x2b'),auth[_0x67e2('0x8')](),controller['faxAccounts']);router['get'](_0x67e2('0x2c'),auth[_0x67e2('0x8')](),controller[_0x67e2('0x2d')]);router[_0x67e2('0x6')]('/mail/queues/waitinginteractions',auth[_0x67e2('0x8')](),controller[_0x67e2('0x2e')]);router['get'](_0x67e2('0x2f'),auth[_0x67e2('0x8')](),controller[_0x67e2('0x30')]);router[_0x67e2('0x6')](_0x67e2('0x31'),auth[_0x67e2('0x8')](),controller['openchannelQueuesIdWaitingInteractions']);router[_0x67e2('0x6')](_0x67e2('0x32'),auth['isAuthenticated'](),controller[_0x67e2('0x33')]);router['get'](_0x67e2('0x34'),auth['isAuthenticated'](),controller[_0x67e2('0x35')]);router[_0x67e2('0x6')](_0x67e2('0x36'),auth[_0x67e2('0x8')](),controller[_0x67e2('0x37')]);router[_0x67e2('0x38')]('/mail/queues/:id/notify',auth[_0x67e2('0x8')](),controller[_0x67e2('0x39')](_0x67e2('0x3a')));router[_0x67e2('0x6')](_0x67e2('0x3b'),auth[_0x67e2('0x8')](),controller[_0x67e2('0x3c')]);router[_0x67e2('0x38')](_0x67e2('0x3d'),auth[_0x67e2('0x8')](),controller['queueNotify'](_0x67e2('0x3e')));router[_0x67e2('0x6')](_0x67e2('0x3f'),auth[_0x67e2('0x8')](),controller[_0x67e2('0x40')]);router[_0x67e2('0x38')](_0x67e2('0x41'),auth[_0x67e2('0x8')](),controller[_0x67e2('0x39')](_0x67e2('0x42')));router[_0x67e2('0x6')]('/fax/queues/:id',auth[_0x67e2('0x8')](),controller[_0x67e2('0x43')]);router[_0x67e2('0x38')](_0x67e2('0x44'),auth['isAuthenticated'](),controller[_0x67e2('0x39')](_0x67e2('0x45')));router['get'](_0x67e2('0x46'),auth[_0x67e2('0x8')](),controller[_0x67e2('0x47')]);router['post']('/sms/queues/:id/notify',auth[_0x67e2('0x8')](),controller[_0x67e2('0x39')](_0x67e2('0x48')));router[_0x67e2('0x38')](_0x67e2('0x49'),auth['isAuthenticated'](),controller[_0x67e2('0x39')](_0x67e2('0x4a')));router['get'](_0x67e2('0x4b'),auth['isAuthenticated'](),controller['showSmsQueues']);router[_0x67e2('0x6')](_0x67e2('0x4c'),auth['isAuthenticated'](),controller['showWhatsappQueues']);router[_0x67e2('0x38')](_0x67e2('0x4d'),auth[_0x67e2('0x8')](),controller[_0x67e2('0x4e')]);module['exports']=router;
\ No newline at end of file
index 937407b..a82c0f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cb9=['query','params','voiceChannelStopMixMonitor','voiceQueues','VoiceQueues','updateVoiceQueue','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','VoiceQueuesChannel','voiceQueuesChannelRedirect','outboundChannels','OutboundChannels','agents','Agents','agentCapacity','body','interaction','user','MemberReport','INTERACTION','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','length','findOrCreate','agent','AgentCapacity','telephones','trunks','Trunks','campaigns','Campaigns','ChatQueues','showChatQueues','MailQueues','mailAccounts','MailAccounts','showOpenchannelQueues','smsQueues','SmsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','faxQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','type','map','value','filter','indexOf','queue_id','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','findOne','\x20Queue\x20not\x20found','messageId','Interaction','Account','\x20Message\x20not\x20found','update','queue','MessageId','InteractionId','From','QueueId','TransferReport','create','Start','queueTransferTimeout','*,*,*,*','agentNotify','Channel\x20field\x20is\x20mandatory','channel','User','Agent\x20not\x20found','Message','bluebird','lodash','util','../../mysqldb','../../config/logger','jayson/promise','client','http','then','error','code','message','result','status','json','sendStatus','name','send','isNil','rows','find','voiceChannels','VoiceChannels','catch','voiceChannelMixMonitor','merge'];(function(_0x3b18e6,_0x35e310){var _0xaf05b7=function(_0x5f0cc8){while(--_0x5f0cc8){_0x3b18e6['push'](_0x3b18e6['shift']());}};_0xaf05b7(++_0x35e310);}(_0x1cb9,0x14e));var _0x91cb=function(_0x53c285,_0x30698d){_0x53c285=_0x53c285-0x0;var _0x11c2cd=_0x1cb9[_0x53c285];return _0x11c2cd;};'use strict';var BPromise=require(_0x91cb('0x0'));var moment=require('moment');var _=require(_0x91cb('0x1'));var util=require(_0x91cb('0x2'));var db=require(_0x91cb('0x3'))['db'];var logger=require(_0x91cb('0x4'))('api');var jayson=require(_0x91cb('0x5'));var amiClient=jayson[_0x91cb('0x6')]['http']({'port':0x232a});var mailClient=jayson[_0x91cb('0x6')][_0x91cb('0x7')]({'port':0x232b});var routingClient=jayson[_0x91cb('0x6')][_0x91cb('0x7')]({'port':0x232c});function respondWithRpcPromise(_0x3b9d98,_0x8f8a3b,_0x4c1f56){return new BPromise(function(_0x15c517,_0x5bda2f){var _0x2fdfce=_0x4c1f56?_0x4c1f56:amiClient;return _0x2fdfce['request'](_0x3b9d98,_0x8f8a3b)[_0x91cb('0x8')](function(_0x317df0){if(_0x317df0[_0x91cb('0x9')]){if(_0x317df0[_0x91cb('0x9')][_0x91cb('0xa')]===0x1f4){return _0x5bda2f(_0x317df0[_0x91cb('0x9')][_0x91cb('0xb')]);}return _0x15c517(_0x317df0[_0x91cb('0x9')][_0x91cb('0xb')]);}else{_0x15c517(_0x317df0[_0x91cb('0xc')]);}})['catch'](function(_0x3c1f56){_0x5bda2f(_0x3c1f56);});});}function respondWithResult(_0x366f09,_0x4ba2f2){_0x4ba2f2=_0x4ba2f2||0xc8;return function(_0x20e6e0){if(_0x20e6e0){return _0x366f09[_0x91cb('0xd')](_0x4ba2f2)[_0x91cb('0xe')](_0x20e6e0);}return _0x366f09[_0x91cb('0xf')](0x194);};}function handleError(_0x4a7d45,_0x4cc6ef){_0x4cc6ef=_0x4cc6ef||0x1f4;return function(_0x4aae25){logger[_0x91cb('0x9')](_0x4aae25['stack']);if(_0x4aae25['name']){delete _0x4aae25[_0x91cb('0x10')];}_0x4a7d45[_0x91cb('0xd')](_0x4cc6ef)[_0x91cb('0x11')](_0x4aae25);};}function findById(_0x5ea796){return function(_0x238f11){if(!_[_0x91cb('0x12')](_0x5ea796)&&!_['isNil'](_0x238f11)&&!_[_0x91cb('0x12')](_0x238f11[_0x91cb('0x13')])){return _[_0x91cb('0x14')](_0x238f11[_0x91cb('0x13')],function(_0x5cc1c3){return _0x5cc1c3['id']==_0x5ea796;});}return null;};}exports[_0x91cb('0x15')]=function(_0x7dcf60,_0x4ca8e8){return respondWithRpcPromise(_0x91cb('0x16'),_0x7dcf60['query'])['then'](respondWithResult(_0x4ca8e8,null))[_0x91cb('0x17')](handleError(_0x4ca8e8,null));};exports[_0x91cb('0x18')]=function(_0x56e409,_0x51a1d5){return respondWithRpcPromise('VoiceChannelMixMonitor',_[_0x91cb('0x19')](_0x56e409[_0x91cb('0x1a')],_0x56e409[_0x91cb('0x1b')]))[_0x91cb('0x8')](respondWithResult(_0x51a1d5,null))['catch'](handleError(_0x51a1d5,null));};exports[_0x91cb('0x1c')]=function(_0x43881c,_0x1fa837){return respondWithRpcPromise('VoiceChannelStopMixMonitor',_[_0x91cb('0x19')](_0x43881c[_0x91cb('0x1a')],_0x43881c[_0x91cb('0x1b')]))[_0x91cb('0x8')](respondWithResult(_0x1fa837,null))[_0x91cb('0x17')](handleError(_0x1fa837,null));};exports[_0x91cb('0x1d')]=function(_0x414e60,_0x423c4f){return respondWithRpcPromise(_0x91cb('0x1e'),_0x414e60['query'])['then'](respondWithResult(_0x423c4f,null))[_0x91cb('0x17')](handleError(_0x423c4f,null));};exports['showVoiceQueues']=function(_0x1c67d2,_0x34d372){return respondWithRpcPromise(_0x91cb('0x1e'),_0x1c67d2['query'])[_0x91cb('0x8')](findById(_0x1c67d2['params']['id']))[_0x91cb('0x8')](respondWithResult(_0x34d372,null))[_0x91cb('0x17')](handleError(_0x34d372,null));};exports[_0x91cb('0x1f')]=function(_0x2fb473,_0x468908){return respondWithRpcPromise('UpdateVoiceQueue',_[_0x91cb('0x19')](_0x2fb473['body'],_0x2fb473[_0x91cb('0x1b')]))[_0x91cb('0x8')](respondWithResult(_0x468908,null))[_0x91cb('0x17')](handleError(_0x468908,null));};exports['voiceQueuesPreview']=function(_0x775c25,_0x146e1f){return respondWithRpcPromise(_0x91cb('0x20'),_[_0x91cb('0x19')](_0x775c25[_0x91cb('0x1a')],_0x775c25[_0x91cb('0x1b')]))[_0x91cb('0x8')](respondWithResult(_0x146e1f,null))[_0x91cb('0x17')](handleError(_0x146e1f,null));};exports[_0x91cb('0x21')]=function(_0x5e6ed3,_0x2ccf6e){return respondWithRpcPromise(_0x91cb('0x22'),_0x5e6ed3[_0x91cb('0x1a')])[_0x91cb('0x8')](respondWithResult(_0x2ccf6e,null))[_0x91cb('0x17')](handleError(_0x2ccf6e,null));};exports['voiceQueuesChannel']=function(_0x2409d3,_0x74b443){return respondWithRpcPromise(_0x91cb('0x23'),_[_0x91cb('0x19')](_0x2409d3[_0x91cb('0x1a')],_0x2409d3['params']))[_0x91cb('0x8')](respondWithResult(_0x74b443,null))['catch'](handleError(_0x74b443,null));};exports['voiceQueuesChannelHangup']=function(_0x479968,_0x2011fc){return respondWithRpcPromise('VoiceQueuesChannelHangup',_[_0x91cb('0x19')](_0x479968['query'],_0x479968['params']))[_0x91cb('0x8')](respondWithResult(_0x2011fc,null))[_0x91cb('0x17')](handleError(_0x2011fc,null));};exports[_0x91cb('0x24')]=function(_0x14319b,_0x2d8fb9){return respondWithRpcPromise('VoiceQueuesChannelRedirect',_[_0x91cb('0x19')](_0x14319b[_0x91cb('0x1a')],_0x14319b[_0x91cb('0x1b')]))[_0x91cb('0x8')](respondWithResult(_0x2d8fb9,null))['catch'](handleError(_0x2d8fb9,null));};exports['outbound']=function(_0x1eed21,_0x135bf1){return respondWithRpcPromise('Outbound',_0x1eed21[_0x91cb('0x1a')])[_0x91cb('0x8')](respondWithResult(_0x135bf1,null))['catch'](handleError(_0x135bf1,null));};exports[_0x91cb('0x25')]=function(_0xddc409,_0x5f456c){return respondWithRpcPromise(_0x91cb('0x26'),_0xddc409['query'])[_0x91cb('0x8')](respondWithResult(_0x5f456c,null))[_0x91cb('0x17')](handleError(_0x5f456c,null));};exports[_0x91cb('0x27')]=function(_0x279ad5,_0x51d0ea){var _0x20bf50;return respondWithRpcPromise('Agents',_0x279ad5[_0x91cb('0x1a')])[_0x91cb('0x8')](function(_0x4e5b4b){_0x20bf50=_0x4e5b4b;return respondWithRpcPromise(_0x91cb('0x28'),_0x279ad5['query'],routingClient);})[_0x91cb('0x8')](function(_0x2eac87){return _[_0x91cb('0x19')]({},_0x2eac87,_0x20bf50);})[_0x91cb('0x8')](respondWithResult(_0x51d0ea,null))['catch'](handleError(_0x51d0ea,null));};exports[_0x91cb('0x29')]=function(_0x5af0e6,_0x2cf27e){if(_0x5af0e6[_0x91cb('0x2a')]&&_0x5af0e6[_0x91cb('0x2a')][_0x91cb('0x2b')]&&_0x5af0e6[_0x91cb('0x2c')]&&_0x5af0e6[_0x91cb('0x2c')][_0x91cb('0x10')]){for(var _0x3cc4c1 in _0x5af0e6['body'][_0x91cb('0x2b')]){if(_0x5af0e6['body'][_0x91cb('0x2b')]['hasOwnProperty'](_0x3cc4c1)){db[_0x91cb('0x2d')]['findAll']({'where':{'channel':_0x3cc4c1,'membername':_0x5af0e6[_0x91cb('0x2c')][_0x91cb('0x10')],'type':_0x91cb('0x2e'),'exitAt':null,'uniqueid':_0x5af0e6[_0x91cb('0x2a')]['interaction'][_0x3cc4c1]&&_0x5af0e6[_0x91cb('0x2a')][_0x91cb('0x2b')][_0x3cc4c1]['length']?{'$notIn':_0x5af0e6[_0x91cb('0x2a')][_0x91cb('0x2b')][_0x3cc4c1]}:{'$ne':null}}})[_0x91cb('0x8')](function(_0x32517d){var _0x267efb=moment()[_0x91cb('0x2f')](_0x91cb('0x30'));for(var _0x29d5a1=0x0,_0x396b81=_0x32517d['length'];_0x29d5a1<_0x396b81;_0x29d5a1+=0x1){_0x32517d[_0x29d5a1][_0x91cb('0x31')]({'exitAt':_0x267efb});}});for(var _0x3e20d1=0x0;_0x3e20d1<_0x5af0e6[_0x91cb('0x2a')][_0x91cb('0x2b')][_0x3cc4c1][_0x91cb('0x32')];_0x3e20d1+=0x1){db[_0x91cb('0x2d')][_0x91cb('0x33')]({'where':{'channel':_0x3cc4c1,'membername':_0x5af0e6[_0x91cb('0x2c')]['name'],'type':_0x91cb('0x2e'),'uniqueid':_0x5af0e6[_0x91cb('0x2a')][_0x91cb('0x2b')][_0x3cc4c1][_0x3e20d1],'exitAt':null},'defaults':{'channel':_0x3cc4c1,'membername':_0x5af0e6[_0x91cb('0x2c')]['name'],'interface':_[_0x91cb('0x12')](_0x5af0e6[_0x91cb('0x2c')]['interface'])?util[_0x91cb('0x2f')]('SIP/%s',_0x5af0e6[_0x91cb('0x2c')]['name']):_0x5af0e6['user']['interface'],'type':_0x91cb('0x2e'),'enterAt':moment()[_0x91cb('0x2f')](_0x91cb('0x30')),'role':_0x91cb('0x34'),'internal':_0x5af0e6[_0x91cb('0x2c')]['internal'],'uniqueid':_0x5af0e6['body'][_0x91cb('0x2b')][_0x3cc4c1][_0x3e20d1]}});}}}}return respondWithRpcPromise(_0x91cb('0x35'),{'id':_0x5af0e6[_0x91cb('0x1b')]['id'],'capacity':_0x5af0e6[_0x91cb('0x2a')]['capacity']},routingClient)['then'](respondWithResult(_0x2cf27e,null))['catch'](handleError(_0x2cf27e,null));};exports[_0x91cb('0x36')]=function(_0x490417,_0x3f22a1){return respondWithRpcPromise('Telephones',_0x490417[_0x91cb('0x1a')])[_0x91cb('0x8')](respondWithResult(_0x3f22a1,null))[_0x91cb('0x17')](handleError(_0x3f22a1,null));};exports[_0x91cb('0x37')]=function(_0x1884bc,_0x362532){return respondWithRpcPromise(_0x91cb('0x38'),_0x1884bc[_0x91cb('0x1a')])[_0x91cb('0x8')](respondWithResult(_0x362532,null))[_0x91cb('0x17')](handleError(_0x362532,null));};exports[_0x91cb('0x39')]=function(_0x5752ed,_0x1e445a){return respondWithRpcPromise(_0x91cb('0x3a'),_0x5752ed['query'])[_0x91cb('0x8')](respondWithResult(_0x1e445a,null))[_0x91cb('0x17')](handleError(_0x1e445a,null));};exports['chatQueues']=function(_0x2f5311,_0x166eeb){return respondWithRpcPromise(_0x91cb('0x3b'),_0x2f5311[_0x91cb('0x1a')],routingClient)[_0x91cb('0x8')](respondWithResult(_0x166eeb,null))[_0x91cb('0x17')](handleError(_0x166eeb,null));};exports[_0x91cb('0x3c')]=function(_0x274fff,_0x3320bd){return respondWithRpcPromise(_0x91cb('0x3b'),_0x274fff[_0x91cb('0x1a')],routingClient)['then'](findById(_0x274fff[_0x91cb('0x1b')]['id']))['then'](respondWithResult(_0x3320bd,null))[_0x91cb('0x17')](handleError(_0x3320bd,null));};exports['mailQueues']=function(_0x3dfff9,_0x1b2fec){return respondWithRpcPromise(_0x91cb('0x3d'),_0x3dfff9['query'],routingClient)[_0x91cb('0x8')](respondWithResult(_0x1b2fec,null))[_0x91cb('0x17')](handleError(_0x1b2fec,null));};exports['showMailQueues']=function(_0xef4754,_0x102025){return respondWithRpcPromise(_0x91cb('0x3d'),_0xef4754[_0x91cb('0x1a')],routingClient)['then'](findById(_0xef4754[_0x91cb('0x1b')]['id']))[_0x91cb('0x8')](respondWithResult(_0x102025,null))[_0x91cb('0x17')](handleError(_0x102025,null));};exports[_0x91cb('0x3e')]=function(_0x55a0e3,_0x11025a){return respondWithRpcPromise(_0x91cb('0x3f'),_0x55a0e3['query'],mailClient)['then'](respondWithResult(_0x11025a,null))[_0x91cb('0x17')](handleError(_0x11025a,null));};exports['openchannelQueues']=function(_0x1180ac,_0x1237fd){return respondWithRpcPromise('OpenchannelQueues',_0x1180ac['query'],routingClient)[_0x91cb('0x8')](respondWithResult(_0x1237fd,null))['catch'](handleError(_0x1237fd,null));};exports[_0x91cb('0x40')]=function(_0x961ebf,_0x33de58){return respondWithRpcPromise('OpenchannelQueues',_0x961ebf[_0x91cb('0x1a')],routingClient)['then'](findById(_0x961ebf[_0x91cb('0x1b')]['id']))[_0x91cb('0x8')](respondWithResult(_0x33de58,null))[_0x91cb('0x17')](handleError(_0x33de58,null));};exports[_0x91cb('0x41')]=function(_0x483172,_0xb37f8e){return respondWithRpcPromise(_0x91cb('0x42'),_0x483172[_0x91cb('0x1a')],routingClient)[_0x91cb('0x8')](respondWithResult(_0xb37f8e,null))[_0x91cb('0x17')](handleError(_0xb37f8e,null));};exports[_0x91cb('0x43')]=function(_0x14114d,_0x2785f9){return respondWithRpcPromise(_0x91cb('0x42'),_0x14114d[_0x91cb('0x1a')],routingClient)[_0x91cb('0x8')](findById(_0x14114d[_0x91cb('0x1b')]['id']))['then'](respondWithResult(_0x2785f9,null))[_0x91cb('0x17')](handleError(_0x2785f9,null));};exports[_0x91cb('0x44')]=function(_0x474682,_0x51ab8a){return respondWithRpcPromise(_0x91cb('0x45'),_0x474682[_0x91cb('0x1a')],routingClient)[_0x91cb('0x8')](respondWithResult(_0x51ab8a,null))['catch'](handleError(_0x51ab8a,null));};exports[_0x91cb('0x46')]=function(_0x5a3c7d,_0x4484d6){return respondWithRpcPromise(_0x91cb('0x45'),_0x5a3c7d[_0x91cb('0x1a')],routingClient)[_0x91cb('0x8')](findById(_0x5a3c7d['params']['id']))[_0x91cb('0x8')](respondWithResult(_0x4484d6,null))[_0x91cb('0x17')](handleError(_0x4484d6,null));};exports[_0x91cb('0x47')]=function(_0x404b50,_0x1bb16f){return respondWithRpcPromise(_0x91cb('0x48'),_0x404b50['query'],routingClient)[_0x91cb('0x8')](respondWithResult(_0x1bb16f,null))[_0x91cb('0x17')](handleError(_0x1bb16f,null));};exports[_0x91cb('0x49')]=function(_0x1f0ba2,_0x891569){return respondWithRpcPromise(_0x91cb('0x48'),_0x1f0ba2[_0x91cb('0x1a')],routingClient)[_0x91cb('0x8')](findById(_0x1f0ba2[_0x91cb('0x1b')]['id']))[_0x91cb('0x8')](respondWithResult(_0x891569,null))[_0x91cb('0x17')](handleError(_0x891569,null));};exports[_0x91cb('0x4a')]=function(_0xda123b,_0x3eead5){return respondWithRpcPromise(_0x91cb('0x4b'),_0xda123b[_0x91cb('0x1a')])[_0x91cb('0x8')](respondWithResult(_0x3eead5,null))['catch'](handleError(_0x3eead5,null));};exports[_0x91cb('0x4c')]=function(_0x1455cd,_0x4b639d){return respondWithRpcPromise(_0x91cb('0x4d'),_0x1455cd[_0x91cb('0x1a')],routingClient)[_0x91cb('0x8')](respondWithResult(_0x4b639d,null))['catch'](handleError(_0x4b639d,null));};exports[_0x91cb('0x4e')]=function(_0x6ecba8,_0x5cd31c){return respondWithRpcPromise('MailQueuesWaitingInteractions',_0x6ecba8[_0x91cb('0x1a')],routingClient)['then'](respondWithResult(_0x5cd31c,null))[_0x91cb('0x17')](handleError(_0x5cd31c,null));};exports[_0x91cb('0x4f')]=function(_0x4e11e3,_0x43a8b1){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x4e11e3[_0x91cb('0x1a')],routingClient)[_0x91cb('0x8')](respondWithResult(_0x43a8b1,null))['catch'](handleError(_0x43a8b1,null));};exports['openchannelQueuesIdWaitingInteractions']=function(_0x16a21f,_0x43be3e){return respondWithRpcPromise(_0x91cb('0x50'),_0x16a21f['query'],routingClient)[_0x91cb('0x8')](function(_0x23a458){if(_0x16a21f[_0x91cb('0x1a')][_0x91cb('0x51')]!==undefined){var _0x570f6b=_(_0x23a458[_0x91cb('0x13')])['filter']([_0x16a21f[_0x91cb('0x1a')][_0x91cb('0x51')],_0x16a21f[_0x91cb('0x1b')]['id']])[_0x91cb('0x52')]('queue_id')['uniq']()[_0x91cb('0x53')]();return _0x23a458['rows'][_0x91cb('0x54')](function(_0x3dc6f9){return _0x570f6b[_0x91cb('0x55')](_0x3dc6f9[_0x91cb('0x56')])>-0x1;});}else{return _0x23a458[_0x91cb('0x13')][_0x91cb('0x54')](function(_0x12d3d1){return _0x12d3d1['queue_id']===parseInt(_0x16a21f[_0x91cb('0x1b')]['id']);});}})[_0x91cb('0x8')](respondWithResult(_0x43be3e,null))['catch'](handleError(_0x43be3e,null));};exports[_0x91cb('0x57')]=function(_0x4d5862,_0x35525c){return respondWithRpcPromise(_0x91cb('0x58'),_0x4d5862[_0x91cb('0x1a')],routingClient)[_0x91cb('0x8')](respondWithResult(_0x35525c,null))[_0x91cb('0x17')](handleError(_0x35525c,null));};exports[_0x91cb('0x59')]=function(_0x1459c4,_0x30259d){return respondWithRpcPromise(_0x91cb('0x5a'),_0x1459c4[_0x91cb('0x1a')],routingClient)[_0x91cb('0x8')](respondWithResult(_0x30259d,null))[_0x91cb('0x17')](handleError(_0x30259d,null));};exports[_0x91cb('0x5b')]=function(_0x14882d,_0x22ba54){return respondWithRpcPromise(_0x91cb('0x5c'),_0x14882d['query'],routingClient)[_0x91cb('0x8')](respondWithResult(_0x22ba54,null))['catch'](handleError(_0x22ba54,null));};exports[_0x91cb('0x5d')]=function(_0x123d72){return function(_0x13f358,_0x422928){var _0x319289,_0x1fa3c7;var _0x324bdb=_[_0x91cb('0x5e')](_0x123d72);var _0x569df1=_0x123d72===_0x91cb('0x5f')?_0x91cb('0x60'):'Account';return db[_0x324bdb+'Queue'][_0x91cb('0x61')]({'raw':!![],'where':{'id':_0x13f358['params']['id']}})['then'](function(_0x95f2de){if(_['isNil'](_0x95f2de)){throw new Error(_0x324bdb+_0x91cb('0x62'));}_0x319289=_0x95f2de;return db[_0x324bdb+'Message'][_0x91cb('0x61')]({'where':{'id':_0x13f358[_0x91cb('0x2a')][_0x91cb('0x63')]},'include':[{'model':db[_0x324bdb+_0x91cb('0x64')],'as':'Interaction'},{'model':db[_0x324bdb+_0x569df1],'as':_0x91cb('0x65')}]});})[_0x91cb('0x8')](function(_0x42d07b){if(_[_0x91cb('0x12')](_0x42d07b)){throw new Error(_0x324bdb+_0x91cb('0x66'));}_0x1fa3c7=_0x42d07b;return _0x42d07b[_0x91cb('0x67')]({'read':0x0,'readAt':null,'UserId':null});})[_0x91cb('0x8')](function(){var _0x3cf8c5={'uniqueid':_0x123d72+'.'+_0x1fa3c7['id']+'.'+_0x1fa3c7[_0x91cb('0x64')]['id'],'FromUserId':_0x13f358[_0x91cb('0x2c')]['id'],'type':_0x91cb('0x68')};_0x3cf8c5[_0x324bdb+_0x91cb('0x69')]=_0x1fa3c7['id'];_0x3cf8c5[_0x324bdb+_0x91cb('0x6a')]=_0x1fa3c7[_0x91cb('0x64')]['id'];_0x3cf8c5[_0x91cb('0x6b')+_0x324bdb+_0x569df1+'Id']=_0x1fa3c7[_0x91cb('0x65')]['id'];_0x3cf8c5['To'+_0x324bdb+_0x91cb('0x6c')]=_0x319289['id'];return db[_0x324bdb+_0x91cb('0x6d')][_0x91cb('0x6e')](_0x3cf8c5);})[_0x91cb('0x8')](function(){return respondWithRpcPromise(_0x91cb('0x6f'),{'channel':_0x123d72,'interaction':_0x1fa3c7[_0x91cb('0x64')],'message':_0x1fa3c7,'account':_0x1fa3c7[_0x91cb('0x65')],'applications':[{'id':0x0,'priority':0x1,'app':_0x91cb('0x68'),'appdata':_0x319289[_0x91cb('0x10')]+','+(_0x1fa3c7['Account'][_0x91cb('0x70')]||0x12c),'interval':_0x91cb('0x71')}]},routingClient);})[_0x91cb('0x8')](respondWithResult(_0x422928,null))[_0x91cb('0x17')](handleError(_0x422928,null));};};exports[_0x91cb('0x72')]=function(_0x650ac9,_0x404457){var _0xa9de8b,_0x3bf154;if(_[_0x91cb('0x12')](_0x650ac9[_0x91cb('0x2a')]['channel'])){throw new Error(_0x91cb('0x73'));}var _0x4c459a=_0x650ac9['body'][_0x91cb('0x74')];var _0x265ffb=_[_0x91cb('0x5e')](_0x4c459a);var _0x446738=_0x4c459a===_0x91cb('0x5f')?_0x91cb('0x60'):_0x91cb('0x65');return db[_0x91cb('0x75')][_0x91cb('0x61')]({'raw':!![],'where':{'id':_0x650ac9[_0x91cb('0x1b')]['id'],'role':'agent'}})[_0x91cb('0x8')](function(_0xb784d5){if(_['isNil'](_0xb784d5)){throw new Error(_0x91cb('0x76'));}_0xa9de8b=_0xb784d5;return db[_0x265ffb+_0x91cb('0x77')]['findOne']({'where':{'id':_0x650ac9[_0x91cb('0x2a')][_0x91cb('0x63')]},'include':[{'model':db[_0x265ffb+_0x91cb('0x64')],'as':_0x91cb('0x64')},{'model':db[_0x265ffb+_0x446738],'as':_0x91cb('0x65')}]});})[_0x91cb('0x8')](function(_0x65c551){if(_[_0x91cb('0x12')](_0x65c551)){throw new Error(_0x265ffb+_0x91cb('0x66'));}_0x3bf154=_0x65c551;return _0x65c551[_0x91cb('0x67')]({'read':0x0,'readAt':null,'UserId':null});})[_0x91cb('0x8')](function(){var _0x378cd0={'uniqueid':_0x4c459a+'.'+_0x3bf154['id']+'.'+_0x3bf154['Interaction']['id'],'FromUserId':_0x650ac9['user']['id'],'type':_0x91cb('0x68'),'ToUserId':_0xa9de8b['id']};_0x378cd0[_0x265ffb+_0x91cb('0x69')]=_0x3bf154['id'];_0x378cd0[_0x265ffb+_0x91cb('0x6a')]=_0x3bf154[_0x91cb('0x64')]['id'];_0x378cd0[_0x91cb('0x6b')+_0x265ffb+_0x446738+'Id']=_0x3bf154[_0x91cb('0x65')]['id'];return db[_0x265ffb+_0x91cb('0x6d')]['create'](_0x378cd0);})[_0x91cb('0x8')](function(){return respondWithRpcPromise('Start',{'channel':_0x4c459a,'interaction':_0x3bf154[_0x91cb('0x64')],'message':_0x3bf154,'account':_0x3bf154[_0x91cb('0x65')],'applications':[{'id':0x0,'priority':0x1,'app':_0x91cb('0x34'),'appdata':_0xa9de8b[_0x91cb('0x10')]+','+(_0x3bf154[_0x91cb('0x65')]['agentTransferTimeout']||0x12c),'interval':_0x91cb('0x71')}]},routingClient);})[_0x91cb('0x8')](respondWithResult(_0x404457,null))[_0x91cb('0x17')](handleError(_0x404457,null));};
\ No newline at end of file
+var _0x425d=['http','request','then','error','code','message','result','catch','status','sendStatus','stack','name','isNil','rows','find','query','merge','params','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','voiceQueues','VoiceQueues','showVoiceQueues','updateVoiceQueue','UpdateVoiceQueue','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','VoiceQueuesChannelRedirect','outboundChannels','agents','Agents','agentCapacity','body','interaction','user','MemberReport','length','format','updateAttributes','findOrCreate','INTERACTION','interface','YYYY-MM-DD\x20HH:mm:ss','agent','internal','AgentCapacity','capacity','Telephones','trunks','campaigns','Campaigns','ChatQueues','showMailQueues','mailAccounts','MailAccounts','openchannelQueues','showOpenchannelQueues','OpenchannelQueues','smsQueues','SmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','faxQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','OpenchannelQueuesWaitingInteractions','filter','map','queue_id','uniq','indexOf','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Account','Queue','findOne','Message','messageId','Interaction','\x20Message\x20not\x20found','MessageId','InteractionId','From','QueueId','TransferReport','Start','queue','queueTransferTimeout','*,*,*,*','agentNotify','Channel\x20field\x20is\x20mandatory','channel','User','update','agentTransferTimeout','bluebird','lodash','util','../../mysqldb','../../config/logger','api','jayson/promise','client'];(function(_0x2a75b5,_0x27649d){var _0x2017b3=function(_0x3d0950){while(--_0x3d0950){_0x2a75b5['push'](_0x2a75b5['shift']());}};_0x2017b3(++_0x27649d);}(_0x425d,0x1e0));var _0xd425=function(_0x165ba6,_0x1b6fd1){_0x165ba6=_0x165ba6-0x0;var _0x48c376=_0x425d[_0x165ba6];return _0x48c376;};'use strict';var BPromise=require(_0xd425('0x0'));var moment=require('moment');var _=require(_0xd425('0x1'));var util=require(_0xd425('0x2'));var db=require(_0xd425('0x3'))['db'];var logger=require(_0xd425('0x4'))(_0xd425('0x5'));var jayson=require(_0xd425('0x6'));var amiClient=jayson[_0xd425('0x7')]['http']({'port':0x232a});var mailClient=jayson[_0xd425('0x7')][_0xd425('0x8')]({'port':0x232b});var routingClient=jayson[_0xd425('0x7')][_0xd425('0x8')]({'port':0x232c});function respondWithRpcPromise(_0x1d97d9,_0x1d2ed0,_0x50b061){return new BPromise(function(_0xb6ba8e,_0x374c3d){var _0x262b02=_0x50b061?_0x50b061:amiClient;return _0x262b02[_0xd425('0x9')](_0x1d97d9,_0x1d2ed0)[_0xd425('0xa')](function(_0x2beb20){if(_0x2beb20[_0xd425('0xb')]){if(_0x2beb20[_0xd425('0xb')][_0xd425('0xc')]===0x1f4){return _0x374c3d(_0x2beb20[_0xd425('0xb')][_0xd425('0xd')]);}return _0xb6ba8e(_0x2beb20[_0xd425('0xb')][_0xd425('0xd')]);}else{_0xb6ba8e(_0x2beb20[_0xd425('0xe')]);}})[_0xd425('0xf')](function(_0x2385a5){_0x374c3d(_0x2385a5);});});}function respondWithResult(_0x9bb611,_0x3cacf7){_0x3cacf7=_0x3cacf7||0xc8;return function(_0x3b5de8){if(_0x3b5de8){return _0x9bb611[_0xd425('0x10')](_0x3cacf7)['json'](_0x3b5de8);}return _0x9bb611[_0xd425('0x11')](0x194);};}function handleError(_0x17a498,_0x336dc3){_0x336dc3=_0x336dc3||0x1f4;return function(_0x5d3d60){logger[_0xd425('0xb')](_0x5d3d60[_0xd425('0x12')]);if(_0x5d3d60[_0xd425('0x13')]){delete _0x5d3d60[_0xd425('0x13')];}_0x17a498[_0xd425('0x10')](_0x336dc3)['send'](_0x5d3d60);};}function findById(_0x278626){return function(_0x471267){if(!_[_0xd425('0x14')](_0x278626)&&!_[_0xd425('0x14')](_0x471267)&&!_['isNil'](_0x471267[_0xd425('0x15')])){return _[_0xd425('0x16')](_0x471267[_0xd425('0x15')],function(_0x1155bc){return _0x1155bc['id']==_0x278626;});}return null;};}exports['voiceChannels']=function(_0x58a0c1,_0x5debc3){return respondWithRpcPromise('VoiceChannels',_0x58a0c1[_0xd425('0x17')])[_0xd425('0xa')](respondWithResult(_0x5debc3,null))[_0xd425('0xf')](handleError(_0x5debc3,null));};exports['voiceChannelMixMonitor']=function(_0x355af0,_0x7e982e){return respondWithRpcPromise('VoiceChannelMixMonitor',_[_0xd425('0x18')](_0x355af0[_0xd425('0x17')],_0x355af0[_0xd425('0x19')]))[_0xd425('0xa')](respondWithResult(_0x7e982e,null))[_0xd425('0xf')](handleError(_0x7e982e,null));};exports[_0xd425('0x1a')]=function(_0x2480a0,_0x3500bb){return respondWithRpcPromise(_0xd425('0x1b'),_[_0xd425('0x18')](_0x2480a0[_0xd425('0x17')],_0x2480a0[_0xd425('0x19')]))['then'](respondWithResult(_0x3500bb,null))[_0xd425('0xf')](handleError(_0x3500bb,null));};exports[_0xd425('0x1c')]=function(_0x398985,_0x1908a5){return respondWithRpcPromise(_0xd425('0x1d'),_0x398985[_0xd425('0x17')])[_0xd425('0xa')](respondWithResult(_0x1908a5,null))['catch'](handleError(_0x1908a5,null));};exports[_0xd425('0x1e')]=function(_0x177de2,_0x1d8861){return respondWithRpcPromise('VoiceQueues',_0x177de2[_0xd425('0x17')])[_0xd425('0xa')](findById(_0x177de2[_0xd425('0x19')]['id']))[_0xd425('0xa')](respondWithResult(_0x1d8861,null))[_0xd425('0xf')](handleError(_0x1d8861,null));};exports[_0xd425('0x1f')]=function(_0x2fd17a,_0x37b63c){return respondWithRpcPromise(_0xd425('0x20'),_[_0xd425('0x18')](_0x2fd17a['body'],_0x2fd17a[_0xd425('0x19')]))[_0xd425('0xa')](respondWithResult(_0x37b63c,null))[_0xd425('0xf')](handleError(_0x37b63c,null));};exports[_0xd425('0x21')]=function(_0x3275b1,_0x1abf33){return respondWithRpcPromise(_0xd425('0x22'),_[_0xd425('0x18')](_0x3275b1[_0xd425('0x17')],_0x3275b1[_0xd425('0x19')]))[_0xd425('0xa')](respondWithResult(_0x1abf33,null))['catch'](handleError(_0x1abf33,null));};exports[_0xd425('0x23')]=function(_0x2a2a9b,_0x3120a4){return respondWithRpcPromise(_0xd425('0x24'),_0x2a2a9b[_0xd425('0x17')])['then'](respondWithResult(_0x3120a4,null))[_0xd425('0xf')](handleError(_0x3120a4,null));};exports[_0xd425('0x25')]=function(_0x4cfcd1,_0x574962){return respondWithRpcPromise('VoiceQueuesChannel',_[_0xd425('0x18')](_0x4cfcd1[_0xd425('0x17')],_0x4cfcd1[_0xd425('0x19')]))[_0xd425('0xa')](respondWithResult(_0x574962,null))['catch'](handleError(_0x574962,null));};exports[_0xd425('0x26')]=function(_0x1d4414,_0x30a9dc){return respondWithRpcPromise(_0xd425('0x27'),_[_0xd425('0x18')](_0x1d4414[_0xd425('0x17')],_0x1d4414[_0xd425('0x19')]))['then'](respondWithResult(_0x30a9dc,null))[_0xd425('0xf')](handleError(_0x30a9dc,null));};exports['voiceQueuesChannelRedirect']=function(_0x22df81,_0x29cca9){return respondWithRpcPromise(_0xd425('0x28'),_['merge'](_0x22df81[_0xd425('0x17')],_0x22df81[_0xd425('0x19')]))[_0xd425('0xa')](respondWithResult(_0x29cca9,null))[_0xd425('0xf')](handleError(_0x29cca9,null));};exports['outbound']=function(_0x1d38fa,_0x3cf540){return respondWithRpcPromise('Outbound',_0x1d38fa['query'])['then'](respondWithResult(_0x3cf540,null))[_0xd425('0xf')](handleError(_0x3cf540,null));};exports[_0xd425('0x29')]=function(_0x1f30c1,_0x588688){return respondWithRpcPromise('OutboundChannels',_0x1f30c1['query'])[_0xd425('0xa')](respondWithResult(_0x588688,null))[_0xd425('0xf')](handleError(_0x588688,null));};exports[_0xd425('0x2a')]=function(_0x1d5017,_0xa9fd7c){var _0x14f3be;return respondWithRpcPromise(_0xd425('0x2b'),_0x1d5017['query'])[_0xd425('0xa')](function(_0x3c88a8){_0x14f3be=_0x3c88a8;return respondWithRpcPromise(_0xd425('0x2b'),_0x1d5017['query'],routingClient);})[_0xd425('0xa')](function(_0x2dffc7){return _[_0xd425('0x18')]({},_0x2dffc7,_0x14f3be);})['then'](respondWithResult(_0xa9fd7c,null))[_0xd425('0xf')](handleError(_0xa9fd7c,null));};exports[_0xd425('0x2c')]=function(_0x1c5ba6,_0x2d7a2f){if(_0x1c5ba6['body']&&_0x1c5ba6[_0xd425('0x2d')][_0xd425('0x2e')]&&_0x1c5ba6[_0xd425('0x2f')]&&_0x1c5ba6[_0xd425('0x2f')][_0xd425('0x13')]){for(var _0x2f6bf7 in _0x1c5ba6[_0xd425('0x2d')]['interaction']){if(_0x1c5ba6[_0xd425('0x2d')][_0xd425('0x2e')]['hasOwnProperty'](_0x2f6bf7)){db[_0xd425('0x30')]['findAll']({'where':{'channel':_0x2f6bf7,'membername':_0x1c5ba6['user'][_0xd425('0x13')],'type':'INTERACTION','exitAt':null,'uniqueid':_0x1c5ba6[_0xd425('0x2d')]['interaction'][_0x2f6bf7]&&_0x1c5ba6[_0xd425('0x2d')][_0xd425('0x2e')][_0x2f6bf7][_0xd425('0x31')]?{'$notIn':_0x1c5ba6[_0xd425('0x2d')][_0xd425('0x2e')][_0x2f6bf7]}:{'$ne':null}}})['then'](function(_0x2e4b21){var _0x5f3cfd=moment()[_0xd425('0x32')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x78ed9b=0x0,_0x16f61c=_0x2e4b21[_0xd425('0x31')];_0x78ed9b<_0x16f61c;_0x78ed9b+=0x1){_0x2e4b21[_0x78ed9b][_0xd425('0x33')]({'exitAt':_0x5f3cfd});}});for(var _0x624543=0x0;_0x624543<_0x1c5ba6['body'][_0xd425('0x2e')][_0x2f6bf7][_0xd425('0x31')];_0x624543+=0x1){db[_0xd425('0x30')][_0xd425('0x34')]({'where':{'channel':_0x2f6bf7,'membername':_0x1c5ba6[_0xd425('0x2f')]['name'],'type':_0xd425('0x35'),'uniqueid':_0x1c5ba6[_0xd425('0x2d')][_0xd425('0x2e')][_0x2f6bf7][_0x624543],'exitAt':null},'defaults':{'channel':_0x2f6bf7,'membername':_0x1c5ba6[_0xd425('0x2f')][_0xd425('0x13')],'interface':_[_0xd425('0x14')](_0x1c5ba6['user'][_0xd425('0x36')])?util[_0xd425('0x32')]('SIP/%s',_0x1c5ba6[_0xd425('0x2f')][_0xd425('0x13')]):_0x1c5ba6[_0xd425('0x2f')][_0xd425('0x36')],'type':'INTERACTION','enterAt':moment()[_0xd425('0x32')](_0xd425('0x37')),'role':_0xd425('0x38'),'internal':_0x1c5ba6[_0xd425('0x2f')][_0xd425('0x39')],'uniqueid':_0x1c5ba6['body']['interaction'][_0x2f6bf7][_0x624543]}});}}}}return respondWithRpcPromise(_0xd425('0x3a'),{'id':_0x1c5ba6['params']['id'],'capacity':_0x1c5ba6[_0xd425('0x2d')][_0xd425('0x3b')]},routingClient)['then'](respondWithResult(_0x2d7a2f,null))[_0xd425('0xf')](handleError(_0x2d7a2f,null));};exports['telephones']=function(_0x48d5b8,_0x39f588){return respondWithRpcPromise(_0xd425('0x3c'),_0x48d5b8[_0xd425('0x17')])[_0xd425('0xa')](respondWithResult(_0x39f588,null))[_0xd425('0xf')](handleError(_0x39f588,null));};exports[_0xd425('0x3d')]=function(_0xeb3586,_0x4118fe){return respondWithRpcPromise('Trunks',_0xeb3586[_0xd425('0x17')])[_0xd425('0xa')](respondWithResult(_0x4118fe,null))[_0xd425('0xf')](handleError(_0x4118fe,null));};exports[_0xd425('0x3e')]=function(_0x7b1080,_0x1c80c2){return respondWithRpcPromise(_0xd425('0x3f'),_0x7b1080[_0xd425('0x17')])['then'](respondWithResult(_0x1c80c2,null))['catch'](handleError(_0x1c80c2,null));};exports['chatQueues']=function(_0x145e76,_0x2c5d01){return respondWithRpcPromise(_0xd425('0x40'),_0x145e76[_0xd425('0x17')],routingClient)['then'](respondWithResult(_0x2c5d01,null))['catch'](handleError(_0x2c5d01,null));};exports['showChatQueues']=function(_0x5e1294,_0x254b8b){return respondWithRpcPromise(_0xd425('0x40'),_0x5e1294['query'],routingClient)[_0xd425('0xa')](findById(_0x5e1294[_0xd425('0x19')]['id']))[_0xd425('0xa')](respondWithResult(_0x254b8b,null))['catch'](handleError(_0x254b8b,null));};exports['mailQueues']=function(_0x599cb5,_0x49d75e){return respondWithRpcPromise('MailQueues',_0x599cb5['query'],routingClient)[_0xd425('0xa')](respondWithResult(_0x49d75e,null))[_0xd425('0xf')](handleError(_0x49d75e,null));};exports[_0xd425('0x41')]=function(_0x5b2323,_0x3395d8){return respondWithRpcPromise('MailQueues',_0x5b2323[_0xd425('0x17')],routingClient)[_0xd425('0xa')](findById(_0x5b2323[_0xd425('0x19')]['id']))[_0xd425('0xa')](respondWithResult(_0x3395d8,null))[_0xd425('0xf')](handleError(_0x3395d8,null));};exports[_0xd425('0x42')]=function(_0xa21f7c,_0x3ca6a6){return respondWithRpcPromise(_0xd425('0x43'),_0xa21f7c['query'],mailClient)[_0xd425('0xa')](respondWithResult(_0x3ca6a6,null))[_0xd425('0xf')](handleError(_0x3ca6a6,null));};exports[_0xd425('0x44')]=function(_0xf22906,_0x5c4df8){return respondWithRpcPromise('OpenchannelQueues',_0xf22906[_0xd425('0x17')],routingClient)[_0xd425('0xa')](respondWithResult(_0x5c4df8,null))[_0xd425('0xf')](handleError(_0x5c4df8,null));};exports[_0xd425('0x45')]=function(_0x464ed1,_0x2e0f00){return respondWithRpcPromise(_0xd425('0x46'),_0x464ed1[_0xd425('0x17')],routingClient)[_0xd425('0xa')](findById(_0x464ed1[_0xd425('0x19')]['id']))[_0xd425('0xa')](respondWithResult(_0x2e0f00,null))[_0xd425('0xf')](handleError(_0x2e0f00,null));};exports[_0xd425('0x47')]=function(_0x28979e,_0x5e72db){return respondWithRpcPromise(_0xd425('0x48'),_0x28979e[_0xd425('0x17')],routingClient)[_0xd425('0xa')](respondWithResult(_0x5e72db,null))['catch'](handleError(_0x5e72db,null));};exports['showSmsQueues']=function(_0x5ade1a,_0x403cb3){return respondWithRpcPromise(_0xd425('0x48'),_0x5ade1a[_0xd425('0x17')],routingClient)['then'](findById(_0x5ade1a[_0xd425('0x19')]['id']))['then'](respondWithResult(_0x403cb3,null))[_0xd425('0xf')](handleError(_0x403cb3,null));};exports[_0xd425('0x49')]=function(_0x21d26e,_0x5113fc){return respondWithRpcPromise(_0xd425('0x4a'),_0x21d26e[_0xd425('0x17')],routingClient)[_0xd425('0xa')](respondWithResult(_0x5113fc,null))[_0xd425('0xf')](handleError(_0x5113fc,null));};exports[_0xd425('0x4b')]=function(_0x43b1a9,_0x38a762){return respondWithRpcPromise(_0xd425('0x4a'),_0x43b1a9[_0xd425('0x17')],routingClient)[_0xd425('0xa')](findById(_0x43b1a9[_0xd425('0x19')]['id']))[_0xd425('0xa')](respondWithResult(_0x38a762,null))[_0xd425('0xf')](handleError(_0x38a762,null));};exports[_0xd425('0x4c')]=function(_0x445f98,_0x443126){return respondWithRpcPromise(_0xd425('0x4d'),_0x445f98[_0xd425('0x17')],routingClient)['then'](respondWithResult(_0x443126,null))['catch'](handleError(_0x443126,null));};exports[_0xd425('0x4e')]=function(_0x5c333a,_0x135048){return respondWithRpcPromise(_0xd425('0x4d'),_0x5c333a[_0xd425('0x17')],routingClient)[_0xd425('0xa')](findById(_0x5c333a['params']['id']))[_0xd425('0xa')](respondWithResult(_0x135048,null))[_0xd425('0xf')](handleError(_0x135048,null));};exports[_0xd425('0x4f')]=function(_0x689332,_0x2536bd){return respondWithRpcPromise(_0xd425('0x50'),_0x689332['query'])['then'](respondWithResult(_0x2536bd,null))[_0xd425('0xf')](handleError(_0x2536bd,null));};exports[_0xd425('0x51')]=function(_0x5e76f5,_0x174081){return respondWithRpcPromise('ChatQueuesWaitingInteractions',_0x5e76f5[_0xd425('0x17')],routingClient)[_0xd425('0xa')](respondWithResult(_0x174081,null))[_0xd425('0xf')](handleError(_0x174081,null));};exports[_0xd425('0x52')]=function(_0x376134,_0x2514fa){return respondWithRpcPromise(_0xd425('0x53'),_0x376134['query'],routingClient)[_0xd425('0xa')](respondWithResult(_0x2514fa,null))[_0xd425('0xf')](handleError(_0x2514fa,null));};exports[_0xd425('0x54')]=function(_0x233efa,_0xfcba08){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x233efa[_0xd425('0x17')],routingClient)[_0xd425('0xa')](respondWithResult(_0xfcba08,null))['catch'](handleError(_0xfcba08,null));};exports[_0xd425('0x55')]=function(_0x4599b0,_0x48bed3){return respondWithRpcPromise(_0xd425('0x56'),_0x4599b0[_0xd425('0x17')],routingClient)[_0xd425('0xa')](function(_0xd923bb){if(_0x4599b0[_0xd425('0x17')]['type']!==undefined){var _0x454cce=_(_0xd923bb['rows'])[_0xd425('0x57')]([_0x4599b0[_0xd425('0x17')]['type'],_0x4599b0[_0xd425('0x19')]['id']])[_0xd425('0x58')](_0xd425('0x59'))[_0xd425('0x5a')]()['value']();return _0xd923bb['rows'][_0xd425('0x57')](function(_0x2312c1){return _0x454cce[_0xd425('0x5b')](_0x2312c1['queue_id'])>-0x1;});}else{return _0xd923bb[_0xd425('0x15')][_0xd425('0x57')](function(_0x5b932c){return _0x5b932c[_0xd425('0x59')]===parseInt(_0x4599b0['params']['id']);});}})[_0xd425('0xa')](respondWithResult(_0x48bed3,null))[_0xd425('0xf')](handleError(_0x48bed3,null));};exports[_0xd425('0x5c')]=function(_0x2493e7,_0x5750dc){return respondWithRpcPromise('SmsQueuesWaitingInteractions',_0x2493e7[_0xd425('0x17')],routingClient)[_0xd425('0xa')](respondWithResult(_0x5750dc,null))['catch'](handleError(_0x5750dc,null));};exports[_0xd425('0x5d')]=function(_0x389099,_0x51c9ad){return respondWithRpcPromise(_0xd425('0x5e'),_0x389099[_0xd425('0x17')],routingClient)[_0xd425('0xa')](respondWithResult(_0x51c9ad,null))[_0xd425('0xf')](handleError(_0x51c9ad,null));};exports[_0xd425('0x5f')]=function(_0xf251e6,_0x302066){return respondWithRpcPromise('FaxQueuesWaitingInteractions',_0xf251e6['query'],routingClient)[_0xd425('0xa')](respondWithResult(_0x302066,null))['catch'](handleError(_0x302066,null));};exports[_0xd425('0x60')]=function(_0x236030){return function(_0x58cad5,_0x244789){var _0x1c1c77,_0x5dac05;var _0x592c40=_[_0xd425('0x61')](_0x236030);var _0x242ed8=_0x236030===_0xd425('0x62')?_0xd425('0x63'):_0xd425('0x64');return db[_0x592c40+_0xd425('0x65')][_0xd425('0x66')]({'raw':!![],'where':{'id':_0x58cad5[_0xd425('0x19')]['id']}})['then'](function(_0x2cff42){if(_[_0xd425('0x14')](_0x2cff42)){throw new Error(_0x592c40+'\x20Queue\x20not\x20found');}_0x1c1c77=_0x2cff42;return db[_0x592c40+_0xd425('0x67')][_0xd425('0x66')]({'where':{'id':_0x58cad5[_0xd425('0x2d')][_0xd425('0x68')]},'include':[{'model':db[_0x592c40+_0xd425('0x69')],'as':_0xd425('0x69')},{'model':db[_0x592c40+_0x242ed8],'as':_0xd425('0x64')}]});})[_0xd425('0xa')](function(_0x334062){if(_[_0xd425('0x14')](_0x334062)){throw new Error(_0x592c40+_0xd425('0x6a'));}_0x5dac05=_0x334062;return _0x334062['update']({'read':0x0,'readAt':null,'UserId':null});})[_0xd425('0xa')](function(){var _0x498e81={'uniqueid':_0x236030+'.'+_0x5dac05['id']+'.'+_0x5dac05['Interaction']['id'],'FromUserId':_0x58cad5[_0xd425('0x2f')]['id'],'type':'queue'};_0x498e81[_0x592c40+_0xd425('0x6b')]=_0x5dac05['id'];_0x498e81[_0x592c40+_0xd425('0x6c')]=_0x5dac05[_0xd425('0x69')]['id'];_0x498e81[_0xd425('0x6d')+_0x592c40+_0x242ed8+'Id']=_0x5dac05[_0xd425('0x64')]['id'];_0x498e81['To'+_0x592c40+_0xd425('0x6e')]=_0x1c1c77['id'];return db[_0x592c40+_0xd425('0x6f')]['create'](_0x498e81);})[_0xd425('0xa')](function(){return respondWithRpcPromise(_0xd425('0x70'),{'channel':_0x236030,'interaction':_0x5dac05[_0xd425('0x69')],'message':_0x5dac05,'account':_0x5dac05[_0xd425('0x64')],'applications':[{'id':0x0,'priority':0x1,'app':_0xd425('0x71'),'appdata':_0x1c1c77['name']+','+(_0x5dac05[_0xd425('0x64')][_0xd425('0x72')]||0x12c),'interval':_0xd425('0x73')}]},routingClient);})[_0xd425('0xa')](respondWithResult(_0x244789,null))[_0xd425('0xf')](handleError(_0x244789,null));};};exports[_0xd425('0x74')]=function(_0x409612,_0x4147eb){var _0x433e5d,_0x334226;if(_[_0xd425('0x14')](_0x409612[_0xd425('0x2d')]['channel'])){throw new Error(_0xd425('0x75'));}var _0x5d8a47=_0x409612[_0xd425('0x2d')][_0xd425('0x76')];var _0x1c03d6=_[_0xd425('0x61')](_0x5d8a47);var _0xf06395=_0x5d8a47==='chat'?_0xd425('0x63'):_0xd425('0x64');return db[_0xd425('0x77')][_0xd425('0x66')]({'raw':!![],'where':{'id':_0x409612[_0xd425('0x19')]['id'],'role':_0xd425('0x38')}})[_0xd425('0xa')](function(_0x568a83){if(_[_0xd425('0x14')](_0x568a83)){throw new Error('Agent\x20not\x20found');}_0x433e5d=_0x568a83;return db[_0x1c03d6+_0xd425('0x67')][_0xd425('0x66')]({'where':{'id':_0x409612['body'][_0xd425('0x68')]},'include':[{'model':db[_0x1c03d6+_0xd425('0x69')],'as':'Interaction'},{'model':db[_0x1c03d6+_0xf06395],'as':_0xd425('0x64')}]});})[_0xd425('0xa')](function(_0xca2955){if(_[_0xd425('0x14')](_0xca2955)){throw new Error(_0x1c03d6+_0xd425('0x6a'));}_0x334226=_0xca2955;return _0xca2955[_0xd425('0x78')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x3f1a48={'uniqueid':_0x5d8a47+'.'+_0x334226['id']+'.'+_0x334226['Interaction']['id'],'FromUserId':_0x409612[_0xd425('0x2f')]['id'],'type':'queue','ToUserId':_0x433e5d['id']};_0x3f1a48[_0x1c03d6+_0xd425('0x6b')]=_0x334226['id'];_0x3f1a48[_0x1c03d6+_0xd425('0x6c')]=_0x334226[_0xd425('0x69')]['id'];_0x3f1a48[_0xd425('0x6d')+_0x1c03d6+_0xf06395+'Id']=_0x334226['Account']['id'];return db[_0x1c03d6+'TransferReport']['create'](_0x3f1a48);})['then'](function(){return respondWithRpcPromise(_0xd425('0x70'),{'channel':_0x5d8a47,'interaction':_0x334226['Interaction'],'message':_0x334226,'account':_0x334226[_0xd425('0x64')],'applications':[{'id':0x0,'priority':0x1,'app':_0xd425('0x38'),'appdata':_0x433e5d[_0xd425('0x13')]+','+(_0x334226[_0xd425('0x64')][_0xd425('0x79')]||0x12c),'interval':_0xd425('0x73')}]},routingClient);})['then'](respondWithResult(_0x4147eb,null))[_0xd425('0xf')](handleError(_0x4147eb,null));};
\ No newline at end of file
index 7d1c87c..35a29af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44b4=['update','delete','exports','util','path','express','Router','fs-extra','../../components/auth/service','./schedule.controller','get','index','/:id','isAuthenticated','show','run','post','put'];(function(_0x92c450,_0x41f1e3){var _0x2a9599=function(_0x4f27df){while(--_0x4f27df){_0x92c450['push'](_0x92c450['shift']());}};_0x2a9599(++_0x41f1e3);}(_0x44b4,0x1c5));var _0x444b=function(_0xf2ce28,_0x2aa95e){_0xf2ce28=_0xf2ce28-0x0;var _0x27b9f0=_0x44b4[_0xf2ce28];return _0x27b9f0;};'use strict';var multer=require('multer');var util=require(_0x444b('0x0'));var path=require(_0x444b('0x1'));var timeout=require('connect-timeout');var express=require(_0x444b('0x2'));var router=express[_0x444b('0x3')]();var fs_extra=require(_0x444b('0x4'));var auth=require(_0x444b('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x444b('0x6'));router[_0x444b('0x7')]('/',auth['isAuthenticated'](),controller[_0x444b('0x8')]);router[_0x444b('0x7')](_0x444b('0x9'),auth[_0x444b('0xa')](),controller[_0x444b('0xb')]);router['get']('/:id/run',auth[_0x444b('0xa')](),controller[_0x444b('0xc')]);router[_0x444b('0xd')]('/',auth[_0x444b('0xa')](),controller['create']);router[_0x444b('0xe')](_0x444b('0x9'),auth[_0x444b('0xa')](),controller[_0x444b('0xf')]);router[_0x444b('0x10')](_0x444b('0x9'),auth['isAuthenticated'](),controller['destroy']);module[_0x444b('0x11')]=router;
\ No newline at end of file
+var _0xd76d=['express','Router','../../components/auth/service','../../config/environment','./schedule.controller','get','isAuthenticated','index','/:id','show','/:id/run','run','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout'];(function(_0x3de387,_0x4660e9){var _0x36b210=function(_0x1cff8d){while(--_0x1cff8d){_0x3de387['push'](_0x3de387['shift']());}};_0x36b210(++_0x4660e9);}(_0xd76d,0x147));var _0xdd76=function(_0x4bf029,_0x3e24f6){_0x4bf029=_0x4bf029-0x0;var _0x359cf3=_0xd76d[_0x4bf029];return _0x359cf3;};'use strict';var multer=require(_0xdd76('0x0'));var util=require(_0xdd76('0x1'));var path=require('path');var timeout=require(_0xdd76('0x2'));var express=require(_0xdd76('0x3'));var router=express[_0xdd76('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xdd76('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xdd76('0x6'));var controller=require(_0xdd76('0x7'));router[_0xdd76('0x8')]('/',auth[_0xdd76('0x9')](),controller[_0xdd76('0xa')]);router[_0xdd76('0x8')](_0xdd76('0xb'),auth[_0xdd76('0x9')](),controller[_0xdd76('0xc')]);router[_0xdd76('0x8')](_0xdd76('0xd'),auth[_0xdd76('0x9')](),controller[_0xdd76('0xe')]);router[_0xdd76('0xf')]('/',auth[_0xdd76('0x9')](),controller[_0xdd76('0x10')]);router[_0xdd76('0x11')](_0xdd76('0xb'),auth[_0xdd76('0x9')](),controller[_0xdd76('0x12')]);router[_0xdd76('0x13')]('/:id',auth[_0xdd76('0x9')](),controller[_0xdd76('0x14')]);module[_0xdd76('0x15')]=router;
\ No newline at end of file
index 2d9ee67..a90f085 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x018d=['years','quarters','months','weeks','hours','minutes','days','ENUM','csv','pdf','xlsx','custom','default','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE'];(function(_0x340380,_0x4bd2a8){var _0x49ce1c=function(_0x4cb9e2){while(--_0x4cb9e2){_0x340380['push'](_0x340380['shift']());}};_0x49ce1c(++_0x4bd2a8);}(_0x018d,0x1f3));var _0xd018=function(_0x680b65,_0x5b2e9c){_0x680b65=_0x680b65-0x0;var _0x1c2053=_0x018d[_0x680b65];return _0x1c2053;};'use strict';var Sequelize=require('sequelize');module[_0xd018('0x0')]={'name':{'type':Sequelize[_0xd018('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xd018('0x1')]},'active':{'type':Sequelize[_0xd018('0x2')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xd018('0x3')},'startAt':{'type':Sequelize[_0xd018('0x4')],'allowNull':![]},'endAt':{'type':Sequelize['DATE'],'allowNull':![]},'subtractNumber':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize['ENUM'](_0xd018('0x5'),_0xd018('0x6'),_0xd018('0x7'),_0xd018('0x8'),'days',_0xd018('0x9'),_0xd018('0xa')),'allowNull':![],'defaultValue':_0xd018('0xb')},'output':{'type':Sequelize[_0xd018('0xc')](_0xd018('0xd'),_0xd018('0xe'),_0xd018('0xf')),'allowNull':![],'defaultValue':_0xd018('0xd')},'type':{'type':Sequelize[_0xd018('0xc')](_0xd018('0x10'),_0xd018('0x11')),'allowNull':![],'defaultValue':'custom'},'sendMail':{'type':Sequelize[_0xd018('0x2')],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize['TEXT']},'bcc':{'type':Sequelize['TEXT']},'sendIfEmpty':{'type':Sequelize[_0xd018('0x2')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xeb95=['DATE','INTEGER','ENUM','years','months','days','csv','pdf','xlsx','custom','default','TEXT','sequelize','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*'];(function(_0x201041,_0x34cc88){var _0x59cab8=function(_0x2c9828){while(--_0x2c9828){_0x201041['push'](_0x201041['shift']());}};_0x59cab8(++_0x34cc88);}(_0xeb95,0x1d7));var _0x5eb9=function(_0x4cd11a,_0x449473){_0x4cd11a=_0x4cd11a-0x0;var _0x5154f0=_0xeb95[_0x4cd11a];return _0x5154f0;};'use strict';var Sequelize=require(_0x5eb9('0x0'));module[_0x5eb9('0x1')]={'name':{'type':Sequelize[_0x5eb9('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0x5eb9('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x5eb9('0x2')],'allowNull':![],'defaultValue':_0x5eb9('0x4')},'startAt':{'type':Sequelize[_0x5eb9('0x5')],'allowNull':![]},'endAt':{'type':Sequelize[_0x5eb9('0x5')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x5eb9('0x6')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x5eb9('0x7')](_0x5eb9('0x8'),'quarters',_0x5eb9('0x9'),'weeks',_0x5eb9('0xa'),'hours','minutes'),'allowNull':![],'defaultValue':'days'},'output':{'type':Sequelize[_0x5eb9('0x7')](_0x5eb9('0xb'),_0x5eb9('0xc'),_0x5eb9('0xd')),'allowNull':![],'defaultValue':_0x5eb9('0xb')},'type':{'type':Sequelize[_0x5eb9('0x7')](_0x5eb9('0xe'),_0x5eb9('0xf')),'allowNull':![],'defaultValue':_0x5eb9('0xe')},'sendMail':{'type':Sequelize[_0x5eb9('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0x5eb9('0x2')]},'cc':{'type':Sequelize['TEXT']},'bcc':{'type':Sequelize[_0x5eb9('0x10')]},'sendIfEmpty':{'type':Sequelize[_0x5eb9('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index edca6cd..36f347b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84d8=['util','path','sox','to-csv','ejs','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','count','set','Content-Range','save','update','then','destroy','get','Scheduler','UserProfileResource','end','error','stack','name','send','index','Schedule','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','limit','sort','where','filter','merge','VIRTUAL','rows','catch','show','params','includeAll','include','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','run','../../config/schedule','eml-format','rimraf','request-promise','moment','bluebird'];(function(_0x45bf86,_0x75586e){var _0x1f02b7=function(_0x1ea8a3){while(--_0x1ea8a3){_0x45bf86['push'](_0x45bf86['shift']());}};_0x1f02b7(++_0x75586e);}(_0x84d8,0x195));var _0x884d=function(_0x5b545c,_0xf20df1){_0x5b545c=_0x5b545c-0x0;var _0x182d72=_0x84d8[_0x5b545c];return _0x182d72;};'use strict';var emlformat=require(_0x884d('0x0'));var rimraf=require(_0x884d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x884d('0x2'));var moment=require(_0x884d('0x3'));var BPromise=require(_0x884d('0x4'));var Mustache=require('mustache');var util=require(_0x884d('0x5'));var path=require(_0x884d('0x6'));var sox=require(_0x884d('0x7'));var csv=require(_0x884d('0x8'));var ejs=require(_0x884d('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x884d('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x884d('0x8'));var querystring=require(_0x884d('0xb'));var Papa=require(_0x884d('0xc'));var Redis=require(_0x884d('0xd'));var authService=require(_0x884d('0xe'));var qs=require(_0x884d('0xf'));var as=require(_0x884d('0x10'));var hardwareService=require(_0x884d('0x11'));var logger=require(_0x884d('0x12'))(_0x884d('0x13'));var utils=require(_0x884d('0x14'));var config=require(_0x884d('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x884d('0x16'))['db'];function respondWithStatusCode(_0x30aac3,_0x4bf885){_0x4bf885=_0x4bf885||0xcc;return function(_0x3b6bea){if(_0x3b6bea){return _0x30aac3[_0x884d('0x17')](_0x4bf885);}return _0x30aac3[_0x884d('0x18')](_0x4bf885)['end']();};}function respondWithResult(_0x4a3401,_0x555973){_0x555973=_0x555973||0xc8;return function(_0x2446b3){if(_0x2446b3){return _0x4a3401[_0x884d('0x18')](_0x555973)[_0x884d('0x19')](_0x2446b3);}};}function respondWithFilteredResult(_0x52ede8,_0xdf726f){return function(_0xb75f6c){if(_0xb75f6c){var _0x1ab390=typeof _0xdf726f[_0x884d('0x1a')]==='undefined'&&typeof _0xdf726f['limit']===_0x884d('0x1b');var _0x4bf491=_0xb75f6c[_0x884d('0x1c')];var _0x4bd166=_0x1ab390?0x0:_0xdf726f[_0x884d('0x1a')];var _0x23a71e=_0x1ab390?_0xb75f6c[_0x884d('0x1c')]:_0xdf726f[_0x884d('0x1a')]+_0xdf726f['limit'];var _0xbd7914;if(_0x23a71e>=_0x4bf491){_0x23a71e=_0x4bf491;_0xbd7914=0xc8;}else{_0xbd7914=0xce;}_0x52ede8[_0x884d('0x18')](_0xbd7914);return _0x52ede8[_0x884d('0x1d')](_0x884d('0x1e'),_0x4bd166+'-'+_0x23a71e+'/'+_0x4bf491)[_0x884d('0x19')](_0xb75f6c);}return null;};}function patchUpdates(_0x970893){return function(_0x13e5a3){try{jsonpatch['apply'](_0x13e5a3,_0x970893,!![]);}catch(_0xf20f8b){return BPromise['reject'](_0xf20f8b);}return _0x13e5a3[_0x884d('0x1f')]();};}function saveUpdates(_0x55a845,_0x2e8bee){return function(_0x4aa402){if(_0x4aa402){return _0x4aa402[_0x884d('0x20')](_0x55a845)[_0x884d('0x21')](function(_0x3eaa61){return _0x3eaa61;});}return null;};}function removeEntity(_0x5c8456,_0x2c71aa){return function(_0x575969){if(_0x575969){return _0x575969[_0x884d('0x22')]()[_0x884d('0x21')](function(){var _0x1f3463=_0x575969[_0x884d('0x23')]({'plain':!![]});var _0x4e3168=_0x884d('0x24');return db[_0x884d('0x25')][_0x884d('0x22')]({'where':{'type':_0x4e3168,'resourceId':_0x1f3463['id']}})[_0x884d('0x21')](function(){return _0x575969;});})[_0x884d('0x21')](function(){_0x5c8456[_0x884d('0x18')](0xcc)[_0x884d('0x26')]();});}};}function handleEntityNotFound(_0x33d9cd,_0x4eefa5){return function(_0x3f1e06){if(!_0x3f1e06){_0x33d9cd[_0x884d('0x17')](0x194);}return _0x3f1e06;};}function handleError(_0x43891f,_0x48f09f){_0x48f09f=_0x48f09f||0x1f4;return function(_0x199c9a){logger[_0x884d('0x27')](_0x199c9a[_0x884d('0x28')]);if(_0x199c9a[_0x884d('0x29')]){delete _0x199c9a[_0x884d('0x29')];}_0x43891f['status'](_0x48f09f)[_0x884d('0x2a')](_0x199c9a);};}exports[_0x884d('0x2b')]=function(_0x3d01b5,_0x18b904){var _0x23e30f={},_0x2874e0={},_0x217a02={'count':0x0,'rows':[]};var _0x9e8e96=_['map'](db[_0x884d('0x2c')][_0x884d('0x2d')],function(_0x51ed1c){return{'name':_0x51ed1c[_0x884d('0x2e')],'type':_0x51ed1c[_0x884d('0x2f')]['key']};});_0x2874e0[_0x884d('0x30')]=_[_0x884d('0x31')](_0x9e8e96,_0x884d('0x29'));_0x2874e0[_0x884d('0x32')]=_[_0x884d('0x33')](_0x3d01b5[_0x884d('0x32')]);_0x2874e0[_0x884d('0x34')]=_[_0x884d('0x35')](_0x2874e0[_0x884d('0x30')],_0x2874e0[_0x884d('0x32')]);_0x23e30f[_0x884d('0x36')]=_[_0x884d('0x35')](_0x2874e0[_0x884d('0x30')],qs[_0x884d('0x37')](_0x3d01b5[_0x884d('0x32')][_0x884d('0x37')]));_0x23e30f['attributes']=_0x23e30f['attributes'][_0x884d('0x38')]?_0x23e30f[_0x884d('0x36')]:_0x2874e0['model'];if(!_0x3d01b5[_0x884d('0x32')]['hasOwnProperty'](_0x884d('0x39'))){_0x23e30f[_0x884d('0x3a')]=qs[_0x884d('0x3a')](_0x3d01b5[_0x884d('0x32')][_0x884d('0x3a')]);_0x23e30f[_0x884d('0x1a')]=qs[_0x884d('0x1a')](_0x3d01b5[_0x884d('0x32')]['offset']);}_0x23e30f['order']=qs[_0x884d('0x3b')](_0x3d01b5[_0x884d('0x32')][_0x884d('0x3b')]);_0x23e30f[_0x884d('0x3c')]=qs[_0x884d('0x34')](_['pick'](_0x3d01b5[_0x884d('0x32')],_0x2874e0['filters']),_0x9e8e96);if(_0x3d01b5[_0x884d('0x32')][_0x884d('0x3d')]){_0x23e30f[_0x884d('0x3c')]=_[_0x884d('0x3e')](_0x23e30f[_0x884d('0x3c')],{'$or':_['map'](_0x9e8e96,function(_0x30a93f){if(_0x30a93f[_0x884d('0x2f')]!==_0x884d('0x3f')){var _0x4854a8={};_0x4854a8[_0x30a93f['name']]={'$like':'%'+_0x3d01b5['query'][_0x884d('0x3d')]+'%'};return _0x4854a8;}})});}_0x23e30f=_[_0x884d('0x3e')]({},_0x23e30f,_0x3d01b5['options']);var _0x49c1eb={'where':_0x23e30f[_0x884d('0x3c')]};return db[_0x884d('0x2c')][_0x884d('0x1c')](_0x49c1eb)[_0x884d('0x21')](function(_0x23e928){_0x217a02[_0x884d('0x1c')]=_0x23e928;if(_0x3d01b5[_0x884d('0x32')]['includeAll']){_0x23e30f['include']=[{'all':!![]}];}return db[_0x884d('0x2c')]['findAll'](_0x23e30f);})[_0x884d('0x21')](function(_0x3509f4){_0x217a02[_0x884d('0x40')]=_0x3509f4;return _0x217a02;})['then'](respondWithFilteredResult(_0x18b904,_0x23e30f))[_0x884d('0x41')](handleError(_0x18b904,null));};exports[_0x884d('0x42')]=function(_0x275b7a,_0x5c9f83){var _0x5c41da={'raw':![],'where':{'id':_0x275b7a[_0x884d('0x43')]['id']}},_0x328942={};_0x328942[_0x884d('0x30')]=_['keys'](db[_0x884d('0x2c')][_0x884d('0x2d')]);_0x328942['query']=_[_0x884d('0x33')](_0x275b7a[_0x884d('0x32')]);_0x328942[_0x884d('0x34')]=_[_0x884d('0x35')](_0x328942[_0x884d('0x30')],_0x328942['query']);_0x5c41da[_0x884d('0x36')]=_[_0x884d('0x35')](_0x328942['model'],qs[_0x884d('0x37')](_0x275b7a['query'][_0x884d('0x37')]));_0x5c41da['attributes']=_0x5c41da['attributes'][_0x884d('0x38')]?_0x5c41da[_0x884d('0x36')]:_0x328942[_0x884d('0x30')];if(_0x275b7a[_0x884d('0x32')][_0x884d('0x44')]){_0x5c41da[_0x884d('0x45')]=[{'all':!![]}];}_0x5c41da=_[_0x884d('0x3e')]({},_0x5c41da,_0x275b7a[_0x884d('0x46')]);return db[_0x884d('0x2c')]['find'](_0x5c41da)[_0x884d('0x21')](handleEntityNotFound(_0x5c9f83,null))[_0x884d('0x21')](respondWithResult(_0x5c9f83,null))[_0x884d('0x41')](handleError(_0x5c9f83,null));};exports[_0x884d('0x47')]=function(_0x5bd444,_0x7bbd87){return db['Schedule'][_0x884d('0x47')](_0x5bd444[_0x884d('0x48')],{})[_0x884d('0x21')](function(_0x326fa4){var _0x1fe8ba=_0x5bd444[_0x884d('0x49')][_0x884d('0x23')]({'plain':!![]});if(!_0x1fe8ba)throw new Error(_0x884d('0x4a'));if(_0x1fe8ba[_0x884d('0x4b')]==='user'){var _0x100da1=_0x326fa4['get']({'plain':!![]});var _0x28c818=_0x884d('0x24');return db[_0x884d('0x4c')][_0x884d('0x4d')]({'where':{'name':_0x28c818,'userProfileId':_0x1fe8ba[_0x884d('0x4e')]},'raw':!![]})[_0x884d('0x21')](function(_0x3a06c8){if(_0x3a06c8&&_0x3a06c8['autoAssociation']===0x0){return db[_0x884d('0x25')][_0x884d('0x47')]({'name':_0x100da1[_0x884d('0x29')],'resourceId':_0x100da1['id'],'type':_0x3a06c8[_0x884d('0x29')],'sectionId':_0x3a06c8['id']},{})['then'](function(){return _0x326fa4;});}else{return _0x326fa4;}})['catch'](function(_0x5eafaa){logger[_0x884d('0x27')](_0x884d('0x4f'),_0x5eafaa);throw _0x5eafaa;});}return _0x326fa4;})[_0x884d('0x21')](respondWithResult(_0x7bbd87,0xc9))[_0x884d('0x41')](handleError(_0x7bbd87,null));};exports['update']=function(_0x4b1fb7,_0x3b94d5){if(_0x4b1fb7[_0x884d('0x48')]['id']){delete _0x4b1fb7[_0x884d('0x48')]['id'];}return db[_0x884d('0x2c')][_0x884d('0x4d')]({'where':{'id':_0x4b1fb7[_0x884d('0x43')]['id']}})['then'](handleEntityNotFound(_0x3b94d5,null))[_0x884d('0x21')](saveUpdates(_0x4b1fb7[_0x884d('0x48')],null))[_0x884d('0x21')](respondWithResult(_0x3b94d5,null))['catch'](handleError(_0x3b94d5,null));};exports[_0x884d('0x22')]=function(_0x152fa5,_0x1250c8){return db[_0x884d('0x2c')][_0x884d('0x4d')]({'where':{'id':_0x152fa5[_0x884d('0x43')]['id']}})[_0x884d('0x21')](handleEntityNotFound(_0x1250c8,null))[_0x884d('0x21')](removeEntity(_0x1250c8,null))['catch'](handleError(_0x1250c8,null));};exports[_0x884d('0x50')]=function(_0x1b7200,_0x5655af,_0x173da4){var _0x271d1b=require(_0x884d('0x51'));return db[_0x884d('0x2c')][_0x884d('0x4d')]({'where':{'id':_0x1b7200[_0x884d('0x43')]['id']},'raw':!![]})[_0x884d('0x21')](handleEntityNotFound(_0x5655af,null))[_0x884d('0x21')](function(){_0x271d1b[_0x884d('0x50')](_0x1b7200[_0x884d('0x43')]['id']);})[_0x884d('0x21')](respondWithStatusCode(_0x5655af,null))[_0x884d('0x41')](handleError(_0x5655af,null));};
\ No newline at end of file
+var _0xebba=['jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','count','offset','limit','set','Content-Range','json','apply','reject','save','update','destroy','then','get','Scheduler','UserProfileResource','error','name','send','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','Schedule','findAll','rows','show','params','include','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','run','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto'];(function(_0x3700fd,_0x5bd346){var _0x4ffb6c=function(_0x42a3de){while(--_0x42a3de){_0x3700fd['push'](_0x3700fd['shift']());}};_0x4ffb6c(++_0x5bd346);}(_0xebba,0x148));var _0xaebb=function(_0x4a5919,_0x1b021e){_0x4a5919=_0x4a5919-0x0;var _0x29049d=_0xebba[_0x4a5919];return _0x29049d;};'use strict';var emlformat=require(_0xaebb('0x0'));var rimraf=require(_0xaebb('0x1'));var zipdir=require(_0xaebb('0x2'));var jsonpatch=require(_0xaebb('0x3'));var rp=require(_0xaebb('0x4'));var moment=require(_0xaebb('0x5'));var BPromise=require(_0xaebb('0x6'));var Mustache=require(_0xaebb('0x7'));var util=require(_0xaebb('0x8'));var path=require(_0xaebb('0x9'));var sox=require(_0xaebb('0xa'));var csv=require(_0xaebb('0xb'));var ejs=require(_0xaebb('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xaebb('0xd'));var squel=require(_0xaebb('0xe'));var crypto=require(_0xaebb('0xf'));var jsforce=require(_0xaebb('0x10'));var deskjs=require(_0xaebb('0x11'));var toCsv=require(_0xaebb('0xb'));var querystring=require(_0xaebb('0x12'));var Papa=require(_0xaebb('0x13'));var Redis=require(_0xaebb('0x14'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xaebb('0x15'));var logger=require(_0xaebb('0x16'))('api');var utils=require(_0xaebb('0x17'));var config=require(_0xaebb('0x18'));var licenseUtil=require(_0xaebb('0x19'));var db=require(_0xaebb('0x1a'))['db'];function respondWithStatusCode(_0x8e49c1,_0x573ddf){_0x573ddf=_0x573ddf||0xcc;return function(_0x141efc){if(_0x141efc){return _0x8e49c1[_0xaebb('0x1b')](_0x573ddf);}return _0x8e49c1[_0xaebb('0x1c')](_0x573ddf)[_0xaebb('0x1d')]();};}function respondWithResult(_0x43be17,_0x18cfbb){_0x18cfbb=_0x18cfbb||0xc8;return function(_0x3bd87b){if(_0x3bd87b){return _0x43be17[_0xaebb('0x1c')](_0x18cfbb)['json'](_0x3bd87b);}};}function respondWithFilteredResult(_0x563bd0,_0x42966d){return function(_0x2e87e9){if(_0x2e87e9){var _0x432e86=typeof _0x42966d['offset']==='undefined'&&typeof _0x42966d['limit']==='undefined';var _0x58f602=_0x2e87e9[_0xaebb('0x1e')];var _0x42fa8e=_0x432e86?0x0:_0x42966d['offset'];var _0x13c40e=_0x432e86?_0x2e87e9[_0xaebb('0x1e')]:_0x42966d[_0xaebb('0x1f')]+_0x42966d[_0xaebb('0x20')];var _0x2cd259;if(_0x13c40e>=_0x58f602){_0x13c40e=_0x58f602;_0x2cd259=0xc8;}else{_0x2cd259=0xce;}_0x563bd0[_0xaebb('0x1c')](_0x2cd259);return _0x563bd0[_0xaebb('0x21')](_0xaebb('0x22'),_0x42fa8e+'-'+_0x13c40e+'/'+_0x58f602)[_0xaebb('0x23')](_0x2e87e9);}return null;};}function patchUpdates(_0x5b291b){return function(_0x162a97){try{jsonpatch[_0xaebb('0x24')](_0x162a97,_0x5b291b,!![]);}catch(_0x4a01d7){return BPromise[_0xaebb('0x25')](_0x4a01d7);}return _0x162a97[_0xaebb('0x26')]();};}function saveUpdates(_0x4ee9e4,_0x5a30e0){return function(_0x51d5dd){if(_0x51d5dd){return _0x51d5dd[_0xaebb('0x27')](_0x4ee9e4)['then'](function(_0x1f0549){return _0x1f0549;});}return null;};}function removeEntity(_0x4faba9,_0x512c05){return function(_0x5e4fd8){if(_0x5e4fd8){return _0x5e4fd8[_0xaebb('0x28')]()[_0xaebb('0x29')](function(){var _0x3f3120=_0x5e4fd8[_0xaebb('0x2a')]({'plain':!![]});var _0x536d8d=_0xaebb('0x2b');return db[_0xaebb('0x2c')][_0xaebb('0x28')]({'where':{'type':_0x536d8d,'resourceId':_0x3f3120['id']}})[_0xaebb('0x29')](function(){return _0x5e4fd8;});})['then'](function(){_0x4faba9[_0xaebb('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1b80ee,_0x4916ac){return function(_0x234260){if(!_0x234260){_0x1b80ee[_0xaebb('0x1b')](0x194);}return _0x234260;};}function handleError(_0x2bab91,_0x2f6689){_0x2f6689=_0x2f6689||0x1f4;return function(_0x2f8553){logger[_0xaebb('0x2d')](_0x2f8553['stack']);if(_0x2f8553[_0xaebb('0x2e')]){delete _0x2f8553[_0xaebb('0x2e')];}_0x2bab91[_0xaebb('0x1c')](_0x2f6689)[_0xaebb('0x2f')](_0x2f8553);};}exports['index']=function(_0x1c823c,_0x23ba8b){var _0x422f1d={},_0x10fd4d={},_0x417c5a={'count':0x0,'rows':[]};var _0x4b1065=_['map'](db['Schedule'][_0xaebb('0x30')],function(_0x18f0b1){return{'name':_0x18f0b1[_0xaebb('0x31')],'type':_0x18f0b1[_0xaebb('0x32')][_0xaebb('0x33')]};});_0x10fd4d['model']=_[_0xaebb('0x34')](_0x4b1065,_0xaebb('0x2e'));_0x10fd4d[_0xaebb('0x35')]=_[_0xaebb('0x36')](_0x1c823c[_0xaebb('0x35')]);_0x10fd4d[_0xaebb('0x37')]=_[_0xaebb('0x38')](_0x10fd4d['model'],_0x10fd4d[_0xaebb('0x35')]);_0x422f1d[_0xaebb('0x39')]=_[_0xaebb('0x38')](_0x10fd4d[_0xaebb('0x3a')],qs['fields'](_0x1c823c['query'][_0xaebb('0x3b')]));_0x422f1d[_0xaebb('0x39')]=_0x422f1d[_0xaebb('0x39')][_0xaebb('0x3c')]?_0x422f1d[_0xaebb('0x39')]:_0x10fd4d['model'];if(!_0x1c823c['query'][_0xaebb('0x3d')]('nolimit')){_0x422f1d[_0xaebb('0x20')]=qs[_0xaebb('0x20')](_0x1c823c[_0xaebb('0x35')]['limit']);_0x422f1d[_0xaebb('0x1f')]=qs['offset'](_0x1c823c[_0xaebb('0x35')][_0xaebb('0x1f')]);}_0x422f1d['order']=qs[_0xaebb('0x3e')](_0x1c823c[_0xaebb('0x35')]['sort']);_0x422f1d[_0xaebb('0x3f')]=qs['filters'](_[_0xaebb('0x40')](_0x1c823c[_0xaebb('0x35')],_0x10fd4d['filters']),_0x4b1065);if(_0x1c823c[_0xaebb('0x35')][_0xaebb('0x41')]){_0x422f1d['where']=_[_0xaebb('0x42')](_0x422f1d[_0xaebb('0x3f')],{'$or':_['map'](_0x4b1065,function(_0x16f41b){if(_0x16f41b['type']!==_0xaebb('0x43')){var _0x423768={};_0x423768[_0x16f41b['name']]={'$like':'%'+_0x1c823c[_0xaebb('0x35')][_0xaebb('0x41')]+'%'};return _0x423768;}})});}_0x422f1d=_['merge']({},_0x422f1d,_0x1c823c[_0xaebb('0x44')]);var _0x45477c={'where':_0x422f1d[_0xaebb('0x3f')]};return db['Schedule'][_0xaebb('0x1e')](_0x45477c)[_0xaebb('0x29')](function(_0x34f65f){_0x417c5a[_0xaebb('0x1e')]=_0x34f65f;if(_0x1c823c[_0xaebb('0x35')][_0xaebb('0x45')]){_0x422f1d['include']=[{'all':!![]}];}return db[_0xaebb('0x46')][_0xaebb('0x47')](_0x422f1d);})[_0xaebb('0x29')](function(_0x165588){_0x417c5a[_0xaebb('0x48')]=_0x165588;return _0x417c5a;})[_0xaebb('0x29')](respondWithFilteredResult(_0x23ba8b,_0x422f1d))['catch'](handleError(_0x23ba8b,null));};exports[_0xaebb('0x49')]=function(_0x37a52d,_0x1e8b31){var _0x102585={'raw':![],'where':{'id':_0x37a52d[_0xaebb('0x4a')]['id']}},_0x4ad1ae={};_0x4ad1ae['model']=_[_0xaebb('0x36')](db[_0xaebb('0x46')][_0xaebb('0x30')]);_0x4ad1ae[_0xaebb('0x35')]=_[_0xaebb('0x36')](_0x37a52d[_0xaebb('0x35')]);_0x4ad1ae[_0xaebb('0x37')]=_[_0xaebb('0x38')](_0x4ad1ae[_0xaebb('0x3a')],_0x4ad1ae['query']);_0x102585['attributes']=_['intersection'](_0x4ad1ae[_0xaebb('0x3a')],qs[_0xaebb('0x3b')](_0x37a52d['query'][_0xaebb('0x3b')]));_0x102585[_0xaebb('0x39')]=_0x102585[_0xaebb('0x39')]['length']?_0x102585[_0xaebb('0x39')]:_0x4ad1ae[_0xaebb('0x3a')];if(_0x37a52d['query'][_0xaebb('0x45')]){_0x102585[_0xaebb('0x4b')]=[{'all':!![]}];}_0x102585=_[_0xaebb('0x42')]({},_0x102585,_0x37a52d[_0xaebb('0x44')]);return db[_0xaebb('0x46')][_0xaebb('0x4c')](_0x102585)[_0xaebb('0x29')](handleEntityNotFound(_0x1e8b31,null))['then'](respondWithResult(_0x1e8b31,null))[_0xaebb('0x4d')](handleError(_0x1e8b31,null));};exports[_0xaebb('0x4e')]=function(_0xa4fb6a,_0x5de084){return db[_0xaebb('0x46')][_0xaebb('0x4e')](_0xa4fb6a[_0xaebb('0x4f')],{})['then'](function(_0xb98af6){var _0xedad65=_0xa4fb6a[_0xaebb('0x50')][_0xaebb('0x2a')]({'plain':!![]});if(!_0xedad65)throw new Error(_0xaebb('0x51'));if(_0xedad65['role']===_0xaebb('0x50')){var _0x41ef24=_0xb98af6['get']({'plain':!![]});var _0x549dfb=_0xaebb('0x2b');return db[_0xaebb('0x52')][_0xaebb('0x4c')]({'where':{'name':_0x549dfb,'userProfileId':_0xedad65[_0xaebb('0x53')]},'raw':!![]})[_0xaebb('0x29')](function(_0x5f168a){if(_0x5f168a&&_0x5f168a[_0xaebb('0x54')]===0x0){return db['UserProfileResource'][_0xaebb('0x4e')]({'name':_0x41ef24['name'],'resourceId':_0x41ef24['id'],'type':_0x5f168a['name'],'sectionId':_0x5f168a['id']},{})[_0xaebb('0x29')](function(){return _0xb98af6;});}else{return _0xb98af6;}})['catch'](function(_0x2b511d){logger[_0xaebb('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2b511d);throw _0x2b511d;});}return _0xb98af6;})[_0xaebb('0x29')](respondWithResult(_0x5de084,0xc9))[_0xaebb('0x4d')](handleError(_0x5de084,null));};exports[_0xaebb('0x27')]=function(_0x539701,_0x50ca41){if(_0x539701[_0xaebb('0x4f')]['id']){delete _0x539701[_0xaebb('0x4f')]['id'];}return db[_0xaebb('0x46')][_0xaebb('0x4c')]({'where':{'id':_0x539701[_0xaebb('0x4a')]['id']}})[_0xaebb('0x29')](handleEntityNotFound(_0x50ca41,null))[_0xaebb('0x29')](saveUpdates(_0x539701[_0xaebb('0x4f')],null))[_0xaebb('0x29')](respondWithResult(_0x50ca41,null))[_0xaebb('0x4d')](handleError(_0x50ca41,null));};exports[_0xaebb('0x28')]=function(_0x352243,_0x34f372){return db[_0xaebb('0x46')][_0xaebb('0x4c')]({'where':{'id':_0x352243[_0xaebb('0x4a')]['id']}})[_0xaebb('0x29')](handleEntityNotFound(_0x34f372,null))[_0xaebb('0x29')](removeEntity(_0x34f372,null))[_0xaebb('0x4d')](handleError(_0x34f372,null));};exports[_0xaebb('0x55')]=function(_0x18ad1e,_0x340f36,_0x4b1c6e){var _0xa5130c=require('../../config/schedule');return db['Schedule'][_0xaebb('0x4c')]({'where':{'id':_0x18ad1e[_0xaebb('0x4a')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x340f36,null))['then'](function(){_0xa5130c['run'](_0x18ad1e[_0xaebb('0x4a')]['id']);})[_0xaebb('0x29')](respondWithStatusCode(_0x340f36,null))[_0xaebb('0x4d')](handleError(_0x340f36,null));};
\ No newline at end of file
index ba75941..fd1aaaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4827=['tools_schedules','lodash','util','../../config/logger','api','path','rimraf','../../config/environment','./schedule.attributes','exports','define'];(function(_0x40be0c,_0x26a918){var _0xfe5e84=function(_0x57670a){while(--_0x57670a){_0x40be0c['push'](_0x40be0c['shift']());}};_0xfe5e84(++_0x26a918);}(_0x4827,0x1f0));var _0x7482=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x4827[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0x7482('0x0'));var util=require(_0x7482('0x1'));var logger=require(_0x7482('0x2'))(_0x7482('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x7482('0x4'));var rimraf=require(_0x7482('0x5'));var config=require(_0x7482('0x6'));var attributes=require(_0x7482('0x7'));module[_0x7482('0x8')]=function(_0xa4ea22,_0x1f501f){return _0xa4ea22[_0x7482('0x9')]('Schedule',attributes,{'tableName':_0x7482('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x587a=['./schedule.attributes','define','tools_schedules','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x4f47c7,_0x354f53){var _0x27f4b0=function(_0x45e9dd){while(--_0x45e9dd){_0x4f47c7['push'](_0x4f47c7['shift']());}};_0x27f4b0(++_0x354f53);}(_0x587a,0x9f));var _0xa587=function(_0x32c1c3,_0x5078f5){_0x32c1c3=_0x32c1c3-0x0;var _0x1877cd=_0x587a[_0x32c1c3];return _0x1877cd;};'use strict';var _=require(_0xa587('0x0'));var util=require('util');var logger=require(_0xa587('0x1'))(_0xa587('0x2'));var moment=require(_0xa587('0x3'));var BPromise=require(_0xa587('0x4'));var rp=require(_0xa587('0x5'));var fs=require('fs');var path=require(_0xa587('0x6'));var rimraf=require(_0xa587('0x7'));var config=require(_0xa587('0x8'));var attributes=require(_0xa587('0x9'));module['exports']=function(_0x291430,_0x2c8328){return _0x291430[_0xa587('0xa')]('Schedule',attributes,{'tableName':_0xa587('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 78bee7c..6bf84c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x320e=['client','http','request','then','info','Schedule,\x20%s,\x20%s','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x525c7b,_0x488fcc){var _0x27b33e=function(_0x56d43b){while(--_0x56d43b){_0x525c7b['push'](_0x525c7b['shift']());}};_0x27b33e(++_0x488fcc);}(_0x320e,0x1ac));var _0xe320=function(_0x19616a,_0x545c46){_0x19616a=_0x19616a-0x0;var _0x57bfb4=_0x320e[_0x19616a];return _0x57bfb4;};'use strict';var _=require(_0xe320('0x0'));var util=require('util');var moment=require(_0xe320('0x1'));var BPromise=require(_0xe320('0x2'));var rs=require(_0xe320('0x3'));var fs=require('fs');var Redis=require(_0xe320('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xe320('0x5'));var logger=require(_0xe320('0x6'))(_0xe320('0x7'));var config=require(_0xe320('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xe320('0x9')][_0xe320('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4801e0,_0x135f91,_0x529c96){return new BPromise(function(_0x45a829,_0x51f466){return client[_0xe320('0xb')](_0x4801e0,_0x529c96)[_0xe320('0xc')](function(_0x2abc0b){logger[_0xe320('0xd')](_0xe320('0xe'),_0x135f91,_0xe320('0xf'));logger[_0xe320('0x10')](_0xe320('0x11'),_0x135f91,'request\x20sent',JSON[_0xe320('0x12')](_0x2abc0b));if(_0x2abc0b['error']){if(_0x2abc0b[_0xe320('0x13')][_0xe320('0x14')]===0x1f4){logger[_0xe320('0x13')](_0xe320('0xe'),_0x135f91,_0x2abc0b[_0xe320('0x13')][_0xe320('0x15')]);return _0x51f466(_0x2abc0b[_0xe320('0x13')][_0xe320('0x15')]);}logger['error'](_0xe320('0xe'),_0x135f91,_0x2abc0b[_0xe320('0x13')][_0xe320('0x15')]);return _0x45a829(_0x2abc0b[_0xe320('0x13')][_0xe320('0x15')]);}else{logger[_0xe320('0xd')](_0xe320('0xe'),_0x135f91,'request\x20sent');_0x45a829(_0x2abc0b[_0xe320('0x16')][_0xe320('0x15')]);}})['catch'](function(_0xfe83b1){logger[_0xe320('0x13')]('Schedule,\x20%s,\x20%s',_0x135f91,_0xfe83b1);_0x51f466(_0xfe83b1);});});}
\ No newline at end of file
+var _0xf931=['lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','debug','Schedule,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','Schedule,\x20%s,\x20%s','catch'];(function(_0x12c4cd,_0xdebe29){var _0x18a029=function(_0x4c4272){while(--_0x4c4272){_0x12c4cd['push'](_0x12c4cd['shift']());}};_0x18a029(++_0xdebe29);}(_0xf931,0x170));var _0x1f93=function(_0x1796bc,_0x1d8a78){_0x1796bc=_0x1796bc-0x0;var _0x3a381f=_0xf931[_0x1796bc];return _0x3a381f;};'use strict';var _=require(_0x1f93('0x0'));var util=require(_0x1f93('0x1'));var moment=require(_0x1f93('0x2'));var BPromise=require(_0x1f93('0x3'));var rs=require(_0x1f93('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1f93('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x1f93('0x6'))('rpc');var config=require(_0x1f93('0x7'));var jayson=require(_0x1f93('0x8'));var client=jayson[_0x1f93('0x9')][_0x1f93('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3b8569,_0x3f8f40,_0x5c9903){return new BPromise(function(_0x49a752,_0x4ce78e){return client[_0x1f93('0xb')](_0x3b8569,_0x5c9903)[_0x1f93('0xc')](function(_0x4bba7f){logger[_0x1f93('0xd')]('Schedule,\x20%s,\x20%s',_0x3f8f40,'request\x20sent');logger[_0x1f93('0xe')](_0x1f93('0xf'),_0x3f8f40,_0x1f93('0x10'),JSON[_0x1f93('0x11')](_0x4bba7f));if(_0x4bba7f['error']){if(_0x4bba7f[_0x1f93('0x12')][_0x1f93('0x13')]===0x1f4){logger[_0x1f93('0x12')]('Schedule,\x20%s,\x20%s',_0x3f8f40,_0x4bba7f[_0x1f93('0x12')][_0x1f93('0x14')]);return _0x4ce78e(_0x4bba7f[_0x1f93('0x12')]['message']);}logger[_0x1f93('0x12')](_0x1f93('0x15'),_0x3f8f40,_0x4bba7f['error']['message']);return _0x49a752(_0x4bba7f[_0x1f93('0x12')][_0x1f93('0x14')]);}else{logger['info'](_0x1f93('0x15'),_0x3f8f40,'request\x20sent');_0x49a752(_0x4bba7f['result']['message']);}})[_0x1f93('0x16')](function(_0x54afb5){logger[_0x1f93('0x12')]('Schedule,\x20%s,\x20%s',_0x3f8f40,_0x54afb5);_0x4ce78e(_0x54afb5);});});}
\ No newline at end of file
index 5e981af..e387027 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc384=['./screenRecording.controller','get','isAuthenticated','index','describe','/:id','show','/:id/download','download','post','put','update','destroy','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x5e8573,_0x401ee1){var _0x3a744a=function(_0x31f4d7){while(--_0x31f4d7){_0x5e8573['push'](_0x5e8573['shift']());}};_0x3a744a(++_0x401ee1);}(_0xc384,0x14d));var _0x4c38=function(_0xe73f9a,_0x89aec0){_0xe73f9a=_0xe73f9a-0x0;var _0x253b72=_0xc384[_0xe73f9a];return _0x253b72;};'use strict';var multer=require(_0x4c38('0x0'));var util=require(_0x4c38('0x1'));var path=require(_0x4c38('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x4c38('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x4c38('0x4'));var interaction=require(_0x4c38('0x5'));var config=require(_0x4c38('0x6'));var controller=require(_0x4c38('0x7'));router[_0x4c38('0x8')]('/',auth[_0x4c38('0x9')](),controller[_0x4c38('0xa')]);router['get']('/describe',auth[_0x4c38('0x9')](),controller[_0x4c38('0xb')]);router[_0x4c38('0x8')](_0x4c38('0xc'),auth[_0x4c38('0x9')](),controller[_0x4c38('0xd')]);router['get'](_0x4c38('0xe'),auth[_0x4c38('0x9')](),controller[_0x4c38('0xf')]);router[_0x4c38('0x10')]('/',auth[_0x4c38('0x9')](),controller['create']);router[_0x4c38('0x11')](_0x4c38('0xc'),auth[_0x4c38('0x9')](),controller[_0x4c38('0x12')]);router['delete'](_0x4c38('0xc'),auth[_0x4c38('0x9')](),controller[_0x4c38('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xf586=['show','download','post','create','update','delete','destroy','exports','multer','path','Router','fs-extra','../../config/environment','./screenRecording.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0xf586,0x170));var _0x6f58=function(_0x449607,_0x287561){_0x449607=_0x449607-0x0;var _0x972d5=_0xf586[_0x449607];return _0x972d5;};'use strict';var multer=require(_0x6f58('0x0'));var util=require('util');var path=require(_0x6f58('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x6f58('0x2')]();var fs_extra=require(_0x6f58('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x6f58('0x4'));var controller=require(_0x6f58('0x5'));router[_0x6f58('0x6')]('/',auth[_0x6f58('0x7')](),controller[_0x6f58('0x8')]);router[_0x6f58('0x6')](_0x6f58('0x9'),auth[_0x6f58('0x7')](),controller[_0x6f58('0xa')]);router['get'](_0x6f58('0xb'),auth[_0x6f58('0x7')](),controller[_0x6f58('0xc')]);router['get']('/:id/download',auth[_0x6f58('0x7')](),controller[_0x6f58('0xd')]);router[_0x6f58('0xe')]('/',auth[_0x6f58('0x7')](),controller[_0x6f58('0xf')]);router['put'](_0x6f58('0xb'),auth[_0x6f58('0x7')](),controller[_0x6f58('0x10')]);router[_0x6f58('0x11')]('/:id',auth[_0x6f58('0x7')](),controller[_0x6f58('0x12')]);module[_0x6f58('0x13')]=router;
\ No newline at end of file
index ca738e8..3de7e03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbbc=['format','toString','closedAt','createdAt','updatedAt','MM-DD-YYYY\x20HH:mm','sequelize','moment','path','../../config/environment','exports','VIRTUAL','getDataValue','extname','value','STRING','replace','setDataValue','INTEGER','DATE'];(function(_0x4e1bd3,_0xda464d){var _0x234e83=function(_0x144f4d){while(--_0x144f4d){_0x4e1bd3['push'](_0x4e1bd3['shift']());}};_0x234e83(++_0xda464d);}(_0xbbbc,0xf6));var _0xcbbb=function(_0x220540,_0x534c70){_0x220540=_0x220540-0x0;var _0x2b8b99=_0xbbbc[_0x220540];return _0x2b8b99;};'use strict';var Sequelize=require(_0xcbbb('0x0'));var moment=require(_0xcbbb('0x1'));var path=require(_0xcbbb('0x2'));var config=require(_0xcbbb('0x3'));module[_0xcbbb('0x4')]={'format':{'type':Sequelize[_0xcbbb('0x5')],'get':function(){return this[_0xcbbb('0x6')]('value')?path[_0xcbbb('0x7')](this[_0xcbbb('0x6')](_0xcbbb('0x8'))):undefined;}},'interactionid':{'type':Sequelize[_0xcbbb('0x9')]},'channel':{'type':Sequelize[_0xcbbb('0x9')]},'value':{'type':Sequelize['STRING'],'set':function(_0x388197){var _0x1796b4=_0x388197[_0xcbbb('0xa')](/\\/g,'/');this[_0xcbbb('0xb')](_0xcbbb('0x8'),_0x1796b4);}},'rating':{'type':Sequelize[_0xcbbb('0xc')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0xcbbb('0xc')],'set':function(_0x4ec90a){this[_0xcbbb('0xb')]('startedAt',moment()['subtract'](_0x4ec90a,'ms'));this[_0xcbbb('0xb')]('closedAt',moment());this[_0xcbbb('0xb')]('duration',_0x4ec90a);}},'startedAt':{'type':Sequelize[_0xcbbb('0xd')],'get':function(){return moment(this[_0xcbbb('0x6')]('startedAt'))[_0xcbbb('0xe')]('MM-DD-YYYY\x20HH:mm')[_0xcbbb('0xf')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0xcbbb('0x6')](_0xcbbb('0x10')))[_0xcbbb('0xe')]('MM-DD-YYYY\x20HH:mm')[_0xcbbb('0xf')]();}},'createdAt':{'type':Sequelize[_0xcbbb('0xd')],'get':function(){return moment(this[_0xcbbb('0x6')](_0xcbbb('0x11')))['format']('MM-DD-YYYY\x20HH:mm')[_0xcbbb('0xf')]();}},'updatedAt':{'type':Sequelize[_0xcbbb('0xd')],'get':function(){return moment(this[_0xcbbb('0x6')](_0xcbbb('0x12')))['format'](_0xcbbb('0x13'))['toString']();}}};
\ No newline at end of file
+var _0x0ffc=['value','extname','STRING','replace','setDataValue','INTEGER','startedAt','closedAt','duration','DATE','MM-DD-YYYY\x20HH:mm','toString','format','updatedAt','moment','path','exports','getDataValue'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0ffc,0x9e));var _0xc0ff=function(_0x3325aa,_0x3b4b29){_0x3325aa=_0x3325aa-0x0;var _0x77e17a=_0x0ffc[_0x3325aa];return _0x77e17a;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xc0ff('0x0'));var path=require(_0xc0ff('0x1'));var config=require('../../config/environment');module[_0xc0ff('0x2')]={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xc0ff('0x3')](_0xc0ff('0x4'))?path[_0xc0ff('0x5')](this[_0xc0ff('0x3')](_0xc0ff('0x4'))):undefined;}},'interactionid':{'type':Sequelize[_0xc0ff('0x6')]},'channel':{'type':Sequelize[_0xc0ff('0x6')]},'value':{'type':Sequelize[_0xc0ff('0x6')],'set':function(_0x245f10){var _0x51695d=_0x245f10[_0xc0ff('0x7')](/\\/g,'/');this[_0xc0ff('0x8')](_0xc0ff('0x4'),_0x51695d);}},'rating':{'type':Sequelize[_0xc0ff('0x9')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0xc0ff('0x9')],'set':function(_0x380604){this[_0xc0ff('0x8')](_0xc0ff('0xa'),moment()['subtract'](_0x380604,'ms'));this['setDataValue'](_0xc0ff('0xb'),moment());this['setDataValue'](_0xc0ff('0xc'),_0x380604);}},'startedAt':{'type':Sequelize[_0xc0ff('0xd')],'get':function(){return moment(this[_0xc0ff('0x3')](_0xc0ff('0xa')))['format'](_0xc0ff('0xe'))[_0xc0ff('0xf')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0xc0ff('0x3')]('closedAt'))['format']('MM-DD-YYYY\x20HH:mm')[_0xc0ff('0xf')]();}},'createdAt':{'type':Sequelize[_0xc0ff('0xd')],'get':function(){return moment(this[_0xc0ff('0x3')]('createdAt'))[_0xc0ff('0x10')](_0xc0ff('0xe'))[_0xc0ff('0xf')]();}},'updatedAt':{'type':Sequelize[_0xc0ff('0xd')],'get':function(){return moment(this[_0xc0ff('0x3')](_0xc0ff('0x11')))[_0xc0ff('0x10')](_0xc0ff('0xe'))[_0xc0ff('0xf')]();}}};
\ No newline at end of file
index a9efa00..8f3f8e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbf5=['papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/license/util','sendStatus','status','json','offset','undefined','count','set','Content-Range','save','update','then','destroy','end','error','stack','name','send','index','map','ScreenRecording','rawAttributes','fieldName','type','key','model','format','query','keys','intersection','fields','attributes','length','nolimit','limit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','duration','createdAt','closedAt','value','describe','download','uniqueid','join','root','server/files/screen_recordings','decryptFile','secrets','recording','existsSync','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring'];(function(_0x49b207,_0x408ade){var _0x2dc8fa=function(_0x150975){while(--_0x150975){_0x49b207['push'](_0x49b207['shift']());}};_0x2dc8fa(++_0x408ade);}(_0xdbf5,0x18c));var _0x5dbf=function(_0x1d606e,_0x2e128c){_0x1d606e=_0x1d606e-0x0;var _0x51625e=_0xdbf5[_0x1d606e];return _0x51625e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5dbf('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x5dbf('0x1'));var moment=require(_0x5dbf('0x2'));var BPromise=require(_0x5dbf('0x3'));var Mustache=require(_0x5dbf('0x4'));var util=require(_0x5dbf('0x5'));var path=require(_0x5dbf('0x6'));var sox=require(_0x5dbf('0x7'));var csv=require(_0x5dbf('0x8'));var ejs=require(_0x5dbf('0x9'));var fs=require('fs');var fs_extra=require(_0x5dbf('0xa'));var _=require(_0x5dbf('0xb'));var squel=require(_0x5dbf('0xc'));var crypto=require(_0x5dbf('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x5dbf('0xe'));var toCsv=require('to-csv');var querystring=require(_0x5dbf('0xf'));var Papa=require(_0x5dbf('0x10'));var Redis=require(_0x5dbf('0x11'));var authService=require(_0x5dbf('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x5dbf('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x5dbf('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x5dbf('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x182cec,_0x2bb7ed){_0x2bb7ed=_0x2bb7ed||0xcc;return function(_0x1453a9){if(_0x1453a9){return _0x182cec[_0x5dbf('0x16')](_0x2bb7ed);}return _0x182cec[_0x5dbf('0x17')](_0x2bb7ed)['end']();};}function respondWithResult(_0x4803ca,_0x2b4e1c){_0x2b4e1c=_0x2b4e1c||0xc8;return function(_0x3480c8){if(_0x3480c8){return _0x4803ca['status'](_0x2b4e1c)[_0x5dbf('0x18')](_0x3480c8);}};}function respondWithFilteredResult(_0x248e3c,_0x23f763){return function(_0x2dfa44){if(_0x2dfa44){var _0x181816=typeof _0x23f763[_0x5dbf('0x19')]===_0x5dbf('0x1a')&&typeof _0x23f763['limit']==='undefined';var _0x16dc82=_0x2dfa44[_0x5dbf('0x1b')];var _0x39c7aa=_0x181816?0x0:_0x23f763[_0x5dbf('0x19')];var _0x20c2b0=_0x181816?_0x2dfa44['count']:_0x23f763[_0x5dbf('0x19')]+_0x23f763['limit'];var _0x565efa;if(_0x20c2b0>=_0x16dc82){_0x20c2b0=_0x16dc82;_0x565efa=0xc8;}else{_0x565efa=0xce;}_0x248e3c['status'](_0x565efa);return _0x248e3c[_0x5dbf('0x1c')](_0x5dbf('0x1d'),_0x39c7aa+'-'+_0x20c2b0+'/'+_0x16dc82)[_0x5dbf('0x18')](_0x2dfa44);}return null;};}function patchUpdates(_0x2ab57c){return function(_0x1e3cce){try{jsonpatch['apply'](_0x1e3cce,_0x2ab57c,!![]);}catch(_0x2764ea){return BPromise['reject'](_0x2764ea);}return _0x1e3cce[_0x5dbf('0x1e')]();};}function saveUpdates(_0x11cc67,_0x14d133){return function(_0x43a612){if(_0x43a612){return _0x43a612[_0x5dbf('0x1f')](_0x11cc67)[_0x5dbf('0x20')](function(_0x58085e){return _0x58085e;});}return null;};}function removeEntity(_0x4027c3,_0x3e3a2d){return function(_0x2d3e1b){if(_0x2d3e1b){return _0x2d3e1b[_0x5dbf('0x21')]()[_0x5dbf('0x20')](function(){_0x4027c3[_0x5dbf('0x17')](0xcc)[_0x5dbf('0x22')]();});}};}function handleEntityNotFound(_0x20ab1b,_0x42f13b){return function(_0x15a790){if(!_0x15a790){_0x20ab1b[_0x5dbf('0x16')](0x194);}return _0x15a790;};}function handleError(_0x232c77,_0x3f9e60){_0x3f9e60=_0x3f9e60||0x1f4;return function(_0x407741){logger[_0x5dbf('0x23')](_0x407741[_0x5dbf('0x24')]);if(_0x407741[_0x5dbf('0x25')]){delete _0x407741[_0x5dbf('0x25')];}_0x232c77[_0x5dbf('0x17')](_0x3f9e60)[_0x5dbf('0x26')](_0x407741);};}exports[_0x5dbf('0x27')]=function(_0x471027,_0x21cd00){var _0x5768b7={},_0x2f71eb={},_0x24dc99={'count':0x0,'rows':[]};var _0xc4748=_[_0x5dbf('0x28')](db[_0x5dbf('0x29')][_0x5dbf('0x2a')],function(_0x2a65c5){return{'name':_0x2a65c5[_0x5dbf('0x2b')],'type':_0x2a65c5[_0x5dbf('0x2c')][_0x5dbf('0x2d')]};});_0x2f71eb[_0x5dbf('0x2e')]=_['differenceBy'](_['map'](_0xc4748,_0x5dbf('0x25')),[_0x5dbf('0x2f')]);_0x2f71eb[_0x5dbf('0x30')]=_[_0x5dbf('0x31')](_0x471027[_0x5dbf('0x30')]);_0x2f71eb['filters']=_['intersection'](_0x2f71eb[_0x5dbf('0x2e')],_0x2f71eb[_0x5dbf('0x30')]);_0x5768b7['attributes']=_[_0x5dbf('0x32')](_0x2f71eb[_0x5dbf('0x2e')],qs[_0x5dbf('0x33')](_0x471027[_0x5dbf('0x30')][_0x5dbf('0x33')]));_0x5768b7['attributes']=_0x5768b7[_0x5dbf('0x34')][_0x5dbf('0x35')]?_0x5768b7[_0x5dbf('0x34')]:_0x2f71eb[_0x5dbf('0x2e')];if(!_0x471027[_0x5dbf('0x30')]['hasOwnProperty'](_0x5dbf('0x36'))){_0x5768b7[_0x5dbf('0x37')]=qs[_0x5dbf('0x37')](_0x471027[_0x5dbf('0x30')]['limit']);_0x5768b7[_0x5dbf('0x19')]=qs[_0x5dbf('0x19')](_0x471027[_0x5dbf('0x30')][_0x5dbf('0x19')]);}_0x5768b7[_0x5dbf('0x38')]=qs[_0x5dbf('0x39')](_0x471027[_0x5dbf('0x30')][_0x5dbf('0x39')]);_0x5768b7[_0x5dbf('0x3a')]=qs[_0x5dbf('0x3b')](_[_0x5dbf('0x3c')](_0x471027['query'],_0x2f71eb[_0x5dbf('0x3b')]),_0xc4748);if(_0x471027[_0x5dbf('0x30')][_0x5dbf('0x3d')]){_0x5768b7['where']=_[_0x5dbf('0x3e')](_0x5768b7[_0x5dbf('0x3a')],{'$or':_[_0x5dbf('0x28')](_0xc4748,function(_0x5b3738){if(_0x5b3738[_0x5dbf('0x2c')]!==_0x5dbf('0x3f')){var _0x9bd4c0={};_0x9bd4c0[_0x5b3738['name']]={'$like':'%'+_0x471027[_0x5dbf('0x30')][_0x5dbf('0x3d')]+'%'};return _0x9bd4c0;}})});}_0x5768b7=_[_0x5dbf('0x3e')]({},_0x5768b7,_0x471027[_0x5dbf('0x40')]);var _0x10537d={'where':_0x5768b7[_0x5dbf('0x3a')]};return db[_0x5dbf('0x29')][_0x5dbf('0x1b')](_0x10537d)['then'](function(_0x5be96b){_0x24dc99['count']=_0x5be96b;if(_0x471027['query'][_0x5dbf('0x41')]){_0x5768b7[_0x5dbf('0x42')]=[{'all':!![]}];}return db['ScreenRecording'][_0x5dbf('0x43')](_0x5768b7);})[_0x5dbf('0x20')](function(_0x5a60e8){_0x24dc99[_0x5dbf('0x44')]=_0x5a60e8;return _0x24dc99;})[_0x5dbf('0x20')](respondWithFilteredResult(_0x21cd00,_0x5768b7))[_0x5dbf('0x45')](handleError(_0x21cd00,null));};exports[_0x5dbf('0x46')]=function(_0x21ae10,_0x7c390d){var _0x2745df={'raw':![],'where':{'id':_0x21ae10[_0x5dbf('0x47')]['id']}},_0x1c020a={};_0x1c020a[_0x5dbf('0x2e')]=_['keys'](db[_0x5dbf('0x29')][_0x5dbf('0x2a')]);_0x1c020a[_0x5dbf('0x30')]=_['keys'](_0x21ae10[_0x5dbf('0x30')]);_0x1c020a[_0x5dbf('0x3b')]=_[_0x5dbf('0x32')](_0x1c020a[_0x5dbf('0x2e')],_0x1c020a['query']);_0x2745df[_0x5dbf('0x34')]=_['intersection'](_0x1c020a[_0x5dbf('0x2e')],qs[_0x5dbf('0x33')](_0x21ae10[_0x5dbf('0x30')][_0x5dbf('0x33')]));_0x2745df['attributes']=_0x2745df['attributes'][_0x5dbf('0x35')]?_0x2745df[_0x5dbf('0x34')]:_0x1c020a[_0x5dbf('0x2e')];if(_0x21ae10['query'][_0x5dbf('0x41')]){_0x2745df['include']=[{'all':!![]}];}_0x2745df=_['merge']({},_0x2745df,_0x21ae10['options']);return db['ScreenRecording'][_0x5dbf('0x48')](_0x2745df)[_0x5dbf('0x20')](handleEntityNotFound(_0x7c390d,null))['then'](respondWithResult(_0x7c390d,null))[_0x5dbf('0x45')](handleError(_0x7c390d,null));};exports[_0x5dbf('0x49')]=function(_0x4b6f30,_0x366102){return db[_0x5dbf('0x29')]['create'](_0x4b6f30[_0x5dbf('0x4a')],{})['then'](respondWithResult(_0x366102,0xc9))['catch'](handleError(_0x366102,null));};exports[_0x5dbf('0x1f')]=function(_0x2a3d30,_0x17a1c0){if(_0x2a3d30['body']['id']){delete _0x2a3d30['body']['id'];}delete _0x2a3d30[_0x5dbf('0x4a')][_0x5dbf('0x4b')];delete _0x2a3d30[_0x5dbf('0x4a')][_0x5dbf('0x4c')];delete _0x2a3d30[_0x5dbf('0x4a')][_0x5dbf('0x4d')];delete _0x2a3d30[_0x5dbf('0x4a')][_0x5dbf('0x4e')];return db['ScreenRecording'][_0x5dbf('0x48')]({'where':{'id':_0x2a3d30[_0x5dbf('0x47')]['id']}})[_0x5dbf('0x20')](handleEntityNotFound(_0x17a1c0,null))[_0x5dbf('0x20')](saveUpdates(_0x2a3d30[_0x5dbf('0x4a')],null))[_0x5dbf('0x20')](respondWithResult(_0x17a1c0,null))[_0x5dbf('0x45')](handleError(_0x17a1c0,null));};exports['describe']=function(_0x1b0b13,_0x54f401){return db[_0x5dbf('0x29')][_0x5dbf('0x4f')]()[_0x5dbf('0x20')](respondWithResult(_0x54f401,null))[_0x5dbf('0x45')](handleError(_0x54f401,null));};exports[_0x5dbf('0x50')]=function(_0x1f165d,_0x353d0f,_0x48403a){var _0x5c3c0d=require('../../components/encryptor');var _0x1e1876=![];var _0xfdacc7={};if(_0x1f165d[_0x5dbf('0x30')]['type']&&_0x1f165d['query'][_0x5dbf('0x2c')]===_0x5dbf('0x51')){_0xfdacc7[_0x5dbf('0x51')]=_0x1f165d['params']['id'];}else{_0xfdacc7['id']=_0x1f165d[_0x5dbf('0x47')]['id'];}return db['ScreenRecording'][_0x5dbf('0x48')]({'where':_0xfdacc7,'attributes':['id',_0x5dbf('0x4e')],'raw':!![]})[_0x5dbf('0x20')](handleEntityNotFound(_0x353d0f,null))['then'](function(_0x55fd51){if(_0x55fd51){var _0x1b316d=path[_0x5dbf('0x52')](config[_0x5dbf('0x53')],_0x5dbf('0x54'),_0x55fd51['value']);var _0xfcc43c=util[_0x5dbf('0x2f')]('%s.cypher',_0x1b316d);if(fs['existsSync'](_0xfcc43c)){_0x1e1876=!![];return _0x5c3c0d[_0x5dbf('0x55')](_0xfcc43c,_0x1b316d,config[_0x5dbf('0x56')][_0x5dbf('0x57')])[_0x5dbf('0x20')](function(){return _0x55fd51;});}return _0x55fd51;}})[_0x5dbf('0x20')](function(_0x4711d5){if(_0x4711d5){var _0x50a029=path[_0x5dbf('0x52')](config['root'],'server/files/screen_recordings',_0x4711d5['value']);if(!fs[_0x5dbf('0x58')](_0x50a029)){throw new db['Sequelize'][(_0x5dbf('0x59'))](_0x5dbf('0x5a'));}if(_0x4711d5[_0x5dbf('0x5b')]){return _0x353d0f[_0x5dbf('0x50')](_0x50a029,_0x4711d5[_0x5dbf('0x5b')]+path[_0x5dbf('0x5c')](_0x50a029),function(){if(_0x1e1876){fs[_0x5dbf('0x5d')](_0x50a029);}});}else{return _0x353d0f[_0x5dbf('0x50')](_0x50a029,function(_0x2c84d6){if(_0x1e1876){fs[_0x5dbf('0x5d')](_0x50a029);}});}}})[_0x5dbf('0x45')](function(_0x2ca889){if(_0x2ca889[_0x5dbf('0x5e')]===_0x5dbf('0x5a')){_0x353d0f[_0x5dbf('0x17')](0x194)['send'](_0x5dbf('0x5f'));}else{return handleError(_0x353d0f,null);}});};exports['destroy']=function(_0xb0a9bf,_0xfc5817){return db[_0x5dbf('0x29')][_0x5dbf('0x48')]({'where':{'id':_0xb0a9bf['params']['id']}})[_0x5dbf('0x20')](function(_0x1ade34){if(_[_0x5dbf('0x60')](_0x1ade34)){throw new ReferenceError(_0x5dbf('0x61'));}return _0x1ade34;})[_0x5dbf('0x20')](function(_0x40982f){var _0x52efd7=path[_0x5dbf('0x52')](config[_0x5dbf('0x53')],_0x5dbf('0x54'),_0x40982f[_0x5dbf('0x4e')]);logger[_0x5dbf('0x62')](_0x5dbf('0x63'),_0x52efd7);if(!_[_0x5dbf('0x60')](_0x40982f[_0x5dbf('0x4e')])&&fs[_0x5dbf('0x58')](_0x52efd7)){logger[_0x5dbf('0x62')](_0x5dbf('0x64')+_0x52efd7+_0x5dbf('0x65'));fs['unlinkSync'](_0x52efd7);}_0x52efd7=_0x52efd7+'.cypher';if(!_[_0x5dbf('0x60')](_0x40982f[_0x5dbf('0x4e')])&&fs[_0x5dbf('0x58')](_0x52efd7)){logger[_0x5dbf('0x62')](_0x5dbf('0x64')+_0x52efd7+_0x5dbf('0x65'));fs[_0x5dbf('0x66')](_0x52efd7);}return _0x40982f;})[_0x5dbf('0x20')](function(_0x3a4001){if(!_0x3a4001)throw new InternalError();return _0x3a4001['destroy']();})['then'](function(){_0xfc5817['status'](0xcc)['end']();})[_0x5dbf('0x45')](handleError(_0xfc5817,null));};
\ No newline at end of file
+var _0xac31=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','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/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','index','map','ScreenRecording','rawAttributes','type','key','model','differenceBy','format','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','options','then','includeAll','findAll','rows','catch','params','find','create','body','createdAt','closedAt','value','describe','download','../../components/encryptor','uniqueid','join','root','server/files/screen_recordings','%s.cypher','existsSync','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','isNil','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0xac31,0xca));var _0x1ac3=function(_0x2eec10,_0x31a697){_0x2eec10=_0x2eec10-0x0;var _0x5f114a=_0xac31[_0x2eec10];return _0x5f114a;};'use strict';var emlformat=require(_0x1ac3('0x0'));var rimraf=require(_0x1ac3('0x1'));var zipdir=require(_0x1ac3('0x2'));var jsonpatch=require(_0x1ac3('0x3'));var rp=require(_0x1ac3('0x4'));var moment=require(_0x1ac3('0x5'));var BPromise=require(_0x1ac3('0x6'));var Mustache=require('mustache');var util=require(_0x1ac3('0x7'));var path=require(_0x1ac3('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x1ac3('0x9'));var fs=require('fs');var fs_extra=require(_0x1ac3('0xa'));var _=require(_0x1ac3('0xb'));var squel=require(_0x1ac3('0xc'));var crypto=require(_0x1ac3('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x1ac3('0xe'));var toCsv=require('to-csv');var querystring=require(_0x1ac3('0xf'));var Papa=require(_0x1ac3('0x10'));var Redis=require(_0x1ac3('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x1ac3('0x12'));var as=require(_0x1ac3('0x13'));var hardwareService=require(_0x1ac3('0x14'));var logger=require(_0x1ac3('0x15'))(_0x1ac3('0x16'));var utils=require(_0x1ac3('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x1ac3('0x18'));var db=require(_0x1ac3('0x19'))['db'];function respondWithStatusCode(_0x2eeabf,_0x2338b9){_0x2338b9=_0x2338b9||0xcc;return function(_0x50d3b6){if(_0x50d3b6){return _0x2eeabf[_0x1ac3('0x1a')](_0x2338b9);}return _0x2eeabf[_0x1ac3('0x1b')](_0x2338b9)[_0x1ac3('0x1c')]();};}function respondWithResult(_0x2def9f,_0x53cc35){_0x53cc35=_0x53cc35||0xc8;return function(_0x24bb5e){if(_0x24bb5e){return _0x2def9f[_0x1ac3('0x1b')](_0x53cc35)['json'](_0x24bb5e);}};}function respondWithFilteredResult(_0x29a7b3,_0x1f9641){return function(_0x38b52a){if(_0x38b52a){var _0x51f1e4=typeof _0x1f9641[_0x1ac3('0x1d')]===_0x1ac3('0x1e')&&typeof _0x1f9641[_0x1ac3('0x1f')]==='undefined';var _0x195683=_0x38b52a['count'];var _0x291616=_0x51f1e4?0x0:_0x1f9641[_0x1ac3('0x1d')];var _0x20091d=_0x51f1e4?_0x38b52a[_0x1ac3('0x20')]:_0x1f9641[_0x1ac3('0x1d')]+_0x1f9641['limit'];var _0x136e73;if(_0x20091d>=_0x195683){_0x20091d=_0x195683;_0x136e73=0xc8;}else{_0x136e73=0xce;}_0x29a7b3[_0x1ac3('0x1b')](_0x136e73);return _0x29a7b3[_0x1ac3('0x21')](_0x1ac3('0x22'),_0x291616+'-'+_0x20091d+'/'+_0x195683)['json'](_0x38b52a);}return null;};}function patchUpdates(_0x48d18a){return function(_0x2879d8){try{jsonpatch[_0x1ac3('0x23')](_0x2879d8,_0x48d18a,!![]);}catch(_0x14070b){return BPromise[_0x1ac3('0x24')](_0x14070b);}return _0x2879d8[_0x1ac3('0x25')]();};}function saveUpdates(_0x319988,_0x23b767){return function(_0x10912a){if(_0x10912a){return _0x10912a[_0x1ac3('0x26')](_0x319988)['then'](function(_0x1e277f){return _0x1e277f;});}return null;};}function removeEntity(_0x231b7f,_0x4b19f2){return function(_0x2b5182){if(_0x2b5182){return _0x2b5182[_0x1ac3('0x27')]()['then'](function(){_0x231b7f[_0x1ac3('0x1b')](0xcc)[_0x1ac3('0x1c')]();});}};}function handleEntityNotFound(_0x145486,_0x2dfdb7){return function(_0x10db3d){if(!_0x10db3d){_0x145486['sendStatus'](0x194);}return _0x10db3d;};}function handleError(_0x5a2ab2,_0x503a64){_0x503a64=_0x503a64||0x1f4;return function(_0x528807){logger['error'](_0x528807[_0x1ac3('0x28')]);if(_0x528807['name']){delete _0x528807[_0x1ac3('0x29')];}_0x5a2ab2[_0x1ac3('0x1b')](_0x503a64)[_0x1ac3('0x2a')](_0x528807);};}exports[_0x1ac3('0x2b')]=function(_0x4b3d3c,_0x61441d){var _0x541da0={},_0x2ddd73={},_0x4000b0={'count':0x0,'rows':[]};var _0x440aed=_[_0x1ac3('0x2c')](db[_0x1ac3('0x2d')][_0x1ac3('0x2e')],function(_0x9c17c2){return{'name':_0x9c17c2['fieldName'],'type':_0x9c17c2[_0x1ac3('0x2f')][_0x1ac3('0x30')]};});_0x2ddd73[_0x1ac3('0x31')]=_[_0x1ac3('0x32')](_['map'](_0x440aed,_0x1ac3('0x29')),[_0x1ac3('0x33')]);_0x2ddd73[_0x1ac3('0x34')]=_[_0x1ac3('0x35')](_0x4b3d3c[_0x1ac3('0x34')]);_0x2ddd73['filters']=_[_0x1ac3('0x36')](_0x2ddd73[_0x1ac3('0x31')],_0x2ddd73[_0x1ac3('0x34')]);_0x541da0[_0x1ac3('0x37')]=_[_0x1ac3('0x36')](_0x2ddd73[_0x1ac3('0x31')],qs['fields'](_0x4b3d3c[_0x1ac3('0x34')][_0x1ac3('0x38')]));_0x541da0[_0x1ac3('0x37')]=_0x541da0[_0x1ac3('0x37')]['length']?_0x541da0[_0x1ac3('0x37')]:_0x2ddd73[_0x1ac3('0x31')];if(!_0x4b3d3c[_0x1ac3('0x34')][_0x1ac3('0x39')](_0x1ac3('0x3a'))){_0x541da0[_0x1ac3('0x1f')]=qs[_0x1ac3('0x1f')](_0x4b3d3c[_0x1ac3('0x34')][_0x1ac3('0x1f')]);_0x541da0['offset']=qs[_0x1ac3('0x1d')](_0x4b3d3c[_0x1ac3('0x34')]['offset']);}_0x541da0[_0x1ac3('0x3b')]=qs[_0x1ac3('0x3c')](_0x4b3d3c[_0x1ac3('0x34')][_0x1ac3('0x3c')]);_0x541da0[_0x1ac3('0x3d')]=qs[_0x1ac3('0x3e')](_[_0x1ac3('0x3f')](_0x4b3d3c[_0x1ac3('0x34')],_0x2ddd73['filters']),_0x440aed);if(_0x4b3d3c[_0x1ac3('0x34')]['filter']){_0x541da0[_0x1ac3('0x3d')]=_[_0x1ac3('0x40')](_0x541da0[_0x1ac3('0x3d')],{'$or':_[_0x1ac3('0x2c')](_0x440aed,function(_0x3141ae){if(_0x3141ae[_0x1ac3('0x2f')]!=='VIRTUAL'){var _0x3b5c1c={};_0x3b5c1c[_0x3141ae[_0x1ac3('0x29')]]={'$like':'%'+_0x4b3d3c[_0x1ac3('0x34')]['filter']+'%'};return _0x3b5c1c;}})});}_0x541da0=_[_0x1ac3('0x40')]({},_0x541da0,_0x4b3d3c[_0x1ac3('0x41')]);var _0x5cec6b={'where':_0x541da0[_0x1ac3('0x3d')]};return db[_0x1ac3('0x2d')][_0x1ac3('0x20')](_0x5cec6b)[_0x1ac3('0x42')](function(_0x466a45){_0x4000b0[_0x1ac3('0x20')]=_0x466a45;if(_0x4b3d3c[_0x1ac3('0x34')][_0x1ac3('0x43')]){_0x541da0['include']=[{'all':!![]}];}return db[_0x1ac3('0x2d')][_0x1ac3('0x44')](_0x541da0);})[_0x1ac3('0x42')](function(_0x254a77){_0x4000b0[_0x1ac3('0x45')]=_0x254a77;return _0x4000b0;})[_0x1ac3('0x42')](respondWithFilteredResult(_0x61441d,_0x541da0))[_0x1ac3('0x46')](handleError(_0x61441d,null));};exports['show']=function(_0x4edc4d,_0x2c2099){var _0x3f60ca={'raw':![],'where':{'id':_0x4edc4d[_0x1ac3('0x47')]['id']}},_0x4972d1={};_0x4972d1[_0x1ac3('0x31')]=_['keys'](db[_0x1ac3('0x2d')]['rawAttributes']);_0x4972d1[_0x1ac3('0x34')]=_[_0x1ac3('0x35')](_0x4edc4d[_0x1ac3('0x34')]);_0x4972d1[_0x1ac3('0x3e')]=_['intersection'](_0x4972d1[_0x1ac3('0x31')],_0x4972d1[_0x1ac3('0x34')]);_0x3f60ca[_0x1ac3('0x37')]=_[_0x1ac3('0x36')](_0x4972d1[_0x1ac3('0x31')],qs['fields'](_0x4edc4d[_0x1ac3('0x34')][_0x1ac3('0x38')]));_0x3f60ca[_0x1ac3('0x37')]=_0x3f60ca[_0x1ac3('0x37')]['length']?_0x3f60ca[_0x1ac3('0x37')]:_0x4972d1[_0x1ac3('0x31')];if(_0x4edc4d[_0x1ac3('0x34')][_0x1ac3('0x43')]){_0x3f60ca['include']=[{'all':!![]}];}_0x3f60ca=_[_0x1ac3('0x40')]({},_0x3f60ca,_0x4edc4d[_0x1ac3('0x41')]);return db[_0x1ac3('0x2d')][_0x1ac3('0x48')](_0x3f60ca)['then'](handleEntityNotFound(_0x2c2099,null))[_0x1ac3('0x42')](respondWithResult(_0x2c2099,null))['catch'](handleError(_0x2c2099,null));};exports[_0x1ac3('0x49')]=function(_0x10bcaf,_0x2e3347){return db[_0x1ac3('0x2d')][_0x1ac3('0x49')](_0x10bcaf[_0x1ac3('0x4a')],{})[_0x1ac3('0x42')](respondWithResult(_0x2e3347,0xc9))['catch'](handleError(_0x2e3347,null));};exports['update']=function(_0xe8f33c,_0x249c2d){if(_0xe8f33c[_0x1ac3('0x4a')]['id']){delete _0xe8f33c['body']['id'];}delete _0xe8f33c['body']['duration'];delete _0xe8f33c[_0x1ac3('0x4a')][_0x1ac3('0x4b')];delete _0xe8f33c['body'][_0x1ac3('0x4c')];delete _0xe8f33c[_0x1ac3('0x4a')][_0x1ac3('0x4d')];return db[_0x1ac3('0x2d')]['find']({'where':{'id':_0xe8f33c['params']['id']}})[_0x1ac3('0x42')](handleEntityNotFound(_0x249c2d,null))[_0x1ac3('0x42')](saveUpdates(_0xe8f33c['body'],null))[_0x1ac3('0x42')](respondWithResult(_0x249c2d,null))['catch'](handleError(_0x249c2d,null));};exports['describe']=function(_0x2d628d,_0x220dd0){return db['ScreenRecording'][_0x1ac3('0x4e')]()['then'](respondWithResult(_0x220dd0,null))[_0x1ac3('0x46')](handleError(_0x220dd0,null));};exports[_0x1ac3('0x4f')]=function(_0x3586b9,_0x3a0320,_0x34ad43){var _0x40e9c7=require(_0x1ac3('0x50'));var _0x331374=![];var _0xeb7e49={};if(_0x3586b9[_0x1ac3('0x34')][_0x1ac3('0x2f')]&&_0x3586b9['query']['type']===_0x1ac3('0x51')){_0xeb7e49[_0x1ac3('0x51')]=_0x3586b9[_0x1ac3('0x47')]['id'];}else{_0xeb7e49['id']=_0x3586b9[_0x1ac3('0x47')]['id'];}return db[_0x1ac3('0x2d')][_0x1ac3('0x48')]({'where':_0xeb7e49,'attributes':['id',_0x1ac3('0x4d')],'raw':!![]})[_0x1ac3('0x42')](handleEntityNotFound(_0x3a0320,null))[_0x1ac3('0x42')](function(_0x3149f6){if(_0x3149f6){var _0x541bba=path[_0x1ac3('0x52')](config[_0x1ac3('0x53')],_0x1ac3('0x54'),_0x3149f6[_0x1ac3('0x4d')]);var _0x20c195=util['format'](_0x1ac3('0x55'),_0x541bba);if(fs[_0x1ac3('0x56')](_0x20c195)){_0x331374=!![];return _0x40e9c7['decryptFile'](_0x20c195,_0x541bba,config['secrets']['recording'])[_0x1ac3('0x42')](function(){return _0x3149f6;});}return _0x3149f6;}})[_0x1ac3('0x42')](function(_0x2a1f66){if(_0x2a1f66){var _0x5ad546=path[_0x1ac3('0x52')](config['root'],'server/files/screen_recordings',_0x2a1f66['value']);if(!fs['existsSync'](_0x5ad546)){throw new db[(_0x1ac3('0x57'))][(_0x1ac3('0x58'))](_0x1ac3('0x59'));}if(_0x2a1f66[_0x1ac3('0x5a')]){return _0x3a0320[_0x1ac3('0x4f')](_0x5ad546,_0x2a1f66['filename']+path[_0x1ac3('0x5b')](_0x5ad546),function(){if(_0x331374){fs[_0x1ac3('0x5c')](_0x5ad546);}});}else{return _0x3a0320['download'](_0x5ad546,function(_0x2bcb4b){if(_0x331374){fs[_0x1ac3('0x5c')](_0x5ad546);}});}}})[_0x1ac3('0x46')](function(_0x2e79b2){if(_0x2e79b2[_0x1ac3('0x5d')]==='ScreenRecording\x20not\x20found'){_0x3a0320[_0x1ac3('0x1b')](0x194)[_0x1ac3('0x2a')](_0x1ac3('0x5e'));}else{return handleError(_0x3a0320,null);}});};exports[_0x1ac3('0x27')]=function(_0x4cfa04,_0x19407a){return db[_0x1ac3('0x2d')][_0x1ac3('0x48')]({'where':{'id':_0x4cfa04[_0x1ac3('0x47')]['id']}})[_0x1ac3('0x42')](function(_0x1ac283){if(_['isNil'](_0x1ac283)){throw new ReferenceError('Entity\x20not\x20found');}return _0x1ac283;})['then'](function(_0x582fe2){var _0x3b930b=path['join'](config[_0x1ac3('0x53')],_0x1ac3('0x54'),_0x582fe2[_0x1ac3('0x4d')]);logger[_0x1ac3('0x5f')](_0x1ac3('0x60'),_0x3b930b);if(!_[_0x1ac3('0x61')](_0x582fe2['value'])&&fs[_0x1ac3('0x56')](_0x3b930b)){logger[_0x1ac3('0x5f')](_0x1ac3('0x62')+_0x3b930b+_0x1ac3('0x63'));fs['unlinkSync'](_0x3b930b);}_0x3b930b=_0x3b930b+_0x1ac3('0x64');if(!_[_0x1ac3('0x61')](_0x582fe2[_0x1ac3('0x4d')])&&fs[_0x1ac3('0x56')](_0x3b930b)){logger[_0x1ac3('0x5f')]('File:\x20\x22'+_0x3b930b+_0x1ac3('0x63'));fs['unlinkSync'](_0x3b930b);}return _0x582fe2;})['then'](function(_0x402507){if(!_0x402507)throw new InternalError();return _0x402507[_0x1ac3('0x27')]();})[_0x1ac3('0x42')](function(){_0x19407a[_0x1ac3('0x1b')](0xcc)[_0x1ac3('0x1c')]();})[_0x1ac3('0x46')](handleError(_0x19407a,null));};
\ No newline at end of file
index 2cae379..1519a5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3df=['api','bluebird','request-promise','../../config/environment','./screenRecording.attributes','define','screen_recordings','interactionid','lodash','util'];(function(_0x2f75e1,_0x23432a){var _0x47a1e7=function(_0x547b6e){while(--_0x547b6e){_0x2f75e1['push'](_0x2f75e1['shift']());}};_0x47a1e7(++_0x23432a);}(_0xb3df,0x166));var _0xfb3d=function(_0x367715,_0x450e1f){_0x367715=_0x367715-0x0;var _0x372c41=_0xb3df[_0x367715];return _0x372c41;};'use strict';var _=require(_0xfb3d('0x0'));var util=require(_0xfb3d('0x1'));var logger=require('../../config/logger')(_0xfb3d('0x2'));var moment=require('moment');var BPromise=require(_0xfb3d('0x3'));var rp=require(_0xfb3d('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xfb3d('0x5'));var attributes=require(_0xfb3d('0x6'));module['exports']=function(_0x6295d,_0x1ac34a){return _0x6295d[_0xfb3d('0x7')]('ScreenRecording',attributes,{'tableName':_0xfb3d('0x8'),'paranoid':![],'indexes':[{'name':'interactionid','fields':[_0xfb3d('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x03c1=['./screenRecording.attributes','exports','define','ScreenRecording','screen_recordings','interactionid','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x03c1,0xc9));var _0x103c=function(_0x12d951,_0x249808){_0x12d951=_0x12d951-0x0;var _0x44de17=_0x03c1[_0x12d951];return _0x44de17;};'use strict';var _=require(_0x103c('0x0'));var util=require('util');var logger=require(_0x103c('0x1'))(_0x103c('0x2'));var moment=require(_0x103c('0x3'));var BPromise=require(_0x103c('0x4'));var rp=require(_0x103c('0x5'));var fs=require('fs');var path=require(_0x103c('0x6'));var rimraf=require(_0x103c('0x7'));var config=require(_0x103c('0x8'));var attributes=require(_0x103c('0x9'));module[_0x103c('0xa')]=function(_0x29a51e,_0x2e9a26){return _0x29a51e[_0x103c('0xb')](_0x103c('0xc'),attributes,{'tableName':_0x103c('0xd'),'paranoid':![],'indexes':[{'name':_0x103c('0xe'),'fields':['interactionid']}],'timestamps':!![]});};
\ No newline at end of file
index dfd8e11..7208c05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46be=['ScreenRecording,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','ScreenRecording,\x20%s,\x20%s','request\x20sent'];(function(_0x7d4a69,_0x38653f){var _0x2a416e=function(_0x998cd7){while(--_0x998cd7){_0x7d4a69['push'](_0x7d4a69['shift']());}};_0x2a416e(++_0x38653f);}(_0x46be,0x83));var _0xe46b=function(_0x210818,_0x56a728){_0x210818=_0x210818-0x0;var _0x2a7cb3=_0x46be[_0x210818];return _0x2a7cb3;};'use strict';var _=require(_0xe46b('0x0'));var util=require(_0xe46b('0x1'));var moment=require(_0xe46b('0x2'));var BPromise=require('bluebird');var rs=require(_0xe46b('0x3'));var fs=require('fs');var Redis=require(_0xe46b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xe46b('0x5'));var logger=require(_0xe46b('0x6'))(_0xe46b('0x7'));var config=require(_0xe46b('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xe46b('0x9')][_0xe46b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d9d65,_0x41ffd0,_0x482c08){return new BPromise(function(_0x3f631f,_0x1571f0){return client[_0xe46b('0xb')](_0x1d9d65,_0x482c08)[_0xe46b('0xc')](function(_0xec4793){logger[_0xe46b('0xd')](_0xe46b('0xe'),_0x41ffd0,_0xe46b('0xf'));logger['debug'](_0xe46b('0x10'),_0x41ffd0,'request\x20sent',JSON['stringify'](_0xec4793));if(_0xec4793[_0xe46b('0x11')]){if(_0xec4793[_0xe46b('0x11')][_0xe46b('0x12')]===0x1f4){logger[_0xe46b('0x11')]('ScreenRecording,\x20%s,\x20%s',_0x41ffd0,_0xec4793[_0xe46b('0x11')][_0xe46b('0x13')]);return _0x1571f0(_0xec4793[_0xe46b('0x11')][_0xe46b('0x13')]);}logger[_0xe46b('0x11')](_0xe46b('0xe'),_0x41ffd0,_0xec4793[_0xe46b('0x11')][_0xe46b('0x13')]);return _0x3f631f(_0xec4793[_0xe46b('0x11')][_0xe46b('0x13')]);}else{logger[_0xe46b('0xd')](_0xe46b('0xe'),_0x41ffd0,_0xe46b('0xf'));_0x3f631f(_0xec4793[_0xe46b('0x14')][_0xe46b('0x13')]);}})['catch'](function(_0x293a40){logger[_0xe46b('0x11')](_0xe46b('0xe'),_0x41ffd0,_0x293a40);_0x1571f0(_0x293a40);});});}
\ No newline at end of file
+var _0x5358=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util'];(function(_0x487c74,_0x110cbb){var _0x4ef088=function(_0x124f65){while(--_0x124f65){_0x487c74['push'](_0x487c74['shift']());}};_0x4ef088(++_0x110cbb);}(_0x5358,0x166));var _0x8535=function(_0x536086,_0x943c5f){_0x536086=_0x536086-0x0;var _0xc2f102=_0x5358[_0x536086];return _0xc2f102;};'use strict';var _=require(_0x8535('0x0'));var util=require(_0x8535('0x1'));var moment=require(_0x8535('0x2'));var BPromise=require(_0x8535('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8535('0x4'));var db=require(_0x8535('0x5'))['db'];var utils=require(_0x8535('0x6'));var logger=require(_0x8535('0x7'))(_0x8535('0x8'));var config=require(_0x8535('0x9'));var jayson=require(_0x8535('0xa'));var client=jayson[_0x8535('0xb')][_0x8535('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2fe70c,_0x40c3f6,_0xcf39f1){return new BPromise(function(_0x5a5687,_0x33211b){return client[_0x8535('0xd')](_0x2fe70c,_0xcf39f1)[_0x8535('0xe')](function(_0x3df240){logger[_0x8535('0xf')](_0x8535('0x10'),_0x40c3f6,_0x8535('0x11'));logger[_0x8535('0x12')](_0x8535('0x13'),_0x40c3f6,_0x8535('0x11'),JSON[_0x8535('0x14')](_0x3df240));if(_0x3df240['error']){if(_0x3df240[_0x8535('0x15')]['code']===0x1f4){logger[_0x8535('0x15')](_0x8535('0x10'),_0x40c3f6,_0x3df240[_0x8535('0x15')][_0x8535('0x16')]);return _0x33211b(_0x3df240[_0x8535('0x15')][_0x8535('0x16')]);}logger[_0x8535('0x15')](_0x8535('0x10'),_0x40c3f6,_0x3df240['error']['message']);return _0x5a5687(_0x3df240[_0x8535('0x15')][_0x8535('0x16')]);}else{logger[_0x8535('0xf')](_0x8535('0x10'),_0x40c3f6,_0x8535('0x11'));_0x5a5687(_0x3df240['result'][_0x8535('0x16')]);}})[_0x8535('0x17')](function(_0x2a2449){logger[_0x8535('0x15')](_0x8535('0x10'),_0x40c3f6,_0x2a2449);_0x33211b(_0x2a2449);});});}
\ No newline at end of file
index b22262a..80c6ca2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa706=['get','isAuthenticated','index','/now','getDate','show','/:id/logo','getLogo','/:id/logo_login','getLogoLogin','/:id/gdpr','gdpr','getPreferred','/:id/favicon','getFavicon','diskStorage','join','root','server/files/images/logos/','format','%s%s','logo','extname','originalname','single','addLogo','logologin','post','file','preferred','/:id/preferred','addPreferred','favicon','put','/:id','update','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./setting.controller'];(function(_0x5b7bcc,_0x28eafd){var _0x519791=function(_0x25eeab){while(--_0x25eeab){_0x5b7bcc['push'](_0x5b7bcc['shift']());}};_0x519791(++_0x28eafd);}(_0xa706,0x19d));var _0x6a70=function(_0xa9bcd3,_0x373cd1){_0xa9bcd3=_0xa9bcd3-0x0;var _0x46c15b=_0xa706[_0xa9bcd3];return _0x46c15b;};'use strict';var multer=require(_0x6a70('0x0'));var util=require(_0x6a70('0x1'));var path=require(_0x6a70('0x2'));var timeout=require(_0x6a70('0x3'));var express=require(_0x6a70('0x4'));var router=express[_0x6a70('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x6a70('0x6'));var interaction=require(_0x6a70('0x7'));var config=require(_0x6a70('0x8'));var controller=require(_0x6a70('0x9'));router[_0x6a70('0xa')]('/',auth[_0x6a70('0xb')](),controller[_0x6a70('0xc')]);router[_0x6a70('0xa')](_0x6a70('0xd'),controller[_0x6a70('0xe')]);router[_0x6a70('0xa')]('/:id',controller[_0x6a70('0xf')]);router[_0x6a70('0xa')](_0x6a70('0x10'),controller[_0x6a70('0x11')]);router[_0x6a70('0xa')](_0x6a70('0x12'),controller[_0x6a70('0x13')]);router[_0x6a70('0xa')](_0x6a70('0x14'),controller[_0x6a70('0x15')]);router['get']('/:id/preferred',controller[_0x6a70('0x16')]);router[_0x6a70('0xa')](_0x6a70('0x17'),controller[_0x6a70('0x18')]);var upload=multer({'storage':multer[_0x6a70('0x19')]({'destination':function(_0xad06af,_0x3981df,_0x1d3c31){_0x1d3c31(null,path[_0x6a70('0x1a')](config[_0x6a70('0x1b')],_0x6a70('0x1c')));},'filename':function(_0x64af9f,_0x323308,_0x586b49){_0x586b49(null,util[_0x6a70('0x1d')](_0x6a70('0x1e'),_0x6a70('0x1f'),path[_0x6a70('0x20')](_0x323308[_0x6a70('0x21')])));}})});router['post']('/:id/logo',upload[_0x6a70('0x22')]('file'),controller[_0x6a70('0x23')]);var upload=multer({'storage':multer[_0x6a70('0x19')]({'destination':function(_0x597e55,_0x11ecef,_0x4c4d18){_0x4c4d18(null,path[_0x6a70('0x1a')](config[_0x6a70('0x1b')],_0x6a70('0x1c')));},'filename':function(_0x5f281d,_0x494e02,_0x294dda){_0x294dda(null,util['format'](_0x6a70('0x1e'),_0x6a70('0x24'),path['extname'](_0x494e02[_0x6a70('0x21')])));}})});router[_0x6a70('0x25')](_0x6a70('0x12'),upload['single'](_0x6a70('0x26')),controller['addLogoLogin']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x38862a,_0x11738b,_0x5bcd11){_0x5bcd11(null,path[_0x6a70('0x1a')](config['root'],'server/files/images/logos/'));},'filename':function(_0x40f4c3,_0x596dc9,_0x1bb5d4){_0x1bb5d4(null,util[_0x6a70('0x1d')](_0x6a70('0x1e'),_0x6a70('0x27'),path[_0x6a70('0x20')](_0x596dc9[_0x6a70('0x21')])));}})});router[_0x6a70('0x25')](_0x6a70('0x28'),upload[_0x6a70('0x22')]('file'),controller[_0x6a70('0x29')]);var upload=multer({'storage':multer[_0x6a70('0x19')]({'destination':function(_0x40af25,_0x280959,_0x48700d){_0x48700d(null,path[_0x6a70('0x1a')](config[_0x6a70('0x1b')],_0x6a70('0x1c')));},'filename':function(_0x4a3065,_0x1af0e5,_0x70d958){_0x70d958(null,util[_0x6a70('0x1d')]('%s%s',_0x6a70('0x2a'),path[_0x6a70('0x20')](_0x1af0e5['originalname'])));}})});router[_0x6a70('0x25')](_0x6a70('0x17'),upload[_0x6a70('0x22')](_0x6a70('0x26')),controller['addFavicon']);router[_0x6a70('0x2b')](_0x6a70('0x2c'),auth[_0x6a70('0xb')](),controller[_0x6a70('0x2d')]);module[_0x6a70('0x2e')]=router;
\ No newline at end of file
+var _0x11fe=['Router','fs-extra','../../components/interaction/service','../../config/environment','./setting.controller','index','get','/now','getDate','/:id','show','/:id/logo','/:id/logo_login','getLogoLogin','/:id/gdpr','gdpr','/:id/preferred','getPreferred','getFavicon','diskStorage','join','server/files/images/logos/','logo','extname','originalname','post','single','file','root','%s%s','addLogoLogin','format','preferred','addPreferred','addFavicon','put','isAuthenticated','update','exports','multer','util','path','connect-timeout','express'];(function(_0x2d63f0,_0x3d6e1d){var _0xf0a3cd=function(_0xb9dd9d){while(--_0xb9dd9d){_0x2d63f0['push'](_0x2d63f0['shift']());}};_0xf0a3cd(++_0x3d6e1d);}(_0x11fe,0x15b));var _0xe11f=function(_0x1a7b7f,_0x5b56e3){_0x1a7b7f=_0x1a7b7f-0x0;var _0xbb6a56=_0x11fe[_0x1a7b7f];return _0xbb6a56;};'use strict';var multer=require(_0xe11f('0x0'));var util=require(_0xe11f('0x1'));var path=require(_0xe11f('0x2'));var timeout=require(_0xe11f('0x3'));var express=require(_0xe11f('0x4'));var router=express[_0xe11f('0x5')]();var fs_extra=require(_0xe11f('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xe11f('0x7'));var config=require(_0xe11f('0x8'));var controller=require(_0xe11f('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xe11f('0xa')]);router[_0xe11f('0xb')](_0xe11f('0xc'),controller[_0xe11f('0xd')]);router[_0xe11f('0xb')](_0xe11f('0xe'),controller[_0xe11f('0xf')]);router[_0xe11f('0xb')](_0xe11f('0x10'),controller['getLogo']);router['get'](_0xe11f('0x11'),controller[_0xe11f('0x12')]);router[_0xe11f('0xb')](_0xe11f('0x13'),controller[_0xe11f('0x14')]);router[_0xe11f('0xb')](_0xe11f('0x15'),controller[_0xe11f('0x16')]);router[_0xe11f('0xb')]('/:id/favicon',controller[_0xe11f('0x17')]);var upload=multer({'storage':multer[_0xe11f('0x18')]({'destination':function(_0x3a242b,_0x5a26be,_0x59efcc){_0x59efcc(null,path[_0xe11f('0x19')](config['root'],_0xe11f('0x1a')));},'filename':function(_0x34f640,_0x4e7505,_0x49733c){_0x49733c(null,util['format']('%s%s',_0xe11f('0x1b'),path[_0xe11f('0x1c')](_0x4e7505[_0xe11f('0x1d')])));}})});router[_0xe11f('0x1e')]('/:id/logo',upload[_0xe11f('0x1f')](_0xe11f('0x20')),controller['addLogo']);var upload=multer({'storage':multer[_0xe11f('0x18')]({'destination':function(_0x4741f9,_0x2f9517,_0x1d2f08){_0x1d2f08(null,path[_0xe11f('0x19')](config[_0xe11f('0x21')],_0xe11f('0x1a')));},'filename':function(_0x24e90e,_0x316df8,_0x161db5){_0x161db5(null,util['format'](_0xe11f('0x22'),'logologin',path[_0xe11f('0x1c')](_0x316df8[_0xe11f('0x1d')])));}})});router[_0xe11f('0x1e')](_0xe11f('0x11'),upload[_0xe11f('0x1f')]('file'),controller[_0xe11f('0x23')]);var upload=multer({'storage':multer[_0xe11f('0x18')]({'destination':function(_0x3b9dc3,_0x4286af,_0x473634){_0x473634(null,path['join'](config[_0xe11f('0x21')],_0xe11f('0x1a')));},'filename':function(_0x43e24c,_0x53d2b4,_0x1c50eb){_0x1c50eb(null,util[_0xe11f('0x24')](_0xe11f('0x22'),_0xe11f('0x25'),path[_0xe11f('0x1c')](_0x53d2b4['originalname'])));}})});router[_0xe11f('0x1e')](_0xe11f('0x15'),upload[_0xe11f('0x1f')](_0xe11f('0x20')),controller[_0xe11f('0x26')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x83752,_0x3ae15d,_0x3b83fc){_0x3b83fc(null,path['join'](config[_0xe11f('0x21')],_0xe11f('0x1a')));},'filename':function(_0x28e260,_0x2f779e,_0xa2dfae){_0xa2dfae(null,util[_0xe11f('0x24')](_0xe11f('0x22'),'favicon',path['extname'](_0x2f779e[_0xe11f('0x1d')])));}})});router[_0xe11f('0x1e')]('/:id/favicon',upload[_0xe11f('0x1f')]('file'),controller[_0xe11f('0x27')]);router[_0xe11f('0x28')]('/:id',auth[_0xe11f('0x29')](),controller[_0xe11f('0x2a')]);module[_0xe11f('0x2b')]=router;
\ No newline at end of file
index 33000d8..fda7d18 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(_0x4ffddc,_0x51260a){var _0x310418=function(_0x39bcfa){while(--_0x39bcfa){_0x4ffddc['push'](_0x4ffddc['shift']());}};_0x310418(++_0x51260a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x481bf7,_0x437f69){_0x481bf7=_0x481bf7-0x0;var _0x461787=_0xa9e0[_0x481bf7];return _0x461787;};'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 _0xa9e0=['BOOLEAN','alternate','UNSIGNED','sequelize','exports','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted'];(function(_0x5453c8,_0x4d1e2a){var _0x27676c=function(_0x2a52c4){while(--_0x2a52c4){_0x5453c8['push'](_0x5453c8['shift']());}};_0x27676c(++_0x4d1e2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xa9e0[_0x5b644e];return _0x49c6bf;};'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
index cce7b69..dc9e541 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa243=['VIRTUAL','options','include','findAll','rows','show','params','includeAll','find','body','file','logo','filename','addLogoLogin','loginLogo','../../config/license/util','getLogo','server/files/images/logos','getLicense','preferred','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','existsSync','join','root','toLower','default','custom','default_logo.svg','Sequelize','upperFirst','\x20not\x20found','download','default_loginLogo.svg','ValidationError','securePassword','getPreferred','default_preferred.png','default_favicon.ico','getDate','utcOffset','now','format','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','to-csv','ejs','fs-extra','squel','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','jayson/promise','client','http','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','destroy','sendStatus','stack','name','send','map','Setting','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge'];(function(_0x386c3e,_0x44a375){var _0x4b8e13=function(_0x583c8f){while(--_0x583c8f){_0x386c3e['push'](_0x386c3e['shift']());}};_0x4b8e13(++_0x44a375);}(_0xa243,0x19d));var _0x3a24=function(_0x44f544,_0xe9d98c){_0x44f544=_0x44f544-0x0;var _0x2c3fa0=_0xa243[_0x44f544];return _0x2c3fa0;};'use strict';var emlformat=require(_0x3a24('0x0'));var rimraf=require(_0x3a24('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3a24('0x2'));var rp=require(_0x3a24('0x3'));var moment=require('moment');var BPromise=require(_0x3a24('0x4'));var Mustache=require(_0x3a24('0x5'));var util=require('util');var path=require(_0x3a24('0x6'));var sox=require('sox');var csv=require(_0x3a24('0x7'));var ejs=require(_0x3a24('0x8'));var fs=require('fs');var fs_extra=require(_0x3a24('0x9'));var _=require('lodash');var squel=require(_0x3a24('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x3a24('0xb'));var toCsv=require('to-csv');var querystring=require(_0x3a24('0xc'));var Papa=require(_0x3a24('0xd'));var Redis=require('ioredis');var authService=require(_0x3a24('0xe'));var qs=require(_0x3a24('0xf'));var as=require(_0x3a24('0x10'));var hardwareService=require(_0x3a24('0x11'));var logger=require(_0x3a24('0x12'))(_0x3a24('0x13'));var utils=require(_0x3a24('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x3a24('0x15'))['db'];var jayson=require(_0x3a24('0x16'));var client=jayson[_0x3a24('0x17')][_0x3a24('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x2ede9d,_0x130355,_0x3d87a8,_0x5e0583){return new BPromise(function(_0xbb03e4,_0x35a279){var _0xfeaaa4=_0x5e0583||client;return _0xfeaaa4[_0x3a24('0x19')](_0x2ede9d,_0x3d87a8)[_0x3a24('0x1a')](function(_0x50e724){logger[_0x3a24('0x1b')](_0x3a24('0x1c'),_0x130355,_0x3a24('0x1d'));logger[_0x3a24('0x1e')](_0x3a24('0x1f'),_0x130355,_0x3a24('0x1d'),JSON[_0x3a24('0x20')](_0x50e724));if(_0x50e724[_0x3a24('0x21')]){if(_0x50e724[_0x3a24('0x21')][_0x3a24('0x22')]===0x1f4){logger['error'](_0x3a24('0x1c'),_0x130355,_0x50e724['error'][_0x3a24('0x23')]);return _0x35a279(_0x50e724[_0x3a24('0x21')][_0x3a24('0x23')]);}logger[_0x3a24('0x21')](_0x3a24('0x1c'),_0x130355,_0x50e724[_0x3a24('0x21')][_0x3a24('0x23')]);return _0xbb03e4(_0x50e724[_0x3a24('0x21')][_0x3a24('0x23')]);}else{logger[_0x3a24('0x1b')](_0x3a24('0x1c'),_0x130355,_0x3a24('0x1d'));_0xbb03e4(_0x50e724[_0x3a24('0x24')][_0x3a24('0x23')]);}})[_0x3a24('0x25')](function(_0x261ee2){logger[_0x3a24('0x21')](_0x3a24('0x1c'),_0x130355,_0x261ee2);_0x35a279(_0x261ee2);});});}function respondWithStatusCode(_0x4187d0,_0x3c06f7){_0x3c06f7=_0x3c06f7||0xcc;return function(_0x390a54){if(_0x390a54){return _0x4187d0['sendStatus'](_0x3c06f7);}return _0x4187d0[_0x3a24('0x26')](_0x3c06f7)['end']();};}function respondWithResult(_0x2eeef8,_0x4e9587){_0x4e9587=_0x4e9587||0xc8;return function(_0x3f8d7e){if(_0x3f8d7e){return _0x2eeef8['status'](_0x4e9587)[_0x3a24('0x27')](_0x3f8d7e);}};}function respondWithFilteredResult(_0x56c761,_0x1400f0){return function(_0x395cd2){if(_0x395cd2){var _0x32b0d6=typeof _0x1400f0['offset']===_0x3a24('0x28')&&typeof _0x1400f0[_0x3a24('0x29')]==='undefined';var _0x855e7e=_0x395cd2[_0x3a24('0x2a')];var _0x29b356=_0x32b0d6?0x0:_0x1400f0[_0x3a24('0x2b')];var _0x288e92=_0x32b0d6?_0x395cd2[_0x3a24('0x2a')]:_0x1400f0[_0x3a24('0x2b')]+_0x1400f0[_0x3a24('0x29')];var _0x5e2cbb;if(_0x288e92>=_0x855e7e){_0x288e92=_0x855e7e;_0x5e2cbb=0xc8;}else{_0x5e2cbb=0xce;}_0x56c761[_0x3a24('0x26')](_0x5e2cbb);return _0x56c761[_0x3a24('0x2c')](_0x3a24('0x2d'),_0x29b356+'-'+_0x288e92+'/'+_0x855e7e)[_0x3a24('0x27')](_0x395cd2);}return null;};}function patchUpdates(_0x2e40ec){return function(_0x1014b0){try{jsonpatch[_0x3a24('0x2e')](_0x1014b0,_0x2e40ec,!![]);}catch(_0x282ae3){return BPromise['reject'](_0x282ae3);}return _0x1014b0[_0x3a24('0x2f')]();};}function saveUpdates(_0x554e9f,_0x1cc241){return function(_0x1f7598){if(_0x1f7598){return _0x1f7598[_0x3a24('0x30')](_0x554e9f)[_0x3a24('0x1a')](function(_0x22beb9){return _0x22beb9;});}return null;};}function removeEntity(_0x4ba8c2,_0x10a3ed){return function(_0x257491){if(_0x257491){return _0x257491[_0x3a24('0x31')]()['then'](function(){_0x4ba8c2[_0x3a24('0x26')](0xcc)['end']();});}};}function handleEntityNotFound(_0x6e6fa2,_0x1a7483){return function(_0x7b95d1){if(!_0x7b95d1){_0x6e6fa2[_0x3a24('0x32')](0x194);}return _0x7b95d1;};}function handleError(_0x384a87,_0x19f14a){_0x19f14a=_0x19f14a||0x1f4;return function(_0x4556ec){logger[_0x3a24('0x21')](_0x4556ec[_0x3a24('0x33')]);if(_0x4556ec[_0x3a24('0x34')]){delete _0x4556ec[_0x3a24('0x34')];}_0x384a87[_0x3a24('0x26')](_0x19f14a)[_0x3a24('0x35')](_0x4556ec);};}exports['index']=function(_0x18132d,_0x58153f){var _0xe162e8={},_0x4d14b2={},_0x521bcf={'count':0x0,'rows':[]};var _0x5cbac6=_[_0x3a24('0x36')](db[_0x3a24('0x37')][_0x3a24('0x38')],function(_0x3fe437){return{'name':_0x3fe437[_0x3a24('0x39')],'type':_0x3fe437['type'][_0x3a24('0x3a')]};});_0x4d14b2[_0x3a24('0x3b')]=_[_0x3a24('0x36')](_0x5cbac6,_0x3a24('0x34'));_0x4d14b2[_0x3a24('0x3c')]=_[_0x3a24('0x3d')](_0x18132d['query']);_0x4d14b2[_0x3a24('0x3e')]=_['intersection'](_0x4d14b2[_0x3a24('0x3b')],_0x4d14b2[_0x3a24('0x3c')]);_0xe162e8[_0x3a24('0x3f')]=_[_0x3a24('0x40')](_0x4d14b2[_0x3a24('0x3b')],qs[_0x3a24('0x41')](_0x18132d['query'][_0x3a24('0x41')]));_0xe162e8[_0x3a24('0x3f')]=_0xe162e8[_0x3a24('0x3f')][_0x3a24('0x42')]?_0xe162e8[_0x3a24('0x3f')]:_0x4d14b2[_0x3a24('0x3b')];if(!_0x18132d[_0x3a24('0x3c')][_0x3a24('0x43')](_0x3a24('0x44'))){_0xe162e8[_0x3a24('0x29')]=qs[_0x3a24('0x29')](_0x18132d['query']['limit']);_0xe162e8[_0x3a24('0x2b')]=qs[_0x3a24('0x2b')](_0x18132d['query']['offset']);}_0xe162e8[_0x3a24('0x45')]=qs[_0x3a24('0x46')](_0x18132d[_0x3a24('0x3c')]['sort']);_0xe162e8[_0x3a24('0x47')]=qs[_0x3a24('0x3e')](_[_0x3a24('0x48')](_0x18132d[_0x3a24('0x3c')],_0x4d14b2[_0x3a24('0x3e')]),_0x5cbac6);if(_0x18132d['query'][_0x3a24('0x49')]){_0xe162e8['where']=_[_0x3a24('0x4a')](_0xe162e8['where'],{'$or':_['map'](_0x5cbac6,function(_0x3fe52f){if(_0x3fe52f['type']!==_0x3a24('0x4b')){var _0x554b12={};_0x554b12[_0x3fe52f['name']]={'$like':'%'+_0x18132d['query'][_0x3a24('0x49')]+'%'};return _0x554b12;}})});}_0xe162e8=_['merge']({},_0xe162e8,_0x18132d[_0x3a24('0x4c')]);var _0x8cc97={'where':_0xe162e8[_0x3a24('0x47')]};return db[_0x3a24('0x37')]['count'](_0x8cc97)[_0x3a24('0x1a')](function(_0x56b0ea){_0x521bcf['count']=_0x56b0ea;if(_0x18132d[_0x3a24('0x3c')]['includeAll']){_0xe162e8[_0x3a24('0x4d')]=[{'all':!![]}];}return db[_0x3a24('0x37')][_0x3a24('0x4e')](_0xe162e8);})[_0x3a24('0x1a')](function(_0x33ea57){_0x521bcf[_0x3a24('0x4f')]=_0x33ea57;return _0x521bcf;})['then'](respondWithFilteredResult(_0x58153f,_0xe162e8))[_0x3a24('0x25')](handleError(_0x58153f,null));};exports[_0x3a24('0x50')]=function(_0x245d56,_0x52dca5){var _0x443fe3={'raw':![],'where':{'id':_0x245d56[_0x3a24('0x51')]['id']}},_0x1181e6={};_0x1181e6[_0x3a24('0x3b')]=_[_0x3a24('0x3d')](db['Setting']['rawAttributes']);_0x1181e6['query']=_[_0x3a24('0x3d')](_0x245d56[_0x3a24('0x3c')]);_0x1181e6['filters']=_['intersection'](_0x1181e6[_0x3a24('0x3b')],_0x1181e6['query']);_0x443fe3[_0x3a24('0x3f')]=_[_0x3a24('0x40')](_0x1181e6[_0x3a24('0x3b')],qs['fields'](_0x245d56[_0x3a24('0x3c')][_0x3a24('0x41')]));_0x443fe3['attributes']=_0x443fe3[_0x3a24('0x3f')]['length']?_0x443fe3['attributes']:_0x1181e6[_0x3a24('0x3b')];if(_0x245d56[_0x3a24('0x3c')][_0x3a24('0x52')]){_0x443fe3[_0x3a24('0x4d')]=[{'all':!![]}];}_0x443fe3=_['merge']({},_0x443fe3,_0x245d56[_0x3a24('0x4c')]);return db[_0x3a24('0x37')][_0x3a24('0x53')](_0x443fe3)[_0x3a24('0x1a')](handleEntityNotFound(_0x52dca5,null))['then'](respondWithResult(_0x52dca5,null))[_0x3a24('0x25')](handleError(_0x52dca5,null));};exports['update']=function(_0x1cfcea,_0xed5727){if(_0x1cfcea[_0x3a24('0x54')]['id']){delete _0x1cfcea['body']['id'];}return db[_0x3a24('0x37')][_0x3a24('0x53')]({'where':{'id':_0x1cfcea[_0x3a24('0x51')]['id']}})['then'](handleEntityNotFound(_0xed5727,null))[_0x3a24('0x1a')](saveUpdates(_0x1cfcea['body'],null))[_0x3a24('0x1a')](respondWithResult(_0xed5727,null))[_0x3a24('0x25')](handleError(_0xed5727,null));};exports['addLogo']=function(_0x56efce,_0x279ae1,_0x41b8c8){if(_0x56efce[_0x3a24('0x55')]&&_0x56efce['file']['filename']){_0x56efce[_0x3a24('0x54')][_0x3a24('0x56')]=_0x56efce[_0x3a24('0x55')][_0x3a24('0x57')];}return db[_0x3a24('0x37')]['find']({'where':{'id':_0x56efce[_0x3a24('0x51')]['id']}})[_0x3a24('0x1a')](handleEntityNotFound(_0x279ae1,null))[_0x3a24('0x1a')](saveUpdates(_0x56efce['body'],null))[_0x3a24('0x1a')](respondWithResult(_0x279ae1,null))[_0x3a24('0x25')](handleError(_0x279ae1,null));};exports[_0x3a24('0x58')]=function(_0x53fdd4,_0x585edd,_0x1baebc){if(_0x53fdd4[_0x3a24('0x55')]&&_0x53fdd4[_0x3a24('0x55')][_0x3a24('0x57')]){_0x53fdd4[_0x3a24('0x54')][_0x3a24('0x59')]=_0x53fdd4[_0x3a24('0x55')][_0x3a24('0x57')];}return db[_0x3a24('0x37')][_0x3a24('0x53')]({'where':{'id':_0x53fdd4[_0x3a24('0x51')]['id']}})['then'](handleEntityNotFound(_0x585edd,null))['then'](saveUpdates(_0x53fdd4[_0x3a24('0x54')],null))[_0x3a24('0x1a')](respondWithResult(_0x585edd,null))['catch'](handleError(_0x585edd,null));};var utilLicense=require(_0x3a24('0x5a'));exports[_0x3a24('0x5b')]=function(_0x5c4cea,_0x2c4e05,_0x40322b){var _0xc201d4=_0x3a24('0x5c');var _0x30a2bc={'custom':![]};return utilLicense[_0x3a24('0x5d')]()[_0x3a24('0x1a')](function(_0x674070){if(_0x674070){_0x30a2bc=_0x674070;}return db[_0x3a24('0x37')][_0x3a24('0x53')]({'where':{'id':_0x5c4cea[_0x3a24('0x51')]['id']},'attributes':[_0x3a24('0x56'),_0x3a24('0x59'),_0x3a24('0x5e'),_0x3a24('0x5f'),_0x3a24('0x60'),_0x3a24('0x61'),_0x3a24('0x62'),_0x3a24('0x63')],'raw':!![]});})[_0x3a24('0x1a')](handleEntityNotFound(_0x2c4e05,null))[_0x3a24('0x1a')](function(_0x1e8789){if(_0x1e8789){var _0x480dc4=_0x1e8789[_0x3a24('0x56')]&&fs[_0x3a24('0x64')](path[_0x3a24('0x65')](config[_0x3a24('0x66')],_0xc201d4,_[_0x3a24('0x67')](_0x1e8789[_0x3a24('0x56')])))?path[_0x3a24('0x65')](config[_0x3a24('0x66')],_0xc201d4,_['toLower'](_0x1e8789[_0x3a24('0x56')])):path[_0x3a24('0x65')](config[_0x3a24('0x66')],_0xc201d4,_[_0x3a24('0x67')]('default_logo.svg'));var _0x506f9f=_0x3a24('0x68')+_['upperFirst']('logo');if(_0x1e8789[_0x506f9f]||!_0x30a2bc[_0x3a24('0x69')]){_0x480dc4=path[_0x3a24('0x65')](config['root'],_0xc201d4,_[_0x3a24('0x67')](_0x3a24('0x6a')));}if(!fs[_0x3a24('0x64')](_0x480dc4)){throw new db[(_0x3a24('0x6b'))]['ValidationError'](_[_0x3a24('0x6c')](_0x3a24('0x56'))+_0x3a24('0x6d'));}return _0x2c4e05[_0x3a24('0x6e')](_0x480dc4);}})[_0x3a24('0x25')](handleError(_0x2c4e05,null));};var utilLicense=require('../../config/license/util');exports['getLogoLogin']=function(_0x457233,_0x464bb2,_0x3981d1){var _0x3926ee=_0x3a24('0x5c');var _0x322ec2={'custom':![]};return utilLicense[_0x3a24('0x5d')]()[_0x3a24('0x1a')](function(_0x2ae8c6){if(_0x2ae8c6){_0x322ec2=_0x2ae8c6;}return db[_0x3a24('0x37')][_0x3a24('0x53')]({'where':{'id':_0x457233[_0x3a24('0x51')]['id']},'attributes':[_0x3a24('0x56'),_0x3a24('0x59'),_0x3a24('0x5e'),_0x3a24('0x5f'),_0x3a24('0x60'),_0x3a24('0x61'),'defaultPreferred',_0x3a24('0x63')],'raw':!![]});})['then'](handleEntityNotFound(_0x464bb2,null))['then'](function(_0x1dc6be){if(_0x1dc6be){var _0xee94f2=_0x1dc6be[_0x3a24('0x59')]&&fs[_0x3a24('0x64')](path[_0x3a24('0x65')](config[_0x3a24('0x66')],_0x3926ee,_[_0x3a24('0x67')](_0x1dc6be['loginLogo'])))?path[_0x3a24('0x65')](config['root'],_0x3926ee,_[_0x3a24('0x67')](_0x1dc6be[_0x3a24('0x59')])):path['join'](config[_0x3a24('0x66')],_0x3926ee,_[_0x3a24('0x67')](_0x3a24('0x6f')));var _0x37a4c2='default'+_[_0x3a24('0x6c')](_0x3a24('0x59'));if(_0x1dc6be[_0x37a4c2]||!_0x322ec2[_0x3a24('0x69')]){_0xee94f2=path[_0x3a24('0x65')](config[_0x3a24('0x66')],_0x3926ee,_[_0x3a24('0x67')](_0x3a24('0x6f')));}if(!fs['existsSync'](_0xee94f2)){throw new db['Sequelize'][(_0x3a24('0x70'))](_[_0x3a24('0x6c')]('loginLogo')+_0x3a24('0x6d'));}return _0x464bb2[_0x3a24('0x6e')](_0xee94f2);}})['catch'](handleError(_0x464bb2,null));};exports['gdpr']=function(_0x4bc62b,_0x5aead2){return db[_0x3a24('0x37')][_0x3a24('0x53')]({'where':{'id':_0x4bc62b['params']['id']},'attributes':[_0x3a24('0x71')]})[_0x3a24('0x1a')](respondWithResult(_0x5aead2,null))[_0x3a24('0x25')](handleError(_0x5aead2,null));};exports['addPreferred']=function(_0x12e626,_0x167d42,_0x3f0f83){if(_0x12e626[_0x3a24('0x55')]&&_0x12e626[_0x3a24('0x55')][_0x3a24('0x57')]){_0x12e626[_0x3a24('0x54')]['preferred']=_0x12e626[_0x3a24('0x55')]['filename'];}return db[_0x3a24('0x37')][_0x3a24('0x53')]({'where':{'id':_0x12e626['params']['id']}})[_0x3a24('0x1a')](handleEntityNotFound(_0x167d42,null))[_0x3a24('0x1a')](saveUpdates(_0x12e626[_0x3a24('0x54')],null))[_0x3a24('0x1a')](respondWithResult(_0x167d42,null))[_0x3a24('0x25')](handleError(_0x167d42,null));};var utilLicense=require(_0x3a24('0x5a'));exports[_0x3a24('0x72')]=function(_0x206bdc,_0x21c2d1,_0x670e78){var _0x181463=_0x3a24('0x5c');var _0x1bf345={'custom':![]};return utilLicense[_0x3a24('0x5d')]()[_0x3a24('0x1a')](function(_0x59399c){if(_0x59399c){_0x1bf345=_0x59399c;}return db[_0x3a24('0x37')][_0x3a24('0x53')]({'where':{'id':_0x206bdc[_0x3a24('0x51')]['id']},'attributes':[_0x3a24('0x56'),_0x3a24('0x59'),_0x3a24('0x5e'),_0x3a24('0x5f'),_0x3a24('0x60'),_0x3a24('0x61'),'defaultPreferred','defaultFavicon'],'raw':!![]});})[_0x3a24('0x1a')](handleEntityNotFound(_0x21c2d1,null))['then'](function(_0x37c6a1){if(_0x37c6a1){var _0x29d621=_0x37c6a1[_0x3a24('0x5e')]&&fs[_0x3a24('0x64')](path[_0x3a24('0x65')](config['root'],_0x181463,_[_0x3a24('0x67')](_0x37c6a1['preferred'])))?path[_0x3a24('0x65')](config[_0x3a24('0x66')],_0x181463,_[_0x3a24('0x67')](_0x37c6a1['preferred'])):path[_0x3a24('0x65')](config[_0x3a24('0x66')],_0x181463,_[_0x3a24('0x67')]('default_preferred.png'));var _0x145e66=_0x3a24('0x68')+_[_0x3a24('0x6c')](_0x3a24('0x5e'));if(_0x37c6a1[_0x145e66]||!_0x1bf345['custom']||!_0x1bf345[_0x3a24('0x5e')]){_0x29d621=path[_0x3a24('0x65')](config[_0x3a24('0x66')],_0x181463,_[_0x3a24('0x67')](_0x3a24('0x73')));}if(!fs[_0x3a24('0x64')](_0x29d621)){throw new db[(_0x3a24('0x6b'))][(_0x3a24('0x70'))](_[_0x3a24('0x6c')](_0x3a24('0x5e'))+_0x3a24('0x6d'));}return _0x21c2d1[_0x3a24('0x6e')](_0x29d621);}})[_0x3a24('0x25')](handleError(_0x21c2d1,null));};exports['addFavicon']=function(_0x2aad6c,_0x5ee84f,_0x5f148f){if(_0x2aad6c[_0x3a24('0x55')]&&_0x2aad6c['file'][_0x3a24('0x57')]){_0x2aad6c[_0x3a24('0x54')][_0x3a24('0x5f')]=_0x2aad6c['file'][_0x3a24('0x57')];}return db[_0x3a24('0x37')][_0x3a24('0x53')]({'where':{'id':_0x2aad6c[_0x3a24('0x51')]['id']}})[_0x3a24('0x1a')](handleEntityNotFound(_0x5ee84f,null))['then'](saveUpdates(_0x2aad6c[_0x3a24('0x54')],null))[_0x3a24('0x1a')](respondWithResult(_0x5ee84f,null))[_0x3a24('0x25')](handleError(_0x5ee84f,null));};var utilLicense=require(_0x3a24('0x5a'));exports['getFavicon']=function(_0x4c3710,_0x593acb,_0x4c88e7){var _0x26827d=_0x3a24('0x5c');var _0x47dd27={'custom':![]};return utilLicense[_0x3a24('0x5d')]()[_0x3a24('0x1a')](function(_0x43bae3){if(_0x43bae3){_0x47dd27=_0x43bae3;}return db[_0x3a24('0x37')][_0x3a24('0x53')]({'where':{'id':_0x4c3710[_0x3a24('0x51')]['id']},'attributes':[_0x3a24('0x56'),_0x3a24('0x59'),_0x3a24('0x5e'),_0x3a24('0x5f'),_0x3a24('0x60'),_0x3a24('0x61'),_0x3a24('0x62'),_0x3a24('0x63')],'raw':!![]});})[_0x3a24('0x1a')](handleEntityNotFound(_0x593acb,null))[_0x3a24('0x1a')](function(_0x472916){if(_0x472916){var _0x16af6e=_0x472916[_0x3a24('0x5f')]&&fs[_0x3a24('0x64')](path['join'](config[_0x3a24('0x66')],_0x26827d,_[_0x3a24('0x67')](_0x472916[_0x3a24('0x5f')])))?path[_0x3a24('0x65')](config[_0x3a24('0x66')],_0x26827d,_[_0x3a24('0x67')](_0x472916['favicon'])):path[_0x3a24('0x65')](config[_0x3a24('0x66')],_0x26827d,_[_0x3a24('0x67')](_0x3a24('0x74')));var _0x36bac8=_0x3a24('0x68')+_[_0x3a24('0x6c')](_0x3a24('0x5f'));if(_0x472916[_0x36bac8]||!_0x47dd27['custom']){_0x16af6e=path['join'](config['root'],_0x26827d,_[_0x3a24('0x67')](_0x3a24('0x74')));}if(!fs[_0x3a24('0x64')](_0x16af6e)){throw new db['Sequelize'][(_0x3a24('0x70'))](_[_0x3a24('0x6c')]('favicon')+_0x3a24('0x6d'));}return _0x593acb[_0x3a24('0x6e')](_0x16af6e);}})['catch'](handleError(_0x593acb,null));};exports[_0x3a24('0x75')]=function(_0xa3de17,_0x4c6827){var _0x30e31b={'offset':moment()[_0x3a24('0x76')]()};_0x30e31b[_0x3a24('0x77')]=moment()['utcOffset'](_0x30e31b[_0x3a24('0x2b')])[_0x3a24('0x78')](_0x3a24('0x79'));return _0x4c6827['status'](0xc8)[_0x3a24('0x35')](_0x30e31b);};
\ No newline at end of file
+var _0xcb5e=['fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','desk.js','to-csv','querystring','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','destroy','sendStatus','stack','send','index','map','Setting','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','find','body','addLogo','file','filename','logo','loginLogo','getLicense','favicon','defaultLogo','defaultPreferred','defaultFavicon','existsSync','join','root','toLower','default_logo.svg','default','upperFirst','custom','Sequelize','ValidationError','download','getLogoLogin','server/files/images/logos','defaultLoginLogo','default_loginLogo.svg','\x20not\x20found','gdpr','securePassword','addPreferred','preferred','getPreferred','default_preferred.png','addFavicon','getFavicon','default_favicon.ico','utcOffset','now','format','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','rimraf','zip-dir'];(function(_0x1fb1c1,_0x4ebe69){var _0x1622df=function(_0x52b793){while(--_0x52b793){_0x1fb1c1['push'](_0x1fb1c1['shift']());}};_0x1622df(++_0x4ebe69);}(_0xcb5e,0x1dd));var _0xecb5=function(_0xc194b1,_0x2b2a82){_0xc194b1=_0xc194b1-0x0;var _0x43ea10=_0xcb5e[_0xc194b1];return _0x43ea10;};'use strict';var emlformat=require(_0xecb5('0x0'));var rimraf=require(_0xecb5('0x1'));var zipdir=require(_0xecb5('0x2'));var jsonpatch=require(_0xecb5('0x3'));var rp=require(_0xecb5('0x4'));var moment=require(_0xecb5('0x5'));var BPromise=require(_0xecb5('0x6'));var Mustache=require(_0xecb5('0x7'));var util=require(_0xecb5('0x8'));var path=require(_0xecb5('0x9'));var sox=require(_0xecb5('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xecb5('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xecb5('0xc'));var toCsv=require(_0xecb5('0xd'));var querystring=require(_0xecb5('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xecb5('0xf'));var hardwareService=require(_0xecb5('0x10'));var logger=require(_0xecb5('0x11'))(_0xecb5('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xecb5('0x13'));var db=require(_0xecb5('0x14'))['db'];var jayson=require(_0xecb5('0x15'));var client=jayson[_0xecb5('0x16')][_0xecb5('0x17')]({'port':0x232a});function respondWithRpcPromise(_0x506ae3,_0x1c842e,_0x2cbf00,_0x50ea52){return new BPromise(function(_0x266a6f,_0x3dde6c){var _0x435fbd=_0x50ea52||client;return _0x435fbd[_0xecb5('0x18')](_0x506ae3,_0x2cbf00)['then'](function(_0x5e71d4){logger['info'](_0xecb5('0x19'),_0x1c842e,_0xecb5('0x1a'));logger[_0xecb5('0x1b')](_0xecb5('0x1c'),_0x1c842e,_0xecb5('0x1a'),JSON['stringify'](_0x5e71d4));if(_0x5e71d4[_0xecb5('0x1d')]){if(_0x5e71d4[_0xecb5('0x1d')][_0xecb5('0x1e')]===0x1f4){logger[_0xecb5('0x1d')](_0xecb5('0x19'),_0x1c842e,_0x5e71d4[_0xecb5('0x1d')][_0xecb5('0x1f')]);return _0x3dde6c(_0x5e71d4['error'][_0xecb5('0x1f')]);}logger[_0xecb5('0x1d')](_0xecb5('0x19'),_0x1c842e,_0x5e71d4[_0xecb5('0x1d')][_0xecb5('0x1f')]);return _0x266a6f(_0x5e71d4[_0xecb5('0x1d')][_0xecb5('0x1f')]);}else{logger['info'](_0xecb5('0x19'),_0x1c842e,_0xecb5('0x1a'));_0x266a6f(_0x5e71d4[_0xecb5('0x20')][_0xecb5('0x1f')]);}})[_0xecb5('0x21')](function(_0x3ad983){logger['error'](_0xecb5('0x19'),_0x1c842e,_0x3ad983);_0x3dde6c(_0x3ad983);});});}function respondWithStatusCode(_0x4062ed,_0x24a1e1){_0x24a1e1=_0x24a1e1||0xcc;return function(_0x4fbefb){if(_0x4fbefb){return _0x4062ed['sendStatus'](_0x24a1e1);}return _0x4062ed[_0xecb5('0x22')](_0x24a1e1)[_0xecb5('0x23')]();};}function respondWithResult(_0xf28df1,_0x10faf8){_0x10faf8=_0x10faf8||0xc8;return function(_0x20ebd9){if(_0x20ebd9){return _0xf28df1[_0xecb5('0x22')](_0x10faf8)['json'](_0x20ebd9);}};}function respondWithFilteredResult(_0x5afd68,_0x25e929){return function(_0x4ddaef){if(_0x4ddaef){var _0x1c0317=typeof _0x25e929[_0xecb5('0x24')]===_0xecb5('0x25')&&typeof _0x25e929[_0xecb5('0x26')]===_0xecb5('0x25');var _0x146559=_0x4ddaef[_0xecb5('0x27')];var _0x52f270=_0x1c0317?0x0:_0x25e929['offset'];var _0x3fb4c8=_0x1c0317?_0x4ddaef[_0xecb5('0x27')]:_0x25e929['offset']+_0x25e929[_0xecb5('0x26')];var _0x45405b;if(_0x3fb4c8>=_0x146559){_0x3fb4c8=_0x146559;_0x45405b=0xc8;}else{_0x45405b=0xce;}_0x5afd68['status'](_0x45405b);return _0x5afd68[_0xecb5('0x28')](_0xecb5('0x29'),_0x52f270+'-'+_0x3fb4c8+'/'+_0x146559)[_0xecb5('0x2a')](_0x4ddaef);}return null;};}function patchUpdates(_0x372756){return function(_0xfc9108){try{jsonpatch[_0xecb5('0x2b')](_0xfc9108,_0x372756,!![]);}catch(_0x417c1b){return BPromise['reject'](_0x417c1b);}return _0xfc9108[_0xecb5('0x2c')]();};}function saveUpdates(_0x4ca4a8,_0x211ab6){return function(_0x44aedb){if(_0x44aedb){return _0x44aedb[_0xecb5('0x2d')](_0x4ca4a8)[_0xecb5('0x2e')](function(_0xe625b1){return _0xe625b1;});}return null;};}function removeEntity(_0x279242,_0x309365){return function(_0x5e658a){if(_0x5e658a){return _0x5e658a[_0xecb5('0x2f')]()[_0xecb5('0x2e')](function(){_0x279242[_0xecb5('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5f1f89,_0xb0414b){return function(_0x2e6ed3){if(!_0x2e6ed3){_0x5f1f89[_0xecb5('0x30')](0x194);}return _0x2e6ed3;};}function handleError(_0x2d61c0,_0x145cdf){_0x145cdf=_0x145cdf||0x1f4;return function(_0x46450e){logger[_0xecb5('0x1d')](_0x46450e[_0xecb5('0x31')]);if(_0x46450e['name']){delete _0x46450e['name'];}_0x2d61c0[_0xecb5('0x22')](_0x145cdf)[_0xecb5('0x32')](_0x46450e);};}exports[_0xecb5('0x33')]=function(_0x3d0732,_0x4d0761){var _0x44baa0={},_0x16ef09={},_0x350521={'count':0x0,'rows':[]};var _0x7b9fc2=_[_0xecb5('0x34')](db[_0xecb5('0x35')][_0xecb5('0x36')],function(_0x5e01af){return{'name':_0x5e01af[_0xecb5('0x37')],'type':_0x5e01af[_0xecb5('0x38')][_0xecb5('0x39')]};});_0x16ef09[_0xecb5('0x3a')]=_[_0xecb5('0x34')](_0x7b9fc2,'name');_0x16ef09['query']=_[_0xecb5('0x3b')](_0x3d0732['query']);_0x16ef09[_0xecb5('0x3c')]=_[_0xecb5('0x3d')](_0x16ef09[_0xecb5('0x3a')],_0x16ef09[_0xecb5('0x3e')]);_0x44baa0[_0xecb5('0x3f')]=_[_0xecb5('0x3d')](_0x16ef09[_0xecb5('0x3a')],qs[_0xecb5('0x40')](_0x3d0732[_0xecb5('0x3e')][_0xecb5('0x40')]));_0x44baa0[_0xecb5('0x3f')]=_0x44baa0[_0xecb5('0x3f')][_0xecb5('0x41')]?_0x44baa0[_0xecb5('0x3f')]:_0x16ef09[_0xecb5('0x3a')];if(!_0x3d0732[_0xecb5('0x3e')]['hasOwnProperty'](_0xecb5('0x42'))){_0x44baa0[_0xecb5('0x26')]=qs['limit'](_0x3d0732[_0xecb5('0x3e')][_0xecb5('0x26')]);_0x44baa0['offset']=qs['offset'](_0x3d0732['query'][_0xecb5('0x24')]);}_0x44baa0[_0xecb5('0x43')]=qs[_0xecb5('0x44')](_0x3d0732[_0xecb5('0x3e')][_0xecb5('0x44')]);_0x44baa0[_0xecb5('0x45')]=qs['filters'](_['pick'](_0x3d0732['query'],_0x16ef09['filters']),_0x7b9fc2);if(_0x3d0732['query'][_0xecb5('0x46')]){_0x44baa0[_0xecb5('0x45')]=_[_0xecb5('0x47')](_0x44baa0['where'],{'$or':_[_0xecb5('0x34')](_0x7b9fc2,function(_0x24b629){if(_0x24b629[_0xecb5('0x38')]!==_0xecb5('0x48')){var _0x4e8868={};_0x4e8868[_0x24b629['name']]={'$like':'%'+_0x3d0732[_0xecb5('0x3e')][_0xecb5('0x46')]+'%'};return _0x4e8868;}})});}_0x44baa0=_[_0xecb5('0x47')]({},_0x44baa0,_0x3d0732[_0xecb5('0x49')]);var _0x24dee5={'where':_0x44baa0[_0xecb5('0x45')]};return db[_0xecb5('0x35')]['count'](_0x24dee5)['then'](function(_0x513aec){_0x350521['count']=_0x513aec;if(_0x3d0732[_0xecb5('0x3e')][_0xecb5('0x4a')]){_0x44baa0[_0xecb5('0x4b')]=[{'all':!![]}];}return db[_0xecb5('0x35')][_0xecb5('0x4c')](_0x44baa0);})['then'](function(_0x48610f){_0x350521[_0xecb5('0x4d')]=_0x48610f;return _0x350521;})[_0xecb5('0x2e')](respondWithFilteredResult(_0x4d0761,_0x44baa0))[_0xecb5('0x21')](handleError(_0x4d0761,null));};exports['show']=function(_0x5060d1,_0x179dfd){var _0x1076ce={'raw':![],'where':{'id':_0x5060d1[_0xecb5('0x4e')]['id']}},_0x570ce1={};_0x570ce1[_0xecb5('0x3a')]=_[_0xecb5('0x3b')](db['Setting'][_0xecb5('0x36')]);_0x570ce1[_0xecb5('0x3e')]=_[_0xecb5('0x3b')](_0x5060d1['query']);_0x570ce1[_0xecb5('0x3c')]=_[_0xecb5('0x3d')](_0x570ce1[_0xecb5('0x3a')],_0x570ce1[_0xecb5('0x3e')]);_0x1076ce[_0xecb5('0x3f')]=_[_0xecb5('0x3d')](_0x570ce1[_0xecb5('0x3a')],qs[_0xecb5('0x40')](_0x5060d1[_0xecb5('0x3e')][_0xecb5('0x40')]));_0x1076ce['attributes']=_0x1076ce['attributes'][_0xecb5('0x41')]?_0x1076ce[_0xecb5('0x3f')]:_0x570ce1['model'];if(_0x5060d1['query'][_0xecb5('0x4a')]){_0x1076ce[_0xecb5('0x4b')]=[{'all':!![]}];}_0x1076ce=_[_0xecb5('0x47')]({},_0x1076ce,_0x5060d1[_0xecb5('0x49')]);return db[_0xecb5('0x35')][_0xecb5('0x4f')](_0x1076ce)[_0xecb5('0x2e')](handleEntityNotFound(_0x179dfd,null))['then'](respondWithResult(_0x179dfd,null))[_0xecb5('0x21')](handleError(_0x179dfd,null));};exports['update']=function(_0x967e28,_0x4ff9e4){if(_0x967e28['body']['id']){delete _0x967e28['body']['id'];}return db['Setting'][_0xecb5('0x4f')]({'where':{'id':_0x967e28['params']['id']}})['then'](handleEntityNotFound(_0x4ff9e4,null))[_0xecb5('0x2e')](saveUpdates(_0x967e28[_0xecb5('0x50')],null))[_0xecb5('0x2e')](respondWithResult(_0x4ff9e4,null))[_0xecb5('0x21')](handleError(_0x4ff9e4,null));};exports[_0xecb5('0x51')]=function(_0x3a0ee7,_0x20714b,_0x561cc1){if(_0x3a0ee7[_0xecb5('0x52')]&&_0x3a0ee7[_0xecb5('0x52')][_0xecb5('0x53')]){_0x3a0ee7[_0xecb5('0x50')][_0xecb5('0x54')]=_0x3a0ee7[_0xecb5('0x52')][_0xecb5('0x53')];}return db[_0xecb5('0x35')][_0xecb5('0x4f')]({'where':{'id':_0x3a0ee7[_0xecb5('0x4e')]['id']}})[_0xecb5('0x2e')](handleEntityNotFound(_0x20714b,null))['then'](saveUpdates(_0x3a0ee7['body'],null))['then'](respondWithResult(_0x20714b,null))[_0xecb5('0x21')](handleError(_0x20714b,null));};exports['addLogoLogin']=function(_0x3c157a,_0x292048,_0x546492){if(_0x3c157a[_0xecb5('0x52')]&&_0x3c157a[_0xecb5('0x52')][_0xecb5('0x53')]){_0x3c157a[_0xecb5('0x50')][_0xecb5('0x55')]=_0x3c157a[_0xecb5('0x52')][_0xecb5('0x53')];}return db[_0xecb5('0x35')][_0xecb5('0x4f')]({'where':{'id':_0x3c157a['params']['id']}})[_0xecb5('0x2e')](handleEntityNotFound(_0x292048,null))[_0xecb5('0x2e')](saveUpdates(_0x3c157a['body'],null))['then'](respondWithResult(_0x292048,null))[_0xecb5('0x21')](handleError(_0x292048,null));};var utilLicense=require(_0xecb5('0x13'));exports['getLogo']=function(_0x4824d6,_0x2ccc5d,_0x5e097d){var _0x37032b='server/files/images/logos';var _0x223357={'custom':![]};return utilLicense[_0xecb5('0x56')]()[_0xecb5('0x2e')](function(_0x2639f7){if(_0x2639f7){_0x223357=_0x2639f7;}return db[_0xecb5('0x35')][_0xecb5('0x4f')]({'where':{'id':_0x4824d6[_0xecb5('0x4e')]['id']},'attributes':['logo',_0xecb5('0x55'),'preferred',_0xecb5('0x57'),_0xecb5('0x58'),'defaultLoginLogo',_0xecb5('0x59'),_0xecb5('0x5a')],'raw':!![]});})['then'](handleEntityNotFound(_0x2ccc5d,null))[_0xecb5('0x2e')](function(_0x349992){if(_0x349992){var _0x359216=_0x349992[_0xecb5('0x54')]&&fs[_0xecb5('0x5b')](path[_0xecb5('0x5c')](config[_0xecb5('0x5d')],_0x37032b,_['toLower'](_0x349992[_0xecb5('0x54')])))?path['join'](config[_0xecb5('0x5d')],_0x37032b,_[_0xecb5('0x5e')](_0x349992[_0xecb5('0x54')])):path[_0xecb5('0x5c')](config[_0xecb5('0x5d')],_0x37032b,_[_0xecb5('0x5e')](_0xecb5('0x5f')));var _0x1a9808=_0xecb5('0x60')+_[_0xecb5('0x61')](_0xecb5('0x54'));if(_0x349992[_0x1a9808]||!_0x223357[_0xecb5('0x62')]){_0x359216=path[_0xecb5('0x5c')](config[_0xecb5('0x5d')],_0x37032b,_[_0xecb5('0x5e')](_0xecb5('0x5f')));}if(!fs[_0xecb5('0x5b')](_0x359216)){throw new db[(_0xecb5('0x63'))][(_0xecb5('0x64'))](_[_0xecb5('0x61')](_0xecb5('0x54'))+'\x20not\x20found');}return _0x2ccc5d[_0xecb5('0x65')](_0x359216);}})[_0xecb5('0x21')](handleError(_0x2ccc5d,null));};var utilLicense=require('../../config/license/util');exports[_0xecb5('0x66')]=function(_0x475b8e,_0x190dc3,_0x3e0c4a){var _0x5a5460=_0xecb5('0x67');var _0x274e4b={'custom':![]};return utilLicense['getLicense']()[_0xecb5('0x2e')](function(_0x410a01){if(_0x410a01){_0x274e4b=_0x410a01;}return db[_0xecb5('0x35')][_0xecb5('0x4f')]({'where':{'id':_0x475b8e[_0xecb5('0x4e')]['id']},'attributes':[_0xecb5('0x54'),_0xecb5('0x55'),'preferred','favicon',_0xecb5('0x58'),_0xecb5('0x68'),_0xecb5('0x59'),_0xecb5('0x5a')],'raw':!![]});})[_0xecb5('0x2e')](handleEntityNotFound(_0x190dc3,null))[_0xecb5('0x2e')](function(_0x55a63b){if(_0x55a63b){var _0xbe5c59=_0x55a63b[_0xecb5('0x55')]&&fs[_0xecb5('0x5b')](path[_0xecb5('0x5c')](config[_0xecb5('0x5d')],_0x5a5460,_[_0xecb5('0x5e')](_0x55a63b[_0xecb5('0x55')])))?path[_0xecb5('0x5c')](config['root'],_0x5a5460,_['toLower'](_0x55a63b['loginLogo'])):path[_0xecb5('0x5c')](config[_0xecb5('0x5d')],_0x5a5460,_[_0xecb5('0x5e')](_0xecb5('0x69')));var _0x557787=_0xecb5('0x60')+_['upperFirst'](_0xecb5('0x55'));if(_0x55a63b[_0x557787]||!_0x274e4b[_0xecb5('0x62')]){_0xbe5c59=path['join'](config[_0xecb5('0x5d')],_0x5a5460,_[_0xecb5('0x5e')](_0xecb5('0x69')));}if(!fs['existsSync'](_0xbe5c59)){throw new db[(_0xecb5('0x63'))]['ValidationError'](_['upperFirst'](_0xecb5('0x55'))+_0xecb5('0x6a'));}return _0x190dc3[_0xecb5('0x65')](_0xbe5c59);}})[_0xecb5('0x21')](handleError(_0x190dc3,null));};exports[_0xecb5('0x6b')]=function(_0x1c62f3,_0x13c604){return db['Setting']['find']({'where':{'id':_0x1c62f3[_0xecb5('0x4e')]['id']},'attributes':[_0xecb5('0x6c')]})['then'](respondWithResult(_0x13c604,null))[_0xecb5('0x21')](handleError(_0x13c604,null));};exports[_0xecb5('0x6d')]=function(_0x92f1d9,_0x476fea,_0x348bf5){if(_0x92f1d9[_0xecb5('0x52')]&&_0x92f1d9['file'][_0xecb5('0x53')]){_0x92f1d9['body'][_0xecb5('0x6e')]=_0x92f1d9[_0xecb5('0x52')]['filename'];}return db[_0xecb5('0x35')][_0xecb5('0x4f')]({'where':{'id':_0x92f1d9[_0xecb5('0x4e')]['id']}})[_0xecb5('0x2e')](handleEntityNotFound(_0x476fea,null))[_0xecb5('0x2e')](saveUpdates(_0x92f1d9['body'],null))[_0xecb5('0x2e')](respondWithResult(_0x476fea,null))['catch'](handleError(_0x476fea,null));};var utilLicense=require('../../config/license/util');exports[_0xecb5('0x6f')]=function(_0x149c2a,_0x8e049c,_0x228fff){var _0x17b84a=_0xecb5('0x67');var _0x3013a3={'custom':![]};return utilLicense[_0xecb5('0x56')]()[_0xecb5('0x2e')](function(_0x398727){if(_0x398727){_0x3013a3=_0x398727;}return db['Setting'][_0xecb5('0x4f')]({'where':{'id':_0x149c2a[_0xecb5('0x4e')]['id']},'attributes':[_0xecb5('0x54'),_0xecb5('0x55'),_0xecb5('0x6e'),_0xecb5('0x57'),'defaultLogo',_0xecb5('0x68'),_0xecb5('0x59'),_0xecb5('0x5a')],'raw':!![]});})[_0xecb5('0x2e')](handleEntityNotFound(_0x8e049c,null))[_0xecb5('0x2e')](function(_0x23cd6d){if(_0x23cd6d){var _0x29fa82=_0x23cd6d[_0xecb5('0x6e')]&&fs[_0xecb5('0x5b')](path['join'](config[_0xecb5('0x5d')],_0x17b84a,_['toLower'](_0x23cd6d[_0xecb5('0x6e')])))?path[_0xecb5('0x5c')](config[_0xecb5('0x5d')],_0x17b84a,_[_0xecb5('0x5e')](_0x23cd6d[_0xecb5('0x6e')])):path[_0xecb5('0x5c')](config[_0xecb5('0x5d')],_0x17b84a,_['toLower']('default_preferred.png'));var _0x45c273=_0xecb5('0x60')+_[_0xecb5('0x61')](_0xecb5('0x6e'));if(_0x23cd6d[_0x45c273]||!_0x3013a3['custom']||!_0x3013a3['preferred']){_0x29fa82=path[_0xecb5('0x5c')](config['root'],_0x17b84a,_['toLower'](_0xecb5('0x70')));}if(!fs[_0xecb5('0x5b')](_0x29fa82)){throw new db[(_0xecb5('0x63'))][(_0xecb5('0x64'))](_['upperFirst'](_0xecb5('0x6e'))+_0xecb5('0x6a'));}return _0x8e049c[_0xecb5('0x65')](_0x29fa82);}})[_0xecb5('0x21')](handleError(_0x8e049c,null));};exports[_0xecb5('0x71')]=function(_0x79f680,_0x24ded7,_0x91333d){if(_0x79f680[_0xecb5('0x52')]&&_0x79f680[_0xecb5('0x52')][_0xecb5('0x53')]){_0x79f680['body'][_0xecb5('0x57')]=_0x79f680[_0xecb5('0x52')][_0xecb5('0x53')];}return db['Setting']['find']({'where':{'id':_0x79f680[_0xecb5('0x4e')]['id']}})['then'](handleEntityNotFound(_0x24ded7,null))[_0xecb5('0x2e')](saveUpdates(_0x79f680[_0xecb5('0x50')],null))['then'](respondWithResult(_0x24ded7,null))[_0xecb5('0x21')](handleError(_0x24ded7,null));};var utilLicense=require('../../config/license/util');exports[_0xecb5('0x72')]=function(_0x32e4a9,_0x7fbca,_0x35919f){var _0x3b6fc4=_0xecb5('0x67');var _0x565fb0={'custom':![]};return utilLicense[_0xecb5('0x56')]()[_0xecb5('0x2e')](function(_0x48c001){if(_0x48c001){_0x565fb0=_0x48c001;}return db[_0xecb5('0x35')][_0xecb5('0x4f')]({'where':{'id':_0x32e4a9[_0xecb5('0x4e')]['id']},'attributes':['logo',_0xecb5('0x55'),_0xecb5('0x6e'),_0xecb5('0x57'),'defaultLogo',_0xecb5('0x68'),_0xecb5('0x59'),_0xecb5('0x5a')],'raw':!![]});})[_0xecb5('0x2e')](handleEntityNotFound(_0x7fbca,null))[_0xecb5('0x2e')](function(_0x204797){if(_0x204797){var _0x28633d=_0x204797[_0xecb5('0x57')]&&fs[_0xecb5('0x5b')](path[_0xecb5('0x5c')](config[_0xecb5('0x5d')],_0x3b6fc4,_[_0xecb5('0x5e')](_0x204797[_0xecb5('0x57')])))?path[_0xecb5('0x5c')](config['root'],_0x3b6fc4,_[_0xecb5('0x5e')](_0x204797[_0xecb5('0x57')])):path['join'](config['root'],_0x3b6fc4,_[_0xecb5('0x5e')](_0xecb5('0x73')));var _0x15da19=_0xecb5('0x60')+_[_0xecb5('0x61')](_0xecb5('0x57'));if(_0x204797[_0x15da19]||!_0x565fb0['custom']){_0x28633d=path[_0xecb5('0x5c')](config[_0xecb5('0x5d')],_0x3b6fc4,_[_0xecb5('0x5e')](_0xecb5('0x73')));}if(!fs[_0xecb5('0x5b')](_0x28633d)){throw new db[(_0xecb5('0x63'))]['ValidationError'](_['upperFirst'](_0xecb5('0x57'))+_0xecb5('0x6a'));}return _0x7fbca[_0xecb5('0x65')](_0x28633d);}})['catch'](handleError(_0x7fbca,null));};exports['getDate']=function(_0x2c3acb,_0x41e905){var _0x456406={'offset':moment()[_0xecb5('0x74')]()};_0x456406[_0xecb5('0x75')]=moment()[_0xecb5('0x74')](_0x456406[_0xecb5('0x24')])[_0xecb5('0x76')](_0xecb5('0x77'));return _0x41e905['status'](0xc8)[_0xecb5('0x32')](_0x456406);};
\ No newline at end of file
index b43718b..b83088b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./setting.attributes','exports','Setting','util'];(function(_0xa9aaee,_0x17aff5){var _0x5bdbc6=function(_0x31615c){while(--_0x31615c){_0xa9aaee['push'](_0xa9aaee['shift']());}};_0x5bdbc6(++_0x17aff5);}(_0xedd9,0xfc));var _0x9edd=function(_0x5b2a14,_0x333e93){_0x5b2a14=_0x5b2a14-0x0;var _0x505782=_0xedd9[_0x5b2a14];return _0x505782;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var logger=require(_0x9edd('0x1'))(_0x9edd('0x2'));var moment=require(_0x9edd('0x3'));var BPromise=require(_0x9edd('0x4'));var rp=require(_0x9edd('0x5'));var fs=require('fs');var path=require(_0x9edd('0x6'));var rimraf=require(_0x9edd('0x7'));var config=require('../../config/environment');var attributes=require(_0x9edd('0x8'));module[_0x9edd('0x9')]=function(_0x268f9e,_0x34c1a7){return _0x268f9e['define'](_0x9edd('0xa'),attributes,{'tableName':'settings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xedd9=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./setting.attributes','exports','Setting','util'];(function(_0x51a951,_0x29042b){var _0x1db824=function(_0x13db94){while(--_0x13db94){_0x51a951['push'](_0x51a951['shift']());}};_0x1db824(++_0x29042b);}(_0xedd9,0xfc));var _0x9edd=function(_0x3d1f32,_0x36a3dc){_0x3d1f32=_0x3d1f32-0x0;var _0x5a7969=_0xedd9[_0x3d1f32];return _0x5a7969;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var logger=require(_0x9edd('0x1'))(_0x9edd('0x2'));var moment=require(_0x9edd('0x3'));var BPromise=require(_0x9edd('0x4'));var rp=require(_0x9edd('0x5'));var fs=require('fs');var path=require(_0x9edd('0x6'));var rimraf=require(_0x9edd('0x7'));var config=require('../../config/environment');var attributes=require(_0x9edd('0x8'));module[_0x9edd('0x9')]=function(_0x268f9e,_0x34c1a7){return _0x268f9e['define'](_0x9edd('0xa'),attributes,{'tableName':'settings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index db7eace..30e4d75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dea=['stringify','error','message','Setting,\x20%s,\x20%s','catch','ShowSetting','find','options','where','attributes','map','model','include','lodash','util','moment','randomstring','ioredis','../../mysqldb','jayson/promise','http','request','then','info','debug','request\x20sent'];(function(_0x11f3d1,_0x2977b2){var _0x21ad67=function(_0x2ca858){while(--_0x2ca858){_0x11f3d1['push'](_0x11f3d1['shift']());}};_0x21ad67(++_0x2977b2);}(_0x6dea,0x1ad));var _0xa6de=function(_0x48dc00,_0x186606){_0x48dc00=_0x48dc00-0x0;var _0x219fb8=_0x6dea[_0x48dc00];return _0x219fb8;};'use strict';var _=require(_0xa6de('0x0'));var util=require(_0xa6de('0x1'));var moment=require(_0xa6de('0x2'));var BPromise=require('bluebird');var rs=require(_0xa6de('0x3'));var fs=require('fs');var Redis=require(_0xa6de('0x4'));var db=require(_0xa6de('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xa6de('0x6'));var client=jayson['client'][_0xa6de('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x449f69,_0x376404,_0x42631e){return new BPromise(function(_0x38cbe7,_0x5f24c3){return client[_0xa6de('0x8')](_0x449f69,_0x42631e)[_0xa6de('0x9')](function(_0x22b796){logger[_0xa6de('0xa')]('Setting,\x20%s,\x20%s',_0x376404,'request\x20sent');logger[_0xa6de('0xb')]('Setting,\x20%s,\x20%s,\x20%s',_0x376404,_0xa6de('0xc'),JSON[_0xa6de('0xd')](_0x22b796));if(_0x22b796['error']){if(_0x22b796[_0xa6de('0xe')]['code']===0x1f4){logger['error']('Setting,\x20%s,\x20%s',_0x376404,_0x22b796['error'][_0xa6de('0xf')]);return _0x5f24c3(_0x22b796['error']['message']);}logger[_0xa6de('0xe')](_0xa6de('0x10'),_0x376404,_0x22b796[_0xa6de('0xe')][_0xa6de('0xf')]);return _0x38cbe7(_0x22b796[_0xa6de('0xe')]['message']);}else{logger['info'](_0xa6de('0x10'),_0x376404,'request\x20sent');_0x38cbe7(_0x22b796['result'][_0xa6de('0xf')]);}})[_0xa6de('0x11')](function(_0x1a8eb2){logger[_0xa6de('0xe')]('Setting,\x20%s,\x20%s',_0x376404,_0x1a8eb2);_0x5f24c3(_0x1a8eb2);});});}exports[_0xa6de('0x12')]=function(_0x4d1700){var _0x161507=this;return new Promise(function(_0x578db7,_0x53a914){return db['Setting'][_0xa6de('0x13')]({'raw':_0x4d1700['options']?_0x4d1700[_0xa6de('0x14')]['raw']===undefined?!![]:![]:!![],'where':_0x4d1700[_0xa6de('0x14')]?_0x4d1700[_0xa6de('0x14')][_0xa6de('0x15')]||null:null,'attributes':_0x4d1700[_0xa6de('0x14')]?_0x4d1700[_0xa6de('0x14')][_0xa6de('0x16')]||null:null,'include':_0x4d1700[_0xa6de('0x14')]?_0x4d1700[_0xa6de('0x14')]['include']?_[_0xa6de('0x17')](_0x4d1700[_0xa6de('0x14')]['include'],function(_0x2a9a1c){return{'model':db[_0x2a9a1c[_0xa6de('0x18')]],'as':_0x2a9a1c['as'],'attributes':_0x2a9a1c['attributes'],'include':_0x2a9a1c[_0xa6de('0x19')]?_[_0xa6de('0x17')](_0x2a9a1c[_0xa6de('0x19')],function(_0x49b743){return{'model':db[_0x49b743[_0xa6de('0x18')]],'as':_0x49b743['as'],'attributes':_0x49b743[_0xa6de('0x16')],'include':_0x49b743['include']?_[_0xa6de('0x17')](_0x49b743[_0xa6de('0x19')],function(_0x4d0961){return{'model':db[_0x4d0961[_0xa6de('0x18')]],'as':_0x4d0961['as'],'attributes':_0x4d0961[_0xa6de('0x16')]};}):[]};}):[]};}):[]:[]})[_0xa6de('0x9')](function(_0x567e3c){logger[_0xa6de('0xa')](_0xa6de('0x12'),_0x4d1700);logger[_0xa6de('0xb')](_0xa6de('0x12'),_0x4d1700,JSON[_0xa6de('0xd')](_0x567e3c));_0x578db7(_0x567e3c);})[_0xa6de('0x11')](function(_0x379018){logger[_0xa6de('0xe')]('ShowSetting',_0x379018[_0xa6de('0xf')],_0x4d1700);_0x53a914(_0x161507[_0xa6de('0xe')](0x1f4,_0x379018[_0xa6de('0xf')]));});});};
\ No newline at end of file
+var _0x48ee=['where','attributes','include','model','map','then','info','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','Setting,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','ShowSetting','Setting','find','options','raw'];(function(_0x4d691d,_0x26f2de){var _0x49d939=function(_0x3fca04){while(--_0x3fca04){_0x4d691d['push'](_0x4d691d['shift']());}};_0x49d939(++_0x26f2de);}(_0x48ee,0x130));var _0xe48e=function(_0x1fa9aa,_0x4e62af){_0x1fa9aa=_0x1fa9aa-0x0;var _0x391d3e=_0x48ee[_0x1fa9aa];return _0x391d3e;};'use strict';var _=require(_0xe48e('0x0'));var util=require('util');var moment=require(_0xe48e('0x1'));var BPromise=require(_0xe48e('0x2'));var rs=require(_0xe48e('0x3'));var fs=require('fs');var Redis=require(_0xe48e('0x4'));var db=require(_0xe48e('0x5'))['db'];var utils=require(_0xe48e('0x6'));var logger=require('../../config/logger')(_0xe48e('0x7'));var config=require(_0xe48e('0x8'));var jayson=require(_0xe48e('0x9'));var client=jayson['client'][_0xe48e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x53bbf7,_0x9f3452,_0x3a6d7e){return new BPromise(function(_0x149ccc,_0x127aed){return client[_0xe48e('0xb')](_0x53bbf7,_0x3a6d7e)['then'](function(_0x43c7c9){logger['info'](_0xe48e('0xc'),_0x9f3452,_0xe48e('0xd'));logger[_0xe48e('0xe')]('Setting,\x20%s,\x20%s,\x20%s',_0x9f3452,'request\x20sent',JSON[_0xe48e('0xf')](_0x43c7c9));if(_0x43c7c9['error']){if(_0x43c7c9[_0xe48e('0x10')][_0xe48e('0x11')]===0x1f4){logger['error'](_0xe48e('0xc'),_0x9f3452,_0x43c7c9[_0xe48e('0x10')][_0xe48e('0x12')]);return _0x127aed(_0x43c7c9[_0xe48e('0x10')][_0xe48e('0x12')]);}logger[_0xe48e('0x10')](_0xe48e('0xc'),_0x9f3452,_0x43c7c9['error'][_0xe48e('0x12')]);return _0x149ccc(_0x43c7c9['error'][_0xe48e('0x12')]);}else{logger['info'](_0xe48e('0xc'),_0x9f3452,_0xe48e('0xd'));_0x149ccc(_0x43c7c9[_0xe48e('0x13')][_0xe48e('0x12')]);}})[_0xe48e('0x14')](function(_0x55959a){logger[_0xe48e('0x10')](_0xe48e('0xc'),_0x9f3452,_0x55959a);_0x127aed(_0x55959a);});});}exports[_0xe48e('0x15')]=function(_0x328717){var _0x450725=this;return new Promise(function(_0x1eb6bb,_0xe9d27e){return db[_0xe48e('0x16')][_0xe48e('0x17')]({'raw':_0x328717[_0xe48e('0x18')]?_0x328717[_0xe48e('0x18')][_0xe48e('0x19')]===undefined?!![]:![]:!![],'where':_0x328717[_0xe48e('0x18')]?_0x328717[_0xe48e('0x18')][_0xe48e('0x1a')]||null:null,'attributes':_0x328717[_0xe48e('0x18')]?_0x328717['options'][_0xe48e('0x1b')]||null:null,'include':_0x328717[_0xe48e('0x18')]?_0x328717['options'][_0xe48e('0x1c')]?_['map'](_0x328717['options']['include'],function(_0xff45a7){return{'model':db[_0xff45a7[_0xe48e('0x1d')]],'as':_0xff45a7['as'],'attributes':_0xff45a7[_0xe48e('0x1b')],'include':_0xff45a7[_0xe48e('0x1c')]?_['map'](_0xff45a7[_0xe48e('0x1c')],function(_0x2b17a2){return{'model':db[_0x2b17a2[_0xe48e('0x1d')]],'as':_0x2b17a2['as'],'attributes':_0x2b17a2[_0xe48e('0x1b')],'include':_0x2b17a2[_0xe48e('0x1c')]?_[_0xe48e('0x1e')](_0x2b17a2[_0xe48e('0x1c')],function(_0x34308f){return{'model':db[_0x34308f[_0xe48e('0x1d')]],'as':_0x34308f['as'],'attributes':_0x34308f[_0xe48e('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xe48e('0x1f')](function(_0x35f606){logger[_0xe48e('0x20')](_0xe48e('0x15'),_0x328717);logger[_0xe48e('0xe')](_0xe48e('0x15'),_0x328717,JSON[_0xe48e('0xf')](_0x35f606));_0x1eb6bb(_0x35f606);})['catch'](function(_0x1b08a9){logger['error'](_0xe48e('0x15'),_0x1b08a9[_0xe48e('0x12')],_0x328717);_0xe9d27e(_0x450725[_0xe48e('0x10')](0x1f4,_0x1b08a9[_0xe48e('0x12')]));});});};
\ No newline at end of file
index 7c88bdb..58ea4a5 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','./smsAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status','statusGet','/:id/users','post','create','/:id/notify','notify','put','delete','removeAnswers','path','connect-timeout','express'];(function(_0x3d32a0,_0x423826){var _0x44e2ce=function(_0x58406b){while(--_0x58406b){_0x3d32a0['push'](_0x3d32a0['shift']());}};_0x44e2ce(++_0x423826);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x22382f,_0x5c2e54){_0x22382f=_0x22382f-0x0;var _0x35213b=_0x7fbe[_0x22382f];return _0x35213b;};'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('0x9')](_0xe7fb('0x13'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x14')]);router[_0xe7fb('0x9')](_0xe7fb('0x15'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x16')]);router['get'](_0xe7fb('0x17'),controller[_0xe7fb('0x18')]);router['get'](_0xe7fb('0x19'),auth[_0xe7fb('0xa')](),controller['getAgents']);router[_0xe7fb('0x1a')]('/',auth['isAuthenticated'](),controller[_0xe7fb('0x1b')]);router[_0xe7fb('0x1a')](_0xe7fb('0xf'),auth[_0xe7fb('0xa')](),controller['addDisposition']);router[_0xe7fb('0x1a')]('/:id/canned_answers',auth[_0xe7fb('0xa')](),controller['addAnswer']);router[_0xe7fb('0x1a')](_0xe7fb('0x1c'),controller[_0xe7fb('0x1d')]);router[_0xe7fb('0x1a')]('/:id/applications',auth[_0xe7fb('0xa')](),controller['addApplications']);router[_0xe7fb('0x1a')]('/:id/send',auth[_0xe7fb('0xa')](),controller['send']);router[_0xe7fb('0x1a')](_0xe7fb('0x17'),controller['status']);router[_0xe7fb('0x1a')](_0xe7fb('0x19'),auth[_0xe7fb('0xa')](),controller['addAgents']);router[_0xe7fb('0x1e')](_0xe7fb('0xe'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xe7fb('0xe'),auth['isAuthenticated'](),controller['destroy']);router[_0xe7fb('0x1f')](_0xe7fb('0xf'),auth[_0xe7fb('0xa')](),controller['removeDispositions']);router[_0xe7fb('0x1f')](_0xe7fb('0x11'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x20')]);router[_0xe7fb('0x1f')](_0xe7fb('0x19'),auth[_0xe7fb('0xa')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0x326f=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','isAuthenticated','/describe','describe','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','getInteractions','/:id/status','getAgents','post','create','addDisposition','addAnswer','/:id/notify','notify','addApplications','send','status','addAgents','put','update','delete','/:id','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer'];(function(_0x230284,_0x1e5b98){var _0x379935=function(_0x17872a){while(--_0x17872a){_0x230284['push'](_0x230284['shift']());}};_0x379935(++_0x1e5b98);}(_0x326f,0xd1));var _0xf326=function(_0x363576,_0x209884){_0x363576=_0x363576-0x0;var _0x597e7c=_0x326f[_0x363576];return _0x597e7c;};'use strict';var multer=require(_0xf326('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xf326('0x1'));var express=require(_0xf326('0x2'));var router=express[_0xf326('0x3')]();var fs_extra=require(_0xf326('0x4'));var auth=require(_0xf326('0x5'));var interaction=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var controller=require(_0xf326('0x8'));router[_0xf326('0x9')]('/',auth[_0xf326('0xa')](),controller['index']);router[_0xf326('0x9')](_0xf326('0xb'),auth[_0xf326('0xa')](),controller[_0xf326('0xc')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xf326('0xd')]);router[_0xf326('0x9')](_0xf326('0xe'),auth[_0xf326('0xa')](),controller[_0xf326('0xf')]);router['get'](_0xf326('0x10'),auth['isAuthenticated'](),controller[_0xf326('0x11')]);router['get'](_0xf326('0x12'),auth['isAuthenticated'](),controller[_0xf326('0x13')]);router[_0xf326('0x9')]('/:id/interactions',auth[_0xf326('0xa')](),controller[_0xf326('0x14')]);router[_0xf326('0x9')](_0xf326('0x15'),controller['statusGet']);router[_0xf326('0x9')]('/:id/users',auth['isAuthenticated'](),controller[_0xf326('0x16')]);router[_0xf326('0x17')]('/',auth[_0xf326('0xa')](),controller[_0xf326('0x18')]);router[_0xf326('0x17')](_0xf326('0xe'),auth[_0xf326('0xa')](),controller[_0xf326('0x19')]);router['post'](_0xf326('0x10'),auth[_0xf326('0xa')](),controller[_0xf326('0x1a')]);router[_0xf326('0x17')](_0xf326('0x1b'),controller[_0xf326('0x1c')]);router['post']('/:id/applications',auth['isAuthenticated'](),controller[_0xf326('0x1d')]);router[_0xf326('0x17')]('/:id/send',auth['isAuthenticated'](),controller[_0xf326('0x1e')]);router['post']('/:id/status',controller[_0xf326('0x1f')]);router[_0xf326('0x17')]('/:id/users',auth['isAuthenticated'](),controller[_0xf326('0x20')]);router[_0xf326('0x21')]('/:id',auth[_0xf326('0xa')](),controller[_0xf326('0x22')]);router[_0xf326('0x23')](_0xf326('0x24'),auth[_0xf326('0xa')](),controller[_0xf326('0x25')]);router['delete']('/:id/dispositions',auth['isAuthenticated'](),controller[_0xf326('0x26')]);router[_0xf326('0x23')](_0xf326('0x10'),auth[_0xf326('0xa')](),controller[_0xf326('0x27')]);router[_0xf326('0x23')]('/:id/users',auth[_0xf326('0xa')](),controller[_0xf326('0x28')]);module[_0xf326('0x29')]=router;
\ No newline at end of file
index 705cfa5..e3d774a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc130=['setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','name','generate','twilio','skebby','connectel','clicksend','clickatell','bandwidth','csc','infobip','intelepeer','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue'];(function(_0x4bcdca,_0x4baa29){var _0x3478e8=function(_0x424e8c){while(--_0x424e8c){_0x4bcdca['push'](_0x4bcdca['shift']());}};_0x3478e8(++_0x4baa29);}(_0xc130,0xf5));var _0x0c13=function(_0x1212a4,_0x446201){_0x1212a4=_0x1212a4-0x0;var _0x499dd7=_0xc130[_0x1212a4];return _0x499dd7;};'use strict';var Sequelize=require(_0x0c13('0x0'));var rs=require('randomstring');module[_0x0c13('0x1')]={'name':{'type':Sequelize[_0x0c13('0x2')],'unique':_0x0c13('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x0c13('0x2')],'allowNull':![]},'remote':{'type':Sequelize[_0x0c13('0x2')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x0c13('0x4')]();}},'phone':{'type':Sequelize[_0x0c13('0x2')]},'type':{'type':Sequelize['ENUM'](_0x0c13('0x5'),_0x0c13('0x6'),_0x0c13('0x7'),_0x0c13('0x8'),'plivo',_0x0c13('0x9'),_0x0c13('0xa'),_0x0c13('0xb'),_0x0c13('0xc'),_0x0c13('0xd'))},'accountSid':{'type':Sequelize[_0x0c13('0x2')]},'authId':{'type':Sequelize[_0x0c13('0x2')]},'authToken':{'type':Sequelize[_0x0c13('0x2')]},'smsMethod':{'type':Sequelize['ENUM']('SI','TI','GP')},'username':{'type':Sequelize[_0x0c13('0x2')]},'password':{'type':Sequelize[_0x0c13('0x2')]},'apiKey':{'type':Sequelize[_0x0c13('0x2')]},'applicationId':{'type':Sequelize[_0x0c13('0x2')]},'accountId':{'type':Sequelize['STRING']},'senderString':{'type':Sequelize[_0x0c13('0x2')]},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x0c13('0x2')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x0c13('0xe');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x0c13('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x0c13('0x10')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x0c13('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x0c13('0x2')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x0c13('0xf')],'comment':_0x0c13('0x11')},'mandatoryDisposition':{'type':Sequelize[_0x0c13('0x10')],'defaultValue':![],'comment':_0x0c13('0x12'),'set':function(_0x881b28){if(!_0x881b28)this[_0x0c13('0x13')](_0x0c13('0x14'),null);this[_0x0c13('0x13')](_0x0c13('0x15'),_0x881b28);}}};
\ No newline at end of file
+var _0x1863=['Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','generate','ENUM','twilio','skebby','connectel','clicksend','clickatell','csc','intelepeer','BOOLEAN','TEXT','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'];(function(_0x11608d,_0x280396){var _0x98f29a=function(_0x12d419){while(--_0x12d419){_0x11608d['push'](_0x11608d['shift']());}};_0x98f29a(++_0x280396);}(_0x1863,0xcc));var _0x3186=function(_0x2e78e9,_0x42957c){_0x2e78e9=_0x2e78e9-0x0;var _0x35aad4=_0x1863[_0x2e78e9];return _0x35aad4;};'use strict';var Sequelize=require(_0x3186('0x0'));var rs=require('randomstring');module[_0x3186('0x1')]={'name':{'type':Sequelize[_0x3186('0x2')],'unique':'name','allowNull':![]},'key':{'type':Sequelize[_0x3186('0x2')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize[_0x3186('0x2')],'defaultValue':function(){return rs[_0x3186('0x3')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x3186('0x4')](_0x3186('0x5'),_0x3186('0x6'),_0x3186('0x7'),_0x3186('0x8'),'plivo',_0x3186('0x9'),'bandwidth',_0x3186('0xa'),'infobip',_0x3186('0xb'))},'accountSid':{'type':Sequelize['STRING']},'authId':{'type':Sequelize[_0x3186('0x2')]},'authToken':{'type':Sequelize[_0x3186('0x2')]},'smsMethod':{'type':Sequelize[_0x3186('0x4')]('SI','TI','GP')},'username':{'type':Sequelize[_0x3186('0x2')]},'password':{'type':Sequelize[_0x3186('0x2')]},'apiKey':{'type':Sequelize[_0x3186('0x2')]},'applicationId':{'type':Sequelize['STRING']},'accountId':{'type':Sequelize['STRING']},'senderString':{'type':Sequelize[_0x3186('0x2')]},'deliveryReport':{'type':Sequelize[_0x3186('0xc')],'defaultValue':![]},'description':{'type':Sequelize[_0x3186('0x2')]},'notificationTemplate':{'type':Sequelize[_0x3186('0xd')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x3186('0xc')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x3186('0xc')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x3186('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x3186('0xc')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x3186('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x3186('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x3186('0x2')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x3186('0xe')],'comment':_0x3186('0xf')},'mandatoryDisposition':{'type':Sequelize[_0x3186('0xc')],'defaultValue':![],'comment':_0x3186('0x10'),'set':function(_0x3022a9){if(!_0x3022a9)this[_0x3186('0x11')](_0x3186('0x12'),null);this['setDataValue'](_0x3186('0x13'),_0x3022a9);}}};
\ No newline at end of file
index 51268e0..7eae0a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10d0=['SmsAccount','type','model','query','keys','filters','intersection','attributes','fields','nolimit','sort','merge','where','filter','options','include','rows','catch','show','params','Pause','rawAttributes','includeAll','find','create','body','user','role','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addDisposition','SmsAccountId','Disposition','getDispositions','length','hasOwnProperty','order','pick','findAll','removeDispositions','addAnswer','CannedAnswer','getAnswers','findOne','removeAnswers','ids','notify','sms','SmsApplication','orderBy','priority','account','Applications','describe','ValidationError','updatedAt','createdAt','ListId','mobile','twilio','from','From','Body','messageId','MessageSid','skebby','sender','text','message_id','plivo','Text','MessageUUID','results','csc','originatingAddress','clickatell','fromNumber','replyMessageId','bandwidth','intelepeer','refid','isNil','Sequelize','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','DESC','list','omit','Contacts','defaults','contact','SmsInteraction','spread','interaction','created','applications','push','close','unmanaged','*,*,*,*','SmsMessage','ContactId','AttachmentId','UserId','User','unshift','agent','startRouting','entity\x20found','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','bulkCreate','findAndCountAll','finally','getApplications','getInteractions','CmContact','Contact','Owner','internal','Tag','Tags','color','tag','List','out','Messages','dataValues','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','connectel','requestid','statusInt','clicksend','status_code','groupName','redif','DELIVERED','error_code','infobip','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','ACCEPTD','state','message-id','addAgents','userSmsAccount:save','removeAgents','emit','userSmsAccount:remove','getAgents','zip-dir','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./smsAccount.socket','register','jayson/promise','client','then','info','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsAccount,\x20%s,\x20%s','message','result','status','end','json','offset','undefined','count','limit','set','save','update','destroy','get','SmsAccounts','UserProfileResource','sendStatus','stack','name','send','index','mandatoryDispositionPause','map'];(function(_0x279e4e,_0x605486){var _0xf59f81=function(_0x507630){while(--_0x507630){_0x279e4e['push'](_0x279e4e['shift']());}};_0xf59f81(++_0x605486);}(_0x10d0,0xa2));var _0x010d=function(_0xdc0953,_0x34fe23){_0xdc0953=_0xdc0953-0x0;var _0xe77f90=_0x10d0[_0xdc0953];return _0xe77f90;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x010d('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x010d('0x1'));var moment=require(_0x010d('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x010d('0x3'));var util=require('util');var path=require(_0x010d('0x4'));var sox=require(_0x010d('0x5'));var csv=require(_0x010d('0x6'));var ejs=require(_0x010d('0x7'));var fs=require('fs');var fs_extra=require(_0x010d('0x8'));var _=require(_0x010d('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x010d('0xa'));var deskjs=require(_0x010d('0xb'));var toCsv=require(_0x010d('0x6'));var querystring=require(_0x010d('0xc'));var Papa=require('papaparse');var Redis=require(_0x010d('0xd'));var authService=require(_0x010d('0xe'));var qs=require(_0x010d('0xf'));var as=require(_0x010d('0x10'));var hardwareService=require(_0x010d('0x11'));var logger=require(_0x010d('0x12'))('api');var utils=require(_0x010d('0x13'));var config=require(_0x010d('0x14'));var licenseUtil=require(_0x010d('0x15'));var db=require(_0x010d('0x16'))['db'];config['redis']=_['defaults'](config[_0x010d('0x17')],{'host':_0x010d('0x18'),'port':0x18eb});var socket=require(_0x010d('0x19'))(new Redis(config[_0x010d('0x17')]));require(_0x010d('0x1a'))[_0x010d('0x1b')](socket);var jayson=require(_0x010d('0x1c'));var client=jayson[_0x010d('0x1d')]['http']({'port':0x232c});function respondWithRpcPromise(_0x24bb79,_0x582929,_0x42db31,_0x49bf57){return new BPromise(function(_0x580984,_0x3769de){var _0x5db02f=_0x49bf57||client;return _0x5db02f['request'](_0x24bb79,_0x42db31)[_0x010d('0x1e')](function(_0x2c6e00){logger[_0x010d('0x1f')]('SmsAccount,\x20%s,\x20%s',_0x582929,_0x010d('0x20'));logger[_0x010d('0x21')](_0x010d('0x22'),_0x582929,_0x010d('0x20'),JSON[_0x010d('0x23')](_0x2c6e00));if(_0x2c6e00[_0x010d('0x24')]){if(_0x2c6e00[_0x010d('0x24')][_0x010d('0x25')]===0x1f4){logger[_0x010d('0x24')](_0x010d('0x26'),_0x582929,_0x2c6e00[_0x010d('0x24')]['message']);return _0x3769de(_0x2c6e00[_0x010d('0x24')][_0x010d('0x27')]);}logger[_0x010d('0x24')]('SmsAccount,\x20%s,\x20%s',_0x582929,_0x2c6e00[_0x010d('0x24')][_0x010d('0x27')]);return _0x580984(_0x2c6e00[_0x010d('0x24')][_0x010d('0x27')]);}else{logger[_0x010d('0x1f')](_0x010d('0x26'),_0x582929,_0x010d('0x20'));_0x580984(_0x2c6e00[_0x010d('0x28')][_0x010d('0x27')]);}})['catch'](function(_0x861043){logger[_0x010d('0x24')](_0x010d('0x26'),_0x582929,_0x861043);_0x3769de(_0x861043);});});}function respondWithStatusCode(_0x53f5da,_0x2d5b16){_0x2d5b16=_0x2d5b16||0xcc;return function(_0x28e704){if(_0x28e704){return _0x53f5da['sendStatus'](_0x2d5b16);}return _0x53f5da[_0x010d('0x29')](_0x2d5b16)[_0x010d('0x2a')]();};}function respondWithResult(_0x48f619,_0x26bd23){_0x26bd23=_0x26bd23||0xc8;return function(_0x1b224f){if(_0x1b224f){return _0x48f619[_0x010d('0x29')](_0x26bd23)[_0x010d('0x2b')](_0x1b224f);}};}function respondWithFilteredResult(_0x130b69,_0x45fec0){return function(_0x119efd){if(_0x119efd){var _0x1b9964=typeof _0x45fec0[_0x010d('0x2c')]===_0x010d('0x2d')&&typeof _0x45fec0['limit']==='undefined';var _0x2f594d=_0x119efd[_0x010d('0x2e')];var _0x375331=_0x1b9964?0x0:_0x45fec0[_0x010d('0x2c')];var _0x1bf81d=_0x1b9964?_0x119efd[_0x010d('0x2e')]:_0x45fec0[_0x010d('0x2c')]+_0x45fec0[_0x010d('0x2f')];var _0xa60a80;if(_0x1bf81d>=_0x2f594d){_0x1bf81d=_0x2f594d;_0xa60a80=0xc8;}else{_0xa60a80=0xce;}_0x130b69[_0x010d('0x29')](_0xa60a80);return _0x130b69[_0x010d('0x30')]('Content-Range',_0x375331+'-'+_0x1bf81d+'/'+_0x2f594d)[_0x010d('0x2b')](_0x119efd);}return null;};}function patchUpdates(_0x359d1c){return function(_0xedb59f){try{jsonpatch['apply'](_0xedb59f,_0x359d1c,!![]);}catch(_0x2c97a2){return BPromise['reject'](_0x2c97a2);}return _0xedb59f[_0x010d('0x31')]();};}function saveUpdates(_0x4984a3,_0x1d4124){return function(_0x1acd61){if(_0x1acd61){return _0x1acd61[_0x010d('0x32')](_0x4984a3)[_0x010d('0x1e')](function(_0x1278f5){return _0x1278f5;});}return null;};}function removeEntity(_0x42bdf8,_0x48b515){return function(_0x569eef){if(_0x569eef){return _0x569eef[_0x010d('0x33')]()[_0x010d('0x1e')](function(){var _0x244592=_0x569eef[_0x010d('0x34')]({'plain':!![]});var _0x11ce5a=_0x010d('0x35');return db[_0x010d('0x36')]['destroy']({'where':{'type':_0x11ce5a,'resourceId':_0x244592['id']}})[_0x010d('0x1e')](function(){return _0x569eef;});})[_0x010d('0x1e')](function(){_0x42bdf8[_0x010d('0x29')](0xcc)['end']();});}};}function handleEntityNotFound(_0x176762,_0x425d9b){return function(_0x4ae6d3){if(!_0x4ae6d3){_0x176762[_0x010d('0x37')](0x194);}return _0x4ae6d3;};}function handleError(_0x4ad551,_0x12d6c0){_0x12d6c0=_0x12d6c0||0x1f4;return function(_0x2a645d){logger[_0x010d('0x24')](_0x2a645d[_0x010d('0x38')]);if(_0x2a645d[_0x010d('0x39')]){delete _0x2a645d['name'];}_0x4ad551[_0x010d('0x29')](_0x12d6c0)[_0x010d('0x3a')](_0x2a645d);};}exports[_0x010d('0x3b')]=function(_0x30ddbb,_0x5542f4){var _0x323f53={'include':[{'model':db['Pause'],'as':_0x010d('0x3c')}]},_0x5483a5={},_0x3b09b5={'count':0x0,'rows':[]};var _0x58f66b=_[_0x010d('0x3d')](db[_0x010d('0x3e')]['rawAttributes'],function(_0x5a5810){return{'name':_0x5a5810['fieldName'],'type':_0x5a5810[_0x010d('0x3f')]['key']};});_0x5483a5[_0x010d('0x40')]=_[_0x010d('0x3d')](_0x58f66b,'name');_0x5483a5[_0x010d('0x41')]=_[_0x010d('0x42')](_0x30ddbb[_0x010d('0x41')]);_0x5483a5[_0x010d('0x43')]=_[_0x010d('0x44')](_0x5483a5[_0x010d('0x40')],_0x5483a5[_0x010d('0x41')]);_0x323f53[_0x010d('0x45')]=_[_0x010d('0x44')](_0x5483a5['model'],qs[_0x010d('0x46')](_0x30ddbb[_0x010d('0x41')][_0x010d('0x46')]));_0x323f53['attributes']=_0x323f53[_0x010d('0x45')]['length']?_0x323f53[_0x010d('0x45')]:_0x5483a5[_0x010d('0x40')];if(!_0x30ddbb[_0x010d('0x41')]['hasOwnProperty'](_0x010d('0x47'))){_0x323f53['limit']=qs['limit'](_0x30ddbb['query'][_0x010d('0x2f')]);_0x323f53[_0x010d('0x2c')]=qs['offset'](_0x30ddbb[_0x010d('0x41')][_0x010d('0x2c')]);}_0x323f53['order']=qs[_0x010d('0x48')](_0x30ddbb[_0x010d('0x41')]['sort']);_0x323f53['where']=qs[_0x010d('0x43')](_['pick'](_0x30ddbb[_0x010d('0x41')],_0x5483a5[_0x010d('0x43')]),_0x58f66b);if(_0x30ddbb[_0x010d('0x41')]['filter']){_0x323f53['where']=_[_0x010d('0x49')](_0x323f53[_0x010d('0x4a')],{'$or':_['map'](_0x58f66b,function(_0x4ca256){if(_0x4ca256[_0x010d('0x3f')]!=='VIRTUAL'){var _0x4975e7={};_0x4975e7[_0x4ca256[_0x010d('0x39')]]={'$like':'%'+_0x30ddbb[_0x010d('0x41')][_0x010d('0x4b')]+'%'};return _0x4975e7;}})});}_0x323f53=_[_0x010d('0x49')]({},_0x323f53,_0x30ddbb[_0x010d('0x4c')]);var _0x269887={'where':_0x323f53[_0x010d('0x4a')]};return db['SmsAccount'][_0x010d('0x2e')](_0x269887)[_0x010d('0x1e')](function(_0x1fac14){_0x3b09b5[_0x010d('0x2e')]=_0x1fac14;if(_0x30ddbb[_0x010d('0x41')]['includeAll']){_0x323f53[_0x010d('0x4d')]=[{'all':!![]}];}return db['SmsAccount']['findAll'](_0x323f53);})['then'](function(_0x19e6ae){_0x3b09b5[_0x010d('0x4e')]=_0x19e6ae;return _0x3b09b5;})[_0x010d('0x1e')](respondWithFilteredResult(_0x5542f4,_0x323f53))[_0x010d('0x4f')](handleError(_0x5542f4,null));};exports[_0x010d('0x50')]=function(_0x16affe,_0x139c22){var _0x2bcecc={'raw':![],'where':{'id':_0x16affe[_0x010d('0x51')]['id']},'include':[{'model':db[_0x010d('0x52')],'as':_0x010d('0x3c')}]},_0x3e6ef8={};_0x3e6ef8[_0x010d('0x40')]=_[_0x010d('0x42')](db['SmsAccount'][_0x010d('0x53')]);_0x3e6ef8[_0x010d('0x41')]=_[_0x010d('0x42')](_0x16affe['query']);_0x3e6ef8[_0x010d('0x43')]=_['intersection'](_0x3e6ef8[_0x010d('0x40')],_0x3e6ef8[_0x010d('0x41')]);_0x2bcecc[_0x010d('0x45')]=_['intersection'](_0x3e6ef8['model'],qs[_0x010d('0x46')](_0x16affe['query']['fields']));_0x2bcecc['attributes']=_0x2bcecc[_0x010d('0x45')]['length']?_0x2bcecc[_0x010d('0x45')]:_0x3e6ef8[_0x010d('0x40')];if(_0x16affe['query'][_0x010d('0x54')]){_0x2bcecc[_0x010d('0x4d')]=[{'all':!![]}];}_0x2bcecc=_[_0x010d('0x49')]({},_0x2bcecc,_0x16affe[_0x010d('0x4c')]);return db[_0x010d('0x3e')][_0x010d('0x55')](_0x2bcecc)['then'](handleEntityNotFound(_0x139c22,null))[_0x010d('0x1e')](respondWithResult(_0x139c22,null))['catch'](handleError(_0x139c22,null));};exports['create']=function(_0x14ca0b,_0x12094c){return db[_0x010d('0x3e')][_0x010d('0x56')](_0x14ca0b[_0x010d('0x57')],{})['then'](function(_0x252dab){var _0x5245d0=_0x14ca0b[_0x010d('0x58')][_0x010d('0x34')]({'plain':!![]});if(!_0x5245d0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5245d0[_0x010d('0x59')]===_0x010d('0x58')){var _0x1665d4=_0x252dab[_0x010d('0x34')]({'plain':!![]});var _0x563c45=_0x010d('0x35');return db[_0x010d('0x5a')]['find']({'where':{'name':_0x563c45,'userProfileId':_0x5245d0['userProfileId']},'raw':!![]})['then'](function(_0x10d0a6){if(_0x10d0a6&&_0x10d0a6['autoAssociation']===0x0){return db[_0x010d('0x36')]['create']({'name':_0x1665d4['name'],'resourceId':_0x1665d4['id'],'type':_0x10d0a6[_0x010d('0x39')],'sectionId':_0x10d0a6['id']},{})[_0x010d('0x1e')](function(){return _0x252dab;});}else{return _0x252dab;}})[_0x010d('0x4f')](function(_0x5d5229){logger[_0x010d('0x24')](_0x010d('0x5b'),_0x5d5229);throw _0x5d5229;});}return _0x252dab;})[_0x010d('0x1e')](respondWithResult(_0x12094c,0xc9))[_0x010d('0x4f')](handleError(_0x12094c,null));};exports[_0x010d('0x32')]=function(_0x22d2cb,_0x58d87d){if(_0x22d2cb[_0x010d('0x57')]['id']){delete _0x22d2cb[_0x010d('0x57')]['id'];}return db[_0x010d('0x3e')]['find']({'where':{'id':_0x22d2cb[_0x010d('0x51')]['id']},'include':[{'model':db[_0x010d('0x52')],'as':'mandatoryDispositionPause'}]})[_0x010d('0x1e')](handleEntityNotFound(_0x58d87d,null))[_0x010d('0x1e')](saveUpdates(_0x22d2cb[_0x010d('0x57')],null))[_0x010d('0x1e')](respondWithResult(_0x58d87d,null))[_0x010d('0x4f')](handleError(_0x58d87d,null));};exports[_0x010d('0x33')]=function(_0x479099,_0x58492d){return db[_0x010d('0x3e')][_0x010d('0x55')]({'where':{'id':_0x479099[_0x010d('0x51')]['id']}})[_0x010d('0x1e')](handleEntityNotFound(_0x58492d,null))[_0x010d('0x1e')](removeEntity(_0x58492d,null))[_0x010d('0x4f')](handleError(_0x58492d,null));};exports['describe']=function(_0x1c6d79,_0x128b9d){return db['SmsAccount']['describe']()['then'](respondWithResult(_0x128b9d,null))[_0x010d('0x4f')](handleError(_0x128b9d,null));};exports[_0x010d('0x5c')]=function(_0x220dd2,_0x2a4c7e,_0x5b3139){if(_0x220dd2['body']['id']){delete _0x220dd2['body']['id'];}return db['SmsAccount'][_0x010d('0x55')]({'where':{'id':_0x220dd2[_0x010d('0x51')]['id']}})[_0x010d('0x1e')](handleEntityNotFound(_0x2a4c7e,null))[_0x010d('0x1e')](function(_0x5c6dcd){if(_0x5c6dcd){_0x220dd2['body'][_0x010d('0x5d')]=_0x5c6dcd['id'];return db[_0x010d('0x5e')]['create'](_0x220dd2['body']);}})['then'](respondWithResult(_0x2a4c7e,null))['catch'](handleError(_0x2a4c7e,null));};exports[_0x010d('0x5f')]=function(_0x5e8d48,_0x523d7b,_0x2d0623){var _0x17a419={'raw':![],'where':{}};var _0x1961fd={};var _0x2f4f19={'count':0x0,'rows':[]};return db[_0x010d('0x3e')]['findOne']({'where':{'id':_0x5e8d48[_0x010d('0x51')]['id']}})['then'](handleEntityNotFound(_0x523d7b,null))[_0x010d('0x1e')](function(_0x5a6231){if(_0x5a6231){_0x1961fd[_0x010d('0x40')]=_[_0x010d('0x42')](db['Disposition'][_0x010d('0x53')]);_0x1961fd[_0x010d('0x41')]=_[_0x010d('0x42')](_0x5e8d48[_0x010d('0x41')]);_0x1961fd[_0x010d('0x43')]=_[_0x010d('0x44')](_0x1961fd[_0x010d('0x40')],_0x1961fd[_0x010d('0x41')]);_0x17a419[_0x010d('0x45')]=_[_0x010d('0x44')](_0x1961fd[_0x010d('0x40')],qs[_0x010d('0x46')](_0x5e8d48[_0x010d('0x41')][_0x010d('0x46')]));_0x17a419[_0x010d('0x45')]=_0x17a419[_0x010d('0x45')][_0x010d('0x60')]?_0x17a419[_0x010d('0x45')]:_0x1961fd[_0x010d('0x40')];if(!_0x5e8d48[_0x010d('0x41')][_0x010d('0x61')](_0x010d('0x47'))){_0x17a419[_0x010d('0x2f')]=qs[_0x010d('0x2f')](_0x5e8d48[_0x010d('0x41')][_0x010d('0x2f')]);_0x17a419[_0x010d('0x2c')]=qs[_0x010d('0x2c')](_0x5e8d48[_0x010d('0x41')]['offset']);}_0x17a419[_0x010d('0x62')]=qs['sort'](_0x5e8d48[_0x010d('0x41')][_0x010d('0x48')]);_0x17a419[_0x010d('0x4a')]=qs[_0x010d('0x43')](_[_0x010d('0x63')](_0x5e8d48[_0x010d('0x41')],_0x1961fd[_0x010d('0x43')]));_0x17a419['where'][_0x010d('0x5d')]=_0x5a6231['id'];if(_0x5e8d48[_0x010d('0x41')]['filter']){_0x17a419[_0x010d('0x4a')]=_['merge'](_0x17a419[_0x010d('0x4a')],{'$or':_[_0x010d('0x3d')](_0x17a419['attributes'],function(_0x50f04c){var _0x4988fa={};_0x4988fa[_0x50f04c]={'$like':'%'+_0x5e8d48[_0x010d('0x41')][_0x010d('0x4b')]+'%'};return _0x4988fa;})});}_0x17a419=_[_0x010d('0x49')]({},_0x17a419,_0x5e8d48[_0x010d('0x4c')]);return db[_0x010d('0x5e')][_0x010d('0x2e')]({'where':_0x17a419['where']})[_0x010d('0x1e')](function(_0x1a6dfc){_0x2f4f19[_0x010d('0x2e')]=_0x1a6dfc;if(_0x5e8d48[_0x010d('0x41')]['includeAll']){_0x17a419[_0x010d('0x4d')]=[{'all':!![]}];}return db[_0x010d('0x5e')][_0x010d('0x64')](_0x17a419);})['then'](function(_0x20e88a){_0x2f4f19[_0x010d('0x4e')]=_0x20e88a;return _0x2f4f19;});}})[_0x010d('0x1e')](respondWithFilteredResult(_0x523d7b,_0x17a419))[_0x010d('0x4f')](handleError(_0x523d7b,null));};exports[_0x010d('0x65')]=function(_0x4c91d2,_0x1012ee,_0x13e31e){return db[_0x010d('0x3e')][_0x010d('0x55')]({'where':{'id':_0x4c91d2[_0x010d('0x51')]['id']}})[_0x010d('0x1e')](handleEntityNotFound(_0x1012ee,null))[_0x010d('0x1e')](function(_0x4ee853){if(_0x4ee853){return _0x4ee853[_0x010d('0x65')](_0x4c91d2[_0x010d('0x41')]['ids']);}})['then'](respondWithStatusCode(_0x1012ee,null))['catch'](handleError(_0x1012ee,null));};exports[_0x010d('0x66')]=function(_0x340c5d,_0x3c65ca,_0x1ee3dd){if(_0x340c5d['body']['id']){delete _0x340c5d[_0x010d('0x57')]['id'];}return db[_0x010d('0x3e')]['find']({'where':{'id':_0x340c5d[_0x010d('0x51')]['id']}})[_0x010d('0x1e')](handleEntityNotFound(_0x3c65ca,null))['then'](function(_0x13eb30){if(_0x13eb30){_0x340c5d[_0x010d('0x57')][_0x010d('0x5d')]=_0x13eb30['id'];return db[_0x010d('0x67')][_0x010d('0x56')](_0x340c5d[_0x010d('0x57')]);}})['then'](respondWithResult(_0x3c65ca,null))[_0x010d('0x4f')](handleError(_0x3c65ca,null));};exports[_0x010d('0x68')]=function(_0x1715fc,_0x507184,_0x442b5b){var _0x1f9539={'raw':![],'where':{}};var _0x1a500d={};var _0xccaa60={'count':0x0,'rows':[]};return db[_0x010d('0x3e')][_0x010d('0x69')]({'where':{'id':_0x1715fc[_0x010d('0x51')]['id']}})['then'](handleEntityNotFound(_0x507184,null))['then'](function(_0x2f2660){if(_0x2f2660){_0x1a500d[_0x010d('0x40')]=_['keys'](db[_0x010d('0x67')][_0x010d('0x53')]);_0x1a500d[_0x010d('0x41')]=_[_0x010d('0x42')](_0x1715fc['query']);_0x1a500d[_0x010d('0x43')]=_['intersection'](_0x1a500d[_0x010d('0x40')],_0x1a500d[_0x010d('0x41')]);_0x1f9539[_0x010d('0x45')]=_[_0x010d('0x44')](_0x1a500d[_0x010d('0x40')],qs[_0x010d('0x46')](_0x1715fc[_0x010d('0x41')]['fields']));_0x1f9539[_0x010d('0x45')]=_0x1f9539[_0x010d('0x45')][_0x010d('0x60')]?_0x1f9539[_0x010d('0x45')]:_0x1a500d['model'];if(!_0x1715fc[_0x010d('0x41')]['hasOwnProperty'](_0x010d('0x47'))){_0x1f9539['limit']=qs[_0x010d('0x2f')](_0x1715fc['query'][_0x010d('0x2f')]);_0x1f9539[_0x010d('0x2c')]=qs[_0x010d('0x2c')](_0x1715fc[_0x010d('0x41')][_0x010d('0x2c')]);}_0x1f9539[_0x010d('0x62')]=qs['sort'](_0x1715fc[_0x010d('0x41')][_0x010d('0x48')]);_0x1f9539[_0x010d('0x4a')]=qs[_0x010d('0x43')](_[_0x010d('0x63')](_0x1715fc[_0x010d('0x41')],_0x1a500d[_0x010d('0x43')]));_0x1f9539[_0x010d('0x4a')]['SmsAccountId']=_0x2f2660['id'];if(_0x1715fc[_0x010d('0x41')][_0x010d('0x4b')]){_0x1f9539['where']=_['merge'](_0x1f9539[_0x010d('0x4a')],{'$or':_[_0x010d('0x3d')](_0x1f9539[_0x010d('0x45')],function(_0x3f5814){var _0x5ce43e={};_0x5ce43e[_0x3f5814]={'$like':'%'+_0x1715fc[_0x010d('0x41')][_0x010d('0x4b')]+'%'};return _0x5ce43e;})});}_0x1f9539=_[_0x010d('0x49')]({},_0x1f9539,_0x1715fc['options']);return db[_0x010d('0x67')][_0x010d('0x2e')]({'where':_0x1f9539[_0x010d('0x4a')]})[_0x010d('0x1e')](function(_0x43220b){_0xccaa60[_0x010d('0x2e')]=_0x43220b;if(_0x1715fc[_0x010d('0x41')][_0x010d('0x54')]){_0x1f9539[_0x010d('0x4d')]=[{'all':!![]}];}return db['CannedAnswer'][_0x010d('0x64')](_0x1f9539);})[_0x010d('0x1e')](function(_0x2fb5d0){_0xccaa60[_0x010d('0x4e')]=_0x2fb5d0;return _0xccaa60;});}})['then'](respondWithFilteredResult(_0x507184,_0x1f9539))[_0x010d('0x4f')](handleError(_0x507184,null));};exports[_0x010d('0x6a')]=function(_0xa17e58,_0x1eab04,_0x5ac78c){return db['SmsAccount'][_0x010d('0x55')]({'where':{'id':_0xa17e58[_0x010d('0x51')]['id']}})[_0x010d('0x1e')](handleEntityNotFound(_0x1eab04,null))[_0x010d('0x1e')](function(_0x10bbbf){if(_0x10bbbf){return _0x10bbbf[_0x010d('0x6a')](_0xa17e58[_0x010d('0x41')][_0x010d('0x6b')]);}})[_0x010d('0x1e')](respondWithStatusCode(_0x1eab04,null))['catch'](handleError(_0x1eab04,null));};exports[_0x010d('0x6c')]=function(_0x5ab3a0,_0x23987c,_0x4a767d){var _0x1cb9f7={'channel':_0x010d('0x6d')};var _0x5deecb=[];var _0x363e6f=[];var _0x3ef735={};return db[_0x010d('0x3e')][_0x010d('0x55')]({'where':{'id':_0x5ab3a0['params']['id']},'include':[{'model':db[_0x010d('0x6e')],'as':'Applications'}]})[_0x010d('0x1e')](handleEntityNotFound(_0x23987c,null))[_0x010d('0x1e')](function(_0x1907cf){_0x1cb9f7['account']=_0x1907cf;_0x1cb9f7['applications']=_[_0x010d('0x6f')](_0x1907cf['Applications'],[_0x010d('0x70')],['asc']);if(_0x1cb9f7[_0x010d('0x71')]['Applications']){delete _0x1cb9f7[_0x010d('0x71')][_0x010d('0x72')];}return db['CmContact'][_0x010d('0x73')]();})[_0x010d('0x1e')](function(_0x59fdd0){if(!_0x59fdd0){throw new db['Sequelize'][(_0x010d('0x74'))]('no\x20available\x20attributes');}_0x5deecb=_['difference'](_[_0x010d('0x42')](_0x59fdd0),['createdAt',_0x010d('0x75')]);_0x363e6f=_['difference'](_['keys'](_0x59fdd0),[_0x010d('0x76'),_0x010d('0x75'),'CompanyId',_0x010d('0x77')]);_0x1cb9f7[_0x010d('0x57')]={'mapKey':_0x010d('0x78')};if(_0x1cb9f7[_0x010d('0x71')][_0x010d('0x3f')]){switch(_0x1cb9f7[_0x010d('0x71')][_0x010d('0x3f')]){case _0x010d('0x79'):_0x1cb9f7[_0x010d('0x57')][_0x010d('0x7a')]=_0x5ab3a0[_0x010d('0x57')][_0x010d('0x7b')];_0x1cb9f7[_0x010d('0x57')]['body']=_0x5ab3a0['body'][_0x010d('0x7c')];_0x1cb9f7[_0x010d('0x57')][_0x010d('0x7d')]=_0x5ab3a0[_0x010d('0x57')][_0x010d('0x7e')];break;case _0x010d('0x7f'):_0x1cb9f7[_0x010d('0x57')][_0x010d('0x7a')]='+'+_0x5ab3a0['body'][_0x010d('0x80')];_0x1cb9f7[_0x010d('0x57')][_0x010d('0x57')]=_0x5ab3a0['body'][_0x010d('0x81')];break;case'connectel':_0x1cb9f7[_0x010d('0x57')][_0x010d('0x7a')]=_0x5ab3a0[_0x010d('0x57')]['from'];_0x1cb9f7[_0x010d('0x57')][_0x010d('0x57')]=_0x5ab3a0[_0x010d('0x57')][_0x010d('0x27')];break;case'clicksend':_0x1cb9f7[_0x010d('0x57')][_0x010d('0x7a')]=_0x5ab3a0[_0x010d('0x57')]['from'];_0x1cb9f7['body']['body']=_0x5ab3a0[_0x010d('0x57')][_0x010d('0x57')];_0x1cb9f7[_0x010d('0x57')][_0x010d('0x7d')]=_0x5ab3a0[_0x010d('0x57')][_0x010d('0x82')];break;case _0x010d('0x83'):_0x1cb9f7[_0x010d('0x57')][_0x010d('0x7a')]=_0x5ab3a0[_0x010d('0x57')][_0x010d('0x7b')];_0x1cb9f7[_0x010d('0x57')][_0x010d('0x57')]=_0x5ab3a0['body'][_0x010d('0x84')];_0x1cb9f7[_0x010d('0x57')][_0x010d('0x7d')]=_0x5ab3a0[_0x010d('0x57')][_0x010d('0x85')];break;case'infobip':_0x1cb9f7[_0x010d('0x57')][_0x010d('0x7a')]='+'+_0x5ab3a0['body']['results'][0x0][_0x010d('0x7a')];_0x1cb9f7[_0x010d('0x57')][_0x010d('0x57')]=_0x5ab3a0[_0x010d('0x57')][_0x010d('0x86')][0x0][_0x010d('0x81')];_0x1cb9f7[_0x010d('0x57')]['messageId']=_0x5ab3a0[_0x010d('0x57')][_0x010d('0x86')][0x0]['messageId'];break;case _0x010d('0x87'):_0x1cb9f7[_0x010d('0x57')][_0x010d('0x7a')]=_0x5ab3a0['body'][_0x010d('0x88')];_0x1cb9f7['body'][_0x010d('0x57')]=_0x5ab3a0[_0x010d('0x57')]['segmentedMessage'][_0x010d('0x27')];break;case _0x010d('0x89'):_0x1cb9f7['body'][_0x010d('0x7a')]=_0x5ab3a0[_0x010d('0x57')][_0x010d('0x8a')];_0x1cb9f7[_0x010d('0x57')][_0x010d('0x57')]=_0x5ab3a0['body']['text'];_0x1cb9f7['body'][_0x010d('0x7d')]=_0x5ab3a0[_0x010d('0x57')][_0x010d('0x8b')];break;case _0x010d('0x8c'):_0x1cb9f7[_0x010d('0x57')][_0x010d('0x7d')]=_0x5ab3a0[_0x010d('0x57')][0x0]['message']['id'];_0x1cb9f7[_0x010d('0x57')][_0x010d('0x7a')]=_0x5ab3a0[_0x010d('0x57')][0x0][_0x010d('0x27')][_0x010d('0x7a')];_0x1cb9f7[_0x010d('0x57')]['body']=_0x5ab3a0[_0x010d('0x57')][0x0][_0x010d('0x27')][_0x010d('0x81')];break;case _0x010d('0x8d'):_0x1cb9f7[_0x010d('0x57')][_0x010d('0x7a')]=_0x5ab3a0[_0x010d('0x57')][_0x010d('0x7a')];_0x1cb9f7[_0x010d('0x57')][_0x010d('0x57')]=_0x5ab3a0[_0x010d('0x57')][_0x010d('0x27')];_0x1cb9f7[_0x010d('0x57')][_0x010d('0x7d')]=_0x5ab3a0[_0x010d('0x57')][_0x010d('0x8e')];break;}}if(_0x1cb9f7['body']['id']){delete _0x1cb9f7[_0x010d('0x57')]['id'];}if(_[_0x010d('0x8f')](_0x1cb9f7['body'][_0x010d('0x7a')])){throw new db[(_0x010d('0x90'))]['ValidationError']('from\x20is\x20mandatory');}if(_[_0x010d('0x8f')](_0x1cb9f7[_0x010d('0x57')]['body'])||_0x1cb9f7[_0x010d('0x57')][_0x010d('0x57')]===''){throw new db[(_0x010d('0x90'))][(_0x010d('0x74'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x010d('0x8f')](_0x1cb9f7['body'][_0x010d('0x91')])){throw new db[(_0x010d('0x90'))][(_0x010d('0x74'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x363e6f);}if(!_[_0x010d('0x92')](_0x363e6f,_0x1cb9f7[_0x010d('0x57')]['mapKey'])){throw new db['Sequelize'][(_0x010d('0x74'))](_0x010d('0x93')+_0x363e6f);}_0x3ef735[_0x1cb9f7['body']['mapKey']]=_0x1cb9f7['body']['from'];return db[_0x010d('0x94')][_0x010d('0x55')]({'where':{'id':_0x1cb9f7[_0x010d('0x71')][_0x010d('0x77')]},'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x3ef735,'limit':0x1,'order':[[_0x010d('0x75'),_0x010d('0x95')]]}]});})[_0x010d('0x1e')](handleEntityNotFound(_0x23987c,null))[_0x010d('0x1e')](function(_0x3dd82e){if(_0x3dd82e){_0x1cb9f7[_0x010d('0x96')]=_[_0x010d('0x97')](_0x3dd82e,[_0x010d('0x98')]);if(_0x3dd82e[_0x010d('0x98')]['length']){return _0x3dd82e['Contacts'][0x0];}var _0x431bd1=_[_0x010d('0x99')](_0x1cb9f7['body'],{'firstName':_0x1cb9f7[_0x010d('0x57')]['from'],'ListId':_0x3dd82e['id']});_0x431bd1[_0x1cb9f7[_0x010d('0x57')][_0x010d('0x91')]]=_0x1cb9f7[_0x010d('0x57')][_0x010d('0x7a')];return db['CmContact'][_0x010d('0x56')](_0x431bd1,{'fields':_0x5deecb,'raw':!![]});}})['then'](handleEntityNotFound(_0x23987c,null))[_0x010d('0x1e')](function(_0x11942e){if(_0x11942e){_0x1cb9f7[_0x010d('0x9a')]=_0x11942e;var _0x41e789={'ContactId':_0x11942e['id'],'phone':_0x1cb9f7['body'][_0x010d('0x7a')],'SmsAccountId':_0x5ab3a0[_0x010d('0x51')]['id']};var _0x4d6584={'ContactId':_0x11942e['id'],'SmsAccountId':_0x5ab3a0[_0x010d('0x51')]['id'],'closed':![]};return db[_0x010d('0x9b')][_0x010d('0x55')]({'where':_0x4d6584})['then'](function(_0x32850d){if(_0x32850d){return[_0x32850d,![]];}return db['SmsInteraction'][_0x010d('0x56')](_0x41e789)[_0x010d('0x1e')](function(_0x2e55de){return[_0x2e55de,!![]];});});}})[_0x010d('0x9c')](function(_0x2a52f0,_0x2de4f1){_0x1cb9f7[_0x010d('0x9d')]=_0x2a52f0[_0x010d('0x34')]({'plain':!![]});_0x1cb9f7[_0x010d('0x9d')][_0x010d('0x9e')]=![];if(_0x2de4f1){if(_0x1cb9f7[_0x010d('0x71')]['autoclose']){_0x1cb9f7[_0x010d('0x9f')][_0x010d('0xa0')]({'id':0x0,'priority':_0x1cb9f7[_0x010d('0x9f')][_0x010d('0x60')]+0x1,'app':_0x010d('0xa1'),'appdata':_0x010d('0xa2'),'interval':_0x010d('0xa3')});}_0x1cb9f7[_0x010d('0x9d')][_0x010d('0x9e')]=!![];}return db[_0x010d('0xa4')][_0x010d('0x56')]({'phone':_0x1cb9f7[_0x010d('0x57')][_0x010d('0x7a')],'messageId':_0x1cb9f7[_0x010d('0x57')][_0x010d('0x7d')],'body':_0x1cb9f7[_0x010d('0x57')][_0x010d('0x57')],'SmsAccountId':_0x5ab3a0[_0x010d('0x51')]['id'],'SmsInteractionId':_0x2a52f0['id'],'direction':'in','ContactId':_0x2a52f0[_0x010d('0xa5')],'AttachmentId':_0x1cb9f7['body'][_0x010d('0xa6')]});})[_0x010d('0x1e')](function(_0x5c9469){_0x1cb9f7[_0x010d('0x27')]=_0x5c9469;if(_0x1cb9f7['interaction'][_0x010d('0xa7')]){return db[_0x010d('0xa8')][_0x010d('0x55')]({'attributes':['id',_0x010d('0x39')],'where':{'id':_0x1cb9f7[_0x010d('0x9d')][_0x010d('0xa7')]}})[_0x010d('0x1e')](function(_0xb754f0){if(_0xb754f0){_0x1cb9f7[_0x010d('0x9f')][_0x010d('0xa9')]({'id':0x0,'priority':0x0,'app':_0x010d('0xaa'),'appdata':_0xb754f0[_0x010d('0x39')]+','+(_0x1cb9f7[_0x010d('0x71')]['waitForTheAssignedAgent']||0xa),'interval':_0x010d('0xa3')});}return respondWithRpcPromise('Start',_0x010d('0xab'),_0x1cb9f7);});}return respondWithRpcPromise('Start',_0x010d('0xab'),_0x1cb9f7);})[_0x010d('0x1e')](function(_0x446299){if(_0x446299){var _0x4ae0ca=0xc8;var _0x55db53='receiveMessage';logger[_0x010d('0x1f')](_0x010d('0x22'),_0x55db53,_0x4ae0ca,_0x010d('0xac'));logger['debug']('SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x55db53,_0x4ae0ca,_0x010d('0xac'),JSON[_0x010d('0x23')](_0x446299));if(_0x1cb9f7[_0x010d('0x71')]['type']===_0x010d('0x79')){return _0x23987c[_0x010d('0x29')](_0x4ae0ca)['set'](_0x010d('0xad'),_0x010d('0xae'))['send'](_0x010d('0xaf'));}else{return _0x23987c['status'](_0x4ae0ca)[_0x010d('0x2b')](_0x446299);}}})['catch'](handleError(_0x23987c,null));};exports[_0x010d('0xb0')]=function(_0x4f4e71,_0x59b195){var _0x425d90=_0x4f4e71['params']['id'];var _0x52c17a=_0x4f4e71[_0x010d('0x57')];var _0x50d91d=0xc8;var _0x206420=null;return db[_0x010d('0xb1')][_0x010d('0xb2')]({'isolationLevel':db['sequelize'][_0x010d('0xb3')][_0x010d('0xb4')]['READ_COMMITTED']},function(_0x914f81){return db[_0x010d('0x3e')][_0x010d('0x69')]({'where':{'id':_0x425d90},'transaction':_0x914f81})['then'](function(_0x145328){if(_0x145328){return db['SmsApplication'][_0x010d('0x33')]({'where':{'SmsAccountId':_0x425d90},'transaction':_0x914f81})[_0x010d('0x1e')](function(){var _0x2f758c=_[_0x010d('0x3d')](_0x52c17a,function(_0x4d66af){_0x4d66af['SmsAccountId']=_0x425d90;return _0x4d66af;});return db['SmsApplication'][_0x010d('0xb5')](_0x2f758c,{'transaction':_0x914f81});});}else{_0x50d91d=0x194;_0x206420=[];}});})[_0x010d('0x1e')](function(){if(_0x50d91d!==0x194){return db[_0x010d('0x6e')][_0x010d('0xb6')]({'where':{'SmsAccountId':_0x425d90},'order':_0x010d('0x70')})['then'](function(_0x47f939){_0x206420=_0x47f939;});}})[_0x010d('0x4f')](function(_0x3342ea){_0x50d91d=0x1f4;logger[_0x010d('0x24')](_0x3342ea[_0x010d('0x38')]);if(_0x3342ea[_0x010d('0x39')]){delete _0x3342ea[_0x010d('0x39')];}_0x206420=_0x3342ea;})[_0x010d('0xb7')](function(){if(_0x206420===null){_0x59b195[_0x010d('0x37')](_0x50d91d);}else{if(_0x50d91d===0x1f4){_0x59b195[_0x010d('0x29')](_0x50d91d)[_0x010d('0x3a')](_0x206420);}else{_0x59b195[_0x010d('0x29')](_0x50d91d)[_0x010d('0x2b')](_0x206420);}}});};exports[_0x010d('0xb8')]=function(_0x3f0eff,_0x4cc150,_0x43126a){var _0x14051f={};var _0x458fe9={};var _0x408f0f;var _0x130fc6;return db[_0x010d('0x3e')][_0x010d('0x69')]({'where':{'id':_0x3f0eff[_0x010d('0x51')]['id']}})[_0x010d('0x1e')](handleEntityNotFound(_0x4cc150,null))[_0x010d('0x1e')](function(_0x4a7a03){if(_0x4a7a03){_0x408f0f=_0x4a7a03;_0x458fe9[_0x010d('0x40')]=_[_0x010d('0x42')](db['SmsApplication'][_0x010d('0x53')]);_0x458fe9['query']=_[_0x010d('0x42')](_0x3f0eff[_0x010d('0x41')]);_0x458fe9[_0x010d('0x43')]=_[_0x010d('0x44')](_0x458fe9[_0x010d('0x40')],_0x458fe9[_0x010d('0x41')]);_0x14051f[_0x010d('0x45')]=_[_0x010d('0x44')](_0x458fe9['model'],qs[_0x010d('0x46')](_0x3f0eff[_0x010d('0x41')][_0x010d('0x46')]));_0x14051f[_0x010d('0x45')]=_0x14051f[_0x010d('0x45')][_0x010d('0x60')]?_0x14051f[_0x010d('0x45')]:_0x458fe9[_0x010d('0x40')];_0x14051f[_0x010d('0x62')]=qs[_0x010d('0x48')](_0x3f0eff['query']['sort']);_0x14051f[_0x010d('0x4a')]=qs[_0x010d('0x43')](_['pick'](_0x3f0eff[_0x010d('0x41')],_0x458fe9[_0x010d('0x43')]));if(_0x3f0eff[_0x010d('0x41')][_0x010d('0x4b')]){_0x14051f[_0x010d('0x4a')]=_[_0x010d('0x49')](_0x14051f[_0x010d('0x4a')],{'$or':_['map'](_0x14051f['attributes'],function(_0x337b2b){var _0x3cfa50={};_0x3cfa50[_0x337b2b]={'$like':'%'+_0x3f0eff[_0x010d('0x41')][_0x010d('0x4b')]+'%'};return _0x3cfa50;})});}_0x14051f=_['merge']({},_0x14051f,_0x3f0eff[_0x010d('0x4c')]);return _0x408f0f[_0x010d('0xb8')](_0x14051f);}})[_0x010d('0x1e')](function(_0x4af102){if(_0x4af102){_0x130fc6=_0x4af102[_0x010d('0x60')];if(!_0x3f0eff[_0x010d('0x41')]['hasOwnProperty'](_0x010d('0x47'))){_0x14051f[_0x010d('0x2f')]=qs[_0x010d('0x2f')](_0x3f0eff['query'][_0x010d('0x2f')]);_0x14051f[_0x010d('0x2c')]=qs[_0x010d('0x2c')](_0x3f0eff['query'][_0x010d('0x2c')]);}return _0x408f0f[_0x010d('0xb8')](_0x14051f);}})['then'](function(_0x5837f2){if(_0x5837f2){return _0x5837f2?{'count':_0x130fc6,'rows':_0x5837f2}:null;}})['then'](respondWithResult(_0x4cc150,null))[_0x010d('0x4f')](handleError(_0x4cc150,null));};exports[_0x010d('0xb9')]=function(_0x1cc30e,_0x5ac6b0,_0x447cdb){var _0x1c7ce4={'raw':![],'where':{}};var _0x2a22be={};var _0x310f39={'count':0x0,'rows':[]};return db['SmsAccount'][_0x010d('0x69')]({'where':{'id':_0x1cc30e[_0x010d('0x51')]['id']}})[_0x010d('0x1e')](handleEntityNotFound(_0x5ac6b0,null))[_0x010d('0x1e')](function(_0xda6f3a){if(_0xda6f3a){_0x2a22be['model']=_[_0x010d('0x42')](db[_0x010d('0x9b')][_0x010d('0x53')]);_0x2a22be['query']=_[_0x010d('0x42')](_0x1cc30e[_0x010d('0x41')]);_0x2a22be[_0x010d('0x43')]=_[_0x010d('0x44')](_0x2a22be[_0x010d('0x40')],_0x2a22be['query']);_0x1c7ce4[_0x010d('0x45')]=_[_0x010d('0x44')](_0x2a22be[_0x010d('0x40')],qs[_0x010d('0x46')](_0x1cc30e['query'][_0x010d('0x46')]));_0x1c7ce4[_0x010d('0x45')]=_0x1c7ce4[_0x010d('0x45')][_0x010d('0x60')]?_0x1c7ce4[_0x010d('0x45')]:_0x2a22be['model'];if(!_0x1cc30e[_0x010d('0x41')][_0x010d('0x61')](_0x010d('0x47'))){_0x1c7ce4[_0x010d('0x2f')]=qs[_0x010d('0x2f')](_0x1cc30e[_0x010d('0x41')][_0x010d('0x2f')]);_0x1c7ce4['offset']=qs[_0x010d('0x2c')](_0x1cc30e['query'][_0x010d('0x2c')]);}_0x1c7ce4[_0x010d('0x62')]=qs['sort'](_0x1cc30e[_0x010d('0x41')][_0x010d('0x48')]);_0x1c7ce4['where']=qs[_0x010d('0x43')](_['pick'](_0x1cc30e[_0x010d('0x41')],_0x2a22be[_0x010d('0x43')]));_0x1c7ce4[_0x010d('0x4a')][_0x010d('0x5d')]=_0xda6f3a['id'];if(_0x1cc30e['query'][_0x010d('0x4b')]){_0x1c7ce4[_0x010d('0x4a')]=_[_0x010d('0x49')](_0x1c7ce4['where'],{'$or':_[_0x010d('0x3d')](_0x1c7ce4[_0x010d('0x45')],function(_0x380bf8){var _0x52fceb={};_0x52fceb[_0x380bf8]={'$like':'%'+_0x1cc30e['query']['filter']+'%'};return _0x52fceb;})});}_0x1c7ce4=_['merge']({},_0x1c7ce4,_0x1cc30e[_0x010d('0x4c')]);return db[_0x010d('0x9b')]['count']({'where':_0x1c7ce4[_0x010d('0x4a')]})[_0x010d('0x1e')](function(_0x5ebfe8){_0x310f39[_0x010d('0x2e')]=_0x5ebfe8;if(_0x1cc30e[_0x010d('0x41')][_0x010d('0x54')]){_0x1c7ce4['include']=[{'model':db[_0x010d('0xba')],'as':_0x010d('0xbb'),'required':![]},{'model':db['User'],'as':_0x010d('0xbc'),'attributes':[_0x010d('0x39'),'fullname',_0x010d('0xbd')],'required':![]},{'model':db[_0x010d('0xbe')],'as':_0x010d('0xbf'),'attributes':['id',_0x010d('0x39'),_0x010d('0xc0')],'where':_0x1cc30e[_0x010d('0x41')]['tag']?{'id':_0x1cc30e[_0x010d('0x41')][_0x010d('0xc1')]}:undefined,'required':_0x1cc30e[_0x010d('0x41')][_0x010d('0xc1')]?!![]:![]}];}return db[_0x010d('0x9b')][_0x010d('0x64')](_0x1c7ce4);})[_0x010d('0x1e')](function(_0x1f3238){_0x310f39[_0x010d('0x4e')]=_0x1f3238;return _0x310f39;});}})[_0x010d('0x1e')](respondWithFilteredResult(_0x5ac6b0,_0x1c7ce4))[_0x010d('0x4f')](handleError(_0x5ac6b0,null));};exports['send']=function(_0xd3990b,_0x1c3e44,_0x5671ff){var _0x1e691c,_0x3b4749,_0x21684f;if(_['isNil'](_0xd3990b[_0x010d('0x57')][_0x010d('0x57')])||_0xd3990b[_0x010d('0x57')][_0x010d('0x57')]===''){throw new db[(_0x010d('0x90'))][(_0x010d('0x74'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x010d('0x8f')](_0xd3990b[_0x010d('0x57')]['to'])){throw new db[(_0x010d('0x90'))][(_0x010d('0x74'))]('to\x20is\x20mandatory');}_0x1e691c=_0xd3990b['body']['to'];return db['SmsAccount'][_0x010d('0x55')]({'where':{'id':_0xd3990b['params']['id']},'include':[{'model':db[_0x010d('0x94')],'as':_0x010d('0xc2'),'include':[{'model':db['CmContact'],'as':_0x010d('0x98'),'where':{'mobile':_0x1e691c},'limit':0x1,'order':[[_0x010d('0x75'),'DESC']]}]}]})[_0x010d('0x1e')](handleEntityNotFound(_0x1c3e44,null))[_0x010d('0x1e')](function(_0x4d94ae){if(_0x4d94ae&&_0x4d94ae['List']){_0x3b4749=_0x4d94ae[_0x010d('0x34')]({'plain':!![]});if(_0x3b4749[_0x010d('0xc2')]&&_0x3b4749[_0x010d('0xc2')]['Contacts'][_0x010d('0x60')]){return _0x3b4749['List'][_0x010d('0x98')][0x0];}return db['CmContact'][_0x010d('0x56')](_['defaults'](_0xd3990b[_0x010d('0x57')],{'firstName':_0x1e691c,'mobile':_0x1e691c,'phone':_0x1e691c,'ListId':_0x3b4749['ListId']}));}})[_0x010d('0x1e')](handleEntityNotFound(_0x1c3e44,null))[_0x010d('0x1e')](function(_0x4132e7){if(_0x4132e7){_0x21684f=_0x4132e7;return db[_0x010d('0x9b')][_0x010d('0x55')]({'where':{'ContactId':_0x21684f['id'],'closed':![],'SmsAccountId':_0x3b4749['id']}})[_0x010d('0x1e')](function(_0x337155){if(_0x337155){return[_0x337155,![]];}return db[_0x010d('0x9b')][_0x010d('0x56')]({'UserId':_0xd3990b[_0x010d('0x58')]['id'],'ContactId':_0x21684f['id'],'SmsAccountId':_0x3b4749['id'],'phone':_0x1e691c,'firstMsgDirection':_0x010d('0xc3'),'Messages':[_[_0x010d('0x49')](_0xd3990b['body'],{'read':![],'body':_0xd3990b[_0x010d('0x57')]['body'],'phone':_0x1e691c,'SmsAccountId':_0x3b4749['id'],'UserId':_0xd3990b[_0x010d('0x58')]['id'],'ContactId':_0x21684f['id']})]},{'include':[{'model':db['SmsMessage'],'as':_0x010d('0xc4')}]})[_0x010d('0x1e')](function(_0x5433e8){return[_0x5433e8,!![]];});});}})[_0x010d('0x9c')](function(_0x3c1f97,_0x1a6c4a){if(_0x1a6c4a){return _0x3c1f97;}return db[_0x010d('0xa4')][_0x010d('0x56')](_[_0x010d('0x49')](_0xd3990b[_0x010d('0x57')],{'read':![],'body':_0xd3990b[_0x010d('0x57')]['body'],'phone':_0x1e691c,'SmsAccountId':_0x3b4749['id'],'SmsInteractionId':_0x3c1f97['id'],'UserId':_0xd3990b['user']['id'],'ContactId':_0x21684f['id']}))[_0x010d('0x1e')](function(_0x2dfe4f){_0x3c1f97[_0x010d('0xc5')][_0x010d('0xc4')]=[];_0x3c1f97['dataValues'][_0x010d('0xc4')][_0x010d('0xa0')](_0x2dfe4f[_0x010d('0xc5')]);return _0x3c1f97;});})['then'](respondWithResult(_0x1c3e44,null))[_0x010d('0x4f')](handleError(_0x1c3e44,null));};exports[_0x010d('0x29')]=function(_0x38d79e,_0x5bf074,_0x5c452f){if(_0x38d79e[_0x010d('0x57')]['id']){delete _0x38d79e[_0x010d('0x57')]['id'];}var _0x3f70d3,_0x32596e,_0x24ecbc;return db[_0x010d('0x3e')][_0x010d('0x55')]({'where':{'id':_0x38d79e[_0x010d('0x51')]['id']}})[_0x010d('0x1e')](handleEntityNotFound(_0x5bf074,null))[_0x010d('0x1e')](function(_0x51ceb2){if(_0x51ceb2){_0x24ecbc=_0x51ceb2;logger[_0x010d('0x21')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x010d('0x29'),_0x010d('0xc6'),_0x51ceb2['type'],util[_0x010d('0xc7')](_0x38d79e['body'],{'showHidden':![],'depth':null}));switch(_0x51ceb2['type']){case _0x010d('0x7f'):if(_0x38d79e[_0x010d('0x57')][_0x010d('0xc8')]&&_0x38d79e[_0x010d('0x57')][_0x010d('0x29')]){_0x32596e=_0x38d79e[_0x010d('0x57')]['status'];return db['SmsMessage'][_0x010d('0x55')]({'where':{'messageId':_0x38d79e[_0x010d('0x57')]['skebby_dispatch_id']}});}break;case _0x010d('0xc9'):if(_0x38d79e[_0x010d('0x57')][_0x010d('0xca')]&&_0x38d79e['body'][_0x010d('0xcb')]){_0x32596e=_0x38d79e[_0x010d('0x57')][_0x010d('0xcb')];return db[_0x010d('0xa4')][_0x010d('0x55')]({'where':{'messageId':_0x38d79e['body']['requestid']}});}break;case _0x010d('0xcc'):if(_0x38d79e['body'][_0x010d('0x82')]&&_0x38d79e[_0x010d('0x57')][_0x010d('0xcd')]){_0x32596e=_0x38d79e[_0x010d('0x57')]['status_code'];return db['SmsMessage']['find']({'where':{'messageId':_0x38d79e['body'][_0x010d('0x82')]}});}break;case'infobip':var _0x219389=_0x38d79e[_0x010d('0x57')]['results'][0x0];if(_0x219389['messageId']&&_0x219389['status'][_0x010d('0xce')]==='DELIVERED'){_0x32596e=_0x219389[_0x010d('0x29')][_0x010d('0xce')];return db[_0x010d('0xa4')][_0x010d('0x55')]({'where':{'messageId':_0x219389['messageId']}});}break;case _0x010d('0x89'):if(_0x38d79e['body']['messageId']&&_0x38d79e[_0x010d('0x57')][_0x010d('0x29')]){_0x32596e=_0x38d79e['body'][_0x010d('0x29')];return db['SmsMessage'][_0x010d('0x55')]({'where':{'messageId':_0x38d79e[_0x010d('0x57')][_0x010d('0x7d')]}});}break;case'bandwidth':if(_0x38d79e[_0x010d('0x57')][0x0]['message']['id']){_0x32596e=_0x38d79e[_0x010d('0x57')][0x0][_0x010d('0x3f')];return db[_0x010d('0xa4')][_0x010d('0x55')]({'where':{'messageId':_0x38d79e[_0x010d('0x57')][0x0][_0x010d('0x27')]['id']}});}break;case _0x010d('0x8d'):if(_0x38d79e[_0x010d('0x57')][_0x010d('0xcf')]&&_0x38d79e[_0x010d('0x57')][_0x010d('0x29')]){_0x32596e=_0x38d79e[_0x010d('0x57')]['status'];return db[_0x010d('0xa4')]['find']({'where':{'messageId':_0x38d79e['body'][_0x010d('0xcf')]}});}break;}}})[_0x010d('0x1e')](handleEntityNotFound(_0x5bf074,null))['then'](function(_0xdd2674){if(_0xdd2674){_0x3f70d3=_0xdd2674;switch(_0x24ecbc['type']){case'skebby':if(_0x32596e===_0x010d('0xd0')){return _0x3f70d3[_0x010d('0x32')]({'read':!![]});}else{logger[_0x010d('0x24')](_0x010d('0x22'),'status',_0x010d('0x7f'),util[_0x010d('0xc7')](_0x38d79e[_0x010d('0x57')],{'showHidden':![],'depth':null}));}break;case'connectel':if(_0x32596e==='1'){return _0x3f70d3['update']({'read':!![]});}else{logger[_0x010d('0x24')](_0x010d('0x22'),_0x010d('0x29'),_0x010d('0x7f'),util[_0x010d('0xc7')](_0x38d79e[_0x010d('0x57')],{'showHidden':![],'depth':null}));}break;case'clicksend':if(!_0x38d79e[_0x010d('0x57')][_0x010d('0xd1')]&&_0x32596e>=0xc8&&_0x32596e<=0xce){return _0x3f70d3['update']({'read':!![]});}else{logger[_0x010d('0x24')](_0x010d('0x22'),'status',_0x010d('0xcc'),util['inspect'](_0x38d79e[_0x010d('0x57')],{'showHidden':![],'depth':null}));}break;case _0x010d('0xd2'):var _0x5df494=_0x38d79e['body'][_0x010d('0x86')][0x0];if(_0x5df494['status'][_0x010d('0xce')]===_0x010d('0xd0')){return _0x3f70d3[_0x010d('0x32')]({'read':!![]});}else{logger[_0x010d('0x24')](_0x010d('0x22'),'status',_0x010d('0xd2'),util['inspect'](_0x38d79e[_0x010d('0x57')],{'showHidden':![],'depth':null}));}break;case _0x010d('0x89'):if(_0x32596e==_0x010d('0xd3')||_0x32596e==_0x010d('0xd4')){return _0x3f70d3[_0x010d('0x32')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x010d('0x89'),util['inspect'](_0x38d79e['body'],{'showHidden':![],'depth':null}));}break;case _0x010d('0x8c'):if(_0x32596e==_0x010d('0xd5')){return _0x3f70d3[_0x010d('0x32')]({'read':!![]});}else{logger[_0x010d('0x24')](_0x010d('0x22'),_0x010d('0x29'),_0x010d('0x8c'),util[_0x010d('0xc7')](_0x38d79e[_0x010d('0x57')],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0x32596e===_0x010d('0xd6')||_0x32596e===_0x010d('0xd7')){return _0x3f70d3[_0x010d('0x32')]({'read':!![]});}else{logger[_0x010d('0x24')](_0x010d('0x22'),_0x010d('0x29'),'intelepeer',util[_0x010d('0xc7')](_0x38d79e[_0x010d('0x57')],{'showHidden':![],'depth':null}));}break;}return _0x3f70d3;}})[_0x010d('0x1e')](respondWithResult(_0x5bf074,null))['catch'](handleError(_0x5bf074,null));};exports['statusGet']=function(_0x42fd11,_0x55d438,_0x2a5b74){var _0x193645,_0x20871d,_0x12c748;return db[_0x010d('0x3e')][_0x010d('0x55')]({'where':{'id':_0x42fd11[_0x010d('0x51')]['id']}})['then'](handleEntityNotFound(_0x55d438,null))[_0x010d('0x1e')](function(_0x4e2878){if(_0x4e2878){_0x12c748=_0x4e2878;logger[_0x010d('0x21')](_0x010d('0x22'),_0x010d('0x29'),'received\x20delivery\x20report\x20from',_0x4e2878[_0x010d('0x3f')],util[_0x010d('0xc7')](_0x42fd11[_0x010d('0x41')],{'showHidden':![],'depth':null}));switch(_0x4e2878['type']){case'csc':if(_0x42fd11[_0x010d('0x41')]['message-id']&&_0x42fd11[_0x010d('0x41')]['state']){_0x20871d=_0x42fd11['query'][_0x010d('0xd8')];return db[_0x010d('0xa4')][_0x010d('0x55')]({'where':{'messageId':_0x42fd11[_0x010d('0x41')][_0x010d('0xd9')]}});}break;}}})['then'](handleEntityNotFound(_0x55d438,null))[_0x010d('0x1e')](function(_0x293614){if(_0x293614){_0x193645=_0x293614;switch(_0x12c748[_0x010d('0x3f')]){case _0x010d('0x87'):if(_0x20871d==='2'||_0x20871d==='6'){return _0x193645['update']({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x010d('0x29'),_0x010d('0x87'),util[_0x010d('0xc7')](_0x42fd11[_0x010d('0x41')],{'showHidden':![],'depth':null}));};break;}return _0x193645;}})[_0x010d('0x1e')](respondWithResult(_0x55d438,null))[_0x010d('0x4f')](handleError(_0x55d438,null));};exports[_0x010d('0xda')]=function(_0x39dcc3,_0x2bed37,_0x5abc46){return db[_0x010d('0x3e')]['find']({'where':{'id':_0x39dcc3[_0x010d('0x51')]['id']}})[_0x010d('0x1e')](handleEntityNotFound(_0x2bed37,null))['then'](function(_0x91636c){if(_0x91636c){return _0x91636c['addAgents'](_0x39dcc3['body'][_0x010d('0x6b')],_['omit'](_0x39dcc3['body'],[_0x010d('0x6b'),'id'])||{})[_0x010d('0x9c')](function(_0x28e117){for(var _0x9c2826=0x0;_0x9c2826<_0x39dcc3['body'][_0x010d('0x6b')]['length'];_0x9c2826+=0x1){socket['emit'](_0x010d('0xdb'),{'UserId':Number(_0x39dcc3[_0x010d('0x57')]['ids'][_0x9c2826]),'SmsAccountId':Number(_0x39dcc3['params']['id'])});}return _0x28e117;});}})[_0x010d('0x1e')](respondWithResult(_0x2bed37,null))[_0x010d('0x4f')](handleError(_0x2bed37,null));};exports[_0x010d('0xdc')]=function(_0x31fbd0,_0x30828e,_0x267c6e){return db[_0x010d('0x3e')]['find']({'where':{'id':_0x31fbd0[_0x010d('0x51')]['id']}})['then'](handleEntityNotFound(_0x30828e,null))[_0x010d('0x1e')](function(_0x3c054e){if(_0x3c054e){return _0x3c054e['removeAgents'](_0x31fbd0[_0x010d('0x41')][_0x010d('0x6b')])['then'](function(){if(_['isArray'](_0x31fbd0[_0x010d('0x41')][_0x010d('0x6b')])){for(var _0x229d6b=0x0;_0x229d6b<_0x31fbd0[_0x010d('0x41')][_0x010d('0x6b')][_0x010d('0x60')];_0x229d6b+=0x1){socket[_0x010d('0xdd')](_0x010d('0xde'),{'UserId':Number(_0x31fbd0['query'][_0x010d('0x6b')][_0x229d6b]),'SmsAccountId':Number(_0x31fbd0['params']['id'])});}}else{socket[_0x010d('0xdd')](_0x010d('0xde'),{'UserId':Number(_0x31fbd0[_0x010d('0x41')][_0x010d('0x6b')]),'SmsAccountId':Number(_0x31fbd0[_0x010d('0x51')]['id'])});}});}})[_0x010d('0x1e')](respondWithStatusCode(_0x30828e,null))[_0x010d('0x4f')](handleError(_0x30828e,null));};exports[_0x010d('0xdf')]=function(_0x246e72,_0x34042b,_0x137ed8){var _0x32cbbe={};var _0x1e1559={};var _0x1ae6d1;var _0x581dc1;return db['SmsAccount']['findOne']({'where':{'id':_0x246e72[_0x010d('0x51')]['id']}})['then'](handleEntityNotFound(_0x34042b,null))[_0x010d('0x1e')](function(_0x2efc69){if(_0x2efc69){_0x1ae6d1=_0x2efc69;_0x1e1559['model']=_[_0x010d('0x42')](db[_0x010d('0xa8')][_0x010d('0x53')]);_0x1e1559[_0x010d('0x41')]=_['keys'](_0x246e72[_0x010d('0x41')]);_0x1e1559[_0x010d('0x43')]=_['intersection'](_0x1e1559[_0x010d('0x40')],_0x1e1559['query']);_0x32cbbe[_0x010d('0x45')]=_[_0x010d('0x44')](_0x1e1559['model'],qs[_0x010d('0x46')](_0x246e72['query'][_0x010d('0x46')]));_0x32cbbe['attributes']=_0x32cbbe['attributes'][_0x010d('0x60')]?_0x32cbbe['attributes']:_0x1e1559[_0x010d('0x40')];_0x32cbbe[_0x010d('0x62')]=qs['sort'](_0x246e72['query']['sort']);_0x32cbbe[_0x010d('0x4a')]=qs['filters'](_[_0x010d('0x63')](_0x246e72[_0x010d('0x41')],_0x1e1559['filters']));if(_0x246e72[_0x010d('0x41')][_0x010d('0x4b')]){_0x32cbbe[_0x010d('0x4a')]=_[_0x010d('0x49')](_0x32cbbe[_0x010d('0x4a')],{'$or':_[_0x010d('0x3d')](_0x32cbbe[_0x010d('0x45')],function(_0x3a935f){var _0x1a6ef3={};_0x1a6ef3[_0x3a935f]={'$like':'%'+_0x246e72[_0x010d('0x41')][_0x010d('0x4b')]+'%'};return _0x1a6ef3;})});}_0x32cbbe=_['merge']({},_0x32cbbe,_0x246e72[_0x010d('0x4c')]);return _0x1ae6d1[_0x010d('0xdf')](_0x32cbbe);}})['then'](function(_0x2ea27f){if(_0x2ea27f){_0x581dc1=_0x2ea27f[_0x010d('0x60')];if(!_0x246e72['query'][_0x010d('0x61')](_0x010d('0x47'))){_0x32cbbe['limit']=qs[_0x010d('0x2f')](_0x246e72[_0x010d('0x41')]['limit']);_0x32cbbe[_0x010d('0x2c')]=qs[_0x010d('0x2c')](_0x246e72['query'][_0x010d('0x2c')]);}return _0x1ae6d1[_0x010d('0xdf')](_0x32cbbe);}})[_0x010d('0x1e')](function(_0x5710fb){if(_0x5710fb){return _0x5710fb?{'count':_0x581dc1,'rows':_0x5710fb}:null;}})['then'](respondWithResult(_0x34042b,null))[_0x010d('0x4f')](handleError(_0x34042b,null));};
\ No newline at end of file
+var _0x5d8a=['../../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','./smsAccount.socket','register','jayson/promise','client','http','request','then','info','request\x20sent','error','code','SmsAccount,\x20%s,\x20%s','message','result','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','apply','reject','update','destroy','get','UserProfileResource','stack','name','send','index','mandatoryDispositionPause','map','SmsAccount','rawAttributes','fieldName','type','query','keys','filters','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','Pause','intersection','find','body','user','role','SmsAccounts','UserProfileSection','userProfileId','autoAssociation','create','describe','addDisposition','SmsAccountId','Disposition','getDispositions','nolimit','removeDispositions','ids','addAnswer','getAnswers','findOne','CannedAnswer','removeAnswers','notify','SmsApplication','Applications','applications','orderBy','asc','account','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','from','From','Body','messageId','MessageSid','skebby','sender','message_id','plivo','Text','MessageUUID','infobip','results','text','csc','originatingAddress','segmentedMessage','replyMessageId','bandwidth','intelepeer','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','Sequelize','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','CmContact','Contacts','DESC','list','SmsInteraction','spread','interaction','created','push','close','unmanaged','*,*,*,*','AttachmentId','UserId','User','waitForTheAssignedAgent','Start','startRouting','receiveMessage','SmsAccount,\x20%s,\x20%s,\x20%s','entity\x20found','debug','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','stringify','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','json','addApplications','sequelize','transaction','READ_COMMITTED','findAndCountAll','priority','getApplications','Contact','Owner','fullname','internal','Tags','color','tag','to\x20is\x20mandatory','List','SmsMessage','Messages','dataValues','inspect','connectel','requestid','statusInt','clicksend','groupName','DELIVERED','clickatell','redif','error_code','RECEIVED_BY_RECIPIENT','DELIVRD','ACCEPTD','message-id','state','addAgents','emit','userSmsAccount:save','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis'];(function(_0x5d9fff,_0x185acf){var _0x9933f1=function(_0x5e8308){while(--_0x5e8308){_0x5d9fff['push'](_0x5d9fff['shift']());}};_0x9933f1(++_0x185acf);}(_0x5d8a,0x1b3));var _0xa5d8=function(_0x32ac54,_0x432558){_0x32ac54=_0x32ac54-0x0;var _0x423a40=_0x5d8a[_0x32ac54];return _0x423a40;};'use strict';var emlformat=require(_0xa5d8('0x0'));var rimraf=require(_0xa5d8('0x1'));var zipdir=require(_0xa5d8('0x2'));var jsonpatch=require(_0xa5d8('0x3'));var rp=require(_0xa5d8('0x4'));var moment=require(_0xa5d8('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xa5d8('0x6'));var path=require('path');var sox=require(_0xa5d8('0x7'));var csv=require(_0xa5d8('0x8'));var ejs=require(_0xa5d8('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa5d8('0xa'));var squel=require(_0xa5d8('0xb'));var crypto=require('crypto');var jsforce=require(_0xa5d8('0xc'));var deskjs=require(_0xa5d8('0xd'));var toCsv=require('to-csv');var querystring=require(_0xa5d8('0xe'));var Papa=require(_0xa5d8('0xf'));var Redis=require(_0xa5d8('0x10'));var authService=require(_0xa5d8('0x11'));var qs=require(_0xa5d8('0x12'));var as=require(_0xa5d8('0x13'));var hardwareService=require(_0xa5d8('0x14'));var logger=require(_0xa5d8('0x15'))(_0xa5d8('0x16'));var utils=require(_0xa5d8('0x17'));var config=require(_0xa5d8('0x18'));var licenseUtil=require(_0xa5d8('0x19'));var db=require(_0xa5d8('0x1a'))['db'];config[_0xa5d8('0x1b')]=_[_0xa5d8('0x1c')](config['redis'],{'host':_0xa5d8('0x1d'),'port':0x18eb});var socket=require(_0xa5d8('0x1e'))(new Redis(config[_0xa5d8('0x1b')]));require(_0xa5d8('0x1f'))[_0xa5d8('0x20')](socket);var jayson=require(_0xa5d8('0x21'));var client=jayson[_0xa5d8('0x22')][_0xa5d8('0x23')]({'port':0x232c});function respondWithRpcPromise(_0x5078a8,_0xa1dae8,_0x3f705d,_0xceb727){return new BPromise(function(_0x42abf7,_0x373983){var _0x5a48b9=_0xceb727||client;return _0x5a48b9[_0xa5d8('0x24')](_0x5078a8,_0x3f705d)[_0xa5d8('0x25')](function(_0xd82f63){logger[_0xa5d8('0x26')]('SmsAccount,\x20%s,\x20%s',_0xa1dae8,_0xa5d8('0x27'));logger['debug']('SmsAccount,\x20%s,\x20%s,\x20%s',_0xa1dae8,_0xa5d8('0x27'),JSON['stringify'](_0xd82f63));if(_0xd82f63[_0xa5d8('0x28')]){if(_0xd82f63['error'][_0xa5d8('0x29')]===0x1f4){logger['error'](_0xa5d8('0x2a'),_0xa1dae8,_0xd82f63[_0xa5d8('0x28')]['message']);return _0x373983(_0xd82f63[_0xa5d8('0x28')]['message']);}logger[_0xa5d8('0x28')](_0xa5d8('0x2a'),_0xa1dae8,_0xd82f63[_0xa5d8('0x28')]['message']);return _0x42abf7(_0xd82f63[_0xa5d8('0x28')][_0xa5d8('0x2b')]);}else{logger[_0xa5d8('0x26')](_0xa5d8('0x2a'),_0xa1dae8,_0xa5d8('0x27'));_0x42abf7(_0xd82f63[_0xa5d8('0x2c')][_0xa5d8('0x2b')]);}})['catch'](function(_0x430d1e){logger[_0xa5d8('0x28')](_0xa5d8('0x2a'),_0xa1dae8,_0x430d1e);_0x373983(_0x430d1e);});});}function respondWithStatusCode(_0x116415,_0x2b7c48){_0x2b7c48=_0x2b7c48||0xcc;return function(_0x1753ab){if(_0x1753ab){return _0x116415[_0xa5d8('0x2d')](_0x2b7c48);}return _0x116415[_0xa5d8('0x2e')](_0x2b7c48)[_0xa5d8('0x2f')]();};}function respondWithResult(_0x429a92,_0x337926){_0x337926=_0x337926||0xc8;return function(_0x2fbfba){if(_0x2fbfba){return _0x429a92[_0xa5d8('0x2e')](_0x337926)['json'](_0x2fbfba);}};}function respondWithFilteredResult(_0x34590b,_0x49127e){return function(_0x5db7cc){if(_0x5db7cc){var _0x21e429=typeof _0x49127e[_0xa5d8('0x30')]==='undefined'&&typeof _0x49127e[_0xa5d8('0x31')]===_0xa5d8('0x32');var _0x3601fe=_0x5db7cc[_0xa5d8('0x33')];var _0x23c6e9=_0x21e429?0x0:_0x49127e['offset'];var _0x126dc8=_0x21e429?_0x5db7cc['count']:_0x49127e[_0xa5d8('0x30')]+_0x49127e['limit'];var _0xae1603;if(_0x126dc8>=_0x3601fe){_0x126dc8=_0x3601fe;_0xae1603=0xc8;}else{_0xae1603=0xce;}_0x34590b[_0xa5d8('0x2e')](_0xae1603);return _0x34590b[_0xa5d8('0x34')](_0xa5d8('0x35'),_0x23c6e9+'-'+_0x126dc8+'/'+_0x3601fe)['json'](_0x5db7cc);}return null;};}function patchUpdates(_0x2b198a){return function(_0x3e5500){try{jsonpatch[_0xa5d8('0x36')](_0x3e5500,_0x2b198a,!![]);}catch(_0x23620b){return BPromise[_0xa5d8('0x37')](_0x23620b);}return _0x3e5500['save']();};}function saveUpdates(_0x3d04bd,_0x1efe6b){return function(_0x167a7d){if(_0x167a7d){return _0x167a7d[_0xa5d8('0x38')](_0x3d04bd)['then'](function(_0x14472c){return _0x14472c;});}return null;};}function removeEntity(_0x4fd6c2,_0x5e7880){return function(_0x5060e3){if(_0x5060e3){return _0x5060e3[_0xa5d8('0x39')]()[_0xa5d8('0x25')](function(){var _0x2b0fe7=_0x5060e3[_0xa5d8('0x3a')]({'plain':!![]});var _0x5abf63='SmsAccounts';return db[_0xa5d8('0x3b')][_0xa5d8('0x39')]({'where':{'type':_0x5abf63,'resourceId':_0x2b0fe7['id']}})[_0xa5d8('0x25')](function(){return _0x5060e3;});})[_0xa5d8('0x25')](function(){_0x4fd6c2[_0xa5d8('0x2e')](0xcc)[_0xa5d8('0x2f')]();});}};}function handleEntityNotFound(_0x1a3d9e,_0x43c82f){return function(_0x185694){if(!_0x185694){_0x1a3d9e[_0xa5d8('0x2d')](0x194);}return _0x185694;};}function handleError(_0x3f6563,_0x13e721){_0x13e721=_0x13e721||0x1f4;return function(_0x13048c){logger[_0xa5d8('0x28')](_0x13048c[_0xa5d8('0x3c')]);if(_0x13048c['name']){delete _0x13048c[_0xa5d8('0x3d')];}_0x3f6563['status'](_0x13e721)[_0xa5d8('0x3e')](_0x13048c);};}exports[_0xa5d8('0x3f')]=function(_0xe33d4d,_0x56cf5c){var _0x54d036={'include':[{'model':db['Pause'],'as':_0xa5d8('0x40')}]},_0x26588d={},_0x3e7c60={'count':0x0,'rows':[]};var _0x4eeb7e=_[_0xa5d8('0x41')](db[_0xa5d8('0x42')][_0xa5d8('0x43')],function(_0x10f19c){return{'name':_0x10f19c[_0xa5d8('0x44')],'type':_0x10f19c[_0xa5d8('0x45')]['key']};});_0x26588d['model']=_['map'](_0x4eeb7e,'name');_0x26588d[_0xa5d8('0x46')]=_[_0xa5d8('0x47')](_0xe33d4d['query']);_0x26588d[_0xa5d8('0x48')]=_['intersection'](_0x26588d[_0xa5d8('0x49')],_0x26588d[_0xa5d8('0x46')]);_0x54d036[_0xa5d8('0x4a')]=_['intersection'](_0x26588d[_0xa5d8('0x49')],qs[_0xa5d8('0x4b')](_0xe33d4d[_0xa5d8('0x46')]['fields']));_0x54d036[_0xa5d8('0x4a')]=_0x54d036[_0xa5d8('0x4a')][_0xa5d8('0x4c')]?_0x54d036[_0xa5d8('0x4a')]:_0x26588d[_0xa5d8('0x49')];if(!_0xe33d4d['query'][_0xa5d8('0x4d')]('nolimit')){_0x54d036['limit']=qs['limit'](_0xe33d4d[_0xa5d8('0x46')]['limit']);_0x54d036['offset']=qs[_0xa5d8('0x30')](_0xe33d4d[_0xa5d8('0x46')][_0xa5d8('0x30')]);}_0x54d036[_0xa5d8('0x4e')]=qs[_0xa5d8('0x4f')](_0xe33d4d[_0xa5d8('0x46')][_0xa5d8('0x4f')]);_0x54d036[_0xa5d8('0x50')]=qs['filters'](_[_0xa5d8('0x51')](_0xe33d4d['query'],_0x26588d['filters']),_0x4eeb7e);if(_0xe33d4d[_0xa5d8('0x46')][_0xa5d8('0x52')]){_0x54d036[_0xa5d8('0x50')]=_[_0xa5d8('0x53')](_0x54d036[_0xa5d8('0x50')],{'$or':_[_0xa5d8('0x41')](_0x4eeb7e,function(_0x2d3ab6){if(_0x2d3ab6[_0xa5d8('0x45')]!==_0xa5d8('0x54')){var _0x3b6a42={};_0x3b6a42[_0x2d3ab6[_0xa5d8('0x3d')]]={'$like':'%'+_0xe33d4d[_0xa5d8('0x46')][_0xa5d8('0x52')]+'%'};return _0x3b6a42;}})});}_0x54d036=_[_0xa5d8('0x53')]({},_0x54d036,_0xe33d4d[_0xa5d8('0x55')]);var _0xc0c6bb={'where':_0x54d036['where']};return db[_0xa5d8('0x42')][_0xa5d8('0x33')](_0xc0c6bb)['then'](function(_0x4c010f){_0x3e7c60[_0xa5d8('0x33')]=_0x4c010f;if(_0xe33d4d[_0xa5d8('0x46')][_0xa5d8('0x56')]){_0x54d036[_0xa5d8('0x57')]=[{'all':!![]}];}return db[_0xa5d8('0x42')][_0xa5d8('0x58')](_0x54d036);})[_0xa5d8('0x25')](function(_0x37351e){_0x3e7c60[_0xa5d8('0x59')]=_0x37351e;return _0x3e7c60;})[_0xa5d8('0x25')](respondWithFilteredResult(_0x56cf5c,_0x54d036))[_0xa5d8('0x5a')](handleError(_0x56cf5c,null));};exports[_0xa5d8('0x5b')]=function(_0x5bbeb8,_0x4cf09a){var _0x39271e={'raw':![],'where':{'id':_0x5bbeb8[_0xa5d8('0x5c')]['id']},'include':[{'model':db[_0xa5d8('0x5d')],'as':'mandatoryDispositionPause'}]},_0x2110df={};_0x2110df['model']=_[_0xa5d8('0x47')](db['SmsAccount']['rawAttributes']);_0x2110df[_0xa5d8('0x46')]=_[_0xa5d8('0x47')](_0x5bbeb8[_0xa5d8('0x46')]);_0x2110df[_0xa5d8('0x48')]=_['intersection'](_0x2110df['model'],_0x2110df['query']);_0x39271e['attributes']=_[_0xa5d8('0x5e')](_0x2110df[_0xa5d8('0x49')],qs['fields'](_0x5bbeb8[_0xa5d8('0x46')][_0xa5d8('0x4b')]));_0x39271e['attributes']=_0x39271e['attributes'][_0xa5d8('0x4c')]?_0x39271e[_0xa5d8('0x4a')]:_0x2110df[_0xa5d8('0x49')];if(_0x5bbeb8[_0xa5d8('0x46')][_0xa5d8('0x56')]){_0x39271e[_0xa5d8('0x57')]=[{'all':!![]}];}_0x39271e=_[_0xa5d8('0x53')]({},_0x39271e,_0x5bbeb8['options']);return db['SmsAccount'][_0xa5d8('0x5f')](_0x39271e)[_0xa5d8('0x25')](handleEntityNotFound(_0x4cf09a,null))['then'](respondWithResult(_0x4cf09a,null))[_0xa5d8('0x5a')](handleError(_0x4cf09a,null));};exports['create']=function(_0x85c128,_0x4731cc){return db[_0xa5d8('0x42')]['create'](_0x85c128[_0xa5d8('0x60')],{})[_0xa5d8('0x25')](function(_0x46d417){var _0xc87f8c=_0x85c128[_0xa5d8('0x61')][_0xa5d8('0x3a')]({'plain':!![]});if(!_0xc87f8c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xc87f8c[_0xa5d8('0x62')]==='user'){var _0x5dcac6=_0x46d417['get']({'plain':!![]});var _0x13ad36=_0xa5d8('0x63');return db[_0xa5d8('0x64')][_0xa5d8('0x5f')]({'where':{'name':_0x13ad36,'userProfileId':_0xc87f8c[_0xa5d8('0x65')]},'raw':!![]})[_0xa5d8('0x25')](function(_0x206e92){if(_0x206e92&&_0x206e92[_0xa5d8('0x66')]===0x0){return db['UserProfileResource'][_0xa5d8('0x67')]({'name':_0x5dcac6[_0xa5d8('0x3d')],'resourceId':_0x5dcac6['id'],'type':_0x206e92[_0xa5d8('0x3d')],'sectionId':_0x206e92['id']},{})[_0xa5d8('0x25')](function(){return _0x46d417;});}else{return _0x46d417;}})[_0xa5d8('0x5a')](function(_0xe796c7){logger[_0xa5d8('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xe796c7);throw _0xe796c7;});}return _0x46d417;})['then'](respondWithResult(_0x4731cc,0xc9))[_0xa5d8('0x5a')](handleError(_0x4731cc,null));};exports[_0xa5d8('0x38')]=function(_0x16fb62,_0x316f94){if(_0x16fb62[_0xa5d8('0x60')]['id']){delete _0x16fb62['body']['id'];}return db[_0xa5d8('0x42')][_0xa5d8('0x5f')]({'where':{'id':_0x16fb62[_0xa5d8('0x5c')]['id']},'include':[{'model':db[_0xa5d8('0x5d')],'as':'mandatoryDispositionPause'}]})[_0xa5d8('0x25')](handleEntityNotFound(_0x316f94,null))[_0xa5d8('0x25')](saveUpdates(_0x16fb62[_0xa5d8('0x60')],null))[_0xa5d8('0x25')](respondWithResult(_0x316f94,null))[_0xa5d8('0x5a')](handleError(_0x316f94,null));};exports[_0xa5d8('0x39')]=function(_0x1e463e,_0x15b5fc){return db[_0xa5d8('0x42')]['find']({'where':{'id':_0x1e463e[_0xa5d8('0x5c')]['id']}})[_0xa5d8('0x25')](handleEntityNotFound(_0x15b5fc,null))[_0xa5d8('0x25')](removeEntity(_0x15b5fc,null))['catch'](handleError(_0x15b5fc,null));};exports[_0xa5d8('0x68')]=function(_0x340ab9,_0x216955){return db[_0xa5d8('0x42')][_0xa5d8('0x68')]()[_0xa5d8('0x25')](respondWithResult(_0x216955,null))[_0xa5d8('0x5a')](handleError(_0x216955,null));};exports[_0xa5d8('0x69')]=function(_0x1c988d,_0x85273e,_0x4e3bd0){if(_0x1c988d[_0xa5d8('0x60')]['id']){delete _0x1c988d[_0xa5d8('0x60')]['id'];}return db[_0xa5d8('0x42')][_0xa5d8('0x5f')]({'where':{'id':_0x1c988d[_0xa5d8('0x5c')]['id']}})[_0xa5d8('0x25')](handleEntityNotFound(_0x85273e,null))[_0xa5d8('0x25')](function(_0x4d9de6){if(_0x4d9de6){_0x1c988d['body'][_0xa5d8('0x6a')]=_0x4d9de6['id'];return db[_0xa5d8('0x6b')]['create'](_0x1c988d[_0xa5d8('0x60')]);}})[_0xa5d8('0x25')](respondWithResult(_0x85273e,null))[_0xa5d8('0x5a')](handleError(_0x85273e,null));};exports[_0xa5d8('0x6c')]=function(_0x384cc9,_0x261de5,_0x344e57){var _0x54f92e={'raw':![],'where':{}};var _0x4c7f01={};var _0x1e08d1={'count':0x0,'rows':[]};return db[_0xa5d8('0x42')]['findOne']({'where':{'id':_0x384cc9[_0xa5d8('0x5c')]['id']}})[_0xa5d8('0x25')](handleEntityNotFound(_0x261de5,null))[_0xa5d8('0x25')](function(_0x13b1ab){if(_0x13b1ab){_0x4c7f01['model']=_[_0xa5d8('0x47')](db['Disposition']['rawAttributes']);_0x4c7f01[_0xa5d8('0x46')]=_[_0xa5d8('0x47')](_0x384cc9[_0xa5d8('0x46')]);_0x4c7f01[_0xa5d8('0x48')]=_[_0xa5d8('0x5e')](_0x4c7f01[_0xa5d8('0x49')],_0x4c7f01[_0xa5d8('0x46')]);_0x54f92e[_0xa5d8('0x4a')]=_[_0xa5d8('0x5e')](_0x4c7f01[_0xa5d8('0x49')],qs['fields'](_0x384cc9[_0xa5d8('0x46')]['fields']));_0x54f92e['attributes']=_0x54f92e[_0xa5d8('0x4a')]['length']?_0x54f92e[_0xa5d8('0x4a')]:_0x4c7f01[_0xa5d8('0x49')];if(!_0x384cc9['query'][_0xa5d8('0x4d')](_0xa5d8('0x6d'))){_0x54f92e['limit']=qs[_0xa5d8('0x31')](_0x384cc9['query'][_0xa5d8('0x31')]);_0x54f92e[_0xa5d8('0x30')]=qs[_0xa5d8('0x30')](_0x384cc9['query'][_0xa5d8('0x30')]);}_0x54f92e['order']=qs[_0xa5d8('0x4f')](_0x384cc9[_0xa5d8('0x46')][_0xa5d8('0x4f')]);_0x54f92e[_0xa5d8('0x50')]=qs[_0xa5d8('0x48')](_[_0xa5d8('0x51')](_0x384cc9[_0xa5d8('0x46')],_0x4c7f01['filters']));_0x54f92e[_0xa5d8('0x50')]['SmsAccountId']=_0x13b1ab['id'];if(_0x384cc9[_0xa5d8('0x46')][_0xa5d8('0x52')]){_0x54f92e['where']=_['merge'](_0x54f92e[_0xa5d8('0x50')],{'$or':_[_0xa5d8('0x41')](_0x54f92e[_0xa5d8('0x4a')],function(_0x2deefb){var _0x20af2a={};_0x20af2a[_0x2deefb]={'$like':'%'+_0x384cc9['query'][_0xa5d8('0x52')]+'%'};return _0x20af2a;})});}_0x54f92e=_[_0xa5d8('0x53')]({},_0x54f92e,_0x384cc9[_0xa5d8('0x55')]);return db[_0xa5d8('0x6b')][_0xa5d8('0x33')]({'where':_0x54f92e['where']})[_0xa5d8('0x25')](function(_0xb42d35){_0x1e08d1[_0xa5d8('0x33')]=_0xb42d35;if(_0x384cc9[_0xa5d8('0x46')][_0xa5d8('0x56')]){_0x54f92e[_0xa5d8('0x57')]=[{'all':!![]}];}return db[_0xa5d8('0x6b')][_0xa5d8('0x58')](_0x54f92e);})[_0xa5d8('0x25')](function(_0x140a7e){_0x1e08d1[_0xa5d8('0x59')]=_0x140a7e;return _0x1e08d1;});}})[_0xa5d8('0x25')](respondWithFilteredResult(_0x261de5,_0x54f92e))[_0xa5d8('0x5a')](handleError(_0x261de5,null));};exports[_0xa5d8('0x6e')]=function(_0x337ac4,_0x5886ab,_0xc670d9){return db['SmsAccount'][_0xa5d8('0x5f')]({'where':{'id':_0x337ac4[_0xa5d8('0x5c')]['id']}})[_0xa5d8('0x25')](handleEntityNotFound(_0x5886ab,null))['then'](function(_0x3a9ff7){if(_0x3a9ff7){return _0x3a9ff7[_0xa5d8('0x6e')](_0x337ac4['query'][_0xa5d8('0x6f')]);}})[_0xa5d8('0x25')](respondWithStatusCode(_0x5886ab,null))[_0xa5d8('0x5a')](handleError(_0x5886ab,null));};exports[_0xa5d8('0x70')]=function(_0x24dc1a,_0x48ebab,_0x4f9b2d){if(_0x24dc1a[_0xa5d8('0x60')]['id']){delete _0x24dc1a['body']['id'];}return db[_0xa5d8('0x42')][_0xa5d8('0x5f')]({'where':{'id':_0x24dc1a['params']['id']}})['then'](handleEntityNotFound(_0x48ebab,null))[_0xa5d8('0x25')](function(_0x37b862){if(_0x37b862){_0x24dc1a['body'][_0xa5d8('0x6a')]=_0x37b862['id'];return db['CannedAnswer'][_0xa5d8('0x67')](_0x24dc1a['body']);}})[_0xa5d8('0x25')](respondWithResult(_0x48ebab,null))['catch'](handleError(_0x48ebab,null));};exports[_0xa5d8('0x71')]=function(_0x4eac96,_0x1d3dbb,_0x35d160){var _0x51ea3d={'raw':![],'where':{}};var _0x3387e8={};var _0xb4cb79={'count':0x0,'rows':[]};return db[_0xa5d8('0x42')][_0xa5d8('0x72')]({'where':{'id':_0x4eac96[_0xa5d8('0x5c')]['id']}})[_0xa5d8('0x25')](handleEntityNotFound(_0x1d3dbb,null))[_0xa5d8('0x25')](function(_0x4eb4e0){if(_0x4eb4e0){_0x3387e8['model']=_[_0xa5d8('0x47')](db[_0xa5d8('0x73')]['rawAttributes']);_0x3387e8[_0xa5d8('0x46')]=_[_0xa5d8('0x47')](_0x4eac96['query']);_0x3387e8['filters']=_[_0xa5d8('0x5e')](_0x3387e8[_0xa5d8('0x49')],_0x3387e8['query']);_0x51ea3d[_0xa5d8('0x4a')]=_[_0xa5d8('0x5e')](_0x3387e8['model'],qs[_0xa5d8('0x4b')](_0x4eac96[_0xa5d8('0x46')][_0xa5d8('0x4b')]));_0x51ea3d[_0xa5d8('0x4a')]=_0x51ea3d['attributes'][_0xa5d8('0x4c')]?_0x51ea3d[_0xa5d8('0x4a')]:_0x3387e8[_0xa5d8('0x49')];if(!_0x4eac96[_0xa5d8('0x46')][_0xa5d8('0x4d')]('nolimit')){_0x51ea3d['limit']=qs[_0xa5d8('0x31')](_0x4eac96['query']['limit']);_0x51ea3d[_0xa5d8('0x30')]=qs[_0xa5d8('0x30')](_0x4eac96[_0xa5d8('0x46')]['offset']);}_0x51ea3d[_0xa5d8('0x4e')]=qs[_0xa5d8('0x4f')](_0x4eac96['query'][_0xa5d8('0x4f')]);_0x51ea3d[_0xa5d8('0x50')]=qs['filters'](_['pick'](_0x4eac96['query'],_0x3387e8[_0xa5d8('0x48')]));_0x51ea3d[_0xa5d8('0x50')][_0xa5d8('0x6a')]=_0x4eb4e0['id'];if(_0x4eac96[_0xa5d8('0x46')]['filter']){_0x51ea3d['where']=_[_0xa5d8('0x53')](_0x51ea3d[_0xa5d8('0x50')],{'$or':_['map'](_0x51ea3d['attributes'],function(_0x5cd649){var _0x1e89bd={};_0x1e89bd[_0x5cd649]={'$like':'%'+_0x4eac96['query'][_0xa5d8('0x52')]+'%'};return _0x1e89bd;})});}_0x51ea3d=_[_0xa5d8('0x53')]({},_0x51ea3d,_0x4eac96[_0xa5d8('0x55')]);return db[_0xa5d8('0x73')][_0xa5d8('0x33')]({'where':_0x51ea3d[_0xa5d8('0x50')]})[_0xa5d8('0x25')](function(_0x2b0863){_0xb4cb79[_0xa5d8('0x33')]=_0x2b0863;if(_0x4eac96[_0xa5d8('0x46')][_0xa5d8('0x56')]){_0x51ea3d['include']=[{'all':!![]}];}return db['CannedAnswer'][_0xa5d8('0x58')](_0x51ea3d);})[_0xa5d8('0x25')](function(_0x19799c){_0xb4cb79[_0xa5d8('0x59')]=_0x19799c;return _0xb4cb79;});}})[_0xa5d8('0x25')](respondWithFilteredResult(_0x1d3dbb,_0x51ea3d))[_0xa5d8('0x5a')](handleError(_0x1d3dbb,null));};exports[_0xa5d8('0x74')]=function(_0x56004a,_0x5d76dc,_0x4f9476){return db[_0xa5d8('0x42')]['find']({'where':{'id':_0x56004a[_0xa5d8('0x5c')]['id']}})[_0xa5d8('0x25')](handleEntityNotFound(_0x5d76dc,null))['then'](function(_0x253655){if(_0x253655){return _0x253655[_0xa5d8('0x74')](_0x56004a['query'][_0xa5d8('0x6f')]);}})[_0xa5d8('0x25')](respondWithStatusCode(_0x5d76dc,null))[_0xa5d8('0x5a')](handleError(_0x5d76dc,null));};exports[_0xa5d8('0x75')]=function(_0x51103b,_0x5683ce,_0x4ea3e7){var _0x5a64e2={'channel':'sms'};var _0x32e204=[];var _0x1606d2=[];var _0x5b43b6={};return db['SmsAccount'][_0xa5d8('0x5f')]({'where':{'id':_0x51103b[_0xa5d8('0x5c')]['id']},'include':[{'model':db[_0xa5d8('0x76')],'as':_0xa5d8('0x77')}]})[_0xa5d8('0x25')](handleEntityNotFound(_0x5683ce,null))[_0xa5d8('0x25')](function(_0x489fc8){_0x5a64e2['account']=_0x489fc8;_0x5a64e2[_0xa5d8('0x78')]=_[_0xa5d8('0x79')](_0x489fc8[_0xa5d8('0x77')],['priority'],[_0xa5d8('0x7a')]);if(_0x5a64e2['account'][_0xa5d8('0x77')]){delete _0x5a64e2[_0xa5d8('0x7b')][_0xa5d8('0x77')];}return db['CmContact'][_0xa5d8('0x68')]();})[_0xa5d8('0x25')](function(_0x546eac){if(!_0x546eac){throw new db['Sequelize'][(_0xa5d8('0x7c'))](_0xa5d8('0x7d'));}_0x32e204=_[_0xa5d8('0x7e')](_[_0xa5d8('0x47')](_0x546eac),[_0xa5d8('0x7f'),_0xa5d8('0x80')]);_0x1606d2=_[_0xa5d8('0x7e')](_['keys'](_0x546eac),[_0xa5d8('0x7f'),'updatedAt',_0xa5d8('0x81'),_0xa5d8('0x82')]);_0x5a64e2['body']={'mapKey':_0xa5d8('0x83')};if(_0x5a64e2['account'][_0xa5d8('0x45')]){switch(_0x5a64e2[_0xa5d8('0x7b')]['type']){case _0xa5d8('0x84'):_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x85')]=_0x51103b[_0xa5d8('0x60')][_0xa5d8('0x86')];_0x5a64e2['body'][_0xa5d8('0x60')]=_0x51103b[_0xa5d8('0x60')][_0xa5d8('0x87')];_0x5a64e2['body'][_0xa5d8('0x88')]=_0x51103b[_0xa5d8('0x60')][_0xa5d8('0x89')];break;case _0xa5d8('0x8a'):_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x85')]='+'+_0x51103b[_0xa5d8('0x60')][_0xa5d8('0x8b')];_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x60')]=_0x51103b[_0xa5d8('0x60')]['text'];break;case'connectel':_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x85')]=_0x51103b[_0xa5d8('0x60')][_0xa5d8('0x85')];_0x5a64e2[_0xa5d8('0x60')]['body']=_0x51103b[_0xa5d8('0x60')][_0xa5d8('0x2b')];break;case'clicksend':_0x5a64e2[_0xa5d8('0x60')]['from']=_0x51103b[_0xa5d8('0x60')][_0xa5d8('0x85')];_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x60')]=_0x51103b[_0xa5d8('0x60')][_0xa5d8('0x60')];_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x88')]=_0x51103b['body'][_0xa5d8('0x8c')];break;case _0xa5d8('0x8d'):_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x85')]=_0x51103b[_0xa5d8('0x60')]['From'];_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x60')]=_0x51103b['body'][_0xa5d8('0x8e')];_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x88')]=_0x51103b[_0xa5d8('0x60')][_0xa5d8('0x8f')];break;case _0xa5d8('0x90'):_0x5a64e2['body'][_0xa5d8('0x85')]='+'+_0x51103b[_0xa5d8('0x60')][_0xa5d8('0x91')][0x0][_0xa5d8('0x85')];_0x5a64e2[_0xa5d8('0x60')]['body']=_0x51103b[_0xa5d8('0x60')][_0xa5d8('0x91')][0x0][_0xa5d8('0x92')];_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x88')]=_0x51103b['body'][_0xa5d8('0x91')][0x0][_0xa5d8('0x88')];break;case _0xa5d8('0x93'):_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x85')]=_0x51103b[_0xa5d8('0x60')][_0xa5d8('0x94')];_0x5a64e2['body'][_0xa5d8('0x60')]=_0x51103b[_0xa5d8('0x60')][_0xa5d8('0x95')][_0xa5d8('0x2b')];break;case'clickatell':_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x85')]=_0x51103b[_0xa5d8('0x60')]['fromNumber'];_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x60')]=_0x51103b[_0xa5d8('0x60')][_0xa5d8('0x92')];_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x88')]=_0x51103b[_0xa5d8('0x60')][_0xa5d8('0x96')];break;case _0xa5d8('0x97'):_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x88')]=_0x51103b['body'][0x0][_0xa5d8('0x2b')]['id'];_0x5a64e2['body'][_0xa5d8('0x85')]=_0x51103b['body'][0x0][_0xa5d8('0x2b')][_0xa5d8('0x85')];_0x5a64e2['body']['body']=_0x51103b[_0xa5d8('0x60')][0x0][_0xa5d8('0x2b')][_0xa5d8('0x92')];break;case _0xa5d8('0x98'):_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x85')]=_0x51103b['body']['from'];_0x5a64e2[_0xa5d8('0x60')]['body']=_0x51103b[_0xa5d8('0x60')][_0xa5d8('0x2b')];_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x88')]=_0x51103b['body']['refid'];break;}}if(_0x5a64e2[_0xa5d8('0x60')]['id']){delete _0x5a64e2[_0xa5d8('0x60')]['id'];}if(_['isNil'](_0x5a64e2['body'][_0xa5d8('0x85')])){throw new db['Sequelize'][(_0xa5d8('0x7c'))]('from\x20is\x20mandatory');}if(_[_0xa5d8('0x99')](_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x60')])||_0x5a64e2[_0xa5d8('0x60')]['body']===''){throw new db['Sequelize']['ValidationError'](_0xa5d8('0x9a'));}if(_['isNil'](_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x9b')])){throw new db[(_0xa5d8('0x9c'))]['ValidationError'](_0xa5d8('0x9d')+_0x1606d2);}if(!_[_0xa5d8('0x9e')](_0x1606d2,_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x9b')])){throw new db['Sequelize'][(_0xa5d8('0x7c'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x1606d2);}_0x5b43b6[_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x9b')]]=_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x85')];return db['CmList'][_0xa5d8('0x5f')]({'where':{'id':_0x5a64e2[_0xa5d8('0x7b')][_0xa5d8('0x82')]},'include':[{'model':db[_0xa5d8('0x9f')],'as':_0xa5d8('0xa0'),'where':_0x5b43b6,'limit':0x1,'order':[['updatedAt',_0xa5d8('0xa1')]]}]});})['then'](handleEntityNotFound(_0x5683ce,null))[_0xa5d8('0x25')](function(_0x52abea){if(_0x52abea){_0x5a64e2[_0xa5d8('0xa2')]=_['omit'](_0x52abea,['Contacts']);if(_0x52abea['Contacts'][_0xa5d8('0x4c')]){return _0x52abea[_0xa5d8('0xa0')][0x0];}var _0x40af16=_[_0xa5d8('0x1c')](_0x5a64e2[_0xa5d8('0x60')],{'firstName':_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x85')],'ListId':_0x52abea['id']});_0x40af16[_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x9b')]]=_0x5a64e2[_0xa5d8('0x60')]['from'];return db[_0xa5d8('0x9f')][_0xa5d8('0x67')](_0x40af16,{'fields':_0x32e204,'raw':!![]});}})[_0xa5d8('0x25')](handleEntityNotFound(_0x5683ce,null))[_0xa5d8('0x25')](function(_0x3d17c7){if(_0x3d17c7){_0x5a64e2['contact']=_0x3d17c7;var _0x296b62={'ContactId':_0x3d17c7['id'],'phone':_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x85')],'SmsAccountId':_0x51103b['params']['id']};var _0x5d17a5={'ContactId':_0x3d17c7['id'],'SmsAccountId':_0x51103b['params']['id'],'closed':![]};return db[_0xa5d8('0xa3')][_0xa5d8('0x5f')]({'where':_0x5d17a5})[_0xa5d8('0x25')](function(_0x819cc5){if(_0x819cc5){return[_0x819cc5,![]];}return db[_0xa5d8('0xa3')][_0xa5d8('0x67')](_0x296b62)[_0xa5d8('0x25')](function(_0x30e204){return[_0x30e204,!![]];});});}})[_0xa5d8('0xa4')](function(_0x261c5b,_0x5e335d){_0x5a64e2['interaction']=_0x261c5b['get']({'plain':!![]});_0x5a64e2[_0xa5d8('0xa5')][_0xa5d8('0xa6')]=![];if(_0x5e335d){if(_0x5a64e2['account']['autoclose']){_0x5a64e2['applications'][_0xa5d8('0xa7')]({'id':0x0,'priority':_0x5a64e2[_0xa5d8('0x78')][_0xa5d8('0x4c')]+0x1,'app':_0xa5d8('0xa8'),'appdata':_0xa5d8('0xa9'),'interval':_0xa5d8('0xaa')});}_0x5a64e2[_0xa5d8('0xa5')][_0xa5d8('0xa6')]=!![];}return db['SmsMessage'][_0xa5d8('0x67')]({'phone':_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x85')],'messageId':_0x5a64e2['body']['messageId'],'body':_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0x60')],'SmsAccountId':_0x51103b[_0xa5d8('0x5c')]['id'],'SmsInteractionId':_0x261c5b['id'],'direction':'in','ContactId':_0x261c5b['ContactId'],'AttachmentId':_0x5a64e2[_0xa5d8('0x60')][_0xa5d8('0xab')]});})[_0xa5d8('0x25')](function(_0x464aa7){_0x5a64e2[_0xa5d8('0x2b')]=_0x464aa7;if(_0x5a64e2['interaction'][_0xa5d8('0xac')]){return db[_0xa5d8('0xad')]['find']({'attributes':['id','name'],'where':{'id':_0x5a64e2[_0xa5d8('0xa5')][_0xa5d8('0xac')]}})[_0xa5d8('0x25')](function(_0x58f04c){if(_0x58f04c){_0x5a64e2[_0xa5d8('0x78')]['unshift']({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x58f04c[_0xa5d8('0x3d')]+','+(_0x5a64e2[_0xa5d8('0x7b')][_0xa5d8('0xae')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0xa5d8('0xaf'),'startRouting',_0x5a64e2);});}return respondWithRpcPromise(_0xa5d8('0xaf'),_0xa5d8('0xb0'),_0x5a64e2);})[_0xa5d8('0x25')](function(_0x4cf487){if(_0x4cf487){var _0xdb91dd=0xc8;var _0x13f427=_0xa5d8('0xb1');logger[_0xa5d8('0x26')](_0xa5d8('0xb2'),_0x13f427,_0xdb91dd,_0xa5d8('0xb3'));logger[_0xa5d8('0xb4')](_0xa5d8('0xb5'),_0x13f427,_0xdb91dd,_0xa5d8('0xb3'),JSON[_0xa5d8('0xb6')](_0x4cf487));if(_0x5a64e2[_0xa5d8('0x7b')]['type']===_0xa5d8('0x84')){return _0x5683ce[_0xa5d8('0x2e')](_0xdb91dd)['set'](_0xa5d8('0xb7'),_0xa5d8('0xb8'))[_0xa5d8('0x3e')](_0xa5d8('0xb9'));}else{return _0x5683ce[_0xa5d8('0x2e')](_0xdb91dd)[_0xa5d8('0xba')](_0x4cf487);}}})['catch'](handleError(_0x5683ce,null));};exports[_0xa5d8('0xbb')]=function(_0x4d6e70,_0x22733c){var _0xa287d8=_0x4d6e70[_0xa5d8('0x5c')]['id'];var _0x26f8cc=_0x4d6e70['body'];var _0x4fbc77=0xc8;var _0x2df24b=null;return db[_0xa5d8('0xbc')][_0xa5d8('0xbd')]({'isolationLevel':db[_0xa5d8('0xbc')]['Transaction']['ISOLATION_LEVELS'][_0xa5d8('0xbe')]},function(_0xc2fd58){return db[_0xa5d8('0x42')][_0xa5d8('0x72')]({'where':{'id':_0xa287d8},'transaction':_0xc2fd58})['then'](function(_0x4aeb93){if(_0x4aeb93){return db['SmsApplication'][_0xa5d8('0x39')]({'where':{'SmsAccountId':_0xa287d8},'transaction':_0xc2fd58})['then'](function(){var _0x1b98a3=_[_0xa5d8('0x41')](_0x26f8cc,function(_0x31ca51){_0x31ca51[_0xa5d8('0x6a')]=_0xa287d8;return _0x31ca51;});return db[_0xa5d8('0x76')]['bulkCreate'](_0x1b98a3,{'transaction':_0xc2fd58});});}else{_0x4fbc77=0x194;_0x2df24b=[];}});})['then'](function(){if(_0x4fbc77!==0x194){return db[_0xa5d8('0x76')][_0xa5d8('0xbf')]({'where':{'SmsAccountId':_0xa287d8},'order':_0xa5d8('0xc0')})[_0xa5d8('0x25')](function(_0x3fda50){_0x2df24b=_0x3fda50;});}})[_0xa5d8('0x5a')](function(_0x4594d3){_0x4fbc77=0x1f4;logger['error'](_0x4594d3[_0xa5d8('0x3c')]);if(_0x4594d3['name']){delete _0x4594d3[_0xa5d8('0x3d')];}_0x2df24b=_0x4594d3;})['finally'](function(){if(_0x2df24b===null){_0x22733c[_0xa5d8('0x2d')](_0x4fbc77);}else{if(_0x4fbc77===0x1f4){_0x22733c['status'](_0x4fbc77)[_0xa5d8('0x3e')](_0x2df24b);}else{_0x22733c[_0xa5d8('0x2e')](_0x4fbc77)[_0xa5d8('0xba')](_0x2df24b);}}});};exports['getApplications']=function(_0x4755e4,_0x422f62,_0x54d897){var _0x3ed0a6={};var _0x594eca={};var _0x11768a;var _0x545b63;return db[_0xa5d8('0x42')][_0xa5d8('0x72')]({'where':{'id':_0x4755e4[_0xa5d8('0x5c')]['id']}})[_0xa5d8('0x25')](handleEntityNotFound(_0x422f62,null))[_0xa5d8('0x25')](function(_0x1a1d65){if(_0x1a1d65){_0x11768a=_0x1a1d65;_0x594eca[_0xa5d8('0x49')]=_[_0xa5d8('0x47')](db[_0xa5d8('0x76')][_0xa5d8('0x43')]);_0x594eca[_0xa5d8('0x46')]=_[_0xa5d8('0x47')](_0x4755e4[_0xa5d8('0x46')]);_0x594eca[_0xa5d8('0x48')]=_[_0xa5d8('0x5e')](_0x594eca[_0xa5d8('0x49')],_0x594eca[_0xa5d8('0x46')]);_0x3ed0a6[_0xa5d8('0x4a')]=_[_0xa5d8('0x5e')](_0x594eca['model'],qs[_0xa5d8('0x4b')](_0x4755e4['query']['fields']));_0x3ed0a6[_0xa5d8('0x4a')]=_0x3ed0a6[_0xa5d8('0x4a')][_0xa5d8('0x4c')]?_0x3ed0a6[_0xa5d8('0x4a')]:_0x594eca[_0xa5d8('0x49')];_0x3ed0a6[_0xa5d8('0x4e')]=qs[_0xa5d8('0x4f')](_0x4755e4[_0xa5d8('0x46')][_0xa5d8('0x4f')]);_0x3ed0a6[_0xa5d8('0x50')]=qs['filters'](_[_0xa5d8('0x51')](_0x4755e4[_0xa5d8('0x46')],_0x594eca['filters']));if(_0x4755e4[_0xa5d8('0x46')]['filter']){_0x3ed0a6[_0xa5d8('0x50')]=_[_0xa5d8('0x53')](_0x3ed0a6['where'],{'$or':_['map'](_0x3ed0a6[_0xa5d8('0x4a')],function(_0x44d657){var _0xd5551d={};_0xd5551d[_0x44d657]={'$like':'%'+_0x4755e4[_0xa5d8('0x46')][_0xa5d8('0x52')]+'%'};return _0xd5551d;})});}_0x3ed0a6=_[_0xa5d8('0x53')]({},_0x3ed0a6,_0x4755e4[_0xa5d8('0x55')]);return _0x11768a[_0xa5d8('0xc1')](_0x3ed0a6);}})[_0xa5d8('0x25')](function(_0x35ba77){if(_0x35ba77){_0x545b63=_0x35ba77[_0xa5d8('0x4c')];if(!_0x4755e4[_0xa5d8('0x46')][_0xa5d8('0x4d')](_0xa5d8('0x6d'))){_0x3ed0a6[_0xa5d8('0x31')]=qs['limit'](_0x4755e4['query'][_0xa5d8('0x31')]);_0x3ed0a6[_0xa5d8('0x30')]=qs[_0xa5d8('0x30')](_0x4755e4[_0xa5d8('0x46')][_0xa5d8('0x30')]);}return _0x11768a[_0xa5d8('0xc1')](_0x3ed0a6);}})['then'](function(_0x222d9f){if(_0x222d9f){return _0x222d9f?{'count':_0x545b63,'rows':_0x222d9f}:null;}})['then'](respondWithResult(_0x422f62,null))[_0xa5d8('0x5a')](handleError(_0x422f62,null));};exports['getInteractions']=function(_0x5dc9e4,_0xe6e28e,_0x2fc6d2){var _0x5112c6={'raw':![],'where':{}};var _0x5eabb8={};var _0x4d4b08={'count':0x0,'rows':[]};return db[_0xa5d8('0x42')][_0xa5d8('0x72')]({'where':{'id':_0x5dc9e4['params']['id']}})[_0xa5d8('0x25')](handleEntityNotFound(_0xe6e28e,null))['then'](function(_0x7b396f){if(_0x7b396f){_0x5eabb8[_0xa5d8('0x49')]=_[_0xa5d8('0x47')](db['SmsInteraction']['rawAttributes']);_0x5eabb8[_0xa5d8('0x46')]=_['keys'](_0x5dc9e4['query']);_0x5eabb8[_0xa5d8('0x48')]=_[_0xa5d8('0x5e')](_0x5eabb8[_0xa5d8('0x49')],_0x5eabb8['query']);_0x5112c6[_0xa5d8('0x4a')]=_[_0xa5d8('0x5e')](_0x5eabb8['model'],qs[_0xa5d8('0x4b')](_0x5dc9e4[_0xa5d8('0x46')][_0xa5d8('0x4b')]));_0x5112c6[_0xa5d8('0x4a')]=_0x5112c6[_0xa5d8('0x4a')]['length']?_0x5112c6[_0xa5d8('0x4a')]:_0x5eabb8['model'];if(!_0x5dc9e4[_0xa5d8('0x46')][_0xa5d8('0x4d')]('nolimit')){_0x5112c6[_0xa5d8('0x31')]=qs[_0xa5d8('0x31')](_0x5dc9e4[_0xa5d8('0x46')][_0xa5d8('0x31')]);_0x5112c6[_0xa5d8('0x30')]=qs[_0xa5d8('0x30')](_0x5dc9e4[_0xa5d8('0x46')][_0xa5d8('0x30')]);}_0x5112c6[_0xa5d8('0x4e')]=qs[_0xa5d8('0x4f')](_0x5dc9e4[_0xa5d8('0x46')][_0xa5d8('0x4f')]);_0x5112c6[_0xa5d8('0x50')]=qs[_0xa5d8('0x48')](_[_0xa5d8('0x51')](_0x5dc9e4[_0xa5d8('0x46')],_0x5eabb8['filters']));_0x5112c6['where'][_0xa5d8('0x6a')]=_0x7b396f['id'];if(_0x5dc9e4[_0xa5d8('0x46')][_0xa5d8('0x52')]){_0x5112c6[_0xa5d8('0x50')]=_[_0xa5d8('0x53')](_0x5112c6['where'],{'$or':_[_0xa5d8('0x41')](_0x5112c6[_0xa5d8('0x4a')],function(_0x8b1893){var _0x45129a={};_0x45129a[_0x8b1893]={'$like':'%'+_0x5dc9e4[_0xa5d8('0x46')][_0xa5d8('0x52')]+'%'};return _0x45129a;})});}_0x5112c6=_[_0xa5d8('0x53')]({},_0x5112c6,_0x5dc9e4['options']);return db[_0xa5d8('0xa3')][_0xa5d8('0x33')]({'where':_0x5112c6['where']})['then'](function(_0x2f2fa1){_0x4d4b08[_0xa5d8('0x33')]=_0x2f2fa1;if(_0x5dc9e4[_0xa5d8('0x46')][_0xa5d8('0x56')]){_0x5112c6['include']=[{'model':db[_0xa5d8('0x9f')],'as':_0xa5d8('0xc2'),'required':![]},{'model':db[_0xa5d8('0xad')],'as':_0xa5d8('0xc3'),'attributes':[_0xa5d8('0x3d'),_0xa5d8('0xc4'),_0xa5d8('0xc5')],'required':![]},{'model':db['Tag'],'as':_0xa5d8('0xc6'),'attributes':['id',_0xa5d8('0x3d'),_0xa5d8('0xc7')],'where':_0x5dc9e4[_0xa5d8('0x46')][_0xa5d8('0xc8')]?{'id':_0x5dc9e4['query']['tag']}:undefined,'required':_0x5dc9e4[_0xa5d8('0x46')][_0xa5d8('0xc8')]?!![]:![]}];}return db['SmsInteraction'][_0xa5d8('0x58')](_0x5112c6);})[_0xa5d8('0x25')](function(_0x1fa6a1){_0x4d4b08[_0xa5d8('0x59')]=_0x1fa6a1;return _0x4d4b08;});}})['then'](respondWithFilteredResult(_0xe6e28e,_0x5112c6))['catch'](handleError(_0xe6e28e,null));};exports[_0xa5d8('0x3e')]=function(_0x56a11e,_0x16833e,_0x302697){var _0x3f3cdf,_0x571e7c,_0x382c28;if(_[_0xa5d8('0x99')](_0x56a11e[_0xa5d8('0x60')][_0xa5d8('0x60')])||_0x56a11e[_0xa5d8('0x60')][_0xa5d8('0x60')]===''){throw new db[(_0xa5d8('0x9c'))][(_0xa5d8('0x7c'))](_0xa5d8('0x9a'));}if(_[_0xa5d8('0x99')](_0x56a11e[_0xa5d8('0x60')]['to'])){throw new db[(_0xa5d8('0x9c'))]['ValidationError'](_0xa5d8('0xc9'));}_0x3f3cdf=_0x56a11e['body']['to'];return db['SmsAccount'][_0xa5d8('0x5f')]({'where':{'id':_0x56a11e[_0xa5d8('0x5c')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db['CmContact'],'as':_0xa5d8('0xa0'),'where':{'mobile':_0x3f3cdf},'limit':0x1,'order':[[_0xa5d8('0x80'),'DESC']]}]}]})[_0xa5d8('0x25')](handleEntityNotFound(_0x16833e,null))[_0xa5d8('0x25')](function(_0x53b02b){if(_0x53b02b&&_0x53b02b[_0xa5d8('0xca')]){_0x571e7c=_0x53b02b['get']({'plain':!![]});if(_0x571e7c[_0xa5d8('0xca')]&&_0x571e7c['List'][_0xa5d8('0xa0')]['length']){return _0x571e7c[_0xa5d8('0xca')]['Contacts'][0x0];}return db[_0xa5d8('0x9f')][_0xa5d8('0x67')](_[_0xa5d8('0x1c')](_0x56a11e[_0xa5d8('0x60')],{'firstName':_0x3f3cdf,'mobile':_0x3f3cdf,'phone':_0x3f3cdf,'ListId':_0x571e7c[_0xa5d8('0x82')]}));}})['then'](handleEntityNotFound(_0x16833e,null))['then'](function(_0x3364fc){if(_0x3364fc){_0x382c28=_0x3364fc;return db[_0xa5d8('0xa3')]['find']({'where':{'ContactId':_0x382c28['id'],'closed':![],'SmsAccountId':_0x571e7c['id']}})[_0xa5d8('0x25')](function(_0x28005a){if(_0x28005a){return[_0x28005a,![]];}return db[_0xa5d8('0xa3')][_0xa5d8('0x67')]({'UserId':_0x56a11e[_0xa5d8('0x61')]['id'],'ContactId':_0x382c28['id'],'SmsAccountId':_0x571e7c['id'],'phone':_0x3f3cdf,'firstMsgDirection':'out','Messages':[_[_0xa5d8('0x53')](_0x56a11e[_0xa5d8('0x60')],{'read':![],'body':_0x56a11e[_0xa5d8('0x60')][_0xa5d8('0x60')],'phone':_0x3f3cdf,'SmsAccountId':_0x571e7c['id'],'UserId':_0x56a11e[_0xa5d8('0x61')]['id'],'ContactId':_0x382c28['id']})]},{'include':[{'model':db[_0xa5d8('0xcb')],'as':_0xa5d8('0xcc')}]})[_0xa5d8('0x25')](function(_0x49e326){return[_0x49e326,!![]];});});}})[_0xa5d8('0xa4')](function(_0x1ed2e3,_0x38cde4){if(_0x38cde4){return _0x1ed2e3;}return db[_0xa5d8('0xcb')][_0xa5d8('0x67')](_[_0xa5d8('0x53')](_0x56a11e['body'],{'read':![],'body':_0x56a11e[_0xa5d8('0x60')][_0xa5d8('0x60')],'phone':_0x3f3cdf,'SmsAccountId':_0x571e7c['id'],'SmsInteractionId':_0x1ed2e3['id'],'UserId':_0x56a11e[_0xa5d8('0x61')]['id'],'ContactId':_0x382c28['id']}))[_0xa5d8('0x25')](function(_0x1a549c){_0x1ed2e3['dataValues']['Messages']=[];_0x1ed2e3['dataValues'][_0xa5d8('0xcc')]['push'](_0x1a549c[_0xa5d8('0xcd')]);return _0x1ed2e3;});})['then'](respondWithResult(_0x16833e,null))[_0xa5d8('0x5a')](handleError(_0x16833e,null));};exports[_0xa5d8('0x2e')]=function(_0x4272ae,_0x184408,_0x26002d){if(_0x4272ae['body']['id']){delete _0x4272ae[_0xa5d8('0x60')]['id'];}var _0x34a037,_0x274c1d,_0x371738;return db['SmsAccount'][_0xa5d8('0x5f')]({'where':{'id':_0x4272ae[_0xa5d8('0x5c')]['id']}})[_0xa5d8('0x25')](handleEntityNotFound(_0x184408,null))[_0xa5d8('0x25')](function(_0x316a75){if(_0x316a75){_0x371738=_0x316a75;logger['debug']('SmsAccount,\x20%s,\x20%s,\x20%s','status','received\x20delivery\x20report\x20from',_0x316a75['type'],util[_0xa5d8('0xce')](_0x4272ae[_0xa5d8('0x60')],{'showHidden':![],'depth':null}));switch(_0x316a75[_0xa5d8('0x45')]){case'skebby':if(_0x4272ae[_0xa5d8('0x60')]['skebby_dispatch_id']&&_0x4272ae[_0xa5d8('0x60')]['status']){_0x274c1d=_0x4272ae[_0xa5d8('0x60')]['status'];return db[_0xa5d8('0xcb')]['find']({'where':{'messageId':_0x4272ae[_0xa5d8('0x60')]['skebby_dispatch_id']}});}break;case _0xa5d8('0xcf'):if(_0x4272ae[_0xa5d8('0x60')][_0xa5d8('0xd0')]&&_0x4272ae[_0xa5d8('0x60')][_0xa5d8('0xd1')]){_0x274c1d=_0x4272ae[_0xa5d8('0x60')][_0xa5d8('0xd1')];return db[_0xa5d8('0xcb')][_0xa5d8('0x5f')]({'where':{'messageId':_0x4272ae[_0xa5d8('0x60')]['requestid']}});}break;case _0xa5d8('0xd2'):if(_0x4272ae['body'][_0xa5d8('0x8c')]&&_0x4272ae[_0xa5d8('0x60')]['status_code']){_0x274c1d=_0x4272ae['body']['status_code'];return db[_0xa5d8('0xcb')][_0xa5d8('0x5f')]({'where':{'messageId':_0x4272ae[_0xa5d8('0x60')]['message_id']}});}break;case _0xa5d8('0x90'):var _0x4459f0=_0x4272ae[_0xa5d8('0x60')][_0xa5d8('0x91')][0x0];if(_0x4459f0[_0xa5d8('0x88')]&&_0x4459f0['status'][_0xa5d8('0xd3')]===_0xa5d8('0xd4')){_0x274c1d=_0x4459f0['status'][_0xa5d8('0xd3')];return db[_0xa5d8('0xcb')][_0xa5d8('0x5f')]({'where':{'messageId':_0x4459f0[_0xa5d8('0x88')]}});}break;case _0xa5d8('0xd5'):if(_0x4272ae['body'][_0xa5d8('0x88')]&&_0x4272ae[_0xa5d8('0x60')]['status']){_0x274c1d=_0x4272ae[_0xa5d8('0x60')]['status'];return db[_0xa5d8('0xcb')][_0xa5d8('0x5f')]({'where':{'messageId':_0x4272ae['body']['messageId']}});}break;case _0xa5d8('0x97'):if(_0x4272ae[_0xa5d8('0x60')][0x0][_0xa5d8('0x2b')]['id']){_0x274c1d=_0x4272ae[_0xa5d8('0x60')][0x0][_0xa5d8('0x45')];return db['SmsMessage']['find']({'where':{'messageId':_0x4272ae[_0xa5d8('0x60')][0x0][_0xa5d8('0x2b')]['id']}});}break;case _0xa5d8('0x98'):if(_0x4272ae['body']['redif']&&_0x4272ae[_0xa5d8('0x60')][_0xa5d8('0x2e')]){_0x274c1d=_0x4272ae[_0xa5d8('0x60')][_0xa5d8('0x2e')];return db[_0xa5d8('0xcb')]['find']({'where':{'messageId':_0x4272ae[_0xa5d8('0x60')][_0xa5d8('0xd6')]}});}break;}}})[_0xa5d8('0x25')](handleEntityNotFound(_0x184408,null))[_0xa5d8('0x25')](function(_0xcee86a){if(_0xcee86a){_0x34a037=_0xcee86a;switch(_0x371738[_0xa5d8('0x45')]){case _0xa5d8('0x8a'):if(_0x274c1d===_0xa5d8('0xd4')){return _0x34a037[_0xa5d8('0x38')]({'read':!![]});}else{logger[_0xa5d8('0x28')](_0xa5d8('0xb2'),_0xa5d8('0x2e'),_0xa5d8('0x8a'),util[_0xa5d8('0xce')](_0x4272ae[_0xa5d8('0x60')],{'showHidden':![],'depth':null}));}break;case'connectel':if(_0x274c1d==='1'){return _0x34a037[_0xa5d8('0x38')]({'read':!![]});}else{logger[_0xa5d8('0x28')](_0xa5d8('0xb2'),_0xa5d8('0x2e'),'skebby',util['inspect'](_0x4272ae[_0xa5d8('0x60')],{'showHidden':![],'depth':null}));}break;case _0xa5d8('0xd2'):if(!_0x4272ae[_0xa5d8('0x60')][_0xa5d8('0xd7')]&&_0x274c1d>=0xc8&&_0x274c1d<=0xce){return _0x34a037['update']({'read':!![]});}else{logger[_0xa5d8('0x28')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xa5d8('0x2e'),_0xa5d8('0xd2'),util['inspect'](_0x4272ae[_0xa5d8('0x60')],{'showHidden':![],'depth':null}));}break;case _0xa5d8('0x90'):var _0x5cd880=_0x4272ae[_0xa5d8('0x60')]['results'][0x0];if(_0x5cd880[_0xa5d8('0x2e')]['groupName']===_0xa5d8('0xd4')){return _0x34a037['update']({'read':!![]});}else{logger[_0xa5d8('0x28')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0xa5d8('0x90'),util['inspect'](_0x4272ae[_0xa5d8('0x60')],{'showHidden':![],'depth':null}));}break;case'clickatell':if(_0x274c1d=='DELIVERED_TO_GATEWAY'||_0x274c1d==_0xa5d8('0xd8')){return _0x34a037['update']({'read':!![]});}else{logger['error'](_0xa5d8('0xb2'),_0xa5d8('0x2e'),'clickatell',util[_0xa5d8('0xce')](_0x4272ae['body'],{'showHidden':![],'depth':null}));}break;case _0xa5d8('0x97'):if(_0x274c1d=='message-delivered'){return _0x34a037['update']({'read':!![]});}else{logger[_0xa5d8('0x28')](_0xa5d8('0xb2'),_0xa5d8('0x2e'),_0xa5d8('0x97'),util[_0xa5d8('0xce')](_0x4272ae[_0xa5d8('0x60')],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0x274c1d===_0xa5d8('0xd9')||_0x274c1d===_0xa5d8('0xda')){return _0x34a037[_0xa5d8('0x38')]({'read':!![]});}else{logger['error'](_0xa5d8('0xb2'),_0xa5d8('0x2e'),_0xa5d8('0x98'),util[_0xa5d8('0xce')](_0x4272ae['body'],{'showHidden':![],'depth':null}));}break;}return _0x34a037;}})[_0xa5d8('0x25')](respondWithResult(_0x184408,null))[_0xa5d8('0x5a')](handleError(_0x184408,null));};exports['statusGet']=function(_0x4b64eb,_0x3801d9,_0x588e13){var _0x468790,_0x39cfbb,_0x4f1175;return db[_0xa5d8('0x42')]['find']({'where':{'id':_0x4b64eb[_0xa5d8('0x5c')]['id']}})[_0xa5d8('0x25')](handleEntityNotFound(_0x3801d9,null))[_0xa5d8('0x25')](function(_0x36cf28){if(_0x36cf28){_0x4f1175=_0x36cf28;logger[_0xa5d8('0xb4')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xa5d8('0x2e'),'received\x20delivery\x20report\x20from',_0x36cf28['type'],util[_0xa5d8('0xce')](_0x4b64eb[_0xa5d8('0x46')],{'showHidden':![],'depth':null}));switch(_0x36cf28['type']){case _0xa5d8('0x93'):if(_0x4b64eb[_0xa5d8('0x46')][_0xa5d8('0xdb')]&&_0x4b64eb[_0xa5d8('0x46')][_0xa5d8('0xdc')]){_0x39cfbb=_0x4b64eb[_0xa5d8('0x46')]['state'];return db[_0xa5d8('0xcb')]['find']({'where':{'messageId':_0x4b64eb[_0xa5d8('0x46')][_0xa5d8('0xdb')]}});}break;}}})[_0xa5d8('0x25')](handleEntityNotFound(_0x3801d9,null))[_0xa5d8('0x25')](function(_0x22cee8){if(_0x22cee8){_0x468790=_0x22cee8;switch(_0x4f1175[_0xa5d8('0x45')]){case _0xa5d8('0x93'):if(_0x39cfbb==='2'||_0x39cfbb==='6'){return _0x468790[_0xa5d8('0x38')]({'read':!![]});}else{logger[_0xa5d8('0x28')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xa5d8('0x2e'),_0xa5d8('0x93'),util[_0xa5d8('0xce')](_0x4b64eb[_0xa5d8('0x46')],{'showHidden':![],'depth':null}));};break;}return _0x468790;}})[_0xa5d8('0x25')](respondWithResult(_0x3801d9,null))[_0xa5d8('0x5a')](handleError(_0x3801d9,null));};exports[_0xa5d8('0xdd')]=function(_0x1a210a,_0x2200f0,_0xc0bef5){return db[_0xa5d8('0x42')][_0xa5d8('0x5f')]({'where':{'id':_0x1a210a['params']['id']}})[_0xa5d8('0x25')](handleEntityNotFound(_0x2200f0,null))[_0xa5d8('0x25')](function(_0x3c7167){if(_0x3c7167){return _0x3c7167['addAgents'](_0x1a210a[_0xa5d8('0x60')][_0xa5d8('0x6f')],_['omit'](_0x1a210a[_0xa5d8('0x60')],[_0xa5d8('0x6f'),'id'])||{})[_0xa5d8('0xa4')](function(_0x27a4f1){for(var _0x1cee93=0x0;_0x1cee93<_0x1a210a[_0xa5d8('0x60')][_0xa5d8('0x6f')][_0xa5d8('0x4c')];_0x1cee93+=0x1){socket[_0xa5d8('0xde')](_0xa5d8('0xdf'),{'UserId':Number(_0x1a210a[_0xa5d8('0x60')][_0xa5d8('0x6f')][_0x1cee93]),'SmsAccountId':Number(_0x1a210a[_0xa5d8('0x5c')]['id'])});}return _0x27a4f1;});}})[_0xa5d8('0x25')](respondWithResult(_0x2200f0,null))['catch'](handleError(_0x2200f0,null));};exports['removeAgents']=function(_0x116239,_0x3ab41a,_0x6489d1){return db[_0xa5d8('0x42')][_0xa5d8('0x5f')]({'where':{'id':_0x116239[_0xa5d8('0x5c')]['id']}})[_0xa5d8('0x25')](handleEntityNotFound(_0x3ab41a,null))[_0xa5d8('0x25')](function(_0x391353){if(_0x391353){return _0x391353['removeAgents'](_0x116239['query'][_0xa5d8('0x6f')])[_0xa5d8('0x25')](function(){if(_['isArray'](_0x116239[_0xa5d8('0x46')][_0xa5d8('0x6f')])){for(var _0x3854fe=0x0;_0x3854fe<_0x116239[_0xa5d8('0x46')][_0xa5d8('0x6f')][_0xa5d8('0x4c')];_0x3854fe+=0x1){socket[_0xa5d8('0xde')](_0xa5d8('0xe0'),{'UserId':Number(_0x116239['query'][_0xa5d8('0x6f')][_0x3854fe]),'SmsAccountId':Number(_0x116239[_0xa5d8('0x5c')]['id'])});}}else{socket[_0xa5d8('0xde')](_0xa5d8('0xe0'),{'UserId':Number(_0x116239['query']['ids']),'SmsAccountId':Number(_0x116239[_0xa5d8('0x5c')]['id'])});}});}})[_0xa5d8('0x25')](respondWithStatusCode(_0x3ab41a,null))[_0xa5d8('0x5a')](handleError(_0x3ab41a,null));};exports[_0xa5d8('0xe1')]=function(_0x337b27,_0x56be10,_0x40a40f){var _0x52c597={};var _0x333c99={};var _0x3d8faa;var _0x13ef2e;return db[_0xa5d8('0x42')][_0xa5d8('0x72')]({'where':{'id':_0x337b27[_0xa5d8('0x5c')]['id']}})[_0xa5d8('0x25')](handleEntityNotFound(_0x56be10,null))['then'](function(_0x427fd0){if(_0x427fd0){_0x3d8faa=_0x427fd0;_0x333c99[_0xa5d8('0x49')]=_['keys'](db['User']['rawAttributes']);_0x333c99['query']=_[_0xa5d8('0x47')](_0x337b27[_0xa5d8('0x46')]);_0x333c99['filters']=_['intersection'](_0x333c99[_0xa5d8('0x49')],_0x333c99[_0xa5d8('0x46')]);_0x52c597[_0xa5d8('0x4a')]=_[_0xa5d8('0x5e')](_0x333c99[_0xa5d8('0x49')],qs[_0xa5d8('0x4b')](_0x337b27[_0xa5d8('0x46')][_0xa5d8('0x4b')]));_0x52c597[_0xa5d8('0x4a')]=_0x52c597[_0xa5d8('0x4a')][_0xa5d8('0x4c')]?_0x52c597[_0xa5d8('0x4a')]:_0x333c99[_0xa5d8('0x49')];_0x52c597[_0xa5d8('0x4e')]=qs[_0xa5d8('0x4f')](_0x337b27[_0xa5d8('0x46')]['sort']);_0x52c597[_0xa5d8('0x50')]=qs[_0xa5d8('0x48')](_[_0xa5d8('0x51')](_0x337b27['query'],_0x333c99[_0xa5d8('0x48')]));if(_0x337b27[_0xa5d8('0x46')]['filter']){_0x52c597[_0xa5d8('0x50')]=_[_0xa5d8('0x53')](_0x52c597[_0xa5d8('0x50')],{'$or':_[_0xa5d8('0x41')](_0x52c597[_0xa5d8('0x4a')],function(_0x5bf499){var _0x208095={};_0x208095[_0x5bf499]={'$like':'%'+_0x337b27[_0xa5d8('0x46')][_0xa5d8('0x52')]+'%'};return _0x208095;})});}_0x52c597=_[_0xa5d8('0x53')]({},_0x52c597,_0x337b27[_0xa5d8('0x55')]);return _0x3d8faa['getAgents'](_0x52c597);}})['then'](function(_0xe92242){if(_0xe92242){_0x13ef2e=_0xe92242[_0xa5d8('0x4c')];if(!_0x337b27[_0xa5d8('0x46')][_0xa5d8('0x4d')](_0xa5d8('0x6d'))){_0x52c597[_0xa5d8('0x31')]=qs[_0xa5d8('0x31')](_0x337b27[_0xa5d8('0x46')][_0xa5d8('0x31')]);_0x52c597[_0xa5d8('0x30')]=qs[_0xa5d8('0x30')](_0x337b27[_0xa5d8('0x46')][_0xa5d8('0x30')]);}return _0x3d8faa[_0xa5d8('0xe1')](_0x52c597);}})[_0xa5d8('0x25')](function(_0x4c3be5){if(_0x4c3be5){return _0x4c3be5?{'count':_0x13ef2e,'rows':_0x4c3be5}:null;}})['then'](respondWithResult(_0x56be10,null))[_0xa5d8('0x5a')](handleError(_0x56be10,null));};
\ No newline at end of file
index 231fb13..25a679e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98b7=['save','update','remove','emit','hook','exports','events','../../mysqldb','SmsAccount'];(function(_0x286996,_0x2cac9d){var _0x5c218f=function(_0x1eb5c4){while(--_0x1eb5c4){_0x286996['push'](_0x286996['shift']());}};_0x5c218f(++_0x2cac9d);}(_0x98b7,0x165));var _0x798b=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x98b7[_0x2c91e9];return _0x13f0ff;};'use strict';var EventEmitter=require(_0x798b('0x0'));var SmsAccount=require(_0x798b('0x1'))['db'][_0x798b('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x798b('0x3'),'afterUpdate':_0x798b('0x4'),'afterDestroy':_0x798b('0x5')};function emitEvent(_0xf26fed){return function(_0x1da8b3,_0x952836,_0x287376){SmsAccountEvents[_0x798b('0x6')](_0xf26fed+':'+_0x1da8b3['id'],_0x1da8b3);SmsAccountEvents[_0x798b('0x6')](_0xf26fed,_0x1da8b3);_0x287376(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsAccount[_0x798b('0x7')](e,emitEvent(event));}}module[_0x798b('0x8')]=SmsAccountEvents;
\ No newline at end of file
+var _0x633e=['exports','../../mysqldb','setMaxListeners','remove','emit','hasOwnProperty'];(function(_0x22fb94,_0x9a235c){var _0x33da77=function(_0x58edb8){while(--_0x58edb8){_0x22fb94['push'](_0x22fb94['shift']());}};_0x33da77(++_0x9a235c);}(_0x633e,0xd9));var _0xe633=function(_0x43bef2,_0x50aad4){_0x43bef2=_0x43bef2-0x0;var _0x25ae7d=_0x633e[_0x43bef2];return _0x25ae7d;};'use strict';var EventEmitter=require('events');var SmsAccount=require(_0xe633('0x0'))['db']['SmsAccount'];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0xe633('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xe633('0x2')};function emitEvent(_0x4787bf){return function(_0x4783a0,_0x1647d3,_0x2d09d7){SmsAccountEvents['emit'](_0x4787bf+':'+_0x4783a0['id'],_0x4783a0);SmsAccountEvents[_0xe633('0x3')](_0x4787bf,_0x4783a0);_0x2d09d7(null);};}for(var e in events){if(events[_0xe633('0x4')](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module[_0xe633('0x5')]=SmsAccountEvents;
\ No newline at end of file
index 1ecb353..46af1b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf70d=['lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','exports','define','SmsAccount','sms_accounts'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf70d,0x1e1));var _0xdf70=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0xf70d[_0x5bd426];return _0x23a7eb;};'use strict';var _=require(_0xdf70('0x0'));var util=require(_0xdf70('0x1'));var logger=require(_0xdf70('0x2'))(_0xdf70('0x3'));var moment=require(_0xdf70('0x4'));var BPromise=require(_0xdf70('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xdf70('0x6'));var rimraf=require(_0xdf70('0x7'));var config=require(_0xdf70('0x8'));var attributes=require('./smsAccount.attributes');module[_0xdf70('0x9')]=function(_0xc26906,_0x205b15){return _0xc26906[_0xdf70('0xa')](_0xdf70('0xb'),attributes,{'tableName':_0xdf70('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7087=['api','bluebird','request-promise','path','rimraf','../../config/environment','exports','sms_accounts','util'];(function(_0x3e18bf,_0x387f5e){var _0x1022e5=function(_0x242ec4){while(--_0x242ec4){_0x3e18bf['push'](_0x3e18bf['shift']());}};_0x1022e5(++_0x387f5e);}(_0x7087,0x128));var _0x7708=function(_0x5ca20e,_0x22a606){_0x5ca20e=_0x5ca20e-0x0;var _0x4680d1=_0x7087[_0x5ca20e];return _0x4680d1;};'use strict';var _=require('lodash');var util=require(_0x7708('0x0'));var logger=require('../../config/logger')(_0x7708('0x1'));var moment=require('moment');var BPromise=require(_0x7708('0x2'));var rp=require(_0x7708('0x3'));var fs=require('fs');var path=require(_0x7708('0x4'));var rimraf=require(_0x7708('0x5'));var config=require(_0x7708('0x6'));var attributes=require('./smsAccount.attributes');module[_0x7708('0x7')]=function(_0xa62acd,_0x2fc213){return _0xa62acd['define']('SmsAccount',attributes,{'tableName':_0x7708('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 141b76c..ddc7324 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b30=['SmsAccount','find','options','raw','where','attributes','include','map','model','then','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','redis','defaults','localhost','./smsAccount.socket','register','request','SmsAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','catch','ShowSmsAccount'];(function(_0x47d423,_0x55f4c0){var _0x2669f5=function(_0x3fd994){while(--_0x3fd994){_0x47d423['push'](_0x47d423['shift']());}};_0x2669f5(++_0x55f4c0);}(_0x3b30,0x76));var _0x03b3=function(_0x493900,_0x1b5e84){_0x493900=_0x493900-0x0;var _0x4349c4=_0x3b30[_0x493900];return _0x4349c4;};'use strict';var _=require(_0x03b3('0x0'));var util=require(_0x03b3('0x1'));var moment=require('moment');var BPromise=require(_0x03b3('0x2'));var rs=require(_0x03b3('0x3'));var fs=require('fs');var Redis=require(_0x03b3('0x4'));var db=require(_0x03b3('0x5'))['db'];var utils=require(_0x03b3('0x6'));var logger=require(_0x03b3('0x7'))('rpc');var config=require(_0x03b3('0x8'));var jayson=require(_0x03b3('0x9'));var client=jayson[_0x03b3('0xa')]['http']({'port':0x232a});config[_0x03b3('0xb')]=_[_0x03b3('0xc')](config[_0x03b3('0xb')],{'host':_0x03b3('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x03b3('0xe'))[_0x03b3('0xf')](socket);function respondWithRpcPromise(_0x2c2860,_0x988cdf,_0x1027f6){return new BPromise(function(_0x4246a5,_0x3c717b){return client[_0x03b3('0x10')](_0x2c2860,_0x1027f6)['then'](function(_0x33f013){logger['info'](_0x03b3('0x11'),_0x988cdf,'request\x20sent');logger['debug']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x988cdf,_0x03b3('0x12'),JSON[_0x03b3('0x13')](_0x33f013));if(_0x33f013['error']){if(_0x33f013[_0x03b3('0x14')][_0x03b3('0x15')]===0x1f4){logger['error'](_0x03b3('0x11'),_0x988cdf,_0x33f013[_0x03b3('0x14')][_0x03b3('0x16')]);return _0x3c717b(_0x33f013['error'][_0x03b3('0x16')]);}logger['error']('SmsAccount,\x20%s,\x20%s',_0x988cdf,_0x33f013[_0x03b3('0x14')][_0x03b3('0x16')]);return _0x4246a5(_0x33f013['error'][_0x03b3('0x16')]);}else{logger[_0x03b3('0x17')](_0x03b3('0x11'),_0x988cdf,_0x03b3('0x12'));_0x4246a5(_0x33f013['result'][_0x03b3('0x16')]);}})[_0x03b3('0x18')](function(_0x26a1f4){logger[_0x03b3('0x14')]('SmsAccount,\x20%s,\x20%s',_0x988cdf,_0x26a1f4);_0x3c717b(_0x26a1f4);});});}exports[_0x03b3('0x19')]=function(_0xee50e6){var _0x3ee75c=this;return new Promise(function(_0x1e0d5a,_0x4bd50c){return db[_0x03b3('0x1a')][_0x03b3('0x1b')]({'raw':_0xee50e6['options']?_0xee50e6[_0x03b3('0x1c')][_0x03b3('0x1d')]===undefined?!![]:![]:!![],'where':_0xee50e6['options']?_0xee50e6[_0x03b3('0x1c')][_0x03b3('0x1e')]||null:null,'attributes':_0xee50e6['options']?_0xee50e6['options'][_0x03b3('0x1f')]||null:null,'include':_0xee50e6[_0x03b3('0x1c')]?_0xee50e6[_0x03b3('0x1c')][_0x03b3('0x20')]?_[_0x03b3('0x21')](_0xee50e6[_0x03b3('0x1c')][_0x03b3('0x20')],function(_0x1413bf){return{'model':db[_0x1413bf[_0x03b3('0x22')]],'as':_0x1413bf['as'],'attributes':_0x1413bf['attributes'],'include':_0x1413bf['include']?_[_0x03b3('0x21')](_0x1413bf['include'],function(_0x3db5b9){return{'model':db[_0x3db5b9[_0x03b3('0x22')]],'as':_0x3db5b9['as'],'attributes':_0x3db5b9['attributes'],'include':_0x3db5b9[_0x03b3('0x20')]?_[_0x03b3('0x21')](_0x3db5b9[_0x03b3('0x20')],function(_0x3e629b){return{'model':db[_0x3e629b[_0x03b3('0x22')]],'as':_0x3e629b['as'],'attributes':_0x3e629b['attributes']};}):[]};}):[]};}):[]:[]})[_0x03b3('0x23')](function(_0x4ad174){logger[_0x03b3('0x17')](_0x03b3('0x19'),_0xee50e6);logger['debug'](_0x03b3('0x19'),_0xee50e6,JSON['stringify'](_0x4ad174));_0x1e0d5a(_0x4ad174);})[_0x03b3('0x18')](function(_0x37a0f8){logger['error']('ShowSmsAccount',_0x37a0f8['message'],_0xee50e6);_0x4bd50c(_0x3ee75c[_0x03b3('0x14')](0x1f4,_0x37a0f8[_0x03b3('0x16')]));});});};
\ No newline at end of file
+var _0x27ca=['raw','where','attributes','include','map','model','stringify','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','./smsAccount.socket','register','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','error','message','result','ShowSmsAccount','SmsAccount','find','options'];(function(_0x18593c,_0x448b00){var _0x4f7799=function(_0x16515a){while(--_0x16515a){_0x18593c['push'](_0x18593c['shift']());}};_0x4f7799(++_0x448b00);}(_0x27ca,0x138));var _0xa27c=function(_0x54d4fe,_0x55e869){_0x54d4fe=_0x54d4fe-0x0;var _0x1ab5bb=_0x27ca[_0x54d4fe];return _0x1ab5bb;};'use strict';var _=require(_0xa27c('0x0'));var util=require(_0xa27c('0x1'));var moment=require(_0xa27c('0x2'));var BPromise=require(_0xa27c('0x3'));var rs=require(_0xa27c('0x4'));var fs=require('fs');var Redis=require(_0xa27c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xa27c('0x6'));var logger=require(_0xa27c('0x7'))(_0xa27c('0x8'));var config=require('../../config/environment');var jayson=require(_0xa27c('0x9'));var client=jayson[_0xa27c('0xa')][_0xa27c('0xb')]({'port':0x232a});config[_0xa27c('0xc')]=_[_0xa27c('0xd')](config[_0xa27c('0xc')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa27c('0xc')]));require(_0xa27c('0xe'))[_0xa27c('0xf')](socket);function respondWithRpcPromise(_0x966677,_0x21c6b7,_0x4faf7a){return new BPromise(function(_0x3a9b5f,_0x55b539){return client[_0xa27c('0x10')](_0x966677,_0x4faf7a)[_0xa27c('0x11')](function(_0x2efb67){logger[_0xa27c('0x12')](_0xa27c('0x13'),_0x21c6b7,_0xa27c('0x14'));logger[_0xa27c('0x15')](_0xa27c('0x16'),_0x21c6b7,'request\x20sent',JSON['stringify'](_0x2efb67));if(_0x2efb67[_0xa27c('0x17')]){if(_0x2efb67[_0xa27c('0x17')]['code']===0x1f4){logger[_0xa27c('0x17')](_0xa27c('0x13'),_0x21c6b7,_0x2efb67[_0xa27c('0x17')][_0xa27c('0x18')]);return _0x55b539(_0x2efb67[_0xa27c('0x17')][_0xa27c('0x18')]);}logger[_0xa27c('0x17')](_0xa27c('0x13'),_0x21c6b7,_0x2efb67['error'][_0xa27c('0x18')]);return _0x3a9b5f(_0x2efb67[_0xa27c('0x17')][_0xa27c('0x18')]);}else{logger[_0xa27c('0x12')](_0xa27c('0x13'),_0x21c6b7,_0xa27c('0x14'));_0x3a9b5f(_0x2efb67[_0xa27c('0x19')][_0xa27c('0x18')]);}})['catch'](function(_0x53cc05){logger[_0xa27c('0x17')](_0xa27c('0x13'),_0x21c6b7,_0x53cc05);_0x55b539(_0x53cc05);});});}exports[_0xa27c('0x1a')]=function(_0x2c747b){var _0x4e4925=this;return new Promise(function(_0x5c96ec,_0x1cfcc5){return db[_0xa27c('0x1b')][_0xa27c('0x1c')]({'raw':_0x2c747b['options']?_0x2c747b[_0xa27c('0x1d')][_0xa27c('0x1e')]===undefined?!![]:![]:!![],'where':_0x2c747b[_0xa27c('0x1d')]?_0x2c747b[_0xa27c('0x1d')][_0xa27c('0x1f')]||null:null,'attributes':_0x2c747b[_0xa27c('0x1d')]?_0x2c747b[_0xa27c('0x1d')][_0xa27c('0x20')]||null:null,'include':_0x2c747b[_0xa27c('0x1d')]?_0x2c747b[_0xa27c('0x1d')][_0xa27c('0x21')]?_[_0xa27c('0x22')](_0x2c747b[_0xa27c('0x1d')][_0xa27c('0x21')],function(_0x817337){return{'model':db[_0x817337['model']],'as':_0x817337['as'],'attributes':_0x817337[_0xa27c('0x20')],'include':_0x817337['include']?_[_0xa27c('0x22')](_0x817337[_0xa27c('0x21')],function(_0x860a9a){return{'model':db[_0x860a9a['model']],'as':_0x860a9a['as'],'attributes':_0x860a9a[_0xa27c('0x20')],'include':_0x860a9a[_0xa27c('0x21')]?_[_0xa27c('0x22')](_0x860a9a['include'],function(_0x2d58bb){return{'model':db[_0x2d58bb[_0xa27c('0x23')]],'as':_0x2d58bb['as'],'attributes':_0x2d58bb['attributes']};}):[]};}):[]};}):[]:[]})[_0xa27c('0x11')](function(_0x48ac9d){logger[_0xa27c('0x12')](_0xa27c('0x1a'),_0x2c747b);logger[_0xa27c('0x15')]('ShowSmsAccount',_0x2c747b,JSON[_0xa27c('0x24')](_0x48ac9d));_0x5c96ec(_0x48ac9d);})[_0xa27c('0x25')](function(_0x1043cc){logger[_0xa27c('0x17')]('ShowSmsAccount',_0x1043cc[_0xa27c('0x18')],_0x2c747b);_0x1cfcc5(_0x4e4925[_0xa27c('0x17')](0x1f4,_0x1043cc[_0xa27c('0x18')]));});});};
\ No newline at end of file
index 2d6cea1..7a4036d 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(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xa9e0[_0xae7c2f];return _0x5d7001;};'use strict';var SmsAccountEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){SmsAccountEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);SmsAccountEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xa9e0[_0x38a7ac];return _0x53061a;};'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 070d803..ca57bba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['post','create','update','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsApplication.controller','get','isAuthenticated','index','/:id','show'];(function(_0x365954,_0x167497){var _0x1894ee=function(_0x3fb30c){while(--_0x3fb30c){_0x365954['push'](_0x365954['shift']());}};_0x1894ee(++_0x167497);}(_0xedd9,0xfc));var _0x9edd=function(_0x4c836d,_0x144891){_0x4c836d=_0x4c836d-0x0;var _0x299319=_0xedd9[_0x4c836d];return _0x299319;};'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');var controller=require(_0x9edd('0x8'));router[_0x9edd('0x9')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0xb')]);router['get'](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0xd')]);router[_0x9edd('0xe')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0xf')]);router['put'](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0x10')]);router[_0x9edd('0x11')]('/:id',auth[_0x9edd('0xa')](),controller[_0x9edd('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xe14b=['/:id','create','put','exports','multer','util','express','Router','../../components/auth/service','./smsApplication.controller','get','isAuthenticated','index'];(function(_0x3210b3,_0x1ced31){var _0x15a023=function(_0x24b102){while(--_0x24b102){_0x3210b3['push'](_0x3210b3['shift']());}};_0x15a023(++_0x1ced31);}(_0xe14b,0x93));var _0xbe14=function(_0x5a67e8,_0x3b660d){_0x5a67e8=_0x5a67e8-0x0;var _0x230e76=_0xe14b[_0x5a67e8];return _0x230e76;};'use strict';var multer=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xbe14('0x2'));var router=express[_0xbe14('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xbe14('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xbe14('0x5'));router[_0xbe14('0x6')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x8')]);router[_0xbe14('0x6')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0xbe14('0xa')]);router[_0xbe14('0xb')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['update']);router['delete'](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['destroy']);module[_0xbe14('0xc')]=router;
\ No newline at end of file
index 1d3102e..09744e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfab0=['*,*,*,*','sequelize','exports','noop','STRING'];(function(_0x3b537b,_0x54c543){var _0x4f344d=function(_0x4080aa){while(--_0x4080aa){_0x3b537b['push'](_0x3b537b['shift']());}};_0x4f344d(++_0x54c543);}(_0xfab0,0xdd));var _0x0fab=function(_0x2067e3,_0x19bcb2){_0x2067e3=_0x2067e3-0x0;var _0x180c44=_0xfab0[_0x2067e3];return _0x180c44;};'use strict';var Sequelize=require(_0x0fab('0x0'));module[_0x0fab('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x0fab('0x2')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x0fab('0x3')],'defaultValue':_0x0fab('0x4')}};
\ No newline at end of file
+var _0x5fa7=['noop','*,*,*,*','exports','INTEGER','STRING'];(function(_0x3f2d3c,_0x50309c){var _0x358404=function(_0x45b777){while(--_0x45b777){_0x3f2d3c['push'](_0x3f2d3c['shift']());}};_0x358404(++_0x50309c);}(_0x5fa7,0x12e));var _0x75fa=function(_0x444779,_0x3fc36a){_0x444779=_0x444779-0x0;var _0xdaa3bc=_0x5fa7[_0x444779];return _0xdaa3bc;};'use strict';var Sequelize=require('sequelize');module[_0x75fa('0x0')]={'priority':{'type':Sequelize[_0x75fa('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x75fa('0x2')],'allowNull':![],'defaultValue':_0x75fa('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x75fa('0x2')]},'interval':{'type':Sequelize[_0x75fa('0x2')],'defaultValue':_0x75fa('0x4')}};
\ No newline at end of file
index 6c6717c..9afeb4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x487e=['status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','type','model','query','keys','intersection','attributes','fields','length','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','SmsApplication','includeAll','include','findAll','rows','catch','show','params','find','create','body','rimraf','fast-json-patch','request-promise','moment','path','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x487e,0x18a));var _0xe487=function(_0x2ac2e9,_0x1dff2a){_0x2ac2e9=_0x2ac2e9-0x0;var _0x546cbb=_0x487e[_0x2ac2e9];return _0x546cbb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe487('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe487('0x1'));var rp=require(_0xe487('0x2'));var moment=require(_0xe487('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xe487('0x4'));var sox=require('sox');var csv=require(_0xe487('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe487('0x6'));var _=require(_0xe487('0x7'));var squel=require(_0xe487('0x8'));var crypto=require('crypto');var jsforce=require(_0xe487('0x9'));var deskjs=require(_0xe487('0xa'));var toCsv=require(_0xe487('0x5'));var querystring=require(_0xe487('0xb'));var Papa=require('papaparse');var Redis=require(_0xe487('0xc'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe487('0xd'));var hardwareService=require(_0xe487('0xe'));var logger=require(_0xe487('0xf'))(_0xe487('0x10'));var utils=require('../../config/utils');var config=require(_0xe487('0x11'));var licenseUtil=require('../../config/license/util');var db=require(_0xe487('0x12'))['db'];function respondWithStatusCode(_0x11b802,_0x59a8ab){_0x59a8ab=_0x59a8ab||0xcc;return function(_0x111097){if(_0x111097){return _0x11b802[_0xe487('0x13')](_0x59a8ab);}return _0x11b802[_0xe487('0x14')](_0x59a8ab)['end']();};}function respondWithResult(_0x9badea,_0x1bfeb7){_0x1bfeb7=_0x1bfeb7||0xc8;return function(_0x4e0087){if(_0x4e0087){return _0x9badea['status'](_0x1bfeb7)[_0xe487('0x15')](_0x4e0087);}};}function respondWithFilteredResult(_0x103621,_0x311214){return function(_0x21a7d5){if(_0x21a7d5){var _0x356331=typeof _0x311214[_0xe487('0x16')]===_0xe487('0x17')&&typeof _0x311214[_0xe487('0x18')]==='undefined';var _0x2fe198=_0x21a7d5[_0xe487('0x19')];var _0x4a991e=_0x356331?0x0:_0x311214[_0xe487('0x16')];var _0x168684=_0x356331?_0x21a7d5['count']:_0x311214[_0xe487('0x16')]+_0x311214[_0xe487('0x18')];var _0x35fa38;if(_0x168684>=_0x2fe198){_0x168684=_0x2fe198;_0x35fa38=0xc8;}else{_0x35fa38=0xce;}_0x103621[_0xe487('0x14')](_0x35fa38);return _0x103621[_0xe487('0x1a')](_0xe487('0x1b'),_0x4a991e+'-'+_0x168684+'/'+_0x2fe198)[_0xe487('0x15')](_0x21a7d5);}return null;};}function patchUpdates(_0x409d85){return function(_0x296e67){try{jsonpatch['apply'](_0x296e67,_0x409d85,!![]);}catch(_0x313205){return BPromise[_0xe487('0x1c')](_0x313205);}return _0x296e67[_0xe487('0x1d')]();};}function saveUpdates(_0x10f399,_0x40d9bb){return function(_0x2cfd55){if(_0x2cfd55){return _0x2cfd55[_0xe487('0x1e')](_0x10f399)[_0xe487('0x1f')](function(_0x932b1e){return _0x932b1e;});}return null;};}function removeEntity(_0xb57e3b,_0x10814f){return function(_0xe796f7){if(_0xe796f7){return _0xe796f7[_0xe487('0x20')]()[_0xe487('0x1f')](function(){_0xb57e3b['status'](0xcc)[_0xe487('0x21')]();});}};}function handleEntityNotFound(_0x176209,_0x5d7058){return function(_0x5c8dd0){if(!_0x5c8dd0){_0x176209[_0xe487('0x13')](0x194);}return _0x5c8dd0;};}function handleError(_0x20512a,_0x2b06b1){_0x2b06b1=_0x2b06b1||0x1f4;return function(_0x7ee9d9){logger[_0xe487('0x22')](_0x7ee9d9[_0xe487('0x23')]);if(_0x7ee9d9[_0xe487('0x24')]){delete _0x7ee9d9['name'];}_0x20512a[_0xe487('0x14')](_0x2b06b1)[_0xe487('0x25')](_0x7ee9d9);};}exports[_0xe487('0x26')]=function(_0x3fed88,_0x3254c6){var _0x51d0fb={},_0x54b9d4={},_0x20aee2={'count':0x0,'rows':[]};var _0x1d7f5a=_[_0xe487('0x27')](db['SmsApplication'][_0xe487('0x28')],function(_0x58a57b){return{'name':_0x58a57b['fieldName'],'type':_0x58a57b[_0xe487('0x29')]['key']};});_0x54b9d4[_0xe487('0x2a')]=_['map'](_0x1d7f5a,_0xe487('0x24'));_0x54b9d4[_0xe487('0x2b')]=_[_0xe487('0x2c')](_0x3fed88['query']);_0x54b9d4['filters']=_[_0xe487('0x2d')](_0x54b9d4['model'],_0x54b9d4[_0xe487('0x2b')]);_0x51d0fb[_0xe487('0x2e')]=_['intersection'](_0x54b9d4['model'],qs[_0xe487('0x2f')](_0x3fed88['query'][_0xe487('0x2f')]));_0x51d0fb[_0xe487('0x2e')]=_0x51d0fb[_0xe487('0x2e')][_0xe487('0x30')]?_0x51d0fb[_0xe487('0x2e')]:_0x54b9d4['model'];if(!_0x3fed88[_0xe487('0x2b')]['hasOwnProperty']('nolimit')){_0x51d0fb[_0xe487('0x18')]=qs[_0xe487('0x18')](_0x3fed88[_0xe487('0x2b')][_0xe487('0x18')]);_0x51d0fb[_0xe487('0x16')]=qs[_0xe487('0x16')](_0x3fed88['query'][_0xe487('0x16')]);}_0x51d0fb[_0xe487('0x31')]=qs['sort'](_0x3fed88[_0xe487('0x2b')][_0xe487('0x32')]);_0x51d0fb[_0xe487('0x33')]=qs[_0xe487('0x34')](_[_0xe487('0x35')](_0x3fed88[_0xe487('0x2b')],_0x54b9d4[_0xe487('0x34')]),_0x1d7f5a);if(_0x3fed88[_0xe487('0x2b')][_0xe487('0x36')]){_0x51d0fb['where']=_[_0xe487('0x37')](_0x51d0fb['where'],{'$or':_['map'](_0x1d7f5a,function(_0x2df31f){if(_0x2df31f[_0xe487('0x29')]!==_0xe487('0x38')){var _0x167a0d={};_0x167a0d[_0x2df31f[_0xe487('0x24')]]={'$like':'%'+_0x3fed88[_0xe487('0x2b')][_0xe487('0x36')]+'%'};return _0x167a0d;}})});}_0x51d0fb=_['merge']({},_0x51d0fb,_0x3fed88[_0xe487('0x39')]);var _0x489fbc={'where':_0x51d0fb[_0xe487('0x33')]};return db[_0xe487('0x3a')][_0xe487('0x19')](_0x489fbc)[_0xe487('0x1f')](function(_0xac5be0){_0x20aee2[_0xe487('0x19')]=_0xac5be0;if(_0x3fed88[_0xe487('0x2b')][_0xe487('0x3b')]){_0x51d0fb[_0xe487('0x3c')]=[{'all':!![]}];}return db[_0xe487('0x3a')][_0xe487('0x3d')](_0x51d0fb);})[_0xe487('0x1f')](function(_0x5b767c){_0x20aee2[_0xe487('0x3e')]=_0x5b767c;return _0x20aee2;})[_0xe487('0x1f')](respondWithFilteredResult(_0x3254c6,_0x51d0fb))[_0xe487('0x3f')](handleError(_0x3254c6,null));};exports[_0xe487('0x40')]=function(_0x5cef1d,_0x4577e8){var _0x537173={'raw':!![],'where':{'id':_0x5cef1d[_0xe487('0x41')]['id']}},_0x6369c2={};_0x6369c2[_0xe487('0x2a')]=_[_0xe487('0x2c')](db['SmsApplication']['rawAttributes']);_0x6369c2[_0xe487('0x2b')]=_[_0xe487('0x2c')](_0x5cef1d[_0xe487('0x2b')]);_0x6369c2[_0xe487('0x34')]=_[_0xe487('0x2d')](_0x6369c2[_0xe487('0x2a')],_0x6369c2[_0xe487('0x2b')]);_0x537173[_0xe487('0x2e')]=_[_0xe487('0x2d')](_0x6369c2[_0xe487('0x2a')],qs[_0xe487('0x2f')](_0x5cef1d[_0xe487('0x2b')][_0xe487('0x2f')]));_0x537173[_0xe487('0x2e')]=_0x537173[_0xe487('0x2e')]['length']?_0x537173[_0xe487('0x2e')]:_0x6369c2[_0xe487('0x2a')];if(_0x5cef1d[_0xe487('0x2b')][_0xe487('0x3b')]){_0x537173[_0xe487('0x3c')]=[{'all':!![]}];}_0x537173=_[_0xe487('0x37')]({},_0x537173,_0x5cef1d[_0xe487('0x39')]);return db[_0xe487('0x3a')][_0xe487('0x42')](_0x537173)[_0xe487('0x1f')](handleEntityNotFound(_0x4577e8,null))[_0xe487('0x1f')](respondWithResult(_0x4577e8,null))[_0xe487('0x3f')](handleError(_0x4577e8,null));};exports[_0xe487('0x43')]=function(_0x2b3778,_0x34946f){return db[_0xe487('0x3a')][_0xe487('0x43')](_0x2b3778[_0xe487('0x44')],{})[_0xe487('0x1f')](respondWithResult(_0x34946f,0xc9))[_0xe487('0x3f')](handleError(_0x34946f,null));};exports[_0xe487('0x1e')]=function(_0x8c14c1,_0x1604ba){if(_0x8c14c1[_0xe487('0x44')]['id']){delete _0x8c14c1['body']['id'];}return db[_0xe487('0x3a')][_0xe487('0x42')]({'where':{'id':_0x8c14c1['params']['id']}})[_0xe487('0x1f')](handleEntityNotFound(_0x1604ba,null))[_0xe487('0x1f')](saveUpdates(_0x8c14c1['body'],null))[_0xe487('0x1f')](respondWithResult(_0x1604ba,null))[_0xe487('0x3f')](handleError(_0x1604ba,null));};exports[_0xe487('0x20')]=function(_0x127980,_0xe064c6){return db[_0xe487('0x3a')][_0xe487('0x42')]({'where':{'id':_0x127980[_0xe487('0x41')]['id']}})[_0xe487('0x1f')](handleEntityNotFound(_0xe064c6,null))['then'](removeEntity(_0xe064c6,null))[_0xe487('0x3f')](handleError(_0xe064c6,null));};
\ No newline at end of file
+var _0xfee1=['rimraf','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','set','save','update','then','destroy','sendStatus','error','stack','name','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','SmsApplication','includeAll','include','params','find','create','body','catch','eml-format'];(function(_0x1d6b72,_0x195a11){var _0x2f8e25=function(_0x23ea2e){while(--_0x23ea2e){_0x1d6b72['push'](_0x1d6b72['shift']());}};_0x2f8e25(++_0x195a11);}(_0xfee1,0x167));var _0x1fee=function(_0xefd519,_0xc62635){_0xefd519=_0xefd519-0x0;var _0x4bb882=_0xfee1[_0xefd519];return _0x4bb882;};'use strict';var emlformat=require(_0x1fee('0x0'));var rimraf=require(_0x1fee('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1fee('0x2'));var rp=require('request-promise');var moment=require(_0x1fee('0x3'));var BPromise=require(_0x1fee('0x4'));var Mustache=require(_0x1fee('0x5'));var util=require('util');var path=require(_0x1fee('0x6'));var sox=require(_0x1fee('0x7'));var csv=require(_0x1fee('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1fee('0x9'));var _=require(_0x1fee('0xa'));var squel=require('squel');var crypto=require(_0x1fee('0xb'));var jsforce=require(_0x1fee('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x1fee('0x8'));var querystring=require(_0x1fee('0xd'));var Papa=require(_0x1fee('0xe'));var Redis=require(_0x1fee('0xf'));var authService=require(_0x1fee('0x10'));var qs=require(_0x1fee('0x11'));var as=require(_0x1fee('0x12'));var hardwareService=require(_0x1fee('0x13'));var logger=require(_0x1fee('0x14'))(_0x1fee('0x15'));var utils=require(_0x1fee('0x16'));var config=require(_0x1fee('0x17'));var licenseUtil=require(_0x1fee('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x33b450,_0x3742e8){_0x3742e8=_0x3742e8||0xcc;return function(_0x56daad){if(_0x56daad){return _0x33b450['sendStatus'](_0x3742e8);}return _0x33b450[_0x1fee('0x19')](_0x3742e8)[_0x1fee('0x1a')]();};}function respondWithResult(_0x19310b,_0x5b2823){_0x5b2823=_0x5b2823||0xc8;return function(_0x7114f3){if(_0x7114f3){return _0x19310b[_0x1fee('0x19')](_0x5b2823)[_0x1fee('0x1b')](_0x7114f3);}};}function respondWithFilteredResult(_0x1b0d91,_0x3eece1){return function(_0x485be0){if(_0x485be0){var _0xa001f=typeof _0x3eece1[_0x1fee('0x1c')]===_0x1fee('0x1d')&&typeof _0x3eece1[_0x1fee('0x1e')]==='undefined';var _0x4b83b1=_0x485be0[_0x1fee('0x1f')];var _0x1fc794=_0xa001f?0x0:_0x3eece1[_0x1fee('0x1c')];var _0x3ed932=_0xa001f?_0x485be0['count']:_0x3eece1[_0x1fee('0x1c')]+_0x3eece1[_0x1fee('0x1e')];var _0x410544;if(_0x3ed932>=_0x4b83b1){_0x3ed932=_0x4b83b1;_0x410544=0xc8;}else{_0x410544=0xce;}_0x1b0d91[_0x1fee('0x19')](_0x410544);return _0x1b0d91[_0x1fee('0x20')]('Content-Range',_0x1fc794+'-'+_0x3ed932+'/'+_0x4b83b1)['json'](_0x485be0);}return null;};}function patchUpdates(_0x2b0772){return function(_0x552dfc){try{jsonpatch['apply'](_0x552dfc,_0x2b0772,!![]);}catch(_0x2c2d0a){return BPromise['reject'](_0x2c2d0a);}return _0x552dfc[_0x1fee('0x21')]();};}function saveUpdates(_0x189395,_0x5c83d0){return function(_0x4deebc){if(_0x4deebc){return _0x4deebc[_0x1fee('0x22')](_0x189395)[_0x1fee('0x23')](function(_0x3fa4b8){return _0x3fa4b8;});}return null;};}function removeEntity(_0x48fe83,_0x419991){return function(_0x3620f5){if(_0x3620f5){return _0x3620f5[_0x1fee('0x24')]()['then'](function(){_0x48fe83[_0x1fee('0x19')](0xcc)[_0x1fee('0x1a')]();});}};}function handleEntityNotFound(_0x21557a,_0x2ae642){return function(_0x379080){if(!_0x379080){_0x21557a[_0x1fee('0x25')](0x194);}return _0x379080;};}function handleError(_0x31b2a9,_0x7abbd1){_0x7abbd1=_0x7abbd1||0x1f4;return function(_0x55c7ab){logger[_0x1fee('0x26')](_0x55c7ab[_0x1fee('0x27')]);if(_0x55c7ab[_0x1fee('0x28')]){delete _0x55c7ab[_0x1fee('0x28')];}_0x31b2a9[_0x1fee('0x19')](_0x7abbd1)['send'](_0x55c7ab);};}exports[_0x1fee('0x29')]=function(_0x52f562,_0x46d38f){var _0x557f5f={},_0x4b3ae9={},_0x3ea2cc={'count':0x0,'rows':[]};var _0x3630c6=_[_0x1fee('0x2a')](db['SmsApplication'][_0x1fee('0x2b')],function(_0x50f34c){return{'name':_0x50f34c[_0x1fee('0x2c')],'type':_0x50f34c[_0x1fee('0x2d')]['key']};});_0x4b3ae9[_0x1fee('0x2e')]=_[_0x1fee('0x2a')](_0x3630c6,_0x1fee('0x28'));_0x4b3ae9[_0x1fee('0x2f')]=_[_0x1fee('0x30')](_0x52f562[_0x1fee('0x2f')]);_0x4b3ae9[_0x1fee('0x31')]=_[_0x1fee('0x32')](_0x4b3ae9[_0x1fee('0x2e')],_0x4b3ae9[_0x1fee('0x2f')]);_0x557f5f[_0x1fee('0x33')]=_['intersection'](_0x4b3ae9['model'],qs[_0x1fee('0x34')](_0x52f562[_0x1fee('0x2f')][_0x1fee('0x34')]));_0x557f5f['attributes']=_0x557f5f['attributes'][_0x1fee('0x35')]?_0x557f5f[_0x1fee('0x33')]:_0x4b3ae9['model'];if(!_0x52f562['query'][_0x1fee('0x36')](_0x1fee('0x37'))){_0x557f5f[_0x1fee('0x1e')]=qs[_0x1fee('0x1e')](_0x52f562[_0x1fee('0x2f')]['limit']);_0x557f5f['offset']=qs[_0x1fee('0x1c')](_0x52f562['query'][_0x1fee('0x1c')]);}_0x557f5f[_0x1fee('0x38')]=qs[_0x1fee('0x39')](_0x52f562[_0x1fee('0x2f')]['sort']);_0x557f5f[_0x1fee('0x3a')]=qs[_0x1fee('0x31')](_[_0x1fee('0x3b')](_0x52f562[_0x1fee('0x2f')],_0x4b3ae9[_0x1fee('0x31')]),_0x3630c6);if(_0x52f562[_0x1fee('0x2f')]['filter']){_0x557f5f[_0x1fee('0x3a')]=_[_0x1fee('0x3c')](_0x557f5f[_0x1fee('0x3a')],{'$or':_[_0x1fee('0x2a')](_0x3630c6,function(_0x5b6e71){if(_0x5b6e71[_0x1fee('0x2d')]!==_0x1fee('0x3d')){var _0x2edf17={};_0x2edf17[_0x5b6e71['name']]={'$like':'%'+_0x52f562[_0x1fee('0x2f')][_0x1fee('0x3e')]+'%'};return _0x2edf17;}})});}_0x557f5f=_['merge']({},_0x557f5f,_0x52f562[_0x1fee('0x3f')]);var _0x2a5c33={'where':_0x557f5f[_0x1fee('0x3a')]};return db[_0x1fee('0x40')][_0x1fee('0x1f')](_0x2a5c33)[_0x1fee('0x23')](function(_0x52f131){_0x3ea2cc[_0x1fee('0x1f')]=_0x52f131;if(_0x52f562[_0x1fee('0x2f')][_0x1fee('0x41')]){_0x557f5f[_0x1fee('0x42')]=[{'all':!![]}];}return db[_0x1fee('0x40')]['findAll'](_0x557f5f);})[_0x1fee('0x23')](function(_0x3400c9){_0x3ea2cc['rows']=_0x3400c9;return _0x3ea2cc;})['then'](respondWithFilteredResult(_0x46d38f,_0x557f5f))['catch'](handleError(_0x46d38f,null));};exports['show']=function(_0x34e5ef,_0x32ed66){var _0x4e72b6={'raw':!![],'where':{'id':_0x34e5ef[_0x1fee('0x43')]['id']}},_0x310c4d={};_0x310c4d[_0x1fee('0x2e')]=_[_0x1fee('0x30')](db[_0x1fee('0x40')][_0x1fee('0x2b')]);_0x310c4d[_0x1fee('0x2f')]=_[_0x1fee('0x30')](_0x34e5ef[_0x1fee('0x2f')]);_0x310c4d['filters']=_[_0x1fee('0x32')](_0x310c4d[_0x1fee('0x2e')],_0x310c4d['query']);_0x4e72b6[_0x1fee('0x33')]=_[_0x1fee('0x32')](_0x310c4d['model'],qs[_0x1fee('0x34')](_0x34e5ef[_0x1fee('0x2f')][_0x1fee('0x34')]));_0x4e72b6[_0x1fee('0x33')]=_0x4e72b6[_0x1fee('0x33')][_0x1fee('0x35')]?_0x4e72b6[_0x1fee('0x33')]:_0x310c4d[_0x1fee('0x2e')];if(_0x34e5ef[_0x1fee('0x2f')]['includeAll']){_0x4e72b6[_0x1fee('0x42')]=[{'all':!![]}];}_0x4e72b6=_[_0x1fee('0x3c')]({},_0x4e72b6,_0x34e5ef[_0x1fee('0x3f')]);return db['SmsApplication'][_0x1fee('0x44')](_0x4e72b6)[_0x1fee('0x23')](handleEntityNotFound(_0x32ed66,null))[_0x1fee('0x23')](respondWithResult(_0x32ed66,null))['catch'](handleError(_0x32ed66,null));};exports[_0x1fee('0x45')]=function(_0x3af54f,_0x171f6f){return db[_0x1fee('0x40')][_0x1fee('0x45')](_0x3af54f[_0x1fee('0x46')],{})[_0x1fee('0x23')](respondWithResult(_0x171f6f,0xc9))[_0x1fee('0x47')](handleError(_0x171f6f,null));};exports[_0x1fee('0x22')]=function(_0x27d396,_0x12c3af){if(_0x27d396[_0x1fee('0x46')]['id']){delete _0x27d396['body']['id'];}return db['SmsApplication'][_0x1fee('0x44')]({'where':{'id':_0x27d396[_0x1fee('0x43')]['id']}})[_0x1fee('0x23')](handleEntityNotFound(_0x12c3af,null))[_0x1fee('0x23')](saveUpdates(_0x27d396['body'],null))['then'](respondWithResult(_0x12c3af,null))[_0x1fee('0x47')](handleError(_0x12c3af,null));};exports[_0x1fee('0x24')]=function(_0x36f1ce,_0x12ce0e){return db['SmsApplication'][_0x1fee('0x44')]({'where':{'id':_0x36f1ce[_0x1fee('0x43')]['id']}})['then'](handleEntityNotFound(_0x12ce0e,null))['then'](removeEntity(_0x12ce0e,null))[_0x1fee('0x47')](handleError(_0x12ce0e,null));};
\ No newline at end of file
index eb8f10b..66419ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa182=['rimraf','../../config/environment','./smsApplication.attributes','exports','define','SmsApplication','utf8mb4','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x2a9f4,_0x25c14a){var _0x3c39e0=function(_0x3b8deb){while(--_0x3b8deb){_0x2a9f4['push'](_0x2a9f4['shift']());}};_0x3c39e0(++_0x25c14a);}(_0xa182,0x1d5));var _0x2a18=function(_0x4622d4,_0x3c163e){_0x4622d4=_0x4622d4-0x0;var _0x24656a=_0xa182[_0x4622d4];return _0x24656a;};'use strict';var _=require('lodash');var util=require(_0x2a18('0x0'));var logger=require(_0x2a18('0x1'))(_0x2a18('0x2'));var moment=require(_0x2a18('0x3'));var BPromise=require(_0x2a18('0x4'));var rp=require(_0x2a18('0x5'));var fs=require('fs');var path=require(_0x2a18('0x6'));var rimraf=require(_0x2a18('0x7'));var config=require(_0x2a18('0x8'));var attributes=require(_0x2a18('0x9'));module[_0x2a18('0xa')]=function(_0x522561,_0x2a859a){return _0x522561[_0x2a18('0xb')](_0x2a18('0xc'),attributes,{'tableName':'sms_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x2a18('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xeccd=['path','./smsApplication.attributes','exports','sms_applications','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0xd6ce76,_0x2e9f21){var _0x3089e8=function(_0x43e819){while(--_0x43e819){_0xd6ce76['push'](_0xd6ce76['shift']());}};_0x3089e8(++_0x2e9f21);}(_0xeccd,0x1b2));var _0xdecc=function(_0x483973,_0x136199){_0x483973=_0x483973-0x0;var _0x4bd772=_0xeccd[_0x483973];return _0x4bd772;};'use strict';var _=require(_0xdecc('0x0'));var util=require('util');var logger=require(_0xdecc('0x1'))(_0xdecc('0x2'));var moment=require(_0xdecc('0x3'));var BPromise=require(_0xdecc('0x4'));var rp=require(_0xdecc('0x5'));var fs=require('fs');var path=require(_0xdecc('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xdecc('0x7'));module[_0xdecc('0x8')]=function(_0x4a192c,_0xc97e86){return _0x4a192c['define']('SmsApplication',attributes,{'tableName':_0xdecc('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 3a5f73f..d950a79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe056=['code','message','info','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','http','request','then','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x1cbcf1,_0x3f9fd9){var _0x3a06f0=function(_0x5425d4){while(--_0x5425d4){_0x1cbcf1['push'](_0x1cbcf1['shift']());}};_0x3a06f0(++_0x3f9fd9);}(_0xe056,0xdb));var _0x6e05=function(_0x1daaa9,_0x220393){_0x1daaa9=_0x1daaa9-0x0;var _0x1dd221=_0xe056[_0x1daaa9];return _0x1dd221;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x6e05('0x0'));var BPromise=require(_0x6e05('0x1'));var rs=require(_0x6e05('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6e05('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x6e05('0x4'))(_0x6e05('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x6e05('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x390bb6,_0x1c78eb,_0x5dacb2){return new BPromise(function(_0x1a54b7,_0x177b2c){return client[_0x6e05('0x7')](_0x390bb6,_0x5dacb2)[_0x6e05('0x8')](function(_0x13af56){logger['info'](_0x6e05('0x9'),_0x1c78eb,_0x6e05('0xa'));logger[_0x6e05('0xb')](_0x6e05('0xc'),_0x1c78eb,_0x6e05('0xa'),JSON[_0x6e05('0xd')](_0x13af56));if(_0x13af56['error']){if(_0x13af56[_0x6e05('0xe')][_0x6e05('0xf')]===0x1f4){logger[_0x6e05('0xe')]('SmsApplication,\x20%s,\x20%s',_0x1c78eb,_0x13af56[_0x6e05('0xe')][_0x6e05('0x10')]);return _0x177b2c(_0x13af56[_0x6e05('0xe')][_0x6e05('0x10')]);}logger[_0x6e05('0xe')]('SmsApplication,\x20%s,\x20%s',_0x1c78eb,_0x13af56[_0x6e05('0xe')][_0x6e05('0x10')]);return _0x1a54b7(_0x13af56['error']['message']);}else{logger[_0x6e05('0x11')](_0x6e05('0x9'),_0x1c78eb,_0x6e05('0xa'));_0x1a54b7(_0x13af56['result'][_0x6e05('0x10')]);}})['catch'](function(_0x3c3ef0){logger[_0x6e05('0xe')]('SmsApplication,\x20%s,\x20%s',_0x1c78eb,_0x3c3ef0);_0x177b2c(_0x3c3ef0);});});}
\ No newline at end of file
+var _0x2ff5=['SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info'];(function(_0x14140a,_0x1de96f){var _0x5bff7d=function(_0x1a8653){while(--_0x1a8653){_0x14140a['push'](_0x14140a['shift']());}};_0x5bff7d(++_0x1de96f);}(_0x2ff5,0x1d5));var _0x52ff=function(_0x43b42c,_0x5c0e07){_0x43b42c=_0x43b42c-0x0;var _0x8a4e3d=_0x2ff5[_0x43b42c];return _0x8a4e3d;};'use strict';var _=require('lodash');var util=require(_0x52ff('0x0'));var moment=require(_0x52ff('0x1'));var BPromise=require('bluebird');var rs=require(_0x52ff('0x2'));var fs=require('fs');var Redis=require(_0x52ff('0x3'));var db=require(_0x52ff('0x4'))['db'];var utils=require(_0x52ff('0x5'));var logger=require(_0x52ff('0x6'))(_0x52ff('0x7'));var config=require('../../config/environment');var jayson=require(_0x52ff('0x8'));var client=jayson[_0x52ff('0x9')][_0x52ff('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x47e375,_0x33be91,_0xbbba62){return new BPromise(function(_0x3cfd13,_0x17ca0b){return client[_0x52ff('0xb')](_0x47e375,_0xbbba62)[_0x52ff('0xc')](function(_0x27c199){logger[_0x52ff('0xd')](_0x52ff('0xe'),_0x33be91,_0x52ff('0xf'));logger[_0x52ff('0x10')](_0x52ff('0x11'),_0x33be91,_0x52ff('0xf'),JSON[_0x52ff('0x12')](_0x27c199));if(_0x27c199[_0x52ff('0x13')]){if(_0x27c199['error']['code']===0x1f4){logger['error']('SmsApplication,\x20%s,\x20%s',_0x33be91,_0x27c199[_0x52ff('0x13')]['message']);return _0x17ca0b(_0x27c199[_0x52ff('0x13')][_0x52ff('0x14')]);}logger['error'](_0x52ff('0xe'),_0x33be91,_0x27c199[_0x52ff('0x13')][_0x52ff('0x14')]);return _0x3cfd13(_0x27c199[_0x52ff('0x13')][_0x52ff('0x14')]);}else{logger[_0x52ff('0xd')]('SmsApplication,\x20%s,\x20%s',_0x33be91,_0x52ff('0xf'));_0x3cfd13(_0x27c199[_0x52ff('0x15')][_0x52ff('0x14')]);}})[_0x52ff('0x16')](function(_0xa7ce6c){logger[_0x52ff('0x13')]('SmsApplication,\x20%s,\x20%s',_0x33be91,_0xa7ce6c);_0x17ca0b(_0xa7ce6c);});});}
\ No newline at end of file
index 03ef135..4107b20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4024=['addTags','put','smsinteraction:update','update','delete','destroy','removeTags','multer','util','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','download','create','post','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags'];(function(_0x3ea913,_0x255df2){var _0x2b4f28=function(_0x48bb25){while(--_0x48bb25){_0x3ea913['push'](_0x3ea913['shift']());}};_0x2b4f28(++_0x255df2);}(_0x4024,0x89));var _0x4402=function(_0x1363a1,_0x797c70){_0x1363a1=_0x1363a1-0x0;var _0x1202f8=_0x4024[_0x1363a1];return _0x1202f8;};'use strict';var multer=require(_0x4402('0x0'));var util=require(_0x4402('0x1'));var path=require('path');var timeout=require(_0x4402('0x2'));var express=require(_0x4402('0x3'));var router=express['Router']();var fs_extra=require(_0x4402('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x4402('0x5'));var config=require(_0x4402('0x6'));var controller=require('./smsInteraction.controller');router['get']('/',auth[_0x4402('0x7')](),controller[_0x4402('0x8')]);router[_0x4402('0x9')]('/describe',auth[_0x4402('0x7')](),controller['describe']);router['get'](_0x4402('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x4402('0x9')]('/:id/messages',auth[_0x4402('0x7')](),controller['getMessages']);router[_0x4402('0x9')]('/:id/download',auth[_0x4402('0x7')](),controller[_0x4402('0xb')]);router['post']('/',auth[_0x4402('0x7')](),controller[_0x4402('0xc')]);router[_0x4402('0xd')]('/:id/messages',auth[_0x4402('0x7')](),controller[_0x4402('0xe')]);router[_0x4402('0xd')](_0x4402('0xf'),auth[_0x4402('0x7')](),interaction[_0x4402('0x10')](_0x4402('0x11'),_0x4402('0x12')),controller[_0x4402('0x13')]);router[_0x4402('0x14')](_0x4402('0xa'),auth[_0x4402('0x7')](),interaction[_0x4402('0x10')](_0x4402('0x11'),_0x4402('0x15')),controller[_0x4402('0x16')]);router[_0x4402('0x17')](_0x4402('0xa'),auth[_0x4402('0x7')](),interaction[_0x4402('0x10')]('sms','smsinteraction:destroy'),controller[_0x4402('0x18')]);router[_0x4402('0x17')]('/:id/tags',auth[_0x4402('0x7')](),controller[_0x4402('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0x955f=['fs-extra','../../config/environment','get','isAuthenticated','index','/describe','/:id','show','/:id/messages','download','post','create','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','put','smsinteraction:update','update','delete','smsinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout','express'];(function(_0x58dae6,_0x13dc6f){var _0x597a39=function(_0x2ec5a3){while(--_0x2ec5a3){_0x58dae6['push'](_0x58dae6['shift']());}};_0x597a39(++_0x13dc6f);}(_0x955f,0x1eb));var _0xf955=function(_0xa33827,_0x230a7){_0xa33827=_0xa33827-0x0;var _0x5c4b8c=_0x955f[_0xa33827];return _0x5c4b8c;};'use strict';var multer=require(_0xf955('0x0'));var util=require(_0xf955('0x1'));var path=require(_0xf955('0x2'));var timeout=require(_0xf955('0x3'));var express=require(_0xf955('0x4'));var router=express['Router']();var fs_extra=require(_0xf955('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xf955('0x6'));var controller=require('./smsInteraction.controller');router[_0xf955('0x7')]('/',auth[_0xf955('0x8')](),controller[_0xf955('0x9')]);router['get'](_0xf955('0xa'),auth[_0xf955('0x8')](),controller['describe']);router[_0xf955('0x7')](_0xf955('0xb'),auth[_0xf955('0x8')](),controller[_0xf955('0xc')]);router[_0xf955('0x7')](_0xf955('0xd'),auth[_0xf955('0x8')](),controller['getMessages']);router[_0xf955('0x7')]('/:id/download',auth[_0xf955('0x8')](),controller[_0xf955('0xe')]);router[_0xf955('0xf')]('/',auth['isAuthenticated'](),controller[_0xf955('0x10')]);router['post'](_0xf955('0xd'),auth['isAuthenticated'](),controller[_0xf955('0x11')]);router[_0xf955('0xf')](_0xf955('0x12'),auth[_0xf955('0x8')](),interaction[_0xf955('0x13')](_0xf955('0x14'),_0xf955('0x15')),controller[_0xf955('0x16')]);router[_0xf955('0x17')](_0xf955('0xb'),auth['isAuthenticated'](),interaction[_0xf955('0x13')]('sms',_0xf955('0x18')),controller[_0xf955('0x19')]);router[_0xf955('0x1a')](_0xf955('0xb'),auth['isAuthenticated'](),interaction['tracked'](_0xf955('0x14'),_0xf955('0x1b')),controller[_0xf955('0x1c')]);router['delete'](_0xf955('0x12'),auth[_0xf955('0x8')](),controller[_0xf955('0x1d')]);module[_0xf955('0x1e')]=router;
\ No newline at end of file
index c377154..c8c0e28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2159=['moment','exports','BOOLEAN','STRING','DATE','ENUM','out','sequelize'];(function(_0x20feb1,_0x1168a4){var _0x37191d=function(_0x5b14da){while(--_0x5b14da){_0x20feb1['push'](_0x20feb1['shift']());}};_0x37191d(++_0x1168a4);}(_0x2159,0x17f));var _0x9215=function(_0x3ad0bb,_0x2a7098){_0x3ad0bb=_0x3ad0bb-0x0;var _0x4359c6=_0x2159[_0x3ad0bb];return _0x4359c6;};'use strict';var Sequelize=require(_0x9215('0x0'));var moment=require(_0x9215('0x1'));module[_0x9215('0x2')]={'closed':{'type':Sequelize[_0x9215('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x9215('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x9215('0x4')]},'note':{'type':Sequelize[_0x9215('0x4')]},'phone':{'type':Sequelize[_0x9215('0x4')]},'read1stAt':{'type':Sequelize[_0x9215('0x5')]},'firstMsgDirection':{'type':Sequelize[_0x9215('0x6')]('in',_0x9215('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x9215('0x5')]},'lastMsgDirection':{'type':Sequelize[_0x9215('0x6')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x9215('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x2cd3=['STRING','ENUM','out','sequelize','exports','BOOLEAN','DATE'];(function(_0x5037ab,_0x43209e){var _0x512adb=function(_0x261783){while(--_0x261783){_0x5037ab['push'](_0x5037ab['shift']());}};_0x512adb(++_0x43209e);}(_0x2cd3,0xf1));var _0x32cd=function(_0x146a85,_0x529b52){_0x146a85=_0x146a85-0x0;var _0x1b59bf=_0x2cd3[_0x146a85];return _0x1b59bf;};'use strict';var Sequelize=require(_0x32cd('0x0'));var moment=require('moment');module[_0x32cd('0x1')]={'closed':{'type':Sequelize[_0x32cd('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x32cd('0x3')]},'disposition':{'type':Sequelize[_0x32cd('0x4')]},'secondDisposition':{'type':Sequelize[_0x32cd('0x4')]},'thirdDisposition':{'type':Sequelize[_0x32cd('0x4')]},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x32cd('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x32cd('0x5')]('in',_0x32cd('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x32cd('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x32cd('0x5')]('in',_0x32cd('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x32cd('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 6be4956..988b46e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16f5=['Tag','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','text','body','isEmpty','SmsAccountId','i.SmsAccountId\x20IN\x20?','createdAt','parse','$lte','null','\x20IS\x20NULL','read','tag','isArray','filter','replace','isNumeric','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','clone','DESC','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','agent','i.SmsAccountId\x20IS\x20NULL','sequelize','toString','merge','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName','i.*','c.firstName','Contact.lastName','c.email','c.phone','Contact.phone','c.mobile','c.fax','o.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','SmsInteractionId','push','rows','show','include','options','create','params','describe','addMessage','SmsMessage','ids','getMessages','findOne','$gte','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','findAll','addTags','omit','spread','emit','removeTags','download','unix','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','CmContact','firstName','lastName','Messages','secret','SmsAccount','Account','mkdirSync','closedAt','direction','out','renderFile','views','.pdf','Sms','log','err','unlinkSync','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','redis','./smsInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','name','send','Users','map','fullname','TagIds','Tags','split','forEach','catch','talking','answered','unmanaged','total','closed','UserId','waiting','index','SmsInteraction','rawAttributes','fieldName','type','key','keys','query','intersection','attributes','model','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','field','color','from','tools_tags','select','u.id','u.fullname','ui.SmsInteractionId','left_join','users','u.id\x20=\x20ui.UserId','sms_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','sms_accounts','a.id\x20=\x20i.SmsAccountId','sms_messages','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','it.SmsInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','conditions','length','find','unreadMessages','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','value','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','start'];(function(_0x456f1c,_0x4453d5){var _0x51918c=function(_0x12ce55){while(--_0x12ce55){_0x456f1c['push'](_0x456f1c['shift']());}};_0x51918c(++_0x4453d5);}(_0x16f5,0x6c));var _0x516f=function(_0x22203c,_0xcf5385){_0x22203c=_0x22203c-0x0;var _0xfb3209=_0x16f5[_0x22203c];return _0xfb3209;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x516f('0x0'));var zipdir=require(_0x516f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x516f('0x2'));var moment=require(_0x516f('0x3'));var BPromise=require(_0x516f('0x4'));var Mustache=require(_0x516f('0x5'));var util=require(_0x516f('0x6'));var path=require(_0x516f('0x7'));var sox=require(_0x516f('0x8'));var csv=require(_0x516f('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x516f('0xa'));var crypto=require('crypto');var jsforce=require(_0x516f('0xb'));var deskjs=require(_0x516f('0xc'));var toCsv=require('to-csv');var querystring=require(_0x516f('0xd'));var Papa=require('papaparse');var Redis=require(_0x516f('0xe'));var authService=require(_0x516f('0xf'));var qs=require(_0x516f('0x10'));var as=require('../../components/parsers/advancedSearch');var pdf=require(_0x516f('0x11'));var hardwareService=require(_0x516f('0x12'));var logger=require(_0x516f('0x13'))(_0x516f('0x14'));var utils=require('../../config/utils');var config=require(_0x516f('0x15'));var licenseUtil=require(_0x516f('0x16'));var db=require('../../mysqldb')['db'];config[_0x516f('0x17')]=_['defaults'](config[_0x516f('0x17')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x516f('0x17')]));require(_0x516f('0x18'))[_0x516f('0x19')](socket);function respondWithStatusCode(_0x3b6857,_0x391ece){_0x391ece=_0x391ece||0xcc;return function(_0x5dc539){if(_0x5dc539){return _0x3b6857[_0x516f('0x1a')](_0x391ece);}return _0x3b6857[_0x516f('0x1b')](_0x391ece)[_0x516f('0x1c')]();};}function respondWithResult(_0x52a2e8,_0x4bffad){_0x4bffad=_0x4bffad||0xc8;return function(_0x1249c2){if(_0x1249c2){return _0x52a2e8[_0x516f('0x1b')](_0x4bffad)[_0x516f('0x1d')](_0x1249c2);}};}function respondWithFilteredResult(_0x120ff,_0x4da6b1){return function(_0x49afe2){if(_0x49afe2){var _0x3120ce=typeof _0x4da6b1[_0x516f('0x1e')]===_0x516f('0x1f')&&typeof _0x4da6b1[_0x516f('0x20')]===_0x516f('0x1f');var _0x419205=_0x49afe2[_0x516f('0x21')];var _0x1c8292=_0x3120ce?0x0:_0x4da6b1[_0x516f('0x1e')];var _0x1281dd=_0x3120ce?_0x49afe2[_0x516f('0x21')]:_0x4da6b1[_0x516f('0x1e')]+_0x4da6b1[_0x516f('0x20')];var _0x39653b;if(_0x1281dd>=_0x419205){_0x1281dd=_0x419205;_0x39653b=0xc8;}else{_0x39653b=0xce;}_0x120ff[_0x516f('0x1b')](_0x39653b);return _0x120ff[_0x516f('0x22')](_0x516f('0x23'),_0x1c8292+'-'+_0x1281dd+'/'+_0x419205)[_0x516f('0x1d')](_0x49afe2);}return null;};}function patchUpdates(_0x5335e1){return function(_0x4e6322){try{jsonpatch['apply'](_0x4e6322,_0x5335e1,!![]);}catch(_0x43af1c){return BPromise[_0x516f('0x24')](_0x43af1c);}return _0x4e6322[_0x516f('0x25')]();};}function saveUpdates(_0x49c8e5,_0x204d70){return function(_0x1c6af3){if(_0x1c6af3){return _0x1c6af3[_0x516f('0x26')](_0x49c8e5)[_0x516f('0x27')](function(_0x5c09f0){return _0x5c09f0;});}return null;};}function removeEntity(_0x1dee91,_0x458dc5){return function(_0x290bd1){if(_0x290bd1){return _0x290bd1[_0x516f('0x28')]()[_0x516f('0x27')](function(){_0x1dee91[_0x516f('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x32cafb,_0x4a05ae){return function(_0x3dadd0){if(!_0x3dadd0){_0x32cafb[_0x516f('0x1a')](0x194);}return _0x3dadd0;};}function handleError(_0x173398,_0x5b3b1f){_0x5b3b1f=_0x5b3b1f||0x1f4;return function(_0x49c7d5){logger['error'](_0x49c7d5['stack']);if(_0x49c7d5[_0x516f('0x29')]){delete _0x49c7d5[_0x516f('0x29')];}_0x173398['status'](_0x5b3b1f)[_0x516f('0x2a')](_0x49c7d5);};}function getInteractionUsers(_0x3a6a3e,_0x3f4cf3){return new BPromise(function(_0x21fcdb,_0x1e684a){try{if(_0x3f4cf3[_0x3a6a3e['id']]){_0x3a6a3e[_0x516f('0x2b')]=_[_0x516f('0x2c')](_0x3f4cf3[_0x3a6a3e['id']],function(_0x152f75){return{'id':_0x152f75['id'],'fullname':_0x152f75[_0x516f('0x2d')]};});}}catch(_0x3d9dff){_0x1e684a(_0x3d9dff);}_0x21fcdb(_0x3a6a3e);});}function getInteractionTags(_0x16ea7e,_0x5d606b){return new BPromise(function(_0x257904,_0x320021){try{if(_0x16ea7e[_0x516f('0x2e')]){_0x16ea7e[_0x516f('0x2f')]=[];_0x16ea7e[_0x516f('0x2e')][_0x516f('0x30')](',')[_0x516f('0x31')](function(_0x3478cc){_0x16ea7e[_0x516f('0x2f')]['push'](_0x5d606b[_0x3478cc]);});}delete _0x16ea7e['TagIds'];}catch(_0x19366e){_0x320021(_0x19366e);}_0x257904(_0x16ea7e);});}function updateSmsInteraction(_0x52747a,_0x42dedb,_0x446706){return new BPromise(function(_0x3043d0,_0x2fea3d){return getInteractionUsers(_0x52747a,_0x446706)[_0x516f('0x27')](function(_0x3ff388){return getInteractionTags(_0x3ff388,_0x42dedb);})[_0x516f('0x27')](function(_0x35f04d){return getStateInteraction(_0x35f04d);})[_0x516f('0x27')](function(_0x4d336d){_0x3043d0(_0x4d336d);})[_0x516f('0x32')](function(_0x27c265){_0x2fea3d(_0x27c265);});});}function getStateInteraction(_0x174084){return new BPromise(function(_0x53d3b2){_0x174084['waiting']=0x0;_0x174084[_0x516f('0x33')]=0x0;_0x174084[_0x516f('0x34')]=0x0;_0x174084[_0x516f('0x35')]=0x0;_0x174084[_0x516f('0x36')]=0x0;if(!_0x174084[_0x516f('0x37')]&&!_0x174084[_0x516f('0x38')]){_0x174084['waiting']+=0x1;}if(!_0x174084[_0x516f('0x37')]&&_0x174084[_0x516f('0x38')]){_0x174084[_0x516f('0x33')]+=0x1;if(_0x174084[_0x516f('0x39')]){_0x174084[_0x516f('0x39')]-=0x1;}}if(_0x174084[_0x516f('0x37')]&&_0x174084[_0x516f('0x38')]){_0x174084[_0x516f('0x34')]+=0x1;if(_0x174084[_0x516f('0x33')]){_0x174084['talking']-=0x1;}}if(_0x174084[_0x516f('0x37')]&&!_0x174084['UserId']){_0x174084[_0x516f('0x35')]+=0x1;if(_0x174084[_0x516f('0x39')]){_0x174084['waiting']-=0x1;}}_0x174084[_0x516f('0x36')]+=0x1;_0x53d3b2(_0x174084);});}exports[_0x516f('0x3a')]=function(_0xf24c08,_0x19626f){var _0x256a84={},_0x472cd9={},_0x2187a8={'count':0x0,'rows':[]};var _0x398d5d=_[_0x516f('0x2c')](db[_0x516f('0x3b')][_0x516f('0x3c')],function(_0x52bc36){return{'name':_0x52bc36[_0x516f('0x3d')],'type':_0x52bc36[_0x516f('0x3e')][_0x516f('0x3f')]};});_0x472cd9['model']=_['map'](_0x398d5d,_0x516f('0x29'));_0x472cd9['query']=_[_0x516f('0x40')](_0xf24c08[_0x516f('0x41')]);_0x472cd9['filters']=_[_0x516f('0x42')](_0x472cd9['model'],_0x472cd9[_0x516f('0x41')]);_0x256a84[_0x516f('0x43')]=_[_0x516f('0x42')](_0x472cd9[_0x516f('0x44')],qs[_0x516f('0x45')](_0xf24c08[_0x516f('0x41')][_0x516f('0x45')]));_0x256a84[_0x516f('0x43')]=_0x256a84['attributes']['length']?_0x256a84[_0x516f('0x43')]:_0x472cd9[_0x516f('0x44')];if(!_0xf24c08['query'][_0x516f('0x46')](_0x516f('0x47'))){_0x256a84[_0x516f('0x20')]=qs[_0x516f('0x20')](_0xf24c08[_0x516f('0x41')][_0x516f('0x20')]);_0x256a84[_0x516f('0x1e')]=qs[_0x516f('0x1e')](_0xf24c08[_0x516f('0x41')]['offset']);}_0x256a84[_0x516f('0x48')]=qs[_0x516f('0x49')](_0xf24c08['query'][_0x516f('0x49')]);_0x256a84[_0x516f('0x4a')]=qs[_0x516f('0x4b')](_[_0x516f('0x4c')](_0xf24c08[_0x516f('0x41')],_0x472cd9[_0x516f('0x4b')]),_0x398d5d);var _0x265a7f=[];var _0x5b5185=squel['select']()[_0x516f('0x4d')]('id')[_0x516f('0x4d')](_0x516f('0x29'))['field'](_0x516f('0x4e'))[_0x516f('0x4f')](_0x516f('0x50'));var _0x17f7a1=squel[_0x516f('0x51')]()[_0x516f('0x4d')](_0x516f('0x52'))[_0x516f('0x4d')](_0x516f('0x53'))[_0x516f('0x4d')](_0x516f('0x54'))[_0x516f('0x4f')]('user_has_sms_interactions','ui')[_0x516f('0x55')](_0x516f('0x56'),'u',_0x516f('0x57'));var _0x1588db=squel[_0x516f('0x51')]()[_0x516f('0x4f')](_0x516f('0x58'),'i')[_0x516f('0x55')](_0x516f('0x59'),'c',_0x516f('0x5a'))[_0x516f('0x55')]('users','o','o.id\x20=\x20i.UserId')[_0x516f('0x55')](_0x516f('0x5b'),'a',_0x516f('0x5c'))[_0x516f('0x55')](_0x516f('0x5d'),'me',_0x516f('0x5e'))[_0x516f('0x55')](_0x516f('0x5f'),'it',_0x516f('0x60'))[_0x516f('0x55')](_0x516f('0x50'),'t',_0x516f('0x61'));var _0x1931f5=squel[_0x516f('0x62')]();var _0x19872c=[];var _0x4de066=squel[_0x516f('0x62')]();var _0x515a98;if(_0xf24c08[_0x516f('0x41')][_0x516f('0x63')]){_0x515a98=as[_0x516f('0x64')](_0xf24c08[_0x516f('0x41')][_0x516f('0x63')]);var _0x5cf021=_0x515a98['sqlOperator'];for(var _0x39b603=0x0;_0x39b603<_0x515a98[_0x516f('0x65')][_0x516f('0x66')];_0x39b603++){var _0x1535a7=_0x515a98['conditions'][_0x39b603];var _0x5d0948='i';var _0x435e72=_[_0x516f('0x67')](_0x398d5d,[_0x516f('0x29'),_0x1535a7['field']]);if(!_0x435e72){switch(_0x1535a7[_0x516f('0x4d')]){case _0x516f('0x68'):if(_0x1535a7['value']==0x1){_0x1588db[_0x516f('0x69')]('`'+_0x1535a7[_0x516f('0x4d')]+_0x516f('0x6a'));}else{_0x1588db[_0x516f('0x69')]('`'+_0x1535a7[_0x516f('0x4d')]+_0x516f('0x6b'));}break;case _0x516f('0x6c'):if(_0x1535a7[_0x516f('0x6d')]===_0x516f('0x6e')){if(_0x1535a7[_0x516f('0x6f')][_0x516f('0x30')]('\x20')[_0x516f('0x66')]>0x1){_0x1931f5[_0x5cf021](_0x516f('0x70'),qs[_0x516f('0x71')](_0x1535a7[_0x516f('0x6f')]),null);}else{var _0xd6dc2d='%'+_0x1535a7[_0x516f('0x6f')]+'%';_0x1931f5[_0x5cf021](_0x516f('0x72'),_0xd6dc2d,_0xd6dc2d,_0xd6dc2d);}}else{_0x435e72=_[_0x516f('0x67')](_0x398d5d,[_0x516f('0x29'),_0x516f('0x73')]);_0x1535a7['field']=_0x516f('0x73');_0x1d46fb=as[_0x516f('0x74')](_0x5d0948,_0x435e72[_0x516f('0x3e')],_0x1535a7);_0x1931f5[_0x5cf021](_0x1d46fb['text'],_0x1d46fb['value'][_0x516f('0x75')],_0x1d46fb[_0x516f('0x6f')][_0x516f('0x1c')]);}break;case _0x516f('0x76'):var _0x3051a4=_0x1535a7[_0x516f('0x6f')][_0x516f('0x30')](',')['map'](function(_0xd320f2){return Number(_0xd320f2);});_0x3051a4[_0x516f('0x31')](function(_0x22c827){_0x4de066['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x22c827+',%');});_0x19872c=_[_0x516f('0x77')](_0x19872c,_0x3051a4);break;case _0x516f('0x78'):if(_0x1535a7[_0x516f('0x6d')]===_0x516f('0x6e')){_0x1931f5[_0x5cf021](_0x516f('0x79'),'%'+_0x1535a7[_0x516f('0x6f')]+'%',null);}else{_0x435e72=_[_0x516f('0x67')](_0x398d5d,[_0x516f('0x29'),_0x516f('0x38')]);_0x1535a7[_0x516f('0x4d')]=_0x516f('0x38');_0x1d46fb=as['buildExpression'](_0x5d0948,_0x435e72[_0x516f('0x3e')],_0x1535a7);_0x1931f5[_0x5cf021](_0x1d46fb[_0x516f('0x7a')],_0x1d46fb['value'][_0x516f('0x75')],_0x1d46fb[_0x516f('0x6f')][_0x516f('0x1c')]);}break;case _0x516f('0x7b'):_0x1d46fb=as[_0x516f('0x74')]('me',null,_0x1535a7);_0x1931f5[_0x5cf021](_0x1d46fb['text'],_0x1d46fb[_0x516f('0x6f')][_0x516f('0x75')],_0x1d46fb[_0x516f('0x6f')][_0x516f('0x1c')]);break;}}else{var _0x1d46fb=as['buildExpression'](_0x5d0948,_0x435e72['type'],_0x1535a7);_0x1931f5[_0x5cf021](_0x1d46fb['text'],_0x1d46fb['value']['start'],_0x1d46fb[_0x516f('0x6f')][_0x516f('0x1c')]);}}}else{var _0x17e383=_(_0xf24c08[_0x516f('0x41')])[_0x516f('0x40')]()[_0x516f('0x2c')](function(_0x5ed842){return _['some'](_0x398d5d,[_0x516f('0x29'),_0x5ed842])?_0x5ed842:undefined;})['compact']()[_0x516f('0x6f')]();if(!_[_0x516f('0x7c')](_0x17e383)){_0x17e383[_0x516f('0x31')](function(_0x125034){if(_0x125034===_0x516f('0x7d')){_0x1588db['where'](_0x516f('0x7e'),[]['concat'](_0xf24c08[_0x516f('0x41')][_0x125034]));}else if(_0x125034===_0x516f('0x7f')){var _0x3bbd9f=JSON[_0x516f('0x80')](_0xf24c08[_0x516f('0x41')][_0x125034])['$gte'];var _0x64112f=JSON[_0x516f('0x80')](_0xf24c08['query'][_0x125034])[_0x516f('0x81')];_0x1588db[_0x516f('0x4a')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x3bbd9f,_0x64112f);}else{if(_0xf24c08[_0x516f('0x41')][_0x125034]===_0x516f('0x82')){_0x1588db['where']('i.'+_0x125034+_0x516f('0x83'));}else{_0x1588db['where']('i.'+_0x125034+'\x20=\x20?',_0xf24c08[_0x516f('0x41')][_0x125034]);}}});}if(_0xf24c08[_0x516f('0x41')]['read']){if(_0xf24c08[_0x516f('0x41')][_0x516f('0x84')]==0x1){_0x1588db[_0x516f('0x69')]('`unreadMessages`\x20=\x200');}else{_0x1588db[_0x516f('0x69')]('`unreadMessages`\x20>\x200');}}if(_0xf24c08[_0x516f('0x41')][_0x516f('0x85')]){_0x19872c=_[_0x516f('0x86')](_0xf24c08['query']['tag'])?_0xf24c08['query'][_0x516f('0x85')]:new Array(_0xf24c08[_0x516f('0x41')][_0x516f('0x85')]);_0x19872c[_0x516f('0x31')](function(_0x217450){_0x4de066['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x217450+',%');});}if(_0xf24c08[_0x516f('0x41')][_0x516f('0x87')]){var _0x4906be=_0xf24c08[_0x516f('0x41')][_0x516f('0x87')]['replace']('\x5c','\x5c\x5c')[_0x516f('0x88')](/'/g,'\x27\x27');if(qs[_0x516f('0x89')](_0x4906be)){_0x1931f5['or']('i.id\x20LIKE\x20?',_0x4906be+'%')['or'](_0x516f('0x8a'),_0x4906be+'%');}else{_0x1931f5['or'](_0x516f('0x8b'),qs[_0x516f('0x71')](_0x4906be))['or'](_0x516f('0x8c'),_0x4906be+'%');}}}_0x1588db[_0x516f('0x4a')](_0x1931f5);_0x1588db[_0x516f('0x8d')](_0x516f('0x8e'));var _0x1ac336={'type':db[_0x516f('0x8f')][_0x516f('0x90')][_0x516f('0x91')],'raw':!![]};var _0x1831ab=_0x1588db[_0x516f('0x92')]();_0x1831ab[_0x516f('0x4d')](_0x516f('0x8e'));_0x1831ab['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');if(_0x256a84['order']){_0x256a84[_0x516f('0x48')][_0x516f('0x31')](function(_0x97cc56){var _0x41ffc4=_0x97cc56[0x0]==='contactName'?_0x97cc56[0x0]:'i.'+_0x97cc56[0x0];_0x1588db[_0x516f('0x48')](_0x41ffc4,_0x97cc56[0x1]===_0x516f('0x93')?![]:!![]);});}if(!_[_0x516f('0x7c')](_0x19872c)){_0x1588db[_0x516f('0x69')](_0x4de066);_0x1831ab[_0x516f('0x4a')](_0x516f('0x94'),_0x19872c);}BPromise[_0x516f('0x95')]()[_0x516f('0x27')](function(){if(!_0x515a98){if(_0xf24c08[_0x516f('0x41')][_0x516f('0x7d')])return;_0x1831ab[_0x516f('0x4a')]('i.SmsAccountId\x20IS\x20NOT\x20NULL');_0x1588db[_0x516f('0x4a')](_0x516f('0x96'));return;}if(_0xf24c08[_0x516f('0x97')]['role']!==_0x516f('0x98'))return;return _0xf24c08[_0x516f('0x97')]['getSmsAccounts']({'attributes':['id'],'raw':!![]})[_0x516f('0x27')](function(_0xeca2a1){if(_['isEmpty'](_0xeca2a1)){_0x1831ab[_0x516f('0x4a')](_0x516f('0x99'));_0x1588db[_0x516f('0x4a')](_0x516f('0x99'));}else{_0x1831ab[_0x516f('0x4a')](_0x516f('0x7e'),_[_0x516f('0x2c')](_0xeca2a1,'id'));_0x1588db['where'](_0x516f('0x7e'),_['map'](_0xeca2a1,'id'));}});})[_0x516f('0x27')](function(){if(_0xf24c08[_0x516f('0x97')]['role']===_0x516f('0x98')&&!_0x515a98&&!_0xf24c08['query']['SmsAccountId'])return[];return db[_0x516f('0x9a')][_0x516f('0x41')](_0x1831ab[_0x516f('0x9b')](),_0x1ac336);})['then'](function(_0x1002cc){_0x2187a8[_0x516f('0x21')]=_0x1002cc['length'];if(_0x2187a8[_0x516f('0x21')]===0x0)return[];return db['sequelize'][_0x516f('0x41')](_0x5b5185[_0x516f('0x9b')](),_0x1ac336)[_0x516f('0x27')](function(_0x2319e0){_0x265a7f=_['keyBy'](_0x2319e0,'id');_0x1ac336=_[_0x516f('0x9c')](_0x1ac336,{'model':db[_0x516f('0x3b')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0xf24c08[_0x516f('0x41')][_0x516f('0x45')]){_0x256a84[_0x516f('0x43')][_0x516f('0x31')](function(_0x53286c){_0x1588db[_0x516f('0x4d')]('i.'+_0x53286c);});}else{_0x1588db[_0x516f('0x4d')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x516f('0x68'));_0x1588db[_0x516f('0x4d')]('a.key',_0x516f('0x9d'));_0x1588db[_0x516f('0x4d')](_0x516f('0x9e'),_0x516f('0x9f'));_0x1588db[_0x516f('0x4d')](_0x516f('0xa0'),_0x516f('0xa1'));_0x1588db['field'](_0x516f('0xa2'));_0x1588db[_0x516f('0x4d')](_0x516f('0xa3'),'Contact.firstName');_0x1588db['field']('c.lastName',_0x516f('0xa4'));_0x1588db[_0x516f('0x4d')](_0x516f('0xa5'),'Contact.email');_0x1588db[_0x516f('0x4d')](_0x516f('0xa6'),_0x516f('0xa7'));_0x1588db[_0x516f('0x4d')](_0x516f('0xa8'),'Contact.mobile');_0x1588db[_0x516f('0x4d')](_0x516f('0xa9'),'Contact.fax');_0x1588db[_0x516f('0x4d')](_0x516f('0xaa'),'Owner.fullname');_0x1588db[_0x516f('0x4d')](_0x516f('0xab'),_0x516f('0xac'));_0x1588db[_0x516f('0x4d')](_0x516f('0xad'),_0x516f('0x2e'));}if(_0x256a84[_0x516f('0x20')])_0x1588db[_0x516f('0x20')](_0x256a84[_0x516f('0x20')]);if(_0x256a84[_0x516f('0x1e')])_0x1588db['offset'](_0x256a84['offset']);return db[_0x516f('0x9a')][_0x516f('0x41')](_0x1588db[_0x516f('0x9b')](),_0x1ac336);})['then'](function(_0x11a9d6){if(_0x11a9d6['length']>0x0)_0x17f7a1[_0x516f('0x4a')]('ui.SmsInteractionId\x20IN\x20?',_[_0x516f('0x2c')](_0x11a9d6,'id'));return db[_0x516f('0x9a')]['query'](_0x17f7a1[_0x516f('0x9b')](),_0x1ac336)[_0x516f('0x27')](function(_0x79aee9){var _0x104278=_[_0x516f('0xae')](_0x79aee9,_0x516f('0xaf'));var _0x494c89=[];_0x11a9d6['forEach'](function(_0x554a5f){_0x494c89[_0x516f('0xb0')](updateSmsInteraction(_0x554a5f,_0x265a7f,_0x104278));});return BPromise['all'](_0x494c89);});});})[_0x516f('0x27')](function(_0x3141a0){_0x2187a8[_0x516f('0xb1')]=_0x3141a0;return _0x2187a8;})[_0x516f('0x27')](respondWithFilteredResult(_0x19626f,_0x256a84))[_0x516f('0x32')](handleError(_0x19626f,null));};exports[_0x516f('0xb2')]=function(_0x132477,_0x8eb1b7){var _0x354987={'raw':![],'where':{'id':_0x132477['params']['id']}},_0x14547e={};_0x14547e[_0x516f('0x44')]=_[_0x516f('0x40')](db['SmsInteraction']['rawAttributes']);_0x14547e['query']=_[_0x516f('0x40')](_0x132477[_0x516f('0x41')]);_0x14547e['filters']=_[_0x516f('0x42')](_0x14547e['model'],_0x14547e['query']);_0x354987[_0x516f('0x43')]=_['intersection'](_0x14547e['model'],qs[_0x516f('0x45')](_0x132477[_0x516f('0x41')][_0x516f('0x45')]));_0x354987[_0x516f('0x43')]=_0x354987['attributes'][_0x516f('0x66')]?_0x354987['attributes']:_0x14547e[_0x516f('0x44')];if(_0x132477[_0x516f('0x41')]['includeAll']){_0x354987[_0x516f('0xb3')]=[{'all':!![]}];}_0x354987=_['merge']({},_0x354987,_0x132477[_0x516f('0xb4')]);return db[_0x516f('0x3b')][_0x516f('0x67')](_0x354987)[_0x516f('0x27')](handleEntityNotFound(_0x8eb1b7,null))[_0x516f('0x27')](respondWithResult(_0x8eb1b7,null))['catch'](handleError(_0x8eb1b7,null));};exports[_0x516f('0xb5')]=function(_0x5d13ae,_0x59d5a0){return db[_0x516f('0x3b')]['create'](_0x5d13ae[_0x516f('0x7b')],{})[_0x516f('0x27')](respondWithResult(_0x59d5a0,0xc9))[_0x516f('0x32')](handleError(_0x59d5a0,null));};exports['update']=function(_0x37f0cd,_0x1dfa56){if(_0x37f0cd['body']['id']){delete _0x37f0cd[_0x516f('0x7b')]['id'];}return db[_0x516f('0x3b')][_0x516f('0x67')]({'where':{'id':_0x37f0cd[_0x516f('0xb6')]['id']}})[_0x516f('0x27')](handleEntityNotFound(_0x1dfa56,null))[_0x516f('0x27')](saveUpdates(_0x37f0cd[_0x516f('0x7b')],null))[_0x516f('0x27')](respondWithResult(_0x1dfa56,null))[_0x516f('0x32')](handleError(_0x1dfa56,null));};exports[_0x516f('0x28')]=function(_0xf67b87,_0x2fffa4){return db[_0x516f('0x3b')][_0x516f('0x67')]({'where':{'id':_0xf67b87[_0x516f('0xb6')]['id']}})['then'](handleEntityNotFound(_0x2fffa4,null))[_0x516f('0x27')](removeEntity(_0x2fffa4,null))[_0x516f('0x32')](handleError(_0x2fffa4,null));};exports[_0x516f('0xb7')]=function(_0x464e7f,_0x3e7102){return db['SmsInteraction']['describe']()[_0x516f('0x27')](respondWithResult(_0x3e7102,null))[_0x516f('0x32')](handleError(_0x3e7102,null));};exports[_0x516f('0xb8')]=function(_0x1c4df1,_0xb1344f,_0x1c1b7c){return db[_0x516f('0xb9')][_0x516f('0x67')]({'where':{'id':_0x1c4df1[_0x516f('0xb6')]['id']}})[_0x516f('0x27')](handleEntityNotFound(_0xb1344f,null))[_0x516f('0x27')](function(_0x1d1ec7){if(_0x1d1ec7){return _0x1d1ec7[_0x516f('0xb8')](_0x1c4df1[_0x516f('0x7b')][_0x516f('0xba')],_['omit'](_0x1c4df1[_0x516f('0x7b')],['ids','id'])||{});}})[_0x516f('0x27')](respondWithResult(_0xb1344f,null))[_0x516f('0x32')](handleError(_0xb1344f,null));};exports[_0x516f('0xbb')]=function(_0x878ad6,_0x365221,_0x3a730b){var _0x5a9449={'raw':![],'where':{}};var _0x2376f0={};var _0x12cdf3={'count':0x0,'rows':[]};return db[_0x516f('0x3b')][_0x516f('0xbc')]({'where':{'id':_0x878ad6[_0x516f('0xb6')]['id']}})[_0x516f('0x27')](handleEntityNotFound(_0x365221,null))['then'](function(_0x347f5d){if(_0x347f5d){_0x2376f0['model']=_['keys'](db[_0x516f('0xb9')][_0x516f('0x3c')]);_0x2376f0[_0x516f('0x41')]=_[_0x516f('0x40')](_0x878ad6[_0x516f('0x41')]);_0x2376f0['filters']=_['intersection'](_0x2376f0[_0x516f('0x44')],_0x2376f0[_0x516f('0x41')]);_0x5a9449[_0x516f('0x43')]=_['intersection'](_0x2376f0[_0x516f('0x44')],qs[_0x516f('0x45')](_0x878ad6['query']['fields']));_0x5a9449['attributes']=_0x5a9449[_0x516f('0x43')][_0x516f('0x66')]?_0x5a9449['attributes']:_0x2376f0['model'];if(!_0x878ad6['query']['hasOwnProperty'](_0x516f('0x47'))){_0x5a9449[_0x516f('0x20')]=qs[_0x516f('0x20')](_0x878ad6[_0x516f('0x41')][_0x516f('0x20')]);_0x5a9449[_0x516f('0x1e')]=qs['offset'](_0x878ad6['query'][_0x516f('0x1e')]);}_0x5a9449['order']=qs[_0x516f('0x49')](_0x878ad6[_0x516f('0x41')]['sort']);_0x5a9449[_0x516f('0x4a')]=qs[_0x516f('0x4b')](_['pick'](_0x878ad6[_0x516f('0x41')],_0x2376f0[_0x516f('0x4b')]));_0x5a9449[_0x516f('0x4a')]['SmsInteractionId']=_0x347f5d['id'];if(_0x878ad6['query'][_0x516f('0x87')]){_0x5a9449['where']=_[_0x516f('0x9c')](_0x5a9449[_0x516f('0x4a')],{'$or':_['map'](_0x5a9449[_0x516f('0x43')],function(_0x5332e4){var _0x177c98={};_0x177c98[_0x5332e4]={'$like':'%'+_0x878ad6[_0x516f('0x41')][_0x516f('0x87')]+'%'};return _0x177c98;})});}if(_0x878ad6[_0x516f('0x41')][_0x516f('0xbd')]){var _0x5c2753=_0x878ad6['query'][_0x516f('0xbd')][_0x516f('0x30')](',');var _0x45cb78={};_0x45cb78[_0x5c2753[0x0]]={'$gte':moment(_0x5c2753[0x1])[_0x516f('0xbe')](_0x516f('0xbf'))};_0x5a9449[_0x516f('0x4a')]=_[_0x516f('0x9c')](_0x5a9449[_0x516f('0x4a')],_0x45cb78);}_0x5a9449=_[_0x516f('0x9c')]({},_0x5a9449,_0x878ad6[_0x516f('0xb4')]);return db[_0x516f('0xb9')]['count']({'where':_0x5a9449[_0x516f('0x4a')]})[_0x516f('0x27')](function(_0x40c35d){_0x12cdf3[_0x516f('0x21')]=_0x40c35d;if(_0x878ad6[_0x516f('0x41')][_0x516f('0xc0')]){_0x5a9449[_0x516f('0xb3')]=[{'all':!![]}];}return db[_0x516f('0xb9')][_0x516f('0xc1')](_0x5a9449);})[_0x516f('0x27')](function(_0x96eca6){_0x12cdf3[_0x516f('0xb1')]=_0x96eca6;return _0x12cdf3;});}})['then'](respondWithFilteredResult(_0x365221,_0x5a9449))[_0x516f('0x32')](handleError(_0x365221,null));};exports[_0x516f('0xc2')]=function(_0x4c0eb7,_0x1dade1,_0x351b06){return db[_0x516f('0x3b')][_0x516f('0x67')]({'where':{'id':_0x4c0eb7[_0x516f('0xb6')]['id']}})[_0x516f('0x27')](handleEntityNotFound(_0x1dade1,null))[_0x516f('0x27')](function(_0x30cdf3){if(_0x30cdf3){return _0x30cdf3['setTags'](_0x4c0eb7['body'][_0x516f('0xba')],_[_0x516f('0xc3')](_0x4c0eb7[_0x516f('0x7b')],[_0x516f('0xba'),'id'])||{})[_0x516f('0xc4')](function(){return db[_0x516f('0x76')][_0x516f('0xc1')]({'attributes':['id',_0x516f('0x29'),_0x516f('0x4e')],'where':{'id':_0x4c0eb7[_0x516f('0x7b')]['ids']}});})['then'](function(_0xe7699b){socket[_0x516f('0xc5')]('smsInteractionTags:save',{'id':Number(_0x4c0eb7[_0x516f('0xb6')]['id']),'tags':_0xe7699b||[]});return{'id':Number(_0x4c0eb7['params']['id']),'tags':_0xe7699b||[]};});}})[_0x516f('0x27')](respondWithResult(_0x1dade1,null))[_0x516f('0x32')](handleError(_0x1dade1,null));};exports[_0x516f('0xc6')]=function(_0x24f6ff,_0x4b5947,_0x121503){return db[_0x516f('0x3b')][_0x516f('0x67')]({'where':{'id':_0x24f6ff[_0x516f('0xb6')]['id']}})['then'](handleEntityNotFound(_0x4b5947,null))['then'](function(_0x6063ca){if(_0x6063ca){return _0x6063ca['removeTags'](_0x24f6ff[_0x516f('0x41')][_0x516f('0xba')]);}})[_0x516f('0x27')](respondWithStatusCode(_0x4b5947,null))[_0x516f('0x32')](handleError(_0x4b5947,null));};exports[_0x516f('0xc7')]=function(_0x2162dd,_0x414fc4){var _0x3ce3a5=moment()[_0x516f('0xc8')]()['toString']();var _0x5822b4=path[_0x516f('0xc9')](config[_0x516f('0xca')],_0x516f('0xcb'),_0x516f('0xcc'),_0x516f('0xcd'));var _0x5c61df=path[_0x516f('0xc9')](config[_0x516f('0xca')],_0x516f('0xcb'),'files',_0x516f('0xce'));var _0x20b3fc=path[_0x516f('0xc9')](_0x5822b4,_0x3ce3a5);var _0x1601d0=util[_0x516f('0xbe')](_0x516f('0xcf'),_0x2162dd['params']['id'],_0x3ce3a5);var _0x2a3387=path[_0x516f('0xc9')](_0x5822b4,_0x1601d0);var _0x452c66=[];_0x452c66[_0x516f('0xb0')]({'model':db[_0x516f('0x78')],'as':_0x516f('0x78'),'attributes':['id',_0x516f('0x2d')],'raw':!![]});_0x452c66[_0x516f('0xb0')]({'model':db[_0x516f('0xd0')],'as':_0x516f('0x6c'),'attributes':['id',_0x516f('0xd1'),_0x516f('0xd2')],'raw':!![]});var _0x117fa2=[{'model':db['SmsMessage'],'as':_0x516f('0xd3'),'attributes':['id','body',_0x516f('0x7f'),'direction',_0x516f('0xd4'),'read'],'include':_0x452c66}];_0x117fa2[_0x516f('0xb0')]({'model':db[_0x516f('0xd5')],'as':_0x516f('0xd6'),'attributes':['id',_0x516f('0x29')]});_0x117fa2[_0x516f('0xb0')]({'model':db[_0x516f('0x78')],'as':'Owner','attributes':['id',_0x516f('0x2d')]});return db[_0x516f('0x3b')][_0x516f('0x67')]({'where':{'id':_0x2162dd[_0x516f('0xb6')]['id']},'include':_0x117fa2})[_0x516f('0x27')](handleEntityNotFound(_0x414fc4,null))[_0x516f('0x27')](function(_0x5c625b){if(_0x5c625b){var _0x4b8155=_0x5c625b['get']({'plain':!![]});fs[_0x516f('0xd7')](_0x20b3fc);var _0x4f43f8={'channel':'Sms','account':_0x4b8155[_0x516f('0xd6')][_0x516f('0x29')],'agent':_0x4b8155['Owner']?_0x4b8155['Owner'][_0x516f('0x2d')]:'N.A.','createdAt':moment(_0x4b8155[_0x516f('0x7f')])[_0x516f('0xbe')](_0x516f('0xbf'))['toString'](),'closedAt':_0x4b8155['closed']?moment(_0x4b8155[_0x516f('0xd8')])[_0x516f('0xbe')](_0x516f('0xbf'))[_0x516f('0x9b')]():'','disposition':_0x4b8155['disposition'],'messages':_(_0x4b8155['Messages'])[_0x516f('0x87')]({'secret':![]})[_0x516f('0x2c')](function(_0x441d27){return{'date':moment(_0x441d27[_0x516f('0x7f')])[_0x516f('0xbe')](_0x516f('0xbf'))[_0x516f('0x9b')](),'sender':_0x441d27[_0x516f('0xd9')]===_0x516f('0xda')?_0x441d27[_0x516f('0x78')]?_0x441d27[_0x516f('0x78')][_0x516f('0x2d')]:'System':_0x441d27[_0x516f('0x6c')][_0x516f('0xd1')]+(_0x441d27[_0x516f('0x6c')][_0x516f('0xd2')]?'\x20'+_0x441d27[_0x516f('0x6c')][_0x516f('0xd2')]:''),'body':_0x441d27[_0x516f('0x7b')],'direction':_0x441d27[_0x516f('0xd9')]==='out'?'A':'C','secret':_0x441d27[_0x516f('0xd4')],'read':_0x441d27['read']};})[_0x516f('0x6f')]()};return ejs[_0x516f('0xdb')](path[_0x516f('0xc9')](config[_0x516f('0xca')],_0x516f('0xcb'),_0x516f('0xdc'),'downloadInteraction.ejs'),{'interaction':_0x4f43f8})[_0x516f('0x27')](function(_0x1ba8cd){var _0x2abfdd=path[_0x516f('0xc9')](_0x20b3fc,'transcript-'+_0x4b8155['id']+'-'+_0x3ce3a5+_0x516f('0xdd'));var _0x220d56={'path':_0x2abfdd,'channel':_0x516f('0xde'),'interactionId':_0x4b8155['id']};return pdf['createPdfFromHTML'](_0x1ba8cd,_0x220d56);})[_0x516f('0x27')](function(){return new BPromise(function(_0x2adea9,_0x49fc02){zipdir(_0x20b3fc,{'saveTo':_0x2a3387},function(_0x33101c,_0x1108b1){if(_0x33101c)return _0x49fc02(_0x33101c);return _0x2adea9(_0x1108b1);});})[_0x516f('0x27')](function(){return new BPromise(function(_0x3b44ee,_0x2f5b09){rimraf(_0x20b3fc,function(_0x245a78){if(_0x245a78)_0x2f5b09(_0x245a78);return _0x3b44ee();});});})[_0x516f('0x27')](function(){return _0x414fc4[_0x516f('0xc7')](_0x2a3387,_0x1601d0,function(_0x2ffdf6){if(_0x2ffdf6){console[_0x516f('0xdf')](_0x516f('0xe0'),_0x2ffdf6);}else{fs[_0x516f('0xe1')](_0x2a3387);}});});});}else{return _0x414fc4[_0x516f('0x1a')](0xc8);}})[_0x516f('0x32')](handleError(_0x414fc4,null));};
\ No newline at end of file
+var _0x906b=['fullname','TagIds','split','Tags','waiting','answered','unmanaged','total','closed','UserId','talking','index','SmsInteraction','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','fields','length','model','hasOwnProperty','sort','where','pick','select','field','color','from','tools_tags','u.id','ui.SmsInteractionId','user_has_sms_interactions','left_join','u.id\x20=\x20ui.UserId','sms_interactions','cm_contacts','users','o.id\x20=\x20i.UserId','sms_accounts','a.id\x20=\x20i.SmsAccountId','sms_messages','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','it.SmsInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','parseSearch','search','sqlOperator','conditions','find','unreadMessages','value','`\x20=\x200','having','`\x20>\x200','Contact','operator','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','ContactId','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','buildExpression','body','some','compact','isEmpty','forEach','i.SmsAccountId\x20IN\x20?','concat','createdAt','parse','$gte','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','i.id','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','DESC','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','sequelize','toString','merge','a.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','SmsInteractionId','push','all','catch','include','options','create','update','destroy','params','describe','addMessage','ids','getMessages','findOne','nolimit','format','YYYY-MM-DD\x20HH:mm:ss','SmsMessage','includeAll','addTags','setTags','omit','spread','emit','removeTags','server','files','tmp','join','root','attachments','User','CmContact','firstName','lastName','Messages','direction','SmsAccount','Account','Owner','get','mkdirSync','Sms','N.A.','closedAt','disposition','out','renderFile','views','createPdfFromHTML','download','log','err','unlinkSync','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','redis','defaults','socket.io-emitter','register','sendStatus','status','end','offset','limit','undefined','count','Content-Range','json','then','error','name','send','map'];(function(_0x43247e,_0x5c1d17){var _0x518e6a=function(_0x4fad41){while(--_0x4fad41){_0x43247e['push'](_0x43247e['shift']());}};_0x518e6a(++_0x5c1d17);}(_0x906b,0x19c));var _0xb906=function(_0x368fb9,_0x1a9895){_0x368fb9=_0x368fb9-0x0;var _0x4892fb=_0x906b[_0x368fb9];return _0x4892fb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb906('0x0'));var zipdir=require(_0xb906('0x1'));var jsonpatch=require(_0xb906('0x2'));var rp=require(_0xb906('0x3'));var moment=require(_0xb906('0x4'));var BPromise=require(_0xb906('0x5'));var Mustache=require(_0xb906('0x6'));var util=require(_0xb906('0x7'));var path=require('path');var sox=require(_0xb906('0x8'));var csv=require(_0xb906('0x9'));var ejs=require(_0xb906('0xa'));var fs=require('fs');var fs_extra=require(_0xb906('0xb'));var _=require(_0xb906('0xc'));var squel=require(_0xb906('0xd'));var crypto=require(_0xb906('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xb906('0xf'));var toCsv=require('to-csv');var querystring=require(_0xb906('0x10'));var Papa=require(_0xb906('0x11'));var Redis=require(_0xb906('0x12'));var authService=require(_0xb906('0x13'));var qs=require(_0xb906('0x14'));var as=require(_0xb906('0x15'));var pdf=require(_0xb906('0x16'));var hardwareService=require(_0xb906('0x17'));var logger=require(_0xb906('0x18'))(_0xb906('0x19'));var utils=require(_0xb906('0x1a'));var config=require(_0xb906('0x1b'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xb906('0x1c')]=_[_0xb906('0x1d')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xb906('0x1e'))(new Redis(config[_0xb906('0x1c')]));require('./smsInteraction.socket')[_0xb906('0x1f')](socket);function respondWithStatusCode(_0x351f0c,_0x42a14a){_0x42a14a=_0x42a14a||0xcc;return function(_0x5f2e68){if(_0x5f2e68){return _0x351f0c[_0xb906('0x20')](_0x42a14a);}return _0x351f0c[_0xb906('0x21')](_0x42a14a)[_0xb906('0x22')]();};}function respondWithResult(_0x2196d6,_0x31c728){_0x31c728=_0x31c728||0xc8;return function(_0x1fdf6b){if(_0x1fdf6b){return _0x2196d6[_0xb906('0x21')](_0x31c728)['json'](_0x1fdf6b);}};}function respondWithFilteredResult(_0x147c18,_0x1e053d){return function(_0x4a98ca){if(_0x4a98ca){var _0x3e8559=typeof _0x1e053d[_0xb906('0x23')]==='undefined'&&typeof _0x1e053d[_0xb906('0x24')]===_0xb906('0x25');var _0x58bf6f=_0x4a98ca[_0xb906('0x26')];var _0xcc512d=_0x3e8559?0x0:_0x1e053d[_0xb906('0x23')];var _0x2c527a=_0x3e8559?_0x4a98ca[_0xb906('0x26')]:_0x1e053d['offset']+_0x1e053d[_0xb906('0x24')];var _0x397c32;if(_0x2c527a>=_0x58bf6f){_0x2c527a=_0x58bf6f;_0x397c32=0xc8;}else{_0x397c32=0xce;}_0x147c18[_0xb906('0x21')](_0x397c32);return _0x147c18['set'](_0xb906('0x27'),_0xcc512d+'-'+_0x2c527a+'/'+_0x58bf6f)[_0xb906('0x28')](_0x4a98ca);}return null;};}function patchUpdates(_0x284329){return function(_0x21c245){try{jsonpatch['apply'](_0x21c245,_0x284329,!![]);}catch(_0x3a2031){return BPromise['reject'](_0x3a2031);}return _0x21c245['save']();};}function saveUpdates(_0x1d3199,_0x39a0ac){return function(_0x32a0da){if(_0x32a0da){return _0x32a0da['update'](_0x1d3199)[_0xb906('0x29')](function(_0x18747b){return _0x18747b;});}return null;};}function removeEntity(_0x380445,_0x4d3218){return function(_0x42c34f){if(_0x42c34f){return _0x42c34f['destroy']()[_0xb906('0x29')](function(){_0x380445[_0xb906('0x21')](0xcc)[_0xb906('0x22')]();});}};}function handleEntityNotFound(_0x3c8236,_0x2164a3){return function(_0x1a236e){if(!_0x1a236e){_0x3c8236[_0xb906('0x20')](0x194);}return _0x1a236e;};}function handleError(_0x3dcb8a,_0x17dde7){_0x17dde7=_0x17dde7||0x1f4;return function(_0x3fe2a0){logger[_0xb906('0x2a')](_0x3fe2a0['stack']);if(_0x3fe2a0[_0xb906('0x2b')]){delete _0x3fe2a0[_0xb906('0x2b')];}_0x3dcb8a['status'](_0x17dde7)[_0xb906('0x2c')](_0x3fe2a0);};}function getInteractionUsers(_0xf83120,_0x3bc3ca){return new BPromise(function(_0x11fa64,_0xa66a37){try{if(_0x3bc3ca[_0xf83120['id']]){_0xf83120['Users']=_[_0xb906('0x2d')](_0x3bc3ca[_0xf83120['id']],function(_0x3965de){return{'id':_0x3965de['id'],'fullname':_0x3965de[_0xb906('0x2e')]};});}}catch(_0x44869c){_0xa66a37(_0x44869c);}_0x11fa64(_0xf83120);});}function getInteractionTags(_0x17fcd9,_0x325f11){return new BPromise(function(_0x28900c,_0x5d0370){try{if(_0x17fcd9[_0xb906('0x2f')]){_0x17fcd9['Tags']=[];_0x17fcd9[_0xb906('0x2f')][_0xb906('0x30')](',')['forEach'](function(_0x25f0f3){_0x17fcd9[_0xb906('0x31')]['push'](_0x325f11[_0x25f0f3]);});}delete _0x17fcd9['TagIds'];}catch(_0xf48e83){_0x5d0370(_0xf48e83);}_0x28900c(_0x17fcd9);});}function updateSmsInteraction(_0x387d9e,_0x2e0be9,_0x5948ef){return new BPromise(function(_0x21706d,_0x21fa3d){return getInteractionUsers(_0x387d9e,_0x5948ef)[_0xb906('0x29')](function(_0x5e5e35){return getInteractionTags(_0x5e5e35,_0x2e0be9);})[_0xb906('0x29')](function(_0x2264ec){return getStateInteraction(_0x2264ec);})[_0xb906('0x29')](function(_0x2c3955){_0x21706d(_0x2c3955);})['catch'](function(_0x2c37bf){_0x21fa3d(_0x2c37bf);});});}function getStateInteraction(_0x36c0ec){return new BPromise(function(_0x3f4e8f){_0x36c0ec[_0xb906('0x32')]=0x0;_0x36c0ec['talking']=0x0;_0x36c0ec[_0xb906('0x33')]=0x0;_0x36c0ec[_0xb906('0x34')]=0x0;_0x36c0ec[_0xb906('0x35')]=0x0;if(!_0x36c0ec[_0xb906('0x36')]&&!_0x36c0ec['UserId']){_0x36c0ec[_0xb906('0x32')]+=0x1;}if(!_0x36c0ec['closed']&&_0x36c0ec[_0xb906('0x37')]){_0x36c0ec[_0xb906('0x38')]+=0x1;if(_0x36c0ec[_0xb906('0x32')]){_0x36c0ec[_0xb906('0x32')]-=0x1;}}if(_0x36c0ec['closed']&&_0x36c0ec['UserId']){_0x36c0ec[_0xb906('0x33')]+=0x1;if(_0x36c0ec[_0xb906('0x38')]){_0x36c0ec[_0xb906('0x38')]-=0x1;}}if(_0x36c0ec[_0xb906('0x36')]&&!_0x36c0ec['UserId']){_0x36c0ec[_0xb906('0x34')]+=0x1;if(_0x36c0ec[_0xb906('0x32')]){_0x36c0ec['waiting']-=0x1;}}_0x36c0ec['total']+=0x1;_0x3f4e8f(_0x36c0ec);});}exports[_0xb906('0x39')]=function(_0x4dfd7f,_0x512c2c){var _0x1b255f={},_0xc5113d={},_0x4b5d0e={'count':0x0,'rows':[]};var _0xfca0be=_[_0xb906('0x2d')](db[_0xb906('0x3a')][_0xb906('0x3b')],function(_0x39905a){return{'name':_0x39905a[_0xb906('0x3c')],'type':_0x39905a[_0xb906('0x3d')][_0xb906('0x3e')]};});_0xc5113d['model']=_[_0xb906('0x2d')](_0xfca0be,_0xb906('0x2b'));_0xc5113d[_0xb906('0x3f')]=_[_0xb906('0x40')](_0x4dfd7f[_0xb906('0x3f')]);_0xc5113d[_0xb906('0x41')]=_[_0xb906('0x42')](_0xc5113d['model'],_0xc5113d['query']);_0x1b255f[_0xb906('0x43')]=_[_0xb906('0x42')](_0xc5113d['model'],qs[_0xb906('0x44')](_0x4dfd7f[_0xb906('0x3f')]['fields']));_0x1b255f['attributes']=_0x1b255f[_0xb906('0x43')][_0xb906('0x45')]?_0x1b255f[_0xb906('0x43')]:_0xc5113d[_0xb906('0x46')];if(!_0x4dfd7f[_0xb906('0x3f')][_0xb906('0x47')]('nolimit')){_0x1b255f['limit']=qs['limit'](_0x4dfd7f[_0xb906('0x3f')]['limit']);_0x1b255f['offset']=qs['offset'](_0x4dfd7f[_0xb906('0x3f')][_0xb906('0x23')]);}_0x1b255f['order']=qs[_0xb906('0x48')](_0x4dfd7f[_0xb906('0x3f')]['sort']);_0x1b255f[_0xb906('0x49')]=qs[_0xb906('0x41')](_[_0xb906('0x4a')](_0x4dfd7f[_0xb906('0x3f')],_0xc5113d['filters']),_0xfca0be);var _0x214519=[];var _0x27397c=squel[_0xb906('0x4b')]()[_0xb906('0x4c')]('id')['field'](_0xb906('0x2b'))['field'](_0xb906('0x4d'))[_0xb906('0x4e')](_0xb906('0x4f'));var _0x17d5c9=squel['select']()[_0xb906('0x4c')](_0xb906('0x50'))[_0xb906('0x4c')]('u.fullname')['field'](_0xb906('0x51'))[_0xb906('0x4e')](_0xb906('0x52'),'ui')[_0xb906('0x53')]('users','u',_0xb906('0x54'));var _0x3a4dfa=squel[_0xb906('0x4b')]()[_0xb906('0x4e')](_0xb906('0x55'),'i')[_0xb906('0x53')](_0xb906('0x56'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xb906('0x53')](_0xb906('0x57'),'o',_0xb906('0x58'))[_0xb906('0x53')](_0xb906('0x59'),'a',_0xb906('0x5a'))[_0xb906('0x53')](_0xb906('0x5b'),'me',_0xb906('0x5c'))['left_join'](_0xb906('0x5d'),'it',_0xb906('0x5e'))[_0xb906('0x53')]('tools_tags','t',_0xb906('0x5f'));var _0x5a291a=squel[_0xb906('0x60')]();var _0x310d60=[];var _0x108768=squel[_0xb906('0x60')]();var _0x28a481;if(_0x4dfd7f[_0xb906('0x3f')]['search']){_0x28a481=as[_0xb906('0x61')](_0x4dfd7f[_0xb906('0x3f')][_0xb906('0x62')]);var _0x424177=_0x28a481[_0xb906('0x63')];for(var _0x4ec382=0x0;_0x4ec382<_0x28a481[_0xb906('0x64')]['length'];_0x4ec382++){var _0x3389fd=_0x28a481['conditions'][_0x4ec382];var _0x17bd69='i';var _0x372903=_[_0xb906('0x65')](_0xfca0be,[_0xb906('0x2b'),_0x3389fd[_0xb906('0x4c')]]);if(!_0x372903){switch(_0x3389fd[_0xb906('0x4c')]){case _0xb906('0x66'):if(_0x3389fd[_0xb906('0x67')]==0x1){_0x3a4dfa['having']('`'+_0x3389fd[_0xb906('0x4c')]+_0xb906('0x68'));}else{_0x3a4dfa[_0xb906('0x69')]('`'+_0x3389fd[_0xb906('0x4c')]+_0xb906('0x6a'));}break;case _0xb906('0x6b'):if(_0x3389fd[_0xb906('0x6c')]==='$substring'){if(_0x3389fd[_0xb906('0x67')]['split']('\x20')[_0xb906('0x45')]>0x1){_0x5a291a[_0x424177](_0xb906('0x6d'),qs[_0xb906('0x6e')](_0x3389fd['value']),null);}else{var _0x590483='%'+_0x3389fd[_0xb906('0x67')]+'%';_0x5a291a[_0x424177]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x590483,_0x590483,_0x590483);}}else{_0x372903=_[_0xb906('0x65')](_0xfca0be,[_0xb906('0x2b'),'ContactId']);_0x3389fd['field']=_0xb906('0x6f');_0x447a40=as['buildExpression'](_0x17bd69,_0x372903['type'],_0x3389fd);_0x5a291a[_0x424177](_0x447a40[_0xb906('0x70')],_0x447a40[_0xb906('0x67')][_0xb906('0x71')],_0x447a40[_0xb906('0x67')]['end']);}break;case _0xb906('0x72'):var _0xe4db3=_0x3389fd[_0xb906('0x67')][_0xb906('0x30')](',')[_0xb906('0x2d')](function(_0x593feb){return Number(_0x593feb);});_0xe4db3['forEach'](function(_0x18cd81){_0x108768['or'](_0xb906('0x73'),'%,'+_0x18cd81+',%');});_0x310d60=_[_0xb906('0x74')](_0x310d60,_0xe4db3);break;case'User':if(_0x3389fd[_0xb906('0x6c')]==='$substring'){_0x5a291a[_0x424177](_0xb906('0x75'),'%'+_0x3389fd[_0xb906('0x67')]+'%',null);}else{_0x372903=_[_0xb906('0x65')](_0xfca0be,[_0xb906('0x2b'),_0xb906('0x37')]);_0x3389fd[_0xb906('0x4c')]=_0xb906('0x37');_0x447a40=as[_0xb906('0x76')](_0x17bd69,_0x372903[_0xb906('0x3d')],_0x3389fd);_0x5a291a[_0x424177](_0x447a40[_0xb906('0x70')],_0x447a40[_0xb906('0x67')][_0xb906('0x71')],_0x447a40[_0xb906('0x67')][_0xb906('0x22')]);}break;case _0xb906('0x77'):_0x447a40=as['buildExpression']('me',null,_0x3389fd);_0x5a291a[_0x424177](_0x447a40[_0xb906('0x70')],_0x447a40[_0xb906('0x67')][_0xb906('0x71')],_0x447a40[_0xb906('0x67')]['end']);break;}}else{var _0x447a40=as[_0xb906('0x76')](_0x17bd69,_0x372903[_0xb906('0x3d')],_0x3389fd);_0x5a291a[_0x424177](_0x447a40['text'],_0x447a40[_0xb906('0x67')][_0xb906('0x71')],_0x447a40['value'][_0xb906('0x22')]);}}}else{var _0x39da5b=_(_0x4dfd7f['query'])['keys']()[_0xb906('0x2d')](function(_0x52f016){return _[_0xb906('0x78')](_0xfca0be,[_0xb906('0x2b'),_0x52f016])?_0x52f016:undefined;})[_0xb906('0x79')]()[_0xb906('0x67')]();if(!_[_0xb906('0x7a')](_0x39da5b)){_0x39da5b[_0xb906('0x7b')](function(_0x1032a1){if(_0x1032a1==='SmsAccountId'){_0x3a4dfa[_0xb906('0x49')](_0xb906('0x7c'),[][_0xb906('0x7d')](_0x4dfd7f[_0xb906('0x3f')][_0x1032a1]));}else if(_0x1032a1===_0xb906('0x7e')){var _0x1afeb3=JSON[_0xb906('0x7f')](_0x4dfd7f[_0xb906('0x3f')][_0x1032a1])[_0xb906('0x80')];var _0x10665c=JSON['parse'](_0x4dfd7f[_0xb906('0x3f')][_0x1032a1])['$lte'];_0x3a4dfa[_0xb906('0x49')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x1afeb3,_0x10665c);}else{if(_0x4dfd7f[_0xb906('0x3f')][_0x1032a1]==='null'){_0x3a4dfa[_0xb906('0x49')]('i.'+_0x1032a1+_0xb906('0x81'));}else{_0x3a4dfa['where']('i.'+_0x1032a1+'\x20=\x20?',_0x4dfd7f[_0xb906('0x3f')][_0x1032a1]);}}});}if(_0x4dfd7f[_0xb906('0x3f')][_0xb906('0x82')]){if(_0x4dfd7f['query'][_0xb906('0x82')]==0x1){_0x3a4dfa['having'](_0xb906('0x83'));}else{_0x3a4dfa[_0xb906('0x69')](_0xb906('0x84'));}}if(_0x4dfd7f[_0xb906('0x3f')]['tag']){_0x310d60=_[_0xb906('0x85')](_0x4dfd7f['query'][_0xb906('0x86')])?_0x4dfd7f[_0xb906('0x3f')][_0xb906('0x86')]:new Array(_0x4dfd7f[_0xb906('0x3f')][_0xb906('0x86')]);_0x310d60[_0xb906('0x7b')](function(_0x25ff70){_0x108768['or'](_0xb906('0x73'),'%,'+_0x25ff70+',%');});}if(_0x4dfd7f[_0xb906('0x3f')][_0xb906('0x87')]){var _0x58bd1b=_0x4dfd7f[_0xb906('0x3f')][_0xb906('0x87')][_0xb906('0x88')]('\x5c','\x5c\x5c')[_0xb906('0x88')](/'/g,'\x27\x27');if(qs[_0xb906('0x89')](_0x58bd1b)){_0x5a291a['or'](_0xb906('0x8a'),_0x58bd1b+'%')['or'](_0xb906('0x8b'),_0x58bd1b+'%');}else{_0x5a291a['or'](_0xb906('0x8c'),qs[_0xb906('0x6e')](_0x58bd1b))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x58bd1b+'%');}}}_0x3a4dfa[_0xb906('0x49')](_0x5a291a);_0x3a4dfa[_0xb906('0x8d')](_0xb906('0x8e'));var _0x49442e={'type':db['Sequelize'][_0xb906('0x8f')][_0xb906('0x90')],'raw':!![]};var _0x2a86f2=_0x3a4dfa[_0xb906('0x91')]();_0x2a86f2[_0xb906('0x4c')](_0xb906('0x8e'));_0x2a86f2[_0xb906('0x4c')](_0xb906('0x92'),'unreadMessages');if(_0x1b255f[_0xb906('0x93')]){_0x1b255f[_0xb906('0x93')][_0xb906('0x7b')](function(_0x3e324c){var _0x363a6e=_0x3e324c[0x0]==='contactName'?_0x3e324c[0x0]:'i.'+_0x3e324c[0x0];_0x3a4dfa['order'](_0x363a6e,_0x3e324c[0x1]===_0xb906('0x94')?![]:!![]);});}if(!_[_0xb906('0x7a')](_0x310d60)){_0x3a4dfa['having'](_0x108768);_0x2a86f2[_0xb906('0x49')]('t.id\x20IN\x20?',_0x310d60);}BPromise[_0xb906('0x95')]()[_0xb906('0x29')](function(){if(!_0x28a481){if(_0x4dfd7f['query']['SmsAccountId'])return;_0x2a86f2['where'](_0xb906('0x96'));_0x3a4dfa['where'](_0xb906('0x96'));return;}if(_0x4dfd7f[_0xb906('0x97')][_0xb906('0x98')]!==_0xb906('0x99'))return;return _0x4dfd7f['user'][_0xb906('0x9a')]({'attributes':['id'],'raw':!![]})['then'](function(_0x4225dc){if(_[_0xb906('0x7a')](_0x4225dc)){_0x2a86f2[_0xb906('0x49')]('i.SmsAccountId\x20IS\x20NULL');_0x3a4dfa['where'](_0xb906('0x9b'));}else{_0x2a86f2[_0xb906('0x49')](_0xb906('0x7c'),_[_0xb906('0x2d')](_0x4225dc,'id'));_0x3a4dfa[_0xb906('0x49')](_0xb906('0x7c'),_[_0xb906('0x2d')](_0x4225dc,'id'));}});})[_0xb906('0x29')](function(){if(_0x4dfd7f[_0xb906('0x97')]['role']===_0xb906('0x99')&&!_0x28a481&&!_0x4dfd7f[_0xb906('0x3f')]['SmsAccountId'])return[];return db[_0xb906('0x9c')]['query'](_0x2a86f2[_0xb906('0x9d')](),_0x49442e);})[_0xb906('0x29')](function(_0x14cf22){_0x4b5d0e[_0xb906('0x26')]=_0x14cf22['length'];if(_0x4b5d0e['count']===0x0)return[];return db[_0xb906('0x9c')]['query'](_0x27397c[_0xb906('0x9d')](),_0x49442e)['then'](function(_0x356579){_0x214519=_['keyBy'](_0x356579,'id');_0x49442e=_[_0xb906('0x9e')](_0x49442e,{'model':db['SmsInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x4dfd7f[_0xb906('0x3f')][_0xb906('0x44')]){_0x1b255f[_0xb906('0x43')][_0xb906('0x7b')](function(_0x81f595){_0x3a4dfa[_0xb906('0x4c')]('i.'+_0x81f595);});}else{_0x3a4dfa[_0xb906('0x4c')](_0xb906('0x92'),_0xb906('0x66'));_0x3a4dfa[_0xb906('0x4c')](_0xb906('0x9f'),'Account.key');_0x3a4dfa[_0xb906('0x4c')](_0xb906('0xa0'),_0xb906('0xa1'));_0x3a4dfa[_0xb906('0x4c')](_0xb906('0xa2'),_0xb906('0xa3'));_0x3a4dfa[_0xb906('0x4c')]('i.*');_0x3a4dfa[_0xb906('0x4c')]('c.firstName','Contact.firstName');_0x3a4dfa[_0xb906('0x4c')](_0xb906('0xa4'),_0xb906('0xa5'));_0x3a4dfa['field'](_0xb906('0xa6'),_0xb906('0xa7'));_0x3a4dfa[_0xb906('0x4c')]('c.phone',_0xb906('0xa8'));_0x3a4dfa[_0xb906('0x4c')]('c.mobile',_0xb906('0xa9'));_0x3a4dfa[_0xb906('0x4c')](_0xb906('0xaa'),_0xb906('0xab'));_0x3a4dfa[_0xb906('0x4c')](_0xb906('0xac'),_0xb906('0xad'));_0x3a4dfa[_0xb906('0x4c')]('o.internal','Owner.internal');_0x3a4dfa['field']('GROUP_CONCAT(DISTINCT\x20t.id)',_0xb906('0x2f'));}if(_0x1b255f[_0xb906('0x24')])_0x3a4dfa[_0xb906('0x24')](_0x1b255f[_0xb906('0x24')]);if(_0x1b255f[_0xb906('0x23')])_0x3a4dfa[_0xb906('0x23')](_0x1b255f['offset']);return db['sequelize'][_0xb906('0x3f')](_0x3a4dfa[_0xb906('0x9d')](),_0x49442e);})[_0xb906('0x29')](function(_0x191421){if(_0x191421[_0xb906('0x45')]>0x0)_0x17d5c9[_0xb906('0x49')]('ui.SmsInteractionId\x20IN\x20?',_[_0xb906('0x2d')](_0x191421,'id'));return db[_0xb906('0x9c')][_0xb906('0x3f')](_0x17d5c9[_0xb906('0x9d')](),_0x49442e)[_0xb906('0x29')](function(_0x4e0065){var _0x11b100=_['groupBy'](_0x4e0065,_0xb906('0xae'));var _0x3e250d=[];_0x191421[_0xb906('0x7b')](function(_0x568211){_0x3e250d[_0xb906('0xaf')](updateSmsInteraction(_0x568211,_0x214519,_0x11b100));});return BPromise[_0xb906('0xb0')](_0x3e250d);});});})['then'](function(_0x360f00){_0x4b5d0e['rows']=_0x360f00;return _0x4b5d0e;})[_0xb906('0x29')](respondWithFilteredResult(_0x512c2c,_0x1b255f))[_0xb906('0xb1')](handleError(_0x512c2c,null));};exports['show']=function(_0x3ef17c,_0x366b48){var _0x2e7066={'raw':![],'where':{'id':_0x3ef17c['params']['id']}},_0x2a9fd8={};_0x2a9fd8[_0xb906('0x46')]=_[_0xb906('0x40')](db[_0xb906('0x3a')]['rawAttributes']);_0x2a9fd8[_0xb906('0x3f')]=_['keys'](_0x3ef17c[_0xb906('0x3f')]);_0x2a9fd8[_0xb906('0x41')]=_['intersection'](_0x2a9fd8[_0xb906('0x46')],_0x2a9fd8['query']);_0x2e7066['attributes']=_[_0xb906('0x42')](_0x2a9fd8[_0xb906('0x46')],qs[_0xb906('0x44')](_0x3ef17c[_0xb906('0x3f')][_0xb906('0x44')]));_0x2e7066[_0xb906('0x43')]=_0x2e7066[_0xb906('0x43')]['length']?_0x2e7066[_0xb906('0x43')]:_0x2a9fd8['model'];if(_0x3ef17c[_0xb906('0x3f')]['includeAll']){_0x2e7066[_0xb906('0xb2')]=[{'all':!![]}];}_0x2e7066=_['merge']({},_0x2e7066,_0x3ef17c[_0xb906('0xb3')]);return db[_0xb906('0x3a')][_0xb906('0x65')](_0x2e7066)[_0xb906('0x29')](handleEntityNotFound(_0x366b48,null))['then'](respondWithResult(_0x366b48,null))[_0xb906('0xb1')](handleError(_0x366b48,null));};exports[_0xb906('0xb4')]=function(_0x15d888,_0x16634e){return db['SmsInteraction'][_0xb906('0xb4')](_0x15d888[_0xb906('0x77')],{})['then'](respondWithResult(_0x16634e,0xc9))['catch'](handleError(_0x16634e,null));};exports[_0xb906('0xb5')]=function(_0x435321,_0x4f18eb){if(_0x435321[_0xb906('0x77')]['id']){delete _0x435321[_0xb906('0x77')]['id'];}return db['SmsInteraction'][_0xb906('0x65')]({'where':{'id':_0x435321['params']['id']}})[_0xb906('0x29')](handleEntityNotFound(_0x4f18eb,null))[_0xb906('0x29')](saveUpdates(_0x435321[_0xb906('0x77')],null))[_0xb906('0x29')](respondWithResult(_0x4f18eb,null))[_0xb906('0xb1')](handleError(_0x4f18eb,null));};exports[_0xb906('0xb6')]=function(_0x2e6cad,_0x1f4c44){return db[_0xb906('0x3a')][_0xb906('0x65')]({'where':{'id':_0x2e6cad[_0xb906('0xb7')]['id']}})['then'](handleEntityNotFound(_0x1f4c44,null))[_0xb906('0x29')](removeEntity(_0x1f4c44,null))[_0xb906('0xb1')](handleError(_0x1f4c44,null));};exports['describe']=function(_0x45f56f,_0x7b8ea3){return db[_0xb906('0x3a')][_0xb906('0xb8')]()[_0xb906('0x29')](respondWithResult(_0x7b8ea3,null))[_0xb906('0xb1')](handleError(_0x7b8ea3,null));};exports[_0xb906('0xb9')]=function(_0x5bf25c,_0x375205,_0x187283){return db['SmsMessage'][_0xb906('0x65')]({'where':{'id':_0x5bf25c['params']['id']}})[_0xb906('0x29')](handleEntityNotFound(_0x375205,null))['then'](function(_0x49ffc7){if(_0x49ffc7){return _0x49ffc7['addMessage'](_0x5bf25c[_0xb906('0x77')][_0xb906('0xba')],_['omit'](_0x5bf25c['body'],[_0xb906('0xba'),'id'])||{});}})['then'](respondWithResult(_0x375205,null))[_0xb906('0xb1')](handleError(_0x375205,null));};exports[_0xb906('0xbb')]=function(_0x455cde,_0x18e808,_0x5dc750){var _0x22a419={'raw':![],'where':{}};var _0x2f0cc2={};var _0xa4f29b={'count':0x0,'rows':[]};return db[_0xb906('0x3a')][_0xb906('0xbc')]({'where':{'id':_0x455cde[_0xb906('0xb7')]['id']}})[_0xb906('0x29')](handleEntityNotFound(_0x18e808,null))['then'](function(_0x3196d7){if(_0x3196d7){_0x2f0cc2['model']=_[_0xb906('0x40')](db['SmsMessage'][_0xb906('0x3b')]);_0x2f0cc2[_0xb906('0x3f')]=_[_0xb906('0x40')](_0x455cde['query']);_0x2f0cc2[_0xb906('0x41')]=_[_0xb906('0x42')](_0x2f0cc2[_0xb906('0x46')],_0x2f0cc2[_0xb906('0x3f')]);_0x22a419[_0xb906('0x43')]=_[_0xb906('0x42')](_0x2f0cc2[_0xb906('0x46')],qs[_0xb906('0x44')](_0x455cde[_0xb906('0x3f')][_0xb906('0x44')]));_0x22a419['attributes']=_0x22a419[_0xb906('0x43')][_0xb906('0x45')]?_0x22a419[_0xb906('0x43')]:_0x2f0cc2[_0xb906('0x46')];if(!_0x455cde[_0xb906('0x3f')]['hasOwnProperty'](_0xb906('0xbd'))){_0x22a419[_0xb906('0x24')]=qs[_0xb906('0x24')](_0x455cde[_0xb906('0x3f')][_0xb906('0x24')]);_0x22a419[_0xb906('0x23')]=qs[_0xb906('0x23')](_0x455cde[_0xb906('0x3f')][_0xb906('0x23')]);}_0x22a419[_0xb906('0x93')]=qs[_0xb906('0x48')](_0x455cde[_0xb906('0x3f')][_0xb906('0x48')]);_0x22a419[_0xb906('0x49')]=qs['filters'](_[_0xb906('0x4a')](_0x455cde[_0xb906('0x3f')],_0x2f0cc2['filters']));_0x22a419[_0xb906('0x49')][_0xb906('0xae')]=_0x3196d7['id'];if(_0x455cde[_0xb906('0x3f')][_0xb906('0x87')]){_0x22a419[_0xb906('0x49')]=_[_0xb906('0x9e')](_0x22a419['where'],{'$or':_[_0xb906('0x2d')](_0x22a419['attributes'],function(_0x4b631a){var _0x1b15f7={};_0x1b15f7[_0x4b631a]={'$like':'%'+_0x455cde[_0xb906('0x3f')][_0xb906('0x87')]+'%'};return _0x1b15f7;})});}if(_0x455cde[_0xb906('0x3f')]['$gte']){var _0x239150=_0x455cde[_0xb906('0x3f')][_0xb906('0x80')][_0xb906('0x30')](',');var _0x211533={};_0x211533[_0x239150[0x0]]={'$gte':moment(_0x239150[0x1])[_0xb906('0xbe')](_0xb906('0xbf'))};_0x22a419[_0xb906('0x49')]=_[_0xb906('0x9e')](_0x22a419[_0xb906('0x49')],_0x211533);}_0x22a419=_['merge']({},_0x22a419,_0x455cde[_0xb906('0xb3')]);return db[_0xb906('0xc0')][_0xb906('0x26')]({'where':_0x22a419['where']})['then'](function(_0x2d22aa){_0xa4f29b[_0xb906('0x26')]=_0x2d22aa;if(_0x455cde[_0xb906('0x3f')][_0xb906('0xc1')]){_0x22a419[_0xb906('0xb2')]=[{'all':!![]}];}return db[_0xb906('0xc0')]['findAll'](_0x22a419);})[_0xb906('0x29')](function(_0x10347e){_0xa4f29b['rows']=_0x10347e;return _0xa4f29b;});}})[_0xb906('0x29')](respondWithFilteredResult(_0x18e808,_0x22a419))['catch'](handleError(_0x18e808,null));};exports[_0xb906('0xc2')]=function(_0x91ee63,_0x1e5957,_0x304586){return db['SmsInteraction'][_0xb906('0x65')]({'where':{'id':_0x91ee63[_0xb906('0xb7')]['id']}})[_0xb906('0x29')](handleEntityNotFound(_0x1e5957,null))[_0xb906('0x29')](function(_0x2d143e){if(_0x2d143e){return _0x2d143e[_0xb906('0xc3')](_0x91ee63[_0xb906('0x77')][_0xb906('0xba')],_[_0xb906('0xc4')](_0x91ee63[_0xb906('0x77')],[_0xb906('0xba'),'id'])||{})[_0xb906('0xc5')](function(){return db[_0xb906('0x72')]['findAll']({'attributes':['id',_0xb906('0x2b'),_0xb906('0x4d')],'where':{'id':_0x91ee63['body'][_0xb906('0xba')]}});})['then'](function(_0x5d4138){socket[_0xb906('0xc6')]('smsInteractionTags:save',{'id':Number(_0x91ee63[_0xb906('0xb7')]['id']),'tags':_0x5d4138||[]});return{'id':Number(_0x91ee63[_0xb906('0xb7')]['id']),'tags':_0x5d4138||[]};});}})[_0xb906('0x29')](respondWithResult(_0x1e5957,null))[_0xb906('0xb1')](handleError(_0x1e5957,null));};exports[_0xb906('0xc7')]=function(_0x4bd369,_0x165e63,_0x1f3b54){return db['SmsInteraction'][_0xb906('0x65')]({'where':{'id':_0x4bd369[_0xb906('0xb7')]['id']}})[_0xb906('0x29')](handleEntityNotFound(_0x165e63,null))[_0xb906('0x29')](function(_0x386c90){if(_0x386c90){return _0x386c90['removeTags'](_0x4bd369[_0xb906('0x3f')][_0xb906('0xba')]);}})[_0xb906('0x29')](respondWithStatusCode(_0x165e63,null))[_0xb906('0xb1')](handleError(_0x165e63,null));};exports['download']=function(_0x304dd5,_0x78e532){var _0x152984=moment()['unix']()['toString']();var _0x3a20fc=path['join'](config['root'],_0xb906('0xc8'),_0xb906('0xc9'),_0xb906('0xca'));var _0x4594c0=path[_0xb906('0xcb')](config[_0xb906('0xcc')],_0xb906('0xc8'),'files',_0xb906('0xcd'));var _0x17ec0d=path['join'](_0x3a20fc,_0x152984);var _0x45d670=util[_0xb906('0xbe')]('transcript-%d-%s.zip',_0x304dd5[_0xb906('0xb7')]['id'],_0x152984);var _0x20971d=path[_0xb906('0xcb')](_0x3a20fc,_0x45d670);var _0x4172e5=[];_0x4172e5[_0xb906('0xaf')]({'model':db[_0xb906('0xce')],'as':'User','attributes':['id',_0xb906('0x2e')],'raw':!![]});_0x4172e5[_0xb906('0xaf')]({'model':db[_0xb906('0xcf')],'as':_0xb906('0x6b'),'attributes':['id',_0xb906('0xd0'),_0xb906('0xd1')],'raw':!![]});var _0xd4cfbd=[{'model':db[_0xb906('0xc0')],'as':_0xb906('0xd2'),'attributes':['id',_0xb906('0x77'),_0xb906('0x7e'),_0xb906('0xd3'),'secret','read'],'include':_0x4172e5}];_0xd4cfbd[_0xb906('0xaf')]({'model':db[_0xb906('0xd4')],'as':_0xb906('0xd5'),'attributes':['id','name']});_0xd4cfbd['push']({'model':db['User'],'as':_0xb906('0xd6'),'attributes':['id',_0xb906('0x2e')]});return db[_0xb906('0x3a')]['find']({'where':{'id':_0x304dd5[_0xb906('0xb7')]['id']},'include':_0xd4cfbd})[_0xb906('0x29')](handleEntityNotFound(_0x78e532,null))[_0xb906('0x29')](function(_0x184902){if(_0x184902){var _0x54f0ac=_0x184902[_0xb906('0xd7')]({'plain':!![]});fs[_0xb906('0xd8')](_0x17ec0d);var _0x10faf={'channel':_0xb906('0xd9'),'account':_0x54f0ac[_0xb906('0xd5')][_0xb906('0x2b')],'agent':_0x54f0ac[_0xb906('0xd6')]?_0x54f0ac[_0xb906('0xd6')][_0xb906('0x2e')]:_0xb906('0xda'),'createdAt':moment(_0x54f0ac[_0xb906('0x7e')])[_0xb906('0xbe')](_0xb906('0xbf'))[_0xb906('0x9d')](),'closedAt':_0x54f0ac['closed']?moment(_0x54f0ac[_0xb906('0xdb')])['format'](_0xb906('0xbf'))[_0xb906('0x9d')]():'','disposition':_0x54f0ac[_0xb906('0xdc')],'messages':_(_0x54f0ac[_0xb906('0xd2')])['filter']({'secret':![]})[_0xb906('0x2d')](function(_0x496e2c){return{'date':moment(_0x496e2c['createdAt'])[_0xb906('0xbe')](_0xb906('0xbf'))['toString'](),'sender':_0x496e2c[_0xb906('0xd3')]===_0xb906('0xdd')?_0x496e2c['User']?_0x496e2c[_0xb906('0xce')][_0xb906('0x2e')]:'System':_0x496e2c[_0xb906('0x6b')][_0xb906('0xd0')]+(_0x496e2c[_0xb906('0x6b')]['lastName']?'\x20'+_0x496e2c[_0xb906('0x6b')]['lastName']:''),'body':_0x496e2c['body'],'direction':_0x496e2c[_0xb906('0xd3')]===_0xb906('0xdd')?'A':'C','secret':_0x496e2c['secret'],'read':_0x496e2c[_0xb906('0x82')]};})[_0xb906('0x67')]()};return ejs[_0xb906('0xde')](path[_0xb906('0xcb')](config[_0xb906('0xcc')],_0xb906('0xc8'),_0xb906('0xdf'),'downloadInteraction.ejs'),{'interaction':_0x10faf})[_0xb906('0x29')](function(_0x4694eb){var _0x48ac61=path[_0xb906('0xcb')](_0x17ec0d,'transcript-'+_0x54f0ac['id']+'-'+_0x152984+'.pdf');var _0x10e609={'path':_0x48ac61,'channel':_0xb906('0xd9'),'interactionId':_0x54f0ac['id']};return pdf[_0xb906('0xe0')](_0x4694eb,_0x10e609);})[_0xb906('0x29')](function(){return new BPromise(function(_0x2793c6,_0xa76937){zipdir(_0x17ec0d,{'saveTo':_0x20971d},function(_0x45ffd5,_0x22b0a3){if(_0x45ffd5)return _0xa76937(_0x45ffd5);return _0x2793c6(_0x22b0a3);});})[_0xb906('0x29')](function(){return new BPromise(function(_0xf6e09e,_0xfc9921){rimraf(_0x17ec0d,function(_0x5ab1bf){if(_0x5ab1bf)_0xfc9921(_0x5ab1bf);return _0xf6e09e();});});})[_0xb906('0x29')](function(){return _0x78e532[_0xb906('0xe1')](_0x20971d,_0x45d670,function(_0x56b2c8){if(_0x56b2c8){console[_0xb906('0xe2')](_0xb906('0xe3'),_0x56b2c8);}else{fs[_0xb906('0xe4')](_0x20971d);}});});});}else{return _0x78e532[_0xb906('0x20')](0xc8);}})[_0xb906('0xb1')](handleError(_0x78e532,null));};
\ No newline at end of file
index f8c635a..2475a0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2272=['findAll','unreadMessages','length','emit','catch','hook','exports','events','../../mysqldb','SmsInteraction','SmsMessage','save','update','remove','getUsers','then','setDataValue','Users','map'];(function(_0x26462c,_0xd20a35){var _0x509a42=function(_0x1b22c9){while(--_0x1b22c9){_0x26462c['push'](_0x26462c['shift']());}};_0x509a42(++_0xd20a35);}(_0x2272,0xd8));var _0x2227=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x2272[_0x19e35c];return _0x3e1fe8;};'use strict';var EventEmitter=require(_0x2227('0x0'));var SmsInteraction=require(_0x2227('0x1'))['db'][_0x2227('0x2')];var SmsMessage=require(_0x2227('0x1'))['db'][_0x2227('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2227('0x4'),'afterUpdate':_0x2227('0x5'),'afterDestroy':_0x2227('0x6')};function emitEvent(_0x4c17c2){return function(_0x4ebde3,_0x1e5a8a,_0x3b8661){_0x4ebde3[_0x2227('0x7')]({'attributes':['id'],'raw':!![]})[_0x2227('0x8')](function(_0xaec623){_0x4ebde3[_0x2227('0x9')](_0x2227('0xa'),_0xaec623[_0x2227('0xb')](function(_0x18094d){return{'id':_0x18094d['id']};}));return SmsMessage[_0x2227('0xc')]({'where':{'SmsInteractionId':_0x4ebde3['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x799370){_0x4ebde3['setDataValue'](_0x2227('0xd'),_0x799370[_0x2227('0xe')]);SmsInteractionEvents[_0x2227('0xf')](_0x4c17c2+':'+_0x4ebde3['id'],_0x4ebde3);SmsInteractionEvents[_0x2227('0xf')](_0x4c17c2,_0x4ebde3);_0x3b8661(null);})[_0x2227('0x10')](_0x3b8661(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsInteraction[_0x2227('0x11')](e,emitEvent(event));}}module[_0x2227('0x12')]=SmsInteractionEvents;
\ No newline at end of file
+var _0xd7d1=['SmsInteraction','SmsMessage','setMaxListeners','save','update','remove','then','setDataValue','Users','map','findAll','unreadMessages','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x3680f5,_0x45b02f){var _0x5ca9e9=function(_0x49456f){while(--_0x49456f){_0x3680f5['push'](_0x3680f5['shift']());}};_0x5ca9e9(++_0x45b02f);}(_0xd7d1,0x1b3));var _0x1d7d=function(_0xdabb76,_0x2865cf){_0xdabb76=_0xdabb76-0x0;var _0x36aed1=_0xd7d1[_0xdabb76];return _0x36aed1;};'use strict';var EventEmitter=require(_0x1d7d('0x0'));var SmsInteraction=require(_0x1d7d('0x1'))['db'][_0x1d7d('0x2')];var SmsMessage=require(_0x1d7d('0x1'))['db'][_0x1d7d('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x1d7d('0x4')](0x0);var events={'afterCreate':_0x1d7d('0x5'),'afterUpdate':_0x1d7d('0x6'),'afterDestroy':_0x1d7d('0x7')};function emitEvent(_0x1adb6b){return function(_0x3c0839,_0x1a2564,_0x14b2b9){_0x3c0839['getUsers']({'attributes':['id'],'raw':!![]})[_0x1d7d('0x8')](function(_0x1aa456){_0x3c0839[_0x1d7d('0x9')](_0x1d7d('0xa'),_0x1aa456[_0x1d7d('0xb')](function(_0x268732){return{'id':_0x268732['id']};}));return SmsMessage[_0x1d7d('0xc')]({'where':{'SmsInteractionId':_0x3c0839['id'],'direction':'in','read':![]},'raw':!![]});})[_0x1d7d('0x8')](function(_0x1ad06f){_0x3c0839[_0x1d7d('0x9')](_0x1d7d('0xd'),_0x1ad06f['length']);SmsInteractionEvents[_0x1d7d('0xe')](_0x1adb6b+':'+_0x3c0839['id'],_0x3c0839);SmsInteractionEvents['emit'](_0x1adb6b,_0x3c0839);_0x14b2b9(null);})[_0x1d7d('0xf')](_0x14b2b9(null));};}for(var e in events){if(events[_0x1d7d('0x10')](e)){var event=events[e];SmsInteraction[_0x1d7d('0x11')](e,emitEvent(event));}}module[_0x1d7d('0x12')]=SmsInteractionEvents;
\ No newline at end of file
index 93cd129..07d3fcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd002=['YYYY-MM-DD\x20HH:mm:ss','util','api','moment','bluebird','path','rimraf','../../config/environment','./smsInteraction.attributes','exports','define','SmsInteraction','sms_interactions','closed'];(function(_0x51821c,_0x2e39c5){var _0x20bde8=function(_0x2d307a){while(--_0x2d307a){_0x51821c['push'](_0x51821c['shift']());}};_0x20bde8(++_0x2e39c5);}(_0xd002,0x189));var _0x2d00=function(_0x6f7851,_0x54009e){_0x6f7851=_0x6f7851-0x0;var _0x4fe2d1=_0xd002[_0x6f7851];return _0x4fe2d1;};'use strict';var _=require('lodash');var util=require(_0x2d00('0x0'));var logger=require('../../config/logger')(_0x2d00('0x1'));var moment=require(_0x2d00('0x2'));var BPromise=require(_0x2d00('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2d00('0x4'));var rimraf=require(_0x2d00('0x5'));var config=require(_0x2d00('0x6'));var attributes=require(_0x2d00('0x7'));module[_0x2d00('0x8')]=function(_0xc28e19,_0x57d501){return _0xc28e19[_0x2d00('0x9')](_0x2d00('0xa'),attributes,{'tableName':_0x2d00('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3f4dac,_0x1a817f,_0x3fb1b4){if(_0x3f4dac['changed'](_0x2d00('0xc'))){_0x3f4dac['closedAt']=moment()['format'](_0x2d00('0xd'));}_0x3fb1b4(null,_0x3f4dac);}}});};
\ No newline at end of file
+var _0x24d9=['./smsInteraction.attributes','define','SmsInteraction','changed','closed','closedAt','format','api','bluebird','request-promise','path','../../config/environment'];(function(_0x2597c6,_0x424054){var _0x20c753=function(_0x40bcd3){while(--_0x40bcd3){_0x2597c6['push'](_0x2597c6['shift']());}};_0x20c753(++_0x424054);}(_0x24d9,0x1cf));var _0x924d=function(_0x427f6a,_0x2a5c59){_0x427f6a=_0x427f6a-0x0;var _0x5b161a=_0x24d9[_0x427f6a];return _0x5b161a;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x924d('0x0'));var moment=require('moment');var BPromise=require(_0x924d('0x1'));var rp=require(_0x924d('0x2'));var fs=require('fs');var path=require(_0x924d('0x3'));var rimraf=require('rimraf');var config=require(_0x924d('0x4'));var attributes=require(_0x924d('0x5'));module['exports']=function(_0x34a979,_0x56feef){return _0x34a979[_0x924d('0x6')](_0x924d('0x7'),attributes,{'tableName':'sms_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x547372,_0x26d008,_0x3b0555){if(_0x547372[_0x924d('0x8')](_0x924d('0x9'))){_0x547372[_0x924d('0xa')]=moment()[_0x924d('0xb')]('YYYY-MM-DD\x20HH:mm:ss');}_0x3b0555(null,_0x547372);}}});};
\ No newline at end of file
index 2d08ea1..b0b1b9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x311e=['body','options','raw','where','attributes','limit','info','debug','addTags','ids','omit','spread','AddTags','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','request','then','SmsInteraction,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','UpdateSmsInteraction','SmsInteraction'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x311e,0x165));var _0xe311=function(_0x474602,_0x5084b5){_0x474602=_0x474602-0x0;var _0x15ecab=_0x311e[_0x474602];return _0x15ecab;};'use strict';var _=require('lodash');var util=require(_0xe311('0x0'));var moment=require(_0xe311('0x1'));var BPromise=require(_0xe311('0x2'));var rs=require(_0xe311('0x3'));var fs=require('fs');var Redis=require(_0xe311('0x4'));var db=require(_0xe311('0x5'))['db'];var utils=require(_0xe311('0x6'));var logger=require(_0xe311('0x7'))(_0xe311('0x8'));var config=require('../../config/environment');var jayson=require(_0xe311('0x9'));var client=jayson[_0xe311('0xa')][_0xe311('0xb')]({'port':0x232a});config[_0xe311('0xc')]=_[_0xe311('0xd')](config[_0xe311('0xc')],{'host':_0xe311('0xe'),'port':0x18eb});var socket=require(_0xe311('0xf'))(new Redis(config[_0xe311('0xc')]));require(_0xe311('0x10'))[_0xe311('0x11')](socket);function respondWithRpcPromise(_0x3da99f,_0x1bebc4,_0x55e210){return new BPromise(function(_0x33dda5,_0x2cdeee){return client[_0xe311('0x12')](_0x3da99f,_0x55e210)[_0xe311('0x13')](function(_0xb47c77){logger['info'](_0xe311('0x14'),_0x1bebc4,_0xe311('0x15'));logger['debug']('SmsInteraction,\x20%s,\x20%s,\x20%s',_0x1bebc4,_0xe311('0x15'),JSON[_0xe311('0x16')](_0xb47c77));if(_0xb47c77[_0xe311('0x17')]){if(_0xb47c77[_0xe311('0x17')][_0xe311('0x18')]===0x1f4){logger[_0xe311('0x17')](_0xe311('0x14'),_0x1bebc4,_0xb47c77['error'][_0xe311('0x19')]);return _0x2cdeee(_0xb47c77[_0xe311('0x17')][_0xe311('0x19')]);}logger[_0xe311('0x17')](_0xe311('0x14'),_0x1bebc4,_0xb47c77[_0xe311('0x17')][_0xe311('0x19')]);return _0x33dda5(_0xb47c77[_0xe311('0x17')]['message']);}else{logger['info'](_0xe311('0x14'),_0x1bebc4,'request\x20sent');_0x33dda5(_0xb47c77[_0xe311('0x1a')]['message']);}})[_0xe311('0x1b')](function(_0x25d650){logger[_0xe311('0x17')](_0xe311('0x14'),_0x1bebc4,_0x25d650);_0x2cdeee(_0x25d650);});});}exports[_0xe311('0x1c')]=function(_0x78d7c){var _0x2bae79=this;return new Promise(function(_0x251f47,_0x124e50){return db[_0xe311('0x1d')]['update'](_0x78d7c[_0xe311('0x1e')],{'raw':_0x78d7c[_0xe311('0x1f')]?_0x78d7c[_0xe311('0x1f')][_0xe311('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x78d7c[_0xe311('0x1f')]?_0x78d7c['options'][_0xe311('0x21')]||null:null,'attributes':_0x78d7c[_0xe311('0x1f')]?_0x78d7c[_0xe311('0x1f')][_0xe311('0x22')]||null:null,'limit':_0x78d7c[_0xe311('0x1f')]?_0x78d7c[_0xe311('0x1f')][_0xe311('0x23')]||null:null})[_0xe311('0x13')](function(_0x53af7d){logger[_0xe311('0x24')](_0xe311('0x1c'),_0x78d7c);logger[_0xe311('0x25')](_0xe311('0x1c'),_0x78d7c,JSON[_0xe311('0x16')](_0x53af7d));_0x251f47(_0x53af7d);})[_0xe311('0x1b')](function(_0x556a34){logger[_0xe311('0x17')](_0xe311('0x1c'),_0x556a34[_0xe311('0x19')],_0x78d7c);_0x124e50(_0x2bae79['error'](0x1f4,_0x556a34[_0xe311('0x19')]));});});};exports['AddTagsToSmsInteraction']=function(_0x42b515){return new Promise(function(_0x2a3ec1,_0x3359e3){return db[_0xe311('0x1d')]['find']({'where':_0x42b515['options']?_0x42b515[_0xe311('0x1f')][_0xe311('0x21')]||null:null})[_0xe311('0x13')](function(_0x3c6c74){if(_0x3c6c74){return _0x3c6c74[_0xe311('0x26')](_0x42b515[_0xe311('0x1e')][_0xe311('0x27')],_[_0xe311('0x28')](_0x42b515['body'],[_0xe311('0x27'),'id'])||{});}})[_0xe311('0x29')](function(_0x34a449){logger[_0xe311('0x24')](_0xe311('0x2a'),_0x42b515);logger[_0xe311('0x25')]('AddTags',_0x42b515,JSON[_0xe311('0x16')](_0x34a449));_0x2a3ec1(_0x34a449);})[_0xe311('0x1b')](function(_0x5b33b5){logger[_0xe311('0x17')](_0xe311('0x2a'),_0x5b33b5[_0xe311('0x19')],_0x42b515);_0x3359e3(_this[_0xe311('0x17')](0x1f4,_0x5b33b5['message']));});});};
\ No newline at end of file
+var _0xd250=['spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','request','info','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','SmsInteraction,\x20%s,\x20%s','result','catch','UpdateSmsInteraction','SmsInteraction','update','body','options','where','limit','then','find','addTags','ids','omit'];(function(_0x41d19b,_0x665d36){var _0x2f6038=function(_0x325e36){while(--_0x325e36){_0x41d19b['push'](_0x41d19b['shift']());}};_0x2f6038(++_0x665d36);}(_0xd250,0xd9));var _0x0d25=function(_0x4e6ae6,_0x49dba6){_0x4e6ae6=_0x4e6ae6-0x0;var _0x23c108=_0xd250[_0x4e6ae6];return _0x23c108;};'use strict';var _=require(_0x0d25('0x0'));var util=require(_0x0d25('0x1'));var moment=require(_0x0d25('0x2'));var BPromise=require(_0x0d25('0x3'));var rs=require(_0x0d25('0x4'));var fs=require('fs');var Redis=require(_0x0d25('0x5'));var db=require(_0x0d25('0x6'))['db'];var utils=require(_0x0d25('0x7'));var logger=require(_0x0d25('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0x0d25('0x9'));var client=jayson[_0x0d25('0xa')][_0x0d25('0xb')]({'port':0x232a});config[_0x0d25('0xc')]=_[_0x0d25('0xd')](config['redis'],{'host':_0x0d25('0xe'),'port':0x18eb});var socket=require(_0x0d25('0xf'))(new Redis(config[_0x0d25('0xc')]));require(_0x0d25('0x10'))[_0x0d25('0x11')](socket);function respondWithRpcPromise(_0x2d0d45,_0x13a94f,_0x117977){return new BPromise(function(_0xe20167,_0x4f5fa9){return client[_0x0d25('0x12')](_0x2d0d45,_0x117977)['then'](function(_0x4a050d){logger[_0x0d25('0x13')]('SmsInteraction,\x20%s,\x20%s',_0x13a94f,_0x0d25('0x14'));logger[_0x0d25('0x15')](_0x0d25('0x16'),_0x13a94f,_0x0d25('0x14'),JSON[_0x0d25('0x17')](_0x4a050d));if(_0x4a050d['error']){if(_0x4a050d[_0x0d25('0x18')]['code']===0x1f4){logger['error']('SmsInteraction,\x20%s,\x20%s',_0x13a94f,_0x4a050d[_0x0d25('0x18')][_0x0d25('0x19')]);return _0x4f5fa9(_0x4a050d[_0x0d25('0x18')][_0x0d25('0x19')]);}logger[_0x0d25('0x18')](_0x0d25('0x1a'),_0x13a94f,_0x4a050d[_0x0d25('0x18')]['message']);return _0xe20167(_0x4a050d[_0x0d25('0x18')][_0x0d25('0x19')]);}else{logger[_0x0d25('0x13')](_0x0d25('0x1a'),_0x13a94f,_0x0d25('0x14'));_0xe20167(_0x4a050d[_0x0d25('0x1b')]['message']);}})[_0x0d25('0x1c')](function(_0x4a1b7c){logger['error']('SmsInteraction,\x20%s,\x20%s',_0x13a94f,_0x4a1b7c);_0x4f5fa9(_0x4a1b7c);});});}exports[_0x0d25('0x1d')]=function(_0x24abe8){var _0x595c48=this;return new Promise(function(_0x1bcca0,_0x16399d){return db[_0x0d25('0x1e')][_0x0d25('0x1f')](_0x24abe8[_0x0d25('0x20')],{'raw':_0x24abe8[_0x0d25('0x21')]?_0x24abe8[_0x0d25('0x21')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x24abe8[_0x0d25('0x21')]?_0x24abe8[_0x0d25('0x21')][_0x0d25('0x22')]||null:null,'attributes':_0x24abe8[_0x0d25('0x21')]?_0x24abe8['options']['attributes']||null:null,'limit':_0x24abe8['options']?_0x24abe8[_0x0d25('0x21')][_0x0d25('0x23')]||null:null})[_0x0d25('0x24')](function(_0x4c8c95){logger[_0x0d25('0x13')]('UpdateSmsInteraction',_0x24abe8);logger[_0x0d25('0x15')](_0x0d25('0x1d'),_0x24abe8,JSON[_0x0d25('0x17')](_0x4c8c95));_0x1bcca0(_0x4c8c95);})[_0x0d25('0x1c')](function(_0x301cf3){logger['error'](_0x0d25('0x1d'),_0x301cf3[_0x0d25('0x19')],_0x24abe8);_0x16399d(_0x595c48['error'](0x1f4,_0x301cf3[_0x0d25('0x19')]));});});};exports['AddTagsToSmsInteraction']=function(_0x47fe69){return new Promise(function(_0x646b19,_0x323910){return db[_0x0d25('0x1e')][_0x0d25('0x25')]({'where':_0x47fe69[_0x0d25('0x21')]?_0x47fe69['options']['where']||null:null})[_0x0d25('0x24')](function(_0xbf19e8){if(_0xbf19e8){return _0xbf19e8[_0x0d25('0x26')](_0x47fe69[_0x0d25('0x20')][_0x0d25('0x27')],_[_0x0d25('0x28')](_0x47fe69[_0x0d25('0x20')],[_0x0d25('0x27'),'id'])||{});}})[_0x0d25('0x29')](function(_0x245c18){logger[_0x0d25('0x13')](_0x0d25('0x2a'),_0x47fe69);logger[_0x0d25('0x15')](_0x0d25('0x2a'),_0x47fe69,JSON['stringify'](_0x245c18));_0x646b19(_0x245c18);})['catch'](function(_0x532b0e){logger[_0x0d25('0x18')]('AddTags',_0x532b0e[_0x0d25('0x19')],_0x47fe69);_0x323910(_this['error'](0x1f4,_0x532b0e['message']));});});};
\ No newline at end of file
index 8826117..e969874 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c62=['remove','update','emit','removeListener','register','save'];(function(_0x55a052,_0x46691a){var _0x59a8b9=function(_0x26345a){while(--_0x26345a){_0x55a052['push'](_0x55a052['shift']());}};_0x59a8b9(++_0x46691a);}(_0x0c62,0x131));var _0x20c6=function(_0x1843fb,_0x5d9946){_0x1843fb=_0x1843fb-0x0;var _0x114362=_0x0c62[_0x1843fb];return _0x114362;};'use strict';var SmsInteractionEvents=require('./smsInteraction.events');var events=[_0x20c6('0x0'),_0x20c6('0x1'),_0x20c6('0x2')];function createListener(_0x33bf87,_0x153a3a){return function(_0x2bd49e){_0x153a3a[_0x20c6('0x3')](_0x33bf87,_0x2bd49e);};}function removeListener(_0x16ba05,_0x40269b){return function(){SmsInteractionEvents[_0x20c6('0x4')](_0x16ba05,_0x40269b);};}exports[_0x20c6('0x5')]=function(_0x5238d1){for(var _0x2a31f5=0x0,_0x11adbb=events['length'];_0x2a31f5<_0x11adbb;_0x2a31f5++){var _0x4cbf4c=events[_0x2a31f5];var _0xc3ab12=createListener('smsInteraction:'+_0x4cbf4c,_0x5238d1);SmsInteractionEvents['on'](_0x4cbf4c,_0xc3ab12);}};
\ No newline at end of file
+var _0x876e=['save','update','removeListener','length','smsInteraction:','./smsInteraction.events'];(function(_0x23fa5d,_0x356419){var _0x43f2b0=function(_0x1e5f60){while(--_0x1e5f60){_0x23fa5d['push'](_0x23fa5d['shift']());}};_0x43f2b0(++_0x356419);}(_0x876e,0x149));var _0xe876=function(_0xdc5463,_0x3f4fcd){_0xdc5463=_0xdc5463-0x0;var _0x135a00=_0x876e[_0xdc5463];return _0x135a00;};'use strict';var SmsInteractionEvents=require(_0xe876('0x0'));var events=[_0xe876('0x1'),'remove',_0xe876('0x2')];function createListener(_0x1a9bab,_0x41d18b){return function(_0x359e91){_0x41d18b['emit'](_0x1a9bab,_0x359e91);};}function removeListener(_0x5a1288,_0x56943c){return function(){SmsInteractionEvents[_0xe876('0x3')](_0x5a1288,_0x56943c);};}exports['register']=function(_0x4e8f19){for(var _0x363b6b=0x0,_0xbdabf0=events[_0xe876('0x4')];_0x363b6b<_0xbdabf0;_0x363b6b++){var _0x7113f2=events[_0x363b6b];var _0x16f8ed=createListener(_0xe876('0x5')+_0x7113f2,_0x4e8f19);SmsInteractionEvents['on'](_0x7113f2,_0x16f8ed);}};
\ No newline at end of file
index d7cf3e6..c615774 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fda=['path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsMessage.controller','get','index','/describe','isAuthenticated','/:id','post','tracked','sms','create','/:id/status','status','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy'];(function(_0x36a7c3,_0x1c0348){var _0x31d6d4=function(_0x3e2b3c){while(--_0x3e2b3c){_0x36a7c3['push'](_0x36a7c3['shift']());}};_0x31d6d4(++_0x1c0348);}(_0x0fda,0x96));var _0xa0fd=function(_0x3dd9d9,_0x5cf64a){_0x3dd9d9=_0x3dd9d9-0x0;var _0x2b2ea2=_0x0fda[_0x3dd9d9];return _0x2b2ea2;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xa0fd('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa0fd('0x1')]();var fs_extra=require(_0xa0fd('0x2'));var auth=require(_0xa0fd('0x3'));var interaction=require(_0xa0fd('0x4'));var config=require('../../config/environment');var controller=require(_0xa0fd('0x5'));router[_0xa0fd('0x6')]('/',auth['isAuthenticated'](),controller[_0xa0fd('0x7')]);router[_0xa0fd('0x6')](_0xa0fd('0x8'),auth[_0xa0fd('0x9')](),controller['describe']);router[_0xa0fd('0x6')](_0xa0fd('0xa'),auth[_0xa0fd('0x9')](),controller['show']);router[_0xa0fd('0xb')]('/',auth[_0xa0fd('0x9')](),interaction[_0xa0fd('0xc')](_0xa0fd('0xd'),'smsmessage:create'),controller[_0xa0fd('0xe')]);router[_0xa0fd('0xb')](_0xa0fd('0xf'),controller[_0xa0fd('0x10')]);router[_0xa0fd('0x11')](_0xa0fd('0xa'),auth['isAuthenticated'](),controller[_0xa0fd('0x12')]);router[_0xa0fd('0x11')](_0xa0fd('0x13'),auth['isAuthenticated'](),controller[_0xa0fd('0x14')]);router[_0xa0fd('0x11')](_0xa0fd('0x15'),auth['isAuthenticated'](),controller[_0xa0fd('0x16')]);router[_0xa0fd('0x17')](_0xa0fd('0xa'),auth['isAuthenticated'](),controller[_0xa0fd('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0xe468=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsMessage.controller','get','isAuthenticated','index','/describe','describe','show','post','tracked','sms','create','/:id/status','status','/:id','update','/:id/accept','accept','put','/:id/reject','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x5c3834,_0x2f4bcc){var _0x415f97=function(_0x1a76ed){while(--_0x1a76ed){_0x5c3834['push'](_0x5c3834['shift']());}};_0x415f97(++_0x2f4bcc);}(_0xe468,0x92));var _0x8e46=function(_0x4a2f75,_0x1bbcdb){_0x4a2f75=_0x4a2f75-0x0;var _0x3d8b41=_0xe468[_0x4a2f75];return _0x3d8b41;};'use strict';var multer=require(_0x8e46('0x0'));var util=require(_0x8e46('0x1'));var path=require(_0x8e46('0x2'));var timeout=require(_0x8e46('0x3'));var express=require('express');var router=express[_0x8e46('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8e46('0x5'));var interaction=require(_0x8e46('0x6'));var config=require(_0x8e46('0x7'));var controller=require(_0x8e46('0x8'));router[_0x8e46('0x9')]('/',auth[_0x8e46('0xa')](),controller[_0x8e46('0xb')]);router[_0x8e46('0x9')](_0x8e46('0xc'),auth['isAuthenticated'](),controller[_0x8e46('0xd')]);router['get']('/:id',auth[_0x8e46('0xa')](),controller[_0x8e46('0xe')]);router[_0x8e46('0xf')]('/',auth['isAuthenticated'](),interaction[_0x8e46('0x10')](_0x8e46('0x11'),'smsmessage:create'),controller[_0x8e46('0x12')]);router[_0x8e46('0xf')](_0x8e46('0x13'),controller[_0x8e46('0x14')]);router['put'](_0x8e46('0x15'),auth[_0x8e46('0xa')](),controller[_0x8e46('0x16')]);router['put'](_0x8e46('0x17'),auth[_0x8e46('0xa')](),controller[_0x8e46('0x18')]);router[_0x8e46('0x19')](_0x8e46('0x1a'),auth[_0x8e46('0xa')](),controller['reject']);router[_0x8e46('0x1b')](_0x8e46('0x15'),auth[_0x8e46('0xa')](),controller[_0x8e46('0x1c')]);module[_0x8e46('0x1d')]=router;
\ No newline at end of file
index 930b647..67de056 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ad3=['ENUM','out','STRING','DATE','BOOLEAN','sequelize','exports','TEXT','medium'];(function(_0x1cc609,_0x5106c6){var _0x272a3f=function(_0x415c93){while(--_0x415c93){_0x1cc609['push'](_0x1cc609['shift']());}};_0x272a3f(++_0x5106c6);}(_0x5ad3,0x1e2));var _0x35ad=function(_0x1c0f41,_0x26d95d){_0x1c0f41=_0x1c0f41-0x0;var _0x369a9f=_0x5ad3[_0x1c0f41];return _0x369a9f;};'use strict';var Sequelize=require(_0x35ad('0x0'));module[_0x35ad('0x1')]={'body':{'type':Sequelize[_0x35ad('0x2')](_0x35ad('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x35ad('0x4')]('in',_0x35ad('0x5')),'defaultValue':_0x35ad('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x35ad('0x6')](0xbe)},'phone':{'type':Sequelize[_0x35ad('0x6')]},'readAt':{'type':Sequelize[_0x35ad('0x7')]},'secret':{'type':Sequelize[_0x35ad('0x8')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x35ad('0x6')]},'providerResponse':{'type':Sequelize[_0x35ad('0x2')]}};
\ No newline at end of file
+var _0x5ede=['STRING','DATE','sequelize','medium','BOOLEAN','out'];(function(_0x3ed735,_0x668ed){var _0x341a8d=function(_0x57f821){while(--_0x57f821){_0x3ed735['push'](_0x3ed735['shift']());}};_0x341a8d(++_0x668ed);}(_0x5ede,0x13a));var _0xe5ed=function(_0x27f508,_0x38efd4){_0x27f508=_0x27f508-0x0;var _0x4cf57a=_0x5ede[_0x27f508];return _0x4cf57a;};'use strict';var Sequelize=require(_0xe5ed('0x0'));module['exports']={'body':{'type':Sequelize['TEXT'](_0xe5ed('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0xe5ed('0x2')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xe5ed('0x3')),'defaultValue':_0xe5ed('0x3'),'allowNull':![]},'messageId':{'type':Sequelize[_0xe5ed('0x4')](0xbe)},'phone':{'type':Sequelize[_0xe5ed('0x4')]},'readAt':{'type':Sequelize[_0xe5ed('0x5')]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 81009f9..5658200 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3646=['VIRTUAL','merge','includeAll','include','findAll','catch','show','fields','find','body','params','describe','accept','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','SmsInteraction','SmsInteractionId','isNil','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','interaction','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','sms','stringify','RejectMessage','rejectMessage','email','rejectmessage','SmsAccount','SmsAccountId','type','twilio','MessageSid','SmsAccount,\x20%s,\x20%s,\x20%s','inspect','plivo','MessageUUID','messageId','indexOf','sent','infobip','groupName','DELIVERED','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','jayson/promise','http','client','request','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','error','message','info','sendStatus','end','status','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','index','map','SmsMessage','rawAttributes','fieldName','key','name','keys','query','filters','intersection','attributes','length','model','limit','sort','where','pick','filter'];(function(_0x27d66e,_0x1eeff6){var _0x2f7081=function(_0x2f8d23){while(--_0x2f8d23){_0x27d66e['push'](_0x27d66e['shift']());}};_0x2f7081(++_0x1eeff6);}(_0x3646,0x15f));var _0x6364=function(_0x539fd1,_0x110040){_0x539fd1=_0x539fd1-0x0;var _0x1970b6=_0x3646[_0x539fd1];return _0x1970b6;};'use strict';var emlformat=require(_0x6364('0x0'));var rimraf=require(_0x6364('0x1'));var zipdir=require(_0x6364('0x2'));var jsonpatch=require(_0x6364('0x3'));var rp=require('request-promise');var moment=require(_0x6364('0x4'));var BPromise=require(_0x6364('0x5'));var Mustache=require(_0x6364('0x6'));var util=require(_0x6364('0x7'));var path=require(_0x6364('0x8'));var sox=require(_0x6364('0x9'));var csv=require(_0x6364('0xa'));var ejs=require(_0x6364('0xb'));var fs=require('fs');var fs_extra=require(_0x6364('0xc'));var _=require(_0x6364('0xd'));var squel=require(_0x6364('0xe'));var crypto=require('crypto');var jsforce=require(_0x6364('0xf'));var deskjs=require(_0x6364('0x10'));var toCsv=require(_0x6364('0xa'));var querystring=require(_0x6364('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6364('0x12'));var as=require(_0x6364('0x13'));var hardwareService=require(_0x6364('0x14'));var logger=require(_0x6364('0x15'))(_0x6364('0x16'));var utils=require(_0x6364('0x17'));var config=require(_0x6364('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x6364('0x19'))['db'];config[_0x6364('0x1a')]=_[_0x6364('0x1b')](config['redis'],{'host':_0x6364('0x1c'),'port':0x18eb});var socket=require(_0x6364('0x1d'))(new Redis(config[_0x6364('0x1a')]));require(_0x6364('0x1e'))['register'](socket);var jayson=require(_0x6364('0x1f'));var client=jayson['client'][_0x6364('0x20')]({'port':0x232c});var client9002=jayson[_0x6364('0x21')][_0x6364('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x56ca03,_0x2cfaa8,_0x7a9076,_0x2a017f){return new BPromise(function(_0x363fd7,_0xea0464){var _0x1ce965=_0x2a017f||client;return _0x1ce965[_0x6364('0x22')](_0x56ca03,_0x7a9076)['then'](function(_0xfb0fbb){logger['info'](_0x6364('0x23'),_0x2cfaa8,_0x6364('0x24'));logger[_0x6364('0x25')](_0x6364('0x26'),_0x2cfaa8,_0x6364('0x24'),JSON['stringify'](_0xfb0fbb));if(_0xfb0fbb[_0x6364('0x27')]){if(_0xfb0fbb[_0x6364('0x27')]['code']===0x1f4){logger[_0x6364('0x27')]('SmsMessage,\x20%s,\x20%s',_0x2cfaa8,_0xfb0fbb[_0x6364('0x27')][_0x6364('0x28')]);return _0xea0464(_0xfb0fbb[_0x6364('0x27')][_0x6364('0x28')]);}logger[_0x6364('0x27')](_0x6364('0x23'),_0x2cfaa8,_0xfb0fbb[_0x6364('0x27')]['message']);return _0x363fd7(_0xfb0fbb[_0x6364('0x27')]['message']);}else{logger[_0x6364('0x29')](_0x6364('0x23'),_0x2cfaa8,_0x6364('0x24'));_0x363fd7(_0xfb0fbb['result'][_0x6364('0x28')]);}})['catch'](function(_0x32c3e8){logger[_0x6364('0x27')](_0x6364('0x23'),_0x2cfaa8,_0x32c3e8);_0xea0464(_0x32c3e8);});});}function respondWithStatusCode(_0x5173f3,_0x1d9530){_0x1d9530=_0x1d9530||0xcc;return function(_0x548ef2){if(_0x548ef2){return _0x5173f3[_0x6364('0x2a')](_0x1d9530);}return _0x5173f3['status'](_0x1d9530)[_0x6364('0x2b')]();};}function respondWithResult(_0x54fc0e,_0x47581a){_0x47581a=_0x47581a||0xc8;return function(_0x1f5a9f){if(_0x1f5a9f){return _0x54fc0e[_0x6364('0x2c')](_0x47581a)['json'](_0x1f5a9f);}};}function respondWithFilteredResult(_0xd879a7,_0x1e40ff){return function(_0x265106){if(_0x265106){var _0x487945=typeof _0x1e40ff[_0x6364('0x2d')]===_0x6364('0x2e')&&typeof _0x1e40ff['limit']===_0x6364('0x2e');var _0x34b612=_0x265106[_0x6364('0x2f')];var _0x1b5da6=_0x487945?0x0:_0x1e40ff[_0x6364('0x2d')];var _0x3b9163=_0x487945?_0x265106[_0x6364('0x2f')]:_0x1e40ff[_0x6364('0x2d')]+_0x1e40ff['limit'];var _0x6479ac;if(_0x3b9163>=_0x34b612){_0x3b9163=_0x34b612;_0x6479ac=0xc8;}else{_0x6479ac=0xce;}_0xd879a7[_0x6364('0x2c')](_0x6479ac);return _0xd879a7[_0x6364('0x30')](_0x6364('0x31'),_0x1b5da6+'-'+_0x3b9163+'/'+_0x34b612)['json'](_0x265106);}return null;};}function patchUpdates(_0x45c3f7){return function(_0x3dd648){try{jsonpatch[_0x6364('0x32')](_0x3dd648,_0x45c3f7,!![]);}catch(_0x3aef91){return BPromise[_0x6364('0x33')](_0x3aef91);}return _0x3dd648[_0x6364('0x34')]();};}function saveUpdates(_0xa612ba,_0x5753bf){return function(_0x3064e5){if(_0x3064e5){return _0x3064e5[_0x6364('0x35')](_0xa612ba)[_0x6364('0x36')](function(_0x1e8262){return _0x1e8262;});}return null;};}function removeEntity(_0xd8ed3e,_0x82eb55){return function(_0x5f0be9){if(_0x5f0be9){return _0x5f0be9[_0x6364('0x37')]()[_0x6364('0x36')](function(){_0xd8ed3e['status'](0xcc)[_0x6364('0x2b')]();});}};}function handleEntityNotFound(_0x54b09d,_0x6ad014){return function(_0x4d8a23){if(!_0x4d8a23){_0x54b09d[_0x6364('0x2a')](0x194);}return _0x4d8a23;};}function handleError(_0x3047b9,_0x19292d){_0x19292d=_0x19292d||0x1f4;return function(_0x41ef37){logger[_0x6364('0x27')](_0x41ef37['stack']);if(_0x41ef37['name']){delete _0x41ef37['name'];}_0x3047b9['status'](_0x19292d)['send'](_0x41ef37);};}exports[_0x6364('0x38')]=function(_0x784b32,_0x20f551){var _0x484f54={},_0x5cd36d={},_0x58dc80={'count':0x0,'rows':[]};var _0x2c02c4=_[_0x6364('0x39')](db[_0x6364('0x3a')][_0x6364('0x3b')],function(_0x268211){return{'name':_0x268211[_0x6364('0x3c')],'type':_0x268211['type'][_0x6364('0x3d')]};});_0x5cd36d['model']=_[_0x6364('0x39')](_0x2c02c4,_0x6364('0x3e'));_0x5cd36d['query']=_[_0x6364('0x3f')](_0x784b32[_0x6364('0x40')]);_0x5cd36d[_0x6364('0x41')]=_[_0x6364('0x42')](_0x5cd36d['model'],_0x5cd36d[_0x6364('0x40')]);_0x484f54[_0x6364('0x43')]=_[_0x6364('0x42')](_0x5cd36d['model'],qs['fields'](_0x784b32['query']['fields']));_0x484f54[_0x6364('0x43')]=_0x484f54['attributes'][_0x6364('0x44')]?_0x484f54[_0x6364('0x43')]:_0x5cd36d[_0x6364('0x45')];if(!_0x784b32[_0x6364('0x40')]['hasOwnProperty']('nolimit')){_0x484f54[_0x6364('0x46')]=qs[_0x6364('0x46')](_0x784b32[_0x6364('0x40')][_0x6364('0x46')]);_0x484f54['offset']=qs[_0x6364('0x2d')](_0x784b32['query']['offset']);}_0x484f54['order']=qs[_0x6364('0x47')](_0x784b32[_0x6364('0x40')][_0x6364('0x47')]);_0x484f54[_0x6364('0x48')]=qs[_0x6364('0x41')](_[_0x6364('0x49')](_0x784b32[_0x6364('0x40')],_0x5cd36d[_0x6364('0x41')]),_0x2c02c4);if(_0x784b32[_0x6364('0x40')][_0x6364('0x4a')]){_0x484f54['where']=_['merge'](_0x484f54[_0x6364('0x48')],{'$or':_[_0x6364('0x39')](_0x2c02c4,function(_0x2668f6){if(_0x2668f6['type']!==_0x6364('0x4b')){var _0x3fd05b={};_0x3fd05b[_0x2668f6['name']]={'$like':'%'+_0x784b32[_0x6364('0x40')]['filter']+'%'};return _0x3fd05b;}})});}_0x484f54=_[_0x6364('0x4c')]({},_0x484f54,_0x784b32['options']);var _0x5ddc35={'where':_0x484f54['where']};return db[_0x6364('0x3a')][_0x6364('0x2f')](_0x5ddc35)[_0x6364('0x36')](function(_0x38074a){_0x58dc80[_0x6364('0x2f')]=_0x38074a;if(_0x784b32['query'][_0x6364('0x4d')]){_0x484f54[_0x6364('0x4e')]=[{'all':!![]}];}return db[_0x6364('0x3a')][_0x6364('0x4f')](_0x484f54);})[_0x6364('0x36')](function(_0x9d3e69){_0x58dc80['rows']=_0x9d3e69;return _0x58dc80;})['then'](respondWithFilteredResult(_0x20f551,_0x484f54))[_0x6364('0x50')](handleError(_0x20f551,null));};exports[_0x6364('0x51')]=function(_0x34ee28,_0x40a7e3){var _0x372471={'raw':!![],'where':{'id':_0x34ee28['params']['id']}},_0x21aa29={};_0x21aa29[_0x6364('0x45')]=_['keys'](db[_0x6364('0x3a')]['rawAttributes']);_0x21aa29[_0x6364('0x40')]=_[_0x6364('0x3f')](_0x34ee28['query']);_0x21aa29[_0x6364('0x41')]=_[_0x6364('0x42')](_0x21aa29[_0x6364('0x45')],_0x21aa29[_0x6364('0x40')]);_0x372471[_0x6364('0x43')]=_[_0x6364('0x42')](_0x21aa29[_0x6364('0x45')],qs[_0x6364('0x52')](_0x34ee28[_0x6364('0x40')][_0x6364('0x52')]));_0x372471[_0x6364('0x43')]=_0x372471['attributes'][_0x6364('0x44')]?_0x372471[_0x6364('0x43')]:_0x21aa29[_0x6364('0x45')];if(_0x34ee28[_0x6364('0x40')][_0x6364('0x4d')]){_0x372471[_0x6364('0x4e')]=[{'all':!![]}];}_0x372471=_[_0x6364('0x4c')]({},_0x372471,_0x34ee28['options']);return db[_0x6364('0x3a')][_0x6364('0x53')](_0x372471)[_0x6364('0x36')](handleEntityNotFound(_0x40a7e3,null))[_0x6364('0x36')](respondWithResult(_0x40a7e3,null))[_0x6364('0x50')](handleError(_0x40a7e3,null));};exports['create']=function(_0x38276a,_0x580c30){return db[_0x6364('0x3a')]['create'](_0x38276a[_0x6364('0x54')],{})[_0x6364('0x36')](respondWithResult(_0x580c30,0xc9))[_0x6364('0x50')](handleError(_0x580c30,null));};exports[_0x6364('0x35')]=function(_0x4b1ea6,_0x4c077c){if(_0x4b1ea6['body']['id']){delete _0x4b1ea6[_0x6364('0x54')]['id'];}return db[_0x6364('0x3a')][_0x6364('0x53')]({'where':{'id':_0x4b1ea6[_0x6364('0x55')]['id']}})['then'](handleEntityNotFound(_0x4c077c,null))['then'](saveUpdates(_0x4b1ea6[_0x6364('0x54')],null))['then'](respondWithResult(_0x4c077c,null))[_0x6364('0x50')](handleError(_0x4c077c,null));};exports[_0x6364('0x37')]=function(_0x2bd2b5,_0x4909f5){return db[_0x6364('0x3a')][_0x6364('0x53')]({'where':{'id':_0x2bd2b5['params']['id']}})[_0x6364('0x36')](handleEntityNotFound(_0x4909f5,null))[_0x6364('0x36')](removeEntity(_0x4909f5,null))['catch'](handleError(_0x4909f5,null));};exports[_0x6364('0x56')]=function(_0x40deec,_0xa698ac){return db[_0x6364('0x3a')]['describe']()['then'](respondWithResult(_0xa698ac,null))[_0x6364('0x50')](handleError(_0xa698ac,null));};var interaction_log=require('../../config/logger')('sms-interactions');exports[_0x6364('0x57')]=function(_0x1613a3,_0x2f535d,_0x44f066){var _0x5c8766={'agent':{},'channel':'sms'};if(_0x1613a3[_0x6364('0x54')]['id']){delete _0x1613a3[_0x6364('0x54')]['id'];}_0x1613a3['body'][_0x6364('0x58')]=!![];_0x1613a3[_0x6364('0x54')]['readAt']=moment()[_0x6364('0x59')](_0x6364('0x5a'));_0x1613a3['body'][_0x6364('0x5b')]=_0x1613a3['body'][_0x6364('0x5b')]||_0x1613a3['user']['id'];_0x5c8766[_0x6364('0x5c')]['id']=_0x1613a3[_0x6364('0x54')][_0x6364('0x5b')];return db['SmsMessage'][_0x6364('0x53')]({'where':{'id':_0x1613a3['params']['id'],'UserId':null}})[_0x6364('0x36')](handleEntityNotFound(_0x2f535d,null))[_0x6364('0x36')](saveUpdates(_0x1613a3[_0x6364('0x54')],null))[_0x6364('0x36')](function(_0x2babdc){if(_0x2babdc){_0x5c8766['message']=_0x2babdc[_0x6364('0x5d')]({'plain':!![]});return db[_0x6364('0x5e')][_0x6364('0x53')]({'where':{'id':_0x2babdc[_0x6364('0x5f')]}});}return null;})[_0x6364('0x36')](handleEntityNotFound(_0x2f535d,null))[_0x6364('0x36')](function(_0x5d78ad){if(_0x5d78ad){return _0x5d78ad[_0x6364('0x35')]({'UserId':_0x1613a3[_0x6364('0x54')]['UserId'],'read1stAt':_[_0x6364('0x60')](_0x5d78ad['read1stAt'])?moment()[_0x6364('0x59')](_0x6364('0x5a')):undefined});}return null;})[_0x6364('0x36')](function(_0x2530ea){if(_0x2530ea){_0x5c8766['interaction']=_0x2530ea[_0x6364('0x5d')]({'plain':!![]});interaction_log[_0x6364('0x29')](_0x6364('0x61'),_0x1613a3[_0x6364('0x62')]['id'],_0x1613a3[_0x6364('0x62')][_0x6364('0x3e')],_0x1613a3['user'][_0x6364('0x63')],_0x5c8766[_0x6364('0x64')]['id'],_0x1613a3['body']?JSON['stringify'](_0x1613a3[_0x6364('0x54')]):_0x6364('0x65'));return respondWithRpcPromise(_0x6364('0x66'),'acceptMessage',_0x5c8766);}return null;})[_0x6364('0x36')](function(_0x337d9d){var _0x399e96=_0x6364('0x67')+_0x337d9d[_0x6364('0x28')][_0x6364('0x68')];return db[_0x6364('0x69')][_0x6364('0x40')](_0x399e96,{'type':db[_0x6364('0x6a')][_0x6364('0x6b')][_0x6364('0x6c')],'raw':!![]})[_0x6364('0x36')](function(_0x5d6e36){return _0x5d6e36;});})['then'](function(_0x3fe599){if(_0x3fe599){_0x5c8766[_0x6364('0x28')][_0x6364('0x6d')]=_0x3fe599[0x0];if(!_0x1613a3[_0x6364('0x54')][_0x6364('0x5b')])return;return db[_0x6364('0x6e')]['find']({'where':{'id':_0x1613a3[_0x6364('0x54')][_0x6364('0x5b')],'role':_0x6364('0x5c')},'attributes':['id',_0x6364('0x3e'),_0x6364('0x6f'),'email',_0x6364('0x70')],'raw':!![]});}return null;})[_0x6364('0x36')](function(_0x457844){if(!_0x457844)return null;_0x5c8766[_0x6364('0x28')]['agent']=_0x457844;return _0x5c8766;})[_0x6364('0x36')](function(_0x20de3d){if(_0x20de3d){if(_0x1613a3[_0x6364('0x54')][_0x6364('0x71')]){_0x5c8766[_0x6364('0x28')][_0x6364('0x72')]=util[_0x6364('0x59')](_0x6364('0x73'),_0x1613a3[_0x6364('0x62')][_0x6364('0x3e')]);_0x5c8766[_0x6364('0x28')][_0x6364('0x74')]=_0x5c8766[_0x6364('0x74')];_0x5c8766['message'][_0x6364('0x75')]=_0x5c8766[_0x6364('0x74')];_0x5c8766[_0x6364('0x28')][_0x6364('0x76')]=_0x6364('0x57');return respondWithRpcPromise(_0x6364('0x77'),_0x6364('0x77'),{'event':_0x6364('0x78'),'message':_0x5c8766[_0x6364('0x28')]},client9002)[_0x6364('0x36')](function(){return _0x5c8766;});}return _0x5c8766;}return null;})[_0x6364('0x36')](respondWithResult(_0x2f535d,null))[_0x6364('0x50')](handleError(_0x2f535d,null));};var interaction_log=require(_0x6364('0x15'))('sms-interactions');exports['reject']=function(_0x3ae44f,_0xb6983,_0x20800f){var _0x225b0f={'agent':{},'channel':_0x6364('0x79')};if(_0x3ae44f['body']['id']){delete _0x3ae44f[_0x6364('0x54')]['id'];}_0x3ae44f[_0x6364('0x54')][_0x6364('0x5b')]=_0x3ae44f[_0x6364('0x54')][_0x6364('0x5b')]||_0x3ae44f[_0x6364('0x62')]['id'];_0x225b0f['agent']['id']=_0x3ae44f[_0x6364('0x54')][_0x6364('0x5b')];return db[_0x6364('0x3a')]['find']({'where':{'id':_0x3ae44f[_0x6364('0x55')]['id'],'UserId':null}})[_0x6364('0x36')](handleEntityNotFound(_0xb6983,null))[_0x6364('0x36')](function(_0x188025){if(_0x188025){_0x225b0f[_0x6364('0x28')]=_0x188025[_0x6364('0x5d')]({'plain':!![]});return db[_0x6364('0x5e')][_0x6364('0x53')]({'where':{'id':_0x188025[_0x6364('0x5f')]}});}return null;})['then'](handleEntityNotFound(_0xb6983,null))[_0x6364('0x36')](function(_0x2441a7){if(_0x2441a7){_0x225b0f[_0x6364('0x64')]=_0x2441a7['get']({'plain':!![]});interaction_log[_0x6364('0x29')]('[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x3ae44f[_0x6364('0x62')]['id'],_0x3ae44f['user'][_0x6364('0x3e')],_0x3ae44f['user']['role'],_0x225b0f[_0x6364('0x64')]['id'],_0x3ae44f[_0x6364('0x54')]?JSON[_0x6364('0x7a')](_0x3ae44f['body']):_0x6364('0x65'));return respondWithRpcPromise(_0x6364('0x7b'),_0x6364('0x7c'),_0x225b0f);}return null;})['then'](function(_0x12d56c){var _0x2e76d5=_0x6364('0x67')+_0x12d56c[_0x6364('0x28')][_0x6364('0x68')];return db['sequelize'][_0x6364('0x40')](_0x2e76d5,{'type':db[_0x6364('0x6a')][_0x6364('0x6b')][_0x6364('0x6c')],'raw':!![]})['then'](function(_0x4f6802){return _0x4f6802;});})['then'](function(_0x59af64){if(_0x59af64){_0x225b0f[_0x6364('0x28')][_0x6364('0x6d')]=_0x59af64[0x0];if(!_0x3ae44f['body'][_0x6364('0x5b')])return;return db[_0x6364('0x6e')][_0x6364('0x53')]({'where':{'id':_0x3ae44f['body']['UserId'],'role':_0x6364('0x5c')},'attributes':['id',_0x6364('0x3e'),_0x6364('0x6f'),_0x6364('0x7d'),_0x6364('0x70')],'raw':!![]});}return null;})[_0x6364('0x36')](function(_0xb1b61c){if(!_0xb1b61c)return null;_0x225b0f['message'][_0x6364('0x5c')]=_0xb1b61c;return _0x225b0f;})[_0x6364('0x36')](function(_0x46156c){if(_0x46156c){_0x46156c['message'][_0x6364('0x72')]=util['format'](_0x6364('0x73'),_0x3ae44f[_0x6364('0x62')][_0x6364('0x3e')]);_0x46156c[_0x6364('0x28')][_0x6364('0x74')]=_0x225b0f[_0x6364('0x74')];_0x46156c[_0x6364('0x28')][_0x6364('0x75')]=_0x225b0f[_0x6364('0x74')];_0x46156c[_0x6364('0x28')][_0x6364('0x76')]=_0x6364('0x33');respondWithRpcPromise(_0x6364('0x77'),_0x6364('0x77'),{'event':_0x6364('0x7e'),'message':_0x46156c[_0x6364('0x28')]},client9002);return _0x225b0f;}return null;})['then'](respondWithResult(_0xb6983,null))['catch'](handleError(_0xb6983,null));};exports[_0x6364('0x2c')]=function(_0x4044fd,_0x3790f2,_0xf63135){if(_0x4044fd[_0x6364('0x54')]['id']){delete _0x4044fd[_0x6364('0x54')]['id'];}var _0xb4f0a;return db['SmsMessage'][_0x6364('0x53')]({'where':{'id':_0x4044fd[_0x6364('0x55')]['id']}})['then'](handleEntityNotFound(_0x3790f2,null))['then'](function(_0x30878b){if(_0x30878b){_0xb4f0a=_0x30878b;return db[_0x6364('0x7f')][_0x6364('0x53')]({'where':{'id':_0x30878b[_0x6364('0x80')]}});}})[_0x6364('0x36')](handleEntityNotFound(_0x3790f2,null))[_0x6364('0x36')](function(_0x13367f){if(_0x13367f){logger['debug']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6364('0x2c'),'received\x20delivery\x20report\x20from',_0x13367f[_0x6364('0x81')],util['inspect'](_0x4044fd['body'],{'showHidden':![],'depth':null}));switch(_0x13367f[_0x6364('0x81')]){case _0x6364('0x82'):if(_0x4044fd['body'][_0x6364('0x83')]&&_0x4044fd['body'][_0x6364('0x83')]===_0xb4f0a['messageId']){return _0xb4f0a[_0x6364('0x35')]({'read':!![]});}else{logger[_0x6364('0x27')](_0x6364('0x84'),'status',_0x6364('0x82'),util[_0x6364('0x85')](_0x4044fd[_0x6364('0x54')],{'showHidden':![],'depth':null}));}break;case _0x6364('0x86'):if(_0x4044fd[_0x6364('0x54')][_0x6364('0x87')]&&_0x4044fd[_0x6364('0x54')][_0x6364('0x87')]===_0xb4f0a[_0x6364('0x88')]&&_[_0x6364('0x89')]([_0x6364('0x8a'),'delivered'],_0x4044fd[_0x6364('0x54')]['Status'])>=0x0){return _0xb4f0a[_0x6364('0x35')]({'read':!![]});}else{logger['error'](_0x6364('0x84'),_0x6364('0x2c'),'plivio',util[_0x6364('0x85')](_0x4044fd[_0x6364('0x54')],{'showHidden':![],'depth':null}));}break;case _0x6364('0x8b'):var _0x21fcb3=_0x4044fd['body']['results'][0x0];if(_0x21fcb3[_0x6364('0x2c')][_0x6364('0x8c')]===_0x6364('0x8d')){return _0xb4f0a[_0x6364('0x35')]({'read':!![]});}else{logger[_0x6364('0x27')](_0x6364('0x84'),_0x6364('0x2c'),'infobip',util[_0x6364('0x85')](_0x4044fd[_0x6364('0x54')],{'showHidden':![],'depth':null}));}break;}return _0xb4f0a;}})[_0x6364('0x36')](respondWithResult(_0x3790f2,null))[_0x6364('0x50')](handleError(_0x3790f2,null));};
\ No newline at end of file
+var _0x4f31=['inspect','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','MessageUUID','indexOf','sent','delivered','Status','plivio','results','groupName','DELIVERED','infobip','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./smsMessage.socket','register','jayson/promise','http','client','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','json','limit','undefined','offset','Content-Range','apply','save','update','name','send','index','map','SmsMessage','fieldName','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','pick','where','merge','type','VIRTUAL','filter','options','count','includeAll','include','findAll','rows','show','params','rawAttributes','find','create','body','destroy','describe','sms-interactions','accept','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','SmsInteraction','SmsInteractionId','isNil','read1stAt','interaction','get','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','agent','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','reject','sms','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','User','fullname','email','motionChannel','rejectmessage','SmsAccount','SmsAccountId','received\x20delivery\x20report\x20from'];(function(_0x5e8c8c,_0x2edd7e){var _0x2bed65=function(_0x35681a){while(--_0x35681a){_0x5e8c8c['push'](_0x5e8c8c['shift']());}};_0x2bed65(++_0x2edd7e);}(_0x4f31,0x13f));var _0x14f3=function(_0x3f833c,_0xa9cab2){_0x3f833c=_0x3f833c-0x0;var _0x408b91=_0x4f31[_0x3f833c];return _0x408b91;};'use strict';var emlformat=require(_0x14f3('0x0'));var rimraf=require(_0x14f3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x14f3('0x2'));var rp=require('request-promise');var moment=require(_0x14f3('0x3'));var BPromise=require(_0x14f3('0x4'));var Mustache=require(_0x14f3('0x5'));var util=require(_0x14f3('0x6'));var path=require('path');var sox=require(_0x14f3('0x7'));var csv=require(_0x14f3('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x14f3('0x9'));var squel=require(_0x14f3('0xa'));var crypto=require(_0x14f3('0xb'));var jsforce=require(_0x14f3('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x14f3('0xd'));var Redis=require(_0x14f3('0xe'));var authService=require(_0x14f3('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x14f3('0x10'));var hardwareService=require(_0x14f3('0x11'));var logger=require(_0x14f3('0x12'))(_0x14f3('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x14f3('0x14'));var db=require(_0x14f3('0x15'))['db'];config['redis']=_[_0x14f3('0x16')](config['redis'],{'host':_0x14f3('0x17'),'port':0x18eb});var socket=require(_0x14f3('0x18'))(new Redis(config[_0x14f3('0x19')]));require(_0x14f3('0x1a'))[_0x14f3('0x1b')](socket);var jayson=require(_0x14f3('0x1c'));var client=jayson['client'][_0x14f3('0x1d')]({'port':0x232c});var client9002=jayson[_0x14f3('0x1e')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5a9ecb,_0x3e5a7d,_0x489aaa,_0x4e2e48){return new BPromise(function(_0xb241bd,_0x5db825){var _0x4561ff=_0x4e2e48||client;return _0x4561ff[_0x14f3('0x1f')](_0x5a9ecb,_0x489aaa)[_0x14f3('0x20')](function(_0x594fc4){logger[_0x14f3('0x21')](_0x14f3('0x22'),_0x3e5a7d,_0x14f3('0x23'));logger[_0x14f3('0x24')](_0x14f3('0x25'),_0x3e5a7d,'request\x20sent',JSON[_0x14f3('0x26')](_0x594fc4));if(_0x594fc4[_0x14f3('0x27')]){if(_0x594fc4[_0x14f3('0x27')]['code']===0x1f4){logger[_0x14f3('0x27')](_0x14f3('0x22'),_0x3e5a7d,_0x594fc4[_0x14f3('0x27')][_0x14f3('0x28')]);return _0x5db825(_0x594fc4[_0x14f3('0x27')][_0x14f3('0x28')]);}logger[_0x14f3('0x27')](_0x14f3('0x22'),_0x3e5a7d,_0x594fc4[_0x14f3('0x27')]['message']);return _0xb241bd(_0x594fc4[_0x14f3('0x27')]['message']);}else{logger['info'](_0x14f3('0x22'),_0x3e5a7d,_0x14f3('0x23'));_0xb241bd(_0x594fc4[_0x14f3('0x29')][_0x14f3('0x28')]);}})[_0x14f3('0x2a')](function(_0x4db176){logger[_0x14f3('0x27')]('SmsMessage,\x20%s,\x20%s',_0x3e5a7d,_0x4db176);_0x5db825(_0x4db176);});});}function respondWithStatusCode(_0x251232,_0x281a5c){_0x281a5c=_0x281a5c||0xcc;return function(_0x22c8f5){if(_0x22c8f5){return _0x251232[_0x14f3('0x2b')](_0x281a5c);}return _0x251232[_0x14f3('0x2c')](_0x281a5c)['end']();};}function respondWithResult(_0x36d045,_0x4598df){_0x4598df=_0x4598df||0xc8;return function(_0x2bf14d){if(_0x2bf14d){return _0x36d045[_0x14f3('0x2c')](_0x4598df)[_0x14f3('0x2d')](_0x2bf14d);}};}function respondWithFilteredResult(_0x269abe,_0x1bce4f){return function(_0x3bd24a){if(_0x3bd24a){var _0x50aae3=typeof _0x1bce4f['offset']==='undefined'&&typeof _0x1bce4f[_0x14f3('0x2e')]===_0x14f3('0x2f');var _0x22d364=_0x3bd24a['count'];var _0x50f109=_0x50aae3?0x0:_0x1bce4f[_0x14f3('0x30')];var _0x37df7a=_0x50aae3?_0x3bd24a['count']:_0x1bce4f[_0x14f3('0x30')]+_0x1bce4f[_0x14f3('0x2e')];var _0x1f7955;if(_0x37df7a>=_0x22d364){_0x37df7a=_0x22d364;_0x1f7955=0xc8;}else{_0x1f7955=0xce;}_0x269abe[_0x14f3('0x2c')](_0x1f7955);return _0x269abe['set'](_0x14f3('0x31'),_0x50f109+'-'+_0x37df7a+'/'+_0x22d364)[_0x14f3('0x2d')](_0x3bd24a);}return null;};}function patchUpdates(_0x2f29e9){return function(_0x31f81a){try{jsonpatch[_0x14f3('0x32')](_0x31f81a,_0x2f29e9,!![]);}catch(_0xbce5e9){return BPromise['reject'](_0xbce5e9);}return _0x31f81a[_0x14f3('0x33')]();};}function saveUpdates(_0x5992c8,_0x556b4b){return function(_0x1ed518){if(_0x1ed518){return _0x1ed518[_0x14f3('0x34')](_0x5992c8)[_0x14f3('0x20')](function(_0x57bb46){return _0x57bb46;});}return null;};}function removeEntity(_0x3f6a03,_0x59ce02){return function(_0x4b2881){if(_0x4b2881){return _0x4b2881['destroy']()[_0x14f3('0x20')](function(){_0x3f6a03[_0x14f3('0x2c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x84d16c,_0x123a3b){return function(_0x777d9e){if(!_0x777d9e){_0x84d16c['sendStatus'](0x194);}return _0x777d9e;};}function handleError(_0x4a6c63,_0x1bda61){_0x1bda61=_0x1bda61||0x1f4;return function(_0x27a310){logger[_0x14f3('0x27')](_0x27a310['stack']);if(_0x27a310[_0x14f3('0x35')]){delete _0x27a310[_0x14f3('0x35')];}_0x4a6c63['status'](_0x1bda61)[_0x14f3('0x36')](_0x27a310);};}exports[_0x14f3('0x37')]=function(_0x367c94,_0x590304){var _0x5df358={},_0x4896ff={},_0x26efea={'count':0x0,'rows':[]};var _0x463039=_[_0x14f3('0x38')](db[_0x14f3('0x39')]['rawAttributes'],function(_0x15aea7){return{'name':_0x15aea7[_0x14f3('0x3a')],'type':_0x15aea7['type']['key']};});_0x4896ff[_0x14f3('0x3b')]=_['map'](_0x463039,_0x14f3('0x35'));_0x4896ff[_0x14f3('0x3c')]=_[_0x14f3('0x3d')](_0x367c94[_0x14f3('0x3c')]);_0x4896ff[_0x14f3('0x3e')]=_['intersection'](_0x4896ff['model'],_0x4896ff[_0x14f3('0x3c')]);_0x5df358[_0x14f3('0x3f')]=_[_0x14f3('0x40')](_0x4896ff['model'],qs[_0x14f3('0x41')](_0x367c94[_0x14f3('0x3c')][_0x14f3('0x41')]));_0x5df358[_0x14f3('0x3f')]=_0x5df358[_0x14f3('0x3f')][_0x14f3('0x42')]?_0x5df358[_0x14f3('0x3f')]:_0x4896ff['model'];if(!_0x367c94[_0x14f3('0x3c')]['hasOwnProperty'](_0x14f3('0x43'))){_0x5df358[_0x14f3('0x2e')]=qs[_0x14f3('0x2e')](_0x367c94[_0x14f3('0x3c')][_0x14f3('0x2e')]);_0x5df358[_0x14f3('0x30')]=qs[_0x14f3('0x30')](_0x367c94[_0x14f3('0x3c')][_0x14f3('0x30')]);}_0x5df358[_0x14f3('0x44')]=qs[_0x14f3('0x45')](_0x367c94[_0x14f3('0x3c')][_0x14f3('0x45')]);_0x5df358['where']=qs[_0x14f3('0x3e')](_[_0x14f3('0x46')](_0x367c94[_0x14f3('0x3c')],_0x4896ff[_0x14f3('0x3e')]),_0x463039);if(_0x367c94[_0x14f3('0x3c')]['filter']){_0x5df358[_0x14f3('0x47')]=_[_0x14f3('0x48')](_0x5df358[_0x14f3('0x47')],{'$or':_[_0x14f3('0x38')](_0x463039,function(_0x1f230f){if(_0x1f230f[_0x14f3('0x49')]!==_0x14f3('0x4a')){var _0x187396={};_0x187396[_0x1f230f[_0x14f3('0x35')]]={'$like':'%'+_0x367c94[_0x14f3('0x3c')][_0x14f3('0x4b')]+'%'};return _0x187396;}})});}_0x5df358=_['merge']({},_0x5df358,_0x367c94[_0x14f3('0x4c')]);var _0x3e080={'where':_0x5df358[_0x14f3('0x47')]};return db[_0x14f3('0x39')][_0x14f3('0x4d')](_0x3e080)['then'](function(_0x487d97){_0x26efea['count']=_0x487d97;if(_0x367c94['query'][_0x14f3('0x4e')]){_0x5df358[_0x14f3('0x4f')]=[{'all':!![]}];}return db['SmsMessage'][_0x14f3('0x50')](_0x5df358);})[_0x14f3('0x20')](function(_0x59583c){_0x26efea[_0x14f3('0x51')]=_0x59583c;return _0x26efea;})[_0x14f3('0x20')](respondWithFilteredResult(_0x590304,_0x5df358))[_0x14f3('0x2a')](handleError(_0x590304,null));};exports[_0x14f3('0x52')]=function(_0x5a7f6d,_0x438af0){var _0x429e5b={'raw':!![],'where':{'id':_0x5a7f6d[_0x14f3('0x53')]['id']}},_0x3f86f7={};_0x3f86f7[_0x14f3('0x3b')]=_[_0x14f3('0x3d')](db[_0x14f3('0x39')][_0x14f3('0x54')]);_0x3f86f7[_0x14f3('0x3c')]=_[_0x14f3('0x3d')](_0x5a7f6d[_0x14f3('0x3c')]);_0x3f86f7[_0x14f3('0x3e')]=_['intersection'](_0x3f86f7[_0x14f3('0x3b')],_0x3f86f7[_0x14f3('0x3c')]);_0x429e5b[_0x14f3('0x3f')]=_[_0x14f3('0x40')](_0x3f86f7['model'],qs['fields'](_0x5a7f6d[_0x14f3('0x3c')][_0x14f3('0x41')]));_0x429e5b[_0x14f3('0x3f')]=_0x429e5b[_0x14f3('0x3f')][_0x14f3('0x42')]?_0x429e5b[_0x14f3('0x3f')]:_0x3f86f7[_0x14f3('0x3b')];if(_0x5a7f6d[_0x14f3('0x3c')]['includeAll']){_0x429e5b[_0x14f3('0x4f')]=[{'all':!![]}];}_0x429e5b=_[_0x14f3('0x48')]({},_0x429e5b,_0x5a7f6d[_0x14f3('0x4c')]);return db[_0x14f3('0x39')][_0x14f3('0x55')](_0x429e5b)[_0x14f3('0x20')](handleEntityNotFound(_0x438af0,null))[_0x14f3('0x20')](respondWithResult(_0x438af0,null))[_0x14f3('0x2a')](handleError(_0x438af0,null));};exports[_0x14f3('0x56')]=function(_0x16069e,_0xd891f4){return db[_0x14f3('0x39')][_0x14f3('0x56')](_0x16069e[_0x14f3('0x57')],{})['then'](respondWithResult(_0xd891f4,0xc9))[_0x14f3('0x2a')](handleError(_0xd891f4,null));};exports['update']=function(_0x26e57c,_0x3f64d8){if(_0x26e57c[_0x14f3('0x57')]['id']){delete _0x26e57c[_0x14f3('0x57')]['id'];}return db[_0x14f3('0x39')][_0x14f3('0x55')]({'where':{'id':_0x26e57c[_0x14f3('0x53')]['id']}})[_0x14f3('0x20')](handleEntityNotFound(_0x3f64d8,null))[_0x14f3('0x20')](saveUpdates(_0x26e57c[_0x14f3('0x57')],null))[_0x14f3('0x20')](respondWithResult(_0x3f64d8,null))[_0x14f3('0x2a')](handleError(_0x3f64d8,null));};exports[_0x14f3('0x58')]=function(_0x102199,_0x482b9d){return db[_0x14f3('0x39')][_0x14f3('0x55')]({'where':{'id':_0x102199[_0x14f3('0x53')]['id']}})[_0x14f3('0x20')](handleEntityNotFound(_0x482b9d,null))[_0x14f3('0x20')](removeEntity(_0x482b9d,null))[_0x14f3('0x2a')](handleError(_0x482b9d,null));};exports['describe']=function(_0xe7900c,_0x18057a){return db[_0x14f3('0x39')][_0x14f3('0x59')]()[_0x14f3('0x20')](respondWithResult(_0x18057a,null))['catch'](handleError(_0x18057a,null));};var interaction_log=require(_0x14f3('0x12'))(_0x14f3('0x5a'));exports[_0x14f3('0x5b')]=function(_0x2e9db2,_0x3f84ec,_0x5df5b4){var _0x568d13={'agent':{},'channel':'sms'};if(_0x2e9db2[_0x14f3('0x57')]['id']){delete _0x2e9db2['body']['id'];}_0x2e9db2[_0x14f3('0x57')]['read']=!![];_0x2e9db2[_0x14f3('0x57')][_0x14f3('0x5c')]=moment()[_0x14f3('0x5d')](_0x14f3('0x5e'));_0x2e9db2[_0x14f3('0x57')]['UserId']=_0x2e9db2[_0x14f3('0x57')]['UserId']||_0x2e9db2['user']['id'];_0x568d13['agent']['id']=_0x2e9db2[_0x14f3('0x57')][_0x14f3('0x5f')];return db[_0x14f3('0x39')]['find']({'where':{'id':_0x2e9db2[_0x14f3('0x53')]['id'],'UserId':null}})[_0x14f3('0x20')](handleEntityNotFound(_0x3f84ec,null))[_0x14f3('0x20')](saveUpdates(_0x2e9db2['body'],null))['then'](function(_0x433fae){if(_0x433fae){_0x568d13['message']=_0x433fae['get']({'plain':!![]});return db[_0x14f3('0x60')][_0x14f3('0x55')]({'where':{'id':_0x433fae[_0x14f3('0x61')]}});}return null;})[_0x14f3('0x20')](handleEntityNotFound(_0x3f84ec,null))[_0x14f3('0x20')](function(_0x422ff0){if(_0x422ff0){return _0x422ff0[_0x14f3('0x34')]({'UserId':_0x2e9db2[_0x14f3('0x57')][_0x14f3('0x5f')],'read1stAt':_[_0x14f3('0x62')](_0x422ff0[_0x14f3('0x63')])?moment()[_0x14f3('0x5d')](_0x14f3('0x5e')):undefined});}return null;})[_0x14f3('0x20')](function(_0x57ad89){if(_0x57ad89){_0x568d13[_0x14f3('0x64')]=_0x57ad89[_0x14f3('0x65')]({'plain':!![]});interaction_log[_0x14f3('0x21')](_0x14f3('0x66'),_0x2e9db2[_0x14f3('0x67')]['id'],_0x2e9db2[_0x14f3('0x67')]['name'],_0x2e9db2[_0x14f3('0x67')][_0x14f3('0x68')],_0x568d13['interaction']['id'],_0x2e9db2[_0x14f3('0x57')]?JSON['stringify'](_0x2e9db2[_0x14f3('0x57')]):_0x14f3('0x69'));return respondWithRpcPromise(_0x14f3('0x6a'),_0x14f3('0x6b'),_0x568d13);}return null;})[_0x14f3('0x20')](function(_0x2da9bd){var _0x22392a=_0x14f3('0x6c')+_0x2da9bd['message'][_0x14f3('0x6d')];return db[_0x14f3('0x6e')][_0x14f3('0x3c')](_0x22392a,{'type':db[_0x14f3('0x6f')][_0x14f3('0x70')][_0x14f3('0x71')],'raw':!![]})[_0x14f3('0x20')](function(_0x10fe34){return _0x10fe34;});})[_0x14f3('0x20')](function(_0x169c9c){if(_0x169c9c){_0x568d13[_0x14f3('0x28')][_0x14f3('0x72')]=_0x169c9c[0x0];if(!_0x2e9db2['body'][_0x14f3('0x5f')])return;return db['User']['find']({'where':{'id':_0x2e9db2[_0x14f3('0x57')][_0x14f3('0x5f')],'role':_0x14f3('0x73')},'attributes':['id',_0x14f3('0x35'),'fullname','email',_0x14f3('0x74')],'raw':!![]});}return null;})['then'](function(_0x16ae7e){if(!_0x16ae7e)return null;_0x568d13[_0x14f3('0x28')]['agent']=_0x16ae7e;return _0x568d13;})[_0x14f3('0x20')](function(_0x718a57){if(_0x718a57){if(_0x2e9db2[_0x14f3('0x57')][_0x14f3('0x75')]){_0x568d13[_0x14f3('0x28')][_0x14f3('0x76')]=util['format'](_0x14f3('0x77'),_0x2e9db2[_0x14f3('0x67')][_0x14f3('0x35')]);_0x568d13[_0x14f3('0x28')]['channel']=_0x568d13[_0x14f3('0x78')];_0x568d13['message']['motionChannel']=_0x568d13['channel'];_0x568d13[_0x14f3('0x28')][_0x14f3('0x79')]=_0x14f3('0x5b');return respondWithRpcPromise(_0x14f3('0x7a'),_0x14f3('0x7a'),{'event':_0x14f3('0x7b'),'message':_0x568d13[_0x14f3('0x28')]},client9002)['then'](function(){return _0x568d13;});}return _0x568d13;}return null;})[_0x14f3('0x20')](respondWithResult(_0x3f84ec,null))['catch'](handleError(_0x3f84ec,null));};var interaction_log=require(_0x14f3('0x12'))('sms-interactions');exports[_0x14f3('0x7c')]=function(_0x2dcc25,_0xfbe208,_0x415208){var _0x80a6d0={'agent':{},'channel':_0x14f3('0x7d')};if(_0x2dcc25['body']['id']){delete _0x2dcc25[_0x14f3('0x57')]['id'];}_0x2dcc25[_0x14f3('0x57')][_0x14f3('0x5f')]=_0x2dcc25['body'][_0x14f3('0x5f')]||_0x2dcc25['user']['id'];_0x80a6d0[_0x14f3('0x73')]['id']=_0x2dcc25[_0x14f3('0x57')]['UserId'];return db['SmsMessage'][_0x14f3('0x55')]({'where':{'id':_0x2dcc25[_0x14f3('0x53')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0xfbe208,null))['then'](function(_0x2635e5){if(_0x2635e5){_0x80a6d0[_0x14f3('0x28')]=_0x2635e5[_0x14f3('0x65')]({'plain':!![]});return db[_0x14f3('0x60')][_0x14f3('0x55')]({'where':{'id':_0x2635e5[_0x14f3('0x61')]}});}return null;})[_0x14f3('0x20')](handleEntityNotFound(_0xfbe208,null))['then'](function(_0x5eea1c){if(_0x5eea1c){_0x80a6d0[_0x14f3('0x64')]=_0x5eea1c['get']({'plain':!![]});interaction_log['info'](_0x14f3('0x7e'),_0x2dcc25['user']['id'],_0x2dcc25['user'][_0x14f3('0x35')],_0x2dcc25['user'][_0x14f3('0x68')],_0x80a6d0[_0x14f3('0x64')]['id'],_0x2dcc25['body']?JSON[_0x14f3('0x26')](_0x2dcc25[_0x14f3('0x57')]):_0x14f3('0x69'));return respondWithRpcPromise(_0x14f3('0x7f'),_0x14f3('0x80'),_0x80a6d0);}return null;})['then'](function(_0x58f84d){var _0x27965c=_0x14f3('0x6c')+_0x58f84d[_0x14f3('0x28')][_0x14f3('0x6d')];return db[_0x14f3('0x6e')]['query'](_0x27965c,{'type':db[_0x14f3('0x6f')][_0x14f3('0x70')][_0x14f3('0x71')],'raw':!![]})[_0x14f3('0x20')](function(_0x2b0a9a){return _0x2b0a9a;});})[_0x14f3('0x20')](function(_0x49aea0){if(_0x49aea0){_0x80a6d0[_0x14f3('0x28')][_0x14f3('0x72')]=_0x49aea0[0x0];if(!_0x2dcc25[_0x14f3('0x57')][_0x14f3('0x5f')])return;return db[_0x14f3('0x81')][_0x14f3('0x55')]({'where':{'id':_0x2dcc25[_0x14f3('0x57')][_0x14f3('0x5f')],'role':_0x14f3('0x73')},'attributes':['id','name',_0x14f3('0x82'),_0x14f3('0x83'),_0x14f3('0x74')],'raw':!![]});}return null;})['then'](function(_0x40c0ab){if(!_0x40c0ab)return null;_0x80a6d0[_0x14f3('0x28')]['agent']=_0x40c0ab;return _0x80a6d0;})[_0x14f3('0x20')](function(_0x1416dc){if(_0x1416dc){_0x1416dc[_0x14f3('0x28')][_0x14f3('0x76')]=util['format']('SIP/%s',_0x2dcc25[_0x14f3('0x67')]['name']);_0x1416dc['message'][_0x14f3('0x78')]=_0x80a6d0['channel'];_0x1416dc[_0x14f3('0x28')][_0x14f3('0x84')]=_0x80a6d0['channel'];_0x1416dc[_0x14f3('0x28')]['event']=_0x14f3('0x7c');respondWithRpcPromise(_0x14f3('0x7a'),_0x14f3('0x7a'),{'event':_0x14f3('0x85'),'message':_0x1416dc[_0x14f3('0x28')]},client9002);return _0x80a6d0;}return null;})['then'](respondWithResult(_0xfbe208,null))[_0x14f3('0x2a')](handleError(_0xfbe208,null));};exports[_0x14f3('0x2c')]=function(_0x1d6764,_0x3604de,_0x44df23){if(_0x1d6764[_0x14f3('0x57')]['id']){delete _0x1d6764[_0x14f3('0x57')]['id'];}var _0x315d42;return db[_0x14f3('0x39')]['find']({'where':{'id':_0x1d6764['params']['id']}})[_0x14f3('0x20')](handleEntityNotFound(_0x3604de,null))[_0x14f3('0x20')](function(_0x41d17c){if(_0x41d17c){_0x315d42=_0x41d17c;return db[_0x14f3('0x86')]['find']({'where':{'id':_0x41d17c[_0x14f3('0x87')]}});}})['then'](handleEntityNotFound(_0x3604de,null))[_0x14f3('0x20')](function(_0x58e6af){if(_0x58e6af){logger[_0x14f3('0x24')](_0x14f3('0x25'),_0x14f3('0x2c'),_0x14f3('0x88'),_0x58e6af['type'],util[_0x14f3('0x89')](_0x1d6764['body'],{'showHidden':![],'depth':null}));switch(_0x58e6af[_0x14f3('0x49')]){case _0x14f3('0x8a'):if(_0x1d6764[_0x14f3('0x57')][_0x14f3('0x8b')]&&_0x1d6764['body'][_0x14f3('0x8b')]===_0x315d42[_0x14f3('0x8c')]){return _0x315d42[_0x14f3('0x34')]({'read':!![]});}else{logger[_0x14f3('0x27')](_0x14f3('0x8d'),_0x14f3('0x2c'),_0x14f3('0x8a'),util['inspect'](_0x1d6764[_0x14f3('0x57')],{'showHidden':![],'depth':null}));}break;case'plivo':if(_0x1d6764[_0x14f3('0x57')][_0x14f3('0x8e')]&&_0x1d6764[_0x14f3('0x57')][_0x14f3('0x8e')]===_0x315d42[_0x14f3('0x8c')]&&_[_0x14f3('0x8f')]([_0x14f3('0x90'),_0x14f3('0x91')],_0x1d6764[_0x14f3('0x57')][_0x14f3('0x92')])>=0x0){return _0x315d42[_0x14f3('0x34')]({'read':!![]});}else{logger[_0x14f3('0x27')](_0x14f3('0x8d'),_0x14f3('0x2c'),_0x14f3('0x93'),util[_0x14f3('0x89')](_0x1d6764[_0x14f3('0x57')],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x18aecc=_0x1d6764['body'][_0x14f3('0x94')][0x0];if(_0x18aecc[_0x14f3('0x2c')][_0x14f3('0x95')]===_0x14f3('0x96')){return _0x315d42[_0x14f3('0x34')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x14f3('0x2c'),_0x14f3('0x97'),util[_0x14f3('0x89')](_0x1d6764[_0x14f3('0x57')],{'showHidden':![],'depth':null}));}break;}return _0x315d42;}})[_0x14f3('0x20')](respondWithResult(_0x3604de,null))['catch'](handleError(_0x3604de,null));};
\ No newline at end of file
index a53f64d..142f616 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2baf=['save','update','remove','emit','hasOwnProperty','exports','../../mysqldb','setMaxListeners'];(function(_0x3070dc,_0x40cf11){var _0x431489=function(_0x49bc2a){while(--_0x49bc2a){_0x3070dc['push'](_0x3070dc['shift']());}};_0x431489(++_0x40cf11);}(_0x2baf,0x10e));var _0xf2ba=function(_0x1b5aea,_0x1afe6f){_0x1b5aea=_0x1b5aea-0x0;var _0x51cae9=_0x2baf[_0x1b5aea];return _0x51cae9;};'use strict';var EventEmitter=require('events');var SmsMessage=require(_0xf2ba('0x0'))['db']['SmsMessage'];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0xf2ba('0x1')](0x0);var events={'afterCreate':_0xf2ba('0x2'),'afterUpdate':_0xf2ba('0x3'),'afterDestroy':_0xf2ba('0x4')};function emitEvent(_0x1f4daf){return function(_0x570f28,_0x1e3f1a,_0x2c23ff){SmsMessageEvents[_0xf2ba('0x5')](_0x1f4daf+':'+_0x570f28['id'],_0x570f28);SmsMessageEvents['emit'](_0x1f4daf,_0x570f28);_0x2c23ff(null);};}for(var e in events){if(events[_0xf2ba('0x6')](e)){var event=events[e];SmsMessage['hook'](e,emitEvent(event));}}module[_0xf2ba('0x7')]=SmsMessageEvents;
\ No newline at end of file
+var _0x3b15=['SmsMessage','setMaxListeners','save','remove','emit','hook','exports','events'];(function(_0x2d3ab3,_0x47d90b){var _0x321f9e=function(_0x50a53d){while(--_0x50a53d){_0x2d3ab3['push'](_0x2d3ab3['shift']());}};_0x321f9e(++_0x47d90b);}(_0x3b15,0xcf));var _0x53b1=function(_0x57da0a,_0x284aed){_0x57da0a=_0x57da0a-0x0;var _0x3145d5=_0x3b15[_0x57da0a];return _0x3145d5;};'use strict';var EventEmitter=require(_0x53b1('0x0'));var SmsMessage=require('../../mysqldb')['db'][_0x53b1('0x1')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x53b1('0x2')](0x0);var events={'afterCreate':_0x53b1('0x3'),'afterUpdate':'update','afterDestroy':_0x53b1('0x4')};function emitEvent(_0x570898){return function(_0x5a1185,_0x37e98e,_0x281f87){SmsMessageEvents[_0x53b1('0x5')](_0x570898+':'+_0x5a1185['id'],_0x5a1185);SmsMessageEvents[_0x53b1('0x5')](_0x570898,_0x5a1185);_0x281f87(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsMessage[_0x53b1('0x6')](e,emitEvent(event));}}module[_0x53b1('0x7')]=SmsMessageEvents;
\ No newline at end of file
index 628e3fd..2cd7d0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb02a=['baseUrl','application/json','IBSSO\x20','Missing\x20parameters:\x20base_url','csc','crypto','apiKey','timestamp','keys','sort','length','createHash','md5','hex','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','UTF-8','apiMessageId','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','applicationId','toString','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','status','intelepeer','Token\x20not\x20received','finally','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./smsMessage.attributes','exports','define','SmsMessage','sms_messages','messageId','FULLTEXT','models','toLowerCase','direction','out','secret','isNil','SmsInteractionId','then','update','createdAt','error','SmsAccount','SmsAccountId','type','twilio','accountSid','authToken','phone','messages','create','body','remote','/api/sms/messages/','sid','catch','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','https://api.skebby.it/API/v1.0/REST/','username','smsMethod','sender','password','GET','split','sms','POST','user_key','session_key','total_sent','deliveryReport','SmsMessage,\x20%s,\x20%s,\x20%s','Missing\x20parameters:\x20username,\x20password','connectel','https://smsapi.connectel.se/api/v2/send/','requestid','read','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','senderString','format','%s:%s','Basic\x20%s','base64','http_code','data','queued_count','head','message_id','clickSend','plivo','authId','/status?token=','token','https://api.plivo.com/v1/Account/%s/Message/','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','infobip'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xb02a,0x18e));var _0xab02=function(_0x5545bc,_0x37c9be){_0x5545bc=_0x5545bc-0x0;var _0x92bf2e=_0xb02a[_0x5545bc];return _0x92bf2e;};'use strict';var _=require(_0xab02('0x0'));var util=require(_0xab02('0x1'));var logger=require(_0xab02('0x2'))(_0xab02('0x3'));var moment=require('moment');var BPromise=require(_0xab02('0x4'));var rp=require(_0xab02('0x5'));var fs=require('fs');var path=require(_0xab02('0x6'));var rimraf=require(_0xab02('0x7'));var config=require(_0xab02('0x8'));var attributes=require(_0xab02('0x9'));module[_0xab02('0xa')]=function(_0xfeded6,_0x2c3c06){return _0xfeded6[_0xab02('0xb')](_0xab02('0xc'),attributes,{'tableName':_0xab02('0xd'),'paranoid':![],'indexes':[{'name':_0xab02('0xe'),'fields':[_0xab02('0xe')]},{'name':'fti_sms_messages','fields':['body'],'type':_0xab02('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x19ae4b,_0x2fc266,_0x11532f){var _0x31a1ed=_0xfeded6[_0xab02('0x10')];var _0x3c7245=_0x19ae4b['get']({'plain':!![]});if(_0x3c7245['direction'][_0xab02('0x11')]()==='in'||_0x3c7245[_0xab02('0x12')][_0xab02('0x11')]()===_0xab02('0x13')&&!_0x3c7245[_0xab02('0x14')]&&!_[_0xab02('0x15')](_0x3c7245['UserId'])&&!_[_0xab02('0x15')](_0x3c7245[_0xab02('0x16')])){_0x31a1ed['SmsInteraction']['findOne']({'where':{'id':_0x3c7245[_0xab02('0x16')]}})[_0xab02('0x17')](function(_0x52862e){if(_0x52862e){_0x52862e[_0xab02('0x18')]({'lastMsgAt':_0x3c7245[_0xab02('0x19')],'lastMsgDirection':_0x3c7245[_0xab02('0x12')][_0xab02('0x11')]()});}})['catch'](function(_0x348a14){console[_0xab02('0x1a')](_0x348a14);});}if(_0x3c7245['direction']==='out'&&!_0x3c7245[_0xab02('0x14')]){var _0x1868d5;_0x31a1ed[_0xab02('0x1b')]['find']({'where':{'id':_0x3c7245[_0xab02('0x1c')]},'raw':!![]})[_0xab02('0x17')](function(_0x5d9cae){_0x1868d5=_0x5d9cae;if(_0x1868d5&&_0x1868d5['type']){switch(_0x1868d5[_0xab02('0x1d')]){case _0xab02('0x1e'):var _0xa7587e=require('twilio');if(_0x1868d5[_0xab02('0x1f')]&&_0x1868d5[_0xab02('0x20')]&&_0x1868d5[_0xab02('0x21')]){var _0x4c4cc4=new _0xa7587e(_0x1868d5[_0xab02('0x1f')],_0x1868d5['authToken']);_0x4c4cc4[_0xab02('0x22')][_0xab02('0x23')]({'body':_0x3c7245[_0xab02('0x24')],'to':_0x3c7245[_0xab02('0x21')],'from':_0x1868d5[_0xab02('0x21')],'statusCallback':_0x1868d5[_0xab02('0x25')]+_0xab02('0x26')+_0x3c7245['id']+'/status?token='+_0x1868d5['token']})[_0xab02('0x17')](function(_0x201478){if(_0x201478[_0xab02('0x27')]){return _0x19ae4b[_0xab02('0x18')]({'messageId':_0x201478['sid']});}})[_0xab02('0x28')](function(_0x550e0e){logger[_0xab02('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xab02('0x29'),_0xab02('0x1e'),util[_0xab02('0x2a')](_0x550e0e,{'showHidden':![],'depth':null}));});}else{logger[_0xab02('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xab02('0x29'),_0xab02('0x1e'),_0xab02('0x2b'));}break;case _0xab02('0x2c'):var _0x20837d=_0xab02('0x2d');if(_0x1868d5[_0xab02('0x2e')]&&_0x1868d5['password']){var _0x3ba30b={'recipient':[_0x3c7245[_0xab02('0x21')]],'message':_0x3c7245[_0xab02('0x24')],'message_type':_0x1868d5[_0xab02('0x2f')]};if(_0x1868d5[_0xab02('0x2f')]&&_0x1868d5[_0xab02('0x2f')]!=='SI'){_0x3ba30b[_0xab02('0x30')]=_0x1868d5[_0xab02('0x21')];}var _0x2d0cbd={'url':_0x20837d+'login?username='+_0x1868d5[_0xab02('0x2e')]+'&password='+_0x1868d5[_0xab02('0x31')],'method':_0xab02('0x32')};rp(_0x2d0cbd)['then'](function(_0x2e9567){var _0x3f114e=_0x2e9567[_0xab02('0x33')](';');var _0x515131={'user_key':_0x3f114e[0x0],'session_key':_0x3f114e[0x1]};_0x2d0cbd={'url':_0x20837d+_0xab02('0x34'),'method':_0xab02('0x35'),'headers':{'user_key':_0x515131[_0xab02('0x36')],'Session_key':_0x515131[_0xab02('0x37')]},'json':!![],'body':_0x3ba30b};return rp(_0x2d0cbd);})[_0xab02('0x17')](function(_0x30ed85){if(_0x30ed85[_0xab02('0x38')]>=0x1){var _0x35f67a={'messageId':_0x30ed85['internal_order_id']};if(_0x1868d5[_0xab02('0x2f')]!=='GP'||!_0x1868d5[_0xab02('0x39')]){_0x35f67a['read']=!![];}return _0x19ae4b['update'](_0x35f67a);}else{return logger['error'](_0xab02('0x3a'),'afterCreate',_0xab02('0x2c'),util[_0xab02('0x2a')](_0x30ed85,{'showHidden':![],'depth':null}));}})['catch'](function(_0x379dd1){return logger[_0xab02('0x1a')](_0xab02('0x3a'),_0xab02('0x29'),_0xab02('0x2c'),util[_0xab02('0x2a')](_0x379dd1,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xab02('0x3a'),_0xab02('0x29'),_0xab02('0x2c'),_0xab02('0x3b'));}break;case _0xab02('0x3c'):if(_0x1868d5['authToken']){var _0x58403a={'recipient':_0x3c7245[_0xab02('0x21')],'message':_0x3c7245['body'],'sender':_0x1868d5['senderString']||_0x1868d5['phone'],'authorization':_0x1868d5[_0xab02('0x20')]};var _0x2fc266={'method':'POST','uri':_0xab02('0x3d'),'body':_0x58403a,'json':!![]};rp(_0x2fc266)[_0xab02('0x17')](function(_0x26a7db){var _0x4eefc0={'messageId':_0x26a7db[_0xab02('0x3e')]};if(!_0x1868d5[_0xab02('0x39')]){_0x4eefc0[_0xab02('0x3f')]=!![];}return _0x19ae4b[_0xab02('0x18')](_0x4eefc0);})[_0xab02('0x28')](function(_0x480316){logger['error'](_0xab02('0x3a'),_0xab02('0x29'),_0xab02('0x3c'),util[_0xab02('0x2a')](_0x480316,{'showHidden':![],'depth':null}));});}else{logger[_0xab02('0x1a')](_0xab02('0x3a'),_0xab02('0x29'),_0xab02('0x3c'),_0xab02('0x40'));}break;case _0xab02('0x41'):if(_0x1868d5[_0xab02('0x2e')]&&_0x1868d5[_0xab02('0x31')]){var _0x58403a={'messages':[{'source':_0xab02('0x42'),'to':_0x3c7245[_0xab02('0x21')],'body':_0x3c7245[_0xab02('0x24')],'from':_0x1868d5[_0xab02('0x43')]||_0x1868d5['phone']}]};var _0x2a005f=util[_0xab02('0x44')](_0xab02('0x45'),_0x1868d5[_0xab02('0x2e')],_0x1868d5['password']);var _0x2fc266={'method':_0xab02('0x35'),'uri':'https://rest.clicksend.com/v3/sms/send','body':_0x58403a,'headers':{'Authorization':util[_0xab02('0x44')](_0xab02('0x46'),new Buffer(_0x2a005f)['toString'](_0xab02('0x47')))},'json':!![]};rp(_0x2fc266)[_0xab02('0x17')](function(_0x266b32){if(_0x266b32[_0xab02('0x48')]>=0xc8&&_0x266b32[_0xab02('0x48')]<=0xce){if(_0x266b32[_0xab02('0x49')]&&_0x266b32['data'][_0xab02('0x4a')]>0x0){var _0x34f13b=_[_0xab02('0x4b')](_0x266b32['data'][_0xab02('0x22')]);var _0x287b36={'messageId':_0x34f13b[_0xab02('0x4c')]};if(!_0x1868d5[_0xab02('0x39')]){_0x287b36[_0xab02('0x3f')]=!![];}return _0x19ae4b[_0xab02('0x18')](_0x287b36);}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xab02('0x29'),_0xab02('0x4d'),util[_0xab02('0x2a')](_0x266b32,{'showHidden':![],'depth':null}));}}else{logger[_0xab02('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xab02('0x29'),'clickSend',util[_0xab02('0x2a')](_0x266b32,{'showHidden':![],'depth':null}));}})['catch'](function(_0x14ab33){logger[_0xab02('0x1a')](_0xab02('0x3a'),_0xab02('0x29'),'clickSend',util[_0xab02('0x2a')](_0x14ab33,{'showHidden':![],'depth':null}));});}else{logger[_0xab02('0x1a')](_0xab02('0x3a'),_0xab02('0x29'),_0xab02('0x4d'),'Missing\x20parameters:\x20username,\x20password');}break;case _0xab02('0x4e'):if(_0x1868d5[_0xab02('0x4f')]&&_0x1868d5['authToken']){var _0x58403a={'dst':_0x3c7245['phone'],'text':_0x3c7245[_0xab02('0x24')],'src':_0x1868d5[_0xab02('0x43')]||_0x1868d5['phone'],'url':_0x1868d5[_0xab02('0x25')]+_0xab02('0x26')+_0x3c7245['id']+_0xab02('0x50')+_0x1868d5[_0xab02('0x51')]};var _0x2a005f=util[_0xab02('0x44')](_0xab02('0x45'),_0x1868d5[_0xab02('0x4f')],_0x1868d5[_0xab02('0x20')]);var _0x2fc266={'method':_0xab02('0x35'),'uri':util[_0xab02('0x44')](_0xab02('0x52'),_0x1868d5[_0xab02('0x4f')]),'body':_0x58403a,'headers':{'Authorization':util[_0xab02('0x44')]('Basic\x20%s',new Buffer(_0x2a005f)['toString'](_0xab02('0x47')))},'json':!![]};rp(_0x2fc266)[_0xab02('0x17')](function(_0xd57ea1){var _0x2f85b9={'messageId':_0xd57ea1[_0xab02('0x53')][0x0]};return _0x19ae4b[_0xab02('0x18')](_0x2f85b9);})[_0xab02('0x28')](function(_0x497976){logger[_0xab02('0x1a')](_0xab02('0x3a'),_0xab02('0x29'),_0xab02('0x4e'),util[_0xab02('0x2a')](_0x497976,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xab02('0x29'),_0xab02('0x4e'),_0xab02('0x54'));}break;case _0xab02('0x55'):if(_0x1868d5[_0xab02('0x2e')]&&_0x1868d5['password']){if(_0x1868d5['baseUrl']){var _0x59699f={'method':_0xab02('0x35'),'uri':_0x1868d5['baseUrl']+'/auth/1/session','body':{'username':_0x1868d5[_0xab02('0x2e')],'password':_0x1868d5[_0xab02('0x31')]},'json':!![]};return rp(_0x59699f)['then'](function(_0x46774e){var _0x124509={'method':_0xab02('0x35'),'uri':_0x1868d5[_0xab02('0x56')]+'/sms/2/text/advanced','body':{'messages':[{'from':_0x1868d5[_0xab02('0x21')],'destinations':[{'to':_0x3c7245[_0xab02('0x21')]}],'text':_0x3c7245[_0xab02('0x24')],'notifyUrl':_0x1868d5[_0xab02('0x25')]+'/api/sms/messages/'+_0x3c7245['id']+_0xab02('0x50')+_0x1868d5[_0xab02('0x51')],'notifyContentType':_0xab02('0x57'),'callbackData':_0x1868d5[_0xab02('0x21')]+';'+_0x3c7245[_0xab02('0x24')]}]},'headers':{'Authorization':_0xab02('0x58')+_0x46774e[_0xab02('0x51')]},'json':!![]};return rp(_0x124509)[_0xab02('0x17')](function(_0x16133f){if(_0x16133f['messages']){var _0x31c892={'messageId':_0x16133f[_0xab02('0x22')][0x0]['messageId']};if(!_0x1868d5[_0xab02('0x39')]){_0x31c892[_0xab02('0x3f')]=!![];}return _0x19ae4b['update'](_0x31c892);}else{return logger['error'](_0xab02('0x3a'),_0xab02('0x29'),_0xab02('0x55'),util['inspect'](_0x16133f,{'showHidden':![],'depth':null}));}});})[_0xab02('0x28')](function(_0xd7bfaf){return logger[_0xab02('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xab02('0x29'),_0xab02('0x55'),util['inspect'](_0xd7bfaf,{'showHidden':![],'depth':null}));});}else{logger[_0xab02('0x1a')](_0xab02('0x3a'),'afterCreate',_0xab02('0x55'),_0xab02('0x59'));}}else{logger['error'](_0xab02('0x3a'),_0xab02('0x29'),_0xab02('0x55'),_0xab02('0x3b'));}break;case _0xab02('0x5a'):var _0x232cd6=require(_0xab02('0x5b'));if(_0x1868d5[_0xab02('0x5c')]){var _0x2e375e={};_0x2e375e['login']=_0x1868d5[_0xab02('0x2e')];_0x2e375e[_0xab02('0x21')]=_0x3c7245[_0xab02('0x21')];_0x2e375e['sender']=_0x1868d5[_0xab02('0x21')];_0x2e375e['text']=_0x3c7245['body'];_0x2e375e[_0xab02('0x5d')]=+new Date();var _0xef90c6='';var _0x2ac2a3='';var _0x16c192=Object[_0xab02('0x5e')](_0x2e375e);_0x16c192[_0xab02('0x5f')]();for(var _0x3e2724=0x0;_0x3e2724<_0x16c192[_0xab02('0x60')];_0x3e2724++){if(_0xef90c6!=''){_0xef90c6+='&';}_0xef90c6+=_0x16c192[_0x3e2724]+'='+encodeURIComponent(_0x2e375e[_0x16c192[_0x3e2724]]);_0x2ac2a3+=_0x2e375e[_0x16c192[_0x3e2724]];}_0x2ac2a3+=_0x1868d5[_0xab02('0x5c')];_0x2ac2a3=_0x232cd6[_0xab02('0x61')](_0xab02('0x62'))[_0xab02('0x18')](_0x2ac2a3)['digest'](_0xab02('0x63'));if(_0xef90c6!==''){_0xef90c6+='&';}_0xef90c6+='signature='+_0x2ac2a3;var _0x2d0cbd={'method':_0xab02('0x32'),'uri':_0x1868d5[_0xab02('0x56')]+'/external/get/send.php?'+_0xef90c6,'json':!![]};return rp(_0x2d0cbd)[_0xab02('0x17')](function(_0x1e919f){var _0x537369=Object[_0xab02('0x5e')](_0x1e919f);if(_0x1e919f[_0x537369[0x0]][_0xab02('0x1a')]&&parseInt(_0x1e919f[_0x537369[0x0]][_0xab02('0x1a')])===0x0){var _0xa9638d={'messageId':_0x1e919f[_0x537369[0x0]]['id_sms']};if(!_0x1868d5[_0xab02('0x39')]){_0xa9638d['read']=!![];}return _0x19ae4b[_0xab02('0x18')](_0xa9638d);}else{return logger['error'](_0xab02('0x3a'),_0xab02('0x29'),'csc',util[_0xab02('0x2a')](_0x1e919f['error'],{'showHidden':![],'depth':null}));}})[_0xab02('0x28')](function(_0x1daa36){return logger[_0xab02('0x1a')](_0xab02('0x3a'),_0xab02('0x29'),_0xab02('0x5a'),util[_0xab02('0x2a')](_0x1daa36,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xab02('0x3a'),'afterCreate',_0xab02('0x5a'),_0xab02('0x64'));}break;case _0xab02('0x65'):if(_0x1868d5[_0xab02('0x5c')]){var _0x2f6caf={'method':'POST','uri':_0xab02('0x66'),'headers':{'Authorization':_0x1868d5['apiKey']},'body':{'content':_0x3c7245[_0xab02('0x24')],'to':[_0x3c7245[_0xab02('0x21')]],'from':_0x1868d5['phone'],'binary':![],'clientMessageId':'uuid','charset':_0xab02('0x67')},'json':!![]};rp(_0x2f6caf)[_0xab02('0x17')](function(_0x3ffb20){if(!_0x3ffb20[_0xab02('0x1a')]){var _0x17ac5a={'messageId':_0x3ffb20[_0xab02('0x22')][0x0][_0xab02('0x68')]};if(!_0x1868d5['deliveryReport']){_0x17ac5a[_0xab02('0x3f')]=!![];}return _0x19ae4b['update'](_0x17ac5a);}else{return logger['error'](_0xab02('0x3a'),_0xab02('0x29'),_0xab02('0x65'),util[_0xab02('0x2a')](_0x3ffb20['error'],{'showHidden':![],'depth':null}));}})[_0xab02('0x28')](function(_0x38cd49){return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xab02('0x29'),_0xab02('0x65'),util[_0xab02('0x2a')](_0x38cd49,{'showHidden':![],'depth':null}));});}else{logger[_0xab02('0x1a')](_0xab02('0x3a'),_0xab02('0x29'),'clickatell',_0xab02('0x64'));}break;case _0xab02('0x69'):if(_0x1868d5[_0xab02('0x2e')]&&_0x1868d5[_0xab02('0x31')]){var _0x2a005f=util[_0xab02('0x44')](_0xab02('0x45'),_0x1868d5['username'],_0x1868d5[_0xab02('0x31')]);var _0x2fc266={'method':_0xab02('0x35'),'uri':_0xab02('0x6a')+_0x1868d5[_0xab02('0x6b')]+_0xab02('0x6c'),'body':{'to':[_0x3c7245[_0xab02('0x21')]],'text':_0x3c7245[_0xab02('0x24')],'from':_0x1868d5[_0xab02('0x21')],'applicationId':_0x1868d5[_0xab02('0x6d')]},'headers':{'Authorization':util[_0xab02('0x44')](_0xab02('0x46'),new Buffer(_0x2a005f)[_0xab02('0x6e')](_0xab02('0x47')))},'json':!![]};rp(_0x2fc266)[_0xab02('0x17')](function(_0x3e345f){if(_0x3e345f['id']){var _0x3ed11b={'messageId':_0x3e345f['id']};return _0x19ae4b['update'](_0x3ed11b);}else{logger[_0xab02('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xab02('0x29'),_0xab02('0x69'),util[_0xab02('0x2a')](_0x3e345f,{'showHidden':![],'depth':null}));}})[_0xab02('0x28')](function(_0x304f8b){logger['error'](_0xab02('0x3a'),'afterCreate',_0xab02('0x69'),util['inspect'](_0x304f8b,{'showHidden':![],'depth':null}));});}else{logger[_0xab02('0x1a')](_0xab02('0x3a'),_0xab02('0x29'),_0xab02('0x69'),_0xab02('0x3b'));}break;case'intelepeer':if(_0x1868d5[_0xab02('0x5c')]){var _0x3197e9={};var _0x2d0cbd={'method':_0xab02('0x35'),'uri':_0xab02('0x6f'),'headers':{'Authorization':_0xab02('0x70')+_0x1868d5[_0xab02('0x5c')],'Content-Type':_0xab02('0x57')},'body':{'from':_0x1868d5[_0xab02('0x21')],'to':_0x3c7245[_0xab02('0x21')],'text':_0x3c7245[_0xab02('0x24')]},'json':!![]};return rp(_0x2d0cbd)[_0xab02('0x17')](function(_0x5ea243){if(_0x5ea243[_0xab02('0x71')]==0xca){_0x3197e9[_0xab02('0x72')]=_0x5ea243;var _0xe59b93={'method':_0xab02('0x35'),'uri':_0xab02('0x73'),'headers':{'Authorization':'Bearer\x20'+_0x1868d5[_0xab02('0x5c')],'Content-Type':_0xab02('0x57')},'body':{'refid':_0x3197e9[_0xab02('0x72')][_0xab02('0x74')]},'json':!![]};return rp(_0xe59b93)[_0xab02('0x17')](function(_0x56869c){_0x3197e9[_0xab02('0x75')]=_0x56869c;var _0x5ecdc8={'messageId':_0x3197e9['message'][_0xab02('0x74')],'read':!![]};return _0x19ae4b[_0xab02('0x18')](_0x5ecdc8);});}else{return logger[_0xab02('0x1a')](_0xab02('0x3a'),'afterCreate',_0xab02('0x76'),util[_0xab02('0x2a')](_0x5ea243,{'showHidden':![],'depth':null}));}})['catch'](function(_0x514092){return logger[_0xab02('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xab02('0x29'),_0xab02('0x76'),util[_0xab02('0x2a')](_0x514092,{'showHidden':![],'depth':null}));});}else{return logger[_0xab02('0x1a')](_0xab02('0x3a'),_0xab02('0x29'),'intelepeer',_0xab02('0x77'));}break;}}})[_0xab02('0x78')](function(){_0x11532f();});}else{_0x11532f();}}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x1914=['Token\x20not\x20received','finally','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./smsMessage.attributes','define','messageId','FULLTEXT','models','get','direction','toLowerCase','secret','isNil','UserId','SmsInteraction','findOne','SmsInteractionId','then','update','createdAt','catch','error','SmsAccount','find','SmsAccountId','type','twilio','phone','accountSid','authToken','remote','/status?token=','token','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','https://api.skebby.it/API/v1.0/REST/','username','password','body','smsMethod','sender','GET','split','sms','POST','user_key','session_key','total_sent','internal_order_id','read','skebby','connectel','senderString','https://smsapi.connectel.se/api/v2/send/','requestid','deliveryReport','Missing\x20parameters:\x20authToken','xCALLY\x20Motion','format','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','http_code','data','queued_count','head','messages','message_id','clickSend','Missing\x20parameters:\x20username,\x20password','plivo','authId','/api/sms/messages/','https://api.plivo.com/v1/Account/%s/Message/','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','csc','crypto','apiKey','login','text','timestamp','keys','sort','length','createHash','md5','hex','signature=','/external/get/send.php?','id_sms','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','%s:%s','https://messaging.bandwidth.com/api/v2/users/','/messages','applicationId','bandwidth','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','code','https://api.intelepeer.com/_rest/v4/app/sms/mdr','message','refid','status'];(function(_0x55ca8d,_0x544847){var _0x3c20c3=function(_0x2fc948){while(--_0x2fc948){_0x55ca8d['push'](_0x55ca8d['shift']());}};_0x3c20c3(++_0x544847);}(_0x1914,0xff));var _0x4191=function(_0x1171ff,_0x32287b){_0x1171ff=_0x1171ff-0x0;var _0x2fd4ee=_0x1914[_0x1171ff];return _0x2fd4ee;};'use strict';var _=require(_0x4191('0x0'));var util=require('util');var logger=require(_0x4191('0x1'))(_0x4191('0x2'));var moment=require(_0x4191('0x3'));var BPromise=require(_0x4191('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4191('0x5'));var rimraf=require(_0x4191('0x6'));var config=require(_0x4191('0x7'));var attributes=require(_0x4191('0x8'));module['exports']=function(_0x30895f,_0x464c80){return _0x30895f[_0x4191('0x9')]('SmsMessage',attributes,{'tableName':'sms_messages','paranoid':![],'indexes':[{'name':_0x4191('0xa'),'fields':[_0x4191('0xa')]},{'name':'fti_sms_messages','fields':['body'],'type':_0x4191('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x224a86,_0x1ab02d,_0x2d2a43){var _0x15c841=_0x30895f[_0x4191('0xc')];var _0x4881e4=_0x224a86[_0x4191('0xd')]({'plain':!![]});if(_0x4881e4[_0x4191('0xe')][_0x4191('0xf')]()==='in'||_0x4881e4[_0x4191('0xe')][_0x4191('0xf')]()==='out'&&!_0x4881e4[_0x4191('0x10')]&&!_[_0x4191('0x11')](_0x4881e4[_0x4191('0x12')])&&!_[_0x4191('0x11')](_0x4881e4['SmsInteractionId'])){_0x15c841[_0x4191('0x13')][_0x4191('0x14')]({'where':{'id':_0x4881e4[_0x4191('0x15')]}})[_0x4191('0x16')](function(_0x31e77f){if(_0x31e77f){_0x31e77f[_0x4191('0x17')]({'lastMsgAt':_0x4881e4[_0x4191('0x18')],'lastMsgDirection':_0x4881e4['direction'][_0x4191('0xf')]()});}})[_0x4191('0x19')](function(_0x42d07a){console[_0x4191('0x1a')](_0x42d07a);});}if(_0x4881e4['direction']==='out'&&!_0x4881e4['secret']){var _0x46b7b6;_0x15c841[_0x4191('0x1b')][_0x4191('0x1c')]({'where':{'id':_0x4881e4[_0x4191('0x1d')]},'raw':!![]})['then'](function(_0x1f2236){_0x46b7b6=_0x1f2236;if(_0x46b7b6&&_0x46b7b6[_0x4191('0x1e')]){switch(_0x46b7b6[_0x4191('0x1e')]){case _0x4191('0x1f'):var _0x231827=require(_0x4191('0x1f'));if(_0x46b7b6['accountSid']&&_0x46b7b6['authToken']&&_0x46b7b6[_0x4191('0x20')]){var _0x226eff=new _0x231827(_0x46b7b6[_0x4191('0x21')],_0x46b7b6[_0x4191('0x22')]);_0x226eff['messages']['create']({'body':_0x4881e4['body'],'to':_0x4881e4['phone'],'from':_0x46b7b6[_0x4191('0x20')],'statusCallback':_0x46b7b6[_0x4191('0x23')]+'/api/sms/messages/'+_0x4881e4['id']+_0x4191('0x24')+_0x46b7b6[_0x4191('0x25')]})[_0x4191('0x16')](function(_0x30f2ee){if(_0x30f2ee[_0x4191('0x26')]){return _0x224a86['update']({'messageId':_0x30f2ee[_0x4191('0x26')]});}})[_0x4191('0x19')](function(_0x3499dc){logger[_0x4191('0x1a')](_0x4191('0x27'),_0x4191('0x28'),_0x4191('0x1f'),util[_0x4191('0x29')](_0x3499dc,{'showHidden':![],'depth':null}));});}else{logger[_0x4191('0x1a')](_0x4191('0x27'),'afterCreate','twilio',_0x4191('0x2a'));}break;case'skebby':var _0x1d3753=_0x4191('0x2b');if(_0x46b7b6[_0x4191('0x2c')]&&_0x46b7b6[_0x4191('0x2d')]){var _0x3d4468={'recipient':[_0x4881e4['phone']],'message':_0x4881e4[_0x4191('0x2e')],'message_type':_0x46b7b6['smsMethod']};if(_0x46b7b6['smsMethod']&&_0x46b7b6[_0x4191('0x2f')]!=='SI'){_0x3d4468[_0x4191('0x30')]=_0x46b7b6[_0x4191('0x20')];}var _0x4aea98={'url':_0x1d3753+'login?username='+_0x46b7b6[_0x4191('0x2c')]+'&password='+_0x46b7b6[_0x4191('0x2d')],'method':_0x4191('0x31')};rp(_0x4aea98)[_0x4191('0x16')](function(_0x1c1f2b){var _0x522d03=_0x1c1f2b[_0x4191('0x32')](';');var _0x276b9b={'user_key':_0x522d03[0x0],'session_key':_0x522d03[0x1]};_0x4aea98={'url':_0x1d3753+_0x4191('0x33'),'method':_0x4191('0x34'),'headers':{'user_key':_0x276b9b[_0x4191('0x35')],'Session_key':_0x276b9b[_0x4191('0x36')]},'json':!![],'body':_0x3d4468};return rp(_0x4aea98);})[_0x4191('0x16')](function(_0x45aee8){if(_0x45aee8[_0x4191('0x37')]>=0x1){var _0x5da6d7={'messageId':_0x45aee8[_0x4191('0x38')]};if(_0x46b7b6['smsMethod']!=='GP'||!_0x46b7b6['deliveryReport']){_0x5da6d7[_0x4191('0x39')]=!![];}return _0x224a86[_0x4191('0x17')](_0x5da6d7);}else{return logger['error'](_0x4191('0x27'),'afterCreate',_0x4191('0x3a'),util[_0x4191('0x29')](_0x45aee8,{'showHidden':![],'depth':null}));}})[_0x4191('0x19')](function(_0x468d2e){return logger[_0x4191('0x1a')](_0x4191('0x27'),'afterCreate',_0x4191('0x3a'),util[_0x4191('0x29')](_0x468d2e,{'showHidden':![],'depth':null}));});}else{logger[_0x4191('0x1a')](_0x4191('0x27'),_0x4191('0x28'),_0x4191('0x3a'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x4191('0x3b'):if(_0x46b7b6[_0x4191('0x22')]){var _0x46d9e1={'recipient':_0x4881e4[_0x4191('0x20')],'message':_0x4881e4[_0x4191('0x2e')],'sender':_0x46b7b6[_0x4191('0x3c')]||_0x46b7b6[_0x4191('0x20')],'authorization':_0x46b7b6[_0x4191('0x22')]};var _0x1ab02d={'method':_0x4191('0x34'),'uri':_0x4191('0x3d'),'body':_0x46d9e1,'json':!![]};rp(_0x1ab02d)[_0x4191('0x16')](function(_0x7a5e56){var _0x5de41e={'messageId':_0x7a5e56[_0x4191('0x3e')]};if(!_0x46b7b6[_0x4191('0x3f')]){_0x5de41e[_0x4191('0x39')]=!![];}return _0x224a86[_0x4191('0x17')](_0x5de41e);})[_0x4191('0x19')](function(_0x56086a){logger['error'](_0x4191('0x27'),_0x4191('0x28'),'connectel',util[_0x4191('0x29')](_0x56086a,{'showHidden':![],'depth':null}));});}else{logger[_0x4191('0x1a')](_0x4191('0x27'),'afterCreate',_0x4191('0x3b'),_0x4191('0x40'));}break;case'clicksend':if(_0x46b7b6[_0x4191('0x2c')]&&_0x46b7b6[_0x4191('0x2d')]){var _0x46d9e1={'messages':[{'source':_0x4191('0x41'),'to':_0x4881e4[_0x4191('0x20')],'body':_0x4881e4[_0x4191('0x2e')],'from':_0x46b7b6[_0x4191('0x3c')]||_0x46b7b6[_0x4191('0x20')]}]};var _0x276845=util[_0x4191('0x42')]('%s:%s',_0x46b7b6['username'],_0x46b7b6[_0x4191('0x2d')]);var _0x1ab02d={'method':_0x4191('0x34'),'uri':_0x4191('0x43'),'body':_0x46d9e1,'headers':{'Authorization':util[_0x4191('0x42')](_0x4191('0x44'),new Buffer(_0x276845)[_0x4191('0x45')](_0x4191('0x46')))},'json':!![]};rp(_0x1ab02d)[_0x4191('0x16')](function(_0x32cf36){if(_0x32cf36[_0x4191('0x47')]>=0xc8&&_0x32cf36[_0x4191('0x47')]<=0xce){if(_0x32cf36[_0x4191('0x48')]&&_0x32cf36[_0x4191('0x48')][_0x4191('0x49')]>0x0){var _0x539d45=_[_0x4191('0x4a')](_0x32cf36['data'][_0x4191('0x4b')]);var _0x5afa83={'messageId':_0x539d45[_0x4191('0x4c')]};if(!_0x46b7b6[_0x4191('0x3f')]){_0x5afa83[_0x4191('0x39')]=!![];}return _0x224a86[_0x4191('0x17')](_0x5afa83);}else{logger[_0x4191('0x1a')](_0x4191('0x27'),'afterCreate',_0x4191('0x4d'),util['inspect'](_0x32cf36,{'showHidden':![],'depth':null}));}}else{logger[_0x4191('0x1a')](_0x4191('0x27'),_0x4191('0x28'),_0x4191('0x4d'),util[_0x4191('0x29')](_0x32cf36,{'showHidden':![],'depth':null}));}})[_0x4191('0x19')](function(_0x138b0d){logger[_0x4191('0x1a')](_0x4191('0x27'),_0x4191('0x28'),_0x4191('0x4d'),util[_0x4191('0x29')](_0x138b0d,{'showHidden':![],'depth':null}));});}else{logger[_0x4191('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x4191('0x4d'),_0x4191('0x4e'));}break;case _0x4191('0x4f'):if(_0x46b7b6[_0x4191('0x50')]&&_0x46b7b6[_0x4191('0x22')]){var _0x46d9e1={'dst':_0x4881e4[_0x4191('0x20')],'text':_0x4881e4[_0x4191('0x2e')],'src':_0x46b7b6[_0x4191('0x3c')]||_0x46b7b6[_0x4191('0x20')],'url':_0x46b7b6['remote']+_0x4191('0x51')+_0x4881e4['id']+'/status?token='+_0x46b7b6[_0x4191('0x25')]};var _0x276845=util['format']('%s:%s',_0x46b7b6[_0x4191('0x50')],_0x46b7b6[_0x4191('0x22')]);var _0x1ab02d={'method':'POST','uri':util[_0x4191('0x42')](_0x4191('0x52'),_0x46b7b6['authId']),'body':_0x46d9e1,'headers':{'Authorization':util[_0x4191('0x42')]('Basic\x20%s',new Buffer(_0x276845)[_0x4191('0x45')](_0x4191('0x46')))},'json':!![]};rp(_0x1ab02d)[_0x4191('0x16')](function(_0x2af110){var _0x953e49={'messageId':_0x2af110[_0x4191('0x53')][0x0]};return _0x224a86[_0x4191('0x17')](_0x953e49);})[_0x4191('0x19')](function(_0x3ac9e7){logger['error'](_0x4191('0x27'),_0x4191('0x28'),'plivo',util['inspect'](_0x3ac9e7,{'showHidden':![],'depth':null}));});}else{logger[_0x4191('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x4191('0x28'),_0x4191('0x4f'),_0x4191('0x54'));}break;case _0x4191('0x55'):if(_0x46b7b6[_0x4191('0x2c')]&&_0x46b7b6[_0x4191('0x2d')]){if(_0x46b7b6[_0x4191('0x56')]){var _0x196617={'method':_0x4191('0x34'),'uri':_0x46b7b6[_0x4191('0x56')]+_0x4191('0x57'),'body':{'username':_0x46b7b6[_0x4191('0x2c')],'password':_0x46b7b6[_0x4191('0x2d')]},'json':!![]};return rp(_0x196617)[_0x4191('0x16')](function(_0x61f57){var _0x50945c={'method':_0x4191('0x34'),'uri':_0x46b7b6['baseUrl']+_0x4191('0x58'),'body':{'messages':[{'from':_0x46b7b6[_0x4191('0x20')],'destinations':[{'to':_0x4881e4[_0x4191('0x20')]}],'text':_0x4881e4[_0x4191('0x2e')],'notifyUrl':_0x46b7b6[_0x4191('0x23')]+_0x4191('0x51')+_0x4881e4['id']+_0x4191('0x24')+_0x46b7b6[_0x4191('0x25')],'notifyContentType':_0x4191('0x59'),'callbackData':_0x46b7b6[_0x4191('0x20')]+';'+_0x4881e4['body']}]},'headers':{'Authorization':'IBSSO\x20'+_0x61f57[_0x4191('0x25')]},'json':!![]};return rp(_0x50945c)['then'](function(_0x5d83bd){if(_0x5d83bd[_0x4191('0x4b')]){var _0x2ea849={'messageId':_0x5d83bd[_0x4191('0x4b')][0x0]['messageId']};if(!_0x46b7b6['deliveryReport']){_0x2ea849[_0x4191('0x39')]=!![];}return _0x224a86[_0x4191('0x17')](_0x2ea849);}else{return logger[_0x4191('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x4191('0x28'),_0x4191('0x55'),util['inspect'](_0x5d83bd,{'showHidden':![],'depth':null}));}});})[_0x4191('0x19')](function(_0x941ca6){return logger['error'](_0x4191('0x27'),'afterCreate',_0x4191('0x55'),util[_0x4191('0x29')](_0x941ca6,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x4191('0x27'),'afterCreate','infobip','Missing\x20parameters:\x20base_url');}}else{logger[_0x4191('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x4191('0x28'),_0x4191('0x55'),_0x4191('0x4e'));}break;case _0x4191('0x5a'):var _0x1ce858=require(_0x4191('0x5b'));if(_0x46b7b6[_0x4191('0x5c')]){var _0x14edae={};_0x14edae[_0x4191('0x5d')]=_0x46b7b6[_0x4191('0x2c')];_0x14edae[_0x4191('0x20')]=_0x4881e4[_0x4191('0x20')];_0x14edae[_0x4191('0x30')]=_0x46b7b6[_0x4191('0x20')];_0x14edae[_0x4191('0x5e')]=_0x4881e4[_0x4191('0x2e')];_0x14edae[_0x4191('0x5f')]=+new Date();var _0x2f2df0='';var _0xaf8db4='';var _0xf7b89b=Object[_0x4191('0x60')](_0x14edae);_0xf7b89b[_0x4191('0x61')]();for(var _0x5a1102=0x0;_0x5a1102<_0xf7b89b[_0x4191('0x62')];_0x5a1102++){if(_0x2f2df0!=''){_0x2f2df0+='&';}_0x2f2df0+=_0xf7b89b[_0x5a1102]+'='+encodeURIComponent(_0x14edae[_0xf7b89b[_0x5a1102]]);_0xaf8db4+=_0x14edae[_0xf7b89b[_0x5a1102]];}_0xaf8db4+=_0x46b7b6[_0x4191('0x5c')];_0xaf8db4=_0x1ce858[_0x4191('0x63')](_0x4191('0x64'))[_0x4191('0x17')](_0xaf8db4)['digest'](_0x4191('0x65'));if(_0x2f2df0!==''){_0x2f2df0+='&';}_0x2f2df0+=_0x4191('0x66')+_0xaf8db4;var _0x4aea98={'method':_0x4191('0x31'),'uri':_0x46b7b6[_0x4191('0x56')]+_0x4191('0x67')+_0x2f2df0,'json':!![]};return rp(_0x4aea98)[_0x4191('0x16')](function(_0x20635f){var _0x4b387d=Object[_0x4191('0x60')](_0x20635f);if(_0x20635f[_0x4b387d[0x0]][_0x4191('0x1a')]&&parseInt(_0x20635f[_0x4b387d[0x0]][_0x4191('0x1a')])===0x0){var _0x4a7e2b={'messageId':_0x20635f[_0x4b387d[0x0]][_0x4191('0x68')]};if(!_0x46b7b6[_0x4191('0x3f')]){_0x4a7e2b['read']=!![];}return _0x224a86[_0x4191('0x17')](_0x4a7e2b);}else{return logger['error'](_0x4191('0x27'),'afterCreate',_0x4191('0x5a'),util[_0x4191('0x29')](_0x20635f[_0x4191('0x1a')],{'showHidden':![],'depth':null}));}})['catch'](function(_0x9bfd34){return logger[_0x4191('0x1a')](_0x4191('0x27'),'afterCreate','csc',util[_0x4191('0x29')](_0x9bfd34,{'showHidden':![],'depth':null}));});}else{logger[_0x4191('0x1a')](_0x4191('0x27'),'afterCreate',_0x4191('0x5a'),'Missing\x20parameters:\x20apiKey');}break;case _0x4191('0x69'):if(_0x46b7b6[_0x4191('0x5c')]){var _0x29be0f={'method':_0x4191('0x34'),'uri':_0x4191('0x6a'),'headers':{'Authorization':_0x46b7b6[_0x4191('0x5c')]},'body':{'content':_0x4881e4[_0x4191('0x2e')],'to':[_0x4881e4[_0x4191('0x20')]],'from':_0x46b7b6[_0x4191('0x20')],'binary':![],'clientMessageId':_0x4191('0x6b'),'charset':_0x4191('0x6c')},'json':!![]};rp(_0x29be0f)[_0x4191('0x16')](function(_0x39dd7a){if(!_0x39dd7a['error']){var _0x35e1d1={'messageId':_0x39dd7a[_0x4191('0x4b')][0x0][_0x4191('0x6d')]};if(!_0x46b7b6[_0x4191('0x3f')]){_0x35e1d1[_0x4191('0x39')]=!![];}return _0x224a86['update'](_0x35e1d1);}else{return logger[_0x4191('0x1a')](_0x4191('0x27'),_0x4191('0x28'),'clickatell',util[_0x4191('0x29')](_0x39dd7a[_0x4191('0x1a')],{'showHidden':![],'depth':null}));}})[_0x4191('0x19')](function(_0x40efc1){return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x4191('0x69'),util['inspect'](_0x40efc1,{'showHidden':![],'depth':null}));});}else{logger[_0x4191('0x1a')](_0x4191('0x27'),_0x4191('0x28'),_0x4191('0x69'),'Missing\x20parameters:\x20apiKey');}break;case'bandwidth':if(_0x46b7b6[_0x4191('0x2c')]&&_0x46b7b6[_0x4191('0x2d')]){var _0x276845=util[_0x4191('0x42')](_0x4191('0x6e'),_0x46b7b6[_0x4191('0x2c')],_0x46b7b6[_0x4191('0x2d')]);var _0x1ab02d={'method':_0x4191('0x34'),'uri':_0x4191('0x6f')+_0x46b7b6['accountId']+_0x4191('0x70'),'body':{'to':[_0x4881e4['phone']],'text':_0x4881e4[_0x4191('0x2e')],'from':_0x46b7b6[_0x4191('0x20')],'applicationId':_0x46b7b6[_0x4191('0x71')]},'headers':{'Authorization':util['format'](_0x4191('0x44'),new Buffer(_0x276845)['toString']('base64'))},'json':!![]};rp(_0x1ab02d)[_0x4191('0x16')](function(_0x1e506f){if(_0x1e506f['id']){var _0x462a5a={'messageId':_0x1e506f['id']};return _0x224a86[_0x4191('0x17')](_0x462a5a);}else{logger[_0x4191('0x1a')](_0x4191('0x27'),_0x4191('0x28'),_0x4191('0x72'),util[_0x4191('0x29')](_0x1e506f,{'showHidden':![],'depth':null}));}})[_0x4191('0x19')](function(_0x20cb8a){logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x4191('0x28'),_0x4191('0x72'),util[_0x4191('0x29')](_0x20cb8a,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','bandwidth',_0x4191('0x4e'));}break;case _0x4191('0x73'):if(_0x46b7b6['apiKey']){var _0x226f8c={};var _0x4aea98={'method':_0x4191('0x34'),'uri':_0x4191('0x74'),'headers':{'Authorization':_0x4191('0x75')+_0x46b7b6[_0x4191('0x5c')],'Content-Type':_0x4191('0x59')},'body':{'from':_0x46b7b6[_0x4191('0x20')],'to':_0x4881e4['phone'],'text':_0x4881e4[_0x4191('0x2e')]},'json':!![]};return rp(_0x4aea98)[_0x4191('0x16')](function(_0x300aec){if(_0x300aec[_0x4191('0x76')]==0xca){_0x226f8c['message']=_0x300aec;var _0x33d42f={'method':_0x4191('0x34'),'uri':_0x4191('0x77'),'headers':{'Authorization':_0x4191('0x75')+_0x46b7b6['apiKey'],'Content-Type':_0x4191('0x59')},'body':{'refid':_0x226f8c[_0x4191('0x78')][_0x4191('0x79')]},'json':!![]};return rp(_0x33d42f)[_0x4191('0x16')](function(_0x257f0d){_0x226f8c[_0x4191('0x7a')]=_0x257f0d;var _0xced8ad={'messageId':_0x226f8c[_0x4191('0x78')][_0x4191('0x79')],'read':!![]};return _0x224a86[_0x4191('0x17')](_0xced8ad);});}else{return logger[_0x4191('0x1a')](_0x4191('0x27'),'afterCreate',_0x4191('0x73'),util['inspect'](_0x300aec,{'showHidden':![],'depth':null}));}})[_0x4191('0x19')](function(_0x529e20){return logger[_0x4191('0x1a')](_0x4191('0x27'),'afterCreate',_0x4191('0x73'),util[_0x4191('0x29')](_0x529e20,{'showHidden':![],'depth':null}));});}else{return logger[_0x4191('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x4191('0x28'),_0x4191('0x73'),_0x4191('0x7b'));}break;}}})[_0x4191('0x7c')](function(){_0x2d2a43();});}else{_0x2d2a43();}}},'charset':'utf8mb4','collate':_0x4191('0x7d')});};
\ No newline at end of file
index bab8ae1..2051def 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17c7=['defaults','localhost','./smsMessage.socket','register','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','SmsMessage','create','options','raw','CreateSmsMessage','stringify','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis'];(function(_0x12701b,_0x44b3f8){var _0x3497b3=function(_0x522989){while(--_0x522989){_0x12701b['push'](_0x12701b['shift']());}};_0x3497b3(++_0x44b3f8);}(_0x17c7,0x169));var _0x717c=function(_0x2de9bb,_0xc6daf6){_0x2de9bb=_0x2de9bb-0x0;var _0x2acc40=_0x17c7[_0x2de9bb];return _0x2acc40;};'use strict';var _=require('lodash');var util=require(_0x717c('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x717c('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x717c('0x2'))['db'];var utils=require(_0x717c('0x3'));var logger=require(_0x717c('0x4'))(_0x717c('0x5'));var config=require(_0x717c('0x6'));var jayson=require(_0x717c('0x7'));var client=jayson[_0x717c('0x8')][_0x717c('0x9')]({'port':0x232a});config[_0x717c('0xa')]=_[_0x717c('0xb')](config[_0x717c('0xa')],{'host':_0x717c('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x717c('0xa')]));require(_0x717c('0xd'))[_0x717c('0xe')](socket);function respondWithRpcPromise(_0x33e04a,_0x45bbce,_0x232285){return new BPromise(function(_0x45c574,_0x1525cc){return client['request'](_0x33e04a,_0x232285)[_0x717c('0xf')](function(_0x5d0506){logger[_0x717c('0x10')](_0x717c('0x11'),_0x45bbce,_0x717c('0x12'));logger[_0x717c('0x13')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x45bbce,_0x717c('0x12'),JSON['stringify'](_0x5d0506));if(_0x5d0506[_0x717c('0x14')]){if(_0x5d0506[_0x717c('0x14')][_0x717c('0x15')]===0x1f4){logger[_0x717c('0x14')](_0x717c('0x11'),_0x45bbce,_0x5d0506[_0x717c('0x14')][_0x717c('0x16')]);return _0x1525cc(_0x5d0506[_0x717c('0x14')]['message']);}logger[_0x717c('0x14')](_0x717c('0x11'),_0x45bbce,_0x5d0506[_0x717c('0x14')][_0x717c('0x16')]);return _0x45c574(_0x5d0506[_0x717c('0x14')][_0x717c('0x16')]);}else{logger['info'](_0x717c('0x11'),_0x45bbce,'request\x20sent');_0x45c574(_0x5d0506[_0x717c('0x17')][_0x717c('0x16')]);}})[_0x717c('0x18')](function(_0xc9eee4){logger[_0x717c('0x14')](_0x717c('0x11'),_0x45bbce,_0xc9eee4);_0x1525cc(_0xc9eee4);});});}exports['CreateSmsMessage']=function(_0x480b8b){var _0x37c336=this;return new Promise(function(_0x9c8308,_0x4ff82b){return db[_0x717c('0x19')][_0x717c('0x1a')](_0x480b8b['body'],{'raw':_0x480b8b[_0x717c('0x1b')]?_0x480b8b[_0x717c('0x1b')][_0x717c('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x5b77c1){logger['info'](_0x717c('0x1d'),_0x480b8b);logger[_0x717c('0x13')](_0x717c('0x1d'),_0x480b8b,JSON[_0x717c('0x1e')](_0x5b77c1));_0x9c8308(_0x5b77c1);})[_0x717c('0x18')](function(_0x376212){logger[_0x717c('0x14')]('CreateSmsMessage',_0x376212[_0x717c('0x16')],_0x480b8b);_0x4ff82b(_0x37c336[_0x717c('0x14')](0x1f4,_0x376212['message']));});});};
\ No newline at end of file
+var _0xfd36=['body','options','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','redis','localhost','register','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateSmsMessage','SmsMessage'];(function(_0x56ead7,_0x327c14){var _0x5a5a2a=function(_0x532285){while(--_0x532285){_0x56ead7['push'](_0x56ead7['shift']());}};_0x5a5a2a(++_0x327c14);}(_0xfd36,0x18a));var _0x6fd3=function(_0x3e1588,_0x277b82){_0x3e1588=_0x3e1588-0x0;var _0x37569b=_0xfd36[_0x3e1588];return _0x37569b;};'use strict';var _=require('lodash');var util=require(_0x6fd3('0x0'));var moment=require(_0x6fd3('0x1'));var BPromise=require(_0x6fd3('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6fd3('0x3'));var db=require(_0x6fd3('0x4'))['db'];var utils=require(_0x6fd3('0x5'));var logger=require('../../config/logger')(_0x6fd3('0x6'));var config=require(_0x6fd3('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x6fd3('0x8')][_0x6fd3('0x9')]({'port':0x232a});config[_0x6fd3('0xa')]=_['defaults'](config['redis'],{'host':_0x6fd3('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6fd3('0xa')]));require('./smsMessage.socket')[_0x6fd3('0xc')](socket);function respondWithRpcPromise(_0x575b7b,_0x519a26,_0x31c864){return new BPromise(function(_0x243383,_0x382a20){return client['request'](_0x575b7b,_0x31c864)[_0x6fd3('0xd')](function(_0x457ada){logger[_0x6fd3('0xe')](_0x6fd3('0xf'),_0x519a26,_0x6fd3('0x10'));logger[_0x6fd3('0x11')](_0x6fd3('0x12'),_0x519a26,_0x6fd3('0x10'),JSON[_0x6fd3('0x13')](_0x457ada));if(_0x457ada[_0x6fd3('0x14')]){if(_0x457ada[_0x6fd3('0x14')]['code']===0x1f4){logger[_0x6fd3('0x14')]('SmsMessage,\x20%s,\x20%s',_0x519a26,_0x457ada[_0x6fd3('0x14')][_0x6fd3('0x15')]);return _0x382a20(_0x457ada['error'][_0x6fd3('0x15')]);}logger[_0x6fd3('0x14')]('SmsMessage,\x20%s,\x20%s',_0x519a26,_0x457ada[_0x6fd3('0x14')][_0x6fd3('0x15')]);return _0x243383(_0x457ada['error'][_0x6fd3('0x15')]);}else{logger[_0x6fd3('0xe')](_0x6fd3('0xf'),_0x519a26,_0x6fd3('0x10'));_0x243383(_0x457ada[_0x6fd3('0x16')]['message']);}})[_0x6fd3('0x17')](function(_0x464793){logger['error'](_0x6fd3('0xf'),_0x519a26,_0x464793);_0x382a20(_0x464793);});});}exports[_0x6fd3('0x18')]=function(_0x256795){var _0x3debb0=this;return new Promise(function(_0x1f6fef,_0x1b3615){return db[_0x6fd3('0x19')]['create'](_0x256795[_0x6fd3('0x1a')],{'raw':_0x256795[_0x6fd3('0x1b')]?_0x256795['options']['raw']===undefined?!![]:![]:!![]})[_0x6fd3('0xd')](function(_0x21876f){logger[_0x6fd3('0xe')](_0x6fd3('0x18'),_0x256795);logger['debug']('CreateSmsMessage',_0x256795,JSON['stringify'](_0x21876f));_0x1f6fef(_0x21876f);})[_0x6fd3('0x17')](function(_0x4783e9){logger[_0x6fd3('0x14')](_0x6fd3('0x18'),_0x4783e9['message'],_0x256795);_0x1b3615(_0x3debb0['error'](0x1f4,_0x4783e9[_0x6fd3('0x15')]));});});};
\ No newline at end of file
index 1616006..072bdb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce2d=['length','smsMessage:','./smsMessage.events','remove','update','emit','removeListener','register'];(function(_0x282af2,_0x329ba9){var _0x1c6d19=function(_0x35f501){while(--_0x35f501){_0x282af2['push'](_0x282af2['shift']());}};_0x1c6d19(++_0x329ba9);}(_0xce2d,0x132));var _0xdce2=function(_0x3de91c,_0x259e76){_0x3de91c=_0x3de91c-0x0;var _0x302885=_0xce2d[_0x3de91c];return _0x302885;};'use strict';var SmsMessageEvents=require(_0xdce2('0x0'));var events=['save',_0xdce2('0x1'),_0xdce2('0x2')];function createListener(_0x3613ab,_0x534232){return function(_0x21e9d4){_0x534232[_0xdce2('0x3')](_0x3613ab,_0x21e9d4);};}function removeListener(_0x4cdedd,_0x11fb95){return function(){SmsMessageEvents[_0xdce2('0x4')](_0x4cdedd,_0x11fb95);};}exports[_0xdce2('0x5')]=function(_0x102f84){for(var _0x1ffc8e=0x0,_0x595b30=events[_0xdce2('0x6')];_0x1ffc8e<_0x595b30;_0x1ffc8e++){var _0xbdafc0=events[_0x1ffc8e];var _0x2efa48=createListener(_0xdce2('0x7')+_0xbdafc0,_0x102f84);SmsMessageEvents['on'](_0xbdafc0,_0x2efa48);}};
\ No newline at end of file
+var _0xc91e=['update','emit','removeListener','register','length','smsMessage:','./smsMessage.events','save'];(function(_0x39b360,_0x528399){var _0x29c614=function(_0x5291d7){while(--_0x5291d7){_0x39b360['push'](_0x39b360['shift']());}};_0x29c614(++_0x528399);}(_0xc91e,0x86));var _0xec91=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc91e[_0x3dd15e];return _0x231fd0;};'use strict';var SmsMessageEvents=require(_0xec91('0x0'));var events=[_0xec91('0x1'),'remove',_0xec91('0x2')];function createListener(_0x1be4fa,_0x1b550d){return function(_0xf27e72){_0x1b550d[_0xec91('0x3')](_0x1be4fa,_0xf27e72);};}function removeListener(_0x5d03e9,_0x51043a){return function(){SmsMessageEvents[_0xec91('0x4')](_0x5d03e9,_0x51043a);};}exports[_0xec91('0x5')]=function(_0x29bdad){for(var _0x1a26fb=0x0,_0x4567dc=events[_0xec91('0x6')];_0x1a26fb<_0x4567dc;_0x1a26fb++){var _0x2bbe8f=events[_0x1a26fb];var _0x3b46f7=createListener(_0xec91('0x7')+_0x2bbe8f,_0x29bdad);SmsMessageEvents['on'](_0x2bbe8f,_0x3b46f7);}};
\ No newline at end of file
index b716487..615812c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8ff=['describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','update','delete','removeTeams','removeAgents','exports','util','connect-timeout','express','../../components/interaction/service','./smsQueue.controller','get','isAuthenticated'];(function(_0x3dfa5a,_0x23dbd9){var _0x2b18c2=function(_0x3c5294){while(--_0x3c5294){_0x3dfa5a['push'](_0x3dfa5a['shift']());}};_0x2b18c2(++_0x23dbd9);}(_0xf8ff,0x1b3));var _0xff8f=function(_0x4c06a3,_0x1e6b6f){_0x4c06a3=_0x4c06a3-0x0;var _0x7ff53c=_0xf8ff[_0x4c06a3];return _0x7ff53c;};'use strict';var multer=require('multer');var util=require(_0xff8f('0x0'));var path=require('path');var timeout=require(_0xff8f('0x1'));var express=require(_0xff8f('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xff8f('0x3'));var config=require('../../config/environment');var controller=require(_0xff8f('0x4'));router[_0xff8f('0x5')]('/',auth[_0xff8f('0x6')](),controller['index']);router[_0xff8f('0x5')]('/describe',auth['isAuthenticated'](),controller[_0xff8f('0x7')]);router['get'](_0xff8f('0x8'),auth[_0xff8f('0x6')](),controller[_0xff8f('0x9')]);router[_0xff8f('0x5')](_0xff8f('0xa'),auth[_0xff8f('0x6')](),controller[_0xff8f('0xb')]);router['get'](_0xff8f('0xc'),auth[_0xff8f('0x6')](),controller[_0xff8f('0xd')]);router[_0xff8f('0x5')](_0xff8f('0xe'),auth[_0xff8f('0x6')](),controller[_0xff8f('0xf')]);router[_0xff8f('0x10')]('/',auth[_0xff8f('0x6')](),controller[_0xff8f('0x11')]);router[_0xff8f('0x10')](_0xff8f('0xc'),auth[_0xff8f('0x6')](),controller[_0xff8f('0x12')]);router[_0xff8f('0x10')](_0xff8f('0xe'),auth[_0xff8f('0x6')](),controller[_0xff8f('0x13')]);router[_0xff8f('0x14')](_0xff8f('0x8'),auth[_0xff8f('0x6')](),controller[_0xff8f('0x15')]);router[_0xff8f('0x16')](_0xff8f('0x8'),auth[_0xff8f('0x6')](),controller['destroy']);router[_0xff8f('0x16')]('/:id/teams',auth[_0xff8f('0x6')](),controller[_0xff8f('0x17')]);router[_0xff8f('0x16')](_0xff8f('0xe'),auth[_0xff8f('0x6')](),controller[_0xff8f('0x18')]);module[_0xff8f('0x19')]=router;
\ No newline at end of file
+var _0x0676=['path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','describe','/:id','isAuthenticated','show','/:id/members','getMembers','/:id/teams','/:id/users','getAgents','addTeams','post','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util'];(function(_0x3aa779,_0x4a18c5){var _0x2fd150=function(_0x239bb1){while(--_0x239bb1){_0x3aa779['push'](_0x3aa779['shift']());}};_0x2fd150(++_0x4a18c5);}(_0x0676,0x1be));var _0x6067=function(_0x520e92,_0x14fcc4){_0x520e92=_0x520e92-0x0;var _0x60ccfe=_0x0676[_0x520e92];return _0x60ccfe;};'use strict';var multer=require(_0x6067('0x0'));var util=require(_0x6067('0x1'));var path=require(_0x6067('0x2'));var timeout=require('connect-timeout');var express=require(_0x6067('0x3'));var router=express['Router']();var fs_extra=require(_0x6067('0x4'));var auth=require(_0x6067('0x5'));var interaction=require(_0x6067('0x6'));var config=require(_0x6067('0x7'));var controller=require('./smsQueue.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x6067('0x8')]('/describe',auth['isAuthenticated'](),controller[_0x6067('0x9')]);router['get'](_0x6067('0xa'),auth[_0x6067('0xb')](),controller[_0x6067('0xc')]);router[_0x6067('0x8')](_0x6067('0xd'),auth[_0x6067('0xb')](),controller[_0x6067('0xe')]);router[_0x6067('0x8')](_0x6067('0xf'),auth[_0x6067('0xb')](),controller['getTeams']);router[_0x6067('0x8')](_0x6067('0x10'),auth[_0x6067('0xb')](),controller[_0x6067('0x11')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['post'](_0x6067('0xf'),auth[_0x6067('0xb')](),controller[_0x6067('0x12')]);router[_0x6067('0x13')](_0x6067('0x10'),auth['isAuthenticated'](),controller[_0x6067('0x14')]);router[_0x6067('0x15')](_0x6067('0xa'),auth[_0x6067('0xb')](),controller[_0x6067('0x16')]);router[_0x6067('0x17')](_0x6067('0xa'),auth[_0x6067('0xb')](),controller[_0x6067('0x18')]);router[_0x6067('0x17')](_0x6067('0xf'),auth['isAuthenticated'](),controller[_0x6067('0x19')]);router[_0x6067('0x17')](_0x6067('0x10'),auth[_0x6067('0xb')](),controller[_0x6067('0x1a')]);module[_0x6067('0x1b')]=router;
\ No newline at end of file
index f91017e..c58d669 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1137=['ENUM','beepall','sequelize','STRING'];(function(_0x5a06f8,_0x1ca6ae){var _0x5695ae=function(_0x57f7a8){while(--_0x57f7a8){_0x5a06f8['push'](_0x5a06f8['shift']());}};_0x5695ae(++_0x1ca6ae);}(_0x1137,0x172));var _0x7113=function(_0x349148,_0x31eabb){_0x349148=_0x349148-0x0;var _0x2f2b0f=_0x1137[_0x349148];return _0x2f2b0f;};'use strict';var Sequelize=require(_0x7113('0x0'));module['exports']={'name':{'type':Sequelize[_0x7113('0x1')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x7113('0x1')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x7113('0x2')]('rrmemory',_0x7113('0x3'),'roundrobin')}};
\ No newline at end of file
+var _0x8a06=['STRING','name','ENUM','rrmemory','roundrobin','sequelize'];(function(_0x267b55,_0xcff2dd){var _0x31b90f=function(_0x1463d9){while(--_0x1463d9){_0x267b55['push'](_0x267b55['shift']());}};_0x31b90f(++_0xcff2dd);}(_0x8a06,0xdd));var _0x68a0=function(_0x50e7e0,_0x5affce){_0x50e7e0=_0x50e7e0-0x0;var _0x1a0307=_0x8a06[_0x50e7e0];return _0x1a0307;};'use strict';var Sequelize=require(_0x68a0('0x0'));module['exports']={'name':{'type':Sequelize[_0x68a0('0x1')],'unique':_0x68a0('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x68a0('0x3')](_0x68a0('0x4'),'beepall',_0x68a0('0x5'))}};
\ No newline at end of file
index 23b0aaa..86c2594 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe98c=['fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','SmsQueue','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','describe','getMembers','UserSmsQueue','nolimit','SmsQueueId','User','agent','smsPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','findOne','Team','addTeams','ids','findAll','Agents','online','voicePause','flatMap','sequelize','each','forEach','emit','userSmsQueue:save','select','field','from','team_has_sms_queues','user_has_teams','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','every','TeamId','compact','value','removeTeams','removeAgents','addAgents','omit','spread','isArray','userSmsQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./smsQueue.socket','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','update','then','get','SmsQueues','UserProfileResource','destroy','error','stack','name','send','index','map','rawAttributes','type','key','keys','query','filters','model','attributes','intersection'];(function(_0x49a109,_0x5b4725){var _0xfb2f20=function(_0x191307){while(--_0x191307){_0x49a109['push'](_0x49a109['shift']());}};_0xfb2f20(++_0x5b4725);}(_0xe98c,0xd3));var _0xce98=function(_0x5d7696,_0x185685){_0x5d7696=_0x5d7696-0x0;var _0x39297c=_0xe98c[_0x5d7696];return _0x39297c;};'use strict';var emlformat=require(_0xce98('0x0'));var rimraf=require(_0xce98('0x1'));var zipdir=require(_0xce98('0x2'));var jsonpatch=require(_0xce98('0x3'));var rp=require(_0xce98('0x4'));var moment=require('moment');var BPromise=require(_0xce98('0x5'));var Mustache=require(_0xce98('0x6'));var util=require(_0xce98('0x7'));var path=require(_0xce98('0x8'));var sox=require(_0xce98('0x9'));var csv=require(_0xce98('0xa'));var ejs=require(_0xce98('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xce98('0xc'));var squel=require(_0xce98('0xd'));var crypto=require(_0xce98('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xce98('0xf'));var toCsv=require('to-csv');var querystring=require(_0xce98('0x10'));var Papa=require('papaparse');var Redis=require(_0xce98('0x11'));var authService=require(_0xce98('0x12'));var qs=require(_0xce98('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xce98('0x14'));var logger=require(_0xce98('0x15'))(_0xce98('0x16'));var utils=require('../../config/utils');var config=require(_0xce98('0x17'));var licenseUtil=require(_0xce98('0x18'));var db=require(_0xce98('0x19'))['db'];config[_0xce98('0x1a')]=_[_0xce98('0x1b')](config[_0xce98('0x1a')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xce98('0x1a')]));require(_0xce98('0x1c'))['register'](socket);function respondWithStatusCode(_0x42483b,_0x51ba30){_0x51ba30=_0x51ba30||0xcc;return function(_0x425659){if(_0x425659){return _0x42483b[_0xce98('0x1d')](_0x51ba30);}return _0x42483b[_0xce98('0x1e')](_0x51ba30)[_0xce98('0x1f')]();};}function respondWithResult(_0x176b15,_0x3460f5){_0x3460f5=_0x3460f5||0xc8;return function(_0x2613b0){if(_0x2613b0){return _0x176b15[_0xce98('0x1e')](_0x3460f5)[_0xce98('0x20')](_0x2613b0);}};}function respondWithFilteredResult(_0x4d69a1,_0x3dd8c2){return function(_0x51744b){if(_0x51744b){var _0xd0ef6e=typeof _0x3dd8c2[_0xce98('0x21')]===_0xce98('0x22')&&typeof _0x3dd8c2['limit']===_0xce98('0x22');var _0x50a34e=_0x51744b[_0xce98('0x23')];var _0xe3f901=_0xd0ef6e?0x0:_0x3dd8c2['offset'];var _0x21c8cb=_0xd0ef6e?_0x51744b[_0xce98('0x23')]:_0x3dd8c2[_0xce98('0x21')]+_0x3dd8c2[_0xce98('0x24')];var _0x343114;if(_0x21c8cb>=_0x50a34e){_0x21c8cb=_0x50a34e;_0x343114=0xc8;}else{_0x343114=0xce;}_0x4d69a1['status'](_0x343114);return _0x4d69a1[_0xce98('0x25')](_0xce98('0x26'),_0xe3f901+'-'+_0x21c8cb+'/'+_0x50a34e)[_0xce98('0x20')](_0x51744b);}return null;};}function patchUpdates(_0x41cb74){return function(_0x42e599){try{jsonpatch['apply'](_0x42e599,_0x41cb74,!![]);}catch(_0x36dab5){return BPromise[_0xce98('0x27')](_0x36dab5);}return _0x42e599['save']();};}function saveUpdates(_0x5b832b,_0xa9c02e){return function(_0x2fa28e){if(_0x2fa28e){return _0x2fa28e[_0xce98('0x28')](_0x5b832b)[_0xce98('0x29')](function(_0x21b681){return _0x21b681;});}return null;};}function removeEntity(_0x4a1b6e,_0x849b1){return function(_0x4368f4){if(_0x4368f4){return _0x4368f4['destroy']()[_0xce98('0x29')](function(){var _0x53f583=_0x4368f4[_0xce98('0x2a')]({'plain':!![]});var _0x91c9ff=_0xce98('0x2b');return db[_0xce98('0x2c')][_0xce98('0x2d')]({'where':{'type':_0x91c9ff,'resourceId':_0x53f583['id']}})[_0xce98('0x29')](function(){return _0x4368f4;});})['then'](function(){_0x4a1b6e[_0xce98('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x50a3c5,_0x12f180){return function(_0x4f6590){if(!_0x4f6590){_0x50a3c5[_0xce98('0x1d')](0x194);}return _0x4f6590;};}function handleError(_0x38af73,_0x3fa994){_0x3fa994=_0x3fa994||0x1f4;return function(_0xb80887){logger[_0xce98('0x2e')](_0xb80887[_0xce98('0x2f')]);if(_0xb80887[_0xce98('0x30')]){delete _0xb80887[_0xce98('0x30')];}_0x38af73[_0xce98('0x1e')](_0x3fa994)[_0xce98('0x31')](_0xb80887);};}exports[_0xce98('0x32')]=function(_0x1af843,_0x3763cf){var _0x221663={},_0x262a28={},_0x2cf181={'count':0x0,'rows':[]};var _0x2559e9=_[_0xce98('0x33')](db['SmsQueue'][_0xce98('0x34')],function(_0x2c49e7){return{'name':_0x2c49e7['fieldName'],'type':_0x2c49e7[_0xce98('0x35')][_0xce98('0x36')]};});_0x262a28['model']=_['map'](_0x2559e9,'name');_0x262a28['query']=_[_0xce98('0x37')](_0x1af843[_0xce98('0x38')]);_0x262a28[_0xce98('0x39')]=_['intersection'](_0x262a28[_0xce98('0x3a')],_0x262a28[_0xce98('0x38')]);_0x221663[_0xce98('0x3b')]=_[_0xce98('0x3c')](_0x262a28[_0xce98('0x3a')],qs[_0xce98('0x3d')](_0x1af843['query'][_0xce98('0x3d')]));_0x221663[_0xce98('0x3b')]=_0x221663[_0xce98('0x3b')][_0xce98('0x3e')]?_0x221663[_0xce98('0x3b')]:_0x262a28['model'];if(!_0x1af843[_0xce98('0x38')][_0xce98('0x3f')]('nolimit')){_0x221663[_0xce98('0x24')]=qs[_0xce98('0x24')](_0x1af843[_0xce98('0x38')][_0xce98('0x24')]);_0x221663[_0xce98('0x21')]=qs['offset'](_0x1af843[_0xce98('0x38')]['offset']);}_0x221663[_0xce98('0x40')]=qs['sort'](_0x1af843['query'][_0xce98('0x41')]);_0x221663[_0xce98('0x42')]=qs[_0xce98('0x39')](_[_0xce98('0x43')](_0x1af843[_0xce98('0x38')],_0x262a28[_0xce98('0x39')]),_0x2559e9);if(_0x1af843['query'][_0xce98('0x44')]){_0x221663[_0xce98('0x42')]=_[_0xce98('0x45')](_0x221663[_0xce98('0x42')],{'$or':_[_0xce98('0x33')](_0x2559e9,function(_0x45d83d){if(_0x45d83d[_0xce98('0x35')]!==_0xce98('0x46')){var _0x77f4f8={};_0x77f4f8[_0x45d83d['name']]={'$like':'%'+_0x1af843[_0xce98('0x38')]['filter']+'%'};return _0x77f4f8;}})});}_0x221663=_[_0xce98('0x45')]({},_0x221663,_0x1af843[_0xce98('0x47')]);var _0x36d9e8={'where':_0x221663['where']};return db['SmsQueue']['count'](_0x36d9e8)[_0xce98('0x29')](function(_0x8fffd1){_0x2cf181[_0xce98('0x23')]=_0x8fffd1;if(_0x1af843['query'][_0xce98('0x48')]){_0x221663[_0xce98('0x49')]=[{'all':!![]}];}return db['SmsQueue']['findAll'](_0x221663);})[_0xce98('0x29')](function(_0x7569c8){_0x2cf181[_0xce98('0x4a')]=_0x7569c8;return _0x2cf181;})[_0xce98('0x29')](respondWithFilteredResult(_0x3763cf,_0x221663))[_0xce98('0x4b')](handleError(_0x3763cf,null));};exports[_0xce98('0x4c')]=function(_0x4db065,_0x3675f8){var _0x5149af={'raw':!![],'where':{'id':_0x4db065[_0xce98('0x4d')]['id']}},_0x6765a={};_0x6765a['model']=_[_0xce98('0x37')](db['SmsQueue'][_0xce98('0x34')]);_0x6765a[_0xce98('0x38')]=_[_0xce98('0x37')](_0x4db065[_0xce98('0x38')]);_0x6765a[_0xce98('0x39')]=_[_0xce98('0x3c')](_0x6765a[_0xce98('0x3a')],_0x6765a['query']);_0x5149af[_0xce98('0x3b')]=_['intersection'](_0x6765a[_0xce98('0x3a')],qs[_0xce98('0x3d')](_0x4db065[_0xce98('0x38')]['fields']));_0x5149af[_0xce98('0x3b')]=_0x5149af[_0xce98('0x3b')][_0xce98('0x3e')]?_0x5149af['attributes']:_0x6765a[_0xce98('0x3a')];if(_0x4db065[_0xce98('0x38')][_0xce98('0x48')]){_0x5149af[_0xce98('0x49')]=[{'all':!![]}];}_0x5149af=_[_0xce98('0x45')]({},_0x5149af,_0x4db065[_0xce98('0x47')]);return db[_0xce98('0x4e')][_0xce98('0x4f')](_0x5149af)['then'](handleEntityNotFound(_0x3675f8,null))[_0xce98('0x29')](respondWithResult(_0x3675f8,null))['catch'](handleError(_0x3675f8,null));};exports[_0xce98('0x50')]=function(_0x1fb9e1,_0x458382){return db[_0xce98('0x4e')][_0xce98('0x50')](_0x1fb9e1[_0xce98('0x51')],{})[_0xce98('0x29')](function(_0x26dce5){var _0x5cf8ba=_0x1fb9e1[_0xce98('0x52')][_0xce98('0x2a')]({'plain':!![]});if(!_0x5cf8ba)throw new Error(_0xce98('0x53'));if(_0x5cf8ba[_0xce98('0x54')]===_0xce98('0x52')){var _0x1c5bf0=_0x26dce5[_0xce98('0x2a')]({'plain':!![]});var _0x5e2704=_0xce98('0x2b');return db[_0xce98('0x55')]['find']({'where':{'name':_0x5e2704,'userProfileId':_0x5cf8ba['userProfileId']},'raw':!![]})[_0xce98('0x29')](function(_0x3b6572){if(_0x3b6572&&_0x3b6572['autoAssociation']===0x0){return db[_0xce98('0x2c')][_0xce98('0x50')]({'name':_0x1c5bf0[_0xce98('0x30')],'resourceId':_0x1c5bf0['id'],'type':_0x3b6572[_0xce98('0x30')],'sectionId':_0x3b6572['id']},{})['then'](function(){return _0x26dce5;});}else{return _0x26dce5;}})[_0xce98('0x4b')](function(_0x20f8eb){logger[_0xce98('0x2e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x20f8eb);throw _0x20f8eb;});}return _0x26dce5;})[_0xce98('0x29')](respondWithResult(_0x458382,0xc9))[_0xce98('0x4b')](handleError(_0x458382,null));};exports[_0xce98('0x28')]=function(_0x2d2820,_0x20bacc){if(_0x2d2820[_0xce98('0x51')]['id']){delete _0x2d2820[_0xce98('0x51')]['id'];}return db[_0xce98('0x4e')]['find']({'where':{'id':_0x2d2820[_0xce98('0x4d')]['id']}})[_0xce98('0x29')](handleEntityNotFound(_0x20bacc,null))[_0xce98('0x29')](saveUpdates(_0x2d2820[_0xce98('0x51')],null))[_0xce98('0x29')](respondWithResult(_0x20bacc,null))[_0xce98('0x4b')](handleError(_0x20bacc,null));};exports['destroy']=function(_0x2a8f79,_0x1e706b){return db['SmsQueue'][_0xce98('0x4f')]({'where':{'id':_0x2a8f79[_0xce98('0x4d')]['id']}})['then'](handleEntityNotFound(_0x1e706b,null))[_0xce98('0x29')](removeEntity(_0x1e706b,null))[_0xce98('0x4b')](handleError(_0x1e706b,null));};exports['describe']=function(_0x280911,_0x401af2){return db[_0xce98('0x4e')][_0xce98('0x56')]()[_0xce98('0x29')](respondWithResult(_0x401af2,null))[_0xce98('0x4b')](handleError(_0x401af2,null));};exports[_0xce98('0x57')]=function(_0x885d5a,_0x912e38,_0x16a431){var _0x1d2f88={'raw':!![],'where':{}},_0x5b3990={},_0x4682c4;return db['SmsQueue']['findOne']({'where':{'id':_0x885d5a[_0xce98('0x4d')]['id']}})[_0xce98('0x29')](handleEntityNotFound(_0x912e38,null))['then'](function(_0x9c3e1f){if(_0x9c3e1f){_0x4682c4=_0x9c3e1f[_0xce98('0x2a')]({'plain':!![]});_0x5b3990[_0xce98('0x3a')]=_[_0xce98('0x37')](db[_0xce98('0x58')][_0xce98('0x34')]);_0x5b3990[_0xce98('0x38')]=_[_0xce98('0x37')](_0x885d5a['query']);_0x5b3990[_0xce98('0x39')]=_[_0xce98('0x3c')](_0x5b3990[_0xce98('0x3a')],_0x5b3990['query']);_0x1d2f88[_0xce98('0x3b')]=_[_0xce98('0x3c')](_0x5b3990[_0xce98('0x3a')],qs['fields'](_0x885d5a['query']['fields']));_0x1d2f88['attributes']=_0x1d2f88['attributes'][_0xce98('0x3e')]?_0x1d2f88['attributes']:_0x5b3990[_0xce98('0x3a')];if(!_0x885d5a[_0xce98('0x38')][_0xce98('0x3f')](_0xce98('0x59'))){_0x1d2f88['limit']=qs['limit'](_0x885d5a['query'][_0xce98('0x24')]);_0x1d2f88[_0xce98('0x21')]=qs[_0xce98('0x21')](_0x885d5a[_0xce98('0x38')]['offset']);}_0x1d2f88[_0xce98('0x40')]=qs[_0xce98('0x41')](_0x885d5a[_0xce98('0x38')][_0xce98('0x41')]);_0x1d2f88[_0xce98('0x42')]=qs[_0xce98('0x39')](_[_0xce98('0x43')](_0x885d5a[_0xce98('0x38')],_0x5b3990[_0xce98('0x39')]));_0x1d2f88['where'][_0xce98('0x5a')]=_0x9c3e1f['id'];if(_0x885d5a[_0xce98('0x38')][_0xce98('0x44')]){_0x1d2f88[_0xce98('0x42')]=_['merge'](_0x1d2f88['where'],{'$or':_[_0xce98('0x33')](_0x1d2f88['attributes'],function(_0x483c80){var _0xf0fcd5={};_0xf0fcd5[_0x483c80]={'$like':'%'+_0x885d5a[_0xce98('0x38')]['filter']+'%'};return _0xf0fcd5;})});}_0x1d2f88=_['merge']({},_0x1d2f88,_0x885d5a[_0xce98('0x47')]);return db[_0xce98('0x58')]['findAll'](_0x1d2f88);}})[_0xce98('0x29')](function(_0x5b6d94){if(_0x5b6d94){return db[_0xce98('0x5b')]['findAndCountAll']({'where':{'id':_[_0xce98('0x33')](_0x5b6d94,'UserId'),'role':_0xce98('0x5c')},'attributes':['id',_0xce98('0x30'),_0xce98('0x5d'),_0xce98('0x5e'),_0xce98('0x5f')]});}})['then'](function(_0x386363){if(_0x386363){return{'count':_0x386363[_0xce98('0x23')],'rows':_['map'](_0x386363[_0xce98('0x4a')],function(_0x43a3cd){return{'membername':_0x43a3cd['name'],'UserId':_0x43a3cd['id'],'queue_name':_0x4682c4['name'],'SmsQueueId':_0x4682c4['id'],'interface':util[_0xce98('0x60')](_0xce98('0x61'),_0xce98('0x62'),_0x43a3cd[_0xce98('0x30')]),'penalty':0x0,'paused':_0x43a3cd[_0xce98('0x5d')],'createdAt':_0x43a3cd[_0xce98('0x5f')],'updatedAt':_0x43a3cd[_0xce98('0x5e')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xce98('0x29')](respondWithFilteredResult(_0x912e38,_0x1d2f88))[_0xce98('0x4b')](handleError(_0x912e38,null));};exports[_0xce98('0x63')]=function(_0x5b1d3d,_0xfe4107,_0x51f7d0){var _0x36c5b3={};var _0x70b1fb={};var _0x3deed0;var _0x40ffef;return db[_0xce98('0x4e')][_0xce98('0x64')]({'where':{'id':_0x5b1d3d[_0xce98('0x4d')]['id']}})[_0xce98('0x29')](handleEntityNotFound(_0xfe4107,null))[_0xce98('0x29')](function(_0x20bba6){if(_0x20bba6){_0x3deed0=_0x20bba6;_0x70b1fb[_0xce98('0x3a')]=_[_0xce98('0x37')](db[_0xce98('0x65')][_0xce98('0x34')]);_0x70b1fb['query']=_[_0xce98('0x37')](_0x5b1d3d['query']);_0x70b1fb['filters']=_[_0xce98('0x3c')](_0x70b1fb['model'],_0x70b1fb[_0xce98('0x38')]);_0x36c5b3[_0xce98('0x3b')]=_[_0xce98('0x3c')](_0x70b1fb[_0xce98('0x3a')],qs[_0xce98('0x3d')](_0x5b1d3d['query'][_0xce98('0x3d')]));_0x36c5b3['attributes']=_0x36c5b3[_0xce98('0x3b')]['length']?_0x36c5b3[_0xce98('0x3b')]:_0x70b1fb[_0xce98('0x3a')];_0x36c5b3[_0xce98('0x40')]=qs[_0xce98('0x41')](_0x5b1d3d[_0xce98('0x38')][_0xce98('0x41')]);_0x36c5b3[_0xce98('0x42')]=qs['filters'](_[_0xce98('0x43')](_0x5b1d3d[_0xce98('0x38')],_0x70b1fb[_0xce98('0x39')]));if(_0x5b1d3d[_0xce98('0x38')]['filter']){_0x36c5b3[_0xce98('0x42')]=_[_0xce98('0x45')](_0x36c5b3[_0xce98('0x42')],{'$or':_[_0xce98('0x33')](_0x36c5b3[_0xce98('0x3b')],function(_0x4f94b0){var _0x1d61b1={};_0x1d61b1[_0x4f94b0]={'$like':'%'+_0x5b1d3d[_0xce98('0x38')][_0xce98('0x44')]+'%'};return _0x1d61b1;})});}_0x36c5b3=_[_0xce98('0x45')]({},_0x36c5b3,_0x5b1d3d['options']);return _0x3deed0[_0xce98('0x63')](_0x36c5b3);}})['then'](function(_0x23ac25){if(_0x23ac25){_0x40ffef=_0x23ac25['length'];if(!_0x5b1d3d[_0xce98('0x38')][_0xce98('0x3f')](_0xce98('0x59'))){_0x36c5b3[_0xce98('0x24')]=qs[_0xce98('0x24')](_0x5b1d3d[_0xce98('0x38')]['limit']);_0x36c5b3[_0xce98('0x21')]=qs[_0xce98('0x21')](_0x5b1d3d['query'][_0xce98('0x21')]);}return _0x3deed0[_0xce98('0x63')](_0x36c5b3);}})[_0xce98('0x29')](function(_0x40c266){if(_0x40c266){return _0x40c266?{'count':_0x40ffef,'rows':_0x40c266}:null;}})[_0xce98('0x29')](respondWithResult(_0xfe4107,null))[_0xce98('0x4b')](handleError(_0xfe4107,null));};exports[_0xce98('0x66')]=function(_0x299ede,_0x1b4d48,_0x2d93c3){var _0x1c5104=_0x299ede[_0xce98('0x51')][_0xce98('0x67')];return db[_0xce98('0x65')][_0xce98('0x68')]({'where':{'id':_0x1c5104},'attributes':['id'],'include':[{'model':db[_0xce98('0x5b')],'as':_0xce98('0x69'),'attributes':['id',_0xce98('0x30'),_0xce98('0x6a'),_0xce98('0x6b'),'interface'],'raw':!![]}]})[_0xce98('0x29')](function(_0x1db888){if(_0x1db888){var _0x389e44=_[_0xce98('0x6c')](_0x1db888,function(_0x4c7f90){var _0x4de2b1=_0x4c7f90[_0xce98('0x2a')]({'plain':!![]});return _0x4de2b1[_0xce98('0x69')];});return db[_0xce98('0x4e')][_0xce98('0x4f')]({'where':{'id':_0x299ede[_0xce98('0x4d')]['id']}})[_0xce98('0x29')](function(_0x586370){return db[_0xce98('0x6d')]['transaction'](function(_0x563db0){return _0x586370[_0xce98('0x66')](_0x1c5104,{'transaction':_0x563db0})[_0xce98('0x29')](function(){return BPromise[_0xce98('0x6e')](_0x389e44,function(_0x456437){return db[_0xce98('0x58')]['findOrCreate']({'where':{'UserId':_0x456437['id'],'SmsQueueId':_0x299ede[_0xce98('0x4d')]['id']},'transaction':_0x563db0});});})[_0xce98('0x29')](function(){_0x389e44[_0xce98('0x6f')](function(_0x1c2932){socket[_0xce98('0x70')](_0xce98('0x71'),{'UserId':_0x1c2932['id'],'SmsQueueId':_0x586370['id']});});});});});}})[_0xce98('0x29')](respondWithStatusCode(_0x1b4d48,null))['catch'](handleError(_0x1b4d48,null));};exports['removeTeams']=function(_0x562024,_0x15d020,_0x10e4d6){return db[_0xce98('0x65')][_0xce98('0x68')]({'where':{'id':_0x562024[_0xce98('0x38')][_0xce98('0x67')]},'attributes':['id'],'include':[{'model':db[_0xce98('0x5b')],'as':_0xce98('0x69'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x15d020,null))['then'](function(_0x3db3d3){var _0x47ac43=_[_0xce98('0x33')](_0x3db3d3,'id');var _0x5b8cf5=[];var _0x279139=[];var _0x2040bf=squel[_0xce98('0x72')]();_0x2040bf[_0xce98('0x73')]('tq.TeamId')[_0xce98('0x74')](_0xce98('0x75'),'tq')['join'](_0xce98('0x76'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0xce98('0x42')]('SmsQueueId\x20=\x20?',_0x562024[_0xce98('0x4d')]['id']);for(var _0x4ea0ab=0x0;_0x4ea0ab<_0x3db3d3[_0xce98('0x3e')];_0x4ea0ab+=0x1){let _0x11a533=_0x3db3d3[_0x4ea0ab];for(var _0x24d8ea=0x0;_0x24d8ea<_0x11a533[_0xce98('0x69')][_0xce98('0x3e')];_0x24d8ea+=0x1){let _0x1a24ca=_0x11a533['Agents'][_0x24d8ea];var _0x47b09a=_0x2040bf[_0xce98('0x77')]();_0x47b09a['where'](_0xce98('0x78'),_0x1a24ca['id']);_0x279139[_0xce98('0x79')](db[_0xce98('0x6d')][_0xce98('0x38')](_0x47b09a[_0xce98('0x7a')](),{'type':db[_0xce98('0x6d')][_0xce98('0x7b')]['SELECT']})[_0xce98('0x29')](function(_0x279553){if(_0x279553[_0xce98('0x3e')]===0x1){return _0x1a24ca['id'];}else{var _0x386291=_[_0xce98('0x7c')](_[_0xce98('0x33')](_0x279553,_0xce98('0x7d')),function(_0x252895){return _['includes'](_0x47ac43,_0x252895);});if(_0x386291){return _0x1a24ca['id'];}}}));}}return BPromise['all'](_0x279139)[_0xce98('0x29')](function(_0x446164){_0x5b8cf5=_(_0x5b8cf5)['union'](_0x446164)[_0xce98('0x7e')]()[_0xce98('0x7f')]();return db[_0xce98('0x4e')][_0xce98('0x4f')]({'where':{'id':_0x562024[_0xce98('0x4d')]['id']}})[_0xce98('0x29')](function(_0x1e8bc6){return db[_0xce98('0x6d')]['transaction'](function(_0x3b2015){return _0x1e8bc6[_0xce98('0x80')](_0x562024[_0xce98('0x38')][_0xce98('0x67')],{'transaction':_0x3b2015})[_0xce98('0x29')](function(){if(!_['isEmpty'](_0x5b8cf5)){return _0x1e8bc6[_0xce98('0x81')](_0x5b8cf5,{'transaction':_0x3b2015});}})[_0xce98('0x29')](function(){_0x5b8cf5[_0xce98('0x6f')](function(_0x3fa2d6){socket['emit']('userSmsQueue:remove',{'UserId':_0x3fa2d6,'SmsQueueId':_0x1e8bc6['id']});});});});});});})[_0xce98('0x29')](respondWithStatusCode(_0x15d020,null))[_0xce98('0x4b')](handleError(_0x15d020,null));};exports['addAgents']=function(_0x1e79e0,_0x2a2223,_0x4035a9){return db[_0xce98('0x4e')][_0xce98('0x4f')]({'where':{'id':_0x1e79e0[_0xce98('0x4d')]['id']}})[_0xce98('0x29')](handleEntityNotFound(_0x2a2223,null))['then'](function(_0x14f226){if(_0x14f226){return _0x14f226[_0xce98('0x82')](_0x1e79e0['body'][_0xce98('0x67')],_[_0xce98('0x83')](_0x1e79e0['body'],[_0xce98('0x67'),'id'])||{})[_0xce98('0x84')](function(_0x28da46){for(var _0x1dde34=0x0;_0x1dde34<_0x1e79e0[_0xce98('0x51')][_0xce98('0x67')][_0xce98('0x3e')];_0x1dde34+=0x1){socket['emit'](_0xce98('0x71'),{'UserId':Number(_0x1e79e0['body'][_0xce98('0x67')][_0x1dde34]),'SmsQueueId':Number(_0x1e79e0[_0xce98('0x4d')]['id'])});}return _0x28da46;});}})['then'](respondWithResult(_0x2a2223,null))['catch'](handleError(_0x2a2223,null));};exports[_0xce98('0x81')]=function(_0x4e9f5b,_0x5e22f4,_0x1df2a6){return db['SmsQueue']['find']({'where':{'id':_0x4e9f5b['params']['id']}})[_0xce98('0x29')](handleEntityNotFound(_0x5e22f4,null))[_0xce98('0x29')](function(_0x73c98f){if(_0x73c98f){return _0x73c98f[_0xce98('0x81')](_0x4e9f5b[_0xce98('0x38')][_0xce98('0x67')])[_0xce98('0x29')](function(){if(_[_0xce98('0x85')](_0x4e9f5b[_0xce98('0x38')][_0xce98('0x67')])){for(var _0x57e8e1=0x0;_0x57e8e1<_0x4e9f5b[_0xce98('0x38')][_0xce98('0x67')][_0xce98('0x3e')];_0x57e8e1+=0x1){socket['emit'](_0xce98('0x86'),{'UserId':Number(_0x4e9f5b[_0xce98('0x38')][_0xce98('0x67')][_0x57e8e1]),'SmsQueueId':Number(_0x4e9f5b[_0xce98('0x4d')]['id'])});}}else{socket[_0xce98('0x70')](_0xce98('0x86'),{'UserId':Number(_0x4e9f5b[_0xce98('0x38')][_0xce98('0x67')]),'SmsQueueId':Number(_0x4e9f5b[_0xce98('0x4d')]['id'])});}});}})[_0xce98('0x29')](respondWithStatusCode(_0x5e22f4,null))['catch'](handleError(_0x5e22f4,null));};exports[_0xce98('0x87')]=function(_0x4b764a,_0x3476a9,_0x4f3098){var _0x53e784={};var _0x37d0f6={};var _0x1a1819;var _0x93c5d5;return db[_0xce98('0x4e')]['findOne']({'where':{'id':_0x4b764a[_0xce98('0x4d')]['id']}})[_0xce98('0x29')](handleEntityNotFound(_0x3476a9,null))[_0xce98('0x29')](function(_0x3b69a8){if(_0x3b69a8){_0x1a1819=_0x3b69a8;_0x37d0f6[_0xce98('0x3a')]=_['keys'](db[_0xce98('0x5b')][_0xce98('0x34')]);_0x37d0f6[_0xce98('0x38')]=_[_0xce98('0x37')](_0x4b764a[_0xce98('0x38')]);_0x37d0f6[_0xce98('0x39')]=_[_0xce98('0x3c')](_0x37d0f6[_0xce98('0x3a')],_0x37d0f6[_0xce98('0x38')]);_0x53e784[_0xce98('0x3b')]=_[_0xce98('0x3c')](_0x37d0f6['model'],qs['fields'](_0x4b764a[_0xce98('0x38')][_0xce98('0x3d')]));_0x53e784['attributes']=_0x53e784[_0xce98('0x3b')][_0xce98('0x3e')]?_0x53e784[_0xce98('0x3b')]:_0x37d0f6[_0xce98('0x3a')];_0x53e784[_0xce98('0x40')]=qs['sort'](_0x4b764a[_0xce98('0x38')][_0xce98('0x41')]);_0x53e784[_0xce98('0x42')]=qs['filters'](_[_0xce98('0x43')](_0x4b764a['query'],_0x37d0f6['filters']));if(_0x4b764a[_0xce98('0x38')]['filter']){_0x53e784[_0xce98('0x42')]=_['merge'](_0x53e784[_0xce98('0x42')],{'$or':_[_0xce98('0x33')](_0x53e784['attributes'],function(_0x2f3101){var _0x2e2f10={};_0x2e2f10[_0x2f3101]={'$like':'%'+_0x4b764a['query'][_0xce98('0x44')]+'%'};return _0x2e2f10;})});}_0x53e784=_[_0xce98('0x45')]({},_0x53e784,_0x4b764a[_0xce98('0x47')]);return _0x1a1819['getAgents'](_0x53e784);}})[_0xce98('0x29')](function(_0x35169c){if(_0x35169c){_0x93c5d5=_0x35169c['length'];if(!_0x4b764a[_0xce98('0x38')][_0xce98('0x3f')]('nolimit')){_0x53e784['limit']=qs['limit'](_0x4b764a['query'][_0xce98('0x24')]);_0x53e784[_0xce98('0x21')]=qs[_0xce98('0x21')](_0x4b764a[_0xce98('0x38')][_0xce98('0x21')]);}return _0x1a1819['getAgents'](_0x53e784);}})[_0xce98('0x29')](function(_0x1fd29d){if(_0x1fd29d){return _0x1fd29d?{'count':_0x93c5d5,'rows':_0x1fd29d}:null;}})[_0xce98('0x29')](respondWithResult(_0x3476a9,null))['catch'](handleError(_0x3476a9,null));};
\ No newline at end of file
+var _0xda04=['QueryTypes','every','TeamId','includes','all','union','compact','removeTeams','userSmsQueue:remove','addAgents','omit','spread','removeAgents','getAgents','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','get','SmsQueues','UserProfileResource','end','error','stack','name','send','index','map','SmsQueue','rawAttributes','type','key','model','keys','filters','query','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','intersection','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','body','describe','getMembers','findOne','UserSmsQueue','nolimit','order','SmsQueueId','User','findAndCountAll','UserId','agent','smsPause','createdAt','format','%s/%s','SIP','updatedAt','getTeams','Team','addTeams','ids','online','voicePause','flatMap','sequelize','findOrCreate','forEach','emit','userSmsQueue:save','Agents','select','field','tq.TeamId','from','team_has_sms_queues','join','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','toString'];(function(_0x145e6f,_0x15adbc){var _0x3de188=function(_0x8a0861){while(--_0x8a0861){_0x145e6f['push'](_0x145e6f['shift']());}};_0x3de188(++_0x15adbc);}(_0xda04,0x1be));var _0x4da0=function(_0x5f0f2c,_0x9817bf){_0x5f0f2c=_0x5f0f2c-0x0;var _0x104e69=_0xda04[_0x5f0f2c];return _0x104e69;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x4da0('0x0'));var jsonpatch=require(_0x4da0('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x4da0('0x2'));var Mustache=require(_0x4da0('0x3'));var util=require(_0x4da0('0x4'));var path=require(_0x4da0('0x5'));var sox=require(_0x4da0('0x6'));var csv=require(_0x4da0('0x7'));var ejs=require(_0x4da0('0x8'));var fs=require('fs');var fs_extra=require(_0x4da0('0x9'));var _=require(_0x4da0('0xa'));var squel=require(_0x4da0('0xb'));var crypto=require(_0x4da0('0xc'));var jsforce=require(_0x4da0('0xd'));var deskjs=require(_0x4da0('0xe'));var toCsv=require('to-csv');var querystring=require(_0x4da0('0xf'));var Papa=require(_0x4da0('0x10'));var Redis=require(_0x4da0('0x11'));var authService=require(_0x4da0('0x12'));var qs=require(_0x4da0('0x13'));var as=require(_0x4da0('0x14'));var hardwareService=require(_0x4da0('0x15'));var logger=require(_0x4da0('0x16'))('api');var utils=require(_0x4da0('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x4da0('0x18'));var db=require(_0x4da0('0x19'))['db'];config[_0x4da0('0x1a')]=_[_0x4da0('0x1b')](config[_0x4da0('0x1a')],{'host':_0x4da0('0x1c'),'port':0x18eb});var socket=require(_0x4da0('0x1d'))(new Redis(config[_0x4da0('0x1a')]));require('./smsQueue.socket')[_0x4da0('0x1e')](socket);function respondWithStatusCode(_0x2f007e,_0x43ad7f){_0x43ad7f=_0x43ad7f||0xcc;return function(_0x4d179d){if(_0x4d179d){return _0x2f007e[_0x4da0('0x1f')](_0x43ad7f);}return _0x2f007e['status'](_0x43ad7f)['end']();};}function respondWithResult(_0xc0e827,_0x525c02){_0x525c02=_0x525c02||0xc8;return function(_0x775ee2){if(_0x775ee2){return _0xc0e827[_0x4da0('0x20')](_0x525c02)[_0x4da0('0x21')](_0x775ee2);}};}function respondWithFilteredResult(_0x19bb53,_0x48a2d6){return function(_0x26853a){if(_0x26853a){var _0x3fce7f=typeof _0x48a2d6['offset']===_0x4da0('0x22')&&typeof _0x48a2d6[_0x4da0('0x23')]===_0x4da0('0x22');var _0x341c58=_0x26853a[_0x4da0('0x24')];var _0x514ca2=_0x3fce7f?0x0:_0x48a2d6['offset'];var _0x5749b5=_0x3fce7f?_0x26853a['count']:_0x48a2d6[_0x4da0('0x25')]+_0x48a2d6[_0x4da0('0x23')];var _0x3c7734;if(_0x5749b5>=_0x341c58){_0x5749b5=_0x341c58;_0x3c7734=0xc8;}else{_0x3c7734=0xce;}_0x19bb53[_0x4da0('0x20')](_0x3c7734);return _0x19bb53[_0x4da0('0x26')](_0x4da0('0x27'),_0x514ca2+'-'+_0x5749b5+'/'+_0x341c58)[_0x4da0('0x21')](_0x26853a);}return null;};}function patchUpdates(_0x178492){return function(_0x48d906){try{jsonpatch[_0x4da0('0x28')](_0x48d906,_0x178492,!![]);}catch(_0x5f4ccd){return BPromise[_0x4da0('0x29')](_0x5f4ccd);}return _0x48d906['save']();};}function saveUpdates(_0x1eff05,_0x34a18e){return function(_0x3302d3){if(_0x3302d3){return _0x3302d3[_0x4da0('0x2a')](_0x1eff05)[_0x4da0('0x2b')](function(_0x5200eb){return _0x5200eb;});}return null;};}function removeEntity(_0x4dbfd4,_0x113f91){return function(_0x4a995c){if(_0x4a995c){return _0x4a995c[_0x4da0('0x2c')]()[_0x4da0('0x2b')](function(){var _0x5238b7=_0x4a995c[_0x4da0('0x2d')]({'plain':!![]});var _0x445132=_0x4da0('0x2e');return db[_0x4da0('0x2f')][_0x4da0('0x2c')]({'where':{'type':_0x445132,'resourceId':_0x5238b7['id']}})[_0x4da0('0x2b')](function(){return _0x4a995c;});})[_0x4da0('0x2b')](function(){_0x4dbfd4[_0x4da0('0x20')](0xcc)[_0x4da0('0x30')]();});}};}function handleEntityNotFound(_0x2803d4,_0x5f18){return function(_0x5443a1){if(!_0x5443a1){_0x2803d4[_0x4da0('0x1f')](0x194);}return _0x5443a1;};}function handleError(_0x28d65e,_0x3132ce){_0x3132ce=_0x3132ce||0x1f4;return function(_0x2824f3){logger[_0x4da0('0x31')](_0x2824f3[_0x4da0('0x32')]);if(_0x2824f3[_0x4da0('0x33')]){delete _0x2824f3[_0x4da0('0x33')];}_0x28d65e[_0x4da0('0x20')](_0x3132ce)[_0x4da0('0x34')](_0x2824f3);};}exports[_0x4da0('0x35')]=function(_0x3740b5,_0x5d84c0){var _0x5a8d98={},_0x315a65={},_0x3fde4c={'count':0x0,'rows':[]};var _0x37641e=_[_0x4da0('0x36')](db[_0x4da0('0x37')][_0x4da0('0x38')],function(_0x3b6b66){return{'name':_0x3b6b66['fieldName'],'type':_0x3b6b66[_0x4da0('0x39')][_0x4da0('0x3a')]};});_0x315a65[_0x4da0('0x3b')]=_[_0x4da0('0x36')](_0x37641e,_0x4da0('0x33'));_0x315a65['query']=_[_0x4da0('0x3c')](_0x3740b5['query']);_0x315a65[_0x4da0('0x3d')]=_['intersection'](_0x315a65[_0x4da0('0x3b')],_0x315a65[_0x4da0('0x3e')]);_0x5a8d98[_0x4da0('0x3f')]=_['intersection'](_0x315a65[_0x4da0('0x3b')],qs[_0x4da0('0x40')](_0x3740b5[_0x4da0('0x3e')][_0x4da0('0x40')]));_0x5a8d98[_0x4da0('0x3f')]=_0x5a8d98['attributes'][_0x4da0('0x41')]?_0x5a8d98[_0x4da0('0x3f')]:_0x315a65[_0x4da0('0x3b')];if(!_0x3740b5[_0x4da0('0x3e')][_0x4da0('0x42')]('nolimit')){_0x5a8d98[_0x4da0('0x23')]=qs[_0x4da0('0x23')](_0x3740b5[_0x4da0('0x3e')][_0x4da0('0x23')]);_0x5a8d98[_0x4da0('0x25')]=qs[_0x4da0('0x25')](_0x3740b5[_0x4da0('0x3e')][_0x4da0('0x25')]);}_0x5a8d98['order']=qs[_0x4da0('0x43')](_0x3740b5[_0x4da0('0x3e')]['sort']);_0x5a8d98[_0x4da0('0x44')]=qs[_0x4da0('0x3d')](_[_0x4da0('0x45')](_0x3740b5['query'],_0x315a65[_0x4da0('0x3d')]),_0x37641e);if(_0x3740b5[_0x4da0('0x3e')][_0x4da0('0x46')]){_0x5a8d98[_0x4da0('0x44')]=_[_0x4da0('0x47')](_0x5a8d98[_0x4da0('0x44')],{'$or':_[_0x4da0('0x36')](_0x37641e,function(_0x4deb56){if(_0x4deb56[_0x4da0('0x39')]!==_0x4da0('0x48')){var _0x115dc7={};_0x115dc7[_0x4deb56[_0x4da0('0x33')]]={'$like':'%'+_0x3740b5['query'][_0x4da0('0x46')]+'%'};return _0x115dc7;}})});}_0x5a8d98=_[_0x4da0('0x47')]({},_0x5a8d98,_0x3740b5[_0x4da0('0x49')]);var _0x1d5e60={'where':_0x5a8d98[_0x4da0('0x44')]};return db[_0x4da0('0x37')][_0x4da0('0x24')](_0x1d5e60)['then'](function(_0xa4c428){_0x3fde4c[_0x4da0('0x24')]=_0xa4c428;if(_0x3740b5[_0x4da0('0x3e')][_0x4da0('0x4a')]){_0x5a8d98[_0x4da0('0x4b')]=[{'all':!![]}];}return db[_0x4da0('0x37')][_0x4da0('0x4c')](_0x5a8d98);})['then'](function(_0x1fbc79){_0x3fde4c[_0x4da0('0x4d')]=_0x1fbc79;return _0x3fde4c;})[_0x4da0('0x2b')](respondWithFilteredResult(_0x5d84c0,_0x5a8d98))[_0x4da0('0x4e')](handleError(_0x5d84c0,null));};exports[_0x4da0('0x4f')]=function(_0x340440,_0x1df9a6){var _0x5aa695={'raw':!![],'where':{'id':_0x340440[_0x4da0('0x50')]['id']}},_0xa2e099={};_0xa2e099[_0x4da0('0x3b')]=_[_0x4da0('0x3c')](db['SmsQueue'][_0x4da0('0x38')]);_0xa2e099[_0x4da0('0x3e')]=_[_0x4da0('0x3c')](_0x340440[_0x4da0('0x3e')]);_0xa2e099[_0x4da0('0x3d')]=_[_0x4da0('0x51')](_0xa2e099['model'],_0xa2e099[_0x4da0('0x3e')]);_0x5aa695[_0x4da0('0x3f')]=_[_0x4da0('0x51')](_0xa2e099[_0x4da0('0x3b')],qs[_0x4da0('0x40')](_0x340440['query'][_0x4da0('0x40')]));_0x5aa695[_0x4da0('0x3f')]=_0x5aa695[_0x4da0('0x3f')]['length']?_0x5aa695[_0x4da0('0x3f')]:_0xa2e099[_0x4da0('0x3b')];if(_0x340440[_0x4da0('0x3e')][_0x4da0('0x4a')]){_0x5aa695[_0x4da0('0x4b')]=[{'all':!![]}];}_0x5aa695=_[_0x4da0('0x47')]({},_0x5aa695,_0x340440['options']);return db['SmsQueue'][_0x4da0('0x52')](_0x5aa695)['then'](handleEntityNotFound(_0x1df9a6,null))[_0x4da0('0x2b')](respondWithResult(_0x1df9a6,null))['catch'](handleError(_0x1df9a6,null));};exports[_0x4da0('0x53')]=function(_0x353744,_0x32dda9){return db[_0x4da0('0x37')]['create'](_0x353744['body'],{})[_0x4da0('0x2b')](function(_0x2451e1){var _0x540e2d=_0x353744[_0x4da0('0x54')][_0x4da0('0x2d')]({'plain':!![]});if(!_0x540e2d)throw new Error(_0x4da0('0x55'));if(_0x540e2d['role']===_0x4da0('0x54')){var _0x402d44=_0x2451e1['get']({'plain':!![]});var _0x560ed5=_0x4da0('0x2e');return db[_0x4da0('0x56')]['find']({'where':{'name':_0x560ed5,'userProfileId':_0x540e2d[_0x4da0('0x57')]},'raw':!![]})[_0x4da0('0x2b')](function(_0xfbe185){if(_0xfbe185&&_0xfbe185[_0x4da0('0x58')]===0x0){return db['UserProfileResource']['create']({'name':_0x402d44[_0x4da0('0x33')],'resourceId':_0x402d44['id'],'type':_0xfbe185['name'],'sectionId':_0xfbe185['id']},{})[_0x4da0('0x2b')](function(){return _0x2451e1;});}else{return _0x2451e1;}})[_0x4da0('0x4e')](function(_0x5e80b0){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5e80b0);throw _0x5e80b0;});}return _0x2451e1;})[_0x4da0('0x2b')](respondWithResult(_0x32dda9,0xc9))[_0x4da0('0x4e')](handleError(_0x32dda9,null));};exports[_0x4da0('0x2a')]=function(_0x34961f,_0x5fddc7){if(_0x34961f[_0x4da0('0x59')]['id']){delete _0x34961f[_0x4da0('0x59')]['id'];}return db[_0x4da0('0x37')][_0x4da0('0x52')]({'where':{'id':_0x34961f[_0x4da0('0x50')]['id']}})[_0x4da0('0x2b')](handleEntityNotFound(_0x5fddc7,null))['then'](saveUpdates(_0x34961f['body'],null))[_0x4da0('0x2b')](respondWithResult(_0x5fddc7,null))[_0x4da0('0x4e')](handleError(_0x5fddc7,null));};exports[_0x4da0('0x2c')]=function(_0x323395,_0x35be7f){return db[_0x4da0('0x37')]['find']({'where':{'id':_0x323395[_0x4da0('0x50')]['id']}})['then'](handleEntityNotFound(_0x35be7f,null))[_0x4da0('0x2b')](removeEntity(_0x35be7f,null))[_0x4da0('0x4e')](handleError(_0x35be7f,null));};exports[_0x4da0('0x5a')]=function(_0x4b01ef,_0x2ccb15){return db[_0x4da0('0x37')][_0x4da0('0x5a')]()[_0x4da0('0x2b')](respondWithResult(_0x2ccb15,null))[_0x4da0('0x4e')](handleError(_0x2ccb15,null));};exports[_0x4da0('0x5b')]=function(_0x28aab0,_0x5438b0,_0x143576){var _0x60f2b9={'raw':!![],'where':{}},_0x3d21f8={},_0x4cd41f;return db['SmsQueue'][_0x4da0('0x5c')]({'where':{'id':_0x28aab0[_0x4da0('0x50')]['id']}})[_0x4da0('0x2b')](handleEntityNotFound(_0x5438b0,null))[_0x4da0('0x2b')](function(_0x309ecf){if(_0x309ecf){_0x4cd41f=_0x309ecf[_0x4da0('0x2d')]({'plain':!![]});_0x3d21f8['model']=_[_0x4da0('0x3c')](db[_0x4da0('0x5d')][_0x4da0('0x38')]);_0x3d21f8['query']=_[_0x4da0('0x3c')](_0x28aab0[_0x4da0('0x3e')]);_0x3d21f8[_0x4da0('0x3d')]=_['intersection'](_0x3d21f8['model'],_0x3d21f8[_0x4da0('0x3e')]);_0x60f2b9[_0x4da0('0x3f')]=_['intersection'](_0x3d21f8[_0x4da0('0x3b')],qs[_0x4da0('0x40')](_0x28aab0[_0x4da0('0x3e')][_0x4da0('0x40')]));_0x60f2b9[_0x4da0('0x3f')]=_0x60f2b9[_0x4da0('0x3f')][_0x4da0('0x41')]?_0x60f2b9['attributes']:_0x3d21f8[_0x4da0('0x3b')];if(!_0x28aab0[_0x4da0('0x3e')][_0x4da0('0x42')](_0x4da0('0x5e'))){_0x60f2b9[_0x4da0('0x23')]=qs[_0x4da0('0x23')](_0x28aab0[_0x4da0('0x3e')][_0x4da0('0x23')]);_0x60f2b9[_0x4da0('0x25')]=qs['offset'](_0x28aab0['query'][_0x4da0('0x25')]);}_0x60f2b9[_0x4da0('0x5f')]=qs[_0x4da0('0x43')](_0x28aab0[_0x4da0('0x3e')][_0x4da0('0x43')]);_0x60f2b9[_0x4da0('0x44')]=qs['filters'](_[_0x4da0('0x45')](_0x28aab0['query'],_0x3d21f8['filters']));_0x60f2b9[_0x4da0('0x44')][_0x4da0('0x60')]=_0x309ecf['id'];if(_0x28aab0['query'][_0x4da0('0x46')]){_0x60f2b9[_0x4da0('0x44')]=_['merge'](_0x60f2b9[_0x4da0('0x44')],{'$or':_[_0x4da0('0x36')](_0x60f2b9[_0x4da0('0x3f')],function(_0x3766d9){var _0x29d578={};_0x29d578[_0x3766d9]={'$like':'%'+_0x28aab0['query'][_0x4da0('0x46')]+'%'};return _0x29d578;})});}_0x60f2b9=_['merge']({},_0x60f2b9,_0x28aab0[_0x4da0('0x49')]);return db[_0x4da0('0x5d')][_0x4da0('0x4c')](_0x60f2b9);}})[_0x4da0('0x2b')](function(_0x27d871){if(_0x27d871){return db[_0x4da0('0x61')][_0x4da0('0x62')]({'where':{'id':_[_0x4da0('0x36')](_0x27d871,_0x4da0('0x63')),'role':_0x4da0('0x64')},'attributes':['id',_0x4da0('0x33'),_0x4da0('0x65'),'updatedAt',_0x4da0('0x66')]});}})[_0x4da0('0x2b')](function(_0x4d3d24){if(_0x4d3d24){return{'count':_0x4d3d24['count'],'rows':_['map'](_0x4d3d24[_0x4da0('0x4d')],function(_0x50c79b){return{'membername':_0x50c79b[_0x4da0('0x33')],'UserId':_0x50c79b['id'],'queue_name':_0x4cd41f[_0x4da0('0x33')],'SmsQueueId':_0x4cd41f['id'],'interface':util[_0x4da0('0x67')](_0x4da0('0x68'),_0x4da0('0x69'),_0x50c79b[_0x4da0('0x33')]),'penalty':0x0,'paused':_0x50c79b[_0x4da0('0x65')],'createdAt':_0x50c79b[_0x4da0('0x66')],'updatedAt':_0x50c79b[_0x4da0('0x6a')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x4da0('0x2b')](respondWithFilteredResult(_0x5438b0,_0x60f2b9))[_0x4da0('0x4e')](handleError(_0x5438b0,null));};exports[_0x4da0('0x6b')]=function(_0x22dca6,_0x4eeb35,_0x43015e){var _0x26251d={};var _0x4393b9={};var _0x368a22;var _0x296d7f;return db['SmsQueue'][_0x4da0('0x5c')]({'where':{'id':_0x22dca6[_0x4da0('0x50')]['id']}})['then'](handleEntityNotFound(_0x4eeb35,null))[_0x4da0('0x2b')](function(_0x417d84){if(_0x417d84){_0x368a22=_0x417d84;_0x4393b9['model']=_[_0x4da0('0x3c')](db[_0x4da0('0x6c')][_0x4da0('0x38')]);_0x4393b9[_0x4da0('0x3e')]=_[_0x4da0('0x3c')](_0x22dca6[_0x4da0('0x3e')]);_0x4393b9[_0x4da0('0x3d')]=_[_0x4da0('0x51')](_0x4393b9[_0x4da0('0x3b')],_0x4393b9[_0x4da0('0x3e')]);_0x26251d[_0x4da0('0x3f')]=_[_0x4da0('0x51')](_0x4393b9[_0x4da0('0x3b')],qs['fields'](_0x22dca6['query']['fields']));_0x26251d['attributes']=_0x26251d[_0x4da0('0x3f')][_0x4da0('0x41')]?_0x26251d['attributes']:_0x4393b9[_0x4da0('0x3b')];_0x26251d[_0x4da0('0x5f')]=qs['sort'](_0x22dca6[_0x4da0('0x3e')][_0x4da0('0x43')]);_0x26251d[_0x4da0('0x44')]=qs[_0x4da0('0x3d')](_[_0x4da0('0x45')](_0x22dca6[_0x4da0('0x3e')],_0x4393b9[_0x4da0('0x3d')]));if(_0x22dca6[_0x4da0('0x3e')][_0x4da0('0x46')]){_0x26251d[_0x4da0('0x44')]=_[_0x4da0('0x47')](_0x26251d[_0x4da0('0x44')],{'$or':_[_0x4da0('0x36')](_0x26251d['attributes'],function(_0x28338b){var _0x288950={};_0x288950[_0x28338b]={'$like':'%'+_0x22dca6[_0x4da0('0x3e')][_0x4da0('0x46')]+'%'};return _0x288950;})});}_0x26251d=_['merge']({},_0x26251d,_0x22dca6[_0x4da0('0x49')]);return _0x368a22[_0x4da0('0x6b')](_0x26251d);}})[_0x4da0('0x2b')](function(_0x405347){if(_0x405347){_0x296d7f=_0x405347[_0x4da0('0x41')];if(!_0x22dca6[_0x4da0('0x3e')][_0x4da0('0x42')](_0x4da0('0x5e'))){_0x26251d[_0x4da0('0x23')]=qs['limit'](_0x22dca6[_0x4da0('0x3e')]['limit']);_0x26251d['offset']=qs[_0x4da0('0x25')](_0x22dca6[_0x4da0('0x3e')][_0x4da0('0x25')]);}return _0x368a22['getTeams'](_0x26251d);}})[_0x4da0('0x2b')](function(_0x4c9678){if(_0x4c9678){return _0x4c9678?{'count':_0x296d7f,'rows':_0x4c9678}:null;}})[_0x4da0('0x2b')](respondWithResult(_0x4eeb35,null))[_0x4da0('0x4e')](handleError(_0x4eeb35,null));};exports[_0x4da0('0x6d')]=function(_0x20d677,_0x5c2c9e,_0x39ad6b){var _0x1e5a69=_0x20d677[_0x4da0('0x59')][_0x4da0('0x6e')];return db['Team']['findAll']({'where':{'id':_0x1e5a69},'attributes':['id'],'include':[{'model':db[_0x4da0('0x61')],'as':'Agents','attributes':['id',_0x4da0('0x33'),_0x4da0('0x6f'),_0x4da0('0x70'),'interface'],'raw':!![]}]})[_0x4da0('0x2b')](function(_0x3912ea){if(_0x3912ea){var _0x2ca2c7=_[_0x4da0('0x71')](_0x3912ea,function(_0x1dbed2){var _0x3f6b48=_0x1dbed2[_0x4da0('0x2d')]({'plain':!![]});return _0x3f6b48['Agents'];});return db[_0x4da0('0x37')][_0x4da0('0x52')]({'where':{'id':_0x20d677[_0x4da0('0x50')]['id']}})[_0x4da0('0x2b')](function(_0x51650c){return db[_0x4da0('0x72')]['transaction'](function(_0x3b809a){return _0x51650c[_0x4da0('0x6d')](_0x1e5a69,{'transaction':_0x3b809a})['then'](function(){return BPromise['each'](_0x2ca2c7,function(_0x463af2){return db['UserSmsQueue'][_0x4da0('0x73')]({'where':{'UserId':_0x463af2['id'],'SmsQueueId':_0x20d677['params']['id']},'transaction':_0x3b809a});});})[_0x4da0('0x2b')](function(){_0x2ca2c7[_0x4da0('0x74')](function(_0x426b1f){socket[_0x4da0('0x75')](_0x4da0('0x76'),{'UserId':_0x426b1f['id'],'SmsQueueId':_0x51650c['id']});});});});});}})['then'](respondWithStatusCode(_0x5c2c9e,null))[_0x4da0('0x4e')](handleError(_0x5c2c9e,null));};exports['removeTeams']=function(_0x44d069,_0x7e617a,_0x17f7da){return db[_0x4da0('0x6c')][_0x4da0('0x4c')]({'where':{'id':_0x44d069[_0x4da0('0x3e')][_0x4da0('0x6e')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x4da0('0x77'),'attributes':['id'],'raw':!![]}]})[_0x4da0('0x2b')](handleEntityNotFound(_0x7e617a,null))[_0x4da0('0x2b')](function(_0x59cdcd){var _0x5c17fb=_['map'](_0x59cdcd,'id');var _0xca0182=[];var _0x290f1b=[];var _0xb255d7=squel[_0x4da0('0x78')]();_0xb255d7[_0x4da0('0x79')](_0x4da0('0x7a'))[_0x4da0('0x7b')](_0x4da0('0x7c'),'tq')[_0x4da0('0x7d')]('user_has_teams','ut',_0x4da0('0x7e'))['where']('SmsQueueId\x20=\x20?',_0x44d069[_0x4da0('0x50')]['id']);for(var _0x506dd9=0x0;_0x506dd9<_0x59cdcd[_0x4da0('0x41')];_0x506dd9+=0x1){let _0x28583d=_0x59cdcd[_0x506dd9];for(var _0x572234=0x0;_0x572234<_0x28583d['Agents'][_0x4da0('0x41')];_0x572234+=0x1){let _0x2c4d6b=_0x28583d[_0x4da0('0x77')][_0x572234];var _0x3bf9aa=_0xb255d7[_0x4da0('0x7f')]();_0x3bf9aa[_0x4da0('0x44')](_0x4da0('0x80'),_0x2c4d6b['id']);_0x290f1b['push'](db[_0x4da0('0x72')][_0x4da0('0x3e')](_0x3bf9aa[_0x4da0('0x81')](),{'type':db['sequelize'][_0x4da0('0x82')]['SELECT']})[_0x4da0('0x2b')](function(_0x23c547){if(_0x23c547[_0x4da0('0x41')]===0x1){return _0x2c4d6b['id'];}else{var _0x25fd4c=_[_0x4da0('0x83')](_[_0x4da0('0x36')](_0x23c547,_0x4da0('0x84')),function(_0x59c283){return _[_0x4da0('0x85')](_0x5c17fb,_0x59c283);});if(_0x25fd4c){return _0x2c4d6b['id'];}}}));}}return BPromise[_0x4da0('0x86')](_0x290f1b)['then'](function(_0x32d4e9){_0xca0182=_(_0xca0182)[_0x4da0('0x87')](_0x32d4e9)[_0x4da0('0x88')]()['value']();return db['SmsQueue']['find']({'where':{'id':_0x44d069['params']['id']}})[_0x4da0('0x2b')](function(_0x4c7cbb){return db[_0x4da0('0x72')]['transaction'](function(_0x14d90c){return _0x4c7cbb[_0x4da0('0x89')](_0x44d069[_0x4da0('0x3e')][_0x4da0('0x6e')],{'transaction':_0x14d90c})[_0x4da0('0x2b')](function(){if(!_['isEmpty'](_0xca0182)){return _0x4c7cbb['removeAgents'](_0xca0182,{'transaction':_0x14d90c});}})[_0x4da0('0x2b')](function(){_0xca0182[_0x4da0('0x74')](function(_0x23cd0a){socket['emit'](_0x4da0('0x8a'),{'UserId':_0x23cd0a,'SmsQueueId':_0x4c7cbb['id']});});});});});});})[_0x4da0('0x2b')](respondWithStatusCode(_0x7e617a,null))[_0x4da0('0x4e')](handleError(_0x7e617a,null));};exports[_0x4da0('0x8b')]=function(_0x5812ff,_0x4f22ed,_0xd0ba65){return db[_0x4da0('0x37')][_0x4da0('0x52')]({'where':{'id':_0x5812ff['params']['id']}})[_0x4da0('0x2b')](handleEntityNotFound(_0x4f22ed,null))[_0x4da0('0x2b')](function(_0x5c61d4){if(_0x5c61d4){return _0x5c61d4[_0x4da0('0x8b')](_0x5812ff[_0x4da0('0x59')][_0x4da0('0x6e')],_[_0x4da0('0x8c')](_0x5812ff[_0x4da0('0x59')],[_0x4da0('0x6e'),'id'])||{})[_0x4da0('0x8d')](function(_0x5c8431){for(var _0x420b13=0x0;_0x420b13<_0x5812ff[_0x4da0('0x59')][_0x4da0('0x6e')][_0x4da0('0x41')];_0x420b13+=0x1){socket[_0x4da0('0x75')](_0x4da0('0x76'),{'UserId':Number(_0x5812ff['body'][_0x4da0('0x6e')][_0x420b13]),'SmsQueueId':Number(_0x5812ff['params']['id'])});}return _0x5c8431;});}})['then'](respondWithResult(_0x4f22ed,null))[_0x4da0('0x4e')](handleError(_0x4f22ed,null));};exports[_0x4da0('0x8e')]=function(_0x400ac8,_0x16657a,_0x3fb7bd){return db[_0x4da0('0x37')][_0x4da0('0x52')]({'where':{'id':_0x400ac8[_0x4da0('0x50')]['id']}})[_0x4da0('0x2b')](handleEntityNotFound(_0x16657a,null))[_0x4da0('0x2b')](function(_0x48931a){if(_0x48931a){return _0x48931a[_0x4da0('0x8e')](_0x400ac8['query'][_0x4da0('0x6e')])[_0x4da0('0x2b')](function(){if(_['isArray'](_0x400ac8[_0x4da0('0x3e')][_0x4da0('0x6e')])){for(var _0x1ccc20=0x0;_0x1ccc20<_0x400ac8['query'][_0x4da0('0x6e')][_0x4da0('0x41')];_0x1ccc20+=0x1){socket[_0x4da0('0x75')](_0x4da0('0x8a'),{'UserId':Number(_0x400ac8['query'][_0x4da0('0x6e')][_0x1ccc20]),'SmsQueueId':Number(_0x400ac8[_0x4da0('0x50')]['id'])});}}else{socket['emit'](_0x4da0('0x8a'),{'UserId':Number(_0x400ac8[_0x4da0('0x3e')][_0x4da0('0x6e')]),'SmsQueueId':Number(_0x400ac8['params']['id'])});}});}})[_0x4da0('0x2b')](respondWithStatusCode(_0x16657a,null))[_0x4da0('0x4e')](handleError(_0x16657a,null));};exports[_0x4da0('0x8f')]=function(_0x16f6b5,_0xc281fa,_0x5aa352){var _0x5472a9={};var _0x3bcc22={};var _0x5dbbfd;var _0x479ff7;return db['SmsQueue'][_0x4da0('0x5c')]({'where':{'id':_0x16f6b5['params']['id']}})[_0x4da0('0x2b')](handleEntityNotFound(_0xc281fa,null))[_0x4da0('0x2b')](function(_0x11268d){if(_0x11268d){_0x5dbbfd=_0x11268d;_0x3bcc22[_0x4da0('0x3b')]=_[_0x4da0('0x3c')](db['User']['rawAttributes']);_0x3bcc22[_0x4da0('0x3e')]=_[_0x4da0('0x3c')](_0x16f6b5[_0x4da0('0x3e')]);_0x3bcc22[_0x4da0('0x3d')]=_[_0x4da0('0x51')](_0x3bcc22[_0x4da0('0x3b')],_0x3bcc22['query']);_0x5472a9[_0x4da0('0x3f')]=_['intersection'](_0x3bcc22[_0x4da0('0x3b')],qs[_0x4da0('0x40')](_0x16f6b5['query']['fields']));_0x5472a9[_0x4da0('0x3f')]=_0x5472a9[_0x4da0('0x3f')][_0x4da0('0x41')]?_0x5472a9[_0x4da0('0x3f')]:_0x3bcc22[_0x4da0('0x3b')];_0x5472a9[_0x4da0('0x5f')]=qs[_0x4da0('0x43')](_0x16f6b5['query']['sort']);_0x5472a9[_0x4da0('0x44')]=qs[_0x4da0('0x3d')](_['pick'](_0x16f6b5[_0x4da0('0x3e')],_0x3bcc22['filters']));if(_0x16f6b5[_0x4da0('0x3e')][_0x4da0('0x46')]){_0x5472a9['where']=_[_0x4da0('0x47')](_0x5472a9[_0x4da0('0x44')],{'$or':_[_0x4da0('0x36')](_0x5472a9['attributes'],function(_0x3d6427){var _0x312e47={};_0x312e47[_0x3d6427]={'$like':'%'+_0x16f6b5[_0x4da0('0x3e')][_0x4da0('0x46')]+'%'};return _0x312e47;})});}_0x5472a9=_['merge']({},_0x5472a9,_0x16f6b5[_0x4da0('0x49')]);return _0x5dbbfd[_0x4da0('0x8f')](_0x5472a9);}})[_0x4da0('0x2b')](function(_0xa51f33){if(_0xa51f33){_0x479ff7=_0xa51f33['length'];if(!_0x16f6b5[_0x4da0('0x3e')][_0x4da0('0x42')](_0x4da0('0x5e'))){_0x5472a9['limit']=qs[_0x4da0('0x23')](_0x16f6b5[_0x4da0('0x3e')][_0x4da0('0x23')]);_0x5472a9[_0x4da0('0x25')]=qs[_0x4da0('0x25')](_0x16f6b5[_0x4da0('0x3e')][_0x4da0('0x25')]);}return _0x5dbbfd[_0x4da0('0x8f')](_0x5472a9);}})[_0x4da0('0x2b')](function(_0x56c75e){if(_0x56c75e){return _0x56c75e?{'count':_0x479ff7,'rows':_0x56c75e}:null;}})['then'](respondWithResult(_0xc281fa,null))['catch'](handleError(_0xc281fa,null));};
\ No newline at end of file
index c22d91f..91da516 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c90=['exports','../../mysqldb','SmsQueue','setMaxListeners','save','remove','emit','hasOwnProperty','hook'];(function(_0x5a8aa3,_0x2294d5){var _0x5d0458=function(_0x62d096){while(--_0x62d096){_0x5a8aa3['push'](_0x5a8aa3['shift']());}};_0x5d0458(++_0x2294d5);}(_0x0c90,0x13c));var _0x00c9=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x0c90[_0x20a584];return _0x4b41a8;};'use strict';var EventEmitter=require('events');var SmsQueue=require(_0x00c9('0x0'))['db'][_0x00c9('0x1')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x00c9('0x2')](0x0);var events={'afterCreate':_0x00c9('0x3'),'afterUpdate':'update','afterDestroy':_0x00c9('0x4')};function emitEvent(_0x1c1edf){return function(_0x2fc96c,_0x43d543,_0x2ac685){SmsQueueEvents[_0x00c9('0x5')](_0x1c1edf+':'+_0x2fc96c['id'],_0x2fc96c);SmsQueueEvents[_0x00c9('0x5')](_0x1c1edf,_0x2fc96c);_0x2ac685(null);};}for(var e in events){if(events[_0x00c9('0x6')](e)){var event=events[e];SmsQueue[_0x00c9('0x7')](e,emitEvent(event));}}module[_0x00c9('0x8')]=SmsQueueEvents;
\ No newline at end of file
+var _0x356c=['events','../../mysqldb','SmsQueue','save','remove','emit','hasOwnProperty'];(function(_0x58329b,_0x371b13){var _0x2d30cf=function(_0x59942e){while(--_0x59942e){_0x58329b['push'](_0x58329b['shift']());}};_0x2d30cf(++_0x371b13);}(_0x356c,0x173));var _0xc356=function(_0x5dc7c9,_0x2b921a){_0x5dc7c9=_0x5dc7c9-0x0;var _0x109278=_0x356c[_0x5dc7c9];return _0x109278;};'use strict';var EventEmitter=require(_0xc356('0x0'));var SmsQueue=require(_0xc356('0x1'))['db'][_0xc356('0x2')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xc356('0x3'),'afterUpdate':'update','afterDestroy':_0xc356('0x4')};function emitEvent(_0x38fb70){return function(_0x2beb48,_0x2e755b,_0x344751){SmsQueueEvents[_0xc356('0x5')](_0x38fb70+':'+_0x2beb48['id'],_0x2beb48);SmsQueueEvents[_0xc356('0x5')](_0x38fb70,_0x2beb48);_0x344751(null);};}for(var e in events){if(events[_0xc356('0x6')](e)){var event=events[e];SmsQueue['hook'](e,emitEvent(event));}}module['exports']=SmsQueueEvents;
\ No newline at end of file
index 44ac9d7..2925402 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1095=['request-promise','path','rimraf','../../config/environment','./smsQueue.attributes','exports','SmsQueue','sms_queues','lodash','../../config/logger','moment'];(function(_0x4d1d2c,_0x44f4d8){var _0x2c4cb9=function(_0x4b0c5f){while(--_0x4b0c5f){_0x4d1d2c['push'](_0x4d1d2c['shift']());}};_0x2c4cb9(++_0x44f4d8);}(_0x1095,0x1e1));var _0x5109=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x1095[_0xbca1b1];return _0x4e1686;};'use strict';var _=require(_0x5109('0x0'));var util=require('util');var logger=require(_0x5109('0x1'))('api');var moment=require(_0x5109('0x2'));var BPromise=require('bluebird');var rp=require(_0x5109('0x3'));var fs=require('fs');var path=require(_0x5109('0x4'));var rimraf=require(_0x5109('0x5'));var config=require(_0x5109('0x6'));var attributes=require(_0x5109('0x7'));module[_0x5109('0x8')]=function(_0x515f89,_0x59a31a){return _0x515f89['define'](_0x5109('0x9'),attributes,{'tableName':_0x5109('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe077=['exports','SmsQueue','sms_queues','lodash','util','../../config/logger','request-promise','path','rimraf','./smsQueue.attributes'];(function(_0x26750c,_0x43e2e5){var _0x203ac8=function(_0x231286){while(--_0x231286){_0x26750c['push'](_0x26750c['shift']());}};_0x203ac8(++_0x43e2e5);}(_0xe077,0x161));var _0x7e07=function(_0x5e2fc5,_0x47c442){_0x5e2fc5=_0x5e2fc5-0x0;var _0x3843cf=_0xe077[_0x5e2fc5];return _0x3843cf;};'use strict';var _=require(_0x7e07('0x0'));var util=require(_0x7e07('0x1'));var logger=require(_0x7e07('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x7e07('0x3'));var fs=require('fs');var path=require(_0x7e07('0x4'));var rimraf=require(_0x7e07('0x5'));var config=require('../../config/environment');var attributes=require(_0x7e07('0x6'));module[_0x7e07('0x7')]=function(_0x4d5ce1,_0x4af71d){return _0x4d5ce1['define'](_0x7e07('0x8'),attributes,{'tableName':_0x7e07('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b2efae2..066ace8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0c2=['lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','register','request','then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','error','message','result','GetSmsQueue','SmsQueue','findAll','options','raw','include','map','model','attributes','stringify','catch','ShowSmsQueue','where'];(function(_0x1f2eee,_0x4e521e){var _0x2d9a17=function(_0x3c119e){while(--_0x3c119e){_0x1f2eee['push'](_0x1f2eee['shift']());}};_0x2d9a17(++_0x4e521e);}(_0xc0c2,0x172));var _0x2c0c=function(_0x57a50d,_0x2871f8){_0x57a50d=_0x57a50d-0x0;var _0x1b25b3=_0xc0c2[_0x57a50d];return _0x1b25b3;};'use strict';var _=require(_0x2c0c('0x0'));var util=require(_0x2c0c('0x1'));var moment=require(_0x2c0c('0x2'));var BPromise=require(_0x2c0c('0x3'));var rs=require(_0x2c0c('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2c0c('0x5'))['db'];var utils=require(_0x2c0c('0x6'));var logger=require(_0x2c0c('0x7'))(_0x2c0c('0x8'));var config=require('../../config/environment');var jayson=require(_0x2c0c('0x9'));var client=jayson[_0x2c0c('0xa')][_0x2c0c('0xb')]({'port':0x232a});config[_0x2c0c('0xc')]=_['defaults'](config[_0x2c0c('0xc')],{'host':_0x2c0c('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2c0c('0xc')]));require('./smsQueue.socket')[_0x2c0c('0xe')](socket);function respondWithRpcPromise(_0x362c90,_0x50aef7,_0x5e49b4){return new BPromise(function(_0x1714bc,_0x2ffb87){return client[_0x2c0c('0xf')](_0x362c90,_0x5e49b4)[_0x2c0c('0x10')](function(_0x179165){logger[_0x2c0c('0x11')](_0x2c0c('0x12'),_0x50aef7,_0x2c0c('0x13'));logger[_0x2c0c('0x14')]('SmsQueue,\x20%s,\x20%s,\x20%s',_0x50aef7,_0x2c0c('0x13'),JSON['stringify'](_0x179165));if(_0x179165[_0x2c0c('0x15')]){if(_0x179165[_0x2c0c('0x15')]['code']===0x1f4){logger[_0x2c0c('0x15')](_0x2c0c('0x12'),_0x50aef7,_0x179165[_0x2c0c('0x15')][_0x2c0c('0x16')]);return _0x2ffb87(_0x179165[_0x2c0c('0x15')][_0x2c0c('0x16')]);}logger[_0x2c0c('0x15')](_0x2c0c('0x12'),_0x50aef7,_0x179165[_0x2c0c('0x15')][_0x2c0c('0x16')]);return _0x1714bc(_0x179165[_0x2c0c('0x15')][_0x2c0c('0x16')]);}else{logger[_0x2c0c('0x11')](_0x2c0c('0x12'),_0x50aef7,_0x2c0c('0x13'));_0x1714bc(_0x179165[_0x2c0c('0x17')]['message']);}})['catch'](function(_0x3c76dc){logger['error']('SmsQueue,\x20%s,\x20%s',_0x50aef7,_0x3c76dc);_0x2ffb87(_0x3c76dc);});});}exports[_0x2c0c('0x18')]=function(_0x2b7138){var _0x128eaf=this;return new Promise(function(_0x13d9fb,_0x52eec3){return db[_0x2c0c('0x19')][_0x2c0c('0x1a')]({'raw':_0x2b7138[_0x2c0c('0x1b')]?_0x2b7138[_0x2c0c('0x1b')][_0x2c0c('0x1c')]===undefined?!![]:![]:!![],'where':_0x2b7138['options']?_0x2b7138[_0x2c0c('0x1b')]['where']||null:null,'attributes':_0x2b7138[_0x2c0c('0x1b')]?_0x2b7138['options']['attributes']||null:null,'limit':_0x2b7138[_0x2c0c('0x1b')]?_0x2b7138[_0x2c0c('0x1b')]['limit']||null:null,'include':_0x2b7138[_0x2c0c('0x1b')]?_0x2b7138[_0x2c0c('0x1b')][_0x2c0c('0x1d')]?_[_0x2c0c('0x1e')](_0x2b7138['options'][_0x2c0c('0x1d')],function(_0x584032){return{'model':db[_0x584032[_0x2c0c('0x1f')]],'as':_0x584032['as'],'attributes':_0x584032[_0x2c0c('0x20')],'include':_0x584032[_0x2c0c('0x1d')]?_[_0x2c0c('0x1e')](_0x584032[_0x2c0c('0x1d')],function(_0x284f2a){return{'model':db[_0x284f2a[_0x2c0c('0x1f')]],'as':_0x284f2a['as'],'attributes':_0x284f2a['attributes'],'include':_0x284f2a[_0x2c0c('0x1d')]?_[_0x2c0c('0x1e')](_0x284f2a[_0x2c0c('0x1d')],function(_0x3eb1e8){return{'model':db[_0x3eb1e8[_0x2c0c('0x1f')]],'as':_0x3eb1e8['as'],'attributes':_0x3eb1e8[_0x2c0c('0x20')]};}):[]};}):[]};}):[]:[]})[_0x2c0c('0x10')](function(_0x386c66){logger['info'](_0x2c0c('0x18'),_0x2b7138);logger[_0x2c0c('0x14')](_0x2c0c('0x18'),_0x2b7138,JSON[_0x2c0c('0x21')](_0x386c66));_0x13d9fb(_0x386c66);})[_0x2c0c('0x22')](function(_0x726652){logger['error'](_0x2c0c('0x18'),_0x726652[_0x2c0c('0x16')],_0x2b7138);_0x52eec3(_0x128eaf[_0x2c0c('0x15')](0x1f4,_0x726652[_0x2c0c('0x16')]));});});};exports[_0x2c0c('0x23')]=function(_0x39044d){var _0x63a99=this;return new Promise(function(_0xee2167,_0x29fdf5){return db['SmsQueue']['find']({'raw':_0x39044d[_0x2c0c('0x1b')]?_0x39044d[_0x2c0c('0x1b')][_0x2c0c('0x1c')]===undefined?!![]:![]:!![],'where':_0x39044d[_0x2c0c('0x1b')]?_0x39044d['options'][_0x2c0c('0x24')]||null:null,'attributes':_0x39044d[_0x2c0c('0x1b')]?_0x39044d[_0x2c0c('0x1b')]['attributes']||null:null,'include':_0x39044d['options']?_0x39044d[_0x2c0c('0x1b')]['include']?_[_0x2c0c('0x1e')](_0x39044d[_0x2c0c('0x1b')][_0x2c0c('0x1d')],function(_0x333458){return{'model':db[_0x333458['model']],'as':_0x333458['as'],'attributes':_0x333458[_0x2c0c('0x20')],'include':_0x333458['include']?_['map'](_0x333458[_0x2c0c('0x1d')],function(_0x11c186){return{'model':db[_0x11c186[_0x2c0c('0x1f')]],'as':_0x11c186['as'],'attributes':_0x11c186['attributes'],'include':_0x11c186[_0x2c0c('0x1d')]?_[_0x2c0c('0x1e')](_0x11c186[_0x2c0c('0x1d')],function(_0x4987d6){return{'model':db[_0x4987d6['model']],'as':_0x4987d6['as'],'attributes':_0x4987d6[_0x2c0c('0x20')]};}):[]};}):[]};}):[]:[]})[_0x2c0c('0x10')](function(_0x417516){logger[_0x2c0c('0x11')](_0x2c0c('0x23'),_0x39044d);logger[_0x2c0c('0x14')](_0x2c0c('0x23'),_0x39044d,JSON[_0x2c0c('0x21')](_0x417516));_0xee2167(_0x417516);})[_0x2c0c('0x22')](function(_0x498db1){logger[_0x2c0c('0x15')](_0x2c0c('0x23'),_0x498db1[_0x2c0c('0x16')],_0x39044d);_0x29fdf5(_0x63a99[_0x2c0c('0x15')](0x1f4,_0x498db1[_0x2c0c('0x16')]));});});};
\ No newline at end of file
+var _0x7c6d=['SmsQueue','findAll','options','raw','where','attributes','limit','include','map','model','GetSmsQueue','ShowSmsQueue','find','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','client','redis','localhost','socket.io-emitter','./smsQueue.socket','register','then','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch'];(function(_0x5336be,_0x46f415){var _0x8ca36=function(_0xb34f80){while(--_0xb34f80){_0x5336be['push'](_0x5336be['shift']());}};_0x8ca36(++_0x46f415);}(_0x7c6d,0x1ee));var _0xd7c6=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x7c6d[_0x2d7f0e];return _0x110b07;};'use strict';var _=require('lodash');var util=require(_0xd7c6('0x0'));var moment=require(_0xd7c6('0x1'));var BPromise=require(_0xd7c6('0x2'));var rs=require(_0xd7c6('0x3'));var fs=require('fs');var Redis=require(_0xd7c6('0x4'));var db=require(_0xd7c6('0x5'))['db'];var utils=require(_0xd7c6('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xd7c6('0x7')]['http']({'port':0x232a});config['redis']=_['defaults'](config[_0xd7c6('0x8')],{'host':_0xd7c6('0x9'),'port':0x18eb});var socket=require(_0xd7c6('0xa'))(new Redis(config['redis']));require(_0xd7c6('0xb'))[_0xd7c6('0xc')](socket);function respondWithRpcPromise(_0x4bc32e,_0x3b8b12,_0x4b1f18){return new BPromise(function(_0x22c85e,_0x334fa9){return client['request'](_0x4bc32e,_0x4b1f18)[_0xd7c6('0xd')](function(_0x4b8f67){logger['info'](_0xd7c6('0xe'),_0x3b8b12,_0xd7c6('0xf'));logger[_0xd7c6('0x10')]('SmsQueue,\x20%s,\x20%s,\x20%s',_0x3b8b12,_0xd7c6('0xf'),JSON[_0xd7c6('0x11')](_0x4b8f67));if(_0x4b8f67['error']){if(_0x4b8f67[_0xd7c6('0x12')][_0xd7c6('0x13')]===0x1f4){logger['error'](_0xd7c6('0xe'),_0x3b8b12,_0x4b8f67['error'][_0xd7c6('0x14')]);return _0x334fa9(_0x4b8f67[_0xd7c6('0x12')]['message']);}logger[_0xd7c6('0x12')]('SmsQueue,\x20%s,\x20%s',_0x3b8b12,_0x4b8f67[_0xd7c6('0x12')][_0xd7c6('0x14')]);return _0x22c85e(_0x4b8f67['error'][_0xd7c6('0x14')]);}else{logger[_0xd7c6('0x15')](_0xd7c6('0xe'),_0x3b8b12,_0xd7c6('0xf'));_0x22c85e(_0x4b8f67[_0xd7c6('0x16')][_0xd7c6('0x14')]);}})[_0xd7c6('0x17')](function(_0x140a2f){logger[_0xd7c6('0x12')](_0xd7c6('0xe'),_0x3b8b12,_0x140a2f);_0x334fa9(_0x140a2f);});});}exports['GetSmsQueue']=function(_0x47c7d1){var _0x8e97bf=this;return new Promise(function(_0xf69d84,_0x1cb94c){return db[_0xd7c6('0x18')][_0xd7c6('0x19')]({'raw':_0x47c7d1[_0xd7c6('0x1a')]?_0x47c7d1['options'][_0xd7c6('0x1b')]===undefined?!![]:![]:!![],'where':_0x47c7d1[_0xd7c6('0x1a')]?_0x47c7d1[_0xd7c6('0x1a')][_0xd7c6('0x1c')]||null:null,'attributes':_0x47c7d1[_0xd7c6('0x1a')]?_0x47c7d1[_0xd7c6('0x1a')][_0xd7c6('0x1d')]||null:null,'limit':_0x47c7d1[_0xd7c6('0x1a')]?_0x47c7d1[_0xd7c6('0x1a')][_0xd7c6('0x1e')]||null:null,'include':_0x47c7d1[_0xd7c6('0x1a')]?_0x47c7d1[_0xd7c6('0x1a')][_0xd7c6('0x1f')]?_[_0xd7c6('0x20')](_0x47c7d1['options'][_0xd7c6('0x1f')],function(_0x137e31){return{'model':db[_0x137e31[_0xd7c6('0x21')]],'as':_0x137e31['as'],'attributes':_0x137e31['attributes'],'include':_0x137e31[_0xd7c6('0x1f')]?_['map'](_0x137e31[_0xd7c6('0x1f')],function(_0x313a27){return{'model':db[_0x313a27[_0xd7c6('0x21')]],'as':_0x313a27['as'],'attributes':_0x313a27['attributes'],'include':_0x313a27[_0xd7c6('0x1f')]?_[_0xd7c6('0x20')](_0x313a27[_0xd7c6('0x1f')],function(_0x594bcf){return{'model':db[_0x594bcf['model']],'as':_0x594bcf['as'],'attributes':_0x594bcf['attributes']};}):[]};}):[]};}):[]:[]})[_0xd7c6('0xd')](function(_0x192023){logger[_0xd7c6('0x15')](_0xd7c6('0x22'),_0x47c7d1);logger[_0xd7c6('0x10')]('GetSmsQueue',_0x47c7d1,JSON[_0xd7c6('0x11')](_0x192023));_0xf69d84(_0x192023);})['catch'](function(_0xe304df){logger[_0xd7c6('0x12')](_0xd7c6('0x22'),_0xe304df[_0xd7c6('0x14')],_0x47c7d1);_0x1cb94c(_0x8e97bf[_0xd7c6('0x12')](0x1f4,_0xe304df['message']));});});};exports[_0xd7c6('0x23')]=function(_0x21b68e){var _0x19a39e=this;return new Promise(function(_0x26664c,_0x1bfdd5){return db[_0xd7c6('0x18')][_0xd7c6('0x24')]({'raw':_0x21b68e[_0xd7c6('0x1a')]?_0x21b68e[_0xd7c6('0x1a')][_0xd7c6('0x1b')]===undefined?!![]:![]:!![],'where':_0x21b68e['options']?_0x21b68e[_0xd7c6('0x1a')]['where']||null:null,'attributes':_0x21b68e[_0xd7c6('0x1a')]?_0x21b68e['options']['attributes']||null:null,'include':_0x21b68e[_0xd7c6('0x1a')]?_0x21b68e[_0xd7c6('0x1a')][_0xd7c6('0x1f')]?_[_0xd7c6('0x20')](_0x21b68e['options'][_0xd7c6('0x1f')],function(_0xaf1e0b){return{'model':db[_0xaf1e0b[_0xd7c6('0x21')]],'as':_0xaf1e0b['as'],'attributes':_0xaf1e0b[_0xd7c6('0x1d')],'include':_0xaf1e0b[_0xd7c6('0x1f')]?_[_0xd7c6('0x20')](_0xaf1e0b[_0xd7c6('0x1f')],function(_0x55d6bc){return{'model':db[_0x55d6bc[_0xd7c6('0x21')]],'as':_0x55d6bc['as'],'attributes':_0x55d6bc['attributes'],'include':_0x55d6bc[_0xd7c6('0x1f')]?_[_0xd7c6('0x20')](_0x55d6bc[_0xd7c6('0x1f')],function(_0x1c25d6){return{'model':db[_0x1c25d6[_0xd7c6('0x21')]],'as':_0x1c25d6['as'],'attributes':_0x1c25d6[_0xd7c6('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x51fa62){logger['info']('ShowSmsQueue',_0x21b68e);logger[_0xd7c6('0x10')](_0xd7c6('0x23'),_0x21b68e,JSON[_0xd7c6('0x11')](_0x51fa62));_0x26664c(_0x51fa62);})[_0xd7c6('0x17')](function(_0x3b0639){logger['error'](_0xd7c6('0x23'),_0x3b0639[_0xd7c6('0x14')],_0x21b68e);_0x1bfdd5(_0x19a39e[_0xd7c6('0x12')](0x1f4,_0x3b0639[_0xd7c6('0x14')]));});});};
\ No newline at end of file
index dce7339..8f3f94b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x718c=['length','./smsQueue.events','save','remove','update','emit','register'];(function(_0x354306,_0x3e1d40){var _0x1cffac=function(_0x816adb){while(--_0x816adb){_0x354306['push'](_0x354306['shift']());}};_0x1cffac(++_0x3e1d40);}(_0x718c,0x1a5));var _0xc718=function(_0x3ad456,_0x15164d){_0x3ad456=_0x3ad456-0x0;var _0x48fa49=_0x718c[_0x3ad456];return _0x48fa49;};'use strict';var SmsQueueEvents=require(_0xc718('0x0'));var events=[_0xc718('0x1'),_0xc718('0x2'),_0xc718('0x3')];function createListener(_0x4c9549,_0x3ac43b){return function(_0x169f14){_0x3ac43b[_0xc718('0x4')](_0x4c9549,_0x169f14);};}function removeListener(_0x49ee24,_0x57b623){return function(){SmsQueueEvents['removeListener'](_0x49ee24,_0x57b623);};}exports[_0xc718('0x5')]=function(_0x199fde){for(var _0x1f2547=0x0,_0xdedd32=events[_0xc718('0x6')];_0x1f2547<_0xdedd32;_0x1f2547++){var _0x4831d4=events[_0x1f2547];var _0x429828=createListener('smsQueue:'+_0x4831d4,_0x199fde);SmsQueueEvents['on'](_0x4831d4,_0x429828);}};
\ No newline at end of file
+var _0x8a84=['removeListener','smsQueue:','./smsQueue.events','save','remove','update'];(function(_0x42f402,_0x2155ac){var _0x3bf339=function(_0x23ef15){while(--_0x23ef15){_0x42f402['push'](_0x42f402['shift']());}};_0x3bf339(++_0x2155ac);}(_0x8a84,0x164));var _0x48a8=function(_0x5ac188,_0x163bcf){_0x5ac188=_0x5ac188-0x0;var _0x32fa2f=_0x8a84[_0x5ac188];return _0x32fa2f;};'use strict';var SmsQueueEvents=require(_0x48a8('0x0'));var events=[_0x48a8('0x1'),_0x48a8('0x2'),_0x48a8('0x3')];function createListener(_0x5cf422,_0x124609){return function(_0x30817c){_0x124609['emit'](_0x5cf422,_0x30817c);};}function removeListener(_0x143d62,_0x23ea30){return function(){SmsQueueEvents[_0x48a8('0x4')](_0x143d62,_0x23ea30);};}exports['register']=function(_0x3398dd){for(var _0x4b853c=0x0,_0x228ffb=events['length'];_0x4b853c<_0x228ffb;_0x4b853c++){var _0x2dcf58=events[_0x4b853c];var _0x241196=createListener(_0x48a8('0x5')+_0x2dcf58,_0x3398dd);SmsQueueEvents['on'](_0x2dcf58,_0x241196);}};
\ No newline at end of file
index 2ca8f72..d34f113 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c4b=['exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','put','update','delete'];(function(_0x45903a,_0x1f4d88){var _0x2be51d=function(_0x41eec9){while(--_0x41eec9){_0x45903a['push'](_0x45903a['shift']());}};_0x2be51d(++_0x1f4d88);}(_0x3c4b,0x151));var _0xb3c4=function(_0x77c7d8,_0x1d402b){_0x77c7d8=_0x77c7d8-0x0;var _0x488336=_0x3c4b[_0x77c7d8];return _0x488336;};'use strict';var multer=require(_0xb3c4('0x0'));var util=require(_0xb3c4('0x1'));var path=require(_0xb3c4('0x2'));var timeout=require(_0xb3c4('0x3'));var express=require(_0xb3c4('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xb3c4('0x5'));var interaction=require(_0xb3c4('0x6'));var config=require(_0xb3c4('0x7'));var controller=require(_0xb3c4('0x8'));router[_0xb3c4('0x9')]('/',auth[_0xb3c4('0xa')](),controller['index']);router[_0xb3c4('0x9')](_0xb3c4('0xb'),auth[_0xb3c4('0xa')](),controller[_0xb3c4('0xc')]);router['get'](_0xb3c4('0xd'),auth[_0xb3c4('0xa')](),controller[_0xb3c4('0xe')]);router[_0xb3c4('0xf')]('/',auth[_0xb3c4('0xa')](),controller[_0xb3c4('0x10')]);router[_0xb3c4('0x11')]('/:id',auth[_0xb3c4('0xa')](),controller[_0xb3c4('0x12')]);router[_0xb3c4('0x13')](_0xb3c4('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0xb3c4('0x14')]=router;
\ No newline at end of file
+var _0xb19f=['index','/describe','describe','/:id','show','create','put','update','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/interaction/service','./smsQueueReport.controller','isAuthenticated'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb19f,0x7d));var _0xfb19=function(_0xb1b616,_0x3b9023){_0xb1b616=_0xb1b616-0x0;var _0x1259b0=_0xb19f[_0xb1b616];return _0x1259b0;};'use strict';var multer=require(_0xfb19('0x0'));var util=require(_0xfb19('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xfb19('0x2'));var router=express[_0xfb19('0x3')]();var fs_extra=require(_0xfb19('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xfb19('0x5'));var config=require('../../config/environment');var controller=require(_0xfb19('0x6'));router['get']('/',auth[_0xfb19('0x7')](),controller[_0xfb19('0x8')]);router['get'](_0xfb19('0x9'),auth['isAuthenticated'](),controller[_0xfb19('0xa')]);router['get'](_0xfb19('0xb'),auth['isAuthenticated'](),controller[_0xfb19('0xc')]);router['post']('/',auth[_0xfb19('0x7')](),controller[_0xfb19('0xd')]);router[_0xfb19('0xe')](_0xfb19('0xb'),auth[_0xfb19('0x7')](),controller[_0xfb19('0xf')]);router[_0xfb19('0x10')](_0xfb19('0xb'),auth[_0xfb19('0x7')](),controller[_0xfb19('0x11')]);module[_0xfb19('0x12')]=router;
\ No newline at end of file
index 80b3804..d2e1c9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4d6=['moment','sequelize','exports','STRING','DATE'];(function(_0xf5cab5,_0x1bce90){var _0x552ca7=function(_0x4a8b11){while(--_0x4a8b11){_0xf5cab5['push'](_0xf5cab5['shift']());}};_0x552ca7(++_0x1bce90);}(_0xe4d6,0xd7));var _0x6e4d=function(_0x54bfc2,_0x384fff){_0x54bfc2=_0x54bfc2-0x0;var _0x370cb2=_0xe4d6[_0x54bfc2];return _0x370cb2;};'use strict';var moment=require(_0x6e4d('0x0'));var Sequelize=require(_0x6e4d('0x1'));module[_0x6e4d('0x2')]={'uniqueid':{'type':Sequelize[_0x6e4d('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x6e4d('0x4')]},'leaveAt':{'type':Sequelize[_0x6e4d('0x4')]},'acceptAt':{'type':Sequelize[_0x6e4d('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x95d9=['DATE','moment','sequelize','exports','STRING'];(function(_0x426e59,_0x20ab3b){var _0x447e8c=function(_0x5b53fd){while(--_0x5b53fd){_0x426e59['push'](_0x426e59['shift']());}};_0x447e8c(++_0x20ab3b);}(_0x95d9,0x97));var _0x995d=function(_0x1d24eb,_0x12295b){_0x1d24eb=_0x1d24eb-0x0;var _0x1dc576=_0x95d9[_0x1d24eb];return _0x1dc576;};'use strict';var moment=require(_0x995d('0x0'));var Sequelize=require(_0x995d('0x1'));module[_0x995d('0x2')]={'uniqueid':{'type':Sequelize[_0x995d('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x995d('0x4')]},'leaveAt':{'type':Sequelize[_0x995d('0x4')]},'acceptAt':{'type':Sequelize[_0x995d('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x995d('0x3')]}};
\ No newline at end of file
index 1813b4c..aa09e87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x567c=['querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','SmsQueueReport','includeAll','findAll','rows','catch','show','params','keys','fields','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js'];(function(_0x4e805f,_0x5277a6){var _0x16e070=function(_0x1fc633){while(--_0x1fc633){_0x4e805f['push'](_0x4e805f['shift']());}};_0x16e070(++_0x5277a6);}(_0x567c,0x8d));var _0xc567=function(_0xc4d065,_0xa616b8){_0xc4d065=_0xc4d065-0x0;var _0x43f234=_0x567c[_0xc4d065];return _0x43f234;};'use strict';var emlformat=require(_0xc567('0x0'));var rimraf=require(_0xc567('0x1'));var zipdir=require(_0xc567('0x2'));var jsonpatch=require(_0xc567('0x3'));var rp=require(_0xc567('0x4'));var moment=require(_0xc567('0x5'));var BPromise=require(_0xc567('0x6'));var Mustache=require(_0xc567('0x7'));var util=require(_0xc567('0x8'));var path=require(_0xc567('0x9'));var sox=require(_0xc567('0xa'));var csv=require(_0xc567('0xb'));var ejs=require(_0xc567('0xc'));var fs=require('fs');var fs_extra=require(_0xc567('0xd'));var _=require(_0xc567('0xe'));var squel=require(_0xc567('0xf'));var crypto=require(_0xc567('0x10'));var jsforce=require(_0xc567('0x11'));var deskjs=require(_0xc567('0x12'));var toCsv=require(_0xc567('0xb'));var querystring=require(_0xc567('0x13'));var Papa=require(_0xc567('0x14'));var Redis=require('ioredis');var authService=require(_0xc567('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0xc567('0x16'));var hardwareService=require(_0xc567('0x17'));var logger=require(_0xc567('0x18'))('api');var utils=require(_0xc567('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xc567('0x1a'));var db=require(_0xc567('0x1b'))['db'];function respondWithStatusCode(_0x1205f6,_0x8c8997){_0x8c8997=_0x8c8997||0xcc;return function(_0x5efbaf){if(_0x5efbaf){return _0x1205f6[_0xc567('0x1c')](_0x8c8997);}return _0x1205f6[_0xc567('0x1d')](_0x8c8997)[_0xc567('0x1e')]();};}function respondWithResult(_0x4cf015,_0x2ad64a){_0x2ad64a=_0x2ad64a||0xc8;return function(_0x23b8e9){if(_0x23b8e9){return _0x4cf015[_0xc567('0x1d')](_0x2ad64a)['json'](_0x23b8e9);}};}function respondWithFilteredResult(_0x28a78a,_0x143ff9){return function(_0x57d6bb){if(_0x57d6bb){var _0x27cd06=typeof _0x143ff9[_0xc567('0x1f')]===_0xc567('0x20')&&typeof _0x143ff9['limit']===_0xc567('0x20');var _0x1436f3=_0x57d6bb[_0xc567('0x21')];var _0x1c0009=_0x27cd06?0x0:_0x143ff9['offset'];var _0x52f3ec=_0x27cd06?_0x57d6bb['count']:_0x143ff9[_0xc567('0x1f')]+_0x143ff9['limit'];var _0x355a5f;if(_0x52f3ec>=_0x1436f3){_0x52f3ec=_0x1436f3;_0x355a5f=0xc8;}else{_0x355a5f=0xce;}_0x28a78a[_0xc567('0x1d')](_0x355a5f);return _0x28a78a['set'](_0xc567('0x22'),_0x1c0009+'-'+_0x52f3ec+'/'+_0x1436f3)['json'](_0x57d6bb);}return null;};}function patchUpdates(_0x4447cb){return function(_0x229177){try{jsonpatch[_0xc567('0x23')](_0x229177,_0x4447cb,!![]);}catch(_0x51f082){return BPromise[_0xc567('0x24')](_0x51f082);}return _0x229177[_0xc567('0x25')]();};}function saveUpdates(_0x578c1a,_0x4781db){return function(_0x12338f){if(_0x12338f){return _0x12338f[_0xc567('0x26')](_0x578c1a)[_0xc567('0x27')](function(_0x340b17){return _0x340b17;});}return null;};}function removeEntity(_0x1323ce,_0x5749c3){return function(_0x409c90){if(_0x409c90){return _0x409c90[_0xc567('0x28')]()['then'](function(){_0x1323ce[_0xc567('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2e5769,_0x3e4af4){return function(_0x1ca341){if(!_0x1ca341){_0x2e5769['sendStatus'](0x194);}return _0x1ca341;};}function handleError(_0x4f0519,_0x60c99c){_0x60c99c=_0x60c99c||0x1f4;return function(_0x12ffb1){logger[_0xc567('0x29')](_0x12ffb1[_0xc567('0x2a')]);if(_0x12ffb1[_0xc567('0x2b')]){delete _0x12ffb1[_0xc567('0x2b')];}_0x4f0519[_0xc567('0x1d')](_0x60c99c)[_0xc567('0x2c')](_0x12ffb1);};}exports[_0xc567('0x2d')]=function(_0x2a0961,_0x94003b){var _0x2a2cc3={},_0x3aca36={},_0xcdf19f={'count':0x0,'rows':[]};var _0x45c4a7=_[_0xc567('0x2e')](db['SmsQueueReport'][_0xc567('0x2f')],function(_0x45092f){return{'name':_0x45092f[_0xc567('0x30')],'type':_0x45092f[_0xc567('0x31')][_0xc567('0x32')]};});_0x3aca36['model']=_['map'](_0x45c4a7,_0xc567('0x2b'));_0x3aca36[_0xc567('0x33')]=_['keys'](_0x2a0961['query']);_0x3aca36[_0xc567('0x34')]=_[_0xc567('0x35')](_0x3aca36[_0xc567('0x36')],_0x3aca36[_0xc567('0x33')]);_0x2a2cc3[_0xc567('0x37')]=_['intersection'](_0x3aca36[_0xc567('0x36')],qs['fields'](_0x2a0961[_0xc567('0x33')]['fields']));_0x2a2cc3[_0xc567('0x37')]=_0x2a2cc3[_0xc567('0x37')][_0xc567('0x38')]?_0x2a2cc3[_0xc567('0x37')]:_0x3aca36[_0xc567('0x36')];if(!_0x2a0961['query'][_0xc567('0x39')](_0xc567('0x3a'))){_0x2a2cc3['limit']=qs['limit'](_0x2a0961[_0xc567('0x33')]['limit']);_0x2a2cc3[_0xc567('0x1f')]=qs[_0xc567('0x1f')](_0x2a0961[_0xc567('0x33')][_0xc567('0x1f')]);}_0x2a2cc3['order']=qs[_0xc567('0x3b')](_0x2a0961[_0xc567('0x33')][_0xc567('0x3b')]);_0x2a2cc3[_0xc567('0x3c')]=qs[_0xc567('0x34')](_[_0xc567('0x3d')](_0x2a0961['query'],_0x3aca36[_0xc567('0x34')]),_0x45c4a7);if(_0x2a0961[_0xc567('0x33')][_0xc567('0x3e')]){_0x2a2cc3[_0xc567('0x3c')]=_[_0xc567('0x3f')](_0x2a2cc3['where'],{'$or':_[_0xc567('0x2e')](_0x45c4a7,function(_0x4aba13){if(_0x4aba13[_0xc567('0x31')]!==_0xc567('0x40')){var _0x393056={};_0x393056[_0x4aba13[_0xc567('0x2b')]]={'$like':'%'+_0x2a0961[_0xc567('0x33')][_0xc567('0x3e')]+'%'};return _0x393056;}})});}_0x2a2cc3=_['merge']({},_0x2a2cc3,_0x2a0961[_0xc567('0x41')]);var _0x1dc5f5={'where':_0x2a2cc3[_0xc567('0x3c')]};return db[_0xc567('0x42')][_0xc567('0x21')](_0x1dc5f5)['then'](function(_0xb7508e){_0xcdf19f[_0xc567('0x21')]=_0xb7508e;if(_0x2a0961[_0xc567('0x33')][_0xc567('0x43')]){_0x2a2cc3['include']=[{'all':!![]}];}return db['SmsQueueReport'][_0xc567('0x44')](_0x2a2cc3);})[_0xc567('0x27')](function(_0x45e0ad){_0xcdf19f[_0xc567('0x45')]=_0x45e0ad;return _0xcdf19f;})[_0xc567('0x27')](respondWithFilteredResult(_0x94003b,_0x2a2cc3))[_0xc567('0x46')](handleError(_0x94003b,null));};exports[_0xc567('0x47')]=function(_0xf915f,_0x44f52a){var _0x11a324={'raw':!![],'where':{'id':_0xf915f[_0xc567('0x48')]['id']}},_0x310b53={};_0x310b53[_0xc567('0x36')]=_[_0xc567('0x49')](db['SmsQueueReport'][_0xc567('0x2f')]);_0x310b53['query']=_['keys'](_0xf915f[_0xc567('0x33')]);_0x310b53[_0xc567('0x34')]=_[_0xc567('0x35')](_0x310b53[_0xc567('0x36')],_0x310b53[_0xc567('0x33')]);_0x11a324[_0xc567('0x37')]=_[_0xc567('0x35')](_0x310b53[_0xc567('0x36')],qs[_0xc567('0x4a')](_0xf915f[_0xc567('0x33')][_0xc567('0x4a')]));_0x11a324['attributes']=_0x11a324[_0xc567('0x37')][_0xc567('0x38')]?_0x11a324[_0xc567('0x37')]:_0x310b53[_0xc567('0x36')];if(_0xf915f[_0xc567('0x33')]['includeAll']){_0x11a324[_0xc567('0x4b')]=[{'all':!![]}];}_0x11a324=_[_0xc567('0x3f')]({},_0x11a324,_0xf915f[_0xc567('0x41')]);return db[_0xc567('0x42')][_0xc567('0x4c')](_0x11a324)[_0xc567('0x27')](handleEntityNotFound(_0x44f52a,null))[_0xc567('0x27')](respondWithResult(_0x44f52a,null))[_0xc567('0x46')](handleError(_0x44f52a,null));};exports['create']=function(_0x10d3da,_0x3fe7e0){return db[_0xc567('0x42')][_0xc567('0x4d')](_0x10d3da[_0xc567('0x4e')],{})[_0xc567('0x27')](respondWithResult(_0x3fe7e0,0xc9))[_0xc567('0x46')](handleError(_0x3fe7e0,null));};exports['update']=function(_0x1c3128,_0x15265c){if(_0x1c3128[_0xc567('0x4e')]['id']){delete _0x1c3128['body']['id'];}return db[_0xc567('0x42')][_0xc567('0x4c')]({'where':{'id':_0x1c3128[_0xc567('0x48')]['id']}})[_0xc567('0x27')](handleEntityNotFound(_0x15265c,null))[_0xc567('0x27')](saveUpdates(_0x1c3128[_0xc567('0x4e')],null))[_0xc567('0x27')](respondWithResult(_0x15265c,null))[_0xc567('0x46')](handleError(_0x15265c,null));};exports[_0xc567('0x28')]=function(_0x22189b,_0xe5330){return db['SmsQueueReport'][_0xc567('0x4c')]({'where':{'id':_0x22189b[_0xc567('0x48')]['id']}})[_0xc567('0x27')](handleEntityNotFound(_0xe5330,null))['then'](removeEntity(_0xe5330,null))[_0xc567('0x46')](handleError(_0xe5330,null));};exports[_0xc567('0x4f')]=function(_0x418425,_0x1fceff){return db[_0xc567('0x42')][_0xc567('0x4f')]()[_0xc567('0x27')](respondWithResult(_0x1fceff,null))['catch'](handleError(_0x1fceff,null));};
\ No newline at end of file
+var _0xf602=['papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','nolimit','order','sort','where','filter','merge','options','SmsQueueReport','includeAll','include','findAll','rows','catch','params','keys','fields','length','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring'];(function(_0x2a8d7b,_0x59d7d4){var _0x56ced0=function(_0x26bc22){while(--_0x26bc22){_0x2a8d7b['push'](_0x2a8d7b['shift']());}};_0x56ced0(++_0x59d7d4);}(_0xf602,0x179));var _0x2f60=function(_0x551e3a,_0x45c8fe){_0x551e3a=_0x551e3a-0x0;var _0x12eff3=_0xf602[_0x551e3a];return _0x12eff3;};'use strict';var emlformat=require(_0x2f60('0x0'));var rimraf=require(_0x2f60('0x1'));var zipdir=require(_0x2f60('0x2'));var jsonpatch=require(_0x2f60('0x3'));var rp=require(_0x2f60('0x4'));var moment=require(_0x2f60('0x5'));var BPromise=require(_0x2f60('0x6'));var Mustache=require(_0x2f60('0x7'));var util=require(_0x2f60('0x8'));var path=require(_0x2f60('0x9'));var sox=require(_0x2f60('0xa'));var csv=require(_0x2f60('0xb'));var ejs=require(_0x2f60('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2f60('0xd'));var squel=require(_0x2f60('0xe'));var crypto=require(_0x2f60('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x2f60('0x10'));var toCsv=require(_0x2f60('0xb'));var querystring=require(_0x2f60('0x11'));var Papa=require(_0x2f60('0x12'));var Redis=require(_0x2f60('0x13'));var authService=require(_0x2f60('0x14'));var qs=require(_0x2f60('0x15'));var as=require(_0x2f60('0x16'));var hardwareService=require(_0x2f60('0x17'));var logger=require(_0x2f60('0x18'))(_0x2f60('0x19'));var utils=require(_0x2f60('0x1a'));var config=require(_0x2f60('0x1b'));var licenseUtil=require(_0x2f60('0x1c'));var db=require(_0x2f60('0x1d'))['db'];function respondWithStatusCode(_0x28b14d,_0x7ca9bc){_0x7ca9bc=_0x7ca9bc||0xcc;return function(_0x123b32){if(_0x123b32){return _0x28b14d[_0x2f60('0x1e')](_0x7ca9bc);}return _0x28b14d[_0x2f60('0x1f')](_0x7ca9bc)[_0x2f60('0x20')]();};}function respondWithResult(_0x12fd33,_0x10fa96){_0x10fa96=_0x10fa96||0xc8;return function(_0x2bfccf){if(_0x2bfccf){return _0x12fd33[_0x2f60('0x1f')](_0x10fa96)[_0x2f60('0x21')](_0x2bfccf);}};}function respondWithFilteredResult(_0x1226ce,_0x4c2f34){return function(_0x206c1b){if(_0x206c1b){var _0x322aa3=typeof _0x4c2f34[_0x2f60('0x22')]===_0x2f60('0x23')&&typeof _0x4c2f34[_0x2f60('0x24')]===_0x2f60('0x23');var _0x15f04f=_0x206c1b[_0x2f60('0x25')];var _0x36663a=_0x322aa3?0x0:_0x4c2f34['offset'];var _0x25da0b=_0x322aa3?_0x206c1b[_0x2f60('0x25')]:_0x4c2f34['offset']+_0x4c2f34['limit'];var _0x425c0f;if(_0x25da0b>=_0x15f04f){_0x25da0b=_0x15f04f;_0x425c0f=0xc8;}else{_0x425c0f=0xce;}_0x1226ce[_0x2f60('0x1f')](_0x425c0f);return _0x1226ce['set'](_0x2f60('0x26'),_0x36663a+'-'+_0x25da0b+'/'+_0x15f04f)[_0x2f60('0x21')](_0x206c1b);}return null;};}function patchUpdates(_0x3ec4d7){return function(_0x1fff97){try{jsonpatch[_0x2f60('0x27')](_0x1fff97,_0x3ec4d7,!![]);}catch(_0x5c561e){return BPromise['reject'](_0x5c561e);}return _0x1fff97[_0x2f60('0x28')]();};}function saveUpdates(_0x597536,_0x459439){return function(_0x5dfcb1){if(_0x5dfcb1){return _0x5dfcb1[_0x2f60('0x29')](_0x597536)[_0x2f60('0x2a')](function(_0x2b230c){return _0x2b230c;});}return null;};}function removeEntity(_0x1165eb,_0x120dcc){return function(_0x5f3402){if(_0x5f3402){return _0x5f3402['destroy']()[_0x2f60('0x2a')](function(){_0x1165eb['status'](0xcc)[_0x2f60('0x20')]();});}};}function handleEntityNotFound(_0xb5c7b6,_0x3274ef){return function(_0x1d0de7){if(!_0x1d0de7){_0xb5c7b6[_0x2f60('0x1e')](0x194);}return _0x1d0de7;};}function handleError(_0x513ed7,_0x319c28){_0x319c28=_0x319c28||0x1f4;return function(_0x2232e0){logger[_0x2f60('0x2b')](_0x2232e0[_0x2f60('0x2c')]);if(_0x2232e0[_0x2f60('0x2d')]){delete _0x2232e0['name'];}_0x513ed7[_0x2f60('0x1f')](_0x319c28)[_0x2f60('0x2e')](_0x2232e0);};}exports[_0x2f60('0x2f')]=function(_0x49d1f5,_0x5ab619){var _0x5646d4={},_0x593193={},_0x23b5a2={'count':0x0,'rows':[]};var _0x2f7c7c=_['map'](db['SmsQueueReport'][_0x2f60('0x30')],function(_0x17a779){return{'name':_0x17a779[_0x2f60('0x31')],'type':_0x17a779[_0x2f60('0x32')][_0x2f60('0x33')]};});_0x593193[_0x2f60('0x34')]=_[_0x2f60('0x35')](_0x2f7c7c,'name');_0x593193[_0x2f60('0x36')]=_['keys'](_0x49d1f5[_0x2f60('0x36')]);_0x593193[_0x2f60('0x37')]=_['intersection'](_0x593193[_0x2f60('0x34')],_0x593193['query']);_0x5646d4['attributes']=_[_0x2f60('0x38')](_0x593193[_0x2f60('0x34')],qs['fields'](_0x49d1f5[_0x2f60('0x36')]['fields']));_0x5646d4[_0x2f60('0x39')]=_0x5646d4[_0x2f60('0x39')]['length']?_0x5646d4['attributes']:_0x593193[_0x2f60('0x34')];if(!_0x49d1f5[_0x2f60('0x36')]['hasOwnProperty'](_0x2f60('0x3a'))){_0x5646d4[_0x2f60('0x24')]=qs['limit'](_0x49d1f5['query'][_0x2f60('0x24')]);_0x5646d4[_0x2f60('0x22')]=qs[_0x2f60('0x22')](_0x49d1f5['query']['offset']);}_0x5646d4[_0x2f60('0x3b')]=qs[_0x2f60('0x3c')](_0x49d1f5[_0x2f60('0x36')][_0x2f60('0x3c')]);_0x5646d4[_0x2f60('0x3d')]=qs[_0x2f60('0x37')](_['pick'](_0x49d1f5[_0x2f60('0x36')],_0x593193[_0x2f60('0x37')]),_0x2f7c7c);if(_0x49d1f5['query'][_0x2f60('0x3e')]){_0x5646d4[_0x2f60('0x3d')]=_[_0x2f60('0x3f')](_0x5646d4[_0x2f60('0x3d')],{'$or':_['map'](_0x2f7c7c,function(_0x3d3c7b){if(_0x3d3c7b[_0x2f60('0x32')]!=='VIRTUAL'){var _0x4a1c00={};_0x4a1c00[_0x3d3c7b['name']]={'$like':'%'+_0x49d1f5[_0x2f60('0x36')][_0x2f60('0x3e')]+'%'};return _0x4a1c00;}})});}_0x5646d4=_[_0x2f60('0x3f')]({},_0x5646d4,_0x49d1f5[_0x2f60('0x40')]);var _0x32f745={'where':_0x5646d4['where']};return db[_0x2f60('0x41')][_0x2f60('0x25')](_0x32f745)[_0x2f60('0x2a')](function(_0x34eed5){_0x23b5a2['count']=_0x34eed5;if(_0x49d1f5[_0x2f60('0x36')][_0x2f60('0x42')]){_0x5646d4[_0x2f60('0x43')]=[{'all':!![]}];}return db[_0x2f60('0x41')][_0x2f60('0x44')](_0x5646d4);})[_0x2f60('0x2a')](function(_0x17b408){_0x23b5a2[_0x2f60('0x45')]=_0x17b408;return _0x23b5a2;})[_0x2f60('0x2a')](respondWithFilteredResult(_0x5ab619,_0x5646d4))[_0x2f60('0x46')](handleError(_0x5ab619,null));};exports['show']=function(_0x474364,_0x4f600f){var _0x1d8a2c={'raw':!![],'where':{'id':_0x474364[_0x2f60('0x47')]['id']}},_0x1e8caf={};_0x1e8caf[_0x2f60('0x34')]=_[_0x2f60('0x48')](db[_0x2f60('0x41')][_0x2f60('0x30')]);_0x1e8caf['query']=_[_0x2f60('0x48')](_0x474364[_0x2f60('0x36')]);_0x1e8caf[_0x2f60('0x37')]=_[_0x2f60('0x38')](_0x1e8caf[_0x2f60('0x34')],_0x1e8caf['query']);_0x1d8a2c['attributes']=_[_0x2f60('0x38')](_0x1e8caf['model'],qs[_0x2f60('0x49')](_0x474364['query'][_0x2f60('0x49')]));_0x1d8a2c[_0x2f60('0x39')]=_0x1d8a2c[_0x2f60('0x39')][_0x2f60('0x4a')]?_0x1d8a2c['attributes']:_0x1e8caf[_0x2f60('0x34')];if(_0x474364[_0x2f60('0x36')]['includeAll']){_0x1d8a2c[_0x2f60('0x43')]=[{'all':!![]}];}_0x1d8a2c=_['merge']({},_0x1d8a2c,_0x474364[_0x2f60('0x40')]);return db[_0x2f60('0x41')][_0x2f60('0x4b')](_0x1d8a2c)[_0x2f60('0x2a')](handleEntityNotFound(_0x4f600f,null))[_0x2f60('0x2a')](respondWithResult(_0x4f600f,null))[_0x2f60('0x46')](handleError(_0x4f600f,null));};exports['create']=function(_0x203d36,_0x50a396){return db['SmsQueueReport'][_0x2f60('0x4c')](_0x203d36[_0x2f60('0x4d')],{})[_0x2f60('0x2a')](respondWithResult(_0x50a396,0xc9))[_0x2f60('0x46')](handleError(_0x50a396,null));};exports['update']=function(_0x233f66,_0x2a0f00){if(_0x233f66[_0x2f60('0x4d')]['id']){delete _0x233f66[_0x2f60('0x4d')]['id'];}return db[_0x2f60('0x41')][_0x2f60('0x4b')]({'where':{'id':_0x233f66[_0x2f60('0x47')]['id']}})[_0x2f60('0x2a')](handleEntityNotFound(_0x2a0f00,null))['then'](saveUpdates(_0x233f66[_0x2f60('0x4d')],null))[_0x2f60('0x2a')](respondWithResult(_0x2a0f00,null))[_0x2f60('0x46')](handleError(_0x2a0f00,null));};exports['destroy']=function(_0x30b4e2,_0x697b3e){return db[_0x2f60('0x41')]['find']({'where':{'id':_0x30b4e2['params']['id']}})[_0x2f60('0x2a')](handleEntityNotFound(_0x697b3e,null))[_0x2f60('0x2a')](removeEntity(_0x697b3e,null))[_0x2f60('0x46')](handleError(_0x697b3e,null));};exports[_0x2f60('0x4e')]=function(_0x480f75,_0x24168f){return db[_0x2f60('0x41')][_0x2f60('0x4e')]()['then'](respondWithResult(_0x24168f,null))[_0x2f60('0x46')](handleError(_0x24168f,null));};
\ No newline at end of file
index 4ed0f8a..34500d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['define','report_sms_queue','uniqueid','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x265dd2,_0x574650){var _0x3bf256=function(_0xf60a1b){while(--_0xf60a1b){_0x265dd2['push'](_0x265dd2['shift']());}};_0x3bf256(++_0x574650);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x0d8b('0x2'));var rp=require(_0x0d8b('0x3'));var fs=require('fs');var path=require(_0x0d8b('0x4'));var rimraf=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var attributes=require('./smsQueueReport.attributes');module['exports']=function(_0x3f8b6f,_0x227c63){return _0x3f8b6f[_0x0d8b('0x7')]('SmsQueueReport',attributes,{'tableName':_0x0d8b('0x8'),'paranoid':![],'indexes':[{'name':_0x0d8b('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0713=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./smsQueueReport.attributes','exports','define','SmsQueueReport','report_sms_queue','uniqueid'];(function(_0x4fe19c,_0x45d0fe){var _0x952ac7=function(_0x274a16){while(--_0x274a16){_0x4fe19c['push'](_0x4fe19c['shift']());}};_0x952ac7(++_0x45d0fe);}(_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 2abdbed..907cdf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9d9=['message','result','SmsQueueReport','create','options','raw','CreateSmsQueueReport','catch','update','body','where','attributes','UpdateSmsQueueReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SmsQueueReport,\x20%s,\x20%s','request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x418c91,_0x12f3b9){var _0x165f20=function(_0x2cb68c){while(--_0x2cb68c){_0x418c91['push'](_0x418c91['shift']());}};_0x165f20(++_0x12f3b9);}(_0xa9d9,0x175));var _0x9a9d=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xa9d9[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0x9a9d('0x0'));var util=require(_0x9a9d('0x1'));var moment=require(_0x9a9d('0x2'));var BPromise=require(_0x9a9d('0x3'));var rs=require(_0x9a9d('0x4'));var fs=require('fs');var Redis=require(_0x9a9d('0x5'));var db=require(_0x9a9d('0x6'))['db'];var utils=require(_0x9a9d('0x7'));var logger=require('../../config/logger')(_0x9a9d('0x8'));var config=require(_0x9a9d('0x9'));var jayson=require(_0x9a9d('0xa'));var client=jayson[_0x9a9d('0xb')][_0x9a9d('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4bb2a4,_0x2fba8e,_0x523917){return new BPromise(function(_0x5625c5,_0x2be83a){return client[_0x9a9d('0xd')](_0x4bb2a4,_0x523917)[_0x9a9d('0xe')](function(_0x3fa7cf){logger[_0x9a9d('0xf')](_0x9a9d('0x10'),_0x2fba8e,_0x9a9d('0x11'));logger[_0x9a9d('0x12')](_0x9a9d('0x13'),_0x2fba8e,_0x9a9d('0x11'),JSON[_0x9a9d('0x14')](_0x3fa7cf));if(_0x3fa7cf[_0x9a9d('0x15')]){if(_0x3fa7cf['error'][_0x9a9d('0x16')]===0x1f4){logger[_0x9a9d('0x15')]('SmsQueueReport,\x20%s,\x20%s',_0x2fba8e,_0x3fa7cf[_0x9a9d('0x15')]['message']);return _0x2be83a(_0x3fa7cf[_0x9a9d('0x15')][_0x9a9d('0x17')]);}logger[_0x9a9d('0x15')](_0x9a9d('0x10'),_0x2fba8e,_0x3fa7cf[_0x9a9d('0x15')][_0x9a9d('0x17')]);return _0x5625c5(_0x3fa7cf['error']['message']);}else{logger[_0x9a9d('0xf')](_0x9a9d('0x10'),_0x2fba8e,_0x9a9d('0x11'));_0x5625c5(_0x3fa7cf[_0x9a9d('0x18')][_0x9a9d('0x17')]);}})['catch'](function(_0x5d057f){logger['error'](_0x9a9d('0x10'),_0x2fba8e,_0x5d057f);_0x2be83a(_0x5d057f);});});}exports['CreateSmsQueueReport']=function(_0x559f55){var _0x2502e8=this;return new Promise(function(_0x581c5c,_0x19ab9a){return db[_0x9a9d('0x19')][_0x9a9d('0x1a')](_0x559f55['body'],{'raw':_0x559f55[_0x9a9d('0x1b')]?_0x559f55[_0x9a9d('0x1b')][_0x9a9d('0x1c')]===undefined?!![]:![]:!![]})[_0x9a9d('0xe')](function(_0x874ced){logger[_0x9a9d('0xf')](_0x9a9d('0x1d'),_0x559f55);logger[_0x9a9d('0x12')](_0x9a9d('0x1d'),_0x559f55,JSON[_0x9a9d('0x14')](_0x874ced));_0x581c5c(_0x874ced);})[_0x9a9d('0x1e')](function(_0x3db305){logger[_0x9a9d('0x15')](_0x9a9d('0x1d'),_0x3db305[_0x9a9d('0x17')],_0x559f55);_0x19ab9a(_0x2502e8['error'](0x1f4,_0x3db305[_0x9a9d('0x17')]));});});};exports['UpdateSmsQueueReport']=function(_0x34d4a5){var _0x1b5000=this;return new Promise(function(_0x47b123,_0x3a70a6){return db[_0x9a9d('0x19')][_0x9a9d('0x1f')](_0x34d4a5[_0x9a9d('0x20')],{'raw':_0x34d4a5[_0x9a9d('0x1b')]?_0x34d4a5[_0x9a9d('0x1b')][_0x9a9d('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x34d4a5['options']?_0x34d4a5[_0x9a9d('0x1b')][_0x9a9d('0x21')]||null:null,'attributes':_0x34d4a5['options']?_0x34d4a5['options'][_0x9a9d('0x22')]||null:null,'limit':_0x34d4a5[_0x9a9d('0x1b')]?_0x34d4a5[_0x9a9d('0x1b')]['limit']||null:null})[_0x9a9d('0xe')](function(_0x198d3c){logger[_0x9a9d('0xf')](_0x9a9d('0x23'),_0x34d4a5);logger[_0x9a9d('0x12')](_0x9a9d('0x23'),_0x34d4a5,JSON[_0x9a9d('0x14')](_0x198d3c));_0x47b123(_0x198d3c);})['catch'](function(_0x111dac){logger[_0x9a9d('0x15')]('UpdateSmsQueueReport',_0x111dac[_0x9a9d('0x17')],_0x34d4a5);_0x3a70a6(_0x1b5000[_0x9a9d('0x15')](0x1f4,_0x111dac['message']));});});};
\ No newline at end of file
+var _0xc29a=['rpc','../../config/environment','jayson/promise','client','http','then','info','SmsQueueReport,\x20%s,\x20%s','request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','create','options','CreateSmsQueueReport','catch','UpdateSmsQueueReport','SmsQueueReport','update','raw','where','attributes','limit','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x5bbbcf,_0x724476){var _0x235eaa=function(_0x38251c){while(--_0x38251c){_0x5bbbcf['push'](_0x5bbbcf['shift']());}};_0x235eaa(++_0x724476);}(_0xc29a,0x184));var _0xac29=function(_0x1eb2f7,_0x3859e9){_0x1eb2f7=_0x1eb2f7-0x0;var _0x43f237=_0xc29a[_0x1eb2f7];return _0x43f237;};'use strict';var _=require(_0xac29('0x0'));var util=require(_0xac29('0x1'));var moment=require(_0xac29('0x2'));var BPromise=require('bluebird');var rs=require(_0xac29('0x3'));var fs=require('fs');var Redis=require(_0xac29('0x4'));var db=require(_0xac29('0x5'))['db'];var utils=require(_0xac29('0x6'));var logger=require(_0xac29('0x7'))(_0xac29('0x8'));var config=require(_0xac29('0x9'));var jayson=require(_0xac29('0xa'));var client=jayson[_0xac29('0xb')][_0xac29('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x9b2740,_0x2e377b,_0x4de0e5){return new BPromise(function(_0x447807,_0x4459ea){return client['request'](_0x9b2740,_0x4de0e5)[_0xac29('0xd')](function(_0x3b4118){logger[_0xac29('0xe')](_0xac29('0xf'),_0x2e377b,_0xac29('0x10'));logger[_0xac29('0x11')](_0xac29('0x12'),_0x2e377b,_0xac29('0x10'),JSON[_0xac29('0x13')](_0x3b4118));if(_0x3b4118[_0xac29('0x14')]){if(_0x3b4118[_0xac29('0x14')]['code']===0x1f4){logger[_0xac29('0x14')](_0xac29('0xf'),_0x2e377b,_0x3b4118[_0xac29('0x14')][_0xac29('0x15')]);return _0x4459ea(_0x3b4118[_0xac29('0x14')]['message']);}logger[_0xac29('0x14')](_0xac29('0xf'),_0x2e377b,_0x3b4118['error'][_0xac29('0x15')]);return _0x447807(_0x3b4118[_0xac29('0x14')][_0xac29('0x15')]);}else{logger['info'](_0xac29('0xf'),_0x2e377b,_0xac29('0x10'));_0x447807(_0x3b4118['result']['message']);}})['catch'](function(_0x2bb915){logger[_0xac29('0x14')](_0xac29('0xf'),_0x2e377b,_0x2bb915);_0x4459ea(_0x2bb915);});});}exports['CreateSmsQueueReport']=function(_0x3dbe9c){var _0x16e47c=this;return new Promise(function(_0x26fd66,_0x431559){return db['SmsQueueReport'][_0xac29('0x16')](_0x3dbe9c['body'],{'raw':_0x3dbe9c[_0xac29('0x17')]?_0x3dbe9c[_0xac29('0x17')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x226121){logger[_0xac29('0xe')](_0xac29('0x18'),_0x3dbe9c);logger[_0xac29('0x11')]('CreateSmsQueueReport',_0x3dbe9c,JSON['stringify'](_0x226121));_0x26fd66(_0x226121);})[_0xac29('0x19')](function(_0x29a2c9){logger[_0xac29('0x14')](_0xac29('0x18'),_0x29a2c9[_0xac29('0x15')],_0x3dbe9c);_0x431559(_0x16e47c[_0xac29('0x14')](0x1f4,_0x29a2c9[_0xac29('0x15')]));});});};exports[_0xac29('0x1a')]=function(_0x44bde6){var _0x31a15a=this;return new Promise(function(_0x44bac6,_0x751423){return db[_0xac29('0x1b')][_0xac29('0x1c')](_0x44bde6['body'],{'raw':_0x44bde6[_0xac29('0x17')]?_0x44bde6[_0xac29('0x17')][_0xac29('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x44bde6[_0xac29('0x17')]?_0x44bde6[_0xac29('0x17')][_0xac29('0x1e')]||null:null,'attributes':_0x44bde6[_0xac29('0x17')]?_0x44bde6[_0xac29('0x17')][_0xac29('0x1f')]||null:null,'limit':_0x44bde6[_0xac29('0x17')]?_0x44bde6[_0xac29('0x17')][_0xac29('0x20')]||null:null})['then'](function(_0x2a6e6b){logger[_0xac29('0xe')](_0xac29('0x1a'),_0x44bde6);logger['debug']('UpdateSmsQueueReport',_0x44bde6,JSON[_0xac29('0x13')](_0x2a6e6b));_0x44bac6(_0x2a6e6b);})[_0xac29('0x19')](function(_0xbcb013){logger[_0xac29('0x14')](_0xac29('0x1a'),_0xbcb013[_0xac29('0x15')],_0x44bde6);_0x751423(_0x31a15a['error'](0x1f4,_0xbcb013[_0xac29('0x15')]));});});};
\ No newline at end of file
index 232f22d..2259be4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x277c=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','describe','/:id','show','post','create','update','delete','destroy','multer','path','connect-timeout'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x277c,0x153));var _0xc277=function(_0x1660c1,_0x330b1c){_0x1660c1=_0x1660c1-0x0;var _0x1a13ea=_0x277c[_0x1660c1];return _0x1a13ea;};'use strict';var multer=require(_0xc277('0x0'));var util=require('util');var path=require(_0xc277('0x1'));var timeout=require(_0xc277('0x2'));var express=require(_0xc277('0x3'));var router=express[_0xc277('0x4')]();var fs_extra=require(_0xc277('0x5'));var auth=require(_0xc277('0x6'));var interaction=require(_0xc277('0x7'));var config=require(_0xc277('0x8'));var controller=require('./smsTransferReport.controller');router['get']('/',auth[_0xc277('0x9')](),controller['index']);router[_0xc277('0xa')]('/describe',auth[_0xc277('0x9')](),controller[_0xc277('0xb')]);router['get'](_0xc277('0xc'),auth[_0xc277('0x9')](),controller[_0xc277('0xd')]);router[_0xc277('0xe')]('/',auth[_0xc277('0x9')](),controller[_0xc277('0xf')]);router['put']('/:id',auth[_0xc277('0x9')](),controller[_0xc277('0x10')]);router[_0xc277('0x11')](_0xc277('0xc'),auth['isAuthenticated'](),controller[_0xc277('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xa7e6=['get','index','/describe','isAuthenticated','describe','/:id','show','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller'];(function(_0x4a8d46,_0x135232){var _0x46de3b=function(_0xbf250e){while(--_0xbf250e){_0x4a8d46['push'](_0x4a8d46['shift']());}};_0x46de3b(++_0x135232);}(_0xa7e6,0x74));var _0x6a7e=function(_0xca67ec,_0x4a6d13){_0xca67ec=_0xca67ec-0x0;var _0x509220=_0xa7e6[_0xca67ec];return _0x509220;};'use strict';var multer=require(_0x6a7e('0x0'));var util=require(_0x6a7e('0x1'));var path=require(_0x6a7e('0x2'));var timeout=require(_0x6a7e('0x3'));var express=require(_0x6a7e('0x4'));var router=express[_0x6a7e('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x6a7e('0x6'));var interaction=require(_0x6a7e('0x7'));var config=require(_0x6a7e('0x8'));var controller=require(_0x6a7e('0x9'));router[_0x6a7e('0xa')]('/',auth['isAuthenticated'](),controller[_0x6a7e('0xb')]);router[_0x6a7e('0xa')](_0x6a7e('0xc'),auth[_0x6a7e('0xd')](),controller[_0x6a7e('0xe')]);router[_0x6a7e('0xa')](_0x6a7e('0xf'),auth[_0x6a7e('0xd')](),controller[_0x6a7e('0x10')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x6a7e('0xf'),auth[_0x6a7e('0xd')](),controller[_0x6a7e('0x11')]);router[_0x6a7e('0x12')](_0x6a7e('0xf'),auth['isAuthenticated'](),controller[_0x6a7e('0x13')]);module[_0x6a7e('0x14')]=router;
\ No newline at end of file
index 271a0cc..3237532 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['NOW','moment','sequelize','exports','account','agent','queue'];(function(_0x52b0d3,_0x325acf){var _0x5d6a71=function(_0x40a589){while(--_0x40a589){_0x52b0d3['push'](_0x52b0d3['shift']());}};_0x5d6a71(++_0x325acf);}(_0x70e0,0x17b));var _0x070e=function(_0x11e243,_0x4faa32){_0x11e243=_0x11e243-0x0;var _0x1a12a6=_0x70e0[_0x11e243];return _0x1a12a6;};'use strict';var moment=require(_0x070e('0x0'));var Sequelize=require(_0x070e('0x1'));module[_0x070e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x070e('0x3'),_0x070e('0x4'),_0x070e('0x5')),'allowNull':![],'defaultValue':_0x070e('0x5')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x070e('0x6')]}};
\ No newline at end of file
+var _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0x46f2a3,_0x24f9a3){var _0x507f97=function(_0x3e72e5){while(--_0x3e72e5){_0x46f2a3['push'](_0x46f2a3['shift']());}};_0x507f97(++_0x24f9a3);}(_0xedd9,0xfc));var _0x9edd=function(_0x3c0813,_0x26efe4){_0x3c0813=_0x3c0813-0x0;var _0x593356=_0xedd9[_0x3c0813];return _0x593356;};'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
index 635886e..95d8faf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdeb6=['path','sox','to-csv','ejs','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','limit','undefined','count','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','map','SmsTransferReport','rawAttributes','fieldName','type','key','query','keys','model','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','pick','filters','filter','merge','where','includeAll','include','findAll','rows','catch','show','params','length','options','body','find','describe','rimraf','fast-json-patch','request-promise','moment','bluebird','util'];(function(_0x325203,_0x186137){var _0x2500b6=function(_0x329f75){while(--_0x329f75){_0x325203['push'](_0x325203['shift']());}};_0x2500b6(++_0x186137);}(_0xdeb6,0x90));var _0x6deb=function(_0x550e29,_0x4047f){_0x550e29=_0x550e29-0x0;var _0x3515b6=_0xdeb6[_0x550e29];return _0x3515b6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6deb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6deb('0x1'));var rp=require(_0x6deb('0x2'));var moment=require(_0x6deb('0x3'));var BPromise=require(_0x6deb('0x4'));var Mustache=require('mustache');var util=require(_0x6deb('0x5'));var path=require(_0x6deb('0x6'));var sox=require(_0x6deb('0x7'));var csv=require(_0x6deb('0x8'));var ejs=require(_0x6deb('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x6deb('0xa'));var crypto=require('crypto');var jsforce=require(_0x6deb('0xb'));var deskjs=require(_0x6deb('0xc'));var toCsv=require('to-csv');var querystring=require(_0x6deb('0xd'));var Papa=require(_0x6deb('0xe'));var Redis=require(_0x6deb('0xf'));var authService=require(_0x6deb('0x10'));var qs=require(_0x6deb('0x11'));var as=require(_0x6deb('0x12'));var hardwareService=require(_0x6deb('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x6deb('0x14'));var config=require(_0x6deb('0x15'));var licenseUtil=require(_0x6deb('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xc00e44,_0x277b88){_0x277b88=_0x277b88||0xcc;return function(_0x1f31a7){if(_0x1f31a7){return _0xc00e44[_0x6deb('0x17')](_0x277b88);}return _0xc00e44['status'](_0x277b88)[_0x6deb('0x18')]();};}function respondWithResult(_0x4b26cc,_0x3bd675){_0x3bd675=_0x3bd675||0xc8;return function(_0x10f945){if(_0x10f945){return _0x4b26cc[_0x6deb('0x19')](_0x3bd675)[_0x6deb('0x1a')](_0x10f945);}};}function respondWithFilteredResult(_0x2919fe,_0x1e1879){return function(_0x45e686){if(_0x45e686){var _0x4f45b8=typeof _0x1e1879[_0x6deb('0x1b')]==='undefined'&&typeof _0x1e1879[_0x6deb('0x1c')]===_0x6deb('0x1d');var _0x2f7ed2=_0x45e686[_0x6deb('0x1e')];var _0x3c7283=_0x4f45b8?0x0:_0x1e1879['offset'];var _0x1ac304=_0x4f45b8?_0x45e686[_0x6deb('0x1e')]:_0x1e1879['offset']+_0x1e1879[_0x6deb('0x1c')];var _0x45be96;if(_0x1ac304>=_0x2f7ed2){_0x1ac304=_0x2f7ed2;_0x45be96=0xc8;}else{_0x45be96=0xce;}_0x2919fe[_0x6deb('0x19')](_0x45be96);return _0x2919fe['set'](_0x6deb('0x1f'),_0x3c7283+'-'+_0x1ac304+'/'+_0x2f7ed2)[_0x6deb('0x1a')](_0x45e686);}return null;};}function patchUpdates(_0x545db6){return function(_0x1d1f68){try{jsonpatch[_0x6deb('0x20')](_0x1d1f68,_0x545db6,!![]);}catch(_0x54af19){return BPromise['reject'](_0x54af19);}return _0x1d1f68[_0x6deb('0x21')]();};}function saveUpdates(_0x4e9bf7,_0x4dd7fc){return function(_0x4284c9){if(_0x4284c9){return _0x4284c9[_0x6deb('0x22')](_0x4e9bf7)[_0x6deb('0x23')](function(_0x337cd6){return _0x337cd6;});}return null;};}function removeEntity(_0x3cfe57,_0x189894){return function(_0xb63c33){if(_0xb63c33){return _0xb63c33[_0x6deb('0x24')]()['then'](function(){_0x3cfe57[_0x6deb('0x19')](0xcc)[_0x6deb('0x18')]();});}};}function handleEntityNotFound(_0x1b312e,_0x1bf5d9){return function(_0x4b165f){if(!_0x4b165f){_0x1b312e['sendStatus'](0x194);}return _0x4b165f;};}function handleError(_0x48581c,_0x51eabe){_0x51eabe=_0x51eabe||0x1f4;return function(_0x438c67){logger[_0x6deb('0x25')](_0x438c67[_0x6deb('0x26')]);if(_0x438c67[_0x6deb('0x27')]){delete _0x438c67[_0x6deb('0x27')];}_0x48581c[_0x6deb('0x19')](_0x51eabe)[_0x6deb('0x28')](_0x438c67);};}exports[_0x6deb('0x29')]=function(_0x1a89da,_0x47bd58){var _0x5eac1e={},_0x1b7105={},_0x43ccf6={'count':0x0,'rows':[]};var _0x106edd=_[_0x6deb('0x2a')](db[_0x6deb('0x2b')][_0x6deb('0x2c')],function(_0x36a875){return{'name':_0x36a875[_0x6deb('0x2d')],'type':_0x36a875[_0x6deb('0x2e')][_0x6deb('0x2f')]};});_0x1b7105['model']=_[_0x6deb('0x2a')](_0x106edd,_0x6deb('0x27'));_0x1b7105[_0x6deb('0x30')]=_[_0x6deb('0x31')](_0x1a89da[_0x6deb('0x30')]);_0x1b7105['filters']=_['intersection'](_0x1b7105[_0x6deb('0x32')],_0x1b7105[_0x6deb('0x30')]);_0x5eac1e[_0x6deb('0x33')]=_[_0x6deb('0x34')](_0x1b7105[_0x6deb('0x32')],qs[_0x6deb('0x35')](_0x1a89da[_0x6deb('0x30')][_0x6deb('0x35')]));_0x5eac1e['attributes']=_0x5eac1e[_0x6deb('0x33')]['length']?_0x5eac1e['attributes']:_0x1b7105[_0x6deb('0x32')];if(!_0x1a89da[_0x6deb('0x30')][_0x6deb('0x36')](_0x6deb('0x37'))){_0x5eac1e[_0x6deb('0x1c')]=qs[_0x6deb('0x1c')](_0x1a89da[_0x6deb('0x30')]['limit']);_0x5eac1e[_0x6deb('0x1b')]=qs[_0x6deb('0x1b')](_0x1a89da[_0x6deb('0x30')][_0x6deb('0x1b')]);}_0x5eac1e[_0x6deb('0x38')]=qs[_0x6deb('0x39')](_0x1a89da[_0x6deb('0x30')]['sort']);_0x5eac1e['where']=qs['filters'](_[_0x6deb('0x3a')](_0x1a89da[_0x6deb('0x30')],_0x1b7105[_0x6deb('0x3b')]),_0x106edd);if(_0x1a89da[_0x6deb('0x30')][_0x6deb('0x3c')]){_0x5eac1e['where']=_[_0x6deb('0x3d')](_0x5eac1e[_0x6deb('0x3e')],{'$or':_['map'](_0x106edd,function(_0x1f46a0){if(_0x1f46a0[_0x6deb('0x2e')]!=='VIRTUAL'){var _0x4d839e={};_0x4d839e[_0x1f46a0[_0x6deb('0x27')]]={'$like':'%'+_0x1a89da[_0x6deb('0x30')][_0x6deb('0x3c')]+'%'};return _0x4d839e;}})});}_0x5eac1e=_['merge']({},_0x5eac1e,_0x1a89da['options']);var _0x5e06b7={'where':_0x5eac1e[_0x6deb('0x3e')]};return db[_0x6deb('0x2b')]['count'](_0x5e06b7)[_0x6deb('0x23')](function(_0x242016){_0x43ccf6[_0x6deb('0x1e')]=_0x242016;if(_0x1a89da[_0x6deb('0x30')][_0x6deb('0x3f')]){_0x5eac1e[_0x6deb('0x40')]=[{'all':!![]}];}return db[_0x6deb('0x2b')][_0x6deb('0x41')](_0x5eac1e);})[_0x6deb('0x23')](function(_0x5f0fd2){_0x43ccf6[_0x6deb('0x42')]=_0x5f0fd2;return _0x43ccf6;})[_0x6deb('0x23')](respondWithFilteredResult(_0x47bd58,_0x5eac1e))[_0x6deb('0x43')](handleError(_0x47bd58,null));};exports[_0x6deb('0x44')]=function(_0x2b4ba5,_0x3885c0){var _0x15e511={'raw':!![],'where':{'id':_0x2b4ba5[_0x6deb('0x45')]['id']}},_0x10b469={};_0x10b469[_0x6deb('0x32')]=_[_0x6deb('0x31')](db[_0x6deb('0x2b')]['rawAttributes']);_0x10b469[_0x6deb('0x30')]=_['keys'](_0x2b4ba5['query']);_0x10b469[_0x6deb('0x3b')]=_[_0x6deb('0x34')](_0x10b469[_0x6deb('0x32')],_0x10b469[_0x6deb('0x30')]);_0x15e511[_0x6deb('0x33')]=_[_0x6deb('0x34')](_0x10b469[_0x6deb('0x32')],qs[_0x6deb('0x35')](_0x2b4ba5[_0x6deb('0x30')][_0x6deb('0x35')]));_0x15e511[_0x6deb('0x33')]=_0x15e511[_0x6deb('0x33')][_0x6deb('0x46')]?_0x15e511[_0x6deb('0x33')]:_0x10b469[_0x6deb('0x32')];if(_0x2b4ba5[_0x6deb('0x30')][_0x6deb('0x3f')]){_0x15e511[_0x6deb('0x40')]=[{'all':!![]}];}_0x15e511=_[_0x6deb('0x3d')]({},_0x15e511,_0x2b4ba5[_0x6deb('0x47')]);return db[_0x6deb('0x2b')]['find'](_0x15e511)[_0x6deb('0x23')](handleEntityNotFound(_0x3885c0,null))[_0x6deb('0x23')](respondWithResult(_0x3885c0,null))['catch'](handleError(_0x3885c0,null));};exports['create']=function(_0x3b4012,_0x3c6637){return db[_0x6deb('0x2b')]['create'](_0x3b4012[_0x6deb('0x48')],{})[_0x6deb('0x23')](respondWithResult(_0x3c6637,0xc9))[_0x6deb('0x43')](handleError(_0x3c6637,null));};exports['update']=function(_0x1ec26d,_0x45de4c){if(_0x1ec26d[_0x6deb('0x48')]['id']){delete _0x1ec26d[_0x6deb('0x48')]['id'];}return db['SmsTransferReport'][_0x6deb('0x49')]({'where':{'id':_0x1ec26d['params']['id']}})[_0x6deb('0x23')](handleEntityNotFound(_0x45de4c,null))[_0x6deb('0x23')](saveUpdates(_0x1ec26d[_0x6deb('0x48')],null))[_0x6deb('0x23')](respondWithResult(_0x45de4c,null))['catch'](handleError(_0x45de4c,null));};exports['destroy']=function(_0x3c8a22,_0x41379f){return db['SmsTransferReport']['find']({'where':{'id':_0x3c8a22[_0x6deb('0x45')]['id']}})['then'](handleEntityNotFound(_0x41379f,null))[_0x6deb('0x23')](removeEntity(_0x41379f,null))[_0x6deb('0x43')](handleError(_0x41379f,null));};exports[_0x6deb('0x4a')]=function(_0x212a11,_0x5a1030){return db['SmsTransferReport'][_0x6deb('0x4a')]()[_0x6deb('0x23')](respondWithResult(_0x5a1030,null))[_0x6deb('0x43')](handleError(_0x5a1030,null));};
\ No newline at end of file
+var _0xaeb8=['find','catch','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','destroy','then','end','sendStatus','error','name','send','index','map','SmsTransferReport','rawAttributes','fieldName','type','model','keys','filters','intersection','fields','query','length','attributes','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','rows','show','include'];(function(_0x1e9c70,_0x368b6b){var _0x517ec3=function(_0x4d6e29){while(--_0x4d6e29){_0x1e9c70['push'](_0x1e9c70['shift']());}};_0x517ec3(++_0x368b6b);}(_0xaeb8,0x1e6));var _0x8aeb=function(_0x49a354,_0x5297d4){_0x49a354=_0x49a354-0x0;var _0x4cdf0b=_0xaeb8[_0x49a354];return _0x4cdf0b;};'use strict';var emlformat=require(_0x8aeb('0x0'));var rimraf=require(_0x8aeb('0x1'));var zipdir=require(_0x8aeb('0x2'));var jsonpatch=require(_0x8aeb('0x3'));var rp=require(_0x8aeb('0x4'));var moment=require(_0x8aeb('0x5'));var BPromise=require(_0x8aeb('0x6'));var Mustache=require(_0x8aeb('0x7'));var util=require('util');var path=require(_0x8aeb('0x8'));var sox=require(_0x8aeb('0x9'));var csv=require('to-csv');var ejs=require(_0x8aeb('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8aeb('0xb'));var squel=require(_0x8aeb('0xc'));var crypto=require(_0x8aeb('0xd'));var jsforce=require(_0x8aeb('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x8aeb('0xf'));var querystring=require(_0x8aeb('0x10'));var Papa=require(_0x8aeb('0x11'));var Redis=require(_0x8aeb('0x12'));var authService=require(_0x8aeb('0x13'));var qs=require(_0x8aeb('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8aeb('0x15'));var logger=require(_0x8aeb('0x16'))(_0x8aeb('0x17'));var utils=require(_0x8aeb('0x18'));var config=require(_0x8aeb('0x19'));var licenseUtil=require(_0x8aeb('0x1a'));var db=require(_0x8aeb('0x1b'))['db'];function respondWithStatusCode(_0x3b02ad,_0x18f418){_0x18f418=_0x18f418||0xcc;return function(_0x2d4ed4){if(_0x2d4ed4){return _0x3b02ad['sendStatus'](_0x18f418);}return _0x3b02ad[_0x8aeb('0x1c')](_0x18f418)['end']();};}function respondWithResult(_0x593d0f,_0x3942b4){_0x3942b4=_0x3942b4||0xc8;return function(_0x1d8fce){if(_0x1d8fce){return _0x593d0f['status'](_0x3942b4)[_0x8aeb('0x1d')](_0x1d8fce);}};}function respondWithFilteredResult(_0x374fae,_0x3a0c81){return function(_0x3dec3e){if(_0x3dec3e){var _0x4b01ff=typeof _0x3a0c81[_0x8aeb('0x1e')]===_0x8aeb('0x1f')&&typeof _0x3a0c81['limit']===_0x8aeb('0x1f');var _0x11d22e=_0x3dec3e[_0x8aeb('0x20')];var _0x5b59e6=_0x4b01ff?0x0:_0x3a0c81[_0x8aeb('0x1e')];var _0x2130b9=_0x4b01ff?_0x3dec3e[_0x8aeb('0x20')]:_0x3a0c81[_0x8aeb('0x1e')]+_0x3a0c81[_0x8aeb('0x21')];var _0x4d3597;if(_0x2130b9>=_0x11d22e){_0x2130b9=_0x11d22e;_0x4d3597=0xc8;}else{_0x4d3597=0xce;}_0x374fae[_0x8aeb('0x1c')](_0x4d3597);return _0x374fae[_0x8aeb('0x22')](_0x8aeb('0x23'),_0x5b59e6+'-'+_0x2130b9+'/'+_0x11d22e)[_0x8aeb('0x1d')](_0x3dec3e);}return null;};}function patchUpdates(_0x5cbcfa){return function(_0x4d22a0){try{jsonpatch[_0x8aeb('0x24')](_0x4d22a0,_0x5cbcfa,!![]);}catch(_0x58d04d){return BPromise[_0x8aeb('0x25')](_0x58d04d);}return _0x4d22a0[_0x8aeb('0x26')]();};}function saveUpdates(_0xb72158,_0x30d663){return function(_0xcb2039){if(_0xcb2039){return _0xcb2039['update'](_0xb72158)['then'](function(_0x1526cc){return _0x1526cc;});}return null;};}function removeEntity(_0x5a4bd9,_0x2d480e){return function(_0xcb0cde){if(_0xcb0cde){return _0xcb0cde[_0x8aeb('0x27')]()[_0x8aeb('0x28')](function(){_0x5a4bd9[_0x8aeb('0x1c')](0xcc)[_0x8aeb('0x29')]();});}};}function handleEntityNotFound(_0x5cf5d5,_0x43cd0a){return function(_0xb2a00b){if(!_0xb2a00b){_0x5cf5d5[_0x8aeb('0x2a')](0x194);}return _0xb2a00b;};}function handleError(_0x553201,_0x52b11f){_0x52b11f=_0x52b11f||0x1f4;return function(_0x377a8d){logger[_0x8aeb('0x2b')](_0x377a8d['stack']);if(_0x377a8d['name']){delete _0x377a8d[_0x8aeb('0x2c')];}_0x553201[_0x8aeb('0x1c')](_0x52b11f)[_0x8aeb('0x2d')](_0x377a8d);};}exports[_0x8aeb('0x2e')]=function(_0x29eed8,_0x53e5dc){var _0x1485f1={},_0x31a8ac={},_0x2bf00f={'count':0x0,'rows':[]};var _0x5602b0=_[_0x8aeb('0x2f')](db[_0x8aeb('0x30')][_0x8aeb('0x31')],function(_0x3ee1db){return{'name':_0x3ee1db[_0x8aeb('0x32')],'type':_0x3ee1db[_0x8aeb('0x33')]['key']};});_0x31a8ac[_0x8aeb('0x34')]=_['map'](_0x5602b0,'name');_0x31a8ac['query']=_[_0x8aeb('0x35')](_0x29eed8['query']);_0x31a8ac[_0x8aeb('0x36')]=_['intersection'](_0x31a8ac[_0x8aeb('0x34')],_0x31a8ac['query']);_0x1485f1['attributes']=_[_0x8aeb('0x37')](_0x31a8ac[_0x8aeb('0x34')],qs[_0x8aeb('0x38')](_0x29eed8[_0x8aeb('0x39')][_0x8aeb('0x38')]));_0x1485f1['attributes']=_0x1485f1['attributes'][_0x8aeb('0x3a')]?_0x1485f1[_0x8aeb('0x3b')]:_0x31a8ac[_0x8aeb('0x34')];if(!_0x29eed8[_0x8aeb('0x39')][_0x8aeb('0x3c')](_0x8aeb('0x3d'))){_0x1485f1[_0x8aeb('0x21')]=qs[_0x8aeb('0x21')](_0x29eed8['query'][_0x8aeb('0x21')]);_0x1485f1[_0x8aeb('0x1e')]=qs['offset'](_0x29eed8[_0x8aeb('0x39')]['offset']);}_0x1485f1[_0x8aeb('0x3e')]=qs[_0x8aeb('0x3f')](_0x29eed8['query'][_0x8aeb('0x3f')]);_0x1485f1[_0x8aeb('0x40')]=qs[_0x8aeb('0x36')](_[_0x8aeb('0x41')](_0x29eed8[_0x8aeb('0x39')],_0x31a8ac[_0x8aeb('0x36')]),_0x5602b0);if(_0x29eed8[_0x8aeb('0x39')]['filter']){_0x1485f1[_0x8aeb('0x40')]=_[_0x8aeb('0x42')](_0x1485f1[_0x8aeb('0x40')],{'$or':_['map'](_0x5602b0,function(_0x13c453){if(_0x13c453[_0x8aeb('0x33')]!==_0x8aeb('0x43')){var _0x2ac251={};_0x2ac251[_0x13c453[_0x8aeb('0x2c')]]={'$like':'%'+_0x29eed8['query'][_0x8aeb('0x44')]+'%'};return _0x2ac251;}})});}_0x1485f1=_[_0x8aeb('0x42')]({},_0x1485f1,_0x29eed8[_0x8aeb('0x45')]);var _0x50055d={'where':_0x1485f1['where']};return db['SmsTransferReport'][_0x8aeb('0x20')](_0x50055d)[_0x8aeb('0x28')](function(_0x39b142){_0x2bf00f['count']=_0x39b142;if(_0x29eed8[_0x8aeb('0x39')][_0x8aeb('0x46')]){_0x1485f1['include']=[{'all':!![]}];}return db[_0x8aeb('0x30')]['findAll'](_0x1485f1);})[_0x8aeb('0x28')](function(_0x208ed5){_0x2bf00f[_0x8aeb('0x47')]=_0x208ed5;return _0x2bf00f;})[_0x8aeb('0x28')](respondWithFilteredResult(_0x53e5dc,_0x1485f1))['catch'](handleError(_0x53e5dc,null));};exports[_0x8aeb('0x48')]=function(_0x4fd63d,_0x1e0b22){var _0x44e4af={'raw':!![],'where':{'id':_0x4fd63d['params']['id']}},_0x14e824={};_0x14e824[_0x8aeb('0x34')]=_[_0x8aeb('0x35')](db[_0x8aeb('0x30')][_0x8aeb('0x31')]);_0x14e824[_0x8aeb('0x39')]=_[_0x8aeb('0x35')](_0x4fd63d['query']);_0x14e824[_0x8aeb('0x36')]=_[_0x8aeb('0x37')](_0x14e824[_0x8aeb('0x34')],_0x14e824[_0x8aeb('0x39')]);_0x44e4af[_0x8aeb('0x3b')]=_[_0x8aeb('0x37')](_0x14e824[_0x8aeb('0x34')],qs[_0x8aeb('0x38')](_0x4fd63d[_0x8aeb('0x39')][_0x8aeb('0x38')]));_0x44e4af[_0x8aeb('0x3b')]=_0x44e4af[_0x8aeb('0x3b')][_0x8aeb('0x3a')]?_0x44e4af[_0x8aeb('0x3b')]:_0x14e824[_0x8aeb('0x34')];if(_0x4fd63d['query']['includeAll']){_0x44e4af[_0x8aeb('0x49')]=[{'all':!![]}];}_0x44e4af=_[_0x8aeb('0x42')]({},_0x44e4af,_0x4fd63d[_0x8aeb('0x45')]);return db['SmsTransferReport'][_0x8aeb('0x4a')](_0x44e4af)['then'](handleEntityNotFound(_0x1e0b22,null))[_0x8aeb('0x28')](respondWithResult(_0x1e0b22,null))[_0x8aeb('0x4b')](handleError(_0x1e0b22,null));};exports[_0x8aeb('0x4c')]=function(_0x329a98,_0x274cf1){return db[_0x8aeb('0x30')][_0x8aeb('0x4c')](_0x329a98[_0x8aeb('0x4d')],{})[_0x8aeb('0x28')](respondWithResult(_0x274cf1,0xc9))[_0x8aeb('0x4b')](handleError(_0x274cf1,null));};exports['update']=function(_0x3d4186,_0x2fd95f){if(_0x3d4186[_0x8aeb('0x4d')]['id']){delete _0x3d4186[_0x8aeb('0x4d')]['id'];}return db['SmsTransferReport'][_0x8aeb('0x4a')]({'where':{'id':_0x3d4186['params']['id']}})[_0x8aeb('0x28')](handleEntityNotFound(_0x2fd95f,null))['then'](saveUpdates(_0x3d4186[_0x8aeb('0x4d')],null))[_0x8aeb('0x28')](respondWithResult(_0x2fd95f,null))[_0x8aeb('0x4b')](handleError(_0x2fd95f,null));};exports['destroy']=function(_0x1802ae,_0x504b9a){return db['SmsTransferReport'][_0x8aeb('0x4a')]({'where':{'id':_0x1802ae[_0x8aeb('0x4e')]['id']}})[_0x8aeb('0x28')](handleEntityNotFound(_0x504b9a,null))['then'](removeEntity(_0x504b9a,null))[_0x8aeb('0x4b')](handleError(_0x504b9a,null));};exports[_0x8aeb('0x4f')]=function(_0x468cb0,_0x4f5b7e){return db[_0x8aeb('0x30')]['describe']()[_0x8aeb('0x28')](respondWithResult(_0x4f5b7e,null))['catch'](handleError(_0x4f5b7e,null));};
\ No newline at end of file
index cb7e9d1..2e1e612 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x234f=['exports','uniqueid','lodash','util','../../config/logger','api','moment','../../config/environment','./smsTransferReport.attributes'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x234f,0xb6));var _0xf234=function(_0x56a8ca,_0x37f754){_0x56a8ca=_0x56a8ca-0x0;var _0x2973b9=_0x234f[_0x56a8ca];return _0x2973b9;};'use strict';var _=require(_0xf234('0x0'));var util=require(_0xf234('0x1'));var logger=require(_0xf234('0x2'))(_0xf234('0x3'));var moment=require(_0xf234('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xf234('0x5'));var attributes=require(_0xf234('0x6'));module[_0xf234('0x7')]=function(_0x3bfa94,_0x334f1c){return _0x3bfa94['define']('SmsTransferReport',attributes,{'tableName':'report_sms_transfer','paranoid':![],'indexes':[{'name':_0xf234('0x8'),'fields':[_0xf234('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8406=['report_sms_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./smsTransferReport.attributes','define','SmsTransferReport'];(function(_0x130c67,_0x5dcc79){var _0x4e06c7=function(_0x122ea9){while(--_0x122ea9){_0x130c67['push'](_0x130c67['shift']());}};_0x4e06c7(++_0x5dcc79);}(_0x8406,0x10c));var _0x6840=function(_0x5b1100,_0x5d48ee){_0x5b1100=_0x5b1100-0x0;var _0x38321f=_0x8406[_0x5b1100];return _0x38321f;};'use strict';var _=require(_0x6840('0x0'));var util=require(_0x6840('0x1'));var logger=require(_0x6840('0x2'))(_0x6840('0x3'));var moment=require(_0x6840('0x4'));var BPromise=require(_0x6840('0x5'));var rp=require(_0x6840('0x6'));var fs=require('fs');var path=require(_0x6840('0x7'));var rimraf=require('rimraf');var config=require(_0x6840('0x8'));var attributes=require(_0x6840('0x9'));module['exports']=function(_0x4a33be,_0xf0cbcb){return _0x4a33be[_0x6840('0xa')](_0x6840('0xb'),attributes,{'tableName':_0x6840('0xc'),'paranoid':![],'indexes':[{'name':_0x6840('0xd'),'fields':[_0x6840('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 9223358..5dd24b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc1c=['info','request\x20sent','SmsTransferReport,\x20%s,\x20%s,\x20%s','error','SmsTransferReport,\x20%s,\x20%s','message','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then'];(function(_0xdeefbd,_0x9e1b3d){var _0x4ff63f=function(_0x4b51f9){while(--_0x4b51f9){_0xdeefbd['push'](_0xdeefbd['shift']());}};_0x4ff63f(++_0x9e1b3d);}(_0xbc1c,0xd8));var _0xcbc1=function(_0x24579a,_0x59612d){_0x24579a=_0x24579a-0x0;var _0x59dff7=_0xbc1c[_0x24579a];return _0x59dff7;};'use strict';var _=require('lodash');var util=require(_0xcbc1('0x0'));var moment=require('moment');var BPromise=require(_0xcbc1('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcbc1('0x2'));var db=require(_0xcbc1('0x3'))['db'];var utils=require(_0xcbc1('0x4'));var logger=require(_0xcbc1('0x5'))('rpc');var config=require(_0xcbc1('0x6'));var jayson=require(_0xcbc1('0x7'));var client=jayson[_0xcbc1('0x8')][_0xcbc1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x39cb56,_0x23cafd,_0x4837b7){return new BPromise(function(_0x40fa2d,_0xea6e9a){return client[_0xcbc1('0xa')](_0x39cb56,_0x4837b7)[_0xcbc1('0xb')](function(_0x438eec){logger[_0xcbc1('0xc')]('SmsTransferReport,\x20%s,\x20%s',_0x23cafd,_0xcbc1('0xd'));logger['debug'](_0xcbc1('0xe'),_0x23cafd,_0xcbc1('0xd'),JSON['stringify'](_0x438eec));if(_0x438eec[_0xcbc1('0xf')]){if(_0x438eec['error']['code']===0x1f4){logger[_0xcbc1('0xf')](_0xcbc1('0x10'),_0x23cafd,_0x438eec['error'][_0xcbc1('0x11')]);return _0xea6e9a(_0x438eec[_0xcbc1('0xf')]['message']);}logger['error'](_0xcbc1('0x10'),_0x23cafd,_0x438eec['error'][_0xcbc1('0x11')]);return _0x40fa2d(_0x438eec[_0xcbc1('0xf')][_0xcbc1('0x11')]);}else{logger[_0xcbc1('0xc')](_0xcbc1('0x10'),_0x23cafd,'request\x20sent');_0x40fa2d(_0x438eec['result']['message']);}})[_0xcbc1('0x12')](function(_0x404642){logger[_0xcbc1('0xf')](_0xcbc1('0x10'),_0x23cafd,_0x404642);_0xea6e9a(_0x404642);});});}
\ No newline at end of file
+var _0x1de4=['info','SmsTransferReport,\x20%s,\x20%s','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1de4,0x94));var _0x41de=function(_0x2277cf,_0x420f63){_0x2277cf=_0x2277cf-0x0;var _0x2a0e2f=_0x1de4[_0x2277cf];return _0x2a0e2f;};'use strict';var _=require(_0x41de('0x0'));var util=require(_0x41de('0x1'));var moment=require(_0x41de('0x2'));var BPromise=require(_0x41de('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x41de('0x4'));var db=require(_0x41de('0x5'))['db'];var utils=require(_0x41de('0x6'));var logger=require('../../config/logger')(_0x41de('0x7'));var config=require(_0x41de('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x41de('0x9')][_0x41de('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2f1078,_0x352d9b,_0x50f716){return new BPromise(function(_0x4c292c,_0x344b7b){return client[_0x41de('0xb')](_0x2f1078,_0x50f716)[_0x41de('0xc')](function(_0xb268da){logger[_0x41de('0xd')](_0x41de('0xe'),_0x352d9b,'request\x20sent');logger[_0x41de('0xf')](_0x41de('0x10'),_0x352d9b,_0x41de('0x11'),JSON[_0x41de('0x12')](_0xb268da));if(_0xb268da[_0x41de('0x13')]){if(_0xb268da[_0x41de('0x13')]['code']===0x1f4){logger[_0x41de('0x13')](_0x41de('0xe'),_0x352d9b,_0xb268da[_0x41de('0x13')]['message']);return _0x344b7b(_0xb268da[_0x41de('0x13')][_0x41de('0x14')]);}logger['error'](_0x41de('0xe'),_0x352d9b,_0xb268da[_0x41de('0x13')][_0x41de('0x14')]);return _0x4c292c(_0xb268da[_0x41de('0x13')][_0x41de('0x14')]);}else{logger[_0x41de('0xd')](_0x41de('0xe'),_0x352d9b,_0x41de('0x11'));_0x4c292c(_0xb268da[_0x41de('0x15')][_0x41de('0x14')]);}})[_0x41de('0x16')](function(_0x4a9591){logger[_0x41de('0x13')](_0x41de('0xe'),_0x352d9b,_0x4a9591);_0x344b7b(_0x4a9591);});});}
\ No newline at end of file
index fbe6f06..89460c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb54e=['diskStorage','join','root','server/files/sounds/original/','originalname','replace','format','%s-%s%s','basename','extname','single','file','create','/:id','update','delete','multer','util','fs-extra','../../components/auth/service','../../components/interaction/service','./sound.controller','get','index','isAuthenticated','show','/:id/download','download'];(function(_0x5e9d35,_0x382c91){var _0x3beb2e=function(_0x4242cf){while(--_0x4242cf){_0x5e9d35['push'](_0x5e9d35['shift']());}};_0x3beb2e(++_0x382c91);}(_0xb54e,0xd4));var _0xeb54=function(_0x27edb1,_0x49b445){_0x27edb1=_0x27edb1-0x0;var _0x2deb9f=_0xb54e[_0x27edb1];return _0x2deb9f;};'use strict';var multer=require(_0xeb54('0x0'));var util=require(_0xeb54('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xeb54('0x2'));var auth=require(_0xeb54('0x3'));var interaction=require(_0xeb54('0x4'));var config=require('../../config/environment');var controller=require(_0xeb54('0x5'));router[_0xeb54('0x6')]('/',auth['isAuthenticated'](),controller[_0xeb54('0x7')]);router[_0xeb54('0x6')]('/:id',auth[_0xeb54('0x8')](),controller[_0xeb54('0x9')]);router['get'](_0xeb54('0xa'),auth[_0xeb54('0x8')](),controller[_0xeb54('0xb')]);var upload=multer({'storage':multer[_0xeb54('0xc')]({'destination':function(_0x2431ed,_0x209bb9,_0x18eb2a){_0x18eb2a(null,path[_0xeb54('0xd')](config[_0xeb54('0xe')],_0xeb54('0xf')));},'filename':function(_0x1eeb1e,_0x189f86,_0x5c86ff){_0x189f86[_0xeb54('0x10')]=_0x189f86[_0xeb54('0x10')][_0xeb54('0x11')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x5c86ff(null,util[_0xeb54('0x12')](_0xeb54('0x13'),path[_0xeb54('0x14')](_0x189f86[_0xeb54('0x10')],path[_0xeb54('0x15')](_0x189f86[_0xeb54('0x10')])),Date['now'](),path['extname'](_0x189f86[_0xeb54('0x10')])));}})});router['post']('/',upload[_0xeb54('0x16')](_0xeb54('0x17')),controller[_0xeb54('0x18')]);router['put'](_0xeb54('0x19'),auth[_0xeb54('0x8')](),controller[_0xeb54('0x1a')]);router[_0xeb54('0x1b')](_0xeb54('0x19'),auth['isAuthenticated'](),controller[_0xeb54('0x1b')]);module['exports']=router;
\ No newline at end of file
+var _0x210d=['%s-%s%s','basename','extname','now','post','single','create','put','/:id','update','delete','exports','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./sound.controller','isAuthenticated','get','download','join','root','server/files/sounds/original/','originalname'];(function(_0x4d7c86,_0x9b62a6){var _0x59443d=function(_0x5af971){while(--_0x5af971){_0x4d7c86['push'](_0x4d7c86['shift']());}};_0x59443d(++_0x9b62a6);}(_0x210d,0x1e0));var _0xd210=function(_0x2cc711,_0x300328){_0x2cc711=_0x2cc711-0x0;var _0x31a52e=_0x210d[_0x2cc711];return _0x31a52e;};'use strict';var multer=require('multer');var util=require(_0xd210('0x0'));var path=require('path');var timeout=require(_0xd210('0x1'));var express=require('express');var router=express[_0xd210('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xd210('0x3'));var interaction=require(_0xd210('0x4'));var config=require(_0xd210('0x5'));var controller=require(_0xd210('0x6'));router['get']('/',auth[_0xd210('0x7')](),controller['index']);router['get']('/:id',auth[_0xd210('0x7')](),controller['show']);router[_0xd210('0x8')]('/:id/download',auth['isAuthenticated'](),controller[_0xd210('0x9')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x42a476,_0x1e793b,_0x451b5e){_0x451b5e(null,path[_0xd210('0xa')](config[_0xd210('0xb')],_0xd210('0xc')));},'filename':function(_0x362fab,_0x447932,_0x334544){_0x447932[_0xd210('0xd')]=_0x447932['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x334544(null,util['format'](_0xd210('0xe'),path[_0xd210('0xf')](_0x447932['originalname'],path[_0xd210('0x10')](_0x447932[_0xd210('0xd')])),Date[_0xd210('0x11')](),path[_0xd210('0x10')](_0x447932['originalname'])));}})});router[_0xd210('0x12')]('/',upload[_0xd210('0x13')]('file'),controller[_0xd210('0x14')]);router[_0xd210('0x15')](_0xd210('0x16'),auth[_0xd210('0x7')](),controller[_0xd210('0x17')]);router[_0xd210('0x18')](_0xd210('0x16'),auth['isAuthenticated'](),controller[_0xd210('0x18')]);module[_0xd210('0x19')]=router;
\ No newline at end of file
index 206516a..2337d42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd543=['exports','STRING','name','BIGINT','INTEGER','FLOAT','sequelize'];(function(_0x2e0fe0,_0x331f12){var _0x36ddbf=function(_0x2a2887){while(--_0x2a2887){_0x2e0fe0['push'](_0x2e0fe0['shift']());}};_0x36ddbf(++_0x331f12);}(_0xd543,0x125));var _0x3d54=function(_0x499445,_0x5e1bae){_0x499445=_0x499445-0x0;var _0x3c6337=_0xd543[_0x499445];return _0x3c6337;};'use strict';var Sequelize=require(_0x3d54('0x0'));module[_0x3d54('0x1')]={'name':{'type':Sequelize[_0x3d54('0x2')],'unique':_0x3d54('0x3'),'allowNull':![]},'save_name':{'type':Sequelize[_0x3d54('0x2')]},'display_name':{'type':Sequelize[_0x3d54('0x2')],'defaultValue':''},'description':{'type':Sequelize[_0x3d54('0x2')]},'original_format':{'type':Sequelize['STRING']},'original_duration':{'type':Sequelize['FLOAT']},'original_sampleCount':{'type':Sequelize[_0x3d54('0x4')]},'original_channelCount':{'type':Sequelize[_0x3d54('0x5')]},'original_bitRate':{'type':Sequelize['BIGINT']},'original_sampleRate':{'type':Sequelize['INTEGER']},'converted_format':{'type':Sequelize[_0x3d54('0x2')]},'converted_duration':{'type':Sequelize[_0x3d54('0x6')]},'converted_sampleCount':{'type':Sequelize['BIGINT']},'converted_channelCount':{'type':Sequelize[_0x3d54('0x5')]},'converted_bitRate':{'type':Sequelize[_0x3d54('0x4')]},'converted_sampleRate':{'type':Sequelize[_0x3d54('0x5')]}};
\ No newline at end of file
+var _0x750b=['exports','STRING','name','FLOAT','BIGINT','INTEGER','sequelize'];(function(_0x25d476,_0x2f6a6b){var _0x30a2=function(_0xaa54cc){while(--_0xaa54cc){_0x25d476['push'](_0x25d476['shift']());}};_0x30a2(++_0x2f6a6b);}(_0x750b,0x1bf));var _0xb750=function(_0x5b076d,_0x279258){_0x5b076d=_0x5b076d-0x0;var _0x3b506d=_0x750b[_0x5b076d];return _0x3b506d;};'use strict';var Sequelize=require(_0xb750('0x0'));module[_0xb750('0x1')]={'name':{'type':Sequelize[_0xb750('0x2')],'unique':_0xb750('0x3'),'allowNull':![]},'save_name':{'type':Sequelize[_0xb750('0x2')]},'display_name':{'type':Sequelize[_0xb750('0x2')],'defaultValue':''},'description':{'type':Sequelize[_0xb750('0x2')]},'original_format':{'type':Sequelize['STRING']},'original_duration':{'type':Sequelize[_0xb750('0x4')]},'original_sampleCount':{'type':Sequelize[_0xb750('0x5')]},'original_channelCount':{'type':Sequelize['INTEGER']},'original_bitRate':{'type':Sequelize[_0xb750('0x5')]},'original_sampleRate':{'type':Sequelize[_0xb750('0x6')]},'converted_format':{'type':Sequelize['STRING']},'converted_duration':{'type':Sequelize[_0xb750('0x4')]},'converted_sampleCount':{'type':Sequelize[_0xb750('0x5')]},'converted_channelCount':{'type':Sequelize['INTEGER']},'converted_bitRate':{'type':Sequelize[_0xb750('0x5')]},'converted_sampleRate':{'type':Sequelize[_0xb750('0x6')]}};
\ No newline at end of file
index 937e90c..470f777 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81ce=['hasOwnProperty','nolimit','order','sort','pick','where','VIRTUAL','merge','options','catch','params','fields','includeAll','include','download','converted_format','join','root','server/files/sounds/converted','save_name','Sequelize','ValidationError','Sound\x20not\x20found','%s.%s','create','basename','extname','originalname','file','filename','wav','server/files/sounds/original','format','Sound\x20upload\x20filepath:\x20%s','info','Sound\x20upload\x20destination:\x20%s','chmodSync','error','unlinkSync','src','original_duration','duration','original_sampleCount','sampleCount','channelCount','bitRate','original_sampleRate','sampleRate','converted_channelCount','converted_bitRate','converted_sampleRate','0777','body','role','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','get','UserProfileSection','find','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','description','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','Sounds','UserProfileResource','end','stack','send','index','map','Sound','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','attributes','length'];(function(_0x2ab0f2,_0x3872b0){var _0x46c96b=function(_0x507ff0){while(--_0x507ff0){_0x2ab0f2['push'](_0x2ab0f2['shift']());}};_0x46c96b(++_0x3872b0);}(_0x81ce,0x1b0));var _0xe81c=function(_0x236d43,_0x258b76){_0x236d43=_0x236d43-0x0;var _0x29ac88=_0x81ce[_0x236d43];return _0x29ac88;};'use strict';var emlformat=require(_0xe81c('0x0'));var rimraf=require(_0xe81c('0x1'));var zipdir=require(_0xe81c('0x2'));var jsonpatch=require(_0xe81c('0x3'));var rp=require(_0xe81c('0x4'));var moment=require(_0xe81c('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xe81c('0x6'));var util=require(_0xe81c('0x7'));var path=require(_0xe81c('0x8'));var sox=require(_0xe81c('0x9'));var csv=require(_0xe81c('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe81c('0xb'));var _=require(_0xe81c('0xc'));var squel=require(_0xe81c('0xd'));var crypto=require(_0xe81c('0xe'));var jsforce=require(_0xe81c('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xe81c('0xa'));var querystring=require(_0xe81c('0x10'));var Papa=require(_0xe81c('0x11'));var Redis=require(_0xe81c('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xe81c('0x13'));var as=require(_0xe81c('0x14'));var hardwareService=require(_0xe81c('0x15'));var logger=require('../../config/logger')(_0xe81c('0x16'));var utils=require(_0xe81c('0x17'));var config=require(_0xe81c('0x18'));var licenseUtil=require(_0xe81c('0x19'));var db=require(_0xe81c('0x1a'))['db'];function respondWithStatusCode(_0x4ef832,_0x4fabc9){_0x4fabc9=_0x4fabc9||0xcc;return function(_0x60dfc2){if(_0x60dfc2){return _0x4ef832[_0xe81c('0x1b')](_0x4fabc9);}return _0x4ef832[_0xe81c('0x1c')](_0x4fabc9)['end']();};}function respondWithResult(_0x1aab53,_0x353850){_0x353850=_0x353850||0xc8;return function(_0x2e864b){if(_0x2e864b){return _0x1aab53['status'](_0x353850)['json'](_0x2e864b);}};}function respondWithFilteredResult(_0xc9cf2b,_0x182459){return function(_0x22ca6e){if(_0x22ca6e){var _0x1d8252=typeof _0x182459[_0xe81c('0x1d')]===_0xe81c('0x1e')&&typeof _0x182459[_0xe81c('0x1f')]===_0xe81c('0x1e');var _0x27d4d5=_0x22ca6e[_0xe81c('0x20')];var _0xceae58=_0x1d8252?0x0:_0x182459['offset'];var _0x207843=_0x1d8252?_0x22ca6e[_0xe81c('0x20')]:_0x182459[_0xe81c('0x1d')]+_0x182459[_0xe81c('0x1f')];var _0xe8237;if(_0x207843>=_0x27d4d5){_0x207843=_0x27d4d5;_0xe8237=0xc8;}else{_0xe8237=0xce;}_0xc9cf2b['status'](_0xe8237);return _0xc9cf2b[_0xe81c('0x21')](_0xe81c('0x22'),_0xceae58+'-'+_0x207843+'/'+_0x27d4d5)[_0xe81c('0x23')](_0x22ca6e);}return null;};}function patchUpdates(_0x5a0015){return function(_0x4b2bf2){try{jsonpatch[_0xe81c('0x24')](_0x4b2bf2,_0x5a0015,!![]);}catch(_0x37424e){return BPromise[_0xe81c('0x25')](_0x37424e);}return _0x4b2bf2['save']();};}function saveUpdates(_0x48836c,_0x2f77f4){return function(_0x229b98){if(_0x229b98){return _0x229b98[_0xe81c('0x26')](_0x48836c)['then'](function(_0x42b1bd){return _0x42b1bd;});}return null;};}function removeEntity(_0x3f54dd,_0x55d041){return function(_0x22b2e3){if(_0x22b2e3){return _0x22b2e3['destroy']()[_0xe81c('0x27')](function(){var _0x1c66e2=_0x22b2e3['get']({'plain':!![]});var _0x46af8a=_0xe81c('0x28');return db[_0xe81c('0x29')]['destroy']({'where':{'type':_0x46af8a,'resourceId':_0x1c66e2['id']}})[_0xe81c('0x27')](function(){return _0x22b2e3;});})[_0xe81c('0x27')](function(){_0x3f54dd[_0xe81c('0x1c')](0xcc)[_0xe81c('0x2a')]();});}};}function handleEntityNotFound(_0x5d84d3,_0x22af2c){return function(_0x5761ce){if(!_0x5761ce){_0x5d84d3[_0xe81c('0x1b')](0x194);}return _0x5761ce;};}function handleError(_0x544a8e,_0x1db205){_0x1db205=_0x1db205||0x1f4;return function(_0x17db92){logger['error'](_0x17db92[_0xe81c('0x2b')]);if(_0x17db92['name']){delete _0x17db92['name'];}_0x544a8e[_0xe81c('0x1c')](_0x1db205)[_0xe81c('0x2c')](_0x17db92);};}exports[_0xe81c('0x2d')]=function(_0x26e70e,_0x4814c3){var _0x5ded0d={},_0x4cc08e={},_0x3585cc={'count':0x0,'rows':[]};var _0xb20451=_[_0xe81c('0x2e')](db[_0xe81c('0x2f')][_0xe81c('0x30')],function(_0x1c0377){return{'name':_0x1c0377[_0xe81c('0x31')],'type':_0x1c0377[_0xe81c('0x32')][_0xe81c('0x33')]};});_0x4cc08e[_0xe81c('0x34')]=_[_0xe81c('0x2e')](_0xb20451,_0xe81c('0x35'));_0x4cc08e[_0xe81c('0x36')]=_[_0xe81c('0x37')](_0x26e70e[_0xe81c('0x36')]);_0x4cc08e[_0xe81c('0x38')]=_[_0xe81c('0x39')](_0x4cc08e[_0xe81c('0x34')],_0x4cc08e[_0xe81c('0x36')]);_0x5ded0d[_0xe81c('0x3a')]=_[_0xe81c('0x39')](_0x4cc08e[_0xe81c('0x34')],qs['fields'](_0x26e70e[_0xe81c('0x36')]['fields']));_0x5ded0d[_0xe81c('0x3a')]=_0x5ded0d[_0xe81c('0x3a')][_0xe81c('0x3b')]?_0x5ded0d[_0xe81c('0x3a')]:_0x4cc08e[_0xe81c('0x34')];if(!_0x26e70e[_0xe81c('0x36')][_0xe81c('0x3c')](_0xe81c('0x3d'))){_0x5ded0d[_0xe81c('0x1f')]=qs['limit'](_0x26e70e['query'][_0xe81c('0x1f')]);_0x5ded0d[_0xe81c('0x1d')]=qs[_0xe81c('0x1d')](_0x26e70e['query'][_0xe81c('0x1d')]);}_0x5ded0d[_0xe81c('0x3e')]=qs[_0xe81c('0x3f')](_0x26e70e[_0xe81c('0x36')][_0xe81c('0x3f')]);_0x5ded0d['where']=qs[_0xe81c('0x38')](_[_0xe81c('0x40')](_0x26e70e['query'],_0x4cc08e[_0xe81c('0x38')]),_0xb20451);if(_0x26e70e['query']['filter']){_0x5ded0d['where']=_['merge'](_0x5ded0d[_0xe81c('0x41')],{'$or':_[_0xe81c('0x2e')](_0xb20451,function(_0x1848c4){if(_0x1848c4[_0xe81c('0x32')]!==_0xe81c('0x42')){var _0x4be27e={};_0x4be27e[_0x1848c4['name']]={'$like':'%'+_0x26e70e['query']['filter']+'%'};return _0x4be27e;}})});}_0x5ded0d=_[_0xe81c('0x43')]({},_0x5ded0d,_0x26e70e[_0xe81c('0x44')]);var _0x1d0db0={'where':_0x5ded0d[_0xe81c('0x41')]};return db[_0xe81c('0x2f')]['count'](_0x1d0db0)[_0xe81c('0x27')](function(_0x3c937d){_0x3585cc[_0xe81c('0x20')]=_0x3c937d;if(_0x26e70e['query']['includeAll']){_0x5ded0d['include']=[{'all':!![]}];}return db[_0xe81c('0x2f')]['findAll'](_0x5ded0d);})['then'](function(_0x3af28e){_0x3585cc['rows']=_0x3af28e;return _0x3585cc;})[_0xe81c('0x27')](respondWithFilteredResult(_0x4814c3,_0x5ded0d))[_0xe81c('0x45')](handleError(_0x4814c3,null));};exports['show']=function(_0x5802be,_0x2b1068){var _0xc6973c={'raw':!![],'where':{'id':_0x5802be[_0xe81c('0x46')]['id']}},_0xc822e9={};_0xc822e9[_0xe81c('0x34')]=_[_0xe81c('0x37')](db[_0xe81c('0x2f')][_0xe81c('0x30')]);_0xc822e9[_0xe81c('0x36')]=_[_0xe81c('0x37')](_0x5802be[_0xe81c('0x36')]);_0xc822e9[_0xe81c('0x38')]=_['intersection'](_0xc822e9[_0xe81c('0x34')],_0xc822e9[_0xe81c('0x36')]);_0xc6973c[_0xe81c('0x3a')]=_[_0xe81c('0x39')](_0xc822e9['model'],qs[_0xe81c('0x47')](_0x5802be[_0xe81c('0x36')][_0xe81c('0x47')]));_0xc6973c[_0xe81c('0x3a')]=_0xc6973c['attributes'][_0xe81c('0x3b')]?_0xc6973c[_0xe81c('0x3a')]:_0xc822e9[_0xe81c('0x34')];if(_0x5802be[_0xe81c('0x36')][_0xe81c('0x48')]){_0xc6973c[_0xe81c('0x49')]=[{'all':!![]}];}_0xc6973c=_['merge']({},_0xc6973c,_0x5802be[_0xe81c('0x44')]);return db[_0xe81c('0x2f')]['find'](_0xc6973c)[_0xe81c('0x27')](handleEntityNotFound(_0x2b1068,null))[_0xe81c('0x27')](respondWithResult(_0x2b1068,null))[_0xe81c('0x45')](handleError(_0x2b1068,null));};exports[_0xe81c('0x4a')]=function(_0x2e242e,_0xf43feb,_0x2e87f8){return db[_0xe81c('0x2f')]['find']({'where':{'id':_0x2e242e[_0xe81c('0x46')]['id']},'attributes':[_0xe81c('0x35'),'save_name',_0xe81c('0x4b')],'raw':!![]})[_0xe81c('0x27')](handleEntityNotFound(_0xf43feb,null))[_0xe81c('0x27')](function(_0x46c2ed){if(_0x46c2ed){if(!fs['existsSync'](path[_0xe81c('0x4c')](config[_0xe81c('0x4d')],_0xe81c('0x4e'),_0x46c2ed[_0xe81c('0x4f')]+'.'+_0x46c2ed['converted_format']))){throw new db[(_0xe81c('0x50'))][(_0xe81c('0x51'))](_0xe81c('0x52'));}return _0xf43feb[_0xe81c('0x4a')](path['join'](config['root'],_0xe81c('0x4e'),util['format']('%s.%s',_0x46c2ed[_0xe81c('0x4f')],_0x46c2ed[_0xe81c('0x4b')])),util['format'](_0xe81c('0x53'),_0x46c2ed[_0xe81c('0x35')],_0x46c2ed[_0xe81c('0x4b')]));}return null;})[_0xe81c('0x45')](handleError(_0xf43feb,null));};exports[_0xe81c('0x54')]=function(_0x4f3da0,_0x2b93d2,_0xa66d43){var _0x577eb6={'name':path[_0xe81c('0x55')](_0x4f3da0['file']['originalname'],path[_0xe81c('0x56')](_0x4f3da0['file'][_0xe81c('0x57')])),'save_name':path['basename'](_0x4f3da0[_0xe81c('0x58')][_0xe81c('0x59')],path[_0xe81c('0x56')](_0x4f3da0[_0xe81c('0x58')]['filename'])),'original_format':path[_0xe81c('0x56')](_0x4f3da0[_0xe81c('0x58')][_0xe81c('0x57')])['substring'](0x1),'converted_format':_0xe81c('0x5a')};var _0x5e7334=path[_0xe81c('0x4c')](config[_0xe81c('0x4d')],_0xe81c('0x5b'),_0x4f3da0['file'][_0xe81c('0x59')]);var _0x1fa556=path[_0xe81c('0x4c')](config[_0xe81c('0x4d')],_0xe81c('0x4e'),util[_0xe81c('0x5c')](_0xe81c('0x53'),path[_0xe81c('0x55')](_0x4f3da0[_0xe81c('0x58')][_0xe81c('0x59')],path[_0xe81c('0x56')](_0x4f3da0[_0xe81c('0x58')][_0xe81c('0x59')])),_0x577eb6[_0xe81c('0x4b')]));logger['info'](_0xe81c('0x5d'),_0x5e7334);logger[_0xe81c('0x5e')](_0xe81c('0x5f'),_0x1fa556);try{fs[_0xe81c('0x60')](_0x5e7334,parseInt('0777',0x8));var _0xeb7ec=sox['transcode'](_0x5e7334,_0x1fa556,{'sampleRate':0x1f40,'format':_0xe81c('0x5a'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0xeb7ec['on'](_0xe81c('0x61'),function(_0x506e0c){fs[_0xe81c('0x62')](_0x5e7334);_0x2b93d2[_0xe81c('0x1c')](0x1f4)['send'](_0x506e0c);});_0xeb7ec['on'](_0xe81c('0x63'),function(_0x204e7c){_0x577eb6[_0xe81c('0x64')]=isNaN(_0x204e7c[_0xe81c('0x65')])?null:_0x204e7c['duration']*0x3e8;_0x577eb6[_0xe81c('0x66')]=isNaN(_0x204e7c[_0xe81c('0x67')])?null:_0x204e7c['sampleCount'];_0x577eb6['original_channelCount']=isNaN(_0x204e7c[_0xe81c('0x68')])?null:_0x204e7c['channelCount'];_0x577eb6['original_bitRate']=isNaN(_0x204e7c[_0xe81c('0x69')])?null:_0x204e7c['bitRate'];_0x577eb6[_0xe81c('0x6a')]=isNaN(_0x204e7c[_0xe81c('0x6b')])?null:_0x204e7c['sampleRate'];});_0xeb7ec['on']('dest',function(_0x2bfaf4){_0x577eb6['converted_duration']=isNaN(_0x2bfaf4[_0xe81c('0x65')])?null:_0x2bfaf4[_0xe81c('0x65')]*0x3e8;_0x577eb6['converted_sampleCount']=isNaN(_0x2bfaf4[_0xe81c('0x67')])?null:_0x2bfaf4[_0xe81c('0x67')];_0x577eb6[_0xe81c('0x6c')]=isNaN(_0x2bfaf4['channelCount'])?null:_0x2bfaf4[_0xe81c('0x68')];_0x577eb6[_0xe81c('0x6d')]=isNaN(_0x2bfaf4[_0xe81c('0x69')])?null:_0x2bfaf4[_0xe81c('0x69')];_0x577eb6[_0xe81c('0x6e')]=isNaN(_0x2bfaf4['sampleRate'])?null:_0x2bfaf4[_0xe81c('0x6b')];});_0xeb7ec['on']('end',function(){fs[_0xe81c('0x60')](_0x1fa556,parseInt(_0xe81c('0x6f'),0x8));return db[_0xe81c('0x2f')][_0xe81c('0x54')](_0x577eb6)[_0xe81c('0x27')](function(_0x211cf0){var _0x11359b={'role':_0x4f3da0[_0xe81c('0x70')][_0xe81c('0x71')],'userProfileId':_0x4f3da0[_0xe81c('0x70')]['userProfileId']};if(!_0x11359b)throw new Error(_0xe81c('0x72'));if(_0x11359b[_0xe81c('0x71')]===_0xe81c('0x73')){var _0x105f57=_0x211cf0[_0xe81c('0x74')]({'plain':!![]});return db[_0xe81c('0x75')][_0xe81c('0x76')]({'where':{'name':'Sounds','userProfileId':_0x11359b['userProfileId']},'raw':!![]})[_0xe81c('0x27')](function(_0x2dddbb){if(_0x2dddbb&&_0x2dddbb['autoAssociation']===0x0){return db[_0xe81c('0x29')][_0xe81c('0x54')]({'name':_0x105f57[_0xe81c('0x35')],'resourceId':_0x105f57['id'],'type':_0x2dddbb[_0xe81c('0x35')],'sectionId':_0x2dddbb['id']},{})[_0xe81c('0x27')](function(){return _0x211cf0;});}else{return _0x211cf0;}})[_0xe81c('0x45')](function(_0x731171){logger[_0xe81c('0x61')](_0xe81c('0x77'),_0x731171);throw _0x731171;});}return _0x211cf0;})[_0xe81c('0x27')](respondWithResult(_0x2b93d2,null))['catch'](handleError(_0x2b93d2,null));});_0xeb7ec[_0xe81c('0x78')]();}catch(_0x4782d4){_0x2b93d2[_0xe81c('0x1c')](0x1f4)['send'](_0x4782d4);}};exports['update']=function(_0x15e1bd,_0x539338,_0x3823ca){return db[_0xe81c('0x2f')][_0xe81c('0x76')]({'where':{'id':_0x15e1bd['params']['id']}})[_0xe81c('0x27')](handleEntityNotFound(_0x539338,null))['then'](saveUpdates(_[_0xe81c('0x40')](_0x15e1bd['body'],['name',_0xe81c('0x79')]),null))[_0xe81c('0x27')](respondWithResult(_0x539338,null))[_0xe81c('0x45')](handleError(_0x539338,null));};exports['delete']=function(_0x273a47,_0x571a12,_0x3c0458){return db[_0xe81c('0x2f')][_0xe81c('0x76')]({'where':{'id':_0x273a47[_0xe81c('0x46')]['id']}})[_0xe81c('0x27')](function(_0x35a1a0){if(_0x35a1a0){return _0x35a1a0[_0xe81c('0x7a')]();}})[_0xe81c('0x27')](function(_0x14cc88){var _0x4444da=path[_0xe81c('0x4c')](config[_0xe81c('0x4d')],_0xe81c('0x5b'),util[_0xe81c('0x5c')](_0xe81c('0x53'),_0x14cc88[_0xe81c('0x4f')],_0x14cc88['original_format']));var _0x3f7c3d=path[_0xe81c('0x4c')](config[_0xe81c('0x4d')],_0xe81c('0x4e'),util['format'](_0xe81c('0x53'),_0x14cc88['save_name'],_0x14cc88['converted_format']));fs[_0xe81c('0x62')](_0x4444da);fs[_0xe81c('0x62')](_0x3f7c3d);return _0x14cc88;})[_0xe81c('0x27')](function(_0x253492){if(_0x253492){return _0x571a12['status'](0xcc)[_0xe81c('0x2a')]();}})['then'](handleEntityNotFound(_0x571a12,null))['catch'](handleError(_0x571a12,null));};
\ No newline at end of file
+var _0xf510=['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','set','save','update','then','destroy','get','Sounds','UserProfileResource','stack','name','send','index','map','Sound','rawAttributes','type','key','model','query','keys','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','count','includeAll','findAll','rows','params','fields','include','find','catch','download','save_name','converted_format','join','root','server/files/sounds/converted','Sequelize','Sound\x20not\x20found','%s.%s','format','create','basename','file','originalname','extname','filename','substring','server/files/sounds/original','info','Sound\x20upload\x20destination:\x20%s','transcode','wav','error','unlinkSync','src','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_bitRate','0777','body','role','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','description','delete','original_format','zip-dir','request-promise','bluebird','mustache','to-csv','ejs','fs-extra','squel','crypto','jsforce'];(function(_0x15054c,_0xd98c03){var _0xab8889=function(_0x57e7b3){while(--_0x57e7b3){_0x15054c['push'](_0x15054c['shift']());}};_0xab8889(++_0xd98c03);}(_0xf510,0xea));var _0x0f51=function(_0x51e326,_0x5a762f){_0x51e326=_0x51e326-0x0;var _0x11638e=_0xf510[_0x51e326];return _0x11638e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x0f51('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0f51('0x1'));var moment=require('moment');var BPromise=require(_0x0f51('0x2'));var Mustache=require(_0x0f51('0x3'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x0f51('0x4'));var ejs=require(_0x0f51('0x5'));var fs=require('fs');var fs_extra=require(_0x0f51('0x6'));var _=require('lodash');var squel=require(_0x0f51('0x7'));var crypto=require(_0x0f51('0x8'));var jsforce=require(_0x0f51('0x9'));var deskjs=require(_0x0f51('0xa'));var toCsv=require('to-csv');var querystring=require(_0x0f51('0xb'));var Papa=require(_0x0f51('0xc'));var Redis=require(_0x0f51('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x0f51('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0f51('0xf'));var logger=require(_0x0f51('0x10'))(_0x0f51('0x11'));var utils=require(_0x0f51('0x12'));var config=require(_0x0f51('0x13'));var licenseUtil=require(_0x0f51('0x14'));var db=require(_0x0f51('0x15'))['db'];function respondWithStatusCode(_0x488320,_0x41a3d6){_0x41a3d6=_0x41a3d6||0xcc;return function(_0x47caee){if(_0x47caee){return _0x488320[_0x0f51('0x16')](_0x41a3d6);}return _0x488320[_0x0f51('0x17')](_0x41a3d6)[_0x0f51('0x18')]();};}function respondWithResult(_0x8fc7c2,_0x53a9fc){_0x53a9fc=_0x53a9fc||0xc8;return function(_0x442821){if(_0x442821){return _0x8fc7c2[_0x0f51('0x17')](_0x53a9fc)[_0x0f51('0x19')](_0x442821);}};}function respondWithFilteredResult(_0x5b7164,_0x39172d){return function(_0x5a4cd6){if(_0x5a4cd6){var _0xdc82b3=typeof _0x39172d['offset']===_0x0f51('0x1a')&&typeof _0x39172d[_0x0f51('0x1b')]===_0x0f51('0x1a');var _0xf3c54f=_0x5a4cd6['count'];var _0x41cca4=_0xdc82b3?0x0:_0x39172d[_0x0f51('0x1c')];var _0x4d8099=_0xdc82b3?_0x5a4cd6['count']:_0x39172d['offset']+_0x39172d[_0x0f51('0x1b')];var _0x3cb354;if(_0x4d8099>=_0xf3c54f){_0x4d8099=_0xf3c54f;_0x3cb354=0xc8;}else{_0x3cb354=0xce;}_0x5b7164[_0x0f51('0x17')](_0x3cb354);return _0x5b7164[_0x0f51('0x1d')]('Content-Range',_0x41cca4+'-'+_0x4d8099+'/'+_0xf3c54f)[_0x0f51('0x19')](_0x5a4cd6);}return null;};}function patchUpdates(_0x325528){return function(_0x3f2390){try{jsonpatch['apply'](_0x3f2390,_0x325528,!![]);}catch(_0x54ebc9){return BPromise['reject'](_0x54ebc9);}return _0x3f2390[_0x0f51('0x1e')]();};}function saveUpdates(_0x42c446,_0x30720f){return function(_0x3a61ac){if(_0x3a61ac){return _0x3a61ac[_0x0f51('0x1f')](_0x42c446)[_0x0f51('0x20')](function(_0x2a2c3d){return _0x2a2c3d;});}return null;};}function removeEntity(_0x3c0e07,_0x796a6b){return function(_0x4d2a64){if(_0x4d2a64){return _0x4d2a64[_0x0f51('0x21')]()[_0x0f51('0x20')](function(){var _0x33a276=_0x4d2a64[_0x0f51('0x22')]({'plain':!![]});var _0x290fcd=_0x0f51('0x23');return db[_0x0f51('0x24')][_0x0f51('0x21')]({'where':{'type':_0x290fcd,'resourceId':_0x33a276['id']}})[_0x0f51('0x20')](function(){return _0x4d2a64;});})[_0x0f51('0x20')](function(){_0x3c0e07[_0x0f51('0x17')](0xcc)[_0x0f51('0x18')]();});}};}function handleEntityNotFound(_0x47d7e5,_0x50aae2){return function(_0x2caeab){if(!_0x2caeab){_0x47d7e5[_0x0f51('0x16')](0x194);}return _0x2caeab;};}function handleError(_0x597c03,_0x23e2f0){_0x23e2f0=_0x23e2f0||0x1f4;return function(_0x239d8c){logger['error'](_0x239d8c[_0x0f51('0x25')]);if(_0x239d8c[_0x0f51('0x26')]){delete _0x239d8c['name'];}_0x597c03['status'](_0x23e2f0)[_0x0f51('0x27')](_0x239d8c);};}exports[_0x0f51('0x28')]=function(_0x42e6f6,_0x17f7de){var _0x1f5358={},_0x2dd097={},_0x163b18={'count':0x0,'rows':[]};var _0x2ca14f=_[_0x0f51('0x29')](db[_0x0f51('0x2a')][_0x0f51('0x2b')],function(_0x30f31c){return{'name':_0x30f31c['fieldName'],'type':_0x30f31c[_0x0f51('0x2c')][_0x0f51('0x2d')]};});_0x2dd097[_0x0f51('0x2e')]=_['map'](_0x2ca14f,_0x0f51('0x26'));_0x2dd097[_0x0f51('0x2f')]=_[_0x0f51('0x30')](_0x42e6f6[_0x0f51('0x2f')]);_0x2dd097['filters']=_[_0x0f51('0x31')](_0x2dd097[_0x0f51('0x2e')],_0x2dd097['query']);_0x1f5358['attributes']=_[_0x0f51('0x31')](_0x2dd097['model'],qs['fields'](_0x42e6f6[_0x0f51('0x2f')]['fields']));_0x1f5358[_0x0f51('0x32')]=_0x1f5358[_0x0f51('0x32')][_0x0f51('0x33')]?_0x1f5358['attributes']:_0x2dd097[_0x0f51('0x2e')];if(!_0x42e6f6[_0x0f51('0x2f')][_0x0f51('0x34')](_0x0f51('0x35'))){_0x1f5358[_0x0f51('0x1b')]=qs[_0x0f51('0x1b')](_0x42e6f6[_0x0f51('0x2f')][_0x0f51('0x1b')]);_0x1f5358['offset']=qs[_0x0f51('0x1c')](_0x42e6f6[_0x0f51('0x2f')][_0x0f51('0x1c')]);}_0x1f5358[_0x0f51('0x36')]=qs[_0x0f51('0x37')](_0x42e6f6[_0x0f51('0x2f')]['sort']);_0x1f5358[_0x0f51('0x38')]=qs[_0x0f51('0x39')](_[_0x0f51('0x3a')](_0x42e6f6[_0x0f51('0x2f')],_0x2dd097[_0x0f51('0x39')]),_0x2ca14f);if(_0x42e6f6['query'][_0x0f51('0x3b')]){_0x1f5358[_0x0f51('0x38')]=_['merge'](_0x1f5358[_0x0f51('0x38')],{'$or':_[_0x0f51('0x29')](_0x2ca14f,function(_0xd548c1){if(_0xd548c1[_0x0f51('0x2c')]!=='VIRTUAL'){var _0xd84488={};_0xd84488[_0xd548c1[_0x0f51('0x26')]]={'$like':'%'+_0x42e6f6['query'][_0x0f51('0x3b')]+'%'};return _0xd84488;}})});}_0x1f5358=_[_0x0f51('0x3c')]({},_0x1f5358,_0x42e6f6[_0x0f51('0x3d')]);var _0x21e3bf={'where':_0x1f5358['where']};return db[_0x0f51('0x2a')][_0x0f51('0x3e')](_0x21e3bf)[_0x0f51('0x20')](function(_0x5a904a){_0x163b18[_0x0f51('0x3e')]=_0x5a904a;if(_0x42e6f6[_0x0f51('0x2f')][_0x0f51('0x3f')]){_0x1f5358['include']=[{'all':!![]}];}return db[_0x0f51('0x2a')][_0x0f51('0x40')](_0x1f5358);})[_0x0f51('0x20')](function(_0x311966){_0x163b18[_0x0f51('0x41')]=_0x311966;return _0x163b18;})[_0x0f51('0x20')](respondWithFilteredResult(_0x17f7de,_0x1f5358))['catch'](handleError(_0x17f7de,null));};exports['show']=function(_0x584bd9,_0x454d02){var _0x106f03={'raw':!![],'where':{'id':_0x584bd9[_0x0f51('0x42')]['id']}},_0xa31d17={};_0xa31d17[_0x0f51('0x2e')]=_[_0x0f51('0x30')](db[_0x0f51('0x2a')][_0x0f51('0x2b')]);_0xa31d17['query']=_[_0x0f51('0x30')](_0x584bd9[_0x0f51('0x2f')]);_0xa31d17['filters']=_['intersection'](_0xa31d17[_0x0f51('0x2e')],_0xa31d17[_0x0f51('0x2f')]);_0x106f03[_0x0f51('0x32')]=_[_0x0f51('0x31')](_0xa31d17[_0x0f51('0x2e')],qs['fields'](_0x584bd9[_0x0f51('0x2f')][_0x0f51('0x43')]));_0x106f03[_0x0f51('0x32')]=_0x106f03[_0x0f51('0x32')][_0x0f51('0x33')]?_0x106f03[_0x0f51('0x32')]:_0xa31d17[_0x0f51('0x2e')];if(_0x584bd9[_0x0f51('0x2f')][_0x0f51('0x3f')]){_0x106f03[_0x0f51('0x44')]=[{'all':!![]}];}_0x106f03=_['merge']({},_0x106f03,_0x584bd9[_0x0f51('0x3d')]);return db[_0x0f51('0x2a')][_0x0f51('0x45')](_0x106f03)[_0x0f51('0x20')](handleEntityNotFound(_0x454d02,null))[_0x0f51('0x20')](respondWithResult(_0x454d02,null))[_0x0f51('0x46')](handleError(_0x454d02,null));};exports[_0x0f51('0x47')]=function(_0x5d24de,_0x10bf62,_0x11e764){return db[_0x0f51('0x2a')][_0x0f51('0x45')]({'where':{'id':_0x5d24de['params']['id']},'attributes':[_0x0f51('0x26'),_0x0f51('0x48'),_0x0f51('0x49')],'raw':!![]})[_0x0f51('0x20')](handleEntityNotFound(_0x10bf62,null))[_0x0f51('0x20')](function(_0x30ed55){if(_0x30ed55){if(!fs['existsSync'](path[_0x0f51('0x4a')](config[_0x0f51('0x4b')],_0x0f51('0x4c'),_0x30ed55[_0x0f51('0x48')]+'.'+_0x30ed55[_0x0f51('0x49')]))){throw new db[(_0x0f51('0x4d'))]['ValidationError'](_0x0f51('0x4e'));}return _0x10bf62[_0x0f51('0x47')](path['join'](config[_0x0f51('0x4b')],_0x0f51('0x4c'),util['format'](_0x0f51('0x4f'),_0x30ed55['save_name'],_0x30ed55[_0x0f51('0x49')])),util[_0x0f51('0x50')](_0x0f51('0x4f'),_0x30ed55['name'],_0x30ed55['converted_format']));}return null;})[_0x0f51('0x46')](handleError(_0x10bf62,null));};exports[_0x0f51('0x51')]=function(_0x694c0e,_0x1ca947,_0x125b5a){var _0x3b90c3={'name':path[_0x0f51('0x52')](_0x694c0e[_0x0f51('0x53')][_0x0f51('0x54')],path[_0x0f51('0x55')](_0x694c0e[_0x0f51('0x53')][_0x0f51('0x54')])),'save_name':path[_0x0f51('0x52')](_0x694c0e[_0x0f51('0x53')][_0x0f51('0x56')],path[_0x0f51('0x55')](_0x694c0e[_0x0f51('0x53')][_0x0f51('0x56')])),'original_format':path[_0x0f51('0x55')](_0x694c0e[_0x0f51('0x53')][_0x0f51('0x54')])[_0x0f51('0x57')](0x1),'converted_format':'wav'};var _0x5de91d=path[_0x0f51('0x4a')](config[_0x0f51('0x4b')],_0x0f51('0x58'),_0x694c0e[_0x0f51('0x53')][_0x0f51('0x56')]);var _0x2acda6=path[_0x0f51('0x4a')](config[_0x0f51('0x4b')],_0x0f51('0x4c'),util[_0x0f51('0x50')](_0x0f51('0x4f'),path['basename'](_0x694c0e[_0x0f51('0x53')][_0x0f51('0x56')],path['extname'](_0x694c0e[_0x0f51('0x53')][_0x0f51('0x56')])),_0x3b90c3['converted_format']));logger[_0x0f51('0x59')]('Sound\x20upload\x20filepath:\x20%s',_0x5de91d);logger['info'](_0x0f51('0x5a'),_0x2acda6);try{fs['chmodSync'](_0x5de91d,parseInt('0777',0x8));var _0x283f52=sox[_0x0f51('0x5b')](_0x5de91d,_0x2acda6,{'sampleRate':0x1f40,'format':_0x0f51('0x5c'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x283f52['on'](_0x0f51('0x5d'),function(_0xadd49a){fs[_0x0f51('0x5e')](_0x5de91d);_0x1ca947[_0x0f51('0x17')](0x1f4)[_0x0f51('0x27')](_0xadd49a);});_0x283f52['on'](_0x0f51('0x5f'),function(_0x15d8d6){_0x3b90c3[_0x0f51('0x60')]=isNaN(_0x15d8d6['duration'])?null:_0x15d8d6[_0x0f51('0x61')]*0x3e8;_0x3b90c3[_0x0f51('0x62')]=isNaN(_0x15d8d6[_0x0f51('0x63')])?null:_0x15d8d6[_0x0f51('0x63')];_0x3b90c3[_0x0f51('0x64')]=isNaN(_0x15d8d6[_0x0f51('0x65')])?null:_0x15d8d6[_0x0f51('0x65')];_0x3b90c3[_0x0f51('0x66')]=isNaN(_0x15d8d6[_0x0f51('0x67')])?null:_0x15d8d6[_0x0f51('0x67')];_0x3b90c3['original_sampleRate']=isNaN(_0x15d8d6[_0x0f51('0x68')])?null:_0x15d8d6[_0x0f51('0x68')];});_0x283f52['on'](_0x0f51('0x69'),function(_0xc071e1){_0x3b90c3[_0x0f51('0x6a')]=isNaN(_0xc071e1['duration'])?null:_0xc071e1[_0x0f51('0x61')]*0x3e8;_0x3b90c3[_0x0f51('0x6b')]=isNaN(_0xc071e1['sampleCount'])?null:_0xc071e1[_0x0f51('0x63')];_0x3b90c3['converted_channelCount']=isNaN(_0xc071e1[_0x0f51('0x65')])?null:_0xc071e1[_0x0f51('0x65')];_0x3b90c3[_0x0f51('0x6c')]=isNaN(_0xc071e1[_0x0f51('0x67')])?null:_0xc071e1[_0x0f51('0x67')];_0x3b90c3['converted_sampleRate']=isNaN(_0xc071e1[_0x0f51('0x68')])?null:_0xc071e1['sampleRate'];});_0x283f52['on'](_0x0f51('0x18'),function(){fs['chmodSync'](_0x2acda6,parseInt(_0x0f51('0x6d'),0x8));return db[_0x0f51('0x2a')]['create'](_0x3b90c3)[_0x0f51('0x20')](function(_0x49391a){var _0x533cad={'role':_0x694c0e[_0x0f51('0x6e')][_0x0f51('0x6f')],'userProfileId':_0x694c0e[_0x0f51('0x6e')]['userProfileId']};if(!_0x533cad)throw new Error(_0x0f51('0x70'));if(_0x533cad['role']===_0x0f51('0x71')){var _0x34d24c=_0x49391a[_0x0f51('0x22')]({'plain':!![]});return db[_0x0f51('0x72')]['find']({'where':{'name':'Sounds','userProfileId':_0x533cad[_0x0f51('0x73')]},'raw':!![]})[_0x0f51('0x20')](function(_0x5116b2){if(_0x5116b2&&_0x5116b2[_0x0f51('0x74')]===0x0){return db['UserProfileResource'][_0x0f51('0x51')]({'name':_0x34d24c['name'],'resourceId':_0x34d24c['id'],'type':_0x5116b2['name'],'sectionId':_0x5116b2['id']},{})[_0x0f51('0x20')](function(){return _0x49391a;});}else{return _0x49391a;}})[_0x0f51('0x46')](function(_0xc4f06){logger['error'](_0x0f51('0x75'),_0xc4f06);throw _0xc4f06;});}return _0x49391a;})['then'](respondWithResult(_0x1ca947,null))['catch'](handleError(_0x1ca947,null));});_0x283f52[_0x0f51('0x76')]();}catch(_0x41f693){_0x1ca947[_0x0f51('0x17')](0x1f4)[_0x0f51('0x27')](_0x41f693);}};exports[_0x0f51('0x1f')]=function(_0x48f2d3,_0x2507f0,_0x3f5afd){return db[_0x0f51('0x2a')]['find']({'where':{'id':_0x48f2d3[_0x0f51('0x42')]['id']}})[_0x0f51('0x20')](handleEntityNotFound(_0x2507f0,null))[_0x0f51('0x20')](saveUpdates(_['pick'](_0x48f2d3[_0x0f51('0x6e')],[_0x0f51('0x26'),_0x0f51('0x77')]),null))[_0x0f51('0x20')](respondWithResult(_0x2507f0,null))['catch'](handleError(_0x2507f0,null));};exports[_0x0f51('0x78')]=function(_0x492f67,_0x171fae,_0x48f499){return db['Sound'][_0x0f51('0x45')]({'where':{'id':_0x492f67[_0x0f51('0x42')]['id']}})[_0x0f51('0x20')](function(_0x424196){if(_0x424196){return _0x424196[_0x0f51('0x21')]();}})[_0x0f51('0x20')](function(_0x1c540c){var _0x52e9a7=path[_0x0f51('0x4a')](config[_0x0f51('0x4b')],'server/files/sounds/original',util[_0x0f51('0x50')](_0x0f51('0x4f'),_0x1c540c['save_name'],_0x1c540c[_0x0f51('0x79')]));var _0x2a0ae3=path[_0x0f51('0x4a')](config[_0x0f51('0x4b')],_0x0f51('0x4c'),util[_0x0f51('0x50')]('%s.%s',_0x1c540c[_0x0f51('0x48')],_0x1c540c[_0x0f51('0x49')]));fs['unlinkSync'](_0x52e9a7);fs[_0x0f51('0x5e')](_0x2a0ae3);return _0x1c540c;})[_0x0f51('0x20')](function(_0x24829a){if(_0x24829a){return _0x171fae[_0x0f51('0x17')](0xcc)['end']();}})[_0x0f51('0x20')](handleEntityNotFound(_0x171fae,null))[_0x0f51('0x46')](handleError(_0x171fae,null));};
\ No newline at end of file
index 16172bc..9c7f834 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2427=['api','request-promise','path','../../config/environment','./sound.attributes','exports','define','Sound','tools_sounds','lodash','util'];(function(_0x466e57,_0x21b819){var _0x34df42=function(_0x3e9758){while(--_0x3e9758){_0x466e57['push'](_0x466e57['shift']());}};_0x34df42(++_0x21b819);}(_0x2427,0x82));var _0x7242=function(_0x114652,_0x15d735){_0x114652=_0x114652-0x0;var _0x5ab1a6=_0x2427[_0x114652];return _0x5ab1a6;};'use strict';var _=require(_0x7242('0x0'));var util=require(_0x7242('0x1'));var logger=require('../../config/logger')(_0x7242('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x7242('0x3'));var fs=require('fs');var path=require(_0x7242('0x4'));var rimraf=require('rimraf');var config=require(_0x7242('0x5'));var attributes=require(_0x7242('0x6'));module[_0x7242('0x7')]=function(_0x35e39e,_0x5aef1c){return _0x35e39e[_0x7242('0x8')](_0x7242('0x9'),attributes,{'tableName':_0x7242('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbb27=['bluebird','request-promise','path','rimraf','./sound.attributes','exports','define','tools_sounds','lodash','util','api','moment'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xbb27,0x170));var _0x7bb2=function(_0x2b212f,_0x54f3a0){_0x2b212f=_0x2b212f-0x0;var _0x196828=_0xbb27[_0x2b212f];return _0x196828;};'use strict';var _=require(_0x7bb2('0x0'));var util=require(_0x7bb2('0x1'));var logger=require('../../config/logger')(_0x7bb2('0x2'));var moment=require(_0x7bb2('0x3'));var BPromise=require(_0x7bb2('0x4'));var rp=require(_0x7bb2('0x5'));var fs=require('fs');var path=require(_0x7bb2('0x6'));var rimraf=require(_0x7bb2('0x7'));var config=require('../../config/environment');var attributes=require(_0x7bb2('0x8'));module[_0x7bb2('0x9')]=function(_0x4275bb,_0x82c1f1){return _0x4275bb[_0x7bb2('0xa')]('Sound',attributes,{'tableName':_0x7bb2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 35d007c..47d5942 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfde5=['client','http','then','info','Sound,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','ShowSound','Sound','find','raw','where','options','attributes','include','map','model','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise'];(function(_0x3a068c,_0x33b7cd){var _0x1e681d=function(_0x5de5c1){while(--_0x5de5c1){_0x3a068c['push'](_0x3a068c['shift']());}};_0x1e681d(++_0x33b7cd);}(_0xfde5,0xc9));var _0x5fde=function(_0x36f521,_0x96cce1){_0x36f521=_0x36f521-0x0;var _0x44b414=_0xfde5[_0x36f521];return _0x44b414;};'use strict';var _=require(_0x5fde('0x0'));var util=require('util');var moment=require(_0x5fde('0x1'));var BPromise=require(_0x5fde('0x2'));var rs=require(_0x5fde('0x3'));var fs=require('fs');var Redis=require(_0x5fde('0x4'));var db=require(_0x5fde('0x5'))['db'];var utils=require(_0x5fde('0x6'));var logger=require('../../config/logger')(_0x5fde('0x7'));var config=require('../../config/environment');var jayson=require(_0x5fde('0x8'));var client=jayson[_0x5fde('0x9')][_0x5fde('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x50e206,_0x2b8a78,_0x12c5b2){return new BPromise(function(_0x9e6c60,_0x450245){return client['request'](_0x50e206,_0x12c5b2)[_0x5fde('0xb')](function(_0x5bcb55){logger[_0x5fde('0xc')](_0x5fde('0xd'),_0x2b8a78,_0x5fde('0xe'));logger[_0x5fde('0xf')]('Sound,\x20%s,\x20%s,\x20%s',_0x2b8a78,'request\x20sent',JSON[_0x5fde('0x10')](_0x5bcb55));if(_0x5bcb55[_0x5fde('0x11')]){if(_0x5bcb55[_0x5fde('0x11')]['code']===0x1f4){logger[_0x5fde('0x11')](_0x5fde('0xd'),_0x2b8a78,_0x5bcb55[_0x5fde('0x11')][_0x5fde('0x12')]);return _0x450245(_0x5bcb55[_0x5fde('0x11')][_0x5fde('0x12')]);}logger[_0x5fde('0x11')](_0x5fde('0xd'),_0x2b8a78,_0x5bcb55[_0x5fde('0x11')][_0x5fde('0x12')]);return _0x9e6c60(_0x5bcb55[_0x5fde('0x11')][_0x5fde('0x12')]);}else{logger['info'](_0x5fde('0xd'),_0x2b8a78,_0x5fde('0xe'));_0x9e6c60(_0x5bcb55['result'][_0x5fde('0x12')]);}})[_0x5fde('0x13')](function(_0x798f07){logger[_0x5fde('0x11')](_0x5fde('0xd'),_0x2b8a78,_0x798f07);_0x450245(_0x798f07);});});}exports[_0x5fde('0x14')]=function(_0x6b1078){var _0x3f34ce=this;return new Promise(function(_0x4424b5,_0x49a790){return db[_0x5fde('0x15')][_0x5fde('0x16')]({'raw':_0x6b1078['options']?_0x6b1078['options'][_0x5fde('0x17')]===undefined?!![]:![]:!![],'where':_0x6b1078['options']?_0x6b1078['options'][_0x5fde('0x18')]||null:null,'attributes':_0x6b1078[_0x5fde('0x19')]?_0x6b1078[_0x5fde('0x19')][_0x5fde('0x1a')]||null:null,'include':_0x6b1078[_0x5fde('0x19')]?_0x6b1078[_0x5fde('0x19')][_0x5fde('0x1b')]?_[_0x5fde('0x1c')](_0x6b1078[_0x5fde('0x19')][_0x5fde('0x1b')],function(_0x305659){return{'model':db[_0x305659[_0x5fde('0x1d')]],'as':_0x305659['as'],'attributes':_0x305659[_0x5fde('0x1a')],'include':_0x305659['include']?_[_0x5fde('0x1c')](_0x305659['include'],function(_0x1dfca1){return{'model':db[_0x1dfca1[_0x5fde('0x1d')]],'as':_0x1dfca1['as'],'attributes':_0x1dfca1[_0x5fde('0x1a')],'include':_0x1dfca1[_0x5fde('0x1b')]?_[_0x5fde('0x1c')](_0x1dfca1[_0x5fde('0x1b')],function(_0x75bf58){return{'model':db[_0x75bf58[_0x5fde('0x1d')]],'as':_0x75bf58['as'],'attributes':_0x75bf58[_0x5fde('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x5fde('0xb')](function(_0x2fc576){logger['info']('ShowSound',_0x6b1078);logger[_0x5fde('0xf')](_0x5fde('0x14'),_0x6b1078,JSON['stringify'](_0x2fc576));_0x4424b5(_0x2fc576);})[_0x5fde('0x13')](function(_0x5b1214){logger['error']('ShowSound',_0x5b1214[_0x5fde('0x12')],_0x6b1078);_0x49a790(_0x3f34ce[_0x5fde('0x11')](0x1f4,_0x5b1214[_0x5fde('0x12')]));});});};
\ No newline at end of file
+var _0x7a4b=['Sound,\x20%s,\x20%s','message','result','catch','ShowSound','Sound','find','options','where','attributes','model','map','include','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','then','info','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x4e475b,_0x488030){var _0x4790c=function(_0x14c19d){while(--_0x14c19d){_0x4e475b['push'](_0x4e475b['shift']());}};_0x4790c(++_0x488030);}(_0x7a4b,0x1ba));var _0xb7a4=function(_0x4df5b6,_0x178a69){_0x4df5b6=_0x4df5b6-0x0;var _0x28d146=_0x7a4b[_0x4df5b6];return _0x28d146;};'use strict';var _=require(_0xb7a4('0x0'));var util=require(_0xb7a4('0x1'));var moment=require(_0xb7a4('0x2'));var BPromise=require(_0xb7a4('0x3'));var rs=require(_0xb7a4('0x4'));var fs=require('fs');var Redis=require(_0xb7a4('0x5'));var db=require(_0xb7a4('0x6'))['db'];var utils=require(_0xb7a4('0x7'));var logger=require(_0xb7a4('0x8'))(_0xb7a4('0x9'));var config=require('../../config/environment');var jayson=require(_0xb7a4('0xa'));var client=jayson['client'][_0xb7a4('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2b3505,_0x40d411,_0x34a762){return new BPromise(function(_0x1efc4e,_0x31f34e){return client['request'](_0x2b3505,_0x34a762)[_0xb7a4('0xc')](function(_0x27c773){logger[_0xb7a4('0xd')]('Sound,\x20%s,\x20%s',_0x40d411,_0xb7a4('0xe'));logger[_0xb7a4('0xf')](_0xb7a4('0x10'),_0x40d411,_0xb7a4('0xe'),JSON[_0xb7a4('0x11')](_0x27c773));if(_0x27c773[_0xb7a4('0x12')]){if(_0x27c773[_0xb7a4('0x12')][_0xb7a4('0x13')]===0x1f4){logger[_0xb7a4('0x12')](_0xb7a4('0x14'),_0x40d411,_0x27c773['error'][_0xb7a4('0x15')]);return _0x31f34e(_0x27c773[_0xb7a4('0x12')]['message']);}logger[_0xb7a4('0x12')](_0xb7a4('0x14'),_0x40d411,_0x27c773['error'][_0xb7a4('0x15')]);return _0x1efc4e(_0x27c773[_0xb7a4('0x12')][_0xb7a4('0x15')]);}else{logger[_0xb7a4('0xd')](_0xb7a4('0x14'),_0x40d411,'request\x20sent');_0x1efc4e(_0x27c773[_0xb7a4('0x16')][_0xb7a4('0x15')]);}})[_0xb7a4('0x17')](function(_0x1bfa68){logger[_0xb7a4('0x12')](_0xb7a4('0x14'),_0x40d411,_0x1bfa68);_0x31f34e(_0x1bfa68);});});}exports[_0xb7a4('0x18')]=function(_0x458ded){var _0x9ad01f=this;return new Promise(function(_0x284065,_0x53c026){return db[_0xb7a4('0x19')][_0xb7a4('0x1a')]({'raw':_0x458ded[_0xb7a4('0x1b')]?_0x458ded['options']['raw']===undefined?!![]:![]:!![],'where':_0x458ded[_0xb7a4('0x1b')]?_0x458ded[_0xb7a4('0x1b')][_0xb7a4('0x1c')]||null:null,'attributes':_0x458ded[_0xb7a4('0x1b')]?_0x458ded[_0xb7a4('0x1b')][_0xb7a4('0x1d')]||null:null,'include':_0x458ded[_0xb7a4('0x1b')]?_0x458ded['options']['include']?_['map'](_0x458ded[_0xb7a4('0x1b')]['include'],function(_0x1f5fc0){return{'model':db[_0x1f5fc0[_0xb7a4('0x1e')]],'as':_0x1f5fc0['as'],'attributes':_0x1f5fc0[_0xb7a4('0x1d')],'include':_0x1f5fc0['include']?_[_0xb7a4('0x1f')](_0x1f5fc0[_0xb7a4('0x20')],function(_0x43f608){return{'model':db[_0x43f608[_0xb7a4('0x1e')]],'as':_0x43f608['as'],'attributes':_0x43f608[_0xb7a4('0x1d')],'include':_0x43f608['include']?_[_0xb7a4('0x1f')](_0x43f608['include'],function(_0x28a644){return{'model':db[_0x28a644['model']],'as':_0x28a644['as'],'attributes':_0x28a644[_0xb7a4('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xb7a4('0xc')](function(_0x445cd0){logger['info'](_0xb7a4('0x18'),_0x458ded);logger[_0xb7a4('0xf')](_0xb7a4('0x18'),_0x458ded,JSON[_0xb7a4('0x11')](_0x445cd0));_0x284065(_0x445cd0);})[_0xb7a4('0x17')](function(_0x10d89d){logger[_0xb7a4('0x12')]('ShowSound',_0x10d89d[_0xb7a4('0x15')],_0x458ded);_0x53c026(_0x9ad01f['error'](0x1f4,_0x10d89d['message']));});});};
\ No newline at end of file
index fe72253..cb6ba4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8603=['../../components/interaction/service','./squareMessage.controller','isAuthenticated','index','get','/:id','create','put','update','exports','util','path','connect-timeout','fs-extra','../../components/auth/service'];(function(_0x2baca1,_0x2f3557){var _0x9aa62a=function(_0x5c47d5){while(--_0x5c47d5){_0x2baca1['push'](_0x2baca1['shift']());}};_0x9aa62a(++_0x2f3557);}(_0x8603,0x190));var _0x3860=function(_0x42db23,_0x112b01){_0x42db23=_0x42db23-0x0;var _0x2d1e4e=_0x8603[_0x42db23];return _0x2d1e4e;};'use strict';var multer=require('multer');var util=require(_0x3860('0x0'));var path=require(_0x3860('0x1'));var timeout=require(_0x3860('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x3860('0x3'));var auth=require(_0x3860('0x4'));var interaction=require(_0x3860('0x5'));var config=require('../../config/environment');var controller=require(_0x3860('0x6'));router['get']('/',auth[_0x3860('0x7')](),controller[_0x3860('0x8')]);router[_0x3860('0x9')](_0x3860('0xa'),auth[_0x3860('0x7')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x3860('0xb')]);router[_0x3860('0xc')]('/:id',auth[_0x3860('0x7')](),controller[_0x3860('0xd')]);router['delete'](_0x3860('0xa'),auth[_0x3860('0x7')](),controller['destroy']);module[_0x3860('0xe')]=router;
\ No newline at end of file
+var _0x8603=['../../components/interaction/service','./squareMessage.controller','isAuthenticated','index','get','/:id','create','put','update','exports','util','path','connect-timeout','fs-extra','../../components/auth/service'];(function(_0x27def7,_0x3f0835){var _0x581cbc=function(_0x5b8ae4){while(--_0x5b8ae4){_0x27def7['push'](_0x27def7['shift']());}};_0x581cbc(++_0x3f0835);}(_0x8603,0x190));var _0x3860=function(_0x15edff,_0x2f7ea5){_0x15edff=_0x15edff-0x0;var _0x2ed0ed=_0x8603[_0x15edff];return _0x2ed0ed;};'use strict';var multer=require('multer');var util=require(_0x3860('0x0'));var path=require(_0x3860('0x1'));var timeout=require(_0x3860('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x3860('0x3'));var auth=require(_0x3860('0x4'));var interaction=require(_0x3860('0x5'));var config=require('../../config/environment');var controller=require(_0x3860('0x6'));router['get']('/',auth[_0x3860('0x7')](),controller[_0x3860('0x8')]);router[_0x3860('0x9')](_0x3860('0xa'),auth[_0x3860('0x7')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x3860('0xb')]);router[_0x3860('0xc')]('/:id',auth[_0x3860('0x7')](),controller[_0x3860('0xd')]);router['delete'](_0x3860('0xa'),auth[_0x3860('0x7')](),controller['destroy']);module[_0x3860('0xe')]=router;
\ No newline at end of file
index 727a1fb..f11d49b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83bb=['sequelize','STRING','medium','ENUM','out','TEXT'];(function(_0x2cfb58,_0x3d9412){var _0xd99951=function(_0x329afa){while(--_0x329afa){_0x2cfb58['push'](_0x2cfb58['shift']());}};_0xd99951(++_0x3d9412);}(_0x83bb,0x16e));var _0xb83b=function(_0x22d6bf,_0x4b9c39){_0x22d6bf=_0x22d6bf-0x0;var _0x598ffd=_0x83bb[_0x22d6bf];return _0x598ffd;};'use strict';var Sequelize=require(_0xb83b('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xb83b('0x1')]},'body':{'type':Sequelize['TEXT'](_0xb83b('0x2')),'allowNull':![]},'direction':{'type':Sequelize[_0xb83b('0x3')]('in',_0xb83b('0x4')),'defaultValue':_0xb83b('0x4'),'allowNull':![]},'providerName':{'type':Sequelize[_0xb83b('0x1')]},'providerResponse':{'type':Sequelize[_0xb83b('0x5')]}};
\ No newline at end of file
+var _0x2cf0=['sequelize','exports','STRING','medium','ENUM','out','TEXT'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x2cf0,0xe7));var _0x02cf=function(_0x53e750,_0x494804){_0x53e750=_0x53e750-0x0;var _0x3a9272=_0x2cf0[_0x53e750];return _0x3a9272;};'use strict';var Sequelize=require(_0x02cf('0x0'));module[_0x02cf('0x1')]={'uniqueid':{'type':Sequelize[_0x02cf('0x2')]},'body':{'type':Sequelize['TEXT'](_0x02cf('0x3')),'allowNull':![]},'direction':{'type':Sequelize[_0x02cf('0x4')]('in',_0x02cf('0x5')),'defaultValue':_0x02cf('0x5'),'allowNull':![]},'providerName':{'type':Sequelize[_0x02cf('0x2')]},'providerResponse':{'type':Sequelize[_0x02cf('0x6')]}};
\ No newline at end of file
index d35efe0..eab786b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8742=['findAll','rows','fields','catch','create','body','params','find','eml-format','rimraf','zip-dir','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','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','undefined','limit','count','offset','set','Content-Range','reject','save','update','then','error','name','send','index','map','SquareMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','filter','where','merge','VIRTUAL','options','includeAll','include'];(function(_0x139325,_0x4e91d1){var _0x986503=function(_0x247e08){while(--_0x247e08){_0x139325['push'](_0x139325['shift']());}};_0x986503(++_0x4e91d1);}(_0x8742,0xe9));var _0x2874=function(_0x42aa0a,_0x57286c){_0x42aa0a=_0x42aa0a-0x0;var _0x1150e4=_0x8742[_0x42aa0a];return _0x1150e4;};'use strict';var emlformat=require(_0x2874('0x0'));var rimraf=require(_0x2874('0x1'));var zipdir=require(_0x2874('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2874('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x2874('0x4'));var util=require(_0x2874('0x5'));var path=require(_0x2874('0x6'));var sox=require(_0x2874('0x7'));var csv=require(_0x2874('0x8'));var ejs=require(_0x2874('0x9'));var fs=require('fs');var fs_extra=require(_0x2874('0xa'));var _=require('lodash');var squel=require(_0x2874('0xb'));var crypto=require(_0x2874('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x2874('0xd'));var toCsv=require(_0x2874('0x8'));var querystring=require(_0x2874('0xe'));var Papa=require(_0x2874('0xf'));var Redis=require(_0x2874('0x10'));var authService=require(_0x2874('0x11'));var qs=require(_0x2874('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2874('0x13'));var logger=require(_0x2874('0x14'))(_0x2874('0x15'));var utils=require(_0x2874('0x16'));var config=require(_0x2874('0x17'));var licenseUtil=require(_0x2874('0x18'));var db=require(_0x2874('0x19'))['db'];function respondWithStatusCode(_0x1042a8,_0x3f4948){_0x3f4948=_0x3f4948||0xcc;return function(_0x1e5cd1){if(_0x1e5cd1){return _0x1042a8[_0x2874('0x1a')](_0x3f4948);}return _0x1042a8[_0x2874('0x1b')](_0x3f4948)[_0x2874('0x1c')]();};}function respondWithResult(_0x2c5afa,_0x172ce5){_0x172ce5=_0x172ce5||0xc8;return function(_0x294249){if(_0x294249){return _0x2c5afa[_0x2874('0x1b')](_0x172ce5)[_0x2874('0x1d')](_0x294249);}};}function respondWithFilteredResult(_0x2ddd5c,_0x440d1c){return function(_0x59f353){if(_0x59f353){var _0x3ae330=typeof _0x440d1c['offset']===_0x2874('0x1e')&&typeof _0x440d1c[_0x2874('0x1f')]===_0x2874('0x1e');var _0x49712f=_0x59f353[_0x2874('0x20')];var _0x4bdb0e=_0x3ae330?0x0:_0x440d1c[_0x2874('0x21')];var _0x531265=_0x3ae330?_0x59f353[_0x2874('0x20')]:_0x440d1c[_0x2874('0x21')]+_0x440d1c['limit'];var _0x373e5c;if(_0x531265>=_0x49712f){_0x531265=_0x49712f;_0x373e5c=0xc8;}else{_0x373e5c=0xce;}_0x2ddd5c['status'](_0x373e5c);return _0x2ddd5c[_0x2874('0x22')](_0x2874('0x23'),_0x4bdb0e+'-'+_0x531265+'/'+_0x49712f)['json'](_0x59f353);}return null;};}function patchUpdates(_0x3ec61b){return function(_0x2ddb25){try{jsonpatch['apply'](_0x2ddb25,_0x3ec61b,!![]);}catch(_0x72dd96){return BPromise[_0x2874('0x24')](_0x72dd96);}return _0x2ddb25[_0x2874('0x25')]();};}function saveUpdates(_0x20a3e5,_0x15adbb){return function(_0x4f0c9f){if(_0x4f0c9f){return _0x4f0c9f[_0x2874('0x26')](_0x20a3e5)[_0x2874('0x27')](function(_0x5c0285){return _0x5c0285;});}return null;};}function removeEntity(_0x2a0e55,_0x44acb4){return function(_0x801d5b){if(_0x801d5b){return _0x801d5b['destroy']()[_0x2874('0x27')](function(){_0x2a0e55[_0x2874('0x1b')](0xcc)[_0x2874('0x1c')]();});}};}function handleEntityNotFound(_0xf2f719,_0x480795){return function(_0x33412f){if(!_0x33412f){_0xf2f719[_0x2874('0x1a')](0x194);}return _0x33412f;};}function handleError(_0x42927a,_0x31c607){_0x31c607=_0x31c607||0x1f4;return function(_0x22efae){logger[_0x2874('0x28')](_0x22efae['stack']);if(_0x22efae[_0x2874('0x29')]){delete _0x22efae[_0x2874('0x29')];}_0x42927a[_0x2874('0x1b')](_0x31c607)[_0x2874('0x2a')](_0x22efae);};}exports[_0x2874('0x2b')]=function(_0x1889fd,_0x53ece2){var _0x2c3a10={},_0x19fcaf={},_0x4c0e61={'count':0x0,'rows':[]};var _0x2b2010=_[_0x2874('0x2c')](db[_0x2874('0x2d')][_0x2874('0x2e')],function(_0x2a803f){return{'name':_0x2a803f[_0x2874('0x2f')],'type':_0x2a803f[_0x2874('0x30')][_0x2874('0x31')]};});_0x19fcaf[_0x2874('0x32')]=_['map'](_0x2b2010,_0x2874('0x29'));_0x19fcaf[_0x2874('0x33')]=_[_0x2874('0x34')](_0x1889fd[_0x2874('0x33')]);_0x19fcaf[_0x2874('0x35')]=_[_0x2874('0x36')](_0x19fcaf[_0x2874('0x32')],_0x19fcaf[_0x2874('0x33')]);_0x2c3a10['attributes']=_['intersection'](_0x19fcaf['model'],qs['fields'](_0x1889fd['query']['fields']));_0x2c3a10[_0x2874('0x37')]=_0x2c3a10[_0x2874('0x37')][_0x2874('0x38')]?_0x2c3a10[_0x2874('0x37')]:_0x19fcaf[_0x2874('0x32')];if(!_0x1889fd['query'][_0x2874('0x39')](_0x2874('0x3a'))){_0x2c3a10[_0x2874('0x1f')]=qs[_0x2874('0x1f')](_0x1889fd[_0x2874('0x33')]['limit']);_0x2c3a10[_0x2874('0x21')]=qs[_0x2874('0x21')](_0x1889fd[_0x2874('0x33')]['offset']);}_0x2c3a10[_0x2874('0x3b')]=qs['sort'](_0x1889fd[_0x2874('0x33')]['sort']);_0x2c3a10['where']=qs[_0x2874('0x35')](_['pick'](_0x1889fd[_0x2874('0x33')],_0x19fcaf[_0x2874('0x35')]),_0x2b2010);if(_0x1889fd[_0x2874('0x33')][_0x2874('0x3c')]){_0x2c3a10[_0x2874('0x3d')]=_[_0x2874('0x3e')](_0x2c3a10[_0x2874('0x3d')],{'$or':_[_0x2874('0x2c')](_0x2b2010,function(_0x5ce1e5){if(_0x5ce1e5['type']!==_0x2874('0x3f')){var _0x526000={};_0x526000[_0x5ce1e5[_0x2874('0x29')]]={'$like':'%'+_0x1889fd[_0x2874('0x33')][_0x2874('0x3c')]+'%'};return _0x526000;}})});}_0x2c3a10=_[_0x2874('0x3e')]({},_0x2c3a10,_0x1889fd[_0x2874('0x40')]);var _0x664dc0={'where':_0x2c3a10[_0x2874('0x3d')]};return db[_0x2874('0x2d')]['count'](_0x664dc0)[_0x2874('0x27')](function(_0x4c2792){_0x4c0e61['count']=_0x4c2792;if(_0x1889fd[_0x2874('0x33')][_0x2874('0x41')]){_0x2c3a10[_0x2874('0x42')]=[{'all':!![]}];}return db['SquareMessage'][_0x2874('0x43')](_0x2c3a10);})[_0x2874('0x27')](function(_0x5e6f15){_0x4c0e61[_0x2874('0x44')]=_0x5e6f15;return _0x4c0e61;})[_0x2874('0x27')](respondWithFilteredResult(_0x53ece2,_0x2c3a10))['catch'](handleError(_0x53ece2,null));};exports['show']=function(_0x4d18f3,_0x424252){var _0x29752a={'raw':!![],'where':{'id':_0x4d18f3['params']['id']}},_0x30721a={};_0x30721a[_0x2874('0x32')]=_[_0x2874('0x34')](db['SquareMessage']['rawAttributes']);_0x30721a['query']=_[_0x2874('0x34')](_0x4d18f3[_0x2874('0x33')]);_0x30721a[_0x2874('0x35')]=_[_0x2874('0x36')](_0x30721a['model'],_0x30721a[_0x2874('0x33')]);_0x29752a[_0x2874('0x37')]=_[_0x2874('0x36')](_0x30721a[_0x2874('0x32')],qs['fields'](_0x4d18f3[_0x2874('0x33')][_0x2874('0x45')]));_0x29752a[_0x2874('0x37')]=_0x29752a[_0x2874('0x37')][_0x2874('0x38')]?_0x29752a[_0x2874('0x37')]:_0x30721a['model'];if(_0x4d18f3['query']['includeAll']){_0x29752a[_0x2874('0x42')]=[{'all':!![]}];}_0x29752a=_[_0x2874('0x3e')]({},_0x29752a,_0x4d18f3[_0x2874('0x40')]);return db[_0x2874('0x2d')]['find'](_0x29752a)[_0x2874('0x27')](handleEntityNotFound(_0x424252,null))[_0x2874('0x27')](respondWithResult(_0x424252,null))[_0x2874('0x46')](handleError(_0x424252,null));};exports[_0x2874('0x47')]=function(_0x34a291,_0x31a146){return db['SquareMessage'][_0x2874('0x47')](_0x34a291[_0x2874('0x48')],{})[_0x2874('0x27')](respondWithResult(_0x31a146,0xc9))[_0x2874('0x46')](handleError(_0x31a146,null));};exports[_0x2874('0x26')]=function(_0x2e221e,_0x2a85f5){if(_0x2e221e['body']['id']){delete _0x2e221e[_0x2874('0x48')]['id'];}return db[_0x2874('0x2d')]['find']({'where':{'id':_0x2e221e[_0x2874('0x49')]['id']}})[_0x2874('0x27')](handleEntityNotFound(_0x2a85f5,null))[_0x2874('0x27')](saveUpdates(_0x2e221e[_0x2874('0x48')],null))[_0x2874('0x27')](respondWithResult(_0x2a85f5,null))[_0x2874('0x46')](handleError(_0x2a85f5,null));};exports['destroy']=function(_0x584099,_0x40b2cd){return db[_0x2874('0x2d')][_0x2874('0x4a')]({'where':{'id':_0x584099[_0x2874('0x49')]['id']}})[_0x2874('0x27')](handleEntityNotFound(_0x40b2cd,null))[_0x2874('0x27')](removeEntity(_0x40b2cd,null))[_0x2874('0x46')](handleError(_0x40b2cd,null));};
\ No newline at end of file
+var _0x3d04=['undefined','count','offset','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','SquareMessage','rows','catch','show','params','rawAttributes','includeAll','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','limit'];(function(_0x3ce3c,_0x319337){var _0x55a2c9=function(_0x1568d0){while(--_0x1568d0){_0x3ce3c['push'](_0x3ce3c['shift']());}};_0x55a2c9(++_0x319337);}(_0x3d04,0xbe));var _0x43d0=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x3d04[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require(_0x43d0('0x0'));var rimraf=require(_0x43d0('0x1'));var zipdir=require(_0x43d0('0x2'));var jsonpatch=require(_0x43d0('0x3'));var rp=require(_0x43d0('0x4'));var moment=require(_0x43d0('0x5'));var BPromise=require(_0x43d0('0x6'));var Mustache=require(_0x43d0('0x7'));var util=require('util');var path=require(_0x43d0('0x8'));var sox=require(_0x43d0('0x9'));var csv=require(_0x43d0('0xa'));var ejs=require(_0x43d0('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x43d0('0xc'));var deskjs=require(_0x43d0('0xd'));var toCsv=require(_0x43d0('0xa'));var querystring=require(_0x43d0('0xe'));var Papa=require(_0x43d0('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x43d0('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x43d0('0x11'))(_0x43d0('0x12'));var utils=require(_0x43d0('0x13'));var config=require(_0x43d0('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x43d0('0x15'))['db'];function respondWithStatusCode(_0x23daaa,_0x546b23){_0x546b23=_0x546b23||0xcc;return function(_0x29773b){if(_0x29773b){return _0x23daaa[_0x43d0('0x16')](_0x546b23);}return _0x23daaa[_0x43d0('0x17')](_0x546b23)['end']();};}function respondWithResult(_0xd262a8,_0x2454fa){_0x2454fa=_0x2454fa||0xc8;return function(_0x436130){if(_0x436130){return _0xd262a8['status'](_0x2454fa)[_0x43d0('0x18')](_0x436130);}};}function respondWithFilteredResult(_0x357f87,_0x44e6ec){return function(_0x1218b5){if(_0x1218b5){var _0x91b4a1=typeof _0x44e6ec['offset']==='undefined'&&typeof _0x44e6ec[_0x43d0('0x19')]===_0x43d0('0x1a');var _0x35decf=_0x1218b5['count'];var _0x2c641e=_0x91b4a1?0x0:_0x44e6ec['offset'];var _0x2c9d06=_0x91b4a1?_0x1218b5[_0x43d0('0x1b')]:_0x44e6ec[_0x43d0('0x1c')]+_0x44e6ec['limit'];var _0x3d7dcc;if(_0x2c9d06>=_0x35decf){_0x2c9d06=_0x35decf;_0x3d7dcc=0xc8;}else{_0x3d7dcc=0xce;}_0x357f87[_0x43d0('0x17')](_0x3d7dcc);return _0x357f87['set'](_0x43d0('0x1d'),_0x2c641e+'-'+_0x2c9d06+'/'+_0x35decf)[_0x43d0('0x18')](_0x1218b5);}return null;};}function patchUpdates(_0x348429){return function(_0x248622){try{jsonpatch[_0x43d0('0x1e')](_0x248622,_0x348429,!![]);}catch(_0x28381b){return BPromise[_0x43d0('0x1f')](_0x28381b);}return _0x248622[_0x43d0('0x20')]();};}function saveUpdates(_0x30febc,_0xc8a644){return function(_0xec5f07){if(_0xec5f07){return _0xec5f07[_0x43d0('0x21')](_0x30febc)[_0x43d0('0x22')](function(_0xbc72e6){return _0xbc72e6;});}return null;};}function removeEntity(_0x2efd77,_0x48aa18){return function(_0x2c7b24){if(_0x2c7b24){return _0x2c7b24[_0x43d0('0x23')]()['then'](function(){_0x2efd77[_0x43d0('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x29c111,_0x44497b){return function(_0x5dd310){if(!_0x5dd310){_0x29c111[_0x43d0('0x16')](0x194);}return _0x5dd310;};}function handleError(_0x238c64,_0x5ac4c0){_0x5ac4c0=_0x5ac4c0||0x1f4;return function(_0x12df30){logger[_0x43d0('0x24')](_0x12df30[_0x43d0('0x25')]);if(_0x12df30['name']){delete _0x12df30[_0x43d0('0x26')];}_0x238c64[_0x43d0('0x17')](_0x5ac4c0)[_0x43d0('0x27')](_0x12df30);};}exports[_0x43d0('0x28')]=function(_0x37d78f,_0x440ecb){var _0x31a057={},_0x4a3cd4={},_0x2b0784={'count':0x0,'rows':[]};var _0x2f5bc5=_[_0x43d0('0x29')](db['SquareMessage']['rawAttributes'],function(_0x52c37b){return{'name':_0x52c37b[_0x43d0('0x2a')],'type':_0x52c37b[_0x43d0('0x2b')][_0x43d0('0x2c')]};});_0x4a3cd4[_0x43d0('0x2d')]=_[_0x43d0('0x29')](_0x2f5bc5,_0x43d0('0x26'));_0x4a3cd4['query']=_[_0x43d0('0x2e')](_0x37d78f[_0x43d0('0x2f')]);_0x4a3cd4[_0x43d0('0x30')]=_[_0x43d0('0x31')](_0x4a3cd4[_0x43d0('0x2d')],_0x4a3cd4[_0x43d0('0x2f')]);_0x31a057[_0x43d0('0x32')]=_[_0x43d0('0x31')](_0x4a3cd4[_0x43d0('0x2d')],qs[_0x43d0('0x33')](_0x37d78f[_0x43d0('0x2f')]['fields']));_0x31a057[_0x43d0('0x32')]=_0x31a057[_0x43d0('0x32')][_0x43d0('0x34')]?_0x31a057[_0x43d0('0x32')]:_0x4a3cd4['model'];if(!_0x37d78f[_0x43d0('0x2f')]['hasOwnProperty'](_0x43d0('0x35'))){_0x31a057[_0x43d0('0x19')]=qs['limit'](_0x37d78f[_0x43d0('0x2f')][_0x43d0('0x19')]);_0x31a057[_0x43d0('0x1c')]=qs[_0x43d0('0x1c')](_0x37d78f[_0x43d0('0x2f')][_0x43d0('0x1c')]);}_0x31a057[_0x43d0('0x36')]=qs[_0x43d0('0x37')](_0x37d78f[_0x43d0('0x2f')][_0x43d0('0x37')]);_0x31a057[_0x43d0('0x38')]=qs['filters'](_[_0x43d0('0x39')](_0x37d78f[_0x43d0('0x2f')],_0x4a3cd4[_0x43d0('0x30')]),_0x2f5bc5);if(_0x37d78f[_0x43d0('0x2f')][_0x43d0('0x3a')]){_0x31a057[_0x43d0('0x38')]=_[_0x43d0('0x3b')](_0x31a057[_0x43d0('0x38')],{'$or':_[_0x43d0('0x29')](_0x2f5bc5,function(_0x43bcc5){if(_0x43bcc5[_0x43d0('0x2b')]!==_0x43d0('0x3c')){var _0x19843c={};_0x19843c[_0x43bcc5[_0x43d0('0x26')]]={'$like':'%'+_0x37d78f['query'][_0x43d0('0x3a')]+'%'};return _0x19843c;}})});}_0x31a057=_[_0x43d0('0x3b')]({},_0x31a057,_0x37d78f[_0x43d0('0x3d')]);var _0xc3f9c7={'where':_0x31a057[_0x43d0('0x38')]};return db[_0x43d0('0x3e')][_0x43d0('0x1b')](_0xc3f9c7)[_0x43d0('0x22')](function(_0x4ae965){_0x2b0784['count']=_0x4ae965;if(_0x37d78f[_0x43d0('0x2f')]['includeAll']){_0x31a057['include']=[{'all':!![]}];}return db[_0x43d0('0x3e')]['findAll'](_0x31a057);})[_0x43d0('0x22')](function(_0x5027d0){_0x2b0784[_0x43d0('0x3f')]=_0x5027d0;return _0x2b0784;})['then'](respondWithFilteredResult(_0x440ecb,_0x31a057))[_0x43d0('0x40')](handleError(_0x440ecb,null));};exports[_0x43d0('0x41')]=function(_0x468b32,_0x4e817e){var _0x3eb2e9={'raw':!![],'where':{'id':_0x468b32[_0x43d0('0x42')]['id']}},_0x520406={};_0x520406['model']=_['keys'](db[_0x43d0('0x3e')][_0x43d0('0x43')]);_0x520406['query']=_[_0x43d0('0x2e')](_0x468b32[_0x43d0('0x2f')]);_0x520406[_0x43d0('0x30')]=_[_0x43d0('0x31')](_0x520406[_0x43d0('0x2d')],_0x520406['query']);_0x3eb2e9[_0x43d0('0x32')]=_[_0x43d0('0x31')](_0x520406[_0x43d0('0x2d')],qs[_0x43d0('0x33')](_0x468b32['query'][_0x43d0('0x33')]));_0x3eb2e9[_0x43d0('0x32')]=_0x3eb2e9[_0x43d0('0x32')][_0x43d0('0x34')]?_0x3eb2e9[_0x43d0('0x32')]:_0x520406['model'];if(_0x468b32[_0x43d0('0x2f')][_0x43d0('0x44')]){_0x3eb2e9['include']=[{'all':!![]}];}_0x3eb2e9=_[_0x43d0('0x3b')]({},_0x3eb2e9,_0x468b32[_0x43d0('0x3d')]);return db[_0x43d0('0x3e')]['find'](_0x3eb2e9)[_0x43d0('0x22')](handleEntityNotFound(_0x4e817e,null))['then'](respondWithResult(_0x4e817e,null))[_0x43d0('0x40')](handleError(_0x4e817e,null));};exports['create']=function(_0x1f55e9,_0x269d99){return db[_0x43d0('0x3e')][_0x43d0('0x45')](_0x1f55e9[_0x43d0('0x46')],{})['then'](respondWithResult(_0x269d99,0xc9))[_0x43d0('0x40')](handleError(_0x269d99,null));};exports['update']=function(_0x5a6364,_0x3e7392){if(_0x5a6364[_0x43d0('0x46')]['id']){delete _0x5a6364[_0x43d0('0x46')]['id'];}return db[_0x43d0('0x3e')][_0x43d0('0x47')]({'where':{'id':_0x5a6364[_0x43d0('0x42')]['id']}})[_0x43d0('0x22')](handleEntityNotFound(_0x3e7392,null))[_0x43d0('0x22')](saveUpdates(_0x5a6364[_0x43d0('0x46')],null))[_0x43d0('0x22')](respondWithResult(_0x3e7392,null))[_0x43d0('0x40')](handleError(_0x3e7392,null));};exports['destroy']=function(_0x338203,_0xd78af1){return db[_0x43d0('0x3e')]['find']({'where':{'id':_0x338203[_0x43d0('0x42')]['id']}})['then'](handleEntityNotFound(_0xd78af1,null))['then'](removeEntity(_0xd78af1,null))[_0x43d0('0x40')](handleError(_0xd78af1,null));};
\ No newline at end of file
index c0b688c..8aa535d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1da6=['api','bluebird','request-promise','path','rimraf','./squareMessage.attributes','exports','SquareMessage','square_messages','lodash','util','../../config/logger'];(function(_0x500ce1,_0x50a551){var _0x428ae3=function(_0x5e3ed3){while(--_0x5e3ed3){_0x500ce1['push'](_0x500ce1['shift']());}};_0x428ae3(++_0x50a551);}(_0x1da6,0x11d));var _0x61da=function(_0x531607,_0x73fa88){_0x531607=_0x531607-0x0;var _0x1b1fbb=_0x1da6[_0x531607];return _0x1b1fbb;};'use strict';var _=require(_0x61da('0x0'));var util=require(_0x61da('0x1'));var logger=require(_0x61da('0x2'))(_0x61da('0x3'));var moment=require('moment');var BPromise=require(_0x61da('0x4'));var rp=require(_0x61da('0x5'));var fs=require('fs');var path=require(_0x61da('0x6'));var rimraf=require(_0x61da('0x7'));var config=require('../../config/environment');var attributes=require(_0x61da('0x8'));module[_0x61da('0x9')]=function(_0xb2d738,_0x574b0e){return _0xb2d738['define'](_0x61da('0xa'),attributes,{'tableName':_0x61da('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x96aa=['./squareMessage.attributes','exports','define','SquareMessage','square_messages','lodash','util','../../config/logger','api','moment','path'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x96aa,0x1bd));var _0xa96a=function(_0x33b201,_0x4f3fe3){_0x33b201=_0x33b201-0x0;var _0x285584=_0x96aa[_0x33b201];return _0x285584;};'use strict';var _=require(_0xa96a('0x0'));var util=require(_0xa96a('0x1'));var logger=require(_0xa96a('0x2'))(_0xa96a('0x3'));var moment=require(_0xa96a('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xa96a('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xa96a('0x6'));module[_0xa96a('0x7')]=function(_0x3704f6,_0x29045a){return _0x3704f6[_0xa96a('0x8')](_0xa96a('0x9'),attributes,{'tableName':_0xa96a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3ee41f7..b5032a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9541=['then','debug','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','SquareMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','SquareMessage,\x20%s,\x20%s','result','catch','CreateSquareMessage','SquareMessage','create','body','options','raw'];(function(_0x3f4bc1,_0x15ace5){var _0x46fcf6=function(_0x3a19c1){while(--_0x3a19c1){_0x3f4bc1['push'](_0x3f4bc1['shift']());}};_0x46fcf6(++_0x15ace5);}(_0x9541,0xdb));var _0x1954=function(_0x3f05cf,_0x1ed2a4){_0x3f05cf=_0x3f05cf-0x0;var _0x2bca4e=_0x9541[_0x3f05cf];return _0x2bca4e;};'use strict';var _=require(_0x1954('0x0'));var util=require(_0x1954('0x1'));var moment=require('moment');var BPromise=require(_0x1954('0x2'));var rs=require(_0x1954('0x3'));var fs=require('fs');var Redis=require(_0x1954('0x4'));var db=require(_0x1954('0x5'))['db'];var utils=require(_0x1954('0x6'));var logger=require(_0x1954('0x7'))(_0x1954('0x8'));var config=require(_0x1954('0x9'));var jayson=require(_0x1954('0xa'));var client=jayson['client'][_0x1954('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x417824,_0x4e2426,_0x49b759){return new BPromise(function(_0x314ec8,_0x245a42){return client[_0x1954('0xc')](_0x417824,_0x49b759)['then'](function(_0x4aef1f){logger[_0x1954('0xd')]('SquareMessage,\x20%s,\x20%s',_0x4e2426,'request\x20sent');logger['debug'](_0x1954('0xe'),_0x4e2426,_0x1954('0xf'),JSON[_0x1954('0x10')](_0x4aef1f));if(_0x4aef1f['error']){if(_0x4aef1f[_0x1954('0x11')][_0x1954('0x12')]===0x1f4){logger['error']('SquareMessage,\x20%s,\x20%s',_0x4e2426,_0x4aef1f[_0x1954('0x11')][_0x1954('0x13')]);return _0x245a42(_0x4aef1f['error'][_0x1954('0x13')]);}logger[_0x1954('0x11')]('SquareMessage,\x20%s,\x20%s',_0x4e2426,_0x4aef1f[_0x1954('0x11')][_0x1954('0x13')]);return _0x314ec8(_0x4aef1f['error'][_0x1954('0x13')]);}else{logger['info'](_0x1954('0x14'),_0x4e2426,_0x1954('0xf'));_0x314ec8(_0x4aef1f[_0x1954('0x15')]['message']);}})[_0x1954('0x16')](function(_0x5ceeba){logger['error'](_0x1954('0x14'),_0x4e2426,_0x5ceeba);_0x245a42(_0x5ceeba);});});}exports[_0x1954('0x17')]=function(_0x58d86e){var _0x5e4c1c=this;return new Promise(function(_0x1eb0d9,_0xc7c140){return db[_0x1954('0x18')][_0x1954('0x19')](_0x58d86e[_0x1954('0x1a')],{'raw':_0x58d86e['options']?_0x58d86e[_0x1954('0x1b')][_0x1954('0x1c')]===undefined?!![]:![]:!![]})[_0x1954('0x1d')](function(_0x57f1aa){logger[_0x1954('0xd')]('CreateSquareMessage',_0x58d86e);logger[_0x1954('0x1e')](_0x1954('0x17'),_0x58d86e,JSON[_0x1954('0x10')](_0x57f1aa));_0x1eb0d9(_0x57f1aa);})['catch'](function(_0x423fc9){logger[_0x1954('0x11')](_0x1954('0x17'),_0x423fc9['message'],_0x58d86e);_0xc7c140(_0x5e4c1c[_0x1954('0x11')](0x1f4,_0x423fc9['message']));});});};
\ No newline at end of file
+var _0x0771=['create','body','options','raw','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','SquareMessage,\x20%s,\x20%s','debug','SquareMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','CreateSquareMessage','SquareMessage'];(function(_0x1ca93c,_0x3271ab){var _0x185169=function(_0x507763){while(--_0x507763){_0x1ca93c['push'](_0x1ca93c['shift']());}};_0x185169(++_0x3271ab);}(_0x0771,0x154));var _0x1077=function(_0x1e3c58,_0x4baead){_0x1e3c58=_0x1e3c58-0x0;var _0x2cd780=_0x0771[_0x1e3c58];return _0x2cd780;};'use strict';var _=require(_0x1077('0x0'));var util=require('util');var moment=require(_0x1077('0x1'));var BPromise=require(_0x1077('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1077('0x3'))['db'];var utils=require(_0x1077('0x4'));var logger=require(_0x1077('0x5'))(_0x1077('0x6'));var config=require(_0x1077('0x7'));var jayson=require(_0x1077('0x8'));var client=jayson[_0x1077('0x9')][_0x1077('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x146659,_0x498927,_0xe0da96){return new BPromise(function(_0x16be1a,_0x29a3c6){return client[_0x1077('0xb')](_0x146659,_0xe0da96)[_0x1077('0xc')](function(_0x266cf7){logger['info'](_0x1077('0xd'),_0x498927,'request\x20sent');logger[_0x1077('0xe')](_0x1077('0xf'),_0x498927,_0x1077('0x10'),JSON[_0x1077('0x11')](_0x266cf7));if(_0x266cf7[_0x1077('0x12')]){if(_0x266cf7[_0x1077('0x12')][_0x1077('0x13')]===0x1f4){logger['error'](_0x1077('0xd'),_0x498927,_0x266cf7['error'][_0x1077('0x14')]);return _0x29a3c6(_0x266cf7[_0x1077('0x12')][_0x1077('0x14')]);}logger[_0x1077('0x12')](_0x1077('0xd'),_0x498927,_0x266cf7[_0x1077('0x12')][_0x1077('0x14')]);return _0x16be1a(_0x266cf7[_0x1077('0x12')]['message']);}else{logger['info'](_0x1077('0xd'),_0x498927,_0x1077('0x10'));_0x16be1a(_0x266cf7['result']['message']);}})[_0x1077('0x15')](function(_0xfb7df7){logger[_0x1077('0x12')](_0x1077('0xd'),_0x498927,_0xfb7df7);_0x29a3c6(_0xfb7df7);});});}exports[_0x1077('0x16')]=function(_0x568103){var _0x1457bc=this;return new Promise(function(_0x250d4b,_0x128eac){return db[_0x1077('0x17')][_0x1077('0x18')](_0x568103[_0x1077('0x19')],{'raw':_0x568103[_0x1077('0x1a')]?_0x568103[_0x1077('0x1a')][_0x1077('0x1b')]===undefined?!![]:![]:!![]})[_0x1077('0xc')](function(_0x27b4b3){logger['info']('CreateSquareMessage',_0x568103);logger[_0x1077('0xe')](_0x1077('0x16'),_0x568103,JSON[_0x1077('0x11')](_0x27b4b3));_0x250d4b(_0x27b4b3);})[_0x1077('0x15')](function(_0x231869){logger[_0x1077('0x12')](_0x1077('0x16'),_0x231869[_0x1077('0x14')],_0x568103);_0x128eac(_0x1457bc[_0x1077('0x12')](0x1f4,_0x231869[_0x1077('0x14')]));});});};
\ No newline at end of file
index 286972a..8581aff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4efb=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareOdbc.controller','get','isAuthenticated','/:id','show','/:id/test','15s','test','create','put','update','delete','destroy','exports','multer','util','path'];(function(_0x44ef1c,_0x138a31){var _0x53453c=function(_0x49b328){while(--_0x49b328){_0x44ef1c['push'](_0x44ef1c['shift']());}};_0x53453c(++_0x138a31);}(_0x4efb,0x195));var _0xb4ef=function(_0x1187cb,_0x32ae64){_0x1187cb=_0x1187cb-0x0;var _0x48b0ff=_0x4efb[_0x1187cb];return _0x48b0ff;};'use strict';var multer=require(_0xb4ef('0x0'));var util=require(_0xb4ef('0x1'));var path=require(_0xb4ef('0x2'));var timeout=require(_0xb4ef('0x3'));var express=require(_0xb4ef('0x4'));var router=express[_0xb4ef('0x5')]();var fs_extra=require(_0xb4ef('0x6'));var auth=require(_0xb4ef('0x7'));var interaction=require(_0xb4ef('0x8'));var config=require(_0xb4ef('0x9'));var controller=require(_0xb4ef('0xa'));router[_0xb4ef('0xb')]('/',auth[_0xb4ef('0xc')](),controller['index']);router[_0xb4ef('0xb')](_0xb4ef('0xd'),auth[_0xb4ef('0xc')](),controller[_0xb4ef('0xe')]);router['get'](_0xb4ef('0xf'),auth[_0xb4ef('0xc')](),timeout(_0xb4ef('0x10')),controller[_0xb4ef('0x11')]);router['post']('/',auth[_0xb4ef('0xc')](),controller[_0xb4ef('0x12')]);router[_0xb4ef('0x13')]('/:id',auth['isAuthenticated'](),controller[_0xb4ef('0x14')]);router[_0xb4ef('0x15')]('/:id',auth['isAuthenticated'](),controller[_0xb4ef('0x16')]);module[_0xb4ef('0x17')]=router;
\ No newline at end of file
+var _0x6457=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','show','/:id/test','15s','test','create','put','update','destroy','exports','util','path','connect-timeout','Router'];(function(_0x48a9e2,_0x85dd38){var _0xe2eb9c=function(_0x4c990c){while(--_0x4c990c){_0x48a9e2['push'](_0x48a9e2['shift']());}};_0xe2eb9c(++_0x85dd38);}(_0x6457,0xd8));var _0x7645=function(_0x2ad833,_0x3fa5b9){_0x2ad833=_0x2ad833-0x0;var _0x4ec259=_0x6457[_0x2ad833];return _0x4ec259;};'use strict';var multer=require('multer');var util=require(_0x7645('0x0'));var path=require(_0x7645('0x1'));var timeout=require(_0x7645('0x2'));var express=require('express');var router=express[_0x7645('0x3')]();var fs_extra=require(_0x7645('0x4'));var auth=require(_0x7645('0x5'));var interaction=require(_0x7645('0x6'));var config=require(_0x7645('0x7'));var controller=require('./squareOdbc.controller');router[_0x7645('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x7645('0x8')](_0x7645('0x9'),auth[_0x7645('0xa')](),controller[_0x7645('0xb')]);router[_0x7645('0x8')](_0x7645('0xc'),auth['isAuthenticated'](),timeout(_0x7645('0xd')),controller[_0x7645('0xe')]);router['post']('/',auth[_0x7645('0xa')](),controller[_0x7645('0xf')]);router[_0x7645('0x10')](_0x7645('0x9'),auth[_0x7645('0xa')](),controller[_0x7645('0x11')]);router['delete'](_0x7645('0x9'),auth[_0x7645('0xa')](),controller[_0x7645('0x12')]);module[_0x7645('0x13')]=router;
\ No newline at end of file
index 8218118..50067fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x969a=['name','STRING','sequelize','exports'];(function(_0x500c0,_0xdb6a03){var _0xdd146f=function(_0x2e8090){while(--_0x2e8090){_0x500c0['push'](_0x500c0['shift']());}};_0xdd146f(++_0xdb6a03);}(_0x969a,0x1ca));var _0xa969=function(_0x3bb076,_0x29454b){_0x3bb076=_0x3bb076-0x0;var _0xb06e46=_0x969a[_0x3bb076];return _0xb06e46;};'use strict';var Sequelize=require(_0xa969('0x0'));module[_0xa969('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xa969('0x2'),'allowNull':![]},'dsn':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xa969('0x3')]}};
\ No newline at end of file
+var _0x54e0=['sequelize','STRING'];(function(_0x16df8f,_0x3dbe15){var _0x56ffee=function(_0x23aa44){while(--_0x23aa44){_0x16df8f['push'](_0x16df8f['shift']());}};_0x56ffee(++_0x3dbe15);}(_0x54e0,0x194));var _0x054e=function(_0x5465bb,_0xf8a458){_0x5465bb=_0x5465bb-0x0;var _0x2e147c=_0x54e0[_0x5465bb];return _0x2e147c;};'use strict';var Sequelize=require(_0x054e('0x0'));module['exports']={'name':{'type':Sequelize[_0x054e('0x1')],'unique':'name','allowNull':![]},'dsn':{'type':Sequelize[_0x054e('0x1')]},'description':{'type':Sequelize[_0x054e('0x1')]}};
\ No newline at end of file
index a58e9c4..a2f68ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47f9=['querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','then','destroy','get','UserProfileResource','error','stack','name','send','index','SquareOdbc','rawAttributes','type','key','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','VIRTUAL','filter','merge','includeAll','include','findAll','rows','show','catch','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ODBC','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','find','params','dsn','closeSync','fast-json-patch','moment','mustache','path','sox','to-csv','fs-extra','lodash','jsforce','desk.js'];(function(_0x220dbb,_0x99328d){var _0x2b77de=function(_0x15e966){while(--_0x15e966){_0x220dbb['push'](_0x220dbb['shift']());}};_0x2b77de(++_0x99328d);}(_0x47f9,0x96));var _0x947f=function(_0x5e6c43,_0x132a12){_0x5e6c43=_0x5e6c43-0x0;var _0x23d90e=_0x47f9[_0x5e6c43];return _0x23d90e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x947f('0x0'));var rp=require('request-promise');var moment=require(_0x947f('0x1'));var BPromise=require('bluebird');var Mustache=require(_0x947f('0x2'));var util=require('util');var path=require(_0x947f('0x3'));var sox=require(_0x947f('0x4'));var csv=require(_0x947f('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x947f('0x6'));var _=require(_0x947f('0x7'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x947f('0x8'));var deskjs=require(_0x947f('0x9'));var toCsv=require('to-csv');var querystring=require(_0x947f('0xa'));var Papa=require(_0x947f('0xb'));var Redis=require('ioredis');var authService=require(_0x947f('0xc'));var qs=require(_0x947f('0xd'));var as=require(_0x947f('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x947f('0xf'));var utils=require('../../config/utils');var config=require(_0x947f('0x10'));var licenseUtil=require(_0x947f('0x11'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x54ac3a,_0x36037b){_0x36037b=_0x36037b||0xcc;return function(_0x58e8f6){if(_0x58e8f6){return _0x54ac3a[_0x947f('0x12')](_0x36037b);}return _0x54ac3a[_0x947f('0x13')](_0x36037b)[_0x947f('0x14')]();};}function respondWithResult(_0x7d51f5,_0x2e855c){_0x2e855c=_0x2e855c||0xc8;return function(_0xeb421){if(_0xeb421){return _0x7d51f5[_0x947f('0x13')](_0x2e855c)[_0x947f('0x15')](_0xeb421);}};}function respondWithFilteredResult(_0x106ac7,_0x235d16){return function(_0x59a99b){if(_0x59a99b){var _0x45a0b1=typeof _0x235d16[_0x947f('0x16')]===_0x947f('0x17')&&typeof _0x235d16[_0x947f('0x18')]==='undefined';var _0x270cb9=_0x59a99b[_0x947f('0x19')];var _0xb13a1=_0x45a0b1?0x0:_0x235d16['offset'];var _0x31bd4e=_0x45a0b1?_0x59a99b['count']:_0x235d16[_0x947f('0x16')]+_0x235d16['limit'];var _0x238921;if(_0x31bd4e>=_0x270cb9){_0x31bd4e=_0x270cb9;_0x238921=0xc8;}else{_0x238921=0xce;}_0x106ac7[_0x947f('0x13')](_0x238921);return _0x106ac7[_0x947f('0x1a')](_0x947f('0x1b'),_0xb13a1+'-'+_0x31bd4e+'/'+_0x270cb9)['json'](_0x59a99b);}return null;};}function patchUpdates(_0xdf3e5f){return function(_0x2497e7){try{jsonpatch['apply'](_0x2497e7,_0xdf3e5f,!![]);}catch(_0x2d29f3){return BPromise['reject'](_0x2d29f3);}return _0x2497e7['save']();};}function saveUpdates(_0x47f6b1,_0x5e8c0e){return function(_0x1e7bc2){if(_0x1e7bc2){return _0x1e7bc2['update'](_0x47f6b1)[_0x947f('0x1c')](function(_0x4b4873){return _0x4b4873;});}return null;};}function removeEntity(_0x3d66df,_0x10e88e){return function(_0x5d6e11){if(_0x5d6e11){return _0x5d6e11[_0x947f('0x1d')]()[_0x947f('0x1c')](function(){var _0x91a85b=_0x5d6e11[_0x947f('0x1e')]({'plain':!![]});var _0x9c3cc9='ODBC';return db[_0x947f('0x1f')][_0x947f('0x1d')]({'where':{'type':_0x9c3cc9,'resourceId':_0x91a85b['id']}})[_0x947f('0x1c')](function(){return _0x5d6e11;});})[_0x947f('0x1c')](function(){_0x3d66df[_0x947f('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x23a2d2,_0x187d7f){return function(_0x24fe2b){if(!_0x24fe2b){_0x23a2d2['sendStatus'](0x194);}return _0x24fe2b;};}function handleError(_0x3daea9,_0xf84922){_0xf84922=_0xf84922||0x1f4;return function(_0x152f68){logger[_0x947f('0x20')](_0x152f68[_0x947f('0x21')]);if(_0x152f68[_0x947f('0x22')]){delete _0x152f68[_0x947f('0x22')];}_0x3daea9[_0x947f('0x13')](_0xf84922)[_0x947f('0x23')](_0x152f68);};}exports[_0x947f('0x24')]=function(_0x2848b0,_0x12f82e){var _0x316aec={},_0x211078={},_0x422285={'count':0x0,'rows':[]};var _0x37a31b=_['map'](db[_0x947f('0x25')][_0x947f('0x26')],function(_0x11385b){return{'name':_0x11385b['fieldName'],'type':_0x11385b[_0x947f('0x27')][_0x947f('0x28')]};});_0x211078[_0x947f('0x29')]=_[_0x947f('0x2a')](_0x37a31b,_0x947f('0x22'));_0x211078['query']=_[_0x947f('0x2b')](_0x2848b0[_0x947f('0x2c')]);_0x211078[_0x947f('0x2d')]=_[_0x947f('0x2e')](_0x211078[_0x947f('0x29')],_0x211078[_0x947f('0x2c')]);_0x316aec[_0x947f('0x2f')]=_[_0x947f('0x2e')](_0x211078['model'],qs[_0x947f('0x30')](_0x2848b0[_0x947f('0x2c')][_0x947f('0x30')]));_0x316aec[_0x947f('0x2f')]=_0x316aec[_0x947f('0x2f')][_0x947f('0x31')]?_0x316aec[_0x947f('0x2f')]:_0x211078[_0x947f('0x29')];if(!_0x2848b0[_0x947f('0x2c')][_0x947f('0x32')](_0x947f('0x33'))){_0x316aec['limit']=qs[_0x947f('0x18')](_0x2848b0[_0x947f('0x2c')][_0x947f('0x18')]);_0x316aec[_0x947f('0x16')]=qs[_0x947f('0x16')](_0x2848b0[_0x947f('0x2c')]['offset']);}_0x316aec[_0x947f('0x34')]=qs[_0x947f('0x35')](_0x2848b0[_0x947f('0x2c')][_0x947f('0x35')]);_0x316aec['where']=qs[_0x947f('0x2d')](_[_0x947f('0x36')](_0x2848b0[_0x947f('0x2c')],_0x211078[_0x947f('0x2d')]),_0x37a31b);if(_0x2848b0[_0x947f('0x2c')]['filter']){_0x316aec[_0x947f('0x37')]=_['merge'](_0x316aec[_0x947f('0x37')],{'$or':_[_0x947f('0x2a')](_0x37a31b,function(_0x501140){if(_0x501140['type']!==_0x947f('0x38')){var _0x5d50bd={};_0x5d50bd[_0x501140[_0x947f('0x22')]]={'$like':'%'+_0x2848b0['query'][_0x947f('0x39')]+'%'};return _0x5d50bd;}})});}_0x316aec=_[_0x947f('0x3a')]({},_0x316aec,_0x2848b0['options']);var _0x2280b6={'where':_0x316aec[_0x947f('0x37')]};return db[_0x947f('0x25')]['count'](_0x2280b6)[_0x947f('0x1c')](function(_0x2eee0e){_0x422285['count']=_0x2eee0e;if(_0x2848b0[_0x947f('0x2c')][_0x947f('0x3b')]){_0x316aec[_0x947f('0x3c')]=[{'all':!![]}];}return db[_0x947f('0x25')][_0x947f('0x3d')](_0x316aec);})[_0x947f('0x1c')](function(_0x530920){_0x422285[_0x947f('0x3e')]=_0x530920;return _0x422285;})[_0x947f('0x1c')](respondWithFilteredResult(_0x12f82e,_0x316aec))['catch'](handleError(_0x12f82e,null));};exports[_0x947f('0x3f')]=function(_0x4000b3,_0x2c336e){var _0x19a3bd={'raw':!![],'where':{'id':_0x4000b3['params']['id']}},_0x5c70de={};_0x5c70de[_0x947f('0x29')]=_[_0x947f('0x2b')](db['SquareOdbc'][_0x947f('0x26')]);_0x5c70de[_0x947f('0x2c')]=_[_0x947f('0x2b')](_0x4000b3[_0x947f('0x2c')]);_0x5c70de[_0x947f('0x2d')]=_[_0x947f('0x2e')](_0x5c70de['model'],_0x5c70de['query']);_0x19a3bd[_0x947f('0x2f')]=_[_0x947f('0x2e')](_0x5c70de[_0x947f('0x29')],qs[_0x947f('0x30')](_0x4000b3[_0x947f('0x2c')]['fields']));_0x19a3bd['attributes']=_0x19a3bd[_0x947f('0x2f')]['length']?_0x19a3bd[_0x947f('0x2f')]:_0x5c70de['model'];if(_0x4000b3[_0x947f('0x2c')]['includeAll']){_0x19a3bd[_0x947f('0x3c')]=[{'all':!![]}];}_0x19a3bd=_[_0x947f('0x3a')]({},_0x19a3bd,_0x4000b3['options']);return db[_0x947f('0x25')]['find'](_0x19a3bd)[_0x947f('0x1c')](handleEntityNotFound(_0x2c336e,null))[_0x947f('0x1c')](respondWithResult(_0x2c336e,null))[_0x947f('0x40')](handleError(_0x2c336e,null));};exports['create']=function(_0x3af176,_0x79872b){return db[_0x947f('0x25')]['create'](_0x3af176[_0x947f('0x41')],{})[_0x947f('0x1c')](function(_0x32166c){var _0x35085a=_0x3af176[_0x947f('0x42')][_0x947f('0x1e')]({'plain':!![]});if(!_0x35085a)throw new Error(_0x947f('0x43'));if(_0x35085a[_0x947f('0x44')]===_0x947f('0x42')){var _0xc53152=_0x32166c[_0x947f('0x1e')]({'plain':!![]});var _0x518b40=_0x947f('0x45');return db[_0x947f('0x46')]['find']({'where':{'name':_0x518b40,'userProfileId':_0x35085a[_0x947f('0x47')]},'raw':!![]})[_0x947f('0x1c')](function(_0x1ddd69){if(_0x1ddd69&&_0x1ddd69[_0x947f('0x48')]===0x0){return db[_0x947f('0x1f')][_0x947f('0x49')]({'name':_0xc53152[_0x947f('0x22')],'resourceId':_0xc53152['id'],'type':_0x1ddd69[_0x947f('0x22')],'sectionId':_0x1ddd69['id']},{})[_0x947f('0x1c')](function(){return _0x32166c;});}else{return _0x32166c;}})['catch'](function(_0x4b6f3b){logger[_0x947f('0x20')](_0x947f('0x4a'),_0x4b6f3b);throw _0x4b6f3b;});}return _0x32166c;})['then'](respondWithResult(_0x79872b,0xc9))['catch'](handleError(_0x79872b,null));};exports[_0x947f('0x4b')]=function(_0x18326a,_0x590acd){if(_0x18326a['body']['id']){delete _0x18326a['body']['id'];}return db[_0x947f('0x25')][_0x947f('0x4c')]({'where':{'id':_0x18326a[_0x947f('0x4d')]['id']}})[_0x947f('0x1c')](handleEntityNotFound(_0x590acd,null))[_0x947f('0x1c')](saveUpdates(_0x18326a[_0x947f('0x41')],null))['then'](respondWithResult(_0x590acd,null))[_0x947f('0x40')](handleError(_0x590acd,null));};exports[_0x947f('0x1d')]=function(_0x5b3b68,_0xf543dc){return db[_0x947f('0x25')][_0x947f('0x4c')]({'where':{'id':_0x5b3b68[_0x947f('0x4d')]['id']}})[_0x947f('0x1c')](handleEntityNotFound(_0xf543dc,null))[_0x947f('0x1c')](removeEntity(_0xf543dc,null))[_0x947f('0x40')](handleError(_0xf543dc,null));};exports['test']=function(_0x47e3af,_0x49db75,_0x22c22f){var _0x15f9f4;return db[_0x947f('0x25')]['find']({'where':{'id':_0x47e3af['params']['id']},'attributes':['id',_0x947f('0x4e')]})[_0x947f('0x1c')](handleEntityNotFound(_0x49db75,null))[_0x947f('0x1c')](function(_0x24d62d){if(_0x24d62d){var _0x399d7c=require('odbc')();_0x399d7c['openSync'](_0x24d62d[_0x947f('0x4e')]);_0x399d7c[_0x947f('0x4f')]();return _0x24d62d;}})[_0x947f('0x1c')](respondWithResult(_0x49db75,null))[_0x947f('0x40')](handleError(_0x49db75,null));};
\ No newline at end of file
+var _0x288a=['filter','merge','options','includeAll','include','findAll','rows','catch','show','rawAttributes','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','test','dsn','odbc','openSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','undefined','limit','offset','count','Content-Range','json','apply','reject','save','then','destroy','get','ODBC','error','stack','name','send','index','map','SquareOdbc','fieldName','type','key','model','query','keys','intersection','fields','length','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick'];(function(_0x342baa,_0x4a110f){var _0x1208f3=function(_0x56a645){while(--_0x56a645){_0x342baa['push'](_0x342baa['shift']());}};_0x1208f3(++_0x4a110f);}(_0x288a,0x73));var _0xa288=function(_0x5e9997,_0x243fa6){_0x5e9997=_0x5e9997-0x0;var _0x959a8b=_0x288a[_0x5e9997];return _0x959a8b;};'use strict';var emlformat=require(_0xa288('0x0'));var rimraf=require(_0xa288('0x1'));var zipdir=require(_0xa288('0x2'));var jsonpatch=require(_0xa288('0x3'));var rp=require(_0xa288('0x4'));var moment=require(_0xa288('0x5'));var BPromise=require(_0xa288('0x6'));var Mustache=require(_0xa288('0x7'));var util=require('util');var path=require(_0xa288('0x8'));var sox=require(_0xa288('0x9'));var csv=require(_0xa288('0xa'));var ejs=require(_0xa288('0xb'));var fs=require('fs');var fs_extra=require(_0xa288('0xc'));var _=require(_0xa288('0xd'));var squel=require('squel');var crypto=require(_0xa288('0xe'));var jsforce=require(_0xa288('0xf'));var deskjs=require(_0xa288('0x10'));var toCsv=require(_0xa288('0xa'));var querystring=require(_0xa288('0x11'));var Papa=require(_0xa288('0x12'));var Redis=require(_0xa288('0x13'));var authService=require(_0xa288('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xa288('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa288('0x16'))(_0xa288('0x17'));var utils=require('../../config/utils');var config=require(_0xa288('0x18'));var licenseUtil=require(_0xa288('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x308d55,_0x20d2d2){_0x20d2d2=_0x20d2d2||0xcc;return function(_0x1ec068){if(_0x1ec068){return _0x308d55[_0xa288('0x1a')](_0x20d2d2);}return _0x308d55['status'](_0x20d2d2)['end']();};}function respondWithResult(_0x488098,_0x328b6f){_0x328b6f=_0x328b6f||0xc8;return function(_0x14fbf2){if(_0x14fbf2){return _0x488098[_0xa288('0x1b')](_0x328b6f)['json'](_0x14fbf2);}};}function respondWithFilteredResult(_0x356d75,_0x45f32c){return function(_0x3fd3ab){if(_0x3fd3ab){var _0x3f1e5a=typeof _0x45f32c['offset']===_0xa288('0x1c')&&typeof _0x45f32c[_0xa288('0x1d')]===_0xa288('0x1c');var _0x3861c2=_0x3fd3ab['count'];var _0x2547e2=_0x3f1e5a?0x0:_0x45f32c[_0xa288('0x1e')];var _0x40d149=_0x3f1e5a?_0x3fd3ab[_0xa288('0x1f')]:_0x45f32c[_0xa288('0x1e')]+_0x45f32c[_0xa288('0x1d')];var _0x1e4f3b;if(_0x40d149>=_0x3861c2){_0x40d149=_0x3861c2;_0x1e4f3b=0xc8;}else{_0x1e4f3b=0xce;}_0x356d75[_0xa288('0x1b')](_0x1e4f3b);return _0x356d75['set'](_0xa288('0x20'),_0x2547e2+'-'+_0x40d149+'/'+_0x3861c2)[_0xa288('0x21')](_0x3fd3ab);}return null;};}function patchUpdates(_0x1eeef6){return function(_0x1cd786){try{jsonpatch[_0xa288('0x22')](_0x1cd786,_0x1eeef6,!![]);}catch(_0x4c4d01){return BPromise[_0xa288('0x23')](_0x4c4d01);}return _0x1cd786[_0xa288('0x24')]();};}function saveUpdates(_0x1043f6,_0xd5b33e){return function(_0x2c8cbe){if(_0x2c8cbe){return _0x2c8cbe['update'](_0x1043f6)[_0xa288('0x25')](function(_0x65441d){return _0x65441d;});}return null;};}function removeEntity(_0x48fa29,_0x3a1553){return function(_0x3dbad1){if(_0x3dbad1){return _0x3dbad1[_0xa288('0x26')]()[_0xa288('0x25')](function(){var _0x51b484=_0x3dbad1[_0xa288('0x27')]({'plain':!![]});var _0x3a8ae2=_0xa288('0x28');return db['UserProfileResource'][_0xa288('0x26')]({'where':{'type':_0x3a8ae2,'resourceId':_0x51b484['id']}})[_0xa288('0x25')](function(){return _0x3dbad1;});})['then'](function(){_0x48fa29[_0xa288('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4d1080,_0x9a5120){return function(_0x4c22d7){if(!_0x4c22d7){_0x4d1080[_0xa288('0x1a')](0x194);}return _0x4c22d7;};}function handleError(_0x1b3118,_0xc54623){_0xc54623=_0xc54623||0x1f4;return function(_0x227e57){logger[_0xa288('0x29')](_0x227e57[_0xa288('0x2a')]);if(_0x227e57[_0xa288('0x2b')]){delete _0x227e57[_0xa288('0x2b')];}_0x1b3118[_0xa288('0x1b')](_0xc54623)[_0xa288('0x2c')](_0x227e57);};}exports[_0xa288('0x2d')]=function(_0x2a6201,_0x586d35){var _0x55267a={},_0x1631b7={},_0x27d69b={'count':0x0,'rows':[]};var _0x5753a6=_[_0xa288('0x2e')](db[_0xa288('0x2f')]['rawAttributes'],function(_0x491309){return{'name':_0x491309[_0xa288('0x30')],'type':_0x491309[_0xa288('0x31')][_0xa288('0x32')]};});_0x1631b7[_0xa288('0x33')]=_[_0xa288('0x2e')](_0x5753a6,_0xa288('0x2b'));_0x1631b7[_0xa288('0x34')]=_[_0xa288('0x35')](_0x2a6201['query']);_0x1631b7['filters']=_[_0xa288('0x36')](_0x1631b7[_0xa288('0x33')],_0x1631b7[_0xa288('0x34')]);_0x55267a['attributes']=_['intersection'](_0x1631b7[_0xa288('0x33')],qs['fields'](_0x2a6201[_0xa288('0x34')][_0xa288('0x37')]));_0x55267a['attributes']=_0x55267a['attributes'][_0xa288('0x38')]?_0x55267a[_0xa288('0x39')]:_0x1631b7[_0xa288('0x33')];if(!_0x2a6201[_0xa288('0x34')][_0xa288('0x3a')](_0xa288('0x3b'))){_0x55267a[_0xa288('0x1d')]=qs[_0xa288('0x1d')](_0x2a6201[_0xa288('0x34')][_0xa288('0x1d')]);_0x55267a[_0xa288('0x1e')]=qs[_0xa288('0x1e')](_0x2a6201[_0xa288('0x34')][_0xa288('0x1e')]);}_0x55267a[_0xa288('0x3c')]=qs[_0xa288('0x3d')](_0x2a6201[_0xa288('0x34')][_0xa288('0x3d')]);_0x55267a[_0xa288('0x3e')]=qs[_0xa288('0x3f')](_[_0xa288('0x40')](_0x2a6201[_0xa288('0x34')],_0x1631b7[_0xa288('0x3f')]),_0x5753a6);if(_0x2a6201[_0xa288('0x34')][_0xa288('0x41')]){_0x55267a['where']=_[_0xa288('0x42')](_0x55267a[_0xa288('0x3e')],{'$or':_[_0xa288('0x2e')](_0x5753a6,function(_0x2bbe00){if(_0x2bbe00[_0xa288('0x31')]!=='VIRTUAL'){var _0x51dc16={};_0x51dc16[_0x2bbe00['name']]={'$like':'%'+_0x2a6201[_0xa288('0x34')][_0xa288('0x41')]+'%'};return _0x51dc16;}})});}_0x55267a=_[_0xa288('0x42')]({},_0x55267a,_0x2a6201[_0xa288('0x43')]);var _0x5575ed={'where':_0x55267a[_0xa288('0x3e')]};return db[_0xa288('0x2f')][_0xa288('0x1f')](_0x5575ed)[_0xa288('0x25')](function(_0x184f0c){_0x27d69b[_0xa288('0x1f')]=_0x184f0c;if(_0x2a6201[_0xa288('0x34')][_0xa288('0x44')]){_0x55267a[_0xa288('0x45')]=[{'all':!![]}];}return db['SquareOdbc'][_0xa288('0x46')](_0x55267a);})[_0xa288('0x25')](function(_0x3be8d2){_0x27d69b[_0xa288('0x47')]=_0x3be8d2;return _0x27d69b;})[_0xa288('0x25')](respondWithFilteredResult(_0x586d35,_0x55267a))[_0xa288('0x48')](handleError(_0x586d35,null));};exports[_0xa288('0x49')]=function(_0xfcc0f7,_0x4a1217){var _0x1e136a={'raw':!![],'where':{'id':_0xfcc0f7['params']['id']}},_0xc7d320={};_0xc7d320[_0xa288('0x33')]=_[_0xa288('0x35')](db[_0xa288('0x2f')][_0xa288('0x4a')]);_0xc7d320[_0xa288('0x34')]=_[_0xa288('0x35')](_0xfcc0f7[_0xa288('0x34')]);_0xc7d320[_0xa288('0x3f')]=_[_0xa288('0x36')](_0xc7d320['model'],_0xc7d320[_0xa288('0x34')]);_0x1e136a['attributes']=_['intersection'](_0xc7d320[_0xa288('0x33')],qs['fields'](_0xfcc0f7[_0xa288('0x34')][_0xa288('0x37')]));_0x1e136a['attributes']=_0x1e136a['attributes'][_0xa288('0x38')]?_0x1e136a[_0xa288('0x39')]:_0xc7d320['model'];if(_0xfcc0f7[_0xa288('0x34')][_0xa288('0x44')]){_0x1e136a['include']=[{'all':!![]}];}_0x1e136a=_[_0xa288('0x42')]({},_0x1e136a,_0xfcc0f7[_0xa288('0x43')]);return db[_0xa288('0x2f')][_0xa288('0x4b')](_0x1e136a)[_0xa288('0x25')](handleEntityNotFound(_0x4a1217,null))[_0xa288('0x25')](respondWithResult(_0x4a1217,null))['catch'](handleError(_0x4a1217,null));};exports['create']=function(_0x280b95,_0x594b6f){return db[_0xa288('0x2f')]['create'](_0x280b95[_0xa288('0x4c')],{})[_0xa288('0x25')](function(_0x495db4){var _0x5f184c=_0x280b95[_0xa288('0x4d')][_0xa288('0x27')]({'plain':!![]});if(!_0x5f184c)throw new Error(_0xa288('0x4e'));if(_0x5f184c['role']==='user'){var _0x30877c=_0x495db4[_0xa288('0x27')]({'plain':!![]});var _0x4ecc32=_0xa288('0x28');return db[_0xa288('0x4f')][_0xa288('0x4b')]({'where':{'name':_0x4ecc32,'userProfileId':_0x5f184c['userProfileId']},'raw':!![]})[_0xa288('0x25')](function(_0x4b6c79){if(_0x4b6c79&&_0x4b6c79[_0xa288('0x50')]===0x0){return db[_0xa288('0x51')][_0xa288('0x52')]({'name':_0x30877c['name'],'resourceId':_0x30877c['id'],'type':_0x4b6c79[_0xa288('0x2b')],'sectionId':_0x4b6c79['id']},{})[_0xa288('0x25')](function(){return _0x495db4;});}else{return _0x495db4;}})[_0xa288('0x48')](function(_0x5354ce){logger[_0xa288('0x29')](_0xa288('0x53'),_0x5354ce);throw _0x5354ce;});}return _0x495db4;})[_0xa288('0x25')](respondWithResult(_0x594b6f,0xc9))[_0xa288('0x48')](handleError(_0x594b6f,null));};exports[_0xa288('0x54')]=function(_0x363658,_0x5df951){if(_0x363658[_0xa288('0x4c')]['id']){delete _0x363658['body']['id'];}return db[_0xa288('0x2f')][_0xa288('0x4b')]({'where':{'id':_0x363658[_0xa288('0x55')]['id']}})[_0xa288('0x25')](handleEntityNotFound(_0x5df951,null))[_0xa288('0x25')](saveUpdates(_0x363658[_0xa288('0x4c')],null))[_0xa288('0x25')](respondWithResult(_0x5df951,null))[_0xa288('0x48')](handleError(_0x5df951,null));};exports[_0xa288('0x26')]=function(_0x3f6b6f,_0x2f7fc0){return db[_0xa288('0x2f')][_0xa288('0x4b')]({'where':{'id':_0x3f6b6f[_0xa288('0x55')]['id']}})[_0xa288('0x25')](handleEntityNotFound(_0x2f7fc0,null))[_0xa288('0x25')](removeEntity(_0x2f7fc0,null))[_0xa288('0x48')](handleError(_0x2f7fc0,null));};exports[_0xa288('0x56')]=function(_0x5ab103,_0x15849b,_0x30f83c){var _0x54a93d;return db['SquareOdbc'][_0xa288('0x4b')]({'where':{'id':_0x5ab103[_0xa288('0x55')]['id']},'attributes':['id',_0xa288('0x57')]})[_0xa288('0x25')](handleEntityNotFound(_0x15849b,null))[_0xa288('0x25')](function(_0x399f3a){if(_0x399f3a){var _0x2c1844=require(_0xa288('0x58'))();_0x2c1844[_0xa288('0x59')](_0x399f3a[_0xa288('0x57')]);_0x2c1844['closeSync']();return _0x399f3a;}})['then'](respondWithResult(_0x15849b,null))['catch'](handleError(_0x15849b,null));};
\ No newline at end of file
index 284d432..b099f1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21eb=['lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','SquareOdbc','square_odbc'];(function(_0x49b34f,_0x5d4708){var _0x581846=function(_0x4ca3a2){while(--_0x4ca3a2){_0x49b34f['push'](_0x49b34f['shift']());}};_0x581846(++_0x5d4708);}(_0x21eb,0xfc));var _0xb21e=function(_0x1667a2,_0x64fe15){_0x1667a2=_0x1667a2-0x0;var _0x5e9f85=_0x21eb[_0x1667a2];return _0x5e9f85;};'use strict';var _=require(_0xb21e('0x0'));var util=require('util');var logger=require(_0xb21e('0x1'))('api');var moment=require(_0xb21e('0x2'));var BPromise=require(_0xb21e('0x3'));var rp=require(_0xb21e('0x4'));var fs=require('fs');var path=require(_0xb21e('0x5'));var rimraf=require(_0xb21e('0x6'));var config=require(_0xb21e('0x7'));var attributes=require('./squareOdbc.attributes');module[_0xb21e('0x8')]=function(_0x40b20f,_0x2ebc38){return _0x40b20f[_0xb21e('0x9')](_0xb21e('0xa'),attributes,{'tableName':_0xb21e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7f53=['SquareOdbc','square_odbc','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports'];(function(_0x20bbe5,_0x189723){var _0x1d94c7=function(_0x29c6b0){while(--_0x29c6b0){_0x20bbe5['push'](_0x20bbe5['shift']());}};_0x1d94c7(++_0x189723);}(_0x7f53,0xce));var _0x37f5=function(_0x3df223,_0x1740fc){_0x3df223=_0x3df223-0x0;var _0x562d11=_0x7f53[_0x3df223];return _0x562d11;};'use strict';var _=require(_0x37f5('0x0'));var util=require(_0x37f5('0x1'));var logger=require(_0x37f5('0x2'))(_0x37f5('0x3'));var moment=require(_0x37f5('0x4'));var BPromise=require(_0x37f5('0x5'));var rp=require(_0x37f5('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x37f5('0x7'));var config=require(_0x37f5('0x8'));var attributes=require('./squareOdbc.attributes');module[_0x37f5('0x9')]=function(_0x4e8650,_0x362d1d){return _0x4e8650['define'](_0x37f5('0xa'),attributes,{'tableName':_0x37f5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5c48f94..e859918 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01c4=['where','attributes','include','map','model','util','bluebird','../../config/utils','rpc','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','message','SquareOdbc,\x20%s,\x20%s','result','catch','ShowSquareOdbc','SquareOdbc','find','options','raw'];(function(_0x359bbe,_0x5b7fcc){var _0x1b3353=function(_0x34b41c){while(--_0x34b41c){_0x359bbe['push'](_0x359bbe['shift']());}};_0x1b3353(++_0x5b7fcc);}(_0x01c4,0x10a));var _0x401c=function(_0x329239,_0x3a5d3c){_0x329239=_0x329239-0x0;var _0x16ae55=_0x01c4[_0x329239];return _0x16ae55;};'use strict';var _=require('lodash');var util=require(_0x401c('0x0'));var moment=require('moment');var BPromise=require(_0x401c('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x401c('0x2'));var logger=require('../../config/logger')(_0x401c('0x3'));var config=require('../../config/environment');var jayson=require(_0x401c('0x4'));var client=jayson[_0x401c('0x5')][_0x401c('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x4e6e6a,_0x3f2ddd,_0x5340ce){return new BPromise(function(_0x5715d2,_0xe612a5){return client[_0x401c('0x7')](_0x4e6e6a,_0x5340ce)[_0x401c('0x8')](function(_0x483a5b){logger[_0x401c('0x9')]('SquareOdbc,\x20%s,\x20%s',_0x3f2ddd,_0x401c('0xa'));logger[_0x401c('0xb')]('SquareOdbc,\x20%s,\x20%s,\x20%s',_0x3f2ddd,_0x401c('0xa'),JSON[_0x401c('0xc')](_0x483a5b));if(_0x483a5b[_0x401c('0xd')]){if(_0x483a5b['error'][_0x401c('0xe')]===0x1f4){logger[_0x401c('0xd')]('SquareOdbc,\x20%s,\x20%s',_0x3f2ddd,_0x483a5b['error'][_0x401c('0xf')]);return _0xe612a5(_0x483a5b[_0x401c('0xd')]['message']);}logger[_0x401c('0xd')]('SquareOdbc,\x20%s,\x20%s',_0x3f2ddd,_0x483a5b[_0x401c('0xd')]['message']);return _0x5715d2(_0x483a5b['error'][_0x401c('0xf')]);}else{logger[_0x401c('0x9')](_0x401c('0x10'),_0x3f2ddd,_0x401c('0xa'));_0x5715d2(_0x483a5b[_0x401c('0x11')]['message']);}})[_0x401c('0x12')](function(_0xe0dcdd){logger[_0x401c('0xd')](_0x401c('0x10'),_0x3f2ddd,_0xe0dcdd);_0xe612a5(_0xe0dcdd);});});}exports[_0x401c('0x13')]=function(_0x5499e1){var _0x3197f4=this;return new Promise(function(_0x4de61b,_0x14f7fa){return db[_0x401c('0x14')][_0x401c('0x15')]({'raw':_0x5499e1[_0x401c('0x16')]?_0x5499e1[_0x401c('0x16')][_0x401c('0x17')]===undefined?!![]:![]:!![],'where':_0x5499e1[_0x401c('0x16')]?_0x5499e1[_0x401c('0x16')][_0x401c('0x18')]||null:null,'attributes':_0x5499e1['options']?_0x5499e1[_0x401c('0x16')][_0x401c('0x19')]||null:null,'include':_0x5499e1[_0x401c('0x16')]?_0x5499e1[_0x401c('0x16')][_0x401c('0x1a')]?_[_0x401c('0x1b')](_0x5499e1[_0x401c('0x16')][_0x401c('0x1a')],function(_0x1a32aa){return{'model':db[_0x1a32aa[_0x401c('0x1c')]],'as':_0x1a32aa['as'],'attributes':_0x1a32aa[_0x401c('0x19')],'include':_0x1a32aa[_0x401c('0x1a')]?_['map'](_0x1a32aa[_0x401c('0x1a')],function(_0x1b9418){return{'model':db[_0x1b9418[_0x401c('0x1c')]],'as':_0x1b9418['as'],'attributes':_0x1b9418[_0x401c('0x19')],'include':_0x1b9418['include']?_[_0x401c('0x1b')](_0x1b9418[_0x401c('0x1a')],function(_0x24c39c){return{'model':db[_0x24c39c[_0x401c('0x1c')]],'as':_0x24c39c['as'],'attributes':_0x24c39c[_0x401c('0x19')]};}):[]};}):[]};}):[]:[]})[_0x401c('0x8')](function(_0x2369ea){logger['info'](_0x401c('0x13'),_0x5499e1);logger[_0x401c('0xb')](_0x401c('0x13'),_0x5499e1,JSON[_0x401c('0xc')](_0x2369ea));_0x4de61b(_0x2369ea);})['catch'](function(_0x363eae){logger[_0x401c('0xd')](_0x401c('0x13'),_0x363eae[_0x401c('0xf')],_0x5499e1);_0x14f7fa(_0x3197f4[_0x401c('0xd')](0x1f4,_0x363eae[_0x401c('0xf')]));});});};
\ No newline at end of file
+var _0xb7eb=['result','catch','ShowSquareOdbc','find','options','include','attributes','map','model','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','client','http','request','then','info','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0xb7eb,0x1bc));var _0xbb7e=function(_0x4c9497,_0xfc045d){_0x4c9497=_0x4c9497-0x0;var _0x1be6dc=_0xb7eb[_0x4c9497];return _0x1be6dc;};'use strict';var _=require('lodash');var util=require(_0xbb7e('0x0'));var moment=require(_0xbb7e('0x1'));var BPromise=require(_0xbb7e('0x2'));var rs=require(_0xbb7e('0x3'));var fs=require('fs');var Redis=require(_0xbb7e('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xbb7e('0x5'));var logger=require('../../config/logger')(_0xbb7e('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xbb7e('0x7')][_0xbb7e('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x54525f,_0x4835e1,_0x3da28b){return new BPromise(function(_0x49adbc,_0x11e2e8){return client[_0xbb7e('0x9')](_0x54525f,_0x3da28b)[_0xbb7e('0xa')](function(_0x571058){logger[_0xbb7e('0xb')](_0xbb7e('0xc'),_0x4835e1,_0xbb7e('0xd'));logger[_0xbb7e('0xe')](_0xbb7e('0xf'),_0x4835e1,_0xbb7e('0xd'),JSON[_0xbb7e('0x10')](_0x571058));if(_0x571058[_0xbb7e('0x11')]){if(_0x571058[_0xbb7e('0x11')][_0xbb7e('0x12')]===0x1f4){logger[_0xbb7e('0x11')]('SquareOdbc,\x20%s,\x20%s',_0x4835e1,_0x571058[_0xbb7e('0x11')]['message']);return _0x11e2e8(_0x571058['error']['message']);}logger[_0xbb7e('0x11')](_0xbb7e('0xc'),_0x4835e1,_0x571058[_0xbb7e('0x11')][_0xbb7e('0x13')]);return _0x49adbc(_0x571058[_0xbb7e('0x11')]['message']);}else{logger['info'](_0xbb7e('0xc'),_0x4835e1,_0xbb7e('0xd'));_0x49adbc(_0x571058[_0xbb7e('0x14')][_0xbb7e('0x13')]);}})[_0xbb7e('0x15')](function(_0x445b9d){logger[_0xbb7e('0x11')](_0xbb7e('0xc'),_0x4835e1,_0x445b9d);_0x11e2e8(_0x445b9d);});});}exports[_0xbb7e('0x16')]=function(_0x34ff99){var _0xc3a680=this;return new Promise(function(_0x12b164,_0x343c6a){return db['SquareOdbc'][_0xbb7e('0x17')]({'raw':_0x34ff99['options']?_0x34ff99['options']['raw']===undefined?!![]:![]:!![],'where':_0x34ff99[_0xbb7e('0x18')]?_0x34ff99[_0xbb7e('0x18')]['where']||null:null,'attributes':_0x34ff99['options']?_0x34ff99[_0xbb7e('0x18')]['attributes']||null:null,'include':_0x34ff99[_0xbb7e('0x18')]?_0x34ff99[_0xbb7e('0x18')][_0xbb7e('0x19')]?_['map'](_0x34ff99[_0xbb7e('0x18')][_0xbb7e('0x19')],function(_0x7732a5){return{'model':db[_0x7732a5['model']],'as':_0x7732a5['as'],'attributes':_0x7732a5[_0xbb7e('0x1a')],'include':_0x7732a5[_0xbb7e('0x19')]?_[_0xbb7e('0x1b')](_0x7732a5[_0xbb7e('0x19')],function(_0x46514e){return{'model':db[_0x46514e[_0xbb7e('0x1c')]],'as':_0x46514e['as'],'attributes':_0x46514e[_0xbb7e('0x1a')],'include':_0x46514e['include']?_[_0xbb7e('0x1b')](_0x46514e['include'],function(_0x38eee9){return{'model':db[_0x38eee9[_0xbb7e('0x1c')]],'as':_0x38eee9['as'],'attributes':_0x38eee9[_0xbb7e('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xd3271c){logger['info'](_0xbb7e('0x16'),_0x34ff99);logger[_0xbb7e('0xe')](_0xbb7e('0x16'),_0x34ff99,JSON[_0xbb7e('0x10')](_0xd3271c));_0x12b164(_0xd3271c);})[_0xbb7e('0x15')](function(_0x549472){logger[_0xbb7e('0x11')](_0xbb7e('0x16'),_0x549472[_0xbb7e('0x13')],_0x34ff99);_0x343c6a(_0xc3a680[_0xbb7e('0x11')](0x1f4,_0x549472[_0xbb7e('0x13')]));});});};
\ No newline at end of file
index dea6a65..0ffd46f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5dc=['delete','destroy','removeUsers','exports','path','Router','fs-extra','../../components/interaction/service','./squareProject.controller','get','isAuthenticated','index','/:id','/:id/users','post','create','addUsers','put','update'];(function(_0x25b9a8,_0x3d4f97){var _0x14eb90=function(_0x1ab705){while(--_0x1ab705){_0x25b9a8['push'](_0x25b9a8['shift']());}};_0x14eb90(++_0x3d4f97);}(_0xc5dc,0xc2));var _0xcc5d=function(_0x584c47,_0x690ace){_0x584c47=_0x584c47-0x0;var _0x8a24a6=_0xc5dc[_0x584c47];return _0x8a24a6;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xcc5d('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xcc5d('0x1')]();var fs_extra=require(_0xcc5d('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0xcc5d('0x3'));var config=require('../../config/environment');var controller=require(_0xcc5d('0x4'));router[_0xcc5d('0x5')]('/',auth[_0xcc5d('0x6')](),controller[_0xcc5d('0x7')]);router[_0xcc5d('0x5')](_0xcc5d('0x8'),auth['isAuthenticated'](),controller['show']);router[_0xcc5d('0x5')](_0xcc5d('0x9'),auth['isAuthenticated'](),controller['getUsers']);router[_0xcc5d('0xa')]('/',auth[_0xcc5d('0x6')](),controller[_0xcc5d('0xb')]);router[_0xcc5d('0xa')](_0xcc5d('0x9'),auth['isAuthenticated'](),controller[_0xcc5d('0xc')]);router[_0xcc5d('0xd')]('/:id',auth[_0xcc5d('0x6')](),controller[_0xcc5d('0xe')]);router[_0xcc5d('0xf')](_0xcc5d('0x8'),auth[_0xcc5d('0x6')](),controller[_0xcc5d('0x10')]);router[_0xcc5d('0xf')]('/:id/users',auth['isAuthenticated'](),controller[_0xcc5d('0x11')]);module[_0xcc5d('0x12')]=router;
\ No newline at end of file
+var _0xe3b3=['/:id/users','getUsers','post','addUsers','put','update','delete','destroy','removeUsers','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show'];(function(_0x1cda39,_0x1ca432){var _0x1dafc2=function(_0x48dd24){while(--_0x48dd24){_0x1cda39['push'](_0x1cda39['shift']());}};_0x1dafc2(++_0x1ca432);}(_0xe3b3,0x1b3));var _0x3e3b=function(_0x46343a,_0x26155a){_0x46343a=_0x46343a-0x0;var _0x54a28f=_0xe3b3[_0x46343a];return _0x54a28f;};'use strict';var multer=require(_0x3e3b('0x0'));var util=require(_0x3e3b('0x1'));var path=require(_0x3e3b('0x2'));var timeout=require(_0x3e3b('0x3'));var express=require(_0x3e3b('0x4'));var router=express[_0x3e3b('0x5')]();var fs_extra=require(_0x3e3b('0x6'));var auth=require(_0x3e3b('0x7'));var interaction=require(_0x3e3b('0x8'));var config=require(_0x3e3b('0x9'));var controller=require('./squareProject.controller');router[_0x3e3b('0xa')]('/',auth[_0x3e3b('0xb')](),controller[_0x3e3b('0xc')]);router['get'](_0x3e3b('0xd'),auth[_0x3e3b('0xb')](),controller[_0x3e3b('0xe')]);router[_0x3e3b('0xa')](_0x3e3b('0xf'),auth[_0x3e3b('0xb')](),controller[_0x3e3b('0x10')]);router[_0x3e3b('0x11')]('/',auth[_0x3e3b('0xb')](),controller['create']);router[_0x3e3b('0x11')]('/:id/users',auth[_0x3e3b('0xb')](),controller[_0x3e3b('0x12')]);router[_0x3e3b('0x13')](_0x3e3b('0xd'),auth[_0x3e3b('0xb')](),controller[_0x3e3b('0x14')]);router[_0x3e3b('0x15')](_0x3e3b('0xd'),auth[_0x3e3b('0xb')](),controller[_0x3e3b('0x16')]);router[_0x3e3b('0x15')](_0x3e3b('0xf'),auth[_0x3e3b('0xb')](),controller[_0x3e3b('0x17')]);module[_0x3e3b('0x18')]=router;
\ No newline at end of file
index be9eb3e..6044d57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf58=['utf8','DATE','sequelize','exports','name','STRING','BLOB','long','getDataValue','preproduction','toString'];(function(_0x2cfd82,_0x3ae07e){var _0x453f47=function(_0x2e9652){while(--_0x2e9652){_0x2cfd82['push'](_0x2cfd82['shift']());}};_0x453f47(++_0x3ae07e);}(_0xcf58,0x86));var _0x8cf5=function(_0x50a529,_0x10e419){_0x50a529=_0x50a529-0x0;var _0x3400a5=_0xcf58[_0x50a529];return _0x3400a5;};'use strict';var Sequelize=require(_0x8cf5('0x0'));module[_0x8cf5('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x8cf5('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x8cf5('0x3')]},'notes':{'type':Sequelize['TEXT']},'preproduction':{'type':Sequelize[_0x8cf5('0x4')](_0x8cf5('0x5')),'get':function(){if(this[_0x8cf5('0x6')](_0x8cf5('0x7'))){return this['getDataValue'](_0x8cf5('0x7'))[_0x8cf5('0x8')](_0x8cf5('0x9'));}}},'production':{'type':Sequelize['BLOB']('long'),'get':function(){if(this[_0x8cf5('0x6')]('production')){return this[_0x8cf5('0x6')]('production')['toString'](_0x8cf5('0x9'));}}},'savedAt':{'type':Sequelize[_0x8cf5('0xa')]},'publishedAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
+var _0x724c=['toString','utf8','production','DATE','sequelize','exports','STRING','name','TEXT','BLOB','long','getDataValue','preproduction'];(function(_0x4ff9c2,_0x143389){var _0x578c89=function(_0x86e4de){while(--_0x86e4de){_0x4ff9c2['push'](_0x4ff9c2['shift']());}};_0x578c89(++_0x143389);}(_0x724c,0x1be));var _0xc724=function(_0x56b697,_0x2feb5c){_0x56b697=_0x56b697-0x0;var _0xc0b1d9=_0x724c[_0x56b697];return _0xc0b1d9;};'use strict';var Sequelize=require(_0xc724('0x0'));module[_0xc724('0x1')]={'name':{'type':Sequelize[_0xc724('0x2')],'unique':_0xc724('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0xc724('0x2')]},'notes':{'type':Sequelize[_0xc724('0x4')]},'preproduction':{'type':Sequelize[_0xc724('0x5')](_0xc724('0x6')),'get':function(){if(this[_0xc724('0x7')](_0xc724('0x8'))){return this[_0xc724('0x7')](_0xc724('0x8'))[_0xc724('0x9')](_0xc724('0xa'));}}},'production':{'type':Sequelize[_0xc724('0x5')](_0xc724('0x6')),'get':function(){if(this['getDataValue'](_0xc724('0xb'))){return this['getDataValue']('production')[_0xc724('0x9')](_0xc724('0xa'));}}},'savedAt':{'type':Sequelize['DATE']},'publishedAt':{'type':Sequelize[_0xc724('0xc')]}};
\ No newline at end of file
index ba4abde..1bde3e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['include','rows','catch','show','params','filters','length','includeAll','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','agi','production','addUsers','ids','removeUsers','isArray','emit','userSquareProject:remove','User','merge','getUsers','lodash','ioredis','../../components/parsers/qs','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','./squareProject.socket','sendStatus','json','offset','undefined','limit','count','status','Content-Range','update','then','get','SquareProjects','UserProfileResource','destroy','publish','stringify','error','name','send','index','map','SquareProject','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','nolimit','order','sort','where','pick','VIRTUAL','filter','options'];(function(_0x41f915,_0x460ed0){var _0x11da73=function(_0x4f5082){while(--_0x4f5082){_0x41f915['push'](_0x41f915['shift']());}};_0x11da73(++_0x460ed0);}(_0x7a54,0x106));var _0x47a5=function(_0x2468d5,_0x4faf05){_0x2468d5=_0x2468d5-0x0;var _0x3c5ae9=_0x7a54[_0x2468d5];return _0x3c5ae9;};'use strict';var _=require(_0x47a5('0x0'));var Redis=require(_0x47a5('0x1'));var qs=require(_0x47a5('0x2'));var logger=require('../../config/logger')(_0x47a5('0x3'));var config=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];config[_0x47a5('0x5')]=_[_0x47a5('0x6')](config[_0x47a5('0x5')],{'host':_0x47a5('0x7'),'port':0x18eb});var socket=require(_0x47a5('0x8'))(new Redis(config['redis']));require(_0x47a5('0x9'))['register'](socket);function respondWithStatusCode(_0x343372,_0x30e405){_0x30e405=_0x30e405||0xcc;return function(_0x506eda){if(_0x506eda){return _0x343372[_0x47a5('0xa')](_0x30e405);}return _0x343372['status'](_0x30e405)['end']();};}function respondWithResult(_0x582352,_0x2a0e98){_0x2a0e98=_0x2a0e98||0xc8;return function(_0x2baee7){if(_0x2baee7){return _0x582352['status'](_0x2a0e98)[_0x47a5('0xb')](_0x2baee7);}};}function respondWithFilteredResult(_0x49e844,_0x5de6d7){return function(_0x1f47f4){if(_0x1f47f4){var _0x69e4d4=typeof _0x5de6d7[_0x47a5('0xc')]===_0x47a5('0xd')&&typeof _0x5de6d7[_0x47a5('0xe')]===_0x47a5('0xd');var _0x1eae59=_0x1f47f4['count'];var _0x44bd3e=_0x69e4d4?0x0:_0x5de6d7[_0x47a5('0xc')];var _0x1cf309=_0x69e4d4?_0x1f47f4[_0x47a5('0xf')]:_0x5de6d7[_0x47a5('0xc')]+_0x5de6d7[_0x47a5('0xe')];var _0x3c6c46;if(_0x1cf309>=_0x1eae59){_0x1cf309=_0x1eae59;_0x3c6c46=0xc8;}else{_0x3c6c46=0xce;}_0x49e844[_0x47a5('0x10')](_0x3c6c46);return _0x49e844['set'](_0x47a5('0x11'),_0x44bd3e+'-'+_0x1cf309+'/'+_0x1eae59)[_0x47a5('0xb')](_0x1f47f4);}return null;};}function saveUpdates(_0x3b001e){return function(_0x2a2cbb){if(_0x2a2cbb){return _0x2a2cbb[_0x47a5('0x12')](_0x3b001e)['then'](function(_0x549de3){return _0x549de3;});}return null;};}function removeEntity(_0x138bc0){return function(_0x4b966e){if(_0x4b966e){return _0x4b966e['destroy']()[_0x47a5('0x13')](function(){var _0xaf70a6=_0x4b966e[_0x47a5('0x14')]({'plain':!![]});var _0x1ef371=_0x47a5('0x15');return db[_0x47a5('0x16')][_0x47a5('0x17')]({'where':{'type':_0x1ef371,'resourceId':_0xaf70a6['id']}})[_0x47a5('0x13')](function(){return _0x4b966e;});})[_0x47a5('0x13')](function(){var _0x4a9fcb=new Redis(config[_0x47a5('0x5')]);_0x4a9fcb[_0x47a5('0x18')]('agi',JSON[_0x47a5('0x19')]({'id':_0x4b966e['id'],'deleted':!![]}));})[_0x47a5('0x13')](function(){_0x138bc0[_0x47a5('0x10')](0xcc)['end']();});}};}function handleEntityNotFound(_0xb8ae6c){return function(_0x2f142b){if(!_0x2f142b){_0xb8ae6c[_0x47a5('0xa')](0x194);}return _0x2f142b;};}function handleError(_0x7a9f9e,_0x5ef1b1){_0x5ef1b1=_0x5ef1b1||0x1f4;return function(_0xe2dea9){logger[_0x47a5('0x1a')](_0xe2dea9['stack']);if(_0xe2dea9[_0x47a5('0x1b')]){delete _0xe2dea9[_0x47a5('0x1b')];}_0x7a9f9e[_0x47a5('0x10')](_0x5ef1b1)[_0x47a5('0x1c')](_0xe2dea9);};}exports[_0x47a5('0x1d')]=function(_0x50bf17,_0x53078a){var _0x136745={},_0x5686db={},_0x1ea9c8={'count':0x0,'rows':[]};var _0x5b6c4e=_[_0x47a5('0x1e')](db[_0x47a5('0x1f')][_0x47a5('0x20')],function(_0x1dac65){return{'name':_0x1dac65[_0x47a5('0x21')],'type':_0x1dac65[_0x47a5('0x22')][_0x47a5('0x23')]};});_0x5686db[_0x47a5('0x24')]=_[_0x47a5('0x1e')](_0x5b6c4e,_0x47a5('0x1b'));_0x5686db[_0x47a5('0x25')]=_[_0x47a5('0x26')](_0x50bf17[_0x47a5('0x25')]);_0x5686db['filters']=_[_0x47a5('0x27')](_0x5686db['model'],_0x5686db[_0x47a5('0x25')]);_0x136745[_0x47a5('0x28')]=_[_0x47a5('0x27')](_0x5686db['model'],qs[_0x47a5('0x29')](_0x50bf17[_0x47a5('0x25')][_0x47a5('0x29')]));_0x136745[_0x47a5('0x28')]=_0x136745['attributes']['length']?_0x136745[_0x47a5('0x28')]:_0x5686db[_0x47a5('0x24')];if(!_0x50bf17['query']['hasOwnProperty'](_0x47a5('0x2a'))){_0x136745[_0x47a5('0xe')]=qs['limit'](_0x50bf17[_0x47a5('0x25')]['limit']);_0x136745[_0x47a5('0xc')]=qs[_0x47a5('0xc')](_0x50bf17['query']['offset']);}_0x136745[_0x47a5('0x2b')]=qs['sort'](_0x50bf17[_0x47a5('0x25')][_0x47a5('0x2c')]);_0x136745[_0x47a5('0x2d')]=qs['filters'](_[_0x47a5('0x2e')](_0x50bf17['query'],_0x5686db['filters']),_0x5b6c4e);if(_0x50bf17[_0x47a5('0x25')]['filter']){_0x136745[_0x47a5('0x2d')]=_['merge'](_0x136745[_0x47a5('0x2d')],{'$or':_[_0x47a5('0x1e')](_0x5b6c4e,function(_0x38c8d4){if(_0x38c8d4[_0x47a5('0x22')]!==_0x47a5('0x2f')){var _0xed6320={};_0xed6320[_0x38c8d4[_0x47a5('0x1b')]]={'$like':'%'+_0x50bf17[_0x47a5('0x25')][_0x47a5('0x30')]+'%'};return _0xed6320;}})});}_0x136745=_['merge']({},_0x136745,_0x50bf17[_0x47a5('0x31')]);var _0x10f136={'where':_0x136745['where']};return db[_0x47a5('0x1f')][_0x47a5('0xf')](_0x10f136)[_0x47a5('0x13')](function(_0x49c4b5){_0x1ea9c8[_0x47a5('0xf')]=_0x49c4b5;if(_0x50bf17[_0x47a5('0x25')]['includeAll']){_0x136745[_0x47a5('0x32')]=[{'all':!![]}];}return db[_0x47a5('0x1f')]['findAll'](_0x136745);})['then'](function(_0x5ebd8c){_0x1ea9c8[_0x47a5('0x33')]=_0x5ebd8c;return _0x1ea9c8;})['then'](respondWithFilteredResult(_0x53078a,_0x136745))[_0x47a5('0x34')](handleError(_0x53078a,null));};exports[_0x47a5('0x35')]=function(_0x301a85,_0x111f0d){var _0x1b2c80={'raw':![],'where':{'id':_0x301a85[_0x47a5('0x36')]['id']}},_0xcb5243={};_0xcb5243[_0x47a5('0x24')]=_[_0x47a5('0x26')](db[_0x47a5('0x1f')][_0x47a5('0x20')]);_0xcb5243[_0x47a5('0x25')]=_[_0x47a5('0x26')](_0x301a85['query']);_0xcb5243[_0x47a5('0x37')]=_[_0x47a5('0x27')](_0xcb5243[_0x47a5('0x24')],_0xcb5243[_0x47a5('0x25')]);_0x1b2c80['attributes']=_[_0x47a5('0x27')](_0xcb5243['model'],qs['fields'](_0x301a85['query']['fields']));_0x1b2c80[_0x47a5('0x28')]=_0x1b2c80['attributes'][_0x47a5('0x38')]?_0x1b2c80[_0x47a5('0x28')]:_0xcb5243[_0x47a5('0x24')];if(_0x301a85['query'][_0x47a5('0x39')]){_0x1b2c80[_0x47a5('0x32')]=[{'all':!![]}];}_0x1b2c80=_['merge']({},_0x1b2c80,_0x301a85['options']);return db[_0x47a5('0x1f')]['find'](_0x1b2c80)[_0x47a5('0x13')](handleEntityNotFound(_0x111f0d,null))[_0x47a5('0x13')](respondWithResult(_0x111f0d,null))[_0x47a5('0x34')](handleError(_0x111f0d,null));};exports[_0x47a5('0x3a')]=function(_0x34a9ae,_0xf0edbb){return db[_0x47a5('0x1f')][_0x47a5('0x3a')](_0x34a9ae[_0x47a5('0x3b')],{})[_0x47a5('0x13')](function(_0x24ecb1){var _0x3c3ebf=_0x34a9ae[_0x47a5('0x3c')][_0x47a5('0x14')]({'plain':!![]});if(!_0x3c3ebf)throw new Error(_0x47a5('0x3d'));if(_0x3c3ebf[_0x47a5('0x3e')]==='user'){var _0x2d38de=_0x24ecb1[_0x47a5('0x14')]({'plain':!![]});var _0x49eab1='SquareProjects';return db[_0x47a5('0x3f')]['find']({'where':{'name':_0x49eab1,'userProfileId':_0x3c3ebf[_0x47a5('0x40')]},'raw':!![]})[_0x47a5('0x13')](function(_0x54c35f){if(_0x54c35f&&_0x54c35f['autoAssociation']===0x0){return db[_0x47a5('0x16')]['create']({'name':_0x2d38de[_0x47a5('0x1b')],'resourceId':_0x2d38de['id'],'type':_0x54c35f[_0x47a5('0x1b')],'sectionId':_0x54c35f['id']},{})[_0x47a5('0x13')](function(){return _0x24ecb1;});}else{return _0x24ecb1;}})[_0x47a5('0x34')](function(_0x44fe8a){logger[_0x47a5('0x1a')](_0x47a5('0x41'),_0x44fe8a);throw _0x44fe8a;});}return _0x24ecb1;})['then'](respondWithResult(_0xf0edbb,0xc9))['catch'](handleError(_0xf0edbb,null));};exports[_0x47a5('0x12')]=function(_0x411230,_0x1163e3){if(_0x411230[_0x47a5('0x3b')]['id']){delete _0x411230[_0x47a5('0x3b')]['id'];}return db[_0x47a5('0x1f')][_0x47a5('0x42')]({'where':{'id':_0x411230['params']['id']}})[_0x47a5('0x13')](handleEntityNotFound(_0x1163e3,null))[_0x47a5('0x13')](saveUpdates(_0x411230[_0x47a5('0x3b')],null))['then'](function(_0x12ca40){if(!_0x12ca40)return;var _0x54bd83=_0x12ca40[_0x47a5('0x14')]({'plain':!![]});return _0x54bd83;})[_0x47a5('0x13')](function(_0x46e90b){var _0xf03bd5=new Redis(config['redis']);_0xf03bd5[_0x47a5('0x18')](_0x47a5('0x43'),JSON[_0x47a5('0x19')](_[_0x47a5('0x2e')](_0x46e90b,['id',_0x47a5('0x1b'),_0x47a5('0x44')])));return _0x46e90b;})[_0x47a5('0x13')](respondWithResult(_0x1163e3,null))['catch'](handleError(_0x1163e3,null));};exports[_0x47a5('0x17')]=function(_0x43721b,_0x187d7e){return db[_0x47a5('0x1f')][_0x47a5('0x42')]({'where':{'id':_0x43721b[_0x47a5('0x36')]['id']}})['then'](handleEntityNotFound(_0x187d7e,null))[_0x47a5('0x13')](removeEntity(_0x187d7e,null))[_0x47a5('0x34')](handleError(_0x187d7e,null));};exports[_0x47a5('0x45')]=function(_0x53871e,_0x4c5ed){return db[_0x47a5('0x1f')][_0x47a5('0x42')]({'where':{'id':_0x53871e['params']['id']}})['then'](handleEntityNotFound(_0x4c5ed,null))[_0x47a5('0x13')](function(_0x376e1d){if(_0x376e1d){return _0x376e1d['addUsers'](_0x53871e['body'][_0x47a5('0x46')],_['omit'](_0x53871e[_0x47a5('0x3b')],['ids','id'])||{});}})['then'](respondWithResult(_0x4c5ed,null))[_0x47a5('0x34')](handleError(_0x4c5ed,null));};exports[_0x47a5('0x47')]=function(_0x53eedf,_0x1b958b){return db[_0x47a5('0x1f')]['find']({'where':{'id':_0x53eedf['params']['id']}})[_0x47a5('0x13')](handleEntityNotFound(_0x1b958b,null))[_0x47a5('0x13')](function(_0x867da0){if(_0x867da0){return _0x867da0[_0x47a5('0x47')](_0x53eedf['query'][_0x47a5('0x46')])[_0x47a5('0x13')](function(){if(_[_0x47a5('0x48')](_0x53eedf['query'][_0x47a5('0x46')])){for(var _0x4db625=0x0;_0x4db625<_0x53eedf[_0x47a5('0x25')][_0x47a5('0x46')][_0x47a5('0x38')];_0x4db625+=0x1){socket[_0x47a5('0x49')](_0x47a5('0x4a'),{'UserId':Number(_0x53eedf['query'][_0x47a5('0x46')][_0x4db625]),'SquareProjectId':Number(_0x53eedf['params']['id'])});}}else{socket['emit']('userSquareProject:remove',{'UserId':Number(_0x53eedf['query'][_0x47a5('0x46')]),'SquareProjectId':Number(_0x53eedf[_0x47a5('0x36')]['id'])});}});}})[_0x47a5('0x13')](respondWithStatusCode(_0x1b958b,null))['catch'](handleError(_0x1b958b,null));};exports['getUsers']=function(_0x139229,_0x23020b){var _0x45d4b6={};var _0x3c2b46={};var _0xc45e25;var _0x4b5d0c;return db[_0x47a5('0x1f')]['findOne']({'where':{'id':_0x139229[_0x47a5('0x36')]['id']}})[_0x47a5('0x13')](handleEntityNotFound(_0x23020b,null))['then'](function(_0x32b4de){if(_0x32b4de){_0xc45e25=_0x32b4de;_0x3c2b46[_0x47a5('0x24')]=_[_0x47a5('0x26')](db[_0x47a5('0x4b')][_0x47a5('0x20')]);_0x3c2b46[_0x47a5('0x25')]=_[_0x47a5('0x26')](_0x139229[_0x47a5('0x25')]);_0x3c2b46['filters']=_[_0x47a5('0x27')](_0x3c2b46[_0x47a5('0x24')],_0x3c2b46[_0x47a5('0x25')]);_0x45d4b6[_0x47a5('0x28')]=_[_0x47a5('0x27')](_0x3c2b46['model'],qs[_0x47a5('0x29')](_0x139229[_0x47a5('0x25')][_0x47a5('0x29')]));_0x45d4b6[_0x47a5('0x28')]=_0x45d4b6[_0x47a5('0x28')][_0x47a5('0x38')]?_0x45d4b6[_0x47a5('0x28')]:_0x3c2b46[_0x47a5('0x24')];_0x45d4b6[_0x47a5('0x2b')]=qs[_0x47a5('0x2c')](_0x139229[_0x47a5('0x25')][_0x47a5('0x2c')]);_0x45d4b6[_0x47a5('0x2d')]=qs[_0x47a5('0x37')](_[_0x47a5('0x2e')](_0x139229['query'],_0x3c2b46[_0x47a5('0x37')]));if(_0x139229[_0x47a5('0x25')][_0x47a5('0x30')]){_0x45d4b6['where']=_[_0x47a5('0x4c')](_0x45d4b6[_0x47a5('0x2d')],{'$or':_[_0x47a5('0x1e')](_0x45d4b6[_0x47a5('0x28')],function(_0x5d9822){var _0x3ac402={};_0x3ac402[_0x5d9822]={'$like':'%'+_0x139229['query'][_0x47a5('0x30')]+'%'};return _0x3ac402;})});}_0x45d4b6=_['merge']({},_0x45d4b6,_0x139229[_0x47a5('0x31')]);return _0xc45e25['getUsers'](_0x45d4b6);}})[_0x47a5('0x13')](function(_0x2f27c3){if(_0x2f27c3){_0x4b5d0c=_0x2f27c3[_0x47a5('0x38')];if(!_0x139229['query']['hasOwnProperty']('nolimit')){_0x45d4b6[_0x47a5('0xe')]=qs[_0x47a5('0xe')](_0x139229[_0x47a5('0x25')][_0x47a5('0xe')]);_0x45d4b6['offset']=qs[_0x47a5('0xc')](_0x139229[_0x47a5('0x25')][_0x47a5('0xc')]);}return _0xc45e25[_0x47a5('0x4d')](_0x45d4b6);}})[_0x47a5('0x13')](function(_0xb9f589){if(_0xb9f589){return _0xb9f589?{'count':_0x4b5d0c,'rows':_0xb9f589}:null;}})[_0x47a5('0x13')](respondWithResult(_0x23020b,null))[_0x47a5('0x34')](handleError(_0x23020b,null));};
\ No newline at end of file
+var _0x4128=['undefined','limit','count','set','json','update','then','UserProfileResource','destroy','stringify','sendStatus','error','stack','name','net','Socket','connect','agi','port','127.0.0.1','SquareProject','rawAttributes','type','key','model','map','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','catch','show','params','keys','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','SquareProjects','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','publish','find','addUsers','ids','omit','removeUsers','isArray','emit','userSquareProject:remove','findOne','getUsers','lodash','ioredis','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','socket.io-emitter','register','status','end','offset'];(function(_0x123225,_0x20709f){var _0x3cd120=function(_0x4064ee){while(--_0x4064ee){_0x123225['push'](_0x123225['shift']());}};_0x3cd120(++_0x20709f);}(_0x4128,0x13b));var _0x8412=function(_0x5e0df5,_0x4cb5fa){_0x5e0df5=_0x5e0df5-0x0;var _0x169705=_0x4128[_0x5e0df5];return _0x169705;};'use strict';var _=require(_0x8412('0x0'));var Redis=require(_0x8412('0x1'));var qs=require('../../components/parsers/qs');var logger=require(_0x8412('0x2'))(_0x8412('0x3'));var config=require(_0x8412('0x4'));var db=require(_0x8412('0x5'))['db'];config['redis']=_[_0x8412('0x6')](config[_0x8412('0x7')],{'host':'localhost','port':0x18eb});var socket=require(_0x8412('0x8'))(new Redis(config['redis']));require('./squareProject.socket')[_0x8412('0x9')](socket);function respondWithStatusCode(_0x58f723,_0x44066d){_0x44066d=_0x44066d||0xcc;return function(_0x27ae81){if(_0x27ae81){return _0x58f723['sendStatus'](_0x44066d);}return _0x58f723[_0x8412('0xa')](_0x44066d)[_0x8412('0xb')]();};}function respondWithResult(_0x5ef344,_0x27c034){_0x27c034=_0x27c034||0xc8;return function(_0xf498){if(_0xf498){return _0x5ef344[_0x8412('0xa')](_0x27c034)['json'](_0xf498);}};}function respondWithFilteredResult(_0x239422,_0x529337){return function(_0x4a6d3c){if(_0x4a6d3c){var _0x2007ac=typeof _0x529337[_0x8412('0xc')]===_0x8412('0xd')&&typeof _0x529337[_0x8412('0xe')]===_0x8412('0xd');var _0x5e134f=_0x4a6d3c[_0x8412('0xf')];var _0x20199e=_0x2007ac?0x0:_0x529337['offset'];var _0x45955c=_0x2007ac?_0x4a6d3c[_0x8412('0xf')]:_0x529337['offset']+_0x529337['limit'];var _0x5d46b6;if(_0x45955c>=_0x5e134f){_0x45955c=_0x5e134f;_0x5d46b6=0xc8;}else{_0x5d46b6=0xce;}_0x239422['status'](_0x5d46b6);return _0x239422[_0x8412('0x10')]('Content-Range',_0x20199e+'-'+_0x45955c+'/'+_0x5e134f)[_0x8412('0x11')](_0x4a6d3c);}return null;};}function saveUpdates(_0x16304a){return function(_0x12e7d7){if(_0x12e7d7){return _0x12e7d7[_0x8412('0x12')](_0x16304a)[_0x8412('0x13')](function(_0x171314){return _0x171314;});}return null;};}function removeEntity(_0x426241){return function(_0x217e00){if(_0x217e00){return _0x217e00['destroy']()[_0x8412('0x13')](function(){var _0x4e8f17=_0x217e00['get']({'plain':!![]});var _0x18a8fb='SquareProjects';return db[_0x8412('0x14')][_0x8412('0x15')]({'where':{'type':_0x18a8fb,'resourceId':_0x4e8f17['id']}})['then'](function(){return _0x217e00;});})['then'](function(){return createAgiSocket();})[_0x8412('0x13')](function(_0x5dcb1f){_0x5dcb1f[_0x8412('0xb')](JSON[_0x8412('0x16')]({'id':_0x217e00['id'],'deleted':!![]}));})[_0x8412('0x13')](function(){_0x426241[_0x8412('0xa')](0xcc)[_0x8412('0xb')]();});}};}function handleEntityNotFound(_0xc20b7e){return function(_0x5bf13a){if(!_0x5bf13a){_0xc20b7e[_0x8412('0x17')](0x194);}return _0x5bf13a;};}function handleError(_0x3eb11f,_0x4040f5){_0x4040f5=_0x4040f5||0x1f4;return function(_0xbd20a5){logger[_0x8412('0x18')](_0xbd20a5[_0x8412('0x19')]);if(_0xbd20a5[_0x8412('0x1a')]){delete _0xbd20a5[_0x8412('0x1a')];}_0x3eb11f[_0x8412('0xa')](_0x4040f5)['send'](_0xbd20a5);};}function createAgiSocket(){try{var _0x3497f1=require(_0x8412('0x1b'));var _0x21d7b5=new _0x3497f1[(_0x8412('0x1c'))]();return _0x21d7b5[_0x8412('0x1d')](config[_0x8412('0x1e')][_0x8412('0x1f')]||0x11dd,_0x8412('0x20'));}catch(_0x170b78){throw _0x170b78;}}exports['index']=function(_0x580ad3,_0xdb8d51){var _0x3a1c25={},_0x5f3428={},_0x28ad55={'count':0x0,'rows':[]};var _0x472497=_['map'](db[_0x8412('0x21')][_0x8412('0x22')],function(_0x1e0860){return{'name':_0x1e0860['fieldName'],'type':_0x1e0860[_0x8412('0x23')][_0x8412('0x24')]};});_0x5f3428[_0x8412('0x25')]=_[_0x8412('0x26')](_0x472497,'name');_0x5f3428['query']=_['keys'](_0x580ad3['query']);_0x5f3428[_0x8412('0x27')]=_[_0x8412('0x28')](_0x5f3428[_0x8412('0x25')],_0x5f3428['query']);_0x3a1c25['attributes']=_[_0x8412('0x28')](_0x5f3428['model'],qs['fields'](_0x580ad3[_0x8412('0x29')][_0x8412('0x2a')]));_0x3a1c25[_0x8412('0x2b')]=_0x3a1c25['attributes'][_0x8412('0x2c')]?_0x3a1c25['attributes']:_0x5f3428['model'];if(!_0x580ad3[_0x8412('0x29')][_0x8412('0x2d')](_0x8412('0x2e'))){_0x3a1c25[_0x8412('0xe')]=qs['limit'](_0x580ad3['query'][_0x8412('0xe')]);_0x3a1c25[_0x8412('0xc')]=qs[_0x8412('0xc')](_0x580ad3[_0x8412('0x29')][_0x8412('0xc')]);}_0x3a1c25[_0x8412('0x2f')]=qs[_0x8412('0x30')](_0x580ad3[_0x8412('0x29')][_0x8412('0x30')]);_0x3a1c25[_0x8412('0x31')]=qs[_0x8412('0x27')](_[_0x8412('0x32')](_0x580ad3[_0x8412('0x29')],_0x5f3428[_0x8412('0x27')]),_0x472497);if(_0x580ad3[_0x8412('0x29')][_0x8412('0x33')]){_0x3a1c25[_0x8412('0x31')]=_[_0x8412('0x34')](_0x3a1c25[_0x8412('0x31')],{'$or':_[_0x8412('0x26')](_0x472497,function(_0x8fda2c){if(_0x8fda2c[_0x8412('0x23')]!==_0x8412('0x35')){var _0x42a0d6={};_0x42a0d6[_0x8fda2c[_0x8412('0x1a')]]={'$like':'%'+_0x580ad3['query'][_0x8412('0x33')]+'%'};return _0x42a0d6;}})});}_0x3a1c25=_[_0x8412('0x34')]({},_0x3a1c25,_0x580ad3[_0x8412('0x36')]);var _0x334e02={'where':_0x3a1c25['where']};return db[_0x8412('0x21')][_0x8412('0xf')](_0x334e02)[_0x8412('0x13')](function(_0x164796){_0x28ad55[_0x8412('0xf')]=_0x164796;if(_0x580ad3['query'][_0x8412('0x37')]){_0x3a1c25[_0x8412('0x38')]=[{'all':!![]}];}return db[_0x8412('0x21')]['findAll'](_0x3a1c25);})['then'](function(_0x17e282){_0x28ad55['rows']=_0x17e282;return _0x28ad55;})[_0x8412('0x13')](respondWithFilteredResult(_0xdb8d51,_0x3a1c25))[_0x8412('0x39')](handleError(_0xdb8d51,null));};exports[_0x8412('0x3a')]=function(_0x2e6c7f,_0xae46d8){var _0x20d343={'raw':![],'where':{'id':_0x2e6c7f[_0x8412('0x3b')]['id']}},_0x4fcd48={};_0x4fcd48['model']=_['keys'](db[_0x8412('0x21')][_0x8412('0x22')]);_0x4fcd48[_0x8412('0x29')]=_[_0x8412('0x3c')](_0x2e6c7f[_0x8412('0x29')]);_0x4fcd48[_0x8412('0x27')]=_['intersection'](_0x4fcd48['model'],_0x4fcd48[_0x8412('0x29')]);_0x20d343['attributes']=_[_0x8412('0x28')](_0x4fcd48[_0x8412('0x25')],qs[_0x8412('0x2a')](_0x2e6c7f[_0x8412('0x29')][_0x8412('0x2a')]));_0x20d343[_0x8412('0x2b')]=_0x20d343[_0x8412('0x2b')][_0x8412('0x2c')]?_0x20d343[_0x8412('0x2b')]:_0x4fcd48[_0x8412('0x25')];if(_0x2e6c7f[_0x8412('0x29')][_0x8412('0x37')]){_0x20d343[_0x8412('0x38')]=[{'all':!![]}];}_0x20d343=_[_0x8412('0x34')]({},_0x20d343,_0x2e6c7f[_0x8412('0x36')]);return db[_0x8412('0x21')]['find'](_0x20d343)[_0x8412('0x13')](handleEntityNotFound(_0xae46d8,null))['then'](respondWithResult(_0xae46d8,null))[_0x8412('0x39')](handleError(_0xae46d8,null));};exports[_0x8412('0x3d')]=function(_0x424e8e,_0x55bba2){return db['SquareProject'][_0x8412('0x3d')](_0x424e8e[_0x8412('0x3e')],{})[_0x8412('0x13')](function(_0x1751bd){var _0x3c324b=_0x424e8e[_0x8412('0x3f')]['get']({'plain':!![]});if(!_0x3c324b)throw new Error(_0x8412('0x40'));if(_0x3c324b[_0x8412('0x41')]===_0x8412('0x3f')){var _0x5b49a3=_0x1751bd['get']({'plain':!![]});var _0x4a2515=_0x8412('0x42');return db[_0x8412('0x43')]['find']({'where':{'name':_0x4a2515,'userProfileId':_0x3c324b[_0x8412('0x44')]},'raw':!![]})[_0x8412('0x13')](function(_0x337551){if(_0x337551&&_0x337551[_0x8412('0x45')]===0x0){return db[_0x8412('0x14')]['create']({'name':_0x5b49a3[_0x8412('0x1a')],'resourceId':_0x5b49a3['id'],'type':_0x337551[_0x8412('0x1a')],'sectionId':_0x337551['id']},{})[_0x8412('0x13')](function(){return _0x1751bd;});}else{return _0x1751bd;}})[_0x8412('0x39')](function(_0x4fef1b){logger[_0x8412('0x18')](_0x8412('0x46'),_0x4fef1b);throw _0x4fef1b;});}return _0x1751bd;})[_0x8412('0x13')](respondWithResult(_0x55bba2,0xc9))[_0x8412('0x39')](handleError(_0x55bba2,null));};exports['update']=function(_0x416958,_0x1a187f){if(_0x416958[_0x8412('0x3e')]['id']){delete _0x416958[_0x8412('0x3e')]['id'];}return db[_0x8412('0x21')]['find']({'where':{'id':_0x416958[_0x8412('0x3b')]['id']}})['then'](handleEntityNotFound(_0x1a187f,null))[_0x8412('0x13')](saveUpdates(_0x416958['body'],null))['then'](function(_0x44345d){if(!_0x44345d)return;var _0x4e152a=_0x44345d['get']({'plain':!![]});return _0x4e152a;})['then'](function(_0x33c82e){var _0x3d2b86=new Redis(config['redis']);_0x3d2b86[_0x8412('0x47')](_0x8412('0x1e'),JSON[_0x8412('0x16')](_[_0x8412('0x32')](_0x33c82e,['id',_0x8412('0x1a'),'production'])));return _0x33c82e;})[_0x8412('0x13')](respondWithResult(_0x1a187f,null))[_0x8412('0x39')](handleError(_0x1a187f,null));};exports['destroy']=function(_0x4a3550,_0x303dfc){return db['SquareProject'][_0x8412('0x48')]({'where':{'id':_0x4a3550[_0x8412('0x3b')]['id']}})['then'](handleEntityNotFound(_0x303dfc,null))[_0x8412('0x13')](removeEntity(_0x303dfc,null))['catch'](handleError(_0x303dfc,null));};exports[_0x8412('0x49')]=function(_0x33084a,_0x451eb8){return db['SquareProject'][_0x8412('0x48')]({'where':{'id':_0x33084a[_0x8412('0x3b')]['id']}})[_0x8412('0x13')](handleEntityNotFound(_0x451eb8,null))[_0x8412('0x13')](function(_0x350b12){if(_0x350b12){return _0x350b12[_0x8412('0x49')](_0x33084a[_0x8412('0x3e')][_0x8412('0x4a')],_[_0x8412('0x4b')](_0x33084a[_0x8412('0x3e')],[_0x8412('0x4a'),'id'])||{});}})['then'](respondWithResult(_0x451eb8,null))[_0x8412('0x39')](handleError(_0x451eb8,null));};exports[_0x8412('0x4c')]=function(_0x408331,_0x510d95){return db[_0x8412('0x21')][_0x8412('0x48')]({'where':{'id':_0x408331['params']['id']}})[_0x8412('0x13')](handleEntityNotFound(_0x510d95,null))[_0x8412('0x13')](function(_0x552ddd){if(_0x552ddd){return _0x552ddd[_0x8412('0x4c')](_0x408331['query'][_0x8412('0x4a')])[_0x8412('0x13')](function(){if(_[_0x8412('0x4d')](_0x408331[_0x8412('0x29')]['ids'])){for(var _0x12c3fd=0x0;_0x12c3fd<_0x408331[_0x8412('0x29')][_0x8412('0x4a')]['length'];_0x12c3fd+=0x1){socket[_0x8412('0x4e')](_0x8412('0x4f'),{'UserId':Number(_0x408331['query'][_0x8412('0x4a')][_0x12c3fd]),'SquareProjectId':Number(_0x408331[_0x8412('0x3b')]['id'])});}}else{socket[_0x8412('0x4e')]('userSquareProject:remove',{'UserId':Number(_0x408331[_0x8412('0x29')][_0x8412('0x4a')]),'SquareProjectId':Number(_0x408331['params']['id'])});}});}})[_0x8412('0x13')](respondWithStatusCode(_0x510d95,null))[_0x8412('0x39')](handleError(_0x510d95,null));};exports['getUsers']=function(_0x2e967f,_0x46a4bd){var _0x4aadca={};var _0x4ff658={};var _0x5dcf90;var _0x3a71c2;return db[_0x8412('0x21')][_0x8412('0x50')]({'where':{'id':_0x2e967f[_0x8412('0x3b')]['id']}})['then'](handleEntityNotFound(_0x46a4bd,null))['then'](function(_0x4b260f){if(_0x4b260f){_0x5dcf90=_0x4b260f;_0x4ff658['model']=_['keys'](db['User']['rawAttributes']);_0x4ff658['query']=_[_0x8412('0x3c')](_0x2e967f[_0x8412('0x29')]);_0x4ff658['filters']=_[_0x8412('0x28')](_0x4ff658[_0x8412('0x25')],_0x4ff658[_0x8412('0x29')]);_0x4aadca['attributes']=_[_0x8412('0x28')](_0x4ff658[_0x8412('0x25')],qs[_0x8412('0x2a')](_0x2e967f['query'][_0x8412('0x2a')]));_0x4aadca[_0x8412('0x2b')]=_0x4aadca[_0x8412('0x2b')][_0x8412('0x2c')]?_0x4aadca[_0x8412('0x2b')]:_0x4ff658[_0x8412('0x25')];_0x4aadca['order']=qs['sort'](_0x2e967f[_0x8412('0x29')]['sort']);_0x4aadca['where']=qs['filters'](_[_0x8412('0x32')](_0x2e967f[_0x8412('0x29')],_0x4ff658['filters']));if(_0x2e967f[_0x8412('0x29')][_0x8412('0x33')]){_0x4aadca[_0x8412('0x31')]=_[_0x8412('0x34')](_0x4aadca['where'],{'$or':_[_0x8412('0x26')](_0x4aadca[_0x8412('0x2b')],function(_0x3ffd5b){var _0x48ff25={};_0x48ff25[_0x3ffd5b]={'$like':'%'+_0x2e967f[_0x8412('0x29')][_0x8412('0x33')]+'%'};return _0x48ff25;})});}_0x4aadca=_['merge']({},_0x4aadca,_0x2e967f[_0x8412('0x36')]);return _0x5dcf90['getUsers'](_0x4aadca);}})[_0x8412('0x13')](function(_0xb6a88e){if(_0xb6a88e){_0x3a71c2=_0xb6a88e['length'];if(!_0x2e967f['query'][_0x8412('0x2d')](_0x8412('0x2e'))){_0x4aadca['limit']=qs['limit'](_0x2e967f[_0x8412('0x29')][_0x8412('0xe')]);_0x4aadca[_0x8412('0xc')]=qs[_0x8412('0xc')](_0x2e967f[_0x8412('0x29')][_0x8412('0xc')]);}return _0x5dcf90[_0x8412('0x51')](_0x4aadca);}})['then'](function(_0x499ad7){if(_0x499ad7){return _0x499ad7?{'count':_0x3a71c2,'rows':_0x499ad7}:null;}})[_0x8412('0x13')](respondWithResult(_0x46a4bd,null))[_0x8412('0x39')](handleError(_0x46a4bd,null));};
\ No newline at end of file
index 662e417..0948312 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4a7=['SquareProject','setMaxListeners','save','update','remove','emit','exports','events','../../mysqldb'];(function(_0xd3cf9,_0x4fcf07){var _0x2acbc8=function(_0x53f33f){while(--_0x53f33f){_0xd3cf9['push'](_0xd3cf9['shift']());}};_0x2acbc8(++_0x4fcf07);}(_0xe4a7,0xe8));var _0x7e4a=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xe4a7[_0x19950b];return _0x3c6b41;};'use strict';var EventEmitter=require(_0x7e4a('0x0'));var SquareProject=require(_0x7e4a('0x1'))['db'][_0x7e4a('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x7e4a('0x3')](0x0);var events={'afterCreate':_0x7e4a('0x4'),'afterUpdate':_0x7e4a('0x5'),'afterDestroy':_0x7e4a('0x6')};function emitEvent(_0x19ffd2){return function(_0x4fb92e,_0x55825a,_0x19ea0d){SquareProjectEvents[_0x7e4a('0x7')](_0x19ffd2+':'+_0x4fb92e['id'],_0x4fb92e);SquareProjectEvents[_0x7e4a('0x7')](_0x19ffd2,_0x4fb92e);_0x19ea0d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SquareProject['hook'](e,emitEvent(event));}}module[_0x7e4a('0x8')]=SquareProjectEvents;
\ No newline at end of file
+var _0xa94b=['remove','emit','hook','exports','events','../../mysqldb','SquareProject','setMaxListeners','save','update'];(function(_0x44cc17,_0x5dcb11){var _0x2ab179=function(_0x5379db){while(--_0x5379db){_0x44cc17['push'](_0x44cc17['shift']());}};_0x2ab179(++_0x5dcb11);}(_0xa94b,0xcc));var _0xba94=function(_0x3dfb4f,_0x569f76){_0x3dfb4f=_0x3dfb4f-0x0;var _0x4d1110=_0xa94b[_0x3dfb4f];return _0x4d1110;};'use strict';var EventEmitter=require(_0xba94('0x0'));var SquareProject=require(_0xba94('0x1'))['db'][_0xba94('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0xba94('0x3')](0x0);var events={'afterCreate':_0xba94('0x4'),'afterUpdate':_0xba94('0x5'),'afterDestroy':_0xba94('0x6')};function emitEvent(_0x217aa2){return function(_0x546995,_0x20cd1c,_0x539836){SquareProjectEvents[_0xba94('0x7')](_0x217aa2+':'+_0x546995['id'],_0x546995);SquareProjectEvents['emit'](_0x217aa2,_0x546995);_0x539836(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SquareProject[_0xba94('0x8')](e,emitEvent(event));}}module[_0xba94('0x9')]=SquareProjectEvents;
\ No newline at end of file
index d67ba89..d943555 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25cf=['YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareProject.attributes','exports','square_projects','changed','preproduction','savedAt','production','publishedAt','format'];(function(_0x309111,_0x52cc87){var _0x199a8d=function(_0x5f5bf5){while(--_0x5f5bf5){_0x309111['push'](_0x309111['shift']());}};_0x199a8d(++_0x52cc87);}(_0x25cf,0x1c9));var _0xf25c=function(_0x324640,_0x654697){_0x324640=_0x324640-0x0;var _0x10f89=_0x25cf[_0x324640];return _0x10f89;};'use strict';var _=require(_0xf25c('0x0'));var util=require(_0xf25c('0x1'));var logger=require(_0xf25c('0x2'))('api');var moment=require(_0xf25c('0x3'));var BPromise=require(_0xf25c('0x4'));var rp=require(_0xf25c('0x5'));var fs=require('fs');var path=require(_0xf25c('0x6'));var rimraf=require(_0xf25c('0x7'));var config=require(_0xf25c('0x8'));var attributes=require(_0xf25c('0x9'));module[_0xf25c('0xa')]=function(_0x2f3253,_0x24b6a8){return _0x2f3253['define']('SquareProject',attributes,{'tableName':_0xf25c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x13cec7,_0x39eff5,_0x119c70){if(_0x13cec7[_0xf25c('0xc')](_0xf25c('0xd'))){_0x13cec7[_0xf25c('0xe')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}if(_0x13cec7[_0xf25c('0xc')](_0xf25c('0xf'))){_0x13cec7[_0xf25c('0x10')]=moment()[_0xf25c('0x11')](_0xf25c('0x12'));}_0x119c70(null,_0x13cec7);}}});};
\ No newline at end of file
+var _0x1f99=['production','publishedAt','../../config/logger','api','bluebird','request-promise','path','./squareProject.attributes','exports','define','format','YYYY-MM-DD\x20HH:mm:ss','changed'];(function(_0x4a3898,_0x4c9853){var _0x25ceb0=function(_0x528b6d){while(--_0x528b6d){_0x4a3898['push'](_0x4a3898['shift']());}};_0x25ceb0(++_0x4c9853);}(_0x1f99,0x161));var _0x91f9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1f99[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x91f9('0x0'))(_0x91f9('0x1'));var moment=require('moment');var BPromise=require(_0x91f9('0x2'));var rp=require(_0x91f9('0x3'));var fs=require('fs');var path=require(_0x91f9('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x91f9('0x5'));module[_0x91f9('0x6')]=function(_0x2f4d38,_0x4d305e){return _0x2f4d38[_0x91f9('0x7')]('SquareProject',attributes,{'tableName':'square_projects','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x2e7646,_0x5438ab,_0x29090d){if(_0x2e7646['changed']('preproduction')){_0x2e7646['savedAt']=moment()[_0x91f9('0x8')](_0x91f9('0x9'));}if(_0x2e7646[_0x91f9('0xa')](_0x91f9('0xb'))){_0x2e7646[_0x91f9('0xc')]=moment()[_0x91f9('0x8')](_0x91f9('0x9'));}_0x29090d(null,_0x2e7646);}}});};
\ No newline at end of file
index 1bb0a01..b3c1831 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf61=['rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','./squareProject.socket','register','GetSquareProjects','SquareProject','findAll','options','raw','where','attributes','limit','include','model','map','info','stringify','message','error','ShowSquareProject','find','then','debug','catch','lodash','ioredis','../../mysqldb','../../config/logger'];(function(_0x1f6da6,_0x5794cc){var _0x4cd92c=function(_0x4f7495){while(--_0x4f7495){_0x1f6da6['push'](_0x1f6da6['shift']());}};_0x4cd92c(++_0x5794cc);}(_0xdf61,0x9c));var _0x1df6=function(_0x19aad1,_0x4d5545){_0x19aad1=_0x19aad1-0x0;var _0x45a0be=_0xdf61[_0x19aad1];return _0x45a0be;};'use strict';var _=require(_0x1df6('0x0'));var Redis=require(_0x1df6('0x1'));var db=require(_0x1df6('0x2'))['db'];var logger=require(_0x1df6('0x3'))(_0x1df6('0x4'));var config=require(_0x1df6('0x5'));config[_0x1df6('0x6')]=_[_0x1df6('0x7')](config[_0x1df6('0x6')],{'host':_0x1df6('0x8'),'port':0x18eb});var socket=require(_0x1df6('0x9'))(new Redis(config[_0x1df6('0x6')]));require(_0x1df6('0xa'))[_0x1df6('0xb')](socket);exports[_0x1df6('0xc')]=function(_0x31e1eb){var _0x302e6b=this;return new Promise(function(_0x3fa0e7,_0x4e32d1){return db[_0x1df6('0xd')][_0x1df6('0xe')]({'raw':_0x31e1eb[_0x1df6('0xf')]?_0x31e1eb[_0x1df6('0xf')][_0x1df6('0x10')]===undefined?!![]:![]:!![],'where':_0x31e1eb[_0x1df6('0xf')]?_0x31e1eb[_0x1df6('0xf')][_0x1df6('0x11')]||null:null,'attributes':_0x31e1eb[_0x1df6('0xf')]?_0x31e1eb[_0x1df6('0xf')][_0x1df6('0x12')]||null:null,'limit':_0x31e1eb[_0x1df6('0xf')]?_0x31e1eb['options'][_0x1df6('0x13')]||null:null,'include':_0x31e1eb[_0x1df6('0xf')]?_0x31e1eb[_0x1df6('0xf')][_0x1df6('0x14')]?_['map'](_0x31e1eb['options']['include'],function(_0x2f96e7){return{'model':db[_0x2f96e7[_0x1df6('0x15')]],'as':_0x2f96e7['as'],'attributes':_0x2f96e7[_0x1df6('0x12')],'include':_0x2f96e7[_0x1df6('0x14')]?_[_0x1df6('0x16')](_0x2f96e7['include'],function(_0x402b95){return{'model':db[_0x402b95[_0x1df6('0x15')]],'as':_0x402b95['as'],'attributes':_0x402b95[_0x1df6('0x12')],'include':_0x402b95[_0x1df6('0x14')]?_[_0x1df6('0x16')](_0x402b95['include'],function(_0x55f078){return{'model':db[_0x55f078[_0x1df6('0x15')]],'as':_0x55f078['as'],'attributes':_0x55f078[_0x1df6('0x12')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1cf71c){logger[_0x1df6('0x17')](_0x1df6('0xc'),_0x31e1eb);logger['debug'](_0x1df6('0xc'),_0x31e1eb,JSON[_0x1df6('0x18')](_0x1cf71c));_0x3fa0e7(_0x1cf71c);})['catch'](function(_0x505a0c){logger['error']('GetSquareProjects',_0x505a0c[_0x1df6('0x19')],_0x31e1eb);_0x4e32d1(_0x302e6b[_0x1df6('0x1a')](0x1f4,_0x505a0c[_0x1df6('0x19')]));});});};exports[_0x1df6('0x1b')]=function(_0x41388d){var _0x20d454=this;return new Promise(function(_0x585e25,_0x3a56a2){return db[_0x1df6('0xd')][_0x1df6('0x1c')]({'raw':_0x41388d[_0x1df6('0xf')]?_0x41388d[_0x1df6('0xf')][_0x1df6('0x10')]===undefined?!![]:![]:!![],'where':_0x41388d[_0x1df6('0xf')]?_0x41388d[_0x1df6('0xf')][_0x1df6('0x11')]||null:null,'attributes':_0x41388d['options']?_0x41388d[_0x1df6('0xf')][_0x1df6('0x12')]||null:null,'include':_0x41388d['options']?_0x41388d[_0x1df6('0xf')]['include']?_['map'](_0x41388d[_0x1df6('0xf')][_0x1df6('0x14')],function(_0x408a41){return{'model':db[_0x408a41[_0x1df6('0x15')]],'as':_0x408a41['as'],'attributes':_0x408a41[_0x1df6('0x12')],'include':_0x408a41[_0x1df6('0x14')]?_[_0x1df6('0x16')](_0x408a41[_0x1df6('0x14')],function(_0x5d56fe){return{'model':db[_0x5d56fe[_0x1df6('0x15')]],'as':_0x5d56fe['as'],'attributes':_0x5d56fe[_0x1df6('0x12')],'include':_0x5d56fe[_0x1df6('0x14')]?_[_0x1df6('0x16')](_0x5d56fe['include'],function(_0x5d106b){return{'model':db[_0x5d106b['model']],'as':_0x5d106b['as'],'attributes':_0x5d106b[_0x1df6('0x12')]};}):[]};}):[]};}):[]:[]})[_0x1df6('0x1d')](function(_0x107144){logger[_0x1df6('0x17')](_0x1df6('0x1b'),_0x41388d);logger[_0x1df6('0x1e')](_0x1df6('0x1b'),_0x41388d,JSON[_0x1df6('0x18')](_0x107144));_0x585e25(_0x107144);})[_0x1df6('0x1f')](function(_0x3e8996){logger[_0x1df6('0x1a')](_0x1df6('0x1b'),_0x3e8996['message'],_0x41388d);_0x3a56a2(_0x20d454['error'](0x1f4,_0x3e8996['message']));});});};
\ No newline at end of file
+var _0x1152=['GetSquareProjects','SquareProject','findAll','options','raw','where','attributes','limit','include','map','model','then','info','debug','catch','error','message','find','ShowSquareProject','stringify','lodash','ioredis','../../mysqldb','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','./squareProject.socket','register'];(function(_0x29c2ac,_0x40e6d5){var _0x24ae63=function(_0x1b0e83){while(--_0x1b0e83){_0x29c2ac['push'](_0x29c2ac['shift']());}};_0x24ae63(++_0x40e6d5);}(_0x1152,0x169));var _0x2115=function(_0x3f737b,_0x1d1f8b){_0x3f737b=_0x3f737b-0x0;var _0x404f7c=_0x1152[_0x3f737b];return _0x404f7c;};'use strict';var _=require(_0x2115('0x0'));var Redis=require(_0x2115('0x1'));var db=require(_0x2115('0x2'))['db'];var logger=require('../../config/logger')(_0x2115('0x3'));var config=require(_0x2115('0x4'));config[_0x2115('0x5')]=_[_0x2115('0x6')](config[_0x2115('0x5')],{'host':_0x2115('0x7'),'port':0x18eb});var socket=require(_0x2115('0x8'))(new Redis(config[_0x2115('0x5')]));require(_0x2115('0x9'))[_0x2115('0xa')](socket);exports[_0x2115('0xb')]=function(_0x2e37e){var _0x23513b=this;return new Promise(function(_0x22f890,_0x54c5de){return db[_0x2115('0xc')][_0x2115('0xd')]({'raw':_0x2e37e[_0x2115('0xe')]?_0x2e37e[_0x2115('0xe')][_0x2115('0xf')]===undefined?!![]:![]:!![],'where':_0x2e37e[_0x2115('0xe')]?_0x2e37e['options'][_0x2115('0x10')]||null:null,'attributes':_0x2e37e['options']?_0x2e37e[_0x2115('0xe')][_0x2115('0x11')]||null:null,'limit':_0x2e37e[_0x2115('0xe')]?_0x2e37e[_0x2115('0xe')][_0x2115('0x12')]||null:null,'include':_0x2e37e[_0x2115('0xe')]?_0x2e37e[_0x2115('0xe')][_0x2115('0x13')]?_[_0x2115('0x14')](_0x2e37e[_0x2115('0xe')]['include'],function(_0xeac89a){return{'model':db[_0xeac89a[_0x2115('0x15')]],'as':_0xeac89a['as'],'attributes':_0xeac89a[_0x2115('0x11')],'include':_0xeac89a['include']?_['map'](_0xeac89a['include'],function(_0x481257){return{'model':db[_0x481257[_0x2115('0x15')]],'as':_0x481257['as'],'attributes':_0x481257[_0x2115('0x11')],'include':_0x481257[_0x2115('0x13')]?_[_0x2115('0x14')](_0x481257[_0x2115('0x13')],function(_0x167605){return{'model':db[_0x167605[_0x2115('0x15')]],'as':_0x167605['as'],'attributes':_0x167605[_0x2115('0x11')]};}):[]};}):[]};}):[]:[]})[_0x2115('0x16')](function(_0x505b83){logger[_0x2115('0x17')](_0x2115('0xb'),_0x2e37e);logger[_0x2115('0x18')](_0x2115('0xb'),_0x2e37e,JSON['stringify'](_0x505b83));_0x22f890(_0x505b83);})[_0x2115('0x19')](function(_0xf41647){logger[_0x2115('0x1a')](_0x2115('0xb'),_0xf41647['message'],_0x2e37e);_0x54c5de(_0x23513b[_0x2115('0x1a')](0x1f4,_0xf41647[_0x2115('0x1b')]));});});};exports['ShowSquareProject']=function(_0xc1bdcb){var _0x43c5c0=this;return new Promise(function(_0x52a471,_0xabbc0f){return db[_0x2115('0xc')][_0x2115('0x1c')]({'raw':_0xc1bdcb[_0x2115('0xe')]?_0xc1bdcb[_0x2115('0xe')]['raw']===undefined?!![]:![]:!![],'where':_0xc1bdcb[_0x2115('0xe')]?_0xc1bdcb['options']['where']||null:null,'attributes':_0xc1bdcb['options']?_0xc1bdcb[_0x2115('0xe')][_0x2115('0x11')]||null:null,'include':_0xc1bdcb['options']?_0xc1bdcb['options'][_0x2115('0x13')]?_[_0x2115('0x14')](_0xc1bdcb['options'][_0x2115('0x13')],function(_0xa02df){return{'model':db[_0xa02df[_0x2115('0x15')]],'as':_0xa02df['as'],'attributes':_0xa02df['attributes'],'include':_0xa02df['include']?_['map'](_0xa02df[_0x2115('0x13')],function(_0x32b38f){return{'model':db[_0x32b38f[_0x2115('0x15')]],'as':_0x32b38f['as'],'attributes':_0x32b38f[_0x2115('0x11')],'include':_0x32b38f[_0x2115('0x13')]?_[_0x2115('0x14')](_0x32b38f['include'],function(_0x414fb2){return{'model':db[_0x414fb2[_0x2115('0x15')]],'as':_0x414fb2['as'],'attributes':_0x414fb2[_0x2115('0x11')]};}):[]};}):[]};}):[]:[]})[_0x2115('0x16')](function(_0x3691a7){logger[_0x2115('0x17')](_0x2115('0x1d'),_0xc1bdcb);logger['debug']('ShowSquareProject',_0xc1bdcb,JSON[_0x2115('0x1e')](_0x3691a7));_0x52a471(_0x3691a7);})[_0x2115('0x19')](function(_0x1bcd1c){logger[_0x2115('0x1a')](_0x2115('0x1d'),_0x1bcd1c[_0x2115('0x1b')],_0xc1bdcb);_0xabbc0f(_0x43c5c0['error'](0x1f4,_0x1bcd1c[_0x2115('0x1b')]));});});};
\ No newline at end of file
index 51f3162..b56d7c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd55c=['save','update','emit','length','squareProject:'];(function(_0x2e4e19,_0x493b50){var _0x9ba20b=function(_0x2f6456){while(--_0x2f6456){_0x2e4e19['push'](_0x2e4e19['shift']());}};_0x9ba20b(++_0x493b50);}(_0xd55c,0xc3));var _0xcd55=function(_0x3f500d,_0x3c5abc){_0x3f500d=_0x3f500d-0x0;var _0x103d8b=_0xd55c[_0x3f500d];return _0x103d8b;};'use strict';var SquareProjectEvents=require('./squareProject.events');var events=[_0xcd55('0x0'),'remove',_0xcd55('0x1')];function createListener(_0xfb690c,_0x18a86e){return function(_0x825899){_0x18a86e[_0xcd55('0x2')](_0xfb690c,_0x825899);};}function removeListener(_0x1166e2,_0x3a9c21){return function(){SquareProjectEvents['removeListener'](_0x1166e2,_0x3a9c21);};}exports['register']=function(_0x5becad){for(var _0x47b3b6=0x0,_0x3ed512=events[_0xcd55('0x3')];_0x47b3b6<_0x3ed512;_0x47b3b6++){var _0x4cd265=events[_0x47b3b6];var _0x1d0fbe=createListener(_0xcd55('0x4')+_0x4cd265,_0x5becad);SquareProjectEvents['on'](_0x4cd265,_0x1d0fbe);}};
\ No newline at end of file
+var _0x27e9=['length','squareProject:','./squareProject.events','update','removeListener','register'];(function(_0x2f71f6,_0x3a1f4d){var _0x2b23ea=function(_0x285980){while(--_0x285980){_0x2f71f6['push'](_0x2f71f6['shift']());}};_0x2b23ea(++_0x3a1f4d);}(_0x27e9,0x80));var _0x927e=function(_0x143187,_0x17b527){_0x143187=_0x143187-0x0;var _0x55587d=_0x27e9[_0x143187];return _0x55587d;};'use strict';var SquareProjectEvents=require(_0x927e('0x0'));var events=['save','remove',_0x927e('0x1')];function createListener(_0x458a50,_0x23111e){return function(_0x2374b9){_0x23111e['emit'](_0x458a50,_0x2374b9);};}function removeListener(_0x1aa5a3,_0x1a05ff){return function(){SquareProjectEvents[_0x927e('0x2')](_0x1aa5a3,_0x1a05ff);};}exports[_0x927e('0x3')]=function(_0x396a82){for(var _0x8edc38=0x0,_0x189fe1=events[_0x927e('0x4')];_0x8edc38<_0x189fe1;_0x8edc38++){var _0x231fc9=events[_0x8edc38];var _0x53fe75=createListener(_0x927e('0x5')+_0x231fc9,_0x396a82);SquareProjectEvents['on'](_0x231fc9,_0x53fe75);}};
\ No newline at end of file
index f26bc88..18f312a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf494=['../../config/environment','./squareRecording.controller','get','isAuthenticated','index','show','/:id/download','download','post','create','/:id','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x33f1e9,_0x97b677){var _0x145304=function(_0x39f286){while(--_0x39f286){_0x33f1e9['push'](_0x33f1e9['shift']());}};_0x145304(++_0x97b677);}(_0xf494,0x1c6));var _0x4f49=function(_0x599429,_0x4825e1){_0x599429=_0x599429-0x0;var _0x34724c=_0xf494[_0x599429];return _0x34724c;};'use strict';var multer=require(_0x4f49('0x0'));var util=require(_0x4f49('0x1'));var path=require(_0x4f49('0x2'));var timeout=require('connect-timeout');var express=require(_0x4f49('0x3'));var router=express[_0x4f49('0x4')]();var fs_extra=require(_0x4f49('0x5'));var auth=require(_0x4f49('0x6'));var interaction=require(_0x4f49('0x7'));var config=require(_0x4f49('0x8'));var controller=require(_0x4f49('0x9'));router[_0x4f49('0xa')]('/',auth[_0x4f49('0xb')](),controller[_0x4f49('0xc')]);router[_0x4f49('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x4f49('0xd')]);router[_0x4f49('0xa')](_0x4f49('0xe'),auth[_0x4f49('0xb')](),controller[_0x4f49('0xf')]);router[_0x4f49('0x10')]('/',auth[_0x4f49('0xb')](),controller[_0x4f49('0x11')]);router['put'](_0x4f49('0x12'),auth[_0x4f49('0xb')](),controller['update']);router[_0x4f49('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x4f49('0x14')]);module[_0x4f49('0x15')]=router;
\ No newline at end of file
+var _0x0295=['isAuthenticated','index','post','create','put','/:id','update','delete','destroy','exports','multer','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get'];(function(_0x35885a,_0x42fed7){var _0xe86249=function(_0x98edb3){while(--_0x98edb3){_0x35885a['push'](_0x35885a['shift']());}};_0xe86249(++_0x42fed7);}(_0x0295,0x1f0));var _0x5029=function(_0x4baae3,_0x5f0235){_0x4baae3=_0x4baae3-0x0;var _0x454819=_0x0295[_0x4baae3];return _0x454819;};'use strict';var multer=require(_0x5029('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x5029('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5029('0x2'));var auth=require(_0x5029('0x3'));var interaction=require(_0x5029('0x4'));var config=require(_0x5029('0x5'));var controller=require(_0x5029('0x6'));router[_0x5029('0x7')]('/',auth[_0x5029('0x8')](),controller[_0x5029('0x9')]);router[_0x5029('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x5029('0x7')]('/:id/download',auth[_0x5029('0x8')](),controller['download']);router[_0x5029('0xa')]('/',auth['isAuthenticated'](),controller[_0x5029('0xb')]);router[_0x5029('0xc')](_0x5029('0xd'),auth['isAuthenticated'](),controller[_0x5029('0xe')]);router[_0x5029('0xf')](_0x5029('0xd'),auth['isAuthenticated'](),controller[_0x5029('0x10')]);module[_0x5029('0x11')]=router;
\ No newline at end of file
index 4f8ef37..773a036 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eea=['getDataValue','substring','sequelize','STRING'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x3eea,0x1ca));var _0xa3ee=function(_0x2dd2a1,_0x5d3cbd){_0x2dd2a1=_0x2dd2a1-0x0;var _0x346d38=_0x3eea[_0x2dd2a1];return _0x346d38;};'use strict';var Sequelize=require(_0xa3ee('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xa3ee('0x1')]},'callerid':{'type':Sequelize[_0xa3ee('0x1')]},'calleridname':{'type':Sequelize[_0xa3ee('0x1')]},'context':{'type':Sequelize[_0xa3ee('0x1')]},'extension':{'type':Sequelize[_0xa3ee('0x1')]},'priority':{'type':Sequelize[_0xa3ee('0x1')]},'accountcode':{'type':Sequelize[_0xa3ee('0x1')]},'dnid':{'type':Sequelize[_0xa3ee('0x1')]},'projectName':{'type':Sequelize[_0xa3ee('0x1')]},'saveName':{'type':Sequelize[_0xa3ee('0x1')]},'filename':{'type':Sequelize[_0xa3ee('0x1')]},'savePath':{'type':Sequelize['STRING']},'format':{'type':Sequelize['VIRTUAL'],'get':function(){var _0x4183ee='';var _0x4e4588=this[_0xa3ee('0x2')]('savePath');if(_0x4e4588){_0x4183ee=_0x4e4588[_0xa3ee('0x3')](_0x4e4588['lastIndexOf']('.'));}return _0x4183ee;}}};
\ No newline at end of file
+var _0x8d0e=['exports','STRING','VIRTUAL','getDataValue','savePath','substring','lastIndexOf','sequelize'];(function(_0x6562c8,_0x33737a){var _0x5aeca7=function(_0x38ca9a){while(--_0x38ca9a){_0x6562c8['push'](_0x6562c8['shift']());}};_0x5aeca7(++_0x33737a);}(_0x8d0e,0x1d7));var _0xe8d0=function(_0x3d25cd,_0x17c651){_0x3d25cd=_0x3d25cd-0x0;var _0x5ef5df=_0x8d0e[_0x3d25cd];return _0x5ef5df;};'use strict';var Sequelize=require(_0xe8d0('0x0'));module[_0xe8d0('0x1')]={'uniqueid':{'type':Sequelize[_0xe8d0('0x2')]},'callerid':{'type':Sequelize[_0xe8d0('0x2')]},'calleridname':{'type':Sequelize[_0xe8d0('0x2')]},'context':{'type':Sequelize[_0xe8d0('0x2')]},'extension':{'type':Sequelize[_0xe8d0('0x2')]},'priority':{'type':Sequelize[_0xe8d0('0x2')]},'accountcode':{'type':Sequelize[_0xe8d0('0x2')]},'dnid':{'type':Sequelize['STRING']},'projectName':{'type':Sequelize[_0xe8d0('0x2')]},'saveName':{'type':Sequelize['STRING']},'filename':{'type':Sequelize['STRING']},'savePath':{'type':Sequelize[_0xe8d0('0x2')]},'format':{'type':Sequelize[_0xe8d0('0x3')],'get':function(){var _0x469d37='';var _0xcc03d0=this[_0xe8d0('0x4')](_0xe8d0('0x5'));if(_0xcc03d0){_0x469d37=_0xcc03d0[_0xe8d0('0x6')](_0xcc03d0[_0xe8d0('0x7')]('.'));}return _0x469d37;}}};
\ No newline at end of file
index c9b9f11..6acd8c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2dd=['zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','stack','name','send','index','map','rawAttributes','fieldName','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','SquareRecording','includeAll','findAll','rows','catch','show','keys','create','body','find','download','../../components/encryptor','uniqueid','params','filename','format','%s.cypher','existsSync','decryptFile','Sequelize','SquareRecording\x20not\x20found','extname','unlink','Not\x20found','isNil','info','cancellazione\x20fisica\x20documento\x20%s','savePath','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','destroy','rimraf'];(function(_0x3d1b2e,_0x96fc28){var _0x356693=function(_0x4a3b87){while(--_0x4a3b87){_0x3d1b2e['push'](_0x3d1b2e['shift']());}};_0x356693(++_0x96fc28);}(_0xb2dd,0x17f));var _0xdb2d=function(_0xd034c8,_0x4b5fbe){_0xd034c8=_0xd034c8-0x0;var _0x37c283=_0xb2dd[_0xd034c8];return _0x37c283;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdb2d('0x0'));var zipdir=require(_0xdb2d('0x1'));var jsonpatch=require(_0xdb2d('0x2'));var rp=require('request-promise');var moment=require(_0xdb2d('0x3'));var BPromise=require(_0xdb2d('0x4'));var Mustache=require('mustache');var util=require(_0xdb2d('0x5'));var path=require(_0xdb2d('0x6'));var sox=require('sox');var csv=require(_0xdb2d('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdb2d('0x8'));var _=require(_0xdb2d('0x9'));var squel=require(_0xdb2d('0xa'));var crypto=require(_0xdb2d('0xb'));var jsforce=require(_0xdb2d('0xc'));var deskjs=require(_0xdb2d('0xd'));var toCsv=require(_0xdb2d('0x7'));var querystring=require('querystring');var Papa=require(_0xdb2d('0xe'));var Redis=require(_0xdb2d('0xf'));var authService=require(_0xdb2d('0x10'));var qs=require(_0xdb2d('0x11'));var as=require(_0xdb2d('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xdb2d('0x13'))(_0xdb2d('0x14'));var utils=require(_0xdb2d('0x15'));var config=require(_0xdb2d('0x16'));var licenseUtil=require(_0xdb2d('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x12f1b4,_0x38668f){_0x38668f=_0x38668f||0xcc;return function(_0x31df6a){if(_0x31df6a){return _0x12f1b4[_0xdb2d('0x18')](_0x38668f);}return _0x12f1b4[_0xdb2d('0x19')](_0x38668f)[_0xdb2d('0x1a')]();};}function respondWithResult(_0x16ea04,_0x865a4a){_0x865a4a=_0x865a4a||0xc8;return function(_0x103d1c){if(_0x103d1c){return _0x16ea04['status'](_0x865a4a)[_0xdb2d('0x1b')](_0x103d1c);}};}function respondWithFilteredResult(_0x5ceda3,_0x1ae924){return function(_0xa7efb7){if(_0xa7efb7){var _0x3e9065=typeof _0x1ae924[_0xdb2d('0x1c')]===_0xdb2d('0x1d')&&typeof _0x1ae924[_0xdb2d('0x1e')]===_0xdb2d('0x1d');var _0x2d2e76=_0xa7efb7[_0xdb2d('0x1f')];var _0x497095=_0x3e9065?0x0:_0x1ae924[_0xdb2d('0x1c')];var _0x10c14b=_0x3e9065?_0xa7efb7['count']:_0x1ae924[_0xdb2d('0x1c')]+_0x1ae924[_0xdb2d('0x1e')];var _0x17ee95;if(_0x10c14b>=_0x2d2e76){_0x10c14b=_0x2d2e76;_0x17ee95=0xc8;}else{_0x17ee95=0xce;}_0x5ceda3[_0xdb2d('0x19')](_0x17ee95);return _0x5ceda3[_0xdb2d('0x20')](_0xdb2d('0x21'),_0x497095+'-'+_0x10c14b+'/'+_0x2d2e76)[_0xdb2d('0x1b')](_0xa7efb7);}return null;};}function patchUpdates(_0x352a0e){return function(_0x48f0c5){try{jsonpatch['apply'](_0x48f0c5,_0x352a0e,!![]);}catch(_0x5791ff){return BPromise[_0xdb2d('0x22')](_0x5791ff);}return _0x48f0c5[_0xdb2d('0x23')]();};}function saveUpdates(_0x5706aa,_0x54b64b){return function(_0x2ba3f1){if(_0x2ba3f1){return _0x2ba3f1[_0xdb2d('0x24')](_0x5706aa)[_0xdb2d('0x25')](function(_0x3405c3){return _0x3405c3;});}return null;};}function removeEntity(_0x450cad,_0x5bf925){return function(_0x3300c4){if(_0x3300c4){return _0x3300c4['destroy']()['then'](function(){_0x450cad[_0xdb2d('0x19')](0xcc)[_0xdb2d('0x1a')]();});}};}function handleEntityNotFound(_0x550c8b,_0x374444){return function(_0x3fbc6c){if(!_0x3fbc6c){_0x550c8b[_0xdb2d('0x18')](0x194);}return _0x3fbc6c;};}function handleError(_0x568f07,_0x1fc918){_0x1fc918=_0x1fc918||0x1f4;return function(_0x174e01){logger['error'](_0x174e01[_0xdb2d('0x26')]);if(_0x174e01[_0xdb2d('0x27')]){delete _0x174e01[_0xdb2d('0x27')];}_0x568f07[_0xdb2d('0x19')](_0x1fc918)[_0xdb2d('0x28')](_0x174e01);};}exports[_0xdb2d('0x29')]=function(_0x3ea693,_0x4d0af6){var _0x2271cb={},_0x331420={},_0xbf4ff={'count':0x0,'rows':[]};var _0x325986=_[_0xdb2d('0x2a')](db['SquareRecording'][_0xdb2d('0x2b')],function(_0x2f59a6){return{'name':_0x2f59a6[_0xdb2d('0x2c')],'type':_0x2f59a6['type']['key']};});_0x331420[_0xdb2d('0x2d')]=_[_0xdb2d('0x2a')](_0x325986,_0xdb2d('0x27'));_0x331420[_0xdb2d('0x2e')]=_['keys'](_0x3ea693[_0xdb2d('0x2e')]);_0x331420[_0xdb2d('0x2f')]=_['intersection'](_0x331420[_0xdb2d('0x2d')],_0x331420['query']);_0x2271cb[_0xdb2d('0x30')]=_[_0xdb2d('0x31')](_0x331420[_0xdb2d('0x2d')],qs[_0xdb2d('0x32')](_0x3ea693[_0xdb2d('0x2e')]['fields']));_0x2271cb[_0xdb2d('0x30')]=_0x2271cb[_0xdb2d('0x30')][_0xdb2d('0x33')]?_0x2271cb['attributes']:_0x331420[_0xdb2d('0x2d')];if(!_0x3ea693[_0xdb2d('0x2e')][_0xdb2d('0x34')](_0xdb2d('0x35'))){_0x2271cb['limit']=qs[_0xdb2d('0x1e')](_0x3ea693[_0xdb2d('0x2e')][_0xdb2d('0x1e')]);_0x2271cb[_0xdb2d('0x1c')]=qs[_0xdb2d('0x1c')](_0x3ea693['query'][_0xdb2d('0x1c')]);}_0x2271cb[_0xdb2d('0x36')]=qs[_0xdb2d('0x37')](_0x3ea693[_0xdb2d('0x2e')]['sort']);_0x2271cb[_0xdb2d('0x38')]=qs[_0xdb2d('0x2f')](_[_0xdb2d('0x39')](_0x3ea693[_0xdb2d('0x2e')],_0x331420['filters']),_0x325986);if(_0x3ea693['query'][_0xdb2d('0x3a')]){_0x2271cb['where']=_[_0xdb2d('0x3b')](_0x2271cb['where'],{'$or':_[_0xdb2d('0x2a')](_0x325986,function(_0x3ec91d){if(_0x3ec91d[_0xdb2d('0x3c')]!==_0xdb2d('0x3d')){var _0x2222f9={};_0x2222f9[_0x3ec91d[_0xdb2d('0x27')]]={'$like':'%'+_0x3ea693[_0xdb2d('0x2e')]['filter']+'%'};return _0x2222f9;}})});}_0x2271cb=_[_0xdb2d('0x3b')]({},_0x2271cb,_0x3ea693[_0xdb2d('0x3e')]);var _0x11164e={'where':_0x2271cb['where']};return db[_0xdb2d('0x3f')][_0xdb2d('0x1f')](_0x11164e)[_0xdb2d('0x25')](function(_0x25eeb9){_0xbf4ff['count']=_0x25eeb9;if(_0x3ea693[_0xdb2d('0x2e')][_0xdb2d('0x40')]){_0x2271cb['include']=[{'all':!![]}];}return db[_0xdb2d('0x3f')][_0xdb2d('0x41')](_0x2271cb);})['then'](function(_0x3a40ba){_0xbf4ff[_0xdb2d('0x42')]=_0x3a40ba;return _0xbf4ff;})[_0xdb2d('0x25')](respondWithFilteredResult(_0x4d0af6,_0x2271cb))[_0xdb2d('0x43')](handleError(_0x4d0af6,null));};exports[_0xdb2d('0x44')]=function(_0x30dd2b,_0x1f0a14){var _0x463e62={'raw':!![],'where':{'id':_0x30dd2b['params']['id']}},_0x37172a={};_0x37172a[_0xdb2d('0x2d')]=_[_0xdb2d('0x45')](db[_0xdb2d('0x3f')][_0xdb2d('0x2b')]);_0x37172a[_0xdb2d('0x2e')]=_[_0xdb2d('0x45')](_0x30dd2b[_0xdb2d('0x2e')]);_0x37172a[_0xdb2d('0x2f')]=_['intersection'](_0x37172a[_0xdb2d('0x2d')],_0x37172a[_0xdb2d('0x2e')]);_0x463e62[_0xdb2d('0x30')]=_[_0xdb2d('0x31')](_0x37172a[_0xdb2d('0x2d')],qs[_0xdb2d('0x32')](_0x30dd2b['query'][_0xdb2d('0x32')]));_0x463e62[_0xdb2d('0x30')]=_0x463e62[_0xdb2d('0x30')][_0xdb2d('0x33')]?_0x463e62['attributes']:_0x37172a['model'];if(_0x30dd2b['query'][_0xdb2d('0x40')]){_0x463e62['include']=[{'all':!![]}];}_0x463e62=_[_0xdb2d('0x3b')]({},_0x463e62,_0x30dd2b[_0xdb2d('0x3e')]);return db[_0xdb2d('0x3f')]['find'](_0x463e62)[_0xdb2d('0x25')](handleEntityNotFound(_0x1f0a14,null))[_0xdb2d('0x25')](respondWithResult(_0x1f0a14,null))[_0xdb2d('0x43')](handleError(_0x1f0a14,null));};exports[_0xdb2d('0x46')]=function(_0x3568c6,_0x55fde9){return db['SquareRecording'][_0xdb2d('0x46')](_0x3568c6[_0xdb2d('0x47')],{})[_0xdb2d('0x25')](respondWithResult(_0x55fde9,0xc9))[_0xdb2d('0x43')](handleError(_0x55fde9,null));};exports['update']=function(_0x15db51,_0x1da539){if(_0x15db51[_0xdb2d('0x47')]['id']){delete _0x15db51['body']['id'];}return db['SquareRecording'][_0xdb2d('0x48')]({'where':{'id':_0x15db51['params']['id']}})[_0xdb2d('0x25')](handleEntityNotFound(_0x1da539,null))[_0xdb2d('0x25')](saveUpdates(_0x15db51['body'],null))['then'](respondWithResult(_0x1da539,null))['catch'](handleError(_0x1da539,null));};exports[_0xdb2d('0x49')]=function(_0x2e3bea,_0xedf220,_0x322026){var _0x23b86e=require(_0xdb2d('0x4a'));var _0x4d5d38=![];var _0x54d25d={};if(_0x2e3bea[_0xdb2d('0x2e')][_0xdb2d('0x3c')]&&_0x2e3bea['query'][_0xdb2d('0x3c')]===_0xdb2d('0x4b')){_0x54d25d[_0xdb2d('0x4b')]=_0x2e3bea[_0xdb2d('0x4c')]['id'];}else{_0x54d25d['id']=_0x2e3bea['params']['id'];}return db[_0xdb2d('0x3f')][_0xdb2d('0x48')]({'where':_0x54d25d,'attributes':['id','savePath',_0xdb2d('0x4d')],'raw':!![]})[_0xdb2d('0x25')](handleEntityNotFound(_0xedf220,null))['then'](function(_0x187c35){if(_0x187c35){var _0x5cb73b=_0x187c35['savePath'];var _0x3043a4=util[_0xdb2d('0x4e')](_0xdb2d('0x4f'),_0x5cb73b);if(fs[_0xdb2d('0x50')](_0x3043a4)){_0x4d5d38=!![];return _0x23b86e[_0xdb2d('0x51')](_0x3043a4,_0x5cb73b,config['secrets']['recording'])[_0xdb2d('0x25')](function(){return _0x187c35;});}return _0x187c35;}})[_0xdb2d('0x25')](function(_0x452ac8){if(_0x452ac8){var _0x25eb8f=_0x452ac8['savePath'];if(!fs[_0xdb2d('0x50')](_0x25eb8f)){throw new db[(_0xdb2d('0x52'))]['ValidationError'](_0xdb2d('0x53'));}if(_0x452ac8['filename']){return _0xedf220[_0xdb2d('0x49')](_0x25eb8f,_0x452ac8[_0xdb2d('0x4d')]+path[_0xdb2d('0x54')](_0x25eb8f),function(){if(_0x4d5d38){fs[_0xdb2d('0x55')](_0x25eb8f);}});}else{return _0xedf220[_0xdb2d('0x49')](_0x25eb8f,function(_0x2197ba){if(_0x4d5d38){fs['unlink'](_0x25eb8f);}});}}})[_0xdb2d('0x43')](function(_0x4db445){if(_0x4db445['message']===_0xdb2d('0x53')){_0xedf220['status'](0x194)['send'](_0xdb2d('0x56'));}else{return handleError(_0xedf220,null);}});};exports['destroy']=function(_0x4187ac,_0x44227f){return db[_0xdb2d('0x3f')][_0xdb2d('0x48')]({'where':{'id':_0x4187ac[_0xdb2d('0x4c')]['id']}})[_0xdb2d('0x25')](function(_0x137ffd){if(_[_0xdb2d('0x57')](_0x137ffd)){throw new ReferenceError('Entity\x20not\x20found');}return _0x137ffd;})[_0xdb2d('0x25')](function(_0x5404f0){var _0x38406e=_0x5404f0['savePath'];logger[_0xdb2d('0x58')](_0xdb2d('0x59'),_0x38406e);if(!_[_0xdb2d('0x57')](_0x5404f0[_0xdb2d('0x5a')])&&fs[_0xdb2d('0x50')](_0x38406e)){logger[_0xdb2d('0x58')](_0xdb2d('0x5b')+_0x38406e+_0xdb2d('0x5c'));fs[_0xdb2d('0x5d')](_0x38406e);}_0x38406e=_0x38406e+_0xdb2d('0x5e');if(!_[_0xdb2d('0x57')](_0x5404f0['savePath'])&&fs[_0xdb2d('0x50')](_0x38406e)){logger['info'](_0xdb2d('0x5b')+_0x38406e+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xdb2d('0x5d')](_0x38406e);}return _0x5404f0;})['then'](function(_0x980ad3){if(!_0x980ad3)throw new InternalError();return _0x980ad3[_0xdb2d('0x5f')]();})[_0xdb2d('0x25')](function(){_0x44227f['status'](0xcc)[_0xdb2d('0x1a')]();})['catch'](handleError(_0x44227f,null));};
\ No newline at end of file
+var _0xfafa=['message','Not\x20found','isNil','Entity\x20not\x20found','File:\x20\x22','unlinkSync','.cypher','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','count','set','apply','save','update','then','destroy','sendStatus','error','stack','name','send','fieldName','type','map','query','keys','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','offset','sort','filters','pick','filter','where','VIRTUAL','merge','options','include','rows','show','params','SquareRecording','rawAttributes','catch','create','body','find','download','../../components/encryptor','uniqueid','savePath','%s.cypher','existsSync','decryptFile','recording','Sequelize','ValidationError','SquareRecording\x20not\x20found','filename','unlink'];(function(_0x2bcc3b,_0x2f6cb5){var _0x38f336=function(_0x1e8d3d){while(--_0x1e8d3d){_0x2bcc3b['push'](_0x2bcc3b['shift']());}};_0x38f336(++_0x2f6cb5);}(_0xfafa,0x173));var _0xafaf=function(_0x771ce7,_0x58454a){_0x771ce7=_0x771ce7-0x0;var _0x5a4b77=_0xfafa[_0x771ce7];return _0x5a4b77;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xafaf('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xafaf('0x1'));var rp=require('request-promise');var moment=require(_0xafaf('0x2'));var BPromise=require(_0xafaf('0x3'));var Mustache=require(_0xafaf('0x4'));var util=require(_0xafaf('0x5'));var path=require(_0xafaf('0x6'));var sox=require(_0xafaf('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xafaf('0x8'));var _=require(_0xafaf('0x9'));var squel=require(_0xafaf('0xa'));var crypto=require('crypto');var jsforce=require(_0xafaf('0xb'));var deskjs=require(_0xafaf('0xc'));var toCsv=require('to-csv');var querystring=require(_0xafaf('0xd'));var Papa=require(_0xafaf('0xe'));var Redis=require(_0xafaf('0xf'));var authService=require(_0xafaf('0x10'));var qs=require(_0xafaf('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xafaf('0x12'));var logger=require(_0xafaf('0x13'))('api');var utils=require('../../config/utils');var config=require(_0xafaf('0x14'));var licenseUtil=require(_0xafaf('0x15'));var db=require(_0xafaf('0x16'))['db'];function respondWithStatusCode(_0x4fa0af,_0x19f042){_0x19f042=_0x19f042||0xcc;return function(_0x23bcfd){if(_0x23bcfd){return _0x4fa0af['sendStatus'](_0x19f042);}return _0x4fa0af[_0xafaf('0x17')](_0x19f042)[_0xafaf('0x18')]();};}function respondWithResult(_0x440050,_0x1e4225){_0x1e4225=_0x1e4225||0xc8;return function(_0x30ddde){if(_0x30ddde){return _0x440050[_0xafaf('0x17')](_0x1e4225)[_0xafaf('0x19')](_0x30ddde);}};}function respondWithFilteredResult(_0x317096,_0x3e67cf){return function(_0x1da555){if(_0x1da555){var _0x31785c=typeof _0x3e67cf['offset']===_0xafaf('0x1a')&&typeof _0x3e67cf['limit']===_0xafaf('0x1a');var _0x8031b7=_0x1da555[_0xafaf('0x1b')];var _0x1b931e=_0x31785c?0x0:_0x3e67cf['offset'];var _0xb8d816=_0x31785c?_0x1da555[_0xafaf('0x1b')]:_0x3e67cf['offset']+_0x3e67cf['limit'];var _0x474ca0;if(_0xb8d816>=_0x8031b7){_0xb8d816=_0x8031b7;_0x474ca0=0xc8;}else{_0x474ca0=0xce;}_0x317096[_0xafaf('0x17')](_0x474ca0);return _0x317096[_0xafaf('0x1c')]('Content-Range',_0x1b931e+'-'+_0xb8d816+'/'+_0x8031b7)[_0xafaf('0x19')](_0x1da555);}return null;};}function patchUpdates(_0x42de14){return function(_0x55f4ab){try{jsonpatch[_0xafaf('0x1d')](_0x55f4ab,_0x42de14,!![]);}catch(_0x3cc690){return BPromise['reject'](_0x3cc690);}return _0x55f4ab[_0xafaf('0x1e')]();};}function saveUpdates(_0x28f5fb,_0x493b72){return function(_0xc909c7){if(_0xc909c7){return _0xc909c7[_0xafaf('0x1f')](_0x28f5fb)[_0xafaf('0x20')](function(_0x373141){return _0x373141;});}return null;};}function removeEntity(_0x14eb02,_0x535251){return function(_0x1c8d41){if(_0x1c8d41){return _0x1c8d41[_0xafaf('0x21')]()[_0xafaf('0x20')](function(){_0x14eb02[_0xafaf('0x17')](0xcc)[_0xafaf('0x18')]();});}};}function handleEntityNotFound(_0x2c0c8a,_0x34df2f){return function(_0xbfdd5d){if(!_0xbfdd5d){_0x2c0c8a[_0xafaf('0x22')](0x194);}return _0xbfdd5d;};}function handleError(_0x477cb6,_0x50ba64){_0x50ba64=_0x50ba64||0x1f4;return function(_0x4a6473){logger[_0xafaf('0x23')](_0x4a6473[_0xafaf('0x24')]);if(_0x4a6473[_0xafaf('0x25')]){delete _0x4a6473[_0xafaf('0x25')];}_0x477cb6[_0xafaf('0x17')](_0x50ba64)[_0xafaf('0x26')](_0x4a6473);};}exports['index']=function(_0x554d0f,_0x3d5a01){var _0x2eb71b={},_0x247684={},_0x45a72a={'count':0x0,'rows':[]};var _0x129522=_['map'](db['SquareRecording']['rawAttributes'],function(_0x18b705){return{'name':_0x18b705[_0xafaf('0x27')],'type':_0x18b705[_0xafaf('0x28')]['key']};});_0x247684['model']=_[_0xafaf('0x29')](_0x129522,_0xafaf('0x25'));_0x247684[_0xafaf('0x2a')]=_[_0xafaf('0x2b')](_0x554d0f['query']);_0x247684['filters']=_['intersection'](_0x247684[_0xafaf('0x2c')],_0x247684[_0xafaf('0x2a')]);_0x2eb71b[_0xafaf('0x2d')]=_[_0xafaf('0x2e')](_0x247684[_0xafaf('0x2c')],qs[_0xafaf('0x2f')](_0x554d0f[_0xafaf('0x2a')]['fields']));_0x2eb71b['attributes']=_0x2eb71b['attributes'][_0xafaf('0x30')]?_0x2eb71b[_0xafaf('0x2d')]:_0x247684[_0xafaf('0x2c')];if(!_0x554d0f[_0xafaf('0x2a')][_0xafaf('0x31')](_0xafaf('0x32'))){_0x2eb71b[_0xafaf('0x33')]=qs[_0xafaf('0x33')](_0x554d0f[_0xafaf('0x2a')][_0xafaf('0x33')]);_0x2eb71b[_0xafaf('0x34')]=qs[_0xafaf('0x34')](_0x554d0f['query'][_0xafaf('0x34')]);}_0x2eb71b['order']=qs['sort'](_0x554d0f['query'][_0xafaf('0x35')]);_0x2eb71b['where']=qs[_0xafaf('0x36')](_[_0xafaf('0x37')](_0x554d0f[_0xafaf('0x2a')],_0x247684['filters']),_0x129522);if(_0x554d0f[_0xafaf('0x2a')][_0xafaf('0x38')]){_0x2eb71b[_0xafaf('0x39')]=_['merge'](_0x2eb71b[_0xafaf('0x39')],{'$or':_[_0xafaf('0x29')](_0x129522,function(_0x5bf1ae){if(_0x5bf1ae[_0xafaf('0x28')]!==_0xafaf('0x3a')){var _0x29db0b={};_0x29db0b[_0x5bf1ae['name']]={'$like':'%'+_0x554d0f['query'][_0xafaf('0x38')]+'%'};return _0x29db0b;}})});}_0x2eb71b=_[_0xafaf('0x3b')]({},_0x2eb71b,_0x554d0f[_0xafaf('0x3c')]);var _0xf5803f={'where':_0x2eb71b['where']};return db['SquareRecording'][_0xafaf('0x1b')](_0xf5803f)[_0xafaf('0x20')](function(_0x1da004){_0x45a72a['count']=_0x1da004;if(_0x554d0f['query']['includeAll']){_0x2eb71b[_0xafaf('0x3d')]=[{'all':!![]}];}return db['SquareRecording']['findAll'](_0x2eb71b);})['then'](function(_0x29c69c){_0x45a72a[_0xafaf('0x3e')]=_0x29c69c;return _0x45a72a;})[_0xafaf('0x20')](respondWithFilteredResult(_0x3d5a01,_0x2eb71b))['catch'](handleError(_0x3d5a01,null));};exports[_0xafaf('0x3f')]=function(_0x20be68,_0x207de4){var _0x476cbd={'raw':!![],'where':{'id':_0x20be68[_0xafaf('0x40')]['id']}},_0x24e141={};_0x24e141[_0xafaf('0x2c')]=_['keys'](db[_0xafaf('0x41')][_0xafaf('0x42')]);_0x24e141[_0xafaf('0x2a')]=_['keys'](_0x20be68[_0xafaf('0x2a')]);_0x24e141['filters']=_[_0xafaf('0x2e')](_0x24e141[_0xafaf('0x2c')],_0x24e141[_0xafaf('0x2a')]);_0x476cbd['attributes']=_[_0xafaf('0x2e')](_0x24e141[_0xafaf('0x2c')],qs[_0xafaf('0x2f')](_0x20be68[_0xafaf('0x2a')][_0xafaf('0x2f')]));_0x476cbd[_0xafaf('0x2d')]=_0x476cbd[_0xafaf('0x2d')][_0xafaf('0x30')]?_0x476cbd[_0xafaf('0x2d')]:_0x24e141[_0xafaf('0x2c')];if(_0x20be68[_0xafaf('0x2a')]['includeAll']){_0x476cbd[_0xafaf('0x3d')]=[{'all':!![]}];}_0x476cbd=_[_0xafaf('0x3b')]({},_0x476cbd,_0x20be68['options']);return db[_0xafaf('0x41')]['find'](_0x476cbd)[_0xafaf('0x20')](handleEntityNotFound(_0x207de4,null))[_0xafaf('0x20')](respondWithResult(_0x207de4,null))[_0xafaf('0x43')](handleError(_0x207de4,null));};exports[_0xafaf('0x44')]=function(_0x79bb99,_0x55de8e){return db[_0xafaf('0x41')][_0xafaf('0x44')](_0x79bb99[_0xafaf('0x45')],{})[_0xafaf('0x20')](respondWithResult(_0x55de8e,0xc9))['catch'](handleError(_0x55de8e,null));};exports[_0xafaf('0x1f')]=function(_0x17b07b,_0x9c197a){if(_0x17b07b['body']['id']){delete _0x17b07b['body']['id'];}return db[_0xafaf('0x41')][_0xafaf('0x46')]({'where':{'id':_0x17b07b[_0xafaf('0x40')]['id']}})[_0xafaf('0x20')](handleEntityNotFound(_0x9c197a,null))[_0xafaf('0x20')](saveUpdates(_0x17b07b[_0xafaf('0x45')],null))[_0xafaf('0x20')](respondWithResult(_0x9c197a,null))[_0xafaf('0x43')](handleError(_0x9c197a,null));};exports[_0xafaf('0x47')]=function(_0x50cda6,_0x1ba154,_0x48bace){var _0x17b6ba=require(_0xafaf('0x48'));var _0x1a091c=![];var _0x541f2b={};if(_0x50cda6[_0xafaf('0x2a')][_0xafaf('0x28')]&&_0x50cda6[_0xafaf('0x2a')][_0xafaf('0x28')]===_0xafaf('0x49')){_0x541f2b[_0xafaf('0x49')]=_0x50cda6[_0xafaf('0x40')]['id'];}else{_0x541f2b['id']=_0x50cda6[_0xafaf('0x40')]['id'];}return db['SquareRecording'][_0xafaf('0x46')]({'where':_0x541f2b,'attributes':['id',_0xafaf('0x4a'),'filename'],'raw':!![]})['then'](handleEntityNotFound(_0x1ba154,null))[_0xafaf('0x20')](function(_0x192076){if(_0x192076){var _0x14b309=_0x192076[_0xafaf('0x4a')];var _0x5e81c1=util['format'](_0xafaf('0x4b'),_0x14b309);if(fs[_0xafaf('0x4c')](_0x5e81c1)){_0x1a091c=!![];return _0x17b6ba[_0xafaf('0x4d')](_0x5e81c1,_0x14b309,config['secrets'][_0xafaf('0x4e')])['then'](function(){return _0x192076;});}return _0x192076;}})[_0xafaf('0x20')](function(_0x14ef04){if(_0x14ef04){var _0x33f3ff=_0x14ef04['savePath'];if(!fs[_0xafaf('0x4c')](_0x33f3ff)){throw new db[(_0xafaf('0x4f'))][(_0xafaf('0x50'))](_0xafaf('0x51'));}if(_0x14ef04[_0xafaf('0x52')]){return _0x1ba154[_0xafaf('0x47')](_0x33f3ff,_0x14ef04[_0xafaf('0x52')]+path['extname'](_0x33f3ff),function(){if(_0x1a091c){fs[_0xafaf('0x53')](_0x33f3ff);}});}else{return _0x1ba154[_0xafaf('0x47')](_0x33f3ff,function(_0x1653d0){if(_0x1a091c){fs[_0xafaf('0x53')](_0x33f3ff);}});}}})[_0xafaf('0x43')](function(_0x47822e){if(_0x47822e[_0xafaf('0x54')]===_0xafaf('0x51')){_0x1ba154[_0xafaf('0x17')](0x194)['send'](_0xafaf('0x55'));}else{return handleError(_0x1ba154,null);}});};exports[_0xafaf('0x21')]=function(_0x5e9ca9,_0x3d75c7){return db[_0xafaf('0x41')][_0xafaf('0x46')]({'where':{'id':_0x5e9ca9[_0xafaf('0x40')]['id']}})[_0xafaf('0x20')](function(_0x4e9685){if(_[_0xafaf('0x56')](_0x4e9685)){throw new ReferenceError(_0xafaf('0x57'));}return _0x4e9685;})[_0xafaf('0x20')](function(_0x513785){var _0x323867=_0x513785[_0xafaf('0x4a')];logger['info']('cancellazione\x20fisica\x20documento\x20%s',_0x323867);if(!_[_0xafaf('0x56')](_0x513785[_0xafaf('0x4a')])&&fs[_0xafaf('0x4c')](_0x323867)){logger['info'](_0xafaf('0x58')+_0x323867+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xafaf('0x59')](_0x323867);}_0x323867=_0x323867+_0xafaf('0x5a');if(!_['isNil'](_0x513785[_0xafaf('0x4a')])&&fs[_0xafaf('0x4c')](_0x323867)){logger['info'](_0xafaf('0x58')+_0x323867+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x323867);}return _0x513785;})[_0xafaf('0x20')](function(_0x226e1d){if(!_0x226e1d)throw new InternalError();return _0x226e1d[_0xafaf('0x21')]();})[_0xafaf('0x20')](function(){_0x3d75c7[_0xafaf('0x17')](0xcc)[_0xafaf('0x18')]();})[_0xafaf('0x43')](handleError(_0x3d75c7,null));};
\ No newline at end of file
index 2d099e7..55cdb8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a6d=['util','api','moment','bluebird','request-promise','path','../../config/environment','./squareRecording.attributes','exports','define','square_recordings','lodash'];(function(_0xc6be3a,_0x540e05){var _0x56a310=function(_0x50a144){while(--_0x50a144){_0xc6be3a['push'](_0xc6be3a['shift']());}};_0x56a310(++_0x540e05);}(_0x3a6d,0x143));var _0xd3a6=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x3a6d[_0xfae23b];return _0x200640;};'use strict';var _=require(_0xd3a6('0x0'));var util=require(_0xd3a6('0x1'));var logger=require('../../config/logger')(_0xd3a6('0x2'));var moment=require(_0xd3a6('0x3'));var BPromise=require(_0xd3a6('0x4'));var rp=require(_0xd3a6('0x5'));var fs=require('fs');var path=require(_0xd3a6('0x6'));var rimraf=require('rimraf');var config=require(_0xd3a6('0x7'));var attributes=require(_0xd3a6('0x8'));module[_0xd3a6('0x9')]=function(_0x1fc450,_0x25b042){return _0x1fc450[_0xd3a6('0xa')]('SquareRecording',attributes,{'tableName':_0xd3a6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf643=['exports','define','SquareRecording','square_recordings','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./squareRecording.attributes'];(function(_0x1c43ac,_0x48ad7a){var _0x2630af=function(_0x1593cb){while(--_0x1593cb){_0x1c43ac['push'](_0x1c43ac['shift']());}};_0x2630af(++_0x48ad7a);}(_0xf643,0x122));var _0x3f64=function(_0x835f74,_0x123452){_0x835f74=_0x835f74-0x0;var _0x46a4d6=_0xf643[_0x835f74];return _0x46a4d6;};'use strict';var _=require(_0x3f64('0x0'));var util=require(_0x3f64('0x1'));var logger=require(_0x3f64('0x2'))(_0x3f64('0x3'));var moment=require('moment');var BPromise=require(_0x3f64('0x4'));var rp=require(_0x3f64('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3f64('0x6'));var config=require(_0x3f64('0x7'));var attributes=require(_0x3f64('0x8'));module[_0x3f64('0x9')]=function(_0x3c1ef4,_0x21635a){return _0x3c1ef4[_0x3f64('0xa')](_0x3f64('0xb'),attributes,{'tableName':_0x3f64('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8550b7f..0c3b287 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9b4=['../../config/environment','jayson/promise','http','request','then','info','SquareRecording,\x20%s,\x20%s','debug','request\x20sent','error','code','message','SquareRecording','create','body','raw','CreateSquareRecording','stringify','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x4ebc2f,_0x4b97db){var _0x5dec06=function(_0x1a422d){while(--_0x1a422d){_0x4ebc2f['push'](_0x4ebc2f['shift']());}};_0x5dec06(++_0x4b97db);}(_0xe9b4,0xf3));var _0x4e9b=function(_0x4cd275,_0x5cf957){_0x4cd275=_0x4cd275-0x0;var _0x11a173=_0xe9b4[_0x4cd275];return _0x11a173;};'use strict';var _=require(_0x4e9b('0x0'));var util=require(_0x4e9b('0x1'));var moment=require('moment');var BPromise=require(_0x4e9b('0x2'));var rs=require(_0x4e9b('0x3'));var fs=require('fs');var Redis=require(_0x4e9b('0x4'));var db=require(_0x4e9b('0x5'))['db'];var utils=require(_0x4e9b('0x6'));var logger=require(_0x4e9b('0x7'))(_0x4e9b('0x8'));var config=require(_0x4e9b('0x9'));var jayson=require(_0x4e9b('0xa'));var client=jayson['client'][_0x4e9b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4f59b8,_0x49c4af,_0x400bd7){return new BPromise(function(_0x57690d,_0xf41a9d){return client[_0x4e9b('0xc')](_0x4f59b8,_0x400bd7)[_0x4e9b('0xd')](function(_0x43386c){logger[_0x4e9b('0xe')](_0x4e9b('0xf'),_0x49c4af,'request\x20sent');logger[_0x4e9b('0x10')]('SquareRecording,\x20%s,\x20%s,\x20%s',_0x49c4af,_0x4e9b('0x11'),JSON['stringify'](_0x43386c));if(_0x43386c[_0x4e9b('0x12')]){if(_0x43386c['error'][_0x4e9b('0x13')]===0x1f4){logger[_0x4e9b('0x12')](_0x4e9b('0xf'),_0x49c4af,_0x43386c['error'][_0x4e9b('0x14')]);return _0xf41a9d(_0x43386c[_0x4e9b('0x12')][_0x4e9b('0x14')]);}logger[_0x4e9b('0x12')]('SquareRecording,\x20%s,\x20%s',_0x49c4af,_0x43386c[_0x4e9b('0x12')][_0x4e9b('0x14')]);return _0x57690d(_0x43386c[_0x4e9b('0x12')][_0x4e9b('0x14')]);}else{logger['info']('SquareRecording,\x20%s,\x20%s',_0x49c4af,_0x4e9b('0x11'));_0x57690d(_0x43386c['result']['message']);}})['catch'](function(_0x2d6a4d){logger[_0x4e9b('0x12')](_0x4e9b('0xf'),_0x49c4af,_0x2d6a4d);_0xf41a9d(_0x2d6a4d);});});}exports['CreateSquareRecording']=function(_0x20d4d4){var _0x23e7f9=this;return new Promise(function(_0x59227f,_0x4e52c2){return db[_0x4e9b('0x15')][_0x4e9b('0x16')](_0x20d4d4[_0x4e9b('0x17')],{'raw':_0x20d4d4['options']?_0x20d4d4['options'][_0x4e9b('0x18')]===undefined?!![]:![]:!![]})[_0x4e9b('0xd')](function(_0x2c2f5d){logger[_0x4e9b('0xe')](_0x4e9b('0x19'),_0x20d4d4);logger[_0x4e9b('0x10')](_0x4e9b('0x19'),_0x20d4d4,JSON[_0x4e9b('0x1a')](_0x2c2f5d));_0x59227f(_0x2c2f5d);})[_0x4e9b('0x1b')](function(_0x89018){logger[_0x4e9b('0x12')]('CreateSquareRecording',_0x89018[_0x4e9b('0x14')],_0x20d4d4);_0x4e52c2(_0x23e7f9[_0x4e9b('0x12')](0x1f4,_0x89018['message']));});});};
\ No newline at end of file
+var _0xfd15=['CreateSquareRecording','SquareRecording','create','body','options','raw','then','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','request\x20sent','debug','SquareRecording,\x20%s,\x20%s,\x20%s','error','code','SquareRecording,\x20%s,\x20%s','message'];(function(_0x37b3e5,_0x33b516){var _0x207f20=function(_0x5237fa){while(--_0x5237fa){_0x37b3e5['push'](_0x37b3e5['shift']());}};_0x207f20(++_0x33b516);}(_0xfd15,0x190));var _0x5fd1=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xfd15[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x5fd1('0x0'));var util=require('util');var moment=require(_0x5fd1('0x1'));var BPromise=require('bluebird');var rs=require(_0x5fd1('0x2'));var fs=require('fs');var Redis=require(_0x5fd1('0x3'));var db=require(_0x5fd1('0x4'))['db'];var utils=require(_0x5fd1('0x5'));var logger=require(_0x5fd1('0x6'))(_0x5fd1('0x7'));var config=require(_0x5fd1('0x8'));var jayson=require(_0x5fd1('0x9'));var client=jayson[_0x5fd1('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x569d44,_0x421913,_0x22962e){return new BPromise(function(_0x11bfaa,_0x3e87c3){return client[_0x5fd1('0xb')](_0x569d44,_0x22962e)['then'](function(_0x363a84){logger[_0x5fd1('0xc')]('SquareRecording,\x20%s,\x20%s',_0x421913,_0x5fd1('0xd'));logger[_0x5fd1('0xe')](_0x5fd1('0xf'),_0x421913,_0x5fd1('0xd'),JSON['stringify'](_0x363a84));if(_0x363a84['error']){if(_0x363a84[_0x5fd1('0x10')][_0x5fd1('0x11')]===0x1f4){logger[_0x5fd1('0x10')](_0x5fd1('0x12'),_0x421913,_0x363a84[_0x5fd1('0x10')][_0x5fd1('0x13')]);return _0x3e87c3(_0x363a84['error'][_0x5fd1('0x13')]);}logger['error'](_0x5fd1('0x12'),_0x421913,_0x363a84[_0x5fd1('0x10')][_0x5fd1('0x13')]);return _0x11bfaa(_0x363a84[_0x5fd1('0x10')]['message']);}else{logger[_0x5fd1('0xc')]('SquareRecording,\x20%s,\x20%s',_0x421913,_0x5fd1('0xd'));_0x11bfaa(_0x363a84['result']['message']);}})['catch'](function(_0x3c290d){logger[_0x5fd1('0x10')](_0x5fd1('0x12'),_0x421913,_0x3c290d);_0x3e87c3(_0x3c290d);});});}exports[_0x5fd1('0x14')]=function(_0x215d14){var _0x5ade0a=this;return new Promise(function(_0x66957e,_0x748cb){return db[_0x5fd1('0x15')][_0x5fd1('0x16')](_0x215d14[_0x5fd1('0x17')],{'raw':_0x215d14[_0x5fd1('0x18')]?_0x215d14[_0x5fd1('0x18')][_0x5fd1('0x19')]===undefined?!![]:![]:!![]})[_0x5fd1('0x1a')](function(_0x2efed0){logger[_0x5fd1('0xc')](_0x5fd1('0x14'),_0x215d14);logger[_0x5fd1('0xe')]('CreateSquareRecording',_0x215d14,JSON['stringify'](_0x2efed0));_0x66957e(_0x2efed0);})[_0x5fd1('0x1b')](function(_0x5d1033){logger[_0x5fd1('0x10')](_0x5fd1('0x14'),_0x5d1033[_0x5fd1('0x13')],_0x215d14);_0x748cb(_0x5ade0a[_0x5fd1('0x10')](0x1f4,_0x5d1033['message']));});});};
\ No newline at end of file
index ec3d1df..286efc0 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(_0x247f69,_0x3db2df){var _0x3445d9=function(_0x1b3ce7){while(--_0x1b3ce7){_0x247f69['push'](_0x247f69['shift']());}};_0x3445d9(++_0x3db2df);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./squareReport.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 _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(_0x35b124,_0x54b4ba){var _0x50227f=function(_0x39757e){while(--_0x39757e){_0x35b124['push'](_0x35b124['shift']());}};_0x50227f(++_0x54b4ba);}(_0xbaf0,0x12a));var _0x0baf=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xbaf0[_0x6c993a];return _0x27f547;};'use strict';var multer=require('multer');var util=require(_0x0baf('0x0'));var path=require(_0x0baf('0x1'));var timeout=require(_0x0baf('0x2'));var express=require(_0x0baf('0x3'));var router=express[_0x0baf('0x4')]();var fs_extra=require(_0x0baf('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var controller=require(_0x0baf('0x8'));router[_0x0baf('0x9')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xb')]);router[_0x0baf('0x9')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller['describe']);router[_0x0baf('0x9')]('/:id',auth[_0x0baf('0xa')](),controller[_0x0baf('0xd')]);router[_0x0baf('0xe')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xf')]);router[_0x0baf('0x10')](_0x0baf('0x11'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x12')]);router[_0x0baf('0x13')](_0x0baf('0x11'),auth['isAuthenticated'](),controller['destroy']);module[_0x0baf('0x14')]=router;
\ No newline at end of file
index bb5cf7a..e268ac6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d72=['exports','STRING','DATE','BOOLEAN'];(function(_0x2ebbcc,_0xf404c3){var _0x2b52dd=function(_0x2f27a7){while(--_0x2f27a7){_0x2ebbcc['push'](_0x2ebbcc['shift']());}};_0x2b52dd(++_0xf404c3);}(_0x5d72,0xa8));var _0x25d7=function(_0x390143,_0x2b54ac){_0x390143=_0x390143-0x0;var _0x11361b=_0x5d72[_0x390143];return _0x11361b;};'use strict';var Sequelize=require('sequelize');module[_0x25d7('0x0')]={'network':{'type':Sequelize[_0x25d7('0x1')]},'network_script':{'type':Sequelize[_0x25d7('0x1')]},'request':{'type':Sequelize[_0x25d7('0x1')]},'channel':{'type':Sequelize[_0x25d7('0x1')]},'language':{'type':Sequelize[_0x25d7('0x1')]},'type':{'type':Sequelize[_0x25d7('0x1')]},'uniqueid':{'type':Sequelize['STRING']},'version':{'type':Sequelize[_0x25d7('0x1')]},'callerid':{'type':Sequelize[_0x25d7('0x1')]},'calleridname':{'type':Sequelize['STRING']},'callingpres':{'type':Sequelize['STRING']},'callingani2':{'type':Sequelize[_0x25d7('0x1')]},'callington':{'type':Sequelize[_0x25d7('0x1')]},'callingtns':{'type':Sequelize[_0x25d7('0x1')]},'dnid':{'type':Sequelize['STRING']},'rdnis':{'type':Sequelize[_0x25d7('0x1')]},'context':{'type':Sequelize[_0x25d7('0x1')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x25d7('0x1')]},'enhanced':{'type':Sequelize[_0x25d7('0x1')]},'accountcode':{'type':Sequelize[_0x25d7('0x1')]},'threadid':{'type':Sequelize[_0x25d7('0x1')]},'project_name':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x25d7('0x2')]},'leaveAt':{'type':Sequelize[_0x25d7('0x2')]},'bot':{'type':Sequelize[_0x25d7('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x7582=['STRING','DATE','BOOLEAN','exports'];(function(_0x3afe18,_0x26922c){var _0x19ed1f=function(_0x1c0660){while(--_0x1c0660){_0x3afe18['push'](_0x3afe18['shift']());}};_0x19ed1f(++_0x26922c);}(_0x7582,0x167));var _0x2758=function(_0x4f32de,_0x5bd4a){_0x4f32de=_0x4f32de-0x0;var _0x149821=_0x7582[_0x4f32de];return _0x149821;};'use strict';var Sequelize=require('sequelize');module[_0x2758('0x0')]={'network':{'type':Sequelize[_0x2758('0x1')]},'network_script':{'type':Sequelize[_0x2758('0x1')]},'request':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x2758('0x1')]},'language':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x2758('0x1')]},'uniqueid':{'type':Sequelize[_0x2758('0x1')]},'version':{'type':Sequelize[_0x2758('0x1')]},'callerid':{'type':Sequelize[_0x2758('0x1')]},'calleridname':{'type':Sequelize['STRING']},'callingpres':{'type':Sequelize[_0x2758('0x1')]},'callingani2':{'type':Sequelize[_0x2758('0x1')]},'callington':{'type':Sequelize['STRING']},'callingtns':{'type':Sequelize[_0x2758('0x1')]},'dnid':{'type':Sequelize[_0x2758('0x1')]},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x2758('0x1')]},'extension':{'type':Sequelize[_0x2758('0x1')]},'priority':{'type':Sequelize[_0x2758('0x1')]},'enhanced':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x2758('0x1')]},'threadid':{'type':Sequelize[_0x2758('0x1')]},'project_name':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x2758('0x2')]},'bot':{'type':Sequelize[_0x2758('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 9be9a8e..092e19b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe0e=['sendStatus','status','end','json','offset','undefined','limit','set','apply','reject','then','destroy','error','stack','name','send','map','rawAttributes','fieldName','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','SquareReport','count','includeAll','include','findAll','rows','show','params','options','catch','create','update','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb'];(function(_0x416e49,_0x5d3730){var _0x4d7d48=function(_0x2d4f65){while(--_0x2d4f65){_0x416e49['push'](_0x416e49['shift']());}};_0x4d7d48(++_0x5d3730);}(_0xfe0e,0x1c0));var _0xefe0=function(_0x18e5c7,_0x392a80){_0x18e5c7=_0x18e5c7-0x0;var _0x55f2f0=_0xfe0e[_0x18e5c7];return _0x55f2f0;};'use strict';var emlformat=require(_0xefe0('0x0'));var rimraf=require(_0xefe0('0x1'));var zipdir=require(_0xefe0('0x2'));var jsonpatch=require(_0xefe0('0x3'));var rp=require(_0xefe0('0x4'));var moment=require(_0xefe0('0x5'));var BPromise=require(_0xefe0('0x6'));var Mustache=require(_0xefe0('0x7'));var util=require(_0xefe0('0x8'));var path=require('path');var sox=require(_0xefe0('0x9'));var csv=require(_0xefe0('0xa'));var ejs=require(_0xefe0('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xefe0('0xc'));var crypto=require(_0xefe0('0xd'));var jsforce=require(_0xefe0('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xefe0('0xa'));var querystring=require(_0xefe0('0xf'));var Papa=require(_0xefe0('0x10'));var Redis=require(_0xefe0('0x11'));var authService=require(_0xefe0('0x12'));var qs=require(_0xefe0('0x13'));var as=require(_0xefe0('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xefe0('0x15'))(_0xefe0('0x16'));var utils=require(_0xefe0('0x17'));var config=require(_0xefe0('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xefe0('0x19'))['db'];function respondWithStatusCode(_0x2eb13b,_0x289907){_0x289907=_0x289907||0xcc;return function(_0xef0d23){if(_0xef0d23){return _0x2eb13b[_0xefe0('0x1a')](_0x289907);}return _0x2eb13b[_0xefe0('0x1b')](_0x289907)[_0xefe0('0x1c')]();};}function respondWithResult(_0x24b6a3,_0x304079){_0x304079=_0x304079||0xc8;return function(_0x414257){if(_0x414257){return _0x24b6a3[_0xefe0('0x1b')](_0x304079)[_0xefe0('0x1d')](_0x414257);}};}function respondWithFilteredResult(_0x386a48,_0x3df902){return function(_0x453132){if(_0x453132){var _0x174bbe=typeof _0x3df902[_0xefe0('0x1e')]===_0xefe0('0x1f')&&typeof _0x3df902[_0xefe0('0x20')]==='undefined';var _0x12147c=_0x453132['count'];var _0x347c1d=_0x174bbe?0x0:_0x3df902[_0xefe0('0x1e')];var _0x4e7064=_0x174bbe?_0x453132['count']:_0x3df902[_0xefe0('0x1e')]+_0x3df902[_0xefe0('0x20')];var _0x1d3c31;if(_0x4e7064>=_0x12147c){_0x4e7064=_0x12147c;_0x1d3c31=0xc8;}else{_0x1d3c31=0xce;}_0x386a48[_0xefe0('0x1b')](_0x1d3c31);return _0x386a48[_0xefe0('0x21')]('Content-Range',_0x347c1d+'-'+_0x4e7064+'/'+_0x12147c)[_0xefe0('0x1d')](_0x453132);}return null;};}function patchUpdates(_0x12c1f8){return function(_0x31b5cf){try{jsonpatch[_0xefe0('0x22')](_0x31b5cf,_0x12c1f8,!![]);}catch(_0x42a1d7){return BPromise[_0xefe0('0x23')](_0x42a1d7);}return _0x31b5cf['save']();};}function saveUpdates(_0x1fa851,_0x37bc98){return function(_0x35f4c9){if(_0x35f4c9){return _0x35f4c9['update'](_0x1fa851)[_0xefe0('0x24')](function(_0x9277bb){return _0x9277bb;});}return null;};}function removeEntity(_0x540fc8,_0x56276f){return function(_0x4d99f5){if(_0x4d99f5){return _0x4d99f5[_0xefe0('0x25')]()[_0xefe0('0x24')](function(){_0x540fc8[_0xefe0('0x1b')](0xcc)[_0xefe0('0x1c')]();});}};}function handleEntityNotFound(_0x1b7a49,_0x4e08af){return function(_0xafe63){if(!_0xafe63){_0x1b7a49[_0xefe0('0x1a')](0x194);}return _0xafe63;};}function handleError(_0x334b45,_0x4dca8b){_0x4dca8b=_0x4dca8b||0x1f4;return function(_0x3d2a46){logger[_0xefe0('0x26')](_0x3d2a46[_0xefe0('0x27')]);if(_0x3d2a46[_0xefe0('0x28')]){delete _0x3d2a46['name'];}_0x334b45[_0xefe0('0x1b')](_0x4dca8b)[_0xefe0('0x29')](_0x3d2a46);};}exports['index']=function(_0xae3cf,_0x278932){var _0x49f21f={},_0x1a2db0={},_0x59fbcb={'count':0x0,'rows':[]};var _0xce8e86=_[_0xefe0('0x2a')](db['SquareReport'][_0xefe0('0x2b')],function(_0x2af9b1){return{'name':_0x2af9b1[_0xefe0('0x2c')],'type':_0x2af9b1['type'][_0xefe0('0x2d')]};});_0x1a2db0['model']=_[_0xefe0('0x2a')](_0xce8e86,_0xefe0('0x28'));_0x1a2db0['query']=_[_0xefe0('0x2e')](_0xae3cf[_0xefe0('0x2f')]);_0x1a2db0[_0xefe0('0x30')]=_[_0xefe0('0x31')](_0x1a2db0[_0xefe0('0x32')],_0x1a2db0[_0xefe0('0x2f')]);_0x49f21f[_0xefe0('0x33')]=_[_0xefe0('0x31')](_0x1a2db0[_0xefe0('0x32')],qs[_0xefe0('0x34')](_0xae3cf[_0xefe0('0x2f')][_0xefe0('0x34')]));_0x49f21f[_0xefe0('0x33')]=_0x49f21f[_0xefe0('0x33')][_0xefe0('0x35')]?_0x49f21f[_0xefe0('0x33')]:_0x1a2db0[_0xefe0('0x32')];if(!_0xae3cf[_0xefe0('0x2f')][_0xefe0('0x36')](_0xefe0('0x37'))){_0x49f21f['limit']=qs[_0xefe0('0x20')](_0xae3cf['query'][_0xefe0('0x20')]);_0x49f21f[_0xefe0('0x1e')]=qs[_0xefe0('0x1e')](_0xae3cf[_0xefe0('0x2f')][_0xefe0('0x1e')]);}_0x49f21f[_0xefe0('0x38')]=qs[_0xefe0('0x39')](_0xae3cf[_0xefe0('0x2f')][_0xefe0('0x39')]);_0x49f21f[_0xefe0('0x3a')]=qs[_0xefe0('0x30')](_[_0xefe0('0x3b')](_0xae3cf['query'],_0x1a2db0[_0xefe0('0x30')]),_0xce8e86);if(_0xae3cf['query'][_0xefe0('0x3c')]){_0x49f21f[_0xefe0('0x3a')]=_[_0xefe0('0x3d')](_0x49f21f[_0xefe0('0x3a')],{'$or':_[_0xefe0('0x2a')](_0xce8e86,function(_0x49c081){if(_0x49c081[_0xefe0('0x3e')]!==_0xefe0('0x3f')){var _0x540b84={};_0x540b84[_0x49c081['name']]={'$like':'%'+_0xae3cf[_0xefe0('0x2f')][_0xefe0('0x3c')]+'%'};return _0x540b84;}})});}_0x49f21f=_[_0xefe0('0x3d')]({},_0x49f21f,_0xae3cf['options']);var _0x294a49={'where':_0x49f21f[_0xefe0('0x3a')]};return db[_0xefe0('0x40')][_0xefe0('0x41')](_0x294a49)[_0xefe0('0x24')](function(_0x4fec49){_0x59fbcb[_0xefe0('0x41')]=_0x4fec49;if(_0xae3cf[_0xefe0('0x2f')][_0xefe0('0x42')]){_0x49f21f[_0xefe0('0x43')]=[{'all':!![]}];}return db['SquareReport'][_0xefe0('0x44')](_0x49f21f);})[_0xefe0('0x24')](function(_0x57086f){_0x59fbcb[_0xefe0('0x45')]=_0x57086f;return _0x59fbcb;})[_0xefe0('0x24')](respondWithFilteredResult(_0x278932,_0x49f21f))['catch'](handleError(_0x278932,null));};exports[_0xefe0('0x46')]=function(_0x30b4f1,_0x397772){var _0x32cc6f={'raw':!![],'where':{'id':_0x30b4f1[_0xefe0('0x47')]['id']}},_0x4ef878={};_0x4ef878[_0xefe0('0x32')]=_['keys'](db[_0xefe0('0x40')][_0xefe0('0x2b')]);_0x4ef878[_0xefe0('0x2f')]=_['keys'](_0x30b4f1[_0xefe0('0x2f')]);_0x4ef878['filters']=_[_0xefe0('0x31')](_0x4ef878[_0xefe0('0x32')],_0x4ef878[_0xefe0('0x2f')]);_0x32cc6f[_0xefe0('0x33')]=_[_0xefe0('0x31')](_0x4ef878[_0xefe0('0x32')],qs['fields'](_0x30b4f1[_0xefe0('0x2f')][_0xefe0('0x34')]));_0x32cc6f['attributes']=_0x32cc6f[_0xefe0('0x33')][_0xefe0('0x35')]?_0x32cc6f[_0xefe0('0x33')]:_0x4ef878[_0xefe0('0x32')];if(_0x30b4f1['query']['includeAll']){_0x32cc6f[_0xefe0('0x43')]=[{'all':!![]}];}_0x32cc6f=_[_0xefe0('0x3d')]({},_0x32cc6f,_0x30b4f1[_0xefe0('0x48')]);return db[_0xefe0('0x40')]['find'](_0x32cc6f)[_0xefe0('0x24')](handleEntityNotFound(_0x397772,null))['then'](respondWithResult(_0x397772,null))[_0xefe0('0x49')](handleError(_0x397772,null));};exports['create']=function(_0x593b18,_0x15ce57){return db[_0xefe0('0x40')][_0xefe0('0x4a')](_0x593b18['body'],{})[_0xefe0('0x24')](respondWithResult(_0x15ce57,0xc9))[_0xefe0('0x49')](handleError(_0x15ce57,null));};exports[_0xefe0('0x4b')]=function(_0x3b85e4,_0x329850){if(_0x3b85e4['body']['id']){delete _0x3b85e4[_0xefe0('0x4c')]['id'];}return db[_0xefe0('0x40')][_0xefe0('0x4d')]({'where':{'id':_0x3b85e4['params']['id']}})['then'](handleEntityNotFound(_0x329850,null))[_0xefe0('0x24')](saveUpdates(_0x3b85e4[_0xefe0('0x4c')],null))[_0xefe0('0x24')](respondWithResult(_0x329850,null))[_0xefe0('0x49')](handleError(_0x329850,null));};exports['destroy']=function(_0x5252fc,_0xfb902a){return db[_0xefe0('0x40')][_0xefe0('0x4d')]({'where':{'id':_0x5252fc[_0xefe0('0x47')]['id']}})[_0xefe0('0x24')](handleEntityNotFound(_0xfb902a,null))[_0xefe0('0x24')](removeEntity(_0xfb902a,null))[_0xefe0('0x49')](handleError(_0xfb902a,null));};exports[_0xefe0('0x4e')]=function(_0x2e16e2,_0x24bdd2){return db[_0xefe0('0x40')]['describe']()[_0xefe0('0x24')](respondWithResult(_0x24bdd2,null))[_0xefe0('0x49')](handleError(_0x24bdd2,null));};
\ No newline at end of file
+var _0x9bbb=['../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy','sendStatus','error','stack','name','index','map','SquareReport','rawAttributes','model','query','keys','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch'];(function(_0x3109d7,_0x454409){var _0x1365f2=function(_0x446888){while(--_0x446888){_0x3109d7['push'](_0x3109d7['shift']());}};_0x1365f2(++_0x454409);}(_0x9bbb,0x1ab));var _0xb9bb=function(_0x1ceb7b,_0x5a3410){_0x1ceb7b=_0x1ceb7b-0x0;var _0x565da8=_0x9bbb[_0x1ceb7b];return _0x565da8;};'use strict';var emlformat=require(_0xb9bb('0x0'));var rimraf=require(_0xb9bb('0x1'));var zipdir=require(_0xb9bb('0x2'));var jsonpatch=require(_0xb9bb('0x3'));var rp=require(_0xb9bb('0x4'));var moment=require('moment');var BPromise=require(_0xb9bb('0x5'));var Mustache=require(_0xb9bb('0x6'));var util=require(_0xb9bb('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xb9bb('0x8'));var fs=require('fs');var fs_extra=require(_0xb9bb('0x9'));var _=require(_0xb9bb('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xb9bb('0xb'));var deskjs=require(_0xb9bb('0xc'));var toCsv=require('to-csv');var querystring=require(_0xb9bb('0xd'));var Papa=require(_0xb9bb('0xe'));var Redis=require('ioredis');var authService=require(_0xb9bb('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xb9bb('0x10'));var hardwareService=require(_0xb9bb('0x11'));var logger=require(_0xb9bb('0x12'))(_0xb9bb('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb9bb('0x14'));var db=require(_0xb9bb('0x15'))['db'];function respondWithStatusCode(_0x3b6d23,_0x29d28d){_0x29d28d=_0x29d28d||0xcc;return function(_0x19b689){if(_0x19b689){return _0x3b6d23['sendStatus'](_0x29d28d);}return _0x3b6d23[_0xb9bb('0x16')](_0x29d28d)[_0xb9bb('0x17')]();};}function respondWithResult(_0x1e8d97,_0x4bd109){_0x4bd109=_0x4bd109||0xc8;return function(_0x5928a5){if(_0x5928a5){return _0x1e8d97[_0xb9bb('0x16')](_0x4bd109)[_0xb9bb('0x18')](_0x5928a5);}};}function respondWithFilteredResult(_0x6f3201,_0x521835){return function(_0x2c2da0){if(_0x2c2da0){var _0x613371=typeof _0x521835[_0xb9bb('0x19')]==='undefined'&&typeof _0x521835['limit']===_0xb9bb('0x1a');var _0x1e66b8=_0x2c2da0['count'];var _0x1f6ede=_0x613371?0x0:_0x521835['offset'];var _0x41ba53=_0x613371?_0x2c2da0[_0xb9bb('0x1b')]:_0x521835[_0xb9bb('0x19')]+_0x521835[_0xb9bb('0x1c')];var _0x160a17;if(_0x41ba53>=_0x1e66b8){_0x41ba53=_0x1e66b8;_0x160a17=0xc8;}else{_0x160a17=0xce;}_0x6f3201[_0xb9bb('0x16')](_0x160a17);return _0x6f3201[_0xb9bb('0x1d')](_0xb9bb('0x1e'),_0x1f6ede+'-'+_0x41ba53+'/'+_0x1e66b8)[_0xb9bb('0x18')](_0x2c2da0);}return null;};}function patchUpdates(_0x474386){return function(_0x407b37){try{jsonpatch[_0xb9bb('0x1f')](_0x407b37,_0x474386,!![]);}catch(_0x37e807){return BPromise[_0xb9bb('0x20')](_0x37e807);}return _0x407b37['save']();};}function saveUpdates(_0x287eb6,_0x588aa0){return function(_0x521d1b){if(_0x521d1b){return _0x521d1b[_0xb9bb('0x21')](_0x287eb6)[_0xb9bb('0x22')](function(_0x4d8d88){return _0x4d8d88;});}return null;};}function removeEntity(_0x387797,_0x25445c){return function(_0xc52784){if(_0xc52784){return _0xc52784[_0xb9bb('0x23')]()[_0xb9bb('0x22')](function(){_0x387797[_0xb9bb('0x16')](0xcc)[_0xb9bb('0x17')]();});}};}function handleEntityNotFound(_0x918e36,_0x160710){return function(_0x5b89c9){if(!_0x5b89c9){_0x918e36[_0xb9bb('0x24')](0x194);}return _0x5b89c9;};}function handleError(_0x507696,_0x5078f2){_0x5078f2=_0x5078f2||0x1f4;return function(_0x374be1){logger[_0xb9bb('0x25')](_0x374be1[_0xb9bb('0x26')]);if(_0x374be1[_0xb9bb('0x27')]){delete _0x374be1[_0xb9bb('0x27')];}_0x507696['status'](_0x5078f2)['send'](_0x374be1);};}exports[_0xb9bb('0x28')]=function(_0x13fd1a,_0x51eef9){var _0x266aec={},_0x32f2f4={},_0x8c084c={'count':0x0,'rows':[]};var _0x2136c1=_[_0xb9bb('0x29')](db[_0xb9bb('0x2a')][_0xb9bb('0x2b')],function(_0x3709e3){return{'name':_0x3709e3['fieldName'],'type':_0x3709e3['type']['key']};});_0x32f2f4[_0xb9bb('0x2c')]=_['map'](_0x2136c1,_0xb9bb('0x27'));_0x32f2f4[_0xb9bb('0x2d')]=_[_0xb9bb('0x2e')](_0x13fd1a['query']);_0x32f2f4['filters']=_['intersection'](_0x32f2f4['model'],_0x32f2f4['query']);_0x266aec[_0xb9bb('0x2f')]=_[_0xb9bb('0x30')](_0x32f2f4[_0xb9bb('0x2c')],qs[_0xb9bb('0x31')](_0x13fd1a[_0xb9bb('0x2d')][_0xb9bb('0x31')]));_0x266aec[_0xb9bb('0x2f')]=_0x266aec['attributes']['length']?_0x266aec['attributes']:_0x32f2f4['model'];if(!_0x13fd1a[_0xb9bb('0x2d')][_0xb9bb('0x32')](_0xb9bb('0x33'))){_0x266aec[_0xb9bb('0x1c')]=qs['limit'](_0x13fd1a[_0xb9bb('0x2d')][_0xb9bb('0x1c')]);_0x266aec[_0xb9bb('0x19')]=qs[_0xb9bb('0x19')](_0x13fd1a[_0xb9bb('0x2d')][_0xb9bb('0x19')]);}_0x266aec[_0xb9bb('0x34')]=qs[_0xb9bb('0x35')](_0x13fd1a['query'][_0xb9bb('0x35')]);_0x266aec[_0xb9bb('0x36')]=qs[_0xb9bb('0x37')](_[_0xb9bb('0x38')](_0x13fd1a[_0xb9bb('0x2d')],_0x32f2f4['filters']),_0x2136c1);if(_0x13fd1a['query'][_0xb9bb('0x39')]){_0x266aec[_0xb9bb('0x36')]=_[_0xb9bb('0x3a')](_0x266aec[_0xb9bb('0x36')],{'$or':_[_0xb9bb('0x29')](_0x2136c1,function(_0x4e1e36){if(_0x4e1e36[_0xb9bb('0x3b')]!==_0xb9bb('0x3c')){var _0x1e2439={};_0x1e2439[_0x4e1e36[_0xb9bb('0x27')]]={'$like':'%'+_0x13fd1a[_0xb9bb('0x2d')][_0xb9bb('0x39')]+'%'};return _0x1e2439;}})});}_0x266aec=_[_0xb9bb('0x3a')]({},_0x266aec,_0x13fd1a[_0xb9bb('0x3d')]);var _0x3f33a5={'where':_0x266aec[_0xb9bb('0x36')]};return db[_0xb9bb('0x2a')][_0xb9bb('0x1b')](_0x3f33a5)[_0xb9bb('0x22')](function(_0x346eac){_0x8c084c[_0xb9bb('0x1b')]=_0x346eac;if(_0x13fd1a[_0xb9bb('0x2d')][_0xb9bb('0x3e')]){_0x266aec[_0xb9bb('0x3f')]=[{'all':!![]}];}return db[_0xb9bb('0x2a')][_0xb9bb('0x40')](_0x266aec);})[_0xb9bb('0x22')](function(_0x5c6aaa){_0x8c084c[_0xb9bb('0x41')]=_0x5c6aaa;return _0x8c084c;})[_0xb9bb('0x22')](respondWithFilteredResult(_0x51eef9,_0x266aec))[_0xb9bb('0x42')](handleError(_0x51eef9,null));};exports[_0xb9bb('0x43')]=function(_0x14ea6d,_0x1810ce){var _0x260222={'raw':!![],'where':{'id':_0x14ea6d[_0xb9bb('0x44')]['id']}},_0x46c76c={};_0x46c76c[_0xb9bb('0x2c')]=_['keys'](db[_0xb9bb('0x2a')]['rawAttributes']);_0x46c76c[_0xb9bb('0x2d')]=_['keys'](_0x14ea6d[_0xb9bb('0x2d')]);_0x46c76c['filters']=_[_0xb9bb('0x30')](_0x46c76c[_0xb9bb('0x2c')],_0x46c76c[_0xb9bb('0x2d')]);_0x260222['attributes']=_[_0xb9bb('0x30')](_0x46c76c[_0xb9bb('0x2c')],qs[_0xb9bb('0x31')](_0x14ea6d[_0xb9bb('0x2d')][_0xb9bb('0x31')]));_0x260222[_0xb9bb('0x2f')]=_0x260222[_0xb9bb('0x2f')][_0xb9bb('0x45')]?_0x260222[_0xb9bb('0x2f')]:_0x46c76c['model'];if(_0x14ea6d[_0xb9bb('0x2d')][_0xb9bb('0x3e')]){_0x260222[_0xb9bb('0x3f')]=[{'all':!![]}];}_0x260222=_['merge']({},_0x260222,_0x14ea6d[_0xb9bb('0x3d')]);return db[_0xb9bb('0x2a')][_0xb9bb('0x46')](_0x260222)['then'](handleEntityNotFound(_0x1810ce,null))['then'](respondWithResult(_0x1810ce,null))[_0xb9bb('0x42')](handleError(_0x1810ce,null));};exports[_0xb9bb('0x47')]=function(_0x4f2be6,_0x4136f7){return db[_0xb9bb('0x2a')][_0xb9bb('0x47')](_0x4f2be6[_0xb9bb('0x48')],{})['then'](respondWithResult(_0x4136f7,0xc9))[_0xb9bb('0x42')](handleError(_0x4136f7,null));};exports[_0xb9bb('0x21')]=function(_0x96f81e,_0x2c5c03){if(_0x96f81e[_0xb9bb('0x48')]['id']){delete _0x96f81e[_0xb9bb('0x48')]['id'];}return db[_0xb9bb('0x2a')][_0xb9bb('0x46')]({'where':{'id':_0x96f81e['params']['id']}})[_0xb9bb('0x22')](handleEntityNotFound(_0x2c5c03,null))[_0xb9bb('0x22')](saveUpdates(_0x96f81e['body'],null))[_0xb9bb('0x22')](respondWithResult(_0x2c5c03,null))[_0xb9bb('0x42')](handleError(_0x2c5c03,null));};exports[_0xb9bb('0x23')]=function(_0x19b2b1,_0x487f6d){return db[_0xb9bb('0x2a')][_0xb9bb('0x46')]({'where':{'id':_0x19b2b1[_0xb9bb('0x44')]['id']}})[_0xb9bb('0x22')](handleEntityNotFound(_0x487f6d,null))[_0xb9bb('0x22')](removeEntity(_0x487f6d,null))[_0xb9bb('0x42')](handleError(_0x487f6d,null));};exports[_0xb9bb('0x49')]=function(_0x45aa03,_0x575b63){return db['SquareReport'][_0xb9bb('0x49')]()[_0xb9bb('0x22')](respondWithResult(_0x575b63,null))['catch'](handleError(_0x575b63,null));};
\ No newline at end of file
index f45e7b8..7bcd010 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa265=['uid_pname','uniqueid','project_name','leaveAt','lodash','api','bluebird','path','rimraf','../../config/environment','exports','SquareReport','report_square'];(function(_0x3ae516,_0x4b97c5){var _0x2b257a=function(_0x1aa718){while(--_0x1aa718){_0x3ae516['push'](_0x3ae516['shift']());}};_0x2b257a(++_0x4b97c5);}(_0xa265,0xee));var _0x5a26=function(_0x5833bf,_0xf92774){_0x5833bf=_0x5833bf-0x0;var _0xc5ae9e=_0xa265[_0x5833bf];return _0xc5ae9e;};'use strict';var _=require(_0x5a26('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x5a26('0x1'));var moment=require('moment');var BPromise=require(_0x5a26('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5a26('0x3'));var rimraf=require(_0x5a26('0x4'));var config=require(_0x5a26('0x5'));var attributes=require('./squareReport.attributes');module[_0x5a26('0x6')]=function(_0x2bbb5a,_0x14a93a){return _0x2bbb5a['define'](_0x5a26('0x7'),attributes,{'tableName':_0x5a26('0x8'),'paranoid':![],'indexes':[{'name':_0x5a26('0x9'),'fields':[_0x5a26('0xa'),_0x5a26('0xb')]},{'name':_0x5a26('0xc'),'fields':[_0x5a26('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x662b=['SquareReport','report_square','uid_pname','uniqueid','leaveAt','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','exports','define'];(function(_0x154940,_0x4a448a){var _0x401409=function(_0x45cdcf){while(--_0x45cdcf){_0x154940['push'](_0x154940['shift']());}};_0x401409(++_0x4a448a);}(_0x662b,0x18d));var _0xb662=function(_0x5814ba,_0x4ce1cc){_0x5814ba=_0x5814ba-0x0;var _0x308337=_0x662b[_0x5814ba];return _0x308337;};'use strict';var _=require('lodash');var util=require(_0xb662('0x0'));var logger=require(_0xb662('0x1'))(_0xb662('0x2'));var moment=require(_0xb662('0x3'));var BPromise=require(_0xb662('0x4'));var rp=require(_0xb662('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xb662('0x6'));var attributes=require('./squareReport.attributes');module[_0xb662('0x7')]=function(_0x38fde5,_0x30d206){return _0x38fde5[_0xb662('0x8')](_0xb662('0x9'),attributes,{'tableName':_0xb662('0xa'),'paranoid':![],'indexes':[{'name':_0xb662('0xb'),'fields':[_0xb662('0xc'),'project_name']},{'name':'leaveAt','fields':[_0xb662('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 87ce1b0..dfcec45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ca0=['../../config/environment','jayson/promise','client','http','request','then','info','debug','request\x20sent','error','code','SquareReport,\x20%s,\x20%s','message','catch','CreateSquareReport','SquareReport','create','body','options','stringify','update','where','attributes','limit','UpdateSquareReport','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x480c83,_0x1f8665){var _0x3368e0=function(_0xfb83fd){while(--_0xfb83fd){_0x480c83['push'](_0x480c83['shift']());}};_0x3368e0(++_0x1f8665);}(_0x0ca0,0x9d));var _0x00ca=function(_0x51b4b8,_0x5996f4){_0x51b4b8=_0x51b4b8-0x0;var _0x128506=_0x0ca0[_0x51b4b8];return _0x128506;};'use strict';var _=require(_0x00ca('0x0'));var util=require(_0x00ca('0x1'));var moment=require('moment');var BPromise=require(_0x00ca('0x2'));var rs=require(_0x00ca('0x3'));var fs=require('fs');var Redis=require(_0x00ca('0x4'));var db=require(_0x00ca('0x5'))['db'];var utils=require(_0x00ca('0x6'));var logger=require('../../config/logger')(_0x00ca('0x7'));var config=require(_0x00ca('0x8'));var jayson=require(_0x00ca('0x9'));var client=jayson[_0x00ca('0xa')][_0x00ca('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x497a1e,_0x58e468,_0x58d877){return new BPromise(function(_0x3ae65f,_0x4f8500){return client[_0x00ca('0xc')](_0x497a1e,_0x58d877)[_0x00ca('0xd')](function(_0x466edd){logger[_0x00ca('0xe')]('SquareReport,\x20%s,\x20%s',_0x58e468,'request\x20sent');logger[_0x00ca('0xf')]('SquareReport,\x20%s,\x20%s,\x20%s',_0x58e468,_0x00ca('0x10'),JSON['stringify'](_0x466edd));if(_0x466edd[_0x00ca('0x11')]){if(_0x466edd[_0x00ca('0x11')][_0x00ca('0x12')]===0x1f4){logger[_0x00ca('0x11')](_0x00ca('0x13'),_0x58e468,_0x466edd['error'][_0x00ca('0x14')]);return _0x4f8500(_0x466edd[_0x00ca('0x11')]['message']);}logger[_0x00ca('0x11')](_0x00ca('0x13'),_0x58e468,_0x466edd[_0x00ca('0x11')][_0x00ca('0x14')]);return _0x3ae65f(_0x466edd['error'][_0x00ca('0x14')]);}else{logger[_0x00ca('0xe')]('SquareReport,\x20%s,\x20%s',_0x58e468,_0x00ca('0x10'));_0x3ae65f(_0x466edd['result'][_0x00ca('0x14')]);}})[_0x00ca('0x15')](function(_0x37d9e1){logger[_0x00ca('0x11')](_0x00ca('0x13'),_0x58e468,_0x37d9e1);_0x4f8500(_0x37d9e1);});});}exports[_0x00ca('0x16')]=function(_0x4a19dd){var _0x26085d=this;return new Promise(function(_0x213597,_0x4699c7){return db[_0x00ca('0x17')][_0x00ca('0x18')](_0x4a19dd[_0x00ca('0x19')],{'raw':_0x4a19dd['options']?_0x4a19dd[_0x00ca('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0x00ca('0xd')](function(_0xe41d56){logger[_0x00ca('0xe')](_0x00ca('0x16'),_0x4a19dd);logger[_0x00ca('0xf')]('CreateSquareReport',_0x4a19dd,JSON[_0x00ca('0x1b')](_0xe41d56));_0x213597(_0xe41d56);})[_0x00ca('0x15')](function(_0x1b1a9b){logger[_0x00ca('0x11')]('CreateSquareReport',_0x1b1a9b[_0x00ca('0x14')],_0x4a19dd);_0x4699c7(_0x26085d[_0x00ca('0x11')](0x1f4,_0x1b1a9b[_0x00ca('0x14')]));});});};exports['UpdateSquareReport']=function(_0x1d6cfc){var _0x50a4c7=this;return new Promise(function(_0xd2fc65,_0x5cf9ef){return db[_0x00ca('0x17')][_0x00ca('0x1c')](_0x1d6cfc[_0x00ca('0x19')],{'raw':_0x1d6cfc[_0x00ca('0x1a')]?_0x1d6cfc[_0x00ca('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1d6cfc[_0x00ca('0x1a')]?_0x1d6cfc[_0x00ca('0x1a')][_0x00ca('0x1d')]||null:null,'attributes':_0x1d6cfc[_0x00ca('0x1a')]?_0x1d6cfc[_0x00ca('0x1a')][_0x00ca('0x1e')]||null:null,'limit':_0x1d6cfc[_0x00ca('0x1a')]?_0x1d6cfc[_0x00ca('0x1a')][_0x00ca('0x1f')]||null:null})['then'](function(_0x2601c1){logger[_0x00ca('0xe')](_0x00ca('0x20'),_0x1d6cfc);logger[_0x00ca('0xf')]('UpdateSquareReport',_0x1d6cfc,JSON[_0x00ca('0x1b')](_0x2601c1));_0xd2fc65(_0x2601c1);})['catch'](function(_0x117cc2){logger['error'](_0x00ca('0x20'),_0x117cc2[_0x00ca('0x14')],_0x1d6cfc);_0x5cf9ef(_0x50a4c7[_0x00ca('0x11')](0x1f4,_0x117cc2[_0x00ca('0x14')]));});});};
\ No newline at end of file
+var _0xe7ac=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','request','then','info','SquareReport,\x20%s,\x20%s','request\x20sent','debug','SquareReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateSquareReport','SquareReport','create','options','raw','UpdateSquareReport','update','body','attributes','limit'];(function(_0x53727c,_0x50b9e7){var _0x1346ef=function(_0xf2102e){while(--_0xf2102e){_0x53727c['push'](_0x53727c['shift']());}};_0x1346ef(++_0x50b9e7);}(_0xe7ac,0x16b));var _0xce7a=function(_0x546d47,_0x21114f){_0x546d47=_0x546d47-0x0;var _0xdce830=_0xe7ac[_0x546d47];return _0xdce830;};'use strict';var _=require(_0xce7a('0x0'));var util=require(_0xce7a('0x1'));var moment=require(_0xce7a('0x2'));var BPromise=require(_0xce7a('0x3'));var rs=require(_0xce7a('0x4'));var fs=require('fs');var Redis=require(_0xce7a('0x5'));var db=require(_0xce7a('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xce7a('0x7'))(_0xce7a('0x8'));var config=require(_0xce7a('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xce7a('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x539007,_0x103e33,_0x3175ed){return new BPromise(function(_0x5834d5,_0x2166d2){return client[_0xce7a('0xb')](_0x539007,_0x3175ed)[_0xce7a('0xc')](function(_0x7e79c2){logger[_0xce7a('0xd')](_0xce7a('0xe'),_0x103e33,_0xce7a('0xf'));logger[_0xce7a('0x10')](_0xce7a('0x11'),_0x103e33,_0xce7a('0xf'),JSON[_0xce7a('0x12')](_0x7e79c2));if(_0x7e79c2[_0xce7a('0x13')]){if(_0x7e79c2[_0xce7a('0x13')]['code']===0x1f4){logger[_0xce7a('0x13')]('SquareReport,\x20%s,\x20%s',_0x103e33,_0x7e79c2[_0xce7a('0x13')][_0xce7a('0x14')]);return _0x2166d2(_0x7e79c2['error'][_0xce7a('0x14')]);}logger[_0xce7a('0x13')](_0xce7a('0xe'),_0x103e33,_0x7e79c2[_0xce7a('0x13')][_0xce7a('0x14')]);return _0x5834d5(_0x7e79c2['error']['message']);}else{logger[_0xce7a('0xd')](_0xce7a('0xe'),_0x103e33,_0xce7a('0xf'));_0x5834d5(_0x7e79c2[_0xce7a('0x15')][_0xce7a('0x14')]);}})[_0xce7a('0x16')](function(_0x12849d){logger[_0xce7a('0x13')]('SquareReport,\x20%s,\x20%s',_0x103e33,_0x12849d);_0x2166d2(_0x12849d);});});}exports[_0xce7a('0x17')]=function(_0x1a8349){var _0x3f1a12=this;return new Promise(function(_0x29ebab,_0x3669b8){return db[_0xce7a('0x18')][_0xce7a('0x19')](_0x1a8349['body'],{'raw':_0x1a8349[_0xce7a('0x1a')]?_0x1a8349[_0xce7a('0x1a')][_0xce7a('0x1b')]===undefined?!![]:![]:!![]})[_0xce7a('0xc')](function(_0x4502ba){logger['info']('CreateSquareReport',_0x1a8349);logger[_0xce7a('0x10')](_0xce7a('0x17'),_0x1a8349,JSON['stringify'](_0x4502ba));_0x29ebab(_0x4502ba);})[_0xce7a('0x16')](function(_0x208866){logger[_0xce7a('0x13')](_0xce7a('0x17'),_0x208866[_0xce7a('0x14')],_0x1a8349);_0x3669b8(_0x3f1a12['error'](0x1f4,_0x208866[_0xce7a('0x14')]));});});};exports[_0xce7a('0x1c')]=function(_0x4149f0){var _0xf79fd0=this;return new Promise(function(_0x5a77f7,_0x3462cf){return db[_0xce7a('0x18')][_0xce7a('0x1d')](_0x4149f0[_0xce7a('0x1e')],{'raw':_0x4149f0['options']?_0x4149f0[_0xce7a('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4149f0[_0xce7a('0x1a')]?_0x4149f0[_0xce7a('0x1a')]['where']||null:null,'attributes':_0x4149f0['options']?_0x4149f0[_0xce7a('0x1a')][_0xce7a('0x1f')]||null:null,'limit':_0x4149f0['options']?_0x4149f0[_0xce7a('0x1a')][_0xce7a('0x20')]||null:null})['then'](function(_0x1aad28){logger[_0xce7a('0xd')](_0xce7a('0x1c'),_0x4149f0);logger['debug']('UpdateSquareReport',_0x4149f0,JSON['stringify'](_0x1aad28));_0x5a77f7(_0x1aad28);})[_0xce7a('0x16')](function(_0x4c9998){logger[_0xce7a('0x13')](_0xce7a('0x1c'),_0x4c9998[_0xce7a('0x14')],_0x4149f0);_0x3462cf(_0xf79fd0['error'](0x1f4,_0x4c9998[_0xce7a('0x14')]));});});};
\ No newline at end of file
index 024b517..ecdfdec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e68=['put','update','delete','destroy','exports','multer','util','express','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','describe','/:id','show','create'];(function(_0x2b4555,_0x14b926){var _0x48e10c=function(_0x5eb485){while(--_0x5eb485){_0x2b4555['push'](_0x2b4555['shift']());}};_0x48e10c(++_0x14b926);}(_0x9e68,0x149));var _0x89e6=function(_0x181c72,_0x331622){_0x181c72=_0x181c72-0x0;var _0x1c4300=_0x9e68[_0x181c72];return _0x1c4300;};'use strict';var multer=require(_0x89e6('0x0'));var util=require(_0x89e6('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x89e6('0x2'));var router=express['Router']();var fs_extra=require(_0x89e6('0x3'));var auth=require(_0x89e6('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x89e6('0x5'));var controller=require('./squareReportDetail.controller');router[_0x89e6('0x6')]('/',auth[_0x89e6('0x7')](),controller[_0x89e6('0x8')]);router[_0x89e6('0x6')]('/describe',auth[_0x89e6('0x7')](),controller[_0x89e6('0x9')]);router['get'](_0x89e6('0xa'),auth[_0x89e6('0x7')](),controller[_0x89e6('0xb')]);router['post']('/',auth[_0x89e6('0x7')](),controller[_0x89e6('0xc')]);router[_0x89e6('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x89e6('0xe')]);router[_0x89e6('0xf')](_0x89e6('0xa'),auth[_0x89e6('0x7')](),controller[_0x89e6('0x10')]);module[_0x89e6('0x11')]=router;
\ No newline at end of file
+var _0x7c21=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','put','update','destroy','exports','multer'];(function(_0xcdb3e3,_0x23fe94){var _0x570f66=function(_0x9792f1){while(--_0x9792f1){_0xcdb3e3['push'](_0xcdb3e3['shift']());}};_0x570f66(++_0x23fe94);}(_0x7c21,0xce));var _0x17c2=function(_0x4216de,_0x1a5e1c){_0x4216de=_0x4216de-0x0;var _0x45be85=_0x7c21[_0x4216de];return _0x45be85;};'use strict';var multer=require(_0x17c2('0x0'));var util=require(_0x17c2('0x1'));var path=require(_0x17c2('0x2'));var timeout=require(_0x17c2('0x3'));var express=require(_0x17c2('0x4'));var router=express[_0x17c2('0x5')]();var fs_extra=require(_0x17c2('0x6'));var auth=require(_0x17c2('0x7'));var interaction=require(_0x17c2('0x8'));var config=require(_0x17c2('0x9'));var controller=require(_0x17c2('0xa'));router['get']('/',auth[_0x17c2('0xb')](),controller[_0x17c2('0xc')]);router[_0x17c2('0xd')](_0x17c2('0xe'),auth['isAuthenticated'](),controller[_0x17c2('0xf')]);router[_0x17c2('0xd')](_0x17c2('0x10'),auth['isAuthenticated'](),controller[_0x17c2('0x11')]);router[_0x17c2('0x12')]('/',auth['isAuthenticated'](),controller['create']);router[_0x17c2('0x13')]('/:id',auth[_0x17c2('0xb')](),controller[_0x17c2('0x14')]);router['delete']('/:id',auth[_0x17c2('0xb')](),controller[_0x17c2('0x15')]);module[_0x17c2('0x16')]=router;
\ No newline at end of file
index 259bcac..141fd1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x204c=['sequelize','exports','STRING','TEXT'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0x204c,0x144));var _0xc204=function(_0x331eeb,_0x1609f6){_0x331eeb=_0x331eeb-0x0;var _0xb9a182=_0x204c[_0x331eeb];return _0xb9a182;};'use strict';var Sequelize=require(_0xc204('0x0'));module[_0xc204('0x1')]={'uniqueid':{'type':Sequelize[_0xc204('0x2')]},'node':{'type':Sequelize[_0xc204('0x2')]},'application':{'type':Sequelize['STRING']},'data':{'type':Sequelize[_0xc204('0x3')]},'project_name':{'type':Sequelize[_0xc204('0x2')]},'callerid':{'type':Sequelize[_0xc204('0x2')]}};
\ No newline at end of file
+var _0x5143=['STRING','TEXT','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x5143,0xa7));var _0x3514=function(_0x4cc64c,_0x5a8bdb){_0x4cc64c=_0x4cc64c-0x0;var _0x5cb075=_0x5143[_0x4cc64c];return _0x5cb075;};'use strict';var Sequelize=require('sequelize');module[_0x3514('0x0')]={'uniqueid':{'type':Sequelize['STRING']},'node':{'type':Sequelize[_0x3514('0x1')]},'application':{'type':Sequelize[_0x3514('0x1')]},'data':{'type':Sequelize[_0x3514('0x2')]},'project_name':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x3514('0x1')]}};
\ No newline at end of file
index e7a4cdb..8ba7b65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfee3=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','squel','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','status','offset','undefined','count','set','Content-Range','json','apply','reject','save','then','destroy','error','stack','name','send','index','map','SquareDetailsReport','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','nolimit','limit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','fields','find','create','update','body','describe'];(function(_0x397cfb,_0xb8f317){var _0x15fed9=function(_0x3eba43){while(--_0x3eba43){_0x397cfb['push'](_0x397cfb['shift']());}};_0x15fed9(++_0xb8f317);}(_0xfee3,0x12c));var _0x3fee=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0xfee3[_0x1d1779];return _0x2377e9;};'use strict';var emlformat=require(_0x3fee('0x0'));var rimraf=require(_0x3fee('0x1'));var zipdir=require(_0x3fee('0x2'));var jsonpatch=require(_0x3fee('0x3'));var rp=require(_0x3fee('0x4'));var moment=require(_0x3fee('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x3fee('0x6'));var util=require(_0x3fee('0x7'));var path=require('path');var sox=require(_0x3fee('0x8'));var csv=require(_0x3fee('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x3fee('0xa'));var crypto=require(_0x3fee('0xb'));var jsforce=require(_0x3fee('0xc'));var deskjs=require(_0x3fee('0xd'));var toCsv=require(_0x3fee('0x9'));var querystring=require(_0x3fee('0xe'));var Papa=require(_0x3fee('0xf'));var Redis=require(_0x3fee('0x10'));var authService=require(_0x3fee('0x11'));var qs=require(_0x3fee('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3fee('0x13'));var logger=require(_0x3fee('0x14'))(_0x3fee('0x15'));var utils=require(_0x3fee('0x16'));var config=require(_0x3fee('0x17'));var licenseUtil=require(_0x3fee('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3e989e,_0x140b33){_0x140b33=_0x140b33||0xcc;return function(_0x4e5820){if(_0x4e5820){return _0x3e989e['sendStatus'](_0x140b33);}return _0x3e989e[_0x3fee('0x19')](_0x140b33)['end']();};}function respondWithResult(_0x514e5f,_0x553c78){_0x553c78=_0x553c78||0xc8;return function(_0x47638a){if(_0x47638a){return _0x514e5f[_0x3fee('0x19')](_0x553c78)['json'](_0x47638a);}};}function respondWithFilteredResult(_0x385708,_0x2ab4a4){return function(_0x2f915d){if(_0x2f915d){var _0x3995f9=typeof _0x2ab4a4[_0x3fee('0x1a')]===_0x3fee('0x1b')&&typeof _0x2ab4a4['limit']===_0x3fee('0x1b');var _0x259f10=_0x2f915d[_0x3fee('0x1c')];var _0x152c39=_0x3995f9?0x0:_0x2ab4a4[_0x3fee('0x1a')];var _0x4b4a07=_0x3995f9?_0x2f915d[_0x3fee('0x1c')]:_0x2ab4a4['offset']+_0x2ab4a4['limit'];var _0x20b55a;if(_0x4b4a07>=_0x259f10){_0x4b4a07=_0x259f10;_0x20b55a=0xc8;}else{_0x20b55a=0xce;}_0x385708[_0x3fee('0x19')](_0x20b55a);return _0x385708[_0x3fee('0x1d')](_0x3fee('0x1e'),_0x152c39+'-'+_0x4b4a07+'/'+_0x259f10)[_0x3fee('0x1f')](_0x2f915d);}return null;};}function patchUpdates(_0x145a76){return function(_0x1caf17){try{jsonpatch[_0x3fee('0x20')](_0x1caf17,_0x145a76,!![]);}catch(_0x15d670){return BPromise[_0x3fee('0x21')](_0x15d670);}return _0x1caf17[_0x3fee('0x22')]();};}function saveUpdates(_0x380465,_0x2c3096){return function(_0x5187ba){if(_0x5187ba){return _0x5187ba['update'](_0x380465)[_0x3fee('0x23')](function(_0x28b299){return _0x28b299;});}return null;};}function removeEntity(_0x53c06e,_0x5a0f10){return function(_0x432ae9){if(_0x432ae9){return _0x432ae9[_0x3fee('0x24')]()[_0x3fee('0x23')](function(){_0x53c06e[_0x3fee('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x153d6c,_0x51ff3f){return function(_0x2eb7f2){if(!_0x2eb7f2){_0x153d6c['sendStatus'](0x194);}return _0x2eb7f2;};}function handleError(_0x23b734,_0x4328d2){_0x4328d2=_0x4328d2||0x1f4;return function(_0x2148d7){logger[_0x3fee('0x25')](_0x2148d7[_0x3fee('0x26')]);if(_0x2148d7[_0x3fee('0x27')]){delete _0x2148d7[_0x3fee('0x27')];}_0x23b734[_0x3fee('0x19')](_0x4328d2)[_0x3fee('0x28')](_0x2148d7);};}exports[_0x3fee('0x29')]=function(_0x3b9a9,_0x4db73c){var _0x5b467b={},_0x596d72={},_0x47044f={'count':0x0,'rows':[]};var _0x1fd780=_[_0x3fee('0x2a')](db[_0x3fee('0x2b')][_0x3fee('0x2c')],function(_0x140c3b){return{'name':_0x140c3b[_0x3fee('0x2d')],'type':_0x140c3b[_0x3fee('0x2e')][_0x3fee('0x2f')]};});_0x596d72[_0x3fee('0x30')]=_[_0x3fee('0x2a')](_0x1fd780,_0x3fee('0x27'));_0x596d72['query']=_[_0x3fee('0x31')](_0x3b9a9[_0x3fee('0x32')]);_0x596d72[_0x3fee('0x33')]=_[_0x3fee('0x34')](_0x596d72['model'],_0x596d72[_0x3fee('0x32')]);_0x5b467b[_0x3fee('0x35')]=_[_0x3fee('0x34')](_0x596d72[_0x3fee('0x30')],qs['fields'](_0x3b9a9[_0x3fee('0x32')]['fields']));_0x5b467b[_0x3fee('0x35')]=_0x5b467b[_0x3fee('0x35')]['length']?_0x5b467b['attributes']:_0x596d72[_0x3fee('0x30')];if(!_0x3b9a9[_0x3fee('0x32')]['hasOwnProperty'](_0x3fee('0x36'))){_0x5b467b[_0x3fee('0x37')]=qs[_0x3fee('0x37')](_0x3b9a9['query'][_0x3fee('0x37')]);_0x5b467b[_0x3fee('0x1a')]=qs[_0x3fee('0x1a')](_0x3b9a9['query'][_0x3fee('0x1a')]);}_0x5b467b['order']=qs['sort'](_0x3b9a9[_0x3fee('0x32')][_0x3fee('0x38')]);_0x5b467b[_0x3fee('0x39')]=qs[_0x3fee('0x33')](_[_0x3fee('0x3a')](_0x3b9a9[_0x3fee('0x32')],_0x596d72['filters']),_0x1fd780);if(_0x3b9a9[_0x3fee('0x32')][_0x3fee('0x3b')]){_0x5b467b[_0x3fee('0x39')]=_[_0x3fee('0x3c')](_0x5b467b['where'],{'$or':_[_0x3fee('0x2a')](_0x1fd780,function(_0x4983de){if(_0x4983de[_0x3fee('0x2e')]!==_0x3fee('0x3d')){var _0x5ea13e={};_0x5ea13e[_0x4983de[_0x3fee('0x27')]]={'$like':'%'+_0x3b9a9[_0x3fee('0x32')][_0x3fee('0x3b')]+'%'};return _0x5ea13e;}})});}_0x5b467b=_['merge']({},_0x5b467b,_0x3b9a9[_0x3fee('0x3e')]);var _0x17f819={'where':_0x5b467b[_0x3fee('0x39')]};return db['SquareDetailsReport']['count'](_0x17f819)[_0x3fee('0x23')](function(_0x84f505){_0x47044f[_0x3fee('0x1c')]=_0x84f505;if(_0x3b9a9[_0x3fee('0x32')][_0x3fee('0x3f')]){_0x5b467b[_0x3fee('0x40')]=[{'all':!![]}];}return db[_0x3fee('0x2b')][_0x3fee('0x41')](_0x5b467b);})['then'](function(_0x5bdffb){_0x47044f['rows']=_0x5bdffb;return _0x47044f;})[_0x3fee('0x23')](respondWithFilteredResult(_0x4db73c,_0x5b467b))[_0x3fee('0x42')](handleError(_0x4db73c,null));};exports[_0x3fee('0x43')]=function(_0x91ad00,_0x24fff1){var _0x221df1={'raw':!![],'where':{'id':_0x91ad00[_0x3fee('0x44')]['id']}},_0x3ba99b={};_0x3ba99b[_0x3fee('0x30')]=_[_0x3fee('0x31')](db[_0x3fee('0x2b')]['rawAttributes']);_0x3ba99b[_0x3fee('0x32')]=_[_0x3fee('0x31')](_0x91ad00[_0x3fee('0x32')]);_0x3ba99b[_0x3fee('0x33')]=_[_0x3fee('0x34')](_0x3ba99b[_0x3fee('0x30')],_0x3ba99b[_0x3fee('0x32')]);_0x221df1[_0x3fee('0x35')]=_[_0x3fee('0x34')](_0x3ba99b[_0x3fee('0x30')],qs[_0x3fee('0x45')](_0x91ad00[_0x3fee('0x32')][_0x3fee('0x45')]));_0x221df1[_0x3fee('0x35')]=_0x221df1['attributes']['length']?_0x221df1['attributes']:_0x3ba99b['model'];if(_0x91ad00[_0x3fee('0x32')][_0x3fee('0x3f')]){_0x221df1['include']=[{'all':!![]}];}_0x221df1=_[_0x3fee('0x3c')]({},_0x221df1,_0x91ad00['options']);return db['SquareDetailsReport'][_0x3fee('0x46')](_0x221df1)[_0x3fee('0x23')](handleEntityNotFound(_0x24fff1,null))[_0x3fee('0x23')](respondWithResult(_0x24fff1,null))['catch'](handleError(_0x24fff1,null));};exports[_0x3fee('0x47')]=function(_0x9b6f2,_0x3ab76d){return db[_0x3fee('0x2b')][_0x3fee('0x47')](_0x9b6f2['body'],{})[_0x3fee('0x23')](respondWithResult(_0x3ab76d,0xc9))[_0x3fee('0x42')](handleError(_0x3ab76d,null));};exports[_0x3fee('0x48')]=function(_0x45c898,_0x52890f){if(_0x45c898[_0x3fee('0x49')]['id']){delete _0x45c898['body']['id'];}return db['SquareDetailsReport'][_0x3fee('0x46')]({'where':{'id':_0x45c898[_0x3fee('0x44')]['id']}})[_0x3fee('0x23')](handleEntityNotFound(_0x52890f,null))[_0x3fee('0x23')](saveUpdates(_0x45c898[_0x3fee('0x49')],null))['then'](respondWithResult(_0x52890f,null))[_0x3fee('0x42')](handleError(_0x52890f,null));};exports['destroy']=function(_0x40a71e,_0x1a9e56){return db[_0x3fee('0x2b')][_0x3fee('0x46')]({'where':{'id':_0x40a71e['params']['id']}})['then'](handleEntityNotFound(_0x1a9e56,null))[_0x3fee('0x23')](removeEntity(_0x1a9e56,null))['catch'](handleError(_0x1a9e56,null));};exports[_0x3fee('0x4a')]=function(_0x4631dd,_0x55a16b){return db[_0x3fee('0x2b')][_0x3fee('0x4a')]()['then'](respondWithResult(_0x55a16b,null))[_0x3fee('0x42')](handleError(_0x55a16b,null));};
\ No newline at end of file
+var _0x9be5=['ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','SquareDetailsReport','rawAttributes','type','key','map','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','filters','pick','merge','filter','options','includeAll','include','rows','show','params','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse'];(function(_0x3015f9,_0x6eeb0d){var _0x3390b6=function(_0x4cff57){while(--_0x4cff57){_0x3015f9['push'](_0x3015f9['shift']());}};_0x3390b6(++_0x6eeb0d);}(_0x9be5,0x115));var _0x59be=function(_0x42f009,_0x5e27b1){_0x42f009=_0x42f009-0x0;var _0x22a1e0=_0x9be5[_0x42f009];return _0x22a1e0;};'use strict';var emlformat=require(_0x59be('0x0'));var rimraf=require(_0x59be('0x1'));var zipdir=require(_0x59be('0x2'));var jsonpatch=require(_0x59be('0x3'));var rp=require(_0x59be('0x4'));var moment=require('moment');var BPromise=require(_0x59be('0x5'));var Mustache=require(_0x59be('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x59be('0x7'));var ejs=require(_0x59be('0x8'));var fs=require('fs');var fs_extra=require(_0x59be('0x9'));var _=require(_0x59be('0xa'));var squel=require('squel');var crypto=require(_0x59be('0xb'));var jsforce=require(_0x59be('0xc'));var deskjs=require(_0x59be('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x59be('0xe'));var Redis=require(_0x59be('0xf'));var authService=require(_0x59be('0x10'));var qs=require(_0x59be('0x11'));var as=require(_0x59be('0x12'));var hardwareService=require(_0x59be('0x13'));var logger=require(_0x59be('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x59be('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x229202,_0x15769d){_0x15769d=_0x15769d||0xcc;return function(_0x3258f4){if(_0x3258f4){return _0x229202[_0x59be('0x16')](_0x15769d);}return _0x229202[_0x59be('0x17')](_0x15769d)[_0x59be('0x18')]();};}function respondWithResult(_0xb91118,_0xf2b831){_0xf2b831=_0xf2b831||0xc8;return function(_0x63e763){if(_0x63e763){return _0xb91118[_0x59be('0x17')](_0xf2b831)[_0x59be('0x19')](_0x63e763);}};}function respondWithFilteredResult(_0x3ffe72,_0x435a9){return function(_0x380f68){if(_0x380f68){var _0x50d041=typeof _0x435a9[_0x59be('0x1a')]==='undefined'&&typeof _0x435a9['limit']===_0x59be('0x1b');var _0x3442e7=_0x380f68[_0x59be('0x1c')];var _0x5e75ec=_0x50d041?0x0:_0x435a9[_0x59be('0x1a')];var _0x53dba2=_0x50d041?_0x380f68[_0x59be('0x1c')]:_0x435a9[_0x59be('0x1a')]+_0x435a9['limit'];var _0x15eaa7;if(_0x53dba2>=_0x3442e7){_0x53dba2=_0x3442e7;_0x15eaa7=0xc8;}else{_0x15eaa7=0xce;}_0x3ffe72[_0x59be('0x17')](_0x15eaa7);return _0x3ffe72[_0x59be('0x1d')](_0x59be('0x1e'),_0x5e75ec+'-'+_0x53dba2+'/'+_0x3442e7)[_0x59be('0x19')](_0x380f68);}return null;};}function patchUpdates(_0x87340c){return function(_0x3c8c1f){try{jsonpatch[_0x59be('0x1f')](_0x3c8c1f,_0x87340c,!![]);}catch(_0x3c7983){return BPromise[_0x59be('0x20')](_0x3c7983);}return _0x3c8c1f[_0x59be('0x21')]();};}function saveUpdates(_0x1d7db3,_0x3f2f29){return function(_0x40b41e){if(_0x40b41e){return _0x40b41e[_0x59be('0x22')](_0x1d7db3)[_0x59be('0x23')](function(_0x54576b){return _0x54576b;});}return null;};}function removeEntity(_0x2d4e66,_0x1ccd3c){return function(_0x55189d){if(_0x55189d){return _0x55189d[_0x59be('0x24')]()[_0x59be('0x23')](function(){_0x2d4e66[_0x59be('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a31c9,_0x165efd){return function(_0x4a2556){if(!_0x4a2556){_0x5a31c9['sendStatus'](0x194);}return _0x4a2556;};}function handleError(_0x4742b2,_0x210a0d){_0x210a0d=_0x210a0d||0x1f4;return function(_0x5723d5){logger[_0x59be('0x25')](_0x5723d5[_0x59be('0x26')]);if(_0x5723d5['name']){delete _0x5723d5[_0x59be('0x27')];}_0x4742b2[_0x59be('0x17')](_0x210a0d)[_0x59be('0x28')](_0x5723d5);};}exports['index']=function(_0xed2e56,_0xcaae6f){var _0x43f7ae={},_0x2cd7f4={},_0x81e861={'count':0x0,'rows':[]};var _0x340218=_['map'](db[_0x59be('0x29')][_0x59be('0x2a')],function(_0x15a2f4){return{'name':_0x15a2f4['fieldName'],'type':_0x15a2f4[_0x59be('0x2b')][_0x59be('0x2c')]};});_0x2cd7f4['model']=_[_0x59be('0x2d')](_0x340218,_0x59be('0x27'));_0x2cd7f4[_0x59be('0x2e')]=_[_0x59be('0x2f')](_0xed2e56[_0x59be('0x2e')]);_0x2cd7f4['filters']=_[_0x59be('0x30')](_0x2cd7f4[_0x59be('0x31')],_0x2cd7f4['query']);_0x43f7ae[_0x59be('0x32')]=_[_0x59be('0x30')](_0x2cd7f4[_0x59be('0x31')],qs[_0x59be('0x33')](_0xed2e56[_0x59be('0x2e')]['fields']));_0x43f7ae[_0x59be('0x32')]=_0x43f7ae[_0x59be('0x32')][_0x59be('0x34')]?_0x43f7ae['attributes']:_0x2cd7f4['model'];if(!_0xed2e56[_0x59be('0x2e')][_0x59be('0x35')](_0x59be('0x36'))){_0x43f7ae[_0x59be('0x37')]=qs[_0x59be('0x37')](_0xed2e56[_0x59be('0x2e')][_0x59be('0x37')]);_0x43f7ae[_0x59be('0x1a')]=qs[_0x59be('0x1a')](_0xed2e56[_0x59be('0x2e')][_0x59be('0x1a')]);}_0x43f7ae['order']=qs[_0x59be('0x38')](_0xed2e56[_0x59be('0x2e')][_0x59be('0x38')]);_0x43f7ae[_0x59be('0x39')]=qs[_0x59be('0x3a')](_[_0x59be('0x3b')](_0xed2e56['query'],_0x2cd7f4[_0x59be('0x3a')]),_0x340218);if(_0xed2e56[_0x59be('0x2e')]['filter']){_0x43f7ae[_0x59be('0x39')]=_[_0x59be('0x3c')](_0x43f7ae[_0x59be('0x39')],{'$or':_[_0x59be('0x2d')](_0x340218,function(_0x43099e){if(_0x43099e[_0x59be('0x2b')]!=='VIRTUAL'){var _0x205338={};_0x205338[_0x43099e[_0x59be('0x27')]]={'$like':'%'+_0xed2e56[_0x59be('0x2e')][_0x59be('0x3d')]+'%'};return _0x205338;}})});}_0x43f7ae=_[_0x59be('0x3c')]({},_0x43f7ae,_0xed2e56[_0x59be('0x3e')]);var _0x5445a5={'where':_0x43f7ae[_0x59be('0x39')]};return db[_0x59be('0x29')][_0x59be('0x1c')](_0x5445a5)['then'](function(_0x72aa2){_0x81e861[_0x59be('0x1c')]=_0x72aa2;if(_0xed2e56[_0x59be('0x2e')][_0x59be('0x3f')]){_0x43f7ae[_0x59be('0x40')]=[{'all':!![]}];}return db[_0x59be('0x29')]['findAll'](_0x43f7ae);})['then'](function(_0x462427){_0x81e861[_0x59be('0x41')]=_0x462427;return _0x81e861;})[_0x59be('0x23')](respondWithFilteredResult(_0xcaae6f,_0x43f7ae))['catch'](handleError(_0xcaae6f,null));};exports[_0x59be('0x42')]=function(_0x2e3232,_0x9632ac){var _0x55c142={'raw':!![],'where':{'id':_0x2e3232[_0x59be('0x43')]['id']}},_0x23aca7={};_0x23aca7['model']=_['keys'](db[_0x59be('0x29')][_0x59be('0x2a')]);_0x23aca7[_0x59be('0x2e')]=_[_0x59be('0x2f')](_0x2e3232['query']);_0x23aca7[_0x59be('0x3a')]=_[_0x59be('0x30')](_0x23aca7[_0x59be('0x31')],_0x23aca7['query']);_0x55c142['attributes']=_['intersection'](_0x23aca7[_0x59be('0x31')],qs[_0x59be('0x33')](_0x2e3232['query'][_0x59be('0x33')]));_0x55c142['attributes']=_0x55c142['attributes']['length']?_0x55c142[_0x59be('0x32')]:_0x23aca7[_0x59be('0x31')];if(_0x2e3232[_0x59be('0x2e')][_0x59be('0x3f')]){_0x55c142[_0x59be('0x40')]=[{'all':!![]}];}_0x55c142=_[_0x59be('0x3c')]({},_0x55c142,_0x2e3232[_0x59be('0x3e')]);return db['SquareDetailsReport'][_0x59be('0x44')](_0x55c142)['then'](handleEntityNotFound(_0x9632ac,null))[_0x59be('0x23')](respondWithResult(_0x9632ac,null))[_0x59be('0x45')](handleError(_0x9632ac,null));};exports[_0x59be('0x46')]=function(_0x4a0636,_0x4fbd5f){return db['SquareDetailsReport'][_0x59be('0x46')](_0x4a0636[_0x59be('0x47')],{})['then'](respondWithResult(_0x4fbd5f,0xc9))[_0x59be('0x45')](handleError(_0x4fbd5f,null));};exports[_0x59be('0x22')]=function(_0x57c760,_0x5352f0){if(_0x57c760[_0x59be('0x47')]['id']){delete _0x57c760[_0x59be('0x47')]['id'];}return db[_0x59be('0x29')][_0x59be('0x44')]({'where':{'id':_0x57c760['params']['id']}})[_0x59be('0x23')](handleEntityNotFound(_0x5352f0,null))['then'](saveUpdates(_0x57c760[_0x59be('0x47')],null))[_0x59be('0x23')](respondWithResult(_0x5352f0,null))[_0x59be('0x45')](handleError(_0x5352f0,null));};exports[_0x59be('0x24')]=function(_0xae5919,_0x1473ed){return db[_0x59be('0x29')][_0x59be('0x44')]({'where':{'id':_0xae5919[_0x59be('0x43')]['id']}})[_0x59be('0x23')](handleEntityNotFound(_0x1473ed,null))['then'](removeEntity(_0x1473ed,null))[_0x59be('0x45')](handleError(_0x1473ed,null));};exports[_0x59be('0x48')]=function(_0x41f45e,_0x3f5ded){return db['SquareDetailsReport'][_0x59be('0x48')]()[_0x59be('0x23')](respondWithResult(_0x3f5ded,null))['catch'](handleError(_0x3f5ded,null));};
\ No newline at end of file
index f16a449..5a92f55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8847=['path','../../config/environment','./squareReportDetail.attributes','exports','define','SquareDetailsReport','lodash','util','api','moment','bluebird','request-promise'];(function(_0x37e307,_0x378e6c){var _0x44a38c=function(_0x278dce){while(--_0x278dce){_0x37e307['push'](_0x37e307['shift']());}};_0x44a38c(++_0x378e6c);}(_0x8847,0xc6));var _0x7884=function(_0x49b207,_0x408ade){_0x49b207=_0x49b207-0x0;var _0x2dc8fa=_0x8847[_0x49b207];return _0x2dc8fa;};'use strict';var _=require(_0x7884('0x0'));var util=require(_0x7884('0x1'));var logger=require('../../config/logger')(_0x7884('0x2'));var moment=require(_0x7884('0x3'));var BPromise=require(_0x7884('0x4'));var rp=require(_0x7884('0x5'));var fs=require('fs');var path=require(_0x7884('0x6'));var rimraf=require('rimraf');var config=require(_0x7884('0x7'));var attributes=require(_0x7884('0x8'));module[_0x7884('0x9')]=function(_0x57be94,_0x4bf7e9){return _0x57be94[_0x7884('0xa')](_0x7884('0xb'),attributes,{'tableName':'report_square_details','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xeaef=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareReportDetail.attributes','exports','define','SquareDetailsReport','lodash','util'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xeaef,0x186));var _0xfeae=function(_0x2fc30c,_0x559336){_0x2fc30c=_0x2fc30c-0x0;var _0x11e9a0=_0xeaef[_0x2fc30c];return _0x11e9a0;};'use strict';var _=require(_0xfeae('0x0'));var util=require(_0xfeae('0x1'));var logger=require(_0xfeae('0x2'))(_0xfeae('0x3'));var moment=require(_0xfeae('0x4'));var BPromise=require(_0xfeae('0x5'));var rp=require(_0xfeae('0x6'));var fs=require('fs');var path=require(_0xfeae('0x7'));var rimraf=require(_0xfeae('0x8'));var config=require(_0xfeae('0x9'));var attributes=require(_0xfeae('0xa'));module[_0xfeae('0xb')]=function(_0x208749,_0x4482cf){return _0x208749[_0xfeae('0xc')](_0xfeae('0xd'),attributes,{'tableName':'report_square_details','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 321d3e9..5895cda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1cc=['then','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','info','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareDetailsReport,\x20%s,\x20%s','message','result','catch','CreateSquareDetailsReport','SquareDetailsReport','body','options'];(function(_0x9b1db7,_0x17e66b){var _0x433ebf=function(_0x203fe1){while(--_0x203fe1){_0x9b1db7['push'](_0x9b1db7['shift']());}};_0x433ebf(++_0x17e66b);}(_0xa1cc,0x10f));var _0xca1c=function(_0x4e4b82,_0x5275fa){_0x4e4b82=_0x4e4b82-0x0;var _0x18927e=_0xa1cc[_0x4e4b82];return _0x18927e;};'use strict';var _=require(_0xca1c('0x0'));var util=require(_0xca1c('0x1'));var moment=require(_0xca1c('0x2'));var BPromise=require('bluebird');var rs=require(_0xca1c('0x3'));var fs=require('fs');var Redis=require(_0xca1c('0x4'));var db=require(_0xca1c('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xca1c('0x6'))('rpc');var config=require(_0xca1c('0x7'));var jayson=require(_0xca1c('0x8'));var client=jayson[_0xca1c('0x9')][_0xca1c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5d5101,_0x5132e2,_0x4ff3f7){return new BPromise(function(_0x8fc787,_0x21f118){return client['request'](_0x5d5101,_0x4ff3f7)['then'](function(_0x57807b){logger[_0xca1c('0xb')]('SquareDetailsReport,\x20%s,\x20%s',_0x5132e2,_0xca1c('0xc'));logger[_0xca1c('0xd')](_0xca1c('0xe'),_0x5132e2,_0xca1c('0xc'),JSON[_0xca1c('0xf')](_0x57807b));if(_0x57807b['error']){if(_0x57807b[_0xca1c('0x10')][_0xca1c('0x11')]===0x1f4){logger['error'](_0xca1c('0x12'),_0x5132e2,_0x57807b['error'][_0xca1c('0x13')]);return _0x21f118(_0x57807b[_0xca1c('0x10')][_0xca1c('0x13')]);}logger['error'](_0xca1c('0x12'),_0x5132e2,_0x57807b[_0xca1c('0x10')]['message']);return _0x8fc787(_0x57807b['error'][_0xca1c('0x13')]);}else{logger[_0xca1c('0xb')](_0xca1c('0x12'),_0x5132e2,_0xca1c('0xc'));_0x8fc787(_0x57807b[_0xca1c('0x14')][_0xca1c('0x13')]);}})[_0xca1c('0x15')](function(_0x357321){logger[_0xca1c('0x10')](_0xca1c('0x12'),_0x5132e2,_0x357321);_0x21f118(_0x357321);});});}exports[_0xca1c('0x16')]=function(_0x10b126){var _0x14480c=this;return new Promise(function(_0x447547,_0x329244){return db[_0xca1c('0x17')]['create'](_0x10b126[_0xca1c('0x18')],{'raw':_0x10b126[_0xca1c('0x19')]?_0x10b126['options']['raw']===undefined?!![]:![]:!![]})[_0xca1c('0x1a')](function(_0x10f801){logger[_0xca1c('0xb')](_0xca1c('0x16'),_0x10b126);logger[_0xca1c('0xd')](_0xca1c('0x16'),_0x10b126,JSON[_0xca1c('0xf')](_0x10f801));_0x447547(_0x10f801);})['catch'](function(_0x115b4d){logger['error'](_0xca1c('0x16'),_0x115b4d[_0xca1c('0x13')],_0x10b126);_0x329244(_0x14480c[_0xca1c('0x10')](0x1f4,_0x115b4d[_0xca1c('0x13')]));});});};
\ No newline at end of file
+var _0x9861=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','SquareDetailsReport,\x20%s,\x20%s,\x20%s','error','message','result','catch','CreateSquareDetailsReport','SquareDetailsReport','create','body','options','raw','stringify','lodash','bluebird','randomstring','ioredis'];(function(_0x4ce028,_0x526d4b){var _0x583d0c=function(_0x874178){while(--_0x874178){_0x4ce028['push'](_0x4ce028['shift']());}};_0x583d0c(++_0x526d4b);}(_0x9861,0x176));var _0x1986=function(_0x5e7402,_0x4d620b){_0x5e7402=_0x5e7402-0x0;var _0x5e5a27=_0x9861[_0x5e7402];return _0x5e5a27;};'use strict';var _=require(_0x1986('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x1986('0x1'));var rs=require(_0x1986('0x2'));var fs=require('fs');var Redis=require(_0x1986('0x3'));var db=require(_0x1986('0x4'))['db'];var utils=require(_0x1986('0x5'));var logger=require(_0x1986('0x6'))('rpc');var config=require(_0x1986('0x7'));var jayson=require(_0x1986('0x8'));var client=jayson[_0x1986('0x9')][_0x1986('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x40a16f,_0xc5e066,_0x412444){return new BPromise(function(_0x4150da,_0x2bd40f){return client[_0x1986('0xb')](_0x40a16f,_0x412444)['then'](function(_0x14f7b4){logger[_0x1986('0xc')](_0x1986('0xd'),_0xc5e066,_0x1986('0xe'));logger['debug'](_0x1986('0xf'),_0xc5e066,_0x1986('0xe'),JSON['stringify'](_0x14f7b4));if(_0x14f7b4[_0x1986('0x10')]){if(_0x14f7b4['error']['code']===0x1f4){logger[_0x1986('0x10')](_0x1986('0xd'),_0xc5e066,_0x14f7b4[_0x1986('0x10')][_0x1986('0x11')]);return _0x2bd40f(_0x14f7b4[_0x1986('0x10')][_0x1986('0x11')]);}logger[_0x1986('0x10')](_0x1986('0xd'),_0xc5e066,_0x14f7b4[_0x1986('0x10')][_0x1986('0x11')]);return _0x4150da(_0x14f7b4['error']['message']);}else{logger[_0x1986('0xc')](_0x1986('0xd'),_0xc5e066,'request\x20sent');_0x4150da(_0x14f7b4[_0x1986('0x12')][_0x1986('0x11')]);}})[_0x1986('0x13')](function(_0x462f14){logger[_0x1986('0x10')](_0x1986('0xd'),_0xc5e066,_0x462f14);_0x2bd40f(_0x462f14);});});}exports[_0x1986('0x14')]=function(_0x15f7b9){var _0x3b2715=this;return new Promise(function(_0x7dec68,_0x257ab1){return db[_0x1986('0x15')][_0x1986('0x16')](_0x15f7b9[_0x1986('0x17')],{'raw':_0x15f7b9['options']?_0x15f7b9[_0x1986('0x18')][_0x1986('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x3ab28e){logger[_0x1986('0xc')]('CreateSquareDetailsReport',_0x15f7b9);logger['debug'](_0x1986('0x14'),_0x15f7b9,JSON[_0x1986('0x1a')](_0x3ab28e));_0x7dec68(_0x3ab28e);})[_0x1986('0x13')](function(_0x530aa1){logger[_0x1986('0x10')](_0x1986('0x14'),_0x530aa1[_0x1986('0x11')],_0x15f7b9);_0x257ab1(_0x3b2715['error'](0x1f4,_0x530aa1[_0x1986('0x11')]));});});};
\ No newline at end of file
index 4f9a08a..80d8912 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc69e=['exports','Router','../../components/auth/service','get','index','isAuthenticated','killProcess'];(function(_0x45efce,_0x4677f1){var _0x53d66f=function(_0xe9dbd1){while(--_0xe9dbd1){_0x45efce['push'](_0x45efce['shift']());}};_0x53d66f(++_0x4677f1);}(_0xc69e,0x151));var _0xec69=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0xc69e[_0x1cc8fe];return _0x230054;};'use strict';var express=require('express');var router=express[_0xec69('0x0')]();var auth=require(_0xec69('0x1'));var controller=require('./system.controller');router[_0xec69('0x2')]('/',auth['isAuthenticated'](),controller[_0xec69('0x3')]);router['get']('/process/:pid/kill',auth[_0xec69('0x4')](),controller[_0xec69('0x5')]);module[_0xec69('0x6')]=router;
\ No newline at end of file
+var _0x4af0=['./system.controller','get','index','/process/:pid/kill','isAuthenticated','killProcess','exports','express','../../components/auth/service'];(function(_0x483652,_0x52a991){var _0x1a9cff=function(_0x127bdd){while(--_0x127bdd){_0x483652['push'](_0x483652['shift']());}};_0x1a9cff(++_0x52a991);}(_0x4af0,0x97));var _0x04af=function(_0x1c352e,_0x2bc428){_0x1c352e=_0x1c352e-0x0;var _0x5a57f6=_0x4af0[_0x1c352e];return _0x5a57f6;};'use strict';var express=require(_0x04af('0x0'));var router=express['Router']();var auth=require(_0x04af('0x1'));var controller=require(_0x04af('0x2'));router[_0x04af('0x3')]('/',auth['isAuthenticated'](),controller[_0x04af('0x4')]);router[_0x04af('0x3')](_0x04af('0x5'),auth[_0x04af('0x6')](),controller[_0x04af('0x7')]);module[_0x04af('0x8')]=router;
\ No newline at end of file
index 0e80152..51fde72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x792e=['pid','split','length','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','systeminformation','child_process','exec','api','util','bluebird','lodash','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','status','send','getAllData','then','json','catch','killProcess','components/import/cm','format','params'];(function(_0x324645,_0xdc9c60){var _0x518909=function(_0x48a9f9){while(--_0x48a9f9){_0x324645['push'](_0x324645['shift']());}};_0x518909(++_0xdc9c60);}(_0x792e,0xa9));var _0xe792=function(_0x2505c9,_0x12c77f){_0x2505c9=_0x2505c9-0x0;var _0x357162=_0x792e[_0x2505c9];return _0x357162;};'use strict';var info=require(_0xe792('0x0'));var exec=require(_0xe792('0x1'))[_0xe792('0x2')];var logger=require('../../config/logger')(_0xe792('0x3'));var util=require(_0xe792('0x4'));var BPromise=require(_0xe792('0x5'));var _=require(_0xe792('0x6'));function handleError(_0xc18562,_0x38726d,_0x49dc46){_0x38726d=_0x38726d||0x1f4;return function(_0x34f1c1){logger['error'](_0xe792('0x7'),_0x49dc46,_0x38726d,util[_0xe792('0x8')](_0x34f1c1,{'showHidden':![],'depth':null}));delete _0x34f1c1[_0xe792('0x9')];_0xc18562[_0xe792('0xa')](_0x38726d)[_0xe792('0xb')](_0x34f1c1);};}exports['index']=function(_0x3deefe,_0x4b9791){return info[_0xe792('0xc')]()[_0xe792('0xd')](function(_0x26c6b4){return _0x4b9791[_0xe792('0xa')](0xc8)[_0xe792('0xe')](_0x26c6b4);})[_0xe792('0xf')](function(_0x5b914f){return _0x4b9791['status'](0x1f4)['json'](_0x5b914f);});};exports[_0xe792('0x10')]=function(_0x26f060,_0x149726){var _0x424f1b=[_0xe792('0x11')];return new BPromise(function(_0x5e8980,_0x45da7b){return exec(util[_0xe792('0x12')]('ps\x20-p\x20%s\x20-ww\x20-o\x20args',_0x26f060[_0xe792('0x13')][_0xe792('0x14')]),function(_0x195539,_0x2d93bf,_0x1e7997){if(_0x195539){return _0x45da7b(_0x195539);}return _0x5e8980(_0x2d93bf);});})['then'](function(_0x25ef3c){var _0x582497=![];var _0x1f9a9e=_0x25ef3c[_0xe792('0x15')](/\n/);for(var _0x25ff76=0x0,_0x9c9aff=_0x424f1b[_0xe792('0x16')];_0x25ff76<_0x9c9aff,_0x582497===![];_0x25ff76+=0x1){if(_0x25ef3c[_0xe792('0x17')](_0x424f1b[_0x25ff76])>=0x0){_0x582497=!![];}}if(!_0x582497){throw new Error(util[_0xe792('0x12')](_0xe792('0x18'),_0x26f060['params'][_0xe792('0x14')]));}process['kill'](_0x26f060['params'][_0xe792('0x14')],_0xe792('0x19'));return _0x149726[_0xe792('0xa')](0xc8)['json']({'message':util[_0xe792('0x12')](_0xe792('0x1a'),_0x26f060[_0xe792('0x13')][_0xe792('0x14')])});})[_0xe792('0xf')](handleError(_0x149726,null,_0xe792('0x10')));};
\ No newline at end of file
+var _0x7bf6=['inspect','status','send','index','getAllData','then','json','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid','split','length','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','kill','SIGINT','catch','killProcess','systeminformation','child_process','exec','../../config/logger','api','util','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s'];(function(_0x12e682,_0x33f3a3){var _0x26e600=function(_0x4d79dc){while(--_0x4d79dc){_0x12e682['push'](_0x12e682['shift']());}};_0x26e600(++_0x33f3a3);}(_0x7bf6,0xa5));var _0x67bf=function(_0x244a7a,_0x14f622){_0x244a7a=_0x244a7a-0x0;var _0x3988de=_0x7bf6[_0x244a7a];return _0x3988de;};'use strict';var info=require(_0x67bf('0x0'));var exec=require(_0x67bf('0x1'))[_0x67bf('0x2')];var logger=require(_0x67bf('0x3'))(_0x67bf('0x4'));var util=require(_0x67bf('0x5'));var BPromise=require('bluebird');var _=require(_0x67bf('0x6'));function handleError(_0x36a38c,_0x53768f,_0x17ea3c){_0x53768f=_0x53768f||0x1f4;return function(_0x1fe8fd){logger[_0x67bf('0x7')](_0x67bf('0x8'),_0x17ea3c,_0x53768f,util[_0x67bf('0x9')](_0x1fe8fd,{'showHidden':![],'depth':null}));delete _0x1fe8fd['name'];_0x36a38c[_0x67bf('0xa')](_0x53768f)[_0x67bf('0xb')](_0x1fe8fd);};}exports[_0x67bf('0xc')]=function(_0x5ac6e5,_0x577c0d){return info[_0x67bf('0xd')]()[_0x67bf('0xe')](function(_0x3059d7){return _0x577c0d[_0x67bf('0xa')](0xc8)[_0x67bf('0xf')](_0x3059d7);})['catch'](function(_0x3d9226){return _0x577c0d[_0x67bf('0xa')](0x1f4)[_0x67bf('0xf')](_0x3d9226);});};exports['killProcess']=function(_0x41152a,_0x52b1ad){var _0x4d3093=[_0x67bf('0x10')];return new BPromise(function(_0x354916,_0x31b2af){return exec(util[_0x67bf('0x11')](_0x67bf('0x12'),_0x41152a[_0x67bf('0x13')][_0x67bf('0x14')]),function(_0x399db7,_0x51426b,_0x2c517c){if(_0x399db7){return _0x31b2af(_0x399db7);}return _0x354916(_0x51426b);});})[_0x67bf('0xe')](function(_0x1e014e){var _0x28ff70=![];var _0x3212bf=_0x1e014e[_0x67bf('0x15')](/\n/);for(var _0x3c0733=0x0,_0x5a9f2d=_0x4d3093[_0x67bf('0x16')];_0x3c0733<_0x5a9f2d,_0x28ff70===![];_0x3c0733+=0x1){if(_0x1e014e[_0x67bf('0x17')](_0x4d3093[_0x3c0733])>=0x0){_0x28ff70=!![];}}if(!_0x28ff70){throw new Error(util[_0x67bf('0x11')](_0x67bf('0x18'),_0x41152a[_0x67bf('0x13')][_0x67bf('0x14')]));}process[_0x67bf('0x19')](_0x41152a[_0x67bf('0x13')][_0x67bf('0x14')],_0x67bf('0x1a'));return _0x52b1ad[_0x67bf('0xa')](0xc8)['json']({'message':util['format']('Process\x20with\x20pid\x20%s\x20killed\x20correctly',_0x41152a[_0x67bf('0x13')][_0x67bf('0x14')])});})[_0x67bf('0x1b')](handleError(_0x52b1ad,null,_0x67bf('0x1c')));};
\ No newline at end of file
index 8a8008f..b475ed7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d49=['./tag.controller','get','/:id','isAuthenticated','show','create','update','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x2aa91f,_0x4728b0){var _0x52194e=function(_0xed3ff5){while(--_0xed3ff5){_0x2aa91f['push'](_0x2aa91f['shift']());}};_0x52194e(++_0x4728b0);}(_0x9d49,0xcf));var _0x99d4=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x9d49[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0x99d4('0x0'));var util=require('util');var path=require(_0x99d4('0x1'));var timeout=require(_0x99d4('0x2'));var express=require(_0x99d4('0x3'));var router=express[_0x99d4('0x4')]();var fs_extra=require(_0x99d4('0x5'));var auth=require(_0x99d4('0x6'));var interaction=require(_0x99d4('0x7'));var config=require(_0x99d4('0x8'));var controller=require(_0x99d4('0x9'));router[_0x99d4('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x99d4('0xa')](_0x99d4('0xb'),auth[_0x99d4('0xc')](),controller[_0x99d4('0xd')]);router['post']('/',auth[_0x99d4('0xc')](),controller[_0x99d4('0xe')]);router['put'](_0x99d4('0xb'),auth[_0x99d4('0xc')](),controller[_0x99d4('0xf')]);router[_0x99d4('0x10')]('/:id',auth[_0x99d4('0xc')](),controller['destroy']);module[_0x99d4('0x11')]=router;
\ No newline at end of file
+var _0x17fb=['../../config/environment','get','isAuthenticated','show','post','/:id','update','exports','multer','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x5b964b,_0xe2062a){var _0x2f187d=function(_0x167ff2){while(--_0x167ff2){_0x5b964b['push'](_0x5b964b['shift']());}};_0x2f187d(++_0xe2062a);}(_0x17fb,0xa2));var _0xb17f=function(_0x11a962,_0x3cc338){_0x11a962=_0x11a962-0x0;var _0x55d423=_0x17fb[_0x11a962];return _0x55d423;};'use strict';var multer=require(_0xb17f('0x0'));var util=require('util');var path=require(_0xb17f('0x1'));var timeout=require(_0xb17f('0x2'));var express=require('express');var router=express[_0xb17f('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xb17f('0x4'));var interaction=require(_0xb17f('0x5'));var config=require(_0xb17f('0x6'));var controller=require('./tag.controller');router[_0xb17f('0x7')]('/',auth[_0xb17f('0x8')](),controller['index']);router[_0xb17f('0x7')]('/:id',auth[_0xb17f('0x8')](),controller[_0xb17f('0x9')]);router[_0xb17f('0xa')]('/',auth[_0xb17f('0x8')](),controller['create']);router['put'](_0xb17f('0xb'),auth[_0xb17f('0x8')](),controller[_0xb17f('0xc')]);router['delete'](_0xb17f('0xb'),auth[_0xb17f('0x8')](),controller['destroy']);module[_0xb17f('0xd')]=router;
\ No newline at end of file
index adab05c..40ae921 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3495=['STRING','name','#0091EA','sequelize','exports'];(function(_0x36d396,_0x147741){var _0x5e5aaa=function(_0x1eae29){while(--_0x1eae29){_0x36d396['push'](_0x36d396['shift']());}};_0x5e5aaa(++_0x147741);}(_0x3495,0x1de));var _0x5349=function(_0xab9352,_0x497dd7){_0xab9352=_0xab9352-0x0;var _0x16e292=_0x3495[_0xab9352];return _0x16e292;};'use strict';var Sequelize=require(_0x5349('0x0'));module[_0x5349('0x1')]={'name':{'type':Sequelize[_0x5349('0x2')],'unique':_0x5349('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x5349('0x2')],'defaultValue':_0x5349('0x4')},'description':{'type':Sequelize[_0x5349('0x2')]}};
\ No newline at end of file
+var _0x98d8=['#0091EA','sequelize','exports','STRING','name'];(function(_0x21c320,_0x43b53f){var _0x19b48a=function(_0x5ccf59){while(--_0x5ccf59){_0x21c320['push'](_0x21c320['shift']());}};_0x19b48a(++_0x43b53f);}(_0x98d8,0xce));var _0x898d=function(_0x4b70a2,_0x5d0fbd){_0x4b70a2=_0x4b70a2-0x0;var _0x2170fa=_0x98d8[_0x4b70a2];return _0x2170fa;};'use strict';var Sequelize=require(_0x898d('0x0'));module[_0x898d('0x1')]={'name':{'type':Sequelize[_0x898d('0x2')],'unique':_0x898d('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x898d('0x2')],'defaultValue':_0x898d('0x4')},'description':{'type':Sequelize[_0x898d('0x2')]}};
\ No newline at end of file
index 2882516..8d4faec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37f8=['end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','get','Tags','UserProfileResource','error','stack','name','index','map','Tag','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','options','includeAll','include','findAll','catch','params','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','body','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x54dc64,_0x2302c9){var _0x2668f9=function(_0x4d70cb){while(--_0x4d70cb){_0x54dc64['push'](_0x54dc64['shift']());}};_0x2668f9(++_0x2302c9);}(_0x37f8,0xd2));var _0x837f=function(_0x19a1c4,_0x5dbfc5){_0x19a1c4=_0x19a1c4-0x0;var _0x1877b2=_0x37f8[_0x19a1c4];return _0x1877b2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x837f('0x0'));var zipdir=require(_0x837f('0x1'));var jsonpatch=require(_0x837f('0x2'));var rp=require(_0x837f('0x3'));var moment=require('moment');var BPromise=require(_0x837f('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x837f('0x5'));var fs=require('fs');var fs_extra=require(_0x837f('0x6'));var _=require(_0x837f('0x7'));var squel=require(_0x837f('0x8'));var crypto=require(_0x837f('0x9'));var jsforce=require(_0x837f('0xa'));var deskjs=require(_0x837f('0xb'));var toCsv=require(_0x837f('0xc'));var querystring=require(_0x837f('0xd'));var Papa=require(_0x837f('0xe'));var Redis=require(_0x837f('0xf'));var authService=require(_0x837f('0x10'));var qs=require(_0x837f('0x11'));var as=require(_0x837f('0x12'));var hardwareService=require(_0x837f('0x13'));var logger=require('../../config/logger')(_0x837f('0x14'));var utils=require(_0x837f('0x15'));var config=require(_0x837f('0x16'));var licenseUtil=require(_0x837f('0x17'));var db=require(_0x837f('0x18'))['db'];function respondWithStatusCode(_0x4a8c00,_0x53045e){_0x53045e=_0x53045e||0xcc;return function(_0x14ff6d){if(_0x14ff6d){return _0x4a8c00[_0x837f('0x19')](_0x53045e);}return _0x4a8c00[_0x837f('0x1a')](_0x53045e)[_0x837f('0x1b')]();};}function respondWithResult(_0x2b3cd6,_0x483267){_0x483267=_0x483267||0xc8;return function(_0x18d8aa){if(_0x18d8aa){return _0x2b3cd6[_0x837f('0x1a')](_0x483267)[_0x837f('0x1c')](_0x18d8aa);}};}function respondWithFilteredResult(_0x1664e7,_0x2e4257){return function(_0x29369d){if(_0x29369d){var _0x546352=typeof _0x2e4257[_0x837f('0x1d')]===_0x837f('0x1e')&&typeof _0x2e4257['limit']===_0x837f('0x1e');var _0x2745f6=_0x29369d[_0x837f('0x1f')];var _0x1d17b3=_0x546352?0x0:_0x2e4257['offset'];var _0x1d974f=_0x546352?_0x29369d[_0x837f('0x1f')]:_0x2e4257[_0x837f('0x1d')]+_0x2e4257[_0x837f('0x20')];var _0x14b3da;if(_0x1d974f>=_0x2745f6){_0x1d974f=_0x2745f6;_0x14b3da=0xc8;}else{_0x14b3da=0xce;}_0x1664e7['status'](_0x14b3da);return _0x1664e7[_0x837f('0x21')](_0x837f('0x22'),_0x1d17b3+'-'+_0x1d974f+'/'+_0x2745f6)[_0x837f('0x1c')](_0x29369d);}return null;};}function patchUpdates(_0x33c7cb){return function(_0x3540f3){try{jsonpatch['apply'](_0x3540f3,_0x33c7cb,!![]);}catch(_0x2e9603){return BPromise[_0x837f('0x23')](_0x2e9603);}return _0x3540f3[_0x837f('0x24')]();};}function saveUpdates(_0xe68eb1,_0xa0af78){return function(_0x237656){if(_0x237656){return _0x237656[_0x837f('0x25')](_0xe68eb1)[_0x837f('0x26')](function(_0x11a9b3){return _0x11a9b3;});}return null;};}function removeEntity(_0x168455,_0x3fa18e){return function(_0xfb4df0){if(_0xfb4df0){return _0xfb4df0[_0x837f('0x27')]()[_0x837f('0x26')](function(){var _0x68af0d=_0xfb4df0[_0x837f('0x28')]({'plain':!![]});var _0x43ca7d=_0x837f('0x29');return db[_0x837f('0x2a')][_0x837f('0x27')]({'where':{'type':_0x43ca7d,'resourceId':_0x68af0d['id']}})[_0x837f('0x26')](function(){return _0xfb4df0;});})[_0x837f('0x26')](function(){_0x168455[_0x837f('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3f467d,_0x2df32d){return function(_0x4290e6){if(!_0x4290e6){_0x3f467d['sendStatus'](0x194);}return _0x4290e6;};}function handleError(_0x530f6d,_0x2aa4c0){_0x2aa4c0=_0x2aa4c0||0x1f4;return function(_0x1ab2e4){logger[_0x837f('0x2b')](_0x1ab2e4[_0x837f('0x2c')]);if(_0x1ab2e4[_0x837f('0x2d')]){delete _0x1ab2e4[_0x837f('0x2d')];}_0x530f6d[_0x837f('0x1a')](_0x2aa4c0)['send'](_0x1ab2e4);};}exports[_0x837f('0x2e')]=function(_0x13a2e1,_0x266871){var _0x2dd495={},_0x5d53c6={},_0x4e4528={'count':0x0,'rows':[]};var _0x501a80=_[_0x837f('0x2f')](db[_0x837f('0x30')][_0x837f('0x31')],function(_0x422498){return{'name':_0x422498['fieldName'],'type':_0x422498[_0x837f('0x32')]['key']};});_0x5d53c6[_0x837f('0x33')]=_['map'](_0x501a80,'name');_0x5d53c6[_0x837f('0x34')]=_[_0x837f('0x35')](_0x13a2e1[_0x837f('0x34')]);_0x5d53c6[_0x837f('0x36')]=_[_0x837f('0x37')](_0x5d53c6['model'],_0x5d53c6['query']);_0x2dd495[_0x837f('0x38')]=_['intersection'](_0x5d53c6[_0x837f('0x33')],qs[_0x837f('0x39')](_0x13a2e1['query'][_0x837f('0x39')]));_0x2dd495[_0x837f('0x38')]=_0x2dd495[_0x837f('0x38')][_0x837f('0x3a')]?_0x2dd495[_0x837f('0x38')]:_0x5d53c6['model'];if(!_0x13a2e1[_0x837f('0x34')][_0x837f('0x3b')](_0x837f('0x3c'))){_0x2dd495[_0x837f('0x20')]=qs[_0x837f('0x20')](_0x13a2e1['query']['limit']);_0x2dd495[_0x837f('0x1d')]=qs['offset'](_0x13a2e1['query'][_0x837f('0x1d')]);}_0x2dd495[_0x837f('0x3d')]=qs['sort'](_0x13a2e1['query'][_0x837f('0x3e')]);_0x2dd495[_0x837f('0x3f')]=qs[_0x837f('0x36')](_['pick'](_0x13a2e1[_0x837f('0x34')],_0x5d53c6[_0x837f('0x36')]),_0x501a80);if(_0x13a2e1[_0x837f('0x34')][_0x837f('0x40')]){_0x2dd495[_0x837f('0x3f')]=_['merge'](_0x2dd495['where'],{'$or':_[_0x837f('0x2f')](_0x501a80,function(_0x211af0){if(_0x211af0[_0x837f('0x32')]!=='VIRTUAL'){var _0x5e001c={};_0x5e001c[_0x211af0[_0x837f('0x2d')]]={'$like':'%'+_0x13a2e1[_0x837f('0x34')][_0x837f('0x40')]+'%'};return _0x5e001c;}})});}_0x2dd495=_['merge']({},_0x2dd495,_0x13a2e1[_0x837f('0x41')]);var _0x29fb2b={'where':_0x2dd495['where']};return db['Tag']['count'](_0x29fb2b)[_0x837f('0x26')](function(_0x3509b6){_0x4e4528[_0x837f('0x1f')]=_0x3509b6;if(_0x13a2e1[_0x837f('0x34')][_0x837f('0x42')]){_0x2dd495[_0x837f('0x43')]=[{'all':!![]}];}return db[_0x837f('0x30')][_0x837f('0x44')](_0x2dd495);})[_0x837f('0x26')](function(_0xb06317){_0x4e4528['rows']=_0xb06317;return _0x4e4528;})[_0x837f('0x26')](respondWithFilteredResult(_0x266871,_0x2dd495))[_0x837f('0x45')](handleError(_0x266871,null));};exports['show']=function(_0xc2e307,_0x252886){var _0x303223={'raw':!![],'where':{'id':_0xc2e307[_0x837f('0x46')]['id']}},_0x443e7c={};_0x443e7c[_0x837f('0x33')]=_['keys'](db[_0x837f('0x30')][_0x837f('0x31')]);_0x443e7c[_0x837f('0x34')]=_[_0x837f('0x35')](_0xc2e307[_0x837f('0x34')]);_0x443e7c[_0x837f('0x36')]=_[_0x837f('0x37')](_0x443e7c[_0x837f('0x33')],_0x443e7c['query']);_0x303223[_0x837f('0x38')]=_[_0x837f('0x37')](_0x443e7c['model'],qs[_0x837f('0x39')](_0xc2e307[_0x837f('0x34')]['fields']));_0x303223[_0x837f('0x38')]=_0x303223[_0x837f('0x38')][_0x837f('0x3a')]?_0x303223[_0x837f('0x38')]:_0x443e7c[_0x837f('0x33')];if(_0xc2e307[_0x837f('0x34')]['includeAll']){_0x303223[_0x837f('0x43')]=[{'all':!![]}];}_0x303223=_['merge']({},_0x303223,_0xc2e307[_0x837f('0x41')]);return db[_0x837f('0x30')][_0x837f('0x47')](_0x303223)[_0x837f('0x26')](handleEntityNotFound(_0x252886,null))[_0x837f('0x26')](respondWithResult(_0x252886,null))[_0x837f('0x45')](handleError(_0x252886,null));};exports['create']=function(_0x554f74,_0x5edfcc){return db[_0x837f('0x30')][_0x837f('0x48')](_0x554f74['body'],{})[_0x837f('0x26')](function(_0x58184b){var _0x288995=_0x554f74[_0x837f('0x49')][_0x837f('0x28')]({'plain':!![]});if(!_0x288995)throw new Error(_0x837f('0x4a'));if(_0x288995[_0x837f('0x4b')]===_0x837f('0x49')){var _0x4d9156=_0x58184b[_0x837f('0x28')]({'plain':!![]});var _0x49ce77=_0x837f('0x29');return db[_0x837f('0x4c')][_0x837f('0x47')]({'where':{'name':_0x49ce77,'userProfileId':_0x288995['userProfileId']},'raw':!![]})[_0x837f('0x26')](function(_0x3f27ca){if(_0x3f27ca&&_0x3f27ca[_0x837f('0x4d')]===0x0){return db[_0x837f('0x2a')][_0x837f('0x48')]({'name':_0x4d9156[_0x837f('0x2d')],'resourceId':_0x4d9156['id'],'type':_0x3f27ca['name'],'sectionId':_0x3f27ca['id']},{})[_0x837f('0x26')](function(){return _0x58184b;});}else{return _0x58184b;}})[_0x837f('0x45')](function(_0x3a65b5){logger[_0x837f('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3a65b5);throw _0x3a65b5;});}return _0x58184b;})[_0x837f('0x26')](respondWithResult(_0x5edfcc,0xc9))['catch'](handleError(_0x5edfcc,null));};exports[_0x837f('0x25')]=function(_0x576365,_0x23d555){if(_0x576365[_0x837f('0x4e')]['id']){delete _0x576365[_0x837f('0x4e')]['id'];}return db[_0x837f('0x30')][_0x837f('0x47')]({'where':{'id':_0x576365[_0x837f('0x46')]['id']}})[_0x837f('0x26')](handleEntityNotFound(_0x23d555,null))[_0x837f('0x26')](saveUpdates(_0x576365[_0x837f('0x4e')],null))[_0x837f('0x26')](respondWithResult(_0x23d555,null))[_0x837f('0x45')](handleError(_0x23d555,null));};exports[_0x837f('0x27')]=function(_0x4f2730,_0x4ade1b){return db[_0x837f('0x30')]['find']({'where':{'id':_0x4f2730[_0x837f('0x46')]['id']}})[_0x837f('0x26')](handleEntityNotFound(_0x4ade1b,null))[_0x837f('0x26')](removeEntity(_0x4ade1b,null))[_0x837f('0x45')](handleError(_0x4ade1b,null));};
\ No newline at end of file
+var _0xda55=['filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','body','role','user','Tags','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','find','destroy','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','reject','save','then','get','error','stack','name','send','index','map','Tag','fieldName','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x18f7da,_0x40d95e){var _0x38a3c4=function(_0x3480b5){while(--_0x3480b5){_0x18f7da['push'](_0x18f7da['shift']());}};_0x38a3c4(++_0x40d95e);}(_0xda55,0x6d));var _0x5da5=function(_0x45cd59,_0x5be7c0){_0x45cd59=_0x45cd59-0x0;var _0x39541a=_0xda55[_0x45cd59];return _0x39541a;};'use strict';var emlformat=require(_0x5da5('0x0'));var rimraf=require(_0x5da5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x5da5('0x2'));var moment=require(_0x5da5('0x3'));var BPromise=require(_0x5da5('0x4'));var Mustache=require(_0x5da5('0x5'));var util=require(_0x5da5('0x6'));var path=require('path');var sox=require(_0x5da5('0x7'));var csv=require('to-csv');var ejs=require(_0x5da5('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5da5('0x9'));var squel=require(_0x5da5('0xa'));var crypto=require(_0x5da5('0xb'));var jsforce=require(_0x5da5('0xc'));var deskjs=require(_0x5da5('0xd'));var toCsv=require(_0x5da5('0xe'));var querystring=require(_0x5da5('0xf'));var Papa=require(_0x5da5('0x10'));var Redis=require('ioredis');var authService=require(_0x5da5('0x11'));var qs=require(_0x5da5('0x12'));var as=require(_0x5da5('0x13'));var hardwareService=require(_0x5da5('0x14'));var logger=require(_0x5da5('0x15'))(_0x5da5('0x16'));var utils=require(_0x5da5('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x5da5('0x18'));var db=require(_0x5da5('0x19'))['db'];function respondWithStatusCode(_0x4f813b,_0x37aeb0){_0x37aeb0=_0x37aeb0||0xcc;return function(_0x31366e){if(_0x31366e){return _0x4f813b[_0x5da5('0x1a')](_0x37aeb0);}return _0x4f813b[_0x5da5('0x1b')](_0x37aeb0)[_0x5da5('0x1c')]();};}function respondWithResult(_0x440b8f,_0x481562){_0x481562=_0x481562||0xc8;return function(_0x489b60){if(_0x489b60){return _0x440b8f['status'](_0x481562)[_0x5da5('0x1d')](_0x489b60);}};}function respondWithFilteredResult(_0x126fc8,_0x13c701){return function(_0x665ce8){if(_0x665ce8){var _0x11bd3=typeof _0x13c701[_0x5da5('0x1e')]===_0x5da5('0x1f')&&typeof _0x13c701['limit']===_0x5da5('0x1f');var _0x290136=_0x665ce8[_0x5da5('0x20')];var _0x16b11f=_0x11bd3?0x0:_0x13c701[_0x5da5('0x1e')];var _0x428b07=_0x11bd3?_0x665ce8['count']:_0x13c701[_0x5da5('0x1e')]+_0x13c701[_0x5da5('0x21')];var _0x3d3d26;if(_0x428b07>=_0x290136){_0x428b07=_0x290136;_0x3d3d26=0xc8;}else{_0x3d3d26=0xce;}_0x126fc8[_0x5da5('0x1b')](_0x3d3d26);return _0x126fc8[_0x5da5('0x22')]('Content-Range',_0x16b11f+'-'+_0x428b07+'/'+_0x290136)[_0x5da5('0x1d')](_0x665ce8);}return null;};}function patchUpdates(_0x3372fc){return function(_0x42a3cb){try{jsonpatch['apply'](_0x42a3cb,_0x3372fc,!![]);}catch(_0x3e0b28){return BPromise[_0x5da5('0x23')](_0x3e0b28);}return _0x42a3cb[_0x5da5('0x24')]();};}function saveUpdates(_0x2e68d5,_0xec69f2){return function(_0x436960){if(_0x436960){return _0x436960['update'](_0x2e68d5)[_0x5da5('0x25')](function(_0x568ddf){return _0x568ddf;});}return null;};}function removeEntity(_0x1b67c4,_0x716ab7){return function(_0x2dd138){if(_0x2dd138){return _0x2dd138['destroy']()[_0x5da5('0x25')](function(){var _0x236bf3=_0x2dd138[_0x5da5('0x26')]({'plain':!![]});var _0x21e795='Tags';return db['UserProfileResource']['destroy']({'where':{'type':_0x21e795,'resourceId':_0x236bf3['id']}})[_0x5da5('0x25')](function(){return _0x2dd138;});})['then'](function(){_0x1b67c4['status'](0xcc)[_0x5da5('0x1c')]();});}};}function handleEntityNotFound(_0x3974d8,_0x5740a7){return function(_0x1798ae){if(!_0x1798ae){_0x3974d8[_0x5da5('0x1a')](0x194);}return _0x1798ae;};}function handleError(_0x558b12,_0x3b815e){_0x3b815e=_0x3b815e||0x1f4;return function(_0x27de55){logger[_0x5da5('0x27')](_0x27de55[_0x5da5('0x28')]);if(_0x27de55[_0x5da5('0x29')]){delete _0x27de55['name'];}_0x558b12[_0x5da5('0x1b')](_0x3b815e)[_0x5da5('0x2a')](_0x27de55);};}exports[_0x5da5('0x2b')]=function(_0x15a0c0,_0x55e2bf){var _0x5ee7f2={},_0x4cb022={},_0x245273={'count':0x0,'rows':[]};var _0x27ed41=_[_0x5da5('0x2c')](db[_0x5da5('0x2d')]['rawAttributes'],function(_0x585298){return{'name':_0x585298[_0x5da5('0x2e')],'type':_0x585298['type']['key']};});_0x4cb022[_0x5da5('0x2f')]=_['map'](_0x27ed41,_0x5da5('0x29'));_0x4cb022[_0x5da5('0x30')]=_[_0x5da5('0x31')](_0x15a0c0[_0x5da5('0x30')]);_0x4cb022[_0x5da5('0x32')]=_[_0x5da5('0x33')](_0x4cb022[_0x5da5('0x2f')],_0x4cb022[_0x5da5('0x30')]);_0x5ee7f2['attributes']=_[_0x5da5('0x33')](_0x4cb022['model'],qs[_0x5da5('0x34')](_0x15a0c0[_0x5da5('0x30')][_0x5da5('0x34')]));_0x5ee7f2[_0x5da5('0x35')]=_0x5ee7f2[_0x5da5('0x35')][_0x5da5('0x36')]?_0x5ee7f2[_0x5da5('0x35')]:_0x4cb022[_0x5da5('0x2f')];if(!_0x15a0c0[_0x5da5('0x30')][_0x5da5('0x37')](_0x5da5('0x38'))){_0x5ee7f2[_0x5da5('0x21')]=qs[_0x5da5('0x21')](_0x15a0c0['query'][_0x5da5('0x21')]);_0x5ee7f2['offset']=qs[_0x5da5('0x1e')](_0x15a0c0[_0x5da5('0x30')][_0x5da5('0x1e')]);}_0x5ee7f2[_0x5da5('0x39')]=qs['sort'](_0x15a0c0[_0x5da5('0x30')][_0x5da5('0x3a')]);_0x5ee7f2[_0x5da5('0x3b')]=qs['filters'](_[_0x5da5('0x3c')](_0x15a0c0[_0x5da5('0x30')],_0x4cb022['filters']),_0x27ed41);if(_0x15a0c0[_0x5da5('0x30')][_0x5da5('0x3d')]){_0x5ee7f2[_0x5da5('0x3b')]=_[_0x5da5('0x3e')](_0x5ee7f2[_0x5da5('0x3b')],{'$or':_[_0x5da5('0x2c')](_0x27ed41,function(_0x52a902){if(_0x52a902[_0x5da5('0x3f')]!==_0x5da5('0x40')){var _0x14c3f5={};_0x14c3f5[_0x52a902[_0x5da5('0x29')]]={'$like':'%'+_0x15a0c0[_0x5da5('0x30')]['filter']+'%'};return _0x14c3f5;}})});}_0x5ee7f2=_[_0x5da5('0x3e')]({},_0x5ee7f2,_0x15a0c0[_0x5da5('0x41')]);var _0x5a189e={'where':_0x5ee7f2[_0x5da5('0x3b')]};return db['Tag']['count'](_0x5a189e)[_0x5da5('0x25')](function(_0x21c579){_0x245273[_0x5da5('0x20')]=_0x21c579;if(_0x15a0c0[_0x5da5('0x30')][_0x5da5('0x42')]){_0x5ee7f2[_0x5da5('0x43')]=[{'all':!![]}];}return db[_0x5da5('0x2d')][_0x5da5('0x44')](_0x5ee7f2);})[_0x5da5('0x25')](function(_0x2a2814){_0x245273[_0x5da5('0x45')]=_0x2a2814;return _0x245273;})[_0x5da5('0x25')](respondWithFilteredResult(_0x55e2bf,_0x5ee7f2))[_0x5da5('0x46')](handleError(_0x55e2bf,null));};exports[_0x5da5('0x47')]=function(_0x284d40,_0x30be40){var _0x1fc965={'raw':!![],'where':{'id':_0x284d40[_0x5da5('0x48')]['id']}},_0x4464a7={};_0x4464a7[_0x5da5('0x2f')]=_['keys'](db['Tag'][_0x5da5('0x49')]);_0x4464a7[_0x5da5('0x30')]=_['keys'](_0x284d40[_0x5da5('0x30')]);_0x4464a7[_0x5da5('0x32')]=_[_0x5da5('0x33')](_0x4464a7[_0x5da5('0x2f')],_0x4464a7[_0x5da5('0x30')]);_0x1fc965[_0x5da5('0x35')]=_[_0x5da5('0x33')](_0x4464a7[_0x5da5('0x2f')],qs[_0x5da5('0x34')](_0x284d40[_0x5da5('0x30')]['fields']));_0x1fc965[_0x5da5('0x35')]=_0x1fc965['attributes']['length']?_0x1fc965[_0x5da5('0x35')]:_0x4464a7[_0x5da5('0x2f')];if(_0x284d40[_0x5da5('0x30')][_0x5da5('0x42')]){_0x1fc965[_0x5da5('0x43')]=[{'all':!![]}];}_0x1fc965=_[_0x5da5('0x3e')]({},_0x1fc965,_0x284d40['options']);return db[_0x5da5('0x2d')]['find'](_0x1fc965)['then'](handleEntityNotFound(_0x30be40,null))[_0x5da5('0x25')](respondWithResult(_0x30be40,null))[_0x5da5('0x46')](handleError(_0x30be40,null));};exports['create']=function(_0x419d74,_0x322b08){return db[_0x5da5('0x2d')][_0x5da5('0x4a')](_0x419d74[_0x5da5('0x4b')],{})['then'](function(_0x225792){var _0x5277bc=_0x419d74['user'][_0x5da5('0x26')]({'plain':!![]});if(!_0x5277bc)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5277bc[_0x5da5('0x4c')]===_0x5da5('0x4d')){var _0x17581a=_0x225792[_0x5da5('0x26')]({'plain':!![]});var _0x2cc43f=_0x5da5('0x4e');return db['UserProfileSection']['find']({'where':{'name':_0x2cc43f,'userProfileId':_0x5277bc[_0x5da5('0x4f')]},'raw':!![]})[_0x5da5('0x25')](function(_0x520830){if(_0x520830&&_0x520830['autoAssociation']===0x0){return db[_0x5da5('0x50')]['create']({'name':_0x17581a[_0x5da5('0x29')],'resourceId':_0x17581a['id'],'type':_0x520830['name'],'sectionId':_0x520830['id']},{})['then'](function(){return _0x225792;});}else{return _0x225792;}})[_0x5da5('0x46')](function(_0x323655){logger[_0x5da5('0x27')](_0x5da5('0x51'),_0x323655);throw _0x323655;});}return _0x225792;})['then'](respondWithResult(_0x322b08,0xc9))[_0x5da5('0x46')](handleError(_0x322b08,null));};exports[_0x5da5('0x52')]=function(_0xa1d591,_0x56523b){if(_0xa1d591[_0x5da5('0x4b')]['id']){delete _0xa1d591[_0x5da5('0x4b')]['id'];}return db[_0x5da5('0x2d')][_0x5da5('0x53')]({'where':{'id':_0xa1d591[_0x5da5('0x48')]['id']}})[_0x5da5('0x25')](handleEntityNotFound(_0x56523b,null))[_0x5da5('0x25')](saveUpdates(_0xa1d591[_0x5da5('0x4b')],null))[_0x5da5('0x25')](respondWithResult(_0x56523b,null))[_0x5da5('0x46')](handleError(_0x56523b,null));};exports[_0x5da5('0x54')]=function(_0x283ba5,_0x211b80){return db[_0x5da5('0x2d')][_0x5da5('0x53')]({'where':{'id':_0x283ba5[_0x5da5('0x48')]['id']}})[_0x5da5('0x25')](handleEntityNotFound(_0x211b80,null))[_0x5da5('0x25')](removeEntity(_0x211b80,null))[_0x5da5('0x46')](handleError(_0x211b80,null));};
\ No newline at end of file
index 800bc5c..bd4f7f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa9=['path','rimraf','./tag.attributes','exports','define','Tag','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x4a510c,_0x6643be){var _0x56694e=function(_0x56027c){while(--_0x56027c){_0x4a510c['push'](_0x4a510c['shift']());}};_0x56694e(++_0x6643be);}(_0x6aa9,0x1da));var _0x96aa=function(_0x535216,_0x4b2213){_0x535216=_0x535216-0x0;var _0x105b7a=_0x6aa9[_0x535216];return _0x105b7a;};'use strict';var _=require(_0x96aa('0x0'));var util=require(_0x96aa('0x1'));var logger=require(_0x96aa('0x2'))(_0x96aa('0x3'));var moment=require('moment');var BPromise=require(_0x96aa('0x4'));var rp=require(_0x96aa('0x5'));var fs=require('fs');var path=require(_0x96aa('0x6'));var rimraf=require(_0x96aa('0x7'));var config=require('../../config/environment');var attributes=require(_0x96aa('0x8'));module[_0x96aa('0x9')]=function(_0x589e1d,_0x39184f){return _0x589e1d[_0x96aa('0xa')](_0x96aa('0xb'),attributes,{'tableName':'tools_tags','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdec9=['define','Tag','tools_tags','lodash','../../config/logger','api','bluebird','request-promise','path','../../config/environment','exports'];(function(_0x414655,_0x79d916){var _0x237884=function(_0x2737d9){while(--_0x2737d9){_0x414655['push'](_0x414655['shift']());}};_0x237884(++_0x79d916);}(_0xdec9,0x184));var _0x9dec=function(_0x4f3e88,_0x2f23ef){_0x4f3e88=_0x4f3e88-0x0;var _0x38576e=_0xdec9[_0x4f3e88];return _0x38576e;};'use strict';var _=require(_0x9dec('0x0'));var util=require('util');var logger=require(_0x9dec('0x1'))(_0x9dec('0x2'));var moment=require('moment');var BPromise=require(_0x9dec('0x3'));var rp=require(_0x9dec('0x4'));var fs=require('fs');var path=require(_0x9dec('0x5'));var rimraf=require('rimraf');var config=require(_0x9dec('0x6'));var attributes=require('./tag.attributes');module[_0x9dec('0x7')]=function(_0x2b4e25,_0x2f58fa){return _0x2b4e25[_0x9dec('0x8')](_0x9dec('0x9'),attributes,{'tableName':_0x9dec('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f8b07c9..3b68f64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Tag,\x20%s,\x20%s','request\x20sent','debug','Tag,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x947aac,_0x67e1b6){var _0x12ffdf=function(_0x551760){while(--_0x551760){_0x947aac['push'](_0x947aac['shift']());}};_0x12ffdf(++_0x67e1b6);}(_0x34e8,0x12c));var _0x834e=function(_0x2c42b3,_0x217d2c){_0x2c42b3=_0x2c42b3-0x0;var _0x184dab=_0x34e8[_0x2c42b3];return _0x184dab;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var moment=require(_0x834e('0x2'));var BPromise=require(_0x834e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x834e('0x4'));var db=require(_0x834e('0x5'))['db'];var utils=require(_0x834e('0x6'));var logger=require(_0x834e('0x7'))(_0x834e('0x8'));var config=require(_0x834e('0x9'));var jayson=require(_0x834e('0xa'));var client=jayson['client'][_0x834e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x52056d,_0x3e16d2,_0x3cc2e3){return new BPromise(function(_0x3a3ef6,_0x2e69e2){return client[_0x834e('0xc')](_0x52056d,_0x3cc2e3)[_0x834e('0xd')](function(_0x363786){logger[_0x834e('0xe')](_0x834e('0xf'),_0x3e16d2,_0x834e('0x10'));logger[_0x834e('0x11')](_0x834e('0x12'),_0x3e16d2,_0x834e('0x10'),JSON[_0x834e('0x13')](_0x363786));if(_0x363786[_0x834e('0x14')]){if(_0x363786[_0x834e('0x14')][_0x834e('0x15')]===0x1f4){logger['error'](_0x834e('0xf'),_0x3e16d2,_0x363786[_0x834e('0x14')]['message']);return _0x2e69e2(_0x363786[_0x834e('0x14')][_0x834e('0x16')]);}logger[_0x834e('0x14')](_0x834e('0xf'),_0x3e16d2,_0x363786['error'][_0x834e('0x16')]);return _0x3a3ef6(_0x363786[_0x834e('0x14')]['message']);}else{logger[_0x834e('0xe')]('Tag,\x20%s,\x20%s',_0x3e16d2,_0x834e('0x10'));_0x3a3ef6(_0x363786[_0x834e('0x17')]['message']);}})[_0x834e('0x18')](function(_0x22106e){logger[_0x834e('0x14')]('Tag,\x20%s,\x20%s',_0x3e16d2,_0x22106e);_0x2e69e2(_0x22106e);});});}
\ No newline at end of file
+var _0x402f=['http','request','then','info','Tag,\x20%s,\x20%s','request\x20sent','debug','message','error','lodash','moment','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client'];(function(_0xec2375,_0x513165){var _0x1fcaa6=function(_0x49b97b){while(--_0x49b97b){_0xec2375['push'](_0xec2375['shift']());}};_0x1fcaa6(++_0x513165);}(_0x402f,0x6f));var _0xf402=function(_0x4f27e8,_0x263c32){_0x4f27e8=_0x4f27e8-0x0;var _0x41d63a=_0x402f[_0x4f27e8];return _0x41d63a;};'use strict';var _=require(_0xf402('0x0'));var util=require('util');var moment=require(_0xf402('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf402('0x2'));var db=require(_0xf402('0x3'))['db'];var utils=require(_0xf402('0x4'));var logger=require('../../config/logger')(_0xf402('0x5'));var config=require('../../config/environment');var jayson=require(_0xf402('0x6'));var client=jayson[_0xf402('0x7')][_0xf402('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2a8774,_0xa1b27d,_0x55c515){return new BPromise(function(_0x4d1771,_0x2f0ffe){return client[_0xf402('0x9')](_0x2a8774,_0x55c515)[_0xf402('0xa')](function(_0xdc18e0){logger[_0xf402('0xb')](_0xf402('0xc'),_0xa1b27d,_0xf402('0xd'));logger[_0xf402('0xe')]('Tag,\x20%s,\x20%s,\x20%s',_0xa1b27d,_0xf402('0xd'),JSON['stringify'](_0xdc18e0));if(_0xdc18e0['error']){if(_0xdc18e0['error']['code']===0x1f4){logger['error'](_0xf402('0xc'),_0xa1b27d,_0xdc18e0['error']['message']);return _0x2f0ffe(_0xdc18e0['error'][_0xf402('0xf')]);}logger['error'](_0xf402('0xc'),_0xa1b27d,_0xdc18e0[_0xf402('0x10')][_0xf402('0xf')]);return _0x4d1771(_0xdc18e0[_0xf402('0x10')]['message']);}else{logger[_0xf402('0xb')]('Tag,\x20%s,\x20%s',_0xa1b27d,_0xf402('0xd'));_0x4d1771(_0xdc18e0['result']['message']);}})['catch'](function(_0xb45d00){logger[_0xf402('0x10')](_0xf402('0xc'),_0xa1b27d,_0xb45d00);_0x2f0ffe(_0xb45d00);});});}
\ No newline at end of file
index f036324..db4e42f 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(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0xa9e0[_0x2bf141];return _0x48277b;};'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(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbe200f,_0x4b50eb){_0xbe200f=_0xbe200f-0x0;var _0x192597=_0xa9e0[_0xbe200f];return _0x192597;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));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 de50df0..4f1d1c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['exports','STRING'];(function(_0x51f4d0,_0x323851){var _0x100df5=function(_0x33453b){while(--_0x33453b){_0x51f4d0['push'](_0x51f4d0['shift']());}};_0x100df5(++_0x323851);}(_0x757a,0xde));var _0xa757=function(_0x73af18,_0x5e9f11){_0x73af18=_0x73af18-0x0;var _0x441133=_0x757a[_0x73af18];return _0x441133;};'use strict';var Sequelize=require('sequelize');module[_0xa757('0x0')]={'name':{'type':Sequelize[_0xa757('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xb10b=['name','sequelize','STRING'];(function(_0x1f44bf,_0x4f583d){var _0x1fb6f9=function(_0x25bdd4){while(--_0x25bdd4){_0x1f44bf['push'](_0x1f44bf['shift']());}};_0x1fb6f9(++_0x4f583d);}(_0xb10b,0x12a));var _0xbb10=function(_0x3a13cf,_0x478c62){_0x3a13cf=_0x3a13cf-0x0;var _0x4817c=_0xb10b[_0x3a13cf];return _0x4817c;};'use strict';var Sequelize=require(_0xbb10('0x0'));module['exports']={'name':{'type':Sequelize[_0xbb10('0x1')],'allowNull':![],'unique':_0xbb10('0x2')},'description':{'type':Sequelize[_0xbb10('0x1')]}};
\ No newline at end of file
index 85a963c..d8ad742 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x392c=['nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','Team','findAll','params','keys','rawAttributes','options','find','create','body','user','get','role','Teams','UserProfileResource','catch','destroy','sequelize','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','Sequelize','QueryTypes','SELECT','UserId','VoiceQueueId','UserVoiceQueue','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','MailQueueId','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','UserSmsQueue','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','ChatQueueId','UserChatQueue','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','UserFaxQueue','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','WhatsappQueueId','TeamVoicePrefix','VoicePrefixId','getQueues','findOne','channel','isValidChannel','ValidationError','Unknown\x20channel','capitalize','toLowerCase','ids','Queues','isArray','Chat','Mail','Sms','Fax','Openchannel','Whatsapp','Voice','through','QueueId','defaults','TeamVoiceQueue','penalty','User','Queue','findOrCreate','online','interface','upsert','isNil','format','SIP/%s','all','addAgents','spread','removeAgents','emit','Queue:remove','UserVoicePrefix','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','fs-extra','crypto','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','redis','localhost','socket.io-emitter','./team.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','then','error','stack','name','send','index','map','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty'];(function(_0x16ec7b,_0x4f884b){var _0x10f477=function(_0x94a85a){while(--_0x94a85a){_0x16ec7b['push'](_0x16ec7b['shift']());}};_0x10f477(++_0x4f884b);}(_0x392c,0xed));var _0xc392=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x392c[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xc392('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc392('0x1'));var jsonpatch=require(_0xc392('0x2'));var rp=require(_0xc392('0x3'));var moment=require(_0xc392('0x4'));var BPromise=require(_0xc392('0x5'));var Mustache=require('mustache');var util=require(_0xc392('0x6'));var path=require('path');var sox=require(_0xc392('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc392('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xc392('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xc392('0xa'));var querystring=require(_0xc392('0xb'));var Papa=require(_0xc392('0xc'));var Redis=require(_0xc392('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xc392('0xe'));var as=require(_0xc392('0xf'));var hardwareService=require(_0xc392('0x10'));var logger=require(_0xc392('0x11'))(_0xc392('0x12'));var utils=require(_0xc392('0x13'));var config=require(_0xc392('0x14'));var licenseUtil=require(_0xc392('0x15'));var db=require(_0xc392('0x16'))['db'];config[_0xc392('0x17')]=_['defaults'](config['redis'],{'host':_0xc392('0x18'),'port':0x18eb});var socket=require(_0xc392('0x19'))(new Redis(config[_0xc392('0x17')]));require(_0xc392('0x1a'))[_0xc392('0x1b')](socket);function respondWithStatusCode(_0x5c52d1,_0x564bc1){_0x564bc1=_0x564bc1||0xcc;return function(_0x493b46){if(_0x493b46){return _0x5c52d1[_0xc392('0x1c')](_0x564bc1);}return _0x5c52d1[_0xc392('0x1d')](_0x564bc1)[_0xc392('0x1e')]();};}function respondWithResult(_0x4e8ec0,_0x406249){_0x406249=_0x406249||0xc8;return function(_0x2c0465){if(_0x2c0465){return _0x4e8ec0[_0xc392('0x1d')](_0x406249)['json'](_0x2c0465);}};}function respondWithFilteredResult(_0x17e089,_0x3b3609){return function(_0x501cb0){if(_0x501cb0){var _0x19322d=typeof _0x3b3609[_0xc392('0x1f')]===_0xc392('0x20')&&typeof _0x3b3609[_0xc392('0x21')]===_0xc392('0x20');var _0xcb43fe=_0x501cb0[_0xc392('0x22')];var _0x12b695=_0x19322d?0x0:_0x3b3609[_0xc392('0x1f')];var _0xedf5e2=_0x19322d?_0x501cb0[_0xc392('0x22')]:_0x3b3609[_0xc392('0x1f')]+_0x3b3609[_0xc392('0x21')];var _0x1b212d;if(_0xedf5e2>=_0xcb43fe){_0xedf5e2=_0xcb43fe;_0x1b212d=0xc8;}else{_0x1b212d=0xce;}_0x17e089[_0xc392('0x1d')](_0x1b212d);return _0x17e089[_0xc392('0x23')](_0xc392('0x24'),_0x12b695+'-'+_0xedf5e2+'/'+_0xcb43fe)[_0xc392('0x25')](_0x501cb0);}return null;};}function patchUpdates(_0x1efceb){return function(_0x2f1020){try{jsonpatch['apply'](_0x2f1020,_0x1efceb,!![]);}catch(_0x5edd79){return BPromise[_0xc392('0x26')](_0x5edd79);}return _0x2f1020[_0xc392('0x27')]();};}function saveUpdates(_0x4804d3,_0x1a43e1){return function(_0x204f86){if(_0x204f86){return _0x204f86[_0xc392('0x28')](_0x4804d3)[_0xc392('0x29')](function(_0x6f7c20){return _0x6f7c20;});}return null;};}function handleEntityNotFound(_0x284190,_0xa401cd){return function(_0x17702c){if(!_0x17702c){_0x284190[_0xc392('0x1c')](0x194);}return _0x17702c;};}function handleError(_0x3c6c79,_0x40430c){_0x40430c=_0x40430c||0x1f4;return function(_0x1a96d7){logger[_0xc392('0x2a')](_0x1a96d7[_0xc392('0x2b')]);if(_0x1a96d7['name']){delete _0x1a96d7[_0xc392('0x2c')];}_0x3c6c79[_0xc392('0x1d')](_0x40430c)[_0xc392('0x2d')](_0x1a96d7);};}exports[_0xc392('0x2e')]=function(_0x34e276,_0xad54b4){var _0x1b6124={},_0x1e0d12={},_0x37ca4a={'count':0x0,'rows':[]};var _0x4554cd=_[_0xc392('0x2f')](db['Team']['rawAttributes'],function(_0x1aa52b){return{'name':_0x1aa52b[_0xc392('0x30')],'type':_0x1aa52b[_0xc392('0x31')][_0xc392('0x32')]};});_0x1e0d12[_0xc392('0x33')]=_['map'](_0x4554cd,_0xc392('0x2c'));_0x1e0d12[_0xc392('0x34')]=_['keys'](_0x34e276['query']);_0x1e0d12[_0xc392('0x35')]=_[_0xc392('0x36')](_0x1e0d12['model'],_0x1e0d12[_0xc392('0x34')]);_0x1b6124['attributes']=_[_0xc392('0x36')](_0x1e0d12[_0xc392('0x33')],qs['fields'](_0x34e276[_0xc392('0x34')][_0xc392('0x37')]));_0x1b6124[_0xc392('0x38')]=_0x1b6124['attributes'][_0xc392('0x39')]?_0x1b6124['attributes']:_0x1e0d12[_0xc392('0x33')];if(!_0x34e276[_0xc392('0x34')][_0xc392('0x3a')](_0xc392('0x3b'))){_0x1b6124[_0xc392('0x21')]=qs[_0xc392('0x21')](_0x34e276[_0xc392('0x34')][_0xc392('0x21')]);_0x1b6124[_0xc392('0x1f')]=qs[_0xc392('0x1f')](_0x34e276[_0xc392('0x34')]['offset']);}_0x1b6124[_0xc392('0x3c')]=qs[_0xc392('0x3d')](_0x34e276[_0xc392('0x34')][_0xc392('0x3d')]);_0x1b6124[_0xc392('0x3e')]=qs['filters'](_[_0xc392('0x3f')](_0x34e276[_0xc392('0x34')],_0x1e0d12[_0xc392('0x35')]),_0x4554cd);if(_0x34e276[_0xc392('0x34')][_0xc392('0x40')]){_0x1b6124[_0xc392('0x3e')]=_['merge'](_0x1b6124['where'],{'$or':_[_0xc392('0x2f')](_0x4554cd,function(_0x37d6fd){if(_0x37d6fd['type']!==_0xc392('0x41')){var _0x14fa82={};_0x14fa82[_0x37d6fd[_0xc392('0x2c')]]={'$like':'%'+_0x34e276[_0xc392('0x34')]['filter']+'%'};return _0x14fa82;}})});}_0x1b6124=_[_0xc392('0x42')]({},_0x1b6124,_0x34e276['options']);var _0x4cb795={'where':_0x1b6124[_0xc392('0x3e')]};return db['Team'][_0xc392('0x22')](_0x4cb795)[_0xc392('0x29')](function(_0x402cdd){_0x37ca4a[_0xc392('0x22')]=_0x402cdd;if(_0x34e276['query'][_0xc392('0x43')]){_0x1b6124[_0xc392('0x44')]=[{'all':!![]}];}return db[_0xc392('0x45')][_0xc392('0x46')](_0x1b6124);})[_0xc392('0x29')](function(_0xa90150){_0x37ca4a['rows']=_0xa90150;return _0x37ca4a;})[_0xc392('0x29')](respondWithFilteredResult(_0xad54b4,_0x1b6124))['catch'](handleError(_0xad54b4,null));};exports['show']=function(_0x40e2be,_0x14ad23){var _0xd2e3a4={'raw':![],'where':{'id':_0x40e2be[_0xc392('0x47')]['id']}},_0x443c3c={};_0x443c3c['model']=_[_0xc392('0x48')](db['Team'][_0xc392('0x49')]);_0x443c3c[_0xc392('0x34')]=_['keys'](_0x40e2be[_0xc392('0x34')]);_0x443c3c['filters']=_[_0xc392('0x36')](_0x443c3c[_0xc392('0x33')],_0x443c3c['query']);_0xd2e3a4[_0xc392('0x38')]=_[_0xc392('0x36')](_0x443c3c[_0xc392('0x33')],qs['fields'](_0x40e2be['query'][_0xc392('0x37')]));_0xd2e3a4[_0xc392('0x38')]=_0xd2e3a4[_0xc392('0x38')][_0xc392('0x39')]?_0xd2e3a4[_0xc392('0x38')]:_0x443c3c[_0xc392('0x33')];if(_0x40e2be[_0xc392('0x34')][_0xc392('0x43')]){_0xd2e3a4[_0xc392('0x44')]=[{'all':!![]}];}_0xd2e3a4=_[_0xc392('0x42')]({},_0xd2e3a4,_0x40e2be[_0xc392('0x4a')]);return db[_0xc392('0x45')][_0xc392('0x4b')](_0xd2e3a4)['then'](handleEntityNotFound(_0x14ad23,null))[_0xc392('0x29')](respondWithResult(_0x14ad23,null))['catch'](handleError(_0x14ad23,null));};exports[_0xc392('0x4c')]=function(_0xa7bfcc,_0x16f446){return db[_0xc392('0x45')][_0xc392('0x4c')](_0xa7bfcc[_0xc392('0x4d')],{})[_0xc392('0x29')](function(_0x2d7724){var _0x58932a=_0xa7bfcc[_0xc392('0x4e')][_0xc392('0x4f')]({'plain':!![]});if(!_0x58932a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x58932a[_0xc392('0x50')]==='user'){var _0x546451=_0x2d7724[_0xc392('0x4f')]({'plain':!![]});var _0x920b4d=_0xc392('0x51');return db['UserProfileSection'][_0xc392('0x4b')]({'where':{'name':_0x920b4d,'userProfileId':_0x58932a['userProfileId']},'raw':!![]})['then'](function(_0x70e812){if(_0x70e812&&_0x70e812['autoAssociation']===0x0){return db[_0xc392('0x52')][_0xc392('0x4c')]({'name':_0x546451['name'],'resourceId':_0x546451['id'],'type':_0x70e812[_0xc392('0x2c')],'sectionId':_0x70e812['id']},{})[_0xc392('0x29')](function(){return _0x2d7724;});}else{return _0x2d7724;}})[_0xc392('0x53')](function(_0x1ed50e){logger[_0xc392('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1ed50e);throw _0x1ed50e;});}return _0x2d7724;})[_0xc392('0x29')](respondWithResult(_0x16f446,0xc9))[_0xc392('0x53')](handleError(_0x16f446,null));};exports[_0xc392('0x28')]=function(_0x22324a,_0x59e07e){if(_0x22324a[_0xc392('0x4d')]['id']){delete _0x22324a[_0xc392('0x4d')]['id'];}return db[_0xc392('0x45')]['find']({'where':{'id':_0x22324a[_0xc392('0x47')]['id']}})[_0xc392('0x29')](handleEntityNotFound(_0x59e07e,null))['then'](saveUpdates(_0x22324a[_0xc392('0x4d')],null))['then'](respondWithResult(_0x59e07e,null))['catch'](handleError(_0x59e07e,null));};exports[_0xc392('0x54')]=function(_0x4614bf,_0x45cad9){var _0x4c0abe=_0x4614bf[_0xc392('0x47')]['id'];var _0x5435ae=[];return db[_0xc392('0x55')]['transaction'](function(_0x257087){var _0x3f3980=_0xc392('0x56')+_0x4c0abe;return db[_0xc392('0x55')][_0xc392('0x34')](_0x3f3980,{'type':db[_0xc392('0x57')][_0xc392('0x58')][_0xc392('0x59')],'raw':!![],'transaction':_0x257087})['then'](function(_0x18ad55){_0x5435ae=_['map'](_0x18ad55,function(_0x34be45){return Number(_0x34be45[_0xc392('0x5a')]);});})[_0xc392('0x29')](function(){var _0x115e4d='SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20'+_0x4c0abe;return db[_0xc392('0x55')][_0xc392('0x34')](_0x115e4d,{'type':db[_0xc392('0x57')][_0xc392('0x58')][_0xc392('0x59')],'raw':!![],'transaction':_0x257087});})[_0xc392('0x29')](function(_0x152248){var _0x5d960c=_[_0xc392('0x2f')](_0x152248,function(_0x2a78e7){return Number(_0x2a78e7[_0xc392('0x5b')]);});return db[_0xc392('0x5c')][_0xc392('0x54')]({'where':{'UserId':{'$in':_0x5435ae},'VoiceQueueId':{'$in':_0x5d960c}},'transaction':_0x257087});})[_0xc392('0x29')](function(){var _0x33f88a=_0xc392('0x5d')+_0x4c0abe;return db['sequelize'][_0xc392('0x34')](_0x33f88a,{'type':db['Sequelize'][_0xc392('0x58')]['SELECT'],'raw':!![],'transaction':_0x257087});})['then'](function(_0x31f361){var _0x3b7482=_[_0xc392('0x2f')](_0x31f361,function(_0x182b37){return Number(_0x182b37[_0xc392('0x5e')]);});return db['UserMailQueue']['destroy']({'where':{'UserId':{'$in':_0x5435ae},'MailQueueId':{'$in':_0x3b7482}},'transaction':_0x257087});})[_0xc392('0x29')](function(){var _0x230007=_0xc392('0x5f')+_0x4c0abe;return db[_0xc392('0x55')][_0xc392('0x34')](_0x230007,{'type':db[_0xc392('0x57')]['QueryTypes'][_0xc392('0x59')],'raw':!![],'transaction':_0x257087});})[_0xc392('0x29')](function(_0x9cc935){var _0x461501=_[_0xc392('0x2f')](_0x9cc935,function(_0x301f47){return Number(_0x301f47['SmsQueueId']);});return db[_0xc392('0x60')][_0xc392('0x54')]({'where':{'UserId':{'$in':_0x5435ae},'SmsQueueId':{'$in':_0x461501}},'transaction':_0x257087});})['then'](function(){var _0x4565c0=_0xc392('0x61')+_0x4c0abe;return db['sequelize']['query'](_0x4565c0,{'type':db['Sequelize'][_0xc392('0x58')][_0xc392('0x59')],'raw':!![],'transaction':_0x257087});})[_0xc392('0x29')](function(_0x1a2e0d){var _0x2bba40=_[_0xc392('0x2f')](_0x1a2e0d,function(_0x1d8957){return Number(_0x1d8957[_0xc392('0x62')]);});return db[_0xc392('0x63')][_0xc392('0x54')]({'where':{'UserId':{'$in':_0x5435ae},'ChatQueueId':{'$in':_0x2bba40}},'transaction':_0x257087});})[_0xc392('0x29')](function(){var _0xa81138=_0xc392('0x64')+_0x4c0abe;return db[_0xc392('0x55')]['query'](_0xa81138,{'type':db[_0xc392('0x57')][_0xc392('0x58')]['SELECT'],'raw':!![],'transaction':_0x257087});})[_0xc392('0x29')](function(_0x3c8ba){var _0x2cbe7c=_[_0xc392('0x2f')](_0x3c8ba,function(_0x62a88c){return Number(_0x62a88c[_0xc392('0x65')]);});return db[_0xc392('0x66')][_0xc392('0x54')]({'where':{'UserId':{'$in':_0x5435ae},'FaxQueueId':{'$in':_0x2cbe7c}},'transaction':_0x257087});})['then'](function(){var _0x49fa5d='SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20'+_0x4c0abe;return db[_0xc392('0x55')]['query'](_0x49fa5d,{'type':db[_0xc392('0x57')][_0xc392('0x58')][_0xc392('0x59')],'raw':!![],'transaction':_0x257087});})[_0xc392('0x29')](function(_0x48f72a){var _0x2954a6=_[_0xc392('0x2f')](_0x48f72a,function(_0x2297df){return Number(_0x2297df['OpenchannelQueueId']);});return db[_0xc392('0x67')][_0xc392('0x54')]({'where':{'UserId':{'$in':_0x5435ae},'OpenchannelQueueId':{'$in':_0x2954a6}},'transaction':_0x257087});})[_0xc392('0x29')](function(){var _0x5b7e7b=_0xc392('0x68')+_0x4c0abe;return db[_0xc392('0x55')][_0xc392('0x34')](_0x5b7e7b,{'type':db[_0xc392('0x57')][_0xc392('0x58')][_0xc392('0x59')],'raw':!![],'transaction':_0x257087});})[_0xc392('0x29')](function(_0x173120){var _0x4c90b4=_[_0xc392('0x2f')](_0x173120,function(_0xf4e0e0){return Number(_0xf4e0e0[_0xc392('0x69')]);});return db['UserWhatsappQueue']['destroy']({'where':{'UserId':{'$in':_0x5435ae},'WhatsappQueueId':{'$in':_0x4c90b4}},'transaction':_0x257087});})[_0xc392('0x29')](function(){return db[_0xc392('0x6a')][_0xc392('0x4b')]({'where':{'TeamId':_0x4c0abe}});})[_0xc392('0x29')](function(_0x3276f5){if(_0x3276f5===null){return;}return db['UserVoicePrefix'][_0xc392('0x54')]({'where':{'UserId':{'$in':_0x5435ae},'VoicePrefixId':_0x3276f5[_0xc392('0x6b')]},'transaction':_0x257087});})[_0xc392('0x29')](function(){return db['Team']['destroy']({'where':{'id':_0x4c0abe},'cascade':!![],'transaction':_0x257087});})[_0xc392('0x29')](function(_0x97095){if(_0x97095===0x0){_0x45cad9[_0xc392('0x1c')](0x194);}else{return db[_0xc392('0x52')][_0xc392('0x54')]({'where':{'type':'Teams','resourceId':_0x4c0abe},'cascade':!![],'transaction':_0x257087})[_0xc392('0x29')](function(){_0x45cad9[_0xc392('0x1d')](0xcc)[_0xc392('0x1e')]();});}})['catch'](function(_0x105878){_0x45cad9[_0xc392('0x1d')](0x1f4)[_0xc392('0x2d')](_0x105878);});});};exports[_0xc392('0x6c')]=function(_0x507f42,_0x4043bc,_0x2b3e9b){return db[_0xc392('0x45')][_0xc392('0x6d')]({'where':{'id':_0x507f42[_0xc392('0x47')]['id']}})['then'](handleEntityNotFound(_0x4043bc,null))[_0xc392('0x29')](function(_0x4b1d76){if(!_0x507f42[_0xc392('0x34')][_0xc392('0x6e')]||!utils[_0xc392('0x6f')](_0x507f42[_0xc392('0x34')][_0xc392('0x6e')])){throw new db[(_0xc392('0x57'))][(_0xc392('0x70'))](_0xc392('0x71'));}var _0x5c6e15={};var _0x406e94={};_0x406e94['model']=_['keys'](db[_[_0xc392('0x72')](_0x507f42[_0xc392('0x34')]['channel'][_0xc392('0x73')]())+'Queue'][_0xc392('0x49')]);_0x406e94['query']=_[_0xc392('0x48')](_0x507f42[_0xc392('0x34')]);_0x406e94[_0xc392('0x35')]=_['intersection'](_0x406e94[_0xc392('0x33')],_0x406e94['query']);_0x5c6e15[_0xc392('0x38')]=_[_0xc392('0x36')](_0x406e94['model'],qs[_0xc392('0x37')](_0x507f42[_0xc392('0x34')][_0xc392('0x37')]));_0x5c6e15[_0xc392('0x38')]=_0x5c6e15['attributes'][_0xc392('0x39')]?_0x5c6e15['attributes']:_0x406e94[_0xc392('0x33')];_0x5c6e15[_0xc392('0x21')]=qs[_0xc392('0x21')](_0x507f42[_0xc392('0x34')][_0xc392('0x21')]);_0x5c6e15['offset']=qs[_0xc392('0x1f')](_0x507f42[_0xc392('0x34')][_0xc392('0x1f')]);_0x5c6e15[_0xc392('0x3c')]=qs[_0xc392('0x3d')](_0x507f42[_0xc392('0x34')][_0xc392('0x3d')]);_0x5c6e15[_0xc392('0x3e')]=qs['filters'](_['pick'](_0x507f42[_0xc392('0x34')],_0x406e94[_0xc392('0x35')]));_0x5c6e15=_[_0xc392('0x42')]({},_0x5c6e15,_0x507f42[_0xc392('0x4a')]);return _0x4b1d76['get'+_[_0xc392('0x72')](_0x507f42[_0xc392('0x34')][_0xc392('0x6e')][_0xc392('0x73')]())+'Queues'](_0x5c6e15);})[_0xc392('0x29')](respondWithResult(_0x4043bc,null))[_0xc392('0x53')](handleError(_0x4043bc,null));};exports['addQueues']=function(_0x34aca1,_0xa935e3,_0x508e39){return db['Team'][_0xc392('0x6d')]({'where':{'id':_0x34aca1[_0xc392('0x47')]['id']}})[_0xc392('0x29')](function(_0x2a832e){if(_0x2a832e){if(!_0x34aca1[_0xc392('0x4d')][_0xc392('0x6e')]||!utils[_0xc392('0x6f')](_0x34aca1['body'][_0xc392('0x6e')])){throw new db[(_0xc392('0x57'))][(_0xc392('0x70'))](_0xc392('0x71'));}return _0x2a832e['add'+_['capitalize'](_0x34aca1[_0xc392('0x4d')][_0xc392('0x6e')][_0xc392('0x73')]())+'Queues'](_0x34aca1['body'][_0xc392('0x74')]);}return null;})[_0xc392('0x29')](handleEntityNotFound(_0xa935e3,null))[_0xc392('0x29')](respondWithStatusCode(_0xa935e3,null))[_0xc392('0x53')](handleError(_0xa935e3,null));};exports['removeQueues']=function(_0x16eb29,_0x4c2047,_0x3e4bb0){return db[_0xc392('0x45')][_0xc392('0x6d')]({'where':{'id':_0x16eb29[_0xc392('0x47')]['id']}})[_0xc392('0x29')](function(_0x224952){if(_0x224952){if(!_0x16eb29['query']['channel']||!utils[_0xc392('0x6f')](_0x16eb29[_0xc392('0x34')][_0xc392('0x6e')])){throw new db['Sequelize']['ValidationError']('Unknown\x20channel');}return _0x224952['remove'+_[_0xc392('0x72')](_0x16eb29[_0xc392('0x34')]['channel']['toLowerCase']())+_0xc392('0x75')](_0x16eb29['query']['ids']);}return null;})['then'](handleEntityNotFound(_0x4c2047,null))[_0xc392('0x29')](respondWithStatusCode(_0x4c2047,null))[_0xc392('0x53')](handleError(_0x4c2047,null));};exports['addAgents']=function(_0x3b6cff,_0x20fcaf){var _0x5e6d58=_[_0xc392('0x76')](_0x3b6cff[_0xc392('0x4d')]['ids'])?_0x3b6cff[_0xc392('0x4d')][_0xc392('0x74')]:[_0x3b6cff[_0xc392('0x4d')][_0xc392('0x74')]];var _0x16a888=_0x3b6cff[_0xc392('0x47')]['id'];return db[_0xc392('0x45')][_0xc392('0x4b')]({'where':{'id':_0x16a888}})['then'](handleEntityNotFound(_0x20fcaf,null))[_0xc392('0x29')](function(_0x16c176){if(_0x16c176){var _0x2faf8a=['Voice',_0xc392('0x77'),_0xc392('0x78'),_0xc392('0x79'),_0xc392('0x7a'),_0xc392('0x7b'),_0xc392('0x7c')];return db[_0xc392('0x55')]['transaction'](function(_0x22fa36){var _0x555d2d=_[_0xc392('0x2f')](_0x2faf8a,function(_0x18748b){var _0x2535f7={'attributes':['id',_0xc392('0x2c')]};if(_0x18748b===_0xc392('0x7d')){_0x2535f7[_0xc392('0x7e')]={'attributes':['penalty']};}return _0x16c176[_0xc392('0x4f')+_0x18748b+_0xc392('0x75')](_0x2535f7)[_0xc392('0x29')](function(_0x33d90d){var _0x2f5a32=_[_0xc392('0x2f')](_0x33d90d,function(_0x32f640){var _0x5af0fc=_[_0xc392('0x2f')](_0x5e6d58,function(_0x3ba318){var _0x45946f={'where':{'UserId':_0x3ba318,[_0x18748b+_0xc392('0x7f')]:_0x32f640['id']},'transaction':_0x22fa36};if(_0x18748b==='Voice'){_0x45946f[_0xc392('0x80')]={'penalty':_0x32f640[_0xc392('0x81')][_0xc392('0x82')]};}return db[_0xc392('0x83')+_0x18748b+_0xc392('0x84')][_0xc392('0x85')](_0x45946f)['then'](function(){socket['emit'](_0xc392('0x4e')+_0x18748b+'Queue:save',{'UserId':_0x3ba318,[_0x18748b+_0xc392('0x7f')]:_0x32f640['id']});if(_0x18748b!==_0xc392('0x7d')){return;}return db[_0xc392('0x83')][_0xc392('0x46')]({'where':{'id':_0x5e6d58,'online':0x1},'attributes':['id',_0xc392('0x2c'),_0xc392('0x86'),'voicePause',_0xc392('0x87')],'raw':!![]})[_0xc392('0x29')](function(_0x545fe9){var _0x44c7f3=_[_0xc392('0x2f')](_0x545fe9,function(_0x4b82f8){return db['UserVoiceQueueRt'][_0xc392('0x88')]({'membername':_0x4b82f8[_0xc392('0x2c')],'UserId':_0x4b82f8['id'],'queue_name':_0x32f640[_0xc392('0x2c')],'VoiceQueueId':_0x32f640['id'],'interface':_[_0xc392('0x89')](_0x4b82f8[_0xc392('0x87')])?util[_0xc392('0x8a')](_0xc392('0x8b'),_0x4b82f8[_0xc392('0x2c')]):_0x4b82f8['interface'],'paused':_0x4b82f8['voicePause']||![],'penalty':_0x32f640[_0xc392('0x81')][_0xc392('0x82')]},{'transaction':_0x22fa36});});return Promise[_0xc392('0x8c')](_0x44c7f3);});});});return Promise[_0xc392('0x8c')](_0x5af0fc);});return Promise[_0xc392('0x8c')](_0x2f5a32);})['then'](function(){return db[_0xc392('0x6a')][_0xc392('0x6d')]({'where':{'teamId':_0x16a888}})['then'](function(_0xa55c0){if(_0xa55c0){var _0x121aa5=_[_0xc392('0x2f')](_0x5e6d58,function(_0x18d8cc){db['UserVoicePrefix'][_0xc392('0x88')]({'UserId':_0x18d8cc,'VoicePrefixId':_0xa55c0[_0xc392('0x6b')]});});return Promise['all'](_0x121aa5);}});});});return Promise['all'](_0x555d2d)[_0xc392('0x29')](function(){return _0x16c176[_0xc392('0x8d')](_0x5e6d58,{'transaction':_0x22fa36})[_0xc392('0x8e')](function(_0xfd61ce){return _0xfd61ce;});});});}})['then'](respondWithResult(_0x20fcaf,null))[_0xc392('0x53')](handleError(_0x20fcaf,null));};exports[_0xc392('0x8f')]=function(_0x4069dd,_0x4d132a){var _0x498913=_['isArray'](_0x4069dd[_0xc392('0x34')][_0xc392('0x74')])?_0x4069dd[_0xc392('0x34')][_0xc392('0x74')]:[_0x4069dd[_0xc392('0x34')][_0xc392('0x74')]];var _0x3f98eb=_0x4069dd['params']['id'];return db[_0xc392('0x45')][_0xc392('0x4b')]({'where':{'id':_0x3f98eb}})[_0xc392('0x29')](handleEntityNotFound(_0x4d132a,null))[_0xc392('0x29')](function(_0x2b8edb){if(_0x2b8edb){var _0x2e88d6=[_0xc392('0x7d'),'Chat',_0xc392('0x78'),_0xc392('0x79'),_0xc392('0x7a'),'Openchannel',_0xc392('0x7c')];return db[_0xc392('0x55')]['transaction'](function(_0x3420d0){var _0x52b528=_[_0xc392('0x2f')](_0x2e88d6,function(_0x647bba){var _0x23b210={'attributes':['id',_0xc392('0x2c')]};return _0x2b8edb[_0xc392('0x4f')+_0x647bba+_0xc392('0x75')](_0x23b210)[_0xc392('0x29')](function(_0x1b592b){var _0x574d09=_[_0xc392('0x2f')](_0x1b592b,function(_0x4f11eb){return _0x4f11eb['removeAgents'](_0x498913,{'transaction':_0x3420d0})[_0xc392('0x29')](function(){var _0x2eceb6=_[_0xc392('0x2f')](_0x498913,function(_0x1fdc7f){socket[_0xc392('0x90')](_0xc392('0x4e')+_0x647bba+_0xc392('0x91'),{'UserId':Number(_0x1fdc7f),[_0x647bba+_0xc392('0x7f')]:_0x4f11eb['id']});if(_0x647bba!=='Voice'){return;}return db['UserVoiceQueueRt'][_0xc392('0x54')]({'where':{'VoiceQueueId':_0x4f11eb['id'],'UserId':_0x1fdc7f},'transaction':_0x3420d0});});return Promise[_0xc392('0x8c')](_0x2eceb6);});});return Promise[_0xc392('0x8c')](_0x574d09);});});return Promise['all'](_0x52b528)[_0xc392('0x29')](function(){return _0x2b8edb['removeAgents'](_0x498913,{'transaction':_0x3420d0});})[_0xc392('0x29')](function(){return db[_0xc392('0x6a')]['findOne']({'where':{'teamId':_0x3f98eb}})[_0xc392('0x29')](function(_0x117fe8){if(_0x117fe8){var _0x56ff35=_[_0xc392('0x2f')](_0x498913,function(_0x372872){db[_0xc392('0x92')][_0xc392('0x54')]({'where':{'UserId':_0x372872,'VoicePrefixId':_0x117fe8[_0xc392('0x6b')]}});});return Promise[_0xc392('0x8c')](_0x56ff35);}});});});}})[_0xc392('0x29')](respondWithStatusCode(_0x4d132a,null))['catch'](handleError(_0x4d132a,null));};exports['getAgents']=function(_0x209310,_0x1c060a,_0x39003f){var _0x17d139={};var _0x4711bd={};var _0x3f3e86;var _0x1db2b6;return db[_0xc392('0x45')][_0xc392('0x6d')]({'where':{'id':_0x209310[_0xc392('0x47')]['id']}})[_0xc392('0x29')](handleEntityNotFound(_0x1c060a,null))['then'](function(_0x6ed51e){if(_0x6ed51e){_0x3f3e86=_0x6ed51e;_0x4711bd['model']=_[_0xc392('0x48')](db[_0xc392('0x83')][_0xc392('0x49')]);_0x4711bd[_0xc392('0x34')]=_['keys'](_0x209310[_0xc392('0x34')]);_0x4711bd[_0xc392('0x35')]=_[_0xc392('0x36')](_0x4711bd[_0xc392('0x33')],_0x4711bd['query']);_0x17d139[_0xc392('0x38')]=_[_0xc392('0x36')](_0x4711bd[_0xc392('0x33')],qs[_0xc392('0x37')](_0x209310['query']['fields']));_0x17d139[_0xc392('0x38')]=_0x17d139[_0xc392('0x38')][_0xc392('0x39')]?_0x17d139['attributes']:_0x4711bd[_0xc392('0x33')];_0x17d139['order']=qs['sort'](_0x209310['query'][_0xc392('0x3d')]);_0x17d139[_0xc392('0x3e')]=qs[_0xc392('0x35')](_[_0xc392('0x3f')](_0x209310['query'],_0x4711bd[_0xc392('0x35')]));if(_0x209310['query'][_0xc392('0x40')]){_0x17d139[_0xc392('0x3e')]=_['merge'](_0x17d139['where'],{'$or':_['map'](_0x17d139['attributes'],function(_0x1d83bc){var _0x18e888={};_0x18e888[_0x1d83bc]={'$like':'%'+_0x209310['query']['filter']+'%'};return _0x18e888;})});}_0x17d139=_[_0xc392('0x42')]({},_0x17d139,_0x209310[_0xc392('0x4a')]);return _0x3f3e86[_0xc392('0x93')](_0x17d139);}})[_0xc392('0x29')](function(_0x3a6577){if(_0x3a6577){_0x1db2b6=_0x3a6577['length'];if(!_0x209310[_0xc392('0x34')]['hasOwnProperty'](_0xc392('0x3b'))){_0x17d139['limit']=qs['limit'](_0x209310['query'][_0xc392('0x21')]);_0x17d139[_0xc392('0x1f')]=qs[_0xc392('0x1f')](_0x209310[_0xc392('0x34')][_0xc392('0x1f')]);}return _0x3f3e86[_0xc392('0x93')](_0x17d139);}})[_0xc392('0x29')](function(_0x12605b){if(_0x12605b){return _0x12605b?{'count':_0x1db2b6,'rows':_0x12605b}:null;}})['then'](respondWithResult(_0x1c060a,null))['catch'](handleError(_0x1c060a,null));};
\ No newline at end of file
+var _0x7d25=['filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','get','Teams','userProfileId','UserProfileResource','destroy','sequelize','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','Sequelize','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','QueryTypes','SELECT','VoiceQueueId','UserVoiceQueue','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','MailQueueId','UserMailQueue','UserSmsQueue','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','ChatQueueId','UserChatQueue','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','UserFaxQueue','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','OpenchannelQueueId','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','UserWhatsappQueue','TeamVoicePrefix','VoicePrefixId','getQueues','findOne','isValidChannel','channel','capitalize','toLowerCase','Queue','order','Queues','addQueues','Unknown\x20channel','ValidationError','remove','isArray','ids','Voice','Sms','Fax','Openchannel','transaction','through','TeamVoiceQueue','penalty','findOrCreate','emit','Queue:save','User','online','UserVoiceQueueRt','upsert','isNil','interface','format','SIP/%s','voicePause','all','UserVoicePrefix','addAgents','spread','removeAgents','Chat','Mail','Whatsapp','user','Queue:remove','QueueId','getAgents','hasOwnProperty','eml-format','zip-dir','fast-json-patch','moment','bluebird','util','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./team.socket','register','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','sendStatus','error','stack','name','send','Team','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','pick'];(function(_0x454018,_0x46e33a){var _0x24697d=function(_0x3ec647){while(--_0x3ec647){_0x454018['push'](_0x454018['shift']());}};_0x24697d(++_0x46e33a);}(_0x7d25,0xf7));var _0x57d2=function(_0x1b6186,_0x1ec7f2){_0x1b6186=_0x1b6186-0x0;var _0x186121=_0x7d25[_0x1b6186];return _0x186121;};'use strict';var emlformat=require(_0x57d2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x57d2('0x1'));var jsonpatch=require(_0x57d2('0x2'));var rp=require('request-promise');var moment=require(_0x57d2('0x3'));var BPromise=require(_0x57d2('0x4'));var Mustache=require('mustache');var util=require(_0x57d2('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x57d2('0x6'));var ejs=require(_0x57d2('0x7'));var fs=require('fs');var fs_extra=require(_0x57d2('0x8'));var _=require(_0x57d2('0x9'));var squel=require('squel');var crypto=require(_0x57d2('0xa'));var jsforce=require(_0x57d2('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x57d2('0x6'));var querystring=require(_0x57d2('0xc'));var Papa=require(_0x57d2('0xd'));var Redis=require(_0x57d2('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x57d2('0xf'));var as=require(_0x57d2('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x57d2('0x11'));var utils=require(_0x57d2('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x57d2('0x13'));var db=require(_0x57d2('0x14'))['db'];config[_0x57d2('0x15')]=_[_0x57d2('0x16')](config[_0x57d2('0x15')],{'host':_0x57d2('0x17'),'port':0x18eb});var socket=require(_0x57d2('0x18'))(new Redis(config[_0x57d2('0x15')]));require(_0x57d2('0x19'))[_0x57d2('0x1a')](socket);function respondWithStatusCode(_0x50e6ac,_0x725b6){_0x725b6=_0x725b6||0xcc;return function(_0x36bfeb){if(_0x36bfeb){return _0x50e6ac['sendStatus'](_0x725b6);}return _0x50e6ac[_0x57d2('0x1b')](_0x725b6)[_0x57d2('0x1c')]();};}function respondWithResult(_0x3a177f,_0x219077){_0x219077=_0x219077||0xc8;return function(_0x56d9c6){if(_0x56d9c6){return _0x3a177f['status'](_0x219077)[_0x57d2('0x1d')](_0x56d9c6);}};}function respondWithFilteredResult(_0x4c2443,_0x4ca247){return function(_0x4bf30c){if(_0x4bf30c){var _0x420c5f=typeof _0x4ca247['offset']===_0x57d2('0x1e')&&typeof _0x4ca247[_0x57d2('0x1f')]===_0x57d2('0x1e');var _0x59ddd6=_0x4bf30c[_0x57d2('0x20')];var _0x7f527a=_0x420c5f?0x0:_0x4ca247[_0x57d2('0x21')];var _0x27389a=_0x420c5f?_0x4bf30c[_0x57d2('0x20')]:_0x4ca247[_0x57d2('0x21')]+_0x4ca247[_0x57d2('0x1f')];var _0x3e498b;if(_0x27389a>=_0x59ddd6){_0x27389a=_0x59ddd6;_0x3e498b=0xc8;}else{_0x3e498b=0xce;}_0x4c2443[_0x57d2('0x1b')](_0x3e498b);return _0x4c2443[_0x57d2('0x22')](_0x57d2('0x23'),_0x7f527a+'-'+_0x27389a+'/'+_0x59ddd6)['json'](_0x4bf30c);}return null;};}function patchUpdates(_0x27f5ab){return function(_0x927edc){try{jsonpatch[_0x57d2('0x24')](_0x927edc,_0x27f5ab,!![]);}catch(_0x2a30bc){return BPromise[_0x57d2('0x25')](_0x2a30bc);}return _0x927edc[_0x57d2('0x26')]();};}function saveUpdates(_0x2850df,_0x43ac21){return function(_0x3b30ea){if(_0x3b30ea){return _0x3b30ea[_0x57d2('0x27')](_0x2850df)[_0x57d2('0x28')](function(_0x946493){return _0x946493;});}return null;};}function handleEntityNotFound(_0x47f3a7,_0x30b1f5){return function(_0x520f9d){if(!_0x520f9d){_0x47f3a7[_0x57d2('0x29')](0x194);}return _0x520f9d;};}function handleError(_0x13d5b5,_0xeef6ad){_0xeef6ad=_0xeef6ad||0x1f4;return function(_0x3e4608){logger[_0x57d2('0x2a')](_0x3e4608[_0x57d2('0x2b')]);if(_0x3e4608['name']){delete _0x3e4608[_0x57d2('0x2c')];}_0x13d5b5[_0x57d2('0x1b')](_0xeef6ad)[_0x57d2('0x2d')](_0x3e4608);};}exports['index']=function(_0x21edc7,_0x950f6){var _0x16c098={},_0x5ba26a={},_0x4aa304={'count':0x0,'rows':[]};var _0x57e211=_['map'](db[_0x57d2('0x2e')][_0x57d2('0x2f')],function(_0x57910c){return{'name':_0x57910c[_0x57d2('0x30')],'type':_0x57910c[_0x57d2('0x31')]['key']};});_0x5ba26a[_0x57d2('0x32')]=_[_0x57d2('0x33')](_0x57e211,'name');_0x5ba26a[_0x57d2('0x34')]=_[_0x57d2('0x35')](_0x21edc7[_0x57d2('0x34')]);_0x5ba26a[_0x57d2('0x36')]=_[_0x57d2('0x37')](_0x5ba26a['model'],_0x5ba26a[_0x57d2('0x34')]);_0x16c098[_0x57d2('0x38')]=_[_0x57d2('0x37')](_0x5ba26a['model'],qs[_0x57d2('0x39')](_0x21edc7[_0x57d2('0x34')]['fields']));_0x16c098[_0x57d2('0x38')]=_0x16c098['attributes'][_0x57d2('0x3a')]?_0x16c098[_0x57d2('0x38')]:_0x5ba26a['model'];if(!_0x21edc7[_0x57d2('0x34')]['hasOwnProperty'](_0x57d2('0x3b'))){_0x16c098[_0x57d2('0x1f')]=qs[_0x57d2('0x1f')](_0x21edc7['query'][_0x57d2('0x1f')]);_0x16c098[_0x57d2('0x21')]=qs['offset'](_0x21edc7['query']['offset']);}_0x16c098['order']=qs[_0x57d2('0x3c')](_0x21edc7['query'][_0x57d2('0x3c')]);_0x16c098[_0x57d2('0x3d')]=qs[_0x57d2('0x36')](_[_0x57d2('0x3e')](_0x21edc7[_0x57d2('0x34')],_0x5ba26a[_0x57d2('0x36')]),_0x57e211);if(_0x21edc7[_0x57d2('0x34')][_0x57d2('0x3f')]){_0x16c098[_0x57d2('0x3d')]=_[_0x57d2('0x40')](_0x16c098[_0x57d2('0x3d')],{'$or':_[_0x57d2('0x33')](_0x57e211,function(_0xbc9428){if(_0xbc9428[_0x57d2('0x31')]!==_0x57d2('0x41')){var _0x3f7bfc={};_0x3f7bfc[_0xbc9428[_0x57d2('0x2c')]]={'$like':'%'+_0x21edc7['query'][_0x57d2('0x3f')]+'%'};return _0x3f7bfc;}})});}_0x16c098=_[_0x57d2('0x40')]({},_0x16c098,_0x21edc7[_0x57d2('0x42')]);var _0x1b6fdf={'where':_0x16c098[_0x57d2('0x3d')]};return db[_0x57d2('0x2e')][_0x57d2('0x20')](_0x1b6fdf)[_0x57d2('0x28')](function(_0x2dffcb){_0x4aa304[_0x57d2('0x20')]=_0x2dffcb;if(_0x21edc7['query'][_0x57d2('0x43')]){_0x16c098[_0x57d2('0x44')]=[{'all':!![]}];}return db['Team'][_0x57d2('0x45')](_0x16c098);})[_0x57d2('0x28')](function(_0x4f6077){_0x4aa304['rows']=_0x4f6077;return _0x4aa304;})[_0x57d2('0x28')](respondWithFilteredResult(_0x950f6,_0x16c098))[_0x57d2('0x46')](handleError(_0x950f6,null));};exports[_0x57d2('0x47')]=function(_0x51ef73,_0x46adc0){var _0x2d0990={'raw':![],'where':{'id':_0x51ef73[_0x57d2('0x48')]['id']}},_0x47bbd1={};_0x47bbd1['model']=_['keys'](db[_0x57d2('0x2e')][_0x57d2('0x2f')]);_0x47bbd1[_0x57d2('0x34')]=_['keys'](_0x51ef73[_0x57d2('0x34')]);_0x47bbd1[_0x57d2('0x36')]=_[_0x57d2('0x37')](_0x47bbd1[_0x57d2('0x32')],_0x47bbd1[_0x57d2('0x34')]);_0x2d0990[_0x57d2('0x38')]=_[_0x57d2('0x37')](_0x47bbd1['model'],qs[_0x57d2('0x39')](_0x51ef73[_0x57d2('0x34')][_0x57d2('0x39')]));_0x2d0990[_0x57d2('0x38')]=_0x2d0990[_0x57d2('0x38')][_0x57d2('0x3a')]?_0x2d0990[_0x57d2('0x38')]:_0x47bbd1[_0x57d2('0x32')];if(_0x51ef73[_0x57d2('0x34')]['includeAll']){_0x2d0990['include']=[{'all':!![]}];}_0x2d0990=_[_0x57d2('0x40')]({},_0x2d0990,_0x51ef73[_0x57d2('0x42')]);return db[_0x57d2('0x2e')][_0x57d2('0x49')](_0x2d0990)[_0x57d2('0x28')](handleEntityNotFound(_0x46adc0,null))['then'](respondWithResult(_0x46adc0,null))[_0x57d2('0x46')](handleError(_0x46adc0,null));};exports[_0x57d2('0x4a')]=function(_0x5b2b8c,_0x4e14a3){return db[_0x57d2('0x2e')][_0x57d2('0x4a')](_0x5b2b8c[_0x57d2('0x4b')],{})['then'](function(_0x10bec8){var _0xb75c54=_0x5b2b8c['user']['get']({'plain':!![]});if(!_0xb75c54)throw new Error(_0x57d2('0x4c'));if(_0xb75c54['role']==='user'){var _0x1980d3=_0x10bec8[_0x57d2('0x4d')]({'plain':!![]});var _0x510299=_0x57d2('0x4e');return db['UserProfileSection'][_0x57d2('0x49')]({'where':{'name':_0x510299,'userProfileId':_0xb75c54[_0x57d2('0x4f')]},'raw':!![]})['then'](function(_0x314f41){if(_0x314f41&&_0x314f41['autoAssociation']===0x0){return db[_0x57d2('0x50')][_0x57d2('0x4a')]({'name':_0x1980d3[_0x57d2('0x2c')],'resourceId':_0x1980d3['id'],'type':_0x314f41['name'],'sectionId':_0x314f41['id']},{})[_0x57d2('0x28')](function(){return _0x10bec8;});}else{return _0x10bec8;}})[_0x57d2('0x46')](function(_0x24dbcc){logger[_0x57d2('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x24dbcc);throw _0x24dbcc;});}return _0x10bec8;})[_0x57d2('0x28')](respondWithResult(_0x4e14a3,0xc9))[_0x57d2('0x46')](handleError(_0x4e14a3,null));};exports[_0x57d2('0x27')]=function(_0x2135a7,_0x3ea8ab){if(_0x2135a7[_0x57d2('0x4b')]['id']){delete _0x2135a7[_0x57d2('0x4b')]['id'];}return db[_0x57d2('0x2e')][_0x57d2('0x49')]({'where':{'id':_0x2135a7['params']['id']}})['then'](handleEntityNotFound(_0x3ea8ab,null))['then'](saveUpdates(_0x2135a7['body'],null))[_0x57d2('0x28')](respondWithResult(_0x3ea8ab,null))['catch'](handleError(_0x3ea8ab,null));};exports[_0x57d2('0x51')]=function(_0x4ff640,_0x462814){var _0x598a09=_0x4ff640[_0x57d2('0x48')]['id'];var _0x50d206=[];return db[_0x57d2('0x52')]['transaction'](function(_0x1fd2e3){var _0x5432c9=_0x57d2('0x53')+_0x598a09;return db['sequelize'][_0x57d2('0x34')](_0x5432c9,{'type':db[_0x57d2('0x54')]['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x1fd2e3})[_0x57d2('0x28')](function(_0x1c89f9){_0x50d206=_['map'](_0x1c89f9,function(_0x3bec03){return Number(_0x3bec03['UserId']);});})[_0x57d2('0x28')](function(){var _0x598256=_0x57d2('0x55')+_0x598a09;return db['sequelize']['query'](_0x598256,{'type':db[_0x57d2('0x54')][_0x57d2('0x56')][_0x57d2('0x57')],'raw':!![],'transaction':_0x1fd2e3});})[_0x57d2('0x28')](function(_0x4f8471){var _0x553a04=_['map'](_0x4f8471,function(_0x218df7){return Number(_0x218df7[_0x57d2('0x58')]);});return db[_0x57d2('0x59')]['destroy']({'where':{'UserId':{'$in':_0x50d206},'VoiceQueueId':{'$in':_0x553a04}},'transaction':_0x1fd2e3});})[_0x57d2('0x28')](function(){var _0xc9eb6e=_0x57d2('0x5a')+_0x598a09;return db['sequelize'][_0x57d2('0x34')](_0xc9eb6e,{'type':db[_0x57d2('0x54')]['QueryTypes'][_0x57d2('0x57')],'raw':!![],'transaction':_0x1fd2e3});})[_0x57d2('0x28')](function(_0x1ee6b2){var _0x31b6c1=_['map'](_0x1ee6b2,function(_0x57358c){return Number(_0x57358c[_0x57d2('0x5b')]);});return db[_0x57d2('0x5c')]['destroy']({'where':{'UserId':{'$in':_0x50d206},'MailQueueId':{'$in':_0x31b6c1}},'transaction':_0x1fd2e3});})[_0x57d2('0x28')](function(){var _0x191575='SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20'+_0x598a09;return db[_0x57d2('0x52')][_0x57d2('0x34')](_0x191575,{'type':db[_0x57d2('0x54')]['QueryTypes'][_0x57d2('0x57')],'raw':!![],'transaction':_0x1fd2e3});})[_0x57d2('0x28')](function(_0x5d9ee8){var _0x4612f3=_['map'](_0x5d9ee8,function(_0x3ef7b3){return Number(_0x3ef7b3['SmsQueueId']);});return db[_0x57d2('0x5d')][_0x57d2('0x51')]({'where':{'UserId':{'$in':_0x50d206},'SmsQueueId':{'$in':_0x4612f3}},'transaction':_0x1fd2e3});})[_0x57d2('0x28')](function(){var _0x420435=_0x57d2('0x5e')+_0x598a09;return db[_0x57d2('0x52')][_0x57d2('0x34')](_0x420435,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x1fd2e3});})[_0x57d2('0x28')](function(_0x11f323){var _0x26f663=_['map'](_0x11f323,function(_0x6d0f60){return Number(_0x6d0f60[_0x57d2('0x5f')]);});return db[_0x57d2('0x60')][_0x57d2('0x51')]({'where':{'UserId':{'$in':_0x50d206},'ChatQueueId':{'$in':_0x26f663}},'transaction':_0x1fd2e3});})[_0x57d2('0x28')](function(){var _0x112e99=_0x57d2('0x61')+_0x598a09;return db[_0x57d2('0x52')]['query'](_0x112e99,{'type':db['Sequelize'][_0x57d2('0x56')][_0x57d2('0x57')],'raw':!![],'transaction':_0x1fd2e3});})[_0x57d2('0x28')](function(_0x173b88){var _0x168111=_[_0x57d2('0x33')](_0x173b88,function(_0x2e5894){return Number(_0x2e5894[_0x57d2('0x62')]);});return db[_0x57d2('0x63')][_0x57d2('0x51')]({'where':{'UserId':{'$in':_0x50d206},'FaxQueueId':{'$in':_0x168111}},'transaction':_0x1fd2e3});})[_0x57d2('0x28')](function(){var _0x2acfd1=_0x57d2('0x64')+_0x598a09;return db['sequelize'][_0x57d2('0x34')](_0x2acfd1,{'type':db['Sequelize'][_0x57d2('0x56')]['SELECT'],'raw':!![],'transaction':_0x1fd2e3});})[_0x57d2('0x28')](function(_0x41ad8b){var _0x2a5f1c=_[_0x57d2('0x33')](_0x41ad8b,function(_0x40ce43){return Number(_0x40ce43[_0x57d2('0x65')]);});return db[_0x57d2('0x66')]['destroy']({'where':{'UserId':{'$in':_0x50d206},'OpenchannelQueueId':{'$in':_0x2a5f1c}},'transaction':_0x1fd2e3});})[_0x57d2('0x28')](function(){var _0x58d2f2=_0x57d2('0x67')+_0x598a09;return db['sequelize'][_0x57d2('0x34')](_0x58d2f2,{'type':db['Sequelize'][_0x57d2('0x56')][_0x57d2('0x57')],'raw':!![],'transaction':_0x1fd2e3});})[_0x57d2('0x28')](function(_0x50d0a7){var _0x747936=_[_0x57d2('0x33')](_0x50d0a7,function(_0x28fc30){return Number(_0x28fc30['WhatsappQueueId']);});return db[_0x57d2('0x68')][_0x57d2('0x51')]({'where':{'UserId':{'$in':_0x50d206},'WhatsappQueueId':{'$in':_0x747936}},'transaction':_0x1fd2e3});})[_0x57d2('0x28')](function(){return db[_0x57d2('0x69')]['find']({'where':{'TeamId':_0x598a09}});})[_0x57d2('0x28')](function(_0xe7baeb){if(_0xe7baeb===null){return;}return db['UserVoicePrefix'][_0x57d2('0x51')]({'where':{'UserId':{'$in':_0x50d206},'VoicePrefixId':_0xe7baeb[_0x57d2('0x6a')]},'transaction':_0x1fd2e3});})[_0x57d2('0x28')](function(){return db[_0x57d2('0x2e')]['destroy']({'where':{'id':_0x598a09},'cascade':!![],'transaction':_0x1fd2e3});})[_0x57d2('0x28')](function(_0x44f299){if(_0x44f299===0x0){_0x462814[_0x57d2('0x29')](0x194);}else{return db[_0x57d2('0x50')][_0x57d2('0x51')]({'where':{'type':_0x57d2('0x4e'),'resourceId':_0x598a09},'cascade':!![],'transaction':_0x1fd2e3})[_0x57d2('0x28')](function(){_0x462814[_0x57d2('0x1b')](0xcc)[_0x57d2('0x1c')]();});}})[_0x57d2('0x46')](function(_0x183ee1){_0x462814['status'](0x1f4)[_0x57d2('0x2d')](_0x183ee1);});});};exports[_0x57d2('0x6b')]=function(_0x24478b,_0x12dda5,_0x9a3707){return db['Team'][_0x57d2('0x6c')]({'where':{'id':_0x24478b[_0x57d2('0x48')]['id']}})[_0x57d2('0x28')](handleEntityNotFound(_0x12dda5,null))[_0x57d2('0x28')](function(_0x565fd6){if(!_0x24478b[_0x57d2('0x34')]['channel']||!utils[_0x57d2('0x6d')](_0x24478b[_0x57d2('0x34')][_0x57d2('0x6e')])){throw new db['Sequelize']['ValidationError']('Unknown\x20channel');}var _0x2a844d={};var _0x438fb0={};_0x438fb0['model']=_[_0x57d2('0x35')](db[_[_0x57d2('0x6f')](_0x24478b[_0x57d2('0x34')][_0x57d2('0x6e')][_0x57d2('0x70')]())+_0x57d2('0x71')]['rawAttributes']);_0x438fb0[_0x57d2('0x34')]=_[_0x57d2('0x35')](_0x24478b[_0x57d2('0x34')]);_0x438fb0['filters']=_['intersection'](_0x438fb0[_0x57d2('0x32')],_0x438fb0[_0x57d2('0x34')]);_0x2a844d[_0x57d2('0x38')]=_['intersection'](_0x438fb0['model'],qs[_0x57d2('0x39')](_0x24478b[_0x57d2('0x34')][_0x57d2('0x39')]));_0x2a844d[_0x57d2('0x38')]=_0x2a844d[_0x57d2('0x38')][_0x57d2('0x3a')]?_0x2a844d[_0x57d2('0x38')]:_0x438fb0[_0x57d2('0x32')];_0x2a844d[_0x57d2('0x1f')]=qs[_0x57d2('0x1f')](_0x24478b['query'][_0x57d2('0x1f')]);_0x2a844d['offset']=qs[_0x57d2('0x21')](_0x24478b[_0x57d2('0x34')][_0x57d2('0x21')]);_0x2a844d[_0x57d2('0x72')]=qs['sort'](_0x24478b['query']['sort']);_0x2a844d[_0x57d2('0x3d')]=qs['filters'](_[_0x57d2('0x3e')](_0x24478b['query'],_0x438fb0[_0x57d2('0x36')]));_0x2a844d=_[_0x57d2('0x40')]({},_0x2a844d,_0x24478b[_0x57d2('0x42')]);return _0x565fd6[_0x57d2('0x4d')+_[_0x57d2('0x6f')](_0x24478b['query'][_0x57d2('0x6e')][_0x57d2('0x70')]())+_0x57d2('0x73')](_0x2a844d);})[_0x57d2('0x28')](respondWithResult(_0x12dda5,null))[_0x57d2('0x46')](handleError(_0x12dda5,null));};exports[_0x57d2('0x74')]=function(_0x18a793,_0x2cf847,_0x2323bd){return db[_0x57d2('0x2e')]['findOne']({'where':{'id':_0x18a793[_0x57d2('0x48')]['id']}})[_0x57d2('0x28')](function(_0xa28afa){if(_0xa28afa){if(!_0x18a793['body'][_0x57d2('0x6e')]||!utils[_0x57d2('0x6d')](_0x18a793[_0x57d2('0x4b')]['channel'])){throw new db[(_0x57d2('0x54'))]['ValidationError'](_0x57d2('0x75'));}return _0xa28afa['add'+_['capitalize'](_0x18a793['body'][_0x57d2('0x6e')][_0x57d2('0x70')]())+_0x57d2('0x73')](_0x18a793['body']['ids']);}return null;})[_0x57d2('0x28')](handleEntityNotFound(_0x2cf847,null))[_0x57d2('0x28')](respondWithStatusCode(_0x2cf847,null))[_0x57d2('0x46')](handleError(_0x2cf847,null));};exports['removeQueues']=function(_0x2038c6,_0x53edfe,_0x292f6c){return db['Team'][_0x57d2('0x6c')]({'where':{'id':_0x2038c6[_0x57d2('0x48')]['id']}})['then'](function(_0x50a74b){if(_0x50a74b){if(!_0x2038c6[_0x57d2('0x34')][_0x57d2('0x6e')]||!utils['isValidChannel'](_0x2038c6[_0x57d2('0x34')][_0x57d2('0x6e')])){throw new db['Sequelize'][(_0x57d2('0x76'))](_0x57d2('0x75'));}return _0x50a74b[_0x57d2('0x77')+_[_0x57d2('0x6f')](_0x2038c6[_0x57d2('0x34')][_0x57d2('0x6e')][_0x57d2('0x70')]())+_0x57d2('0x73')](_0x2038c6[_0x57d2('0x34')]['ids']);}return null;})[_0x57d2('0x28')](handleEntityNotFound(_0x53edfe,null))[_0x57d2('0x28')](respondWithStatusCode(_0x53edfe,null))[_0x57d2('0x46')](handleError(_0x53edfe,null));};exports['addAgents']=function(_0x5df560,_0x800fdf){var _0x4eb538=_[_0x57d2('0x78')](_0x5df560[_0x57d2('0x4b')][_0x57d2('0x79')])?_0x5df560[_0x57d2('0x4b')][_0x57d2('0x79')]:[_0x5df560['body']['ids']];var _0x4f8eb9=_0x5df560[_0x57d2('0x48')]['id'];return db[_0x57d2('0x2e')][_0x57d2('0x49')]({'where':{'id':_0x4f8eb9}})[_0x57d2('0x28')](handleEntityNotFound(_0x800fdf,null))['then'](function(_0x102b2d){if(_0x102b2d){var _0x305235=[_0x57d2('0x7a'),'Chat','Mail',_0x57d2('0x7b'),_0x57d2('0x7c'),_0x57d2('0x7d'),'Whatsapp'];return db[_0x57d2('0x52')][_0x57d2('0x7e')](function(_0x440a18){var _0x10dbc8=_['map'](_0x305235,function(_0x2bd847){var _0x1faa13={'attributes':['id','name']};if(_0x2bd847===_0x57d2('0x7a')){_0x1faa13[_0x57d2('0x7f')]={'attributes':['penalty']};}return _0x102b2d['get'+_0x2bd847+_0x57d2('0x73')](_0x1faa13)[_0x57d2('0x28')](function(_0x259a8a){var _0x5b4c5f=_[_0x57d2('0x33')](_0x259a8a,function(_0x48c1b7){var _0x113dc7=_[_0x57d2('0x33')](_0x4eb538,function(_0xbde362){var _0x40810a={'where':{'UserId':_0xbde362,[_0x2bd847+'QueueId']:_0x48c1b7['id']},'transaction':_0x440a18};if(_0x2bd847==='Voice'){_0x40810a['defaults']={'penalty':_0x48c1b7[_0x57d2('0x80')][_0x57d2('0x81')]};}return db['User'+_0x2bd847+'Queue'][_0x57d2('0x82')](_0x40810a)['then'](function(){socket[_0x57d2('0x83')]('user'+_0x2bd847+_0x57d2('0x84'),{'UserId':_0xbde362,[_0x2bd847+'QueueId']:_0x48c1b7['id']});if(_0x2bd847!==_0x57d2('0x7a')){return;}return db[_0x57d2('0x85')][_0x57d2('0x45')]({'where':{'id':_0x4eb538,'online':0x1},'attributes':['id',_0x57d2('0x2c'),_0x57d2('0x86'),'voicePause','interface'],'raw':!![]})[_0x57d2('0x28')](function(_0xfee7fe){var _0x3a2480=_[_0x57d2('0x33')](_0xfee7fe,function(_0x530ebd){return db[_0x57d2('0x87')][_0x57d2('0x88')]({'membername':_0x530ebd[_0x57d2('0x2c')],'UserId':_0x530ebd['id'],'queue_name':_0x48c1b7[_0x57d2('0x2c')],'VoiceQueueId':_0x48c1b7['id'],'interface':_[_0x57d2('0x89')](_0x530ebd[_0x57d2('0x8a')])?util[_0x57d2('0x8b')](_0x57d2('0x8c'),_0x530ebd[_0x57d2('0x2c')]):_0x530ebd['interface'],'paused':_0x530ebd[_0x57d2('0x8d')]||![],'penalty':_0x48c1b7[_0x57d2('0x80')][_0x57d2('0x81')]},{'transaction':_0x440a18});});return Promise['all'](_0x3a2480);});});});return Promise[_0x57d2('0x8e')](_0x113dc7);});return Promise[_0x57d2('0x8e')](_0x5b4c5f);})[_0x57d2('0x28')](function(){return db['TeamVoicePrefix'][_0x57d2('0x6c')]({'where':{'teamId':_0x4f8eb9}})[_0x57d2('0x28')](function(_0x5527f0){if(_0x5527f0){var _0xcbb528=_['map'](_0x4eb538,function(_0xf2cb1f){db[_0x57d2('0x8f')][_0x57d2('0x88')]({'UserId':_0xf2cb1f,'VoicePrefixId':_0x5527f0[_0x57d2('0x6a')]});});return Promise[_0x57d2('0x8e')](_0xcbb528);}});});});return Promise[_0x57d2('0x8e')](_0x10dbc8)[_0x57d2('0x28')](function(){return _0x102b2d[_0x57d2('0x90')](_0x4eb538,{'transaction':_0x440a18})[_0x57d2('0x91')](function(_0x4a2731){return _0x4a2731;});});});}})[_0x57d2('0x28')](respondWithResult(_0x800fdf,null))['catch'](handleError(_0x800fdf,null));};exports[_0x57d2('0x92')]=function(_0x1c00ec,_0x56764c){var _0x27d705=_[_0x57d2('0x78')](_0x1c00ec[_0x57d2('0x34')][_0x57d2('0x79')])?_0x1c00ec[_0x57d2('0x34')][_0x57d2('0x79')]:[_0x1c00ec[_0x57d2('0x34')][_0x57d2('0x79')]];var _0x7d4c2e=_0x1c00ec[_0x57d2('0x48')]['id'];return db['Team']['find']({'where':{'id':_0x7d4c2e}})[_0x57d2('0x28')](handleEntityNotFound(_0x56764c,null))[_0x57d2('0x28')](function(_0x2e2911){if(_0x2e2911){var _0x3cb2e9=[_0x57d2('0x7a'),_0x57d2('0x93'),_0x57d2('0x94'),_0x57d2('0x7b'),_0x57d2('0x7c'),'Openchannel',_0x57d2('0x95')];return db[_0x57d2('0x52')]['transaction'](function(_0x5612d1){var _0x27f8f0=_[_0x57d2('0x33')](_0x3cb2e9,function(_0x42f919){var _0x33d668={'attributes':['id',_0x57d2('0x2c')]};return _0x2e2911[_0x57d2('0x4d')+_0x42f919+_0x57d2('0x73')](_0x33d668)['then'](function(_0x226fe8){var _0xc300e3=_['map'](_0x226fe8,function(_0x37ac2f){return _0x37ac2f[_0x57d2('0x92')](_0x27d705,{'transaction':_0x5612d1})[_0x57d2('0x28')](function(){var _0x6f0f92=_[_0x57d2('0x33')](_0x27d705,function(_0xb3b5f1){socket[_0x57d2('0x83')](_0x57d2('0x96')+_0x42f919+_0x57d2('0x97'),{'UserId':Number(_0xb3b5f1),[_0x42f919+_0x57d2('0x98')]:_0x37ac2f['id']});if(_0x42f919!==_0x57d2('0x7a')){return;}return db['UserVoiceQueueRt'][_0x57d2('0x51')]({'where':{'VoiceQueueId':_0x37ac2f['id'],'UserId':_0xb3b5f1},'transaction':_0x5612d1});});return Promise['all'](_0x6f0f92);});});return Promise[_0x57d2('0x8e')](_0xc300e3);});});return Promise[_0x57d2('0x8e')](_0x27f8f0)['then'](function(){return _0x2e2911[_0x57d2('0x92')](_0x27d705,{'transaction':_0x5612d1});})[_0x57d2('0x28')](function(){return db[_0x57d2('0x69')][_0x57d2('0x6c')]({'where':{'teamId':_0x7d4c2e}})[_0x57d2('0x28')](function(_0xc04a38){if(_0xc04a38){var _0x174f94=_[_0x57d2('0x33')](_0x27d705,function(_0x575d50){db[_0x57d2('0x8f')][_0x57d2('0x51')]({'where':{'UserId':_0x575d50,'VoicePrefixId':_0xc04a38[_0x57d2('0x6a')]}});});return Promise['all'](_0x174f94);}});});});}})['then'](respondWithStatusCode(_0x56764c,null))['catch'](handleError(_0x56764c,null));};exports[_0x57d2('0x99')]=function(_0xfdb74f,_0x594737,_0x385357){var _0x1bc022={};var _0x15bd8d={};var _0x475355;var _0x352614;return db['Team'][_0x57d2('0x6c')]({'where':{'id':_0xfdb74f[_0x57d2('0x48')]['id']}})[_0x57d2('0x28')](handleEntityNotFound(_0x594737,null))[_0x57d2('0x28')](function(_0x3afe4c){if(_0x3afe4c){_0x475355=_0x3afe4c;_0x15bd8d[_0x57d2('0x32')]=_[_0x57d2('0x35')](db[_0x57d2('0x85')][_0x57d2('0x2f')]);_0x15bd8d[_0x57d2('0x34')]=_[_0x57d2('0x35')](_0xfdb74f['query']);_0x15bd8d[_0x57d2('0x36')]=_[_0x57d2('0x37')](_0x15bd8d[_0x57d2('0x32')],_0x15bd8d[_0x57d2('0x34')]);_0x1bc022['attributes']=_[_0x57d2('0x37')](_0x15bd8d[_0x57d2('0x32')],qs[_0x57d2('0x39')](_0xfdb74f[_0x57d2('0x34')]['fields']));_0x1bc022[_0x57d2('0x38')]=_0x1bc022['attributes'][_0x57d2('0x3a')]?_0x1bc022[_0x57d2('0x38')]:_0x15bd8d[_0x57d2('0x32')];_0x1bc022[_0x57d2('0x72')]=qs['sort'](_0xfdb74f[_0x57d2('0x34')]['sort']);_0x1bc022['where']=qs[_0x57d2('0x36')](_[_0x57d2('0x3e')](_0xfdb74f[_0x57d2('0x34')],_0x15bd8d[_0x57d2('0x36')]));if(_0xfdb74f[_0x57d2('0x34')][_0x57d2('0x3f')]){_0x1bc022[_0x57d2('0x3d')]=_[_0x57d2('0x40')](_0x1bc022['where'],{'$or':_[_0x57d2('0x33')](_0x1bc022[_0x57d2('0x38')],function(_0x5e1569){var _0x5034de={};_0x5034de[_0x5e1569]={'$like':'%'+_0xfdb74f[_0x57d2('0x34')]['filter']+'%'};return _0x5034de;})});}_0x1bc022=_['merge']({},_0x1bc022,_0xfdb74f[_0x57d2('0x42')]);return _0x475355['getAgents'](_0x1bc022);}})['then'](function(_0x554067){if(_0x554067){_0x352614=_0x554067[_0x57d2('0x3a')];if(!_0xfdb74f[_0x57d2('0x34')][_0x57d2('0x9a')](_0x57d2('0x3b'))){_0x1bc022[_0x57d2('0x1f')]=qs[_0x57d2('0x1f')](_0xfdb74f[_0x57d2('0x34')][_0x57d2('0x1f')]);_0x1bc022[_0x57d2('0x21')]=qs[_0x57d2('0x21')](_0xfdb74f[_0x57d2('0x34')][_0x57d2('0x21')]);}return _0x475355[_0x57d2('0x99')](_0x1bc022);}})[_0x57d2('0x28')](function(_0x4e62d2){if(_0x4e62d2){return _0x4e62d2?{'count':_0x352614,'rows':_0x4e62d2}:null;}})['then'](respondWithResult(_0x594737,null))[_0x57d2('0x46')](handleError(_0x594737,null));};
\ No newline at end of file
index 9ddd5d3..55849a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bcf=['emit','hasOwnProperty','events','../../mysqldb','Team','setMaxListeners','save','remove'];(function(_0xf0f242,_0x22dec2){var _0x5707c2=function(_0x268bff){while(--_0x268bff){_0xf0f242['push'](_0xf0f242['shift']());}};_0x5707c2(++_0x22dec2);}(_0x7bcf,0x1ca));var _0xf7bc=function(_0x25f2f6,_0x4a26e1){_0x25f2f6=_0x25f2f6-0x0;var _0xc87e4f=_0x7bcf[_0x25f2f6];return _0xc87e4f;};'use strict';var EventEmitter=require(_0xf7bc('0x0'));var Team=require(_0xf7bc('0x1'))['db'][_0xf7bc('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0xf7bc('0x3')](0x0);var events={'afterCreate':_0xf7bc('0x4'),'afterUpdate':'update','afterDestroy':_0xf7bc('0x5')};function emitEvent(_0x398fe5){return function(_0x13aee0,_0x42c4b6,_0x279167){TeamEvents[_0xf7bc('0x6')](_0x398fe5+':'+_0x13aee0['id'],_0x13aee0);TeamEvents[_0xf7bc('0x6')](_0x398fe5,_0x13aee0);_0x279167(null);};}for(var e in events){if(events[_0xf7bc('0x7')](e)){var event=events[e];Team['hook'](e,emitEvent(event));}}module['exports']=TeamEvents;
\ No newline at end of file
+var _0x3a66=['events','../../mysqldb','Team','setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports'];(function(_0x41ccda,_0x40d8ce){var _0x35db2f=function(_0x3a3a23){while(--_0x3a3a23){_0x41ccda['push'](_0x41ccda['shift']());}};_0x35db2f(++_0x40d8ce);}(_0x3a66,0x12c));var _0x63a6=function(_0xc8a11,_0x347a33){_0xc8a11=_0xc8a11-0x0;var _0x55a500=_0x3a66[_0xc8a11];return _0x55a500;};'use strict';var EventEmitter=require(_0x63a6('0x0'));var Team=require(_0x63a6('0x1'))['db'][_0x63a6('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0x63a6('0x3')](0x0);var events={'afterCreate':_0x63a6('0x4'),'afterUpdate':'update','afterDestroy':_0x63a6('0x5')};function emitEvent(_0x67c3ad){return function(_0x446216,_0x42aead,_0x458520){TeamEvents[_0x63a6('0x6')](_0x67c3ad+':'+_0x446216['id'],_0x446216);TeamEvents[_0x63a6('0x6')](_0x67c3ad,_0x446216);_0x458520(null);};}for(var e in events){if(events[_0x63a6('0x7')](e)){var event=events[e];Team[_0x63a6('0x8')](e,emitEvent(event));}}module[_0x63a6('0x9')]=TeamEvents;
\ No newline at end of file
index e5fc0b7..5918a4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x120c=['get','then','channel','exports','define','Team','Chat','Openchannel','Sms','Whatsapp','resolve','map','all','catch','lodash'];(function(_0xa5057a,_0x8f97c5){var _0x2f17e5=function(_0x568362){while(--_0x568362){_0xa5057a['push'](_0xa5057a['shift']());}};_0x2f17e5(++_0x8f97c5);}(_0x120c,0x95));var _0xc120=function(_0x300e9c,_0x361c42){_0x300e9c=_0x300e9c-0x0;var _0x3dadb9=_0x120c[_0x300e9c];return _0x3dadb9;};'use strict';var _=require(_0xc120('0x0'));var attributes=require('./team.attributes');function getQueuesByChannel(_0x111ae7,_0x4d7646){var _0x376bfb=_0xc120('0x1')+_0x4d7646+'Queues';return _0x111ae7[_0x376bfb]()[_0xc120('0x2')](function(_0x16b67f){return _['map'](_0x16b67f,function(_0x4518e8){_0x4518e8['setDataValue'](_0xc120('0x3'),_0x4d7646);return _0x4518e8;});})['catch'](function(_0x91af52){throw _0x91af52;});}module[_0xc120('0x4')]=function(_0x288972){return _0x288972[_0xc120('0x5')](_0xc120('0x6'),attributes,{'tableName':'teams','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x446dd4=this;var _0xe45fc6=[_0xc120('0x7'),'Fax','Mail',_0xc120('0x8'),_0xc120('0x9'),'Voice',_0xc120('0xa')];return Promise[_0xc120('0xb')]()[_0xc120('0x2')](function(){var _0xdd2358=_[_0xc120('0xc')](_0xe45fc6,function(_0x2443af){return getQueuesByChannel(_0x446dd4,_0x2443af);});return Promise[_0xc120('0xd')](_0xdd2358);})[_0xc120('0xe')](function(_0x2bebea){throw _0x2bebea;});}}});};
\ No newline at end of file
+var _0xc24f=['Voice','Whatsapp','map','lodash','get','Queues','then','setDataValue','channel','catch','exports','define','Team','teams','Chat','Mail','Openchannel','Sms'];(function(_0x5e4c9b,_0x168735){var _0x153457=function(_0x4f6550){while(--_0x4f6550){_0x5e4c9b['push'](_0x5e4c9b['shift']());}};_0x153457(++_0x168735);}(_0xc24f,0xc9));var _0xfc24=function(_0x373002,_0x517dcb){_0x373002=_0x373002-0x0;var _0x220124=_0xc24f[_0x373002];return _0x220124;};'use strict';var _=require(_0xfc24('0x0'));var attributes=require('./team.attributes');function getQueuesByChannel(_0x34c6be,_0x3389b1){var _0x1f6c7d=_0xfc24('0x1')+_0x3389b1+_0xfc24('0x2');return _0x34c6be[_0x1f6c7d]()[_0xfc24('0x3')](function(_0xb35020){return _['map'](_0xb35020,function(_0x508cae){_0x508cae[_0xfc24('0x4')](_0xfc24('0x5'),_0x3389b1);return _0x508cae;});})[_0xfc24('0x6')](function(_0x2d648f){throw _0x2d648f;});}module[_0xfc24('0x7')]=function(_0x3f5f8f){return _0x3f5f8f[_0xfc24('0x8')](_0xfc24('0x9'),attributes,{'tableName':_0xfc24('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x530700=this;var _0x2ad8df=[_0xfc24('0xb'),'Fax',_0xfc24('0xc'),_0xfc24('0xd'),_0xfc24('0xe'),_0xfc24('0xf'),_0xfc24('0x10')];return Promise['resolve']()['then'](function(){var _0x386ce6=_[_0xfc24('0x11')](_0x2ad8df,function(_0x1449be){return getQueuesByChannel(_0x530700,_0x1449be);});return Promise['all'](_0x386ce6);})['catch'](function(_0x3851d3){throw _0x3851d3;});}}});};
\ No newline at end of file
index 13125a4..5cfb327 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc6f=['redis','localhost','socket.io-emitter','request','then','Team,\x20%s,\x20%s','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults'];(function(_0x4b4930,_0x4b32cc){var _0x52f4ae=function(_0x554dc0){while(--_0x554dc0){_0x4b4930['push'](_0x4b4930['shift']());}};_0x52f4ae(++_0x4b32cc);}(_0xdc6f,0x8c));var _0xfdc6=function(_0x59c51c,_0x1472ac){_0x59c51c=_0x59c51c-0x0;var _0xd79a84=_0xdc6f[_0x59c51c];return _0xd79a84;};'use strict';var _=require(_0xfdc6('0x0'));var util=require(_0xfdc6('0x1'));var moment=require(_0xfdc6('0x2'));var BPromise=require(_0xfdc6('0x3'));var rs=require(_0xfdc6('0x4'));var fs=require('fs');var Redis=require(_0xfdc6('0x5'));var db=require(_0xfdc6('0x6'))['db'];var utils=require(_0xfdc6('0x7'));var logger=require(_0xfdc6('0x8'))(_0xfdc6('0x9'));var config=require(_0xfdc6('0xa'));var jayson=require(_0xfdc6('0xb'));var client=jayson[_0xfdc6('0xc')][_0xfdc6('0xd')]({'port':0x232a});config['redis']=_[_0xfdc6('0xe')](config[_0xfdc6('0xf')],{'host':_0xfdc6('0x10'),'port':0x18eb});var socket=require(_0xfdc6('0x11'))(new Redis(config['redis']));require('./team.socket')['register'](socket);function respondWithRpcPromise(_0x5839e5,_0x5ae561,_0x5b72c0){return new BPromise(function(_0x26a1f0,_0x33e405){return client[_0xfdc6('0x12')](_0x5839e5,_0x5b72c0)[_0xfdc6('0x13')](function(_0x8c51f3){logger['info'](_0xfdc6('0x14'),_0x5ae561,_0xfdc6('0x15'));logger[_0xfdc6('0x16')](_0xfdc6('0x17'),_0x5ae561,_0xfdc6('0x15'),JSON[_0xfdc6('0x18')](_0x8c51f3));if(_0x8c51f3[_0xfdc6('0x19')]){if(_0x8c51f3['error'][_0xfdc6('0x1a')]===0x1f4){logger[_0xfdc6('0x19')](_0xfdc6('0x14'),_0x5ae561,_0x8c51f3[_0xfdc6('0x19')]['message']);return _0x33e405(_0x8c51f3[_0xfdc6('0x19')][_0xfdc6('0x1b')]);}logger[_0xfdc6('0x19')]('Team,\x20%s,\x20%s',_0x5ae561,_0x8c51f3[_0xfdc6('0x19')][_0xfdc6('0x1b')]);return _0x26a1f0(_0x8c51f3[_0xfdc6('0x19')][_0xfdc6('0x1b')]);}else{logger[_0xfdc6('0x1c')](_0xfdc6('0x14'),_0x5ae561,'request\x20sent');_0x26a1f0(_0x8c51f3[_0xfdc6('0x1d')][_0xfdc6('0x1b')]);}})[_0xfdc6('0x1e')](function(_0x2996a3){logger[_0xfdc6('0x19')](_0xfdc6('0x14'),_0x5ae561,_0x2996a3);_0x33e405(_0x2996a3);});});}
\ No newline at end of file
+var _0x8dbc=['../../config/logger','rpc','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./team.socket','request','then','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','stringify','error','Team,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x1de84e,_0x59b867){var _0x2a8d45=function(_0x1690e6){while(--_0x1690e6){_0x1de84e['push'](_0x1de84e['shift']());}};_0x2a8d45(++_0x59b867);}(_0x8dbc,0x7b));var _0xc8db=function(_0x4ae625,_0xf396d0){_0x4ae625=_0x4ae625-0x0;var _0x31accf=_0x8dbc[_0x4ae625];return _0x31accf;};'use strict';var _=require(_0xc8db('0x0'));var util=require(_0xc8db('0x1'));var moment=require(_0xc8db('0x2'));var BPromise=require(_0xc8db('0x3'));var rs=require(_0xc8db('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc8db('0x5'))['db'];var utils=require(_0xc8db('0x6'));var logger=require(_0xc8db('0x7'))(_0xc8db('0x8'));var config=require('../../config/environment');var jayson=require(_0xc8db('0x9'));var client=jayson['client'][_0xc8db('0xa')]({'port':0x232a});config[_0xc8db('0xb')]=_[_0xc8db('0xc')](config[_0xc8db('0xb')],{'host':_0xc8db('0xd'),'port':0x18eb});var socket=require(_0xc8db('0xe'))(new Redis(config[_0xc8db('0xb')]));require(_0xc8db('0xf'))['register'](socket);function respondWithRpcPromise(_0x44390e,_0x3fb448,_0x4d2451){return new BPromise(function(_0x828c71,_0x2f0035){return client[_0xc8db('0x10')](_0x44390e,_0x4d2451)[_0xc8db('0x11')](function(_0x22acee){logger['info']('Team,\x20%s,\x20%s',_0x3fb448,_0xc8db('0x12'));logger[_0xc8db('0x13')](_0xc8db('0x14'),_0x3fb448,_0xc8db('0x12'),JSON[_0xc8db('0x15')](_0x22acee));if(_0x22acee[_0xc8db('0x16')]){if(_0x22acee[_0xc8db('0x16')]['code']===0x1f4){logger[_0xc8db('0x16')](_0xc8db('0x17'),_0x3fb448,_0x22acee[_0xc8db('0x16')][_0xc8db('0x18')]);return _0x2f0035(_0x22acee['error'][_0xc8db('0x18')]);}logger['error'](_0xc8db('0x17'),_0x3fb448,_0x22acee['error'][_0xc8db('0x18')]);return _0x828c71(_0x22acee[_0xc8db('0x16')][_0xc8db('0x18')]);}else{logger['info']('Team,\x20%s,\x20%s',_0x3fb448,_0xc8db('0x12'));_0x828c71(_0x22acee['result']['message']);}})[_0xc8db('0x19')](function(_0x18a372){logger['error']('Team,\x20%s,\x20%s',_0x3fb448,_0x18a372);_0x2f0035(_0x18a372);});});}
\ No newline at end of file
index 9300171..503cfea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3df4=['register','length','team:','./team.events','save','remove','update','emit'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0x3df4,0x173));var _0x43df=function(_0xd93814,_0x15528b){_0xd93814=_0xd93814-0x0;var _0x5ba58a=_0x3df4[_0xd93814];return _0x5ba58a;};'use strict';var TeamEvents=require(_0x43df('0x0'));var events=[_0x43df('0x1'),_0x43df('0x2'),_0x43df('0x3')];function createListener(_0x32cd64,_0x1654a9){return function(_0x20a7f5){_0x1654a9[_0x43df('0x4')](_0x32cd64,_0x20a7f5);};}function removeListener(_0x12f08c,_0x35c5bc){return function(){TeamEvents['removeListener'](_0x12f08c,_0x35c5bc);};}exports[_0x43df('0x5')]=function(_0x3b8fc8){for(var _0x1ce901=0x0,_0x348c18=events[_0x43df('0x6')];_0x1ce901<_0x348c18;_0x1ce901++){var _0x2e92ac=events[_0x1ce901];var _0x176536=createListener(_0x43df('0x7')+_0x2e92ac,_0x3b8fc8);TeamEvents['on'](_0x2e92ac,_0x176536);}};
\ No newline at end of file
+var _0xe1e8=['remove','emit','register','team:','./team.events'];(function(_0x28be72,_0x2b83af){var _0x46c5da=function(_0x312911){while(--_0x312911){_0x28be72['push'](_0x28be72['shift']());}};_0x46c5da(++_0x2b83af);}(_0xe1e8,0x1cb));var _0x8e1e=function(_0x48a0e5,_0xc400c6){_0x48a0e5=_0x48a0e5-0x0;var _0x2ce14d=_0xe1e8[_0x48a0e5];return _0x2ce14d;};'use strict';var TeamEvents=require(_0x8e1e('0x0'));var events=['save',_0x8e1e('0x1'),'update'];function createListener(_0x4d8c47,_0x362e4b){return function(_0x40110){_0x362e4b[_0x8e1e('0x2')](_0x4d8c47,_0x40110);};}function removeListener(_0x1a69dc,_0x50f4bf){return function(){TeamEvents['removeListener'](_0x1a69dc,_0x50f4bf);};}exports[_0x8e1e('0x3')]=function(_0xf371b5){for(var _0x13c945=0x0,_0x1861ce=events['length'];_0x13c945<_0x1861ce;_0x13c945++){var _0x21ee75=events[_0x13c945];var _0xe8a658=createListener(_0x8e1e('0x4')+_0x21ee75,_0xf371b5);TeamEvents['on'](_0x21ee75,_0xe8a658);}};
\ No newline at end of file
index e34ad2b..fbdfa0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf82=['INTEGER','sequelize'];(function(_0x374ada,_0x27b3a5){var _0x449ed8=function(_0x3efc46){while(--_0x3efc46){_0x374ada['push'](_0x374ada['shift']());}};_0x449ed8(++_0x27b3a5);}(_0xbf82,0x1cb));var _0x2bf8=function(_0x250f61,_0x2a2771){_0x250f61=_0x250f61-0x0;var _0x5a6da0=_0xbf82[_0x250f61];return _0x5a6da0;};'use strict';var Sequelize=require(_0x2bf8('0x0'));module['exports']={'TeamId':{'type':Sequelize[_0x2bf8('0x1')]},'VoicePrefixId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x8bdf=['sequelize','exports','INTEGER'];(function(_0x560331,_0x44f975){var _0x46104e=function(_0x4db51f){while(--_0x4db51f){_0x560331['push'](_0x560331['shift']());}};_0x46104e(++_0x44f975);}(_0x8bdf,0x1a7));var _0xf8bd=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0x8bdf[_0x3ab9ee];return _0x82ee88;};'use strict';var Sequelize=require(_0xf8bd('0x0'));module[_0xf8bd('0x1')]={'TeamId':{'type':Sequelize[_0xf8bd('0x2')]},'VoicePrefixId':{'type':Sequelize[_0xf8bd('0x2')]}};
\ No newline at end of file
index 242ecac..9356c8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30fc=['./teamVoicePrefix.attributes','exports','TeamVoicePrefix','team_has_voice_prefixes','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x4792c8,_0x5158a1){var _0x35edb1=function(_0x2472d3){while(--_0x2472d3){_0x4792c8['push'](_0x4792c8['shift']());}};_0x35edb1(++_0x5158a1);}(_0x30fc,0x64));var _0xc30f=function(_0x3f43,_0xd670da){_0x3f43=_0x3f43-0x0;var _0x35800f=_0x30fc[_0x3f43];return _0x35800f;};'use strict';var _=require(_0xc30f('0x0'));var util=require(_0xc30f('0x1'));var logger=require('../../config/logger')(_0xc30f('0x2'));var moment=require(_0xc30f('0x3'));var BPromise=require(_0xc30f('0x4'));var rp=require(_0xc30f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc30f('0x6'));var config=require(_0xc30f('0x7'));var attributes=require(_0xc30f('0x8'));module[_0xc30f('0x9')]=function(_0x2948cb,_0x293391){return _0x2948cb['define'](_0xc30f('0xa'),attributes,{'tableName':_0xc30f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x151b=['request-promise','path','./teamVoicePrefix.attributes','exports','TeamVoicePrefix','team_has_voice_prefixes','lodash','api','bluebird'];(function(_0x298b53,_0x3f830d){var _0x370c14=function(_0x16a8d7){while(--_0x16a8d7){_0x298b53['push'](_0x298b53['shift']());}};_0x370c14(++_0x3f830d);}(_0x151b,0x153));var _0xb151=function(_0x236f44,_0x2cd5c7){_0x236f44=_0x236f44-0x0;var _0x5186c7=_0x151b[_0x236f44];return _0x5186c7;};'use strict';var _=require(_0xb151('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xb151('0x1'));var moment=require('moment');var BPromise=require(_0xb151('0x2'));var rp=require(_0xb151('0x3'));var fs=require('fs');var path=require(_0xb151('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xb151('0x5'));module[_0xb151('0x6')]=function(_0x56b93e,_0x3ef028){return _0x56b93e['define'](_0xb151('0x7'),attributes,{'tableName':_0xb151('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1512a6b..8e2ac76 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(_0x1694d0,_0x5d8b1f){var _0x1736a9=function(_0x49bfee){while(--_0x49bfee){_0x1694d0['push'](_0x1694d0['shift']());}};_0x1736a9(++_0x5d8b1f);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x10004e,_0xd701e6){_0x10004e=_0x10004e-0x0;var _0x5af990=_0xcb91[_0x10004e];return _0x5af990;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x2b8ce9,_0x157372){var _0x3ed19e=function(_0xe002e){while(--_0xe002e){_0x2b8ce9['push'](_0x2b8ce9['shift']());}};_0x3ed19e(++_0x157372);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbb091,_0x3fe7ee){_0xbb091=_0xbb091-0x0;var _0x467a04=_0xa9e0[_0xbb091];return _0x467a04;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index 75ee8f0..26cabfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81e5=['INTEGER','sequelize','exports'];(function(_0x20ad68,_0x3b8246){var _0x10f84a=function(_0x5e1849){while(--_0x5e1849){_0x20ad68['push'](_0x20ad68['shift']());}};_0x10f84a(++_0x3b8246);}(_0x81e5,0x1ab));var _0x581e=function(_0x8d2c3d,_0x5545e5){_0x8d2c3d=_0x8d2c3d-0x0;var _0x400530=_0x81e5[_0x8d2c3d];return _0x400530;};'use strict';var Sequelize=require(_0x581e('0x0'));module[_0x581e('0x1')]={'penalty':{'type':Sequelize[_0x581e('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xafca=['exports','INTEGER','sequelize'];(function(_0x32512e,_0x102f51){var _0x4bd2bb=function(_0x2f34ae){while(--_0x2f34ae){_0x32512e['push'](_0x32512e['shift']());}};_0x4bd2bb(++_0x102f51);}(_0xafca,0x185));var _0xaafc=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xafca[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0xaafc('0x0'));module[_0xaafc('0x1')]={'penalty':{'type':Sequelize[_0xaafc('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 4d0837f..cbfbbfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4403=['TeamVoiceQueue','api','bluebird','request-promise','path','rimraf','./teamVoiceQueue.attributes','define'];(function(_0x3a07c3,_0xde9a38){var _0x421dba=function(_0x3d7045){while(--_0x3d7045){_0x3a07c3['push'](_0x3a07c3['shift']());}};_0x421dba(++_0xde9a38);}(_0x4403,0x179));var _0x3440=function(_0x21c550,_0x4e6312){_0x21c550=_0x21c550-0x0;var _0x32a419=_0x4403[_0x21c550];return _0x32a419;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x3440('0x0'));var moment=require('moment');var BPromise=require(_0x3440('0x1'));var rp=require(_0x3440('0x2'));var fs=require('fs');var path=require(_0x3440('0x3'));var rimraf=require(_0x3440('0x4'));var config=require('../../config/environment');var attributes=require(_0x3440('0x5'));module['exports']=function(_0x5904cb,_0x1e5e8d){return _0x5904cb[_0x3440('0x6')](_0x3440('0x7'),attributes,{'tableName':'team_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1782=['api','moment','bluebird','request-promise','rimraf','../../config/environment','lodash','../../config/logger'];(function(_0x572483,_0x4e7fe3){var _0x297b67=function(_0xb2ac1f){while(--_0xb2ac1f){_0x572483['push'](_0x572483['shift']());}};_0x297b67(++_0x4e7fe3);}(_0x1782,0x13e));var _0x2178=function(_0x2c2d11,_0x4308ac){_0x2c2d11=_0x2c2d11-0x0;var _0x255f24=_0x1782[_0x2c2d11];return _0x255f24;};'use strict';var _=require(_0x2178('0x0'));var util=require('util');var logger=require(_0x2178('0x1'))(_0x2178('0x2'));var moment=require(_0x2178('0x3'));var BPromise=require(_0x2178('0x4'));var rp=require(_0x2178('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2178('0x6'));var config=require(_0x2178('0x7'));var attributes=require('./teamVoiceQueue.attributes');module['exports']=function(_0x3c4dd1,_0x3b0f74){return _0x3c4dd1['define']('TeamVoiceQueue',attributes,{'tableName':'team_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index df9c41c..b42fc30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfe0=['jayson/promise','client','http','request','then','info','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment'];(function(_0x2b18e4,_0xd9cb6b){var _0x23e4f5=function(_0x3a0702){while(--_0x3a0702){_0x2b18e4['push'](_0x2b18e4['shift']());}};_0x23e4f5(++_0xd9cb6b);}(_0xdfe0,0xce));var _0x0dfe=function(_0x5c536e,_0x25f076){_0x5c536e=_0x5c536e-0x0;var _0x9d85d=_0xdfe0[_0x5c536e];return _0x9d85d;};'use strict';var _=require(_0x0dfe('0x0'));var util=require(_0x0dfe('0x1'));var moment=require(_0x0dfe('0x2'));var BPromise=require(_0x0dfe('0x3'));var rs=require(_0x0dfe('0x4'));var fs=require('fs');var Redis=require(_0x0dfe('0x5'));var db=require(_0x0dfe('0x6'))['db'];var utils=require(_0x0dfe('0x7'));var logger=require(_0x0dfe('0x8'))('rpc');var config=require(_0x0dfe('0x9'));var jayson=require(_0x0dfe('0xa'));var client=jayson[_0x0dfe('0xb')][_0x0dfe('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x121f59,_0x537a95,_0x22c92b){return new BPromise(function(_0x39d763,_0x12ad3c){return client[_0x0dfe('0xd')](_0x121f59,_0x22c92b)[_0x0dfe('0xe')](function(_0x276513){logger[_0x0dfe('0xf')](_0x0dfe('0x10'),_0x537a95,_0x0dfe('0x11'));logger['debug'](_0x0dfe('0x12'),_0x537a95,_0x0dfe('0x11'),JSON[_0x0dfe('0x13')](_0x276513));if(_0x276513[_0x0dfe('0x14')]){if(_0x276513[_0x0dfe('0x14')][_0x0dfe('0x15')]===0x1f4){logger[_0x0dfe('0x14')](_0x0dfe('0x10'),_0x537a95,_0x276513[_0x0dfe('0x14')][_0x0dfe('0x16')]);return _0x12ad3c(_0x276513[_0x0dfe('0x14')][_0x0dfe('0x16')]);}logger['error'](_0x0dfe('0x10'),_0x537a95,_0x276513[_0x0dfe('0x14')][_0x0dfe('0x16')]);return _0x39d763(_0x276513[_0x0dfe('0x14')][_0x0dfe('0x16')]);}else{logger['info'](_0x0dfe('0x10'),_0x537a95,'request\x20sent');_0x39d763(_0x276513['result'][_0x0dfe('0x16')]);}})[_0x0dfe('0x17')](function(_0x1e80fe){logger[_0x0dfe('0x14')](_0x0dfe('0x10'),_0x537a95,_0x1e80fe);_0x12ad3c(_0x1e80fe);});});}
\ No newline at end of file
+var _0x441a=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','then','info','TeamVoiceQueue,\x20%s,\x20%s','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','catch','lodash','moment'];(function(_0x3aa4ad,_0xe4e33f){var _0x44a2d8=function(_0xa5cf89){while(--_0xa5cf89){_0x3aa4ad['push'](_0x3aa4ad['shift']());}};_0x44a2d8(++_0xe4e33f);}(_0x441a,0x7c));var _0xa441=function(_0xac151d,_0x4ea1d2){_0xac151d=_0xac151d-0x0;var _0x111dba=_0x441a[_0xac151d];return _0x111dba;};'use strict';var _=require(_0xa441('0x0'));var util=require('util');var moment=require(_0xa441('0x1'));var BPromise=require('bluebird');var rs=require(_0xa441('0x2'));var fs=require('fs');var Redis=require(_0xa441('0x3'));var db=require(_0xa441('0x4'))['db'];var utils=require(_0xa441('0x5'));var logger=require(_0xa441('0x6'))('rpc');var config=require(_0xa441('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xa441('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4afd25,_0x55e976,_0x481c85){return new BPromise(function(_0x24a571,_0x778f5){return client['request'](_0x4afd25,_0x481c85)[_0xa441('0x9')](function(_0x36007b){logger[_0xa441('0xa')](_0xa441('0xb'),_0x55e976,'request\x20sent');logger['debug'](_0xa441('0xc'),_0x55e976,'request\x20sent',JSON[_0xa441('0xd')](_0x36007b));if(_0x36007b['error']){if(_0x36007b[_0xa441('0xe')]['code']===0x1f4){logger['error'](_0xa441('0xb'),_0x55e976,_0x36007b[_0xa441('0xe')][_0xa441('0xf')]);return _0x778f5(_0x36007b[_0xa441('0xe')]['message']);}logger['error'](_0xa441('0xb'),_0x55e976,_0x36007b[_0xa441('0xe')][_0xa441('0xf')]);return _0x24a571(_0x36007b['error']['message']);}else{logger['info'](_0xa441('0xb'),_0x55e976,_0xa441('0x10'));_0x24a571(_0x36007b['result'][_0xa441('0xf')]);}})[_0xa441('0x11')](function(_0x5df2ef){logger[_0xa441('0xe')](_0xa441('0xb'),_0x55e976,_0x5df2ef);_0x778f5(_0x5df2ef);});});}
\ No newline at end of file
index b8dda8f..3dae5c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd916=['update','delete','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','./template.controller','get','index','/:id','isAuthenticated','show','post'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xd916,0x18a));var _0x6d91=function(_0x521fa2,_0x1139fc){_0x521fa2=_0x521fa2-0x0;var _0x2b9b65=_0xd916[_0x521fa2];return _0x2b9b65;};'use strict';var multer=require(_0x6d91('0x0'));var util=require(_0x6d91('0x1'));var path=require(_0x6d91('0x2'));var timeout=require(_0x6d91('0x3'));var express=require(_0x6d91('0x4'));var router=express['Router']();var fs_extra=require(_0x6d91('0x5'));var auth=require(_0x6d91('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x6d91('0x7'));router[_0x6d91('0x8')]('/',auth['isAuthenticated'](),controller[_0x6d91('0x9')]);router[_0x6d91('0x8')](_0x6d91('0xa'),auth[_0x6d91('0xb')](),controller[_0x6d91('0xc')]);router[_0x6d91('0xd')]('/',auth[_0x6d91('0xb')](),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller[_0x6d91('0xe')]);router[_0x6d91('0xf')](_0x6d91('0xa'),auth[_0x6d91('0xb')](),controller[_0x6d91('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xfa4d=['multer','util','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./template.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','exports'];(function(_0x18e89d,_0x4814fe){var _0x1aea52=function(_0x23e9fd){while(--_0x23e9fd){_0x18e89d['push'](_0x18e89d['shift']());}};_0x1aea52(++_0x4814fe);}(_0xfa4d,0x90));var _0xdfa4=function(_0x28cb99,_0x2d8de8){_0x28cb99=_0x28cb99-0x0;var _0xd95c90=_0xfa4d[_0x28cb99];return _0xd95c90;};'use strict';var multer=require(_0xdfa4('0x0'));var util=require(_0xdfa4('0x1'));var path=require('path');var timeout=require(_0xdfa4('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xdfa4('0x3'));var interaction=require(_0xdfa4('0x4'));var config=require(_0xdfa4('0x5'));var controller=require(_0xdfa4('0x6'));router[_0xdfa4('0x7')]('/',auth[_0xdfa4('0x8')](),controller[_0xdfa4('0x9')]);router[_0xdfa4('0x7')](_0xdfa4('0xa'),auth[_0xdfa4('0x8')](),controller[_0xdfa4('0xb')]);router[_0xdfa4('0xc')]('/',auth[_0xdfa4('0x8')](),controller[_0xdfa4('0xd')]);router[_0xdfa4('0xe')]('/:id',auth['isAuthenticated'](),controller[_0xdfa4('0xf')]);router[_0xdfa4('0x10')]('/:id',auth[_0xdfa4('0x8')](),controller['destroy']);module[_0xdfa4('0x11')]=router;
\ No newline at end of file
index 5fdd830..0ffcb4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9986=['STRING','TEXT','exports'];(function(_0x51321d,_0x3b5e9c){var _0x821f03=function(_0x5c7f74){while(--_0x5c7f74){_0x51321d['push'](_0x51321d['shift']());}};_0x821f03(++_0x3b5e9c);}(_0x9986,0x143));var _0x6998=function(_0x13d063,_0x23e760){_0x13d063=_0x13d063-0x0;var _0x19c93a=_0x9986[_0x13d063];return _0x19c93a;};'use strict';var Sequelize=require('sequelize');module[_0x6998('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x6998('0x1')]},'html':{'type':Sequelize[_0x6998('0x2')]}};
\ No newline at end of file
+var _0x0005=['exports','STRING','TEXT','sequelize'];(function(_0x1384a2,_0x5780d1){var _0x3e2dca=function(_0x3bf8e5){while(--_0x3bf8e5){_0x1384a2['push'](_0x1384a2['shift']());}};_0x3e2dca(++_0x5780d1);}(_0x0005,0x6b));var _0x5000=function(_0xa2cefa,_0x404cde){_0xa2cefa=_0xa2cefa-0x0;var _0x42057c=_0x0005[_0xa2cefa];return _0x42057c;};'use strict';var Sequelize=require(_0x5000('0x0'));module[_0x5000('0x1')]={'name':{'type':Sequelize[_0x5000('0x2')]},'description':{'type':Sequelize[_0x5000('0x2')]},'html':{'type':Sequelize[_0x5000('0x3')]}};
\ No newline at end of file
index 8cc6d5c..59eb0f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe56=['body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','create','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','update','then','destroy','get','Templates','UserProfileResource','stack','name','send','index','map','Template','rawAttributes','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','findAll','catch','params','includeAll','include','find'];(function(_0x2c6810,_0x23c079){var _0x213881=function(_0x528021){while(--_0x528021){_0x2c6810['push'](_0x2c6810['shift']());}};_0x213881(++_0x23c079);}(_0xbe56,0x149));var _0x6be5=function(_0x5c6bcb,_0x4ca648){_0x5c6bcb=_0x5c6bcb-0x0;var _0x4c4cda=_0xbe56[_0x5c6bcb];return _0x4c4cda;};'use strict';var emlformat=require(_0x6be5('0x0'));var rimraf=require(_0x6be5('0x1'));var zipdir=require(_0x6be5('0x2'));var jsonpatch=require(_0x6be5('0x3'));var rp=require(_0x6be5('0x4'));var moment=require('moment');var BPromise=require(_0x6be5('0x5'));var Mustache=require('mustache');var util=require(_0x6be5('0x6'));var path=require(_0x6be5('0x7'));var sox=require(_0x6be5('0x8'));var csv=require(_0x6be5('0x9'));var ejs=require(_0x6be5('0xa'));var fs=require('fs');var fs_extra=require(_0x6be5('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x6be5('0xc'));var jsforce=require(_0x6be5('0xd'));var deskjs=require(_0x6be5('0xe'));var toCsv=require(_0x6be5('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x6be5('0xf'));var authService=require(_0x6be5('0x10'));var qs=require(_0x6be5('0x11'));var as=require(_0x6be5('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6be5('0x13'))(_0x6be5('0x14'));var utils=require(_0x6be5('0x15'));var config=require(_0x6be5('0x16'));var licenseUtil=require(_0x6be5('0x17'));var db=require(_0x6be5('0x18'))['db'];function respondWithStatusCode(_0x33c81d,_0x39ecf8){_0x39ecf8=_0x39ecf8||0xcc;return function(_0x1b828e){if(_0x1b828e){return _0x33c81d[_0x6be5('0x19')](_0x39ecf8);}return _0x33c81d[_0x6be5('0x1a')](_0x39ecf8)[_0x6be5('0x1b')]();};}function respondWithResult(_0xf77da1,_0x27264e){_0x27264e=_0x27264e||0xc8;return function(_0x212a44){if(_0x212a44){return _0xf77da1[_0x6be5('0x1a')](_0x27264e)[_0x6be5('0x1c')](_0x212a44);}};}function respondWithFilteredResult(_0xad371f,_0x3b2bc3){return function(_0x1b36c0){if(_0x1b36c0){var _0x5a096d=typeof _0x3b2bc3[_0x6be5('0x1d')]===_0x6be5('0x1e')&&typeof _0x3b2bc3[_0x6be5('0x1f')]===_0x6be5('0x1e');var _0x4df6c6=_0x1b36c0[_0x6be5('0x20')];var _0x306408=_0x5a096d?0x0:_0x3b2bc3[_0x6be5('0x1d')];var _0x1440e0=_0x5a096d?_0x1b36c0[_0x6be5('0x20')]:_0x3b2bc3[_0x6be5('0x1d')]+_0x3b2bc3[_0x6be5('0x1f')];var _0x395e63;if(_0x1440e0>=_0x4df6c6){_0x1440e0=_0x4df6c6;_0x395e63=0xc8;}else{_0x395e63=0xce;}_0xad371f[_0x6be5('0x1a')](_0x395e63);return _0xad371f[_0x6be5('0x21')]('Content-Range',_0x306408+'-'+_0x1440e0+'/'+_0x4df6c6)[_0x6be5('0x1c')](_0x1b36c0);}return null;};}function patchUpdates(_0x110cdf){return function(_0x579d51){try{jsonpatch[_0x6be5('0x22')](_0x579d51,_0x110cdf,!![]);}catch(_0x30b01c){return BPromise[_0x6be5('0x23')](_0x30b01c);}return _0x579d51['save']();};}function saveUpdates(_0x35c9f6,_0xb5e23b){return function(_0x32ad05){if(_0x32ad05){return _0x32ad05[_0x6be5('0x24')](_0x35c9f6)[_0x6be5('0x25')](function(_0x2ddadb){return _0x2ddadb;});}return null;};}function removeEntity(_0x4e5fc3,_0xc442d1){return function(_0x296df0){if(_0x296df0){return _0x296df0[_0x6be5('0x26')]()[_0x6be5('0x25')](function(){var _0x20d746=_0x296df0[_0x6be5('0x27')]({'plain':!![]});var _0x3e6397=_0x6be5('0x28');return db[_0x6be5('0x29')][_0x6be5('0x26')]({'where':{'type':_0x3e6397,'resourceId':_0x20d746['id']}})['then'](function(){return _0x296df0;});})[_0x6be5('0x25')](function(){_0x4e5fc3[_0x6be5('0x1a')](0xcc)[_0x6be5('0x1b')]();});}};}function handleEntityNotFound(_0xe6314d,_0x8f9177){return function(_0x584c8e){if(!_0x584c8e){_0xe6314d['sendStatus'](0x194);}return _0x584c8e;};}function handleError(_0x9a689a,_0x3a5a52){_0x3a5a52=_0x3a5a52||0x1f4;return function(_0x58b212){logger['error'](_0x58b212[_0x6be5('0x2a')]);if(_0x58b212['name']){delete _0x58b212[_0x6be5('0x2b')];}_0x9a689a[_0x6be5('0x1a')](_0x3a5a52)[_0x6be5('0x2c')](_0x58b212);};}exports[_0x6be5('0x2d')]=function(_0x4d5d39,_0x4cf952){var _0x1dfebe={},_0xe70e72={},_0x47bfb0={'count':0x0,'rows':[]};var _0x3c50d6=_[_0x6be5('0x2e')](db[_0x6be5('0x2f')][_0x6be5('0x30')],function(_0x57d4ba){return{'name':_0x57d4ba['fieldName'],'type':_0x57d4ba['type'][_0x6be5('0x31')]};});_0xe70e72[_0x6be5('0x32')]=_[_0x6be5('0x2e')](_0x3c50d6,_0x6be5('0x2b'));_0xe70e72[_0x6be5('0x33')]=_['keys'](_0x4d5d39[_0x6be5('0x33')]);_0xe70e72[_0x6be5('0x34')]=_['intersection'](_0xe70e72['model'],_0xe70e72[_0x6be5('0x33')]);_0x1dfebe['attributes']=_[_0x6be5('0x35')](_0xe70e72[_0x6be5('0x32')],qs[_0x6be5('0x36')](_0x4d5d39[_0x6be5('0x33')]['fields']));_0x1dfebe[_0x6be5('0x37')]=_0x1dfebe[_0x6be5('0x37')][_0x6be5('0x38')]?_0x1dfebe[_0x6be5('0x37')]:_0xe70e72[_0x6be5('0x32')];if(!_0x4d5d39[_0x6be5('0x33')][_0x6be5('0x39')]('nolimit')){_0x1dfebe['limit']=qs['limit'](_0x4d5d39[_0x6be5('0x33')]['limit']);_0x1dfebe['offset']=qs['offset'](_0x4d5d39[_0x6be5('0x33')]['offset']);}_0x1dfebe['order']=qs['sort'](_0x4d5d39['query'][_0x6be5('0x3a')]);_0x1dfebe[_0x6be5('0x3b')]=qs[_0x6be5('0x34')](_[_0x6be5('0x3c')](_0x4d5d39[_0x6be5('0x33')],_0xe70e72[_0x6be5('0x34')]),_0x3c50d6);if(_0x4d5d39[_0x6be5('0x33')][_0x6be5('0x3d')]){_0x1dfebe['where']=_[_0x6be5('0x3e')](_0x1dfebe[_0x6be5('0x3b')],{'$or':_['map'](_0x3c50d6,function(_0x3bb8b8){if(_0x3bb8b8['type']!==_0x6be5('0x3f')){var _0x4bfc93={};_0x4bfc93[_0x3bb8b8[_0x6be5('0x2b')]]={'$like':'%'+_0x4d5d39[_0x6be5('0x33')]['filter']+'%'};return _0x4bfc93;}})});}_0x1dfebe=_[_0x6be5('0x3e')]({},_0x1dfebe,_0x4d5d39[_0x6be5('0x40')]);var _0x134d4e={'where':_0x1dfebe[_0x6be5('0x3b')]};return db[_0x6be5('0x2f')][_0x6be5('0x20')](_0x134d4e)[_0x6be5('0x25')](function(_0x2549b5){_0x47bfb0[_0x6be5('0x20')]=_0x2549b5;if(_0x4d5d39[_0x6be5('0x33')]['includeAll']){_0x1dfebe['include']=[{'all':!![]}];}return db[_0x6be5('0x2f')][_0x6be5('0x41')](_0x1dfebe);})[_0x6be5('0x25')](function(_0x245c61){_0x47bfb0['rows']=_0x245c61;return _0x47bfb0;})[_0x6be5('0x25')](respondWithFilteredResult(_0x4cf952,_0x1dfebe))[_0x6be5('0x42')](handleError(_0x4cf952,null));};exports['show']=function(_0xb78e76,_0x62f3f1){var _0x530567={'raw':!![],'where':{'id':_0xb78e76[_0x6be5('0x43')]['id']}},_0x5a20eb={};_0x5a20eb[_0x6be5('0x32')]=_['keys'](db['Template']['rawAttributes']);_0x5a20eb[_0x6be5('0x33')]=_['keys'](_0xb78e76[_0x6be5('0x33')]);_0x5a20eb[_0x6be5('0x34')]=_[_0x6be5('0x35')](_0x5a20eb[_0x6be5('0x32')],_0x5a20eb[_0x6be5('0x33')]);_0x530567[_0x6be5('0x37')]=_[_0x6be5('0x35')](_0x5a20eb[_0x6be5('0x32')],qs[_0x6be5('0x36')](_0xb78e76[_0x6be5('0x33')][_0x6be5('0x36')]));_0x530567[_0x6be5('0x37')]=_0x530567['attributes'][_0x6be5('0x38')]?_0x530567['attributes']:_0x5a20eb[_0x6be5('0x32')];if(_0xb78e76[_0x6be5('0x33')][_0x6be5('0x44')]){_0x530567[_0x6be5('0x45')]=[{'all':!![]}];}_0x530567=_[_0x6be5('0x3e')]({},_0x530567,_0xb78e76[_0x6be5('0x40')]);return db['Template'][_0x6be5('0x46')](_0x530567)[_0x6be5('0x25')](handleEntityNotFound(_0x62f3f1,null))[_0x6be5('0x25')](respondWithResult(_0x62f3f1,null))[_0x6be5('0x42')](handleError(_0x62f3f1,null));};exports['create']=function(_0x522ac4,_0x689c8a){return db[_0x6be5('0x2f')]['create'](_0x522ac4[_0x6be5('0x47')],{})['then'](function(_0x2d449a){var _0x4470b5=_0x522ac4[_0x6be5('0x48')][_0x6be5('0x27')]({'plain':!![]});if(!_0x4470b5)throw new Error(_0x6be5('0x49'));if(_0x4470b5[_0x6be5('0x4a')]===_0x6be5('0x48')){var _0x5e990b=_0x2d449a[_0x6be5('0x27')]({'plain':!![]});var _0x277733=_0x6be5('0x28');return db[_0x6be5('0x4b')]['find']({'where':{'name':_0x277733,'userProfileId':_0x4470b5['userProfileId']},'raw':!![]})[_0x6be5('0x25')](function(_0x10142c){if(_0x10142c&&_0x10142c[_0x6be5('0x4c')]===0x0){return db[_0x6be5('0x29')][_0x6be5('0x4d')]({'name':_0x5e990b[_0x6be5('0x2b')],'resourceId':_0x5e990b['id'],'type':_0x10142c[_0x6be5('0x2b')],'sectionId':_0x10142c['id']},{})['then'](function(){return _0x2d449a;});}else{return _0x2d449a;}})[_0x6be5('0x42')](function(_0x2d1d41){logger[_0x6be5('0x4e')](_0x6be5('0x4f'),_0x2d1d41);throw _0x2d1d41;});}return _0x2d449a;})[_0x6be5('0x25')](respondWithResult(_0x689c8a,0xc9))[_0x6be5('0x42')](handleError(_0x689c8a,null));};exports[_0x6be5('0x24')]=function(_0x27b1de,_0x3a13c2){if(_0x27b1de[_0x6be5('0x47')]['id']){delete _0x27b1de[_0x6be5('0x47')]['id'];}return db[_0x6be5('0x2f')][_0x6be5('0x46')]({'where':{'id':_0x27b1de['params']['id']}})[_0x6be5('0x25')](handleEntityNotFound(_0x3a13c2,null))[_0x6be5('0x25')](saveUpdates(_0x27b1de[_0x6be5('0x47')],null))['then'](respondWithResult(_0x3a13c2,null))[_0x6be5('0x42')](handleError(_0x3a13c2,null));};exports['destroy']=function(_0x4958fc,_0x27ef60){return db[_0x6be5('0x2f')]['find']({'where':{'id':_0x4958fc['params']['id']}})[_0x6be5('0x25')](handleEntityNotFound(_0x27ef60,null))[_0x6be5('0x25')](removeEntity(_0x27ef60,null))['catch'](handleError(_0x27ef60,null));};
\ No newline at end of file
+var _0xdf89=['UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','get','UserProfileResource','destroy','then','sendStatus','error','stack','name','send','index','Template','rawAttributes','key','model','map','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Templates'];(function(_0x11005e,_0x20c3d2){var _0x29338f=function(_0x3384e9){while(--_0x3384e9){_0x11005e['push'](_0x11005e['shift']());}};_0x29338f(++_0x20c3d2);}(_0xdf89,0x1af));var _0x9df8=function(_0x5d29de,_0x1bf9be){_0x5d29de=_0x5d29de-0x0;var _0x342718=_0xdf89[_0x5d29de];return _0x342718;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x9df8('0x0'));var rp=require('request-promise');var moment=require(_0x9df8('0x1'));var BPromise=require(_0x9df8('0x2'));var Mustache=require(_0x9df8('0x3'));var util=require(_0x9df8('0x4'));var path=require(_0x9df8('0x5'));var sox=require('sox');var csv=require(_0x9df8('0x6'));var ejs=require(_0x9df8('0x7'));var fs=require('fs');var fs_extra=require(_0x9df8('0x8'));var _=require('lodash');var squel=require(_0x9df8('0x9'));var crypto=require(_0x9df8('0xa'));var jsforce=require(_0x9df8('0xb'));var deskjs=require(_0x9df8('0xc'));var toCsv=require(_0x9df8('0x6'));var querystring=require(_0x9df8('0xd'));var Papa=require(_0x9df8('0xe'));var Redis=require(_0x9df8('0xf'));var authService=require(_0x9df8('0x10'));var qs=require(_0x9df8('0x11'));var as=require(_0x9df8('0x12'));var hardwareService=require(_0x9df8('0x13'));var logger=require(_0x9df8('0x14'))(_0x9df8('0x15'));var utils=require(_0x9df8('0x16'));var config=require(_0x9df8('0x17'));var licenseUtil=require(_0x9df8('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x316da2,_0x436a55){_0x436a55=_0x436a55||0xcc;return function(_0x433bac){if(_0x433bac){return _0x316da2['sendStatus'](_0x436a55);}return _0x316da2[_0x9df8('0x19')](_0x436a55)['end']();};}function respondWithResult(_0x498451,_0x338864){_0x338864=_0x338864||0xc8;return function(_0x10cca6){if(_0x10cca6){return _0x498451[_0x9df8('0x19')](_0x338864)['json'](_0x10cca6);}};}function respondWithFilteredResult(_0x30508e,_0x1945e8){return function(_0x36cbda){if(_0x36cbda){var _0x3b916f=typeof _0x1945e8[_0x9df8('0x1a')]===_0x9df8('0x1b')&&typeof _0x1945e8[_0x9df8('0x1c')]==='undefined';var _0x8bfc18=_0x36cbda[_0x9df8('0x1d')];var _0x23f302=_0x3b916f?0x0:_0x1945e8[_0x9df8('0x1a')];var _0x2e6a36=_0x3b916f?_0x36cbda[_0x9df8('0x1d')]:_0x1945e8[_0x9df8('0x1a')]+_0x1945e8[_0x9df8('0x1c')];var _0xd5eeca;if(_0x2e6a36>=_0x8bfc18){_0x2e6a36=_0x8bfc18;_0xd5eeca=0xc8;}else{_0xd5eeca=0xce;}_0x30508e[_0x9df8('0x19')](_0xd5eeca);return _0x30508e[_0x9df8('0x1e')](_0x9df8('0x1f'),_0x23f302+'-'+_0x2e6a36+'/'+_0x8bfc18)[_0x9df8('0x20')](_0x36cbda);}return null;};}function patchUpdates(_0x2e43e6){return function(_0x52aee9){try{jsonpatch[_0x9df8('0x21')](_0x52aee9,_0x2e43e6,!![]);}catch(_0x4d5a59){return BPromise[_0x9df8('0x22')](_0x4d5a59);}return _0x52aee9[_0x9df8('0x23')]();};}function saveUpdates(_0xea7080,_0x62dda4){return function(_0x4e9427){if(_0x4e9427){return _0x4e9427[_0x9df8('0x24')](_0xea7080)['then'](function(_0x1e4536){return _0x1e4536;});}return null;};}function removeEntity(_0x5d1495,_0xf6d30b){return function(_0x5e3227){if(_0x5e3227){return _0x5e3227['destroy']()['then'](function(){var _0x158395=_0x5e3227[_0x9df8('0x25')]({'plain':!![]});var _0x188c59='Templates';return db[_0x9df8('0x26')][_0x9df8('0x27')]({'where':{'type':_0x188c59,'resourceId':_0x158395['id']}})[_0x9df8('0x28')](function(){return _0x5e3227;});})[_0x9df8('0x28')](function(){_0x5d1495['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5bafe8,_0x4d51a0){return function(_0x182ab0){if(!_0x182ab0){_0x5bafe8[_0x9df8('0x29')](0x194);}return _0x182ab0;};}function handleError(_0x267b62,_0x4ab301){_0x4ab301=_0x4ab301||0x1f4;return function(_0x46a3dd){logger[_0x9df8('0x2a')](_0x46a3dd[_0x9df8('0x2b')]);if(_0x46a3dd['name']){delete _0x46a3dd[_0x9df8('0x2c')];}_0x267b62[_0x9df8('0x19')](_0x4ab301)[_0x9df8('0x2d')](_0x46a3dd);};}exports[_0x9df8('0x2e')]=function(_0x350760,_0x436ba7){var _0x50d7c2={},_0x2cd752={},_0x500cf1={'count':0x0,'rows':[]};var _0xb53240=_['map'](db[_0x9df8('0x2f')][_0x9df8('0x30')],function(_0x281f8e){return{'name':_0x281f8e['fieldName'],'type':_0x281f8e['type'][_0x9df8('0x31')]};});_0x2cd752[_0x9df8('0x32')]=_[_0x9df8('0x33')](_0xb53240,_0x9df8('0x2c'));_0x2cd752[_0x9df8('0x34')]=_['keys'](_0x350760[_0x9df8('0x34')]);_0x2cd752[_0x9df8('0x35')]=_['intersection'](_0x2cd752[_0x9df8('0x32')],_0x2cd752['query']);_0x50d7c2[_0x9df8('0x36')]=_[_0x9df8('0x37')](_0x2cd752[_0x9df8('0x32')],qs[_0x9df8('0x38')](_0x350760['query'][_0x9df8('0x38')]));_0x50d7c2[_0x9df8('0x36')]=_0x50d7c2[_0x9df8('0x36')][_0x9df8('0x39')]?_0x50d7c2['attributes']:_0x2cd752['model'];if(!_0x350760['query'][_0x9df8('0x3a')](_0x9df8('0x3b'))){_0x50d7c2[_0x9df8('0x1c')]=qs[_0x9df8('0x1c')](_0x350760['query'][_0x9df8('0x1c')]);_0x50d7c2[_0x9df8('0x1a')]=qs[_0x9df8('0x1a')](_0x350760[_0x9df8('0x34')]['offset']);}_0x50d7c2[_0x9df8('0x3c')]=qs[_0x9df8('0x3d')](_0x350760[_0x9df8('0x34')][_0x9df8('0x3d')]);_0x50d7c2[_0x9df8('0x3e')]=qs[_0x9df8('0x35')](_['pick'](_0x350760[_0x9df8('0x34')],_0x2cd752[_0x9df8('0x35')]),_0xb53240);if(_0x350760[_0x9df8('0x34')][_0x9df8('0x3f')]){_0x50d7c2[_0x9df8('0x3e')]=_[_0x9df8('0x40')](_0x50d7c2[_0x9df8('0x3e')],{'$or':_['map'](_0xb53240,function(_0x117410){if(_0x117410['type']!==_0x9df8('0x41')){var _0x26ba65={};_0x26ba65[_0x117410[_0x9df8('0x2c')]]={'$like':'%'+_0x350760[_0x9df8('0x34')][_0x9df8('0x3f')]+'%'};return _0x26ba65;}})});}_0x50d7c2=_[_0x9df8('0x40')]({},_0x50d7c2,_0x350760[_0x9df8('0x42')]);var _0x34bd0c={'where':_0x50d7c2[_0x9df8('0x3e')]};return db[_0x9df8('0x2f')][_0x9df8('0x1d')](_0x34bd0c)[_0x9df8('0x28')](function(_0x521338){_0x500cf1['count']=_0x521338;if(_0x350760[_0x9df8('0x34')][_0x9df8('0x43')]){_0x50d7c2[_0x9df8('0x44')]=[{'all':!![]}];}return db['Template'][_0x9df8('0x45')](_0x50d7c2);})[_0x9df8('0x28')](function(_0x2fc71c){_0x500cf1[_0x9df8('0x46')]=_0x2fc71c;return _0x500cf1;})['then'](respondWithFilteredResult(_0x436ba7,_0x50d7c2))[_0x9df8('0x47')](handleError(_0x436ba7,null));};exports[_0x9df8('0x48')]=function(_0x533728,_0xec0106){var _0x34d54b={'raw':!![],'where':{'id':_0x533728[_0x9df8('0x49')]['id']}},_0x4c0804={};_0x4c0804[_0x9df8('0x32')]=_[_0x9df8('0x4a')](db[_0x9df8('0x2f')][_0x9df8('0x30')]);_0x4c0804[_0x9df8('0x34')]=_['keys'](_0x533728[_0x9df8('0x34')]);_0x4c0804['filters']=_[_0x9df8('0x37')](_0x4c0804[_0x9df8('0x32')],_0x4c0804[_0x9df8('0x34')]);_0x34d54b[_0x9df8('0x36')]=_[_0x9df8('0x37')](_0x4c0804[_0x9df8('0x32')],qs['fields'](_0x533728[_0x9df8('0x34')][_0x9df8('0x38')]));_0x34d54b['attributes']=_0x34d54b['attributes'][_0x9df8('0x39')]?_0x34d54b[_0x9df8('0x36')]:_0x4c0804['model'];if(_0x533728[_0x9df8('0x34')][_0x9df8('0x43')]){_0x34d54b[_0x9df8('0x44')]=[{'all':!![]}];}_0x34d54b=_[_0x9df8('0x40')]({},_0x34d54b,_0x533728[_0x9df8('0x42')]);return db[_0x9df8('0x2f')]['find'](_0x34d54b)[_0x9df8('0x28')](handleEntityNotFound(_0xec0106,null))[_0x9df8('0x28')](respondWithResult(_0xec0106,null))[_0x9df8('0x47')](handleError(_0xec0106,null));};exports['create']=function(_0x152d9f,_0x2c05f7){return db[_0x9df8('0x2f')][_0x9df8('0x4b')](_0x152d9f['body'],{})[_0x9df8('0x28')](function(_0x2e16e7){var _0x31fb18=_0x152d9f['user']['get']({'plain':!![]});if(!_0x31fb18)throw new Error(_0x9df8('0x4c'));if(_0x31fb18[_0x9df8('0x4d')]==='user'){var _0x18255a=_0x2e16e7[_0x9df8('0x25')]({'plain':!![]});var _0x40f494=_0x9df8('0x4e');return db[_0x9df8('0x4f')][_0x9df8('0x50')]({'where':{'name':_0x40f494,'userProfileId':_0x31fb18[_0x9df8('0x51')]},'raw':!![]})[_0x9df8('0x28')](function(_0x500407){if(_0x500407&&_0x500407[_0x9df8('0x52')]===0x0){return db['UserProfileResource'][_0x9df8('0x4b')]({'name':_0x18255a[_0x9df8('0x2c')],'resourceId':_0x18255a['id'],'type':_0x500407[_0x9df8('0x2c')],'sectionId':_0x500407['id']},{})[_0x9df8('0x28')](function(){return _0x2e16e7;});}else{return _0x2e16e7;}})[_0x9df8('0x47')](function(_0x710369){logger[_0x9df8('0x2a')](_0x9df8('0x53'),_0x710369);throw _0x710369;});}return _0x2e16e7;})[_0x9df8('0x28')](respondWithResult(_0x2c05f7,0xc9))[_0x9df8('0x47')](handleError(_0x2c05f7,null));};exports[_0x9df8('0x24')]=function(_0x571cba,_0x39fb60){if(_0x571cba[_0x9df8('0x54')]['id']){delete _0x571cba['body']['id'];}return db[_0x9df8('0x2f')][_0x9df8('0x50')]({'where':{'id':_0x571cba[_0x9df8('0x49')]['id']}})[_0x9df8('0x28')](handleEntityNotFound(_0x39fb60,null))[_0x9df8('0x28')](saveUpdates(_0x571cba[_0x9df8('0x54')],null))[_0x9df8('0x28')](respondWithResult(_0x39fb60,null))[_0x9df8('0x47')](handleError(_0x39fb60,null));};exports[_0x9df8('0x27')]=function(_0x2f0434,_0x1dc1c6){return db['Template'][_0x9df8('0x50')]({'where':{'id':_0x2f0434['params']['id']}})[_0x9df8('0x28')](handleEntityNotFound(_0x1dc1c6,null))[_0x9df8('0x28')](removeEntity(_0x1dc1c6,null))[_0x9df8('0x47')](handleError(_0x1dc1c6,null));};
\ No newline at end of file
index 68916fa..b5ba774 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafcb=['moment','bluebird','request-promise','path','rimraf','./template.attributes','exports','define','Template','lodash','util'];(function(_0x5daad7,_0x414e49){var _0x93be3f=function(_0x429851){while(--_0x429851){_0x5daad7['push'](_0x5daad7['shift']());}};_0x93be3f(++_0x414e49);}(_0xafcb,0x1cc));var _0xbafc=function(_0x5ba874,_0x5cfb0a){_0x5ba874=_0x5ba874-0x0;var _0x7fc7a6=_0xafcb[_0x5ba874];return _0x7fc7a6;};'use strict';var _=require(_0xbafc('0x0'));var util=require(_0xbafc('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xbafc('0x2'));var BPromise=require(_0xbafc('0x3'));var rp=require(_0xbafc('0x4'));var fs=require('fs');var path=require(_0xbafc('0x5'));var rimraf=require(_0xbafc('0x6'));var config=require('../../config/environment');var attributes=require(_0xbafc('0x7'));module[_0xbafc('0x8')]=function(_0x1a1827,_0x3cbbf8){return _0x1a1827[_0xbafc('0x9')](_0xbafc('0xa'),attributes,{'tableName':'tools_templates','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9c67=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./template.attributes','exports','define','Template','tools_templates','lodash','util'];(function(_0x3808a6,_0x3b679e){var _0x2f4937=function(_0x586e6c){while(--_0x586e6c){_0x3808a6['push'](_0x3808a6['shift']());}};_0x2f4937(++_0x3b679e);}(_0x9c67,0x1cc));var _0x79c6=function(_0x51d99b,_0x40f96f){_0x51d99b=_0x51d99b-0x0;var _0x359a78=_0x9c67[_0x51d99b];return _0x359a78;};'use strict';var _=require(_0x79c6('0x0'));var util=require(_0x79c6('0x1'));var logger=require(_0x79c6('0x2'))(_0x79c6('0x3'));var moment=require(_0x79c6('0x4'));var BPromise=require(_0x79c6('0x5'));var rp=require(_0x79c6('0x6'));var fs=require('fs');var path=require(_0x79c6('0x7'));var rimraf=require(_0x79c6('0x8'));var config=require('../../config/environment');var attributes=require(_0x79c6('0x9'));module[_0x79c6('0xa')]=function(_0x322554,_0x595ff7){return _0x322554[_0x79c6('0xb')](_0x79c6('0xc'),attributes,{'tableName':_0x79c6('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d5b4a84..463afbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5610=['debug','stringify','error','message','result','catch','Template','options','where','attributes','limit','include','map','model','info','GetTemplate','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','Template,\x20%s,\x20%s','request\x20sent'];(function(_0x100c7f,_0x17a338){var _0x1e552a=function(_0x33b0da){while(--_0x33b0da){_0x100c7f['push'](_0x100c7f['shift']());}};_0x1e552a(++_0x17a338);}(_0x5610,0x100));var _0x0561=function(_0x1fd441,_0x331194){_0x1fd441=_0x1fd441-0x0;var _0x53ee2d=_0x5610[_0x1fd441];return _0x53ee2d;};'use strict';var _=require(_0x0561('0x0'));var util=require(_0x0561('0x1'));var moment=require(_0x0561('0x2'));var BPromise=require(_0x0561('0x3'));var rs=require(_0x0561('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x0561('0x5'));var logger=require(_0x0561('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x0561('0x7'));var client=jayson[_0x0561('0x8')][_0x0561('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xe6b8b2,_0x4c5635,_0x4556ac){return new BPromise(function(_0x109cad,_0x1348e6){return client[_0x0561('0xa')](_0xe6b8b2,_0x4556ac)[_0x0561('0xb')](function(_0x320c87){logger['info'](_0x0561('0xc'),_0x4c5635,_0x0561('0xd'));logger[_0x0561('0xe')]('Template,\x20%s,\x20%s,\x20%s',_0x4c5635,_0x0561('0xd'),JSON[_0x0561('0xf')](_0x320c87));if(_0x320c87['error']){if(_0x320c87[_0x0561('0x10')]['code']===0x1f4){logger['error'](_0x0561('0xc'),_0x4c5635,_0x320c87[_0x0561('0x10')][_0x0561('0x11')]);return _0x1348e6(_0x320c87[_0x0561('0x10')]['message']);}logger[_0x0561('0x10')](_0x0561('0xc'),_0x4c5635,_0x320c87[_0x0561('0x10')][_0x0561('0x11')]);return _0x109cad(_0x320c87['error'][_0x0561('0x11')]);}else{logger['info'](_0x0561('0xc'),_0x4c5635,_0x0561('0xd'));_0x109cad(_0x320c87[_0x0561('0x12')]['message']);}})[_0x0561('0x13')](function(_0x22ba73){logger['error'](_0x0561('0xc'),_0x4c5635,_0x22ba73);_0x1348e6(_0x22ba73);});});}exports['GetTemplate']=function(_0x2b6a8e){var _0x3d4332=this;return new Promise(function(_0x328305,_0x1f4cc6){return db[_0x0561('0x14')]['findAll']({'raw':_0x2b6a8e[_0x0561('0x15')]?_0x2b6a8e[_0x0561('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x2b6a8e[_0x0561('0x15')]?_0x2b6a8e[_0x0561('0x15')][_0x0561('0x16')]||null:null,'attributes':_0x2b6a8e[_0x0561('0x15')]?_0x2b6a8e[_0x0561('0x15')][_0x0561('0x17')]||null:null,'limit':_0x2b6a8e[_0x0561('0x15')]?_0x2b6a8e['options'][_0x0561('0x18')]||null:null,'include':_0x2b6a8e[_0x0561('0x15')]?_0x2b6a8e[_0x0561('0x15')][_0x0561('0x19')]?_[_0x0561('0x1a')](_0x2b6a8e['options'][_0x0561('0x19')],function(_0x32d3e5){return{'model':db[_0x32d3e5['model']],'as':_0x32d3e5['as'],'attributes':_0x32d3e5[_0x0561('0x17')],'include':_0x32d3e5[_0x0561('0x19')]?_['map'](_0x32d3e5[_0x0561('0x19')],function(_0x3559d2){return{'model':db[_0x3559d2[_0x0561('0x1b')]],'as':_0x3559d2['as'],'attributes':_0x3559d2[_0x0561('0x17')],'include':_0x3559d2['include']?_[_0x0561('0x1a')](_0x3559d2[_0x0561('0x19')],function(_0x22e283){return{'model':db[_0x22e283[_0x0561('0x1b')]],'as':_0x22e283['as'],'attributes':_0x22e283[_0x0561('0x17')]};}):[]};}):[]};}):[]:[]})[_0x0561('0xb')](function(_0x1a585e){logger[_0x0561('0x1c')](_0x0561('0x1d'),_0x2b6a8e);logger[_0x0561('0xe')](_0x0561('0x1d'),_0x2b6a8e,JSON['stringify'](_0x1a585e));_0x328305(_0x1a585e);})[_0x0561('0x13')](function(_0x31b069){logger[_0x0561('0x10')]('GetTemplate',_0x31b069[_0x0561('0x11')],_0x2b6a8e);_0x1f4cc6(_0x3d4332[_0x0561('0x10')](0x1f4,_0x31b069[_0x0561('0x11')]));});});};
\ No newline at end of file
+var _0x20f1=['catch','Template','options','where','attributes','include','map','model','GetTemplate','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','info','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','stringify','error','Template,\x20%s,\x20%s','message'];(function(_0x4d613c,_0x55f220){var _0x301fe3=function(_0x5eec0b){while(--_0x5eec0b){_0x4d613c['push'](_0x4d613c['shift']());}};_0x301fe3(++_0x55f220);}(_0x20f1,0x121));var _0x120f=function(_0x494451,_0x54b7fe){_0x494451=_0x494451-0x0;var _0x3b4f04=_0x20f1[_0x494451];return _0x3b4f04;};'use strict';var _=require(_0x120f('0x0'));var util=require('util');var moment=require(_0x120f('0x1'));var BPromise=require(_0x120f('0x2'));var rs=require(_0x120f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x120f('0x4'))['db'];var utils=require(_0x120f('0x5'));var logger=require(_0x120f('0x6'))(_0x120f('0x7'));var config=require(_0x120f('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x120f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x586dea,_0xd03e5b,_0x29fd5f){return new BPromise(function(_0x7f6a3,_0x6abc47){return client[_0x120f('0xa')](_0x586dea,_0x29fd5f)['then'](function(_0x5c87b7){logger[_0x120f('0xb')]('Template,\x20%s,\x20%s',_0xd03e5b,_0x120f('0xc'));logger[_0x120f('0xd')](_0x120f('0xe'),_0xd03e5b,_0x120f('0xc'),JSON[_0x120f('0xf')](_0x5c87b7));if(_0x5c87b7['error']){if(_0x5c87b7[_0x120f('0x10')]['code']===0x1f4){logger[_0x120f('0x10')](_0x120f('0x11'),_0xd03e5b,_0x5c87b7[_0x120f('0x10')][_0x120f('0x12')]);return _0x6abc47(_0x5c87b7[_0x120f('0x10')][_0x120f('0x12')]);}logger[_0x120f('0x10')](_0x120f('0x11'),_0xd03e5b,_0x5c87b7[_0x120f('0x10')][_0x120f('0x12')]);return _0x7f6a3(_0x5c87b7[_0x120f('0x10')][_0x120f('0x12')]);}else{logger['info'](_0x120f('0x11'),_0xd03e5b,_0x120f('0xc'));_0x7f6a3(_0x5c87b7['result']['message']);}})[_0x120f('0x13')](function(_0x222b3b){logger[_0x120f('0x10')](_0x120f('0x11'),_0xd03e5b,_0x222b3b);_0x6abc47(_0x222b3b);});});}exports['GetTemplate']=function(_0x2028f9){var _0x29285a=this;return new Promise(function(_0x22b2e8,_0x56911b){return db[_0x120f('0x14')]['findAll']({'raw':_0x2028f9[_0x120f('0x15')]?_0x2028f9[_0x120f('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x2028f9[_0x120f('0x15')]?_0x2028f9[_0x120f('0x15')][_0x120f('0x16')]||null:null,'attributes':_0x2028f9[_0x120f('0x15')]?_0x2028f9[_0x120f('0x15')][_0x120f('0x17')]||null:null,'limit':_0x2028f9[_0x120f('0x15')]?_0x2028f9[_0x120f('0x15')]['limit']||null:null,'include':_0x2028f9[_0x120f('0x15')]?_0x2028f9[_0x120f('0x15')][_0x120f('0x18')]?_[_0x120f('0x19')](_0x2028f9[_0x120f('0x15')]['include'],function(_0x2d6c61){return{'model':db[_0x2d6c61[_0x120f('0x1a')]],'as':_0x2d6c61['as'],'attributes':_0x2d6c61[_0x120f('0x17')],'include':_0x2d6c61[_0x120f('0x18')]?_[_0x120f('0x19')](_0x2d6c61[_0x120f('0x18')],function(_0x4d5a0a){return{'model':db[_0x4d5a0a['model']],'as':_0x4d5a0a['as'],'attributes':_0x4d5a0a['attributes'],'include':_0x4d5a0a[_0x120f('0x18')]?_['map'](_0x4d5a0a['include'],function(_0x37b89f){return{'model':db[_0x37b89f[_0x120f('0x1a')]],'as':_0x37b89f['as'],'attributes':_0x37b89f['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x497225){logger[_0x120f('0xb')](_0x120f('0x1b'),_0x2028f9);logger['debug'](_0x120f('0x1b'),_0x2028f9,JSON['stringify'](_0x497225));_0x22b2e8(_0x497225);})[_0x120f('0x13')](function(_0x313217){logger['error'](_0x120f('0x1b'),_0x313217['message'],_0x2028f9);_0x56911b(_0x29285a[_0x120f('0x10')](0x1f4,_0x313217[_0x120f('0x12')]));});});};
\ No newline at end of file
index b701255..874966e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c9a=['get','index','isAuthenticated','show','/:id/all_conditions','getAllConditions','/:id/any_conditions','getAnyConditions','/:id/actions','getActions','post','create','addAllCondition','addAnyCondition','addAction','put','/:id','destroy','exports','multer','util','path','express','../../components/auth/service','../../components/interaction/service','./trigger.controller'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x3c9a,0x131));var _0xa3c9=function(_0x232e7a,_0x19997){_0x232e7a=_0x232e7a-0x0;var _0x445ddd=_0x3c9a[_0x232e7a];return _0x445ddd;};'use strict';var multer=require(_0xa3c9('0x0'));var util=require(_0xa3c9('0x1'));var path=require(_0xa3c9('0x2'));var timeout=require('connect-timeout');var express=require(_0xa3c9('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xa3c9('0x4'));var interaction=require(_0xa3c9('0x5'));var config=require('../../config/environment');var controller=require(_0xa3c9('0x6'));router[_0xa3c9('0x7')]('/',auth['isAuthenticated'](),controller[_0xa3c9('0x8')]);router['get']('/:id',auth[_0xa3c9('0x9')](),controller[_0xa3c9('0xa')]);router['get'](_0xa3c9('0xb'),auth['isAuthenticated'](),controller[_0xa3c9('0xc')]);router[_0xa3c9('0x7')](_0xa3c9('0xd'),auth[_0xa3c9('0x9')](),controller[_0xa3c9('0xe')]);router[_0xa3c9('0x7')](_0xa3c9('0xf'),auth[_0xa3c9('0x9')](),controller[_0xa3c9('0x10')]);router[_0xa3c9('0x11')]('/',auth[_0xa3c9('0x9')](),controller[_0xa3c9('0x12')]);router[_0xa3c9('0x11')](_0xa3c9('0xb'),auth[_0xa3c9('0x9')](),controller[_0xa3c9('0x13')]);router[_0xa3c9('0x11')]('/:id/any_conditions',auth['isAuthenticated'](),controller[_0xa3c9('0x14')]);router[_0xa3c9('0x11')](_0xa3c9('0xf'),auth[_0xa3c9('0x9')](),controller[_0xa3c9('0x15')]);router[_0xa3c9('0x16')](_0xa3c9('0x17'),auth[_0xa3c9('0x9')](),controller['update']);router['delete'](_0xa3c9('0x17'),auth[_0xa3c9('0x9')](),controller[_0xa3c9('0x18')]);module[_0xa3c9('0x19')]=router;
\ No newline at end of file
+var _0xb99e=['addAllCondition','addAnyCondition','addAction','put','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','/:id/all_conditions','getAllConditions','/:id/any_conditions','getAnyConditions','/:id/actions','create','post'];(function(_0xa386b6,_0x889d1b){var _0xea97c8=function(_0x3a8a8a){while(--_0x3a8a8a){_0xa386b6['push'](_0xa386b6['shift']());}};_0xea97c8(++_0x889d1b);}(_0xb99e,0xcc));var _0xeb99=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xb99e[_0x19e35c];return _0x3e1fe8;};'use strict';var multer=require(_0xeb99('0x0'));var util=require(_0xeb99('0x1'));var path=require(_0xeb99('0x2'));var timeout=require('connect-timeout');var express=require(_0xeb99('0x3'));var router=express[_0xeb99('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xeb99('0x5'));var interaction=require(_0xeb99('0x6'));var config=require(_0xeb99('0x7'));var controller=require('./trigger.controller');router[_0xeb99('0x8')]('/',auth['isAuthenticated'](),controller[_0xeb99('0x9')]);router[_0xeb99('0x8')](_0xeb99('0xa'),auth[_0xeb99('0xb')](),controller[_0xeb99('0xc')]);router[_0xeb99('0x8')](_0xeb99('0xd'),auth[_0xeb99('0xb')](),controller[_0xeb99('0xe')]);router[_0xeb99('0x8')](_0xeb99('0xf'),auth[_0xeb99('0xb')](),controller[_0xeb99('0x10')]);router['get'](_0xeb99('0x11'),auth[_0xeb99('0xb')](),controller['getActions']);router['post']('/',auth['isAuthenticated'](),controller[_0xeb99('0x12')]);router[_0xeb99('0x13')]('/:id/all_conditions',auth['isAuthenticated'](),controller[_0xeb99('0x14')]);router['post'](_0xeb99('0xf'),auth['isAuthenticated'](),controller[_0xeb99('0x15')]);router[_0xeb99('0x13')](_0xeb99('0x11'),auth['isAuthenticated'](),controller[_0xeb99('0x16')]);router[_0xeb99('0x17')](_0xeb99('0xa'),auth['isAuthenticated'](),controller[_0xeb99('0x18')]);router[_0xeb99('0x19')](_0xeb99('0xa'),auth[_0xeb99('0xb')](),controller[_0xeb99('0x1a')]);module[_0xeb99('0x1b')]=router;
\ No newline at end of file
index ad339a3..364bd66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x759f=['sequelize','exports','STRING','BOOLEAN'];(function(_0x21f2f9,_0x34858a){var _0x38d98c=function(_0x544598){while(--_0x544598){_0x21f2f9['push'](_0x21f2f9['shift']());}};_0x38d98c(++_0x34858a);}(_0x759f,0x1a8));var _0xf759=function(_0x5492db,_0x4224dc){_0x5492db=_0x5492db-0x0;var _0xd4b8fa=_0x759f[_0x5492db];return _0xd4b8fa;};'use strict';var Sequelize=require(_0xf759('0x0'));module[_0xf759('0x1')]={'name':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xf759('0x2')]},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize[_0xf759('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x7863=['exports','STRING','BOOLEAN','sequelize'];(function(_0x23496e,_0x5c2620){var _0xd5128e=function(_0x503fdc){while(--_0x503fdc){_0x23496e['push'](_0x23496e['shift']());}};_0xd5128e(++_0x5c2620);}(_0x7863,0x1af));var _0x3786=function(_0x2fc3ae,_0x42da14){_0x2fc3ae=_0x2fc3ae-0x0;var _0x26175b=_0x7863[_0x2fc3ae];return _0x26175b;};'use strict';var Sequelize=require(_0x3786('0x0'));module[_0x3786('0x1')]={'name':{'type':Sequelize[_0x3786('0x2')]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x3786('0x2')]},'status':{'type':Sequelize[_0x3786('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 23aa000..c638d1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10a8=['merge','type','includeAll','include','findAll','rows','show','params','keys','intersection','options','find','catch','body','user','role','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addAllCondition','TriggerAllId','Condition','addAnyCondition','TriggerAnyId','getAllConditions','findOne','hasOwnProperty','getAnyConditions','TriggerId','Action','getActions','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','end','status','json','offset','undefined','count','limit','set','Content-Range','reject','update','then','destroy','get','Triggers','UserProfileResource','sendStatus','error','stack','name','index','map','Trigger','rawAttributes','fieldName','model','query','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter'];(function(_0xb0de07,_0x3ca2a0){var _0x4633d8=function(_0x2368e0){while(--_0x2368e0){_0xb0de07['push'](_0xb0de07['shift']());}};_0x4633d8(++_0x3ca2a0);}(_0x10a8,0x1ed));var _0x810a=function(_0x2d788f,_0x42dc53){_0x2d788f=_0x2d788f-0x0;var _0x106810=_0x10a8[_0x2d788f];return _0x106810;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x810a('0x0'));var zipdir=require(_0x810a('0x1'));var jsonpatch=require(_0x810a('0x2'));var rp=require(_0x810a('0x3'));var moment=require(_0x810a('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x810a('0x5'));var util=require('util');var path=require('path');var sox=require(_0x810a('0x6'));var csv=require('to-csv');var ejs=require(_0x810a('0x7'));var fs=require('fs');var fs_extra=require(_0x810a('0x8'));var _=require('lodash');var squel=require(_0x810a('0x9'));var crypto=require(_0x810a('0xa'));var jsforce=require(_0x810a('0xb'));var deskjs=require(_0x810a('0xc'));var toCsv=require(_0x810a('0xd'));var querystring=require(_0x810a('0xe'));var Papa=require(_0x810a('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x810a('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x810a('0x11'));var logger=require(_0x810a('0x12'))(_0x810a('0x13'));var utils=require(_0x810a('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x810a('0x15'))['db'];function respondWithStatusCode(_0x20a469,_0x23dd6d){_0x23dd6d=_0x23dd6d||0xcc;return function(_0xa74a62){if(_0xa74a62){return _0x20a469['sendStatus'](_0x23dd6d);}return _0x20a469['status'](_0x23dd6d)[_0x810a('0x16')]();};}function respondWithResult(_0x5de871,_0x52b1ed){_0x52b1ed=_0x52b1ed||0xc8;return function(_0x19dca2){if(_0x19dca2){return _0x5de871[_0x810a('0x17')](_0x52b1ed)[_0x810a('0x18')](_0x19dca2);}};}function respondWithFilteredResult(_0x5098aa,_0x2f1c38){return function(_0x44bf11){if(_0x44bf11){var _0x2f65ab=typeof _0x2f1c38[_0x810a('0x19')]===_0x810a('0x1a')&&typeof _0x2f1c38['limit']===_0x810a('0x1a');var _0x2ccc94=_0x44bf11[_0x810a('0x1b')];var _0x169b53=_0x2f65ab?0x0:_0x2f1c38[_0x810a('0x19')];var _0x43cf63=_0x2f65ab?_0x44bf11['count']:_0x2f1c38['offset']+_0x2f1c38[_0x810a('0x1c')];var _0x5399df;if(_0x43cf63>=_0x2ccc94){_0x43cf63=_0x2ccc94;_0x5399df=0xc8;}else{_0x5399df=0xce;}_0x5098aa['status'](_0x5399df);return _0x5098aa[_0x810a('0x1d')](_0x810a('0x1e'),_0x169b53+'-'+_0x43cf63+'/'+_0x2ccc94)['json'](_0x44bf11);}return null;};}function patchUpdates(_0x4d67e3){return function(_0x328748){try{jsonpatch['apply'](_0x328748,_0x4d67e3,!![]);}catch(_0x537a21){return BPromise[_0x810a('0x1f')](_0x537a21);}return _0x328748['save']();};}function saveUpdates(_0x55194e,_0x42a677){return function(_0x142c43){if(_0x142c43){return _0x142c43[_0x810a('0x20')](_0x55194e)[_0x810a('0x21')](function(_0xf007e7){return _0xf007e7;});}return null;};}function removeEntity(_0x100b9c,_0x57b8c4){return function(_0x1b8bff){if(_0x1b8bff){return _0x1b8bff[_0x810a('0x22')]()[_0x810a('0x21')](function(){var _0x367c7d=_0x1b8bff[_0x810a('0x23')]({'plain':!![]});var _0x473e64=_0x810a('0x24');return db[_0x810a('0x25')]['destroy']({'where':{'type':_0x473e64,'resourceId':_0x367c7d['id']}})[_0x810a('0x21')](function(){return _0x1b8bff;});})['then'](function(){_0x100b9c[_0x810a('0x17')](0xcc)[_0x810a('0x16')]();});}};}function handleEntityNotFound(_0x237146,_0x3c6577){return function(_0x97684){if(!_0x97684){_0x237146[_0x810a('0x26')](0x194);}return _0x97684;};}function handleError(_0x2d0e16,_0x383d84){_0x383d84=_0x383d84||0x1f4;return function(_0x2b2e08){logger[_0x810a('0x27')](_0x2b2e08[_0x810a('0x28')]);if(_0x2b2e08[_0x810a('0x29')]){delete _0x2b2e08[_0x810a('0x29')];}_0x2d0e16[_0x810a('0x17')](_0x383d84)['send'](_0x2b2e08);};}exports[_0x810a('0x2a')]=function(_0x187a85,_0x221fe1){var _0x3a3a14={},_0xaaf14f={},_0x1a00d1={'count':0x0,'rows':[]};var _0x2f39ef=_[_0x810a('0x2b')](db[_0x810a('0x2c')][_0x810a('0x2d')],function(_0x3385fb){return{'name':_0x3385fb[_0x810a('0x2e')],'type':_0x3385fb['type']['key']};});_0xaaf14f[_0x810a('0x2f')]=_[_0x810a('0x2b')](_0x2f39ef,_0x810a('0x29'));_0xaaf14f['query']=_['keys'](_0x187a85[_0x810a('0x30')]);_0xaaf14f['filters']=_['intersection'](_0xaaf14f['model'],_0xaaf14f[_0x810a('0x30')]);_0x3a3a14[_0x810a('0x31')]=_['intersection'](_0xaaf14f[_0x810a('0x2f')],qs[_0x810a('0x32')](_0x187a85[_0x810a('0x30')]['fields']));_0x3a3a14[_0x810a('0x31')]=_0x3a3a14[_0x810a('0x31')][_0x810a('0x33')]?_0x3a3a14['attributes']:_0xaaf14f[_0x810a('0x2f')];if(!_0x187a85['query']['hasOwnProperty'](_0x810a('0x34'))){_0x3a3a14[_0x810a('0x1c')]=qs[_0x810a('0x1c')](_0x187a85[_0x810a('0x30')][_0x810a('0x1c')]);_0x3a3a14['offset']=qs[_0x810a('0x19')](_0x187a85[_0x810a('0x30')][_0x810a('0x19')]);}_0x3a3a14[_0x810a('0x35')]=qs['sort'](_0x187a85[_0x810a('0x30')][_0x810a('0x36')]);_0x3a3a14[_0x810a('0x37')]=qs[_0x810a('0x38')](_[_0x810a('0x39')](_0x187a85[_0x810a('0x30')],_0xaaf14f[_0x810a('0x38')]),_0x2f39ef);if(_0x187a85[_0x810a('0x30')][_0x810a('0x3a')]){_0x3a3a14[_0x810a('0x37')]=_[_0x810a('0x3b')](_0x3a3a14[_0x810a('0x37')],{'$or':_['map'](_0x2f39ef,function(_0x35e22a){if(_0x35e22a[_0x810a('0x3c')]!=='VIRTUAL'){var _0x190e7f={};_0x190e7f[_0x35e22a[_0x810a('0x29')]]={'$like':'%'+_0x187a85[_0x810a('0x30')]['filter']+'%'};return _0x190e7f;}})});}_0x3a3a14=_['merge']({},_0x3a3a14,_0x187a85['options']);var _0x201ecc={'where':_0x3a3a14[_0x810a('0x37')]};return db[_0x810a('0x2c')][_0x810a('0x1b')](_0x201ecc)[_0x810a('0x21')](function(_0x16c626){_0x1a00d1[_0x810a('0x1b')]=_0x16c626;if(_0x187a85['query'][_0x810a('0x3d')]){_0x3a3a14[_0x810a('0x3e')]=[{'all':!![]}];}return db['Trigger'][_0x810a('0x3f')](_0x3a3a14);})[_0x810a('0x21')](function(_0x2508e0){_0x1a00d1[_0x810a('0x40')]=_0x2508e0;return _0x1a00d1;})['then'](respondWithFilteredResult(_0x221fe1,_0x3a3a14))['catch'](handleError(_0x221fe1,null));};exports[_0x810a('0x41')]=function(_0x475d7d,_0x479740){var _0x5ed1a8={'raw':![],'where':{'id':_0x475d7d[_0x810a('0x42')]['id']}},_0x1aad35={};_0x1aad35[_0x810a('0x2f')]=_[_0x810a('0x43')](db['Trigger'][_0x810a('0x2d')]);_0x1aad35['query']=_['keys'](_0x475d7d[_0x810a('0x30')]);_0x1aad35[_0x810a('0x38')]=_[_0x810a('0x44')](_0x1aad35[_0x810a('0x2f')],_0x1aad35[_0x810a('0x30')]);_0x5ed1a8[_0x810a('0x31')]=_[_0x810a('0x44')](_0x1aad35[_0x810a('0x2f')],qs[_0x810a('0x32')](_0x475d7d[_0x810a('0x30')][_0x810a('0x32')]));_0x5ed1a8[_0x810a('0x31')]=_0x5ed1a8[_0x810a('0x31')]['length']?_0x5ed1a8[_0x810a('0x31')]:_0x1aad35['model'];if(_0x475d7d['query'][_0x810a('0x3d')]){_0x5ed1a8[_0x810a('0x3e')]=[{'all':!![]}];}_0x5ed1a8=_['merge']({},_0x5ed1a8,_0x475d7d[_0x810a('0x45')]);return db[_0x810a('0x2c')][_0x810a('0x46')](_0x5ed1a8)[_0x810a('0x21')](handleEntityNotFound(_0x479740,null))[_0x810a('0x21')](respondWithResult(_0x479740,null))[_0x810a('0x47')](handleError(_0x479740,null));};exports['create']=function(_0x22089b,_0x464386){return db[_0x810a('0x2c')]['create'](_0x22089b[_0x810a('0x48')],{})[_0x810a('0x21')](function(_0x177d48){var _0x3f9fe4=_0x22089b[_0x810a('0x49')]['get']({'plain':!![]});if(!_0x3f9fe4)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3f9fe4[_0x810a('0x4a')]===_0x810a('0x49')){var _0x464c81=_0x177d48[_0x810a('0x23')]({'plain':!![]});var _0x45cb63=_0x810a('0x24');return db[_0x810a('0x4b')][_0x810a('0x46')]({'where':{'name':_0x45cb63,'userProfileId':_0x3f9fe4[_0x810a('0x4c')]},'raw':!![]})[_0x810a('0x21')](function(_0x3b7618){if(_0x3b7618&&_0x3b7618[_0x810a('0x4d')]===0x0){return db['UserProfileResource'][_0x810a('0x4e')]({'name':_0x464c81[_0x810a('0x29')],'resourceId':_0x464c81['id'],'type':_0x3b7618['name'],'sectionId':_0x3b7618['id']},{})[_0x810a('0x21')](function(){return _0x177d48;});}else{return _0x177d48;}})[_0x810a('0x47')](function(_0x7d5d8c){logger[_0x810a('0x27')](_0x810a('0x4f'),_0x7d5d8c);throw _0x7d5d8c;});}return _0x177d48;})[_0x810a('0x21')](respondWithResult(_0x464386,0xc9))['catch'](handleError(_0x464386,null));};exports['update']=function(_0x57d220,_0x1b310b){if(_0x57d220[_0x810a('0x48')]['id']){delete _0x57d220[_0x810a('0x48')]['id'];}return db[_0x810a('0x2c')][_0x810a('0x46')]({'where':{'id':_0x57d220[_0x810a('0x42')]['id']}})[_0x810a('0x21')](handleEntityNotFound(_0x1b310b,null))[_0x810a('0x21')](saveUpdates(_0x57d220[_0x810a('0x48')],null))[_0x810a('0x21')](respondWithResult(_0x1b310b,null))[_0x810a('0x47')](handleError(_0x1b310b,null));};exports[_0x810a('0x22')]=function(_0x5d7da4,_0x22bfcc){return db[_0x810a('0x2c')][_0x810a('0x46')]({'where':{'id':_0x5d7da4['params']['id']}})[_0x810a('0x21')](handleEntityNotFound(_0x22bfcc,null))['then'](removeEntity(_0x22bfcc,null))['catch'](handleError(_0x22bfcc,null));};exports[_0x810a('0x50')]=function(_0x247a5a,_0x44e564,_0x51e879){if(_0x247a5a[_0x810a('0x48')]['id']){delete _0x247a5a['body']['id'];}return db[_0x810a('0x2c')]['find']({'where':{'id':_0x247a5a[_0x810a('0x42')]['id']}})['then'](handleEntityNotFound(_0x44e564,null))[_0x810a('0x21')](function(_0x221fb3){if(_0x221fb3){_0x247a5a[_0x810a('0x48')][_0x810a('0x51')]=_0x221fb3['id'];return db[_0x810a('0x52')][_0x810a('0x4e')](_0x247a5a[_0x810a('0x48')]);}})[_0x810a('0x21')](respondWithResult(_0x44e564,null))[_0x810a('0x47')](handleError(_0x44e564,null));};exports[_0x810a('0x53')]=function(_0x571786,_0x48a719,_0x22dcb7){if(_0x571786[_0x810a('0x48')]['id']){delete _0x571786[_0x810a('0x48')]['id'];}return db['Trigger'][_0x810a('0x46')]({'where':{'id':_0x571786[_0x810a('0x42')]['id']}})['then'](handleEntityNotFound(_0x48a719,null))['then'](function(_0xd2ff21){if(_0xd2ff21){_0x571786[_0x810a('0x48')][_0x810a('0x54')]=_0xd2ff21['id'];return db[_0x810a('0x52')][_0x810a('0x4e')](_0x571786[_0x810a('0x48')]);}})[_0x810a('0x21')](respondWithResult(_0x48a719,null))[_0x810a('0x47')](handleError(_0x48a719,null));};exports[_0x810a('0x55')]=function(_0x86f1b4,_0xf34a20,_0x392e62){var _0x19bcba={};var _0x2c1599={};var _0x4f5214;var _0x422c1c;return db[_0x810a('0x2c')][_0x810a('0x56')]({'where':{'id':_0x86f1b4[_0x810a('0x42')]['id']}})[_0x810a('0x21')](handleEntityNotFound(_0xf34a20,null))[_0x810a('0x21')](function(_0x3691ff){if(_0x3691ff){_0x4f5214=_0x3691ff;_0x2c1599[_0x810a('0x2f')]=_[_0x810a('0x43')](db[_0x810a('0x52')][_0x810a('0x2d')]);_0x2c1599[_0x810a('0x30')]=_[_0x810a('0x43')](_0x86f1b4[_0x810a('0x30')]);_0x2c1599[_0x810a('0x38')]=_[_0x810a('0x44')](_0x2c1599['model'],_0x2c1599[_0x810a('0x30')]);_0x19bcba[_0x810a('0x31')]=_[_0x810a('0x44')](_0x2c1599[_0x810a('0x2f')],qs[_0x810a('0x32')](_0x86f1b4[_0x810a('0x30')]['fields']));_0x19bcba[_0x810a('0x31')]=_0x19bcba[_0x810a('0x31')][_0x810a('0x33')]?_0x19bcba[_0x810a('0x31')]:_0x2c1599['model'];_0x19bcba[_0x810a('0x35')]=qs[_0x810a('0x36')](_0x86f1b4[_0x810a('0x30')][_0x810a('0x36')]);_0x19bcba[_0x810a('0x37')]=qs[_0x810a('0x38')](_[_0x810a('0x39')](_0x86f1b4['query'],_0x2c1599['filters']));if(_0x86f1b4[_0x810a('0x30')][_0x810a('0x3a')]){_0x19bcba[_0x810a('0x37')]=_[_0x810a('0x3b')](_0x19bcba['where'],{'$or':_[_0x810a('0x2b')](_0x19bcba[_0x810a('0x31')],function(_0x20f396){var _0x7c9ee3={};_0x7c9ee3[_0x20f396]={'$like':'%'+_0x86f1b4[_0x810a('0x30')][_0x810a('0x3a')]+'%'};return _0x7c9ee3;})});}_0x19bcba=_[_0x810a('0x3b')]({},_0x19bcba,_0x86f1b4[_0x810a('0x45')]);return _0x4f5214['getAllConditions'](_0x19bcba);}})[_0x810a('0x21')](function(_0x22e9fd){if(_0x22e9fd){_0x422c1c=_0x22e9fd[_0x810a('0x33')];if(!_0x86f1b4['query'][_0x810a('0x57')](_0x810a('0x34'))){_0x19bcba[_0x810a('0x1c')]=qs['limit'](_0x86f1b4[_0x810a('0x30')][_0x810a('0x1c')]);_0x19bcba['offset']=qs[_0x810a('0x19')](_0x86f1b4[_0x810a('0x30')][_0x810a('0x19')]);}return _0x4f5214[_0x810a('0x55')](_0x19bcba);}})[_0x810a('0x21')](function(_0xc27400){if(_0xc27400){return _0xc27400?{'count':_0x422c1c,'rows':_0xc27400}:null;}})[_0x810a('0x21')](respondWithResult(_0xf34a20,null))[_0x810a('0x47')](handleError(_0xf34a20,null));};exports[_0x810a('0x58')]=function(_0x474580,_0x2ad214,_0x5bd516){var _0x18d4b4={};var _0x19eb60={};var _0x2ad7e4;var _0x49812a;return db[_0x810a('0x2c')][_0x810a('0x56')]({'where':{'id':_0x474580[_0x810a('0x42')]['id']}})[_0x810a('0x21')](handleEntityNotFound(_0x2ad214,null))[_0x810a('0x21')](function(_0x312400){if(_0x312400){_0x2ad7e4=_0x312400;_0x19eb60[_0x810a('0x2f')]=_[_0x810a('0x43')](db[_0x810a('0x52')][_0x810a('0x2d')]);_0x19eb60['query']=_[_0x810a('0x43')](_0x474580['query']);_0x19eb60['filters']=_[_0x810a('0x44')](_0x19eb60['model'],_0x19eb60[_0x810a('0x30')]);_0x18d4b4[_0x810a('0x31')]=_[_0x810a('0x44')](_0x19eb60['model'],qs[_0x810a('0x32')](_0x474580['query']['fields']));_0x18d4b4[_0x810a('0x31')]=_0x18d4b4['attributes'][_0x810a('0x33')]?_0x18d4b4[_0x810a('0x31')]:_0x19eb60[_0x810a('0x2f')];_0x18d4b4['order']=qs[_0x810a('0x36')](_0x474580['query'][_0x810a('0x36')]);_0x18d4b4[_0x810a('0x37')]=qs[_0x810a('0x38')](_[_0x810a('0x39')](_0x474580[_0x810a('0x30')],_0x19eb60[_0x810a('0x38')]));if(_0x474580[_0x810a('0x30')][_0x810a('0x3a')]){_0x18d4b4[_0x810a('0x37')]=_[_0x810a('0x3b')](_0x18d4b4['where'],{'$or':_['map'](_0x18d4b4[_0x810a('0x31')],function(_0x55a119){var _0x2bac0b={};_0x2bac0b[_0x55a119]={'$like':'%'+_0x474580['query']['filter']+'%'};return _0x2bac0b;})});}_0x18d4b4=_[_0x810a('0x3b')]({},_0x18d4b4,_0x474580[_0x810a('0x45')]);return _0x2ad7e4[_0x810a('0x58')](_0x18d4b4);}})[_0x810a('0x21')](function(_0x2ac32f){if(_0x2ac32f){_0x49812a=_0x2ac32f[_0x810a('0x33')];if(!_0x474580[_0x810a('0x30')][_0x810a('0x57')](_0x810a('0x34'))){_0x18d4b4['limit']=qs[_0x810a('0x1c')](_0x474580[_0x810a('0x30')][_0x810a('0x1c')]);_0x18d4b4['offset']=qs[_0x810a('0x19')](_0x474580[_0x810a('0x30')][_0x810a('0x19')]);}return _0x2ad7e4[_0x810a('0x58')](_0x18d4b4);}})['then'](function(_0x3d2704){if(_0x3d2704){return _0x3d2704?{'count':_0x49812a,'rows':_0x3d2704}:null;}})[_0x810a('0x21')](respondWithResult(_0x2ad214,null))[_0x810a('0x47')](handleError(_0x2ad214,null));};exports['addAction']=function(_0x4292f6,_0x3a59d2,_0x17919d){if(_0x4292f6[_0x810a('0x48')]['id']){delete _0x4292f6[_0x810a('0x48')]['id'];}return db[_0x810a('0x2c')][_0x810a('0x46')]({'where':{'id':_0x4292f6[_0x810a('0x42')]['id']}})[_0x810a('0x21')](handleEntityNotFound(_0x3a59d2,null))[_0x810a('0x21')](function(_0x239463){if(_0x239463){_0x4292f6[_0x810a('0x48')][_0x810a('0x59')]=_0x239463['id'];return db[_0x810a('0x5a')][_0x810a('0x4e')](_0x4292f6[_0x810a('0x48')]);}})[_0x810a('0x21')](respondWithResult(_0x3a59d2,null))[_0x810a('0x47')](handleError(_0x3a59d2,null));};exports['getActions']=function(_0x5ca479,_0xb86c2a,_0x5620c9){var _0x5e4ef4={};var _0x1f4bc5={};var _0x24b0da;var _0x5bfd4e;return db[_0x810a('0x2c')][_0x810a('0x56')]({'where':{'id':_0x5ca479[_0x810a('0x42')]['id']}})[_0x810a('0x21')](handleEntityNotFound(_0xb86c2a,null))[_0x810a('0x21')](function(_0x510fd4){if(_0x510fd4){_0x24b0da=_0x510fd4;_0x1f4bc5['model']=_[_0x810a('0x43')](db['Action'][_0x810a('0x2d')]);_0x1f4bc5['query']=_[_0x810a('0x43')](_0x5ca479['query']);_0x1f4bc5[_0x810a('0x38')]=_['intersection'](_0x1f4bc5[_0x810a('0x2f')],_0x1f4bc5['query']);_0x5e4ef4['attributes']=_[_0x810a('0x44')](_0x1f4bc5[_0x810a('0x2f')],qs[_0x810a('0x32')](_0x5ca479[_0x810a('0x30')]['fields']));_0x5e4ef4[_0x810a('0x31')]=_0x5e4ef4[_0x810a('0x31')][_0x810a('0x33')]?_0x5e4ef4[_0x810a('0x31')]:_0x1f4bc5[_0x810a('0x2f')];_0x5e4ef4[_0x810a('0x35')]=qs[_0x810a('0x36')](_0x5ca479['query'][_0x810a('0x36')]);_0x5e4ef4[_0x810a('0x37')]=qs['filters'](_[_0x810a('0x39')](_0x5ca479[_0x810a('0x30')],_0x1f4bc5[_0x810a('0x38')]));if(_0x5ca479['query'][_0x810a('0x3a')]){_0x5e4ef4['where']=_['merge'](_0x5e4ef4['where'],{'$or':_[_0x810a('0x2b')](_0x5e4ef4['attributes'],function(_0x4d3672){var _0x505cb2={};_0x505cb2[_0x4d3672]={'$like':'%'+_0x5ca479[_0x810a('0x30')][_0x810a('0x3a')]+'%'};return _0x505cb2;})});}_0x5e4ef4=_[_0x810a('0x3b')]({},_0x5e4ef4,_0x5ca479['options']);return _0x24b0da['getActions'](_0x5e4ef4);}})[_0x810a('0x21')](function(_0x561c15){if(_0x561c15){_0x5bfd4e=_0x561c15[_0x810a('0x33')];if(!_0x5ca479[_0x810a('0x30')][_0x810a('0x57')](_0x810a('0x34'))){_0x5e4ef4[_0x810a('0x1c')]=qs['limit'](_0x5ca479[_0x810a('0x30')][_0x810a('0x1c')]);_0x5e4ef4[_0x810a('0x19')]=qs['offset'](_0x5ca479[_0x810a('0x30')][_0x810a('0x19')]);}return _0x24b0da[_0x810a('0x5b')](_0x5e4ef4);}})[_0x810a('0x21')](function(_0x594ab5){if(_0x594ab5){return _0x594ab5?{'count':_0x5bfd4e,'rows':_0x594ab5}:null;}})[_0x810a('0x21')](respondWithResult(_0xb86c2a,null))['catch'](handleError(_0xb86c2a,null));};
\ No newline at end of file
+var _0x025f=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','then','get','Triggers','UserProfileResource','end','sendStatus','error','stack','name','send','map','rawAttributes','type','key','keys','filters','model','query','intersection','fields','attributes','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','Trigger','include','findAll','rows','catch','show','params','length','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','addAllCondition','TriggerAllId','Condition','getAllConditions','getAnyConditions','hasOwnProperty','addAction','Action','findOne','getActions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce'];(function(_0x272638,_0x42b993){var _0x19d027=function(_0x27ac44){while(--_0x27ac44){_0x272638['push'](_0x272638['shift']());}};_0x19d027(++_0x42b993);}(_0x025f,0x16f));var _0xf025=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x025f[_0x59ee6f];return _0x4c0979;};'use strict';var emlformat=require(_0xf025('0x0'));var rimraf=require(_0xf025('0x1'));var zipdir=require(_0xf025('0x2'));var jsonpatch=require(_0xf025('0x3'));var rp=require(_0xf025('0x4'));var moment=require('moment');var BPromise=require(_0xf025('0x5'));var Mustache=require(_0xf025('0x6'));var util=require(_0xf025('0x7'));var path=require(_0xf025('0x8'));var sox=require(_0xf025('0x9'));var csv=require(_0xf025('0xa'));var ejs=require(_0xf025('0xb'));var fs=require('fs');var fs_extra=require(_0xf025('0xc'));var _=require(_0xf025('0xd'));var squel=require(_0xf025('0xe'));var crypto=require(_0xf025('0xf'));var jsforce=require(_0xf025('0x10'));var deskjs=require(_0xf025('0x11'));var toCsv=require('to-csv');var querystring=require(_0xf025('0x12'));var Papa=require(_0xf025('0x13'));var Redis=require(_0xf025('0x14'));var authService=require(_0xf025('0x15'));var qs=require(_0xf025('0x16'));var as=require(_0xf025('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf025('0x18'));var utils=require(_0xf025('0x19'));var config=require(_0xf025('0x1a'));var licenseUtil=require(_0xf025('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x35f1da,_0x3714b0){_0x3714b0=_0x3714b0||0xcc;return function(_0x3cecda){if(_0x3cecda){return _0x35f1da['sendStatus'](_0x3714b0);}return _0x35f1da[_0xf025('0x1c')](_0x3714b0)['end']();};}function respondWithResult(_0x1207b5,_0x5b1d5f){_0x5b1d5f=_0x5b1d5f||0xc8;return function(_0x58f5be){if(_0x58f5be){return _0x1207b5[_0xf025('0x1c')](_0x5b1d5f)[_0xf025('0x1d')](_0x58f5be);}};}function respondWithFilteredResult(_0x18cad6,_0x30b7b1){return function(_0x2838ad){if(_0x2838ad){var _0xdeb5d3=typeof _0x30b7b1[_0xf025('0x1e')]===_0xf025('0x1f')&&typeof _0x30b7b1[_0xf025('0x20')]===_0xf025('0x1f');var _0x75b523=_0x2838ad[_0xf025('0x21')];var _0x52082d=_0xdeb5d3?0x0:_0x30b7b1[_0xf025('0x1e')];var _0x2425d5=_0xdeb5d3?_0x2838ad[_0xf025('0x21')]:_0x30b7b1[_0xf025('0x1e')]+_0x30b7b1['limit'];var _0x59ab16;if(_0x2425d5>=_0x75b523){_0x2425d5=_0x75b523;_0x59ab16=0xc8;}else{_0x59ab16=0xce;}_0x18cad6[_0xf025('0x1c')](_0x59ab16);return _0x18cad6[_0xf025('0x22')](_0xf025('0x23'),_0x52082d+'-'+_0x2425d5+'/'+_0x75b523)[_0xf025('0x1d')](_0x2838ad);}return null;};}function patchUpdates(_0xddc3c8){return function(_0x4cc479){try{jsonpatch['apply'](_0x4cc479,_0xddc3c8,!![]);}catch(_0x15b563){return BPromise[_0xf025('0x24')](_0x15b563);}return _0x4cc479[_0xf025('0x25')]();};}function saveUpdates(_0x3c6b5f,_0x5a6f3e){return function(_0x5df6d4){if(_0x5df6d4){return _0x5df6d4[_0xf025('0x26')](_0x3c6b5f)['then'](function(_0xcd5e89){return _0xcd5e89;});}return null;};}function removeEntity(_0x339246,_0x33a338){return function(_0x415622){if(_0x415622){return _0x415622[_0xf025('0x27')]()[_0xf025('0x28')](function(){var _0x345663=_0x415622[_0xf025('0x29')]({'plain':!![]});var _0x4bd6a9=_0xf025('0x2a');return db[_0xf025('0x2b')][_0xf025('0x27')]({'where':{'type':_0x4bd6a9,'resourceId':_0x345663['id']}})[_0xf025('0x28')](function(){return _0x415622;});})[_0xf025('0x28')](function(){_0x339246[_0xf025('0x1c')](0xcc)[_0xf025('0x2c')]();});}};}function handleEntityNotFound(_0x17a82b,_0x2e1e46){return function(_0x4bd408){if(!_0x4bd408){_0x17a82b[_0xf025('0x2d')](0x194);}return _0x4bd408;};}function handleError(_0x25eff7,_0x5c3dc9){_0x5c3dc9=_0x5c3dc9||0x1f4;return function(_0x49fcb3){logger[_0xf025('0x2e')](_0x49fcb3[_0xf025('0x2f')]);if(_0x49fcb3[_0xf025('0x30')]){delete _0x49fcb3[_0xf025('0x30')];}_0x25eff7['status'](_0x5c3dc9)[_0xf025('0x31')](_0x49fcb3);};}exports['index']=function(_0x382783,_0x17b375){var _0x1edc7={},_0x3a4c94={},_0x2dc0ec={'count':0x0,'rows':[]};var _0x4a89e6=_[_0xf025('0x32')](db['Trigger'][_0xf025('0x33')],function(_0x26a501){return{'name':_0x26a501['fieldName'],'type':_0x26a501[_0xf025('0x34')][_0xf025('0x35')]};});_0x3a4c94['model']=_['map'](_0x4a89e6,'name');_0x3a4c94['query']=_[_0xf025('0x36')](_0x382783['query']);_0x3a4c94[_0xf025('0x37')]=_['intersection'](_0x3a4c94[_0xf025('0x38')],_0x3a4c94[_0xf025('0x39')]);_0x1edc7['attributes']=_[_0xf025('0x3a')](_0x3a4c94[_0xf025('0x38')],qs[_0xf025('0x3b')](_0x382783[_0xf025('0x39')][_0xf025('0x3b')]));_0x1edc7[_0xf025('0x3c')]=_0x1edc7[_0xf025('0x3c')]['length']?_0x1edc7['attributes']:_0x3a4c94[_0xf025('0x38')];if(!_0x382783[_0xf025('0x39')]['hasOwnProperty'](_0xf025('0x3d'))){_0x1edc7[_0xf025('0x20')]=qs[_0xf025('0x20')](_0x382783[_0xf025('0x39')]['limit']);_0x1edc7[_0xf025('0x1e')]=qs[_0xf025('0x1e')](_0x382783['query']['offset']);}_0x1edc7[_0xf025('0x3e')]=qs[_0xf025('0x3f')](_0x382783[_0xf025('0x39')][_0xf025('0x3f')]);_0x1edc7[_0xf025('0x40')]=qs['filters'](_[_0xf025('0x41')](_0x382783[_0xf025('0x39')],_0x3a4c94[_0xf025('0x37')]),_0x4a89e6);if(_0x382783[_0xf025('0x39')][_0xf025('0x42')]){_0x1edc7[_0xf025('0x40')]=_[_0xf025('0x43')](_0x1edc7[_0xf025('0x40')],{'$or':_[_0xf025('0x32')](_0x4a89e6,function(_0x4ac35e){if(_0x4ac35e[_0xf025('0x34')]!==_0xf025('0x44')){var _0x24a94d={};_0x24a94d[_0x4ac35e[_0xf025('0x30')]]={'$like':'%'+_0x382783[_0xf025('0x39')][_0xf025('0x42')]+'%'};return _0x24a94d;}})});}_0x1edc7=_['merge']({},_0x1edc7,_0x382783['options']);var _0x2261de={'where':_0x1edc7[_0xf025('0x40')]};return db[_0xf025('0x45')][_0xf025('0x21')](_0x2261de)[_0xf025('0x28')](function(_0x5cc8a4){_0x2dc0ec[_0xf025('0x21')]=_0x5cc8a4;if(_0x382783[_0xf025('0x39')]['includeAll']){_0x1edc7[_0xf025('0x46')]=[{'all':!![]}];}return db[_0xf025('0x45')][_0xf025('0x47')](_0x1edc7);})[_0xf025('0x28')](function(_0x31bdf9){_0x2dc0ec[_0xf025('0x48')]=_0x31bdf9;return _0x2dc0ec;})[_0xf025('0x28')](respondWithFilteredResult(_0x17b375,_0x1edc7))[_0xf025('0x49')](handleError(_0x17b375,null));};exports[_0xf025('0x4a')]=function(_0x270787,_0x1d1d52){var _0x278091={'raw':![],'where':{'id':_0x270787[_0xf025('0x4b')]['id']}},_0x1e5d37={};_0x1e5d37['model']=_[_0xf025('0x36')](db[_0xf025('0x45')][_0xf025('0x33')]);_0x1e5d37['query']=_[_0xf025('0x36')](_0x270787[_0xf025('0x39')]);_0x1e5d37['filters']=_['intersection'](_0x1e5d37[_0xf025('0x38')],_0x1e5d37['query']);_0x278091[_0xf025('0x3c')]=_[_0xf025('0x3a')](_0x1e5d37[_0xf025('0x38')],qs[_0xf025('0x3b')](_0x270787['query'][_0xf025('0x3b')]));_0x278091[_0xf025('0x3c')]=_0x278091['attributes'][_0xf025('0x4c')]?_0x278091['attributes']:_0x1e5d37['model'];if(_0x270787['query']['includeAll']){_0x278091[_0xf025('0x46')]=[{'all':!![]}];}_0x278091=_[_0xf025('0x43')]({},_0x278091,_0x270787[_0xf025('0x4d')]);return db[_0xf025('0x45')][_0xf025('0x4e')](_0x278091)['then'](handleEntityNotFound(_0x1d1d52,null))['then'](respondWithResult(_0x1d1d52,null))[_0xf025('0x49')](handleError(_0x1d1d52,null));};exports[_0xf025('0x4f')]=function(_0x445afa,_0x2e835d){return db[_0xf025('0x45')][_0xf025('0x4f')](_0x445afa[_0xf025('0x50')],{})[_0xf025('0x28')](function(_0x4fd83b){var _0x23c430=_0x445afa[_0xf025('0x51')]['get']({'plain':!![]});if(!_0x23c430)throw new Error(_0xf025('0x52'));if(_0x23c430[_0xf025('0x53')]===_0xf025('0x51')){var _0xd9db18=_0x4fd83b[_0xf025('0x29')]({'plain':!![]});var _0x21f1cf=_0xf025('0x2a');return db[_0xf025('0x54')][_0xf025('0x4e')]({'where':{'name':_0x21f1cf,'userProfileId':_0x23c430['userProfileId']},'raw':!![]})[_0xf025('0x28')](function(_0x7aaa1){if(_0x7aaa1&&_0x7aaa1[_0xf025('0x55')]===0x0){return db[_0xf025('0x2b')]['create']({'name':_0xd9db18['name'],'resourceId':_0xd9db18['id'],'type':_0x7aaa1[_0xf025('0x30')],'sectionId':_0x7aaa1['id']},{})[_0xf025('0x28')](function(){return _0x4fd83b;});}else{return _0x4fd83b;}})['catch'](function(_0xccc5a6){logger[_0xf025('0x2e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xccc5a6);throw _0xccc5a6;});}return _0x4fd83b;})[_0xf025('0x28')](respondWithResult(_0x2e835d,0xc9))['catch'](handleError(_0x2e835d,null));};exports['update']=function(_0x5bddb8,_0x3168db){if(_0x5bddb8[_0xf025('0x50')]['id']){delete _0x5bddb8[_0xf025('0x50')]['id'];}return db['Trigger']['find']({'where':{'id':_0x5bddb8[_0xf025('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3168db,null))[_0xf025('0x28')](saveUpdates(_0x5bddb8[_0xf025('0x50')],null))[_0xf025('0x28')](respondWithResult(_0x3168db,null))['catch'](handleError(_0x3168db,null));};exports[_0xf025('0x27')]=function(_0x2523b4,_0x2b11d0){return db[_0xf025('0x45')][_0xf025('0x4e')]({'where':{'id':_0x2523b4[_0xf025('0x4b')]['id']}})[_0xf025('0x28')](handleEntityNotFound(_0x2b11d0,null))['then'](removeEntity(_0x2b11d0,null))['catch'](handleError(_0x2b11d0,null));};exports[_0xf025('0x56')]=function(_0x2b6b35,_0x5171a1,_0x3ecc33){if(_0x2b6b35[_0xf025('0x50')]['id']){delete _0x2b6b35['body']['id'];}return db[_0xf025('0x45')]['find']({'where':{'id':_0x2b6b35[_0xf025('0x4b')]['id']}})[_0xf025('0x28')](handleEntityNotFound(_0x5171a1,null))[_0xf025('0x28')](function(_0x173da6){if(_0x173da6){_0x2b6b35['body'][_0xf025('0x57')]=_0x173da6['id'];return db['Condition'][_0xf025('0x4f')](_0x2b6b35[_0xf025('0x50')]);}})[_0xf025('0x28')](respondWithResult(_0x5171a1,null))['catch'](handleError(_0x5171a1,null));};exports['addAnyCondition']=function(_0x421134,_0x150dbb,_0x3a1836){if(_0x421134[_0xf025('0x50')]['id']){delete _0x421134[_0xf025('0x50')]['id'];}return db[_0xf025('0x45')][_0xf025('0x4e')]({'where':{'id':_0x421134[_0xf025('0x4b')]['id']}})[_0xf025('0x28')](handleEntityNotFound(_0x150dbb,null))[_0xf025('0x28')](function(_0x5d4ade){if(_0x5d4ade){_0x421134[_0xf025('0x50')]['TriggerAnyId']=_0x5d4ade['id'];return db[_0xf025('0x58')][_0xf025('0x4f')](_0x421134[_0xf025('0x50')]);}})[_0xf025('0x28')](respondWithResult(_0x150dbb,null))['catch'](handleError(_0x150dbb,null));};exports[_0xf025('0x59')]=function(_0x43128a,_0x210af5,_0x313db1){var _0x4f224e={};var _0x12bc76={};var _0x2d2587;var _0x51f5bd;return db[_0xf025('0x45')]['findOne']({'where':{'id':_0x43128a['params']['id']}})[_0xf025('0x28')](handleEntityNotFound(_0x210af5,null))[_0xf025('0x28')](function(_0x1ced84){if(_0x1ced84){_0x2d2587=_0x1ced84;_0x12bc76[_0xf025('0x38')]=_['keys'](db[_0xf025('0x58')][_0xf025('0x33')]);_0x12bc76['query']=_[_0xf025('0x36')](_0x43128a[_0xf025('0x39')]);_0x12bc76['filters']=_[_0xf025('0x3a')](_0x12bc76[_0xf025('0x38')],_0x12bc76[_0xf025('0x39')]);_0x4f224e[_0xf025('0x3c')]=_[_0xf025('0x3a')](_0x12bc76[_0xf025('0x38')],qs['fields'](_0x43128a[_0xf025('0x39')][_0xf025('0x3b')]));_0x4f224e[_0xf025('0x3c')]=_0x4f224e[_0xf025('0x3c')][_0xf025('0x4c')]?_0x4f224e[_0xf025('0x3c')]:_0x12bc76['model'];_0x4f224e[_0xf025('0x3e')]=qs[_0xf025('0x3f')](_0x43128a['query'][_0xf025('0x3f')]);_0x4f224e[_0xf025('0x40')]=qs['filters'](_[_0xf025('0x41')](_0x43128a['query'],_0x12bc76[_0xf025('0x37')]));if(_0x43128a[_0xf025('0x39')]['filter']){_0x4f224e[_0xf025('0x40')]=_[_0xf025('0x43')](_0x4f224e['where'],{'$or':_['map'](_0x4f224e['attributes'],function(_0x297a96){var _0x2e16d3={};_0x2e16d3[_0x297a96]={'$like':'%'+_0x43128a[_0xf025('0x39')][_0xf025('0x42')]+'%'};return _0x2e16d3;})});}_0x4f224e=_[_0xf025('0x43')]({},_0x4f224e,_0x43128a[_0xf025('0x4d')]);return _0x2d2587[_0xf025('0x59')](_0x4f224e);}})[_0xf025('0x28')](function(_0x2f4d95){if(_0x2f4d95){_0x51f5bd=_0x2f4d95[_0xf025('0x4c')];if(!_0x43128a[_0xf025('0x39')]['hasOwnProperty']('nolimit')){_0x4f224e['limit']=qs[_0xf025('0x20')](_0x43128a[_0xf025('0x39')]['limit']);_0x4f224e['offset']=qs[_0xf025('0x1e')](_0x43128a[_0xf025('0x39')]['offset']);}return _0x2d2587['getAllConditions'](_0x4f224e);}})[_0xf025('0x28')](function(_0x4fb5eb){if(_0x4fb5eb){return _0x4fb5eb?{'count':_0x51f5bd,'rows':_0x4fb5eb}:null;}})['then'](respondWithResult(_0x210af5,null))[_0xf025('0x49')](handleError(_0x210af5,null));};exports['getAnyConditions']=function(_0x313490,_0x19a092,_0x363852){var _0x48a94a={};var _0x1f1bdf={};var _0x4d8f27;var _0x4d0c9d;return db['Trigger']['findOne']({'where':{'id':_0x313490['params']['id']}})[_0xf025('0x28')](handleEntityNotFound(_0x19a092,null))['then'](function(_0x35f438){if(_0x35f438){_0x4d8f27=_0x35f438;_0x1f1bdf[_0xf025('0x38')]=_[_0xf025('0x36')](db[_0xf025('0x58')][_0xf025('0x33')]);_0x1f1bdf[_0xf025('0x39')]=_['keys'](_0x313490['query']);_0x1f1bdf['filters']=_['intersection'](_0x1f1bdf[_0xf025('0x38')],_0x1f1bdf[_0xf025('0x39')]);_0x48a94a[_0xf025('0x3c')]=_[_0xf025('0x3a')](_0x1f1bdf[_0xf025('0x38')],qs[_0xf025('0x3b')](_0x313490[_0xf025('0x39')][_0xf025('0x3b')]));_0x48a94a[_0xf025('0x3c')]=_0x48a94a['attributes'][_0xf025('0x4c')]?_0x48a94a[_0xf025('0x3c')]:_0x1f1bdf['model'];_0x48a94a[_0xf025('0x3e')]=qs[_0xf025('0x3f')](_0x313490[_0xf025('0x39')]['sort']);_0x48a94a[_0xf025('0x40')]=qs[_0xf025('0x37')](_[_0xf025('0x41')](_0x313490[_0xf025('0x39')],_0x1f1bdf[_0xf025('0x37')]));if(_0x313490[_0xf025('0x39')][_0xf025('0x42')]){_0x48a94a[_0xf025('0x40')]=_['merge'](_0x48a94a['where'],{'$or':_[_0xf025('0x32')](_0x48a94a['attributes'],function(_0x2f57cf){var _0x49aeb3={};_0x49aeb3[_0x2f57cf]={'$like':'%'+_0x313490[_0xf025('0x39')][_0xf025('0x42')]+'%'};return _0x49aeb3;})});}_0x48a94a=_[_0xf025('0x43')]({},_0x48a94a,_0x313490[_0xf025('0x4d')]);return _0x4d8f27[_0xf025('0x5a')](_0x48a94a);}})[_0xf025('0x28')](function(_0x2598d3){if(_0x2598d3){_0x4d0c9d=_0x2598d3[_0xf025('0x4c')];if(!_0x313490[_0xf025('0x39')][_0xf025('0x5b')]('nolimit')){_0x48a94a[_0xf025('0x20')]=qs[_0xf025('0x20')](_0x313490[_0xf025('0x39')][_0xf025('0x20')]);_0x48a94a[_0xf025('0x1e')]=qs[_0xf025('0x1e')](_0x313490[_0xf025('0x39')][_0xf025('0x1e')]);}return _0x4d8f27[_0xf025('0x5a')](_0x48a94a);}})[_0xf025('0x28')](function(_0x2b2074){if(_0x2b2074){return _0x2b2074?{'count':_0x4d0c9d,'rows':_0x2b2074}:null;}})[_0xf025('0x28')](respondWithResult(_0x19a092,null))[_0xf025('0x49')](handleError(_0x19a092,null));};exports[_0xf025('0x5c')]=function(_0x3fb108,_0xb2b4fb,_0x3d5d9b){if(_0x3fb108[_0xf025('0x50')]['id']){delete _0x3fb108[_0xf025('0x50')]['id'];}return db[_0xf025('0x45')][_0xf025('0x4e')]({'where':{'id':_0x3fb108[_0xf025('0x4b')]['id']}})[_0xf025('0x28')](handleEntityNotFound(_0xb2b4fb,null))[_0xf025('0x28')](function(_0x2e3f46){if(_0x2e3f46){_0x3fb108[_0xf025('0x50')]['TriggerId']=_0x2e3f46['id'];return db[_0xf025('0x5d')][_0xf025('0x4f')](_0x3fb108[_0xf025('0x50')]);}})[_0xf025('0x28')](respondWithResult(_0xb2b4fb,null))[_0xf025('0x49')](handleError(_0xb2b4fb,null));};exports['getActions']=function(_0x1de971,_0x1e5488,_0xf716b1){var _0x5e8d93={};var _0x5d1adb={};var _0x1411c0;var _0x517513;return db[_0xf025('0x45')][_0xf025('0x5e')]({'where':{'id':_0x1de971[_0xf025('0x4b')]['id']}})['then'](handleEntityNotFound(_0x1e5488,null))[_0xf025('0x28')](function(_0x5058d3){if(_0x5058d3){_0x1411c0=_0x5058d3;_0x5d1adb[_0xf025('0x38')]=_[_0xf025('0x36')](db['Action'][_0xf025('0x33')]);_0x5d1adb['query']=_['keys'](_0x1de971[_0xf025('0x39')]);_0x5d1adb[_0xf025('0x37')]=_[_0xf025('0x3a')](_0x5d1adb[_0xf025('0x38')],_0x5d1adb[_0xf025('0x39')]);_0x5e8d93[_0xf025('0x3c')]=_['intersection'](_0x5d1adb['model'],qs[_0xf025('0x3b')](_0x1de971[_0xf025('0x39')][_0xf025('0x3b')]));_0x5e8d93[_0xf025('0x3c')]=_0x5e8d93[_0xf025('0x3c')][_0xf025('0x4c')]?_0x5e8d93[_0xf025('0x3c')]:_0x5d1adb[_0xf025('0x38')];_0x5e8d93[_0xf025('0x3e')]=qs[_0xf025('0x3f')](_0x1de971[_0xf025('0x39')]['sort']);_0x5e8d93[_0xf025('0x40')]=qs[_0xf025('0x37')](_[_0xf025('0x41')](_0x1de971[_0xf025('0x39')],_0x5d1adb['filters']));if(_0x1de971[_0xf025('0x39')][_0xf025('0x42')]){_0x5e8d93[_0xf025('0x40')]=_[_0xf025('0x43')](_0x5e8d93[_0xf025('0x40')],{'$or':_[_0xf025('0x32')](_0x5e8d93[_0xf025('0x3c')],function(_0xbb136d){var _0x552e39={};_0x552e39[_0xbb136d]={'$like':'%'+_0x1de971[_0xf025('0x39')][_0xf025('0x42')]+'%'};return _0x552e39;})});}_0x5e8d93=_[_0xf025('0x43')]({},_0x5e8d93,_0x1de971['options']);return _0x1411c0[_0xf025('0x5f')](_0x5e8d93);}})['then'](function(_0x368834){if(_0x368834){_0x517513=_0x368834[_0xf025('0x4c')];if(!_0x1de971['query']['hasOwnProperty']('nolimit')){_0x5e8d93[_0xf025('0x20')]=qs[_0xf025('0x20')](_0x1de971[_0xf025('0x39')][_0xf025('0x20')]);_0x5e8d93['offset']=qs[_0xf025('0x1e')](_0x1de971['query'][_0xf025('0x1e')]);}return _0x1411c0[_0xf025('0x5f')](_0x5e8d93);}})[_0xf025('0x28')](function(_0x58e867){if(_0x58e867){return _0x58e867?{'count':_0x517513,'rows':_0x58e867}:null;}})[_0xf025('0x28')](respondWithResult(_0x1e5488,null))[_0xf025('0x49')](handleError(_0x1e5488,null));};
\ No newline at end of file
index 99cca83..8882015 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc01b=['Trigger','tools_triggers','lodash','util','../../config/logger','api','bluebird','request-promise','./trigger.attributes','exports','define'];(function(_0x5ee682,_0x24ee4d){var _0x39d7c4=function(_0x21f88c){while(--_0x21f88c){_0x5ee682['push'](_0x5ee682['shift']());}};_0x39d7c4(++_0x24ee4d);}(_0xc01b,0x65));var _0xbc01=function(_0x91114c,_0xdb86a5){_0x91114c=_0x91114c-0x0;var _0x2a4bb2=_0xc01b[_0x91114c];return _0x2a4bb2;};'use strict';var _=require(_0xbc01('0x0'));var util=require(_0xbc01('0x1'));var logger=require(_0xbc01('0x2'))(_0xbc01('0x3'));var moment=require('moment');var BPromise=require(_0xbc01('0x4'));var rp=require(_0xbc01('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xbc01('0x6'));module[_0xbc01('0x7')]=function(_0x53b2e6,_0x525a49){return _0x53b2e6[_0xbc01('0x8')](_0xbc01('0x9'),attributes,{'tableName':_0xbc01('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xafa5=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./trigger.attributes','exports','define','Trigger','tools_triggers','util','../../config/logger','api'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xafa5,0x1af));var _0x5afa=function(_0x19ec34,_0x534bef){_0x19ec34=_0x19ec34-0x0;var _0x38feb0=_0xafa5[_0x19ec34];return _0x38feb0;};'use strict';var _=require('lodash');var util=require(_0x5afa('0x0'));var logger=require(_0x5afa('0x1'))(_0x5afa('0x2'));var moment=require(_0x5afa('0x3'));var BPromise=require(_0x5afa('0x4'));var rp=require(_0x5afa('0x5'));var fs=require('fs');var path=require(_0x5afa('0x6'));var rimraf=require(_0x5afa('0x7'));var config=require(_0x5afa('0x8'));var attributes=require(_0x5afa('0x9'));module[_0x5afa('0xa')]=function(_0x58998c,_0x166388){return _0x58998c[_0x5afa('0xb')](_0x5afa('0xc'),attributes,{'tableName':_0x5afa('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ea09eb4..734c6d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05e8=['Trigger,\x20%s,\x20%s','result','catch','GetTrigger','Trigger','findAll','options','raw','where','attributes','limit','include','map','model','info','ShowTrigger','find','debug','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','then','request\x20sent','stringify','error','message'];(function(_0xaa0309,_0x1c8008){var _0x5de7ce=function(_0x3aa6ae){while(--_0x3aa6ae){_0xaa0309['push'](_0xaa0309['shift']());}};_0x5de7ce(++_0x1c8008);}(_0x05e8,0x1aa));var _0x805e=function(_0x1c06d0,_0x2d091b){_0x1c06d0=_0x1c06d0-0x0;var _0x1bd68e=_0x05e8[_0x1c06d0];return _0x1bd68e;};'use strict';var _=require(_0x805e('0x0'));var util=require('util');var moment=require(_0x805e('0x1'));var BPromise=require(_0x805e('0x2'));var rs=require(_0x805e('0x3'));var fs=require('fs');var Redis=require(_0x805e('0x4'));var db=require(_0x805e('0x5'))['db'];var utils=require(_0x805e('0x6'));var logger=require(_0x805e('0x7'))(_0x805e('0x8'));var config=require(_0x805e('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x805e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4fc2f3,_0x27a6c3,_0x512c38){return new BPromise(function(_0x3f0939,_0x24f872){return client['request'](_0x4fc2f3,_0x512c38)[_0x805e('0xb')](function(_0x24cc1c){logger['info']('Trigger,\x20%s,\x20%s',_0x27a6c3,_0x805e('0xc'));logger['debug']('Trigger,\x20%s,\x20%s,\x20%s',_0x27a6c3,_0x805e('0xc'),JSON[_0x805e('0xd')](_0x24cc1c));if(_0x24cc1c[_0x805e('0xe')]){if(_0x24cc1c[_0x805e('0xe')]['code']===0x1f4){logger[_0x805e('0xe')]('Trigger,\x20%s,\x20%s',_0x27a6c3,_0x24cc1c['error'][_0x805e('0xf')]);return _0x24f872(_0x24cc1c[_0x805e('0xe')][_0x805e('0xf')]);}logger[_0x805e('0xe')](_0x805e('0x10'),_0x27a6c3,_0x24cc1c[_0x805e('0xe')][_0x805e('0xf')]);return _0x3f0939(_0x24cc1c[_0x805e('0xe')][_0x805e('0xf')]);}else{logger['info'](_0x805e('0x10'),_0x27a6c3,_0x805e('0xc'));_0x3f0939(_0x24cc1c[_0x805e('0x11')][_0x805e('0xf')]);}})[_0x805e('0x12')](function(_0x844e7){logger[_0x805e('0xe')](_0x805e('0x10'),_0x27a6c3,_0x844e7);_0x24f872(_0x844e7);});});}exports[_0x805e('0x13')]=function(_0x43c7ab){var _0x82e1c0=this;return new Promise(function(_0x11ca48,_0x4200b2){return db[_0x805e('0x14')][_0x805e('0x15')]({'raw':_0x43c7ab['options']?_0x43c7ab[_0x805e('0x16')][_0x805e('0x17')]===undefined?!![]:![]:!![],'where':_0x43c7ab[_0x805e('0x16')]?_0x43c7ab[_0x805e('0x16')][_0x805e('0x18')]||null:null,'attributes':_0x43c7ab[_0x805e('0x16')]?_0x43c7ab[_0x805e('0x16')][_0x805e('0x19')]||null:null,'limit':_0x43c7ab[_0x805e('0x16')]?_0x43c7ab[_0x805e('0x16')][_0x805e('0x1a')]||null:null,'include':_0x43c7ab[_0x805e('0x16')]?_0x43c7ab[_0x805e('0x16')][_0x805e('0x1b')]?_[_0x805e('0x1c')](_0x43c7ab[_0x805e('0x16')][_0x805e('0x1b')],function(_0x12b35b){return{'model':db[_0x12b35b[_0x805e('0x1d')]],'as':_0x12b35b['as'],'attributes':_0x12b35b['attributes'],'include':_0x12b35b['include']?_[_0x805e('0x1c')](_0x12b35b[_0x805e('0x1b')],function(_0x280c08){return{'model':db[_0x280c08[_0x805e('0x1d')]],'as':_0x280c08['as'],'attributes':_0x280c08['attributes'],'include':_0x280c08[_0x805e('0x1b')]?_[_0x805e('0x1c')](_0x280c08['include'],function(_0x4e49c1){return{'model':db[_0x4e49c1[_0x805e('0x1d')]],'as':_0x4e49c1['as'],'attributes':_0x4e49c1['attributes']};}):[]};}):[]};}):[]:[]})[_0x805e('0xb')](function(_0x42e4ae){logger[_0x805e('0x1e')]('GetTrigger',_0x43c7ab);logger['debug'](_0x805e('0x13'),_0x43c7ab,JSON[_0x805e('0xd')](_0x42e4ae));_0x11ca48(_0x42e4ae);})[_0x805e('0x12')](function(_0x310e49){logger[_0x805e('0xe')](_0x805e('0x13'),_0x310e49[_0x805e('0xf')],_0x43c7ab);_0x4200b2(_0x82e1c0[_0x805e('0xe')](0x1f4,_0x310e49['message']));});});};exports[_0x805e('0x1f')]=function(_0x3035b9){var _0x385b4f=this;return new Promise(function(_0x367df6,_0x1e42ed){return db['Trigger'][_0x805e('0x20')]({'raw':_0x3035b9[_0x805e('0x16')]?_0x3035b9[_0x805e('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x3035b9[_0x805e('0x16')]?_0x3035b9[_0x805e('0x16')][_0x805e('0x18')]||null:null,'attributes':_0x3035b9[_0x805e('0x16')]?_0x3035b9[_0x805e('0x16')][_0x805e('0x19')]||null:null,'include':_0x3035b9['options']?_0x3035b9[_0x805e('0x16')][_0x805e('0x1b')]?_[_0x805e('0x1c')](_0x3035b9[_0x805e('0x16')]['include'],function(_0x15ba67){return{'model':db[_0x15ba67[_0x805e('0x1d')]],'as':_0x15ba67['as'],'attributes':_0x15ba67[_0x805e('0x19')],'include':_0x15ba67[_0x805e('0x1b')]?_[_0x805e('0x1c')](_0x15ba67[_0x805e('0x1b')],function(_0x36d5e7){return{'model':db[_0x36d5e7[_0x805e('0x1d')]],'as':_0x36d5e7['as'],'attributes':_0x36d5e7[_0x805e('0x19')],'include':_0x36d5e7[_0x805e('0x1b')]?_[_0x805e('0x1c')](_0x36d5e7['include'],function(_0x8ac694){return{'model':db[_0x8ac694[_0x805e('0x1d')]],'as':_0x8ac694['as'],'attributes':_0x8ac694[_0x805e('0x19')]};}):[]};}):[]};}):[]:[]})[_0x805e('0xb')](function(_0x555ba1){logger['info'](_0x805e('0x1f'),_0x3035b9);logger[_0x805e('0x21')](_0x805e('0x1f'),_0x3035b9,JSON[_0x805e('0xd')](_0x555ba1));_0x367df6(_0x555ba1);})['catch'](function(_0x30ee92){logger[_0x805e('0xe')]('ShowTrigger',_0x30ee92[_0x805e('0xf')],_0x3035b9);_0x1e42ed(_0x385b4f['error'](0x1f4,_0x30ee92[_0x805e('0xf')]));});});};
\ No newline at end of file
+var _0x2d36=['include','model','attributes','then','stringify','ShowTrigger','map','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','Trigger,\x20%s,\x20%s','request\x20sent','debug','Trigger,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetTrigger','Trigger','findAll','options','raw','where','limit'];(function(_0x42b1f6,_0x3df91b){var _0x37ee4f=function(_0x55df2){while(--_0x55df2){_0x42b1f6['push'](_0x42b1f6['shift']());}};_0x37ee4f(++_0x3df91b);}(_0x2d36,0xd3));var _0x62d3=function(_0x1dd70c,_0x2d1340){_0x1dd70c=_0x1dd70c-0x0;var _0x265e8c=_0x2d36[_0x1dd70c];return _0x265e8c;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x62d3('0x0'));var rs=require(_0x62d3('0x1'));var fs=require('fs');var Redis=require(_0x62d3('0x2'));var db=require(_0x62d3('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x62d3('0x4'))(_0x62d3('0x5'));var config=require(_0x62d3('0x6'));var jayson=require(_0x62d3('0x7'));var client=jayson[_0x62d3('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x409bcf,_0x19709c,_0x1ae9be){return new BPromise(function(_0x493cc4,_0x47f559){return client[_0x62d3('0x9')](_0x409bcf,_0x1ae9be)['then'](function(_0x5edb1d){logger[_0x62d3('0xa')](_0x62d3('0xb'),_0x19709c,_0x62d3('0xc'));logger[_0x62d3('0xd')](_0x62d3('0xe'),_0x19709c,_0x62d3('0xc'),JSON['stringify'](_0x5edb1d));if(_0x5edb1d[_0x62d3('0xf')]){if(_0x5edb1d[_0x62d3('0xf')][_0x62d3('0x10')]===0x1f4){logger[_0x62d3('0xf')](_0x62d3('0xb'),_0x19709c,_0x5edb1d['error'][_0x62d3('0x11')]);return _0x47f559(_0x5edb1d[_0x62d3('0xf')][_0x62d3('0x11')]);}logger[_0x62d3('0xf')](_0x62d3('0xb'),_0x19709c,_0x5edb1d[_0x62d3('0xf')][_0x62d3('0x11')]);return _0x493cc4(_0x5edb1d[_0x62d3('0xf')][_0x62d3('0x11')]);}else{logger['info'](_0x62d3('0xb'),_0x19709c,_0x62d3('0xc'));_0x493cc4(_0x5edb1d[_0x62d3('0x12')][_0x62d3('0x11')]);}})[_0x62d3('0x13')](function(_0x32883a){logger[_0x62d3('0xf')](_0x62d3('0xb'),_0x19709c,_0x32883a);_0x47f559(_0x32883a);});});}exports[_0x62d3('0x14')]=function(_0xc16a00){var _0x56e904=this;return new Promise(function(_0x191d2d,_0x475a6b){return db[_0x62d3('0x15')][_0x62d3('0x16')]({'raw':_0xc16a00[_0x62d3('0x17')]?_0xc16a00[_0x62d3('0x17')][_0x62d3('0x18')]===undefined?!![]:![]:!![],'where':_0xc16a00[_0x62d3('0x17')]?_0xc16a00['options'][_0x62d3('0x19')]||null:null,'attributes':_0xc16a00[_0x62d3('0x17')]?_0xc16a00[_0x62d3('0x17')]['attributes']||null:null,'limit':_0xc16a00[_0x62d3('0x17')]?_0xc16a00[_0x62d3('0x17')][_0x62d3('0x1a')]||null:null,'include':_0xc16a00[_0x62d3('0x17')]?_0xc16a00[_0x62d3('0x17')][_0x62d3('0x1b')]?_['map'](_0xc16a00[_0x62d3('0x17')]['include'],function(_0x2bb50d){return{'model':db[_0x2bb50d[_0x62d3('0x1c')]],'as':_0x2bb50d['as'],'attributes':_0x2bb50d[_0x62d3('0x1d')],'include':_0x2bb50d['include']?_['map'](_0x2bb50d[_0x62d3('0x1b')],function(_0x537592){return{'model':db[_0x537592['model']],'as':_0x537592['as'],'attributes':_0x537592[_0x62d3('0x1d')],'include':_0x537592[_0x62d3('0x1b')]?_['map'](_0x537592[_0x62d3('0x1b')],function(_0x3eb3e7){return{'model':db[_0x3eb3e7[_0x62d3('0x1c')]],'as':_0x3eb3e7['as'],'attributes':_0x3eb3e7[_0x62d3('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x62d3('0x1e')](function(_0x4099b2){logger[_0x62d3('0xa')](_0x62d3('0x14'),_0xc16a00);logger[_0x62d3('0xd')]('GetTrigger',_0xc16a00,JSON[_0x62d3('0x1f')](_0x4099b2));_0x191d2d(_0x4099b2);})[_0x62d3('0x13')](function(_0x12b7f9){logger['error'](_0x62d3('0x14'),_0x12b7f9[_0x62d3('0x11')],_0xc16a00);_0x475a6b(_0x56e904[_0x62d3('0xf')](0x1f4,_0x12b7f9[_0x62d3('0x11')]));});});};exports[_0x62d3('0x20')]=function(_0xa5edb9){var _0x59bef8=this;return new Promise(function(_0x422a3b,_0x52dd19){return db[_0x62d3('0x15')]['find']({'raw':_0xa5edb9[_0x62d3('0x17')]?_0xa5edb9['options']['raw']===undefined?!![]:![]:!![],'where':_0xa5edb9[_0x62d3('0x17')]?_0xa5edb9[_0x62d3('0x17')]['where']||null:null,'attributes':_0xa5edb9['options']?_0xa5edb9[_0x62d3('0x17')][_0x62d3('0x1d')]||null:null,'include':_0xa5edb9[_0x62d3('0x17')]?_0xa5edb9['options']['include']?_[_0x62d3('0x21')](_0xa5edb9[_0x62d3('0x17')]['include'],function(_0xdc14ff){return{'model':db[_0xdc14ff[_0x62d3('0x1c')]],'as':_0xdc14ff['as'],'attributes':_0xdc14ff[_0x62d3('0x1d')],'include':_0xdc14ff[_0x62d3('0x1b')]?_[_0x62d3('0x21')](_0xdc14ff[_0x62d3('0x1b')],function(_0x5f078c){return{'model':db[_0x5f078c[_0x62d3('0x1c')]],'as':_0x5f078c['as'],'attributes':_0x5f078c['attributes'],'include':_0x5f078c[_0x62d3('0x1b')]?_[_0x62d3('0x21')](_0x5f078c[_0x62d3('0x1b')],function(_0x5bc5d1){return{'model':db[_0x5bc5d1['model']],'as':_0x5bc5d1['as'],'attributes':_0x5bc5d1[_0x62d3('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4b03a1){logger[_0x62d3('0xa')](_0x62d3('0x20'),_0xa5edb9);logger[_0x62d3('0xd')](_0x62d3('0x20'),_0xa5edb9,JSON['stringify'](_0x4b03a1));_0x422a3b(_0x4b03a1);})['catch'](function(_0x498505){logger[_0x62d3('0xf')](_0x62d3('0x20'),_0x498505[_0x62d3('0x11')],_0xa5edb9);_0x52dd19(_0x59bef8['error'](0x1f4,_0x498505[_0x62d3('0x11')]));});});};
\ No newline at end of file
index b87869e..89440bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4a9=['multer','util','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./trunk.controller','isAuthenticated','index','get','/:id','post','/:id/clone','clone','create','delete','exports'];(function(_0x49c55a,_0x5014c4){var _0x4eb41c=function(_0x4afbc8){while(--_0x4afbc8){_0x49c55a['push'](_0x49c55a['shift']());}};_0x4eb41c(++_0x5014c4);}(_0xc4a9,0x168));var _0x9c4a=function(_0x16d10f,_0x2ba2d5){_0x16d10f=_0x16d10f-0x0;var _0x50c823=_0xc4a9[_0x16d10f];return _0x50c823;};'use strict';var multer=require(_0x9c4a('0x0'));var util=require(_0x9c4a('0x1'));var path=require(_0x9c4a('0x2'));var timeout=require('connect-timeout');var express=require(_0x9c4a('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x9c4a('0x4'));var interaction=require(_0x9c4a('0x5'));var config=require(_0x9c4a('0x6'));var controller=require(_0x9c4a('0x7'));router['get']('/',auth[_0x9c4a('0x8')](),controller[_0x9c4a('0x9')]);router[_0x9c4a('0xa')](_0x9c4a('0xb'),auth[_0x9c4a('0x8')](),controller['show']);router[_0x9c4a('0xc')](_0x9c4a('0xd'),auth[_0x9c4a('0x8')](),controller[_0x9c4a('0xe')]);router[_0x9c4a('0xc')]('/',auth[_0x9c4a('0x8')](),controller[_0x9c4a('0xf')]);router['put']('/:id',auth[_0x9c4a('0x8')](),controller['update']);router[_0x9c4a('0x10')](_0x9c4a('0xb'),auth[_0x9c4a('0x8')](),controller['destroy']);module[_0x9c4a('0x11')]=router;
\ No newline at end of file
+var _0x610f=['../../config/environment','./trunk.controller','isAuthenticated','index','/:id','show','post','/:id/clone','put','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x3b650d,_0x3a3036){var _0x16105d=function(_0xa770b1){while(--_0xa770b1){_0x3b650d['push'](_0x3b650d['shift']());}};_0x16105d(++_0x3a3036);}(_0x610f,0x1b0));var _0xf610=function(_0x292102,_0x427efa){_0x292102=_0x292102-0x0;var _0x54c775=_0x610f[_0x292102];return _0x54c775;};'use strict';var multer=require(_0xf610('0x0'));var util=require(_0xf610('0x1'));var path=require('path');var timeout=require(_0xf610('0x2'));var express=require(_0xf610('0x3'));var router=express[_0xf610('0x4')]();var fs_extra=require(_0xf610('0x5'));var auth=require(_0xf610('0x6'));var interaction=require(_0xf610('0x7'));var config=require(_0xf610('0x8'));var controller=require(_0xf610('0x9'));router['get']('/',auth[_0xf610('0xa')](),controller[_0xf610('0xb')]);router['get'](_0xf610('0xc'),auth['isAuthenticated'](),controller[_0xf610('0xd')]);router[_0xf610('0xe')](_0xf610('0xf'),auth['isAuthenticated'](),controller['clone']);router[_0xf610('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0xf610('0x10')](_0xf610('0xc'),auth[_0xf610('0xa')](),controller['update']);router[_0xf610('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xf610('0x12')]);module[_0xf610('0x13')]=router;
\ No newline at end of file
index 5f00875..c822b0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ac8=['nonat','update','outgoing','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','allow','ulaw;alaw;gsm','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>','INTEGER','always','refuse','originate','uac','uas','pai','fingerprint','certificate','active','actpass','dynamic','update,nonat','BOOLEAN','STRING','name','ENUM','friend','user','peer','from-voip-provider','ALLOWED_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','setDataValue','join','getDataValue','transport','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','rfc2833','yes'];(function(_0x166f5b,_0x34aec4){var _0x50870c=function(_0x2e4591){while(--_0x2e4591){_0x166f5b['push'](_0x166f5b['shift']());}};_0x50870c(++_0x34aec4);}(_0x2ac8,0x81));var _0x82ac=function(_0x2f1d2a,_0x357ec6){_0x2f1d2a=_0x2f1d2a-0x0;var _0x108e4c=_0x2ac8[_0x2f1d2a];return _0x108e4c;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x82ac('0x0')],'allowNull':![],'unique':_0x82ac('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x82ac('0x2')](_0x82ac('0x3'),_0x82ac('0x4'),_0x82ac('0x5')),'allowNull':![],'defaultValue':_0x82ac('0x3')},'context':{'type':Sequelize[_0x82ac('0x0')],'allowNull':![],'defaultValue':_0x82ac('0x6')},'callingpres':{'type':Sequelize[_0x82ac('0x2')]('ALLOWED_NOT_SCREENED',_0x82ac('0x7'),'ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN',_0x82ac('0x8'),_0x82ac('0x9'))},'deny':{'type':Sequelize[_0x82ac('0x0')]},'permit':{'type':Sequelize['STRING']},'secret':{'type':Sequelize[_0x82ac('0x0')]},'md5secret':{'type':Sequelize[_0x82ac('0x0')]},'remotesecret':{'type':Sequelize[_0x82ac('0x0')]},'transport':{'type':Sequelize[_0x82ac('0x0')],'defaultValue':_0x82ac('0xa'),'set':function(_0x38e21b){this[_0x82ac('0xb')]('transport',_0x38e21b?_0x38e21b[_0x82ac('0xc')](','):null);},'get':function(){return this[_0x82ac('0xd')](_0x82ac('0xe'))?this[_0x82ac('0xd')](_0x82ac('0xe'))[_0x82ac('0xf')](','):null;},'comment':_0x82ac('0x10')},'dtmfmode':{'type':Sequelize['ENUM']('rfc2833',_0x82ac('0x11'),_0x82ac('0x12'),'inband','auto'),'defaultValue':_0x82ac('0x13')},'directmedia':{'type':Sequelize[_0x82ac('0x2')](_0x82ac('0x14'),'no',_0x82ac('0x15'),_0x82ac('0x16'),_0x82ac('0x17')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x82ac('0x2')](_0x82ac('0x14'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING']},'directmediadeny':{'type':Sequelize[_0x82ac('0x0')]},'nat':{'type':Sequelize['STRING'],'defaultValue':_0x82ac('0x18'),'set':function(_0x191997){this[_0x82ac('0xb')](_0x82ac('0x19'),_0x191997?_0x191997[_0x82ac('0xc')](','):null);},'get':function(){return this[_0x82ac('0xd')](_0x82ac('0x19'))?this['getDataValue'](_0x82ac('0x19'))[_0x82ac('0xf')](','):null;},'comment':_0x82ac('0x1a')},'callgroup':{'type':Sequelize[_0x82ac('0x0')]},'namedcallgroup':{'type':Sequelize[_0x82ac('0x0')]},'pickupgroup':{'type':Sequelize[_0x82ac('0x0')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x82ac('0x0')],'allowNull':!![]},'disallow':{'type':Sequelize[_0x82ac('0x0')],'defaultValue':_0x82ac('0x1b')},'allow':{'type':Sequelize[_0x82ac('0x0')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x403c76){this[_0x82ac('0xb')](_0x82ac('0x1c'),_0x403c76?_0x403c76[_0x82ac('0xc')](';'):_0x82ac('0x1d'));},'get':function(){return this[_0x82ac('0xd')](_0x82ac('0x1c'))?this[_0x82ac('0xd')](_0x82ac('0x1c'))[_0x82ac('0xf')](';'):null;},'comment':_0x82ac('0x1e')},'autoframing':{'type':Sequelize[_0x82ac('0x2')](_0x82ac('0x14'),'no')},'insecure':{'type':Sequelize[_0x82ac('0x0')],'defaultValue':_0x82ac('0x1f'),'set':function(_0x4a35ed){this[_0x82ac('0xb')](_0x82ac('0x20'),_0x4a35ed?_0x4a35ed[_0x82ac('0xc')](','):null);},'get':function(){return this[_0x82ac('0xd')](_0x82ac('0x20'))?this[_0x82ac('0xd')](_0x82ac('0x20'))[_0x82ac('0xf')](','):null;},'comment':_0x82ac('0x21')},'trustrpid':{'type':Sequelize[_0x82ac('0x2')](_0x82ac('0x14'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x82ac('0x2')](_0x82ac('0x14'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x82ac('0x2')](_0x82ac('0x14'),'no',_0x82ac('0x22'))},'promiscredir':{'type':Sequelize[_0x82ac('0x2')](_0x82ac('0x14'),'no')},'useclientcode':{'type':Sequelize[_0x82ac('0x2')](_0x82ac('0x14'),'no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x82ac('0x0')],'defaultValue':_0x82ac('0x23')},'amaflags':{'type':Sequelize[_0x82ac('0x0')]},'callcounter':{'type':Sequelize[_0x82ac('0x2')](_0x82ac('0x14'),'no'),'defaultValue':_0x82ac('0x14')},'busylevel':{'type':Sequelize[_0x82ac('0x24')](0xb)},'allowoverlap':{'type':Sequelize[_0x82ac('0x2')](_0x82ac('0x14'),'no')},'allowsubscribe':{'type':Sequelize['ENUM'](_0x82ac('0x14'),'no')},'allowtransfer':{'type':Sequelize[_0x82ac('0x2')](_0x82ac('0x14'),'no')},'ignoresdpversion':{'type':Sequelize[_0x82ac('0x2')](_0x82ac('0x14'),'no')},'subscribecontext':{'type':Sequelize['STRING']},'template':{'type':Sequelize[_0x82ac('0x0')]},'videosupport':{'type':Sequelize[_0x82ac('0x2')]('yes','no',_0x82ac('0x25')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x82ac('0x24')](0xb)},'rfc2833compensate':{'type':Sequelize[_0x82ac('0x2')](_0x82ac('0x14'),'no')},'mailbox':{'type':Sequelize[_0x82ac('0x0')]},'session_timers':{'type':Sequelize['ENUM']('accept',_0x82ac('0x26'),_0x82ac('0x27'))},'session_expires':{'type':Sequelize[_0x82ac('0x24')](0xb)},'session_minse':{'type':Sequelize[_0x82ac('0x24')](0xb)},'session_refresher':{'type':Sequelize[_0x82ac('0x2')](_0x82ac('0x28'),_0x82ac('0x29')),'defaultValue':_0x82ac('0x29')},'t38pt_usertpsource':{'type':Sequelize['STRING']},'regexten':{'type':Sequelize[_0x82ac('0x0')]},'fromdomain':{'type':Sequelize[_0x82ac('0x0')]},'fromuser':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x82ac('0x24')](0x5)},'qualify':{'type':Sequelize[_0x82ac('0x2')](_0x82ac('0x14'),'no'),'defaultValue':_0x82ac('0x14')},'keepalive':{'type':Sequelize[_0x82ac('0x24')](0xb)},'defaultip':{'type':Sequelize[_0x82ac('0x0')]},'defaultuser':{'type':Sequelize[_0x82ac('0x0')]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x82ac('0x24')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x82ac('0x24')](0xb)},'sendrpid':{'type':Sequelize[_0x82ac('0x2')]('yes','no',_0x82ac('0x2a')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x82ac('0x0')]},'callbackextension':{'type':Sequelize[_0x82ac('0x0')]},'timert1':{'type':Sequelize['INTEGER'](0xb)},'timerb':{'type':Sequelize[_0x82ac('0x24')](0xb)},'qualifyfreq':{'type':Sequelize[_0x82ac('0x24')](0xb)},'contactpermit':{'type':Sequelize[_0x82ac('0x0')]},'contactdeny':{'type':Sequelize[_0x82ac('0x0')]},'contactacl':{'type':Sequelize[_0x82ac('0x0')]},'unsolicited_mailbox':{'type':Sequelize[_0x82ac('0x0')]},'use_q850_reason':{'type':Sequelize['STRING']},'maxforwards':{'type':Sequelize[_0x82ac('0x24')](0xb)},'encryption':{'type':Sequelize[_0x82ac('0x2')](_0x82ac('0x14'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM']('yes','no')},'force_avp':{'type':Sequelize['ENUM'](_0x82ac('0x14'),'no')},'icesupport':{'type':Sequelize['ENUM'](_0x82ac('0x14'),'no')},'dtlsenable':{'type':Sequelize[_0x82ac('0x2')](_0x82ac('0x14'),'no')},'dtlsverify':{'type':Sequelize[_0x82ac('0x2')](_0x82ac('0x14'),'no',_0x82ac('0x2b'),_0x82ac('0x2c'))},'dtlsrekey':{'type':Sequelize[_0x82ac('0x24')](0xb)},'dtlscertfile':{'type':Sequelize['STRING']},'dtlsprivatekey':{'type':Sequelize[_0x82ac('0x0')]},'dtlscipher':{'type':Sequelize[_0x82ac('0x0')]},'dtlscafile':{'type':Sequelize[_0x82ac('0x0')]},'dtlscapath':{'type':Sequelize['STRING']},'dtlssetup':{'type':Sequelize[_0x82ac('0x2')](_0x82ac('0x2d'),'passive',_0x82ac('0x2e')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x82ac('0x0')]},'usereqphone':{'type':Sequelize[_0x82ac('0x2')]('yes','no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x82ac('0x0')]},'recordofffeature':{'type':Sequelize[_0x82ac('0x0')]},'call_limit':{'type':Sequelize[_0x82ac('0x24')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x82ac('0x2')](_0x82ac('0x14'),'no')},'subscribemwi':{'type':Sequelize[_0x82ac('0x2')](_0x82ac('0x14'),'no')},'vmexten':{'type':Sequelize[_0x82ac('0x0')]},'mohinterpret':{'type':Sequelize[_0x82ac('0x0')]},'mohsuggest':{'type':Sequelize['STRING']},'parkinglot':{'type':Sequelize[_0x82ac('0x0')]},'description':{'type':Sequelize[_0x82ac('0x0')]},'host':{'type':Sequelize['STRING'],'defaultValue':_0x82ac('0x2f')},'canreinvite':{'type':Sequelize[_0x82ac('0x2')](_0x82ac('0x14'),'no',_0x82ac('0x15'),'update',_0x82ac('0x30')),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0x82ac('0x0')]},'active':{'type':Sequelize[_0x82ac('0x31')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x82ac('0x0')],'defaultValue':'no'}};
\ No newline at end of file
+var _0xdfe6=['originate','uac','uas','fingerprint','certificate','passive','actpass','update,nonat','BOOLEAN','sequelize','ENUM','friend','user','peer','STRING','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','udp','transport','join','getDataValue','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','yes','update','outgoing','setDataValue','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','\x22\x22\x20<>','INTEGER','always','accept','refuse'];(function(_0x1b6186,_0x1ec7f2){var _0x186121=function(_0x1748a8){while(--_0x1748a8){_0x1b6186['push'](_0x1b6186['shift']());}};_0x186121(++_0x1ec7f2);}(_0xdfe6,0x159));var _0x6dfe=function(_0x13678a,_0x260a28){_0x13678a=_0x13678a-0x0;var _0x4d5cfb=_0xdfe6[_0x13678a];return _0x4d5cfb;};'use strict';var Sequelize=require(_0x6dfe('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x6dfe('0x1')](_0x6dfe('0x2'),_0x6dfe('0x3'),_0x6dfe('0x4')),'allowNull':![],'defaultValue':_0x6dfe('0x2')},'context':{'type':Sequelize[_0x6dfe('0x5')],'allowNull':![],'defaultValue':_0x6dfe('0x6')},'callingpres':{'type':Sequelize[_0x6dfe('0x1')](_0x6dfe('0x7'),_0x6dfe('0x8'),'ALLOWED_FAILED_SCREEN','ALLOWED',_0x6dfe('0x9'),_0x6dfe('0xa'),_0x6dfe('0xb'),'PROHIB')},'deny':{'type':Sequelize['STRING']},'permit':{'type':Sequelize[_0x6dfe('0x5')]},'secret':{'type':Sequelize['STRING']},'md5secret':{'type':Sequelize[_0x6dfe('0x5')]},'remotesecret':{'type':Sequelize['STRING']},'transport':{'type':Sequelize[_0x6dfe('0x5')],'defaultValue':_0x6dfe('0xc'),'set':function(_0x3ca5fd){this['setDataValue'](_0x6dfe('0xd'),_0x3ca5fd?_0x3ca5fd[_0x6dfe('0xe')](','):null);},'get':function(){return this[_0x6dfe('0xf')](_0x6dfe('0xd'))?this[_0x6dfe('0xf')](_0x6dfe('0xd'))['split'](','):null;},'comment':_0x6dfe('0x10')},'dtmfmode':{'type':Sequelize['ENUM'](_0x6dfe('0x11'),_0x6dfe('0x12'),_0x6dfe('0x13'),_0x6dfe('0x14'),_0x6dfe('0x15')),'defaultValue':_0x6dfe('0x11')},'directmedia':{'type':Sequelize['ENUM'](_0x6dfe('0x16'),'no','nonat',_0x6dfe('0x17'),_0x6dfe('0x18')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x6dfe('0x1')](_0x6dfe('0x16'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING']},'directmediadeny':{'type':Sequelize[_0x6dfe('0x5')]},'nat':{'type':Sequelize['STRING'],'defaultValue':'force_rport,comedia','set':function(_0x3aec5a){this[_0x6dfe('0x19')]('nat',_0x3aec5a?_0x3aec5a[_0x6dfe('0xe')](','):null);},'get':function(){return this[_0x6dfe('0xf')](_0x6dfe('0x1a'))?this[_0x6dfe('0xf')](_0x6dfe('0x1a'))['split'](','):null;},'comment':_0x6dfe('0x1b')},'callgroup':{'type':Sequelize[_0x6dfe('0x5')]},'namedcallgroup':{'type':Sequelize[_0x6dfe('0x5')]},'pickupgroup':{'type':Sequelize[_0x6dfe('0x5')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x6dfe('0x5')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING'],'allowNull':!![]},'disallow':{'type':Sequelize[_0x6dfe('0x5')],'defaultValue':_0x6dfe('0x1c')},'allow':{'type':Sequelize[_0x6dfe('0x5')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x421a18){this['setDataValue']('allow',_0x421a18?_0x421a18[_0x6dfe('0xe')](';'):'ulaw;alaw;gsm');},'get':function(){return this[_0x6dfe('0xf')](_0x6dfe('0x1d'))?this['getDataValue'](_0x6dfe('0x1d'))['split'](';'):null;},'comment':_0x6dfe('0x1e')},'autoframing':{'type':Sequelize[_0x6dfe('0x1')]('yes','no')},'insecure':{'type':Sequelize['STRING'],'defaultValue':_0x6dfe('0x1f'),'set':function(_0x25c1fa){this[_0x6dfe('0x19')](_0x6dfe('0x20'),_0x25c1fa?_0x25c1fa[_0x6dfe('0xe')](','):null);},'get':function(){return this['getDataValue'](_0x6dfe('0x20'))?this[_0x6dfe('0xf')](_0x6dfe('0x20'))['split'](','):null;},'comment':_0x6dfe('0x21')},'trustrpid':{'type':Sequelize[_0x6dfe('0x1')](_0x6dfe('0x16'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x6dfe('0x1')](_0x6dfe('0x16'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM'](_0x6dfe('0x16'),'no','never')},'promiscredir':{'type':Sequelize[_0x6dfe('0x1')](_0x6dfe('0x16'),'no')},'useclientcode':{'type':Sequelize[_0x6dfe('0x1')](_0x6dfe('0x16'),'no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x6dfe('0x5')],'defaultValue':_0x6dfe('0x22')},'amaflags':{'type':Sequelize[_0x6dfe('0x5')]},'callcounter':{'type':Sequelize[_0x6dfe('0x1')](_0x6dfe('0x16'),'no'),'defaultValue':_0x6dfe('0x16')},'busylevel':{'type':Sequelize[_0x6dfe('0x23')](0xb)},'allowoverlap':{'type':Sequelize['ENUM']('yes','no')},'allowsubscribe':{'type':Sequelize['ENUM'](_0x6dfe('0x16'),'no')},'allowtransfer':{'type':Sequelize['ENUM'](_0x6dfe('0x16'),'no')},'ignoresdpversion':{'type':Sequelize[_0x6dfe('0x1')]('yes','no')},'subscribecontext':{'type':Sequelize[_0x6dfe('0x5')]},'template':{'type':Sequelize[_0x6dfe('0x5')]},'videosupport':{'type':Sequelize[_0x6dfe('0x1')](_0x6dfe('0x16'),'no',_0x6dfe('0x24')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb)},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x6dfe('0x16'),'no')},'mailbox':{'type':Sequelize[_0x6dfe('0x5')]},'session_timers':{'type':Sequelize[_0x6dfe('0x1')](_0x6dfe('0x25'),_0x6dfe('0x26'),_0x6dfe('0x27'))},'session_expires':{'type':Sequelize[_0x6dfe('0x23')](0xb)},'session_minse':{'type':Sequelize[_0x6dfe('0x23')](0xb)},'session_refresher':{'type':Sequelize[_0x6dfe('0x1')](_0x6dfe('0x28'),_0x6dfe('0x29')),'defaultValue':_0x6dfe('0x29')},'t38pt_usertpsource':{'type':Sequelize[_0x6dfe('0x5')]},'regexten':{'type':Sequelize[_0x6dfe('0x5')]},'fromdomain':{'type':Sequelize[_0x6dfe('0x5')]},'fromuser':{'type':Sequelize[_0x6dfe('0x5')]},'port':{'type':Sequelize[_0x6dfe('0x23')](0x5)},'qualify':{'type':Sequelize[_0x6dfe('0x1')]('yes','no'),'defaultValue':_0x6dfe('0x16')},'keepalive':{'type':Sequelize[_0x6dfe('0x23')](0xb)},'defaultip':{'type':Sequelize['STRING']},'defaultuser':{'type':Sequelize[_0x6dfe('0x5')]},'rtptimeout':{'type':Sequelize[_0x6dfe('0x23')](0xb)},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpkeepalive':{'type':Sequelize[_0x6dfe('0x23')](0xb)},'sendrpid':{'type':Sequelize[_0x6dfe('0x1')]('yes','no','pai'),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x6dfe('0x5')]},'callbackextension':{'type':Sequelize[_0x6dfe('0x5')]},'timert1':{'type':Sequelize['INTEGER'](0xb)},'timerb':{'type':Sequelize[_0x6dfe('0x23')](0xb)},'qualifyfreq':{'type':Sequelize[_0x6dfe('0x23')](0xb)},'contactpermit':{'type':Sequelize['STRING']},'contactdeny':{'type':Sequelize[_0x6dfe('0x5')]},'contactacl':{'type':Sequelize[_0x6dfe('0x5')]},'unsolicited_mailbox':{'type':Sequelize[_0x6dfe('0x5')]},'use_q850_reason':{'type':Sequelize[_0x6dfe('0x5')]},'maxforwards':{'type':Sequelize[_0x6dfe('0x23')](0xb)},'encryption':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0x6dfe('0x16'),'no')},'force_avp':{'type':Sequelize['ENUM'](_0x6dfe('0x16'),'no')},'icesupport':{'type':Sequelize[_0x6dfe('0x1')](_0x6dfe('0x16'),'no')},'dtlsenable':{'type':Sequelize[_0x6dfe('0x1')]('yes','no')},'dtlsverify':{'type':Sequelize['ENUM'](_0x6dfe('0x16'),'no',_0x6dfe('0x2a'),_0x6dfe('0x2b'))},'dtlsrekey':{'type':Sequelize[_0x6dfe('0x23')](0xb)},'dtlscertfile':{'type':Sequelize['STRING']},'dtlsprivatekey':{'type':Sequelize[_0x6dfe('0x5')]},'dtlscipher':{'type':Sequelize[_0x6dfe('0x5')]},'dtlscafile':{'type':Sequelize[_0x6dfe('0x5')]},'dtlscapath':{'type':Sequelize[_0x6dfe('0x5')]},'dtlssetup':{'type':Sequelize[_0x6dfe('0x1')]('active',_0x6dfe('0x2c'),_0x6dfe('0x2d')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x6dfe('0x5')]},'usereqphone':{'type':Sequelize['ENUM'](_0x6dfe('0x16'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING']},'recordofffeature':{'type':Sequelize[_0x6dfe('0x5')]},'call_limit':{'type':Sequelize[_0x6dfe('0x23')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize['ENUM']('yes','no')},'subscribemwi':{'type':Sequelize['ENUM']('yes','no')},'vmexten':{'type':Sequelize[_0x6dfe('0x5')]},'mohinterpret':{'type':Sequelize['STRING']},'mohsuggest':{'type':Sequelize[_0x6dfe('0x5')]},'parkinglot':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x6dfe('0x5')]},'host':{'type':Sequelize['STRING'],'defaultValue':'dynamic'},'canreinvite':{'type':Sequelize[_0x6dfe('0x1')]('yes','no','nonat',_0x6dfe('0x17'),_0x6dfe('0x2e')),'defaultValue':'no'},'registry':{'type':Sequelize[_0x6dfe('0x5')]},'otherFields':{'type':Sequelize[_0x6dfe('0x5')]},'active':{'type':Sequelize[_0x6dfe('0x2f')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x6dfe('0x5')],'defaultValue':'no'}};
\ No newline at end of file
index 353b337..4656239 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98a8=['../../mysqldb','jayson/promise','client','request','Trunk,\x20%s,\x20%s','debug','request\x20sent','error','code','message','info','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','get','Trunks','UserProfileResource','stack','name','map','fieldName','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','Trunk','include','show','params','keys','rawAttributes','includeAll','clone','find','createdAt','updatedAt','body','omit','create','user','role','UserProfileSection','userProfileId','autoAssociation','findAll','readFileSync','root','server/files/templates/trunk.ejs','join','server/files/templates/registry.ejs','utf8','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','Unable\x20to\x20retrieve\x20the\x20current\x20user','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment'];(function(_0x55444d,_0x5ddada){var _0x1f95b0=function(_0x473795){while(--_0x473795){_0x55444d['push'](_0x55444d['shift']());}};_0x1f95b0(++_0x5ddada);}(_0x98a8,0x12c));var _0x898a=function(_0x5d0ad6,_0x28fb1e){_0x5d0ad6=_0x5d0ad6-0x0;var _0x44d200=_0x98a8[_0x5d0ad6];return _0x44d200;};'use strict';var emlformat=require(_0x898a('0x0'));var rimraf=require(_0x898a('0x1'));var zipdir=require(_0x898a('0x2'));var jsonpatch=require(_0x898a('0x3'));var rp=require(_0x898a('0x4'));var moment=require(_0x898a('0x5'));var BPromise=require(_0x898a('0x6'));var Mustache=require('mustache');var util=require(_0x898a('0x7'));var path=require(_0x898a('0x8'));var sox=require(_0x898a('0x9'));var csv=require(_0x898a('0xa'));var ejs=require(_0x898a('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x898a('0xc'));var squel=require('squel');var crypto=require(_0x898a('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x898a('0xe'));var toCsv=require(_0x898a('0xa'));var querystring=require(_0x898a('0xf'));var Papa=require(_0x898a('0x10'));var Redis=require(_0x898a('0x11'));var authService=require(_0x898a('0x12'));var qs=require(_0x898a('0x13'));var as=require(_0x898a('0x14'));var hardwareService=require(_0x898a('0x15'));var logger=require('../../config/logger')(_0x898a('0x16'));var utils=require('../../config/utils');var config=require(_0x898a('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x898a('0x18'))['db'];var jayson=require(_0x898a('0x19'));var client=jayson[_0x898a('0x1a')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5bfded,_0x5b5c9c,_0x373d53,_0x1f5be4){return new BPromise(function(_0xb24335,_0x116fbe){var _0x1873e9=_0x1f5be4||client;return _0x1873e9[_0x898a('0x1b')](_0x5bfded,_0x373d53)['then'](function(_0x47033c){logger['info'](_0x898a('0x1c'),_0x5b5c9c,'request\x20sent');logger[_0x898a('0x1d')]('Trunk,\x20%s,\x20%s,\x20%s',_0x5b5c9c,_0x898a('0x1e'),JSON['stringify'](_0x47033c));if(_0x47033c[_0x898a('0x1f')]){if(_0x47033c[_0x898a('0x1f')][_0x898a('0x20')]===0x1f4){logger['error'](_0x898a('0x1c'),_0x5b5c9c,_0x47033c['error']['message']);return _0x116fbe(_0x47033c[_0x898a('0x1f')][_0x898a('0x21')]);}logger['error']('Trunk,\x20%s,\x20%s',_0x5b5c9c,_0x47033c[_0x898a('0x1f')][_0x898a('0x21')]);return _0xb24335(_0x47033c[_0x898a('0x1f')][_0x898a('0x21')]);}else{logger[_0x898a('0x22')](_0x898a('0x1c'),_0x5b5c9c,_0x898a('0x1e'));_0xb24335(_0x47033c['result'][_0x898a('0x21')]);}})[_0x898a('0x23')](function(_0x11cae2){logger[_0x898a('0x1f')](_0x898a('0x1c'),_0x5b5c9c,_0x11cae2);_0x116fbe(_0x11cae2);});});}function respondWithStatusCode(_0x310bfa,_0x4e254d){_0x4e254d=_0x4e254d||0xcc;return function(_0x274cdf){if(_0x274cdf){return _0x310bfa[_0x898a('0x24')](_0x4e254d);}return _0x310bfa[_0x898a('0x25')](_0x4e254d)[_0x898a('0x26')]();};}function respondWithResult(_0x3901ab,_0x1426e3){_0x1426e3=_0x1426e3||0xc8;return function(_0x5b7719){if(_0x5b7719){return _0x3901ab[_0x898a('0x25')](_0x1426e3)['json'](_0x5b7719);}};}function respondWithFilteredResult(_0x513c6b,_0x53ddb2){return function(_0x3678be){if(_0x3678be){var _0x1f4d86=typeof _0x53ddb2[_0x898a('0x27')]===_0x898a('0x28')&&typeof _0x53ddb2[_0x898a('0x29')]===_0x898a('0x28');var _0x398e98=_0x3678be[_0x898a('0x2a')];var _0xd31922=_0x1f4d86?0x0:_0x53ddb2['offset'];var _0x4b3e68=_0x1f4d86?_0x3678be['count']:_0x53ddb2[_0x898a('0x27')]+_0x53ddb2[_0x898a('0x29')];var _0x3b7704;if(_0x4b3e68>=_0x398e98){_0x4b3e68=_0x398e98;_0x3b7704=0xc8;}else{_0x3b7704=0xce;}_0x513c6b[_0x898a('0x25')](_0x3b7704);return _0x513c6b[_0x898a('0x2b')](_0x898a('0x2c'),_0xd31922+'-'+_0x4b3e68+'/'+_0x398e98)[_0x898a('0x2d')](_0x3678be);}return null;};}function patchUpdates(_0xf74645){return function(_0x18773a){try{jsonpatch[_0x898a('0x2e')](_0x18773a,_0xf74645,!![]);}catch(_0x44c5d2){return BPromise[_0x898a('0x2f')](_0x44c5d2);}return _0x18773a['save']();};}function saveUpdates(_0x7a1eb5,_0x17a5f3){return function(_0x26eead){if(_0x26eead){return _0x26eead[_0x898a('0x30')](_0x7a1eb5)[_0x898a('0x31')](function(_0x47af5b){return _0x47af5b;});}return null;};}function removeEntity(_0x48cefb,_0x20a3fe){return function(_0x1e2fd4){if(_0x1e2fd4){return _0x1e2fd4[_0x898a('0x32')]()['then'](function(){var _0x105477=_0x1e2fd4[_0x898a('0x33')]({'plain':!![]});var _0x5eafc7=_0x898a('0x34');return db[_0x898a('0x35')][_0x898a('0x32')]({'where':{'type':_0x5eafc7,'resourceId':_0x105477['id']}})[_0x898a('0x31')](function(){return _0x1e2fd4;});})[_0x898a('0x31')](function(){_0x48cefb['status'](0xcc)[_0x898a('0x26')]();});}};}function handleEntityNotFound(_0x5baf5b,_0x573eb3){return function(_0x14e2dc){if(!_0x14e2dc){_0x5baf5b['sendStatus'](0x194);}return _0x14e2dc;};}function handleError(_0x3c9588,_0x4b3aac){_0x4b3aac=_0x4b3aac||0x1f4;return function(_0x37cb11){logger['error'](_0x37cb11[_0x898a('0x36')]);if(_0x37cb11[_0x898a('0x37')]){delete _0x37cb11[_0x898a('0x37')];}_0x3c9588['status'](_0x4b3aac)['send'](_0x37cb11);};}exports['index']=function(_0x1575d2,_0x429c32){var _0x5a228f={},_0xdd019d={},_0x3d3463={'count':0x0,'rows':[]};var _0xe84f7e=_[_0x898a('0x38')](db['Trunk']['rawAttributes'],function(_0x3aed01){return{'name':_0x3aed01[_0x898a('0x39')],'type':_0x3aed01['type']['key']};});_0xdd019d[_0x898a('0x3a')]=_[_0x898a('0x38')](_0xe84f7e,_0x898a('0x37'));_0xdd019d[_0x898a('0x3b')]=_['keys'](_0x1575d2[_0x898a('0x3b')]);_0xdd019d[_0x898a('0x3c')]=_['intersection'](_0xdd019d['model'],_0xdd019d['query']);_0x5a228f[_0x898a('0x3d')]=_[_0x898a('0x3e')](_0xdd019d[_0x898a('0x3a')],qs[_0x898a('0x3f')](_0x1575d2[_0x898a('0x3b')][_0x898a('0x3f')]));_0x5a228f[_0x898a('0x3d')]=_0x5a228f[_0x898a('0x3d')][_0x898a('0x40')]?_0x5a228f[_0x898a('0x3d')]:_0xdd019d[_0x898a('0x3a')];if(!_0x1575d2[_0x898a('0x3b')][_0x898a('0x41')](_0x898a('0x42'))){_0x5a228f[_0x898a('0x29')]=qs['limit'](_0x1575d2[_0x898a('0x3b')][_0x898a('0x29')]);_0x5a228f[_0x898a('0x27')]=qs['offset'](_0x1575d2[_0x898a('0x3b')][_0x898a('0x27')]);}_0x5a228f[_0x898a('0x43')]=qs[_0x898a('0x44')](_0x1575d2[_0x898a('0x3b')][_0x898a('0x44')]);_0x5a228f[_0x898a('0x45')]=qs[_0x898a('0x3c')](_['pick'](_0x1575d2[_0x898a('0x3b')],_0xdd019d[_0x898a('0x3c')]),_0xe84f7e);if(_0x1575d2[_0x898a('0x3b')][_0x898a('0x46')]){_0x5a228f['where']=_[_0x898a('0x47')](_0x5a228f[_0x898a('0x45')],{'$or':_['map'](_0xe84f7e,function(_0x241677){if(_0x241677['type']!==_0x898a('0x48')){var _0x5137c4={};_0x5137c4[_0x241677['name']]={'$like':'%'+_0x1575d2[_0x898a('0x3b')]['filter']+'%'};return _0x5137c4;}})});}_0x5a228f=_[_0x898a('0x47')]({},_0x5a228f,_0x1575d2[_0x898a('0x49')]);var _0x4d6ac0={'where':_0x5a228f[_0x898a('0x45')]};return db[_0x898a('0x4a')]['count'](_0x4d6ac0)[_0x898a('0x31')](function(_0x199437){_0x3d3463[_0x898a('0x2a')]=_0x199437;if(_0x1575d2[_0x898a('0x3b')]['includeAll']){_0x5a228f[_0x898a('0x4b')]=[{'all':!![]}];}return db[_0x898a('0x4a')]['findAll'](_0x5a228f);})[_0x898a('0x31')](function(_0x1d8c16){_0x3d3463['rows']=_0x1d8c16;return _0x3d3463;})[_0x898a('0x31')](respondWithFilteredResult(_0x429c32,_0x5a228f))['catch'](handleError(_0x429c32,null));};exports[_0x898a('0x4c')]=function(_0x41f291,_0x32ccb9){var _0x50f9e3={'raw':![],'where':{'id':_0x41f291[_0x898a('0x4d')]['id']}},_0x2f6cb3={};_0x2f6cb3[_0x898a('0x3a')]=_[_0x898a('0x4e')](db['Trunk'][_0x898a('0x4f')]);_0x2f6cb3['query']=_[_0x898a('0x4e')](_0x41f291[_0x898a('0x3b')]);_0x2f6cb3[_0x898a('0x3c')]=_['intersection'](_0x2f6cb3[_0x898a('0x3a')],_0x2f6cb3[_0x898a('0x3b')]);_0x50f9e3[_0x898a('0x3d')]=_['intersection'](_0x2f6cb3['model'],qs[_0x898a('0x3f')](_0x41f291[_0x898a('0x3b')][_0x898a('0x3f')]));_0x50f9e3[_0x898a('0x3d')]=_0x50f9e3[_0x898a('0x3d')][_0x898a('0x40')]?_0x50f9e3[_0x898a('0x3d')]:_0x2f6cb3[_0x898a('0x3a')];if(_0x41f291[_0x898a('0x3b')][_0x898a('0x50')]){_0x50f9e3[_0x898a('0x4b')]=[{'all':!![]}];}_0x50f9e3=_['merge']({},_0x50f9e3,_0x41f291[_0x898a('0x49')]);return db[_0x898a('0x4a')]['find'](_0x50f9e3)[_0x898a('0x31')](handleEntityNotFound(_0x32ccb9,null))['then'](respondWithResult(_0x32ccb9,null))['catch'](handleError(_0x32ccb9,null));};exports[_0x898a('0x51')]=function(_0x124f9b,_0x209529){var _0x5bfd61={'where':{'id':_0x124f9b[_0x898a('0x4d')]['id']}},_0x556fd8={};_0x556fd8[_0x898a('0x3a')]=_['keys'](db[_0x898a('0x4a')][_0x898a('0x4f')]);_0x5bfd61['attributes']=_[_0x898a('0x3e')](_0x556fd8[_0x898a('0x3a')],qs[_0x898a('0x3f')](_0x124f9b['query'][_0x898a('0x3f')]));_0x5bfd61[_0x898a('0x3d')]=_0x5bfd61[_0x898a('0x3d')][_0x898a('0x40')]?_0x5bfd61[_0x898a('0x3d')]:_0x556fd8[_0x898a('0x3a')];if(_0x124f9b['query'][_0x898a('0x50')]){_0x5bfd61['include']=[{'all':!![]}];}_0x5bfd61=_[_0x898a('0x47')]({},_0x5bfd61,_0x124f9b[_0x898a('0x49')]);return db[_0x898a('0x4a')][_0x898a('0x52')](_0x5bfd61)[_0x898a('0x31')](handleEntityNotFound(_0x209529,null))[_0x898a('0x31')](function(_0x2486a5){if(_0x2486a5){var _0x75ff57=_0x2486a5[_0x898a('0x33')]({'plain':!![]});_0x75ff57=qs['omit'](_0x75ff57,['id',_0x898a('0x53'),_0x898a('0x54')]);_0x124f9b[_0x898a('0x55')]=_[_0x898a('0x56')](_0x124f9b[_0x898a('0x55')],['id',_0x898a('0x53'),_0x898a('0x54')]);return db[_0x898a('0x4a')][_0x898a('0x57')](_[_0x898a('0x47')](_0x75ff57,_0x124f9b[_0x898a('0x55')]),{'include':_0x124f9b[_0x898a('0x3b')][_0x898a('0x50')]?[{'all':!![]}]:undefined})[_0x898a('0x31')](function(_0x22f9ba){var _0x5f42ae=_0x124f9b[_0x898a('0x58')][_0x898a('0x33')]({'plain':!![]});if(!_0x5f42ae)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5f42ae[_0x898a('0x59')]===_0x898a('0x58')){var _0x5f0944=_0x22f9ba[_0x898a('0x33')]({'plain':!![]});var _0x1daecd=_0x898a('0x34');return db[_0x898a('0x5a')]['find']({'where':{'name':_0x1daecd,'userProfileId':_0x5f42ae[_0x898a('0x5b')]},'raw':!![]})[_0x898a('0x31')](function(_0x137935){if(_0x137935&&_0x137935[_0x898a('0x5c')]===0x0){return db['UserProfileResource'][_0x898a('0x57')]({'name':_0x5f0944[_0x898a('0x37')],'resourceId':_0x5f0944['id'],'type':_0x137935['name'],'sectionId':_0x137935['id']},{})[_0x898a('0x31')](function(){return _0x22f9ba;});}else{return _0x22f9ba;}})[_0x898a('0x23')](function(_0x5b7019){logger[_0x898a('0x1f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5b7019);throw _0x5b7019;});}return _0x22f9ba;});}})[_0x898a('0x31')](respondWithResult(_0x209529,0xc9))['catch'](handleError(_0x209529,null));};exports['create']=function(_0x5ed35e,_0xfdd6d8,_0x473f5c){var _0x3909c5;return db[_0x898a('0x4a')]['create'](_0x5ed35e['body'],{'raw':!![]})[_0x898a('0x31')](function(_0x232be0){_0x3909c5=_0x232be0;return db[_0x898a('0x4a')][_0x898a('0x5d')]({'raw':!![]});})[_0x898a('0x31')](function(_0x41cf94){var _0x30051d=fs[_0x898a('0x5e')](path['join'](config[_0x898a('0x5f')],_0x898a('0x60')),'utf8');var _0x42fda8=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config[_0x898a('0x5f')],_0x898a('0x62')),_0x898a('0x63'));var _0x3bcc3d=ejs[_0x898a('0x64')](_0x30051d,{'trunks':_0x41cf94||[]});fs[_0x898a('0x65')](_0x898a('0x66'),_0x3bcc3d);if(_0x3909c5[_0x898a('0x67')]){var _0x307849=ejs[_0x898a('0x64')](_0x42fda8,{'trunks':_0x41cf94||[]});fs['writeFileSync'](_0x898a('0x68'),_0x307849);}})['then'](function(){return respondWithRpcPromise(_0x898a('0x69'),_0x898a('0x57'),{'module':_0x898a('0x6a')});})['then'](function(){var _0x31102d=_0x5ed35e[_0x898a('0x58')][_0x898a('0x33')]({'plain':!![]});if(!_0x31102d)throw new Error(_0x898a('0x6b'));if(_0x31102d[_0x898a('0x59')]==='user'){var _0x4b9487=_0x3909c5[_0x898a('0x33')]({'plain':!![]});return db[_0x898a('0x5a')][_0x898a('0x52')]({'where':{'name':_0x898a('0x34'),'userProfileId':_0x31102d['userProfileId']},'raw':!![]})[_0x898a('0x31')](function(_0x3d3451){if(_0x3d3451&&_0x3d3451[_0x898a('0x5c')]===0x0){return db[_0x898a('0x35')][_0x898a('0x57')]({'name':_0x4b9487[_0x898a('0x37')],'resourceId':_0x4b9487['id'],'type':_0x3d3451[_0x898a('0x37')],'sectionId':_0x3d3451['id']},{})[_0x898a('0x31')](function(){return _0x3909c5;});}else{return _0x3909c5;}})['catch'](function(_0x32a207){logger[_0x898a('0x1f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x32a207);throw _0x32a207;});}return _0x3909c5;})[_0x898a('0x31')](respondWithResult(_0xfdd6d8,0xc9))['catch'](handleError(_0xfdd6d8,null));};exports[_0x898a('0x30')]=function(_0x4b2575,_0x2471d8,_0x387f2c){var _0x3b07dc;return db[_0x898a('0x4a')][_0x898a('0x52')]({'where':{'id':_0x4b2575[_0x898a('0x4d')]['id']}})[_0x898a('0x31')](handleEntityNotFound(_0x2471d8,null))[_0x898a('0x31')](saveUpdates(_0x4b2575[_0x898a('0x55')],null))['then'](function(_0x3fe54b){if(_0x3fe54b){_0x3b07dc=_0x3fe54b;return db[_0x898a('0x4a')][_0x898a('0x5d')]({'raw':!![]});}})[_0x898a('0x31')](function(_0x290972){if(_0x290972){var _0x1d594b=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config[_0x898a('0x5f')],_0x898a('0x60')),'utf8');var _0x4fad03=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config['root'],'server/files/templates/registry.ejs'),_0x898a('0x63'));var _0x4a79a4=ejs[_0x898a('0x64')](_0x1d594b,{'trunks':_0x290972||[]});fs[_0x898a('0x65')]('/etc/asterisk/sip_xcally_trunks.conf',_0x4a79a4);var _0x3f6815=ejs[_0x898a('0x64')](_0x4fad03,{'trunks':_0x290972||[]});fs[_0x898a('0x65')](_0x898a('0x68'),_0x3f6815);return respondWithRpcPromise(_0x898a('0x69'),_0x898a('0x30'),{'module':_0x898a('0x6a')});}return null;})['then'](function(_0x3237e8){if(_0x3237e8){return _0x3b07dc;}})[_0x898a('0x31')](respondWithResult(_0x2471d8,null))[_0x898a('0x23')](handleError(_0x2471d8,null));};exports['destroy']=function(_0x27560f,_0x61247c,_0x5c6247){var _0x39e917;return db['Trunk']['find']({'where':{'id':_0x27560f['params']['id']}})[_0x898a('0x31')](handleEntityNotFound(_0x61247c,null))[_0x898a('0x31')](removeEntity(_0x61247c,null))[_0x898a('0x31')](function(){return db[_0x898a('0x4a')][_0x898a('0x5d')]({'raw':!![]});})[_0x898a('0x31')](function(_0x12e54b){var _0x50dd52=fs[_0x898a('0x5e')](path['join'](config[_0x898a('0x5f')],_0x898a('0x60')),'utf8');var _0x24670c=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config[_0x898a('0x5f')],_0x898a('0x62')),'utf8');var _0x5847cb=ejs['render'](_0x50dd52,{'trunks':_0x12e54b});var _0x3b8fb5=ejs[_0x898a('0x64')](_0x24670c,{'trunks':_0x12e54b});fs[_0x898a('0x65')]('/etc/asterisk/sip_xcally_trunks.conf',_0x5847cb);fs[_0x898a('0x65')]('/etc/asterisk/sip_xcally_registers.conf',_0x3b8fb5);return respondWithRpcPromise('Reload',_0x898a('0x32'),{'module':_0x898a('0x6a')});})[_0x898a('0x23')](handleError(_0x61247c,null));};
\ No newline at end of file
+var _0x6f0d=['server/files/templates/registry.ejs','utf8','render','writeFileSync','registry','Reload','chan_sip.so','user','UserProfileSection','autoAssociation','/etc/asterisk/sip_xcally_trunks.conf','/etc/asterisk/sip_xcally_registers.conf','destroy','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','jayson/promise','client','http','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','get','Trunks','UserProfileResource','end','stack','name','send','index','map','Trunk','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','clone','rawAttributes','find','updatedAt','body','omit','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','root','server/files/templates/trunk.ejs','join'];(function(_0x3c442f,_0x5e3fda){var _0x54b8d9=function(_0x333644){while(--_0x333644){_0x3c442f['push'](_0x3c442f['shift']());}};_0x54b8d9(++_0x5e3fda);}(_0x6f0d,0x16c));var _0xd6f0=function(_0x485b11,_0x4df844){_0x485b11=_0x485b11-0x0;var _0x42319a=_0x6f0d[_0x485b11];return _0x42319a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd6f0('0x0'));var zipdir=require(_0xd6f0('0x1'));var jsonpatch=require(_0xd6f0('0x2'));var rp=require(_0xd6f0('0x3'));var moment=require('moment');var BPromise=require(_0xd6f0('0x4'));var Mustache=require(_0xd6f0('0x5'));var util=require(_0xd6f0('0x6'));var path=require(_0xd6f0('0x7'));var sox=require(_0xd6f0('0x8'));var csv=require('to-csv');var ejs=require(_0xd6f0('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd6f0('0xa'));var squel=require(_0xd6f0('0xb'));var crypto=require(_0xd6f0('0xc'));var jsforce=require(_0xd6f0('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xd6f0('0xe'));var Papa=require(_0xd6f0('0xf'));var Redis=require(_0xd6f0('0x10'));var authService=require(_0xd6f0('0x11'));var qs=require(_0xd6f0('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd6f0('0x13'));var logger=require(_0xd6f0('0x14'))(_0xd6f0('0x15'));var utils=require(_0xd6f0('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xd6f0('0x17'));var db=require(_0xd6f0('0x18'))['db'];var jayson=require(_0xd6f0('0x19'));var client=jayson[_0xd6f0('0x1a')][_0xd6f0('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x409549,_0x2bf5b8,_0x250999,_0x246dad){return new BPromise(function(_0x4ab979,_0x2b3f32){var _0x354846=_0x246dad||client;return _0x354846['request'](_0x409549,_0x250999)[_0xd6f0('0x1c')](function(_0x593abe){logger[_0xd6f0('0x1d')](_0xd6f0('0x1e'),_0x2bf5b8,_0xd6f0('0x1f'));logger[_0xd6f0('0x20')](_0xd6f0('0x21'),_0x2bf5b8,_0xd6f0('0x1f'),JSON[_0xd6f0('0x22')](_0x593abe));if(_0x593abe[_0xd6f0('0x23')]){if(_0x593abe[_0xd6f0('0x23')][_0xd6f0('0x24')]===0x1f4){logger[_0xd6f0('0x23')](_0xd6f0('0x1e'),_0x2bf5b8,_0x593abe[_0xd6f0('0x23')][_0xd6f0('0x25')]);return _0x2b3f32(_0x593abe[_0xd6f0('0x23')][_0xd6f0('0x25')]);}logger['error']('Trunk,\x20%s,\x20%s',_0x2bf5b8,_0x593abe[_0xd6f0('0x23')][_0xd6f0('0x25')]);return _0x4ab979(_0x593abe[_0xd6f0('0x23')]['message']);}else{logger[_0xd6f0('0x1d')](_0xd6f0('0x1e'),_0x2bf5b8,'request\x20sent');_0x4ab979(_0x593abe[_0xd6f0('0x26')]['message']);}})[_0xd6f0('0x27')](function(_0x1c9d90){logger['error'](_0xd6f0('0x1e'),_0x2bf5b8,_0x1c9d90);_0x2b3f32(_0x1c9d90);});});}function respondWithStatusCode(_0x45e99c,_0x5ea2dd){_0x5ea2dd=_0x5ea2dd||0xcc;return function(_0x3dbdc3){if(_0x3dbdc3){return _0x45e99c[_0xd6f0('0x28')](_0x5ea2dd);}return _0x45e99c[_0xd6f0('0x29')](_0x5ea2dd)['end']();};}function respondWithResult(_0x2ca8bb,_0x3dc166){_0x3dc166=_0x3dc166||0xc8;return function(_0x5ecb16){if(_0x5ecb16){return _0x2ca8bb[_0xd6f0('0x29')](_0x3dc166)['json'](_0x5ecb16);}};}function respondWithFilteredResult(_0x2042d5,_0x3fb5c3){return function(_0x1630dc){if(_0x1630dc){var _0x3c1bff=typeof _0x3fb5c3[_0xd6f0('0x2a')]===_0xd6f0('0x2b')&&typeof _0x3fb5c3[_0xd6f0('0x2c')]===_0xd6f0('0x2b');var _0x48975d=_0x1630dc[_0xd6f0('0x2d')];var _0x1982d3=_0x3c1bff?0x0:_0x3fb5c3['offset'];var _0x38a3e9=_0x3c1bff?_0x1630dc[_0xd6f0('0x2d')]:_0x3fb5c3[_0xd6f0('0x2a')]+_0x3fb5c3[_0xd6f0('0x2c')];var _0x1a3967;if(_0x38a3e9>=_0x48975d){_0x38a3e9=_0x48975d;_0x1a3967=0xc8;}else{_0x1a3967=0xce;}_0x2042d5[_0xd6f0('0x29')](_0x1a3967);return _0x2042d5[_0xd6f0('0x2e')](_0xd6f0('0x2f'),_0x1982d3+'-'+_0x38a3e9+'/'+_0x48975d)[_0xd6f0('0x30')](_0x1630dc);}return null;};}function patchUpdates(_0x43f72f){return function(_0x1dff9b){try{jsonpatch[_0xd6f0('0x31')](_0x1dff9b,_0x43f72f,!![]);}catch(_0x348529){return BPromise[_0xd6f0('0x32')](_0x348529);}return _0x1dff9b[_0xd6f0('0x33')]();};}function saveUpdates(_0x2d7c90,_0x31c493){return function(_0x376890){if(_0x376890){return _0x376890[_0xd6f0('0x34')](_0x2d7c90)[_0xd6f0('0x1c')](function(_0x3906ca){return _0x3906ca;});}return null;};}function removeEntity(_0x26ab29,_0x4a8ebe){return function(_0x11124c){if(_0x11124c){return _0x11124c['destroy']()['then'](function(){var _0x43d588=_0x11124c[_0xd6f0('0x35')]({'plain':!![]});var _0x12a6fa=_0xd6f0('0x36');return db[_0xd6f0('0x37')]['destroy']({'where':{'type':_0x12a6fa,'resourceId':_0x43d588['id']}})[_0xd6f0('0x1c')](function(){return _0x11124c;});})['then'](function(){_0x26ab29[_0xd6f0('0x29')](0xcc)[_0xd6f0('0x38')]();});}};}function handleEntityNotFound(_0x42c01a,_0x1eecf0){return function(_0x518751){if(!_0x518751){_0x42c01a['sendStatus'](0x194);}return _0x518751;};}function handleError(_0x47b33d,_0x3b6463){_0x3b6463=_0x3b6463||0x1f4;return function(_0xe2958d){logger['error'](_0xe2958d[_0xd6f0('0x39')]);if(_0xe2958d['name']){delete _0xe2958d[_0xd6f0('0x3a')];}_0x47b33d[_0xd6f0('0x29')](_0x3b6463)[_0xd6f0('0x3b')](_0xe2958d);};}exports[_0xd6f0('0x3c')]=function(_0x451834,_0x3d1280){var _0x6b44fa={},_0x4fd4db={},_0x52203d={'count':0x0,'rows':[]};var _0x162537=_[_0xd6f0('0x3d')](db[_0xd6f0('0x3e')]['rawAttributes'],function(_0x59f905){return{'name':_0x59f905[_0xd6f0('0x3f')],'type':_0x59f905[_0xd6f0('0x40')][_0xd6f0('0x41')]};});_0x4fd4db[_0xd6f0('0x42')]=_[_0xd6f0('0x3d')](_0x162537,_0xd6f0('0x3a'));_0x4fd4db[_0xd6f0('0x43')]=_[_0xd6f0('0x44')](_0x451834['query']);_0x4fd4db[_0xd6f0('0x45')]=_[_0xd6f0('0x46')](_0x4fd4db[_0xd6f0('0x42')],_0x4fd4db[_0xd6f0('0x43')]);_0x6b44fa['attributes']=_[_0xd6f0('0x46')](_0x4fd4db[_0xd6f0('0x42')],qs[_0xd6f0('0x47')](_0x451834[_0xd6f0('0x43')][_0xd6f0('0x47')]));_0x6b44fa['attributes']=_0x6b44fa[_0xd6f0('0x48')][_0xd6f0('0x49')]?_0x6b44fa[_0xd6f0('0x48')]:_0x4fd4db['model'];if(!_0x451834[_0xd6f0('0x43')][_0xd6f0('0x4a')]('nolimit')){_0x6b44fa['limit']=qs[_0xd6f0('0x2c')](_0x451834[_0xd6f0('0x43')][_0xd6f0('0x2c')]);_0x6b44fa['offset']=qs[_0xd6f0('0x2a')](_0x451834[_0xd6f0('0x43')]['offset']);}_0x6b44fa[_0xd6f0('0x4b')]=qs[_0xd6f0('0x4c')](_0x451834[_0xd6f0('0x43')][_0xd6f0('0x4c')]);_0x6b44fa['where']=qs[_0xd6f0('0x45')](_[_0xd6f0('0x4d')](_0x451834[_0xd6f0('0x43')],_0x4fd4db[_0xd6f0('0x45')]),_0x162537);if(_0x451834[_0xd6f0('0x43')][_0xd6f0('0x4e')]){_0x6b44fa[_0xd6f0('0x4f')]=_[_0xd6f0('0x50')](_0x6b44fa['where'],{'$or':_[_0xd6f0('0x3d')](_0x162537,function(_0x3d42ca){if(_0x3d42ca['type']!==_0xd6f0('0x51')){var _0x39ca69={};_0x39ca69[_0x3d42ca[_0xd6f0('0x3a')]]={'$like':'%'+_0x451834[_0xd6f0('0x43')]['filter']+'%'};return _0x39ca69;}})});}_0x6b44fa=_[_0xd6f0('0x50')]({},_0x6b44fa,_0x451834[_0xd6f0('0x52')]);var _0x494542={'where':_0x6b44fa['where']};return db[_0xd6f0('0x3e')]['count'](_0x494542)[_0xd6f0('0x1c')](function(_0x61b354){_0x52203d[_0xd6f0('0x2d')]=_0x61b354;if(_0x451834['query'][_0xd6f0('0x53')]){_0x6b44fa[_0xd6f0('0x54')]=[{'all':!![]}];}return db[_0xd6f0('0x3e')][_0xd6f0('0x55')](_0x6b44fa);})[_0xd6f0('0x1c')](function(_0x4c42ce){_0x52203d[_0xd6f0('0x56')]=_0x4c42ce;return _0x52203d;})['then'](respondWithFilteredResult(_0x3d1280,_0x6b44fa))[_0xd6f0('0x27')](handleError(_0x3d1280,null));};exports[_0xd6f0('0x57')]=function(_0x2eb338,_0x1dc320){var _0x554e37={'raw':![],'where':{'id':_0x2eb338[_0xd6f0('0x58')]['id']}},_0x5ceb6b={};_0x5ceb6b[_0xd6f0('0x42')]=_['keys'](db[_0xd6f0('0x3e')]['rawAttributes']);_0x5ceb6b[_0xd6f0('0x43')]=_[_0xd6f0('0x44')](_0x2eb338[_0xd6f0('0x43')]);_0x5ceb6b[_0xd6f0('0x45')]=_[_0xd6f0('0x46')](_0x5ceb6b['model'],_0x5ceb6b[_0xd6f0('0x43')]);_0x554e37[_0xd6f0('0x48')]=_[_0xd6f0('0x46')](_0x5ceb6b[_0xd6f0('0x42')],qs[_0xd6f0('0x47')](_0x2eb338[_0xd6f0('0x43')][_0xd6f0('0x47')]));_0x554e37[_0xd6f0('0x48')]=_0x554e37['attributes'][_0xd6f0('0x49')]?_0x554e37[_0xd6f0('0x48')]:_0x5ceb6b[_0xd6f0('0x42')];if(_0x2eb338[_0xd6f0('0x43')][_0xd6f0('0x53')]){_0x554e37[_0xd6f0('0x54')]=[{'all':!![]}];}_0x554e37=_[_0xd6f0('0x50')]({},_0x554e37,_0x2eb338[_0xd6f0('0x52')]);return db[_0xd6f0('0x3e')]['find'](_0x554e37)[_0xd6f0('0x1c')](handleEntityNotFound(_0x1dc320,null))['then'](respondWithResult(_0x1dc320,null))['catch'](handleError(_0x1dc320,null));};exports[_0xd6f0('0x59')]=function(_0x55fd25,_0x539ef1){var _0x28c3c4={'where':{'id':_0x55fd25[_0xd6f0('0x58')]['id']}},_0x2d39a2={};_0x2d39a2['model']=_[_0xd6f0('0x44')](db[_0xd6f0('0x3e')][_0xd6f0('0x5a')]);_0x28c3c4['attributes']=_[_0xd6f0('0x46')](_0x2d39a2[_0xd6f0('0x42')],qs['fields'](_0x55fd25[_0xd6f0('0x43')][_0xd6f0('0x47')]));_0x28c3c4['attributes']=_0x28c3c4[_0xd6f0('0x48')][_0xd6f0('0x49')]?_0x28c3c4[_0xd6f0('0x48')]:_0x2d39a2[_0xd6f0('0x42')];if(_0x55fd25[_0xd6f0('0x43')]['includeAll']){_0x28c3c4[_0xd6f0('0x54')]=[{'all':!![]}];}_0x28c3c4=_[_0xd6f0('0x50')]({},_0x28c3c4,_0x55fd25['options']);return db[_0xd6f0('0x3e')][_0xd6f0('0x5b')](_0x28c3c4)[_0xd6f0('0x1c')](handleEntityNotFound(_0x539ef1,null))['then'](function(_0x229f19){if(_0x229f19){var _0x5d75fa=_0x229f19['get']({'plain':!![]});_0x5d75fa=qs['omit'](_0x5d75fa,['id','createdAt',_0xd6f0('0x5c')]);_0x55fd25[_0xd6f0('0x5d')]=_[_0xd6f0('0x5e')](_0x55fd25[_0xd6f0('0x5d')],['id','createdAt',_0xd6f0('0x5c')]);return db['Trunk'][_0xd6f0('0x5f')](_[_0xd6f0('0x50')](_0x5d75fa,_0x55fd25[_0xd6f0('0x5d')]),{'include':_0x55fd25['query'][_0xd6f0('0x53')]?[{'all':!![]}]:undefined})[_0xd6f0('0x1c')](function(_0x269dd7){var _0x705eb=_0x55fd25['user'][_0xd6f0('0x35')]({'plain':!![]});if(!_0x705eb)throw new Error(_0xd6f0('0x60'));if(_0x705eb[_0xd6f0('0x61')]==='user'){var _0x5bc4e7=_0x269dd7[_0xd6f0('0x35')]({'plain':!![]});var _0x1fee47=_0xd6f0('0x36');return db['UserProfileSection'][_0xd6f0('0x5b')]({'where':{'name':_0x1fee47,'userProfileId':_0x705eb[_0xd6f0('0x62')]},'raw':!![]})[_0xd6f0('0x1c')](function(_0x282e9b){if(_0x282e9b&&_0x282e9b['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x5bc4e7['name'],'resourceId':_0x5bc4e7['id'],'type':_0x282e9b[_0xd6f0('0x3a')],'sectionId':_0x282e9b['id']},{})[_0xd6f0('0x1c')](function(){return _0x269dd7;});}else{return _0x269dd7;}})[_0xd6f0('0x27')](function(_0x30cd81){logger[_0xd6f0('0x23')](_0xd6f0('0x63'),_0x30cd81);throw _0x30cd81;});}return _0x269dd7;});}})[_0xd6f0('0x1c')](respondWithResult(_0x539ef1,0xc9))[_0xd6f0('0x27')](handleError(_0x539ef1,null));};exports[_0xd6f0('0x5f')]=function(_0x5ad146,_0x55f96e,_0x1b9728){var _0x5af4f6;return db[_0xd6f0('0x3e')][_0xd6f0('0x5f')](_0x5ad146[_0xd6f0('0x5d')],{'raw':!![]})[_0xd6f0('0x1c')](function(_0x14384f){_0x5af4f6=_0x14384f;return db[_0xd6f0('0x3e')][_0xd6f0('0x55')]({'raw':!![]});})['then'](function(_0x3c8a3e){var _0x318a68=fs[_0xd6f0('0x64')](path['join'](config[_0xd6f0('0x65')],_0xd6f0('0x66')),'utf8');var _0xad50ac=fs[_0xd6f0('0x64')](path[_0xd6f0('0x67')](config[_0xd6f0('0x65')],_0xd6f0('0x68')),_0xd6f0('0x69'));var _0x1c6140=ejs[_0xd6f0('0x6a')](_0x318a68,{'trunks':_0x3c8a3e||[]});fs[_0xd6f0('0x6b')]('/etc/asterisk/sip_xcally_trunks.conf',_0x1c6140);if(_0x5af4f6[_0xd6f0('0x6c')]){var _0x205b6a=ejs[_0xd6f0('0x6a')](_0xad50ac,{'trunks':_0x3c8a3e||[]});fs[_0xd6f0('0x6b')]('/etc/asterisk/sip_xcally_registers.conf',_0x205b6a);}})[_0xd6f0('0x1c')](function(){return respondWithRpcPromise(_0xd6f0('0x6d'),_0xd6f0('0x5f'),{'module':_0xd6f0('0x6e')});})[_0xd6f0('0x1c')](function(){var _0x12e0e5=_0x5ad146[_0xd6f0('0x6f')][_0xd6f0('0x35')]({'plain':!![]});if(!_0x12e0e5)throw new Error(_0xd6f0('0x60'));if(_0x12e0e5[_0xd6f0('0x61')]==='user'){var _0x440d5c=_0x5af4f6[_0xd6f0('0x35')]({'plain':!![]});return db[_0xd6f0('0x70')]['find']({'where':{'name':_0xd6f0('0x36'),'userProfileId':_0x12e0e5[_0xd6f0('0x62')]},'raw':!![]})[_0xd6f0('0x1c')](function(_0x406bc7){if(_0x406bc7&&_0x406bc7[_0xd6f0('0x71')]===0x0){return db[_0xd6f0('0x37')][_0xd6f0('0x5f')]({'name':_0x440d5c[_0xd6f0('0x3a')],'resourceId':_0x440d5c['id'],'type':_0x406bc7[_0xd6f0('0x3a')],'sectionId':_0x406bc7['id']},{})[_0xd6f0('0x1c')](function(){return _0x5af4f6;});}else{return _0x5af4f6;}})[_0xd6f0('0x27')](function(_0x5b3155){logger['error'](_0xd6f0('0x63'),_0x5b3155);throw _0x5b3155;});}return _0x5af4f6;})[_0xd6f0('0x1c')](respondWithResult(_0x55f96e,0xc9))[_0xd6f0('0x27')](handleError(_0x55f96e,null));};exports[_0xd6f0('0x34')]=function(_0x1da442,_0x5a781b,_0x15143a){var _0x2d38e6;return db['Trunk'][_0xd6f0('0x5b')]({'where':{'id':_0x1da442['params']['id']}})[_0xd6f0('0x1c')](handleEntityNotFound(_0x5a781b,null))[_0xd6f0('0x1c')](saveUpdates(_0x1da442[_0xd6f0('0x5d')],null))[_0xd6f0('0x1c')](function(_0x391c2a){if(_0x391c2a){_0x2d38e6=_0x391c2a;return db['Trunk']['findAll']({'raw':!![]});}})[_0xd6f0('0x1c')](function(_0x17b320){if(_0x17b320){var _0x484124=fs[_0xd6f0('0x64')](path['join'](config['root'],_0xd6f0('0x66')),'utf8');var _0x5dc1c7=fs['readFileSync'](path['join'](config[_0xd6f0('0x65')],_0xd6f0('0x68')),_0xd6f0('0x69'));var _0xcfed18=ejs[_0xd6f0('0x6a')](_0x484124,{'trunks':_0x17b320||[]});fs[_0xd6f0('0x6b')](_0xd6f0('0x72'),_0xcfed18);var _0x381f88=ejs[_0xd6f0('0x6a')](_0x5dc1c7,{'trunks':_0x17b320||[]});fs['writeFileSync'](_0xd6f0('0x73'),_0x381f88);return respondWithRpcPromise('Reload','update',{'module':_0xd6f0('0x6e')});}return null;})[_0xd6f0('0x1c')](function(_0x397f2c){if(_0x397f2c){return _0x2d38e6;}})['then'](respondWithResult(_0x5a781b,null))[_0xd6f0('0x27')](handleError(_0x5a781b,null));};exports[_0xd6f0('0x74')]=function(_0xc0585c,_0xf7ade1,_0x41e738){var _0x202e37;return db[_0xd6f0('0x3e')][_0xd6f0('0x5b')]({'where':{'id':_0xc0585c['params']['id']}})[_0xd6f0('0x1c')](handleEntityNotFound(_0xf7ade1,null))[_0xd6f0('0x1c')](removeEntity(_0xf7ade1,null))['then'](function(){return db[_0xd6f0('0x3e')][_0xd6f0('0x55')]({'raw':!![]});})[_0xd6f0('0x1c')](function(_0x175ba6){var _0x403698=fs[_0xd6f0('0x64')](path[_0xd6f0('0x67')](config['root'],_0xd6f0('0x66')),_0xd6f0('0x69'));var _0x5c3659=fs['readFileSync'](path['join'](config['root'],_0xd6f0('0x68')),_0xd6f0('0x69'));var _0x2fdd59=ejs[_0xd6f0('0x6a')](_0x403698,{'trunks':_0x175ba6});var _0x427b95=ejs[_0xd6f0('0x6a')](_0x5c3659,{'trunks':_0x175ba6});fs['writeFileSync'](_0xd6f0('0x72'),_0x2fdd59);fs[_0xd6f0('0x6b')](_0xd6f0('0x73'),_0x427b95);return respondWithRpcPromise(_0xd6f0('0x6d'),'destroy',{'module':_0xd6f0('0x6e')});})['catch'](handleError(_0xf7ade1,null));};
\ No newline at end of file
index 7692fea..53c1b2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cfc=['exports','define','Trunk','tools_trunks','lodash','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./trunk.attributes'];(function(_0x23bedf,_0x1515cc){var _0x19bfc7=function(_0x53efe7){while(--_0x53efe7){_0x23bedf['push'](_0x23bedf['shift']());}};_0x19bfc7(++_0x1515cc);}(_0x6cfc,0x18a));var _0xc6cf=function(_0x3f6565,_0x12a8bb){_0x3f6565=_0x3f6565-0x0;var _0x4abd23=_0x6cfc[_0x3f6565];return _0x4abd23;};'use strict';var _=require(_0xc6cf('0x0'));var util=require(_0xc6cf('0x1'));var logger=require('../../config/logger')(_0xc6cf('0x2'));var moment=require('moment');var BPromise=require(_0xc6cf('0x3'));var rp=require(_0xc6cf('0x4'));var fs=require('fs');var path=require(_0xc6cf('0x5'));var rimraf=require(_0xc6cf('0x6'));var config=require(_0xc6cf('0x7'));var attributes=require(_0xc6cf('0x8'));module[_0xc6cf('0x9')]=function(_0x80e55d,_0x204785){return _0x80e55d[_0xc6cf('0xa')](_0xc6cf('0xb'),attributes,{'tableName':_0xc6cf('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd39a=['moment','bluebird','request-promise','path','../../config/environment','exports','Trunk','tools_trunks','lodash','util','api'];(function(_0x350aeb,_0x3d265a){var _0x3c5273=function(_0x32b417){while(--_0x32b417){_0x350aeb['push'](_0x350aeb['shift']());}};_0x3c5273(++_0x3d265a);}(_0xd39a,0x189));var _0xad39=function(_0xeb94a4,_0x166c7b){_0xeb94a4=_0xeb94a4-0x0;var _0x5a9285=_0xd39a[_0xeb94a4];return _0x5a9285;};'use strict';var _=require(_0xad39('0x0'));var util=require(_0xad39('0x1'));var logger=require('../../config/logger')(_0xad39('0x2'));var moment=require(_0xad39('0x3'));var BPromise=require(_0xad39('0x4'));var rp=require(_0xad39('0x5'));var fs=require('fs');var path=require(_0xad39('0x6'));var rimraf=require('rimraf');var config=require(_0xad39('0x7'));var attributes=require('./trunk.attributes');module[_0xad39('0x8')]=function(_0x25a88a,_0x569fbc){return _0x25a88a['define'](_0xad39('0x9'),attributes,{'tableName':_0xad39('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4b51f78..f5b8162 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4c7=['error','code','Trunk,\x20%s,\x20%s','message','result','catch','GetTrunk','findAll','options','raw','where','attributes','limit','include','map','model','ShowTrunk','Trunk','find','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','request','then','info','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa4c7,0x133));var _0x7a4c=function(_0xa2cf57,_0x3b39ba){_0xa2cf57=_0xa2cf57-0x0;var _0x1a5828=_0xa4c7[_0xa2cf57];return _0x1a5828;};'use strict';var _=require(_0x7a4c('0x0'));var util=require(_0x7a4c('0x1'));var moment=require(_0x7a4c('0x2'));var BPromise=require(_0x7a4c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7a4c('0x4'));var db=require(_0x7a4c('0x5'))['db'];var utils=require(_0x7a4c('0x6'));var logger=require('../../config/logger')(_0x7a4c('0x7'));var config=require('../../config/environment');var jayson=require(_0x7a4c('0x8'));var client=jayson['client'][_0x7a4c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xfa9364,_0x2d0a95,_0x2380e7){return new BPromise(function(_0xa0b50d,_0x2bdf8a){return client[_0x7a4c('0xa')](_0xfa9364,_0x2380e7)[_0x7a4c('0xb')](function(_0x1c5ed2){logger[_0x7a4c('0xc')]('Trunk,\x20%s,\x20%s',_0x2d0a95,_0x7a4c('0xd'));logger[_0x7a4c('0xe')](_0x7a4c('0xf'),_0x2d0a95,_0x7a4c('0xd'),JSON[_0x7a4c('0x10')](_0x1c5ed2));if(_0x1c5ed2[_0x7a4c('0x11')]){if(_0x1c5ed2[_0x7a4c('0x11')][_0x7a4c('0x12')]===0x1f4){logger[_0x7a4c('0x11')](_0x7a4c('0x13'),_0x2d0a95,_0x1c5ed2[_0x7a4c('0x11')][_0x7a4c('0x14')]);return _0x2bdf8a(_0x1c5ed2[_0x7a4c('0x11')][_0x7a4c('0x14')]);}logger[_0x7a4c('0x11')]('Trunk,\x20%s,\x20%s',_0x2d0a95,_0x1c5ed2[_0x7a4c('0x11')][_0x7a4c('0x14')]);return _0xa0b50d(_0x1c5ed2[_0x7a4c('0x11')]['message']);}else{logger[_0x7a4c('0xc')](_0x7a4c('0x13'),_0x2d0a95,_0x7a4c('0xd'));_0xa0b50d(_0x1c5ed2[_0x7a4c('0x15')][_0x7a4c('0x14')]);}})[_0x7a4c('0x16')](function(_0x17a74f){logger['error'](_0x7a4c('0x13'),_0x2d0a95,_0x17a74f);_0x2bdf8a(_0x17a74f);});});}exports[_0x7a4c('0x17')]=function(_0x43f992){var _0xc883d0=this;return new Promise(function(_0x4b3fa4,_0x2d6de6){return db['Trunk'][_0x7a4c('0x18')]({'raw':_0x43f992[_0x7a4c('0x19')]?_0x43f992[_0x7a4c('0x19')][_0x7a4c('0x1a')]===undefined?!![]:![]:!![],'where':_0x43f992['options']?_0x43f992[_0x7a4c('0x19')][_0x7a4c('0x1b')]||null:null,'attributes':_0x43f992['options']?_0x43f992[_0x7a4c('0x19')][_0x7a4c('0x1c')]||null:null,'limit':_0x43f992[_0x7a4c('0x19')]?_0x43f992['options'][_0x7a4c('0x1d')]||null:null,'include':_0x43f992[_0x7a4c('0x19')]?_0x43f992[_0x7a4c('0x19')][_0x7a4c('0x1e')]?_[_0x7a4c('0x1f')](_0x43f992[_0x7a4c('0x19')][_0x7a4c('0x1e')],function(_0x7076c0){return{'model':db[_0x7076c0[_0x7a4c('0x20')]],'as':_0x7076c0['as'],'attributes':_0x7076c0[_0x7a4c('0x1c')],'include':_0x7076c0[_0x7a4c('0x1e')]?_[_0x7a4c('0x1f')](_0x7076c0[_0x7a4c('0x1e')],function(_0x504704){return{'model':db[_0x504704[_0x7a4c('0x20')]],'as':_0x504704['as'],'attributes':_0x504704[_0x7a4c('0x1c')],'include':_0x504704[_0x7a4c('0x1e')]?_[_0x7a4c('0x1f')](_0x504704[_0x7a4c('0x1e')],function(_0x40c649){return{'model':db[_0x40c649[_0x7a4c('0x20')]],'as':_0x40c649['as'],'attributes':_0x40c649[_0x7a4c('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x7a4c('0xb')](function(_0x55fd81){logger[_0x7a4c('0xc')](_0x7a4c('0x17'),_0x43f992);logger['debug'](_0x7a4c('0x17'),_0x43f992,JSON[_0x7a4c('0x10')](_0x55fd81));_0x4b3fa4(_0x55fd81);})[_0x7a4c('0x16')](function(_0x5dd979){logger['error']('GetTrunk',_0x5dd979[_0x7a4c('0x14')],_0x43f992);_0x2d6de6(_0xc883d0[_0x7a4c('0x11')](0x1f4,_0x5dd979['message']));});});};exports[_0x7a4c('0x21')]=function(_0x304f8e){var _0x54ed9d=this;return new Promise(function(_0x8ec6ea,_0x380f98){return db[_0x7a4c('0x22')][_0x7a4c('0x23')]({'raw':_0x304f8e[_0x7a4c('0x19')]?_0x304f8e[_0x7a4c('0x19')][_0x7a4c('0x1a')]===undefined?!![]:![]:!![],'where':_0x304f8e['options']?_0x304f8e['options'][_0x7a4c('0x1b')]||null:null,'attributes':_0x304f8e[_0x7a4c('0x19')]?_0x304f8e[_0x7a4c('0x19')][_0x7a4c('0x1c')]||null:null,'include':_0x304f8e[_0x7a4c('0x19')]?_0x304f8e[_0x7a4c('0x19')][_0x7a4c('0x1e')]?_['map'](_0x304f8e['options'][_0x7a4c('0x1e')],function(_0x12cf76){return{'model':db[_0x12cf76[_0x7a4c('0x20')]],'as':_0x12cf76['as'],'attributes':_0x12cf76[_0x7a4c('0x1c')],'include':_0x12cf76[_0x7a4c('0x1e')]?_[_0x7a4c('0x1f')](_0x12cf76['include'],function(_0x179f33){return{'model':db[_0x179f33[_0x7a4c('0x20')]],'as':_0x179f33['as'],'attributes':_0x179f33[_0x7a4c('0x1c')],'include':_0x179f33[_0x7a4c('0x1e')]?_['map'](_0x179f33[_0x7a4c('0x1e')],function(_0x4163dd){return{'model':db[_0x4163dd[_0x7a4c('0x20')]],'as':_0x4163dd['as'],'attributes':_0x4163dd[_0x7a4c('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x7a4c('0xb')](function(_0x40e8ca){logger[_0x7a4c('0xc')](_0x7a4c('0x21'),_0x304f8e);logger[_0x7a4c('0xe')](_0x7a4c('0x21'),_0x304f8e,JSON[_0x7a4c('0x10')](_0x40e8ca));_0x8ec6ea(_0x40e8ca);})[_0x7a4c('0x16')](function(_0x36cc61){logger[_0x7a4c('0x11')](_0x7a4c('0x21'),_0x36cc61[_0x7a4c('0x14')],_0x304f8e);_0x380f98(_0x54ed9d[_0x7a4c('0x11')](0x1f4,_0x36cc61[_0x7a4c('0x14')]));});});};
\ No newline at end of file
+var _0x23a8=['message','result','catch','GetTrunk','Trunk','options','raw','attributes','limit','include','model','map','then','debug','find','where','info','ShowTrunk','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','Trunk,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x4ca208,_0x5315f0){var _0x2eb4ae=function(_0x563eae){while(--_0x563eae){_0x4ca208['push'](_0x4ca208['shift']());}};_0x2eb4ae(++_0x5315f0);}(_0x23a8,0xd8));var _0x823a=function(_0x16d540,_0x4576a6){_0x16d540=_0x16d540-0x0;var _0x44d183=_0x23a8[_0x16d540];return _0x44d183;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x823a('0x0'));var BPromise=require(_0x823a('0x1'));var rs=require(_0x823a('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x823a('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x823a('0x4'))(_0x823a('0x5'));var config=require(_0x823a('0x6'));var jayson=require(_0x823a('0x7'));var client=jayson['client'][_0x823a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x211f4a,_0x4d0fdf,_0x1b3a72){return new BPromise(function(_0xeb59dc,_0xb7e104){return client[_0x823a('0x9')](_0x211f4a,_0x1b3a72)['then'](function(_0x5c6289){logger['info'](_0x823a('0xa'),_0x4d0fdf,_0x823a('0xb'));logger['debug']('Trunk,\x20%s,\x20%s,\x20%s',_0x4d0fdf,'request\x20sent',JSON[_0x823a('0xc')](_0x5c6289));if(_0x5c6289[_0x823a('0xd')]){if(_0x5c6289[_0x823a('0xd')][_0x823a('0xe')]===0x1f4){logger['error'](_0x823a('0xa'),_0x4d0fdf,_0x5c6289[_0x823a('0xd')]['message']);return _0xb7e104(_0x5c6289[_0x823a('0xd')][_0x823a('0xf')]);}logger[_0x823a('0xd')](_0x823a('0xa'),_0x4d0fdf,_0x5c6289[_0x823a('0xd')][_0x823a('0xf')]);return _0xeb59dc(_0x5c6289[_0x823a('0xd')][_0x823a('0xf')]);}else{logger['info'](_0x823a('0xa'),_0x4d0fdf,_0x823a('0xb'));_0xeb59dc(_0x5c6289[_0x823a('0x10')][_0x823a('0xf')]);}})[_0x823a('0x11')](function(_0x25f58c){logger[_0x823a('0xd')](_0x823a('0xa'),_0x4d0fdf,_0x25f58c);_0xb7e104(_0x25f58c);});});}exports[_0x823a('0x12')]=function(_0x39224d){var _0x2f5f8b=this;return new Promise(function(_0x5f5c77,_0x4931d4){return db[_0x823a('0x13')]['findAll']({'raw':_0x39224d[_0x823a('0x14')]?_0x39224d[_0x823a('0x14')][_0x823a('0x15')]===undefined?!![]:![]:!![],'where':_0x39224d[_0x823a('0x14')]?_0x39224d['options']['where']||null:null,'attributes':_0x39224d[_0x823a('0x14')]?_0x39224d[_0x823a('0x14')][_0x823a('0x16')]||null:null,'limit':_0x39224d[_0x823a('0x14')]?_0x39224d[_0x823a('0x14')][_0x823a('0x17')]||null:null,'include':_0x39224d['options']?_0x39224d[_0x823a('0x14')][_0x823a('0x18')]?_['map'](_0x39224d[_0x823a('0x14')][_0x823a('0x18')],function(_0x4d4d3f){return{'model':db[_0x4d4d3f[_0x823a('0x19')]],'as':_0x4d4d3f['as'],'attributes':_0x4d4d3f[_0x823a('0x16')],'include':_0x4d4d3f[_0x823a('0x18')]?_[_0x823a('0x1a')](_0x4d4d3f[_0x823a('0x18')],function(_0x4a3da2){return{'model':db[_0x4a3da2['model']],'as':_0x4a3da2['as'],'attributes':_0x4a3da2['attributes'],'include':_0x4a3da2[_0x823a('0x18')]?_[_0x823a('0x1a')](_0x4a3da2[_0x823a('0x18')],function(_0x5c6ad1){return{'model':db[_0x5c6ad1['model']],'as':_0x5c6ad1['as'],'attributes':_0x5c6ad1[_0x823a('0x16')]};}):[]};}):[]};}):[]:[]})[_0x823a('0x1b')](function(_0x3c97f3){logger['info'](_0x823a('0x12'),_0x39224d);logger[_0x823a('0x1c')]('GetTrunk',_0x39224d,JSON['stringify'](_0x3c97f3));_0x5f5c77(_0x3c97f3);})[_0x823a('0x11')](function(_0x14890a){logger[_0x823a('0xd')](_0x823a('0x12'),_0x14890a[_0x823a('0xf')],_0x39224d);_0x4931d4(_0x2f5f8b['error'](0x1f4,_0x14890a[_0x823a('0xf')]));});});};exports['ShowTrunk']=function(_0x539512){var _0x508df0=this;return new Promise(function(_0x36e6d5,_0x19611f){return db['Trunk'][_0x823a('0x1d')]({'raw':_0x539512[_0x823a('0x14')]?_0x539512[_0x823a('0x14')][_0x823a('0x15')]===undefined?!![]:![]:!![],'where':_0x539512[_0x823a('0x14')]?_0x539512[_0x823a('0x14')][_0x823a('0x1e')]||null:null,'attributes':_0x539512[_0x823a('0x14')]?_0x539512[_0x823a('0x14')][_0x823a('0x16')]||null:null,'include':_0x539512['options']?_0x539512[_0x823a('0x14')]['include']?_[_0x823a('0x1a')](_0x539512['options'][_0x823a('0x18')],function(_0x45074f){return{'model':db[_0x45074f['model']],'as':_0x45074f['as'],'attributes':_0x45074f[_0x823a('0x16')],'include':_0x45074f[_0x823a('0x18')]?_[_0x823a('0x1a')](_0x45074f[_0x823a('0x18')],function(_0x583420){return{'model':db[_0x583420[_0x823a('0x19')]],'as':_0x583420['as'],'attributes':_0x583420[_0x823a('0x16')],'include':_0x583420[_0x823a('0x18')]?_[_0x823a('0x1a')](_0x583420[_0x823a('0x18')],function(_0x23fc4f){return{'model':db[_0x23fc4f['model']],'as':_0x23fc4f['as'],'attributes':_0x23fc4f[_0x823a('0x16')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x28a907){logger[_0x823a('0x1f')](_0x823a('0x20'),_0x539512);logger['debug'](_0x823a('0x20'),_0x539512,JSON['stringify'](_0x28a907));_0x36e6d5(_0x28a907);})[_0x823a('0x11')](function(_0x4164aa){logger[_0x823a('0xd')](_0x823a('0x20'),_0x4164aa[_0x823a('0xf')],_0x539512);_0x19611f(_0x508df0[_0x823a('0xd')](0x1f4,_0x4164aa[_0x823a('0xf')]));});});};
\ No newline at end of file
index 6eb61b3..fcadbdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23ef=['exports','Router','../../components/auth/service','./user-setting.controller','put','/:id','isAuthenticated'];(function(_0x560c8a,_0x3a0d85){var _0x4d6741=function(_0xdc49da){while(--_0xdc49da){_0x560c8a['push'](_0x560c8a['shift']());}};_0x4d6741(++_0x3a0d85);}(_0x23ef,0x1b3));var _0xf23e=function(_0xd0202b,_0x29251e){_0xd0202b=_0xd0202b-0x0;var _0x40ed0e=_0x23ef[_0xd0202b];return _0x40ed0e;};'use strict';var express=require('express');var router=express[_0xf23e('0x0')]();var auth=require(_0xf23e('0x1'));var controller=require(_0xf23e('0x2'));router[_0xf23e('0x3')](_0xf23e('0x4'),auth[_0xf23e('0x5')](),controller['update']);module[_0xf23e('0x6')]=router;
\ No newline at end of file
+var _0xe515=['put','isAuthenticated','update','exports','express','Router','../../components/auth/service','./user-setting.controller'];(function(_0x1ec75e,_0x4b354b){var _0x3ae39d=function(_0x1f428b){while(--_0x1f428b){_0x1ec75e['push'](_0x1ec75e['shift']());}};_0x3ae39d(++_0x4b354b);}(_0xe515,0x15c));var _0x5e51=function(_0x433aac,_0xe60ff7){_0x433aac=_0x433aac-0x0;var _0x22a7c2=_0xe515[_0x433aac];return _0x22a7c2;};'use strict';var express=require(_0x5e51('0x0'));var router=express[_0x5e51('0x1')]();var auth=require(_0x5e51('0x2'));var controller=require(_0x5e51('0x3'));router[_0x5e51('0x4')]('/:id',auth[_0x5e51('0x5')](),controller[_0x5e51('0x6')]);module[_0x5e51('0x7')]=router;
\ No newline at end of file
index 82a4c90..f151d78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb896=['ENUM','BOOLEAN','TEXT','UserId','sequelize','error','exports'];(function(_0x462999,_0x24d200){var _0x4b1366=function(_0x1fa353){while(--_0x1fa353){_0x462999['push'](_0x462999['shift']());}};_0x4b1366(++_0x24d200);}(_0xb896,0x1d2));var _0x6b89=function(_0x2300f2,_0x315c5f){_0x2300f2=_0x2300f2-0x0;var _0x6bd508=_0xb896[_0x2300f2];return _0x6bd508;};'use strict';var Sequelize=require(_0x6b89('0x0'));const CLIENT_SIDE_LOG_LEVELS=[_0x6b89('0x1'),'warning','info','debug'];module[_0x6b89('0x2')]={'clientSideLoggingLevel':{'type':Sequelize[_0x6b89('0x3')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':'error','validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize[_0x6b89('0x4')],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize[_0x6b89('0x5')],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize['DATE'],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize['INTEGER'],'unique':_0x6b89('0x6')}};
\ No newline at end of file
+var _0x9b4a=['sequelize','error','warning','info','debug','ENUM','TEXT','DATE'];(function(_0x281482,_0x3bfb86){var _0x2bb1f5=function(_0x195eb4){while(--_0x195eb4){_0x281482['push'](_0x281482['shift']());}};_0x2bb1f5(++_0x3bfb86);}(_0x9b4a,0x160));var _0xa9b4=function(_0x11c77a,_0x51c1f7){_0x11c77a=_0x11c77a-0x0;var _0x3778da=_0x9b4a[_0x11c77a];return _0x3778da;};'use strict';var Sequelize=require(_0xa9b4('0x0'));const CLIENT_SIDE_LOG_LEVELS=[_0xa9b4('0x1'),_0xa9b4('0x2'),_0xa9b4('0x3'),_0xa9b4('0x4')];module['exports']={'clientSideLoggingLevel':{'type':Sequelize[_0xa9b4('0x5')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0xa9b4('0x1'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize[_0xa9b4('0x6')],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0xa9b4('0x7')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize['INTEGER'],'unique':'UserId'}};
\ No newline at end of file
index 0500c4f..d9e86eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55e0=['name','send','update','user','role','admin','Unauthorized','params','UserSetting','find','body','catch','lodash','ioredis','../../config/logger','api','socket.io-emitter','redis','./user-setting.socket','register','defaults','status','json','then','sendStatus','stack'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0x55e0,0xdc));var _0x055e=function(_0x33fcfd,_0x2e4462){_0x33fcfd=_0x33fcfd-0x0;var _0x2976c0=_0x55e0[_0x33fcfd];return _0x2976c0;};'use strict';var _=require(_0x055e('0x0'));var Redis=require(_0x055e('0x1'));var logger=require(_0x055e('0x2'))(_0x055e('0x3'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];var socket=require(_0x055e('0x4'))(new Redis(config[_0x055e('0x5')]));require(_0x055e('0x6'))[_0x055e('0x7')](socket);config[_0x055e('0x5')]=_[_0x055e('0x8')](config['redis'],{'host':'localhost','port':0x18eb});function respondWithResult(_0x4384ff,_0x4a442e){_0x4a442e=_0x4a442e||0xc8;return function(_0x8e7824){if(_0x8e7824){return _0x4384ff[_0x055e('0x9')](_0x4a442e)[_0x055e('0xa')](_0x8e7824);}};}function saveUpdates(_0x230c32){return function(_0x444c82){if(_0x444c82){return _0x444c82['update'](_0x230c32)[_0x055e('0xb')](function(_0xd67814){return _0xd67814;});}return null;};}function handleEntityNotFound(_0xb816c){return function(_0xa0d384){if(!_0xa0d384){_0xb816c[_0x055e('0xc')](0x194);}return _0xa0d384;};}function handleError(_0x5237d9,_0x56c78a){_0x56c78a=_0x56c78a||0x1f4;return function(_0x187cce){logger['error'](_0x187cce[_0x055e('0xd')]);if(_0x187cce[_0x055e('0xe')]){delete _0x187cce[_0x055e('0xe')];}_0x5237d9[_0x055e('0x9')](_0x56c78a)[_0x055e('0xf')](_0x187cce);};}exports[_0x055e('0x10')]=function(_0x236a2b,_0x4bca5d){if(_0x236a2b[_0x055e('0x11')][_0x055e('0x12')]!==_0x055e('0x13'))throw new Error(_0x055e('0x14'));if(isNaN(Number(_0x236a2b[_0x055e('0x15')]['id'])))throw new Error('Invalid\x20user\x20setting\x20id');return db[_0x055e('0x16')][_0x055e('0x17')]({'where':{'id':_0x236a2b[_0x055e('0x15')]['id']}})['then'](handleEntityNotFound(_0x4bca5d,null))[_0x055e('0xb')](saveUpdates(_0x236a2b[_0x055e('0x18')],null))[_0x055e('0xb')](respondWithResult(_0x4bca5d,null))[_0x055e('0x19')](handleError(_0x4bca5d,null));};
\ No newline at end of file
+var _0x85b5=['sendStatus','stack','name','send','user','role','admin','Unauthorized','params','UserSetting','find','catch','lodash','ioredis','api','../../mysqldb','./user-setting.socket','redis','defaults','status','json','update','then'];(function(_0xbc52f9,_0x280162){var _0x109ea7=function(_0x2f59e4){while(--_0x2f59e4){_0xbc52f9['push'](_0xbc52f9['shift']());}};_0x109ea7(++_0x280162);}(_0x85b5,0x7f));var _0x585b=function(_0x37587a,_0x385c37){_0x37587a=_0x37587a-0x0;var _0x5c4ce8=_0x85b5[_0x37587a];return _0x5c4ce8;};'use strict';var _=require(_0x585b('0x0'));var Redis=require(_0x585b('0x1'));var logger=require('../../config/logger')(_0x585b('0x2'));var config=require('../../config/environment');var db=require(_0x585b('0x3'))['db'];var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x585b('0x4'))['register'](socket);config[_0x585b('0x5')]=_[_0x585b('0x6')](config[_0x585b('0x5')],{'host':'localhost','port':0x18eb});function respondWithResult(_0x1605b5,_0x55ffb3){_0x55ffb3=_0x55ffb3||0xc8;return function(_0x432e2d){if(_0x432e2d){return _0x1605b5[_0x585b('0x7')](_0x55ffb3)[_0x585b('0x8')](_0x432e2d);}};}function saveUpdates(_0x2d1220){return function(_0x5e795d){if(_0x5e795d){return _0x5e795d[_0x585b('0x9')](_0x2d1220)[_0x585b('0xa')](function(_0x430c16){return _0x430c16;});}return null;};}function handleEntityNotFound(_0x4d86cc){return function(_0x26cc9c){if(!_0x26cc9c){_0x4d86cc[_0x585b('0xb')](0x194);}return _0x26cc9c;};}function handleError(_0x2fbe30,_0x5dda1f){_0x5dda1f=_0x5dda1f||0x1f4;return function(_0x133d83){logger['error'](_0x133d83[_0x585b('0xc')]);if(_0x133d83['name']){delete _0x133d83[_0x585b('0xd')];}_0x2fbe30[_0x585b('0x7')](_0x5dda1f)[_0x585b('0xe')](_0x133d83);};}exports['update']=function(_0x2dcabd,_0x8f10b4){if(_0x2dcabd[_0x585b('0xf')][_0x585b('0x10')]!==_0x585b('0x11'))throw new Error(_0x585b('0x12'));if(isNaN(Number(_0x2dcabd[_0x585b('0x13')]['id'])))throw new Error('Invalid\x20user\x20setting\x20id');return db[_0x585b('0x14')][_0x585b('0x15')]({'where':{'id':_0x2dcabd['params']['id']}})['then'](handleEntityNotFound(_0x8f10b4,null))[_0x585b('0xa')](saveUpdates(_0x2dcabd['body'],null))['then'](respondWithResult(_0x8f10b4,null))[_0x585b('0x16')](handleError(_0x8f10b4,null));};
\ No newline at end of file
index 6dee9b6..2f8b43d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x683a=['hook','events','../../mysqldb','UserSetting','setMaxListeners','update','remove','emit'];(function(_0x2ceb31,_0x40ecf1){var _0x168859=function(_0x3de469){while(--_0x3de469){_0x2ceb31['push'](_0x2ceb31['shift']());}};_0x168859(++_0x40ecf1);}(_0x683a,0x1b9));var _0xa683=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x683a[_0x14add3];return _0x4a174f;};'use strict';var EventEmitter=require(_0xa683('0x0'));var UserSetting=require(_0xa683('0x1'))['db'][_0xa683('0x2')];var UserSettingEvents=new EventEmitter();UserSettingEvents[_0xa683('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xa683('0x4'),'afterDestroy':_0xa683('0x5')};function emitEvent(_0x3bcbcf){return function(_0xecced6,_0x5ef512,_0x4b9c70){UserSettingEvents[_0xa683('0x6')](_0x3bcbcf+':'+_0xecced6['id'],_0xecced6);UserSettingEvents[_0xa683('0x6')](_0x3bcbcf,_0xecced6);_0x4b9c70(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserSetting[_0xa683('0x7')](e,emitEvent(event));}}module['exports']=UserSettingEvents;
\ No newline at end of file
+var _0xb469=['events','../../mysqldb','UserSetting','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x92c450,_0x41f1e3){var _0x2a9599=function(_0x4f27df){while(--_0x4f27df){_0x92c450['push'](_0x92c450['shift']());}};_0x2a9599(++_0x41f1e3);}(_0xb469,0xdc));var _0x9b46=function(_0x1a9ecf,_0x1396c7){_0x1a9ecf=_0x1a9ecf-0x0;var _0x1e1d3a=_0xb469[_0x1a9ecf];return _0x1e1d3a;};'use strict';var EventEmitter=require(_0x9b46('0x0'));var UserSetting=require(_0x9b46('0x1'))['db'][_0x9b46('0x2')];var UserSettingEvents=new EventEmitter();UserSettingEvents[_0x9b46('0x3')](0x0);var events={'afterCreate':_0x9b46('0x4'),'afterUpdate':_0x9b46('0x5'),'afterDestroy':_0x9b46('0x6')};function emitEvent(_0x4fc14f){return function(_0x6a5546,_0x20b0c1,_0x21746c){UserSettingEvents['emit'](_0x4fc14f+':'+_0x6a5546['id'],_0x6a5546);UserSettingEvents[_0x9b46('0x7')](_0x4fc14f,_0x6a5546);_0x21746c(null);};}for(var e in events){if(events[_0x9b46('0x8')](e)){var event=events[e];UserSetting[_0x9b46('0x9')](e,emitEvent(event));}}module['exports']=UserSettingEvents;
\ No newline at end of file
index 5f9ac37..eadecb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf6e=['UserSetting','user_settings','clientSideLoggingEnabled','clientSideLoggingEnabledSince','define'];(function(_0x362a60,_0x281e47){var _0x519ba9=function(_0x476220){while(--_0x476220){_0x362a60['push'](_0x362a60['shift']());}};_0x519ba9(++_0x281e47);}(_0xbf6e,0x149));var _0xebf6=function(_0x8a6ed5,_0x240711){_0x8a6ed5=_0x8a6ed5-0x0;var _0x266757=_0xbf6e[_0x8a6ed5];return _0x266757;};'use strict';var attributes=require('./user-setting.attributes');module['exports']=function(_0x1f94d5){return _0x1f94d5[_0xebf6('0x0')](_0xebf6('0x1'),attributes,{'tableName':_0xebf6('0x2'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x473e65){if(!_0x473e65[_0xebf6('0x3')])_0x473e65[_0xebf6('0x4')]=null;else if(_0x473e65['clientSideLoggingEnabledSince']===null)_0x473e65[_0xebf6('0x4')]=new Date();}}});};
\ No newline at end of file
+var _0xf151=['clientSideLoggingEnabledSince','define','UserSetting','user_settings','clientSideLoggingEnabled'];(function(_0x1ebeea,_0x2f54f4){var _0x576465=function(_0x47fc77){while(--_0x47fc77){_0x1ebeea['push'](_0x1ebeea['shift']());}};_0x576465(++_0x2f54f4);}(_0xf151,0xab));var _0x1f15=function(_0x3fcfc0,_0x207995){_0x3fcfc0=_0x3fcfc0-0x0;var _0x33273a=_0xf151[_0x3fcfc0];return _0x33273a;};'use strict';var attributes=require('./user-setting.attributes');module['exports']=function(_0x3577b4){return _0x3577b4[_0x1f15('0x0')](_0x1f15('0x1'),attributes,{'tableName':_0x1f15('0x2'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x24018f){if(!_0x24018f[_0x1f15('0x3')])_0x24018f[_0x1f15('0x4')]=null;else if(_0x24018f[_0x1f15('0x4')]===null)_0x24018f['clientSideLoggingEnabledSince']=new Date();}}});};
\ No newline at end of file
index 21d7406..61925e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d85=['user-setting:update:user-','UserId','register','length','save','emit','user-setting:update'];(function(_0x4641e7,_0x198514){var _0x296a67=function(_0xb6312a){while(--_0xb6312a){_0x4641e7['push'](_0x4641e7['shift']());}};_0x296a67(++_0x198514);}(_0x9d85,0x115));var _0x59d8=function(_0x1cb0cc,_0x32ebdc){_0x1cb0cc=_0x1cb0cc-0x0;var _0xe8c93f=_0x9d85[_0x1cb0cc];return _0xe8c93f;};'use strict';var UserSettingEvents=require('./user-setting.events');var events=[_0x59d8('0x0'),'remove','update'];function createListener(_0x2685eb,_0x15a0ff){return function(_0x1e25a0){_0x15a0ff[_0x59d8('0x1')](_0x2685eb,_0x1e25a0);if(_0x2685eb===_0x59d8('0x2')){_0x15a0ff['emit'](_0x59d8('0x3')+_0x1e25a0[_0x59d8('0x4')],_0x1e25a0);}};}exports[_0x59d8('0x5')]=function(_0x116147){for(var _0x4907f7=0x0,_0x77ac4d=events[_0x59d8('0x6')];_0x4907f7<_0x77ac4d;_0x4907f7++){var _0x22e2dd=events[_0x4907f7];var _0x248320=createListener('user-setting:'+_0x22e2dd,_0x116147);UserSettingEvents['on'](_0x22e2dd,_0x248320);}};
\ No newline at end of file
+var _0xe692=['length','user-setting:','save','remove','update','UserId'];(function(_0x58b4b5,_0x5cd093){var _0x261db6=function(_0x5ac1c8){while(--_0x5ac1c8){_0x58b4b5['push'](_0x58b4b5['shift']());}};_0x261db6(++_0x5cd093);}(_0xe692,0x8c));var _0x2e69=function(_0x39e283,_0x247e6b){_0x39e283=_0x39e283-0x0;var _0x7de89f=_0xe692[_0x39e283];return _0x7de89f;};'use strict';var UserSettingEvents=require('./user-setting.events');var events=[_0x2e69('0x0'),_0x2e69('0x1'),_0x2e69('0x2')];function createListener(_0xc7ba6,_0x3d2001){return function(_0x1d8636){_0x3d2001['emit'](_0xc7ba6,_0x1d8636);if(_0xc7ba6==='user-setting:update'){_0x3d2001['emit']('user-setting:update:user-'+_0x1d8636[_0x2e69('0x3')],_0x1d8636);}};}exports['register']=function(_0x475cfc){for(var _0xbedcf1=0x0,_0x3fea2d=events[_0x2e69('0x4')];_0xbedcf1<_0x3fea2d;_0xbedcf1++){var _0x2f6d70=events[_0xbedcf1];var _0x1e1099=createListener(_0x2e69('0x5')+_0x2f6d70,_0x475cfc);UserSettingEvents['on'](_0x2f6d70,_0x1e1099);}};
\ No newline at end of file
index 71756a3..30b9926 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb88e=['getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getTeams','/:id/lists','/:id/agents','/:id/prefixes','getVoicePrefixes','/:id/mail_accounts','getMailAccounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/square_projects','getSquareProjects','/:id/scheduled_calls','getScheduledCalls','/:id/api_key','getApiKey','post','create','/create_many','addQueues','join','root','server/files/images/','format','%s-%s','now','originalname','single','file','addAvatar','login','logout','/:id/pause','pause','/:id/unpause','addTeams','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','/:id/fax_interactions','addFaxInteractions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','/:id/fax_accounts','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','addSmsAccounts','addChatWebsites','addWhatsappAccounts','put','update','/:id/password','changePassword','delete','destroy','removeChatInteractions','removeMailInteractions','removeFaxInteractions','/:id/sms_interactions','removeSmsInteractions','removeOpenchannelInteractions','removeFaxAccounts','removeMailAccounts','/:id/openchannel_accounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeSquareProjects','removeApiKey','exports','multer','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/presence','/:id','show','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','/:id/queues','getQueues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','/:id/recordings','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions','/:id/sms/interactions'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0xb88e,0x140));var _0xeb88=function(_0x121b7e,_0x52b03d){_0x121b7e=_0x121b7e-0x0;var _0x459ef9=_0xb88e[_0x121b7e];return _0x459ef9;};'use strict';var multer=require(_0xeb88('0x0'));var util=require('util');var path=require(_0xeb88('0x1'));var timeout=require(_0xeb88('0x2'));var express=require(_0xeb88('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xeb88('0x4'));var interaction=require(_0xeb88('0x5'));var config=require(_0xeb88('0x6'));var controller=require('./user.controller');router[_0xeb88('0x7')]('/',auth[_0xeb88('0x8')](),controller['index']);router['get'](_0xeb88('0x9'),auth[_0xeb88('0x8')](),controller[_0xeb88('0xa')]);router[_0xeb88('0x7')]('/whoami',auth[_0xeb88('0x8')](),controller['whoami']);router[_0xeb88('0x7')](_0xeb88('0xb'),auth[_0xeb88('0x8')](),controller['getPresence']);router[_0xeb88('0x7')](_0xeb88('0xc'),auth[_0xeb88('0x8')](),controller[_0xeb88('0xd')]);router[_0xeb88('0x7')](_0xeb88('0xe'),controller[_0xeb88('0xf')]);router['get'](_0xeb88('0x10'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x11')]);router['get'](_0xeb88('0x12'),auth[_0xeb88('0x8')](),controller['getContacts']);router[_0xeb88('0x7')](_0xeb88('0x13'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x14')]);router[_0xeb88('0x7')](_0xeb88('0x15'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x16')]);router[_0xeb88('0x7')](_0xeb88('0x17'),auth[_0xeb88('0x8')](),controller['getGroups']);router['get'](_0xeb88('0x18'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x19')]);router['get'](_0xeb88('0x1a'),auth['isAuthenticated'](),controller[_0xeb88('0x1b')]);router[_0xeb88('0x7')](_0xeb88('0x1c'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x1d')]);router[_0xeb88('0x7')](_0xeb88('0x1e'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x1f')]);router[_0xeb88('0x7')](_0xeb88('0x20'),auth[_0xeb88('0x8')](),controller['getMailInteractions']);router[_0xeb88('0x7')](_0xeb88('0x21'),auth['isAuthenticated'](),controller[_0xeb88('0x22')]);router[_0xeb88('0x7')](_0xeb88('0x23'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x24')]);router[_0xeb88('0x7')](_0xeb88('0x25'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x26')]);router[_0xeb88('0x7')](_0xeb88('0x27'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x28')]);router[_0xeb88('0x7')](_0xeb88('0x29'),auth[_0xeb88('0x8')](),controller['getLists']);router[_0xeb88('0x7')](_0xeb88('0x2a'),auth['isAuthenticated'](),controller['getAgents']);router[_0xeb88('0x7')](_0xeb88('0x2b'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x2c')]);router[_0xeb88('0x7')]('/:id/fax_accounts',auth[_0xeb88('0x8')](),controller['getFaxAccounts']);router[_0xeb88('0x7')](_0xeb88('0x2d'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x2e')]);router['get']('/:id/openchannel_accounts',auth[_0xeb88('0x8')](),controller[_0xeb88('0x2f')]);router['get'](_0xeb88('0x30'),auth['isAuthenticated'](),controller[_0xeb88('0x31')]);router[_0xeb88('0x7')](_0xeb88('0x32'),auth['isAuthenticated'](),controller[_0xeb88('0x33')]);router[_0xeb88('0x7')](_0xeb88('0x34'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x35')]);router['get'](_0xeb88('0x36'),auth['isAuthenticated'](),controller[_0xeb88('0x37')]);router[_0xeb88('0x7')](_0xeb88('0x38'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x39')]);router[_0xeb88('0x7')](_0xeb88('0x3a'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x3b')]);router[_0xeb88('0x3c')](_0xeb88('0x12'),auth[_0xeb88('0x8')](),controller['addContacts']);router[_0xeb88('0x3c')]('/',auth[_0xeb88('0x8')](),controller[_0xeb88('0x3d')]);router[_0xeb88('0x3c')](_0xeb88('0x3e'),auth[_0xeb88('0x8')](),controller['bulkCreate']);router['post']('/:id/queues',auth[_0xeb88('0x8')](),controller[_0xeb88('0x3f')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x198b91,_0x5ac15c,_0x29bf69){_0x29bf69(null,path[_0xeb88('0x40')](config[_0xeb88('0x41')],_0xeb88('0x42')));},'filename':function(_0x14611f,_0x554004,_0x2dbc63){_0x2dbc63(null,util[_0xeb88('0x43')](_0xeb88('0x44'),Date[_0xeb88('0x45')](),_0x554004[_0xeb88('0x46')]));}})});router[_0xeb88('0x3c')](_0xeb88('0xe'),upload[_0xeb88('0x47')](_0xeb88('0x48')),controller[_0xeb88('0x49')]);router[_0xeb88('0x3c')]('/:id/login',auth[_0xeb88('0x8')](),controller[_0xeb88('0x4a')]);router[_0xeb88('0x3c')]('/:id/logout',auth[_0xeb88('0x8')](),controller[_0xeb88('0x4b')]);router['post'](_0xeb88('0x4c'),auth['isAuthenticated'](),controller[_0xeb88('0x4d')]);router[_0xeb88('0x3c')](_0xeb88('0x4e'),auth[_0xeb88('0x8')](),controller['unpause']);router[_0xeb88('0x3c')](_0xeb88('0x27'),auth['isAuthenticated'](),controller[_0xeb88('0x4f')]);router[_0xeb88('0x3c')](_0xeb88('0x50'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x51')]);router[_0xeb88('0x3c')](_0xeb88('0x52'),auth[_0xeb88('0x8')](),controller['addMailInteractions']);router[_0xeb88('0x3c')](_0xeb88('0x53'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x54')]);router[_0xeb88('0x3c')]('/:id/sms_interactions',auth[_0xeb88('0x8')](),controller[_0xeb88('0x55')]);router[_0xeb88('0x3c')](_0xeb88('0x56'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x57')]);router[_0xeb88('0x3c')](_0xeb88('0x58'),auth['isAuthenticated'](),controller[_0xeb88('0x59')]);router['post'](_0xeb88('0x5a'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x5b')]);router[_0xeb88('0x3c')]('/:id/mail_accounts',auth['isAuthenticated'](),controller[_0xeb88('0x5c')]);router['post']('/:id/openchannel_accounts',auth[_0xeb88('0x8')](),controller[_0xeb88('0x5d')]);router[_0xeb88('0x3c')]('/:id/sms_accounts',auth[_0xeb88('0x8')](),controller[_0xeb88('0x5e')]);router[_0xeb88('0x3c')](_0xeb88('0x32'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x5f')]);router[_0xeb88('0x3c')](_0xeb88('0x34'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x60')]);router['post'](_0xeb88('0x36'),auth['isAuthenticated'](),controller['addSquareProjects']);router[_0xeb88('0x3c')]('/:id/api_key',auth[_0xeb88('0x8')](),controller['createApiKey']);router[_0xeb88('0x61')]('/:id',auth[_0xeb88('0x8')](),controller[_0xeb88('0x62')]);router[_0xeb88('0x61')](_0xeb88('0x63'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x64')]);router[_0xeb88('0x65')](_0xeb88('0x13'),auth[_0xeb88('0x8')](),controller['removeQueues']);router[_0xeb88('0x65')](_0xeb88('0x27'),auth[_0xeb88('0x8')](),controller['removeTeams']);router[_0xeb88('0x65')](_0xeb88('0xc'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x66')]);router[_0xeb88('0x65')](_0xeb88('0x50'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x67')]);router[_0xeb88('0x65')](_0xeb88('0x52'),auth['isAuthenticated'](),controller[_0xeb88('0x68')]);router[_0xeb88('0x65')](_0xeb88('0x53'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x69')]);router[_0xeb88('0x65')](_0xeb88('0x6a'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x6b')]);router[_0xeb88('0x65')]('/:id/openchannel_interactions',auth[_0xeb88('0x8')](),controller[_0xeb88('0x6c')]);router['delete']('/:id/whatsapp_interactions',auth[_0xeb88('0x8')](),controller['removeWhatsappInteractions']);router[_0xeb88('0x65')](_0xeb88('0x5a'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x6d')]);router[_0xeb88('0x65')](_0xeb88('0x2d'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x6e')]);router[_0xeb88('0x65')](_0xeb88('0x6f'),auth['isAuthenticated'](),controller[_0xeb88('0x70')]);router[_0xeb88('0x65')]('/:id/sms_accounts',auth[_0xeb88('0x8')](),controller[_0xeb88('0x71')]);router['delete']('/:id/chat_websites',auth[_0xeb88('0x8')](),controller[_0xeb88('0x72')]);router[_0xeb88('0x65')](_0xeb88('0x34'),auth[_0xeb88('0x8')](),controller['removeWhatsappAccounts']);router[_0xeb88('0x65')]('/:id/square_projects',auth['isAuthenticated'](),controller[_0xeb88('0x73')]);router['delete'](_0xeb88('0x3a'),auth[_0xeb88('0x8')](),controller[_0xeb88('0x74')]);module[_0xeb88('0x75')]=router;
\ No newline at end of file
+var _0x475d=['getSmsAccounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','/:id/square_projects','getSquareProjects','/:id/scheduled_calls','getScheduledCalls','getApiKey','addContacts','post','create','/create_many','bulkCreate','addQueues','diskStorage','join','root','server/files/images/','now','originalname','file','addAvatar','/:id/login','/:id/logout','/:id/pause','pause','/:id/unpause','unpause','/:id/teams','addTeams','/:id/chat_interactions','addChatInteractions','addMailInteractions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','addSmsAccounts','addChatWebsites','addWhatsappAccounts','addSquareProjects','createApiKey','put','update','/:id/password','changePassword','delete','removeQueues','removeTeams','destroy','removeChatInteractions','/:id/mail_interactions','removeFaxInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeFaxAccounts','removeOpenchannelAccounts','removeChatWebsites','removeWhatsappAccounts','removeSquareProjects','/:id/api_key','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./user.controller','get','isAuthenticated','index','/describe','describe','/whoami','whoami','/presence','getPresence','/:id','/:id/avatar','/:id/open_tabs','getOpenTabs','/:id/contacts','/:id/queues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','getGroups','/:id/recordings','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/fax/interactions','/:id/whatsapp/interactions','getWhatsappInteractions','getTeams','getLists','/:id/agents','getAgents','/:id/prefixes','/:id/fax_accounts','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts'];(function(_0x364211,_0x36d76d){var _0x75d191=function(_0x5a8601){while(--_0x5a8601){_0x364211['push'](_0x364211['shift']());}};_0x75d191(++_0x36d76d);}(_0x475d,0x136));var _0xd475=function(_0x2e04b6,_0xd8ff75){_0x2e04b6=_0x2e04b6-0x0;var _0x3ef5cc=_0x475d[_0x2e04b6];return _0x3ef5cc;};'use strict';var multer=require('multer');var util=require(_0xd475('0x0'));var path=require(_0xd475('0x1'));var timeout=require(_0xd475('0x2'));var express=require(_0xd475('0x3'));var router=express[_0xd475('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xd475('0x5'));var interaction=require(_0xd475('0x6'));var config=require(_0xd475('0x7'));var controller=require(_0xd475('0x8'));router[_0xd475('0x9')]('/',auth[_0xd475('0xa')](),controller[_0xd475('0xb')]);router[_0xd475('0x9')](_0xd475('0xc'),auth['isAuthenticated'](),controller[_0xd475('0xd')]);router[_0xd475('0x9')](_0xd475('0xe'),auth['isAuthenticated'](),controller[_0xd475('0xf')]);router['get'](_0xd475('0x10'),auth['isAuthenticated'](),controller[_0xd475('0x11')]);router[_0xd475('0x9')](_0xd475('0x12'),auth['isAuthenticated'](),controller['show']);router[_0xd475('0x9')](_0xd475('0x13'),controller['getAvatar']);router['get'](_0xd475('0x14'),auth[_0xd475('0xa')](),controller[_0xd475('0x15')]);router[_0xd475('0x9')](_0xd475('0x16'),auth[_0xd475('0xa')](),controller['getContacts']);router[_0xd475('0x9')](_0xd475('0x17'),auth[_0xd475('0xa')](),controller['getQueues']);router[_0xd475('0x9')](_0xd475('0x18'),auth[_0xd475('0xa')](),controller[_0xd475('0x19')]);router[_0xd475('0x9')](_0xd475('0x1a'),auth['isAuthenticated'](),controller[_0xd475('0x1b')]);router[_0xd475('0x9')](_0xd475('0x1c'),auth[_0xd475('0xa')](),controller[_0xd475('0x1d')]);router[_0xd475('0x9')](_0xd475('0x1e'),auth[_0xd475('0xa')](),controller[_0xd475('0x1f')]);router[_0xd475('0x9')](_0xd475('0x20'),auth[_0xd475('0xa')](),controller[_0xd475('0x21')]);router[_0xd475('0x9')](_0xd475('0x22'),auth[_0xd475('0xa')](),controller[_0xd475('0x23')]);router['get']('/:id/mail/interactions',auth[_0xd475('0xa')](),controller['getMailInteractions']);router[_0xd475('0x9')]('/:id/sms/interactions',auth[_0xd475('0xa')](),controller['getSmsInteractions']);router[_0xd475('0x9')](_0xd475('0x24'),auth[_0xd475('0xa')](),controller['getFaxInteractions']);router[_0xd475('0x9')](_0xd475('0x25'),auth[_0xd475('0xa')](),controller[_0xd475('0x26')]);router['get']('/:id/teams',auth['isAuthenticated'](),controller[_0xd475('0x27')]);router[_0xd475('0x9')]('/:id/lists',auth[_0xd475('0xa')](),controller[_0xd475('0x28')]);router[_0xd475('0x9')](_0xd475('0x29'),auth[_0xd475('0xa')](),controller[_0xd475('0x2a')]);router[_0xd475('0x9')](_0xd475('0x2b'),auth[_0xd475('0xa')](),controller['getVoicePrefixes']);router['get'](_0xd475('0x2c'),auth[_0xd475('0xa')](),controller['getFaxAccounts']);router[_0xd475('0x9')](_0xd475('0x2d'),auth[_0xd475('0xa')](),controller[_0xd475('0x2e')]);router[_0xd475('0x9')](_0xd475('0x2f'),auth[_0xd475('0xa')](),controller[_0xd475('0x30')]);router['get'](_0xd475('0x31'),auth[_0xd475('0xa')](),controller[_0xd475('0x32')]);router[_0xd475('0x9')](_0xd475('0x33'),auth[_0xd475('0xa')](),controller[_0xd475('0x34')]);router[_0xd475('0x9')](_0xd475('0x35'),auth[_0xd475('0xa')](),controller['getWhatsappAccounts']);router['get'](_0xd475('0x36'),auth[_0xd475('0xa')](),controller[_0xd475('0x37')]);router['get'](_0xd475('0x38'),auth['isAuthenticated'](),controller[_0xd475('0x39')]);router[_0xd475('0x9')]('/:id/api_key',auth['isAuthenticated'](),controller[_0xd475('0x3a')]);router['post'](_0xd475('0x16'),auth['isAuthenticated'](),controller[_0xd475('0x3b')]);router[_0xd475('0x3c')]('/',auth['isAuthenticated'](),controller[_0xd475('0x3d')]);router['post'](_0xd475('0x3e'),auth[_0xd475('0xa')](),controller[_0xd475('0x3f')]);router[_0xd475('0x3c')]('/:id/queues',auth[_0xd475('0xa')](),controller[_0xd475('0x40')]);var upload=multer({'storage':multer[_0xd475('0x41')]({'destination':function(_0x101dca,_0xecfa3c,_0x374b32){_0x374b32(null,path[_0xd475('0x42')](config[_0xd475('0x43')],_0xd475('0x44')));},'filename':function(_0x342cbd,_0xda1c6c,_0x4e259e){_0x4e259e(null,util['format']('%s-%s',Date[_0xd475('0x45')](),_0xda1c6c[_0xd475('0x46')]));}})});router['post'](_0xd475('0x13'),upload['single'](_0xd475('0x47')),controller[_0xd475('0x48')]);router['post'](_0xd475('0x49'),auth['isAuthenticated'](),controller['login']);router[_0xd475('0x3c')](_0xd475('0x4a'),auth[_0xd475('0xa')](),controller['logout']);router['post'](_0xd475('0x4b'),auth[_0xd475('0xa')](),controller[_0xd475('0x4c')]);router['post'](_0xd475('0x4d'),auth[_0xd475('0xa')](),controller[_0xd475('0x4e')]);router['post'](_0xd475('0x4f'),auth[_0xd475('0xa')](),controller[_0xd475('0x50')]);router['post'](_0xd475('0x51'),auth[_0xd475('0xa')](),controller[_0xd475('0x52')]);router[_0xd475('0x3c')]('/:id/mail_interactions',auth['isAuthenticated'](),controller[_0xd475('0x53')]);router[_0xd475('0x3c')](_0xd475('0x54'),auth[_0xd475('0xa')](),controller[_0xd475('0x55')]);router[_0xd475('0x3c')](_0xd475('0x56'),auth[_0xd475('0xa')](),controller[_0xd475('0x57')]);router['post'](_0xd475('0x58'),auth[_0xd475('0xa')](),controller[_0xd475('0x59')]);router['post'](_0xd475('0x5a'),auth[_0xd475('0xa')](),controller[_0xd475('0x5b')]);router['post']('/:id/fax_accounts',auth[_0xd475('0xa')](),controller[_0xd475('0x5c')]);router[_0xd475('0x3c')](_0xd475('0x2d'),auth[_0xd475('0xa')](),controller[_0xd475('0x5d')]);router[_0xd475('0x3c')]('/:id/openchannel_accounts',auth[_0xd475('0xa')](),controller[_0xd475('0x5e')]);router['post'](_0xd475('0x31'),auth[_0xd475('0xa')](),controller[_0xd475('0x5f')]);router['post'](_0xd475('0x33'),auth['isAuthenticated'](),controller[_0xd475('0x60')]);router[_0xd475('0x3c')](_0xd475('0x35'),auth[_0xd475('0xa')](),controller[_0xd475('0x61')]);router[_0xd475('0x3c')](_0xd475('0x36'),auth[_0xd475('0xa')](),controller[_0xd475('0x62')]);router[_0xd475('0x3c')]('/:id/api_key',auth[_0xd475('0xa')](),controller[_0xd475('0x63')]);router[_0xd475('0x64')](_0xd475('0x12'),auth[_0xd475('0xa')](),controller[_0xd475('0x65')]);router[_0xd475('0x64')](_0xd475('0x66'),auth['isAuthenticated'](),controller[_0xd475('0x67')]);router[_0xd475('0x68')](_0xd475('0x17'),auth[_0xd475('0xa')](),controller[_0xd475('0x69')]);router[_0xd475('0x68')]('/:id/teams',auth[_0xd475('0xa')](),controller[_0xd475('0x6a')]);router[_0xd475('0x68')](_0xd475('0x12'),auth[_0xd475('0xa')](),controller[_0xd475('0x6b')]);router[_0xd475('0x68')]('/:id/chat_interactions',auth[_0xd475('0xa')](),controller[_0xd475('0x6c')]);router['delete'](_0xd475('0x6d'),auth[_0xd475('0xa')](),controller['removeMailInteractions']);router[_0xd475('0x68')](_0xd475('0x54'),auth[_0xd475('0xa')](),controller[_0xd475('0x6e')]);router[_0xd475('0x68')](_0xd475('0x56'),auth[_0xd475('0xa')](),controller[_0xd475('0x6f')]);router[_0xd475('0x68')](_0xd475('0x58'),auth[_0xd475('0xa')](),controller[_0xd475('0x70')]);router[_0xd475('0x68')](_0xd475('0x5a'),auth['isAuthenticated'](),controller['removeWhatsappInteractions']);router[_0xd475('0x68')](_0xd475('0x2c'),auth[_0xd475('0xa')](),controller[_0xd475('0x71')]);router[_0xd475('0x68')](_0xd475('0x2d'),auth[_0xd475('0xa')](),controller['removeMailAccounts']);router[_0xd475('0x68')](_0xd475('0x2f'),auth['isAuthenticated'](),controller[_0xd475('0x72')]);router['delete'](_0xd475('0x31'),auth[_0xd475('0xa')](),controller['removeSmsAccounts']);router[_0xd475('0x68')](_0xd475('0x33'),auth[_0xd475('0xa')](),controller[_0xd475('0x73')]);router[_0xd475('0x68')](_0xd475('0x35'),auth[_0xd475('0xa')](),controller[_0xd475('0x74')]);router[_0xd475('0x68')](_0xd475('0x36'),auth[_0xd475('0xa')](),controller[_0xd475('0x75')]);router[_0xd475('0x68')](_0xd475('0x76'),auth[_0xd475('0xa')](),controller['removeApiKey']);module[_0xd475('0x77')]=router;
\ No newline at end of file
index 14565c3..9804292 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['get','udp','encryption','avpf','force_avp','icesupport','dtlscertfile','dtlsprivatekey','wss','dtlsenable','dtlsverify','dtlssetup','actpass','/etc/pki/tls/certs/motion.crt','rtcp_mux','permissions','phoneBarEnableScreenRecordingByAgent','string','false','screenrecording','blocked','loginAttempts','blockedAt','UNSIGNED','util','lodash','exports','STRING','name','setDataValue','The\x20name\x20of\x20the\x20user','fullname','callerid','format','\x22%s\x22\x20<%s>','getDataValue','email','admin','user','telephone','local','INTEGER','internal','accountcode','DATE','BOOLEAN','DEFAULT\x20PAUSE','dynamic','ENUM','friend','peer','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','inband','yes','nonat','update','outgoing','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]','\x22\x22\x20<>','accept','refuse','originate','uac','uas','fingerprint','certificate','active','update,nonat','TEXT'];(function(_0x26462c,_0xd20a35){var _0x509a42=function(_0x1b22c9){while(--_0x1b22c9){_0x26462c['push'](_0x26462c['shift']());}};_0x509a42(++_0xd20a35);}(_0x9c44,0x178));var _0x49c4=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0x9c44[_0x45d55e];return _0x29812a;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');var util=require(_0x49c4('0x0'));var _=require(_0x49c4('0x1'));module[_0x49c4('0x2')]={'name':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'unique':_0x49c4('0x4'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x2ad237){this['setDataValue']('name',_0x2ad237);this[_0x49c4('0x5')]('defaultuser',_0x2ad237);},'comment':_0x49c4('0x6')},'fullname':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'set':function(_0x69bc41){this[_0x49c4('0x5')](_0x49c4('0x7'),_0x69bc41);this['setDataValue'](_0x49c4('0x8'),util[_0x49c4('0x9')](_0x49c4('0xa'),_0x69bc41,this[_0x49c4('0xb')]('internal')));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'unique':_0x49c4('0xc'),'validate':{'isEmail':!![]},'set':function(_0x58cad7){if(_0x58cad7){this[_0x49c4('0x5')](_0x49c4('0xc'),_0x58cad7['toLowerCase']());}}},'role':{'type':Sequelize['ENUM'](_0x49c4('0xd'),_0x49c4('0xe'),'agent',_0x49c4('0xf')),'allowNull':![]},'password':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':_0x49c4('0x10')},'internal':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':![],'unique':_0x49c4('0x12'),'set':function(_0x2decee){this[_0x49c4('0x5')](_0x49c4('0x12'),_0x2decee);this[_0x49c4('0x5')](_0x49c4('0x13'),_0x2decee);this['setDataValue'](_0x49c4('0x8'),util[_0x49c4('0x9')](_0x49c4('0xa'),this[_0x49c4('0xb')](_0x49c4('0x7')),_0x2decee));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x49c4('0x3')]},'mobile':{'type':Sequelize[_0x49c4('0x3')]},'address':{'type':Sequelize['STRING']},'zipcode':{'type':Sequelize['STRING']},'userpic':{'type':Sequelize[_0x49c4('0x3')]},'city':{'type':Sequelize[_0x49c4('0x3')]},'country':{'type':Sequelize[_0x49c4('0x3')]},'online':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x49c4('0x14')]},'voicePause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x49c4('0x3')],'defaultValue':_0x49c4('0x16')},'lastPauseAt':{'type':Sequelize[_0x49c4('0x14')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x49c4('0x11')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x49c4('0x11')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize['INTEGER'],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'chanspy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'host':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'defaultValue':_0x49c4('0x17')},'ipaddr':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'port':{'type':Sequelize['INTEGER'](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x19'),'user',_0x49c4('0x1a')),'allowNull':!![],'defaultValue':_0x49c4('0x19')},'context':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'defaultValue':_0x49c4('0x1b')},'callingpres':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x1c'),_0x49c4('0x1d'),_0x49c4('0x1e'),_0x49c4('0x1f'),_0x49c4('0x20'),_0x49c4('0x21'),'PROHIB_FAILED_SCREEN','PROHIB'),'allowNull':!![]},'deny':{'type':Sequelize['STRING'],'allowNull':!![]},'permit':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'secret':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'transport':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'defaultValue':'udp','set':function(_0x38ad77){this[_0x49c4('0x5')](_0x49c4('0x22'),_0x38ad77?_0x38ad77[_0x49c4('0x23')](','):null);},'get':function(){return this['getDataValue']('transport')?this[_0x49c4('0xb')](_0x49c4('0x22'))[_0x49c4('0x24')](','):null;},'comment':_0x49c4('0x25')},'dtmfmode':{'type':Sequelize[_0x49c4('0x18')]('rfc2833',_0x49c4('0x26'),_0x49c4('0x27'),_0x49c4('0x28'),'auto'),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no',_0x49c4('0x2a'),_0x49c4('0x2b'),_0x49c4('0x2c')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'nat':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x49c4('0x2d'),'set':function(_0x5b96df){this[_0x49c4('0x5')](_0x49c4('0x2e'),_0x5b96df?_0x5b96df[_0x49c4('0x23')](','):null);},'get':function(){return this[_0x49c4('0xb')]('nat')?this[_0x49c4('0xb')](_0x49c4('0x2e'))[_0x49c4('0x24')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0x49c4('0x3')]},'namedcallgroup':{'type':Sequelize[_0x49c4('0x3')]},'pickupgroup':{'type':Sequelize[_0x49c4('0x3')]},'namedpickupgroup':{'type':Sequelize[_0x49c4('0x3')]},'language':{'type':Sequelize[_0x49c4('0x3')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x49c4('0x3')]},'disallow':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'defaultValue':_0x49c4('0x2f')},'allow':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'defaultValue':_0x49c4('0x30'),'set':function(_0x1e506a){this['setDataValue'](_0x49c4('0x31'),_0x1e506a?_0x1e506a[_0x49c4('0x23')](';'):_0x49c4('0x30'));},'get':function(){return this[_0x49c4('0xb')](_0x49c4('0x31'))?this[_0x49c4('0xb')](_0x49c4('0x31'))[_0x49c4('0x24')](';'):null;},'comment':_0x49c4('0x32')},'autoframing':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'set':function(_0x326142){this['setDataValue'](_0x49c4('0x33'),_0x326142?_0x326142['join'](','):null);},'get':function(){return this[_0x49c4('0xb')](_0x49c4('0x33'))?this[_0x49c4('0xb')](_0x49c4('0x33'))[_0x49c4('0x24')](','):null;},'comment':_0x49c4('0x34')},'trustrpid':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'defaultValue':_0x49c4('0x35')},'amaflags':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'callcounter':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'template':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no','always'),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x36'),_0x49c4('0x37'),_0x49c4('0x38')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x39'),'uas'),'allowNull':!![],'defaultValue':_0x49c4('0x3a')},'t38pt_usertpsource':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'fromuser':{'type':Sequelize['STRING'],'allowNull':!![]},'qualify':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x49c4('0x18')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'maxforwards':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x49c4('0x18')]('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no',_0x49c4('0x3b'),_0x49c4('0x3c')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x3d'),'passive','actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x49c4('0x18')]('yes','no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize['STRING'],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'mohsuggest':{'type':Sequelize['STRING'],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no',_0x49c4('0x2a'),_0x49c4('0x2b'),_0x49c4('0x3e')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x49c4('0x3')]},'resetPasswordExpires':{'type':Sequelize['DATE']},'passwordResetAt':{'type':Sequelize[_0x49c4('0x14')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x49c4('0x3f')]},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x10dec7){this[_0x49c4('0x5')]('showWebBar',_0x10dec7);var _0x39c455=this[_0x49c4('0x40')]({'plain':!![]});switch(_0x10dec7){case 0x0:case 0x1:var _0x4f50bf=_0x39c455['transport']?_['isArray'](_0x39c455['transport'])?_0x39c455[_0x49c4('0x22')]['join']():_0x39c455[_0x49c4('0x22')]:_0x49c4('0x41');if(_0x4f50bf==='wss'){_0x4f50bf=_0x49c4('0x41');}this[_0x49c4('0x5')]('transport',_0x4f50bf);this[_0x49c4('0x5')](_0x49c4('0x42'),'no');this[_0x49c4('0x5')](_0x49c4('0x43'),null);this['setDataValue'](_0x49c4('0x44'),null);this[_0x49c4('0x5')](_0x49c4('0x45'),null);this[_0x49c4('0x5')]('dtlsenable',null);this[_0x49c4('0x5')]('dtlsverify',null);this['setDataValue']('dtlssetup',null);this['setDataValue'](_0x49c4('0x46'),null);this[_0x49c4('0x5')](_0x49c4('0x47'),null);this[_0x49c4('0x5')]('rtcp_mux','no');break;case 0x2:this['setDataValue'](_0x49c4('0x22'),_0x49c4('0x48'));this[_0x49c4('0x5')](_0x49c4('0x42'),_0x49c4('0x29'));this[_0x49c4('0x5')](_0x49c4('0x43'),_0x49c4('0x29'));this['setDataValue'](_0x49c4('0x44'),'yes');this[_0x49c4('0x5')](_0x49c4('0x45'),_0x49c4('0x29'));this[_0x49c4('0x5')](_0x49c4('0x49'),_0x49c4('0x29'));this[_0x49c4('0x5')](_0x49c4('0x4a'),'no');this[_0x49c4('0x5')](_0x49c4('0x4b'),_0x49c4('0x4c'));this[_0x49c4('0x5')](_0x49c4('0x46'),_0x39c455[_0x49c4('0x46')]||_0x49c4('0x4d'));this[_0x49c4('0x5')](_0x49c4('0x47'),_0x39c455[_0x49c4('0x47')]||'/etc/pki/tls/private/motion.key');this['setDataValue'](_0x49c4('0x4e'),_0x49c4('0x29'));break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0x1a15f3){this[_0x49c4('0x5')](_0x49c4('0x4f'),_0x1a15f3?_0x1a15f3[_0x49c4('0x23')](','):[]);},'get':function(){return this['getDataValue']('permissions')?_['map'](this[_0x49c4('0xb')](_0x49c4('0x4f'))[_0x49c4('0x24')](','),function(_0x2f4289){return parseInt(_0x2f4289,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x49c4('0x3')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x49c4('0x3')]},'phoneBarBusyNumber':{'type':Sequelize[_0x49c4('0x3')]},'phoneBarUnconditional':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x49c4('0x3')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x49c4('0x3')]},'phoneBarEnableJaws':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x49c4('0xb')](_0x49c4('0x50'))?this[_0x49c4('0xb')](_0x49c4('0x50')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hotdesk':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'interface':{'type':Sequelize[_0x49c4('0x3')],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize['STRING'],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![],'set':function(_0x27b77d){if(typeof _0x27b77d===_0x49c4('0x51')){var _0x34870e=_0x27b77d==='1'?!![]:_0x27b77d==='0'?![]:_0x27b77d==='true'?!![]:_0x27b77d===_0x49c4('0x52')?![]:![];this[_0x49c4('0x5')](_0x49c4('0x53'),_0x34870e);}else{this[_0x49c4('0x5')](_0x49c4('0x53'),_0x27b77d);}}},'blocked':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![],'set':function(_0x38b291){this[_0x49c4('0x5')](_0x49c4('0x54'),_0x38b291);if(_0x38b291===!![]){this[_0x49c4('0x5')]('blockedAt',moment());this[_0x49c4('0x5')](_0x49c4('0x55'),0x0);}else{this['setDataValue'](_0x49c4('0x56'),null);}}},'blockedAt':{'type':Sequelize['DATE'],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x49c4('0x11')](0x5)[_0x49c4('0x57')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xcb91=['toLowerCase','ENUM','admin','user','local','INTEGER','accountcode','\x22%s\x22\x20<%s>','getDataValue','BOOLEAN','DATE','DEFAULT\x20PAUSE','dynamic','friend','peer','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','yes','nonat','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','allow','ulaw;alaw;gsm','insecure','never','always','accept','originate','uac','uas','fingerprint','certificate','active','passive','update','showWebBar','get','isArray','encryption','avpf','icesupport','dtlsverify','dtlssetup','rtcp_mux','wss','force_avp','dtlscertfile','/etc/pki/tls/certs/motion.crt','dtlsprivatekey','/etc/pki/tls/private/motion.key','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blockedAt','loginAttempts','UNSIGNED','util','lodash','exports','STRING','setDataValue','defaultuser','fullname','format','internal','email'];(function(_0x489d0e,_0x408934){var _0x5d49d0=function(_0x25f393){while(--_0x25f393){_0x489d0e['push'](_0x489d0e['shift']());}};_0x5d49d0(++_0x408934);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x53bcc3,_0x364374){_0x53bcc3=_0x53bcc3-0x0;var _0x47c959=_0xcb91[_0x53bcc3];return _0x47c959;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');var util=require(_0x1cb9('0x0'));var _=require(_0x1cb9('0x1'));module[_0x1cb9('0x2')]={'name':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x8c392f){this[_0x1cb9('0x4')]('name',_0x8c392f);this[_0x1cb9('0x4')](_0x1cb9('0x5'),_0x8c392f);},'comment':'The\x20name\x20of\x20the\x20user'},'fullname':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':![],'set':function(_0x3f7deb){this['setDataValue'](_0x1cb9('0x6'),_0x3f7deb);this[_0x1cb9('0x4')]('callerid',util[_0x1cb9('0x7')]('\x22%s\x22\x20<%s>',_0x3f7deb,this['getDataValue'](_0x1cb9('0x8'))));}},'alias':{'type':Sequelize[_0x1cb9('0x3')]},'email':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':![],'unique':_0x1cb9('0x9'),'validate':{'isEmail':!![]},'set':function(_0x2fc627){if(_0x2fc627){this['setDataValue'](_0x1cb9('0x9'),_0x2fc627[_0x1cb9('0xa')]());}}},'role':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0xc'),_0x1cb9('0xd'),'agent','telephone'),'allowNull':![]},'password':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x1cb9('0x3')],'defaultValue':_0x1cb9('0xe')},'internal':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':![],'unique':_0x1cb9('0x8'),'set':function(_0x56884d){this[_0x1cb9('0x4')](_0x1cb9('0x8'),_0x56884d);this[_0x1cb9('0x4')](_0x1cb9('0x10'),_0x56884d);this[_0x1cb9('0x4')]('callerid',util['format'](_0x1cb9('0x11'),this[_0x1cb9('0x12')](_0x1cb9('0x6')),_0x56884d));}},'salt':{'type':Sequelize[_0x1cb9('0x3')]},'phone':{'type':Sequelize[_0x1cb9('0x3')]},'mobile':{'type':Sequelize[_0x1cb9('0x3')]},'address':{'type':Sequelize[_0x1cb9('0x3')]},'zipcode':{'type':Sequelize['STRING']},'userpic':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0x1cb9('0x3')]},'country':{'type':Sequelize[_0x1cb9('0x3')]},'online':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x1cb9('0x14')]},'voicePause':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'faxPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'openchannelPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x1cb9('0x3')],'defaultValue':_0x1cb9('0x15')},'lastPauseAt':{'type':Sequelize['DATE']},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x1cb9('0xf')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'description':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'host':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x1cb9('0x16')},'ipaddr':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'port':{'type':Sequelize['INTEGER'](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'regserver':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'useragent':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x17'),_0x1cb9('0xd'),_0x1cb9('0x18')),'allowNull':!![],'defaultValue':_0x1cb9('0x17')},'context':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x1cb9('0x19')},'callingpres':{'type':Sequelize['ENUM'](_0x1cb9('0x1a'),'ALLOWED_PASSED_SCREEN',_0x1cb9('0x1b'),_0x1cb9('0x1c'),_0x1cb9('0x1d'),_0x1cb9('0x1e'),'PROHIB_FAILED_SCREEN',_0x1cb9('0x1f')),'allowNull':!![]},'deny':{'type':Sequelize['STRING'],'allowNull':!![]},'permit':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'secret':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'remotesecret':{'type':Sequelize['STRING'],'allowNull':!![]},'transport':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![],'defaultValue':'udp','set':function(_0x3a3543){this['setDataValue'](_0x1cb9('0x20'),_0x3a3543?_0x3a3543[_0x1cb9('0x21')](','):null);},'get':function(){return this[_0x1cb9('0x12')](_0x1cb9('0x20'))?this['getDataValue'](_0x1cb9('0x20'))[_0x1cb9('0x22')](','):null;},'comment':_0x1cb9('0x23')},'dtmfmode':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x24'),_0x1cb9('0x25'),_0x1cb9('0x26'),_0x1cb9('0x27'),_0x1cb9('0x28')),'allowNull':!![],'defaultValue':_0x1cb9('0x24')},'directmedia':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no',_0x1cb9('0x2a'),'update','outgoing'),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'nat':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![],'defaultValue':_0x1cb9('0x2b'),'set':function(_0x35f5e8){this[_0x1cb9('0x4')]('nat',_0x35f5e8?_0x35f5e8[_0x1cb9('0x21')](','):null);},'get':function(){return this[_0x1cb9('0x12')](_0x1cb9('0x2c'))?this['getDataValue'](_0x1cb9('0x2c'))['split'](','):null;},'comment':_0x1cb9('0x2d')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0x1cb9('0x3')]},'pickupgroup':{'type':Sequelize[_0x1cb9('0x3')]},'namedpickupgroup':{'type':Sequelize[_0x1cb9('0x3')]},'language':{'type':Sequelize[_0x1cb9('0x3')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x1cb9('0x3')]},'disallow':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':![],'defaultValue':_0x1cb9('0x2e')},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x4111b8){this[_0x1cb9('0x4')](_0x1cb9('0x2f'),_0x4111b8?_0x4111b8[_0x1cb9('0x21')](';'):_0x1cb9('0x30'));},'get':function(){return this[_0x1cb9('0x12')](_0x1cb9('0x2f'))?this['getDataValue'](_0x1cb9('0x2f'))['split'](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize['ENUM'](_0x1cb9('0x29'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![],'set':function(_0x1bf51c){this[_0x1cb9('0x4')](_0x1cb9('0x31'),_0x1bf51c?_0x1bf51c['join'](','):null);},'get':function(){return this[_0x1cb9('0x12')]('insecure')?this[_0x1cb9('0x12')](_0x1cb9('0x31'))[_0x1cb9('0x22')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0x1cb9('0xb')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM']('yes','no',_0x1cb9('0x32')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'callerid':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize['STRING'],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':_0x1cb9('0x29')},'busylevel':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x1cb9('0xb')]('yes','no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'template':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x1cb9('0xb')]('yes','no',_0x1cb9('0x33')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'session_timers':{'type':Sequelize['ENUM'](_0x1cb9('0x34'),'refuse',_0x1cb9('0x35')),'allowNull':!![]},'session_expires':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x36'),_0x1cb9('0x37')),'allowNull':!![],'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':_0x1cb9('0x29')},'keepalive':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'contactacl':{'type':Sequelize['STRING'],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize['STRING'],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x1cb9('0xb')]('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize['ENUM']('yes','no',_0x1cb9('0x38'),_0x1cb9('0x39')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'dtlscapath':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x3a'),_0x1cb9('0x3b'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize['ENUM'](_0x1cb9('0x29'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no',_0x1cb9('0x2a'),_0x1cb9('0x3c'),'update,nonat'),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x1cb9('0x3')]},'resetPasswordExpires':{'type':Sequelize[_0x1cb9('0x14')]},'passwordResetAt':{'type':Sequelize[_0x1cb9('0x14')],'defaultValue':null},'previousPasswords':{'type':Sequelize['TEXT']},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x319358){this[_0x1cb9('0x4')](_0x1cb9('0x3d'),_0x319358);var _0x173db5=this[_0x1cb9('0x3e')]({'plain':!![]});switch(_0x319358){case 0x0:case 0x1:var _0x75c734=_0x173db5[_0x1cb9('0x20')]?_[_0x1cb9('0x3f')](_0x173db5['transport'])?_0x173db5['transport'][_0x1cb9('0x21')]():_0x173db5['transport']:'udp';if(_0x75c734==='wss'){_0x75c734='udp';}this['setDataValue'](_0x1cb9('0x20'),_0x75c734);this[_0x1cb9('0x4')](_0x1cb9('0x40'),'no');this[_0x1cb9('0x4')](_0x1cb9('0x41'),null);this[_0x1cb9('0x4')]('force_avp',null);this[_0x1cb9('0x4')](_0x1cb9('0x42'),null);this['setDataValue']('dtlsenable',null);this[_0x1cb9('0x4')](_0x1cb9('0x43'),null);this[_0x1cb9('0x4')](_0x1cb9('0x44'),null);this[_0x1cb9('0x4')]('dtlscertfile',null);this['setDataValue']('dtlsprivatekey',null);this[_0x1cb9('0x4')](_0x1cb9('0x45'),'no');break;case 0x2:this[_0x1cb9('0x4')](_0x1cb9('0x20'),_0x1cb9('0x46'));this['setDataValue'](_0x1cb9('0x40'),_0x1cb9('0x29'));this['setDataValue']('avpf',_0x1cb9('0x29'));this['setDataValue'](_0x1cb9('0x47'),_0x1cb9('0x29'));this[_0x1cb9('0x4')](_0x1cb9('0x42'),_0x1cb9('0x29'));this[_0x1cb9('0x4')]('dtlsenable',_0x1cb9('0x29'));this[_0x1cb9('0x4')](_0x1cb9('0x43'),'no');this[_0x1cb9('0x4')]('dtlssetup','actpass');this[_0x1cb9('0x4')](_0x1cb9('0x48'),_0x173db5[_0x1cb9('0x48')]||_0x1cb9('0x49'));this[_0x1cb9('0x4')](_0x1cb9('0x4a'),_0x173db5['dtlsprivatekey']||_0x1cb9('0x4b'));this['setDataValue'](_0x1cb9('0x45'),_0x1cb9('0x29'));break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0xf5b006){this[_0x1cb9('0x4')](_0x1cb9('0x4c'),_0xf5b006?_0xf5b006['join'](','):[]);},'get':function(){return this[_0x1cb9('0x12')](_0x1cb9('0x4c'))?_[_0x1cb9('0x4d')](this[_0x1cb9('0x12')](_0x1cb9('0x4c'))[_0x1cb9('0x22')](','),function(_0x5a3f1d){return parseInt(_0x5a3f1d,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x1cb9('0x3')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x1cb9('0x3')]},'phoneBarBusyNumber':{'type':Sequelize[_0x1cb9('0x3')]},'phoneBarUnconditional':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x1cb9('0x3')],'defaultValue':''},'crudPermissions':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x1cb9('0xb')]('yes','no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize['STRING']},'phoneBarEnableJaws':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x1cb9('0x4e')],'get':function(){return this['getDataValue'](_0x1cb9('0x4f'))?this['getDataValue'](_0x1cb9('0x4f')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'interface':{'type':Sequelize['STRING'],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![],'set':function(_0x4f8d74){if(typeof _0x4f8d74===_0x1cb9('0x50')){var _0x4cb014=_0x4f8d74==='1'?!![]:_0x4f8d74==='0'?![]:_0x4f8d74===_0x1cb9('0x51')?!![]:_0x4f8d74===_0x1cb9('0x52')?![]:![];this[_0x1cb9('0x4')](_0x1cb9('0x53'),_0x4cb014);}else{this[_0x1cb9('0x4')](_0x1cb9('0x53'),_0x4f8d74);}}},'blocked':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x3db146){this[_0x1cb9('0x4')]('blocked',_0x3db146);if(_0x3db146===!![]){this[_0x1cb9('0x4')](_0x1cb9('0x54'),moment());this[_0x1cb9('0x4')](_0x1cb9('0x55'),0x0);}else{this[_0x1cb9('0x4')](_0x1cb9('0x54'),null);}}},'blockedAt':{'type':Sequelize[_0x1cb9('0x14')],'defaultValue':null},'loginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x1cb9('0xf')](0x5)[_0x1cb9('0x56')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 2a14159..8376185 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49fb=['openchannel','whatsapp','all','catch','show','params','model','differenceBy','keys','rawAttributes','password','filters','intersection','attributes','fields','length','merge','options','find','mail','body','describe','addContacts','ids','Setting','findById','securePassword','validatePasswordPattern','internal','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','email','permissions','102','103','113','104','105','106','107','108','109','111','115','create','user','agent','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','checkUserLimits','settingsEnabled','userProfileId','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','Unauthorized','some','each','isEmpty','compact','changePassword','oldPassword','newPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','enforcePasswordHistory','passwordHistoryLimit','previousPasswords','addQueues','channel','voicePause','isValidChannel','Unknown\x20channel','add','capitalize','penalty','spread','toLowerCase','Queue:save','voice','VoiceQueue','get','interface','SIP/%s','upsert','removeQueues','isArray','QueueId','Queue:remove','UserVoiceQueueRt','addAvatar','userpic','file','getAvatar','join','root','server/files/images/logos/default_profile.png','existsSync','download','server/files/images/','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','OPENCHANNEL','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','getContacts','order','sort','where','pick','CmList','List','Tag','Tags','color','tag','hasOwnProperty','Queue','Queues','getVoiceQueuesRt','nolimit','getGroups','ChatGroup','getRecordings','VoiceRecording','UserId','getScreenRecordings','ScreenRecording','getChatInteractions','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','getWhatsappInteractions','WhatsappInteraction','login','mobile','format','intrf','user:%s','user:forcelogout','x-forwarded-for','remoteAddress','socket','connection','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','loginInPause','UserVoiceQueue.penalty','MemberReport','YYYY-MM-DD\x20HH:mm:ss','getChannels','forEach','device','LOGININPAUSE','isMiddleware','logout','pause','PAUSE','updateAttributes','mailPause','chatPause','openchannelPause','smsPause','whatsapppause','pauseType','lastPauseAt','QueuePause','unpause','manual','set','Pause','getTeams','Team','resolve','Body\x20parameter\x20\x27ids\x27\x20is\x20required','transaction','getAssociatedQueues','flattenDeep','addAgent','online','getDataValue','Voice','Query\x20parameter\x20\x27ids\x27\x20is\x20required','User\x20with\x20id\x20%s\x20not\x20found','removeTeams','removeAgent','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','getLists','getAgents','values','addChatInteractions','omit','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','getFaxAccounts','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','addChatWebsites','removeChatWebsites','WhatsappAccount','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','removeSquareProjects','CmHopper','concat','$or','$gt','$gte','$lte','$ne','$eq','$not','$between','$notIn','$notLike','$notILike','$like','$contains','$contained','$any','firstName','lastName','phone','Contact','dialActive','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','generateApiKey','iat','nonce','removeApiKey','apiKeyNonce','apiKeyIat','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','teams','queues','flatten','lower','col','toString','asc','desc','substring','uniqBy','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unavailable','ringing','voiceStatus','busy','slice','charAt','QueryTypes','field','ui.','ui.createdAt','user_has_','_interactions','ui.UserId\x20=\x20?','OpenTabs','moment','bluebird','util','path','lodash','squel','jayson/promise','ioredis','../../config/logger','api','../../config/license/util','../../errors/api','APINotFoundError','handleError','./user.socket','register','redis','localhost','client','http','request','then','info','User,\x20%s,\x20%s','User,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','update','emit','userNotification:recalc:','destroy','role','admin','Users','Agents','Telephones','telephone','filter','ignore','map','UserProfileResource','stack','name','send','index','User','fieldName','type','key','includes','salt','value','getOptions','query','includeAll','include','userSetting','true','UserSetting','push','findAll','rows','openTabs','chat','dataValues','sms','fax'];(function(_0xc3af6f,_0x16479a){var _0x1a780f=function(_0x1347dd){while(--_0x1347dd){_0xc3af6f['push'](_0xc3af6f['shift']());}};_0x1a780f(++_0x16479a);}(_0x49fb,0x142));var _0xb49f=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x49fb[_0x4b369d];return _0x571a98;};'use strict';var moment=require(_0xb49f('0x0'));var BPromise=require(_0xb49f('0x1'));var util=require(_0xb49f('0x2'));var path=require(_0xb49f('0x3'));var fs=require('fs');var _=require(_0xb49f('0x4'));var squel=require(_0xb49f('0x5'));var jayson=require(_0xb49f('0x6'));var Redis=require(_0xb49f('0x7'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var logger=require(_0xb49f('0x8'))(_0xb49f('0x9'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb49f('0xa'));var APIBadRequestError=require(_0xb49f('0xb'))['APIBadRequestError'];var APINotFoundError=require('../../errors/api')[_0xb49f('0xc')];var APIHandleError=require(_0xb49f('0xb'))[_0xb49f('0xd')];var db=require('../../mysqldb')['db'];var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xb49f('0xe'))[_0xb49f('0xf')](socket);config[_0xb49f('0x10')]=_['defaults'](config[_0xb49f('0x10')],{'host':_0xb49f('0x11'),'port':0x18eb});var client=jayson[_0xb49f('0x12')][_0xb49f('0x13')]({'port':0x232a});var values;function respondWithRpcPromise(_0x358bd5,_0x6995da,_0x4f89ba,_0x29b741){return new BPromise(function(_0x79590e,_0xc86f6d){var _0x399149=_0x29b741||client;return _0x399149[_0xb49f('0x14')](_0x358bd5,_0x4f89ba)[_0xb49f('0x15')](function(_0x2281a6){logger[_0xb49f('0x16')](_0xb49f('0x17'),_0x6995da,'request\x20sent');logger['debug'](_0xb49f('0x18'),_0x6995da,_0xb49f('0x19'),JSON['stringify'](_0x2281a6));if(_0x2281a6['error']){if(_0x2281a6[_0xb49f('0x1a')]['code']===0x1f4){logger[_0xb49f('0x1a')]('User,\x20%s,\x20%s',_0x6995da,_0x2281a6[_0xb49f('0x1a')]['message']);return _0xc86f6d(_0x2281a6[_0xb49f('0x1a')]['message']);}logger[_0xb49f('0x1a')](_0xb49f('0x17'),_0x6995da,_0x2281a6[_0xb49f('0x1a')][_0xb49f('0x1b')]);return _0x79590e(_0x2281a6[_0xb49f('0x1a')][_0xb49f('0x1b')]);}else{logger[_0xb49f('0x16')](_0xb49f('0x17'),_0x6995da,'request\x20sent');_0x79590e(_0x2281a6['result'][_0xb49f('0x1b')]);}})['catch'](function(_0x455f3e){logger['error'](_0xb49f('0x17'),_0x6995da,_0x455f3e);_0xc86f6d(_0x455f3e);});});}function respondWithStatusCode(_0x1001a1,_0x50994c){_0x50994c=_0x50994c||0xcc;return function(_0x2095c5){if(_0x2095c5){return _0x1001a1[_0xb49f('0x1c')](_0x50994c);}return _0x1001a1[_0xb49f('0x1d')](_0x50994c)[_0xb49f('0x1e')]();};}function respondWithResult(_0x57b550,_0x26f880){_0x26f880=_0x26f880||0xc8;return function(_0xdcd44){if(_0xdcd44){return _0x57b550[_0xb49f('0x1d')](_0x26f880)[_0xb49f('0x1f')](_0xdcd44);}};}function respondWithFilteredResult(_0x354b74,_0x57a05f){return function(_0x52ae6d){if(_0x52ae6d){var _0x3b8cc3=typeof _0x57a05f[_0xb49f('0x20')]===_0xb49f('0x21')&&typeof _0x57a05f[_0xb49f('0x22')]===_0xb49f('0x21');var _0x15696b=_0x52ae6d[_0xb49f('0x23')];var _0x410f77=_0x3b8cc3?0x0:_0x57a05f['offset'];var _0x16ea5b=_0x3b8cc3?_0x52ae6d[_0xb49f('0x23')]:_0x57a05f[_0xb49f('0x20')]+_0x57a05f[_0xb49f('0x22')];var _0x14dc3e;if(_0x16ea5b>=_0x15696b){_0x16ea5b=_0x15696b;_0x14dc3e=0xc8;}else{_0x14dc3e=0xce;}_0x354b74[_0xb49f('0x1d')](_0x14dc3e);return _0x354b74['set'](_0xb49f('0x24'),_0x410f77+'-'+_0x16ea5b+'/'+_0x15696b)[_0xb49f('0x1f')](_0x52ae6d);}return null;};}function saveUpdates(_0x1abe9e){return function(_0x51b68d){if(_0x51b68d){return _0x51b68d[_0xb49f('0x25')](_0x1abe9e)[_0xb49f('0x15')](function(_0x567618){socket[_0xb49f('0x26')](_0xb49f('0x27')+_0x567618['id'],{});return _0x567618;});}return null;};}function removeEntity(_0x2ac393){return function(_0x473162){if(_0x473162){return _0x473162[_0xb49f('0x28')]()[_0xb49f('0x15')](function(){var _0x2400f5=_0x473162['get']({'plain':!![]});if(_0x2400f5[_0xb49f('0x29')]===_0xb49f('0x2a'))return;var _0x5300eb=[{'name':_0xb49f('0x2b'),'value':'user','ignore':!![]},{'name':_0xb49f('0x2c'),'value':'agent','ignore':![]},{'name':_0xb49f('0x2d'),'value':_0xb49f('0x2e'),'ignore':![]}];var _0x3132b4=_(_0x5300eb)[_0xb49f('0x2f')](_0xb49f('0x30'))[_0xb49f('0x31')]('value')['value']();if(_['includes'](_0x3132b4,_0x2400f5[_0xb49f('0x29')])){return;}var _0x26da65=_['find'](_0x5300eb,['value',_0x2400f5[_0xb49f('0x29')]])['name'];return db[_0xb49f('0x32')][_0xb49f('0x28')]({'where':{'type':_0x26da65,'resourceId':_0x2400f5['id']}})[_0xb49f('0x15')](function(){return _0x473162;});})[_0xb49f('0x15')](function(){_0x2ac393[_0xb49f('0x1d')](0xcc)[_0xb49f('0x1e')]();});}};}function handleEntityNotFound(_0x2024cf){return function(_0x301675){if(!_0x301675){_0x2024cf[_0xb49f('0x1c')](0x194);}return _0x301675;};}function handleError(_0xe3dab7,_0x480591){_0x480591=_0x480591||0x1f4;return function(_0x271d5e){logger[_0xb49f('0x1a')](_0x271d5e[_0xb49f('0x33')]);if(_0x271d5e[_0xb49f('0x34')]){delete _0x271d5e['name'];}_0xe3dab7[_0xb49f('0x1d')](_0x480591)[_0xb49f('0x35')](_0x271d5e);};}exports[_0xb49f('0x36')]=function(_0x2c6a31,_0x34e7bd){var _0x2fe99a={},_0x30db40={'count':0x0,'rows':[]};var _0x422cba=_(db[_0xb49f('0x37')]['rawAttributes'])[_0xb49f('0x31')](function(_0x319678){return{'name':_0x319678[_0xb49f('0x38')],'type':_0x319678[_0xb49f('0x39')][_0xb49f('0x3a')]};})[_0xb49f('0x2f')](function(_0x37084b){return!_[_0xb49f('0x3b')](['password',_0xb49f('0x3c')],_0x37084b[_0xb49f('0x34')]);})[_0xb49f('0x3d')]();_0x2fe99a=qs[_0xb49f('0x3e')](_0x422cba,_0x2c6a31);var _0x4ed47d={'where':_0x2fe99a['where']};return db[_0xb49f('0x37')][_0xb49f('0x23')](_0x4ed47d)[_0xb49f('0x15')](function(_0xf65cbc){_0x30db40[_0xb49f('0x23')]=_0xf65cbc;if(_0x2c6a31[_0xb49f('0x3f')][_0xb49f('0x40')]){_0x2fe99a[_0xb49f('0x41')]=[{'all':!![]}];}if(_0x2c6a31['query'][_0xb49f('0x42')]===_0xb49f('0x43')){_0x2fe99a['include']=[{'model':db[_0xb49f('0x44')],'as':_0xb49f('0x42')}];}if(!_[_0xb49f('0x3b')](_0x2fe99a['attributes'],'id')){_0x2fe99a['attributes'][_0xb49f('0x45')]('id');}return db[_0xb49f('0x37')][_0xb49f('0x46')](_0x2fe99a);})[_0xb49f('0x15')](function(_0x2d2797){_0x30db40[_0xb49f('0x47')]=_0x2d2797;if(_0x2c6a31[_0xb49f('0x3f')][_0xb49f('0x48')]===_0xb49f('0x43')){var _0x3b17f3=[];for(var _0x313240=0x0;_0x313240<_0x30db40['rows']['length'];_0x313240++){_0x3b17f3[_0xb49f('0x45')](get_open_tabs(_0xb49f('0x49'),_0x30db40['rows'][_0x313240][_0xb49f('0x4a')]));_0x3b17f3[_0xb49f('0x45')](get_open_tabs(_0xb49f('0x4b'),_0x30db40[_0xb49f('0x47')][_0x313240][_0xb49f('0x4a')]));_0x3b17f3[_0xb49f('0x45')](get_open_tabs(_0xb49f('0x4c'),_0x30db40[_0xb49f('0x47')][_0x313240][_0xb49f('0x4a')]));_0x3b17f3[_0xb49f('0x45')](get_open_tabs('mail',_0x30db40[_0xb49f('0x47')][_0x313240][_0xb49f('0x4a')]));_0x3b17f3[_0xb49f('0x45')](get_open_tabs(_0xb49f('0x4d'),_0x30db40[_0xb49f('0x47')][_0x313240]['dataValues']));_0x3b17f3['push'](get_open_tabs(_0xb49f('0x4e'),_0x30db40[_0xb49f('0x47')][_0x313240][_0xb49f('0x4a')]));}return BPromise[_0xb49f('0x4f')](_0x3b17f3)[_0xb49f('0x15')](function(){return _0x30db40;});}else{return _0x30db40;}})[_0xb49f('0x15')](respondWithFilteredResult(_0x34e7bd,_0x2fe99a))[_0xb49f('0x50')](handleError(_0x34e7bd,null));};exports[_0xb49f('0x51')]=function(_0x5a86ca,_0x4418aa){var _0x534668={'raw':![],'where':{'id':_0x5a86ca[_0xb49f('0x52')]['id']}},_0x24d785={};_0x24d785[_0xb49f('0x53')]=_[_0xb49f('0x54')](_[_0xb49f('0x55')](db['User'][_0xb49f('0x56')]),[_0xb49f('0x57'),'salt']);_0x24d785[_0xb49f('0x3f')]=_[_0xb49f('0x55')](_0x5a86ca['query']);_0x24d785[_0xb49f('0x58')]=_[_0xb49f('0x59')](_0x24d785['model'],_0x24d785[_0xb49f('0x3f')]);_0x534668[_0xb49f('0x5a')]=_['intersection'](_0x24d785['model'],qs[_0xb49f('0x5b')](_0x5a86ca[_0xb49f('0x3f')]['fields']));_0x534668['attributes']=_0x534668[_0xb49f('0x5a')][_0xb49f('0x5c')]?_0x534668[_0xb49f('0x5a')]:_0x24d785['model'];if(_0x5a86ca[_0xb49f('0x3f')][_0xb49f('0x40')]){_0x534668[_0xb49f('0x41')]=[{'all':!![]}];}if(_0x5a86ca[_0xb49f('0x3f')][_0xb49f('0x42')]==='true'){_0x534668['include']=[{'model':db[_0xb49f('0x44')],'as':_0xb49f('0x42')}];}_0x534668=_[_0xb49f('0x5d')]({},_0x534668,_0x5a86ca[_0xb49f('0x5e')]);if(!_[_0xb49f('0x3b')](_0x534668[_0xb49f('0x5a')],'id')){_0x534668[_0xb49f('0x5a')][_0xb49f('0x45')]('id');}return db[_0xb49f('0x37')][_0xb49f('0x5f')](_0x534668)[_0xb49f('0x15')](handleEntityNotFound(_0x4418aa,null))[_0xb49f('0x15')](function(_0x188e30){var _0x37080a=[];values=_0x188e30;if(_0x5a86ca['query'][_0xb49f('0x48')]==='true'){_0x37080a['push'](get_open_tabs('chat',_0x188e30[_0xb49f('0x4a')]));_0x37080a[_0xb49f('0x45')](get_open_tabs(_0xb49f('0x4b'),_0x188e30[_0xb49f('0x4a')]));_0x37080a['push'](get_open_tabs(_0xb49f('0x4d'),_0x188e30['dataValues']));_0x37080a['push'](get_open_tabs(_0xb49f('0x4e'),_0x188e30[_0xb49f('0x4a')]));_0x37080a[_0xb49f('0x45')](get_open_tabs('fax',_0x188e30[_0xb49f('0x4a')]));_0x37080a[_0xb49f('0x45')](get_open_tabs(_0xb49f('0x60'),_0x188e30[_0xb49f('0x4a')]));return BPromise[_0xb49f('0x4f')](_0x37080a);}else{return values;}})[_0xb49f('0x15')](function(){return values;})[_0xb49f('0x15')](respondWithResult(_0x4418aa,null))['catch'](handleError(_0x4418aa,null));};exports[_0xb49f('0x25')]=function(_0x39abcd,_0x1cc87d){if(_0x39abcd[_0xb49f('0x61')]['id']){delete _0x39abcd[_0xb49f('0x61')]['id'];}delete _0x39abcd[_0xb49f('0x61')][_0xb49f('0x29')];return db[_0xb49f('0x37')]['find']({'where':{'id':_0x39abcd[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x1cc87d,null))[_0xb49f('0x15')](saveUpdates(_0x39abcd[_0xb49f('0x61')],null))['then'](respondWithResult(_0x1cc87d,null))[_0xb49f('0x50')](handleError(_0x1cc87d,null));};exports[_0xb49f('0x62')]=function(_0x5c8b5a,_0x515d18){return db[_0xb49f('0x37')][_0xb49f('0x62')]()['then'](respondWithResult(_0x515d18,null))[_0xb49f('0x50')](handleError(_0x515d18,null));};exports[_0xb49f('0x63')]=function(_0x33799a,_0x1e586c){return db[_0xb49f('0x37')][_0xb49f('0x5f')]({'where':{'id':_0x33799a['params']['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x1e586c,null))[_0xb49f('0x15')](function(_0x1c6822){if(_0x1c6822){return _0x1c6822[_0xb49f('0x63')](_0x33799a['body'][_0xb49f('0x64')],_['omit'](_0x33799a['body'],['ids','id'])||{});}})[_0xb49f('0x15')](respondWithResult(_0x1e586c,null))[_0xb49f('0x50')](handleError(_0x1e586c,null));};function validateUser(_0x2248f1){return new BPromise(function(_0x217c56,_0x3a029f){if(_0x2248f1['internal'])return _0x217c56(_0x2248f1);return db[_0xb49f('0x65')][_0xb49f('0x66')](0x1)[_0xb49f('0x15')](function(_0x2d3b24){if(_0x2d3b24[_0xb49f('0x67')])authService[_0xb49f('0x68')](_0x2248f1[_0xb49f('0x57')]);db[_0xb49f('0x37')]['max']('internal')[_0xb49f('0x15')](function(_0x51706f){if(_['isNil'](_0x51706f)){_0x2248f1[_0xb49f('0x69')]=_0x2d3b24[_0xb49f('0x6a')]||0x1;return;}if(_[_0xb49f('0x6b')](_0x2d3b24[_0xb49f('0x6a')])||_0x2d3b24[_0xb49f('0x6a')]===_0x51706f){_0x2248f1['internal']=_0x51706f+0x1;return;}if(_0x2d3b24[_0xb49f('0x6a')]>_0x51706f){_0x2248f1[_0xb49f('0x69')]=_0x2d3b24[_0xb49f('0x6a')];return;}return db[_0xb49f('0x6c')]['query'](_0xb49f('0x6d'),{'type':db['sequelize']['QueryTypes'][_0xb49f('0x6e')]})['then'](function(_0xe0902a){if(_0xe0902a&&_0xe0902a[_0xb49f('0x5c')]){for(var _0x527eff=0x0,_0x4f6453=_0xe0902a['length'];_0x527eff<_0x4f6453&&_[_0xb49f('0x6b')](_0x2248f1[_0xb49f('0x69')]);_0x527eff++){if(_0x2d3b24['min_internal']<=_0xe0902a[_0x527eff][_0xb49f('0x6f')]){_0x2248f1[_0xb49f('0x69')]=_0xe0902a[_0x527eff][_0xb49f('0x6f')];}else if(_0x2d3b24[_0xb49f('0x6a')]>_0xe0902a[_0x527eff][_0xb49f('0x6f')]&&_0x2d3b24[_0xb49f('0x6a')]<=_0xe0902a[_0x527eff]['to']){_0x2248f1[_0xb49f('0x69')]=_0x2d3b24['min_internal'];}}}if(_[_0xb49f('0x6b')](_0x2248f1[_0xb49f('0x69')])){_0x2248f1[_0xb49f('0x69')]=_0x51706f+0x1;}return _0x217c56(_0x2248f1);});});})['catch'](function(_0x5b86da){_0x3a029f(_0x5b86da);});});}function updateUser(_0xb38a76){return new BPromise(function(_0x3a8565,_0x3bc301){try{if(_0xb38a76['voicemail']){_0xb38a76['mailbox']=_0xb38a76[_0xb49f('0x69')];_0xb38a76[_0xb49f('0x70')]={'mailbox':_0xb38a76[_0xb49f('0x69')],'password':_0xb38a76['password'],'fullname':_0xb38a76['fullname'],'email':_0xb38a76[_0xb49f('0x71')]};}if(_0xb38a76[_0xb49f('0x29')]==='agent'){if(!_0xb38a76[_0xb49f('0x72')])_0xb38a76[_0xb49f('0x72')]=['101',_0xb49f('0x73'),_0xb49f('0x74'),_0xb49f('0x75'),'110',_0xb49f('0x76'),_0xb49f('0x77'),_0xb49f('0x78'),_0xb49f('0x79'),_0xb49f('0x7a'),_0xb49f('0x7b'),'100',_0xb49f('0x7c'),'114',_0xb49f('0x7d')];}_0x3a8565(_0xb38a76);}catch(_0x1b088b){_0x3bc301(_0x1b088b);}});}exports[_0xb49f('0x7e')]=function(_0x4ce11f,_0x1d8f5f){if(_0x4ce11f[_0xb49f('0x7f')]['role']===_0xb49f('0x80'))throw new Error('Unauthorized');if(_0x4ce11f[_0xb49f('0x61')][_0xb49f('0x29')]===_0xb49f('0x7f')&&_0x4ce11f[_0xb49f('0x7f')][_0xb49f('0x29')]!==_0xb49f('0x2a')){throw new Error(_0xb49f('0x81'));}if(_0x4ce11f['body']['role']===_0xb49f('0x2a')&&_0x4ce11f['user']['role']!==_0xb49f('0x2a')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator');}return licenseUtil[_0xb49f('0x82')]([_0x4ce11f[_0xb49f('0x61')]])[_0xb49f('0x15')](function(){return validateUser(_0x4ce11f[_0xb49f('0x61')]);})[_0xb49f('0x15')](function(_0x3074c3){return updateUser(_0x3074c3)[_0xb49f('0x15')](function(_0x23f180){if(_0x23f180[_0xb49f('0x29')]==='admin'){_0x23f180[_0xb49f('0x83')]=_0x4ce11f[_0xb49f('0x7f')]['settingsEnabled'];delete _0x23f180[_0xb49f('0x84')];}return _0x23f180;});})[_0xb49f('0x15')](function(_0x508059){return db[_0xb49f('0x37')]['create'](_0x508059,{'include':[{'model':db[_0xb49f('0x70')],'as':_0xb49f('0x70')}]});})[_0xb49f('0x15')](function(_0x4e4203){if(_0x4ce11f[_0xb49f('0x61')][_0xb49f('0x29')]==='user')return _0x4e4203;if(_0x4ce11f[_0xb49f('0x7f')]['role']!==_0xb49f('0x7f'))return _0x4e4203;return db[_0xb49f('0x85')][_0xb49f('0x5f')]({'where':{'name':_0x4e4203[_0xb49f('0x29')]===_0xb49f('0x80')?_0xb49f('0x2c'):_0xb49f('0x2d'),'userProfileId':_0x4ce11f[_0xb49f('0x7f')]['userProfileId']},'raw':!![]})['then'](function(_0x2e4d59){if(!_0x2e4d59||_0x2e4d59[_0xb49f('0x86')]!=0x0)return _0x4e4203;return db[_0xb49f('0x32')]['create']({'name':_0x4e4203[_0xb49f('0x34')],'resourceId':_0x4e4203['id'],'type':_0x2e4d59['name'],'sectionId':_0x2e4d59['id']},{})['then'](function(){return _0x4e4203;});})[_0xb49f('0x50')](function(_0x300727){logger[_0xb49f('0x1a')](_0xb49f('0x87'),_0x300727);throw _0x300727;});})[_0xb49f('0x15')](respondWithResult(_0x1d8f5f,0xc9))[_0xb49f('0x50')](handleError(_0x1d8f5f,null));};exports[_0xb49f('0x88')]=function(_0xa74f0f,_0x4416a3){var _0x3c8ea6=_0xa74f0f[_0xb49f('0x61')];var _0x905331=[];if(_0xa74f0f[_0xb49f('0x7f')][_0xb49f('0x29')]===_0xb49f('0x80'))throw new Error(_0xb49f('0x89'));if(_['some'](_0x3c8ea6,[_0xb49f('0x29'),_0xb49f('0x7f')])&&_0xa74f0f[_0xb49f('0x7f')][_0xb49f('0x29')]!==_0xb49f('0x2a')){throw new Error(_0xb49f('0x81'));}if(_[_0xb49f('0x8a')](_0x3c8ea6,[_0xb49f('0x29'),_0xb49f('0x2a')])&&_0xa74f0f[_0xb49f('0x7f')][_0xb49f('0x29')]!==_0xb49f('0x2a')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator');}return licenseUtil['checkUserLimits'](_0x3c8ea6)[_0xb49f('0x15')](function(){return validateUser(_0x3c8ea6[0x0]);})[_0xb49f('0x15')](function(){for(var _0x294e6d=0x1;_0x294e6d<_0x3c8ea6['length'];_0x294e6d++){var _0x29e55a=_0x3c8ea6[_0x294e6d-0x1][_0xb49f('0x69')];if(!_0x3c8ea6[_0x294e6d][_0xb49f('0x69')])_0x3c8ea6[_0x294e6d][_0xb49f('0x69')]=_0x29e55a+0x1;_0x905331[_0xb49f('0x45')](validateUser(_0x3c8ea6[_0x294e6d]));}return BPromise[_0xb49f('0x4f')](_0x905331);})['then'](function(){_0x905331=[];for(var _0x34841e=0x0;_0x34841e<_0x3c8ea6['length'];_0x34841e++){_0x905331['push'](updateUser(_0x3c8ea6[_0x34841e]));}return BPromise['all'](_0x905331);})[_0xb49f('0x15')](function(){return BPromise[_0xb49f('0x8b')](_0x3c8ea6,function(_0x259ef3){return db[_0xb49f('0x37')]['create'](_0x259ef3,{'include':[{'model':db[_0xb49f('0x70')],'as':_0xb49f('0x70')}]})[_0xb49f('0x15')](function(_0x40202){_0x259ef3['id']=_0x40202['id'];return _0x259ef3;});});})[_0xb49f('0x15')](function(_0x552a83){if(_0xa74f0f[_0xb49f('0x61')][_0xb49f('0x29')]==='user')return _0x552a83;if(_0xa74f0f[_0xb49f('0x7f')]['role']!==_0xb49f('0x7f'))return _0x552a83;var _0xb8e633=_[_0xb49f('0x8a')](_0x552a83,function(_0xfe2347){return _0xfe2347[_0xb49f('0x29')]==='agent'||_0xfe2347[_0xb49f('0x29')]===_0xb49f('0x2e');});if(!_0xb8e633)return _0x552a83;return db['UserProfileSection']['findAll']({'where':{'name':{'$or':[_0xb49f('0x2c'),_0xb49f('0x2d')]},'userProfileId':_0xa74f0f['user'][_0xb49f('0x84')]},'raw':!![]})[_0xb49f('0x15')](function(_0x3301cb){if(_[_0xb49f('0x8c')](_0x3301cb)||!_[_0xb49f('0x8a')](_0x3301cb,['autoAssociation',0x0]))return _0x552a83;_0x905331=[];var _0x28f850=_(_0x3301cb)['map'](function(_0x2ccb9b){if(_0x2ccb9b['autoAssociation']===0x1)return;return _0x2ccb9b['name']==='Agents'?'agent':_0xb49f('0x2e');})[_0xb49f('0x8d')]()[_0xb49f('0x3d')]();for(var _0x3991c3=0x0;_0x3991c3<_0x552a83[_0xb49f('0x5c')];_0x3991c3++){if(!_[_0xb49f('0x3b')](_0x28f850,_0x552a83[_0x3991c3][_0xb49f('0x29')]))return;var _0xd69887=_0x552a83[_0x3991c3][_0xb49f('0x29')]===_0xb49f('0x80')?_0xb49f('0x2c'):_0xb49f('0x2d');_0x905331['push'](db[_0xb49f('0x32')][_0xb49f('0x7e')]({'name':_0x552a83[_0x3991c3]['name'],'resourceId':_0x552a83[_0x3991c3]['id'],'type':_0xd69887,'sectionId':_[_0xb49f('0x5f')](_0x3301cb,['name',_0xd69887])['id']},{}));}return BPromise['all'](_0x905331);});})['then'](respondWithResult(_0x4416a3,0xc9))['catch'](handleError(_0x4416a3,null));};exports[_0xb49f('0x8e')]=function(_0x42676d,_0x4f2e7b){if(_0x42676d['body']['id']){delete _0x42676d[_0xb49f('0x61')]['id'];}return db['User'][_0xb49f('0x5f')]({'where':{'id':_0x42676d[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](function(_0x4c9392){if(!_0x4c9392)return null;if(_0x4c9392['id']===_0x42676d[_0xb49f('0x7f')]['id']){if(!_0x42676d[_0xb49f('0x61')][_0xb49f('0x8f')]||!_0x42676d[_0xb49f('0x61')][_0xb49f('0x90')]){throw new db[(_0xb49f('0x91'))][(_0xb49f('0x92'))](_0xb49f('0x93'));}if(!_0x4c9392[_0xb49f('0x94')](_0x42676d[_0xb49f('0x61')][_0xb49f('0x8f')])){throw new db[(_0xb49f('0x91'))][(_0xb49f('0x92'))](_0xb49f('0x95'));}if(_0x42676d['body'][_0xb49f('0x8f')]===_0x42676d[_0xb49f('0x61')][_0xb49f('0x90')]){throw new db['Sequelize']['ValidationError'](_0xb49f('0x96'));}}else if(_0x42676d['user'][_0xb49f('0x29')]===_0xb49f('0x2a')){if(!_0x42676d[_0xb49f('0x61')][_0xb49f('0x90')]){throw new db[(_0xb49f('0x91'))][(_0xb49f('0x92'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}}else if(_0x42676d[_0xb49f('0x7f')]['role']===_0xb49f('0x7f')){if(!_0x42676d[_0xb49f('0x61')][_0xb49f('0x90')]){throw new db[(_0xb49f('0x91'))][(_0xb49f('0x92'))](_0xb49f('0x97'));}if(_0x4c9392[_0xb49f('0x29')]!==_0xb49f('0x80')){throw new db[(_0xb49f('0x91'))][(_0xb49f('0x92'))](_0xb49f('0x89'));}}else{throw new db[(_0xb49f('0x91'))][(_0xb49f('0x92'))](_0xb49f('0x89'));}return _0x4c9392;})[_0xb49f('0x15')](handleEntityNotFound(_0x4f2e7b,null))[_0xb49f('0x15')](function(_0x36e1de){return db[_0xb49f('0x65')][_0xb49f('0x98')]({'attributes':['id','securePassword',_0xb49f('0x99'),_0xb49f('0x9a')]})[_0xb49f('0x15')](function(_0x1c6659){if(_0x1c6659['securePassword'])authService[_0xb49f('0x68')](_0x42676d[_0xb49f('0x61')][_0xb49f('0x90')]);if(!_0x1c6659['enforcePasswordHistory']||!_0x36e1de[_0xb49f('0x9b')])return _0x36e1de;authService['validatePasswordHistory'](_0x42676d['body'][_0xb49f('0x90')],_0x36e1de[_0xb49f('0x9b')],_0x1c6659[_0xb49f('0x9a')]);return _0x36e1de;})[_0xb49f('0x15')](saveUpdates({'password':_0x42676d[_0xb49f('0x61')][_0xb49f('0x90')],'passwordResetAt':_0x42676d[_0xb49f('0x7f')]['id']==_0x42676d[_0xb49f('0x52')]['id']?moment():null,'previousPasswords':authService['updatePasswordsHistory'](_0x42676d[_0xb49f('0x61')][_0xb49f('0x90')],_0x36e1de[_0xb49f('0x9b')])},null));})['then'](respondWithResult(_0x4f2e7b,null))['catch'](handleError(_0x4f2e7b,null));};exports[_0xb49f('0x9c')]=function(_0x122fc9,_0x3e6c6c){var _0x37039b=_0x122fc9[_0xb49f('0x61')][_0xb49f('0x9d')];return db[_0xb49f('0x37')][_0xb49f('0x5f')]({'where':{'id':_0x122fc9[_0xb49f('0x52')]['id']},'attributes':['id',_0xb49f('0x34'),_0xb49f('0x29'),'online','loginInPause',_0xb49f('0x9e'),'interface']})[_0xb49f('0x15')](handleEntityNotFound(_0x3e6c6c,null))[_0xb49f('0x15')](function(_0xc77d56){if(_0xc77d56){if(!utils[_0xb49f('0x9f')](_0x37039b)){throw new db[(_0xb49f('0x91'))][(_0xb49f('0x92'))](_0xb49f('0xa0'));}return _0xc77d56[_0xb49f('0xa1')+_[_0xb49f('0xa2')](_0x37039b['toLowerCase']())+'Queues'](_0x122fc9['body']['ids'],{'penalty':_0x122fc9[_0xb49f('0x61')][_0xb49f('0xa3')]||0x0})[_0xb49f('0xa4')](function(_0x59f751){for(var _0x84b838=0x0;_0x84b838<_0x122fc9[_0xb49f('0x61')][_0xb49f('0x64')][_0xb49f('0x5c')];_0x84b838+=0x1){var _0x39a5da={'UserId':Number(_0x122fc9['params']['id'])};_0x39a5da[_['capitalize'](_0x37039b['toLowerCase']())+'QueueId']=Number(_0x122fc9['body'][_0xb49f('0x64')][_0x84b838]);socket[_0xb49f('0x26')](_0xb49f('0x7f')+_['capitalize'](_0x37039b[_0xb49f('0xa5')]())+_0xb49f('0xa6'),_0x39a5da);}return _0x59f751;})[_0xb49f('0x15')](function(){if(_0x37039b===_0xb49f('0xa7')){return db[_0xb49f('0xa8')]['findAll']({'where':{'id':_0x122fc9[_0xb49f('0x61')][_0xb49f('0x64')]||[]},'raw':!![],'attributes':['id',_0xb49f('0x34')]});}})[_0xb49f('0x15')](function(_0x4351c6){var _0x48092e=_0xc77d56[_0xb49f('0xa9')]({'plain':!![]});var _0x221f6b=[];if(_0x37039b===_0xb49f('0xa7')&&_0x48092e[_0xb49f('0x29')]===_0xb49f('0x80')&&_0x48092e['online']){for(var _0x556b3c=0x0;_0x556b3c<_0x4351c6[_0xb49f('0x5c')];_0x556b3c+=0x1){_0x221f6b[_0xb49f('0x45')]({'membername':_0x48092e['name'],'UserId':_0x48092e['id'],'queue_name':_0x4351c6[_0x556b3c][_0xb49f('0x34')],'VoiceQueueId':_0x4351c6[_0x556b3c]['id'],'interface':_['isNil'](_0x48092e[_0xb49f('0xaa')])?util['format'](_0xb49f('0xab'),_0x48092e['name']):_0x48092e['interface'],'paused':_0x48092e['voicePause']||![],'penalty':_0x122fc9[_0xb49f('0x61')]['penalty']||0x0});}return BPromise[_0xb49f('0x8b')](_0x221f6b,function(_0x3d3625){return db['UserVoiceQueueRt'][_0xb49f('0xac')](_0x3d3625);});}return _0xc77d56;});}})[_0xb49f('0x15')](respondWithStatusCode(_0x3e6c6c,null))[_0xb49f('0x50')](handleError(_0x3e6c6c,null));};exports[_0xb49f('0xad')]=function(_0x1df90f,_0x248c4a){var _0xb35b70,_0x58c651;return db[_0xb49f('0x37')]['find']({'where':{'id':_0x1df90f[_0xb49f('0x52')]['id']},'attributes':['id',_0xb49f('0x34'),_0xb49f('0x29')]})['then'](handleEntityNotFound(_0x248c4a,null))[_0xb49f('0x15')](function(_0x1ed045){if(_0x1ed045){_0xb35b70=_0x1ed045;if(!_0x1df90f['query'][_0xb49f('0x9d')]||!utils[_0xb49f('0x9f')](_0x1df90f[_0xb49f('0x3f')][_0xb49f('0x9d')])){throw new db[(_0xb49f('0x91'))][(_0xb49f('0x92'))]('Unknown\x20channel');}return _0x1ed045['remove'+_[_0xb49f('0xa2')](_0x1df90f[_0xb49f('0x3f')]['channel'][_0xb49f('0xa5')]())+'Queues'](_0x1df90f['query']['ids']);}})['then'](function(_0x36888c){if(_[_0xb49f('0xae')](_0x1df90f[_0xb49f('0x3f')][_0xb49f('0x64')])){for(var _0x1d8da2=0x0;_0x1d8da2<_0x1df90f[_0xb49f('0x3f')][_0xb49f('0x64')][_0xb49f('0x5c')];_0x1d8da2+=0x1){_0x58c651={'UserId':Number(_0x1df90f['params']['id'])};_0x58c651[_[_0xb49f('0xa2')](_0x1df90f[_0xb49f('0x3f')][_0xb49f('0x9d')][_0xb49f('0xa5')]())+_0xb49f('0xaf')]=Number(_0x1df90f[_0xb49f('0x3f')]['ids'][_0x1d8da2]);socket['emit'](_0xb49f('0x7f')+_[_0xb49f('0xa2')](_0x1df90f['query'][_0xb49f('0x9d')][_0xb49f('0xa5')]())+_0xb49f('0xb0'),_0x58c651);}}else{_0x58c651={'UserId':Number(_0x1df90f[_0xb49f('0x52')]['id'])};_0x58c651[_['capitalize'](_0x1df90f[_0xb49f('0x3f')][_0xb49f('0x9d')]['toLowerCase']())+'QueueId']=Number(_0x1df90f[_0xb49f('0x3f')][_0xb49f('0x64')]);socket[_0xb49f('0x26')](_0xb49f('0x7f')+_[_0xb49f('0xa2')](_0x1df90f[_0xb49f('0x3f')]['channel'][_0xb49f('0xa5')]())+_0xb49f('0xb0'),_0x58c651);}return _0x36888c;})[_0xb49f('0x15')](function(){if(_0x1df90f[_0xb49f('0x3f')][_0xb49f('0x9d')]===_0xb49f('0xa7')){return db[_0xb49f('0xb1')][_0xb49f('0x28')]({'where':{'UserId':_0x1df90f[_0xb49f('0x52')]['id'],'VoiceQueueId':_0x1df90f[_0xb49f('0x3f')][_0xb49f('0x64')]},'individualHooks':!![]})[_0xb49f('0x15')](function(){return _0xb35b70;});}return _0xb35b70;})[_0xb49f('0x15')](respondWithStatusCode(_0x248c4a,null))[_0xb49f('0x50')](handleError(_0x248c4a,null));};exports[_0xb49f('0xb2')]=function(_0x5657e8,_0x5066a6){_0x5657e8[_0xb49f('0x61')][_0xb49f('0xb3')]=_0x5657e8[_0xb49f('0xb4')]['filename'];return db[_0xb49f('0x37')][_0xb49f('0x5f')]({'where':{'id':_0x5657e8[_0xb49f('0x52')]['id']}})['then'](handleEntityNotFound(_0x5066a6,null))[_0xb49f('0x15')](saveUpdates(_0x5657e8['body'],null))[_0xb49f('0x15')](respondWithResult(_0x5066a6,null))[_0xb49f('0x50')](handleError(_0x5066a6,null));};exports[_0xb49f('0xb5')]=function(_0x3c8ece,_0x10de4a){var _0x1ea066=path[_0xb49f('0xb6')](config[_0xb49f('0xb7')],_0xb49f('0xb8'));return db[_0xb49f('0x37')][_0xb49f('0x5f')]({'where':{'id':_0x3c8ece[_0xb49f('0x52')]['id']},'attributes':['id','userpic'],'raw':!![]})[_0xb49f('0x15')](handleEntityNotFound(_0x10de4a,null))[_0xb49f('0x15')](function(_0x4ccf52){if(_0x4ccf52){if(_[_0xb49f('0x6b')](_0x4ccf52[_0xb49f('0xb3')])){return _0x10de4a['download'](_0x1ea066);}else{if(!fs[_0xb49f('0xb9')](path[_0xb49f('0xb6')](config[_0xb49f('0xb7')],'server/files/images/',_0x4ccf52[_0xb49f('0xb3')]))){return _0x10de4a[_0xb49f('0xba')](_0x1ea066);}return _0x10de4a[_0xb49f('0xba')](path['join'](config['root'],_0xb49f('0xbb'),_0x4ccf52['userpic']));}}})[_0xb49f('0x50')](handleError(_0x10de4a,null));};exports['getOpenTabs']=function(_0x317e57,_0x2fa696){return db['User'][_0xb49f('0x5f')]({'where':{'id':_0x317e57[_0xb49f('0x52')]['id']},'attributes':['id']})[_0xb49f('0x15')](handleEntityNotFound(_0x2fa696,null))[_0xb49f('0x15')](function(_0x2f5b95){var _0x4a627d=[];values=_0x2f5b95[_0xb49f('0x4a')];_0x4a627d[_0xb49f('0x45')](get_open_tabs('chat',_0x2f5b95[_0xb49f('0x4a')]));_0x4a627d['push'](get_open_tabs('sms',_0x2f5b95[_0xb49f('0x4a')]));_0x4a627d[_0xb49f('0x45')](get_open_tabs('openchannel',_0x2f5b95[_0xb49f('0x4a')]));_0x4a627d[_0xb49f('0x45')](get_open_tabs(_0xb49f('0x4e'),_0x2f5b95['dataValues']));_0x4a627d[_0xb49f('0x45')](get_open_tabs('fax',_0x2f5b95[_0xb49f('0x4a')]));_0x4a627d[_0xb49f('0x45')](get_open_tabs(_0xb49f('0x60'),_0x2f5b95[_0xb49f('0x4a')]));return BPromise[_0xb49f('0x4f')](_0x4a627d);})[_0xb49f('0x15')](function(_0x45e63e){if(_0x45e63e){var _0x3ddeb4=_[_0xb49f('0x31')](values['ChatOpenTabs'],function(_0x4db46c){return{'channel':'CHAT','id':_0x4db46c['id'],'createdAt':_0x4db46c[_0xb49f('0xbc')]};});var _0x46c7bb=_[_0xb49f('0x31')](values[_0xb49f('0xbd')],function(_0x5f399a){return{'channel':_0xb49f('0xbe'),'id':_0x5f399a['id'],'createdAt':_0x5f399a['createdAt']};});var _0x3d0362=_[_0xb49f('0x31')](values[_0xb49f('0xbf')],function(_0x3fdc81){return{'channel':_0xb49f('0xc0'),'id':_0x3fdc81['id'],'createdAt':_0x3fdc81[_0xb49f('0xbc')]};});var _0xbf10c3=_[_0xb49f('0x31')](values['MailOpenTabs'],function(_0x1e2439){return{'channel':'MAIL','id':_0x1e2439['id'],'createdAt':_0x1e2439[_0xb49f('0xbc')]};});var _0x30afe9=_['map'](values[_0xb49f('0xc1')],function(_0x216523){return{'channel':_0xb49f('0xc2'),'id':_0x216523['id'],'createdAt':_0x216523['createdAt']};});var _0xad2f87=_[_0xb49f('0x31')](values[_0xb49f('0xc3')],function(_0x44137d){return{'channel':_0xb49f('0xc4'),'id':_0x44137d['id'],'createdAt':_0x44137d['createdAt']};});var _0x1477ff=_['concat'](_0x3ddeb4,_0x46c7bb,_0x3d0362,_0xbf10c3,_0x30afe9,_0xad2f87);var _0xf42601={'count':_0x1477ff[_0xb49f('0x5c')],'rows':_0x1477ff};return _0xf42601;}else return null;})[_0xb49f('0x15')](respondWithResult(_0x2fa696,null))[_0xb49f('0x50')](handleError(_0x2fa696,null));};exports[_0xb49f('0xc5')]=function(_0x2d1f52,_0x1283d4){var _0x275692={};var _0x4eaace={};var _0x1658f6;var _0x1c3989;return db['User'][_0xb49f('0x98')]({'where':{'id':_0x2d1f52[_0xb49f('0x52')]['id']}})['then'](handleEntityNotFound(_0x1283d4,null))[_0xb49f('0x15')](function(_0x46d254){if(_0x46d254){_0x1658f6=_0x46d254;_0x4eaace[_0xb49f('0x53')]=_[_0xb49f('0x55')](db['CmContact'][_0xb49f('0x56')]);_0x4eaace[_0xb49f('0x3f')]=_['keys'](_0x2d1f52['query']);_0x4eaace[_0xb49f('0x58')]=_[_0xb49f('0x59')](_0x4eaace[_0xb49f('0x53')],_0x4eaace['query']);_0x275692[_0xb49f('0x5a')]=_[_0xb49f('0x59')](_0x4eaace['model'],qs[_0xb49f('0x5b')](_0x2d1f52[_0xb49f('0x3f')][_0xb49f('0x5b')]));_0x275692['attributes']=_0x275692[_0xb49f('0x5a')][_0xb49f('0x5c')]?_0x275692[_0xb49f('0x5a')]:_0x4eaace[_0xb49f('0x53')];_0x275692[_0xb49f('0xc6')]=qs[_0xb49f('0xc7')](_0x2d1f52[_0xb49f('0x3f')]['sort']);_0x275692[_0xb49f('0xc8')]=qs['filters'](_[_0xb49f('0xc9')](_0x2d1f52[_0xb49f('0x3f')],_0x4eaace[_0xb49f('0x58')]));if(_0x2d1f52[_0xb49f('0x3f')]['filter']){_0x275692[_0xb49f('0xc8')]=_[_0xb49f('0x5d')](_0x275692[_0xb49f('0xc8')],{'$or':_[_0xb49f('0x31')](_0x275692[_0xb49f('0x5a')],function(_0x226e15){var _0x4571ff={};_0x4571ff[_0x226e15]={'$like':'%'+_0x2d1f52['query']['filter']+'%'};return _0x4571ff;})});}_0x275692=_[_0xb49f('0x5d')]({},_0x275692,_0x2d1f52[_0xb49f('0x5e')]);return _0x1658f6[_0xb49f('0xc5')](_0x275692);}})['then'](function(_0x43c50f){if(_0x43c50f){_0x1c3989=_0x43c50f['length'];if(_0x2d1f52[_0xb49f('0x3f')]['hasOwnProperty']('includeAll')){_0x275692[_0xb49f('0x41')]=[{'model':db[_0xb49f('0xca')],'as':_0xb49f('0xcb'),'required':![]},{'model':db[_0xb49f('0xcc')],'as':_0xb49f('0xcd'),'attributes':['id',_0xb49f('0x34'),_0xb49f('0xce')],'where':_0x2d1f52[_0xb49f('0x3f')][_0xb49f('0xcf')]?{'id':_0x2d1f52[_0xb49f('0x3f')][_0xb49f('0xcf')]}:undefined,'required':_0x2d1f52['query'][_0xb49f('0xcf')]?!![]:![]}];}if(!_0x2d1f52[_0xb49f('0x3f')][_0xb49f('0xd0')]('nolimit')){_0x275692[_0xb49f('0x22')]=qs[_0xb49f('0x22')](_0x2d1f52[_0xb49f('0x3f')][_0xb49f('0x22')]);_0x275692[_0xb49f('0x20')]=qs['offset'](_0x2d1f52['query'][_0xb49f('0x20')]);}return _0x1658f6['getContacts'](_0x275692);}})[_0xb49f('0x15')](function(_0x5807ba){if(_0x5807ba){return _0x5807ba?{'count':_0x1c3989,'rows':_0x5807ba}:null;}})[_0xb49f('0x15')](respondWithResult(_0x1283d4,null))[_0xb49f('0x50')](handleError(_0x1283d4,null));};exports['getQueues']=function(_0x4c5132,_0x1a42ea){var _0x33a223;var _0x3647cd={};var _0x4bfa00;return db[_0xb49f('0x37')][_0xb49f('0x98')]({'where':{'id':_0x4c5132[_0xb49f('0x52')]['id']},'attributes':['id',_0xb49f('0x34'),_0xb49f('0x29')]})['then'](handleEntityNotFound(_0x1a42ea,null))[_0xb49f('0x15')](function(_0x4b16ad){if(!utils['isValidChannel'](_0x4c5132['query']['channel'])){throw new db[(_0xb49f('0x91'))][(_0xb49f('0x92'))]('Unknown\x20channel');}_0x33a223=_0x4b16ad;var _0x20d3bc={};_0x20d3bc[_0xb49f('0x53')]=_['keys'](db[_[_0xb49f('0xa2')](_0x4c5132['query']['channel'])+'Queue'][_0xb49f('0x56')]);_0x20d3bc[_0xb49f('0x3f')]=_['keys'](_0x4c5132[_0xb49f('0x3f')]);_0x20d3bc['filters']=_[_0xb49f('0x59')](_0x20d3bc[_0xb49f('0x53')],_0x20d3bc[_0xb49f('0x3f')]);_0x3647cd[_0xb49f('0x5a')]=_[_0xb49f('0x59')](_0x20d3bc[_0xb49f('0x53')],qs[_0xb49f('0x5b')](_0x4c5132[_0xb49f('0x3f')][_0xb49f('0x5b')]));_0x3647cd['attributes']=_0x3647cd[_0xb49f('0x5a')]['length']?_0x3647cd['attributes']:_0x20d3bc[_0xb49f('0x53')];_0x3647cd[_0xb49f('0xc6')]=qs['sort'](_0x4c5132[_0xb49f('0x3f')][_0xb49f('0xc7')]);_0x3647cd['where']=qs['filters'](_[_0xb49f('0xc9')](_0x4c5132[_0xb49f('0x3f')],_0x20d3bc[_0xb49f('0x58')]));if(_0x4c5132[_0xb49f('0x3f')][_0xb49f('0x2f')]){_0x3647cd['where']=_[_0xb49f('0x5d')](_0x3647cd[_0xb49f('0xc8')],{'$or':_[_0xb49f('0x31')](_0x3647cd[_0xb49f('0x5a')],function(_0x143b7c){var _0x387ff6={};_0x387ff6[_0x143b7c]={'$like':'%'+_0x4c5132['query'][_0xb49f('0x2f')]+'%'};return _0x387ff6;})});}_0x3647cd=_[_0xb49f('0x5d')]({},_0x3647cd,_0x4c5132[_0xb49f('0x5e')]);switch(_0x33a223[_0xb49f('0x29')]){case'admin':return db[_['capitalize'](_0x4c5132['query'][_0xb49f('0x9d')])+_0xb49f('0xd1')][_0xb49f('0x46')](_0x3647cd);case'user':case _0xb49f('0x80'):return _0x33a223[_0xb49f('0xa9')+_[_0xb49f('0xa2')](_0x4c5132[_0xb49f('0x3f')]['channel'])+_0xb49f('0xd2')](_0x3647cd);default:throw new db[(_0xb49f('0x91'))][(_0xb49f('0x92'))]('Unknown\x20role');}})[_0xb49f('0x15')](function(_0xfc7d66){_0x4bfa00=_0xfc7d66[_0xb49f('0x5c')];if(!_0x4c5132[_0xb49f('0x3f')][_0xb49f('0xd0')]('nolimit')){_0x3647cd['limit']=qs[_0xb49f('0x22')](_0x4c5132[_0xb49f('0x3f')][_0xb49f('0x22')]);_0x3647cd[_0xb49f('0x20')]=qs[_0xb49f('0x20')](_0x4c5132[_0xb49f('0x3f')]['offset']);}switch(_0x33a223['role']){case _0xb49f('0x2a'):return db[_[_0xb49f('0xa2')](_0x4c5132[_0xb49f('0x3f')][_0xb49f('0x9d')])+_0xb49f('0xd1')][_0xb49f('0x46')](_0x3647cd);case _0xb49f('0x7f'):case _0xb49f('0x80'):return _0x33a223[_0xb49f('0xa9')+_[_0xb49f('0xa2')](_0x4c5132[_0xb49f('0x3f')][_0xb49f('0x9d')])+_0xb49f('0xd2')](_0x3647cd);}})[_0xb49f('0x15')](function(_0x329da5){return{'count':_0x4bfa00,'rows':_0x329da5};})[_0xb49f('0x15')](respondWithResult(_0x1a42ea,null))[_0xb49f('0x50')](handleError(_0x1a42ea,null));};exports['getVoiceQueuesRt']=function(_0x3df327,_0x4d1af8){var _0x26bb45={};var _0x4f55e6={};var _0x1dd692;var _0x378ba8;return db['User'][_0xb49f('0x98')]({'where':{'id':_0x3df327[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x4d1af8,null))['then'](function(_0x33487d){if(_0x33487d){_0x1dd692=_0x33487d;_0x4f55e6[_0xb49f('0x53')]=_[_0xb49f('0x55')](db[_0xb49f('0xb1')][_0xb49f('0x56')]);_0x4f55e6['query']=_[_0xb49f('0x55')](_0x3df327[_0xb49f('0x3f')]);_0x4f55e6[_0xb49f('0x58')]=_[_0xb49f('0x59')](_0x4f55e6[_0xb49f('0x53')],_0x4f55e6[_0xb49f('0x3f')]);_0x26bb45['attributes']=_[_0xb49f('0x59')](_0x4f55e6[_0xb49f('0x53')],qs['fields'](_0x3df327[_0xb49f('0x3f')]['fields']));_0x26bb45['attributes']=_0x26bb45[_0xb49f('0x5a')]['length']?_0x26bb45[_0xb49f('0x5a')]:_0x4f55e6[_0xb49f('0x53')];_0x26bb45[_0xb49f('0xc6')]=qs['sort'](_0x3df327[_0xb49f('0x3f')]['sort']);_0x26bb45[_0xb49f('0xc8')]=qs[_0xb49f('0x58')](_['pick'](_0x3df327[_0xb49f('0x3f')],_0x4f55e6[_0xb49f('0x58')]));if(_0x3df327[_0xb49f('0x3f')][_0xb49f('0x2f')]){_0x26bb45['where']=_[_0xb49f('0x5d')](_0x26bb45[_0xb49f('0xc8')],{'$or':_[_0xb49f('0x31')](_0x26bb45['attributes'],function(_0x37a5a3){var _0x217ceb={};_0x217ceb[_0x37a5a3]={'$like':'%'+_0x3df327[_0xb49f('0x3f')][_0xb49f('0x2f')]+'%'};return _0x217ceb;})});}_0x26bb45=_[_0xb49f('0x5d')]({},_0x26bb45,_0x3df327['options']);return _0x1dd692[_0xb49f('0xd3')](_0x26bb45);}})[_0xb49f('0x15')](function(_0x4bf7f9){if(_0x4bf7f9){_0x378ba8=_0x4bf7f9[_0xb49f('0x5c')];if(!_0x3df327[_0xb49f('0x3f')][_0xb49f('0xd0')](_0xb49f('0xd4'))){_0x26bb45[_0xb49f('0x22')]=qs[_0xb49f('0x22')](_0x3df327[_0xb49f('0x3f')][_0xb49f('0x22')]);_0x26bb45[_0xb49f('0x20')]=qs['offset'](_0x3df327[_0xb49f('0x3f')][_0xb49f('0x20')]);}return _0x1dd692[_0xb49f('0xd3')](_0x26bb45);}})[_0xb49f('0x15')](function(_0x569372){if(_0x569372){return _0x569372?{'count':_0x378ba8,'rows':_0x569372}:null;}})['then'](respondWithResult(_0x4d1af8,null))[_0xb49f('0x50')](handleError(_0x4d1af8,null));};exports[_0xb49f('0xd5')]=function(_0x312a8a,_0x16812b){var _0x22ecb9={};var _0x479133={};var _0x614fc6;var _0xcda5f6;return db[_0xb49f('0x37')][_0xb49f('0x98')]({'where':{'id':_0x312a8a['params']['id']}})['then'](handleEntityNotFound(_0x16812b,null))['then'](function(_0x14e638){if(_0x14e638){_0x614fc6=_0x14e638;_0x479133[_0xb49f('0x53')]=_['keys'](db[_0xb49f('0xd6')][_0xb49f('0x56')]);_0x479133['query']=_[_0xb49f('0x55')](_0x312a8a[_0xb49f('0x3f')]);_0x479133['filters']=_[_0xb49f('0x59')](_0x479133['model'],_0x479133[_0xb49f('0x3f')]);_0x22ecb9[_0xb49f('0x5a')]=_[_0xb49f('0x59')](_0x479133['model'],qs[_0xb49f('0x5b')](_0x312a8a['query'][_0xb49f('0x5b')]));_0x22ecb9[_0xb49f('0x5a')]=_0x22ecb9[_0xb49f('0x5a')]['length']?_0x22ecb9['attributes']:_0x479133[_0xb49f('0x53')];_0x22ecb9['order']=qs[_0xb49f('0xc7')](_0x312a8a['query'][_0xb49f('0xc7')]);_0x22ecb9[_0xb49f('0xc8')]=qs[_0xb49f('0x58')](_[_0xb49f('0xc9')](_0x312a8a[_0xb49f('0x3f')],_0x479133[_0xb49f('0x58')]));if(_0x312a8a[_0xb49f('0x3f')][_0xb49f('0x2f')]){_0x22ecb9[_0xb49f('0xc8')]=_[_0xb49f('0x5d')](_0x22ecb9['where'],{'$or':_[_0xb49f('0x31')](_0x22ecb9['attributes'],function(_0x329a6f){var _0x625559={};_0x625559[_0x329a6f]={'$like':'%'+_0x312a8a[_0xb49f('0x3f')][_0xb49f('0x2f')]+'%'};return _0x625559;})});}_0x22ecb9=_['merge']({},_0x22ecb9,_0x312a8a[_0xb49f('0x5e')]);return _0x614fc6[_0xb49f('0xd5')](_0x22ecb9);}})[_0xb49f('0x15')](function(_0x47b20b){if(_0x47b20b){_0xcda5f6=_0x47b20b[_0xb49f('0x5c')];if(!_0x312a8a['query']['hasOwnProperty'](_0xb49f('0xd4'))){_0x22ecb9[_0xb49f('0x22')]=qs[_0xb49f('0x22')](_0x312a8a['query'][_0xb49f('0x22')]);_0x22ecb9[_0xb49f('0x20')]=qs[_0xb49f('0x20')](_0x312a8a['query'][_0xb49f('0x20')]);}return _0x614fc6['getGroups'](_0x22ecb9);}})[_0xb49f('0x15')](function(_0x4c4f4a){if(_0x4c4f4a){return _0x4c4f4a?{'count':_0xcda5f6,'rows':_0x4c4f4a}:null;}})[_0xb49f('0x15')](respondWithResult(_0x16812b,null))[_0xb49f('0x50')](handleError(_0x16812b,null));};exports[_0xb49f('0xd7')]=function(_0x3699e2,_0x389ce2){var _0x6593cd={'raw':!![],'where':{}};var _0x2211de={};var _0x413b86={'count':0x0,'rows':[]};return db[_0xb49f('0x37')][_0xb49f('0x98')]({'where':{'id':_0x3699e2[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x389ce2,null))[_0xb49f('0x15')](function(_0x34cd53){if(_0x34cd53){_0x2211de[_0xb49f('0x53')]=_[_0xb49f('0x55')](db[_0xb49f('0xd8')]['rawAttributes']);_0x2211de[_0xb49f('0x3f')]=_[_0xb49f('0x55')](_0x3699e2[_0xb49f('0x3f')]);_0x2211de['filters']=_[_0xb49f('0x59')](_0x2211de[_0xb49f('0x53')],_0x2211de[_0xb49f('0x3f')]);_0x6593cd['attributes']=_[_0xb49f('0x59')](_0x2211de['model'],qs['fields'](_0x3699e2['query'][_0xb49f('0x5b')]));_0x6593cd[_0xb49f('0x5a')]=_0x6593cd[_0xb49f('0x5a')][_0xb49f('0x5c')]?_0x6593cd[_0xb49f('0x5a')]:_0x2211de[_0xb49f('0x53')];if(!_0x3699e2[_0xb49f('0x3f')][_0xb49f('0xd0')](_0xb49f('0xd4'))){_0x6593cd[_0xb49f('0x22')]=qs[_0xb49f('0x22')](_0x3699e2[_0xb49f('0x3f')]['limit']);_0x6593cd[_0xb49f('0x20')]=qs['offset'](_0x3699e2[_0xb49f('0x3f')][_0xb49f('0x20')]);}_0x6593cd[_0xb49f('0xc6')]=qs[_0xb49f('0xc7')](_0x3699e2[_0xb49f('0x3f')][_0xb49f('0xc7')]);_0x6593cd[_0xb49f('0xc8')]=qs[_0xb49f('0x58')](_['pick'](_0x3699e2[_0xb49f('0x3f')],_0x2211de[_0xb49f('0x58')]));_0x6593cd['where'][_0xb49f('0xd9')]=_0x34cd53['id'];if(_0x3699e2[_0xb49f('0x3f')][_0xb49f('0x2f')]){_0x6593cd[_0xb49f('0xc8')]=_[_0xb49f('0x5d')](_0x6593cd[_0xb49f('0xc8')],{'$or':_[_0xb49f('0x31')](_0x6593cd['attributes'],function(_0x4dc4be){var _0x592741={};_0x592741[_0x4dc4be]={'$like':'%'+_0x3699e2[_0xb49f('0x3f')][_0xb49f('0x2f')]+'%'};return _0x592741;})});}_0x6593cd=_['merge']({},_0x6593cd,_0x3699e2[_0xb49f('0x5e')]);return db[_0xb49f('0xd8')]['count']({'where':_0x6593cd[_0xb49f('0xc8')]})[_0xb49f('0x15')](function(_0x5a02b8){_0x413b86[_0xb49f('0x23')]=_0x5a02b8;if(_0x3699e2[_0xb49f('0x3f')][_0xb49f('0x40')]){_0x6593cd[_0xb49f('0x41')]=[{'all':!![]}];}return db['VoiceRecording'][_0xb49f('0x46')](_0x6593cd);})[_0xb49f('0x15')](function(_0x511093){_0x413b86[_0xb49f('0x47')]=_0x511093;return _0x413b86;});}})[_0xb49f('0x15')](respondWithFilteredResult(_0x389ce2,_0x6593cd))[_0xb49f('0x50')](handleError(_0x389ce2,null));};exports[_0xb49f('0xda')]=function(_0xa52d4f,_0x295f72){var _0x58106f={'raw':!![],'where':{}};var _0xa08ae4={};var _0x1b5765={'count':0x0,'rows':[]};return db[_0xb49f('0x37')][_0xb49f('0x98')]({'where':{'id':_0xa52d4f[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x295f72,null))['then'](function(_0x31f62b){if(_0x31f62b){_0xa08ae4[_0xb49f('0x53')]=_[_0xb49f('0x55')](db['ScreenRecording'][_0xb49f('0x56')]);_0xa08ae4[_0xb49f('0x3f')]=_['keys'](_0xa52d4f[_0xb49f('0x3f')]);_0xa08ae4[_0xb49f('0x58')]=_[_0xb49f('0x59')](_0xa08ae4['model'],_0xa08ae4['query']);_0x58106f[_0xb49f('0x5a')]=_[_0xb49f('0x59')](_0xa08ae4[_0xb49f('0x53')],qs[_0xb49f('0x5b')](_0xa52d4f[_0xb49f('0x3f')][_0xb49f('0x5b')]));_0x58106f[_0xb49f('0x5a')]=_0x58106f[_0xb49f('0x5a')][_0xb49f('0x5c')]?_0x58106f[_0xb49f('0x5a')]:_0xa08ae4[_0xb49f('0x53')];if(!_0xa52d4f[_0xb49f('0x3f')][_0xb49f('0xd0')]('nolimit')){_0x58106f[_0xb49f('0x22')]=qs['limit'](_0xa52d4f['query'][_0xb49f('0x22')]);_0x58106f[_0xb49f('0x20')]=qs[_0xb49f('0x20')](_0xa52d4f[_0xb49f('0x3f')]['offset']);}_0x58106f[_0xb49f('0xc6')]=qs[_0xb49f('0xc7')](_0xa52d4f[_0xb49f('0x3f')][_0xb49f('0xc7')]);_0x58106f[_0xb49f('0xc8')]=qs[_0xb49f('0x58')](_[_0xb49f('0xc9')](_0xa52d4f[_0xb49f('0x3f')],_0xa08ae4[_0xb49f('0x58')]));_0x58106f[_0xb49f('0xc8')][_0xb49f('0xd9')]=_0x31f62b['id'];if(_0xa52d4f['query'][_0xb49f('0x2f')]){_0x58106f['where']=_[_0xb49f('0x5d')](_0x58106f[_0xb49f('0xc8')],{'$or':_[_0xb49f('0x31')](_0x58106f[_0xb49f('0x5a')],function(_0x3fd993){var _0x180234={};_0x180234[_0x3fd993]={'$like':'%'+_0xa52d4f[_0xb49f('0x3f')][_0xb49f('0x2f')]+'%'};return _0x180234;})});}_0x58106f=_[_0xb49f('0x5d')]({},_0x58106f,_0xa52d4f[_0xb49f('0x5e')]);return db[_0xb49f('0xdb')]['count']({'where':_0x58106f[_0xb49f('0xc8')]})[_0xb49f('0x15')](function(_0x544f27){_0x1b5765[_0xb49f('0x23')]=_0x544f27;if(_0xa52d4f[_0xb49f('0x3f')]['includeAll']){_0x58106f[_0xb49f('0x41')]=[{'all':!![]}];}return db[_0xb49f('0xdb')][_0xb49f('0x46')](_0x58106f);})['then'](function(_0x1bba63){_0x1b5765['rows']=_0x1bba63;return _0x1b5765;});}})['then'](respondWithFilteredResult(_0x295f72,_0x58106f))[_0xb49f('0x50')](handleError(_0x295f72,null));};exports[_0xb49f('0xdc')]=function(_0x47db8e,_0x33587a){var _0x1baacc={};var _0xd0d251={};var _0x5640e8;var _0x13fdd7;return db[_0xb49f('0x37')]['findOne']({'where':{'id':_0x47db8e[_0xb49f('0x52')]['id']}})['then'](handleEntityNotFound(_0x33587a,null))['then'](function(_0x303f41){if(_0x303f41){_0x5640e8=_0x303f41;_0xd0d251[_0xb49f('0x53')]=_[_0xb49f('0x55')](db[_0xb49f('0xdd')][_0xb49f('0x56')]);_0xd0d251['query']=_[_0xb49f('0x55')](_0x47db8e['query']);_0xd0d251[_0xb49f('0x58')]=_[_0xb49f('0x59')](_0xd0d251[_0xb49f('0x53')],_0xd0d251[_0xb49f('0x3f')]);_0x1baacc[_0xb49f('0x5a')]=_['intersection'](_0xd0d251['model'],qs[_0xb49f('0x5b')](_0x47db8e[_0xb49f('0x3f')][_0xb49f('0x5b')]));_0x1baacc[_0xb49f('0x5a')]=_0x1baacc[_0xb49f('0x5a')]['length']?_0x1baacc[_0xb49f('0x5a')]:_0xd0d251[_0xb49f('0x53')];_0x1baacc['order']=qs['sort'](_0x47db8e[_0xb49f('0x3f')][_0xb49f('0xc7')]);_0x1baacc['where']=qs[_0xb49f('0x58')](_[_0xb49f('0xc9')](_0x47db8e[_0xb49f('0x3f')],_0xd0d251[_0xb49f('0x58')]));if(_0x47db8e['query'][_0xb49f('0x2f')]){_0x1baacc[_0xb49f('0xc8')]=_[_0xb49f('0x5d')](_0x1baacc[_0xb49f('0xc8')],{'$or':_[_0xb49f('0x31')](_0x1baacc[_0xb49f('0x5a')],function(_0x17d856){var _0x1168c4={};_0x1168c4[_0x17d856]={'$like':'%'+_0x47db8e[_0xb49f('0x3f')][_0xb49f('0x2f')]+'%'};return _0x1168c4;})});}_0x1baacc=_['merge']({},_0x1baacc,_0x47db8e['options']);return _0x5640e8[_0xb49f('0xdc')](_0x1baacc);}})[_0xb49f('0x15')](function(_0x1df731){if(_0x1df731){_0x13fdd7=_0x1df731['length'];if(!_0x47db8e[_0xb49f('0x3f')][_0xb49f('0xd0')](_0xb49f('0xd4'))){_0x1baacc[_0xb49f('0x22')]=qs[_0xb49f('0x22')](_0x47db8e['query']['limit']);_0x1baacc[_0xb49f('0x20')]=qs[_0xb49f('0x20')](_0x47db8e[_0xb49f('0x3f')][_0xb49f('0x20')]);}return _0x5640e8[_0xb49f('0xdc')](_0x1baacc);}})[_0xb49f('0x15')](function(_0x1b0405){if(_0x1b0405){return _0x1b0405?{'count':_0x13fdd7,'rows':_0x1b0405}:null;}})[_0xb49f('0x15')](respondWithResult(_0x33587a,null))['catch'](handleError(_0x33587a,null));};exports[_0xb49f('0xde')]=function(_0x4ac8b1,_0x211d55){var _0x1bdd56={};var _0x2782dc={};var _0x4cc536;var _0x322cfb;return db[_0xb49f('0x37')][_0xb49f('0x98')]({'where':{'id':_0x4ac8b1[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x211d55,null))['then'](function(_0x3c6a09){if(_0x3c6a09){_0x4cc536=_0x3c6a09;_0x2782dc[_0xb49f('0x53')]=_['keys'](db[_0xb49f('0xdf')]['rawAttributes']);_0x2782dc[_0xb49f('0x3f')]=_[_0xb49f('0x55')](_0x4ac8b1[_0xb49f('0x3f')]);_0x2782dc['filters']=_[_0xb49f('0x59')](_0x2782dc[_0xb49f('0x53')],_0x2782dc[_0xb49f('0x3f')]);_0x1bdd56['attributes']=_[_0xb49f('0x59')](_0x2782dc[_0xb49f('0x53')],qs['fields'](_0x4ac8b1[_0xb49f('0x3f')]['fields']));_0x1bdd56[_0xb49f('0x5a')]=_0x1bdd56[_0xb49f('0x5a')]['length']?_0x1bdd56[_0xb49f('0x5a')]:_0x2782dc[_0xb49f('0x53')];_0x1bdd56[_0xb49f('0xc6')]=qs[_0xb49f('0xc7')](_0x4ac8b1[_0xb49f('0x3f')][_0xb49f('0xc7')]);_0x1bdd56['where']=qs['filters'](_[_0xb49f('0xc9')](_0x4ac8b1[_0xb49f('0x3f')],_0x2782dc[_0xb49f('0x58')]));if(_0x4ac8b1[_0xb49f('0x3f')][_0xb49f('0x2f')]){_0x1bdd56[_0xb49f('0xc8')]=_['merge'](_0x1bdd56[_0xb49f('0xc8')],{'$or':_[_0xb49f('0x31')](_0x1bdd56[_0xb49f('0x5a')],function(_0x742bcd){var _0x1001cf={};_0x1001cf[_0x742bcd]={'$like':'%'+_0x4ac8b1[_0xb49f('0x3f')]['filter']+'%'};return _0x1001cf;})});}_0x1bdd56=_['merge']({},_0x1bdd56,_0x4ac8b1[_0xb49f('0x5e')]);return _0x4cc536[_0xb49f('0xde')](_0x1bdd56);}})[_0xb49f('0x15')](function(_0x2797b5){if(_0x2797b5){_0x322cfb=_0x2797b5[_0xb49f('0x5c')];if(!_0x4ac8b1[_0xb49f('0x3f')][_0xb49f('0xd0')]('nolimit')){_0x1bdd56[_0xb49f('0x22')]=qs['limit'](_0x4ac8b1[_0xb49f('0x3f')][_0xb49f('0x22')]);_0x1bdd56['offset']=qs['offset'](_0x4ac8b1[_0xb49f('0x3f')]['offset']);}return _0x4cc536['getOpenchannelInteractions'](_0x1bdd56);}})[_0xb49f('0x15')](function(_0x423612){if(_0x423612){return _0x423612?{'count':_0x322cfb,'rows':_0x423612}:null;}})['then'](respondWithResult(_0x211d55,null))[_0xb49f('0x50')](handleError(_0x211d55,null));};exports['getMailInteractions']=function(_0x1a8c37,_0x1304ef){var _0x50a343={'raw':!![],'where':{}};var _0x5ac9c3={};var _0xab5cc5={'count':0x0,'rows':[]};return db[_0xb49f('0x37')][_0xb49f('0x98')]({'where':{'id':_0x1a8c37[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x1304ef,null))[_0xb49f('0x15')](function(_0x4aceb2){if(_0x4aceb2){_0x5ac9c3[_0xb49f('0x53')]=_[_0xb49f('0x55')](db['MailInteraction'][_0xb49f('0x56')]);_0x5ac9c3[_0xb49f('0x3f')]=_[_0xb49f('0x55')](_0x1a8c37['query']);_0x5ac9c3[_0xb49f('0x58')]=_[_0xb49f('0x59')](_0x5ac9c3[_0xb49f('0x53')],_0x5ac9c3[_0xb49f('0x3f')]);_0x50a343[_0xb49f('0x5a')]=_[_0xb49f('0x59')](_0x5ac9c3['model'],qs[_0xb49f('0x5b')](_0x1a8c37[_0xb49f('0x3f')][_0xb49f('0x5b')]));_0x50a343['attributes']=_0x50a343[_0xb49f('0x5a')][_0xb49f('0x5c')]?_0x50a343['attributes']:_0x5ac9c3[_0xb49f('0x53')];if(!_0x1a8c37[_0xb49f('0x3f')][_0xb49f('0xd0')](_0xb49f('0xd4'))){_0x50a343['limit']=qs[_0xb49f('0x22')](_0x1a8c37['query'][_0xb49f('0x22')]);_0x50a343[_0xb49f('0x20')]=qs[_0xb49f('0x20')](_0x1a8c37[_0xb49f('0x3f')][_0xb49f('0x20')]);}_0x50a343[_0xb49f('0xc6')]=qs[_0xb49f('0xc7')](_0x1a8c37[_0xb49f('0x3f')][_0xb49f('0xc7')]);_0x50a343[_0xb49f('0xc8')]=qs['filters'](_[_0xb49f('0xc9')](_0x1a8c37[_0xb49f('0x3f')],_0x5ac9c3[_0xb49f('0x58')]));_0x50a343[_0xb49f('0xc8')][_0xb49f('0xd9')]=_0x4aceb2['id'];if(_0x1a8c37['query'][_0xb49f('0x2f')]){_0x50a343[_0xb49f('0xc8')]=_[_0xb49f('0x5d')](_0x50a343[_0xb49f('0xc8')],{'$or':_[_0xb49f('0x31')](_0x50a343[_0xb49f('0x5a')],function(_0x246d35){var _0x13960a={};_0x13960a[_0x246d35]={'$like':'%'+_0x1a8c37[_0xb49f('0x3f')][_0xb49f('0x2f')]+'%'};return _0x13960a;})});}_0x50a343=_[_0xb49f('0x5d')]({},_0x50a343,_0x1a8c37[_0xb49f('0x5e')]);return db[_0xb49f('0xe0')][_0xb49f('0x23')]({'where':_0x50a343[_0xb49f('0xc8')]})[_0xb49f('0x15')](function(_0x4c3174){_0xab5cc5[_0xb49f('0x23')]=_0x4c3174;if(_0x1a8c37[_0xb49f('0x3f')]['includeAll']){_0x50a343[_0xb49f('0x41')]=[{'all':!![]}];}return db[_0xb49f('0xe0')][_0xb49f('0x46')](_0x50a343);})[_0xb49f('0x15')](function(_0x4b76c1){_0xab5cc5[_0xb49f('0x47')]=_0x4b76c1;return _0xab5cc5;});}})[_0xb49f('0x15')](respondWithFilteredResult(_0x1304ef,_0x50a343))[_0xb49f('0x50')](handleError(_0x1304ef,null));};exports[_0xb49f('0xe1')]=function(_0x47600b,_0x41cb06){var _0x4a34c6={};var _0x3eb4fc={};var _0x22d5a6;var _0x3260ee;return db[_0xb49f('0x37')][_0xb49f('0x98')]({'where':{'id':_0x47600b[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x41cb06,null))['then'](function(_0x364c9b){if(_0x364c9b){_0x22d5a6=_0x364c9b;_0x3eb4fc[_0xb49f('0x53')]=_['keys'](db[_0xb49f('0xe2')][_0xb49f('0x56')]);_0x3eb4fc[_0xb49f('0x3f')]=_[_0xb49f('0x55')](_0x47600b['query']);_0x3eb4fc[_0xb49f('0x58')]=_[_0xb49f('0x59')](_0x3eb4fc[_0xb49f('0x53')],_0x3eb4fc[_0xb49f('0x3f')]);_0x4a34c6[_0xb49f('0x5a')]=_[_0xb49f('0x59')](_0x3eb4fc['model'],qs['fields'](_0x47600b['query'][_0xb49f('0x5b')]));_0x4a34c6[_0xb49f('0x5a')]=_0x4a34c6[_0xb49f('0x5a')][_0xb49f('0x5c')]?_0x4a34c6[_0xb49f('0x5a')]:_0x3eb4fc['model'];_0x4a34c6[_0xb49f('0xc6')]=qs[_0xb49f('0xc7')](_0x47600b['query'][_0xb49f('0xc7')]);_0x4a34c6['where']=qs['filters'](_[_0xb49f('0xc9')](_0x47600b[_0xb49f('0x3f')],_0x3eb4fc[_0xb49f('0x58')]));if(_0x47600b['query'][_0xb49f('0x2f')]){_0x4a34c6['where']=_[_0xb49f('0x5d')](_0x4a34c6[_0xb49f('0xc8')],{'$or':_[_0xb49f('0x31')](_0x4a34c6[_0xb49f('0x5a')],function(_0x39c121){var _0x29c6f3={};_0x29c6f3[_0x39c121]={'$like':'%'+_0x47600b[_0xb49f('0x3f')][_0xb49f('0x2f')]+'%'};return _0x29c6f3;})});}_0x4a34c6=_['merge']({},_0x4a34c6,_0x47600b[_0xb49f('0x5e')]);return _0x22d5a6[_0xb49f('0xe1')](_0x4a34c6);}})[_0xb49f('0x15')](function(_0x52556e){if(_0x52556e){_0x3260ee=_0x52556e[_0xb49f('0x5c')];if(!_0x47600b[_0xb49f('0x3f')][_0xb49f('0xd0')]('nolimit')){_0x4a34c6['limit']=qs[_0xb49f('0x22')](_0x47600b['query'][_0xb49f('0x22')]);_0x4a34c6[_0xb49f('0x20')]=qs[_0xb49f('0x20')](_0x47600b[_0xb49f('0x3f')]['offset']);}return _0x22d5a6[_0xb49f('0xe1')](_0x4a34c6);}})[_0xb49f('0x15')](function(_0x2f4b36){if(_0x2f4b36){return _0x2f4b36?{'count':_0x3260ee,'rows':_0x2f4b36}:null;}})[_0xb49f('0x15')](respondWithResult(_0x41cb06,null))[_0xb49f('0x50')](handleError(_0x41cb06,null));};exports[_0xb49f('0xe3')]=function(_0x2397db,_0xded731){var _0x37e86e={};var _0x20eb7a={};var _0x225917;var _0x523b29;return db[_0xb49f('0x37')][_0xb49f('0x98')]({'where':{'id':_0x2397db[_0xb49f('0x52')]['id']}})['then'](handleEntityNotFound(_0xded731,null))[_0xb49f('0x15')](function(_0x273e6f){if(_0x273e6f){_0x225917=_0x273e6f;_0x20eb7a['model']=_[_0xb49f('0x55')](db['FaxInteraction']['rawAttributes']);_0x20eb7a[_0xb49f('0x3f')]=_[_0xb49f('0x55')](_0x2397db[_0xb49f('0x3f')]);_0x20eb7a[_0xb49f('0x58')]=_['intersection'](_0x20eb7a[_0xb49f('0x53')],_0x20eb7a[_0xb49f('0x3f')]);_0x37e86e[_0xb49f('0x5a')]=_[_0xb49f('0x59')](_0x20eb7a['model'],qs[_0xb49f('0x5b')](_0x2397db[_0xb49f('0x3f')][_0xb49f('0x5b')]));_0x37e86e['attributes']=_0x37e86e[_0xb49f('0x5a')][_0xb49f('0x5c')]?_0x37e86e[_0xb49f('0x5a')]:_0x20eb7a[_0xb49f('0x53')];_0x37e86e['order']=qs[_0xb49f('0xc7')](_0x2397db[_0xb49f('0x3f')][_0xb49f('0xc7')]);_0x37e86e[_0xb49f('0xc8')]=qs[_0xb49f('0x58')](_[_0xb49f('0xc9')](_0x2397db[_0xb49f('0x3f')],_0x20eb7a[_0xb49f('0x58')]));if(_0x2397db[_0xb49f('0x3f')][_0xb49f('0x2f')]){_0x37e86e['where']=_[_0xb49f('0x5d')](_0x37e86e['where'],{'$or':_[_0xb49f('0x31')](_0x37e86e[_0xb49f('0x5a')],function(_0x5a37ac){var _0x254a88={};_0x254a88[_0x5a37ac]={'$like':'%'+_0x2397db[_0xb49f('0x3f')][_0xb49f('0x2f')]+'%'};return _0x254a88;})});}_0x37e86e=_[_0xb49f('0x5d')]({},_0x37e86e,_0x2397db[_0xb49f('0x5e')]);return _0x225917['getFaxInteractions'](_0x37e86e);}})[_0xb49f('0x15')](function(_0x184a41){if(_0x184a41){_0x523b29=_0x184a41[_0xb49f('0x5c')];if(!_0x2397db[_0xb49f('0x3f')][_0xb49f('0xd0')](_0xb49f('0xd4'))){_0x37e86e[_0xb49f('0x22')]=qs[_0xb49f('0x22')](_0x2397db[_0xb49f('0x3f')][_0xb49f('0x22')]);_0x37e86e[_0xb49f('0x20')]=qs[_0xb49f('0x20')](_0x2397db[_0xb49f('0x3f')]['offset']);}return _0x225917[_0xb49f('0xe3')](_0x37e86e);}})[_0xb49f('0x15')](function(_0x764a80){if(_0x764a80){return _0x764a80?{'count':_0x523b29,'rows':_0x764a80}:null;}})[_0xb49f('0x15')](respondWithResult(_0xded731,null))[_0xb49f('0x50')](handleError(_0xded731,null));};exports[_0xb49f('0xe4')]=function(_0x1f0bfb,_0x1c254c){var _0x5aa6ed={};var _0x4b1786={};var _0x317d24;var _0x40c1da;return db['User']['findOne']({'where':{'id':_0x1f0bfb[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x1c254c,null))[_0xb49f('0x15')](function(_0x8a8d2f){if(_0x8a8d2f){_0x317d24=_0x8a8d2f;_0x4b1786[_0xb49f('0x53')]=_[_0xb49f('0x55')](db[_0xb49f('0xe5')][_0xb49f('0x56')]);_0x4b1786[_0xb49f('0x3f')]=_['keys'](_0x1f0bfb['query']);_0x4b1786[_0xb49f('0x58')]=_[_0xb49f('0x59')](_0x4b1786[_0xb49f('0x53')],_0x4b1786[_0xb49f('0x3f')]);_0x5aa6ed['attributes']=_[_0xb49f('0x59')](_0x4b1786['model'],qs[_0xb49f('0x5b')](_0x1f0bfb[_0xb49f('0x3f')][_0xb49f('0x5b')]));_0x5aa6ed[_0xb49f('0x5a')]=_0x5aa6ed[_0xb49f('0x5a')]['length']?_0x5aa6ed[_0xb49f('0x5a')]:_0x4b1786[_0xb49f('0x53')];_0x5aa6ed[_0xb49f('0xc6')]=qs['sort'](_0x1f0bfb[_0xb49f('0x3f')]['sort']);_0x5aa6ed[_0xb49f('0xc8')]=qs[_0xb49f('0x58')](_[_0xb49f('0xc9')](_0x1f0bfb[_0xb49f('0x3f')],_0x4b1786[_0xb49f('0x58')]));if(_0x1f0bfb[_0xb49f('0x3f')][_0xb49f('0x2f')]){_0x5aa6ed['where']=_[_0xb49f('0x5d')](_0x5aa6ed['where'],{'$or':_['map'](_0x5aa6ed['attributes'],function(_0x2e4ce0){var _0x6e738e={};_0x6e738e[_0x2e4ce0]={'$like':'%'+_0x1f0bfb['query'][_0xb49f('0x2f')]+'%'};return _0x6e738e;})});}_0x5aa6ed=_[_0xb49f('0x5d')]({},_0x5aa6ed,_0x1f0bfb['options']);return _0x317d24['getWhatsappInteractions'](_0x5aa6ed);}})[_0xb49f('0x15')](function(_0x3ee1de){if(_0x3ee1de){_0x40c1da=_0x3ee1de[_0xb49f('0x5c')];if(!_0x1f0bfb[_0xb49f('0x3f')]['hasOwnProperty'](_0xb49f('0xd4'))){_0x5aa6ed[_0xb49f('0x22')]=qs[_0xb49f('0x22')](_0x1f0bfb[_0xb49f('0x3f')][_0xb49f('0x22')]);_0x5aa6ed['offset']=qs[_0xb49f('0x20')](_0x1f0bfb[_0xb49f('0x3f')][_0xb49f('0x20')]);}return _0x317d24[_0xb49f('0xe4')](_0x5aa6ed);}})[_0xb49f('0x15')](function(_0x3ba27d){if(_0x3ba27d){return _0x3ba27d?{'count':_0x40c1da,'rows':_0x3ba27d}:null;}})[_0xb49f('0x15')](respondWithResult(_0x1c254c,null))[_0xb49f('0x50')](handleError(_0x1c254c,null));};exports[_0xb49f('0xe6')]=function(_0x39fdf0,_0x421ba8,_0x2cab18){var _0x5ecf2e;var _0x20b07a;var _0x2a3421;var _0x339128=!_[_0xb49f('0x6b')](_0x39fdf0[_0xb49f('0x52')]['id'])?_0x39fdf0[_0xb49f('0x52')]['id']:!_[_0xb49f('0x6b')](_0x39fdf0[_0xb49f('0x7f')]['id'])?_0x39fdf0[_0xb49f('0x7f')]['id']:null;return db['User'][_0xb49f('0x5f')]({'where':{'id':_0x339128,'role':{'$or':[_0xb49f('0x2a'),_0xb49f('0x7f'),'agent']}},'attributes':['id',_0xb49f('0x34'),'phone',_0xb49f('0xe7'),_0xb49f('0x29'),_0xb49f('0x69'),'loginInPause']})[_0xb49f('0x15')](function(_0x22c17d){if(_0x22c17d){if(_0x22c17d[_0xb49f('0x29')]===_0xb49f('0x80')){_0x5ecf2e=_0x22c17d;if(_0x39fdf0['body'][_0xb49f('0xaa')]){_0x2a3421=util[_0xb49f('0xe8')]('LOCAL/%s@from-sip/n',_0x5ecf2e[_0x39fdf0[_0xb49f('0x61')]['interface']]);}else if(_0x39fdf0[_0xb49f('0x61')]['intrf']){_0x2a3421=util[_0xb49f('0xe8')](_0xb49f('0xab'),_0x39fdf0[_0xb49f('0x61')][_0xb49f('0xe9')]);}else{_0x2a3421=util[_0xb49f('0xe8')]('SIP/%s',_0x5ecf2e['name']);}socket['to'](util[_0xb49f('0xe8')](_0xb49f('0xea'),_0x5ecf2e[_0xb49f('0x34')]))[_0xb49f('0x26')](_0xb49f('0xeb'),{'user':{'id':_0x5ecf2e['id'],'name':_0x5ecf2e[_0xb49f('0x34')]},'ip':_0x39fdf0['headers'][_0xb49f('0xec')]||_0x39fdf0['connection'][_0xb49f('0xed')]||_0x39fdf0[_0xb49f('0xee')][_0xb49f('0xed')]||_0x39fdf0[_0xb49f('0xef')][_0xb49f('0xee')][_0xb49f('0xed')]});return db['UserVoiceQueueRt'][_0xb49f('0x28')]({'where':{'membername':_0x5ecf2e[_0xb49f('0x34')]},'individualHooks':!![]});}}else{throw new db[(_0xb49f('0x91'))][(_0xb49f('0x92'))](_0xb49f('0xf0'));}})[_0xb49f('0x15')](function(){if(_0x5ecf2e){return _0x5ecf2e[_0xb49f('0xf1')]({'raw':!![]});}})['then'](function(_0x50caf0){if(_0x5ecf2e){var _0x3a1f21=[];if(_0x50caf0){_0x20b07a=_0x50caf0;if(_0x20b07a[_0xb49f('0x5c')]){for(var _0x407a72=0x0;_0x407a72<_0x20b07a['length'];_0x407a72++){_0x3a1f21[_0xb49f('0x45')]({'membername':_0x5ecf2e[_0xb49f('0x34')],'UserId':_0x5ecf2e['id'],'queue_name':_0x20b07a[_0x407a72][_0xb49f('0x34')],'VoiceQueueId':_0x20b07a[_0x407a72]['id'],'interface':_0x2a3421,'paused':_0x5ecf2e[_0xb49f('0xf2')]||![],'penalty':_0x20b07a[_0x407a72][_0xb49f('0xf3')]||0x0});}return BPromise['each'](_0x3a1f21,function(_0x555009){return db['UserVoiceQueueRt'][_0xb49f('0xac')](_0x555009);});}}}})[_0xb49f('0x15')](function(){if(_0x5ecf2e){return db[_0xb49f('0xf4')]['findAll']({'where':{'membername':_0x5ecf2e[_0xb49f('0x34')],'exitAt':null}});}})[_0xb49f('0x15')](function(_0x226a5a){if(_0x5ecf2e){var _0x4f259e=[];_0x226a5a['forEach'](function(_0x408e45){_0x4f259e[_0xb49f('0x45')](_0x408e45[_0xb49f('0x25')]({'exitAt':moment()[_0xb49f('0xe8')](_0xb49f('0xf5'))}));});return BPromise[_0xb49f('0x4f')](_0x4f259e);}})['then'](function(){if(_0x5ecf2e){var _0x4b6bf5=[];var _0x4b6986=[];var _0x1c5dad=utils[_0xb49f('0xf6')]();var _0x654c89={'membername':_0x5ecf2e[_0xb49f('0x34')],'interface':_0x2a3421,'enterAt':moment()[_0xb49f('0xe8')](_0xb49f('0xf5')),'role':_0x5ecf2e[_0xb49f('0x29')],'internal':_0x5ecf2e[_0xb49f('0x69')]};_0x1c5dad[_0xb49f('0xf7')](function(_0x5597b5){_0x4b6bf5[_0xb49f('0x45')](_[_0xb49f('0x5d')]({'channel':_0x5597b5,'type':'LOGIN','data1':_0x39fdf0[_0xb49f('0x61')][_0xb49f('0xf8')],'data2':_0x2a3421},_0x654c89));if(_0x5ecf2e[_0xb49f('0xf2')]){_0x4b6986[_0xb49f('0x45')](_[_0xb49f('0x5d')]({'channel':_0x5597b5,'type':'PAUSE','data1':_0xb49f('0xf9')},_0x654c89));}});return db[_0xb49f('0xf4')][_0xb49f('0x88')](_0x4b6bf5['concat'](_0x4b6986),{'individualHooks':!![]});}})[_0xb49f('0x15')](function(){if(_0x5ecf2e){return _0x5ecf2e[_0xb49f('0x25')]({'online':!![],'lastLoginAt':moment()[_0xb49f('0xe8')](_0xb49f('0xf5')),'voicePause':_0x5ecf2e[_0xb49f('0xf2')]||![],'mailPause':_0x5ecf2e[_0xb49f('0xf2')]||![],'chatPause':_0x5ecf2e['loginInPause']||![],'faxPause':_0x5ecf2e[_0xb49f('0xf2')]||![],'smsPause':_0x5ecf2e[_0xb49f('0xf2')]||![],'openchannelPause':_0x5ecf2e[_0xb49f('0xf2')]||![],'whatsappPause':_0x5ecf2e['loginInPause']||![],'pauseType':_0x5ecf2e['loginInPause']?_0xb49f('0xf9'):null,'interface':_0x2a3421,'lastPauseAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')});}})[_0xb49f('0x15')](function(_0x5bcb2e){if(_0x39fdf0[_0xb49f('0xfa')]){return _0x2cab18();}else{return BPromise['resolve'](_0x5bcb2e)[_0xb49f('0x15')](respondWithResult(_0x421ba8,null));}})[_0xb49f('0x50')](handleError(_0x421ba8,null));};exports[_0xb49f('0xfb')]=function(_0x5af8d5,_0x162c7f){var _0x3615bd;return db['User'][_0xb49f('0x5f')]({'where':{'id':_0x5af8d5[_0xb49f('0x52')]['id'],'role':_0xb49f('0x80')},'attributes':['id',_0xb49f('0x34'),_0xb49f('0x29')]})[_0xb49f('0x15')](handleEntityNotFound(_0x162c7f,null))['then'](function(_0xd322da){if(_0xd322da){_0x3615bd=_0xd322da;return db['UserVoiceQueueRt'][_0xb49f('0x28')]({'where':{'membername':_0x3615bd[_0xb49f('0x34')]},'individualHooks':!![]});}})[_0xb49f('0x15')](function(){return db[_0xb49f('0xf4')][_0xb49f('0x46')]({'where':{'membername':_0x3615bd[_0xb49f('0x34')],'exitAt':null}});})[_0xb49f('0x15')](function(_0x48e79c){var _0xa5572a=[];_0x48e79c['forEach'](function(_0x27911c){_0xa5572a[_0xb49f('0x45')](_0x27911c[_0xb49f('0x25')]({'exitAt':moment()[_0xb49f('0xe8')](_0xb49f('0xf5'))}));});return BPromise[_0xb49f('0x4f')](_0xa5572a);})[_0xb49f('0x15')](function(){return _0x3615bd['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0xb49f('0x15')](respondWithResult(_0x162c7f,null))[_0xb49f('0x50')](handleError(_0x162c7f,null));};exports[_0xb49f('0xfc')]=function(_0x4a78a7,_0xbcc166){var _0x59bf12;return db['UserVoiceQueueRt'][_0xb49f('0x25')]({'paused':0x1},{'where':{'UserId':_0x4a78a7[_0xb49f('0x52')]['id']},'individualHooks':!![]})[_0xb49f('0x15')](function(){return db[_0xb49f('0x37')]['find']({'where':{'id':_0x4a78a7['params']['id'],'role':_0xb49f('0x80')},'attributes':['id',_0xb49f('0x34'),_0xb49f('0x29'),_0xb49f('0x69'),_0xb49f('0xaa')]});})[_0xb49f('0x15')](handleEntityNotFound(_0xbcc166,null))[_0xb49f('0x15')](function(_0x1b2c31){if(_0x1b2c31){_0x59bf12=_0x1b2c31;return respondWithRpcPromise('QueuePause',_0xb49f('0xfc'),{'id':_0x59bf12['id'],'name':_0x59bf12[_0xb49f('0x34')],'pause':!![]});}})['then'](function(){if(_0x59bf12){return db[_0xb49f('0xf4')][_0xb49f('0x46')]({'where':{'membername':_0x59bf12[_0xb49f('0x34')],'type':_0xb49f('0xfd'),'exitAt':null}});}})[_0xb49f('0x15')](function(_0x416e07){if(_0x416e07[_0xb49f('0x5c')]){var _0x3b55e1=moment()[_0xb49f('0xe8')](_0xb49f('0xf5'));for(var _0x33dc42=0x0,_0x369ae2=_0x416e07['length'];_0x33dc42<_0x369ae2;_0x33dc42++){_0x416e07[_0x33dc42][_0xb49f('0xfe')]({'exitAt':_0x3b55e1});}}})[_0xb49f('0x15')](function(){var _0x443429=[];var _0x47572d=utils[_0xb49f('0xf6')]();_0x47572d['forEach'](function(_0x38327e){_0x443429[_0xb49f('0x45')]({'channel':_0x38327e,'membername':_0x59bf12['name'],'interface':_[_0xb49f('0x6b')](_0x59bf12[_0xb49f('0xaa')])?util['format'](_0xb49f('0xab'),_0x59bf12[_0xb49f('0x34')]):_0x59bf12[_0xb49f('0xaa')],'type':'PAUSE','enterAt':moment()[_0xb49f('0xe8')](_0xb49f('0xf5')),'data1':_0x4a78a7[_0xb49f('0x61')][_0xb49f('0x39')]||'DEFAULT\x20PAUSE','role':_0x59bf12[_0xb49f('0x29')],'internal':_0x59bf12[_0xb49f('0x69')]});});return db[_0xb49f('0xf4')][_0xb49f('0x88')](_0x443429,{'individualHooks':!![]});})[_0xb49f('0x15')](function(){return _0x59bf12[_0xb49f('0x25')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x4a78a7['body']['type']||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0xb49f('0xe8')]('YYYY-MM-DD\x20HH:mm:ss')});})[_0xb49f('0x15')](respondWithResult(_0xbcc166,null))['catch'](handleError(_0xbcc166,null));};exports['unpause']=function(_0x5f0ffc,_0x14757f){var _0xc30c8c;return db['User'][_0xb49f('0x5f')]({'where':{'id':_0x5f0ffc['params']['id']},'attributes':['id',_0xb49f('0x34'),_0xb49f('0x29'),_0xb49f('0x9e'),_0xb49f('0xff'),_0xb49f('0x100'),'faxPause',_0xb49f('0x101'),_0xb49f('0x102'),_0xb49f('0x103'),_0xb49f('0x104'),_0xb49f('0x105')]})[_0xb49f('0x15')](handleEntityNotFound(_0x14757f,null))['then'](function(_0x20d044){if(_0x20d044){_0xc30c8c=_0x20d044;if(_0x5f0ffc[_0xb49f('0x61')]['channel']&&!utils[_0xb49f('0x9f')](_0x5f0ffc[_0xb49f('0x61')][_0xb49f('0x9d')])){throw new db[(_0xb49f('0x91'))][(_0xb49f('0x92'))](_0xb49f('0xa0'));}switch(_0x5f0ffc['body']['channel']){case'voice':return respondWithRpcPromise(_0xb49f('0x106'),_0xb49f('0x107'),{'id':_0xc30c8c['id'],'name':_0xc30c8c[_0xb49f('0x34')],'pause':![]})[_0xb49f('0x15')](function(){return db[_0xb49f('0xb1')][_0xb49f('0x25')]({'paused':0x0},{'where':{'UserId':_0xc30c8c['id']},'individualHooks':!![]});})[_0xb49f('0x15')](function(){return db[_0xb49f('0xf4')][_0xb49f('0x5f')]({'where':{'channel':_0x5f0ffc['body'][_0xb49f('0x9d')],'membername':_0xc30c8c[_0xb49f('0x34')],'type':'PAUSE','exitAt':null}});})[_0xb49f('0x15')](function(_0x5e4179){if(_0x5e4179){return _0x5e4179[_0xb49f('0x25')]({'exitAt':moment()[_0xb49f('0xe8')](_0xb49f('0xf5')),'data2':_0xb49f('0x108')},{'individualHooks':!![]});}return null;})[_0xb49f('0x15')](function(){return _0xc30c8c[_0xb49f('0x25')]({'voicePause':![]});});case _0xb49f('0x60'):case _0xb49f('0x49'):case _0xb49f('0x4c'):case _0xb49f('0x4b'):case _0xb49f('0x4e'):case _0xb49f('0x4d'):return db[_0xb49f('0xf4')][_0xb49f('0x5f')]({'where':{'channel':_0x5f0ffc[_0xb49f('0x61')][_0xb49f('0x9d')],'membername':_0xc30c8c[_0xb49f('0x34')],'type':_0xb49f('0xfd'),'exitAt':null}})[_0xb49f('0x15')](function(_0x17de0a){if(_0x17de0a){return _0x17de0a[_0xb49f('0x25')]({'exitAt':moment()[_0xb49f('0xe8')](_0xb49f('0xf5')),'data2':'manual'},{'individualHooks':!![]});}return null;})[_0xb49f('0x15')](function(){var _0x1d3956={};_[_0xb49f('0x109')](_0x1d3956,util[_0xb49f('0xe8')]('%s%s',_0x5f0ffc[_0xb49f('0x61')][_0xb49f('0x9d')],_0xb49f('0x10a')),![]);return _0xc30c8c[_0xb49f('0x25')](_0x1d3956);});default:return respondWithRpcPromise(_0xb49f('0x106'),_0xb49f('0x107'),{'id':_0xc30c8c['id'],'name':_0xc30c8c[_0xb49f('0x34')],'pause':![]})[_0xb49f('0x15')](function(){return db[_0xb49f('0xb1')][_0xb49f('0x25')]({'paused':0x0},{'where':{'UserId':_0xc30c8c['id']}});})['then'](function(){return db[_0xb49f('0xf4')]['findAll']({'where':{'membername':_0xc30c8c[_0xb49f('0x34')],'type':_0xb49f('0xfd'),'exitAt':null}});})['then'](function(_0x161f5e){var _0x87f85d=[];_0x161f5e['forEach'](function(_0xeb5d31){_0x87f85d[_0xb49f('0x45')](_0xeb5d31['update']({'exitAt':moment()[_0xb49f('0xe8')](_0xb49f('0xf5')),'data2':_0xb49f('0x108')}));});return BPromise['all'](_0x87f85d);})[_0xb49f('0x15')](function(){return _0xc30c8c['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0xb49f('0x15')](respondWithResult(_0x14757f,null))[_0xb49f('0x50')](handleError(_0x14757f,null));};exports[_0xb49f('0x10b')]=function(_0x2b1ad8,_0x26852){var _0x1ac6d2={};var _0x39ef67={};var _0x23fbc1;var _0x4a7162;return db[_0xb49f('0x37')]['findOne']({'where':{'id':_0x2b1ad8[_0xb49f('0x52')]['id']}})['then'](handleEntityNotFound(_0x26852,null))[_0xb49f('0x15')](function(_0x5c39c8){if(_0x5c39c8){_0x23fbc1=_0x5c39c8;_0x39ef67[_0xb49f('0x53')]=_[_0xb49f('0x55')](db[_0xb49f('0x10c')][_0xb49f('0x56')]);_0x39ef67[_0xb49f('0x3f')]=_[_0xb49f('0x55')](_0x2b1ad8['query']);_0x39ef67[_0xb49f('0x58')]=_['intersection'](_0x39ef67['model'],_0x39ef67[_0xb49f('0x3f')]);_0x1ac6d2['attributes']=_[_0xb49f('0x59')](_0x39ef67[_0xb49f('0x53')],qs['fields'](_0x2b1ad8['query'][_0xb49f('0x5b')]));_0x1ac6d2['attributes']=_0x1ac6d2[_0xb49f('0x5a')][_0xb49f('0x5c')]?_0x1ac6d2[_0xb49f('0x5a')]:_0x39ef67['model'];_0x1ac6d2['order']=qs[_0xb49f('0xc7')](_0x2b1ad8[_0xb49f('0x3f')][_0xb49f('0xc7')]);_0x1ac6d2[_0xb49f('0xc8')]=qs[_0xb49f('0x58')](_[_0xb49f('0xc9')](_0x2b1ad8['query'],_0x39ef67['filters']));if(_0x2b1ad8[_0xb49f('0x3f')][_0xb49f('0x2f')]){_0x1ac6d2['where']=_[_0xb49f('0x5d')](_0x1ac6d2[_0xb49f('0xc8')],{'$or':_[_0xb49f('0x31')](_0x1ac6d2[_0xb49f('0x5a')],function(_0x43f398){var _0x39aa59={};_0x39aa59[_0x43f398]={'$like':'%'+_0x2b1ad8[_0xb49f('0x3f')]['filter']+'%'};return _0x39aa59;})});}_0x1ac6d2=_[_0xb49f('0x5d')]({},_0x1ac6d2,_0x2b1ad8[_0xb49f('0x5e')]);return _0x23fbc1[_0xb49f('0x10b')](_0x1ac6d2);}})['then'](function(_0x393556){if(_0x393556){_0x4a7162=_0x393556['length'];if(!_0x2b1ad8[_0xb49f('0x3f')][_0xb49f('0xd0')]('nolimit')){_0x1ac6d2['limit']=qs[_0xb49f('0x22')](_0x2b1ad8[_0xb49f('0x3f')][_0xb49f('0x22')]);_0x1ac6d2[_0xb49f('0x20')]=qs['offset'](_0x2b1ad8[_0xb49f('0x3f')][_0xb49f('0x20')]);}return _0x23fbc1['getTeams'](_0x1ac6d2);}})[_0xb49f('0x15')](function(_0x402c80){if(_0x402c80){return _0x402c80?{'count':_0x4a7162,'rows':_0x402c80}:null;}})[_0xb49f('0x15')](respondWithResult(_0x26852,null))[_0xb49f('0x50')](handleError(_0x26852,null));};exports['addTeams']=function(_0x12f935,_0x4b5358){var _0x35e76c=_0x12f935[_0xb49f('0x52')]['id'];var _0x326a85=_0x12f935['body']?_0x12f935[_0xb49f('0x61')][_0xb49f('0x64')]:null;var _0x29be27=[];return Promise[_0xb49f('0x10d')]()[_0xb49f('0x15')](function(){if(!_0x326a85)throw new APIBadRequestError(_0xb49f('0x10e'));})[_0xb49f('0x15')](function(){return db[_0xb49f('0x37')][_0xb49f('0x98')]({'where':{'id':_0x35e76c}});})[_0xb49f('0x15')](function(_0x23f2c4){if(!_0x23f2c4)throw new APINotFoundError(util[_0xb49f('0xe8')]('User\x20with\x20id\x20%s\x20not\x20found',_0x12f935[_0xb49f('0x52')]['id']));return db['sequelize'][_0xb49f('0x10f')](function(_0x25baa7){return _0x23f2c4['addTeams'](_0x326a85,{'transaction':_0x25baa7})[_0xb49f('0x15')](function(){return db['Team'][_0xb49f('0x46')]({'where':{'id':{'$in':_0x326a85}}});})[_0xb49f('0x15')](function(_0x46d986){var _0x236f9f=_[_0xb49f('0x31')](_0x46d986,function(_0x38c058){return _0x38c058[_0xb49f('0x110')]();});return Promise[_0xb49f('0x4f')](_0x236f9f);})['then'](function(_0x5bfb8b){_0x29be27=_[_0xb49f('0x111')](_0x5bfb8b);var _0xaa2f07=_['map'](_0x29be27,function(_0x53815f){return _0x53815f[_0xb49f('0x112')](_0x23f2c4['id'],{'transaction':_0x25baa7});});return Promise['all'](_0xaa2f07);})['then'](function(){if(!_0x23f2c4[_0xb49f('0x113')])return;var _0x531530=_[_0xb49f('0x2f')](_0x29be27,function(_0x2c7fa6){return _0x2c7fa6[_0xb49f('0x114')](_0xb49f('0x9d'))===_0xb49f('0x115');});var _0x5551f4=_[_0xb49f('0x31')](_0x531530,function(_0x118aec){return db[_0xb49f('0xb1')]['upsert']({'membername':_0x23f2c4[_0xb49f('0x34')],'UserId':_0x23f2c4['id'],'queue_name':_0x118aec[_0xb49f('0x34')],'VoiceQueueId':_0x118aec['id'],'interface':_[_0xb49f('0x6b')](_0x23f2c4[_0xb49f('0xaa')])?util['format']('SIP/%s',_0x23f2c4[_0xb49f('0x34')]):_0x23f2c4['interface'],'paused':_0x23f2c4[_0xb49f('0x9e')]||![],'penalty':_0x23f2c4[_0xb49f('0xa3')]},{'transaction':_0x25baa7});});return Promise[_0xb49f('0x4f')](_0x5551f4);})[_0xb49f('0x15')](function(){return db['TeamVoicePrefix']['findAll']({'where':{'teamId':{'$in':_0x326a85}}});})[_0xb49f('0x15')](function(_0x4c623e){var _0x316b3d=_[_0xb49f('0x31')](_0x4c623e,function(_0xf0463d){return db['UserVoicePrefix'][_0xb49f('0x7e')]({'UserId':_0x23f2c4['id'],'VoicePrefixId':_0xf0463d['VoicePrefixId']},{'transaction':_0x25baa7});});return Promise['all'](_0x316b3d);});});})[_0xb49f('0x15')](function(){for(var _0x35e434=0x0;_0x35e434<_0x29be27[_0xb49f('0x5c')];_0x35e434++){var _0x239420=_0x29be27[_0x35e434][_0xb49f('0x114')](_0xb49f('0x9d'));var _0x209d04=_0x239420+_0xb49f('0xaf');socket[_0xb49f('0x26')]('user'+_0x239420+_0xb49f('0xa6'),{'UserId':_0x35e76c,['queueField']:_0x29be27[_0x35e434]['id']});}})[_0xb49f('0x15')](respondWithStatusCode(_0x4b5358,null))['catch'](APIHandleError(_0x4b5358));};exports['removeTeams']=function(_0x18f1ea,_0x510263){var _0x664fa0=_0x18f1ea[_0xb49f('0x52')]['id'];var _0x48bea2=null;if(_0x18f1ea['query']['ids']){_0x48bea2=_[_0xb49f('0xae')](_0x18f1ea[_0xb49f('0x3f')][_0xb49f('0x64')])?_0x18f1ea['query']['ids']:[_0x18f1ea[_0xb49f('0x3f')][_0xb49f('0x64')]];}var _0x5723a9=[];return Promise[_0xb49f('0x10d')]()['then'](function(){if(!_0x48bea2)throw new APIBadRequestError(_0xb49f('0x116'));})['then'](function(){return db[_0xb49f('0x37')][_0xb49f('0x98')]({'where':{'id':_0x664fa0}});})['then'](function(_0x2d16fc){if(!_0x2d16fc)throw new APINotFoundError(util[_0xb49f('0xe8')](_0xb49f('0x117'),_0x18f1ea[_0xb49f('0x52')]['id']));return db[_0xb49f('0x6c')]['transaction'](function(_0x29300f){return _0x2d16fc[_0xb49f('0x118')](_0x48bea2,{'transaction':_0x29300f})[_0xb49f('0x15')](function(){return db[_0xb49f('0x10c')][_0xb49f('0x46')]({'where':{'id':{'$in':_0x48bea2}}});})[_0xb49f('0x15')](function(_0x139758){var _0x3077e8=_[_0xb49f('0x31')](_0x139758,function(_0x218b01){return _0x218b01[_0xb49f('0x110')]();});return Promise[_0xb49f('0x4f')](_0x3077e8);})['then'](function(_0x21c9ba){_0x5723a9=_[_0xb49f('0x111')](_0x21c9ba);var _0x1f918e=_[_0xb49f('0x31')](_0x5723a9,function(_0x50fc33){return _0x50fc33[_0xb49f('0x119')](_0x2d16fc['id'],{'transaction':_0x29300f});});return Promise[_0xb49f('0x4f')](_0x1f918e);})['then'](function(){if(!_0x2d16fc[_0xb49f('0x113')])return;var _0x239e9f=_[_0xb49f('0x2f')](_0x5723a9,function(_0x114313){return _0x114313['getDataValue'](_0xb49f('0x9d'))===_0xb49f('0x115');});var _0x301860=_[_0xb49f('0x31')](_0x239e9f,function(_0x49d662){return db[_0xb49f('0xb1')][_0xb49f('0x28')]({'where':{'VoiceQueueId':_0x49d662['id'],'UserId':_0x2d16fc['id']},'transaction':_0x29300f});});return Promise[_0xb49f('0x4f')](_0x301860);})[_0xb49f('0x15')](function(){return db[_0xb49f('0x11a')]['findAll']({'where':{'teamId':{'$in':_0x48bea2}}});})[_0xb49f('0x15')](function(_0x395a58){var _0x547df3=_[_0xb49f('0x31')](_0x395a58,function(_0x4351c5){return db[_0xb49f('0x11b')][_0xb49f('0x28')]({'where':{'UserId':_0x2d16fc['id'],'VoicePrefixId':_0x4351c5[_0xb49f('0x11c')]}},{'transaction':_0x29300f});});return Promise['all'](_0x547df3);});});})[_0xb49f('0x15')](function(){for(var _0x2c404c=0x0;_0x2c404c<_0x5723a9[_0xb49f('0x5c')];_0x2c404c++){var _0x42f4a1=_0x5723a9[_0x2c404c][_0xb49f('0x114')](_0xb49f('0x9d'));var _0xa19bb7=_0x42f4a1+'QueueId';socket['emit'](_0xb49f('0x7f')+_0x42f4a1+'Queue:remove',{'UserId':_0x664fa0,['queueField']:_0x5723a9[_0x2c404c]['id']});}})[_0xb49f('0x15')](respondWithStatusCode(_0x510263,null))[_0xb49f('0x50')](APIHandleError(_0x510263));};exports['getLists']=function(_0x5e0d11,_0x280550){var _0x3ea51e={};var _0x570ac9={};var _0x569e69;var _0x4420d7;return db[_0xb49f('0x37')][_0xb49f('0x98')]({'where':{'id':_0x5e0d11[_0xb49f('0x52')]['id']}})['then'](handleEntityNotFound(_0x280550,null))[_0xb49f('0x15')](function(_0x37171e){if(_0x37171e){_0x569e69=_0x37171e;_0x570ac9[_0xb49f('0x53')]=_['keys'](db['CmList'][_0xb49f('0x56')]);_0x570ac9['query']=_[_0xb49f('0x55')](_0x5e0d11['query']);_0x570ac9[_0xb49f('0x58')]=_[_0xb49f('0x59')](_0x570ac9[_0xb49f('0x53')],_0x570ac9[_0xb49f('0x3f')]);_0x3ea51e['attributes']=_['intersection'](_0x570ac9[_0xb49f('0x53')],qs[_0xb49f('0x5b')](_0x5e0d11[_0xb49f('0x3f')]['fields']));_0x3ea51e['attributes']=_0x3ea51e[_0xb49f('0x5a')]['length']?_0x3ea51e[_0xb49f('0x5a')]:_0x570ac9[_0xb49f('0x53')];_0x3ea51e[_0xb49f('0xc6')]=qs[_0xb49f('0xc7')](_0x5e0d11['query'][_0xb49f('0xc7')]);_0x3ea51e['where']=qs['filters'](_[_0xb49f('0xc9')](_0x5e0d11[_0xb49f('0x3f')],_0x570ac9[_0xb49f('0x58')]));if(_0x5e0d11[_0xb49f('0x3f')]['filter']){_0x3ea51e['where']=_['merge'](_0x3ea51e['where'],{'$or':_[_0xb49f('0x31')](_0x3ea51e[_0xb49f('0x5a')],function(_0x1c9dde){var _0x41e939={};_0x41e939[_0x1c9dde]={'$like':'%'+_0x5e0d11['query'][_0xb49f('0x2f')]+'%'};return _0x41e939;})});}_0x3ea51e=_[_0xb49f('0x5d')]({},_0x3ea51e,_0x5e0d11[_0xb49f('0x5e')]);return _0x569e69[_0xb49f('0x11d')](_0x3ea51e);}})[_0xb49f('0x15')](function(_0x4cceab){if(_0x4cceab){_0x4420d7=_0x4cceab['length'];if(!_0x5e0d11[_0xb49f('0x3f')][_0xb49f('0xd0')](_0xb49f('0xd4'))){_0x3ea51e[_0xb49f('0x22')]=qs[_0xb49f('0x22')](_0x5e0d11['query'][_0xb49f('0x22')]);_0x3ea51e[_0xb49f('0x20')]=qs[_0xb49f('0x20')](_0x5e0d11[_0xb49f('0x3f')][_0xb49f('0x20')]);}return _0x569e69['getLists'](_0x3ea51e);}})['then'](function(_0x231812){if(_0x231812){return _0x231812?{'count':_0x4420d7,'rows':_0x231812}:null;}})[_0xb49f('0x15')](respondWithResult(_0x280550,null))[_0xb49f('0x50')](handleError(_0x280550,null));};exports[_0xb49f('0x11e')]=function(_0x27d067,_0x5de6a0){var _0x116172={};var _0x408269={};var _0x2adfce;return db[_0xb49f('0x37')][_0xb49f('0x98')]({'where':{'id':_0x27d067[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x5de6a0,null))[_0xb49f('0x15')](function(_0x43294b){if(_0x43294b){_0x2adfce=_0x43294b;_0x408269['model']=_[_0xb49f('0x55')](db[_0xb49f('0x37')][_0xb49f('0x56')]);_0x408269[_0xb49f('0x3f')]=_['keys'](_0x27d067['query']);_0x408269['filters']=_[_0xb49f('0x59')](_0x408269[_0xb49f('0x53')],_0x408269[_0xb49f('0x3f')]);_0x116172[_0xb49f('0x5a')]=_[_0xb49f('0x59')](_0x408269[_0xb49f('0x53')],qs[_0xb49f('0x5b')](_0x27d067['query'][_0xb49f('0x5b')]));_0x116172[_0xb49f('0x5a')]=_0x116172[_0xb49f('0x5a')]['length']?_0x116172['attributes']:_0x408269[_0xb49f('0x53')];_0x116172['order']=qs[_0xb49f('0xc7')](_0x27d067['query'][_0xb49f('0xc7')]);_0x116172[_0xb49f('0xc8')]=qs['filters'](_[_0xb49f('0xc9')](_0x27d067[_0xb49f('0x3f')],_0x408269[_0xb49f('0x58')]));if(_0x27d067['query']['filter']){_0x116172['where']=_[_0xb49f('0x5d')](_0x116172[_0xb49f('0xc8')],{'$or':_[_0xb49f('0x31')](_0x116172[_0xb49f('0x5a')],function(_0x34449d){var _0x1f7434={};_0x1f7434[_0x34449d]={'$like':'%'+_0x27d067[_0xb49f('0x3f')][_0xb49f('0x2f')]+'%'};return _0x1f7434;})});}_0x116172[_0xb49f('0x53')]=db[_0xb49f('0x37')];_0x116172['as']=_0xb49f('0x2c');_0x116172=_[_0xb49f('0x5d')]({},_0x116172,_0x27d067[_0xb49f('0x5e')]);return _0x2adfce[_0xb49f('0xf1')]({'include':[_0x116172]});}})[_0xb49f('0x15')](function(_0x479603){if(_0x479603){var _0x4f9063={},_0x33ffe2=[];for(var _0x45c929=0x0;_0x45c929<_0x479603[_0xb49f('0x5c')];_0x45c929+=0x1){for(var _0x5681d8=0x0,_0x11cc21;_0x5681d8<_0x479603[_0x45c929]['Agents']['length'];_0x5681d8+=0x1){_0x11cc21=_0x479603[_0x45c929][_0xb49f('0x2c')][_0x5681d8][_0xb49f('0xa9')]({'plain':!![]});_0x4f9063[_0x11cc21['id']]=_0x11cc21;}}_0x4f9063=_[_0xb49f('0x11f')](_0x4f9063);for(var _0x5b30c5=qs[_0xb49f('0x20')](_0x27d067[_0xb49f('0x3f')]['offset']);_0x5b30c5<_0x4f9063[_0xb49f('0x5c')]&&_0x33ffe2[_0xb49f('0x5c')]<qs['limit'](_0x27d067[_0xb49f('0x3f')]['limit']);_0x5b30c5+=0x1){if(_0x4f9063[_0x5b30c5]){_0x33ffe2[_0xb49f('0x45')](_0x4f9063[_0x5b30c5]);}}return{'count':_0x4f9063[_0xb49f('0x5c')],'rows':_0x33ffe2};}})[_0xb49f('0x15')](respondWithResult(_0x5de6a0,null))[_0xb49f('0x50')](handleError(_0x5de6a0,null));};exports['destroy']=function(_0x58e8b1,_0x34c38f){if(_0x58e8b1[_0xb49f('0x7f')]['id']==_0x58e8b1['params']['id']){return _0x34c38f['status'](0x1f4)[_0xb49f('0x35')]({'message':'You\x20can\x27t\x20delete\x20yourself'});}return db[_0xb49f('0x37')][_0xb49f('0x5f')]({'where':{'id':_0x58e8b1[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x34c38f,null))['then'](removeEntity(_0x34c38f,null))[_0xb49f('0x50')](handleError(_0x34c38f,null));};exports[_0xb49f('0x120')]=function(_0x5b94af,_0x57887f){return db[_0xb49f('0x37')]['find']({'where':{'id':_0x5b94af[_0xb49f('0x52')]['id']}})['then'](handleEntityNotFound(_0x57887f,null))[_0xb49f('0x15')](function(_0x9d0d73){if(_0x9d0d73){return _0x9d0d73[_0xb49f('0x120')](_0x5b94af[_0xb49f('0x61')][_0xb49f('0x64')],_[_0xb49f('0x121')](_0x5b94af[_0xb49f('0x61')],['ids','id'])||{})['spread'](function(){for(var _0x3e5306=0x0;_0x3e5306<_0x5b94af['body'][_0xb49f('0x64')][_0xb49f('0x5c')];_0x3e5306+=0x1){socket['emit'](_0xb49f('0x122'),{'ChatInteractionId':Number(_0x5b94af[_0xb49f('0x61')][_0xb49f('0x64')][_0x3e5306]),'UserId':Number(_0x5b94af['params']['id'])});}return _0x5b94af['body'][_0xb49f('0x64')];});}})[_0xb49f('0x15')](respondWithResult(_0x57887f,null))[_0xb49f('0x50')](handleError(_0x57887f,null));};exports[_0xb49f('0x123')]=function(_0x21668b,_0x3c88af){return db[_0xb49f('0x37')][_0xb49f('0x5f')]({'where':{'id':_0x21668b[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x3c88af,null))[_0xb49f('0x15')](function(_0x3c21e1){if(_0x3c21e1){return _0x3c21e1['removeChatInteractions'](_0x21668b[_0xb49f('0x3f')]['ids'])[_0xb49f('0x15')](function(){if(_[_0xb49f('0xae')](_0x21668b[_0xb49f('0x3f')][_0xb49f('0x64')])){for(var _0x1f2fa1=0x0;_0x1f2fa1<_0x21668b['query'][_0xb49f('0x64')][_0xb49f('0x5c')];_0x1f2fa1+=0x1){socket[_0xb49f('0x26')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x21668b[_0xb49f('0x3f')][_0xb49f('0x64')][_0x1f2fa1]),'UserId':Number(_0x21668b[_0xb49f('0x52')]['id'])});}}else{socket['emit'](_0xb49f('0x124'),{'ChatInteractionId':Number(_0x21668b['query'][_0xb49f('0x64')]),'UserId':Number(_0x21668b[_0xb49f('0x52')]['id'])});}});}})['then'](respondWithStatusCode(_0x3c88af,null))[_0xb49f('0x50')](handleError(_0x3c88af,null));};exports[_0xb49f('0x125')]=function(_0x2694dc,_0x129341){return db['User']['find']({'where':{'id':_0x2694dc[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x129341,null))[_0xb49f('0x15')](function(_0x48abca){if(_0x48abca){return _0x48abca[_0xb49f('0x125')](_0x2694dc[_0xb49f('0x61')]['ids'],_[_0xb49f('0x121')](_0x2694dc[_0xb49f('0x61')],[_0xb49f('0x64'),'id'])||{})[_0xb49f('0xa4')](function(){for(var _0x37394b=0x0;_0x37394b<_0x2694dc[_0xb49f('0x61')][_0xb49f('0x64')][_0xb49f('0x5c')];_0x37394b+=0x1){socket[_0xb49f('0x26')](_0xb49f('0x126'),{'MailInteractionId':Number(_0x2694dc['body'][_0xb49f('0x64')][_0x37394b]),'UserId':Number(_0x2694dc['params']['id'])});}return _0x2694dc[_0xb49f('0x61')]['ids'];});}})[_0xb49f('0x15')](respondWithResult(_0x129341,null))[_0xb49f('0x50')](handleError(_0x129341,null));};exports[_0xb49f('0x127')]=function(_0x35d260,_0x109225){return db[_0xb49f('0x37')]['find']({'where':{'id':_0x35d260[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x109225,null))['then'](function(_0x3ea45f){if(_0x3ea45f){return _0x3ea45f['removeMailInteractions'](_0x35d260[_0xb49f('0x3f')]['ids'])[_0xb49f('0x15')](function(){if(_[_0xb49f('0xae')](_0x35d260[_0xb49f('0x3f')]['ids'])){for(var _0xb2465d=0x0;_0xb2465d<_0x35d260[_0xb49f('0x3f')][_0xb49f('0x64')][_0xb49f('0x5c')];_0xb2465d+=0x1){socket[_0xb49f('0x26')](_0xb49f('0x128'),{'MailInteractionId':Number(_0x35d260['query']['ids'][_0xb2465d]),'UserId':Number(_0x35d260[_0xb49f('0x52')]['id'])});}}else{socket['emit'](_0xb49f('0x128'),{'MailInteractionId':Number(_0x35d260[_0xb49f('0x3f')][_0xb49f('0x64')]),'UserId':Number(_0x35d260[_0xb49f('0x52')]['id'])});}});}})[_0xb49f('0x15')](respondWithStatusCode(_0x109225,null))['catch'](handleError(_0x109225,null));};exports['addFaxInteractions']=function(_0x501e31,_0xd1ddb8){return db['User'][_0xb49f('0x5f')]({'where':{'id':_0x501e31[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0xd1ddb8,null))[_0xb49f('0x15')](function(_0x41b35b){if(_0x41b35b){return _0x41b35b[_0xb49f('0x129')](_0x501e31[_0xb49f('0x61')][_0xb49f('0x64')],_[_0xb49f('0x121')](_0x501e31[_0xb49f('0x61')],[_0xb49f('0x64'),'id'])||{})[_0xb49f('0xa4')](function(){for(var _0x39e61b=0x0;_0x39e61b<_0x501e31[_0xb49f('0x61')][_0xb49f('0x64')][_0xb49f('0x5c')];_0x39e61b+=0x1){socket[_0xb49f('0x26')]('user_has_fax_interactions:save',{'FaxInteractionId':Number(_0x501e31[_0xb49f('0x61')][_0xb49f('0x64')][_0x39e61b]),'UserId':Number(_0x501e31[_0xb49f('0x52')]['id'])});}return _0x501e31[_0xb49f('0x61')][_0xb49f('0x64')];});}})[_0xb49f('0x15')](respondWithResult(_0xd1ddb8,null))[_0xb49f('0x50')](handleError(_0xd1ddb8,null));};exports['removeFaxInteractions']=function(_0xb4b0de,_0x3c6f0f){return db[_0xb49f('0x37')][_0xb49f('0x5f')]({'where':{'id':_0xb4b0de[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x3c6f0f,null))[_0xb49f('0x15')](function(_0x31e738){if(_0x31e738){return _0x31e738['removeFaxInteractions'](_0xb4b0de[_0xb49f('0x3f')][_0xb49f('0x64')])[_0xb49f('0x15')](function(){if(_[_0xb49f('0xae')](_0xb4b0de['query'][_0xb49f('0x64')])){for(var _0x1a2993=0x0;_0x1a2993<_0xb4b0de[_0xb49f('0x3f')]['ids'][_0xb49f('0x5c')];_0x1a2993+=0x1){socket[_0xb49f('0x26')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0xb4b0de[_0xb49f('0x3f')]['ids'][_0x1a2993]),'UserId':Number(_0xb4b0de[_0xb49f('0x52')]['id'])});}}else{socket[_0xb49f('0x26')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0xb4b0de[_0xb49f('0x3f')][_0xb49f('0x64')]),'UserId':Number(_0xb4b0de[_0xb49f('0x52')]['id'])});}});}})[_0xb49f('0x15')](respondWithStatusCode(_0x3c6f0f,null))[_0xb49f('0x50')](handleError(_0x3c6f0f,null));};exports[_0xb49f('0x12a')]=function(_0x572a54,_0x4f55fe){return db[_0xb49f('0x37')][_0xb49f('0x5f')]({'where':{'id':_0x572a54['params']['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x4f55fe,null))['then'](function(_0x4c130a){if(_0x4c130a){return _0x4c130a[_0xb49f('0x12a')](_0x572a54['body']['ids'],_[_0xb49f('0x121')](_0x572a54['body'],[_0xb49f('0x64'),'id'])||{})[_0xb49f('0xa4')](function(){for(var _0x567337=0x0;_0x567337<_0x572a54[_0xb49f('0x61')][_0xb49f('0x64')][_0xb49f('0x5c')];_0x567337+=0x1){socket[_0xb49f('0x26')](_0xb49f('0x12b'),{'SmsInteractionId':Number(_0x572a54['body'][_0xb49f('0x64')][_0x567337]),'UserId':Number(_0x572a54[_0xb49f('0x52')]['id'])});}return _0x572a54[_0xb49f('0x61')][_0xb49f('0x64')];});}})[_0xb49f('0x15')](respondWithResult(_0x4f55fe,null))[_0xb49f('0x50')](handleError(_0x4f55fe,null));};exports['removeSmsInteractions']=function(_0x1c296c,_0x59d5b6){return db[_0xb49f('0x37')]['find']({'where':{'id':_0x1c296c[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x59d5b6,null))[_0xb49f('0x15')](function(_0x5aa577){if(_0x5aa577){return _0x5aa577[_0xb49f('0x12c')](_0x1c296c[_0xb49f('0x3f')][_0xb49f('0x64')])[_0xb49f('0x15')](function(){if(_[_0xb49f('0xae')](_0x1c296c[_0xb49f('0x3f')]['ids'])){for(var _0x14ca66=0x0;_0x14ca66<_0x1c296c[_0xb49f('0x3f')][_0xb49f('0x64')][_0xb49f('0x5c')];_0x14ca66+=0x1){socket[_0xb49f('0x26')](_0xb49f('0x12d'),{'SmsInteractionId':Number(_0x1c296c[_0xb49f('0x3f')]['ids'][_0x14ca66]),'UserId':Number(_0x1c296c[_0xb49f('0x52')]['id'])});}}else{socket['emit'](_0xb49f('0x12d'),{'SmsInteractionId':Number(_0x1c296c[_0xb49f('0x3f')][_0xb49f('0x64')]),'UserId':Number(_0x1c296c[_0xb49f('0x52')]['id'])});}});}})[_0xb49f('0x15')](respondWithStatusCode(_0x59d5b6,null))[_0xb49f('0x50')](handleError(_0x59d5b6,null));};exports['addOpenchannelInteractions']=function(_0x7eea85,_0x5c993d){return db[_0xb49f('0x37')][_0xb49f('0x5f')]({'where':{'id':_0x7eea85[_0xb49f('0x52')]['id']}})['then'](handleEntityNotFound(_0x5c993d,null))[_0xb49f('0x15')](function(_0x211a98){if(_0x211a98){return _0x211a98[_0xb49f('0x12e')](_0x7eea85[_0xb49f('0x61')][_0xb49f('0x64')],_['omit'](_0x7eea85[_0xb49f('0x61')],[_0xb49f('0x64'),'id'])||{})[_0xb49f('0xa4')](function(){for(var _0x2ab126=0x0;_0x2ab126<_0x7eea85[_0xb49f('0x61')][_0xb49f('0x64')]['length'];_0x2ab126+=0x1){socket['emit'](_0xb49f('0x12f'),{'OpenchannelInteractionId':Number(_0x7eea85['body'][_0xb49f('0x64')][_0x2ab126]),'UserId':Number(_0x7eea85[_0xb49f('0x52')]['id'])});}return _0x7eea85[_0xb49f('0x61')][_0xb49f('0x64')];});}})[_0xb49f('0x15')](respondWithResult(_0x5c993d,null))[_0xb49f('0x50')](handleError(_0x5c993d,null));};exports[_0xb49f('0x130')]=function(_0x39c993,_0x155404){return db['User'][_0xb49f('0x5f')]({'where':{'id':_0x39c993[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x155404,null))['then'](function(_0x5ca9fc){if(_0x5ca9fc){return _0x5ca9fc[_0xb49f('0x130')](_0x39c993[_0xb49f('0x3f')][_0xb49f('0x64')])[_0xb49f('0x15')](function(){if(_[_0xb49f('0xae')](_0x39c993[_0xb49f('0x3f')][_0xb49f('0x64')])){for(var _0x2d8d37=0x0;_0x2d8d37<_0x39c993['query']['ids'][_0xb49f('0x5c')];_0x2d8d37+=0x1){socket['emit'](_0xb49f('0x131'),{'OpenchannelInteractionId':Number(_0x39c993[_0xb49f('0x3f')][_0xb49f('0x64')][_0x2d8d37]),'UserId':Number(_0x39c993['params']['id'])});}}else{socket[_0xb49f('0x26')](_0xb49f('0x131'),{'OpenchannelInteractionId':Number(_0x39c993[_0xb49f('0x3f')][_0xb49f('0x64')]),'UserId':Number(_0x39c993[_0xb49f('0x52')]['id'])});}});}})['then'](respondWithStatusCode(_0x155404,null))[_0xb49f('0x50')](handleError(_0x155404,null));};exports[_0xb49f('0x132')]=function(_0x32c63d,_0x3fee14){return db[_0xb49f('0x37')][_0xb49f('0x5f')]({'where':{'id':_0x32c63d[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x3fee14,null))[_0xb49f('0x15')](function(_0x9e374c){if(_0x9e374c){return _0x9e374c['addWhatsappInteractions'](_0x32c63d[_0xb49f('0x61')][_0xb49f('0x64')],_[_0xb49f('0x121')](_0x32c63d[_0xb49f('0x61')],[_0xb49f('0x64'),'id'])||{})[_0xb49f('0xa4')](function(){for(var _0x2f843a=0x0;_0x2f843a<_0x32c63d[_0xb49f('0x61')][_0xb49f('0x64')][_0xb49f('0x5c')];_0x2f843a+=0x1){socket[_0xb49f('0x26')](_0xb49f('0x133'),{'WhatsappInteractionId':Number(_0x32c63d[_0xb49f('0x61')][_0xb49f('0x64')][_0x2f843a]),'UserId':Number(_0x32c63d[_0xb49f('0x52')]['id'])});}return _0x32c63d[_0xb49f('0x61')][_0xb49f('0x64')];});}})[_0xb49f('0x15')](respondWithResult(_0x3fee14,null))['catch'](handleError(_0x3fee14,null));};exports[_0xb49f('0x134')]=function(_0x41fb21,_0x5acae7){return db[_0xb49f('0x37')]['find']({'where':{'id':_0x41fb21[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x5acae7,null))['then'](function(_0x43f740){if(_0x43f740){return _0x43f740[_0xb49f('0x134')](_0x41fb21[_0xb49f('0x3f')][_0xb49f('0x64')]);}})['then'](respondWithStatusCode(_0x5acae7,null))[_0xb49f('0x50')](handleError(_0x5acae7,null));};exports[_0xb49f('0x135')]=function(_0x3eb919,_0xf82f04){var _0x4cdc99={};var _0x16cced={};var _0x223a55;var _0x40c416;return db[_0xb49f('0x37')][_0xb49f('0x98')]({'where':{'id':_0x3eb919[_0xb49f('0x52')]['id']}})['then'](handleEntityNotFound(_0xf82f04,null))['then'](function(_0x1a5953){if(_0x1a5953){_0x223a55=_0x1a5953;_0x16cced[_0xb49f('0x53')]=_[_0xb49f('0x55')](db['VoicePrefix'][_0xb49f('0x56')]);_0x16cced[_0xb49f('0x3f')]=_[_0xb49f('0x55')](_0x3eb919[_0xb49f('0x3f')]);_0x16cced[_0xb49f('0x58')]=_['intersection'](_0x16cced['model'],_0x16cced['query']);_0x4cdc99[_0xb49f('0x5a')]=_['intersection'](_0x16cced[_0xb49f('0x53')],qs[_0xb49f('0x5b')](_0x3eb919['query'][_0xb49f('0x5b')]));_0x4cdc99[_0xb49f('0x5a')]=_0x4cdc99['attributes'][_0xb49f('0x5c')]?_0x4cdc99[_0xb49f('0x5a')]:_0x16cced['model'];_0x4cdc99[_0xb49f('0xc6')]=qs['sort'](_0x3eb919[_0xb49f('0x3f')]['sort']);_0x4cdc99[_0xb49f('0xc8')]=qs[_0xb49f('0x58')](_[_0xb49f('0xc9')](_0x3eb919[_0xb49f('0x3f')],_0x16cced[_0xb49f('0x58')]));if(_0x3eb919[_0xb49f('0x3f')][_0xb49f('0x2f')]){_0x4cdc99[_0xb49f('0xc8')]=_['merge'](_0x4cdc99[_0xb49f('0xc8')],{'$or':_[_0xb49f('0x31')](_0x4cdc99[_0xb49f('0x5a')],function(_0xb422a1){var _0x4fac70={};_0x4fac70[_0xb422a1]={'$like':'%'+_0x3eb919[_0xb49f('0x3f')][_0xb49f('0x2f')]+'%'};return _0x4fac70;})});}_0x4cdc99=_[_0xb49f('0x5d')]({},_0x4cdc99,_0x3eb919[_0xb49f('0x5e')]);return _0x223a55[_0xb49f('0x135')](_0x4cdc99);}})['then'](function(_0x533906){if(_0x533906){_0x40c416=_0x533906[_0xb49f('0x5c')];if(!_0x3eb919['query'][_0xb49f('0xd0')](_0xb49f('0xd4'))){_0x4cdc99[_0xb49f('0x22')]=qs[_0xb49f('0x22')](_0x3eb919[_0xb49f('0x3f')][_0xb49f('0x22')]);_0x4cdc99[_0xb49f('0x20')]=qs[_0xb49f('0x20')](_0x3eb919[_0xb49f('0x3f')][_0xb49f('0x20')]);}return _0x223a55[_0xb49f('0x135')](_0x4cdc99);}})['then'](function(_0x2308fd){if(_0x2308fd){return _0x2308fd?{'count':_0x40c416,'rows':_0x2308fd}:null;}})[_0xb49f('0x15')](respondWithResult(_0xf82f04,null))[_0xb49f('0x50')](handleError(_0xf82f04,null));};exports['getFaxAccounts']=function(_0x30f631,_0x547aa8){var _0x397985={};var _0x475713={};var _0x348f65;var _0x279aa7;return db[_0xb49f('0x37')][_0xb49f('0x98')]({'where':{'id':_0x30f631[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x547aa8,null))[_0xb49f('0x15')](function(_0x27206c){if(_0x27206c){_0x348f65=_0x27206c;_0x475713[_0xb49f('0x53')]=_[_0xb49f('0x55')](db['FaxAccount']['rawAttributes']);_0x475713[_0xb49f('0x3f')]=_[_0xb49f('0x55')](_0x30f631[_0xb49f('0x3f')]);_0x475713[_0xb49f('0x58')]=_[_0xb49f('0x59')](_0x475713[_0xb49f('0x53')],_0x475713[_0xb49f('0x3f')]);_0x397985[_0xb49f('0x5a')]=_['intersection'](_0x475713[_0xb49f('0x53')],qs[_0xb49f('0x5b')](_0x30f631[_0xb49f('0x3f')][_0xb49f('0x5b')]));_0x397985['attributes']=_0x397985['attributes'][_0xb49f('0x5c')]?_0x397985['attributes']:_0x475713['model'];_0x397985[_0xb49f('0xc6')]=qs[_0xb49f('0xc7')](_0x30f631[_0xb49f('0x3f')]['sort']);_0x397985[_0xb49f('0xc8')]=qs['filters'](_['pick'](_0x30f631[_0xb49f('0x3f')],_0x475713[_0xb49f('0x58')]));if(_0x30f631[_0xb49f('0x3f')][_0xb49f('0x2f')]){_0x397985['where']=_[_0xb49f('0x5d')](_0x397985[_0xb49f('0xc8')],{'$or':_['map'](_0x397985[_0xb49f('0x5a')],function(_0x3578d9){var _0x595ac2={};_0x595ac2[_0x3578d9]={'$like':'%'+_0x30f631['query'][_0xb49f('0x2f')]+'%'};return _0x595ac2;})});}_0x397985=_[_0xb49f('0x5d')]({},_0x397985,_0x30f631[_0xb49f('0x5e')]);return _0x348f65[_0xb49f('0x136')](_0x397985);}})[_0xb49f('0x15')](function(_0x1efb29){if(_0x1efb29){_0x279aa7=_0x1efb29[_0xb49f('0x5c')];if(!_0x30f631[_0xb49f('0x3f')]['hasOwnProperty'](_0xb49f('0xd4'))){_0x397985[_0xb49f('0x22')]=qs[_0xb49f('0x22')](_0x30f631['query'][_0xb49f('0x22')]);_0x397985[_0xb49f('0x20')]=qs[_0xb49f('0x20')](_0x30f631[_0xb49f('0x3f')][_0xb49f('0x20')]);}return _0x348f65[_0xb49f('0x136')](_0x397985);}})[_0xb49f('0x15')](function(_0x16d74e){if(_0x16d74e){return _0x16d74e?{'count':_0x279aa7,'rows':_0x16d74e}:null;}})['then'](respondWithResult(_0x547aa8,null))['catch'](handleError(_0x547aa8,null));};exports[_0xb49f('0x137')]=function(_0x3fb77d,_0x1e7426){return db[_0xb49f('0x37')][_0xb49f('0x5f')]({'where':{'id':_0x3fb77d['params']['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x1e7426,null))[_0xb49f('0x15')](function(_0xa7cb10){if(_0xa7cb10){return _0xa7cb10['addFaxAccounts'](_0x3fb77d[_0xb49f('0x61')][_0xb49f('0x64')],_[_0xb49f('0x121')](_0x3fb77d[_0xb49f('0x61')],['ids','id'])||{});}})['then'](respondWithResult(_0x1e7426,null))['catch'](handleError(_0x1e7426,null));};exports[_0xb49f('0x138')]=function(_0x2454d6,_0x596d99){return db[_0xb49f('0x37')][_0xb49f('0x5f')]({'where':{'id':_0x2454d6[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x596d99,null))[_0xb49f('0x15')](function(_0x278c88){if(_0x278c88){return _0x278c88[_0xb49f('0x138')](_0x2454d6[_0xb49f('0x3f')][_0xb49f('0x64')]);}})[_0xb49f('0x15')](respondWithStatusCode(_0x596d99,null))[_0xb49f('0x50')](handleError(_0x596d99,null));};exports[_0xb49f('0x139')]=function(_0xfd7d34,_0x1ba5b1){var _0x50e7cd={};var _0x1d075a={};var _0x187e4b;var _0x459cd3;return db['User']['findOne']({'where':{'id':_0xfd7d34[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x1ba5b1,null))['then'](function(_0x3971aa){if(_0x3971aa){_0x187e4b=_0x3971aa;_0x1d075a[_0xb49f('0x53')]=_[_0xb49f('0x55')](db[_0xb49f('0x13a')][_0xb49f('0x56')]);_0x1d075a[_0xb49f('0x3f')]=_[_0xb49f('0x55')](_0xfd7d34[_0xb49f('0x3f')]);_0x1d075a[_0xb49f('0x58')]=_[_0xb49f('0x59')](_0x1d075a[_0xb49f('0x53')],_0x1d075a[_0xb49f('0x3f')]);_0x50e7cd[_0xb49f('0x5a')]=_['intersection'](_0x1d075a[_0xb49f('0x53')],qs[_0xb49f('0x5b')](_0xfd7d34[_0xb49f('0x3f')][_0xb49f('0x5b')]));_0x50e7cd[_0xb49f('0x5a')]=_0x50e7cd[_0xb49f('0x5a')][_0xb49f('0x5c')]?_0x50e7cd[_0xb49f('0x5a')]:_0x1d075a['model'];_0x50e7cd['order']=qs[_0xb49f('0xc7')](_0xfd7d34[_0xb49f('0x3f')][_0xb49f('0xc7')]);_0x50e7cd[_0xb49f('0xc8')]=qs[_0xb49f('0x58')](_['pick'](_0xfd7d34[_0xb49f('0x3f')],_0x1d075a[_0xb49f('0x58')]));if(_0xfd7d34[_0xb49f('0x3f')][_0xb49f('0x2f')]){_0x50e7cd[_0xb49f('0xc8')]=_[_0xb49f('0x5d')](_0x50e7cd[_0xb49f('0xc8')],{'$or':_[_0xb49f('0x31')](_0x50e7cd['attributes'],function(_0x546e12){var _0x249066={};_0x249066[_0x546e12]={'$like':'%'+_0xfd7d34[_0xb49f('0x3f')][_0xb49f('0x2f')]+'%'};return _0x249066;})});}_0x50e7cd=_[_0xb49f('0x5d')]({},_0x50e7cd,_0xfd7d34[_0xb49f('0x5e')]);return _0x187e4b[_0xb49f('0x139')](_0x50e7cd);}})[_0xb49f('0x15')](function(_0x2ff531){if(_0x2ff531){_0x459cd3=_0x2ff531[_0xb49f('0x5c')];if(!_0xfd7d34[_0xb49f('0x3f')][_0xb49f('0xd0')]('nolimit')){_0x50e7cd[_0xb49f('0x22')]=qs[_0xb49f('0x22')](_0xfd7d34['query'][_0xb49f('0x22')]);_0x50e7cd[_0xb49f('0x20')]=qs['offset'](_0xfd7d34[_0xb49f('0x3f')][_0xb49f('0x20')]);}return _0x187e4b[_0xb49f('0x139')](_0x50e7cd);}})[_0xb49f('0x15')](function(_0x353b6d){if(_0x353b6d){return _0x353b6d?{'count':_0x459cd3,'rows':_0x353b6d}:null;}})[_0xb49f('0x15')](respondWithResult(_0x1ba5b1,null))[_0xb49f('0x50')](handleError(_0x1ba5b1,null));};exports['addMailAccounts']=function(_0x2675df,_0x5f2451){return db['User']['find']({'where':{'id':_0x2675df['params']['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x5f2451,null))[_0xb49f('0x15')](function(_0x3c6067){if(_0x3c6067){return _0x3c6067[_0xb49f('0x13b')](_0x2675df[_0xb49f('0x61')][_0xb49f('0x64')],_[_0xb49f('0x121')](_0x2675df[_0xb49f('0x61')],['ids','id'])||{});}})[_0xb49f('0x15')](respondWithResult(_0x5f2451,null))[_0xb49f('0x50')](handleError(_0x5f2451,null));};exports[_0xb49f('0x13c')]=function(_0x1683a7,_0x54d421){return db[_0xb49f('0x37')]['find']({'where':{'id':_0x1683a7[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x54d421,null))[_0xb49f('0x15')](function(_0x3cc91f){if(_0x3cc91f){return _0x3cc91f['removeMailAccounts'](_0x1683a7[_0xb49f('0x3f')][_0xb49f('0x64')]);}})[_0xb49f('0x15')](respondWithStatusCode(_0x54d421,null))[_0xb49f('0x50')](handleError(_0x54d421,null));};exports[_0xb49f('0x13d')]=function(_0x4c1f79,_0x94fdf3){var _0x556ca2={};var _0x22a63e={};var _0x239477;var _0x355754;return db[_0xb49f('0x37')][_0xb49f('0x98')]({'where':{'id':_0x4c1f79[_0xb49f('0x52')]['id']}})['then'](handleEntityNotFound(_0x94fdf3,null))[_0xb49f('0x15')](function(_0x322645){if(_0x322645){_0x239477=_0x322645;_0x22a63e['model']=_[_0xb49f('0x55')](db[_0xb49f('0x13e')][_0xb49f('0x56')]);_0x22a63e['query']=_[_0xb49f('0x55')](_0x4c1f79[_0xb49f('0x3f')]);_0x22a63e['filters']=_['intersection'](_0x22a63e['model'],_0x22a63e[_0xb49f('0x3f')]);_0x556ca2[_0xb49f('0x5a')]=_['intersection'](_0x22a63e[_0xb49f('0x53')],qs[_0xb49f('0x5b')](_0x4c1f79['query'][_0xb49f('0x5b')]));_0x556ca2[_0xb49f('0x5a')]=_0x556ca2['attributes']['length']?_0x556ca2[_0xb49f('0x5a')]:_0x22a63e[_0xb49f('0x53')];_0x556ca2[_0xb49f('0xc6')]=qs[_0xb49f('0xc7')](_0x4c1f79[_0xb49f('0x3f')][_0xb49f('0xc7')]);_0x556ca2[_0xb49f('0xc8')]=qs[_0xb49f('0x58')](_['pick'](_0x4c1f79[_0xb49f('0x3f')],_0x22a63e['filters']));if(_0x4c1f79['query'][_0xb49f('0x2f')]){_0x556ca2[_0xb49f('0xc8')]=_[_0xb49f('0x5d')](_0x556ca2['where'],{'$or':_[_0xb49f('0x31')](_0x556ca2[_0xb49f('0x5a')],function(_0x32995e){var _0x35f83f={};_0x35f83f[_0x32995e]={'$like':'%'+_0x4c1f79['query'][_0xb49f('0x2f')]+'%'};return _0x35f83f;})});}_0x556ca2=_[_0xb49f('0x5d')]({},_0x556ca2,_0x4c1f79[_0xb49f('0x5e')]);return _0x239477[_0xb49f('0x13d')](_0x556ca2);}})[_0xb49f('0x15')](function(_0x184800){if(_0x184800){_0x355754=_0x184800[_0xb49f('0x5c')];if(!_0x4c1f79[_0xb49f('0x3f')][_0xb49f('0xd0')](_0xb49f('0xd4'))){_0x556ca2[_0xb49f('0x22')]=qs['limit'](_0x4c1f79['query']['limit']);_0x556ca2[_0xb49f('0x20')]=qs[_0xb49f('0x20')](_0x4c1f79[_0xb49f('0x3f')][_0xb49f('0x20')]);}return _0x239477['getOpenchannelAccounts'](_0x556ca2);}})[_0xb49f('0x15')](function(_0x4de803){if(_0x4de803){return _0x4de803?{'count':_0x355754,'rows':_0x4de803}:null;}})[_0xb49f('0x15')](respondWithResult(_0x94fdf3,null))[_0xb49f('0x50')](handleError(_0x94fdf3,null));};exports[_0xb49f('0x13f')]=function(_0x41d164,_0x3837bd){return db[_0xb49f('0x37')][_0xb49f('0x5f')]({'where':{'id':_0x41d164[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x3837bd,null))['then'](function(_0x57cbef){if(_0x57cbef){return _0x57cbef[_0xb49f('0x13f')](_0x41d164[_0xb49f('0x61')]['ids'],_[_0xb49f('0x121')](_0x41d164[_0xb49f('0x61')],[_0xb49f('0x64'),'id'])||{});}})['then'](respondWithResult(_0x3837bd,null))['catch'](handleError(_0x3837bd,null));};exports[_0xb49f('0x140')]=function(_0xfe2c5c,_0x4ccfc0){return db['User'][_0xb49f('0x5f')]({'where':{'id':_0xfe2c5c[_0xb49f('0x52')]['id']}})['then'](handleEntityNotFound(_0x4ccfc0,null))['then'](function(_0x525039){if(_0x525039){return _0x525039[_0xb49f('0x140')](_0xfe2c5c['query'][_0xb49f('0x64')]);}})[_0xb49f('0x15')](respondWithStatusCode(_0x4ccfc0,null))['catch'](handleError(_0x4ccfc0,null));};exports[_0xb49f('0x141')]=function(_0x5d29d9,_0x2f2253){var _0x1b72d7={};var _0x361d30={};var _0x363db9;var _0x917b0f;return db[_0xb49f('0x37')]['findOne']({'where':{'id':_0x5d29d9[_0xb49f('0x52')]['id']}})['then'](handleEntityNotFound(_0x2f2253,null))[_0xb49f('0x15')](function(_0x2018b6){if(_0x2018b6){_0x363db9=_0x2018b6;_0x361d30[_0xb49f('0x53')]=_['keys'](db[_0xb49f('0x142')]['rawAttributes']);_0x361d30[_0xb49f('0x3f')]=_['keys'](_0x5d29d9['query']);_0x361d30['filters']=_['intersection'](_0x361d30[_0xb49f('0x53')],_0x361d30[_0xb49f('0x3f')]);_0x1b72d7[_0xb49f('0x5a')]=_[_0xb49f('0x59')](_0x361d30[_0xb49f('0x53')],qs[_0xb49f('0x5b')](_0x5d29d9['query']['fields']));_0x1b72d7['attributes']=_0x1b72d7[_0xb49f('0x5a')]['length']?_0x1b72d7['attributes']:_0x361d30['model'];_0x1b72d7[_0xb49f('0xc6')]=qs[_0xb49f('0xc7')](_0x5d29d9[_0xb49f('0x3f')][_0xb49f('0xc7')]);_0x1b72d7[_0xb49f('0xc8')]=qs[_0xb49f('0x58')](_[_0xb49f('0xc9')](_0x5d29d9[_0xb49f('0x3f')],_0x361d30[_0xb49f('0x58')]));if(_0x5d29d9[_0xb49f('0x3f')]['filter']){_0x1b72d7[_0xb49f('0xc8')]=_[_0xb49f('0x5d')](_0x1b72d7['where'],{'$or':_[_0xb49f('0x31')](_0x1b72d7[_0xb49f('0x5a')],function(_0x275b2c){var _0x31c37d={};_0x31c37d[_0x275b2c]={'$like':'%'+_0x5d29d9[_0xb49f('0x3f')]['filter']+'%'};return _0x31c37d;})});}_0x1b72d7=_['merge']({},_0x1b72d7,_0x5d29d9[_0xb49f('0x5e')]);return _0x363db9[_0xb49f('0x141')](_0x1b72d7);}})[_0xb49f('0x15')](function(_0x526c79){if(_0x526c79){_0x917b0f=_0x526c79[_0xb49f('0x5c')];if(!_0x5d29d9[_0xb49f('0x3f')][_0xb49f('0xd0')](_0xb49f('0xd4'))){_0x1b72d7['limit']=qs[_0xb49f('0x22')](_0x5d29d9[_0xb49f('0x3f')][_0xb49f('0x22')]);_0x1b72d7[_0xb49f('0x20')]=qs[_0xb49f('0x20')](_0x5d29d9[_0xb49f('0x3f')]['offset']);}return _0x363db9['getSmsAccounts'](_0x1b72d7);}})[_0xb49f('0x15')](function(_0x3784e6){if(_0x3784e6){return _0x3784e6?{'count':_0x917b0f,'rows':_0x3784e6}:null;}})[_0xb49f('0x15')](respondWithResult(_0x2f2253,null))[_0xb49f('0x50')](handleError(_0x2f2253,null));};exports[_0xb49f('0x143')]=function(_0x158600,_0x56bbef){return db[_0xb49f('0x37')][_0xb49f('0x5f')]({'where':{'id':_0x158600[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x56bbef,null))['then'](function(_0x33c484){if(_0x33c484){return _0x33c484[_0xb49f('0x143')](_0x158600['body'][_0xb49f('0x64')],_[_0xb49f('0x121')](_0x158600['body'],[_0xb49f('0x64'),'id'])||{});}})[_0xb49f('0x15')](respondWithResult(_0x56bbef,null))[_0xb49f('0x50')](handleError(_0x56bbef,null));};exports[_0xb49f('0x144')]=function(_0x36b493,_0x2dc35e){return db[_0xb49f('0x37')]['find']({'where':{'id':_0x36b493[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x2dc35e,null))[_0xb49f('0x15')](function(_0x42ca1c){if(_0x42ca1c){return _0x42ca1c['removeSmsAccounts'](_0x36b493[_0xb49f('0x3f')][_0xb49f('0x64')]);}})[_0xb49f('0x15')](respondWithStatusCode(_0x2dc35e,null))[_0xb49f('0x50')](handleError(_0x2dc35e,null));};exports['getChatWebsites']=function(_0x2d0ccd,_0xb9c6ad){var _0x20e292={};var _0x1a73ce={};var _0x542993;var _0x22bad8;return db[_0xb49f('0x37')][_0xb49f('0x98')]({'where':{'id':_0x2d0ccd[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0xb9c6ad,null))[_0xb49f('0x15')](function(_0x2a5aa6){if(_0x2a5aa6){_0x542993=_0x2a5aa6;_0x1a73ce[_0xb49f('0x53')]=_['keys'](db['ChatWebsite'][_0xb49f('0x56')]);_0x1a73ce['query']=_['keys'](_0x2d0ccd[_0xb49f('0x3f')]);_0x1a73ce[_0xb49f('0x58')]=_['intersection'](_0x1a73ce[_0xb49f('0x53')],_0x1a73ce['query']);_0x20e292[_0xb49f('0x5a')]=_['intersection'](_0x1a73ce[_0xb49f('0x53')],qs[_0xb49f('0x5b')](_0x2d0ccd[_0xb49f('0x3f')][_0xb49f('0x5b')]));_0x20e292['attributes']=_0x20e292[_0xb49f('0x5a')][_0xb49f('0x5c')]?_0x20e292[_0xb49f('0x5a')]:_0x1a73ce[_0xb49f('0x53')];_0x20e292[_0xb49f('0xc6')]=qs[_0xb49f('0xc7')](_0x2d0ccd['query'][_0xb49f('0xc7')]);_0x20e292[_0xb49f('0xc8')]=qs[_0xb49f('0x58')](_['pick'](_0x2d0ccd['query'],_0x1a73ce[_0xb49f('0x58')]));if(_0x2d0ccd[_0xb49f('0x3f')][_0xb49f('0x2f')]){_0x20e292[_0xb49f('0xc8')]=_[_0xb49f('0x5d')](_0x20e292[_0xb49f('0xc8')],{'$or':_[_0xb49f('0x31')](_0x20e292[_0xb49f('0x5a')],function(_0x373367){var _0x4e6ad={};_0x4e6ad[_0x373367]={'$like':'%'+_0x2d0ccd[_0xb49f('0x3f')][_0xb49f('0x2f')]+'%'};return _0x4e6ad;})});}_0x20e292=_[_0xb49f('0x5d')]({},_0x20e292,_0x2d0ccd[_0xb49f('0x5e')]);return _0x542993['getChatWebsites'](_0x20e292);}})[_0xb49f('0x15')](function(_0x3b19f0){if(_0x3b19f0){_0x22bad8=_0x3b19f0[_0xb49f('0x5c')];if(!_0x2d0ccd[_0xb49f('0x3f')][_0xb49f('0xd0')](_0xb49f('0xd4'))){_0x20e292['limit']=qs[_0xb49f('0x22')](_0x2d0ccd['query'][_0xb49f('0x22')]);_0x20e292['offset']=qs[_0xb49f('0x20')](_0x2d0ccd[_0xb49f('0x3f')][_0xb49f('0x20')]);}return _0x542993['getChatWebsites'](_0x20e292);}})['then'](function(_0x1eb188){if(_0x1eb188){return _0x1eb188?{'count':_0x22bad8,'rows':_0x1eb188}:null;}})[_0xb49f('0x15')](respondWithResult(_0xb9c6ad,null))[_0xb49f('0x50')](handleError(_0xb9c6ad,null));};exports[_0xb49f('0x145')]=function(_0x4028b,_0x55689c){return db[_0xb49f('0x37')]['find']({'where':{'id':_0x4028b[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x55689c,null))[_0xb49f('0x15')](function(_0x3562d7){if(_0x3562d7){return _0x3562d7[_0xb49f('0x145')](_0x4028b[_0xb49f('0x61')][_0xb49f('0x64')],_[_0xb49f('0x121')](_0x4028b[_0xb49f('0x61')],[_0xb49f('0x64'),'id'])||{});}})[_0xb49f('0x15')](respondWithResult(_0x55689c,null))[_0xb49f('0x50')](handleError(_0x55689c,null));};exports[_0xb49f('0x146')]=function(_0x26fd17,_0x2db64a){return db[_0xb49f('0x37')][_0xb49f('0x5f')]({'where':{'id':_0x26fd17[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x2db64a,null))['then'](function(_0x4de48f){if(_0x4de48f){return _0x4de48f[_0xb49f('0x146')](_0x26fd17[_0xb49f('0x3f')][_0xb49f('0x64')]);}})[_0xb49f('0x15')](respondWithStatusCode(_0x2db64a,null))[_0xb49f('0x50')](handleError(_0x2db64a,null));};exports['getWhatsappAccounts']=function(_0x126823,_0x461149){var _0x32c000={};var _0x3392fe={};var _0x55a334;var _0x548ebb;return db[_0xb49f('0x37')][_0xb49f('0x98')]({'where':{'id':_0x126823[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x461149,null))[_0xb49f('0x15')](function(_0x34dd60){if(_0x34dd60){_0x55a334=_0x34dd60;_0x3392fe[_0xb49f('0x53')]=_['keys'](db[_0xb49f('0x147')]['rawAttributes']);_0x3392fe['query']=_['keys'](_0x126823['query']);_0x3392fe[_0xb49f('0x58')]=_[_0xb49f('0x59')](_0x3392fe[_0xb49f('0x53')],_0x3392fe[_0xb49f('0x3f')]);_0x32c000[_0xb49f('0x5a')]=_['intersection'](_0x3392fe[_0xb49f('0x53')],qs[_0xb49f('0x5b')](_0x126823[_0xb49f('0x3f')]['fields']));_0x32c000[_0xb49f('0x5a')]=_0x32c000['attributes'][_0xb49f('0x5c')]?_0x32c000['attributes']:_0x3392fe[_0xb49f('0x53')];_0x32c000[_0xb49f('0xc6')]=qs[_0xb49f('0xc7')](_0x126823[_0xb49f('0x3f')]['sort']);_0x32c000[_0xb49f('0xc8')]=qs[_0xb49f('0x58')](_['pick'](_0x126823[_0xb49f('0x3f')],_0x3392fe[_0xb49f('0x58')]));if(_0x126823[_0xb49f('0x3f')][_0xb49f('0x2f')]){_0x32c000[_0xb49f('0xc8')]=_[_0xb49f('0x5d')](_0x32c000[_0xb49f('0xc8')],{'$or':_[_0xb49f('0x31')](_0x32c000['attributes'],function(_0x493100){var _0x7d6a84={};_0x7d6a84[_0x493100]={'$like':'%'+_0x126823['query'][_0xb49f('0x2f')]+'%'};return _0x7d6a84;})});}_0x32c000=_[_0xb49f('0x5d')]({},_0x32c000,_0x126823[_0xb49f('0x5e')]);return _0x55a334[_0xb49f('0x148')](_0x32c000);}})[_0xb49f('0x15')](function(_0x2fc71c){if(_0x2fc71c){_0x548ebb=_0x2fc71c['length'];if(!_0x126823[_0xb49f('0x3f')][_0xb49f('0xd0')](_0xb49f('0xd4'))){_0x32c000[_0xb49f('0x22')]=qs['limit'](_0x126823[_0xb49f('0x3f')][_0xb49f('0x22')]);_0x32c000['offset']=qs['offset'](_0x126823[_0xb49f('0x3f')][_0xb49f('0x20')]);}return _0x55a334[_0xb49f('0x148')](_0x32c000);}})['then'](function(_0x240b24){if(_0x240b24){return _0x240b24?{'count':_0x548ebb,'rows':_0x240b24}:null;}})[_0xb49f('0x15')](respondWithResult(_0x461149,null))[_0xb49f('0x50')](handleError(_0x461149,null));};exports[_0xb49f('0x149')]=function(_0x5a4875,_0x55c0e3){return db[_0xb49f('0x37')][_0xb49f('0x5f')]({'where':{'id':_0x5a4875[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x55c0e3,null))[_0xb49f('0x15')](function(_0x183c9e){if(_0x183c9e){return _0x183c9e[_0xb49f('0x149')](_0x5a4875[_0xb49f('0x61')]['ids'],_[_0xb49f('0x121')](_0x5a4875[_0xb49f('0x61')],[_0xb49f('0x64'),'id'])||{});}})['then'](respondWithResult(_0x55c0e3,null))[_0xb49f('0x50')](handleError(_0x55c0e3,null));};exports[_0xb49f('0x14a')]=function(_0xbbdd8e,_0x34cc38){return db[_0xb49f('0x37')][_0xb49f('0x5f')]({'where':{'id':_0xbbdd8e[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x34cc38,null))[_0xb49f('0x15')](function(_0x5b9f2d){if(_0x5b9f2d){return _0x5b9f2d['removeWhatsappAccounts'](_0xbbdd8e[_0xb49f('0x3f')][_0xb49f('0x64')]);}})[_0xb49f('0x15')](respondWithStatusCode(_0x34cc38,null))[_0xb49f('0x50')](handleError(_0x34cc38,null));};exports[_0xb49f('0x14b')]=function(_0x33cb45,_0x482059){var _0x531ae0={};var _0x3ac422={};var _0x247a22;var _0x514815;return db[_0xb49f('0x37')][_0xb49f('0x98')]({'where':{'id':_0x33cb45[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x482059,null))[_0xb49f('0x15')](function(_0x2f156e){if(_0x2f156e){_0x247a22=_0x2f156e;_0x3ac422[_0xb49f('0x53')]=_[_0xb49f('0x55')](db[_0xb49f('0x14c')][_0xb49f('0x56')]);_0x3ac422[_0xb49f('0x3f')]=_[_0xb49f('0x55')](_0x33cb45[_0xb49f('0x3f')]);_0x3ac422[_0xb49f('0x58')]=_[_0xb49f('0x59')](_0x3ac422['model'],_0x3ac422[_0xb49f('0x3f')]);_0x531ae0[_0xb49f('0x5a')]=_[_0xb49f('0x59')](_0x3ac422[_0xb49f('0x53')],qs[_0xb49f('0x5b')](_0x33cb45[_0xb49f('0x3f')][_0xb49f('0x5b')]));_0x531ae0[_0xb49f('0x5a')]=_0x531ae0[_0xb49f('0x5a')][_0xb49f('0x5c')]?_0x531ae0['attributes']:_0x3ac422[_0xb49f('0x53')];_0x531ae0[_0xb49f('0xc6')]=qs[_0xb49f('0xc7')](_0x33cb45[_0xb49f('0x3f')][_0xb49f('0xc7')]);_0x531ae0['where']=qs[_0xb49f('0x58')](_[_0xb49f('0xc9')](_0x33cb45[_0xb49f('0x3f')],_0x3ac422[_0xb49f('0x58')]));if(_0x33cb45['query'][_0xb49f('0x2f')]){_0x531ae0[_0xb49f('0xc8')]=_[_0xb49f('0x5d')](_0x531ae0[_0xb49f('0xc8')],{'$or':_[_0xb49f('0x31')](_0x531ae0[_0xb49f('0x5a')],function(_0x2a5bda){var _0x51024c={};_0x51024c[_0x2a5bda]={'$like':'%'+_0x33cb45[_0xb49f('0x3f')][_0xb49f('0x2f')]+'%'};return _0x51024c;})});}_0x531ae0=_[_0xb49f('0x5d')]({},_0x531ae0,_0x33cb45[_0xb49f('0x5e')]);return _0x247a22['getSquareProjects'](_0x531ae0);}})[_0xb49f('0x15')](function(_0x5b3496){if(_0x5b3496){_0x514815=_0x5b3496[_0xb49f('0x5c')];if(!_0x33cb45[_0xb49f('0x3f')][_0xb49f('0xd0')](_0xb49f('0xd4'))){_0x531ae0[_0xb49f('0x22')]=qs[_0xb49f('0x22')](_0x33cb45[_0xb49f('0x3f')][_0xb49f('0x22')]);_0x531ae0[_0xb49f('0x20')]=qs[_0xb49f('0x20')](_0x33cb45[_0xb49f('0x3f')]['offset']);}return _0x247a22[_0xb49f('0x14b')](_0x531ae0);}})[_0xb49f('0x15')](function(_0x2f6498){if(_0x2f6498){return _0x2f6498?{'count':_0x514815,'rows':_0x2f6498}:null;}})['then'](respondWithResult(_0x482059,null))[_0xb49f('0x50')](handleError(_0x482059,null));};exports[_0xb49f('0x14d')]=function(_0x14bd7c,_0x2c3112){return db['User'][_0xb49f('0x5f')]({'where':{'id':_0x14bd7c['params']['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x2c3112,null))[_0xb49f('0x15')](function(_0x4f03a7){if(_0x4f03a7){return _0x4f03a7[_0xb49f('0x14d')](_0x14bd7c['body']['ids'],_[_0xb49f('0x121')](_0x14bd7c['body'],[_0xb49f('0x64'),'id'])||{});}})[_0xb49f('0x15')](respondWithResult(_0x2c3112,null))[_0xb49f('0x50')](handleError(_0x2c3112,null));};exports[_0xb49f('0x14e')]=function(_0x1358c6,_0x46bcdc){return db[_0xb49f('0x37')]['find']({'where':{'id':_0x1358c6['params']['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x46bcdc,null))['then'](function(_0x23e4dd){if(_0x23e4dd){return _0x23e4dd[_0xb49f('0x14e')](_0x1358c6[_0xb49f('0x3f')][_0xb49f('0x64')]);}})[_0xb49f('0x15')](respondWithStatusCode(_0x46bcdc,null))['catch'](handleError(_0x46bcdc,null));};exports['getScheduledCalls']=function(_0x9546d1,_0x3629e0){var _0x3f512b={},_0x17f2f4={},_0x1e9ca7={'count':0x0,'rows':[]};var _0x5b2646=db[_0xb49f('0x14f')]['rawAttributes'];_0x17f2f4[_0xb49f('0x53')]=_[_0xb49f('0x55')](_0x5b2646);_0x17f2f4[_0xb49f('0x3f')]=_['keys'](_0x9546d1['query']);_0x17f2f4[_0xb49f('0x58')]=_[_0xb49f('0x59')](_0x17f2f4['model'],_0x17f2f4[_0xb49f('0x3f')]);_0x17f2f4[_0xb49f('0x58')]=_[_0xb49f('0x150')](_0x17f2f4[_0xb49f('0x58')],['$and',_0xb49f('0x151'),_0xb49f('0x152'),_0xb49f('0x153'),'$lt',_0xb49f('0x154'),_0xb49f('0x155'),_0xb49f('0x156'),_0xb49f('0x157'),_0xb49f('0x158'),'$notBetween','$in',_0xb49f('0x159'),'$like',_0xb49f('0x15a'),'$iLike',_0xb49f('0x15b'),_0xb49f('0x15c'),'$overlap',_0xb49f('0x15d'),_0xb49f('0x15e'),_0xb49f('0x15f')]);_0x3f512b[_0xb49f('0x5a')]=_[_0xb49f('0x59')](_0x17f2f4[_0xb49f('0x53')],qs['fields'](_0x9546d1[_0xb49f('0x3f')][_0xb49f('0x5b')]));_0x3f512b[_0xb49f('0x5a')]=_0x3f512b[_0xb49f('0x5a')][_0xb49f('0x5c')]?_0x3f512b[_0xb49f('0x5a')]:_0x17f2f4[_0xb49f('0x53')];if(!_0x9546d1[_0xb49f('0x3f')][_0xb49f('0xd0')](_0xb49f('0xd4'))){_0x3f512b[_0xb49f('0x22')]=qs[_0xb49f('0x22')](_0x9546d1[_0xb49f('0x3f')][_0xb49f('0x22')]);_0x3f512b['offset']=qs[_0xb49f('0x20')](_0x9546d1[_0xb49f('0x3f')][_0xb49f('0x20')]);}_0x3f512b[_0xb49f('0xc6')]=qs[_0xb49f('0xc7')](_0x9546d1[_0xb49f('0x3f')][_0xb49f('0xc7')]);_0x3f512b['where']=qs[_0xb49f('0x58')](_[_0xb49f('0xc9')](_0x9546d1[_0xb49f('0x3f')],_0x17f2f4[_0xb49f('0x58')]));if(_0x9546d1['query']['filter']){_0x3f512b['where']=_[_0xb49f('0x5d')](_0x3f512b[_0xb49f('0xc8')],{'$or':_['map'](_0x3f512b[_0xb49f('0x5a')],function(_0x528888){var _0x240e75={};_0x240e75[_0x528888]={'$like':'%'+_0x9546d1[_0xb49f('0x3f')][_0xb49f('0x2f')]+'%'};return _0x240e75;})});}_0x3f512b[_0xb49f('0xc8')]={'$and':[_0x3f512b[_0xb49f('0xc8')],{'$or':[{'UserId':_0x9546d1[_0xb49f('0x52')]['id']},{'OwnerId':_0x9546d1[_0xb49f('0x52')]['id']}]}]};_0x3f512b=_[_0xb49f('0x5d')]({},_0x3f512b,_0x9546d1[_0xb49f('0x5e')]);var _0x3edcbe={'where':_0x3f512b['where']};return db['CmHopper'][_0xb49f('0x23')](_0x3edcbe)['then'](function(_0x4d694e){_0x1e9ca7[_0xb49f('0x23')]=_0x4d694e;if(_0x9546d1[_0xb49f('0x3f')]['includeAll']){_0x3f512b[_0xb49f('0x41')]=[{'attributes':['id',_0xb49f('0x160'),_0xb49f('0x161'),_0xb49f('0x162')],'model':db['CmContact'],'as':_0xb49f('0x163')},{'attributes':['id','name',_0xb49f('0x164')],'model':db[_0xb49f('0xa8')],'as':_0xb49f('0xd1')}];}return db[_0xb49f('0x14f')][_0xb49f('0x46')](_0x3f512b);})[_0xb49f('0x15')](function(_0x495a94){_0x1e9ca7['rows']=_0x495a94;return _0x1e9ca7;})[_0xb49f('0x15')](respondWithFilteredResult(_0x3629e0,_0x3f512b))[_0xb49f('0x50')](handleError(_0x3629e0,null));};exports['getApiKey']=function(_0x1c9c21,_0x394d62){if(!_['isNil'](_0x1c9c21[_0xb49f('0x7f')]['id'])&&(_0x1c9c21[_0xb49f('0x7f')][_0xb49f('0x29')]=='admin'||_0x1c9c21[_0xb49f('0x7f')][_0xb49f('0x29')]==_0xb49f('0x7f'))){return db['User']['findOne']({'where':{'id':_0x1c9c21[_0xb49f('0x52')]['id']},'raw':!![]})['then'](function(_0x2eed35){return authService[_0xb49f('0x165')](_0x2eed35);})[_0xb49f('0x15')](function(_0x299d9c){if(_0x299d9c){return _0x394d62[_0xb49f('0x1d')](0xc8)[_0xb49f('0x1f')]({'api_key':_0x299d9c[_0xb49f('0x166')]});}else{return _0x394d62['status'](0xcc)[_0xb49f('0x1f')]({'message':_0xb49f('0x167')});}})['catch'](handleError(_0x394d62,0x193));}else{return _0x394d62[_0xb49f('0x1d')](0x191)[_0xb49f('0x1f')]({'message':_0xb49f('0x168')});}};exports['createApiKey']=function(_0xa3138c,_0x1e3815){if(!_[_0xb49f('0x6b')](_0xa3138c[_0xb49f('0x7f')]['id'])&&(_0xa3138c[_0xb49f('0x7f')][_0xb49f('0x29')]==_0xb49f('0x2a')||_0xa3138c[_0xb49f('0x7f')][_0xb49f('0x29')]==_0xb49f('0x7f'))){return db[_0xb49f('0x37')][_0xb49f('0x5f')]({'where':{'id':_0xa3138c[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](function(_0x7975fa){return authService[_0xb49f('0x169')](_0x7975fa);})[_0xb49f('0x15')](function(_0x547cb6){return db[_0xb49f('0x37')][_0xb49f('0x25')]({'apiKeyIat':_0x547cb6[_0xb49f('0x16a')],'apiKeyNonce':_0x547cb6[_0xb49f('0x16b')]},{'where':{'id':_0xa3138c[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](function(){return _0x1e3815['status'](0xc8)[_0xb49f('0x1f')]({'api_key':_0x547cb6[_0xb49f('0x166')]});});})[_0xb49f('0x50')](handleError(_0x1e3815,0x193));}else{return _0x1e3815['status'](0x191)[_0xb49f('0x1f')]({'message':_0xb49f('0x168')});}};exports[_0xb49f('0x16c')]=function(_0x16e4ab,_0x4f0fd7){if(!_[_0xb49f('0x6b')](_0x16e4ab[_0xb49f('0x7f')]['id'])&&(_0x16e4ab[_0xb49f('0x7f')]['role']==_0xb49f('0x2a')||_0x16e4ab[_0xb49f('0x7f')]['role']=='user')){return db[_0xb49f('0x37')][_0xb49f('0x5f')]({'where':{'id':_0x16e4ab[_0xb49f('0x52')]['id']}})[_0xb49f('0x15')](handleEntityNotFound(_0x4f0fd7,null))[_0xb49f('0x15')](function(_0x50ed08){if(_0x50ed08&&_0x50ed08[_0xb49f('0x16d')]&&_0x50ed08[_0xb49f('0x16e')])return _0x50ed08;else throw{'message':'API\x20key\x20not\x20available'};})[_0xb49f('0x15')](function(){return db[_0xb49f('0x37')][_0xb49f('0x25')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x16e4ab['params']['id']}});})[_0xb49f('0x15')](respondWithStatusCode(_0x4f0fd7,0xc8))[_0xb49f('0x50')](handleError(_0x4f0fd7,0x193));}else{return _0x4f0fd7[_0xb49f('0x1d')](0x191)[_0xb49f('0x1f')]({'message':_0xb49f('0x168')});}};exports[_0xb49f('0x16f')]=function(_0x314865,_0x1a0356){var _0x17194e=_0x314865[_0xb49f('0x7f')][_0xb49f('0xa9')]({'plain':!![]});if(!_0x17194e){return _0x1a0356[_0xb49f('0x1d')](0x191)[_0xb49f('0x35')](_0xb49f('0x170'));}else{Promise[_0xb49f('0x10d')]()[_0xb49f('0x15')](function(){if(_0x314865[_0xb49f('0x3f')][_0xb49f('0x42')]!=='true')return;return _0x314865['user']['getUserSetting']();})[_0xb49f('0x15')](function(_0x264e62){if(!_0x264e62)return;return _0x264e62['get']({'plain':!![]});})[_0xb49f('0x15')](function(_0x8a032a){_0x17194e[_0xb49f('0x42')]=_0x8a032a;return _0x1a0356[_0xb49f('0x1d')](0xc8)[_0xb49f('0x1f')](_0x17194e);});}};exports[_0xb49f('0x171')]=function(_0x21ddc7,_0x3b4bfe){var _0x118140={'offset':0x0},_0x9f2125={'count':0x0,'rows':[]};Promise['resolve']()[_0xb49f('0x15')](function(){if(!_0x21ddc7['query']['filter']&&!_0x21ddc7[_0xb49f('0x3f')][_0xb49f('0x172')]&&!_0x21ddc7[_0xb49f('0x3f')][_0xb49f('0x173')])return[];return Promise[_0xb49f('0x10d')]()['then'](function(){var _0x4db81b=[];if(!_[_0xb49f('0x8c')](_0x21ddc7['query'][_0xb49f('0x172')])){_0x4db81b[_0xb49f('0x45')](db['Team'][_0xb49f('0x46')]({'attributes':['id',_0xb49f('0x34')],'where':{'id':_0x21ddc7[_0xb49f('0x3f')][_0xb49f('0x172')]}}));}if(!_[_0xb49f('0x8c')](_0x21ddc7[_0xb49f('0x3f')][_0xb49f('0x173')])){_0x4db81b['push'](db[_0xb49f('0xa8')][_0xb49f('0x46')]({'attributes':['id',_0xb49f('0x34')],'type':'inbound','where':{'id':_0x21ddc7[_0xb49f('0x3f')][_0xb49f('0x173')]}}));}return Promise['all'](_0x4db81b);})[_0xb49f('0x15')](function(_0x348d95){var _0x12e8c7=_[_0xb49f('0x174')](_0x348d95)['map'](function(_0x4f707e){return _0x4f707e[_0xb49f('0x11e')]({'attributes':['id','name',_0xb49f('0x69'),_0xb49f('0x113')],'raw':!![]});});return Promise[_0xb49f('0x4f')](_0x12e8c7);})['then'](function(_0x341641){var _0x41cfb2=_['flatten'](_0x341641);if(!_0x21ddc7['query'][_0xb49f('0x2f')])return _0x41cfb2;if(_['isEmpty'](_0x41cfb2)){return db['User']['findAll']({'attributes':['id',_0xb49f('0x34'),'internal',_0xb49f('0x113')],'where':{'role':_0xb49f('0x80'),'$or':[db[_0xb49f('0x6c')][_0xb49f('0xc8')](db[_0xb49f('0x6c')]['fn'](_0xb49f('0x175'),db[_0xb49f('0x6c')][_0xb49f('0x176')]('name')),{'$like':'%'+_0x21ddc7['query'][_0xb49f('0x2f')][_0xb49f('0xa5')]()+'%'}),{'internal':{'$like':'%'+_0x21ddc7[_0xb49f('0x3f')]['filter']+'%'}}]},'raw':!![]});}else{return _(_0x41cfb2)[_0xb49f('0x174')]()[_0xb49f('0x2f')](function(_0x216702){return _0x216702[_0xb49f('0x34')][_0xb49f('0xa5')]()['includes'](_0x21ddc7[_0xb49f('0x3f')]['filter'][_0xb49f('0xa5')]())||_0x216702[_0xb49f('0x69')][_0xb49f('0x177')]()[_0xb49f('0x3b')](_0x21ddc7[_0xb49f('0x3f')]['filter']);})[_0xb49f('0x3d')]();}})['then'](function(_0x19f08a){var _0xa24b3c=_0xb49f('0x34');var _0x1c43c1=_0xb49f('0x178');if(_0x21ddc7[_0xb49f('0x3f')][_0xb49f('0xc7')]){_0x1c43c1=_0x21ddc7[_0xb49f('0x3f')][_0xb49f('0xc7')][0x0]==='-'?_0xb49f('0x179'):_0xb49f('0x178');_0xa24b3c=_0x1c43c1===_0xb49f('0x178')?_0x21ddc7[_0xb49f('0x3f')][_0xb49f('0xc7')]:_0x21ddc7[_0xb49f('0x3f')][_0xb49f('0xc7')][_0xb49f('0x17a')](0x1);}return _(_0x19f08a)[_0xb49f('0x17b')]('id')[_0xb49f('0x17c')]([function(_0x12bf70){return _0xa24b3c==='name'?_0x12bf70[_0xa24b3c][_0xb49f('0xa5')]():_0x12bf70[_0xa24b3c];}],[_0x1c43c1])[_0xb49f('0x31')](function(_0x46b476){return _['pick'](_0x46b476,['id',_0xb49f('0x34'),'internal','online']);})[_0xb49f('0x3d')]();})[_0xb49f('0x15')](function(_0x46c466){return client[_0xb49f('0x14')](_0xb49f('0x2c'),_0x21ddc7)[_0xb49f('0x15')](function(_0xf089a5){if(_0xf089a5[_0xb49f('0x1a')])throw new Error(_0xb49f('0x17d'));var _0x44da33=_0xf089a5['result'];var _0x4c61fe=jayson[_0xb49f('0x12')]['http']({'port':0x232c});return _0x4c61fe['request'](_0xb49f('0x2c'),_0x21ddc7)['then'](function(_0x9bee9){if(_0x9bee9[_0xb49f('0x1a')])throw new Error(_0xb49f('0x17e'));var _0x446724=_0x9bee9['result'];return _[_0xb49f('0x5d')]({},_0x446724,_0x44da33);});})[_0xb49f('0x15')](function(_0x123645){return _[_0xb49f('0x31')](_0x46c466,function(_0x88608a){var _0x57731c=_['find'](_0x123645[_0xb49f('0x47')],['id',_0x88608a['id']]);if(!_0x57731c||!_0x88608a['online']){_0x88608a['status']=_0xb49f('0x17f');}else if(_0x57731c[_0xb49f('0x9e')]){_0x88608a['status']='pause';}else{_0x88608a[_0xb49f('0x1d')]=_[_0xb49f('0x3b')]([_0xb49f('0x180'),'unknown',_0xb49f('0x181'),_0xb49f('0x182'),null,undefined],_0x57731c[_0xb49f('0x183')])?'online':_0xb49f('0x184');}return _0x88608a;});});});})['then'](function(_0x5d9c71){if(!_0x21ddc7['query'][_0xb49f('0xd0')](_0xb49f('0xd4'))){_0x118140[_0xb49f('0x22')]=qs[_0xb49f('0x22')](_0x21ddc7[_0xb49f('0x3f')][_0xb49f('0x22')]||0xa);_0x118140[_0xb49f('0x20')]=qs[_0xb49f('0x20')](_0x21ddc7[_0xb49f('0x3f')][_0xb49f('0x20')]);}_0x9f2125[_0xb49f('0x23')]=_0x5d9c71[_0xb49f('0x5c')];_0x9f2125[_0xb49f('0x47')]=_0x118140[_0xb49f('0x22')]?_0x5d9c71[_0xb49f('0x185')](_0x118140[_0xb49f('0x20')],_0x118140[_0xb49f('0x20')]+_0x118140[_0xb49f('0x22')]):_0x5d9c71;return _0x9f2125;})[_0xb49f('0x15')](respondWithFilteredResult(_0x3b4bfe,_0x118140))[_0xb49f('0x50')](handleError(_0x3b4bfe,null));};function get_open_tabs(_0x36ec3d,_0x2a3e94){var _0x1b65f0=_0x36ec3d[_0xb49f('0x186')](0x0)['toUpperCase']()+_0x36ec3d[_0xb49f('0x185')](0x1);var _0xc9825={'type':db['Sequelize'][_0xb49f('0x187')][_0xb49f('0x6e')],'raw':!![]};return new BPromise(function(_0x592c66,_0x8819e2){var _0x2b3fac=squel['select']()[_0xb49f('0x188')](_0xb49f('0x189')+_0x1b65f0+'InteractionId','id')[_0xb49f('0x188')](_0xb49f('0x18a'))[_0xb49f('0x6f')](_0xb49f('0x18b')+_0x36ec3d+_0xb49f('0x18c'),'ui')['where'](_0xb49f('0x18d'),_0x2a3e94['id']);return db['sequelize']['query'](_0x2b3fac[_0xb49f('0x177')](),_0xc9825)[_0xb49f('0x15')](function(_0x3fa88d){_0x2a3e94[_0x1b65f0+_0xb49f('0x18e')]=_0x3fa88d;_0x592c66(_0x3fa88d);})['catch'](function(_0x65083a){_0x8819e2(_0x65083a);});});}
\ No newline at end of file
+var _0xca2c=['busy','toUpperCase','select','ui.','InteractionId','field','ui.createdAt','user_has_','_interactions','ui.UserId\x20=\x20?','OpenTabs','moment','util','path','lodash','squel','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/license/util','../../errors/api','APINotFoundError','handleError','../../mysqldb','socket.io-emitter','redis','./user.socket','defaults','localhost','client','then','info','User,\x20%s,\x20%s','request\x20sent','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','end','json','undefined','limit','offset','count','set','update','userNotification:recalc:','destroy','get','role','admin','Users','user','telephone','filter','ignore','value','includes','find','name','UserProfileResource','stack','send','index','User','rawAttributes','map','fieldName','type','password','salt','getOptions','where','includeAll','include','query','userSetting','true','attributes','push','findAll','rows','length','dataValues','sms','fax','openchannel','whatsapp','all','catch','params','model','differenceBy','keys','intersection','fields','UserSetting','merge','openTabs','chat','body','describe','addContacts','ids','omit','internal','findById','securePassword','validatePasswordPattern','max','isNil','min_internal','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','QueryTypes','from','voicemail','VoiceMail','fullname','permissions','101','102','103','113','110','105','106','107','108','109','100','111','114','115','agent','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','userProfileId','create','UserProfileSection','Agents','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','Telephones','isEmpty','compact','changePassword','oldPassword','newPassword','Sequelize','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','ValidationError','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','Setting','findOne','passwordHistoryLimit','enforcePasswordHistory','validatePasswordHistory','previousPasswords','updatePasswordsHistory','channel','loginInPause','voicePause','interface','isValidChannel','capitalize','Queues','penalty','spread','toLowerCase','QueueId','emit','Queue:save','voice','VoiceQueue','online','format','SIP/%s','UserVoiceQueueRt','removeQueues','Unknown\x20channel','remove','Queue:remove','file','filename','getAvatar','join','root','server/files/images/logos/default_profile.png','userpic','download','existsSync','server/files/images/','mail','CHAT','FaxOpenTabs','FAX','OpenchannelOpenTabs','OPENCHANNEL','createdAt','MailOpenTabs','MAIL','WhatsappOpenTabs','WHATSAPP','concat','filters','order','sort','pick','options','getContacts','hasOwnProperty','List','color','tag','Queue','Unknown\x20role','nolimit','getVoiceQueuesRt','getGroups','ChatGroup','VoiceRecording','UserId','getScreenRecordings','ScreenRecording','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','getWhatsappInteractions','phone','mobile','intrf','user:forcelogout','headers','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','upsert','forEach','YYYY-MM-DD\x20HH:mm:ss','getChannels','device','PAUSE','LOGININPAUSE','MemberReport','isMiddleware','logout','pause','updateAttributes','DEFAULT\x20PAUSE','unpause','chatPause','faxPause','smsPause','whatsappPause','pauseType','lastPauseAt','QueuePause','manual','Pause','setDataValue','getTeams','Team','addTeams','Body\x20parameter\x20\x27ids\x27\x20is\x20required','sequelize','transaction','addAgent','getDataValue','Voice','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','removeTeams','isArray','resolve','Query\x20parameter\x20\x27ids\x27\x20is\x20required','User\x20with\x20id\x20%s\x20not\x20found','getAssociatedQueues','flattenDeep','getLists','CmList','getAgents','values','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','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','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','removeWhatsappInteractions','getVoicePrefixes','getFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','ChatWebsite','getChatWebsites','addChatWebsites','removeChatWebsites','WhatsappAccount','getWhatsappAccounts','addWhatsappAccounts','SquareProject','getSquareProjects','addSquareProjects','removeSquareProjects','getScheduledCalls','$and','$gt','$gte','$lt','$eq','$not','$in','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contained','CmHopper','firstName','lastName','CmContact','dialActive','getApiKey','retrieveApiKey','token','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','generateApiKey','removeApiKey','apiKeyIat','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','teams','queues','inbound','flatten','lower','toString','desc','asc','substring','orderBy','request','http','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unknown','unavailable','voiceStatus'];(function(_0x6ef390,_0x101c0c){var _0x3ded55=function(_0x1a6916){while(--_0x1a6916){_0x6ef390['push'](_0x6ef390['shift']());}};_0x3ded55(++_0x101c0c);}(_0xca2c,0x19b));var _0xcca2=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0xca2c[_0x42245d];return _0x4b211a;};'use strict';var moment=require(_0xcca2('0x0'));var util=require(_0xcca2('0x1'));var path=require(_0xcca2('0x2'));var fs=require('fs');var _=require(_0xcca2('0x3'));var squel=require(_0xcca2('0x4'));var jayson=require('jayson/promise');var Redis=require('ioredis');var authService=require(_0xcca2('0x5'));var qs=require(_0xcca2('0x6'));var logger=require(_0xcca2('0x7'))(_0xcca2('0x8'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xcca2('0x9'));var APIBadRequestError=require(_0xcca2('0xa'))['APIBadRequestError'];var APINotFoundError=require(_0xcca2('0xa'))[_0xcca2('0xb')];var APIHandleError=require(_0xcca2('0xa'))[_0xcca2('0xc')];var db=require(_0xcca2('0xd'))['db'];var socket=require(_0xcca2('0xe'))(new Redis(config[_0xcca2('0xf')]));require(_0xcca2('0x10'))['register'](socket);config[_0xcca2('0xf')]=_[_0xcca2('0x11')](config[_0xcca2('0xf')],{'host':_0xcca2('0x12'),'port':0x18eb});var amiClient=jayson[_0xcca2('0x13')]['http']({'port':0x232a});var values;function respondWithRpcPromise(_0x16a902,_0x9abc71,_0x5d4e0d,_0x9395d8){return new Promise(function(_0x11030e,_0x4c0706){var _0x1eaff4=_0x9395d8||amiClient;return _0x1eaff4['request'](_0x16a902,_0x5d4e0d)[_0xcca2('0x14')](function(_0x337b03){logger[_0xcca2('0x15')](_0xcca2('0x16'),_0x9abc71,_0xcca2('0x17'));logger['debug'](_0xcca2('0x18'),_0x9abc71,_0xcca2('0x17'),JSON[_0xcca2('0x19')](_0x337b03));if(_0x337b03[_0xcca2('0x1a')]){if(_0x337b03['error'][_0xcca2('0x1b')]===0x1f4){logger[_0xcca2('0x1a')]('User,\x20%s,\x20%s',_0x9abc71,_0x337b03[_0xcca2('0x1a')][_0xcca2('0x1c')]);return _0x4c0706(_0x337b03[_0xcca2('0x1a')]['message']);}logger['error'](_0xcca2('0x16'),_0x9abc71,_0x337b03[_0xcca2('0x1a')][_0xcca2('0x1c')]);return _0x11030e(_0x337b03['error']['message']);}else{logger[_0xcca2('0x15')](_0xcca2('0x16'),_0x9abc71,_0xcca2('0x17'));_0x11030e(_0x337b03[_0xcca2('0x1d')][_0xcca2('0x1c')]);}})['catch'](function(_0x4664f7){logger[_0xcca2('0x1a')](_0xcca2('0x16'),_0x9abc71,_0x4664f7);_0x4c0706(_0x4664f7);});});}function respondWithStatusCode(_0xc7e49f,_0x9a773a){_0x9a773a=_0x9a773a||0xcc;return function(_0x1bcf4a){if(_0x1bcf4a){return _0xc7e49f[_0xcca2('0x1e')](_0x9a773a);}return _0xc7e49f[_0xcca2('0x1f')](_0x9a773a)[_0xcca2('0x20')]();};}function respondWithResult(_0x3dfb05,_0x12ab8c){_0x12ab8c=_0x12ab8c||0xc8;return function(_0x306b7d){if(_0x306b7d){return _0x3dfb05['status'](_0x12ab8c)[_0xcca2('0x21')](_0x306b7d);}};}function respondWithFilteredResult(_0x4dad00,_0x376f96){return function(_0x55418e){if(_0x55418e){var _0x2242ab=typeof _0x376f96['offset']===_0xcca2('0x22')&&typeof _0x376f96[_0xcca2('0x23')]===_0xcca2('0x22');var _0x429565=_0x55418e['count'];var _0x566741=_0x2242ab?0x0:_0x376f96[_0xcca2('0x24')];var _0x2bee4f=_0x2242ab?_0x55418e[_0xcca2('0x25')]:_0x376f96[_0xcca2('0x24')]+_0x376f96[_0xcca2('0x23')];var _0x2d5850;if(_0x2bee4f>=_0x429565){_0x2bee4f=_0x429565;_0x2d5850=0xc8;}else{_0x2d5850=0xce;}_0x4dad00[_0xcca2('0x1f')](_0x2d5850);return _0x4dad00[_0xcca2('0x26')]('Content-Range',_0x566741+'-'+_0x2bee4f+'/'+_0x429565)[_0xcca2('0x21')](_0x55418e);}return null;};}function saveUpdates(_0x521a5a){return function(_0x24e6d3){if(_0x24e6d3){return _0x24e6d3[_0xcca2('0x27')](_0x521a5a)[_0xcca2('0x14')](function(_0xce5eb1){socket['emit'](_0xcca2('0x28')+_0xce5eb1['id'],{});return _0xce5eb1;});}return null;};}function removeEntity(_0x2ad084){return function(_0x4af468){if(_0x4af468){return _0x4af468[_0xcca2('0x29')]()[_0xcca2('0x14')](function(){var _0x3dafbd=_0x4af468[_0xcca2('0x2a')]({'plain':!![]});if(_0x3dafbd[_0xcca2('0x2b')]===_0xcca2('0x2c'))return;var _0x427ad1=[{'name':_0xcca2('0x2d'),'value':_0xcca2('0x2e'),'ignore':!![]},{'name':'Agents','value':'agent','ignore':![]},{'name':'Telephones','value':_0xcca2('0x2f'),'ignore':![]}];var _0x226744=_(_0x427ad1)[_0xcca2('0x30')](_0xcca2('0x31'))['map'](_0xcca2('0x32'))[_0xcca2('0x32')]();if(_[_0xcca2('0x33')](_0x226744,_0x3dafbd[_0xcca2('0x2b')])){return;}var _0x4c4fc1=_[_0xcca2('0x34')](_0x427ad1,[_0xcca2('0x32'),_0x3dafbd[_0xcca2('0x2b')]])[_0xcca2('0x35')];return db[_0xcca2('0x36')][_0xcca2('0x29')]({'where':{'type':_0x4c4fc1,'resourceId':_0x3dafbd['id']}})[_0xcca2('0x14')](function(){return _0x4af468;});})['then'](function(){_0x2ad084[_0xcca2('0x1f')](0xcc)[_0xcca2('0x20')]();});}};}function handleEntityNotFound(_0x2bdd6d){return function(_0x219585){if(!_0x219585){_0x2bdd6d[_0xcca2('0x1e')](0x194);}return _0x219585;};}function handleError(_0x23f4c8,_0x1a98c6){_0x1a98c6=_0x1a98c6||0x1f4;return function(_0x20bbd5){logger[_0xcca2('0x1a')](_0x20bbd5[_0xcca2('0x37')]);if(_0x20bbd5[_0xcca2('0x35')]){delete _0x20bbd5[_0xcca2('0x35')];}_0x23f4c8[_0xcca2('0x1f')](_0x1a98c6)[_0xcca2('0x38')](_0x20bbd5);};}exports[_0xcca2('0x39')]=function(_0x55b3b4,_0x404240){var _0x4c7f70={},_0x3a9bb0={'count':0x0,'rows':[]};var _0x589b1c=_(db[_0xcca2('0x3a')][_0xcca2('0x3b')])[_0xcca2('0x3c')](function(_0x282996){return{'name':_0x282996[_0xcca2('0x3d')],'type':_0x282996[_0xcca2('0x3e')]['key']};})['filter'](function(_0x40bd13){return!_[_0xcca2('0x33')]([_0xcca2('0x3f'),_0xcca2('0x40')],_0x40bd13[_0xcca2('0x35')]);})['value']();_0x4c7f70=qs[_0xcca2('0x41')](_0x589b1c,_0x55b3b4);var _0x54e373={'where':_0x4c7f70[_0xcca2('0x42')]};return db[_0xcca2('0x3a')][_0xcca2('0x25')](_0x54e373)[_0xcca2('0x14')](function(_0x143441){_0x3a9bb0[_0xcca2('0x25')]=_0x143441;if(_0x55b3b4['query'][_0xcca2('0x43')]){_0x4c7f70[_0xcca2('0x44')]=[{'all':!![]}];}if(_0x55b3b4[_0xcca2('0x45')][_0xcca2('0x46')]===_0xcca2('0x47')){_0x4c7f70['include']=[{'model':db['UserSetting'],'as':_0xcca2('0x46')}];}if(!_['includes'](_0x4c7f70['attributes'],'id')){_0x4c7f70[_0xcca2('0x48')][_0xcca2('0x49')]('id');}return db[_0xcca2('0x3a')][_0xcca2('0x4a')](_0x4c7f70);})['then'](function(_0x4e548e){_0x3a9bb0[_0xcca2('0x4b')]=_0x4e548e;if(_0x55b3b4[_0xcca2('0x45')]['openTabs']===_0xcca2('0x47')){var _0x3b10a1=[];for(var _0x426ec5=0x0;_0x426ec5<_0x3a9bb0[_0xcca2('0x4b')][_0xcca2('0x4c')];_0x426ec5++){_0x3b10a1[_0xcca2('0x49')](get_open_tabs('chat',_0x3a9bb0['rows'][_0x426ec5][_0xcca2('0x4d')]));_0x3b10a1['push'](get_open_tabs(_0xcca2('0x4e'),_0x3a9bb0[_0xcca2('0x4b')][_0x426ec5]['dataValues']));_0x3b10a1[_0xcca2('0x49')](get_open_tabs(_0xcca2('0x4f'),_0x3a9bb0[_0xcca2('0x4b')][_0x426ec5][_0xcca2('0x4d')]));_0x3b10a1[_0xcca2('0x49')](get_open_tabs('mail',_0x3a9bb0[_0xcca2('0x4b')][_0x426ec5][_0xcca2('0x4d')]));_0x3b10a1[_0xcca2('0x49')](get_open_tabs(_0xcca2('0x50'),_0x3a9bb0[_0xcca2('0x4b')][_0x426ec5][_0xcca2('0x4d')]));_0x3b10a1[_0xcca2('0x49')](get_open_tabs(_0xcca2('0x51'),_0x3a9bb0['rows'][_0x426ec5][_0xcca2('0x4d')]));}return Promise[_0xcca2('0x52')](_0x3b10a1)[_0xcca2('0x14')](function(){return _0x3a9bb0;});}else{return _0x3a9bb0;}})[_0xcca2('0x14')](respondWithFilteredResult(_0x404240,_0x4c7f70))[_0xcca2('0x53')](handleError(_0x404240,null));};exports['show']=function(_0x28c66c,_0x3ed72c){var _0x117454={'raw':![],'where':{'id':_0x28c66c[_0xcca2('0x54')]['id']}},_0x40acf8={};_0x40acf8[_0xcca2('0x55')]=_[_0xcca2('0x56')](_[_0xcca2('0x57')](db['User']['rawAttributes']),[_0xcca2('0x3f'),_0xcca2('0x40')]);_0x40acf8[_0xcca2('0x45')]=_[_0xcca2('0x57')](_0x28c66c['query']);_0x40acf8['filters']=_[_0xcca2('0x58')](_0x40acf8[_0xcca2('0x55')],_0x40acf8[_0xcca2('0x45')]);_0x117454[_0xcca2('0x48')]=_[_0xcca2('0x58')](_0x40acf8[_0xcca2('0x55')],qs['fields'](_0x28c66c[_0xcca2('0x45')][_0xcca2('0x59')]));_0x117454[_0xcca2('0x48')]=_0x117454[_0xcca2('0x48')][_0xcca2('0x4c')]?_0x117454[_0xcca2('0x48')]:_0x40acf8[_0xcca2('0x55')];if(_0x28c66c[_0xcca2('0x45')]['includeAll']){_0x117454[_0xcca2('0x44')]=[{'all':!![]}];}if(_0x28c66c[_0xcca2('0x45')][_0xcca2('0x46')]===_0xcca2('0x47')){_0x117454['include']=[{'model':db[_0xcca2('0x5a')],'as':_0xcca2('0x46')}];}_0x117454=_[_0xcca2('0x5b')]({},_0x117454,_0x28c66c['options']);if(!_[_0xcca2('0x33')](_0x117454[_0xcca2('0x48')],'id')){_0x117454['attributes'][_0xcca2('0x49')]('id');}return db['User'][_0xcca2('0x34')](_0x117454)[_0xcca2('0x14')](handleEntityNotFound(_0x3ed72c,null))[_0xcca2('0x14')](function(_0x55ce35){var _0x1349fe=[];values=_0x55ce35;if(_0x28c66c[_0xcca2('0x45')][_0xcca2('0x5c')]===_0xcca2('0x47')){_0x1349fe['push'](get_open_tabs(_0xcca2('0x5d'),_0x55ce35[_0xcca2('0x4d')]));_0x1349fe['push'](get_open_tabs('sms',_0x55ce35[_0xcca2('0x4d')]));_0x1349fe[_0xcca2('0x49')](get_open_tabs(_0xcca2('0x50'),_0x55ce35[_0xcca2('0x4d')]));_0x1349fe[_0xcca2('0x49')](get_open_tabs(_0xcca2('0x51'),_0x55ce35[_0xcca2('0x4d')]));_0x1349fe[_0xcca2('0x49')](get_open_tabs(_0xcca2('0x4f'),_0x55ce35[_0xcca2('0x4d')]));_0x1349fe[_0xcca2('0x49')](get_open_tabs('mail',_0x55ce35[_0xcca2('0x4d')]));return Promise[_0xcca2('0x52')](_0x1349fe);}else{return values;}})[_0xcca2('0x14')](function(){return values;})[_0xcca2('0x14')](respondWithResult(_0x3ed72c,null))[_0xcca2('0x53')](handleError(_0x3ed72c,null));};exports['update']=function(_0x532ca8,_0x1b67e9){if(_0x532ca8[_0xcca2('0x5e')]['id']){delete _0x532ca8[_0xcca2('0x5e')]['id'];}delete _0x532ca8[_0xcca2('0x5e')][_0xcca2('0x2b')];return db['User'][_0xcca2('0x34')]({'where':{'id':_0x532ca8[_0xcca2('0x54')]['id']}})['then'](handleEntityNotFound(_0x1b67e9,null))[_0xcca2('0x14')](saveUpdates(_0x532ca8[_0xcca2('0x5e')],null))['then'](respondWithResult(_0x1b67e9,null))['catch'](handleError(_0x1b67e9,null));};exports[_0xcca2('0x5f')]=function(_0x6525d7,_0x27d97c){return db[_0xcca2('0x3a')][_0xcca2('0x5f')]()[_0xcca2('0x14')](respondWithResult(_0x27d97c,null))[_0xcca2('0x53')](handleError(_0x27d97c,null));};exports[_0xcca2('0x60')]=function(_0x3a6077,_0xd03e09){return db['User'][_0xcca2('0x34')]({'where':{'id':_0x3a6077[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0xd03e09,null))[_0xcca2('0x14')](function(_0x41cb78){if(_0x41cb78){return _0x41cb78[_0xcca2('0x60')](_0x3a6077[_0xcca2('0x5e')][_0xcca2('0x61')],_[_0xcca2('0x62')](_0x3a6077[_0xcca2('0x5e')],['ids','id'])||{});}})[_0xcca2('0x14')](respondWithResult(_0xd03e09,null))[_0xcca2('0x53')](handleError(_0xd03e09,null));};function validateUser(_0x4cbead){return new Promise(function(_0x2bdba4,_0x39c68c){if(_0x4cbead[_0xcca2('0x63')])return _0x2bdba4(_0x4cbead);return db['Setting'][_0xcca2('0x64')](0x1)[_0xcca2('0x14')](function(_0x19e67b){if(_0x19e67b[_0xcca2('0x65')])authService[_0xcca2('0x66')](_0x4cbead[_0xcca2('0x3f')]);db[_0xcca2('0x3a')][_0xcca2('0x67')]('internal')['then'](function(_0x55fbaf){if(_['isNil'](_0x55fbaf)){_0x4cbead['internal']=_0x19e67b['min_internal']||0x1;return;}if(_[_0xcca2('0x68')](_0x19e67b[_0xcca2('0x69')])||_0x19e67b[_0xcca2('0x69')]===_0x55fbaf){_0x4cbead[_0xcca2('0x63')]=_0x55fbaf+0x1;return;}if(_0x19e67b[_0xcca2('0x69')]>_0x55fbaf){_0x4cbead[_0xcca2('0x63')]=_0x19e67b[_0xcca2('0x69')];return;}return db['sequelize'][_0xcca2('0x45')](_0xcca2('0x6a'),{'type':db['sequelize'][_0xcca2('0x6b')]['SELECT']})[_0xcca2('0x14')](function(_0x3e47d4){if(_0x3e47d4&&_0x3e47d4['length']){for(var _0x4a109d=0x0,_0x416476=_0x3e47d4[_0xcca2('0x4c')];_0x4a109d<_0x416476&&_[_0xcca2('0x68')](_0x4cbead['internal']);_0x4a109d++){if(_0x19e67b[_0xcca2('0x69')]<=_0x3e47d4[_0x4a109d][_0xcca2('0x6c')]){_0x4cbead['internal']=_0x3e47d4[_0x4a109d][_0xcca2('0x6c')];}else if(_0x19e67b[_0xcca2('0x69')]>_0x3e47d4[_0x4a109d][_0xcca2('0x6c')]&&_0x19e67b[_0xcca2('0x69')]<=_0x3e47d4[_0x4a109d]['to']){_0x4cbead['internal']=_0x19e67b[_0xcca2('0x69')];}}}if(_[_0xcca2('0x68')](_0x4cbead[_0xcca2('0x63')])){_0x4cbead['internal']=_0x55fbaf+0x1;}return _0x2bdba4(_0x4cbead);});});})['catch'](function(_0x1a5738){_0x39c68c(_0x1a5738);});});}function updateUser(_0x21bc8b){return new Promise(function(_0x428947,_0x53fbaf){try{if(_0x21bc8b[_0xcca2('0x6d')]){_0x21bc8b['mailbox']=_0x21bc8b[_0xcca2('0x63')];_0x21bc8b[_0xcca2('0x6e')]={'mailbox':_0x21bc8b['internal'],'password':_0x21bc8b[_0xcca2('0x3f')],'fullname':_0x21bc8b[_0xcca2('0x6f')],'email':_0x21bc8b['email']};}if(_0x21bc8b['role']==='agent'){if(!_0x21bc8b['permissions'])_0x21bc8b[_0xcca2('0x70')]=[_0xcca2('0x71'),_0xcca2('0x72'),_0xcca2('0x73'),_0xcca2('0x74'),_0xcca2('0x75'),'104',_0xcca2('0x76'),_0xcca2('0x77'),_0xcca2('0x78'),_0xcca2('0x79'),_0xcca2('0x7a'),_0xcca2('0x7b'),_0xcca2('0x7c'),_0xcca2('0x7d'),_0xcca2('0x7e')];}_0x428947(_0x21bc8b);}catch(_0x55b473){_0x53fbaf(_0x55b473);}});}exports['create']=function(_0x199aa6,_0x430277){if(_0x199aa6[_0xcca2('0x2e')]['role']===_0xcca2('0x7f'))throw new Error(_0xcca2('0x80'));if(_0x199aa6[_0xcca2('0x5e')]['role']===_0xcca2('0x2e')&&_0x199aa6[_0xcca2('0x2e')][_0xcca2('0x2b')]!==_0xcca2('0x2c')){throw new Error(_0xcca2('0x81'));}if(_0x199aa6[_0xcca2('0x5e')][_0xcca2('0x2b')]===_0xcca2('0x2c')&&_0x199aa6[_0xcca2('0x2e')][_0xcca2('0x2b')]!==_0xcca2('0x2c')){throw new Error(_0xcca2('0x82'));}return licenseUtil[_0xcca2('0x83')]([_0x199aa6[_0xcca2('0x5e')]])[_0xcca2('0x14')](function(){return validateUser(_0x199aa6[_0xcca2('0x5e')]);})[_0xcca2('0x14')](function(_0x10a238){return updateUser(_0x10a238)[_0xcca2('0x14')](function(_0x2fdd47){if(_0x2fdd47[_0xcca2('0x2b')]===_0xcca2('0x2c')){_0x2fdd47[_0xcca2('0x84')]=_0x199aa6['user'][_0xcca2('0x84')];delete _0x2fdd47[_0xcca2('0x85')];}return _0x2fdd47;});})[_0xcca2('0x14')](function(_0x410fbd){return db[_0xcca2('0x3a')][_0xcca2('0x86')](_0x410fbd,{'include':[{'model':db[_0xcca2('0x6e')],'as':'VoiceMail'}]});})[_0xcca2('0x14')](function(_0x4c5ffe){if(_0x199aa6['body'][_0xcca2('0x2b')]===_0xcca2('0x2e'))return _0x4c5ffe;if(_0x199aa6[_0xcca2('0x2e')]['role']!==_0xcca2('0x2e'))return _0x4c5ffe;return db[_0xcca2('0x87')]['find']({'where':{'name':_0x4c5ffe[_0xcca2('0x2b')]===_0xcca2('0x7f')?_0xcca2('0x88'):'Telephones','userProfileId':_0x199aa6[_0xcca2('0x2e')][_0xcca2('0x85')]},'raw':!![]})['then'](function(_0x2562ea){if(!_0x2562ea||_0x2562ea[_0xcca2('0x89')]!=0x0)return _0x4c5ffe;return db[_0xcca2('0x36')][_0xcca2('0x86')]({'name':_0x4c5ffe[_0xcca2('0x35')],'resourceId':_0x4c5ffe['id'],'type':_0x2562ea[_0xcca2('0x35')],'sectionId':_0x2562ea['id']},{})[_0xcca2('0x14')](function(){return _0x4c5ffe;});})[_0xcca2('0x53')](function(_0x112e04){logger[_0xcca2('0x1a')](_0xcca2('0x8a'),_0x112e04);throw _0x112e04;});})['then'](respondWithResult(_0x430277,0xc9))['catch'](handleError(_0x430277,null));};exports[_0xcca2('0x8b')]=function(_0x17d8cf,_0x5ce9e2){var _0x1ff3e8=_0x17d8cf[_0xcca2('0x5e')];var _0x3a812c=[];if(_0x17d8cf['user'][_0xcca2('0x2b')]===_0xcca2('0x7f'))throw new Error(_0xcca2('0x80'));if(_['some'](_0x1ff3e8,[_0xcca2('0x2b'),'user'])&&_0x17d8cf['user'][_0xcca2('0x2b')]!=='admin'){throw new Error(_0xcca2('0x81'));}if(_[_0xcca2('0x8c')](_0x1ff3e8,['role',_0xcca2('0x2c')])&&_0x17d8cf[_0xcca2('0x2e')]['role']!==_0xcca2('0x2c')){throw new Error(_0xcca2('0x8d'));}return licenseUtil[_0xcca2('0x83')](_0x1ff3e8)[_0xcca2('0x14')](function(){return validateUser(_0x1ff3e8[0x0]);})['then'](function(){for(var _0x230b84=0x1;_0x230b84<_0x1ff3e8[_0xcca2('0x4c')];_0x230b84++){var _0x59b224=_0x1ff3e8[_0x230b84-0x1][_0xcca2('0x63')];if(!_0x1ff3e8[_0x230b84]['internal'])_0x1ff3e8[_0x230b84][_0xcca2('0x63')]=_0x59b224+0x1;_0x3a812c[_0xcca2('0x49')](validateUser(_0x1ff3e8[_0x230b84]));}return Promise[_0xcca2('0x52')](_0x3a812c);})[_0xcca2('0x14')](function(){_0x3a812c=[];for(var _0x1cba3f=0x0;_0x1cba3f<_0x1ff3e8[_0xcca2('0x4c')];_0x1cba3f++){_0x3a812c[_0xcca2('0x49')](updateUser(_0x1ff3e8[_0x1cba3f]));}return Promise[_0xcca2('0x52')](_0x3a812c);})[_0xcca2('0x14')](function(){_0x3a812c=_0x1ff3e8['map'](function(_0x1d104b){return db[_0xcca2('0x3a')][_0xcca2('0x86')](_0x1d104b,{'include':[{'model':db['VoiceMail'],'as':'VoiceMail'}]})['then'](function(_0x4e9226){_0x1d104b['id']=_0x4e9226['id'];return _0x1d104b;});});return Promise[_0xcca2('0x52')](_0x3a812c);})[_0xcca2('0x14')](function(_0x124ebb){if(_0x17d8cf['body'][_0xcca2('0x2b')]==='user')return _0x124ebb;if(_0x17d8cf['user'][_0xcca2('0x2b')]!==_0xcca2('0x2e'))return _0x124ebb;var _0x55fa36=_[_0xcca2('0x8c')](_0x124ebb,function(_0x6ba2b3){return _0x6ba2b3[_0xcca2('0x2b')]===_0xcca2('0x7f')||_0x6ba2b3['role']===_0xcca2('0x2f');});if(!_0x55fa36)return _0x124ebb;return db[_0xcca2('0x87')][_0xcca2('0x4a')]({'where':{'name':{'$or':['Agents',_0xcca2('0x8e')]},'userProfileId':_0x17d8cf[_0xcca2('0x2e')][_0xcca2('0x85')]},'raw':!![]})['then'](function(_0x51c953){if(_[_0xcca2('0x8f')](_0x51c953)||!_[_0xcca2('0x8c')](_0x51c953,[_0xcca2('0x89'),0x0]))return _0x124ebb;_0x3a812c=[];var _0x37d6f7=_(_0x51c953)['map'](function(_0x3d8068){if(_0x3d8068[_0xcca2('0x89')]===0x1)return;return _0x3d8068[_0xcca2('0x35')]===_0xcca2('0x88')?_0xcca2('0x7f'):_0xcca2('0x2f');})[_0xcca2('0x90')]()[_0xcca2('0x32')]();for(var _0x155681=0x0;_0x155681<_0x124ebb[_0xcca2('0x4c')];_0x155681++){if(!_[_0xcca2('0x33')](_0x37d6f7,_0x124ebb[_0x155681][_0xcca2('0x2b')]))return;var _0x50478d=_0x124ebb[_0x155681]['role']===_0xcca2('0x7f')?_0xcca2('0x88'):'Telephones';_0x3a812c[_0xcca2('0x49')](db[_0xcca2('0x36')][_0xcca2('0x86')]({'name':_0x124ebb[_0x155681][_0xcca2('0x35')],'resourceId':_0x124ebb[_0x155681]['id'],'type':_0x50478d,'sectionId':_[_0xcca2('0x34')](_0x51c953,[_0xcca2('0x35'),_0x50478d])['id']},{}));}return Promise[_0xcca2('0x52')](_0x3a812c);});})[_0xcca2('0x14')](respondWithResult(_0x5ce9e2,0xc9))['catch'](handleError(_0x5ce9e2,null));};exports[_0xcca2('0x91')]=function(_0x80cf1e,_0x25a69b){if(_0x80cf1e[_0xcca2('0x5e')]['id']){delete _0x80cf1e[_0xcca2('0x5e')]['id'];}return db[_0xcca2('0x3a')][_0xcca2('0x34')]({'where':{'id':_0x80cf1e[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](function(_0x34bff6){if(!_0x34bff6)return null;if(_0x34bff6['id']===_0x80cf1e[_0xcca2('0x2e')]['id']){if(!_0x80cf1e[_0xcca2('0x5e')][_0xcca2('0x92')]||!_0x80cf1e[_0xcca2('0x5e')][_0xcca2('0x93')]){throw new db[(_0xcca2('0x94'))]['ValidationError'](_0xcca2('0x95'));}if(!_0x34bff6[_0xcca2('0x96')](_0x80cf1e[_0xcca2('0x5e')]['oldPassword'])){throw new db[(_0xcca2('0x94'))][(_0xcca2('0x97'))](_0xcca2('0x98'));}if(_0x80cf1e[_0xcca2('0x5e')][_0xcca2('0x92')]===_0x80cf1e[_0xcca2('0x5e')]['newPassword']){throw new db[(_0xcca2('0x94'))][(_0xcca2('0x97'))](_0xcca2('0x99'));}}else if(_0x80cf1e[_0xcca2('0x2e')]['role']===_0xcca2('0x2c')){if(!_0x80cf1e[_0xcca2('0x5e')][_0xcca2('0x93')]){throw new db[(_0xcca2('0x94'))][(_0xcca2('0x97'))](_0xcca2('0x9a'));}}else if(_0x80cf1e[_0xcca2('0x2e')][_0xcca2('0x2b')]===_0xcca2('0x2e')){if(!_0x80cf1e[_0xcca2('0x5e')][_0xcca2('0x93')]){throw new db['Sequelize'][(_0xcca2('0x97'))](_0xcca2('0x9a'));}if(_0x34bff6[_0xcca2('0x2b')]!==_0xcca2('0x7f')){throw new db['Sequelize'][(_0xcca2('0x97'))](_0xcca2('0x80'));}}else{throw new db['Sequelize']['ValidationError'](_0xcca2('0x80'));}return _0x34bff6;})['then'](handleEntityNotFound(_0x25a69b,null))[_0xcca2('0x14')](function(_0x4009e2){return db[_0xcca2('0x9b')][_0xcca2('0x9c')]({'attributes':['id',_0xcca2('0x65'),'enforcePasswordHistory',_0xcca2('0x9d')]})[_0xcca2('0x14')](function(_0x18629b){if(_0x18629b[_0xcca2('0x65')])authService['validatePasswordPattern'](_0x80cf1e[_0xcca2('0x5e')]['newPassword']);if(!_0x18629b[_0xcca2('0x9e')]||!_0x4009e2['previousPasswords'])return _0x4009e2;authService[_0xcca2('0x9f')](_0x80cf1e[_0xcca2('0x5e')][_0xcca2('0x93')],_0x4009e2[_0xcca2('0xa0')],_0x18629b['passwordHistoryLimit']);return _0x4009e2;})['then'](saveUpdates({'password':_0x80cf1e['body'][_0xcca2('0x93')],'passwordResetAt':_0x80cf1e[_0xcca2('0x2e')]['id']==_0x80cf1e['params']['id']?moment():null,'previousPasswords':authService[_0xcca2('0xa1')](_0x80cf1e[_0xcca2('0x5e')]['newPassword'],_0x4009e2[_0xcca2('0xa0')])},null));})['then'](respondWithResult(_0x25a69b,null))[_0xcca2('0x53')](handleError(_0x25a69b,null));};exports['addQueues']=function(_0x55c704,_0x4d2d3c){var _0x119274=_0x55c704[_0xcca2('0x5e')][_0xcca2('0xa2')];return db['User'][_0xcca2('0x34')]({'where':{'id':_0x55c704[_0xcca2('0x54')]['id']},'attributes':['id','name',_0xcca2('0x2b'),'online',_0xcca2('0xa3'),_0xcca2('0xa4'),_0xcca2('0xa5')]})[_0xcca2('0x14')](handleEntityNotFound(_0x4d2d3c,null))['then'](function(_0x19d2aa){if(_0x19d2aa){if(!utils[_0xcca2('0xa6')](_0x119274)){throw new db[(_0xcca2('0x94'))]['ValidationError']('Unknown\x20channel');}return _0x19d2aa['add'+_[_0xcca2('0xa7')](_0x119274['toLowerCase']())+_0xcca2('0xa8')](_0x55c704[_0xcca2('0x5e')][_0xcca2('0x61')],{'penalty':_0x55c704[_0xcca2('0x5e')][_0xcca2('0xa9')]||0x0})[_0xcca2('0xaa')](function(_0x532ff8){for(var _0x7a2a22=0x0;_0x7a2a22<_0x55c704[_0xcca2('0x5e')][_0xcca2('0x61')][_0xcca2('0x4c')];_0x7a2a22+=0x1){var _0x5a7fd1={'UserId':Number(_0x55c704[_0xcca2('0x54')]['id'])};_0x5a7fd1[_[_0xcca2('0xa7')](_0x119274[_0xcca2('0xab')]())+_0xcca2('0xac')]=Number(_0x55c704[_0xcca2('0x5e')][_0xcca2('0x61')][_0x7a2a22]);socket[_0xcca2('0xad')](_0xcca2('0x2e')+_['capitalize'](_0x119274[_0xcca2('0xab')]())+_0xcca2('0xae'),_0x5a7fd1);}return _0x532ff8;})['then'](function(){if(_0x119274===_0xcca2('0xaf')){return db[_0xcca2('0xb0')]['findAll']({'where':{'id':_0x55c704[_0xcca2('0x5e')][_0xcca2('0x61')]||[]},'raw':!![],'attributes':['id',_0xcca2('0x35')]});}})[_0xcca2('0x14')](function(_0x5c21b9){var _0x55a637=_0x19d2aa[_0xcca2('0x2a')]({'plain':!![]});var _0x1fbafe=[];if(_0x119274==='voice'&&_0x55a637[_0xcca2('0x2b')]===_0xcca2('0x7f')&&_0x55a637[_0xcca2('0xb1')]){for(let _0x19caa7=0x0;_0x19caa7<_0x5c21b9[_0xcca2('0x4c')];_0x19caa7+=0x1){_0x1fbafe['push']({'membername':_0x55a637['name'],'UserId':_0x55a637['id'],'queue_name':_0x5c21b9[_0x19caa7][_0xcca2('0x35')],'VoiceQueueId':_0x5c21b9[_0x19caa7]['id'],'interface':_['isNil'](_0x55a637[_0xcca2('0xa5')])?util[_0xcca2('0xb2')](_0xcca2('0xb3'),_0x55a637[_0xcca2('0x35')]):_0x55a637['interface'],'paused':_0x55a637[_0xcca2('0xa4')]||![],'penalty':_0x55c704[_0xcca2('0x5e')][_0xcca2('0xa9')]||0x0});}return Promise[_0xcca2('0x52')](_0x1fbafe[_0xcca2('0x3c')](function(_0x1954af){return db[_0xcca2('0xb4')]['upsert'](_0x1954af);}));}return _0x19d2aa;});}})[_0xcca2('0x14')](respondWithStatusCode(_0x4d2d3c,null))[_0xcca2('0x53')](handleError(_0x4d2d3c,null));};exports[_0xcca2('0xb5')]=function(_0x2d9226,_0x1f4c6c){var _0x3696b1,_0x4873f7;return db['User'][_0xcca2('0x34')]({'where':{'id':_0x2d9226[_0xcca2('0x54')]['id']},'attributes':['id','name','role']})[_0xcca2('0x14')](handleEntityNotFound(_0x1f4c6c,null))[_0xcca2('0x14')](function(_0xc69778){if(_0xc69778){_0x3696b1=_0xc69778;if(!_0x2d9226['query']['channel']||!utils[_0xcca2('0xa6')](_0x2d9226['query'][_0xcca2('0xa2')])){throw new db['Sequelize']['ValidationError'](_0xcca2('0xb6'));}return _0xc69778[_0xcca2('0xb7')+_[_0xcca2('0xa7')](_0x2d9226[_0xcca2('0x45')][_0xcca2('0xa2')]['toLowerCase']())+'Queues'](_0x2d9226[_0xcca2('0x45')][_0xcca2('0x61')]);}})[_0xcca2('0x14')](function(_0x75e3bf){if(_['isArray'](_0x2d9226[_0xcca2('0x45')]['ids'])){for(var _0x40c171=0x0;_0x40c171<_0x2d9226[_0xcca2('0x45')][_0xcca2('0x61')][_0xcca2('0x4c')];_0x40c171+=0x1){_0x4873f7={'UserId':Number(_0x2d9226[_0xcca2('0x54')]['id'])};_0x4873f7[_['capitalize'](_0x2d9226[_0xcca2('0x45')][_0xcca2('0xa2')][_0xcca2('0xab')]())+_0xcca2('0xac')]=Number(_0x2d9226[_0xcca2('0x45')]['ids'][_0x40c171]);socket['emit']('user'+_[_0xcca2('0xa7')](_0x2d9226[_0xcca2('0x45')][_0xcca2('0xa2')][_0xcca2('0xab')]())+_0xcca2('0xb8'),_0x4873f7);}}else{_0x4873f7={'UserId':Number(_0x2d9226[_0xcca2('0x54')]['id'])};_0x4873f7[_[_0xcca2('0xa7')](_0x2d9226[_0xcca2('0x45')]['channel'][_0xcca2('0xab')]())+_0xcca2('0xac')]=Number(_0x2d9226[_0xcca2('0x45')]['ids']);socket[_0xcca2('0xad')](_0xcca2('0x2e')+_[_0xcca2('0xa7')](_0x2d9226[_0xcca2('0x45')][_0xcca2('0xa2')]['toLowerCase']())+_0xcca2('0xb8'),_0x4873f7);}return _0x75e3bf;})[_0xcca2('0x14')](function(){if(_0x2d9226[_0xcca2('0x45')][_0xcca2('0xa2')]===_0xcca2('0xaf')){return db[_0xcca2('0xb4')][_0xcca2('0x29')]({'where':{'UserId':_0x2d9226['params']['id'],'VoiceQueueId':_0x2d9226[_0xcca2('0x45')][_0xcca2('0x61')]},'individualHooks':!![]})[_0xcca2('0x14')](function(){return _0x3696b1;});}return _0x3696b1;})[_0xcca2('0x14')](respondWithStatusCode(_0x1f4c6c,null))[_0xcca2('0x53')](handleError(_0x1f4c6c,null));};exports['addAvatar']=function(_0x4e7361,_0x4a7aff){_0x4e7361[_0xcca2('0x5e')]['userpic']=_0x4e7361[_0xcca2('0xb9')][_0xcca2('0xba')];return db[_0xcca2('0x3a')]['find']({'where':{'id':_0x4e7361[_0xcca2('0x54')]['id']}})['then'](handleEntityNotFound(_0x4a7aff,null))[_0xcca2('0x14')](saveUpdates(_0x4e7361[_0xcca2('0x5e')],null))[_0xcca2('0x14')](respondWithResult(_0x4a7aff,null))[_0xcca2('0x53')](handleError(_0x4a7aff,null));};exports[_0xcca2('0xbb')]=function(_0x4781d4,_0x46db3f){var _0xb568ea=path[_0xcca2('0xbc')](config[_0xcca2('0xbd')],_0xcca2('0xbe'));return db[_0xcca2('0x3a')][_0xcca2('0x34')]({'where':{'id':_0x4781d4[_0xcca2('0x54')]['id']},'attributes':['id','userpic'],'raw':!![]})['then'](handleEntityNotFound(_0x46db3f,null))[_0xcca2('0x14')](function(_0x24618b){if(_0x24618b){if(_[_0xcca2('0x68')](_0x24618b[_0xcca2('0xbf')])){return _0x46db3f[_0xcca2('0xc0')](_0xb568ea);}else{if(!fs[_0xcca2('0xc1')](path[_0xcca2('0xbc')](config[_0xcca2('0xbd')],_0xcca2('0xc2'),_0x24618b[_0xcca2('0xbf')]))){return _0x46db3f[_0xcca2('0xc0')](_0xb568ea);}return _0x46db3f[_0xcca2('0xc0')](path['join'](config['root'],_0xcca2('0xc2'),_0x24618b[_0xcca2('0xbf')]));}}})['catch'](handleError(_0x46db3f,null));};exports['getOpenTabs']=function(_0xa381c9,_0x5b2c37){return db[_0xcca2('0x3a')][_0xcca2('0x34')]({'where':{'id':_0xa381c9[_0xcca2('0x54')]['id']},'attributes':['id']})[_0xcca2('0x14')](handleEntityNotFound(_0x5b2c37,null))[_0xcca2('0x14')](function(_0x359d33){var _0x457ffa=[];values=_0x359d33[_0xcca2('0x4d')];_0x457ffa['push'](get_open_tabs(_0xcca2('0x5d'),_0x359d33[_0xcca2('0x4d')]));_0x457ffa['push'](get_open_tabs(_0xcca2('0x4e'),_0x359d33['dataValues']));_0x457ffa[_0xcca2('0x49')](get_open_tabs(_0xcca2('0x50'),_0x359d33[_0xcca2('0x4d')]));_0x457ffa[_0xcca2('0x49')](get_open_tabs(_0xcca2('0x51'),_0x359d33[_0xcca2('0x4d')]));_0x457ffa[_0xcca2('0x49')](get_open_tabs(_0xcca2('0x4f'),_0x359d33['dataValues']));_0x457ffa['push'](get_open_tabs(_0xcca2('0xc3'),_0x359d33['dataValues']));return Promise[_0xcca2('0x52')](_0x457ffa);})['then'](function(_0x2b6cb4){if(_0x2b6cb4){var _0x53aa8f=_[_0xcca2('0x3c')](values['ChatOpenTabs'],function(_0x320391){return{'channel':_0xcca2('0xc4'),'id':_0x320391['id'],'createdAt':_0x320391['createdAt']};});var _0x36ba18=_[_0xcca2('0x3c')](values[_0xcca2('0xc5')],function(_0x95262){return{'channel':_0xcca2('0xc6'),'id':_0x95262['id'],'createdAt':_0x95262['createdAt']};});var _0x11374f=_[_0xcca2('0x3c')](values[_0xcca2('0xc7')],function(_0xc139da){return{'channel':_0xcca2('0xc8'),'id':_0xc139da['id'],'createdAt':_0xc139da[_0xcca2('0xc9')]};});var _0xd29a7c=_[_0xcca2('0x3c')](values[_0xcca2('0xca')],function(_0x833a40){return{'channel':_0xcca2('0xcb'),'id':_0x833a40['id'],'createdAt':_0x833a40[_0xcca2('0xc9')]};});var _0x2b105b=_[_0xcca2('0x3c')](values['SmsOpenTabs'],function(_0x17d87c){return{'channel':'SMS','id':_0x17d87c['id'],'createdAt':_0x17d87c[_0xcca2('0xc9')]};});var _0x3103a2=_[_0xcca2('0x3c')](values[_0xcca2('0xcc')],function(_0x293c0e){return{'channel':_0xcca2('0xcd'),'id':_0x293c0e['id'],'createdAt':_0x293c0e[_0xcca2('0xc9')]};});var _0x4d60fb=_[_0xcca2('0xce')](_0x53aa8f,_0x36ba18,_0x11374f,_0xd29a7c,_0x2b105b,_0x3103a2);var _0x220e07={'count':_0x4d60fb[_0xcca2('0x4c')],'rows':_0x4d60fb};return _0x220e07;}else return null;})[_0xcca2('0x14')](respondWithResult(_0x5b2c37,null))[_0xcca2('0x53')](handleError(_0x5b2c37,null));};exports['getContacts']=function(_0x116cfc,_0x54b443){var _0x14fa1e={};var _0x4159b1={};var _0x3a3e03;var _0x364d8b;return db['User']['findOne']({'where':{'id':_0x116cfc['params']['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x54b443,null))[_0xcca2('0x14')](function(_0x5ce28b){if(_0x5ce28b){_0x3a3e03=_0x5ce28b;_0x4159b1[_0xcca2('0x55')]=_[_0xcca2('0x57')](db['CmContact']['rawAttributes']);_0x4159b1[_0xcca2('0x45')]=_[_0xcca2('0x57')](_0x116cfc[_0xcca2('0x45')]);_0x4159b1[_0xcca2('0xcf')]=_[_0xcca2('0x58')](_0x4159b1[_0xcca2('0x55')],_0x4159b1[_0xcca2('0x45')]);_0x14fa1e[_0xcca2('0x48')]=_[_0xcca2('0x58')](_0x4159b1['model'],qs['fields'](_0x116cfc[_0xcca2('0x45')]['fields']));_0x14fa1e[_0xcca2('0x48')]=_0x14fa1e[_0xcca2('0x48')][_0xcca2('0x4c')]?_0x14fa1e[_0xcca2('0x48')]:_0x4159b1[_0xcca2('0x55')];_0x14fa1e[_0xcca2('0xd0')]=qs[_0xcca2('0xd1')](_0x116cfc[_0xcca2('0x45')]['sort']);_0x14fa1e[_0xcca2('0x42')]=qs[_0xcca2('0xcf')](_[_0xcca2('0xd2')](_0x116cfc[_0xcca2('0x45')],_0x4159b1[_0xcca2('0xcf')]));if(_0x116cfc['query'][_0xcca2('0x30')]){_0x14fa1e[_0xcca2('0x42')]=_[_0xcca2('0x5b')](_0x14fa1e['where'],{'$or':_[_0xcca2('0x3c')](_0x14fa1e[_0xcca2('0x48')],function(_0x516e03){var _0x139b46={};_0x139b46[_0x516e03]={'$like':'%'+_0x116cfc[_0xcca2('0x45')]['filter']+'%'};return _0x139b46;})});}_0x14fa1e=_[_0xcca2('0x5b')]({},_0x14fa1e,_0x116cfc[_0xcca2('0xd3')]);return _0x3a3e03[_0xcca2('0xd4')](_0x14fa1e);}})[_0xcca2('0x14')](function(_0x3b7887){if(_0x3b7887){_0x364d8b=_0x3b7887[_0xcca2('0x4c')];if(_0x116cfc['query'][_0xcca2('0xd5')](_0xcca2('0x43'))){_0x14fa1e[_0xcca2('0x44')]=[{'model':db['CmList'],'as':_0xcca2('0xd6'),'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id','name',_0xcca2('0xd7')],'where':_0x116cfc[_0xcca2('0x45')][_0xcca2('0xd8')]?{'id':_0x116cfc['query'][_0xcca2('0xd8')]}:undefined,'required':_0x116cfc[_0xcca2('0x45')][_0xcca2('0xd8')]?!![]:![]}];}if(!_0x116cfc['query'][_0xcca2('0xd5')]('nolimit')){_0x14fa1e[_0xcca2('0x23')]=qs[_0xcca2('0x23')](_0x116cfc[_0xcca2('0x45')][_0xcca2('0x23')]);_0x14fa1e[_0xcca2('0x24')]=qs[_0xcca2('0x24')](_0x116cfc[_0xcca2('0x45')]['offset']);}return _0x3a3e03[_0xcca2('0xd4')](_0x14fa1e);}})[_0xcca2('0x14')](function(_0x459be4){if(_0x459be4){return _0x459be4?{'count':_0x364d8b,'rows':_0x459be4}:null;}})[_0xcca2('0x14')](respondWithResult(_0x54b443,null))['catch'](handleError(_0x54b443,null));};exports['getQueues']=function(_0x40b335,_0x5b0846){var _0x437031;var _0x202041={};var _0x33e6f1;return db[_0xcca2('0x3a')][_0xcca2('0x9c')]({'where':{'id':_0x40b335[_0xcca2('0x54')]['id']},'attributes':['id',_0xcca2('0x35'),_0xcca2('0x2b')]})['then'](handleEntityNotFound(_0x5b0846,null))[_0xcca2('0x14')](function(_0x504248){if(!utils[_0xcca2('0xa6')](_0x40b335['query'][_0xcca2('0xa2')])){throw new db[(_0xcca2('0x94'))][(_0xcca2('0x97'))](_0xcca2('0xb6'));}_0x437031=_0x504248;var _0x71d53c={};_0x71d53c[_0xcca2('0x55')]=_['keys'](db[_[_0xcca2('0xa7')](_0x40b335[_0xcca2('0x45')]['channel'])+'Queue']['rawAttributes']);_0x71d53c[_0xcca2('0x45')]=_[_0xcca2('0x57')](_0x40b335[_0xcca2('0x45')]);_0x71d53c['filters']=_[_0xcca2('0x58')](_0x71d53c[_0xcca2('0x55')],_0x71d53c[_0xcca2('0x45')]);_0x202041[_0xcca2('0x48')]=_[_0xcca2('0x58')](_0x71d53c[_0xcca2('0x55')],qs[_0xcca2('0x59')](_0x40b335[_0xcca2('0x45')][_0xcca2('0x59')]));_0x202041['attributes']=_0x202041[_0xcca2('0x48')][_0xcca2('0x4c')]?_0x202041['attributes']:_0x71d53c[_0xcca2('0x55')];_0x202041[_0xcca2('0xd0')]=qs['sort'](_0x40b335['query'][_0xcca2('0xd1')]);_0x202041[_0xcca2('0x42')]=qs[_0xcca2('0xcf')](_[_0xcca2('0xd2')](_0x40b335[_0xcca2('0x45')],_0x71d53c[_0xcca2('0xcf')]));if(_0x40b335[_0xcca2('0x45')][_0xcca2('0x30')]){_0x202041['where']=_[_0xcca2('0x5b')](_0x202041[_0xcca2('0x42')],{'$or':_[_0xcca2('0x3c')](_0x202041[_0xcca2('0x48')],function(_0x5e61bc){var _0x131702={};_0x131702[_0x5e61bc]={'$like':'%'+_0x40b335['query'][_0xcca2('0x30')]+'%'};return _0x131702;})});}_0x202041=_[_0xcca2('0x5b')]({},_0x202041,_0x40b335[_0xcca2('0xd3')]);switch(_0x437031[_0xcca2('0x2b')]){case _0xcca2('0x2c'):return db[_[_0xcca2('0xa7')](_0x40b335[_0xcca2('0x45')][_0xcca2('0xa2')])+_0xcca2('0xd9')][_0xcca2('0x4a')](_0x202041);case'user':case _0xcca2('0x7f'):return _0x437031[_0xcca2('0x2a')+_[_0xcca2('0xa7')](_0x40b335[_0xcca2('0x45')][_0xcca2('0xa2')])+'Queues'](_0x202041);default:throw new db['Sequelize'][(_0xcca2('0x97'))](_0xcca2('0xda'));}})[_0xcca2('0x14')](function(_0x18d765){_0x33e6f1=_0x18d765[_0xcca2('0x4c')];if(!_0x40b335[_0xcca2('0x45')]['hasOwnProperty'](_0xcca2('0xdb'))){_0x202041[_0xcca2('0x23')]=qs[_0xcca2('0x23')](_0x40b335[_0xcca2('0x45')]['limit']);_0x202041[_0xcca2('0x24')]=qs[_0xcca2('0x24')](_0x40b335[_0xcca2('0x45')]['offset']);}switch(_0x437031['role']){case'admin':return db[_[_0xcca2('0xa7')](_0x40b335[_0xcca2('0x45')]['channel'])+_0xcca2('0xd9')][_0xcca2('0x4a')](_0x202041);case'user':case _0xcca2('0x7f'):return _0x437031['get'+_['capitalize'](_0x40b335[_0xcca2('0x45')]['channel'])+_0xcca2('0xa8')](_0x202041);}})[_0xcca2('0x14')](function(_0x585920){return{'count':_0x33e6f1,'rows':_0x585920};})[_0xcca2('0x14')](respondWithResult(_0x5b0846,null))[_0xcca2('0x53')](handleError(_0x5b0846,null));};exports[_0xcca2('0xdc')]=function(_0x3c8652,_0x52861d){var _0x2dd242={};var _0x429f2c={};var _0x4af457;var _0x162398;return db[_0xcca2('0x3a')][_0xcca2('0x9c')]({'where':{'id':_0x3c8652[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x52861d,null))[_0xcca2('0x14')](function(_0x5f0912){if(_0x5f0912){_0x4af457=_0x5f0912;_0x429f2c['model']=_['keys'](db[_0xcca2('0xb4')][_0xcca2('0x3b')]);_0x429f2c[_0xcca2('0x45')]=_['keys'](_0x3c8652['query']);_0x429f2c['filters']=_[_0xcca2('0x58')](_0x429f2c[_0xcca2('0x55')],_0x429f2c['query']);_0x2dd242[_0xcca2('0x48')]=_['intersection'](_0x429f2c[_0xcca2('0x55')],qs[_0xcca2('0x59')](_0x3c8652[_0xcca2('0x45')]['fields']));_0x2dd242[_0xcca2('0x48')]=_0x2dd242[_0xcca2('0x48')][_0xcca2('0x4c')]?_0x2dd242[_0xcca2('0x48')]:_0x429f2c[_0xcca2('0x55')];_0x2dd242[_0xcca2('0xd0')]=qs[_0xcca2('0xd1')](_0x3c8652[_0xcca2('0x45')]['sort']);_0x2dd242[_0xcca2('0x42')]=qs[_0xcca2('0xcf')](_['pick'](_0x3c8652['query'],_0x429f2c[_0xcca2('0xcf')]));if(_0x3c8652[_0xcca2('0x45')][_0xcca2('0x30')]){_0x2dd242[_0xcca2('0x42')]=_['merge'](_0x2dd242['where'],{'$or':_[_0xcca2('0x3c')](_0x2dd242[_0xcca2('0x48')],function(_0x29213a){var _0x3f59ad={};_0x3f59ad[_0x29213a]={'$like':'%'+_0x3c8652[_0xcca2('0x45')]['filter']+'%'};return _0x3f59ad;})});}_0x2dd242=_[_0xcca2('0x5b')]({},_0x2dd242,_0x3c8652['options']);return _0x4af457[_0xcca2('0xdc')](_0x2dd242);}})[_0xcca2('0x14')](function(_0x4d1137){if(_0x4d1137){_0x162398=_0x4d1137[_0xcca2('0x4c')];if(!_0x3c8652['query']['hasOwnProperty'](_0xcca2('0xdb'))){_0x2dd242['limit']=qs['limit'](_0x3c8652[_0xcca2('0x45')]['limit']);_0x2dd242[_0xcca2('0x24')]=qs[_0xcca2('0x24')](_0x3c8652['query'][_0xcca2('0x24')]);}return _0x4af457[_0xcca2('0xdc')](_0x2dd242);}})[_0xcca2('0x14')](function(_0x196a76){if(_0x196a76){return _0x196a76?{'count':_0x162398,'rows':_0x196a76}:null;}})[_0xcca2('0x14')](respondWithResult(_0x52861d,null))[_0xcca2('0x53')](handleError(_0x52861d,null));};exports[_0xcca2('0xdd')]=function(_0x5e3dd4,_0x553954){var _0x10481e={};var _0x5bdc5e={};var _0x4e5243;var _0x512215;return db['User'][_0xcca2('0x9c')]({'where':{'id':_0x5e3dd4[_0xcca2('0x54')]['id']}})['then'](handleEntityNotFound(_0x553954,null))['then'](function(_0x58ee25){if(_0x58ee25){_0x4e5243=_0x58ee25;_0x5bdc5e[_0xcca2('0x55')]=_[_0xcca2('0x57')](db[_0xcca2('0xde')][_0xcca2('0x3b')]);_0x5bdc5e[_0xcca2('0x45')]=_[_0xcca2('0x57')](_0x5e3dd4[_0xcca2('0x45')]);_0x5bdc5e['filters']=_[_0xcca2('0x58')](_0x5bdc5e[_0xcca2('0x55')],_0x5bdc5e[_0xcca2('0x45')]);_0x10481e[_0xcca2('0x48')]=_['intersection'](_0x5bdc5e[_0xcca2('0x55')],qs[_0xcca2('0x59')](_0x5e3dd4['query']['fields']));_0x10481e[_0xcca2('0x48')]=_0x10481e[_0xcca2('0x48')][_0xcca2('0x4c')]?_0x10481e[_0xcca2('0x48')]:_0x5bdc5e[_0xcca2('0x55')];_0x10481e['order']=qs[_0xcca2('0xd1')](_0x5e3dd4[_0xcca2('0x45')]['sort']);_0x10481e[_0xcca2('0x42')]=qs['filters'](_[_0xcca2('0xd2')](_0x5e3dd4[_0xcca2('0x45')],_0x5bdc5e[_0xcca2('0xcf')]));if(_0x5e3dd4['query'][_0xcca2('0x30')]){_0x10481e['where']=_[_0xcca2('0x5b')](_0x10481e[_0xcca2('0x42')],{'$or':_[_0xcca2('0x3c')](_0x10481e['attributes'],function(_0x4cb21b){var _0x40d8d3={};_0x40d8d3[_0x4cb21b]={'$like':'%'+_0x5e3dd4['query'][_0xcca2('0x30')]+'%'};return _0x40d8d3;})});}_0x10481e=_['merge']({},_0x10481e,_0x5e3dd4[_0xcca2('0xd3')]);return _0x4e5243[_0xcca2('0xdd')](_0x10481e);}})[_0xcca2('0x14')](function(_0x4d2d48){if(_0x4d2d48){_0x512215=_0x4d2d48[_0xcca2('0x4c')];if(!_0x5e3dd4[_0xcca2('0x45')]['hasOwnProperty'](_0xcca2('0xdb'))){_0x10481e['limit']=qs[_0xcca2('0x23')](_0x5e3dd4[_0xcca2('0x45')][_0xcca2('0x23')]);_0x10481e[_0xcca2('0x24')]=qs['offset'](_0x5e3dd4[_0xcca2('0x45')][_0xcca2('0x24')]);}return _0x4e5243[_0xcca2('0xdd')](_0x10481e);}})[_0xcca2('0x14')](function(_0x2892dd){if(_0x2892dd){return _0x2892dd?{'count':_0x512215,'rows':_0x2892dd}:null;}})[_0xcca2('0x14')](respondWithResult(_0x553954,null))['catch'](handleError(_0x553954,null));};exports['getRecordings']=function(_0x2e1dfd,_0x50b934){var _0x41f2ac={'raw':!![],'where':{}};var _0x48f6d0={};var _0x3c2013={'count':0x0,'rows':[]};return db[_0xcca2('0x3a')][_0xcca2('0x9c')]({'where':{'id':_0x2e1dfd[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x50b934,null))[_0xcca2('0x14')](function(_0x114539){if(_0x114539){_0x48f6d0[_0xcca2('0x55')]=_[_0xcca2('0x57')](db[_0xcca2('0xdf')]['rawAttributes']);_0x48f6d0[_0xcca2('0x45')]=_[_0xcca2('0x57')](_0x2e1dfd[_0xcca2('0x45')]);_0x48f6d0[_0xcca2('0xcf')]=_[_0xcca2('0x58')](_0x48f6d0[_0xcca2('0x55')],_0x48f6d0[_0xcca2('0x45')]);_0x41f2ac[_0xcca2('0x48')]=_[_0xcca2('0x58')](_0x48f6d0[_0xcca2('0x55')],qs[_0xcca2('0x59')](_0x2e1dfd['query']['fields']));_0x41f2ac['attributes']=_0x41f2ac[_0xcca2('0x48')][_0xcca2('0x4c')]?_0x41f2ac[_0xcca2('0x48')]:_0x48f6d0[_0xcca2('0x55')];if(!_0x2e1dfd[_0xcca2('0x45')][_0xcca2('0xd5')](_0xcca2('0xdb'))){_0x41f2ac[_0xcca2('0x23')]=qs['limit'](_0x2e1dfd[_0xcca2('0x45')]['limit']);_0x41f2ac['offset']=qs[_0xcca2('0x24')](_0x2e1dfd[_0xcca2('0x45')][_0xcca2('0x24')]);}_0x41f2ac[_0xcca2('0xd0')]=qs['sort'](_0x2e1dfd[_0xcca2('0x45')][_0xcca2('0xd1')]);_0x41f2ac[_0xcca2('0x42')]=qs[_0xcca2('0xcf')](_[_0xcca2('0xd2')](_0x2e1dfd[_0xcca2('0x45')],_0x48f6d0[_0xcca2('0xcf')]));_0x41f2ac[_0xcca2('0x42')][_0xcca2('0xe0')]=_0x114539['id'];if(_0x2e1dfd[_0xcca2('0x45')][_0xcca2('0x30')]){_0x41f2ac['where']=_[_0xcca2('0x5b')](_0x41f2ac['where'],{'$or':_[_0xcca2('0x3c')](_0x41f2ac[_0xcca2('0x48')],function(_0x14be44){var _0xbb5423={};_0xbb5423[_0x14be44]={'$like':'%'+_0x2e1dfd[_0xcca2('0x45')][_0xcca2('0x30')]+'%'};return _0xbb5423;})});}_0x41f2ac=_[_0xcca2('0x5b')]({},_0x41f2ac,_0x2e1dfd[_0xcca2('0xd3')]);return db[_0xcca2('0xdf')][_0xcca2('0x25')]({'where':_0x41f2ac['where']})['then'](function(_0x494ca4){_0x3c2013[_0xcca2('0x25')]=_0x494ca4;if(_0x2e1dfd[_0xcca2('0x45')][_0xcca2('0x43')]){_0x41f2ac['include']=[{'all':!![]}];}return db[_0xcca2('0xdf')][_0xcca2('0x4a')](_0x41f2ac);})['then'](function(_0x27fe28){_0x3c2013[_0xcca2('0x4b')]=_0x27fe28;return _0x3c2013;});}})['then'](respondWithFilteredResult(_0x50b934,_0x41f2ac))[_0xcca2('0x53')](handleError(_0x50b934,null));};exports[_0xcca2('0xe1')]=function(_0x4fc111,_0x1e7d68){var _0x22e6df={'raw':!![],'where':{}};var _0x26dd42={};var _0x1b6477={'count':0x0,'rows':[]};return db[_0xcca2('0x3a')][_0xcca2('0x9c')]({'where':{'id':_0x4fc111[_0xcca2('0x54')]['id']}})['then'](handleEntityNotFound(_0x1e7d68,null))[_0xcca2('0x14')](function(_0x2017d9){if(_0x2017d9){_0x26dd42['model']=_['keys'](db[_0xcca2('0xe2')][_0xcca2('0x3b')]);_0x26dd42[_0xcca2('0x45')]=_[_0xcca2('0x57')](_0x4fc111[_0xcca2('0x45')]);_0x26dd42[_0xcca2('0xcf')]=_['intersection'](_0x26dd42['model'],_0x26dd42[_0xcca2('0x45')]);_0x22e6df[_0xcca2('0x48')]=_[_0xcca2('0x58')](_0x26dd42[_0xcca2('0x55')],qs[_0xcca2('0x59')](_0x4fc111['query'][_0xcca2('0x59')]));_0x22e6df[_0xcca2('0x48')]=_0x22e6df[_0xcca2('0x48')][_0xcca2('0x4c')]?_0x22e6df[_0xcca2('0x48')]:_0x26dd42[_0xcca2('0x55')];if(!_0x4fc111[_0xcca2('0x45')]['hasOwnProperty']('nolimit')){_0x22e6df[_0xcca2('0x23')]=qs[_0xcca2('0x23')](_0x4fc111[_0xcca2('0x45')]['limit']);_0x22e6df[_0xcca2('0x24')]=qs[_0xcca2('0x24')](_0x4fc111[_0xcca2('0x45')]['offset']);}_0x22e6df[_0xcca2('0xd0')]=qs[_0xcca2('0xd1')](_0x4fc111[_0xcca2('0x45')][_0xcca2('0xd1')]);_0x22e6df[_0xcca2('0x42')]=qs['filters'](_[_0xcca2('0xd2')](_0x4fc111[_0xcca2('0x45')],_0x26dd42[_0xcca2('0xcf')]));_0x22e6df[_0xcca2('0x42')][_0xcca2('0xe0')]=_0x2017d9['id'];if(_0x4fc111[_0xcca2('0x45')][_0xcca2('0x30')]){_0x22e6df[_0xcca2('0x42')]=_[_0xcca2('0x5b')](_0x22e6df[_0xcca2('0x42')],{'$or':_[_0xcca2('0x3c')](_0x22e6df[_0xcca2('0x48')],function(_0x37fdf9){var _0x4fc5dd={};_0x4fc5dd[_0x37fdf9]={'$like':'%'+_0x4fc111[_0xcca2('0x45')][_0xcca2('0x30')]+'%'};return _0x4fc5dd;})});}_0x22e6df=_[_0xcca2('0x5b')]({},_0x22e6df,_0x4fc111['options']);return db[_0xcca2('0xe2')]['count']({'where':_0x22e6df['where']})[_0xcca2('0x14')](function(_0x23f4ff){_0x1b6477['count']=_0x23f4ff;if(_0x4fc111[_0xcca2('0x45')]['includeAll']){_0x22e6df[_0xcca2('0x44')]=[{'all':!![]}];}return db[_0xcca2('0xe2')][_0xcca2('0x4a')](_0x22e6df);})[_0xcca2('0x14')](function(_0x58f649){_0x1b6477['rows']=_0x58f649;return _0x1b6477;});}})[_0xcca2('0x14')](respondWithFilteredResult(_0x1e7d68,_0x22e6df))[_0xcca2('0x53')](handleError(_0x1e7d68,null));};exports['getChatInteractions']=function(_0x511b80,_0x382a0d){var _0x3882ac={};var _0xc8aaa2={};var _0x32b334;var _0x598821;return db[_0xcca2('0x3a')][_0xcca2('0x9c')]({'where':{'id':_0x511b80['params']['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x382a0d,null))[_0xcca2('0x14')](function(_0x179d83){if(_0x179d83){_0x32b334=_0x179d83;_0xc8aaa2[_0xcca2('0x55')]=_[_0xcca2('0x57')](db[_0xcca2('0xe3')][_0xcca2('0x3b')]);_0xc8aaa2[_0xcca2('0x45')]=_['keys'](_0x511b80[_0xcca2('0x45')]);_0xc8aaa2['filters']=_[_0xcca2('0x58')](_0xc8aaa2[_0xcca2('0x55')],_0xc8aaa2['query']);_0x3882ac[_0xcca2('0x48')]=_[_0xcca2('0x58')](_0xc8aaa2['model'],qs['fields'](_0x511b80[_0xcca2('0x45')]['fields']));_0x3882ac['attributes']=_0x3882ac['attributes'][_0xcca2('0x4c')]?_0x3882ac[_0xcca2('0x48')]:_0xc8aaa2['model'];_0x3882ac['order']=qs[_0xcca2('0xd1')](_0x511b80[_0xcca2('0x45')]['sort']);_0x3882ac[_0xcca2('0x42')]=qs[_0xcca2('0xcf')](_['pick'](_0x511b80[_0xcca2('0x45')],_0xc8aaa2[_0xcca2('0xcf')]));if(_0x511b80[_0xcca2('0x45')][_0xcca2('0x30')]){_0x3882ac[_0xcca2('0x42')]=_[_0xcca2('0x5b')](_0x3882ac[_0xcca2('0x42')],{'$or':_['map'](_0x3882ac[_0xcca2('0x48')],function(_0x4cd238){var _0x329b7a={};_0x329b7a[_0x4cd238]={'$like':'%'+_0x511b80[_0xcca2('0x45')][_0xcca2('0x30')]+'%'};return _0x329b7a;})});}_0x3882ac=_[_0xcca2('0x5b')]({},_0x3882ac,_0x511b80[_0xcca2('0xd3')]);return _0x32b334['getChatInteractions'](_0x3882ac);}})['then'](function(_0xe5177a){if(_0xe5177a){_0x598821=_0xe5177a[_0xcca2('0x4c')];if(!_0x511b80['query'][_0xcca2('0xd5')](_0xcca2('0xdb'))){_0x3882ac['limit']=qs['limit'](_0x511b80[_0xcca2('0x45')][_0xcca2('0x23')]);_0x3882ac[_0xcca2('0x24')]=qs[_0xcca2('0x24')](_0x511b80[_0xcca2('0x45')][_0xcca2('0x24')]);}return _0x32b334['getChatInteractions'](_0x3882ac);}})[_0xcca2('0x14')](function(_0x267a0b){if(_0x267a0b){return _0x267a0b?{'count':_0x598821,'rows':_0x267a0b}:null;}})[_0xcca2('0x14')](respondWithResult(_0x382a0d,null))['catch'](handleError(_0x382a0d,null));};exports[_0xcca2('0xe4')]=function(_0x195de2,_0x365c83){var _0x184909={};var _0x238ec7={};var _0x356b98;var _0x54f868;return db[_0xcca2('0x3a')][_0xcca2('0x9c')]({'where':{'id':_0x195de2['params']['id']}})['then'](handleEntityNotFound(_0x365c83,null))['then'](function(_0x5a3dc9){if(_0x5a3dc9){_0x356b98=_0x5a3dc9;_0x238ec7['model']=_[_0xcca2('0x57')](db[_0xcca2('0xe5')][_0xcca2('0x3b')]);_0x238ec7['query']=_['keys'](_0x195de2['query']);_0x238ec7[_0xcca2('0xcf')]=_[_0xcca2('0x58')](_0x238ec7['model'],_0x238ec7[_0xcca2('0x45')]);_0x184909[_0xcca2('0x48')]=_[_0xcca2('0x58')](_0x238ec7[_0xcca2('0x55')],qs[_0xcca2('0x59')](_0x195de2[_0xcca2('0x45')][_0xcca2('0x59')]));_0x184909[_0xcca2('0x48')]=_0x184909[_0xcca2('0x48')]['length']?_0x184909[_0xcca2('0x48')]:_0x238ec7[_0xcca2('0x55')];_0x184909[_0xcca2('0xd0')]=qs[_0xcca2('0xd1')](_0x195de2['query'][_0xcca2('0xd1')]);_0x184909[_0xcca2('0x42')]=qs[_0xcca2('0xcf')](_[_0xcca2('0xd2')](_0x195de2[_0xcca2('0x45')],_0x238ec7[_0xcca2('0xcf')]));if(_0x195de2['query'][_0xcca2('0x30')]){_0x184909[_0xcca2('0x42')]=_['merge'](_0x184909[_0xcca2('0x42')],{'$or':_['map'](_0x184909[_0xcca2('0x48')],function(_0xe132ba){var _0x15a0e8={};_0x15a0e8[_0xe132ba]={'$like':'%'+_0x195de2[_0xcca2('0x45')]['filter']+'%'};return _0x15a0e8;})});}_0x184909=_[_0xcca2('0x5b')]({},_0x184909,_0x195de2[_0xcca2('0xd3')]);return _0x356b98[_0xcca2('0xe4')](_0x184909);}})[_0xcca2('0x14')](function(_0x4ef95b){if(_0x4ef95b){_0x54f868=_0x4ef95b[_0xcca2('0x4c')];if(!_0x195de2[_0xcca2('0x45')][_0xcca2('0xd5')](_0xcca2('0xdb'))){_0x184909[_0xcca2('0x23')]=qs[_0xcca2('0x23')](_0x195de2[_0xcca2('0x45')][_0xcca2('0x23')]);_0x184909[_0xcca2('0x24')]=qs[_0xcca2('0x24')](_0x195de2[_0xcca2('0x45')][_0xcca2('0x24')]);}return _0x356b98[_0xcca2('0xe4')](_0x184909);}})['then'](function(_0x4d249a){if(_0x4d249a){return _0x4d249a?{'count':_0x54f868,'rows':_0x4d249a}:null;}})[_0xcca2('0x14')](respondWithResult(_0x365c83,null))[_0xcca2('0x53')](handleError(_0x365c83,null));};exports[_0xcca2('0xe6')]=function(_0x3decc8,_0x5aa98c){var _0xfe3fe6={'raw':!![],'where':{}};var _0x10782e={};var _0x2706a7={'count':0x0,'rows':[]};return db[_0xcca2('0x3a')][_0xcca2('0x9c')]({'where':{'id':_0x3decc8[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x5aa98c,null))[_0xcca2('0x14')](function(_0xaef0b1){if(_0xaef0b1){_0x10782e[_0xcca2('0x55')]=_[_0xcca2('0x57')](db[_0xcca2('0xe7')][_0xcca2('0x3b')]);_0x10782e['query']=_[_0xcca2('0x57')](_0x3decc8[_0xcca2('0x45')]);_0x10782e[_0xcca2('0xcf')]=_[_0xcca2('0x58')](_0x10782e[_0xcca2('0x55')],_0x10782e[_0xcca2('0x45')]);_0xfe3fe6[_0xcca2('0x48')]=_['intersection'](_0x10782e[_0xcca2('0x55')],qs[_0xcca2('0x59')](_0x3decc8['query'][_0xcca2('0x59')]));_0xfe3fe6[_0xcca2('0x48')]=_0xfe3fe6['attributes'][_0xcca2('0x4c')]?_0xfe3fe6[_0xcca2('0x48')]:_0x10782e[_0xcca2('0x55')];if(!_0x3decc8[_0xcca2('0x45')]['hasOwnProperty'](_0xcca2('0xdb'))){_0xfe3fe6[_0xcca2('0x23')]=qs['limit'](_0x3decc8[_0xcca2('0x45')]['limit']);_0xfe3fe6[_0xcca2('0x24')]=qs['offset'](_0x3decc8[_0xcca2('0x45')][_0xcca2('0x24')]);}_0xfe3fe6[_0xcca2('0xd0')]=qs[_0xcca2('0xd1')](_0x3decc8[_0xcca2('0x45')][_0xcca2('0xd1')]);_0xfe3fe6[_0xcca2('0x42')]=qs[_0xcca2('0xcf')](_[_0xcca2('0xd2')](_0x3decc8[_0xcca2('0x45')],_0x10782e[_0xcca2('0xcf')]));_0xfe3fe6[_0xcca2('0x42')][_0xcca2('0xe0')]=_0xaef0b1['id'];if(_0x3decc8['query'][_0xcca2('0x30')]){_0xfe3fe6[_0xcca2('0x42')]=_[_0xcca2('0x5b')](_0xfe3fe6[_0xcca2('0x42')],{'$or':_[_0xcca2('0x3c')](_0xfe3fe6[_0xcca2('0x48')],function(_0x4a4b6a){var _0x503a26={};_0x503a26[_0x4a4b6a]={'$like':'%'+_0x3decc8[_0xcca2('0x45')][_0xcca2('0x30')]+'%'};return _0x503a26;})});}_0xfe3fe6=_[_0xcca2('0x5b')]({},_0xfe3fe6,_0x3decc8[_0xcca2('0xd3')]);return db[_0xcca2('0xe7')][_0xcca2('0x25')]({'where':_0xfe3fe6['where']})['then'](function(_0x213c76){_0x2706a7[_0xcca2('0x25')]=_0x213c76;if(_0x3decc8[_0xcca2('0x45')][_0xcca2('0x43')]){_0xfe3fe6[_0xcca2('0x44')]=[{'all':!![]}];}return db[_0xcca2('0xe7')]['findAll'](_0xfe3fe6);})['then'](function(_0x5bbd0b){_0x2706a7[_0xcca2('0x4b')]=_0x5bbd0b;return _0x2706a7;});}})[_0xcca2('0x14')](respondWithFilteredResult(_0x5aa98c,_0xfe3fe6))[_0xcca2('0x53')](handleError(_0x5aa98c,null));};exports[_0xcca2('0xe8')]=function(_0x53d21b,_0x4b7d00){var _0x507db2={};var _0x31f7b6={};var _0x70c442;var _0x14c438;return db['User']['findOne']({'where':{'id':_0x53d21b['params']['id']}})['then'](handleEntityNotFound(_0x4b7d00,null))[_0xcca2('0x14')](function(_0x38ee73){if(_0x38ee73){_0x70c442=_0x38ee73;_0x31f7b6[_0xcca2('0x55')]=_[_0xcca2('0x57')](db[_0xcca2('0xe9')][_0xcca2('0x3b')]);_0x31f7b6[_0xcca2('0x45')]=_[_0xcca2('0x57')](_0x53d21b[_0xcca2('0x45')]);_0x31f7b6['filters']=_[_0xcca2('0x58')](_0x31f7b6[_0xcca2('0x55')],_0x31f7b6[_0xcca2('0x45')]);_0x507db2[_0xcca2('0x48')]=_[_0xcca2('0x58')](_0x31f7b6['model'],qs[_0xcca2('0x59')](_0x53d21b[_0xcca2('0x45')][_0xcca2('0x59')]));_0x507db2[_0xcca2('0x48')]=_0x507db2[_0xcca2('0x48')][_0xcca2('0x4c')]?_0x507db2['attributes']:_0x31f7b6[_0xcca2('0x55')];_0x507db2[_0xcca2('0xd0')]=qs[_0xcca2('0xd1')](_0x53d21b[_0xcca2('0x45')][_0xcca2('0xd1')]);_0x507db2[_0xcca2('0x42')]=qs[_0xcca2('0xcf')](_['pick'](_0x53d21b['query'],_0x31f7b6['filters']));if(_0x53d21b[_0xcca2('0x45')][_0xcca2('0x30')]){_0x507db2[_0xcca2('0x42')]=_[_0xcca2('0x5b')](_0x507db2[_0xcca2('0x42')],{'$or':_[_0xcca2('0x3c')](_0x507db2[_0xcca2('0x48')],function(_0x6779ac){var _0x333475={};_0x333475[_0x6779ac]={'$like':'%'+_0x53d21b[_0xcca2('0x45')][_0xcca2('0x30')]+'%'};return _0x333475;})});}_0x507db2=_[_0xcca2('0x5b')]({},_0x507db2,_0x53d21b[_0xcca2('0xd3')]);return _0x70c442['getSmsInteractions'](_0x507db2);}})['then'](function(_0x1b975e){if(_0x1b975e){_0x14c438=_0x1b975e[_0xcca2('0x4c')];if(!_0x53d21b[_0xcca2('0x45')]['hasOwnProperty'](_0xcca2('0xdb'))){_0x507db2[_0xcca2('0x23')]=qs[_0xcca2('0x23')](_0x53d21b[_0xcca2('0x45')][_0xcca2('0x23')]);_0x507db2[_0xcca2('0x24')]=qs[_0xcca2('0x24')](_0x53d21b[_0xcca2('0x45')][_0xcca2('0x24')]);}return _0x70c442[_0xcca2('0xe8')](_0x507db2);}})[_0xcca2('0x14')](function(_0x302e2d){if(_0x302e2d){return _0x302e2d?{'count':_0x14c438,'rows':_0x302e2d}:null;}})[_0xcca2('0x14')](respondWithResult(_0x4b7d00,null))[_0xcca2('0x53')](handleError(_0x4b7d00,null));};exports['getFaxInteractions']=function(_0x4d8f0c,_0x17d066){var _0x369c47={};var _0x1f603d={};var _0x440192;var _0x3e5bf4;return db[_0xcca2('0x3a')][_0xcca2('0x9c')]({'where':{'id':_0x4d8f0c[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x17d066,null))[_0xcca2('0x14')](function(_0x3b6d4e){if(_0x3b6d4e){_0x440192=_0x3b6d4e;_0x1f603d[_0xcca2('0x55')]=_[_0xcca2('0x57')](db['FaxInteraction'][_0xcca2('0x3b')]);_0x1f603d[_0xcca2('0x45')]=_[_0xcca2('0x57')](_0x4d8f0c[_0xcca2('0x45')]);_0x1f603d[_0xcca2('0xcf')]=_[_0xcca2('0x58')](_0x1f603d['model'],_0x1f603d[_0xcca2('0x45')]);_0x369c47[_0xcca2('0x48')]=_[_0xcca2('0x58')](_0x1f603d[_0xcca2('0x55')],qs[_0xcca2('0x59')](_0x4d8f0c['query']['fields']));_0x369c47[_0xcca2('0x48')]=_0x369c47[_0xcca2('0x48')][_0xcca2('0x4c')]?_0x369c47['attributes']:_0x1f603d[_0xcca2('0x55')];_0x369c47[_0xcca2('0xd0')]=qs[_0xcca2('0xd1')](_0x4d8f0c[_0xcca2('0x45')][_0xcca2('0xd1')]);_0x369c47['where']=qs[_0xcca2('0xcf')](_[_0xcca2('0xd2')](_0x4d8f0c[_0xcca2('0x45')],_0x1f603d['filters']));if(_0x4d8f0c[_0xcca2('0x45')][_0xcca2('0x30')]){_0x369c47[_0xcca2('0x42')]=_[_0xcca2('0x5b')](_0x369c47[_0xcca2('0x42')],{'$or':_[_0xcca2('0x3c')](_0x369c47['attributes'],function(_0x33cbbc){var _0x3a7b7b={};_0x3a7b7b[_0x33cbbc]={'$like':'%'+_0x4d8f0c['query']['filter']+'%'};return _0x3a7b7b;})});}_0x369c47=_[_0xcca2('0x5b')]({},_0x369c47,_0x4d8f0c['options']);return _0x440192[_0xcca2('0xea')](_0x369c47);}})[_0xcca2('0x14')](function(_0x5c5f9a){if(_0x5c5f9a){_0x3e5bf4=_0x5c5f9a[_0xcca2('0x4c')];if(!_0x4d8f0c['query'][_0xcca2('0xd5')]('nolimit')){_0x369c47[_0xcca2('0x23')]=qs[_0xcca2('0x23')](_0x4d8f0c['query']['limit']);_0x369c47[_0xcca2('0x24')]=qs[_0xcca2('0x24')](_0x4d8f0c[_0xcca2('0x45')][_0xcca2('0x24')]);}return _0x440192['getFaxInteractions'](_0x369c47);}})[_0xcca2('0x14')](function(_0x1f0a6c){if(_0x1f0a6c){return _0x1f0a6c?{'count':_0x3e5bf4,'rows':_0x1f0a6c}:null;}})[_0xcca2('0x14')](respondWithResult(_0x17d066,null))[_0xcca2('0x53')](handleError(_0x17d066,null));};exports['getWhatsappInteractions']=function(_0x2c7bd7,_0x7c1bbf){var _0x2c015b={};var _0x1b8380={};var _0xefdfa1;var _0x15dda6;return db[_0xcca2('0x3a')]['findOne']({'where':{'id':_0x2c7bd7['params']['id']}})['then'](handleEntityNotFound(_0x7c1bbf,null))[_0xcca2('0x14')](function(_0x555b28){if(_0x555b28){_0xefdfa1=_0x555b28;_0x1b8380[_0xcca2('0x55')]=_[_0xcca2('0x57')](db['WhatsappInteraction'][_0xcca2('0x3b')]);_0x1b8380[_0xcca2('0x45')]=_[_0xcca2('0x57')](_0x2c7bd7[_0xcca2('0x45')]);_0x1b8380['filters']=_[_0xcca2('0x58')](_0x1b8380[_0xcca2('0x55')],_0x1b8380['query']);_0x2c015b[_0xcca2('0x48')]=_[_0xcca2('0x58')](_0x1b8380['model'],qs['fields'](_0x2c7bd7[_0xcca2('0x45')]['fields']));_0x2c015b[_0xcca2('0x48')]=_0x2c015b[_0xcca2('0x48')][_0xcca2('0x4c')]?_0x2c015b[_0xcca2('0x48')]:_0x1b8380[_0xcca2('0x55')];_0x2c015b['order']=qs['sort'](_0x2c7bd7[_0xcca2('0x45')][_0xcca2('0xd1')]);_0x2c015b[_0xcca2('0x42')]=qs[_0xcca2('0xcf')](_[_0xcca2('0xd2')](_0x2c7bd7[_0xcca2('0x45')],_0x1b8380[_0xcca2('0xcf')]));if(_0x2c7bd7[_0xcca2('0x45')][_0xcca2('0x30')]){_0x2c015b['where']=_['merge'](_0x2c015b[_0xcca2('0x42')],{'$or':_['map'](_0x2c015b[_0xcca2('0x48')],function(_0x1a0284){var _0x3ae09c={};_0x3ae09c[_0x1a0284]={'$like':'%'+_0x2c7bd7['query'][_0xcca2('0x30')]+'%'};return _0x3ae09c;})});}_0x2c015b=_[_0xcca2('0x5b')]({},_0x2c015b,_0x2c7bd7[_0xcca2('0xd3')]);return _0xefdfa1[_0xcca2('0xeb')](_0x2c015b);}})['then'](function(_0x11b43f){if(_0x11b43f){_0x15dda6=_0x11b43f['length'];if(!_0x2c7bd7[_0xcca2('0x45')][_0xcca2('0xd5')]('nolimit')){_0x2c015b['limit']=qs[_0xcca2('0x23')](_0x2c7bd7[_0xcca2('0x45')][_0xcca2('0x23')]);_0x2c015b[_0xcca2('0x24')]=qs[_0xcca2('0x24')](_0x2c7bd7[_0xcca2('0x45')]['offset']);}return _0xefdfa1[_0xcca2('0xeb')](_0x2c015b);}})[_0xcca2('0x14')](function(_0x5114e9){if(_0x5114e9){return _0x5114e9?{'count':_0x15dda6,'rows':_0x5114e9}:null;}})['then'](respondWithResult(_0x7c1bbf,null))[_0xcca2('0x53')](handleError(_0x7c1bbf,null));};exports['login']=function(_0xeb515c,_0x3ec207,_0x27ebf8){var _0x4e518c;var _0x973285;var _0x24361b;var _0x1d7b3e=!_[_0xcca2('0x68')](_0xeb515c[_0xcca2('0x54')]['id'])?_0xeb515c[_0xcca2('0x54')]['id']:!_[_0xcca2('0x68')](_0xeb515c[_0xcca2('0x2e')]['id'])?_0xeb515c[_0xcca2('0x2e')]['id']:null;return db[_0xcca2('0x3a')][_0xcca2('0x34')]({'where':{'id':_0x1d7b3e,'role':{'$or':[_0xcca2('0x2c'),_0xcca2('0x2e'),'agent']}},'attributes':['id','name',_0xcca2('0xec'),_0xcca2('0xed'),_0xcca2('0x2b'),_0xcca2('0x63'),'loginInPause']})[_0xcca2('0x14')](function(_0x8f8fa7){if(_0x8f8fa7){if(_0x8f8fa7[_0xcca2('0x2b')]===_0xcca2('0x7f')){_0x4e518c=_0x8f8fa7;if(_0xeb515c[_0xcca2('0x5e')][_0xcca2('0xa5')]){_0x24361b=util['format']('LOCAL/%s@from-sip/n',_0x4e518c[_0xeb515c[_0xcca2('0x5e')][_0xcca2('0xa5')]]);}else if(_0xeb515c[_0xcca2('0x5e')]['intrf']){_0x24361b=util['format'](_0xcca2('0xb3'),_0xeb515c[_0xcca2('0x5e')][_0xcca2('0xee')]);}else{_0x24361b=util[_0xcca2('0xb2')]('SIP/%s',_0x4e518c[_0xcca2('0x35')]);}socket['to'](util['format']('user:%s',_0x4e518c[_0xcca2('0x35')]))[_0xcca2('0xad')](_0xcca2('0xef'),{'user':{'id':_0x4e518c['id'],'name':_0x4e518c[_0xcca2('0x35')]},'ip':_0xeb515c[_0xcca2('0xf0')]['x-forwarded-for']||_0xeb515c[_0xcca2('0xf1')][_0xcca2('0xf2')]||_0xeb515c[_0xcca2('0xf3')][_0xcca2('0xf2')]||_0xeb515c[_0xcca2('0xf1')]['socket'][_0xcca2('0xf2')]});return db[_0xcca2('0xb4')][_0xcca2('0x29')]({'where':{'membername':_0x4e518c['name']},'individualHooks':!![]});}}else{throw new db['Sequelize'][(_0xcca2('0x97'))](_0xcca2('0xf4'));}})['then'](function(){if(_0x4e518c){return _0x4e518c[_0xcca2('0xf5')]({'raw':!![]});}})[_0xcca2('0x14')](function(_0x5bfedb){if(_0x4e518c){if(_0x5bfedb){_0x973285=_0x5bfedb;if(_0x973285[_0xcca2('0x4c')]){var _0x5e8917=_0x973285[_0xcca2('0x3c')](function(_0x1a72b7){var _0x26ff47={'membername':_0x4e518c[_0xcca2('0x35')],'UserId':_0x4e518c['id'],'queue_name':_0x1a72b7['name'],'VoiceQueueId':_0x1a72b7['id'],'interface':_0x24361b,'paused':_0x4e518c[_0xcca2('0xa3')]||![],'penalty':_0x1a72b7[_0xcca2('0xf6')]||0x0};return db['UserVoiceQueueRt'][_0xcca2('0xf7')](_0x26ff47);});return Promise['all'](_0x5e8917);}}}})[_0xcca2('0x14')](function(){if(_0x4e518c){return db['MemberReport'][_0xcca2('0x4a')]({'where':{'membername':_0x4e518c[_0xcca2('0x35')],'exitAt':null}});}})[_0xcca2('0x14')](function(_0x327869){if(_0x4e518c){var _0x3d71ca=[];_0x327869[_0xcca2('0xf8')](function(_0x3c5a95){_0x3d71ca[_0xcca2('0x49')](_0x3c5a95[_0xcca2('0x27')]({'exitAt':moment()[_0xcca2('0xb2')](_0xcca2('0xf9'))}));});return Promise[_0xcca2('0x52')](_0x3d71ca);}})[_0xcca2('0x14')](function(){if(_0x4e518c){var _0x4f5b03=[];var _0x39c224=[];var _0x184886=utils[_0xcca2('0xfa')]();var _0x18cddc={'membername':_0x4e518c[_0xcca2('0x35')],'interface':_0x24361b,'enterAt':moment()[_0xcca2('0xb2')](_0xcca2('0xf9')),'role':_0x4e518c[_0xcca2('0x2b')],'internal':_0x4e518c['internal']};_0x184886[_0xcca2('0xf8')](function(_0x24d78d){_0x4f5b03[_0xcca2('0x49')](_[_0xcca2('0x5b')]({'channel':_0x24d78d,'type':'LOGIN','data1':_0xeb515c[_0xcca2('0x5e')][_0xcca2('0xfb')],'data2':_0x24361b},_0x18cddc));if(_0x4e518c[_0xcca2('0xa3')]){_0x39c224[_0xcca2('0x49')](_['merge']({'channel':_0x24d78d,'type':_0xcca2('0xfc'),'data1':_0xcca2('0xfd')},_0x18cddc));}});return db[_0xcca2('0xfe')][_0xcca2('0x8b')](_0x4f5b03['concat'](_0x39c224),{'individualHooks':!![]});}})['then'](function(){if(_0x4e518c){return _0x4e518c[_0xcca2('0x27')]({'online':!![],'lastLoginAt':moment()[_0xcca2('0xb2')](_0xcca2('0xf9')),'voicePause':_0x4e518c['loginInPause']||![],'mailPause':_0x4e518c[_0xcca2('0xa3')]||![],'chatPause':_0x4e518c[_0xcca2('0xa3')]||![],'faxPause':_0x4e518c['loginInPause']||![],'smsPause':_0x4e518c[_0xcca2('0xa3')]||![],'openchannelPause':_0x4e518c['loginInPause']||![],'whatsappPause':_0x4e518c[_0xcca2('0xa3')]||![],'pauseType':_0x4e518c[_0xcca2('0xa3')]?_0xcca2('0xfd'):null,'interface':_0x24361b,'lastPauseAt':moment()[_0xcca2('0xb2')]('YYYY-MM-DD\x20HH:mm:ss')});}})[_0xcca2('0x14')](function(_0x4b4dfc){if(_0xeb515c[_0xcca2('0xff')]){return _0x27ebf8();}else{return Promise['resolve'](_0x4b4dfc)[_0xcca2('0x14')](respondWithResult(_0x3ec207,null));}})[_0xcca2('0x53')](handleError(_0x3ec207,null));};exports[_0xcca2('0x100')]=function(_0x481e2d,_0x5024dc){var _0xc9f6d0;return db['User'][_0xcca2('0x34')]({'where':{'id':_0x481e2d[_0xcca2('0x54')]['id'],'role':_0xcca2('0x7f')},'attributes':['id','name',_0xcca2('0x2b')]})[_0xcca2('0x14')](handleEntityNotFound(_0x5024dc,null))[_0xcca2('0x14')](function(_0x469387){if(_0x469387){_0xc9f6d0=_0x469387;return db[_0xcca2('0xb4')][_0xcca2('0x29')]({'where':{'membername':_0xc9f6d0['name']},'individualHooks':!![]});}})[_0xcca2('0x14')](function(){return db[_0xcca2('0xfe')][_0xcca2('0x4a')]({'where':{'membername':_0xc9f6d0[_0xcca2('0x35')],'exitAt':null}});})[_0xcca2('0x14')](function(_0x94edf0){var _0x77b30a=[];_0x94edf0[_0xcca2('0xf8')](function(_0x5c270b){_0x77b30a[_0xcca2('0x49')](_0x5c270b[_0xcca2('0x27')]({'exitAt':moment()[_0xcca2('0xb2')](_0xcca2('0xf9'))}));});return Promise[_0xcca2('0x52')](_0x77b30a);})[_0xcca2('0x14')](function(){return _0xc9f6d0[_0xcca2('0x27')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})['then'](respondWithResult(_0x5024dc,null))['catch'](handleError(_0x5024dc,null));};exports[_0xcca2('0x101')]=function(_0x16a45b,_0x182a45){var _0xd2c382;return db[_0xcca2('0xb4')][_0xcca2('0x27')]({'paused':0x1},{'where':{'UserId':_0x16a45b[_0xcca2('0x54')]['id']},'individualHooks':!![]})[_0xcca2('0x14')](function(){return db[_0xcca2('0x3a')][_0xcca2('0x34')]({'where':{'id':_0x16a45b[_0xcca2('0x54')]['id'],'role':'agent'},'attributes':['id',_0xcca2('0x35'),_0xcca2('0x2b'),'internal',_0xcca2('0xa5'),_0xcca2('0xb1')]});})[_0xcca2('0x14')](handleEntityNotFound(_0x182a45,null))['then'](function(_0x112885){if(_0x112885){_0xd2c382=_0x112885;return respondWithRpcPromise('QueuePause',_0xcca2('0x101'),{'id':_0xd2c382['id'],'name':_0xd2c382[_0xcca2('0x35')],'pause':!![]});}})[_0xcca2('0x14')](function(){if(_0xd2c382){return db[_0xcca2('0xfe')][_0xcca2('0x4a')]({'where':{'membername':_0xd2c382['name'],'type':_0xcca2('0xfc'),'exitAt':null}});}})[_0xcca2('0x14')](function(_0x3d9171){if(_0x3d9171[_0xcca2('0x4c')]){var _0x348b26=moment()[_0xcca2('0xb2')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x134374=0x0,_0x13c870=_0x3d9171['length'];_0x134374<_0x13c870;_0x134374++){_0x3d9171[_0x134374][_0xcca2('0x102')]({'exitAt':_0x348b26});}}})[_0xcca2('0x14')](function(){var _0x2b11ed=[];var _0x1bdad8=utils[_0xcca2('0xfa')]();_0x1bdad8['forEach'](function(_0x55bc06){_0x2b11ed[_0xcca2('0x49')]({'channel':_0x55bc06,'membername':_0xd2c382['name'],'interface':_[_0xcca2('0x68')](_0xd2c382[_0xcca2('0xa5')])?util[_0xcca2('0xb2')](_0xcca2('0xb3'),_0xd2c382['name']):_0xd2c382[_0xcca2('0xa5')],'type':_0xcca2('0xfc'),'enterAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x16a45b['body'][_0xcca2('0x3e')]||_0xcca2('0x103'),'role':_0xd2c382['role'],'internal':_0xd2c382[_0xcca2('0x63')]});});return db[_0xcca2('0xfe')][_0xcca2('0x8b')](_0x2b11ed,{'individualHooks':!![]});})['then'](function(){return _0xd2c382['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x16a45b[_0xcca2('0x5e')][_0xcca2('0x3e')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()['format'](_0xcca2('0xf9'))});})[_0xcca2('0x14')](respondWithResult(_0x182a45,null))[_0xcca2('0x53')](handleError(_0x182a45,null));};exports[_0xcca2('0x104')]=function(_0x525b6a,_0xb5c68){var _0x5c1840;return db[_0xcca2('0x3a')][_0xcca2('0x34')]({'where':{'id':_0x525b6a[_0xcca2('0x54')]['id']},'attributes':['id',_0xcca2('0x35'),_0xcca2('0x2b'),'internal',_0xcca2('0xa5'),_0xcca2('0xb1'),'voicePause','mailPause',_0xcca2('0x105'),_0xcca2('0x106'),'openchannelPause',_0xcca2('0x107'),_0xcca2('0x108'),_0xcca2('0x109'),_0xcca2('0x10a')]})[_0xcca2('0x14')](handleEntityNotFound(_0xb5c68,null))[_0xcca2('0x14')](function(_0x5eaf19){if(_0x5eaf19){_0x5c1840=_0x5eaf19;if(_0x525b6a[_0xcca2('0x5e')][_0xcca2('0xa2')]&&!utils[_0xcca2('0xa6')](_0x525b6a[_0xcca2('0x5e')]['channel'])){throw new db['Sequelize']['ValidationError'](_0xcca2('0xb6'));}switch(_0x525b6a['body']['channel']){case _0xcca2('0xaf'):return respondWithRpcPromise(_0xcca2('0x10b'),_0xcca2('0x104'),{'id':_0x5c1840['id'],'name':_0x5c1840[_0xcca2('0x35')],'pause':![]})[_0xcca2('0x14')](function(){return db['UserVoiceQueueRt'][_0xcca2('0x27')]({'paused':0x0},{'where':{'UserId':_0x5c1840['id']},'individualHooks':!![]});})[_0xcca2('0x14')](function(){return db[_0xcca2('0xfe')][_0xcca2('0x34')]({'where':{'channel':_0x525b6a[_0xcca2('0x5e')][_0xcca2('0xa2')],'membername':_0x5c1840[_0xcca2('0x35')],'type':_0xcca2('0xfc'),'exitAt':null}});})[_0xcca2('0x14')](function(_0x13280f){if(_0x13280f){return _0x13280f[_0xcca2('0x27')]({'exitAt':moment()[_0xcca2('0xb2')](_0xcca2('0xf9')),'data2':_0xcca2('0x10c')},{'individualHooks':!![]});}return null;})[_0xcca2('0x14')](function(){return{'voicePause':![]};});case'mail':case'chat':case _0xcca2('0x4f'):case _0xcca2('0x4e'):case _0xcca2('0x51'):case _0xcca2('0x50'):return db[_0xcca2('0xfe')][_0xcca2('0x34')]({'where':{'channel':_0x525b6a[_0xcca2('0x5e')]['channel'],'membername':_0x5c1840[_0xcca2('0x35')],'type':'PAUSE','exitAt':null}})[_0xcca2('0x14')](function(_0x13c404){if(_0x13c404){return _0x13c404[_0xcca2('0x27')]({'exitAt':moment()['format'](_0xcca2('0xf9')),'data2':_0xcca2('0x10c')},{'individualHooks':!![]});}return null;})['then'](function(){var _0xddd9b3={};_[_0xcca2('0x26')](_0xddd9b3,util['format']('%s%s',_0x525b6a[_0xcca2('0x5e')]['channel'],_0xcca2('0x10d')),![]);return _0xddd9b3;});default:return respondWithRpcPromise(_0xcca2('0x10b'),_0xcca2('0x104'),{'id':_0x5c1840['id'],'name':_0x5c1840[_0xcca2('0x35')],'pause':![]})[_0xcca2('0x14')](function(){return db[_0xcca2('0xb4')]['update']({'paused':0x0},{'where':{'UserId':_0x5c1840['id']}});})[_0xcca2('0x14')](function(){return db['MemberReport'][_0xcca2('0x4a')]({'where':{'membername':_0x5c1840[_0xcca2('0x35')],'type':'PAUSE','exitAt':null}});})[_0xcca2('0x14')](function(_0x4c7ae7){var _0x2b6e7d=[];_0x4c7ae7[_0xcca2('0xf8')](function(_0x4ee1b0){_0x2b6e7d[_0xcca2('0x49')](_0x4ee1b0[_0xcca2('0x27')]({'exitAt':moment()[_0xcca2('0xb2')](_0xcca2('0xf9')),'data2':_0xcca2('0x10c')}));});return Promise[_0xcca2('0x52')](_0x2b6e7d);})[_0xcca2('0x14')](function(){return{'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]};});}}})[_0xcca2('0x14')](function(_0x202d60){return _0x5c1840['getRealtimeData']()[_0xcca2('0x14')](function(_0x21fc3c){var _0x4cfdc2=utils[_0xcca2('0xfa')]();_0x4cfdc2[_0xcca2('0xf8')](function(_0x27182a){var _0x1791e8=_0x27182a+'Status';_0x5c1840[_0xcca2('0x10e')]([_0x1791e8],_0x21fc3c[_0x1791e8]);});return _0x5c1840[_0xcca2('0x27')](_0x202d60);});})[_0xcca2('0x14')](respondWithResult(_0xb5c68,null))[_0xcca2('0x53')](handleError(_0xb5c68,null));};exports[_0xcca2('0x10f')]=function(_0x11f22b,_0x38b4d2){var _0x44002c={};var _0x1423cf={};var _0xcd6697;var _0x1eb508;return db[_0xcca2('0x3a')][_0xcca2('0x9c')]({'where':{'id':_0x11f22b[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x38b4d2,null))[_0xcca2('0x14')](function(_0x34e36d){if(_0x34e36d){_0xcd6697=_0x34e36d;_0x1423cf[_0xcca2('0x55')]=_[_0xcca2('0x57')](db[_0xcca2('0x110')]['rawAttributes']);_0x1423cf[_0xcca2('0x45')]=_[_0xcca2('0x57')](_0x11f22b['query']);_0x1423cf[_0xcca2('0xcf')]=_[_0xcca2('0x58')](_0x1423cf['model'],_0x1423cf[_0xcca2('0x45')]);_0x44002c['attributes']=_[_0xcca2('0x58')](_0x1423cf[_0xcca2('0x55')],qs[_0xcca2('0x59')](_0x11f22b['query']['fields']));_0x44002c['attributes']=_0x44002c[_0xcca2('0x48')][_0xcca2('0x4c')]?_0x44002c[_0xcca2('0x48')]:_0x1423cf[_0xcca2('0x55')];_0x44002c[_0xcca2('0xd0')]=qs[_0xcca2('0xd1')](_0x11f22b[_0xcca2('0x45')][_0xcca2('0xd1')]);_0x44002c[_0xcca2('0x42')]=qs['filters'](_[_0xcca2('0xd2')](_0x11f22b[_0xcca2('0x45')],_0x1423cf[_0xcca2('0xcf')]));if(_0x11f22b[_0xcca2('0x45')]['filter']){_0x44002c[_0xcca2('0x42')]=_['merge'](_0x44002c['where'],{'$or':_[_0xcca2('0x3c')](_0x44002c['attributes'],function(_0xcfe4d3){var _0x47d7b4={};_0x47d7b4[_0xcfe4d3]={'$like':'%'+_0x11f22b[_0xcca2('0x45')]['filter']+'%'};return _0x47d7b4;})});}_0x44002c=_[_0xcca2('0x5b')]({},_0x44002c,_0x11f22b[_0xcca2('0xd3')]);return _0xcd6697[_0xcca2('0x10f')](_0x44002c);}})[_0xcca2('0x14')](function(_0x2e9d69){if(_0x2e9d69){_0x1eb508=_0x2e9d69['length'];if(!_0x11f22b['query'][_0xcca2('0xd5')](_0xcca2('0xdb'))){_0x44002c['limit']=qs[_0xcca2('0x23')](_0x11f22b[_0xcca2('0x45')]['limit']);_0x44002c['offset']=qs['offset'](_0x11f22b[_0xcca2('0x45')][_0xcca2('0x24')]);}return _0xcd6697[_0xcca2('0x10f')](_0x44002c);}})['then'](function(_0x3fc49e){if(_0x3fc49e){return _0x3fc49e?{'count':_0x1eb508,'rows':_0x3fc49e}:null;}})[_0xcca2('0x14')](respondWithResult(_0x38b4d2,null))[_0xcca2('0x53')](handleError(_0x38b4d2,null));};exports[_0xcca2('0x111')]=function(_0x1e17ef,_0x17e4cc){var _0x2a8dd8=_0x1e17ef[_0xcca2('0x54')]['id'];var _0x2bc1d8=_0x1e17ef[_0xcca2('0x5e')]?_0x1e17ef['body'][_0xcca2('0x61')]:null;var _0xb3c104=[];return Promise['resolve']()[_0xcca2('0x14')](function(){if(!_0x2bc1d8)throw new APIBadRequestError(_0xcca2('0x112'));})[_0xcca2('0x14')](function(){return db[_0xcca2('0x3a')][_0xcca2('0x9c')]({'where':{'id':_0x2a8dd8}});})[_0xcca2('0x14')](function(_0x2aba61){if(!_0x2aba61)throw new APINotFoundError(util[_0xcca2('0xb2')]('User\x20with\x20id\x20%s\x20not\x20found',_0x1e17ef[_0xcca2('0x54')]['id']));return db[_0xcca2('0x113')][_0xcca2('0x114')](function(_0x2843c7){return _0x2aba61[_0xcca2('0x111')](_0x2bc1d8,{'transaction':_0x2843c7})[_0xcca2('0x14')](function(){return db[_0xcca2('0x110')][_0xcca2('0x4a')]({'where':{'id':{'$in':_0x2bc1d8}}});})[_0xcca2('0x14')](function(_0x17ca07){var _0x63ce89=_['map'](_0x17ca07,function(_0x356ee8){return _0x356ee8['getAssociatedQueues']();});return Promise[_0xcca2('0x52')](_0x63ce89);})[_0xcca2('0x14')](function(_0x42efe2){_0xb3c104=_['flattenDeep'](_0x42efe2);var _0x5014cb=_[_0xcca2('0x3c')](_0xb3c104,function(_0x130498){return _0x130498[_0xcca2('0x115')](_0x2aba61['id'],{'transaction':_0x2843c7});});return Promise[_0xcca2('0x52')](_0x5014cb);})[_0xcca2('0x14')](function(){if(!_0x2aba61[_0xcca2('0xb1')])return;var _0x172603=_[_0xcca2('0x30')](_0xb3c104,function(_0x5f5c0c){return _0x5f5c0c[_0xcca2('0x116')](_0xcca2('0xa2'))===_0xcca2('0x117');});var _0x2557c6=_['map'](_0x172603,function(_0x59f6b9){return db[_0xcca2('0xb4')]['upsert']({'membername':_0x2aba61['name'],'UserId':_0x2aba61['id'],'queue_name':_0x59f6b9['name'],'VoiceQueueId':_0x59f6b9['id'],'interface':_[_0xcca2('0x68')](_0x2aba61[_0xcca2('0xa5')])?util[_0xcca2('0xb2')](_0xcca2('0xb3'),_0x2aba61[_0xcca2('0x35')]):_0x2aba61[_0xcca2('0xa5')],'paused':_0x2aba61['voicePause']||![],'penalty':_0x2aba61[_0xcca2('0xa9')]},{'transaction':_0x2843c7});});return Promise[_0xcca2('0x52')](_0x2557c6);})[_0xcca2('0x14')](function(){return db[_0xcca2('0x118')]['findAll']({'where':{'teamId':{'$in':_0x2bc1d8}}});})[_0xcca2('0x14')](function(_0x22ae80){var _0x5a7b55=_[_0xcca2('0x3c')](_0x22ae80,function(_0x3d75ab){return db[_0xcca2('0x119')]['create']({'UserId':_0x2aba61['id'],'VoicePrefixId':_0x3d75ab[_0xcca2('0x11a')]},{'transaction':_0x2843c7});});return Promise['all'](_0x5a7b55);});});})[_0xcca2('0x14')](function(){for(var _0x11c939=0x0;_0x11c939<_0xb3c104[_0xcca2('0x4c')];_0x11c939++){var _0x4b24b4=_0xb3c104[_0x11c939][_0xcca2('0x116')](_0xcca2('0xa2'));var _0x3a9a59=_0x4b24b4+_0xcca2('0xac');socket[_0xcca2('0xad')](_0xcca2('0x2e')+_0x4b24b4+_0xcca2('0xae'),{'UserId':_0x2a8dd8,['queueField']:_0xb3c104[_0x11c939]['id']});}})[_0xcca2('0x14')](respondWithStatusCode(_0x17e4cc,null))[_0xcca2('0x53')](APIHandleError(_0x17e4cc));};exports[_0xcca2('0x11b')]=function(_0x29f271,_0x12ebe6){var _0x576c5c=_0x29f271[_0xcca2('0x54')]['id'];var _0x326c50=null;if(_0x29f271[_0xcca2('0x45')][_0xcca2('0x61')]){_0x326c50=_[_0xcca2('0x11c')](_0x29f271[_0xcca2('0x45')][_0xcca2('0x61')])?_0x29f271[_0xcca2('0x45')][_0xcca2('0x61')]:[_0x29f271[_0xcca2('0x45')][_0xcca2('0x61')]];}var _0x1f1e26=[];return Promise[_0xcca2('0x11d')]()['then'](function(){if(!_0x326c50)throw new APIBadRequestError(_0xcca2('0x11e'));})[_0xcca2('0x14')](function(){return db[_0xcca2('0x3a')][_0xcca2('0x9c')]({'where':{'id':_0x576c5c}});})[_0xcca2('0x14')](function(_0xea4bd3){if(!_0xea4bd3)throw new APINotFoundError(util[_0xcca2('0xb2')](_0xcca2('0x11f'),_0x29f271[_0xcca2('0x54')]['id']));return db[_0xcca2('0x113')][_0xcca2('0x114')](function(_0x1a4c2d){return _0xea4bd3[_0xcca2('0x11b')](_0x326c50,{'transaction':_0x1a4c2d})[_0xcca2('0x14')](function(){return db[_0xcca2('0x110')]['findAll']({'where':{'id':{'$in':_0x326c50}}});})['then'](function(_0x108234){var _0x32263f=_[_0xcca2('0x3c')](_0x108234,function(_0x4fa3f8){return _0x4fa3f8[_0xcca2('0x120')]();});return Promise[_0xcca2('0x52')](_0x32263f);})['then'](function(_0x2be1a8){_0x1f1e26=_[_0xcca2('0x121')](_0x2be1a8);var _0x3abbf9=_['map'](_0x1f1e26,function(_0x4ade24){return _0x4ade24['removeAgent'](_0xea4bd3['id'],{'transaction':_0x1a4c2d});});return Promise[_0xcca2('0x52')](_0x3abbf9);})[_0xcca2('0x14')](function(){if(!_0xea4bd3[_0xcca2('0xb1')])return;var _0x2060f9=_[_0xcca2('0x30')](_0x1f1e26,function(_0x1d74a2){return _0x1d74a2[_0xcca2('0x116')](_0xcca2('0xa2'))===_0xcca2('0x117');});var _0x5f340a=_[_0xcca2('0x3c')](_0x2060f9,function(_0x1d6f9a){return db[_0xcca2('0xb4')][_0xcca2('0x29')]({'where':{'VoiceQueueId':_0x1d6f9a['id'],'UserId':_0xea4bd3['id']},'transaction':_0x1a4c2d});});return Promise['all'](_0x5f340a);})[_0xcca2('0x14')](function(){return db[_0xcca2('0x118')][_0xcca2('0x4a')]({'where':{'teamId':{'$in':_0x326c50}}});})['then'](function(_0x28dcbb){var _0x9ffe3b=_[_0xcca2('0x3c')](_0x28dcbb,function(_0x5593fb){return db['UserVoicePrefix'][_0xcca2('0x29')]({'where':{'UserId':_0xea4bd3['id'],'VoicePrefixId':_0x5593fb[_0xcca2('0x11a')]}},{'transaction':_0x1a4c2d});});return Promise[_0xcca2('0x52')](_0x9ffe3b);});});})['then'](function(){for(var _0x16aee2=0x0;_0x16aee2<_0x1f1e26[_0xcca2('0x4c')];_0x16aee2++){var _0x2891cd=_0x1f1e26[_0x16aee2]['getDataValue'](_0xcca2('0xa2'));var _0x57b423=_0x2891cd+'QueueId';socket['emit'](_0xcca2('0x2e')+_0x2891cd+_0xcca2('0xb8'),{'UserId':_0x576c5c,['queueField']:_0x1f1e26[_0x16aee2]['id']});}})[_0xcca2('0x14')](respondWithStatusCode(_0x12ebe6,null))[_0xcca2('0x53')](APIHandleError(_0x12ebe6));};exports[_0xcca2('0x122')]=function(_0x5c19b4,_0x17d45a){var _0x178c33={};var _0x2f13de={};var _0x5bfc7d;var _0x14cb6f;return db['User'][_0xcca2('0x9c')]({'where':{'id':_0x5c19b4[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x17d45a,null))[_0xcca2('0x14')](function(_0x2b1576){if(_0x2b1576){_0x5bfc7d=_0x2b1576;_0x2f13de[_0xcca2('0x55')]=_['keys'](db[_0xcca2('0x123')][_0xcca2('0x3b')]);_0x2f13de['query']=_[_0xcca2('0x57')](_0x5c19b4['query']);_0x2f13de[_0xcca2('0xcf')]=_[_0xcca2('0x58')](_0x2f13de[_0xcca2('0x55')],_0x2f13de[_0xcca2('0x45')]);_0x178c33['attributes']=_['intersection'](_0x2f13de['model'],qs[_0xcca2('0x59')](_0x5c19b4['query']['fields']));_0x178c33[_0xcca2('0x48')]=_0x178c33[_0xcca2('0x48')]['length']?_0x178c33['attributes']:_0x2f13de[_0xcca2('0x55')];_0x178c33[_0xcca2('0xd0')]=qs[_0xcca2('0xd1')](_0x5c19b4['query'][_0xcca2('0xd1')]);_0x178c33[_0xcca2('0x42')]=qs[_0xcca2('0xcf')](_[_0xcca2('0xd2')](_0x5c19b4[_0xcca2('0x45')],_0x2f13de[_0xcca2('0xcf')]));if(_0x5c19b4[_0xcca2('0x45')][_0xcca2('0x30')]){_0x178c33[_0xcca2('0x42')]=_[_0xcca2('0x5b')](_0x178c33[_0xcca2('0x42')],{'$or':_['map'](_0x178c33[_0xcca2('0x48')],function(_0x401621){var _0x304333={};_0x304333[_0x401621]={'$like':'%'+_0x5c19b4[_0xcca2('0x45')][_0xcca2('0x30')]+'%'};return _0x304333;})});}_0x178c33=_['merge']({},_0x178c33,_0x5c19b4[_0xcca2('0xd3')]);return _0x5bfc7d[_0xcca2('0x122')](_0x178c33);}})['then'](function(_0x2f2c4b){if(_0x2f2c4b){_0x14cb6f=_0x2f2c4b[_0xcca2('0x4c')];if(!_0x5c19b4[_0xcca2('0x45')][_0xcca2('0xd5')](_0xcca2('0xdb'))){_0x178c33['limit']=qs[_0xcca2('0x23')](_0x5c19b4['query'][_0xcca2('0x23')]);_0x178c33[_0xcca2('0x24')]=qs[_0xcca2('0x24')](_0x5c19b4['query'][_0xcca2('0x24')]);}return _0x5bfc7d['getLists'](_0x178c33);}})[_0xcca2('0x14')](function(_0x2d3302){if(_0x2d3302){return _0x2d3302?{'count':_0x14cb6f,'rows':_0x2d3302}:null;}})[_0xcca2('0x14')](respondWithResult(_0x17d45a,null))[_0xcca2('0x53')](handleError(_0x17d45a,null));};exports[_0xcca2('0x124')]=function(_0x6ca4aa,_0x21e58e){var _0x44fbf9={};var _0x6e6df6={};var _0x4f5e81;return db[_0xcca2('0x3a')][_0xcca2('0x9c')]({'where':{'id':_0x6ca4aa[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x21e58e,null))[_0xcca2('0x14')](function(_0x4255c1){if(_0x4255c1){_0x4f5e81=_0x4255c1;_0x6e6df6[_0xcca2('0x55')]=_['keys'](db[_0xcca2('0x3a')]['rawAttributes']);_0x6e6df6[_0xcca2('0x45')]=_[_0xcca2('0x57')](_0x6ca4aa['query']);_0x6e6df6['filters']=_[_0xcca2('0x58')](_0x6e6df6[_0xcca2('0x55')],_0x6e6df6[_0xcca2('0x45')]);_0x44fbf9[_0xcca2('0x48')]=_[_0xcca2('0x58')](_0x6e6df6['model'],qs[_0xcca2('0x59')](_0x6ca4aa['query'][_0xcca2('0x59')]));_0x44fbf9[_0xcca2('0x48')]=_0x44fbf9[_0xcca2('0x48')][_0xcca2('0x4c')]?_0x44fbf9[_0xcca2('0x48')]:_0x6e6df6[_0xcca2('0x55')];_0x44fbf9['order']=qs[_0xcca2('0xd1')](_0x6ca4aa[_0xcca2('0x45')][_0xcca2('0xd1')]);_0x44fbf9[_0xcca2('0x42')]=qs[_0xcca2('0xcf')](_[_0xcca2('0xd2')](_0x6ca4aa[_0xcca2('0x45')],_0x6e6df6['filters']));if(_0x6ca4aa[_0xcca2('0x45')]['filter']){_0x44fbf9[_0xcca2('0x42')]=_[_0xcca2('0x5b')](_0x44fbf9[_0xcca2('0x42')],{'$or':_[_0xcca2('0x3c')](_0x44fbf9[_0xcca2('0x48')],function(_0x4ab142){var _0x420dda={};_0x420dda[_0x4ab142]={'$like':'%'+_0x6ca4aa[_0xcca2('0x45')][_0xcca2('0x30')]+'%'};return _0x420dda;})});}_0x44fbf9[_0xcca2('0x55')]=db[_0xcca2('0x3a')];_0x44fbf9['as']='Agents';_0x44fbf9=_[_0xcca2('0x5b')]({},_0x44fbf9,_0x6ca4aa['options']);return _0x4f5e81[_0xcca2('0xf5')]({'include':[_0x44fbf9]});}})[_0xcca2('0x14')](function(_0x506b86){if(_0x506b86){var _0x1b69c5={},_0x123c69=[];for(var _0xc57656=0x0;_0xc57656<_0x506b86[_0xcca2('0x4c')];_0xc57656+=0x1){for(var _0x23dd9e=0x0,_0x5dc331;_0x23dd9e<_0x506b86[_0xc57656][_0xcca2('0x88')]['length'];_0x23dd9e+=0x1){_0x5dc331=_0x506b86[_0xc57656][_0xcca2('0x88')][_0x23dd9e]['get']({'plain':!![]});_0x1b69c5[_0x5dc331['id']]=_0x5dc331;}}_0x1b69c5=_[_0xcca2('0x125')](_0x1b69c5);for(var _0x352807=qs[_0xcca2('0x24')](_0x6ca4aa[_0xcca2('0x45')][_0xcca2('0x24')]);_0x352807<_0x1b69c5[_0xcca2('0x4c')]&&_0x123c69[_0xcca2('0x4c')]<qs['limit'](_0x6ca4aa['query']['limit']);_0x352807+=0x1){if(_0x1b69c5[_0x352807]){_0x123c69[_0xcca2('0x49')](_0x1b69c5[_0x352807]);}}return{'count':_0x1b69c5[_0xcca2('0x4c')],'rows':_0x123c69};}})[_0xcca2('0x14')](respondWithResult(_0x21e58e,null))['catch'](handleError(_0x21e58e,null));};exports[_0xcca2('0x29')]=function(_0x53a829,_0x3bdbc1){if(_0x53a829[_0xcca2('0x2e')]['id']==_0x53a829[_0xcca2('0x54')]['id']){return _0x3bdbc1[_0xcca2('0x1f')](0x1f4)['send']({'message':'You\x20can\x27t\x20delete\x20yourself'});}return db[_0xcca2('0x3a')][_0xcca2('0x34')]({'where':{'id':_0x53a829[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x3bdbc1,null))[_0xcca2('0x14')](removeEntity(_0x3bdbc1,null))[_0xcca2('0x53')](handleError(_0x3bdbc1,null));};exports[_0xcca2('0x126')]=function(_0xe1904b,_0x4fc872){return db['User'][_0xcca2('0x34')]({'where':{'id':_0xe1904b[_0xcca2('0x54')]['id']}})['then'](handleEntityNotFound(_0x4fc872,null))['then'](function(_0x3f5afd){if(_0x3f5afd){return _0x3f5afd['addChatInteractions'](_0xe1904b[_0xcca2('0x5e')][_0xcca2('0x61')],_[_0xcca2('0x62')](_0xe1904b['body'],[_0xcca2('0x61'),'id'])||{})[_0xcca2('0xaa')](function(){for(var _0x10fed4=0x0;_0x10fed4<_0xe1904b[_0xcca2('0x5e')][_0xcca2('0x61')][_0xcca2('0x4c')];_0x10fed4+=0x1){socket[_0xcca2('0xad')](_0xcca2('0x127'),{'ChatInteractionId':Number(_0xe1904b[_0xcca2('0x5e')][_0xcca2('0x61')][_0x10fed4]),'UserId':Number(_0xe1904b[_0xcca2('0x54')]['id'])});}return _0xe1904b[_0xcca2('0x5e')][_0xcca2('0x61')];});}})[_0xcca2('0x14')](respondWithResult(_0x4fc872,null))[_0xcca2('0x53')](handleError(_0x4fc872,null));};exports['removeChatInteractions']=function(_0x5678a5,_0x57d07d){return db['User'][_0xcca2('0x34')]({'where':{'id':_0x5678a5[_0xcca2('0x54')]['id']}})['then'](handleEntityNotFound(_0x57d07d,null))['then'](function(_0x57b6c1){if(_0x57b6c1){return _0x57b6c1[_0xcca2('0x128')](_0x5678a5[_0xcca2('0x45')][_0xcca2('0x61')])[_0xcca2('0x14')](function(){if(_[_0xcca2('0x11c')](_0x5678a5[_0xcca2('0x45')][_0xcca2('0x61')])){for(var _0x184ee2=0x0;_0x184ee2<_0x5678a5[_0xcca2('0x45')][_0xcca2('0x61')][_0xcca2('0x4c')];_0x184ee2+=0x1){socket[_0xcca2('0xad')](_0xcca2('0x129'),{'ChatInteractionId':Number(_0x5678a5[_0xcca2('0x45')][_0xcca2('0x61')][_0x184ee2]),'UserId':Number(_0x5678a5['params']['id'])});}}else{socket[_0xcca2('0xad')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x5678a5[_0xcca2('0x45')][_0xcca2('0x61')]),'UserId':Number(_0x5678a5[_0xcca2('0x54')]['id'])});}});}})['then'](respondWithStatusCode(_0x57d07d,null))['catch'](handleError(_0x57d07d,null));};exports[_0xcca2('0x12a')]=function(_0x1166d7,_0x456dac){return db[_0xcca2('0x3a')][_0xcca2('0x34')]({'where':{'id':_0x1166d7[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x456dac,null))['then'](function(_0x3afcbc){if(_0x3afcbc){return _0x3afcbc[_0xcca2('0x12a')](_0x1166d7[_0xcca2('0x5e')][_0xcca2('0x61')],_['omit'](_0x1166d7[_0xcca2('0x5e')],[_0xcca2('0x61'),'id'])||{})[_0xcca2('0xaa')](function(){for(var _0x238ec5=0x0;_0x238ec5<_0x1166d7[_0xcca2('0x5e')][_0xcca2('0x61')][_0xcca2('0x4c')];_0x238ec5+=0x1){socket['emit']('user_has_mail_interactions:save',{'MailInteractionId':Number(_0x1166d7[_0xcca2('0x5e')][_0xcca2('0x61')][_0x238ec5]),'UserId':Number(_0x1166d7['params']['id'])});}return _0x1166d7['body']['ids'];});}})[_0xcca2('0x14')](respondWithResult(_0x456dac,null))[_0xcca2('0x53')](handleError(_0x456dac,null));};exports['removeMailInteractions']=function(_0xfa60e2,_0x32ee7c){return db[_0xcca2('0x3a')][_0xcca2('0x34')]({'where':{'id':_0xfa60e2[_0xcca2('0x54')]['id']}})['then'](handleEntityNotFound(_0x32ee7c,null))[_0xcca2('0x14')](function(_0x2743a5){if(_0x2743a5){return _0x2743a5[_0xcca2('0x12b')](_0xfa60e2['query'][_0xcca2('0x61')])[_0xcca2('0x14')](function(){if(_[_0xcca2('0x11c')](_0xfa60e2[_0xcca2('0x45')][_0xcca2('0x61')])){for(var _0xfd51ab=0x0;_0xfd51ab<_0xfa60e2[_0xcca2('0x45')][_0xcca2('0x61')][_0xcca2('0x4c')];_0xfd51ab+=0x1){socket[_0xcca2('0xad')](_0xcca2('0x12c'),{'MailInteractionId':Number(_0xfa60e2[_0xcca2('0x45')][_0xcca2('0x61')][_0xfd51ab]),'UserId':Number(_0xfa60e2[_0xcca2('0x54')]['id'])});}}else{socket[_0xcca2('0xad')](_0xcca2('0x12c'),{'MailInteractionId':Number(_0xfa60e2[_0xcca2('0x45')][_0xcca2('0x61')]),'UserId':Number(_0xfa60e2[_0xcca2('0x54')]['id'])});}});}})[_0xcca2('0x14')](respondWithStatusCode(_0x32ee7c,null))['catch'](handleError(_0x32ee7c,null));};exports[_0xcca2('0x12d')]=function(_0x2fc4ad,_0x493268){return db['User']['find']({'where':{'id':_0x2fc4ad[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x493268,null))[_0xcca2('0x14')](function(_0x553d1b){if(_0x553d1b){return _0x553d1b[_0xcca2('0x12d')](_0x2fc4ad['body'][_0xcca2('0x61')],_[_0xcca2('0x62')](_0x2fc4ad[_0xcca2('0x5e')],[_0xcca2('0x61'),'id'])||{})[_0xcca2('0xaa')](function(){for(var _0x5dceae=0x0;_0x5dceae<_0x2fc4ad[_0xcca2('0x5e')]['ids']['length'];_0x5dceae+=0x1){socket[_0xcca2('0xad')]('user_has_fax_interactions:save',{'FaxInteractionId':Number(_0x2fc4ad['body'][_0xcca2('0x61')][_0x5dceae]),'UserId':Number(_0x2fc4ad['params']['id'])});}return _0x2fc4ad[_0xcca2('0x5e')][_0xcca2('0x61')];});}})[_0xcca2('0x14')](respondWithResult(_0x493268,null))[_0xcca2('0x53')](handleError(_0x493268,null));};exports['removeFaxInteractions']=function(_0x2cceb4,_0x46a713){return db['User'][_0xcca2('0x34')]({'where':{'id':_0x2cceb4[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x46a713,null))['then'](function(_0x15ec87){if(_0x15ec87){return _0x15ec87[_0xcca2('0x12e')](_0x2cceb4['query'][_0xcca2('0x61')])[_0xcca2('0x14')](function(){if(_[_0xcca2('0x11c')](_0x2cceb4['query'][_0xcca2('0x61')])){for(var _0x1363cb=0x0;_0x1363cb<_0x2cceb4[_0xcca2('0x45')]['ids'][_0xcca2('0x4c')];_0x1363cb+=0x1){socket[_0xcca2('0xad')](_0xcca2('0x12f'),{'FaxInteractionId':Number(_0x2cceb4['query']['ids'][_0x1363cb]),'UserId':Number(_0x2cceb4[_0xcca2('0x54')]['id'])});}}else{socket[_0xcca2('0xad')](_0xcca2('0x12f'),{'FaxInteractionId':Number(_0x2cceb4[_0xcca2('0x45')][_0xcca2('0x61')]),'UserId':Number(_0x2cceb4[_0xcca2('0x54')]['id'])});}});}})[_0xcca2('0x14')](respondWithStatusCode(_0x46a713,null))['catch'](handleError(_0x46a713,null));};exports[_0xcca2('0x130')]=function(_0x4ef38d,_0x482a5b){return db['User'][_0xcca2('0x34')]({'where':{'id':_0x4ef38d[_0xcca2('0x54')]['id']}})['then'](handleEntityNotFound(_0x482a5b,null))['then'](function(_0x33b588){if(_0x33b588){return _0x33b588[_0xcca2('0x130')](_0x4ef38d[_0xcca2('0x5e')]['ids'],_[_0xcca2('0x62')](_0x4ef38d[_0xcca2('0x5e')],['ids','id'])||{})[_0xcca2('0xaa')](function(){for(var _0x46a113=0x0;_0x46a113<_0x4ef38d[_0xcca2('0x5e')]['ids']['length'];_0x46a113+=0x1){socket[_0xcca2('0xad')](_0xcca2('0x131'),{'SmsInteractionId':Number(_0x4ef38d[_0xcca2('0x5e')][_0xcca2('0x61')][_0x46a113]),'UserId':Number(_0x4ef38d['params']['id'])});}return _0x4ef38d[_0xcca2('0x5e')]['ids'];});}})['then'](respondWithResult(_0x482a5b,null))[_0xcca2('0x53')](handleError(_0x482a5b,null));};exports[_0xcca2('0x132')]=function(_0x59368d,_0x1cd45e){return db[_0xcca2('0x3a')][_0xcca2('0x34')]({'where':{'id':_0x59368d[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x1cd45e,null))[_0xcca2('0x14')](function(_0x487ad6){if(_0x487ad6){return _0x487ad6[_0xcca2('0x132')](_0x59368d[_0xcca2('0x45')]['ids'])[_0xcca2('0x14')](function(){if(_[_0xcca2('0x11c')](_0x59368d[_0xcca2('0x45')][_0xcca2('0x61')])){for(var _0x23cbf5=0x0;_0x23cbf5<_0x59368d['query'][_0xcca2('0x61')]['length'];_0x23cbf5+=0x1){socket[_0xcca2('0xad')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x59368d['query'][_0xcca2('0x61')][_0x23cbf5]),'UserId':Number(_0x59368d[_0xcca2('0x54')]['id'])});}}else{socket[_0xcca2('0xad')](_0xcca2('0x133'),{'SmsInteractionId':Number(_0x59368d[_0xcca2('0x45')][_0xcca2('0x61')]),'UserId':Number(_0x59368d[_0xcca2('0x54')]['id'])});}});}})[_0xcca2('0x14')](respondWithStatusCode(_0x1cd45e,null))[_0xcca2('0x53')](handleError(_0x1cd45e,null));};exports['addOpenchannelInteractions']=function(_0x3f665c,_0x1fa241){return db[_0xcca2('0x3a')][_0xcca2('0x34')]({'where':{'id':_0x3f665c[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x1fa241,null))[_0xcca2('0x14')](function(_0x1598fd){if(_0x1598fd){return _0x1598fd[_0xcca2('0x134')](_0x3f665c['body'][_0xcca2('0x61')],_['omit'](_0x3f665c['body'],[_0xcca2('0x61'),'id'])||{})[_0xcca2('0xaa')](function(){for(var _0x55d01c=0x0;_0x55d01c<_0x3f665c[_0xcca2('0x5e')]['ids'][_0xcca2('0x4c')];_0x55d01c+=0x1){socket[_0xcca2('0xad')](_0xcca2('0x135'),{'OpenchannelInteractionId':Number(_0x3f665c[_0xcca2('0x5e')]['ids'][_0x55d01c]),'UserId':Number(_0x3f665c[_0xcca2('0x54')]['id'])});}return _0x3f665c[_0xcca2('0x5e')]['ids'];});}})[_0xcca2('0x14')](respondWithResult(_0x1fa241,null))['catch'](handleError(_0x1fa241,null));};exports[_0xcca2('0x136')]=function(_0x3b4895,_0x1c78cc){return db[_0xcca2('0x3a')][_0xcca2('0x34')]({'where':{'id':_0x3b4895[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x1c78cc,null))['then'](function(_0x247474){if(_0x247474){return _0x247474[_0xcca2('0x136')](_0x3b4895[_0xcca2('0x45')]['ids'])[_0xcca2('0x14')](function(){if(_['isArray'](_0x3b4895[_0xcca2('0x45')]['ids'])){for(var _0xf753c1=0x0;_0xf753c1<_0x3b4895[_0xcca2('0x45')][_0xcca2('0x61')][_0xcca2('0x4c')];_0xf753c1+=0x1){socket[_0xcca2('0xad')](_0xcca2('0x137'),{'OpenchannelInteractionId':Number(_0x3b4895['query'][_0xcca2('0x61')][_0xf753c1]),'UserId':Number(_0x3b4895[_0xcca2('0x54')]['id'])});}}else{socket[_0xcca2('0xad')](_0xcca2('0x137'),{'OpenchannelInteractionId':Number(_0x3b4895[_0xcca2('0x45')][_0xcca2('0x61')]),'UserId':Number(_0x3b4895[_0xcca2('0x54')]['id'])});}});}})[_0xcca2('0x14')](respondWithStatusCode(_0x1c78cc,null))[_0xcca2('0x53')](handleError(_0x1c78cc,null));};exports[_0xcca2('0x138')]=function(_0x31968b,_0x4f1cd7){return db[_0xcca2('0x3a')][_0xcca2('0x34')]({'where':{'id':_0x31968b['params']['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x4f1cd7,null))[_0xcca2('0x14')](function(_0x2c3a57){if(_0x2c3a57){return _0x2c3a57[_0xcca2('0x138')](_0x31968b[_0xcca2('0x5e')]['ids'],_[_0xcca2('0x62')](_0x31968b[_0xcca2('0x5e')],[_0xcca2('0x61'),'id'])||{})[_0xcca2('0xaa')](function(){for(var _0x25abea=0x0;_0x25abea<_0x31968b[_0xcca2('0x5e')][_0xcca2('0x61')][_0xcca2('0x4c')];_0x25abea+=0x1){socket[_0xcca2('0xad')]('user_has_whatsapp_interactions:save',{'WhatsappInteractionId':Number(_0x31968b[_0xcca2('0x5e')]['ids'][_0x25abea]),'UserId':Number(_0x31968b[_0xcca2('0x54')]['id'])});}return _0x31968b[_0xcca2('0x5e')][_0xcca2('0x61')];});}})['then'](respondWithResult(_0x4f1cd7,null))[_0xcca2('0x53')](handleError(_0x4f1cd7,null));};exports[_0xcca2('0x139')]=function(_0x54615e,_0x4de74b){return db['User'][_0xcca2('0x34')]({'where':{'id':_0x54615e['params']['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x4de74b,null))['then'](function(_0x1e7afe){if(_0x1e7afe){return _0x1e7afe[_0xcca2('0x139')](_0x54615e[_0xcca2('0x45')][_0xcca2('0x61')]);}})[_0xcca2('0x14')](respondWithStatusCode(_0x4de74b,null))[_0xcca2('0x53')](handleError(_0x4de74b,null));};exports['getVoicePrefixes']=function(_0x1c21bc,_0x127245){var _0x3cb7d7={};var _0x14c139={};var _0x4dfe6d;var _0x2d1f1b;return db[_0xcca2('0x3a')][_0xcca2('0x9c')]({'where':{'id':_0x1c21bc[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x127245,null))[_0xcca2('0x14')](function(_0x2deccf){if(_0x2deccf){_0x4dfe6d=_0x2deccf;_0x14c139['model']=_[_0xcca2('0x57')](db['VoicePrefix'][_0xcca2('0x3b')]);_0x14c139[_0xcca2('0x45')]=_[_0xcca2('0x57')](_0x1c21bc['query']);_0x14c139[_0xcca2('0xcf')]=_['intersection'](_0x14c139['model'],_0x14c139[_0xcca2('0x45')]);_0x3cb7d7['attributes']=_[_0xcca2('0x58')](_0x14c139[_0xcca2('0x55')],qs[_0xcca2('0x59')](_0x1c21bc[_0xcca2('0x45')][_0xcca2('0x59')]));_0x3cb7d7['attributes']=_0x3cb7d7['attributes'][_0xcca2('0x4c')]?_0x3cb7d7['attributes']:_0x14c139[_0xcca2('0x55')];_0x3cb7d7[_0xcca2('0xd0')]=qs[_0xcca2('0xd1')](_0x1c21bc[_0xcca2('0x45')][_0xcca2('0xd1')]);_0x3cb7d7[_0xcca2('0x42')]=qs[_0xcca2('0xcf')](_[_0xcca2('0xd2')](_0x1c21bc[_0xcca2('0x45')],_0x14c139[_0xcca2('0xcf')]));if(_0x1c21bc['query'][_0xcca2('0x30')]){_0x3cb7d7[_0xcca2('0x42')]=_[_0xcca2('0x5b')](_0x3cb7d7[_0xcca2('0x42')],{'$or':_[_0xcca2('0x3c')](_0x3cb7d7['attributes'],function(_0x1423fb){var _0x245d33={};_0x245d33[_0x1423fb]={'$like':'%'+_0x1c21bc['query'][_0xcca2('0x30')]+'%'};return _0x245d33;})});}_0x3cb7d7=_[_0xcca2('0x5b')]({},_0x3cb7d7,_0x1c21bc['options']);return _0x4dfe6d[_0xcca2('0x13a')](_0x3cb7d7);}})[_0xcca2('0x14')](function(_0x1d31f2){if(_0x1d31f2){_0x2d1f1b=_0x1d31f2[_0xcca2('0x4c')];if(!_0x1c21bc[_0xcca2('0x45')]['hasOwnProperty']('nolimit')){_0x3cb7d7[_0xcca2('0x23')]=qs['limit'](_0x1c21bc[_0xcca2('0x45')][_0xcca2('0x23')]);_0x3cb7d7[_0xcca2('0x24')]=qs['offset'](_0x1c21bc[_0xcca2('0x45')][_0xcca2('0x24')]);}return _0x4dfe6d['getVoicePrefixes'](_0x3cb7d7);}})[_0xcca2('0x14')](function(_0x14d824){if(_0x14d824){return _0x14d824?{'count':_0x2d1f1b,'rows':_0x14d824}:null;}})[_0xcca2('0x14')](respondWithResult(_0x127245,null))[_0xcca2('0x53')](handleError(_0x127245,null));};exports[_0xcca2('0x13b')]=function(_0x32c54c,_0x4d7938){var _0x56c80b={};var _0x5c7633={};var _0x41b8a2;var _0x1279f6;return db[_0xcca2('0x3a')][_0xcca2('0x9c')]({'where':{'id':_0x32c54c['params']['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x4d7938,null))[_0xcca2('0x14')](function(_0x59ea7f){if(_0x59ea7f){_0x41b8a2=_0x59ea7f;_0x5c7633[_0xcca2('0x55')]=_[_0xcca2('0x57')](db['FaxAccount'][_0xcca2('0x3b')]);_0x5c7633['query']=_['keys'](_0x32c54c[_0xcca2('0x45')]);_0x5c7633[_0xcca2('0xcf')]=_[_0xcca2('0x58')](_0x5c7633[_0xcca2('0x55')],_0x5c7633[_0xcca2('0x45')]);_0x56c80b[_0xcca2('0x48')]=_[_0xcca2('0x58')](_0x5c7633[_0xcca2('0x55')],qs['fields'](_0x32c54c[_0xcca2('0x45')][_0xcca2('0x59')]));_0x56c80b['attributes']=_0x56c80b[_0xcca2('0x48')]['length']?_0x56c80b[_0xcca2('0x48')]:_0x5c7633[_0xcca2('0x55')];_0x56c80b['order']=qs[_0xcca2('0xd1')](_0x32c54c[_0xcca2('0x45')][_0xcca2('0xd1')]);_0x56c80b['where']=qs['filters'](_[_0xcca2('0xd2')](_0x32c54c[_0xcca2('0x45')],_0x5c7633[_0xcca2('0xcf')]));if(_0x32c54c[_0xcca2('0x45')][_0xcca2('0x30')]){_0x56c80b[_0xcca2('0x42')]=_['merge'](_0x56c80b[_0xcca2('0x42')],{'$or':_[_0xcca2('0x3c')](_0x56c80b['attributes'],function(_0xb2e249){var _0x5f2d39={};_0x5f2d39[_0xb2e249]={'$like':'%'+_0x32c54c[_0xcca2('0x45')][_0xcca2('0x30')]+'%'};return _0x5f2d39;})});}_0x56c80b=_[_0xcca2('0x5b')]({},_0x56c80b,_0x32c54c[_0xcca2('0xd3')]);return _0x41b8a2[_0xcca2('0x13b')](_0x56c80b);}})['then'](function(_0x341526){if(_0x341526){_0x1279f6=_0x341526['length'];if(!_0x32c54c[_0xcca2('0x45')][_0xcca2('0xd5')]('nolimit')){_0x56c80b[_0xcca2('0x23')]=qs[_0xcca2('0x23')](_0x32c54c['query'][_0xcca2('0x23')]);_0x56c80b[_0xcca2('0x24')]=qs[_0xcca2('0x24')](_0x32c54c[_0xcca2('0x45')][_0xcca2('0x24')]);}return _0x41b8a2[_0xcca2('0x13b')](_0x56c80b);}})['then'](function(_0x59617f){if(_0x59617f){return _0x59617f?{'count':_0x1279f6,'rows':_0x59617f}:null;}})[_0xcca2('0x14')](respondWithResult(_0x4d7938,null))['catch'](handleError(_0x4d7938,null));};exports['addFaxAccounts']=function(_0x410759,_0x5653c4){return db[_0xcca2('0x3a')][_0xcca2('0x34')]({'where':{'id':_0x410759[_0xcca2('0x54')]['id']}})['then'](handleEntityNotFound(_0x5653c4,null))[_0xcca2('0x14')](function(_0x144368){if(_0x144368){return _0x144368['addFaxAccounts'](_0x410759[_0xcca2('0x5e')][_0xcca2('0x61')],_[_0xcca2('0x62')](_0x410759['body'],[_0xcca2('0x61'),'id'])||{});}})[_0xcca2('0x14')](respondWithResult(_0x5653c4,null))[_0xcca2('0x53')](handleError(_0x5653c4,null));};exports['removeFaxAccounts']=function(_0x540a25,_0x555ffb){return db[_0xcca2('0x3a')][_0xcca2('0x34')]({'where':{'id':_0x540a25[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x555ffb,null))['then'](function(_0x3cfa11){if(_0x3cfa11){return _0x3cfa11[_0xcca2('0x13c')](_0x540a25['query'][_0xcca2('0x61')]);}})[_0xcca2('0x14')](respondWithStatusCode(_0x555ffb,null))[_0xcca2('0x53')](handleError(_0x555ffb,null));};exports[_0xcca2('0x13d')]=function(_0x52180a,_0x3d5261){var _0x5dac36={};var _0x1363d5={};var _0x1093f3;var _0x499105;return db[_0xcca2('0x3a')][_0xcca2('0x9c')]({'where':{'id':_0x52180a[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x3d5261,null))[_0xcca2('0x14')](function(_0xe85850){if(_0xe85850){_0x1093f3=_0xe85850;_0x1363d5[_0xcca2('0x55')]=_[_0xcca2('0x57')](db[_0xcca2('0x13e')][_0xcca2('0x3b')]);_0x1363d5[_0xcca2('0x45')]=_[_0xcca2('0x57')](_0x52180a['query']);_0x1363d5[_0xcca2('0xcf')]=_['intersection'](_0x1363d5[_0xcca2('0x55')],_0x1363d5[_0xcca2('0x45')]);_0x5dac36[_0xcca2('0x48')]=_[_0xcca2('0x58')](_0x1363d5['model'],qs[_0xcca2('0x59')](_0x52180a['query']['fields']));_0x5dac36[_0xcca2('0x48')]=_0x5dac36[_0xcca2('0x48')]['length']?_0x5dac36[_0xcca2('0x48')]:_0x1363d5[_0xcca2('0x55')];_0x5dac36[_0xcca2('0xd0')]=qs[_0xcca2('0xd1')](_0x52180a['query'][_0xcca2('0xd1')]);_0x5dac36[_0xcca2('0x42')]=qs[_0xcca2('0xcf')](_[_0xcca2('0xd2')](_0x52180a[_0xcca2('0x45')],_0x1363d5[_0xcca2('0xcf')]));if(_0x52180a[_0xcca2('0x45')][_0xcca2('0x30')]){_0x5dac36['where']=_[_0xcca2('0x5b')](_0x5dac36[_0xcca2('0x42')],{'$or':_[_0xcca2('0x3c')](_0x5dac36[_0xcca2('0x48')],function(_0x23c25f){var _0x4261a4={};_0x4261a4[_0x23c25f]={'$like':'%'+_0x52180a[_0xcca2('0x45')][_0xcca2('0x30')]+'%'};return _0x4261a4;})});}_0x5dac36=_[_0xcca2('0x5b')]({},_0x5dac36,_0x52180a['options']);return _0x1093f3[_0xcca2('0x13d')](_0x5dac36);}})['then'](function(_0x2a4a7d){if(_0x2a4a7d){_0x499105=_0x2a4a7d[_0xcca2('0x4c')];if(!_0x52180a[_0xcca2('0x45')]['hasOwnProperty'](_0xcca2('0xdb'))){_0x5dac36[_0xcca2('0x23')]=qs[_0xcca2('0x23')](_0x52180a[_0xcca2('0x45')][_0xcca2('0x23')]);_0x5dac36[_0xcca2('0x24')]=qs[_0xcca2('0x24')](_0x52180a[_0xcca2('0x45')][_0xcca2('0x24')]);}return _0x1093f3[_0xcca2('0x13d')](_0x5dac36);}})[_0xcca2('0x14')](function(_0x54e5cd){if(_0x54e5cd){return _0x54e5cd?{'count':_0x499105,'rows':_0x54e5cd}:null;}})[_0xcca2('0x14')](respondWithResult(_0x3d5261,null))[_0xcca2('0x53')](handleError(_0x3d5261,null));};exports[_0xcca2('0x13f')]=function(_0x1a2d1b,_0x167813){return db['User'][_0xcca2('0x34')]({'where':{'id':_0x1a2d1b[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x167813,null))[_0xcca2('0x14')](function(_0x3757fc){if(_0x3757fc){return _0x3757fc[_0xcca2('0x13f')](_0x1a2d1b[_0xcca2('0x5e')]['ids'],_['omit'](_0x1a2d1b[_0xcca2('0x5e')],[_0xcca2('0x61'),'id'])||{});}})[_0xcca2('0x14')](respondWithResult(_0x167813,null))['catch'](handleError(_0x167813,null));};exports['removeMailAccounts']=function(_0x622111,_0x4e2b4f){return db['User']['find']({'where':{'id':_0x622111[_0xcca2('0x54')]['id']}})['then'](handleEntityNotFound(_0x4e2b4f,null))[_0xcca2('0x14')](function(_0x1d3f5d){if(_0x1d3f5d){return _0x1d3f5d[_0xcca2('0x140')](_0x622111[_0xcca2('0x45')][_0xcca2('0x61')]);}})[_0xcca2('0x14')](respondWithStatusCode(_0x4e2b4f,null))['catch'](handleError(_0x4e2b4f,null));};exports[_0xcca2('0x141')]=function(_0x2944c9,_0x2ea053){var _0x3fb54d={};var _0x1cecb9={};var _0x5f2318;var _0x56479c;return db['User'][_0xcca2('0x9c')]({'where':{'id':_0x2944c9[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x2ea053,null))[_0xcca2('0x14')](function(_0x569951){if(_0x569951){_0x5f2318=_0x569951;_0x1cecb9[_0xcca2('0x55')]=_[_0xcca2('0x57')](db[_0xcca2('0x142')][_0xcca2('0x3b')]);_0x1cecb9[_0xcca2('0x45')]=_['keys'](_0x2944c9[_0xcca2('0x45')]);_0x1cecb9[_0xcca2('0xcf')]=_[_0xcca2('0x58')](_0x1cecb9['model'],_0x1cecb9[_0xcca2('0x45')]);_0x3fb54d[_0xcca2('0x48')]=_[_0xcca2('0x58')](_0x1cecb9[_0xcca2('0x55')],qs[_0xcca2('0x59')](_0x2944c9['query']['fields']));_0x3fb54d[_0xcca2('0x48')]=_0x3fb54d[_0xcca2('0x48')][_0xcca2('0x4c')]?_0x3fb54d[_0xcca2('0x48')]:_0x1cecb9[_0xcca2('0x55')];_0x3fb54d[_0xcca2('0xd0')]=qs[_0xcca2('0xd1')](_0x2944c9[_0xcca2('0x45')][_0xcca2('0xd1')]);_0x3fb54d[_0xcca2('0x42')]=qs[_0xcca2('0xcf')](_[_0xcca2('0xd2')](_0x2944c9[_0xcca2('0x45')],_0x1cecb9['filters']));if(_0x2944c9[_0xcca2('0x45')][_0xcca2('0x30')]){_0x3fb54d['where']=_[_0xcca2('0x5b')](_0x3fb54d[_0xcca2('0x42')],{'$or':_[_0xcca2('0x3c')](_0x3fb54d[_0xcca2('0x48')],function(_0xa0255b){var _0xcc5d6d={};_0xcc5d6d[_0xa0255b]={'$like':'%'+_0x2944c9[_0xcca2('0x45')][_0xcca2('0x30')]+'%'};return _0xcc5d6d;})});}_0x3fb54d=_['merge']({},_0x3fb54d,_0x2944c9[_0xcca2('0xd3')]);return _0x5f2318[_0xcca2('0x141')](_0x3fb54d);}})[_0xcca2('0x14')](function(_0x166f3d){if(_0x166f3d){_0x56479c=_0x166f3d[_0xcca2('0x4c')];if(!_0x2944c9[_0xcca2('0x45')][_0xcca2('0xd5')]('nolimit')){_0x3fb54d[_0xcca2('0x23')]=qs['limit'](_0x2944c9[_0xcca2('0x45')][_0xcca2('0x23')]);_0x3fb54d[_0xcca2('0x24')]=qs['offset'](_0x2944c9[_0xcca2('0x45')][_0xcca2('0x24')]);}return _0x5f2318[_0xcca2('0x141')](_0x3fb54d);}})[_0xcca2('0x14')](function(_0x47d1e8){if(_0x47d1e8){return _0x47d1e8?{'count':_0x56479c,'rows':_0x47d1e8}:null;}})['then'](respondWithResult(_0x2ea053,null))[_0xcca2('0x53')](handleError(_0x2ea053,null));};exports['addOpenchannelAccounts']=function(_0x388673,_0x1486a5){return db[_0xcca2('0x3a')]['find']({'where':{'id':_0x388673[_0xcca2('0x54')]['id']}})['then'](handleEntityNotFound(_0x1486a5,null))[_0xcca2('0x14')](function(_0x3cd08a){if(_0x3cd08a){return _0x3cd08a[_0xcca2('0x143')](_0x388673['body']['ids'],_[_0xcca2('0x62')](_0x388673['body'],[_0xcca2('0x61'),'id'])||{});}})['then'](respondWithResult(_0x1486a5,null))[_0xcca2('0x53')](handleError(_0x1486a5,null));};exports[_0xcca2('0x144')]=function(_0x5a1122,_0x178117){return db['User'][_0xcca2('0x34')]({'where':{'id':_0x5a1122[_0xcca2('0x54')]['id']}})['then'](handleEntityNotFound(_0x178117,null))['then'](function(_0x1cc0fa){if(_0x1cc0fa){return _0x1cc0fa['removeOpenchannelAccounts'](_0x5a1122[_0xcca2('0x45')][_0xcca2('0x61')]);}})['then'](respondWithStatusCode(_0x178117,null))[_0xcca2('0x53')](handleError(_0x178117,null));};exports[_0xcca2('0x145')]=function(_0x163b4c,_0x148adb){var _0x6f9591={};var _0x3e8270={};var _0x5e7bc9;var _0x2685b7;return db[_0xcca2('0x3a')]['findOne']({'where':{'id':_0x163b4c['params']['id']}})['then'](handleEntityNotFound(_0x148adb,null))[_0xcca2('0x14')](function(_0x2fed2c){if(_0x2fed2c){_0x5e7bc9=_0x2fed2c;_0x3e8270[_0xcca2('0x55')]=_[_0xcca2('0x57')](db[_0xcca2('0x146')][_0xcca2('0x3b')]);_0x3e8270['query']=_['keys'](_0x163b4c[_0xcca2('0x45')]);_0x3e8270[_0xcca2('0xcf')]=_[_0xcca2('0x58')](_0x3e8270[_0xcca2('0x55')],_0x3e8270[_0xcca2('0x45')]);_0x6f9591['attributes']=_[_0xcca2('0x58')](_0x3e8270[_0xcca2('0x55')],qs[_0xcca2('0x59')](_0x163b4c[_0xcca2('0x45')][_0xcca2('0x59')]));_0x6f9591['attributes']=_0x6f9591['attributes'][_0xcca2('0x4c')]?_0x6f9591[_0xcca2('0x48')]:_0x3e8270[_0xcca2('0x55')];_0x6f9591[_0xcca2('0xd0')]=qs[_0xcca2('0xd1')](_0x163b4c[_0xcca2('0x45')][_0xcca2('0xd1')]);_0x6f9591[_0xcca2('0x42')]=qs[_0xcca2('0xcf')](_['pick'](_0x163b4c[_0xcca2('0x45')],_0x3e8270[_0xcca2('0xcf')]));if(_0x163b4c[_0xcca2('0x45')][_0xcca2('0x30')]){_0x6f9591[_0xcca2('0x42')]=_['merge'](_0x6f9591['where'],{'$or':_[_0xcca2('0x3c')](_0x6f9591[_0xcca2('0x48')],function(_0x3a1c79){var _0x1dd444={};_0x1dd444[_0x3a1c79]={'$like':'%'+_0x163b4c[_0xcca2('0x45')]['filter']+'%'};return _0x1dd444;})});}_0x6f9591=_[_0xcca2('0x5b')]({},_0x6f9591,_0x163b4c[_0xcca2('0xd3')]);return _0x5e7bc9[_0xcca2('0x145')](_0x6f9591);}})[_0xcca2('0x14')](function(_0x55b5da){if(_0x55b5da){_0x2685b7=_0x55b5da[_0xcca2('0x4c')];if(!_0x163b4c[_0xcca2('0x45')][_0xcca2('0xd5')]('nolimit')){_0x6f9591[_0xcca2('0x23')]=qs[_0xcca2('0x23')](_0x163b4c[_0xcca2('0x45')][_0xcca2('0x23')]);_0x6f9591['offset']=qs['offset'](_0x163b4c[_0xcca2('0x45')]['offset']);}return _0x5e7bc9[_0xcca2('0x145')](_0x6f9591);}})['then'](function(_0x63badd){if(_0x63badd){return _0x63badd?{'count':_0x2685b7,'rows':_0x63badd}:null;}})[_0xcca2('0x14')](respondWithResult(_0x148adb,null))['catch'](handleError(_0x148adb,null));};exports[_0xcca2('0x147')]=function(_0x58b28b,_0x54c617){return db[_0xcca2('0x3a')]['find']({'where':{'id':_0x58b28b[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x54c617,null))[_0xcca2('0x14')](function(_0x220e96){if(_0x220e96){return _0x220e96['addSmsAccounts'](_0x58b28b[_0xcca2('0x5e')][_0xcca2('0x61')],_['omit'](_0x58b28b['body'],[_0xcca2('0x61'),'id'])||{});}})['then'](respondWithResult(_0x54c617,null))[_0xcca2('0x53')](handleError(_0x54c617,null));};exports[_0xcca2('0x148')]=function(_0x48952c,_0x4e7c3a){return db[_0xcca2('0x3a')]['find']({'where':{'id':_0x48952c[_0xcca2('0x54')]['id']}})['then'](handleEntityNotFound(_0x4e7c3a,null))[_0xcca2('0x14')](function(_0x5d0869){if(_0x5d0869){return _0x5d0869[_0xcca2('0x148')](_0x48952c['query'][_0xcca2('0x61')]);}})[_0xcca2('0x14')](respondWithStatusCode(_0x4e7c3a,null))[_0xcca2('0x53')](handleError(_0x4e7c3a,null));};exports['getChatWebsites']=function(_0x12f33e,_0x872b36){var _0x2a4f7f={};var _0x461d8a={};var _0x5ed5a8;var _0x24e30b;return db[_0xcca2('0x3a')][_0xcca2('0x9c')]({'where':{'id':_0x12f33e['params']['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x872b36,null))[_0xcca2('0x14')](function(_0x179b67){if(_0x179b67){_0x5ed5a8=_0x179b67;_0x461d8a['model']=_[_0xcca2('0x57')](db[_0xcca2('0x149')][_0xcca2('0x3b')]);_0x461d8a[_0xcca2('0x45')]=_[_0xcca2('0x57')](_0x12f33e[_0xcca2('0x45')]);_0x461d8a[_0xcca2('0xcf')]=_['intersection'](_0x461d8a[_0xcca2('0x55')],_0x461d8a[_0xcca2('0x45')]);_0x2a4f7f[_0xcca2('0x48')]=_[_0xcca2('0x58')](_0x461d8a[_0xcca2('0x55')],qs['fields'](_0x12f33e[_0xcca2('0x45')][_0xcca2('0x59')]));_0x2a4f7f['attributes']=_0x2a4f7f[_0xcca2('0x48')][_0xcca2('0x4c')]?_0x2a4f7f[_0xcca2('0x48')]:_0x461d8a[_0xcca2('0x55')];_0x2a4f7f[_0xcca2('0xd0')]=qs['sort'](_0x12f33e['query'][_0xcca2('0xd1')]);_0x2a4f7f[_0xcca2('0x42')]=qs[_0xcca2('0xcf')](_[_0xcca2('0xd2')](_0x12f33e[_0xcca2('0x45')],_0x461d8a[_0xcca2('0xcf')]));if(_0x12f33e['query'][_0xcca2('0x30')]){_0x2a4f7f[_0xcca2('0x42')]=_[_0xcca2('0x5b')](_0x2a4f7f['where'],{'$or':_['map'](_0x2a4f7f['attributes'],function(_0x1d04be){var _0x30ddf8={};_0x30ddf8[_0x1d04be]={'$like':'%'+_0x12f33e[_0xcca2('0x45')][_0xcca2('0x30')]+'%'};return _0x30ddf8;})});}_0x2a4f7f=_[_0xcca2('0x5b')]({},_0x2a4f7f,_0x12f33e['options']);return _0x5ed5a8[_0xcca2('0x14a')](_0x2a4f7f);}})[_0xcca2('0x14')](function(_0x2da168){if(_0x2da168){_0x24e30b=_0x2da168[_0xcca2('0x4c')];if(!_0x12f33e['query'][_0xcca2('0xd5')]('nolimit')){_0x2a4f7f[_0xcca2('0x23')]=qs[_0xcca2('0x23')](_0x12f33e[_0xcca2('0x45')][_0xcca2('0x23')]);_0x2a4f7f[_0xcca2('0x24')]=qs[_0xcca2('0x24')](_0x12f33e[_0xcca2('0x45')][_0xcca2('0x24')]);}return _0x5ed5a8['getChatWebsites'](_0x2a4f7f);}})[_0xcca2('0x14')](function(_0x3d35f2){if(_0x3d35f2){return _0x3d35f2?{'count':_0x24e30b,'rows':_0x3d35f2}:null;}})[_0xcca2('0x14')](respondWithResult(_0x872b36,null))['catch'](handleError(_0x872b36,null));};exports[_0xcca2('0x14b')]=function(_0x4ea6d5,_0x2f1702){return db[_0xcca2('0x3a')]['find']({'where':{'id':_0x4ea6d5[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x2f1702,null))[_0xcca2('0x14')](function(_0x1396bf){if(_0x1396bf){return _0x1396bf[_0xcca2('0x14b')](_0x4ea6d5[_0xcca2('0x5e')][_0xcca2('0x61')],_[_0xcca2('0x62')](_0x4ea6d5[_0xcca2('0x5e')],[_0xcca2('0x61'),'id'])||{});}})[_0xcca2('0x14')](respondWithResult(_0x2f1702,null))[_0xcca2('0x53')](handleError(_0x2f1702,null));};exports[_0xcca2('0x14c')]=function(_0x10e5ad,_0x40c7b1){return db['User'][_0xcca2('0x34')]({'where':{'id':_0x10e5ad[_0xcca2('0x54')]['id']}})['then'](handleEntityNotFound(_0x40c7b1,null))[_0xcca2('0x14')](function(_0x2eaa8c){if(_0x2eaa8c){return _0x2eaa8c[_0xcca2('0x14c')](_0x10e5ad[_0xcca2('0x45')][_0xcca2('0x61')]);}})[_0xcca2('0x14')](respondWithStatusCode(_0x40c7b1,null))[_0xcca2('0x53')](handleError(_0x40c7b1,null));};exports['getWhatsappAccounts']=function(_0x11ec86,_0xab5cf2){var _0x274e17={};var _0x432daa={};var _0x16386d;var _0x33652e;return db[_0xcca2('0x3a')][_0xcca2('0x9c')]({'where':{'id':_0x11ec86[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0xab5cf2,null))[_0xcca2('0x14')](function(_0x61f4de){if(_0x61f4de){_0x16386d=_0x61f4de;_0x432daa[_0xcca2('0x55')]=_[_0xcca2('0x57')](db[_0xcca2('0x14d')][_0xcca2('0x3b')]);_0x432daa[_0xcca2('0x45')]=_['keys'](_0x11ec86[_0xcca2('0x45')]);_0x432daa[_0xcca2('0xcf')]=_['intersection'](_0x432daa[_0xcca2('0x55')],_0x432daa[_0xcca2('0x45')]);_0x274e17[_0xcca2('0x48')]=_[_0xcca2('0x58')](_0x432daa['model'],qs[_0xcca2('0x59')](_0x11ec86[_0xcca2('0x45')][_0xcca2('0x59')]));_0x274e17[_0xcca2('0x48')]=_0x274e17[_0xcca2('0x48')]['length']?_0x274e17['attributes']:_0x432daa[_0xcca2('0x55')];_0x274e17[_0xcca2('0xd0')]=qs[_0xcca2('0xd1')](_0x11ec86['query']['sort']);_0x274e17[_0xcca2('0x42')]=qs[_0xcca2('0xcf')](_[_0xcca2('0xd2')](_0x11ec86[_0xcca2('0x45')],_0x432daa[_0xcca2('0xcf')]));if(_0x11ec86[_0xcca2('0x45')][_0xcca2('0x30')]){_0x274e17[_0xcca2('0x42')]=_[_0xcca2('0x5b')](_0x274e17[_0xcca2('0x42')],{'$or':_[_0xcca2('0x3c')](_0x274e17['attributes'],function(_0x3eb45e){var _0x57a9ba={};_0x57a9ba[_0x3eb45e]={'$like':'%'+_0x11ec86['query'][_0xcca2('0x30')]+'%'};return _0x57a9ba;})});}_0x274e17=_[_0xcca2('0x5b')]({},_0x274e17,_0x11ec86[_0xcca2('0xd3')]);return _0x16386d['getWhatsappAccounts'](_0x274e17);}})[_0xcca2('0x14')](function(_0x3452c5){if(_0x3452c5){_0x33652e=_0x3452c5[_0xcca2('0x4c')];if(!_0x11ec86[_0xcca2('0x45')]['hasOwnProperty'](_0xcca2('0xdb'))){_0x274e17[_0xcca2('0x23')]=qs[_0xcca2('0x23')](_0x11ec86['query'][_0xcca2('0x23')]);_0x274e17['offset']=qs[_0xcca2('0x24')](_0x11ec86[_0xcca2('0x45')][_0xcca2('0x24')]);}return _0x16386d[_0xcca2('0x14e')](_0x274e17);}})[_0xcca2('0x14')](function(_0x8b0e3){if(_0x8b0e3){return _0x8b0e3?{'count':_0x33652e,'rows':_0x8b0e3}:null;}})[_0xcca2('0x14')](respondWithResult(_0xab5cf2,null))[_0xcca2('0x53')](handleError(_0xab5cf2,null));};exports[_0xcca2('0x14f')]=function(_0x3c59e2,_0x561070){return db['User']['find']({'where':{'id':_0x3c59e2['params']['id']}})['then'](handleEntityNotFound(_0x561070,null))['then'](function(_0x1757c4){if(_0x1757c4){return _0x1757c4['addWhatsappAccounts'](_0x3c59e2['body'][_0xcca2('0x61')],_[_0xcca2('0x62')](_0x3c59e2[_0xcca2('0x5e')],[_0xcca2('0x61'),'id'])||{});}})[_0xcca2('0x14')](respondWithResult(_0x561070,null))[_0xcca2('0x53')](handleError(_0x561070,null));};exports['removeWhatsappAccounts']=function(_0x1f9dc6,_0x10b6dd){return db['User']['find']({'where':{'id':_0x1f9dc6['params']['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x10b6dd,null))['then'](function(_0x4e0576){if(_0x4e0576){return _0x4e0576['removeWhatsappAccounts'](_0x1f9dc6['query'][_0xcca2('0x61')]);}})[_0xcca2('0x14')](respondWithStatusCode(_0x10b6dd,null))[_0xcca2('0x53')](handleError(_0x10b6dd,null));};exports['getSquareProjects']=function(_0xe26f8e,_0x2245b9){var _0x3d01f5={};var _0x2bb83a={};var _0x2dac35;var _0x4d0e40;return db['User'][_0xcca2('0x9c')]({'where':{'id':_0xe26f8e['params']['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x2245b9,null))[_0xcca2('0x14')](function(_0x283d87){if(_0x283d87){_0x2dac35=_0x283d87;_0x2bb83a[_0xcca2('0x55')]=_[_0xcca2('0x57')](db[_0xcca2('0x150')][_0xcca2('0x3b')]);_0x2bb83a[_0xcca2('0x45')]=_[_0xcca2('0x57')](_0xe26f8e[_0xcca2('0x45')]);_0x2bb83a[_0xcca2('0xcf')]=_['intersection'](_0x2bb83a['model'],_0x2bb83a[_0xcca2('0x45')]);_0x3d01f5[_0xcca2('0x48')]=_[_0xcca2('0x58')](_0x2bb83a[_0xcca2('0x55')],qs[_0xcca2('0x59')](_0xe26f8e['query'][_0xcca2('0x59')]));_0x3d01f5[_0xcca2('0x48')]=_0x3d01f5[_0xcca2('0x48')][_0xcca2('0x4c')]?_0x3d01f5[_0xcca2('0x48')]:_0x2bb83a[_0xcca2('0x55')];_0x3d01f5[_0xcca2('0xd0')]=qs['sort'](_0xe26f8e['query']['sort']);_0x3d01f5[_0xcca2('0x42')]=qs[_0xcca2('0xcf')](_[_0xcca2('0xd2')](_0xe26f8e[_0xcca2('0x45')],_0x2bb83a[_0xcca2('0xcf')]));if(_0xe26f8e['query'][_0xcca2('0x30')]){_0x3d01f5[_0xcca2('0x42')]=_['merge'](_0x3d01f5[_0xcca2('0x42')],{'$or':_[_0xcca2('0x3c')](_0x3d01f5['attributes'],function(_0x1985de){var _0xb9c962={};_0xb9c962[_0x1985de]={'$like':'%'+_0xe26f8e[_0xcca2('0x45')][_0xcca2('0x30')]+'%'};return _0xb9c962;})});}_0x3d01f5=_[_0xcca2('0x5b')]({},_0x3d01f5,_0xe26f8e[_0xcca2('0xd3')]);return _0x2dac35['getSquareProjects'](_0x3d01f5);}})[_0xcca2('0x14')](function(_0x2b2e44){if(_0x2b2e44){_0x4d0e40=_0x2b2e44[_0xcca2('0x4c')];if(!_0xe26f8e[_0xcca2('0x45')][_0xcca2('0xd5')](_0xcca2('0xdb'))){_0x3d01f5['limit']=qs[_0xcca2('0x23')](_0xe26f8e[_0xcca2('0x45')][_0xcca2('0x23')]);_0x3d01f5[_0xcca2('0x24')]=qs[_0xcca2('0x24')](_0xe26f8e[_0xcca2('0x45')][_0xcca2('0x24')]);}return _0x2dac35[_0xcca2('0x151')](_0x3d01f5);}})['then'](function(_0x1eaa2d){if(_0x1eaa2d){return _0x1eaa2d?{'count':_0x4d0e40,'rows':_0x1eaa2d}:null;}})['then'](respondWithResult(_0x2245b9,null))[_0xcca2('0x53')](handleError(_0x2245b9,null));};exports[_0xcca2('0x152')]=function(_0x34fe99,_0x3daf2e){return db[_0xcca2('0x3a')][_0xcca2('0x34')]({'where':{'id':_0x34fe99[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x3daf2e,null))['then'](function(_0x2346b5){if(_0x2346b5){return _0x2346b5['addSquareProjects'](_0x34fe99['body'][_0xcca2('0x61')],_[_0xcca2('0x62')](_0x34fe99[_0xcca2('0x5e')],[_0xcca2('0x61'),'id'])||{});}})['then'](respondWithResult(_0x3daf2e,null))[_0xcca2('0x53')](handleError(_0x3daf2e,null));};exports[_0xcca2('0x153')]=function(_0x53fcb9,_0x3517c2){return db[_0xcca2('0x3a')][_0xcca2('0x34')]({'where':{'id':_0x53fcb9['params']['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x3517c2,null))[_0xcca2('0x14')](function(_0x3ecb12){if(_0x3ecb12){return _0x3ecb12[_0xcca2('0x153')](_0x53fcb9[_0xcca2('0x45')][_0xcca2('0x61')]);}})[_0xcca2('0x14')](respondWithStatusCode(_0x3517c2,null))[_0xcca2('0x53')](handleError(_0x3517c2,null));};exports[_0xcca2('0x154')]=function(_0x4d26fb,_0x55a549){var _0x16d01d={},_0x52af83={},_0x56d9e4={'count':0x0,'rows':[]};var _0x98c99f=db['CmHopper'][_0xcca2('0x3b')];_0x52af83[_0xcca2('0x55')]=_[_0xcca2('0x57')](_0x98c99f);_0x52af83['query']=_['keys'](_0x4d26fb['query']);_0x52af83['filters']=_[_0xcca2('0x58')](_0x52af83[_0xcca2('0x55')],_0x52af83[_0xcca2('0x45')]);_0x52af83[_0xcca2('0xcf')]=_[_0xcca2('0xce')](_0x52af83['filters'],[_0xcca2('0x155'),'$or',_0xcca2('0x156'),_0xcca2('0x157'),_0xcca2('0x158'),'$lte','$ne',_0xcca2('0x159'),_0xcca2('0x15a'),'$between','$notBetween',_0xcca2('0x15b'),_0xcca2('0x15c'),_0xcca2('0x15d'),_0xcca2('0x15e'),_0xcca2('0x15f'),_0xcca2('0x160'),_0xcca2('0x15d'),_0xcca2('0x161'),'$contains',_0xcca2('0x162'),'$any']);_0x16d01d[_0xcca2('0x48')]=_[_0xcca2('0x58')](_0x52af83[_0xcca2('0x55')],qs[_0xcca2('0x59')](_0x4d26fb['query'][_0xcca2('0x59')]));_0x16d01d[_0xcca2('0x48')]=_0x16d01d[_0xcca2('0x48')][_0xcca2('0x4c')]?_0x16d01d[_0xcca2('0x48')]:_0x52af83[_0xcca2('0x55')];if(!_0x4d26fb['query'][_0xcca2('0xd5')](_0xcca2('0xdb'))){_0x16d01d[_0xcca2('0x23')]=qs[_0xcca2('0x23')](_0x4d26fb[_0xcca2('0x45')][_0xcca2('0x23')]);_0x16d01d['offset']=qs['offset'](_0x4d26fb[_0xcca2('0x45')]['offset']);}_0x16d01d[_0xcca2('0xd0')]=qs['sort'](_0x4d26fb[_0xcca2('0x45')][_0xcca2('0xd1')]);_0x16d01d[_0xcca2('0x42')]=qs[_0xcca2('0xcf')](_[_0xcca2('0xd2')](_0x4d26fb[_0xcca2('0x45')],_0x52af83['filters']));if(_0x4d26fb['query'][_0xcca2('0x30')]){_0x16d01d['where']=_[_0xcca2('0x5b')](_0x16d01d[_0xcca2('0x42')],{'$or':_[_0xcca2('0x3c')](_0x16d01d[_0xcca2('0x48')],function(_0x1bd9e7){var _0x3ed7f1={};_0x3ed7f1[_0x1bd9e7]={'$like':'%'+_0x4d26fb[_0xcca2('0x45')][_0xcca2('0x30')]+'%'};return _0x3ed7f1;})});}_0x16d01d[_0xcca2('0x42')]={'$and':[_0x16d01d[_0xcca2('0x42')],{'$or':[{'UserId':_0x4d26fb[_0xcca2('0x54')]['id']},{'OwnerId':_0x4d26fb[_0xcca2('0x54')]['id']}]}]};_0x16d01d=_['merge']({},_0x16d01d,_0x4d26fb['options']);var _0xf4d66b={'where':_0x16d01d['where']};return db[_0xcca2('0x163')][_0xcca2('0x25')](_0xf4d66b)[_0xcca2('0x14')](function(_0x45f0cb){_0x56d9e4['count']=_0x45f0cb;if(_0x4d26fb[_0xcca2('0x45')][_0xcca2('0x43')]){_0x16d01d[_0xcca2('0x44')]=[{'attributes':['id',_0xcca2('0x164'),_0xcca2('0x165'),_0xcca2('0xec')],'model':db[_0xcca2('0x166')],'as':'Contact'},{'attributes':['id','name',_0xcca2('0x167')],'model':db[_0xcca2('0xb0')],'as':'Queue'}];}return db[_0xcca2('0x163')]['findAll'](_0x16d01d);})[_0xcca2('0x14')](function(_0x59516f){_0x56d9e4[_0xcca2('0x4b')]=_0x59516f;return _0x56d9e4;})[_0xcca2('0x14')](respondWithFilteredResult(_0x55a549,_0x16d01d))[_0xcca2('0x53')](handleError(_0x55a549,null));};exports[_0xcca2('0x168')]=function(_0x5b31de,_0x1f8201){if(!_[_0xcca2('0x68')](_0x5b31de[_0xcca2('0x2e')]['id'])&&(_0x5b31de[_0xcca2('0x2e')][_0xcca2('0x2b')]==_0xcca2('0x2c')||_0x5b31de[_0xcca2('0x2e')][_0xcca2('0x2b')]==_0xcca2('0x2e'))){return db[_0xcca2('0x3a')]['findOne']({'where':{'id':_0x5b31de[_0xcca2('0x54')]['id']},'raw':!![]})[_0xcca2('0x14')](function(_0x35f046){return authService[_0xcca2('0x169')](_0x35f046);})[_0xcca2('0x14')](function(_0x1b8677){if(_0x1b8677){return _0x1f8201[_0xcca2('0x1f')](0xc8)[_0xcca2('0x21')]({'api_key':_0x1b8677[_0xcca2('0x16a')]});}else{return _0x1f8201[_0xcca2('0x1f')](0xcc)[_0xcca2('0x21')]({'message':'No\x20API\x20access\x20key\x20found!'});}})['catch'](handleError(_0x1f8201,0x193));}else{return _0x1f8201['status'](0x191)[_0xcca2('0x21')]({'message':_0xcca2('0x16b')});}};exports['createApiKey']=function(_0xea2703,_0x57e341){if(!_[_0xcca2('0x68')](_0xea2703[_0xcca2('0x2e')]['id'])&&(_0xea2703[_0xcca2('0x2e')]['role']==_0xcca2('0x2c')||_0xea2703[_0xcca2('0x2e')][_0xcca2('0x2b')]==_0xcca2('0x2e'))){return db[_0xcca2('0x3a')][_0xcca2('0x34')]({'where':{'id':_0xea2703[_0xcca2('0x54')]['id']}})['then'](function(_0x5c87eb){return authService[_0xcca2('0x16c')](_0x5c87eb);})[_0xcca2('0x14')](function(_0x2b7c6f){return db[_0xcca2('0x3a')]['update']({'apiKeyIat':_0x2b7c6f['iat'],'apiKeyNonce':_0x2b7c6f['nonce']},{'where':{'id':_0xea2703[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](function(){return _0x57e341[_0xcca2('0x1f')](0xc8)[_0xcca2('0x21')]({'api_key':_0x2b7c6f[_0xcca2('0x16a')]});});})['catch'](handleError(_0x57e341,0x193));}else{return _0x57e341[_0xcca2('0x1f')](0x191)[_0xcca2('0x21')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0xcca2('0x16d')]=function(_0x20c1e8,_0x3ebfb2){if(!_['isNil'](_0x20c1e8[_0xcca2('0x2e')]['id'])&&(_0x20c1e8[_0xcca2('0x2e')][_0xcca2('0x2b')]==_0xcca2('0x2c')||_0x20c1e8[_0xcca2('0x2e')][_0xcca2('0x2b')]==_0xcca2('0x2e'))){return db[_0xcca2('0x3a')]['find']({'where':{'id':_0x20c1e8[_0xcca2('0x54')]['id']}})[_0xcca2('0x14')](handleEntityNotFound(_0x3ebfb2,null))[_0xcca2('0x14')](function(_0x22ea65){if(_0x22ea65&&_0x22ea65['apiKeyNonce']&&_0x22ea65[_0xcca2('0x16e')])return _0x22ea65;else throw{'message':_0xcca2('0x16f')};})[_0xcca2('0x14')](function(){return db[_0xcca2('0x3a')][_0xcca2('0x27')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x20c1e8[_0xcca2('0x54')]['id']}});})[_0xcca2('0x14')](respondWithStatusCode(_0x3ebfb2,0xc8))[_0xcca2('0x53')](handleError(_0x3ebfb2,0x193));}else{return _0x3ebfb2[_0xcca2('0x1f')](0x191)[_0xcca2('0x21')]({'message':_0xcca2('0x16b')});}};exports[_0xcca2('0x170')]=function(_0x62f047,_0x5f30fb){var _0x5985a6=_0x62f047[_0xcca2('0x2e')][_0xcca2('0x2a')]({'plain':!![]});if(!_0x5985a6){return _0x5f30fb[_0xcca2('0x1f')](0x191)['send'](_0xcca2('0x171'));}else{Promise[_0xcca2('0x11d')]()['then'](function(){if(_0x62f047[_0xcca2('0x45')][_0xcca2('0x46')]!==_0xcca2('0x47'))return;return _0x62f047['user']['getUserSetting']();})['then'](function(_0x1c4eb1){if(!_0x1c4eb1)return;return _0x1c4eb1[_0xcca2('0x2a')]({'plain':!![]});})[_0xcca2('0x14')](function(_0x46b72e){_0x5985a6[_0xcca2('0x46')]=_0x46b72e;return _0x5f30fb[_0xcca2('0x1f')](0xc8)['json'](_0x5985a6);});}};exports[_0xcca2('0x172')]=function(_0x3102dc,_0x391553){var _0x1fc249={'offset':0x0},_0x23def5={'count':0x0,'rows':[]};Promise[_0xcca2('0x11d')]()[_0xcca2('0x14')](function(){if(!_0x3102dc[_0xcca2('0x45')][_0xcca2('0x30')]&&!_0x3102dc[_0xcca2('0x45')][_0xcca2('0x173')]&&!_0x3102dc[_0xcca2('0x45')][_0xcca2('0x174')])return[];return Promise[_0xcca2('0x11d')]()[_0xcca2('0x14')](function(){var _0x293d1b=[];if(!_[_0xcca2('0x8f')](_0x3102dc[_0xcca2('0x45')][_0xcca2('0x173')])){_0x293d1b[_0xcca2('0x49')](db[_0xcca2('0x110')][_0xcca2('0x4a')]({'attributes':['id',_0xcca2('0x35')],'where':{'id':_0x3102dc[_0xcca2('0x45')]['teams']}}));}if(!_[_0xcca2('0x8f')](_0x3102dc[_0xcca2('0x45')][_0xcca2('0x174')])){_0x293d1b[_0xcca2('0x49')](db[_0xcca2('0xb0')][_0xcca2('0x4a')]({'attributes':['id',_0xcca2('0x35')],'type':_0xcca2('0x175'),'where':{'id':_0x3102dc[_0xcca2('0x45')][_0xcca2('0x174')]}}));}return Promise[_0xcca2('0x52')](_0x293d1b);})['then'](function(_0x1800ee){var _0x2071bb=_[_0xcca2('0x176')](_0x1800ee)[_0xcca2('0x3c')](function(_0x4594d3){return _0x4594d3['getAgents']({'attributes':['id',_0xcca2('0x35'),'internal',_0xcca2('0xb1')],'raw':!![]});});return Promise[_0xcca2('0x52')](_0x2071bb);})[_0xcca2('0x14')](function(_0x4672de){var _0x52008e=_[_0xcca2('0x176')](_0x4672de);if(!_0x3102dc[_0xcca2('0x45')][_0xcca2('0x30')])return _0x52008e;if(_[_0xcca2('0x8f')](_0x52008e)){return db[_0xcca2('0x3a')]['findAll']({'attributes':['id',_0xcca2('0x35'),_0xcca2('0x63'),'online'],'where':{'role':_0xcca2('0x7f'),'$or':[db['sequelize']['where'](db[_0xcca2('0x113')]['fn'](_0xcca2('0x177'),db[_0xcca2('0x113')]['col'](_0xcca2('0x35'))),{'$like':'%'+_0x3102dc[_0xcca2('0x45')][_0xcca2('0x30')][_0xcca2('0xab')]()+'%'}),{'internal':{'$like':'%'+_0x3102dc[_0xcca2('0x45')][_0xcca2('0x30')]+'%'}}]},'raw':!![]});}else{return _(_0x52008e)[_0xcca2('0x176')]()[_0xcca2('0x30')](function(_0x38ac4c){return _0x38ac4c[_0xcca2('0x35')]['toLowerCase']()['includes'](_0x3102dc[_0xcca2('0x45')][_0xcca2('0x30')][_0xcca2('0xab')]())||_0x38ac4c['internal'][_0xcca2('0x178')]()['includes'](_0x3102dc['query'][_0xcca2('0x30')]);})[_0xcca2('0x32')]();}})[_0xcca2('0x14')](function(_0x35ad3c){var _0x846fb1=_0xcca2('0x35');var _0x3e676a='asc';if(_0x3102dc[_0xcca2('0x45')][_0xcca2('0xd1')]){_0x3e676a=_0x3102dc[_0xcca2('0x45')]['sort'][0x0]==='-'?_0xcca2('0x179'):_0xcca2('0x17a');_0x846fb1=_0x3e676a===_0xcca2('0x17a')?_0x3102dc[_0xcca2('0x45')][_0xcca2('0xd1')]:_0x3102dc[_0xcca2('0x45')][_0xcca2('0xd1')][_0xcca2('0x17b')](0x1);}return _(_0x35ad3c)['uniqBy']('id')[_0xcca2('0x17c')]([function(_0x3aa6b8){return _0x846fb1==='name'?_0x3aa6b8[_0x846fb1][_0xcca2('0xab')]():_0x3aa6b8[_0x846fb1];}],[_0x3e676a])[_0xcca2('0x3c')](function(_0x9757f1){return _[_0xcca2('0xd2')](_0x9757f1,['id',_0xcca2('0x35'),_0xcca2('0x63'),_0xcca2('0xb1')]);})[_0xcca2('0x32')]();})[_0xcca2('0x14')](function(_0xcfa985){return amiClient[_0xcca2('0x17d')]('Agents',_0x3102dc)[_0xcca2('0x14')](function(_0x52c968){if(_0x52c968['error'])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x41af22=_0x52c968[_0xcca2('0x1d')];var _0x323085=jayson['client'][_0xcca2('0x17e')]({'port':0x232c});return _0x323085[_0xcca2('0x17d')](_0xcca2('0x88'),_0x3102dc)[_0xcca2('0x14')](function(_0x4bd52b){if(_0x4bd52b['error'])throw new Error(_0xcca2('0x17f'));var _0x386662=_0x4bd52b[_0xcca2('0x1d')];return _[_0xcca2('0x5b')]({},_0x386662,_0x41af22);});})[_0xcca2('0x14')](function(_0x4ec247){return _[_0xcca2('0x3c')](_0xcfa985,function(_0xc24d80){var _0x486007=_[_0xcca2('0x34')](_0x4ec247[_0xcca2('0x4b')],['id',_0xc24d80['id']]);if(!_0x486007||!_0xc24d80[_0xcca2('0xb1')]){_0xc24d80[_0xcca2('0x1f')]=_0xcca2('0x180');}else if(_0x486007[_0xcca2('0xa4')]){_0xc24d80[_0xcca2('0x1f')]=_0xcca2('0x101');}else{_0xc24d80[_0xcca2('0x1f')]=_['includes']([_0xcca2('0x181'),_0xcca2('0x182'),_0xcca2('0x183'),'ringing',null,undefined],_0x486007[_0xcca2('0x184')])?'online':_0xcca2('0x185');}return _0xc24d80;});});});})['then'](function(_0x59e3c9){if(!_0x3102dc[_0xcca2('0x45')][_0xcca2('0xd5')]('nolimit')){_0x1fc249[_0xcca2('0x23')]=qs[_0xcca2('0x23')](_0x3102dc['query'][_0xcca2('0x23')]||0xa);_0x1fc249[_0xcca2('0x24')]=qs[_0xcca2('0x24')](_0x3102dc[_0xcca2('0x45')]['offset']);}_0x23def5['count']=_0x59e3c9[_0xcca2('0x4c')];_0x23def5['rows']=_0x1fc249[_0xcca2('0x23')]?_0x59e3c9['slice'](_0x1fc249[_0xcca2('0x24')],_0x1fc249['offset']+_0x1fc249[_0xcca2('0x23')]):_0x59e3c9;return _0x23def5;})[_0xcca2('0x14')](respondWithFilteredResult(_0x391553,_0x1fc249))[_0xcca2('0x53')](handleError(_0x391553,null));};function get_open_tabs(_0x5a0f87,_0x5033b0){var _0x28a274=_0x5a0f87['charAt'](0x0)[_0xcca2('0x186')]()+_0x5a0f87['slice'](0x1);var _0x41bf42={'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]};return new Promise(function(_0x55f989,_0x32813c){var _0x54c810=squel[_0xcca2('0x187')]()['field'](_0xcca2('0x188')+_0x28a274+_0xcca2('0x189'),'id')[_0xcca2('0x18a')](_0xcca2('0x18b'))[_0xcca2('0x6c')](_0xcca2('0x18c')+_0x5a0f87+_0xcca2('0x18d'),'ui')['where'](_0xcca2('0x18e'),_0x5033b0['id']);return db[_0xcca2('0x113')][_0xcca2('0x45')](_0x54c810['toString'](),_0x41bf42)[_0xcca2('0x14')](function(_0x223b06){_0x5033b0[_0x28a274+_0xcca2('0x18f')]=_0x223b06;_0x55f989(_0x223b06);})[_0xcca2('0x53')](function(_0x17deff){_0x32813c(_0x17deff);});});}
\ No newline at end of file
index abc5de1..3ae3242 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe027=['update','emit','hook','exports','events','../../mysqldb','User','setMaxListeners','save'];(function(_0x47e7cb,_0x4c1b8d){var _0x2a8874=function(_0x36498f){while(--_0x36498f){_0x47e7cb['push'](_0x47e7cb['shift']());}};_0x2a8874(++_0x4c1b8d);}(_0xe027,0x70));var _0x7e02=function(_0x58443c,_0x24af14){_0x58443c=_0x58443c-0x0;var _0x1cbe78=_0xe027[_0x58443c];return _0x1cbe78;};'use strict';var EventEmitter=require(_0x7e02('0x0'));var User=require(_0x7e02('0x1'))['db'][_0x7e02('0x2')];var UserEvents=new EventEmitter();UserEvents[_0x7e02('0x3')](0x0);var events={'afterCreate':_0x7e02('0x4'),'afterUpdate':_0x7e02('0x5'),'afterDestroy':'remove'};function emitEvent(_0x1b10db){return function(_0x1b6d1b,_0x2876d3,_0x2d88f5){UserEvents[_0x7e02('0x6')](_0x1b10db+':'+_0x1b6d1b['id'],_0x1b6d1b);UserEvents[_0x7e02('0x6')](_0x1b10db,_0x1b6d1b);_0x2d88f5(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];User[_0x7e02('0x7')](e,emitEvent(event));}}module[_0x7e02('0x8')]=UserEvents;
\ No newline at end of file
+var _0xca67=['remove','emit','hasOwnProperty','events','../../mysqldb','User','save','update'];(function(_0x5ba6a8,_0x8dde14){var _0x22033d=function(_0x150782){while(--_0x150782){_0x5ba6a8['push'](_0x5ba6a8['shift']());}};_0x22033d(++_0x8dde14);}(_0xca67,0x9b));var _0x7ca6=function(_0x532557,_0x581529){_0x532557=_0x532557-0x0;var _0x55aed5=_0xca67[_0x532557];return _0x55aed5;};'use strict';var EventEmitter=require(_0x7ca6('0x0'));var User=require(_0x7ca6('0x1'))['db'][_0x7ca6('0x2')];var UserEvents=new EventEmitter();UserEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7ca6('0x3'),'afterUpdate':_0x7ca6('0x4'),'afterDestroy':_0x7ca6('0x5')};function emitEvent(_0x492ef5){return function(_0x46380d,_0x9e9a52,_0x53d49d){UserEvents[_0x7ca6('0x6')](_0x492ef5+':'+_0x46380d['id'],_0x46380d);UserEvents[_0x7ca6('0x6')](_0x492ef5,_0x46380d);_0x53d49d(null);};}for(var e in events){if(events[_0x7ca6('0x7')](e)){var event=events[e];User['hook'](e,emitEvent(event));}}module['exports']=UserEvents;
\ No newline at end of file
index b3f3275..2775056 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x174b=['includes','Set','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)','Dial','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','findAll','then','internal','concat','exports','User','users','utf8_bin','resolve','UserProfile','find','userProfileId','privacyEnabled','updatePassword','catch','changed','userSetting','createUserSetting','error','VoiceExtension','bulkCreate','chanspy','destroy','system','encryptPassword','function','Missing\x20Callback','randomBytes','base64','salt','sha1','pbkdf2','toString','provider','Invalid\x20password','makeSalt','md5secret',':asterisk:','bluebird','crypto','util','lodash','./user.attributes','google','length','from-sip','format','%s%s','prefix','push','CDR(type)=%s','record','merge','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','Authenticate','password','name','options','StopMixMonitor','wav','WAV','gsm','context','CDR(type)=internal','extensionMonitor'];(function(_0x60be21,_0x55927f){var _0x190747=function(_0x19a6cd){while(--_0x19a6cd){_0x60be21['push'](_0x60be21['shift']());}};_0x190747(++_0x55927f);}(_0x174b,0x117));var _0xb174=function(_0x53e7bd,_0x249968){_0x53e7bd=_0x53e7bd-0x0;var _0x5f8ea9=_0x174b[_0x53e7bd];return _0x5f8ea9;};'use strict';var BPromise=require(_0xb174('0x0'));var crypto=require(_0xb174('0x1'));var util=require(_0xb174('0x2'));var md5=require('md5');var _=require(_0xb174('0x3'));var attributes=require(_0xb174('0x4'));var authTypes=[_0xb174('0x5')];var validatePresenceOf=function(_0x339ebc){return _0x339ebc&&_0x339ebc[_0xb174('0x6')];};var getChanSpyApplications=function(_0x5b0b6f,_0x50638a,_0x300abe){var _0x518ce2={'context':_0x5b0b6f['context']||_0xb174('0x7'),'type':'system','isApp':![],'UserId':_0x5b0b6f['id']};var _0x47a910=[];for(var _0x37a276=0x0,_0x37158b=0x1;_0x37a276<_0x300abe[_0xb174('0x6')];_0x37a276++,_0x37158b=0x1){var _0x15ed84={'exten':util[_0xb174('0x8')](_0xb174('0x9'),_0x300abe[_0x37a276][_0xb174('0xa')],_0x50638a),'ChanSpyId':_0x300abe[_0x37a276]['id']};_0x47a910[_0xb174('0xb')](_['merge']({'app':'Set','appdata':util[_0xb174('0x8')](_0xb174('0xc'),'chanspy'),'priority':_0x37158b++},_0x518ce2,_0x15ed84));if(_0x300abe[_0x37a276][_0xb174('0xd')]){_0x47a910[_0xb174('0xb')](_[_0xb174('0xe')]({'app':_0xb174('0xf'),'appdata':util[_0xb174('0x8')](_0xb174('0x10'),_0x300abe[_0x37a276][_0xb174('0x11')]),'priority':_0x37158b++},_0x518ce2,_0x15ed84));}if(_0x300abe[_0x37a276]['auth']){_0x47a910[_0xb174('0xb')](_[_0xb174('0xe')]({'app':_0xb174('0x12'),'appdata':_0x300abe[_0x37a276][_0xb174('0x13')],'priority':_0x37158b++},_0x518ce2,_0x15ed84));}_0x47a910[_0xb174('0xb')](_[_0xb174('0xe')]({'app':'ChanSpy','appdata':util[_0xb174('0x8')]('SIP/%s,%s',_0x5b0b6f[_0xb174('0x14')],_0x300abe[_0x37a276][_0xb174('0x15')]?_0x300abe[_0x37a276][_0xb174('0x15')]['join'](''):''),'priority':_0x37158b++},_0x518ce2,_0x15ed84));if(_0x300abe[_0x37a276][_0xb174('0xd')]){_0x47a910[_0xb174('0xb')](_[_0xb174('0xe')]({'app':_0xb174('0x16'),'priority':_0x37158b++},_0x518ce2,_0x15ed84));}}return _0x47a910;};var getUserApplications=function(_0x4ed6da,_0xf3333){var _0x5b89da=[_0xb174('0x17'),_0xb174('0x18'),_0xb174('0x19')];var _0x432c13={'context':_0x4ed6da[_0xb174('0x1a')]||_0xb174('0x7'),'exten':_0xf3333,'type':'system','isApp':![],'UserId':_0x4ed6da['id']};var _0x117596=[{'app':'Set','appdata':_0xb174('0x1b')}];if(_0x4ed6da[_0xb174('0x1c')]&&_[_0xb174('0x1d')](_0x5b89da,_0x4ed6da[_0xb174('0x1c')])){_0x117596[_0xb174('0xb')]({'app':_0xb174('0x1e'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x117596[_0xb174('0xb')]({'app':'Set','appdata':util[_0xb174('0x8')](_0xb174('0x1f'),_0x4ed6da[_0xb174('0x1c')])});_0x117596['push']({'app':'Dial','appdata':util['format'](_0xb174('0x20'),_0x4ed6da['name'])});}else{_0x117596[_0xb174('0xb')]({'app':_0xb174('0x21'),'appdata':util[_0xb174('0x8')](_0xb174('0x22'),_0x4ed6da[_0xb174('0x14')])});}_0x117596[_0xb174('0xb')]({'app':_0xb174('0x23')});for(var _0x36dca2=0x0;_0x36dca2<_0x117596[_0xb174('0x6')];_0x36dca2++){_0x117596[_0x36dca2][_0xb174('0x24')]=_0x36dca2+0x1;_0x117596[_0x36dca2]=_[_0xb174('0x25')](_0x117596[_0x36dca2],_0x432c13);}return _0x117596;};var getChanSpyPromise=function(_0x20fa0e,_0x5ce0da){return new BPromise(function(_0x44cfe1,_0x541bf8){return _0x20fa0e[_0xb174('0x26')][_0xb174('0x27')]()[_0xb174('0x28')](function(_0x3894ae){if(_0x3894ae){var _0x241f43=getChanSpyApplications(_0x5ce0da,_0x5ce0da[_0xb174('0x29')],_0x3894ae);if(_0x5ce0da[_0xb174('0x29')]!=_0x5ce0da[_0xb174('0x14')]){_0x241f43=_0x241f43[_0xb174('0x2a')](getChanSpyApplications(_0x5ce0da,_0x5ce0da[_0xb174('0x14')],_0x3894ae));}return _0x44cfe1(_0x241f43);}return _0x44cfe1([]);})['catch'](function(_0x103a0c){_0x541bf8(_0x103a0c);});});};module[_0xb174('0x2b')]=function(_0x5e0f3d){var _0x6e79ba=_0x5e0f3d['models'];return _0x5e0f3d['define'](_0xb174('0x2c'),attributes,{'tableName':_0xb174('0x2d'),'charset':'utf8','collate':_0xb174('0x2e'),'hooks':{'beforeCreate':function(_0x20211c,_0x443969,_0x4e248d){var _0x1c848e=typeof _0x20211c['userProfileId']==='undefined'?BPromise[_0xb174('0x2f')](null):_0x6e79ba[_0xb174('0x30')][_0xb174('0x31')]({'where':{'id':_0x20211c[_0xb174('0x32')]}});_0x1c848e[_0xb174('0x28')](function(_0x5e6383){if(_0x5e6383){_0x20211c['privacyEnabled']=_0x5e6383[_0xb174('0x33')];}})['then'](function(){_0x20211c['updateMd5Password']();_0x20211c[_0xb174('0x34')](_0x4e248d);})[_0xb174('0x35')](function(_0x13cdb2){_0x4e248d(_0x13cdb2);});},'beforeUpdate':function(_0x3eb5c3,_0x16f53c,_0x2b60a5){Promise[_0xb174('0x2f')]()['then'](function(){if(_0x3eb5c3[_0xb174('0x36')]('userProfileId')===![])return;return _0x6e79ba[_0xb174('0x30')]['find']({'where':{'id':_0x3eb5c3['userProfileId']}})['then'](function(_0x29d05e){if(_0x29d05e)_0x3eb5c3[_0xb174('0x33')]=_0x29d05e[_0xb174('0x33')];return;});})[_0xb174('0x28')](function(){if(_0x3eb5c3[_0xb174('0x36')](_0xb174('0x13'))){_0x3eb5c3['updateMd5Password']();return _0x3eb5c3[_0xb174('0x34')](_0x2b60a5);}_0x2b60a5();})[_0xb174('0x35')](function(_0x470920){_0x2b60a5(_0x470920);});},'afterCreate':function(_0x188b8d,_0x41abe0,_0xd219f7){var _0x5d07ff=getUserApplications(_0x188b8d,_0x188b8d[_0xb174('0x29')]);if(_0x188b8d['internal']!=_0x188b8d[_0xb174('0x14')]){_0x5d07ff=_0x5d07ff['concat'](getUserApplications(_0x188b8d,_0x188b8d['name']));}return Promise[_0xb174('0x2f')]()[_0xb174('0x28')](function(){if(!_0x188b8d[_0xb174('0x37')]){return _0x188b8d[_0xb174('0x38')]({'clientSideLoggingLevel':_0xb174('0x39'),'clientSideLoggingEnabled':![]});}})[_0xb174('0x28')](function(){return _0x6e79ba[_0xb174('0x3a')][_0xb174('0x3b')](_0x5d07ff);})[_0xb174('0x28')](function(){if(_0x188b8d[_0xb174('0x3c')]){return getChanSpyPromise(_0x6e79ba,_0x188b8d);}})[_0xb174('0x28')](function(_0x507306){if(_0x507306&&_0x507306[_0xb174('0x6')]){return _0x6e79ba[_0xb174('0x3a')]['bulkCreate'](_0x507306);}})[_0xb174('0x28')](function(){_0xd219f7();})['catch'](function(_0x4643f9){_0xd219f7(_0x4643f9);});},'afterUpdate':function(_0x2f211e,_0x2bcad0,_0x23cbb0){return BPromise[_0xb174('0x2f')]()[_0xb174('0x28')](function(){if(_0x2f211e[_0xb174('0x36')]('chanspy')||_0x2f211e[_0xb174('0x36')]('context')){return _0x6e79ba[_0xb174('0x3a')][_0xb174('0x3d')]({'where':{'UserId':_0x2f211e['id'],'type':_0xb174('0x3e'),'ChanSpyId':{'$ne':null}}})[_0xb174('0x28')](function(){if(_0x2f211e[_0xb174('0x3c')]){return getChanSpyPromise(_0x6e79ba,_0x2f211e)['then'](function(_0x3dd897){if(_0x3dd897&&_0x3dd897[_0xb174('0x6')]){return _0x6e79ba[_0xb174('0x3a')][_0xb174('0x3b')](_0x3dd897);}});}});}})['then'](function(){if(_0x2f211e[_0xb174('0x36')](_0xb174('0x1c'))||_0x2f211e[_0xb174('0x36')](_0xb174('0x1a'))){return _0x6e79ba[_0xb174('0x3a')]['destroy']({'where':{'UserId':_0x2f211e['id'],'type':'system','ChanSpyId':null}})[_0xb174('0x28')](function(){var _0x4ce70c=getUserApplications(_0x2f211e,_0x2f211e[_0xb174('0x29')]);if(_0x2f211e[_0xb174('0x29')]!=_0x2f211e[_0xb174('0x14')]){_0x4ce70c=_0x4ce70c[_0xb174('0x2a')](getUserApplications(_0x2f211e,_0x2f211e[_0xb174('0x14')]));}return _0x6e79ba[_0xb174('0x3a')][_0xb174('0x3b')](_0x4ce70c);});}})['then'](function(){_0x23cbb0();})[_0xb174('0x35')](function(_0x502477){_0x23cbb0(_0x502477);});},'afterDestroy':function(_0x1b922a){return _0x6e79ba[_0xb174('0x3a')][_0xb174('0x3d')]({'where':{'UserId':_0x1b922a['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0xde9a09,_0x3e250a){if(!_0x3e250a){return this['password']===this[_0xb174('0x3f')](_0xde9a09);}var _0xf45b3b=this;this[_0xb174('0x3f')](_0xde9a09,function(_0x415778,_0x2afcd5){if(_0x415778){_0x3e250a(_0x415778);}if(_0xf45b3b[_0xb174('0x13')]===_0x2afcd5){_0x3e250a(null,!![]);}else{_0x3e250a(null,![]);}});},'makeSalt':function(_0x5177dc,_0x16dbb7){var _0x4b1669=0x10;if(typeof arguments[0x0]===_0xb174('0x40')){_0x16dbb7=arguments[0x0];_0x5177dc=_0x4b1669;}else if(typeof arguments[0x1]===_0xb174('0x40')){_0x16dbb7=arguments[0x1];}else{throw new Error(_0xb174('0x41'));}if(!_0x5177dc){_0x5177dc=_0x4b1669;}return crypto[_0xb174('0x42')](_0x5177dc,function(_0x56dbfc,_0x204f82){if(_0x56dbfc){_0x16dbb7(_0x56dbfc);}return _0x16dbb7(null,_0x204f82['toString'](_0xb174('0x43')));});},'encryptPassword':function(_0x3dedeb,_0x2ad217){if(!_0x3dedeb||!this[_0xb174('0x44')]){return _0x2ad217?_0x2ad217(null):null;}var _0x59b63a=0x2710;var _0x570abf=0x40;var _0xfd4292=new Buffer(this[_0xb174('0x44')],_0xb174('0x43'));if(!_0x2ad217){return crypto['pbkdf2Sync'](_0x3dedeb,_0xfd4292,_0x59b63a,_0x570abf,_0xb174('0x45'))['toString'](_0xb174('0x43'));}return crypto[_0xb174('0x46')](_0x3dedeb,_0xfd4292,_0x59b63a,_0x570abf,_0xb174('0x45'),function(_0x1252a0,_0x3a4a1a){if(_0x1252a0){_0x2ad217(_0x1252a0);}return _0x2ad217(null,_0x3a4a1a[_0xb174('0x47')](_0xb174('0x43')));});},'updatePassword':function(_0x5dac7d){if(!this['password']){return _0x5dac7d(null);}if(!validatePresenceOf(this['password'])&&authTypes['indexOf'](this[_0xb174('0x48')])===-0x1){_0x5dac7d(new Error(_0xb174('0x49')));}var _0xa6406a=this;this[_0xb174('0x4a')](function(_0x12c27d,_0x56e04d){if(_0x12c27d){return _0x5dac7d(_0x12c27d);}_0xa6406a[_0xb174('0x44')]=_0x56e04d;_0xa6406a[_0xb174('0x3f')](_0xa6406a[_0xb174('0x13')],function(_0x4c60ca,_0x325a43){if(_0x4c60ca){_0x5dac7d(_0x4c60ca);}_0xa6406a[_0xb174('0x13')]=_0x325a43;_0x5dac7d(null);});});},'updateMd5Password':function(){this[_0xb174('0x4b')]=md5(this[_0xb174('0x14')]+_0xb174('0x4c')+this['password']);return this[_0xb174('0x4b')];}}});};
\ No newline at end of file
+var _0x7d86=['Dial','SIP/%s,,tTxX','defaults','VoiceChanSpy','findAll','then','internal','concat','catch','models','define','utf8','utf8_bin','userProfileId','undefined','resolve','UserProfile','find','privacyEnabled','updateMd5Password','updatePassword','changed','createUserSetting','error','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','salt','pbkdf2Sync','sha1','base64','pbkdf2','indexOf','makeSalt','md5secret',':asterisk:','client','http','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','bluebird','util','md5','lodash','jayson/promise','./user.attributes','google','context','from-sip','system','length','format','%s%s','prefix','push','merge','Set','CDR(type)=%s','chanspy','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','name','options','join','record','StopMixMonitor','wav','WAV','gsm','CDR(type)=internal','includes','extensionMonitor','_XCALLY_MIXMONITOR_FORMAT=%s'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7d86,0x86));var _0x67d8=function(_0x36cdde,_0xa11d25){_0x36cdde=_0x36cdde-0x0;var _0xc7864c=_0x7d86[_0x36cdde];return _0xc7864c;};'use strict';var BPromise=require(_0x67d8('0x0'));var crypto=require('crypto');var util=require(_0x67d8('0x1'));var md5=require(_0x67d8('0x2'));var _=require(_0x67d8('0x3'));var jayson=require(_0x67d8('0x4'));var attributes=require(_0x67d8('0x5'));var authTypes=[_0x67d8('0x6')];var validatePresenceOf=function(_0x3f58a1){return _0x3f58a1&&_0x3f58a1['length'];};var getChanSpyApplications=function(_0x3679f5,_0x33de53,_0x8dd593){var _0x2bc414={'context':_0x3679f5[_0x67d8('0x7')]||_0x67d8('0x8'),'type':_0x67d8('0x9'),'isApp':![],'UserId':_0x3679f5['id']};var _0x16e834=[];for(var _0x31726a=0x0,_0x23ffff=0x1;_0x31726a<_0x8dd593[_0x67d8('0xa')];_0x31726a++,_0x23ffff=0x1){var _0x6bc54c={'exten':util[_0x67d8('0xb')](_0x67d8('0xc'),_0x8dd593[_0x31726a][_0x67d8('0xd')],_0x33de53),'ChanSpyId':_0x8dd593[_0x31726a]['id']};_0x16e834[_0x67d8('0xe')](_[_0x67d8('0xf')]({'app':_0x67d8('0x10'),'appdata':util[_0x67d8('0xb')](_0x67d8('0x11'),_0x67d8('0x12')),'priority':_0x23ffff++},_0x2bc414,_0x6bc54c));if(_0x8dd593[_0x31726a]['record']){_0x16e834[_0x67d8('0xe')](_[_0x67d8('0xf')]({'app':_0x67d8('0x13'),'appdata':util['format'](_0x67d8('0x14'),_0x8dd593[_0x31726a][_0x67d8('0x15')]),'priority':_0x23ffff++},_0x2bc414,_0x6bc54c));}if(_0x8dd593[_0x31726a][_0x67d8('0x16')]){_0x16e834[_0x67d8('0xe')](_[_0x67d8('0xf')]({'app':_0x67d8('0x17'),'appdata':_0x8dd593[_0x31726a][_0x67d8('0x18')],'priority':_0x23ffff++},_0x2bc414,_0x6bc54c));}_0x16e834['push'](_[_0x67d8('0xf')]({'app':_0x67d8('0x19'),'appdata':util[_0x67d8('0xb')]('SIP/%s,%s',_0x3679f5[_0x67d8('0x1a')],_0x8dd593[_0x31726a][_0x67d8('0x1b')]?_0x8dd593[_0x31726a]['options'][_0x67d8('0x1c')](''):''),'priority':_0x23ffff++},_0x2bc414,_0x6bc54c));if(_0x8dd593[_0x31726a][_0x67d8('0x1d')]){_0x16e834[_0x67d8('0xe')](_[_0x67d8('0xf')]({'app':_0x67d8('0x1e'),'priority':_0x23ffff++},_0x2bc414,_0x6bc54c));}}return _0x16e834;};var getUserApplications=function(_0x2a9e66,_0x5117d0){var _0x3de8d1=[_0x67d8('0x1f'),_0x67d8('0x20'),_0x67d8('0x21')];var _0x180cd7={'context':_0x2a9e66['context']||_0x67d8('0x8'),'exten':_0x5117d0,'type':_0x67d8('0x9'),'isApp':![],'UserId':_0x2a9e66['id']};var _0x47c40a=[{'app':'Set','appdata':_0x67d8('0x22')}];if(_0x2a9e66['extensionMonitor']&&_[_0x67d8('0x23')](_0x3de8d1,_0x2a9e66[_0x67d8('0x24')])){_0x47c40a[_0x67d8('0xe')]({'app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x47c40a[_0x67d8('0xe')]({'app':_0x67d8('0x10'),'appdata':util[_0x67d8('0xb')](_0x67d8('0x25'),_0x2a9e66[_0x67d8('0x24')])});_0x47c40a['push']({'app':_0x67d8('0x26'),'appdata':util[_0x67d8('0xb')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x2a9e66['name'])});}else{_0x47c40a[_0x67d8('0xe')]({'app':_0x67d8('0x26'),'appdata':util['format'](_0x67d8('0x27'),_0x2a9e66[_0x67d8('0x1a')])});}_0x47c40a['push']({'app':'Hangup'});for(var _0x432a5a=0x0;_0x432a5a<_0x47c40a[_0x67d8('0xa')];_0x432a5a++){_0x47c40a[_0x432a5a]['priority']=_0x432a5a+0x1;_0x47c40a[_0x432a5a]=_[_0x67d8('0x28')](_0x47c40a[_0x432a5a],_0x180cd7);}return _0x47c40a;};var getChanSpyPromise=function(_0x2d2506,_0x59e3c3){return new BPromise(function(_0x1e7e8f,_0x5c7f05){return _0x2d2506[_0x67d8('0x29')][_0x67d8('0x2a')]()[_0x67d8('0x2b')](function(_0x48074a){if(_0x48074a){var _0x57cbb5=getChanSpyApplications(_0x59e3c3,_0x59e3c3['internal'],_0x48074a);if(_0x59e3c3[_0x67d8('0x2c')]!=_0x59e3c3['name']){_0x57cbb5=_0x57cbb5[_0x67d8('0x2d')](getChanSpyApplications(_0x59e3c3,_0x59e3c3[_0x67d8('0x1a')],_0x48074a));}return _0x1e7e8f(_0x57cbb5);}return _0x1e7e8f([]);})[_0x67d8('0x2e')](function(_0xbb3471){_0x5c7f05(_0xbb3471);});});};module['exports']=function(_0x20735f){var _0x41717a=_0x20735f[_0x67d8('0x2f')];return _0x20735f[_0x67d8('0x30')]('User',attributes,{'tableName':'users','charset':_0x67d8('0x31'),'collate':_0x67d8('0x32'),'hooks':{'beforeCreate':function(_0x5d72b5,_0x21b195,_0x1d8440){var _0x38942c=typeof _0x5d72b5[_0x67d8('0x33')]===_0x67d8('0x34')?BPromise[_0x67d8('0x35')](null):_0x41717a[_0x67d8('0x36')][_0x67d8('0x37')]({'where':{'id':_0x5d72b5['userProfileId']}});_0x38942c['then'](function(_0x333f19){if(_0x333f19){_0x5d72b5[_0x67d8('0x38')]=_0x333f19['privacyEnabled'];}})[_0x67d8('0x2b')](function(){_0x5d72b5[_0x67d8('0x39')]();_0x5d72b5[_0x67d8('0x3a')](_0x1d8440);})[_0x67d8('0x2e')](function(_0xe5507e){_0x1d8440(_0xe5507e);});},'beforeUpdate':function(_0x4f35e2,_0x575563,_0x2330ea){Promise[_0x67d8('0x35')]()[_0x67d8('0x2b')](function(){if(_0x4f35e2[_0x67d8('0x3b')]('userProfileId')===![])return;return _0x41717a[_0x67d8('0x36')]['find']({'where':{'id':_0x4f35e2[_0x67d8('0x33')]}})[_0x67d8('0x2b')](function(_0x426416){if(_0x426416)_0x4f35e2[_0x67d8('0x38')]=_0x426416[_0x67d8('0x38')];return;});})[_0x67d8('0x2b')](function(){if(_0x4f35e2[_0x67d8('0x3b')]('password')){_0x4f35e2[_0x67d8('0x39')]();return _0x4f35e2[_0x67d8('0x3a')](_0x2330ea);}_0x2330ea();})[_0x67d8('0x2e')](function(_0x58983d){_0x2330ea(_0x58983d);});},'afterCreate':function(_0x5632d5,_0x1d9ed4,_0x59293a){var _0x2e0e77=getUserApplications(_0x5632d5,_0x5632d5[_0x67d8('0x2c')]);if(_0x5632d5[_0x67d8('0x2c')]!=_0x5632d5[_0x67d8('0x1a')]){_0x2e0e77=_0x2e0e77[_0x67d8('0x2d')](getUserApplications(_0x5632d5,_0x5632d5['name']));}return Promise[_0x67d8('0x35')]()[_0x67d8('0x2b')](function(){if(!_0x5632d5['userSetting']){return _0x5632d5[_0x67d8('0x3c')]({'clientSideLoggingLevel':_0x67d8('0x3d'),'clientSideLoggingEnabled':![]});}})[_0x67d8('0x2b')](function(){return _0x41717a[_0x67d8('0x3e')][_0x67d8('0x3f')](_0x2e0e77);})[_0x67d8('0x2b')](function(){if(_0x5632d5['chanspy']){return getChanSpyPromise(_0x41717a,_0x5632d5);}})[_0x67d8('0x2b')](function(_0x4dcd6a){if(_0x4dcd6a&&_0x4dcd6a[_0x67d8('0xa')]){return _0x41717a[_0x67d8('0x3e')][_0x67d8('0x3f')](_0x4dcd6a);}})[_0x67d8('0x2b')](function(){_0x59293a();})[_0x67d8('0x2e')](function(_0x2ec437){_0x59293a(_0x2ec437);});},'afterUpdate':function(_0x280149,_0x425c87,_0x88a49c){return BPromise[_0x67d8('0x35')]()[_0x67d8('0x2b')](function(){if(_0x280149[_0x67d8('0x3b')](_0x67d8('0x12'))||_0x280149[_0x67d8('0x3b')](_0x67d8('0x7'))){return _0x41717a[_0x67d8('0x3e')][_0x67d8('0x40')]({'where':{'UserId':_0x280149['id'],'type':_0x67d8('0x9'),'ChanSpyId':{'$ne':null}}})[_0x67d8('0x2b')](function(){if(_0x280149[_0x67d8('0x12')]){return getChanSpyPromise(_0x41717a,_0x280149)[_0x67d8('0x2b')](function(_0x44e002){if(_0x44e002&&_0x44e002[_0x67d8('0xa')]){return _0x41717a[_0x67d8('0x3e')][_0x67d8('0x3f')](_0x44e002);}});}});}})[_0x67d8('0x2b')](function(){if(_0x280149[_0x67d8('0x3b')](_0x67d8('0x24'))||_0x280149['changed'](_0x67d8('0x7'))){return _0x41717a[_0x67d8('0x3e')][_0x67d8('0x40')]({'where':{'UserId':_0x280149['id'],'type':_0x67d8('0x9'),'ChanSpyId':null}})[_0x67d8('0x2b')](function(){var _0x5f1f0=getUserApplications(_0x280149,_0x280149['internal']);if(_0x280149['internal']!=_0x280149[_0x67d8('0x1a')]){_0x5f1f0=_0x5f1f0['concat'](getUserApplications(_0x280149,_0x280149[_0x67d8('0x1a')]));}return _0x41717a[_0x67d8('0x3e')][_0x67d8('0x3f')](_0x5f1f0);});}})[_0x67d8('0x2b')](function(){_0x88a49c();})[_0x67d8('0x2e')](function(_0x3adf59){_0x88a49c(_0x3adf59);});},'afterDestroy':function(_0x452feb){return _0x41717a['VoiceExtension'][_0x67d8('0x40')]({'where':{'UserId':_0x452feb['id'],'type':_0x67d8('0x9')}});}},'instanceMethods':{'authenticate':function(_0x17be11,_0x3c4e7f){if(!_0x3c4e7f){return this['password']===this[_0x67d8('0x41')](_0x17be11);}var _0xfea9bc=this;this['encryptPassword'](_0x17be11,function(_0x1d44fa,_0x128985){if(_0x1d44fa){_0x3c4e7f(_0x1d44fa);}if(_0xfea9bc[_0x67d8('0x18')]===_0x128985){_0x3c4e7f(null,!![]);}else{_0x3c4e7f(null,![]);}});},'makeSalt':function(_0x255138,_0x4f07eb){var _0x5c9db8=0x10;if(typeof arguments[0x0]===_0x67d8('0x42')){_0x4f07eb=arguments[0x0];_0x255138=_0x5c9db8;}else if(typeof arguments[0x1]==='function'){_0x4f07eb=arguments[0x1];}else{throw new Error(_0x67d8('0x43'));}if(!_0x255138){_0x255138=_0x5c9db8;}return crypto[_0x67d8('0x44')](_0x255138,function(_0x553aa1,_0x3595ae){if(_0x553aa1){_0x4f07eb(_0x553aa1);}return _0x4f07eb(null,_0x3595ae[_0x67d8('0x45')]('base64'));});},'encryptPassword':function(_0x57aade,_0x4907b9){if(!_0x57aade||!this[_0x67d8('0x46')]){return _0x4907b9?_0x4907b9(null):null;}var _0x519744=0x2710;var _0x355810=0x40;var _0x24307e=new Buffer(this[_0x67d8('0x46')],'base64');if(!_0x4907b9){return crypto[_0x67d8('0x47')](_0x57aade,_0x24307e,_0x519744,_0x355810,_0x67d8('0x48'))[_0x67d8('0x45')](_0x67d8('0x49'));}return crypto[_0x67d8('0x4a')](_0x57aade,_0x24307e,_0x519744,_0x355810,'sha1',function(_0x53197c,_0x48792f){if(_0x53197c){_0x4907b9(_0x53197c);}return _0x4907b9(null,_0x48792f[_0x67d8('0x45')](_0x67d8('0x49')));});},'updatePassword':function(_0xf7fa17){if(!this[_0x67d8('0x18')]){return _0xf7fa17(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0x67d8('0x4b')](this['provider'])===-0x1){_0xf7fa17(new Error('Invalid\x20password'));}var _0x213f12=this;this[_0x67d8('0x4c')](function(_0x55d6f5,_0x5d4aad){if(_0x55d6f5){return _0xf7fa17(_0x55d6f5);}_0x213f12['salt']=_0x5d4aad;_0x213f12[_0x67d8('0x41')](_0x213f12[_0x67d8('0x18')],function(_0x10ba69,_0xabb08e){if(_0x10ba69){_0xf7fa17(_0x10ba69);}_0x213f12['password']=_0xabb08e;_0xf7fa17(null);});});},'updateMd5Password':function(){this[_0x67d8('0x4d')]=md5(this['name']+_0x67d8('0x4e')+this[_0x67d8('0x18')]);return this['md5secret'];},'getRealtimeData':function(){var _0x50e5ae={'id':this['id']};var _0x5c662c=jayson[_0x67d8('0x4f')][_0x67d8('0x50')]({'port':0x232a});var _0x34deb7=jayson[_0x67d8('0x4f')][_0x67d8('0x50')]({'port':0x232c});var _0x20c851={};var _0x456ba3={};return _0x5c662c[_0x67d8('0x51')](_0x67d8('0x52'),_0x50e5ae)[_0x67d8('0x2b')](function(_0x1b660b){if(_0x1b660b[_0x67d8('0x3d')]){throw new Error(_0x67d8('0x53'));}_0x20c851=_0x1b660b[_0x67d8('0x54')];return _0x34deb7[_0x67d8('0x51')](_0x67d8('0x52'),_0x50e5ae);})['then'](function(_0x5f6b85){if(_0x5f6b85[_0x67d8('0x3d')]){throw new Error(_0x67d8('0x55'));}_0x456ba3=_0x5f6b85[_0x67d8('0x54')];var _0x5ab9b7=_[_0x67d8('0xf')]({},_0x20c851,_0x456ba3);return _0x5ab9b7;})[_0x67d8('0x2e')](function(_0x318358){throw _0x318358;});}}});};
\ No newline at end of file
index c55d45e..da16e57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bb7=['findAll','options','raw','where','attributes','include','map','model','ShowUser','find','PauseUser','name','role','interface','UserVoiceQueueRt','update','MemberReport','format','YYYY-MM-DD\x20HH:mm:ss','length','updateAttributes','forEach','push','isNil','SIP/%s','PAUSE','body','type','DEFAULT\x20PAUSE','internal','bulkCreate','UnpauseUser','findOne','channel','isValidChannel','voice','system','mail','fax','sms','whatsapp','set','Pause','LogoutUser','destroy','all','LoginUser','mobile','phone','loginInPause','count','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','upsert','UserVoiceQueue.penalty','getChannels','merge','LOGIN','callysquare','LOGININPAUSE','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','redis','defaults','localhost','socket.io-emitter','./user.socket','register','request','then','info','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','User,\x20%s,\x20%s','message','result','catch','GetUser','User'];(function(_0x4aa4e6,_0x278c45){var _0x322588=function(_0x19279d){while(--_0x19279d){_0x4aa4e6['push'](_0x4aa4e6['shift']());}};_0x322588(++_0x278c45);}(_0x1bb7,0xf9));var _0x71bb=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x1bb7[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0x71bb('0x0'));var util=require(_0x71bb('0x1'));var moment=require(_0x71bb('0x2'));var BPromise=require(_0x71bb('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x71bb('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x71bb('0x5'));var logger=require(_0x71bb('0x6'))(_0x71bb('0x7'));var config=require('../../config/environment');var jayson=require(_0x71bb('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0x71bb('0x9')]=_[_0x71bb('0xa')](config[_0x71bb('0x9')],{'host':_0x71bb('0xb'),'port':0x18eb});var socket=require(_0x71bb('0xc'))(new Redis(config['redis']));require(_0x71bb('0xd'))[_0x71bb('0xe')](socket);function respondWithRpcPromise(_0x44ec3c,_0x372188,_0x2608d2){return new BPromise(function(_0x1ca390,_0x476823){return client[_0x71bb('0xf')](_0x44ec3c,_0x2608d2)[_0x71bb('0x10')](function(_0x754460){logger[_0x71bb('0x11')]('User,\x20%s,\x20%s',_0x372188,_0x71bb('0x12'));logger[_0x71bb('0x13')](_0x71bb('0x14'),_0x372188,_0x71bb('0x12'),JSON[_0x71bb('0x15')](_0x754460));if(_0x754460[_0x71bb('0x16')]){if(_0x754460[_0x71bb('0x16')][_0x71bb('0x17')]===0x1f4){logger[_0x71bb('0x16')](_0x71bb('0x18'),_0x372188,_0x754460[_0x71bb('0x16')][_0x71bb('0x19')]);return _0x476823(_0x754460[_0x71bb('0x16')][_0x71bb('0x19')]);}logger[_0x71bb('0x16')](_0x71bb('0x18'),_0x372188,_0x754460[_0x71bb('0x16')][_0x71bb('0x19')]);return _0x1ca390(_0x754460[_0x71bb('0x16')][_0x71bb('0x19')]);}else{logger[_0x71bb('0x11')](_0x71bb('0x18'),_0x372188,'request\x20sent');_0x1ca390(_0x754460[_0x71bb('0x1a')][_0x71bb('0x19')]);}})[_0x71bb('0x1b')](function(_0x3c6204){logger[_0x71bb('0x16')](_0x71bb('0x18'),_0x372188,_0x3c6204);_0x476823(_0x3c6204);});});}exports[_0x71bb('0x1c')]=function(_0x40902d){var _0x14438c=this;return new Promise(function(_0x3b7a27,_0x4260e1){return db[_0x71bb('0x1d')][_0x71bb('0x1e')]({'raw':_0x40902d[_0x71bb('0x1f')]?_0x40902d[_0x71bb('0x1f')][_0x71bb('0x20')]===undefined?!![]:![]:!![],'where':_0x40902d[_0x71bb('0x1f')]?_0x40902d[_0x71bb('0x1f')][_0x71bb('0x21')]||null:null,'attributes':_0x40902d[_0x71bb('0x1f')]?_0x40902d[_0x71bb('0x1f')][_0x71bb('0x22')]||null:null,'limit':_0x40902d[_0x71bb('0x1f')]?_0x40902d[_0x71bb('0x1f')]['limit']||null:null,'include':_0x40902d[_0x71bb('0x1f')]?_0x40902d[_0x71bb('0x1f')][_0x71bb('0x23')]?_[_0x71bb('0x24')](_0x40902d[_0x71bb('0x1f')][_0x71bb('0x23')],function(_0x573c19){return{'model':db[_0x573c19[_0x71bb('0x25')]],'as':_0x573c19['as'],'attributes':_0x573c19[_0x71bb('0x22')],'include':_0x573c19[_0x71bb('0x23')]?_[_0x71bb('0x24')](_0x573c19[_0x71bb('0x23')],function(_0x390525){return{'model':db[_0x390525[_0x71bb('0x25')]],'as':_0x390525['as'],'attributes':_0x390525[_0x71bb('0x22')],'include':_0x390525[_0x71bb('0x23')]?_['map'](_0x390525['include'],function(_0x12fa5e){return{'model':db[_0x12fa5e[_0x71bb('0x25')]],'as':_0x12fa5e['as'],'attributes':_0x12fa5e[_0x71bb('0x22')]};}):[]};}):[]};}):[]:[]})[_0x71bb('0x10')](function(_0x41f6c6){logger[_0x71bb('0x11')](_0x71bb('0x1c'),_0x40902d);logger[_0x71bb('0x13')](_0x71bb('0x1c'),_0x40902d,JSON[_0x71bb('0x15')](_0x41f6c6));_0x3b7a27(_0x41f6c6);})['catch'](function(_0x5c02ea){logger['error'](_0x71bb('0x1c'),_0x5c02ea['message'],_0x40902d);_0x4260e1(_0x14438c[_0x71bb('0x16')](0x1f4,_0x5c02ea['message']));});});};exports[_0x71bb('0x26')]=function(_0x16d6c1){var _0x184d4b=this;return new Promise(function(_0x5a281d,_0x5cac43){return db[_0x71bb('0x1d')][_0x71bb('0x27')]({'raw':_0x16d6c1['options']?_0x16d6c1[_0x71bb('0x1f')][_0x71bb('0x20')]===undefined?!![]:![]:!![],'where':_0x16d6c1[_0x71bb('0x1f')]?_0x16d6c1['options'][_0x71bb('0x21')]||null:null,'attributes':_0x16d6c1[_0x71bb('0x1f')]?_0x16d6c1[_0x71bb('0x1f')][_0x71bb('0x22')]||null:null,'include':_0x16d6c1['options']?_0x16d6c1[_0x71bb('0x1f')]['include']?_['map'](_0x16d6c1[_0x71bb('0x1f')]['include'],function(_0x3cd2c8){return{'model':db[_0x3cd2c8['model']],'as':_0x3cd2c8['as'],'attributes':_0x3cd2c8[_0x71bb('0x22')],'include':_0x3cd2c8[_0x71bb('0x23')]?_[_0x71bb('0x24')](_0x3cd2c8[_0x71bb('0x23')],function(_0x2185c8){return{'model':db[_0x2185c8[_0x71bb('0x25')]],'as':_0x2185c8['as'],'attributes':_0x2185c8[_0x71bb('0x22')],'include':_0x2185c8[_0x71bb('0x23')]?_[_0x71bb('0x24')](_0x2185c8[_0x71bb('0x23')],function(_0x4ee5f6){return{'model':db[_0x4ee5f6[_0x71bb('0x25')]],'as':_0x4ee5f6['as'],'attributes':_0x4ee5f6[_0x71bb('0x22')]};}):[]};}):[]};}):[]:[]})[_0x71bb('0x10')](function(_0xc51a21){logger['info'](_0x71bb('0x26'),_0x16d6c1);logger[_0x71bb('0x13')](_0x71bb('0x26'),_0x16d6c1,JSON[_0x71bb('0x15')](_0xc51a21));_0x5a281d(_0xc51a21);})[_0x71bb('0x1b')](function(_0x37923f){logger[_0x71bb('0x16')](_0x71bb('0x26'),_0x37923f[_0x71bb('0x19')],_0x16d6c1);_0x5cac43(_0x184d4b[_0x71bb('0x16')](0x1f4,_0x37923f[_0x71bb('0x19')]));});});};exports[_0x71bb('0x28')]=function(_0x3bd9dc){var _0x26b15c=this;return new Promise(function(_0x404918,_0x162a3a){var _0x5e77f9;return db['User']['find']({'where':_0x3bd9dc[_0x71bb('0x1f')][_0x71bb('0x21')]||{},'attributes':['id',_0x71bb('0x29'),_0x71bb('0x2a'),'internal',_0x71bb('0x2b')]})[_0x71bb('0x10')](function(_0x1cb6a7){if(_0x1cb6a7){_0x5e77f9=_0x1cb6a7;return db[_0x71bb('0x2c')][_0x71bb('0x2d')]({'paused':0x1},{'where':{'UserId':_0x5e77f9['id']},'individualHooks':!![]});}})[_0x71bb('0x10')](function(){if(_0x5e77f9){return db[_0x71bb('0x2e')][_0x71bb('0x1e')]({'where':{'membername':_0x5e77f9[_0x71bb('0x29')],'type':'PAUSE','exitAt':null}});}})[_0x71bb('0x10')](function(_0x2e0db4){if(_0x5e77f9){if(_0x2e0db4&&_0x2e0db4['length']){var _0x8c8c93=moment()[_0x71bb('0x2f')](_0x71bb('0x30'));for(var _0x1a59c9=0x0,_0x40dddf=_0x2e0db4[_0x71bb('0x31')];_0x1a59c9<_0x40dddf;_0x1a59c9++){_0x2e0db4[_0x1a59c9][_0x71bb('0x32')]({'exitAt':_0x8c8c93});}}}})['then'](function(){if(_0x5e77f9){var _0x1c0064=[];var _0x51c5bd=utils['getChannels']();_0x51c5bd[_0x71bb('0x33')](function(_0x22aa29){_0x1c0064[_0x71bb('0x34')]({'channel':_0x22aa29,'membername':_0x5e77f9[_0x71bb('0x29')],'interface':_[_0x71bb('0x35')](_0x5e77f9[_0x71bb('0x2b')])?util[_0x71bb('0x2f')](_0x71bb('0x36'),_0x5e77f9[_0x71bb('0x29')]):_0x5e77f9[_0x71bb('0x2b')],'type':_0x71bb('0x37'),'enterAt':moment()[_0x71bb('0x2f')](_0x71bb('0x30')),'data1':_0x3bd9dc[_0x71bb('0x38')][_0x71bb('0x39')]||_0x71bb('0x3a'),'role':_0x5e77f9[_0x71bb('0x2a')],'internal':_0x5e77f9[_0x71bb('0x3b')],'uniqueid':_0x3bd9dc[_0x71bb('0x38')]['uniqueid']||null});});return db['MemberReport'][_0x71bb('0x3c')](_0x1c0064,{'individualHooks':!![]});}})[_0x71bb('0x10')](function(){if(_0x5e77f9){return _0x5e77f9[_0x71bb('0x2d')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x3bd9dc[_0x71bb('0x38')][_0x71bb('0x39')]||_0x71bb('0x3a'),'lastPauseAt':moment()['format'](_0x71bb('0x30'))});}})[_0x71bb('0x10')](function(_0x207d3e){_0x404918(_0x207d3e);})[_0x71bb('0x1b')](function(_0x4e8bbb){_0x162a3a(_0x26b15c[_0x71bb('0x16')](0x1f4,_0x4e8bbb['message']));});});};exports[_0x71bb('0x3d')]=function(_0x34bdb9){var _0x59d5f2=this;return new Promise(function(_0xfbcdcb,_0x296cd7){var _0x42c553;return db[_0x71bb('0x1d')][_0x71bb('0x3e')]({'where':_0x34bdb9['options']['where']||{},'attributes':['id',_0x71bb('0x29')]})[_0x71bb('0x10')](function(_0x563684){if(_0x563684){_0x42c553=_0x563684;if(_0x34bdb9[_0x71bb('0x38')][_0x71bb('0x3f')]&&!utils[_0x71bb('0x40')](_0x34bdb9['body']['channel'])){throw new Error('Unknown\x20channel');}switch(_0x34bdb9[_0x71bb('0x38')][_0x71bb('0x3f')]){case _0x71bb('0x41'):return db[_0x71bb('0x2c')][_0x71bb('0x2d')]({'paused':0x0},{'where':{'UserId':_0x42c553['id']}})[_0x71bb('0x10')](function(){return db[_0x71bb('0x2e')][_0x71bb('0x27')]({'where':{'channel':_0x34bdb9['body'][_0x71bb('0x3f')],'membername':_0x42c553[_0x71bb('0x29')],'type':_0x71bb('0x37'),'exitAt':null}});})['then'](function(_0x2ccf90){if(_0x2ccf90){return _0x2ccf90[_0x71bb('0x2d')]({'exitAt':moment()[_0x71bb('0x2f')](_0x71bb('0x30')),'data2':_0x71bb('0x42')},{'individualHooks':!![]});}return null;})[_0x71bb('0x10')](function(){return _0x42c553[_0x71bb('0x2d')]({'voicePause':![]});});case _0x71bb('0x43'):case'chat':case _0x71bb('0x44'):case _0x71bb('0x45'):case'openchannel':case _0x71bb('0x46'):return db[_0x71bb('0x2e')][_0x71bb('0x27')]({'where':{'channel':_0x34bdb9['body'][_0x71bb('0x3f')],'membername':_0x42c553['name'],'type':_0x71bb('0x37'),'exitAt':null}})['then'](function(_0x3d04e6){return _0x3d04e6[_0x71bb('0x2d')]({'exitAt':moment()[_0x71bb('0x2f')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':'system'},{'individualHooks':!![]});})[_0x71bb('0x10')](function(){var _0x3442cb={};_[_0x71bb('0x47')](_0x3442cb,util[_0x71bb('0x2f')]('%s%s',_0x34bdb9['body'][_0x71bb('0x3f')],_0x71bb('0x48')),![]);return _0x42c553[_0x71bb('0x2d')](_0x3442cb);});default:return db['UserVoiceQueueRt'][_0x71bb('0x2d')]({'paused':0x0},{'where':{'UserId':_0x42c553['id']}})['then'](function(){return db['MemberReport']['findAll']({'where':{'membername':_0x42c553[_0x71bb('0x29')],'type':_0x71bb('0x37'),'exitAt':null}});})[_0x71bb('0x10')](function(_0x5cc275){var _0x4a7009=[];_0x5cc275['forEach'](function(_0x511056){_0x4a7009[_0x71bb('0x34')](_0x511056[_0x71bb('0x2d')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x71bb('0x42')}));});return BPromise['all'](_0x4a7009);})['then'](function(){return _0x42c553[_0x71bb('0x2d')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0x71bb('0x10')](function(_0x898dd5){_0xfbcdcb(_0x898dd5);})[_0x71bb('0x1b')](function(_0x2b6eed){_0x296cd7(_0x59d5f2[_0x71bb('0x16')](0x1f4,_0x2b6eed[_0x71bb('0x19')]));});});};exports[_0x71bb('0x49')]=function(_0x3b85a3){var _0x4515e0=this;return new Promise(function(_0x3d0040,_0x2a9cea){var _0x9fd57e;return db[_0x71bb('0x1d')][_0x71bb('0x3e')]({'where':_0x3b85a3[_0x71bb('0x1f')][_0x71bb('0x21')]||{},'attributes':['id',_0x71bb('0x29')]})[_0x71bb('0x10')](function(_0x1e9b8a){if(_0x1e9b8a){_0x9fd57e=_0x1e9b8a;return db[_0x71bb('0x2c')][_0x71bb('0x4a')]({'where':{'membername':_0x9fd57e[_0x71bb('0x29')]},'individualHooks':!![]});}})[_0x71bb('0x10')](function(){if(_0x9fd57e){return db[_0x71bb('0x2e')][_0x71bb('0x1e')]({'where':{'membername':_0x9fd57e[_0x71bb('0x29')],'exitAt':null}});}})['then'](function(_0x35b719){if(_0x9fd57e){if(_0x35b719&&_0x35b719[_0x71bb('0x31')]){var _0x525b82=[];_0x35b719[_0x71bb('0x33')](function(_0x3b1ea1){_0x525b82[_0x71bb('0x34')](_0x3b1ea1[_0x71bb('0x2d')]({'exitAt':moment()[_0x71bb('0x2f')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x71bb('0x4b')](_0x525b82);}}})[_0x71bb('0x10')](function(){if(_0x9fd57e){return _0x9fd57e[_0x71bb('0x2d')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x71bb('0x10')](function(_0x3168fd){_0x3d0040(_0x3168fd);})[_0x71bb('0x1b')](function(_0x4d692a){_0x2a9cea(_0x4515e0[_0x71bb('0x16')](0x1f4,_0x4d692a['message']));});});};exports[_0x71bb('0x4c')]=function(_0x2b6b41){var _0x4c576a=this;return new Promise(function(_0x2adab9,_0x3ad18b){var _0x3f2a20;var _0x51d18a;var _0x3d884f;var _0x4c3290;return db['User']['findOne']({'where':_0x2b6b41['options'][_0x71bb('0x21')]||{},'attributes':['id','name','role',_0x71bb('0x4d'),_0x71bb('0x4e'),_0x71bb('0x3b'),_0x71bb('0x4f'),'interface']})[_0x71bb('0x10')](function(_0x5c0498){if(_0x5c0498){_0x3f2a20=_0x5c0498;_0x4c3290=_0x2b6b41[_0x71bb('0x38')]['interface']?_0x2b6b41[_0x71bb('0x38')][_0x71bb('0x2b')]:util[_0x71bb('0x2f')]('SIP/%s',_0x3f2a20[_0x71bb('0x29')]);return db['User'][_0x71bb('0x50')]({'where':{'role':_0x71bb('0x51'),'online':!![],'id':{'$ne':_0x3f2a20['id']}}});}})[_0x71bb('0x10')](function(_0x510992){if(_0x510992){_0x3d884f=_0x510992;return require(_0x71bb('0x52'))[_0x71bb('0x53')]();}})[_0x71bb('0x10')](function(_0x5991c2){if(_0x5991c2&&_0x5991c2[_0x71bb('0x54')]&&_0x3d884f>=_0x5991c2[_0x71bb('0x54')]){throw new Error(_0x71bb('0x55'));}})[_0x71bb('0x10')](function(){if(_0x3f2a20){return db[_0x71bb('0x2c')][_0x71bb('0x4a')]({'where':{'membername':_0x3f2a20[_0x71bb('0x29')]},'individualHooks':!![]});}})[_0x71bb('0x10')](function(){if(_0x3f2a20){return _0x3f2a20['getVoiceQueues']({'raw':!![]});}})['then'](function(_0x1ba807){if(_0x3f2a20){if(_0x1ba807){var _0x4d1a98=[];_0x51d18a=_0x1ba807;if(_0x51d18a['length']){for(var _0x12b472=0x0;_0x12b472<_0x51d18a[_0x71bb('0x31')];_0x12b472++){_0x4d1a98[_0x71bb('0x34')](db[_0x71bb('0x2c')][_0x71bb('0x56')]({'membername':_0x3f2a20['name'],'UserId':_0x3f2a20['id'],'queue_name':_0x51d18a[_0x12b472][_0x71bb('0x29')],'VoiceQueueId':_0x51d18a[_0x12b472]['id'],'interface':_0x4c3290,'paused':_0x3f2a20['loginInPause']||![],'penalty':_0x51d18a[_0x12b472][_0x71bb('0x57')]||0x0}));}return BPromise[_0x71bb('0x4b')](_0x4d1a98);}}}})[_0x71bb('0x10')](function(){if(_0x3f2a20){return db[_0x71bb('0x2e')]['findAll']({'where':{'membername':_0x3f2a20[_0x71bb('0x29')],'exitAt':null}});}})[_0x71bb('0x10')](function(_0x5b41c3){if(_0x3f2a20){if(_0x5b41c3&&_0x5b41c3[_0x71bb('0x31')]){var _0x4c996c=[];_0x5b41c3[_0x71bb('0x33')](function(_0x2584f2){_0x4c996c['push'](_0x2584f2[_0x71bb('0x2d')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x71bb('0x4b')](_0x4c996c);}}})[_0x71bb('0x10')](function(_0x4fb0da){if(_0x3f2a20){var _0x30639d=[];var _0x314697=[];var _0x38b405=utils[_0x71bb('0x58')]();var _0x2e098b={'membername':_0x3f2a20[_0x71bb('0x29')],'interface':_0x4c3290,'enterAt':moment()[_0x71bb('0x2f')](_0x71bb('0x30')),'role':_0x3f2a20[_0x71bb('0x2a')],'internal':_0x3f2a20[_0x71bb('0x3b')]};_0x38b405[_0x71bb('0x33')](function(_0x775988){_0x30639d[_0x71bb('0x34')](_[_0x71bb('0x59')]({'channel':_0x775988,'type':_0x71bb('0x5a'),'data1':_0x71bb('0x5b'),'data2':_0x4c3290},_0x2e098b));if(_0x3f2a20[_0x71bb('0x4f')]){_0x314697[_0x71bb('0x34')](_[_0x71bb('0x59')]({'channel':_0x775988,'type':_0x71bb('0x37'),'data1':_0x71bb('0x5c')},_0x2e098b));}});return db[_0x71bb('0x2e')][_0x71bb('0x3c')](_0x30639d['concat'](_0x314697),{'individualHooks':!![]});}})[_0x71bb('0x10')](function(){if(_0x3f2a20){return _0x3f2a20[_0x71bb('0x2d')]({'online':!![],'lastLoginAt':moment()[_0x71bb('0x2f')](_0x71bb('0x30')),'voicePause':_0x3f2a20[_0x71bb('0x4f')]||![],'mailPause':_0x3f2a20['loginInPause']||![],'chatPause':_0x3f2a20[_0x71bb('0x4f')]||![],'faxPause':_0x3f2a20['loginInPause']||![],'smsPause':_0x3f2a20[_0x71bb('0x4f')]||![],'openchannelPause':_0x3f2a20['loginInPause']||![],'pauseType':_0x3f2a20['loginInPause']?_0x71bb('0x5c'):null,'lastPauseAt':moment()['format'](_0x71bb('0x30')),'interface':_0x4c3290});}})[_0x71bb('0x10')](function(_0x5d194e){_0x2adab9(_0x5d194e);})[_0x71bb('0x1b')](function(_0x3dbe7a){_0x3ad18b(_0x4c576a[_0x71bb('0x16')](0x1f4,_0x3dbe7a[_0x71bb('0x19')]));});});};
\ No newline at end of file
+var _0xdb2a=['User,\x20%s,\x20%s','request\x20sent','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','User','options','where','limit','include','map','attributes','model','GetUser','debug','find','ShowUser','PauseUser','name','role','interface','update','format','length','getChannels','forEach','push','isNil','SIP/%s','PAUSE','YYYY-MM-DD\x20HH:mm:ss','body','type','DEFAULT\x20PAUSE','internal','uniqueid','MemberReport','bulkCreate','UnpauseUser','findOne','channel','isValidChannel','voice','UserVoiceQueueRt','fax','openchannel','system','%s%s','Pause','findAll','all','LogoutUser','LoginUser','phone','loginInPause','count','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','destroy','getVoiceQueues','upsert','UserVoiceQueue.penalty','merge','LOGIN','callysquare','LOGININPAUSE','concat','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','socket.io-emitter','./user.socket','then','info'];(function(_0x43a37c,_0x25a567){var _0x5d1d40=function(_0x3ec673){while(--_0x3ec673){_0x43a37c['push'](_0x43a37c['shift']());}};_0x5d1d40(++_0x25a567);}(_0xdb2a,0x106));var _0xadb2=function(_0x33346d,_0x50ec3e){_0x33346d=_0x33346d-0x0;var _0x672eb9=_0xdb2a[_0x33346d];return _0x672eb9;};'use strict';var _=require(_0xadb2('0x0'));var util=require(_0xadb2('0x1'));var moment=require(_0xadb2('0x2'));var BPromise=require(_0xadb2('0x3'));var rs=require(_0xadb2('0x4'));var fs=require('fs');var Redis=require(_0xadb2('0x5'));var db=require(_0xadb2('0x6'))['db'];var utils=require(_0xadb2('0x7'));var logger=require(_0xadb2('0x8'))(_0xadb2('0x9'));var config=require(_0xadb2('0xa'));var jayson=require(_0xadb2('0xb'));var client=jayson[_0xadb2('0xc')][_0xadb2('0xd')]({'port':0x232a});config['redis']=_[_0xadb2('0xe')](config[_0xadb2('0xf')],{'host':'localhost','port':0x18eb});var socket=require(_0xadb2('0x10'))(new Redis(config[_0xadb2('0xf')]));require(_0xadb2('0x11'))['register'](socket);function respondWithRpcPromise(_0x51d690,_0x35d507,_0x3ae58c){return new BPromise(function(_0x3139f7,_0x159f75){return client['request'](_0x51d690,_0x3ae58c)[_0xadb2('0x12')](function(_0x44498a){logger[_0xadb2('0x13')](_0xadb2('0x14'),_0x35d507,_0xadb2('0x15'));logger['debug'](_0xadb2('0x16'),_0x35d507,_0xadb2('0x15'),JSON[_0xadb2('0x17')](_0x44498a));if(_0x44498a['error']){if(_0x44498a[_0xadb2('0x18')][_0xadb2('0x19')]===0x1f4){logger[_0xadb2('0x18')](_0xadb2('0x14'),_0x35d507,_0x44498a[_0xadb2('0x18')][_0xadb2('0x1a')]);return _0x159f75(_0x44498a[_0xadb2('0x18')][_0xadb2('0x1a')]);}logger[_0xadb2('0x18')](_0xadb2('0x14'),_0x35d507,_0x44498a[_0xadb2('0x18')][_0xadb2('0x1a')]);return _0x3139f7(_0x44498a[_0xadb2('0x18')][_0xadb2('0x1a')]);}else{logger['info']('User,\x20%s,\x20%s',_0x35d507,_0xadb2('0x15'));_0x3139f7(_0x44498a[_0xadb2('0x1b')][_0xadb2('0x1a')]);}})[_0xadb2('0x1c')](function(_0x59f020){logger['error'](_0xadb2('0x14'),_0x35d507,_0x59f020);_0x159f75(_0x59f020);});});}exports['GetUser']=function(_0xc3e9f8){var _0x2dbf48=this;return new Promise(function(_0x41a0dc,_0x41fe5b){return db[_0xadb2('0x1d')]['findAll']({'raw':_0xc3e9f8[_0xadb2('0x1e')]?_0xc3e9f8[_0xadb2('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0xc3e9f8['options']?_0xc3e9f8[_0xadb2('0x1e')][_0xadb2('0x1f')]||null:null,'attributes':_0xc3e9f8['options']?_0xc3e9f8[_0xadb2('0x1e')]['attributes']||null:null,'limit':_0xc3e9f8[_0xadb2('0x1e')]?_0xc3e9f8[_0xadb2('0x1e')][_0xadb2('0x20')]||null:null,'include':_0xc3e9f8[_0xadb2('0x1e')]?_0xc3e9f8['options'][_0xadb2('0x21')]?_[_0xadb2('0x22')](_0xc3e9f8[_0xadb2('0x1e')][_0xadb2('0x21')],function(_0x3f4024){return{'model':db[_0x3f4024['model']],'as':_0x3f4024['as'],'attributes':_0x3f4024[_0xadb2('0x23')],'include':_0x3f4024[_0xadb2('0x21')]?_[_0xadb2('0x22')](_0x3f4024['include'],function(_0x1bd30b){return{'model':db[_0x1bd30b[_0xadb2('0x24')]],'as':_0x1bd30b['as'],'attributes':_0x1bd30b[_0xadb2('0x23')],'include':_0x1bd30b[_0xadb2('0x21')]?_['map'](_0x1bd30b[_0xadb2('0x21')],function(_0x3d0b68){return{'model':db[_0x3d0b68[_0xadb2('0x24')]],'as':_0x3d0b68['as'],'attributes':_0x3d0b68[_0xadb2('0x23')]};}):[]};}):[]};}):[]:[]})[_0xadb2('0x12')](function(_0x22d03e){logger[_0xadb2('0x13')](_0xadb2('0x25'),_0xc3e9f8);logger[_0xadb2('0x26')](_0xadb2('0x25'),_0xc3e9f8,JSON[_0xadb2('0x17')](_0x22d03e));_0x41a0dc(_0x22d03e);})[_0xadb2('0x1c')](function(_0x57e0ab){logger[_0xadb2('0x18')](_0xadb2('0x25'),_0x57e0ab[_0xadb2('0x1a')],_0xc3e9f8);_0x41fe5b(_0x2dbf48[_0xadb2('0x18')](0x1f4,_0x57e0ab[_0xadb2('0x1a')]));});});};exports['ShowUser']=function(_0x4384aa){var _0x2587cb=this;return new Promise(function(_0x5d913a,_0x56cc3c){return db[_0xadb2('0x1d')][_0xadb2('0x27')]({'raw':_0x4384aa[_0xadb2('0x1e')]?_0x4384aa[_0xadb2('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x4384aa['options']?_0x4384aa[_0xadb2('0x1e')]['where']||null:null,'attributes':_0x4384aa[_0xadb2('0x1e')]?_0x4384aa[_0xadb2('0x1e')][_0xadb2('0x23')]||null:null,'include':_0x4384aa['options']?_0x4384aa[_0xadb2('0x1e')]['include']?_[_0xadb2('0x22')](_0x4384aa[_0xadb2('0x1e')][_0xadb2('0x21')],function(_0x1ee575){return{'model':db[_0x1ee575[_0xadb2('0x24')]],'as':_0x1ee575['as'],'attributes':_0x1ee575['attributes'],'include':_0x1ee575[_0xadb2('0x21')]?_[_0xadb2('0x22')](_0x1ee575[_0xadb2('0x21')],function(_0x16077f){return{'model':db[_0x16077f[_0xadb2('0x24')]],'as':_0x16077f['as'],'attributes':_0x16077f[_0xadb2('0x23')],'include':_0x16077f['include']?_[_0xadb2('0x22')](_0x16077f[_0xadb2('0x21')],function(_0x1a6b92){return{'model':db[_0x1a6b92[_0xadb2('0x24')]],'as':_0x1a6b92['as'],'attributes':_0x1a6b92[_0xadb2('0x23')]};}):[]};}):[]};}):[]:[]})[_0xadb2('0x12')](function(_0x5f0b65){logger[_0xadb2('0x13')](_0xadb2('0x28'),_0x4384aa);logger[_0xadb2('0x26')]('ShowUser',_0x4384aa,JSON[_0xadb2('0x17')](_0x5f0b65));_0x5d913a(_0x5f0b65);})[_0xadb2('0x1c')](function(_0x1dbf28){logger[_0xadb2('0x18')](_0xadb2('0x28'),_0x1dbf28['message'],_0x4384aa);_0x56cc3c(_0x2587cb[_0xadb2('0x18')](0x1f4,_0x1dbf28[_0xadb2('0x1a')]));});});};exports[_0xadb2('0x29')]=function(_0x2c7deb){var _0x40495a=this;return new Promise(function(_0x427d18,_0x36d42d){var _0x9b3c75;return db['User'][_0xadb2('0x27')]({'where':_0x2c7deb[_0xadb2('0x1e')]['where']||{},'attributes':['id',_0xadb2('0x2a'),_0xadb2('0x2b'),'internal',_0xadb2('0x2c')]})[_0xadb2('0x12')](function(_0x538c8e){if(_0x538c8e){_0x9b3c75=_0x538c8e;return db['UserVoiceQueueRt'][_0xadb2('0x2d')]({'paused':0x1},{'where':{'UserId':_0x9b3c75['id']},'individualHooks':!![]});}})[_0xadb2('0x12')](function(){if(_0x9b3c75){return db['MemberReport']['findAll']({'where':{'membername':_0x9b3c75[_0xadb2('0x2a')],'type':'PAUSE','exitAt':null}});}})[_0xadb2('0x12')](function(_0x335c44){if(_0x9b3c75){if(_0x335c44&&_0x335c44['length']){var _0x111dda=moment()[_0xadb2('0x2e')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x90842b=0x0,_0x321ae3=_0x335c44[_0xadb2('0x2f')];_0x90842b<_0x321ae3;_0x90842b++){_0x335c44[_0x90842b]['updateAttributes']({'exitAt':_0x111dda});}}}})[_0xadb2('0x12')](function(){if(_0x9b3c75){var _0x236389=[];var _0x79d1d7=utils[_0xadb2('0x30')]();_0x79d1d7[_0xadb2('0x31')](function(_0x393b1a){_0x236389[_0xadb2('0x32')]({'channel':_0x393b1a,'membername':_0x9b3c75[_0xadb2('0x2a')],'interface':_[_0xadb2('0x33')](_0x9b3c75[_0xadb2('0x2c')])?util[_0xadb2('0x2e')](_0xadb2('0x34'),_0x9b3c75['name']):_0x9b3c75[_0xadb2('0x2c')],'type':_0xadb2('0x35'),'enterAt':moment()[_0xadb2('0x2e')](_0xadb2('0x36')),'data1':_0x2c7deb[_0xadb2('0x37')][_0xadb2('0x38')]||_0xadb2('0x39'),'role':_0x9b3c75[_0xadb2('0x2b')],'internal':_0x9b3c75[_0xadb2('0x3a')],'uniqueid':_0x2c7deb[_0xadb2('0x37')][_0xadb2('0x3b')]||null});});return db[_0xadb2('0x3c')][_0xadb2('0x3d')](_0x236389,{'individualHooks':!![]});}})['then'](function(){if(_0x9b3c75){return _0x9b3c75[_0xadb2('0x2d')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x2c7deb[_0xadb2('0x37')][_0xadb2('0x38')]||_0xadb2('0x39'),'lastPauseAt':moment()[_0xadb2('0x2e')](_0xadb2('0x36'))});}})['then'](function(_0x11e154){_0x427d18(_0x11e154);})[_0xadb2('0x1c')](function(_0x56df9f){_0x36d42d(_0x40495a[_0xadb2('0x18')](0x1f4,_0x56df9f[_0xadb2('0x1a')]));});});};exports[_0xadb2('0x3e')]=function(_0x36a30a){var _0x3f253d=this;return new Promise(function(_0x244f38,_0x3d6474){var _0x261606;return db['User'][_0xadb2('0x3f')]({'where':_0x36a30a[_0xadb2('0x1e')][_0xadb2('0x1f')]||{},'attributes':['id',_0xadb2('0x2a')]})[_0xadb2('0x12')](function(_0x63d1e4){if(_0x63d1e4){_0x261606=_0x63d1e4;if(_0x36a30a[_0xadb2('0x37')][_0xadb2('0x40')]&&!utils[_0xadb2('0x41')](_0x36a30a[_0xadb2('0x37')][_0xadb2('0x40')])){throw new Error('Unknown\x20channel');}switch(_0x36a30a[_0xadb2('0x37')][_0xadb2('0x40')]){case _0xadb2('0x42'):return db[_0xadb2('0x43')][_0xadb2('0x2d')]({'paused':0x0},{'where':{'UserId':_0x261606['id']}})[_0xadb2('0x12')](function(){return db[_0xadb2('0x3c')][_0xadb2('0x27')]({'where':{'channel':_0x36a30a['body']['channel'],'membername':_0x261606[_0xadb2('0x2a')],'type':_0xadb2('0x35'),'exitAt':null}});})['then'](function(_0x47e2b7){if(_0x47e2b7){return _0x47e2b7[_0xadb2('0x2d')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data2':'system'},{'individualHooks':!![]});}return null;})[_0xadb2('0x12')](function(){return _0x261606['update']({'voicePause':![]});});case'mail':case'chat':case _0xadb2('0x44'):case'sms':case _0xadb2('0x45'):case'whatsapp':return db['MemberReport'][_0xadb2('0x27')]({'where':{'channel':_0x36a30a[_0xadb2('0x37')][_0xadb2('0x40')],'membername':_0x261606[_0xadb2('0x2a')],'type':_0xadb2('0x35'),'exitAt':null}})[_0xadb2('0x12')](function(_0x510e74){return _0x510e74[_0xadb2('0x2d')]({'exitAt':moment()['format'](_0xadb2('0x36')),'data2':_0xadb2('0x46')},{'individualHooks':!![]});})['then'](function(){var _0x3da18d={};_['set'](_0x3da18d,util[_0xadb2('0x2e')](_0xadb2('0x47'),_0x36a30a[_0xadb2('0x37')][_0xadb2('0x40')],_0xadb2('0x48')),![]);return _0x261606[_0xadb2('0x2d')](_0x3da18d);});default:return db[_0xadb2('0x43')]['update']({'paused':0x0},{'where':{'UserId':_0x261606['id']}})['then'](function(){return db['MemberReport'][_0xadb2('0x49')]({'where':{'membername':_0x261606[_0xadb2('0x2a')],'type':_0xadb2('0x35'),'exitAt':null}});})[_0xadb2('0x12')](function(_0x3e427b){var _0x51b73b=[];_0x3e427b['forEach'](function(_0x1ad455){_0x51b73b[_0xadb2('0x32')](_0x1ad455[_0xadb2('0x2d')]({'exitAt':moment()[_0xadb2('0x2e')](_0xadb2('0x36')),'data2':_0xadb2('0x46')}));});return BPromise[_0xadb2('0x4a')](_0x51b73b);})['then'](function(){return _0x261606[_0xadb2('0x2d')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0xadb2('0x12')](function(_0x1e8c84){_0x244f38(_0x1e8c84);})[_0xadb2('0x1c')](function(_0x16b62f){_0x3d6474(_0x3f253d['error'](0x1f4,_0x16b62f[_0xadb2('0x1a')]));});});};exports[_0xadb2('0x4b')]=function(_0x316c6c){var _0x31d28d=this;return new Promise(function(_0x53daf8,_0x10c7fc){var _0x48225d;return db[_0xadb2('0x1d')][_0xadb2('0x3f')]({'where':_0x316c6c[_0xadb2('0x1e')][_0xadb2('0x1f')]||{},'attributes':['id',_0xadb2('0x2a')]})[_0xadb2('0x12')](function(_0x33ba32){if(_0x33ba32){_0x48225d=_0x33ba32;return db[_0xadb2('0x43')]['destroy']({'where':{'membername':_0x48225d[_0xadb2('0x2a')]},'individualHooks':!![]});}})['then'](function(){if(_0x48225d){return db['MemberReport'][_0xadb2('0x49')]({'where':{'membername':_0x48225d['name'],'exitAt':null}});}})[_0xadb2('0x12')](function(_0x981d92){if(_0x48225d){if(_0x981d92&&_0x981d92[_0xadb2('0x2f')]){var _0x2349ec=[];_0x981d92[_0xadb2('0x31')](function(_0x21791b){_0x2349ec['push'](_0x21791b['update']({'exitAt':moment()[_0xadb2('0x2e')](_0xadb2('0x36'))}));});return BPromise['all'](_0x2349ec);}}})['then'](function(){if(_0x48225d){return _0x48225d['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xadb2('0x12')](function(_0xa2619f){_0x53daf8(_0xa2619f);})[_0xadb2('0x1c')](function(_0x11e6ae){_0x10c7fc(_0x31d28d[_0xadb2('0x18')](0x1f4,_0x11e6ae[_0xadb2('0x1a')]));});});};exports[_0xadb2('0x4c')]=function(_0x3e5e9b){var _0x46d4cb=this;return new Promise(function(_0x395a61,_0x4c28ff){var _0xcbf8d4;var _0x2788d1;var _0x596ca5;var _0x5aa47d;return db['User'][_0xadb2('0x3f')]({'where':_0x3e5e9b['options'][_0xadb2('0x1f')]||{},'attributes':['id',_0xadb2('0x2a'),_0xadb2('0x2b'),'mobile',_0xadb2('0x4d'),_0xadb2('0x3a'),_0xadb2('0x4e'),_0xadb2('0x2c')]})['then'](function(_0x14384b){if(_0x14384b){_0xcbf8d4=_0x14384b;_0x5aa47d=_0x3e5e9b[_0xadb2('0x37')]['interface']?_0x3e5e9b[_0xadb2('0x37')][_0xadb2('0x2c')]:util[_0xadb2('0x2e')](_0xadb2('0x34'),_0xcbf8d4[_0xadb2('0x2a')]);return db[_0xadb2('0x1d')][_0xadb2('0x4f')]({'where':{'role':_0xadb2('0x50'),'online':!![],'id':{'$ne':_0xcbf8d4['id']}}});}})[_0xadb2('0x12')](function(_0x3de8af){if(_0x3de8af){_0x596ca5=_0x3de8af;return require(_0xadb2('0x51'))[_0xadb2('0x52')]();}})[_0xadb2('0x12')](function(_0x37f243){if(_0x37f243&&_0x37f243[_0xadb2('0x53')]&&_0x596ca5>=_0x37f243[_0xadb2('0x53')]){throw new Error(_0xadb2('0x54'));}})[_0xadb2('0x12')](function(){if(_0xcbf8d4){return db[_0xadb2('0x43')][_0xadb2('0x55')]({'where':{'membername':_0xcbf8d4[_0xadb2('0x2a')]},'individualHooks':!![]});}})[_0xadb2('0x12')](function(){if(_0xcbf8d4){return _0xcbf8d4[_0xadb2('0x56')]({'raw':!![]});}})[_0xadb2('0x12')](function(_0x3be969){if(_0xcbf8d4){if(_0x3be969){var _0x87538e=[];_0x2788d1=_0x3be969;if(_0x2788d1[_0xadb2('0x2f')]){for(var _0x8a258c=0x0;_0x8a258c<_0x2788d1[_0xadb2('0x2f')];_0x8a258c++){_0x87538e[_0xadb2('0x32')](db[_0xadb2('0x43')][_0xadb2('0x57')]({'membername':_0xcbf8d4[_0xadb2('0x2a')],'UserId':_0xcbf8d4['id'],'queue_name':_0x2788d1[_0x8a258c][_0xadb2('0x2a')],'VoiceQueueId':_0x2788d1[_0x8a258c]['id'],'interface':_0x5aa47d,'paused':_0xcbf8d4[_0xadb2('0x4e')]||![],'penalty':_0x2788d1[_0x8a258c][_0xadb2('0x58')]||0x0}));}return BPromise[_0xadb2('0x4a')](_0x87538e);}}}})[_0xadb2('0x12')](function(){if(_0xcbf8d4){return db['MemberReport']['findAll']({'where':{'membername':_0xcbf8d4[_0xadb2('0x2a')],'exitAt':null}});}})[_0xadb2('0x12')](function(_0x288781){if(_0xcbf8d4){if(_0x288781&&_0x288781[_0xadb2('0x2f')]){var _0x54b37a=[];_0x288781[_0xadb2('0x31')](function(_0x286f31){_0x54b37a[_0xadb2('0x32')](_0x286f31[_0xadb2('0x2d')]({'exitAt':moment()[_0xadb2('0x2e')](_0xadb2('0x36'))}));});return BPromise['all'](_0x54b37a);}}})[_0xadb2('0x12')](function(_0x487468){if(_0xcbf8d4){var _0x5929e5=[];var _0x369c5d=[];var _0x5c95b6=utils[_0xadb2('0x30')]();var _0x40823f={'membername':_0xcbf8d4['name'],'interface':_0x5aa47d,'enterAt':moment()[_0xadb2('0x2e')](_0xadb2('0x36')),'role':_0xcbf8d4[_0xadb2('0x2b')],'internal':_0xcbf8d4['internal']};_0x5c95b6[_0xadb2('0x31')](function(_0x317129){_0x5929e5[_0xadb2('0x32')](_[_0xadb2('0x59')]({'channel':_0x317129,'type':_0xadb2('0x5a'),'data1':_0xadb2('0x5b'),'data2':_0x5aa47d},_0x40823f));if(_0xcbf8d4[_0xadb2('0x4e')]){_0x369c5d[_0xadb2('0x32')](_[_0xadb2('0x59')]({'channel':_0x317129,'type':'PAUSE','data1':_0xadb2('0x5c')},_0x40823f));}});return db['MemberReport'][_0xadb2('0x3d')](_0x5929e5[_0xadb2('0x5d')](_0x369c5d),{'individualHooks':!![]});}})[_0xadb2('0x12')](function(){if(_0xcbf8d4){return _0xcbf8d4[_0xadb2('0x2d')]({'online':!![],'lastLoginAt':moment()[_0xadb2('0x2e')](_0xadb2('0x36')),'voicePause':_0xcbf8d4['loginInPause']||![],'mailPause':_0xcbf8d4[_0xadb2('0x4e')]||![],'chatPause':_0xcbf8d4[_0xadb2('0x4e')]||![],'faxPause':_0xcbf8d4[_0xadb2('0x4e')]||![],'smsPause':_0xcbf8d4[_0xadb2('0x4e')]||![],'openchannelPause':_0xcbf8d4['loginInPause']||![],'pauseType':_0xcbf8d4[_0xadb2('0x4e')]?'LOGININPAUSE':null,'lastPauseAt':moment()[_0xadb2('0x2e')]('YYYY-MM-DD\x20HH:mm:ss'),'interface':_0x5aa47d});}})[_0xadb2('0x12')](function(_0x3fdccc){_0x395a61(_0x3fdccc);})[_0xadb2('0x1c')](function(_0xfa461f){_0x4c28ff(_0x46d4cb['error'](0x1f4,_0xfa461f[_0xadb2('0x1a')]));});});};
\ No newline at end of file
index 978108e..8bd78df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0246=['removeListener','length','./user.events','update'];(function(_0x4b4154,_0x38a122){var _0x340ed7=function(_0x1250b9){while(--_0x1250b9){_0x4b4154['push'](_0x4b4154['shift']());}};_0x340ed7(++_0x38a122);}(_0x0246,0x1ae));var _0x6024=function(_0x2e4c84,_0xc6e7b2){_0x2e4c84=_0x2e4c84-0x0;var _0x4c0cd4=_0x0246[_0x2e4c84];return _0x4c0cd4;};'use strict';var UserEvents=require(_0x6024('0x0'));var events=['save','remove',_0x6024('0x1')];function createListener(_0x377d50,_0xd463ac){return function(_0x4a484a){_0xd463ac['emit'](_0x377d50,_0x4a484a);};}function removeListener(_0x2ef987,_0x20881a){return function(){UserEvents[_0x6024('0x2')](_0x2ef987,_0x20881a);};}exports['register']=function(_0x1d36c6){for(var _0x246022=0x0,_0x50c257=events[_0x6024('0x3')];_0x246022<_0x50c257;_0x246022++){var _0x77bda=events[_0x246022];var _0x309d3e=createListener('user:'+_0x77bda,_0x1d36c6);UserEvents['on'](_0x77bda,_0x309d3e);}};
\ No newline at end of file
+var _0x98d8=['emit','removeListener','register','./user.events','save','remove'];(function(_0x5a5c11,_0x358f6b){var _0x5d6ba7=function(_0x272c72){while(--_0x272c72){_0x5a5c11['push'](_0x5a5c11['shift']());}};_0x5d6ba7(++_0x358f6b);}(_0x98d8,0x1d7));var _0x898d=function(_0x29af0e,_0x35f669){_0x29af0e=_0x29af0e-0x0;var _0x349e39=_0x98d8[_0x29af0e];return _0x349e39;};'use strict';var UserEvents=require(_0x898d('0x0'));var events=[_0x898d('0x1'),_0x898d('0x2'),'update'];function createListener(_0x1effc4,_0x4298f2){return function(_0x68db18){_0x4298f2[_0x898d('0x3')](_0x1effc4,_0x68db18);};}function removeListener(_0x3fe46b,_0x230cc1){return function(){UserEvents[_0x898d('0x4')](_0x3fe46b,_0x230cc1);};}exports[_0x898d('0x5')]=function(_0x9489f4){for(var _0x137ebb=0x0,_0x3a2c3a=events['length'];_0x137ebb<_0x3a2c3a;_0x137ebb++){var _0x381101=events[_0x137ebb];var _0x3d38fa=createListener('user:'+_0x381101,_0x9489f4);UserEvents['on'](_0x381101,_0x3d38fa);}};
\ No newline at end of file
index 58bea91..c781fba 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(_0x316723,_0x546854){var _0x187fd6=function(_0x916794){while(--_0x916794){_0x316723['push'](_0x316723['shift']());}};_0x187fd6(++_0x546854);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x1de4b8,_0x529b41){_0x1de4b8=_0x1de4b8-0x0;var _0x557699=_0xcb91[_0x1de4b8];return _0x557699;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x20429c,_0x5bc255){var _0xd4135=function(_0x4d67ed){while(--_0x4d67ed){_0x20429c['push'](_0x20429c['shift']());}};_0xd4135(++_0x5bc255);}(_0xa9e0,0x123));var _0x0a9e=function(_0x298ed3,_0x4ab5e1){_0x298ed3=_0x298ed3-0x0;var _0x5aad28=_0xa9e0[_0x298ed3];return _0x5aad28;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index 8eb2a6c..19d2597 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa12b=['sequelize','INTEGER'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa12b,0xf0));var _0xba12=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa12b[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xba12('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xba12('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xf5fe=['INTEGER','exports'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0xf5fe,0x9d));var _0xef5f=function(_0x58e448,_0x5242fe){_0x58e448=_0x58e448-0x0;var _0x9f48a7=_0xf5fe[_0x58e448];return _0x9f48a7;};'use strict';var Sequelize=require('sequelize');module[_0xef5f('0x0')]={'penalty':{'type':Sequelize[_0xef5f('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 2aa01b4..cfee481 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6ea=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','UserChatQueue','lodash','util','../../config/logger'];(function(_0x4e0ce2,_0x169ce1){var _0x164ff6=function(_0x58c95f){while(--_0x58c95f){_0x4e0ce2['push'](_0x4e0ce2['shift']());}};_0x164ff6(++_0x169ce1);}(_0xb6ea,0x1b7));var _0xab6e=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xb6ea[_0x2641f9];return _0x585741;};'use strict';var _=require(_0xab6e('0x0'));var util=require(_0xab6e('0x1'));var logger=require(_0xab6e('0x2'))(_0xab6e('0x3'));var moment=require(_0xab6e('0x4'));var BPromise=require(_0xab6e('0x5'));var rp=require(_0xab6e('0x6'));var fs=require('fs');var path=require(_0xab6e('0x7'));var rimraf=require(_0xab6e('0x8'));var config=require(_0xab6e('0x9'));var attributes=require('./userChatQueue.attributes');module[_0xab6e('0xa')]=function(_0x53e308,_0x1c85da){return _0x53e308[_0xab6e('0xb')](_0xab6e('0xc'),attributes,{'tableName':'user_has_chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf82a=['exports','define','UserChatQueue','user_has_chat_queues','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment'];(function(_0x55df10,_0x31a79){var _0xa223db=function(_0x2dd41d){while(--_0x2dd41d){_0x55df10['push'](_0x55df10['shift']());}};_0xa223db(++_0x31a79);}(_0xf82a,0x7d));var _0xaf82=function(_0x4e6c78,_0x18baf1){_0x4e6c78=_0x4e6c78-0x0;var _0x19a522=_0xf82a[_0x4e6c78];return _0x19a522;};'use strict';var _=require('lodash');var util=require(_0xaf82('0x0'));var logger=require(_0xaf82('0x1'))(_0xaf82('0x2'));var moment=require(_0xaf82('0x3'));var BPromise=require(_0xaf82('0x4'));var rp=require(_0xaf82('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xaf82('0x6'));var attributes=require('./userChatQueue.attributes');module[_0xaf82('0x7')]=function(_0x12617e,_0x911b22){return _0x12617e[_0xaf82('0x8')](_0xaf82('0x9'),attributes,{'tableName':_0xaf82('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1038707..8a5cc42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a9f=['error','code','UserChatQueue,\x20%s,\x20%s','message','result','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','then','info','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x3fd9d8,_0x9a1892){var _0x181131=function(_0x5a0d16){while(--_0x5a0d16){_0x3fd9d8['push'](_0x3fd9d8['shift']());}};_0x181131(++_0x9a1892);}(_0x0a9f,0x1bf));var _0xf0a9=function(_0x15c19a,_0xd4667b){_0x15c19a=_0x15c19a-0x0;var _0x3290d9=_0x0a9f[_0x15c19a];return _0x3290d9;};'use strict';var _=require('lodash');var util=require(_0xf0a9('0x0'));var moment=require('moment');var BPromise=require(_0xf0a9('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf0a9('0x2'));var db=require(_0xf0a9('0x3'))['db'];var utils=require(_0xf0a9('0x4'));var logger=require(_0xf0a9('0x5'))(_0xf0a9('0x6'));var config=require('../../config/environment');var jayson=require(_0xf0a9('0x7'));var client=jayson['client'][_0xf0a9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x538291,_0x1629f9,_0x4a1082){return new BPromise(function(_0x3348f7,_0x4ec383){return client['request'](_0x538291,_0x4a1082)[_0xf0a9('0x9')](function(_0x311a0f){logger[_0xf0a9('0xa')]('UserChatQueue,\x20%s,\x20%s',_0x1629f9,_0xf0a9('0xb'));logger[_0xf0a9('0xc')](_0xf0a9('0xd'),_0x1629f9,_0xf0a9('0xb'),JSON[_0xf0a9('0xe')](_0x311a0f));if(_0x311a0f['error']){if(_0x311a0f[_0xf0a9('0xf')][_0xf0a9('0x10')]===0x1f4){logger['error'](_0xf0a9('0x11'),_0x1629f9,_0x311a0f[_0xf0a9('0xf')][_0xf0a9('0x12')]);return _0x4ec383(_0x311a0f['error'][_0xf0a9('0x12')]);}logger['error'](_0xf0a9('0x11'),_0x1629f9,_0x311a0f[_0xf0a9('0xf')][_0xf0a9('0x12')]);return _0x3348f7(_0x311a0f[_0xf0a9('0xf')][_0xf0a9('0x12')]);}else{logger['info'](_0xf0a9('0x11'),_0x1629f9,_0xf0a9('0xb'));_0x3348f7(_0x311a0f[_0xf0a9('0x13')]['message']);}})[_0xf0a9('0x14')](function(_0x34821c){logger[_0xf0a9('0xf')](_0xf0a9('0x11'),_0x1629f9,_0x34821c);_0x4ec383(_0x34821c);});});}
\ No newline at end of file
+var _0xa713=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','then','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','UserChatQueue,\x20%s,\x20%s','message','result','catch','moment','bluebird'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa713,0x1f2));var _0x3a71=function(_0x2b9126,_0x1e7f82){_0x2b9126=_0x2b9126-0x0;var _0x4e593e=_0xa713[_0x2b9126];return _0x4e593e;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3a71('0x0'));var BPromise=require(_0x3a71('0x1'));var rs=require(_0x3a71('0x2'));var fs=require('fs');var Redis=require(_0x3a71('0x3'));var db=require(_0x3a71('0x4'))['db'];var utils=require(_0x3a71('0x5'));var logger=require(_0x3a71('0x6'))(_0x3a71('0x7'));var config=require(_0x3a71('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x3a71('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x383f87,_0x9955c3,_0x5ba76f){return new BPromise(function(_0x104195,_0x1b2077){return client['request'](_0x383f87,_0x5ba76f)[_0x3a71('0xa')](function(_0x507c7e){logger['info']('UserChatQueue,\x20%s,\x20%s',_0x9955c3,'request\x20sent');logger[_0x3a71('0xb')](_0x3a71('0xc'),_0x9955c3,'request\x20sent',JSON[_0x3a71('0xd')](_0x507c7e));if(_0x507c7e[_0x3a71('0xe')]){if(_0x507c7e['error'][_0x3a71('0xf')]===0x1f4){logger[_0x3a71('0xe')](_0x3a71('0x10'),_0x9955c3,_0x507c7e['error'][_0x3a71('0x11')]);return _0x1b2077(_0x507c7e[_0x3a71('0xe')]['message']);}logger[_0x3a71('0xe')]('UserChatQueue,\x20%s,\x20%s',_0x9955c3,_0x507c7e[_0x3a71('0xe')][_0x3a71('0x11')]);return _0x104195(_0x507c7e[_0x3a71('0xe')][_0x3a71('0x11')]);}else{logger['info'](_0x3a71('0x10'),_0x9955c3,'request\x20sent');_0x104195(_0x507c7e[_0x3a71('0x12')][_0x3a71('0x11')]);}})[_0x3a71('0x13')](function(_0x45b41a){logger[_0x3a71('0xe')]('UserChatQueue,\x20%s,\x20%s',_0x9955c3,_0x45b41a);_0x1b2077(_0x45b41a);});});}
\ No newline at end of file
index 1dc0d15..b01d1c9 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(_0x12dbf6,_0x2c381c){var _0x3adcc6=function(_0x24b23d){while(--_0x24b23d){_0x12dbf6['push'](_0x12dbf6['shift']());}};_0x3adcc6(++_0x2c381c);}(_0xa9e0,0x123));var _0x0a9e=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xa9e0[_0xa1e3e3];return _0xc980e9;};'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 _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x48bb8f,_0x15ae9f){var _0x115417=function(_0x3be454){while(--_0x3be454){_0x48bb8f['push'](_0x48bb8f['shift']());}};_0x115417(++_0x15ae9f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0xa9e0[_0x411add];return _0x238242;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index ec8e872..9b8a2d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6c5=['sequelize','INTEGER','STRING'];(function(_0xfe7f53,_0x49fb8d){var _0x15bfbe=function(_0x1d4903){while(--_0x1d4903){_0xfe7f53['push'](_0xfe7f53['shift']());}};_0x15bfbe(++_0x49fb8d);}(_0xa6c5,0x84));var _0x5a6c=function(_0xf0f51a,_0x17577a){_0xf0f51a=_0xf0f51a-0x0;var _0x9c548a=_0xa6c5[_0xf0f51a];return _0x9c548a;};'use strict';var Sequelize=require(_0x5a6c('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x5a6c('0x1')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x5a6c('0x1')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x5a6c('0x2')]}};
\ No newline at end of file
+var _0xc06a=['STRING','sequelize','exports','INTEGER'];(function(_0x16d9b9,_0x203f13){var _0x423482=function(_0x458686){while(--_0x458686){_0x16d9b9['push'](_0x16d9b9['shift']());}};_0x423482(++_0x203f13);}(_0xc06a,0x199));var _0xac06=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xc06a[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require(_0xac06('0x0'));module[_0xac06('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xac06('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0xac06('0x3')]}};
\ No newline at end of file
index f1d42bd..eb7b6d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x865e=['./userFaxQueue.attributes','exports','define','UserFaxQueue','user_has_fax_queues','api','moment','bluebird','path','rimraf'];(function(_0x1c6f12,_0x55e1e3){var _0x3680e8=function(_0x541583){while(--_0x541583){_0x1c6f12['push'](_0x1c6f12['shift']());}};_0x3680e8(++_0x55e1e3);}(_0x865e,0x109));var _0xe865=function(_0x4dc7b9,_0x319d5a){_0x4dc7b9=_0x4dc7b9-0x0;var _0x3ab114=_0x865e[_0x4dc7b9];return _0x3ab114;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xe865('0x0'));var moment=require(_0xe865('0x1'));var BPromise=require(_0xe865('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe865('0x3'));var rimraf=require(_0xe865('0x4'));var config=require('../../config/environment');var attributes=require(_0xe865('0x5'));module[_0xe865('0x6')]=function(_0x1a6348,_0x1721de){return _0x1a6348[_0xe865('0x7')](_0xe865('0x8'),attributes,{'tableName':_0xe865('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1765=['bluebird','request-promise','rimraf','../../config/environment','./userFaxQueue.attributes','UserFaxQueue','user_has_fax_queues','lodash','util','../../config/logger','moment'];(function(_0x6173fc,_0x32aadf){var _0x965fbe=function(_0x50d5b3){while(--_0x50d5b3){_0x6173fc['push'](_0x6173fc['shift']());}};_0x965fbe(++_0x32aadf);}(_0x1765,0x1bf));var _0x5176=function(_0xccf869,_0x2556a5){_0xccf869=_0xccf869-0x0;var _0x21a9db=_0x1765[_0xccf869];return _0x21a9db;};'use strict';var _=require(_0x5176('0x0'));var util=require(_0x5176('0x1'));var logger=require(_0x5176('0x2'))('api');var moment=require(_0x5176('0x3'));var BPromise=require(_0x5176('0x4'));var rp=require(_0x5176('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5176('0x6'));var config=require(_0x5176('0x7'));var attributes=require(_0x5176('0x8'));module['exports']=function(_0x1af503,_0x45246f){return _0x1af503['define'](_0x5176('0x9'),attributes,{'tableName':_0x5176('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 39e5c53..1c48ad9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd54=['../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','error','code','message','UserFaxQueue,\x20%s,\x20%s','result','lodash','util','moment','randomstring','ioredis'];(function(_0xdbc93e,_0x4fcd8e){var _0x29df2c=function(_0x486542){while(--_0x486542){_0xdbc93e['push'](_0xdbc93e['shift']());}};_0x29df2c(++_0x4fcd8e);}(_0xfd54,0xcd));var _0x4fd5=function(_0x34d16d,_0x195e3f){_0x34d16d=_0x34d16d-0x0;var _0x3ce58b=_0xfd54[_0x34d16d];return _0x3ce58b;};'use strict';var _=require(_0x4fd5('0x0'));var util=require(_0x4fd5('0x1'));var moment=require(_0x4fd5('0x2'));var BPromise=require('bluebird');var rs=require(_0x4fd5('0x3'));var fs=require('fs');var Redis=require(_0x4fd5('0x4'));var db=require(_0x4fd5('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x4fd5('0x6'))('rpc');var config=require(_0x4fd5('0x7'));var jayson=require(_0x4fd5('0x8'));var client=jayson['client'][_0x4fd5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x598df4,_0x386755,_0x55f164){return new BPromise(function(_0x65cd96,_0x4e9b59){return client[_0x4fd5('0xa')](_0x598df4,_0x55f164)[_0x4fd5('0xb')](function(_0x45266f){logger[_0x4fd5('0xc')]('UserFaxQueue,\x20%s,\x20%s',_0x386755,_0x4fd5('0xd'));logger[_0x4fd5('0xe')](_0x4fd5('0xf'),_0x386755,'request\x20sent',JSON['stringify'](_0x45266f));if(_0x45266f[_0x4fd5('0x10')]){if(_0x45266f['error'][_0x4fd5('0x11')]===0x1f4){logger[_0x4fd5('0x10')]('UserFaxQueue,\x20%s,\x20%s',_0x386755,_0x45266f[_0x4fd5('0x10')][_0x4fd5('0x12')]);return _0x4e9b59(_0x45266f[_0x4fd5('0x10')]['message']);}logger[_0x4fd5('0x10')](_0x4fd5('0x13'),_0x386755,_0x45266f[_0x4fd5('0x10')][_0x4fd5('0x12')]);return _0x65cd96(_0x45266f[_0x4fd5('0x10')][_0x4fd5('0x12')]);}else{logger[_0x4fd5('0xc')](_0x4fd5('0x13'),_0x386755,'request\x20sent');_0x65cd96(_0x45266f[_0x4fd5('0x14')]['message']);}})['catch'](function(_0x18be8e){logger[_0x4fd5('0x10')](_0x4fd5('0x13'),_0x386755,_0x18be8e);_0x4e9b59(_0x18be8e);});});}
\ No newline at end of file
+var _0xe814=['debug','stringify','error','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent'];(function(_0x30cd7e,_0x4db10a){var _0x462a02=function(_0x157d81){while(--_0x157d81){_0x30cd7e['push'](_0x30cd7e['shift']());}};_0x462a02(++_0x4db10a);}(_0xe814,0x13a));var _0x4e81=function(_0xeb1c75,_0x5a1a4a){_0xeb1c75=_0xeb1c75-0x0;var _0x476467=_0xe814[_0xeb1c75];return _0x476467;};'use strict';var _=require(_0x4e81('0x0'));var util=require(_0x4e81('0x1'));var moment=require('moment');var BPromise=require(_0x4e81('0x2'));var rs=require(_0x4e81('0x3'));var fs=require('fs');var Redis=require(_0x4e81('0x4'));var db=require(_0x4e81('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x4e81('0x6'))(_0x4e81('0x7'));var config=require('../../config/environment');var jayson=require(_0x4e81('0x8'));var client=jayson[_0x4e81('0x9')][_0x4e81('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x436fdc,_0x39aeb8,_0x14e7e0){return new BPromise(function(_0x38d2e2,_0xb1187e){return client[_0x4e81('0xb')](_0x436fdc,_0x14e7e0)[_0x4e81('0xc')](function(_0x3970db){logger[_0x4e81('0xd')](_0x4e81('0xe'),_0x39aeb8,_0x4e81('0xf'));logger[_0x4e81('0x10')]('UserFaxQueue,\x20%s,\x20%s,\x20%s',_0x39aeb8,'request\x20sent',JSON[_0x4e81('0x11')](_0x3970db));if(_0x3970db['error']){if(_0x3970db[_0x4e81('0x12')]['code']===0x1f4){logger[_0x4e81('0x12')](_0x4e81('0xe'),_0x39aeb8,_0x3970db[_0x4e81('0x12')][_0x4e81('0x13')]);return _0xb1187e(_0x3970db[_0x4e81('0x12')][_0x4e81('0x13')]);}logger[_0x4e81('0x12')](_0x4e81('0xe'),_0x39aeb8,_0x3970db['error'][_0x4e81('0x13')]);return _0x38d2e2(_0x3970db[_0x4e81('0x12')][_0x4e81('0x13')]);}else{logger[_0x4e81('0xd')]('UserFaxQueue,\x20%s,\x20%s',_0x39aeb8,'request\x20sent');_0x38d2e2(_0x3970db[_0x4e81('0x14')][_0x4e81('0x13')]);}})[_0x4e81('0x15')](function(_0x13a628){logger[_0x4e81('0x12')](_0x4e81('0xe'),_0x39aeb8,_0x13a628);_0xb1187e(_0x13a628);});});}
\ No newline at end of file
index a12c0f6..82f67ef 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(_0x1a7f2c,_0x3fccc5){var _0x460358=function(_0x472b3d){while(--_0x472b3d){_0x1a7f2c['push'](_0x1a7f2c['shift']());}};_0x460358(++_0x3fccc5);}(_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(_0x53dda0,_0x5a853d){var _0x1cfe58=function(_0x291cda){while(--_0x291cda){_0x53dda0['push'](_0x53dda0['shift']());}};_0x1cfe58(++_0x5a853d);}(_0x70e0,0x17b));var _0x070e=function(_0x50d9e2,_0x17cf87){_0x50d9e2=_0x50d9e2-0x0;var _0x16994c=_0x70e0[_0x50d9e2];return _0x16994c;};'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 be24e2a..8d631c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0dbf=['exports','INTEGER','sequelize'];(function(_0x21f3bf,_0xfb0f59){var _0x249d08=function(_0x37e6c2){while(--_0x37e6c2){_0x21f3bf['push'](_0x21f3bf['shift']());}};_0x249d08(++_0xfb0f59);}(_0x0dbf,0x1a9));var _0xf0db=function(_0x22ffbf,_0x16f31e){_0x22ffbf=_0x22ffbf-0x0;var _0x360c17=_0x0dbf[_0x22ffbf];return _0x360c17;};'use strict';var Sequelize=require(_0xf0db('0x0'));module[_0xf0db('0x1')]={'penalty':{'type':Sequelize[_0xf0db('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xeee4=['exports','INTEGER','sequelize'];(function(_0x10ffaf,_0x2e5c01){var _0x26803e=function(_0x5cd95a){while(--_0x5cd95a){_0x10ffaf['push'](_0x10ffaf['shift']());}};_0x26803e(++_0x2e5c01);}(_0xeee4,0xfb));var _0x4eee=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xeee4[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x4eee('0x0'));module[_0x4eee('0x1')]={'penalty':{'type':Sequelize[_0x4eee('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 8c4025b..be06fac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd3d=['request-promise','path','rimraf','../../config/environment','./userMailQueue.attributes','exports','UserMailQueue','user_has_mail_queues','api','moment'];(function(_0x258ff8,_0x357a36){var _0x7721fb=function(_0x5ad404){while(--_0x5ad404){_0x258ff8['push'](_0x258ff8['shift']());}};_0x7721fb(++_0x357a36);}(_0xcd3d,0x13e));var _0xdcd3=function(_0xf6c7ac,_0xfb5b91){_0xf6c7ac=_0xf6c7ac-0x0;var _0x327920=_0xcd3d[_0xf6c7ac];return _0x327920;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xdcd3('0x0'));var moment=require(_0xdcd3('0x1'));var BPromise=require('bluebird');var rp=require(_0xdcd3('0x2'));var fs=require('fs');var path=require(_0xdcd3('0x3'));var rimraf=require(_0xdcd3('0x4'));var config=require(_0xdcd3('0x5'));var attributes=require(_0xdcd3('0x6'));module[_0xdcd3('0x7')]=function(_0x480177,_0x3b820e){return _0x480177['define'](_0xdcd3('0x8'),attributes,{'tableName':_0xdcd3('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7ffc=['./userMailQueue.attributes','define','UserMailQueue','user_has_mail_queues','lodash','util','api','moment','bluebird','request-promise','rimraf'];(function(_0x4b54bf,_0xefb6c1){var _0x955030=function(_0x132ae9){while(--_0x132ae9){_0x4b54bf['push'](_0x4b54bf['shift']());}};_0x955030(++_0xefb6c1);}(_0x7ffc,0x93));var _0xc7ff=function(_0x4498a2,_0x143689){_0x4498a2=_0x4498a2-0x0;var _0x411aa8=_0x7ffc[_0x4498a2];return _0x411aa8;};'use strict';var _=require(_0xc7ff('0x0'));var util=require(_0xc7ff('0x1'));var logger=require('../../config/logger')(_0xc7ff('0x2'));var moment=require(_0xc7ff('0x3'));var BPromise=require(_0xc7ff('0x4'));var rp=require(_0xc7ff('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc7ff('0x6'));var config=require('../../config/environment');var attributes=require(_0xc7ff('0x7'));module['exports']=function(_0x16bab2,_0x21f412){return _0x16bab2[_0xc7ff('0x8')](_0xc7ff('0x9'),attributes,{'tableName':_0xc7ff('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b02c4c6..1ab1499 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x577c41,_0x4f8cf3){var _0x826a1c=function(_0x1015cd){while(--_0x1015cd){_0x577c41['push'](_0x577c41['shift']());}};_0x826a1c(++_0x4f8cf3);}(_0x34e8,0x12c));var _0x834e=function(_0x5c58cc,_0x356855){_0x5c58cc=_0x5c58cc-0x0;var _0x4ec056=_0x34e8[_0x5c58cc];return _0x4ec056;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var moment=require(_0x834e('0x2'));var BPromise=require(_0x834e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x834e('0x4'));var db=require(_0x834e('0x5'))['db'];var utils=require(_0x834e('0x6'));var logger=require(_0x834e('0x7'))(_0x834e('0x8'));var config=require(_0x834e('0x9'));var jayson=require(_0x834e('0xa'));var client=jayson['client'][_0x834e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x52056d,_0x3e16d2,_0x3cc2e3){return new BPromise(function(_0x3a3ef6,_0x2e69e2){return client[_0x834e('0xc')](_0x52056d,_0x3cc2e3)[_0x834e('0xd')](function(_0x363786){logger[_0x834e('0xe')](_0x834e('0xf'),_0x3e16d2,_0x834e('0x10'));logger[_0x834e('0x11')](_0x834e('0x12'),_0x3e16d2,_0x834e('0x10'),JSON[_0x834e('0x13')](_0x363786));if(_0x363786[_0x834e('0x14')]){if(_0x363786[_0x834e('0x14')][_0x834e('0x15')]===0x1f4){logger['error'](_0x834e('0xf'),_0x3e16d2,_0x363786[_0x834e('0x14')]['message']);return _0x2e69e2(_0x363786[_0x834e('0x14')][_0x834e('0x16')]);}logger[_0x834e('0x14')](_0x834e('0xf'),_0x3e16d2,_0x363786['error'][_0x834e('0x16')]);return _0x3a3ef6(_0x363786[_0x834e('0x14')]['message']);}else{logger[_0x834e('0xe')]('UserMailQueue,\x20%s,\x20%s',_0x3e16d2,_0x834e('0x10'));_0x3a3ef6(_0x363786[_0x834e('0x17')]['message']);}})[_0x834e('0x18')](function(_0x22106e){logger[_0x834e('0x14')]('UserMailQueue,\x20%s,\x20%s',_0x3e16d2,_0x22106e);_0x2e69e2(_0x22106e);});});}
\ No newline at end of file
+var _0x1cb9=['error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0x1cb9,0x14e));var _0x91cb=function(_0x418514,_0x1b7cf2){_0x418514=_0x418514-0x0;var _0x349c06=_0x1cb9[_0x418514];return _0x349c06;};'use strict';var _=require(_0x91cb('0x0'));var util=require('util');var moment=require(_0x91cb('0x1'));var BPromise=require(_0x91cb('0x2'));var rs=require(_0x91cb('0x3'));var fs=require('fs');var Redis=require(_0x91cb('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x91cb('0x5'));var logger=require(_0x91cb('0x6'))('rpc');var config=require(_0x91cb('0x7'));var jayson=require(_0x91cb('0x8'));var client=jayson[_0x91cb('0x9')][_0x91cb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3b9d98,_0x8f8a3b,_0x4c1f56){return new BPromise(function(_0x15c517,_0x5bda2f){return client[_0x91cb('0xb')](_0x3b9d98,_0x4c1f56)['then'](function(_0xa43e7a){logger[_0x91cb('0xc')](_0x91cb('0xd'),_0x8f8a3b,_0x91cb('0xe'));logger[_0x91cb('0xf')](_0x91cb('0x10'),_0x8f8a3b,_0x91cb('0xe'),JSON[_0x91cb('0x11')](_0xa43e7a));if(_0xa43e7a[_0x91cb('0x12')]){if(_0xa43e7a[_0x91cb('0x12')]['code']===0x1f4){logger[_0x91cb('0x12')](_0x91cb('0xd'),_0x8f8a3b,_0xa43e7a['error'][_0x91cb('0x13')]);return _0x5bda2f(_0xa43e7a[_0x91cb('0x12')][_0x91cb('0x13')]);}logger[_0x91cb('0x12')]('UserMailQueue,\x20%s,\x20%s',_0x8f8a3b,_0xa43e7a['error'][_0x91cb('0x13')]);return _0x15c517(_0xa43e7a[_0x91cb('0x12')]['message']);}else{logger['info'](_0x91cb('0xd'),_0x8f8a3b,_0x91cb('0xe'));_0x15c517(_0xa43e7a[_0x91cb('0x14')]['message']);}})[_0x91cb('0x15')](function(_0x135890){logger['error'](_0x91cb('0xd'),_0x8f8a3b,_0x135890);_0x5bda2f(_0x135890);});});}
\ No newline at end of file
index 85a1252..11dc293 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x316e=['Router','fs-extra','../../components/auth/service','./userNotification.controller','post','isAuthenticated','sendUserNotification','exports','util','path','connect-timeout'];(function(_0x3d8b47,_0x3004c8){var _0x598a46=function(_0xba6159){while(--_0xba6159){_0x3d8b47['push'](_0x3d8b47['shift']());}};_0x598a46(++_0x3004c8);}(_0x316e,0x76));var _0xe316=function(_0x43c879,_0x3e1774){_0x43c879=_0x43c879-0x0;var _0x413993=_0x316e[_0x43c879];return _0x413993;};'use strict';var multer=require('multer');var util=require(_0xe316('0x0'));var path=require(_0xe316('0x1'));var timeout=require(_0xe316('0x2'));var express=require('express');var router=express[_0xe316('0x3')]();var fs_extra=require(_0xe316('0x4'));var auth=require(_0xe316('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xe316('0x6'));router[_0xe316('0x7')]('/',auth[_0xe316('0x8')](),controller[_0xe316('0x9')]);module[_0xe316('0xa')]=router;
\ No newline at end of file
+var _0x83ec=['../../components/interaction/service','../../config/environment','./userNotification.controller','isAuthenticated','sendUserNotification','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x7fd721,_0x13f2ad){var _0x1a3375=function(_0x1dc698){while(--_0x1dc698){_0x7fd721['push'](_0x7fd721['shift']());}};_0x1a3375(++_0x13f2ad);}(_0x83ec,0xba));var _0xc83e=function(_0x15c67a,_0x584c07){_0x15c67a=_0x15c67a-0x0;var _0x6ea0e9=_0x83ec[_0x15c67a];return _0x6ea0e9;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xc83e('0x0'));var timeout=require(_0xc83e('0x1'));var express=require(_0xc83e('0x2'));var router=express[_0xc83e('0x3')]();var fs_extra=require(_0xc83e('0x4'));var auth=require(_0xc83e('0x5'));var interaction=require(_0xc83e('0x6'));var config=require(_0xc83e('0x7'));var controller=require(_0xc83e('0x8'));router['post']('/',auth[_0xc83e('0x9')](),controller[_0xc83e('0xa')]);module[_0xc83e('0xb')]=router;
\ No newline at end of file
index 8adc429..4c984bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf628=['TEXT','sequelize','exports','STRING'];(function(_0x581681,_0x3aa33b){var _0x526ea2=function(_0x269572){while(--_0x269572){_0x581681['push'](_0x581681['shift']());}};_0x526ea2(++_0x3aa33b);}(_0xf628,0xcd));var _0x8f62=function(_0x1345ca,_0x40eb0d){_0x1345ca=_0x1345ca-0x0;var _0x1f8dd6=_0xf628[_0x1345ca];return _0x1f8dd6;};'use strict';var Sequelize=require(_0x8f62('0x0'));module[_0x8f62('0x1')]={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize[_0x8f62('0x2')]},'recipientsId':{'type':Sequelize[_0x8f62('0x3')]},'recipientsDescription':{'type':Sequelize[_0x8f62('0x2')]},'beep':{'type':Sequelize['BOOLEAN']}};
\ No newline at end of file
+var _0xc08b=['exports','TEXT','STRING'];(function(_0x58418a,_0x3d9f06){var _0x2716bf=function(_0x36fcfd){while(--_0x36fcfd){_0x58418a['push'](_0x58418a['shift']());}};_0x2716bf(++_0x3d9f06);}(_0xc08b,0x1a1));var _0xbc08=function(_0x24da1b,_0x1ce849){_0x24da1b=_0x24da1b-0x0;var _0xe3dfa=_0xc08b[_0x24da1b];return _0xe3dfa;};'use strict';var Sequelize=require('sequelize');module[_0xbc08('0x0')]={'body':{'type':Sequelize[_0xbc08('0x1')]},'senderName':{'type':Sequelize[_0xbc08('0x2')]},'recipientsId':{'type':Sequelize['TEXT']},'recipientsDescription':{'type':Sequelize[_0xbc08('0x2')]},'beep':{'type':Sequelize['BOOLEAN']}};
\ No newline at end of file
index c369314..72ed782 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e3f=['includes','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','isEmpty','recipientsDescription','beep','SenderId','recipientsId','join','transaction','UserNotification','recipient','emit','userNotification:send','catch','Template','findOne','Invalid\x20\x27TemplateId\x27\x20parameter','render','html','forEach','union','ids','queue','replace','push','all','getAgents','eml-format','rimraf','request-promise','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','defaults','socket.io-emitter','./userNotification.socket','sendStatus','end','status','json','offset','limit','undefined','set','reject','save','update','then','destroy','error','stack','name','send','sendUserNotification','body','hasOwnProperty','text','TemplateId','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','Missing\x20\x27view\x27\x20parameter','recipients','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue','openchannelqueue','smsqueue','voicequeue','whatsappqueue','user','some'];(function(_0x57980d,_0x253868){var _0x13a396=function(_0x9794d0){while(--_0x9794d0){_0x57980d['push'](_0x57980d['shift']());}};_0x13a396(++_0x253868);}(_0x0e3f,0x197));var _0xf0e3=function(_0x2809c5,_0x551ef3){_0x2809c5=_0x2809c5-0x0;var _0x173894=_0x0e3f[_0x2809c5];return _0x173894;};'use strict';var emlformat=require(_0xf0e3('0x0'));var rimraf=require(_0xf0e3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xf0e3('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xf0e3('0x3'));var sox=require('sox');var csv=require(_0xf0e3('0x4'));var ejs=require(_0xf0e3('0x5'));var fs=require('fs');var fs_extra=require(_0xf0e3('0x6'));var _=require(_0xf0e3('0x7'));var squel=require(_0xf0e3('0x8'));var crypto=require(_0xf0e3('0x9'));var jsforce=require(_0xf0e3('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xf0e3('0x4'));var querystring=require(_0xf0e3('0xb'));var Papa=require(_0xf0e3('0xc'));var Redis=require(_0xf0e3('0xd'));var authService=require(_0xf0e3('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xf0e3('0xf'));var hardwareService=require(_0xf0e3('0x10'));var logger=require('../../config/logger')(_0xf0e3('0x11'));var utils=require(_0xf0e3('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xf0e3('0x13'));var db=require(_0xf0e3('0x14'))['db'];config['redis']=_[_0xf0e3('0x15')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xf0e3('0x16'))(new Redis(config['redis']));require(_0xf0e3('0x17'))['register'](socket);function respondWithStatusCode(_0x8b6306,_0x1b56aa){_0x1b56aa=_0x1b56aa||0xcc;return function(_0x41f3e4){if(_0x41f3e4){return _0x8b6306[_0xf0e3('0x18')](_0x1b56aa);}return _0x8b6306['status'](_0x1b56aa)[_0xf0e3('0x19')]();};}function respondWithResult(_0x1f5949,_0x533ef3){_0x533ef3=_0x533ef3||0xc8;return function(_0x5b692a){if(_0x5b692a){return _0x1f5949[_0xf0e3('0x1a')](_0x533ef3)[_0xf0e3('0x1b')](_0x5b692a);}};}function respondWithFilteredResult(_0x1a66b4,_0x408677){return function(_0x1b73ec){if(_0x1b73ec){var _0x45eb68=typeof _0x408677[_0xf0e3('0x1c')]==='undefined'&&typeof _0x408677[_0xf0e3('0x1d')]===_0xf0e3('0x1e');var _0x591cdc=_0x1b73ec['count'];var _0x1c0964=_0x45eb68?0x0:_0x408677['offset'];var _0x15cac0=_0x45eb68?_0x1b73ec['count']:_0x408677[_0xf0e3('0x1c')]+_0x408677[_0xf0e3('0x1d')];var _0x1a2a6a;if(_0x15cac0>=_0x591cdc){_0x15cac0=_0x591cdc;_0x1a2a6a=0xc8;}else{_0x1a2a6a=0xce;}_0x1a66b4[_0xf0e3('0x1a')](_0x1a2a6a);return _0x1a66b4[_0xf0e3('0x1f')]('Content-Range',_0x1c0964+'-'+_0x15cac0+'/'+_0x591cdc)[_0xf0e3('0x1b')](_0x1b73ec);}return null;};}function patchUpdates(_0x28a575){return function(_0x2b6843){try{jsonpatch['apply'](_0x2b6843,_0x28a575,!![]);}catch(_0x5932d8){return BPromise[_0xf0e3('0x20')](_0x5932d8);}return _0x2b6843[_0xf0e3('0x21')]();};}function saveUpdates(_0x3700c1,_0x4ce97b){return function(_0x42446f){if(_0x42446f){return _0x42446f[_0xf0e3('0x22')](_0x3700c1)[_0xf0e3('0x23')](function(_0x5b199f){return _0x5b199f;});}return null;};}function removeEntity(_0x1b5347,_0x2a12f3){return function(_0x4edc8f){if(_0x4edc8f){return _0x4edc8f[_0xf0e3('0x24')]()[_0xf0e3('0x23')](function(){_0x1b5347[_0xf0e3('0x1a')](0xcc)[_0xf0e3('0x19')]();});}};}function handleEntityNotFound(_0x3dc1a2,_0x49e104){return function(_0x6bd4c2){if(!_0x6bd4c2){_0x3dc1a2[_0xf0e3('0x18')](0x194);}return _0x6bd4c2;};}function handleError(_0x4acb0d,_0x3428d3){_0x3428d3=_0x3428d3||0x1f4;return function(_0x48b804){logger[_0xf0e3('0x25')](_0x48b804[_0xf0e3('0x26')]);if(_0x48b804[_0xf0e3('0x27')]){delete _0x48b804[_0xf0e3('0x27')];}_0x4acb0d[_0xf0e3('0x1a')](_0x3428d3)[_0xf0e3('0x28')](_0x48b804);};}exports[_0xf0e3('0x29')]=function(_0x56fcf9,_0x422197,_0x21e693){if(!_0x56fcf9[_0xf0e3('0x2a')][_0xf0e3('0x2b')](_0xf0e3('0x2c'))&&!_0x56fcf9['body'][_0xf0e3('0x2b')](_0xf0e3('0x2d'))){throw new db[(_0xf0e3('0x2e'))][(_0xf0e3('0x2f'))](_0xf0e3('0x30'));}else{if(_0x56fcf9[_0xf0e3('0x2a')][_0xf0e3('0x2b')](_0xf0e3('0x2d'))&&!_0x56fcf9['body'][_0xf0e3('0x2b')](_0xf0e3('0x31'))){throw new db[(_0xf0e3('0x2e'))][(_0xf0e3('0x2f'))](_0xf0e3('0x32'));}if(!_0x56fcf9[_0xf0e3('0x2a')][_0xf0e3('0x2b')](_0xf0e3('0x33'))){throw new db[(_0xf0e3('0x2e'))][(_0xf0e3('0x2f'))]('Missing\x20\x27recipients\x27\x20parameter');}else{try{var _0x5ecafb=JSON[_0xf0e3('0x34')](_0x56fcf9[_0xf0e3('0x2a')]['recipients']);}catch(_0x4891cb){logger[_0xf0e3('0x25')](_0x4891cb);throw new db[(_0xf0e3('0x2e'))][(_0xf0e3('0x2f'))](_0xf0e3('0x35'));}var _0x23c2dd=[_0xf0e3('0x36'),_0xf0e3('0x37'),_0xf0e3('0x38'),_0xf0e3('0x39'),_0xf0e3('0x3a'),_0xf0e3('0x3b'),_0xf0e3('0x3c'),'team',_0xf0e3('0x3d')];if(_[_0xf0e3('0x3e')](_0x5ecafb,function(_0x3a9272){return!_[_0xf0e3('0x3f')](_0x23c2dd,_0x3a9272[_0xf0e3('0x40')][_0xf0e3('0x41')]());})){throw new db[(_0xf0e3('0x2e'))][(_0xf0e3('0x2f'))](_0xf0e3('0x42'));}}}var _0x9e5a40={};_0x9e5a40[_0xf0e3('0x43')]=_0x56fcf9[_0xf0e3('0x2a')][_0xf0e3('0x2b')](_0xf0e3('0x43'))?_0x56fcf9[_0xf0e3('0x2a')]['senderName']:_0x56fcf9[_0xf0e3('0x3d')][_0xf0e3('0x44')];_0x9e5a40['recipientsDescription']=_[_0xf0e3('0x45')](_0x56fcf9[_0xf0e3('0x2a')][_0xf0e3('0x46')])?null:_0x56fcf9[_0xf0e3('0x2a')][_0xf0e3('0x46')];_0x9e5a40['beep']=_0x56fcf9[_0xf0e3('0x2a')][_0xf0e3('0x47')]||![];_0x9e5a40[_0xf0e3('0x48')]=_0x56fcf9[_0xf0e3('0x3d')]['id'];return getContent(_0x56fcf9[_0xf0e3('0x2a')])['then'](function(_0x42632a){_0x9e5a40[_0xf0e3('0x2a')]=_0x42632a;return getRecipients(_0x5ecafb);})[_0xf0e3('0x23')](function(_0x263ba8){_0x9e5a40[_0xf0e3('0x49')]=_['sortBy'](_0x263ba8)[_0xf0e3('0x4a')](',');return db['sequelize'][_0xf0e3('0x4b')](function(_0x3aeb32){return db[_0xf0e3('0x4c')]['create'](_0x9e5a40,{'raw':!![],'transaction':_0x3aeb32})[_0xf0e3('0x23')](function(_0x59b619){var _0x5d33cb={'sender':_0x9e5a40[_0xf0e3('0x43')],'description':_0x9e5a40[_0xf0e3('0x46')],'content':_0x9e5a40['body'],'beep':_0x9e5a40[_0xf0e3('0x47')]};_0x263ba8['forEach'](function(_0x26ea15){_0x5d33cb[_0xf0e3('0x4d')]=_0x26ea15;socket[_0xf0e3('0x4e')](_0xf0e3('0x4f'),_0x5d33cb);});return _0x59b619;});});})[_0xf0e3('0x23')](respondWithResult(_0x422197,0xc9))[_0xf0e3('0x50')](handleError(_0x422197,null));};function getContent(_0x32a187){return new BPromise(function(_0x526fe6,_0x494e3d){if(_0x32a187[_0xf0e3('0x2c')]){_0x526fe6(_0x32a187[_0xf0e3('0x2c')]);return;}return db[_0xf0e3('0x51')][_0xf0e3('0x52')]({'attributes':['html'],'where':{'id':_0x32a187[_0xf0e3('0x2d')]},'raw':!![]})[_0xf0e3('0x23')](function(_0x1b5f16){if(!_0x1b5f16)throw new db[(_0xf0e3('0x2e'))][(_0xf0e3('0x2f'))](_0xf0e3('0x53'));var _0x5e2ce8=Mustache[_0xf0e3('0x54')](_0x1b5f16[_0xf0e3('0x55')],_0x32a187[_0xf0e3('0x31')]);_0x526fe6(_0x5e2ce8);})[_0xf0e3('0x50')](function(_0x1143c5){_0x494e3d(_0x1143c5);});});}function getRecipients(_0x3ba484){return new BPromise(function(_0x5d3dae,_0x790c1){var _0xf48b39=[];var _0x594b9b=[];_0x3ba484[_0xf0e3('0x56')](function(_0x4a283b){var _0x5d638e=_['startCase'](_0x4a283b[_0xf0e3('0x40')][_0xf0e3('0x41')]());if(_0x5d638e==='User'){_0xf48b39=_[_0xf0e3('0x57')](_0xf48b39,_0x4a283b[_0xf0e3('0x58')]);}else{if(_[_0xf0e3('0x3f')](_0x5d638e,_0xf0e3('0x59')))_0x5d638e=_0x5d638e[_0xf0e3('0x5a')](_0xf0e3('0x59'),'Queue');_0x4a283b[_0xf0e3('0x58')][_0xf0e3('0x56')](function(_0x5d0a4c){_0x594b9b[_0xf0e3('0x5b')](getAgents(_0x5d638e,_0x5d0a4c));});}});return BPromise[_0xf0e3('0x5c')](_0x594b9b)['then'](function(_0x280b82){_0xf48b39=_[_0xf0e3('0x57')](_0xf48b39,_['flatten'](_0x280b82));_0x5d3dae(_0xf48b39);})[_0xf0e3('0x50')](function(_0x109928){_0x790c1(_0x109928);});});}function getAgents(_0x30fc67,_0xedeb0e){return new BPromise(function(_0x5e814e,_0x247d63){return db[_0x30fc67]['findOne']({'where':{'id':_0xedeb0e}})[_0xf0e3('0x23')](function(_0x23958f){return _0x23958f[_0xf0e3('0x5d')]({'attributes':['id'],'raw':!![]})[_0xf0e3('0x23')](function(_0x1d0fb1){var _0x573a9e=_['map'](_0x1d0fb1,'id');_0x5e814e(_0x573a9e);});})[_0xf0e3('0x50')](function(_0x2f91f3){_0x247d63(_0x2f91f3);});});}
\ No newline at end of file
+var _0xc009=['text','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','startCase','User','union','ids','replace','queue','Queue','all','flatten','getAgents','map','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','status','end','json','offset','undefined','limit','count','apply','reject','save','then','destroy','error','stack','name','body','hasOwnProperty','TemplateId','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','openchannelqueue','smsqueue','voicequeue','whatsappqueue','team','user','some','includes','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','isEmpty','beep','SenderId','recipientsId','sortBy','sequelize','UserNotification','forEach','recipient','emit','userNotification:send','catch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc009,0x13f));var _0x9c00=function(_0x4b58ff,_0x3eeeeb){_0x4b58ff=_0x4b58ff-0x0;var _0x4e14e4=_0xc009[_0x4b58ff];return _0x4e14e4;};'use strict';var emlformat=require(_0x9c00('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9c00('0x1'));var jsonpatch=require(_0x9c00('0x2'));var rp=require(_0x9c00('0x3'));var moment=require(_0x9c00('0x4'));var BPromise=require(_0x9c00('0x5'));var Mustache=require(_0x9c00('0x6'));var util=require(_0x9c00('0x7'));var path=require(_0x9c00('0x8'));var sox=require('sox');var csv=require(_0x9c00('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9c00('0xa'));var _=require(_0x9c00('0xb'));var squel=require('squel');var crypto=require(_0x9c00('0xc'));var jsforce=require(_0x9c00('0xd'));var deskjs=require(_0x9c00('0xe'));var toCsv=require('to-csv');var querystring=require(_0x9c00('0xf'));var Papa=require(_0x9c00('0x10'));var Redis=require(_0x9c00('0x11'));var authService=require(_0x9c00('0x12'));var qs=require(_0x9c00('0x13'));var as=require(_0x9c00('0x14'));var hardwareService=require(_0x9c00('0x15'));var logger=require(_0x9c00('0x16'))('api');var utils=require(_0x9c00('0x17'));var config=require(_0x9c00('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x9c00('0x19'))['db'];config['redis']=_[_0x9c00('0x1a')](config[_0x9c00('0x1b')],{'host':_0x9c00('0x1c'),'port':0x18eb});var socket=require(_0x9c00('0x1d'))(new Redis(config[_0x9c00('0x1b')]));require('./userNotification.socket')[_0x9c00('0x1e')](socket);function respondWithStatusCode(_0x55b9da,_0x341fff){_0x341fff=_0x341fff||0xcc;return function(_0x20e841){if(_0x20e841){return _0x55b9da['sendStatus'](_0x341fff);}return _0x55b9da[_0x9c00('0x1f')](_0x341fff)[_0x9c00('0x20')]();};}function respondWithResult(_0xe5f1cb,_0x1cce44){_0x1cce44=_0x1cce44||0xc8;return function(_0xf4a24a){if(_0xf4a24a){return _0xe5f1cb[_0x9c00('0x1f')](_0x1cce44)[_0x9c00('0x21')](_0xf4a24a);}};}function respondWithFilteredResult(_0x114e35,_0x161804){return function(_0x5b105e){if(_0x5b105e){var _0x3e8eb7=typeof _0x161804[_0x9c00('0x22')]===_0x9c00('0x23')&&typeof _0x161804[_0x9c00('0x24')]===_0x9c00('0x23');var _0x12c6fd=_0x5b105e['count'];var _0x1f90cc=_0x3e8eb7?0x0:_0x161804['offset'];var _0x2668e8=_0x3e8eb7?_0x5b105e[_0x9c00('0x25')]:_0x161804[_0x9c00('0x22')]+_0x161804[_0x9c00('0x24')];var _0x8d72c;if(_0x2668e8>=_0x12c6fd){_0x2668e8=_0x12c6fd;_0x8d72c=0xc8;}else{_0x8d72c=0xce;}_0x114e35['status'](_0x8d72c);return _0x114e35['set']('Content-Range',_0x1f90cc+'-'+_0x2668e8+'/'+_0x12c6fd)[_0x9c00('0x21')](_0x5b105e);}return null;};}function patchUpdates(_0x3f5453){return function(_0x1d86c6){try{jsonpatch[_0x9c00('0x26')](_0x1d86c6,_0x3f5453,!![]);}catch(_0x3a3842){return BPromise[_0x9c00('0x27')](_0x3a3842);}return _0x1d86c6[_0x9c00('0x28')]();};}function saveUpdates(_0x2447a3,_0x28ac6a){return function(_0x3ea3a7){if(_0x3ea3a7){return _0x3ea3a7['update'](_0x2447a3)[_0x9c00('0x29')](function(_0xd8518c){return _0xd8518c;});}return null;};}function removeEntity(_0x5495bc,_0x31ce74){return function(_0x4811b6){if(_0x4811b6){return _0x4811b6[_0x9c00('0x2a')]()[_0x9c00('0x29')](function(){_0x5495bc['status'](0xcc)[_0x9c00('0x20')]();});}};}function handleEntityNotFound(_0x4d68b9,_0x1202a3){return function(_0xee2e53){if(!_0xee2e53){_0x4d68b9['sendStatus'](0x194);}return _0xee2e53;};}function handleError(_0x41a34d,_0x48d3ec){_0x48d3ec=_0x48d3ec||0x1f4;return function(_0x1731f6){logger[_0x9c00('0x2b')](_0x1731f6[_0x9c00('0x2c')]);if(_0x1731f6[_0x9c00('0x2d')]){delete _0x1731f6[_0x9c00('0x2d')];}_0x41a34d[_0x9c00('0x1f')](_0x48d3ec)['send'](_0x1731f6);};}exports['sendUserNotification']=function(_0x11392e,_0x4deaea,_0x3ace22){if(!_0x11392e[_0x9c00('0x2e')][_0x9c00('0x2f')]('text')&&!_0x11392e['body']['hasOwnProperty'](_0x9c00('0x30'))){throw new db[(_0x9c00('0x31'))][(_0x9c00('0x32'))](_0x9c00('0x33'));}else{if(_0x11392e[_0x9c00('0x2e')][_0x9c00('0x2f')](_0x9c00('0x30'))&&!_0x11392e[_0x9c00('0x2e')][_0x9c00('0x2f')](_0x9c00('0x34'))){throw new db[(_0x9c00('0x31'))][(_0x9c00('0x32'))]('Missing\x20\x27view\x27\x20parameter');}if(!_0x11392e[_0x9c00('0x2e')][_0x9c00('0x2f')](_0x9c00('0x35'))){throw new db[(_0x9c00('0x31'))][(_0x9c00('0x32'))](_0x9c00('0x36'));}else{try{var _0x450ac6=JSON[_0x9c00('0x37')](_0x11392e['body'][_0x9c00('0x35')]);}catch(_0x26cbfd){logger['error'](_0x26cbfd);throw new db[(_0x9c00('0x31'))][(_0x9c00('0x32'))](_0x9c00('0x38'));}var _0x472daa=[_0x9c00('0x39'),_0x9c00('0x3a'),'mailqueue',_0x9c00('0x3b'),_0x9c00('0x3c'),_0x9c00('0x3d'),_0x9c00('0x3e'),_0x9c00('0x3f'),_0x9c00('0x40')];if(_[_0x9c00('0x41')](_0x450ac6,function(_0x3359c9){return!_[_0x9c00('0x42')](_0x472daa,_0x3359c9[_0x9c00('0x43')][_0x9c00('0x44')]());})){throw new db['Sequelize'][(_0x9c00('0x32'))](_0x9c00('0x45'));}}}var _0x476044={};_0x476044[_0x9c00('0x46')]=_0x11392e[_0x9c00('0x2e')]['hasOwnProperty'](_0x9c00('0x46'))?_0x11392e[_0x9c00('0x2e')][_0x9c00('0x46')]:_0x11392e[_0x9c00('0x40')][_0x9c00('0x47')];_0x476044[_0x9c00('0x48')]=_[_0x9c00('0x49')](_0x11392e['body'][_0x9c00('0x48')])?null:_0x11392e[_0x9c00('0x2e')][_0x9c00('0x48')];_0x476044[_0x9c00('0x4a')]=_0x11392e['body'][_0x9c00('0x4a')]||![];_0x476044[_0x9c00('0x4b')]=_0x11392e[_0x9c00('0x40')]['id'];return getContent(_0x11392e[_0x9c00('0x2e')])['then'](function(_0x1ce192){_0x476044['body']=_0x1ce192;return getRecipients(_0x450ac6);})[_0x9c00('0x29')](function(_0x19b334){_0x476044[_0x9c00('0x4c')]=_[_0x9c00('0x4d')](_0x19b334)['join'](',');return db[_0x9c00('0x4e')]['transaction'](function(_0x23e292){return db[_0x9c00('0x4f')]['create'](_0x476044,{'raw':!![],'transaction':_0x23e292})[_0x9c00('0x29')](function(_0x5ddeb9){var _0x498820={'sender':_0x476044[_0x9c00('0x46')],'description':_0x476044[_0x9c00('0x48')],'content':_0x476044[_0x9c00('0x2e')],'beep':_0x476044[_0x9c00('0x4a')]};_0x19b334[_0x9c00('0x50')](function(_0x5c21a0){_0x498820[_0x9c00('0x51')]=_0x5c21a0;socket[_0x9c00('0x52')](_0x9c00('0x53'),_0x498820);});return _0x5ddeb9;});});})[_0x9c00('0x29')](respondWithResult(_0x4deaea,0xc9))[_0x9c00('0x54')](handleError(_0x4deaea,null));};function getContent(_0x23aa21){return new BPromise(function(_0x483c17,_0x4be49e){if(_0x23aa21[_0x9c00('0x55')]){_0x483c17(_0x23aa21[_0x9c00('0x55')]);return;}return db[_0x9c00('0x56')][_0x9c00('0x57')]({'attributes':[_0x9c00('0x58')],'where':{'id':_0x23aa21['TemplateId']},'raw':!![]})[_0x9c00('0x29')](function(_0x4ec0b1){if(!_0x4ec0b1)throw new db['Sequelize']['ValidationError'](_0x9c00('0x59'));var _0x52647a=Mustache['render'](_0x4ec0b1[_0x9c00('0x58')],_0x23aa21[_0x9c00('0x34')]);_0x483c17(_0x52647a);})[_0x9c00('0x54')](function(_0x5c7bd4){_0x4be49e(_0x5c7bd4);});});}function getRecipients(_0x37543f){return new BPromise(function(_0x1deb65,_0x643705){var _0x4618d4=[];var _0x48c9cc=[];_0x37543f[_0x9c00('0x50')](function(_0x925bb4){var _0x94559c=_[_0x9c00('0x5a')](_0x925bb4[_0x9c00('0x43')][_0x9c00('0x44')]());if(_0x94559c===_0x9c00('0x5b')){_0x4618d4=_[_0x9c00('0x5c')](_0x4618d4,_0x925bb4[_0x9c00('0x5d')]);}else{if(_['includes'](_0x94559c,'queue'))_0x94559c=_0x94559c[_0x9c00('0x5e')](_0x9c00('0x5f'),_0x9c00('0x60'));_0x925bb4[_0x9c00('0x5d')]['forEach'](function(_0x4eb7e0){_0x48c9cc['push'](getAgents(_0x94559c,_0x4eb7e0));});}});return BPromise[_0x9c00('0x61')](_0x48c9cc)['then'](function(_0x4be3d8){_0x4618d4=_[_0x9c00('0x5c')](_0x4618d4,_[_0x9c00('0x62')](_0x4be3d8));_0x1deb65(_0x4618d4);})['catch'](function(_0x199502){_0x643705(_0x199502);});});}function getAgents(_0x5ac7d7,_0x2b53fa){return new BPromise(function(_0x5cc124,_0x3247ca){return db[_0x5ac7d7][_0x9c00('0x57')]({'where':{'id':_0x2b53fa}})[_0x9c00('0x29')](function(_0x110abe){return _0x110abe[_0x9c00('0x63')]({'attributes':['id'],'raw':!![]})[_0x9c00('0x29')](function(_0x195e02){var _0x4ed70c=_[_0x9c00('0x64')](_0x195e02,'id');_0x5cc124(_0x4ed70c);});})['catch'](function(_0xbe2f7d){_0x3247ca(_0xbe2f7d);});});}
\ No newline at end of file
index ec1ce92..7f36a42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf12c=['events','setMaxListeners','save','update','remove','exports'];(function(_0x5b4c72,_0x438f33){var _0x3db05e=function(_0x1e887b){while(--_0x1e887b){_0x5b4c72['push'](_0x5b4c72['shift']());}};_0x3db05e(++_0x438f33);}(_0xf12c,0x120));var _0xcf12=function(_0xb66f92,_0x301f99){_0xb66f92=_0xb66f92-0x0;var _0x344d2d=_0xf12c[_0xb66f92];return _0x344d2d;};'use strict';var EventEmitter=require(_0xcf12('0x0'));var UserNotification=require('../../mysqldb')['db']['UserNotification'];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0xcf12('0x1')](0x0);var events={'afterCreate':_0xcf12('0x2'),'afterUpdate':_0xcf12('0x3'),'afterDestroy':_0xcf12('0x4')};function emitEvent(_0x22a751){return function(_0x236dc0,_0x227669,_0x80a451){UserNotificationEvents['emit'](_0x22a751+':'+_0x236dc0['id'],_0x236dc0);UserNotificationEvents['emit'](_0x22a751,_0x236dc0);_0x80a451(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserNotification['hook'](e,emitEvent(event));}}module[_0xcf12('0x5')]=UserNotificationEvents;
\ No newline at end of file
+var _0xa634=['hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','remove','emit'];(function(_0x5b13c3,_0x378e0a){var _0x3d6780=function(_0x6327a6){while(--_0x6327a6){_0x5b13c3['push'](_0x5b13c3['shift']());}};_0x3d6780(++_0x378e0a);}(_0xa634,0x12c));var _0x4a63=function(_0x470416,_0x18a046){_0x470416=_0x470416-0x0;var _0x29279a=_0xa634[_0x470416];return _0x29279a;};'use strict';var EventEmitter=require(_0x4a63('0x0'));var UserNotification=require(_0x4a63('0x1'))['db']['UserNotification'];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x4a63('0x2')](0x0);var events={'afterCreate':_0x4a63('0x3'),'afterUpdate':'update','afterDestroy':_0x4a63('0x4')};function emitEvent(_0x3f04f3){return function(_0x2f84dc,_0x417748,_0x2c552c){UserNotificationEvents[_0x4a63('0x5')](_0x3f04f3+':'+_0x2f84dc['id'],_0x2f84dc);UserNotificationEvents[_0x4a63('0x5')](_0x3f04f3,_0x2f84dc);_0x2c552c(null);};}for(var e in events){if(events[_0x4a63('0x6')](e)){var event=events[e];UserNotification[_0x4a63('0x7')](e,emitEvent(event));}}module[_0x4a63('0x8')]=UserNotificationEvents;
\ No newline at end of file
index 853f36e..c522f53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d82=['api','moment','bluebird','path','../../config/environment','./userNotification.attributes','exports','define','UserNotification','utf8mb4_unicode_ci','lodash','util','../../config/logger'];(function(_0x2cee2b,_0x248339){var _0x1114d0=function(_0x454572){while(--_0x454572){_0x2cee2b['push'](_0x2cee2b['shift']());}};_0x1114d0(++_0x248339);}(_0x4d82,0x1c4));var _0x24d8=function(_0x1ded0f,_0x2c82a9){_0x1ded0f=_0x1ded0f-0x0;var _0x1ad47a=_0x4d82[_0x1ded0f];return _0x1ad47a;};'use strict';var _=require(_0x24d8('0x0'));var util=require(_0x24d8('0x1'));var logger=require(_0x24d8('0x2'))(_0x24d8('0x3'));var moment=require(_0x24d8('0x4'));var BPromise=require(_0x24d8('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x24d8('0x6'));var rimraf=require('rimraf');var config=require(_0x24d8('0x7'));var attributes=require(_0x24d8('0x8'));module[_0x24d8('0x9')]=function(_0x5e3054,_0x54e27d){return _0x5e3054[_0x24d8('0xa')](_0x24d8('0xb'),attributes,{'tableName':'userNotifications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x24d8('0xc')});};
\ No newline at end of file
+var _0xd005=['moment','bluebird','request-promise','rimraf','../../config/environment','./userNotification.attributes','exports','define','utf8mb4_unicode_ci','lodash','../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd005,0x17f));var _0x5d00=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xd005[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x5d00('0x0'));var util=require('util');var logger=require(_0x5d00('0x1'))('api');var moment=require(_0x5d00('0x2'));var BPromise=require(_0x5d00('0x3'));var rp=require(_0x5d00('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5d00('0x5'));var config=require(_0x5d00('0x6'));var attributes=require(_0x5d00('0x7'));module[_0x5d00('0x8')]=function(_0x2d79ed,_0x3c7449){return _0x2d79ed[_0x5d00('0x9')]('UserNotification',attributes,{'tableName':'userNotifications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x5d00('0xa')});};
\ No newline at end of file
index b4b649d..5f88344 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44f2=['request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./userNotification.socket','request','then','info','UserNotification,\x20%s,\x20%s'];(function(_0x4099a2,_0x3dab7d){var _0x425241=function(_0x4c1de5){while(--_0x4c1de5){_0x4099a2['push'](_0x4099a2['shift']());}};_0x425241(++_0x3dab7d);}(_0x44f2,0x14b));var _0x244f=function(_0x17928d,_0x2a2d21){_0x17928d=_0x17928d-0x0;var _0x1a7844=_0x44f2[_0x17928d];return _0x1a7844;};'use strict';var _=require('lodash');var util=require(_0x244f('0x0'));var moment=require(_0x244f('0x1'));var BPromise=require(_0x244f('0x2'));var rs=require(_0x244f('0x3'));var fs=require('fs');var Redis=require(_0x244f('0x4'));var db=require(_0x244f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x244f('0x6'))(_0x244f('0x7'));var config=require('../../config/environment');var jayson=require(_0x244f('0x8'));var client=jayson[_0x244f('0x9')][_0x244f('0xa')]({'port':0x232a});config['redis']=_[_0x244f('0xb')](config[_0x244f('0xc')],{'host':_0x244f('0xd'),'port':0x18eb});var socket=require(_0x244f('0xe'))(new Redis(config[_0x244f('0xc')]));require(_0x244f('0xf'))['register'](socket);function respondWithRpcPromise(_0xdfde3a,_0x4fcb53,_0x395603){return new BPromise(function(_0xc2b143,_0x42bb36){return client[_0x244f('0x10')](_0xdfde3a,_0x395603)[_0x244f('0x11')](function(_0x284d21){logger[_0x244f('0x12')](_0x244f('0x13'),_0x4fcb53,_0x244f('0x14'));logger[_0x244f('0x15')](_0x244f('0x16'),_0x4fcb53,_0x244f('0x14'),JSON['stringify'](_0x284d21));if(_0x284d21[_0x244f('0x17')]){if(_0x284d21[_0x244f('0x17')][_0x244f('0x18')]===0x1f4){logger[_0x244f('0x17')](_0x244f('0x13'),_0x4fcb53,_0x284d21[_0x244f('0x17')][_0x244f('0x19')]);return _0x42bb36(_0x284d21[_0x244f('0x17')][_0x244f('0x19')]);}logger[_0x244f('0x17')](_0x244f('0x13'),_0x4fcb53,_0x284d21[_0x244f('0x17')][_0x244f('0x19')]);return _0xc2b143(_0x284d21['error'][_0x244f('0x19')]);}else{logger[_0x244f('0x12')](_0x244f('0x13'),_0x4fcb53,_0x244f('0x14'));_0xc2b143(_0x284d21['result'][_0x244f('0x19')]);}})[_0x244f('0x1a')](function(_0x12e085){logger[_0x244f('0x17')](_0x244f('0x13'),_0x4fcb53,_0x12e085);_0x42bb36(_0x12e085);});});}
\ No newline at end of file
+var _0x571a=['request','then','info','debug','request\x20sent','stringify','error','code','UserNotification,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register'];(function(_0x43379c,_0x271d36){var _0x495648=function(_0x3f4652){while(--_0x3f4652){_0x43379c['push'](_0x43379c['shift']());}};_0x495648(++_0x271d36);}(_0x571a,0x1b0));var _0xa571=function(_0x4f3f53,_0x3f2044){_0x4f3f53=_0x4f3f53-0x0;var _0x31ca77=_0x571a[_0x4f3f53];return _0x31ca77;};'use strict';var _=require(_0xa571('0x0'));var util=require(_0xa571('0x1'));var moment=require(_0xa571('0x2'));var BPromise=require(_0xa571('0x3'));var rs=require(_0xa571('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa571('0x5'))['db'];var utils=require(_0xa571('0x6'));var logger=require(_0xa571('0x7'))(_0xa571('0x8'));var config=require(_0xa571('0x9'));var jayson=require(_0xa571('0xa'));var client=jayson[_0xa571('0xb')][_0xa571('0xc')]({'port':0x232a});config[_0xa571('0xd')]=_[_0xa571('0xe')](config[_0xa571('0xd')],{'host':_0xa571('0xf'),'port':0x18eb});var socket=require(_0xa571('0x10'))(new Redis(config[_0xa571('0xd')]));require('./userNotification.socket')[_0xa571('0x11')](socket);function respondWithRpcPromise(_0x407d9c,_0x24ef84,_0x405099){return new BPromise(function(_0x55c535,_0x5d8786){return client[_0xa571('0x12')](_0x407d9c,_0x405099)[_0xa571('0x13')](function(_0x5c9018){logger[_0xa571('0x14')]('UserNotification,\x20%s,\x20%s',_0x24ef84,'request\x20sent');logger[_0xa571('0x15')]('UserNotification,\x20%s,\x20%s,\x20%s',_0x24ef84,_0xa571('0x16'),JSON[_0xa571('0x17')](_0x5c9018));if(_0x5c9018[_0xa571('0x18')]){if(_0x5c9018[_0xa571('0x18')][_0xa571('0x19')]===0x1f4){logger[_0xa571('0x18')](_0xa571('0x1a'),_0x24ef84,_0x5c9018[_0xa571('0x18')][_0xa571('0x1b')]);return _0x5d8786(_0x5c9018['error']['message']);}logger[_0xa571('0x18')]('UserNotification,\x20%s,\x20%s',_0x24ef84,_0x5c9018[_0xa571('0x18')]['message']);return _0x55c535(_0x5c9018['error'][_0xa571('0x1b')]);}else{logger[_0xa571('0x14')](_0xa571('0x1a'),_0x24ef84,_0xa571('0x16'));_0x55c535(_0x5c9018[_0xa571('0x1c')][_0xa571('0x1b')]);}})[_0xa571('0x1d')](function(_0x192e51){logger[_0xa571('0x18')](_0xa571('0x1a'),_0x24ef84,_0x192e51);_0x5d8786(_0x192e51);});});}
\ No newline at end of file
index dda7b47..aa19dc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb65f=['save','update','emit','length','userNotification:','./userNotification.events'];(function(_0x5f309e,_0x66e31){var _0x487b5e=function(_0x44f203){while(--_0x44f203){_0x5f309e['push'](_0x5f309e['shift']());}};_0x487b5e(++_0x66e31);}(_0xb65f,0x1d3));var _0xfb65=function(_0x34d36a,_0x200da9){_0x34d36a=_0x34d36a-0x0;var _0xc4f7b=_0xb65f[_0x34d36a];return _0xc4f7b;};'use strict';var UserNotificationEvents=require(_0xfb65('0x0'));var events=[_0xfb65('0x1'),'remove',_0xfb65('0x2')];function createListener(_0x522b82,_0x544036){return function(_0x10562d){_0x544036[_0xfb65('0x3')](_0x522b82,_0x10562d);};}function removeListener(_0x3f09ff,_0x1ab80a){return function(){UserNotificationEvents['removeListener'](_0x3f09ff,_0x1ab80a);};}exports['register']=function(_0x4ed460){for(var _0x1a8ed0=0x0,_0x34771e=events[_0xfb65('0x4')];_0x1a8ed0<_0x34771e;_0x1a8ed0++){var _0x384d0d=events[_0x1a8ed0];var _0x47d0ac=createListener(_0xfb65('0x5')+_0x384d0d,_0x4ed460);UserNotificationEvents['on'](_0x384d0d,_0x47d0ac);}};
\ No newline at end of file
+var _0x82ef=['update','length','remove'];(function(_0x236ee9,_0x1bf9a2){var _0x42199c=function(_0x22afde){while(--_0x22afde){_0x236ee9['push'](_0x236ee9['shift']());}};_0x42199c(++_0x1bf9a2);}(_0x82ef,0x83));var _0xf82e=function(_0x37bc02,_0x220d68){_0x37bc02=_0x37bc02-0x0;var _0x52a452=_0x82ef[_0x37bc02];return _0x52a452;};'use strict';var UserNotificationEvents=require('./userNotification.events');var events=['save',_0xf82e('0x0'),_0xf82e('0x1')];function createListener(_0x2511b7,_0x576f0a){return function(_0x1baf37){_0x576f0a['emit'](_0x2511b7,_0x1baf37);};}function removeListener(_0x1abad3,_0x5d6269){return function(){UserNotificationEvents['removeListener'](_0x1abad3,_0x5d6269);};}exports['register']=function(_0x5700e){for(var _0x9b531f=0x0,_0x1ebf8c=events[_0xf82e('0x2')];_0x9b531f<_0x1ebf8c;_0x9b531f++){var _0x54dc5c=events[_0x9b531f];var _0xe30dab=createListener('userNotification:'+_0x54dc5c,_0x5700e);UserNotificationEvents['on'](_0x54dc5c,_0xe30dab);}};
\ No newline at end of file
index 24bb7a9..b6a4b65 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(_0x4ae533,_0x5b4ede){var _0x426403=function(_0xc4015c){while(--_0xc4015c){_0x4ae533['push'](_0x4ae533['shift']());}};_0x426403(++_0x5b4ede);}(_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(_0x3cfca3,_0x25481a){var _0x552312=function(_0x47af1d){while(--_0x47af1d){_0x3cfca3['push'](_0x3cfca3['shift']());}};_0x552312(++_0x25481a);}(_0x70e0,0x17b));var _0x070e=function(_0x38c26a,_0x233bbc){_0x38c26a=_0x38c26a-0x0;var _0x4184d2=_0x70e0[_0x38c26a];return _0x4184d2;};'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 99ae3a8..7e25c75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1da6=['sequelize','exports','INTEGER'];(function(_0x5e5af4,_0x150f0f){var _0x22d002=function(_0x45a4f8){while(--_0x45a4f8){_0x5e5af4['push'](_0x5e5af4['shift']());}};_0x22d002(++_0x150f0f);}(_0x1da6,0x117));var _0x61da=function(_0x9d9d58,_0x7bf873){_0x9d9d58=_0x9d9d58-0x0;var _0x51d4d3=_0x1da6[_0x9d9d58];return _0x51d4d3;};'use strict';var Sequelize=require(_0x61da('0x0'));module[_0x61da('0x1')]={'penalty':{'type':Sequelize[_0x61da('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x2954=['exports','INTEGER'];(function(_0x190587,_0x343933){var _0x5335cc=function(_0x4a84ec){while(--_0x4a84ec){_0x190587['push'](_0x190587['shift']());}};_0x5335cc(++_0x343933);}(_0x2954,0x1de));var _0x4295=function(_0x1064bc,_0x206f12){_0x1064bc=_0x1064bc-0x0;var _0x5edc45=_0x2954[_0x1064bc];return _0x5edc45;};'use strict';var Sequelize=require('sequelize');module[_0x4295('0x0')]={'penalty':{'type':Sequelize[_0x4295('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index d252a41..2cdaf06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd9d=['moment','request-promise','path','rimraf','../../config/environment','exports','define','UserOpenchannelQueue','user_has_openchannel_queues','../../config/logger','api'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0xdd9d,0x6c));var _0xddd9=function(_0x3ca56b,_0x2ca214){_0x3ca56b=_0x3ca56b-0x0;var _0x5b7191=_0xdd9d[_0x3ca56b];return _0x5b7191;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xddd9('0x0'))(_0xddd9('0x1'));var moment=require(_0xddd9('0x2'));var BPromise=require('bluebird');var rp=require(_0xddd9('0x3'));var fs=require('fs');var path=require(_0xddd9('0x4'));var rimraf=require(_0xddd9('0x5'));var config=require(_0xddd9('0x6'));var attributes=require('./userOpenchannelQueue.attributes');module[_0xddd9('0x7')]=function(_0x25c915,_0x1ee43d){return _0x25c915[_0xddd9('0x8')](_0xddd9('0x9'),attributes,{'tableName':_0xddd9('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd016=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userOpenchannelQueue.attributes','exports','define','UserOpenchannelQueue'];(function(_0x447aa7,_0xbf3a16){var _0x5b944c=function(_0x3ad34a){while(--_0x3ad34a){_0x447aa7['push'](_0x447aa7['shift']());}};_0x5b944c(++_0xbf3a16);}(_0xd016,0x1d4));var _0x6d01=function(_0x126123,_0xb6db8c){_0x126123=_0x126123-0x0;var _0x249ef6=_0xd016[_0x126123];return _0x249ef6;};'use strict';var _=require('lodash');var util=require(_0x6d01('0x0'));var logger=require(_0x6d01('0x1'))(_0x6d01('0x2'));var moment=require(_0x6d01('0x3'));var BPromise=require(_0x6d01('0x4'));var rp=require(_0x6d01('0x5'));var fs=require('fs');var path=require(_0x6d01('0x6'));var rimraf=require(_0x6d01('0x7'));var config=require(_0x6d01('0x8'));var attributes=require(_0x6d01('0x9'));module[_0x6d01('0xa')]=function(_0x484268,_0x41b6da){return _0x484268[_0x6d01('0xb')](_0x6d01('0xc'),attributes,{'tableName':'user_has_openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 96b8129..fd53ed9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4f3=['../../config/environment','jayson/promise','client','http','request','then','info','UserOpenchannelQueue,\x20%s,\x20%s','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x15e739,_0x48b236){var _0x1d4a3d=function(_0x52f085){while(--_0x52f085){_0x15e739['push'](_0x15e739['shift']());}};_0x1d4a3d(++_0x48b236);}(_0xd4f3,0x9f));var _0x3d4f=function(_0x32c661,_0x2a7b43){_0x32c661=_0x32c661-0x0;var _0x2c4924=_0xd4f3[_0x32c661];return _0x2c4924;};'use strict';var _=require(_0x3d4f('0x0'));var util=require('util');var moment=require(_0x3d4f('0x1'));var BPromise=require(_0x3d4f('0x2'));var rs=require(_0x3d4f('0x3'));var fs=require('fs');var Redis=require(_0x3d4f('0x4'));var db=require(_0x3d4f('0x5'))['db'];var utils=require(_0x3d4f('0x6'));var logger=require(_0x3d4f('0x7'))(_0x3d4f('0x8'));var config=require(_0x3d4f('0x9'));var jayson=require(_0x3d4f('0xa'));var client=jayson[_0x3d4f('0xb')][_0x3d4f('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x150907,_0x42c521,_0x231a47){return new BPromise(function(_0x358c0c,_0x1724fc){return client[_0x3d4f('0xd')](_0x150907,_0x231a47)[_0x3d4f('0xe')](function(_0x40581d){logger[_0x3d4f('0xf')](_0x3d4f('0x10'),_0x42c521,'request\x20sent');logger[_0x3d4f('0x11')](_0x3d4f('0x12'),_0x42c521,_0x3d4f('0x13'),JSON[_0x3d4f('0x14')](_0x40581d));if(_0x40581d['error']){if(_0x40581d[_0x3d4f('0x15')][_0x3d4f('0x16')]===0x1f4){logger['error'](_0x3d4f('0x10'),_0x42c521,_0x40581d[_0x3d4f('0x15')]['message']);return _0x1724fc(_0x40581d[_0x3d4f('0x15')][_0x3d4f('0x17')]);}logger[_0x3d4f('0x15')](_0x3d4f('0x10'),_0x42c521,_0x40581d[_0x3d4f('0x15')][_0x3d4f('0x17')]);return _0x358c0c(_0x40581d[_0x3d4f('0x15')][_0x3d4f('0x17')]);}else{logger[_0x3d4f('0xf')](_0x3d4f('0x10'),_0x42c521,'request\x20sent');_0x358c0c(_0x40581d['result']['message']);}})['catch'](function(_0x2d4f25){logger[_0x3d4f('0x15')](_0x3d4f('0x10'),_0x42c521,_0x2d4f25);_0x1724fc(_0x2d4f25);});});}
\ No newline at end of file
+var _0x1039=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','util'];(function(_0x1154a1,_0x1b11a4){var _0x2b31ec=function(_0x5e3d87){while(--_0x5e3d87){_0x1154a1['push'](_0x1154a1['shift']());}};_0x2b31ec(++_0x1b11a4);}(_0x1039,0x175));var _0x9103=function(_0x19140d,_0x55008f){_0x19140d=_0x19140d-0x0;var _0xcfc70e=_0x1039[_0x19140d];return _0xcfc70e;};'use strict';var _=require('lodash');var util=require(_0x9103('0x0'));var moment=require(_0x9103('0x1'));var BPromise=require(_0x9103('0x2'));var rs=require(_0x9103('0x3'));var fs=require('fs');var Redis=require(_0x9103('0x4'));var db=require(_0x9103('0x5'))['db'];var utils=require(_0x9103('0x6'));var logger=require(_0x9103('0x7'))(_0x9103('0x8'));var config=require(_0x9103('0x9'));var jayson=require(_0x9103('0xa'));var client=jayson[_0x9103('0xb')][_0x9103('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x521767,_0xe5e340,_0x34986c){return new BPromise(function(_0x345a57,_0x50ee98){return client[_0x9103('0xd')](_0x521767,_0x34986c)['then'](function(_0x50fb27){logger[_0x9103('0xe')](_0x9103('0xf'),_0xe5e340,_0x9103('0x10'));logger['debug'](_0x9103('0x11'),_0xe5e340,'request\x20sent',JSON[_0x9103('0x12')](_0x50fb27));if(_0x50fb27[_0x9103('0x13')]){if(_0x50fb27[_0x9103('0x13')]['code']===0x1f4){logger[_0x9103('0x13')](_0x9103('0xf'),_0xe5e340,_0x50fb27[_0x9103('0x13')][_0x9103('0x14')]);return _0x50ee98(_0x50fb27[_0x9103('0x13')][_0x9103('0x14')]);}logger[_0x9103('0x13')](_0x9103('0xf'),_0xe5e340,_0x50fb27[_0x9103('0x13')][_0x9103('0x14')]);return _0x345a57(_0x50fb27[_0x9103('0x13')]['message']);}else{logger[_0x9103('0xe')](_0x9103('0xf'),_0xe5e340,_0x9103('0x10'));_0x345a57(_0x50fb27[_0x9103('0x15')][_0x9103('0x14')]);}})['catch'](function(_0x448866){logger[_0x9103('0x13')](_0x9103('0xf'),_0xe5e340,_0x448866);_0x50ee98(_0x448866);});});}
\ No newline at end of file
index 8da6537..9e44a6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8eb4=['delete','removeSections','removeResources','exports','multer','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get','/describe','describe','/:id','isAuthenticated','show','getSections','getResources','post','create','clone','/:id/sections','addSections','/:id/resources','addResources','update','destroy'];(function(_0x176b24,_0x57581e){var _0x32edc4=function(_0x528a52){while(--_0x528a52){_0x176b24['push'](_0x176b24['shift']());}};_0x32edc4(++_0x57581e);}(_0x8eb4,0xc8));var _0x48eb=function(_0x8afdd0,_0x548ad1){_0x8afdd0=_0x8afdd0-0x0;var _0x3de7ac=_0x8eb4[_0x8afdd0];return _0x3de7ac;};'use strict';var multer=require(_0x48eb('0x0'));var util=require('util');var path=require(_0x48eb('0x1'));var timeout=require(_0x48eb('0x2'));var express=require(_0x48eb('0x3'));var router=express[_0x48eb('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x48eb('0x5'));var config=require(_0x48eb('0x6'));var controller=require('./userProfile.controller');router[_0x48eb('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x48eb('0x7')](_0x48eb('0x8'),auth['isAuthenticated'](),controller[_0x48eb('0x9')]);router['get'](_0x48eb('0xa'),auth[_0x48eb('0xb')](),controller[_0x48eb('0xc')]);router['get']('/:id/sections',auth[_0x48eb('0xb')](),controller[_0x48eb('0xd')]);router['get']('/:id/resources',auth['isAuthenticated'](),controller[_0x48eb('0xe')]);router[_0x48eb('0xf')]('/',auth[_0x48eb('0xb')](),controller[_0x48eb('0x10')]);router[_0x48eb('0xf')]('/:id/clone',auth[_0x48eb('0xb')](),controller[_0x48eb('0x11')]);router[_0x48eb('0xf')](_0x48eb('0x12'),auth[_0x48eb('0xb')](),controller[_0x48eb('0x13')]);router[_0x48eb('0xf')](_0x48eb('0x14'),auth[_0x48eb('0xb')](),controller[_0x48eb('0x15')]);router['put']('/:id',auth[_0x48eb('0xb')](),controller[_0x48eb('0x16')]);router['delete'](_0x48eb('0xa'),auth['isAuthenticated'](),controller[_0x48eb('0x17')]);router[_0x48eb('0x18')](_0x48eb('0x12'),auth[_0x48eb('0xb')](),controller[_0x48eb('0x19')]);router[_0x48eb('0x18')](_0x48eb('0x14'),auth[_0x48eb('0xb')](),controller[_0x48eb('0x1a')]);module[_0x48eb('0x1b')]=router;
\ No newline at end of file
+var _0x2a1d=['getSections','/:id/resources','getResources','create','post','clone','addSections','addResources','update','delete','destroy','/:id/sections','removeSections','removeResources','exports','path','express','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x4e11c1,_0x1dd290){var _0x20bc60=function(_0xd7d333){while(--_0xd7d333){_0x4e11c1['push'](_0x4e11c1['shift']());}};_0x20bc60(++_0x1dd290);}(_0x2a1d,0x113));var _0xd2a1=function(_0x3ab5e5,_0x266c9f){_0x3ab5e5=_0x3ab5e5-0x0;var _0xf6531f=_0x2a1d[_0x3ab5e5];return _0xf6531f;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xd2a1('0x0'));var timeout=require('connect-timeout');var express=require(_0xd2a1('0x1'));var router=express[_0xd2a1('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xd2a1('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xd2a1('0x4'));var controller=require('./userProfile.controller');router[_0xd2a1('0x5')]('/',auth[_0xd2a1('0x6')](),controller[_0xd2a1('0x7')]);router[_0xd2a1('0x5')](_0xd2a1('0x8'),auth[_0xd2a1('0x6')](),controller[_0xd2a1('0x9')]);router[_0xd2a1('0x5')](_0xd2a1('0xa'),auth['isAuthenticated'](),controller['show']);router[_0xd2a1('0x5')]('/:id/sections',auth['isAuthenticated'](),controller[_0xd2a1('0xb')]);router[_0xd2a1('0x5')](_0xd2a1('0xc'),auth[_0xd2a1('0x6')](),controller[_0xd2a1('0xd')]);router['post']('/',auth[_0xd2a1('0x6')](),controller[_0xd2a1('0xe')]);router[_0xd2a1('0xf')]('/:id/clone',auth['isAuthenticated'](),controller[_0xd2a1('0x10')]);router[_0xd2a1('0xf')]('/:id/sections',auth[_0xd2a1('0x6')](),controller[_0xd2a1('0x11')]);router[_0xd2a1('0xf')]('/:id/resources',auth['isAuthenticated'](),controller[_0xd2a1('0x12')]);router['put'](_0xd2a1('0xa'),auth[_0xd2a1('0x6')](),controller[_0xd2a1('0x13')]);router[_0xd2a1('0x14')]('/:id',auth[_0xd2a1('0x6')](),controller[_0xd2a1('0x15')]);router['delete'](_0xd2a1('0x16'),auth['isAuthenticated'](),controller[_0xd2a1('0x17')]);router[_0xd2a1('0x14')](_0xd2a1('0xc'),auth[_0xd2a1('0x6')](),controller[_0xd2a1('0x18')]);module[_0xd2a1('0x19')]=router;
\ No newline at end of file
index 59e9024..5b596f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd83e=['join','getDataValue','split','BOOLEAN','sequelize','STRING','setDataValue','crudPermissions'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0xd83e,0x1ac));var _0xed83=function(_0x1ea8e7,_0x549be3){_0x1ea8e7=_0x1ea8e7-0x0;var _0x19402c=_0xd83e[_0x1ea8e7];return _0x19402c;};'use strict';var Sequelize=require(_0xed83('0x0'));module['exports']={'name':{'type':Sequelize[_0xed83('0x1')],'allowNull':![],'unique':'name'},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x302592){this[_0xed83('0x2')](_0xed83('0x3'),_0x302592?_0x302592[_0xed83('0x4')](''):[]);},'get':function(){return this[_0xed83('0x5')](_0xed83('0x3'))?this[_0xed83('0x5')](_0xed83('0x3'))[_0xed83('0x6')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xed83('0x1')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xed83('0x7')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xed83('0x7')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xed83('0x7')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xed83('0x7')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xed83('0x7')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xed83('0x7')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x6e1e=['sequelize','exports','name','STRING','setDataValue','crudPermissions','join','getDataValue','split','BOOLEAN'];(function(_0x3ae2b2,_0x2d936f){var _0x1dbf00=function(_0x4072e9){while(--_0x4072e9){_0x3ae2b2['push'](_0x3ae2b2['shift']());}};_0x1dbf00(++_0x2d936f);}(_0x6e1e,0xfa));var _0xe6e1=function(_0x5b03e3,_0x4636a3){_0x5b03e3=_0x5b03e3-0x0;var _0x12b840=_0x6e1e[_0x5b03e3];return _0x12b840;};'use strict';var Sequelize=require(_0xe6e1('0x0'));module[_0xe6e1('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xe6e1('0x2')},'crudPermissions':{'type':Sequelize[_0xe6e1('0x3')],'set':function(_0x456054){this[_0xe6e1('0x4')](_0xe6e1('0x5'),_0x456054?_0x456054[_0xe6e1('0x6')](''):[]);},'get':function(){return this[_0xe6e1('0x7')](_0xe6e1('0x5'))?this[_0xe6e1('0x7')](_0xe6e1('0x5'))[_0xe6e1('0x8')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xe6e1('0x3')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xe6e1('0x9')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xe6e1('0x9')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xe6e1('0x9')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xe6e1('0x9')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xe6e1('0x9')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xe6e1('0x9')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xe6e1('0x9')],'defaultValue':!![]}};
\ No newline at end of file
index 7aad5ed..4d9293d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1aab=['end','error','name','send','index','map','UserProfile','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','fields','find','create','body','clone','params','options','get','createdAt','crudPermissions','updatedAt','transaction','UserProfileSection','each','autoAssociation','UserProfileResource','omit','sectionId','userProfileId','Resources','addSections','sequelize','removeSections','ids','getSections','enabled','includes','subsections','forEach','push','resourceId','bulkCreate','removeResources','getResources','section','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','status','offset','undefined','limit','count','set','json','apply','reject','update','then','destroy'];(function(_0x430694,_0x8b1b13){var _0x124ab4=function(_0x5110ed){while(--_0x5110ed){_0x430694['push'](_0x430694['shift']());}};_0x124ab4(++_0x8b1b13);}(_0x1aab,0x122));var _0xb1aa=function(_0x38fb6c,_0x4a8371){_0x38fb6c=_0x38fb6c-0x0;var _0x5cc0c0=_0x1aab[_0x38fb6c];return _0x5cc0c0;};'use strict';var emlformat=require(_0xb1aa('0x0'));var rimraf=require(_0xb1aa('0x1'));var zipdir=require(_0xb1aa('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb1aa('0x3'));var moment=require('moment');var BPromise=require(_0xb1aa('0x4'));var Mustache=require(_0xb1aa('0x5'));var util=require(_0xb1aa('0x6'));var path=require(_0xb1aa('0x7'));var sox=require(_0xb1aa('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb1aa('0x9'));var _=require(_0xb1aa('0xa'));var squel=require(_0xb1aa('0xb'));var crypto=require(_0xb1aa('0xc'));var jsforce=require(_0xb1aa('0xd'));var deskjs=require(_0xb1aa('0xe'));var toCsv=require(_0xb1aa('0xf'));var querystring=require('querystring');var Papa=require(_0xb1aa('0x10'));var Redis=require(_0xb1aa('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xb1aa('0x12'));var as=require(_0xb1aa('0x13'));var hardwareService=require(_0xb1aa('0x14'));var logger=require(_0xb1aa('0x15'))(_0xb1aa('0x16'));var utils=require(_0xb1aa('0x17'));var config=require(_0xb1aa('0x18'));var licenseUtil=require(_0xb1aa('0x19'));var db=require(_0xb1aa('0x1a'))['db'];config[_0xb1aa('0x1b')]=_[_0xb1aa('0x1c')](config[_0xb1aa('0x1b')],{'host':_0xb1aa('0x1d'),'port':0x18eb});var socket=require(_0xb1aa('0x1e'))(new Redis(config[_0xb1aa('0x1b')]));require('./userProfile.socket')['register'](socket);function respondWithStatusCode(_0xc75972,_0x53ab03){_0x53ab03=_0x53ab03||0xcc;return function(_0x17c9e8){if(_0x17c9e8){return _0xc75972['sendStatus'](_0x53ab03);}return _0xc75972[_0xb1aa('0x1f')](_0x53ab03)['end']();};}function respondWithResult(_0x24b12d,_0x489fb6){_0x489fb6=_0x489fb6||0xc8;return function(_0x235b7b){if(_0x235b7b){return _0x24b12d[_0xb1aa('0x1f')](_0x489fb6)['json'](_0x235b7b);}};}function respondWithFilteredResult(_0x2531f2,_0x3624aa){return function(_0x1d1450){if(_0x1d1450){var _0x471116=typeof _0x3624aa[_0xb1aa('0x20')]===_0xb1aa('0x21')&&typeof _0x3624aa[_0xb1aa('0x22')]===_0xb1aa('0x21');var _0x36dc82=_0x1d1450[_0xb1aa('0x23')];var _0x142c6d=_0x471116?0x0:_0x3624aa[_0xb1aa('0x20')];var _0x452e6b=_0x471116?_0x1d1450[_0xb1aa('0x23')]:_0x3624aa['offset']+_0x3624aa[_0xb1aa('0x22')];var _0x2e6725;if(_0x452e6b>=_0x36dc82){_0x452e6b=_0x36dc82;_0x2e6725=0xc8;}else{_0x2e6725=0xce;}_0x2531f2[_0xb1aa('0x1f')](_0x2e6725);return _0x2531f2[_0xb1aa('0x24')]('Content-Range',_0x142c6d+'-'+_0x452e6b+'/'+_0x36dc82)[_0xb1aa('0x25')](_0x1d1450);}return null;};}function patchUpdates(_0x143e99){return function(_0x58a71e){try{jsonpatch[_0xb1aa('0x26')](_0x58a71e,_0x143e99,!![]);}catch(_0x17298c){return BPromise[_0xb1aa('0x27')](_0x17298c);}return _0x58a71e['save']();};}function saveUpdates(_0x5bb543,_0x2375ab){return function(_0x781572){if(_0x781572){return _0x781572[_0xb1aa('0x28')](_0x5bb543)[_0xb1aa('0x29')](function(_0x3a9c9e){return _0x3a9c9e;});}return null;};}function removeEntity(_0x2f1db9,_0x26ec21){return function(_0x42fc91){if(_0x42fc91){return _0x42fc91[_0xb1aa('0x2a')]()[_0xb1aa('0x29')](function(){_0x2f1db9[_0xb1aa('0x1f')](0xcc)[_0xb1aa('0x2b')]();});}};}function handleEntityNotFound(_0x34b5e8,_0x4315e8){return function(_0x40c7ff){if(!_0x40c7ff){_0x34b5e8['sendStatus'](0x194);}return _0x40c7ff;};}function handleError(_0xd20062,_0x370669){_0x370669=_0x370669||0x1f4;return function(_0x3c1b92){logger[_0xb1aa('0x2c')](_0x3c1b92['stack']);if(_0x3c1b92[_0xb1aa('0x2d')]){delete _0x3c1b92[_0xb1aa('0x2d')];}_0xd20062['status'](_0x370669)[_0xb1aa('0x2e')](_0x3c1b92);};}exports[_0xb1aa('0x2f')]=function(_0x14d46f,_0x505542){var _0x25df88={},_0x120cc3={},_0x4a785e={'count':0x0,'rows':[]};var _0x4b8b7c=_[_0xb1aa('0x30')](db[_0xb1aa('0x31')][_0xb1aa('0x32')],function(_0x718b9a){return{'name':_0x718b9a[_0xb1aa('0x33')],'type':_0x718b9a[_0xb1aa('0x34')]['key']};});_0x120cc3[_0xb1aa('0x35')]=_['map'](_0x4b8b7c,'name');_0x120cc3['query']=_[_0xb1aa('0x36')](_0x14d46f[_0xb1aa('0x37')]);_0x120cc3[_0xb1aa('0x38')]=_[_0xb1aa('0x39')](_0x120cc3[_0xb1aa('0x35')],_0x120cc3['query']);_0x25df88[_0xb1aa('0x3a')]=_[_0xb1aa('0x39')](_0x120cc3[_0xb1aa('0x35')],qs['fields'](_0x14d46f['query']['fields']));_0x25df88[_0xb1aa('0x3a')]=_0x25df88[_0xb1aa('0x3a')][_0xb1aa('0x3b')]?_0x25df88[_0xb1aa('0x3a')]:_0x120cc3['model'];if(!_0x14d46f[_0xb1aa('0x37')][_0xb1aa('0x3c')](_0xb1aa('0x3d'))){_0x25df88[_0xb1aa('0x22')]=qs['limit'](_0x14d46f[_0xb1aa('0x37')][_0xb1aa('0x22')]);_0x25df88[_0xb1aa('0x20')]=qs['offset'](_0x14d46f[_0xb1aa('0x37')][_0xb1aa('0x20')]);}_0x25df88[_0xb1aa('0x3e')]=qs[_0xb1aa('0x3f')](_0x14d46f[_0xb1aa('0x37')][_0xb1aa('0x3f')]);_0x25df88[_0xb1aa('0x40')]=qs[_0xb1aa('0x38')](_[_0xb1aa('0x41')](_0x14d46f['query'],_0x120cc3[_0xb1aa('0x38')]),_0x4b8b7c);if(_0x14d46f['query'][_0xb1aa('0x42')]){_0x25df88[_0xb1aa('0x40')]=_[_0xb1aa('0x43')](_0x25df88[_0xb1aa('0x40')],{'$or':_['map'](_0x4b8b7c,function(_0x347b6a){if(_0x347b6a[_0xb1aa('0x34')]!==_0xb1aa('0x44')){var _0x582bfb={};_0x582bfb[_0x347b6a[_0xb1aa('0x2d')]]={'$like':'%'+_0x14d46f[_0xb1aa('0x37')]['filter']+'%'};return _0x582bfb;}})});}_0x25df88=_['merge']({},_0x25df88,_0x14d46f['options']);var _0xc32fba={'where':_0x25df88[_0xb1aa('0x40')]};return db[_0xb1aa('0x31')][_0xb1aa('0x23')](_0xc32fba)['then'](function(_0xcf3f4f){_0x4a785e[_0xb1aa('0x23')]=_0xcf3f4f;if(_0x14d46f[_0xb1aa('0x37')][_0xb1aa('0x45')]){_0x25df88[_0xb1aa('0x46')]=[{'all':!![]}];}return db['UserProfile'][_0xb1aa('0x47')](_0x25df88);})[_0xb1aa('0x29')](function(_0xe5be48){_0x4a785e[_0xb1aa('0x48')]=_0xe5be48;return _0x4a785e;})[_0xb1aa('0x29')](respondWithFilteredResult(_0x505542,_0x25df88))[_0xb1aa('0x49')](handleError(_0x505542,null));};exports[_0xb1aa('0x4a')]=function(_0x393f01,_0x54a674){var _0x3c56f3={'raw':![],'where':{'id':_0x393f01['params']['id']}},_0x3bc2d7={};_0x3bc2d7[_0xb1aa('0x35')]=_[_0xb1aa('0x36')](db[_0xb1aa('0x31')][_0xb1aa('0x32')]);_0x3bc2d7['query']=_['keys'](_0x393f01[_0xb1aa('0x37')]);_0x3bc2d7[_0xb1aa('0x38')]=_['intersection'](_0x3bc2d7[_0xb1aa('0x35')],_0x3bc2d7[_0xb1aa('0x37')]);_0x3c56f3[_0xb1aa('0x3a')]=_['intersection'](_0x3bc2d7[_0xb1aa('0x35')],qs[_0xb1aa('0x4b')](_0x393f01['query']['fields']));_0x3c56f3[_0xb1aa('0x3a')]=_0x3c56f3[_0xb1aa('0x3a')][_0xb1aa('0x3b')]?_0x3c56f3['attributes']:_0x3bc2d7[_0xb1aa('0x35')];if(_0x393f01[_0xb1aa('0x37')][_0xb1aa('0x45')]){_0x3c56f3[_0xb1aa('0x46')]=[{'all':!![]}];}_0x3c56f3=_[_0xb1aa('0x43')]({},_0x3c56f3,_0x393f01['options']);return db[_0xb1aa('0x31')][_0xb1aa('0x4c')](_0x3c56f3)[_0xb1aa('0x29')](handleEntityNotFound(_0x54a674,null))[_0xb1aa('0x29')](respondWithResult(_0x54a674,null))['catch'](handleError(_0x54a674,null));};exports['create']=function(_0x213ab2,_0xfd9d9e){return db['UserProfile'][_0xb1aa('0x4d')](_0x213ab2[_0xb1aa('0x4e')],{})[_0xb1aa('0x29')](respondWithResult(_0xfd9d9e,0xc9))['catch'](handleError(_0xfd9d9e,null));};exports[_0xb1aa('0x4f')]=function(_0xb6d736,_0x4c6b3c){var _0x1f9db1={'where':{'id':_0xb6d736[_0xb1aa('0x50')]['id']}},_0x30377e={};_0x30377e[_0xb1aa('0x35')]=_[_0xb1aa('0x36')](db[_0xb1aa('0x31')]['rawAttributes']);_0x1f9db1['attributes']=_[_0xb1aa('0x39')](_0x30377e[_0xb1aa('0x35')],qs[_0xb1aa('0x4b')](_0xb6d736['query']['fields']));_0x1f9db1['attributes']=_0x1f9db1['attributes']['length']?_0x1f9db1['attributes']:_0x30377e[_0xb1aa('0x35')];if(_0xb6d736[_0xb1aa('0x37')][_0xb1aa('0x45')]){_0x1f9db1[_0xb1aa('0x46')]=[{'all':!![]}];}_0x1f9db1=_[_0xb1aa('0x43')]({},_0x1f9db1,_0xb6d736[_0xb1aa('0x51')]);return db[_0xb1aa('0x31')][_0xb1aa('0x4c')](_0x1f9db1)[_0xb1aa('0x29')](handleEntityNotFound(_0x4c6b3c,null))[_0xb1aa('0x29')](function(_0x291986){if(_0x291986){var _0x4f6398=_0x291986[_0xb1aa('0x52')]({'plain':!![]});_0x4f6398=qs['omit'](_0x4f6398,['id',_0xb1aa('0x53'),'updatedAt',_0xb1aa('0x54')]);_0xb6d736[_0xb1aa('0x4e')]=_['omit'](_0xb6d736[_0xb1aa('0x4e')],['id','createdAt',_0xb1aa('0x55')]);return db['sequelize'][_0xb1aa('0x56')](function(_0x3a4c3a){return db[_0xb1aa('0x31')]['create'](_[_0xb1aa('0x43')](_0x4f6398,_0xb6d736['body']),{'include':_0xb6d736['query'][_0xb1aa('0x45')]?[{'all':!![]}]:undefined,'transaction':_0x3a4c3a})[_0xb1aa('0x29')](function(_0x5b8f6d){var _0x38d824=_0x5b8f6d[_0xb1aa('0x52')]({'plain':!![]});return db[_0xb1aa('0x57')]['findAll']({'where':{'userProfileId':_0xb6d736[_0xb1aa('0x50')]['id']},'raw':!![]})[_0xb1aa('0x29')](function(_0x3cc7cd){if(_0x3cc7cd){return BPromise[_0xb1aa('0x58')](_0x3cc7cd,function(_0x56d6c3){return new BPromise(function(_0x4e7c05,_0x30a8bb){if(_0x56d6c3[_0xb1aa('0x59')]===null||_0x56d6c3[_0xb1aa('0x59')]===0x1)_0x4e7c05(null);return db[_0xb1aa('0x5a')]['findAll']({'where':{'sectionId':_0x56d6c3['id']},'raw':!![]})['then'](function(_0x3dd2a1){var _0x300354=_[_0xb1aa('0x30')](_0x3dd2a1,function(_0x3ec5e8){return qs[_0xb1aa('0x5b')](_0x3ec5e8,['id','createdAt','updatedAt',_0xb1aa('0x5c')]);});_0x4e7c05(_0x300354);})[_0xb1aa('0x49')](function(_0x2bec8d){_0x30a8bb(_0x2bec8d);});})['then'](function(_0x12144){var _0x1a17c4=qs['omit'](_0x56d6c3,['id','createdAt',_0xb1aa('0x55')]);_0x1a17c4[_0xb1aa('0x5d')]=_0x38d824['id'];if(_0x12144)_0x1a17c4[_0xb1aa('0x5e')]=_0x12144;return _0x1a17c4;})['then'](function(_0x2d7e8a){return db[_0xb1aa('0x57')][_0xb1aa('0x4d')](_0x2d7e8a,{'include':[{'model':db['UserProfileResource'],'as':_0xb1aa('0x5e')}],'raw':!![],'transaction':_0x3a4c3a});});})[_0xb1aa('0x29')](function(){return _0x38d824;});}});});});}})[_0xb1aa('0x29')](respondWithResult(_0x4c6b3c,0xc9))['catch'](handleError(_0x4c6b3c,null));};exports['update']=function(_0x36a1c5,_0x13249c){if(_0x36a1c5[_0xb1aa('0x4e')]['id']){delete _0x36a1c5['body']['id'];}return db[_0xb1aa('0x31')]['find']({'where':{'id':_0x36a1c5[_0xb1aa('0x50')]['id']}})[_0xb1aa('0x29')](handleEntityNotFound(_0x13249c,null))[_0xb1aa('0x29')](saveUpdates(_0x36a1c5[_0xb1aa('0x4e')],null))[_0xb1aa('0x29')](respondWithResult(_0x13249c,null))[_0xb1aa('0x49')](handleError(_0x13249c,null));};exports[_0xb1aa('0x2a')]=function(_0x7fbc8c,_0x3df823){return db[_0xb1aa('0x31')][_0xb1aa('0x4c')]({'where':{'id':_0x7fbc8c[_0xb1aa('0x50')]['id']}})[_0xb1aa('0x29')](handleEntityNotFound(_0x3df823,null))[_0xb1aa('0x29')](removeEntity(_0x3df823,null))[_0xb1aa('0x49')](handleError(_0x3df823,null));};exports['describe']=function(_0x178ee3,_0x140035){return db[_0xb1aa('0x31')]['describe']()[_0xb1aa('0x29')](respondWithResult(_0x140035,null))[_0xb1aa('0x49')](handleError(_0x140035,null));};exports[_0xb1aa('0x5f')]=function(_0x14281a,_0x1fe3d9){var _0x150846=_0x14281a['body'];return db[_0xb1aa('0x31')]['find']({'where':{'id':_0x14281a[_0xb1aa('0x50')]['id']}})[_0xb1aa('0x29')](handleEntityNotFound(_0x1fe3d9,null))[_0xb1aa('0x29')](function(_0x2c4130){if(_0x2c4130){return db[_0xb1aa('0x60')][_0xb1aa('0x56')](function(_0x59f5ef){return db['UserProfileSection'][_0xb1aa('0x2a')]({'where':{'userProfileId':_0x14281a[_0xb1aa('0x50')]['id'],'sectionId':_[_0xb1aa('0x30')](_0x150846,function(_0x13b682){return _0x13b682['sectionId'];})},'transaction':_0x59f5ef})['then'](function(){var _0x1d8fce=_[_0xb1aa('0x30')](_0x150846,function(_0x4d3b41){_0x4d3b41[_0xb1aa('0x5d')]=_0x14281a[_0xb1aa('0x50')]['id'];return _0x4d3b41;});var _0x1c2f67=[];return BPromise['each'](_0x1d8fce,function(_0x556c0b){return db['UserProfileSection'][_0xb1aa('0x4d')](_0x556c0b,{'include':[{'model':db[_0xb1aa('0x5a')],'as':_0xb1aa('0x5e')}],'raw':!![],'transaction':_0x59f5ef})['then'](function(_0x225ddd){_0x1c2f67['push'](_0x225ddd[_0xb1aa('0x52')]({'plain':!![]}));});})['then'](function(){return _0x1c2f67;});});});}})[_0xb1aa('0x29')](function(_0x3509be){return _0x3509be;})['then'](respondWithResult(_0x1fe3d9,null))[_0xb1aa('0x49')](handleError(_0x1fe3d9,null));};exports[_0xb1aa('0x61')]=function(_0x15407c,_0x488484){var _0x3bf8f5;return db[_0xb1aa('0x31')][_0xb1aa('0x4c')]({'where':{'id':_0x15407c['params']['id']},'attributes':['id',_0xb1aa('0x2d')]})[_0xb1aa('0x29')](handleEntityNotFound(_0x488484,null))['then'](function(_0x55168){if(_0x55168){_0x3bf8f5=_0x55168;return db[_0xb1aa('0x57')][_0xb1aa('0x2a')]({'where':{'userProfileId':_0x15407c[_0xb1aa('0x50')]['id'],'sectionId':_0x15407c[_0xb1aa('0x37')][_0xb1aa('0x62')]}});}})[_0xb1aa('0x29')](function(){return _0x3bf8f5;})[_0xb1aa('0x29')](respondWithStatusCode(_0x488484,null))['catch'](handleError(_0x488484,null));};exports[_0xb1aa('0x63')]=function(_0x1725b1,_0x109d48){var _0x1e3f5c=[];var _0x571173=[];return db[_0xb1aa('0x57')][_0xb1aa('0x47')]({'where':{'userProfileId':_0x1725b1[_0xb1aa('0x50')]['id']},'raw':!![]})[_0xb1aa('0x29')](function(_0x5f969b){_0x1e3f5c=_[_0xb1aa('0x42')](_0x5f969b,function(_0x5e02d6){return _0x5e02d6[_0xb1aa('0x64')]===0x1||_[_0xb1aa('0x65')]([0x3eb,0x709],_0x5e02d6[_0xb1aa('0x5c')]);});if(!_['isEmpty'](_0x1e3f5c)){return _[_0xb1aa('0x30')](_0x1e3f5c,function(_0x26e533){return _0x26e533[_0xb1aa('0x5c')];});}else{return;}})[_0xb1aa('0x29')](function(_0x2cc800){if(_0x2cc800)_0x571173=_0x2cc800;if(_['includes'](_0x571173,0x64)){var _0x55ae65=_[_0xb1aa('0x4c')](_0x1e3f5c,{'sectionId':0x64});return hasDefaultDashboard(_0x55ae65)[_0xb1aa('0x29')](function(_0x1e61d4){return _[_0xb1aa('0x30')](_0x1e3f5c,function(_0x34d43e){if(_0x34d43e[_0xb1aa('0x5c')]===0x64){_0x34d43e[_0xb1aa('0x66')]=_0x1e61d4;}return _0x34d43e;});});}else{return;}})[_0xb1aa('0x29')](function(_0x1655c5){if(_0x1655c5)_0x1e3f5c=_0x1655c5;if(_['includes'](_0x571173,0x3eb)){var _0x295fb8=_['find'](_0x1e3f5c,{'sectionId':0x3eb});return getCustomDashboards(_0x295fb8)[_0xb1aa('0x29')](function(_0xb49db3){return _[_0xb1aa('0x30')](_0x1e3f5c,function(_0x49f199){if(_0x295fb8[_0xb1aa('0x64')]){if(_0x49f199[_0xb1aa('0x5c')]===0x3eb){_0x49f199['subsections']=_0xb49db3;}}else{if(_0x49f199[_0xb1aa('0x5c')]===0x64){_0x49f199['subsections']=_0xb49db3;}}return _0x49f199;});});}else{return;}})[_0xb1aa('0x29')](function(_0x3dcabc){if(_0x3dcabc)_0x1e3f5c=_0x3dcabc;if(_[_0xb1aa('0x65')](_0x571173,0x709)){var _0x2f163a=_[_0xb1aa('0x4c')](_0x1e3f5c,{'sectionId':0x709});return getPlugins(_0x2f163a)[_0xb1aa('0x29')](function(_0x3b75d2){if(_0x2f163a[_0xb1aa('0x64')]){return _[_0xb1aa('0x30')](_0x1e3f5c,function(_0x309ec8){if(_0x309ec8[_0xb1aa('0x5c')]===0x709){_0x309ec8[_0xb1aa('0x66')]=_0x3b75d2;}return _0x309ec8;});}else{var _0x19c124={'sectionId':0x76c,'enabled':0x1,'subsections':_0x3b75d2};var _0x52c422=_[_0xb1aa('0x30')](_0x1e3f5c);_0x52c422['push'](_0x19c124);return _0x52c422;}});}else{return;}})[_0xb1aa('0x29')](function(_0x50b345){if(_0x50b345)_0x1e3f5c=_0x50b345;return _[_0xb1aa('0x42')](_0x1e3f5c,[_0xb1aa('0x64'),0x1]);})[_0xb1aa('0x29')](respondWithResult(_0x109d48,null))[_0xb1aa('0x49')](handleError(_0x109d48,null));};function hasDefaultDashboard(_0x2349cf){var _0x33d660=[0x65];return new BPromise(function(_0x1e5ac3,_0x1c9bf6){try{if(_0x2349cf[_0xb1aa('0x59')]){_0x1e5ac3(_0x33d660);}else{return db['UserProfileResource']['findOne']({'where':{'sectionId':_0x2349cf['id']},'raw':!![]})[_0xb1aa('0x29')](function(_0xd75f99){_0xd75f99?_0x1e5ac3(_0x33d660):_0x1e5ac3();});}}catch(_0x56f91c){_0x1c9bf6(_0x56f91c);}});}function getCustomDashboards(_0x2a5bdf){var _0x5a11b=[];return new BPromise(function(_0x16c0d8,_0x1147b1){try{if(_0x2a5bdf[_0xb1aa('0x59')]){return db['Dashboard'][_0xb1aa('0x47')]({'raw':!![]})['then'](function(_0x51e1c2){_0x51e1c2[_0xb1aa('0x67')](function(_0x1b8c81){_0x5a11b[_0xb1aa('0x68')](_0x1b8c81['id']+0x1869f);});_0x16c0d8(_0x5a11b);});}else{return db[_0xb1aa('0x5a')][_0xb1aa('0x47')]({'where':{'sectionId':_0x2a5bdf['id']},'raw':!![]})['then'](function(_0x164489){_0x164489[_0xb1aa('0x67')](function(_0x4a1c7b){_0x5a11b[_0xb1aa('0x68')](_0x4a1c7b['resourceId']+0x1869f);});_0x16c0d8(_0x5a11b);});}}catch(_0x5754a0){_0x1147b1(_0x5754a0);}});}function getPlugins(_0x124885){var _0x59a8ea=[];return new BPromise(function(_0x14476c,_0x4f2c8e){try{if(_0x124885[_0xb1aa('0x59')]){return db['Plugin'][_0xb1aa('0x47')]({'raw':!![]})[_0xb1aa('0x29')](function(_0x31af32){_0x31af32[_0xb1aa('0x67')](function(_0x538888){_0x59a8ea['push'](_0x538888['id']+0x15b38);});_0x14476c(_0x59a8ea);});}else{return db[_0xb1aa('0x5a')][_0xb1aa('0x47')]({'where':{'sectionId':_0x124885['id']},'raw':!![]})[_0xb1aa('0x29')](function(_0x36c4a9){_0x36c4a9[_0xb1aa('0x67')](function(_0x54b7af){_0x59a8ea[_0xb1aa('0x68')](_0x54b7af[_0xb1aa('0x69')]+0x15b38);});_0x14476c(_0x59a8ea);});}}catch(_0x3c5e5c){_0x4f2c8e(_0x3c5e5c);}});}exports['addResources']=function(_0x398a68,_0x1f2246){return db['UserProfile']['find']({'where':{'id':_0x398a68[_0xb1aa('0x50')]['id']}})[_0xb1aa('0x29')](handleEntityNotFound(_0x1f2246,null))[_0xb1aa('0x29')](function(_0x5eb07b){if(_0x5eb07b){return db[_0xb1aa('0x60')][_0xb1aa('0x56')](function(_0x5f42ae){return db['UserProfileSection'][_0xb1aa('0x47')]({'where':{'userProfileId':_0x398a68[_0xb1aa('0x50')]['id']},'attributes':['id'],'raw':!![]})[_0xb1aa('0x29')](function(_0x5cb8f6){if(_0x5cb8f6){return db[_0xb1aa('0x57')][_0xb1aa('0x2a')]({'where':{'userProfileId':_0x398a68[_0xb1aa('0x50')]['id'],'id':_[_0xb1aa('0x30')](_0x5cb8f6,function(_0x12a852){return _0x12a852['id'];})},'transaction':_0x5f42ae});}})[_0xb1aa('0x29')](function(_0x42988c){var _0x109912=_[_0xb1aa('0x30')](_0x398a68['body'],function(_0x5a20f2){_0x5a20f2[_0xb1aa('0x5d')]=_0x398a68['params']['id'];return _0x5a20f2;});return db[_0xb1aa('0x57')][_0xb1aa('0x6a')](_0x109912,{'raw':!![],'transaction':_0x5f42ae});})[_0xb1aa('0x29')](function(_0x34f589){var _0x40d91a=_[_0xb1aa('0x42')](_[_0xb1aa('0x30')](_0x34f589,function(_0x5ed4dd){return _0x5ed4dd[_0xb1aa('0x52')]({'plain':!![]});}),{'includeAll':![]});if(_0x40d91a){return db[_0xb1aa('0x57')][_0xb1aa('0x47')]({'where':{'userProfileId':_0x398a68[_0xb1aa('0x50')]['id'],'sectionId':_[_0xb1aa('0x30')](_0x40d91a,function(_0x7ba125){return _0x7ba125[_0xb1aa('0x5c')];})},'attributes':['id','sectionId'],'raw':!![]})[_0xb1aa('0x29')](function(_0x4a963c){var _0x49d67b=_[_0xb1aa('0x30')](_0x398a68[_0xb1aa('0x4e')],function(_0x1217e2){_0x1217e2[_0xb1aa('0x5d')]=_0x398a68['params']['id'];return _0x1217e2;});return db['UserProfileResource'][_0xb1aa('0x6a')](_0x49d67b,{'raw':!![],'transaction':_0x5f42ae});});}})[_0xb1aa('0x49')](handleError(_0x1f2246,null));});}})['then'](function(_0x2ac27b){var _0x515241=_['map'](_0x2ac27b,function(_0x1ebb6b){return _0x1ebb6b[_0xb1aa('0x52')]({'plain':!![]});});})[_0xb1aa('0x29')](respondWithResult(_0x1f2246,null))['catch'](handleError(_0x1f2246,null));};exports[_0xb1aa('0x6b')]=function(_0x4069cc,_0x3ecbad,_0x273daf){return db[_0xb1aa('0x31')][_0xb1aa('0x4c')]({'where':{'id':_0x4069cc[_0xb1aa('0x50')]['id']}})[_0xb1aa('0x29')](handleEntityNotFound(_0x3ecbad,null))[_0xb1aa('0x29')](function(_0x2d9bf3){if(_0x2d9bf3){return _0x2d9bf3[_0xb1aa('0x6b')](_0x4069cc[_0xb1aa('0x37')]['ids']);}})[_0xb1aa('0x29')](respondWithStatusCode(_0x3ecbad,null))['catch'](handleError(_0x3ecbad,null));};exports[_0xb1aa('0x6c')]=function(_0x179491,_0x14da7f){var _0x444b19={};if(!_0x179491[_0xb1aa('0x37')][_0xb1aa('0x6d')])throw new Error('Missing\x20section\x20parameter');if(!_0x179491['query'][_0xb1aa('0x3c')](_0xb1aa('0x3d'))){_0x444b19[_0xb1aa('0x22')]=qs[_0xb1aa('0x22')](_0x179491[_0xb1aa('0x37')][_0xb1aa('0x22')]);_0x444b19['offset']=qs['offset'](_0x179491[_0xb1aa('0x37')][_0xb1aa('0x20')]);}return db[_0xb1aa('0x31')][_0xb1aa('0x4c')]({'where':{'id':_0x179491[_0xb1aa('0x50')]['id']}})['then'](function(_0x2a092d){if(!_0x2a092d)throw new Error(_0xb1aa('0x6e')+_0x179491['params']['id']);return db[_0xb1aa('0x31')][_0xb1aa('0x6c')](_0x179491);})[_0xb1aa('0x29')](respondWithFilteredResult(_0x14da7f,_0x444b19))[_0xb1aa('0x49')](handleError(_0x14da7f,null));};
\ No newline at end of file
+var _0x80cd=['ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','save','then','destroy','error','stack','name','send','index','map','UserProfile','rawAttributes','type','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','keys','create','body','omit','updatedAt','crudPermissions','createdAt','sequelize','transaction','each','autoAssociation','UserProfileResource','userProfileId','Resources','UserProfileSection','update','find','describe','get','removeSections','ids','getSections','enabled','sectionId','subsections','includes','push','findOne','forEach','resourceId','Plugin','addResources','bulkCreate','removeResources','getResources','section','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv'];(function(_0x9991c,_0x449697){var _0x15e4a8=function(_0x14a625){while(--_0x14a625){_0x9991c['push'](_0x9991c['shift']());}};_0x15e4a8(++_0x449697);}(_0x80cd,0x146));var _0xd80c=function(_0x37a9d7,_0x2b6fde){_0x37a9d7=_0x37a9d7-0x0;var _0x1343d3=_0x80cd[_0x37a9d7];return _0x1343d3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd80c('0x0'));var zipdir=require(_0xd80c('0x1'));var jsonpatch=require(_0xd80c('0x2'));var rp=require(_0xd80c('0x3'));var moment=require(_0xd80c('0x4'));var BPromise=require(_0xd80c('0x5'));var Mustache=require(_0xd80c('0x6'));var util=require(_0xd80c('0x7'));var path=require('path');var sox=require(_0xd80c('0x8'));var csv=require(_0xd80c('0x9'));var ejs=require(_0xd80c('0xa'));var fs=require('fs');var fs_extra=require(_0xd80c('0xb'));var _=require('lodash');var squel=require(_0xd80c('0xc'));var crypto=require(_0xd80c('0xd'));var jsforce=require(_0xd80c('0xe'));var deskjs=require(_0xd80c('0xf'));var toCsv=require('to-csv');var querystring=require(_0xd80c('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xd80c('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xd80c('0x12'));var hardwareService=require(_0xd80c('0x13'));var logger=require(_0xd80c('0x14'))(_0xd80c('0x15'));var utils=require(_0xd80c('0x16'));var config=require(_0xd80c('0x17'));var licenseUtil=require(_0xd80c('0x18'));var db=require('../../mysqldb')['db'];config[_0xd80c('0x19')]=_[_0xd80c('0x1a')](config[_0xd80c('0x19')],{'host':_0xd80c('0x1b'),'port':0x18eb});var socket=require(_0xd80c('0x1c'))(new Redis(config[_0xd80c('0x19')]));require(_0xd80c('0x1d'))[_0xd80c('0x1e')](socket);function respondWithStatusCode(_0x67c0d1,_0x56e014){_0x56e014=_0x56e014||0xcc;return function(_0x36925d){if(_0x36925d){return _0x67c0d1[_0xd80c('0x1f')](_0x56e014);}return _0x67c0d1[_0xd80c('0x20')](_0x56e014)[_0xd80c('0x21')]();};}function respondWithResult(_0x34419c,_0x52c6e0){_0x52c6e0=_0x52c6e0||0xc8;return function(_0x387877){if(_0x387877){return _0x34419c[_0xd80c('0x20')](_0x52c6e0)[_0xd80c('0x22')](_0x387877);}};}function respondWithFilteredResult(_0x233677,_0xbeab7c){return function(_0x41aac6){if(_0x41aac6){var _0x3b6a9c=typeof _0xbeab7c[_0xd80c('0x23')]==='undefined'&&typeof _0xbeab7c[_0xd80c('0x24')]===_0xd80c('0x25');var _0x229710=_0x41aac6[_0xd80c('0x26')];var _0x52b7f1=_0x3b6a9c?0x0:_0xbeab7c[_0xd80c('0x23')];var _0x3bb25c=_0x3b6a9c?_0x41aac6[_0xd80c('0x26')]:_0xbeab7c['offset']+_0xbeab7c[_0xd80c('0x24')];var _0x1b29a6;if(_0x3bb25c>=_0x229710){_0x3bb25c=_0x229710;_0x1b29a6=0xc8;}else{_0x1b29a6=0xce;}_0x233677['status'](_0x1b29a6);return _0x233677[_0xd80c('0x27')]('Content-Range',_0x52b7f1+'-'+_0x3bb25c+'/'+_0x229710)['json'](_0x41aac6);}return null;};}function patchUpdates(_0x5d73b4){return function(_0x4ab7c6){try{jsonpatch[_0xd80c('0x28')](_0x4ab7c6,_0x5d73b4,!![]);}catch(_0x205124){return BPromise[_0xd80c('0x29')](_0x205124);}return _0x4ab7c6[_0xd80c('0x2a')]();};}function saveUpdates(_0x48c1b1,_0x5a2530){return function(_0x330411){if(_0x330411){return _0x330411['update'](_0x48c1b1)[_0xd80c('0x2b')](function(_0x38de68){return _0x38de68;});}return null;};}function removeEntity(_0xaed56f,_0x3f0d7e){return function(_0x5673b9){if(_0x5673b9){return _0x5673b9[_0xd80c('0x2c')]()[_0xd80c('0x2b')](function(){_0xaed56f[_0xd80c('0x20')](0xcc)[_0xd80c('0x21')]();});}};}function handleEntityNotFound(_0x180e16,_0x2a2114){return function(_0x16a844){if(!_0x16a844){_0x180e16[_0xd80c('0x1f')](0x194);}return _0x16a844;};}function handleError(_0x13d4c5,_0x34d56c){_0x34d56c=_0x34d56c||0x1f4;return function(_0x2829a3){logger[_0xd80c('0x2d')](_0x2829a3[_0xd80c('0x2e')]);if(_0x2829a3[_0xd80c('0x2f')]){delete _0x2829a3[_0xd80c('0x2f')];}_0x13d4c5['status'](_0x34d56c)[_0xd80c('0x30')](_0x2829a3);};}exports[_0xd80c('0x31')]=function(_0x32184d,_0x240267){var _0x47638e={},_0x40823e={},_0xcefbfc={'count':0x0,'rows':[]};var _0x519ee6=_[_0xd80c('0x32')](db[_0xd80c('0x33')][_0xd80c('0x34')],function(_0x3bb003){return{'name':_0x3bb003['fieldName'],'type':_0x3bb003[_0xd80c('0x35')]['key']};});_0x40823e[_0xd80c('0x36')]=_[_0xd80c('0x32')](_0x519ee6,'name');_0x40823e[_0xd80c('0x37')]=_['keys'](_0x32184d[_0xd80c('0x37')]);_0x40823e[_0xd80c('0x38')]=_['intersection'](_0x40823e[_0xd80c('0x36')],_0x40823e[_0xd80c('0x37')]);_0x47638e[_0xd80c('0x39')]=_[_0xd80c('0x3a')](_0x40823e[_0xd80c('0x36')],qs[_0xd80c('0x3b')](_0x32184d[_0xd80c('0x37')][_0xd80c('0x3b')]));_0x47638e['attributes']=_0x47638e[_0xd80c('0x39')][_0xd80c('0x3c')]?_0x47638e[_0xd80c('0x39')]:_0x40823e['model'];if(!_0x32184d[_0xd80c('0x37')][_0xd80c('0x3d')](_0xd80c('0x3e'))){_0x47638e['limit']=qs['limit'](_0x32184d[_0xd80c('0x37')][_0xd80c('0x24')]);_0x47638e[_0xd80c('0x23')]=qs[_0xd80c('0x23')](_0x32184d['query'][_0xd80c('0x23')]);}_0x47638e[_0xd80c('0x3f')]=qs['sort'](_0x32184d['query']['sort']);_0x47638e[_0xd80c('0x40')]=qs[_0xd80c('0x38')](_[_0xd80c('0x41')](_0x32184d[_0xd80c('0x37')],_0x40823e[_0xd80c('0x38')]),_0x519ee6);if(_0x32184d[_0xd80c('0x37')][_0xd80c('0x42')]){_0x47638e[_0xd80c('0x40')]=_[_0xd80c('0x43')](_0x47638e['where'],{'$or':_['map'](_0x519ee6,function(_0x9336a6){if(_0x9336a6['type']!==_0xd80c('0x44')){var _0x2dd4e7={};_0x2dd4e7[_0x9336a6[_0xd80c('0x2f')]]={'$like':'%'+_0x32184d[_0xd80c('0x37')][_0xd80c('0x42')]+'%'};return _0x2dd4e7;}})});}_0x47638e=_[_0xd80c('0x43')]({},_0x47638e,_0x32184d[_0xd80c('0x45')]);var _0x55a0e2={'where':_0x47638e[_0xd80c('0x40')]};return db[_0xd80c('0x33')][_0xd80c('0x26')](_0x55a0e2)[_0xd80c('0x2b')](function(_0x1a2637){_0xcefbfc[_0xd80c('0x26')]=_0x1a2637;if(_0x32184d[_0xd80c('0x37')][_0xd80c('0x46')]){_0x47638e[_0xd80c('0x47')]=[{'all':!![]}];}return db[_0xd80c('0x33')][_0xd80c('0x48')](_0x47638e);})['then'](function(_0x55a494){_0xcefbfc[_0xd80c('0x49')]=_0x55a494;return _0xcefbfc;})['then'](respondWithFilteredResult(_0x240267,_0x47638e))[_0xd80c('0x4a')](handleError(_0x240267,null));};exports['show']=function(_0x2bdc0d,_0x672c7b){var _0x27a12f={'raw':![],'where':{'id':_0x2bdc0d[_0xd80c('0x4b')]['id']}},_0x412304={};_0x412304[_0xd80c('0x36')]=_[_0xd80c('0x4c')](db[_0xd80c('0x33')]['rawAttributes']);_0x412304['query']=_[_0xd80c('0x4c')](_0x2bdc0d[_0xd80c('0x37')]);_0x412304['filters']=_['intersection'](_0x412304[_0xd80c('0x36')],_0x412304['query']);_0x27a12f['attributes']=_[_0xd80c('0x3a')](_0x412304['model'],qs['fields'](_0x2bdc0d[_0xd80c('0x37')]['fields']));_0x27a12f[_0xd80c('0x39')]=_0x27a12f['attributes'][_0xd80c('0x3c')]?_0x27a12f[_0xd80c('0x39')]:_0x412304['model'];if(_0x2bdc0d[_0xd80c('0x37')][_0xd80c('0x46')]){_0x27a12f['include']=[{'all':!![]}];}_0x27a12f=_['merge']({},_0x27a12f,_0x2bdc0d[_0xd80c('0x45')]);return db[_0xd80c('0x33')]['find'](_0x27a12f)[_0xd80c('0x2b')](handleEntityNotFound(_0x672c7b,null))['then'](respondWithResult(_0x672c7b,null))[_0xd80c('0x4a')](handleError(_0x672c7b,null));};exports['create']=function(_0xde4804,_0xdd2aa2){return db[_0xd80c('0x33')][_0xd80c('0x4d')](_0xde4804[_0xd80c('0x4e')],{})[_0xd80c('0x2b')](respondWithResult(_0xdd2aa2,0xc9))[_0xd80c('0x4a')](handleError(_0xdd2aa2,null));};exports['clone']=function(_0x78379,_0x2cfd19){var _0x36f81={'where':{'id':_0x78379[_0xd80c('0x4b')]['id']}},_0x5ad76e={};_0x5ad76e[_0xd80c('0x36')]=_[_0xd80c('0x4c')](db[_0xd80c('0x33')][_0xd80c('0x34')]);_0x36f81['attributes']=_['intersection'](_0x5ad76e[_0xd80c('0x36')],qs[_0xd80c('0x3b')](_0x78379[_0xd80c('0x37')][_0xd80c('0x3b')]));_0x36f81[_0xd80c('0x39')]=_0x36f81[_0xd80c('0x39')][_0xd80c('0x3c')]?_0x36f81[_0xd80c('0x39')]:_0x5ad76e[_0xd80c('0x36')];if(_0x78379[_0xd80c('0x37')]['includeAll']){_0x36f81['include']=[{'all':!![]}];}_0x36f81=_[_0xd80c('0x43')]({},_0x36f81,_0x78379[_0xd80c('0x45')]);return db[_0xd80c('0x33')]['find'](_0x36f81)[_0xd80c('0x2b')](handleEntityNotFound(_0x2cfd19,null))['then'](function(_0x146263){if(_0x146263){var _0x2e70da=_0x146263['get']({'plain':!![]});_0x2e70da=qs[_0xd80c('0x4f')](_0x2e70da,['id','createdAt',_0xd80c('0x50'),_0xd80c('0x51')]);_0x78379[_0xd80c('0x4e')]=_[_0xd80c('0x4f')](_0x78379[_0xd80c('0x4e')],['id',_0xd80c('0x52'),_0xd80c('0x50')]);return db[_0xd80c('0x53')][_0xd80c('0x54')](function(_0x56d5f8){return db['UserProfile']['create'](_[_0xd80c('0x43')](_0x2e70da,_0x78379[_0xd80c('0x4e')]),{'include':_0x78379['query'][_0xd80c('0x46')]?[{'all':!![]}]:undefined,'transaction':_0x56d5f8})[_0xd80c('0x2b')](function(_0x33963f){var _0x7d41dd=_0x33963f['get']({'plain':!![]});return db['UserProfileSection'][_0xd80c('0x48')]({'where':{'userProfileId':_0x78379['params']['id']},'raw':!![]})[_0xd80c('0x2b')](function(_0x23602a){if(_0x23602a){return BPromise[_0xd80c('0x55')](_0x23602a,function(_0x5a55c4){return new BPromise(function(_0x14854c,_0x1c4563){if(_0x5a55c4['autoAssociation']===null||_0x5a55c4[_0xd80c('0x56')]===0x1)_0x14854c(null);return db[_0xd80c('0x57')]['findAll']({'where':{'sectionId':_0x5a55c4['id']},'raw':!![]})[_0xd80c('0x2b')](function(_0x2cb1fe){var _0xc3c1e=_[_0xd80c('0x32')](_0x2cb1fe,function(_0x29b470){return qs['omit'](_0x29b470,['id',_0xd80c('0x52'),_0xd80c('0x50'),'sectionId']);});_0x14854c(_0xc3c1e);})['catch'](function(_0xdc551a){_0x1c4563(_0xdc551a);});})[_0xd80c('0x2b')](function(_0x5b26bf){var _0x5896ff=qs[_0xd80c('0x4f')](_0x5a55c4,['id',_0xd80c('0x52'),_0xd80c('0x50')]);_0x5896ff[_0xd80c('0x58')]=_0x7d41dd['id'];if(_0x5b26bf)_0x5896ff[_0xd80c('0x59')]=_0x5b26bf;return _0x5896ff;})[_0xd80c('0x2b')](function(_0x35d3e4){return db[_0xd80c('0x5a')][_0xd80c('0x4d')](_0x35d3e4,{'include':[{'model':db[_0xd80c('0x57')],'as':'Resources'}],'raw':!![],'transaction':_0x56d5f8});});})[_0xd80c('0x2b')](function(){return _0x7d41dd;});}});});});}})[_0xd80c('0x2b')](respondWithResult(_0x2cfd19,0xc9))[_0xd80c('0x4a')](handleError(_0x2cfd19,null));};exports[_0xd80c('0x5b')]=function(_0x3b2196,_0x1ca453){if(_0x3b2196[_0xd80c('0x4e')]['id']){delete _0x3b2196[_0xd80c('0x4e')]['id'];}return db[_0xd80c('0x33')][_0xd80c('0x5c')]({'where':{'id':_0x3b2196[_0xd80c('0x4b')]['id']}})[_0xd80c('0x2b')](handleEntityNotFound(_0x1ca453,null))[_0xd80c('0x2b')](saveUpdates(_0x3b2196[_0xd80c('0x4e')],null))[_0xd80c('0x2b')](respondWithResult(_0x1ca453,null))[_0xd80c('0x4a')](handleError(_0x1ca453,null));};exports[_0xd80c('0x2c')]=function(_0x38a03a,_0x32ffc0){return db[_0xd80c('0x33')][_0xd80c('0x5c')]({'where':{'id':_0x38a03a['params']['id']}})[_0xd80c('0x2b')](handleEntityNotFound(_0x32ffc0,null))[_0xd80c('0x2b')](removeEntity(_0x32ffc0,null))[_0xd80c('0x4a')](handleError(_0x32ffc0,null));};exports[_0xd80c('0x5d')]=function(_0x46cc45,_0x198647){return db[_0xd80c('0x33')][_0xd80c('0x5d')]()[_0xd80c('0x2b')](respondWithResult(_0x198647,null))[_0xd80c('0x4a')](handleError(_0x198647,null));};exports['addSections']=function(_0x70f0ff,_0x1ec1e1){var _0x1868b2=_0x70f0ff[_0xd80c('0x4e')];return db['UserProfile']['find']({'where':{'id':_0x70f0ff[_0xd80c('0x4b')]['id']}})['then'](handleEntityNotFound(_0x1ec1e1,null))['then'](function(_0x58e655){if(_0x58e655){return db[_0xd80c('0x53')][_0xd80c('0x54')](function(_0x2a3946){return db[_0xd80c('0x5a')]['destroy']({'where':{'userProfileId':_0x70f0ff['params']['id'],'sectionId':_[_0xd80c('0x32')](_0x1868b2,function(_0x4d68d4){return _0x4d68d4['sectionId'];})},'transaction':_0x2a3946})[_0xd80c('0x2b')](function(){var _0x2045d0=_[_0xd80c('0x32')](_0x1868b2,function(_0x49dd2a){_0x49dd2a['userProfileId']=_0x70f0ff[_0xd80c('0x4b')]['id'];return _0x49dd2a;});var _0x4fac2c=[];return BPromise['each'](_0x2045d0,function(_0x109701){return db[_0xd80c('0x5a')][_0xd80c('0x4d')](_0x109701,{'include':[{'model':db[_0xd80c('0x57')],'as':'Resources'}],'raw':!![],'transaction':_0x2a3946})[_0xd80c('0x2b')](function(_0x3389b){_0x4fac2c['push'](_0x3389b[_0xd80c('0x5e')]({'plain':!![]}));});})['then'](function(){return _0x4fac2c;});});});}})[_0xd80c('0x2b')](function(_0x141d03){return _0x141d03;})['then'](respondWithResult(_0x1ec1e1,null))[_0xd80c('0x4a')](handleError(_0x1ec1e1,null));};exports[_0xd80c('0x5f')]=function(_0x53e310,_0x2b54ec){var _0x2d841a;return db['UserProfile'][_0xd80c('0x5c')]({'where':{'id':_0x53e310[_0xd80c('0x4b')]['id']},'attributes':['id',_0xd80c('0x2f')]})[_0xd80c('0x2b')](handleEntityNotFound(_0x2b54ec,null))[_0xd80c('0x2b')](function(_0x144727){if(_0x144727){_0x2d841a=_0x144727;return db[_0xd80c('0x5a')][_0xd80c('0x2c')]({'where':{'userProfileId':_0x53e310[_0xd80c('0x4b')]['id'],'sectionId':_0x53e310['query'][_0xd80c('0x60')]}});}})['then'](function(){return _0x2d841a;})[_0xd80c('0x2b')](respondWithStatusCode(_0x2b54ec,null))['catch'](handleError(_0x2b54ec,null));};exports[_0xd80c('0x61')]=function(_0x20c16b,_0x40cf9f){var _0x3f417e=[];var _0x39114f=[];return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0x20c16b[_0xd80c('0x4b')]['id']},'raw':!![]})['then'](function(_0x4e4557){_0x3f417e=_['filter'](_0x4e4557,function(_0x456a9e){return _0x456a9e[_0xd80c('0x62')]===0x1||_['includes']([0x3eb,0x709],_0x456a9e[_0xd80c('0x63')]);});if(!_['isEmpty'](_0x3f417e)){return _['map'](_0x3f417e,function(_0x5bf101){return _0x5bf101[_0xd80c('0x63')];});}else{return;}})[_0xd80c('0x2b')](function(_0x1adc37){if(_0x1adc37)_0x39114f=_0x1adc37;if(_['includes'](_0x39114f,0x64)){var _0x582910=_[_0xd80c('0x5c')](_0x3f417e,{'sectionId':0x64});return hasDefaultDashboard(_0x582910)[_0xd80c('0x2b')](function(_0x33c1dd){return _[_0xd80c('0x32')](_0x3f417e,function(_0x36be94){if(_0x36be94[_0xd80c('0x63')]===0x64){_0x36be94[_0xd80c('0x64')]=_0x33c1dd;}return _0x36be94;});});}else{return;}})[_0xd80c('0x2b')](function(_0xf78c6c){if(_0xf78c6c)_0x3f417e=_0xf78c6c;if(_[_0xd80c('0x65')](_0x39114f,0x3eb)){var _0x194ac1=_['find'](_0x3f417e,{'sectionId':0x3eb});return getCustomDashboards(_0x194ac1)[_0xd80c('0x2b')](function(_0x586aae){return _[_0xd80c('0x32')](_0x3f417e,function(_0x5382d3){if(_0x194ac1[_0xd80c('0x62')]){if(_0x5382d3[_0xd80c('0x63')]===0x3eb){_0x5382d3[_0xd80c('0x64')]=_0x586aae;}}else{if(_0x5382d3[_0xd80c('0x63')]===0x64){_0x5382d3['subsections']=_0x586aae;}}return _0x5382d3;});});}else{return;}})['then'](function(_0x1d2a6f){if(_0x1d2a6f)_0x3f417e=_0x1d2a6f;if(_[_0xd80c('0x65')](_0x39114f,0x709)){var _0xcdfa30=_[_0xd80c('0x5c')](_0x3f417e,{'sectionId':0x709});return getPlugins(_0xcdfa30)[_0xd80c('0x2b')](function(_0x11f8d7){if(_0xcdfa30['enabled']){return _[_0xd80c('0x32')](_0x3f417e,function(_0xbead6f){if(_0xbead6f[_0xd80c('0x63')]===0x709){_0xbead6f[_0xd80c('0x64')]=_0x11f8d7;}return _0xbead6f;});}else{var _0x416e1d={'sectionId':0x76c,'enabled':0x1,'subsections':_0x11f8d7};var _0x41125f=_[_0xd80c('0x32')](_0x3f417e);_0x41125f[_0xd80c('0x66')](_0x416e1d);return _0x41125f;}});}else{return;}})[_0xd80c('0x2b')](function(_0x4c3c6e){if(_0x4c3c6e)_0x3f417e=_0x4c3c6e;return _['filter'](_0x3f417e,[_0xd80c('0x62'),0x1]);})['then'](respondWithResult(_0x40cf9f,null))[_0xd80c('0x4a')](handleError(_0x40cf9f,null));};function hasDefaultDashboard(_0x1df70c){var _0xa3968c=[0x65];return new BPromise(function(_0x4061fc,_0x31dd54){try{if(_0x1df70c['autoAssociation']){_0x4061fc(_0xa3968c);}else{return db[_0xd80c('0x57')][_0xd80c('0x67')]({'where':{'sectionId':_0x1df70c['id']},'raw':!![]})['then'](function(_0x455986){_0x455986?_0x4061fc(_0xa3968c):_0x4061fc();});}}catch(_0x7c8fcc){_0x31dd54(_0x7c8fcc);}});}function getCustomDashboards(_0x2c7abd){var _0x2cf7b7=[];return new BPromise(function(_0x5a028b,_0x3f6060){try{if(_0x2c7abd[_0xd80c('0x56')]){return db['Dashboard']['findAll']({'raw':!![]})[_0xd80c('0x2b')](function(_0x3fad20){_0x3fad20[_0xd80c('0x68')](function(_0x47f59a){_0x2cf7b7[_0xd80c('0x66')](_0x47f59a['id']+0x1869f);});_0x5a028b(_0x2cf7b7);});}else{return db[_0xd80c('0x57')]['findAll']({'where':{'sectionId':_0x2c7abd['id']},'raw':!![]})['then'](function(_0x1d68e5){_0x1d68e5['forEach'](function(_0x3c05f6){_0x2cf7b7[_0xd80c('0x66')](_0x3c05f6[_0xd80c('0x69')]+0x1869f);});_0x5a028b(_0x2cf7b7);});}}catch(_0x19ed57){_0x3f6060(_0x19ed57);}});}function getPlugins(_0x2bf719){var _0x3844c1=[];return new BPromise(function(_0x4981c4,_0x110c47){try{if(_0x2bf719[_0xd80c('0x56')]){return db[_0xd80c('0x6a')][_0xd80c('0x48')]({'raw':!![]})[_0xd80c('0x2b')](function(_0x4b5e70){_0x4b5e70[_0xd80c('0x68')](function(_0x4784ce){_0x3844c1[_0xd80c('0x66')](_0x4784ce['id']+0x15b38);});_0x4981c4(_0x3844c1);});}else{return db[_0xd80c('0x57')][_0xd80c('0x48')]({'where':{'sectionId':_0x2bf719['id']},'raw':!![]})['then'](function(_0x23b074){_0x23b074['forEach'](function(_0xf84ec6){_0x3844c1[_0xd80c('0x66')](_0xf84ec6[_0xd80c('0x69')]+0x15b38);});_0x4981c4(_0x3844c1);});}}catch(_0x1bbee6){_0x110c47(_0x1bbee6);}});}exports[_0xd80c('0x6b')]=function(_0x519596,_0xb0f7bc){return db[_0xd80c('0x33')][_0xd80c('0x5c')]({'where':{'id':_0x519596['params']['id']}})[_0xd80c('0x2b')](handleEntityNotFound(_0xb0f7bc,null))[_0xd80c('0x2b')](function(_0x5e533b){if(_0x5e533b){return db[_0xd80c('0x53')][_0xd80c('0x54')](function(_0x35e32e){return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0x519596['params']['id']},'attributes':['id'],'raw':!![]})['then'](function(_0x47f034){if(_0x47f034){return db[_0xd80c('0x5a')]['destroy']({'where':{'userProfileId':_0x519596[_0xd80c('0x4b')]['id'],'id':_[_0xd80c('0x32')](_0x47f034,function(_0x1e09e1){return _0x1e09e1['id'];})},'transaction':_0x35e32e});}})[_0xd80c('0x2b')](function(_0x3da976){var _0x3ad35f=_[_0xd80c('0x32')](_0x519596[_0xd80c('0x4e')],function(_0x4af215){_0x4af215[_0xd80c('0x58')]=_0x519596[_0xd80c('0x4b')]['id'];return _0x4af215;});return db[_0xd80c('0x5a')][_0xd80c('0x6c')](_0x3ad35f,{'raw':!![],'transaction':_0x35e32e});})[_0xd80c('0x2b')](function(_0x54bb84){var _0xebab09=_['filter'](_[_0xd80c('0x32')](_0x54bb84,function(_0x45dd2d){return _0x45dd2d[_0xd80c('0x5e')]({'plain':!![]});}),{'includeAll':![]});if(_0xebab09){return db[_0xd80c('0x5a')]['findAll']({'where':{'userProfileId':_0x519596[_0xd80c('0x4b')]['id'],'sectionId':_[_0xd80c('0x32')](_0xebab09,function(_0x3590eb){return _0x3590eb[_0xd80c('0x63')];})},'attributes':['id',_0xd80c('0x63')],'raw':!![]})['then'](function(_0x48e0e3){var _0x4586f0=_['map'](_0x519596[_0xd80c('0x4e')],function(_0x1bec27){_0x1bec27[_0xd80c('0x58')]=_0x519596[_0xd80c('0x4b')]['id'];return _0x1bec27;});return db[_0xd80c('0x57')][_0xd80c('0x6c')](_0x4586f0,{'raw':!![],'transaction':_0x35e32e});});}})['catch'](handleError(_0xb0f7bc,null));});}})[_0xd80c('0x2b')](function(_0x4907b8){var _0x171e7a=_['map'](_0x4907b8,function(_0x3df1c8){return _0x3df1c8['get']({'plain':!![]});});})[_0xd80c('0x2b')](respondWithResult(_0xb0f7bc,null))['catch'](handleError(_0xb0f7bc,null));};exports['removeResources']=function(_0x1662fa,_0x59cfa8,_0x567bf7){return db[_0xd80c('0x33')][_0xd80c('0x5c')]({'where':{'id':_0x1662fa[_0xd80c('0x4b')]['id']}})[_0xd80c('0x2b')](handleEntityNotFound(_0x59cfa8,null))[_0xd80c('0x2b')](function(_0x5ceafe){if(_0x5ceafe){return _0x5ceafe[_0xd80c('0x6d')](_0x1662fa[_0xd80c('0x37')][_0xd80c('0x60')]);}})[_0xd80c('0x2b')](respondWithStatusCode(_0x59cfa8,null))[_0xd80c('0x4a')](handleError(_0x59cfa8,null));};exports[_0xd80c('0x6e')]=function(_0x1ac46e,_0x313a8a){var _0xb45237={};if(!_0x1ac46e['query'][_0xd80c('0x6f')])throw new Error('Missing\x20section\x20parameter');if(!_0x1ac46e['query'][_0xd80c('0x3d')](_0xd80c('0x3e'))){_0xb45237['limit']=qs['limit'](_0x1ac46e[_0xd80c('0x37')][_0xd80c('0x24')]);_0xb45237[_0xd80c('0x23')]=qs[_0xd80c('0x23')](_0x1ac46e[_0xd80c('0x37')][_0xd80c('0x23')]);}return db[_0xd80c('0x33')][_0xd80c('0x5c')]({'where':{'id':_0x1ac46e['params']['id']}})[_0xd80c('0x2b')](function(_0x4b3deb){if(!_0x4b3deb)throw new Error('No\x20User\x20Profile\x20found\x20for\x20id\x20'+_0x1ac46e[_0xd80c('0x4b')]['id']);return db['UserProfile'][_0xd80c('0x6e')](_0x1ac46e);})[_0xd80c('0x2b')](respondWithFilteredResult(_0x313a8a,_0xb45237))[_0xd80c('0x4a')](handleError(_0x313a8a,null));};
\ No newline at end of file
index a2e7f9d..4d92e01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc46=['exports','events','UserProfile','setMaxListeners','save','remove','emit','hasOwnProperty','hook'];(function(_0x2fd652,_0x5405cd){var _0x534bfe=function(_0x3d5a77){while(--_0x3d5a77){_0x2fd652['push'](_0x2fd652['shift']());}};_0x534bfe(++_0x5405cd);}(_0xfc46,0x9a));var _0x6fc4=function(_0x5471ec,_0x1ce81a){_0x5471ec=_0x5471ec-0x0;var _0x121d4c=_0xfc46[_0x5471ec];return _0x121d4c;};'use strict';var EventEmitter=require(_0x6fc4('0x0'));var UserProfile=require('../../mysqldb')['db'][_0x6fc4('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x6fc4('0x2')](0x0);var events={'afterCreate':_0x6fc4('0x3'),'afterUpdate':'update','afterDestroy':_0x6fc4('0x4')};function emitEvent(_0x45e0e0){return function(_0x29e213,_0x3491f2,_0x52b4c0){UserProfileEvents[_0x6fc4('0x5')](_0x45e0e0+':'+_0x29e213['id'],_0x29e213);UserProfileEvents[_0x6fc4('0x5')](_0x45e0e0,_0x29e213);_0x52b4c0(null);};}for(var e in events){if(events[_0x6fc4('0x6')](e)){var event=events[e];UserProfile[_0x6fc4('0x7')](e,emitEvent(event));}}module[_0x6fc4('0x8')]=UserProfileEvents;
\ No newline at end of file
+var _0x753c=['update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners','save'];(function(_0x4871bc,_0xca62d3){var _0x542828=function(_0x487256){while(--_0x487256){_0x4871bc['push'](_0x4871bc['shift']());}};_0x542828(++_0xca62d3);}(_0x753c,0x96));var _0xc753=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x753c[_0x1facfa];return _0x9ec701;};'use strict';var EventEmitter=require('events');var UserProfile=require(_0xc753('0x0'))['db']['UserProfile'];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0xc753('0x1')](0x0);var events={'afterCreate':_0xc753('0x2'),'afterUpdate':_0xc753('0x3'),'afterDestroy':_0xc753('0x4')};function emitEvent(_0x3f5dc4){return function(_0x44ff14,_0x3990bd,_0x4668e2){UserProfileEvents[_0xc753('0x5')](_0x3f5dc4+':'+_0x44ff14['id'],_0x44ff14);UserProfileEvents[_0xc753('0x5')](_0x3f5dc4,_0x44ff14);_0x4668e2(null);};}for(var e in events){if(events[_0xc753('0x6')](e)){var event=events[e];UserProfile[_0xc753('0x7')](e,emitEvent(event));}}module[_0xc753('0x8')]=UserProfileEvents;
\ No newline at end of file
index 00b7057..ebeda3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','teams','voicequeues','VoiceQueue','VoiceQueues','users','telephones','Users','role','admin','user','zendeskaccounts','salesforceaccounts','SalesforceAccount','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','zohoaccounts','ZohoAccount','vtigeraccounts','CannedAnswer','Disposition','customdashboards','Dashboard','intervals','Interval','Pause','scheduler','Schedule','sounds','Sound','tags','Tag','Template','triggers','Trigger','trunks','Trunk','variables','plugins','Plugin','extractedreports','AnalyticExtractedReport','reportId','AnalyticMetric','toUpperCase','slice','Sequelize','SELECT','select','ui.','ui.createdAt','from','user_has_','_interactions','ui.UserId\x20=\x20?','toString','OpenTabs','UserProfile','user_profiles','query','raw','section','mergeResources','Invalid\x20section\x20\x27','isEmpty','push','UserProfileSection','find','params','all','union','length','ignore','autoAssociation','model','rawAttributes','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','key','foreignKey','forEach','options','includeAll','include','reportType','default','custom','count','rows','ids','CmContact','Tags','tag','ThroughTags','true','sms','dataValues','fax','openchannel','whatsapp','lodash','./userProfile.attributes','../../components/parsers/qs','squel','exports','models','filter','value','findAll','associatedResources','map','field','then','name','catch','resolve','UserProfileResource','type','resourceId','childModel','SquareProject','odbc','SquareOdbc','squarerecordings','SquareRecording','parentSections','projectName','projects','JscriptyProject','contacts','Lists','ListId','CmList','companies','CmCompany','globalcustomfields','chatqueues','ChatQueue','ChatWebsite','faxqueues','FaxQueue','faxaccounts','FaxAccount','internalroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','VoiceMail','Agents','membername','agent','Telephones','User','telephone','queue','inbound','QueueCampaigns','outbound','musiconholds','VoiceMusicOnHold','chanspies','voiceprefixes','ivrcampaigns','Campaign','mailqueues','MailQueue','mailaccounts','mailsubstatuses','MailSubstatus','openchannelaccounts','smsqueues','SmsQueue','smsaccounts','SmsAccount'];(function(_0x52f2db,_0x131148){var _0x5c906e=function(_0x2630af){while(--_0x2630af){_0x52f2db['push'](_0x52f2db['shift']());}};_0x5c906e(++_0x131148);}(_0x5f2f,0x73));var _0xf5f2=function(_0x2eefff,_0x1c2a4f){_0x2eefff=_0x2eefff-0x0;var _0x52a249=_0x5f2f[_0x2eefff];return _0x52a249;};'use strict';var _=require(_0xf5f2('0x0'));var attributes=require(_0xf5f2('0x1'));var qs=require(_0xf5f2('0x2'));var squel=require(_0xf5f2('0x3'));module[_0xf5f2('0x4')]=function(_0x174bc7){var _0x3c72ee=_0x174bc7[_0xf5f2('0x5')];function _0x501fbd(_0x4854b6,_0x1665c7){return new Promise(function(_0x192215,_0xad7f65){if(!_0x1665c7)return _0x192215(null);var _0x3eebf6=_0x1665c7[_0xf5f2('0x6')]?{[_0x1665c7[_0xf5f2('0x6')]['field']]:_0x1665c7[_0xf5f2('0x6')][_0xf5f2('0x7')]}:undefined;return _0x3c72ee[_0x4854b6][_0xf5f2('0x8')]({'where':_0x3eebf6,'raw':!![]})['then'](function(_0x375da4){_0x1665c7[_0xf5f2('0x9')]=_[_0xf5f2('0xa')](_0x375da4,'id');_0x192215(_0x1665c7);})['catch'](function(_0x977a59){_0xad7f65(_0x977a59);});});}function _0x4ebbbe(_0x53fb33,_0xa7e1a6){return new Promise(function(_0x151aba,_0x4b78cd){var _0x336f6b=_0x53fb33[_0xf5f2('0x6')]?{[_0x53fb33[_0xf5f2('0x6')][_0xf5f2('0xb')]]:_0x53fb33[_0xf5f2('0x6')][_0xf5f2('0x7')]}:undefined;return _0x3c72ee[_0x53fb33['model']][_0xf5f2('0x8')]({'where':_0x336f6b,'raw':!![]})[_0xf5f2('0xc')](function(_0x269909){_0xa7e1a6[_0xf5f2('0x9')]=_[_0xf5f2('0xa')](_0x269909,function(_0x4d97fc){return _0x4d97fc[_0xf5f2('0xd')];});_0x151aba(_0xa7e1a6);})[_0xf5f2('0xe')](function(_0x17d656){_0x4b78cd(_0x17d656);});});}function _0x1b6dd2(_0x23e23a,_0x3a9dbb,_0xdb61b3){if(!_0x3a9dbb)return Promise[_0xf5f2('0xf')](null);return new Promise(function(_0x11f702,_0x228ace){return _0x3c72ee[_0xf5f2('0x10')][_0xf5f2('0x8')]({'where':{'sectionId':_0x3a9dbb['id']},'raw':!![]})[_0xf5f2('0xc')](function(_0x3ee69){if(_0x23e23a[_0xf5f2('0xb')]&&_0x23e23a[_0xf5f2('0xb')]!=='id'){_0x3a9dbb[_0xf5f2('0x9')]=_['map'](_0x3ee69,function(_0x34706d){return _0x34706d[_0x23e23a[_0xf5f2('0xb')]];});}else{if(_0xdb61b3==='AnalyticExtractedReport'){_0x3a9dbb['associatedResources']=_[_0xf5f2('0xa')](_0x3ee69,function(_0x388e6c){return{'id':_0x388e6c['resourceId'],'type':_0x388e6c[_0xf5f2('0x11')]};});}else{_0x3a9dbb[_0xf5f2('0x9')]=_[_0xf5f2('0xa')](_0x3ee69,function(_0x39c024){return _0x39c024[_0xf5f2('0x12')];});}}_0x11f702(_0x3a9dbb);})['catch'](function(_0x21cd91){_0x228ace(_0x21cd91);});});}function _0x4669a6(_0x4e8bda,_0x2833fe){var _0x287ad5={'parentSections':[]};switch(_0x4e8bda['toLowerCase']()){case'squareprojects':_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x14');break;case _0xf5f2('0x15'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x16');break;case _0xf5f2('0x17'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x18');_0x287ad5[_0xf5f2('0x19')]=[{'name':'SquareProjects','field':_0xf5f2('0xd'),'foreignKey':_0xf5f2('0x1a')}];break;case _0xf5f2('0x1b'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x1c');break;case _0xf5f2('0x1d'):_0x287ad5['childModel']='CmContact';_0x287ad5[_0xf5f2('0x19')]=[{'name':_0xf5f2('0x1e'),'field':'id','foreignKey':_0xf5f2('0x1f')}];break;case'lists':_0x287ad5['childModel']=_0xf5f2('0x20');break;case _0xf5f2('0x21'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x22');break;case _0xf5f2('0x23'):_0x287ad5['childModel']='CmCustomField';break;case _0xf5f2('0x24'):_0x287ad5['childModel']=_0xf5f2('0x25');break;case'chatwebsites':_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x26');break;case _0xf5f2('0x27'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x28');break;case _0xf5f2('0x29'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x2a');break;case'inboundroutes':case _0xf5f2('0x2b'):case _0xf5f2('0x2c'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x2d');break;case _0xf5f2('0x2e'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x2f');break;case'voicemails':_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x30');break;case'voicerecordings':_0x287ad5[_0xf5f2('0x13')]='VoiceRecording';_0x287ad5[_0xf5f2('0x19')]=[{'name':_0xf5f2('0x31'),'field':_0xf5f2('0xd'),'foreignKey':_0xf5f2('0x32'),'model':'User','filter':{'field':'role','value':[_0xf5f2('0x33')]}},{'name':_0xf5f2('0x34'),'field':_0xf5f2('0xd'),'foreignKey':'membername','model':_0xf5f2('0x35'),'filter':{'field':'role','value':[_0xf5f2('0x36')]}},{'name':'VoiceQueues','field':_0xf5f2('0xd'),'foreignKey':_0xf5f2('0x37'),'model':'VoiceQueue','filter':{'field':_0xf5f2('0x11'),'value':[_0xf5f2('0x38')]}},{'name':_0xf5f2('0x39'),'field':_0xf5f2('0xd'),'foreignKey':'queue','model':'VoiceQueue','filter':{'field':_0xf5f2('0x11'),'value':[_0xf5f2('0x3a')]}}];break;case _0xf5f2('0x3b'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x3c');break;case _0xf5f2('0x3d'):_0x287ad5[_0xf5f2('0x13')]='VoiceChanSpy';break;case _0xf5f2('0x3e'):_0x287ad5[_0xf5f2('0x13')]='VoicePrefix';break;case _0xf5f2('0x3f'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x40');break;case _0xf5f2('0x41'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x42');break;case _0xf5f2('0x43'):_0x287ad5[_0xf5f2('0x13')]='MailAccount';break;case _0xf5f2('0x44'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x45');break;case'openchannelqueues':_0x287ad5['childModel']='OpenchannelQueue';break;case _0xf5f2('0x46'):_0x287ad5[_0xf5f2('0x13')]='OpenchannelAccount';break;case _0xf5f2('0x47'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x48');break;case _0xf5f2('0x49'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x4a');break;case _0xf5f2('0x4b'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x4c');break;case _0xf5f2('0x4d'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x4e');break;case _0xf5f2('0x4f'):_0x287ad5[_0xf5f2('0x13')]='Team';break;case _0xf5f2('0x50'):case'queuecampaigns':_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x51');if(_0x2833fe){_0x287ad5[_0xf5f2('0x19')]=[{'name':_0xf5f2('0x52')},{'name':_0xf5f2('0x39')}];}break;case _0xf5f2('0x53'):case'agents':case _0xf5f2('0x54'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x35');if(_0x2833fe){_0x287ad5[_0xf5f2('0x19')]=[{'name':_0xf5f2('0x55'),'filter':{'field':_0xf5f2('0x56'),'value':[_0xf5f2('0x57'),_0xf5f2('0x58')]},'ignore':!![]},{'name':'Agents'},{'name':_0xf5f2('0x34')}];}break;case _0xf5f2('0x59'):_0x287ad5[_0xf5f2('0x13')]='ZendeskAccount';break;case _0xf5f2('0x5a'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x5b');break;case'freshdeskaccounts':_0x287ad5['childModel']=_0xf5f2('0x5c');break;case _0xf5f2('0x5d'):_0x287ad5['childModel']=_0xf5f2('0x5e');break;case'deskaccounts':_0x287ad5[_0xf5f2('0x13')]='DeskAccount';break;case _0xf5f2('0x5f'):_0x287ad5['childModel']=_0xf5f2('0x60');break;case _0xf5f2('0x61'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x35');break;case'cannedanswers':_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x62');break;case'dispositions':_0x287ad5['childModel']=_0xf5f2('0x63');break;case _0xf5f2('0x64'):_0x287ad5['childModel']=_0xf5f2('0x65');break;case _0xf5f2('0x66'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x67');break;case'pauses':_0x287ad5['childModel']=_0xf5f2('0x68');break;case _0xf5f2('0x69'):_0x287ad5['childModel']=_0xf5f2('0x6a');break;case _0xf5f2('0x6b'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x6c');break;case _0xf5f2('0x6d'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x6e');break;case'templates':_0x287ad5['childModel']=_0xf5f2('0x6f');break;case _0xf5f2('0x70'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x71');break;case _0xf5f2('0x72'):_0x287ad5['childModel']=_0xf5f2('0x73');break;case _0xf5f2('0x74'):_0x287ad5[_0xf5f2('0x13')]='Variable';break;case _0xf5f2('0x75'):_0x287ad5['childModel']=_0xf5f2('0x76');break;case _0xf5f2('0x77'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x78');_0x287ad5['parentSections']=[{'name':'Reports','field':'id','foreignKey':_0xf5f2('0x79')}];break;case'metrics':_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x7a');break;}return _0x287ad5;}function _0x572ec1(_0x3f0579,_0xa4c0be){var _0x2a8f6d=_0x3f0579['charAt'](0x0)[_0xf5f2('0x7b')]()+_0x3f0579[_0xf5f2('0x7c')](0x1);var _0x42cc27={'type':_0x3c72ee[_0xf5f2('0x7d')]['QueryTypes'][_0xf5f2('0x7e')],'raw':!![]};return new Promise(function(_0x506fe5,_0x2cbe1e){var _0x2a773d=squel[_0xf5f2('0x7f')]()[_0xf5f2('0xb')](_0xf5f2('0x80')+_0x2a8f6d+'InteractionId','id')[_0xf5f2('0xb')](_0xf5f2('0x81'))[_0xf5f2('0x82')](_0xf5f2('0x83')+_0x3f0579+_0xf5f2('0x84'),'ui')['where'](_0xf5f2('0x85'),_0xa4c0be['id']);return _0x3c72ee['sequelize']['query'](_0x2a773d[_0xf5f2('0x86')](),_0x42cc27)['then'](function(_0x10f2b8){_0xa4c0be[_0x2a8f6d+_0xf5f2('0x87')]=_0x10f2b8;_0x506fe5(_0x10f2b8);})[_0xf5f2('0xe')](function(_0x123b93){_0x2cbe1e(_0x123b93);});});}return _0x174bc7['define'](_0xf5f2('0x88'),attributes,{'tableName':_0xf5f2('0x89'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x1ec682){var _0x18c41f={'raw':_0x1ec682[_0xf5f2('0x8a')][_0xf5f2('0x8b')],'where':{}};var _0x158768={};var _0x4a7be9={'count':0x0,'rows':[]};var _0x1f55af=_0x1ec682[_0xf5f2('0x8a')][_0xf5f2('0x8c')];var _0x45c7c1=_0x1ec682['query'][_0xf5f2('0x8d')]||![];var _0x4cce08=_0x4669a6(_0x1f55af,_0x45c7c1);if(!_0x4cce08[_0xf5f2('0x13')])throw new Error(_0xf5f2('0x8e')+_0x1f55af+'\x27');var _0x5588cf=[{'name':_0x1f55af}];if(!_[_0xf5f2('0x8f')](_0x4cce08[_0xf5f2('0x19')]))_0x5588cf=_0x4cce08[_0xf5f2('0x19')];var _0x138c55=[];for(var _0x146462=0x0;_0x146462<_0x5588cf['length'];_0x146462++){_0x138c55[_0xf5f2('0x90')](_0x3c72ee[_0xf5f2('0x91')][_0xf5f2('0x92')]({'where':{'userProfileId':_0x1ec682[_0xf5f2('0x93')]['id'],'name':_0x5588cf[_0x146462][_0xf5f2('0xd')]},'raw':!![]}));}return Promise[_0xf5f2('0x94')](_0x138c55)['then'](function(_0x321d4d){var _0x3f475e=_['filter'](_0x321d4d,function(_0x3f677e){return _0x3f677e?_0x3f677e:undefined;});var _0x36503c=_[_0xf5f2('0x6')](_0x5588cf,['ignore',!![]]);var _0x551cc9=_['isEmpty'](_0x3f475e)&&_[_0xf5f2('0x8f')](_0x36503c)?null:_[_0xf5f2('0x95')](_0x36503c,_0x3f475e);if(!_0x551cc9)return null;var _0x35f6a2=[];for(var _0x450691=0x0;_0x450691<_0x551cc9[_0xf5f2('0x96')];_0x450691++){var _0x4d878e=_[_0xf5f2('0x92')](_0x5588cf,function(_0x3a98b4){return _0x551cc9[_0x450691]?_0x3a98b4[_0xf5f2('0xd')]===_0x551cc9[_0x450691][_0xf5f2('0xd')]:null;});if(_0x4d878e){if(_0x551cc9[_0x450691][_0xf5f2('0x97')]){_0x35f6a2[_0xf5f2('0x90')](_0x501fbd(_0x4cce08[_0xf5f2('0x13')],_0x551cc9[_0x450691]));}else{if(!_0x551cc9[_0x450691][_0xf5f2('0x98')]){_0x35f6a2[_0xf5f2('0x90')](_0x1b6dd2(_0x4d878e,_0x551cc9[_0x450691],_0x4cce08[_0xf5f2('0x13')]));}else{if(_0x4d878e[_0xf5f2('0x99')]){_0x35f6a2['push'](_0x4ebbbe(_0x4d878e,_0x551cc9[_0x450691]));}}}}}return Promise['all'](_0x35f6a2);})['then'](function(_0x40f362){var _0xafba8e=_0x40f362;var _0x3d3181=null;if(_0xafba8e){_0x3d3181=_0xafba8e[_0xf5f2('0x96')]===0x1?_0xafba8e[0x0]:null;}if(!_0x3d3181&&!_0xafba8e)return _0x4a7be9;var _0x1bb752=_0x3c72ee[_0x4cce08['childModel']][_0xf5f2('0x9a')];_0x158768[_0xf5f2('0x99')]=_[_0xf5f2('0x9b')](_0x1bb752);_0x158768[_0xf5f2('0x8a')]=_[_0xf5f2('0x9b')](_0x1ec682['query']);_0x158768[_0xf5f2('0x9c')]=_[_0xf5f2('0x9d')](_0x158768['model'],_0x158768[_0xf5f2('0x8a')]);_0x18c41f[_0xf5f2('0x9e')]=_[_0xf5f2('0x9d')](_0x158768[_0xf5f2('0x99')],qs['fields'](_0x1ec682[_0xf5f2('0x8a')][_0xf5f2('0x9f')]));_0x18c41f[_0xf5f2('0x9e')]=_0x18c41f[_0xf5f2('0x9e')][_0xf5f2('0x96')]?_0x18c41f['attributes']:_0x158768['model'];if(!_0x1ec682[_0xf5f2('0x8a')][_0xf5f2('0xa0')](_0xf5f2('0xa1'))){_0x18c41f[_0xf5f2('0xa2')]=qs['limit'](_0x1ec682['query'][_0xf5f2('0xa2')]);_0x18c41f['offset']=qs['offset'](_0x1ec682['query']['offset']);}_0x18c41f[_0xf5f2('0xa3')]=qs[_0xf5f2('0xa4')](_0x1ec682[_0xf5f2('0x8a')][_0xf5f2('0xa4')]);_0x18c41f[_0xf5f2('0xa5')]=qs[_0xf5f2('0x9c')](_[_0xf5f2('0xa6')](_0x1ec682[_0xf5f2('0x8a')],_0x158768[_0xf5f2('0x9c')]));if(_0x1ec682[_0xf5f2('0x8a')][_0xf5f2('0x6')]){_0x18c41f[_0xf5f2('0xa5')]=_[_0xf5f2('0xa7')](_0x18c41f[_0xf5f2('0xa5')],{'$or':_[_0xf5f2('0xa')](_0x1bb752,function(_0x21da15){if(_0x21da15[_0xf5f2('0x11')][_0xf5f2('0xa8')]!=='VIRTUAL'){var _0xe7ac8={};_0xe7ac8[_0x21da15[_0xf5f2('0xb')]]={'$like':'%'+_0x1ec682[_0xf5f2('0x8a')][_0xf5f2('0x6')]+'%'};return _0xe7ac8;}})});}var _0x18c353=[];var _0x308220=null;var _0x16491c={};if(_0x3d3181){_0x308220=_[_0xf5f2('0x92')](_0x5588cf,['name',_0x3d3181[_0xf5f2('0xd')]]);if(_0x308220['field']){_0x16491c={};if(_0x4cce08['childModel']==='AnalyticExtractedReport'){_0x16491c[_0x308220['foreignKey']]=_['map'](_0x3d3181['associatedResources'],'id');}else{_0x16491c[_0x308220[_0xf5f2('0xa9')]]=_0x3d3181[_0xf5f2('0x9')];}_0x18c353[_0xf5f2('0x90')](_0x16491c);}else{_0x18c41f[_0xf5f2('0xa5')]['id']=_0x3d3181[_0xf5f2('0x9')];}}else{for(var _0x3cf857=0x0;_0x3cf857<_0xafba8e['length'];_0x3cf857++){_0x308220=_['find'](_0x5588cf,[_0xf5f2('0xd'),_0xafba8e[_0x3cf857]['name']]);if(_0x308220[_0xf5f2('0xb')]){_0x16491c={};_0x16491c[_0x308220[_0xf5f2('0xa9')]]=_0xafba8e[_0x3cf857]['associatedResources'];_0x18c353['push'](_0x16491c);}else{if(!_0x18c41f[_0xf5f2('0xa5')]['id'])_0x18c41f[_0xf5f2('0xa5')]['id']=[];_0xafba8e[_0x3cf857]['associatedResources'][_0xf5f2('0xaa')](function(_0x388b32){_0x18c41f['where']['id'][_0xf5f2('0x90')](_0x388b32);});}}}if(!_[_0xf5f2('0x8f')](_0x18c353)){_0x18c41f[_0xf5f2('0xa5')]=_['merge'](_0x18c41f[_0xf5f2('0xa5')],{'$and':{'$or':_0x18c353}});}_0x18c41f=_[_0xf5f2('0xa7')]({},_0x18c41f,_0x1ec682[_0xf5f2('0xab')]);if(_0x3d3181&&!_0x3d3181[_0xf5f2('0x98')]&&_0x4cce08[_0xf5f2('0x13')]===_0xf5f2('0x78')){if(_0x1ec682[_0xf5f2('0x8a')][_0xf5f2('0xac')]){_0x18c41f[_0xf5f2('0xad')]=[{'all':!![]}];}return _0x3c72ee[_0x4cce08[_0xf5f2('0x13')]][_0xf5f2('0x8')](_0x18c41f)[_0xf5f2('0xc')](function(_0x6f9240){var _0x407dd8=[];_0x6f9240[_0xf5f2('0xaa')](function(_0x28b9cd){var _0x1902c6;switch(_0x28b9cd[_0xf5f2('0xae')]){case _0xf5f2('0xaf'):_0x1902c6=_[_0xf5f2('0x92')](_0x3d3181[_0xf5f2('0x9')],function(_0x533aff){return _0x533aff['id']===_0x28b9cd[_0xf5f2('0x79')]&&_0x533aff[_0xf5f2('0x11')]==='DefaultReports';});break;case _0xf5f2('0xb0'):_0x1902c6=_[_0xf5f2('0x92')](_0x3d3181['associatedResources'],function(_0xb56304){return _0xb56304['id']===_0x28b9cd[_0xf5f2('0x79')]&&_0xb56304[_0xf5f2('0x11')]==='CustomReports';});break;}if(_0x1902c6)_0x407dd8['push'](_0x28b9cd);});_0x4a7be9[_0xf5f2('0xb1')]=_0x407dd8[_0xf5f2('0x96')];_0x4a7be9[_0xf5f2('0xb2')]=_0x407dd8;return _0x4a7be9;});}else{if(!_['isEmpty'](_0x1ec682['query'][_0xf5f2('0xb3')])){_0x18c41f[_0xf5f2('0xa5')]['id']=_0x18c41f[_0xf5f2('0xa5')]['id']?_['intersection'](_0x18c41f['where']['id'],_0x1ec682['query']['ids']):_0x1ec682['query'][_0xf5f2('0xb3')];}return _0x3c72ee[_0x4cce08['childModel']][_0xf5f2('0xb1')]({'where':_0x18c41f[_0xf5f2('0xa5')]})[_0xf5f2('0xc')](function(_0x43a167){_0x4a7be9[_0xf5f2('0xb1')]=_0x43a167;if(_0x1ec682[_0xf5f2('0x8a')][_0xf5f2('0xac')]){if(_0x4cce08[_0xf5f2('0x13')]===_0xf5f2('0xb4')){_0x18c41f[_0xf5f2('0xad')]=[{'model':_0x3c72ee[_0xf5f2('0x6e')],'as':_0xf5f2('0xb5'),'attributes':['id',_0xf5f2('0xd'),'color'],'required':_0x1ec682[_0xf5f2('0x8a')][_0xf5f2('0xb6')]?!![]:![]},{'model':_0x3c72ee['Tag'],'as':_0xf5f2('0xb7'),'attributes':['id',_0xf5f2('0xd'),'color'],'through':_0x1ec682[_0xf5f2('0x8a')][_0xf5f2('0xb6')]?{'attributes':[],'where':{'TagId':_0x1ec682[_0xf5f2('0x8a')]['tag']||undefined}}:{},'required':_0x1ec682[_0xf5f2('0x8a')][_0xf5f2('0xb6')]?!![]:![]}];}else{_0x18c41f['include']=[{'all':!![]}];}}return _0x3c72ee[_0x4cce08[_0xf5f2('0x13')]][_0xf5f2('0x8')](_0x18c41f);})[_0xf5f2('0xc')](function(_0x517aa8){_0x4a7be9[_0xf5f2('0xb2')]=_0x517aa8;if(_0x1f55af==='Agents'&&_0x1ec682[_0xf5f2('0x8a')]['openTabs']===_0xf5f2('0xb8')){var _0x3cbc58=[];for(var _0x120e2b=0x0;_0x120e2b<_0x4a7be9[_0xf5f2('0xb2')]['length'];_0x120e2b++){_0x3cbc58[_0xf5f2('0x90')](_0x572ec1('chat',_0x4a7be9['rows'][_0x120e2b]['dataValues']));_0x3cbc58[_0xf5f2('0x90')](_0x572ec1(_0xf5f2('0xb9'),_0x4a7be9['rows'][_0x120e2b][_0xf5f2('0xba')]));_0x3cbc58[_0xf5f2('0x90')](_0x572ec1(_0xf5f2('0xbb'),_0x4a7be9[_0xf5f2('0xb2')][_0x120e2b][_0xf5f2('0xba')]));_0x3cbc58[_0xf5f2('0x90')](_0x572ec1('mail',_0x4a7be9[_0xf5f2('0xb2')][_0x120e2b][_0xf5f2('0xba')]));_0x3cbc58['push'](_0x572ec1(_0xf5f2('0xbc'),_0x4a7be9[_0xf5f2('0xb2')][_0x120e2b]['dataValues']));_0x3cbc58[_0xf5f2('0x90')](_0x572ec1(_0xf5f2('0xbd'),_0x4a7be9[_0xf5f2('0xb2')][_0x120e2b][_0xf5f2('0xba')]));}return Promise[_0xf5f2('0x94')](_0x3cbc58)[_0xf5f2('0xc')](function(){return _0x4a7be9;});}return _0x4a7be9;});}});}}});};
\ No newline at end of file
+var _0xebcc=['metrics','AnalyticMetric','charAt','toUpperCase','slice','Sequelize','QueryTypes','SELECT','InteractionId','from','user_has_','where','ui.UserId\x20=\x20?','toString','OpenTabs','UserProfile','user_profiles','query','section','mergeResources','Invalid\x20section\x20\x27','isEmpty','push','UserProfileSection','find','params','all','ignore','union','length','keys','filters','attributes','fields','hasOwnProperty','limit','offset','sort','pick','merge','key','VIRTUAL','foreignKey','forEach','options','autoAssociation','include','reportType','default','CustomReports','count','ids','intersection','customSorting','order','extraQueryConditions','includeAll','color','tag','ThroughTags','rows','openTabs','true','chat','fax','dataValues','mail','openchannel','whatsapp','lodash','./userProfile.attributes','../../components/parsers/qs','squel','models','filter','findAll','then','associatedResources','map','catch','field','value','model','UserProfileResource','AnalyticExtractedReport','resourceId','type','squareprojects','childModel','SquareProject','odbc','SquareOdbc','squarerecordings','SquareRecording','parentSections','SquareProjects','name','projectName','projects','CmContact','Lists','ListId','lists','CmList','companies','CmCompany','chatqueues','ChatQueue','chatwebsites','ChatWebsite','faxqueues','FaxQueue','faxaccounts','inboundroutes','internalroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','voicemails','VoiceRecording','Agents','User','agent','Telephones','membername','telephone','queue','QueueCampaigns','VoiceQueue','outbound','VoiceChanSpy','voiceprefixes','VoicePrefix','ivrcampaigns','mailqueues','MailQueue','mailaccounts','MailAccount','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelAccount','SmsQueue','smsaccounts','SmsAccount','WhatsappQueue','WhatsappAccount','teams','Team','queuecampaigns','VoiceQueues','agents','telephones','Users','role','admin','user','zendeskaccounts','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','SugarcrmAccount','deskaccounts','DeskAccount','ZohoAccount','vtigeraccounts','CannedAnswer','Disposition','customdashboards','Dashboard','intervals','Interval','pauses','Pause','scheduler','Schedule','sounds','Sound','tags','Tag','triggers','Trigger','trunks','variables','Variable','Plugin','extractedreports','reportId'];(function(_0x5d9740,_0x3b51f0){var _0x378017=function(_0x391f61){while(--_0x391f61){_0x5d9740['push'](_0x5d9740['shift']());}};_0x378017(++_0x3b51f0);}(_0xebcc,0x1bf));var _0xcebc=function(_0x1c922e,_0x26d9e1){_0x1c922e=_0x1c922e-0x0;var _0x4af09b=_0xebcc[_0x1c922e];return _0x4af09b;};'use strict';var _=require(_0xcebc('0x0'));var attributes=require(_0xcebc('0x1'));var qs=require(_0xcebc('0x2'));var squel=require(_0xcebc('0x3'));module['exports']=function(_0x269299){var _0x5d06c4=_0x269299[_0xcebc('0x4')];function _0x1dcfbb(_0x756362,_0xc857be){return new Promise(function(_0x3f113c,_0x3abb65){if(!_0xc857be)return _0x3f113c(null);var _0x5e5250=_0xc857be[_0xcebc('0x5')]?{[_0xc857be[_0xcebc('0x5')]['field']]:_0xc857be[_0xcebc('0x5')]['value']}:undefined;return _0x5d06c4[_0x756362][_0xcebc('0x6')]({'where':_0x5e5250,'raw':!![]})[_0xcebc('0x7')](function(_0x21560c){_0xc857be[_0xcebc('0x8')]=_[_0xcebc('0x9')](_0x21560c,'id');_0x3f113c(_0xc857be);})[_0xcebc('0xa')](function(_0x5dab1d){_0x3abb65(_0x5dab1d);});});}function _0x3806f0(_0x547f6f,_0x46d3bd){return new Promise(function(_0x3c9c2e,_0x543b51){var _0x3cd9c8=_0x547f6f['filter']?{[_0x547f6f[_0xcebc('0x5')][_0xcebc('0xb')]]:_0x547f6f[_0xcebc('0x5')][_0xcebc('0xc')]}:undefined;return _0x5d06c4[_0x547f6f[_0xcebc('0xd')]]['findAll']({'where':_0x3cd9c8,'raw':!![]})[_0xcebc('0x7')](function(_0x3621ae){_0x46d3bd[_0xcebc('0x8')]=_[_0xcebc('0x9')](_0x3621ae,function(_0x29cdf9){return _0x29cdf9['name'];});_0x3c9c2e(_0x46d3bd);})[_0xcebc('0xa')](function(_0x27adfa){_0x543b51(_0x27adfa);});});}function _0x8f76c4(_0x173123,_0x58d9d9,_0x28f1ae){if(!_0x58d9d9)return Promise['resolve'](null);return new Promise(function(_0x42f410,_0x43bdc7){return _0x5d06c4[_0xcebc('0xe')][_0xcebc('0x6')]({'where':{'sectionId':_0x58d9d9['id']},'raw':!![]})['then'](function(_0x4e4b4b){if(_0x173123[_0xcebc('0xb')]&&_0x173123[_0xcebc('0xb')]!=='id'){_0x58d9d9['associatedResources']=_[_0xcebc('0x9')](_0x4e4b4b,function(_0x22ee82){return _0x22ee82[_0x173123['field']];});}else{if(_0x28f1ae===_0xcebc('0xf')){_0x58d9d9[_0xcebc('0x8')]=_['map'](_0x4e4b4b,function(_0x5b362b){return{'id':_0x5b362b[_0xcebc('0x10')],'type':_0x5b362b[_0xcebc('0x11')]};});}else{_0x58d9d9['associatedResources']=_['map'](_0x4e4b4b,function(_0x238a49){return _0x238a49[_0xcebc('0x10')];});}}_0x42f410(_0x58d9d9);})[_0xcebc('0xa')](function(_0x3ed070){_0x43bdc7(_0x3ed070);});});}function _0x12e03c(_0x2f6a3c,_0x1e7d77){var _0x39c3b3={'parentSections':[]};switch(_0x2f6a3c['toLowerCase']()){case _0xcebc('0x12'):_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x14');break;case _0xcebc('0x15'):_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x16');break;case _0xcebc('0x17'):_0x39c3b3['childModel']=_0xcebc('0x18');_0x39c3b3[_0xcebc('0x19')]=[{'name':_0xcebc('0x1a'),'field':_0xcebc('0x1b'),'foreignKey':_0xcebc('0x1c')}];break;case _0xcebc('0x1d'):_0x39c3b3[_0xcebc('0x13')]='JscriptyProject';break;case'contacts':_0x39c3b3['childModel']=_0xcebc('0x1e');_0x39c3b3[_0xcebc('0x19')]=[{'name':_0xcebc('0x1f'),'field':'id','foreignKey':_0xcebc('0x20')}];break;case _0xcebc('0x21'):_0x39c3b3['childModel']=_0xcebc('0x22');break;case _0xcebc('0x23'):_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x24');break;case'globalcustomfields':_0x39c3b3[_0xcebc('0x13')]='CmCustomField';break;case _0xcebc('0x25'):_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x26');break;case _0xcebc('0x27'):_0x39c3b3['childModel']=_0xcebc('0x28');break;case _0xcebc('0x29'):_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x2a');break;case _0xcebc('0x2b'):_0x39c3b3['childModel']='FaxAccount';break;case _0xcebc('0x2c'):case _0xcebc('0x2d'):case _0xcebc('0x2e'):_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x2f');break;case _0xcebc('0x30'):_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x31');break;case _0xcebc('0x32'):_0x39c3b3[_0xcebc('0x13')]='VoiceMail';break;case'voicerecordings':_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x33');_0x39c3b3['parentSections']=[{'name':_0xcebc('0x34'),'field':_0xcebc('0x1b'),'foreignKey':'membername','model':_0xcebc('0x35'),'filter':{'field':'role','value':[_0xcebc('0x36')]}},{'name':_0xcebc('0x37'),'field':_0xcebc('0x1b'),'foreignKey':_0xcebc('0x38'),'model':_0xcebc('0x35'),'filter':{'field':'role','value':[_0xcebc('0x39')]}},{'name':'VoiceQueues','field':'name','foreignKey':_0xcebc('0x3a'),'model':'VoiceQueue','filter':{'field':_0xcebc('0x11'),'value':['inbound']}},{'name':_0xcebc('0x3b'),'field':_0xcebc('0x1b'),'foreignKey':_0xcebc('0x3a'),'model':_0xcebc('0x3c'),'filter':{'field':_0xcebc('0x11'),'value':[_0xcebc('0x3d')]}}];break;case'musiconholds':_0x39c3b3['childModel']='VoiceMusicOnHold';break;case'chanspies':_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x3e');break;case _0xcebc('0x3f'):_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x40');break;case _0xcebc('0x41'):_0x39c3b3[_0xcebc('0x13')]='Campaign';break;case _0xcebc('0x42'):_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x43');break;case _0xcebc('0x44'):_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x45');break;case _0xcebc('0x46'):_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x47');break;case _0xcebc('0x48'):_0x39c3b3[_0xcebc('0x13')]='OpenchannelQueue';break;case'openchannelaccounts':_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x49');break;case'smsqueues':_0x39c3b3['childModel']=_0xcebc('0x4a');break;case _0xcebc('0x4b'):_0x39c3b3['childModel']=_0xcebc('0x4c');break;case'whatsappqueues':_0x39c3b3['childModel']=_0xcebc('0x4d');break;case'whatsappaccounts':_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x4e');break;case _0xcebc('0x4f'):_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x50');break;case'voicequeues':case _0xcebc('0x51'):_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x3c');if(_0x1e7d77){_0x39c3b3[_0xcebc('0x19')]=[{'name':_0xcebc('0x52')},{'name':'QueueCampaigns'}];}break;case'users':case _0xcebc('0x53'):case _0xcebc('0x54'):_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x35');if(_0x1e7d77){_0x39c3b3['parentSections']=[{'name':_0xcebc('0x55'),'filter':{'field':_0xcebc('0x56'),'value':[_0xcebc('0x57'),_0xcebc('0x58')]},'ignore':!![]},{'name':_0xcebc('0x34')},{'name':_0xcebc('0x37')}];}break;case _0xcebc('0x59'):_0x39c3b3['childModel']='ZendeskAccount';break;case'salesforceaccounts':_0x39c3b3['childModel']=_0xcebc('0x5a');break;case _0xcebc('0x5b'):_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x5c');break;case'sugarcrmaccounts':_0x39c3b3['childModel']=_0xcebc('0x5d');break;case _0xcebc('0x5e'):_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x5f');break;case'zohoaccounts':_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x60');break;case _0xcebc('0x61'):_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x35');break;case'cannedanswers':_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x62');break;case'dispositions':_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x63');break;case _0xcebc('0x64'):_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x65');break;case _0xcebc('0x66'):_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x67');break;case _0xcebc('0x68'):_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x69');break;case _0xcebc('0x6a'):_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x6b');break;case _0xcebc('0x6c'):_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x6d');break;case _0xcebc('0x6e'):_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x6f');break;case'templates':_0x39c3b3['childModel']='Template';break;case _0xcebc('0x70'):_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x71');break;case _0xcebc('0x72'):_0x39c3b3[_0xcebc('0x13')]='Trunk';break;case _0xcebc('0x73'):_0x39c3b3['childModel']=_0xcebc('0x74');break;case'plugins':_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x75');break;case _0xcebc('0x76'):_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0xf');_0x39c3b3['parentSections']=[{'name':'Reports','field':'id','foreignKey':_0xcebc('0x77')}];break;case _0xcebc('0x78'):_0x39c3b3[_0xcebc('0x13')]=_0xcebc('0x79');break;}return _0x39c3b3;}function _0x2403f4(_0x1c1f18,_0x4c7989){var _0x194d6c=_0x1c1f18[_0xcebc('0x7a')](0x0)[_0xcebc('0x7b')]()+_0x1c1f18[_0xcebc('0x7c')](0x1);var _0x16050b={'type':_0x5d06c4[_0xcebc('0x7d')][_0xcebc('0x7e')][_0xcebc('0x7f')],'raw':!![]};return new Promise(function(_0x5d7877,_0x427e46){var _0x51acd1=squel['select']()[_0xcebc('0xb')]('ui.'+_0x194d6c+_0xcebc('0x80'),'id')[_0xcebc('0xb')]('ui.createdAt')[_0xcebc('0x81')](_0xcebc('0x82')+_0x1c1f18+'_interactions','ui')[_0xcebc('0x83')](_0xcebc('0x84'),_0x4c7989['id']);return _0x5d06c4['sequelize']['query'](_0x51acd1[_0xcebc('0x85')](),_0x16050b)['then'](function(_0x563644){_0x4c7989[_0x194d6c+_0xcebc('0x86')]=_0x563644;_0x5d7877(_0x563644);})[_0xcebc('0xa')](function(_0x4f95ef){_0x427e46(_0x4f95ef);});});}return _0x269299['define'](_0xcebc('0x87'),attributes,{'tableName':_0xcebc('0x88'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x583467){var _0x3f7bc9={'raw':_0x583467['query']['raw'],'where':{}};var _0x4f601b={};var _0x2fbb73={'count':0x0,'rows':[]};var _0xbe80bb=_0x583467[_0xcebc('0x89')][_0xcebc('0x8a')];var _0x4f610e=_0x583467['query'][_0xcebc('0x8b')]||![];var _0x2b3638=_0x12e03c(_0xbe80bb,_0x4f610e);if(!_0x2b3638[_0xcebc('0x13')])throw new Error(_0xcebc('0x8c')+_0xbe80bb+'\x27');var _0x58f12b=[{'name':_0xbe80bb}];if(!_[_0xcebc('0x8d')](_0x2b3638[_0xcebc('0x19')]))_0x58f12b=_0x2b3638[_0xcebc('0x19')];var _0x480739=[];for(var _0x378bb6=0x0;_0x378bb6<_0x58f12b['length'];_0x378bb6++){_0x480739[_0xcebc('0x8e')](_0x5d06c4[_0xcebc('0x8f')][_0xcebc('0x90')]({'where':{'userProfileId':_0x583467[_0xcebc('0x91')]['id'],'name':_0x58f12b[_0x378bb6][_0xcebc('0x1b')]},'raw':!![]}));}return Promise[_0xcebc('0x92')](_0x480739)[_0xcebc('0x7')](function(_0x2a3bb6){var _0x426192=_[_0xcebc('0x5')](_0x2a3bb6,function(_0x5b3994){return _0x5b3994?_0x5b3994:undefined;});var _0x428670=_[_0xcebc('0x5')](_0x58f12b,[_0xcebc('0x93'),!![]]);var _0x582f46=_[_0xcebc('0x8d')](_0x426192)&&_[_0xcebc('0x8d')](_0x428670)?null:_[_0xcebc('0x94')](_0x428670,_0x426192);if(!_0x582f46)return null;var _0x49a4ab=[];for(var _0x2c0267=0x0;_0x2c0267<_0x582f46[_0xcebc('0x95')];_0x2c0267++){var _0xd831ce=_['find'](_0x58f12b,function(_0x5e7191){return _0x582f46[_0x2c0267]?_0x5e7191[_0xcebc('0x1b')]===_0x582f46[_0x2c0267][_0xcebc('0x1b')]:null;});if(_0xd831ce){if(_0x582f46[_0x2c0267]['ignore']){_0x49a4ab[_0xcebc('0x8e')](_0x1dcfbb(_0x2b3638[_0xcebc('0x13')],_0x582f46[_0x2c0267]));}else{if(!_0x582f46[_0x2c0267]['autoAssociation']){_0x49a4ab['push'](_0x8f76c4(_0xd831ce,_0x582f46[_0x2c0267],_0x2b3638['childModel']));}else{if(_0xd831ce['model']){_0x49a4ab['push'](_0x3806f0(_0xd831ce,_0x582f46[_0x2c0267]));}}}}}return Promise['all'](_0x49a4ab);})[_0xcebc('0x7')](function(_0x5eba6e){var _0x192800=_0x5eba6e;var _0x2f4f09=null;if(_0x192800){_0x2f4f09=_0x192800[_0xcebc('0x95')]===0x1?_0x192800[0x0]:null;}if(!_0x2f4f09&&!_0x192800)return _0x2fbb73;var _0x53ddd9=_0x5d06c4[_0x2b3638[_0xcebc('0x13')]]['rawAttributes'];_0x4f601b['model']=_[_0xcebc('0x96')](_0x53ddd9);_0x4f601b[_0xcebc('0x89')]=_[_0xcebc('0x96')](_0x583467[_0xcebc('0x89')]);_0x4f601b[_0xcebc('0x97')]=_['intersection'](_0x4f601b['model'],_0x4f601b[_0xcebc('0x89')]);_0x3f7bc9[_0xcebc('0x98')]=_['intersection'](_0x4f601b['model'],qs['fields'](_0x583467[_0xcebc('0x89')][_0xcebc('0x99')]));_0x3f7bc9[_0xcebc('0x98')]=_0x3f7bc9['attributes']['length']?_0x3f7bc9[_0xcebc('0x98')]:_0x4f601b[_0xcebc('0xd')];if(!_0x583467['query'][_0xcebc('0x9a')]('nolimit')){_0x3f7bc9['limit']=qs[_0xcebc('0x9b')](_0x583467['query'][_0xcebc('0x9b')]);_0x3f7bc9[_0xcebc('0x9c')]=qs[_0xcebc('0x9c')](_0x583467[_0xcebc('0x89')][_0xcebc('0x9c')]);}_0x3f7bc9['order']=qs[_0xcebc('0x9d')](_0x583467[_0xcebc('0x89')][_0xcebc('0x9d')]);_0x3f7bc9[_0xcebc('0x83')]=qs['filters'](_[_0xcebc('0x9e')](_0x583467['query'],_0x4f601b[_0xcebc('0x97')]));if(_0x583467['query'][_0xcebc('0x5')]){_0x3f7bc9['where']=_[_0xcebc('0x9f')](_0x3f7bc9['where'],{'$or':_['map'](_0x53ddd9,function(_0xf44f93){if(_0xf44f93[_0xcebc('0x11')][_0xcebc('0xa0')]!==_0xcebc('0xa1')){var _0x2397c1={};_0x2397c1[_0xf44f93[_0xcebc('0xb')]]={'$like':'%'+_0x583467[_0xcebc('0x89')][_0xcebc('0x5')]+'%'};return _0x2397c1;}})});}var _0x1cc104=[];var _0x143821=null;var _0x483aa9={};if(_0x2f4f09){_0x143821=_[_0xcebc('0x90')](_0x58f12b,[_0xcebc('0x1b'),_0x2f4f09[_0xcebc('0x1b')]]);if(_0x143821[_0xcebc('0xb')]){_0x483aa9={};if(_0x2b3638[_0xcebc('0x13')]==='AnalyticExtractedReport'){_0x483aa9[_0x143821[_0xcebc('0xa2')]]=_[_0xcebc('0x9')](_0x2f4f09[_0xcebc('0x8')],'id');}else{_0x483aa9[_0x143821['foreignKey']]=_0x2f4f09[_0xcebc('0x8')];}_0x1cc104[_0xcebc('0x8e')](_0x483aa9);}else{_0x3f7bc9[_0xcebc('0x83')]['id']=_0x2f4f09[_0xcebc('0x8')];}}else{for(var _0x55dc0e=0x0;_0x55dc0e<_0x192800['length'];_0x55dc0e++){_0x143821=_[_0xcebc('0x90')](_0x58f12b,[_0xcebc('0x1b'),_0x192800[_0x55dc0e]['name']]);if(_0x143821['field']){_0x483aa9={};_0x483aa9[_0x143821[_0xcebc('0xa2')]]=_0x192800[_0x55dc0e][_0xcebc('0x8')];_0x1cc104[_0xcebc('0x8e')](_0x483aa9);}else{if(!_0x3f7bc9[_0xcebc('0x83')]['id'])_0x3f7bc9[_0xcebc('0x83')]['id']=[];_0x192800[_0x55dc0e]['associatedResources'][_0xcebc('0xa3')](function(_0x4b9208){_0x3f7bc9[_0xcebc('0x83')]['id'][_0xcebc('0x8e')](_0x4b9208);});}}}if(!_[_0xcebc('0x8d')](_0x1cc104)){_0x3f7bc9[_0xcebc('0x83')]=_[_0xcebc('0x9f')](_0x3f7bc9[_0xcebc('0x83')],{'$and':{'$or':_0x1cc104}});}_0x3f7bc9=_[_0xcebc('0x9f')]({},_0x3f7bc9,_0x583467[_0xcebc('0xa4')]);if(_0x2f4f09&&!_0x2f4f09[_0xcebc('0xa5')]&&_0x2b3638[_0xcebc('0x13')]===_0xcebc('0xf')){if(_0x583467[_0xcebc('0x89')]['includeAll']){_0x3f7bc9[_0xcebc('0xa6')]=[{'all':!![]}];}return _0x5d06c4[_0x2b3638[_0xcebc('0x13')]][_0xcebc('0x6')](_0x3f7bc9)[_0xcebc('0x7')](function(_0x3451c1){var _0x32ab55=[];_0x3451c1[_0xcebc('0xa3')](function(_0x2320a6){var _0x58eafc;switch(_0x2320a6[_0xcebc('0xa7')]){case _0xcebc('0xa8'):_0x58eafc=_[_0xcebc('0x90')](_0x2f4f09['associatedResources'],function(_0x28a81b){return _0x28a81b['id']===_0x2320a6['reportId']&&_0x28a81b[_0xcebc('0x11')]==='DefaultReports';});break;case'custom':_0x58eafc=_['find'](_0x2f4f09[_0xcebc('0x8')],function(_0x20cc08){return _0x20cc08['id']===_0x2320a6['reportId']&&_0x20cc08[_0xcebc('0x11')]===_0xcebc('0xa9');});break;}if(_0x58eafc)_0x32ab55[_0xcebc('0x8e')](_0x2320a6);});_0x2fbb73[_0xcebc('0xaa')]=_0x32ab55[_0xcebc('0x95')];_0x2fbb73['rows']=_0x32ab55;return _0x2fbb73;});}else{if(!_[_0xcebc('0x8d')](_0x583467[_0xcebc('0x89')][_0xcebc('0xab')])){_0x3f7bc9['where']['id']=_0x3f7bc9['where']['id']?_[_0xcebc('0xac')](_0x3f7bc9[_0xcebc('0x83')]['id'],_0x583467['query'][_0xcebc('0xab')]):_0x583467[_0xcebc('0x89')][_0xcebc('0xab')];if(_0x583467[_0xcebc('0x89')][_0xcebc('0xad')]){_0x3f7bc9[_0xcebc('0xae')]=_0x583467[_0xcebc('0x89')][_0xcebc('0xad')];}}if(_0x583467[_0xcebc('0x89')][_0xcebc('0xaf')]){_0x3f7bc9[_0xcebc('0x83')]=_[_0xcebc('0x9f')](_0x3f7bc9[_0xcebc('0x83')],{'$and':_0x583467[_0xcebc('0x89')]['extraQueryConditions']});}return _0x5d06c4[_0x2b3638[_0xcebc('0x13')]][_0xcebc('0xaa')]({'where':_0x3f7bc9[_0xcebc('0x83')]})['then'](function(_0x50a674){_0x2fbb73[_0xcebc('0xaa')]=_0x50a674;if(_0x583467['query'][_0xcebc('0xb0')]){if(_0x2b3638[_0xcebc('0x13')]==='CmContact'){_0x3f7bc9[_0xcebc('0xa6')]=[{'model':_0x5d06c4['Tag'],'as':'Tags','attributes':['id',_0xcebc('0x1b'),_0xcebc('0xb1')],'required':_0x583467['query'][_0xcebc('0xb2')]?!![]:![]},{'model':_0x5d06c4[_0xcebc('0x6f')],'as':_0xcebc('0xb3'),'attributes':['id',_0xcebc('0x1b'),_0xcebc('0xb1')],'through':_0x583467[_0xcebc('0x89')][_0xcebc('0xb2')]?{'attributes':[],'where':{'TagId':_0x583467[_0xcebc('0x89')][_0xcebc('0xb2')]||undefined}}:{},'required':_0x583467[_0xcebc('0x89')][_0xcebc('0xb2')]?!![]:![]}];}else{_0x3f7bc9[_0xcebc('0xa6')]=[{'all':!![]}];}}return _0x5d06c4[_0x2b3638[_0xcebc('0x13')]]['findAll'](_0x3f7bc9);})[_0xcebc('0x7')](function(_0x24fecb){_0x2fbb73[_0xcebc('0xb4')]=_0x24fecb;if(_0xbe80bb==='Agents'&&_0x583467[_0xcebc('0x89')][_0xcebc('0xb5')]===_0xcebc('0xb6')){var _0x19caa8=[];for(var _0x5406e3=0x0;_0x5406e3<_0x2fbb73[_0xcebc('0xb4')][_0xcebc('0x95')];_0x5406e3++){_0x19caa8[_0xcebc('0x8e')](_0x2403f4(_0xcebc('0xb7'),_0x2fbb73[_0xcebc('0xb4')][_0x5406e3]['dataValues']));_0x19caa8[_0xcebc('0x8e')](_0x2403f4('sms',_0x2fbb73[_0xcebc('0xb4')][_0x5406e3]['dataValues']));_0x19caa8['push'](_0x2403f4(_0xcebc('0xb8'),_0x2fbb73[_0xcebc('0xb4')][_0x5406e3][_0xcebc('0xb9')]));_0x19caa8['push'](_0x2403f4(_0xcebc('0xba'),_0x2fbb73[_0xcebc('0xb4')][_0x5406e3]['dataValues']));_0x19caa8['push'](_0x2403f4(_0xcebc('0xbb'),_0x2fbb73[_0xcebc('0xb4')][_0x5406e3]['dataValues']));_0x19caa8[_0xcebc('0x8e')](_0x2403f4(_0xcebc('0xbc'),_0x2fbb73[_0xcebc('0xb4')][_0x5406e3][_0xcebc('0xb9')]));}return Promise[_0xcebc('0x92')](_0x19caa8)[_0xcebc('0x7')](function(){return _0x2fbb73;});}return _0x2fbb73;});}});}}});};
\ No newline at end of file
index 38e3178..dd603b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a12=['client','http','redis','localhost','./userProfile.socket','request','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','UserProfile,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x45783c,_0x49c56d){var _0x1161da=function(_0x3c5d41){while(--_0x3c5d41){_0x45783c['push'](_0x45783c['shift']());}};_0x1161da(++_0x49c56d);}(_0x7a12,0xe8));var _0x27a1=function(_0x342f15,_0x55a3b2){_0x342f15=_0x342f15-0x0;var _0x2e02aa=_0x7a12[_0x342f15];return _0x2e02aa;};'use strict';var _=require(_0x27a1('0x0'));var util=require(_0x27a1('0x1'));var moment=require(_0x27a1('0x2'));var BPromise=require(_0x27a1('0x3'));var rs=require(_0x27a1('0x4'));var fs=require('fs');var Redis=require(_0x27a1('0x5'));var db=require(_0x27a1('0x6'))['db'];var utils=require(_0x27a1('0x7'));var logger=require('../../config/logger')(_0x27a1('0x8'));var config=require(_0x27a1('0x9'));var jayson=require(_0x27a1('0xa'));var client=jayson[_0x27a1('0xb')][_0x27a1('0xc')]({'port':0x232a});config[_0x27a1('0xd')]=_['defaults'](config[_0x27a1('0xd')],{'host':_0x27a1('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x27a1('0xd')]));require(_0x27a1('0xf'))['register'](socket);function respondWithRpcPromise(_0x468277,_0x32369d,_0xe469c8){return new BPromise(function(_0x56a122,_0x2cb05d){return client[_0x27a1('0x10')](_0x468277,_0xe469c8)[_0x27a1('0x11')](function(_0x3b4187){logger[_0x27a1('0x12')](_0x27a1('0x13'),_0x32369d,_0x27a1('0x14'));logger['debug'](_0x27a1('0x15'),_0x32369d,_0x27a1('0x14'),JSON[_0x27a1('0x16')](_0x3b4187));if(_0x3b4187[_0x27a1('0x17')]){if(_0x3b4187['error'][_0x27a1('0x18')]===0x1f4){logger[_0x27a1('0x17')]('UserProfile,\x20%s,\x20%s',_0x32369d,_0x3b4187['error'][_0x27a1('0x19')]);return _0x2cb05d(_0x3b4187[_0x27a1('0x17')]['message']);}logger[_0x27a1('0x17')](_0x27a1('0x13'),_0x32369d,_0x3b4187['error'][_0x27a1('0x19')]);return _0x56a122(_0x3b4187[_0x27a1('0x17')][_0x27a1('0x19')]);}else{logger[_0x27a1('0x12')]('UserProfile,\x20%s,\x20%s',_0x32369d,_0x27a1('0x14'));_0x56a122(_0x3b4187['result'][_0x27a1('0x19')]);}})[_0x27a1('0x1a')](function(_0x582c8a){logger[_0x27a1('0x17')](_0x27a1('0x13'),_0x32369d,_0x582c8a);_0x2cb05d(_0x582c8a);});});}
\ No newline at end of file
+var _0x6337=['http','defaults','localhost','socket.io-emitter','./userProfile.socket','request','then','UserProfile,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client'];(function(_0x1529a3,_0x529f63){var _0x1a0d4b=function(_0x6f1058){while(--_0x6f1058){_0x1529a3['push'](_0x1529a3['shift']());}};_0x1a0d4b(++_0x529f63);}(_0x6337,0x18a));var _0x7633=function(_0x35f7a1,_0x3262d8){_0x35f7a1=_0x35f7a1-0x0;var _0x3f81a5=_0x6337[_0x35f7a1];return _0x3f81a5;};'use strict';var _=require('lodash');var util=require(_0x7633('0x0'));var moment=require(_0x7633('0x1'));var BPromise=require(_0x7633('0x2'));var rs=require(_0x7633('0x3'));var fs=require('fs');var Redis=require(_0x7633('0x4'));var db=require(_0x7633('0x5'))['db'];var utils=require(_0x7633('0x6'));var logger=require(_0x7633('0x7'))(_0x7633('0x8'));var config=require('../../config/environment');var jayson=require(_0x7633('0x9'));var client=jayson[_0x7633('0xa')][_0x7633('0xb')]({'port':0x232a});config['redis']=_[_0x7633('0xc')](config['redis'],{'host':_0x7633('0xd'),'port':0x18eb});var socket=require(_0x7633('0xe'))(new Redis(config['redis']));require(_0x7633('0xf'))['register'](socket);function respondWithRpcPromise(_0x35a196,_0x4c0f0a,_0x174d9f){return new BPromise(function(_0x2404e4,_0x59e518){return client[_0x7633('0x10')](_0x35a196,_0x174d9f)[_0x7633('0x11')](function(_0x332283){logger['info'](_0x7633('0x12'),_0x4c0f0a,_0x7633('0x13'));logger[_0x7633('0x14')]('UserProfile,\x20%s,\x20%s,\x20%s',_0x4c0f0a,_0x7633('0x13'),JSON[_0x7633('0x15')](_0x332283));if(_0x332283[_0x7633('0x16')]){if(_0x332283['error']['code']===0x1f4){logger['error'](_0x7633('0x12'),_0x4c0f0a,_0x332283[_0x7633('0x16')][_0x7633('0x17')]);return _0x59e518(_0x332283[_0x7633('0x16')][_0x7633('0x17')]);}logger[_0x7633('0x16')](_0x7633('0x12'),_0x4c0f0a,_0x332283[_0x7633('0x16')][_0x7633('0x17')]);return _0x2404e4(_0x332283['error'][_0x7633('0x17')]);}else{logger[_0x7633('0x18')](_0x7633('0x12'),_0x4c0f0a,_0x7633('0x13'));_0x2404e4(_0x332283[_0x7633('0x19')]['message']);}})[_0x7633('0x1a')](function(_0x30b58b){logger[_0x7633('0x16')](_0x7633('0x12'),_0x4c0f0a,_0x30b58b);_0x59e518(_0x30b58b);});});}
\ No newline at end of file
index 3d87618..271fd21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb85=['remove','update','emit','removeListener','register','length','userProfile:','save'];(function(_0x35885a,_0x42fed7){var _0xe86249=function(_0x98edb3){while(--_0x98edb3){_0x35885a['push'](_0x35885a['shift']());}};_0xe86249(++_0x42fed7);}(_0xcb85,0x14f));var _0x5cb8=function(_0x2cd1fb,_0x291f55){_0x2cd1fb=_0x2cd1fb-0x0;var _0x48fd2b=_0xcb85[_0x2cd1fb];return _0x48fd2b;};'use strict';var UserProfileEvents=require('./userProfile.events');var events=[_0x5cb8('0x0'),_0x5cb8('0x1'),_0x5cb8('0x2')];function createListener(_0x11c913,_0x4de5e8){return function(_0x50651f){_0x4de5e8[_0x5cb8('0x3')](_0x11c913,_0x50651f);};}function removeListener(_0x16d064,_0x181412){return function(){UserProfileEvents[_0x5cb8('0x4')](_0x16d064,_0x181412);};}exports[_0x5cb8('0x5')]=function(_0x1209cf){for(var _0x7c21b9=0x0,_0x46a1a7=events[_0x5cb8('0x6')];_0x7c21b9<_0x46a1a7;_0x7c21b9++){var _0x3217a9=events[_0x7c21b9];var _0x392007=createListener(_0x5cb8('0x7')+_0x3217a9,_0x1209cf);UserProfileEvents['on'](_0x3217a9,_0x392007);}};
\ No newline at end of file
+var _0x05a1=['userProfile:','remove','update','removeListener','length'];(function(_0x595609,_0x4d56f3){var _0x3822ba=function(_0x54a3b0){while(--_0x54a3b0){_0x595609['push'](_0x595609['shift']());}};_0x3822ba(++_0x4d56f3);}(_0x05a1,0x1be));var _0x105a=function(_0x2e6423,_0x105855){_0x2e6423=_0x2e6423-0x0;var _0x207fcb=_0x05a1[_0x2e6423];return _0x207fcb;};'use strict';var UserProfileEvents=require('./userProfile.events');var events=['save',_0x105a('0x0'),_0x105a('0x1')];function createListener(_0x273854,_0x14b364){return function(_0x529641){_0x14b364['emit'](_0x273854,_0x529641);};}function removeListener(_0x30c077,_0xb42b77){return function(){UserProfileEvents[_0x105a('0x2')](_0x30c077,_0xb42b77);};}exports['register']=function(_0x175ff4){for(var _0x22d05c=0x0,_0x40f82a=events[_0x105a('0x3')];_0x22d05c<_0x40f82a;_0x22d05c++){var _0x3db648=events[_0x22d05c];var _0x7ae97c=createListener(_0x105a('0x4')+_0x3db648,_0x175ff4);UserProfileEvents['on'](_0x3db648,_0x7ae97c);}};
\ No newline at end of file
index fafa0fc..ce9256e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe6e=['describe','/:id','show','create','put','update','delete','destroy','multer','path','express','../../components/interaction/service','../../config/environment','./userProfileResource.controller','get','isAuthenticated','index','/describe'];(function(_0x2e7b4b,_0x10a619){var _0x4705a4=function(_0x277e57){while(--_0x277e57){_0x2e7b4b['push'](_0x2e7b4b['shift']());}};_0x4705a4(++_0x10a619);}(_0xbe6e,0xaa));var _0xebe6=function(_0xf552fe,_0x3ba1f4){_0xf552fe=_0xf552fe-0x0;var _0x139961=_0xbe6e[_0xf552fe];return _0x139961;};'use strict';var multer=require(_0xebe6('0x0'));var util=require('util');var path=require(_0xebe6('0x1'));var timeout=require('connect-timeout');var express=require(_0xebe6('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xebe6('0x3'));var config=require(_0xebe6('0x4'));var controller=require(_0xebe6('0x5'));router[_0xebe6('0x6')]('/',auth[_0xebe6('0x7')](),controller[_0xebe6('0x8')]);router[_0xebe6('0x6')](_0xebe6('0x9'),auth[_0xebe6('0x7')](),controller[_0xebe6('0xa')]);router[_0xebe6('0x6')](_0xebe6('0xb'),auth['isAuthenticated'](),controller[_0xebe6('0xc')]);router['post']('/',auth[_0xebe6('0x7')](),controller[_0xebe6('0xd')]);router[_0xebe6('0xe')](_0xebe6('0xb'),auth[_0xebe6('0x7')](),controller[_0xebe6('0xf')]);router[_0xebe6('0x10')]('/:id',auth[_0xebe6('0x7')](),controller[_0xebe6('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xdd9a=['describe','show','post','create','put','/:id','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./userProfileResource.controller','isAuthenticated','index','get','/describe'];(function(_0x36e950,_0x14b16c){var _0x564288=function(_0x46faa6){while(--_0x46faa6){_0x36e950['push'](_0x36e950['shift']());}};_0x564288(++_0x14b16c);}(_0xdd9a,0x1ac));var _0xadd9=function(_0x267575,_0x43c1d3){_0x267575=_0x267575-0x0;var _0x2af65f=_0xdd9a[_0x267575];return _0x2af65f;};'use strict';var multer=require(_0xadd9('0x0'));var util=require(_0xadd9('0x1'));var path=require(_0xadd9('0x2'));var timeout=require(_0xadd9('0x3'));var express=require(_0xadd9('0x4'));var router=express[_0xadd9('0x5')]();var fs_extra=require(_0xadd9('0x6'));var auth=require(_0xadd9('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xadd9('0x8'));router['get']('/',auth[_0xadd9('0x9')](),controller[_0xadd9('0xa')]);router[_0xadd9('0xb')](_0xadd9('0xc'),auth['isAuthenticated'](),controller[_0xadd9('0xd')]);router['get']('/:id',auth[_0xadd9('0x9')](),controller[_0xadd9('0xe')]);router[_0xadd9('0xf')]('/',auth['isAuthenticated'](),controller[_0xadd9('0x10')]);router[_0xadd9('0x11')](_0xadd9('0x12'),auth[_0xadd9('0x9')](),controller['update']);router['delete'](_0xadd9('0x12'),auth['isAuthenticated'](),controller[_0xadd9('0x13')]);module[_0xadd9('0x14')]=router;
\ No newline at end of file
index 7392e48..a3a7c32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x304e=['exports','STRING','sequelize'];(function(_0x1f45e5,_0x568b84){var _0xcb83ff=function(_0x2b294a){while(--_0x2b294a){_0x1f45e5['push'](_0x1f45e5['shift']());}};_0xcb83ff(++_0x568b84);}(_0x304e,0xcb));var _0xe304=function(_0x1d0dee,_0x2566ab){_0x1d0dee=_0x1d0dee-0x0;var _0x38549f=_0x304e[_0x1d0dee];return _0x38549f;};'use strict';var Sequelize=require(_0xe304('0x0'));module[_0xe304('0x1')]={'name':{'type':Sequelize[_0xe304('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize['INTEGER'],'allowNull':![]},'type':{'type':Sequelize[_0xe304('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x3b41=['sequelize','exports','STRING','INTEGER'];(function(_0x59d15f,_0x130cef){var _0x2a1ceb=function(_0x20a5a2){while(--_0x20a5a2){_0x59d15f['push'](_0x59d15f['shift']());}};_0x2a1ceb(++_0x130cef);}(_0x3b41,0x170));var _0x13b4=function(_0x3e5f6a,_0x2cc60f){_0x3e5f6a=_0x3e5f6a-0x0;var _0xdad7f3=_0x3b41[_0x3e5f6a];return _0xdad7f3;};'use strict';var Sequelize=require(_0x13b4('0x0'));module[_0x13b4('0x1')]={'name':{'type':Sequelize[_0x13b4('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x13b4('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0x13b4('0x2')],'allowNull':![]}};
\ No newline at end of file
index 0255f6d..ffcc565 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4137=['key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','show','params','includeAll','options','find','catch','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','status','json','offset','limit','count','set','apply','reject','save','update','destroy','then','end','sendStatus','error','name','send','index','map','UserProfileResource','rawAttributes','type'];(function(_0x34021d,_0x753aa6){var _0x16597b=function(_0x2d040a){while(--_0x2d040a){_0x34021d['push'](_0x34021d['shift']());}};_0x16597b(++_0x753aa6);}(_0x4137,0xf8));var _0x7413=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0x4137[_0x27af45];return _0x18df21;};'use strict';var emlformat=require(_0x7413('0x0'));var rimraf=require(_0x7413('0x1'));var zipdir=require(_0x7413('0x2'));var jsonpatch=require(_0x7413('0x3'));var rp=require(_0x7413('0x4'));var moment=require(_0x7413('0x5'));var BPromise=require(_0x7413('0x6'));var Mustache=require(_0x7413('0x7'));var util=require(_0x7413('0x8'));var path=require(_0x7413('0x9'));var sox=require(_0x7413('0xa'));var csv=require(_0x7413('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7413('0xc'));var _=require(_0x7413('0xd'));var squel=require(_0x7413('0xe'));var crypto=require(_0x7413('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x7413('0x10'));var toCsv=require(_0x7413('0xb'));var querystring=require('querystring');var Papa=require(_0x7413('0x11'));var Redis=require(_0x7413('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x7413('0x13'));var as=require(_0x7413('0x14'));var hardwareService=require(_0x7413('0x15'));var logger=require(_0x7413('0x16'))(_0x7413('0x17'));var utils=require('../../config/utils');var config=require(_0x7413('0x18'));var licenseUtil=require(_0x7413('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x18a874,_0xa26ca4){_0xa26ca4=_0xa26ca4||0xcc;return function(_0x13e6bd){if(_0x13e6bd){return _0x18a874['sendStatus'](_0xa26ca4);}return _0x18a874['status'](_0xa26ca4)['end']();};}function respondWithResult(_0x2267f6,_0x336c4c){_0x336c4c=_0x336c4c||0xc8;return function(_0x49f0f6){if(_0x49f0f6){return _0x2267f6[_0x7413('0x1a')](_0x336c4c)[_0x7413('0x1b')](_0x49f0f6);}};}function respondWithFilteredResult(_0x4955d3,_0x38b3d1){return function(_0x50f301){if(_0x50f301){var _0x4b9a5b=typeof _0x38b3d1[_0x7413('0x1c')]==='undefined'&&typeof _0x38b3d1[_0x7413('0x1d')]==='undefined';var _0x2036b6=_0x50f301[_0x7413('0x1e')];var _0x19157f=_0x4b9a5b?0x0:_0x38b3d1[_0x7413('0x1c')];var _0x2a3417=_0x4b9a5b?_0x50f301[_0x7413('0x1e')]:_0x38b3d1['offset']+_0x38b3d1[_0x7413('0x1d')];var _0x17c062;if(_0x2a3417>=_0x2036b6){_0x2a3417=_0x2036b6;_0x17c062=0xc8;}else{_0x17c062=0xce;}_0x4955d3[_0x7413('0x1a')](_0x17c062);return _0x4955d3[_0x7413('0x1f')]('Content-Range',_0x19157f+'-'+_0x2a3417+'/'+_0x2036b6)[_0x7413('0x1b')](_0x50f301);}return null;};}function patchUpdates(_0x12d94d){return function(_0x206afc){try{jsonpatch[_0x7413('0x20')](_0x206afc,_0x12d94d,!![]);}catch(_0x409392){return BPromise[_0x7413('0x21')](_0x409392);}return _0x206afc[_0x7413('0x22')]();};}function saveUpdates(_0x4e18cb,_0x56a06a){return function(_0x5f12a2){if(_0x5f12a2){return _0x5f12a2[_0x7413('0x23')](_0x4e18cb)['then'](function(_0x1585ba){return _0x1585ba;});}return null;};}function removeEntity(_0x372944,_0x3b0c81){return function(_0x2fc0f4){if(_0x2fc0f4){return _0x2fc0f4[_0x7413('0x24')]()[_0x7413('0x25')](function(){_0x372944[_0x7413('0x1a')](0xcc)[_0x7413('0x26')]();});}};}function handleEntityNotFound(_0x1d455b,_0x5a8329){return function(_0x5cb15f){if(!_0x5cb15f){_0x1d455b[_0x7413('0x27')](0x194);}return _0x5cb15f;};}function handleError(_0x48c2dc,_0x46c895){_0x46c895=_0x46c895||0x1f4;return function(_0x71cbb4){logger[_0x7413('0x28')](_0x71cbb4['stack']);if(_0x71cbb4[_0x7413('0x29')]){delete _0x71cbb4[_0x7413('0x29')];}_0x48c2dc[_0x7413('0x1a')](_0x46c895)[_0x7413('0x2a')](_0x71cbb4);};}exports[_0x7413('0x2b')]=function(_0x2e521f,_0x5eb4d9){var _0x24dce7={},_0x4ed662={},_0x1d0bde={'count':0x0,'rows':[]};var _0x23e682=_[_0x7413('0x2c')](db[_0x7413('0x2d')][_0x7413('0x2e')],function(_0x2004ea){return{'name':_0x2004ea['fieldName'],'type':_0x2004ea[_0x7413('0x2f')][_0x7413('0x30')]};});_0x4ed662[_0x7413('0x31')]=_[_0x7413('0x2c')](_0x23e682,_0x7413('0x29'));_0x4ed662[_0x7413('0x32')]=_[_0x7413('0x33')](_0x2e521f['query']);_0x4ed662[_0x7413('0x34')]=_[_0x7413('0x35')](_0x4ed662[_0x7413('0x31')],_0x4ed662[_0x7413('0x32')]);_0x24dce7[_0x7413('0x36')]=_['intersection'](_0x4ed662[_0x7413('0x31')],qs['fields'](_0x2e521f[_0x7413('0x32')][_0x7413('0x37')]));_0x24dce7[_0x7413('0x36')]=_0x24dce7['attributes'][_0x7413('0x38')]?_0x24dce7['attributes']:_0x4ed662[_0x7413('0x31')];if(!_0x2e521f[_0x7413('0x32')]['hasOwnProperty']('nolimit')){_0x24dce7[_0x7413('0x1d')]=qs[_0x7413('0x1d')](_0x2e521f[_0x7413('0x32')]['limit']);_0x24dce7['offset']=qs[_0x7413('0x1c')](_0x2e521f['query']['offset']);}_0x24dce7[_0x7413('0x39')]=qs['sort'](_0x2e521f[_0x7413('0x32')][_0x7413('0x3a')]);_0x24dce7[_0x7413('0x3b')]=qs[_0x7413('0x34')](_[_0x7413('0x3c')](_0x2e521f['query'],_0x4ed662[_0x7413('0x34')]),_0x23e682);if(_0x2e521f[_0x7413('0x32')][_0x7413('0x3d')]){_0x24dce7[_0x7413('0x3b')]=_[_0x7413('0x3e')](_0x24dce7[_0x7413('0x3b')],{'$or':_[_0x7413('0x2c')](_0x23e682,function(_0x385156){if(_0x385156[_0x7413('0x2f')]!==_0x7413('0x3f')){var _0x5c03eb={};_0x5c03eb[_0x385156[_0x7413('0x29')]]={'$like':'%'+_0x2e521f['query'][_0x7413('0x3d')]+'%'};return _0x5c03eb;}})});}_0x24dce7=_['merge']({},_0x24dce7,_0x2e521f['options']);var _0x5b592c={'where':_0x24dce7['where']};return db['UserProfileResource'][_0x7413('0x1e')](_0x5b592c)['then'](function(_0x535e49){_0x1d0bde[_0x7413('0x1e')]=_0x535e49;if(_0x2e521f['query']['includeAll']){_0x24dce7[_0x7413('0x40')]=[{'all':!![]}];}return db[_0x7413('0x2d')][_0x7413('0x41')](_0x24dce7);})[_0x7413('0x25')](function(_0x8049c0){_0x1d0bde['rows']=_0x8049c0;return _0x1d0bde;})[_0x7413('0x25')](respondWithFilteredResult(_0x5eb4d9,_0x24dce7))['catch'](handleError(_0x5eb4d9,null));};exports[_0x7413('0x42')]=function(_0x1d8219,_0xa063d1){var _0xfe0daa={'raw':![],'where':{'id':_0x1d8219[_0x7413('0x43')]['id']}},_0x3f7da2={};_0x3f7da2[_0x7413('0x31')]=_[_0x7413('0x33')](db[_0x7413('0x2d')][_0x7413('0x2e')]);_0x3f7da2[_0x7413('0x32')]=_[_0x7413('0x33')](_0x1d8219[_0x7413('0x32')]);_0x3f7da2['filters']=_[_0x7413('0x35')](_0x3f7da2[_0x7413('0x31')],_0x3f7da2[_0x7413('0x32')]);_0xfe0daa[_0x7413('0x36')]=_[_0x7413('0x35')](_0x3f7da2[_0x7413('0x31')],qs[_0x7413('0x37')](_0x1d8219[_0x7413('0x32')][_0x7413('0x37')]));_0xfe0daa[_0x7413('0x36')]=_0xfe0daa[_0x7413('0x36')]['length']?_0xfe0daa[_0x7413('0x36')]:_0x3f7da2['model'];if(_0x1d8219[_0x7413('0x32')][_0x7413('0x44')]){_0xfe0daa[_0x7413('0x40')]=[{'all':!![]}];}_0xfe0daa=_[_0x7413('0x3e')]({},_0xfe0daa,_0x1d8219[_0x7413('0x45')]);return db[_0x7413('0x2d')][_0x7413('0x46')](_0xfe0daa)[_0x7413('0x25')](handleEntityNotFound(_0xa063d1,null))[_0x7413('0x25')](respondWithResult(_0xa063d1,null))[_0x7413('0x47')](handleError(_0xa063d1,null));};exports['create']=function(_0x513657,_0x3c1f1a){return db['UserProfileResource']['create'](_0x513657[_0x7413('0x48')],{})[_0x7413('0x25')](respondWithResult(_0x3c1f1a,0xc9))['catch'](handleError(_0x3c1f1a,null));};exports[_0x7413('0x23')]=function(_0x586d25,_0x562bae){if(_0x586d25[_0x7413('0x48')]['id']){delete _0x586d25['body']['id'];}return db[_0x7413('0x2d')][_0x7413('0x46')]({'where':{'id':_0x586d25[_0x7413('0x43')]['id']}})[_0x7413('0x25')](handleEntityNotFound(_0x562bae,null))[_0x7413('0x25')](saveUpdates(_0x586d25[_0x7413('0x48')],null))[_0x7413('0x25')](respondWithResult(_0x562bae,null))[_0x7413('0x47')](handleError(_0x562bae,null));};exports[_0x7413('0x24')]=function(_0x2031e3,_0x50a27d){return db[_0x7413('0x2d')]['find']({'where':{'id':_0x2031e3['params']['id']}})['then'](handleEntityNotFound(_0x50a27d,null))[_0x7413('0x25')](removeEntity(_0x50a27d,null))[_0x7413('0x47')](handleError(_0x50a27d,null));};exports[_0x7413('0x49')]=function(_0x1ba4e9,_0x4bc337){return db['UserProfileResource'][_0x7413('0x49')]()['then'](respondWithResult(_0x4bc337,null))[_0x7413('0x47')](handleError(_0x4bc337,null));};
\ No newline at end of file
+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(_0x4ea6af,_0x4aa32e){var _0x4cb1e6=function(_0xc9edd0){while(--_0xc9edd0){_0x4ea6af['push'](_0x4ea6af['shift']());}};_0x4cb1e6(++_0x4aa32e);}(_0xba34,0x119));var _0x4ba3=function(_0x30a462,_0x36f4b9){_0x30a462=_0x30a462-0x0;var _0x349782=_0xba34[_0x30a462];return _0x349782;};'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
index 2263a67..c6bb6c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97aa=['resourceId','sectionId','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./userProfileResource.attributes','exports','define','UserProfileResource','compositeIndex'];(function(_0x6eb0b8,_0x45bb91){var _0x295a00=function(_0x2de68e){while(--_0x2de68e){_0x6eb0b8['push'](_0x6eb0b8['shift']());}};_0x295a00(++_0x45bb91);}(_0x97aa,0x7a));var _0xa97a=function(_0x565c79,_0x13391b){_0x565c79=_0x565c79-0x0;var _0x492b07=_0x97aa[_0x565c79];return _0x492b07;};'use strict';var _=require(_0xa97a('0x0'));var util=require(_0xa97a('0x1'));var logger=require(_0xa97a('0x2'))('api');var moment=require(_0xa97a('0x3'));var BPromise=require(_0xa97a('0x4'));var rp=require(_0xa97a('0x5'));var fs=require('fs');var path=require(_0xa97a('0x6'));var rimraf=require(_0xa97a('0x7'));var config=require('../../config/environment');var attributes=require(_0xa97a('0x8'));module[_0xa97a('0x9')]=function(_0x3066e1,_0x495809){return _0x3066e1[_0xa97a('0xa')](_0xa97a('0xb'),attributes,{'tableName':'user_profile_has_resources','paranoid':![],'indexes':[{'name':_0xa97a('0xc'),'fields':[_0xa97a('0xd'),_0xa97a('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd480=['sectionId','lodash','util','../../config/logger','moment','bluebird','../../config/environment','./userProfileResource.attributes','exports','UserProfileResource','user_profile_has_resources','compositeIndex','resourceId'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xd480,0xc4));var _0x0d48=function(_0x391c17,_0x5732c7){_0x391c17=_0x391c17-0x0;var _0xa71554=_0xd480[_0x391c17];return _0xa71554;};'use strict';var _=require(_0x0d48('0x0'));var util=require(_0x0d48('0x1'));var logger=require(_0x0d48('0x2'))('api');var moment=require(_0x0d48('0x3'));var BPromise=require(_0x0d48('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x0d48('0x5'));var attributes=require(_0x0d48('0x6'));module[_0x0d48('0x7')]=function(_0x358c10,_0x4cc212){return _0x358c10['define'](_0x0d48('0x8'),attributes,{'tableName':_0x0d48('0x9'),'paranoid':![],'indexes':[{'name':_0x0d48('0xa'),'fields':[_0x0d48('0xb'),_0x0d48('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index c2ddf0f..bd8a53d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeeb9=['../../config/logger','../../config/environment','jayson/promise','http','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','lodash','util','moment','bluebird','randomstring','../../mysqldb'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xeeb9,0xde));var _0x9eeb=function(_0x5299c3,_0x140d7a){_0x5299c3=_0x5299c3-0x0;var _0x2f6dd1=_0xeeb9[_0x5299c3];return _0x2f6dd1;};'use strict';var _=require(_0x9eeb('0x0'));var util=require(_0x9eeb('0x1'));var moment=require(_0x9eeb('0x2'));var BPromise=require(_0x9eeb('0x3'));var rs=require(_0x9eeb('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9eeb('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x9eeb('0x6'))('rpc');var config=require(_0x9eeb('0x7'));var jayson=require(_0x9eeb('0x8'));var client=jayson['client'][_0x9eeb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3ce192,_0x46d666,_0x26d278){return new BPromise(function(_0x4e9440,_0x4c922b){return client['request'](_0x3ce192,_0x26d278)[_0x9eeb('0xa')](function(_0x589c56){logger[_0x9eeb('0xb')](_0x9eeb('0xc'),_0x46d666,_0x9eeb('0xd'));logger[_0x9eeb('0xe')]('UserProfileResource,\x20%s,\x20%s,\x20%s',_0x46d666,_0x9eeb('0xd'),JSON[_0x9eeb('0xf')](_0x589c56));if(_0x589c56['error']){if(_0x589c56[_0x9eeb('0x10')]['code']===0x1f4){logger[_0x9eeb('0x10')](_0x9eeb('0xc'),_0x46d666,_0x589c56[_0x9eeb('0x10')][_0x9eeb('0x11')]);return _0x4c922b(_0x589c56['error'][_0x9eeb('0x11')]);}logger[_0x9eeb('0x10')](_0x9eeb('0xc'),_0x46d666,_0x589c56['error'][_0x9eeb('0x11')]);return _0x4e9440(_0x589c56['error']['message']);}else{logger['info']('UserProfileResource,\x20%s,\x20%s',_0x46d666,_0x9eeb('0xd'));_0x4e9440(_0x589c56[_0x9eeb('0x12')][_0x9eeb('0x11')]);}})['catch'](function(_0xf38281){logger[_0x9eeb('0x10')]('UserProfileResource,\x20%s,\x20%s',_0x46d666,_0xf38281);_0x4c922b(_0xf38281);});});}
\ No newline at end of file
+var _0x6582=['lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','client','http','request','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','error','code','message','result','catch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6582,0x108));var _0x2658=function(_0x2f54b6,_0x3cc6cb){_0x2f54b6=_0x2f54b6-0x0;var _0x169f21=_0x6582[_0x2f54b6];return _0x169f21;};'use strict';var _=require(_0x2658('0x0'));var util=require(_0x2658('0x1'));var moment=require(_0x2658('0x2'));var BPromise=require(_0x2658('0x3'));var rs=require(_0x2658('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2658('0x5'))['db'];var utils=require(_0x2658('0x6'));var logger=require(_0x2658('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x2658('0x8')][_0x2658('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2cb94f,_0x3f53e7,_0x443df){return new BPromise(function(_0x412a9f,_0x52ef38){return client[_0x2658('0xa')](_0x2cb94f,_0x443df)[_0x2658('0xb')](function(_0x426744){logger[_0x2658('0xc')](_0x2658('0xd'),_0x3f53e7,_0x2658('0xe'));logger[_0x2658('0xf')](_0x2658('0x10'),_0x3f53e7,_0x2658('0xe'),JSON['stringify'](_0x426744));if(_0x426744[_0x2658('0x11')]){if(_0x426744['error'][_0x2658('0x12')]===0x1f4){logger[_0x2658('0x11')](_0x2658('0xd'),_0x3f53e7,_0x426744[_0x2658('0x11')][_0x2658('0x13')]);return _0x52ef38(_0x426744[_0x2658('0x11')][_0x2658('0x13')]);}logger['error'](_0x2658('0xd'),_0x3f53e7,_0x426744[_0x2658('0x11')][_0x2658('0x13')]);return _0x412a9f(_0x426744[_0x2658('0x11')][_0x2658('0x13')]);}else{logger['info'](_0x2658('0xd'),_0x3f53e7,_0x2658('0xe'));_0x412a9f(_0x426744[_0x2658('0x14')]['message']);}})[_0x2658('0x15')](function(_0x44c6d2){logger[_0x2658('0x11')](_0x2658('0xd'),_0x3f53e7,_0x44c6d2);_0x52ef38(_0x44c6d2);});});}
\ No newline at end of file
index 49088e1..b66e2e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29a6=['show','post','put','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileSection.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x49e5b8,_0x16a99a){var _0x7a6277=function(_0x2adca3){while(--_0x2adca3){_0x49e5b8['push'](_0x49e5b8['shift']());}};_0x7a6277(++_0x16a99a);}(_0x29a6,0x1ec));var _0x629a=function(_0xb4a2fe,_0x4219c1){_0xb4a2fe=_0xb4a2fe-0x0;var _0x2a41ab=_0x29a6[_0xb4a2fe];return _0x2a41ab;};'use strict';var multer=require('multer');var util=require(_0x629a('0x0'));var path=require(_0x629a('0x1'));var timeout=require(_0x629a('0x2'));var express=require(_0x629a('0x3'));var router=express[_0x629a('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x629a('0x5'));var interaction=require(_0x629a('0x6'));var config=require(_0x629a('0x7'));var controller=require(_0x629a('0x8'));router[_0x629a('0x9')]('/',auth[_0x629a('0xa')](),controller[_0x629a('0xb')]);router['get'](_0x629a('0xc'),auth['isAuthenticated'](),controller[_0x629a('0xd')]);router['get']('/:id',auth[_0x629a('0xa')](),controller[_0x629a('0xe')]);router[_0x629a('0xf')]('/',auth[_0x629a('0xa')](),controller['create']);router[_0x629a('0x10')](_0x629a('0x11'),auth['isAuthenticated'](),controller[_0x629a('0x12')]);router[_0x629a('0x13')](_0x629a('0x11'),auth['isAuthenticated'](),controller[_0x629a('0x14')]);module[_0x629a('0x15')]=router;
\ No newline at end of file
+var _0x798b=['../../config/environment','./userProfileSection.controller','isAuthenticated','index','get','/describe','describe','/:id','show','create','put','update','delete','destroy','exports','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x4ce028,_0x526d4b){var _0x583d0c=function(_0x874178){while(--_0x874178){_0x4ce028['push'](_0x4ce028['shift']());}};_0x583d0c(++_0x526d4b);}(_0x798b,0x174));var _0xb798=function(_0x11b459,_0x140101){_0x11b459=_0x11b459-0x0;var _0x55cfae=_0x798b[_0x11b459];return _0x55cfae;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xb798('0x0'));var timeout=require(_0xb798('0x1'));var express=require(_0xb798('0x2'));var router=express['Router']();var fs_extra=require(_0xb798('0x3'));var auth=require(_0xb798('0x4'));var interaction=require(_0xb798('0x5'));var config=require(_0xb798('0x6'));var controller=require(_0xb798('0x7'));router['get']('/',auth[_0xb798('0x8')](),controller[_0xb798('0x9')]);router[_0xb798('0xa')](_0xb798('0xb'),auth[_0xb798('0x8')](),controller[_0xb798('0xc')]);router[_0xb798('0xa')](_0xb798('0xd'),auth['isAuthenticated'](),controller[_0xb798('0xe')]);router['post']('/',auth[_0xb798('0x8')](),controller[_0xb798('0xf')]);router[_0xb798('0x10')]('/:id',auth[_0xb798('0x8')](),controller[_0xb798('0x11')]);router[_0xb798('0x12')](_0xb798('0xd'),auth[_0xb798('0x8')](),controller[_0xb798('0x13')]);module[_0xb798('0x14')]=router;
\ No newline at end of file
index ba01ad9..739e1d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe511=['exports','STRING','BOOLEAN','setDataValue','crudPermissions','join','getDataValue','sequelize'];(function(_0x4fbea8,_0x1e7b4a){var _0x3e00ba=function(_0x25e283){while(--_0x25e283){_0x4fbea8['push'](_0x4fbea8['shift']());}};_0x3e00ba(++_0x1e7b4a);}(_0xe511,0x16f));var _0x1e51=function(_0x5e6116,_0x4bae08){_0x5e6116=_0x5e6116-0x0;var _0x29bf86=_0xe511[_0x5e6116];return _0x29bf86;};'use strict';var Sequelize=require(_0x1e51('0x0'));module[_0x1e51('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize[_0x1e51('0x2')],'allowNull':![]},'sectionId':{'type':Sequelize['INTEGER'],'allowNull':![]},'enabled':{'type':Sequelize[_0x1e51('0x3')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x1e51('0x3')],'defaultValue':null},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x42e242){this[_0x1e51('0x4')](_0x1e51('0x5'),_0x42e242?_0x42e242[_0x1e51('0x6')](''):[]);},'get':function(){return this['getDataValue'](_0x1e51('0x5'))?this[_0x1e51('0x7')]('crudPermissions')['split'](''):[];}}};
\ No newline at end of file
+var _0xbc9d=['sequelize','exports','STRING','INTEGER','setDataValue','crudPermissions','join','getDataValue','split'];(function(_0x2d92cf,_0x434a92){var _0x592841=function(_0x4e5c22){while(--_0x4e5c22){_0x2d92cf['push'](_0x2d92cf['shift']());}};_0x592841(++_0x434a92);}(_0xbc9d,0xb4));var _0xdbc9=function(_0x4441c9,_0x264016){_0x4441c9=_0x4441c9-0x0;var _0x2e8e32=_0xbc9d[_0x4441c9];return _0x2e8e32;};'use strict';var Sequelize=require(_0xdbc9('0x0'));module[_0xdbc9('0x1')]={'name':{'type':Sequelize[_0xdbc9('0x2')],'allowNull':![]},'category':{'type':Sequelize[_0xdbc9('0x2')],'allowNull':![]},'sectionId':{'type':Sequelize[_0xdbc9('0x3')],'allowNull':![]},'enabled':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'autoAssociation':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x2aba48){this[_0xdbc9('0x4')](_0xdbc9('0x5'),_0x2aba48?_0x2aba48[_0xdbc9('0x6')](''):[]);},'get':function(){return this[_0xdbc9('0x7')](_0xdbc9('0x5'))?this[_0xdbc9('0x7')]('crudPermissions')[_0xdbc9('0x8')](''):[];}}};
\ No newline at end of file
index e68c435..d9acf74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ddd=['zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','UserProfileSection','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','VIRTUAL','merge','options','includeAll','findAll','rows','params','find','create','catch','body','describe','eml-format','rimraf'];(function(_0xb859dd,_0x2b7bda){var _0x331bc6=function(_0x2d33cb){while(--_0x2d33cb){_0xb859dd['push'](_0xb859dd['shift']());}};_0x331bc6(++_0x2b7bda);}(_0x5ddd,0x94));var _0xd5dd=function(_0x11a287,_0x57df55){_0x11a287=_0x11a287-0x0;var _0x111e64=_0x5ddd[_0x11a287];return _0x111e64;};'use strict';var emlformat=require(_0xd5dd('0x0'));var rimraf=require(_0xd5dd('0x1'));var zipdir=require(_0xd5dd('0x2'));var jsonpatch=require(_0xd5dd('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xd5dd('0x4'));var Mustache=require(_0xd5dd('0x5'));var util=require(_0xd5dd('0x6'));var path=require(_0xd5dd('0x7'));var sox=require(_0xd5dd('0x8'));var csv=require(_0xd5dd('0x9'));var ejs=require(_0xd5dd('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd5dd('0xb'));var squel=require(_0xd5dd('0xc'));var crypto=require(_0xd5dd('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xd5dd('0xe'));var toCsv=require(_0xd5dd('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd5dd('0xf'));var authService=require(_0xd5dd('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xd5dd('0x11'));var hardwareService=require(_0xd5dd('0x12'));var logger=require(_0xd5dd('0x13'))(_0xd5dd('0x14'));var utils=require(_0xd5dd('0x15'));var config=require(_0xd5dd('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xd5dd('0x17'))['db'];function respondWithStatusCode(_0x351c68,_0x2c6011){_0x2c6011=_0x2c6011||0xcc;return function(_0x1d7d17){if(_0x1d7d17){return _0x351c68[_0xd5dd('0x18')](_0x2c6011);}return _0x351c68[_0xd5dd('0x19')](_0x2c6011)[_0xd5dd('0x1a')]();};}function respondWithResult(_0x30f05f,_0x222c33){_0x222c33=_0x222c33||0xc8;return function(_0x1cae46){if(_0x1cae46){return _0x30f05f[_0xd5dd('0x19')](_0x222c33)[_0xd5dd('0x1b')](_0x1cae46);}};}function respondWithFilteredResult(_0x1d36e9,_0x44202d){return function(_0x27b62c){if(_0x27b62c){var _0x26c6e5=typeof _0x44202d[_0xd5dd('0x1c')]===_0xd5dd('0x1d')&&typeof _0x44202d[_0xd5dd('0x1e')]===_0xd5dd('0x1d');var _0x794d12=_0x27b62c[_0xd5dd('0x1f')];var _0x3a5605=_0x26c6e5?0x0:_0x44202d[_0xd5dd('0x1c')];var _0x1d84d4=_0x26c6e5?_0x27b62c[_0xd5dd('0x1f')]:_0x44202d[_0xd5dd('0x1c')]+_0x44202d[_0xd5dd('0x1e')];var _0xff90d2;if(_0x1d84d4>=_0x794d12){_0x1d84d4=_0x794d12;_0xff90d2=0xc8;}else{_0xff90d2=0xce;}_0x1d36e9[_0xd5dd('0x19')](_0xff90d2);return _0x1d36e9[_0xd5dd('0x20')](_0xd5dd('0x21'),_0x3a5605+'-'+_0x1d84d4+'/'+_0x794d12)[_0xd5dd('0x1b')](_0x27b62c);}return null;};}function patchUpdates(_0x451ea4){return function(_0xad670f){try{jsonpatch[_0xd5dd('0x22')](_0xad670f,_0x451ea4,!![]);}catch(_0x1c32b0){return BPromise[_0xd5dd('0x23')](_0x1c32b0);}return _0xad670f[_0xd5dd('0x24')]();};}function saveUpdates(_0x4739ba,_0xfd81db){return function(_0x222177){if(_0x222177){return _0x222177[_0xd5dd('0x25')](_0x4739ba)[_0xd5dd('0x26')](function(_0x2e8718){return _0x2e8718;});}return null;};}function removeEntity(_0x4fc7f7,_0x19fe61){return function(_0x3e2001){if(_0x3e2001){return _0x3e2001[_0xd5dd('0x27')]()['then'](function(){_0x4fc7f7[_0xd5dd('0x19')](0xcc)[_0xd5dd('0x1a')]();});}};}function handleEntityNotFound(_0x3dac6b,_0x2ff91a){return function(_0x1b2f21){if(!_0x1b2f21){_0x3dac6b['sendStatus'](0x194);}return _0x1b2f21;};}function handleError(_0xaa14f1,_0x2ce9b0){_0x2ce9b0=_0x2ce9b0||0x1f4;return function(_0x440bc6){logger[_0xd5dd('0x28')](_0x440bc6[_0xd5dd('0x29')]);if(_0x440bc6[_0xd5dd('0x2a')]){delete _0x440bc6[_0xd5dd('0x2a')];}_0xaa14f1[_0xd5dd('0x19')](_0x2ce9b0)[_0xd5dd('0x2b')](_0x440bc6);};}exports['index']=function(_0x3c4481,_0x235ae6){var _0xfbc015={},_0x52e837={},_0x22b93a={'count':0x0,'rows':[]};var _0x5b8b06=_[_0xd5dd('0x2c')](db[_0xd5dd('0x2d')][_0xd5dd('0x2e')],function(_0x698c6d){return{'name':_0x698c6d[_0xd5dd('0x2f')],'type':_0x698c6d[_0xd5dd('0x30')]['key']};});_0x52e837[_0xd5dd('0x31')]=_[_0xd5dd('0x2c')](_0x5b8b06,'name');_0x52e837[_0xd5dd('0x32')]=_[_0xd5dd('0x33')](_0x3c4481[_0xd5dd('0x32')]);_0x52e837['filters']=_[_0xd5dd('0x34')](_0x52e837[_0xd5dd('0x31')],_0x52e837['query']);_0xfbc015[_0xd5dd('0x35')]=_[_0xd5dd('0x34')](_0x52e837[_0xd5dd('0x31')],qs['fields'](_0x3c4481[_0xd5dd('0x32')][_0xd5dd('0x36')]));_0xfbc015[_0xd5dd('0x35')]=_0xfbc015[_0xd5dd('0x35')][_0xd5dd('0x37')]?_0xfbc015[_0xd5dd('0x35')]:_0x52e837['model'];if(!_0x3c4481['query'][_0xd5dd('0x38')](_0xd5dd('0x39'))){_0xfbc015[_0xd5dd('0x1e')]=qs[_0xd5dd('0x1e')](_0x3c4481[_0xd5dd('0x32')][_0xd5dd('0x1e')]);_0xfbc015['offset']=qs[_0xd5dd('0x1c')](_0x3c4481[_0xd5dd('0x32')]['offset']);}_0xfbc015[_0xd5dd('0x3a')]=qs['sort'](_0x3c4481[_0xd5dd('0x32')][_0xd5dd('0x3b')]);_0xfbc015[_0xd5dd('0x3c')]=qs[_0xd5dd('0x3d')](_['pick'](_0x3c4481[_0xd5dd('0x32')],_0x52e837[_0xd5dd('0x3d')]),_0x5b8b06);if(_0x3c4481[_0xd5dd('0x32')][_0xd5dd('0x3e')]){_0xfbc015[_0xd5dd('0x3c')]=_['merge'](_0xfbc015[_0xd5dd('0x3c')],{'$or':_[_0xd5dd('0x2c')](_0x5b8b06,function(_0x316c12){if(_0x316c12['type']!==_0xd5dd('0x3f')){var _0x4729e2={};_0x4729e2[_0x316c12['name']]={'$like':'%'+_0x3c4481['query'][_0xd5dd('0x3e')]+'%'};return _0x4729e2;}})});}_0xfbc015=_[_0xd5dd('0x40')]({},_0xfbc015,_0x3c4481[_0xd5dd('0x41')]);var _0xd20e3d={'where':_0xfbc015[_0xd5dd('0x3c')]};return db[_0xd5dd('0x2d')]['count'](_0xd20e3d)['then'](function(_0x4f463c){_0x22b93a[_0xd5dd('0x1f')]=_0x4f463c;if(_0x3c4481[_0xd5dd('0x32')][_0xd5dd('0x42')]){_0xfbc015['include']=[{'all':!![]}];}return db['UserProfileSection'][_0xd5dd('0x43')](_0xfbc015);})[_0xd5dd('0x26')](function(_0xb0acad){_0x22b93a[_0xd5dd('0x44')]=_0xb0acad;return _0x22b93a;})['then'](respondWithFilteredResult(_0x235ae6,_0xfbc015))['catch'](handleError(_0x235ae6,null));};exports['show']=function(_0xa6ea74,_0x28ec8c){var _0x416976={'raw':![],'where':{'id':_0xa6ea74[_0xd5dd('0x45')]['id']}},_0x5634be={};_0x5634be[_0xd5dd('0x31')]=_[_0xd5dd('0x33')](db[_0xd5dd('0x2d')][_0xd5dd('0x2e')]);_0x5634be['query']=_['keys'](_0xa6ea74['query']);_0x5634be[_0xd5dd('0x3d')]=_[_0xd5dd('0x34')](_0x5634be[_0xd5dd('0x31')],_0x5634be[_0xd5dd('0x32')]);_0x416976[_0xd5dd('0x35')]=_[_0xd5dd('0x34')](_0x5634be['model'],qs['fields'](_0xa6ea74['query'][_0xd5dd('0x36')]));_0x416976[_0xd5dd('0x35')]=_0x416976['attributes'][_0xd5dd('0x37')]?_0x416976['attributes']:_0x5634be['model'];if(_0xa6ea74['query'][_0xd5dd('0x42')]){_0x416976['include']=[{'all':!![]}];}_0x416976=_[_0xd5dd('0x40')]({},_0x416976,_0xa6ea74['options']);return db[_0xd5dd('0x2d')][_0xd5dd('0x46')](_0x416976)[_0xd5dd('0x26')](handleEntityNotFound(_0x28ec8c,null))[_0xd5dd('0x26')](respondWithResult(_0x28ec8c,null))['catch'](handleError(_0x28ec8c,null));};exports['create']=function(_0x560789,_0xd437b4){return db[_0xd5dd('0x2d')][_0xd5dd('0x47')](_0x560789['body'],{})[_0xd5dd('0x26')](respondWithResult(_0xd437b4,0xc9))[_0xd5dd('0x48')](handleError(_0xd437b4,null));};exports[_0xd5dd('0x25')]=function(_0x10cc32,_0x4f2021){if(_0x10cc32['body']['id']){delete _0x10cc32[_0xd5dd('0x49')]['id'];}return db[_0xd5dd('0x2d')][_0xd5dd('0x46')]({'where':{'id':_0x10cc32[_0xd5dd('0x45')]['id']}})[_0xd5dd('0x26')](handleEntityNotFound(_0x4f2021,null))[_0xd5dd('0x26')](saveUpdates(_0x10cc32[_0xd5dd('0x49')],null))[_0xd5dd('0x26')](respondWithResult(_0x4f2021,null))['catch'](handleError(_0x4f2021,null));};exports[_0xd5dd('0x27')]=function(_0x478c66,_0x5c093d){return db['UserProfileSection'][_0xd5dd('0x46')]({'where':{'id':_0x478c66[_0xd5dd('0x45')]['id']}})[_0xd5dd('0x26')](handleEntityNotFound(_0x5c093d,null))[_0xd5dd('0x26')](removeEntity(_0x5c093d,null))[_0xd5dd('0x48')](handleError(_0x5c093d,null));};exports[_0xd5dd('0x4a')]=function(_0x298e40,_0x2ffb5c){return db[_0xd5dd('0x2d')][_0xd5dd('0x4a')]()['then'](respondWithResult(_0x2ffb5c,null))[_0xd5dd('0x48')](handleError(_0x2ffb5c,null));};
\ No newline at end of file
+var _0x0a2b=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','error','stack','name','send','index','map','UserProfileSection','rawAttributes','fieldName','type','model','query','keys','filters','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','include','findAll','rows','show','params','intersection','merge','find','create','body','catch','update','destroy','describe','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'];(function(_0x3599f0,_0x4cb27d){var _0x14486a=function(_0x53c4eb){while(--_0x53c4eb){_0x3599f0['push'](_0x3599f0['shift']());}};_0x14486a(++_0x4cb27d);}(_0x0a2b,0x178));var _0xb0a2=function(_0x29e35f,_0x4859ef){_0x29e35f=_0x29e35f-0x0;var _0x266b74=_0x0a2b[_0x29e35f];return _0x266b74;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb0a2('0x0'));var zipdir=require(_0xb0a2('0x1'));var jsonpatch=require(_0xb0a2('0x2'));var rp=require(_0xb0a2('0x3'));var moment=require(_0xb0a2('0x4'));var BPromise=require(_0xb0a2('0x5'));var Mustache=require(_0xb0a2('0x6'));var util=require(_0xb0a2('0x7'));var path=require(_0xb0a2('0x8'));var sox=require('sox');var csv=require(_0xb0a2('0x9'));var ejs=require(_0xb0a2('0xa'));var fs=require('fs');var fs_extra=require(_0xb0a2('0xb'));var _=require(_0xb0a2('0xc'));var squel=require(_0xb0a2('0xd'));var crypto=require(_0xb0a2('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xb0a2('0xf'));var toCsv=require(_0xb0a2('0x9'));var querystring=require(_0xb0a2('0x10'));var Papa=require(_0xb0a2('0x11'));var Redis=require('ioredis');var authService=require(_0xb0a2('0x12'));var qs=require(_0xb0a2('0x13'));var as=require(_0xb0a2('0x14'));var hardwareService=require(_0xb0a2('0x15'));var logger=require(_0xb0a2('0x16'))(_0xb0a2('0x17'));var utils=require(_0xb0a2('0x18'));var config=require(_0xb0a2('0x19'));var licenseUtil=require(_0xb0a2('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2b69aa,_0x2c50d9){_0x2c50d9=_0x2c50d9||0xcc;return function(_0x4a0674){if(_0x4a0674){return _0x2b69aa[_0xb0a2('0x1b')](_0x2c50d9);}return _0x2b69aa[_0xb0a2('0x1c')](_0x2c50d9)[_0xb0a2('0x1d')]();};}function respondWithResult(_0x188d3c,_0x5f8373){_0x5f8373=_0x5f8373||0xc8;return function(_0x569df1){if(_0x569df1){return _0x188d3c[_0xb0a2('0x1c')](_0x5f8373)[_0xb0a2('0x1e')](_0x569df1);}};}function respondWithFilteredResult(_0x423b26,_0x556db0){return function(_0x1ad232){if(_0x1ad232){var _0x668daa=typeof _0x556db0[_0xb0a2('0x1f')]==='undefined'&&typeof _0x556db0[_0xb0a2('0x20')]===_0xb0a2('0x21');var _0x391a39=_0x1ad232[_0xb0a2('0x22')];var _0x1c4089=_0x668daa?0x0:_0x556db0[_0xb0a2('0x1f')];var _0x45663d=_0x668daa?_0x1ad232[_0xb0a2('0x22')]:_0x556db0[_0xb0a2('0x1f')]+_0x556db0[_0xb0a2('0x20')];var _0x1c1e67;if(_0x45663d>=_0x391a39){_0x45663d=_0x391a39;_0x1c1e67=0xc8;}else{_0x1c1e67=0xce;}_0x423b26['status'](_0x1c1e67);return _0x423b26[_0xb0a2('0x23')](_0xb0a2('0x24'),_0x1c4089+'-'+_0x45663d+'/'+_0x391a39)[_0xb0a2('0x1e')](_0x1ad232);}return null;};}function patchUpdates(_0x3eecd2){return function(_0x2e174a){try{jsonpatch[_0xb0a2('0x25')](_0x2e174a,_0x3eecd2,!![]);}catch(_0xda3895){return BPromise[_0xb0a2('0x26')](_0xda3895);}return _0x2e174a[_0xb0a2('0x27')]();};}function saveUpdates(_0xb16efd,_0x2c8ff5){return function(_0xb2e0ec){if(_0xb2e0ec){return _0xb2e0ec['update'](_0xb16efd)[_0xb0a2('0x28')](function(_0x57b3e9){return _0x57b3e9;});}return null;};}function removeEntity(_0x117587,_0x1de96c){return function(_0x216bed){if(_0x216bed){return _0x216bed['destroy']()[_0xb0a2('0x28')](function(){_0x117587['status'](0xcc)[_0xb0a2('0x1d')]();});}};}function handleEntityNotFound(_0x2969ab,_0x101ee4){return function(_0xb59923){if(!_0xb59923){_0x2969ab[_0xb0a2('0x1b')](0x194);}return _0xb59923;};}function handleError(_0x270d04,_0x43ea47){_0x43ea47=_0x43ea47||0x1f4;return function(_0x22f099){logger[_0xb0a2('0x29')](_0x22f099[_0xb0a2('0x2a')]);if(_0x22f099[_0xb0a2('0x2b')]){delete _0x22f099[_0xb0a2('0x2b')];}_0x270d04[_0xb0a2('0x1c')](_0x43ea47)[_0xb0a2('0x2c')](_0x22f099);};}exports[_0xb0a2('0x2d')]=function(_0x2336a1,_0x246584){var _0x1f0cc6={},_0x2cf651={},_0x55ec14={'count':0x0,'rows':[]};var _0x41f3d1=_[_0xb0a2('0x2e')](db[_0xb0a2('0x2f')][_0xb0a2('0x30')],function(_0x4f1efe){return{'name':_0x4f1efe[_0xb0a2('0x31')],'type':_0x4f1efe[_0xb0a2('0x32')]['key']};});_0x2cf651[_0xb0a2('0x33')]=_[_0xb0a2('0x2e')](_0x41f3d1,_0xb0a2('0x2b'));_0x2cf651[_0xb0a2('0x34')]=_[_0xb0a2('0x35')](_0x2336a1[_0xb0a2('0x34')]);_0x2cf651[_0xb0a2('0x36')]=_['intersection'](_0x2cf651[_0xb0a2('0x33')],_0x2cf651['query']);_0x1f0cc6[_0xb0a2('0x37')]=_['intersection'](_0x2cf651['model'],qs[_0xb0a2('0x38')](_0x2336a1[_0xb0a2('0x34')][_0xb0a2('0x38')]));_0x1f0cc6[_0xb0a2('0x37')]=_0x1f0cc6[_0xb0a2('0x37')][_0xb0a2('0x39')]?_0x1f0cc6[_0xb0a2('0x37')]:_0x2cf651['model'];if(!_0x2336a1[_0xb0a2('0x34')][_0xb0a2('0x3a')]('nolimit')){_0x1f0cc6[_0xb0a2('0x20')]=qs[_0xb0a2('0x20')](_0x2336a1['query']['limit']);_0x1f0cc6[_0xb0a2('0x1f')]=qs[_0xb0a2('0x1f')](_0x2336a1[_0xb0a2('0x34')][_0xb0a2('0x1f')]);}_0x1f0cc6[_0xb0a2('0x3b')]=qs[_0xb0a2('0x3c')](_0x2336a1[_0xb0a2('0x34')]['sort']);_0x1f0cc6[_0xb0a2('0x3d')]=qs[_0xb0a2('0x36')](_[_0xb0a2('0x3e')](_0x2336a1[_0xb0a2('0x34')],_0x2cf651['filters']),_0x41f3d1);if(_0x2336a1[_0xb0a2('0x34')][_0xb0a2('0x3f')]){_0x1f0cc6[_0xb0a2('0x3d')]=_['merge'](_0x1f0cc6[_0xb0a2('0x3d')],{'$or':_['map'](_0x41f3d1,function(_0x3afa3e){if(_0x3afa3e[_0xb0a2('0x32')]!==_0xb0a2('0x40')){var _0xc82260={};_0xc82260[_0x3afa3e['name']]={'$like':'%'+_0x2336a1[_0xb0a2('0x34')]['filter']+'%'};return _0xc82260;}})});}_0x1f0cc6=_['merge']({},_0x1f0cc6,_0x2336a1['options']);var _0x303351={'where':_0x1f0cc6[_0xb0a2('0x3d')]};return db[_0xb0a2('0x2f')][_0xb0a2('0x22')](_0x303351)[_0xb0a2('0x28')](function(_0x30fef2){_0x55ec14[_0xb0a2('0x22')]=_0x30fef2;if(_0x2336a1['query']['includeAll']){_0x1f0cc6[_0xb0a2('0x41')]=[{'all':!![]}];}return db['UserProfileSection'][_0xb0a2('0x42')](_0x1f0cc6);})['then'](function(_0x528f42){_0x55ec14[_0xb0a2('0x43')]=_0x528f42;return _0x55ec14;})[_0xb0a2('0x28')](respondWithFilteredResult(_0x246584,_0x1f0cc6))['catch'](handleError(_0x246584,null));};exports[_0xb0a2('0x44')]=function(_0x4840c2,_0x4c0c49){var _0x58ba99={'raw':![],'where':{'id':_0x4840c2[_0xb0a2('0x45')]['id']}},_0x634a4b={};_0x634a4b['model']=_['keys'](db[_0xb0a2('0x2f')][_0xb0a2('0x30')]);_0x634a4b[_0xb0a2('0x34')]=_[_0xb0a2('0x35')](_0x4840c2[_0xb0a2('0x34')]);_0x634a4b[_0xb0a2('0x36')]=_[_0xb0a2('0x46')](_0x634a4b[_0xb0a2('0x33')],_0x634a4b[_0xb0a2('0x34')]);_0x58ba99['attributes']=_['intersection'](_0x634a4b[_0xb0a2('0x33')],qs['fields'](_0x4840c2[_0xb0a2('0x34')][_0xb0a2('0x38')]));_0x58ba99[_0xb0a2('0x37')]=_0x58ba99['attributes'][_0xb0a2('0x39')]?_0x58ba99[_0xb0a2('0x37')]:_0x634a4b[_0xb0a2('0x33')];if(_0x4840c2[_0xb0a2('0x34')]['includeAll']){_0x58ba99[_0xb0a2('0x41')]=[{'all':!![]}];}_0x58ba99=_[_0xb0a2('0x47')]({},_0x58ba99,_0x4840c2['options']);return db[_0xb0a2('0x2f')][_0xb0a2('0x48')](_0x58ba99)[_0xb0a2('0x28')](handleEntityNotFound(_0x4c0c49,null))[_0xb0a2('0x28')](respondWithResult(_0x4c0c49,null))['catch'](handleError(_0x4c0c49,null));};exports[_0xb0a2('0x49')]=function(_0x474168,_0x2c34a1){return db[_0xb0a2('0x2f')][_0xb0a2('0x49')](_0x474168[_0xb0a2('0x4a')],{})[_0xb0a2('0x28')](respondWithResult(_0x2c34a1,0xc9))[_0xb0a2('0x4b')](handleError(_0x2c34a1,null));};exports[_0xb0a2('0x4c')]=function(_0x1d5e67,_0x30ed40){if(_0x1d5e67[_0xb0a2('0x4a')]['id']){delete _0x1d5e67[_0xb0a2('0x4a')]['id'];}return db[_0xb0a2('0x2f')]['find']({'where':{'id':_0x1d5e67[_0xb0a2('0x45')]['id']}})['then'](handleEntityNotFound(_0x30ed40,null))['then'](saveUpdates(_0x1d5e67[_0xb0a2('0x4a')],null))[_0xb0a2('0x28')](respondWithResult(_0x30ed40,null))['catch'](handleError(_0x30ed40,null));};exports[_0xb0a2('0x4d')]=function(_0x38b618,_0x2a7aee){return db['UserProfileSection'][_0xb0a2('0x48')]({'where':{'id':_0x38b618[_0xb0a2('0x45')]['id']}})[_0xb0a2('0x28')](handleEntityNotFound(_0x2a7aee,null))[_0xb0a2('0x28')](removeEntity(_0x2a7aee,null))[_0xb0a2('0x4b')](handleError(_0x2a7aee,null));};exports[_0xb0a2('0x4e')]=function(_0xce14d0,_0x5450df){return db[_0xb0a2('0x2f')][_0xb0a2('0x4e')]()['then'](respondWithResult(_0x5450df,null))['catch'](handleError(_0x5450df,null));};
\ No newline at end of file
index ab0d8fb..85f61f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf858=['userProfileId','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','UserProfileSection','compositeIndex','sectionId'];(function(_0x2ad21c,_0x353b25){var _0xe42d0=function(_0x193720){while(--_0x193720){_0x2ad21c['push'](_0x2ad21c['shift']());}};_0xe42d0(++_0x353b25);}(_0xf858,0x15f));var _0x8f85=function(_0x19c070,_0x19e6bf){_0x19c070=_0x19c070-0x0;var _0x51bd4f=_0xf858[_0x19c070];return _0x51bd4f;};'use strict';var _=require(_0x8f85('0x0'));var util=require(_0x8f85('0x1'));var logger=require(_0x8f85('0x2'))('api');var moment=require(_0x8f85('0x3'));var BPromise=require(_0x8f85('0x4'));var rp=require(_0x8f85('0x5'));var fs=require('fs');var path=require(_0x8f85('0x6'));var rimraf=require(_0x8f85('0x7'));var config=require(_0x8f85('0x8'));var attributes=require('./userProfileSection.attributes');module['exports']=function(_0x4e3641,_0x5e153e){return _0x4e3641[_0x8f85('0x9')](_0x8f85('0xa'),attributes,{'tableName':'user_profile_has_sections','paranoid':![],'indexes':[{'name':_0x8f85('0xb'),'fields':[_0x8f85('0xc'),_0x8f85('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xde00=['bluebird','request-promise','path','rimraf','../../config/environment','./userProfileSection.attributes','exports','define','UserProfileSection','sectionId','userProfileId','lodash','util','../../config/logger','api','moment'];(function(_0x3845bb,_0x138448){var _0x51fab6=function(_0x258ced){while(--_0x258ced){_0x3845bb['push'](_0x3845bb['shift']());}};_0x51fab6(++_0x138448);}(_0xde00,0x19b));var _0x0de0=function(_0x48bc67,_0x3b2b80){_0x48bc67=_0x48bc67-0x0;var _0x5f0651=_0xde00[_0x48bc67];return _0x5f0651;};'use strict';var _=require(_0x0de0('0x0'));var util=require(_0x0de0('0x1'));var logger=require(_0x0de0('0x2'))(_0x0de0('0x3'));var moment=require(_0x0de0('0x4'));var BPromise=require(_0x0de0('0x5'));var rp=require(_0x0de0('0x6'));var fs=require('fs');var path=require(_0x0de0('0x7'));var rimraf=require(_0x0de0('0x8'));var config=require(_0x0de0('0x9'));var attributes=require(_0x0de0('0xa'));module[_0x0de0('0xb')]=function(_0x3607ec,_0x1608fc){return _0x3607ec[_0x0de0('0xc')](_0x0de0('0xd'),attributes,{'tableName':'user_profile_has_sections','paranoid':![],'indexes':[{'name':'compositeIndex','fields':[_0x0de0('0xe'),_0x0de0('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index ef229dc..d296ecc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45d1=['randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify','error','code','message','UserProfileSection,\x20%s,\x20%s','result','lodash','util','bluebird'];(function(_0x115c84,_0x1d07b4){var _0x4bfd43=function(_0x47ad60){while(--_0x47ad60){_0x115c84['push'](_0x115c84['shift']());}};_0x4bfd43(++_0x1d07b4);}(_0x45d1,0x1cb));var _0x145d=function(_0x3e8930,_0x154364){_0x3e8930=_0x3e8930-0x0;var _0x15b38f=_0x45d1[_0x3e8930];return _0x15b38f;};'use strict';var _=require(_0x145d('0x0'));var util=require(_0x145d('0x1'));var moment=require('moment');var BPromise=require(_0x145d('0x2'));var rs=require(_0x145d('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x145d('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x145d('0x5'))(_0x145d('0x6'));var config=require(_0x145d('0x7'));var jayson=require(_0x145d('0x8'));var client=jayson[_0x145d('0x9')][_0x145d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xbc4161,_0x45ff66,_0x46a729){return new BPromise(function(_0x47eadc,_0x4ef552){return client['request'](_0xbc4161,_0x46a729)[_0x145d('0xb')](function(_0x183afe){logger[_0x145d('0xc')]('UserProfileSection,\x20%s,\x20%s',_0x45ff66,_0x145d('0xd'));logger['debug'](_0x145d('0xe'),_0x45ff66,_0x145d('0xd'),JSON[_0x145d('0xf')](_0x183afe));if(_0x183afe[_0x145d('0x10')]){if(_0x183afe['error'][_0x145d('0x11')]===0x1f4){logger[_0x145d('0x10')]('UserProfileSection,\x20%s,\x20%s',_0x45ff66,_0x183afe[_0x145d('0x10')][_0x145d('0x12')]);return _0x4ef552(_0x183afe[_0x145d('0x10')][_0x145d('0x12')]);}logger['error']('UserProfileSection,\x20%s,\x20%s',_0x45ff66,_0x183afe[_0x145d('0x10')][_0x145d('0x12')]);return _0x47eadc(_0x183afe[_0x145d('0x10')]['message']);}else{logger[_0x145d('0xc')](_0x145d('0x13'),_0x45ff66,_0x145d('0xd'));_0x47eadc(_0x183afe[_0x145d('0x14')][_0x145d('0x12')]);}})['catch'](function(_0x1c9ee2){logger[_0x145d('0x10')](_0x145d('0x13'),_0x45ff66,_0x1c9ee2);_0x4ef552(_0x1c9ee2);});});}
\ No newline at end of file
+var _0x2cd7=['then','info','request\x20sent','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','error','code','UserProfileSection,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','http','request'];(function(_0x2b6555,_0x5d7b2d){var _0x415297=function(_0x224725){while(--_0x224725){_0x2b6555['push'](_0x2b6555['shift']());}};_0x415297(++_0x5d7b2d);}(_0x2cd7,0x1c0));var _0x72cd=function(_0x811da5,_0x156c4a){_0x811da5=_0x811da5-0x0;var _0x245754=_0x2cd7[_0x811da5];return _0x245754;};'use strict';var _=require(_0x72cd('0x0'));var util=require(_0x72cd('0x1'));var moment=require(_0x72cd('0x2'));var BPromise=require(_0x72cd('0x3'));var rs=require(_0x72cd('0x4'));var fs=require('fs');var Redis=require(_0x72cd('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x72cd('0x6'));var logger=require(_0x72cd('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x72cd('0x8'));var client=jayson[_0x72cd('0x9')][_0x72cd('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x490020,_0x201f8e,_0x1dc9e5){return new BPromise(function(_0x115574,_0x1b9104){return client[_0x72cd('0xb')](_0x490020,_0x1dc9e5)[_0x72cd('0xc')](function(_0x25c20a){logger[_0x72cd('0xd')]('UserProfileSection,\x20%s,\x20%s',_0x201f8e,_0x72cd('0xe'));logger[_0x72cd('0xf')](_0x72cd('0x10'),_0x201f8e,_0x72cd('0xe'),JSON['stringify'](_0x25c20a));if(_0x25c20a[_0x72cd('0x11')]){if(_0x25c20a['error'][_0x72cd('0x12')]===0x1f4){logger[_0x72cd('0x11')](_0x72cd('0x13'),_0x201f8e,_0x25c20a[_0x72cd('0x11')][_0x72cd('0x14')]);return _0x1b9104(_0x25c20a[_0x72cd('0x11')][_0x72cd('0x14')]);}logger['error'](_0x72cd('0x13'),_0x201f8e,_0x25c20a[_0x72cd('0x11')][_0x72cd('0x14')]);return _0x115574(_0x25c20a[_0x72cd('0x11')]['message']);}else{logger[_0x72cd('0xd')](_0x72cd('0x13'),_0x201f8e,'request\x20sent');_0x115574(_0x25c20a[_0x72cd('0x15')]['message']);}})[_0x72cd('0x16')](function(_0x1145b5){logger[_0x72cd('0x11')](_0x72cd('0x13'),_0x201f8e,_0x1145b5);_0x1b9104(_0x1145b5);});});}
\ No newline at end of file
index 1974ee5..1971f43 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(_0x4b7253,_0x40f708){var _0x29f09a=function(_0x18d91c){while(--_0x18d91c){_0x4b7253['push'](_0x4b7253['shift']());}};_0x29f09a(++_0x40f708);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1da04e,_0x31024b){_0x1da04e=_0x1da04e-0x0;var _0xdd8c41=_0xa9e0[_0x1da04e];return _0xdd8c41;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x1dbc8b,_0x4cde1c){var _0x1e039b=function(_0x52184f){while(--_0x52184f){_0x1dbc8b['push'](_0x1dbc8b['shift']());}};_0x1e039b(++_0x4cde1c);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x422be2,_0x1c439e){_0x422be2=_0x422be2-0x0;var _0x1b820e=_0xcb91[_0x422be2];return _0x1b820e;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
index a8dece6..f28a186 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fc4=['sequelize','exports'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x6fc4,0x1a0));var _0x46fc=function(_0x1098a9,_0x2748f9){_0x1098a9=_0x1098a9-0x0;var _0x166c83=_0x6fc4[_0x1098a9];return _0x166c83;};'use strict';var Sequelize=require(_0x46fc('0x0'));module[_0x46fc('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x4153=['INTEGER','sequelize','exports'];(function(_0x1da479,_0x5c4dfa){var _0x3c6a0b=function(_0x3bb2a6){while(--_0x3bb2a6){_0x1da479['push'](_0x1da479['shift']());}};_0x3c6a0b(++_0x5c4dfa);}(_0x4153,0x199));var _0x3415=function(_0x235d83,_0x37c7df){_0x235d83=_0x235d83-0x0;var _0x53f42d=_0x4153[_0x235d83];return _0x53f42d;};'use strict';var Sequelize=require(_0x3415('0x0'));module[_0x3415('0x1')]={'penalty':{'type':Sequelize[_0x3415('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index c6cd2f0..6d1f8b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x583c=['util','../../config/logger','api','bluebird','request-promise','../../config/environment','./userSmsQueue.attributes','define','UserSmsQueue','lodash'];(function(_0x5c351c,_0x2046d8){var _0x26f3b3=function(_0x47ac18){while(--_0x47ac18){_0x5c351c['push'](_0x5c351c['shift']());}};_0x26f3b3(++_0x2046d8);}(_0x583c,0x12b));var _0xc583=function(_0x541a67,_0x50728d){_0x541a67=_0x541a67-0x0;var _0x45da2a=_0x583c[_0x541a67];return _0x45da2a;};'use strict';var _=require(_0xc583('0x0'));var util=require(_0xc583('0x1'));var logger=require(_0xc583('0x2'))(_0xc583('0x3'));var moment=require('moment');var BPromise=require(_0xc583('0x4'));var rp=require(_0xc583('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xc583('0x6'));var attributes=require(_0xc583('0x7'));module['exports']=function(_0xd3a750,_0x365ed6){return _0xd3a750[_0xc583('0x8')](_0xc583('0x9'),attributes,{'tableName':'user_has_sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x444e=['moment','request-promise','rimraf','../../config/environment','./userSmsQueue.attributes','exports','UserSmsQueue','lodash','../../config/logger'];(function(_0x455afa,_0x235bfc){var _0x46ee43=function(_0x26de4a){while(--_0x26de4a){_0x455afa['push'](_0x455afa['shift']());}};_0x46ee43(++_0x235bfc);}(_0x444e,0xe8));var _0xe444=function(_0x4edd1d,_0x133745){_0x4edd1d=_0x4edd1d-0x0;var _0x1f36a8=_0x444e[_0x4edd1d];return _0x1f36a8;};'use strict';var _=require(_0xe444('0x0'));var util=require('util');var logger=require(_0xe444('0x1'))('api');var moment=require(_0xe444('0x2'));var BPromise=require('bluebird');var rp=require(_0xe444('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe444('0x4'));var config=require(_0xe444('0x5'));var attributes=require(_0xe444('0x6'));module[_0xe444('0x7')]=function(_0x36ac3b,_0x1ddb27){return _0x36ac3b['define'](_0xe444('0x8'),attributes,{'tableName':'user_has_sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b45bb13..937195a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1900=['error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','UserSmsQueue,\x20%s,\x20%s','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x1acaa6,_0x4f35c1){var _0x41eb95=function(_0xeb61fc){while(--_0xeb61fc){_0x1acaa6['push'](_0x1acaa6['shift']());}};_0x41eb95(++_0x4f35c1);}(_0x1900,0x156));var _0x0190=function(_0x3b84d5,_0xd86e10){_0x3b84d5=_0x3b84d5-0x0;var _0x50a084=_0x1900[_0x3b84d5];return _0x50a084;};'use strict';var _=require(_0x0190('0x0'));var util=require(_0x0190('0x1'));var moment=require(_0x0190('0x2'));var BPromise=require(_0x0190('0x3'));var rs=require(_0x0190('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0190('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x0190('0x6'))(_0x0190('0x7'));var config=require(_0x0190('0x8'));var jayson=require(_0x0190('0x9'));var client=jayson[_0x0190('0xa')][_0x0190('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x182404,_0x5d0899,_0x2f3f25){return new BPromise(function(_0x422bcb,_0xa3134f){return client['request'](_0x182404,_0x2f3f25)[_0x0190('0xc')](function(_0x2b2a82){logger['info'](_0x0190('0xd'),_0x5d0899,_0x0190('0xe'));logger[_0x0190('0xf')](_0x0190('0x10'),_0x5d0899,_0x0190('0xe'),JSON[_0x0190('0x11')](_0x2b2a82));if(_0x2b2a82['error']){if(_0x2b2a82[_0x0190('0x12')][_0x0190('0x13')]===0x1f4){logger[_0x0190('0x12')](_0x0190('0xd'),_0x5d0899,_0x2b2a82['error'][_0x0190('0x14')]);return _0xa3134f(_0x2b2a82['error'][_0x0190('0x14')]);}logger[_0x0190('0x12')](_0x0190('0xd'),_0x5d0899,_0x2b2a82[_0x0190('0x12')]['message']);return _0x422bcb(_0x2b2a82[_0x0190('0x12')][_0x0190('0x14')]);}else{logger[_0x0190('0x15')]('UserSmsQueue,\x20%s,\x20%s',_0x5d0899,'request\x20sent');_0x422bcb(_0x2b2a82[_0x0190('0x16')][_0x0190('0x14')]);}})[_0x0190('0x17')](function(_0xf1a5c1){logger['error'](_0x0190('0xd'),_0x5d0899,_0xf1a5c1);_0xa3134f(_0xf1a5c1);});});}
\ No newline at end of file
+var _0xb259=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','request','then','info','UserSmsQueue,\x20%s,\x20%s','request\x20sent','stringify','error','message'];(function(_0x310504,_0x26ad95){var _0x5b36d0=function(_0x253f28){while(--_0x253f28){_0x310504['push'](_0x310504['shift']());}};_0x5b36d0(++_0x26ad95);}(_0xb259,0x158));var _0x9b25=function(_0x20dd9b,_0x3c0fb8){_0x20dd9b=_0x20dd9b-0x0;var _0x2de3b0=_0xb259[_0x20dd9b];return _0x2de3b0;};'use strict';var _=require(_0x9b25('0x0'));var util=require(_0x9b25('0x1'));var moment=require(_0x9b25('0x2'));var BPromise=require(_0x9b25('0x3'));var rs=require(_0x9b25('0x4'));var fs=require('fs');var Redis=require(_0x9b25('0x5'));var db=require(_0x9b25('0x6'))['db'];var utils=require(_0x9b25('0x7'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x9b25('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x12d09e,_0x4973e6,_0x446613){return new BPromise(function(_0x52f33e,_0x3417b5){return client[_0x9b25('0x9')](_0x12d09e,_0x446613)[_0x9b25('0xa')](function(_0x110978){logger[_0x9b25('0xb')](_0x9b25('0xc'),_0x4973e6,_0x9b25('0xd'));logger['debug']('UserSmsQueue,\x20%s,\x20%s,\x20%s',_0x4973e6,'request\x20sent',JSON[_0x9b25('0xe')](_0x110978));if(_0x110978[_0x9b25('0xf')]){if(_0x110978[_0x9b25('0xf')]['code']===0x1f4){logger[_0x9b25('0xf')](_0x9b25('0xc'),_0x4973e6,_0x110978[_0x9b25('0xf')]['message']);return _0x3417b5(_0x110978['error']['message']);}logger[_0x9b25('0xf')](_0x9b25('0xc'),_0x4973e6,_0x110978[_0x9b25('0xf')][_0x9b25('0x10')]);return _0x52f33e(_0x110978[_0x9b25('0xf')][_0x9b25('0x10')]);}else{logger[_0x9b25('0xb')]('UserSmsQueue,\x20%s,\x20%s',_0x4973e6,_0x9b25('0xd'));_0x52f33e(_0x110978[_0x9b25('0x11')]['message']);}})[_0x9b25('0x12')](function(_0x2f67c5){logger[_0x9b25('0xf')](_0x9b25('0xc'),_0x4973e6,_0x2f67c5);_0x3417b5(_0x2f67c5);});});}
\ No newline at end of file
index d530afd..c42130f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf3d=['INTEGER','sequelize','exports'];(function(_0x136283,_0x41b707){var _0x3077d6=function(_0x4aefd3){while(--_0x4aefd3){_0x136283['push'](_0x136283['shift']());}};_0x3077d6(++_0x41b707);}(_0xbf3d,0xd0));var _0xdbf3=function(_0x3461ab,_0x3d1787){_0x3461ab=_0x3461ab-0x0;var _0x35619a=_0xbf3d[_0x3461ab];return _0x35619a;};'use strict';var Sequelize=require(_0xdbf3('0x0'));module[_0xdbf3('0x1')]={'UserId':{'type':Sequelize[_0xdbf3('0x2')]},'VoicePrefixId':{'type':Sequelize[_0xdbf3('0x2')]}};
\ No newline at end of file
+var _0x950d=['INTEGER','sequelize','exports'];(function(_0x2de9e7,_0x2395b3){var _0x2549b7=function(_0x121148){while(--_0x121148){_0x2de9e7['push'](_0x2de9e7['shift']());}};_0x2549b7(++_0x2395b3);}(_0x950d,0x85));var _0xd950=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0x950d[_0x2763f2];return _0x3ef471;};'use strict';var Sequelize=require(_0xd950('0x0'));module[_0xd950('0x1')]={'UserId':{'type':Sequelize[_0xd950('0x2')]},'VoicePrefixId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index eec6783..374f3c0 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(_0x5b7d18,_0x9d6492){var _0x481783=function(_0x3f52d6){while(--_0x3f52d6){_0x5b7d18['push'](_0x5b7d18['shift']());}};_0x481783(++_0x9d6492);}(_0xa9e0,0x123));var _0x0a9e=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa9e0[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var 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(_0x19f5c8,_0x2fd801){var _0x110bd9=function(_0x599f4a){while(--_0x599f4a){_0x19f5c8['push'](_0x19f5c8['shift']());}};_0x110bd9(++_0x2fd801);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xa9e0[_0xf71120];return _0xbe2fd3;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'user_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b971f32..6cce5ca 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(_0x4d281f,_0x55e16f){var _0xd9b390=function(_0x53d5e9){while(--_0x53d5e9){_0x4d281f['push'](_0x4d281f['shift']());}};_0xd9b390(++_0x55e16f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xa9e0[_0x38a7ac];return _0x53061a;};'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 _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x5b6d3a,_0x276ec4){var _0x3e3811=function(_0x383359){while(--_0x383359){_0x5b6d3a['push'](_0x5b6d3a['shift']());}};_0x3e3811(++_0x276ec4);}(_0xe706,0xa3));var _0x6e70=function(_0x50e202,_0x268014){_0x50e202=_0x50e202-0x0;var _0x4a4993=_0xe706[_0x50e202];return _0x4a4993;};'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 6b29429..9f4c137 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1526=['sequelize','exports','INTEGER'];(function(_0x312b89,_0x3ed2c2){var _0x5c0d3e=function(_0x3fd0ae){while(--_0x3fd0ae){_0x312b89['push'](_0x312b89['shift']());}};_0x5c0d3e(++_0x3ed2c2);}(_0x1526,0x16e));var _0x6152=function(_0x58bc79,_0x217cdb){_0x58bc79=_0x58bc79-0x0;var _0x51a247=_0x1526[_0x58bc79];return _0x51a247;};'use strict';var Sequelize=require(_0x6152('0x0'));module[_0x6152('0x1')]={'penalty':{'type':Sequelize[_0x6152('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xdd68=['exports','INTEGER'];(function(_0x42a584,_0x2d9ee3){var _0x56be59=function(_0x5809dd){while(--_0x5809dd){_0x42a584['push'](_0x42a584['shift']());}};_0x56be59(++_0x2d9ee3);}(_0xdd68,0x1e4));var _0x8dd6=function(_0x2ff4bd,_0x4780a6){_0x2ff4bd=_0x2ff4bd-0x0;var _0x28edc6=_0xdd68[_0x2ff4bd];return _0x28edc6;};'use strict';var Sequelize=require('sequelize');module[_0x8dd6('0x0')]={'penalty':{'type':Sequelize[_0x8dd6('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 247604b..de4c7f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7232=['user_has_voice_queues','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','./userVoiceQueue.attributes','exports','define','UserVoiceQueue'];(function(_0x2c1bea,_0x25614e){var _0xb57744=function(_0x161012){while(--_0x161012){_0x2c1bea['push'](_0x2c1bea['shift']());}};_0xb57744(++_0x25614e);}(_0x7232,0x151));var _0x2723=function(_0x1aba91,_0x3343d4){_0x1aba91=_0x1aba91-0x0;var _0x29c439=_0x7232[_0x1aba91];return _0x29c439;};'use strict';var _=require(_0x2723('0x0'));var util=require(_0x2723('0x1'));var logger=require(_0x2723('0x2'))('api');var moment=require('moment');var BPromise=require(_0x2723('0x3'));var rp=require(_0x2723('0x4'));var fs=require('fs');var path=require(_0x2723('0x5'));var rimraf=require(_0x2723('0x6'));var config=require('../../config/environment');var attributes=require(_0x2723('0x7'));module[_0x2723('0x8')]=function(_0x4cf433,_0x344763){return _0x4cf433[_0x2723('0x9')](_0x2723('0xa'),attributes,{'tableName':_0x2723('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2672=['rimraf','../../config/environment','./userVoiceQueue.attributes','exports','define','UserVoiceQueue','user_has_voice_queues','lodash','util','../../config/logger','moment','request-promise'];(function(_0x2aaa00,_0x39614e){var _0x1d5db8=function(_0x2186ca){while(--_0x2186ca){_0x2aaa00['push'](_0x2aaa00['shift']());}};_0x1d5db8(++_0x39614e);}(_0x2672,0x133));var _0x2267=function(_0x10fc57,_0x88ef29){_0x10fc57=_0x10fc57-0x0;var _0x2e416c=_0x2672[_0x10fc57];return _0x2e416c;};'use strict';var _=require(_0x2267('0x0'));var util=require(_0x2267('0x1'));var logger=require(_0x2267('0x2'))('api');var moment=require(_0x2267('0x3'));var BPromise=require('bluebird');var rp=require(_0x2267('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2267('0x5'));var config=require(_0x2267('0x6'));var attributes=require(_0x2267('0x7'));module[_0x2267('0x8')]=function(_0x5e74a2,_0x38c418){return _0x5e74a2[_0x2267('0x9')](_0x2267('0xa'),attributes,{'tableName':_0x2267('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ee45615..1ceb43a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a99=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x1649b1,_0x1b1cf4){var _0xaf5c84=function(_0x545ef7){while(--_0x545ef7){_0x1649b1['push'](_0x1649b1['shift']());}};_0xaf5c84(++_0x1b1cf4);}(_0x9a99,0x179));var _0x99a9=function(_0x64159,_0x5d8543){_0x64159=_0x64159-0x0;var _0x553294=_0x9a99[_0x64159];return _0x553294;};'use strict';var _=require(_0x99a9('0x0'));var util=require(_0x99a9('0x1'));var moment=require(_0x99a9('0x2'));var BPromise=require(_0x99a9('0x3'));var rs=require(_0x99a9('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x99a9('0x5'))['db'];var utils=require(_0x99a9('0x6'));var logger=require(_0x99a9('0x7'))(_0x99a9('0x8'));var config=require(_0x99a9('0x9'));var jayson=require(_0x99a9('0xa'));var client=jayson[_0x99a9('0xb')][_0x99a9('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x30c839,_0x3a6158,_0x34020b){return new BPromise(function(_0x2cb9eb,_0xc8a6a9){return client[_0x99a9('0xd')](_0x30c839,_0x34020b)[_0x99a9('0xe')](function(_0x258ed5){logger[_0x99a9('0xf')](_0x99a9('0x10'),_0x3a6158,_0x99a9('0x11'));logger['debug'](_0x99a9('0x12'),_0x3a6158,_0x99a9('0x11'),JSON[_0x99a9('0x13')](_0x258ed5));if(_0x258ed5['error']){if(_0x258ed5[_0x99a9('0x14')][_0x99a9('0x15')]===0x1f4){logger[_0x99a9('0x14')](_0x99a9('0x10'),_0x3a6158,_0x258ed5['error'][_0x99a9('0x16')]);return _0xc8a6a9(_0x258ed5[_0x99a9('0x14')][_0x99a9('0x16')]);}logger[_0x99a9('0x14')](_0x99a9('0x10'),_0x3a6158,_0x258ed5['error'][_0x99a9('0x16')]);return _0x2cb9eb(_0x258ed5['error']['message']);}else{logger['info'](_0x99a9('0x10'),_0x3a6158,_0x99a9('0x11'));_0x2cb9eb(_0x258ed5['result'][_0x99a9('0x16')]);}})[_0x99a9('0x17')](function(_0x5a118c){logger[_0x99a9('0x14')]('UserVoiceQueue,\x20%s,\x20%s',_0x3a6158,_0x5a118c);_0xc8a6a9(_0x5a118c);});});}
\ No newline at end of file
+var _0xa37e=['jayson/promise','client','http','request','then','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x2f29cb,_0x2c596a){var _0x3e09cc=function(_0x277306){while(--_0x277306){_0x2f29cb['push'](_0x2f29cb['shift']());}};_0x3e09cc(++_0x2c596a);}(_0xa37e,0xb6));var _0xea37=function(_0x18c200,_0x38cd3f){_0x18c200=_0x18c200-0x0;var _0x17ecba=_0xa37e[_0x18c200];return _0x17ecba;};'use strict';var _=require(_0xea37('0x0'));var util=require(_0xea37('0x1'));var moment=require(_0xea37('0x2'));var BPromise=require(_0xea37('0x3'));var rs=require(_0xea37('0x4'));var fs=require('fs');var Redis=require(_0xea37('0x5'));var db=require(_0xea37('0x6'))['db'];var utils=require(_0xea37('0x7'));var logger=require('../../config/logger')(_0xea37('0x8'));var config=require(_0xea37('0x9'));var jayson=require(_0xea37('0xa'));var client=jayson[_0xea37('0xb')][_0xea37('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x426c67,_0x58239c,_0xedbf7){return new BPromise(function(_0x144a51,_0x2198cc){return client[_0xea37('0xd')](_0x426c67,_0xedbf7)[_0xea37('0xe')](function(_0x4157e0){logger[_0xea37('0xf')](_0xea37('0x10'),_0x58239c,_0xea37('0x11'));logger['debug'](_0xea37('0x12'),_0x58239c,_0xea37('0x11'),JSON[_0xea37('0x13')](_0x4157e0));if(_0x4157e0['error']){if(_0x4157e0[_0xea37('0x14')][_0xea37('0x15')]===0x1f4){logger[_0xea37('0x14')](_0xea37('0x10'),_0x58239c,_0x4157e0[_0xea37('0x14')][_0xea37('0x16')]);return _0x2198cc(_0x4157e0[_0xea37('0x14')][_0xea37('0x16')]);}logger[_0xea37('0x14')](_0xea37('0x10'),_0x58239c,_0x4157e0['error'][_0xea37('0x16')]);return _0x144a51(_0x4157e0[_0xea37('0x14')]['message']);}else{logger['info']('UserVoiceQueue,\x20%s,\x20%s',_0x58239c,_0xea37('0x11'));_0x144a51(_0x4157e0['result'][_0xea37('0x16')]);}})[_0xea37('0x17')](function(_0x2ad25b){logger[_0xea37('0x14')](_0xea37('0x10'),_0x58239c,_0x2ad25b);_0x2198cc(_0x2ad25b);});});}
\ No newline at end of file
index ea00514..bcdd8bd 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(_0x94bffa,_0x53c5ce){var _0x266c3e=function(_0x24ae9f){while(--_0x24ae9f){_0x94bffa['push'](_0x94bffa['shift']());}};_0x266c3e(++_0x53c5ce);}(_0xe706,0xa3));var _0x6e70=function(_0x3cdbc7,_0x2a7cb3){_0x3cdbc7=_0x3cdbc7-0x0;var _0x422d20=_0xe706[_0x3cdbc7];return _0x422d20;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x559d2f,_0x3a4d68){var _0x24046e=function(_0x3f650f){while(--_0x3f650f){_0x559d2f['push'](_0x559d2f['shift']());}};_0x24046e(++_0x3a4d68);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2d8fc2,_0x1c461d){_0x2d8fc2=_0x2d8fc2-0x0;var _0x3a9e53=_0xa9e0[_0x2d8fc2];return _0x3a9e53;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index b1fa526..6b297e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x187d=['STRING','queue_interface','sequelize','INTEGER','Required\x20by\x20Asterisk'];(function(_0x150c65,_0x303f38){var _0x4ca489=function(_0x2c2e26){while(--_0x2c2e26){_0x150c65['push'](_0x150c65['shift']());}};_0x4ca489(++_0x303f38);}(_0x187d,0x93));var _0xd187=function(_0x4d07cc,_0x587613){_0x4d07cc=_0x4d07cc-0x0;var _0x42de3b=_0x187d[_0x4d07cc];return _0x42de3b;};'use strict';var Sequelize=require(_0xd187('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xd187('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':_0xd187('0x2')},'membername':{'type':Sequelize[_0xd187('0x3')],'allowNull':![],'comment':_0xd187('0x2')},'UserId':{'type':Sequelize[_0xd187('0x1')],'allowNull':![]},'queue_name':{'type':Sequelize[_0xd187('0x3')],'allowNull':![],'unique':'queue_interface','comment':_0xd187('0x2')},'VoiceQueueId':{'type':Sequelize[_0xd187('0x1')],'allowNull':![]},'interface':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xd187('0x4'),'comment':_0xd187('0x2')},'penalty':{'type':Sequelize[_0xd187('0x1')](0xb),'defaultValue':0x0,'comment':_0xd187('0x2')},'paused':{'type':Sequelize[_0xd187('0x1')](0xb),'defaultValue':0x0,'comment':_0xd187('0x2')}};
\ No newline at end of file
+var _0xb2c5=['STRING','queue_interface','INTEGER','Required\x20by\x20Asterisk'];(function(_0x44166f,_0x3e71e2){var _0x5f390a=function(_0x4876fb){while(--_0x4876fb){_0x44166f['push'](_0x44166f['shift']());}};_0x5f390a(++_0x3e71e2);}(_0xb2c5,0x146));var _0x5b2c=function(_0x4b8212,_0x37d755){_0x4b8212=_0x4b8212-0x0;var _0x54de6e=_0xb2c5[_0x4b8212];return _0x54de6e;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x5b2c('0x0')],'primaryKey':!![],'autoIncrement':!![],'comment':_0x5b2c('0x1')},'membername':{'type':Sequelize['STRING'],'allowNull':![],'comment':_0x5b2c('0x1')},'UserId':{'type':Sequelize['INTEGER'],'allowNull':![]},'queue_name':{'type':Sequelize[_0x5b2c('0x2')],'allowNull':![],'unique':'queue_interface','comment':_0x5b2c('0x1')},'VoiceQueueId':{'type':Sequelize[_0x5b2c('0x0')],'allowNull':![]},'interface':{'type':Sequelize[_0x5b2c('0x2')],'allowNull':![],'unique':_0x5b2c('0x3'),'comment':_0x5b2c('0x1')},'penalty':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0x5b2c('0x1')},'paused':{'type':Sequelize[_0x5b2c('0x0')](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'}};
\ No newline at end of file
index 126f499..e043be6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a55=['save','update','remove','emit','hasOwnProperty','events','setMaxListeners'];(function(_0x57d676,_0x557c4f){var _0x37c7a7=function(_0x125ddc){while(--_0x125ddc){_0x57d676['push'](_0x57d676['shift']());}};_0x37c7a7(++_0x557c4f);}(_0x7a55,0x1e1));var _0x57a5=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7a55[_0x20a584];return _0x4b41a8;};'use strict';var EventEmitter=require(_0x57a5('0x0'));var UserVoiceQueueRt=require('../../mysqldb')['db']['UserVoiceQueueRt'];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x57a5('0x1')](0x0);var events={'afterCreate':_0x57a5('0x2'),'afterUpdate':_0x57a5('0x3'),'afterDestroy':_0x57a5('0x4')};function emitEvent(_0x449ca7){return function(_0x46dd22,_0x3b2125,_0x2e72db){UserVoiceQueueRtEvents[_0x57a5('0x5')](_0x449ca7+':'+_0x46dd22['id'],_0x46dd22);UserVoiceQueueRtEvents[_0x57a5('0x5')](_0x449ca7,_0x46dd22);_0x2e72db(null);};}for(var e in events){if(events[_0x57a5('0x6')](e)){var event=events[e];UserVoiceQueueRt['hook'](e,emitEvent(event));}}module['exports']=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0xe870=['hasOwnProperty','hook','events','../../mysqldb','setMaxListeners','save','update','remove','emit'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xe870,0x92));var _0x0e87=function(_0x184ff6,_0x51011f){_0x184ff6=_0x184ff6-0x0;var _0x1548c3=_0xe870[_0x184ff6];return _0x1548c3;};'use strict';var EventEmitter=require(_0x0e87('0x0'));var UserVoiceQueueRt=require(_0x0e87('0x1'))['db']['UserVoiceQueueRt'];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x0e87('0x2')](0x0);var events={'afterCreate':_0x0e87('0x3'),'afterUpdate':_0x0e87('0x4'),'afterDestroy':_0x0e87('0x5')};function emitEvent(_0x1e9eff){return function(_0x54bd98,_0x4336eb,_0x4c95ec){UserVoiceQueueRtEvents[_0x0e87('0x6')](_0x1e9eff+':'+_0x54bd98['id'],_0x54bd98);UserVoiceQueueRtEvents[_0x0e87('0x6')](_0x1e9eff,_0x54bd98);_0x4c95ec(null);};}for(var e in events){if(events[_0x0e87('0x7')](e)){var event=events[e];UserVoiceQueueRt[_0x0e87('0x8')](e,emitEvent(event));}}module['exports']=UserVoiceQueueRtEvents;
\ No newline at end of file
index 42a4c7f..a5d9726 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97b2=['user_has_voice_queues_rt','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','UserVoiceQueueRt'];(function(_0x40a4c2,_0x5a72c6){var _0x4d0d44=function(_0xf66afe){while(--_0xf66afe){_0x40a4c2['push'](_0x40a4c2['shift']());}};_0x4d0d44(++_0x5a72c6);}(_0x97b2,0x181));var _0x297b=function(_0x2c1e7a,_0x155f86){_0x2c1e7a=_0x2c1e7a-0x0;var _0xcacb4f=_0x97b2[_0x2c1e7a];return _0xcacb4f;};'use strict';var _=require(_0x297b('0x0'));var util=require(_0x297b('0x1'));var logger=require('../../config/logger')(_0x297b('0x2'));var moment=require(_0x297b('0x3'));var BPromise=require(_0x297b('0x4'));var rp=require(_0x297b('0x5'));var fs=require('fs');var path=require(_0x297b('0x6'));var rimraf=require(_0x297b('0x7'));var config=require(_0x297b('0x8'));var attributes=require('./userVoiceQueueRt.attributes');module['exports']=function(_0x46cb71,_0x44553e){return _0x46cb71[_0x297b('0x9')](_0x297b('0xa'),attributes,{'tableName':_0x297b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3612=['api','moment','request-promise','rimraf','../../config/environment','exports','define','UserVoiceQueueRt','user_has_voice_queues_rt'];(function(_0x19f1c4,_0x3454f2){var _0x3cc4f8=function(_0x2cd01e){while(--_0x2cd01e){_0x19f1c4['push'](_0x19f1c4['shift']());}};_0x3cc4f8(++_0x3454f2);}(_0x3612,0x120));var _0x2361=function(_0x5cca9f,_0x154684){_0x5cca9f=_0x5cca9f-0x0;var _0x55edda=_0x3612[_0x5cca9f];return _0x55edda;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x2361('0x0'));var moment=require(_0x2361('0x1'));var BPromise=require('bluebird');var rp=require(_0x2361('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2361('0x3'));var config=require(_0x2361('0x4'));var attributes=require('./userVoiceQueueRt.attributes');module[_0x2361('0x5')]=function(_0x365605,_0x4ac678){return _0x365605[_0x2361('0x6')](_0x2361('0x7'),attributes,{'tableName':_0x2361('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index badddbd..1d050fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb54=['request','info','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','request\x20sent','error','UserVoiceQueueRt,\x20%s,\x20%s','message','result','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','where','COUNT','sequelize','outboundQueuePauses','then','stringify','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','localhost','socket.io-emitter','./userVoiceQueueRt.socket','register'];(function(_0xaec470,_0x31f6b7){var _0x1e0cd5=function(_0x2ebaa3){while(--_0x2ebaa3){_0xaec470['push'](_0xaec470['shift']());}};_0x1e0cd5(++_0x31f6b7);}(_0xbb54,0xc3));var _0x4bb5=function(_0xd7b0a4,_0x53c7d3){_0xd7b0a4=_0xd7b0a4-0x0;var _0x184e9e=_0xbb54[_0xd7b0a4];return _0x184e9e;};'use strict';var _=require(_0x4bb5('0x0'));var util=require(_0x4bb5('0x1'));var moment=require(_0x4bb5('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4bb5('0x3'));var db=require(_0x4bb5('0x4'))['db'];var utils=require(_0x4bb5('0x5'));var logger=require(_0x4bb5('0x6'))(_0x4bb5('0x7'));var config=require(_0x4bb5('0x8'));var jayson=require(_0x4bb5('0x9'));var client=jayson['client'][_0x4bb5('0xa')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0x4bb5('0xb'),'port':0x18eb});var socket=require(_0x4bb5('0xc'))(new Redis(config['redis']));require(_0x4bb5('0xd'))[_0x4bb5('0xe')](socket);function respondWithRpcPromise(_0x1be295,_0x3cf400,_0x2556c3){return new BPromise(function(_0x34e245,_0x4e117f){return client[_0x4bb5('0xf')](_0x1be295,_0x2556c3)['then'](function(_0x5c6464){logger[_0x4bb5('0x10')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x3cf400,'request\x20sent');logger[_0x4bb5('0x11')](_0x4bb5('0x12'),_0x3cf400,_0x4bb5('0x13'),JSON['stringify'](_0x5c6464));if(_0x5c6464[_0x4bb5('0x14')]){if(_0x5c6464[_0x4bb5('0x14')]['code']===0x1f4){logger[_0x4bb5('0x14')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x3cf400,_0x5c6464[_0x4bb5('0x14')]['message']);return _0x4e117f(_0x5c6464['error']['message']);}logger[_0x4bb5('0x14')](_0x4bb5('0x15'),_0x3cf400,_0x5c6464[_0x4bb5('0x14')][_0x4bb5('0x16')]);return _0x34e245(_0x5c6464['error'][_0x4bb5('0x16')]);}else{logger[_0x4bb5('0x10')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x3cf400,_0x4bb5('0x13'));_0x34e245(_0x5c6464[_0x4bb5('0x17')][_0x4bb5('0x16')]);}})[_0x4bb5('0x18')](function(_0x2ef474){logger['error'](_0x4bb5('0x15'),_0x3cf400,_0x2ef474);_0x4e117f(_0x2ef474);});});}exports[_0x4bb5('0x19')]=function(_0x2733f3){var _0x175e6d=this;return new Promise(function(_0x39b7cc,_0x14b80a){return db[_0x4bb5('0x1a')][_0x4bb5('0x1b')]({'raw':_0x2733f3[_0x4bb5('0x1c')]?_0x2733f3['options']['raw']===undefined?!![]:![]:!![],'where':_0x2733f3[_0x4bb5('0x1c')]?_0x2733f3[_0x4bb5('0x1c')][_0x4bb5('0x1d')]||null:null,'attributes':[[db['sequelize']['fn'](_0x4bb5('0x1e'),db[_0x4bb5('0x1f')]['fn']('IF',db[_0x4bb5('0x1f')]['literal']('`paused`\x20=\x201,\x201,\x20null'))),_0x4bb5('0x20')]]})[_0x4bb5('0x21')](function(_0x3fa7c0){logger[_0x4bb5('0x10')](_0x4bb5('0x19'),_0x2733f3);logger[_0x4bb5('0x11')](_0x4bb5('0x19'),_0x2733f3,JSON[_0x4bb5('0x22')](_0x3fa7c0));_0x39b7cc(_0x3fa7c0);})[_0x4bb5('0x18')](function(_0xc2a366){logger[_0x4bb5('0x14')](_0x4bb5('0x19'),_0xc2a366['message'],_0x2733f3);_0x14b80a(_0x175e6d[_0x4bb5('0x14')](0x1f4,_0xc2a366[_0x4bb5('0x16')]));});});};
\ No newline at end of file
+var _0x25ac=['http','redis','defaults','localhost','socket.io-emitter','./userVoiceQueueRt.socket','register','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','raw','where','sequelize','COUNT','literal','`paused`\x20=\x201,\x201,\x20null','util','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x5e7514,_0x30c2e1){var _0x12f472=function(_0x33ddb6){while(--_0x33ddb6){_0x5e7514['push'](_0x5e7514['shift']());}};_0x12f472(++_0x30c2e1);}(_0x25ac,0x120));var _0xc25a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x25ac[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xc25a('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc25a('0x1'));var db=require(_0xc25a('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xc25a('0x3'))(_0xc25a('0x4'));var config=require(_0xc25a('0x5'));var jayson=require(_0xc25a('0x6'));var client=jayson[_0xc25a('0x7')][_0xc25a('0x8')]({'port':0x232a});config[_0xc25a('0x9')]=_[_0xc25a('0xa')](config[_0xc25a('0x9')],{'host':_0xc25a('0xb'),'port':0x18eb});var socket=require(_0xc25a('0xc'))(new Redis(config['redis']));require(_0xc25a('0xd'))[_0xc25a('0xe')](socket);function respondWithRpcPromise(_0x2dcd87,_0x8be3d0,_0x4cd43e){return new BPromise(function(_0x3cc430,_0x3baa8a){return client[_0xc25a('0xf')](_0x2dcd87,_0x4cd43e)[_0xc25a('0x10')](function(_0x4d834b){logger[_0xc25a('0x11')](_0xc25a('0x12'),_0x8be3d0,_0xc25a('0x13'));logger[_0xc25a('0x14')](_0xc25a('0x15'),_0x8be3d0,_0xc25a('0x13'),JSON[_0xc25a('0x16')](_0x4d834b));if(_0x4d834b[_0xc25a('0x17')]){if(_0x4d834b[_0xc25a('0x17')][_0xc25a('0x18')]===0x1f4){logger[_0xc25a('0x17')](_0xc25a('0x12'),_0x8be3d0,_0x4d834b[_0xc25a('0x17')][_0xc25a('0x19')]);return _0x3baa8a(_0x4d834b[_0xc25a('0x17')][_0xc25a('0x19')]);}logger['error']('UserVoiceQueueRt,\x20%s,\x20%s',_0x8be3d0,_0x4d834b['error'][_0xc25a('0x19')]);return _0x3cc430(_0x4d834b[_0xc25a('0x17')][_0xc25a('0x19')]);}else{logger[_0xc25a('0x11')](_0xc25a('0x12'),_0x8be3d0,_0xc25a('0x13'));_0x3cc430(_0x4d834b['result'][_0xc25a('0x19')]);}})[_0xc25a('0x1a')](function(_0x5e2bf9){logger['error'](_0xc25a('0x12'),_0x8be3d0,_0x5e2bf9);_0x3baa8a(_0x5e2bf9);});});}exports[_0xc25a('0x1b')]=function(_0x478671){var _0x4d7ae7=this;return new Promise(function(_0x24afc3,_0xd38c53){return db[_0xc25a('0x1c')][_0xc25a('0x1d')]({'raw':_0x478671[_0xc25a('0x1e')]?_0x478671[_0xc25a('0x1e')][_0xc25a('0x1f')]===undefined?!![]:![]:!![],'where':_0x478671['options']?_0x478671[_0xc25a('0x1e')][_0xc25a('0x20')]||null:null,'attributes':[[db[_0xc25a('0x21')]['fn'](_0xc25a('0x22'),db[_0xc25a('0x21')]['fn']('IF',db[_0xc25a('0x21')][_0xc25a('0x23')](_0xc25a('0x24')))),'outboundQueuePauses']]})[_0xc25a('0x10')](function(_0x3d6cca){logger['info'](_0xc25a('0x1b'),_0x478671);logger[_0xc25a('0x14')](_0xc25a('0x1b'),_0x478671,JSON[_0xc25a('0x16')](_0x3d6cca));_0x24afc3(_0x3d6cca);})[_0xc25a('0x1a')](function(_0x1407eb){logger['error']('GetVoiceQueueRtPauses',_0x1407eb[_0xc25a('0x19')],_0x478671);_0xd38c53(_0x4d7ae7['error'](0x1f4,_0x1407eb[_0xc25a('0x19')]));});});};
\ No newline at end of file
index adab973..63d2796 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9300=['update','emit','removeListener','length','./userVoiceQueueRt.events'];(function(_0x215ac9,_0x258265){var _0x40685b=function(_0x21e94c){while(--_0x21e94c){_0x215ac9['push'](_0x215ac9['shift']());}};_0x40685b(++_0x258265);}(_0x9300,0x153));var _0x0930=function(_0x4ce46c,_0x3002e5){_0x4ce46c=_0x4ce46c-0x0;var _0x132542=_0x9300[_0x4ce46c];return _0x132542;};'use strict';var UserVoiceQueueRtEvents=require(_0x0930('0x0'));var events=['save','remove',_0x0930('0x1')];function createListener(_0x2034e2,_0x70a4ea){return function(_0x44657f){_0x70a4ea[_0x0930('0x2')](_0x2034e2,_0x44657f);};}function removeListener(_0x49d993,_0x298c01){return function(){UserVoiceQueueRtEvents[_0x0930('0x3')](_0x49d993,_0x298c01);};}exports['register']=function(_0x34c542){for(var _0x1c8175=0x0,_0x45705a=events[_0x0930('0x4')];_0x1c8175<_0x45705a;_0x1c8175++){var _0x2c0f94=events[_0x1c8175];var _0x1ec24f=createListener('userVoiceQueueRt:'+_0x2c0f94,_0x34c542);UserVoiceQueueRtEvents['on'](_0x2c0f94,_0x1ec24f);}};
\ No newline at end of file
+var _0x1670=['./userVoiceQueueRt.events','save','update','emit','register','length','userVoiceQueueRt:'];(function(_0x100e36,_0x4da225){var _0x1df0c9=function(_0xe4b84f){while(--_0xe4b84f){_0x100e36['push'](_0x100e36['shift']());}};_0x1df0c9(++_0x4da225);}(_0x1670,0x9a));var _0x0167=function(_0x29240e,_0x5b2f28){_0x29240e=_0x29240e-0x0;var _0x411049=_0x1670[_0x29240e];return _0x411049;};'use strict';var UserVoiceQueueRtEvents=require(_0x0167('0x0'));var events=[_0x0167('0x1'),'remove',_0x0167('0x2')];function createListener(_0x4dc6f6,_0x1c7a08){return function(_0x45bbfd){_0x1c7a08[_0x0167('0x3')](_0x4dc6f6,_0x45bbfd);};}function removeListener(_0x6f87ae,_0x5786d8){return function(){UserVoiceQueueRtEvents['removeListener'](_0x6f87ae,_0x5786d8);};}exports[_0x0167('0x4')]=function(_0x1ae650){for(var _0x295e51=0x0,_0x3e1507=events[_0x0167('0x5')];_0x295e51<_0x3e1507;_0x295e51++){var _0x149956=events[_0x295e51];var _0xcdfc5=createListener(_0x0167('0x6')+_0x149956,_0x1ae650);UserVoiceQueueRtEvents['on'](_0x149956,_0xcdfc5);}};
\ No newline at end of file
index ebc4c0b..219465e 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(_0x380505,_0x4c81a5){var _0x5d71a1=function(_0x178f16){while(--_0x178f16){_0x380505['push'](_0x380505['shift']());}};_0x5d71a1(++_0x4c81a5);}(_0xe706,0xa3));var _0x6e70=function(_0x3f0aea,_0x40ea8c){_0x3f0aea=_0x3f0aea-0x0;var _0x382714=_0xe706[_0x3f0aea];return _0x382714;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x4f04ae,_0x3a53dc){var _0x56d4a6=function(_0x3e358c){while(--_0x3e358c){_0x4f04ae['push'](_0x4f04ae['shift']());}};_0x56d4a6(++_0x3a53dc);}(_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 0760a5f..f97efd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e7a=['INTEGER','sequelize','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7e7a,0xb8));var _0xa7e7=function(_0x466358,_0x47fd89){_0x466358=_0x466358-0x0;var _0x30b1e5=_0x7e7a[_0x466358];return _0x30b1e5;};'use strict';var Sequelize=require(_0xa7e7('0x0'));module[_0xa7e7('0x1')]={'penalty':{'type':Sequelize[_0xa7e7('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x29d4=['INTEGER','sequelize'];(function(_0x57f7b1,_0xf68992){var _0x1f4a81=function(_0x41abb6){while(--_0x41abb6){_0x57f7b1['push'](_0x57f7b1['shift']());}};_0x1f4a81(++_0xf68992);}(_0x29d4,0x1a1));var _0x429d=function(_0x1ddedd,_0x485606){_0x1ddedd=_0x1ddedd-0x0;var _0xa3e1ac=_0x29d4[_0x1ddedd];return _0xa3e1ac;};'use strict';var Sequelize=require(_0x429d('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x429d('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 96b4b6d..465e102 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73a6=['./userWhatsappQueue.attributes','exports','define','user_has_whatsapp_queues','lodash','moment','path','rimraf','../../config/environment'];(function(_0x44ee33,_0x385f37){var _0x33edc9=function(_0xb16a5d){while(--_0xb16a5d){_0x44ee33['push'](_0x44ee33['shift']());}};_0x33edc9(++_0x385f37);}(_0x73a6,0x79));var _0x673a=function(_0x492c32,_0x45740a){_0x492c32=_0x492c32-0x0;var _0x330ef6=_0x73a6[_0x492c32];return _0x330ef6;};'use strict';var _=require(_0x673a('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x673a('0x1'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x673a('0x2'));var rimraf=require(_0x673a('0x3'));var config=require(_0x673a('0x4'));var attributes=require(_0x673a('0x5'));module[_0x673a('0x6')]=function(_0x465c51,_0x3b7098){return _0x465c51[_0x673a('0x7')]('UserWhatsappQueue',attributes,{'tableName':_0x673a('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9191=['../../config/environment','UserWhatsappQueue','user_has_whatsapp_queues','lodash','util','moment','bluebird','request-promise','path','rimraf'];(function(_0x24392f,_0x15a3e5){var _0x591e33=function(_0xe0ccea){while(--_0xe0ccea){_0x24392f['push'](_0x24392f['shift']());}};_0x591e33(++_0x15a3e5);}(_0x9191,0xcb));var _0x1919=function(_0x37b7b6,_0x165a5c){_0x37b7b6=_0x37b7b6-0x0;var _0x10c4c3=_0x9191[_0x37b7b6];return _0x10c4c3;};'use strict';var _=require(_0x1919('0x0'));var util=require(_0x1919('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x1919('0x2'));var BPromise=require(_0x1919('0x3'));var rp=require(_0x1919('0x4'));var fs=require('fs');var path=require(_0x1919('0x5'));var rimraf=require(_0x1919('0x6'));var config=require(_0x1919('0x7'));var attributes=require('./userWhatsappQueue.attributes');module['exports']=function(_0x301e6c,_0x5f2c74){return _0x301e6c['define'](_0x1919('0x8'),attributes,{'tableName':_0x1919('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 87d2ca1..b4c7795 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2de=['message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','info','request\x20sent','stringify','error','code','UserWhatsappQueue,\x20%s,\x20%s'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xf2de,0x1ce));var _0xef2d=function(_0x53cf8e,_0x3d290f){_0x53cf8e=_0x53cf8e-0x0;var _0x459197=_0xf2de[_0x53cf8e];return _0x459197;};'use strict';var _=require(_0xef2d('0x0'));var util=require('util');var moment=require(_0xef2d('0x1'));var BPromise=require(_0xef2d('0x2'));var rs=require(_0xef2d('0x3'));var fs=require('fs');var Redis=require(_0xef2d('0x4'));var db=require(_0xef2d('0x5'))['db'];var utils=require(_0xef2d('0x6'));var logger=require(_0xef2d('0x7'))(_0xef2d('0x8'));var config=require(_0xef2d('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xef2d('0xa')][_0xef2d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1bca4e,_0x1df4e7,_0x1c3986){return new BPromise(function(_0x18eca4,_0x4a25b5){return client['request'](_0x1bca4e,_0x1c3986)['then'](function(_0x44a0c9){logger[_0xef2d('0xc')]('UserWhatsappQueue,\x20%s,\x20%s',_0x1df4e7,_0xef2d('0xd'));logger['debug']('UserWhatsappQueue,\x20%s,\x20%s,\x20%s',_0x1df4e7,_0xef2d('0xd'),JSON[_0xef2d('0xe')](_0x44a0c9));if(_0x44a0c9[_0xef2d('0xf')]){if(_0x44a0c9[_0xef2d('0xf')][_0xef2d('0x10')]===0x1f4){logger[_0xef2d('0xf')](_0xef2d('0x11'),_0x1df4e7,_0x44a0c9[_0xef2d('0xf')][_0xef2d('0x12')]);return _0x4a25b5(_0x44a0c9[_0xef2d('0xf')]['message']);}logger[_0xef2d('0xf')](_0xef2d('0x11'),_0x1df4e7,_0x44a0c9[_0xef2d('0xf')]['message']);return _0x18eca4(_0x44a0c9[_0xef2d('0xf')][_0xef2d('0x12')]);}else{logger[_0xef2d('0xc')](_0xef2d('0x11'),_0x1df4e7,_0xef2d('0xd'));_0x18eca4(_0x44a0c9[_0xef2d('0x13')]['message']);}})['catch'](function(_0xb31301){logger['error']('UserWhatsappQueue,\x20%s,\x20%s',_0x1df4e7,_0xb31301);_0x4a25b5(_0xb31301);});});}
\ No newline at end of file
+var _0x7501=['stringify','error','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s'];(function(_0x264d39,_0x1f9d89){var _0x20b4b6=function(_0x593fc7){while(--_0x593fc7){_0x264d39['push'](_0x264d39['shift']());}};_0x20b4b6(++_0x1f9d89);}(_0x7501,0xe7));var _0x1750=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0x7501[_0x45d55e];return _0x29812a;};'use strict';var _=require(_0x1750('0x0'));var util=require(_0x1750('0x1'));var moment=require(_0x1750('0x2'));var BPromise=require(_0x1750('0x3'));var rs=require(_0x1750('0x4'));var fs=require('fs');var Redis=require(_0x1750('0x5'));var db=require(_0x1750('0x6'))['db'];var utils=require(_0x1750('0x7'));var logger=require(_0x1750('0x8'))(_0x1750('0x9'));var config=require(_0x1750('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x1750('0xb')][_0x1750('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x56fcb6,_0x4b2e0f,_0x8090e7){return new BPromise(function(_0x311d99,_0x104c4d){return client[_0x1750('0xd')](_0x56fcb6,_0x8090e7)[_0x1750('0xe')](function(_0xbcd0f0){logger['info'](_0x1750('0xf'),_0x4b2e0f,_0x1750('0x10'));logger[_0x1750('0x11')](_0x1750('0x12'),_0x4b2e0f,_0x1750('0x10'),JSON[_0x1750('0x13')](_0xbcd0f0));if(_0xbcd0f0[_0x1750('0x14')]){if(_0xbcd0f0[_0x1750('0x14')]['code']===0x1f4){logger[_0x1750('0x14')](_0x1750('0xf'),_0x4b2e0f,_0xbcd0f0[_0x1750('0x14')][_0x1750('0x15')]);return _0x104c4d(_0xbcd0f0[_0x1750('0x14')][_0x1750('0x15')]);}logger[_0x1750('0x14')](_0x1750('0xf'),_0x4b2e0f,_0xbcd0f0[_0x1750('0x14')][_0x1750('0x15')]);return _0x311d99(_0xbcd0f0[_0x1750('0x14')][_0x1750('0x15')]);}else{logger[_0x1750('0x16')](_0x1750('0xf'),_0x4b2e0f,_0x1750('0x10'));_0x311d99(_0xbcd0f0[_0x1750('0x17')][_0x1750('0x15')]);}})[_0x1750('0x18')](function(_0x34e403){logger['error'](_0x1750('0xf'),_0x4b2e0f,_0x34e403);_0x104c4d(_0x34e403);});});}
\ No newline at end of file
index 8dde592..31c9a29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ddd=['get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment'];(function(_0x17f41a,_0x209c1b){var _0x10a686=function(_0x35cc6a){while(--_0x35cc6a){_0x17f41a['push'](_0x17f41a['shift']());}};_0x10a686(++_0x209c1b);}(_0x6ddd,0xae));var _0xd6dd=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x6ddd[_0x13d07a];return _0x5ee0ee;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xd6dd('0x0'));var timeout=require(_0xd6dd('0x1'));var express=require(_0xd6dd('0x2'));var router=express[_0xd6dd('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xd6dd('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xd6dd('0x5'));var controller=require('./variable.controller');router[_0xd6dd('0x6')]('/',auth[_0xd6dd('0x7')](),controller[_0xd6dd('0x8')]);router['get'](_0xd6dd('0x9'),auth[_0xd6dd('0x7')](),controller[_0xd6dd('0xa')]);router[_0xd6dd('0xb')]('/',auth['isAuthenticated'](),controller[_0xd6dd('0xc')]);router[_0xd6dd('0xd')](_0xd6dd('0x9'),auth[_0xd6dd('0x7')](),controller[_0xd6dd('0xe')]);router[_0xd6dd('0xf')](_0xd6dd('0x9'),auth[_0xd6dd('0x7')](),controller[_0xd6dd('0x10')]);module[_0xd6dd('0x11')]=router;
\ No newline at end of file
+var _0x5577=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./variable.controller','isAuthenticated','index','get','/:id','show','post','create','put','update','delete','exports','multer','path','connect-timeout','Router'];(function(_0x10ece6,_0x27378b){var _0x7fbc99=function(_0x2745da){while(--_0x2745da){_0x10ece6['push'](_0x10ece6['shift']());}};_0x7fbc99(++_0x27378b);}(_0x5577,0x1b4));var _0x7557=function(_0x33f93a,_0x3d75ab){_0x33f93a=_0x33f93a-0x0;var _0x16cb93=_0x5577[_0x33f93a];return _0x16cb93;};'use strict';var multer=require(_0x7557('0x0'));var util=require('util');var path=require(_0x7557('0x1'));var timeout=require(_0x7557('0x2'));var express=require('express');var router=express[_0x7557('0x3')]();var fs_extra=require(_0x7557('0x4'));var auth=require(_0x7557('0x5'));var interaction=require(_0x7557('0x6'));var config=require(_0x7557('0x7'));var controller=require(_0x7557('0x8'));router['get']('/',auth[_0x7557('0x9')](),controller[_0x7557('0xa')]);router[_0x7557('0xb')](_0x7557('0xc'),auth[_0x7557('0x9')](),controller[_0x7557('0xd')]);router[_0x7557('0xe')]('/',auth[_0x7557('0x9')](),controller[_0x7557('0xf')]);router[_0x7557('0x10')](_0x7557('0xc'),auth[_0x7557('0x9')](),controller[_0x7557('0x11')]);router[_0x7557('0x12')](_0x7557('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x7557('0x13')]=router;
\ No newline at end of file
index bf6cded..689ea43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a96=['sequelize','exports','name','STRING'];(function(_0x55c697,_0x59b781){var _0x491510=function(_0x5baf2f){while(--_0x5baf2f){_0x55c697['push'](_0x55c697['shift']());}};_0x491510(++_0x59b781);}(_0x5a96,0xbc));var _0x65a9=function(_0x5a224d,_0x4e1210){_0x5a224d=_0x5a224d-0x0;var _0xaa812b=_0x5a96[_0x5a224d];return _0xaa812b;};'use strict';var Sequelize=require(_0x65a9('0x0'));module[_0x65a9('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x65a9('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x65a9('0x3')]}};
\ No newline at end of file
+var _0x14de=['STRING','name'];(function(_0x1af98d,_0x3c608e){var _0x3553ea=function(_0x5668a4){while(--_0x5668a4){_0x1af98d['push'](_0x1af98d['shift']());}};_0x3553ea(++_0x3c608e);}(_0x14de,0x1ea));var _0xe14d=function(_0x59f810,_0x45675a){_0x59f810=_0x59f810-0x0;var _0x2688f3=_0x14de[_0x59f810];return _0x2688f3;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xe14d('0x0')],'unique':_0xe14d('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xe14d('0x0')]}};
\ No newline at end of file
index dc3ab53..54c7b28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a6d=['../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','get','Variables','UserProfileResource','destroy','stack','name','index','map','Variable','rawAttributes','keys','filters','intersection','query','attributes','model','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','includeAll','include','findAll','rows','catch','show','params','options','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','rimraf','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x5d2920,_0x5aabb6){var _0x52d735=function(_0x3b908a){while(--_0x3b908a){_0x5d2920['push'](_0x5d2920['shift']());}};_0x52d735(++_0x5aabb6);}(_0x2a6d,0x8e));var _0xd2a6=function(_0x1cd1e8,_0x2d4289){_0x1cd1e8=_0x1cd1e8-0x0;var _0x804573=_0x2a6d[_0x1cd1e8];return _0x804573;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd2a6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd2a6('0x1'));var rp=require(_0xd2a6('0x2'));var moment=require(_0xd2a6('0x3'));var BPromise=require(_0xd2a6('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xd2a6('0x5'));var sox=require(_0xd2a6('0x6'));var csv=require(_0xd2a6('0x7'));var ejs=require(_0xd2a6('0x8'));var fs=require('fs');var fs_extra=require(_0xd2a6('0x9'));var _=require(_0xd2a6('0xa'));var squel=require(_0xd2a6('0xb'));var crypto=require('crypto');var jsforce=require(_0xd2a6('0xc'));var deskjs=require(_0xd2a6('0xd'));var toCsv=require(_0xd2a6('0x7'));var querystring=require(_0xd2a6('0xe'));var Papa=require(_0xd2a6('0xf'));var Redis=require(_0xd2a6('0x10'));var authService=require(_0xd2a6('0x11'));var qs=require(_0xd2a6('0x12'));var as=require(_0xd2a6('0x13'));var hardwareService=require(_0xd2a6('0x14'));var logger=require('../../config/logger')(_0xd2a6('0x15'));var utils=require(_0xd2a6('0x16'));var config=require(_0xd2a6('0x17'));var licenseUtil=require(_0xd2a6('0x18'));var db=require(_0xd2a6('0x19'))['db'];function respondWithStatusCode(_0x4ea357,_0x5c8aa8){_0x5c8aa8=_0x5c8aa8||0xcc;return function(_0x4fb43a){if(_0x4fb43a){return _0x4ea357[_0xd2a6('0x1a')](_0x5c8aa8);}return _0x4ea357[_0xd2a6('0x1b')](_0x5c8aa8)[_0xd2a6('0x1c')]();};}function respondWithResult(_0x3ca101,_0x28fb67){_0x28fb67=_0x28fb67||0xc8;return function(_0x3e9084){if(_0x3e9084){return _0x3ca101['status'](_0x28fb67)[_0xd2a6('0x1d')](_0x3e9084);}};}function respondWithFilteredResult(_0x270491,_0x3a42b7){return function(_0x33ab80){if(_0x33ab80){var _0x31618e=typeof _0x3a42b7[_0xd2a6('0x1e')]===_0xd2a6('0x1f')&&typeof _0x3a42b7[_0xd2a6('0x20')]===_0xd2a6('0x1f');var _0x30b3be=_0x33ab80[_0xd2a6('0x21')];var _0x4f3665=_0x31618e?0x0:_0x3a42b7[_0xd2a6('0x1e')];var _0x362214=_0x31618e?_0x33ab80[_0xd2a6('0x21')]:_0x3a42b7['offset']+_0x3a42b7['limit'];var _0x44ec5f;if(_0x362214>=_0x30b3be){_0x362214=_0x30b3be;_0x44ec5f=0xc8;}else{_0x44ec5f=0xce;}_0x270491['status'](_0x44ec5f);return _0x270491[_0xd2a6('0x22')](_0xd2a6('0x23'),_0x4f3665+'-'+_0x362214+'/'+_0x30b3be)['json'](_0x33ab80);}return null;};}function patchUpdates(_0xddfac4){return function(_0xf57926){try{jsonpatch['apply'](_0xf57926,_0xddfac4,!![]);}catch(_0x4f7d65){return BPromise['reject'](_0x4f7d65);}return _0xf57926['save']();};}function saveUpdates(_0x1330f4,_0x238dce){return function(_0xa2fe3c){if(_0xa2fe3c){return _0xa2fe3c[_0xd2a6('0x24')](_0x1330f4)[_0xd2a6('0x25')](function(_0x1653e4){return _0x1653e4;});}return null;};}function removeEntity(_0x5bbeea,_0x288272){return function(_0x420022){if(_0x420022){return _0x420022['destroy']()[_0xd2a6('0x25')](function(){var _0x5165dc=_0x420022[_0xd2a6('0x26')]({'plain':!![]});var _0x58d6e7=_0xd2a6('0x27');return db[_0xd2a6('0x28')][_0xd2a6('0x29')]({'where':{'type':_0x58d6e7,'resourceId':_0x5165dc['id']}})[_0xd2a6('0x25')](function(){return _0x420022;});})[_0xd2a6('0x25')](function(){_0x5bbeea['status'](0xcc)[_0xd2a6('0x1c')]();});}};}function handleEntityNotFound(_0xc9f879,_0x569ee4){return function(_0x2a171c){if(!_0x2a171c){_0xc9f879['sendStatus'](0x194);}return _0x2a171c;};}function handleError(_0x586682,_0x457cce){_0x457cce=_0x457cce||0x1f4;return function(_0x102270){logger['error'](_0x102270[_0xd2a6('0x2a')]);if(_0x102270[_0xd2a6('0x2b')]){delete _0x102270['name'];}_0x586682[_0xd2a6('0x1b')](_0x457cce)['send'](_0x102270);};}exports[_0xd2a6('0x2c')]=function(_0xa453b3,_0x100509){var _0x33bec7={},_0x4721d9={},_0x46a687={'count':0x0,'rows':[]};var _0xa75d89=_[_0xd2a6('0x2d')](db[_0xd2a6('0x2e')][_0xd2a6('0x2f')],function(_0x116561){return{'name':_0x116561['fieldName'],'type':_0x116561['type']['key']};});_0x4721d9['model']=_['map'](_0xa75d89,_0xd2a6('0x2b'));_0x4721d9['query']=_[_0xd2a6('0x30')](_0xa453b3['query']);_0x4721d9[_0xd2a6('0x31')]=_[_0xd2a6('0x32')](_0x4721d9['model'],_0x4721d9[_0xd2a6('0x33')]);_0x33bec7[_0xd2a6('0x34')]=_[_0xd2a6('0x32')](_0x4721d9[_0xd2a6('0x35')],qs['fields'](_0xa453b3[_0xd2a6('0x33')][_0xd2a6('0x36')]));_0x33bec7[_0xd2a6('0x34')]=_0x33bec7[_0xd2a6('0x34')][_0xd2a6('0x37')]?_0x33bec7[_0xd2a6('0x34')]:_0x4721d9[_0xd2a6('0x35')];if(!_0xa453b3[_0xd2a6('0x33')][_0xd2a6('0x38')]('nolimit')){_0x33bec7['limit']=qs[_0xd2a6('0x20')](_0xa453b3[_0xd2a6('0x33')][_0xd2a6('0x20')]);_0x33bec7['offset']=qs['offset'](_0xa453b3[_0xd2a6('0x33')][_0xd2a6('0x1e')]);}_0x33bec7[_0xd2a6('0x39')]=qs[_0xd2a6('0x3a')](_0xa453b3[_0xd2a6('0x33')][_0xd2a6('0x3a')]);_0x33bec7[_0xd2a6('0x3b')]=qs['filters'](_[_0xd2a6('0x3c')](_0xa453b3['query'],_0x4721d9[_0xd2a6('0x31')]),_0xa75d89);if(_0xa453b3[_0xd2a6('0x33')][_0xd2a6('0x3d')]){_0x33bec7[_0xd2a6('0x3b')]=_[_0xd2a6('0x3e')](_0x33bec7[_0xd2a6('0x3b')],{'$or':_['map'](_0xa75d89,function(_0xc6342b){if(_0xc6342b[_0xd2a6('0x3f')]!=='VIRTUAL'){var _0x47e3b3={};_0x47e3b3[_0xc6342b[_0xd2a6('0x2b')]]={'$like':'%'+_0xa453b3[_0xd2a6('0x33')][_0xd2a6('0x3d')]+'%'};return _0x47e3b3;}})});}_0x33bec7=_[_0xd2a6('0x3e')]({},_0x33bec7,_0xa453b3['options']);var _0x56246d={'where':_0x33bec7[_0xd2a6('0x3b')]};return db[_0xd2a6('0x2e')][_0xd2a6('0x21')](_0x56246d)[_0xd2a6('0x25')](function(_0x3e3388){_0x46a687['count']=_0x3e3388;if(_0xa453b3[_0xd2a6('0x33')][_0xd2a6('0x40')]){_0x33bec7[_0xd2a6('0x41')]=[{'all':!![]}];}return db['Variable'][_0xd2a6('0x42')](_0x33bec7);})[_0xd2a6('0x25')](function(_0x215ea4){_0x46a687[_0xd2a6('0x43')]=_0x215ea4;return _0x46a687;})[_0xd2a6('0x25')](respondWithFilteredResult(_0x100509,_0x33bec7))[_0xd2a6('0x44')](handleError(_0x100509,null));};exports[_0xd2a6('0x45')]=function(_0x5cdcaa,_0x462cef){var _0x28121e={'raw':!![],'where':{'id':_0x5cdcaa[_0xd2a6('0x46')]['id']}},_0x2cb6d9={};_0x2cb6d9['model']=_[_0xd2a6('0x30')](db[_0xd2a6('0x2e')][_0xd2a6('0x2f')]);_0x2cb6d9[_0xd2a6('0x33')]=_[_0xd2a6('0x30')](_0x5cdcaa[_0xd2a6('0x33')]);_0x2cb6d9[_0xd2a6('0x31')]=_[_0xd2a6('0x32')](_0x2cb6d9[_0xd2a6('0x35')],_0x2cb6d9['query']);_0x28121e[_0xd2a6('0x34')]=_['intersection'](_0x2cb6d9['model'],qs[_0xd2a6('0x36')](_0x5cdcaa[_0xd2a6('0x33')][_0xd2a6('0x36')]));_0x28121e[_0xd2a6('0x34')]=_0x28121e[_0xd2a6('0x34')]['length']?_0x28121e[_0xd2a6('0x34')]:_0x2cb6d9['model'];if(_0x5cdcaa[_0xd2a6('0x33')][_0xd2a6('0x40')]){_0x28121e[_0xd2a6('0x41')]=[{'all':!![]}];}_0x28121e=_[_0xd2a6('0x3e')]({},_0x28121e,_0x5cdcaa[_0xd2a6('0x47')]);return db['Variable'][_0xd2a6('0x48')](_0x28121e)[_0xd2a6('0x25')](handleEntityNotFound(_0x462cef,null))[_0xd2a6('0x25')](respondWithResult(_0x462cef,null))['catch'](handleError(_0x462cef,null));};exports[_0xd2a6('0x49')]=function(_0x522887,_0x4c876a){return db['Variable'][_0xd2a6('0x49')](_0x522887['body'],{})[_0xd2a6('0x25')](function(_0x2a5894){var _0x51bcd3=_0x522887['user'][_0xd2a6('0x26')]({'plain':!![]});if(!_0x51bcd3)throw new Error(_0xd2a6('0x4a'));if(_0x51bcd3[_0xd2a6('0x4b')]===_0xd2a6('0x4c')){var _0x283474=_0x2a5894['get']({'plain':!![]});var _0x1a719d=_0xd2a6('0x27');return db['UserProfileSection'][_0xd2a6('0x48')]({'where':{'name':_0x1a719d,'userProfileId':_0x51bcd3['userProfileId']},'raw':!![]})[_0xd2a6('0x25')](function(_0x1c6c8e){if(_0x1c6c8e&&_0x1c6c8e[_0xd2a6('0x4d')]===0x0){return db[_0xd2a6('0x28')][_0xd2a6('0x49')]({'name':_0x283474[_0xd2a6('0x2b')],'resourceId':_0x283474['id'],'type':_0x1c6c8e['name'],'sectionId':_0x1c6c8e['id']},{})[_0xd2a6('0x25')](function(){return _0x2a5894;});}else{return _0x2a5894;}})[_0xd2a6('0x44')](function(_0x88460f){logger[_0xd2a6('0x4e')](_0xd2a6('0x4f'),_0x88460f);throw _0x88460f;});}return _0x2a5894;})['then'](respondWithResult(_0x4c876a,0xc9))['catch'](handleError(_0x4c876a,null));};exports[_0xd2a6('0x24')]=function(_0x17ce9c,_0x2e62e7){if(_0x17ce9c[_0xd2a6('0x50')]['id']){delete _0x17ce9c[_0xd2a6('0x50')]['id'];}return db[_0xd2a6('0x2e')][_0xd2a6('0x48')]({'where':{'id':_0x17ce9c['params']['id']}})[_0xd2a6('0x25')](handleEntityNotFound(_0x2e62e7,null))['then'](saveUpdates(_0x17ce9c[_0xd2a6('0x50')],null))[_0xd2a6('0x25')](respondWithResult(_0x2e62e7,null))['catch'](handleError(_0x2e62e7,null));};exports[_0xd2a6('0x29')]=function(_0x26323f,_0x171c9c){return db[_0xd2a6('0x2e')][_0xd2a6('0x48')]({'where':{'id':_0x26323f[_0xd2a6('0x46')]['id']}})[_0xd2a6('0x25')](handleEntityNotFound(_0x171c9c,null))[_0xd2a6('0x25')](removeEntity(_0x171c9c,null))[_0xd2a6('0x44')](handleError(_0x171c9c,null));};
\ No newline at end of file
+var _0x42fd=['squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','then','destroy','get','Variables','UserProfileResource','error','stack','name','send','index','map','Variable','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','order','sort','pick','filter','where','merge','options','include','findAll','rows','catch','params','keys','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash'];(function(_0x371655,_0x4cd20f){var _0x3a4c99=function(_0x56ef70){while(--_0x56ef70){_0x371655['push'](_0x371655['shift']());}};_0x3a4c99(++_0x4cd20f);}(_0x42fd,0x1d5));var _0xd42f=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0x42fd[_0x3ff085];return _0x2b68c3;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xd42f('0x0'));var jsonpatch=require(_0xd42f('0x1'));var rp=require(_0xd42f('0x2'));var moment=require(_0xd42f('0x3'));var BPromise=require(_0xd42f('0x4'));var Mustache=require(_0xd42f('0x5'));var util=require(_0xd42f('0x6'));var path=require(_0xd42f('0x7'));var sox=require(_0xd42f('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd42f('0x9'));var _=require(_0xd42f('0xa'));var squel=require(_0xd42f('0xb'));var crypto=require(_0xd42f('0xc'));var jsforce=require(_0xd42f('0xd'));var deskjs=require(_0xd42f('0xe'));var toCsv=require('to-csv');var querystring=require(_0xd42f('0xf'));var Papa=require(_0xd42f('0x10'));var Redis=require(_0xd42f('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xd42f('0x12'))(_0xd42f('0x13'));var utils=require(_0xd42f('0x14'));var config=require(_0xd42f('0x15'));var licenseUtil=require(_0xd42f('0x16'));var db=require(_0xd42f('0x17'))['db'];function respondWithStatusCode(_0xf05ae,_0x50473f){_0x50473f=_0x50473f||0xcc;return function(_0x2f8e9a){if(_0x2f8e9a){return _0xf05ae[_0xd42f('0x18')](_0x50473f);}return _0xf05ae[_0xd42f('0x19')](_0x50473f)[_0xd42f('0x1a')]();};}function respondWithResult(_0x1d761f,_0x5a8bec){_0x5a8bec=_0x5a8bec||0xc8;return function(_0x396d54){if(_0x396d54){return _0x1d761f[_0xd42f('0x19')](_0x5a8bec)[_0xd42f('0x1b')](_0x396d54);}};}function respondWithFilteredResult(_0x5e6824,_0x506586){return function(_0x5d86cf){if(_0x5d86cf){var _0x44da59=typeof _0x506586[_0xd42f('0x1c')]===_0xd42f('0x1d')&&typeof _0x506586[_0xd42f('0x1e')]===_0xd42f('0x1d');var _0x4ecb10=_0x5d86cf['count'];var _0x1ef4dd=_0x44da59?0x0:_0x506586[_0xd42f('0x1c')];var _0xd150d8=_0x44da59?_0x5d86cf[_0xd42f('0x1f')]:_0x506586[_0xd42f('0x1c')]+_0x506586[_0xd42f('0x1e')];var _0x2a8b90;if(_0xd150d8>=_0x4ecb10){_0xd150d8=_0x4ecb10;_0x2a8b90=0xc8;}else{_0x2a8b90=0xce;}_0x5e6824['status'](_0x2a8b90);return _0x5e6824[_0xd42f('0x20')]('Content-Range',_0x1ef4dd+'-'+_0xd150d8+'/'+_0x4ecb10)['json'](_0x5d86cf);}return null;};}function patchUpdates(_0x44fe57){return function(_0x56b9ed){try{jsonpatch[_0xd42f('0x21')](_0x56b9ed,_0x44fe57,!![]);}catch(_0x3e81bd){return BPromise['reject'](_0x3e81bd);}return _0x56b9ed['save']();};}function saveUpdates(_0x3a49f5,_0x3e8673){return function(_0x303ad5){if(_0x303ad5){return _0x303ad5['update'](_0x3a49f5)[_0xd42f('0x22')](function(_0x5991c9){return _0x5991c9;});}return null;};}function removeEntity(_0x2f1943,_0xa1b5a1){return function(_0x826fd7){if(_0x826fd7){return _0x826fd7[_0xd42f('0x23')]()[_0xd42f('0x22')](function(){var _0x5e1c7a=_0x826fd7[_0xd42f('0x24')]({'plain':!![]});var _0x464abb=_0xd42f('0x25');return db[_0xd42f('0x26')][_0xd42f('0x23')]({'where':{'type':_0x464abb,'resourceId':_0x5e1c7a['id']}})[_0xd42f('0x22')](function(){return _0x826fd7;});})[_0xd42f('0x22')](function(){_0x2f1943[_0xd42f('0x19')](0xcc)[_0xd42f('0x1a')]();});}};}function handleEntityNotFound(_0x26d6c3,_0x36acd5){return function(_0x2d8703){if(!_0x2d8703){_0x26d6c3[_0xd42f('0x18')](0x194);}return _0x2d8703;};}function handleError(_0x342924,_0x5d6c5e){_0x5d6c5e=_0x5d6c5e||0x1f4;return function(_0xb0e914){logger[_0xd42f('0x27')](_0xb0e914[_0xd42f('0x28')]);if(_0xb0e914[_0xd42f('0x29')]){delete _0xb0e914[_0xd42f('0x29')];}_0x342924['status'](_0x5d6c5e)[_0xd42f('0x2a')](_0xb0e914);};}exports[_0xd42f('0x2b')]=function(_0x4e1cfc,_0x527c7e){var _0x2eefad={},_0x469171={},_0x1de7a4={'count':0x0,'rows':[]};var _0x301ae7=_[_0xd42f('0x2c')](db[_0xd42f('0x2d')][_0xd42f('0x2e')],function(_0xeba283){return{'name':_0xeba283[_0xd42f('0x2f')],'type':_0xeba283[_0xd42f('0x30')][_0xd42f('0x31')]};});_0x469171[_0xd42f('0x32')]=_[_0xd42f('0x2c')](_0x301ae7,_0xd42f('0x29'));_0x469171['query']=_['keys'](_0x4e1cfc[_0xd42f('0x33')]);_0x469171[_0xd42f('0x34')]=_['intersection'](_0x469171[_0xd42f('0x32')],_0x469171['query']);_0x2eefad[_0xd42f('0x35')]=_[_0xd42f('0x36')](_0x469171[_0xd42f('0x32')],qs[_0xd42f('0x37')](_0x4e1cfc[_0xd42f('0x33')][_0xd42f('0x37')]));_0x2eefad[_0xd42f('0x35')]=_0x2eefad[_0xd42f('0x35')][_0xd42f('0x38')]?_0x2eefad[_0xd42f('0x35')]:_0x469171[_0xd42f('0x32')];if(!_0x4e1cfc[_0xd42f('0x33')]['hasOwnProperty']('nolimit')){_0x2eefad[_0xd42f('0x1e')]=qs[_0xd42f('0x1e')](_0x4e1cfc[_0xd42f('0x33')][_0xd42f('0x1e')]);_0x2eefad[_0xd42f('0x1c')]=qs[_0xd42f('0x1c')](_0x4e1cfc[_0xd42f('0x33')][_0xd42f('0x1c')]);}_0x2eefad[_0xd42f('0x39')]=qs[_0xd42f('0x3a')](_0x4e1cfc['query'][_0xd42f('0x3a')]);_0x2eefad['where']=qs[_0xd42f('0x34')](_[_0xd42f('0x3b')](_0x4e1cfc['query'],_0x469171[_0xd42f('0x34')]),_0x301ae7);if(_0x4e1cfc[_0xd42f('0x33')][_0xd42f('0x3c')]){_0x2eefad[_0xd42f('0x3d')]=_[_0xd42f('0x3e')](_0x2eefad[_0xd42f('0x3d')],{'$or':_[_0xd42f('0x2c')](_0x301ae7,function(_0x5e5dfb){if(_0x5e5dfb['type']!=='VIRTUAL'){var _0x5af8df={};_0x5af8df[_0x5e5dfb[_0xd42f('0x29')]]={'$like':'%'+_0x4e1cfc[_0xd42f('0x33')][_0xd42f('0x3c')]+'%'};return _0x5af8df;}})});}_0x2eefad=_['merge']({},_0x2eefad,_0x4e1cfc[_0xd42f('0x3f')]);var _0x5a2bb5={'where':_0x2eefad[_0xd42f('0x3d')]};return db[_0xd42f('0x2d')][_0xd42f('0x1f')](_0x5a2bb5)[_0xd42f('0x22')](function(_0x4f1b38){_0x1de7a4[_0xd42f('0x1f')]=_0x4f1b38;if(_0x4e1cfc[_0xd42f('0x33')]['includeAll']){_0x2eefad[_0xd42f('0x40')]=[{'all':!![]}];}return db['Variable'][_0xd42f('0x41')](_0x2eefad);})[_0xd42f('0x22')](function(_0x5ddec2){_0x1de7a4[_0xd42f('0x42')]=_0x5ddec2;return _0x1de7a4;})[_0xd42f('0x22')](respondWithFilteredResult(_0x527c7e,_0x2eefad))[_0xd42f('0x43')](handleError(_0x527c7e,null));};exports['show']=function(_0x43225d,_0x1ef83a){var _0x2ea777={'raw':!![],'where':{'id':_0x43225d[_0xd42f('0x44')]['id']}},_0x3ae9b0={};_0x3ae9b0['model']=_[_0xd42f('0x45')](db['Variable'][_0xd42f('0x2e')]);_0x3ae9b0[_0xd42f('0x33')]=_['keys'](_0x43225d[_0xd42f('0x33')]);_0x3ae9b0['filters']=_[_0xd42f('0x36')](_0x3ae9b0['model'],_0x3ae9b0[_0xd42f('0x33')]);_0x2ea777[_0xd42f('0x35')]=_[_0xd42f('0x36')](_0x3ae9b0[_0xd42f('0x32')],qs[_0xd42f('0x37')](_0x43225d[_0xd42f('0x33')][_0xd42f('0x37')]));_0x2ea777[_0xd42f('0x35')]=_0x2ea777[_0xd42f('0x35')][_0xd42f('0x38')]?_0x2ea777['attributes']:_0x3ae9b0[_0xd42f('0x32')];if(_0x43225d[_0xd42f('0x33')][_0xd42f('0x46')]){_0x2ea777['include']=[{'all':!![]}];}_0x2ea777=_[_0xd42f('0x3e')]({},_0x2ea777,_0x43225d[_0xd42f('0x3f')]);return db[_0xd42f('0x2d')][_0xd42f('0x47')](_0x2ea777)[_0xd42f('0x22')](handleEntityNotFound(_0x1ef83a,null))[_0xd42f('0x22')](respondWithResult(_0x1ef83a,null))[_0xd42f('0x43')](handleError(_0x1ef83a,null));};exports['create']=function(_0x4338e7,_0x516e61){return db[_0xd42f('0x2d')][_0xd42f('0x48')](_0x4338e7[_0xd42f('0x49')],{})[_0xd42f('0x22')](function(_0x16a0e1){var _0x5a22f6=_0x4338e7[_0xd42f('0x4a')][_0xd42f('0x24')]({'plain':!![]});if(!_0x5a22f6)throw new Error(_0xd42f('0x4b'));if(_0x5a22f6[_0xd42f('0x4c')]===_0xd42f('0x4a')){var _0x10cf66=_0x16a0e1[_0xd42f('0x24')]({'plain':!![]});var _0x11be01=_0xd42f('0x25');return db['UserProfileSection'][_0xd42f('0x47')]({'where':{'name':_0x11be01,'userProfileId':_0x5a22f6[_0xd42f('0x4d')]},'raw':!![]})[_0xd42f('0x22')](function(_0x435f6d){if(_0x435f6d&&_0x435f6d['autoAssociation']===0x0){return db[_0xd42f('0x26')]['create']({'name':_0x10cf66[_0xd42f('0x29')],'resourceId':_0x10cf66['id'],'type':_0x435f6d[_0xd42f('0x29')],'sectionId':_0x435f6d['id']},{})[_0xd42f('0x22')](function(){return _0x16a0e1;});}else{return _0x16a0e1;}})[_0xd42f('0x43')](function(_0x57e104){logger[_0xd42f('0x27')](_0xd42f('0x4e'),_0x57e104);throw _0x57e104;});}return _0x16a0e1;})[_0xd42f('0x22')](respondWithResult(_0x516e61,0xc9))[_0xd42f('0x43')](handleError(_0x516e61,null));};exports[_0xd42f('0x4f')]=function(_0x50b227,_0x303524){if(_0x50b227[_0xd42f('0x49')]['id']){delete _0x50b227['body']['id'];}return db['Variable'][_0xd42f('0x47')]({'where':{'id':_0x50b227[_0xd42f('0x44')]['id']}})['then'](handleEntityNotFound(_0x303524,null))[_0xd42f('0x22')](saveUpdates(_0x50b227[_0xd42f('0x49')],null))[_0xd42f('0x22')](respondWithResult(_0x303524,null))['catch'](handleError(_0x303524,null));};exports[_0xd42f('0x23')]=function(_0x408214,_0x1889cf){return db['Variable'][_0xd42f('0x47')]({'where':{'id':_0x408214[_0xd42f('0x44')]['id']}})['then'](handleEntityNotFound(_0x1889cf,null))[_0xd42f('0x22')](removeEntity(_0x1889cf,null))[_0xd42f('0x43')](handleError(_0x1889cf,null));};
\ No newline at end of file
index dce56c0..b49527a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9a9=['api','moment','request-promise','rimraf','../../config/environment','./variable.attributes','exports','Variable'];(function(_0x33d1b1,_0x2e5809){var _0x289df0=function(_0x4745b2){while(--_0x4745b2){_0x33d1b1['push'](_0x33d1b1['shift']());}};_0x289df0(++_0x2e5809);}(_0xb9a9,0xd0));var _0x9b9a=function(_0x111818,_0x43edc3){_0x111818=_0x111818-0x0;var _0x47c8ca=_0xb9a9[_0x111818];return _0x47c8ca;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x9b9a('0x0'));var moment=require(_0x9b9a('0x1'));var BPromise=require('bluebird');var rp=require(_0x9b9a('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9b9a('0x3'));var config=require(_0x9b9a('0x4'));var attributes=require(_0x9b9a('0x5'));module[_0x9b9a('0x6')]=function(_0x4ca093,_0x2b5b17){return _0x4ca093['define'](_0x9b9a('0x7'),attributes,{'tableName':'tools_variables','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3a63=['rimraf','../../config/environment','exports','define','Variable','lodash','../../config/logger','bluebird','request-promise','path'];(function(_0x49ff44,_0x451d60){var _0x24440f=function(_0x4b8c45){while(--_0x4b8c45){_0x49ff44['push'](_0x49ff44['shift']());}};_0x24440f(++_0x451d60);}(_0x3a63,0xcd));var _0x33a6=function(_0x11a962,_0x3cc338){_0x11a962=_0x11a962-0x0;var _0x55d423=_0x3a63[_0x11a962];return _0x55d423;};'use strict';var _=require(_0x33a6('0x0'));var util=require('util');var logger=require(_0x33a6('0x1'))('api');var moment=require('moment');var BPromise=require(_0x33a6('0x2'));var rp=require(_0x33a6('0x3'));var fs=require('fs');var path=require(_0x33a6('0x4'));var rimraf=require(_0x33a6('0x5'));var config=require(_0x33a6('0x6'));var attributes=require('./variable.attributes');module[_0x33a6('0x7')]=function(_0xf2a567,_0x3f78d8){return _0xf2a567[_0x33a6('0x8')](_0x33a6('0x9'),attributes,{'tableName':'tools_variables','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bd13153..1006197 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ef6=['result','catch','Variable','find','options','raw','include','model','attributes','map','ShowVariable','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x2fefdc,_0x8160c9){var _0xf3823a=function(_0x118d21){while(--_0x118d21){_0x2fefdc['push'](_0x2fefdc['shift']());}};_0xf3823a(++_0x8160c9);}(_0x8ef6,0xf2));var _0x68ef=function(_0x63e988,_0x1779ee){_0x63e988=_0x63e988-0x0;var _0x2243d5=_0x8ef6[_0x63e988];return _0x2243d5;};'use strict';var _=require(_0x68ef('0x0'));var util=require(_0x68ef('0x1'));var moment=require(_0x68ef('0x2'));var BPromise=require(_0x68ef('0x3'));var rs=require(_0x68ef('0x4'));var fs=require('fs');var Redis=require(_0x68ef('0x5'));var db=require(_0x68ef('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x68ef('0x7'))(_0x68ef('0x8'));var config=require(_0x68ef('0x9'));var jayson=require(_0x68ef('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3c2ff3,_0x4740e8,_0x2de776){return new BPromise(function(_0x4eb5eb,_0x228967){return client[_0x68ef('0xb')](_0x3c2ff3,_0x2de776)[_0x68ef('0xc')](function(_0x22ae26){logger[_0x68ef('0xd')](_0x68ef('0xe'),_0x4740e8,_0x68ef('0xf'));logger[_0x68ef('0x10')](_0x68ef('0x11'),_0x4740e8,_0x68ef('0xf'),JSON[_0x68ef('0x12')](_0x22ae26));if(_0x22ae26[_0x68ef('0x13')]){if(_0x22ae26['error'][_0x68ef('0x14')]===0x1f4){logger[_0x68ef('0x13')](_0x68ef('0xe'),_0x4740e8,_0x22ae26[_0x68ef('0x13')][_0x68ef('0x15')]);return _0x228967(_0x22ae26[_0x68ef('0x13')]['message']);}logger[_0x68ef('0x13')](_0x68ef('0xe'),_0x4740e8,_0x22ae26[_0x68ef('0x13')]['message']);return _0x4eb5eb(_0x22ae26[_0x68ef('0x13')][_0x68ef('0x15')]);}else{logger[_0x68ef('0xd')]('Variable,\x20%s,\x20%s',_0x4740e8,_0x68ef('0xf'));_0x4eb5eb(_0x22ae26[_0x68ef('0x16')][_0x68ef('0x15')]);}})[_0x68ef('0x17')](function(_0x5c4456){logger[_0x68ef('0x13')]('Variable,\x20%s,\x20%s',_0x4740e8,_0x5c4456);_0x228967(_0x5c4456);});});}exports['ShowVariable']=function(_0x2633c1){var _0x404870=this;return new Promise(function(_0x4ade0d,_0x527870){return db[_0x68ef('0x18')][_0x68ef('0x19')]({'raw':_0x2633c1[_0x68ef('0x1a')]?_0x2633c1['options'][_0x68ef('0x1b')]===undefined?!![]:![]:!![],'where':_0x2633c1[_0x68ef('0x1a')]?_0x2633c1[_0x68ef('0x1a')]['where']||null:null,'attributes':_0x2633c1[_0x68ef('0x1a')]?_0x2633c1[_0x68ef('0x1a')]['attributes']||null:null,'include':_0x2633c1[_0x68ef('0x1a')]?_0x2633c1[_0x68ef('0x1a')][_0x68ef('0x1c')]?_['map'](_0x2633c1['options']['include'],function(_0x26018d){return{'model':db[_0x26018d[_0x68ef('0x1d')]],'as':_0x26018d['as'],'attributes':_0x26018d[_0x68ef('0x1e')],'include':_0x26018d[_0x68ef('0x1c')]?_[_0x68ef('0x1f')](_0x26018d[_0x68ef('0x1c')],function(_0x258cd5){return{'model':db[_0x258cd5[_0x68ef('0x1d')]],'as':_0x258cd5['as'],'attributes':_0x258cd5[_0x68ef('0x1e')],'include':_0x258cd5[_0x68ef('0x1c')]?_['map'](_0x258cd5[_0x68ef('0x1c')],function(_0x57f9ee){return{'model':db[_0x57f9ee['model']],'as':_0x57f9ee['as'],'attributes':_0x57f9ee['attributes']};}):[]};}):[]};}):[]:[]})[_0x68ef('0xc')](function(_0x268f32){logger[_0x68ef('0xd')](_0x68ef('0x20'),_0x2633c1);logger['debug']('ShowVariable',_0x2633c1,JSON[_0x68ef('0x12')](_0x268f32));_0x4ade0d(_0x268f32);})[_0x68ef('0x17')](function(_0x7bf96){logger[_0x68ef('0x13')](_0x68ef('0x20'),_0x7bf96[_0x68ef('0x15')],_0x2633c1);_0x527870(_0x404870[_0x68ef('0x13')](0x1f4,_0x7bf96[_0x68ef('0x15')]));});});};
\ No newline at end of file
+var _0x7217=['where','attributes','map','include','model','ShowVariable','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Variable,\x20%s,\x20%s','debug','Variable,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','Variable','find','options','raw'];(function(_0x44846c,_0x383207){var _0x35d0f4=function(_0x2d80a3){while(--_0x2d80a3){_0x44846c['push'](_0x44846c['shift']());}};_0x35d0f4(++_0x383207);}(_0x7217,0x19e));var _0x7721=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0x7217[_0x3c2a69];return _0x596bc8;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var moment=require(_0x7721('0x1'));var BPromise=require(_0x7721('0x2'));var rs=require(_0x7721('0x3'));var fs=require('fs');var Redis=require(_0x7721('0x4'));var db=require(_0x7721('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7721('0x6'));var config=require(_0x7721('0x7'));var jayson=require(_0x7721('0x8'));var client=jayson[_0x7721('0x9')][_0x7721('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xf7ff37,_0x18ab6b,_0x21f680){return new BPromise(function(_0x225610,_0x2f99ed){return client[_0x7721('0xb')](_0xf7ff37,_0x21f680)[_0x7721('0xc')](function(_0xfa8835){logger[_0x7721('0xd')](_0x7721('0xe'),_0x18ab6b,'request\x20sent');logger[_0x7721('0xf')](_0x7721('0x10'),_0x18ab6b,_0x7721('0x11'),JSON[_0x7721('0x12')](_0xfa8835));if(_0xfa8835[_0x7721('0x13')]){if(_0xfa8835[_0x7721('0x13')][_0x7721('0x14')]===0x1f4){logger[_0x7721('0x13')]('Variable,\x20%s,\x20%s',_0x18ab6b,_0xfa8835[_0x7721('0x13')][_0x7721('0x15')]);return _0x2f99ed(_0xfa8835['error'][_0x7721('0x15')]);}logger[_0x7721('0x13')](_0x7721('0xe'),_0x18ab6b,_0xfa8835[_0x7721('0x13')]['message']);return _0x225610(_0xfa8835[_0x7721('0x13')][_0x7721('0x15')]);}else{logger['info']('Variable,\x20%s,\x20%s',_0x18ab6b,'request\x20sent');_0x225610(_0xfa8835[_0x7721('0x16')][_0x7721('0x15')]);}})[_0x7721('0x17')](function(_0x32550d){logger['error'](_0x7721('0xe'),_0x18ab6b,_0x32550d);_0x2f99ed(_0x32550d);});});}exports['ShowVariable']=function(_0x3fc09e){var _0x5cb0e6=this;return new Promise(function(_0xfec626,_0x4e96fb){return db[_0x7721('0x18')][_0x7721('0x19')]({'raw':_0x3fc09e[_0x7721('0x1a')]?_0x3fc09e[_0x7721('0x1a')][_0x7721('0x1b')]===undefined?!![]:![]:!![],'where':_0x3fc09e[_0x7721('0x1a')]?_0x3fc09e[_0x7721('0x1a')][_0x7721('0x1c')]||null:null,'attributes':_0x3fc09e['options']?_0x3fc09e[_0x7721('0x1a')][_0x7721('0x1d')]||null:null,'include':_0x3fc09e[_0x7721('0x1a')]?_0x3fc09e[_0x7721('0x1a')]['include']?_[_0x7721('0x1e')](_0x3fc09e['options'][_0x7721('0x1f')],function(_0x288e3a){return{'model':db[_0x288e3a[_0x7721('0x20')]],'as':_0x288e3a['as'],'attributes':_0x288e3a[_0x7721('0x1d')],'include':_0x288e3a[_0x7721('0x1f')]?_[_0x7721('0x1e')](_0x288e3a[_0x7721('0x1f')],function(_0x5b4d74){return{'model':db[_0x5b4d74[_0x7721('0x20')]],'as':_0x5b4d74['as'],'attributes':_0x5b4d74[_0x7721('0x1d')],'include':_0x5b4d74[_0x7721('0x1f')]?_[_0x7721('0x1e')](_0x5b4d74[_0x7721('0x1f')],function(_0x16355a){return{'model':db[_0x16355a[_0x7721('0x20')]],'as':_0x16355a['as'],'attributes':_0x16355a[_0x7721('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x7721('0xc')](function(_0x52316e){logger[_0x7721('0xd')]('ShowVariable',_0x3fc09e);logger['debug'](_0x7721('0x21'),_0x3fc09e,JSON[_0x7721('0x12')](_0x52316e));_0xfec626(_0x52316e);})[_0x7721('0x17')](function(_0x158d98){logger[_0x7721('0x13')](_0x7721('0x21'),_0x158d98[_0x7721('0x15')],_0x3fc09e);_0x4e96fb(_0x5cb0e6[_0x7721('0x13')](0x1f4,_0x158d98['message']));});});};
\ No newline at end of file
index 5bc0306..d3332b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc78b=['./version.controller','index','get','/fetch','isAuthenticated','fetch','/reset','reset','/pull','canUpdate','pull','/restart','restart','/migrations','exports','Router'];(function(_0xd3348b,_0x288d47){var _0x583cdc=function(_0x743e06){while(--_0x743e06){_0xd3348b['push'](_0xd3348b['shift']());}};_0x583cdc(++_0x288d47);}(_0xc78b,0x6f));var _0xbc78=function(_0x32e3b3,_0x241ff1){_0x32e3b3=_0x32e3b3-0x0;var _0x336303=_0xc78b[_0x32e3b3];return _0x336303;};'use strict';var express=require('express');var router=express[_0xbc78('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0xbc78('0x1'));router['get']('/',controller[_0xbc78('0x2')]);router[_0xbc78('0x3')](_0xbc78('0x4'),auth[_0xbc78('0x5')](),auth['canUpdate'](),controller[_0xbc78('0x6')]);router['get'](_0xbc78('0x7'),auth[_0xbc78('0x5')](),auth['canUpdate'](),controller[_0xbc78('0x8')]);router[_0xbc78('0x3')](_0xbc78('0x9'),auth[_0xbc78('0x5')](),auth[_0xbc78('0xa')](),controller[_0xbc78('0xb')]);router['get'](_0xbc78('0xc'),auth[_0xbc78('0x5')](),controller[_0xbc78('0xd')]);router['get'](_0xbc78('0xe'),controller['migrations']);module[_0xbc78('0xf')]=router;
\ No newline at end of file
+var _0xae66=['index','/fetch','canUpdate','fetch','/reset','isAuthenticated','reset','/pull','pull','/restart','restart','migrations','exports','express','Router','get'];(function(_0x3ec341,_0x1c35ff){var _0x441170=function(_0x4b4b4c){while(--_0x4b4b4c){_0x3ec341['push'](_0x3ec341['shift']());}};_0x441170(++_0x1c35ff);}(_0xae66,0x9d));var _0x6ae6=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0xae66[_0x599f41];return _0x2e4d58;};'use strict';var express=require(_0x6ae6('0x0'));var router=express[_0x6ae6('0x1')]();var auth=require('../../components/auth/service');var controller=require('./version.controller');router[_0x6ae6('0x2')]('/',controller[_0x6ae6('0x3')]);router[_0x6ae6('0x2')](_0x6ae6('0x4'),auth['isAuthenticated'](),auth[_0x6ae6('0x5')](),controller[_0x6ae6('0x6')]);router['get'](_0x6ae6('0x7'),auth[_0x6ae6('0x8')](),auth[_0x6ae6('0x5')](),controller[_0x6ae6('0x9')]);router['get'](_0x6ae6('0xa'),auth[_0x6ae6('0x8')](),auth['canUpdate'](),controller[_0x6ae6('0xb')]);router[_0x6ae6('0x2')](_0x6ae6('0xc'),auth['isAuthenticated'](),controller[_0x6ae6('0xd')]);router[_0x6ae6('0x2')]('/migrations',controller[_0x6ae6('0xe')]);module[_0x6ae6('0xf')]=router;
\ No newline at end of file
index 2326d62..4b348cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d12=['latest','tags','json','status','fetch','origin','info','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD','error','git\x20reset\x20--hard','pull','npm\x20install\x20--production','restart','motion2','then','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','migrations','readdirSync','join','server','length','replace','.js','push','sequelize','Migration','getQueryInterface','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','map','\x20to\x20','last','catch','Database\x20already\x20up-to-date','path','lodash','pkginfo','version','child_process','exec','../../mysqldb','../../config/environment','../../config/logger','update','simple-git','root','index','exports','query'];(function(_0x4967b1,_0x2155f1){var _0x24a1f4=function(_0x3774e2){while(--_0x3774e2){_0x4967b1['push'](_0x4967b1['shift']());}};_0x24a1f4(++_0x2155f1);}(_0x9d12,0x93));var _0x29d1=function(_0x5800fe,_0x235218){_0x5800fe=_0x5800fe-0x0;var _0xcaa77e=_0x9d12[_0x5800fe];return _0xcaa77e;};'use strict';var Umzug=require('umzug');var path=require(_0x29d1('0x0'));var fs=require('fs');var _=require(_0x29d1('0x1'));var pkginfo=require(_0x29d1('0x2'))(module,_0x29d1('0x3'));var compareVersions=require('compare-versions');var exec=require(_0x29d1('0x4'))[_0x29d1('0x5')];var db=require(_0x29d1('0x6'))['db'];var config=require(_0x29d1('0x7'));var pm2=require('../../config/pm2');var logger=require(_0x29d1('0x8'))(_0x29d1('0x9'));var git=require(_0x29d1('0xa'))(config[_0x29d1('0xb')]);exports[_0x29d1('0xc')]=function(_0x2e0cb0,_0x1bba46){var _0x4613aa={'current':module[_0x29d1('0xd')][_0x29d1('0x3')],'phonebar':0x2};if(_0x2e0cb0[_0x29d1('0xe')]&&_0x2e0cb0['query'][_0x29d1('0xf')]){return git['fetch']()[_0x29d1('0x10')](function(_0x3178d0,_0x5dfd08){_0x4613aa[_0x29d1('0xf')]=(_0x3178d0?module[_0x29d1('0xd')]['version']:_0x5dfd08['latest'])||'2.0.0';return _0x1bba46['status'](0xc8)[_0x29d1('0x11')](_0x4613aa);});}else{return _0x1bba46[_0x29d1('0x12')](0xc8)[_0x29d1('0x11')](_0x4613aa);}};exports['fetch']=function(_0x28ecb2,_0x343caa){return git[_0x29d1('0x13')]([_0x29d1('0x14'),'master'],function(_0x273edb){if(_0x273edb){logger['error'](_0x273edb);return _0x343caa['status'](0x1f4)[_0x29d1('0x11')](_0x273edb);}logger[_0x29d1('0x15')](_0x29d1('0x16'));return _0x343caa[_0x29d1('0x12')](0xc8)[_0x29d1('0x11')]({'output':_0x29d1('0x17')});});};exports[_0x29d1('0x18')]=function(_0x4b38a7,_0x11decf){return git[_0x29d1('0x18')]([_0x29d1('0x19'),_0x29d1('0x1a')],function(_0x482e79){if(_0x482e79){logger[_0x29d1('0x1b')](_0x482e79);return _0x11decf[_0x29d1('0x12')](0x1f4)[_0x29d1('0x11')](_0x482e79);}logger[_0x29d1('0x15')]('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x11decf[_0x29d1('0x12')](0xc8)[_0x29d1('0x11')]({'output':_0x29d1('0x1c')});});};exports[_0x29d1('0x1d')]=function(_0x43fff7,_0x40f77e){exec(_0x29d1('0x1e'),function(_0x8975ca,_0x3f9b5a,_0x3623b4){logger['info'](_0x3f9b5a);logger[_0x29d1('0x15')](_0x3623b4);if(_0x8975ca){logger[_0x29d1('0x1b')](_0x8975ca);return _0x40f77e['status'](0x1f4)[_0x29d1('0x11')](_0x8975ca);}return _0x40f77e['status'](0xc8)[_0x29d1('0x11')]({'output':_0x3f9b5a});});};exports[_0x29d1('0x1f')]=function(_0x87bd1,_0xa0f384){return pm2[_0x29d1('0x1f')](_0x29d1('0x20'))[_0x29d1('0x21')](function(_0x321b69){logger[_0x29d1('0x15')](_0x29d1('0x22'),_0x321b69);return _0xa0f384[_0x29d1('0x12')](0xc8)[_0x29d1('0x11')]({'output':_0x29d1('0x23')});})['catch'](function(_0x3cdcad){logger[_0x29d1('0x1b')](_0x3cdcad);return _0xa0f384[_0x29d1('0x12')](0x1f4)[_0x29d1('0x11')](_0x3cdcad);});};exports[_0x29d1('0x24')]=function(_0x54d09b,_0x5e07af){var _0x39c493=fs[_0x29d1('0x25')](path[_0x29d1('0x26')](config[_0x29d1('0xb')],_0x29d1('0x27'),_0x29d1('0x24')));var _0x26ca8f=[];for(var _0x6336cf=0x0;_0x6336cf<_0x39c493[_0x29d1('0x28')];_0x6336cf++){var _0x2e577b=_0x39c493[_0x6336cf][_0x29d1('0x29')](_0x29d1('0x2a'),'');if(compareVersions(module[_0x29d1('0xd')][_0x29d1('0x3')],_0x2e577b)===-0x1){_0x26ca8f[_0x29d1('0x2b')](_0x2e577b);}}if(_0x26ca8f[_0x29d1('0x28')]){var _0x11c0b9=_0x26ca8f['sort'](compareVersions);var _0x294fef=new Umzug({'storage':_0x29d1('0x2c'),'storageOptions':{'model':db[_0x29d1('0x2d')],'modelName':'Migration','columnName':_0x29d1('0x3')},'migrations':{'params':[db['sequelize'][_0x29d1('0x2e')](),db[_0x29d1('0x2c')][_0x29d1('0x2f')],function(){throw new Error(_0x29d1('0x30'));}],'path':path[_0x29d1('0x26')](config[_0x29d1('0xb')],_0x29d1('0x27'),_0x29d1('0x24')),'pattern':/\.js$/}});_0x294fef['up']({'migrations':_[_0x29d1('0x31')](_0x11c0b9,function(_0x28fd3a){return _0x28fd3a+_0x29d1('0x2a');})})[_0x29d1('0x21')](function(){return _0x5e07af[_0x29d1('0x12')](0xc8)[_0x29d1('0x11')]({'output':'Database\x20migrated\x20successfully\x20from\x20version\x20'+module[_0x29d1('0xd')]['version']+_0x29d1('0x32')+_[_0x29d1('0x33')](_0x11c0b9),'migrations':_[_0x29d1('0x26')](_0x11c0b9)});})[_0x29d1('0x34')](function(_0x225576){if(_0x225576 instanceof db['sequelize']['UniqueConstraintError']){return _0x5e07af[_0x29d1('0x12')](0xc8)[_0x29d1('0x11')]({'output':_0x29d1('0x35')});}else{return _0x5e07af['status'](0x1f4)['json'](_0x225576);}});}else{return _0x5e07af['status'](0xc8)[_0x29d1('0x11')]({'output':'Database\x20already\x20up-to-date'});}};
\ No newline at end of file
+var _0xf10a=['Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','catch','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','pkginfo','compare-versions','child_process','../../mysqldb','../../config/logger','update','simple-git','root','exports','query','latest','fetch','tags','version','2.0.0','status','json','origin','error','info','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','npm\x20install\x20--production','motion2','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','migrations','readdirSync','join','server','replace','.js','push','length','sequelize','Migration','getQueryInterface','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','then'];(function(_0x3144b3,_0x45f961){var _0x2517a9=function(_0x15af07){while(--_0x15af07){_0x3144b3['push'](_0x3144b3['shift']());}};_0x2517a9(++_0x45f961);}(_0xf10a,0xd2));var _0xaf10=function(_0x5d4f12,_0x11e67c){_0x5d4f12=_0x5d4f12-0x0;var _0x4eb577=_0xf10a[_0x5d4f12];return _0x4eb577;};'use strict';var Umzug=require(_0xaf10('0x0'));var path=require(_0xaf10('0x1'));var fs=require('fs');var _=require('lodash');var pkginfo=require(_0xaf10('0x2'))(module,'version');var compareVersions=require(_0xaf10('0x3'));var exec=require(_0xaf10('0x4'))['exec'];var db=require(_0xaf10('0x5'))['db'];var config=require('../../config/environment');var pm2=require('../../config/pm2');var logger=require(_0xaf10('0x6'))(_0xaf10('0x7'));var git=require(_0xaf10('0x8'))(config[_0xaf10('0x9')]);exports['index']=function(_0x31a8c0,_0x3afead){var _0x15bce2={'current':module[_0xaf10('0xa')]['version'],'phonebar':0x2};if(_0x31a8c0[_0xaf10('0xb')]&&_0x31a8c0[_0xaf10('0xb')][_0xaf10('0xc')]){return git[_0xaf10('0xd')]()[_0xaf10('0xe')](function(_0x1bbd2c,_0x22807c){_0x15bce2[_0xaf10('0xc')]=(_0x1bbd2c?module[_0xaf10('0xa')][_0xaf10('0xf')]:_0x22807c[_0xaf10('0xc')])||_0xaf10('0x10');return _0x3afead[_0xaf10('0x11')](0xc8)[_0xaf10('0x12')](_0x15bce2);});}else{return _0x3afead[_0xaf10('0x11')](0xc8)[_0xaf10('0x12')](_0x15bce2);}};exports[_0xaf10('0xd')]=function(_0x2772c0,_0x49916e){return git['fetch']([_0xaf10('0x13'),'master'],function(_0x2b616f){if(_0x2b616f){logger[_0xaf10('0x14')](_0x2b616f);return _0x49916e['status'](0x1f4)[_0xaf10('0x12')](_0x2b616f);}logger[_0xaf10('0x15')](_0xaf10('0x16'));return _0x49916e[_0xaf10('0x11')](0xc8)[_0xaf10('0x12')]({'output':_0xaf10('0x17')});});};exports[_0xaf10('0x18')]=function(_0x2f1ff9,_0x4fd096){return git[_0xaf10('0x18')]([_0xaf10('0x19'),'FETCH_HEAD'],function(_0x2a1d93){if(_0x2a1d93){logger['error'](_0x2a1d93);return _0x4fd096[_0xaf10('0x11')](0x1f4)['json'](_0x2a1d93);}logger[_0xaf10('0x15')](_0xaf10('0x1a'));return _0x4fd096[_0xaf10('0x11')](0xc8)['json']({'output':_0xaf10('0x1b')});});};exports['pull']=function(_0x57cc1d,_0x160b04){exec(_0xaf10('0x1c'),function(_0x215e30,_0xaa1e36,_0x9d64a2){logger[_0xaf10('0x15')](_0xaa1e36);logger[_0xaf10('0x15')](_0x9d64a2);if(_0x215e30){logger[_0xaf10('0x14')](_0x215e30);return _0x160b04[_0xaf10('0x11')](0x1f4)[_0xaf10('0x12')](_0x215e30);}return _0x160b04[_0xaf10('0x11')](0xc8)[_0xaf10('0x12')]({'output':_0xaa1e36});});};exports['restart']=function(_0x2ece95,_0x315cb3){return pm2['restart'](_0xaf10('0x1d'))['then'](function(_0x4d6029){logger[_0xaf10('0x15')](_0xaf10('0x1e'),_0x4d6029);return _0x315cb3['status'](0xc8)['json']({'output':_0xaf10('0x1f')});})['catch'](function(_0x430105){logger[_0xaf10('0x14')](_0x430105);return _0x315cb3[_0xaf10('0x11')](0x1f4)['json'](_0x430105);});};exports[_0xaf10('0x20')]=function(_0xde22a2,_0x493994){var _0x42587d=fs[_0xaf10('0x21')](path[_0xaf10('0x22')](config['root'],_0xaf10('0x23'),'migrations'));var _0x499dac=[];for(var _0x579b60=0x0;_0x579b60<_0x42587d['length'];_0x579b60++){var _0x3fb77b=_0x42587d[_0x579b60][_0xaf10('0x24')](_0xaf10('0x25'),'');if(compareVersions(module[_0xaf10('0xa')]['version'],_0x3fb77b)===-0x1){_0x499dac[_0xaf10('0x26')](_0x3fb77b);}}if(_0x499dac[_0xaf10('0x27')]){var _0x488e61=_0x499dac['sort'](compareVersions);var _0x248aa3=new Umzug({'storage':_0xaf10('0x28'),'storageOptions':{'model':db[_0xaf10('0x29')],'modelName':_0xaf10('0x29'),'columnName':_0xaf10('0xf')},'migrations':{'params':[db[_0xaf10('0x28')][_0xaf10('0x2a')](),db[_0xaf10('0x28')]['constructor'],function(){throw new Error(_0xaf10('0x2b'));}],'path':path[_0xaf10('0x22')](config['root'],_0xaf10('0x23'),_0xaf10('0x20')),'pattern':/\.js$/}});_0x248aa3['up']({'migrations':_['map'](_0x488e61,function(_0x4f8fd2){return _0x4f8fd2+_0xaf10('0x25');})})[_0xaf10('0x2c')](function(){return _0x493994['status'](0xc8)[_0xaf10('0x12')]({'output':_0xaf10('0x2d')+module[_0xaf10('0xa')][_0xaf10('0xf')]+_0xaf10('0x2e')+_[_0xaf10('0x2f')](_0x488e61),'migrations':_[_0xaf10('0x22')](_0x488e61)});})[_0xaf10('0x30')](function(_0x5e0cfe){if(_0x5e0cfe instanceof db[_0xaf10('0x28')][_0xaf10('0x31')]){return _0x493994['status'](0xc8)['json']({'output':_0xaf10('0x32')});}else{return _0x493994[_0xaf10('0x11')](0x1f4)[_0xaf10('0x12')](_0x5e0cfe);}});}else{return _0x493994[_0xaf10('0x11')](0xc8)[_0xaf10('0x12')]({'output':'Database\x20already\x20up-to-date'});}};
\ No newline at end of file
index a5a10bf..2d0fcac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb48a=['show','update','delete','/:id','exports','util','path','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceAgentReport.controller','get','isAuthenticated','index','describe'];(function(_0x1e08f8,_0x40723d){var _0x9c34d=function(_0x5db273){while(--_0x5db273){_0x1e08f8['push'](_0x1e08f8['shift']());}};_0x9c34d(++_0x40723d);}(_0xb48a,0x1d5));var _0xab48=function(_0x47c5c2,_0x14a5b4){_0x47c5c2=_0x47c5c2-0x0;var _0x296d13=_0xb48a[_0x47c5c2];return _0x296d13;};'use strict';var multer=require('multer');var util=require(_0xab48('0x0'));var path=require(_0xab48('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xab48('0x2')]();var fs_extra=require(_0xab48('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xab48('0x4'));var config=require(_0xab48('0x5'));var controller=require(_0xab48('0x6'));router[_0xab48('0x7')]('/',auth[_0xab48('0x8')](),controller[_0xab48('0x9')]);router[_0xab48('0x7')]('/describe',auth[_0xab48('0x8')](),controller[_0xab48('0xa')]);router[_0xab48('0x7')]('/:id',auth[_0xab48('0x8')](),controller[_0xab48('0xb')]);router['post']('/',auth[_0xab48('0x8')](),controller['create']);router['put']('/:id',auth[_0xab48('0x8')](),controller[_0xab48('0xc')]);router[_0xab48('0xd')](_0xab48('0xe'),auth[_0xab48('0x8')](),controller['destroy']);module[_0xab48('0xf')]=router;
\ No newline at end of file
+var _0x160d=['fs-extra','../../components/auth/service','../../config/environment','./voiceAgentReport.controller','get','isAuthenticated','index','/describe','/:id','show','post','update','delete','multer','util','path','connect-timeout','express','Router'];(function(_0x567c4c,_0x1235ba){var _0x40d87d=function(_0x1662cd){while(--_0x1662cd){_0x567c4c['push'](_0x567c4c['shift']());}};_0x40d87d(++_0x1235ba);}(_0x160d,0x117));var _0xd160=function(_0x132df5,_0x1620b4){_0x132df5=_0x132df5-0x0;var _0x265348=_0x160d[_0x132df5];return _0x265348;};'use strict';var multer=require(_0xd160('0x0'));var util=require(_0xd160('0x1'));var path=require(_0xd160('0x2'));var timeout=require(_0xd160('0x3'));var express=require(_0xd160('0x4'));var router=express[_0xd160('0x5')]();var fs_extra=require(_0xd160('0x6'));var auth=require(_0xd160('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xd160('0x8'));var controller=require(_0xd160('0x9'));router[_0xd160('0xa')]('/',auth[_0xd160('0xb')](),controller[_0xd160('0xc')]);router[_0xd160('0xa')](_0xd160('0xd'),auth['isAuthenticated'](),controller['describe']);router[_0xd160('0xa')](_0xd160('0xe'),auth[_0xd160('0xb')](),controller[_0xd160('0xf')]);router[_0xd160('0x10')]('/',auth[_0xd160('0xb')](),controller['create']);router['put'](_0xd160('0xe'),auth[_0xd160('0xb')](),controller[_0xd160('0x11')]);router[_0xd160('0x12')]('/:id',auth[_0xd160('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index a93f39b..2c0dc49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdeb3=['INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','exports','STRING','DATE'];(function(_0xb6e257,_0x445cd7){var _0x33b778=function(_0x28ba38){while(--_0x28ba38){_0xb6e257['push'](_0xb6e257['shift']());}};_0x33b778(++_0x445cd7);}(_0xdeb3,0xb7));var _0x3deb=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xdeb3[_0x3ab51d];return _0x29a04e;};'use strict';var Sequelize=require('sequelize');module[_0x3deb('0x0')]={'type':{'type':Sequelize[_0x3deb('0x1')]},'uniqueid':{'type':Sequelize[_0x3deb('0x1')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x3deb('0x1')]},'interface':{'type':Sequelize[_0x3deb('0x1')]},'membername':{'type':Sequelize[_0x3deb('0x1')]},'agentcalledAt':{'type':Sequelize[_0x3deb('0x2')]},'agentconnectAt':{'type':Sequelize[_0x3deb('0x2')]},'agentcompleteAt':{'type':Sequelize['DATE']},'agentringnoanswerAt':{'type':Sequelize[_0x3deb('0x2')]},'agentdumpAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0x3deb('0x3')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x3deb('0x4')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x3deb('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x3deb('0x3')]},'agentacw':{'type':Sequelize[_0x3deb('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x3deb('0x3')]},'reason':{'type':Sequelize[_0x3deb('0x1')]},'lastevent':{'type':Sequelize[_0x3deb('0x1')]},'channel':{'type':Sequelize[_0x3deb('0x1')]},'channelstate':{'type':Sequelize[_0x3deb('0x3')]},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0x3deb('0x1')]},'language':{'type':Sequelize[_0x3deb('0x1')]},'accountcode':{'type':Sequelize[_0x3deb('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x3deb('0x1')]},'priority':{'type':Sequelize[_0x3deb('0x1')]},'destchannel':{'type':Sequelize[_0x3deb('0x1')]},'destchannelstate':{'type':Sequelize[_0x3deb('0x3')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x3deb('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x3deb('0x1')]},'destlanguage':{'type':Sequelize[_0x3deb('0x1')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x3deb('0x1')]},'destexten':{'type':Sequelize[_0x3deb('0x1')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize[_0x3deb('0x1')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x3deb('0x1')]},'answeredelsewheremembername':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0x3deb('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0x3deb('0x5')},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize['STRING']},'agententerreason':{'type':Sequelize[_0x3deb('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xbb59=['STRING','DATE','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','exports'];(function(_0x2a06cc,_0x4ea95f){var _0x284681=function(_0x30ed43){while(--_0x30ed43){_0x2a06cc['push'](_0x2a06cc['shift']());}};_0x284681(++_0x4ea95f);}(_0xbb59,0xec));var _0x9bb5=function(_0x15491c,_0x440b65){_0x15491c=_0x15491c-0x0;var _0x155131=_0xbb59[_0x15491c];return _0x155131;};'use strict';var Sequelize=require(_0x9bb5('0x0'));module[_0x9bb5('0x1')]={'type':{'type':Sequelize[_0x9bb5('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x9bb5('0x2')]},'queue':{'type':Sequelize[_0x9bb5('0x2')]},'interface':{'type':Sequelize[_0x9bb5('0x2')]},'membername':{'type':Sequelize[_0x9bb5('0x2')]},'agentcalledAt':{'type':Sequelize[_0x9bb5('0x3')]},'agentconnectAt':{'type':Sequelize['DATE']},'agentcompleteAt':{'type':Sequelize[_0x9bb5('0x3')]},'agentringnoanswerAt':{'type':Sequelize[_0x9bb5('0x3')]},'agentdumpAt':{'type':Sequelize[_0x9bb5('0x3')]},'holdtime':{'type':Sequelize[_0x9bb5('0x4')]},'agentcomplete':{'type':Sequelize[_0x9bb5('0x5')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x9bb5('0x5')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x9bb5('0x5')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x9bb5('0x4')]},'agentacw':{'type':Sequelize[_0x9bb5('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x9bb5('0x4')]},'reason':{'type':Sequelize[_0x9bb5('0x2')]},'lastevent':{'type':Sequelize[_0x9bb5('0x2')]},'channel':{'type':Sequelize[_0x9bb5('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x9bb5('0x2')]},'connectedlinenum':{'type':Sequelize[_0x9bb5('0x2')]},'connectedlinename':{'type':Sequelize[_0x9bb5('0x2')]},'language':{'type':Sequelize[_0x9bb5('0x2')]},'accountcode':{'type':Sequelize[_0x9bb5('0x2')]},'context':{'type':Sequelize[_0x9bb5('0x2')]},'exten':{'type':Sequelize[_0x9bb5('0x2')]},'priority':{'type':Sequelize[_0x9bb5('0x2')]},'destchannel':{'type':Sequelize[_0x9bb5('0x2')]},'destchannelstate':{'type':Sequelize[_0x9bb5('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0x9bb5('0x2')]},'destcalleridnum':{'type':Sequelize[_0x9bb5('0x2')]},'destcalleridname':{'type':Sequelize[_0x9bb5('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x9bb5('0x2')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0x9bb5('0x2')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x9bb5('0x2')]},'destuniqueid':{'type':Sequelize['STRING']},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x9bb5('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0x9bb5('0x2')]},'transfer':{'type':Sequelize[_0x9bb5('0x5')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0x9bb5('0x6')},'transferexten':{'type':Sequelize[_0x9bb5('0x2')]},'transferuniqueid':{'type':Sequelize[_0x9bb5('0x2')]},'agententerreason':{'type':Sequelize[_0x9bb5('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index 9ead25b..0aa1110 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(_0x31a371,_0x50828e){var _0x2a5bd6=function(_0x2fb481){while(--_0x2fb481){_0x31a371['push'](_0x31a371['shift']());}};_0x2a5bd6(++_0x50828e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xa9e0[_0x5ddb1c];return _0x354adc;};'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(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0xa9e0[_0x29b609];return _0x54c952;};'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 c70efe7..a5f0244 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x254a=['../../config/environment','exports','report_agent','uniqueid','lodash','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x11005e,_0x20c3d2){var _0x29338f=function(_0x3384e9){while(--_0x3384e9){_0x11005e['push'](_0x11005e['shift']());}};_0x29338f(++_0x20c3d2);}(_0x254a,0x138));var _0xa254=function(_0x3a5d2f,_0x3d5590){_0x3a5d2f=_0x3a5d2f-0x0;var _0x107045=_0x254a[_0x3a5d2f];return _0x107045;};'use strict';var _=require(_0xa254('0x0'));var util=require(_0xa254('0x1'));var logger=require(_0xa254('0x2'))('api');var moment=require(_0xa254('0x3'));var BPromise=require(_0xa254('0x4'));var rp=require(_0xa254('0x5'));var fs=require('fs');var path=require(_0xa254('0x6'));var rimraf=require('rimraf');var config=require(_0xa254('0x7'));var attributes=require('./voiceAgentReport.attributes');module[_0xa254('0x8')]=function(_0x3d5886,_0x1201ae){return _0x3d5886['define']('VoiceAgentReport',attributes,{'tableName':_0xa254('0x9'),'paranoid':![],'indexes':[{'fields':[_0xa254('0xa'),'destuniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x43fd=['path','../../config/environment','./voiceAgentReport.attributes','exports','define','VoiceAgentReport','report_agent','uniqueid','util','moment','bluebird'];(function(_0x29ff4f,_0x157f0f){var _0x32a5c2=function(_0x42bb2b){while(--_0x42bb2b){_0x29ff4f['push'](_0x29ff4f['shift']());}};_0x32a5c2(++_0x157f0f);}(_0x43fd,0x1ec));var _0xd43f=function(_0x1835a5,_0x33237f){_0x1835a5=_0x1835a5-0x0;var _0x3800ec=_0x43fd[_0x1835a5];return _0x3800ec;};'use strict';var _=require('lodash');var util=require(_0xd43f('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xd43f('0x1'));var BPromise=require(_0xd43f('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd43f('0x3'));var rimraf=require('rimraf');var config=require(_0xd43f('0x4'));var attributes=require(_0xd43f('0x5'));module[_0xd43f('0x6')]=function(_0x33ddff,_0x52e75f){return _0x33ddff[_0xd43f('0x7')](_0xd43f('0x8'),attributes,{'tableName':_0xd43f('0x9'),'paranoid':![],'indexes':[{'fields':[_0xd43f('0xa'),'destuniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 2181412..ba55e1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9886=['body','options','raw','UpdateVoiceAgentReport','update','attributes','limit','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','VoiceAgentReport,\x20%s,\x20%s','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','CreateVoiceAgentReport','VoiceAgentReport','create'];(function(_0x1ed78f,_0x5ab61b){var _0x46f620=function(_0x44276e){while(--_0x44276e){_0x1ed78f['push'](_0x1ed78f['shift']());}};_0x46f620(++_0x5ab61b);}(_0x9886,0x17d));var _0x6988=function(_0x470657,_0xdc4d77){_0x470657=_0x470657-0x0;var _0x3e7125=_0x9886[_0x470657];return _0x3e7125;};'use strict';var _=require(_0x6988('0x0'));var util=require(_0x6988('0x1'));var moment=require(_0x6988('0x2'));var BPromise=require(_0x6988('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6988('0x4'));var db=require(_0x6988('0x5'))['db'];var utils=require(_0x6988('0x6'));var logger=require(_0x6988('0x7'))('rpc');var config=require(_0x6988('0x8'));var jayson=require(_0x6988('0x9'));var client=jayson[_0x6988('0xa')][_0x6988('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2df97a,_0xda0024,_0x4804ab){return new BPromise(function(_0x40e1d8,_0xf39776){return client[_0x6988('0xc')](_0x2df97a,_0x4804ab)[_0x6988('0xd')](function(_0x23a038){logger[_0x6988('0xe')](_0x6988('0xf'),_0xda0024,'request\x20sent');logger[_0x6988('0x10')](_0x6988('0x11'),_0xda0024,_0x6988('0x12'),JSON['stringify'](_0x23a038));if(_0x23a038[_0x6988('0x13')]){if(_0x23a038['error'][_0x6988('0x14')]===0x1f4){logger[_0x6988('0x13')](_0x6988('0xf'),_0xda0024,_0x23a038[_0x6988('0x13')]['message']);return _0xf39776(_0x23a038[_0x6988('0x13')]['message']);}logger['error'](_0x6988('0xf'),_0xda0024,_0x23a038[_0x6988('0x13')][_0x6988('0x15')]);return _0x40e1d8(_0x23a038[_0x6988('0x13')]['message']);}else{logger[_0x6988('0xe')](_0x6988('0xf'),_0xda0024,_0x6988('0x12'));_0x40e1d8(_0x23a038[_0x6988('0x16')][_0x6988('0x15')]);}})[_0x6988('0x17')](function(_0x49d1b3){logger['error'](_0x6988('0xf'),_0xda0024,_0x49d1b3);_0xf39776(_0x49d1b3);});});}exports[_0x6988('0x18')]=function(_0xba93e){var _0x441e2d=this;return new Promise(function(_0x186f33,_0x3f1164){return db[_0x6988('0x19')][_0x6988('0x1a')](_0xba93e[_0x6988('0x1b')],{'raw':_0xba93e[_0x6988('0x1c')]?_0xba93e['options'][_0x6988('0x1d')]===undefined?!![]:![]:!![]})[_0x6988('0xd')](function(_0x44b6ef){logger[_0x6988('0xe')](_0x6988('0x18'),_0xba93e);logger['debug'](_0x6988('0x18'),_0xba93e,JSON['stringify'](_0x44b6ef));_0x186f33(_0x44b6ef);})[_0x6988('0x17')](function(_0x1c0110){logger[_0x6988('0x13')](_0x6988('0x18'),_0x1c0110[_0x6988('0x15')],_0xba93e);_0x3f1164(_0x441e2d[_0x6988('0x13')](0x1f4,_0x1c0110[_0x6988('0x15')]));});});};exports[_0x6988('0x1e')]=function(_0x5ad43e){var _0x5cc91b=this;return new Promise(function(_0x5e10f4,_0x4d6288){return db['VoiceAgentReport'][_0x6988('0x1f')](_0x5ad43e[_0x6988('0x1b')],{'raw':_0x5ad43e[_0x6988('0x1c')]?_0x5ad43e[_0x6988('0x1c')][_0x6988('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5ad43e[_0x6988('0x1c')]?_0x5ad43e[_0x6988('0x1c')]['where']||null:null,'attributes':_0x5ad43e[_0x6988('0x1c')]?_0x5ad43e[_0x6988('0x1c')][_0x6988('0x20')]||null:null,'limit':_0x5ad43e[_0x6988('0x1c')]?_0x5ad43e[_0x6988('0x1c')][_0x6988('0x21')]||null:null})['then'](function(_0xf73f9){logger[_0x6988('0xe')](_0x6988('0x1e'),_0x5ad43e);logger[_0x6988('0x10')](_0x6988('0x1e'),_0x5ad43e,JSON['stringify'](_0xf73f9));_0x5e10f4(_0xf73f9);})[_0x6988('0x17')](function(_0x15232b){logger[_0x6988('0x13')](_0x6988('0x1e'),_0x15232b['message'],_0x5ad43e);_0x4d6288(_0x5cc91b[_0x6988('0x13')](0x1f4,_0x15232b[_0x6988('0x15')]));});});};
\ No newline at end of file
+var _0xcf51=['attributes','limit','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','request','info','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','VoiceAgentReport','body','options','raw','then','CreateVoiceAgentReport','UpdateVoiceAgentReport','update','where'];(function(_0x6bfbbf,_0x1ce7db){var _0x230576=function(_0x4e3aad){while(--_0x4e3aad){_0x6bfbbf['push'](_0x6bfbbf['shift']());}};_0x230576(++_0x1ce7db);}(_0xcf51,0x107));var _0x1cf5=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xcf51[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0x1cf5('0x0'));var moment=require('moment');var BPromise=require(_0x1cf5('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1cf5('0x2'));var db=require(_0x1cf5('0x3'))['db'];var utils=require(_0x1cf5('0x4'));var logger=require('../../config/logger')(_0x1cf5('0x5'));var config=require(_0x1cf5('0x6'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x472e43,_0x530f15,_0x26366d){return new BPromise(function(_0x48b3e3,_0x538d08){return client[_0x1cf5('0x7')](_0x472e43,_0x26366d)['then'](function(_0xfd8b36){logger[_0x1cf5('0x8')](_0x1cf5('0x9'),_0x530f15,_0x1cf5('0xa'));logger[_0x1cf5('0xb')](_0x1cf5('0xc'),_0x530f15,_0x1cf5('0xa'),JSON[_0x1cf5('0xd')](_0xfd8b36));if(_0xfd8b36[_0x1cf5('0xe')]){if(_0xfd8b36[_0x1cf5('0xe')][_0x1cf5('0xf')]===0x1f4){logger[_0x1cf5('0xe')](_0x1cf5('0x9'),_0x530f15,_0xfd8b36[_0x1cf5('0xe')][_0x1cf5('0x10')]);return _0x538d08(_0xfd8b36[_0x1cf5('0xe')][_0x1cf5('0x10')]);}logger[_0x1cf5('0xe')](_0x1cf5('0x9'),_0x530f15,_0xfd8b36[_0x1cf5('0xe')]['message']);return _0x48b3e3(_0xfd8b36[_0x1cf5('0xe')]['message']);}else{logger[_0x1cf5('0x8')](_0x1cf5('0x9'),_0x530f15,_0x1cf5('0xa'));_0x48b3e3(_0xfd8b36['result'][_0x1cf5('0x10')]);}})[_0x1cf5('0x11')](function(_0x348875){logger[_0x1cf5('0xe')](_0x1cf5('0x9'),_0x530f15,_0x348875);_0x538d08(_0x348875);});});}exports['CreateVoiceAgentReport']=function(_0x483eb3){var _0x1ada3c=this;return new Promise(function(_0x43b50a,_0x4c88f0){return db[_0x1cf5('0x12')]['create'](_0x483eb3[_0x1cf5('0x13')],{'raw':_0x483eb3['options']?_0x483eb3[_0x1cf5('0x14')][_0x1cf5('0x15')]===undefined?!![]:![]:!![]})[_0x1cf5('0x16')](function(_0x1a08ce){logger['info']('CreateVoiceAgentReport',_0x483eb3);logger[_0x1cf5('0xb')](_0x1cf5('0x17'),_0x483eb3,JSON[_0x1cf5('0xd')](_0x1a08ce));_0x43b50a(_0x1a08ce);})[_0x1cf5('0x11')](function(_0x5d7978){logger[_0x1cf5('0xe')](_0x1cf5('0x17'),_0x5d7978[_0x1cf5('0x10')],_0x483eb3);_0x4c88f0(_0x1ada3c[_0x1cf5('0xe')](0x1f4,_0x5d7978['message']));});});};exports[_0x1cf5('0x18')]=function(_0x21555d){var _0x3a3a58=this;return new Promise(function(_0x5db859,_0x16be47){return db[_0x1cf5('0x12')][_0x1cf5('0x19')](_0x21555d[_0x1cf5('0x13')],{'raw':_0x21555d[_0x1cf5('0x14')]?_0x21555d[_0x1cf5('0x14')][_0x1cf5('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x21555d[_0x1cf5('0x14')]?_0x21555d[_0x1cf5('0x14')][_0x1cf5('0x1a')]||null:null,'attributes':_0x21555d[_0x1cf5('0x14')]?_0x21555d['options'][_0x1cf5('0x1b')]||null:null,'limit':_0x21555d[_0x1cf5('0x14')]?_0x21555d[_0x1cf5('0x14')][_0x1cf5('0x1c')]||null:null})[_0x1cf5('0x16')](function(_0x201355){logger[_0x1cf5('0x8')](_0x1cf5('0x18'),_0x21555d);logger[_0x1cf5('0xb')](_0x1cf5('0x18'),_0x21555d,JSON[_0x1cf5('0xd')](_0x201355));_0x5db859(_0x201355);})[_0x1cf5('0x11')](function(_0x1b85fa){logger[_0x1cf5('0xe')](_0x1cf5('0x18'),_0x1b85fa[_0x1cf5('0x10')],_0x21555d);_0x16be47(_0x3a3a58['error'](0x1f4,_0x1b85fa[_0x1cf5('0x10')]));});});};
\ No newline at end of file
index 75af2ab..f8261a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3435=['path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','/describe','describe','/:id','show','create','put','delete','exports','multer','util'];(function(_0x483df5,_0x258b6d){var _0x318822=function(_0x27e992){while(--_0x27e992){_0x483df5['push'](_0x483df5['shift']());}};_0x318822(++_0x258b6d);}(_0x3435,0xfa));var _0x5343=function(_0x2becba,_0x4ea656){_0x2becba=_0x2becba-0x0;var _0x90b5dd=_0x3435[_0x2becba];return _0x90b5dd;};'use strict';var multer=require(_0x5343('0x0'));var util=require(_0x5343('0x1'));var path=require(_0x5343('0x2'));var timeout=require(_0x5343('0x3'));var express=require(_0x5343('0x4'));var router=express[_0x5343('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x5343('0x6'));var interaction=require(_0x5343('0x7'));var config=require('../../config/environment');var controller=require('./voiceCallReport.controller');router[_0x5343('0x8')]('/',auth[_0x5343('0x9')](),controller['index']);router['get'](_0x5343('0xa'),auth[_0x5343('0x9')](),controller[_0x5343('0xb')]);router[_0x5343('0x8')](_0x5343('0xc'),auth['isAuthenticated'](),controller[_0x5343('0xd')]);router['post']('/',auth[_0x5343('0x9')](),controller[_0x5343('0xe')]);router[_0x5343('0xf')](_0x5343('0xc'),auth[_0x5343('0x9')](),controller['update']);router[_0x5343('0x10')](_0x5343('0xc'),auth[_0x5343('0x9')](),controller['destroy']);module[_0x5343('0x11')]=router;
\ No newline at end of file
+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(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xeec6,0x1c2));var _0x6eec=function(_0x6d6a66,_0x2924af){_0x6d6a66=_0x6d6a66-0x0;var _0x11eb6e=_0xeec6[_0x6d6a66];return _0x11eb6e;};'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
index f4e323b..5f266be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e7b=['INTEGER','sequelize','exports','ENUM','inbound','outbound','inbound-fax','outbound-fax','dialer','STRING','TEXT','DATE'];(function(_0x3c9e97,_0x29a68d){var _0x179715=function(_0x3e40f8){while(--_0x3e40f8){_0x3c9e97['push'](_0x3c9e97['shift']());}};_0x179715(++_0x29a68d);}(_0x1e7b,0x12d));var _0xb1e7=function(_0xb14b26,_0x38cf9f){_0xb14b26=_0xb14b26-0x0;var _0xfdb28a=_0x1e7b[_0xb14b26];return _0xfdb28a;};'use strict';var Sequelize=require(_0xb1e7('0x0'));module[_0xb1e7('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xb1e7('0x2')](_0xb1e7('0x3'),'internal',_0xb1e7('0x4'),_0xb1e7('0x5'),_0xb1e7('0x6'),_0xb1e7('0x7'))},'tag':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xb1e7('0x8')]},'source':{'type':Sequelize[_0xb1e7('0x8')]},'destination':{'type':Sequelize[_0xb1e7('0x8')]},'destinationcontext':{'type':Sequelize[_0xb1e7('0x8')]},'callerid':{'type':Sequelize[_0xb1e7('0x8')]},'channel':{'type':Sequelize['STRING']},'destinationchannel':{'type':Sequelize[_0xb1e7('0x8')]},'lastapplication':{'type':Sequelize[_0xb1e7('0x8')]},'lastdata':{'type':Sequelize[_0xb1e7('0x9')]},'starttime':{'type':Sequelize[_0xb1e7('0xa')]},'systemanswertime':{'type':Sequelize[_0xb1e7('0xa')]},'answertime':{'type':Sequelize[_0xb1e7('0xa')]},'endtime':{'type':Sequelize[_0xb1e7('0xa')]},'duration':{'type':Sequelize[_0xb1e7('0xb')]},'billableseconds':{'type':Sequelize[_0xb1e7('0xb')]},'mohtime':{'type':Sequelize[_0xb1e7('0xb')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xb1e7('0x8')]},'amaflags':{'type':Sequelize[_0xb1e7('0x8')]},'userfield':{'type':Sequelize[_0xb1e7('0x8')]},'userDisposition':{'type':Sequelize[_0xb1e7('0x8')]},'userSecondDisposition':{'type':Sequelize[_0xb1e7('0x8')]},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0xb1e7('0x8')]},'routeid':{'type':Sequelize[_0xb1e7('0xb')]},'sipcallid':{'type':Sequelize[_0xb1e7('0x8')]}};
\ No newline at end of file
+var _0x2d03=['internal','outbound','inbound-fax','outbound-fax','TEXT','DATE','INTEGER','exports','STRING','ENUM'];(function(_0x57d9fe,_0x4b5ef0){var _0x52d4a9=function(_0x8f18be){while(--_0x8f18be){_0x57d9fe['push'](_0x57d9fe['shift']());}};_0x52d4a9(++_0x4b5ef0);}(_0x2d03,0x1e7));var _0x32d0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2d03[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0x32d0('0x0')]={'uniqueid':{'type':Sequelize[_0x32d0('0x1')]},'type':{'type':Sequelize[_0x32d0('0x2')]('inbound',_0x32d0('0x3'),_0x32d0('0x4'),_0x32d0('0x5'),_0x32d0('0x6'),'dialer')},'tag':{'type':Sequelize[_0x32d0('0x1')]},'accountcode':{'type':Sequelize[_0x32d0('0x1')]},'source':{'type':Sequelize[_0x32d0('0x1')]},'destination':{'type':Sequelize[_0x32d0('0x1')]},'destinationcontext':{'type':Sequelize[_0x32d0('0x1')]},'callerid':{'type':Sequelize[_0x32d0('0x1')]},'channel':{'type':Sequelize[_0x32d0('0x1')]},'destinationchannel':{'type':Sequelize[_0x32d0('0x1')]},'lastapplication':{'type':Sequelize[_0x32d0('0x1')]},'lastdata':{'type':Sequelize[_0x32d0('0x7')]},'starttime':{'type':Sequelize[_0x32d0('0x8')]},'systemanswertime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x32d0('0x8')]},'endtime':{'type':Sequelize[_0x32d0('0x8')]},'duration':{'type':Sequelize[_0x32d0('0x9')]},'billableseconds':{'type':Sequelize[_0x32d0('0x9')]},'mohtime':{'type':Sequelize[_0x32d0('0x9')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x32d0('0x1')]},'amaflags':{'type':Sequelize[_0x32d0('0x1')]},'userfield':{'type':Sequelize[_0x32d0('0x1')]},'userDisposition':{'type':Sequelize[_0x32d0('0x1')]},'userSecondDisposition':{'type':Sequelize[_0x32d0('0x1')]},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x32d0('0x1')]},'prefix':{'type':Sequelize[_0x32d0('0x1')]},'routeid':{'type':Sequelize[_0x32d0('0x9')]},'sipcallid':{'type':Sequelize[_0x32d0('0x1')]}};
\ No newline at end of file
index 7896922..ada86ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['options','includeAll','fullname','User','findAll','rows','catch','show','params','rawAttributes','intersection','include','find','create','destroy','describe','body','uniqueid','user','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','apply','save','update','then','sendStatus','error','stack','name','send','index','VoiceCallReport','fieldName','type','key','map','query','keys','model','fields','attributes','length','nolimit','order','sort','filters','filter','where','VIRTUAL','merge'];(function(_0x43e45f,_0x4f1436){var _0x34e59b=function(_0x3d0f52){while(--_0x3d0f52){_0x43e45f['push'](_0x43e45f['shift']());}};_0x34e59b(++_0x4f1436);}(_0xdb28,0x106));var _0x8db2=function(_0x129f4d,_0x561e8b){_0x129f4d=_0x129f4d-0x0;var _0x18fc13=_0xdb28[_0x129f4d];return _0x18fc13;};'use strict';var emlformat=require(_0x8db2('0x0'));var rimraf=require(_0x8db2('0x1'));var zipdir=require(_0x8db2('0x2'));var jsonpatch=require(_0x8db2('0x3'));var rp=require('request-promise');var moment=require(_0x8db2('0x4'));var BPromise=require(_0x8db2('0x5'));var Mustache=require(_0x8db2('0x6'));var util=require(_0x8db2('0x7'));var path=require(_0x8db2('0x8'));var sox=require('sox');var csv=require(_0x8db2('0x9'));var ejs=require(_0x8db2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8db2('0xb'));var crypto=require(_0x8db2('0xc'));var jsforce=require(_0x8db2('0xd'));var deskjs=require(_0x8db2('0xe'));var toCsv=require(_0x8db2('0x9'));var querystring=require(_0x8db2('0xf'));var Papa=require(_0x8db2('0x10'));var Redis=require('ioredis');var authService=require(_0x8db2('0x11'));var qs=require(_0x8db2('0x12'));var as=require(_0x8db2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8db2('0x14'))(_0x8db2('0x15'));var utils=require('../../config/utils');var config=require(_0x8db2('0x16'));var licenseUtil=require(_0x8db2('0x17'));var db=require(_0x8db2('0x18'))['db'];function respondWithStatusCode(_0x204f49,_0x37d017){_0x37d017=_0x37d017||0xcc;return function(_0x559fb1){if(_0x559fb1){return _0x204f49['sendStatus'](_0x37d017);}return _0x204f49[_0x8db2('0x19')](_0x37d017)[_0x8db2('0x1a')]();};}function respondWithResult(_0x350d61,_0x1d6a15){_0x1d6a15=_0x1d6a15||0xc8;return function(_0x227355){if(_0x227355){return _0x350d61[_0x8db2('0x19')](_0x1d6a15)[_0x8db2('0x1b')](_0x227355);}};}function respondWithFilteredResult(_0x3c96a7,_0x131252){return function(_0x16c8c2){if(_0x16c8c2){var _0x5489a9=typeof _0x131252[_0x8db2('0x1c')]===_0x8db2('0x1d')&&typeof _0x131252['limit']===_0x8db2('0x1d');var _0x44957d=_0x16c8c2[_0x8db2('0x1e')];var _0x3fddc2=_0x5489a9?0x0:_0x131252[_0x8db2('0x1c')];var _0x46ce14=_0x5489a9?_0x16c8c2['count']:_0x131252['offset']+_0x131252[_0x8db2('0x1f')];var _0x104e33;if(_0x46ce14>=_0x44957d){_0x46ce14=_0x44957d;_0x104e33=0xc8;}else{_0x104e33=0xce;}_0x3c96a7[_0x8db2('0x19')](_0x104e33);return _0x3c96a7[_0x8db2('0x20')]('Content-Range',_0x3fddc2+'-'+_0x46ce14+'/'+_0x44957d)[_0x8db2('0x1b')](_0x16c8c2);}return null;};}function patchUpdates(_0x36a9ff){return function(_0x260940){try{jsonpatch[_0x8db2('0x21')](_0x260940,_0x36a9ff,!![]);}catch(_0x3dbe8e){return BPromise['reject'](_0x3dbe8e);}return _0x260940[_0x8db2('0x22')]();};}function saveUpdates(_0x3e30e6,_0x18f69c){return function(_0x125be2){if(_0x125be2){return _0x125be2[_0x8db2('0x23')](_0x3e30e6)[_0x8db2('0x24')](function(_0x796ec1){return _0x796ec1;});}return null;};}function removeEntity(_0x5c6614,_0x256202){return function(_0x4f6516){if(_0x4f6516){return _0x4f6516['destroy']()['then'](function(){_0x5c6614['status'](0xcc)[_0x8db2('0x1a')]();});}};}function handleEntityNotFound(_0x29b5cd,_0x3be281){return function(_0x2baed0){if(!_0x2baed0){_0x29b5cd[_0x8db2('0x25')](0x194);}return _0x2baed0;};}function handleError(_0x8d4f54,_0x58cd9d){_0x58cd9d=_0x58cd9d||0x1f4;return function(_0x3544ba){logger[_0x8db2('0x26')](_0x3544ba[_0x8db2('0x27')]);if(_0x3544ba[_0x8db2('0x28')]){delete _0x3544ba['name'];}_0x8d4f54[_0x8db2('0x19')](_0x58cd9d)[_0x8db2('0x29')](_0x3544ba);};}exports[_0x8db2('0x2a')]=function(_0x1687ed,_0xbe5ece){var _0x21bae5={},_0xa54ea3={},_0x3124d5={'count':0x0,'rows':[]};var _0xbc5366=_['map'](db[_0x8db2('0x2b')]['rawAttributes'],function(_0x59cb77){return{'name':_0x59cb77[_0x8db2('0x2c')],'type':_0x59cb77[_0x8db2('0x2d')][_0x8db2('0x2e')]};});_0xa54ea3['model']=_[_0x8db2('0x2f')](_0xbc5366,'name');_0xa54ea3[_0x8db2('0x30')]=_[_0x8db2('0x31')](_0x1687ed[_0x8db2('0x30')]);_0xa54ea3['filters']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],_0xa54ea3[_0x8db2('0x30')]);_0x21bae5['attributes']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],qs[_0x8db2('0x33')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x33')]));_0x21bae5[_0x8db2('0x34')]=_0x21bae5[_0x8db2('0x34')][_0x8db2('0x35')]?_0x21bae5[_0x8db2('0x34')]:_0xa54ea3[_0x8db2('0x32')];if(!_0x1687ed[_0x8db2('0x30')]['hasOwnProperty'](_0x8db2('0x36'))){_0x21bae5[_0x8db2('0x1f')]=qs['limit'](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x1f')]);_0x21bae5['offset']=qs['offset'](_0x1687ed[_0x8db2('0x30')]['offset']);}_0x21bae5[_0x8db2('0x37')]=qs[_0x8db2('0x38')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x38')]);_0x21bae5['where']=qs[_0x8db2('0x39')](_['pick'](_0x1687ed[_0x8db2('0x30')],_0xa54ea3[_0x8db2('0x39')]),_0xbc5366);if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]){_0x21bae5['where']=_['merge'](_0x21bae5[_0x8db2('0x3b')],{'$or':_[_0x8db2('0x2f')](_0xbc5366,function(_0x5dc2b4){if(_0x5dc2b4[_0x8db2('0x2d')]!==_0x8db2('0x3c')){var _0x656dd2={};_0x656dd2[_0x5dc2b4['name']]={'$like':'%'+_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]+'%'};return _0x656dd2;}})});}_0x21bae5=_[_0x8db2('0x3d')]({},_0x21bae5,_0x1687ed[_0x8db2('0x3e')]);var _0x2e6f0c={'where':_0x21bae5[_0x8db2('0x3b')]};return db[_0x8db2('0x2b')][_0x8db2('0x1e')](_0x2e6f0c)[_0x8db2('0x24')](function(_0x63c561){_0x3124d5[_0x8db2('0x1e')]=_0x63c561;if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3f')]){_0x21bae5['include']=[{'attributes':['id',_0x8db2('0x28'),_0x8db2('0x40'),'alias'],'model':db['User'],'as':_0x8db2('0x41')}];}return db['VoiceCallReport'][_0x8db2('0x42')](_0x21bae5);})[_0x8db2('0x24')](function(_0x313130){_0x3124d5[_0x8db2('0x43')]=_0x313130;return _0x3124d5;})[_0x8db2('0x24')](respondWithFilteredResult(_0xbe5ece,_0x21bae5))[_0x8db2('0x44')](handleError(_0xbe5ece,null));};exports[_0x8db2('0x45')]=function(_0x5c97ef,_0x2f86b1){var _0x3d44de={'raw':!![],'where':{'id':_0x5c97ef[_0x8db2('0x46')]['id']}},_0x40c69e={};_0x40c69e['model']=_[_0x8db2('0x31')](db[_0x8db2('0x2b')][_0x8db2('0x47')]);_0x40c69e[_0x8db2('0x30')]=_['keys'](_0x5c97ef[_0x8db2('0x30')]);_0x40c69e['filters']=_[_0x8db2('0x48')](_0x40c69e[_0x8db2('0x32')],_0x40c69e[_0x8db2('0x30')]);_0x3d44de['attributes']=_['intersection'](_0x40c69e[_0x8db2('0x32')],qs['fields'](_0x5c97ef[_0x8db2('0x30')][_0x8db2('0x33')]));_0x3d44de[_0x8db2('0x34')]=_0x3d44de[_0x8db2('0x34')][_0x8db2('0x35')]?_0x3d44de[_0x8db2('0x34')]:_0x40c69e[_0x8db2('0x32')];if(_0x5c97ef[_0x8db2('0x30')][_0x8db2('0x3f')]){_0x3d44de[_0x8db2('0x49')]=[{'all':!![]}];}_0x3d44de=_[_0x8db2('0x3d')]({},_0x3d44de,_0x5c97ef[_0x8db2('0x3e')]);return db['VoiceCallReport'][_0x8db2('0x4a')](_0x3d44de)[_0x8db2('0x24')](handleEntityNotFound(_0x2f86b1,null))[_0x8db2('0x24')](respondWithResult(_0x2f86b1,null))[_0x8db2('0x44')](handleError(_0x2f86b1,null));};exports['create']=function(_0x4ffd9d,_0x11c224){return db[_0x8db2('0x2b')][_0x8db2('0x4b')](_0x4ffd9d['body'],{})['then'](respondWithResult(_0x11c224,0xc9))['catch'](handleError(_0x11c224,null));};exports[_0x8db2('0x4c')]=function(_0x368c37,_0x55c7dd){return db[_0x8db2('0x2b')][_0x8db2('0x4a')]({'where':{'id':_0x368c37[_0x8db2('0x46')]['id']}})[_0x8db2('0x24')](handleEntityNotFound(_0x55c7dd,null))['then'](removeEntity(_0x55c7dd,null))['catch'](handleError(_0x55c7dd,null));};exports[_0x8db2('0x4d')]=function(_0x18c6ef,_0x2908e4){return db[_0x8db2('0x2b')][_0x8db2('0x4d')]()[_0x8db2('0x24')](respondWithResult(_0x2908e4,null))[_0x8db2('0x44')](handleError(_0x2908e4,null));};exports[_0x8db2('0x23')]=function(_0x4187d6,_0x426ae0){if(_0x4187d6[_0x8db2('0x4e')][_0x8db2('0x4f')]){delete _0x4187d6[_0x8db2('0x4e')][_0x8db2('0x4f')];}return db[_0x8db2('0x2b')]['find']({'where':{'uniqueid':_0x4187d6[_0x8db2('0x46')]['id'],'UserId':{'$or':[null,_0x4187d6[_0x8db2('0x50')]['id']]}}})['then'](handleEntityNotFound(_0x426ae0,null))[_0x8db2('0x24')](saveUpdates(_0x4187d6[_0x8db2('0x4e')],null))[_0x8db2('0x24')](respondWithResult(_0x426ae0,null))['catch'](handleError(_0x426ae0,null));};
\ No newline at end of file
+var _0x5f2f=['stack','name','send','index','VoiceCallReport','rawAttributes','fieldName','type','map','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','filter','merge','where','options','includeAll','include','fullname','alias','User','findAll','catch','params','keys','find','create','body','destroy','describe','update','uniqueid','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then'];(function(_0x3acee8,_0x5f3924){var _0x5046cc=function(_0x338def){while(--_0x338def){_0x3acee8['push'](_0x3acee8['shift']());}};_0x5046cc(++_0x5f3924);}(_0x5f2f,0x73));var _0xf5f2=function(_0xb4016e,_0x52792b){_0xb4016e=_0xb4016e-0x0;var _0x1450bd=_0x5f2f[_0xb4016e];return _0x1450bd;};'use strict';var emlformat=require(_0xf5f2('0x0'));var rimraf=require(_0xf5f2('0x1'));var zipdir=require(_0xf5f2('0x2'));var jsonpatch=require(_0xf5f2('0x3'));var rp=require(_0xf5f2('0x4'));var moment=require(_0xf5f2('0x5'));var BPromise=require(_0xf5f2('0x6'));var Mustache=require(_0xf5f2('0x7'));var util=require('util');var path=require('path');var sox=require(_0xf5f2('0x8'));var csv=require(_0xf5f2('0x9'));var ejs=require(_0xf5f2('0xa'));var fs=require('fs');var fs_extra=require(_0xf5f2('0xb'));var _=require(_0xf5f2('0xc'));var squel=require(_0xf5f2('0xd'));var crypto=require('crypto');var jsforce=require(_0xf5f2('0xe'));var deskjs=require(_0xf5f2('0xf'));var toCsv=require(_0xf5f2('0x9'));var querystring=require('querystring');var Papa=require(_0xf5f2('0x10'));var Redis=require(_0xf5f2('0x11'));var authService=require(_0xf5f2('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xf5f2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf5f2('0x14'));var utils=require(_0xf5f2('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xf5f2('0x16'));var db=require(_0xf5f2('0x17'))['db'];function respondWithStatusCode(_0x331482,_0x3f2997){_0x3f2997=_0x3f2997||0xcc;return function(_0x59bb6c){if(_0x59bb6c){return _0x331482[_0xf5f2('0x18')](_0x3f2997);}return _0x331482['status'](_0x3f2997)[_0xf5f2('0x19')]();};}function respondWithResult(_0xea612c,_0x269909){_0x269909=_0x269909||0xc8;return function(_0x1c1a5c){if(_0x1c1a5c){return _0xea612c[_0xf5f2('0x1a')](_0x269909)['json'](_0x1c1a5c);}};}function respondWithFilteredResult(_0xafe430,_0x286197){return function(_0x17d656){if(_0x17d656){var _0x1b6dd2=typeof _0x286197[_0xf5f2('0x1b')]===_0xf5f2('0x1c')&&typeof _0x286197[_0xf5f2('0x1d')]===_0xf5f2('0x1c');var _0x11f702=_0x17d656[_0xf5f2('0x1e')];var _0x20fccd=_0x1b6dd2?0x0:_0x286197[_0xf5f2('0x1b')];var _0x4ff59b=_0x1b6dd2?_0x17d656[_0xf5f2('0x1e')]:_0x286197[_0xf5f2('0x1b')]+_0x286197[_0xf5f2('0x1d')];var _0x1bf655;if(_0x4ff59b>=_0x11f702){_0x4ff59b=_0x11f702;_0x1bf655=0xc8;}else{_0x1bf655=0xce;}_0xafe430['status'](_0x1bf655);return _0xafe430[_0xf5f2('0x1f')](_0xf5f2('0x20'),_0x20fccd+'-'+_0x4ff59b+'/'+_0x11f702)['json'](_0x17d656);}return null;};}function patchUpdates(_0x47acfc){return function(_0x2d2805){try{jsonpatch[_0xf5f2('0x21')](_0x2d2805,_0x47acfc,!![]);}catch(_0x4ae323){return BPromise[_0xf5f2('0x22')](_0x4ae323);}return _0x2d2805[_0xf5f2('0x23')]();};}function saveUpdates(_0x39e44a,_0x39c024){return function(_0x36f1cb){if(_0x36f1cb){return _0x36f1cb['update'](_0x39e44a)[_0xf5f2('0x24')](function(_0x4669a6){return _0x4669a6;});}return null;};}function removeEntity(_0x4e8bda,_0x2833fe){return function(_0x287ad5){if(_0x287ad5){return _0x287ad5['destroy']()['then'](function(){_0x4e8bda[_0xf5f2('0x1a')](0xcc)[_0xf5f2('0x19')]();});}};}function handleEntityNotFound(_0x13da6f,_0x1a5bb3){return function(_0xf6c58d){if(!_0xf6c58d){_0x13da6f[_0xf5f2('0x18')](0x194);}return _0xf6c58d;};}function handleError(_0x13a3be,_0x281ec8){_0x281ec8=_0x281ec8||0x1f4;return function(_0x294414){logger['error'](_0x294414[_0xf5f2('0x25')]);if(_0x294414[_0xf5f2('0x26')]){delete _0x294414[_0xf5f2('0x26')];}_0x13a3be[_0xf5f2('0x1a')](_0x281ec8)[_0xf5f2('0x27')](_0x294414);};}exports[_0xf5f2('0x28')]=function(_0x5b6672,_0x53cb96){var _0x22c826={},_0x14c829={},_0x11c771={'count':0x0,'rows':[]};var _0x5027ab=_['map'](db[_0xf5f2('0x29')][_0xf5f2('0x2a')],function(_0x17394a){return{'name':_0x17394a[_0xf5f2('0x2b')],'type':_0x17394a[_0xf5f2('0x2c')]['key']};});_0x14c829['model']=_[_0xf5f2('0x2d')](_0x5027ab,'name');_0x14c829[_0xf5f2('0x2e')]=_['keys'](_0x5b6672[_0xf5f2('0x2e')]);_0x14c829[_0xf5f2('0x2f')]=_[_0xf5f2('0x30')](_0x14c829[_0xf5f2('0x31')],_0x14c829[_0xf5f2('0x2e')]);_0x22c826[_0xf5f2('0x32')]=_[_0xf5f2('0x30')](_0x14c829[_0xf5f2('0x31')],qs['fields'](_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x33')]));_0x22c826[_0xf5f2('0x32')]=_0x22c826[_0xf5f2('0x32')][_0xf5f2('0x34')]?_0x22c826[_0xf5f2('0x32')]:_0x14c829[_0xf5f2('0x31')];if(!_0x5b6672['query'][_0xf5f2('0x35')](_0xf5f2('0x36'))){_0x22c826['limit']=qs[_0xf5f2('0x1d')](_0x5b6672['query'][_0xf5f2('0x1d')]);_0x22c826[_0xf5f2('0x1b')]=qs[_0xf5f2('0x1b')](_0x5b6672[_0xf5f2('0x2e')]['offset']);}_0x22c826['order']=qs[_0xf5f2('0x37')](_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x37')]);_0x22c826['where']=qs[_0xf5f2('0x2f')](_['pick'](_0x5b6672[_0xf5f2('0x2e')],_0x14c829['filters']),_0x5027ab);if(_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x38')]){_0x22c826['where']=_[_0xf5f2('0x39')](_0x22c826[_0xf5f2('0x3a')],{'$or':_[_0xf5f2('0x2d')](_0x5027ab,function(_0x35f738){if(_0x35f738['type']!=='VIRTUAL'){var _0x3d328f={};_0x3d328f[_0x35f738[_0xf5f2('0x26')]]={'$like':'%'+_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x38')]+'%'};return _0x3d328f;}})});}_0x22c826=_[_0xf5f2('0x39')]({},_0x22c826,_0x5b6672[_0xf5f2('0x3b')]);var _0x2bc20e={'where':_0x22c826['where']};return db[_0xf5f2('0x29')][_0xf5f2('0x1e')](_0x2bc20e)['then'](function(_0xc6a1ae){_0x11c771[_0xf5f2('0x1e')]=_0xc6a1ae;if(_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x3c')]){_0x22c826[_0xf5f2('0x3d')]=[{'attributes':['id',_0xf5f2('0x26'),_0xf5f2('0x3e'),_0xf5f2('0x3f')],'model':db['User'],'as':_0xf5f2('0x40')}];}return db[_0xf5f2('0x29')][_0xf5f2('0x41')](_0x22c826);})['then'](function(_0x509dbc){_0x11c771['rows']=_0x509dbc;return _0x11c771;})[_0xf5f2('0x24')](respondWithFilteredResult(_0x53cb96,_0x22c826))[_0xf5f2('0x42')](handleError(_0x53cb96,null));};exports['show']=function(_0x106272,_0xeed03d){var _0x28e33f={'raw':!![],'where':{'id':_0x106272[_0xf5f2('0x43')]['id']}},_0x31f86c={};_0x31f86c[_0xf5f2('0x31')]=_[_0xf5f2('0x44')](db[_0xf5f2('0x29')][_0xf5f2('0x2a')]);_0x31f86c[_0xf5f2('0x2e')]=_[_0xf5f2('0x44')](_0x106272[_0xf5f2('0x2e')]);_0x31f86c[_0xf5f2('0x2f')]=_[_0xf5f2('0x30')](_0x31f86c['model'],_0x31f86c[_0xf5f2('0x2e')]);_0x28e33f['attributes']=_[_0xf5f2('0x30')](_0x31f86c[_0xf5f2('0x31')],qs[_0xf5f2('0x33')](_0x106272[_0xf5f2('0x2e')][_0xf5f2('0x33')]));_0x28e33f[_0xf5f2('0x32')]=_0x28e33f['attributes'][_0xf5f2('0x34')]?_0x28e33f[_0xf5f2('0x32')]:_0x31f86c[_0xf5f2('0x31')];if(_0x106272[_0xf5f2('0x2e')][_0xf5f2('0x3c')]){_0x28e33f[_0xf5f2('0x3d')]=[{'all':!![]}];}_0x28e33f=_[_0xf5f2('0x39')]({},_0x28e33f,_0x106272[_0xf5f2('0x3b')]);return db['VoiceCallReport'][_0xf5f2('0x45')](_0x28e33f)[_0xf5f2('0x24')](handleEntityNotFound(_0xeed03d,null))[_0xf5f2('0x24')](respondWithResult(_0xeed03d,null))['catch'](handleError(_0xeed03d,null));};exports[_0xf5f2('0x46')]=function(_0xc91b64,_0x3179a9){return db['VoiceCallReport']['create'](_0xc91b64[_0xf5f2('0x47')],{})[_0xf5f2('0x24')](respondWithResult(_0x3179a9,0xc9))['catch'](handleError(_0x3179a9,null));};exports[_0xf5f2('0x48')]=function(_0x533cca,_0x740321){return db['VoiceCallReport'][_0xf5f2('0x45')]({'where':{'id':_0x533cca['params']['id']}})[_0xf5f2('0x24')](handleEntityNotFound(_0x740321,null))[_0xf5f2('0x24')](removeEntity(_0x740321,null))[_0xf5f2('0x42')](handleError(_0x740321,null));};exports[_0xf5f2('0x49')]=function(_0x4fa738,_0x3154c1){return db[_0xf5f2('0x29')]['describe']()['then'](respondWithResult(_0x3154c1,null))[_0xf5f2('0x42')](handleError(_0x3154c1,null));};exports[_0xf5f2('0x4a')]=function(_0x57782c,_0x22b645){if(_0x57782c[_0xf5f2('0x47')][_0xf5f2('0x4b')]){delete _0x57782c[_0xf5f2('0x47')]['uniqueid'];}return db['VoiceCallReport'][_0xf5f2('0x45')]({'where':{'uniqueid':_0x57782c[_0xf5f2('0x43')]['id'],'UserId':{'$or':[null,_0x57782c['user']['id']]}}})[_0xf5f2('0x24')](handleEntityNotFound(_0x22b645,null))[_0xf5f2('0x24')](saveUpdates(_0x57782c[_0xf5f2('0x47')],null))[_0xf5f2('0x24')](respondWithResult(_0x22b645,null))[_0xf5f2('0x42')](handleError(_0x22b645,null));};
\ No newline at end of file
index df7f652..a26696a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf45e=['bluebird','request-promise','path','rimraf','../../config/environment','./voiceCallReport.attributes','exports','define','VoiceCallReport','report_call','uniqueid','lodash','../../config/logger','moment'];(function(_0x16a223,_0x31b6e8){var _0x5ded66=function(_0x25eb5f){while(--_0x25eb5f){_0x16a223['push'](_0x16a223['shift']());}};_0x5ded66(++_0x31b6e8);}(_0xf45e,0x115));var _0xef45=function(_0xfc957f,_0x2e353b){_0xfc957f=_0xfc957f-0x0;var _0x10a878=_0xf45e[_0xfc957f];return _0x10a878;};'use strict';var _=require(_0xef45('0x0'));var util=require('util');var logger=require(_0xef45('0x1'))('api');var moment=require(_0xef45('0x2'));var BPromise=require(_0xef45('0x3'));var rp=require(_0xef45('0x4'));var fs=require('fs');var path=require(_0xef45('0x5'));var rimraf=require(_0xef45('0x6'));var config=require(_0xef45('0x7'));var attributes=require(_0xef45('0x8'));module[_0xef45('0x9')]=function(_0x338960,_0x315b84){return _0x338960[_0xef45('0xa')](_0xef45('0xb'),attributes,{'tableName':_0xef45('0xc'),'paranoid':![],'indexes':[{'fields':[_0xef45('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfd10=['../../config/environment','./voiceCallReport.attributes','VoiceCallReport','report_call','lodash','util','api','moment','bluebird','rimraf'];(function(_0x466a15,_0x155b57){var _0x175b92=function(_0x1734fc){while(--_0x1734fc){_0x466a15['push'](_0x466a15['shift']());}};_0x175b92(++_0x155b57);}(_0xfd10,0x72));var _0x0fd1=function(_0x2aec52,_0x59d962){_0x2aec52=_0x2aec52-0x0;var _0x3b8835=_0xfd10[_0x2aec52];return _0x3b8835;};'use strict';var _=require(_0x0fd1('0x0'));var util=require(_0x0fd1('0x1'));var logger=require('../../config/logger')(_0x0fd1('0x2'));var moment=require(_0x0fd1('0x3'));var BPromise=require(_0x0fd1('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x0fd1('0x5'));var config=require(_0x0fd1('0x6'));var attributes=require(_0x0fd1('0x7'));module['exports']=function(_0x4cb379,_0x1b004e){return _0x4cb379['define'](_0x0fd1('0x8'),attributes,{'tableName':_0x0fd1('0x9'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index f84f1fb..ad02f0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49b0=['rpc','../../config/environment','jayson/promise','client','request','info','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','error','code','VoiceCallReport,\x20%s,\x20%s','message','result','GetVoiceCallReport','VoiceCallReport','findAll','options','raw','where','attributes','include','model','map','stringify','catch','create','body','then','CreateVoiceCallReport','update','limit','UpdateVoiceCallReport','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x2431d6,_0x25189a){var _0x4d0f9b=function(_0x52cd84){while(--_0x52cd84){_0x2431d6['push'](_0x2431d6['shift']());}};_0x4d0f9b(++_0x25189a);}(_0x49b0,0x71));var _0x049b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x49b0[_0x122ef9];return _0x42fba0;};'use strict';var _=require('lodash');var util=require(_0x049b('0x0'));var moment=require('moment');var BPromise=require(_0x049b('0x1'));var rs=require(_0x049b('0x2'));var fs=require('fs');var Redis=require(_0x049b('0x3'));var db=require(_0x049b('0x4'))['db'];var utils=require(_0x049b('0x5'));var logger=require(_0x049b('0x6'))(_0x049b('0x7'));var config=require(_0x049b('0x8'));var jayson=require(_0x049b('0x9'));var client=jayson[_0x049b('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5deaf1,_0x5a5c6f,_0x35ebd8){return new BPromise(function(_0x4e9100,_0x45a282){return client[_0x049b('0xb')](_0x5deaf1,_0x35ebd8)['then'](function(_0x90cb17){logger[_0x049b('0xc')]('VoiceCallReport,\x20%s,\x20%s',_0x5a5c6f,_0x049b('0xd'));logger[_0x049b('0xe')](_0x049b('0xf'),_0x5a5c6f,_0x049b('0xd'),JSON['stringify'](_0x90cb17));if(_0x90cb17[_0x049b('0x10')]){if(_0x90cb17[_0x049b('0x10')][_0x049b('0x11')]===0x1f4){logger[_0x049b('0x10')](_0x049b('0x12'),_0x5a5c6f,_0x90cb17[_0x049b('0x10')][_0x049b('0x13')]);return _0x45a282(_0x90cb17[_0x049b('0x10')][_0x049b('0x13')]);}logger[_0x049b('0x10')](_0x049b('0x12'),_0x5a5c6f,_0x90cb17['error']['message']);return _0x4e9100(_0x90cb17[_0x049b('0x10')][_0x049b('0x13')]);}else{logger[_0x049b('0xc')]('VoiceCallReport,\x20%s,\x20%s',_0x5a5c6f,_0x049b('0xd'));_0x4e9100(_0x90cb17[_0x049b('0x14')][_0x049b('0x13')]);}})['catch'](function(_0x338b75){logger[_0x049b('0x10')]('VoiceCallReport,\x20%s,\x20%s',_0x5a5c6f,_0x338b75);_0x45a282(_0x338b75);});});}exports[_0x049b('0x15')]=function(_0x182fa5){var _0x287812=this;return new Promise(function(_0x4c20c1,_0x417b0a){return db[_0x049b('0x16')][_0x049b('0x17')]({'raw':_0x182fa5['options']?_0x182fa5[_0x049b('0x18')][_0x049b('0x19')]===undefined?!![]:![]:!![],'where':_0x182fa5[_0x049b('0x18')]?_0x182fa5[_0x049b('0x18')][_0x049b('0x1a')]||null:null,'attributes':_0x182fa5[_0x049b('0x18')]?_0x182fa5[_0x049b('0x18')][_0x049b('0x1b')]||null:null,'limit':_0x182fa5[_0x049b('0x18')]?_0x182fa5[_0x049b('0x18')]['limit']||null:null,'include':_0x182fa5[_0x049b('0x18')]?_0x182fa5[_0x049b('0x18')][_0x049b('0x1c')]?_['map'](_0x182fa5[_0x049b('0x18')][_0x049b('0x1c')],function(_0x5e309c){return{'model':db[_0x5e309c[_0x049b('0x1d')]],'as':_0x5e309c['as'],'attributes':_0x5e309c[_0x049b('0x1b')],'include':_0x5e309c[_0x049b('0x1c')]?_[_0x049b('0x1e')](_0x5e309c['include'],function(_0x211661){return{'model':db[_0x211661[_0x049b('0x1d')]],'as':_0x211661['as'],'attributes':_0x211661[_0x049b('0x1b')],'include':_0x211661[_0x049b('0x1c')]?_['map'](_0x211661['include'],function(_0x2a2cdb){return{'model':db[_0x2a2cdb[_0x049b('0x1d')]],'as':_0x2a2cdb['as'],'attributes':_0x2a2cdb[_0x049b('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5854de){logger['info'](_0x049b('0x15'),_0x182fa5);logger[_0x049b('0xe')](_0x049b('0x15'),_0x182fa5,JSON[_0x049b('0x1f')](_0x5854de));_0x4c20c1(_0x5854de);})[_0x049b('0x20')](function(_0x17730e){logger['error'](_0x049b('0x15'),_0x17730e[_0x049b('0x13')],_0x182fa5);_0x417b0a(_0x287812[_0x049b('0x10')](0x1f4,_0x17730e[_0x049b('0x13')]));});});};exports['CreateVoiceCallReport']=function(_0x17cad5){var _0x1ab548=this;return new Promise(function(_0x31ed6d,_0x12e666){return db[_0x049b('0x16')][_0x049b('0x21')](_0x17cad5[_0x049b('0x22')],{'raw':_0x17cad5[_0x049b('0x18')]?_0x17cad5[_0x049b('0x18')][_0x049b('0x19')]===undefined?!![]:![]:!![]})[_0x049b('0x23')](function(_0x580190){logger['info'](_0x049b('0x24'),_0x17cad5);logger[_0x049b('0xe')](_0x049b('0x24'),_0x17cad5,JSON[_0x049b('0x1f')](_0x580190));_0x31ed6d(_0x580190);})['catch'](function(_0x3b57a7){logger['error'](_0x049b('0x24'),_0x3b57a7[_0x049b('0x13')],_0x17cad5);_0x12e666(_0x1ab548[_0x049b('0x10')](0x1f4,_0x3b57a7['message']));});});};exports['UpdateVoiceCallReport']=function(_0x24c1ea){var _0x453474=this;return new Promise(function(_0x386e5b,_0x179bd5){return db[_0x049b('0x16')][_0x049b('0x25')](_0x24c1ea[_0x049b('0x22')],{'raw':_0x24c1ea[_0x049b('0x18')]?_0x24c1ea[_0x049b('0x18')][_0x049b('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x24c1ea[_0x049b('0x18')]?_0x24c1ea[_0x049b('0x18')][_0x049b('0x1a')]||null:null,'attributes':_0x24c1ea['options']?_0x24c1ea['options'][_0x049b('0x1b')]||null:null,'limit':_0x24c1ea[_0x049b('0x18')]?_0x24c1ea[_0x049b('0x18')][_0x049b('0x26')]||null:null})[_0x049b('0x23')](function(_0x5c0072){logger[_0x049b('0xc')]('UpdateVoiceCallReport',_0x24c1ea);logger[_0x049b('0xe')](_0x049b('0x27'),_0x24c1ea,JSON['stringify'](_0x5c0072));_0x386e5b(_0x5c0072);})[_0x049b('0x20')](function(_0x2a9d54){logger[_0x049b('0x10')](_0x049b('0x27'),_0x2a9d54['message'],_0x24c1ea);_0x179bd5(_0x453474[_0x049b('0x10')](0x1f4,_0x2a9d54['message']));});});};
\ No newline at end of file
+var _0xc79b=['VoiceCallReport,\x20%s,\x20%s','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','catch','VoiceCallReport','options','raw','where','attributes','limit','include','map','model','GetVoiceCallReport','CreateVoiceCallReport','body','update','UpdateVoiceCallReport','lodash','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xc79b,0xe3));var _0xbc79=function(_0x4d4c57,_0x1d501f){_0x4d4c57=_0x4d4c57-0x0;var _0x24010a=_0xc79b[_0x4d4c57];return _0x24010a;};'use strict';var _=require(_0xbc79('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbc79('0x1'));var db=require(_0xbc79('0x2'))['db'];var utils=require(_0xbc79('0x3'));var logger=require(_0xbc79('0x4'))(_0xbc79('0x5'));var config=require('../../config/environment');var jayson=require(_0xbc79('0x6'));var client=jayson[_0xbc79('0x7')][_0xbc79('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3172bf,_0x41bd64,_0x331d3d){return new BPromise(function(_0x5c7557,_0x2539eb){return client[_0xbc79('0x9')](_0x3172bf,_0x331d3d)[_0xbc79('0xa')](function(_0xc7e8f9){logger['info'](_0xbc79('0xb'),_0x41bd64,'request\x20sent');logger[_0xbc79('0xc')](_0xbc79('0xd'),_0x41bd64,_0xbc79('0xe'),JSON[_0xbc79('0xf')](_0xc7e8f9));if(_0xc7e8f9[_0xbc79('0x10')]){if(_0xc7e8f9[_0xbc79('0x10')]['code']===0x1f4){logger[_0xbc79('0x10')](_0xbc79('0xb'),_0x41bd64,_0xc7e8f9[_0xbc79('0x10')]['message']);return _0x2539eb(_0xc7e8f9['error'][_0xbc79('0x11')]);}logger[_0xbc79('0x10')](_0xbc79('0xb'),_0x41bd64,_0xc7e8f9[_0xbc79('0x10')][_0xbc79('0x11')]);return _0x5c7557(_0xc7e8f9[_0xbc79('0x10')]['message']);}else{logger[_0xbc79('0x12')](_0xbc79('0xb'),_0x41bd64,'request\x20sent');_0x5c7557(_0xc7e8f9['result'][_0xbc79('0x11')]);}})[_0xbc79('0x13')](function(_0x48afcf){logger[_0xbc79('0x10')](_0xbc79('0xb'),_0x41bd64,_0x48afcf);_0x2539eb(_0x48afcf);});});}exports['GetVoiceCallReport']=function(_0x5082d9){var _0x11442d=this;return new Promise(function(_0x2a5267,_0x26158f){return db[_0xbc79('0x14')]['findAll']({'raw':_0x5082d9[_0xbc79('0x15')]?_0x5082d9['options'][_0xbc79('0x16')]===undefined?!![]:![]:!![],'where':_0x5082d9[_0xbc79('0x15')]?_0x5082d9[_0xbc79('0x15')][_0xbc79('0x17')]||null:null,'attributes':_0x5082d9[_0xbc79('0x15')]?_0x5082d9[_0xbc79('0x15')][_0xbc79('0x18')]||null:null,'limit':_0x5082d9[_0xbc79('0x15')]?_0x5082d9[_0xbc79('0x15')][_0xbc79('0x19')]||null:null,'include':_0x5082d9['options']?_0x5082d9[_0xbc79('0x15')][_0xbc79('0x1a')]?_[_0xbc79('0x1b')](_0x5082d9[_0xbc79('0x15')][_0xbc79('0x1a')],function(_0x15997b){return{'model':db[_0x15997b[_0xbc79('0x1c')]],'as':_0x15997b['as'],'attributes':_0x15997b['attributes'],'include':_0x15997b[_0xbc79('0x1a')]?_[_0xbc79('0x1b')](_0x15997b[_0xbc79('0x1a')],function(_0xd5e506){return{'model':db[_0xd5e506[_0xbc79('0x1c')]],'as':_0xd5e506['as'],'attributes':_0xd5e506[_0xbc79('0x18')],'include':_0xd5e506[_0xbc79('0x1a')]?_[_0xbc79('0x1b')](_0xd5e506[_0xbc79('0x1a')],function(_0x49263c){return{'model':db[_0x49263c[_0xbc79('0x1c')]],'as':_0x49263c['as'],'attributes':_0x49263c['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x3551ec){logger[_0xbc79('0x12')](_0xbc79('0x1d'),_0x5082d9);logger[_0xbc79('0xc')]('GetVoiceCallReport',_0x5082d9,JSON[_0xbc79('0xf')](_0x3551ec));_0x2a5267(_0x3551ec);})[_0xbc79('0x13')](function(_0x1a380b){logger[_0xbc79('0x10')]('GetVoiceCallReport',_0x1a380b[_0xbc79('0x11')],_0x5082d9);_0x26158f(_0x11442d[_0xbc79('0x10')](0x1f4,_0x1a380b[_0xbc79('0x11')]));});});};exports[_0xbc79('0x1e')]=function(_0x119f26){var _0xe758f7=this;return new Promise(function(_0x2bd6b3,_0x285d52){return db[_0xbc79('0x14')]['create'](_0x119f26[_0xbc79('0x1f')],{'raw':_0x119f26[_0xbc79('0x15')]?_0x119f26[_0xbc79('0x15')][_0xbc79('0x16')]===undefined?!![]:![]:!![]})['then'](function(_0x439018){logger[_0xbc79('0x12')](_0xbc79('0x1e'),_0x119f26);logger[_0xbc79('0xc')](_0xbc79('0x1e'),_0x119f26,JSON[_0xbc79('0xf')](_0x439018));_0x2bd6b3(_0x439018);})[_0xbc79('0x13')](function(_0x4360f1){logger['error'](_0xbc79('0x1e'),_0x4360f1[_0xbc79('0x11')],_0x119f26);_0x285d52(_0xe758f7['error'](0x1f4,_0x4360f1[_0xbc79('0x11')]));});});};exports['UpdateVoiceCallReport']=function(_0x5ef598){var _0x4ba12a=this;return new Promise(function(_0x2363c7,_0x446263){return db[_0xbc79('0x14')][_0xbc79('0x20')](_0x5ef598[_0xbc79('0x1f')],{'raw':_0x5ef598['options']?_0x5ef598[_0xbc79('0x15')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5ef598['options']?_0x5ef598[_0xbc79('0x15')]['where']||null:null,'attributes':_0x5ef598[_0xbc79('0x15')]?_0x5ef598[_0xbc79('0x15')][_0xbc79('0x18')]||null:null,'limit':_0x5ef598[_0xbc79('0x15')]?_0x5ef598[_0xbc79('0x15')][_0xbc79('0x19')]||null:null})[_0xbc79('0xa')](function(_0x12aacc){logger['info'](_0xbc79('0x21'),_0x5ef598);logger[_0xbc79('0xc')](_0xbc79('0x21'),_0x5ef598,JSON[_0xbc79('0xf')](_0x12aacc));_0x2363c7(_0x12aacc);})[_0xbc79('0x13')](function(_0x400d0b){logger[_0xbc79('0x10')](_0xbc79('0x21'),_0x400d0b['message'],_0x5ef598);_0x446263(_0x4ba12a['error'](0x1f4,_0x400d0b['message']));});});};
\ No newline at end of file
index 23de885..5713723 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16ce=['get','isAuthenticated','index','/:id','show','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller'];(function(_0x3e436c,_0xebf949){var _0x3e4924=function(_0xab2179){while(--_0xab2179){_0x3e436c['push'](_0x3e436c['shift']());}};_0x3e4924(++_0xebf949);}(_0x16ce,0x1e6));var _0xe16c=function(_0x189abf,_0x2be8f7){_0x189abf=_0x189abf-0x0;var _0x296478=_0x16ce[_0x189abf];return _0x296478;};'use strict';var multer=require(_0xe16c('0x0'));var util=require('util');var path=require(_0xe16c('0x1'));var timeout=require(_0xe16c('0x2'));var express=require(_0xe16c('0x3'));var router=express['Router']();var fs_extra=require(_0xe16c('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xe16c('0x5'));var config=require(_0xe16c('0x6'));var controller=require(_0xe16c('0x7'));router[_0xe16c('0x8')]('/',auth[_0xe16c('0x9')](),controller[_0xe16c('0xa')]);router[_0xe16c('0x8')](_0xe16c('0xb'),auth[_0xe16c('0x9')](),controller[_0xe16c('0xc')]);router['post']('/',auth[_0xe16c('0x9')](),controller[_0xe16c('0xd')]);router[_0xe16c('0xe')](_0xe16c('0xb'),auth['isAuthenticated'](),controller[_0xe16c('0xf')]);router[_0xe16c('0x10')](_0xe16c('0xb'),auth['isAuthenticated'](),controller[_0xe16c('0x11')]);module[_0xe16c('0x12')]=router;
\ No newline at end of file
+var _0x6dd7=['get','isAuthenticated','index','/:id','show','create','put','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller'];(function(_0x4cd5f1,_0x170a5a){var _0x3937c3=function(_0x2117e5){while(--_0x2117e5){_0x4cd5f1['push'](_0x4cd5f1['shift']());}};_0x3937c3(++_0x170a5a);}(_0x6dd7,0x1d7));var _0x76dd=function(_0x5a56cc,_0x29650c){_0x5a56cc=_0x5a56cc-0x0;var _0x589caa=_0x6dd7[_0x5a56cc];return _0x589caa;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x76dd('0x0'));var timeout=require(_0x76dd('0x1'));var express=require(_0x76dd('0x2'));var router=express[_0x76dd('0x3')]();var fs_extra=require(_0x76dd('0x4'));var auth=require(_0x76dd('0x5'));var interaction=require(_0x76dd('0x6'));var config=require(_0x76dd('0x7'));var controller=require(_0x76dd('0x8'));router[_0x76dd('0x9')]('/',auth[_0x76dd('0xa')](),controller[_0x76dd('0xb')]);router[_0x76dd('0x9')](_0x76dd('0xc'),auth[_0x76dd('0xa')](),controller[_0x76dd('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x76dd('0xe')]);router[_0x76dd('0xf')](_0x76dd('0xc'),auth[_0x76dd('0xa')](),controller[_0x76dd('0x10')]);router[_0x76dd('0x11')](_0x76dd('0xc'),auth['isAuthenticated'](),controller[_0x76dd('0x12')]);module[_0x76dd('0x13')]=router;
\ No newline at end of file
index d372003..941752d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x363d=['STRING','name','setDataValue','join','options','getDataValue','split','BOOLEAN'];(function(_0x496b73,_0x113fcc){var _0xa752b1=function(_0x5550e5){while(--_0x5550e5){_0x496b73['push'](_0x496b73['shift']());}};_0xa752b1(++_0x113fcc);}(_0x363d,0x118));var _0xd363=function(_0x70fd53,_0x2a95a6){_0x70fd53=_0x70fd53-0x0;var _0x4b71c5=_0x363d[_0x70fd53];return _0x4b71c5;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0xd363('0x0')],'unique':_0xd363('0x1'),'allowNull':![]},'options':{'type':Sequelize[_0xd363('0x0')],'set':function(_0x2adba1){this[_0xd363('0x2')]('options',_0x2adba1?_0x2adba1[_0xd363('0x3')](''):[]);},'get':function(){return this['getDataValue'](_0xd363('0x4'))?this[_0xd363('0x5')](_0xd363('0x4'))[_0xd363('0x6')](''):[];}},'auth':{'type':Sequelize[_0xd363('0x7')],'defaultValue':![]},'password':{'type':Sequelize[_0xd363('0x0')]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0xd363('0x0')]},'description':{'type':Sequelize[_0xd363('0x0')]}};
\ No newline at end of file
+var _0xdaaa=['STRING','name','setDataValue','options','join','getDataValue','split','BOOLEAN','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdaaa,0xbc));var _0xadaa=function(_0x5775fe,_0x31aeec){_0x5775fe=_0x5775fe-0x0;var _0x207825=_0xdaaa[_0x5775fe];return _0x207825;};'use strict';var Sequelize=require(_0xadaa('0x0'));module['exports']={'name':{'type':Sequelize[_0xadaa('0x1')]},'prefix':{'type':Sequelize[_0xadaa('0x1')],'unique':_0xadaa('0x2'),'allowNull':![]},'options':{'type':Sequelize['STRING'],'set':function(_0x1f2e9a){this[_0xadaa('0x3')](_0xadaa('0x4'),_0x1f2e9a?_0x1f2e9a[_0xadaa('0x5')](''):[]);},'get':function(){return this[_0xadaa('0x6')](_0xadaa('0x4'))?this[_0xadaa('0x6')](_0xadaa('0x4'))[_0xadaa('0x7')](''):[];}},'auth':{'type':Sequelize[_0xadaa('0x8')],'defaultValue':![]},'password':{'type':Sequelize[_0xadaa('0x1')]},'record':{'type':Sequelize[_0xadaa('0x8')],'defaultValue':![]},'recordingFormat':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xadaa('0x1')]}};
\ No newline at end of file
index 0669c1a..8eb04d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e16=['papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','set','Content-Range','apply','save','update','then','destroy','get','ChanSpies','UserProfileResource','end','error','name','send','index','rawAttributes','type','key','model','map','query','keys','intersection','fields','length','hasOwnProperty','order','sort','where','filters','filter','merge','VIRTUAL','options','VoiceChanSpy','count','findAll','rows','catch','attributes','includeAll','create','body','role','UserProfileSection','find','userProfileId','autoAssociation','params','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','querystring'];(function(_0x868b7c,_0xfa438b){var _0x21683c=function(_0x21bc66){while(--_0x21bc66){_0x868b7c['push'](_0x868b7c['shift']());}};_0x21683c(++_0xfa438b);}(_0x7e16,0x16f));var _0x67e1=function(_0x33b27b,_0x15e432){_0x33b27b=_0x33b27b-0x0;var _0x57b0e=_0x7e16[_0x33b27b];return _0x57b0e;};'use strict';var emlformat=require(_0x67e1('0x0'));var rimraf=require(_0x67e1('0x1'));var zipdir=require(_0x67e1('0x2'));var jsonpatch=require(_0x67e1('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x67e1('0x4'));var Mustache=require('mustache');var util=require(_0x67e1('0x5'));var path=require(_0x67e1('0x6'));var sox=require('sox');var csv=require(_0x67e1('0x7'));var ejs=require(_0x67e1('0x8'));var fs=require('fs');var fs_extra=require(_0x67e1('0x9'));var _=require(_0x67e1('0xa'));var squel=require(_0x67e1('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x67e1('0x7'));var querystring=require(_0x67e1('0xc'));var Papa=require(_0x67e1('0xd'));var Redis=require(_0x67e1('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x67e1('0xf'));var as=require(_0x67e1('0x10'));var hardwareService=require(_0x67e1('0x11'));var logger=require(_0x67e1('0x12'))('api');var utils=require(_0x67e1('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x67e1('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x56ea6d,_0x300461){_0x300461=_0x300461||0xcc;return function(_0x2dbc4e){if(_0x2dbc4e){return _0x56ea6d[_0x67e1('0x15')](_0x300461);}return _0x56ea6d[_0x67e1('0x16')](_0x300461)['end']();};}function respondWithResult(_0xba481e,_0x13a763){_0x13a763=_0x13a763||0xc8;return function(_0x13564c){if(_0x13564c){return _0xba481e['status'](_0x13a763)[_0x67e1('0x17')](_0x13564c);}};}function respondWithFilteredResult(_0x2cb7c1,_0x351c6d){return function(_0x1fd37c){if(_0x1fd37c){var _0x25d1ef=typeof _0x351c6d[_0x67e1('0x18')]===_0x67e1('0x19')&&typeof _0x351c6d[_0x67e1('0x1a')]===_0x67e1('0x19');var _0x12e7ff=_0x1fd37c['count'];var _0x14ab29=_0x25d1ef?0x0:_0x351c6d[_0x67e1('0x18')];var _0x2c36b8=_0x25d1ef?_0x1fd37c['count']:_0x351c6d['offset']+_0x351c6d['limit'];var _0x3ee9e3;if(_0x2c36b8>=_0x12e7ff){_0x2c36b8=_0x12e7ff;_0x3ee9e3=0xc8;}else{_0x3ee9e3=0xce;}_0x2cb7c1[_0x67e1('0x16')](_0x3ee9e3);return _0x2cb7c1[_0x67e1('0x1b')](_0x67e1('0x1c'),_0x14ab29+'-'+_0x2c36b8+'/'+_0x12e7ff)['json'](_0x1fd37c);}return null;};}function patchUpdates(_0x39807c){return function(_0x3278e7){try{jsonpatch[_0x67e1('0x1d')](_0x3278e7,_0x39807c,!![]);}catch(_0x2c1dda){return BPromise['reject'](_0x2c1dda);}return _0x3278e7[_0x67e1('0x1e')]();};}function saveUpdates(_0x1d5df0,_0x467f45){return function(_0x66ad21){if(_0x66ad21){return _0x66ad21[_0x67e1('0x1f')](_0x1d5df0)[_0x67e1('0x20')](function(_0x27419e){return _0x27419e;});}return null;};}function removeEntity(_0x571930,_0x158566){return function(_0xeb0e69){if(_0xeb0e69){return _0xeb0e69[_0x67e1('0x21')]()[_0x67e1('0x20')](function(){var _0x343cd7=_0xeb0e69[_0x67e1('0x22')]({'plain':!![]});var _0x16fcd0=_0x67e1('0x23');return db[_0x67e1('0x24')][_0x67e1('0x21')]({'where':{'type':_0x16fcd0,'resourceId':_0x343cd7['id']}})['then'](function(){return _0xeb0e69;});})[_0x67e1('0x20')](function(){_0x571930[_0x67e1('0x16')](0xcc)[_0x67e1('0x25')]();});}};}function handleEntityNotFound(_0x5ec98b,_0x1778ec){return function(_0x5ddb2f){if(!_0x5ddb2f){_0x5ec98b[_0x67e1('0x15')](0x194);}return _0x5ddb2f;};}function handleError(_0x78a580,_0x1e14b7){_0x1e14b7=_0x1e14b7||0x1f4;return function(_0x544371){logger[_0x67e1('0x26')](_0x544371['stack']);if(_0x544371[_0x67e1('0x27')]){delete _0x544371[_0x67e1('0x27')];}_0x78a580['status'](_0x1e14b7)[_0x67e1('0x28')](_0x544371);};}exports[_0x67e1('0x29')]=function(_0x1bbe01,_0x1fd992){var _0x226851={},_0x4594d1={},_0x4b00dc={'count':0x0,'rows':[]};var _0x580bd6=_['map'](db['VoiceChanSpy'][_0x67e1('0x2a')],function(_0x2f347b){return{'name':_0x2f347b['fieldName'],'type':_0x2f347b[_0x67e1('0x2b')][_0x67e1('0x2c')]};});_0x4594d1[_0x67e1('0x2d')]=_[_0x67e1('0x2e')](_0x580bd6,_0x67e1('0x27'));_0x4594d1[_0x67e1('0x2f')]=_[_0x67e1('0x30')](_0x1bbe01[_0x67e1('0x2f')]);_0x4594d1['filters']=_[_0x67e1('0x31')](_0x4594d1['model'],_0x4594d1[_0x67e1('0x2f')]);_0x226851['attributes']=_[_0x67e1('0x31')](_0x4594d1['model'],qs[_0x67e1('0x32')](_0x1bbe01[_0x67e1('0x2f')]['fields']));_0x226851['attributes']=_0x226851['attributes'][_0x67e1('0x33')]?_0x226851['attributes']:_0x4594d1[_0x67e1('0x2d')];if(!_0x1bbe01['query'][_0x67e1('0x34')]('nolimit')){_0x226851['limit']=qs[_0x67e1('0x1a')](_0x1bbe01[_0x67e1('0x2f')]['limit']);_0x226851[_0x67e1('0x18')]=qs[_0x67e1('0x18')](_0x1bbe01[_0x67e1('0x2f')][_0x67e1('0x18')]);}_0x226851[_0x67e1('0x35')]=qs[_0x67e1('0x36')](_0x1bbe01[_0x67e1('0x2f')]['sort']);_0x226851[_0x67e1('0x37')]=qs[_0x67e1('0x38')](_['pick'](_0x1bbe01[_0x67e1('0x2f')],_0x4594d1[_0x67e1('0x38')]),_0x580bd6);if(_0x1bbe01[_0x67e1('0x2f')][_0x67e1('0x39')]){_0x226851[_0x67e1('0x37')]=_[_0x67e1('0x3a')](_0x226851[_0x67e1('0x37')],{'$or':_[_0x67e1('0x2e')](_0x580bd6,function(_0x2e8f7e){if(_0x2e8f7e[_0x67e1('0x2b')]!==_0x67e1('0x3b')){var _0x14610f={};_0x14610f[_0x2e8f7e[_0x67e1('0x27')]]={'$like':'%'+_0x1bbe01[_0x67e1('0x2f')][_0x67e1('0x39')]+'%'};return _0x14610f;}})});}_0x226851=_[_0x67e1('0x3a')]({},_0x226851,_0x1bbe01[_0x67e1('0x3c')]);var _0x114c0={'where':_0x226851[_0x67e1('0x37')]};return db[_0x67e1('0x3d')][_0x67e1('0x3e')](_0x114c0)[_0x67e1('0x20')](function(_0x1cf344){_0x4b00dc['count']=_0x1cf344;if(_0x1bbe01[_0x67e1('0x2f')]['includeAll']){_0x226851['include']=[{'all':!![]}];}return db[_0x67e1('0x3d')][_0x67e1('0x3f')](_0x226851);})[_0x67e1('0x20')](function(_0x18812d){_0x4b00dc[_0x67e1('0x40')]=_0x18812d;return _0x4b00dc;})[_0x67e1('0x20')](respondWithFilteredResult(_0x1fd992,_0x226851))[_0x67e1('0x41')](handleError(_0x1fd992,null));};exports['show']=function(_0x2b8bb2,_0x1a961a){var _0x27b7c6={'raw':![],'where':{'id':_0x2b8bb2['params']['id']}},_0x46cacb={};_0x46cacb['model']=_['keys'](db[_0x67e1('0x3d')][_0x67e1('0x2a')]);_0x46cacb[_0x67e1('0x2f')]=_[_0x67e1('0x30')](_0x2b8bb2['query']);_0x46cacb['filters']=_[_0x67e1('0x31')](_0x46cacb[_0x67e1('0x2d')],_0x46cacb[_0x67e1('0x2f')]);_0x27b7c6[_0x67e1('0x42')]=_[_0x67e1('0x31')](_0x46cacb['model'],qs['fields'](_0x2b8bb2[_0x67e1('0x2f')][_0x67e1('0x32')]));_0x27b7c6[_0x67e1('0x42')]=_0x27b7c6[_0x67e1('0x42')][_0x67e1('0x33')]?_0x27b7c6[_0x67e1('0x42')]:_0x46cacb['model'];if(_0x2b8bb2[_0x67e1('0x2f')][_0x67e1('0x43')]){_0x27b7c6['include']=[{'all':!![]}];}_0x27b7c6=_[_0x67e1('0x3a')]({},_0x27b7c6,_0x2b8bb2[_0x67e1('0x3c')]);return db['VoiceChanSpy']['find'](_0x27b7c6)[_0x67e1('0x20')](handleEntityNotFound(_0x1a961a,null))[_0x67e1('0x20')](respondWithResult(_0x1a961a,null))[_0x67e1('0x41')](handleError(_0x1a961a,null));};exports[_0x67e1('0x44')]=function(_0x41227b,_0x25370a){return db[_0x67e1('0x3d')][_0x67e1('0x44')](_0x41227b[_0x67e1('0x45')],{})[_0x67e1('0x20')](function(_0x5393b4){var _0x250430=_0x41227b['user'][_0x67e1('0x22')]({'plain':!![]});if(!_0x250430)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x250430[_0x67e1('0x46')]==='user'){var _0x3886ef=_0x5393b4['get']({'plain':!![]});var _0x2a73a1='ChanSpies';return db[_0x67e1('0x47')][_0x67e1('0x48')]({'where':{'name':_0x2a73a1,'userProfileId':_0x250430[_0x67e1('0x49')]},'raw':!![]})[_0x67e1('0x20')](function(_0x28da97){if(_0x28da97&&_0x28da97[_0x67e1('0x4a')]===0x0){return db[_0x67e1('0x24')][_0x67e1('0x44')]({'name':_0x3886ef['name'],'resourceId':_0x3886ef['id'],'type':_0x28da97[_0x67e1('0x27')],'sectionId':_0x28da97['id']},{})[_0x67e1('0x20')](function(){return _0x5393b4;});}else{return _0x5393b4;}})[_0x67e1('0x41')](function(_0x2d34ae){logger[_0x67e1('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2d34ae);throw _0x2d34ae;});}return _0x5393b4;})[_0x67e1('0x20')](respondWithResult(_0x25370a,0xc9))[_0x67e1('0x41')](handleError(_0x25370a,null));};exports['update']=function(_0x21ed9b,_0x3ef79f){if(_0x21ed9b[_0x67e1('0x45')]['id']){delete _0x21ed9b[_0x67e1('0x45')]['id'];}return db[_0x67e1('0x3d')][_0x67e1('0x48')]({'where':{'id':_0x21ed9b['params']['id']}})[_0x67e1('0x20')](handleEntityNotFound(_0x3ef79f,null))[_0x67e1('0x20')](saveUpdates(_0x21ed9b[_0x67e1('0x45')],null))[_0x67e1('0x20')](respondWithResult(_0x3ef79f,null))[_0x67e1('0x41')](handleError(_0x3ef79f,null));};exports[_0x67e1('0x21')]=function(_0x17d757,_0x45bf81){return db[_0x67e1('0x3d')][_0x67e1('0x48')]({'where':{'id':_0x17d757[_0x67e1('0x4b')]['id']}})[_0x67e1('0x20')](handleEntityNotFound(_0x45bf81,null))['then'](removeEntity(_0x45bf81,null))['catch'](handleError(_0x45bf81,null));};
\ No newline at end of file
+var _0x1c42=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','ChanSpies','UserProfileResource','destroy','error','stack','name','send','map','VoiceChanSpy','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','options','includeAll','include','findAll','rows','params','rawAttributes','keys','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','catch','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x4efe80,_0x4a7160){var _0x5357c0=function(_0x8065f9){while(--_0x8065f9){_0x4efe80['push'](_0x4efe80['shift']());}};_0x5357c0(++_0x4a7160);}(_0x1c42,0x13a));var _0x21c4=function(_0x1c1020,_0x2fb12a){_0x1c1020=_0x1c1020-0x0;var _0xb7b357=_0x1c42[_0x1c1020];return _0xb7b357;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x21c4('0x0'));var zipdir=require(_0x21c4('0x1'));var jsonpatch=require(_0x21c4('0x2'));var rp=require('request-promise');var moment=require(_0x21c4('0x3'));var BPromise=require(_0x21c4('0x4'));var Mustache=require(_0x21c4('0x5'));var util=require(_0x21c4('0x6'));var path=require(_0x21c4('0x7'));var sox=require(_0x21c4('0x8'));var csv=require(_0x21c4('0x9'));var ejs=require(_0x21c4('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x21c4('0xb'));var squel=require(_0x21c4('0xc'));var crypto=require('crypto');var jsforce=require(_0x21c4('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x21c4('0x9'));var querystring=require(_0x21c4('0xe'));var Papa=require(_0x21c4('0xf'));var Redis=require(_0x21c4('0x10'));var authService=require(_0x21c4('0x11'));var qs=require(_0x21c4('0x12'));var as=require(_0x21c4('0x13'));var hardwareService=require(_0x21c4('0x14'));var logger=require(_0x21c4('0x15'))('api');var utils=require(_0x21c4('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x21c4('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5b5965,_0x195f8c){_0x195f8c=_0x195f8c||0xcc;return function(_0x2a5f9e){if(_0x2a5f9e){return _0x5b5965[_0x21c4('0x18')](_0x195f8c);}return _0x5b5965[_0x21c4('0x19')](_0x195f8c)[_0x21c4('0x1a')]();};}function respondWithResult(_0x3a8a3a,_0x1d8d21){_0x1d8d21=_0x1d8d21||0xc8;return function(_0xade6a9){if(_0xade6a9){return _0x3a8a3a[_0x21c4('0x19')](_0x1d8d21)[_0x21c4('0x1b')](_0xade6a9);}};}function respondWithFilteredResult(_0x1e8679,_0x3f491e){return function(_0x5ab3a1){if(_0x5ab3a1){var _0x50b3fd=typeof _0x3f491e[_0x21c4('0x1c')]===_0x21c4('0x1d')&&typeof _0x3f491e[_0x21c4('0x1e')]===_0x21c4('0x1d');var _0x44eda3=_0x5ab3a1[_0x21c4('0x1f')];var _0x38fa2b=_0x50b3fd?0x0:_0x3f491e[_0x21c4('0x1c')];var _0x2309f6=_0x50b3fd?_0x5ab3a1[_0x21c4('0x1f')]:_0x3f491e[_0x21c4('0x1c')]+_0x3f491e[_0x21c4('0x1e')];var _0x2b627a;if(_0x2309f6>=_0x44eda3){_0x2309f6=_0x44eda3;_0x2b627a=0xc8;}else{_0x2b627a=0xce;}_0x1e8679[_0x21c4('0x19')](_0x2b627a);return _0x1e8679[_0x21c4('0x20')](_0x21c4('0x21'),_0x38fa2b+'-'+_0x2309f6+'/'+_0x44eda3)['json'](_0x5ab3a1);}return null;};}function patchUpdates(_0x4ad6ed){return function(_0x28797a){try{jsonpatch[_0x21c4('0x22')](_0x28797a,_0x4ad6ed,!![]);}catch(_0x54b547){return BPromise[_0x21c4('0x23')](_0x54b547);}return _0x28797a['save']();};}function saveUpdates(_0x2a58c0,_0x3c1998){return function(_0x42091a){if(_0x42091a){return _0x42091a[_0x21c4('0x24')](_0x2a58c0)[_0x21c4('0x25')](function(_0x98e182){return _0x98e182;});}return null;};}function removeEntity(_0x3c9b8f,_0x473128){return function(_0x6f53ae){if(_0x6f53ae){return _0x6f53ae['destroy']()['then'](function(){var _0x159fb0=_0x6f53ae['get']({'plain':!![]});var _0x59af96=_0x21c4('0x26');return db[_0x21c4('0x27')][_0x21c4('0x28')]({'where':{'type':_0x59af96,'resourceId':_0x159fb0['id']}})[_0x21c4('0x25')](function(){return _0x6f53ae;});})[_0x21c4('0x25')](function(){_0x3c9b8f['status'](0xcc)[_0x21c4('0x1a')]();});}};}function handleEntityNotFound(_0x3ef9b4,_0x5013d2){return function(_0x2be1d7){if(!_0x2be1d7){_0x3ef9b4[_0x21c4('0x18')](0x194);}return _0x2be1d7;};}function handleError(_0x426634,_0x5150d8){_0x5150d8=_0x5150d8||0x1f4;return function(_0x4c143d){logger[_0x21c4('0x29')](_0x4c143d[_0x21c4('0x2a')]);if(_0x4c143d[_0x21c4('0x2b')]){delete _0x4c143d[_0x21c4('0x2b')];}_0x426634[_0x21c4('0x19')](_0x5150d8)[_0x21c4('0x2c')](_0x4c143d);};}exports['index']=function(_0x5017ac,_0x5151b2){var _0x2d59c6={},_0x59e506={},_0x4be5c2={'count':0x0,'rows':[]};var _0x523122=_[_0x21c4('0x2d')](db[_0x21c4('0x2e')]['rawAttributes'],function(_0x32ed0c){return{'name':_0x32ed0c[_0x21c4('0x2f')],'type':_0x32ed0c[_0x21c4('0x30')][_0x21c4('0x31')]};});_0x59e506[_0x21c4('0x32')]=_[_0x21c4('0x2d')](_0x523122,_0x21c4('0x2b'));_0x59e506[_0x21c4('0x33')]=_['keys'](_0x5017ac['query']);_0x59e506[_0x21c4('0x34')]=_[_0x21c4('0x35')](_0x59e506[_0x21c4('0x32')],_0x59e506[_0x21c4('0x33')]);_0x2d59c6[_0x21c4('0x36')]=_[_0x21c4('0x35')](_0x59e506['model'],qs[_0x21c4('0x37')](_0x5017ac['query'][_0x21c4('0x37')]));_0x2d59c6[_0x21c4('0x36')]=_0x2d59c6['attributes'][_0x21c4('0x38')]?_0x2d59c6[_0x21c4('0x36')]:_0x59e506[_0x21c4('0x32')];if(!_0x5017ac['query'][_0x21c4('0x39')]('nolimit')){_0x2d59c6[_0x21c4('0x1e')]=qs[_0x21c4('0x1e')](_0x5017ac[_0x21c4('0x33')][_0x21c4('0x1e')]);_0x2d59c6['offset']=qs['offset'](_0x5017ac[_0x21c4('0x33')][_0x21c4('0x1c')]);}_0x2d59c6[_0x21c4('0x3a')]=qs[_0x21c4('0x3b')](_0x5017ac[_0x21c4('0x33')][_0x21c4('0x3b')]);_0x2d59c6[_0x21c4('0x3c')]=qs[_0x21c4('0x34')](_[_0x21c4('0x3d')](_0x5017ac[_0x21c4('0x33')],_0x59e506[_0x21c4('0x34')]),_0x523122);if(_0x5017ac[_0x21c4('0x33')]['filter']){_0x2d59c6[_0x21c4('0x3c')]=_[_0x21c4('0x3e')](_0x2d59c6[_0x21c4('0x3c')],{'$or':_[_0x21c4('0x2d')](_0x523122,function(_0x3545de){if(_0x3545de[_0x21c4('0x30')]!=='VIRTUAL'){var _0x19510d={};_0x19510d[_0x3545de[_0x21c4('0x2b')]]={'$like':'%'+_0x5017ac[_0x21c4('0x33')]['filter']+'%'};return _0x19510d;}})});}_0x2d59c6=_[_0x21c4('0x3e')]({},_0x2d59c6,_0x5017ac[_0x21c4('0x3f')]);var _0x1ea10e={'where':_0x2d59c6[_0x21c4('0x3c')]};return db[_0x21c4('0x2e')]['count'](_0x1ea10e)[_0x21c4('0x25')](function(_0x42e4c6){_0x4be5c2[_0x21c4('0x1f')]=_0x42e4c6;if(_0x5017ac[_0x21c4('0x33')][_0x21c4('0x40')]){_0x2d59c6[_0x21c4('0x41')]=[{'all':!![]}];}return db[_0x21c4('0x2e')][_0x21c4('0x42')](_0x2d59c6);})[_0x21c4('0x25')](function(_0x4bef46){_0x4be5c2[_0x21c4('0x43')]=_0x4bef46;return _0x4be5c2;})['then'](respondWithFilteredResult(_0x5151b2,_0x2d59c6))['catch'](handleError(_0x5151b2,null));};exports['show']=function(_0x580bbc,_0x409114){var _0x255d7a={'raw':![],'where':{'id':_0x580bbc[_0x21c4('0x44')]['id']}},_0x264093={};_0x264093[_0x21c4('0x32')]=_['keys'](db[_0x21c4('0x2e')][_0x21c4('0x45')]);_0x264093[_0x21c4('0x33')]=_[_0x21c4('0x46')](_0x580bbc[_0x21c4('0x33')]);_0x264093['filters']=_[_0x21c4('0x35')](_0x264093[_0x21c4('0x32')],_0x264093['query']);_0x255d7a[_0x21c4('0x36')]=_[_0x21c4('0x35')](_0x264093[_0x21c4('0x32')],qs[_0x21c4('0x37')](_0x580bbc[_0x21c4('0x33')][_0x21c4('0x37')]));_0x255d7a[_0x21c4('0x36')]=_0x255d7a[_0x21c4('0x36')][_0x21c4('0x38')]?_0x255d7a[_0x21c4('0x36')]:_0x264093['model'];if(_0x580bbc['query'][_0x21c4('0x40')]){_0x255d7a['include']=[{'all':!![]}];}_0x255d7a=_[_0x21c4('0x3e')]({},_0x255d7a,_0x580bbc[_0x21c4('0x3f')]);return db[_0x21c4('0x2e')][_0x21c4('0x47')](_0x255d7a)[_0x21c4('0x25')](handleEntityNotFound(_0x409114,null))[_0x21c4('0x25')](respondWithResult(_0x409114,null))['catch'](handleError(_0x409114,null));};exports[_0x21c4('0x48')]=function(_0x506e0e,_0x44a8f7){return db[_0x21c4('0x2e')]['create'](_0x506e0e[_0x21c4('0x49')],{})[_0x21c4('0x25')](function(_0x10f17b){var _0x10f580=_0x506e0e[_0x21c4('0x4a')][_0x21c4('0x4b')]({'plain':!![]});if(!_0x10f580)throw new Error(_0x21c4('0x4c'));if(_0x10f580[_0x21c4('0x4d')]===_0x21c4('0x4a')){var _0x499cc5=_0x10f17b['get']({'plain':!![]});var _0x5cbf22='ChanSpies';return db[_0x21c4('0x4e')][_0x21c4('0x47')]({'where':{'name':_0x5cbf22,'userProfileId':_0x10f580[_0x21c4('0x4f')]},'raw':!![]})[_0x21c4('0x25')](function(_0x4b33c1){if(_0x4b33c1&&_0x4b33c1[_0x21c4('0x50')]===0x0){return db[_0x21c4('0x27')][_0x21c4('0x48')]({'name':_0x499cc5['name'],'resourceId':_0x499cc5['id'],'type':_0x4b33c1[_0x21c4('0x2b')],'sectionId':_0x4b33c1['id']},{})['then'](function(){return _0x10f17b;});}else{return _0x10f17b;}})['catch'](function(_0x2fbc1a){logger[_0x21c4('0x29')](_0x21c4('0x51'),_0x2fbc1a);throw _0x2fbc1a;});}return _0x10f17b;})[_0x21c4('0x25')](respondWithResult(_0x44a8f7,0xc9))['catch'](handleError(_0x44a8f7,null));};exports[_0x21c4('0x24')]=function(_0x2b3e6a,_0x3478a0){if(_0x2b3e6a[_0x21c4('0x49')]['id']){delete _0x2b3e6a[_0x21c4('0x49')]['id'];}return db[_0x21c4('0x2e')][_0x21c4('0x47')]({'where':{'id':_0x2b3e6a[_0x21c4('0x44')]['id']}})[_0x21c4('0x25')](handleEntityNotFound(_0x3478a0,null))[_0x21c4('0x25')](saveUpdates(_0x2b3e6a[_0x21c4('0x49')],null))['then'](respondWithResult(_0x3478a0,null))['catch'](handleError(_0x3478a0,null));};exports[_0x21c4('0x28')]=function(_0x2f51f9,_0x50798b){return db['VoiceChanSpy'][_0x21c4('0x47')]({'where':{'id':_0x2f51f9[_0x21c4('0x44')]['id']}})['then'](handleEntityNotFound(_0x50798b,null))['then'](removeEntity(_0x50798b,null))[_0x21c4('0x52')](handleError(_0x50798b,null));};
\ No newline at end of file
index 3955983..2c3d411 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x511f=['define','VoiceChanSpy','voice_chanspy','then','VoiceExtension','destroy','bulkCreate','lodash','util','bluebird','./voiceChanSpy.attributes','context','from-sip','%s%s','prefix','push','merge','Set','format','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','options','join','StopMixMonitor','length','internal','concat','name','User','findAll','agent','catch','models'];(function(_0x4221ce,_0x399690){var _0x2b1603=function(_0xfc92c9){while(--_0xfc92c9){_0x4221ce['push'](_0x4221ce['shift']());}};_0x2b1603(++_0x399690);}(_0x511f,0x12d));var _0xf511=function(_0x324196,_0x4124b3){_0x324196=_0x324196-0x0;var _0x34c9b5=_0x511f[_0x324196];return _0x34c9b5;};'use strict';var _=require(_0xf511('0x0'));var util=require(_0xf511('0x1'));var BPromise=require(_0xf511('0x2'));var attributes=require(_0xf511('0x3'));var getUserApplications=function(_0x2979e9,_0x19b79b,_0x256a9c){var _0x599555=0x1;var _0x185f4a=[];var _0x427225={'context':_0x19b79b[_0xf511('0x4')]||_0xf511('0x5'),'exten':util['format'](_0xf511('0x6'),_0x2979e9[_0xf511('0x7')],_0x256a9c),'type':'system','isApp':![],'ChanSpyId':_0x2979e9['id'],'UserId':_0x19b79b['id']};_0x185f4a[_0xf511('0x8')](_[_0xf511('0x9')]({'app':_0xf511('0xa'),'appdata':util[_0xf511('0xb')](_0xf511('0xc'),_0xf511('0xd')),'priority':_0x599555++},_0x427225));if(_0x2979e9[_0xf511('0xe')]){_0x185f4a[_0xf511('0x8')](_[_0xf511('0x9')]({'app':_0xf511('0xf'),'appdata':util['format'](_0xf511('0x10'),_0x2979e9[_0xf511('0x11')]),'priority':_0x599555++},_0x427225));}if(_0x2979e9[_0xf511('0x12')]){_0x185f4a[_0xf511('0x8')](_['merge']({'app':_0xf511('0x13'),'appdata':_0x2979e9[_0xf511('0x14')],'priority':_0x599555++},_0x427225));}_0x185f4a[_0xf511('0x8')](_[_0xf511('0x9')]({'app':_0xf511('0x15'),'appdata':util[_0xf511('0xb')](_0xf511('0x16'),_0x19b79b['name'],_0x2979e9[_0xf511('0x17')]?_0x2979e9[_0xf511('0x17')][_0xf511('0x18')](''):''),'priority':_0x599555++},_0x427225));if(_0x2979e9['record']){_0x185f4a['push'](_[_0xf511('0x9')]({'app':_0xf511('0x19'),'priority':_0x599555++},_0x427225));}return _0x185f4a;};var getChanSpyApplications=function(_0x2aa523,_0x4c05f2){var _0x489a6c=[];for(var _0x56c3a8=0x0,_0x315e54=0x1;_0x56c3a8<_0x4c05f2[_0xf511('0x1a')];_0x56c3a8++,_0x315e54=0x1){_0x489a6c=_0x489a6c['concat'](getUserApplications(_0x2aa523,_0x4c05f2[_0x56c3a8],_0x4c05f2[_0x56c3a8][_0xf511('0x1b')]));if(_0x4c05f2[_0x56c3a8][_0xf511('0x1b')]!=_0x4c05f2[_0x56c3a8]['name']){_0x489a6c=_0x489a6c[_0xf511('0x1c')](getUserApplications(_0x2aa523,_0x4c05f2[_0x56c3a8],_0x4c05f2[_0x56c3a8][_0xf511('0x1d')]));}}return _0x489a6c;};var getChanSpyPromise=function(_0x34bdeb,_0x384a4d){return new BPromise(function(_0x11c381,_0x347669){return _0x34bdeb[_0xf511('0x1e')][_0xf511('0x1f')]({'attributes':['id',_0xf511('0x1d'),_0xf511('0x1b')],'where':{'role':_0xf511('0x20'),'chanspy':!![]},'raw':!![]})['then'](function(_0x5b7575){if(_0x5b7575){return _0x11c381(getChanSpyApplications(_0x384a4d,_0x5b7575));}return _0x11c381([]);})[_0xf511('0x21')](function(_0x4876d6){_0x347669(_0x4876d6);});});};module['exports']=function(_0x2ec776,_0x185370){var _0x413a06=_0x2ec776[_0xf511('0x22')];return _0x2ec776[_0xf511('0x23')](_0xf511('0x24'),attributes,{'tableName':_0xf511('0x25'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x3616cb,_0x56f046,_0x4a59ce){return getChanSpyPromise(_0x413a06,_0x3616cb)[_0xf511('0x26')](function(_0x49fddb){if(_0x49fddb&&_0x49fddb[_0xf511('0x1a')]){return _0x413a06[_0xf511('0x27')]['bulkCreate'](_0x49fddb);}})[_0xf511('0x26')](function(){_0x4a59ce();})['catch'](function(_0x579399){_0x4a59ce(_0x579399);});},'afterUpdate':function(_0x15a1bb,_0x1e84e5,_0x227b72){return _0x413a06[_0xf511('0x27')][_0xf511('0x28')]({'where':{'ChanSpyId':_0x15a1bb['id']}})[_0xf511('0x26')](function(){return getChanSpyPromise(_0x413a06,_0x15a1bb);})[_0xf511('0x26')](function(_0x4b805c){if(_0x4b805c&&_0x4b805c[_0xf511('0x1a')]){return _0x413a06[_0xf511('0x27')][_0xf511('0x29')](_0x4b805c);}})[_0xf511('0x26')](function(){_0x227b72();})['catch'](function(_0xf67a97){_0x227b72(_0xf67a97);});},'afterDestroy':function(_0x1bc068,_0x3c470e,_0x15d965){return _0x413a06[_0xf511('0x27')][_0xf511('0x28')]({'where':{'ChanSpyId':_0x1bc068['id']}})[_0xf511('0x26')](function(){_0x15d965();})[_0xf511('0x21')](function(_0x4b6598){_0x15d965(_0x4b6598);});}}});};
\ No newline at end of file
+var _0xaed7=['findAll','agent','then','catch','exports','models','VoiceChanSpy','voice_chanspy','VoiceExtension','bulkCreate','destroy','lodash','util','bluebird','./voiceChanSpy.attributes','context','from-sip','format','%s%s','system','merge','Set','chanspy','record','push','MixMonitor','${UNIQUEID}.%s,a','Authenticate','password','ChanSpy','name','options','join','StopMixMonitor','length','concat','internal','User'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xaed7,0x1d3));var _0x7aed=function(_0x1d209c,_0xfca948){_0x1d209c=_0x1d209c-0x0;var _0x25d79e=_0xaed7[_0x1d209c];return _0x25d79e;};'use strict';var _=require(_0x7aed('0x0'));var util=require(_0x7aed('0x1'));var BPromise=require(_0x7aed('0x2'));var attributes=require(_0x7aed('0x3'));var getUserApplications=function(_0x4c7970,_0x17f117,_0x19a0c9){var _0x187550=0x1;var _0xe8bf08=[];var _0x31ce41={'context':_0x17f117[_0x7aed('0x4')]||_0x7aed('0x5'),'exten':util[_0x7aed('0x6')](_0x7aed('0x7'),_0x4c7970['prefix'],_0x19a0c9),'type':_0x7aed('0x8'),'isApp':![],'ChanSpyId':_0x4c7970['id'],'UserId':_0x17f117['id']};_0xe8bf08['push'](_[_0x7aed('0x9')]({'app':_0x7aed('0xa'),'appdata':util[_0x7aed('0x6')]('CDR(type)=%s',_0x7aed('0xb')),'priority':_0x187550++},_0x31ce41));if(_0x4c7970[_0x7aed('0xc')]){_0xe8bf08[_0x7aed('0xd')](_[_0x7aed('0x9')]({'app':_0x7aed('0xe'),'appdata':util[_0x7aed('0x6')](_0x7aed('0xf'),_0x4c7970['recordingFormat']),'priority':_0x187550++},_0x31ce41));}if(_0x4c7970['auth']){_0xe8bf08[_0x7aed('0xd')](_[_0x7aed('0x9')]({'app':_0x7aed('0x10'),'appdata':_0x4c7970[_0x7aed('0x11')],'priority':_0x187550++},_0x31ce41));}_0xe8bf08[_0x7aed('0xd')](_['merge']({'app':_0x7aed('0x12'),'appdata':util['format']('SIP/%s,%s',_0x17f117[_0x7aed('0x13')],_0x4c7970[_0x7aed('0x14')]?_0x4c7970[_0x7aed('0x14')][_0x7aed('0x15')](''):''),'priority':_0x187550++},_0x31ce41));if(_0x4c7970[_0x7aed('0xc')]){_0xe8bf08['push'](_[_0x7aed('0x9')]({'app':_0x7aed('0x16'),'priority':_0x187550++},_0x31ce41));}return _0xe8bf08;};var getChanSpyApplications=function(_0x151a9e,_0x74d9db){var _0x5cfc45=[];for(var _0x18df68=0x0,_0x512c7e=0x1;_0x18df68<_0x74d9db[_0x7aed('0x17')];_0x18df68++,_0x512c7e=0x1){_0x5cfc45=_0x5cfc45[_0x7aed('0x18')](getUserApplications(_0x151a9e,_0x74d9db[_0x18df68],_0x74d9db[_0x18df68][_0x7aed('0x19')]));if(_0x74d9db[_0x18df68][_0x7aed('0x19')]!=_0x74d9db[_0x18df68][_0x7aed('0x13')]){_0x5cfc45=_0x5cfc45[_0x7aed('0x18')](getUserApplications(_0x151a9e,_0x74d9db[_0x18df68],_0x74d9db[_0x18df68]['name']));}}return _0x5cfc45;};var getChanSpyPromise=function(_0x1cbc99,_0x70da33){return new BPromise(function(_0x58ee7d,_0x2692e3){return _0x1cbc99[_0x7aed('0x1a')][_0x7aed('0x1b')]({'attributes':['id',_0x7aed('0x13'),_0x7aed('0x19')],'where':{'role':_0x7aed('0x1c'),'chanspy':!![]},'raw':!![]})[_0x7aed('0x1d')](function(_0x966534){if(_0x966534){return _0x58ee7d(getChanSpyApplications(_0x70da33,_0x966534));}return _0x58ee7d([]);})[_0x7aed('0x1e')](function(_0x3201a5){_0x2692e3(_0x3201a5);});});};module[_0x7aed('0x1f')]=function(_0x6b3607,_0xf5a8a0){var _0x176029=_0x6b3607[_0x7aed('0x20')];return _0x6b3607['define'](_0x7aed('0x21'),attributes,{'tableName':_0x7aed('0x22'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x17a3c7,_0x153e4c,_0x48e801){return getChanSpyPromise(_0x176029,_0x17a3c7)[_0x7aed('0x1d')](function(_0x1c33a6){if(_0x1c33a6&&_0x1c33a6[_0x7aed('0x17')]){return _0x176029[_0x7aed('0x23')][_0x7aed('0x24')](_0x1c33a6);}})[_0x7aed('0x1d')](function(){_0x48e801();})[_0x7aed('0x1e')](function(_0x3676d5){_0x48e801(_0x3676d5);});},'afterUpdate':function(_0xa08d2,_0x159b32,_0x3b9ef8){return _0x176029[_0x7aed('0x23')][_0x7aed('0x25')]({'where':{'ChanSpyId':_0xa08d2['id']}})[_0x7aed('0x1d')](function(){return getChanSpyPromise(_0x176029,_0xa08d2);})[_0x7aed('0x1d')](function(_0x408ddf){if(_0x408ddf&&_0x408ddf['length']){return _0x176029[_0x7aed('0x23')]['bulkCreate'](_0x408ddf);}})[_0x7aed('0x1d')](function(){_0x3b9ef8();})[_0x7aed('0x1e')](function(_0x5f68bc){_0x3b9ef8(_0x5f68bc);});},'afterDestroy':function(_0x185beb,_0xa21592,_0x480414){return _0x176029[_0x7aed('0x23')][_0x7aed('0x25')]({'where':{'ChanSpyId':_0x185beb['id']}})[_0x7aed('0x1d')](function(){_0x480414();})['catch'](function(_0x16370f){_0x480414(_0x16370f);});}}});};
\ No newline at end of file
index 88800a8..3d15812 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bb5=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','then','info','VoiceChanSpy,\x20%s,\x20%s','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util'];(function(_0x2f5e85,_0x52911f){var _0x14a4fe=function(_0x5d53c3){while(--_0x5d53c3){_0x2f5e85['push'](_0x2f5e85['shift']());}};_0x14a4fe(++_0x52911f);}(_0x0bb5,0x148));var _0x50bb=function(_0x5b05b4,_0x30d624){_0x5b05b4=_0x5b05b4-0x0;var _0x609d89=_0x0bb5[_0x5b05b4];return _0x609d89;};'use strict';var _=require(_0x50bb('0x0'));var util=require(_0x50bb('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x50bb('0x2'));var fs=require('fs');var Redis=require(_0x50bb('0x3'));var db=require(_0x50bb('0x4'))['db'];var utils=require(_0x50bb('0x5'));var logger=require(_0x50bb('0x6'))(_0x50bb('0x7'));var config=require(_0x50bb('0x8'));var jayson=require(_0x50bb('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xfd7aeb,_0x35de5d,_0x2e5463){return new BPromise(function(_0x33ff54,_0x4f9172){return client['request'](_0xfd7aeb,_0x2e5463)[_0x50bb('0xa')](function(_0x1c2174){logger[_0x50bb('0xb')](_0x50bb('0xc'),_0x35de5d,'request\x20sent');logger[_0x50bb('0xd')](_0x50bb('0xe'),_0x35de5d,_0x50bb('0xf'),JSON[_0x50bb('0x10')](_0x1c2174));if(_0x1c2174[_0x50bb('0x11')]){if(_0x1c2174[_0x50bb('0x11')][_0x50bb('0x12')]===0x1f4){logger['error'](_0x50bb('0xc'),_0x35de5d,_0x1c2174['error'][_0x50bb('0x13')]);return _0x4f9172(_0x1c2174[_0x50bb('0x11')][_0x50bb('0x13')]);}logger['error'](_0x50bb('0xc'),_0x35de5d,_0x1c2174[_0x50bb('0x11')][_0x50bb('0x13')]);return _0x33ff54(_0x1c2174['error'][_0x50bb('0x13')]);}else{logger['info'](_0x50bb('0xc'),_0x35de5d,_0x50bb('0xf'));_0x33ff54(_0x1c2174[_0x50bb('0x14')][_0x50bb('0x13')]);}})[_0x50bb('0x15')](function(_0x4f2897){logger[_0x50bb('0x11')](_0x50bb('0xc'),_0x35de5d,_0x4f2897);_0x4f9172(_0x4f2897);});});}
\ No newline at end of file
+var _0xa5fa=['bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','debug','stringify','error','code','VoiceChanSpy,\x20%s,\x20%s','message','request\x20sent','result','catch','util','moment'];(function(_0x516cbf,_0x4b407c){var _0x51f2bf=function(_0x24ca7c){while(--_0x24ca7c){_0x516cbf['push'](_0x516cbf['shift']());}};_0x51f2bf(++_0x4b407c);}(_0xa5fa,0xc4));var _0xaa5f=function(_0x13f6c4,_0x3971c9){_0x13f6c4=_0x13f6c4-0x0;var _0x1cadbb=_0xa5fa[_0x13f6c4];return _0x1cadbb;};'use strict';var _=require('lodash');var util=require(_0xaa5f('0x0'));var moment=require(_0xaa5f('0x1'));var BPromise=require(_0xaa5f('0x2'));var rs=require(_0xaa5f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xaa5f('0x4'))['db'];var utils=require(_0xaa5f('0x5'));var logger=require('../../config/logger')(_0xaa5f('0x6'));var config=require(_0xaa5f('0x7'));var jayson=require(_0xaa5f('0x8'));var client=jayson[_0xaa5f('0x9')][_0xaa5f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x13b606,_0x302138,_0xc326df){return new BPromise(function(_0x74f64f,_0x3f550e){return client[_0xaa5f('0xb')](_0x13b606,_0xc326df)['then'](function(_0x1674c2){logger[_0xaa5f('0xc')]('VoiceChanSpy,\x20%s,\x20%s',_0x302138,'request\x20sent');logger[_0xaa5f('0xd')]('VoiceChanSpy,\x20%s,\x20%s,\x20%s',_0x302138,'request\x20sent',JSON[_0xaa5f('0xe')](_0x1674c2));if(_0x1674c2['error']){if(_0x1674c2[_0xaa5f('0xf')][_0xaa5f('0x10')]===0x1f4){logger[_0xaa5f('0xf')](_0xaa5f('0x11'),_0x302138,_0x1674c2[_0xaa5f('0xf')]['message']);return _0x3f550e(_0x1674c2[_0xaa5f('0xf')]['message']);}logger[_0xaa5f('0xf')](_0xaa5f('0x11'),_0x302138,_0x1674c2[_0xaa5f('0xf')][_0xaa5f('0x12')]);return _0x74f64f(_0x1674c2[_0xaa5f('0xf')]['message']);}else{logger['info'](_0xaa5f('0x11'),_0x302138,_0xaa5f('0x13'));_0x74f64f(_0x1674c2[_0xaa5f('0x14')][_0xaa5f('0x12')]);}})[_0xaa5f('0x15')](function(_0x1fa36a){logger[_0xaa5f('0xf')](_0xaa5f('0x11'),_0x302138,_0x1fa36a);_0x3f550e(_0x1fa36a);});});}
\ No newline at end of file
index 7a2aa08..484826a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7036=['./voiceContext.controller','get','isAuthenticated','index','post','create','put','/:id','delete','destroy','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x2535c0,_0x5b306a){var _0x31e5b0=function(_0x5c234c){while(--_0x5c234c){_0x2535c0['push'](_0x2535c0['shift']());}};_0x31e5b0(++_0x5b306a);}(_0x7036,0x185));var _0x6703=function(_0x2eadbe,_0x3aa115){_0x2eadbe=_0x2eadbe-0x0;var _0x249dee=_0x7036[_0x2eadbe];return _0x249dee;};'use strict';var multer=require(_0x6703('0x0'));var util=require(_0x6703('0x1'));var path=require(_0x6703('0x2'));var timeout=require('connect-timeout');var express=require(_0x6703('0x3'));var router=express['Router']();var fs_extra=require(_0x6703('0x4'));var auth=require(_0x6703('0x5'));var interaction=require(_0x6703('0x6'));var config=require('../../config/environment');var controller=require(_0x6703('0x7'));router[_0x6703('0x8')]('/',auth[_0x6703('0x9')](),controller[_0x6703('0xa')]);router[_0x6703('0x8')]('/:id',auth[_0x6703('0x9')](),controller['show']);router[_0x6703('0xb')]('/',auth[_0x6703('0x9')](),controller[_0x6703('0xc')]);router[_0x6703('0xd')](_0x6703('0xe'),auth['isAuthenticated'](),controller['update']);router[_0x6703('0xf')]('/:id',auth[_0x6703('0x9')](),controller[_0x6703('0x10')]);module[_0x6703('0x11')]=router;
\ No newline at end of file
+var _0x20ed=['update','delete','exports','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./voiceContext.controller','get','isAuthenticated','index','/:id','show','post','create','put'];(function(_0x2f3947,_0x2ee083){var _0x3e6ab7=function(_0x4057c0){while(--_0x4057c0){_0x2f3947['push'](_0x2f3947['shift']());}};_0x3e6ab7(++_0x2ee083);}(_0x20ed,0x1de));var _0xd20e=function(_0x24259d,_0x64a194){_0x24259d=_0x24259d-0x0;var _0x5a701=_0x20ed[_0x24259d];return _0x5a701;};'use strict';var multer=require(_0xd20e('0x0'));var util=require(_0xd20e('0x1'));var path=require(_0xd20e('0x2'));var timeout=require(_0xd20e('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xd20e('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xd20e('0x5'));var config=require(_0xd20e('0x6'));var controller=require(_0xd20e('0x7'));router[_0xd20e('0x8')]('/',auth[_0xd20e('0x9')](),controller[_0xd20e('0xa')]);router[_0xd20e('0x8')](_0xd20e('0xb'),auth[_0xd20e('0x9')](),controller[_0xd20e('0xc')]);router[_0xd20e('0xd')]('/',auth[_0xd20e('0x9')](),controller[_0xd20e('0xe')]);router[_0xd20e('0xf')](_0xd20e('0xb'),auth['isAuthenticated'](),controller[_0xd20e('0x10')]);router[_0xd20e('0x11')](_0xd20e('0xb'),auth[_0xd20e('0x9')](),controller['destroy']);module[_0xd20e('0x12')]=router;
\ No newline at end of file
index 70b8077..cf59cdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92af=['sequelize','exports','STRING','BOOLEAN'];(function(_0x925abe,_0x14c2d5){var _0x5beb90=function(_0xdd46e9){while(--_0xdd46e9){_0x925abe['push'](_0x925abe['shift']());}};_0x5beb90(++_0x14c2d5);}(_0x92af,0x1bc));var _0xf92a=function(_0x28e6b5,_0x2b1011){_0x28e6b5=_0x28e6b5-0x0;var _0x5a0dd9=_0x92af[_0x28e6b5];return _0x5a0dd9;};'use strict';var Sequelize=require(_0xf92a('0x0'));module[_0xf92a('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name'},'description':{'type':Sequelize[_0xf92a('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0xf92a('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xcc4e=['BOOLEAN','sequelize','exports','STRING','name'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xcc4e,0x7e));var _0xecc4=function(_0x23dda1,_0x4f23d0){_0x23dda1=_0x23dda1-0x0;var _0xdc1569=_0xcc4e[_0x23dda1];return _0xdc1569;};'use strict';var Sequelize=require(_0xecc4('0x0'));module[_0xecc4('0x1')]={'name':{'type':Sequelize[_0xecc4('0x2')],'unique':_0xecc4('0x3')},'description':{'type':Sequelize[_0xecc4('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0xecc4('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index 0d9e003..5ff346f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd22=['to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','jayson/promise','client','request','info','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','VoiceContext,\x20%s,\x20%s','result','sendStatus','status','undefined','count','offset','limit','set','Content-Range','json','apply','save','update','then','destroy','get','UserProfileResource','end','stack','name','send','index','map','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','type','VIRTUAL','filter','VoiceContext','includeAll','findAll','catch','show','params','rawAttributes','include','find','create','body','readFileSync','join','root','server/files/templates/context.ejs','utf8','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','Contexts','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','render','eml-format','rimraf','fast-json-patch','bluebird','util','path','sox'];(function(_0x1d8e07,_0x5442c3){var _0x59ab86=function(_0x1b9950){while(--_0x1b9950){_0x1d8e07['push'](_0x1d8e07['shift']());}};_0x59ab86(++_0x5442c3);}(_0xdd22,0x1a1));var _0x2dd2=function(_0x46f934,_0x35ef0e){_0x46f934=_0x46f934-0x0;var _0x368346=_0xdd22[_0x46f934];return _0x368346;};'use strict';var emlformat=require(_0x2dd2('0x0'));var rimraf=require(_0x2dd2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2dd2('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x2dd2('0x3'));var Mustache=require('mustache');var util=require(_0x2dd2('0x4'));var path=require(_0x2dd2('0x5'));var sox=require(_0x2dd2('0x6'));var csv=require(_0x2dd2('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2dd2('0x8'));var _=require(_0x2dd2('0x9'));var squel=require(_0x2dd2('0xa'));var crypto=require(_0x2dd2('0xb'));var jsforce=require(_0x2dd2('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x2dd2('0xd'));var Papa=require(_0x2dd2('0xe'));var Redis=require(_0x2dd2('0xf'));var authService=require(_0x2dd2('0x10'));var qs=require(_0x2dd2('0x11'));var as=require(_0x2dd2('0x12'));var hardwareService=require(_0x2dd2('0x13'));var logger=require(_0x2dd2('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x2dd2('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x2dd2('0x16'))['db'];var jayson=require(_0x2dd2('0x17'));var client=jayson[_0x2dd2('0x18')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2f1958,_0x44c1c2,_0xc4c4c4,_0x39d644){return new BPromise(function(_0x5105dc,_0x42c9a1){var _0x58c0ec=_0x39d644||client;return _0x58c0ec[_0x2dd2('0x19')](_0x2f1958,_0xc4c4c4)['then'](function(_0x666e2e){logger[_0x2dd2('0x1a')]('VoiceContext,\x20%s,\x20%s',_0x44c1c2,_0x2dd2('0x1b'));logger[_0x2dd2('0x1c')](_0x2dd2('0x1d'),_0x44c1c2,_0x2dd2('0x1b'),JSON[_0x2dd2('0x1e')](_0x666e2e));if(_0x666e2e[_0x2dd2('0x1f')]){if(_0x666e2e['error'][_0x2dd2('0x20')]===0x1f4){logger[_0x2dd2('0x1f')]('VoiceContext,\x20%s,\x20%s',_0x44c1c2,_0x666e2e['error'][_0x2dd2('0x21')]);return _0x42c9a1(_0x666e2e[_0x2dd2('0x1f')][_0x2dd2('0x21')]);}logger[_0x2dd2('0x1f')](_0x2dd2('0x22'),_0x44c1c2,_0x666e2e[_0x2dd2('0x1f')][_0x2dd2('0x21')]);return _0x5105dc(_0x666e2e[_0x2dd2('0x1f')][_0x2dd2('0x21')]);}else{logger[_0x2dd2('0x1a')]('VoiceContext,\x20%s,\x20%s',_0x44c1c2,_0x2dd2('0x1b'));_0x5105dc(_0x666e2e[_0x2dd2('0x23')]['message']);}})['catch'](function(_0x34c949){logger[_0x2dd2('0x1f')](_0x2dd2('0x22'),_0x44c1c2,_0x34c949);_0x42c9a1(_0x34c949);});});}function respondWithStatusCode(_0x4cf8d4,_0x5972db){_0x5972db=_0x5972db||0xcc;return function(_0x57986a){if(_0x57986a){return _0x4cf8d4[_0x2dd2('0x24')](_0x5972db);}return _0x4cf8d4[_0x2dd2('0x25')](_0x5972db)['end']();};}function respondWithResult(_0x43493e,_0x27b4bd){_0x27b4bd=_0x27b4bd||0xc8;return function(_0xc69691){if(_0xc69691){return _0x43493e[_0x2dd2('0x25')](_0x27b4bd)['json'](_0xc69691);}};}function respondWithFilteredResult(_0x4350ae,_0x5d60b8){return function(_0x26a3ba){if(_0x26a3ba){var _0x1d9d01=typeof _0x5d60b8['offset']===_0x2dd2('0x26')&&typeof _0x5d60b8['limit']===_0x2dd2('0x26');var _0x3da120=_0x26a3ba[_0x2dd2('0x27')];var _0x1cf77a=_0x1d9d01?0x0:_0x5d60b8[_0x2dd2('0x28')];var _0x1527da=_0x1d9d01?_0x26a3ba[_0x2dd2('0x27')]:_0x5d60b8['offset']+_0x5d60b8[_0x2dd2('0x29')];var _0x404e30;if(_0x1527da>=_0x3da120){_0x1527da=_0x3da120;_0x404e30=0xc8;}else{_0x404e30=0xce;}_0x4350ae[_0x2dd2('0x25')](_0x404e30);return _0x4350ae[_0x2dd2('0x2a')](_0x2dd2('0x2b'),_0x1cf77a+'-'+_0x1527da+'/'+_0x3da120)[_0x2dd2('0x2c')](_0x26a3ba);}return null;};}function patchUpdates(_0x27cb1f){return function(_0x4db653){try{jsonpatch[_0x2dd2('0x2d')](_0x4db653,_0x27cb1f,!![]);}catch(_0x59948){return BPromise['reject'](_0x59948);}return _0x4db653[_0x2dd2('0x2e')]();};}function saveUpdates(_0x38073c,_0x55792c){return function(_0x487ea9){if(_0x487ea9){return _0x487ea9[_0x2dd2('0x2f')](_0x38073c)[_0x2dd2('0x30')](function(_0x2c0894){return _0x2c0894;});}return null;};}function removeEntity(_0x30593e,_0x43a2d7){return function(_0x5e31a5){if(_0x5e31a5){return _0x5e31a5[_0x2dd2('0x31')]()[_0x2dd2('0x30')](function(){var _0x526736=_0x5e31a5[_0x2dd2('0x32')]({'plain':!![]});var _0x219d9b='Contexts';return db[_0x2dd2('0x33')][_0x2dd2('0x31')]({'where':{'type':_0x219d9b,'resourceId':_0x526736['id']}})[_0x2dd2('0x30')](function(){return _0x5e31a5;});})['then'](function(){_0x30593e['status'](0xcc)[_0x2dd2('0x34')]();});}};}function handleEntityNotFound(_0x31476a,_0x22fb0c){return function(_0x5ab92b){if(!_0x5ab92b){_0x31476a['sendStatus'](0x194);}return _0x5ab92b;};}function handleError(_0x438c29,_0x1850da){_0x1850da=_0x1850da||0x1f4;return function(_0x428c04){logger[_0x2dd2('0x1f')](_0x428c04[_0x2dd2('0x35')]);if(_0x428c04[_0x2dd2('0x36')]){delete _0x428c04[_0x2dd2('0x36')];}_0x438c29[_0x2dd2('0x25')](_0x1850da)[_0x2dd2('0x37')](_0x428c04);};}exports[_0x2dd2('0x38')]=function(_0xe237fc,_0x2d348f){var _0x5c55b3={},_0x1e9dca={},_0x59b69e={'count':0x0,'rows':[]};var _0x3a03c8=_[_0x2dd2('0x39')](db['VoiceContext']['rawAttributes'],function(_0x3c8e97){return{'name':_0x3c8e97[_0x2dd2('0x3a')],'type':_0x3c8e97['type'][_0x2dd2('0x3b')]};});_0x1e9dca[_0x2dd2('0x3c')]=_[_0x2dd2('0x39')](_0x3a03c8,_0x2dd2('0x36'));_0x1e9dca[_0x2dd2('0x3d')]=_[_0x2dd2('0x3e')](_0xe237fc[_0x2dd2('0x3d')]);_0x1e9dca['filters']=_[_0x2dd2('0x3f')](_0x1e9dca[_0x2dd2('0x3c')],_0x1e9dca[_0x2dd2('0x3d')]);_0x5c55b3[_0x2dd2('0x40')]=_[_0x2dd2('0x3f')](_0x1e9dca[_0x2dd2('0x3c')],qs[_0x2dd2('0x41')](_0xe237fc[_0x2dd2('0x3d')][_0x2dd2('0x41')]));_0x5c55b3['attributes']=_0x5c55b3[_0x2dd2('0x40')][_0x2dd2('0x42')]?_0x5c55b3[_0x2dd2('0x40')]:_0x1e9dca[_0x2dd2('0x3c')];if(!_0xe237fc[_0x2dd2('0x3d')][_0x2dd2('0x43')](_0x2dd2('0x44'))){_0x5c55b3['limit']=qs[_0x2dd2('0x29')](_0xe237fc[_0x2dd2('0x3d')]['limit']);_0x5c55b3['offset']=qs[_0x2dd2('0x28')](_0xe237fc[_0x2dd2('0x3d')][_0x2dd2('0x28')]);}_0x5c55b3[_0x2dd2('0x45')]=qs[_0x2dd2('0x46')](_0xe237fc[_0x2dd2('0x3d')][_0x2dd2('0x46')]);_0x5c55b3[_0x2dd2('0x47')]=qs[_0x2dd2('0x48')](_[_0x2dd2('0x49')](_0xe237fc['query'],_0x1e9dca[_0x2dd2('0x48')]),_0x3a03c8);if(_0xe237fc['query']['filter']){_0x5c55b3['where']=_[_0x2dd2('0x4a')](_0x5c55b3['where'],{'$or':_[_0x2dd2('0x39')](_0x3a03c8,function(_0x349893){if(_0x349893[_0x2dd2('0x4b')]!==_0x2dd2('0x4c')){var _0x2ba186={};_0x2ba186[_0x349893[_0x2dd2('0x36')]]={'$like':'%'+_0xe237fc[_0x2dd2('0x3d')][_0x2dd2('0x4d')]+'%'};return _0x2ba186;}})});}_0x5c55b3=_[_0x2dd2('0x4a')]({},_0x5c55b3,_0xe237fc['options']);var _0x3b3b40={'where':_0x5c55b3[_0x2dd2('0x47')]};return db[_0x2dd2('0x4e')][_0x2dd2('0x27')](_0x3b3b40)[_0x2dd2('0x30')](function(_0x202806){_0x59b69e['count']=_0x202806;if(_0xe237fc[_0x2dd2('0x3d')][_0x2dd2('0x4f')]){_0x5c55b3['include']=[{'all':!![]}];}return db['VoiceContext'][_0x2dd2('0x50')](_0x5c55b3);})['then'](function(_0x3c574b){_0x59b69e['rows']=_0x3c574b;return _0x59b69e;})[_0x2dd2('0x30')](respondWithFilteredResult(_0x2d348f,_0x5c55b3))[_0x2dd2('0x51')](handleError(_0x2d348f,null));};exports[_0x2dd2('0x52')]=function(_0x45301f,_0x187e24){var _0x1ef6ad={'raw':![],'where':{'id':_0x45301f[_0x2dd2('0x53')]['id']}},_0x4b1f8c={};_0x4b1f8c[_0x2dd2('0x3c')]=_[_0x2dd2('0x3e')](db[_0x2dd2('0x4e')][_0x2dd2('0x54')]);_0x4b1f8c[_0x2dd2('0x3d')]=_[_0x2dd2('0x3e')](_0x45301f[_0x2dd2('0x3d')]);_0x4b1f8c[_0x2dd2('0x48')]=_['intersection'](_0x4b1f8c[_0x2dd2('0x3c')],_0x4b1f8c[_0x2dd2('0x3d')]);_0x1ef6ad['attributes']=_[_0x2dd2('0x3f')](_0x4b1f8c[_0x2dd2('0x3c')],qs['fields'](_0x45301f['query']['fields']));_0x1ef6ad['attributes']=_0x1ef6ad[_0x2dd2('0x40')][_0x2dd2('0x42')]?_0x1ef6ad[_0x2dd2('0x40')]:_0x4b1f8c[_0x2dd2('0x3c')];if(_0x45301f[_0x2dd2('0x3d')][_0x2dd2('0x4f')]){_0x1ef6ad[_0x2dd2('0x55')]=[{'all':!![]}];}_0x1ef6ad=_[_0x2dd2('0x4a')]({},_0x1ef6ad,_0x45301f['options']);return db[_0x2dd2('0x4e')][_0x2dd2('0x56')](_0x1ef6ad)[_0x2dd2('0x30')](handleEntityNotFound(_0x187e24,null))[_0x2dd2('0x30')](respondWithResult(_0x187e24,null))[_0x2dd2('0x51')](handleError(_0x187e24,null));};exports['create']=function(_0x59c2e0,_0x5c5074,_0xcd79b7){var _0x5bedbf;return db[_0x2dd2('0x4e')][_0x2dd2('0x57')](_0x59c2e0[_0x2dd2('0x58')],{'raw':!![]})[_0x2dd2('0x30')](function(_0x5e6847){_0x5bedbf=_0x5e6847;return db[_0x2dd2('0x4e')][_0x2dd2('0x50')]({'raw':!![]});})[_0x2dd2('0x30')](function(_0x55bcb5){var _0x525536=fs[_0x2dd2('0x59')](path[_0x2dd2('0x5a')](config[_0x2dd2('0x5b')],_0x2dd2('0x5c')),_0x2dd2('0x5d'));var _0x475223=ejs['render'](_0x525536,{'contexts':_0x55bcb5||[]});fs[_0x2dd2('0x5e')](_0x2dd2('0x5f'),_0x475223);})['then'](function(){return respondWithRpcPromise(_0x2dd2('0x60'),'create',{'module':_0x2dd2('0x61')});})[_0x2dd2('0x30')](function(){var _0x39a4f9=_0x59c2e0['user'][_0x2dd2('0x32')]({'plain':!![]});if(!_0x39a4f9)throw new Error(_0x2dd2('0x62'));if(_0x39a4f9[_0x2dd2('0x63')]==='user'){var _0x4b0f05=_0x5bedbf[_0x2dd2('0x32')]({'plain':!![]});return db[_0x2dd2('0x64')][_0x2dd2('0x56')]({'where':{'name':_0x2dd2('0x65'),'userProfileId':_0x39a4f9[_0x2dd2('0x66')]},'raw':!![]})[_0x2dd2('0x30')](function(_0x29c94c){if(_0x29c94c&&_0x29c94c[_0x2dd2('0x67')]===0x0){return db[_0x2dd2('0x33')][_0x2dd2('0x57')]({'name':_0x4b0f05['name'],'resourceId':_0x4b0f05['id'],'type':_0x29c94c[_0x2dd2('0x36')],'sectionId':_0x29c94c['id']},{})[_0x2dd2('0x30')](function(){return _0x5bedbf;});}else{return _0x5bedbf;}})[_0x2dd2('0x51')](function(_0x42c265){logger[_0x2dd2('0x1f')](_0x2dd2('0x68'),_0x42c265);throw _0x42c265;});}return _0x5bedbf;})['then'](respondWithResult(_0x5c5074,0xc9))[_0x2dd2('0x51')](handleError(_0x5c5074,null));};exports['update']=function(_0x344024,_0x216864,_0x1222a8){var _0x292407;return db[_0x2dd2('0x4e')][_0x2dd2('0x56')]({'where':{'id':_0x344024['params']['id']}})[_0x2dd2('0x30')](handleEntityNotFound(_0x216864,null))['then'](saveUpdates(_0x344024['body'],null))[_0x2dd2('0x30')](function(_0x693ccc){if(_0x693ccc){_0x292407=_0x693ccc;return db['VoiceContext'][_0x2dd2('0x50')]({'raw':!![]});}})['then'](function(_0xdda78d){var _0x38229b=fs[_0x2dd2('0x59')](path[_0x2dd2('0x5a')](config[_0x2dd2('0x5b')],_0x2dd2('0x5c')),_0x2dd2('0x5d'));var _0xd34cef=ejs[_0x2dd2('0x69')](_0x38229b,{'contexts':_0xdda78d||[]});fs[_0x2dd2('0x5e')](_0x2dd2('0x5f'),_0xd34cef);})['then'](function(){return respondWithRpcPromise(_0x2dd2('0x60'),_0x2dd2('0x2f'),{'module':_0x2dd2('0x61')});})[_0x2dd2('0x30')](function(){return _0x292407;})[_0x2dd2('0x30')](respondWithResult(_0x216864,null))['catch'](handleError(_0x216864,null));};exports[_0x2dd2('0x31')]=function(_0x6edc54,_0x238e2d,_0x468240){var _0x1338e5;return db[_0x2dd2('0x4e')]['find']({'where':{'id':_0x6edc54['params']['id']}})['then'](handleEntityNotFound(_0x238e2d,null))['then'](removeEntity(_0x238e2d,null))[_0x2dd2('0x30')](function(){return db[_0x2dd2('0x4e')][_0x2dd2('0x50')]({'raw':!![]});})[_0x2dd2('0x30')](function(_0x214035){var _0x21b62f=fs[_0x2dd2('0x59')](path['join'](config['root'],'server/files/templates/context.ejs'),_0x2dd2('0x5d'));var _0x5ea494=ejs[_0x2dd2('0x69')](_0x21b62f,{'contexts':_0x214035});fs[_0x2dd2('0x5e')](_0x2dd2('0x5f'),_0x5ea494);return respondWithRpcPromise(_0x2dd2('0x60'),_0x2dd2('0x31'),{'module':_0x2dd2('0x61')});})[_0x2dd2('0x51')](handleError(_0x238e2d,null));};
\ No newline at end of file
+var _0xed77=['length','model','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','filter','options','includeAll','include','show','find','create','findAll','readFileSync','join','root','server/files/templates/context.ejs','utf8','render','/etc/asterisk/extensions_xcally_contexts.conf','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','params','body','writeFileSync','Reload','eml-format','fast-json-patch','request-promise','moment','bluebird','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','jayson/promise','client','request','info','debug','VoiceContext,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','VoiceContext,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','Contexts','UserProfileResource','destroy','stack','name','send','index','map','VoiceContext','rawAttributes','fieldName','type','key','query','keys','intersection','attributes','fields'];(function(_0x29109b,_0x596bc1){var _0x5dd448=function(_0x39a773){while(--_0x39a773){_0x29109b['push'](_0x29109b['shift']());}};_0x5dd448(++_0x596bc1);}(_0xed77,0xf8));var _0x7ed7=function(_0x491b80,_0x17a2f6){_0x491b80=_0x491b80-0x0;var _0x4e8337=_0xed77[_0x491b80];return _0x4e8337;};'use strict';var emlformat=require(_0x7ed7('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x7ed7('0x1'));var rp=require(_0x7ed7('0x2'));var moment=require(_0x7ed7('0x3'));var BPromise=require(_0x7ed7('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x7ed7('0x5'));var sox=require('sox');var csv=require(_0x7ed7('0x6'));var ejs=require(_0x7ed7('0x7'));var fs=require('fs');var fs_extra=require(_0x7ed7('0x8'));var _=require(_0x7ed7('0x9'));var squel=require(_0x7ed7('0xa'));var crypto=require(_0x7ed7('0xb'));var jsforce=require(_0x7ed7('0xc'));var deskjs=require(_0x7ed7('0xd'));var toCsv=require('to-csv');var querystring=require(_0x7ed7('0xe'));var Papa=require(_0x7ed7('0xf'));var Redis=require(_0x7ed7('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x7ed7('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7ed7('0x12'));var logger=require(_0x7ed7('0x13'))(_0x7ed7('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x7ed7('0x15'));var db=require(_0x7ed7('0x16'))['db'];var jayson=require(_0x7ed7('0x17'));var client=jayson[_0x7ed7('0x18')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2e92b0,_0x1dfce3,_0x567584,_0x3e7871){return new BPromise(function(_0x4c977a,_0x348615){var _0x16cb29=_0x3e7871||client;return _0x16cb29[_0x7ed7('0x19')](_0x2e92b0,_0x567584)['then'](function(_0x469eed){logger[_0x7ed7('0x1a')]('VoiceContext,\x20%s,\x20%s',_0x1dfce3,'request\x20sent');logger[_0x7ed7('0x1b')](_0x7ed7('0x1c'),_0x1dfce3,_0x7ed7('0x1d'),JSON['stringify'](_0x469eed));if(_0x469eed[_0x7ed7('0x1e')]){if(_0x469eed[_0x7ed7('0x1e')][_0x7ed7('0x1f')]===0x1f4){logger[_0x7ed7('0x1e')](_0x7ed7('0x20'),_0x1dfce3,_0x469eed[_0x7ed7('0x1e')][_0x7ed7('0x21')]);return _0x348615(_0x469eed[_0x7ed7('0x1e')][_0x7ed7('0x21')]);}logger['error'](_0x7ed7('0x20'),_0x1dfce3,_0x469eed['error'][_0x7ed7('0x21')]);return _0x4c977a(_0x469eed[_0x7ed7('0x1e')][_0x7ed7('0x21')]);}else{logger[_0x7ed7('0x1a')](_0x7ed7('0x20'),_0x1dfce3,_0x7ed7('0x1d'));_0x4c977a(_0x469eed[_0x7ed7('0x22')]['message']);}})[_0x7ed7('0x23')](function(_0x9acb59){logger[_0x7ed7('0x1e')](_0x7ed7('0x20'),_0x1dfce3,_0x9acb59);_0x348615(_0x9acb59);});});}function respondWithStatusCode(_0x1e24ea,_0x547b3f){_0x547b3f=_0x547b3f||0xcc;return function(_0x1a68d2){if(_0x1a68d2){return _0x1e24ea[_0x7ed7('0x24')](_0x547b3f);}return _0x1e24ea[_0x7ed7('0x25')](_0x547b3f)[_0x7ed7('0x26')]();};}function respondWithResult(_0x3f0f5c,_0xa215d7){_0xa215d7=_0xa215d7||0xc8;return function(_0x1a102e){if(_0x1a102e){return _0x3f0f5c[_0x7ed7('0x25')](_0xa215d7)[_0x7ed7('0x27')](_0x1a102e);}};}function respondWithFilteredResult(_0x986dce,_0x3f6937){return function(_0x955f18){if(_0x955f18){var _0x3a51b5=typeof _0x3f6937[_0x7ed7('0x28')]===_0x7ed7('0x29')&&typeof _0x3f6937[_0x7ed7('0x2a')]===_0x7ed7('0x29');var _0x19ea10=_0x955f18[_0x7ed7('0x2b')];var _0x1b6af8=_0x3a51b5?0x0:_0x3f6937[_0x7ed7('0x28')];var _0x4bd6c1=_0x3a51b5?_0x955f18[_0x7ed7('0x2b')]:_0x3f6937[_0x7ed7('0x28')]+_0x3f6937[_0x7ed7('0x2a')];var _0xce062;if(_0x4bd6c1>=_0x19ea10){_0x4bd6c1=_0x19ea10;_0xce062=0xc8;}else{_0xce062=0xce;}_0x986dce[_0x7ed7('0x25')](_0xce062);return _0x986dce[_0x7ed7('0x2c')](_0x7ed7('0x2d'),_0x1b6af8+'-'+_0x4bd6c1+'/'+_0x19ea10)[_0x7ed7('0x27')](_0x955f18);}return null;};}function patchUpdates(_0x38a620){return function(_0x14d6ce){try{jsonpatch[_0x7ed7('0x2e')](_0x14d6ce,_0x38a620,!![]);}catch(_0x5b40f4){return BPromise[_0x7ed7('0x2f')](_0x5b40f4);}return _0x14d6ce[_0x7ed7('0x30')]();};}function saveUpdates(_0x5e452f,_0x26135e){return function(_0x469258){if(_0x469258){return _0x469258[_0x7ed7('0x31')](_0x5e452f)['then'](function(_0x487c79){return _0x487c79;});}return null;};}function removeEntity(_0x5e12ec,_0x1e99ea){return function(_0x110465){if(_0x110465){return _0x110465['destroy']()[_0x7ed7('0x32')](function(){var _0x2cd4ba=_0x110465[_0x7ed7('0x33')]({'plain':!![]});var _0x16044e=_0x7ed7('0x34');return db[_0x7ed7('0x35')][_0x7ed7('0x36')]({'where':{'type':_0x16044e,'resourceId':_0x2cd4ba['id']}})[_0x7ed7('0x32')](function(){return _0x110465;});})[_0x7ed7('0x32')](function(){_0x5e12ec[_0x7ed7('0x25')](0xcc)[_0x7ed7('0x26')]();});}};}function handleEntityNotFound(_0x373bae,_0x22dc2b){return function(_0x21c6b2){if(!_0x21c6b2){_0x373bae['sendStatus'](0x194);}return _0x21c6b2;};}function handleError(_0x592a51,_0x3f6ca1){_0x3f6ca1=_0x3f6ca1||0x1f4;return function(_0x1c41b1){logger[_0x7ed7('0x1e')](_0x1c41b1[_0x7ed7('0x37')]);if(_0x1c41b1['name']){delete _0x1c41b1[_0x7ed7('0x38')];}_0x592a51[_0x7ed7('0x25')](_0x3f6ca1)[_0x7ed7('0x39')](_0x1c41b1);};}exports[_0x7ed7('0x3a')]=function(_0x11b6cc,_0xee0ba9){var _0x469d55={},_0x2dc84d={},_0x31cf9a={'count':0x0,'rows':[]};var _0x19cb94=_[_0x7ed7('0x3b')](db[_0x7ed7('0x3c')][_0x7ed7('0x3d')],function(_0x13f803){return{'name':_0x13f803[_0x7ed7('0x3e')],'type':_0x13f803[_0x7ed7('0x3f')][_0x7ed7('0x40')]};});_0x2dc84d['model']=_['map'](_0x19cb94,_0x7ed7('0x38'));_0x2dc84d[_0x7ed7('0x41')]=_[_0x7ed7('0x42')](_0x11b6cc[_0x7ed7('0x41')]);_0x2dc84d['filters']=_[_0x7ed7('0x43')](_0x2dc84d['model'],_0x2dc84d[_0x7ed7('0x41')]);_0x469d55[_0x7ed7('0x44')]=_[_0x7ed7('0x43')](_0x2dc84d['model'],qs['fields'](_0x11b6cc[_0x7ed7('0x41')][_0x7ed7('0x45')]));_0x469d55[_0x7ed7('0x44')]=_0x469d55[_0x7ed7('0x44')][_0x7ed7('0x46')]?_0x469d55['attributes']:_0x2dc84d[_0x7ed7('0x47')];if(!_0x11b6cc[_0x7ed7('0x41')][_0x7ed7('0x48')](_0x7ed7('0x49'))){_0x469d55[_0x7ed7('0x2a')]=qs[_0x7ed7('0x2a')](_0x11b6cc[_0x7ed7('0x41')][_0x7ed7('0x2a')]);_0x469d55[_0x7ed7('0x28')]=qs[_0x7ed7('0x28')](_0x11b6cc[_0x7ed7('0x41')][_0x7ed7('0x28')]);}_0x469d55[_0x7ed7('0x4a')]=qs[_0x7ed7('0x4b')](_0x11b6cc['query']['sort']);_0x469d55[_0x7ed7('0x4c')]=qs[_0x7ed7('0x4d')](_[_0x7ed7('0x4e')](_0x11b6cc[_0x7ed7('0x41')],_0x2dc84d[_0x7ed7('0x4d')]),_0x19cb94);if(_0x11b6cc['query']['filter']){_0x469d55['where']=_[_0x7ed7('0x4f')](_0x469d55[_0x7ed7('0x4c')],{'$or':_['map'](_0x19cb94,function(_0x5e939a){if(_0x5e939a[_0x7ed7('0x3f')]!=='VIRTUAL'){var _0x2c18f5={};_0x2c18f5[_0x5e939a[_0x7ed7('0x38')]]={'$like':'%'+_0x11b6cc[_0x7ed7('0x41')][_0x7ed7('0x50')]+'%'};return _0x2c18f5;}})});}_0x469d55=_['merge']({},_0x469d55,_0x11b6cc[_0x7ed7('0x51')]);var _0xbc1e77={'where':_0x469d55[_0x7ed7('0x4c')]};return db[_0x7ed7('0x3c')][_0x7ed7('0x2b')](_0xbc1e77)[_0x7ed7('0x32')](function(_0x20c26e){_0x31cf9a[_0x7ed7('0x2b')]=_0x20c26e;if(_0x11b6cc[_0x7ed7('0x41')][_0x7ed7('0x52')]){_0x469d55[_0x7ed7('0x53')]=[{'all':!![]}];}return db[_0x7ed7('0x3c')]['findAll'](_0x469d55);})[_0x7ed7('0x32')](function(_0x4f26d0){_0x31cf9a['rows']=_0x4f26d0;return _0x31cf9a;})[_0x7ed7('0x32')](respondWithFilteredResult(_0xee0ba9,_0x469d55))['catch'](handleError(_0xee0ba9,null));};exports[_0x7ed7('0x54')]=function(_0x4573c6,_0x290f5b){var _0x331c27={'raw':![],'where':{'id':_0x4573c6['params']['id']}},_0x6a2b1c={};_0x6a2b1c[_0x7ed7('0x47')]=_[_0x7ed7('0x42')](db[_0x7ed7('0x3c')][_0x7ed7('0x3d')]);_0x6a2b1c['query']=_[_0x7ed7('0x42')](_0x4573c6[_0x7ed7('0x41')]);_0x6a2b1c[_0x7ed7('0x4d')]=_[_0x7ed7('0x43')](_0x6a2b1c[_0x7ed7('0x47')],_0x6a2b1c[_0x7ed7('0x41')]);_0x331c27[_0x7ed7('0x44')]=_[_0x7ed7('0x43')](_0x6a2b1c['model'],qs[_0x7ed7('0x45')](_0x4573c6[_0x7ed7('0x41')]['fields']));_0x331c27[_0x7ed7('0x44')]=_0x331c27[_0x7ed7('0x44')][_0x7ed7('0x46')]?_0x331c27[_0x7ed7('0x44')]:_0x6a2b1c[_0x7ed7('0x47')];if(_0x4573c6['query'][_0x7ed7('0x52')]){_0x331c27['include']=[{'all':!![]}];}_0x331c27=_[_0x7ed7('0x4f')]({},_0x331c27,_0x4573c6['options']);return db['VoiceContext'][_0x7ed7('0x55')](_0x331c27)[_0x7ed7('0x32')](handleEntityNotFound(_0x290f5b,null))[_0x7ed7('0x32')](respondWithResult(_0x290f5b,null))[_0x7ed7('0x23')](handleError(_0x290f5b,null));};exports[_0x7ed7('0x56')]=function(_0x229dd5,_0x24829c,_0x1ac106){var _0x294fdd;return db['VoiceContext'][_0x7ed7('0x56')](_0x229dd5['body'],{'raw':!![]})[_0x7ed7('0x32')](function(_0x31743a){_0x294fdd=_0x31743a;return db[_0x7ed7('0x3c')][_0x7ed7('0x57')]({'raw':!![]});})[_0x7ed7('0x32')](function(_0x98b934){var _0x403535=fs[_0x7ed7('0x58')](path[_0x7ed7('0x59')](config[_0x7ed7('0x5a')],_0x7ed7('0x5b')),_0x7ed7('0x5c'));var _0x53ea9f=ejs[_0x7ed7('0x5d')](_0x403535,{'contexts':_0x98b934||[]});fs['writeFileSync'](_0x7ed7('0x5e'),_0x53ea9f);})[_0x7ed7('0x32')](function(){return respondWithRpcPromise('Reload',_0x7ed7('0x56'),{'module':_0x7ed7('0x5f')});})[_0x7ed7('0x32')](function(){var _0x101cd1=_0x229dd5[_0x7ed7('0x60')][_0x7ed7('0x33')]({'plain':!![]});if(!_0x101cd1)throw new Error(_0x7ed7('0x61'));if(_0x101cd1[_0x7ed7('0x62')]==='user'){var _0x40fde9=_0x294fdd[_0x7ed7('0x33')]({'plain':!![]});return db[_0x7ed7('0x63')][_0x7ed7('0x55')]({'where':{'name':'Contexts','userProfileId':_0x101cd1[_0x7ed7('0x64')]},'raw':!![]})[_0x7ed7('0x32')](function(_0x226b90){if(_0x226b90&&_0x226b90[_0x7ed7('0x65')]===0x0){return db[_0x7ed7('0x35')][_0x7ed7('0x56')]({'name':_0x40fde9[_0x7ed7('0x38')],'resourceId':_0x40fde9['id'],'type':_0x226b90[_0x7ed7('0x38')],'sectionId':_0x226b90['id']},{})['then'](function(){return _0x294fdd;});}else{return _0x294fdd;}})[_0x7ed7('0x23')](function(_0x5d7f88){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5d7f88);throw _0x5d7f88;});}return _0x294fdd;})[_0x7ed7('0x32')](respondWithResult(_0x24829c,0xc9))[_0x7ed7('0x23')](handleError(_0x24829c,null));};exports[_0x7ed7('0x31')]=function(_0x6f52e9,_0x4f9fa0,_0x3f57b8){var _0x2a4a0d;return db[_0x7ed7('0x3c')][_0x7ed7('0x55')]({'where':{'id':_0x6f52e9[_0x7ed7('0x66')]['id']}})[_0x7ed7('0x32')](handleEntityNotFound(_0x4f9fa0,null))[_0x7ed7('0x32')](saveUpdates(_0x6f52e9[_0x7ed7('0x67')],null))[_0x7ed7('0x32')](function(_0x301ada){if(_0x301ada){_0x2a4a0d=_0x301ada;return db[_0x7ed7('0x3c')][_0x7ed7('0x57')]({'raw':!![]});}})[_0x7ed7('0x32')](function(_0x58cf39){var _0x70d1f=fs[_0x7ed7('0x58')](path[_0x7ed7('0x59')](config[_0x7ed7('0x5a')],_0x7ed7('0x5b')),'utf8');var _0x36f4a1=ejs['render'](_0x70d1f,{'contexts':_0x58cf39||[]});fs[_0x7ed7('0x68')](_0x7ed7('0x5e'),_0x36f4a1);})[_0x7ed7('0x32')](function(){return respondWithRpcPromise(_0x7ed7('0x69'),_0x7ed7('0x31'),{'module':_0x7ed7('0x5f')});})[_0x7ed7('0x32')](function(){return _0x2a4a0d;})[_0x7ed7('0x32')](respondWithResult(_0x4f9fa0,null))[_0x7ed7('0x23')](handleError(_0x4f9fa0,null));};exports[_0x7ed7('0x36')]=function(_0x5ed6c8,_0xab52a4,_0x4ac255){var _0x20e9b8;return db[_0x7ed7('0x3c')][_0x7ed7('0x55')]({'where':{'id':_0x5ed6c8[_0x7ed7('0x66')]['id']}})['then'](handleEntityNotFound(_0xab52a4,null))[_0x7ed7('0x32')](removeEntity(_0xab52a4,null))['then'](function(){return db[_0x7ed7('0x3c')][_0x7ed7('0x57')]({'raw':!![]});})[_0x7ed7('0x32')](function(_0x174b3b){var _0x3bf00e=fs['readFileSync'](path[_0x7ed7('0x59')](config[_0x7ed7('0x5a')],_0x7ed7('0x5b')),_0x7ed7('0x5c'));var _0x4f2465=ejs[_0x7ed7('0x5d')](_0x3bf00e,{'contexts':_0x174b3b});fs[_0x7ed7('0x68')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x4f2465);return respondWithRpcPromise(_0x7ed7('0x69'),_0x7ed7('0x36'),{'module':_0x7ed7('0x5f')});})[_0x7ed7('0x23')](handleError(_0xab52a4,null));};
\ No newline at end of file
index fcee7a7..5fcdf0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7de=['define','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./voiceContext.attributes','exports'];(function(_0x3e2b3e,_0x4da1a6){var _0x207643=function(_0x56c4a0){while(--_0x56c4a0){_0x3e2b3e['push'](_0x3e2b3e['shift']());}};_0x207643(++_0x4da1a6);}(_0xb7de,0xc7));var _0xeb7d=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0xb7de[_0x3ff085];return _0x2b68c3;};'use strict';var _=require(_0xeb7d('0x0'));var util=require(_0xeb7d('0x1'));var logger=require(_0xeb7d('0x2'))('api');var moment=require(_0xeb7d('0x3'));var BPromise=require(_0xeb7d('0x4'));var rp=require(_0xeb7d('0x5'));var fs=require('fs');var path=require(_0xeb7d('0x6'));var rimraf=require(_0xeb7d('0x7'));var config=require('../../config/environment');var attributes=require(_0xeb7d('0x8'));module[_0xeb7d('0x9')]=function(_0xadf4,_0x433c32){return _0xadf4[_0xeb7d('0xa')]('VoiceContext',attributes,{'tableName':'voice_contexts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1d7c=['lodash','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./voiceContext.attributes','exports','define','VoiceContext','voice_contexts'];(function(_0x88338d,_0x3d79a1){var _0xe1c6da=function(_0x2db35d){while(--_0x2db35d){_0x88338d['push'](_0x88338d['shift']());}};_0xe1c6da(++_0x3d79a1);}(_0x1d7c,0xdd));var _0xc1d7=function(_0xfdd6b6,_0x19497a){_0xfdd6b6=_0xfdd6b6-0x0;var _0x464439=_0x1d7c[_0xfdd6b6];return _0x464439;};'use strict';var _=require(_0xc1d7('0x0'));var util=require(_0xc1d7('0x1'));var logger=require('../../config/logger')(_0xc1d7('0x2'));var moment=require('moment');var BPromise=require(_0xc1d7('0x3'));var rp=require(_0xc1d7('0x4'));var fs=require('fs');var path=require(_0xc1d7('0x5'));var rimraf=require(_0xc1d7('0x6'));var config=require(_0xc1d7('0x7'));var attributes=require(_0xc1d7('0x8'));module[_0xc1d7('0x9')]=function(_0x166695,_0xca8dd3){return _0x166695[_0xc1d7('0xa')](_0xc1d7('0xb'),attributes,{'tableName':_0xc1d7('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index eb8b19e..7a56244 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xceb2=['util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','VoiceContext,\x20%s,\x20%s,\x20%s','request\x20sent','code','error','message','result'];(function(_0x71ae3c,_0x404627){var _0x194072=function(_0x13c008){while(--_0x13c008){_0x71ae3c['push'](_0x71ae3c['shift']());}};_0x194072(++_0x404627);}(_0xceb2,0x1b8));var _0x2ceb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xceb2[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x2ceb('0x0'));var moment=require(_0x2ceb('0x1'));var BPromise=require(_0x2ceb('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2ceb('0x3'));var db=require(_0x2ceb('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x2ceb('0x5'))('rpc');var config=require(_0x2ceb('0x6'));var jayson=require(_0x2ceb('0x7'));var client=jayson[_0x2ceb('0x8')][_0x2ceb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x150602,_0x5d1ddb,_0x383c9a){return new BPromise(function(_0x53ef31,_0x5b6231){return client[_0x2ceb('0xa')](_0x150602,_0x383c9a)[_0x2ceb('0xb')](function(_0x5722ae){logger[_0x2ceb('0xc')](_0x2ceb('0xd'),_0x5d1ddb,'request\x20sent');logger['debug'](_0x2ceb('0xe'),_0x5d1ddb,_0x2ceb('0xf'),JSON['stringify'](_0x5722ae));if(_0x5722ae['error']){if(_0x5722ae['error'][_0x2ceb('0x10')]===0x1f4){logger[_0x2ceb('0x11')](_0x2ceb('0xd'),_0x5d1ddb,_0x5722ae['error']['message']);return _0x5b6231(_0x5722ae[_0x2ceb('0x11')][_0x2ceb('0x12')]);}logger[_0x2ceb('0x11')]('VoiceContext,\x20%s,\x20%s',_0x5d1ddb,_0x5722ae[_0x2ceb('0x11')][_0x2ceb('0x12')]);return _0x53ef31(_0x5722ae[_0x2ceb('0x11')][_0x2ceb('0x12')]);}else{logger['info'](_0x2ceb('0xd'),_0x5d1ddb,'request\x20sent');_0x53ef31(_0x5722ae[_0x2ceb('0x13')][_0x2ceb('0x12')]);}})['catch'](function(_0x502a59){logger[_0x2ceb('0x11')](_0x2ceb('0xd'),_0x5d1ddb,_0x502a59);_0x5b6231(_0x502a59);});});}
\ No newline at end of file
+var _0x96f9=['ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','info','VoiceContext,\x20%s,\x20%s','debug','VoiceContext,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','lodash','util','moment','bluebird','randomstring'];(function(_0x50ce0c,_0x541b68){var _0x3c988c=function(_0x1684ee){while(--_0x1684ee){_0x50ce0c['push'](_0x50ce0c['shift']());}};_0x3c988c(++_0x541b68);}(_0x96f9,0x64));var _0x996f=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x96f9[_0x59ee6f];return _0x4c0979;};'use strict';var _=require(_0x996f('0x0'));var util=require(_0x996f('0x1'));var moment=require(_0x996f('0x2'));var BPromise=require(_0x996f('0x3'));var rs=require(_0x996f('0x4'));var fs=require('fs');var Redis=require(_0x996f('0x5'));var db=require(_0x996f('0x6'))['db'];var utils=require(_0x996f('0x7'));var logger=require(_0x996f('0x8'))('rpc');var config=require(_0x996f('0x9'));var jayson=require(_0x996f('0xa'));var client=jayson['client'][_0x996f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x125e70,_0x3f134c,_0x5d6b3d){return new BPromise(function(_0x5cddab,_0x599ee0){return client['request'](_0x125e70,_0x5d6b3d)['then'](function(_0x304dc6){logger[_0x996f('0xc')](_0x996f('0xd'),_0x3f134c,'request\x20sent');logger[_0x996f('0xe')](_0x996f('0xf'),_0x3f134c,_0x996f('0x10'),JSON[_0x996f('0x11')](_0x304dc6));if(_0x304dc6['error']){if(_0x304dc6[_0x996f('0x12')][_0x996f('0x13')]===0x1f4){logger['error'](_0x996f('0xd'),_0x3f134c,_0x304dc6['error'][_0x996f('0x14')]);return _0x599ee0(_0x304dc6[_0x996f('0x12')]['message']);}logger[_0x996f('0x12')]('VoiceContext,\x20%s,\x20%s',_0x3f134c,_0x304dc6[_0x996f('0x12')][_0x996f('0x14')]);return _0x5cddab(_0x304dc6[_0x996f('0x12')][_0x996f('0x14')]);}else{logger['info'](_0x996f('0xd'),_0x3f134c,_0x996f('0x10'));_0x5cddab(_0x304dc6['result'][_0x996f('0x14')]);}})['catch'](function(_0x5cb072){logger[_0x996f('0x12')](_0x996f('0xd'),_0x3f134c,_0x5cb072);_0x599ee0(_0x5cb072);});});}
\ No newline at end of file
index eee5706..f1c59d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41bb=['show','post','create','put','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceDialReport.controller','get','isAuthenticated','describe','/:id'];(function(_0x35da11,_0x4c3607){var _0x5d1a57=function(_0x5b6f7d){while(--_0x5b6f7d){_0x35da11['push'](_0x35da11['shift']());}};_0x5d1a57(++_0x4c3607);}(_0x41bb,0xc5));var _0xb41b=function(_0x406458,_0x2deffb){_0x406458=_0x406458-0x0;var _0x44a544=_0x41bb[_0x406458];return _0x44a544;};'use strict';var multer=require(_0xb41b('0x0'));var util=require(_0xb41b('0x1'));var path=require('path');var timeout=require(_0xb41b('0x2'));var express=require('express');var router=express[_0xb41b('0x3')]();var fs_extra=require(_0xb41b('0x4'));var auth=require(_0xb41b('0x5'));var interaction=require(_0xb41b('0x6'));var config=require('../../config/environment');var controller=require(_0xb41b('0x7'));router[_0xb41b('0x8')]('/',auth[_0xb41b('0x9')](),controller['index']);router['get']('/describe',auth[_0xb41b('0x9')](),controller[_0xb41b('0xa')]);router['get'](_0xb41b('0xb'),auth[_0xb41b('0x9')](),controller[_0xb41b('0xc')]);router[_0xb41b('0xd')]('/',auth[_0xb41b('0x9')](),controller[_0xb41b('0xe')]);router[_0xb41b('0xf')]('/:id',auth[_0xb41b('0x9')](),controller['update']);router[_0xb41b('0x10')](_0xb41b('0xb'),auth[_0xb41b('0x9')](),controller[_0xb41b('0x11')]);module[_0xb41b('0x12')]=router;
\ No newline at end of file
+var _0xcf13=['put','delete','destroy','exports','util','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','/describe','/:id','create'];(function(_0x1ce22c,_0xb3bf9b){var _0x3c14ba=function(_0x4fe6f0){while(--_0x4fe6f0){_0x1ce22c['push'](_0x1ce22c['shift']());}};_0x3c14ba(++_0xb3bf9b);}(_0xcf13,0x1b7));var _0x3cf1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcf13[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0x3cf1('0x0'));var path=require(_0x3cf1('0x1'));var timeout=require('connect-timeout');var express=require(_0x3cf1('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x3cf1('0x3'));var interaction=require(_0x3cf1('0x4'));var config=require(_0x3cf1('0x5'));var controller=require('./voiceDialReport.controller');router['get']('/',auth[_0x3cf1('0x6')](),controller['index']);router[_0x3cf1('0x7')](_0x3cf1('0x8'),auth[_0x3cf1('0x6')](),controller['describe']);router['get'](_0x3cf1('0x9'),auth[_0x3cf1('0x6')](),controller['show']);router['post']('/',auth[_0x3cf1('0x6')](),controller[_0x3cf1('0xa')]);router[_0x3cf1('0xb')](_0x3cf1('0x9'),auth[_0x3cf1('0x6')](),controller['update']);router[_0x3cf1('0xc')]('/:id',auth[_0x3cf1('0x6')](),controller[_0x3cf1('0xd')]);module[_0x3cf1('0xe')]=router;
\ No newline at end of file
index 09db46c..ee59c34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['DATE','called,connect,complete','exports','STRING','INTEGER'];(function(_0x1b81fb,_0x997e36){var _0x110183=function(_0x157276){while(--_0x157276){_0x1b81fb['push'](_0x1b81fb['shift']());}};_0x110183(++_0x997e36);}(_0xedd9,0xfc));var _0x9edd=function(_0x4233d4,_0x1bafaa){_0x4233d4=_0x4233d4-0x0;var _0xc5440b=_0xedd9[_0x4233d4];return _0xc5440b;};'use strict';var Sequelize=require('sequelize');module[_0x9edd('0x0')]={'privilege':{'type':Sequelize[_0x9edd('0x1')]},'channel':{'type':Sequelize[_0x9edd('0x1')]},'channelstate':{'type':Sequelize[_0x9edd('0x2')]},'channelstatedesc':{'type':Sequelize[_0x9edd('0x1')]},'calleridnum':{'type':Sequelize[_0x9edd('0x1')]},'calleridname':{'type':Sequelize[_0x9edd('0x1')]},'connectedlinenum':{'type':Sequelize[_0x9edd('0x1')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x9edd('0x1')]},'accountcode':{'type':Sequelize[_0x9edd('0x1')]},'context':{'type':Sequelize[_0x9edd('0x1')]},'exten':{'type':Sequelize[_0x9edd('0x1')]},'priority':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize[_0x9edd('0x1')]},'linkedid':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0x9edd('0x1')]},'destchannelstate':{'type':Sequelize[_0x9edd('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x9edd('0x1')]},'destcalleridnum':{'type':Sequelize[_0x9edd('0x1')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x9edd('0x1')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x9edd('0x1')]},'destaccountcode':{'type':Sequelize[_0x9edd('0x1')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x9edd('0x1')]},'destpriority':{'type':Sequelize[_0x9edd('0x2')]},'destuniqueid':{'type':Sequelize['STRING']},'destlinkedid':{'type':Sequelize[_0x9edd('0x1')]},'dialstring':{'type':Sequelize[_0x9edd('0x1')]},'dialstatus':{'type':Sequelize[_0x9edd('0x1')]},'starttime':{'type':Sequelize[_0x9edd('0x3')]},'answertime':{'type':Sequelize[_0x9edd('0x3')]},'endtime':{'type':Sequelize[_0x9edd('0x3')]},'lastevent':{'type':Sequelize[_0x9edd('0x1')],'comment':_0x9edd('0x4')},'routeId':{'type':Sequelize['INTEGER']},'duration':{'type':Sequelize[_0x9edd('0x2')]},'holdtime':{'type':Sequelize[_0x9edd('0x2')]},'billableseconds':{'type':Sequelize[_0x9edd('0x2')]}};
\ No newline at end of file
+var _0x8ef6=['INTEGER','DATE','sequelize','exports','STRING'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0x8ef6,0xf2));var _0x68ef=function(_0x55523c,_0x18f134){_0x55523c=_0x55523c-0x0;var _0x373326=_0x8ef6[_0x55523c];return _0x373326;};'use strict';var Sequelize=require(_0x68ef('0x0'));module[_0x68ef('0x1')]={'privilege':{'type':Sequelize[_0x68ef('0x2')]},'channel':{'type':Sequelize[_0x68ef('0x2')]},'channelstate':{'type':Sequelize[_0x68ef('0x3')]},'channelstatedesc':{'type':Sequelize[_0x68ef('0x2')]},'calleridnum':{'type':Sequelize[_0x68ef('0x2')]},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x68ef('0x2')]},'connectedlinename':{'type':Sequelize[_0x68ef('0x2')]},'language':{'type':Sequelize[_0x68ef('0x2')]},'accountcode':{'type':Sequelize[_0x68ef('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x68ef('0x3')]},'uniqueid':{'type':Sequelize[_0x68ef('0x2')]},'linkedid':{'type':Sequelize[_0x68ef('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x68ef('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x68ef('0x2')]},'destcalleridnum':{'type':Sequelize[_0x68ef('0x2')]},'destcalleridname':{'type':Sequelize[_0x68ef('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x68ef('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x68ef('0x2')]},'destlanguage':{'type':Sequelize[_0x68ef('0x2')]},'destaccountcode':{'type':Sequelize[_0x68ef('0x2')]},'destcontext':{'type':Sequelize[_0x68ef('0x2')]},'destexten':{'type':Sequelize[_0x68ef('0x2')]},'destpriority':{'type':Sequelize[_0x68ef('0x3')]},'destuniqueid':{'type':Sequelize[_0x68ef('0x2')]},'destlinkedid':{'type':Sequelize['STRING']},'dialstring':{'type':Sequelize[_0x68ef('0x2')]},'dialstatus':{'type':Sequelize[_0x68ef('0x2')]},'starttime':{'type':Sequelize[_0x68ef('0x4')]},'answertime':{'type':Sequelize[_0x68ef('0x4')]},'endtime':{'type':Sequelize[_0x68ef('0x4')]},'lastevent':{'type':Sequelize[_0x68ef('0x2')],'comment':'called,connect,complete'},'routeId':{'type':Sequelize[_0x68ef('0x3')]},'duration':{'type':Sequelize[_0x68ef('0x3')]},'holdtime':{'type':Sequelize[_0x68ef('0x3')]},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index d92455b..f0aa750 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6560=['options','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','request-promise','moment','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','reject','save','update','then','error','stack','name','send','index','map','VoiceDialReport','rawAttributes','fieldName','type','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','findAll','catch','show','includeAll','include'];(function(_0x8a74b9,_0x3c4c4b){var _0x5dcdf9=function(_0x51f6e6){while(--_0x51f6e6){_0x8a74b9['push'](_0x8a74b9['shift']());}};_0x5dcdf9(++_0x3c4c4b);}(_0x6560,0x1bc));var _0x0656=function(_0x5ab111,_0x17f47f){_0x5ab111=_0x5ab111-0x0;var _0x28103b=_0x6560[_0x5ab111];return _0x28103b;};'use strict';var emlformat=require(_0x0656('0x0'));var rimraf=require(_0x0656('0x1'));var zipdir=require(_0x0656('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0656('0x3'));var moment=require(_0x0656('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x0656('0x5'));var path=require(_0x0656('0x6'));var sox=require(_0x0656('0x7'));var csv=require('to-csv');var ejs=require(_0x0656('0x8'));var fs=require('fs');var fs_extra=require(_0x0656('0x9'));var _=require(_0x0656('0xa'));var squel=require(_0x0656('0xb'));var crypto=require(_0x0656('0xc'));var jsforce=require(_0x0656('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x0656('0xe'));var querystring=require(_0x0656('0xf'));var Papa=require(_0x0656('0x10'));var Redis=require('ioredis');var authService=require(_0x0656('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x0656('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x0656('0x13'));var utils=require(_0x0656('0x14'));var config=require(_0x0656('0x15'));var licenseUtil=require(_0x0656('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xb5b41b,_0x5b2d9a){_0x5b2d9a=_0x5b2d9a||0xcc;return function(_0x4d4c8a){if(_0x4d4c8a){return _0xb5b41b[_0x0656('0x17')](_0x5b2d9a);}return _0xb5b41b[_0x0656('0x18')](_0x5b2d9a)[_0x0656('0x19')]();};}function respondWithResult(_0x2267e8,_0x1ef5c6){_0x1ef5c6=_0x1ef5c6||0xc8;return function(_0x2b73c2){if(_0x2b73c2){return _0x2267e8[_0x0656('0x18')](_0x1ef5c6)[_0x0656('0x1a')](_0x2b73c2);}};}function respondWithFilteredResult(_0x2c1508,_0x47837a){return function(_0x3431d7){if(_0x3431d7){var _0x101772=typeof _0x47837a[_0x0656('0x1b')]===_0x0656('0x1c')&&typeof _0x47837a[_0x0656('0x1d')]===_0x0656('0x1c');var _0x2b45c9=_0x3431d7[_0x0656('0x1e')];var _0x555d9e=_0x101772?0x0:_0x47837a['offset'];var _0x49716c=_0x101772?_0x3431d7[_0x0656('0x1e')]:_0x47837a[_0x0656('0x1b')]+_0x47837a[_0x0656('0x1d')];var _0x35416c;if(_0x49716c>=_0x2b45c9){_0x49716c=_0x2b45c9;_0x35416c=0xc8;}else{_0x35416c=0xce;}_0x2c1508[_0x0656('0x18')](_0x35416c);return _0x2c1508['set']('Content-Range',_0x555d9e+'-'+_0x49716c+'/'+_0x2b45c9)[_0x0656('0x1a')](_0x3431d7);}return null;};}function patchUpdates(_0xfd99d4){return function(_0x3a3871){try{jsonpatch['apply'](_0x3a3871,_0xfd99d4,!![]);}catch(_0x4d5ec5){return BPromise[_0x0656('0x1f')](_0x4d5ec5);}return _0x3a3871[_0x0656('0x20')]();};}function saveUpdates(_0x52223a,_0x4b450b){return function(_0xbe864b){if(_0xbe864b){return _0xbe864b[_0x0656('0x21')](_0x52223a)['then'](function(_0x50ad18){return _0x50ad18;});}return null;};}function removeEntity(_0x204c62,_0x317b5e){return function(_0x2c4e3b){if(_0x2c4e3b){return _0x2c4e3b['destroy']()[_0x0656('0x22')](function(){_0x204c62[_0x0656('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x25a6c0,_0x3a96eb){return function(_0x3dffda){if(!_0x3dffda){_0x25a6c0[_0x0656('0x17')](0x194);}return _0x3dffda;};}function handleError(_0x233495,_0x5e31a1){_0x5e31a1=_0x5e31a1||0x1f4;return function(_0x597a26){logger[_0x0656('0x23')](_0x597a26[_0x0656('0x24')]);if(_0x597a26[_0x0656('0x25')]){delete _0x597a26[_0x0656('0x25')];}_0x233495[_0x0656('0x18')](_0x5e31a1)[_0x0656('0x26')](_0x597a26);};}exports[_0x0656('0x27')]=function(_0x58bc69,_0x22181c){var _0xa6103f={},_0xac85b9={},_0x3658c2={'count':0x0,'rows':[]};var _0x422508=_[_0x0656('0x28')](db[_0x0656('0x29')][_0x0656('0x2a')],function(_0x596849){return{'name':_0x596849[_0x0656('0x2b')],'type':_0x596849[_0x0656('0x2c')]['key']};});_0xac85b9[_0x0656('0x2d')]=_[_0x0656('0x28')](_0x422508,_0x0656('0x25'));_0xac85b9['query']=_[_0x0656('0x2e')](_0x58bc69[_0x0656('0x2f')]);_0xac85b9['filters']=_[_0x0656('0x30')](_0xac85b9[_0x0656('0x2d')],_0xac85b9['query']);_0xa6103f[_0x0656('0x31')]=_[_0x0656('0x30')](_0xac85b9[_0x0656('0x2d')],qs[_0x0656('0x32')](_0x58bc69[_0x0656('0x2f')][_0x0656('0x32')]));_0xa6103f[_0x0656('0x31')]=_0xa6103f[_0x0656('0x31')][_0x0656('0x33')]?_0xa6103f[_0x0656('0x31')]:_0xac85b9[_0x0656('0x2d')];if(!_0x58bc69[_0x0656('0x2f')][_0x0656('0x34')](_0x0656('0x35'))){_0xa6103f[_0x0656('0x1d')]=qs[_0x0656('0x1d')](_0x58bc69[_0x0656('0x2f')]['limit']);_0xa6103f['offset']=qs[_0x0656('0x1b')](_0x58bc69[_0x0656('0x2f')][_0x0656('0x1b')]);}_0xa6103f[_0x0656('0x36')]=qs[_0x0656('0x37')](_0x58bc69[_0x0656('0x2f')][_0x0656('0x37')]);_0xa6103f[_0x0656('0x38')]=qs[_0x0656('0x39')](_[_0x0656('0x3a')](_0x58bc69[_0x0656('0x2f')],_0xac85b9['filters']),_0x422508);if(_0x58bc69[_0x0656('0x2f')]['filter']){_0xa6103f['where']=_[_0x0656('0x3b')](_0xa6103f[_0x0656('0x38')],{'$or':_[_0x0656('0x28')](_0x422508,function(_0x49525e){if(_0x49525e[_0x0656('0x2c')]!==_0x0656('0x3c')){var _0x1c7c89={};_0x1c7c89[_0x49525e[_0x0656('0x25')]]={'$like':'%'+_0x58bc69[_0x0656('0x2f')][_0x0656('0x3d')]+'%'};return _0x1c7c89;}})});}_0xa6103f=_[_0x0656('0x3b')]({},_0xa6103f,_0x58bc69['options']);var _0x6f79d3={'where':_0xa6103f[_0x0656('0x38')]};return db[_0x0656('0x29')][_0x0656('0x1e')](_0x6f79d3)['then'](function(_0x372ad7){_0x3658c2[_0x0656('0x1e')]=_0x372ad7;if(_0x58bc69['query']['includeAll']){_0xa6103f['include']=[{'all':!![]}];}return db[_0x0656('0x29')][_0x0656('0x3e')](_0xa6103f);})[_0x0656('0x22')](function(_0x1a04e4){_0x3658c2['rows']=_0x1a04e4;return _0x3658c2;})[_0x0656('0x22')](respondWithFilteredResult(_0x22181c,_0xa6103f))[_0x0656('0x3f')](handleError(_0x22181c,null));};exports[_0x0656('0x40')]=function(_0x537801,_0x55ac5d){var _0x5f5baa={'raw':!![],'where':{'id':_0x537801['params']['id']}},_0x23956c={};_0x23956c[_0x0656('0x2d')]=_[_0x0656('0x2e')](db[_0x0656('0x29')][_0x0656('0x2a')]);_0x23956c['query']=_['keys'](_0x537801[_0x0656('0x2f')]);_0x23956c[_0x0656('0x39')]=_[_0x0656('0x30')](_0x23956c[_0x0656('0x2d')],_0x23956c['query']);_0x5f5baa[_0x0656('0x31')]=_[_0x0656('0x30')](_0x23956c[_0x0656('0x2d')],qs[_0x0656('0x32')](_0x537801[_0x0656('0x2f')][_0x0656('0x32')]));_0x5f5baa[_0x0656('0x31')]=_0x5f5baa[_0x0656('0x31')][_0x0656('0x33')]?_0x5f5baa[_0x0656('0x31')]:_0x23956c[_0x0656('0x2d')];if(_0x537801[_0x0656('0x2f')][_0x0656('0x41')]){_0x5f5baa[_0x0656('0x42')]=[{'all':!![]}];}_0x5f5baa=_[_0x0656('0x3b')]({},_0x5f5baa,_0x537801[_0x0656('0x43')]);return db[_0x0656('0x29')][_0x0656('0x44')](_0x5f5baa)[_0x0656('0x22')](handleEntityNotFound(_0x55ac5d,null))['then'](respondWithResult(_0x55ac5d,null))[_0x0656('0x3f')](handleError(_0x55ac5d,null));};exports[_0x0656('0x45')]=function(_0x26920c,_0x130f7b){return db[_0x0656('0x29')][_0x0656('0x45')](_0x26920c[_0x0656('0x46')],{})['then'](respondWithResult(_0x130f7b,0xc9))[_0x0656('0x3f')](handleError(_0x130f7b,null));};exports[_0x0656('0x21')]=function(_0x23881b,_0xc6fed){if(_0x23881b[_0x0656('0x46')]['id']){delete _0x23881b['body']['id'];}return db['VoiceDialReport'][_0x0656('0x44')]({'where':{'id':_0x23881b['params']['id']}})[_0x0656('0x22')](handleEntityNotFound(_0xc6fed,null))[_0x0656('0x22')](saveUpdates(_0x23881b[_0x0656('0x46')],null))[_0x0656('0x22')](respondWithResult(_0xc6fed,null))['catch'](handleError(_0xc6fed,null));};exports[_0x0656('0x47')]=function(_0x33dbe2,_0x2e78e0){return db[_0x0656('0x29')][_0x0656('0x44')]({'where':{'id':_0x33dbe2['params']['id']}})['then'](handleEntityNotFound(_0x2e78e0,null))[_0x0656('0x22')](removeEntity(_0x2e78e0,null))['catch'](handleError(_0x2e78e0,null));};exports[_0x0656('0x48')]=function(_0x4d3efb,_0x356a6c){return db[_0x0656('0x29')]['describe']()[_0x0656('0x22')](respondWithResult(_0x356a6c,null))['catch'](handleError(_0x356a6c,null));};
\ No newline at end of file
+var _0x0915=['include','findAll','rows','catch','show','params','fields','length','find','create','body','describe','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','type','key','model','query','keys','intersection','attributes','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','VoiceDialReport','includeAll'];(function(_0x3a51f0,_0x84e1c7){var _0x11c7c8=function(_0x20253b){while(--_0x20253b){_0x3a51f0['push'](_0x3a51f0['shift']());}};_0x11c7c8(++_0x84e1c7);}(_0x0915,0x1d4));var _0x5091=function(_0x179b53,_0x31f6fe){_0x179b53=_0x179b53-0x0;var _0x38a146=_0x0915[_0x179b53];return _0x38a146;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x5091('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5091('0x1'));var moment=require('moment');var BPromise=require(_0x5091('0x2'));var Mustache=require(_0x5091('0x3'));var util=require(_0x5091('0x4'));var path=require(_0x5091('0x5'));var sox=require(_0x5091('0x6'));var csv=require(_0x5091('0x7'));var ejs=require(_0x5091('0x8'));var fs=require('fs');var fs_extra=require(_0x5091('0x9'));var _=require(_0x5091('0xa'));var squel=require(_0x5091('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x5091('0xc'));var toCsv=require(_0x5091('0x7'));var querystring=require(_0x5091('0xd'));var Papa=require(_0x5091('0xe'));var Redis=require(_0x5091('0xf'));var authService=require(_0x5091('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x5091('0x11'));var hardwareService=require(_0x5091('0x12'));var logger=require(_0x5091('0x13'))(_0x5091('0x14'));var utils=require(_0x5091('0x15'));var config=require(_0x5091('0x16'));var licenseUtil=require(_0x5091('0x17'));var db=require(_0x5091('0x18'))['db'];function respondWithStatusCode(_0x3d0550,_0x547f82){_0x547f82=_0x547f82||0xcc;return function(_0x1aaf6f){if(_0x1aaf6f){return _0x3d0550[_0x5091('0x19')](_0x547f82);}return _0x3d0550[_0x5091('0x1a')](_0x547f82)[_0x5091('0x1b')]();};}function respondWithResult(_0x50a6ac,_0x384185){_0x384185=_0x384185||0xc8;return function(_0x1dc360){if(_0x1dc360){return _0x50a6ac[_0x5091('0x1a')](_0x384185)['json'](_0x1dc360);}};}function respondWithFilteredResult(_0x27111b,_0x1b0457){return function(_0x537e51){if(_0x537e51){var _0x25ccd5=typeof _0x1b0457[_0x5091('0x1c')]==='undefined'&&typeof _0x1b0457['limit']===_0x5091('0x1d');var _0x48127a=_0x537e51[_0x5091('0x1e')];var _0x46be7c=_0x25ccd5?0x0:_0x1b0457[_0x5091('0x1c')];var _0x24650c=_0x25ccd5?_0x537e51[_0x5091('0x1e')]:_0x1b0457['offset']+_0x1b0457[_0x5091('0x1f')];var _0x48e11b;if(_0x24650c>=_0x48127a){_0x24650c=_0x48127a;_0x48e11b=0xc8;}else{_0x48e11b=0xce;}_0x27111b['status'](_0x48e11b);return _0x27111b[_0x5091('0x20')]('Content-Range',_0x46be7c+'-'+_0x24650c+'/'+_0x48127a)[_0x5091('0x21')](_0x537e51);}return null;};}function patchUpdates(_0x27ad5e){return function(_0x250b9b){try{jsonpatch[_0x5091('0x22')](_0x250b9b,_0x27ad5e,!![]);}catch(_0x4fd1ee){return BPromise[_0x5091('0x23')](_0x4fd1ee);}return _0x250b9b[_0x5091('0x24')]();};}function saveUpdates(_0x238e3c,_0x1d5098){return function(_0x3a4413){if(_0x3a4413){return _0x3a4413[_0x5091('0x25')](_0x238e3c)[_0x5091('0x26')](function(_0x226054){return _0x226054;});}return null;};}function removeEntity(_0x26900d,_0x1a4a35){return function(_0xdf21ef){if(_0xdf21ef){return _0xdf21ef[_0x5091('0x27')]()[_0x5091('0x26')](function(){_0x26900d[_0x5091('0x1a')](0xcc)[_0x5091('0x1b')]();});}};}function handleEntityNotFound(_0x20bd59,_0x628463){return function(_0x2f089b){if(!_0x2f089b){_0x20bd59['sendStatus'](0x194);}return _0x2f089b;};}function handleError(_0x240962,_0x1656fa){_0x1656fa=_0x1656fa||0x1f4;return function(_0x3e4794){logger[_0x5091('0x28')](_0x3e4794[_0x5091('0x29')]);if(_0x3e4794[_0x5091('0x2a')]){delete _0x3e4794[_0x5091('0x2a')];}_0x240962[_0x5091('0x1a')](_0x1656fa)[_0x5091('0x2b')](_0x3e4794);};}exports[_0x5091('0x2c')]=function(_0x2d144d,_0x2cee1f){var _0x17704={},_0x17ff4b={},_0x1311dd={'count':0x0,'rows':[]};var _0x55d26f=_[_0x5091('0x2d')](db['VoiceDialReport']['rawAttributes'],function(_0x3767c){return{'name':_0x3767c['fieldName'],'type':_0x3767c[_0x5091('0x2e')][_0x5091('0x2f')]};});_0x17ff4b[_0x5091('0x30')]=_[_0x5091('0x2d')](_0x55d26f,_0x5091('0x2a'));_0x17ff4b[_0x5091('0x31')]=_[_0x5091('0x32')](_0x2d144d[_0x5091('0x31')]);_0x17ff4b['filters']=_[_0x5091('0x33')](_0x17ff4b[_0x5091('0x30')],_0x17ff4b[_0x5091('0x31')]);_0x17704[_0x5091('0x34')]=_[_0x5091('0x33')](_0x17ff4b[_0x5091('0x30')],qs['fields'](_0x2d144d[_0x5091('0x31')]['fields']));_0x17704[_0x5091('0x34')]=_0x17704['attributes']['length']?_0x17704[_0x5091('0x34')]:_0x17ff4b[_0x5091('0x30')];if(!_0x2d144d[_0x5091('0x31')]['hasOwnProperty']('nolimit')){_0x17704[_0x5091('0x1f')]=qs[_0x5091('0x1f')](_0x2d144d[_0x5091('0x31')][_0x5091('0x1f')]);_0x17704[_0x5091('0x1c')]=qs[_0x5091('0x1c')](_0x2d144d['query']['offset']);}_0x17704[_0x5091('0x35')]=qs[_0x5091('0x36')](_0x2d144d['query']['sort']);_0x17704[_0x5091('0x37')]=qs[_0x5091('0x38')](_[_0x5091('0x39')](_0x2d144d[_0x5091('0x31')],_0x17ff4b[_0x5091('0x38')]),_0x55d26f);if(_0x2d144d['query'][_0x5091('0x3a')]){_0x17704[_0x5091('0x37')]=_[_0x5091('0x3b')](_0x17704[_0x5091('0x37')],{'$or':_[_0x5091('0x2d')](_0x55d26f,function(_0x5951df){if(_0x5951df[_0x5091('0x2e')]!==_0x5091('0x3c')){var _0x34b6f9={};_0x34b6f9[_0x5951df[_0x5091('0x2a')]]={'$like':'%'+_0x2d144d[_0x5091('0x31')]['filter']+'%'};return _0x34b6f9;}})});}_0x17704=_[_0x5091('0x3b')]({},_0x17704,_0x2d144d[_0x5091('0x3d')]);var _0x16ce89={'where':_0x17704[_0x5091('0x37')]};return db[_0x5091('0x3e')][_0x5091('0x1e')](_0x16ce89)[_0x5091('0x26')](function(_0x62bf38){_0x1311dd[_0x5091('0x1e')]=_0x62bf38;if(_0x2d144d[_0x5091('0x31')][_0x5091('0x3f')]){_0x17704[_0x5091('0x40')]=[{'all':!![]}];}return db[_0x5091('0x3e')][_0x5091('0x41')](_0x17704);})[_0x5091('0x26')](function(_0x449410){_0x1311dd[_0x5091('0x42')]=_0x449410;return _0x1311dd;})[_0x5091('0x26')](respondWithFilteredResult(_0x2cee1f,_0x17704))[_0x5091('0x43')](handleError(_0x2cee1f,null));};exports[_0x5091('0x44')]=function(_0x265842,_0x456abe){var _0x33e90e={'raw':!![],'where':{'id':_0x265842[_0x5091('0x45')]['id']}},_0x18f3c4={};_0x18f3c4[_0x5091('0x30')]=_[_0x5091('0x32')](db['VoiceDialReport']['rawAttributes']);_0x18f3c4[_0x5091('0x31')]=_[_0x5091('0x32')](_0x265842[_0x5091('0x31')]);_0x18f3c4[_0x5091('0x38')]=_[_0x5091('0x33')](_0x18f3c4['model'],_0x18f3c4['query']);_0x33e90e[_0x5091('0x34')]=_[_0x5091('0x33')](_0x18f3c4[_0x5091('0x30')],qs[_0x5091('0x46')](_0x265842[_0x5091('0x31')]['fields']));_0x33e90e['attributes']=_0x33e90e[_0x5091('0x34')][_0x5091('0x47')]?_0x33e90e[_0x5091('0x34')]:_0x18f3c4['model'];if(_0x265842[_0x5091('0x31')][_0x5091('0x3f')]){_0x33e90e[_0x5091('0x40')]=[{'all':!![]}];}_0x33e90e=_[_0x5091('0x3b')]({},_0x33e90e,_0x265842[_0x5091('0x3d')]);return db[_0x5091('0x3e')][_0x5091('0x48')](_0x33e90e)['then'](handleEntityNotFound(_0x456abe,null))[_0x5091('0x26')](respondWithResult(_0x456abe,null))[_0x5091('0x43')](handleError(_0x456abe,null));};exports[_0x5091('0x49')]=function(_0x5e9993,_0x24ac7e){return db[_0x5091('0x3e')][_0x5091('0x49')](_0x5e9993[_0x5091('0x4a')],{})[_0x5091('0x26')](respondWithResult(_0x24ac7e,0xc9))[_0x5091('0x43')](handleError(_0x24ac7e,null));};exports['update']=function(_0x4afe10,_0x2b5cc3){if(_0x4afe10['body']['id']){delete _0x4afe10[_0x5091('0x4a')]['id'];}return db[_0x5091('0x3e')][_0x5091('0x48')]({'where':{'id':_0x4afe10[_0x5091('0x45')]['id']}})[_0x5091('0x26')](handleEntityNotFound(_0x2b5cc3,null))[_0x5091('0x26')](saveUpdates(_0x4afe10['body'],null))[_0x5091('0x26')](respondWithResult(_0x2b5cc3,null))['catch'](handleError(_0x2b5cc3,null));};exports['destroy']=function(_0x3840a3,_0x33a728){return db[_0x5091('0x3e')][_0x5091('0x48')]({'where':{'id':_0x3840a3['params']['id']}})[_0x5091('0x26')](handleEntityNotFound(_0x33a728,null))['then'](removeEntity(_0x33a728,null))['catch'](handleError(_0x33a728,null));};exports['describe']=function(_0x38f832,_0x306bdd){return db[_0x5091('0x3e')][_0x5091('0x4b')]()['then'](respondWithResult(_0x306bdd,null))[_0x5091('0x43')](handleError(_0x306bdd,null));};
\ No newline at end of file
index bee5ecd..f953f65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad9b=['request-promise','path','./voiceDialReport.attributes','VoiceDialReport','report_dial','uniqueid','lodash','../../config/logger','api','moment','bluebird'];(function(_0x150d45,_0x911daf){var _0x4b7fee=function(_0x444ce8){while(--_0x444ce8){_0x150d45['push'](_0x150d45['shift']());}};_0x4b7fee(++_0x911daf);}(_0xad9b,0x10e));var _0xbad9=function(_0x157685,_0x4988d5){_0x157685=_0x157685-0x0;var _0x5d1042=_0xad9b[_0x157685];return _0x5d1042;};'use strict';var _=require(_0xbad9('0x0'));var util=require('util');var logger=require(_0xbad9('0x1'))(_0xbad9('0x2'));var moment=require(_0xbad9('0x3'));var BPromise=require(_0xbad9('0x4'));var rp=require(_0xbad9('0x5'));var fs=require('fs');var path=require(_0xbad9('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xbad9('0x7'));module['exports']=function(_0xbca672,_0x4a77f1){return _0xbca672['define'](_0xbad9('0x8'),attributes,{'tableName':_0xbad9('0x9'),'paranoid':![],'indexes':[{'fields':[_0xbad9('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x42ff=['lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./voiceDialReport.attributes','exports','define','VoiceDialReport','report_dial','uniqueid'];(function(_0x35cb26,_0x35ada7){var _0x48ddb0=function(_0x3f9a7a){while(--_0x3f9a7a){_0x35cb26['push'](_0x35cb26['shift']());}};_0x48ddb0(++_0x35ada7);}(_0x42ff,0xa8));var _0xf42f=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x42ff[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0xf42f('0x0'));var util=require(_0xf42f('0x1'));var logger=require(_0xf42f('0x2'))(_0xf42f('0x3'));var moment=require(_0xf42f('0x4'));var BPromise=require(_0xf42f('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf42f('0x6'));var rimraf=require(_0xf42f('0x7'));var config=require('../../config/environment');var attributes=require(_0xf42f('0x8'));module[_0xf42f('0x9')]=function(_0x2d2c0e,_0x2e3b60){return _0x2d2c0e[_0xf42f('0xa')](_0xf42f('0xb'),attributes,{'tableName':_0xf42f('0xc'),'paranoid':![],'indexes':[{'fields':[_0xf42f('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index bf91e89..721cb61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa413=['message','info','result','catch','VoiceDialReport','create','body','options','raw','CreateVoiceDialReport','stringify','UpdateVoiceDialReport','update','attributes','limit','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','error'];(function(_0x2a8f94,_0x2ed778){var _0x5316ea=function(_0x456bc1){while(--_0x456bc1){_0x2a8f94['push'](_0x2a8f94['shift']());}};_0x5316ea(++_0x2ed778);}(_0xa413,0x17a));var _0x3a41=function(_0x1b1e81,_0x12a554){_0x1b1e81=_0x1b1e81-0x0;var _0x14f932=_0xa413[_0x1b1e81];return _0x14f932;};'use strict';var _=require(_0x3a41('0x0'));var util=require('util');var moment=require(_0x3a41('0x1'));var BPromise=require(_0x3a41('0x2'));var rs=require(_0x3a41('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3a41('0x4'))['db'];var utils=require(_0x3a41('0x5'));var logger=require(_0x3a41('0x6'))(_0x3a41('0x7'));var config=require(_0x3a41('0x8'));var jayson=require(_0x3a41('0x9'));var client=jayson[_0x3a41('0xa')][_0x3a41('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2b9c86,_0x251c49,_0x59cfa5){return new BPromise(function(_0x54f4b5,_0x1279fb){return client['request'](_0x2b9c86,_0x59cfa5)[_0x3a41('0xc')](function(_0x2f7968){logger['info'](_0x3a41('0xd'),_0x251c49,_0x3a41('0xe'));logger[_0x3a41('0xf')](_0x3a41('0x10'),_0x251c49,_0x3a41('0xe'),JSON['stringify'](_0x2f7968));if(_0x2f7968[_0x3a41('0x11')]){if(_0x2f7968[_0x3a41('0x11')]['code']===0x1f4){logger[_0x3a41('0x11')](_0x3a41('0xd'),_0x251c49,_0x2f7968['error'][_0x3a41('0x12')]);return _0x1279fb(_0x2f7968['error'][_0x3a41('0x12')]);}logger[_0x3a41('0x11')](_0x3a41('0xd'),_0x251c49,_0x2f7968[_0x3a41('0x11')][_0x3a41('0x12')]);return _0x54f4b5(_0x2f7968[_0x3a41('0x11')]['message']);}else{logger[_0x3a41('0x13')](_0x3a41('0xd'),_0x251c49,_0x3a41('0xe'));_0x54f4b5(_0x2f7968[_0x3a41('0x14')][_0x3a41('0x12')]);}})[_0x3a41('0x15')](function(_0x1bfbdd){logger['error'](_0x3a41('0xd'),_0x251c49,_0x1bfbdd);_0x1279fb(_0x1bfbdd);});});}exports['CreateVoiceDialReport']=function(_0x4323b1){var _0x4e9134=this;return new Promise(function(_0x1811d4,_0x343ca6){return db[_0x3a41('0x16')][_0x3a41('0x17')](_0x4323b1[_0x3a41('0x18')],{'raw':_0x4323b1[_0x3a41('0x19')]?_0x4323b1[_0x3a41('0x19')][_0x3a41('0x1a')]===undefined?!![]:![]:!![]})[_0x3a41('0xc')](function(_0x54b495){logger[_0x3a41('0x13')](_0x3a41('0x1b'),_0x4323b1);logger[_0x3a41('0xf')](_0x3a41('0x1b'),_0x4323b1,JSON[_0x3a41('0x1c')](_0x54b495));_0x1811d4(_0x54b495);})[_0x3a41('0x15')](function(_0x59d235){logger[_0x3a41('0x11')](_0x3a41('0x1b'),_0x59d235[_0x3a41('0x12')],_0x4323b1);_0x343ca6(_0x4e9134[_0x3a41('0x11')](0x1f4,_0x59d235['message']));});});};exports[_0x3a41('0x1d')]=function(_0x4d0f1d){var _0x22ef07=this;return new Promise(function(_0x155aba,_0x1efcee){return db['VoiceDialReport'][_0x3a41('0x1e')](_0x4d0f1d[_0x3a41('0x18')],{'raw':_0x4d0f1d[_0x3a41('0x19')]?_0x4d0f1d[_0x3a41('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4d0f1d[_0x3a41('0x19')]?_0x4d0f1d['options']['where']||null:null,'attributes':_0x4d0f1d[_0x3a41('0x19')]?_0x4d0f1d[_0x3a41('0x19')][_0x3a41('0x1f')]||null:null,'limit':_0x4d0f1d[_0x3a41('0x19')]?_0x4d0f1d[_0x3a41('0x19')][_0x3a41('0x20')]||null:null})['then'](function(_0x1fb57d){logger['info'](_0x3a41('0x1d'),_0x4d0f1d);logger['debug']('UpdateVoiceDialReport',_0x4d0f1d,JSON[_0x3a41('0x1c')](_0x1fb57d));_0x155aba(_0x1fb57d);})['catch'](function(_0x60a888){logger[_0x3a41('0x11')](_0x3a41('0x1d'),_0x60a888[_0x3a41('0x12')],_0x4d0f1d);_0x1efcee(_0x22ef07[_0x3a41('0x11')](0x1f4,_0x60a888['message']));});});};
\ No newline at end of file
+var _0xd829=['request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateVoiceDialReport','create','body','options','raw','UpdateVoiceDialReport','VoiceDialReport','update','where','attributes','limit','catch','moment','randomstring','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','VoiceDialReport,\x20%s,\x20%s'];(function(_0x29a51f,_0x43430d){var _0x17a6ab=function(_0x526836){while(--_0x526836){_0x29a51f['push'](_0x29a51f['shift']());}};_0x17a6ab(++_0x43430d);}(_0xd829,0x1d6));var _0x9d82=function(_0xff998a,_0x5aece0){_0xff998a=_0xff998a-0x0;var _0x2af66a=_0xd829[_0xff998a];return _0x2af66a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x9d82('0x0'));var BPromise=require('bluebird');var rs=require(_0x9d82('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x9d82('0x2'))('rpc');var config=require(_0x9d82('0x3'));var jayson=require(_0x9d82('0x4'));var client=jayson[_0x9d82('0x5')][_0x9d82('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x37e350,_0xc0519e,_0xf29537){return new BPromise(function(_0xe9a590,_0x456fad){return client['request'](_0x37e350,_0xf29537)[_0x9d82('0x7')](function(_0x2b4379){logger[_0x9d82('0x8')](_0x9d82('0x9'),_0xc0519e,_0x9d82('0xa'));logger[_0x9d82('0xb')](_0x9d82('0xc'),_0xc0519e,_0x9d82('0xa'),JSON[_0x9d82('0xd')](_0x2b4379));if(_0x2b4379[_0x9d82('0xe')]){if(_0x2b4379[_0x9d82('0xe')][_0x9d82('0xf')]===0x1f4){logger['error'](_0x9d82('0x9'),_0xc0519e,_0x2b4379['error'][_0x9d82('0x10')]);return _0x456fad(_0x2b4379[_0x9d82('0xe')][_0x9d82('0x10')]);}logger[_0x9d82('0xe')](_0x9d82('0x9'),_0xc0519e,_0x2b4379['error'][_0x9d82('0x10')]);return _0xe9a590(_0x2b4379[_0x9d82('0xe')][_0x9d82('0x10')]);}else{logger[_0x9d82('0x8')]('VoiceDialReport,\x20%s,\x20%s',_0xc0519e,_0x9d82('0xa'));_0xe9a590(_0x2b4379[_0x9d82('0x11')]['message']);}})['catch'](function(_0x3a0e7e){logger['error'](_0x9d82('0x9'),_0xc0519e,_0x3a0e7e);_0x456fad(_0x3a0e7e);});});}exports[_0x9d82('0x12')]=function(_0x3a28a5){var _0x1f6aec=this;return new Promise(function(_0x2ae361,_0x569a11){return db['VoiceDialReport'][_0x9d82('0x13')](_0x3a28a5[_0x9d82('0x14')],{'raw':_0x3a28a5[_0x9d82('0x15')]?_0x3a28a5[_0x9d82('0x15')][_0x9d82('0x16')]===undefined?!![]:![]:!![]})[_0x9d82('0x7')](function(_0x22b7e4){logger[_0x9d82('0x8')]('CreateVoiceDialReport',_0x3a28a5);logger[_0x9d82('0xb')](_0x9d82('0x12'),_0x3a28a5,JSON[_0x9d82('0xd')](_0x22b7e4));_0x2ae361(_0x22b7e4);})['catch'](function(_0x3d0a4f){logger['error'](_0x9d82('0x12'),_0x3d0a4f[_0x9d82('0x10')],_0x3a28a5);_0x569a11(_0x1f6aec[_0x9d82('0xe')](0x1f4,_0x3d0a4f[_0x9d82('0x10')]));});});};exports[_0x9d82('0x17')]=function(_0x1ba2cd){var _0x1ad502=this;return new Promise(function(_0x340985,_0x43559e){return db[_0x9d82('0x18')][_0x9d82('0x19')](_0x1ba2cd[_0x9d82('0x14')],{'raw':_0x1ba2cd[_0x9d82('0x15')]?_0x1ba2cd[_0x9d82('0x15')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1ba2cd['options']?_0x1ba2cd[_0x9d82('0x15')][_0x9d82('0x1a')]||null:null,'attributes':_0x1ba2cd[_0x9d82('0x15')]?_0x1ba2cd[_0x9d82('0x15')][_0x9d82('0x1b')]||null:null,'limit':_0x1ba2cd[_0x9d82('0x15')]?_0x1ba2cd[_0x9d82('0x15')][_0x9d82('0x1c')]||null:null})['then'](function(_0x322071){logger[_0x9d82('0x8')]('UpdateVoiceDialReport',_0x1ba2cd);logger[_0x9d82('0xb')]('UpdateVoiceDialReport',_0x1ba2cd,JSON[_0x9d82('0xd')](_0x322071));_0x340985(_0x322071);})[_0x9d82('0x1d')](function(_0x5c2d33){logger[_0x9d82('0xe')]('UpdateVoiceDialReport',_0x5c2d33['message'],_0x1ba2cd);_0x43559e(_0x1ad502['error'](0x1f4,_0x5c2d33[_0x9d82('0x10')]));});});};
\ No newline at end of file
index 17b5dd9..6e317e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19c1=['update','delete','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceExtension.controller','get','index','/:id','isAuthenticated','show','post','addApplications','put'];(function(_0x1b4840,_0x3497e0){var _0x28b5b=function(_0x3c914c){while(--_0x3c914c){_0x1b4840['push'](_0x1b4840['shift']());}};_0x28b5b(++_0x3497e0);}(_0x19c1,0x1bc));var _0x119c=function(_0x4a8f2e,_0x1b14c2){_0x4a8f2e=_0x4a8f2e-0x0;var _0x4b1990=_0x19c1[_0x4a8f2e];return _0x4b1990;};'use strict';var multer=require(_0x119c('0x0'));var util=require(_0x119c('0x1'));var path=require(_0x119c('0x2'));var timeout=require(_0x119c('0x3'));var express=require(_0x119c('0x4'));var router=express['Router']();var fs_extra=require(_0x119c('0x5'));var auth=require(_0x119c('0x6'));var interaction=require(_0x119c('0x7'));var config=require(_0x119c('0x8'));var controller=require(_0x119c('0x9'));router[_0x119c('0xa')]('/',auth['isAuthenticated'](),controller[_0x119c('0xb')]);router['get'](_0x119c('0xc'),auth[_0x119c('0xd')](),controller[_0x119c('0xe')]);router[_0x119c('0xf')]('/',auth[_0x119c('0xd')](),controller['create']);router[_0x119c('0xf')]('/:id/applications',auth['isAuthenticated'](),controller[_0x119c('0x10')]);router[_0x119c('0x11')](_0x119c('0xc'),auth[_0x119c('0xd')](),controller[_0x119c('0x12')]);router[_0x119c('0x13')](_0x119c('0xc'),auth[_0x119c('0xd')](),controller[_0x119c('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x3de8=['../../components/auth/service','../../components/interaction/service','./voiceExtension.controller','get','isAuthenticated','/:id','post','create','/:id/applications','addApplications','put','destroy','exports','multer','connect-timeout','express','Router','fs-extra'];(function(_0x4276f8,_0xd66a03){var _0x5383ca=function(_0x525c7a){while(--_0x525c7a){_0x4276f8['push'](_0x4276f8['shift']());}};_0x5383ca(++_0xd66a03);}(_0x3de8,0x109));var _0x83de=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3de8[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x83de('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x83de('0x1'));var express=require(_0x83de('0x2'));var router=express[_0x83de('0x3')]();var fs_extra=require(_0x83de('0x4'));var auth=require(_0x83de('0x5'));var interaction=require(_0x83de('0x6'));var config=require('../../config/environment');var controller=require(_0x83de('0x7'));router[_0x83de('0x8')]('/',auth[_0x83de('0x9')](),controller['index']);router['get'](_0x83de('0xa'),auth[_0x83de('0x9')](),controller['show']);router[_0x83de('0xb')]('/',auth[_0x83de('0x9')](),controller[_0x83de('0xc')]);router[_0x83de('0xb')](_0x83de('0xd'),auth[_0x83de('0x9')](),controller[_0x83de('0xe')]);router[_0x83de('0xf')](_0x83de('0xa'),auth[_0x83de('0x9')](),controller['update']);router['delete'](_0x83de('0xa'),auth['isAuthenticated'](),controller[_0x83de('0x10')]);module[_0x83de('0x11')]=router;
\ No newline at end of file
index ec39173..96896af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee10=['getDataValue','exports','STRING','compositeIndex','NoOp','ENUM','inbound','outbound','internal','inbound-fax','outbound-fax','system','any','*,*,*,*','INTEGER','BOOLEAN','VIRTUAL'];(function(_0x21a0cb,_0x5a4cc5){var _0x2e9bb4=function(_0x3b47cf){while(--_0x3b47cf){_0x21a0cb['push'](_0x21a0cb['shift']());}};_0x2e9bb4(++_0x5a4cc5);}(_0xee10,0x1bb));var _0x0ee1=function(_0x11d97f,_0x3a1caa){_0x11d97f=_0x11d97f-0x0;var _0x70c245=_0xee10[_0x11d97f];return _0x70c245;};'use strict';var Sequelize=require('sequelize');module[_0x0ee1('0x0')]={'context':{'type':Sequelize[_0x0ee1('0x1')],'allowNull':![],'unique':_0x0ee1('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x0ee1('0x1')],'allowNull':![],'unique':_0x0ee1('0x2')},'priority':{'type':Sequelize[_0x0ee1('0x1')],'allowNull':![],'defaultValue':'1','unique':_0x0ee1('0x2')},'tag':{'type':Sequelize[_0x0ee1('0x1')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x0ee1('0x1')],'allowNull':![],'defaultValue':_0x0ee1('0x3')},'appdata':{'type':Sequelize[_0x0ee1('0x1')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x0ee1('0x4')](_0x0ee1('0x5'),_0x0ee1('0x6'),_0x0ee1('0x7'),_0x0ee1('0x8'),_0x0ee1('0x9'),_0x0ee1('0xa'),_0x0ee1('0xb')),'allowNull':![]},'description':{'type':Sequelize[_0x0ee1('0x1')]},'interval':{'type':Sequelize[_0x0ee1('0x1')],'allowNull':![],'defaultValue':_0x0ee1('0xc')},'IntervalId':{'type':Sequelize[_0x0ee1('0xd')]},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x0ee1('0x1')],'defaultValue':null},'callerID':{'type':Sequelize[_0x0ee1('0x1')],'allowNull':!![]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x0ee1('0xd')]},'recordingFormat':{'type':Sequelize[_0x0ee1('0x1')],'defaultValue':'wav'},'answer':{'type':Sequelize[_0x0ee1('0xe')],'defaultValue':!![]},'name':{'type':Sequelize[_0x0ee1('0xf')],'get':function(_0x224e3c){return this[_0x0ee1('0x10')]('exten');}},'alias':{'type':Sequelize[_0x0ee1('0x1')],'allowNull':!![]}};
\ No newline at end of file
+var _0x9e7c=['wav','VIRTUAL','getDataValue','sequelize','exports','compositeIndex','STRING','NoOp','ENUM','inbound','inbound-fax','outbound-fax','system','any','*,*,*,*','INTEGER','BOOLEAN'];(function(_0x5cc8,_0x1faa02){var _0x450661=function(_0x237b05){while(--_0x237b05){_0x5cc8['push'](_0x5cc8['shift']());}};_0x450661(++_0x1faa02);}(_0x9e7c,0x18a));var _0xc9e7=function(_0x24d4b0,_0x19f3f9){_0x24d4b0=_0x24d4b0-0x0;var _0x56e84e=_0x9e7c[_0x24d4b0];return _0x56e84e;};'use strict';var Sequelize=require(_0xc9e7('0x0'));module[_0xc9e7('0x1')]={'context':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xc9e7('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0xc9e7('0x3')],'allowNull':![],'unique':'compositeIndex'},'priority':{'type':Sequelize[_0xc9e7('0x3')],'allowNull':![],'defaultValue':'1','unique':_0xc9e7('0x2')},'tag':{'type':Sequelize[_0xc9e7('0x3')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xc9e7('0x4')},'appdata':{'type':Sequelize['STRING'](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0xc9e7('0x5')](_0xc9e7('0x6'),'outbound','internal',_0xc9e7('0x7'),_0xc9e7('0x8'),_0xc9e7('0x9'),_0xc9e7('0xa')),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xc9e7('0x3')],'allowNull':![],'defaultValue':_0xc9e7('0xb')},'IntervalId':{'type':Sequelize[_0xc9e7('0xc')]},'isApp':{'type':Sequelize[_0xc9e7('0xd')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0xc9e7('0x3')],'defaultValue':null},'callerID':{'type':Sequelize[_0xc9e7('0x3')],'allowNull':!![]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0xc9e7('0xc')]},'recordingFormat':{'type':Sequelize[_0xc9e7('0x3')],'defaultValue':_0xc9e7('0xe')},'answer':{'type':Sequelize[_0xc9e7('0xd')],'defaultValue':!![]},'name':{'type':Sequelize[_0xc9e7('0xf')],'get':function(_0x2f933e){return this[_0xc9e7('0x10')]('exten');}},'alias':{'type':Sequelize[_0xc9e7('0x3')],'allowNull':!![]}};
\ No newline at end of file
index 4f5c470..dcbdea2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe167=['findAndCountAll','cast(priority\x20as\x20unsigned)','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','redis','defaults','register','sendStatus','status','end','json','offset','undefined','limit','count','then','get','inbound','OutboundRoutes','outbound','InternalRoutes','internal','filter','map','value','type','find','name','UserProfileResource','error','stack','send','VoiceExtension','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','destroy','create','body','exten','concat','role','InboundRoutes','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','recordingFormat','cutdigits','mandatoryDisposition','alias','addApplications','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','VoiceExtensionId','createRouting','bulkCreate'];(function(_0x1b7368,_0x3286ed){var _0x25d54c=function(_0x2366da){while(--_0x2366da){_0x1b7368['push'](_0x1b7368['shift']());}};_0x25d54c(++_0x3286ed);}(_0xe167,0xb2));var _0x7e16=function(_0x1ebbc8,_0x5ee909){_0x1ebbc8=_0x1ebbc8-0x0;var _0x258aac=_0xe167[_0x1ebbc8];return _0x258aac;};'use strict';var _=require(_0x7e16('0x0'));var Redis=require(_0x7e16('0x1'));var qs=require(_0x7e16('0x2'));var logger=require(_0x7e16('0x3'))(_0x7e16('0x4'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config[_0x7e16('0x5')]=_[_0x7e16('0x6')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7e16('0x5')]));require('./voiceExtension.socket')[_0x7e16('0x7')](socket);function respondWithStatusCode(_0x477902,_0xc50a21){_0xc50a21=_0xc50a21||0xcc;return function(_0x4df91f){if(_0x4df91f){return _0x477902[_0x7e16('0x8')](_0xc50a21);}return _0x477902[_0x7e16('0x9')](_0xc50a21)[_0x7e16('0xa')]();};}function respondWithResult(_0xe5ff63,_0x34f0c6){_0x34f0c6=_0x34f0c6||0xc8;return function(_0x29b7ef){if(_0x29b7ef){return _0xe5ff63[_0x7e16('0x9')](_0x34f0c6)[_0x7e16('0xb')](_0x29b7ef);}};}function respondWithFilteredResult(_0x56f7b6,_0x3e51ed){return function(_0x4d4979){if(_0x4d4979){var _0x175eba=typeof _0x3e51ed[_0x7e16('0xc')]===_0x7e16('0xd')&&typeof _0x3e51ed[_0x7e16('0xe')]===_0x7e16('0xd');var _0x581cd0=_0x4d4979[_0x7e16('0xf')];var _0x345c74=_0x175eba?0x0:_0x3e51ed[_0x7e16('0xc')];var _0x6322fb=_0x175eba?_0x4d4979[_0x7e16('0xf')]:_0x3e51ed[_0x7e16('0xc')]+_0x3e51ed[_0x7e16('0xe')];var _0x6b6f1c;if(_0x6322fb>=_0x581cd0){_0x6322fb=_0x581cd0;_0x6b6f1c=0xc8;}else{_0x6b6f1c=0xce;}_0x56f7b6[_0x7e16('0x9')](_0x6b6f1c);return _0x56f7b6['set']('Content-Range',_0x345c74+'-'+_0x6322fb+'/'+_0x581cd0)[_0x7e16('0xb')](_0x4d4979);}return null;};}function removeEntity(_0x37b815){return function(_0x47612e){if(_0x47612e){return _0x47612e['destroy']()[_0x7e16('0x10')](function(){var _0x3f58bb=_0x47612e[_0x7e16('0x11')]({'plain':!![]});var _0x3e3d11=[{'name':'InboundRoutes','value':_0x7e16('0x12'),'ignore':![]},{'name':_0x7e16('0x13'),'value':_0x7e16('0x14'),'ignore':![]},{'name':_0x7e16('0x15'),'value':_0x7e16('0x16'),'ignore':![]}];var _0x92ddf4=_(_0x3e3d11)[_0x7e16('0x17')]('ignore')[_0x7e16('0x18')](_0x7e16('0x19'))['value']();if(_['includes'](_0x92ddf4,_0x3f58bb[_0x7e16('0x1a')])){return;}var _0x1f95d5=_[_0x7e16('0x1b')](_0x3e3d11,[_0x7e16('0x19'),_0x3f58bb[_0x7e16('0x1a')]])[_0x7e16('0x1c')];return db[_0x7e16('0x1d')]['destroy']({'where':{'type':_0x1f95d5,'resourceId':_0x3f58bb['id']}})[_0x7e16('0x10')](function(){return _0x47612e;});})[_0x7e16('0x10')](function(){_0x37b815[_0x7e16('0x9')](0xcc)[_0x7e16('0xa')]();});}};}function handleEntityNotFound(_0x52a569){return function(_0x573334){if(!_0x573334){_0x52a569[_0x7e16('0x8')](0x194);}return _0x573334;};}function handleError(_0x5f10d2,_0x495d96){_0x495d96=_0x495d96||0x1f4;return function(_0x5dc0e8){logger[_0x7e16('0x1e')](_0x5dc0e8[_0x7e16('0x1f')]);if(_0x5dc0e8[_0x7e16('0x1c')]){delete _0x5dc0e8[_0x7e16('0x1c')];}_0x5f10d2[_0x7e16('0x9')](_0x495d96)[_0x7e16('0x20')](_0x5dc0e8);};}exports['index']=function(_0x301b66,_0x1d7ffb){var _0x4527b6={},_0x44d4f2={},_0x5ef41f={'count':0x0,'rows':[]};var _0xf78b4d=_['map'](db[_0x7e16('0x21')][_0x7e16('0x22')],function(_0x4e531b){return{'name':_0x4e531b[_0x7e16('0x23')],'type':_0x4e531b[_0x7e16('0x1a')][_0x7e16('0x24')]};});_0x44d4f2[_0x7e16('0x25')]=_[_0x7e16('0x18')](_0xf78b4d,'name');_0x44d4f2[_0x7e16('0x26')]=_[_0x7e16('0x27')](_0x301b66['query']);_0x44d4f2[_0x7e16('0x28')]=_[_0x7e16('0x29')](_0x44d4f2[_0x7e16('0x25')],_0x44d4f2[_0x7e16('0x26')]);_0x4527b6[_0x7e16('0x2a')]=_[_0x7e16('0x29')](_0x44d4f2[_0x7e16('0x25')],qs['fields'](_0x301b66[_0x7e16('0x26')][_0x7e16('0x2b')]));_0x4527b6[_0x7e16('0x2a')]=_0x4527b6['attributes'][_0x7e16('0x2c')]?_0x4527b6[_0x7e16('0x2a')]:_0x44d4f2[_0x7e16('0x25')];if(!_0x301b66[_0x7e16('0x26')][_0x7e16('0x2d')](_0x7e16('0x2e'))){_0x4527b6[_0x7e16('0xe')]=qs[_0x7e16('0xe')](_0x301b66['query'][_0x7e16('0xe')]);_0x4527b6[_0x7e16('0xc')]=qs[_0x7e16('0xc')](_0x301b66['query']['offset']);}_0x4527b6[_0x7e16('0x2f')]=qs[_0x7e16('0x30')](_0x301b66['query'][_0x7e16('0x30')]);_0x4527b6[_0x7e16('0x31')]=qs[_0x7e16('0x28')](_[_0x7e16('0x32')](_0x301b66[_0x7e16('0x26')],_0x44d4f2[_0x7e16('0x28')]),_0xf78b4d);if(_0x301b66[_0x7e16('0x26')]['filter']){_0x4527b6[_0x7e16('0x31')]=_[_0x7e16('0x33')](_0x4527b6['where'],{'$or':_['map'](_0xf78b4d,function(_0x46f32f){if(_0x46f32f['type']!==_0x7e16('0x34')){var _0x4c0fb5={};_0x4c0fb5[_0x46f32f['name']]={'$like':'%'+_0x301b66[_0x7e16('0x26')][_0x7e16('0x17')]+'%'};return _0x4c0fb5;}})});}_0x4527b6=_[_0x7e16('0x33')]({},_0x4527b6,_0x301b66[_0x7e16('0x35')]);var _0x42d5a2={'where':_0x4527b6[_0x7e16('0x31')]};return db[_0x7e16('0x21')][_0x7e16('0xf')](_0x42d5a2)[_0x7e16('0x10')](function(_0x96ed27){_0x5ef41f[_0x7e16('0xf')]=_0x96ed27;if(_0x301b66['query'][_0x7e16('0x36')]){_0x4527b6[_0x7e16('0x37')]=[{'all':!![]}];}return db[_0x7e16('0x21')][_0x7e16('0x38')](_0x4527b6);})['then'](function(_0x20f513){_0x5ef41f[_0x7e16('0x39')]=_0x20f513;return _0x5ef41f;})[_0x7e16('0x10')](respondWithFilteredResult(_0x1d7ffb,_0x4527b6))[_0x7e16('0x3a')](handleError(_0x1d7ffb,null));};exports[_0x7e16('0x3b')]=function(_0x430ce3,_0xf52164){var _0x5d5d23={'raw':![],'where':{'id':_0x430ce3[_0x7e16('0x3c')]['id']}},_0x5b5dd3={};_0x5b5dd3[_0x7e16('0x25')]=_['keys'](db[_0x7e16('0x21')][_0x7e16('0x22')]);_0x5b5dd3[_0x7e16('0x26')]=_[_0x7e16('0x27')](_0x430ce3['query']);_0x5b5dd3[_0x7e16('0x28')]=_[_0x7e16('0x29')](_0x5b5dd3[_0x7e16('0x25')],_0x5b5dd3[_0x7e16('0x26')]);_0x5d5d23[_0x7e16('0x2a')]=_[_0x7e16('0x29')](_0x5b5dd3[_0x7e16('0x25')],qs[_0x7e16('0x2b')](_0x430ce3[_0x7e16('0x26')][_0x7e16('0x2b')]));_0x5d5d23[_0x7e16('0x2a')]=_0x5d5d23['attributes'][_0x7e16('0x2c')]?_0x5d5d23[_0x7e16('0x2a')]:_0x5b5dd3['model'];if(_0x430ce3['query'][_0x7e16('0x36')]){_0x5d5d23[_0x7e16('0x37')]=[{'all':!![]}];}_0x5d5d23=_[_0x7e16('0x33')]({},_0x5d5d23,_0x430ce3[_0x7e16('0x35')]);return db[_0x7e16('0x21')][_0x7e16('0x1b')](_0x5d5d23)[_0x7e16('0x10')](handleEntityNotFound(_0xf52164,null))[_0x7e16('0x10')](respondWithResult(_0xf52164,null))[_0x7e16('0x3a')](handleError(_0xf52164,null));};exports[_0x7e16('0x3d')]=function(_0xbc0e50,_0x150ab1){return db['VoiceExtension'][_0x7e16('0x1b')]({'where':{'id':_0xbc0e50[_0x7e16('0x3c')]['id']}})[_0x7e16('0x10')](handleEntityNotFound(_0x150ab1,null))[_0x7e16('0x10')](removeEntity(_0x150ab1,null))['catch'](handleError(_0x150ab1,null));};exports[_0x7e16('0x3e')]=function(_0x56dd05,_0x4920b5){if(_0x56dd05[_0x7e16('0x3f')][_0x7e16('0x1a')]===_0x7e16('0x14')&&!_['startsWith'](_0x56dd05[_0x7e16('0x3f')][_0x7e16('0x40')],'_')){_0x56dd05['body']['exten']='_'[_0x7e16('0x41')](_0x56dd05['body'][_0x7e16('0x40')]);}return db[_0x7e16('0x21')][_0x7e16('0x3e')](_0x56dd05[_0x7e16('0x3f')],{'raw':![]})[_0x7e16('0x10')](function(_0x1c69c9){var _0xcdfb6f=_0x56dd05['user'][_0x7e16('0x11')]({'plain':!![]});if(!_0xcdfb6f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xcdfb6f[_0x7e16('0x42')]==='user'){var _0x814d49=_0x1c69c9['get']({'plain':!![]});var _0x42fee8=[{'name':_0x7e16('0x43'),'value':_0x7e16('0x12')},{'name':_0x7e16('0x13'),'value':'outbound'},{'name':_0x7e16('0x15'),'value':_0x7e16('0x16')}];var _0x4ae7b8=_['find'](_0x42fee8,[_0x7e16('0x19'),_0x814d49['type']])[_0x7e16('0x1c')];return db[_0x7e16('0x44')]['find']({'where':{'name':_0x4ae7b8,'userProfileId':_0xcdfb6f[_0x7e16('0x45')]},'raw':!![]})[_0x7e16('0x10')](function(_0x503e6e){if(_0x503e6e&&_0x503e6e[_0x7e16('0x46')]===0x0){return db[_0x7e16('0x1d')][_0x7e16('0x3e')]({'name':_0x814d49[_0x7e16('0x1c')],'resourceId':_0x814d49['id'],'type':_0x503e6e[_0x7e16('0x1c')],'sectionId':_0x503e6e['id']},{})[_0x7e16('0x10')](function(){return _0x1c69c9;});}else{return _0x1c69c9;}})[_0x7e16('0x3a')](function(_0x5a0d64){logger[_0x7e16('0x1e')](_0x7e16('0x47'),_0x5a0d64);throw _0x5a0d64;});}return _0x1c69c9;})[_0x7e16('0x10')](respondWithResult(_0x4920b5,0xc9))[_0x7e16('0x3a')](handleError(_0x4920b5,null));};exports[_0x7e16('0x48')]=function(_0x355758,_0x42edd6){if(_0x355758['body']['id']){delete _0x355758['body']['id'];}return db['VoiceExtension'][_0x7e16('0x1b')]({'where':{'id':_0x355758[_0x7e16('0x3c')]['id']}})[_0x7e16('0x10')](handleEntityNotFound(_0x42edd6,null))[_0x7e16('0x10')](function(_0xe855f){if(_0xe855f){return db[_0x7e16('0x21')][_0x7e16('0x48')](_[_0x7e16('0x32')](_0x355758[_0x7e16('0x3f')],[_0x7e16('0x40'),'context','description',_0x7e16('0x49'),_0x7e16('0x4a'),_0x7e16('0x4b'),_0x7e16('0x4c')]),{'where':{'context':_0xe855f['context'],'exten':_0xe855f['exten']},'individualHooks':!![]})['then'](function(_0x48ff9a){return _0x48ff9a;});}return null;})[_0x7e16('0x10')](respondWithStatusCode(_0x42edd6,null))[_0x7e16('0x3a')](handleError(_0x42edd6,null));};exports[_0x7e16('0x4d')]=function(_0x4e55ca,_0x229e1a){var _0x534375=_0x4e55ca[_0x7e16('0x3c')]['id'];var _0x3ff32a=_0x4e55ca['body'];var _0xc73736=0xc8;var _0x3b3f72=null;return db['sequelize'][_0x7e16('0x4e')]({'isolationLevel':db['sequelize'][_0x7e16('0x4f')][_0x7e16('0x50')][_0x7e16('0x51')]},function(_0x420087){return db[_0x7e16('0x21')][_0x7e16('0x52')]({'where':{'id':_0x534375},'transaction':_0x420087})[_0x7e16('0x10')](function(_0x37244b){if(_0x37244b){return db['VoiceExtension'][_0x7e16('0x3d')]({'where':{'VoiceExtensionId':_0x534375},'transaction':_0x420087})[_0x7e16('0x10')](function(){var _0xb700ef=_[_0x7e16('0x18')](_0x3ff32a,function(_0x44cfc2){_0x44cfc2[_0x7e16('0x53')]=_0x534375;_0x44cfc2['isApp']=!![];return _0x44cfc2;});return _0x37244b[_0x7e16('0x54')](_0xb700ef);})[_0x7e16('0x10')](function(_0x2c2c1b){return db[_0x7e16('0x21')][_0x7e16('0x55')](_0x2c2c1b,{'transaction':_0x420087});});}else{_0xc73736=0x194;_0x3b3f72=[];}});})['then'](function(){if(_0xc73736!==0x194){return db['VoiceExtension'][_0x7e16('0x56')]({'where':{'isApp':!![],'VoiceExtensionId':_0x534375},'order':_0x7e16('0x57')})[_0x7e16('0x10')](function(_0x565955){_0x3b3f72=_0x565955;});}})['catch'](function(_0xdb95b){_0xc73736=0x1f4;logger[_0x7e16('0x1e')](_0xdb95b[_0x7e16('0x1f')]);if(_0xdb95b[_0x7e16('0x1c')]){delete _0xdb95b[_0x7e16('0x1c')];}_0x3b3f72=_0xdb95b;})['finally'](function(){if(_0x3b3f72===null){_0x229e1a['sendStatus'](_0xc73736);}else{if(_0xc73736===0x1f4){_0x229e1a['status'](_0xc73736)[_0x7e16('0x20')](_0x3b3f72);}else{_0x229e1a['status'](_0xc73736)[_0x7e16('0xb')](_0x3b3f72);}}});};
\ No newline at end of file
+var _0x41b1=['filters','filter','merge','options','VoiceExtension','include','findAll','rows','catch','show','params','keys','create','body','outbound','startsWith','exten','concat','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','pick','description','recordingFormat','mandatoryDisposition','alias','context','addApplications','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','VoiceExtensionId','createRouting','bulkCreate','ioredis','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','localhost','socket.io-emitter','register','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','destroy','then','get','InboundRoutes','inbound','OutboundRoutes','InternalRoutes','internal','ignore','map','value','includes','type','find','name','UserProfileResource','error','stack','send','rawAttributes','key','model','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where'];(function(_0x46d0c9,_0x526bfa){var _0x174506=function(_0x654bc6){while(--_0x654bc6){_0x46d0c9['push'](_0x46d0c9['shift']());}};_0x174506(++_0x526bfa);}(_0x41b1,0x7d));var _0x141b=function(_0x1de2bd,_0x953fb){_0x1de2bd=_0x1de2bd-0x0;var _0x595960=_0x41b1[_0x1de2bd];return _0x595960;};'use strict';var _=require('lodash');var Redis=require(_0x141b('0x0'));var qs=require(_0x141b('0x1'));var logger=require(_0x141b('0x2'))(_0x141b('0x3'));var config=require('../../config/environment');var db=require(_0x141b('0x4'))['db'];config[_0x141b('0x5')]=_['defaults'](config[_0x141b('0x5')],{'host':_0x141b('0x6'),'port':0x18eb});var socket=require(_0x141b('0x7'))(new Redis(config[_0x141b('0x5')]));require('./voiceExtension.socket')[_0x141b('0x8')](socket);function respondWithStatusCode(_0x319755,_0x4c5b63){_0x4c5b63=_0x4c5b63||0xcc;return function(_0x1ce39c){if(_0x1ce39c){return _0x319755[_0x141b('0x9')](_0x4c5b63);}return _0x319755['status'](_0x4c5b63)[_0x141b('0xa')]();};}function respondWithResult(_0x25f84b,_0x5825d1){_0x5825d1=_0x5825d1||0xc8;return function(_0xee84d0){if(_0xee84d0){return _0x25f84b[_0x141b('0xb')](_0x5825d1)[_0x141b('0xc')](_0xee84d0);}};}function respondWithFilteredResult(_0x1c8e80,_0x29270f){return function(_0x51a24c){if(_0x51a24c){var _0x444328=typeof _0x29270f[_0x141b('0xd')]===_0x141b('0xe')&&typeof _0x29270f[_0x141b('0xf')]===_0x141b('0xe');var _0x14de83=_0x51a24c[_0x141b('0x10')];var _0x474f8d=_0x444328?0x0:_0x29270f[_0x141b('0xd')];var _0x31a475=_0x444328?_0x51a24c['count']:_0x29270f[_0x141b('0xd')]+_0x29270f[_0x141b('0xf')];var _0x229b67;if(_0x31a475>=_0x14de83){_0x31a475=_0x14de83;_0x229b67=0xc8;}else{_0x229b67=0xce;}_0x1c8e80[_0x141b('0xb')](_0x229b67);return _0x1c8e80['set'](_0x141b('0x11'),_0x474f8d+'-'+_0x31a475+'/'+_0x14de83)[_0x141b('0xc')](_0x51a24c);}return null;};}function removeEntity(_0x5b34d8){return function(_0xaa2ae8){if(_0xaa2ae8){return _0xaa2ae8[_0x141b('0x12')]()[_0x141b('0x13')](function(){var _0x34975f=_0xaa2ae8[_0x141b('0x14')]({'plain':!![]});var _0x2d5bdb=[{'name':_0x141b('0x15'),'value':_0x141b('0x16'),'ignore':![]},{'name':_0x141b('0x17'),'value':'outbound','ignore':![]},{'name':_0x141b('0x18'),'value':_0x141b('0x19'),'ignore':![]}];var _0x436163=_(_0x2d5bdb)['filter'](_0x141b('0x1a'))[_0x141b('0x1b')](_0x141b('0x1c'))[_0x141b('0x1c')]();if(_[_0x141b('0x1d')](_0x436163,_0x34975f[_0x141b('0x1e')])){return;}var _0x55b9c2=_[_0x141b('0x1f')](_0x2d5bdb,[_0x141b('0x1c'),_0x34975f[_0x141b('0x1e')]])[_0x141b('0x20')];return db[_0x141b('0x21')][_0x141b('0x12')]({'where':{'type':_0x55b9c2,'resourceId':_0x34975f['id']}})['then'](function(){return _0xaa2ae8;});})[_0x141b('0x13')](function(){_0x5b34d8[_0x141b('0xb')](0xcc)[_0x141b('0xa')]();});}};}function handleEntityNotFound(_0xeafb98){return function(_0x191e04){if(!_0x191e04){_0xeafb98[_0x141b('0x9')](0x194);}return _0x191e04;};}function handleError(_0x1f805d,_0x1aa242){_0x1aa242=_0x1aa242||0x1f4;return function(_0x4e45ee){logger[_0x141b('0x22')](_0x4e45ee[_0x141b('0x23')]);if(_0x4e45ee[_0x141b('0x20')]){delete _0x4e45ee[_0x141b('0x20')];}_0x1f805d[_0x141b('0xb')](_0x1aa242)[_0x141b('0x24')](_0x4e45ee);};}exports['index']=function(_0xe16184,_0xeb6470){var _0x15b95b={},_0x240e9f={},_0x4598d4={'count':0x0,'rows':[]};var _0x489084=_['map'](db['VoiceExtension'][_0x141b('0x25')],function(_0x346305){return{'name':_0x346305['fieldName'],'type':_0x346305[_0x141b('0x1e')][_0x141b('0x26')]};});_0x240e9f[_0x141b('0x27')]=_[_0x141b('0x1b')](_0x489084,_0x141b('0x20'));_0x240e9f[_0x141b('0x28')]=_['keys'](_0xe16184['query']);_0x240e9f['filters']=_[_0x141b('0x29')](_0x240e9f[_0x141b('0x27')],_0x240e9f['query']);_0x15b95b[_0x141b('0x2a')]=_[_0x141b('0x29')](_0x240e9f[_0x141b('0x27')],qs[_0x141b('0x2b')](_0xe16184[_0x141b('0x28')][_0x141b('0x2b')]));_0x15b95b['attributes']=_0x15b95b[_0x141b('0x2a')][_0x141b('0x2c')]?_0x15b95b['attributes']:_0x240e9f[_0x141b('0x27')];if(!_0xe16184[_0x141b('0x28')][_0x141b('0x2d')]('nolimit')){_0x15b95b['limit']=qs[_0x141b('0xf')](_0xe16184['query'][_0x141b('0xf')]);_0x15b95b[_0x141b('0xd')]=qs['offset'](_0xe16184[_0x141b('0x28')][_0x141b('0xd')]);}_0x15b95b[_0x141b('0x2e')]=qs[_0x141b('0x2f')](_0xe16184[_0x141b('0x28')]['sort']);_0x15b95b[_0x141b('0x30')]=qs[_0x141b('0x31')](_['pick'](_0xe16184[_0x141b('0x28')],_0x240e9f[_0x141b('0x31')]),_0x489084);if(_0xe16184[_0x141b('0x28')][_0x141b('0x32')]){_0x15b95b[_0x141b('0x30')]=_[_0x141b('0x33')](_0x15b95b['where'],{'$or':_['map'](_0x489084,function(_0x31c20c){if(_0x31c20c[_0x141b('0x1e')]!=='VIRTUAL'){var _0x511d0b={};_0x511d0b[_0x31c20c[_0x141b('0x20')]]={'$like':'%'+_0xe16184[_0x141b('0x28')][_0x141b('0x32')]+'%'};return _0x511d0b;}})});}_0x15b95b=_[_0x141b('0x33')]({},_0x15b95b,_0xe16184[_0x141b('0x34')]);var _0x464da8={'where':_0x15b95b[_0x141b('0x30')]};return db[_0x141b('0x35')][_0x141b('0x10')](_0x464da8)[_0x141b('0x13')](function(_0x1c94be){_0x4598d4['count']=_0x1c94be;if(_0xe16184[_0x141b('0x28')]['includeAll']){_0x15b95b[_0x141b('0x36')]=[{'all':!![]}];}return db[_0x141b('0x35')][_0x141b('0x37')](_0x15b95b);})[_0x141b('0x13')](function(_0x3fc2d7){_0x4598d4[_0x141b('0x38')]=_0x3fc2d7;return _0x4598d4;})[_0x141b('0x13')](respondWithFilteredResult(_0xeb6470,_0x15b95b))[_0x141b('0x39')](handleError(_0xeb6470,null));};exports[_0x141b('0x3a')]=function(_0xfdc010,_0x247eff){var _0x5c68d0={'raw':![],'where':{'id':_0xfdc010[_0x141b('0x3b')]['id']}},_0x53783a={};_0x53783a[_0x141b('0x27')]=_['keys'](db[_0x141b('0x35')][_0x141b('0x25')]);_0x53783a[_0x141b('0x28')]=_[_0x141b('0x3c')](_0xfdc010[_0x141b('0x28')]);_0x53783a['filters']=_[_0x141b('0x29')](_0x53783a['model'],_0x53783a['query']);_0x5c68d0[_0x141b('0x2a')]=_[_0x141b('0x29')](_0x53783a['model'],qs[_0x141b('0x2b')](_0xfdc010[_0x141b('0x28')][_0x141b('0x2b')]));_0x5c68d0[_0x141b('0x2a')]=_0x5c68d0[_0x141b('0x2a')][_0x141b('0x2c')]?_0x5c68d0[_0x141b('0x2a')]:_0x53783a['model'];if(_0xfdc010['query']['includeAll']){_0x5c68d0[_0x141b('0x36')]=[{'all':!![]}];}_0x5c68d0=_[_0x141b('0x33')]({},_0x5c68d0,_0xfdc010[_0x141b('0x34')]);return db[_0x141b('0x35')][_0x141b('0x1f')](_0x5c68d0)[_0x141b('0x13')](handleEntityNotFound(_0x247eff,null))[_0x141b('0x13')](respondWithResult(_0x247eff,null))[_0x141b('0x39')](handleError(_0x247eff,null));};exports[_0x141b('0x12')]=function(_0x455039,_0x2f1519){return db[_0x141b('0x35')][_0x141b('0x1f')]({'where':{'id':_0x455039['params']['id']}})[_0x141b('0x13')](handleEntityNotFound(_0x2f1519,null))['then'](removeEntity(_0x2f1519,null))[_0x141b('0x39')](handleError(_0x2f1519,null));};exports[_0x141b('0x3d')]=function(_0x758616,_0x1303df){if(_0x758616[_0x141b('0x3e')][_0x141b('0x1e')]===_0x141b('0x3f')&&!_[_0x141b('0x40')](_0x758616[_0x141b('0x3e')][_0x141b('0x41')],'_')){_0x758616[_0x141b('0x3e')][_0x141b('0x41')]='_'[_0x141b('0x42')](_0x758616[_0x141b('0x3e')][_0x141b('0x41')]);}return db[_0x141b('0x35')][_0x141b('0x3d')](_0x758616['body'],{'raw':![]})[_0x141b('0x13')](function(_0x2e20e2){var _0x4bdcf0=_0x758616[_0x141b('0x43')][_0x141b('0x14')]({'plain':!![]});if(!_0x4bdcf0)throw new Error(_0x141b('0x44'));if(_0x4bdcf0[_0x141b('0x45')]===_0x141b('0x43')){var _0x285e91=_0x2e20e2[_0x141b('0x14')]({'plain':!![]});var _0x220025=[{'name':'InboundRoutes','value':_0x141b('0x16')},{'name':_0x141b('0x17'),'value':_0x141b('0x3f')},{'name':'InternalRoutes','value':'internal'}];var _0x3c15c0=_[_0x141b('0x1f')](_0x220025,['value',_0x285e91[_0x141b('0x1e')]])[_0x141b('0x20')];return db['UserProfileSection'][_0x141b('0x1f')]({'where':{'name':_0x3c15c0,'userProfileId':_0x4bdcf0['userProfileId']},'raw':!![]})[_0x141b('0x13')](function(_0x11fad9){if(_0x11fad9&&_0x11fad9[_0x141b('0x46')]===0x0){return db[_0x141b('0x21')][_0x141b('0x3d')]({'name':_0x285e91[_0x141b('0x20')],'resourceId':_0x285e91['id'],'type':_0x11fad9[_0x141b('0x20')],'sectionId':_0x11fad9['id']},{})['then'](function(){return _0x2e20e2;});}else{return _0x2e20e2;}})['catch'](function(_0x3e6c19){logger[_0x141b('0x22')](_0x141b('0x47'),_0x3e6c19);throw _0x3e6c19;});}return _0x2e20e2;})[_0x141b('0x13')](respondWithResult(_0x1303df,0xc9))['catch'](handleError(_0x1303df,null));};exports[_0x141b('0x48')]=function(_0x34e5f9,_0x901a6e){if(_0x34e5f9[_0x141b('0x3e')]['id']){delete _0x34e5f9[_0x141b('0x3e')]['id'];}return db[_0x141b('0x35')]['find']({'where':{'id':_0x34e5f9[_0x141b('0x3b')]['id']}})[_0x141b('0x13')](handleEntityNotFound(_0x901a6e,null))['then'](function(_0x4e7dde){if(_0x4e7dde){return db[_0x141b('0x35')][_0x141b('0x48')](_[_0x141b('0x49')](_0x34e5f9['body'],['exten','context',_0x141b('0x4a'),_0x141b('0x4b'),'cutdigits',_0x141b('0x4c'),_0x141b('0x4d')]),{'where':{'context':_0x4e7dde[_0x141b('0x4e')],'exten':_0x4e7dde['exten']},'individualHooks':!![]})[_0x141b('0x13')](function(_0x223e6b){return _0x223e6b;});}return null;})[_0x141b('0x13')](respondWithStatusCode(_0x901a6e,null))['catch'](handleError(_0x901a6e,null));};exports[_0x141b('0x4f')]=function(_0x4fa325,_0x30440b){var _0x3ba296=_0x4fa325[_0x141b('0x3b')]['id'];var _0x1b89ba=_0x4fa325[_0x141b('0x3e')];var _0x56d47e=0xc8;var _0x5cd748=null;return db[_0x141b('0x50')]['transaction']({'isolationLevel':db[_0x141b('0x50')][_0x141b('0x51')][_0x141b('0x52')][_0x141b('0x53')]},function(_0x561d10){return db['VoiceExtension']['findOne']({'where':{'id':_0x3ba296},'transaction':_0x561d10})[_0x141b('0x13')](function(_0xaf05b){if(_0xaf05b){return db[_0x141b('0x35')][_0x141b('0x12')]({'where':{'VoiceExtensionId':_0x3ba296},'transaction':_0x561d10})[_0x141b('0x13')](function(){var _0x572e76=_[_0x141b('0x1b')](_0x1b89ba,function(_0xf47536){_0xf47536[_0x141b('0x54')]=_0x3ba296;_0xf47536['isApp']=!![];return _0xf47536;});return _0xaf05b[_0x141b('0x55')](_0x572e76);})[_0x141b('0x13')](function(_0x3e9f85){return db[_0x141b('0x35')][_0x141b('0x56')](_0x3e9f85,{'transaction':_0x561d10});});}else{_0x56d47e=0x194;_0x5cd748=[];}});})[_0x141b('0x13')](function(){if(_0x56d47e!==0x194){return db[_0x141b('0x35')]['findAndCountAll']({'where':{'isApp':!![],'VoiceExtensionId':_0x3ba296},'order':'cast(priority\x20as\x20unsigned)'})[_0x141b('0x13')](function(_0x316bde){_0x5cd748=_0x316bde;});}})['catch'](function(_0x3bac80){_0x56d47e=0x1f4;logger[_0x141b('0x22')](_0x3bac80[_0x141b('0x23')]);if(_0x3bac80['name']){delete _0x3bac80[_0x141b('0x20')];}_0x5cd748=_0x3bac80;})['finally'](function(){if(_0x5cd748===null){_0x30440b[_0x141b('0x9')](_0x56d47e);}else{if(_0x56d47e===0x1f4){_0x30440b[_0x141b('0xb')](_0x56d47e)['send'](_0x5cd748);}else{_0x30440b['status'](_0x56d47e)['json'](_0x5cd748);}}});};
\ No newline at end of file
index 5a9b472..bed4693 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9815=['setMaxListeners','remove','emit','hook','events','../../mysqldb'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0x9815,0x18a));var _0x5981=function(_0x8f1f5a,_0x5c0922){_0x8f1f5a=_0x8f1f5a-0x0;var _0x672149=_0x9815[_0x8f1f5a];return _0x672149;};'use strict';var EventEmitter=require(_0x5981('0x0'));var VoiceExtension=require(_0x5981('0x1'))['db']['VoiceExtension'];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x5981('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x5981('0x3')};function emitEvent(_0x12529f){return function(_0x32728a,_0x573ceb,_0x911121){VoiceExtensionEvents[_0x5981('0x4')](_0x12529f+':'+_0x32728a['id'],_0x32728a);VoiceExtensionEvents['emit'](_0x12529f,_0x32728a);_0x911121(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceExtension[_0x5981('0x5')](e,emitEvent(event));}}module['exports']=VoiceExtensionEvents;
\ No newline at end of file
+var _0xb198=['save','remove','hasOwnProperty','exports','events','../../mysqldb','VoiceExtension','setMaxListeners'];(function(_0x29c934,_0x3c30e2){var _0x4302de=function(_0x179a5a){while(--_0x179a5a){_0x29c934['push'](_0x29c934['shift']());}};_0x4302de(++_0x3c30e2);}(_0xb198,0x74));var _0x8b19=function(_0x5bd264,_0x2ee06d){_0x5bd264=_0x5bd264-0x0;var _0x2e0f43=_0xb198[_0x5bd264];return _0x2e0f43;};'use strict';var EventEmitter=require(_0x8b19('0x0'));var VoiceExtension=require(_0x8b19('0x1'))['db'][_0x8b19('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x8b19('0x3')](0x0);var events={'afterCreate':_0x8b19('0x4'),'afterUpdate':'update','afterDestroy':_0x8b19('0x5')};function emitEvent(_0x123b58){return function(_0x33ac64,_0x4f56c7,_0xf9f30e){VoiceExtensionEvents['emit'](_0x123b58+':'+_0x33ac64['id'],_0x33ac64);VoiceExtensionEvents['emit'](_0x123b58,_0x33ac64);_0xf9f30e(null);};}for(var e in events){if(events[_0x8b19('0x6')](e)){var event=events[e];VoiceExtension['hook'](e,emitEvent(event));}}module[_0x8b19('0x7')]=VoiceExtensionEvents;
\ No newline at end of file
index 72689cc..cc6281f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e63=['replace','Interval','findAll','interval','IntervalId','then','*,*,*,*','intervals','map','filter','toLowerCase','tag','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','NoOp(No\x20number\x20available)','hasOwnProperty','answer','queue','playback','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','GotoIfTime',',${EXTEN},','appType','outboundDial','appdata','priority','concat','last','define','get','Hangup','./voiceExtension.attributes','exports','models','type','Set','CDR(type)=','context','exten','alias','NoOp','No\x20alias\x20set','push','inbound','CDR(routeid)=','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','CDR(routeAlias)=','cutdigits','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','XCALLY-MOTION-ANSWER=0','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','trunk','options','split','length','name','param','phone','prefix','join','U(xcally-mixmonitor-context)'];(function(_0x23c86f,_0x570f5c){var _0x2e7015=function(_0x341020){while(--_0x341020){_0x23c86f['push'](_0x23c86f['shift']());}};_0x2e7015(++_0x570f5c);}(_0x2e63,0x14d));var _0x32e6=function(_0x38ced4,_0x24263f){_0x38ced4=_0x38ced4-0x0;var _0x547c07=_0x2e63[_0x38ced4];return _0x547c07;};'use strict';var _=require('lodash');var attributes=require(_0x32e6('0x0'));module[_0x32e6('0x1')]=function(_0x359d55){var _0x1722f1=_0x359d55[_0x32e6('0x2')];function _0x477974(_0x434065){var _0x48714b=0x2;var _0x1866ff=[{'type':_0x434065[_0x32e6('0x3')],'app':_0x32e6('0x4'),'appdata':_0x32e6('0x5')+_0x434065[_0x32e6('0x3')],'context':_0x434065[_0x32e6('0x6')],'exten':_0x434065[_0x32e6('0x7')],'priority':_0x48714b++,'VoiceExtensionId':_0x434065['id']},{'type':_0x434065[_0x32e6('0x3')],'app':_0x434065[_0x32e6('0x8')]?_0x32e6('0x4'):_0x32e6('0x9'),'appdata':_0x434065[_0x32e6('0x8')]?'CDR(routeAlias)='+_0x434065[_0x32e6('0x8')]:_0x32e6('0xa'),'context':_0x434065[_0x32e6('0x6')],'exten':_0x434065[_0x32e6('0x7')],'priority':_0x48714b++,'VoiceExtensionId':_0x434065['id']}];if(_0x434065[_0x32e6('0x3')]==='inbound'){_0x1866ff[_0x32e6('0xb')]({'type':_0x32e6('0xc'),'app':_0x32e6('0x4'),'appdata':_0x32e6('0xd')+_0x434065['id'],'context':_0x434065['context'],'exten':_0x434065['exten'],'priority':_0x48714b++,'VoiceExtensionId':_0x434065['id']});}_0x1866ff[_0x32e6('0xb')]({'type':_0x434065['type'],'app':_0x32e6('0x4'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x434065[_0x32e6('0x6')],'exten':_0x434065[_0x32e6('0x7')],'priority':_0x48714b++,'VoiceExtensionId':_0x434065['id']},{'type':_0x434065[_0x32e6('0x3')],'app':_0x32e6('0x4'),'appdata':_0x32e6('0xe'),'context':_0x434065[_0x32e6('0x6')],'exten':_0x434065[_0x32e6('0x7')],'priority':_0x48714b++,'VoiceExtensionId':_0x434065['id']},{'type':_0x434065[_0x32e6('0x3')],'app':_0x32e6('0x4'),'appdata':_0x32e6('0xf'),'context':_0x434065[_0x32e6('0x6')],'exten':_0x434065[_0x32e6('0x7')],'priority':_0x48714b++,'VoiceExtensionId':_0x434065['id']});return _0x1866ff;}function _0x353be7(_0x55e47f){var _0x25264d=0x2;var _0x45a344=[{'type':_0x32e6('0x10'),'app':_0x32e6('0x4'),'appdata':_0x32e6('0x11'),'context':_0x55e47f[_0x32e6('0x6')],'exten':_0x55e47f['exten'],'priority':_0x25264d++,'VoiceExtensionId':_0x55e47f['id']},{'type':_0x32e6('0x10'),'app':_0x55e47f[_0x32e6('0x8')]?_0x32e6('0x4'):_0x32e6('0x9'),'appdata':_0x55e47f[_0x32e6('0x8')]?_0x32e6('0x12')+_0x55e47f[_0x32e6('0x8')]:_0x32e6('0xa'),'context':_0x55e47f[_0x32e6('0x6')],'exten':_0x55e47f['exten'],'priority':_0x25264d++,'VoiceExtensionId':_0x55e47f['id']},{'type':_0x32e6('0x10'),'app':'Set','appdata':'CDR(destination)='+(_0x55e47f['cutdigits']?'${EXTEN:'+_0x55e47f[_0x32e6('0x13')]+'}':_0x32e6('0x14')),'context':_0x55e47f[_0x32e6('0x6')],'exten':_0x55e47f[_0x32e6('0x7')],'priority':_0x25264d++,'VoiceExtensionId':_0x55e47f['id']},{'type':_0x32e6('0x10'),'app':_0x32e6('0x4'),'appdata':_0x32e6('0xd')+_0x55e47f['id'],'context':_0x55e47f[_0x32e6('0x6')],'exten':_0x55e47f[_0x32e6('0x7')],'priority':_0x25264d++,'VoiceExtensionId':_0x55e47f['id']},{'type':_0x32e6('0x10'),'app':_0x32e6('0x15'),'appdata':_0x32e6('0x16')+(_0x25264d+0x2)+_0x32e6('0x17')+(_0x25264d+0x1)+')','context':_0x55e47f[_0x32e6('0x6')],'exten':_0x55e47f['exten'],'priority':_0x25264d++,'VoiceExtensionId':_0x55e47f['id']},{'type':_0x32e6('0x10'),'app':_0x32e6('0x4'),'appdata':_0x55e47f[_0x32e6('0x13')]?_0x32e6('0x18')+_0x55e47f[_0x32e6('0x13')]+'}':_0x32e6('0x19'),'context':_0x55e47f[_0x32e6('0x6')],'exten':_0x55e47f['exten'],'priority':_0x25264d++,'VoiceExtensionId':_0x55e47f['id']},{'type':_0x32e6('0x10'),'app':_0x32e6('0x4'),'appdata':_0x32e6('0x1a'),'context':_0x55e47f[_0x32e6('0x6')],'exten':_0x55e47f[_0x32e6('0x7')],'priority':_0x25264d++,'VoiceExtensionId':_0x55e47f['id']},{'type':'outbound','app':_0x32e6('0x4'),'appdata':_0x32e6('0xe'),'context':_0x55e47f[_0x32e6('0x6')],'exten':_0x55e47f['exten'],'priority':_0x25264d++,'VoiceExtensionId':_0x55e47f['id']},{'type':'outbound','app':_0x32e6('0x4'),'appdata':_0x32e6('0xf'),'context':_0x55e47f[_0x32e6('0x6')],'exten':_0x55e47f[_0x32e6('0x7')],'priority':_0x25264d++,'VoiceExtensionId':_0x55e47f['id']},{'type':'outbound','app':_0x32e6('0x4'),'appdata':_0x32e6('0x1b')+_0x55e47f['id'],'context':_0x55e47f[_0x32e6('0x6')],'exten':_0x55e47f[_0x32e6('0x7')],'priority':_0x25264d++,'VoiceExtensionId':_0x55e47f['id']}];if(_0x55e47f['hasOwnProperty'](_0x32e6('0x1c'))&&_0x55e47f['recordingFormat']!==_0x32e6('0x1d')){_0x45a344['push']({'type':_0x32e6('0x10'),'app':_0x32e6('0x4'),'appdata':_0x32e6('0x1e'),'context':_0x55e47f['context'],'exten':_0x55e47f[_0x32e6('0x7')],'priority':_0x25264d++,'VoiceExtensionId':_0x55e47f['id']},{'type':_0x32e6('0x10'),'app':_0x32e6('0x4'),'appdata':_0x32e6('0x1f')+_0x55e47f[_0x32e6('0x1c')]||'wav','context':_0x55e47f['context'],'exten':_0x55e47f['exten'],'priority':_0x25264d++,'VoiceExtensionId':_0x55e47f['id']});}return _0x45a344;}function _0x5c483e(_0x28751c,_0x35d2e4){var _0x341e1f=[{'name':_0x32e6('0x20'),'param':0x0},{'name':'timeout','param':0x1},{'name':_0x32e6('0x21'),'param':0x2},{'name':'url','param':0x3}];var _0x43ac97={};var _0x184479=_0x35d2e4[_0x32e6('0x22')](',');var _0x50307e=[];for(var _0x42f928=0x0;_0x42f928<_0x341e1f[_0x32e6('0x23')];_0x42f928++){switch(_0x341e1f[_0x42f928][_0x32e6('0x24')]){case _0x32e6('0x20'):_0x43ac97[_0x32e6('0x20')]=_0x184479[_0x341e1f[_0x42f928][_0x32e6('0x25')]]['split']('/')[0x1];_0x43ac97[_0x32e6('0x26')]=_0x184479[_0x341e1f[_0x42f928][_0x32e6('0x25')]][_0x32e6('0x22')]('/')[0x2];_0x43ac97[_0x32e6('0x27')]=_0x43ac97['phone']?_0x43ac97['phone']['split']('$')[0x0]:undefined;_0x43ac97['phone']=_0x28751c['cutdigits']?(_0x43ac97[_0x32e6('0x27')]||'')+'${EXTEN:'+_0x28751c[_0x32e6('0x13')]+'}':(_0x43ac97[_0x32e6('0x27')]||'')+'${EXTEN}';_0x50307e[_0x341e1f[_0x42f928]['param']]=['SIP',_0x43ac97[_0x32e6('0x20')],_0x43ac97['phone']][_0x32e6('0x28')]('/');break;case'options':_0x43ac97[_0x32e6('0x21')]=_0x184479[_0x341e1f[_0x42f928]['param']];if(_0x28751c[_0x32e6('0x1c')]!==_0x32e6('0x1d')){if(_0x43ac97[_0x32e6('0x21')]['indexOf'](_0x32e6('0x29'))<0x0){_0x43ac97['options']+='U(xcally-mixmonitor-context)';}}else{_0x43ac97['options']=_0x43ac97[_0x32e6('0x21')][_0x32e6('0x2a')](_0x32e6('0x29'),'');}_0x50307e[_0x341e1f[_0x42f928][_0x32e6('0x25')]]=_0x43ac97[_0x32e6('0x21')];break;default:_0x50307e[_0x341e1f[_0x42f928][_0x32e6('0x25')]]=_0x184479[_0x341e1f[_0x42f928][_0x32e6('0x25')]];}}return _0x50307e['join'](',');}function _0x5e2ac3(_0x117acf,_0x93dbcb,_0x20d43a){return new Promise(function(_0x13b5d1,_0x2d47c4){var _0x43f391=[];if(_['isEmpty'](_0x93dbcb))return _0x13b5d1(_0x43f391);_0x1722f1[_0x32e6('0x2b')][_0x32e6('0x2c')]({'attributes':['id',_0x32e6('0x2d'),_0x32e6('0x2e')],'raw':!![]})[_0x32e6('0x2f')](function(_0x5d3927){for(var _0x445637=0x0,_0x37725e=0x0;_0x445637<_0x93dbcb[_0x32e6('0x23')];_0x445637++,_0x37725e=0x0){var _0x5eaf5e=_0x93dbcb[_0x445637];var _0x563db8=[];var _0x3d6a3a=[];delete _0x5eaf5e['id'];if(_0x5eaf5e[_0x32e6('0x2d')]!==_0x32e6('0x30')){_0x5eaf5e[_0x32e6('0x31')]=[_0x5eaf5e['interval']];}else{_0x5eaf5e[_0x32e6('0x31')]=_0x5eaf5e[_0x32e6('0x2e')]?_[_0x32e6('0x32')](_[_0x32e6('0x33')](_0x5d3927,{'IntervalId':_0x5eaf5e['IntervalId']}),_0x32e6('0x2d')):[];}_0x5eaf5e['context']=_0x117acf[_0x32e6('0x6')];_0x5eaf5e[_0x32e6('0x7')]=_0x117acf[_0x32e6('0x7')];if(_0x5eaf5e[_0x32e6('0x3')])_0x5eaf5e[_0x32e6('0x3')]=_0x5eaf5e['type'][_0x32e6('0x34')]();if(_0x117acf[_0x32e6('0x3')]===_0x32e6('0x10')){if(_0x5eaf5e['hasOwnProperty'](_0x32e6('0x35'))&&_0x5eaf5e[_0x32e6('0x35')]&&_0x5eaf5e[_0x32e6('0x35')]!=='--'){_0x563db8[_0x32e6('0xb')]({'type':_0x5eaf5e[_0x32e6('0x3')][_0x32e6('0x34')](),'app':_0x32e6('0x4'),'appdata':'CDR(tag)='+_0x5eaf5e[_0x32e6('0x35')],'context':_0x117acf[_0x32e6('0x6')],'exten':_0x117acf['exten'],'priority':_0x5eaf5e[_0x32e6('0x31')][_0x32e6('0x23')]+_0x20d43a+_0x37725e++,'VoiceExtensionId':_0x117acf['id']});}_0x563db8['push']({'type':_0x5eaf5e['type'][_0x32e6('0x34')](),'app':_0x32e6('0x15'),'appdata':_0x32e6('0x36')+(_0x5eaf5e[_0x32e6('0x37')]?'Set(CALLERID(all)='+_0x5eaf5e[_0x32e6('0x37')]+')':_0x32e6('0x38')),'context':_0x117acf['context'],'exten':_0x117acf[_0x32e6('0x7')],'priority':_0x5eaf5e[_0x32e6('0x31')][_0x32e6('0x23')]+_0x20d43a+_0x37725e++,'VoiceExtensionId':_0x117acf['id']});}else{if(_0x5eaf5e[_0x32e6('0x39')](_0x32e6('0x3a'))){if([_0x32e6('0x3b'),_0x32e6('0x3c')]['includes'](_0x5eaf5e['app'][_0x32e6('0x34')]())&&_0x5eaf5e['appType']!==_0x32e6('0x3d')){if(_0x5eaf5e[_0x32e6('0x3a')]){_0x563db8['push']({'type':_0x5eaf5e[_0x32e6('0x3')]['toLowerCase'](),'app':'ExecIf','appdata':_0x32e6('0x3e'),'context':_0x117acf['context'],'exten':_0x117acf[_0x32e6('0x7')],'priority':_0x5eaf5e[_0x32e6('0x31')][_0x32e6('0x23')]+_0x20d43a+_0x37725e++,'VoiceExtensionId':_0x117acf['id']});_0x563db8[_0x32e6('0xb')]({'type':_0x5eaf5e[_0x32e6('0x3')][_0x32e6('0x34')](),'app':'Set','appdata':_0x32e6('0x3f'),'context':_0x117acf[_0x32e6('0x6')],'exten':_0x117acf['exten'],'priority':_0x5eaf5e['intervals'][_0x32e6('0x23')]+_0x20d43a+_0x37725e++,'VoiceExtensionId':_0x117acf['id']});}else{_0x563db8['push']({'type':_0x5eaf5e[_0x32e6('0x3')][_0x32e6('0x34')](),'app':_0x32e6('0x15'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x117acf['context'],'exten':_0x117acf[_0x32e6('0x7')],'priority':_0x5eaf5e[_0x32e6('0x31')]['length']+_0x20d43a+_0x37725e++,'VoiceExtensionId':_0x117acf['id']});_0x563db8['push']({'type':_0x5eaf5e[_0x32e6('0x3')][_0x32e6('0x34')](),'app':_0x32e6('0x4'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x117acf[_0x32e6('0x6')],'exten':_0x117acf[_0x32e6('0x7')],'priority':_0x5eaf5e[_0x32e6('0x31')]['length']+_0x20d43a+_0x37725e++,'VoiceExtensionId':_0x117acf['id']});}}}}for(var _0x3a676f=0x0;_0x3a676f<_0x5eaf5e[_0x32e6('0x31')]['length'];_0x3a676f++){var _0x3e26db=_0x20d43a+_0x5eaf5e[_0x32e6('0x31')][_0x32e6('0x23')];var _0x2b7914=_0x3a676f===_0x5eaf5e[_0x32e6('0x31')][_0x32e6('0x23')]-0x1?_0x20d43a+_0x563db8[_0x32e6('0x23')]+_0x3d6a3a[_0x32e6('0x23')]+0x2:_0x20d43a+_0x3a676f+0x1;_0x563db8['splice'](_0x3a676f,0x0,{'type':_0x117acf[_0x32e6('0x3')],'app':_0x32e6('0x40'),'appdata':_0x5eaf5e['intervals'][_0x3a676f]+'?'+_0x117acf[_0x32e6('0x6')]+',${EXTEN},'+_0x3e26db+':'+_0x117acf[_0x32e6('0x6')]+_0x32e6('0x41')+_0x2b7914,'exten':_0x117acf[_0x32e6('0x7')],'context':_0x117acf[_0x32e6('0x6')],'priority':_0x20d43a+_0x3a676f,'VoiceExtensionId':_0x117acf['id']});}if(_0x5eaf5e[_0x32e6('0x42')]===_0x32e6('0x43'))_0x5eaf5e[_0x32e6('0x44')]=_0x5c483e(_0x117acf,_0x5eaf5e['appdata']);_0x5eaf5e[_0x32e6('0x45')]=_0x563db8[_0x32e6('0x23')]?_['last'](_0x563db8)['priority']+0x1:_0x20d43a;_0x43f391=_[_0x32e6('0x46')](_0x43f391,_0x563db8,[_0x5eaf5e],_0x3d6a3a);_0x20d43a=_[_0x32e6('0x47')](_0x43f391)[_0x32e6('0x45')]+0x1;}return _0x13b5d1(_0x43f391);})['catch'](function(_0xa2a1af){_0x2d47c4(_0xa2a1af);});});}return _0x359d55[_0x32e6('0x48')]('VoiceExtension',attributes,{'tableName':'voice_extensions','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x29bc7b){var _0x2d60c8=this[_0x32e6('0x49')]({'plain':!![]});var _0x386a85=_0x2d60c8[_0x32e6('0x3')]===_0x32e6('0x10')?_0x353be7(_0x2d60c8):_0x477974(_0x2d60c8);return _0x5e2ac3(_0x2d60c8,_0x29bc7b,_[_0x32e6('0x47')](_0x386a85)['priority']+0x1)[_0x32e6('0x2f')](function(_0x40b778){var _0x342bba=_[_0x32e6('0x46')](_0x386a85,_0x40b778);_0x342bba['push']({'type':_0x2d60c8[_0x32e6('0x3')],'app':_0x32e6('0x4a'),'exten':_0x2d60c8[_0x32e6('0x7')],'context':_0x2d60c8['context'],'priority':_['last'](_0x342bba)[_0x32e6('0x45')]+0x1,'VoiceExtensionId':_0x2d60c8['id']});return _0x342bba;});}}});};
\ No newline at end of file
+var _0x7e81=['SIP','join','indexOf','U(xcally-mixmonitor-context)','isEmpty','findAll','interval','then','*,*,*,*','intervals','IntervalId','filter','toLowerCase','tag','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','answer','playback','includes','app','appType','custom','XCALLY-MOTION-ANSWER=1','ExecIf','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','splice','GotoIfTime',',${EXTEN},','outboundDial','priority','last','concat','define','VoiceExtension','lodash','./voiceExtension.attributes','exports','models','Set','CDR(type)=','type','context','exten','NoOp','alias','No\x20alias\x20set','inbound','push','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(destination)=','cutdigits','${EXTEN}','CDR(routeid)=','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','hasOwnProperty','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','timeout','options','url','split','length','name','param','phone','prefix','${EXTEN:'];(function(_0xa4c713,_0x120a6a){var _0x4acf45=function(_0x12c445){while(--_0x12c445){_0xa4c713['push'](_0xa4c713['shift']());}};_0x4acf45(++_0x120a6a);}(_0x7e81,0xc5));var _0x17e8=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0x7e81[_0x433a86];return _0x23000c;};'use strict';var _=require(_0x17e8('0x0'));var attributes=require(_0x17e8('0x1'));module[_0x17e8('0x2')]=function(_0xf015e8){var _0x5272db=_0xf015e8[_0x17e8('0x3')];function _0x150fc3(_0x23a199){var _0x766c9e=0x2;var _0x364a73=[{'type':_0x23a199['type'],'app':_0x17e8('0x4'),'appdata':_0x17e8('0x5')+_0x23a199[_0x17e8('0x6')],'context':_0x23a199[_0x17e8('0x7')],'exten':_0x23a199[_0x17e8('0x8')],'priority':_0x766c9e++,'VoiceExtensionId':_0x23a199['id']},{'type':_0x23a199['type'],'app':_0x23a199['alias']?_0x17e8('0x4'):_0x17e8('0x9'),'appdata':_0x23a199[_0x17e8('0xa')]?'CDR(routeAlias)='+_0x23a199['alias']:_0x17e8('0xb'),'context':_0x23a199[_0x17e8('0x7')],'exten':_0x23a199[_0x17e8('0x8')],'priority':_0x766c9e++,'VoiceExtensionId':_0x23a199['id']}];if(_0x23a199[_0x17e8('0x6')]===_0x17e8('0xc')){_0x364a73['push']({'type':_0x17e8('0xc'),'app':_0x17e8('0x4'),'appdata':'CDR(routeid)='+_0x23a199['id'],'context':_0x23a199[_0x17e8('0x7')],'exten':_0x23a199[_0x17e8('0x8')],'priority':_0x766c9e++,'VoiceExtensionId':_0x23a199['id']});}_0x364a73[_0x17e8('0xd')]({'type':_0x23a199[_0x17e8('0x6')],'app':_0x17e8('0x4'),'appdata':_0x17e8('0xe'),'context':_0x23a199[_0x17e8('0x7')],'exten':_0x23a199[_0x17e8('0x8')],'priority':_0x766c9e++,'VoiceExtensionId':_0x23a199['id']},{'type':_0x23a199[_0x17e8('0x6')],'app':_0x17e8('0x4'),'appdata':_0x17e8('0xf'),'context':_0x23a199['context'],'exten':_0x23a199[_0x17e8('0x8')],'priority':_0x766c9e++,'VoiceExtensionId':_0x23a199['id']},{'type':_0x23a199[_0x17e8('0x6')],'app':_0x17e8('0x4'),'appdata':_0x17e8('0x10'),'context':_0x23a199[_0x17e8('0x7')],'exten':_0x23a199[_0x17e8('0x8')],'priority':_0x766c9e++,'VoiceExtensionId':_0x23a199['id']});return _0x364a73;}function _0x3956ed(_0x12c9ca){var _0x164886=0x2;var _0x53a964=[{'type':_0x17e8('0x11'),'app':'Set','appdata':'CDR(type)=outbound','context':_0x12c9ca[_0x17e8('0x7')],'exten':_0x12c9ca[_0x17e8('0x8')],'priority':_0x164886++,'VoiceExtensionId':_0x12c9ca['id']},{'type':'outbound','app':_0x12c9ca['alias']?_0x17e8('0x4'):_0x17e8('0x9'),'appdata':_0x12c9ca[_0x17e8('0xa')]?'CDR(routeAlias)='+_0x12c9ca[_0x17e8('0xa')]:_0x17e8('0xb'),'context':_0x12c9ca['context'],'exten':_0x12c9ca['exten'],'priority':_0x164886++,'VoiceExtensionId':_0x12c9ca['id']},{'type':'outbound','app':_0x17e8('0x4'),'appdata':_0x17e8('0x12')+(_0x12c9ca[_0x17e8('0x13')]?'${EXTEN:'+_0x12c9ca['cutdigits']+'}':_0x17e8('0x14')),'context':_0x12c9ca[_0x17e8('0x7')],'exten':_0x12c9ca[_0x17e8('0x8')],'priority':_0x164886++,'VoiceExtensionId':_0x12c9ca['id']},{'type':'outbound','app':_0x17e8('0x4'),'appdata':_0x17e8('0x15')+_0x12c9ca['id'],'context':_0x12c9ca[_0x17e8('0x7')],'exten':_0x12c9ca[_0x17e8('0x8')],'priority':_0x164886++,'VoiceExtensionId':_0x12c9ca['id']},{'type':_0x17e8('0x11'),'app':'ExecIf','appdata':_0x17e8('0x16')+(_0x164886+0x2)+_0x17e8('0x17')+(_0x164886+0x1)+')','context':_0x12c9ca['context'],'exten':_0x12c9ca[_0x17e8('0x8')],'priority':_0x164886++,'VoiceExtensionId':_0x12c9ca['id']},{'type':'outbound','app':'Set','appdata':_0x12c9ca[_0x17e8('0x13')]?_0x17e8('0x18')+_0x12c9ca['cutdigits']+'}':_0x17e8('0x19'),'context':_0x12c9ca['context'],'exten':_0x12c9ca[_0x17e8('0x8')],'priority':_0x164886++,'VoiceExtensionId':_0x12c9ca['id']},{'type':_0x17e8('0x11'),'app':'Set','appdata':_0x17e8('0xe'),'context':_0x12c9ca[_0x17e8('0x7')],'exten':_0x12c9ca[_0x17e8('0x8')],'priority':_0x164886++,'VoiceExtensionId':_0x12c9ca['id']},{'type':'outbound','app':_0x17e8('0x4'),'appdata':_0x17e8('0xf'),'context':_0x12c9ca[_0x17e8('0x7')],'exten':_0x12c9ca['exten'],'priority':_0x164886++,'VoiceExtensionId':_0x12c9ca['id']},{'type':_0x17e8('0x11'),'app':_0x17e8('0x4'),'appdata':_0x17e8('0x10'),'context':_0x12c9ca[_0x17e8('0x7')],'exten':_0x12c9ca[_0x17e8('0x8')],'priority':_0x164886++,'VoiceExtensionId':_0x12c9ca['id']},{'type':_0x17e8('0x11'),'app':_0x17e8('0x4'),'appdata':_0x17e8('0x1a')+_0x12c9ca['id'],'context':_0x12c9ca['context'],'exten':_0x12c9ca[_0x17e8('0x8')],'priority':_0x164886++,'VoiceExtensionId':_0x12c9ca['id']}];if(_0x12c9ca[_0x17e8('0x1b')](_0x17e8('0x1c'))&&_0x12c9ca[_0x17e8('0x1c')]!=='none'){_0x53a964[_0x17e8('0xd')]({'type':_0x17e8('0x11'),'app':_0x17e8('0x4'),'appdata':_0x17e8('0x1d'),'context':_0x12c9ca[_0x17e8('0x7')],'exten':_0x12c9ca[_0x17e8('0x8')],'priority':_0x164886++,'VoiceExtensionId':_0x12c9ca['id']},{'type':_0x17e8('0x11'),'app':_0x17e8('0x4'),'appdata':_0x17e8('0x1e')+_0x12c9ca['recordingFormat']||_0x17e8('0x1f'),'context':_0x12c9ca[_0x17e8('0x7')],'exten':_0x12c9ca[_0x17e8('0x8')],'priority':_0x164886++,'VoiceExtensionId':_0x12c9ca['id']});}return _0x53a964;}function _0x2fbeb7(_0x4d3ef3,_0x490d7d){var _0x512aaa=[{'name':_0x17e8('0x20'),'param':0x0},{'name':_0x17e8('0x21'),'param':0x1},{'name':_0x17e8('0x22'),'param':0x2},{'name':_0x17e8('0x23'),'param':0x3}];var _0xd37232={};var _0x3302af=_0x490d7d[_0x17e8('0x24')](',');var _0x40834c=[];for(var _0x20ee4b=0x0;_0x20ee4b<_0x512aaa[_0x17e8('0x25')];_0x20ee4b++){switch(_0x512aaa[_0x20ee4b][_0x17e8('0x26')]){case'trunk':_0xd37232[_0x17e8('0x20')]=_0x3302af[_0x512aaa[_0x20ee4b][_0x17e8('0x27')]][_0x17e8('0x24')]('/')[0x1];_0xd37232[_0x17e8('0x28')]=_0x3302af[_0x512aaa[_0x20ee4b]['param']]['split']('/')[0x2];_0xd37232[_0x17e8('0x29')]=_0xd37232[_0x17e8('0x28')]?_0xd37232[_0x17e8('0x28')][_0x17e8('0x24')]('$')[0x0]:undefined;_0xd37232['phone']=_0x4d3ef3['cutdigits']?(_0xd37232[_0x17e8('0x29')]||'')+_0x17e8('0x2a')+_0x4d3ef3[_0x17e8('0x13')]+'}':(_0xd37232[_0x17e8('0x29')]||'')+_0x17e8('0x14');_0x40834c[_0x512aaa[_0x20ee4b]['param']]=[_0x17e8('0x2b'),_0xd37232['trunk'],_0xd37232['phone']][_0x17e8('0x2c')]('/');break;case _0x17e8('0x22'):_0xd37232[_0x17e8('0x22')]=_0x3302af[_0x512aaa[_0x20ee4b]['param']];if(_0x4d3ef3[_0x17e8('0x1c')]!=='none'){if(_0xd37232['options'][_0x17e8('0x2d')](_0x17e8('0x2e'))<0x0){_0xd37232[_0x17e8('0x22')]+=_0x17e8('0x2e');}}else{_0xd37232[_0x17e8('0x22')]=_0xd37232[_0x17e8('0x22')]['replace'](_0x17e8('0x2e'),'');}_0x40834c[_0x512aaa[_0x20ee4b][_0x17e8('0x27')]]=_0xd37232[_0x17e8('0x22')];break;default:_0x40834c[_0x512aaa[_0x20ee4b][_0x17e8('0x27')]]=_0x3302af[_0x512aaa[_0x20ee4b][_0x17e8('0x27')]];}}return _0x40834c[_0x17e8('0x2c')](',');}function _0x4f80b2(_0x57ed1d,_0x54da07,_0x4b4e62){return new Promise(function(_0x39f49a,_0x19a553){var _0x47c0e8=[];if(_[_0x17e8('0x2f')](_0x54da07))return _0x39f49a(_0x47c0e8);_0x5272db['Interval'][_0x17e8('0x30')]({'attributes':['id',_0x17e8('0x31'),'IntervalId'],'raw':!![]})[_0x17e8('0x32')](function(_0x296a9f){for(var _0xdbe6ce=0x0,_0x11d914=0x0;_0xdbe6ce<_0x54da07[_0x17e8('0x25')];_0xdbe6ce++,_0x11d914=0x0){var _0xab7c06=_0x54da07[_0xdbe6ce];var _0x59889b=[];var _0x1a62d0=[];delete _0xab7c06['id'];if(_0xab7c06[_0x17e8('0x31')]!==_0x17e8('0x33')){_0xab7c06[_0x17e8('0x34')]=[_0xab7c06[_0x17e8('0x31')]];}else{_0xab7c06[_0x17e8('0x34')]=_0xab7c06[_0x17e8('0x35')]?_['map'](_[_0x17e8('0x36')](_0x296a9f,{'IntervalId':_0xab7c06[_0x17e8('0x35')]}),_0x17e8('0x31')):[];}_0xab7c06[_0x17e8('0x7')]=_0x57ed1d[_0x17e8('0x7')];_0xab7c06[_0x17e8('0x8')]=_0x57ed1d[_0x17e8('0x8')];if(_0xab7c06[_0x17e8('0x6')])_0xab7c06['type']=_0xab7c06[_0x17e8('0x6')][_0x17e8('0x37')]();if(_0x57ed1d[_0x17e8('0x6')]===_0x17e8('0x11')){if(_0xab7c06['hasOwnProperty']('tag')&&_0xab7c06[_0x17e8('0x38')]&&_0xab7c06[_0x17e8('0x38')]!=='--'){_0x59889b[_0x17e8('0xd')]({'type':_0xab7c06[_0x17e8('0x6')][_0x17e8('0x37')](),'app':_0x17e8('0x4'),'appdata':_0x17e8('0x39')+_0xab7c06[_0x17e8('0x38')],'context':_0x57ed1d[_0x17e8('0x7')],'exten':_0x57ed1d[_0x17e8('0x8')],'priority':_0xab7c06[_0x17e8('0x34')][_0x17e8('0x25')]+_0x4b4e62+_0x11d914++,'VoiceExtensionId':_0x57ed1d['id']});}_0x59889b[_0x17e8('0xd')]({'type':_0xab7c06[_0x17e8('0x6')][_0x17e8('0x37')](),'app':'ExecIf','appdata':_0x17e8('0x3a')+(_0xab7c06[_0x17e8('0x3b')]?_0x17e8('0x3c')+_0xab7c06[_0x17e8('0x3b')]+')':_0x17e8('0x3d')),'context':_0x57ed1d[_0x17e8('0x7')],'exten':_0x57ed1d[_0x17e8('0x8')],'priority':_0xab7c06[_0x17e8('0x34')][_0x17e8('0x25')]+_0x4b4e62+_0x11d914++,'VoiceExtensionId':_0x57ed1d['id']});}else{if(_0xab7c06[_0x17e8('0x1b')](_0x17e8('0x3e'))){if(['queue',_0x17e8('0x3f')][_0x17e8('0x40')](_0xab7c06[_0x17e8('0x41')]['toLowerCase']())&&_0xab7c06[_0x17e8('0x42')]!==_0x17e8('0x43')){if(_0xab7c06['answer']){_0x59889b['push']({'type':_0xab7c06[_0x17e8('0x6')]['toLowerCase'](),'app':'ExecIf','appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x57ed1d[_0x17e8('0x7')],'exten':_0x57ed1d[_0x17e8('0x8')],'priority':_0xab7c06[_0x17e8('0x34')][_0x17e8('0x25')]+_0x4b4e62+_0x11d914++,'VoiceExtensionId':_0x57ed1d['id']});_0x59889b[_0x17e8('0xd')]({'type':_0xab7c06['type'][_0x17e8('0x37')](),'app':_0x17e8('0x4'),'appdata':_0x17e8('0x44'),'context':_0x57ed1d[_0x17e8('0x7')],'exten':_0x57ed1d[_0x17e8('0x8')],'priority':_0xab7c06[_0x17e8('0x34')][_0x17e8('0x25')]+_0x4b4e62+_0x11d914++,'VoiceExtensionId':_0x57ed1d['id']});}else{_0x59889b[_0x17e8('0xd')]({'type':_0xab7c06[_0x17e8('0x6')][_0x17e8('0x37')](),'app':_0x17e8('0x45'),'appdata':_0x17e8('0x46'),'context':_0x57ed1d['context'],'exten':_0x57ed1d[_0x17e8('0x8')],'priority':_0xab7c06[_0x17e8('0x34')][_0x17e8('0x25')]+_0x4b4e62+_0x11d914++,'VoiceExtensionId':_0x57ed1d['id']});_0x59889b[_0x17e8('0xd')]({'type':_0xab7c06['type']['toLowerCase'](),'app':_0x17e8('0x4'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x57ed1d[_0x17e8('0x7')],'exten':_0x57ed1d['exten'],'priority':_0xab7c06[_0x17e8('0x34')][_0x17e8('0x25')]+_0x4b4e62+_0x11d914++,'VoiceExtensionId':_0x57ed1d['id']});}}}}for(var _0x5d8ac4=0x0;_0x5d8ac4<_0xab7c06['intervals'][_0x17e8('0x25')];_0x5d8ac4++){var _0x14b12b=_0x4b4e62+_0xab7c06[_0x17e8('0x34')]['length'];var _0x13af58=_0x5d8ac4===_0xab7c06[_0x17e8('0x34')][_0x17e8('0x25')]-0x1?_0x4b4e62+_0x59889b[_0x17e8('0x25')]+_0x1a62d0[_0x17e8('0x25')]+0x2:_0x4b4e62+_0x5d8ac4+0x1;_0x59889b[_0x17e8('0x47')](_0x5d8ac4,0x0,{'type':_0x57ed1d['type'],'app':_0x17e8('0x48'),'appdata':_0xab7c06['intervals'][_0x5d8ac4]+'?'+_0x57ed1d[_0x17e8('0x7')]+',${EXTEN},'+_0x14b12b+':'+_0x57ed1d[_0x17e8('0x7')]+_0x17e8('0x49')+_0x13af58,'exten':_0x57ed1d[_0x17e8('0x8')],'context':_0x57ed1d[_0x17e8('0x7')],'priority':_0x4b4e62+_0x5d8ac4,'VoiceExtensionId':_0x57ed1d['id']});}if(_0xab7c06[_0x17e8('0x42')]===_0x17e8('0x4a'))_0xab7c06['appdata']=_0x2fbeb7(_0x57ed1d,_0xab7c06['appdata']);_0xab7c06[_0x17e8('0x4b')]=_0x59889b[_0x17e8('0x25')]?_[_0x17e8('0x4c')](_0x59889b)[_0x17e8('0x4b')]+0x1:_0x4b4e62;_0x47c0e8=_[_0x17e8('0x4d')](_0x47c0e8,_0x59889b,[_0xab7c06],_0x1a62d0);_0x4b4e62=_['last'](_0x47c0e8)[_0x17e8('0x4b')]+0x1;}return _0x39f49a(_0x47c0e8);})['catch'](function(_0x89f09a){_0x19a553(_0x89f09a);});});}return _0xf015e8[_0x17e8('0x4e')](_0x17e8('0x4f'),attributes,{'tableName':'voice_extensions','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x5ef073){var _0xb829f1=this['get']({'plain':!![]});var _0xa2ba9c=_0xb829f1['type']===_0x17e8('0x11')?_0x3956ed(_0xb829f1):_0x150fc3(_0xb829f1);return _0x4f80b2(_0xb829f1,_0x5ef073,_[_0x17e8('0x4c')](_0xa2ba9c)['priority']+0x1)[_0x17e8('0x32')](function(_0x3ffa02){var _0x3d0670=_[_0x17e8('0x4d')](_0xa2ba9c,_0x3ffa02);_0x3d0670[_0x17e8('0xd')]({'type':_0xb829f1[_0x17e8('0x6')],'app':'Hangup','exten':_0xb829f1[_0x17e8('0x8')],'context':_0xb829f1['context'],'priority':_[_0x17e8('0x4c')](_0x3d0670)[_0x17e8('0x4b')]+0x1,'VoiceExtensionId':_0xb829f1['id']});return _0x3d0670;});}}});};
\ No newline at end of file
index 15aa8b3..4a91d3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02b6=['debug','VoiceExtension,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','findAll','options','attributes','limit','include','model','map','GetVoiceExtension','stringify','lodash','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','then','info','VoiceExtension,\x20%s,\x20%s'];(function(_0x5c801d,_0x38a297){var _0x3ce265=function(_0x10b4dd){while(--_0x10b4dd){_0x5c801d['push'](_0x5c801d['shift']());}};_0x3ce265(++_0x38a297);}(_0x02b6,0xfe));var _0x602b=function(_0x28b688,_0x17f1ef){_0x28b688=_0x28b688-0x0;var _0x5a6763=_0x02b6[_0x28b688];return _0x5a6763;};'use strict';var _=require(_0x602b('0x0'));var util=require('util');var moment=require(_0x602b('0x1'));var BPromise=require(_0x602b('0x2'));var rs=require(_0x602b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x602b('0x4'));var logger=require(_0x602b('0x5'))(_0x602b('0x6'));var config=require(_0x602b('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x602b('0x8')]['http']({'port':0x232a});config[_0x602b('0x9')]=_[_0x602b('0xa')](config[_0x602b('0x9')],{'host':_0x602b('0xb'),'port':0x18eb});var socket=require(_0x602b('0xc'))(new Redis(config[_0x602b('0x9')]));require(_0x602b('0xd'))[_0x602b('0xe')](socket);function respondWithRpcPromise(_0x20c7cf,_0x1687ca,_0x4fb0a2){return new BPromise(function(_0x470cf0,_0x5ca85d){return client['request'](_0x20c7cf,_0x4fb0a2)[_0x602b('0xf')](function(_0x568461){logger[_0x602b('0x10')](_0x602b('0x11'),_0x1687ca,'request\x20sent');logger[_0x602b('0x12')](_0x602b('0x13'),_0x1687ca,_0x602b('0x14'),JSON['stringify'](_0x568461));if(_0x568461[_0x602b('0x15')]){if(_0x568461[_0x602b('0x15')][_0x602b('0x16')]===0x1f4){logger[_0x602b('0x15')](_0x602b('0x11'),_0x1687ca,_0x568461[_0x602b('0x15')][_0x602b('0x17')]);return _0x5ca85d(_0x568461['error']['message']);}logger[_0x602b('0x15')](_0x602b('0x11'),_0x1687ca,_0x568461[_0x602b('0x15')][_0x602b('0x17')]);return _0x470cf0(_0x568461[_0x602b('0x15')][_0x602b('0x17')]);}else{logger[_0x602b('0x10')](_0x602b('0x11'),_0x1687ca,_0x602b('0x14'));_0x470cf0(_0x568461['result'][_0x602b('0x17')]);}})[_0x602b('0x18')](function(_0x3ddabd){logger['error'](_0x602b('0x11'),_0x1687ca,_0x3ddabd);_0x5ca85d(_0x3ddabd);});});}exports['GetVoiceExtension']=function(_0x4ddfe0){var _0x311da8=this;return new Promise(function(_0x4e888d,_0x28eadf){return db['VoiceExtension'][_0x602b('0x19')]({'raw':_0x4ddfe0[_0x602b('0x1a')]?_0x4ddfe0[_0x602b('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x4ddfe0[_0x602b('0x1a')]?_0x4ddfe0[_0x602b('0x1a')]['where']||null:null,'attributes':_0x4ddfe0[_0x602b('0x1a')]?_0x4ddfe0[_0x602b('0x1a')][_0x602b('0x1b')]||null:null,'limit':_0x4ddfe0[_0x602b('0x1a')]?_0x4ddfe0[_0x602b('0x1a')][_0x602b('0x1c')]||null:null,'include':_0x4ddfe0[_0x602b('0x1a')]?_0x4ddfe0[_0x602b('0x1a')][_0x602b('0x1d')]?_['map'](_0x4ddfe0[_0x602b('0x1a')][_0x602b('0x1d')],function(_0x5ce51b){return{'model':db[_0x5ce51b[_0x602b('0x1e')]],'as':_0x5ce51b['as'],'attributes':_0x5ce51b[_0x602b('0x1b')],'include':_0x5ce51b['include']?_[_0x602b('0x1f')](_0x5ce51b[_0x602b('0x1d')],function(_0x22cd69){return{'model':db[_0x22cd69[_0x602b('0x1e')]],'as':_0x22cd69['as'],'attributes':_0x22cd69[_0x602b('0x1b')],'include':_0x22cd69[_0x602b('0x1d')]?_[_0x602b('0x1f')](_0x22cd69[_0x602b('0x1d')],function(_0x3e82bc){return{'model':db[_0x3e82bc[_0x602b('0x1e')]],'as':_0x3e82bc['as'],'attributes':_0x3e82bc[_0x602b('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x23a7f4){logger['info'](_0x602b('0x20'),_0x4ddfe0);logger[_0x602b('0x12')](_0x602b('0x20'),_0x4ddfe0,JSON[_0x602b('0x21')](_0x23a7f4));_0x4e888d(_0x23a7f4);})[_0x602b('0x18')](function(_0x3647cf){logger[_0x602b('0x15')](_0x602b('0x20'),_0x3647cf[_0x602b('0x17')],_0x4ddfe0);_0x28eadf(_0x311da8[_0x602b('0x15')](0x1f4,_0x3647cf[_0x602b('0x17')]));});});};
\ No newline at end of file
+var _0x0e4b=['stringify','error','code','message','catch','GetVoiceExtension','VoiceExtension','findAll','options','raw','where','attributes','limit','include','map','model','lodash','util','moment','randomstring','rpc','../../config/environment','client','http','redis','defaults','./voiceExtension.socket','register','request','then','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','debug'];(function(_0xe79d21,_0x43e1cc){var _0x2e0da3=function(_0x318d60){while(--_0x318d60){_0xe79d21['push'](_0xe79d21['shift']());}};_0x2e0da3(++_0x43e1cc);}(_0x0e4b,0xdc));var _0xb0e4=function(_0xfd3224,_0x4f9bdc){_0xfd3224=_0xfd3224-0x0;var _0x32fe42=_0x0e4b[_0xfd3224];return _0x32fe42;};'use strict';var _=require(_0xb0e4('0x0'));var util=require(_0xb0e4('0x1'));var moment=require(_0xb0e4('0x2'));var BPromise=require('bluebird');var rs=require(_0xb0e4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xb0e4('0x4'));var config=require(_0xb0e4('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xb0e4('0x6')][_0xb0e4('0x7')]({'port':0x232a});config[_0xb0e4('0x8')]=_[_0xb0e4('0x9')](config[_0xb0e4('0x8')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb0e4('0x8')]));require(_0xb0e4('0xa'))[_0xb0e4('0xb')](socket);function respondWithRpcPromise(_0x23555b,_0x12a36a,_0x140b7e){return new BPromise(function(_0x16940b,_0x232133){return client[_0xb0e4('0xc')](_0x23555b,_0x140b7e)[_0xb0e4('0xd')](function(_0x598c20){logger[_0xb0e4('0xe')](_0xb0e4('0xf'),_0x12a36a,_0xb0e4('0x10'));logger[_0xb0e4('0x11')]('VoiceExtension,\x20%s,\x20%s,\x20%s',_0x12a36a,_0xb0e4('0x10'),JSON[_0xb0e4('0x12')](_0x598c20));if(_0x598c20['error']){if(_0x598c20[_0xb0e4('0x13')][_0xb0e4('0x14')]===0x1f4){logger[_0xb0e4('0x13')](_0xb0e4('0xf'),_0x12a36a,_0x598c20[_0xb0e4('0x13')]['message']);return _0x232133(_0x598c20['error'][_0xb0e4('0x15')]);}logger[_0xb0e4('0x13')]('VoiceExtension,\x20%s,\x20%s',_0x12a36a,_0x598c20[_0xb0e4('0x13')][_0xb0e4('0x15')]);return _0x16940b(_0x598c20[_0xb0e4('0x13')][_0xb0e4('0x15')]);}else{logger[_0xb0e4('0xe')](_0xb0e4('0xf'),_0x12a36a,'request\x20sent');_0x16940b(_0x598c20['result']['message']);}})[_0xb0e4('0x16')](function(_0x41b3c1){logger[_0xb0e4('0x13')](_0xb0e4('0xf'),_0x12a36a,_0x41b3c1);_0x232133(_0x41b3c1);});});}exports[_0xb0e4('0x17')]=function(_0x2f3809){var _0x54b7ff=this;return new Promise(function(_0x436667,_0x459684){return db[_0xb0e4('0x18')][_0xb0e4('0x19')]({'raw':_0x2f3809['options']?_0x2f3809[_0xb0e4('0x1a')][_0xb0e4('0x1b')]===undefined?!![]:![]:!![],'where':_0x2f3809['options']?_0x2f3809[_0xb0e4('0x1a')][_0xb0e4('0x1c')]||null:null,'attributes':_0x2f3809[_0xb0e4('0x1a')]?_0x2f3809['options'][_0xb0e4('0x1d')]||null:null,'limit':_0x2f3809['options']?_0x2f3809['options'][_0xb0e4('0x1e')]||null:null,'include':_0x2f3809[_0xb0e4('0x1a')]?_0x2f3809[_0xb0e4('0x1a')][_0xb0e4('0x1f')]?_[_0xb0e4('0x20')](_0x2f3809[_0xb0e4('0x1a')][_0xb0e4('0x1f')],function(_0x50fe9e){return{'model':db[_0x50fe9e[_0xb0e4('0x21')]],'as':_0x50fe9e['as'],'attributes':_0x50fe9e['attributes'],'include':_0x50fe9e[_0xb0e4('0x1f')]?_[_0xb0e4('0x20')](_0x50fe9e[_0xb0e4('0x1f')],function(_0xfef785){return{'model':db[_0xfef785['model']],'as':_0xfef785['as'],'attributes':_0xfef785[_0xb0e4('0x1d')],'include':_0xfef785[_0xb0e4('0x1f')]?_[_0xb0e4('0x20')](_0xfef785[_0xb0e4('0x1f')],function(_0x447f41){return{'model':db[_0x447f41[_0xb0e4('0x21')]],'as':_0x447f41['as'],'attributes':_0x447f41[_0xb0e4('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xb0e4('0xd')](function(_0x4e1f2f){logger[_0xb0e4('0xe')]('GetVoiceExtension',_0x2f3809);logger[_0xb0e4('0x11')](_0xb0e4('0x17'),_0x2f3809,JSON['stringify'](_0x4e1f2f));_0x436667(_0x4e1f2f);})[_0xb0e4('0x16')](function(_0xaa76d9){logger[_0xb0e4('0x13')](_0xb0e4('0x17'),_0xaa76d9[_0xb0e4('0x15')],_0x2f3809);_0x459684(_0x54b7ff[_0xb0e4('0x13')](0x1f4,_0xaa76d9['message']));});});};
\ No newline at end of file
index 5157f8e..2772329 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['voiceExtension:','./voiceExtension.events','save','remove','update','emit'];(function(_0x102ea7,_0x1d6fa3){var _0x145e07=function(_0x581ee1){while(--_0x581ee1){_0x102ea7['push'](_0x102ea7['shift']());}};_0x145e07(++_0x1d6fa3);}(_0xabce,0x103));var _0xeabc=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0xabce[_0x433a86];return _0x23000c;};'use strict';var VoiceExtensionEvents=require(_0xeabc('0x0'));var events=[_0xeabc('0x1'),_0xeabc('0x2'),_0xeabc('0x3')];function createListener(_0x49dbcc,_0x5bd1a4){return function(_0x5ebc95){_0x5bd1a4[_0xeabc('0x4')](_0x49dbcc,_0x5ebc95);};}function removeListener(_0x1d9f37,_0x1a88a7){return function(){VoiceExtensionEvents['removeListener'](_0x1d9f37,_0x1a88a7);};}exports['register']=function(_0x1b07a8){for(var _0x52a4d7=0x0,_0x229ba4=events['length'];_0x52a4d7<_0x229ba4;_0x52a4d7++){var _0x3bdc29=events[_0x52a4d7];var _0x9417af=createListener(_0xeabc('0x5')+_0x3bdc29,_0x1b07a8);VoiceExtensionEvents['on'](_0x3bdc29,_0x9417af);}};
\ No newline at end of file
+var _0x7a54=['remove','emit','removeListener','register','length','voiceExtension:','./voiceExtension.events','save'];(function(_0x10401a,_0x5adb6e){var _0x4bd043=function(_0x161702){while(--_0x161702){_0x10401a['push'](_0x10401a['shift']());}};_0x4bd043(++_0x5adb6e);}(_0x7a54,0x106));var _0x47a5=function(_0x231580,_0x5f291d){_0x231580=_0x231580-0x0;var _0x56cfc3=_0x7a54[_0x231580];return _0x56cfc3;};'use strict';var VoiceExtensionEvents=require(_0x47a5('0x0'));var events=[_0x47a5('0x1'),_0x47a5('0x2'),'update'];function createListener(_0x1d33e,_0x4086cd){return function(_0x4880bf){_0x4086cd[_0x47a5('0x3')](_0x1d33e,_0x4880bf);};}function removeListener(_0x11bf85,_0x2a1a7e){return function(){VoiceExtensionEvents[_0x47a5('0x4')](_0x11bf85,_0x2a1a7e);};}exports[_0x47a5('0x5')]=function(_0x545a97){for(var _0x3d5629=0x0,_0x59199c=events[_0x47a5('0x6')];_0x3d5629<_0x59199c;_0x3d5629++){var _0x30e405=events[_0x3d5629];var _0x506eda=createListener(_0x47a5('0x7')+_0x30e405,_0x545a97);VoiceExtensionEvents['on'](_0x30e405,_0x506eda);}};
\ No newline at end of file
index 6dcd1d8..d7c35d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4819=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMail.controller','isAuthenticated','/:id','show','get','/:id/messages','getMessages','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router'];(function(_0x4b3924,_0x432369){var _0x276279=function(_0x133657){while(--_0x133657){_0x4b3924['push'](_0x4b3924['shift']());}};_0x276279(++_0x432369);}(_0x4819,0xcd));var _0x9481=function(_0x2340e2,_0x1627f9){_0x2340e2=_0x2340e2-0x0;var _0x5ced10=_0x4819[_0x2340e2];return _0x5ced10;};'use strict';var multer=require('multer');var util=require(_0x9481('0x0'));var path=require(_0x9481('0x1'));var timeout=require(_0x9481('0x2'));var express=require(_0x9481('0x3'));var router=express[_0x9481('0x4')]();var fs_extra=require(_0x9481('0x5'));var auth=require(_0x9481('0x6'));var interaction=require(_0x9481('0x7'));var config=require(_0x9481('0x8'));var controller=require(_0x9481('0x9'));router['get']('/',auth[_0x9481('0xa')](),controller['index']);router['get'](_0x9481('0xb'),auth[_0x9481('0xa')](),controller[_0x9481('0xc')]);router[_0x9481('0xd')](_0x9481('0xe'),auth['isAuthenticated'](),controller[_0x9481('0xf')]);router['post']('/',auth[_0x9481('0xa')](),controller['create']);router[_0x9481('0x10')](_0x9481('0xb'),auth[_0x9481('0xa')](),controller[_0x9481('0x11')]);router[_0x9481('0x12')](_0x9481('0xb'),auth[_0x9481('0xa')](),controller[_0x9481('0x13')]);module[_0x9481('0x14')]=router;
\ No newline at end of file
+var _0xafc4=['delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','get','isAuthenticated','index','/:id','/:id/messages','getMessages','post','update'];(function(_0x56c316,_0x5e7248){var _0x17d2c4=function(_0x1c90ed){while(--_0x1c90ed){_0x56c316['push'](_0x56c316['shift']());}};_0x17d2c4(++_0x5e7248);}(_0xafc4,0x69));var _0x4afc=function(_0x32fb55,_0x9de6e0){_0x32fb55=_0x32fb55-0x0;var _0x392215=_0xafc4[_0x32fb55];return _0x392215;};'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('./voiceMail.controller');router[_0x4afc('0x6')]('/',auth[_0x4afc('0x7')](),controller[_0x4afc('0x8')]);router[_0x4afc('0x6')](_0x4afc('0x9'),auth[_0x4afc('0x7')](),controller['show']);router[_0x4afc('0x6')](_0x4afc('0xa'),auth[_0x4afc('0x7')](),controller[_0x4afc('0xb')]);router[_0x4afc('0xc')]('/',auth[_0x4afc('0x7')](),controller['create']);router['put'](_0x4afc('0x9'),auth['isAuthenticated'](),controller[_0x4afc('0xd')]);router[_0x4afc('0xe')]('/:id',auth[_0x4afc('0x7')](),controller[_0x4afc('0xf')]);module[_0x4afc('0x10')]=router;
\ No newline at end of file
index de5d768..d709a2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3830=['trim','central','ENUM','yes','INTEGER','VIRTUAL','getDataValue','fullname','\x20-\x20','mailbox','sequelize','exports','STRING','from-voicemail','contest_mailbox','string'];(function(_0x41bf49,_0x3d3c0c){var _0x66b20e=function(_0x448036){while(--_0x448036){_0x41bf49['push'](_0x41bf49['shift']());}};_0x66b20e(++_0x3d3c0c);}(_0x3830,0x11a));var _0x0383=function(_0x395928,_0x51afb0){_0x395928=_0x395928-0x0;var _0x4efda4=_0x3830[_0x395928];return _0x4efda4;};'use strict';var Sequelize=require(_0x0383('0x0'));module[_0x0383('0x1')]={'customer_id':{'type':Sequelize[_0x0383('0x2')]},'context':{'type':Sequelize[_0x0383('0x2')],'defaultValue':_0x0383('0x3'),'unique':_0x0383('0x4')},'mailbox':{'type':Sequelize[_0x0383('0x2')],'defaultValue':'','allowNull':![],'unique':_0x0383('0x4')},'password':{'type':Sequelize['STRING']},'fullname':{'type':Sequelize[_0x0383('0x2')]},'email':{'type':Sequelize[_0x0383('0x2')],'validate':{'isEmail':!![]},'set':function(_0x506ee9){this['setDataValue']('email',typeof _0x506ee9===_0x0383('0x5')&&_0x506ee9[_0x0383('0x6')]()?_0x506ee9[_0x0383('0x6')]():null);}},'pager':{'type':Sequelize['STRING']},'tz':{'type':Sequelize[_0x0383('0x2')],'defaultValue':_0x0383('0x7')},'attach':{'type':Sequelize[_0x0383('0x8')](_0x0383('0x9'),'no'),'defaultValue':_0x0383('0x9'),'allowNull':![]},'saycid':{'type':Sequelize[_0x0383('0x8')](_0x0383('0x9'),'no'),'defaultValue':_0x0383('0x9'),'allowNull':![]},'dialout':{'type':Sequelize[_0x0383('0x2')]},'callback':{'type':Sequelize[_0x0383('0x2')]},'review':{'type':Sequelize[_0x0383('0x8')](_0x0383('0x9'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x0383('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize['ENUM'](_0x0383('0x9'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x0383('0x8')](_0x0383('0x9'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize['ENUM'](_0x0383('0x9'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x0383('0x8')](_0x0383('0x9'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x0383('0x8')]('yes','no'),'defaultValue':_0x0383('0x9'),'allowNull':![]},'forcename':{'type':Sequelize[_0x0383('0x8')](_0x0383('0x9'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x0383('0x8')](_0x0383('0x9'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x0383('0x8')](_0x0383('0x9'),'no'),'defaultValue':_0x0383('0x9'),'allowNull':![]},'stamp':{'type':'TIMESTAMP'},'emailsubject':{'type':Sequelize[_0x0383('0x2')]},'emailbody':{'type':Sequelize[_0x0383('0x2')]},'maxsecs':{'type':Sequelize[_0x0383('0xa')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x0383('0xa')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x0383('0xb')],'get':function(){return this[_0x0383('0xc')](_0x0383('0xd'))+_0x0383('0xe')+this[_0x0383('0xc')](_0x0383('0xf'));}}};
\ No newline at end of file
+var _0x3c84=['string','trim','central','ENUM','yes','TINYINT(4)','INTEGER','getDataValue','\x20-\x20','mailbox','exports','from-voicemail','STRING','contest_mailbox','setDataValue','email'];(function(_0x4a489f,_0x5402ab){var _0x4a4137=function(_0x4e35f3){while(--_0x4e35f3){_0x4a489f['push'](_0x4a489f['shift']());}};_0x4a4137(++_0x5402ab);}(_0x3c84,0xca));var _0x43c8=function(_0x5d2c13,_0x4f6eb6){_0x5d2c13=_0x5d2c13-0x0;var _0x2d0d52=_0x3c84[_0x5d2c13];return _0x2d0d52;};'use strict';var Sequelize=require('sequelize');module[_0x43c8('0x0')]={'customer_id':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING'],'defaultValue':_0x43c8('0x1'),'unique':'contest_mailbox'},'mailbox':{'type':Sequelize[_0x43c8('0x2')],'defaultValue':'','allowNull':![],'unique':_0x43c8('0x3')},'password':{'type':Sequelize[_0x43c8('0x2')]},'fullname':{'type':Sequelize[_0x43c8('0x2')]},'email':{'type':Sequelize[_0x43c8('0x2')],'validate':{'isEmail':!![]},'set':function(_0x367e44){this[_0x43c8('0x4')](_0x43c8('0x5'),typeof _0x367e44===_0x43c8('0x6')&&_0x367e44[_0x43c8('0x7')]()?_0x367e44[_0x43c8('0x7')]():null);}},'pager':{'type':Sequelize[_0x43c8('0x2')]},'tz':{'type':Sequelize[_0x43c8('0x2')],'defaultValue':_0x43c8('0x8')},'attach':{'type':Sequelize[_0x43c8('0x9')](_0x43c8('0xa'),'no'),'defaultValue':_0x43c8('0xa'),'allowNull':![]},'saycid':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0x43c8('0xa'),'allowNull':![]},'dialout':{'type':Sequelize[_0x43c8('0x2')]},'callback':{'type':Sequelize[_0x43c8('0x2')]},'review':{'type':Sequelize[_0x43c8('0x9')]('yes','no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x43c8('0x9')](_0x43c8('0xa'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x43c8('0x9')](_0x43c8('0xa'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x43c8('0x9')](_0x43c8('0xa'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x43c8('0xb'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x43c8('0x9')](_0x43c8('0xa'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x43c8('0x9')]('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize['ENUM'](_0x43c8('0xa'),'no'),'defaultValue':_0x43c8('0xa'),'allowNull':![]},'forcename':{'type':Sequelize[_0x43c8('0x9')]('yes','no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x43c8('0x9')](_0x43c8('0xa'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x43c8('0x9')](_0x43c8('0xa'),'no'),'defaultValue':_0x43c8('0xa'),'allowNull':![]},'stamp':{'type':'TIMESTAMP'},'emailsubject':{'type':Sequelize[_0x43c8('0x2')]},'emailbody':{'type':Sequelize['STRING']},'maxsecs':{'type':Sequelize[_0x43c8('0xc')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x43c8('0xc')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x43c8('0xd')]('fullname')+_0x43c8('0xe')+this[_0x43c8('0xd')](_0x43c8('0xf'));}}};
\ No newline at end of file
index b1891b5..a75884f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc900=['body','params','findOne','VoiceMailMessage','findAndCountAll','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','Voicemails','UserProfileResource','error','name','send','index','map','fieldName','type','key','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','VoiceMail','includeAll','include','findAll','catch','show','rawAttributes','keys','find','user','get','role','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s'];(function(_0x42bdad,_0x12836c){var _0x122626=function(_0x2eb29c){while(--_0x2eb29c){_0x42bdad['push'](_0x42bdad['shift']());}};_0x122626(++_0x12836c);}(_0xc900,0xb3));var _0x0c90=function(_0x5bf19a,_0x596a9a){_0x5bf19a=_0x5bf19a-0x0;var _0x37b9e3=_0xc900[_0x5bf19a];return _0x37b9e3;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x0c90('0x0'));var jsonpatch=require(_0x0c90('0x1'));var rp=require(_0x0c90('0x2'));var moment=require('moment');var BPromise=require(_0x0c90('0x3'));var Mustache=require(_0x0c90('0x4'));var util=require('util');var path=require(_0x0c90('0x5'));var sox=require(_0x0c90('0x6'));var csv=require(_0x0c90('0x7'));var ejs=require(_0x0c90('0x8'));var fs=require('fs');var fs_extra=require(_0x0c90('0x9'));var _=require(_0x0c90('0xa'));var squel=require('squel');var crypto=require(_0x0c90('0xb'));var jsforce=require(_0x0c90('0xc'));var deskjs=require(_0x0c90('0xd'));var toCsv=require(_0x0c90('0x7'));var querystring=require(_0x0c90('0xe'));var Papa=require(_0x0c90('0xf'));var Redis=require(_0x0c90('0x10'));var authService=require(_0x0c90('0x11'));var qs=require(_0x0c90('0x12'));var as=require(_0x0c90('0x13'));var hardwareService=require(_0x0c90('0x14'));var logger=require(_0x0c90('0x15'))(_0x0c90('0x16'));var utils=require('../../config/utils');var config=require(_0x0c90('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x0c90('0x18'))['db'];function respondWithStatusCode(_0x50e7db,_0x459cdb){_0x459cdb=_0x459cdb||0xcc;return function(_0x26fc46){if(_0x26fc46){return _0x50e7db[_0x0c90('0x19')](_0x459cdb);}return _0x50e7db[_0x0c90('0x1a')](_0x459cdb)[_0x0c90('0x1b')]();};}function respondWithResult(_0x59ea8e,_0x467b32){_0x467b32=_0x467b32||0xc8;return function(_0x4451e0){if(_0x4451e0){return _0x59ea8e['status'](_0x467b32)[_0x0c90('0x1c')](_0x4451e0);}};}function respondWithFilteredResult(_0x3a492d,_0x3bd5e8){return function(_0x5bef7d){if(_0x5bef7d){var _0x5daeb7=typeof _0x3bd5e8[_0x0c90('0x1d')]===_0x0c90('0x1e')&&typeof _0x3bd5e8[_0x0c90('0x1f')]===_0x0c90('0x1e');var _0x276b92=_0x5bef7d[_0x0c90('0x20')];var _0x42321a=_0x5daeb7?0x0:_0x3bd5e8['offset'];var _0xc3bb47=_0x5daeb7?_0x5bef7d[_0x0c90('0x20')]:_0x3bd5e8[_0x0c90('0x1d')]+_0x3bd5e8[_0x0c90('0x1f')];var _0x594267;if(_0xc3bb47>=_0x276b92){_0xc3bb47=_0x276b92;_0x594267=0xc8;}else{_0x594267=0xce;}_0x3a492d[_0x0c90('0x1a')](_0x594267);return _0x3a492d[_0x0c90('0x21')](_0x0c90('0x22'),_0x42321a+'-'+_0xc3bb47+'/'+_0x276b92)[_0x0c90('0x1c')](_0x5bef7d);}return null;};}function patchUpdates(_0x315932){return function(_0xc08f54){try{jsonpatch['apply'](_0xc08f54,_0x315932,!![]);}catch(_0x365a42){return BPromise['reject'](_0x365a42);}return _0xc08f54[_0x0c90('0x23')]();};}function saveUpdates(_0x1a021e,_0x47b13c){return function(_0x2a053a){if(_0x2a053a){return _0x2a053a[_0x0c90('0x24')](_0x1a021e)[_0x0c90('0x25')](function(_0x86dee){return _0x86dee;});}return null;};}function removeEntity(_0x212164,_0x3b287c){return function(_0x4dfbc3){if(_0x4dfbc3){return _0x4dfbc3[_0x0c90('0x26')]()[_0x0c90('0x25')](function(){var _0x5695a2=_0x4dfbc3['get']({'plain':!![]});var _0x28d005=_0x0c90('0x27');return db[_0x0c90('0x28')][_0x0c90('0x26')]({'where':{'type':_0x28d005,'resourceId':_0x5695a2['id']}})['then'](function(){return _0x4dfbc3;});})[_0x0c90('0x25')](function(){_0x212164[_0x0c90('0x1a')](0xcc)[_0x0c90('0x1b')]();});}};}function handleEntityNotFound(_0x277d4a,_0x427c2b){return function(_0x114589){if(!_0x114589){_0x277d4a['sendStatus'](0x194);}return _0x114589;};}function handleError(_0x15de68,_0x22a47d){_0x22a47d=_0x22a47d||0x1f4;return function(_0x39f1b2){logger[_0x0c90('0x29')](_0x39f1b2['stack']);if(_0x39f1b2['name']){delete _0x39f1b2[_0x0c90('0x2a')];}_0x15de68[_0x0c90('0x1a')](_0x22a47d)[_0x0c90('0x2b')](_0x39f1b2);};}exports[_0x0c90('0x2c')]=function(_0x119e09,_0x562664){var _0x120136={},_0x50b156={},_0x478002={'count':0x0,'rows':[]};var _0x47a935=_[_0x0c90('0x2d')](db['VoiceMail']['rawAttributes'],function(_0x886634){return{'name':_0x886634[_0x0c90('0x2e')],'type':_0x886634[_0x0c90('0x2f')][_0x0c90('0x30')]};});_0x50b156['model']=_[_0x0c90('0x2d')](_0x47a935,'name');_0x50b156[_0x0c90('0x31')]=_['keys'](_0x119e09[_0x0c90('0x31')]);_0x50b156[_0x0c90('0x32')]=_['intersection'](_0x50b156[_0x0c90('0x33')],_0x50b156[_0x0c90('0x31')]);_0x120136[_0x0c90('0x34')]=_[_0x0c90('0x35')](_0x50b156[_0x0c90('0x33')],qs[_0x0c90('0x36')](_0x119e09[_0x0c90('0x31')][_0x0c90('0x36')]));_0x120136['attributes']=_0x120136[_0x0c90('0x34')][_0x0c90('0x37')]?_0x120136[_0x0c90('0x34')]:_0x50b156[_0x0c90('0x33')];if(!_0x119e09['query'][_0x0c90('0x38')](_0x0c90('0x39'))){_0x120136[_0x0c90('0x1f')]=qs[_0x0c90('0x1f')](_0x119e09[_0x0c90('0x31')][_0x0c90('0x1f')]);_0x120136[_0x0c90('0x1d')]=qs[_0x0c90('0x1d')](_0x119e09['query'][_0x0c90('0x1d')]);}_0x120136[_0x0c90('0x3a')]=qs['sort'](_0x119e09[_0x0c90('0x31')][_0x0c90('0x3b')]);_0x120136[_0x0c90('0x3c')]=qs[_0x0c90('0x32')](_[_0x0c90('0x3d')](_0x119e09['query'],_0x50b156[_0x0c90('0x32')]),_0x47a935);if(_0x119e09[_0x0c90('0x31')][_0x0c90('0x3e')]){_0x120136[_0x0c90('0x3c')]=_[_0x0c90('0x3f')](_0x120136[_0x0c90('0x3c')],{'$or':_[_0x0c90('0x2d')](_0x47a935,function(_0x1695dd){if(_0x1695dd[_0x0c90('0x2f')]!=='VIRTUAL'){var _0x2cd2c2={};_0x2cd2c2[_0x1695dd['name']]={'$like':'%'+_0x119e09[_0x0c90('0x31')]['filter']+'%'};return _0x2cd2c2;}})});}_0x120136=_[_0x0c90('0x3f')]({},_0x120136,_0x119e09[_0x0c90('0x40')]);var _0x49f8b4={'where':_0x120136['where']};return db[_0x0c90('0x41')]['count'](_0x49f8b4)[_0x0c90('0x25')](function(_0x4545bb){_0x478002[_0x0c90('0x20')]=_0x4545bb;if(_0x119e09['query'][_0x0c90('0x42')]){_0x120136[_0x0c90('0x43')]=[{'all':!![]}];}return db[_0x0c90('0x41')][_0x0c90('0x44')](_0x120136);})[_0x0c90('0x25')](function(_0x1184c4){_0x478002['rows']=_0x1184c4;return _0x478002;})[_0x0c90('0x25')](respondWithFilteredResult(_0x562664,_0x120136))[_0x0c90('0x45')](handleError(_0x562664,null));};exports[_0x0c90('0x46')]=function(_0x399115,_0x3c47c9){var _0x15d040={'raw':!![],'where':{'id':_0x399115['params']['id']}},_0x30b9df={};_0x30b9df[_0x0c90('0x33')]=_['keys'](db[_0x0c90('0x41')][_0x0c90('0x47')]);_0x30b9df[_0x0c90('0x31')]=_[_0x0c90('0x48')](_0x399115[_0x0c90('0x31')]);_0x30b9df[_0x0c90('0x32')]=_[_0x0c90('0x35')](_0x30b9df[_0x0c90('0x33')],_0x30b9df[_0x0c90('0x31')]);_0x15d040[_0x0c90('0x34')]=_[_0x0c90('0x35')](_0x30b9df[_0x0c90('0x33')],qs[_0x0c90('0x36')](_0x399115[_0x0c90('0x31')][_0x0c90('0x36')]));_0x15d040['attributes']=_0x15d040[_0x0c90('0x34')][_0x0c90('0x37')]?_0x15d040[_0x0c90('0x34')]:_0x30b9df[_0x0c90('0x33')];if(_0x399115[_0x0c90('0x31')][_0x0c90('0x42')]){_0x15d040[_0x0c90('0x43')]=[{'all':!![]}];}_0x15d040=_[_0x0c90('0x3f')]({},_0x15d040,_0x399115[_0x0c90('0x40')]);return db[_0x0c90('0x41')][_0x0c90('0x49')](_0x15d040)[_0x0c90('0x25')](handleEntityNotFound(_0x3c47c9,null))[_0x0c90('0x25')](respondWithResult(_0x3c47c9,null))[_0x0c90('0x45')](handleError(_0x3c47c9,null));};exports['create']=function(_0x1b4aac,_0x38f492){return db['VoiceMail']['create'](_0x1b4aac['body'],{})[_0x0c90('0x25')](function(_0x1205d0){var _0x460cf9=_0x1b4aac[_0x0c90('0x4a')][_0x0c90('0x4b')]({'plain':!![]});if(!_0x460cf9)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x460cf9[_0x0c90('0x4c')]===_0x0c90('0x4a')){var _0x2b756d=_0x1205d0['get']({'plain':!![]});var _0x119776=_0x0c90('0x27');return db[_0x0c90('0x4d')][_0x0c90('0x49')]({'where':{'name':_0x119776,'userProfileId':_0x460cf9[_0x0c90('0x4e')]},'raw':!![]})[_0x0c90('0x25')](function(_0x42c121){if(_0x42c121&&_0x42c121[_0x0c90('0x4f')]===0x0){return db[_0x0c90('0x28')][_0x0c90('0x50')]({'name':_0x2b756d['name'],'resourceId':_0x2b756d['id'],'type':_0x42c121[_0x0c90('0x2a')],'sectionId':_0x42c121['id']},{})['then'](function(){return _0x1205d0;});}else{return _0x1205d0;}})[_0x0c90('0x45')](function(_0x67539d){logger[_0x0c90('0x29')](_0x0c90('0x51'),_0x67539d);throw _0x67539d;});}return _0x1205d0;})[_0x0c90('0x25')](respondWithResult(_0x38f492,0xc9))[_0x0c90('0x45')](handleError(_0x38f492,null));};exports['update']=function(_0x4930fc,_0x5382d9){if(_0x4930fc['body']['id']){delete _0x4930fc[_0x0c90('0x52')]['id'];}return db[_0x0c90('0x41')][_0x0c90('0x49')]({'where':{'id':_0x4930fc['params']['id']}})[_0x0c90('0x25')](handleEntityNotFound(_0x5382d9,null))[_0x0c90('0x25')](saveUpdates(_0x4930fc['body'],null))[_0x0c90('0x25')](respondWithResult(_0x5382d9,null))['catch'](handleError(_0x5382d9,null));};exports[_0x0c90('0x26')]=function(_0x8951f2,_0x42398b){return db[_0x0c90('0x41')]['find']({'where':{'id':_0x8951f2[_0x0c90('0x53')]['id']}})['then'](handleEntityNotFound(_0x42398b,null))[_0x0c90('0x25')](removeEntity(_0x42398b,null))[_0x0c90('0x45')](handleError(_0x42398b,null));};exports['getMessages']=function(_0x52b437,_0x51c356,_0x221fba){return db[_0x0c90('0x41')][_0x0c90('0x54')]({'where':{'id':_0x52b437[_0x0c90('0x53')]['id']}})[_0x0c90('0x25')](handleEntityNotFound(_0x51c356,null))['then'](function(_0x3bfd01){var _0x25ab13;var _0x5ee971={},_0x3eb725={};_0x3eb725['model']=_[_0x0c90('0x48')](db[_0x0c90('0x55')]['rawAttributes']);_0x3eb725[_0x0c90('0x31')]=_['keys'](_0x52b437['query']);_0x3eb725['filters']=_[_0x0c90('0x35')](_0x3eb725[_0x0c90('0x33')],_0x3eb725[_0x0c90('0x31')]);_0x5ee971[_0x0c90('0x34')]=_['intersection'](_0x3eb725['model'],qs[_0x0c90('0x36')](_0x52b437[_0x0c90('0x31')][_0x0c90('0x36')]));_0x5ee971['attributes']=_0x5ee971[_0x0c90('0x34')][_0x0c90('0x37')]?_0x5ee971[_0x0c90('0x34')]:_0x3eb725['model'];if(!_0x52b437[_0x0c90('0x31')][_0x0c90('0x38')](_0x0c90('0x39'))){_0x5ee971['limit']=qs[_0x0c90('0x1f')](_0x52b437[_0x0c90('0x31')][_0x0c90('0x1f')]);_0x5ee971[_0x0c90('0x1d')]=qs[_0x0c90('0x1d')](_0x52b437[_0x0c90('0x31')][_0x0c90('0x1d')]);}_0x5ee971[_0x0c90('0x3a')]=qs[_0x0c90('0x3b')](_0x52b437['query']['sort']);_0x5ee971[_0x0c90('0x3c')]=qs[_0x0c90('0x32')](_[_0x0c90('0x3d')](_0x52b437[_0x0c90('0x31')],_0x3eb725[_0x0c90('0x32')]));if(_0x52b437[_0x0c90('0x31')][_0x0c90('0x3e')]){_0x5ee971[_0x0c90('0x3c')]=_[_0x0c90('0x3f')](_0x5ee971[_0x0c90('0x3c')],{'$or':_[_0x0c90('0x2d')](_0x5ee971[_0x0c90('0x34')],function(_0x309152){var _0x164d4d={};_0x164d4d[_0x309152]={'$like':'%'+_0x52b437[_0x0c90('0x31')]['filter']+'%'};return _0x164d4d;})});}_0x5ee971[_0x0c90('0x3c')]=_[_0x0c90('0x3f')](_0x5ee971[_0x0c90('0x3c')],{'mailboxuser':_0x3bfd01['mailbox']});_0x5ee971=_['merge']({},_0x5ee971,_0x52b437[_0x0c90('0x40')]);return db['VoiceMailMessage'][_0x0c90('0x56')](_0x5ee971)[_0x0c90('0x25')](respondWithFilteredResult(_0x51c356,_0x5ee971));})['catch'](handleError(_0x51c356,null));};
\ No newline at end of file
+var _0x3266=['create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Voicemails','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getMessages','findOne','nolimit','mailbox','VoiceMailMessage','findAndCountAll','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','crypto','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','json','offset','count','set','Content-Range','save','update','then','destroy','get','error','stack','name','send','index','VoiceMail','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','rawAttributes','length','find'];(function(_0x269e15,_0xb2dc67){var _0x1fe2f5=function(_0x545a23){while(--_0x545a23){_0x269e15['push'](_0x269e15['shift']());}};_0x1fe2f5(++_0xb2dc67);}(_0x3266,0x6a));var _0x6326=function(_0x580647,_0x43d2c3){_0x580647=_0x580647-0x0;var _0x5f0792=_0x3266[_0x580647];return _0x5f0792;};'use strict';var emlformat=require(_0x6326('0x0'));var rimraf=require(_0x6326('0x1'));var zipdir=require(_0x6326('0x2'));var jsonpatch=require(_0x6326('0x3'));var rp=require(_0x6326('0x4'));var moment=require(_0x6326('0x5'));var BPromise=require(_0x6326('0x6'));var Mustache=require(_0x6326('0x7'));var util=require(_0x6326('0x8'));var path=require('path');var sox=require(_0x6326('0x9'));var csv=require('to-csv');var ejs=require(_0x6326('0xa'));var fs=require('fs');var fs_extra=require(_0x6326('0xb'));var _=require(_0x6326('0xc'));var squel=require('squel');var crypto=require(_0x6326('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x6326('0xe'));var toCsv=require(_0x6326('0xf'));var querystring=require(_0x6326('0x10'));var Papa=require(_0x6326('0x11'));var Redis=require(_0x6326('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x6326('0x13'));var as=require(_0x6326('0x14'));var hardwareService=require(_0x6326('0x15'));var logger=require(_0x6326('0x16'))(_0x6326('0x17'));var utils=require(_0x6326('0x18'));var config=require(_0x6326('0x19'));var licenseUtil=require(_0x6326('0x1a'));var db=require(_0x6326('0x1b'))['db'];function respondWithStatusCode(_0x379358,_0x5c07e1){_0x5c07e1=_0x5c07e1||0xcc;return function(_0x5381d0){if(_0x5381d0){return _0x379358[_0x6326('0x1c')](_0x5c07e1);}return _0x379358[_0x6326('0x1d')](_0x5c07e1)['end']();};}function respondWithResult(_0x425878,_0x4caef3){_0x4caef3=_0x4caef3||0xc8;return function(_0x2d2d9b){if(_0x2d2d9b){return _0x425878[_0x6326('0x1d')](_0x4caef3)[_0x6326('0x1e')](_0x2d2d9b);}};}function respondWithFilteredResult(_0x41c352,_0x1ed3a3){return function(_0x2c1879){if(_0x2c1879){var _0x55923a=typeof _0x1ed3a3[_0x6326('0x1f')]==='undefined'&&typeof _0x1ed3a3['limit']==='undefined';var _0x51e7b9=_0x2c1879['count'];var _0x58e960=_0x55923a?0x0:_0x1ed3a3[_0x6326('0x1f')];var _0x1f4c11=_0x55923a?_0x2c1879[_0x6326('0x20')]:_0x1ed3a3['offset']+_0x1ed3a3['limit'];var _0x954ed5;if(_0x1f4c11>=_0x51e7b9){_0x1f4c11=_0x51e7b9;_0x954ed5=0xc8;}else{_0x954ed5=0xce;}_0x41c352[_0x6326('0x1d')](_0x954ed5);return _0x41c352[_0x6326('0x21')](_0x6326('0x22'),_0x58e960+'-'+_0x1f4c11+'/'+_0x51e7b9)[_0x6326('0x1e')](_0x2c1879);}return null;};}function patchUpdates(_0x25957a){return function(_0x21ee7d){try{jsonpatch['apply'](_0x21ee7d,_0x25957a,!![]);}catch(_0x22307f){return BPromise['reject'](_0x22307f);}return _0x21ee7d[_0x6326('0x23')]();};}function saveUpdates(_0x3c6cfa,_0x2482ef){return function(_0x24fb78){if(_0x24fb78){return _0x24fb78[_0x6326('0x24')](_0x3c6cfa)[_0x6326('0x25')](function(_0x225555){return _0x225555;});}return null;};}function removeEntity(_0x429bb0,_0x4781cc){return function(_0x2d0d00){if(_0x2d0d00){return _0x2d0d00[_0x6326('0x26')]()['then'](function(){var _0x72d020=_0x2d0d00[_0x6326('0x27')]({'plain':!![]});var _0x575701='Voicemails';return db['UserProfileResource'][_0x6326('0x26')]({'where':{'type':_0x575701,'resourceId':_0x72d020['id']}})['then'](function(){return _0x2d0d00;});})[_0x6326('0x25')](function(){_0x429bb0[_0x6326('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x15e33d,_0x21ec69){return function(_0xb68fec){if(!_0xb68fec){_0x15e33d[_0x6326('0x1c')](0x194);}return _0xb68fec;};}function handleError(_0x2d2180,_0x45d037){_0x45d037=_0x45d037||0x1f4;return function(_0x40e036){logger[_0x6326('0x28')](_0x40e036[_0x6326('0x29')]);if(_0x40e036[_0x6326('0x2a')]){delete _0x40e036[_0x6326('0x2a')];}_0x2d2180[_0x6326('0x1d')](_0x45d037)[_0x6326('0x2b')](_0x40e036);};}exports[_0x6326('0x2c')]=function(_0x2e0445,_0x20c5ab){var _0x520e57={},_0x2bf5ef={},_0x47303c={'count':0x0,'rows':[]};var _0x1f8982=_['map'](db[_0x6326('0x2d')]['rawAttributes'],function(_0x4e703a){return{'name':_0x4e703a[_0x6326('0x2e')],'type':_0x4e703a[_0x6326('0x2f')][_0x6326('0x30')]};});_0x2bf5ef[_0x6326('0x31')]=_[_0x6326('0x32')](_0x1f8982,_0x6326('0x2a'));_0x2bf5ef[_0x6326('0x33')]=_[_0x6326('0x34')](_0x2e0445[_0x6326('0x33')]);_0x2bf5ef[_0x6326('0x35')]=_[_0x6326('0x36')](_0x2bf5ef[_0x6326('0x31')],_0x2bf5ef['query']);_0x520e57[_0x6326('0x37')]=_[_0x6326('0x36')](_0x2bf5ef['model'],qs[_0x6326('0x38')](_0x2e0445[_0x6326('0x33')][_0x6326('0x38')]));_0x520e57['attributes']=_0x520e57[_0x6326('0x37')]['length']?_0x520e57['attributes']:_0x2bf5ef[_0x6326('0x31')];if(!_0x2e0445[_0x6326('0x33')][_0x6326('0x39')]('nolimit')){_0x520e57[_0x6326('0x3a')]=qs['limit'](_0x2e0445[_0x6326('0x33')]['limit']);_0x520e57[_0x6326('0x1f')]=qs[_0x6326('0x1f')](_0x2e0445[_0x6326('0x33')][_0x6326('0x1f')]);}_0x520e57[_0x6326('0x3b')]=qs[_0x6326('0x3c')](_0x2e0445['query'][_0x6326('0x3c')]);_0x520e57[_0x6326('0x3d')]=qs['filters'](_[_0x6326('0x3e')](_0x2e0445['query'],_0x2bf5ef['filters']),_0x1f8982);if(_0x2e0445[_0x6326('0x33')][_0x6326('0x3f')]){_0x520e57[_0x6326('0x3d')]=_[_0x6326('0x40')](_0x520e57[_0x6326('0x3d')],{'$or':_[_0x6326('0x32')](_0x1f8982,function(_0x5de1c3){if(_0x5de1c3['type']!==_0x6326('0x41')){var _0x5b68af={};_0x5b68af[_0x5de1c3[_0x6326('0x2a')]]={'$like':'%'+_0x2e0445['query'][_0x6326('0x3f')]+'%'};return _0x5b68af;}})});}_0x520e57=_[_0x6326('0x40')]({},_0x520e57,_0x2e0445[_0x6326('0x42')]);var _0x1da798={'where':_0x520e57[_0x6326('0x3d')]};return db[_0x6326('0x2d')][_0x6326('0x20')](_0x1da798)[_0x6326('0x25')](function(_0x3b089b){_0x47303c[_0x6326('0x20')]=_0x3b089b;if(_0x2e0445[_0x6326('0x33')]['includeAll']){_0x520e57[_0x6326('0x43')]=[{'all':!![]}];}return db['VoiceMail'][_0x6326('0x44')](_0x520e57);})[_0x6326('0x25')](function(_0x16fc33){_0x47303c[_0x6326('0x45')]=_0x16fc33;return _0x47303c;})['then'](respondWithFilteredResult(_0x20c5ab,_0x520e57))[_0x6326('0x46')](handleError(_0x20c5ab,null));};exports[_0x6326('0x47')]=function(_0x562d5f,_0x12703d){var _0xe6a992={'raw':!![],'where':{'id':_0x562d5f[_0x6326('0x48')]['id']}},_0x7a5057={};_0x7a5057['model']=_[_0x6326('0x34')](db[_0x6326('0x2d')][_0x6326('0x49')]);_0x7a5057[_0x6326('0x33')]=_[_0x6326('0x34')](_0x562d5f[_0x6326('0x33')]);_0x7a5057[_0x6326('0x35')]=_['intersection'](_0x7a5057[_0x6326('0x31')],_0x7a5057[_0x6326('0x33')]);_0xe6a992[_0x6326('0x37')]=_[_0x6326('0x36')](_0x7a5057['model'],qs[_0x6326('0x38')](_0x562d5f['query'][_0x6326('0x38')]));_0xe6a992[_0x6326('0x37')]=_0xe6a992[_0x6326('0x37')][_0x6326('0x4a')]?_0xe6a992[_0x6326('0x37')]:_0x7a5057['model'];if(_0x562d5f[_0x6326('0x33')]['includeAll']){_0xe6a992['include']=[{'all':!![]}];}_0xe6a992=_[_0x6326('0x40')]({},_0xe6a992,_0x562d5f[_0x6326('0x42')]);return db['VoiceMail'][_0x6326('0x4b')](_0xe6a992)[_0x6326('0x25')](handleEntityNotFound(_0x12703d,null))[_0x6326('0x25')](respondWithResult(_0x12703d,null))[_0x6326('0x46')](handleError(_0x12703d,null));};exports[_0x6326('0x4c')]=function(_0x4f8dc0,_0x4af0ee){return db[_0x6326('0x2d')][_0x6326('0x4c')](_0x4f8dc0[_0x6326('0x4d')],{})[_0x6326('0x25')](function(_0x210a1b){var _0x318d19=_0x4f8dc0[_0x6326('0x4e')]['get']({'plain':!![]});if(!_0x318d19)throw new Error(_0x6326('0x4f'));if(_0x318d19[_0x6326('0x50')]===_0x6326('0x4e')){var _0x3e7674=_0x210a1b[_0x6326('0x27')]({'plain':!![]});var _0x4ff8e6=_0x6326('0x51');return db['UserProfileSection'][_0x6326('0x4b')]({'where':{'name':_0x4ff8e6,'userProfileId':_0x318d19[_0x6326('0x52')]},'raw':!![]})['then'](function(_0x37b045){if(_0x37b045&&_0x37b045['autoAssociation']===0x0){return db[_0x6326('0x53')][_0x6326('0x4c')]({'name':_0x3e7674[_0x6326('0x2a')],'resourceId':_0x3e7674['id'],'type':_0x37b045[_0x6326('0x2a')],'sectionId':_0x37b045['id']},{})['then'](function(){return _0x210a1b;});}else{return _0x210a1b;}})[_0x6326('0x46')](function(_0xbe6b3e){logger['error'](_0x6326('0x54'),_0xbe6b3e);throw _0xbe6b3e;});}return _0x210a1b;})[_0x6326('0x25')](respondWithResult(_0x4af0ee,0xc9))[_0x6326('0x46')](handleError(_0x4af0ee,null));};exports['update']=function(_0x2bece1,_0x2ac64b){if(_0x2bece1['body']['id']){delete _0x2bece1[_0x6326('0x4d')]['id'];}return db['VoiceMail'][_0x6326('0x4b')]({'where':{'id':_0x2bece1[_0x6326('0x48')]['id']}})[_0x6326('0x25')](handleEntityNotFound(_0x2ac64b,null))[_0x6326('0x25')](saveUpdates(_0x2bece1[_0x6326('0x4d')],null))[_0x6326('0x25')](respondWithResult(_0x2ac64b,null))[_0x6326('0x46')](handleError(_0x2ac64b,null));};exports['destroy']=function(_0x51adce,_0x4d4de7){return db[_0x6326('0x2d')]['find']({'where':{'id':_0x51adce[_0x6326('0x48')]['id']}})[_0x6326('0x25')](handleEntityNotFound(_0x4d4de7,null))[_0x6326('0x25')](removeEntity(_0x4d4de7,null))[_0x6326('0x46')](handleError(_0x4d4de7,null));};exports[_0x6326('0x55')]=function(_0x4b5bc6,_0x23bf64,_0x2e4244){return db['VoiceMail'][_0x6326('0x56')]({'where':{'id':_0x4b5bc6[_0x6326('0x48')]['id']}})[_0x6326('0x25')](handleEntityNotFound(_0x23bf64,null))[_0x6326('0x25')](function(_0x45e3d5){var _0x36f2f5;var _0x320d43={},_0x2f624f={};_0x2f624f[_0x6326('0x31')]=_[_0x6326('0x34')](db['VoiceMailMessage'][_0x6326('0x49')]);_0x2f624f[_0x6326('0x33')]=_[_0x6326('0x34')](_0x4b5bc6[_0x6326('0x33')]);_0x2f624f['filters']=_['intersection'](_0x2f624f[_0x6326('0x31')],_0x2f624f[_0x6326('0x33')]);_0x320d43[_0x6326('0x37')]=_[_0x6326('0x36')](_0x2f624f[_0x6326('0x31')],qs['fields'](_0x4b5bc6['query'][_0x6326('0x38')]));_0x320d43[_0x6326('0x37')]=_0x320d43[_0x6326('0x37')][_0x6326('0x4a')]?_0x320d43['attributes']:_0x2f624f[_0x6326('0x31')];if(!_0x4b5bc6[_0x6326('0x33')][_0x6326('0x39')](_0x6326('0x57'))){_0x320d43[_0x6326('0x3a')]=qs[_0x6326('0x3a')](_0x4b5bc6['query'][_0x6326('0x3a')]);_0x320d43['offset']=qs[_0x6326('0x1f')](_0x4b5bc6[_0x6326('0x33')]['offset']);}_0x320d43[_0x6326('0x3b')]=qs[_0x6326('0x3c')](_0x4b5bc6[_0x6326('0x33')][_0x6326('0x3c')]);_0x320d43[_0x6326('0x3d')]=qs[_0x6326('0x35')](_[_0x6326('0x3e')](_0x4b5bc6[_0x6326('0x33')],_0x2f624f[_0x6326('0x35')]));if(_0x4b5bc6[_0x6326('0x33')]['filter']){_0x320d43[_0x6326('0x3d')]=_[_0x6326('0x40')](_0x320d43[_0x6326('0x3d')],{'$or':_[_0x6326('0x32')](_0x320d43[_0x6326('0x37')],function(_0x5599da){var _0x299795={};_0x299795[_0x5599da]={'$like':'%'+_0x4b5bc6[_0x6326('0x33')][_0x6326('0x3f')]+'%'};return _0x299795;})});}_0x320d43[_0x6326('0x3d')]=_[_0x6326('0x40')](_0x320d43['where'],{'mailboxuser':_0x45e3d5[_0x6326('0x58')]});_0x320d43=_['merge']({},_0x320d43,_0x4b5bc6['options']);return db[_0x6326('0x59')][_0x6326('0x5a')](_0x320d43)[_0x6326('0x25')](respondWithFilteredResult(_0x23bf64,_0x320d43));})[_0x6326('0x46')](handleError(_0x23bf64,null));};
\ No newline at end of file
index 6308e92..2c74c76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2b9=['context','lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','define','VoiceMail','voice_voicemail','mailbox_context','mailbox'];(function(_0x261e29,_0x10fffd){var _0x25ef43=function(_0x21b8e7){while(--_0x21b8e7){_0x261e29['push'](_0x261e29['shift']());}};_0x25ef43(++_0x10fffd);}(_0xc2b9,0x17b));var _0x9c2b=function(_0x52c84c,_0x478daa){_0x52c84c=_0x52c84c-0x0;var _0x35517c=_0xc2b9[_0x52c84c];return _0x35517c;};'use strict';var _=require(_0x9c2b('0x0'));var util=require(_0x9c2b('0x1'));var logger=require(_0x9c2b('0x2'))(_0x9c2b('0x3'));var moment=require(_0x9c2b('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x9c2b('0x5'));var rimraf=require(_0x9c2b('0x6'));var config=require(_0x9c2b('0x7'));var attributes=require('./voiceMail.attributes');module['exports']=function(_0x13eeea,_0x46e698){return _0x13eeea[_0x9c2b('0x8')](_0x9c2b('0x9'),attributes,{'tableName':_0x9c2b('0xa'),'paranoid':![],'indexes':[{'name':_0x9c2b('0xb'),'fields':[_0x9c2b('0xc'),_0x9c2b('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2e94=['context','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./voiceMail.attributes','exports','define','VoiceMail','voice_voicemail','mailbox'];(function(_0x4e87f0,_0x5dbc5e){var _0x323eb5=function(_0x36af09){while(--_0x36af09){_0x4e87f0['push'](_0x4e87f0['shift']());}};_0x323eb5(++_0x5dbc5e);}(_0x2e94,0x1b1));var _0x42e9=function(_0xf8677b,_0x5bc4b8){_0xf8677b=_0xf8677b-0x0;var _0x29f9e1=_0x2e94[_0xf8677b];return _0x29f9e1;};'use strict';var _=require(_0x42e9('0x0'));var util=require(_0x42e9('0x1'));var logger=require(_0x42e9('0x2'))(_0x42e9('0x3'));var moment=require(_0x42e9('0x4'));var BPromise=require(_0x42e9('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x42e9('0x6'));var rimraf=require(_0x42e9('0x7'));var config=require(_0x42e9('0x8'));var attributes=require(_0x42e9('0x9'));module[_0x42e9('0xa')]=function(_0x47641d,_0x2d40fd){return _0x47641d[_0x42e9('0xb')](_0x42e9('0xc'),attributes,{'tableName':_0x42e9('0xd'),'paranoid':![],'indexes':[{'name':'mailbox_context','fields':[_0x42e9('0xe'),_0x42e9('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index 4448642..2363576 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48a7=['info','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','VoiceMail,\x20%s,\x20%s','debug','request\x20sent','error','code','message'];(function(_0x272282,_0x2e94a0){var _0xedf511=function(_0x5d1ab6){while(--_0x5d1ab6){_0x272282['push'](_0x272282['shift']());}};_0xedf511(++_0x2e94a0);}(_0x48a7,0x143));var _0x748a=function(_0x2d763e,_0x1e2c87){_0x2d763e=_0x2d763e-0x0;var _0x58cab5=_0x48a7[_0x2d763e];return _0x58cab5;};'use strict';var _=require(_0x748a('0x0'));var util=require('util');var moment=require(_0x748a('0x1'));var BPromise=require(_0x748a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x748a('0x3'));var db=require(_0x748a('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x748a('0x5'))(_0x748a('0x6'));var config=require('../../config/environment');var jayson=require(_0x748a('0x7'));var client=jayson[_0x748a('0x8')][_0x748a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x437007,_0x9b4f5b,_0x1cd4a5){return new BPromise(function(_0x4241a3,_0x504e24){return client[_0x748a('0xa')](_0x437007,_0x1cd4a5)['then'](function(_0x13ce04){logger['info'](_0x748a('0xb'),_0x9b4f5b,'request\x20sent');logger[_0x748a('0xc')]('VoiceMail,\x20%s,\x20%s,\x20%s',_0x9b4f5b,_0x748a('0xd'),JSON['stringify'](_0x13ce04));if(_0x13ce04['error']){if(_0x13ce04[_0x748a('0xe')][_0x748a('0xf')]===0x1f4){logger[_0x748a('0xe')](_0x748a('0xb'),_0x9b4f5b,_0x13ce04[_0x748a('0xe')]['message']);return _0x504e24(_0x13ce04[_0x748a('0xe')][_0x748a('0x10')]);}logger[_0x748a('0xe')](_0x748a('0xb'),_0x9b4f5b,_0x13ce04['error'][_0x748a('0x10')]);return _0x4241a3(_0x13ce04[_0x748a('0xe')][_0x748a('0x10')]);}else{logger[_0x748a('0x11')]('VoiceMail,\x20%s,\x20%s',_0x9b4f5b,_0x748a('0xd'));_0x4241a3(_0x13ce04[_0x748a('0x12')]['message']);}})[_0x748a('0x13')](function(_0x4c1e40){logger[_0x748a('0xe')]('VoiceMail,\x20%s,\x20%s',_0x9b4f5b,_0x4c1e40);_0x504e24(_0x4c1e40);});});}
\ No newline at end of file
+var _0x3649=['debug','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','VoiceMail,\x20%s,\x20%s','request\x20sent'];(function(_0x533824,_0x1030f8){var _0x323aa3=function(_0x17bed2){while(--_0x17bed2){_0x533824['push'](_0x533824['shift']());}};_0x323aa3(++_0x1030f8);}(_0x3649,0x1d5));var _0x9364=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0x3649[_0x13ea00];return _0x1f7347;};'use strict';var _=require('lodash');var util=require(_0x9364('0x0'));var moment=require(_0x9364('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9364('0x2'));var db=require(_0x9364('0x3'))['db'];var utils=require(_0x9364('0x4'));var logger=require(_0x9364('0x5'))('rpc');var config=require(_0x9364('0x6'));var jayson=require(_0x9364('0x7'));var client=jayson[_0x9364('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3fbcdf,_0x1a7061,_0x346892){return new BPromise(function(_0x148374,_0x5c69d2){return client[_0x9364('0x9')](_0x3fbcdf,_0x346892)[_0x9364('0xa')](function(_0x55f1e9){logger[_0x9364('0xb')](_0x9364('0xc'),_0x1a7061,_0x9364('0xd'));logger[_0x9364('0xe')](_0x9364('0xf'),_0x1a7061,_0x9364('0xd'),JSON[_0x9364('0x10')](_0x55f1e9));if(_0x55f1e9[_0x9364('0x11')]){if(_0x55f1e9[_0x9364('0x11')][_0x9364('0x12')]===0x1f4){logger['error'](_0x9364('0xc'),_0x1a7061,_0x55f1e9[_0x9364('0x11')]['message']);return _0x5c69d2(_0x55f1e9[_0x9364('0x11')][_0x9364('0x13')]);}logger[_0x9364('0x11')](_0x9364('0xc'),_0x1a7061,_0x55f1e9[_0x9364('0x11')][_0x9364('0x13')]);return _0x148374(_0x55f1e9['error'][_0x9364('0x13')]);}else{logger[_0x9364('0xb')](_0x9364('0xc'),_0x1a7061,_0x9364('0xd'));_0x148374(_0x55f1e9[_0x9364('0x14')][_0x9364('0x13')]);}})['catch'](function(_0x260bdc){logger['error'](_0x9364('0xc'),_0x1a7061,_0x260bdc);_0x5c69d2(_0x260bdc);});});}
\ No newline at end of file
index ff509b5..22b3506 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d4c=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','post','create','put','update','delete','destroy'];(function(_0x479d98,_0xc9ebc6){var _0x34868b=function(_0x429430){while(--_0x429430){_0x479d98['push'](_0x479d98['shift']());}};_0x34868b(++_0xc9ebc6);}(_0x3d4c,0x169));var _0xc3d4=function(_0x1cc9c0,_0x39b434){_0x1cc9c0=_0x1cc9c0-0x0;var _0x10fb02=_0x3d4c[_0x1cc9c0];return _0x10fb02;};'use strict';var multer=require(_0xc3d4('0x0'));var util=require(_0xc3d4('0x1'));var path=require(_0xc3d4('0x2'));var timeout=require(_0xc3d4('0x3'));var express=require(_0xc3d4('0x4'));var router=express[_0xc3d4('0x5')]();var fs_extra=require(_0xc3d4('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xc3d4('0x7'));var config=require(_0xc3d4('0x8'));var controller=require(_0xc3d4('0x9'));router[_0xc3d4('0xa')]('/',auth[_0xc3d4('0xb')](),controller[_0xc3d4('0xc')]);router[_0xc3d4('0xa')](_0xc3d4('0xd'),auth['isAuthenticated'](),controller[_0xc3d4('0xe')]);router['get'](_0xc3d4('0xf'),auth[_0xc3d4('0xb')](),controller[_0xc3d4('0x10')]);router[_0xc3d4('0x11')]('/',auth[_0xc3d4('0xb')](),controller[_0xc3d4('0x12')]);router[_0xc3d4('0x13')](_0xc3d4('0xd'),auth[_0xc3d4('0xb')](),controller[_0xc3d4('0x14')]);router[_0xc3d4('0x15')](_0xc3d4('0xd'),auth[_0xc3d4('0xb')](),controller[_0xc3d4('0x16')]);module[_0xc3d4('0x17')]=router;
\ No newline at end of file
+var _0xd38f=['express','Router','fs-extra','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','post','put','update','delete','destroy','multer'];(function(_0x262548,_0x15dc38){var _0x4d16aa=function(_0x9d5663){while(--_0x9d5663){_0x262548['push'](_0x262548['shift']());}};_0x4d16aa(++_0x15dc38);}(_0xd38f,0x8f));var _0xfd38=function(_0x5a204b,_0x494f3a){_0x5a204b=_0x5a204b-0x0;var _0xb3a202=_0xd38f[_0x5a204b];return _0xb3a202;};'use strict';var multer=require(_0xfd38('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xfd38('0x1'));var router=express[_0xfd38('0x2')]();var fs_extra=require(_0xfd38('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xfd38('0x4'));var controller=require(_0xfd38('0x5'));router[_0xfd38('0x6')]('/',auth[_0xfd38('0x7')](),controller[_0xfd38('0x8')]);router['get'](_0xfd38('0x9'),auth[_0xfd38('0x7')](),controller[_0xfd38('0xa')]);router['get'](_0xfd38('0xb'),auth[_0xfd38('0x7')](),controller[_0xfd38('0xc')]);router[_0xfd38('0xd')]('/',auth[_0xfd38('0x7')](),controller['create']);router[_0xfd38('0xe')](_0xfd38('0x9'),auth[_0xfd38('0x7')](),controller[_0xfd38('0xf')]);router[_0xfd38('0x10')](_0xfd38('0x9'),auth['isAuthenticated'](),controller[_0xfd38('0x11')]);module['exports']=router;
\ No newline at end of file
index 06936d9..44f9a25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fe6=['VIRTUAL','getDataValue','STRING','BLOB','TIMESTAMP','literal','exports'];(function(_0x57198b,_0x231c46){var _0x15b37a=function(_0x2e8ed4){while(--_0x2e8ed4){_0x57198b['push'](_0x57198b['shift']());}};_0x15b37a(++_0x231c46);}(_0x5fe6,0x141));var _0x65fe=function(_0x3caf7f,_0x2ee0da){_0x3caf7f=_0x3caf7f-0x0;var _0x8fc9b5=_0x5fe6[_0x3caf7f];return _0x8fc9b5;};'use strict';var Sequelize=require('sequelize');module[_0x65fe('0x0')]={'name':{'type':Sequelize[_0x65fe('0x1')],'get':function(_0x40aedf){return this[_0x65fe('0x2')]('id');}},'msgnum':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize['STRING'],'defaultValue':''},'context':{'type':Sequelize[_0x65fe('0x3')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x65fe('0x3')],'defaultValue':''},'callerid':{'type':Sequelize['STRING'],'defaultValue':''},'origtime':{'type':Sequelize[_0x65fe('0x3')],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x65fe('0x3')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x65fe('0x3')],'defaultValue':''},'recording':{'type':Sequelize[_0x65fe('0x4')]('long'),'defaultValue':null},'flag':{'type':Sequelize[_0x65fe('0x3')],'defaultValue':''},'msg_id':{'type':Sequelize['STRING'],'defaultValue':''},'stamp':{'type':_0x65fe('0x5'),'defaultValue':Sequelize[_0x65fe('0x6')]('CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP')}};
\ No newline at end of file
+var _0xaaa0=['TIMESTAMP','literal','sequelize','VIRTUAL','INTEGER','STRING','long'];(function(_0x129e98,_0x4b9778){var _0x187d57=function(_0x40fbd6){while(--_0x40fbd6){_0x129e98['push'](_0x129e98['shift']());}};_0x187d57(++_0x4b9778);}(_0xaaa0,0x1c2));var _0x0aaa=function(_0x15df26,_0x1d8b71){_0x15df26=_0x15df26-0x0;var _0x5c793f=_0xaaa0[_0x15df26];return _0x5c793f;};'use strict';var Sequelize=require(_0x0aaa('0x0'));module['exports']={'name':{'type':Sequelize[_0x0aaa('0x1')],'get':function(_0x960d4d){return this['getDataValue']('id');}},'msgnum':{'type':Sequelize[_0x0aaa('0x2')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x0aaa('0x3')],'defaultValue':''},'context':{'type':Sequelize['STRING'],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x0aaa('0x3')],'defaultValue':''},'callerid':{'type':Sequelize[_0x0aaa('0x3')],'defaultValue':''},'origtime':{'type':Sequelize['STRING'],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x0aaa('0x3')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x0aaa('0x3')],'defaultValue':''},'recording':{'type':Sequelize['BLOB'](_0x0aaa('0x4')),'defaultValue':null},'flag':{'type':Sequelize[_0x0aaa('0x3')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x0aaa('0x3')],'defaultValue':''},'stamp':{'type':_0x0aaa('0x5'),'defaultValue':Sequelize[_0x0aaa('0x6')]('CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP')}};
\ No newline at end of file
index f78df61..b546e7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70a5=['differenceBy','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','where','pick','filters','filter','merge','includeAll','include','rows','catch','show','params','keys','length','options','VoiceMailMessage','find','body','download','msg_id','recording','Sequelize','ValidationError','attachment','Content-Disposition','attachment;\x20filename=\x22','rimraf','zip-dir','moment','mustache','path','to-csv','ejs','lodash','squel','crypto','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','sendStatus','status','json','limit','undefined','offset','count','set','apply','reject','save','update','destroy','then','error','stack','name','index','map','rawAttributes','fieldName','type','model'];(function(_0x3430aa,_0x57cd92){var _0x2ac5c=function(_0x3068dd){while(--_0x3068dd){_0x3430aa['push'](_0x3430aa['shift']());}};_0x2ac5c(++_0x57cd92);}(_0x70a5,0x69));var _0x570a=function(_0x458685,_0x2dab2b){_0x458685=_0x458685-0x0;var _0x1b27e0=_0x70a5[_0x458685];return _0x1b27e0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x570a('0x0'));var zipdir=require(_0x570a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x570a('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x570a('0x3'));var util=require('util');var path=require(_0x570a('0x4'));var sox=require('sox');var csv=require(_0x570a('0x5'));var ejs=require(_0x570a('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x570a('0x7'));var squel=require(_0x570a('0x8'));var crypto=require(_0x570a('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x570a('0x5'));var querystring=require(_0x570a('0xa'));var Papa=require(_0x570a('0xb'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x570a('0xc'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x570a('0xd'));var logger=require('../../config/logger')('api');var utils=require(_0x570a('0xe'));var config=require(_0x570a('0xf'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2c0a93,_0x5bda68){_0x5bda68=_0x5bda68||0xcc;return function(_0x35bf1f){if(_0x35bf1f){return _0x2c0a93[_0x570a('0x10')](_0x5bda68);}return _0x2c0a93[_0x570a('0x11')](_0x5bda68)['end']();};}function respondWithResult(_0x5bfeb0,_0x11b96c){_0x11b96c=_0x11b96c||0xc8;return function(_0x32a008){if(_0x32a008){return _0x5bfeb0[_0x570a('0x11')](_0x11b96c)[_0x570a('0x12')](_0x32a008);}};}function respondWithFilteredResult(_0x548e26,_0x2de827){return function(_0x217602){if(_0x217602){var _0x451cab=typeof _0x2de827['offset']==='undefined'&&typeof _0x2de827[_0x570a('0x13')]===_0x570a('0x14');var _0x1feb18=_0x217602['count'];var _0x4982ab=_0x451cab?0x0:_0x2de827[_0x570a('0x15')];var _0x345f9b=_0x451cab?_0x217602[_0x570a('0x16')]:_0x2de827[_0x570a('0x15')]+_0x2de827[_0x570a('0x13')];var _0x2f1582;if(_0x345f9b>=_0x1feb18){_0x345f9b=_0x1feb18;_0x2f1582=0xc8;}else{_0x2f1582=0xce;}_0x548e26['status'](_0x2f1582);return _0x548e26[_0x570a('0x17')]('Content-Range',_0x4982ab+'-'+_0x345f9b+'/'+_0x1feb18)[_0x570a('0x12')](_0x217602);}return null;};}function patchUpdates(_0x1e052f){return function(_0x25cb40){try{jsonpatch[_0x570a('0x18')](_0x25cb40,_0x1e052f,!![]);}catch(_0x4c8a6d){return BPromise[_0x570a('0x19')](_0x4c8a6d);}return _0x25cb40[_0x570a('0x1a')]();};}function saveUpdates(_0x161311,_0x270faf){return function(_0x3fdb07){if(_0x3fdb07){return _0x3fdb07[_0x570a('0x1b')](_0x161311)['then'](function(_0x5066fc){return _0x5066fc;});}return null;};}function removeEntity(_0xe559fb,_0x15c1f0){return function(_0x3dbf37){if(_0x3dbf37){return _0x3dbf37[_0x570a('0x1c')]()[_0x570a('0x1d')](function(){_0xe559fb[_0x570a('0x11')](0xcc)['end']();});}};}function handleEntityNotFound(_0x896bc9,_0x11ef67){return function(_0x5ecd54){if(!_0x5ecd54){_0x896bc9['sendStatus'](0x194);}return _0x5ecd54;};}function handleError(_0x43ae4a,_0x304e77){_0x304e77=_0x304e77||0x1f4;return function(_0x8f2524){logger[_0x570a('0x1e')](_0x8f2524[_0x570a('0x1f')]);if(_0x8f2524['name']){delete _0x8f2524[_0x570a('0x20')];}_0x43ae4a[_0x570a('0x11')](_0x304e77)['send'](_0x8f2524);};}exports[_0x570a('0x21')]=function(_0x4c229e,_0x2ba3d0){var _0x44b1af={},_0x5f338b={},_0x5e9795={'count':0x0,'rows':[]};var _0x5a39d3=_[_0x570a('0x22')](db['VoiceMailMessage'][_0x570a('0x23')],function(_0x59b68b){return{'name':_0x59b68b[_0x570a('0x24')],'type':_0x59b68b[_0x570a('0x25')]['key']};});_0x5f338b[_0x570a('0x26')]=_[_0x570a('0x27')](_[_0x570a('0x22')](_0x5a39d3,_0x570a('0x20')),[_0x570a('0x20')]);_0x5f338b[_0x570a('0x28')]=_['keys'](_0x4c229e[_0x570a('0x28')]);_0x5f338b['filters']=_[_0x570a('0x29')](_0x5f338b[_0x570a('0x26')],_0x5f338b['query']);_0x44b1af[_0x570a('0x2a')]=_[_0x570a('0x29')](_0x5f338b['model'],qs['fields'](_0x4c229e[_0x570a('0x28')][_0x570a('0x2b')]));_0x44b1af[_0x570a('0x2a')]=_0x44b1af[_0x570a('0x2a')]['length']?_0x44b1af[_0x570a('0x2a')]:_0x5f338b[_0x570a('0x26')];if(!_0x4c229e[_0x570a('0x28')][_0x570a('0x2c')](_0x570a('0x2d'))){_0x44b1af[_0x570a('0x13')]=qs[_0x570a('0x13')](_0x4c229e['query']['limit']);_0x44b1af[_0x570a('0x15')]=qs[_0x570a('0x15')](_0x4c229e['query'][_0x570a('0x15')]);}_0x44b1af[_0x570a('0x2e')]=qs['sort'](_0x4c229e[_0x570a('0x28')]['sort']);_0x44b1af[_0x570a('0x2f')]=qs['filters'](_[_0x570a('0x30')](_0x4c229e[_0x570a('0x28')],_0x5f338b[_0x570a('0x31')]),_0x5a39d3);if(_0x4c229e[_0x570a('0x28')][_0x570a('0x32')]){_0x44b1af[_0x570a('0x2f')]=_[_0x570a('0x33')](_0x44b1af['where'],{'$or':_['map'](_0x5a39d3,function(_0x41244a){if(_0x41244a[_0x570a('0x25')]!=='VIRTUAL'){var _0x256756={};_0x256756[_0x41244a[_0x570a('0x20')]]={'$like':'%'+_0x4c229e[_0x570a('0x28')][_0x570a('0x32')]+'%'};return _0x256756;}})});}_0x44b1af=_[_0x570a('0x33')]({},_0x44b1af,_0x4c229e['options']);var _0x5c9c0d={'where':_0x44b1af[_0x570a('0x2f')]};return db['VoiceMailMessage'][_0x570a('0x16')](_0x5c9c0d)[_0x570a('0x1d')](function(_0x3de957){_0x5e9795['count']=_0x3de957;if(_0x4c229e['query'][_0x570a('0x34')]){_0x44b1af[_0x570a('0x35')]=[{'all':!![]}];}return db['VoiceMailMessage']['findAll'](_0x44b1af);})[_0x570a('0x1d')](function(_0x3e8fbb){_0x5e9795[_0x570a('0x36')]=_0x3e8fbb;return _0x5e9795;})[_0x570a('0x1d')](respondWithFilteredResult(_0x2ba3d0,_0x44b1af))[_0x570a('0x37')](handleError(_0x2ba3d0,null));};exports[_0x570a('0x38')]=function(_0x3c5c6c,_0x1cbad1){var _0x55469f={'raw':!![],'where':{'id':_0x3c5c6c[_0x570a('0x39')]['id']}},_0x12f2a9={};_0x12f2a9[_0x570a('0x26')]=_['keys'](db['VoiceMailMessage'][_0x570a('0x23')]);_0x12f2a9['query']=_[_0x570a('0x3a')](_0x3c5c6c[_0x570a('0x28')]);_0x12f2a9[_0x570a('0x31')]=_['intersection'](_0x12f2a9[_0x570a('0x26')],_0x12f2a9[_0x570a('0x28')]);_0x55469f[_0x570a('0x2a')]=_['intersection'](_0x12f2a9[_0x570a('0x26')],qs['fields'](_0x3c5c6c[_0x570a('0x28')][_0x570a('0x2b')]));_0x55469f[_0x570a('0x2a')]=_0x55469f['attributes'][_0x570a('0x3b')]?_0x55469f[_0x570a('0x2a')]:_0x12f2a9[_0x570a('0x26')];if(_0x3c5c6c[_0x570a('0x28')][_0x570a('0x34')]){_0x55469f[_0x570a('0x35')]=[{'all':!![]}];}_0x55469f=_[_0x570a('0x33')]({},_0x55469f,_0x3c5c6c[_0x570a('0x3c')]);return db[_0x570a('0x3d')][_0x570a('0x3e')](_0x55469f)[_0x570a('0x1d')](handleEntityNotFound(_0x1cbad1,null))[_0x570a('0x1d')](respondWithResult(_0x1cbad1,null))[_0x570a('0x37')](handleError(_0x1cbad1,null));};exports['create']=function(_0xd0c461,_0x58a369){return db['VoiceMailMessage']['create'](_0xd0c461[_0x570a('0x3f')],{})['then'](respondWithResult(_0x58a369,0xc9))['catch'](handleError(_0x58a369,null));};exports[_0x570a('0x1b')]=function(_0x452689,_0x20e77b){if(_0x452689['body']['id']){delete _0x452689[_0x570a('0x3f')]['id'];}return db[_0x570a('0x3d')][_0x570a('0x3e')]({'where':{'id':_0x452689[_0x570a('0x39')]['id']}})[_0x570a('0x1d')](handleEntityNotFound(_0x20e77b,null))[_0x570a('0x1d')](saveUpdates(_0x452689[_0x570a('0x3f')],null))[_0x570a('0x1d')](respondWithResult(_0x20e77b,null))['catch'](handleError(_0x20e77b,null));};exports[_0x570a('0x1c')]=function(_0x10db62,_0x5f4517){return db[_0x570a('0x3d')]['find']({'where':{'id':_0x10db62[_0x570a('0x39')]['id']}})[_0x570a('0x1d')](handleEntityNotFound(_0x5f4517,null))[_0x570a('0x1d')](removeEntity(_0x5f4517,null))[_0x570a('0x37')](handleError(_0x5f4517,null));};exports[_0x570a('0x40')]=function(_0x54f123,_0xb81220,_0x162b3c){return db[_0x570a('0x3d')][_0x570a('0x3e')]({'where':{'id':_0x54f123[_0x570a('0x39')]['id']},'attributes':['id','recording',_0x570a('0x41')]})['then'](handleEntityNotFound(_0xb81220,null))[_0x570a('0x1d')](function(_0x545844){if(_0x545844){if(!_0x545844[_0x570a('0x42')]){throw new db[(_0x570a('0x43'))][(_0x570a('0x44'))]('VoiceMailMessage\x20not\x20found');}var _0x225261={'Content-Type':'audio/wav','Content-Disposition':_0x570a('0x45')};if(_0x545844[_0x570a('0x41')]){_0x225261[_0x570a('0x46')]=_0x570a('0x47')+_0x545844[_0x570a('0x41')]+'.wav\x22';}_0xb81220[_0x570a('0x17')](_0x225261);return _0xb81220['send'](new Buffer(_0x545844[_0x570a('0x42')]));}})['catch'](handleError(_0xb81220,null));};
\ No newline at end of file
+var _0x5d82=['count','set','Content-Range','apply','save','then','destroy','name','send','index','map','VoiceMailMessage','rawAttributes','fieldName','type','key','differenceBy','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','merge','options','includeAll','include','rows','catch','params','find','create','body','update','download','recording','Sequelize','VoiceMailMessage\x20not\x20found','audio/wav','attachment','msg_id','Content-Disposition','attachment;\x20filename=\x22','zip-dir','fast-json-patch','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit'];(function(_0x470ca0,_0x5c6bfe){var _0x4450b6=function(_0x1086c5){while(--_0x1086c5){_0x470ca0['push'](_0x470ca0['shift']());}};_0x4450b6(++_0x5c6bfe);}(_0x5d82,0x11f));var _0x25d8=function(_0x23dc18,_0x39d58c){_0x23dc18=_0x23dc18-0x0;var _0x260497=_0x5d82[_0x23dc18];return _0x260497;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x25d8('0x0'));var jsonpatch=require(_0x25d8('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x25d8('0x2'));var Mustache=require(_0x25d8('0x3'));var util=require(_0x25d8('0x4'));var path=require(_0x25d8('0x5'));var sox=require('sox');var csv=require(_0x25d8('0x6'));var ejs=require(_0x25d8('0x7'));var fs=require('fs');var fs_extra=require(_0x25d8('0x8'));var _=require('lodash');var squel=require(_0x25d8('0x9'));var crypto=require(_0x25d8('0xa'));var jsforce=require(_0x25d8('0xb'));var deskjs=require(_0x25d8('0xc'));var toCsv=require(_0x25d8('0x6'));var querystring=require(_0x25d8('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x25d8('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x25d8('0xf'));var logger=require(_0x25d8('0x10'))(_0x25d8('0x11'));var utils=require(_0x25d8('0x12'));var config=require(_0x25d8('0x13'));var licenseUtil=require(_0x25d8('0x14'));var db=require(_0x25d8('0x15'))['db'];function respondWithStatusCode(_0x14704c,_0x21f3fb){_0x21f3fb=_0x21f3fb||0xcc;return function(_0x20f769){if(_0x20f769){return _0x14704c[_0x25d8('0x16')](_0x21f3fb);}return _0x14704c['status'](_0x21f3fb)[_0x25d8('0x17')]();};}function respondWithResult(_0x149b35,_0x1c9a33){_0x1c9a33=_0x1c9a33||0xc8;return function(_0xa8f51b){if(_0xa8f51b){return _0x149b35[_0x25d8('0x18')](_0x1c9a33)[_0x25d8('0x19')](_0xa8f51b);}};}function respondWithFilteredResult(_0x227fca,_0x569fb4){return function(_0x5d4fea){if(_0x5d4fea){var _0x48a8f4=typeof _0x569fb4[_0x25d8('0x1a')]===_0x25d8('0x1b')&&typeof _0x569fb4[_0x25d8('0x1c')]==='undefined';var _0x3a0f4c=_0x5d4fea[_0x25d8('0x1d')];var _0x1dccad=_0x48a8f4?0x0:_0x569fb4[_0x25d8('0x1a')];var _0x158725=_0x48a8f4?_0x5d4fea[_0x25d8('0x1d')]:_0x569fb4[_0x25d8('0x1a')]+_0x569fb4[_0x25d8('0x1c')];var _0x158a65;if(_0x158725>=_0x3a0f4c){_0x158725=_0x3a0f4c;_0x158a65=0xc8;}else{_0x158a65=0xce;}_0x227fca[_0x25d8('0x18')](_0x158a65);return _0x227fca[_0x25d8('0x1e')](_0x25d8('0x1f'),_0x1dccad+'-'+_0x158725+'/'+_0x3a0f4c)[_0x25d8('0x19')](_0x5d4fea);}return null;};}function patchUpdates(_0x152771){return function(_0x1e420c){try{jsonpatch[_0x25d8('0x20')](_0x1e420c,_0x152771,!![]);}catch(_0x534a2a){return BPromise['reject'](_0x534a2a);}return _0x1e420c[_0x25d8('0x21')]();};}function saveUpdates(_0x706e29,_0x543815){return function(_0x5b8170){if(_0x5b8170){return _0x5b8170['update'](_0x706e29)[_0x25d8('0x22')](function(_0x2fd94c){return _0x2fd94c;});}return null;};}function removeEntity(_0xe5ae44,_0x12dd37){return function(_0x1d9784){if(_0x1d9784){return _0x1d9784[_0x25d8('0x23')]()['then'](function(){_0xe5ae44[_0x25d8('0x18')](0xcc)[_0x25d8('0x17')]();});}};}function handleEntityNotFound(_0x308018,_0x2640d8){return function(_0x16e7ab){if(!_0x16e7ab){_0x308018['sendStatus'](0x194);}return _0x16e7ab;};}function handleError(_0x3e9fa2,_0x299e42){_0x299e42=_0x299e42||0x1f4;return function(_0x719190){logger['error'](_0x719190['stack']);if(_0x719190[_0x25d8('0x24')]){delete _0x719190['name'];}_0x3e9fa2['status'](_0x299e42)[_0x25d8('0x25')](_0x719190);};}exports[_0x25d8('0x26')]=function(_0x541ee9,_0x450598){var _0x529bbb={},_0x1eabba={},_0x26b4fb={'count':0x0,'rows':[]};var _0x1367d3=_[_0x25d8('0x27')](db[_0x25d8('0x28')][_0x25d8('0x29')],function(_0x370e96){return{'name':_0x370e96[_0x25d8('0x2a')],'type':_0x370e96[_0x25d8('0x2b')][_0x25d8('0x2c')]};});_0x1eabba['model']=_[_0x25d8('0x2d')](_[_0x25d8('0x27')](_0x1367d3,_0x25d8('0x24')),[_0x25d8('0x24')]);_0x1eabba[_0x25d8('0x2e')]=_[_0x25d8('0x2f')](_0x541ee9[_0x25d8('0x2e')]);_0x1eabba['filters']=_[_0x25d8('0x30')](_0x1eabba[_0x25d8('0x31')],_0x1eabba[_0x25d8('0x2e')]);_0x529bbb[_0x25d8('0x32')]=_[_0x25d8('0x30')](_0x1eabba[_0x25d8('0x31')],qs[_0x25d8('0x33')](_0x541ee9['query'][_0x25d8('0x33')]));_0x529bbb[_0x25d8('0x32')]=_0x529bbb[_0x25d8('0x32')][_0x25d8('0x34')]?_0x529bbb[_0x25d8('0x32')]:_0x1eabba['model'];if(!_0x541ee9['query'][_0x25d8('0x35')]('nolimit')){_0x529bbb[_0x25d8('0x1c')]=qs[_0x25d8('0x1c')](_0x541ee9[_0x25d8('0x2e')][_0x25d8('0x1c')]);_0x529bbb[_0x25d8('0x1a')]=qs['offset'](_0x541ee9[_0x25d8('0x2e')]['offset']);}_0x529bbb[_0x25d8('0x36')]=qs['sort'](_0x541ee9[_0x25d8('0x2e')][_0x25d8('0x37')]);_0x529bbb[_0x25d8('0x38')]=qs[_0x25d8('0x39')](_[_0x25d8('0x3a')](_0x541ee9[_0x25d8('0x2e')],_0x1eabba[_0x25d8('0x39')]),_0x1367d3);if(_0x541ee9['query']['filter']){_0x529bbb['where']=_['merge'](_0x529bbb[_0x25d8('0x38')],{'$or':_['map'](_0x1367d3,function(_0x16db85){if(_0x16db85[_0x25d8('0x2b')]!=='VIRTUAL'){var _0xcc13d1={};_0xcc13d1[_0x16db85[_0x25d8('0x24')]]={'$like':'%'+_0x541ee9[_0x25d8('0x2e')]['filter']+'%'};return _0xcc13d1;}})});}_0x529bbb=_[_0x25d8('0x3b')]({},_0x529bbb,_0x541ee9[_0x25d8('0x3c')]);var _0x206029={'where':_0x529bbb['where']};return db[_0x25d8('0x28')][_0x25d8('0x1d')](_0x206029)[_0x25d8('0x22')](function(_0x217c30){_0x26b4fb[_0x25d8('0x1d')]=_0x217c30;if(_0x541ee9[_0x25d8('0x2e')][_0x25d8('0x3d')]){_0x529bbb[_0x25d8('0x3e')]=[{'all':!![]}];}return db['VoiceMailMessage']['findAll'](_0x529bbb);})[_0x25d8('0x22')](function(_0x722235){_0x26b4fb[_0x25d8('0x3f')]=_0x722235;return _0x26b4fb;})[_0x25d8('0x22')](respondWithFilteredResult(_0x450598,_0x529bbb))[_0x25d8('0x40')](handleError(_0x450598,null));};exports['show']=function(_0x2ff17a,_0x18e56e){var _0x17c972={'raw':!![],'where':{'id':_0x2ff17a[_0x25d8('0x41')]['id']}},_0x479ec3={};_0x479ec3[_0x25d8('0x31')]=_[_0x25d8('0x2f')](db[_0x25d8('0x28')][_0x25d8('0x29')]);_0x479ec3[_0x25d8('0x2e')]=_[_0x25d8('0x2f')](_0x2ff17a[_0x25d8('0x2e')]);_0x479ec3['filters']=_['intersection'](_0x479ec3[_0x25d8('0x31')],_0x479ec3[_0x25d8('0x2e')]);_0x17c972[_0x25d8('0x32')]=_[_0x25d8('0x30')](_0x479ec3['model'],qs[_0x25d8('0x33')](_0x2ff17a['query']['fields']));_0x17c972[_0x25d8('0x32')]=_0x17c972[_0x25d8('0x32')][_0x25d8('0x34')]?_0x17c972['attributes']:_0x479ec3[_0x25d8('0x31')];if(_0x2ff17a[_0x25d8('0x2e')][_0x25d8('0x3d')]){_0x17c972[_0x25d8('0x3e')]=[{'all':!![]}];}_0x17c972=_['merge']({},_0x17c972,_0x2ff17a['options']);return db[_0x25d8('0x28')][_0x25d8('0x42')](_0x17c972)[_0x25d8('0x22')](handleEntityNotFound(_0x18e56e,null))['then'](respondWithResult(_0x18e56e,null))[_0x25d8('0x40')](handleError(_0x18e56e,null));};exports[_0x25d8('0x43')]=function(_0x2fee64,_0x8914c7){return db[_0x25d8('0x28')][_0x25d8('0x43')](_0x2fee64[_0x25d8('0x44')],{})[_0x25d8('0x22')](respondWithResult(_0x8914c7,0xc9))['catch'](handleError(_0x8914c7,null));};exports[_0x25d8('0x45')]=function(_0xa031d6,_0x2ea379){if(_0xa031d6[_0x25d8('0x44')]['id']){delete _0xa031d6['body']['id'];}return db[_0x25d8('0x28')][_0x25d8('0x42')]({'where':{'id':_0xa031d6[_0x25d8('0x41')]['id']}})['then'](handleEntityNotFound(_0x2ea379,null))[_0x25d8('0x22')](saveUpdates(_0xa031d6[_0x25d8('0x44')],null))[_0x25d8('0x22')](respondWithResult(_0x2ea379,null))[_0x25d8('0x40')](handleError(_0x2ea379,null));};exports[_0x25d8('0x23')]=function(_0x24e079,_0x12e4bb){return db['VoiceMailMessage'][_0x25d8('0x42')]({'where':{'id':_0x24e079[_0x25d8('0x41')]['id']}})['then'](handleEntityNotFound(_0x12e4bb,null))[_0x25d8('0x22')](removeEntity(_0x12e4bb,null))[_0x25d8('0x40')](handleError(_0x12e4bb,null));};exports[_0x25d8('0x46')]=function(_0x4e4f95,_0x1d7390,_0xdef39d){return db[_0x25d8('0x28')][_0x25d8('0x42')]({'where':{'id':_0x4e4f95[_0x25d8('0x41')]['id']},'attributes':['id',_0x25d8('0x47'),'msg_id']})[_0x25d8('0x22')](handleEntityNotFound(_0x1d7390,null))['then'](function(_0x4e08fc){if(_0x4e08fc){if(!_0x4e08fc[_0x25d8('0x47')]){throw new db[(_0x25d8('0x48'))]['ValidationError'](_0x25d8('0x49'));}var _0x3d063b={'Content-Type':_0x25d8('0x4a'),'Content-Disposition':_0x25d8('0x4b')};if(_0x4e08fc[_0x25d8('0x4c')]){_0x3d063b[_0x25d8('0x4d')]=_0x25d8('0x4e')+_0x4e08fc[_0x25d8('0x4c')]+'.wav\x22';}_0x1d7390['set'](_0x3d063b);return _0x1d7390[_0x25d8('0x25')](new Buffer(_0x4e08fc[_0x25d8('0x47')]));}})[_0x25d8('0x40')](handleError(_0x1d7390,null));};
\ No newline at end of file
index 3ec7dca..16bdcde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fff=['exports','VoiceMailMessage','voice_voicemail_messages','dir','lodash','util','../../config/logger','bluebird','../../config/environment','./voiceMailMessage.attributes'];(function(_0x1109bc,_0x2600d5){var _0x272cf9=function(_0x131953){while(--_0x131953){_0x1109bc['push'](_0x1109bc['shift']());}};_0x272cf9(++_0x2600d5);}(_0x5fff,0x176));var _0xf5ff=function(_0x500419,_0x549162){_0x500419=_0x500419-0x0;var _0x241c1a=_0x5fff[_0x500419];return _0x241c1a;};'use strict';var _=require(_0xf5ff('0x0'));var util=require(_0xf5ff('0x1'));var logger=require(_0xf5ff('0x2'))('api');var moment=require('moment');var BPromise=require(_0xf5ff('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xf5ff('0x4'));var attributes=require(_0xf5ff('0x5'));module[_0xf5ff('0x6')]=function(_0x2e8c60,_0x11ef0f){return _0x2e8c60['define'](_0xf5ff('0x7'),attributes,{'tableName':_0xf5ff('0x8'),'paranoid':![],'indexes':[{'name':_0xf5ff('0x9'),'fields':['dir']}],'timestamps':![]});};
\ No newline at end of file
+var _0x8520=['bluebird','path','rimraf','./voiceMailMessage.attributes','exports','VoiceMailMessage','voice_voicemail_messages','dir','lodash','api','moment'];(function(_0xb5e77f,_0x4ec65a){var _0x223ecc=function(_0x566320){while(--_0x566320){_0xb5e77f['push'](_0xb5e77f['shift']());}};_0x223ecc(++_0x4ec65a);}(_0x8520,0x1cb));var _0x0852=function(_0x2af6b6,_0x496ae5){_0x2af6b6=_0x2af6b6-0x0;var _0x2fbbcc=_0x8520[_0x2af6b6];return _0x2fbbcc;};'use strict';var _=require(_0x0852('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x0852('0x1'));var moment=require(_0x0852('0x2'));var BPromise=require(_0x0852('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0852('0x4'));var rimraf=require(_0x0852('0x5'));var config=require('../../config/environment');var attributes=require(_0x0852('0x6'));module[_0x0852('0x7')]=function(_0x532154,_0x13de6e){return _0x532154['define'](_0x0852('0x8'),attributes,{'tableName':_0x0852('0x9'),'paranoid':![],'indexes':[{'name':'dir','fields':[_0x0852('0xa')]}],'timestamps':![]});};
\ No newline at end of file
index 07232a3..7c7cfe5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x057a=['message','VoiceMailMessage,\x20%s,\x20%s','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x057a,0x16a));var _0xa057=function(_0x428ab6,_0x48534a){_0x428ab6=_0x428ab6-0x0;var _0x56bb8f=_0x057a[_0x428ab6];return _0x56bb8f;};'use strict';var _=require(_0xa057('0x0'));var util=require(_0xa057('0x1'));var moment=require(_0xa057('0x2'));var BPromise=require(_0xa057('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa057('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa057('0x5'));var logger=require(_0xa057('0x6'))(_0xa057('0x7'));var config=require(_0xa057('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xa057('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5ab83b,_0x409192,_0x3d14cf){return new BPromise(function(_0x399c0b,_0x1cc433){return client[_0xa057('0xa')](_0x5ab83b,_0x3d14cf)[_0xa057('0xb')](function(_0x22426b){logger[_0xa057('0xc')]('VoiceMailMessage,\x20%s,\x20%s',_0x409192,'request\x20sent');logger[_0xa057('0xd')](_0xa057('0xe'),_0x409192,_0xa057('0xf'),JSON[_0xa057('0x10')](_0x22426b));if(_0x22426b[_0xa057('0x11')]){if(_0x22426b[_0xa057('0x11')]['code']===0x1f4){logger[_0xa057('0x11')]('VoiceMailMessage,\x20%s,\x20%s',_0x409192,_0x22426b[_0xa057('0x11')][_0xa057('0x12')]);return _0x1cc433(_0x22426b[_0xa057('0x11')][_0xa057('0x12')]);}logger[_0xa057('0x11')](_0xa057('0x13'),_0x409192,_0x22426b[_0xa057('0x11')]['message']);return _0x399c0b(_0x22426b[_0xa057('0x11')][_0xa057('0x12')]);}else{logger[_0xa057('0xc')]('VoiceMailMessage,\x20%s,\x20%s',_0x409192,_0xa057('0xf'));_0x399c0b(_0x22426b['result'][_0xa057('0x12')]);}})['catch'](function(_0x51083d){logger[_0xa057('0x11')]('VoiceMailMessage,\x20%s,\x20%s',_0x409192,_0x51083d);_0x1cc433(_0x51083d);});});}
\ No newline at end of file
+var _0xda2b=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceMailMessage,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','ioredis'];(function(_0x64220f,_0x14792a){var _0x500603=function(_0x4d7d03){while(--_0x4d7d03){_0x64220f['push'](_0x64220f['shift']());}};_0x500603(++_0x14792a);}(_0xda2b,0xab));var _0xbda2=function(_0x49efb2,_0x4b9081){_0x49efb2=_0x49efb2-0x0;var _0x2cd91b=_0xda2b[_0x49efb2];return _0x2cd91b;};'use strict';var _=require(_0xbda2('0x0'));var util=require('util');var moment=require(_0xbda2('0x1'));var BPromise=require(_0xbda2('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbda2('0x3'));var db=require(_0xbda2('0x4'))['db'];var utils=require(_0xbda2('0x5'));var logger=require(_0xbda2('0x6'))(_0xbda2('0x7'));var config=require(_0xbda2('0x8'));var jayson=require(_0xbda2('0x9'));var client=jayson[_0xbda2('0xa')][_0xbda2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xe4ff85,_0x450df2,_0x4f1ed6){return new BPromise(function(_0x1feb56,_0x2356d2){return client[_0xbda2('0xc')](_0xe4ff85,_0x4f1ed6)[_0xbda2('0xd')](function(_0x227707){logger[_0xbda2('0xe')]('VoiceMailMessage,\x20%s,\x20%s',_0x450df2,_0xbda2('0xf'));logger[_0xbda2('0x10')](_0xbda2('0x11'),_0x450df2,_0xbda2('0xf'),JSON[_0xbda2('0x12')](_0x227707));if(_0x227707[_0xbda2('0x13')]){if(_0x227707[_0xbda2('0x13')][_0xbda2('0x14')]===0x1f4){logger[_0xbda2('0x13')](_0xbda2('0x15'),_0x450df2,_0x227707[_0xbda2('0x13')][_0xbda2('0x16')]);return _0x2356d2(_0x227707[_0xbda2('0x13')]['message']);}logger[_0xbda2('0x13')](_0xbda2('0x15'),_0x450df2,_0x227707[_0xbda2('0x13')][_0xbda2('0x16')]);return _0x1feb56(_0x227707['error'][_0xbda2('0x16')]);}else{logger['info'](_0xbda2('0x15'),_0x450df2,_0xbda2('0xf'));_0x1feb56(_0x227707[_0xbda2('0x17')]['message']);}})[_0xbda2('0x18')](function(_0x2f59f7){logger[_0xbda2('0x13')]('VoiceMailMessage,\x20%s,\x20%s',_0x450df2,_0x2f59f7);_0x2356d2(_0x2f59f7);});});}
\ No newline at end of file
index eae0e9f..74473d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4db2=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceMusicOnHold.controller','isAuthenticated','show','/:id/sounds','getSounds','create','post','addSound','put','/:id','update','destroy','delete','/:id/sounds/:id2','removeSound','exports','multer','util'];(function(_0x599e0a,_0x3162d9){var _0x3ac3e0=function(_0x4aad77){while(--_0x4aad77){_0x599e0a['push'](_0x599e0a['shift']());}};_0x3ac3e0(++_0x3162d9);}(_0x4db2,0x7b));var _0x24db=function(_0x181dfe,_0xf84557){_0x181dfe=_0x181dfe-0x0;var _0x40c38f=_0x4db2[_0x181dfe];return _0x40c38f;};'use strict';var multer=require(_0x24db('0x0'));var util=require(_0x24db('0x1'));var path=require(_0x24db('0x2'));var timeout=require(_0x24db('0x3'));var express=require(_0x24db('0x4'));var router=express[_0x24db('0x5')]();var fs_extra=require(_0x24db('0x6'));var auth=require(_0x24db('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x24db('0x8'));var controller=require(_0x24db('0x9'));router['get']('/',auth[_0x24db('0xa')](),controller['index']);router['get']('/:id',auth[_0x24db('0xa')](),controller[_0x24db('0xb')]);router['get'](_0x24db('0xc'),auth[_0x24db('0xa')](),controller[_0x24db('0xd')]);router['post']('/',auth[_0x24db('0xa')](),controller[_0x24db('0xe')]);router[_0x24db('0xf')](_0x24db('0xc'),auth[_0x24db('0xa')](),controller[_0x24db('0x10')]);router[_0x24db('0x11')](_0x24db('0x12'),auth[_0x24db('0xa')](),controller[_0x24db('0x13')]);router['delete'](_0x24db('0x12'),auth[_0x24db('0xa')](),controller[_0x24db('0x14')]);router[_0x24db('0x15')](_0x24db('0x16'),auth[_0x24db('0xa')](),controller[_0x24db('0x17')]);module[_0x24db('0x18')]=router;
\ No newline at end of file
+var _0x81f6=['util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','get','isAuthenticated','/:id','show','/:id/sounds','post','create','put','update','delete','destroy','/:id/sounds/:id2','removeSound','exports','multer'];(function(_0x4f2fc1,_0x3e5049){var _0x3944a0=function(_0x3e941b){while(--_0x3e941b){_0x4f2fc1['push'](_0x4f2fc1['shift']());}};_0x3944a0(++_0x3e5049);}(_0x81f6,0xd7));var _0x681f=function(_0x2417b7,_0x390527){_0x2417b7=_0x2417b7-0x0;var _0x2a68ec=_0x81f6[_0x2417b7];return _0x2a68ec;};'use strict';var multer=require(_0x681f('0x0'));var util=require(_0x681f('0x1'));var path=require(_0x681f('0x2'));var timeout=require('connect-timeout');var express=require(_0x681f('0x3'));var router=express[_0x681f('0x4')]();var fs_extra=require(_0x681f('0x5'));var auth=require(_0x681f('0x6'));var interaction=require(_0x681f('0x7'));var config=require(_0x681f('0x8'));var controller=require(_0x681f('0x9'));router[_0x681f('0xa')]('/',auth[_0x681f('0xb')](),controller['index']);router[_0x681f('0xa')](_0x681f('0xc'),auth['isAuthenticated'](),controller[_0x681f('0xd')]);router['get'](_0x681f('0xe'),auth[_0x681f('0xb')](),controller['getSounds']);router[_0x681f('0xf')]('/',auth[_0x681f('0xb')](),controller[_0x681f('0x10')]);router[_0x681f('0xf')](_0x681f('0xe'),auth[_0x681f('0xb')](),controller['addSound']);router[_0x681f('0x11')](_0x681f('0xc'),auth[_0x681f('0xb')](),controller[_0x681f('0x12')]);router[_0x681f('0x13')](_0x681f('0xc'),auth[_0x681f('0xb')](),controller[_0x681f('0x14')]);router['delete'](_0x681f('0x15'),auth[_0x681f('0xb')](),controller[_0x681f('0x16')]);module[_0x681f('0x17')]=router;
\ No newline at end of file
index d7b5a67..f6c26ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6392=['BOOLEAN','sequelize','exports','STRING','name','custom','files','quietmp3nb','quietmp3','mp3','alpha','TIMESTAMP'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x6392,0x181));var _0x2639=function(_0xd4cf1e,_0x1467a6){_0xd4cf1e=_0xd4cf1e-0x0;var _0x1940a9=_0x6392[_0xd4cf1e];return _0x1940a9;};'use strict';var Sequelize=require(_0x2639('0x0'));module[_0x2639('0x1')]={'name':{'type':Sequelize[_0x2639('0x2')],'allowNull':![],'unique':_0x2639('0x3')},'mode':{'type':Sequelize['ENUM'](_0x2639('0x4'),_0x2639('0x5'),'mp3nb',_0x2639('0x6'),_0x2639('0x7'),_0x2639('0x8')),'allowNull':!![],'defaultValue':_0x2639('0x5')},'directory':{'type':Sequelize[_0x2639('0x2')],'allowNull':!![]},'application':{'type':Sequelize[_0x2639('0x2')],'allowNull':!![]},'digit':{'type':Sequelize[_0x2639('0x2')],'allowNull':!![]},'sort':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x2639('0x9')},'format':{'type':Sequelize['STRING'],'allowNull':!![]},'stamp':{'type':_0x2639('0xa')},'defaultEntry':{'type':Sequelize[_0x2639('0xb')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9f49=['custom','files','quietmp3nb','quietmp3','mp3','BOOLEAN','sequelize','exports','STRING','name','ENUM'];(function(_0x33b4a3,_0x13ad6e){var _0x1da22f=function(_0x2ad00a){while(--_0x2ad00a){_0x33b4a3['push'](_0x33b4a3['shift']());}};_0x1da22f(++_0x13ad6e);}(_0x9f49,0x74));var _0x99f4=function(_0xb9568c,_0x47e2b4){_0xb9568c=_0xb9568c-0x0;var _0x19642d=_0x9f49[_0xb9568c];return _0x19642d;};'use strict';var Sequelize=require(_0x99f4('0x0'));module[_0x99f4('0x1')]={'name':{'type':Sequelize[_0x99f4('0x2')],'allowNull':![],'unique':_0x99f4('0x3')},'mode':{'type':Sequelize[_0x99f4('0x4')](_0x99f4('0x5'),_0x99f4('0x6'),'mp3nb',_0x99f4('0x7'),_0x99f4('0x8'),_0x99f4('0x9')),'allowNull':!![],'defaultValue':_0x99f4('0x6')},'directory':{'type':Sequelize['STRING'],'allowNull':!![]},'application':{'type':Sequelize['STRING'],'allowNull':!![]},'digit':{'type':Sequelize[_0x99f4('0x2')],'allowNull':!![]},'sort':{'type':Sequelize[_0x99f4('0x2')],'allowNull':!![],'defaultValue':'alpha'},'format':{'type':Sequelize['STRING'],'allowNull':!![]},'stamp':{'type':'TIMESTAMP'},'defaultEntry':{'type':Sequelize[_0x99f4('0xa')],'defaultValue':0x0}};
\ No newline at end of file
index e482b65..67dd137 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6991=['rawAttributes','fieldName','type','key','query','filters','model','attributes','intersection','fields','length','nolimit','sort','where','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','body','transaction','mode','directory','root','create','files','mkdirSync','0777','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','forEach','unlinkSync','join','rmdirSync','ValidationError','message','addSound','sequelize','Sound','findOne','converted_format','format','basename','save_name','extname','%s.%s','symlinkSync','removeSound','id2','Sequelize','getSounds','order','pick','hasOwnProperty','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','get','MusicOnHolds','UserProfileResource','error','stack','name','send','map','VoiceMusicOnHold'];(function(_0x47a28c,_0x235818){var _0x13f9aa=function(_0xd9788d){while(--_0xd9788d){_0x47a28c['push'](_0x47a28c['shift']());}};_0x13f9aa(++_0x235818);}(_0x6991,0x123));var _0x1699=function(_0x1da04e,_0x31024b){_0x1da04e=_0x1da04e-0x0;var _0xdd8c41=_0x6991[_0x1da04e];return _0xdd8c41;};'use strict';var emlformat=require(_0x1699('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1699('0x1'));var jsonpatch=require(_0x1699('0x2'));var rp=require(_0x1699('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x1699('0x4'));var util=require(_0x1699('0x5'));var path=require(_0x1699('0x6'));var sox=require(_0x1699('0x7'));var csv=require('to-csv');var ejs=require(_0x1699('0x8'));var fs=require('fs');var fs_extra=require(_0x1699('0x9'));var _=require(_0x1699('0xa'));var squel=require('squel');var crypto=require(_0x1699('0xb'));var jsforce=require(_0x1699('0xc'));var deskjs=require(_0x1699('0xd'));var toCsv=require(_0x1699('0xe'));var querystring=require('querystring');var Papa=require(_0x1699('0xf'));var Redis=require(_0x1699('0x10'));var authService=require(_0x1699('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x1699('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1699('0x13'))(_0x1699('0x14'));var utils=require(_0x1699('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2b6fe9,_0x27244c){_0x27244c=_0x27244c||0xcc;return function(_0x4b423c){if(_0x4b423c){return _0x2b6fe9[_0x1699('0x16')](_0x27244c);}return _0x2b6fe9[_0x1699('0x17')](_0x27244c)['end']();};}function respondWithResult(_0x39ab91,_0x248bd0){_0x248bd0=_0x248bd0||0xc8;return function(_0x36ff6d){if(_0x36ff6d){return _0x39ab91[_0x1699('0x17')](_0x248bd0)[_0x1699('0x18')](_0x36ff6d);}};}function respondWithFilteredResult(_0x11c1a3,_0x4abc24){return function(_0x70ad46){if(_0x70ad46){var _0x1fea98=typeof _0x4abc24[_0x1699('0x19')]===_0x1699('0x1a')&&typeof _0x4abc24[_0x1699('0x1b')]===_0x1699('0x1a');var _0x18b3ee=_0x70ad46[_0x1699('0x1c')];var _0x198e4a=_0x1fea98?0x0:_0x4abc24[_0x1699('0x19')];var _0x34a8ae=_0x1fea98?_0x70ad46[_0x1699('0x1c')]:_0x4abc24[_0x1699('0x19')]+_0x4abc24[_0x1699('0x1b')];var _0xbd0c58;if(_0x34a8ae>=_0x18b3ee){_0x34a8ae=_0x18b3ee;_0xbd0c58=0xc8;}else{_0xbd0c58=0xce;}_0x11c1a3['status'](_0xbd0c58);return _0x11c1a3['set'](_0x1699('0x1d'),_0x198e4a+'-'+_0x34a8ae+'/'+_0x18b3ee)[_0x1699('0x18')](_0x70ad46);}return null;};}function patchUpdates(_0x29d5e0){return function(_0x1276f3){try{jsonpatch[_0x1699('0x1e')](_0x1276f3,_0x29d5e0,!![]);}catch(_0x523a6e){return BPromise[_0x1699('0x1f')](_0x523a6e);}return _0x1276f3[_0x1699('0x20')]();};}function saveUpdates(_0x1ffda8,_0x52f921){return function(_0x23b187){if(_0x23b187){return _0x23b187[_0x1699('0x21')](_0x1ffda8)[_0x1699('0x22')](function(_0x1d9f62){return _0x1d9f62;});}return null;};}function removeEntity(_0x1ae777,_0x3c149c){return function(_0x289d4e){if(_0x289d4e){return _0x289d4e[_0x1699('0x23')]()[_0x1699('0x22')](function(){var _0x32063d=_0x289d4e[_0x1699('0x24')]({'plain':!![]});var _0x3994b6=_0x1699('0x25');return db[_0x1699('0x26')][_0x1699('0x23')]({'where':{'type':_0x3994b6,'resourceId':_0x32063d['id']}})[_0x1699('0x22')](function(){return _0x289d4e;});})[_0x1699('0x22')](function(){_0x1ae777[_0x1699('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3c6b9f,_0x369a75){return function(_0x54deb9){if(!_0x54deb9){_0x3c6b9f[_0x1699('0x16')](0x194);}return _0x54deb9;};}function handleError(_0x34bb7d,_0x49718){_0x49718=_0x49718||0x1f4;return function(_0x284677){logger[_0x1699('0x27')](_0x284677[_0x1699('0x28')]);if(_0x284677['name']){delete _0x284677[_0x1699('0x29')];}_0x34bb7d[_0x1699('0x17')](_0x49718)[_0x1699('0x2a')](_0x284677);};}exports['index']=function(_0xbad375,_0x2d3b74){var _0x1efdc1={},_0xc2b2c9={},_0x4e9721={'count':0x0,'rows':[]};var _0x2cd493=_[_0x1699('0x2b')](db[_0x1699('0x2c')][_0x1699('0x2d')],function(_0x2f6b43){return{'name':_0x2f6b43[_0x1699('0x2e')],'type':_0x2f6b43[_0x1699('0x2f')][_0x1699('0x30')]};});_0xc2b2c9['model']=_[_0x1699('0x2b')](_0x2cd493,_0x1699('0x29'));_0xc2b2c9[_0x1699('0x31')]=_['keys'](_0xbad375[_0x1699('0x31')]);_0xc2b2c9[_0x1699('0x32')]=_['intersection'](_0xc2b2c9[_0x1699('0x33')],_0xc2b2c9[_0x1699('0x31')]);_0x1efdc1[_0x1699('0x34')]=_[_0x1699('0x35')](_0xc2b2c9[_0x1699('0x33')],qs[_0x1699('0x36')](_0xbad375[_0x1699('0x31')][_0x1699('0x36')]));_0x1efdc1[_0x1699('0x34')]=_0x1efdc1[_0x1699('0x34')][_0x1699('0x37')]?_0x1efdc1[_0x1699('0x34')]:_0xc2b2c9[_0x1699('0x33')];if(!_0xbad375[_0x1699('0x31')]['hasOwnProperty'](_0x1699('0x38'))){_0x1efdc1[_0x1699('0x1b')]=qs[_0x1699('0x1b')](_0xbad375[_0x1699('0x31')]['limit']);_0x1efdc1[_0x1699('0x19')]=qs[_0x1699('0x19')](_0xbad375[_0x1699('0x31')]['offset']);}_0x1efdc1['order']=qs['sort'](_0xbad375[_0x1699('0x31')][_0x1699('0x39')]);delete _0xbad375[_0x1699('0x31')][_0x1699('0x39')];_0x1efdc1[_0x1699('0x3a')]=qs[_0x1699('0x32')](_['pick'](_0xbad375[_0x1699('0x31')],_0xc2b2c9[_0x1699('0x32')]),_0x2cd493);if(_0xbad375['query'][_0x1699('0x3b')]){_0x1efdc1[_0x1699('0x3a')]=_['merge'](_0x1efdc1['where'],{'$or':_[_0x1699('0x2b')](_0x2cd493,function(_0x3180c4){if(_0x3180c4[_0x1699('0x2f')]!==_0x1699('0x3c')){var _0x591019={};_0x591019[_0x3180c4[_0x1699('0x29')]]={'$like':'%'+_0xbad375[_0x1699('0x31')][_0x1699('0x3b')]+'%'};return _0x591019;}})});}_0x1efdc1=_[_0x1699('0x3d')]({},_0x1efdc1,_0xbad375[_0x1699('0x3e')]);var _0x34219b={'where':_0x1efdc1['where']};return db[_0x1699('0x2c')][_0x1699('0x1c')](_0x34219b)[_0x1699('0x22')](function(_0x5877fe){_0x4e9721[_0x1699('0x1c')]=_0x5877fe;if(_0xbad375[_0x1699('0x31')][_0x1699('0x3f')]){_0x1efdc1[_0x1699('0x40')]=[{'all':!![]}];}return db[_0x1699('0x2c')][_0x1699('0x41')](_0x1efdc1);})['then'](function(_0x2f2f49){_0x4e9721[_0x1699('0x42')]=_0x2f2f49;return _0x4e9721;})[_0x1699('0x22')](respondWithFilteredResult(_0x2d3b74,_0x1efdc1))[_0x1699('0x43')](handleError(_0x2d3b74,null));};exports[_0x1699('0x44')]=function(_0x1d39af,_0x5dd369){var _0x6a0224={'raw':![],'where':{'id':_0x1d39af[_0x1699('0x45')]['id']}},_0x333ea3={};_0x333ea3[_0x1699('0x33')]=_[_0x1699('0x46')](db[_0x1699('0x2c')]['rawAttributes']);_0x333ea3['query']=_['keys'](_0x1d39af[_0x1699('0x31')]);_0x333ea3[_0x1699('0x32')]=_[_0x1699('0x35')](_0x333ea3[_0x1699('0x33')],_0x333ea3[_0x1699('0x31')]);_0x6a0224[_0x1699('0x34')]=_[_0x1699('0x35')](_0x333ea3[_0x1699('0x33')],qs[_0x1699('0x36')](_0x1d39af[_0x1699('0x31')]['fields']));_0x6a0224['attributes']=_0x6a0224[_0x1699('0x34')][_0x1699('0x37')]?_0x6a0224[_0x1699('0x34')]:_0x333ea3['model'];if(_0x1d39af[_0x1699('0x31')][_0x1699('0x3f')]){_0x6a0224['include']=[{'all':!![]}];}_0x6a0224=_[_0x1699('0x3d')]({},_0x6a0224,_0x1d39af[_0x1699('0x3e')]);return db[_0x1699('0x2c')]['find'](_0x6a0224)['then'](handleEntityNotFound(_0x5dd369,null))[_0x1699('0x22')](respondWithResult(_0x5dd369,null))[_0x1699('0x43')](handleError(_0x5dd369,null));};exports['update']=function(_0xa7e45,_0x27e7ab){if(_0xa7e45['body']['id']){delete _0xa7e45[_0x1699('0x47')]['id'];}return db[_0x1699('0x2c')]['find']({'where':{'id':_0xa7e45['params']['id']}})[_0x1699('0x22')](handleEntityNotFound(_0x27e7ab,null))[_0x1699('0x22')](saveUpdates(_0xa7e45[_0x1699('0x47')],null))[_0x1699('0x22')](respondWithResult(_0x27e7ab,null))[_0x1699('0x43')](handleError(_0x27e7ab,null));};exports['create']=function(_0x537790,_0x3c7144,_0x541e32){return db['sequelize'][_0x1699('0x48')](function(_0x22e36d){if(_0x537790[_0x1699('0x47')][_0x1699('0x49')]==='files'){_0x537790[_0x1699('0x47')][_0x1699('0x4a')]=path['join'](config[_0x1699('0x4b')],'server/files/moh',_0x537790[_0x1699('0x47')][_0x1699('0x29')]);}return db[_0x1699('0x2c')][_0x1699('0x4c')](_0x537790[_0x1699('0x47')],{'transaction':_0x22e36d})[_0x1699('0x22')](function(_0x59caac){if(_0x537790[_0x1699('0x47')][_0x1699('0x49')]===_0x1699('0x4d')){fs[_0x1699('0x4e')](_0x59caac['directory'],parseInt(_0x1699('0x4f'),0x8));}var _0x4df9ad=_0x537790[_0x1699('0x50')]['get']({'plain':!![]});if(!_0x4df9ad)throw new Error(_0x1699('0x51'));if(_0x4df9ad[_0x1699('0x52')]==='user'){var _0x4352eb=_0x59caac[_0x1699('0x24')]({'plain':!![]});return db[_0x1699('0x53')][_0x1699('0x54')]({'where':{'name':'MusicOnHolds','userProfileId':_0x4df9ad[_0x1699('0x55')]},'raw':!![]})[_0x1699('0x22')](function(_0x448ce3){if(_0x448ce3&&_0x448ce3[_0x1699('0x56')]===0x0){return db[_0x1699('0x26')][_0x1699('0x4c')]({'name':_0x4352eb[_0x1699('0x29')],'resourceId':_0x4352eb['id'],'type':_0x448ce3['name'],'sectionId':_0x448ce3['id']},{})[_0x1699('0x22')](function(){return _0x59caac;});}else{return _0x59caac;}})[_0x1699('0x43')](function(_0x2b82d0){logger[_0x1699('0x27')](_0x1699('0x57'),_0x2b82d0);});}return _0x59caac;});})[_0x1699('0x22')](respondWithResult(_0x3c7144,0xc9))['catch'](handleError(_0x3c7144,null));};exports['destroy']=function(_0x5742fe,_0x500710,_0x26d503){var _0x5effb9;return db['VoiceMusicOnHold']['find']({'where':{'id':_0x5742fe[_0x1699('0x45')]['id']}})[_0x1699('0x22')](function(_0x4bfd5){if(_0x4bfd5){return db['sequelize'][_0x1699('0x48')](function(_0x2db866){return _0x4bfd5[_0x1699('0x23')]({'transaction':_0x2db866,'raw':!![]})['then'](function(_0x162901){if(_0x162901[_0x1699('0x4a')]){fs['readdirSync'](_0x162901[_0x1699('0x4a')])[_0x1699('0x58')](function(_0x25eb57){fs[_0x1699('0x59')](path[_0x1699('0x5a')](_0x162901[_0x1699('0x4a')],_0x25eb57));});fs[_0x1699('0x5b')](_0x162901[_0x1699('0x4a')]);}return _0x162901;});})['catch'](function(_0x55c4f0){throw new db['Sequelize'][(_0x1699('0x5c'))](_0x55c4f0[_0x1699('0x5d')]);});}})[_0x1699('0x22')](handleEntityNotFound(_0x500710,null))[_0x1699('0x22')](removeEntity(_0x500710,null))['catch'](handleError(_0x500710,null));};exports[_0x1699('0x5e')]=function(_0xa90406,_0x48841b,_0x20f48d){return db[_0x1699('0x5f')][_0x1699('0x48')](function(_0x55755d){var _0x4f5b46;return db[_0x1699('0x2c')][_0x1699('0x54')]({'where':{'id':_0xa90406[_0x1699('0x45')]['id']}})['then'](function(_0x298b80){if(_0x298b80){_0x4f5b46=_0x298b80;return _0x298b80[_0x1699('0x5e')](_0xa90406[_0x1699('0x47')]['id'],{'transaction':_0x55755d});}})[_0x1699('0x22')](function(_0x203f5a){if(_0x203f5a){return db[_0x1699('0x60')][_0x1699('0x61')]({'where':{'id':_0xa90406[_0x1699('0x47')]['id']},'attributes':['id',_0x1699('0x29'),'save_name',_0x1699('0x62'),'createdAt'],'raw':!![]});}})['then'](function(_0x33a7bb){if(_0x33a7bb){var _0x41aa7d=path[_0x1699('0x5a')](config[_0x1699('0x4b')],'server/files/sounds/converted',util[_0x1699('0x63')]('%s.%s',path[_0x1699('0x64')](_0x33a7bb[_0x1699('0x65')],path[_0x1699('0x66')](_0x33a7bb['save_name'])),_0x33a7bb[_0x1699('0x62')]));var _0x275cca=path[_0x1699('0x5a')](config[_0x1699('0x4b')],'server/files/moh',_0x4f5b46['name'],util['format'](_0x1699('0x67'),_0x33a7bb[_0x1699('0x29')],_0x33a7bb['converted_format']));fs[_0x1699('0x68')](_0x41aa7d,_0x275cca);return _0x33a7bb;}})[_0x1699('0x43')](function(_0x19a929){throw new db['Sequelize'][(_0x1699('0x5c'))](_0x19a929[_0x1699('0x5d')]);});})[_0x1699('0x22')](handleEntityNotFound(_0x48841b,null))['then'](respondWithResult(_0x48841b,0xc9))[_0x1699('0x43')](handleError(_0x48841b,null));};exports[_0x1699('0x69')]=function(_0x2ca0e4,_0x5a8bdc,_0xad40f5){return db['sequelize'][_0x1699('0x48')](function(_0x1f9e38){var _0x3dafb2;return db[_0x1699('0x2c')][_0x1699('0x61')]({'where':{'id':_0x2ca0e4[_0x1699('0x45')]['id']}})[_0x1699('0x22')](handleEntityNotFound(_0x5a8bdc,null))['then'](function(_0x266da3){if(_0x266da3){_0x3dafb2=_0x266da3;return _0x266da3['removeSound'](_0x2ca0e4['params'][_0x1699('0x6a')]);}})[_0x1699('0x22')](function(_0x5b3c13){if(_0x5b3c13){return db[_0x1699('0x60')][_0x1699('0x61')]({'where':{'id':_0x2ca0e4[_0x1699('0x45')][_0x1699('0x6a')]},'attributes':['id',_0x1699('0x29'),_0x1699('0x65'),_0x1699('0x62'),'createdAt'],'raw':!![]});}})['then'](function(_0x396764){if(_0x396764){fs[_0x1699('0x59')](path[_0x1699('0x5a')](_0x3dafb2[_0x1699('0x4a')],util[_0x1699('0x63')](_0x1699('0x67'),_0x396764[_0x1699('0x29')],_0x396764[_0x1699('0x62')])));return _0x396764;}})[_0x1699('0x43')](function(_0x371598){throw new db[(_0x1699('0x6b'))][(_0x1699('0x5c'))](_0x371598[_0x1699('0x5d')]);});})[_0x1699('0x22')](handleEntityNotFound(_0x5a8bdc,null))['then'](respondWithStatusCode(_0x5a8bdc,0xcc))[_0x1699('0x43')](handleError(_0x5a8bdc,null));};exports[_0x1699('0x6c')]=function(_0x33860e,_0x18f1fb,_0xcf7a12){var _0x73e77c={};var _0x2693e5={};var _0x19dd1d;var _0xd4ecfb;return db[_0x1699('0x2c')][_0x1699('0x61')]({'where':{'id':_0x33860e[_0x1699('0x45')]['id']}})[_0x1699('0x22')](handleEntityNotFound(_0x18f1fb,null))[_0x1699('0x22')](function(_0x544af3){if(_0x544af3){_0x19dd1d=_0x544af3;_0x2693e5['model']=_[_0x1699('0x46')](db[_0x1699('0x60')][_0x1699('0x2d')]);_0x2693e5[_0x1699('0x31')]=_[_0x1699('0x46')](_0x33860e[_0x1699('0x31')]);_0x2693e5['filters']=_['intersection'](_0x2693e5[_0x1699('0x33')],_0x2693e5['query']);_0x73e77c['attributes']=_[_0x1699('0x35')](_0x2693e5['model'],qs[_0x1699('0x36')](_0x33860e[_0x1699('0x31')][_0x1699('0x36')]));_0x73e77c[_0x1699('0x34')]=_0x73e77c[_0x1699('0x34')][_0x1699('0x37')]?_0x73e77c[_0x1699('0x34')]:_0x2693e5[_0x1699('0x33')];_0x73e77c[_0x1699('0x6d')]=qs['sort'](_0x33860e[_0x1699('0x31')][_0x1699('0x39')]);_0x73e77c[_0x1699('0x3a')]=qs[_0x1699('0x32')](_[_0x1699('0x6e')](_0x33860e['query'],_0x2693e5[_0x1699('0x32')]));if(_0x33860e[_0x1699('0x31')][_0x1699('0x3b')]){_0x73e77c['where']=_[_0x1699('0x3d')](_0x73e77c['where'],{'$or':_[_0x1699('0x2b')](_0x73e77c[_0x1699('0x34')],function(_0x5cbf06){var _0xe641b6={};_0xe641b6[_0x5cbf06]={'$like':'%'+_0x33860e[_0x1699('0x31')][_0x1699('0x3b')]+'%'};return _0xe641b6;})});}_0x73e77c=_[_0x1699('0x3d')]({},_0x73e77c,_0x33860e[_0x1699('0x3e')]);return _0x19dd1d[_0x1699('0x6c')](_0x73e77c);}})['then'](function(_0x2dc2bb){if(_0x2dc2bb){_0xd4ecfb=_0x2dc2bb[_0x1699('0x37')];if(!_0x33860e['query'][_0x1699('0x6f')](_0x1699('0x38'))){_0x73e77c[_0x1699('0x1b')]=qs['limit'](_0x33860e[_0x1699('0x31')]['limit']);_0x73e77c[_0x1699('0x19')]=qs[_0x1699('0x19')](_0x33860e[_0x1699('0x31')][_0x1699('0x19')]);}return _0x19dd1d[_0x1699('0x6c')](_0x73e77c);}})[_0x1699('0x22')](function(_0x497a99){if(_0x497a99){return _0x497a99?{'count':_0xd4ecfb,'rows':_0x497a99}:null;}})['then'](respondWithResult(_0x18f1fb,null))[_0x1699('0x43')](handleError(_0x18f1fb,null));};
\ No newline at end of file
+var _0x8d8f=['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/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','get','UserProfileResource','destroy','error','name','send','index','VoiceMusicOnHold','rawAttributes','key','model','query','keys','intersection','attributes','length','hasOwnProperty','nolimit','sort','where','filters','pick','merge','map','type','filter','options','includeAll','include','findAll','rows','catch','show','params','fields','find','body','sequelize','transaction','mode','files','directory','join','root','create','mkdirSync','0777','user','UserProfileSection','MusicOnHolds','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','unlinkSync','rmdirSync','Sequelize','message','addSound','Sound','findOne','save_name','server/files/sounds/converted','format','%s.%s','basename','converted_format','server/files/moh','symlinkSync','ValidationError','removeSound','id2','createdAt','getSounds','order','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x8d8f,0x6c));var _0xf8d8=function(_0x546be0,_0x3fcd84){_0x546be0=_0x546be0-0x0;var _0x4f64ba=_0x8d8f[_0x546be0];return _0x4f64ba;};'use strict';var emlformat=require(_0xf8d8('0x0'));var rimraf=require(_0xf8d8('0x1'));var zipdir=require(_0xf8d8('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf8d8('0x3'));var moment=require('moment');var BPromise=require(_0xf8d8('0x4'));var Mustache=require(_0xf8d8('0x5'));var util=require('util');var path=require(_0xf8d8('0x6'));var sox=require('sox');var csv=require(_0xf8d8('0x7'));var ejs=require(_0xf8d8('0x8'));var fs=require('fs');var fs_extra=require(_0xf8d8('0x9'));var _=require(_0xf8d8('0xa'));var squel=require(_0xf8d8('0xb'));var crypto=require(_0xf8d8('0xc'));var jsforce=require(_0xf8d8('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xf8d8('0x7'));var querystring=require(_0xf8d8('0xe'));var Papa=require('papaparse');var Redis=require(_0xf8d8('0xf'));var authService=require(_0xf8d8('0x10'));var qs=require(_0xf8d8('0x11'));var as=require(_0xf8d8('0x12'));var hardwareService=require(_0xf8d8('0x13'));var logger=require(_0xf8d8('0x14'))(_0xf8d8('0x15'));var utils=require(_0xf8d8('0x16'));var config=require(_0xf8d8('0x17'));var licenseUtil=require(_0xf8d8('0x18'));var db=require(_0xf8d8('0x19'))['db'];function respondWithStatusCode(_0x3e2773,_0x43865e){_0x43865e=_0x43865e||0xcc;return function(_0x56fbbe){if(_0x56fbbe){return _0x3e2773[_0xf8d8('0x1a')](_0x43865e);}return _0x3e2773['status'](_0x43865e)[_0xf8d8('0x1b')]();};}function respondWithResult(_0x1117b4,_0x226b19){_0x226b19=_0x226b19||0xc8;return function(_0x4e754d){if(_0x4e754d){return _0x1117b4[_0xf8d8('0x1c')](_0x226b19)[_0xf8d8('0x1d')](_0x4e754d);}};}function respondWithFilteredResult(_0xf936b0,_0x200996){return function(_0x363fd0){if(_0x363fd0){var _0x34e99d=typeof _0x200996[_0xf8d8('0x1e')]===_0xf8d8('0x1f')&&typeof _0x200996[_0xf8d8('0x20')]===_0xf8d8('0x1f');var _0x2edd72=_0x363fd0[_0xf8d8('0x21')];var _0x29f434=_0x34e99d?0x0:_0x200996['offset'];var _0x3b45d1=_0x34e99d?_0x363fd0[_0xf8d8('0x21')]:_0x200996['offset']+_0x200996[_0xf8d8('0x20')];var _0x1cb6f7;if(_0x3b45d1>=_0x2edd72){_0x3b45d1=_0x2edd72;_0x1cb6f7=0xc8;}else{_0x1cb6f7=0xce;}_0xf936b0['status'](_0x1cb6f7);return _0xf936b0[_0xf8d8('0x22')](_0xf8d8('0x23'),_0x29f434+'-'+_0x3b45d1+'/'+_0x2edd72)[_0xf8d8('0x1d')](_0x363fd0);}return null;};}function patchUpdates(_0x4ac492){return function(_0x13d49a){try{jsonpatch[_0xf8d8('0x24')](_0x13d49a,_0x4ac492,!![]);}catch(_0x3e0913){return BPromise[_0xf8d8('0x25')](_0x3e0913);}return _0x13d49a['save']();};}function saveUpdates(_0x39fac3,_0x47c6d8){return function(_0x5056d0){if(_0x5056d0){return _0x5056d0[_0xf8d8('0x26')](_0x39fac3)['then'](function(_0x3e856b){return _0x3e856b;});}return null;};}function removeEntity(_0x2dcdf1,_0x13675d){return function(_0x198d96){if(_0x198d96){return _0x198d96['destroy']()[_0xf8d8('0x27')](function(){var _0x147b25=_0x198d96[_0xf8d8('0x28')]({'plain':!![]});var _0x5564e9='MusicOnHolds';return db[_0xf8d8('0x29')][_0xf8d8('0x2a')]({'where':{'type':_0x5564e9,'resourceId':_0x147b25['id']}})[_0xf8d8('0x27')](function(){return _0x198d96;});})[_0xf8d8('0x27')](function(){_0x2dcdf1[_0xf8d8('0x1c')](0xcc)[_0xf8d8('0x1b')]();});}};}function handleEntityNotFound(_0x3603f3,_0x215b25){return function(_0x42787c){if(!_0x42787c){_0x3603f3[_0xf8d8('0x1a')](0x194);}return _0x42787c;};}function handleError(_0x1a73cd,_0x326bf4){_0x326bf4=_0x326bf4||0x1f4;return function(_0x38253b){logger[_0xf8d8('0x2b')](_0x38253b['stack']);if(_0x38253b[_0xf8d8('0x2c')]){delete _0x38253b[_0xf8d8('0x2c')];}_0x1a73cd[_0xf8d8('0x1c')](_0x326bf4)[_0xf8d8('0x2d')](_0x38253b);};}exports[_0xf8d8('0x2e')]=function(_0x1f19a8,_0x315fe5){var _0x51ad7e={},_0x1a1a40={},_0x48c82d={'count':0x0,'rows':[]};var _0x3b56c9=_['map'](db[_0xf8d8('0x2f')][_0xf8d8('0x30')],function(_0x6def48){return{'name':_0x6def48['fieldName'],'type':_0x6def48['type'][_0xf8d8('0x31')]};});_0x1a1a40[_0xf8d8('0x32')]=_['map'](_0x3b56c9,_0xf8d8('0x2c'));_0x1a1a40[_0xf8d8('0x33')]=_[_0xf8d8('0x34')](_0x1f19a8[_0xf8d8('0x33')]);_0x1a1a40['filters']=_[_0xf8d8('0x35')](_0x1a1a40[_0xf8d8('0x32')],_0x1a1a40[_0xf8d8('0x33')]);_0x51ad7e[_0xf8d8('0x36')]=_[_0xf8d8('0x35')](_0x1a1a40[_0xf8d8('0x32')],qs['fields'](_0x1f19a8['query']['fields']));_0x51ad7e[_0xf8d8('0x36')]=_0x51ad7e[_0xf8d8('0x36')][_0xf8d8('0x37')]?_0x51ad7e[_0xf8d8('0x36')]:_0x1a1a40['model'];if(!_0x1f19a8[_0xf8d8('0x33')][_0xf8d8('0x38')](_0xf8d8('0x39'))){_0x51ad7e[_0xf8d8('0x20')]=qs[_0xf8d8('0x20')](_0x1f19a8['query'][_0xf8d8('0x20')]);_0x51ad7e[_0xf8d8('0x1e')]=qs['offset'](_0x1f19a8[_0xf8d8('0x33')][_0xf8d8('0x1e')]);}_0x51ad7e['order']=qs[_0xf8d8('0x3a')](_0x1f19a8[_0xf8d8('0x33')][_0xf8d8('0x3a')]);delete _0x1f19a8['query'][_0xf8d8('0x3a')];_0x51ad7e[_0xf8d8('0x3b')]=qs[_0xf8d8('0x3c')](_[_0xf8d8('0x3d')](_0x1f19a8[_0xf8d8('0x33')],_0x1a1a40[_0xf8d8('0x3c')]),_0x3b56c9);if(_0x1f19a8[_0xf8d8('0x33')]['filter']){_0x51ad7e[_0xf8d8('0x3b')]=_[_0xf8d8('0x3e')](_0x51ad7e[_0xf8d8('0x3b')],{'$or':_[_0xf8d8('0x3f')](_0x3b56c9,function(_0x25f757){if(_0x25f757[_0xf8d8('0x40')]!=='VIRTUAL'){var _0x1c4030={};_0x1c4030[_0x25f757[_0xf8d8('0x2c')]]={'$like':'%'+_0x1f19a8[_0xf8d8('0x33')][_0xf8d8('0x41')]+'%'};return _0x1c4030;}})});}_0x51ad7e=_[_0xf8d8('0x3e')]({},_0x51ad7e,_0x1f19a8[_0xf8d8('0x42')]);var _0x5cdfbc={'where':_0x51ad7e[_0xf8d8('0x3b')]};return db[_0xf8d8('0x2f')][_0xf8d8('0x21')](_0x5cdfbc)[_0xf8d8('0x27')](function(_0x13627a){_0x48c82d[_0xf8d8('0x21')]=_0x13627a;if(_0x1f19a8[_0xf8d8('0x33')][_0xf8d8('0x43')]){_0x51ad7e[_0xf8d8('0x44')]=[{'all':!![]}];}return db[_0xf8d8('0x2f')][_0xf8d8('0x45')](_0x51ad7e);})[_0xf8d8('0x27')](function(_0x495002){_0x48c82d[_0xf8d8('0x46')]=_0x495002;return _0x48c82d;})[_0xf8d8('0x27')](respondWithFilteredResult(_0x315fe5,_0x51ad7e))[_0xf8d8('0x47')](handleError(_0x315fe5,null));};exports[_0xf8d8('0x48')]=function(_0xae29cd,_0x158063){var _0x5e4a9e={'raw':![],'where':{'id':_0xae29cd[_0xf8d8('0x49')]['id']}},_0x33937c={};_0x33937c['model']=_[_0xf8d8('0x34')](db['VoiceMusicOnHold']['rawAttributes']);_0x33937c['query']=_['keys'](_0xae29cd[_0xf8d8('0x33')]);_0x33937c[_0xf8d8('0x3c')]=_[_0xf8d8('0x35')](_0x33937c[_0xf8d8('0x32')],_0x33937c[_0xf8d8('0x33')]);_0x5e4a9e[_0xf8d8('0x36')]=_[_0xf8d8('0x35')](_0x33937c[_0xf8d8('0x32')],qs['fields'](_0xae29cd[_0xf8d8('0x33')][_0xf8d8('0x4a')]));_0x5e4a9e[_0xf8d8('0x36')]=_0x5e4a9e['attributes'][_0xf8d8('0x37')]?_0x5e4a9e[_0xf8d8('0x36')]:_0x33937c['model'];if(_0xae29cd[_0xf8d8('0x33')][_0xf8d8('0x43')]){_0x5e4a9e[_0xf8d8('0x44')]=[{'all':!![]}];}_0x5e4a9e=_['merge']({},_0x5e4a9e,_0xae29cd[_0xf8d8('0x42')]);return db['VoiceMusicOnHold'][_0xf8d8('0x4b')](_0x5e4a9e)[_0xf8d8('0x27')](handleEntityNotFound(_0x158063,null))[_0xf8d8('0x27')](respondWithResult(_0x158063,null))['catch'](handleError(_0x158063,null));};exports['update']=function(_0x41c4c5,_0xc0cca6){if(_0x41c4c5[_0xf8d8('0x4c')]['id']){delete _0x41c4c5[_0xf8d8('0x4c')]['id'];}return db[_0xf8d8('0x2f')][_0xf8d8('0x4b')]({'where':{'id':_0x41c4c5[_0xf8d8('0x49')]['id']}})['then'](handleEntityNotFound(_0xc0cca6,null))[_0xf8d8('0x27')](saveUpdates(_0x41c4c5['body'],null))[_0xf8d8('0x27')](respondWithResult(_0xc0cca6,null))[_0xf8d8('0x47')](handleError(_0xc0cca6,null));};exports['create']=function(_0x35040f,_0x45e885,_0x1360eb){return db[_0xf8d8('0x4d')][_0xf8d8('0x4e')](function(_0x27b22c){if(_0x35040f[_0xf8d8('0x4c')][_0xf8d8('0x4f')]===_0xf8d8('0x50')){_0x35040f[_0xf8d8('0x4c')][_0xf8d8('0x51')]=path[_0xf8d8('0x52')](config[_0xf8d8('0x53')],'server/files/moh',_0x35040f[_0xf8d8('0x4c')]['name']);}return db['VoiceMusicOnHold'][_0xf8d8('0x54')](_0x35040f[_0xf8d8('0x4c')],{'transaction':_0x27b22c})[_0xf8d8('0x27')](function(_0x3612c1){if(_0x35040f[_0xf8d8('0x4c')][_0xf8d8('0x4f')]===_0xf8d8('0x50')){fs[_0xf8d8('0x55')](_0x3612c1[_0xf8d8('0x51')],parseInt(_0xf8d8('0x56'),0x8));}var _0x41b3b8=_0x35040f[_0xf8d8('0x57')][_0xf8d8('0x28')]({'plain':!![]});if(!_0x41b3b8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x41b3b8['role']===_0xf8d8('0x57')){var _0x487001=_0x3612c1[_0xf8d8('0x28')]({'plain':!![]});return db[_0xf8d8('0x58')]['find']({'where':{'name':_0xf8d8('0x59'),'userProfileId':_0x41b3b8[_0xf8d8('0x5a')]},'raw':!![]})['then'](function(_0x503583){if(_0x503583&&_0x503583[_0xf8d8('0x5b')]===0x0){return db[_0xf8d8('0x29')]['create']({'name':_0x487001['name'],'resourceId':_0x487001['id'],'type':_0x503583[_0xf8d8('0x2c')],'sectionId':_0x503583['id']},{})[_0xf8d8('0x27')](function(){return _0x3612c1;});}else{return _0x3612c1;}})[_0xf8d8('0x47')](function(_0x25dd48){logger['error'](_0xf8d8('0x5c'),_0x25dd48);});}return _0x3612c1;});})[_0xf8d8('0x27')](respondWithResult(_0x45e885,0xc9))[_0xf8d8('0x47')](handleError(_0x45e885,null));};exports[_0xf8d8('0x2a')]=function(_0x4ac0ee,_0xef49fd,_0x19970a){var _0x2374bd;return db['VoiceMusicOnHold'][_0xf8d8('0x4b')]({'where':{'id':_0x4ac0ee['params']['id']}})[_0xf8d8('0x27')](function(_0x3f3332){if(_0x3f3332){return db[_0xf8d8('0x4d')][_0xf8d8('0x4e')](function(_0x2ea8a6){return _0x3f3332[_0xf8d8('0x2a')]({'transaction':_0x2ea8a6,'raw':!![]})['then'](function(_0x17ece1){if(_0x17ece1[_0xf8d8('0x51')]){fs['readdirSync'](_0x17ece1[_0xf8d8('0x51')])['forEach'](function(_0x2b6e53){fs[_0xf8d8('0x5d')](path[_0xf8d8('0x52')](_0x17ece1[_0xf8d8('0x51')],_0x2b6e53));});fs[_0xf8d8('0x5e')](_0x17ece1[_0xf8d8('0x51')]);}return _0x17ece1;});})[_0xf8d8('0x47')](function(_0x577d67){throw new db[(_0xf8d8('0x5f'))]['ValidationError'](_0x577d67[_0xf8d8('0x60')]);});}})[_0xf8d8('0x27')](handleEntityNotFound(_0xef49fd,null))[_0xf8d8('0x27')](removeEntity(_0xef49fd,null))[_0xf8d8('0x47')](handleError(_0xef49fd,null));};exports[_0xf8d8('0x61')]=function(_0x3e7886,_0x3ecdc6,_0x544981){return db[_0xf8d8('0x4d')][_0xf8d8('0x4e')](function(_0x350654){var _0x367555;return db[_0xf8d8('0x2f')][_0xf8d8('0x4b')]({'where':{'id':_0x3e7886[_0xf8d8('0x49')]['id']}})[_0xf8d8('0x27')](function(_0x2086cc){if(_0x2086cc){_0x367555=_0x2086cc;return _0x2086cc[_0xf8d8('0x61')](_0x3e7886[_0xf8d8('0x4c')]['id'],{'transaction':_0x350654});}})[_0xf8d8('0x27')](function(_0x78a4d5){if(_0x78a4d5){return db[_0xf8d8('0x62')][_0xf8d8('0x63')]({'where':{'id':_0x3e7886['body']['id']},'attributes':['id','name',_0xf8d8('0x64'),'converted_format','createdAt'],'raw':!![]});}})[_0xf8d8('0x27')](function(_0x25b491){if(_0x25b491){var _0x1e07ed=path['join'](config[_0xf8d8('0x53')],_0xf8d8('0x65'),util[_0xf8d8('0x66')](_0xf8d8('0x67'),path[_0xf8d8('0x68')](_0x25b491['save_name'],path['extname'](_0x25b491[_0xf8d8('0x64')])),_0x25b491[_0xf8d8('0x69')]));var _0x26a2df=path[_0xf8d8('0x52')](config[_0xf8d8('0x53')],_0xf8d8('0x6a'),_0x367555[_0xf8d8('0x2c')],util['format'](_0xf8d8('0x67'),_0x25b491[_0xf8d8('0x2c')],_0x25b491[_0xf8d8('0x69')]));fs[_0xf8d8('0x6b')](_0x1e07ed,_0x26a2df);return _0x25b491;}})[_0xf8d8('0x47')](function(_0x4d4401){throw new db[(_0xf8d8('0x5f'))][(_0xf8d8('0x6c'))](_0x4d4401[_0xf8d8('0x60')]);});})['then'](handleEntityNotFound(_0x3ecdc6,null))['then'](respondWithResult(_0x3ecdc6,0xc9))[_0xf8d8('0x47')](handleError(_0x3ecdc6,null));};exports[_0xf8d8('0x6d')]=function(_0xee82ee,_0x4c3004,_0xd083ef){return db['sequelize'][_0xf8d8('0x4e')](function(_0x1ade6d){var _0x2200ae;return db[_0xf8d8('0x2f')][_0xf8d8('0x63')]({'where':{'id':_0xee82ee[_0xf8d8('0x49')]['id']}})[_0xf8d8('0x27')](handleEntityNotFound(_0x4c3004,null))[_0xf8d8('0x27')](function(_0x224b2c){if(_0x224b2c){_0x2200ae=_0x224b2c;return _0x224b2c['removeSound'](_0xee82ee[_0xf8d8('0x49')]['id2']);}})[_0xf8d8('0x27')](function(_0x4d9c95){if(_0x4d9c95){return db[_0xf8d8('0x62')][_0xf8d8('0x63')]({'where':{'id':_0xee82ee['params'][_0xf8d8('0x6e')]},'attributes':['id',_0xf8d8('0x2c'),_0xf8d8('0x64'),_0xf8d8('0x69'),_0xf8d8('0x6f')],'raw':!![]});}})[_0xf8d8('0x27')](function(_0x3141c3){if(_0x3141c3){fs['unlinkSync'](path[_0xf8d8('0x52')](_0x2200ae[_0xf8d8('0x51')],util[_0xf8d8('0x66')](_0xf8d8('0x67'),_0x3141c3[_0xf8d8('0x2c')],_0x3141c3['converted_format'])));return _0x3141c3;}})['catch'](function(_0x589a3c){throw new db[(_0xf8d8('0x5f'))]['ValidationError'](_0x589a3c['message']);});})[_0xf8d8('0x27')](handleEntityNotFound(_0x4c3004,null))['then'](respondWithStatusCode(_0x4c3004,0xcc))['catch'](handleError(_0x4c3004,null));};exports[_0xf8d8('0x70')]=function(_0x25a00c,_0x3d3366,_0x4f30ba){var _0x4ca872={};var _0x40edb8={};var _0x5afaec;var _0x4f0f6d;return db[_0xf8d8('0x2f')]['findOne']({'where':{'id':_0x25a00c['params']['id']}})[_0xf8d8('0x27')](handleEntityNotFound(_0x3d3366,null))[_0xf8d8('0x27')](function(_0x18c26f){if(_0x18c26f){_0x5afaec=_0x18c26f;_0x40edb8[_0xf8d8('0x32')]=_[_0xf8d8('0x34')](db[_0xf8d8('0x62')]['rawAttributes']);_0x40edb8[_0xf8d8('0x33')]=_[_0xf8d8('0x34')](_0x25a00c[_0xf8d8('0x33')]);_0x40edb8['filters']=_['intersection'](_0x40edb8[_0xf8d8('0x32')],_0x40edb8[_0xf8d8('0x33')]);_0x4ca872['attributes']=_[_0xf8d8('0x35')](_0x40edb8[_0xf8d8('0x32')],qs['fields'](_0x25a00c['query']['fields']));_0x4ca872['attributes']=_0x4ca872[_0xf8d8('0x36')][_0xf8d8('0x37')]?_0x4ca872[_0xf8d8('0x36')]:_0x40edb8['model'];_0x4ca872[_0xf8d8('0x71')]=qs[_0xf8d8('0x3a')](_0x25a00c[_0xf8d8('0x33')][_0xf8d8('0x3a')]);_0x4ca872[_0xf8d8('0x3b')]=qs[_0xf8d8('0x3c')](_['pick'](_0x25a00c['query'],_0x40edb8[_0xf8d8('0x3c')]));if(_0x25a00c[_0xf8d8('0x33')][_0xf8d8('0x41')]){_0x4ca872['where']=_[_0xf8d8('0x3e')](_0x4ca872[_0xf8d8('0x3b')],{'$or':_['map'](_0x4ca872[_0xf8d8('0x36')],function(_0x1fe0ee){var _0x5586e6={};_0x5586e6[_0x1fe0ee]={'$like':'%'+_0x25a00c['query']['filter']+'%'};return _0x5586e6;})});}_0x4ca872=_[_0xf8d8('0x3e')]({},_0x4ca872,_0x25a00c['options']);return _0x5afaec[_0xf8d8('0x70')](_0x4ca872);}})[_0xf8d8('0x27')](function(_0x20b28c){if(_0x20b28c){_0x4f0f6d=_0x20b28c[_0xf8d8('0x37')];if(!_0x25a00c['query'][_0xf8d8('0x38')](_0xf8d8('0x39'))){_0x4ca872[_0xf8d8('0x20')]=qs['limit'](_0x25a00c[_0xf8d8('0x33')][_0xf8d8('0x20')]);_0x4ca872['offset']=qs[_0xf8d8('0x1e')](_0x25a00c[_0xf8d8('0x33')][_0xf8d8('0x1e')]);}return _0x5afaec['getSounds'](_0x4ca872);}})[_0xf8d8('0x27')](function(_0x5c2ce7){if(_0x5c2ce7){return _0x5c2ce7?{'count':_0x4f0f6d,'rows':_0x5c2ce7}:null;}})[_0xf8d8('0x27')](respondWithResult(_0x3d3366,null))[_0xf8d8('0x47')](handleError(_0x3d3366,null));};
\ No newline at end of file
index 57eebdc..b372e66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5da5=['rimraf','../../config/environment','./voiceMusicOnHold.attributes','exports','voice_musiconhold','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x2b4448,_0x5bcc69){var _0xb4b465=function(_0x5ac741){while(--_0x5ac741){_0x2b4448['push'](_0x2b4448['shift']());}};_0xb4b465(++_0x5bcc69);}(_0x5da5,0x119));var _0x55da=function(_0x7c9bf8,_0x23764d){_0x7c9bf8=_0x7c9bf8-0x0;var _0x533693=_0x5da5[_0x7c9bf8];return _0x533693;};'use strict';var _=require(_0x55da('0x0'));var util=require(_0x55da('0x1'));var logger=require(_0x55da('0x2'))(_0x55da('0x3'));var moment=require(_0x55da('0x4'));var BPromise=require('bluebird');var rp=require(_0x55da('0x5'));var fs=require('fs');var path=require(_0x55da('0x6'));var rimraf=require(_0x55da('0x7'));var config=require(_0x55da('0x8'));var attributes=require(_0x55da('0x9'));module[_0x55da('0xa')]=function(_0x82cd50,_0x57fe4d){return _0x82cd50['define']('VoiceMusicOnHold',attributes,{'tableName':_0x55da('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe1dc=['exports','define','VoiceMusicOnHold','voice_musiconhold','lodash','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xe1dc,0x1bc));var _0xce1d=function(_0x406e9f,_0xd158a){_0x406e9f=_0x406e9f-0x0;var _0x51ee30=_0xe1dc[_0x406e9f];return _0x51ee30;};'use strict';var _=require(_0xce1d('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xce1d('0x1'));var moment=require('moment');var BPromise=require(_0xce1d('0x2'));var rp=require(_0xce1d('0x3'));var fs=require('fs');var path=require(_0xce1d('0x4'));var rimraf=require(_0xce1d('0x5'));var config=require(_0xce1d('0x6'));var attributes=require('./voiceMusicOnHold.attributes');module[_0xce1d('0x7')]=function(_0x43c1ce,_0x14add3){return _0x43c1ce[_0xce1d('0x8')](_0xce1d('0x9'),attributes,{'tableName':_0xce1d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f8e13f5..712ea5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x5e7a3d,_0x52fa27){var _0x25f62e=function(_0x3035c1){while(--_0x3035c1){_0x5e7a3d['push'](_0x5e7a3d['shift']());}};_0x25f62e(++_0x52fa27);}(_0xedd9,0xfc));var _0x9edd=function(_0xda54b1,_0x281f8a){_0xda54b1=_0xda54b1-0x0;var _0x590204=_0xedd9[_0xda54b1];return _0x590204;};'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
+var _0xa9e0=['http','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\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(_0xa273dc,_0xce2689){var _0x2f591d=function(_0x592407){while(--_0x592407){_0xa273dc['push'](_0xa273dc['shift']());}};_0x2f591d(++_0xce2689);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0xa9e0[_0x2bf141];return _0x48277b;};'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 ce1673f..eb41203 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f47=['/describe','isAuthenticated','describe','show','/:id/users','getAgents','/:id/teams','getTeams','create','addAgents','post','addTeams','put','/:id','update','delete','removeAgents','removeTeams','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./voicePrefix.controller','get','index'];(function(_0x4dc36a,_0x2079e3){var _0xcaf64=function(_0x47953d){while(--_0x47953d){_0x4dc36a['push'](_0x4dc36a['shift']());}};_0xcaf64(++_0x2079e3);}(_0x3f47,0x10e));var _0x73f4=function(_0x4c1d16,_0x4c8d22){_0x4c1d16=_0x4c1d16-0x0;var _0x1d8d4f=_0x3f47[_0x4c1d16];return _0x1d8d4f;};'use strict';var multer=require(_0x73f4('0x0'));var util=require(_0x73f4('0x1'));var path=require('path');var timeout=require(_0x73f4('0x2'));var express=require('express');var router=express[_0x73f4('0x3')]();var fs_extra=require(_0x73f4('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x73f4('0x5'));var config=require(_0x73f4('0x6'));var controller=require(_0x73f4('0x7'));router[_0x73f4('0x8')]('/',auth['isAuthenticated'](),controller[_0x73f4('0x9')]);router[_0x73f4('0x8')](_0x73f4('0xa'),auth[_0x73f4('0xb')](),controller[_0x73f4('0xc')]);router[_0x73f4('0x8')]('/:id',auth[_0x73f4('0xb')](),controller[_0x73f4('0xd')]);router[_0x73f4('0x8')](_0x73f4('0xe'),auth[_0x73f4('0xb')](),controller[_0x73f4('0xf')]);router[_0x73f4('0x8')](_0x73f4('0x10'),auth[_0x73f4('0xb')](),controller[_0x73f4('0x11')]);router['post']('/',auth['isAuthenticated'](),controller[_0x73f4('0x12')]);router['post'](_0x73f4('0xe'),auth[_0x73f4('0xb')](),controller[_0x73f4('0x13')]);router[_0x73f4('0x14')](_0x73f4('0x10'),auth['isAuthenticated'](),controller[_0x73f4('0x15')]);router[_0x73f4('0x16')](_0x73f4('0x17'),auth[_0x73f4('0xb')](),controller[_0x73f4('0x18')]);router[_0x73f4('0x19')]('/:id',auth[_0x73f4('0xb')](),controller['destroy']);router['delete'](_0x73f4('0xe'),auth[_0x73f4('0xb')](),controller[_0x73f4('0x1a')]);router['delete'](_0x73f4('0x10'),auth[_0x73f4('0xb')](),controller[_0x73f4('0x1b')]);module['exports']=router;
\ No newline at end of file
+var _0x29e0=['../../config/environment','./voicePrefix.controller','index','get','/describe','describe','/:id','isAuthenticated','show','/:id/users','/:id/teams','getTeams','create','post','addAgents','put','update','delete','destroy','removeAgents','removeTeams','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x598188,_0x194d0d){var _0x2fa9fd=function(_0x16d1a1){while(--_0x16d1a1){_0x598188['push'](_0x598188['shift']());}};_0x2fa9fd(++_0x194d0d);}(_0x29e0,0x1c8));var _0x029e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x29e0[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x029e('0x0'));var util=require(_0x029e('0x1'));var path=require(_0x029e('0x2'));var timeout=require(_0x029e('0x3'));var express=require(_0x029e('0x4'));var router=express[_0x029e('0x5')]();var fs_extra=require(_0x029e('0x6'));var auth=require(_0x029e('0x7'));var interaction=require(_0x029e('0x8'));var config=require(_0x029e('0x9'));var controller=require(_0x029e('0xa'));router['get']('/',auth['isAuthenticated'](),controller[_0x029e('0xb')]);router[_0x029e('0xc')](_0x029e('0xd'),auth['isAuthenticated'](),controller[_0x029e('0xe')]);router['get'](_0x029e('0xf'),auth[_0x029e('0x10')](),controller[_0x029e('0x11')]);router[_0x029e('0xc')](_0x029e('0x12'),auth[_0x029e('0x10')](),controller['getAgents']);router[_0x029e('0xc')](_0x029e('0x13'),auth[_0x029e('0x10')](),controller[_0x029e('0x14')]);router['post']('/',auth[_0x029e('0x10')](),controller[_0x029e('0x15')]);router[_0x029e('0x16')](_0x029e('0x12'),auth[_0x029e('0x10')](),controller[_0x029e('0x17')]);router[_0x029e('0x16')](_0x029e('0x13'),auth[_0x029e('0x10')](),controller['addTeams']);router[_0x029e('0x18')]('/:id',auth[_0x029e('0x10')](),controller[_0x029e('0x19')]);router[_0x029e('0x1a')](_0x029e('0xf'),auth[_0x029e('0x10')](),controller[_0x029e('0x1b')]);router[_0x029e('0x1a')]('/:id/users',auth['isAuthenticated'](),controller[_0x029e('0x1c')]);router[_0x029e('0x1a')]('/:id/teams',auth[_0x029e('0x10')](),controller[_0x029e('0x1d')]);module[_0x029e('0x1e')]=router;
\ No newline at end of file
index 5946010..0ac2b68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5954=['STRING','name','VIRTUAL','INTEGER','exports'];(function(_0x468a77,_0x1382be){var _0x2d1c33=function(_0x2f2e83){while(--_0x2f2e83){_0x468a77['push'](_0x468a77['shift']());}};_0x2d1c33(++_0x1382be);}(_0x5954,0x112));var _0x4595=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x5954[_0x4b369d];return _0x571a98;};'use strict';var Sequelize=require('sequelize');module[_0x4595('0x0')]={'name':{'type':Sequelize[_0x4595('0x1')],'allowNull':![],'unique':_0x4595('0x2')},'prefix':{'type':Sequelize[_0x4595('0x3')],'get':function(_0x24cb85){return'system-'+this['getDataValue']('name')+'-';}},'description':{'type':Sequelize[_0x4595('0x1')]},'callerIdAll':{'type':Sequelize['STRING']},'VoiceExtensionId':{'type':Sequelize[_0x4595('0x4')]}};
\ No newline at end of file
+var _0x8ba4=['STRING','sequelize','VIRTUAL','system-','getDataValue'];(function(_0x185678,_0x39c466){var _0x4e1c19=function(_0x2f37ed){while(--_0x2f37ed){_0x185678['push'](_0x185678['shift']());}};_0x4e1c19(++_0x39c466);}(_0x8ba4,0x15a));var _0x48ba=function(_0x2cba09,_0x23ee85){_0x2cba09=_0x2cba09-0x0;var _0x10d084=_0x8ba4[_0x2cba09];return _0x10d084;};'use strict';var Sequelize=require(_0x48ba('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'prefix':{'type':Sequelize[_0x48ba('0x1')],'get':function(_0x27bc9e){return _0x48ba('0x2')+this[_0x48ba('0x3')]('name')+'-';}},'description':{'type':Sequelize[_0x48ba('0x4')]},'callerIdAll':{'type':Sequelize['STRING']},'VoiceExtensionId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 5791dd3..b2257bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea28=['to-csv','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','../../mysqldb','redis','defaults','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','VoicePrefixes','UserProfileResource','error','stack','name','send','index','VoicePrefix','rawAttributes','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','type','VIRTUAL','filter','includeAll','include','findAll','catch','show','params','merge','options','find','describe','create','sequelize','VoiceExtensionId','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','exten','app','Voice\x20Prefix\x20Extension','priority','appdata','prefix','Voice\x20Prefix','VoiceExtension','VoicePrefixId','Extensions\x20creation\x20failed','push','Set','callerIdAll','PREFIX-CALLERIDALL=','NoOp','No\x20callerid\x20available','goto','charAt','update','system-','transaction','findById','addAgents','body','ids','omit','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','findOne','User','getTeams','Team','addTeams','Agents','voicePause','interface','each','TeamVoicePrefix','UserVoicePrefix','findOrCreate','forEach','removeTeams','select','field','tq.TeamId','from','team_has_voice_prefixes','join','user_has_teams','VoicePrefixId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','isEmpty','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox'];(function(_0x409682,_0x370090){var _0x1ee901=function(_0xe93c56){while(--_0xe93c56){_0x409682['push'](_0x409682['shift']());}};_0x1ee901(++_0x370090);}(_0xea28,0x13a));var _0x8ea2=function(_0x4bace6,_0x15b71d){_0x4bace6=_0x4bace6-0x0;var _0x154439=_0xea28[_0x4bace6];return _0x154439;};'use strict';var emlformat=require(_0x8ea2('0x0'));var rimraf=require(_0x8ea2('0x1'));var zipdir=require(_0x8ea2('0x2'));var jsonpatch=require(_0x8ea2('0x3'));var rp=require(_0x8ea2('0x4'));var moment=require(_0x8ea2('0x5'));var BPromise=require(_0x8ea2('0x6'));var Mustache=require(_0x8ea2('0x7'));var util=require('util');var path=require(_0x8ea2('0x8'));var sox=require(_0x8ea2('0x9'));var csv=require(_0x8ea2('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8ea2('0xb'));var _=require(_0x8ea2('0xc'));var squel=require(_0x8ea2('0xd'));var crypto=require(_0x8ea2('0xe'));var jsforce=require(_0x8ea2('0xf'));var deskjs=require(_0x8ea2('0x10'));var toCsv=require(_0x8ea2('0xa'));var querystring=require(_0x8ea2('0x11'));var Papa=require(_0x8ea2('0x12'));var Redis=require(_0x8ea2('0x13'));var authService=require(_0x8ea2('0x14'));var qs=require(_0x8ea2('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x8ea2('0x16'))(_0x8ea2('0x17'));var utils=require(_0x8ea2('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x8ea2('0x19'));var db=require(_0x8ea2('0x1a'))['db'];config[_0x8ea2('0x1b')]=_[_0x8ea2('0x1c')](config[_0x8ea2('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0x8ea2('0x1d'))(new Redis(config['redis']));require('./voicePrefix.socket')[_0x8ea2('0x1e')](socket);function respondWithStatusCode(_0x4726a7,_0x416bae){_0x416bae=_0x416bae||0xcc;return function(_0x78669a){if(_0x78669a){return _0x4726a7[_0x8ea2('0x1f')](_0x416bae);}return _0x4726a7[_0x8ea2('0x20')](_0x416bae)[_0x8ea2('0x21')]();};}function respondWithResult(_0x11f5e8,_0x474873){_0x474873=_0x474873||0xc8;return function(_0x396aab){if(_0x396aab){return _0x11f5e8[_0x8ea2('0x20')](_0x474873)[_0x8ea2('0x22')](_0x396aab);}};}function respondWithFilteredResult(_0x3bc774,_0xaa8abf){return function(_0x1b64cf){if(_0x1b64cf){var _0x174ef2=typeof _0xaa8abf[_0x8ea2('0x23')]===_0x8ea2('0x24')&&typeof _0xaa8abf[_0x8ea2('0x25')]===_0x8ea2('0x24');var _0x134cbe=_0x1b64cf[_0x8ea2('0x26')];var _0x52b58c=_0x174ef2?0x0:_0xaa8abf['offset'];var _0x3790e9=_0x174ef2?_0x1b64cf[_0x8ea2('0x26')]:_0xaa8abf[_0x8ea2('0x23')]+_0xaa8abf['limit'];var _0x46f4fe;if(_0x3790e9>=_0x134cbe){_0x3790e9=_0x134cbe;_0x46f4fe=0xc8;}else{_0x46f4fe=0xce;}_0x3bc774[_0x8ea2('0x20')](_0x46f4fe);return _0x3bc774['set'](_0x8ea2('0x27'),_0x52b58c+'-'+_0x3790e9+'/'+_0x134cbe)[_0x8ea2('0x22')](_0x1b64cf);}return null;};}function patchUpdates(_0x37229a){return function(_0x9f9548){try{jsonpatch[_0x8ea2('0x28')](_0x9f9548,_0x37229a,!![]);}catch(_0xe5c943){return BPromise[_0x8ea2('0x29')](_0xe5c943);}return _0x9f9548[_0x8ea2('0x2a')]();};}function saveUpdates(_0x18ec34,_0x4d5030){return function(_0x433bc5){if(_0x433bc5){return _0x433bc5['update'](_0x18ec34)[_0x8ea2('0x2b')](function(_0x42bec8){return _0x42bec8;});}return null;};}function removeEntity(_0x29b38f,_0x4e2106){return function(_0x53ed43){if(_0x53ed43){return _0x53ed43[_0x8ea2('0x2c')]()['then'](function(){var _0x200a49=_0x53ed43['get']({'plain':!![]});var _0x3be291=_0x8ea2('0x2d');return db[_0x8ea2('0x2e')][_0x8ea2('0x2c')]({'where':{'type':_0x3be291,'resourceId':_0x200a49['id']}})['then'](function(){return _0x53ed43;});})['then'](function(){_0x29b38f[_0x8ea2('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4a9875,_0x287078){return function(_0x24f187){if(!_0x24f187){_0x4a9875[_0x8ea2('0x1f')](0x194);}return _0x24f187;};}function handleError(_0x307c74,_0x3eb7ac){_0x3eb7ac=_0x3eb7ac||0x1f4;return function(_0x32e225){logger[_0x8ea2('0x2f')](_0x32e225[_0x8ea2('0x30')]);if(_0x32e225[_0x8ea2('0x31')]){delete _0x32e225['name'];}_0x307c74['status'](_0x3eb7ac)[_0x8ea2('0x32')](_0x32e225);};}exports[_0x8ea2('0x33')]=function(_0x53d71c,_0x4a110f){var _0x1ee7b2={},_0x4e273e={},_0x64475b={'count':0x0,'rows':[]};var _0x1b9471=_['map'](db[_0x8ea2('0x34')][_0x8ea2('0x35')],function(_0x33abc8){return{'name':_0x33abc8['fieldName'],'type':_0x33abc8['type']['key']};});_0x4e273e[_0x8ea2('0x36')]=_[_0x8ea2('0x37')](_0x1b9471,_0x8ea2('0x31'));_0x4e273e['query']=_[_0x8ea2('0x38')](_0x53d71c[_0x8ea2('0x39')]);_0x4e273e[_0x8ea2('0x3a')]=_[_0x8ea2('0x3b')](_0x4e273e[_0x8ea2('0x36')],_0x4e273e[_0x8ea2('0x39')]);_0x1ee7b2[_0x8ea2('0x3c')]=_[_0x8ea2('0x3b')](_0x4e273e['model'],qs[_0x8ea2('0x3d')](_0x53d71c[_0x8ea2('0x39')][_0x8ea2('0x3d')]));_0x1ee7b2[_0x8ea2('0x3c')]=_0x1ee7b2['attributes'][_0x8ea2('0x3e')]?_0x1ee7b2['attributes']:_0x4e273e[_0x8ea2('0x36')];if(!_0x53d71c[_0x8ea2('0x39')][_0x8ea2('0x3f')](_0x8ea2('0x40'))){_0x1ee7b2['limit']=qs[_0x8ea2('0x25')](_0x53d71c['query']['limit']);_0x1ee7b2[_0x8ea2('0x23')]=qs['offset'](_0x53d71c[_0x8ea2('0x39')][_0x8ea2('0x23')]);}_0x1ee7b2[_0x8ea2('0x41')]=qs[_0x8ea2('0x42')](_0x53d71c[_0x8ea2('0x39')]['sort']);_0x1ee7b2[_0x8ea2('0x43')]=qs['filters'](_[_0x8ea2('0x44')](_0x53d71c[_0x8ea2('0x39')],_0x4e273e[_0x8ea2('0x3a')]),_0x1b9471);if(_0x53d71c[_0x8ea2('0x39')]['filter']){_0x1ee7b2[_0x8ea2('0x43')]=_['merge'](_0x1ee7b2[_0x8ea2('0x43')],{'$or':_['map'](_0x1b9471,function(_0x2ee78b){if(_0x2ee78b[_0x8ea2('0x45')]!==_0x8ea2('0x46')){var _0x322c8f={};_0x322c8f[_0x2ee78b[_0x8ea2('0x31')]]={'$like':'%'+_0x53d71c[_0x8ea2('0x39')][_0x8ea2('0x47')]+'%'};return _0x322c8f;}})});}_0x1ee7b2=_['merge']({},_0x1ee7b2,_0x53d71c['options']);var _0x1d7496={'where':_0x1ee7b2['where']};return db['VoicePrefix']['count'](_0x1d7496)[_0x8ea2('0x2b')](function(_0x5d9ba0){_0x64475b[_0x8ea2('0x26')]=_0x5d9ba0;if(_0x53d71c[_0x8ea2('0x39')][_0x8ea2('0x48')]){_0x1ee7b2[_0x8ea2('0x49')]=[{'all':!![]}];}return db[_0x8ea2('0x34')][_0x8ea2('0x4a')](_0x1ee7b2);})[_0x8ea2('0x2b')](function(_0x348b17){_0x64475b['rows']=_0x348b17;return _0x64475b;})[_0x8ea2('0x2b')](respondWithFilteredResult(_0x4a110f,_0x1ee7b2))[_0x8ea2('0x4b')](handleError(_0x4a110f,null));};exports[_0x8ea2('0x4c')]=function(_0x5cb6ad,_0x2d6bbb){var _0x17df7b={'raw':![],'where':{'id':_0x5cb6ad[_0x8ea2('0x4d')]['id']}},_0x8005f9={};_0x8005f9[_0x8ea2('0x36')]=_['keys'](db[_0x8ea2('0x34')][_0x8ea2('0x35')]);_0x8005f9[_0x8ea2('0x39')]=_['keys'](_0x5cb6ad[_0x8ea2('0x39')]);_0x8005f9[_0x8ea2('0x3a')]=_[_0x8ea2('0x3b')](_0x8005f9[_0x8ea2('0x36')],_0x8005f9[_0x8ea2('0x39')]);_0x17df7b[_0x8ea2('0x3c')]=_[_0x8ea2('0x3b')](_0x8005f9[_0x8ea2('0x36')],qs[_0x8ea2('0x3d')](_0x5cb6ad[_0x8ea2('0x39')][_0x8ea2('0x3d')]));_0x17df7b[_0x8ea2('0x3c')]=_0x17df7b[_0x8ea2('0x3c')][_0x8ea2('0x3e')]?_0x17df7b['attributes']:_0x8005f9[_0x8ea2('0x36')];if(_0x5cb6ad[_0x8ea2('0x39')][_0x8ea2('0x48')]){_0x17df7b[_0x8ea2('0x49')]=[{'all':!![]}];}_0x17df7b=_[_0x8ea2('0x4e')]({},_0x17df7b,_0x5cb6ad[_0x8ea2('0x4f')]);return db[_0x8ea2('0x34')][_0x8ea2('0x50')](_0x17df7b)['then'](handleEntityNotFound(_0x2d6bbb,null))[_0x8ea2('0x2b')](respondWithResult(_0x2d6bbb,null))[_0x8ea2('0x4b')](handleError(_0x2d6bbb,null));};exports[_0x8ea2('0x2c')]=function(_0x5380fa,_0x4fcc19){return db[_0x8ea2('0x34')][_0x8ea2('0x50')]({'where':{'id':_0x5380fa[_0x8ea2('0x4d')]['id']}})['then'](handleEntityNotFound(_0x4fcc19,null))[_0x8ea2('0x2b')](removeEntity(_0x4fcc19,null))[_0x8ea2('0x4b')](handleError(_0x4fcc19,null));};exports[_0x8ea2('0x51')]=function(_0x11d7ea,_0xd40312){return db['VoicePrefix']['describe']()[_0x8ea2('0x2b')](respondWithResult(_0xd40312,null))[_0x8ea2('0x4b')](handleError(_0xd40312,null));};exports[_0x8ea2('0x52')]=function(_0x5e4268,_0x18cbe9){var _0x100e29;return db[_0x8ea2('0x53')]['transaction'](function(_0x5c6524){return db['VoicePrefix']['create'](_0x5e4268['body'],{'transaction':_0x5c6524})[_0x8ea2('0x2b')](function(_0x3020ad){_0x100e29=_0x3020ad['get']({'plain':!![]});return db['VoiceExtension'][_0x8ea2('0x50')]({'where':{'id':_0x100e29[_0x8ea2('0x54')]},'raw':!![]})[_0x8ea2('0x2b')](function(_0x5eea45){return createVoicePrefixExtensions(_0x100e29,_0x5eea45,_0x5c6524);});});})[_0x8ea2('0x2b')](function(){var _0x30ebd3=_0x5e4268['user'][_0x8ea2('0x55')]({'plain':!![]});if(!_0x30ebd3)throw new Error(_0x8ea2('0x56'));if(_0x30ebd3[_0x8ea2('0x57')]===_0x8ea2('0x58')){var _0x4728b4=_0x100e29;return db['UserProfileSection']['find']({'where':{'name':'VoicePrefixes','userProfileId':_0x30ebd3[_0x8ea2('0x59')]},'raw':!![]})[_0x8ea2('0x2b')](function(_0x2b95b0){if(_0x2b95b0&&_0x2b95b0[_0x8ea2('0x5a')]===0x0){return db[_0x8ea2('0x2e')][_0x8ea2('0x52')]({'name':_0x4728b4[_0x8ea2('0x31')],'resourceId':_0x4728b4['id'],'type':_0x2b95b0['name'],'sectionId':_0x2b95b0['id']},{})['then'](function(){return _0x100e29;});}else{return _0x100e29;}})['catch'](function(_0x3d6fd6){logger[_0x8ea2('0x2f')](_0x8ea2('0x5b'),_0x3d6fd6);throw _0x3d6fd6;});}return _0x100e29;})[_0x8ea2('0x2b')](respondWithResult(_0x18cbe9,null))['catch'](handleError(_0x18cbe9,null));};function Extension(_0x11824e,_0x2b8662,_0x4ec833,_0x21485a){this[_0x8ea2('0x5c')]=_0x8ea2('0x5d');this[_0x8ea2('0x5e')]=_0x11824e;this[_0x8ea2('0x5f')]=_0x4ec833;this['type']='system';this['description']=_0x8ea2('0x60');this[_0x8ea2('0x61')]=_0x2b8662;this[_0x8ea2('0x62')]=_0x21485a;}function createVoicePrefixExtensions(_0x2d8221,_0x3c44ef,_0x491d3d){return new BPromise(function(_0x461d32,_0x3b3eab){var _0x1d9d22=new Extension(formatPrefixName(_0x2d8221[_0x8ea2('0x63')]),0x1,'NoOp',_0x8ea2('0x64'));_0x1d9d22['VoicePrefixId']=_0x2d8221['id'];return db[_0x8ea2('0x65')]['create'](_0x1d9d22,{'transaction':_0x491d3d})[_0x8ea2('0x2b')](function(_0x3021c1){var _0x4ad944=_0x3021c1['get']({'plain':!![]});var _0x1d0326=_['map'](addVoicePrefixExtensions(_0x2d8221,_0x3c44ef),function(_0x197453){_0x197453[_0x8ea2('0x54')]=_0x4ad944['id'];_0x197453[_0x8ea2('0x66')]=_0x2d8221['id'];return _0x197453;});return db[_0x8ea2('0x65')]['bulkCreate'](_0x1d0326,{'transaction':_0x491d3d})[_0x8ea2('0x2b')](function(_0x2eae97){if(!_0x2eae97){return _0x3b3eab(_0x8ea2('0x67'));}else{return _0x461d32(_0x2eae97);}})[_0x8ea2('0x4b')](function(_0xdde79){return _0x3b3eab(_0xdde79);});});;});};function addVoicePrefixExtensions(_0x212c16,_0x30a4a5){var _0x3a78c9=[];var _0x253a6e=formatPrefixName(_0x212c16[_0x8ea2('0x63')]);_0x3a78c9[_0x8ea2('0x68')](new Extension(_0x253a6e,0x2,_0x8ea2('0x69'),'CDR(prefix)='+_0x212c16[_0x8ea2('0x31')]));if(_0x212c16[_0x8ea2('0x6a')]){_0x3a78c9[_0x8ea2('0x68')](new Extension(_0x253a6e,0x3,_0x8ea2('0x69'),_0x8ea2('0x6b')+_0x212c16[_0x8ea2('0x6a')]));}else{_0x3a78c9[_0x8ea2('0x68')](new Extension(_0x253a6e,0x3,_0x8ea2('0x6c'),_0x8ea2('0x6d')));}_0x3a78c9[_0x8ea2('0x68')](new Extension(_0x253a6e,0x4,_0x8ea2('0x6e'),_0x30a4a5[_0x8ea2('0x5c')]+','+'${EXTEN:'+(0x8+_0x212c16[_0x8ea2('0x31')][_0x8ea2('0x3e')])+'}'+','+0x1));return _0x3a78c9;}function formatPrefixName(_0xb55bc6){var _0x396f5b='_';for(var _0x1cb87d=0x0;_0x1cb87d<_0xb55bc6['length'];_0x1cb87d++){if(_0xb55bc6['charAt'](_0x1cb87d)=='-'){_0x396f5b+=_0xb55bc6['charAt'](_0x1cb87d);}else{_0x396f5b+='['+_0xb55bc6[_0x8ea2('0x6f')](_0x1cb87d)+']';}}_0x396f5b+='.';return _0x396f5b;}exports[_0x8ea2('0x70')]=function(_0x380066,_0x31bda0,_0x1d608f){var _0x8b694f=_0x380066['body'];_0x8b694f[_0x8ea2('0x63')]=_0x8ea2('0x71')+_0x8b694f['name']+'-';return db['sequelize'][_0x8ea2('0x72')](function(_0x145a88){return db[_0x8ea2('0x34')][_0x8ea2('0x70')](_0x8b694f,{'where':{'id':_0x8b694f['id']},'transaction':_0x145a88})[_0x8ea2('0x2b')](function(){return db[_0x8ea2('0x65')][_0x8ea2('0x2c')]({'where':{'VoicePrefixId':_0x8b694f['id']},'transaction':_0x145a88})['then'](function(){return db[_0x8ea2('0x65')][_0x8ea2('0x50')]({'where':{'id':_0x8b694f[_0x8ea2('0x54')]},'raw':!![]})[_0x8ea2('0x2b')](function(_0x568f1c){return createVoicePrefixExtensions(_0x8b694f,_0x568f1c,_0x145a88);});});});})[_0x8ea2('0x2b')](function(){return db[_0x8ea2('0x34')][_0x8ea2('0x73')](_0x8b694f['id']);})['then'](respondWithResult(_0x31bda0,null))[_0x8ea2('0x4b')](handleError(_0x31bda0,null));};exports['addAgents']=function(_0x505c80,_0x188809,_0x452c82){return db['VoicePrefix']['find']({'where':{'id':_0x505c80['params']['id']}})[_0x8ea2('0x2b')](handleEntityNotFound(_0x188809,null))['then'](function(_0x555608){if(_0x555608){return _0x555608[_0x8ea2('0x74')](_0x505c80[_0x8ea2('0x75')][_0x8ea2('0x76')],_[_0x8ea2('0x77')](_0x505c80[_0x8ea2('0x75')],[_0x8ea2('0x76'),'id'])||{})[_0x8ea2('0x78')](function(_0x24b090){for(var _0x14a5de=0x0;_0x14a5de<_0x505c80[_0x8ea2('0x75')][_0x8ea2('0x76')][_0x8ea2('0x3e')];_0x14a5de+=0x1){socket[_0x8ea2('0x79')](_0x8ea2('0x7a'),{'UserId':Number(_0x505c80['body'][_0x8ea2('0x76')][_0x14a5de]),'VoicePrefixId':Number(_0x505c80[_0x8ea2('0x4d')]['id'])});}return _0x24b090;});}})[_0x8ea2('0x2b')](respondWithResult(_0x188809,null))['catch'](handleError(_0x188809,null));};exports[_0x8ea2('0x7b')]=function(_0x486ae8,_0x13794b,_0x5b43f8){return db[_0x8ea2('0x34')]['find']({'where':{'id':_0x486ae8[_0x8ea2('0x4d')]['id']}})[_0x8ea2('0x2b')](handleEntityNotFound(_0x13794b,null))['then'](function(_0xefef40){if(_0xefef40){return _0xefef40['removeAgents'](_0x486ae8[_0x8ea2('0x39')][_0x8ea2('0x76')])[_0x8ea2('0x2b')](function(){if(_[_0x8ea2('0x7c')](_0x486ae8[_0x8ea2('0x39')]['ids'])){for(var _0x5c5cda=0x0;_0x5c5cda<_0x486ae8[_0x8ea2('0x39')]['ids'][_0x8ea2('0x3e')];_0x5c5cda+=0x1){socket[_0x8ea2('0x79')](_0x8ea2('0x7d'),{'UserId':Number(_0x486ae8[_0x8ea2('0x39')][_0x8ea2('0x76')][_0x5c5cda]),'VoicePrefixId':Number(_0x486ae8[_0x8ea2('0x4d')]['id'])});}}else{socket['emit']('userVoicePrefix:remove',{'UserId':Number(_0x486ae8['query'][_0x8ea2('0x76')]),'VoicePrefixId':Number(_0x486ae8['params']['id'])});}});}})[_0x8ea2('0x2b')](respondWithStatusCode(_0x13794b,null))[_0x8ea2('0x4b')](handleError(_0x13794b,null));};exports[_0x8ea2('0x7e')]=function(_0x30a59a,_0x244c30,_0xd2bb04){var _0x4b4d64={};var _0x1a79f7={};var _0x1a6426;var _0x46d380;return db[_0x8ea2('0x34')][_0x8ea2('0x7f')]({'where':{'id':_0x30a59a['params']['id']}})['then'](handleEntityNotFound(_0x244c30,null))[_0x8ea2('0x2b')](function(_0x3a08c8){if(_0x3a08c8){_0x1a6426=_0x3a08c8;_0x1a79f7[_0x8ea2('0x36')]=_[_0x8ea2('0x38')](db[_0x8ea2('0x80')][_0x8ea2('0x35')]);_0x1a79f7[_0x8ea2('0x39')]=_[_0x8ea2('0x38')](_0x30a59a[_0x8ea2('0x39')]);_0x1a79f7[_0x8ea2('0x3a')]=_[_0x8ea2('0x3b')](_0x1a79f7[_0x8ea2('0x36')],_0x1a79f7[_0x8ea2('0x39')]);_0x4b4d64[_0x8ea2('0x3c')]=_[_0x8ea2('0x3b')](_0x1a79f7[_0x8ea2('0x36')],qs[_0x8ea2('0x3d')](_0x30a59a['query']['fields']));_0x4b4d64[_0x8ea2('0x3c')]=_0x4b4d64['attributes'][_0x8ea2('0x3e')]?_0x4b4d64[_0x8ea2('0x3c')]:_0x1a79f7['model'];_0x4b4d64[_0x8ea2('0x41')]=qs['sort'](_0x30a59a[_0x8ea2('0x39')][_0x8ea2('0x42')]);_0x4b4d64['where']=qs[_0x8ea2('0x3a')](_[_0x8ea2('0x44')](_0x30a59a[_0x8ea2('0x39')],_0x1a79f7[_0x8ea2('0x3a')]));if(_0x30a59a[_0x8ea2('0x39')][_0x8ea2('0x47')]){_0x4b4d64[_0x8ea2('0x43')]=_[_0x8ea2('0x4e')](_0x4b4d64[_0x8ea2('0x43')],{'$or':_[_0x8ea2('0x37')](_0x4b4d64['attributes'],function(_0x524fa9){var _0x1051ac={};_0x1051ac[_0x524fa9]={'$like':'%'+_0x30a59a['query'][_0x8ea2('0x47')]+'%'};return _0x1051ac;})});}_0x4b4d64=_['merge']({},_0x4b4d64,_0x30a59a['options']);return _0x1a6426['getAgents'](_0x4b4d64);}})[_0x8ea2('0x2b')](function(_0x47d4ca){if(_0x47d4ca){_0x46d380=_0x47d4ca[_0x8ea2('0x3e')];if(!_0x30a59a[_0x8ea2('0x39')][_0x8ea2('0x3f')](_0x8ea2('0x40'))){_0x4b4d64[_0x8ea2('0x25')]=qs[_0x8ea2('0x25')](_0x30a59a['query'][_0x8ea2('0x25')]);_0x4b4d64['offset']=qs[_0x8ea2('0x23')](_0x30a59a[_0x8ea2('0x39')][_0x8ea2('0x23')]);}return _0x1a6426[_0x8ea2('0x7e')](_0x4b4d64);}})[_0x8ea2('0x2b')](function(_0x4d940b){if(_0x4d940b){return _0x4d940b?{'count':_0x46d380,'rows':_0x4d940b}:null;}})[_0x8ea2('0x2b')](respondWithResult(_0x244c30,null))[_0x8ea2('0x4b')](handleError(_0x244c30,null));};exports[_0x8ea2('0x81')]=function(_0x2a82b2,_0x120e4c,_0x2aee9e){var _0x446bba={};var _0x19f49e={};var _0x2e3551;var _0xa24385;return db[_0x8ea2('0x34')][_0x8ea2('0x7f')]({'where':{'id':_0x2a82b2[_0x8ea2('0x4d')]['id']}})[_0x8ea2('0x2b')](handleEntityNotFound(_0x120e4c,null))[_0x8ea2('0x2b')](function(_0x3a9640){if(_0x3a9640){_0x2e3551=_0x3a9640;_0x19f49e[_0x8ea2('0x36')]=_['keys'](db[_0x8ea2('0x82')]['rawAttributes']);_0x19f49e['query']=_[_0x8ea2('0x38')](_0x2a82b2[_0x8ea2('0x39')]);_0x19f49e['filters']=_[_0x8ea2('0x3b')](_0x19f49e[_0x8ea2('0x36')],_0x19f49e['query']);_0x446bba[_0x8ea2('0x3c')]=_[_0x8ea2('0x3b')](_0x19f49e['model'],qs[_0x8ea2('0x3d')](_0x2a82b2[_0x8ea2('0x39')][_0x8ea2('0x3d')]));_0x446bba[_0x8ea2('0x3c')]=_0x446bba[_0x8ea2('0x3c')]['length']?_0x446bba[_0x8ea2('0x3c')]:_0x19f49e[_0x8ea2('0x36')];_0x446bba[_0x8ea2('0x41')]=qs[_0x8ea2('0x42')](_0x2a82b2[_0x8ea2('0x39')][_0x8ea2('0x42')]);_0x446bba[_0x8ea2('0x43')]=qs[_0x8ea2('0x3a')](_[_0x8ea2('0x44')](_0x2a82b2['query'],_0x19f49e[_0x8ea2('0x3a')]));if(_0x2a82b2['query'][_0x8ea2('0x47')]){_0x446bba[_0x8ea2('0x43')]=_[_0x8ea2('0x4e')](_0x446bba[_0x8ea2('0x43')],{'$or':_[_0x8ea2('0x37')](_0x446bba['attributes'],function(_0x315652){var _0xa74ab3={};_0xa74ab3[_0x315652]={'$like':'%'+_0x2a82b2['query']['filter']+'%'};return _0xa74ab3;})});}_0x446bba=_[_0x8ea2('0x4e')]({},_0x446bba,_0x2a82b2[_0x8ea2('0x4f')]);return _0x2e3551['getTeams'](_0x446bba);}})['then'](function(_0x229724){if(_0x229724){_0xa24385=_0x229724[_0x8ea2('0x3e')];if(!_0x2a82b2['query'][_0x8ea2('0x3f')](_0x8ea2('0x40'))){_0x446bba[_0x8ea2('0x25')]=qs[_0x8ea2('0x25')](_0x2a82b2[_0x8ea2('0x39')]['limit']);_0x446bba[_0x8ea2('0x23')]=qs[_0x8ea2('0x23')](_0x2a82b2[_0x8ea2('0x39')][_0x8ea2('0x23')]);}return _0x2e3551[_0x8ea2('0x81')](_0x446bba);}})['then'](function(_0x1da1e7){if(_0x1da1e7){return _0x1da1e7?{'count':_0xa24385,'rows':_0x1da1e7}:null;}})['then'](respondWithResult(_0x120e4c,null))['catch'](handleError(_0x120e4c,null));};exports[_0x8ea2('0x83')]=function(_0x17e9fc,_0x5c95ec,_0x239516){var _0x1ac102=_0x17e9fc[_0x8ea2('0x75')][_0x8ea2('0x76')];var _0x22d5f1;return db[_0x8ea2('0x82')]['findAll']({'where':{'id':_0x1ac102},'attributes':['id'],'include':[{'model':db[_0x8ea2('0x80')],'as':_0x8ea2('0x84'),'attributes':['id',_0x8ea2('0x31'),'online',_0x8ea2('0x85'),_0x8ea2('0x86')],'raw':!![]}]})[_0x8ea2('0x2b')](function(_0x3e0647){if(_0x3e0647){_0x22d5f1=_0x3e0647;var _0x470099=_['flatMap'](_0x3e0647,function(_0x16e3fb){var _0x3a8c76=_0x16e3fb[_0x8ea2('0x55')]({'plain':!![]});return _0x3a8c76[_0x8ea2('0x84')];});return db['VoicePrefix']['find']({'where':{'id':_0x17e9fc[_0x8ea2('0x4d')]['id']}})['then'](function(_0x177c54){return db['sequelize'][_0x8ea2('0x72')](function(_0x1fab83){return _0x177c54[_0x8ea2('0x83')](_0x1ac102,{'transaction':_0x1fab83})[_0x8ea2('0x2b')](function(){return BPromise[_0x8ea2('0x87')](_0x22d5f1,function(_0x604545){return db[_0x8ea2('0x88')]['upsert']({'TeamId':_0x604545['id'],'VoicePrefixId':_0x17e9fc[_0x8ea2('0x4d')]['id']},{'transaction':_0x1fab83});});})[_0x8ea2('0x2b')](function(){return BPromise[_0x8ea2('0x87')](_0x470099,function(_0x87e93f){return db[_0x8ea2('0x89')][_0x8ea2('0x8a')]({'where':{'UserId':_0x87e93f['id'],'VoicePrefixId':_0x17e9fc['params']['id']},'transaction':_0x1fab83});});})[_0x8ea2('0x2b')](function(){_0x470099[_0x8ea2('0x8b')](function(_0x76085){socket[_0x8ea2('0x79')]('userVoicePrefix:save',{'UserId':_0x76085['id'],'VoicePrefixId':_0x177c54['id']});});});});});}})['then'](respondWithStatusCode(_0x5c95ec,null))['catch'](handleError(_0x5c95ec,null));};exports[_0x8ea2('0x8c')]=function(_0x4280ea,_0x175305,_0x4a931b){return db[_0x8ea2('0x82')][_0x8ea2('0x4a')]({'where':{'id':_0x4280ea[_0x8ea2('0x39')]['ids']},'attributes':['id'],'include':[{'model':db[_0x8ea2('0x80')],'as':_0x8ea2('0x84'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x175305,null))[_0x8ea2('0x2b')](function(_0x5a1211){var _0x53b5b4=_[_0x8ea2('0x37')](_0x5a1211,'id');var _0xfff26b=[];var _0x405020=[];var _0x5c9359=squel[_0x8ea2('0x8d')]();_0x5c9359[_0x8ea2('0x8e')](_0x8ea2('0x8f'))[_0x8ea2('0x90')](_0x8ea2('0x91'),'tq')[_0x8ea2('0x92')](_0x8ea2('0x93'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x8ea2('0x43')](_0x8ea2('0x94'),_0x4280ea[_0x8ea2('0x4d')]['id']);for(var _0x384500=0x0;_0x384500<_0x5a1211[_0x8ea2('0x3e')];_0x384500+=0x1){let _0x22591c=_0x5a1211[_0x384500];for(var _0x85158c=0x0;_0x85158c<_0x22591c['Agents'][_0x8ea2('0x3e')];_0x85158c+=0x1){let _0x327f9d=_0x22591c[_0x8ea2('0x84')][_0x85158c];var _0x213fbf=_0x5c9359[_0x8ea2('0x95')]();_0x213fbf['where'](_0x8ea2('0x96'),_0x327f9d['id']);_0x405020[_0x8ea2('0x68')](db[_0x8ea2('0x53')][_0x8ea2('0x39')](_0x213fbf[_0x8ea2('0x97')](),{'type':db[_0x8ea2('0x53')][_0x8ea2('0x98')][_0x8ea2('0x99')]})[_0x8ea2('0x2b')](function(_0x4d3706){if(_0x4d3706['length']===0x1){return _0x327f9d['id'];}else{var _0x51781e=_[_0x8ea2('0x9a')](_['map'](_0x4d3706,_0x8ea2('0x9b')),function(_0x17474e){return _[_0x8ea2('0x9c')](_0x53b5b4,_0x17474e);});if(_0x51781e){return _0x327f9d['id'];}}}));}}return BPromise[_0x8ea2('0x9d')](_0x405020)[_0x8ea2('0x2b')](function(_0xb138ad){_0xfff26b=_(_0xfff26b)[_0x8ea2('0x9e')](_0xb138ad)[_0x8ea2('0x9f')]()[_0x8ea2('0xa0')]();return db[_0x8ea2('0x34')]['find']({'where':{'id':_0x4280ea[_0x8ea2('0x4d')]['id']}})[_0x8ea2('0x2b')](function(_0x31372a){return db[_0x8ea2('0x53')][_0x8ea2('0x72')](function(_0x39b893){return _0x31372a[_0x8ea2('0x8c')](_0x4280ea[_0x8ea2('0x39')][_0x8ea2('0x76')],{'transaction':_0x39b893})[_0x8ea2('0x2b')](function(){if(!_[_0x8ea2('0xa1')](_0xfff26b)){return _0x31372a[_0x8ea2('0x7b')](_0xfff26b,{'transaction':_0x39b893});}})[_0x8ea2('0x2b')](function(){_0xfff26b[_0x8ea2('0x8b')](function(_0x183546){socket[_0x8ea2('0x79')](_0x8ea2('0x7d'),{'UserId':_0x183546,'VoicePrefixId':_0x31372a['id']});});});});});});})['then'](respondWithStatusCode(_0x175305,null))['catch'](handleError(_0x175305,null));};
\ No newline at end of file
+var _0xefda=['value','isEmpty','eml-format','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./voicePrefix.socket','register','sendStatus','status','end','offset','undefined','count','limit','set','apply','save','update','destroy','VoicePrefixes','then','error','stack','send','index','VoicePrefix','rawAttributes','fieldName','type','key','model','map','name','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','params','find','describe','create','transaction','body','VoiceExtensionId','user','get','role','UserProfileSection','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','app','system','description','priority','appdata','NoOp','Voice\x20Prefix','VoicePrefixId','VoiceExtension','bulkCreate','Extensions\x20creation\x20failed','prefix','Set','callerIdAll','push','PREFIX-CALLERIDALL=','No\x20callerid\x20available','goto','charAt','system-','sequelize','findById','addAgents','ids','spread','removeAgents','emit','userVoicePrefix:remove','getAgents','User','getTeams','findOne','Team','addTeams','interface','flatMap','Agents','upsert','each','UserVoicePrefix','forEach','userVoicePrefix:save','removeTeams','select','tq.TeamId','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','toString','QueryTypes','SELECT','every','TeamId','all','union','compact'];(function(_0x312509,_0x5b5c56){var _0x3b14e2=function(_0x50f115){while(--_0x50f115){_0x312509['push'](_0x312509['shift']());}};_0x3b14e2(++_0x5b5c56);}(_0xefda,0x96));var _0xaefd=function(_0x44678b,_0x20bb11){_0x44678b=_0x44678b-0x0;var _0x4d95a7=_0xefda[_0x44678b];return _0x4d95a7;};'use strict';var emlformat=require(_0xaefd('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xaefd('0x1'));var rp=require(_0xaefd('0x2'));var moment=require('moment');var BPromise=require(_0xaefd('0x3'));var Mustache=require(_0xaefd('0x4'));var util=require(_0xaefd('0x5'));var path=require(_0xaefd('0x6'));var sox=require(_0xaefd('0x7'));var csv=require(_0xaefd('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xaefd('0x9'));var _=require(_0xaefd('0xa'));var squel=require(_0xaefd('0xb'));var crypto=require(_0xaefd('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xaefd('0xd'));var toCsv=require(_0xaefd('0x8'));var querystring=require(_0xaefd('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xaefd('0xf'));var as=require(_0xaefd('0x10'));var hardwareService=require(_0xaefd('0x11'));var logger=require(_0xaefd('0x12'))(_0xaefd('0x13'));var utils=require(_0xaefd('0x14'));var config=require(_0xaefd('0x15'));var licenseUtil=require(_0xaefd('0x16'));var db=require(_0xaefd('0x17'))['db'];config[_0xaefd('0x18')]=_[_0xaefd('0x19')](config['redis'],{'host':_0xaefd('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xaefd('0x18')]));require(_0xaefd('0x1b'))[_0xaefd('0x1c')](socket);function respondWithStatusCode(_0x43b82a,_0x4ec92a){_0x4ec92a=_0x4ec92a||0xcc;return function(_0x16e4f4){if(_0x16e4f4){return _0x43b82a[_0xaefd('0x1d')](_0x4ec92a);}return _0x43b82a[_0xaefd('0x1e')](_0x4ec92a)[_0xaefd('0x1f')]();};}function respondWithResult(_0x10ee28,_0x32f75e){_0x32f75e=_0x32f75e||0xc8;return function(_0x277070){if(_0x277070){return _0x10ee28[_0xaefd('0x1e')](_0x32f75e)['json'](_0x277070);}};}function respondWithFilteredResult(_0x9d9c29,_0x109604){return function(_0x9748f4){if(_0x9748f4){var _0x1737a1=typeof _0x109604[_0xaefd('0x20')]===_0xaefd('0x21')&&typeof _0x109604['limit']===_0xaefd('0x21');var _0x182f9a=_0x9748f4[_0xaefd('0x22')];var _0x1260dd=_0x1737a1?0x0:_0x109604[_0xaefd('0x20')];var _0x1f302c=_0x1737a1?_0x9748f4['count']:_0x109604[_0xaefd('0x20')]+_0x109604[_0xaefd('0x23')];var _0x2dcdd8;if(_0x1f302c>=_0x182f9a){_0x1f302c=_0x182f9a;_0x2dcdd8=0xc8;}else{_0x2dcdd8=0xce;}_0x9d9c29[_0xaefd('0x1e')](_0x2dcdd8);return _0x9d9c29[_0xaefd('0x24')]('Content-Range',_0x1260dd+'-'+_0x1f302c+'/'+_0x182f9a)['json'](_0x9748f4);}return null;};}function patchUpdates(_0x5b9967){return function(_0x21680a){try{jsonpatch[_0xaefd('0x25')](_0x21680a,_0x5b9967,!![]);}catch(_0x313a6f){return BPromise['reject'](_0x313a6f);}return _0x21680a[_0xaefd('0x26')]();};}function saveUpdates(_0x4cd9b2,_0x3deec8){return function(_0x3caa99){if(_0x3caa99){return _0x3caa99[_0xaefd('0x27')](_0x4cd9b2)['then'](function(_0x435413){return _0x435413;});}return null;};}function removeEntity(_0x3ffc9c,_0x18e720){return function(_0x14cc9d){if(_0x14cc9d){return _0x14cc9d[_0xaefd('0x28')]()['then'](function(){var _0x2fe27e=_0x14cc9d['get']({'plain':!![]});var _0x810bf=_0xaefd('0x29');return db['UserProfileResource'][_0xaefd('0x28')]({'where':{'type':_0x810bf,'resourceId':_0x2fe27e['id']}})[_0xaefd('0x2a')](function(){return _0x14cc9d;});})['then'](function(){_0x3ffc9c[_0xaefd('0x1e')](0xcc)[_0xaefd('0x1f')]();});}};}function handleEntityNotFound(_0x36b6b7,_0x4c0898){return function(_0x45f0e8){if(!_0x45f0e8){_0x36b6b7['sendStatus'](0x194);}return _0x45f0e8;};}function handleError(_0x109e19,_0x5c5639){_0x5c5639=_0x5c5639||0x1f4;return function(_0x4a1acb){logger[_0xaefd('0x2b')](_0x4a1acb[_0xaefd('0x2c')]);if(_0x4a1acb['name']){delete _0x4a1acb['name'];}_0x109e19['status'](_0x5c5639)[_0xaefd('0x2d')](_0x4a1acb);};}exports[_0xaefd('0x2e')]=function(_0x4b6910,_0x5503d0){var _0x62ef86={},_0x465d99={},_0x3f4947={'count':0x0,'rows':[]};var _0x21d358=_['map'](db[_0xaefd('0x2f')][_0xaefd('0x30')],function(_0x3b11e4){return{'name':_0x3b11e4[_0xaefd('0x31')],'type':_0x3b11e4[_0xaefd('0x32')][_0xaefd('0x33')]};});_0x465d99[_0xaefd('0x34')]=_[_0xaefd('0x35')](_0x21d358,_0xaefd('0x36'));_0x465d99[_0xaefd('0x37')]=_[_0xaefd('0x38')](_0x4b6910[_0xaefd('0x37')]);_0x465d99[_0xaefd('0x39')]=_[_0xaefd('0x3a')](_0x465d99[_0xaefd('0x34')],_0x465d99[_0xaefd('0x37')]);_0x62ef86['attributes']=_[_0xaefd('0x3a')](_0x465d99[_0xaefd('0x34')],qs[_0xaefd('0x3b')](_0x4b6910['query'][_0xaefd('0x3b')]));_0x62ef86['attributes']=_0x62ef86[_0xaefd('0x3c')][_0xaefd('0x3d')]?_0x62ef86[_0xaefd('0x3c')]:_0x465d99[_0xaefd('0x34')];if(!_0x4b6910[_0xaefd('0x37')][_0xaefd('0x3e')](_0xaefd('0x3f'))){_0x62ef86[_0xaefd('0x23')]=qs[_0xaefd('0x23')](_0x4b6910[_0xaefd('0x37')][_0xaefd('0x23')]);_0x62ef86[_0xaefd('0x20')]=qs[_0xaefd('0x20')](_0x4b6910[_0xaefd('0x37')]['offset']);}_0x62ef86[_0xaefd('0x40')]=qs['sort'](_0x4b6910[_0xaefd('0x37')][_0xaefd('0x41')]);_0x62ef86[_0xaefd('0x42')]=qs[_0xaefd('0x39')](_[_0xaefd('0x43')](_0x4b6910[_0xaefd('0x37')],_0x465d99[_0xaefd('0x39')]),_0x21d358);if(_0x4b6910[_0xaefd('0x37')][_0xaefd('0x44')]){_0x62ef86[_0xaefd('0x42')]=_['merge'](_0x62ef86[_0xaefd('0x42')],{'$or':_[_0xaefd('0x35')](_0x21d358,function(_0x4dfea1){if(_0x4dfea1[_0xaefd('0x32')]!==_0xaefd('0x45')){var _0x27daa8={};_0x27daa8[_0x4dfea1['name']]={'$like':'%'+_0x4b6910['query'][_0xaefd('0x44')]+'%'};return _0x27daa8;}})});}_0x62ef86=_[_0xaefd('0x46')]({},_0x62ef86,_0x4b6910[_0xaefd('0x47')]);var _0x179648={'where':_0x62ef86[_0xaefd('0x42')]};return db[_0xaefd('0x2f')][_0xaefd('0x22')](_0x179648)[_0xaefd('0x2a')](function(_0x48a7af){_0x3f4947[_0xaefd('0x22')]=_0x48a7af;if(_0x4b6910[_0xaefd('0x37')][_0xaefd('0x48')]){_0x62ef86[_0xaefd('0x49')]=[{'all':!![]}];}return db[_0xaefd('0x2f')][_0xaefd('0x4a')](_0x62ef86);})[_0xaefd('0x2a')](function(_0x1f4a15){_0x3f4947['rows']=_0x1f4a15;return _0x3f4947;})['then'](respondWithFilteredResult(_0x5503d0,_0x62ef86))[_0xaefd('0x4b')](handleError(_0x5503d0,null));};exports[_0xaefd('0x4c')]=function(_0x532328,_0x599738){var _0x17d611={'raw':![],'where':{'id':_0x532328[_0xaefd('0x4d')]['id']}},_0xe37b2c={};_0xe37b2c[_0xaefd('0x34')]=_[_0xaefd('0x38')](db[_0xaefd('0x2f')][_0xaefd('0x30')]);_0xe37b2c[_0xaefd('0x37')]=_[_0xaefd('0x38')](_0x532328['query']);_0xe37b2c[_0xaefd('0x39')]=_[_0xaefd('0x3a')](_0xe37b2c[_0xaefd('0x34')],_0xe37b2c[_0xaefd('0x37')]);_0x17d611[_0xaefd('0x3c')]=_[_0xaefd('0x3a')](_0xe37b2c[_0xaefd('0x34')],qs['fields'](_0x532328[_0xaefd('0x37')]['fields']));_0x17d611[_0xaefd('0x3c')]=_0x17d611[_0xaefd('0x3c')][_0xaefd('0x3d')]?_0x17d611[_0xaefd('0x3c')]:_0xe37b2c['model'];if(_0x532328['query'][_0xaefd('0x48')]){_0x17d611[_0xaefd('0x49')]=[{'all':!![]}];}_0x17d611=_[_0xaefd('0x46')]({},_0x17d611,_0x532328['options']);return db[_0xaefd('0x2f')][_0xaefd('0x4e')](_0x17d611)['then'](handleEntityNotFound(_0x599738,null))[_0xaefd('0x2a')](respondWithResult(_0x599738,null))[_0xaefd('0x4b')](handleError(_0x599738,null));};exports[_0xaefd('0x28')]=function(_0x23d4a9,_0x398aee){return db[_0xaefd('0x2f')][_0xaefd('0x4e')]({'where':{'id':_0x23d4a9[_0xaefd('0x4d')]['id']}})['then'](handleEntityNotFound(_0x398aee,null))['then'](removeEntity(_0x398aee,null))[_0xaefd('0x4b')](handleError(_0x398aee,null));};exports[_0xaefd('0x4f')]=function(_0x578e0c,_0x332743){return db['VoicePrefix'][_0xaefd('0x4f')]()[_0xaefd('0x2a')](respondWithResult(_0x332743,null))[_0xaefd('0x4b')](handleError(_0x332743,null));};exports[_0xaefd('0x50')]=function(_0x27fd3f,_0xf727cd){var _0x4b709a;return db['sequelize'][_0xaefd('0x51')](function(_0x338823){return db['VoicePrefix'][_0xaefd('0x50')](_0x27fd3f[_0xaefd('0x52')],{'transaction':_0x338823})[_0xaefd('0x2a')](function(_0x23fee9){_0x4b709a=_0x23fee9['get']({'plain':!![]});return db['VoiceExtension'][_0xaefd('0x4e')]({'where':{'id':_0x4b709a[_0xaefd('0x53')]},'raw':!![]})[_0xaefd('0x2a')](function(_0x1fe44a){return createVoicePrefixExtensions(_0x4b709a,_0x1fe44a,_0x338823);});});})[_0xaefd('0x2a')](function(){var _0x47cac9=_0x27fd3f[_0xaefd('0x54')][_0xaefd('0x55')]({'plain':!![]});if(!_0x47cac9)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x47cac9[_0xaefd('0x56')]===_0xaefd('0x54')){var _0x5f2925=_0x4b709a;return db[_0xaefd('0x57')][_0xaefd('0x4e')]({'where':{'name':_0xaefd('0x29'),'userProfileId':_0x47cac9['userProfileId']},'raw':!![]})[_0xaefd('0x2a')](function(_0x1a9842){if(_0x1a9842&&_0x1a9842['autoAssociation']===0x0){return db[_0xaefd('0x58')][_0xaefd('0x50')]({'name':_0x5f2925[_0xaefd('0x36')],'resourceId':_0x5f2925['id'],'type':_0x1a9842[_0xaefd('0x36')],'sectionId':_0x1a9842['id']},{})['then'](function(){return _0x4b709a;});}else{return _0x4b709a;}})['catch'](function(_0x232bf9){logger[_0xaefd('0x2b')](_0xaefd('0x59'),_0x232bf9);throw _0x232bf9;});}return _0x4b709a;})[_0xaefd('0x2a')](respondWithResult(_0xf727cd,null))[_0xaefd('0x4b')](handleError(_0xf727cd,null));};function Extension(_0x8ab9e7,_0x314660,_0x368fd3,_0x1e519e){this[_0xaefd('0x5a')]='from-sip';this['exten']=_0x8ab9e7;this[_0xaefd('0x5b')]=_0x368fd3;this[_0xaefd('0x32')]=_0xaefd('0x5c');this[_0xaefd('0x5d')]='Voice\x20Prefix\x20Extension';this[_0xaefd('0x5e')]=_0x314660;this[_0xaefd('0x5f')]=_0x1e519e;}function createVoicePrefixExtensions(_0x422b9e,_0x1ad04e,_0x16c227){return new BPromise(function(_0x37414d,_0x241e93){var _0x2c1004=new Extension(formatPrefixName(_0x422b9e['prefix']),0x1,_0xaefd('0x60'),_0xaefd('0x61'));_0x2c1004[_0xaefd('0x62')]=_0x422b9e['id'];return db[_0xaefd('0x63')]['create'](_0x2c1004,{'transaction':_0x16c227})[_0xaefd('0x2a')](function(_0x53888d){var _0xeb739=_0x53888d[_0xaefd('0x55')]({'plain':!![]});var _0x516913=_['map'](addVoicePrefixExtensions(_0x422b9e,_0x1ad04e),function(_0x45028e){_0x45028e['VoiceExtensionId']=_0xeb739['id'];_0x45028e['VoicePrefixId']=_0x422b9e['id'];return _0x45028e;});return db['VoiceExtension'][_0xaefd('0x64')](_0x516913,{'transaction':_0x16c227})[_0xaefd('0x2a')](function(_0x27fcb4){if(!_0x27fcb4){return _0x241e93(_0xaefd('0x65'));}else{return _0x37414d(_0x27fcb4);}})[_0xaefd('0x4b')](function(_0x384847){return _0x241e93(_0x384847);});});;});};function addVoicePrefixExtensions(_0x509a87,_0x5d308a){var _0x4f8e16=[];var _0x5c7220=formatPrefixName(_0x509a87[_0xaefd('0x66')]);_0x4f8e16['push'](new Extension(_0x5c7220,0x2,_0xaefd('0x67'),'CDR(prefix)='+_0x509a87[_0xaefd('0x36')]));if(_0x509a87[_0xaefd('0x68')]){_0x4f8e16[_0xaefd('0x69')](new Extension(_0x5c7220,0x3,_0xaefd('0x67'),_0xaefd('0x6a')+_0x509a87[_0xaefd('0x68')]));}else{_0x4f8e16[_0xaefd('0x69')](new Extension(_0x5c7220,0x3,'NoOp',_0xaefd('0x6b')));}_0x4f8e16[_0xaefd('0x69')](new Extension(_0x5c7220,0x4,_0xaefd('0x6c'),_0x5d308a[_0xaefd('0x5a')]+','+'${EXTEN:'+(0x8+_0x509a87[_0xaefd('0x36')]['length'])+'}'+','+0x1));return _0x4f8e16;}function formatPrefixName(_0x28db3a){var _0x40b493='_';for(var _0x110379=0x0;_0x110379<_0x28db3a[_0xaefd('0x3d')];_0x110379++){if(_0x28db3a[_0xaefd('0x6d')](_0x110379)=='-'){_0x40b493+=_0x28db3a[_0xaefd('0x6d')](_0x110379);}else{_0x40b493+='['+_0x28db3a['charAt'](_0x110379)+']';}}_0x40b493+='.';return _0x40b493;}exports[_0xaefd('0x27')]=function(_0x3b39db,_0x4a9fa5,_0x39ee5){var _0x279ad4=_0x3b39db['body'];_0x279ad4[_0xaefd('0x66')]=_0xaefd('0x6e')+_0x279ad4[_0xaefd('0x36')]+'-';return db[_0xaefd('0x6f')][_0xaefd('0x51')](function(_0x406c6d){return db[_0xaefd('0x2f')][_0xaefd('0x27')](_0x279ad4,{'where':{'id':_0x279ad4['id']},'transaction':_0x406c6d})[_0xaefd('0x2a')](function(){return db[_0xaefd('0x63')][_0xaefd('0x28')]({'where':{'VoicePrefixId':_0x279ad4['id']},'transaction':_0x406c6d})[_0xaefd('0x2a')](function(){return db[_0xaefd('0x63')][_0xaefd('0x4e')]({'where':{'id':_0x279ad4[_0xaefd('0x53')]},'raw':!![]})[_0xaefd('0x2a')](function(_0x3e0836){return createVoicePrefixExtensions(_0x279ad4,_0x3e0836,_0x406c6d);});});});})['then'](function(){return db[_0xaefd('0x2f')][_0xaefd('0x70')](_0x279ad4['id']);})[_0xaefd('0x2a')](respondWithResult(_0x4a9fa5,null))['catch'](handleError(_0x4a9fa5,null));};exports[_0xaefd('0x71')]=function(_0x12391f,_0x47270b,_0x594a75){return db['VoicePrefix'][_0xaefd('0x4e')]({'where':{'id':_0x12391f['params']['id']}})[_0xaefd('0x2a')](handleEntityNotFound(_0x47270b,null))['then'](function(_0x1e8616){if(_0x1e8616){return _0x1e8616[_0xaefd('0x71')](_0x12391f[_0xaefd('0x52')]['ids'],_['omit'](_0x12391f[_0xaefd('0x52')],[_0xaefd('0x72'),'id'])||{})[_0xaefd('0x73')](function(_0x99f17b){for(var _0x157a2a=0x0;_0x157a2a<_0x12391f[_0xaefd('0x52')]['ids']['length'];_0x157a2a+=0x1){socket['emit']('userVoicePrefix:save',{'UserId':Number(_0x12391f['body'][_0xaefd('0x72')][_0x157a2a]),'VoicePrefixId':Number(_0x12391f[_0xaefd('0x4d')]['id'])});}return _0x99f17b;});}})[_0xaefd('0x2a')](respondWithResult(_0x47270b,null))[_0xaefd('0x4b')](handleError(_0x47270b,null));};exports['removeAgents']=function(_0x3ae6ba,_0x1c4508,_0x4a3586){return db[_0xaefd('0x2f')]['find']({'where':{'id':_0x3ae6ba[_0xaefd('0x4d')]['id']}})['then'](handleEntityNotFound(_0x1c4508,null))[_0xaefd('0x2a')](function(_0x4b1ade){if(_0x4b1ade){return _0x4b1ade[_0xaefd('0x74')](_0x3ae6ba['query'][_0xaefd('0x72')])[_0xaefd('0x2a')](function(){if(_['isArray'](_0x3ae6ba[_0xaefd('0x37')][_0xaefd('0x72')])){for(var _0x47235e=0x0;_0x47235e<_0x3ae6ba['query'][_0xaefd('0x72')][_0xaefd('0x3d')];_0x47235e+=0x1){socket[_0xaefd('0x75')](_0xaefd('0x76'),{'UserId':Number(_0x3ae6ba[_0xaefd('0x37')]['ids'][_0x47235e]),'VoicePrefixId':Number(_0x3ae6ba[_0xaefd('0x4d')]['id'])});}}else{socket[_0xaefd('0x75')]('userVoicePrefix:remove',{'UserId':Number(_0x3ae6ba[_0xaefd('0x37')][_0xaefd('0x72')]),'VoicePrefixId':Number(_0x3ae6ba[_0xaefd('0x4d')]['id'])});}});}})[_0xaefd('0x2a')](respondWithStatusCode(_0x1c4508,null))['catch'](handleError(_0x1c4508,null));};exports[_0xaefd('0x77')]=function(_0x491978,_0xf2925d,_0x1bbeec){var _0x19b574={};var _0x5e2823={};var _0xa53ec;var _0x888d96;return db[_0xaefd('0x2f')]['findOne']({'where':{'id':_0x491978[_0xaefd('0x4d')]['id']}})[_0xaefd('0x2a')](handleEntityNotFound(_0xf2925d,null))[_0xaefd('0x2a')](function(_0x317b55){if(_0x317b55){_0xa53ec=_0x317b55;_0x5e2823['model']=_[_0xaefd('0x38')](db[_0xaefd('0x78')][_0xaefd('0x30')]);_0x5e2823[_0xaefd('0x37')]=_['keys'](_0x491978[_0xaefd('0x37')]);_0x5e2823[_0xaefd('0x39')]=_[_0xaefd('0x3a')](_0x5e2823[_0xaefd('0x34')],_0x5e2823['query']);_0x19b574[_0xaefd('0x3c')]=_['intersection'](_0x5e2823[_0xaefd('0x34')],qs['fields'](_0x491978[_0xaefd('0x37')][_0xaefd('0x3b')]));_0x19b574[_0xaefd('0x3c')]=_0x19b574[_0xaefd('0x3c')][_0xaefd('0x3d')]?_0x19b574['attributes']:_0x5e2823[_0xaefd('0x34')];_0x19b574['order']=qs[_0xaefd('0x41')](_0x491978['query'][_0xaefd('0x41')]);_0x19b574[_0xaefd('0x42')]=qs[_0xaefd('0x39')](_['pick'](_0x491978[_0xaefd('0x37')],_0x5e2823['filters']));if(_0x491978[_0xaefd('0x37')][_0xaefd('0x44')]){_0x19b574[_0xaefd('0x42')]=_[_0xaefd('0x46')](_0x19b574['where'],{'$or':_[_0xaefd('0x35')](_0x19b574[_0xaefd('0x3c')],function(_0x215986){var _0x407c6a={};_0x407c6a[_0x215986]={'$like':'%'+_0x491978[_0xaefd('0x37')][_0xaefd('0x44')]+'%'};return _0x407c6a;})});}_0x19b574=_[_0xaefd('0x46')]({},_0x19b574,_0x491978[_0xaefd('0x47')]);return _0xa53ec[_0xaefd('0x77')](_0x19b574);}})['then'](function(_0x250d61){if(_0x250d61){_0x888d96=_0x250d61[_0xaefd('0x3d')];if(!_0x491978[_0xaefd('0x37')][_0xaefd('0x3e')](_0xaefd('0x3f'))){_0x19b574[_0xaefd('0x23')]=qs[_0xaefd('0x23')](_0x491978[_0xaefd('0x37')][_0xaefd('0x23')]);_0x19b574[_0xaefd('0x20')]=qs[_0xaefd('0x20')](_0x491978[_0xaefd('0x37')][_0xaefd('0x20')]);}return _0xa53ec[_0xaefd('0x77')](_0x19b574);}})[_0xaefd('0x2a')](function(_0x4db4b0){if(_0x4db4b0){return _0x4db4b0?{'count':_0x888d96,'rows':_0x4db4b0}:null;}})['then'](respondWithResult(_0xf2925d,null))[_0xaefd('0x4b')](handleError(_0xf2925d,null));};exports[_0xaefd('0x79')]=function(_0x48e33f,_0x24c994,_0x3ea496){var _0x320cc6={};var _0x17ba3d={};var _0x321b4c;var _0x128a26;return db['VoicePrefix'][_0xaefd('0x7a')]({'where':{'id':_0x48e33f[_0xaefd('0x4d')]['id']}})[_0xaefd('0x2a')](handleEntityNotFound(_0x24c994,null))[_0xaefd('0x2a')](function(_0x4d0fc3){if(_0x4d0fc3){_0x321b4c=_0x4d0fc3;_0x17ba3d[_0xaefd('0x34')]=_[_0xaefd('0x38')](db[_0xaefd('0x7b')][_0xaefd('0x30')]);_0x17ba3d['query']=_[_0xaefd('0x38')](_0x48e33f[_0xaefd('0x37')]);_0x17ba3d['filters']=_[_0xaefd('0x3a')](_0x17ba3d[_0xaefd('0x34')],_0x17ba3d['query']);_0x320cc6[_0xaefd('0x3c')]=_[_0xaefd('0x3a')](_0x17ba3d[_0xaefd('0x34')],qs['fields'](_0x48e33f[_0xaefd('0x37')][_0xaefd('0x3b')]));_0x320cc6['attributes']=_0x320cc6[_0xaefd('0x3c')][_0xaefd('0x3d')]?_0x320cc6[_0xaefd('0x3c')]:_0x17ba3d[_0xaefd('0x34')];_0x320cc6[_0xaefd('0x40')]=qs[_0xaefd('0x41')](_0x48e33f[_0xaefd('0x37')]['sort']);_0x320cc6[_0xaefd('0x42')]=qs[_0xaefd('0x39')](_['pick'](_0x48e33f['query'],_0x17ba3d[_0xaefd('0x39')]));if(_0x48e33f[_0xaefd('0x37')][_0xaefd('0x44')]){_0x320cc6['where']=_[_0xaefd('0x46')](_0x320cc6['where'],{'$or':_['map'](_0x320cc6[_0xaefd('0x3c')],function(_0x32045b){var _0x3056d2={};_0x3056d2[_0x32045b]={'$like':'%'+_0x48e33f[_0xaefd('0x37')][_0xaefd('0x44')]+'%'};return _0x3056d2;})});}_0x320cc6=_[_0xaefd('0x46')]({},_0x320cc6,_0x48e33f[_0xaefd('0x47')]);return _0x321b4c[_0xaefd('0x79')](_0x320cc6);}})[_0xaefd('0x2a')](function(_0x4e8481){if(_0x4e8481){_0x128a26=_0x4e8481[_0xaefd('0x3d')];if(!_0x48e33f[_0xaefd('0x37')][_0xaefd('0x3e')](_0xaefd('0x3f'))){_0x320cc6[_0xaefd('0x23')]=qs['limit'](_0x48e33f[_0xaefd('0x37')][_0xaefd('0x23')]);_0x320cc6['offset']=qs[_0xaefd('0x20')](_0x48e33f['query'][_0xaefd('0x20')]);}return _0x321b4c['getTeams'](_0x320cc6);}})['then'](function(_0x2d88da){if(_0x2d88da){return _0x2d88da?{'count':_0x128a26,'rows':_0x2d88da}:null;}})[_0xaefd('0x2a')](respondWithResult(_0x24c994,null))['catch'](handleError(_0x24c994,null));};exports[_0xaefd('0x7c')]=function(_0x1aa4f7,_0x67e396,_0x261efa){var _0x4e8867=_0x1aa4f7[_0xaefd('0x52')][_0xaefd('0x72')];var _0x5dad4e;return db[_0xaefd('0x7b')]['findAll']({'where':{'id':_0x4e8867},'attributes':['id'],'include':[{'model':db[_0xaefd('0x78')],'as':'Agents','attributes':['id','name','online','voicePause',_0xaefd('0x7d')],'raw':!![]}]})[_0xaefd('0x2a')](function(_0x3e7f61){if(_0x3e7f61){_0x5dad4e=_0x3e7f61;var _0x13fd50=_[_0xaefd('0x7e')](_0x3e7f61,function(_0x3a705b){var _0x46d502=_0x3a705b[_0xaefd('0x55')]({'plain':!![]});return _0x46d502[_0xaefd('0x7f')];});return db[_0xaefd('0x2f')]['find']({'where':{'id':_0x1aa4f7[_0xaefd('0x4d')]['id']}})['then'](function(_0x3dafc3){return db[_0xaefd('0x6f')][_0xaefd('0x51')](function(_0x336594){return _0x3dafc3[_0xaefd('0x7c')](_0x4e8867,{'transaction':_0x336594})['then'](function(){return BPromise['each'](_0x5dad4e,function(_0x27790f){return db['TeamVoicePrefix'][_0xaefd('0x80')]({'TeamId':_0x27790f['id'],'VoicePrefixId':_0x1aa4f7[_0xaefd('0x4d')]['id']},{'transaction':_0x336594});});})['then'](function(){return BPromise[_0xaefd('0x81')](_0x13fd50,function(_0x4887f7){return db[_0xaefd('0x82')]['findOrCreate']({'where':{'UserId':_0x4887f7['id'],'VoicePrefixId':_0x1aa4f7[_0xaefd('0x4d')]['id']},'transaction':_0x336594});});})['then'](function(){_0x13fd50[_0xaefd('0x83')](function(_0x47a053){socket['emit'](_0xaefd('0x84'),{'UserId':_0x47a053['id'],'VoicePrefixId':_0x3dafc3['id']});});});});});}})[_0xaefd('0x2a')](respondWithStatusCode(_0x67e396,null))[_0xaefd('0x4b')](handleError(_0x67e396,null));};exports[_0xaefd('0x85')]=function(_0x2f3049,_0x7fd0d8,_0x2efdca){return db[_0xaefd('0x7b')][_0xaefd('0x4a')]({'where':{'id':_0x2f3049[_0xaefd('0x37')]['ids']},'attributes':['id'],'include':[{'model':db[_0xaefd('0x78')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xaefd('0x2a')](handleEntityNotFound(_0x7fd0d8,null))[_0xaefd('0x2a')](function(_0x4c3cb0){var _0x7380d5=_['map'](_0x4c3cb0,'id');var _0x3723e6=[];var _0x58e4c5=[];var _0x42e09b=squel[_0xaefd('0x86')]();_0x42e09b['field'](_0xaefd('0x87'))['from']('team_has_voice_prefixes','tq')['join'](_0xaefd('0x88'),'ut',_0xaefd('0x89'))['where']('VoicePrefixId\x20=\x20?',_0x2f3049[_0xaefd('0x4d')]['id']);for(var _0x35b685=0x0;_0x35b685<_0x4c3cb0['length'];_0x35b685+=0x1){let _0x1af15a=_0x4c3cb0[_0x35b685];for(var _0x42c685=0x0;_0x42c685<_0x1af15a[_0xaefd('0x7f')][_0xaefd('0x3d')];_0x42c685+=0x1){let _0x2fe05a=_0x1af15a[_0xaefd('0x7f')][_0x42c685];var _0x4df2de=_0x42e09b['clone']();_0x4df2de[_0xaefd('0x42')]('ut.UserId\x20=\x20?',_0x2fe05a['id']);_0x58e4c5['push'](db[_0xaefd('0x6f')][_0xaefd('0x37')](_0x4df2de[_0xaefd('0x8a')](),{'type':db[_0xaefd('0x6f')][_0xaefd('0x8b')][_0xaefd('0x8c')]})['then'](function(_0x129a22){if(_0x129a22[_0xaefd('0x3d')]===0x1){return _0x2fe05a['id'];}else{var _0x1911a2=_[_0xaefd('0x8d')](_[_0xaefd('0x35')](_0x129a22,_0xaefd('0x8e')),function(_0x1ce217){return _['includes'](_0x7380d5,_0x1ce217);});if(_0x1911a2){return _0x2fe05a['id'];}}}));}}return BPromise[_0xaefd('0x8f')](_0x58e4c5)['then'](function(_0x1f0cc0){_0x3723e6=_(_0x3723e6)[_0xaefd('0x90')](_0x1f0cc0)[_0xaefd('0x91')]()[_0xaefd('0x92')]();return db[_0xaefd('0x2f')][_0xaefd('0x4e')]({'where':{'id':_0x2f3049[_0xaefd('0x4d')]['id']}})[_0xaefd('0x2a')](function(_0x34cc20){return db[_0xaefd('0x6f')][_0xaefd('0x51')](function(_0x5ee5cd){return _0x34cc20['removeTeams'](_0x2f3049[_0xaefd('0x37')][_0xaefd('0x72')],{'transaction':_0x5ee5cd})['then'](function(){if(!_[_0xaefd('0x93')](_0x3723e6)){return _0x34cc20[_0xaefd('0x74')](_0x3723e6,{'transaction':_0x5ee5cd});}})[_0xaefd('0x2a')](function(){_0x3723e6[_0xaefd('0x83')](function(_0x7a283b){socket[_0xaefd('0x75')]('userVoicePrefix:remove',{'UserId':_0x7a283b,'VoicePrefixId':_0x34cc20['id']});});});});});});})['then'](respondWithStatusCode(_0x7fd0d8,null))[_0xaefd('0x4b')](handleError(_0x7fd0d8,null));};
\ No newline at end of file
index 97b3588..0b6ba28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1651=['remove','hasOwnProperty','../../mysqldb','VoicePrefix','setMaxListeners','save','update'];(function(_0x2713e0,_0x16fbf9){var _0x3ce6d7=function(_0x577ed3){while(--_0x577ed3){_0x2713e0['push'](_0x2713e0['shift']());}};_0x3ce6d7(++_0x16fbf9);}(_0x1651,0x1a6));var _0x1165=function(_0x462e8b,_0x3b1e7d){_0x462e8b=_0x462e8b-0x0;var _0x2dc59e=_0x1651[_0x462e8b];return _0x2dc59e;};'use strict';var EventEmitter=require('events');var VoicePrefix=require(_0x1165('0x0'))['db'][_0x1165('0x1')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x1165('0x2')](0x0);var events={'afterCreate':_0x1165('0x3'),'afterUpdate':_0x1165('0x4'),'afterDestroy':_0x1165('0x5')};function emitEvent(_0x54e907){return function(_0x1aaa87,_0x1cc7cc,_0x4ab2fc){VoicePrefixEvents['emit'](_0x54e907+':'+_0x1aaa87['id'],_0x1aaa87);VoicePrefixEvents['emit'](_0x54e907,_0x1aaa87);_0x4ab2fc(null);};}for(var e in events){if(events[_0x1165('0x6')](e)){var event=events[e];VoicePrefix['hook'](e,emitEvent(event));}}module['exports']=VoicePrefixEvents;
\ No newline at end of file
+var _0xd6e7=['remove','emit','hasOwnProperty','hook','exports','../../mysqldb','VoicePrefix','save','update'];(function(_0x28696d,_0xb860b0){var _0x446708=function(_0x44221f){while(--_0x44221f){_0x28696d['push'](_0x28696d['shift']());}};_0x446708(++_0xb860b0);}(_0xd6e7,0x83));var _0x7d6e=function(_0x81b084,_0x3ec128){_0x81b084=_0x81b084-0x0;var _0x54df6c=_0xd6e7[_0x81b084];return _0x54df6c;};'use strict';var EventEmitter=require('events');var VoicePrefix=require(_0x7d6e('0x0'))['db'][_0x7d6e('0x1')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7d6e('0x2'),'afterUpdate':_0x7d6e('0x3'),'afterDestroy':_0x7d6e('0x4')};function emitEvent(_0x50b746){return function(_0x1bcc25,_0x5c7ac1,_0x332cdb){VoicePrefixEvents[_0x7d6e('0x5')](_0x50b746+':'+_0x1bcc25['id'],_0x1bcc25);VoicePrefixEvents[_0x7d6e('0x5')](_0x50b746,_0x1bcc25);_0x332cdb(null);};}for(var e in events){if(events[_0x7d6e('0x6')](e)){var event=events[e];VoicePrefix[_0x7d6e('0x7')](e,emitEvent(event));}}module[_0x7d6e('0x8')]=VoicePrefixEvents;
\ No newline at end of file
index d113759..afc4d5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x259c=['lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./voicePrefix.attributes','exports','define','VoicePrefix'];(function(_0x25e708,_0x465bcf){var _0x5d9d76=function(_0x314bf2){while(--_0x314bf2){_0x25e708['push'](_0x25e708['shift']());}};_0x5d9d76(++_0x465bcf);}(_0x259c,0xf7));var _0xc259=function(_0x29736f,_0x137bc7){_0x29736f=_0x29736f-0x0;var _0x23dd93=_0x259c[_0x29736f];return _0x23dd93;};'use strict';var _=require(_0xc259('0x0'));var util=require(_0xc259('0x1'));var logger=require(_0xc259('0x2'))(_0xc259('0x3'));var moment=require(_0xc259('0x4'));var BPromise=require(_0xc259('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc259('0x6'));var rimraf=require(_0xc259('0x7'));var config=require(_0xc259('0x8'));var attributes=require(_0xc259('0x9'));module[_0xc259('0xa')]=function(_0xfe9f75,_0x3b1a3c){return _0xfe9f75[_0xc259('0xb')](_0xc259('0xc'),attributes,{'tableName':'voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8a5b=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','./voicePrefix.attributes','exports','define'];(function(_0x17e9c9,_0x97fa1b){var _0xf23d9a=function(_0x380f95){while(--_0x380f95){_0x17e9c9['push'](_0x17e9c9['shift']());}};_0xf23d9a(++_0x97fa1b);}(_0x8a5b,0xc8));var _0xb8a5=function(_0x1c413e,_0x51788b){_0x1c413e=_0x1c413e-0x0;var _0x1d8309=_0x8a5b[_0x1c413e];return _0x1d8309;};'use strict';var _=require(_0xb8a5('0x0'));var util=require('util');var logger=require(_0xb8a5('0x1'))(_0xb8a5('0x2'));var moment=require(_0xb8a5('0x3'));var BPromise=require(_0xb8a5('0x4'));var rp=require(_0xb8a5('0x5'));var fs=require('fs');var path=require(_0xb8a5('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xb8a5('0x7'));module[_0xb8a5('0x8')]=function(_0x5cf9ac,_0x1f77c4){return _0x5cf9ac[_0xb8a5('0x9')]('VoicePrefix',attributes,{'tableName':'voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 76c126c..2222ac0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe225=['request\x20sent','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','VoicePrefix,\x20%s,\x20%s','message','result','catch','util','moment','../../mysqldb','../../config/logger','client','http','redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','register','request','then','info'];(function(_0x1199de,_0x3f4f52){var _0x4614c1=function(_0x52d5b5){while(--_0x52d5b5){_0x1199de['push'](_0x1199de['shift']());}};_0x4614c1(++_0x3f4f52);}(_0xe225,0x1bd));var _0x5e22=function(_0x57643b,_0x1706fe){_0x57643b=_0x57643b-0x0;var _0x53a35b=_0xe225[_0x57643b];return _0x53a35b;};'use strict';var _=require('lodash');var util=require(_0x5e22('0x0'));var moment=require(_0x5e22('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5e22('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0x5e22('0x3'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5e22('0x4')][_0x5e22('0x5')]({'port':0x232a});config[_0x5e22('0x6')]=_[_0x5e22('0x7')](config[_0x5e22('0x6')],{'host':_0x5e22('0x8'),'port':0x18eb});var socket=require(_0x5e22('0x9'))(new Redis(config[_0x5e22('0x6')]));require(_0x5e22('0xa'))[_0x5e22('0xb')](socket);function respondWithRpcPromise(_0x422de4,_0x1fa72a,_0x4da7b3){return new BPromise(function(_0x239a18,_0x58b12c){return client[_0x5e22('0xc')](_0x422de4,_0x4da7b3)[_0x5e22('0xd')](function(_0x2f9b03){logger[_0x5e22('0xe')]('VoicePrefix,\x20%s,\x20%s',_0x1fa72a,_0x5e22('0xf'));logger['debug'](_0x5e22('0x10'),_0x1fa72a,_0x5e22('0xf'),JSON[_0x5e22('0x11')](_0x2f9b03));if(_0x2f9b03[_0x5e22('0x12')]){if(_0x2f9b03[_0x5e22('0x12')]['code']===0x1f4){logger[_0x5e22('0x12')](_0x5e22('0x13'),_0x1fa72a,_0x2f9b03[_0x5e22('0x12')][_0x5e22('0x14')]);return _0x58b12c(_0x2f9b03[_0x5e22('0x12')][_0x5e22('0x14')]);}logger[_0x5e22('0x12')](_0x5e22('0x13'),_0x1fa72a,_0x2f9b03[_0x5e22('0x12')][_0x5e22('0x14')]);return _0x239a18(_0x2f9b03[_0x5e22('0x12')][_0x5e22('0x14')]);}else{logger[_0x5e22('0xe')]('VoicePrefix,\x20%s,\x20%s',_0x1fa72a,'request\x20sent');_0x239a18(_0x2f9b03[_0x5e22('0x15')]['message']);}})[_0x5e22('0x16')](function(_0x3096ee){logger[_0x5e22('0x12')](_0x5e22('0x13'),_0x1fa72a,_0x3096ee);_0x58b12c(_0x3096ee);});});}
\ No newline at end of file
+var _0x8921=['code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./voicePrefix.socket','request','then','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0xaf4e3b,_0x3527ac){var _0x37a1e1=function(_0x49dc7f){while(--_0x49dc7f){_0xaf4e3b['push'](_0xaf4e3b['shift']());}};_0x37a1e1(++_0x3527ac);}(_0x8921,0x9a));var _0x1892=function(_0x2e32d5,_0x430645){_0x2e32d5=_0x2e32d5-0x0;var _0x413aac=_0x8921[_0x2e32d5];return _0x413aac;};'use strict';var _=require(_0x1892('0x0'));var util=require('util');var moment=require(_0x1892('0x1'));var BPromise=require(_0x1892('0x2'));var rs=require(_0x1892('0x3'));var fs=require('fs');var Redis=require(_0x1892('0x4'));var db=require(_0x1892('0x5'))['db'];var utils=require(_0x1892('0x6'));var logger=require(_0x1892('0x7'))(_0x1892('0x8'));var config=require(_0x1892('0x9'));var jayson=require(_0x1892('0xa'));var client=jayson[_0x1892('0xb')][_0x1892('0xc')]({'port':0x232a});config['redis']=_[_0x1892('0xd')](config[_0x1892('0xe')],{'host':_0x1892('0xf'),'port':0x18eb});var socket=require(_0x1892('0x10'))(new Redis(config[_0x1892('0xe')]));require(_0x1892('0x11'))['register'](socket);function respondWithRpcPromise(_0x2b9109,_0x3d3168,_0x7435c2){return new BPromise(function(_0x25683b,_0x1efeed){return client[_0x1892('0x12')](_0x2b9109,_0x7435c2)[_0x1892('0x13')](function(_0x531383){logger[_0x1892('0x14')](_0x1892('0x15'),_0x3d3168,_0x1892('0x16'));logger['debug'](_0x1892('0x17'),_0x3d3168,_0x1892('0x16'),JSON[_0x1892('0x18')](_0x531383));if(_0x531383['error']){if(_0x531383[_0x1892('0x19')][_0x1892('0x1a')]===0x1f4){logger[_0x1892('0x19')](_0x1892('0x15'),_0x3d3168,_0x531383['error']['message']);return _0x1efeed(_0x531383[_0x1892('0x19')]['message']);}logger[_0x1892('0x19')]('VoicePrefix,\x20%s,\x20%s',_0x3d3168,_0x531383[_0x1892('0x19')][_0x1892('0x1b')]);return _0x25683b(_0x531383[_0x1892('0x19')][_0x1892('0x1b')]);}else{logger[_0x1892('0x14')]('VoicePrefix,\x20%s,\x20%s',_0x3d3168,'request\x20sent');_0x25683b(_0x531383[_0x1892('0x1c')]['message']);}})[_0x1892('0x1d')](function(_0x5f29b5){logger[_0x1892('0x19')](_0x1892('0x15'),_0x3d3168,_0x5f29b5);_0x1efeed(_0x5f29b5);});});}
\ No newline at end of file
index c2154ef..75486b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fdb=['removeListener','length','./voicePrefix.events','save','remove','update','emit'];(function(_0x56e423,_0x98016e){var _0x331ddb=function(_0x131190){while(--_0x131190){_0x56e423['push'](_0x56e423['shift']());}};_0x331ddb(++_0x98016e);}(_0x4fdb,0x9c));var _0xb4fd=function(_0x15cc3c,_0x49b96d){_0x15cc3c=_0x15cc3c-0x0;var _0x4a85a1=_0x4fdb[_0x15cc3c];return _0x4a85a1;};'use strict';var VoicePrefixEvents=require(_0xb4fd('0x0'));var events=[_0xb4fd('0x1'),_0xb4fd('0x2'),_0xb4fd('0x3')];function createListener(_0x3b399e,_0xafe34b){return function(_0x260a35){_0xafe34b[_0xb4fd('0x4')](_0x3b399e,_0x260a35);};}function removeListener(_0x1c0b08,_0x5b73bb){return function(){VoicePrefixEvents[_0xb4fd('0x5')](_0x1c0b08,_0x5b73bb);};}exports['register']=function(_0x14052b){for(var _0x5d8b39=0x0,_0x53273f=events[_0xb4fd('0x6')];_0x5d8b39<_0x53273f;_0x5d8b39++){var _0x3af8e3=events[_0x5d8b39];var _0x1151b5=createListener('voicePrefix:'+_0x3af8e3,_0x14052b);VoicePrefixEvents['on'](_0x3af8e3,_0x1151b5);}};
\ No newline at end of file
+var _0x7035=['./voicePrefix.events','remove','update','emit','register','length','voicePrefix:'];(function(_0xe111d,_0x530bb4){var _0x4f8927=function(_0xce464f){while(--_0xce464f){_0xe111d['push'](_0xe111d['shift']());}};_0x4f8927(++_0x530bb4);}(_0x7035,0x15e));var _0x5703=function(_0x2a7b24,_0x4e58a6){_0x2a7b24=_0x2a7b24-0x0;var _0xbd4958=_0x7035[_0x2a7b24];return _0xbd4958;};'use strict';var VoicePrefixEvents=require(_0x5703('0x0'));var events=['save',_0x5703('0x1'),_0x5703('0x2')];function createListener(_0x546b4e,_0xcc3f27){return function(_0x4183e5){_0xcc3f27[_0x5703('0x3')](_0x546b4e,_0x4183e5);};}function removeListener(_0x4d08f2,_0x7e0ebb){return function(){VoicePrefixEvents['removeListener'](_0x4d08f2,_0x7e0ebb);};}exports[_0x5703('0x4')]=function(_0x3fd6a6){for(var _0x56df6c=0x0,_0x2e2e90=events[_0x5703('0x5')];_0x56df6c<_0x2e2e90;_0x56df6c++){var _0x401d33=events[_0x56df6c];var _0x291988=createListener(_0x5703('0x6')+_0x401d33,_0x3fd6a6);VoicePrefixEvents['on'](_0x401d33,_0x291988);}};
\ No newline at end of file
index 936723f..1aa0352 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','isAuthenticated','show','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperBlacks','/:id/teams','getTeams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','/:id/blacklists','getBlackLists','post','create','/:id/clone','addTeams','addAgents','addLists','addBlackLists','put','/:id','update','delete','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','path','connect-timeout'];(function(_0x46759d,_0x13e994){var _0x3e7fe0=function(_0x2f427d){while(--_0x2f427d){_0x46759d['push'](_0x46759d['shift']());}};_0x3e7fe0(++_0x13e994);}(_0xb10b,0x12a));var _0xbb10=function(_0x2f5a22,_0x5e9f03){_0x2f5a22=_0x2f5a22-0x0;var _0x326b70=_0xb10b[_0x2f5a22];return _0x326b70;};'use strict';var multer=require(_0xbb10('0x0'));var util=require('util');var path=require(_0xbb10('0x1'));var timeout=require(_0xbb10('0x2'));var express=require(_0xbb10('0x3'));var router=express['Router']();var fs_extra=require(_0xbb10('0x4'));var auth=require(_0xbb10('0x5'));var interaction=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var controller=require(_0xbb10('0x8'));router[_0xbb10('0x9')]('/',auth['isAuthenticated'](),controller[_0xbb10('0xa')]);router[_0xbb10('0x9')]('/:id',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0x9')](_0xbb10('0xf'),auth['isAuthenticated'](),controller['getHopperHistories']);router[_0xbb10('0x9')](_0xbb10('0x10'),auth[_0xbb10('0xb')](),controller['getHopperFinals']);router[_0xbb10('0x9')]('/:id/hopper_black',auth[_0xbb10('0xb')](),controller[_0xbb10('0x11')]);router[_0xbb10('0x9')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x13')]);router['get'](_0xbb10('0x14'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x15')]);router[_0xbb10('0x9')](_0xbb10('0x16'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x17')]);router[_0xbb10('0x9')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller['getLists']);router[_0xbb10('0x9')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1a')]);router[_0xbb10('0x1b')]('/',auth[_0xbb10('0xb')](),controller[_0xbb10('0x1c')]);router[_0xbb10('0x1b')](_0xbb10('0x1d'),auth[_0xbb10('0xb')](),controller['clone']);router[_0xbb10('0x1b')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1e')]);router[_0xbb10('0x1b')](_0xbb10('0x14'),auth['isAuthenticated'](),controller[_0xbb10('0x1f')]);router[_0xbb10('0x1b')]('/:id/lists',auth['isAuthenticated'](),controller[_0xbb10('0x20')]);router[_0xbb10('0x1b')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x21')]);router[_0xbb10('0x22')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x24')]);router[_0xbb10('0x25')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller['destroy']);router['delete']('/:id/teams',auth[_0xbb10('0xb')](),controller[_0xbb10('0x26')]);router[_0xbb10('0x25')]('/:id/users',auth[_0xbb10('0xb')](),controller[_0xbb10('0x27')]);router[_0xbb10('0x25')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x28')]);router[_0xbb10('0x25')]('/:id/blacklists',auth[_0xbb10('0xb')](),controller[_0xbb10('0x29')]);module[_0xbb10('0x2a')]=router;
\ No newline at end of file
+var _0xa9e0=['addAgents','/:id/blacklists','addBlackLists','update','delete','destroy','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','/:id','getHoppers','/:id/hopper_histories','isAuthenticated','getHopperHistories','/:id/hopper_black','getHopperBlacks','/:id/teams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','getLists','post','create','/:id/clone','clone','addTeams'];(function(_0xb61753,_0x566e13){var _0x36a409=function(_0x4b5ad8){while(--_0x4b5ad8){_0xb61753['push'](_0xb61753['shift']());}};_0x36a409(++_0x566e13);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xa9e0[_0x2160a9];return _0xa88cf7;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));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 11aa002..2168394 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2acc=['#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','name','ENUM','inbound','STRING','default','ringall','fewestcalls','rrmemory','linear','wrandom','rrordered','getDataValue','dialMethod','strategy','booked','progressive','predictive','INTEGER','yes','all','once','TEXT','setDataValue','join','periodic_announce','joinempty','split','leavewhenempty','acw','wrapuptime','BOOLEAN','Active/Disactive\x20Campaign','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','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\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','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'];(function(_0x2a1f80,_0xccd024){var _0x54f352=function(_0x53538a){while(--_0x53538a){_0x2a1f80['push'](_0x2a1f80['shift']());}};_0x54f352(++_0xccd024);}(_0x2acc,0x1a9));var _0xc2ac=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x2acc[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0xc2ac('0x0'));module[_0xc2ac('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xc2ac('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xc2ac('0x3')](_0xc2ac('0x4'),'outbound'),'allowNull':![],'defaultValue':_0xc2ac('0x4')},'musiconhold':{'type':Sequelize[_0xc2ac('0x5')],'defaultValue':_0xc2ac('0x6')},'announce':{'type':Sequelize['STRING'],'defaultValue':''},'strategy':{'type':Sequelize['ENUM']('rr',_0xc2ac('0x7'),'leastrecent',_0xc2ac('0x8'),'random',_0xc2ac('0x9'),_0xc2ac('0xa'),_0xc2ac('0xb'),_0xc2ac('0xc')),'allowNull':![],'defaultValue':_0xc2ac('0x7'),'set':function(_0x4a11cc){this['setDataValue']('strategy',_0x4a11cc?_0x4a11cc:_0xc2ac('0x9'));},'get':function(){var _0x3eed6b=this[_0xc2ac('0xd')]('type');var _0x3709a2=this['getDataValue'](_0xc2ac('0xe'));var _0x322152=this[_0xc2ac('0xd')](_0xc2ac('0xf'));if(_0x3eed6b===_0xc2ac('0x4')){return _0x322152;}if(_0x3709a2===_0xc2ac('0x10')&&_0x322152==='rrmemory'||_0x3709a2===_0xc2ac('0x10')&&_0x322152==='roundrobin'){return _0x322152;}if(_0x3709a2===_0xc2ac('0x11')||_0x3709a2===_0xc2ac('0x12')||_0x3709a2==='power'){return _0x322152;}return null;}},'servicelevel':{'type':Sequelize[_0xc2ac('0x13')](0xb),'defaultValue':0x0},'context':{'type':Sequelize['STRING'],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0xc2ac('0x13')](0xb)},'timeout':{'type':Sequelize[_0xc2ac('0x13')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0xc2ac('0x5')]},'weight':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0xc2ac('0x3')](_0xc2ac('0x14'),'no'),'defaultValue':'yes'},'autopause':{'type':Sequelize[_0xc2ac('0x3')]('yes','no',_0xc2ac('0x15')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0xc2ac('0x13')](0xb)},'autopausebusy':{'type':Sequelize[_0xc2ac('0x3')](_0xc2ac('0x14'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0xc2ac('0x3')](_0xc2ac('0x14'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0xc2ac('0x3')](_0xc2ac('0x14'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0xc2ac('0x3')](_0xc2ac('0x14'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0xc2ac('0x3')](_0xc2ac('0x14'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize['ENUM'](_0xc2ac('0x14'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0xc2ac('0x5')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0xc2ac('0x5')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0xc2ac('0x13')](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[_0xc2ac('0x3')]('yes','no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0xc2ac('0x3')](_0xc2ac('0x14'),'no'),'defaultValue':_0xc2ac('0x14')},'announce_holdtime':{'type':Sequelize[_0xc2ac('0x3')](_0xc2ac('0x14'),'no',_0xc2ac('0x16')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0xc2ac('0x5')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0xc2ac('0x3')](_0xc2ac('0x14'),'no')},'announce_position_limit':{'type':Sequelize[_0xc2ac('0x13')](0xb)},'announce_round_seconds':{'type':Sequelize[_0xc2ac('0x3')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0xc2ac('0x5')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0xc2ac('0x5')]},'queue_youarenext':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0xc2ac('0x5')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xc2ac('0x5')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0xc2ac('0x5')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xc2ac('0x5')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0xc2ac('0x5')],'defaultValue':null},'queue_seconds':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0xc2ac('0x5')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xc2ac('0x5')]},'queue_quantity1':{'type':Sequelize['STRING']},'queue_quantity2':{'type':Sequelize['STRING']},'queue_periodic_announce':{'type':Sequelize[_0xc2ac('0x5')]},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize[_0xc2ac('0x17')],'set':function(_0x2536da){this[_0xc2ac('0x18')]('periodic_announce',_0x2536da?_0x2536da[_0xc2ac('0x19')](','):[]);},'get':function(){return this[_0xc2ac('0xd')](_0xc2ac('0x1a'))?this['getDataValue']('periodic_announce')['split'](','):[];}},'joinempty':{'type':Sequelize[_0xc2ac('0x5')],'defaultValue':'yes','set':function(_0x303ada){this['setDataValue']('joinempty',_0x303ada?_0x303ada['join'](','):undefined);},'get':function(){return this['getDataValue'](_0xc2ac('0x1b'))?this['getDataValue'](_0xc2ac('0x1b'))[_0xc2ac('0x1c')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0xc2ac('0x5')],'defaultValue':'no','set':function(_0x4b7d87){this[_0xc2ac('0x18')](_0xc2ac('0x1d'),_0x4b7d87?_0x4b7d87[_0xc2ac('0x19')](','):undefined);},'get':function(){return this['getDataValue'](_0xc2ac('0x1d'))?this[_0xc2ac('0xd')](_0xc2ac('0x1d'))[_0xc2ac('0x1c')](','):undefined;}},'reportholdtime':{'type':Sequelize['ENUM'](_0xc2ac('0x14'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0xc2ac('0x3')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0xc2ac('0x13')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0xc2ac('0x3')](_0xc2ac('0x14'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xc2ac('0x5')]},'description':{'type':Sequelize['STRING']},'acw':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'set':function(_0x4018a1){this[_0xc2ac('0x18')](_0xc2ac('0x1e'),_0x4018a1);if(_0x4018a1){if(this[_0xc2ac('0xd')](_0xc2ac('0x1f'))<0x2){this[_0xc2ac('0x18')](_0xc2ac('0x1f'),0x2);}}}},'acwTimeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0xc2ac('0x20')],'defaultValue':0x0,'comment':_0xc2ac('0x21')},'dialMethod':{'type':Sequelize['ENUM']('preview',_0xc2ac('0x11'),'power','predictive','booked'),'defaultValue':_0xc2ac('0x11'),'comment':'Dial\x20Method.'},'dialLimitChannel':{'type':Sequelize[_0xc2ac('0x13')](0x4)[_0xc2ac('0x22')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xc2ac('0x23')},'dialLimitQueue':{'type':Sequelize[_0xc2ac('0x13')](0x4)[_0xc2ac('0x22')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xc2ac('0x24')},'dialPowerLevel':{'type':Sequelize[_0xc2ac('0x25')](0x2)['UNSIGNED'],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':'Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).'},'dialPredictiveOptimization':{'type':Sequelize[_0xc2ac('0x3')](_0xc2ac('0x26'),_0xc2ac('0x27')),'defaultValue':_0xc2ac('0x27'),'comment':_0xc2ac('0x28')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0xc2ac('0x25')](0x2)[_0xc2ac('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':'Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)'},'dialPredictiveInterval':{'type':Sequelize[_0xc2ac('0x13')](0x3)[_0xc2ac('0x22')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0xc2ac('0x29')},'dialOriginateCallerIdName':{'type':Sequelize[_0xc2ac('0x5')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xc2ac('0x5')]},'dialOriginateTimeout':{'type':Sequelize[_0xc2ac('0x13')](0x3)[_0xc2ac('0x22')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc2ac('0x2a')},'dialQueueOptions':{'type':Sequelize[_0xc2ac('0x5')],'defaultValue':_0xc2ac('0x2b'),'comment':'https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue'},'dialQueueTimeout':{'type':Sequelize[_0xc2ac('0x13')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize[_0xc2ac('0x5')],'comment':_0xc2ac('0x2c')},'dialCongestionMaxRetry':{'type':Sequelize[_0xc2ac('0x13')](0x3)[_0xc2ac('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc2ac('0x2d')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xc2ac('0x13')](0x5)[_0xc2ac('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc2ac('0x2e')},'dialBusyMaxRetry':{'type':Sequelize[_0xc2ac('0x13')](0x3)[_0xc2ac('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xc2ac('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc2ac('0x2f')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xc2ac('0x13')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xc2ac('0x13')](0x5)[_0xc2ac('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc2ac('0x30')},'dialGlobalMaxRetry':{'type':Sequelize[_0xc2ac('0x13')](0x3)[_0xc2ac('0x22')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xc2ac('0x31')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0xc2ac('0x32')},'dialPrefix':{'type':Sequelize[_0xc2ac('0x5')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0xc2ac('0x3')](_0xc2ac('0x33'),_0xc2ac('0x34'),_0xc2ac('0x35')),'defaultValue':_0xc2ac('0x33')},'dialAMDActive':{'type':Sequelize[_0xc2ac('0x20')],'defaultValue':0x0,'comment':_0xc2ac('0x36')},'dialAMDInitialSilence':{'type':Sequelize[_0xc2ac('0x13')](0x9)[_0xc2ac('0x22')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xc2ac('0x37')},'dialAMDGreeting':{'type':Sequelize[_0xc2ac('0x13')](0x9)[_0xc2ac('0x22')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xc2ac('0x38')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0xc2ac('0x22')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xc2ac('0x39')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)[_0xc2ac('0x22')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xc2ac('0x3a')},'dialAMDMinWordLength':{'type':Sequelize[_0xc2ac('0x13')](0x9)[_0xc2ac('0x22')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xc2ac('0x3b')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xc2ac('0x13')](0x9)[_0xc2ac('0x22')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xc2ac('0x3c')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xc2ac('0x13')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xc2ac('0x3d')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xc2ac('0x13')](0x5)[_0xc2ac('0x22')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xc2ac('0x3e')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xc2ac('0x13')](0x9)[_0xc2ac('0x22')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialRecallMeTimeout':{'type':Sequelize[_0xc2ac('0x13')](0x5)[_0xc2ac('0x22')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0xc2ac('0x3f')},'dialRecallInQueue':{'type':Sequelize[_0xc2ac('0x20')],'defaultValue':0x0,'comment':_0xc2ac('0x40')},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0xc2ac('0x41'),_0xc2ac('0x42')),'defaultValue':_0xc2ac('0x41')},'dialQueueProject2':{'type':Sequelize[_0xc2ac('0x5')],'comment':_0xc2ac('0x2c')},'dialAgiAfterHangupClient':{'type':Sequelize[_0xc2ac('0x20')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0xc2ac('0x20')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xc2ac('0x13')](0x3)[_0xc2ac('0x22')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xc2ac('0x43')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xc2ac('0x44')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xc2ac('0x13')](0x3)[_0xc2ac('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc2ac('0x45')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xc2ac('0x13')](0x5)[_0xc2ac('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc2ac('0x46')},'dialDropMaxRetry':{'type':Sequelize[_0xc2ac('0x13')](0x3)[_0xc2ac('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc2ac('0x47')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xc2ac('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xc2ac('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc2ac('0x48')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc2ac('0x49')},'dialMachineMaxRetry':{'type':Sequelize[_0xc2ac('0x13')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc2ac('0x4a')},'dialMachineRetryFrequency':{'type':Sequelize[_0xc2ac('0x13')](0x5)[_0xc2ac('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc2ac('0x4b')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xc2ac('0x13')](0x3)[_0xc2ac('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc2ac('0x4c')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xc2ac('0x13')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'mandatoryDispositionPauseId':{'type':Sequelize[_0xc2ac('0x13')],'allowNull':!![],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xc2ac('0x20')],'defaultValue':![],'comment':_0xc2ac('0x4d'),'set':function(_0xacdb32){if(!_0xacdb32)this[_0xc2ac('0x18')](_0xc2ac('0x4e'),null);this['setDataValue'](_0xc2ac('0x4f'),_0xacdb32);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0xc2ac('0x13')](0x3)[_0xc2ac('0x22')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0xc2ac('0x13')](0x3)[_0xc2ac('0x22')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0xc2ac('0x20')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize[_0xc2ac('0x13')](0x3)['UNSIGNED'],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0xc2ac('0x20')],'defaultValue':![]}};
\ No newline at end of file
+var _0x9fb7=['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)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','name','inbound','outbound','default','ENUM','ringall','leastrecent','fewestcalls','random','linear','wrandom','rrordered','setDataValue','rrmemory','type','getDataValue','dialMethod','strategy','booked','roundrobin','progressive','predictive','power','INTEGER','yes','all','once','TEXT','periodic_announce','join','split','joinempty','leavewhenempty','wrapuptime','BOOLEAN','preview','Dial\x20Method.','UNSIGNED','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','agentBusyFactor','dropRate','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','07:00-22:00,*,*,*','always','onlyIfOpen','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'];(function(_0x3a0ae1,_0x341528){var _0x5aac29=function(_0x1e9307){while(--_0x1e9307){_0x3a0ae1['push'](_0x3a0ae1['shift']());}};_0x5aac29(++_0x341528);}(_0x9fb7,0xa5));var _0x79fb=function(_0x20a558,_0x160e0e){_0x20a558=_0x20a558-0x0;var _0x53d3f7=_0x9fb7[_0x20a558];return _0x53d3f7;};'use strict';var Sequelize=require(_0x79fb('0x0'));module[_0x79fb('0x1')]={'name':{'type':Sequelize[_0x79fb('0x2')],'allowNull':![],'unique':_0x79fb('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM'](_0x79fb('0x4'),_0x79fb('0x5')),'allowNull':![],'defaultValue':_0x79fb('0x4')},'musiconhold':{'type':Sequelize[_0x79fb('0x2')],'defaultValue':_0x79fb('0x6')},'announce':{'type':Sequelize[_0x79fb('0x2')],'defaultValue':''},'strategy':{'type':Sequelize[_0x79fb('0x7')]('rr',_0x79fb('0x8'),_0x79fb('0x9'),_0x79fb('0xa'),_0x79fb('0xb'),'rrmemory',_0x79fb('0xc'),_0x79fb('0xd'),_0x79fb('0xe')),'allowNull':![],'defaultValue':_0x79fb('0x8'),'set':function(_0x239392){this[_0x79fb('0xf')]('strategy',_0x239392?_0x239392:_0x79fb('0x10'));},'get':function(){var _0x2fc5dc=this['getDataValue'](_0x79fb('0x11'));var _0x37c027=this[_0x79fb('0x12')](_0x79fb('0x13'));var _0x5afb3f=this[_0x79fb('0x12')](_0x79fb('0x14'));if(_0x2fc5dc==='inbound'){return _0x5afb3f;}if(_0x37c027===_0x79fb('0x15')&&_0x5afb3f===_0x79fb('0x10')||_0x37c027===_0x79fb('0x15')&&_0x5afb3f===_0x79fb('0x16')){return _0x5afb3f;}if(_0x37c027===_0x79fb('0x17')||_0x37c027===_0x79fb('0x18')||_0x37c027===_0x79fb('0x19')){return _0x5afb3f;}return null;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x79fb('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x79fb('0x1a')](0xb)},'timeout':{'type':Sequelize[_0x79fb('0x1a')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x79fb('0x1a')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x79fb('0x2')]},'weight':{'type':Sequelize[_0x79fb('0x1a')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x79fb('0x1a')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize['ENUM'](_0x79fb('0x1b'),'no'),'defaultValue':_0x79fb('0x1b')},'autopause':{'type':Sequelize['ENUM'](_0x79fb('0x1b'),'no',_0x79fb('0x1c')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize['INTEGER'](0xb)},'autopausebusy':{'type':Sequelize[_0x79fb('0x7')](_0x79fb('0x1b'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x79fb('0x7')](_0x79fb('0x1b'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x79fb('0x1a')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x79fb('0x7')](_0x79fb('0x1b'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize['ENUM'](_0x79fb('0x1b'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize['ENUM'](_0x79fb('0x1b'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x79fb('0x7')](_0x79fb('0x1b'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0x79fb('0x2')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x79fb('0x2')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x79fb('0x1a')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x79fb('0x1a')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x79fb('0x1a')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x79fb('0x7')](_0x79fb('0x1b'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x79fb('0x7')](_0x79fb('0x1b'),'no'),'defaultValue':_0x79fb('0x1b')},'announce_holdtime':{'type':Sequelize[_0x79fb('0x7')]('yes','no',_0x79fb('0x1d')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x79fb('0x2')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x79fb('0x7')](_0x79fb('0x1b'),'no')},'announce_position_limit':{'type':Sequelize[_0x79fb('0x1a')](0xb)},'announce_round_seconds':{'type':Sequelize[_0x79fb('0x7')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize['STRING'],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x79fb('0x2')]},'queue_youarenext':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x79fb('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x79fb('0x2')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x79fb('0x2')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x79fb('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x79fb('0x2')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x79fb('0x2')],'defaultValue':null},'queue_thankyou':{'type':Sequelize['STRING'],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x79fb('0x2')]},'queue_quantity1':{'type':Sequelize[_0x79fb('0x2')]},'queue_quantity2':{'type':Sequelize[_0x79fb('0x2')]},'queue_periodic_announce':{'type':Sequelize[_0x79fb('0x2')]},'queue_less_than':{'type':Sequelize[_0x79fb('0x2')]},'periodic_announce':{'type':Sequelize[_0x79fb('0x1e')],'set':function(_0x4fa3fe){this[_0x79fb('0xf')](_0x79fb('0x1f'),_0x4fa3fe?_0x4fa3fe[_0x79fb('0x20')](','):[]);},'get':function(){return this[_0x79fb('0x12')](_0x79fb('0x1f'))?this[_0x79fb('0x12')](_0x79fb('0x1f'))[_0x79fb('0x21')](','):[];}},'joinempty':{'type':Sequelize[_0x79fb('0x2')],'defaultValue':_0x79fb('0x1b'),'set':function(_0x3a8fe2){this[_0x79fb('0xf')](_0x79fb('0x22'),_0x3a8fe2?_0x3a8fe2[_0x79fb('0x20')](','):undefined);},'get':function(){return this[_0x79fb('0x12')](_0x79fb('0x22'))?this[_0x79fb('0x12')](_0x79fb('0x22'))[_0x79fb('0x21')](','):undefined;}},'leavewhenempty':{'type':Sequelize['STRING'],'defaultValue':'no','set':function(_0x3bb17c){this['setDataValue'](_0x79fb('0x23'),_0x3bb17c?_0x3bb17c[_0x79fb('0x20')](','):undefined);},'get':function(){return this[_0x79fb('0x12')](_0x79fb('0x23'))?this[_0x79fb('0x12')](_0x79fb('0x23'))[_0x79fb('0x21')](','):undefined;}},'reportholdtime':{'type':Sequelize['ENUM'](_0x79fb('0x1b'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x79fb('0x7')](_0x79fb('0x1b'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x79fb('0x1a')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x79fb('0x7')](_0x79fb('0x1b'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'acw':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'set':function(_0x3062cc){this[_0x79fb('0xf')]('acw',_0x3062cc);if(_0x3062cc){if(this['getDataValue'](_0x79fb('0x24'))<0x2){this[_0x79fb('0xf')]('wrapuptime',0x2);}}}},'acwTimeout':{'type':Sequelize[_0x79fb('0x1a')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x79fb('0x25')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'dialMethod':{'type':Sequelize[_0x79fb('0x7')](_0x79fb('0x26'),'progressive',_0x79fb('0x19'),'predictive',_0x79fb('0x15')),'defaultValue':'progressive','comment':_0x79fb('0x27')},'dialLimitChannel':{'type':Sequelize[_0x79fb('0x1a')](0x4)[_0x79fb('0x28')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20channels,\x200\x20means\x20unlimited.'},'dialLimitQueue':{'type':Sequelize[_0x79fb('0x1a')](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x79fb('0x29')},'dialPowerLevel':{'type':Sequelize[_0x79fb('0x2a')](0x2)[_0x79fb('0x28')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':'Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).'},'dialPredictiveOptimization':{'type':Sequelize[_0x79fb('0x7')](_0x79fb('0x2b'),_0x79fb('0x2c')),'defaultValue':_0x79fb('0x2c'),'comment':'Only\x20for\x20predictive\x20method.'},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x79fb('0x2a')](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':'Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)'},'dialPredictiveInterval':{'type':Sequelize[_0x79fb('0x1a')](0x3)[_0x79fb('0x28')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x79fb('0x2d')},'dialOriginateCallerIdName':{'type':Sequelize[_0x79fb('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x79fb('0x2')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x79fb('0x2e')},'dialQueueOptions':{'type':Sequelize['STRING'],'defaultValue':_0x79fb('0x2f'),'comment':_0x79fb('0x30')},'dialQueueTimeout':{'type':Sequelize[_0x79fb('0x1a')](0x3)[_0x79fb('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x79fb('0x31')},'dialQueueProject':{'type':Sequelize['STRING'],'comment':_0x79fb('0x32')},'dialCongestionMaxRetry':{'type':Sequelize[_0x79fb('0x1a')](0x3)[_0x79fb('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0x79fb('0x1a')](0x5)[_0x79fb('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x79fb('0x33')},'dialBusyMaxRetry':{'type':Sequelize[_0x79fb('0x1a')](0x3)[_0x79fb('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x79fb('0x34')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x79fb('0x1a')](0x3)[_0x79fb('0x28')],'defaultValue':0x3,'comment':_0x79fb('0x35')},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x79fb('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x79fb('0x36')},'dialGlobalMaxRetry':{'type':Sequelize[_0x79fb('0x1a')](0x3)[_0x79fb('0x28')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize[_0x79fb('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x79fb('0x2')],'defaultValue':_0x79fb('0x37')},'dialPrefix':{'type':Sequelize[_0x79fb('0x2')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x79fb('0x7')](_0x79fb('0x38'),'never',_0x79fb('0x39')),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0x79fb('0x25')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0x79fb('0x1a')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0x79fb('0x1a')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x79fb('0x3a')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x79fb('0x1a')](0x9)[_0x79fb('0x28')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x79fb('0x3b')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)[_0x79fb('0x28')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x79fb('0x3c')},'dialAMDMinWordLength':{'type':Sequelize[_0x79fb('0x1a')](0x9)[_0x79fb('0x28')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x79fb('0x3d')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x79fb('0x1a')](0x9)[_0x79fb('0x28')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x79fb('0x1a')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x79fb('0x3e')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x79fb('0x1a')](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x79fb('0x3f')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x79fb('0x1a')](0x9)[_0x79fb('0x28')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x79fb('0x40')},'dialRecallMeTimeout':{'type':Sequelize[_0x79fb('0x1a')](0x5)['UNSIGNED'],'validate':{'min':0x1},'defaultValue':0x1e,'comment':'#RecallMe\x20Timeout\x20(min:1)'},'dialRecallInQueue':{'type':Sequelize[_0x79fb('0x25')],'defaultValue':0x0,'comment':'Active/Disactive\x20Recall\x20In\x20Queue'},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0x79fb('0x41'),_0x79fb('0x42')),'defaultValue':_0x79fb('0x41')},'dialQueueProject2':{'type':Sequelize[_0x79fb('0x2')],'comment':_0x79fb('0x32')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x79fb('0x25')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x79fb('0x25')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x79fb('0x1a')](0x3)[_0x79fb('0x28')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x79fb('0x43')},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x79fb('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x79fb('0x44')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x79fb('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x79fb('0x45')},'dialDropMaxRetry':{'type':Sequelize[_0x79fb('0x1a')](0x3)[_0x79fb('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize[_0x79fb('0x1a')](0x5)[_0x79fb('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0x79fb('0x1a')](0x3)[_0x79fb('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x79fb('0x46')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x79fb('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x79fb('0x47')},'dialMachineMaxRetry':{'type':Sequelize[_0x79fb('0x1a')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x79fb('0x48')},'dialMachineRetryFrequency':{'type':Sequelize[_0x79fb('0x1a')](0x5)[_0x79fb('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x79fb('0x49')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x79fb('0x1a')](0x3)[_0x79fb('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x79fb('0x4a')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x79fb('0x1a')](0x5)[_0x79fb('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'mandatoryDispositionPauseId':{'type':Sequelize[_0x79fb('0x1a')],'allowNull':!![],'comment':_0x79fb('0x4b')},'mandatoryDisposition':{'type':Sequelize[_0x79fb('0x25')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x519142){if(!_0x519142)this['setDataValue'](_0x79fb('0x4c'),null);this[_0x79fb('0xf')](_0x79fb('0x4d'),_0x519142);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x79fb('0x1a')](0x3)['UNSIGNED'],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x79fb('0x1a')](0x3)[_0x79fb('0x28')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0x79fb('0x25')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize[_0x79fb('0x1a')](0x3)['UNSIGNED'],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0x79fb('0x25')],'defaultValue':![]}};
\ No newline at end of file
index c6f8668..b8e35e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1c6=['model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','options','VoiceQueue','includeAll','findAll','rows','catch','show','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','rawAttributes','include','omit','updatedAt','body','createdAt','getHoppers','findOne','VoiceQueueId','CmHopper','getHopperHistories','CmHopperHistory','CmHopperFinal','getHopperBlacks','CmHopperBlack','nolimit','getTeams','Team','addTeams','teams','User','online','voicePause','interface','flatMap','Agents','forEach','penalty','transaction','each','TeamVoiceQueue','findOrCreate','UserVoiceQueueRt','isNil','SIP/%s','emit','removeTeams','ids','field','tq.TeamId','from','team_has_voice_queues','join','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','sequelize','toString','SELECT','every','TeamId','removeAgents','userVoiceQueue:remove','addAgents','userVoiceQueue:save','isEmpty','upsert','format','all','getAgents','getMembers','CmList','getLists','addLists','YYYY-MM-DD\x20HH:mm:ss','spread','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','select','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','CmListId','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','COALESCE(phone,\x27\x27)','onlyIfOpen','CmHopperId','OrderBy','h.id','ci.item','ci.OrderBy+1','cm_contact_has_items','h.ContactId=ci.CmContactId','h.scheduledat=?','ci.ItemClass=?','PHONE','getBlackLists','addBlackLists','cm_hopper_black','NOW()','removeBlackLists','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','to-csv','ejs','fs-extra','squel','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../mysqldb','redis','./voiceQueue.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','VoiceQueues','inbound','QueueCampaigns','outbound','filter','ignore','map','value','includes','type','name','UserProfileResource','then','error','stack','send','index','fieldName','key'];(function(_0x5b03e2,_0x1c007a){var _0x35ca48=function(_0xa3cd19){while(--_0xa3cd19){_0x5b03e2['push'](_0x5b03e2['shift']());}};_0x35ca48(++_0x1c007a);}(_0xf1c6,0x145));var _0x6f1c=function(_0x6ea6e1,_0xda301c){_0x6ea6e1=_0x6ea6e1-0x0;var _0x3f3be2=_0xf1c6[_0x6ea6e1];return _0x3f3be2;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x6f1c('0x0'));var jsonpatch=require(_0x6f1c('0x1'));var rp=require(_0x6f1c('0x2'));var moment=require(_0x6f1c('0x3'));var BPromise=require(_0x6f1c('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x6f1c('0x5'));var sox=require('sox');var csv=require(_0x6f1c('0x6'));var ejs=require(_0x6f1c('0x7'));var fs=require('fs');var fs_extra=require(_0x6f1c('0x8'));var _=require('lodash');var squel=require(_0x6f1c('0x9'));var crypto=require('crypto');var jsforce=require(_0x6f1c('0xa'));var deskjs=require(_0x6f1c('0xb'));var toCsv=require(_0x6f1c('0x6'));var querystring=require('querystring');var Papa=require(_0x6f1c('0xc'));var Redis=require('ioredis');var authService=require(_0x6f1c('0xd'));var qs=require(_0x6f1c('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6f1c('0xf'));var logger=require(_0x6f1c('0x10'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x6f1c('0x11'))['db'];config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6f1c('0x12')]));require(_0x6f1c('0x13'))[_0x6f1c('0x14')](socket);function respondWithStatusCode(_0x5549d1,_0x82203a){_0x82203a=_0x82203a||0xcc;return function(_0x238c62){if(_0x238c62){return _0x5549d1[_0x6f1c('0x15')](_0x82203a);}return _0x5549d1['status'](_0x82203a)[_0x6f1c('0x16')]();};}function respondWithResult(_0x210abb,_0x5515fa){_0x5515fa=_0x5515fa||0xc8;return function(_0x28fc5f){if(_0x28fc5f){return _0x210abb[_0x6f1c('0x17')](_0x5515fa)[_0x6f1c('0x18')](_0x28fc5f);}};}function respondWithFilteredResult(_0x6e2d39,_0x3c3e21){return function(_0x16d2bb){if(_0x16d2bb){var _0x491151=typeof _0x3c3e21[_0x6f1c('0x19')]===_0x6f1c('0x1a')&&typeof _0x3c3e21[_0x6f1c('0x1b')]===_0x6f1c('0x1a');var _0x20c2bb=_0x16d2bb[_0x6f1c('0x1c')];var _0x4dbb3f=_0x491151?0x0:_0x3c3e21['offset'];var _0x58c2d8=_0x491151?_0x16d2bb[_0x6f1c('0x1c')]:_0x3c3e21['offset']+_0x3c3e21[_0x6f1c('0x1b')];var _0x4f6637;if(_0x58c2d8>=_0x20c2bb){_0x58c2d8=_0x20c2bb;_0x4f6637=0xc8;}else{_0x4f6637=0xce;}_0x6e2d39[_0x6f1c('0x17')](_0x4f6637);return _0x6e2d39[_0x6f1c('0x1d')](_0x6f1c('0x1e'),_0x4dbb3f+'-'+_0x58c2d8+'/'+_0x20c2bb)[_0x6f1c('0x18')](_0x16d2bb);}return null;};}function patchUpdates(_0x2ed8f1){return function(_0x3a082c){try{jsonpatch[_0x6f1c('0x1f')](_0x3a082c,_0x2ed8f1,!![]);}catch(_0x35934b){return BPromise[_0x6f1c('0x20')](_0x35934b);}return _0x3a082c[_0x6f1c('0x21')]();};}function saveUpdates(_0x130bae,_0x2da230){return function(_0x388416){if(_0x388416){return _0x388416[_0x6f1c('0x22')](_0x130bae)['then'](function(_0x2a3b6a){return _0x2a3b6a;});}return null;};}function removeEntity(_0x2b29af,_0x4a8fc1){return function(_0x3c0dd1){if(_0x3c0dd1){return _0x3c0dd1[_0x6f1c('0x23')]()['then'](function(){var _0x59931c=_0x3c0dd1['get']({'plain':!![]});var _0x500e36=[{'name':_0x6f1c('0x24'),'value':_0x6f1c('0x25'),'ignore':![]},{'name':_0x6f1c('0x26'),'value':_0x6f1c('0x27'),'ignore':![]}];var _0x29b952=_(_0x500e36)[_0x6f1c('0x28')](_0x6f1c('0x29'))[_0x6f1c('0x2a')](_0x6f1c('0x2b'))[_0x6f1c('0x2b')]();if(_[_0x6f1c('0x2c')](_0x29b952,_0x59931c[_0x6f1c('0x2d')])){return;}var _0x4ca3cc=_['find'](_0x500e36,[_0x6f1c('0x2b'),_0x59931c[_0x6f1c('0x2d')]])[_0x6f1c('0x2e')];return db[_0x6f1c('0x2f')][_0x6f1c('0x23')]({'where':{'type':_0x4ca3cc,'resourceId':_0x59931c['id']}})['then'](function(){return _0x3c0dd1;});})[_0x6f1c('0x30')](function(){_0x2b29af['status'](0xcc)[_0x6f1c('0x16')]();});}};}function handleEntityNotFound(_0x48c5f4,_0x23b575){return function(_0x16045d){if(!_0x16045d){_0x48c5f4[_0x6f1c('0x15')](0x194);}return _0x16045d;};}function handleError(_0x14d3cf,_0x2c7bad){_0x2c7bad=_0x2c7bad||0x1f4;return function(_0x1c8619){logger[_0x6f1c('0x31')](_0x1c8619[_0x6f1c('0x32')]);if(_0x1c8619[_0x6f1c('0x2e')]){delete _0x1c8619[_0x6f1c('0x2e')];}_0x14d3cf['status'](_0x2c7bad)[_0x6f1c('0x33')](_0x1c8619);};}exports[_0x6f1c('0x34')]=function(_0x1e5e4f,_0x5d7a33){var _0x317df4={},_0x1609e3={},_0x454507={'count':0x0,'rows':[]};var _0x326f85=_[_0x6f1c('0x2a')](db['VoiceQueue']['rawAttributes'],function(_0x4aa4af){return{'name':_0x4aa4af[_0x6f1c('0x35')],'type':_0x4aa4af[_0x6f1c('0x2d')][_0x6f1c('0x36')]};});_0x1609e3[_0x6f1c('0x37')]=_[_0x6f1c('0x2a')](_0x326f85,_0x6f1c('0x2e'));_0x1609e3[_0x6f1c('0x38')]=_[_0x6f1c('0x39')](_0x1e5e4f[_0x6f1c('0x38')]);_0x1609e3[_0x6f1c('0x3a')]=_[_0x6f1c('0x3b')](_0x1609e3[_0x6f1c('0x37')],_0x1609e3[_0x6f1c('0x38')]);_0x317df4[_0x6f1c('0x3c')]=_[_0x6f1c('0x3b')](_0x1609e3['model'],qs['fields'](_0x1e5e4f[_0x6f1c('0x38')][_0x6f1c('0x3d')]));_0x317df4[_0x6f1c('0x3c')]=_0x317df4[_0x6f1c('0x3c')][_0x6f1c('0x3e')]?_0x317df4[_0x6f1c('0x3c')]:_0x1609e3[_0x6f1c('0x37')];if(!_0x1e5e4f[_0x6f1c('0x38')][_0x6f1c('0x3f')]('nolimit')){_0x317df4[_0x6f1c('0x1b')]=qs[_0x6f1c('0x1b')](_0x1e5e4f[_0x6f1c('0x38')][_0x6f1c('0x1b')]);_0x317df4['offset']=qs[_0x6f1c('0x19')](_0x1e5e4f['query'][_0x6f1c('0x19')]);}_0x317df4[_0x6f1c('0x40')]=qs[_0x6f1c('0x41')](_0x1e5e4f[_0x6f1c('0x38')][_0x6f1c('0x41')]);_0x317df4[_0x6f1c('0x42')]=qs[_0x6f1c('0x3a')](_[_0x6f1c('0x43')](_0x1e5e4f[_0x6f1c('0x38')],_0x1609e3[_0x6f1c('0x3a')]),_0x326f85);if(_0x1e5e4f[_0x6f1c('0x38')][_0x6f1c('0x28')]){_0x317df4['where']=_[_0x6f1c('0x44')](_0x317df4[_0x6f1c('0x42')],{'$or':_['map'](_0x326f85,function(_0x30b5d0){if(_0x30b5d0[_0x6f1c('0x2d')]!==_0x6f1c('0x45')){var _0x682523={};_0x682523[_0x30b5d0[_0x6f1c('0x2e')]]={'$like':'%'+_0x1e5e4f[_0x6f1c('0x38')][_0x6f1c('0x28')]+'%'};return _0x682523;}})});}_0x317df4=_['merge']({},_0x317df4,_0x1e5e4f[_0x6f1c('0x46')]);var _0x486bd5={'where':_0x317df4[_0x6f1c('0x42')]};return db[_0x6f1c('0x47')][_0x6f1c('0x1c')](_0x486bd5)[_0x6f1c('0x30')](function(_0x200596){_0x454507['count']=_0x200596;if(_0x1e5e4f[_0x6f1c('0x38')][_0x6f1c('0x48')]){_0x317df4['include']=[{'all':!![]}];}return db[_0x6f1c('0x47')][_0x6f1c('0x49')](_0x317df4);})[_0x6f1c('0x30')](function(_0x491fdd){_0x454507[_0x6f1c('0x4a')]=_0x491fdd;return _0x454507;})[_0x6f1c('0x30')](respondWithFilteredResult(_0x5d7a33,_0x317df4))[_0x6f1c('0x4b')](handleError(_0x5d7a33,null));};exports[_0x6f1c('0x4c')]=function(_0x18d103,_0x4453b0){var _0x434274={'raw':![],'where':{'id':_0x18d103['params']['id']}},_0x2f8841={};_0x2f8841[_0x6f1c('0x37')]=_[_0x6f1c('0x39')](db[_0x6f1c('0x47')]['rawAttributes']);_0x2f8841[_0x6f1c('0x38')]=_[_0x6f1c('0x39')](_0x18d103[_0x6f1c('0x38')]);_0x2f8841['filters']=_[_0x6f1c('0x3b')](_0x2f8841[_0x6f1c('0x37')],_0x2f8841[_0x6f1c('0x38')]);_0x434274[_0x6f1c('0x3c')]=_[_0x6f1c('0x3b')](_0x2f8841[_0x6f1c('0x37')],qs[_0x6f1c('0x3d')](_0x18d103[_0x6f1c('0x38')]['fields']));_0x434274[_0x6f1c('0x3c')]=_0x434274[_0x6f1c('0x3c')]['length']?_0x434274[_0x6f1c('0x3c')]:_0x2f8841[_0x6f1c('0x37')];if(_0x18d103['query']['includeAll']){_0x434274['include']=[{'all':!![]}];}_0x434274=_[_0x6f1c('0x44')]({},_0x434274,_0x18d103['options']);return db['VoiceQueue'][_0x6f1c('0x4d')](_0x434274)[_0x6f1c('0x30')](handleEntityNotFound(_0x4453b0,null))['then'](respondWithResult(_0x4453b0,null))[_0x6f1c('0x4b')](handleError(_0x4453b0,null));};exports[_0x6f1c('0x4e')]=function(_0x39b67c,_0x4f7fb1){return db[_0x6f1c('0x47')][_0x6f1c('0x4e')](_0x39b67c['body'],{})[_0x6f1c('0x30')](function(_0x4efe57){var _0x410903=_0x39b67c[_0x6f1c('0x4f')][_0x6f1c('0x50')]({'plain':!![]});if(!_0x410903)throw new Error(_0x6f1c('0x51'));if(_0x410903[_0x6f1c('0x52')]===_0x6f1c('0x4f')){var _0x480934=_0x4efe57['get']({'plain':!![]});var _0x4fe6e3=[{'name':_0x6f1c('0x24'),'value':_0x6f1c('0x25')},{'name':'QueueCampaigns','value':_0x6f1c('0x27')}];var _0x5052b8=_[_0x6f1c('0x4d')](_0x4fe6e3,['value',_0x480934[_0x6f1c('0x2d')]])[_0x6f1c('0x2e')];return db[_0x6f1c('0x53')][_0x6f1c('0x4d')]({'where':{'name':_0x5052b8,'userProfileId':_0x410903[_0x6f1c('0x54')]},'raw':!![]})[_0x6f1c('0x30')](function(_0x1f51b4){if(_0x1f51b4&&_0x1f51b4[_0x6f1c('0x55')]===0x0){return db[_0x6f1c('0x2f')][_0x6f1c('0x4e')]({'name':_0x480934[_0x6f1c('0x2e')],'resourceId':_0x480934['id'],'type':_0x1f51b4['name'],'sectionId':_0x1f51b4['id']},{})[_0x6f1c('0x30')](function(){return _0x4efe57;});}else{return _0x4efe57;}})['catch'](function(_0x761896){logger['error'](_0x6f1c('0x56'),_0x761896);throw _0x761896;});}return _0x4efe57;})[_0x6f1c('0x30')](respondWithResult(_0x4f7fb1,0xc9))['catch'](handleError(_0x4f7fb1,null));};exports[_0x6f1c('0x57')]=function(_0x197b3d,_0x4a236f){var _0x4c1c7e={'where':{'id':_0x197b3d[_0x6f1c('0x58')]['id']}},_0x1ba3e8={};_0x1ba3e8[_0x6f1c('0x37')]=_[_0x6f1c('0x39')](db[_0x6f1c('0x47')][_0x6f1c('0x59')]);_0x4c1c7e[_0x6f1c('0x3c')]=_[_0x6f1c('0x3b')](_0x1ba3e8[_0x6f1c('0x37')],qs[_0x6f1c('0x3d')](_0x197b3d['query'][_0x6f1c('0x3d')]));_0x4c1c7e[_0x6f1c('0x3c')]=_0x4c1c7e['attributes']['length']?_0x4c1c7e[_0x6f1c('0x3c')]:_0x1ba3e8[_0x6f1c('0x37')];if(_0x197b3d['query'][_0x6f1c('0x48')]){_0x4c1c7e[_0x6f1c('0x5a')]=[{'all':!![]}];}_0x4c1c7e=_[_0x6f1c('0x44')]({},_0x4c1c7e,_0x197b3d[_0x6f1c('0x46')]);return db[_0x6f1c('0x47')][_0x6f1c('0x4d')](_0x4c1c7e)[_0x6f1c('0x30')](handleEntityNotFound(_0x4a236f,null))['then'](function(_0xc11cdf){if(_0xc11cdf){var _0x233e42=_0xc11cdf['get']({'plain':!![]});_0x233e42=qs[_0x6f1c('0x5b')](_0x233e42,['id','createdAt',_0x6f1c('0x5c')]);_0x197b3d[_0x6f1c('0x5d')]=_['omit'](_0x197b3d[_0x6f1c('0x5d')],['id',_0x6f1c('0x5e'),_0x6f1c('0x5c')]);return db['VoiceQueue'][_0x6f1c('0x4e')](_[_0x6f1c('0x44')](_0x233e42,_0x197b3d[_0x6f1c('0x5d')]),{'include':_0x197b3d[_0x6f1c('0x38')][_0x6f1c('0x48')]?[{'all':!![]}]:undefined})[_0x6f1c('0x30')](function(_0xb34928){var _0x51ae01=_0x197b3d[_0x6f1c('0x4f')][_0x6f1c('0x50')]({'plain':!![]});if(!_0x51ae01)throw new Error(_0x6f1c('0x51'));if(_0x51ae01['role']===_0x6f1c('0x4f')){var _0x2c50ab=_0xb34928['get']({'plain':!![]});var _0x753f9f=[{'name':_0x6f1c('0x24'),'value':_0x6f1c('0x25')},{'name':_0x6f1c('0x26'),'value':_0x6f1c('0x27')}];var _0x4bd3e3=_['find'](_0x753f9f,[_0x6f1c('0x2b'),_0x2c50ab['type']])['name'];return db[_0x6f1c('0x53')]['find']({'where':{'name':_0x4bd3e3,'userProfileId':_0x51ae01[_0x6f1c('0x54')]},'raw':!![]})[_0x6f1c('0x30')](function(_0x34395b){if(_0x34395b&&_0x34395b[_0x6f1c('0x55')]===0x0){return db[_0x6f1c('0x2f')][_0x6f1c('0x4e')]({'name':_0x2c50ab[_0x6f1c('0x2e')],'resourceId':_0x2c50ab['id'],'type':_0x34395b[_0x6f1c('0x2e')],'sectionId':_0x34395b['id']},{})[_0x6f1c('0x30')](function(){return _0xb34928;});}else{return _0xb34928;}})[_0x6f1c('0x4b')](function(_0x5d1416){logger[_0x6f1c('0x31')](_0x6f1c('0x56'),_0x5d1416);throw _0x5d1416;});}return _0xb34928;});}})[_0x6f1c('0x30')](respondWithResult(_0x4a236f,0xc9))['catch'](handleError(_0x4a236f,null));};exports[_0x6f1c('0x22')]=function(_0x2427c5,_0x112865){if(_0x2427c5[_0x6f1c('0x5d')]['id']){delete _0x2427c5[_0x6f1c('0x5d')]['id'];}return db['VoiceQueue']['find']({'where':{'id':_0x2427c5['params']['id']}})[_0x6f1c('0x30')](handleEntityNotFound(_0x112865,null))['then'](saveUpdates(_0x2427c5[_0x6f1c('0x5d')],null))[_0x6f1c('0x30')](respondWithResult(_0x112865,null))[_0x6f1c('0x4b')](handleError(_0x112865,null));};exports[_0x6f1c('0x23')]=function(_0x4805c9,_0x2cfae1){return db[_0x6f1c('0x47')][_0x6f1c('0x4d')]({'where':{'id':_0x4805c9['params']['id']}})['then'](handleEntityNotFound(_0x2cfae1,null))[_0x6f1c('0x30')](removeEntity(_0x2cfae1,null))['catch'](handleError(_0x2cfae1,null));};exports[_0x6f1c('0x5f')]=function(_0x1d05bb,_0x46bf09,_0x114299){var _0x3034fe={'raw':![],'where':{}};var _0x92cb8c={};var _0x115c7b={'count':0x0,'rows':[]};return db[_0x6f1c('0x47')][_0x6f1c('0x60')]({'where':{'id':_0x1d05bb[_0x6f1c('0x58')]['id']}})['then'](handleEntityNotFound(_0x46bf09,null))['then'](function(_0x16b758){if(_0x16b758){_0x92cb8c[_0x6f1c('0x37')]=_['keys'](db['CmHopper'][_0x6f1c('0x59')]);_0x92cb8c[_0x6f1c('0x38')]=_[_0x6f1c('0x39')](_0x1d05bb[_0x6f1c('0x38')]);_0x92cb8c[_0x6f1c('0x3a')]=_[_0x6f1c('0x3b')](_0x92cb8c[_0x6f1c('0x37')],_0x92cb8c[_0x6f1c('0x38')]);_0x3034fe[_0x6f1c('0x3c')]=_[_0x6f1c('0x3b')](_0x92cb8c[_0x6f1c('0x37')],qs[_0x6f1c('0x3d')](_0x1d05bb['query'][_0x6f1c('0x3d')]));_0x3034fe[_0x6f1c('0x3c')]=_0x3034fe[_0x6f1c('0x3c')][_0x6f1c('0x3e')]?_0x3034fe[_0x6f1c('0x3c')]:_0x92cb8c['model'];if(!_0x1d05bb[_0x6f1c('0x38')]['hasOwnProperty']('nolimit')){_0x3034fe[_0x6f1c('0x1b')]=qs[_0x6f1c('0x1b')](_0x1d05bb[_0x6f1c('0x38')][_0x6f1c('0x1b')]);_0x3034fe[_0x6f1c('0x19')]=qs[_0x6f1c('0x19')](_0x1d05bb[_0x6f1c('0x38')]['offset']);}_0x3034fe[_0x6f1c('0x40')]=qs['sort'](_0x1d05bb[_0x6f1c('0x38')][_0x6f1c('0x41')]);_0x3034fe['where']=qs[_0x6f1c('0x3a')](_[_0x6f1c('0x43')](_0x1d05bb[_0x6f1c('0x38')],_0x92cb8c[_0x6f1c('0x3a')]));_0x3034fe[_0x6f1c('0x42')][_0x6f1c('0x61')]=_0x16b758['id'];if(_0x1d05bb[_0x6f1c('0x38')]['filter']){_0x3034fe[_0x6f1c('0x42')]=_['merge'](_0x3034fe['where'],{'$or':_['map'](_0x3034fe[_0x6f1c('0x3c')],function(_0x49afcd){var _0x287007={};_0x287007[_0x49afcd]={'$like':'%'+_0x1d05bb['query'][_0x6f1c('0x28')]+'%'};return _0x287007;})});}_0x3034fe=_[_0x6f1c('0x44')]({},_0x3034fe,_0x1d05bb[_0x6f1c('0x46')]);return db['CmHopper'][_0x6f1c('0x1c')]({'where':_0x3034fe[_0x6f1c('0x42')]})[_0x6f1c('0x30')](function(_0x4909e9){_0x115c7b[_0x6f1c('0x1c')]=_0x4909e9;if(_0x1d05bb['query'][_0x6f1c('0x48')]){_0x3034fe['include']=[{'all':!![]}];}return db[_0x6f1c('0x62')][_0x6f1c('0x49')](_0x3034fe);})[_0x6f1c('0x30')](function(_0x2c21f9){_0x115c7b[_0x6f1c('0x4a')]=_0x2c21f9;return _0x115c7b;});}})[_0x6f1c('0x30')](respondWithFilteredResult(_0x46bf09,_0x3034fe))[_0x6f1c('0x4b')](handleError(_0x46bf09,null));};exports[_0x6f1c('0x63')]=function(_0x40f43f,_0x35dec3,_0x427b2b){var _0x342047={'raw':!![],'where':{}};var _0x5898dd={};var _0x55a654={'count':0x0,'rows':[]};return db[_0x6f1c('0x47')]['findOne']({'where':{'id':_0x40f43f['params']['id']}})[_0x6f1c('0x30')](handleEntityNotFound(_0x35dec3,null))['then'](function(_0x4a449a){if(_0x4a449a){_0x5898dd[_0x6f1c('0x37')]=_['keys'](db[_0x6f1c('0x64')]['rawAttributes']);_0x5898dd[_0x6f1c('0x38')]=_['keys'](_0x40f43f[_0x6f1c('0x38')]);_0x5898dd[_0x6f1c('0x3a')]=_[_0x6f1c('0x3b')](_0x5898dd['model'],_0x5898dd[_0x6f1c('0x38')]);_0x342047[_0x6f1c('0x3c')]=_['intersection'](_0x5898dd[_0x6f1c('0x37')],qs[_0x6f1c('0x3d')](_0x40f43f[_0x6f1c('0x38')][_0x6f1c('0x3d')]));_0x342047[_0x6f1c('0x3c')]=_0x342047[_0x6f1c('0x3c')]['length']?_0x342047[_0x6f1c('0x3c')]:_0x5898dd['model'];if(!_0x40f43f[_0x6f1c('0x38')][_0x6f1c('0x3f')]('nolimit')){_0x342047['limit']=qs['limit'](_0x40f43f[_0x6f1c('0x38')]['limit']);_0x342047[_0x6f1c('0x19')]=qs[_0x6f1c('0x19')](_0x40f43f['query']['offset']);}_0x342047[_0x6f1c('0x40')]=qs[_0x6f1c('0x41')](_0x40f43f[_0x6f1c('0x38')][_0x6f1c('0x41')]);_0x342047['where']=qs[_0x6f1c('0x3a')](_['pick'](_0x40f43f[_0x6f1c('0x38')],_0x5898dd[_0x6f1c('0x3a')]));_0x342047['where']['VoiceQueueId']=_0x4a449a['id'];if(_0x40f43f['query'][_0x6f1c('0x28')]){_0x342047[_0x6f1c('0x42')]=_[_0x6f1c('0x44')](_0x342047['where'],{'$or':_[_0x6f1c('0x2a')](_0x342047['attributes'],function(_0x64cc2e){var _0x513515={};_0x513515[_0x64cc2e]={'$like':'%'+_0x40f43f[_0x6f1c('0x38')][_0x6f1c('0x28')]+'%'};return _0x513515;})});}_0x342047=_['merge']({},_0x342047,_0x40f43f[_0x6f1c('0x46')]);return db['CmHopperHistory'][_0x6f1c('0x1c')]({'where':_0x342047['where']})[_0x6f1c('0x30')](function(_0x34a038){_0x55a654['count']=_0x34a038;if(_0x40f43f[_0x6f1c('0x38')][_0x6f1c('0x48')]){_0x342047[_0x6f1c('0x5a')]=[{'all':!![]}];}return db['CmHopperHistory'][_0x6f1c('0x49')](_0x342047);})[_0x6f1c('0x30')](function(_0x1f8354){_0x55a654[_0x6f1c('0x4a')]=_0x1f8354;return _0x55a654;});}})[_0x6f1c('0x30')](respondWithFilteredResult(_0x35dec3,_0x342047))['catch'](handleError(_0x35dec3,null));};exports['getHopperFinals']=function(_0x4b5eeb,_0x1496b0,_0x9a7cfc){var _0xbc5e6e={'raw':!![],'where':{}};var _0x428c1f={};var _0x5e6ad2={'count':0x0,'rows':[]};return db[_0x6f1c('0x47')][_0x6f1c('0x60')]({'where':{'id':_0x4b5eeb[_0x6f1c('0x58')]['id']}})[_0x6f1c('0x30')](handleEntityNotFound(_0x1496b0,null))[_0x6f1c('0x30')](function(_0x4384e9){if(_0x4384e9){_0x428c1f['model']=_[_0x6f1c('0x39')](db[_0x6f1c('0x65')]['rawAttributes']);_0x428c1f[_0x6f1c('0x38')]=_['keys'](_0x4b5eeb[_0x6f1c('0x38')]);_0x428c1f['filters']=_[_0x6f1c('0x3b')](_0x428c1f[_0x6f1c('0x37')],_0x428c1f[_0x6f1c('0x38')]);_0xbc5e6e[_0x6f1c('0x3c')]=_['intersection'](_0x428c1f[_0x6f1c('0x37')],qs['fields'](_0x4b5eeb['query'][_0x6f1c('0x3d')]));_0xbc5e6e[_0x6f1c('0x3c')]=_0xbc5e6e[_0x6f1c('0x3c')][_0x6f1c('0x3e')]?_0xbc5e6e['attributes']:_0x428c1f['model'];if(!_0x4b5eeb[_0x6f1c('0x38')][_0x6f1c('0x3f')]('nolimit')){_0xbc5e6e['limit']=qs[_0x6f1c('0x1b')](_0x4b5eeb[_0x6f1c('0x38')]['limit']);_0xbc5e6e[_0x6f1c('0x19')]=qs[_0x6f1c('0x19')](_0x4b5eeb[_0x6f1c('0x38')][_0x6f1c('0x19')]);}_0xbc5e6e['order']=qs[_0x6f1c('0x41')](_0x4b5eeb[_0x6f1c('0x38')][_0x6f1c('0x41')]);_0xbc5e6e['where']=qs['filters'](_[_0x6f1c('0x43')](_0x4b5eeb[_0x6f1c('0x38')],_0x428c1f[_0x6f1c('0x3a')]));_0xbc5e6e['where'][_0x6f1c('0x61')]=_0x4384e9['id'];if(_0x4b5eeb['query'][_0x6f1c('0x28')]){_0xbc5e6e[_0x6f1c('0x42')]=_[_0x6f1c('0x44')](_0xbc5e6e[_0x6f1c('0x42')],{'$or':_[_0x6f1c('0x2a')](_0xbc5e6e[_0x6f1c('0x3c')],function(_0x50b6c3){var _0x50a5f2={};_0x50a5f2[_0x50b6c3]={'$like':'%'+_0x4b5eeb['query'][_0x6f1c('0x28')]+'%'};return _0x50a5f2;})});}_0xbc5e6e=_[_0x6f1c('0x44')]({},_0xbc5e6e,_0x4b5eeb[_0x6f1c('0x46')]);return db[_0x6f1c('0x65')][_0x6f1c('0x1c')]({'where':_0xbc5e6e[_0x6f1c('0x42')]})[_0x6f1c('0x30')](function(_0x58c7b7){_0x5e6ad2['count']=_0x58c7b7;if(_0x4b5eeb[_0x6f1c('0x38')][_0x6f1c('0x48')]){_0xbc5e6e['include']=[{'all':!![]}];}return db[_0x6f1c('0x65')][_0x6f1c('0x49')](_0xbc5e6e);})[_0x6f1c('0x30')](function(_0xd15eba){_0x5e6ad2['rows']=_0xd15eba;return _0x5e6ad2;});}})[_0x6f1c('0x30')](respondWithFilteredResult(_0x1496b0,_0xbc5e6e))[_0x6f1c('0x4b')](handleError(_0x1496b0,null));};exports[_0x6f1c('0x66')]=function(_0x19d68b,_0x100bd3,_0x1bdb0f){var _0x44e89d={'raw':!![],'where':{}};var _0x1f0c6b={};var _0x57ca7f={'count':0x0,'rows':[]};return db['VoiceQueue']['findOne']({'where':{'id':_0x19d68b[_0x6f1c('0x58')]['id']}})[_0x6f1c('0x30')](handleEntityNotFound(_0x100bd3,null))[_0x6f1c('0x30')](function(_0x2d405d){if(_0x2d405d){_0x1f0c6b[_0x6f1c('0x37')]=_[_0x6f1c('0x39')](db[_0x6f1c('0x67')][_0x6f1c('0x59')]);_0x1f0c6b['query']=_['keys'](_0x19d68b[_0x6f1c('0x38')]);_0x1f0c6b[_0x6f1c('0x3a')]=_[_0x6f1c('0x3b')](_0x1f0c6b[_0x6f1c('0x37')],_0x1f0c6b[_0x6f1c('0x38')]);_0x44e89d[_0x6f1c('0x3c')]=_[_0x6f1c('0x3b')](_0x1f0c6b[_0x6f1c('0x37')],qs['fields'](_0x19d68b[_0x6f1c('0x38')][_0x6f1c('0x3d')]));_0x44e89d[_0x6f1c('0x3c')]=_0x44e89d[_0x6f1c('0x3c')][_0x6f1c('0x3e')]?_0x44e89d[_0x6f1c('0x3c')]:_0x1f0c6b[_0x6f1c('0x37')];if(!_0x19d68b[_0x6f1c('0x38')][_0x6f1c('0x3f')](_0x6f1c('0x68'))){_0x44e89d[_0x6f1c('0x1b')]=qs[_0x6f1c('0x1b')](_0x19d68b[_0x6f1c('0x38')][_0x6f1c('0x1b')]);_0x44e89d[_0x6f1c('0x19')]=qs[_0x6f1c('0x19')](_0x19d68b[_0x6f1c('0x38')][_0x6f1c('0x19')]);}_0x44e89d['order']=qs[_0x6f1c('0x41')](_0x19d68b[_0x6f1c('0x38')][_0x6f1c('0x41')]);_0x44e89d[_0x6f1c('0x42')]=qs[_0x6f1c('0x3a')](_['pick'](_0x19d68b[_0x6f1c('0x38')],_0x1f0c6b[_0x6f1c('0x3a')]));_0x44e89d[_0x6f1c('0x42')]['VoiceQueueId']=_0x2d405d['id'];if(_0x19d68b[_0x6f1c('0x38')]['filter']){_0x44e89d[_0x6f1c('0x42')]=_['merge'](_0x44e89d[_0x6f1c('0x42')],{'$or':_['map'](_0x44e89d[_0x6f1c('0x3c')],function(_0x35ff82){var _0x1bdf67={};_0x1bdf67[_0x35ff82]={'$like':'%'+_0x19d68b[_0x6f1c('0x38')][_0x6f1c('0x28')]+'%'};return _0x1bdf67;})});}_0x44e89d=_[_0x6f1c('0x44')]({},_0x44e89d,_0x19d68b[_0x6f1c('0x46')]);return db[_0x6f1c('0x67')][_0x6f1c('0x1c')]({'where':_0x44e89d[_0x6f1c('0x42')]})[_0x6f1c('0x30')](function(_0xfef5b1){_0x57ca7f[_0x6f1c('0x1c')]=_0xfef5b1;if(_0x19d68b['query'][_0x6f1c('0x48')]){_0x44e89d[_0x6f1c('0x5a')]=[{'all':!![]}];}return db[_0x6f1c('0x67')][_0x6f1c('0x49')](_0x44e89d);})[_0x6f1c('0x30')](function(_0x5cce63){_0x57ca7f[_0x6f1c('0x4a')]=_0x5cce63;return _0x57ca7f;});}})[_0x6f1c('0x30')](respondWithFilteredResult(_0x100bd3,_0x44e89d))[_0x6f1c('0x4b')](handleError(_0x100bd3,null));};exports[_0x6f1c('0x69')]=function(_0x4de2ea,_0x31f061,_0x48e056){var _0x59cf5c={};var _0x531394={};var _0xfbb84b;var _0x4ea59c;return db['VoiceQueue'][_0x6f1c('0x60')]({'where':{'id':_0x4de2ea['params']['id']}})[_0x6f1c('0x30')](handleEntityNotFound(_0x31f061,null))[_0x6f1c('0x30')](function(_0x577d0e){if(_0x577d0e){_0xfbb84b=_0x577d0e;_0x531394[_0x6f1c('0x37')]=_[_0x6f1c('0x39')](db[_0x6f1c('0x6a')][_0x6f1c('0x59')]);_0x531394['query']=_[_0x6f1c('0x39')](_0x4de2ea[_0x6f1c('0x38')]);_0x531394[_0x6f1c('0x3a')]=_[_0x6f1c('0x3b')](_0x531394[_0x6f1c('0x37')],_0x531394[_0x6f1c('0x38')]);_0x59cf5c[_0x6f1c('0x3c')]=_[_0x6f1c('0x3b')](_0x531394[_0x6f1c('0x37')],qs[_0x6f1c('0x3d')](_0x4de2ea['query'][_0x6f1c('0x3d')]));_0x59cf5c[_0x6f1c('0x3c')]=_0x59cf5c['attributes'][_0x6f1c('0x3e')]?_0x59cf5c[_0x6f1c('0x3c')]:_0x531394[_0x6f1c('0x37')];_0x59cf5c[_0x6f1c('0x40')]=qs[_0x6f1c('0x41')](_0x4de2ea['query'][_0x6f1c('0x41')]);_0x59cf5c[_0x6f1c('0x42')]=qs[_0x6f1c('0x3a')](_[_0x6f1c('0x43')](_0x4de2ea[_0x6f1c('0x38')],_0x531394[_0x6f1c('0x3a')]));if(_0x4de2ea[_0x6f1c('0x38')][_0x6f1c('0x28')]){_0x59cf5c[_0x6f1c('0x42')]=_[_0x6f1c('0x44')](_0x59cf5c[_0x6f1c('0x42')],{'$or':_[_0x6f1c('0x2a')](_0x59cf5c[_0x6f1c('0x3c')],function(_0x2e302e){var _0x353526={};_0x353526[_0x2e302e]={'$like':'%'+_0x4de2ea[_0x6f1c('0x38')][_0x6f1c('0x28')]+'%'};return _0x353526;})});}_0x59cf5c=_['merge']({},_0x59cf5c,_0x4de2ea['options']);return _0xfbb84b[_0x6f1c('0x69')](_0x59cf5c);}})[_0x6f1c('0x30')](function(_0x4248fe){if(_0x4248fe){_0x4ea59c=_0x4248fe[_0x6f1c('0x3e')];if(!_0x4de2ea['query'][_0x6f1c('0x3f')]('nolimit')){_0x59cf5c['limit']=qs['limit'](_0x4de2ea['query']['limit']);_0x59cf5c['offset']=qs['offset'](_0x4de2ea[_0x6f1c('0x38')][_0x6f1c('0x19')]);}return _0xfbb84b[_0x6f1c('0x69')](_0x59cf5c);}})['then'](function(_0x3db0ad){if(_0x3db0ad){return _0x3db0ad?{'count':_0x4ea59c,'rows':_0x3db0ad}:null;}})[_0x6f1c('0x30')](respondWithResult(_0x31f061,null))[_0x6f1c('0x4b')](handleError(_0x31f061,null));};exports[_0x6f1c('0x6b')]=function(_0x2fcd7b,_0x43b068,_0x4ea6a6){var _0x4befd0=_0x2fcd7b[_0x6f1c('0x5d')][_0x6f1c('0x6c')];var _0x3306b9=_[_0x6f1c('0x2a')](_0x4befd0,'id');return db[_0x6f1c('0x6a')][_0x6f1c('0x49')]({'where':{'id':_0x3306b9},'attributes':['id'],'include':[{'model':db[_0x6f1c('0x6d')],'as':'Agents','attributes':['id',_0x6f1c('0x2e'),_0x6f1c('0x6e'),_0x6f1c('0x6f'),_0x6f1c('0x70')],'raw':!![]}]})[_0x6f1c('0x30')](function(_0x24ef0b){if(_0x24ef0b){var _0x57e2ea=_[_0x6f1c('0x71')](_0x24ef0b,function(_0x557c14){var _0x19368f=_0x557c14[_0x6f1c('0x50')]({'plain':!![]});_0x19368f[_0x6f1c('0x72')][_0x6f1c('0x73')](function(_0x2ee82d){_0x2ee82d['penalty']=_['find'](_0x4befd0,{'id':_0x19368f['id']})[_0x6f1c('0x74')];});return _0x19368f['Agents'];});return db[_0x6f1c('0x47')]['find']({'where':{'id':_0x2fcd7b[_0x6f1c('0x58')]['id']}})[_0x6f1c('0x30')](function(_0x5d06d9){return db['sequelize'][_0x6f1c('0x75')](function(_0x58e187){return _0x5d06d9[_0x6f1c('0x6b')](_0x3306b9,{'transaction':_0x58e187})[_0x6f1c('0x30')](function(){return BPromise[_0x6f1c('0x76')](_0x4befd0,function(_0x13dd68){return db[_0x6f1c('0x77')]['upsert']({'TeamId':_0x13dd68['id'],'VoiceQueueId':_0x2fcd7b[_0x6f1c('0x58')]['id'],'penalty':_0x13dd68[_0x6f1c('0x74')]},{'transaction':_0x58e187});});})[_0x6f1c('0x30')](function(){return BPromise[_0x6f1c('0x76')](_0x57e2ea,function(_0x4bad66){return db['UserVoiceQueue'][_0x6f1c('0x78')]({'where':{'UserId':_0x4bad66['id'],'VoiceQueueId':_0x2fcd7b[_0x6f1c('0x58')]['id']},'defaults':{'penalty':_0x4bad66[_0x6f1c('0x74')]},'transaction':_0x58e187});});})['then'](function(){return BPromise[_0x6f1c('0x76')](_[_0x6f1c('0x28')](_0x57e2ea,{'online':!![]}),function(_0x52727d){return db[_0x6f1c('0x79')]['upsert']({'membername':_0x52727d[_0x6f1c('0x2e')],'UserId':_0x52727d['id'],'queue_name':_0x5d06d9[_0x6f1c('0x2e')],'VoiceQueueId':_0x5d06d9['id'],'interface':_[_0x6f1c('0x7a')](_0x52727d[_0x6f1c('0x70')])?util['format'](_0x6f1c('0x7b'),_0x52727d[_0x6f1c('0x2e')]):_0x52727d[_0x6f1c('0x70')],'paused':_0x52727d[_0x6f1c('0x6f')]||![],'penalty':_0x52727d[_0x6f1c('0x74')]},{'transaction':_0x58e187});});})['then'](function(){_0x57e2ea[_0x6f1c('0x73')](function(_0x12d39c){socket[_0x6f1c('0x7c')]('userVoiceQueue:save',{'UserId':_0x12d39c['id'],'VoiceQueueId':_0x5d06d9['id']});});});});});}})['then'](respondWithStatusCode(_0x43b068,null))[_0x6f1c('0x4b')](handleError(_0x43b068,null));};exports[_0x6f1c('0x7d')]=function(_0x22721d,_0x465ec8,_0x1e3d9b){return db[_0x6f1c('0x6a')]['findAll']({'where':{'id':_0x22721d[_0x6f1c('0x38')][_0x6f1c('0x7e')]},'attributes':['id'],'include':[{'model':db[_0x6f1c('0x6d')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x6f1c('0x30')](handleEntityNotFound(_0x465ec8,null))[_0x6f1c('0x30')](function(_0x1f2580){var _0x33cb05=_[_0x6f1c('0x2a')](_0x1f2580,'id');var _0x3d2590=[];var _0x44c4f3=[];var _0x32642f=squel['select']();_0x32642f[_0x6f1c('0x7f')](_0x6f1c('0x80'))[_0x6f1c('0x81')](_0x6f1c('0x82'),'tq')[_0x6f1c('0x83')]('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')['where'](_0x6f1c('0x84'),_0x22721d[_0x6f1c('0x58')]['id']);for(var _0x5705b9=0x0;_0x5705b9<_0x1f2580[_0x6f1c('0x3e')];_0x5705b9+=0x1){let _0x4c64d4=_0x1f2580[_0x5705b9];for(var _0x9079ef=0x0;_0x9079ef<_0x4c64d4[_0x6f1c('0x72')][_0x6f1c('0x3e')];_0x9079ef+=0x1){let _0x59c873=_0x4c64d4[_0x6f1c('0x72')][_0x9079ef];var _0x109a99=_0x32642f[_0x6f1c('0x57')]();_0x109a99[_0x6f1c('0x42')](_0x6f1c('0x85'),_0x59c873['id']);_0x44c4f3[_0x6f1c('0x86')](db[_0x6f1c('0x87')]['query'](_0x109a99[_0x6f1c('0x88')](),{'type':db[_0x6f1c('0x87')]['QueryTypes'][_0x6f1c('0x89')]})[_0x6f1c('0x30')](function(_0x5c33e0){if(_0x5c33e0[_0x6f1c('0x3e')]===0x1){return _0x59c873['id'];}else{var _0x59106b=_[_0x6f1c('0x8a')](_[_0x6f1c('0x2a')](_0x5c33e0,_0x6f1c('0x8b')),function(_0x1e9294){return _[_0x6f1c('0x2c')](_0x33cb05,_0x1e9294);});if(_0x59106b){return _0x59c873['id'];}}}));}}return BPromise['all'](_0x44c4f3)[_0x6f1c('0x30')](function(_0x35d408){_0x3d2590=_(_0x3d2590)['union'](_0x35d408)['compact']()[_0x6f1c('0x2b')]();return db['VoiceQueue'][_0x6f1c('0x4d')]({'where':{'id':_0x22721d[_0x6f1c('0x58')]['id']}})[_0x6f1c('0x30')](function(_0x439561){return db[_0x6f1c('0x87')][_0x6f1c('0x75')](function(_0x5edffb){return _0x439561[_0x6f1c('0x7d')](_0x22721d[_0x6f1c('0x38')][_0x6f1c('0x7e')],{'transaction':_0x5edffb})[_0x6f1c('0x30')](function(){if(!_['isEmpty'](_0x3d2590)){return _0x439561[_0x6f1c('0x8c')](_0x3d2590,{'transaction':_0x5edffb})[_0x6f1c('0x30')](function(){return db['UserVoiceQueueRt']['destroy']({'where':{'VoiceQueueId':_0x22721d[_0x6f1c('0x58')]['id'],'UserId':_0x3d2590},'transaction':_0x5edffb});});}})[_0x6f1c('0x30')](function(){_0x3d2590[_0x6f1c('0x73')](function(_0x525349){socket[_0x6f1c('0x7c')](_0x6f1c('0x8d'),{'UserId':_0x525349,'VoiceQueueId':_0x439561['id']});});});});});});})['then'](respondWithStatusCode(_0x465ec8,null))[_0x6f1c('0x4b')](handleError(_0x465ec8,null));};exports[_0x6f1c('0x8e')]=function(_0x312cd5,_0xf2eb69,_0x4a893f){var _0x3c7e20,_0x320d9e;return db['VoiceQueue'][_0x6f1c('0x4d')]({'where':{'id':_0x312cd5[_0x6f1c('0x58')]['id']}})[_0x6f1c('0x30')](handleEntityNotFound(_0xf2eb69,null))['then'](function(_0x1f0b6e){if(_0x1f0b6e){_0x320d9e=_0x1f0b6e;return _0x1f0b6e[_0x6f1c('0x8e')](_0x312cd5[_0x6f1c('0x5d')][_0x6f1c('0x7e')],_[_0x6f1c('0x5b')](_0x312cd5[_0x6f1c('0x5d')],['ids','id'])||{})['spread'](function(_0x1e98db){for(var _0x104a64=0x0;_0x104a64<_0x312cd5[_0x6f1c('0x5d')][_0x6f1c('0x7e')][_0x6f1c('0x3e')];_0x104a64+=0x1){socket['emit'](_0x6f1c('0x8f'),{'UserId':Number(_0x312cd5[_0x6f1c('0x5d')]['ids'][_0x104a64]),'VoiceQueueId':Number(_0x312cd5['params']['id'])});}return _0x1e98db;});}})[_0x6f1c('0x30')](function(_0x537b5f){_0x3c7e20=_0x537b5f||[];if(_0x320d9e){return db[_0x6f1c('0x6d')][_0x6f1c('0x49')]({'where':{'id':_0x312cd5[_0x6f1c('0x5d')][_0x6f1c('0x7e')]},'attributes':['id',_0x6f1c('0x2e'),_0x6f1c('0x6e'),'voicePause',_0x6f1c('0x70')],'raw':!![]});}})[_0x6f1c('0x30')](function(_0x5b83ba){if(!_[_0x6f1c('0x90')](_0x5b83ba)){var _0x4cf246=[];for(var _0x10b75b=0x0;_0x10b75b<_0x5b83ba[_0x6f1c('0x3e')];_0x10b75b++){if(_0x5b83ba[_0x10b75b][_0x6f1c('0x6e')]){_0x4cf246[_0x6f1c('0x86')](db[_0x6f1c('0x79')][_0x6f1c('0x91')]({'membername':_0x5b83ba[_0x10b75b][_0x6f1c('0x2e')],'UserId':_0x5b83ba[_0x10b75b]['id'],'queue_name':_0x320d9e[_0x6f1c('0x2e')],'VoiceQueueId':_0x320d9e['id'],'interface':_[_0x6f1c('0x7a')](_0x5b83ba[_0x10b75b][_0x6f1c('0x70')])?util[_0x6f1c('0x92')](_0x6f1c('0x7b'),_0x5b83ba[_0x10b75b][_0x6f1c('0x2e')]):_0x5b83ba[_0x10b75b][_0x6f1c('0x70')],'paused':_0x5b83ba[_0x10b75b]['voicePause']||![],'penalty':_0x312cd5['body'][_0x6f1c('0x74')]||0x0}));}}return BPromise[_0x6f1c('0x93')](_0x4cf246);}})[_0x6f1c('0x30')](function(){return _0x3c7e20;})['then'](respondWithResult(_0xf2eb69,null))[_0x6f1c('0x4b')](handleError(_0xf2eb69,null));};exports[_0x6f1c('0x8c')]=function(_0x13d93b,_0x48ebef,_0x5cb835){return db[_0x6f1c('0x47')][_0x6f1c('0x4d')]({'where':{'id':_0x13d93b[_0x6f1c('0x58')]['id']}})[_0x6f1c('0x30')](handleEntityNotFound(_0x48ebef,null))[_0x6f1c('0x30')](function(_0x368cc2){if(_0x368cc2){return _0x368cc2[_0x6f1c('0x8c')](_0x13d93b[_0x6f1c('0x38')]['ids'])['then'](function(){if(_['isArray'](_0x13d93b[_0x6f1c('0x38')][_0x6f1c('0x7e')])){for(var _0x720a5=0x0;_0x720a5<_0x13d93b[_0x6f1c('0x38')]['ids']['length'];_0x720a5+=0x1){socket['emit'](_0x6f1c('0x8d'),{'UserId':Number(_0x13d93b['query']['ids'][_0x720a5]),'VoiceQueueId':Number(_0x13d93b[_0x6f1c('0x58')]['id'])});}}else{socket[_0x6f1c('0x7c')]('userVoiceQueue:remove',{'UserId':Number(_0x13d93b['query'][_0x6f1c('0x7e')]),'VoiceQueueId':Number(_0x13d93b[_0x6f1c('0x58')]['id'])});}});}})[_0x6f1c('0x30')](function(_0x3b834f){return db['UserVoiceQueueRt'][_0x6f1c('0x23')]({'where':{'VoiceQueueId':_0x13d93b[_0x6f1c('0x58')]['id'],'UserId':_0x13d93b[_0x6f1c('0x38')]['ids']}})[_0x6f1c('0x30')](function(){return _0x3b834f;});})[_0x6f1c('0x30')](respondWithStatusCode(_0x48ebef,null))['catch'](handleError(_0x48ebef,null));};exports[_0x6f1c('0x94')]=function(_0x366fe8,_0x2e2ba7,_0x54c44b){var _0x2948f8={};var _0x450a81={};var _0x15af61;var _0x5e9408;return db['VoiceQueue']['findOne']({'where':{'id':_0x366fe8[_0x6f1c('0x58')]['id']}})[_0x6f1c('0x30')](handleEntityNotFound(_0x2e2ba7,null))[_0x6f1c('0x30')](function(_0x46daad){if(_0x46daad){_0x15af61=_0x46daad;_0x450a81[_0x6f1c('0x37')]=_[_0x6f1c('0x39')](db[_0x6f1c('0x6d')][_0x6f1c('0x59')]);_0x450a81[_0x6f1c('0x38')]=_[_0x6f1c('0x39')](_0x366fe8[_0x6f1c('0x38')]);_0x450a81[_0x6f1c('0x3a')]=_['intersection'](_0x450a81[_0x6f1c('0x37')],_0x450a81[_0x6f1c('0x38')]);_0x2948f8[_0x6f1c('0x3c')]=_[_0x6f1c('0x3b')](_0x450a81[_0x6f1c('0x37')],qs[_0x6f1c('0x3d')](_0x366fe8[_0x6f1c('0x38')][_0x6f1c('0x3d')]));_0x2948f8[_0x6f1c('0x3c')]=_0x2948f8[_0x6f1c('0x3c')]['length']?_0x2948f8[_0x6f1c('0x3c')]:_0x450a81[_0x6f1c('0x37')];_0x2948f8['order']=qs[_0x6f1c('0x41')](_0x366fe8[_0x6f1c('0x38')][_0x6f1c('0x41')]);_0x2948f8[_0x6f1c('0x42')]=qs['filters'](_[_0x6f1c('0x43')](_0x366fe8[_0x6f1c('0x38')],_0x450a81['filters']));if(_0x366fe8[_0x6f1c('0x38')][_0x6f1c('0x28')]){_0x2948f8[_0x6f1c('0x42')]=_[_0x6f1c('0x44')](_0x2948f8['where'],{'$or':_[_0x6f1c('0x2a')](_0x2948f8[_0x6f1c('0x3c')],function(_0x5c09ec){var _0x33a01e={};_0x33a01e[_0x5c09ec]={'$like':'%'+_0x366fe8[_0x6f1c('0x38')][_0x6f1c('0x28')]+'%'};return _0x33a01e;})});}_0x2948f8=_[_0x6f1c('0x44')]({},_0x2948f8,_0x366fe8[_0x6f1c('0x46')]);return _0x15af61[_0x6f1c('0x94')](_0x2948f8);}})[_0x6f1c('0x30')](function(_0x1dcb6e){if(_0x1dcb6e){_0x5e9408=_0x1dcb6e[_0x6f1c('0x3e')];if(!_0x366fe8[_0x6f1c('0x38')][_0x6f1c('0x3f')](_0x6f1c('0x68'))){_0x2948f8['limit']=qs[_0x6f1c('0x1b')](_0x366fe8['query'][_0x6f1c('0x1b')]);_0x2948f8['offset']=qs[_0x6f1c('0x19')](_0x366fe8[_0x6f1c('0x38')][_0x6f1c('0x19')]);}return _0x15af61[_0x6f1c('0x94')](_0x2948f8);}})[_0x6f1c('0x30')](function(_0x2f6c74){if(_0x2f6c74){return _0x2f6c74?{'count':_0x5e9408,'rows':_0x2f6c74}:null;}})['then'](respondWithResult(_0x2e2ba7,null))[_0x6f1c('0x4b')](handleError(_0x2e2ba7,null));};exports['getMembers']=function(_0x55a1be,_0x44f923,_0x260d8a){var _0x134a19={};var _0x18558b={};var _0x5eea62;var _0x1aee7b;return db[_0x6f1c('0x47')][_0x6f1c('0x60')]({'where':{'id':_0x55a1be['params']['id']}})[_0x6f1c('0x30')](handleEntityNotFound(_0x44f923,null))[_0x6f1c('0x30')](function(_0x548e26){if(_0x548e26){_0x5eea62=_0x548e26;_0x18558b[_0x6f1c('0x37')]=_[_0x6f1c('0x39')](db[_0x6f1c('0x79')][_0x6f1c('0x59')]);_0x18558b[_0x6f1c('0x38')]=_[_0x6f1c('0x39')](_0x55a1be[_0x6f1c('0x38')]);_0x18558b['filters']=_[_0x6f1c('0x3b')](_0x18558b[_0x6f1c('0x37')],_0x18558b[_0x6f1c('0x38')]);_0x134a19[_0x6f1c('0x3c')]=_[_0x6f1c('0x3b')](_0x18558b['model'],qs[_0x6f1c('0x3d')](_0x55a1be[_0x6f1c('0x38')][_0x6f1c('0x3d')]));_0x134a19[_0x6f1c('0x3c')]=_0x134a19[_0x6f1c('0x3c')][_0x6f1c('0x3e')]?_0x134a19[_0x6f1c('0x3c')]:_0x18558b[_0x6f1c('0x37')];_0x134a19[_0x6f1c('0x40')]=qs[_0x6f1c('0x41')](_0x55a1be[_0x6f1c('0x38')]['sort']);_0x134a19['where']=qs[_0x6f1c('0x3a')](_[_0x6f1c('0x43')](_0x55a1be[_0x6f1c('0x38')],_0x18558b[_0x6f1c('0x3a')]));if(_0x55a1be['query'][_0x6f1c('0x28')]){_0x134a19[_0x6f1c('0x42')]=_[_0x6f1c('0x44')](_0x134a19[_0x6f1c('0x42')],{'$or':_[_0x6f1c('0x2a')](_0x134a19[_0x6f1c('0x3c')],function(_0xfb4c41){var _0x5724c0={};_0x5724c0[_0xfb4c41]={'$like':'%'+_0x55a1be[_0x6f1c('0x38')][_0x6f1c('0x28')]+'%'};return _0x5724c0;})});}_0x134a19=_[_0x6f1c('0x44')]({},_0x134a19,_0x55a1be[_0x6f1c('0x46')]);return _0x5eea62[_0x6f1c('0x95')](_0x134a19);}})[_0x6f1c('0x30')](function(_0x4e622f){if(_0x4e622f){_0x1aee7b=_0x4e622f['length'];if(!_0x55a1be[_0x6f1c('0x38')][_0x6f1c('0x3f')](_0x6f1c('0x68'))){_0x134a19[_0x6f1c('0x1b')]=qs[_0x6f1c('0x1b')](_0x55a1be['query'][_0x6f1c('0x1b')]);_0x134a19[_0x6f1c('0x19')]=qs[_0x6f1c('0x19')](_0x55a1be[_0x6f1c('0x38')]['offset']);}return _0x5eea62[_0x6f1c('0x95')](_0x134a19);}})[_0x6f1c('0x30')](function(_0x27a771){return _0x27a771?{'count':_0x1aee7b,'rows':_0x27a771}:null;})[_0x6f1c('0x30')](respondWithResult(_0x44f923,null))[_0x6f1c('0x4b')](handleError(_0x44f923,null));};exports['getLists']=function(_0x2a4c68,_0x3cad4f,_0x3b9469){var _0x37f9d5={};var _0x54141c={};var _0x4977b8;var _0x9bf532;return db[_0x6f1c('0x47')]['findOne']({'where':{'id':_0x2a4c68[_0x6f1c('0x58')]['id']}})[_0x6f1c('0x30')](handleEntityNotFound(_0x3cad4f,null))[_0x6f1c('0x30')](function(_0xbada51){if(_0xbada51){_0x4977b8=_0xbada51;_0x54141c[_0x6f1c('0x37')]=_[_0x6f1c('0x39')](db[_0x6f1c('0x96')][_0x6f1c('0x59')]);_0x54141c[_0x6f1c('0x38')]=_[_0x6f1c('0x39')](_0x2a4c68[_0x6f1c('0x38')]);_0x54141c[_0x6f1c('0x3a')]=_[_0x6f1c('0x3b')](_0x54141c[_0x6f1c('0x37')],_0x54141c[_0x6f1c('0x38')]);_0x37f9d5[_0x6f1c('0x3c')]=_[_0x6f1c('0x3b')](_0x54141c['model'],qs[_0x6f1c('0x3d')](_0x2a4c68[_0x6f1c('0x38')]['fields']));_0x37f9d5['attributes']=_0x37f9d5[_0x6f1c('0x3c')][_0x6f1c('0x3e')]?_0x37f9d5[_0x6f1c('0x3c')]:_0x54141c['model'];_0x37f9d5['order']=qs[_0x6f1c('0x41')](_0x2a4c68[_0x6f1c('0x38')][_0x6f1c('0x41')]);_0x37f9d5[_0x6f1c('0x42')]=qs['filters'](_['pick'](_0x2a4c68[_0x6f1c('0x38')],_0x54141c[_0x6f1c('0x3a')]));if(_0x2a4c68['query']['filter']){_0x37f9d5['where']=_['merge'](_0x37f9d5[_0x6f1c('0x42')],{'$or':_['map'](_0x37f9d5[_0x6f1c('0x3c')],function(_0x2a3ab1){var _0x452e23={};_0x452e23[_0x2a3ab1]={'$like':'%'+_0x2a4c68[_0x6f1c('0x38')][_0x6f1c('0x28')]+'%'};return _0x452e23;})});}_0x37f9d5=_[_0x6f1c('0x44')]({},_0x37f9d5,_0x2a4c68[_0x6f1c('0x46')]);return _0x4977b8[_0x6f1c('0x97')](_0x37f9d5);}})[_0x6f1c('0x30')](function(_0x2b8e5e){if(_0x2b8e5e){_0x9bf532=_0x2b8e5e[_0x6f1c('0x3e')];if(!_0x2a4c68[_0x6f1c('0x38')][_0x6f1c('0x3f')](_0x6f1c('0x68'))){_0x37f9d5[_0x6f1c('0x1b')]=qs[_0x6f1c('0x1b')](_0x2a4c68['query'][_0x6f1c('0x1b')]);_0x37f9d5[_0x6f1c('0x19')]=qs[_0x6f1c('0x19')](_0x2a4c68[_0x6f1c('0x38')][_0x6f1c('0x19')]);}return _0x4977b8[_0x6f1c('0x97')](_0x37f9d5);}})['then'](function(_0x404b5e){if(_0x404b5e){return _0x404b5e?{'count':_0x9bf532,'rows':_0x404b5e}:null;}})[_0x6f1c('0x30')](respondWithResult(_0x3cad4f,null))['catch'](handleError(_0x3cad4f,null));};exports[_0x6f1c('0x98')]=function(_0x281727,_0x1013ea,_0x2bc173){var _0x1a32dc=moment()['format'](_0x6f1c('0x99'));var _0x13f856,_0x37cb3d;return db[_0x6f1c('0x47')]['find']({'where':{'id':_0x281727['params']['id']}})[_0x6f1c('0x30')](handleEntityNotFound(_0x1013ea,null))['then'](function(_0x554696){if(_0x554696){_0x37cb3d=_0x554696;return _0x554696[_0x6f1c('0x98')](_0x281727['body']['ids'],_['omit'](_0x281727[_0x6f1c('0x5d')],[_0x6f1c('0x7e'),'id'])||{});}return null;})[_0x6f1c('0x9a')](function(_0x30f7b9){var _0x183c3b;_0x13f856=_0x30f7b9||[];var _0x2106af=[];if(_0x30f7b9){for(var _0x3f894f=0x0;_0x3f894f<_0x30f7b9[_0x6f1c('0x3e')];_0x3f894f+=0x1){var _0x11004b=_0x30f7b9[_0x3f894f][_0x6f1c('0x50')]({'plain':!![]});_0x37cb3d[_0x6f1c('0x9b')]=_0x281727['body'][_0x6f1c('0x9b')]?_0x281727[_0x6f1c('0x5d')][_0x6f1c('0x9b')]:_0x37cb3d['dialCheckDuplicateType'];switch(_0x37cb3d[_0x6f1c('0x9b')]){case _0x6f1c('0x9c'):_0x183c3b=squel[_0x6f1c('0x9d')]()[_0x6f1c('0x9e')](_0x6f1c('0x9f'))[_0x6f1c('0xa0')]([_0x6f1c('0xa1'),_0x6f1c('0xa2'),_0x6f1c('0xa3'),_0x6f1c('0xa4'),_0x6f1c('0x61'),_0x6f1c('0x5e'),_0x6f1c('0x5c')],squel[_0x6f1c('0xa5')]()[_0x6f1c('0x7f')](_0x6f1c('0xa1'),_0x6f1c('0xa1'))[_0x6f1c('0x7f')]('\x27'+_0x1a32dc+'\x27',_0x6f1c('0xa2'))[_0x6f1c('0x7f')]('id','ContactId')['field'](_0x11004b['CmListId'][_0x6f1c('0x88')](),'ListId')[_0x6f1c('0x7f')](_0x281727[_0x6f1c('0x58')]['id'][_0x6f1c('0x88')](),_0x6f1c('0x61'))[_0x6f1c('0x7f')]('\x27'+_0x1a32dc+'\x27',_0x6f1c('0x5e'))['field']('\x27'+_0x1a32dc+'\x27',_0x6f1c('0x5c'))['from'](_0x6f1c('0xa6'))[_0x6f1c('0x42')](_0x6f1c('0xa7'))[_0x6f1c('0x42')](_0x6f1c('0xa8'),_0x11004b[_0x6f1c('0xa9')][_0x6f1c('0x88')]())['where'](_0x6f1c('0xaa'))['where'](_0x6f1c('0xab'),squel[_0x6f1c('0xa5')]()['field'](_0x6f1c('0xac'))[_0x6f1c('0x81')]('cm_hopper_final')['where'](_0x6f1c('0x84'),_0x281727['params']['id']['toString']()))['where'](_0x6f1c('0xab'),squel['select']()[_0x6f1c('0x7f')](_0x6f1c('0xad'))[_0x6f1c('0x81')](_0x6f1c('0x9f'))[_0x6f1c('0x42')](_0x6f1c('0x84'),_0x281727[_0x6f1c('0x58')]['id']['toString']())))[_0x6f1c('0x88')]();break;case _0x6f1c('0xae'):_0x183c3b=squel[_0x6f1c('0x9d')]()[_0x6f1c('0x9e')]('cm_hopper')[_0x6f1c('0xa0')]([_0x6f1c('0xa1'),_0x6f1c('0xa2'),_0x6f1c('0xa3'),_0x6f1c('0xa4'),'VoiceQueueId',_0x6f1c('0x5e'),_0x6f1c('0x5c')],squel[_0x6f1c('0xa5')]()[_0x6f1c('0x7f')](_0x6f1c('0xa1'),_0x6f1c('0xa1'))[_0x6f1c('0x7f')]('\x27'+_0x1a32dc+'\x27',_0x6f1c('0xa2'))[_0x6f1c('0x7f')]('id',_0x6f1c('0xa3'))['field'](_0x11004b[_0x6f1c('0xa9')]['toString'](),_0x6f1c('0xa4'))['field'](_0x281727['params']['id'][_0x6f1c('0x88')](),_0x6f1c('0x61'))[_0x6f1c('0x7f')]('\x27'+_0x1a32dc+'\x27',_0x6f1c('0x5e'))[_0x6f1c('0x7f')]('\x27'+_0x1a32dc+'\x27',_0x6f1c('0x5c'))[_0x6f1c('0x81')](_0x6f1c('0xa6'))[_0x6f1c('0x42')](_0x6f1c('0xa7'))[_0x6f1c('0x42')](_0x6f1c('0xa8'),_0x11004b[_0x6f1c('0xa9')][_0x6f1c('0x88')]())[_0x6f1c('0x42')](_0x6f1c('0xaa'))['where'](_0x6f1c('0xab'),squel['select']()[_0x6f1c('0x7f')](_0x6f1c('0xad'))[_0x6f1c('0x81')](_0x6f1c('0x9f'))[_0x6f1c('0x42')]('VoiceQueueId\x20=\x20?',_0x281727[_0x6f1c('0x58')]['id'][_0x6f1c('0x88')]())))[_0x6f1c('0x88')]();break;default:_0x183c3b=squel[_0x6f1c('0x9d')]()[_0x6f1c('0x9e')](_0x6f1c('0x9f'))[_0x6f1c('0xa0')](['phone',_0x6f1c('0xa2'),_0x6f1c('0xa3'),_0x6f1c('0xa4'),_0x6f1c('0x61'),'createdAt','updatedAt'],squel[_0x6f1c('0xa5')]()[_0x6f1c('0x7f')](_0x6f1c('0xa1'),'phone')[_0x6f1c('0x7f')]('\x27'+_0x1a32dc+'\x27',_0x6f1c('0xa2'))[_0x6f1c('0x7f')]('id','ContactId')['field'](_0x11004b['CmListId'][_0x6f1c('0x88')](),_0x6f1c('0xa4'))[_0x6f1c('0x7f')](_0x281727[_0x6f1c('0x58')]['id'][_0x6f1c('0x88')](),'VoiceQueueId')[_0x6f1c('0x7f')]('\x27'+_0x1a32dc+'\x27',_0x6f1c('0x5e'))[_0x6f1c('0x7f')]('\x27'+_0x1a32dc+'\x27',_0x6f1c('0x5c'))[_0x6f1c('0x81')](_0x6f1c('0xa6'))[_0x6f1c('0x42')](_0x6f1c('0xa7'))['where'](_0x6f1c('0xa8'),_0x11004b['CmListId']['toString']())[_0x6f1c('0x42')]('phone\x20IS\x20NOT\x20NULL'))['toString']();}_0x2106af[_0x6f1c('0x86')](db['sequelize']['query'](_0x183c3b));}return BPromise[_0x6f1c('0x93')](_0x2106af);}})[_0x6f1c('0x30')](function(){var _0x390ea4=[];var _0x41c282=squel[_0x6f1c('0x9d')]()[_0x6f1c('0x9e')]('cm_hopper_additional_phones')[_0x6f1c('0xa0')]([_0x6f1c('0xaf'),_0x6f1c('0xa1'),_0x6f1c('0xb0'),'createdAt',_0x6f1c('0x5c')],squel[_0x6f1c('0xa5')]()[_0x6f1c('0x7f')](_0x6f1c('0xb1'))['field'](_0x6f1c('0xb2'))[_0x6f1c('0x7f')](_0x6f1c('0xb3'))['field']('\x27'+_0x1a32dc+'\x27',_0x6f1c('0x5e'))['field']('\x27'+_0x1a32dc+'\x27',_0x6f1c('0x5c'))[_0x6f1c('0x81')](_0x6f1c('0xb4'),'ci')[_0x6f1c('0x83')](_0x6f1c('0x9f'),'h',_0x6f1c('0xb5'))[_0x6f1c('0x42')](_0x6f1c('0xb6'),_0x1a32dc)[_0x6f1c('0x42')](_0x6f1c('0xb7'),_0x6f1c('0xb8')))[_0x6f1c('0x88')]();_0x390ea4[_0x6f1c('0x86')](db['sequelize'][_0x6f1c('0x38')](_0x41c282));return BPromise[_0x6f1c('0x93')](_0x390ea4);})[_0x6f1c('0x30')](function(){return _0x13f856;})[_0x6f1c('0x30')](respondWithResult(_0x1013ea,null))[_0x6f1c('0x4b')](handleError(_0x1013ea,null));};exports['removeLists']=function(_0x3556ab,_0x546a6c,_0x5c1b6f){return db[_0x6f1c('0x47')][_0x6f1c('0x4d')]({'where':{'id':_0x3556ab['params']['id']}})['then'](handleEntityNotFound(_0x546a6c,null))['then'](function(_0x1d75f5){if(_0x1d75f5){return _0x1d75f5['removeLists'](_0x3556ab[_0x6f1c('0x38')][_0x6f1c('0x7e')]);}})[_0x6f1c('0x30')](function(_0x1c982f){if(_0x1c982f){return db[_0x6f1c('0x62')][_0x6f1c('0x23')]({'where':{'ListId':_0x3556ab[_0x6f1c('0x38')][_0x6f1c('0x7e')],'VoiceQueueId':_0x3556ab[_0x6f1c('0x58')]['id']}})[_0x6f1c('0x30')](function(){return _0x1c982f;});}})[_0x6f1c('0x30')](respondWithStatusCode(_0x546a6c,null))['catch'](handleError(_0x546a6c,null));};exports['getBlackLists']=function(_0x4f3ec3,_0x22d6d5,_0x20943c){var _0x3a941b={};var _0x44b2bf={};var _0x537741;var _0x307138;return db[_0x6f1c('0x47')][_0x6f1c('0x60')]({'where':{'id':_0x4f3ec3[_0x6f1c('0x58')]['id']}})['then'](handleEntityNotFound(_0x22d6d5,null))[_0x6f1c('0x30')](function(_0x2a1e8d){if(_0x2a1e8d){_0x537741=_0x2a1e8d;_0x44b2bf['model']=_[_0x6f1c('0x39')](db[_0x6f1c('0x96')][_0x6f1c('0x59')]);_0x44b2bf[_0x6f1c('0x38')]=_[_0x6f1c('0x39')](_0x4f3ec3[_0x6f1c('0x38')]);_0x44b2bf['filters']=_[_0x6f1c('0x3b')](_0x44b2bf['model'],_0x44b2bf[_0x6f1c('0x38')]);_0x3a941b['attributes']=_['intersection'](_0x44b2bf['model'],qs[_0x6f1c('0x3d')](_0x4f3ec3[_0x6f1c('0x38')]['fields']));_0x3a941b[_0x6f1c('0x3c')]=_0x3a941b['attributes'][_0x6f1c('0x3e')]?_0x3a941b['attributes']:_0x44b2bf[_0x6f1c('0x37')];_0x3a941b[_0x6f1c('0x40')]=qs['sort'](_0x4f3ec3[_0x6f1c('0x38')][_0x6f1c('0x41')]);_0x3a941b['where']=qs[_0x6f1c('0x3a')](_['pick'](_0x4f3ec3[_0x6f1c('0x38')],_0x44b2bf[_0x6f1c('0x3a')]));if(_0x4f3ec3[_0x6f1c('0x38')][_0x6f1c('0x28')]){_0x3a941b['where']=_[_0x6f1c('0x44')](_0x3a941b[_0x6f1c('0x42')],{'$or':_[_0x6f1c('0x2a')](_0x3a941b[_0x6f1c('0x3c')],function(_0x11fd25){var _0x161970={};_0x161970[_0x11fd25]={'$like':'%'+_0x4f3ec3['query']['filter']+'%'};return _0x161970;})});}_0x3a941b=_['merge']({},_0x3a941b,_0x4f3ec3[_0x6f1c('0x46')]);return _0x537741['getBlackLists'](_0x3a941b);}})[_0x6f1c('0x30')](function(_0x39f4a2){if(_0x39f4a2){_0x307138=_0x39f4a2['length'];if(!_0x4f3ec3[_0x6f1c('0x38')][_0x6f1c('0x3f')](_0x6f1c('0x68'))){_0x3a941b[_0x6f1c('0x1b')]=qs[_0x6f1c('0x1b')](_0x4f3ec3[_0x6f1c('0x38')][_0x6f1c('0x1b')]);_0x3a941b[_0x6f1c('0x19')]=qs[_0x6f1c('0x19')](_0x4f3ec3[_0x6f1c('0x38')]['offset']);}return _0x537741[_0x6f1c('0xb9')](_0x3a941b);}})['then'](function(_0x3b9f2a){if(_0x3b9f2a){return _0x3b9f2a?{'count':_0x307138,'rows':_0x3b9f2a}:null;}})[_0x6f1c('0x30')](respondWithResult(_0x22d6d5,null))[_0x6f1c('0x4b')](handleError(_0x22d6d5,null));};exports['addBlackLists']=function(_0x16ac91,_0x1352cb,_0x5d7bce){var _0x17b890,_0x3bedbf;return db[_0x6f1c('0x47')][_0x6f1c('0x4d')]({'where':{'id':_0x16ac91[_0x6f1c('0x58')]['id']}})[_0x6f1c('0x30')](handleEntityNotFound(_0x1352cb,null))[_0x6f1c('0x30')](function(_0x52238f){if(_0x52238f){_0x3bedbf=_0x52238f;return _0x52238f[_0x6f1c('0xba')](_0x16ac91['body'][_0x6f1c('0x7e')],_[_0x6f1c('0x5b')](_0x16ac91[_0x6f1c('0x5d')],[_0x6f1c('0x7e'),'id'])||{});}return null;})[_0x6f1c('0x9a')](function(_0x595fc1){var _0x27d2cc;_0x17b890=_0x595fc1||[];var _0x3e0da3=[];if(_0x595fc1){for(var _0x295802=0x0;_0x295802<_0x595fc1['length'];_0x295802+=0x1){var _0x294674=_0x595fc1[_0x295802][_0x6f1c('0x50')]({'plain':!![]});_0x27d2cc=squel[_0x6f1c('0x9d')]()[_0x6f1c('0x9e')](_0x6f1c('0xbb'))[_0x6f1c('0xa0')]([_0x6f1c('0xa1'),_0x6f1c('0xa3'),_0x6f1c('0xa4'),'VoiceQueueId',_0x6f1c('0x5e'),_0x6f1c('0x5c')],squel[_0x6f1c('0xa5')]()[_0x6f1c('0x7f')](_0x6f1c('0xa1'),'phone')[_0x6f1c('0x7f')]('id',_0x6f1c('0xa3'))[_0x6f1c('0x7f')](_0x294674[_0x6f1c('0xa9')][_0x6f1c('0x88')](),_0x6f1c('0xa4'))[_0x6f1c('0x7f')](_0x16ac91[_0x6f1c('0x58')]['id'][_0x6f1c('0x88')](),_0x6f1c('0x61'))['field'](_0x6f1c('0xbc'),_0x6f1c('0x5e'))[_0x6f1c('0x7f')](_0x6f1c('0xbc'),_0x6f1c('0x5c'))['from'](_0x6f1c('0xa6'))[_0x6f1c('0x42')](_0x6f1c('0xa7'))[_0x6f1c('0x42')](_0x6f1c('0xa8'),_0x294674['CmListId'][_0x6f1c('0x88')]())[_0x6f1c('0x42')](_0x6f1c('0xaa')))[_0x6f1c('0x88')]();_0x3e0da3[_0x6f1c('0x86')](db[_0x6f1c('0x87')][_0x6f1c('0x38')](_0x27d2cc));}return BPromise['all'](_0x3e0da3);}})[_0x6f1c('0x30')](function(){return _0x17b890;})['then'](respondWithResult(_0x1352cb,null))[_0x6f1c('0x4b')](handleError(_0x1352cb,null));};exports[_0x6f1c('0xbd')]=function(_0x201eb1,_0x402b28,_0x27017a){return db[_0x6f1c('0x47')][_0x6f1c('0x4d')]({'where':{'id':_0x201eb1[_0x6f1c('0x58')]['id']}})[_0x6f1c('0x30')](handleEntityNotFound(_0x402b28,null))[_0x6f1c('0x30')](function(_0x326ea8){if(_0x326ea8){return _0x326ea8[_0x6f1c('0xbd')](_0x201eb1['query'][_0x6f1c('0x7e')]);}})[_0x6f1c('0x30')](function(_0x462c0f){if(_0x462c0f){return db[_0x6f1c('0x67')]['destroy']({'where':{'ListId':_0x201eb1['query'][_0x6f1c('0x7e')],'VoiceQueueId':_0x201eb1['params']['id']}})[_0x6f1c('0x30')](function(){return _0x462c0f;});}})[_0x6f1c('0x30')](respondWithStatusCode(_0x402b28,null))[_0x6f1c('0x4b')](handleError(_0x402b28,null));};
\ No newline at end of file
+var _0x4bd3=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','redis','defaults','localhost','socket.io-emitter','./voiceQueue.socket','register','end','status','json','offset','limit','undefined','count','set','Content-Range','reject','then','destroy','get','VoiceQueues','inbound','outbound','filter','ignore','map','value','type','name','UserProfileResource','sendStatus','error','send','index','rawAttributes','key','model','query','intersection','fields','attributes','length','nolimit','order','where','filters','merge','VoiceQueue','include','findAll','rows','params','includeAll','catch','create','body','user','role','QueueCampaigns','find','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','keys','omit','createdAt','updatedAt','update','getHoppers','findOne','CmHopper','sort','pick','options','getHopperHistories','CmHopperHistory','hasOwnProperty','VoiceQueueId','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams','teams','User','Agents','voicePause','interface','flatMap','forEach','penalty','sequelize','transaction','each','TeamVoiceQueue','upsert','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','isNil','format','SIP/%s','emit','userVoiceQueue:save','ids','select','field','tq.TeamId','from','team_has_voice_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','removeTeams','isEmpty','addAgents','spread','online','removeAgents','isArray','userVoiceQueue:remove','getAgents','getMembers','getLists','CmList','addLists','YYYY-MM-DD\x20HH:mm:ss','dialCheckDuplicateType','always','insert','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','CmListId','phone\x20IS\x20NOT\x20NULL','COALESCE(calleridnum,\x27\x27)','COALESCE(phone,\x27\x27)','onlyIfOpen','phone\x20NOT\x20IN\x20(?)','into','cm_hopper_additional_phones','CmHopperId','OrderBy','h.id','ci.item','cm_contact_has_items','h.ContactId=ci.CmContactId','ci.ItemClass=?','PHONE','removeLists','getBlackLists','addBlackLists','cm_hopper_black','NOW()','removeBlackLists','eml-format','zip-dir','fast-json-patch','mustache','util','path','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs'];(function(_0x47191c,_0x450972){var _0x55e363=function(_0xfe9da8){while(--_0xfe9da8){_0x47191c['push'](_0x47191c['shift']());}};_0x55e363(++_0x450972);}(_0x4bd3,0x174));var _0x34bd=function(_0x58d4e2,_0x102b2a){_0x58d4e2=_0x58d4e2-0x0;var _0x52b160=_0x4bd3[_0x58d4e2];return _0x52b160;};'use strict';var emlformat=require(_0x34bd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x34bd('0x1'));var jsonpatch=require(_0x34bd('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x34bd('0x3'));var util=require(_0x34bd('0x4'));var path=require(_0x34bd('0x5'));var sox=require('sox');var csv=require(_0x34bd('0x6'));var ejs=require(_0x34bd('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x34bd('0x8'));var squel=require(_0x34bd('0x9'));var crypto=require('crypto');var jsforce=require(_0x34bd('0xa'));var deskjs=require(_0x34bd('0xb'));var toCsv=require(_0x34bd('0x6'));var querystring=require(_0x34bd('0xc'));var Papa=require(_0x34bd('0xd'));var Redis=require(_0x34bd('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x34bd('0xf'));var as=require(_0x34bd('0x10'));var hardwareService=require(_0x34bd('0x11'));var logger=require(_0x34bd('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x34bd('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x34bd('0x14')]=_[_0x34bd('0x15')](config[_0x34bd('0x14')],{'host':_0x34bd('0x16'),'port':0x18eb});var socket=require(_0x34bd('0x17'))(new Redis(config[_0x34bd('0x14')]));require(_0x34bd('0x18'))[_0x34bd('0x19')](socket);function respondWithStatusCode(_0xf6d2f2,_0x59ed5d){_0x59ed5d=_0x59ed5d||0xcc;return function(_0x3fa6a8){if(_0x3fa6a8){return _0xf6d2f2['sendStatus'](_0x59ed5d);}return _0xf6d2f2['status'](_0x59ed5d)[_0x34bd('0x1a')]();};}function respondWithResult(_0x30b3f2,_0x280c1a){_0x280c1a=_0x280c1a||0xc8;return function(_0x2dc917){if(_0x2dc917){return _0x30b3f2[_0x34bd('0x1b')](_0x280c1a)[_0x34bd('0x1c')](_0x2dc917);}};}function respondWithFilteredResult(_0xd39d72,_0x1c12e8){return function(_0x3b4bf8){if(_0x3b4bf8){var _0x72b197=typeof _0x1c12e8[_0x34bd('0x1d')]==='undefined'&&typeof _0x1c12e8[_0x34bd('0x1e')]===_0x34bd('0x1f');var _0x265e70=_0x3b4bf8[_0x34bd('0x20')];var _0x3976e4=_0x72b197?0x0:_0x1c12e8[_0x34bd('0x1d')];var _0x288638=_0x72b197?_0x3b4bf8[_0x34bd('0x20')]:_0x1c12e8[_0x34bd('0x1d')]+_0x1c12e8['limit'];var _0x15c0d1;if(_0x288638>=_0x265e70){_0x288638=_0x265e70;_0x15c0d1=0xc8;}else{_0x15c0d1=0xce;}_0xd39d72[_0x34bd('0x1b')](_0x15c0d1);return _0xd39d72[_0x34bd('0x21')](_0x34bd('0x22'),_0x3976e4+'-'+_0x288638+'/'+_0x265e70)[_0x34bd('0x1c')](_0x3b4bf8);}return null;};}function patchUpdates(_0x5e0c06){return function(_0x582772){try{jsonpatch['apply'](_0x582772,_0x5e0c06,!![]);}catch(_0x4edf84){return BPromise[_0x34bd('0x23')](_0x4edf84);}return _0x582772['save']();};}function saveUpdates(_0x10fc4b,_0x1c2282){return function(_0x428140){if(_0x428140){return _0x428140['update'](_0x10fc4b)[_0x34bd('0x24')](function(_0x14479a){return _0x14479a;});}return null;};}function removeEntity(_0x4f0dff,_0x457006){return function(_0x5be702){if(_0x5be702){return _0x5be702[_0x34bd('0x25')]()[_0x34bd('0x24')](function(){var _0x264c94=_0x5be702[_0x34bd('0x26')]({'plain':!![]});var _0x56baf7=[{'name':_0x34bd('0x27'),'value':_0x34bd('0x28'),'ignore':![]},{'name':'QueueCampaigns','value':_0x34bd('0x29'),'ignore':![]}];var _0x510a30=_(_0x56baf7)[_0x34bd('0x2a')](_0x34bd('0x2b'))[_0x34bd('0x2c')](_0x34bd('0x2d'))[_0x34bd('0x2d')]();if(_['includes'](_0x510a30,_0x264c94[_0x34bd('0x2e')])){return;}var _0x4156f5=_['find'](_0x56baf7,['value',_0x264c94[_0x34bd('0x2e')]])[_0x34bd('0x2f')];return db[_0x34bd('0x30')]['destroy']({'where':{'type':_0x4156f5,'resourceId':_0x264c94['id']}})['then'](function(){return _0x5be702;});})[_0x34bd('0x24')](function(){_0x4f0dff[_0x34bd('0x1b')](0xcc)[_0x34bd('0x1a')]();});}};}function handleEntityNotFound(_0x19eb5d,_0x5680c3){return function(_0x3a6fb2){if(!_0x3a6fb2){_0x19eb5d[_0x34bd('0x31')](0x194);}return _0x3a6fb2;};}function handleError(_0x41ca58,_0x17296b){_0x17296b=_0x17296b||0x1f4;return function(_0x2ef58f){logger[_0x34bd('0x32')](_0x2ef58f['stack']);if(_0x2ef58f[_0x34bd('0x2f')]){delete _0x2ef58f['name'];}_0x41ca58[_0x34bd('0x1b')](_0x17296b)[_0x34bd('0x33')](_0x2ef58f);};}exports[_0x34bd('0x34')]=function(_0x4e9e70,_0x2ff72e){var _0x35e219={},_0x497774={},_0x3c5e1d={'count':0x0,'rows':[]};var _0x21c7d6=_[_0x34bd('0x2c')](db['VoiceQueue'][_0x34bd('0x35')],function(_0x235576){return{'name':_0x235576['fieldName'],'type':_0x235576[_0x34bd('0x2e')][_0x34bd('0x36')]};});_0x497774[_0x34bd('0x37')]=_[_0x34bd('0x2c')](_0x21c7d6,_0x34bd('0x2f'));_0x497774[_0x34bd('0x38')]=_['keys'](_0x4e9e70['query']);_0x497774['filters']=_[_0x34bd('0x39')](_0x497774[_0x34bd('0x37')],_0x497774['query']);_0x35e219['attributes']=_[_0x34bd('0x39')](_0x497774['model'],qs['fields'](_0x4e9e70[_0x34bd('0x38')][_0x34bd('0x3a')]));_0x35e219[_0x34bd('0x3b')]=_0x35e219[_0x34bd('0x3b')][_0x34bd('0x3c')]?_0x35e219['attributes']:_0x497774['model'];if(!_0x4e9e70[_0x34bd('0x38')]['hasOwnProperty'](_0x34bd('0x3d'))){_0x35e219[_0x34bd('0x1e')]=qs[_0x34bd('0x1e')](_0x4e9e70[_0x34bd('0x38')][_0x34bd('0x1e')]);_0x35e219['offset']=qs[_0x34bd('0x1d')](_0x4e9e70[_0x34bd('0x38')][_0x34bd('0x1d')]);}_0x35e219[_0x34bd('0x3e')]=qs['sort'](_0x4e9e70[_0x34bd('0x38')]['sort']);_0x35e219[_0x34bd('0x3f')]=qs[_0x34bd('0x40')](_['pick'](_0x4e9e70[_0x34bd('0x38')],_0x497774['filters']),_0x21c7d6);if(_0x4e9e70[_0x34bd('0x38')][_0x34bd('0x2a')]){_0x35e219[_0x34bd('0x3f')]=_[_0x34bd('0x41')](_0x35e219[_0x34bd('0x3f')],{'$or':_[_0x34bd('0x2c')](_0x21c7d6,function(_0x23c457){if(_0x23c457['type']!=='VIRTUAL'){var _0x547f97={};_0x547f97[_0x23c457[_0x34bd('0x2f')]]={'$like':'%'+_0x4e9e70[_0x34bd('0x38')][_0x34bd('0x2a')]+'%'};return _0x547f97;}})});}_0x35e219=_[_0x34bd('0x41')]({},_0x35e219,_0x4e9e70['options']);var _0x412fa5={'where':_0x35e219[_0x34bd('0x3f')]};return db[_0x34bd('0x42')][_0x34bd('0x20')](_0x412fa5)[_0x34bd('0x24')](function(_0x5e50ce){_0x3c5e1d[_0x34bd('0x20')]=_0x5e50ce;if(_0x4e9e70['query']['includeAll']){_0x35e219[_0x34bd('0x43')]=[{'all':!![]}];}return db['VoiceQueue'][_0x34bd('0x44')](_0x35e219);})[_0x34bd('0x24')](function(_0x18d71e){_0x3c5e1d[_0x34bd('0x45')]=_0x18d71e;return _0x3c5e1d;})[_0x34bd('0x24')](respondWithFilteredResult(_0x2ff72e,_0x35e219))['catch'](handleError(_0x2ff72e,null));};exports['show']=function(_0x33e8e8,_0x51f892){var _0x1f3db3={'raw':![],'where':{'id':_0x33e8e8[_0x34bd('0x46')]['id']}},_0x223adb={};_0x223adb['model']=_['keys'](db['VoiceQueue']['rawAttributes']);_0x223adb[_0x34bd('0x38')]=_['keys'](_0x33e8e8[_0x34bd('0x38')]);_0x223adb['filters']=_[_0x34bd('0x39')](_0x223adb[_0x34bd('0x37')],_0x223adb[_0x34bd('0x38')]);_0x1f3db3[_0x34bd('0x3b')]=_[_0x34bd('0x39')](_0x223adb['model'],qs[_0x34bd('0x3a')](_0x33e8e8[_0x34bd('0x38')][_0x34bd('0x3a')]));_0x1f3db3[_0x34bd('0x3b')]=_0x1f3db3[_0x34bd('0x3b')]['length']?_0x1f3db3[_0x34bd('0x3b')]:_0x223adb[_0x34bd('0x37')];if(_0x33e8e8['query'][_0x34bd('0x47')]){_0x1f3db3[_0x34bd('0x43')]=[{'all':!![]}];}_0x1f3db3=_['merge']({},_0x1f3db3,_0x33e8e8['options']);return db[_0x34bd('0x42')]['find'](_0x1f3db3)['then'](handleEntityNotFound(_0x51f892,null))[_0x34bd('0x24')](respondWithResult(_0x51f892,null))[_0x34bd('0x48')](handleError(_0x51f892,null));};exports['create']=function(_0x52d479,_0x56ac18){return db['VoiceQueue'][_0x34bd('0x49')](_0x52d479[_0x34bd('0x4a')],{})['then'](function(_0x4a8291){var _0x5a95f1=_0x52d479[_0x34bd('0x4b')][_0x34bd('0x26')]({'plain':!![]});if(!_0x5a95f1)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5a95f1[_0x34bd('0x4c')]===_0x34bd('0x4b')){var _0x3f714b=_0x4a8291[_0x34bd('0x26')]({'plain':!![]});var _0x27d6da=[{'name':_0x34bd('0x27'),'value':'inbound'},{'name':_0x34bd('0x4d'),'value':_0x34bd('0x29')}];var _0xbade43=_[_0x34bd('0x4e')](_0x27d6da,['value',_0x3f714b[_0x34bd('0x2e')]])['name'];return db[_0x34bd('0x4f')]['find']({'where':{'name':_0xbade43,'userProfileId':_0x5a95f1[_0x34bd('0x50')]},'raw':!![]})[_0x34bd('0x24')](function(_0x2a428a){if(_0x2a428a&&_0x2a428a[_0x34bd('0x51')]===0x0){return db[_0x34bd('0x30')][_0x34bd('0x49')]({'name':_0x3f714b[_0x34bd('0x2f')],'resourceId':_0x3f714b['id'],'type':_0x2a428a[_0x34bd('0x2f')],'sectionId':_0x2a428a['id']},{})[_0x34bd('0x24')](function(){return _0x4a8291;});}else{return _0x4a8291;}})[_0x34bd('0x48')](function(_0x32ceed){logger['error'](_0x34bd('0x52'),_0x32ceed);throw _0x32ceed;});}return _0x4a8291;})['then'](respondWithResult(_0x56ac18,0xc9))[_0x34bd('0x48')](handleError(_0x56ac18,null));};exports['clone']=function(_0x3fc297,_0x50ed7f){var _0x1d85d0={'where':{'id':_0x3fc297[_0x34bd('0x46')]['id']}},_0x274ec9={};_0x274ec9[_0x34bd('0x37')]=_[_0x34bd('0x53')](db[_0x34bd('0x42')][_0x34bd('0x35')]);_0x1d85d0[_0x34bd('0x3b')]=_[_0x34bd('0x39')](_0x274ec9[_0x34bd('0x37')],qs[_0x34bd('0x3a')](_0x3fc297[_0x34bd('0x38')][_0x34bd('0x3a')]));_0x1d85d0[_0x34bd('0x3b')]=_0x1d85d0[_0x34bd('0x3b')]['length']?_0x1d85d0['attributes']:_0x274ec9[_0x34bd('0x37')];if(_0x3fc297[_0x34bd('0x38')][_0x34bd('0x47')]){_0x1d85d0[_0x34bd('0x43')]=[{'all':!![]}];}_0x1d85d0=_[_0x34bd('0x41')]({},_0x1d85d0,_0x3fc297['options']);return db['VoiceQueue']['find'](_0x1d85d0)['then'](handleEntityNotFound(_0x50ed7f,null))[_0x34bd('0x24')](function(_0x19fde8){if(_0x19fde8){var _0x4fb276=_0x19fde8[_0x34bd('0x26')]({'plain':!![]});_0x4fb276=qs[_0x34bd('0x54')](_0x4fb276,['id',_0x34bd('0x55'),'updatedAt']);_0x3fc297[_0x34bd('0x4a')]=_[_0x34bd('0x54')](_0x3fc297[_0x34bd('0x4a')],['id',_0x34bd('0x55'),_0x34bd('0x56')]);return db[_0x34bd('0x42')][_0x34bd('0x49')](_[_0x34bd('0x41')](_0x4fb276,_0x3fc297['body']),{'include':_0x3fc297['query'][_0x34bd('0x47')]?[{'all':!![]}]:undefined})['then'](function(_0x2959aa){var _0x4762d9=_0x3fc297[_0x34bd('0x4b')]['get']({'plain':!![]});if(!_0x4762d9)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4762d9[_0x34bd('0x4c')]===_0x34bd('0x4b')){var _0x3c2e61=_0x2959aa['get']({'plain':!![]});var _0x47edad=[{'name':_0x34bd('0x27'),'value':_0x34bd('0x28')},{'name':_0x34bd('0x4d'),'value':_0x34bd('0x29')}];var _0x29b588=_[_0x34bd('0x4e')](_0x47edad,[_0x34bd('0x2d'),_0x3c2e61[_0x34bd('0x2e')]])[_0x34bd('0x2f')];return db['UserProfileSection']['find']({'where':{'name':_0x29b588,'userProfileId':_0x4762d9[_0x34bd('0x50')]},'raw':!![]})['then'](function(_0x2b9bc3){if(_0x2b9bc3&&_0x2b9bc3[_0x34bd('0x51')]===0x0){return db[_0x34bd('0x30')][_0x34bd('0x49')]({'name':_0x3c2e61['name'],'resourceId':_0x3c2e61['id'],'type':_0x2b9bc3['name'],'sectionId':_0x2b9bc3['id']},{})[_0x34bd('0x24')](function(){return _0x2959aa;});}else{return _0x2959aa;}})[_0x34bd('0x48')](function(_0x38e91){logger['error'](_0x34bd('0x52'),_0x38e91);throw _0x38e91;});}return _0x2959aa;});}})['then'](respondWithResult(_0x50ed7f,0xc9))[_0x34bd('0x48')](handleError(_0x50ed7f,null));};exports[_0x34bd('0x57')]=function(_0x171a14,_0x55876d){if(_0x171a14[_0x34bd('0x4a')]['id']){delete _0x171a14['body']['id'];}return db['VoiceQueue'][_0x34bd('0x4e')]({'where':{'id':_0x171a14[_0x34bd('0x46')]['id']}})[_0x34bd('0x24')](handleEntityNotFound(_0x55876d,null))['then'](saveUpdates(_0x171a14[_0x34bd('0x4a')],null))[_0x34bd('0x24')](respondWithResult(_0x55876d,null))[_0x34bd('0x48')](handleError(_0x55876d,null));};exports['destroy']=function(_0x1e16d0,_0x3b00ed){return db[_0x34bd('0x42')][_0x34bd('0x4e')]({'where':{'id':_0x1e16d0[_0x34bd('0x46')]['id']}})[_0x34bd('0x24')](handleEntityNotFound(_0x3b00ed,null))[_0x34bd('0x24')](removeEntity(_0x3b00ed,null))[_0x34bd('0x48')](handleError(_0x3b00ed,null));};exports[_0x34bd('0x58')]=function(_0x1dd11c,_0x14601f,_0x59e377){var _0x24e164={'raw':![],'where':{}};var _0x507806={};var _0x46e98d={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x34bd('0x59')]({'where':{'id':_0x1dd11c[_0x34bd('0x46')]['id']}})[_0x34bd('0x24')](handleEntityNotFound(_0x14601f,null))[_0x34bd('0x24')](function(_0x3e426d){if(_0x3e426d){_0x507806[_0x34bd('0x37')]=_[_0x34bd('0x53')](db[_0x34bd('0x5a')][_0x34bd('0x35')]);_0x507806[_0x34bd('0x38')]=_['keys'](_0x1dd11c['query']);_0x507806[_0x34bd('0x40')]=_[_0x34bd('0x39')](_0x507806[_0x34bd('0x37')],_0x507806['query']);_0x24e164['attributes']=_['intersection'](_0x507806[_0x34bd('0x37')],qs[_0x34bd('0x3a')](_0x1dd11c[_0x34bd('0x38')][_0x34bd('0x3a')]));_0x24e164[_0x34bd('0x3b')]=_0x24e164['attributes'][_0x34bd('0x3c')]?_0x24e164['attributes']:_0x507806[_0x34bd('0x37')];if(!_0x1dd11c[_0x34bd('0x38')]['hasOwnProperty'](_0x34bd('0x3d'))){_0x24e164['limit']=qs[_0x34bd('0x1e')](_0x1dd11c['query'][_0x34bd('0x1e')]);_0x24e164['offset']=qs[_0x34bd('0x1d')](_0x1dd11c[_0x34bd('0x38')][_0x34bd('0x1d')]);}_0x24e164[_0x34bd('0x3e')]=qs[_0x34bd('0x5b')](_0x1dd11c[_0x34bd('0x38')][_0x34bd('0x5b')]);_0x24e164[_0x34bd('0x3f')]=qs['filters'](_[_0x34bd('0x5c')](_0x1dd11c[_0x34bd('0x38')],_0x507806[_0x34bd('0x40')]));_0x24e164['where']['VoiceQueueId']=_0x3e426d['id'];if(_0x1dd11c['query'][_0x34bd('0x2a')]){_0x24e164[_0x34bd('0x3f')]=_['merge'](_0x24e164[_0x34bd('0x3f')],{'$or':_['map'](_0x24e164[_0x34bd('0x3b')],function(_0x2ce455){var _0x30d015={};_0x30d015[_0x2ce455]={'$like':'%'+_0x1dd11c['query'][_0x34bd('0x2a')]+'%'};return _0x30d015;})});}_0x24e164=_['merge']({},_0x24e164,_0x1dd11c[_0x34bd('0x5d')]);return db[_0x34bd('0x5a')][_0x34bd('0x20')]({'where':_0x24e164[_0x34bd('0x3f')]})[_0x34bd('0x24')](function(_0x1c25a5){_0x46e98d[_0x34bd('0x20')]=_0x1c25a5;if(_0x1dd11c[_0x34bd('0x38')][_0x34bd('0x47')]){_0x24e164[_0x34bd('0x43')]=[{'all':!![]}];}return db[_0x34bd('0x5a')][_0x34bd('0x44')](_0x24e164);})[_0x34bd('0x24')](function(_0x48d9b9){_0x46e98d['rows']=_0x48d9b9;return _0x46e98d;});}})[_0x34bd('0x24')](respondWithFilteredResult(_0x14601f,_0x24e164))[_0x34bd('0x48')](handleError(_0x14601f,null));};exports[_0x34bd('0x5e')]=function(_0x384bf0,_0x36aca5,_0x49455c){var _0x1799dd={'raw':!![],'where':{}};var _0x1d4259={};var _0x14b45a={'count':0x0,'rows':[]};return db[_0x34bd('0x42')]['findOne']({'where':{'id':_0x384bf0[_0x34bd('0x46')]['id']}})['then'](handleEntityNotFound(_0x36aca5,null))['then'](function(_0x49ba99){if(_0x49ba99){_0x1d4259['model']=_[_0x34bd('0x53')](db[_0x34bd('0x5f')][_0x34bd('0x35')]);_0x1d4259['query']=_[_0x34bd('0x53')](_0x384bf0[_0x34bd('0x38')]);_0x1d4259[_0x34bd('0x40')]=_[_0x34bd('0x39')](_0x1d4259[_0x34bd('0x37')],_0x1d4259[_0x34bd('0x38')]);_0x1799dd[_0x34bd('0x3b')]=_[_0x34bd('0x39')](_0x1d4259[_0x34bd('0x37')],qs[_0x34bd('0x3a')](_0x384bf0[_0x34bd('0x38')]['fields']));_0x1799dd['attributes']=_0x1799dd[_0x34bd('0x3b')]['length']?_0x1799dd[_0x34bd('0x3b')]:_0x1d4259[_0x34bd('0x37')];if(!_0x384bf0[_0x34bd('0x38')][_0x34bd('0x60')](_0x34bd('0x3d'))){_0x1799dd[_0x34bd('0x1e')]=qs[_0x34bd('0x1e')](_0x384bf0[_0x34bd('0x38')]['limit']);_0x1799dd[_0x34bd('0x1d')]=qs[_0x34bd('0x1d')](_0x384bf0[_0x34bd('0x38')]['offset']);}_0x1799dd[_0x34bd('0x3e')]=qs[_0x34bd('0x5b')](_0x384bf0[_0x34bd('0x38')][_0x34bd('0x5b')]);_0x1799dd['where']=qs[_0x34bd('0x40')](_[_0x34bd('0x5c')](_0x384bf0[_0x34bd('0x38')],_0x1d4259[_0x34bd('0x40')]));_0x1799dd[_0x34bd('0x3f')][_0x34bd('0x61')]=_0x49ba99['id'];if(_0x384bf0[_0x34bd('0x38')][_0x34bd('0x2a')]){_0x1799dd[_0x34bd('0x3f')]=_[_0x34bd('0x41')](_0x1799dd['where'],{'$or':_[_0x34bd('0x2c')](_0x1799dd[_0x34bd('0x3b')],function(_0x19d537){var _0x1e9839={};_0x1e9839[_0x19d537]={'$like':'%'+_0x384bf0[_0x34bd('0x38')][_0x34bd('0x2a')]+'%'};return _0x1e9839;})});}_0x1799dd=_[_0x34bd('0x41')]({},_0x1799dd,_0x384bf0[_0x34bd('0x5d')]);return db[_0x34bd('0x5f')][_0x34bd('0x20')]({'where':_0x1799dd[_0x34bd('0x3f')]})[_0x34bd('0x24')](function(_0xeecfb4){_0x14b45a[_0x34bd('0x20')]=_0xeecfb4;if(_0x384bf0['query'][_0x34bd('0x47')]){_0x1799dd['include']=[{'all':!![]}];}return db[_0x34bd('0x5f')][_0x34bd('0x44')](_0x1799dd);})[_0x34bd('0x24')](function(_0x24d607){_0x14b45a[_0x34bd('0x45')]=_0x24d607;return _0x14b45a;});}})[_0x34bd('0x24')](respondWithFilteredResult(_0x36aca5,_0x1799dd))[_0x34bd('0x48')](handleError(_0x36aca5,null));};exports[_0x34bd('0x62')]=function(_0x5addf9,_0x285f8a,_0x10463f){var _0x3efd93={'raw':!![],'where':{}};var _0x4d510d={};var _0x4519eb={'count':0x0,'rows':[]};return db[_0x34bd('0x42')][_0x34bd('0x59')]({'where':{'id':_0x5addf9[_0x34bd('0x46')]['id']}})['then'](handleEntityNotFound(_0x285f8a,null))[_0x34bd('0x24')](function(_0x48acaa){if(_0x48acaa){_0x4d510d[_0x34bd('0x37')]=_[_0x34bd('0x53')](db[_0x34bd('0x63')]['rawAttributes']);_0x4d510d[_0x34bd('0x38')]=_['keys'](_0x5addf9['query']);_0x4d510d[_0x34bd('0x40')]=_[_0x34bd('0x39')](_0x4d510d[_0x34bd('0x37')],_0x4d510d['query']);_0x3efd93[_0x34bd('0x3b')]=_['intersection'](_0x4d510d[_0x34bd('0x37')],qs[_0x34bd('0x3a')](_0x5addf9['query']['fields']));_0x3efd93['attributes']=_0x3efd93[_0x34bd('0x3b')][_0x34bd('0x3c')]?_0x3efd93['attributes']:_0x4d510d[_0x34bd('0x37')];if(!_0x5addf9['query'][_0x34bd('0x60')](_0x34bd('0x3d'))){_0x3efd93[_0x34bd('0x1e')]=qs[_0x34bd('0x1e')](_0x5addf9[_0x34bd('0x38')][_0x34bd('0x1e')]);_0x3efd93[_0x34bd('0x1d')]=qs[_0x34bd('0x1d')](_0x5addf9['query'][_0x34bd('0x1d')]);}_0x3efd93[_0x34bd('0x3e')]=qs[_0x34bd('0x5b')](_0x5addf9[_0x34bd('0x38')][_0x34bd('0x5b')]);_0x3efd93[_0x34bd('0x3f')]=qs[_0x34bd('0x40')](_[_0x34bd('0x5c')](_0x5addf9[_0x34bd('0x38')],_0x4d510d[_0x34bd('0x40')]));_0x3efd93['where'][_0x34bd('0x61')]=_0x48acaa['id'];if(_0x5addf9['query']['filter']){_0x3efd93[_0x34bd('0x3f')]=_[_0x34bd('0x41')](_0x3efd93[_0x34bd('0x3f')],{'$or':_[_0x34bd('0x2c')](_0x3efd93['attributes'],function(_0x1a4dfa){var _0x4122fb={};_0x4122fb[_0x1a4dfa]={'$like':'%'+_0x5addf9[_0x34bd('0x38')][_0x34bd('0x2a')]+'%'};return _0x4122fb;})});}_0x3efd93=_['merge']({},_0x3efd93,_0x5addf9['options']);return db[_0x34bd('0x63')][_0x34bd('0x20')]({'where':_0x3efd93['where']})[_0x34bd('0x24')](function(_0x28bfbf){_0x4519eb['count']=_0x28bfbf;if(_0x5addf9[_0x34bd('0x38')][_0x34bd('0x47')]){_0x3efd93[_0x34bd('0x43')]=[{'all':!![]}];}return db[_0x34bd('0x63')][_0x34bd('0x44')](_0x3efd93);})[_0x34bd('0x24')](function(_0x9094f2){_0x4519eb[_0x34bd('0x45')]=_0x9094f2;return _0x4519eb;});}})['then'](respondWithFilteredResult(_0x285f8a,_0x3efd93))['catch'](handleError(_0x285f8a,null));};exports[_0x34bd('0x64')]=function(_0x6dbc4d,_0x9b45b8,_0x2d2d06){var _0x1cdc3a={'raw':!![],'where':{}};var _0x585910={};var _0x14abe1={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x34bd('0x59')]({'where':{'id':_0x6dbc4d[_0x34bd('0x46')]['id']}})[_0x34bd('0x24')](handleEntityNotFound(_0x9b45b8,null))[_0x34bd('0x24')](function(_0x2f2d5d){if(_0x2f2d5d){_0x585910[_0x34bd('0x37')]=_['keys'](db['CmHopperBlack'][_0x34bd('0x35')]);_0x585910[_0x34bd('0x38')]=_[_0x34bd('0x53')](_0x6dbc4d[_0x34bd('0x38')]);_0x585910['filters']=_[_0x34bd('0x39')](_0x585910[_0x34bd('0x37')],_0x585910[_0x34bd('0x38')]);_0x1cdc3a[_0x34bd('0x3b')]=_[_0x34bd('0x39')](_0x585910[_0x34bd('0x37')],qs[_0x34bd('0x3a')](_0x6dbc4d['query']['fields']));_0x1cdc3a[_0x34bd('0x3b')]=_0x1cdc3a['attributes'][_0x34bd('0x3c')]?_0x1cdc3a[_0x34bd('0x3b')]:_0x585910['model'];if(!_0x6dbc4d[_0x34bd('0x38')][_0x34bd('0x60')]('nolimit')){_0x1cdc3a[_0x34bd('0x1e')]=qs[_0x34bd('0x1e')](_0x6dbc4d['query']['limit']);_0x1cdc3a[_0x34bd('0x1d')]=qs['offset'](_0x6dbc4d[_0x34bd('0x38')][_0x34bd('0x1d')]);}_0x1cdc3a[_0x34bd('0x3e')]=qs[_0x34bd('0x5b')](_0x6dbc4d[_0x34bd('0x38')][_0x34bd('0x5b')]);_0x1cdc3a[_0x34bd('0x3f')]=qs[_0x34bd('0x40')](_[_0x34bd('0x5c')](_0x6dbc4d[_0x34bd('0x38')],_0x585910['filters']));_0x1cdc3a[_0x34bd('0x3f')][_0x34bd('0x61')]=_0x2f2d5d['id'];if(_0x6dbc4d['query'][_0x34bd('0x2a')]){_0x1cdc3a[_0x34bd('0x3f')]=_[_0x34bd('0x41')](_0x1cdc3a['where'],{'$or':_[_0x34bd('0x2c')](_0x1cdc3a[_0x34bd('0x3b')],function(_0x488c69){var _0x5dedd4={};_0x5dedd4[_0x488c69]={'$like':'%'+_0x6dbc4d[_0x34bd('0x38')][_0x34bd('0x2a')]+'%'};return _0x5dedd4;})});}_0x1cdc3a=_[_0x34bd('0x41')]({},_0x1cdc3a,_0x6dbc4d['options']);return db[_0x34bd('0x65')][_0x34bd('0x20')]({'where':_0x1cdc3a[_0x34bd('0x3f')]})[_0x34bd('0x24')](function(_0x323a8d){_0x14abe1['count']=_0x323a8d;if(_0x6dbc4d['query'][_0x34bd('0x47')]){_0x1cdc3a[_0x34bd('0x43')]=[{'all':!![]}];}return db[_0x34bd('0x65')][_0x34bd('0x44')](_0x1cdc3a);})[_0x34bd('0x24')](function(_0x4be8a7){_0x14abe1['rows']=_0x4be8a7;return _0x14abe1;});}})[_0x34bd('0x24')](respondWithFilteredResult(_0x9b45b8,_0x1cdc3a))[_0x34bd('0x48')](handleError(_0x9b45b8,null));};exports[_0x34bd('0x66')]=function(_0x429269,_0x844977,_0x900f22){var _0x36da80={};var _0x2e5d6f={};var _0x1e8493;var _0x5eec5b;return db[_0x34bd('0x42')][_0x34bd('0x59')]({'where':{'id':_0x429269['params']['id']}})[_0x34bd('0x24')](handleEntityNotFound(_0x844977,null))[_0x34bd('0x24')](function(_0x1875d9){if(_0x1875d9){_0x1e8493=_0x1875d9;_0x2e5d6f[_0x34bd('0x37')]=_['keys'](db[_0x34bd('0x67')][_0x34bd('0x35')]);_0x2e5d6f['query']=_[_0x34bd('0x53')](_0x429269['query']);_0x2e5d6f[_0x34bd('0x40')]=_[_0x34bd('0x39')](_0x2e5d6f['model'],_0x2e5d6f[_0x34bd('0x38')]);_0x36da80[_0x34bd('0x3b')]=_['intersection'](_0x2e5d6f[_0x34bd('0x37')],qs[_0x34bd('0x3a')](_0x429269[_0x34bd('0x38')]['fields']));_0x36da80[_0x34bd('0x3b')]=_0x36da80[_0x34bd('0x3b')][_0x34bd('0x3c')]?_0x36da80[_0x34bd('0x3b')]:_0x2e5d6f[_0x34bd('0x37')];_0x36da80[_0x34bd('0x3e')]=qs[_0x34bd('0x5b')](_0x429269[_0x34bd('0x38')][_0x34bd('0x5b')]);_0x36da80[_0x34bd('0x3f')]=qs['filters'](_['pick'](_0x429269[_0x34bd('0x38')],_0x2e5d6f[_0x34bd('0x40')]));if(_0x429269[_0x34bd('0x38')][_0x34bd('0x2a')]){_0x36da80[_0x34bd('0x3f')]=_[_0x34bd('0x41')](_0x36da80['where'],{'$or':_[_0x34bd('0x2c')](_0x36da80[_0x34bd('0x3b')],function(_0x4b6bd3){var _0x1d71a9={};_0x1d71a9[_0x4b6bd3]={'$like':'%'+_0x429269[_0x34bd('0x38')][_0x34bd('0x2a')]+'%'};return _0x1d71a9;})});}_0x36da80=_[_0x34bd('0x41')]({},_0x36da80,_0x429269[_0x34bd('0x5d')]);return _0x1e8493[_0x34bd('0x66')](_0x36da80);}})[_0x34bd('0x24')](function(_0xa1018f){if(_0xa1018f){_0x5eec5b=_0xa1018f[_0x34bd('0x3c')];if(!_0x429269[_0x34bd('0x38')][_0x34bd('0x60')]('nolimit')){_0x36da80[_0x34bd('0x1e')]=qs[_0x34bd('0x1e')](_0x429269[_0x34bd('0x38')][_0x34bd('0x1e')]);_0x36da80[_0x34bd('0x1d')]=qs['offset'](_0x429269[_0x34bd('0x38')]['offset']);}return _0x1e8493[_0x34bd('0x66')](_0x36da80);}})[_0x34bd('0x24')](function(_0x153126){if(_0x153126){return _0x153126?{'count':_0x5eec5b,'rows':_0x153126}:null;}})[_0x34bd('0x24')](respondWithResult(_0x844977,null))[_0x34bd('0x48')](handleError(_0x844977,null));};exports[_0x34bd('0x68')]=function(_0x15a070,_0x1445be,_0x2e4687){var _0x4918e6=_0x15a070[_0x34bd('0x4a')][_0x34bd('0x69')];var _0x541730=_[_0x34bd('0x2c')](_0x4918e6,'id');return db[_0x34bd('0x67')][_0x34bd('0x44')]({'where':{'id':_0x541730},'attributes':['id'],'include':[{'model':db[_0x34bd('0x6a')],'as':_0x34bd('0x6b'),'attributes':['id',_0x34bd('0x2f'),'online',_0x34bd('0x6c'),_0x34bd('0x6d')],'raw':!![]}]})[_0x34bd('0x24')](function(_0xaed1d0){if(_0xaed1d0){var _0xbb024f=_[_0x34bd('0x6e')](_0xaed1d0,function(_0x442c74){var _0x2f47b5=_0x442c74[_0x34bd('0x26')]({'plain':!![]});_0x2f47b5[_0x34bd('0x6b')][_0x34bd('0x6f')](function(_0x2c3bff){_0x2c3bff[_0x34bd('0x70')]=_['find'](_0x4918e6,{'id':_0x2f47b5['id']})[_0x34bd('0x70')];});return _0x2f47b5[_0x34bd('0x6b')];});return db[_0x34bd('0x42')][_0x34bd('0x4e')]({'where':{'id':_0x15a070['params']['id']}})[_0x34bd('0x24')](function(_0x4767c3){return db[_0x34bd('0x71')][_0x34bd('0x72')](function(_0x50fef1){return _0x4767c3[_0x34bd('0x68')](_0x541730,{'transaction':_0x50fef1})[_0x34bd('0x24')](function(){return BPromise[_0x34bd('0x73')](_0x4918e6,function(_0x1eccd6){return db[_0x34bd('0x74')][_0x34bd('0x75')]({'TeamId':_0x1eccd6['id'],'VoiceQueueId':_0x15a070[_0x34bd('0x46')]['id'],'penalty':_0x1eccd6[_0x34bd('0x70')]},{'transaction':_0x50fef1});});})[_0x34bd('0x24')](function(){return BPromise[_0x34bd('0x73')](_0xbb024f,function(_0x4e680a){return db[_0x34bd('0x76')][_0x34bd('0x77')]({'where':{'UserId':_0x4e680a['id'],'VoiceQueueId':_0x15a070[_0x34bd('0x46')]['id']},'defaults':{'penalty':_0x4e680a['penalty']},'transaction':_0x50fef1});});})[_0x34bd('0x24')](function(){return BPromise[_0x34bd('0x73')](_['filter'](_0xbb024f,{'online':!![]}),function(_0x386f58){return db[_0x34bd('0x78')][_0x34bd('0x75')]({'membername':_0x386f58[_0x34bd('0x2f')],'UserId':_0x386f58['id'],'queue_name':_0x4767c3[_0x34bd('0x2f')],'VoiceQueueId':_0x4767c3['id'],'interface':_[_0x34bd('0x79')](_0x386f58[_0x34bd('0x6d')])?util[_0x34bd('0x7a')](_0x34bd('0x7b'),_0x386f58['name']):_0x386f58[_0x34bd('0x6d')],'paused':_0x386f58['voicePause']||![],'penalty':_0x386f58[_0x34bd('0x70')]},{'transaction':_0x50fef1});});})[_0x34bd('0x24')](function(){_0xbb024f[_0x34bd('0x6f')](function(_0x43c9ed){socket[_0x34bd('0x7c')](_0x34bd('0x7d'),{'UserId':_0x43c9ed['id'],'VoiceQueueId':_0x4767c3['id']});});});});});}})[_0x34bd('0x24')](respondWithStatusCode(_0x1445be,null))['catch'](handleError(_0x1445be,null));};exports['removeTeams']=function(_0x5ba1f4,_0x110dce,_0x3bf52e){return db[_0x34bd('0x67')][_0x34bd('0x44')]({'where':{'id':_0x5ba1f4['query'][_0x34bd('0x7e')]},'attributes':['id'],'include':[{'model':db[_0x34bd('0x6a')],'as':_0x34bd('0x6b'),'attributes':['id'],'raw':!![]}]})[_0x34bd('0x24')](handleEntityNotFound(_0x110dce,null))[_0x34bd('0x24')](function(_0xebc491){var _0x314c92=_[_0x34bd('0x2c')](_0xebc491,'id');var _0x4c34a4=[];var _0x57bd6c=[];var _0x84b401=squel[_0x34bd('0x7f')]();_0x84b401[_0x34bd('0x80')](_0x34bd('0x81'))[_0x34bd('0x82')](_0x34bd('0x83'),'tq')[_0x34bd('0x84')](_0x34bd('0x85'),'ut',_0x34bd('0x86'))['where'](_0x34bd('0x87'),_0x5ba1f4[_0x34bd('0x46')]['id']);for(var _0x25ffab=0x0;_0x25ffab<_0xebc491[_0x34bd('0x3c')];_0x25ffab+=0x1){let _0x10024c=_0xebc491[_0x25ffab];for(var _0x23cc2a=0x0;_0x23cc2a<_0x10024c['Agents'][_0x34bd('0x3c')];_0x23cc2a+=0x1){let _0x1c0da9=_0x10024c[_0x34bd('0x6b')][_0x23cc2a];var _0x52ccec=_0x84b401[_0x34bd('0x88')]();_0x52ccec['where'](_0x34bd('0x89'),_0x1c0da9['id']);_0x57bd6c[_0x34bd('0x8a')](db[_0x34bd('0x71')]['query'](_0x52ccec[_0x34bd('0x8b')](),{'type':db[_0x34bd('0x71')][_0x34bd('0x8c')][_0x34bd('0x8d')]})[_0x34bd('0x24')](function(_0x1847f9){if(_0x1847f9[_0x34bd('0x3c')]===0x1){return _0x1c0da9['id'];}else{var _0x1d448f=_[_0x34bd('0x8e')](_['map'](_0x1847f9,_0x34bd('0x8f')),function(_0x299216){return _[_0x34bd('0x90')](_0x314c92,_0x299216);});if(_0x1d448f){return _0x1c0da9['id'];}}}));}}return BPromise[_0x34bd('0x91')](_0x57bd6c)[_0x34bd('0x24')](function(_0x2c4351){_0x4c34a4=_(_0x4c34a4)['union'](_0x2c4351)['compact']()['value']();return db[_0x34bd('0x42')][_0x34bd('0x4e')]({'where':{'id':_0x5ba1f4['params']['id']}})[_0x34bd('0x24')](function(_0x639eaf){return db['sequelize']['transaction'](function(_0x48193c){return _0x639eaf[_0x34bd('0x92')](_0x5ba1f4[_0x34bd('0x38')]['ids'],{'transaction':_0x48193c})[_0x34bd('0x24')](function(){if(!_[_0x34bd('0x93')](_0x4c34a4)){return _0x639eaf['removeAgents'](_0x4c34a4,{'transaction':_0x48193c})[_0x34bd('0x24')](function(){return db[_0x34bd('0x78')]['destroy']({'where':{'VoiceQueueId':_0x5ba1f4[_0x34bd('0x46')]['id'],'UserId':_0x4c34a4},'transaction':_0x48193c});});}})[_0x34bd('0x24')](function(){_0x4c34a4[_0x34bd('0x6f')](function(_0x47f993){socket[_0x34bd('0x7c')]('userVoiceQueue:remove',{'UserId':_0x47f993,'VoiceQueueId':_0x639eaf['id']});});});});});});})[_0x34bd('0x24')](respondWithStatusCode(_0x110dce,null))[_0x34bd('0x48')](handleError(_0x110dce,null));};exports[_0x34bd('0x94')]=function(_0x3a250a,_0x27b290,_0x3368aa){var _0x17a75c,_0x5316d4;return db[_0x34bd('0x42')][_0x34bd('0x4e')]({'where':{'id':_0x3a250a[_0x34bd('0x46')]['id']}})[_0x34bd('0x24')](handleEntityNotFound(_0x27b290,null))[_0x34bd('0x24')](function(_0x4ac725){if(_0x4ac725){_0x5316d4=_0x4ac725;return _0x4ac725[_0x34bd('0x94')](_0x3a250a[_0x34bd('0x4a')][_0x34bd('0x7e')],_[_0x34bd('0x54')](_0x3a250a[_0x34bd('0x4a')],[_0x34bd('0x7e'),'id'])||{})[_0x34bd('0x95')](function(_0x52b2fd){for(var _0x42cc90=0x0;_0x42cc90<_0x3a250a[_0x34bd('0x4a')][_0x34bd('0x7e')][_0x34bd('0x3c')];_0x42cc90+=0x1){socket[_0x34bd('0x7c')](_0x34bd('0x7d'),{'UserId':Number(_0x3a250a[_0x34bd('0x4a')][_0x34bd('0x7e')][_0x42cc90]),'VoiceQueueId':Number(_0x3a250a[_0x34bd('0x46')]['id'])});}return _0x52b2fd;});}})[_0x34bd('0x24')](function(_0x4cd1d9){_0x17a75c=_0x4cd1d9||[];if(_0x5316d4){return db[_0x34bd('0x6a')][_0x34bd('0x44')]({'where':{'id':_0x3a250a[_0x34bd('0x4a')][_0x34bd('0x7e')]},'attributes':['id',_0x34bd('0x2f'),_0x34bd('0x96'),_0x34bd('0x6c'),_0x34bd('0x6d')],'raw':!![]});}})['then'](function(_0x20e4e6){if(!_[_0x34bd('0x93')](_0x20e4e6)){var _0x56248f=[];for(var _0x4a8fad=0x0;_0x4a8fad<_0x20e4e6[_0x34bd('0x3c')];_0x4a8fad++){if(_0x20e4e6[_0x4a8fad][_0x34bd('0x96')]){_0x56248f[_0x34bd('0x8a')](db['UserVoiceQueueRt'][_0x34bd('0x75')]({'membername':_0x20e4e6[_0x4a8fad][_0x34bd('0x2f')],'UserId':_0x20e4e6[_0x4a8fad]['id'],'queue_name':_0x5316d4[_0x34bd('0x2f')],'VoiceQueueId':_0x5316d4['id'],'interface':_[_0x34bd('0x79')](_0x20e4e6[_0x4a8fad]['interface'])?util[_0x34bd('0x7a')](_0x34bd('0x7b'),_0x20e4e6[_0x4a8fad][_0x34bd('0x2f')]):_0x20e4e6[_0x4a8fad][_0x34bd('0x6d')],'paused':_0x20e4e6[_0x4a8fad]['voicePause']||![],'penalty':_0x3a250a[_0x34bd('0x4a')][_0x34bd('0x70')]||0x0}));}}return BPromise[_0x34bd('0x91')](_0x56248f);}})['then'](function(){return _0x17a75c;})[_0x34bd('0x24')](respondWithResult(_0x27b290,null))[_0x34bd('0x48')](handleError(_0x27b290,null));};exports[_0x34bd('0x97')]=function(_0x2edbc0,_0x478fda,_0x528e9b){return db[_0x34bd('0x42')]['find']({'where':{'id':_0x2edbc0[_0x34bd('0x46')]['id']}})[_0x34bd('0x24')](handleEntityNotFound(_0x478fda,null))[_0x34bd('0x24')](function(_0xe08a55){if(_0xe08a55){return _0xe08a55['removeAgents'](_0x2edbc0['query'][_0x34bd('0x7e')])[_0x34bd('0x24')](function(){if(_[_0x34bd('0x98')](_0x2edbc0['query'][_0x34bd('0x7e')])){for(var _0xf5a716=0x0;_0xf5a716<_0x2edbc0[_0x34bd('0x38')]['ids']['length'];_0xf5a716+=0x1){socket[_0x34bd('0x7c')]('userVoiceQueue:remove',{'UserId':Number(_0x2edbc0[_0x34bd('0x38')][_0x34bd('0x7e')][_0xf5a716]),'VoiceQueueId':Number(_0x2edbc0[_0x34bd('0x46')]['id'])});}}else{socket['emit'](_0x34bd('0x99'),{'UserId':Number(_0x2edbc0[_0x34bd('0x38')][_0x34bd('0x7e')]),'VoiceQueueId':Number(_0x2edbc0['params']['id'])});}});}})[_0x34bd('0x24')](function(_0x2cd6c5){return db[_0x34bd('0x78')][_0x34bd('0x25')]({'where':{'VoiceQueueId':_0x2edbc0[_0x34bd('0x46')]['id'],'UserId':_0x2edbc0[_0x34bd('0x38')]['ids']}})[_0x34bd('0x24')](function(){return _0x2cd6c5;});})[_0x34bd('0x24')](respondWithStatusCode(_0x478fda,null))['catch'](handleError(_0x478fda,null));};exports[_0x34bd('0x9a')]=function(_0x5d411b,_0x4ccc35,_0x52f54a){var _0x50b6b9={};var _0x3b2d77={};var _0x8b9541;var _0x1c9c27;return db[_0x34bd('0x42')][_0x34bd('0x59')]({'where':{'id':_0x5d411b[_0x34bd('0x46')]['id']}})[_0x34bd('0x24')](handleEntityNotFound(_0x4ccc35,null))[_0x34bd('0x24')](function(_0x533623){if(_0x533623){_0x8b9541=_0x533623;_0x3b2d77[_0x34bd('0x37')]=_[_0x34bd('0x53')](db[_0x34bd('0x6a')][_0x34bd('0x35')]);_0x3b2d77[_0x34bd('0x38')]=_[_0x34bd('0x53')](_0x5d411b[_0x34bd('0x38')]);_0x3b2d77[_0x34bd('0x40')]=_[_0x34bd('0x39')](_0x3b2d77['model'],_0x3b2d77['query']);_0x50b6b9[_0x34bd('0x3b')]=_['intersection'](_0x3b2d77['model'],qs[_0x34bd('0x3a')](_0x5d411b[_0x34bd('0x38')]['fields']));_0x50b6b9[_0x34bd('0x3b')]=_0x50b6b9[_0x34bd('0x3b')]['length']?_0x50b6b9['attributes']:_0x3b2d77[_0x34bd('0x37')];_0x50b6b9[_0x34bd('0x3e')]=qs['sort'](_0x5d411b['query'][_0x34bd('0x5b')]);_0x50b6b9['where']=qs[_0x34bd('0x40')](_[_0x34bd('0x5c')](_0x5d411b[_0x34bd('0x38')],_0x3b2d77[_0x34bd('0x40')]));if(_0x5d411b[_0x34bd('0x38')][_0x34bd('0x2a')]){_0x50b6b9[_0x34bd('0x3f')]=_[_0x34bd('0x41')](_0x50b6b9[_0x34bd('0x3f')],{'$or':_[_0x34bd('0x2c')](_0x50b6b9[_0x34bd('0x3b')],function(_0x3c0e87){var _0x4d47df={};_0x4d47df[_0x3c0e87]={'$like':'%'+_0x5d411b['query'][_0x34bd('0x2a')]+'%'};return _0x4d47df;})});}_0x50b6b9=_[_0x34bd('0x41')]({},_0x50b6b9,_0x5d411b[_0x34bd('0x5d')]);return _0x8b9541[_0x34bd('0x9a')](_0x50b6b9);}})[_0x34bd('0x24')](function(_0x30a9d5){if(_0x30a9d5){_0x1c9c27=_0x30a9d5[_0x34bd('0x3c')];if(!_0x5d411b[_0x34bd('0x38')][_0x34bd('0x60')](_0x34bd('0x3d'))){_0x50b6b9[_0x34bd('0x1e')]=qs[_0x34bd('0x1e')](_0x5d411b[_0x34bd('0x38')][_0x34bd('0x1e')]);_0x50b6b9[_0x34bd('0x1d')]=qs['offset'](_0x5d411b[_0x34bd('0x38')][_0x34bd('0x1d')]);}return _0x8b9541[_0x34bd('0x9a')](_0x50b6b9);}})[_0x34bd('0x24')](function(_0x263065){if(_0x263065){return _0x263065?{'count':_0x1c9c27,'rows':_0x263065}:null;}})['then'](respondWithResult(_0x4ccc35,null))['catch'](handleError(_0x4ccc35,null));};exports['getMembers']=function(_0x53261a,_0x123365,_0x378a98){var _0x9cdcdf={};var _0x1c4942={};var _0x5cba00;var _0x494e6f;return db[_0x34bd('0x42')][_0x34bd('0x59')]({'where':{'id':_0x53261a[_0x34bd('0x46')]['id']}})[_0x34bd('0x24')](handleEntityNotFound(_0x123365,null))[_0x34bd('0x24')](function(_0x2a3208){if(_0x2a3208){_0x5cba00=_0x2a3208;_0x1c4942[_0x34bd('0x37')]=_[_0x34bd('0x53')](db[_0x34bd('0x78')][_0x34bd('0x35')]);_0x1c4942[_0x34bd('0x38')]=_[_0x34bd('0x53')](_0x53261a[_0x34bd('0x38')]);_0x1c4942[_0x34bd('0x40')]=_[_0x34bd('0x39')](_0x1c4942[_0x34bd('0x37')],_0x1c4942[_0x34bd('0x38')]);_0x9cdcdf['attributes']=_[_0x34bd('0x39')](_0x1c4942[_0x34bd('0x37')],qs[_0x34bd('0x3a')](_0x53261a[_0x34bd('0x38')][_0x34bd('0x3a')]));_0x9cdcdf[_0x34bd('0x3b')]=_0x9cdcdf[_0x34bd('0x3b')][_0x34bd('0x3c')]?_0x9cdcdf[_0x34bd('0x3b')]:_0x1c4942[_0x34bd('0x37')];_0x9cdcdf[_0x34bd('0x3e')]=qs['sort'](_0x53261a[_0x34bd('0x38')]['sort']);_0x9cdcdf[_0x34bd('0x3f')]=qs[_0x34bd('0x40')](_[_0x34bd('0x5c')](_0x53261a[_0x34bd('0x38')],_0x1c4942[_0x34bd('0x40')]));if(_0x53261a[_0x34bd('0x38')][_0x34bd('0x2a')]){_0x9cdcdf['where']=_['merge'](_0x9cdcdf[_0x34bd('0x3f')],{'$or':_[_0x34bd('0x2c')](_0x9cdcdf[_0x34bd('0x3b')],function(_0x6ba1aa){var _0x2464a7={};_0x2464a7[_0x6ba1aa]={'$like':'%'+_0x53261a[_0x34bd('0x38')][_0x34bd('0x2a')]+'%'};return _0x2464a7;})});}_0x9cdcdf=_[_0x34bd('0x41')]({},_0x9cdcdf,_0x53261a[_0x34bd('0x5d')]);return _0x5cba00['getMembers'](_0x9cdcdf);}})[_0x34bd('0x24')](function(_0x5db941){if(_0x5db941){_0x494e6f=_0x5db941['length'];if(!_0x53261a[_0x34bd('0x38')]['hasOwnProperty']('nolimit')){_0x9cdcdf['limit']=qs[_0x34bd('0x1e')](_0x53261a['query'][_0x34bd('0x1e')]);_0x9cdcdf[_0x34bd('0x1d')]=qs['offset'](_0x53261a[_0x34bd('0x38')][_0x34bd('0x1d')]);}return _0x5cba00[_0x34bd('0x9b')](_0x9cdcdf);}})[_0x34bd('0x24')](function(_0x49d39e){return _0x49d39e?{'count':_0x494e6f,'rows':_0x49d39e}:null;})[_0x34bd('0x24')](respondWithResult(_0x123365,null))['catch'](handleError(_0x123365,null));};exports[_0x34bd('0x9c')]=function(_0x21e1e6,_0x41216b,_0x10b81d){var _0x3d2dd4={};var _0x26df43={};var _0x42a676;var _0x283758;return db[_0x34bd('0x42')][_0x34bd('0x59')]({'where':{'id':_0x21e1e6[_0x34bd('0x46')]['id']}})[_0x34bd('0x24')](handleEntityNotFound(_0x41216b,null))[_0x34bd('0x24')](function(_0x1e7280){if(_0x1e7280){_0x42a676=_0x1e7280;_0x26df43['model']=_[_0x34bd('0x53')](db[_0x34bd('0x9d')][_0x34bd('0x35')]);_0x26df43[_0x34bd('0x38')]=_[_0x34bd('0x53')](_0x21e1e6[_0x34bd('0x38')]);_0x26df43[_0x34bd('0x40')]=_[_0x34bd('0x39')](_0x26df43[_0x34bd('0x37')],_0x26df43[_0x34bd('0x38')]);_0x3d2dd4[_0x34bd('0x3b')]=_['intersection'](_0x26df43['model'],qs[_0x34bd('0x3a')](_0x21e1e6[_0x34bd('0x38')]['fields']));_0x3d2dd4[_0x34bd('0x3b')]=_0x3d2dd4[_0x34bd('0x3b')][_0x34bd('0x3c')]?_0x3d2dd4['attributes']:_0x26df43[_0x34bd('0x37')];_0x3d2dd4['order']=qs[_0x34bd('0x5b')](_0x21e1e6[_0x34bd('0x38')]['sort']);_0x3d2dd4[_0x34bd('0x3f')]=qs[_0x34bd('0x40')](_['pick'](_0x21e1e6[_0x34bd('0x38')],_0x26df43[_0x34bd('0x40')]));if(_0x21e1e6['query'][_0x34bd('0x2a')]){_0x3d2dd4[_0x34bd('0x3f')]=_[_0x34bd('0x41')](_0x3d2dd4['where'],{'$or':_[_0x34bd('0x2c')](_0x3d2dd4[_0x34bd('0x3b')],function(_0x251d13){var _0x45d003={};_0x45d003[_0x251d13]={'$like':'%'+_0x21e1e6[_0x34bd('0x38')][_0x34bd('0x2a')]+'%'};return _0x45d003;})});}_0x3d2dd4=_[_0x34bd('0x41')]({},_0x3d2dd4,_0x21e1e6[_0x34bd('0x5d')]);return _0x42a676[_0x34bd('0x9c')](_0x3d2dd4);}})[_0x34bd('0x24')](function(_0x167ac7){if(_0x167ac7){_0x283758=_0x167ac7[_0x34bd('0x3c')];if(!_0x21e1e6[_0x34bd('0x38')]['hasOwnProperty']('nolimit')){_0x3d2dd4[_0x34bd('0x1e')]=qs[_0x34bd('0x1e')](_0x21e1e6[_0x34bd('0x38')][_0x34bd('0x1e')]);_0x3d2dd4[_0x34bd('0x1d')]=qs[_0x34bd('0x1d')](_0x21e1e6[_0x34bd('0x38')][_0x34bd('0x1d')]);}return _0x42a676[_0x34bd('0x9c')](_0x3d2dd4);}})[_0x34bd('0x24')](function(_0x2393ae){if(_0x2393ae){return _0x2393ae?{'count':_0x283758,'rows':_0x2393ae}:null;}})[_0x34bd('0x24')](respondWithResult(_0x41216b,null))[_0x34bd('0x48')](handleError(_0x41216b,null));};exports[_0x34bd('0x9e')]=function(_0x102a71,_0x366f44,_0x56166d){var _0x6f2569=moment()['format'](_0x34bd('0x9f'));var _0x64f1c,_0x4863c0;return db[_0x34bd('0x42')]['find']({'where':{'id':_0x102a71[_0x34bd('0x46')]['id']}})[_0x34bd('0x24')](handleEntityNotFound(_0x366f44,null))[_0x34bd('0x24')](function(_0x4ab2d1){if(_0x4ab2d1){_0x4863c0=_0x4ab2d1;return _0x4ab2d1[_0x34bd('0x9e')](_0x102a71[_0x34bd('0x4a')][_0x34bd('0x7e')],_['omit'](_0x102a71[_0x34bd('0x4a')],[_0x34bd('0x7e'),'id'])||{});}return null;})[_0x34bd('0x95')](function(_0x2aa2e4){var _0x9f43ad;_0x64f1c=_0x2aa2e4||[];var _0x4df1d7=[];if(_0x2aa2e4){for(var _0x8f0afc=0x0;_0x8f0afc<_0x2aa2e4[_0x34bd('0x3c')];_0x8f0afc+=0x1){var _0x3f28b0=_0x2aa2e4[_0x8f0afc]['get']({'plain':!![]});_0x4863c0[_0x34bd('0xa0')]=_0x102a71['body'][_0x34bd('0xa0')]?_0x102a71[_0x34bd('0x4a')][_0x34bd('0xa0')]:_0x4863c0[_0x34bd('0xa0')];switch(_0x4863c0[_0x34bd('0xa0')]){case _0x34bd('0xa1'):_0x9f43ad=squel[_0x34bd('0xa2')]()['into'](_0x34bd('0xa3'))[_0x34bd('0xa4')]([_0x34bd('0xa5'),_0x34bd('0xa6'),'ContactId','ListId',_0x34bd('0x61'),_0x34bd('0x55'),'updatedAt'],squel[_0x34bd('0x7f')]()[_0x34bd('0x80')](_0x34bd('0xa5'),_0x34bd('0xa5'))['field']('\x27'+_0x6f2569+'\x27',_0x34bd('0xa6'))[_0x34bd('0x80')]('id',_0x34bd('0xa7'))[_0x34bd('0x80')](_0x3f28b0['CmListId'][_0x34bd('0x8b')](),_0x34bd('0xa8'))['field'](_0x102a71[_0x34bd('0x46')]['id'][_0x34bd('0x8b')](),_0x34bd('0x61'))[_0x34bd('0x80')]('\x27'+_0x6f2569+'\x27','createdAt')['field']('\x27'+_0x6f2569+'\x27','updatedAt')['from'](_0x34bd('0xa9'))['where'](_0x34bd('0xaa'))['where'](_0x34bd('0xab'),_0x3f28b0[_0x34bd('0xac')][_0x34bd('0x8b')]())[_0x34bd('0x3f')](_0x34bd('0xad'))[_0x34bd('0x3f')]('phone\x20NOT\x20IN\x20(?)',squel[_0x34bd('0x7f')]()[_0x34bd('0x80')](_0x34bd('0xae'))[_0x34bd('0x82')]('cm_hopper_final')['where']('VoiceQueueId\x20=\x20?',_0x102a71[_0x34bd('0x46')]['id'][_0x34bd('0x8b')]()))[_0x34bd('0x3f')]('phone\x20NOT\x20IN\x20(?)',squel[_0x34bd('0x7f')]()[_0x34bd('0x80')](_0x34bd('0xaf'))['from']('cm_hopper')[_0x34bd('0x3f')](_0x34bd('0x87'),_0x102a71[_0x34bd('0x46')]['id'][_0x34bd('0x8b')]())))[_0x34bd('0x8b')]();break;case _0x34bd('0xb0'):_0x9f43ad=squel[_0x34bd('0xa2')]()['into']('cm_hopper')['fromQuery']([_0x34bd('0xa5'),_0x34bd('0xa6'),_0x34bd('0xa7'),'ListId','VoiceQueueId','createdAt',_0x34bd('0x56')],squel[_0x34bd('0x7f')]()[_0x34bd('0x80')](_0x34bd('0xa5'),_0x34bd('0xa5'))[_0x34bd('0x80')]('\x27'+_0x6f2569+'\x27',_0x34bd('0xa6'))[_0x34bd('0x80')]('id',_0x34bd('0xa7'))[_0x34bd('0x80')](_0x3f28b0[_0x34bd('0xac')]['toString'](),_0x34bd('0xa8'))['field'](_0x102a71[_0x34bd('0x46')]['id'][_0x34bd('0x8b')](),_0x34bd('0x61'))[_0x34bd('0x80')]('\x27'+_0x6f2569+'\x27','createdAt')[_0x34bd('0x80')]('\x27'+_0x6f2569+'\x27',_0x34bd('0x56'))[_0x34bd('0x82')]('cm_contacts')[_0x34bd('0x3f')](_0x34bd('0xaa'))[_0x34bd('0x3f')](_0x34bd('0xab'),_0x3f28b0[_0x34bd('0xac')]['toString']())[_0x34bd('0x3f')](_0x34bd('0xad'))[_0x34bd('0x3f')](_0x34bd('0xb1'),squel[_0x34bd('0x7f')]()['field']('COALESCE(phone,\x27\x27)')[_0x34bd('0x82')](_0x34bd('0xa3'))[_0x34bd('0x3f')]('VoiceQueueId\x20=\x20?',_0x102a71[_0x34bd('0x46')]['id'][_0x34bd('0x8b')]())))[_0x34bd('0x8b')]();break;default:_0x9f43ad=squel[_0x34bd('0xa2')]()[_0x34bd('0xb2')]('cm_hopper')['fromQuery']([_0x34bd('0xa5'),'scheduledAt',_0x34bd('0xa7'),_0x34bd('0xa8'),_0x34bd('0x61'),_0x34bd('0x55'),'updatedAt'],squel[_0x34bd('0x7f')]()['field'](_0x34bd('0xa5'),'phone')['field']('\x27'+_0x6f2569+'\x27',_0x34bd('0xa6'))[_0x34bd('0x80')]('id',_0x34bd('0xa7'))['field'](_0x3f28b0[_0x34bd('0xac')][_0x34bd('0x8b')](),_0x34bd('0xa8'))[_0x34bd('0x80')](_0x102a71[_0x34bd('0x46')]['id'][_0x34bd('0x8b')](),_0x34bd('0x61'))[_0x34bd('0x80')]('\x27'+_0x6f2569+'\x27',_0x34bd('0x55'))[_0x34bd('0x80')]('\x27'+_0x6f2569+'\x27',_0x34bd('0x56'))[_0x34bd('0x82')](_0x34bd('0xa9'))[_0x34bd('0x3f')](_0x34bd('0xaa'))[_0x34bd('0x3f')](_0x34bd('0xab'),_0x3f28b0[_0x34bd('0xac')]['toString']())[_0x34bd('0x3f')]('phone\x20IS\x20NOT\x20NULL'))['toString']();}_0x4df1d7['push'](db[_0x34bd('0x71')]['query'](_0x9f43ad));}return BPromise[_0x34bd('0x91')](_0x4df1d7);}})[_0x34bd('0x24')](function(){var _0x3a9a03=[];var _0x595aff=squel[_0x34bd('0xa2')]()['into'](_0x34bd('0xb3'))[_0x34bd('0xa4')]([_0x34bd('0xb4'),_0x34bd('0xa5'),_0x34bd('0xb5'),'createdAt',_0x34bd('0x56')],squel['select']()[_0x34bd('0x80')](_0x34bd('0xb6'))['field'](_0x34bd('0xb7'))[_0x34bd('0x80')]('ci.OrderBy+1')[_0x34bd('0x80')]('\x27'+_0x6f2569+'\x27',_0x34bd('0x55'))[_0x34bd('0x80')]('\x27'+_0x6f2569+'\x27','updatedAt')[_0x34bd('0x82')](_0x34bd('0xb8'),'ci')['join']('cm_hopper','h',_0x34bd('0xb9'))['where']('h.scheduledat=?',_0x6f2569)[_0x34bd('0x3f')](_0x34bd('0xba'),_0x34bd('0xbb')))[_0x34bd('0x8b')]();_0x3a9a03[_0x34bd('0x8a')](db[_0x34bd('0x71')][_0x34bd('0x38')](_0x595aff));return BPromise[_0x34bd('0x91')](_0x3a9a03);})[_0x34bd('0x24')](function(){return _0x64f1c;})['then'](respondWithResult(_0x366f44,null))[_0x34bd('0x48')](handleError(_0x366f44,null));};exports[_0x34bd('0xbc')]=function(_0x25106d,_0x50db9e,_0x9a517f){return db[_0x34bd('0x42')][_0x34bd('0x4e')]({'where':{'id':_0x25106d[_0x34bd('0x46')]['id']}})[_0x34bd('0x24')](handleEntityNotFound(_0x50db9e,null))[_0x34bd('0x24')](function(_0x1a6ce2){if(_0x1a6ce2){return _0x1a6ce2[_0x34bd('0xbc')](_0x25106d[_0x34bd('0x38')][_0x34bd('0x7e')]);}})[_0x34bd('0x24')](function(_0x68e676){if(_0x68e676){return db[_0x34bd('0x5a')][_0x34bd('0x25')]({'where':{'ListId':_0x25106d[_0x34bd('0x38')][_0x34bd('0x7e')],'VoiceQueueId':_0x25106d[_0x34bd('0x46')]['id']}})['then'](function(){return _0x68e676;});}})[_0x34bd('0x24')](respondWithStatusCode(_0x50db9e,null))[_0x34bd('0x48')](handleError(_0x50db9e,null));};exports[_0x34bd('0xbd')]=function(_0x2d87b2,_0x471685,_0x41315d){var _0x4db8f3={};var _0x301c2e={};var _0x40e0b3;var _0x2f877b;return db[_0x34bd('0x42')][_0x34bd('0x59')]({'where':{'id':_0x2d87b2[_0x34bd('0x46')]['id']}})['then'](handleEntityNotFound(_0x471685,null))['then'](function(_0x26c195){if(_0x26c195){_0x40e0b3=_0x26c195;_0x301c2e['model']=_['keys'](db[_0x34bd('0x9d')][_0x34bd('0x35')]);_0x301c2e['query']=_['keys'](_0x2d87b2['query']);_0x301c2e[_0x34bd('0x40')]=_[_0x34bd('0x39')](_0x301c2e[_0x34bd('0x37')],_0x301c2e[_0x34bd('0x38')]);_0x4db8f3['attributes']=_[_0x34bd('0x39')](_0x301c2e[_0x34bd('0x37')],qs[_0x34bd('0x3a')](_0x2d87b2['query'][_0x34bd('0x3a')]));_0x4db8f3[_0x34bd('0x3b')]=_0x4db8f3['attributes'][_0x34bd('0x3c')]?_0x4db8f3[_0x34bd('0x3b')]:_0x301c2e[_0x34bd('0x37')];_0x4db8f3[_0x34bd('0x3e')]=qs[_0x34bd('0x5b')](_0x2d87b2[_0x34bd('0x38')][_0x34bd('0x5b')]);_0x4db8f3[_0x34bd('0x3f')]=qs[_0x34bd('0x40')](_[_0x34bd('0x5c')](_0x2d87b2[_0x34bd('0x38')],_0x301c2e[_0x34bd('0x40')]));if(_0x2d87b2[_0x34bd('0x38')][_0x34bd('0x2a')]){_0x4db8f3[_0x34bd('0x3f')]=_[_0x34bd('0x41')](_0x4db8f3['where'],{'$or':_[_0x34bd('0x2c')](_0x4db8f3[_0x34bd('0x3b')],function(_0x2c35da){var _0x3d7eed={};_0x3d7eed[_0x2c35da]={'$like':'%'+_0x2d87b2['query']['filter']+'%'};return _0x3d7eed;})});}_0x4db8f3=_['merge']({},_0x4db8f3,_0x2d87b2[_0x34bd('0x5d')]);return _0x40e0b3[_0x34bd('0xbd')](_0x4db8f3);}})[_0x34bd('0x24')](function(_0x4ceb4d){if(_0x4ceb4d){_0x2f877b=_0x4ceb4d[_0x34bd('0x3c')];if(!_0x2d87b2[_0x34bd('0x38')][_0x34bd('0x60')](_0x34bd('0x3d'))){_0x4db8f3[_0x34bd('0x1e')]=qs[_0x34bd('0x1e')](_0x2d87b2[_0x34bd('0x38')][_0x34bd('0x1e')]);_0x4db8f3[_0x34bd('0x1d')]=qs[_0x34bd('0x1d')](_0x2d87b2[_0x34bd('0x38')]['offset']);}return _0x40e0b3[_0x34bd('0xbd')](_0x4db8f3);}})[_0x34bd('0x24')](function(_0x57c70e){if(_0x57c70e){return _0x57c70e?{'count':_0x2f877b,'rows':_0x57c70e}:null;}})[_0x34bd('0x24')](respondWithResult(_0x471685,null))['catch'](handleError(_0x471685,null));};exports[_0x34bd('0xbe')]=function(_0x552a91,_0x5b2b3f,_0x51919b){var _0x25082f,_0x18845d;return db[_0x34bd('0x42')]['find']({'where':{'id':_0x552a91['params']['id']}})[_0x34bd('0x24')](handleEntityNotFound(_0x5b2b3f,null))['then'](function(_0x3e2250){if(_0x3e2250){_0x18845d=_0x3e2250;return _0x3e2250[_0x34bd('0xbe')](_0x552a91['body'][_0x34bd('0x7e')],_[_0x34bd('0x54')](_0x552a91[_0x34bd('0x4a')],[_0x34bd('0x7e'),'id'])||{});}return null;})['spread'](function(_0x1fd7f5){var _0x540859;_0x25082f=_0x1fd7f5||[];var _0x1a6d6e=[];if(_0x1fd7f5){for(var _0x30c59d=0x0;_0x30c59d<_0x1fd7f5[_0x34bd('0x3c')];_0x30c59d+=0x1){var _0x52fa1d=_0x1fd7f5[_0x30c59d][_0x34bd('0x26')]({'plain':!![]});_0x540859=squel['insert']()['into'](_0x34bd('0xbf'))[_0x34bd('0xa4')]([_0x34bd('0xa5'),_0x34bd('0xa7'),_0x34bd('0xa8'),'VoiceQueueId',_0x34bd('0x55'),_0x34bd('0x56')],squel[_0x34bd('0x7f')]()[_0x34bd('0x80')]('phone',_0x34bd('0xa5'))[_0x34bd('0x80')]('id',_0x34bd('0xa7'))[_0x34bd('0x80')](_0x52fa1d[_0x34bd('0xac')][_0x34bd('0x8b')](),_0x34bd('0xa8'))['field'](_0x552a91[_0x34bd('0x46')]['id']['toString'](),_0x34bd('0x61'))[_0x34bd('0x80')]('NOW()','createdAt')[_0x34bd('0x80')](_0x34bd('0xc0'),'updatedAt')[_0x34bd('0x82')](_0x34bd('0xa9'))[_0x34bd('0x3f')](_0x34bd('0xaa'))[_0x34bd('0x3f')](_0x34bd('0xab'),_0x52fa1d[_0x34bd('0xac')][_0x34bd('0x8b')]())[_0x34bd('0x3f')](_0x34bd('0xad')))[_0x34bd('0x8b')]();_0x1a6d6e[_0x34bd('0x8a')](db['sequelize'][_0x34bd('0x38')](_0x540859));}return BPromise[_0x34bd('0x91')](_0x1a6d6e);}})[_0x34bd('0x24')](function(){return _0x25082f;})[_0x34bd('0x24')](respondWithResult(_0x5b2b3f,null))[_0x34bd('0x48')](handleError(_0x5b2b3f,null));};exports[_0x34bd('0xc1')]=function(_0x51e096,_0x552071,_0x32c284){return db['VoiceQueue'][_0x34bd('0x4e')]({'where':{'id':_0x51e096[_0x34bd('0x46')]['id']}})[_0x34bd('0x24')](handleEntityNotFound(_0x552071,null))[_0x34bd('0x24')](function(_0x2eb18c){if(_0x2eb18c){return _0x2eb18c[_0x34bd('0xc1')](_0x51e096[_0x34bd('0x38')][_0x34bd('0x7e')]);}})[_0x34bd('0x24')](function(_0x172ec6){if(_0x172ec6){return db['CmHopperBlack'][_0x34bd('0x25')]({'where':{'ListId':_0x51e096[_0x34bd('0x38')][_0x34bd('0x7e')],'VoiceQueueId':_0x51e096[_0x34bd('0x46')]['id']}})[_0x34bd('0x24')](function(){return _0x172ec6;});}})[_0x34bd('0x24')](respondWithStatusCode(_0x552071,null))[_0x34bd('0x48')](handleError(_0x552071,null));};
\ No newline at end of file
index 68debc7..be3b6dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8620=['../../mysqldb','setMaxListeners','save','update','remove','emit','hook','exports','events'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8620,0x7d));var _0x0862=function(_0x890af5,_0x5e754e){_0x890af5=_0x890af5-0x0;var _0x5a27cf=_0x8620[_0x890af5];return _0x5a27cf;};'use strict';var EventEmitter=require(_0x0862('0x0'));var VoiceQueue=require(_0x0862('0x1'))['db']['VoiceQueue'];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x0862('0x2')](0x0);var events={'afterCreate':_0x0862('0x3'),'afterUpdate':_0x0862('0x4'),'afterDestroy':_0x0862('0x5')};function emitEvent(_0x4f7f30){return function(_0x2790de,_0x428c40,_0x51b204){VoiceQueueEvents[_0x0862('0x6')](_0x4f7f30+':'+_0x2790de['id'],_0x2790de);VoiceQueueEvents[_0x0862('0x6')](_0x4f7f30,_0x2790de);_0x51b204(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueue[_0x0862('0x7')](e,emitEvent(event));}}module[_0x0862('0x8')]=VoiceQueueEvents;
\ No newline at end of file
+var _0xc3ef=['hook','VoiceQueue','setMaxListeners','update','emit'];(function(_0xd02def,_0x144f25){var _0x2e8374=function(_0x5ceb35){while(--_0x5ceb35){_0xd02def['push'](_0xd02def['shift']());}};_0x2e8374(++_0x144f25);}(_0xc3ef,0xa1));var _0xfc3e=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xc3ef[_0x3ab51d];return _0x29a04e;};'use strict';var EventEmitter=require('events');var VoiceQueue=require('../../mysqldb')['db'][_0xfc3e('0x0')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0xfc3e('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0xfc3e('0x2'),'afterDestroy':'remove'};function emitEvent(_0x1d7b67){return function(_0x9bace3,_0x4afbe7,_0x1d3e9e){VoiceQueueEvents[_0xfc3e('0x3')](_0x1d7b67+':'+_0x9bace3['id'],_0x9bace3);VoiceQueueEvents[_0xfc3e('0x3')](_0x1d7b67,_0x9bace3);_0x1d3e9e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueue[_0xfc3e('0x4')](e,emitEvent(event));}}module['exports']=VoiceQueueEvents;
\ No newline at end of file
index f85a429..53cd7ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../config/environment','./voiceQueue.attributes','exports','define','VoiceQueue','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x8ff4eb,_0x567ade){var _0x4fdd29=function(_0x541878){while(--_0x541878){_0x8ff4eb['push'](_0x8ff4eb['shift']());}};_0x4fdd29(++_0x567ade);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f3848,_0x48564d){_0x2f3848=_0x2f3848-0x0;var _0x102668=_0xa9e0[_0x2f3848];return _0x102668;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3e74=['exports','VoiceQueue','voice_queues','lodash','../../config/logger','api','moment','path','../../config/environment','./voiceQueue.attributes'];(function(_0x4ec3de,_0x1c67c4){var _0x37478a=function(_0x5afbd3){while(--_0x5afbd3){_0x4ec3de['push'](_0x4ec3de['shift']());}};_0x37478a(++_0x1c67c4);}(_0x3e74,0x175));var _0x43e7=function(_0x2dec16,_0x165c6e){_0x2dec16=_0x2dec16-0x0;var _0x24eaa7=_0x3e74[_0x2dec16];return _0x24eaa7;};'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 052a795..f6765a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8ac=['http','redis','defaults','socket.io-emitter','./voiceQueue.socket','register','request','then','info','request\x20sent','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','VoiceQueue,\x20%s,\x20%s','result','catch','GetVoiceQueue','VoiceQueue','findAll','options','raw','attributes','limit','include','model','map','debug','ShowVoiceQueue','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x31ca1e,_0x1a27b1){var _0xd1c1e7=function(_0x12f988){while(--_0x12f988){_0x31ca1e['push'](_0x31ca1e['shift']());}};_0xd1c1e7(++_0x1a27b1);}(_0xc8ac,0x1cd));var _0xcc8a=function(_0x158e3b,_0x4534b){_0x158e3b=_0x158e3b-0x0;var _0x551a1d=_0xc8ac[_0x158e3b];return _0x551a1d;};'use strict';var _=require(_0xcc8a('0x0'));var util=require(_0xcc8a('0x1'));var moment=require(_0xcc8a('0x2'));var BPromise=require(_0xcc8a('0x3'));var rs=require(_0xcc8a('0x4'));var fs=require('fs');var Redis=require(_0xcc8a('0x5'));var db=require(_0xcc8a('0x6'))['db'];var utils=require(_0xcc8a('0x7'));var logger=require(_0xcc8a('0x8'))(_0xcc8a('0x9'));var config=require(_0xcc8a('0xa'));var jayson=require(_0xcc8a('0xb'));var client=jayson['client'][_0xcc8a('0xc')]({'port':0x232a});config[_0xcc8a('0xd')]=_[_0xcc8a('0xe')](config[_0xcc8a('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0xcc8a('0xf'))(new Redis(config[_0xcc8a('0xd')]));require(_0xcc8a('0x10'))[_0xcc8a('0x11')](socket);function respondWithRpcPromise(_0x2a841f,_0x4a606d,_0x3b9605){return new BPromise(function(_0x4aa22a,_0x5375f4){return client[_0xcc8a('0x12')](_0x2a841f,_0x3b9605)[_0xcc8a('0x13')](function(_0x1d9d30){logger[_0xcc8a('0x14')]('VoiceQueue,\x20%s,\x20%s',_0x4a606d,_0xcc8a('0x15'));logger['debug'](_0xcc8a('0x16'),_0x4a606d,'request\x20sent',JSON[_0xcc8a('0x17')](_0x1d9d30));if(_0x1d9d30[_0xcc8a('0x18')]){if(_0x1d9d30[_0xcc8a('0x18')][_0xcc8a('0x19')]===0x1f4){logger[_0xcc8a('0x18')]('VoiceQueue,\x20%s,\x20%s',_0x4a606d,_0x1d9d30[_0xcc8a('0x18')][_0xcc8a('0x1a')]);return _0x5375f4(_0x1d9d30[_0xcc8a('0x18')][_0xcc8a('0x1a')]);}logger[_0xcc8a('0x18')](_0xcc8a('0x1b'),_0x4a606d,_0x1d9d30[_0xcc8a('0x18')][_0xcc8a('0x1a')]);return _0x4aa22a(_0x1d9d30[_0xcc8a('0x18')][_0xcc8a('0x1a')]);}else{logger[_0xcc8a('0x14')](_0xcc8a('0x1b'),_0x4a606d,'request\x20sent');_0x4aa22a(_0x1d9d30[_0xcc8a('0x1c')]['message']);}})[_0xcc8a('0x1d')](function(_0x5104c1){logger[_0xcc8a('0x18')](_0xcc8a('0x1b'),_0x4a606d,_0x5104c1);_0x5375f4(_0x5104c1);});});}exports[_0xcc8a('0x1e')]=function(_0xfe5817){var _0xd8d4fa=this;return new Promise(function(_0x1109b7,_0x22e677){return db[_0xcc8a('0x1f')][_0xcc8a('0x20')]({'raw':_0xfe5817[_0xcc8a('0x21')]?_0xfe5817['options'][_0xcc8a('0x22')]===undefined?!![]:![]:!![],'where':_0xfe5817[_0xcc8a('0x21')]?_0xfe5817[_0xcc8a('0x21')]['where']||null:null,'attributes':_0xfe5817['options']?_0xfe5817[_0xcc8a('0x21')][_0xcc8a('0x23')]||null:null,'limit':_0xfe5817[_0xcc8a('0x21')]?_0xfe5817[_0xcc8a('0x21')][_0xcc8a('0x24')]||null:null,'include':_0xfe5817[_0xcc8a('0x21')]?_0xfe5817[_0xcc8a('0x21')][_0xcc8a('0x25')]?_['map'](_0xfe5817[_0xcc8a('0x21')]['include'],function(_0x29fbec){return{'model':db[_0x29fbec[_0xcc8a('0x26')]],'as':_0x29fbec['as'],'attributes':_0x29fbec[_0xcc8a('0x23')],'include':_0x29fbec['include']?_[_0xcc8a('0x27')](_0x29fbec['include'],function(_0x17619b){return{'model':db[_0x17619b[_0xcc8a('0x26')]],'as':_0x17619b['as'],'attributes':_0x17619b[_0xcc8a('0x23')],'include':_0x17619b[_0xcc8a('0x25')]?_[_0xcc8a('0x27')](_0x17619b['include'],function(_0x1e3b66){return{'model':db[_0x1e3b66[_0xcc8a('0x26')]],'as':_0x1e3b66['as'],'attributes':_0x1e3b66[_0xcc8a('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4ea9f3){logger[_0xcc8a('0x14')](_0xcc8a('0x1e'),_0xfe5817);logger[_0xcc8a('0x28')](_0xcc8a('0x1e'),_0xfe5817,JSON[_0xcc8a('0x17')](_0x4ea9f3));_0x1109b7(_0x4ea9f3);})['catch'](function(_0x2bbb03){logger[_0xcc8a('0x18')](_0xcc8a('0x1e'),_0x2bbb03[_0xcc8a('0x1a')],_0xfe5817);_0x22e677(_0xd8d4fa[_0xcc8a('0x18')](0x1f4,_0x2bbb03['message']));});});};exports[_0xcc8a('0x29')]=function(_0x438f07){var _0xbf6da9=this;return new Promise(function(_0x215725,_0xa8ee25){return db['VoiceQueue'][_0xcc8a('0x2a')]({'raw':_0x438f07[_0xcc8a('0x21')]?_0x438f07['options'][_0xcc8a('0x22')]===undefined?!![]:![]:!![],'where':_0x438f07[_0xcc8a('0x21')]?_0x438f07['options']['where']||null:null,'attributes':_0x438f07[_0xcc8a('0x21')]?_0x438f07[_0xcc8a('0x21')][_0xcc8a('0x23')]||null:null,'include':_0x438f07[_0xcc8a('0x21')]?_0x438f07[_0xcc8a('0x21')][_0xcc8a('0x25')]?_[_0xcc8a('0x27')](_0x438f07[_0xcc8a('0x21')]['include'],function(_0x3dd6f2){return{'model':db[_0x3dd6f2['model']],'as':_0x3dd6f2['as'],'attributes':_0x3dd6f2[_0xcc8a('0x23')],'include':_0x3dd6f2[_0xcc8a('0x25')]?_[_0xcc8a('0x27')](_0x3dd6f2['include'],function(_0xcce003){return{'model':db[_0xcce003[_0xcc8a('0x26')]],'as':_0xcce003['as'],'attributes':_0xcce003[_0xcc8a('0x23')],'include':_0xcce003[_0xcc8a('0x25')]?_[_0xcc8a('0x27')](_0xcce003['include'],function(_0x5c09b2){return{'model':db[_0x5c09b2[_0xcc8a('0x26')]],'as':_0x5c09b2['as'],'attributes':_0x5c09b2[_0xcc8a('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4c6497){logger[_0xcc8a('0x14')](_0xcc8a('0x29'),_0x438f07);logger[_0xcc8a('0x28')](_0xcc8a('0x29'),_0x438f07,JSON[_0xcc8a('0x17')](_0x4c6497));_0x215725(_0x4c6497);})[_0xcc8a('0x1d')](function(_0x2a3421){logger[_0xcc8a('0x18')](_0xcc8a('0x29'),_0x2a3421['message'],_0x438f07);_0xa8ee25(_0xbf6da9['error'](0x1f4,_0x2a3421[_0xcc8a('0x1a')]));});});};
\ No newline at end of file
+var _0xe651=['request\x20sent','stringify','error','message','result','catch','VoiceQueue','findAll','options','raw','where','limit','include','model','attributes','map','GetVoiceQueue','ShowVoiceQueue','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','redis','socket.io-emitter','./voiceQueue.socket','register','then','info','VoiceQueue,\x20%s,\x20%s','debug','VoiceQueue,\x20%s,\x20%s,\x20%s'];(function(_0x2c2f38,_0x7aa07c){var _0x2e0eec=function(_0x395f55){while(--_0x395f55){_0x2c2f38['push'](_0x2c2f38['shift']());}};_0x2e0eec(++_0x7aa07c);}(_0xe651,0xd0));var _0x1e65=function(_0xf90544,_0x211f7a){_0xf90544=_0xf90544-0x0;var _0x22b0ed=_0xe651[_0xf90544];return _0x22b0ed;};'use strict';var _=require(_0x1e65('0x0'));var util=require(_0x1e65('0x1'));var moment=require(_0x1e65('0x2'));var BPromise=require(_0x1e65('0x3'));var rs=require(_0x1e65('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1e65('0x5'))['db'];var utils=require(_0x1e65('0x6'));var logger=require(_0x1e65('0x7'))(_0x1e65('0x8'));var config=require('../../config/environment');var jayson=require(_0x1e65('0x9'));var client=jayson['client'][_0x1e65('0xa')]({'port':0x232a});config[_0x1e65('0xb')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x1e65('0xc'))(new Redis(config[_0x1e65('0xb')]));require(_0x1e65('0xd'))[_0x1e65('0xe')](socket);function respondWithRpcPromise(_0x3e92c6,_0x26deee,_0x210308){return new BPromise(function(_0x35c7a4,_0x1afd27){return client['request'](_0x3e92c6,_0x210308)[_0x1e65('0xf')](function(_0x5103d4){logger[_0x1e65('0x10')](_0x1e65('0x11'),_0x26deee,'request\x20sent');logger[_0x1e65('0x12')](_0x1e65('0x13'),_0x26deee,_0x1e65('0x14'),JSON[_0x1e65('0x15')](_0x5103d4));if(_0x5103d4[_0x1e65('0x16')]){if(_0x5103d4['error']['code']===0x1f4){logger[_0x1e65('0x16')](_0x1e65('0x11'),_0x26deee,_0x5103d4[_0x1e65('0x16')][_0x1e65('0x17')]);return _0x1afd27(_0x5103d4[_0x1e65('0x16')]['message']);}logger['error'](_0x1e65('0x11'),_0x26deee,_0x5103d4[_0x1e65('0x16')]['message']);return _0x35c7a4(_0x5103d4[_0x1e65('0x16')][_0x1e65('0x17')]);}else{logger[_0x1e65('0x10')]('VoiceQueue,\x20%s,\x20%s',_0x26deee,_0x1e65('0x14'));_0x35c7a4(_0x5103d4[_0x1e65('0x18')]['message']);}})[_0x1e65('0x19')](function(_0x4d2245){logger[_0x1e65('0x16')](_0x1e65('0x11'),_0x26deee,_0x4d2245);_0x1afd27(_0x4d2245);});});}exports['GetVoiceQueue']=function(_0xc248c9){var _0x303e8a=this;return new Promise(function(_0x4266f3,_0x186b8d){return db[_0x1e65('0x1a')][_0x1e65('0x1b')]({'raw':_0xc248c9[_0x1e65('0x1c')]?_0xc248c9['options'][_0x1e65('0x1d')]===undefined?!![]:![]:!![],'where':_0xc248c9[_0x1e65('0x1c')]?_0xc248c9[_0x1e65('0x1c')][_0x1e65('0x1e')]||null:null,'attributes':_0xc248c9[_0x1e65('0x1c')]?_0xc248c9['options']['attributes']||null:null,'limit':_0xc248c9[_0x1e65('0x1c')]?_0xc248c9[_0x1e65('0x1c')][_0x1e65('0x1f')]||null:null,'include':_0xc248c9[_0x1e65('0x1c')]?_0xc248c9['options'][_0x1e65('0x20')]?_['map'](_0xc248c9[_0x1e65('0x1c')]['include'],function(_0x2f2b78){return{'model':db[_0x2f2b78[_0x1e65('0x21')]],'as':_0x2f2b78['as'],'attributes':_0x2f2b78[_0x1e65('0x22')],'include':_0x2f2b78[_0x1e65('0x20')]?_[_0x1e65('0x23')](_0x2f2b78['include'],function(_0x56f69b){return{'model':db[_0x56f69b[_0x1e65('0x21')]],'as':_0x56f69b['as'],'attributes':_0x56f69b[_0x1e65('0x22')],'include':_0x56f69b[_0x1e65('0x20')]?_[_0x1e65('0x23')](_0x56f69b[_0x1e65('0x20')],function(_0x4a136c){return{'model':db[_0x4a136c[_0x1e65('0x21')]],'as':_0x4a136c['as'],'attributes':_0x4a136c[_0x1e65('0x22')]};}):[]};}):[]};}):[]:[]})[_0x1e65('0xf')](function(_0x5453ae){logger['info'](_0x1e65('0x24'),_0xc248c9);logger[_0x1e65('0x12')](_0x1e65('0x24'),_0xc248c9,JSON[_0x1e65('0x15')](_0x5453ae));_0x4266f3(_0x5453ae);})[_0x1e65('0x19')](function(_0x2c8859){logger['error'](_0x1e65('0x24'),_0x2c8859[_0x1e65('0x17')],_0xc248c9);_0x186b8d(_0x303e8a['error'](0x1f4,_0x2c8859[_0x1e65('0x17')]));});});};exports[_0x1e65('0x25')]=function(_0x1dd61f){var _0x1ca3ea=this;return new Promise(function(_0x375bc0,_0x4c489e){return db[_0x1e65('0x1a')]['find']({'raw':_0x1dd61f[_0x1e65('0x1c')]?_0x1dd61f['options'][_0x1e65('0x1d')]===undefined?!![]:![]:!![],'where':_0x1dd61f[_0x1e65('0x1c')]?_0x1dd61f[_0x1e65('0x1c')][_0x1e65('0x1e')]||null:null,'attributes':_0x1dd61f[_0x1e65('0x1c')]?_0x1dd61f[_0x1e65('0x1c')]['attributes']||null:null,'include':_0x1dd61f[_0x1e65('0x1c')]?_0x1dd61f[_0x1e65('0x1c')][_0x1e65('0x20')]?_[_0x1e65('0x23')](_0x1dd61f[_0x1e65('0x1c')][_0x1e65('0x20')],function(_0x330337){return{'model':db[_0x330337[_0x1e65('0x21')]],'as':_0x330337['as'],'attributes':_0x330337[_0x1e65('0x22')],'include':_0x330337[_0x1e65('0x20')]?_[_0x1e65('0x23')](_0x330337[_0x1e65('0x20')],function(_0x513154){return{'model':db[_0x513154['model']],'as':_0x513154['as'],'attributes':_0x513154[_0x1e65('0x22')],'include':_0x513154[_0x1e65('0x20')]?_['map'](_0x513154[_0x1e65('0x20')],function(_0x36751a){return{'model':db[_0x36751a['model']],'as':_0x36751a['as'],'attributes':_0x36751a[_0x1e65('0x22')]};}):[]};}):[]};}):[]:[]})[_0x1e65('0xf')](function(_0x42af5c){logger[_0x1e65('0x10')](_0x1e65('0x25'),_0x1dd61f);logger[_0x1e65('0x12')](_0x1e65('0x25'),_0x1dd61f,JSON['stringify'](_0x42af5c));_0x375bc0(_0x42af5c);})[_0x1e65('0x19')](function(_0x40c9b1){logger['error']('ShowVoiceQueue',_0x40c9b1['message'],_0x1dd61f);_0x4c489e(_0x1ca3ea[_0x1e65('0x16')](0x1f4,_0x40c9b1[_0x1e65('0x17')]));});});};
\ No newline at end of file
index cd2975a..317dbb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed3f=['update','emit','removeListener','length','voiceQueue:','./voiceQueue.events','save','remove'];(function(_0x4366ab,_0x441f15){var _0x3e5df3=function(_0x180f93){while(--_0x180f93){_0x4366ab['push'](_0x4366ab['shift']());}};_0x3e5df3(++_0x441f15);}(_0xed3f,0xfd));var _0xfed3=function(_0xe1269d,_0x57b7c3){_0xe1269d=_0xe1269d-0x0;var _0x261ca1=_0xed3f[_0xe1269d];return _0x261ca1;};'use strict';var VoiceQueueEvents=require(_0xfed3('0x0'));var events=[_0xfed3('0x1'),_0xfed3('0x2'),_0xfed3('0x3')];function createListener(_0x221bbf,_0x244d6c){return function(_0x1ce22a){_0x244d6c[_0xfed3('0x4')](_0x221bbf,_0x1ce22a);};}function removeListener(_0x34f76f,_0x278386){return function(){VoiceQueueEvents[_0xfed3('0x5')](_0x34f76f,_0x278386);};}exports['register']=function(_0x12525e){for(var _0x3a16be=0x0,_0x51f62e=events[_0xfed3('0x6')];_0x3a16be<_0x51f62e;_0x3a16be++){var _0x3c0b3a=events[_0x3a16be];var _0x3845ea=createListener(_0xfed3('0x7')+_0x3c0b3a,_0x12525e);VoiceQueueEvents['on'](_0x3c0b3a,_0x3845ea);}};
\ No newline at end of file
+var _0x826e=['save','remove','update','register','length','voiceQueue:','./voiceQueue.events'];(function(_0x4ea325,_0x1b84eb){var _0x4ba599=function(_0x6270dc){while(--_0x6270dc){_0x4ea325['push'](_0x4ea325['shift']());}};_0x4ba599(++_0x1b84eb);}(_0x826e,0x12c));var _0xe826=function(_0xd1ffe4,_0x3d0984){_0xd1ffe4=_0xd1ffe4-0x0;var _0x5b2fc5=_0x826e[_0xd1ffe4];return _0x5b2fc5;};'use strict';var VoiceQueueEvents=require(_0xe826('0x0'));var events=[_0xe826('0x1'),_0xe826('0x2'),_0xe826('0x3')];function createListener(_0x408cd3,_0x3714e0){return function(_0x3fa820){_0x3714e0['emit'](_0x408cd3,_0x3fa820);};}function removeListener(_0x1d1b23,_0x4f8a35){return function(){VoiceQueueEvents['removeListener'](_0x1d1b23,_0x4f8a35);};}exports[_0xe826('0x4')]=function(_0x16e2eb){for(var _0x1f3b75=0x0,_0x3337f6=events[_0xe826('0x5')];_0x1f3b75<_0x3337f6;_0x1f3b75++){var _0x5ecd26=events[_0x1f3b75];var _0x192660=createListener(_0xe826('0x6')+_0x5ecd26,_0x16e2eb);VoiceQueueEvents['on'](_0x5ecd26,_0x192660);}};
\ No newline at end of file
index 8903d2c..b75dc80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3929=['isAuthenticated','index','/describe','describe','/index','getVoiceQueuesReport','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceQueueReport.controller','get'];(function(_0x2fce1c,_0x432fa3){var _0x31b951=function(_0x24ba72){while(--_0x24ba72){_0x2fce1c['push'](_0x2fce1c['shift']());}};_0x31b951(++_0x432fa3);}(_0x3929,0x147));var _0x9392=function(_0x4ba17b,_0x55f724){_0x4ba17b=_0x4ba17b-0x0;var _0x1f0669=_0x3929[_0x4ba17b];return _0x1f0669;};'use strict';var multer=require(_0x9392('0x0'));var util=require(_0x9392('0x1'));var path=require(_0x9392('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x9392('0x3')]();var fs_extra=require(_0x9392('0x4'));var auth=require(_0x9392('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x9392('0x6'));var controller=require(_0x9392('0x7'));router[_0x9392('0x8')]('/',auth[_0x9392('0x9')](),controller[_0x9392('0xa')]);router['get'](_0x9392('0xb'),auth[_0x9392('0x9')](),controller[_0x9392('0xc')]);router[_0x9392('0x8')](_0x9392('0xd'),auth[_0x9392('0x9')](),controller[_0x9392('0xe')]);router['get'](_0x9392('0xf'),auth[_0x9392('0x9')](),controller[_0x9392('0x10')]);router[_0x9392('0x11')]('/',auth[_0x9392('0x9')](),controller[_0x9392('0x12')]);router[_0x9392('0x13')](_0x9392('0xf'),auth[_0x9392('0x9')](),controller[_0x9392('0x14')]);router[_0x9392('0x15')]('/:id',auth['isAuthenticated'](),controller[_0x9392('0x16')]);module[_0x9392('0x17')]=router;
\ No newline at end of file
+var _0xdde3=['put','delete','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./voiceQueueReport.controller','isAuthenticated','index','get','/describe','describe','getVoiceQueuesReport','/:id','post','create'];(function(_0x491f94,_0x5f4517){var _0x316699=function(_0x227f60){while(--_0x227f60){_0x491f94['push'](_0x491f94['shift']());}};_0x316699(++_0x5f4517);}(_0xdde3,0x17d));var _0x3dde=function(_0x3d559e,_0x36a6c5){_0x3d559e=_0x3d559e-0x0;var _0x46ffdb=_0xdde3[_0x3d559e];return _0x46ffdb;};'use strict';var multer=require(_0x3dde('0x0'));var util=require(_0x3dde('0x1'));var path=require(_0x3dde('0x2'));var timeout=require(_0x3dde('0x3'));var express=require(_0x3dde('0x4'));var router=express[_0x3dde('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x3dde('0x6'));var interaction=require(_0x3dde('0x7'));var config=require('../../config/environment');var controller=require(_0x3dde('0x8'));router['get']('/',auth[_0x3dde('0x9')](),controller[_0x3dde('0xa')]);router[_0x3dde('0xb')](_0x3dde('0xc'),auth[_0x3dde('0x9')](),controller[_0x3dde('0xd')]);router[_0x3dde('0xb')]('/index',auth[_0x3dde('0x9')](),controller[_0x3dde('0xe')]);router[_0x3dde('0xb')](_0x3dde('0xf'),auth[_0x3dde('0x9')](),controller['show']);router[_0x3dde('0x10')]('/',auth[_0x3dde('0x9')](),controller[_0x3dde('0x11')]);router[_0x3dde('0x12')](_0x3dde('0xf'),auth[_0x3dde('0x9')](),controller['update']);router[_0x3dde('0x13')]('/:id',auth[_0x3dde('0x9')](),controller['destroy']);module[_0x3dde('0x14')]=router;
\ No newline at end of file
index 668aacd..4f03470 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff20=['diff','seconds','setDataValue','holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','sequelize','moment','STRING','DATE','queuecallerjoinAt','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xff20,0x157));var _0x0ff2=function(_0x26fc81,_0x57fc19){_0x26fc81=_0x26fc81-0x0;var _0x9feece=_0xff20[_0x26fc81];return _0x9feece;};'use strict';var Sequelize=require(_0x0ff2('0x0'));var moment=require(_0x0ff2('0x1'));module['exports']={'type':{'type':Sequelize[_0x0ff2('0x2')]},'uniqueid':{'type':Sequelize[_0x0ff2('0x2')]},'calleridnum':{'type':Sequelize[_0x0ff2('0x2')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize[_0x0ff2('0x3')]},'queuecallerleaveAt':{'type':Sequelize['DATE'],'set':function(_0x1e3bda){var _0x1e31ff=moment(_0x1e3bda);var _0x239382=moment(this['getDataValue'](_0x0ff2('0x4')))[_0x0ff2('0x5')](_0x0ff2('0x6'));var _0x26a74e=_0x1e31ff[_0x0ff2('0x7')](_0x239382,_0x0ff2('0x8'));this[_0x0ff2('0x9')]('queuecallerleaveAt',_0x1e3bda);this[_0x0ff2('0x9')](_0x0ff2('0xa'),_0x26a74e||null);}},'position':{'type':Sequelize[_0x0ff2('0xb')]},'count':{'type':Sequelize[_0x0ff2('0xb')]},'queuecallerabandon':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize['DATE']},'queuecallercomplete':{'type':Sequelize[_0x0ff2('0xc')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize['DATE']},'queuecallerexit':{'type':Sequelize[_0x0ff2('0xc')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize['DATE']},'queuecallerexitreason':{'type':Sequelize[_0x0ff2('0x2')],'comment':_0x0ff2('0xd')},'originalposition':{'type':Sequelize[_0x0ff2('0xb')]},'channel':{'type':Sequelize[_0x0ff2('0x2')]},'connectedlinenum':{'type':Sequelize[_0x0ff2('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x0ff2('0x2')]},'exten':{'type':Sequelize[_0x0ff2('0x2')]},'priority':{'type':Sequelize[_0x0ff2('0x2')]},'holdtime':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0x0ff2('0xb')],'defaultValue':0x0},'assigned':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x0ff2('0x2')]},'transfer':{'type':Sequelize[_0x0ff2('0xc')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x0ff2('0x2')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize[_0x0ff2('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x0ff2('0x2')]},'thirdDisposition':{'type':Sequelize[_0x0ff2('0x2')]},'queuecallerenterreason':{'type':Sequelize[_0x0ff2('0xb')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x62f3=['COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment','exports','STRING','DATE','getDataValue','format','YYYY-MM-DD\x20HH:mm:ss','diff','seconds','setDataValue','holdtime','INTEGER','BOOLEAN'];(function(_0xb95e68,_0x46fea5){var _0x274df0=function(_0x390857){while(--_0x390857){_0xb95e68['push'](_0xb95e68['shift']());}};_0x274df0(++_0x46fea5);}(_0x62f3,0x192));var _0x362f=function(_0x6b09ba,_0x5640eb){_0x6b09ba=_0x6b09ba-0x0;var _0x5b0b08=_0x62f3[_0x6b09ba];return _0x5b0b08;};'use strict';var Sequelize=require(_0x362f('0x0'));var moment=require(_0x362f('0x1'));module[_0x362f('0x2')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x362f('0x3')]},'calleridnum':{'type':Sequelize[_0x362f('0x3')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x362f('0x3')]},'queuecallerjoinAt':{'type':Sequelize['DATE']},'queuecallerleaveAt':{'type':Sequelize[_0x362f('0x4')],'set':function(_0x1c8d9f){var _0x5aa82d=moment(_0x1c8d9f);var _0x1f0cb6=moment(this[_0x362f('0x5')]('queuecallerjoinAt'))[_0x362f('0x6')](_0x362f('0x7'));var _0x5b353f=_0x5aa82d[_0x362f('0x8')](_0x1f0cb6,_0x362f('0x9'));this[_0x362f('0xa')]('queuecallerleaveAt',_0x1c8d9f);this[_0x362f('0xa')](_0x362f('0xb'),_0x5b353f||null);}},'position':{'type':Sequelize[_0x362f('0xc')]},'count':{'type':Sequelize[_0x362f('0xc')]},'queuecallerabandon':{'type':Sequelize[_0x362f('0xd')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize['DATE']},'queuecallercomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x362f('0x4')]},'queuecallerexit':{'type':Sequelize[_0x362f('0xd')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x362f('0x4')]},'queuecallerexitreason':{'type':Sequelize[_0x362f('0x3')],'comment':_0x362f('0xe')},'originalposition':{'type':Sequelize[_0x362f('0xc')]},'channel':{'type':Sequelize[_0x362f('0x3')]},'connectedlinenum':{'type':Sequelize[_0x362f('0x3')]},'connectedlinename':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x362f('0x3')]},'context':{'type':Sequelize[_0x362f('0x3')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize['STRING']},'holdtime':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0x362f('0xc')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x362f('0xd')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x362f('0x3')],'comment':_0x362f('0xf')},'transferexten':{'type':Sequelize[_0x362f('0x3')]},'transferuniqueid':{'type':Sequelize[_0x362f('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x362f('0x3')]},'thirdDisposition':{'type':Sequelize[_0x362f('0x3')]},'queuecallerenterreason':{'type':Sequelize[_0x362f('0xc')],'defaultValue':0x0}};
\ No newline at end of file
index a0b3613..530086f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8dc=['update','destroy','describe','getVoiceQueuesReport','eml-format','rimraf','fast-json-patch','request-promise','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./voiceQueueReport.socket','register','sendStatus','status','json','undefined','limit','count','set','Content-Range','apply','reject','save','then','end','error','stack','name','index','type','key','model','query','keys','filters','fields','length','attributes','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','merge','map','VIRTUAL','options','VoiceQueueReport','includeAll','include','findAll','rows','show','params','intersection','find','catch','create','body'];(function(_0x28d18d,_0x55896b){var _0x470640=function(_0x57e78b){while(--_0x57e78b){_0x28d18d['push'](_0x28d18d['shift']());}};_0x470640(++_0x55896b);}(_0xd8dc,0xfa));var _0xcd8d=function(_0x5e43d3,_0x4ac566){_0x5e43d3=_0x5e43d3-0x0;var _0x374f2e=_0xd8dc[_0x5e43d3];return _0x374f2e;};'use strict';var emlformat=require(_0xcd8d('0x0'));var rimraf=require(_0xcd8d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xcd8d('0x2'));var rp=require(_0xcd8d('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xcd8d('0x4'));var util=require('util');var path=require(_0xcd8d('0x5'));var sox=require(_0xcd8d('0x6'));var csv=require(_0xcd8d('0x7'));var ejs=require(_0xcd8d('0x8'));var fs=require('fs');var fs_extra=require(_0xcd8d('0x9'));var _=require(_0xcd8d('0xa'));var squel=require('squel');var crypto=require(_0xcd8d('0xb'));var jsforce=require(_0xcd8d('0xc'));var deskjs=require(_0xcd8d('0xd'));var toCsv=require(_0xcd8d('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xcd8d('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xcd8d('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xcd8d('0x10'));var logger=require(_0xcd8d('0x11'))(_0xcd8d('0x12'));var utils=require(_0xcd8d('0x13'));var config=require(_0xcd8d('0x14'));var licenseUtil=require(_0xcd8d('0x15'));var db=require(_0xcd8d('0x16'))['db'];config[_0xcd8d('0x17')]=_[_0xcd8d('0x18')](config[_0xcd8d('0x17')],{'host':_0xcd8d('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xcd8d('0x17')]));require(_0xcd8d('0x1a'))[_0xcd8d('0x1b')](socket);function respondWithStatusCode(_0x51236f,_0x5bf652){_0x5bf652=_0x5bf652||0xcc;return function(_0x506bc6){if(_0x506bc6){return _0x51236f[_0xcd8d('0x1c')](_0x5bf652);}return _0x51236f[_0xcd8d('0x1d')](_0x5bf652)['end']();};}function respondWithResult(_0x5c8b2d,_0x23ff0a){_0x23ff0a=_0x23ff0a||0xc8;return function(_0xd79bcf){if(_0xd79bcf){return _0x5c8b2d['status'](_0x23ff0a)[_0xcd8d('0x1e')](_0xd79bcf);}};}function respondWithFilteredResult(_0x593527,_0x22ea5e){return function(_0x614381){if(_0x614381){var _0x56908d=typeof _0x22ea5e['offset']===_0xcd8d('0x1f')&&typeof _0x22ea5e[_0xcd8d('0x20')]===_0xcd8d('0x1f');var _0x2e2b49=_0x614381['count'];var _0x4ee674=_0x56908d?0x0:_0x22ea5e['offset'];var _0xf9e4a5=_0x56908d?_0x614381[_0xcd8d('0x21')]:_0x22ea5e['offset']+_0x22ea5e[_0xcd8d('0x20')];var _0x1effa4;if(_0xf9e4a5>=_0x2e2b49){_0xf9e4a5=_0x2e2b49;_0x1effa4=0xc8;}else{_0x1effa4=0xce;}_0x593527[_0xcd8d('0x1d')](_0x1effa4);return _0x593527[_0xcd8d('0x22')](_0xcd8d('0x23'),_0x4ee674+'-'+_0xf9e4a5+'/'+_0x2e2b49)['json'](_0x614381);}return null;};}function patchUpdates(_0x27a5ea){return function(_0xad6b20){try{jsonpatch[_0xcd8d('0x24')](_0xad6b20,_0x27a5ea,!![]);}catch(_0xfc1121){return BPromise[_0xcd8d('0x25')](_0xfc1121);}return _0xad6b20[_0xcd8d('0x26')]();};}function saveUpdates(_0x4fcd58,_0x411a1b){return function(_0x147b9d){if(_0x147b9d){return _0x147b9d['update'](_0x4fcd58)[_0xcd8d('0x27')](function(_0x25c76a){return _0x25c76a;});}return null;};}function removeEntity(_0x543678,_0x3ce11e){return function(_0x36cf67){if(_0x36cf67){return _0x36cf67['destroy']()[_0xcd8d('0x27')](function(){_0x543678['status'](0xcc)[_0xcd8d('0x28')]();});}};}function handleEntityNotFound(_0x2b192b,_0x5a90d7){return function(_0x2e60be){if(!_0x2e60be){_0x2b192b[_0xcd8d('0x1c')](0x194);}return _0x2e60be;};}function handleError(_0x53b7a5,_0x1b21d5){_0x1b21d5=_0x1b21d5||0x1f4;return function(_0x5a6f68){logger[_0xcd8d('0x29')](_0x5a6f68[_0xcd8d('0x2a')]);if(_0x5a6f68['name']){delete _0x5a6f68[_0xcd8d('0x2b')];}_0x53b7a5['status'](_0x1b21d5)['send'](_0x5a6f68);};}exports[_0xcd8d('0x2c')]=function(_0x3afa93,_0x1a5f07){var _0x3b7db3={},_0x4eb478={},_0x24c22d={'count':0x0,'rows':[]};var _0x3b1428=_['map'](db['VoiceQueueReport']['rawAttributes'],function(_0x23a537){return{'name':_0x23a537['fieldName'],'type':_0x23a537[_0xcd8d('0x2d')][_0xcd8d('0x2e')]};});_0x4eb478[_0xcd8d('0x2f')]=_['map'](_0x3b1428,_0xcd8d('0x2b'));_0x4eb478[_0xcd8d('0x30')]=_[_0xcd8d('0x31')](_0x3afa93[_0xcd8d('0x30')]);_0x4eb478[_0xcd8d('0x32')]=_['intersection'](_0x4eb478[_0xcd8d('0x2f')],_0x4eb478[_0xcd8d('0x30')]);_0x3b7db3['attributes']=_['intersection'](_0x4eb478[_0xcd8d('0x2f')],qs[_0xcd8d('0x33')](_0x3afa93['query'][_0xcd8d('0x33')]));_0x3b7db3['attributes']=_0x3b7db3['attributes'][_0xcd8d('0x34')]?_0x3b7db3[_0xcd8d('0x35')]:_0x4eb478[_0xcd8d('0x2f')];if(!_0x3afa93['query'][_0xcd8d('0x36')](_0xcd8d('0x37'))){_0x3b7db3[_0xcd8d('0x20')]=qs[_0xcd8d('0x20')](_0x3afa93['query'][_0xcd8d('0x20')]);_0x3b7db3[_0xcd8d('0x38')]=qs['offset'](_0x3afa93[_0xcd8d('0x30')][_0xcd8d('0x38')]);}_0x3b7db3[_0xcd8d('0x39')]=qs[_0xcd8d('0x3a')](_0x3afa93[_0xcd8d('0x30')][_0xcd8d('0x3a')]);_0x3b7db3[_0xcd8d('0x3b')]=qs[_0xcd8d('0x32')](_[_0xcd8d('0x3c')](_0x3afa93[_0xcd8d('0x30')],_0x4eb478[_0xcd8d('0x32')]),_0x3b1428);if(_0x3afa93[_0xcd8d('0x30')][_0xcd8d('0x3d')]){_0x3b7db3[_0xcd8d('0x3b')]=_[_0xcd8d('0x3e')](_0x3b7db3[_0xcd8d('0x3b')],{'$or':_[_0xcd8d('0x3f')](_0x3b1428,function(_0x2a75ee){if(_0x2a75ee[_0xcd8d('0x2d')]!==_0xcd8d('0x40')){var _0x1068e9={};_0x1068e9[_0x2a75ee['name']]={'$like':'%'+_0x3afa93[_0xcd8d('0x30')][_0xcd8d('0x3d')]+'%'};return _0x1068e9;}})});}_0x3b7db3=_['merge']({},_0x3b7db3,_0x3afa93[_0xcd8d('0x41')]);var _0x2b5e80={'where':_0x3b7db3['where']};return db[_0xcd8d('0x42')][_0xcd8d('0x21')](_0x2b5e80)['then'](function(_0xba09a){_0x24c22d[_0xcd8d('0x21')]=_0xba09a;if(_0x3afa93[_0xcd8d('0x30')][_0xcd8d('0x43')]){_0x3b7db3[_0xcd8d('0x44')]=[{'all':!![]}];}return db[_0xcd8d('0x42')][_0xcd8d('0x45')](_0x3b7db3);})['then'](function(_0x120682){_0x24c22d[_0xcd8d('0x46')]=_0x120682;return _0x24c22d;})[_0xcd8d('0x27')](respondWithFilteredResult(_0x1a5f07,_0x3b7db3))['catch'](handleError(_0x1a5f07,null));};exports[_0xcd8d('0x47')]=function(_0x53fb35,_0x1dbc45){var _0x4d79d9={'raw':![],'where':{'id':_0x53fb35[_0xcd8d('0x48')]['id']}},_0x408718={};_0x408718[_0xcd8d('0x2f')]=_[_0xcd8d('0x31')](db[_0xcd8d('0x42')]['rawAttributes']);_0x408718[_0xcd8d('0x30')]=_[_0xcd8d('0x31')](_0x53fb35['query']);_0x408718[_0xcd8d('0x32')]=_[_0xcd8d('0x49')](_0x408718[_0xcd8d('0x2f')],_0x408718[_0xcd8d('0x30')]);_0x4d79d9[_0xcd8d('0x35')]=_[_0xcd8d('0x49')](_0x408718[_0xcd8d('0x2f')],qs['fields'](_0x53fb35['query'][_0xcd8d('0x33')]));_0x4d79d9[_0xcd8d('0x35')]=_0x4d79d9[_0xcd8d('0x35')][_0xcd8d('0x34')]?_0x4d79d9['attributes']:_0x408718[_0xcd8d('0x2f')];if(_0x53fb35[_0xcd8d('0x30')][_0xcd8d('0x43')]){_0x4d79d9['include']=[{'all':!![]}];}_0x4d79d9=_[_0xcd8d('0x3e')]({},_0x4d79d9,_0x53fb35[_0xcd8d('0x41')]);return db[_0xcd8d('0x42')][_0xcd8d('0x4a')](_0x4d79d9)[_0xcd8d('0x27')](handleEntityNotFound(_0x1dbc45,null))[_0xcd8d('0x27')](respondWithResult(_0x1dbc45,null))[_0xcd8d('0x4b')](handleError(_0x1dbc45,null));};exports['create']=function(_0x45a838,_0x4a38e5){return db[_0xcd8d('0x42')][_0xcd8d('0x4c')](_0x45a838[_0xcd8d('0x4d')],{})[_0xcd8d('0x27')](respondWithResult(_0x4a38e5,0xc9))[_0xcd8d('0x4b')](handleError(_0x4a38e5,null));};exports[_0xcd8d('0x4e')]=function(_0x5e9100,_0x1b8183){if(_0x5e9100[_0xcd8d('0x4d')]['id']){delete _0x5e9100[_0xcd8d('0x4d')]['id'];}return db[_0xcd8d('0x42')][_0xcd8d('0x4a')]({'where':{'id':_0x5e9100[_0xcd8d('0x48')]['id']}})[_0xcd8d('0x27')](handleEntityNotFound(_0x1b8183,null))[_0xcd8d('0x27')](saveUpdates(_0x5e9100['body'],null))[_0xcd8d('0x27')](respondWithResult(_0x1b8183,null))[_0xcd8d('0x4b')](handleError(_0x1b8183,null));};exports[_0xcd8d('0x4f')]=function(_0x147ac8,_0x19e908){return db[_0xcd8d('0x42')][_0xcd8d('0x4a')]({'where':{'id':_0x147ac8[_0xcd8d('0x48')]['id']}})[_0xcd8d('0x27')](handleEntityNotFound(_0x19e908,null))[_0xcd8d('0x27')](removeEntity(_0x19e908,null))[_0xcd8d('0x4b')](handleError(_0x19e908,null));};exports['describe']=function(_0x3e4d3c,_0x3762a2){return db[_0xcd8d('0x42')][_0xcd8d('0x50')]()[_0xcd8d('0x27')](respondWithResult(_0x3762a2,null))[_0xcd8d('0x4b')](handleError(_0x3762a2,null));};exports[_0xcd8d('0x51')]=function(_0xc4ba07,_0x2a83d0){var _0x5987c9={},_0x1a43a9={},_0x48fbc4={'count':0x0,'rows':[]};_0x1a43a9[_0xcd8d('0x2f')]=_[_0xcd8d('0x31')](db['VoiceQueueReport']['rawAttributes']);_0x1a43a9[_0xcd8d('0x30')]=_[_0xcd8d('0x31')](_0xc4ba07[_0xcd8d('0x30')]);_0x1a43a9[_0xcd8d('0x32')]=_[_0xcd8d('0x49')](_0x1a43a9[_0xcd8d('0x2f')],_0x1a43a9['query']);_0x5987c9[_0xcd8d('0x35')]=_[_0xcd8d('0x49')](_0x1a43a9['model'],qs[_0xcd8d('0x33')](_0xc4ba07[_0xcd8d('0x30')][_0xcd8d('0x33')]));_0x5987c9[_0xcd8d('0x35')]=_0x5987c9['attributes'][_0xcd8d('0x34')]?_0x5987c9[_0xcd8d('0x35')]:_0x1a43a9[_0xcd8d('0x2f')];if(!_0xc4ba07['query']['hasOwnProperty'](_0xcd8d('0x37'))){_0x5987c9[_0xcd8d('0x20')]=qs['limit'](_0xc4ba07['query']['limit']);_0x5987c9['offset']=qs[_0xcd8d('0x38')](_0xc4ba07[_0xcd8d('0x30')]['offset']);}_0x5987c9[_0xcd8d('0x39')]=qs[_0xcd8d('0x3a')](_0xc4ba07[_0xcd8d('0x30')][_0xcd8d('0x3a')]);_0x5987c9['where']=qs['filters'](_[_0xcd8d('0x3c')](_0xc4ba07[_0xcd8d('0x30')],_0x1a43a9['filters']));if(_0xc4ba07[_0xcd8d('0x30')][_0xcd8d('0x3d')]){_0x5987c9[_0xcd8d('0x3b')]=_[_0xcd8d('0x3e')](_0x5987c9[_0xcd8d('0x3b')],{'$or':_[_0xcd8d('0x3f')](_0x5987c9['attributes'],function(_0x5683af){var _0x38f501={};_0x38f501[_0x5683af]={'$like':'%'+_0xc4ba07[_0xcd8d('0x30')]['filter']+'%'};return _0x38f501;})});}_0x5987c9=_[_0xcd8d('0x3e')]({},_0x5987c9,_0xc4ba07['options']);var _0x469fb6={'where':_0x5987c9[_0xcd8d('0x3b')]};return db['VoiceQueueReport'][_0xcd8d('0x21')](_0x469fb6)[_0xcd8d('0x27')](function(_0x2f9b11){_0x48fbc4[_0xcd8d('0x21')]=_0x2f9b11;if(_0xc4ba07[_0xcd8d('0x30')][_0xcd8d('0x43')]){_0x5987c9[_0xcd8d('0x44')]=[{'all':!![]}];}return db[_0xcd8d('0x42')]['findAll'](_0x5987c9);})[_0xcd8d('0x27')](function(_0x2f7f3f){_0x48fbc4[_0xcd8d('0x46')]=_0x2f7f3f;return _0x48fbc4;})[_0xcd8d('0x27')](respondWithFilteredResult(_0x2a83d0,_0x5987c9,_0xcd8d('0x51')))[_0xcd8d('0x4b')](handleError(_0x2a83d0,null,_0xcd8d('0x51')));};
\ No newline at end of file
+var _0x18db=['includeAll','include','findAll','catch','show','find','create','body','params','describe','getVoiceQueuesReport','order','where','options','rows','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','reject','save','update','destroy','then','name','send','map','VoiceQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','pick','filter','VIRTUAL','merge'];(function(_0x298349,_0x347f06){var _0x5e564e=function(_0xbf285c){while(--_0xbf285c){_0x298349['push'](_0x298349['shift']());}};_0x5e564e(++_0x347f06);}(_0x18db,0x1ae));var _0xb18d=function(_0x258d7d,_0x3ed297){_0x258d7d=_0x258d7d-0x0;var _0x56af88=_0x18db[_0x258d7d];return _0x56af88;};'use strict';var emlformat=require(_0xb18d('0x0'));var rimraf=require(_0xb18d('0x1'));var zipdir=require(_0xb18d('0x2'));var jsonpatch=require(_0xb18d('0x3'));var rp=require(_0xb18d('0x4'));var moment=require('moment');var BPromise=require(_0xb18d('0x5'));var Mustache=require(_0xb18d('0x6'));var util=require(_0xb18d('0x7'));var path=require(_0xb18d('0x8'));var sox=require(_0xb18d('0x9'));var csv=require(_0xb18d('0xa'));var ejs=require(_0xb18d('0xb'));var fs=require('fs');var fs_extra=require(_0xb18d('0xc'));var _=require(_0xb18d('0xd'));var squel=require(_0xb18d('0xe'));var crypto=require(_0xb18d('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xb18d('0xa'));var querystring=require(_0xb18d('0x10'));var Papa=require(_0xb18d('0x11'));var Redis=require('ioredis');var authService=require(_0xb18d('0x12'));var qs=require(_0xb18d('0x13'));var as=require(_0xb18d('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb18d('0x15'));var utils=require('../../config/utils');var config=require(_0xb18d('0x16'));var licenseUtil=require(_0xb18d('0x17'));var db=require(_0xb18d('0x18'))['db'];config['redis']=_[_0xb18d('0x19')](config['redis'],{'host':_0xb18d('0x1a'),'port':0x18eb});var socket=require(_0xb18d('0x1b'))(new Redis(config['redis']));require(_0xb18d('0x1c'))[_0xb18d('0x1d')](socket);function respondWithStatusCode(_0x5c60fc,_0x53e196){_0x53e196=_0x53e196||0xcc;return function(_0x396c7f){if(_0x396c7f){return _0x5c60fc[_0xb18d('0x1e')](_0x53e196);}return _0x5c60fc[_0xb18d('0x1f')](_0x53e196)[_0xb18d('0x20')]();};}function respondWithResult(_0x455397,_0x26e2c0){_0x26e2c0=_0x26e2c0||0xc8;return function(_0x1f703d){if(_0x1f703d){return _0x455397['status'](_0x26e2c0)[_0xb18d('0x21')](_0x1f703d);}};}function respondWithFilteredResult(_0x2f87a4,_0x2f6688){return function(_0x12712e){if(_0x12712e){var _0x45400c=typeof _0x2f6688['offset']===_0xb18d('0x22')&&typeof _0x2f6688[_0xb18d('0x23')]===_0xb18d('0x22');var _0x49e8b5=_0x12712e[_0xb18d('0x24')];var _0x46e74f=_0x45400c?0x0:_0x2f6688[_0xb18d('0x25')];var _0x4a6640=_0x45400c?_0x12712e[_0xb18d('0x24')]:_0x2f6688['offset']+_0x2f6688[_0xb18d('0x23')];var _0x2b0125;if(_0x4a6640>=_0x49e8b5){_0x4a6640=_0x49e8b5;_0x2b0125=0xc8;}else{_0x2b0125=0xce;}_0x2f87a4[_0xb18d('0x1f')](_0x2b0125);return _0x2f87a4[_0xb18d('0x26')]('Content-Range',_0x46e74f+'-'+_0x4a6640+'/'+_0x49e8b5)['json'](_0x12712e);}return null;};}function patchUpdates(_0x3d67d7){return function(_0x37c839){try{jsonpatch[_0xb18d('0x27')](_0x37c839,_0x3d67d7,!![]);}catch(_0x564772){return BPromise[_0xb18d('0x28')](_0x564772);}return _0x37c839[_0xb18d('0x29')]();};}function saveUpdates(_0x25ab48,_0x421b9b){return function(_0x69d0a3){if(_0x69d0a3){return _0x69d0a3[_0xb18d('0x2a')](_0x25ab48)['then'](function(_0x11b1ee){return _0x11b1ee;});}return null;};}function removeEntity(_0x485d28,_0x131be3){return function(_0x84ce6e){if(_0x84ce6e){return _0x84ce6e[_0xb18d('0x2b')]()[_0xb18d('0x2c')](function(){_0x485d28[_0xb18d('0x1f')](0xcc)[_0xb18d('0x20')]();});}};}function handleEntityNotFound(_0x36226d,_0x53bba2){return function(_0x994404){if(!_0x994404){_0x36226d[_0xb18d('0x1e')](0x194);}return _0x994404;};}function handleError(_0x4d718e,_0x1a9a0f){_0x1a9a0f=_0x1a9a0f||0x1f4;return function(_0x4eeed7){logger['error'](_0x4eeed7['stack']);if(_0x4eeed7['name']){delete _0x4eeed7[_0xb18d('0x2d')];}_0x4d718e['status'](_0x1a9a0f)[_0xb18d('0x2e')](_0x4eeed7);};}exports['index']=function(_0x20485e,_0x1b12fc){var _0x3b0170={},_0x32c976={},_0x1117b5={'count':0x0,'rows':[]};var _0x36f839=_[_0xb18d('0x2f')](db[_0xb18d('0x30')][_0xb18d('0x31')],function(_0x4e6f5f){return{'name':_0x4e6f5f[_0xb18d('0x32')],'type':_0x4e6f5f[_0xb18d('0x33')][_0xb18d('0x34')]};});_0x32c976[_0xb18d('0x35')]=_[_0xb18d('0x2f')](_0x36f839,'name');_0x32c976[_0xb18d('0x36')]=_[_0xb18d('0x37')](_0x20485e[_0xb18d('0x36')]);_0x32c976[_0xb18d('0x38')]=_[_0xb18d('0x39')](_0x32c976['model'],_0x32c976['query']);_0x3b0170['attributes']=_[_0xb18d('0x39')](_0x32c976[_0xb18d('0x35')],qs[_0xb18d('0x3a')](_0x20485e['query'][_0xb18d('0x3a')]));_0x3b0170[_0xb18d('0x3b')]=_0x3b0170[_0xb18d('0x3b')][_0xb18d('0x3c')]?_0x3b0170[_0xb18d('0x3b')]:_0x32c976[_0xb18d('0x35')];if(!_0x20485e[_0xb18d('0x36')][_0xb18d('0x3d')](_0xb18d('0x3e'))){_0x3b0170['limit']=qs[_0xb18d('0x23')](_0x20485e[_0xb18d('0x36')][_0xb18d('0x23')]);_0x3b0170[_0xb18d('0x25')]=qs[_0xb18d('0x25')](_0x20485e[_0xb18d('0x36')][_0xb18d('0x25')]);}_0x3b0170['order']=qs['sort'](_0x20485e[_0xb18d('0x36')][_0xb18d('0x3f')]);_0x3b0170['where']=qs[_0xb18d('0x38')](_[_0xb18d('0x40')](_0x20485e[_0xb18d('0x36')],_0x32c976[_0xb18d('0x38')]),_0x36f839);if(_0x20485e[_0xb18d('0x36')][_0xb18d('0x41')]){_0x3b0170['where']=_['merge'](_0x3b0170['where'],{'$or':_[_0xb18d('0x2f')](_0x36f839,function(_0x38abd8){if(_0x38abd8[_0xb18d('0x33')]!==_0xb18d('0x42')){var _0xabd07e={};_0xabd07e[_0x38abd8[_0xb18d('0x2d')]]={'$like':'%'+_0x20485e[_0xb18d('0x36')]['filter']+'%'};return _0xabd07e;}})});}_0x3b0170=_[_0xb18d('0x43')]({},_0x3b0170,_0x20485e['options']);var _0x1636e0={'where':_0x3b0170['where']};return db['VoiceQueueReport'][_0xb18d('0x24')](_0x1636e0)[_0xb18d('0x2c')](function(_0x19aca8){_0x1117b5['count']=_0x19aca8;if(_0x20485e[_0xb18d('0x36')][_0xb18d('0x44')]){_0x3b0170[_0xb18d('0x45')]=[{'all':!![]}];}return db['VoiceQueueReport'][_0xb18d('0x46')](_0x3b0170);})['then'](function(_0x4a9f1f){_0x1117b5['rows']=_0x4a9f1f;return _0x1117b5;})[_0xb18d('0x2c')](respondWithFilteredResult(_0x1b12fc,_0x3b0170))[_0xb18d('0x47')](handleError(_0x1b12fc,null));};exports[_0xb18d('0x48')]=function(_0x39c0df,_0x3ad28c){var _0x278eb6={'raw':![],'where':{'id':_0x39c0df['params']['id']}},_0x50be9f={};_0x50be9f[_0xb18d('0x35')]=_['keys'](db[_0xb18d('0x30')][_0xb18d('0x31')]);_0x50be9f['query']=_[_0xb18d('0x37')](_0x39c0df[_0xb18d('0x36')]);_0x50be9f[_0xb18d('0x38')]=_[_0xb18d('0x39')](_0x50be9f[_0xb18d('0x35')],_0x50be9f[_0xb18d('0x36')]);_0x278eb6[_0xb18d('0x3b')]=_['intersection'](_0x50be9f[_0xb18d('0x35')],qs[_0xb18d('0x3a')](_0x39c0df[_0xb18d('0x36')][_0xb18d('0x3a')]));_0x278eb6['attributes']=_0x278eb6['attributes'][_0xb18d('0x3c')]?_0x278eb6[_0xb18d('0x3b')]:_0x50be9f[_0xb18d('0x35')];if(_0x39c0df['query'][_0xb18d('0x44')]){_0x278eb6[_0xb18d('0x45')]=[{'all':!![]}];}_0x278eb6=_['merge']({},_0x278eb6,_0x39c0df['options']);return db[_0xb18d('0x30')][_0xb18d('0x49')](_0x278eb6)[_0xb18d('0x2c')](handleEntityNotFound(_0x3ad28c,null))['then'](respondWithResult(_0x3ad28c,null))[_0xb18d('0x47')](handleError(_0x3ad28c,null));};exports['create']=function(_0x1dc39a,_0xeafa6c){return db[_0xb18d('0x30')][_0xb18d('0x4a')](_0x1dc39a['body'],{})['then'](respondWithResult(_0xeafa6c,0xc9))['catch'](handleError(_0xeafa6c,null));};exports[_0xb18d('0x2a')]=function(_0x1b7a1b,_0x435d01){if(_0x1b7a1b[_0xb18d('0x4b')]['id']){delete _0x1b7a1b[_0xb18d('0x4b')]['id'];}return db[_0xb18d('0x30')][_0xb18d('0x49')]({'where':{'id':_0x1b7a1b[_0xb18d('0x4c')]['id']}})['then'](handleEntityNotFound(_0x435d01,null))['then'](saveUpdates(_0x1b7a1b[_0xb18d('0x4b')],null))[_0xb18d('0x2c')](respondWithResult(_0x435d01,null))[_0xb18d('0x47')](handleError(_0x435d01,null));};exports['destroy']=function(_0x2bafff,_0x3a6f68){return db[_0xb18d('0x30')]['find']({'where':{'id':_0x2bafff[_0xb18d('0x4c')]['id']}})[_0xb18d('0x2c')](handleEntityNotFound(_0x3a6f68,null))['then'](removeEntity(_0x3a6f68,null))['catch'](handleError(_0x3a6f68,null));};exports[_0xb18d('0x4d')]=function(_0x4bbef8,_0xe76e36){return db[_0xb18d('0x30')]['describe']()[_0xb18d('0x2c')](respondWithResult(_0xe76e36,null))[_0xb18d('0x47')](handleError(_0xe76e36,null));};exports[_0xb18d('0x4e')]=function(_0x43521b,_0x45f27a){var _0x184d63={},_0x5e94f8={},_0x269297={'count':0x0,'rows':[]};_0x5e94f8[_0xb18d('0x35')]=_[_0xb18d('0x37')](db['VoiceQueueReport'][_0xb18d('0x31')]);_0x5e94f8['query']=_['keys'](_0x43521b[_0xb18d('0x36')]);_0x5e94f8['filters']=_[_0xb18d('0x39')](_0x5e94f8['model'],_0x5e94f8['query']);_0x184d63[_0xb18d('0x3b')]=_[_0xb18d('0x39')](_0x5e94f8[_0xb18d('0x35')],qs[_0xb18d('0x3a')](_0x43521b[_0xb18d('0x36')]['fields']));_0x184d63[_0xb18d('0x3b')]=_0x184d63[_0xb18d('0x3b')][_0xb18d('0x3c')]?_0x184d63[_0xb18d('0x3b')]:_0x5e94f8[_0xb18d('0x35')];if(!_0x43521b[_0xb18d('0x36')][_0xb18d('0x3d')](_0xb18d('0x3e'))){_0x184d63[_0xb18d('0x23')]=qs[_0xb18d('0x23')](_0x43521b[_0xb18d('0x36')][_0xb18d('0x23')]);_0x184d63[_0xb18d('0x25')]=qs[_0xb18d('0x25')](_0x43521b[_0xb18d('0x36')][_0xb18d('0x25')]);}_0x184d63[_0xb18d('0x4f')]=qs['sort'](_0x43521b[_0xb18d('0x36')][_0xb18d('0x3f')]);_0x184d63['where']=qs['filters'](_['pick'](_0x43521b[_0xb18d('0x36')],_0x5e94f8['filters']));if(_0x43521b[_0xb18d('0x36')][_0xb18d('0x41')]){_0x184d63[_0xb18d('0x50')]=_['merge'](_0x184d63[_0xb18d('0x50')],{'$or':_['map'](_0x184d63['attributes'],function(_0x4c6c6d){var _0x490f3d={};_0x490f3d[_0x4c6c6d]={'$like':'%'+_0x43521b[_0xb18d('0x36')][_0xb18d('0x41')]+'%'};return _0x490f3d;})});}_0x184d63=_[_0xb18d('0x43')]({},_0x184d63,_0x43521b[_0xb18d('0x51')]);var _0x2ec65c={'where':_0x184d63['where']};return db['VoiceQueueReport'][_0xb18d('0x24')](_0x2ec65c)[_0xb18d('0x2c')](function(_0x3643fd){_0x269297[_0xb18d('0x24')]=_0x3643fd;if(_0x43521b['query'][_0xb18d('0x44')]){_0x184d63[_0xb18d('0x45')]=[{'all':!![]}];}return db['VoiceQueueReport']['findAll'](_0x184d63);})[_0xb18d('0x2c')](function(_0x5da7c3){_0x269297[_0xb18d('0x52')]=_0x5da7c3;return _0x269297;})['then'](respondWithFilteredResult(_0x45f27a,_0x184d63,'getVoiceQueuesReport'))['catch'](handleError(_0x45f27a,null,_0xb18d('0x4e')));};
\ No newline at end of file
index 50fac68..d3c9c8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cae=['../../mysqldb','setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports'];(function(_0x1b3c19,_0x45be26){var _0x26aa75=function(_0x1332b2){while(--_0x1332b2){_0x1b3c19['push'](_0x1b3c19['shift']());}};_0x26aa75(++_0x45be26);}(_0x7cae,0xd8));var _0xe7ca=function(_0x41acc7,_0x2c597f){_0x41acc7=_0x41acc7-0x0;var _0x3e30bf=_0x7cae[_0x41acc7];return _0x3e30bf;};'use strict';var EventEmitter=require('events');var VoiceQueueReport=require(_0xe7ca('0x0'))['db']['VoiceQueueReport'];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0xe7ca('0x1')](0x0);var events={'afterCreate':_0xe7ca('0x2'),'afterUpdate':'update','afterDestroy':_0xe7ca('0x3')};function emitEvent(_0x1c4e87){return function(_0x4b1413,_0x3c03be,_0x3a5117){VoiceQueueReportEvents[_0xe7ca('0x4')](_0x1c4e87+':'+_0x4b1413['id'],_0x4b1413);VoiceQueueReportEvents[_0xe7ca('0x4')](_0x1c4e87,_0x4b1413);_0x3a5117(null);};}for(var e in events){if(events[_0xe7ca('0x5')](e)){var event=events[e];VoiceQueueReport[_0xe7ca('0x6')](e,emitEvent(event));}}module[_0xe7ca('0x7')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0x0d78=['../../mysqldb','VoiceQueueReport','save','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0x0d78,0x6d));var _0x80d7=function(_0x4f5c57,_0x1099d3){_0x4f5c57=_0x4f5c57-0x0;var _0x5097b6=_0x0d78[_0x4f5c57];return _0x5097b6;};'use strict';var EventEmitter=require(_0x80d7('0x0'));var VoiceQueueReport=require(_0x80d7('0x1'))['db'][_0x80d7('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x80d7('0x3'),'afterUpdate':_0x80d7('0x4'),'afterDestroy':_0x80d7('0x5')};function emitEvent(_0x542679){return function(_0x2b80fb,_0x466246,_0x185e28){VoiceQueueReportEvents[_0x80d7('0x6')](_0x542679+':'+_0x2b80fb['id'],_0x2b80fb);VoiceQueueReportEvents[_0x80d7('0x6')](_0x542679,_0x2b80fb);_0x185e28(null);};}for(var e in events){if(events[_0x80d7('0x7')](e)){var event=events[e];VoiceQueueReport[_0x80d7('0x8')](e,emitEvent(event));}}module[_0x80d7('0x9')]=VoiceQueueReportEvents;
\ No newline at end of file
index 562eb9a..288bc4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe689=['uniqueid','lodash','bluebird','request-promise','path','rimraf','./voiceQueueReport.attributes','exports','define','VoiceQueueReport','report_queue'];(function(_0x33b70a,_0x24ab1a){var _0x161eae=function(_0x23a10e){while(--_0x23a10e){_0x33b70a['push'](_0x33b70a['shift']());}};_0x161eae(++_0x24ab1a);}(_0xe689,0x177));var _0x9e68=function(_0x22f745,_0x276d8e){_0x22f745=_0x22f745-0x0;var _0x234467=_0xe689[_0x22f745];return _0x234467;};'use strict';var _=require(_0x9e68('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x9e68('0x1'));var rp=require(_0x9e68('0x2'));var fs=require('fs');var path=require(_0x9e68('0x3'));var rimraf=require(_0x9e68('0x4'));var config=require('../../config/environment');var attributes=require(_0x9e68('0x5'));module[_0x9e68('0x6')]=function(_0x27a588,_0x2933ca){return _0x27a588[_0x9e68('0x7')](_0x9e68('0x8'),attributes,{'tableName':_0x9e68('0x9'),'paranoid':![],'indexes':[{'fields':[_0x9e68('0xa')]},{'fields':['calleridnum']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2e7f=['api','moment','request-promise','path','../../config/environment','./voiceQueueReport.attributes','exports','define','lodash','util','../../config/logger'];(function(_0x2ef210,_0x5cb2f0){var _0x69297b=function(_0xc37de8){while(--_0xc37de8){_0x2ef210['push'](_0x2ef210['shift']());}};_0x69297b(++_0x5cb2f0);}(_0x2e7f,0x110));var _0xf2e7=function(_0xc94eb3,_0x45bb5c){_0xc94eb3=_0xc94eb3-0x0;var _0x481cf6=_0x2e7f[_0xc94eb3];return _0x481cf6;};'use strict';var _=require(_0xf2e7('0x0'));var util=require(_0xf2e7('0x1'));var logger=require(_0xf2e7('0x2'))(_0xf2e7('0x3'));var moment=require(_0xf2e7('0x4'));var BPromise=require('bluebird');var rp=require(_0xf2e7('0x5'));var fs=require('fs');var path=require(_0xf2e7('0x6'));var rimraf=require('rimraf');var config=require(_0xf2e7('0x7'));var attributes=require(_0xf2e7('0x8'));module[_0xf2e7('0x9')]=function(_0x395a62,_0xd03e29){return _0x395a62[_0xf2e7('0xa')]('VoiceQueueReport',attributes,{'tableName':'report_queue','paranoid':![],'indexes':[{'fields':['uniqueid']},{'fields':['calleridnum']}],'timestamps':!![]});};
\ No newline at end of file
index 26970c5..423d8c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07dd=['then','info','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetVoiceQueueReport','findAll','options','where','limit','include','map','model','attributes','CreateVoiceQueueReport','create','body','raw','update','UpdateVoiceQueueReport','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','socket.io-emitter','./voiceQueueReport.socket','register','request'];(function(_0x3e91a5,_0x5e3979){var _0x4285cc=function(_0x4d1278){while(--_0x4d1278){_0x3e91a5['push'](_0x3e91a5['shift']());}};_0x4285cc(++_0x5e3979);}(_0x07dd,0x14e));var _0xd07d=function(_0x241af9,_0x18b5f7){_0x241af9=_0x241af9-0x0;var _0x46fe6c=_0x07dd[_0x241af9];return _0x46fe6c;};'use strict';var _=require(_0xd07d('0x0'));var util=require(_0xd07d('0x1'));var moment=require(_0xd07d('0x2'));var BPromise=require(_0xd07d('0x3'));var rs=require(_0xd07d('0x4'));var fs=require('fs');var Redis=require(_0xd07d('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xd07d('0x6'));var logger=require(_0xd07d('0x7'))(_0xd07d('0x8'));var config=require('../../config/environment');var jayson=require(_0xd07d('0x9'));var client=jayson[_0xd07d('0xa')][_0xd07d('0xb')]({'port':0x232a});config['redis']=_['defaults'](config[_0xd07d('0xc')],{'host':_0xd07d('0xd'),'port':0x18eb});var socket=require(_0xd07d('0xe'))(new Redis(config[_0xd07d('0xc')]));require(_0xd07d('0xf'))[_0xd07d('0x10')](socket);function respondWithRpcPromise(_0x558e05,_0x2eacb0,_0x1d905d){return new BPromise(function(_0x58da42,_0x17d38c){return client[_0xd07d('0x11')](_0x558e05,_0x1d905d)[_0xd07d('0x12')](function(_0x5d7bf6){logger[_0xd07d('0x13')](_0xd07d('0x14'),_0x2eacb0,_0xd07d('0x15'));logger[_0xd07d('0x16')]('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x2eacb0,_0xd07d('0x15'),JSON[_0xd07d('0x17')](_0x5d7bf6));if(_0x5d7bf6[_0xd07d('0x18')]){if(_0x5d7bf6[_0xd07d('0x18')][_0xd07d('0x19')]===0x1f4){logger[_0xd07d('0x18')](_0xd07d('0x14'),_0x2eacb0,_0x5d7bf6[_0xd07d('0x18')][_0xd07d('0x1a')]);return _0x17d38c(_0x5d7bf6[_0xd07d('0x18')]['message']);}logger[_0xd07d('0x18')](_0xd07d('0x14'),_0x2eacb0,_0x5d7bf6[_0xd07d('0x18')][_0xd07d('0x1a')]);return _0x58da42(_0x5d7bf6['error'][_0xd07d('0x1a')]);}else{logger['info'](_0xd07d('0x14'),_0x2eacb0,_0xd07d('0x15'));_0x58da42(_0x5d7bf6[_0xd07d('0x1b')]['message']);}})[_0xd07d('0x1c')](function(_0x144da6){logger[_0xd07d('0x18')](_0xd07d('0x14'),_0x2eacb0,_0x144da6);_0x17d38c(_0x144da6);});});}exports[_0xd07d('0x1d')]=function(_0x7a7bb0){var _0x26d084=this;return new Promise(function(_0x271a7f,_0x247160){return db['VoiceQueueReport'][_0xd07d('0x1e')]({'raw':_0x7a7bb0['options']?_0x7a7bb0[_0xd07d('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x7a7bb0[_0xd07d('0x1f')]?_0x7a7bb0[_0xd07d('0x1f')][_0xd07d('0x20')]||null:null,'attributes':_0x7a7bb0[_0xd07d('0x1f')]?_0x7a7bb0[_0xd07d('0x1f')]['attributes']||null:null,'limit':_0x7a7bb0[_0xd07d('0x1f')]?_0x7a7bb0[_0xd07d('0x1f')][_0xd07d('0x21')]||null:null,'include':_0x7a7bb0[_0xd07d('0x1f')]?_0x7a7bb0[_0xd07d('0x1f')][_0xd07d('0x22')]?_[_0xd07d('0x23')](_0x7a7bb0[_0xd07d('0x1f')]['include'],function(_0x39b43a){return{'model':db[_0x39b43a[_0xd07d('0x24')]],'as':_0x39b43a['as'],'attributes':_0x39b43a['attributes'],'include':_0x39b43a[_0xd07d('0x22')]?_[_0xd07d('0x23')](_0x39b43a[_0xd07d('0x22')],function(_0x21d740){return{'model':db[_0x21d740[_0xd07d('0x24')]],'as':_0x21d740['as'],'attributes':_0x21d740[_0xd07d('0x25')],'include':_0x21d740[_0xd07d('0x22')]?_[_0xd07d('0x23')](_0x21d740[_0xd07d('0x22')],function(_0x3c3824){return{'model':db[_0x3c3824[_0xd07d('0x24')]],'as':_0x3c3824['as'],'attributes':_0x3c3824[_0xd07d('0x25')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x127567){logger[_0xd07d('0x13')](_0xd07d('0x1d'),_0x7a7bb0);logger[_0xd07d('0x16')](_0xd07d('0x1d'),_0x7a7bb0,JSON[_0xd07d('0x17')](_0x127567));_0x271a7f(_0x127567);})[_0xd07d('0x1c')](function(_0x20688e){logger[_0xd07d('0x18')](_0xd07d('0x1d'),_0x20688e['message'],_0x7a7bb0);_0x247160(_0x26d084[_0xd07d('0x18')](0x1f4,_0x20688e['message']));});});};exports[_0xd07d('0x26')]=function(_0xdecaa5){var _0x5398c3=this;return new Promise(function(_0x2f3e20,_0x583684){return db['VoiceQueueReport'][_0xd07d('0x27')](_0xdecaa5[_0xd07d('0x28')],{'raw':_0xdecaa5[_0xd07d('0x1f')]?_0xdecaa5[_0xd07d('0x1f')][_0xd07d('0x29')]===undefined?!![]:![]:!![]})[_0xd07d('0x12')](function(_0x431e61){logger[_0xd07d('0x13')](_0xd07d('0x26'),_0xdecaa5);logger[_0xd07d('0x16')](_0xd07d('0x26'),_0xdecaa5,JSON[_0xd07d('0x17')](_0x431e61));_0x2f3e20(_0x431e61);})['catch'](function(_0x4e03a4){logger[_0xd07d('0x18')]('CreateVoiceQueueReport',_0x4e03a4['message'],_0xdecaa5);_0x583684(_0x5398c3[_0xd07d('0x18')](0x1f4,_0x4e03a4[_0xd07d('0x1a')]));});});};exports['UpdateVoiceQueueReport']=function(_0x2427ba){var _0x537973=this;return new Promise(function(_0x5894b2,_0x307c28){return db['VoiceQueueReport'][_0xd07d('0x2a')](_0x2427ba[_0xd07d('0x28')],{'raw':_0x2427ba[_0xd07d('0x1f')]?_0x2427ba[_0xd07d('0x1f')][_0xd07d('0x29')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2427ba[_0xd07d('0x1f')]?_0x2427ba['options'][_0xd07d('0x20')]||null:null,'attributes':_0x2427ba[_0xd07d('0x1f')]?_0x2427ba[_0xd07d('0x1f')][_0xd07d('0x25')]||null:null,'limit':_0x2427ba[_0xd07d('0x1f')]?_0x2427ba['options'][_0xd07d('0x21')]||null:null})[_0xd07d('0x12')](function(_0x34d26d){logger[_0xd07d('0x13')](_0xd07d('0x2b'),_0x2427ba);logger['debug'](_0xd07d('0x2b'),_0x2427ba,JSON[_0xd07d('0x17')](_0x34d26d));_0x5894b2(_0x34d26d);})['catch'](function(_0x21feae){logger[_0xd07d('0x18')](_0xd07d('0x2b'),_0x21feae[_0xd07d('0x1a')],_0x2427ba);_0x307c28(_0x537973[_0xd07d('0x18')](0x1f4,_0x21feae['message']));});});};
\ No newline at end of file
+var _0x1d7d=['defaults','redis','localhost','socket.io-emitter','./voiceQueueReport.socket','register','request','info','request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','VoiceQueueReport,\x20%s,\x20%s','message','result','catch','GetVoiceQueueReport','VoiceQueueReport','findAll','options','raw','where','limit','map','include','model','attributes','then','CreateVoiceQueueReport','body','UpdateVoiceQueueReport','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http'];(function(_0x39aee2,_0x1fb365){var _0x4b31d9=function(_0xdff6c3){while(--_0xdff6c3){_0x39aee2['push'](_0x39aee2['shift']());}};_0x4b31d9(++_0x1fb365);}(_0x1d7d,0xe3));var _0xd1d7=function(_0x4d86a5,_0x52985c){_0x4d86a5=_0x4d86a5-0x0;var _0x59879c=_0x1d7d[_0x4d86a5];return _0x59879c;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd1d7('0x0'));var db=require(_0xd1d7('0x1'))['db'];var utils=require(_0xd1d7('0x2'));var logger=require('../../config/logger')('rpc');var config=require(_0xd1d7('0x3'));var jayson=require(_0xd1d7('0x4'));var client=jayson[_0xd1d7('0x5')][_0xd1d7('0x6')]({'port':0x232a});config['redis']=_[_0xd1d7('0x7')](config[_0xd1d7('0x8')],{'host':_0xd1d7('0x9'),'port':0x18eb});var socket=require(_0xd1d7('0xa'))(new Redis(config['redis']));require(_0xd1d7('0xb'))[_0xd1d7('0xc')](socket);function respondWithRpcPromise(_0x576c59,_0x2f72a7,_0x1a1ff0){return new BPromise(function(_0x2badda,_0xc05dc8){return client[_0xd1d7('0xd')](_0x576c59,_0x1a1ff0)['then'](function(_0x5e7fff){logger[_0xd1d7('0xe')]('VoiceQueueReport,\x20%s,\x20%s',_0x2f72a7,_0xd1d7('0xf'));logger[_0xd1d7('0x10')](_0xd1d7('0x11'),_0x2f72a7,_0xd1d7('0xf'),JSON[_0xd1d7('0x12')](_0x5e7fff));if(_0x5e7fff['error']){if(_0x5e7fff['error']['code']===0x1f4){logger[_0xd1d7('0x13')](_0xd1d7('0x14'),_0x2f72a7,_0x5e7fff[_0xd1d7('0x13')][_0xd1d7('0x15')]);return _0xc05dc8(_0x5e7fff[_0xd1d7('0x13')][_0xd1d7('0x15')]);}logger[_0xd1d7('0x13')](_0xd1d7('0x14'),_0x2f72a7,_0x5e7fff[_0xd1d7('0x13')][_0xd1d7('0x15')]);return _0x2badda(_0x5e7fff[_0xd1d7('0x13')][_0xd1d7('0x15')]);}else{logger[_0xd1d7('0xe')]('VoiceQueueReport,\x20%s,\x20%s',_0x2f72a7,_0xd1d7('0xf'));_0x2badda(_0x5e7fff[_0xd1d7('0x16')][_0xd1d7('0x15')]);}})[_0xd1d7('0x17')](function(_0x184288){logger[_0xd1d7('0x13')](_0xd1d7('0x14'),_0x2f72a7,_0x184288);_0xc05dc8(_0x184288);});});}exports[_0xd1d7('0x18')]=function(_0x512726){var _0x16e7c7=this;return new Promise(function(_0x1aa9df,_0x40b048){return db[_0xd1d7('0x19')][_0xd1d7('0x1a')]({'raw':_0x512726['options']?_0x512726[_0xd1d7('0x1b')][_0xd1d7('0x1c')]===undefined?!![]:![]:!![],'where':_0x512726[_0xd1d7('0x1b')]?_0x512726['options'][_0xd1d7('0x1d')]||null:null,'attributes':_0x512726[_0xd1d7('0x1b')]?_0x512726[_0xd1d7('0x1b')]['attributes']||null:null,'limit':_0x512726['options']?_0x512726['options'][_0xd1d7('0x1e')]||null:null,'include':_0x512726[_0xd1d7('0x1b')]?_0x512726[_0xd1d7('0x1b')]['include']?_[_0xd1d7('0x1f')](_0x512726[_0xd1d7('0x1b')][_0xd1d7('0x20')],function(_0x5d4e76){return{'model':db[_0x5d4e76[_0xd1d7('0x21')]],'as':_0x5d4e76['as'],'attributes':_0x5d4e76[_0xd1d7('0x22')],'include':_0x5d4e76[_0xd1d7('0x20')]?_[_0xd1d7('0x1f')](_0x5d4e76['include'],function(_0x5ca12d){return{'model':db[_0x5ca12d['model']],'as':_0x5ca12d['as'],'attributes':_0x5ca12d[_0xd1d7('0x22')],'include':_0x5ca12d[_0xd1d7('0x20')]?_[_0xd1d7('0x1f')](_0x5ca12d[_0xd1d7('0x20')],function(_0x1885c7){return{'model':db[_0x1885c7['model']],'as':_0x1885c7['as'],'attributes':_0x1885c7[_0xd1d7('0x22')]};}):[]};}):[]};}):[]:[]})[_0xd1d7('0x23')](function(_0x1166a1){logger[_0xd1d7('0xe')](_0xd1d7('0x18'),_0x512726);logger[_0xd1d7('0x10')]('GetVoiceQueueReport',_0x512726,JSON[_0xd1d7('0x12')](_0x1166a1));_0x1aa9df(_0x1166a1);})['catch'](function(_0x474744){logger[_0xd1d7('0x13')]('GetVoiceQueueReport',_0x474744['message'],_0x512726);_0x40b048(_0x16e7c7[_0xd1d7('0x13')](0x1f4,_0x474744['message']));});});};exports[_0xd1d7('0x24')]=function(_0x5efca8){var _0x3cc08e=this;return new Promise(function(_0x5c38b2,_0x3f8622){return db[_0xd1d7('0x19')]['create'](_0x5efca8[_0xd1d7('0x25')],{'raw':_0x5efca8['options']?_0x5efca8['options'][_0xd1d7('0x1c')]===undefined?!![]:![]:!![]})[_0xd1d7('0x23')](function(_0x40a72e){logger[_0xd1d7('0xe')](_0xd1d7('0x24'),_0x5efca8);logger[_0xd1d7('0x10')](_0xd1d7('0x24'),_0x5efca8,JSON[_0xd1d7('0x12')](_0x40a72e));_0x5c38b2(_0x40a72e);})[_0xd1d7('0x17')](function(_0xec1fbc){logger[_0xd1d7('0x13')](_0xd1d7('0x24'),_0xec1fbc[_0xd1d7('0x15')],_0x5efca8);_0x3f8622(_0x3cc08e[_0xd1d7('0x13')](0x1f4,_0xec1fbc[_0xd1d7('0x15')]));});});};exports['UpdateVoiceQueueReport']=function(_0x310aa3){var _0x11cab8=this;return new Promise(function(_0x4eb97d,_0x2b83f7){return db[_0xd1d7('0x19')]['update'](_0x310aa3[_0xd1d7('0x25')],{'raw':_0x310aa3['options']?_0x310aa3[_0xd1d7('0x1b')][_0xd1d7('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x310aa3[_0xd1d7('0x1b')]?_0x310aa3['options'][_0xd1d7('0x1d')]||null:null,'attributes':_0x310aa3[_0xd1d7('0x1b')]?_0x310aa3[_0xd1d7('0x1b')]['attributes']||null:null,'limit':_0x310aa3[_0xd1d7('0x1b')]?_0x310aa3['options'][_0xd1d7('0x1e')]||null:null})[_0xd1d7('0x23')](function(_0x109a45){logger[_0xd1d7('0xe')](_0xd1d7('0x26'),_0x310aa3);logger[_0xd1d7('0x10')](_0xd1d7('0x26'),_0x310aa3,JSON[_0xd1d7('0x12')](_0x109a45));_0x4eb97d(_0x109a45);})['catch'](function(_0x4009c2){logger[_0xd1d7('0x13')](_0xd1d7('0x26'),_0x4009c2['message'],_0x310aa3);_0x2b83f7(_0x11cab8[_0xd1d7('0x13')](0x1f4,_0x4009c2['message']));});});};
\ No newline at end of file
index 5e69f8e..cc2bdea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7351=['remove','update','emit','removeListener','register','length','voiceQueueReport:','./voiceQueueReport.events','save'];(function(_0x4f4437,_0x296676){var _0x58397a=function(_0x1d705f){while(--_0x1d705f){_0x4f4437['push'](_0x4f4437['shift']());}};_0x58397a(++_0x296676);}(_0x7351,0x139));var _0x1735=function(_0x486100,_0x2dbdef){_0x486100=_0x486100-0x0;var _0x5eb54=_0x7351[_0x486100];return _0x5eb54;};'use strict';var VoiceQueueReportEvents=require(_0x1735('0x0'));var events=[_0x1735('0x1'),_0x1735('0x2'),_0x1735('0x3')];function createListener(_0x538acb,_0x51a668){return function(_0x2e1e0d){_0x51a668[_0x1735('0x4')](_0x538acb,_0x2e1e0d);};}function removeListener(_0x182866,_0x10d710){return function(){VoiceQueueReportEvents[_0x1735('0x5')](_0x182866,_0x10d710);};}exports[_0x1735('0x6')]=function(_0x47fa51){for(var _0x3fdcc1=0x0,_0x31d194=events[_0x1735('0x7')];_0x3fdcc1<_0x31d194;_0x3fdcc1++){var _0x13627d=events[_0x3fdcc1];var _0x25bd9f=createListener(_0x1735('0x8')+_0x13627d,_0x47fa51);VoiceQueueReportEvents['on'](_0x13627d,_0x25bd9f);}};
\ No newline at end of file
+var _0x89fe=['remove','update','removeListener','register','voiceQueueReport:','./voiceQueueReport.events','save'];(function(_0x593c62,_0x40c012){var _0xb58d45=function(_0x543f2e){while(--_0x543f2e){_0x593c62['push'](_0x593c62['shift']());}};_0xb58d45(++_0x40c012);}(_0x89fe,0x83));var _0xe89f=function(_0x4e3130,_0x2bb811){_0x4e3130=_0x4e3130-0x0;var _0x399be8=_0x89fe[_0x4e3130];return _0x399be8;};'use strict';var VoiceQueueReportEvents=require(_0xe89f('0x0'));var events=[_0xe89f('0x1'),_0xe89f('0x2'),_0xe89f('0x3')];function createListener(_0x5241a6,_0xebfbaa){return function(_0x4445f1){_0xebfbaa['emit'](_0x5241a6,_0x4445f1);};}function removeListener(_0x3d3aa8,_0x3d8b30){return function(){VoiceQueueReportEvents[_0xe89f('0x4')](_0x3d3aa8,_0x3d8b30);};}exports[_0xe89f('0x5')]=function(_0x2e61cf){for(var _0x2d5020=0x0,_0x24358f=events['length'];_0x2d5020<_0x24358f;_0x2d5020++){var _0x4639f0=events[_0x2d5020];var _0x3e9998=createListener(_0xe89f('0x6')+_0x4639f0,_0x2e61cf);VoiceQueueReportEvents['on'](_0x4639f0,_0x3e9998);}};
\ No newline at end of file
index eb792a9..969bfcb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38c3=['../../components/interaction/service','./voiceQueuesLog.controller','isAuthenticated','index','/:id','show','create','put','update','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x29fc2c,_0x4ff86a){var _0x1adbc8=function(_0x596f87){while(--_0x596f87){_0x29fc2c['push'](_0x29fc2c['shift']());}};_0x1adbc8(++_0x4ff86a);}(_0x38c3,0x13d));var _0x338c=function(_0x526119,_0x5c4b34){_0x526119=_0x526119-0x0;var _0x402da2=_0x38c3[_0x526119];return _0x402da2;};'use strict';var multer=require(_0x338c('0x0'));var util=require(_0x338c('0x1'));var path=require('path');var timeout=require(_0x338c('0x2'));var express=require(_0x338c('0x3'));var router=express[_0x338c('0x4')]();var fs_extra=require(_0x338c('0x5'));var auth=require(_0x338c('0x6'));var interaction=require(_0x338c('0x7'));var config=require('../../config/environment');var controller=require(_0x338c('0x8'));router['get']('/',auth[_0x338c('0x9')](),controller[_0x338c('0xa')]);router['get'](_0x338c('0xb'),auth[_0x338c('0x9')](),controller[_0x338c('0xc')]);router['post']('/',auth[_0x338c('0x9')](),controller[_0x338c('0xd')]);router[_0x338c('0xe')](_0x338c('0xb'),auth[_0x338c('0x9')](),controller[_0x338c('0xf')]);router[_0x338c('0x10')]('/:id',auth[_0x338c('0x9')](),controller[_0x338c('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x6944=['express','../../components/auth/service','../../config/environment','./voiceQueuesLog.controller','get','isAuthenticated','index','/:id','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x1d3e3f,_0x495ec1){var _0x3879fa=function(_0x12e542){while(--_0x12e542){_0x1d3e3f['push'](_0x1d3e3f['shift']());}};_0x3879fa(++_0x495ec1);}(_0x6944,0xe6));var _0x4694=function(_0x3108c8,_0x34259a){_0x3108c8=_0x3108c8-0x0;var _0x405ff3=_0x6944[_0x3108c8];return _0x405ff3;};'use strict';var multer=require(_0x4694('0x0'));var util=require(_0x4694('0x1'));var path=require(_0x4694('0x2'));var timeout=require(_0x4694('0x3'));var express=require(_0x4694('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x4694('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x4694('0x6'));var controller=require(_0x4694('0x7'));router[_0x4694('0x8')]('/',auth[_0x4694('0x9')](),controller[_0x4694('0xa')]);router[_0x4694('0x8')](_0x4694('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x4694('0xc')]('/',auth[_0x4694('0x9')](),controller[_0x4694('0xd')]);router['put'](_0x4694('0xb'),auth[_0x4694('0x9')](),controller[_0x4694('0xe')]);router[_0x4694('0xf')]('/:id',auth[_0x4694('0x9')](),controller[_0x4694('0x10')]);module[_0x4694('0x11')]=router;
\ No newline at end of file
index 6ff75b4..89ed457 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd671=['exports','STRING','DATE','format','sequelize','moment'];(function(_0x134784,_0x1eda42){var _0x3c0553=function(_0x12ff70){while(--_0x12ff70){_0x134784['push'](_0x134784['shift']());}};_0x3c0553(++_0x1eda42);}(_0xd671,0x172));var _0x1d67=function(_0x55ff79,_0x3d45e7){_0x55ff79=_0x55ff79-0x0;var _0x579067=_0xd671[_0x55ff79];return _0x579067;};'use strict';var Sequelize=require(_0x1d67('0x0'));var moment=require(_0x1d67('0x1'));module[_0x1d67('0x2')]={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x1d67('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x1d67('0x3')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0x1d67('0x3')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x1d67('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x1d67('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x1d67('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x1d67('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x1d67('0x4')],'allowNull':![],'defaultValue':moment()[_0x1d67('0x5')]('YYYY-MM-DD\x20HH:mm:ss')}};
\ No newline at end of file
+var _0x441a=['moment','STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','sequelize'];(function(_0x71b765,_0x3053f8){var _0x34cb24=function(_0x2dd237){while(--_0x2dd237){_0x71b765['push'](_0x71b765['shift']());}};_0x34cb24(++_0x3053f8);}(_0x441a,0x1df));var _0xa441=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x441a[_0x4565bf];return _0x5610ba;};'use strict';var Sequelize=require(_0xa441('0x0'));var moment=require(_0xa441('0x1'));module['exports']={'time':{'type':Sequelize[_0xa441('0x2')]},'callid':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0xa441('0x2')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xa441('0x2')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0xa441('0x2')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0xa441('0x2')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0xa441('0x2')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0xa441('0x2')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0xa441('0x3')],'allowNull':![],'defaultValue':moment()[_0xa441('0x4')](_0xa441('0x5'))}};
\ No newline at end of file
index ad28465..3cdf60d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc17d=['end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','index','map','VoiceQueuesLog','rawAttributes','fieldName','type','key','model','query','keys','filters','fields','attributes','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','then','catch','show','params','intersection','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','status'];(function(_0x19aa84,_0x549537){var _0x536146=function(_0x5da480){while(--_0x5da480){_0x19aa84['push'](_0x19aa84['shift']());}};_0x536146(++_0x549537);}(_0xc17d,0x10d));var _0xdc17=function(_0xdf180c,_0x5b4c9f){_0xdf180c=_0xdf180c-0x0;var _0x59b4d4=_0xc17d[_0xdf180c];return _0x59b4d4;};'use strict';var emlformat=require(_0xdc17('0x0'));var rimraf=require(_0xdc17('0x1'));var zipdir=require(_0xdc17('0x2'));var jsonpatch=require(_0xdc17('0x3'));var rp=require('request-promise');var moment=require(_0xdc17('0x4'));var BPromise=require(_0xdc17('0x5'));var Mustache=require(_0xdc17('0x6'));var util=require(_0xdc17('0x7'));var path=require(_0xdc17('0x8'));var sox=require(_0xdc17('0x9'));var csv=require(_0xdc17('0xa'));var ejs=require(_0xdc17('0xb'));var fs=require('fs');var fs_extra=require(_0xdc17('0xc'));var _=require(_0xdc17('0xd'));var squel=require(_0xdc17('0xe'));var crypto=require('crypto');var jsforce=require(_0xdc17('0xf'));var deskjs=require(_0xdc17('0x10'));var toCsv=require(_0xdc17('0xa'));var querystring=require(_0xdc17('0x11'));var Papa=require(_0xdc17('0x12'));var Redis=require(_0xdc17('0x13'));var authService=require(_0xdc17('0x14'));var qs=require(_0xdc17('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdc17('0x16'));var logger=require(_0xdc17('0x17'))(_0xdc17('0x18'));var utils=require('../../config/utils');var config=require(_0xdc17('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x57391f,_0x505d15){_0x505d15=_0x505d15||0xcc;return function(_0xf8fab6){if(_0xf8fab6){return _0x57391f['sendStatus'](_0x505d15);}return _0x57391f[_0xdc17('0x1a')](_0x505d15)[_0xdc17('0x1b')]();};}function respondWithResult(_0x9d36d2,_0x13f7e5){_0x13f7e5=_0x13f7e5||0xc8;return function(_0x5ae458){if(_0x5ae458){return _0x9d36d2[_0xdc17('0x1a')](_0x13f7e5)[_0xdc17('0x1c')](_0x5ae458);}};}function respondWithFilteredResult(_0x5ac15e,_0x1f9114){return function(_0x1da17){if(_0x1da17){var _0x208c5e=typeof _0x1f9114[_0xdc17('0x1d')]===_0xdc17('0x1e')&&typeof _0x1f9114[_0xdc17('0x1f')]===_0xdc17('0x1e');var _0x41ec8a=_0x1da17[_0xdc17('0x20')];var _0x4a0920=_0x208c5e?0x0:_0x1f9114['offset'];var _0x388d5f=_0x208c5e?_0x1da17[_0xdc17('0x20')]:_0x1f9114['offset']+_0x1f9114[_0xdc17('0x1f')];var _0xd5d06c;if(_0x388d5f>=_0x41ec8a){_0x388d5f=_0x41ec8a;_0xd5d06c=0xc8;}else{_0xd5d06c=0xce;}_0x5ac15e[_0xdc17('0x1a')](_0xd5d06c);return _0x5ac15e[_0xdc17('0x21')](_0xdc17('0x22'),_0x4a0920+'-'+_0x388d5f+'/'+_0x41ec8a)[_0xdc17('0x1c')](_0x1da17);}return null;};}function patchUpdates(_0x5ce8ff){return function(_0x4967ba){try{jsonpatch[_0xdc17('0x23')](_0x4967ba,_0x5ce8ff,!![]);}catch(_0x5a99b0){return BPromise[_0xdc17('0x24')](_0x5a99b0);}return _0x4967ba[_0xdc17('0x25')]();};}function saveUpdates(_0x33bf21,_0x20d0d2){return function(_0x4e7739){if(_0x4e7739){return _0x4e7739[_0xdc17('0x26')](_0x33bf21)['then'](function(_0x4ae99e){return _0x4ae99e;});}return null;};}function removeEntity(_0x6b21bb,_0x6e1050){return function(_0x28fa30){if(_0x28fa30){return _0x28fa30[_0xdc17('0x27')]()['then'](function(){_0x6b21bb[_0xdc17('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2c540b,_0x128fd6){return function(_0x5ac691){if(!_0x5ac691){_0x2c540b['sendStatus'](0x194);}return _0x5ac691;};}function handleError(_0x23911e,_0x1608d9){_0x1608d9=_0x1608d9||0x1f4;return function(_0x18f6d4){logger['error'](_0x18f6d4[_0xdc17('0x28')]);if(_0x18f6d4[_0xdc17('0x29')]){delete _0x18f6d4[_0xdc17('0x29')];}_0x23911e['status'](_0x1608d9)[_0xdc17('0x2a')](_0x18f6d4);};}exports[_0xdc17('0x2b')]=function(_0x50be57,_0x48791d){var _0x562cc4={},_0x16340b={},_0x1b01ae={'count':0x0,'rows':[]};var _0x465a41=_[_0xdc17('0x2c')](db[_0xdc17('0x2d')][_0xdc17('0x2e')],function(_0xeaa415){return{'name':_0xeaa415[_0xdc17('0x2f')],'type':_0xeaa415[_0xdc17('0x30')][_0xdc17('0x31')]};});_0x16340b[_0xdc17('0x32')]=_[_0xdc17('0x2c')](_0x465a41,_0xdc17('0x29'));_0x16340b[_0xdc17('0x33')]=_[_0xdc17('0x34')](_0x50be57[_0xdc17('0x33')]);_0x16340b[_0xdc17('0x35')]=_['intersection'](_0x16340b[_0xdc17('0x32')],_0x16340b[_0xdc17('0x33')]);_0x562cc4['attributes']=_['intersection'](_0x16340b[_0xdc17('0x32')],qs[_0xdc17('0x36')](_0x50be57['query'][_0xdc17('0x36')]));_0x562cc4['attributes']=_0x562cc4[_0xdc17('0x37')]['length']?_0x562cc4[_0xdc17('0x37')]:_0x16340b['model'];if(!_0x50be57[_0xdc17('0x33')]['hasOwnProperty'](_0xdc17('0x38'))){_0x562cc4[_0xdc17('0x1f')]=qs['limit'](_0x50be57['query'][_0xdc17('0x1f')]);_0x562cc4[_0xdc17('0x1d')]=qs[_0xdc17('0x1d')](_0x50be57[_0xdc17('0x33')][_0xdc17('0x1d')]);}_0x562cc4['order']=qs[_0xdc17('0x39')](_0x50be57[_0xdc17('0x33')][_0xdc17('0x39')]);_0x562cc4[_0xdc17('0x3a')]=qs[_0xdc17('0x35')](_[_0xdc17('0x3b')](_0x50be57[_0xdc17('0x33')],_0x16340b[_0xdc17('0x35')]),_0x465a41);if(_0x50be57[_0xdc17('0x33')][_0xdc17('0x3c')]){_0x562cc4[_0xdc17('0x3a')]=_[_0xdc17('0x3d')](_0x562cc4[_0xdc17('0x3a')],{'$or':_['map'](_0x465a41,function(_0x525058){if(_0x525058[_0xdc17('0x30')]!==_0xdc17('0x3e')){var _0xf59435={};_0xf59435[_0x525058[_0xdc17('0x29')]]={'$like':'%'+_0x50be57[_0xdc17('0x33')]['filter']+'%'};return _0xf59435;}})});}_0x562cc4=_[_0xdc17('0x3d')]({},_0x562cc4,_0x50be57[_0xdc17('0x3f')]);var _0x2ec2ea={'where':_0x562cc4[_0xdc17('0x3a')]};return db[_0xdc17('0x2d')]['count'](_0x2ec2ea)['then'](function(_0x2b9842){_0x1b01ae[_0xdc17('0x20')]=_0x2b9842;if(_0x50be57[_0xdc17('0x33')][_0xdc17('0x40')]){_0x562cc4[_0xdc17('0x41')]=[{'all':!![]}];}return db['VoiceQueuesLog']['findAll'](_0x562cc4);})[_0xdc17('0x42')](function(_0x5130ae){_0x1b01ae['rows']=_0x5130ae;return _0x1b01ae;})[_0xdc17('0x42')](respondWithFilteredResult(_0x48791d,_0x562cc4))[_0xdc17('0x43')](handleError(_0x48791d,null));};exports[_0xdc17('0x44')]=function(_0x473d6b,_0x18264e){var _0xedca4={'raw':!![],'where':{'id':_0x473d6b[_0xdc17('0x45')]['id']}},_0x4b025c={};_0x4b025c[_0xdc17('0x32')]=_['keys'](db[_0xdc17('0x2d')][_0xdc17('0x2e')]);_0x4b025c[_0xdc17('0x33')]=_[_0xdc17('0x34')](_0x473d6b[_0xdc17('0x33')]);_0x4b025c[_0xdc17('0x35')]=_[_0xdc17('0x46')](_0x4b025c[_0xdc17('0x32')],_0x4b025c[_0xdc17('0x33')]);_0xedca4['attributes']=_[_0xdc17('0x46')](_0x4b025c[_0xdc17('0x32')],qs[_0xdc17('0x36')](_0x473d6b[_0xdc17('0x33')][_0xdc17('0x36')]));_0xedca4[_0xdc17('0x37')]=_0xedca4[_0xdc17('0x37')]['length']?_0xedca4[_0xdc17('0x37')]:_0x4b025c['model'];if(_0x473d6b[_0xdc17('0x33')][_0xdc17('0x40')]){_0xedca4[_0xdc17('0x41')]=[{'all':!![]}];}_0xedca4=_[_0xdc17('0x3d')]({},_0xedca4,_0x473d6b['options']);return db[_0xdc17('0x2d')]['find'](_0xedca4)[_0xdc17('0x42')](handleEntityNotFound(_0x18264e,null))['then'](respondWithResult(_0x18264e,null))[_0xdc17('0x43')](handleError(_0x18264e,null));};exports[_0xdc17('0x47')]=function(_0x243a70,_0x416d45){return db[_0xdc17('0x2d')][_0xdc17('0x47')](_0x243a70[_0xdc17('0x48')],{})[_0xdc17('0x42')](respondWithResult(_0x416d45,0xc9))[_0xdc17('0x43')](handleError(_0x416d45,null));};exports[_0xdc17('0x26')]=function(_0x34d1ad,_0x4a10db){if(_0x34d1ad['body']['id']){delete _0x34d1ad[_0xdc17('0x48')]['id'];}return db[_0xdc17('0x2d')][_0xdc17('0x49')]({'where':{'id':_0x34d1ad[_0xdc17('0x45')]['id']}})[_0xdc17('0x42')](handleEntityNotFound(_0x4a10db,null))[_0xdc17('0x42')](saveUpdates(_0x34d1ad['body'],null))[_0xdc17('0x42')](respondWithResult(_0x4a10db,null))[_0xdc17('0x43')](handleError(_0x4a10db,null));};exports['destroy']=function(_0x50a150,_0x2e12a8){return db[_0xdc17('0x2d')][_0xdc17('0x49')]({'where':{'id':_0x50a150[_0xdc17('0x45')]['id']}})[_0xdc17('0x42')](handleEntityNotFound(_0x2e12a8,null))['then'](removeEntity(_0x2e12a8,null))[_0xdc17('0x43')](handleError(_0x2e12a8,null));};
\ No newline at end of file
+var _0xe98a=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','save','update','destroy','error','stack','name','send','index','map','VoiceQueuesLog','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','then','include','findAll','show','params','includeAll','options','find','catch','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse'];(function(_0x5317b5,_0x4dfd6e){var _0x3b7ce2=function(_0xc146d6){while(--_0xc146d6){_0x5317b5['push'](_0x5317b5['shift']());}};_0x3b7ce2(++_0x4dfd6e);}(_0xe98a,0x1c2));var _0xae98=function(_0x39f34f,_0x298f45){_0x39f34f=_0x39f34f-0x0;var _0x59fee1=_0xe98a[_0x39f34f];return _0x59fee1;};'use strict';var emlformat=require(_0xae98('0x0'));var rimraf=require(_0xae98('0x1'));var zipdir=require(_0xae98('0x2'));var jsonpatch=require(_0xae98('0x3'));var rp=require(_0xae98('0x4'));var moment=require(_0xae98('0x5'));var BPromise=require(_0xae98('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0xae98('0x7'));var sox=require(_0xae98('0x8'));var csv=require(_0xae98('0x9'));var ejs=require(_0xae98('0xa'));var fs=require('fs');var fs_extra=require(_0xae98('0xb'));var _=require('lodash');var squel=require(_0xae98('0xc'));var crypto=require(_0xae98('0xd'));var jsforce=require(_0xae98('0xe'));var deskjs=require(_0xae98('0xf'));var toCsv=require(_0xae98('0x9'));var querystring=require(_0xae98('0x10'));var Papa=require(_0xae98('0x11'));var Redis=require('ioredis');var authService=require(_0xae98('0x12'));var qs=require(_0xae98('0x13'));var as=require(_0xae98('0x14'));var hardwareService=require(_0xae98('0x15'));var logger=require(_0xae98('0x16'))(_0xae98('0x17'));var utils=require('../../config/utils');var config=require(_0xae98('0x18'));var licenseUtil=require(_0xae98('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1973d1,_0x191c15){_0x191c15=_0x191c15||0xcc;return function(_0xc89723){if(_0xc89723){return _0x1973d1[_0xae98('0x1a')](_0x191c15);}return _0x1973d1[_0xae98('0x1b')](_0x191c15)[_0xae98('0x1c')]();};}function respondWithResult(_0x39bce1,_0x21e98f){_0x21e98f=_0x21e98f||0xc8;return function(_0x3d8b60){if(_0x3d8b60){return _0x39bce1[_0xae98('0x1b')](_0x21e98f)['json'](_0x3d8b60);}};}function respondWithFilteredResult(_0x523563,_0x584ce6){return function(_0x57321d){if(_0x57321d){var _0x10fac2=typeof _0x584ce6[_0xae98('0x1d')]==='undefined'&&typeof _0x584ce6[_0xae98('0x1e')]===_0xae98('0x1f');var _0x4883c0=_0x57321d[_0xae98('0x20')];var _0x31cdc0=_0x10fac2?0x0:_0x584ce6['offset'];var _0x59175f=_0x10fac2?_0x57321d[_0xae98('0x20')]:_0x584ce6['offset']+_0x584ce6[_0xae98('0x1e')];var _0x1a2a88;if(_0x59175f>=_0x4883c0){_0x59175f=_0x4883c0;_0x1a2a88=0xc8;}else{_0x1a2a88=0xce;}_0x523563[_0xae98('0x1b')](_0x1a2a88);return _0x523563[_0xae98('0x21')](_0xae98('0x22'),_0x31cdc0+'-'+_0x59175f+'/'+_0x4883c0)[_0xae98('0x23')](_0x57321d);}return null;};}function patchUpdates(_0x39034d){return function(_0x49079d){try{jsonpatch[_0xae98('0x24')](_0x49079d,_0x39034d,!![]);}catch(_0x32057f){return BPromise['reject'](_0x32057f);}return _0x49079d[_0xae98('0x25')]();};}function saveUpdates(_0x3cead1,_0x4dc66f){return function(_0x2b1deb){if(_0x2b1deb){return _0x2b1deb[_0xae98('0x26')](_0x3cead1)['then'](function(_0x305e25){return _0x305e25;});}return null;};}function removeEntity(_0x19a877,_0x4ef5cf){return function(_0x50d167){if(_0x50d167){return _0x50d167[_0xae98('0x27')]()['then'](function(){_0x19a877[_0xae98('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x938357,_0x3c3692){return function(_0x636fc5){if(!_0x636fc5){_0x938357['sendStatus'](0x194);}return _0x636fc5;};}function handleError(_0x499218,_0x9ddb59){_0x9ddb59=_0x9ddb59||0x1f4;return function(_0x2cac76){logger[_0xae98('0x28')](_0x2cac76[_0xae98('0x29')]);if(_0x2cac76[_0xae98('0x2a')]){delete _0x2cac76['name'];}_0x499218['status'](_0x9ddb59)[_0xae98('0x2b')](_0x2cac76);};}exports[_0xae98('0x2c')]=function(_0x3aec1d,_0xdb5746){var _0x44138c={},_0x11bfb1={},_0x1184b6={'count':0x0,'rows':[]};var _0x47e668=_[_0xae98('0x2d')](db[_0xae98('0x2e')][_0xae98('0x2f')],function(_0x418446){return{'name':_0x418446[_0xae98('0x30')],'type':_0x418446['type'][_0xae98('0x31')]};});_0x11bfb1[_0xae98('0x32')]=_[_0xae98('0x2d')](_0x47e668,_0xae98('0x2a'));_0x11bfb1[_0xae98('0x33')]=_[_0xae98('0x34')](_0x3aec1d[_0xae98('0x33')]);_0x11bfb1[_0xae98('0x35')]=_[_0xae98('0x36')](_0x11bfb1[_0xae98('0x32')],_0x11bfb1[_0xae98('0x33')]);_0x44138c[_0xae98('0x37')]=_[_0xae98('0x36')](_0x11bfb1[_0xae98('0x32')],qs['fields'](_0x3aec1d[_0xae98('0x33')][_0xae98('0x38')]));_0x44138c[_0xae98('0x37')]=_0x44138c[_0xae98('0x37')][_0xae98('0x39')]?_0x44138c[_0xae98('0x37')]:_0x11bfb1[_0xae98('0x32')];if(!_0x3aec1d[_0xae98('0x33')][_0xae98('0x3a')](_0xae98('0x3b'))){_0x44138c[_0xae98('0x1e')]=qs['limit'](_0x3aec1d[_0xae98('0x33')][_0xae98('0x1e')]);_0x44138c[_0xae98('0x1d')]=qs[_0xae98('0x1d')](_0x3aec1d[_0xae98('0x33')][_0xae98('0x1d')]);}_0x44138c[_0xae98('0x3c')]=qs['sort'](_0x3aec1d[_0xae98('0x33')][_0xae98('0x3d')]);_0x44138c[_0xae98('0x3e')]=qs[_0xae98('0x35')](_[_0xae98('0x3f')](_0x3aec1d['query'],_0x11bfb1['filters']),_0x47e668);if(_0x3aec1d[_0xae98('0x33')][_0xae98('0x40')]){_0x44138c[_0xae98('0x3e')]=_['merge'](_0x44138c[_0xae98('0x3e')],{'$or':_[_0xae98('0x2d')](_0x47e668,function(_0xe1159e){if(_0xe1159e[_0xae98('0x41')]!==_0xae98('0x42')){var _0x1635d2={};_0x1635d2[_0xe1159e['name']]={'$like':'%'+_0x3aec1d[_0xae98('0x33')][_0xae98('0x40')]+'%'};return _0x1635d2;}})});}_0x44138c=_[_0xae98('0x43')]({},_0x44138c,_0x3aec1d['options']);var _0xf251df={'where':_0x44138c[_0xae98('0x3e')]};return db[_0xae98('0x2e')][_0xae98('0x20')](_0xf251df)[_0xae98('0x44')](function(_0x29a149){_0x1184b6[_0xae98('0x20')]=_0x29a149;if(_0x3aec1d['query']['includeAll']){_0x44138c[_0xae98('0x45')]=[{'all':!![]}];}return db[_0xae98('0x2e')][_0xae98('0x46')](_0x44138c);})[_0xae98('0x44')](function(_0x8a8c5){_0x1184b6['rows']=_0x8a8c5;return _0x1184b6;})['then'](respondWithFilteredResult(_0xdb5746,_0x44138c))['catch'](handleError(_0xdb5746,null));};exports[_0xae98('0x47')]=function(_0x1b9210,_0xd47f0a){var _0x237ad4={'raw':!![],'where':{'id':_0x1b9210[_0xae98('0x48')]['id']}},_0x32222b={};_0x32222b[_0xae98('0x32')]=_['keys'](db[_0xae98('0x2e')][_0xae98('0x2f')]);_0x32222b[_0xae98('0x33')]=_['keys'](_0x1b9210[_0xae98('0x33')]);_0x32222b[_0xae98('0x35')]=_[_0xae98('0x36')](_0x32222b[_0xae98('0x32')],_0x32222b[_0xae98('0x33')]);_0x237ad4[_0xae98('0x37')]=_[_0xae98('0x36')](_0x32222b['model'],qs[_0xae98('0x38')](_0x1b9210[_0xae98('0x33')][_0xae98('0x38')]));_0x237ad4[_0xae98('0x37')]=_0x237ad4[_0xae98('0x37')][_0xae98('0x39')]?_0x237ad4[_0xae98('0x37')]:_0x32222b[_0xae98('0x32')];if(_0x1b9210['query'][_0xae98('0x49')]){_0x237ad4['include']=[{'all':!![]}];}_0x237ad4=_[_0xae98('0x43')]({},_0x237ad4,_0x1b9210[_0xae98('0x4a')]);return db[_0xae98('0x2e')][_0xae98('0x4b')](_0x237ad4)[_0xae98('0x44')](handleEntityNotFound(_0xd47f0a,null))[_0xae98('0x44')](respondWithResult(_0xd47f0a,null))[_0xae98('0x4c')](handleError(_0xd47f0a,null));};exports['create']=function(_0x20b42a,_0x2d8168){return db[_0xae98('0x2e')]['create'](_0x20b42a[_0xae98('0x4d')],{})[_0xae98('0x44')](respondWithResult(_0x2d8168,0xc9))[_0xae98('0x4c')](handleError(_0x2d8168,null));};exports['update']=function(_0x5cc41c,_0x507f5b){if(_0x5cc41c[_0xae98('0x4d')]['id']){delete _0x5cc41c[_0xae98('0x4d')]['id'];}return db[_0xae98('0x2e')][_0xae98('0x4b')]({'where':{'id':_0x5cc41c[_0xae98('0x48')]['id']}})[_0xae98('0x44')](handleEntityNotFound(_0x507f5b,null))[_0xae98('0x44')](saveUpdates(_0x5cc41c[_0xae98('0x4d')],null))[_0xae98('0x44')](respondWithResult(_0x507f5b,null))[_0xae98('0x4c')](handleError(_0x507f5b,null));};exports[_0xae98('0x27')]=function(_0x13fa7d,_0x45aefb){return db[_0xae98('0x2e')][_0xae98('0x4b')]({'where':{'id':_0x13fa7d[_0xae98('0x48')]['id']}})['then'](handleEntityNotFound(_0x45aefb,null))['then'](removeEntity(_0x45aefb,null))[_0xae98('0x4c')](handleError(_0x45aefb,null));};
\ No newline at end of file
index 009701b..acf376c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb3d=['lodash','util','api','moment','request-promise','path','rimraf','../../config/environment','./voiceQueuesLog.attributes','exports','define','VoiceQueuesLog','voice_queues_log','event_dtm','dtm'];(function(_0x58601a,_0x479287){var _0x37c573=function(_0x106327){while(--_0x106327){_0x58601a['push'](_0x58601a['shift']());}};_0x37c573(++_0x479287);}(_0xfb3d,0x1ef));var _0xdfb3=function(_0x3b1d5b,_0xff4244){_0x3b1d5b=_0x3b1d5b-0x0;var _0x11d81b=_0xfb3d[_0x3b1d5b];return _0x11d81b;};'use strict';var _=require(_0xdfb3('0x0'));var util=require(_0xdfb3('0x1'));var logger=require('../../config/logger')(_0xdfb3('0x2'));var moment=require(_0xdfb3('0x3'));var BPromise=require('bluebird');var rp=require(_0xdfb3('0x4'));var fs=require('fs');var path=require(_0xdfb3('0x5'));var rimraf=require(_0xdfb3('0x6'));var config=require(_0xdfb3('0x7'));var attributes=require(_0xdfb3('0x8'));module[_0xdfb3('0x9')]=function(_0x564a19,_0x4e0ed8){return _0x564a19[_0xdfb3('0xa')](_0xdfb3('0xb'),attributes,{'tableName':_0xdfb3('0xc'),'paranoid':![],'indexes':[{'name':_0xdfb3('0xd'),'fields':['event',_0xdfb3('0xe')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x8bc6=['path','rimraf','../../config/environment','./voiceQueuesLog.attributes','exports','define','VoiceQueuesLog','voice_queues_log','event_dtm','event','dtm','api','moment','bluebird','request-promise'];(function(_0x623f2b,_0x487f18){var _0x18b92a=function(_0xdc70d5){while(--_0xdc70d5){_0x623f2b['push'](_0x623f2b['shift']());}};_0x18b92a(++_0x487f18);}(_0x8bc6,0x137));var _0x68bc=function(_0x44ea17,_0x422059){_0x44ea17=_0x44ea17-0x0;var _0x1d8af1=_0x8bc6[_0x44ea17];return _0x1d8af1;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x68bc('0x0'));var moment=require(_0x68bc('0x1'));var BPromise=require(_0x68bc('0x2'));var rp=require(_0x68bc('0x3'));var fs=require('fs');var path=require(_0x68bc('0x4'));var rimraf=require(_0x68bc('0x5'));var config=require(_0x68bc('0x6'));var attributes=require(_0x68bc('0x7'));module[_0x68bc('0x8')]=function(_0x504bbb,_0x5113f1){return _0x504bbb[_0x68bc('0x9')](_0x68bc('0xa'),attributes,{'tableName':_0x68bc('0xb'),'paranoid':![],'indexes':[{'name':_0x68bc('0xc'),'fields':[_0x68bc('0xd'),_0x68bc('0xe')]}],'timestamps':![]});};
\ No newline at end of file
index 958ebc1..69fdf0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0326=['ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','error','message','VoiceQueuesLog,\x20%s,\x20%s','result','catch','lodash','util','moment'];(function(_0x1ad53d,_0x3067eb){var _0x57df8d=function(_0x2e1ac3){while(--_0x2e1ac3){_0x1ad53d['push'](_0x1ad53d['shift']());}};_0x57df8d(++_0x3067eb);}(_0x0326,0x115));var _0x6032=function(_0x5e32f3,_0x3386c1){_0x5e32f3=_0x5e32f3-0x0;var _0x4d4e03=_0x0326[_0x5e32f3];return _0x4d4e03;};'use strict';var _=require(_0x6032('0x0'));var util=require(_0x6032('0x1'));var moment=require(_0x6032('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6032('0x3'));var db=require(_0x6032('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x6032('0x5'))(_0x6032('0x6'));var config=require(_0x6032('0x7'));var jayson=require(_0x6032('0x8'));var client=jayson[_0x6032('0x9')][_0x6032('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x13a919,_0x18ba9c,_0x8ae1ff){return new BPromise(function(_0x3c94ee,_0x292fff){return client[_0x6032('0xb')](_0x13a919,_0x8ae1ff)['then'](function(_0x378928){logger[_0x6032('0xc')]('VoiceQueuesLog,\x20%s,\x20%s',_0x18ba9c,_0x6032('0xd'));logger[_0x6032('0xe')]('VoiceQueuesLog,\x20%s,\x20%s,\x20%s',_0x18ba9c,_0x6032('0xd'),JSON['stringify'](_0x378928));if(_0x378928[_0x6032('0xf')]){if(_0x378928[_0x6032('0xf')]['code']===0x1f4){logger['error']('VoiceQueuesLog,\x20%s,\x20%s',_0x18ba9c,_0x378928['error'][_0x6032('0x10')]);return _0x292fff(_0x378928[_0x6032('0xf')][_0x6032('0x10')]);}logger[_0x6032('0xf')](_0x6032('0x11'),_0x18ba9c,_0x378928['error'][_0x6032('0x10')]);return _0x3c94ee(_0x378928[_0x6032('0xf')]['message']);}else{logger[_0x6032('0xc')](_0x6032('0x11'),_0x18ba9c,_0x6032('0xd'));_0x3c94ee(_0x378928[_0x6032('0x12')]['message']);}})[_0x6032('0x13')](function(_0x6dc596){logger[_0x6032('0xf')](_0x6032('0x11'),_0x18ba9c,_0x6dc596);_0x292fff(_0x6dc596);});});}
\ No newline at end of file
+var _0x0689=['request','then','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x26a125,_0x9275b6){var _0xa094f=function(_0x4e1d04){while(--_0x4e1d04){_0x26a125['push'](_0x26a125['shift']());}};_0xa094f(++_0x9275b6);}(_0x0689,0x10f));var _0x9068=function(_0x2c2ddd,_0x1f2f89){_0x2c2ddd=_0x2c2ddd-0x0;var _0x3281c6=_0x0689[_0x2c2ddd];return _0x3281c6;};'use strict';var _=require(_0x9068('0x0'));var util=require('util');var moment=require(_0x9068('0x1'));var BPromise=require('bluebird');var rs=require(_0x9068('0x2'));var fs=require('fs');var Redis=require(_0x9068('0x3'));var db=require(_0x9068('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x9068('0x5'))('rpc');var config=require(_0x9068('0x6'));var jayson=require(_0x9068('0x7'));var client=jayson[_0x9068('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x554a90,_0xea1f21,_0x3a7c67){return new BPromise(function(_0x34e96b,_0x1169e6){return client[_0x9068('0x9')](_0x554a90,_0x3a7c67)[_0x9068('0xa')](function(_0x3ed4ab){logger[_0x9068('0xb')](_0x9068('0xc'),_0xea1f21,_0x9068('0xd'));logger[_0x9068('0xe')](_0x9068('0xf'),_0xea1f21,_0x9068('0xd'),JSON[_0x9068('0x10')](_0x3ed4ab));if(_0x3ed4ab[_0x9068('0x11')]){if(_0x3ed4ab[_0x9068('0x11')]['code']===0x1f4){logger[_0x9068('0x11')](_0x9068('0xc'),_0xea1f21,_0x3ed4ab[_0x9068('0x11')]['message']);return _0x1169e6(_0x3ed4ab['error'][_0x9068('0x12')]);}logger[_0x9068('0x11')](_0x9068('0xc'),_0xea1f21,_0x3ed4ab[_0x9068('0x11')][_0x9068('0x12')]);return _0x34e96b(_0x3ed4ab[_0x9068('0x11')][_0x9068('0x12')]);}else{logger[_0x9068('0xb')](_0x9068('0xc'),_0xea1f21,_0x9068('0xd'));_0x34e96b(_0x3ed4ab['result'][_0x9068('0x12')]);}})[_0x9068('0x13')](function(_0x3f02bb){logger['error']('VoiceQueuesLog,\x20%s,\x20%s',_0xea1f21,_0x3f02bb);_0x1169e6(_0x3f02bb);});});}
\ No newline at end of file
index abf8999..0522531 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e58=['runTranscribe','put','update','delete','exports','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceRecording.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download','download','/:id/downloads','downloads','/:id/transcribe','downloadTranscribe','post'];(function(_0x14204d,_0x5abe92){var _0x197b9c=function(_0x48985e){while(--_0x48985e){_0x14204d['push'](_0x14204d['shift']());}};_0x197b9c(++_0x5abe92);}(_0x7e58,0x149));var _0x87e5=function(_0x278424,_0x270f40){_0x278424=_0x278424-0x0;var _0x4fd786=_0x7e58[_0x278424];return _0x4fd786;};'use strict';var multer=require('multer');var util=require(_0x87e5('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x87e5('0x1'));var router=express[_0x87e5('0x2')]();var fs_extra=require(_0x87e5('0x3'));var auth=require(_0x87e5('0x4'));var interaction=require(_0x87e5('0x5'));var config=require(_0x87e5('0x6'));var controller=require(_0x87e5('0x7'));router[_0x87e5('0x8')]('/',auth[_0x87e5('0x9')](),controller[_0x87e5('0xa')]);router[_0x87e5('0x8')](_0x87e5('0xb'),auth[_0x87e5('0x9')](),controller[_0x87e5('0xc')]);router[_0x87e5('0x8')](_0x87e5('0xd'),auth['isAuthenticated'](),controller[_0x87e5('0xe')]);router['get'](_0x87e5('0xf'),auth['isAuthenticated'](),controller[_0x87e5('0x10')]);router['get'](_0x87e5('0x11'),controller[_0x87e5('0x12')]);router['get'](_0x87e5('0x13'),auth[_0x87e5('0x9')](),controller[_0x87e5('0x14')]);router[_0x87e5('0x15')]('/',auth['isAuthenticated'](),controller['create']);router['post'](_0x87e5('0x13'),auth['isAuthenticated'](),controller[_0x87e5('0x16')]);router[_0x87e5('0x17')]('/:id',auth[_0x87e5('0x9')](),controller[_0x87e5('0x18')]);router[_0x87e5('0x19')](_0x87e5('0xd'),auth[_0x87e5('0x9')](),controller['destroy']);module[_0x87e5('0x1a')]=router;
\ No newline at end of file
+var _0xecb7=['express','Router','fs-extra','../../config/environment','./voiceRecording.controller','isAuthenticated','/describe','describe','get','/:id','/:id/download','/:id/downloads','downloads','/:id/transcribe','downloadTranscribe','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x68a88a,_0x5cc6c9){var _0x4cf794=function(_0x3d38c6){while(--_0x3d38c6){_0x68a88a['push'](_0x68a88a['shift']());}};_0x4cf794(++_0x5cc6c9);}(_0xecb7,0x11a));var _0x7ecb=function(_0x40471f,_0x41012e){_0x40471f=_0x40471f-0x0;var _0x5becd9=_0xecb7[_0x40471f];return _0x5becd9;};'use strict';var multer=require(_0x7ecb('0x0'));var util=require(_0x7ecb('0x1'));var path=require(_0x7ecb('0x2'));var timeout=require(_0x7ecb('0x3'));var express=require(_0x7ecb('0x4'));var router=express[_0x7ecb('0x5')]();var fs_extra=require(_0x7ecb('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7ecb('0x7'));var controller=require(_0x7ecb('0x8'));router['get']('/',auth[_0x7ecb('0x9')](),controller['index']);router['get'](_0x7ecb('0xa'),auth['isAuthenticated'](),controller[_0x7ecb('0xb')]);router[_0x7ecb('0xc')](_0x7ecb('0xd'),auth[_0x7ecb('0x9')](),controller['show']);router[_0x7ecb('0xc')](_0x7ecb('0xe'),auth['isAuthenticated'](),controller['download']);router[_0x7ecb('0xc')](_0x7ecb('0xf'),controller[_0x7ecb('0x10')]);router['get'](_0x7ecb('0x11'),auth[_0x7ecb('0x9')](),controller[_0x7ecb('0x12')]);router[_0x7ecb('0x13')]('/',auth[_0x7ecb('0x9')](),controller[_0x7ecb('0x14')]);router[_0x7ecb('0x13')](_0x7ecb('0x11'),auth[_0x7ecb('0x9')](),controller['runTranscribe']);router[_0x7ecb('0x15')]('/:id',auth[_0x7ecb('0x9')](),controller[_0x7ecb('0x16')]);router[_0x7ecb('0x17')](_0x7ecb('0xd'),auth['isAuthenticated'](),controller[_0x7ecb('0x18')]);module[_0x7ecb('0x19')]=router;
\ No newline at end of file
index 288d70f..134b63e 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(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xa9e0[_0x2b4411];return _0x8e41ef;};'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(_0x2aec52,_0x59d962){var _0x3b8835=function(_0x3e2604){while(--_0x3e2604){_0x2aec52['push'](_0x2aec52['shift']());}};_0x3b8835(++_0x59d962);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa9e0[_0x2dafbe];return _0x58a45a;};'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 7b5ff96..ba69eea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a9e=['rows','catch','show','params','find','create','body','describe','download','../../components/encryptor','value','%s.cypher','Sequelize','VoiceRecording\x20not\x20found','filename','extname','unlink','message','sequelize','MD5','uniqueid','push','existsSync','decryptFile','secrets','recording','ValidationError','isNil','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','listBuckets','createBucket','upload','TranscribeService','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','Location','bucket','Bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeName','transcribeStatus','TranscriptionJobStatus','runTranscribe','Voice\x20Recording\x20not\x20found','Setting','findOne','transcribe','transcribeAccountId','transcribeRegion','language','Transcribe\x20not\x20configured','runSentiment','sentimentAccountId','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20available','data1','Cloud\x20Provider\x20not\x20configured','data2','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','NEW','IN_PROGRESS','tempSentiment','updateAttributes','writeFile','downloadTranscribe','fileText','/server/files/transcribes/transcribe_','Transcript\x20not\x20available','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','aws-sdk','uuid/v4','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','limit','undefined','count','offset','Content-Range','reject','update','then','destroy','sendStatus','error','stack','name','index','map','VoiceRecording','rawAttributes','type','model','format','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll'];(function(_0x5ecf6f,_0x39e153){var _0x31fa17=function(_0x4dad9f){while(--_0x4dad9f){_0x5ecf6f['push'](_0x5ecf6f['shift']());}};_0x31fa17(++_0x39e153);}(_0x0a9e,0xec));var _0xe0a9=function(_0x49f632,_0x5655d8){_0x49f632=_0x49f632-0x0;var _0x42bb94=_0x0a9e[_0x49f632];return _0x42bb94;};'use strict';var emlformat=require(_0xe0a9('0x0'));var rimraf=require(_0xe0a9('0x1'));var zipdir=require(_0xe0a9('0x2'));var jsonpatch=require(_0xe0a9('0x3'));var rp=require(_0xe0a9('0x4'));var moment=require(_0xe0a9('0x5'));var BPromise=require(_0xe0a9('0x6'));var Mustache=require(_0xe0a9('0x7'));var util=require(_0xe0a9('0x8'));var path=require(_0xe0a9('0x9'));var sox=require(_0xe0a9('0xa'));var csv=require('to-csv');var ejs=require(_0xe0a9('0xb'));var fs=require('fs');var fs_extra=require(_0xe0a9('0xc'));var _=require(_0xe0a9('0xd'));var squel=require(_0xe0a9('0xe'));var crypto=require(_0xe0a9('0xf'));var jsforce=require(_0xe0a9('0x10'));var deskjs=require(_0xe0a9('0x11'));var toCsv=require(_0xe0a9('0x12'));var querystring=require(_0xe0a9('0x13'));var Papa=require(_0xe0a9('0x14'));var AWS=require(_0xe0a9('0x15'));var uuidv4=require(_0xe0a9('0x16'));var Redis=require(_0xe0a9('0x17'));var authService=require(_0xe0a9('0x18'));var qs=require('../../components/parsers/qs');var as=require(_0xe0a9('0x19'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe0a9('0x1a'))(_0xe0a9('0x1b'));var utils=require('../../config/utils');var config=require(_0xe0a9('0x1c'));var licenseUtil=require(_0xe0a9('0x1d'));var db=require(_0xe0a9('0x1e'))['db'];function respondWithStatusCode(_0x5e37c7,_0x18138b){_0x18138b=_0x18138b||0xcc;return function(_0x5f09bd){if(_0x5f09bd){return _0x5e37c7['sendStatus'](_0x18138b);}return _0x5e37c7[_0xe0a9('0x1f')](_0x18138b)[_0xe0a9('0x20')]();};}function respondWithResult(_0x16fe60,_0x454ed6){_0x454ed6=_0x454ed6||0xc8;return function(_0xcef8b){if(_0xcef8b){return _0x16fe60[_0xe0a9('0x1f')](_0x454ed6)[_0xe0a9('0x21')](_0xcef8b);}};}function respondWithFilteredResult(_0x5eade8,_0x2802dd){return function(_0x1cb335){if(_0x1cb335){var _0x20307a=typeof _0x2802dd['offset']==='undefined'&&typeof _0x2802dd[_0xe0a9('0x22')]===_0xe0a9('0x23');var _0x3b725e=_0x1cb335[_0xe0a9('0x24')];var _0x3fe037=_0x20307a?0x0:_0x2802dd[_0xe0a9('0x25')];var _0x319703=_0x20307a?_0x1cb335['count']:_0x2802dd[_0xe0a9('0x25')]+_0x2802dd[_0xe0a9('0x22')];var _0x393973;if(_0x319703>=_0x3b725e){_0x319703=_0x3b725e;_0x393973=0xc8;}else{_0x393973=0xce;}_0x5eade8[_0xe0a9('0x1f')](_0x393973);return _0x5eade8['set'](_0xe0a9('0x26'),_0x3fe037+'-'+_0x319703+'/'+_0x3b725e)[_0xe0a9('0x21')](_0x1cb335);}return null;};}function patchUpdates(_0x103a50){return function(_0x5a797a){try{jsonpatch['apply'](_0x5a797a,_0x103a50,!![]);}catch(_0x143349){return BPromise[_0xe0a9('0x27')](_0x143349);}return _0x5a797a['save']();};}function saveUpdates(_0x98486a,_0x1535c8){return function(_0x521c9b){if(_0x521c9b){return _0x521c9b[_0xe0a9('0x28')](_0x98486a)[_0xe0a9('0x29')](function(_0x41c763){return _0x41c763;});}return null;};}function removeEntity(_0x233be4,_0x44d116){return function(_0x5dfb20){if(_0x5dfb20){return _0x5dfb20[_0xe0a9('0x2a')]()['then'](function(){_0x233be4[_0xe0a9('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x216695,_0x38e91e){return function(_0x257d61){if(!_0x257d61){_0x216695[_0xe0a9('0x2b')](0x194);}return _0x257d61;};}function handleError(_0x3879d9,_0x3a75b7){_0x3a75b7=_0x3a75b7||0x1f4;return function(_0x128357){logger[_0xe0a9('0x2c')](_0x128357[_0xe0a9('0x2d')]);if(_0x128357[_0xe0a9('0x2e')]){delete _0x128357[_0xe0a9('0x2e')];}_0x3879d9[_0xe0a9('0x1f')](_0x3a75b7)['send'](_0x128357);};}exports[_0xe0a9('0x2f')]=function(_0x135406,_0x573719){var _0x731301={},_0x2042a5={},_0xb256={'count':0x0,'rows':[]};var _0x41e9ce=_[_0xe0a9('0x30')](db[_0xe0a9('0x31')][_0xe0a9('0x32')],function(_0x440983){return{'name':_0x440983['fieldName'],'type':_0x440983[_0xe0a9('0x33')]['key']};});_0x2042a5[_0xe0a9('0x34')]=_['differenceBy'](_[_0xe0a9('0x30')](_0x41e9ce,_0xe0a9('0x2e')),[_0xe0a9('0x35')]);_0x2042a5[_0xe0a9('0x36')]=_[_0xe0a9('0x37')](_0x135406[_0xe0a9('0x36')]);_0x2042a5[_0xe0a9('0x38')]=_[_0xe0a9('0x39')](_0x2042a5[_0xe0a9('0x34')],_0x2042a5[_0xe0a9('0x36')]);_0x731301[_0xe0a9('0x3a')]=_[_0xe0a9('0x39')](_0x2042a5[_0xe0a9('0x34')],qs[_0xe0a9('0x3b')](_0x135406['query'][_0xe0a9('0x3b')]));_0x731301[_0xe0a9('0x3a')]=_0x731301[_0xe0a9('0x3a')][_0xe0a9('0x3c')]?_0x731301[_0xe0a9('0x3a')]:_0x2042a5[_0xe0a9('0x34')];if(!_0x135406[_0xe0a9('0x36')][_0xe0a9('0x3d')]('nolimit')){_0x731301[_0xe0a9('0x22')]=qs[_0xe0a9('0x22')](_0x135406[_0xe0a9('0x36')][_0xe0a9('0x22')]);_0x731301[_0xe0a9('0x25')]=qs[_0xe0a9('0x25')](_0x135406[_0xe0a9('0x36')][_0xe0a9('0x25')]);}_0x731301[_0xe0a9('0x3e')]=qs[_0xe0a9('0x3f')](_0x135406[_0xe0a9('0x36')][_0xe0a9('0x3f')]);_0x731301[_0xe0a9('0x40')]=qs[_0xe0a9('0x38')](_['pick'](_0x135406[_0xe0a9('0x36')],_0x2042a5[_0xe0a9('0x38')]),_0x41e9ce);if(_0x135406['query']['filter']){_0x731301['where']=_[_0xe0a9('0x41')](_0x731301[_0xe0a9('0x40')],{'$or':_[_0xe0a9('0x30')](_0x41e9ce,function(_0x413cdc){if(_0x413cdc[_0xe0a9('0x33')]!==_0xe0a9('0x42')){var _0x5e2eb8={};_0x5e2eb8[_0x413cdc[_0xe0a9('0x2e')]]={'$like':'%'+_0x135406[_0xe0a9('0x36')][_0xe0a9('0x43')]+'%'};return _0x5e2eb8;}})});}_0x731301=_[_0xe0a9('0x41')]({},_0x731301,_0x135406[_0xe0a9('0x44')]);var _0x28a7af={'where':_0x731301['where']};return db[_0xe0a9('0x31')][_0xe0a9('0x24')](_0x28a7af)[_0xe0a9('0x29')](function(_0x3764c3){_0xb256[_0xe0a9('0x24')]=_0x3764c3;if(_0x135406[_0xe0a9('0x36')][_0xe0a9('0x45')]){_0x731301[_0xe0a9('0x46')]=[{'all':!![]}];}return db['VoiceRecording'][_0xe0a9('0x47')](_0x731301);})[_0xe0a9('0x29')](function(_0x2311d3){_0xb256[_0xe0a9('0x48')]=_0x2311d3;return _0xb256;})[_0xe0a9('0x29')](respondWithFilteredResult(_0x573719,_0x731301))[_0xe0a9('0x49')](handleError(_0x573719,null));};exports[_0xe0a9('0x4a')]=function(_0x2d2870,_0x4ce97a){var _0x3df090={'raw':![],'where':{'id':_0x2d2870[_0xe0a9('0x4b')]['id']}},_0xf09667={};_0xf09667[_0xe0a9('0x34')]=_[_0xe0a9('0x37')](db[_0xe0a9('0x31')]['rawAttributes']);_0xf09667['query']=_[_0xe0a9('0x37')](_0x2d2870[_0xe0a9('0x36')]);_0xf09667['filters']=_[_0xe0a9('0x39')](_0xf09667['model'],_0xf09667[_0xe0a9('0x36')]);_0x3df090[_0xe0a9('0x3a')]=_[_0xe0a9('0x39')](_0xf09667[_0xe0a9('0x34')],qs['fields'](_0x2d2870[_0xe0a9('0x36')][_0xe0a9('0x3b')]));_0x3df090[_0xe0a9('0x3a')]=_0x3df090['attributes'][_0xe0a9('0x3c')]?_0x3df090[_0xe0a9('0x3a')]:_0xf09667[_0xe0a9('0x34')];if(_0x2d2870['query'][_0xe0a9('0x45')]){_0x3df090[_0xe0a9('0x46')]=[{'all':!![]}];}_0x3df090=_['merge']({},_0x3df090,_0x2d2870[_0xe0a9('0x44')]);return db[_0xe0a9('0x31')][_0xe0a9('0x4c')](_0x3df090)[_0xe0a9('0x29')](handleEntityNotFound(_0x4ce97a,null))['then'](respondWithResult(_0x4ce97a,null))[_0xe0a9('0x49')](handleError(_0x4ce97a,null));};exports[_0xe0a9('0x4d')]=function(_0x5b5a21,_0x1c77d4){return db[_0xe0a9('0x31')][_0xe0a9('0x4d')](_0x5b5a21[_0xe0a9('0x4e')],{})['then'](respondWithResult(_0x1c77d4,0xc9))[_0xe0a9('0x49')](handleError(_0x1c77d4,null));};exports[_0xe0a9('0x28')]=function(_0x50de86,_0x52af7c){if(_0x50de86[_0xe0a9('0x4e')]['id']){delete _0x50de86['body']['id'];}return db['VoiceRecording'][_0xe0a9('0x4c')]({'where':{'id':_0x50de86[_0xe0a9('0x4b')]['id']}})[_0xe0a9('0x29')](handleEntityNotFound(_0x52af7c,null))[_0xe0a9('0x29')](saveUpdates(_0x50de86[_0xe0a9('0x4e')],null))[_0xe0a9('0x29')](respondWithResult(_0x52af7c,null))[_0xe0a9('0x49')](handleError(_0x52af7c,null));};exports[_0xe0a9('0x4f')]=function(_0x48a8c1,_0x5796bc){return db[_0xe0a9('0x31')][_0xe0a9('0x4f')]()[_0xe0a9('0x29')](respondWithResult(_0x5796bc,null))[_0xe0a9('0x49')](handleError(_0x5796bc,null));};exports[_0xe0a9('0x50')]=function(_0x3ef3ef,_0x157193,_0x40e498){var _0x254d9a=require(_0xe0a9('0x51'));var _0x23d1b7=![];var _0x2c612f={};if(_0x3ef3ef[_0xe0a9('0x36')][_0xe0a9('0x33')]&&_0x3ef3ef[_0xe0a9('0x36')]['type']==='uniqueid'){_0x2c612f['uniqueid']=_0x3ef3ef[_0xe0a9('0x4b')]['id'];}else{_0x2c612f['id']=_0x3ef3ef['params']['id'];}return db['VoiceRecording'][_0xe0a9('0x4c')]({'where':_0x2c612f,'attributes':['id',_0xe0a9('0x52')],'raw':!![]})[_0xe0a9('0x29')](handleEntityNotFound(_0x157193,null))['then'](function(_0x5413f5){if(_0x5413f5){var _0x3b45d5=_0x5413f5[_0xe0a9('0x52')];var _0x62d54c=util[_0xe0a9('0x35')](_0xe0a9('0x53'),_0x3b45d5);if(fs['existsSync'](_0x62d54c)){_0x23d1b7=!![];return _0x254d9a['decryptFile'](_0x62d54c,_0x3b45d5,config['secrets']['recording'])[_0xe0a9('0x29')](function(){return _0x5413f5;});}return _0x5413f5;}})[_0xe0a9('0x29')](function(_0x3b7190){if(_0x3b7190){var _0x5abd30=_0x3b7190[_0xe0a9('0x52')];if(!fs['existsSync'](_0x5abd30)){throw new db[(_0xe0a9('0x54'))]['ValidationError'](_0xe0a9('0x55'));}if(_0x3b7190[_0xe0a9('0x56')]){return _0x157193['download'](_0x5abd30,_0x3b7190[_0xe0a9('0x56')]+path[_0xe0a9('0x57')](_0x5abd30),function(){if(_0x23d1b7){fs[_0xe0a9('0x58')](_0x5abd30);}});}else{return _0x157193[_0xe0a9('0x50')](_0x5abd30,function(_0x4e1dd4){if(_0x23d1b7){fs['unlink'](_0x5abd30);}});}}})[_0xe0a9('0x49')](function(_0x69a0d7){if(_0x69a0d7[_0xe0a9('0x59')]==='VoiceRecording\x20not\x20found'){_0x157193['status'](0x194)['send']('Not\x20found');}else{return handleError(_0x157193,null);}});};exports['downloads']=function(_0x192a54,_0x21de99,_0x52379e){var _0x20b7c3=require(_0xe0a9('0x51'));var _0x3ab3d6=![];var _0x26ec56={'$and':[db[_0xe0a9('0x5a')][_0xe0a9('0x40')](db[_0xe0a9('0x5a')]['fn'](_0xe0a9('0x5b'),db[_0xe0a9('0x5a')]['col'](_0xe0a9('0x5c'))),_0x192a54['query']['token'])]};if(_0x192a54[_0xe0a9('0x36')][_0xe0a9('0x33')]&&_0x192a54[_0xe0a9('0x36')][_0xe0a9('0x33')]==='uniqueid'){_0x26ec56['$and'][_0xe0a9('0x5d')]({'uniqueid':_0x192a54[_0xe0a9('0x4b')]['id']});}else{_0x26ec56['$and'][_0xe0a9('0x5d')]({'id':_0x192a54[_0xe0a9('0x4b')]['id']});}return db['VoiceRecording'][_0xe0a9('0x4c')]({'where':_0x26ec56,'attributes':['id','value'],'raw':!![]})[_0xe0a9('0x29')](handleEntityNotFound(_0x21de99,null))[_0xe0a9('0x29')](function(_0x221bde){if(_0x221bde){var _0x45950b=util['format']('%s.cypher',_0x221bde[_0xe0a9('0x52')]);if(fs[_0xe0a9('0x5e')](_0x45950b)){_0x3ab3d6=!![];return _0x20b7c3[_0xe0a9('0x5f')](_0x45950b,_0x221bde['value'],config[_0xe0a9('0x60')][_0xe0a9('0x61')])[_0xe0a9('0x29')](function(){return _0x221bde;});}return _0x221bde;}})[_0xe0a9('0x29')](function(_0x29dd5a){if(_0x29dd5a){if(!fs[_0xe0a9('0x5e')](_0x29dd5a['value'])){throw new db[(_0xe0a9('0x54'))][(_0xe0a9('0x62'))](_0xe0a9('0x55'));}if(_0x29dd5a[_0xe0a9('0x56')]){return _0x21de99[_0xe0a9('0x50')](_0x29dd5a[_0xe0a9('0x52')],_0x29dd5a[_0xe0a9('0x56')]+path[_0xe0a9('0x57')](_0x29dd5a[_0xe0a9('0x52')]),function(){if(_0x3ab3d6){fs[_0xe0a9('0x58')](_0x29dd5a[_0xe0a9('0x52')]);}});}else{return _0x21de99[_0xe0a9('0x50')](_0x29dd5a[_0xe0a9('0x52')],function(_0x51945b){if(_0x3ab3d6){fs['unlink'](_0x29dd5a[_0xe0a9('0x52')]);}});}}})['catch'](handleError(_0x21de99,null));};exports[_0xe0a9('0x2a')]=function(_0x5c644a,_0x2a642b){return db['VoiceRecording'][_0xe0a9('0x4c')]({'where':{'id':_0x5c644a[_0xe0a9('0x4b')]['id']}})[_0xe0a9('0x29')](function(_0x48508f){if(_['isNil'](_0x48508f)){throw new ReferenceError('Entity\x20not\x20found');}return _0x48508f;})[_0xe0a9('0x29')](function(_0x12ea55){var _0x198a32=_0x12ea55[_0xe0a9('0x52')];logger['info']('cancellazione\x20fisica\x20documento\x20%s',_0x198a32);if(!_[_0xe0a9('0x63')](_0x12ea55[_0xe0a9('0x52')])&&fs[_0xe0a9('0x5e')](_0x198a32)){logger[_0xe0a9('0x64')](_0xe0a9('0x65')+_0x198a32+_0xe0a9('0x66'));fs[_0xe0a9('0x67')](_0x198a32);}_0x198a32=_0x198a32+_0xe0a9('0x68');if(!_['isNil'](_0x12ea55[_0xe0a9('0x52')])&&fs[_0xe0a9('0x5e')](_0x198a32)){logger[_0xe0a9('0x64')]('File:\x20\x22'+_0x198a32+_0xe0a9('0x66'));fs[_0xe0a9('0x67')](_0x198a32);}return _0x12ea55;})[_0xe0a9('0x29')](function(_0x232b62){if(!_0x232b62)throw new InternalError();return _0x232b62['destroy']();})[_0xe0a9('0x29')](function(){_0x2a642b[_0xe0a9('0x1f')](0xcc)['end']();})['catch'](handleError(_0x2a642b,null));};function getBucketslist(_0x2ba8b9,_0x4bd020,_0x23906d){return new Promise(function(_0x26380f,_0xede8e2){var _0x2c3081=new AWS['S3']({'accessKeyId':_0x4bd020,'secretAccessKey':_0x2ba8b9,'region':_0x23906d});_0x2c3081[_0xe0a9('0x69')]({},function(_0x10bb2c,_0x23ade8){if(_0x10bb2c){return _0xede8e2(_0x10bb2c);}else{return _0x26380f(_0x23ade8);}});});}function createBucket(_0x382c3d,_0x3f248d,_0x3aea3e,_0x20a2fb){return new Promise(function(_0x299b74,_0xe72c79){var _0x349493=new AWS['S3']({'accessKeyId':_0x3f248d,'secretAccessKey':_0x382c3d,'region':_0x3aea3e});_0x349493[_0xe0a9('0x6a')]({'Bucket':_0x20a2fb},function(_0x579b94,_0x35af5e){if(_0x579b94){return _0xe72c79(_0x579b94);}else{return _0x299b74(_0x35af5e);}});});}function uploadFile(_0x8c982c,_0x4df8e7,_0x77ce7c,_0x16be3d,_0x76e5a6,_0x47a122){return new Promise(function(_0x563dca,_0x132080){var _0x45c864=new AWS['S3']({'accessKeyId':_0x4df8e7,'secretAccessKey':_0x8c982c,'region':_0x77ce7c});_0x45c864[_0xe0a9('0x6b')]({'Bucket':_0x16be3d,'Key':_0x76e5a6,'Body':_0x47a122},function(_0x1e80b4,_0x5c657b){if(_0x1e80b4){return _0x132080(_0x1e80b4);}else{return _0x563dca(_0x5c657b);}});});}function startTranscribe(_0x1a434f,_0x40f57e,_0x5ee9e0,_0x4effd4,_0x333b02,_0x3d0c98){return new Promise(function(_0x59d418,_0x215c66){var _0x465733=new AWS[(_0xe0a9('0x6c'))]({'accessKeyId':_0x40f57e,'secretAccessKey':_0x1a434f,'region':_0x5ee9e0});_0x465733[_0xe0a9('0x6d')]({'TranscriptionJobName':_0x4effd4,'LanguageCode':_0x333b02,'Media':{'MediaFileUri':_0x3d0c98}},function(_0x2b5eca,_0x27e887){if(_0x2b5eca){return _0x215c66(_0x2b5eca);}else{return _0x59d418(_0x27e887);}});});}function transcribe(_0x3114c7,_0x580c20,_0x3f7aa8,_0x230dca,_0x2aeb58,_0x88eb29,_0x18ae0b){return new Promise(function(_0x5cf09d,_0x88137a){var _0x145239={};logger[_0xe0a9('0x64')](util[_0xe0a9('0x35')](_0xe0a9('0x6e'),_0x3114c7,_0x2aeb58));return uploadFile(_0x580c20,_0x3f7aa8,_0x230dca,_0x2aeb58,path[_0xe0a9('0x6f')](_0x88eb29),fs[_0xe0a9('0x70')](_0x88eb29))[_0xe0a9('0x29')](function(_0x24cca3){logger['info'](util[_0xe0a9('0x35')]('[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)',_0x3114c7,_0x2aeb58,_0x24cca3[_0xe0a9('0x71')]));_0x145239[_0xe0a9('0x72')]=_0x24cca3[_0xe0a9('0x73')];_0x145239[_0xe0a9('0x74')]=_0x24cca3[_0xe0a9('0x71')];logger[_0xe0a9('0x64')](util[_0xe0a9('0x35')](_0xe0a9('0x75'),_0x3114c7));return startTranscribe(_0x580c20,_0x3f7aa8,_0x230dca,uuidv4(),_0x18ae0b,_0x24cca3[_0xe0a9('0x71')]);})['then'](function(_0x1ee9ac){logger[_0xe0a9('0x64')](util[_0xe0a9('0x35')](_0xe0a9('0x76'),_0x3114c7,_0x1ee9ac[_0xe0a9('0x77')][_0xe0a9('0x78')]));_0x145239[_0xe0a9('0x79')]=_0x1ee9ac[_0xe0a9('0x77')]['TranscriptionJobName'];_0x145239[_0xe0a9('0x7a')]=_0x1ee9ac[_0xe0a9('0x77')][_0xe0a9('0x7b')];return _0x5cf09d(_0x145239);})[_0xe0a9('0x49')](function(_0x3bb0b8){return _0x88137a(_0x3bb0b8);});});}exports[_0xe0a9('0x7c')]=function(_0x487cd3,_0x495f9e,_0x3966ed){var _0x544c79;var _0x596b3a;var _0x1dfd8d;var _0x42ee6b=require('../../components/encryptor');return db[_0xe0a9('0x31')]['findOne']({'where':{'id':_0x487cd3[_0xe0a9('0x4b')]['id']}})[_0xe0a9('0x29')](function(_0x2c95d5){if(_0x2c95d5){var _0x2077fd=util[_0xe0a9('0x35')]('%s.cypher',_0x2c95d5[_0xe0a9('0x52')]);if(fs['existsSync'](_0x2077fd)){cypher=!![];return _0x42ee6b['decryptFile'](_0x2077fd,_0x2c95d5['value'],config[_0xe0a9('0x60')][_0xe0a9('0x61')])[_0xe0a9('0x29')](function(){return _0x2c95d5;});}return _0x2c95d5;}})[_0xe0a9('0x29')](function(_0xbd646c){if(!_0xbd646c){throw new db[(_0xe0a9('0x54'))][(_0xe0a9('0x62'))](_0xe0a9('0x7d'));}_0x596b3a=_0xbd646c;return db[_0xe0a9('0x7e')][_0xe0a9('0x7f')]({'where':{'id':0x1}});})['then'](handleEntityNotFound(_0x495f9e,null))[_0xe0a9('0x29')](function(_0x584587){if(_0x584587){_0x544c79=_0x584587;if(!_0x544c79[_0xe0a9('0x80')]||!_0x544c79[_0xe0a9('0x81')]||!_0x544c79[_0xe0a9('0x82')]||!_0x544c79[_0xe0a9('0x83')]||!_0x544c79['bucket']){throw new db[(_0xe0a9('0x54'))][(_0xe0a9('0x62'))](_0xe0a9('0x84'));}if(_0x487cd3['body'][_0xe0a9('0x85')]&&(!_0x544c79['sentiment']||!_0x544c79[_0xe0a9('0x86')]||!_0x544c79[_0xe0a9('0x87')]||!_0x544c79['language']||!_0x544c79[_0xe0a9('0x72')])){throw new db[(_0xe0a9('0x54'))][(_0xe0a9('0x62'))](_0xe0a9('0x88'));}return db[_0xe0a9('0x89')]['findOne']({'where':{'id':_0x544c79[_0xe0a9('0x81')]}});}})[_0xe0a9('0x29')](function(_0x38f569){if(!_0x38f569){throw new db['Sequelize'][(_0xe0a9('0x62'))](_0xe0a9('0x8a'));}if(!_0x38f569[_0xe0a9('0x8b')]||!_0x38f569['data2']){throw new db[(_0xe0a9('0x54'))]['ValidationError'](_0xe0a9('0x8c'));}_0x1dfd8d=_0x38f569;return getBucketslist(_0x1dfd8d[_0xe0a9('0x8b')],_0x1dfd8d[_0xe0a9('0x8d')],_0x544c79[_0xe0a9('0x82')]);})[_0xe0a9('0x29')](function(_0x5dee19){if(_0x5dee19&&_0x5dee19['Buckets']){var _0x2adde8=_[_0xe0a9('0x4c')](_0x5dee19[_0xe0a9('0x8e')],function(_0x13e483){return _0x13e483[_0xe0a9('0x8f')]===_0x544c79[_0xe0a9('0x72')];});if(!_0x2adde8){logger[_0xe0a9('0x64')](util['format'](_0xe0a9('0x90'),_0x487cd3[_0xe0a9('0x4b')]['id'],_0x544c79[_0xe0a9('0x72')]));return createBucket(_0x1dfd8d[_0xe0a9('0x8b')],_0x1dfd8d[_0xe0a9('0x8d')],_0x544c79[_0xe0a9('0x82')],_0x544c79[_0xe0a9('0x72')]);}logger[_0xe0a9('0x64')](util[_0xe0a9('0x35')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available',_0x487cd3[_0xe0a9('0x4b')]['id'],_0x544c79[_0xe0a9('0x72')]));return;}})[_0xe0a9('0x29')](function(_0x372358){if(_0x596b3a[_0xe0a9('0x7a')]===_0xe0a9('0x91')){return transcribe(_0x487cd3[_0xe0a9('0x4b')]['id'],_0x1dfd8d[_0xe0a9('0x8b')],_0x1dfd8d['data2'],_0x544c79[_0xe0a9('0x82')],_0x544c79[_0xe0a9('0x72')],_0x596b3a[_0xe0a9('0x52')],_0x544c79[_0xe0a9('0x83')]);}else{logger[_0xe0a9('0x64')](util['format']('[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested',_0x487cd3['params']['id']));return{'transcribeStatus':_0xe0a9('0x92')};}})[_0xe0a9('0x29')](function(_0x44bc68){if(_0x44bc68){_0x44bc68[_0xe0a9('0x93')]=_0x487cd3[_0xe0a9('0x4e')]['runSentiment'];return _0x596b3a[_0xe0a9('0x94')](_0x44bc68);}})[_0xe0a9('0x29')](respondWithResult(_0x495f9e,null))[_0xe0a9('0x49')](handleError(_0x495f9e,null));};function writeFile(_0xb48ed9,_0x33070b){return new Promise(function(_0x114e64,_0x18b5ef){fs[_0xe0a9('0x95')](_0x33070b,_0xb48ed9,function(_0x434cb3,_0x2bda7c){if(_0x434cb3){return _0x18b5ef(_0x434cb3);}else{return _0x114e64(_0x2bda7c);}});});}exports[_0xe0a9('0x96')]=function(_0x2ad50d,_0x6fcf37,_0x5c0aa0){return db[_0xe0a9('0x31')]['findOne']({'where':{'id':_0x2ad50d[_0xe0a9('0x4b')]['id']}})['then'](handleEntityNotFound(_0x6fcf37))[_0xe0a9('0x29')](function(_0x17b4f0){if(_0x17b4f0&&_0x17b4f0[_0xe0a9('0x97')]){var _0x2f836c=_0x17b4f0[_0xe0a9('0x97')];var _0x3422fe=config['root']+_0xe0a9('0x98')+_0x17b4f0['id']+'.txt';if(fs['existsSync'](_0x3422fe)){return _0x3422fe;}return writeFile(_0x2f836c,_0x3422fe)[_0xe0a9('0x29')](function(){return _0x3422fe;});}else{throw new db[(_0xe0a9('0x54'))][(_0xe0a9('0x62'))](_0xe0a9('0x99'));}})[_0xe0a9('0x29')](function(_0x664888){return _0x6fcf37['download'](_0x664888);})[_0xe0a9('0x49')](handleError(_0x6fcf37));};
\ No newline at end of file
+var _0xfac5=['../../mysqldb','status','end','json','limit','undefined','offset','set','Content-Range','apply','reject','then','destroy','sendStatus','error','stack','name','index','rawAttributes','type','key','model','map','format','keys','filters','query','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','options','VoiceRecording','count','findAll','catch','show','params','includeAll','find','create','body','describe','download','uniqueid','value','%s.cypher','existsSync','secrets','Sequelize','ValidationError','VoiceRecording\x20not\x20found','filename','extname','unlink','message','send','Not\x20found','../../components/encryptor','sequelize','MD5','col','token','$and','push','decryptFile','recording','isNil','Entity\x20not\x20found','info','File:\x20\x22','unlinkSync','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','listBuckets','createBucket','upload','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','bucket','Bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','Location','TranscriptionJob','TranscriptionJobName','transcribeStatus','TranscriptionJobStatus','runTranscribe','findOne','Setting','transcribeAccountId','transcribeRegion','language','Transcribe\x20not\x20configured','runSentiment','sentimentAccountId','sentimentRegion','data1','Cloud\x20Provider\x20not\x20configured','data2','Buckets','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','tempSentiment','writeFile','downloadTranscribe','fileText','/server/files/transcribes/transcribe_','.txt','Transcript\x20not\x20available','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','aws-sdk','uuid/v4','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x5494d7,_0x9c8267){var _0x24a327=function(_0x4fe9b8){while(--_0x4fe9b8){_0x5494d7['push'](_0x5494d7['shift']());}};_0x24a327(++_0x9c8267);}(_0xfac5,0x77));var _0x5fac=function(_0x42018d,_0x416a7f){_0x42018d=_0x42018d-0x0;var _0x4a1d13=_0xfac5[_0x42018d];return _0x4a1d13;};'use strict';var emlformat=require(_0x5fac('0x0'));var rimraf=require(_0x5fac('0x1'));var zipdir=require(_0x5fac('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x5fac('0x3'));var BPromise=require(_0x5fac('0x4'));var Mustache=require(_0x5fac('0x5'));var util=require(_0x5fac('0x6'));var path=require(_0x5fac('0x7'));var sox=require(_0x5fac('0x8'));var csv=require(_0x5fac('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5fac('0xa'));var _=require(_0x5fac('0xb'));var squel=require(_0x5fac('0xc'));var crypto=require('crypto');var jsforce=require(_0x5fac('0xd'));var deskjs=require(_0x5fac('0xe'));var toCsv=require(_0x5fac('0x9'));var querystring=require(_0x5fac('0xf'));var Papa=require('papaparse');var AWS=require(_0x5fac('0x10'));var uuidv4=require(_0x5fac('0x11'));var Redis=require(_0x5fac('0x12'));var authService=require(_0x5fac('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x5fac('0x14'));var hardwareService=require(_0x5fac('0x15'));var logger=require(_0x5fac('0x16'))(_0x5fac('0x17'));var utils=require(_0x5fac('0x18'));var config=require(_0x5fac('0x19'));var licenseUtil=require(_0x5fac('0x1a'));var db=require(_0x5fac('0x1b'))['db'];function respondWithStatusCode(_0xbeaaf2,_0x231030){_0x231030=_0x231030||0xcc;return function(_0x6ff7a6){if(_0x6ff7a6){return _0xbeaaf2['sendStatus'](_0x231030);}return _0xbeaaf2[_0x5fac('0x1c')](_0x231030)[_0x5fac('0x1d')]();};}function respondWithResult(_0x1298c4,_0x451d89){_0x451d89=_0x451d89||0xc8;return function(_0x36ac71){if(_0x36ac71){return _0x1298c4[_0x5fac('0x1c')](_0x451d89)[_0x5fac('0x1e')](_0x36ac71);}};}function respondWithFilteredResult(_0x5c058c,_0x257285){return function(_0x5a355b){if(_0x5a355b){var _0x2e9c37=typeof _0x257285['offset']==='undefined'&&typeof _0x257285[_0x5fac('0x1f')]===_0x5fac('0x20');var _0xdc9c7=_0x5a355b['count'];var _0x436de6=_0x2e9c37?0x0:_0x257285[_0x5fac('0x21')];var _0x3b2e45=_0x2e9c37?_0x5a355b['count']:_0x257285['offset']+_0x257285['limit'];var _0x3e6f2c;if(_0x3b2e45>=_0xdc9c7){_0x3b2e45=_0xdc9c7;_0x3e6f2c=0xc8;}else{_0x3e6f2c=0xce;}_0x5c058c['status'](_0x3e6f2c);return _0x5c058c[_0x5fac('0x22')](_0x5fac('0x23'),_0x436de6+'-'+_0x3b2e45+'/'+_0xdc9c7)[_0x5fac('0x1e')](_0x5a355b);}return null;};}function patchUpdates(_0x473f33){return function(_0xa5750a){try{jsonpatch[_0x5fac('0x24')](_0xa5750a,_0x473f33,!![]);}catch(_0x28c704){return BPromise[_0x5fac('0x25')](_0x28c704);}return _0xa5750a['save']();};}function saveUpdates(_0x123f4c,_0x197ae7){return function(_0x25dfd6){if(_0x25dfd6){return _0x25dfd6['update'](_0x123f4c)[_0x5fac('0x26')](function(_0x122494){return _0x122494;});}return null;};}function removeEntity(_0x1b67e3,_0x6e4f9){return function(_0x42a857){if(_0x42a857){return _0x42a857[_0x5fac('0x27')]()[_0x5fac('0x26')](function(){_0x1b67e3[_0x5fac('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x392596,_0x333d54){return function(_0x185aaa){if(!_0x185aaa){_0x392596[_0x5fac('0x28')](0x194);}return _0x185aaa;};}function handleError(_0x389e24,_0x4f09b9){_0x4f09b9=_0x4f09b9||0x1f4;return function(_0x18cc71){logger[_0x5fac('0x29')](_0x18cc71[_0x5fac('0x2a')]);if(_0x18cc71[_0x5fac('0x2b')]){delete _0x18cc71[_0x5fac('0x2b')];}_0x389e24['status'](_0x4f09b9)['send'](_0x18cc71);};}exports[_0x5fac('0x2c')]=function(_0x1a52e6,_0x4546e7){var _0x5602db={},_0x2804c3={},_0x227f23={'count':0x0,'rows':[]};var _0x1703ce=_['map'](db['VoiceRecording'][_0x5fac('0x2d')],function(_0x354092){return{'name':_0x354092['fieldName'],'type':_0x354092[_0x5fac('0x2e')][_0x5fac('0x2f')]};});_0x2804c3[_0x5fac('0x30')]=_['differenceBy'](_[_0x5fac('0x31')](_0x1703ce,_0x5fac('0x2b')),[_0x5fac('0x32')]);_0x2804c3['query']=_[_0x5fac('0x33')](_0x1a52e6['query']);_0x2804c3[_0x5fac('0x34')]=_['intersection'](_0x2804c3[_0x5fac('0x30')],_0x2804c3[_0x5fac('0x35')]);_0x5602db[_0x5fac('0x36')]=_[_0x5fac('0x37')](_0x2804c3[_0x5fac('0x30')],qs[_0x5fac('0x38')](_0x1a52e6[_0x5fac('0x35')][_0x5fac('0x38')]));_0x5602db[_0x5fac('0x36')]=_0x5602db['attributes'][_0x5fac('0x39')]?_0x5602db[_0x5fac('0x36')]:_0x2804c3[_0x5fac('0x30')];if(!_0x1a52e6['query'][_0x5fac('0x3a')]('nolimit')){_0x5602db['limit']=qs[_0x5fac('0x1f')](_0x1a52e6[_0x5fac('0x35')]['limit']);_0x5602db['offset']=qs['offset'](_0x1a52e6['query'][_0x5fac('0x21')]);}_0x5602db[_0x5fac('0x3b')]=qs['sort'](_0x1a52e6[_0x5fac('0x35')][_0x5fac('0x3c')]);_0x5602db[_0x5fac('0x3d')]=qs[_0x5fac('0x34')](_['pick'](_0x1a52e6[_0x5fac('0x35')],_0x2804c3[_0x5fac('0x34')]),_0x1703ce);if(_0x1a52e6[_0x5fac('0x35')][_0x5fac('0x3e')]){_0x5602db[_0x5fac('0x3d')]=_[_0x5fac('0x3f')](_0x5602db[_0x5fac('0x3d')],{'$or':_[_0x5fac('0x31')](_0x1703ce,function(_0x260053){if(_0x260053[_0x5fac('0x2e')]!==_0x5fac('0x40')){var _0xb934e8={};_0xb934e8[_0x260053['name']]={'$like':'%'+_0x1a52e6[_0x5fac('0x35')][_0x5fac('0x3e')]+'%'};return _0xb934e8;}})});}_0x5602db=_[_0x5fac('0x3f')]({},_0x5602db,_0x1a52e6[_0x5fac('0x41')]);var _0x3b71dc={'where':_0x5602db[_0x5fac('0x3d')]};return db[_0x5fac('0x42')]['count'](_0x3b71dc)[_0x5fac('0x26')](function(_0x505e3c){_0x227f23[_0x5fac('0x43')]=_0x505e3c;if(_0x1a52e6[_0x5fac('0x35')]['includeAll']){_0x5602db['include']=[{'all':!![]}];}return db[_0x5fac('0x42')][_0x5fac('0x44')](_0x5602db);})[_0x5fac('0x26')](function(_0xcc3758){_0x227f23['rows']=_0xcc3758;return _0x227f23;})[_0x5fac('0x26')](respondWithFilteredResult(_0x4546e7,_0x5602db))[_0x5fac('0x45')](handleError(_0x4546e7,null));};exports[_0x5fac('0x46')]=function(_0x35c141,_0x156806){var _0x178e82={'raw':![],'where':{'id':_0x35c141[_0x5fac('0x47')]['id']}},_0x18141e={};_0x18141e[_0x5fac('0x30')]=_[_0x5fac('0x33')](db[_0x5fac('0x42')][_0x5fac('0x2d')]);_0x18141e[_0x5fac('0x35')]=_[_0x5fac('0x33')](_0x35c141['query']);_0x18141e[_0x5fac('0x34')]=_[_0x5fac('0x37')](_0x18141e[_0x5fac('0x30')],_0x18141e[_0x5fac('0x35')]);_0x178e82['attributes']=_[_0x5fac('0x37')](_0x18141e[_0x5fac('0x30')],qs[_0x5fac('0x38')](_0x35c141[_0x5fac('0x35')][_0x5fac('0x38')]));_0x178e82[_0x5fac('0x36')]=_0x178e82['attributes'][_0x5fac('0x39')]?_0x178e82['attributes']:_0x18141e[_0x5fac('0x30')];if(_0x35c141['query'][_0x5fac('0x48')]){_0x178e82['include']=[{'all':!![]}];}_0x178e82=_[_0x5fac('0x3f')]({},_0x178e82,_0x35c141['options']);return db['VoiceRecording'][_0x5fac('0x49')](_0x178e82)[_0x5fac('0x26')](handleEntityNotFound(_0x156806,null))[_0x5fac('0x26')](respondWithResult(_0x156806,null))[_0x5fac('0x45')](handleError(_0x156806,null));};exports['create']=function(_0x13c52c,_0x1195e5){return db[_0x5fac('0x42')][_0x5fac('0x4a')](_0x13c52c['body'],{})[_0x5fac('0x26')](respondWithResult(_0x1195e5,0xc9))[_0x5fac('0x45')](handleError(_0x1195e5,null));};exports['update']=function(_0x416871,_0x38f32c){if(_0x416871['body']['id']){delete _0x416871[_0x5fac('0x4b')]['id'];}return db[_0x5fac('0x42')][_0x5fac('0x49')]({'where':{'id':_0x416871[_0x5fac('0x47')]['id']}})[_0x5fac('0x26')](handleEntityNotFound(_0x38f32c,null))[_0x5fac('0x26')](saveUpdates(_0x416871[_0x5fac('0x4b')],null))[_0x5fac('0x26')](respondWithResult(_0x38f32c,null))[_0x5fac('0x45')](handleError(_0x38f32c,null));};exports['describe']=function(_0xf59995,_0x55b7f1){return db[_0x5fac('0x42')][_0x5fac('0x4c')]()[_0x5fac('0x26')](respondWithResult(_0x55b7f1,null))[_0x5fac('0x45')](handleError(_0x55b7f1,null));};exports[_0x5fac('0x4d')]=function(_0x1c9e53,_0x36f88b,_0x5c84c0){var _0x40743c=require('../../components/encryptor');var _0x259b98=![];var _0x35d465={};if(_0x1c9e53[_0x5fac('0x35')][_0x5fac('0x2e')]&&_0x1c9e53[_0x5fac('0x35')]['type']==='uniqueid'){_0x35d465[_0x5fac('0x4e')]=_0x1c9e53[_0x5fac('0x47')]['id'];}else{_0x35d465['id']=_0x1c9e53[_0x5fac('0x47')]['id'];}return db[_0x5fac('0x42')]['find']({'where':_0x35d465,'attributes':['id',_0x5fac('0x4f')],'raw':!![]})[_0x5fac('0x26')](handleEntityNotFound(_0x36f88b,null))[_0x5fac('0x26')](function(_0x224b83){if(_0x224b83){var _0x8e9357=_0x224b83[_0x5fac('0x4f')];var _0x5e576c=util['format'](_0x5fac('0x50'),_0x8e9357);if(fs[_0x5fac('0x51')](_0x5e576c)){_0x259b98=!![];return _0x40743c['decryptFile'](_0x5e576c,_0x8e9357,config[_0x5fac('0x52')]['recording'])[_0x5fac('0x26')](function(){return _0x224b83;});}return _0x224b83;}})['then'](function(_0x49645b){if(_0x49645b){var _0x2f4bd7=_0x49645b[_0x5fac('0x4f')];if(!fs[_0x5fac('0x51')](_0x2f4bd7)){throw new db[(_0x5fac('0x53'))][(_0x5fac('0x54'))](_0x5fac('0x55'));}if(_0x49645b[_0x5fac('0x56')]){return _0x36f88b[_0x5fac('0x4d')](_0x2f4bd7,_0x49645b['filename']+path[_0x5fac('0x57')](_0x2f4bd7),function(){if(_0x259b98){fs['unlink'](_0x2f4bd7);}});}else{return _0x36f88b['download'](_0x2f4bd7,function(_0x574548){if(_0x259b98){fs[_0x5fac('0x58')](_0x2f4bd7);}});}}})[_0x5fac('0x45')](function(_0x15b7e0){if(_0x15b7e0[_0x5fac('0x59')]===_0x5fac('0x55')){_0x36f88b[_0x5fac('0x1c')](0x194)[_0x5fac('0x5a')](_0x5fac('0x5b'));}else{return handleError(_0x36f88b,null);}});};exports['downloads']=function(_0x1688b7,_0x19d982,_0x145413){var _0x499996=require(_0x5fac('0x5c'));var _0x2c5636=![];var _0x46eeca={'$and':[db[_0x5fac('0x5d')][_0x5fac('0x3d')](db['sequelize']['fn'](_0x5fac('0x5e'),db['sequelize'][_0x5fac('0x5f')](_0x5fac('0x4e'))),_0x1688b7[_0x5fac('0x35')][_0x5fac('0x60')])]};if(_0x1688b7[_0x5fac('0x35')][_0x5fac('0x2e')]&&_0x1688b7[_0x5fac('0x35')]['type']===_0x5fac('0x4e')){_0x46eeca[_0x5fac('0x61')][_0x5fac('0x62')]({'uniqueid':_0x1688b7[_0x5fac('0x47')]['id']});}else{_0x46eeca[_0x5fac('0x61')][_0x5fac('0x62')]({'id':_0x1688b7[_0x5fac('0x47')]['id']});}return db['VoiceRecording'][_0x5fac('0x49')]({'where':_0x46eeca,'attributes':['id',_0x5fac('0x4f')],'raw':!![]})[_0x5fac('0x26')](handleEntityNotFound(_0x19d982,null))['then'](function(_0x1069fc){if(_0x1069fc){var _0x16272a=util[_0x5fac('0x32')](_0x5fac('0x50'),_0x1069fc[_0x5fac('0x4f')]);if(fs[_0x5fac('0x51')](_0x16272a)){_0x2c5636=!![];return _0x499996[_0x5fac('0x63')](_0x16272a,_0x1069fc[_0x5fac('0x4f')],config[_0x5fac('0x52')][_0x5fac('0x64')])[_0x5fac('0x26')](function(){return _0x1069fc;});}return _0x1069fc;}})['then'](function(_0x4a5a6e){if(_0x4a5a6e){if(!fs[_0x5fac('0x51')](_0x4a5a6e[_0x5fac('0x4f')])){throw new db[(_0x5fac('0x53'))][(_0x5fac('0x54'))](_0x5fac('0x55'));}if(_0x4a5a6e[_0x5fac('0x56')]){return _0x19d982[_0x5fac('0x4d')](_0x4a5a6e[_0x5fac('0x4f')],_0x4a5a6e[_0x5fac('0x56')]+path[_0x5fac('0x57')](_0x4a5a6e[_0x5fac('0x4f')]),function(){if(_0x2c5636){fs['unlink'](_0x4a5a6e[_0x5fac('0x4f')]);}});}else{return _0x19d982[_0x5fac('0x4d')](_0x4a5a6e[_0x5fac('0x4f')],function(_0x409399){if(_0x2c5636){fs['unlink'](_0x4a5a6e[_0x5fac('0x4f')]);}});}}})['catch'](handleError(_0x19d982,null));};exports[_0x5fac('0x27')]=function(_0x561fe0,_0x407e98){return db[_0x5fac('0x42')]['find']({'where':{'id':_0x561fe0['params']['id']}})[_0x5fac('0x26')](function(_0x5ce884){if(_[_0x5fac('0x65')](_0x5ce884)){throw new ReferenceError(_0x5fac('0x66'));}return _0x5ce884;})['then'](function(_0x5d04e4){var _0x54b86f=_0x5d04e4[_0x5fac('0x4f')];logger['info']('cancellazione\x20fisica\x20documento\x20%s',_0x54b86f);if(!_['isNil'](_0x5d04e4[_0x5fac('0x4f')])&&fs[_0x5fac('0x51')](_0x54b86f)){logger[_0x5fac('0x67')](_0x5fac('0x68')+_0x54b86f+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x5fac('0x69')](_0x54b86f);}_0x54b86f=_0x54b86f+_0x5fac('0x6a');if(!_[_0x5fac('0x65')](_0x5d04e4[_0x5fac('0x4f')])&&fs[_0x5fac('0x51')](_0x54b86f)){logger[_0x5fac('0x67')](_0x5fac('0x68')+_0x54b86f+_0x5fac('0x6b'));fs[_0x5fac('0x69')](_0x54b86f);}return _0x5d04e4;})[_0x5fac('0x26')](function(_0x2ea0fc){if(!_0x2ea0fc)throw new InternalError();return _0x2ea0fc[_0x5fac('0x27')]();})[_0x5fac('0x26')](function(){_0x407e98[_0x5fac('0x1c')](0xcc)[_0x5fac('0x1d')]();})[_0x5fac('0x45')](handleError(_0x407e98,null));};function getBucketslist(_0x41a436,_0x26a6de,_0x57aa85){return new Promise(function(_0x1d8f3d,_0x459eee){var _0x930fac=new AWS['S3']({'accessKeyId':_0x26a6de,'secretAccessKey':_0x41a436,'region':_0x57aa85});_0x930fac[_0x5fac('0x6c')]({},function(_0x4cfb3b,_0x4d06e3){if(_0x4cfb3b){return _0x459eee(_0x4cfb3b);}else{return _0x1d8f3d(_0x4d06e3);}});});}function createBucket(_0x3ab875,_0x395017,_0x1dfc7f,_0x3c9558){return new Promise(function(_0x30afb0,_0xdeb716){var _0x20169c=new AWS['S3']({'accessKeyId':_0x395017,'secretAccessKey':_0x3ab875,'region':_0x1dfc7f});_0x20169c[_0x5fac('0x6d')]({'Bucket':_0x3c9558},function(_0x403204,_0x4231ba){if(_0x403204){return _0xdeb716(_0x403204);}else{return _0x30afb0(_0x4231ba);}});});}function uploadFile(_0x13ba90,_0xccb8df,_0x4586a,_0x1fd529,_0x13cae8,_0x41cce3){return new Promise(function(_0xab19f7,_0x385d71){var _0x18601=new AWS['S3']({'accessKeyId':_0xccb8df,'secretAccessKey':_0x13ba90,'region':_0x4586a});_0x18601[_0x5fac('0x6e')]({'Bucket':_0x1fd529,'Key':_0x13cae8,'Body':_0x41cce3},function(_0x5c743b,_0x2f97bf){if(_0x5c743b){return _0x385d71(_0x5c743b);}else{return _0xab19f7(_0x2f97bf);}});});}function startTranscribe(_0x11c964,_0x1459b4,_0xf83fb5,_0x1564de,_0x21ab0b,_0x224a06){return new Promise(function(_0xe59a20,_0x9169f1){var _0x205451=new AWS['TranscribeService']({'accessKeyId':_0x1459b4,'secretAccessKey':_0x11c964,'region':_0xf83fb5});_0x205451['startTranscriptionJob']({'TranscriptionJobName':_0x1564de,'LanguageCode':_0x21ab0b,'Media':{'MediaFileUri':_0x224a06}},function(_0x2ec15d,_0x4be0fa){if(_0x2ec15d){return _0x9169f1(_0x2ec15d);}else{return _0xe59a20(_0x4be0fa);}});});}function transcribe(_0x1fd3af,_0x21fd3d,_0x3eadc3,_0x3d336e,_0x15b23b,_0x2c3164,_0x4ad39d){return new Promise(function(_0x8c7a8d,_0x5765ed){var _0x2944d1={};logger[_0x5fac('0x67')](util[_0x5fac('0x32')](_0x5fac('0x6f'),_0x1fd3af,_0x15b23b));return uploadFile(_0x21fd3d,_0x3eadc3,_0x3d336e,_0x15b23b,path['basename'](_0x2c3164),fs['readFileSync'](_0x2c3164))[_0x5fac('0x26')](function(_0x4da337){logger[_0x5fac('0x67')](util[_0x5fac('0x32')](_0x5fac('0x70'),_0x1fd3af,_0x15b23b,_0x4da337['Location']));_0x2944d1[_0x5fac('0x71')]=_0x4da337[_0x5fac('0x72')];_0x2944d1[_0x5fac('0x73')]=_0x4da337['Location'];logger['info'](util[_0x5fac('0x32')](_0x5fac('0x74'),_0x1fd3af));return startTranscribe(_0x21fd3d,_0x3eadc3,_0x3d336e,uuidv4(),_0x4ad39d,_0x4da337[_0x5fac('0x75')]);})[_0x5fac('0x26')](function(_0xfddfac){logger['info'](util[_0x5fac('0x32')]('[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created',_0x1fd3af,_0xfddfac[_0x5fac('0x76')]['TranscriptionJobName']));_0x2944d1['transcribeName']=_0xfddfac[_0x5fac('0x76')][_0x5fac('0x77')];_0x2944d1[_0x5fac('0x78')]=_0xfddfac[_0x5fac('0x76')][_0x5fac('0x79')];return _0x8c7a8d(_0x2944d1);})[_0x5fac('0x45')](function(_0x1bda40){return _0x5765ed(_0x1bda40);});});}exports[_0x5fac('0x7a')]=function(_0x3fab5e,_0x522b03,_0x28b066){var _0x581ff3;var _0x29678c;var _0x29a22e;var _0x4795b3=require('../../components/encryptor');return db['VoiceRecording'][_0x5fac('0x7b')]({'where':{'id':_0x3fab5e[_0x5fac('0x47')]['id']}})[_0x5fac('0x26')](function(_0x374a7d){if(_0x374a7d){var _0x5e6c36=util[_0x5fac('0x32')](_0x5fac('0x50'),_0x374a7d[_0x5fac('0x4f')]);if(fs[_0x5fac('0x51')](_0x5e6c36)){cypher=!![];return _0x4795b3['decryptFile'](_0x5e6c36,_0x374a7d[_0x5fac('0x4f')],config['secrets'][_0x5fac('0x64')])[_0x5fac('0x26')](function(){return _0x374a7d;});}return _0x374a7d;}})[_0x5fac('0x26')](function(_0x556bd7){if(!_0x556bd7){throw new db[(_0x5fac('0x53'))][(_0x5fac('0x54'))]('Voice\x20Recording\x20not\x20found');}_0x29678c=_0x556bd7;return db[_0x5fac('0x7c')][_0x5fac('0x7b')]({'where':{'id':0x1}});})['then'](handleEntityNotFound(_0x522b03,null))[_0x5fac('0x26')](function(_0x411560){if(_0x411560){_0x581ff3=_0x411560;if(!_0x581ff3['transcribe']||!_0x581ff3[_0x5fac('0x7d')]||!_0x581ff3[_0x5fac('0x7e')]||!_0x581ff3[_0x5fac('0x7f')]||!_0x581ff3[_0x5fac('0x71')]){throw new db[(_0x5fac('0x53'))][(_0x5fac('0x54'))](_0x5fac('0x80'));}if(_0x3fab5e[_0x5fac('0x4b')][_0x5fac('0x81')]&&(!_0x581ff3['sentiment']||!_0x581ff3[_0x5fac('0x82')]||!_0x581ff3[_0x5fac('0x83')]||!_0x581ff3['language']||!_0x581ff3[_0x5fac('0x71')])){throw new db['Sequelize'][(_0x5fac('0x54'))]('Sentiment\x20Analysis\x20not\x20configured');}return db['CloudProvider'][_0x5fac('0x7b')]({'where':{'id':_0x581ff3[_0x5fac('0x7d')]}});}})[_0x5fac('0x26')](function(_0x55e455){if(!_0x55e455){throw new db['Sequelize'][(_0x5fac('0x54'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x55e455[_0x5fac('0x84')]||!_0x55e455['data2']){throw new db[(_0x5fac('0x53'))][(_0x5fac('0x54'))](_0x5fac('0x85'));}_0x29a22e=_0x55e455;return getBucketslist(_0x29a22e[_0x5fac('0x84')],_0x29a22e[_0x5fac('0x86')],_0x581ff3[_0x5fac('0x7e')]);})[_0x5fac('0x26')](function(_0x30cd84){if(_0x30cd84&&_0x30cd84[_0x5fac('0x87')]){var _0x52d986=_[_0x5fac('0x49')](_0x30cd84[_0x5fac('0x87')],function(_0x37ceb8){return _0x37ceb8['Name']===_0x581ff3[_0x5fac('0x71')];});if(!_0x52d986){logger[_0x5fac('0x67')](util[_0x5fac('0x32')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available',_0x3fab5e[_0x5fac('0x47')]['id'],_0x581ff3[_0x5fac('0x71')]));return createBucket(_0x29a22e[_0x5fac('0x84')],_0x29a22e[_0x5fac('0x86')],_0x581ff3['transcribeRegion'],_0x581ff3[_0x5fac('0x71')]);}logger[_0x5fac('0x67')](util[_0x5fac('0x32')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available',_0x3fab5e['params']['id'],_0x581ff3['bucket']));return;}})[_0x5fac('0x26')](function(_0x24619c){if(_0x29678c[_0x5fac('0x78')]===_0x5fac('0x88')){return transcribe(_0x3fab5e[_0x5fac('0x47')]['id'],_0x29a22e[_0x5fac('0x84')],_0x29a22e[_0x5fac('0x86')],_0x581ff3[_0x5fac('0x7e')],_0x581ff3[_0x5fac('0x71')],_0x29678c[_0x5fac('0x4f')],_0x581ff3[_0x5fac('0x7f')]);}else{logger[_0x5fac('0x67')](util['format'](_0x5fac('0x89'),_0x3fab5e[_0x5fac('0x47')]['id']));return{'transcribeStatus':_0x5fac('0x8a')};}})['then'](function(_0x5acc31){if(_0x5acc31){_0x5acc31[_0x5fac('0x8b')]=_0x3fab5e['body'][_0x5fac('0x81')];return _0x29678c['updateAttributes'](_0x5acc31);}})[_0x5fac('0x26')](respondWithResult(_0x522b03,null))[_0x5fac('0x45')](handleError(_0x522b03,null));};function writeFile(_0x34ede5,_0x2ce7b0){return new Promise(function(_0x1317a2,_0x45b858){fs[_0x5fac('0x8c')](_0x2ce7b0,_0x34ede5,function(_0xb3ef9a,_0x2793df){if(_0xb3ef9a){return _0x45b858(_0xb3ef9a);}else{return _0x1317a2(_0x2793df);}});});}exports[_0x5fac('0x8d')]=function(_0x447ef0,_0x4daaac,_0x59a8fe){return db[_0x5fac('0x42')][_0x5fac('0x7b')]({'where':{'id':_0x447ef0[_0x5fac('0x47')]['id']}})['then'](handleEntityNotFound(_0x4daaac))[_0x5fac('0x26')](function(_0x42d523){if(_0x42d523&&_0x42d523[_0x5fac('0x8e')]){var _0x2c1f89=_0x42d523['fileText'];var _0x25ba17=config['root']+_0x5fac('0x8f')+_0x42d523['id']+_0x5fac('0x90');if(fs['existsSync'](_0x25ba17)){return _0x25ba17;}return writeFile(_0x2c1f89,_0x25ba17)[_0x5fac('0x26')](function(){return _0x25ba17;});}else{throw new db[(_0x5fac('0x53'))][(_0x5fac('0x54'))](_0x5fac('0x91'));}})[_0x5fac('0x26')](function(_0x9f647e){return _0x4daaac[_0x5fac('0x4d')](_0x9f647e);})[_0x5fac('0x45')](handleError(_0x4daaac));};
\ No newline at end of file
index 5d3b29c..b3457b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd8f=['lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./voiceRecording.attributes','exports','define','VoiceRecording','voice_recordings','uniqueid'];(function(_0x555c29,_0x647d65){var _0x35ffe6=function(_0xda439c){while(--_0xda439c){_0x555c29['push'](_0x555c29['shift']());}};_0x35ffe6(++_0x647d65);}(_0xdd8f,0x1ad));var _0xfdd8=function(_0x5100cb,_0x4ac321){_0x5100cb=_0x5100cb-0x0;var _0xa8effb=_0xdd8f[_0x5100cb];return _0xa8effb;};'use strict';var _=require(_0xfdd8('0x0'));var util=require(_0xfdd8('0x1'));var logger=require(_0xfdd8('0x2'))('api');var moment=require('moment');var BPromise=require(_0xfdd8('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfdd8('0x4'));var rimraf=require(_0xfdd8('0x5'));var config=require(_0xfdd8('0x6'));var attributes=require(_0xfdd8('0x7'));module[_0xfdd8('0x8')]=function(_0x4a7848,_0x5bc9dd){return _0x4a7848[_0xfdd8('0x9')](_0xfdd8('0xa'),attributes,{'tableName':_0xfdd8('0xb'),'paranoid':![],'indexes':[{'name':_0xfdd8('0xc'),'fields':[_0xfdd8('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe2cf=['./voiceRecording.attributes','exports','voice_recordings','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf'];(function(_0x363ef8,_0x4ecb1a){var _0x148822=function(_0x232634){while(--_0x232634){_0x363ef8['push'](_0x363ef8['shift']());}};_0x148822(++_0x4ecb1a);}(_0xe2cf,0x14e));var _0xfe2c=function(_0x1a697e,_0x130466){_0x1a697e=_0x1a697e-0x0;var _0x40e871=_0xe2cf[_0x1a697e];return _0x40e871;};'use strict';var _=require(_0xfe2c('0x0'));var util=require(_0xfe2c('0x1'));var logger=require(_0xfe2c('0x2'))('api');var moment=require(_0xfe2c('0x3'));var BPromise=require(_0xfe2c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfe2c('0x5'));var rimraf=require(_0xfe2c('0x6'));var config=require('../../config/environment');var attributes=require(_0xfe2c('0x7'));module[_0xfe2c('0x8')]=function(_0x5c6c01,_0x336936){return _0x5c6c01['define']('VoiceRecording',attributes,{'tableName':_0xfe2c('0x9'),'paranoid':![],'indexes':[{'name':_0xfe2c('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 8f310fa..572596e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7096=['raw','where','attributes','limit','CreateVoiceRecording','../../components/encryptor','findOne','create','existsSync','format','encryptFile','value','secrets','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','UpdateVoiceRecording','VoiceRecording','body','options'];(function(_0x23a072,_0x116a36){var _0x1d0284=function(_0x15c12a){while(--_0x15c12a){_0x23a072['push'](_0x23a072['shift']());}};_0x1d0284(++_0x116a36);}(_0x7096,0x10c));var _0x6709=function(_0x550d12,_0x5384bd){_0x550d12=_0x550d12-0x0;var _0x12103d=_0x7096[_0x550d12];return _0x12103d;};'use strict';var _=require('lodash');var util=require(_0x6709('0x0'));var moment=require('moment');var BPromise=require(_0x6709('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6709('0x2'));var db=require(_0x6709('0x3'))['db'];var utils=require(_0x6709('0x4'));var logger=require(_0x6709('0x5'))(_0x6709('0x6'));var config=require(_0x6709('0x7'));var jayson=require(_0x6709('0x8'));var client=jayson[_0x6709('0x9')][_0x6709('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3e2223,_0x11ad23,_0x985814){return new BPromise(function(_0x30147f,_0x513ab6){return client['request'](_0x3e2223,_0x985814)[_0x6709('0xb')](function(_0x2d8c0b){logger[_0x6709('0xc')](_0x6709('0xd'),_0x11ad23,_0x6709('0xe'));logger[_0x6709('0xf')]('VoiceRecording,\x20%s,\x20%s,\x20%s',_0x11ad23,'request\x20sent',JSON[_0x6709('0x10')](_0x2d8c0b));if(_0x2d8c0b[_0x6709('0x11')]){if(_0x2d8c0b[_0x6709('0x11')][_0x6709('0x12')]===0x1f4){logger[_0x6709('0x11')](_0x6709('0xd'),_0x11ad23,_0x2d8c0b[_0x6709('0x11')][_0x6709('0x13')]);return _0x513ab6(_0x2d8c0b['error'][_0x6709('0x13')]);}logger[_0x6709('0x11')](_0x6709('0xd'),_0x11ad23,_0x2d8c0b[_0x6709('0x11')]['message']);return _0x30147f(_0x2d8c0b[_0x6709('0x11')]['message']);}else{logger[_0x6709('0xc')]('VoiceRecording,\x20%s,\x20%s',_0x11ad23,_0x6709('0xe'));_0x30147f(_0x2d8c0b[_0x6709('0x14')][_0x6709('0x13')]);}})[_0x6709('0x15')](function(_0x4cab30){logger['error']('VoiceRecording,\x20%s,\x20%s',_0x11ad23,_0x4cab30);_0x513ab6(_0x4cab30);});});}exports[_0x6709('0x16')]=function(_0x235a54){var _0x4a732e=this;return new Promise(function(_0x9c1fd8,_0x166c97){return db[_0x6709('0x17')]['update'](_0x235a54[_0x6709('0x18')],{'raw':_0x235a54[_0x6709('0x19')]?_0x235a54[_0x6709('0x19')][_0x6709('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x235a54['options']?_0x235a54[_0x6709('0x19')][_0x6709('0x1b')]||null:null,'attributes':_0x235a54[_0x6709('0x19')]?_0x235a54[_0x6709('0x19')][_0x6709('0x1c')]||null:null,'limit':_0x235a54[_0x6709('0x19')]?_0x235a54[_0x6709('0x19')][_0x6709('0x1d')]||null:null})[_0x6709('0xb')](function(_0x1c5153){logger[_0x6709('0xc')](_0x6709('0x16'),_0x235a54);logger['debug'](_0x6709('0x16'),_0x235a54,JSON[_0x6709('0x10')](_0x1c5153));_0x9c1fd8(_0x1c5153);})[_0x6709('0x15')](function(_0x5c7982){logger[_0x6709('0x11')](_0x6709('0x16'),_0x5c7982[_0x6709('0x13')],_0x235a54);_0x166c97(_0x4a732e[_0x6709('0x11')](0x1f4,_0x5c7982['message']));});});};exports[_0x6709('0x1e')]=function(_0x3076fe){var _0x50f7d6=this;return new Promise(function(_0x585073,_0x39f6a9){var _0x5dbb87=require(_0x6709('0x1f'));var _0x2499a2;return db['Setting'][_0x6709('0x20')]({'attributes':['id','callRecordingEncryption'],'where':{'id':0x1},'raw':!![]})[_0x6709('0xb')](function(_0x3cd555){_0x2499a2=_0x3cd555;return db['VoiceRecording'][_0x6709('0x21')](_0x3076fe['body']);})[_0x6709('0xb')](function(_0x388aee){if(_0x2499a2['callRecordingEncryption']&&fs[_0x6709('0x22')](_0x388aee['value'])){var _0x138318=util[_0x6709('0x23')]('%s.cypher',_0x388aee['value']);return _0x5dbb87[_0x6709('0x24')](_0x388aee[_0x6709('0x25')],_0x138318,config[_0x6709('0x26')][_0x6709('0x27')])[_0x6709('0xb')](function(){fs[_0x6709('0x28')](_0x388aee[_0x6709('0x25')]);logger[_0x6709('0xc')](_0x6709('0x29'));return _0x388aee;});}return _0x388aee;})['then'](function(_0x3d9501){logger[_0x6709('0xc')](_0x6709('0x1e'),_0x3076fe);logger[_0x6709('0xf')]('CreateVoiceRecording',_0x3076fe,JSON[_0x6709('0x10')](_0x3d9501));_0x585073(_0x3d9501);})[_0x6709('0x15')](function(_0x124e01){logger[_0x6709('0x11')]('CreateVoiceRecording',_0x124e01[_0x6709('0x13')],_0x3076fe);_0x39f6a9(_0x50f7d6[_0x6709('0x11')](0x1f4,_0x124e01['message']));});});};
\ No newline at end of file
+var _0x47c5=['secrets','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','CreateVoiceRecording','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','VoiceRecording','update','body','options','raw','where','attributes','limit','UpdateVoiceRecording','findOne','callRecordingEncryption','existsSync','value','format','%s.cypher'];(function(_0x521ee4,_0x2aba99){var _0x1a0a12=function(_0x3540c2){while(--_0x3540c2){_0x521ee4['push'](_0x521ee4['shift']());}};_0x1a0a12(++_0x2aba99);}(_0x47c5,0x165));var _0x547c=function(_0x5235a7,_0x3a065b){_0x5235a7=_0x5235a7-0x0;var _0x463bbf=_0x47c5[_0x5235a7];return _0x463bbf;};'use strict';var _=require(_0x547c('0x0'));var util=require(_0x547c('0x1'));var moment=require(_0x547c('0x2'));var BPromise=require(_0x547c('0x3'));var rs=require(_0x547c('0x4'));var fs=require('fs');var Redis=require(_0x547c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x547c('0x6'));var logger=require(_0x547c('0x7'))('rpc');var config=require(_0x547c('0x8'));var jayson=require(_0x547c('0x9'));var client=jayson['client'][_0x547c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x439f25,_0x381f2e,_0x10a334){return new BPromise(function(_0x12fb7d,_0x4ef079){return client[_0x547c('0xb')](_0x439f25,_0x10a334)[_0x547c('0xc')](function(_0x10dec9){logger[_0x547c('0xd')](_0x547c('0xe'),_0x381f2e,_0x547c('0xf'));logger[_0x547c('0x10')](_0x547c('0x11'),_0x381f2e,_0x547c('0xf'),JSON[_0x547c('0x12')](_0x10dec9));if(_0x10dec9[_0x547c('0x13')]){if(_0x10dec9['error'][_0x547c('0x14')]===0x1f4){logger[_0x547c('0x13')]('VoiceRecording,\x20%s,\x20%s',_0x381f2e,_0x10dec9[_0x547c('0x13')][_0x547c('0x15')]);return _0x4ef079(_0x10dec9[_0x547c('0x13')][_0x547c('0x15')]);}logger[_0x547c('0x13')](_0x547c('0xe'),_0x381f2e,_0x10dec9[_0x547c('0x13')][_0x547c('0x15')]);return _0x12fb7d(_0x10dec9[_0x547c('0x13')][_0x547c('0x15')]);}else{logger[_0x547c('0xd')](_0x547c('0xe'),_0x381f2e,_0x547c('0xf'));_0x12fb7d(_0x10dec9[_0x547c('0x16')][_0x547c('0x15')]);}})[_0x547c('0x17')](function(_0x39498d){logger[_0x547c('0x13')]('VoiceRecording,\x20%s,\x20%s',_0x381f2e,_0x39498d);_0x4ef079(_0x39498d);});});}exports['UpdateVoiceRecording']=function(_0x23fa9e){var _0x199e4f=this;return new Promise(function(_0xeb059e,_0x4a8901){return db[_0x547c('0x18')][_0x547c('0x19')](_0x23fa9e[_0x547c('0x1a')],{'raw':_0x23fa9e['options']?_0x23fa9e[_0x547c('0x1b')][_0x547c('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x23fa9e['options']?_0x23fa9e['options'][_0x547c('0x1d')]||null:null,'attributes':_0x23fa9e[_0x547c('0x1b')]?_0x23fa9e['options'][_0x547c('0x1e')]||null:null,'limit':_0x23fa9e[_0x547c('0x1b')]?_0x23fa9e['options'][_0x547c('0x1f')]||null:null})[_0x547c('0xc')](function(_0x436e67){logger['info'](_0x547c('0x20'),_0x23fa9e);logger[_0x547c('0x10')](_0x547c('0x20'),_0x23fa9e,JSON[_0x547c('0x12')](_0x436e67));_0xeb059e(_0x436e67);})[_0x547c('0x17')](function(_0x2663bc){logger[_0x547c('0x13')](_0x547c('0x20'),_0x2663bc['message'],_0x23fa9e);_0x4a8901(_0x199e4f[_0x547c('0x13')](0x1f4,_0x2663bc['message']));});});};exports['CreateVoiceRecording']=function(_0x4855fd){var _0x478f04=this;return new Promise(function(_0x2c725d,_0x4c5256){var _0x93985c=require('../../components/encryptor');var _0x3ea493;return db['Setting'][_0x547c('0x21')]({'attributes':['id',_0x547c('0x22')],'where':{'id':0x1},'raw':!![]})[_0x547c('0xc')](function(_0x30a96c){_0x3ea493=_0x30a96c;return db[_0x547c('0x18')]['create'](_0x4855fd['body']);})[_0x547c('0xc')](function(_0x54de6f){if(_0x3ea493[_0x547c('0x22')]&&fs[_0x547c('0x23')](_0x54de6f[_0x547c('0x24')])){var _0x1695be=util[_0x547c('0x25')](_0x547c('0x26'),_0x54de6f[_0x547c('0x24')]);return _0x93985c['encryptFile'](_0x54de6f['value'],_0x1695be,config[_0x547c('0x27')][_0x547c('0x28')])[_0x547c('0xc')](function(){fs[_0x547c('0x29')](_0x54de6f[_0x547c('0x24')]);logger[_0x547c('0xd')](_0x547c('0x2a'));return _0x54de6f;});}return _0x54de6f;})[_0x547c('0xc')](function(_0x378bac){logger[_0x547c('0xd')](_0x547c('0x2b'),_0x4855fd);logger[_0x547c('0x10')](_0x547c('0x2b'),_0x4855fd,JSON[_0x547c('0x12')](_0x378bac));_0x2c725d(_0x378bac);})['catch'](function(_0x3afc28){logger['error']('CreateVoiceRecording',_0x3afc28['message'],_0x4855fd);_0x4c5256(_0x478f04[_0x547c('0x13')](0x1f4,_0x3afc28[_0x547c('0x15')]));});});};
\ No newline at end of file
index bfbb582..8fe5f98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcc4=['/:id','show','post','create','put','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','./voiceTransferReport.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x5ae339,_0x3eb51f){var _0x33d20e=function(_0x4c3d31){while(--_0x4c3d31){_0x5ae339['push'](_0x5ae339['shift']());}};_0x33d20e(++_0x3eb51f);}(_0xbcc4,0xd7));var _0x4bcc=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0xbcc4[_0x4fc9e6];return _0x551d28;};'use strict';var multer=require(_0x4bcc('0x0'));var util=require(_0x4bcc('0x1'));var path=require(_0x4bcc('0x2'));var timeout=require(_0x4bcc('0x3'));var express=require('express');var router=express[_0x4bcc('0x4')]();var fs_extra=require(_0x4bcc('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x4bcc('0x6'));var config=require('../../config/environment');var controller=require(_0x4bcc('0x7'));router[_0x4bcc('0x8')]('/',auth[_0x4bcc('0x9')](),controller[_0x4bcc('0xa')]);router[_0x4bcc('0x8')](_0x4bcc('0xb'),auth[_0x4bcc('0x9')](),controller[_0x4bcc('0xc')]);router[_0x4bcc('0x8')](_0x4bcc('0xd'),auth[_0x4bcc('0x9')](),controller[_0x4bcc('0xe')]);router[_0x4bcc('0xf')]('/',auth[_0x4bcc('0x9')](),controller[_0x4bcc('0x10')]);router[_0x4bcc('0x11')](_0x4bcc('0xd'),auth[_0x4bcc('0x9')](),controller['update']);router['delete']('/:id',auth[_0x4bcc('0x9')](),controller[_0x4bcc('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xd529=['./voiceTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','create','put','update','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x3910ac,_0x3c54f9){var _0x4e8401=function(_0x55f1cc){while(--_0x55f1cc){_0x3910ac['push'](_0x3910ac['shift']());}};_0x4e8401(++_0x3c54f9);}(_0xd529,0x19d));var _0x9d52=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0xd529[_0xfae23b];return _0x200640;};'use strict';var multer=require(_0x9d52('0x0'));var util=require('util');var path=require(_0x9d52('0x1'));var timeout=require(_0x9d52('0x2'));var express=require(_0x9d52('0x3'));var router=express[_0x9d52('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x9d52('0x5'));var interaction=require(_0x9d52('0x6'));var config=require('../../config/environment');var controller=require(_0x9d52('0x7'));router[_0x9d52('0x8')]('/',auth[_0x9d52('0x9')](),controller[_0x9d52('0xa')]);router['get'](_0x9d52('0xb'),auth[_0x9d52('0x9')](),controller[_0x9d52('0xc')]);router['get'](_0x9d52('0xd'),auth['isAuthenticated'](),controller[_0x9d52('0xe')]);router['post']('/',auth[_0x9d52('0x9')](),controller[_0x9d52('0xf')]);router[_0x9d52('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x9d52('0x11')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x9d52('0x12')]);module[_0x9d52('0x13')]=router;
\ No newline at end of file
index 99ed0d2..6537ad3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f46=['exports','blind','attended','STRING','ENUM','Yes','moment'];(function(_0x48adf9,_0x145a2b){var _0xb2bce5=function(_0x4f52bc){while(--_0x4f52bc){_0x48adf9['push'](_0x48adf9['shift']());}};_0xb2bce5(++_0x145a2b);}(_0x8f46,0x195));var _0x68f4=function(_0x26d6f2,_0xf0cab9){_0x26d6f2=_0x26d6f2-0x0;var _0x55e9b4=_0x8f46[_0x26d6f2];return _0x55e9b4;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x68f4('0x0'));module[_0x68f4('0x1')]={'type':{'type':Sequelize['ENUM'](_0x68f4('0x2'),_0x68f4('0x3'))},'result':{'type':Sequelize[_0x68f4('0x4')]},'transfererchannel':{'type':Sequelize[_0x68f4('0x4')]},'transferercalleridnum':{'type':Sequelize[_0x68f4('0x4')]},'transferercalleridname':{'type':Sequelize['STRING']},'transfererconnectedlinenum':{'type':Sequelize[_0x68f4('0x4')]},'transfererconnectedlinename':{'type':Sequelize[_0x68f4('0x4')]},'transfereraccountcode':{'type':Sequelize['STRING']},'transferercontext':{'type':Sequelize[_0x68f4('0x4')]},'transfererexten':{'type':Sequelize[_0x68f4('0x4')]},'transfererlinkedid':{'type':Sequelize[_0x68f4('0x4')]},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize['STRING']},'transfereecalleridname':{'type':Sequelize[_0x68f4('0x4')]},'transfereeconnectedlinenum':{'type':Sequelize[_0x68f4('0x4')]},'transfereeconnectedlinename':{'type':Sequelize[_0x68f4('0x4')]},'transfereeaccountcode':{'type':Sequelize[_0x68f4('0x4')]},'transfereecontext':{'type':Sequelize[_0x68f4('0x4')]},'transfereeexten':{'type':Sequelize['STRING']},'transfereelinkedid':{'type':Sequelize[_0x68f4('0x4')]},'isexternal':{'type':Sequelize[_0x68f4('0x5')](_0x68f4('0x6'),'No')},'context':{'type':Sequelize[_0x68f4('0x4')]},'extension':{'type':Sequelize[_0x68f4('0x4')]}};
\ No newline at end of file
+var _0xf102=['STRING','Yes','sequelize','moment','ENUM','blind','attended'];(function(_0x30033a,_0x5ce4a6){var _0x5e3518=function(_0x11494a){while(--_0x11494a){_0x30033a['push'](_0x30033a['shift']());}};_0x5e3518(++_0x5ce4a6);}(_0xf102,0x10c));var _0x2f10=function(_0x5d4f12,_0x11e67c){_0x5d4f12=_0x5d4f12-0x0;var _0x4eb577=_0xf102[_0x5d4f12];return _0x4eb577;};'use strict';var Sequelize=require(_0x2f10('0x0'));var moment=require(_0x2f10('0x1'));module['exports']={'type':{'type':Sequelize[_0x2f10('0x2')](_0x2f10('0x3'),_0x2f10('0x4'))},'result':{'type':Sequelize[_0x2f10('0x5')]},'transfererchannel':{'type':Sequelize[_0x2f10('0x5')]},'transferercalleridnum':{'type':Sequelize[_0x2f10('0x5')]},'transferercalleridname':{'type':Sequelize[_0x2f10('0x5')]},'transfererconnectedlinenum':{'type':Sequelize[_0x2f10('0x5')]},'transfererconnectedlinename':{'type':Sequelize[_0x2f10('0x5')]},'transfereraccountcode':{'type':Sequelize[_0x2f10('0x5')]},'transferercontext':{'type':Sequelize[_0x2f10('0x5')]},'transfererexten':{'type':Sequelize[_0x2f10('0x5')]},'transfererlinkedid':{'type':Sequelize[_0x2f10('0x5')]},'transfereechannel':{'type':Sequelize[_0x2f10('0x5')]},'transfereecalleridnum':{'type':Sequelize['STRING']},'transfereecalleridname':{'type':Sequelize[_0x2f10('0x5')]},'transfereeconnectedlinenum':{'type':Sequelize[_0x2f10('0x5')]},'transfereeconnectedlinename':{'type':Sequelize[_0x2f10('0x5')]},'transfereeaccountcode':{'type':Sequelize['STRING']},'transfereecontext':{'type':Sequelize['STRING']},'transfereeexten':{'type':Sequelize[_0x2f10('0x5')]},'transfereelinkedid':{'type':Sequelize['STRING']},'isexternal':{'type':Sequelize[_0x2f10('0x2')](_0x2f10('0x6'),'No')},'context':{'type':Sequelize[_0x2f10('0x5')]},'extension':{'type':Sequelize[_0x2f10('0x5')]}};
\ No newline at end of file
index c17597b..ebb4255 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3061=['squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','apply','reject','update','then','destroy','stack','name','send','index','map','rawAttributes','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','VoiceTransferReport','includeAll','include','findAll','catch','show','params','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','lodash'];(function(_0x66fd68,_0x4f7c2d){var _0x33433d=function(_0x5d8eeb){while(--_0x5d8eeb){_0x66fd68['push'](_0x66fd68['shift']());}};_0x33433d(++_0x4f7c2d);}(_0x3061,0x119));var _0x1306=function(_0x1b6186,_0x1ec7f2){_0x1b6186=_0x1b6186-0x0;var _0x186121=_0x3061[_0x1b6186];return _0x186121;};'use strict';var emlformat=require(_0x1306('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1306('0x1'));var jsonpatch=require(_0x1306('0x2'));var rp=require(_0x1306('0x3'));var moment=require(_0x1306('0x4'));var BPromise=require(_0x1306('0x5'));var Mustache=require(_0x1306('0x6'));var util=require(_0x1306('0x7'));var path=require(_0x1306('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x1306('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1306('0xa'));var squel=require(_0x1306('0xb'));var crypto=require(_0x1306('0xc'));var jsforce=require(_0x1306('0xd'));var deskjs=require(_0x1306('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x1306('0xf'));var Redis=require('ioredis');var authService=require(_0x1306('0x10'));var qs=require(_0x1306('0x11'));var as=require(_0x1306('0x12'));var hardwareService=require(_0x1306('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x1306('0x14'));var config=require(_0x1306('0x15'));var licenseUtil=require(_0x1306('0x16'));var db=require(_0x1306('0x17'))['db'];function respondWithStatusCode(_0x267b63,_0x179214){_0x179214=_0x179214||0xcc;return function(_0x5e3b4c){if(_0x5e3b4c){return _0x267b63[_0x1306('0x18')](_0x179214);}return _0x267b63[_0x1306('0x19')](_0x179214)[_0x1306('0x1a')]();};}function respondWithResult(_0x5a6dd2,_0xf59852){_0xf59852=_0xf59852||0xc8;return function(_0x2f44cd){if(_0x2f44cd){return _0x5a6dd2[_0x1306('0x19')](_0xf59852)[_0x1306('0x1b')](_0x2f44cd);}};}function respondWithFilteredResult(_0x5bdaac,_0x29171e){return function(_0x661a08){if(_0x661a08){var _0x3fc294=typeof _0x29171e['offset']===_0x1306('0x1c')&&typeof _0x29171e[_0x1306('0x1d')]==='undefined';var _0x254596=_0x661a08['count'];var _0x316838=_0x3fc294?0x0:_0x29171e[_0x1306('0x1e')];var _0x5748e3=_0x3fc294?_0x661a08['count']:_0x29171e[_0x1306('0x1e')]+_0x29171e[_0x1306('0x1d')];var _0x54bbfc;if(_0x5748e3>=_0x254596){_0x5748e3=_0x254596;_0x54bbfc=0xc8;}else{_0x54bbfc=0xce;}_0x5bdaac[_0x1306('0x19')](_0x54bbfc);return _0x5bdaac['set']('Content-Range',_0x316838+'-'+_0x5748e3+'/'+_0x254596)[_0x1306('0x1b')](_0x661a08);}return null;};}function patchUpdates(_0x40e5de){return function(_0x4ff8ed){try{jsonpatch[_0x1306('0x1f')](_0x4ff8ed,_0x40e5de,!![]);}catch(_0x1944d6){return BPromise[_0x1306('0x20')](_0x1944d6);}return _0x4ff8ed['save']();};}function saveUpdates(_0x67ce9c,_0x26aa20){return function(_0x450725){if(_0x450725){return _0x450725[_0x1306('0x21')](_0x67ce9c)[_0x1306('0x22')](function(_0xa72159){return _0xa72159;});}return null;};}function removeEntity(_0x4965ea,_0x5a2205){return function(_0x1cc3d8){if(_0x1cc3d8){return _0x1cc3d8[_0x1306('0x23')]()[_0x1306('0x22')](function(){_0x4965ea['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x28e034,_0x8706bd){return function(_0xb631af){if(!_0xb631af){_0x28e034[_0x1306('0x18')](0x194);}return _0xb631af;};}function handleError(_0x5837a6,_0x5b9340){_0x5b9340=_0x5b9340||0x1f4;return function(_0x285e89){logger['error'](_0x285e89[_0x1306('0x24')]);if(_0x285e89[_0x1306('0x25')]){delete _0x285e89[_0x1306('0x25')];}_0x5837a6[_0x1306('0x19')](_0x5b9340)[_0x1306('0x26')](_0x285e89);};}exports[_0x1306('0x27')]=function(_0x5a8a87,_0x4d9255){var _0x4ba9cf={},_0x1eec13={},_0x4c9b36={'count':0x0,'rows':[]};var _0x13307a=_[_0x1306('0x28')](db['VoiceTransferReport'][_0x1306('0x29')],function(_0x23dfb6){return{'name':_0x23dfb6['fieldName'],'type':_0x23dfb6[_0x1306('0x2a')][_0x1306('0x2b')]};});_0x1eec13[_0x1306('0x2c')]=_[_0x1306('0x28')](_0x13307a,_0x1306('0x25'));_0x1eec13['query']=_[_0x1306('0x2d')](_0x5a8a87[_0x1306('0x2e')]);_0x1eec13[_0x1306('0x2f')]=_[_0x1306('0x30')](_0x1eec13[_0x1306('0x2c')],_0x1eec13['query']);_0x4ba9cf[_0x1306('0x31')]=_[_0x1306('0x30')](_0x1eec13[_0x1306('0x2c')],qs['fields'](_0x5a8a87[_0x1306('0x2e')][_0x1306('0x32')]));_0x4ba9cf[_0x1306('0x31')]=_0x4ba9cf[_0x1306('0x31')][_0x1306('0x33')]?_0x4ba9cf[_0x1306('0x31')]:_0x1eec13[_0x1306('0x2c')];if(!_0x5a8a87[_0x1306('0x2e')][_0x1306('0x34')](_0x1306('0x35'))){_0x4ba9cf['limit']=qs[_0x1306('0x1d')](_0x5a8a87[_0x1306('0x2e')][_0x1306('0x1d')]);_0x4ba9cf[_0x1306('0x1e')]=qs['offset'](_0x5a8a87[_0x1306('0x2e')][_0x1306('0x1e')]);}_0x4ba9cf[_0x1306('0x36')]=qs[_0x1306('0x37')](_0x5a8a87[_0x1306('0x2e')]['sort']);_0x4ba9cf[_0x1306('0x38')]=qs['filters'](_[_0x1306('0x39')](_0x5a8a87[_0x1306('0x2e')],_0x1eec13[_0x1306('0x2f')]),_0x13307a);if(_0x5a8a87[_0x1306('0x2e')]['filter']){_0x4ba9cf[_0x1306('0x38')]=_[_0x1306('0x3a')](_0x4ba9cf[_0x1306('0x38')],{'$or':_['map'](_0x13307a,function(_0xe21bd8){if(_0xe21bd8[_0x1306('0x2a')]!==_0x1306('0x3b')){var _0x5bec4d={};_0x5bec4d[_0xe21bd8[_0x1306('0x25')]]={'$like':'%'+_0x5a8a87['query'][_0x1306('0x3c')]+'%'};return _0x5bec4d;}})});}_0x4ba9cf=_[_0x1306('0x3a')]({},_0x4ba9cf,_0x5a8a87[_0x1306('0x3d')]);var _0x906a7={'where':_0x4ba9cf['where']};return db[_0x1306('0x3e')]['count'](_0x906a7)[_0x1306('0x22')](function(_0x15ffcd){_0x4c9b36['count']=_0x15ffcd;if(_0x5a8a87[_0x1306('0x2e')][_0x1306('0x3f')]){_0x4ba9cf[_0x1306('0x40')]=[{'all':!![]}];}return db[_0x1306('0x3e')][_0x1306('0x41')](_0x4ba9cf);})[_0x1306('0x22')](function(_0x27102e){_0x4c9b36['rows']=_0x27102e;return _0x4c9b36;})[_0x1306('0x22')](respondWithFilteredResult(_0x4d9255,_0x4ba9cf))[_0x1306('0x42')](handleError(_0x4d9255,null));};exports[_0x1306('0x43')]=function(_0x42c698,_0x32e854){var _0x54f27b={'raw':!![],'where':{'id':_0x42c698[_0x1306('0x44')]['id']}},_0x2c64e7={};_0x2c64e7[_0x1306('0x2c')]=_[_0x1306('0x2d')](db[_0x1306('0x3e')][_0x1306('0x29')]);_0x2c64e7[_0x1306('0x2e')]=_['keys'](_0x42c698['query']);_0x2c64e7['filters']=_[_0x1306('0x30')](_0x2c64e7['model'],_0x2c64e7['query']);_0x54f27b[_0x1306('0x31')]=_[_0x1306('0x30')](_0x2c64e7['model'],qs[_0x1306('0x32')](_0x42c698['query'][_0x1306('0x32')]));_0x54f27b[_0x1306('0x31')]=_0x54f27b[_0x1306('0x31')]['length']?_0x54f27b[_0x1306('0x31')]:_0x2c64e7[_0x1306('0x2c')];if(_0x42c698['query'][_0x1306('0x3f')]){_0x54f27b[_0x1306('0x40')]=[{'all':!![]}];}_0x54f27b=_[_0x1306('0x3a')]({},_0x54f27b,_0x42c698['options']);return db['VoiceTransferReport'][_0x1306('0x45')](_0x54f27b)['then'](handleEntityNotFound(_0x32e854,null))[_0x1306('0x22')](respondWithResult(_0x32e854,null))[_0x1306('0x42')](handleError(_0x32e854,null));};exports[_0x1306('0x46')]=function(_0x403664,_0x45fc1a){return db[_0x1306('0x3e')][_0x1306('0x46')](_0x403664[_0x1306('0x47')],{})['then'](respondWithResult(_0x45fc1a,0xc9))['catch'](handleError(_0x45fc1a,null));};exports['update']=function(_0x4753a5,_0x5ddcfe){if(_0x4753a5[_0x1306('0x47')]['id']){delete _0x4753a5[_0x1306('0x47')]['id'];}return db['VoiceTransferReport'][_0x1306('0x45')]({'where':{'id':_0x4753a5[_0x1306('0x44')]['id']}})[_0x1306('0x22')](handleEntityNotFound(_0x5ddcfe,null))[_0x1306('0x22')](saveUpdates(_0x4753a5[_0x1306('0x47')],null))[_0x1306('0x22')](respondWithResult(_0x5ddcfe,null))[_0x1306('0x42')](handleError(_0x5ddcfe,null));};exports[_0x1306('0x23')]=function(_0x283b06,_0x405751){return db[_0x1306('0x3e')][_0x1306('0x45')]({'where':{'id':_0x283b06[_0x1306('0x44')]['id']}})['then'](handleEntityNotFound(_0x405751,null))[_0x1306('0x22')](removeEntity(_0x405751,null))[_0x1306('0x42')](handleError(_0x405751,null));};exports['describe']=function(_0x2f7b89,_0x1428dc){return db[_0x1306('0x3e')][_0x1306('0x48')]()['then'](respondWithResult(_0x1428dc,null))[_0x1306('0x42')](handleError(_0x1428dc,null));};
\ No newline at end of file
+var _0xa46b=['length','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','findAll','catch','show','params','keys','include','find','create','body','destroy','describe','eml-format','rimraf','fast-json-patch','request-promise','mustache','util','path','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','sendStatus','error','name','send','VoiceTransferReport','rawAttributes','map','query','intersection','model','attributes','fields'];(function(_0x23a8b3,_0x504b00){var _0x2263ca=function(_0x11a393){while(--_0x11a393){_0x23a8b3['push'](_0x23a8b3['shift']());}};_0x2263ca(++_0x504b00);}(_0xa46b,0xf6));var _0xba46=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xa46b[_0x19e35c];return _0x3e1fe8;};'use strict';var emlformat=require(_0xba46('0x0'));var rimraf=require(_0xba46('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xba46('0x2'));var rp=require(_0xba46('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xba46('0x4'));var util=require(_0xba46('0x5'));var path=require(_0xba46('0x6'));var sox=require('sox');var csv=require(_0xba46('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xba46('0x8'));var _=require(_0xba46('0x9'));var squel=require(_0xba46('0xa'));var crypto=require('crypto');var jsforce=require(_0xba46('0xb'));var deskjs=require(_0xba46('0xc'));var toCsv=require('to-csv');var querystring=require(_0xba46('0xd'));var Papa=require(_0xba46('0xe'));var Redis=require(_0xba46('0xf'));var authService=require(_0xba46('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xba46('0x11'));var hardwareService=require(_0xba46('0x12'));var logger=require(_0xba46('0x13'))(_0xba46('0x14'));var utils=require(_0xba46('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xba46('0x16'));var db=require(_0xba46('0x17'))['db'];function respondWithStatusCode(_0x2ce152,_0x298a20){_0x298a20=_0x298a20||0xcc;return function(_0x313214){if(_0x313214){return _0x2ce152['sendStatus'](_0x298a20);}return _0x2ce152[_0xba46('0x18')](_0x298a20)[_0xba46('0x19')]();};}function respondWithResult(_0x40c547,_0x56478a){_0x56478a=_0x56478a||0xc8;return function(_0x2250fb){if(_0x2250fb){return _0x40c547[_0xba46('0x18')](_0x56478a)[_0xba46('0x1a')](_0x2250fb);}};}function respondWithFilteredResult(_0x3a47bd,_0x146cc9){return function(_0x2be011){if(_0x2be011){var _0x28ae2b=typeof _0x146cc9[_0xba46('0x1b')]===_0xba46('0x1c')&&typeof _0x146cc9[_0xba46('0x1d')]===_0xba46('0x1c');var _0x7b4caa=_0x2be011['count'];var _0x593e88=_0x28ae2b?0x0:_0x146cc9['offset'];var _0x4d133e=_0x28ae2b?_0x2be011[_0xba46('0x1e')]:_0x146cc9[_0xba46('0x1b')]+_0x146cc9[_0xba46('0x1d')];var _0x1bc193;if(_0x4d133e>=_0x7b4caa){_0x4d133e=_0x7b4caa;_0x1bc193=0xc8;}else{_0x1bc193=0xce;}_0x3a47bd['status'](_0x1bc193);return _0x3a47bd[_0xba46('0x1f')](_0xba46('0x20'),_0x593e88+'-'+_0x4d133e+'/'+_0x7b4caa)['json'](_0x2be011);}return null;};}function patchUpdates(_0xdc7b07){return function(_0x399fae){try{jsonpatch[_0xba46('0x21')](_0x399fae,_0xdc7b07,!![]);}catch(_0x4996e4){return BPromise[_0xba46('0x22')](_0x4996e4);}return _0x399fae[_0xba46('0x23')]();};}function saveUpdates(_0x346cbd,_0x4125c0){return function(_0x18f16a){if(_0x18f16a){return _0x18f16a[_0xba46('0x24')](_0x346cbd)[_0xba46('0x25')](function(_0x287653){return _0x287653;});}return null;};}function removeEntity(_0x183996,_0x2457da){return function(_0x16e04c){if(_0x16e04c){return _0x16e04c['destroy']()[_0xba46('0x25')](function(){_0x183996[_0xba46('0x18')](0xcc)[_0xba46('0x19')]();});}};}function handleEntityNotFound(_0x4bf0fa,_0x43a45c){return function(_0x439d27){if(!_0x439d27){_0x4bf0fa[_0xba46('0x26')](0x194);}return _0x439d27;};}function handleError(_0x5b0c38,_0xb51a88){_0xb51a88=_0xb51a88||0x1f4;return function(_0x42c123){logger[_0xba46('0x27')](_0x42c123['stack']);if(_0x42c123[_0xba46('0x28')]){delete _0x42c123[_0xba46('0x28')];}_0x5b0c38[_0xba46('0x18')](_0xb51a88)[_0xba46('0x29')](_0x42c123);};}exports['index']=function(_0x358559,_0x5772c5){var _0x3c0482={},_0x144ce4={},_0x33508d={'count':0x0,'rows':[]};var _0xa1a8d6=_['map'](db[_0xba46('0x2a')][_0xba46('0x2b')],function(_0x465388){return{'name':_0x465388['fieldName'],'type':_0x465388['type']['key']};});_0x144ce4['model']=_[_0xba46('0x2c')](_0xa1a8d6,'name');_0x144ce4['query']=_['keys'](_0x358559[_0xba46('0x2d')]);_0x144ce4['filters']=_[_0xba46('0x2e')](_0x144ce4[_0xba46('0x2f')],_0x144ce4[_0xba46('0x2d')]);_0x3c0482[_0xba46('0x30')]=_[_0xba46('0x2e')](_0x144ce4['model'],qs[_0xba46('0x31')](_0x358559[_0xba46('0x2d')]['fields']));_0x3c0482['attributes']=_0x3c0482[_0xba46('0x30')][_0xba46('0x32')]?_0x3c0482[_0xba46('0x30')]:_0x144ce4['model'];if(!_0x358559['query']['hasOwnProperty'](_0xba46('0x33'))){_0x3c0482[_0xba46('0x1d')]=qs[_0xba46('0x1d')](_0x358559[_0xba46('0x2d')]['limit']);_0x3c0482[_0xba46('0x1b')]=qs['offset'](_0x358559[_0xba46('0x2d')][_0xba46('0x1b')]);}_0x3c0482[_0xba46('0x34')]=qs[_0xba46('0x35')](_0x358559[_0xba46('0x2d')][_0xba46('0x35')]);_0x3c0482[_0xba46('0x36')]=qs[_0xba46('0x37')](_[_0xba46('0x38')](_0x358559[_0xba46('0x2d')],_0x144ce4[_0xba46('0x37')]),_0xa1a8d6);if(_0x358559[_0xba46('0x2d')][_0xba46('0x39')]){_0x3c0482['where']=_[_0xba46('0x3a')](_0x3c0482[_0xba46('0x36')],{'$or':_[_0xba46('0x2c')](_0xa1a8d6,function(_0x217017){if(_0x217017[_0xba46('0x3b')]!==_0xba46('0x3c')){var _0x56689d={};_0x56689d[_0x217017[_0xba46('0x28')]]={'$like':'%'+_0x358559[_0xba46('0x2d')][_0xba46('0x39')]+'%'};return _0x56689d;}})});}_0x3c0482=_[_0xba46('0x3a')]({},_0x3c0482,_0x358559[_0xba46('0x3d')]);var _0x55176f={'where':_0x3c0482['where']};return db[_0xba46('0x2a')][_0xba46('0x1e')](_0x55176f)['then'](function(_0x47cebd){_0x33508d['count']=_0x47cebd;if(_0x358559[_0xba46('0x2d')][_0xba46('0x3e')]){_0x3c0482['include']=[{'all':!![]}];}return db[_0xba46('0x2a')][_0xba46('0x3f')](_0x3c0482);})[_0xba46('0x25')](function(_0x31eed1){_0x33508d['rows']=_0x31eed1;return _0x33508d;})[_0xba46('0x25')](respondWithFilteredResult(_0x5772c5,_0x3c0482))[_0xba46('0x40')](handleError(_0x5772c5,null));};exports[_0xba46('0x41')]=function(_0x36442d,_0x4e08cd){var _0xded6c6={'raw':!![],'where':{'id':_0x36442d[_0xba46('0x42')]['id']}},_0x5a63ef={};_0x5a63ef[_0xba46('0x2f')]=_[_0xba46('0x43')](db[_0xba46('0x2a')]['rawAttributes']);_0x5a63ef[_0xba46('0x2d')]=_[_0xba46('0x43')](_0x36442d[_0xba46('0x2d')]);_0x5a63ef[_0xba46('0x37')]=_[_0xba46('0x2e')](_0x5a63ef[_0xba46('0x2f')],_0x5a63ef[_0xba46('0x2d')]);_0xded6c6[_0xba46('0x30')]=_['intersection'](_0x5a63ef[_0xba46('0x2f')],qs['fields'](_0x36442d[_0xba46('0x2d')][_0xba46('0x31')]));_0xded6c6[_0xba46('0x30')]=_0xded6c6[_0xba46('0x30')]['length']?_0xded6c6[_0xba46('0x30')]:_0x5a63ef[_0xba46('0x2f')];if(_0x36442d[_0xba46('0x2d')][_0xba46('0x3e')]){_0xded6c6[_0xba46('0x44')]=[{'all':!![]}];}_0xded6c6=_['merge']({},_0xded6c6,_0x36442d[_0xba46('0x3d')]);return db['VoiceTransferReport'][_0xba46('0x45')](_0xded6c6)['then'](handleEntityNotFound(_0x4e08cd,null))[_0xba46('0x25')](respondWithResult(_0x4e08cd,null))[_0xba46('0x40')](handleError(_0x4e08cd,null));};exports[_0xba46('0x46')]=function(_0x532d34,_0x444f5d){return db['VoiceTransferReport'][_0xba46('0x46')](_0x532d34[_0xba46('0x47')],{})[_0xba46('0x25')](respondWithResult(_0x444f5d,0xc9))['catch'](handleError(_0x444f5d,null));};exports[_0xba46('0x24')]=function(_0xb5ba52,_0x3ef92f){if(_0xb5ba52['body']['id']){delete _0xb5ba52[_0xba46('0x47')]['id'];}return db[_0xba46('0x2a')]['find']({'where':{'id':_0xb5ba52['params']['id']}})[_0xba46('0x25')](handleEntityNotFound(_0x3ef92f,null))[_0xba46('0x25')](saveUpdates(_0xb5ba52[_0xba46('0x47')],null))[_0xba46('0x25')](respondWithResult(_0x3ef92f,null))['catch'](handleError(_0x3ef92f,null));};exports[_0xba46('0x48')]=function(_0x17c577,_0x7866f9){return db['VoiceTransferReport']['find']({'where':{'id':_0x17c577[_0xba46('0x42')]['id']}})[_0xba46('0x25')](handleEntityNotFound(_0x7866f9,null))[_0xba46('0x25')](removeEntity(_0x7866f9,null))[_0xba46('0x40')](handleError(_0x7866f9,null));};exports[_0xba46('0x49')]=function(_0x33b6d0,_0x240924){return db[_0xba46('0x2a')]['describe']()[_0xba46('0x25')](respondWithResult(_0x240924,null))[_0xba46('0x40')](handleError(_0x240924,null));};
\ No newline at end of file
index 9672495..a321fb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4187=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceTransferReport.attributes','define','report_call_transfer'];(function(_0x59a1a0,_0x45d4a8){var _0x442238=function(_0x48f6e5){while(--_0x48f6e5){_0x59a1a0['push'](_0x59a1a0['shift']());}};_0x442238(++_0x45d4a8);}(_0x4187,0x168));var _0x7418=function(_0x41e004,_0x5ad42f){_0x41e004=_0x41e004-0x0;var _0x14c089=_0x4187[_0x41e004];return _0x14c089;};'use strict';var _=require(_0x7418('0x0'));var util=require('util');var logger=require(_0x7418('0x1'))(_0x7418('0x2'));var moment=require(_0x7418('0x3'));var BPromise=require(_0x7418('0x4'));var rp=require(_0x7418('0x5'));var fs=require('fs');var path=require(_0x7418('0x6'));var rimraf=require(_0x7418('0x7'));var config=require(_0x7418('0x8'));var attributes=require(_0x7418('0x9'));module['exports']=function(_0x3e378f,_0x164164){return _0x3e378f[_0x7418('0xa')]('VoiceTransferReport',attributes,{'tableName':_0x7418('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9a58=['request-promise','path','../../config/environment','./voiceTransferReport.attributes','exports','define','VoiceTransferReport','report_call_transfer','lodash','util','api','moment','bluebird'];(function(_0x20afa2,_0x4aa743){var _0x56892e=function(_0x4b0a46){while(--_0x4b0a46){_0x20afa2['push'](_0x20afa2['shift']());}};_0x56892e(++_0x4aa743);}(_0x9a58,0x8a));var _0x89a5=function(_0x4cee4b,_0x1dfff3){_0x4cee4b=_0x4cee4b-0x0;var _0x4d891d=_0x9a58[_0x4cee4b];return _0x4d891d;};'use strict';var _=require(_0x89a5('0x0'));var util=require(_0x89a5('0x1'));var logger=require('../../config/logger')(_0x89a5('0x2'));var moment=require(_0x89a5('0x3'));var BPromise=require(_0x89a5('0x4'));var rp=require(_0x89a5('0x5'));var fs=require('fs');var path=require(_0x89a5('0x6'));var rimraf=require('rimraf');var config=require(_0x89a5('0x7'));var attributes=require(_0x89a5('0x8'));module[_0x89a5('0x9')]=function(_0x52e63e,_0x148df2){return _0x52e63e[_0x89a5('0xa')](_0x89a5('0xb'),attributes,{'tableName':_0x89a5('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 081eff1..571c1a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9190=['../../config/utils','rpc','client','http','request','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','CreateVoiceTransferReport','body','options','debug','lodash','util','moment','randomstring','ioredis'];(function(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0x9190,0x159));var _0x0919=function(_0x3468af,_0x1f37f6){_0x3468af=_0x3468af-0x0;var _0x339a57=_0x9190[_0x3468af];return _0x339a57;};'use strict';var _=require(_0x0919('0x0'));var util=require(_0x0919('0x1'));var moment=require(_0x0919('0x2'));var BPromise=require('bluebird');var rs=require(_0x0919('0x3'));var fs=require('fs');var Redis=require(_0x0919('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x0919('0x5'));var logger=require('../../config/logger')(_0x0919('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0919('0x7')][_0x0919('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5688a1,_0x4d9674,_0x444c9a){return new BPromise(function(_0x2d37c2,_0x546fb2){return client[_0x0919('0x9')](_0x5688a1,_0x444c9a)[_0x0919('0xa')](function(_0x156b0b){logger[_0x0919('0xb')](_0x0919('0xc'),_0x4d9674,_0x0919('0xd'));logger['debug'](_0x0919('0xe'),_0x4d9674,_0x0919('0xd'),JSON[_0x0919('0xf')](_0x156b0b));if(_0x156b0b['error']){if(_0x156b0b['error'][_0x0919('0x10')]===0x1f4){logger[_0x0919('0x11')](_0x0919('0xc'),_0x4d9674,_0x156b0b[_0x0919('0x11')][_0x0919('0x12')]);return _0x546fb2(_0x156b0b['error'][_0x0919('0x12')]);}logger[_0x0919('0x11')](_0x0919('0xc'),_0x4d9674,_0x156b0b[_0x0919('0x11')][_0x0919('0x12')]);return _0x2d37c2(_0x156b0b[_0x0919('0x11')]['message']);}else{logger[_0x0919('0xb')](_0x0919('0xc'),_0x4d9674,_0x0919('0xd'));_0x2d37c2(_0x156b0b[_0x0919('0x13')]['message']);}})[_0x0919('0x14')](function(_0xd52b2f){logger[_0x0919('0x11')](_0x0919('0xc'),_0x4d9674,_0xd52b2f);_0x546fb2(_0xd52b2f);});});}exports[_0x0919('0x15')]=function(_0x4a4201){var _0xa2d628=this;return new Promise(function(_0x4030e9,_0x4ac84a){return db['VoiceTransferReport']['create'](_0x4a4201[_0x0919('0x16')],{'raw':_0x4a4201[_0x0919('0x17')]?_0x4a4201[_0x0919('0x17')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x330bff){logger[_0x0919('0xb')]('CreateVoiceTransferReport',_0x4a4201);logger[_0x0919('0x18')]('CreateVoiceTransferReport',_0x4a4201,JSON['stringify'](_0x330bff));_0x4030e9(_0x330bff);})[_0x0919('0x14')](function(_0x15722e){logger['error'](_0x0919('0x15'),_0x15722e[_0x0919('0x12')],_0x4a4201);_0x4ac84a(_0xa2d628[_0x0919('0x11')](0x1f4,_0x15722e[_0x0919('0x12')]));});});};
\ No newline at end of file
+var _0xc1fc=['moment','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','VoiceTransferReport,\x20%s,\x20%s','catch','CreateVoiceTransferReport','VoiceTransferReport','create','body','options','lodash','util'];(function(_0x2f2889,_0x257080){var _0x2b5da4=function(_0x5731c5){while(--_0x5731c5){_0x2f2889['push'](_0x2f2889['shift']());}};_0x2b5da4(++_0x257080);}(_0xc1fc,0xdf));var _0xcc1f=function(_0x587fb4,_0x48b06c){_0x587fb4=_0x587fb4-0x0;var _0xb0524d=_0xc1fc[_0x587fb4];return _0xb0524d;};'use strict';var _=require(_0xcc1f('0x0'));var util=require(_0xcc1f('0x1'));var moment=require(_0xcc1f('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xcc1f('0x3'))(_0xcc1f('0x4'));var config=require(_0xcc1f('0x5'));var jayson=require(_0xcc1f('0x6'));var client=jayson[_0xcc1f('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2b09e1,_0x143eb8,_0x296303){return new BPromise(function(_0x3dc0f0,_0x4d23a8){return client[_0xcc1f('0x8')](_0x2b09e1,_0x296303)[_0xcc1f('0x9')](function(_0x4c4013){logger[_0xcc1f('0xa')]('VoiceTransferReport,\x20%s,\x20%s',_0x143eb8,'request\x20sent');logger[_0xcc1f('0xb')](_0xcc1f('0xc'),_0x143eb8,_0xcc1f('0xd'),JSON[_0xcc1f('0xe')](_0x4c4013));if(_0x4c4013[_0xcc1f('0xf')]){if(_0x4c4013[_0xcc1f('0xf')][_0xcc1f('0x10')]===0x1f4){logger['error']('VoiceTransferReport,\x20%s,\x20%s',_0x143eb8,_0x4c4013['error'][_0xcc1f('0x11')]);return _0x4d23a8(_0x4c4013[_0xcc1f('0xf')]['message']);}logger[_0xcc1f('0xf')](_0xcc1f('0x12'),_0x143eb8,_0x4c4013[_0xcc1f('0xf')]['message']);return _0x3dc0f0(_0x4c4013['error'][_0xcc1f('0x11')]);}else{logger['info'](_0xcc1f('0x12'),_0x143eb8,_0xcc1f('0xd'));_0x3dc0f0(_0x4c4013['result']['message']);}})[_0xcc1f('0x13')](function(_0x448bc7){logger['error'](_0xcc1f('0x12'),_0x143eb8,_0x448bc7);_0x4d23a8(_0x448bc7);});});}exports[_0xcc1f('0x14')]=function(_0x4fed11){var _0x31a3d5=this;return new Promise(function(_0x24181a,_0x3a7d18){return db[_0xcc1f('0x15')][_0xcc1f('0x16')](_0x4fed11[_0xcc1f('0x17')],{'raw':_0x4fed11[_0xcc1f('0x18')]?_0x4fed11[_0xcc1f('0x18')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x37b25b){logger[_0xcc1f('0xa')](_0xcc1f('0x14'),_0x4fed11);logger['debug'](_0xcc1f('0x14'),_0x4fed11,JSON[_0xcc1f('0xe')](_0x37b25b));_0x24181a(_0x37b25b);})[_0xcc1f('0x13')](function(_0x186763){logger[_0xcc1f('0xf')](_0xcc1f('0x14'),_0x186763['message'],_0x4fed11);_0x3a7d18(_0x31a3d5[_0xcc1f('0xf')](0x1f4,_0x186763[_0xcc1f('0x11')]));});});};
\ No newline at end of file
index 193a66f..e7bf389 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['unhold','/calls','calls','/transfer','exports','Router','../../components/auth/service','./webbar.controller','post','/originate','isAuthenticated','isWebrtcLicence','originate','/hangup','hangup','/answer','answer','/hold','/unhold'];(function(_0x44268d,_0xad8443){var _0x4be92d=function(_0x8a57ff){while(--_0x8a57ff){_0x44268d['push'](_0x44268d['shift']());}};_0x4be92d(++_0xad8443);}(_0xedd9,0xfc));var _0x9edd=function(_0x26b040,_0x2bbc30){_0x26b040=_0x26b040-0x0;var _0xf6e166=_0xedd9[_0x26b040];return _0xf6e166;};'use strict';var express=require('express');var router=express[_0x9edd('0x0')]();var auth=require(_0x9edd('0x1'));var controller=require(_0x9edd('0x2'));router[_0x9edd('0x3')](_0x9edd('0x4'),auth[_0x9edd('0x5')](),auth[_0x9edd('0x6')](),controller[_0x9edd('0x7')]);router['post'](_0x9edd('0x8'),auth[_0x9edd('0x5')](),auth[_0x9edd('0x6')](),controller[_0x9edd('0x9')]);router['post'](_0x9edd('0xa'),auth['isAuthenticated'](),auth[_0x9edd('0x6')](),controller[_0x9edd('0xb')]);router[_0x9edd('0x3')](_0x9edd('0xc'),auth['isAuthenticated'](),auth[_0x9edd('0x6')](),controller['hold']);router[_0x9edd('0x3')](_0x9edd('0xd'),auth['isAuthenticated'](),auth[_0x9edd('0x6')](),controller[_0x9edd('0xe')]);router['post'](_0x9edd('0xf'),auth[_0x9edd('0x5')](),auth[_0x9edd('0x6')](),controller[_0x9edd('0x10')]);router[_0x9edd('0x3')](_0x9edd('0x11'),auth[_0x9edd('0x5')](),auth[_0x9edd('0x6')](),controller['transfer']);module[_0x9edd('0x12')]=router;
\ No newline at end of file
+var _0x5b02=['Router','../../components/auth/service','./webbar.controller','isAuthenticated','originate','post','/hangup','isWebrtcLicence','/answer','/hold','/unhold','unhold','/calls','calls','/transfer','transfer','exports','express'];(function(_0x85dbe0,_0x2e66a5){var _0x2ab54a=function(_0x253d17){while(--_0x253d17){_0x85dbe0['push'](_0x85dbe0['shift']());}};_0x2ab54a(++_0x2e66a5);}(_0x5b02,0xe9));var _0x25b0=function(_0xf49382,_0x4e91a7){_0xf49382=_0xf49382-0x0;var _0x407210=_0x5b02[_0xf49382];return _0x407210;};'use strict';var express=require(_0x25b0('0x0'));var router=express[_0x25b0('0x1')]();var auth=require(_0x25b0('0x2'));var controller=require(_0x25b0('0x3'));router['post']('/originate',auth[_0x25b0('0x4')](),auth['isWebrtcLicence'](),controller[_0x25b0('0x5')]);router[_0x25b0('0x6')](_0x25b0('0x7'),auth[_0x25b0('0x4')](),auth[_0x25b0('0x8')](),controller['hangup']);router[_0x25b0('0x6')](_0x25b0('0x9'),auth['isAuthenticated'](),auth[_0x25b0('0x8')](),controller['answer']);router['post'](_0x25b0('0xa'),auth[_0x25b0('0x4')](),auth[_0x25b0('0x8')](),controller['hold']);router[_0x25b0('0x6')](_0x25b0('0xb'),auth[_0x25b0('0x4')](),auth[_0x25b0('0x8')](),controller[_0x25b0('0xc')]);router[_0x25b0('0x6')](_0x25b0('0xd'),auth[_0x25b0('0x4')](),auth[_0x25b0('0x8')](),controller[_0x25b0('0xe')]);router[_0x25b0('0x6')](_0x25b0('0xf'),auth[_0x25b0('0x4')](),auth[_0x25b0('0x8')](),controller[_0x25b0('0x10')]);module[_0x25b0('0x11')]=router;
\ No newline at end of file
index 18739ef..421595d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5b3=['string','userId\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','emit','log','handleError:','name','status','send','NotFound','request','then','error','code','message','result','catch','User','findOne','agent','VoiceChannels','all','filter','rows','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','json','userId','callNumber','callerId','callbackUrl','entityFound:','format','user:%s','webbar:originate','hangup\x20fired:','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','hold','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','UserId','conference','conference\x20fired:','conference\x20executed!','transfer','transfer\x20fired:','webbar:transfer','transfer\x20executed!','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','defaults','redis','socket.io-emitter','validate','number','callNumber\x20is\x20required'];(function(_0xb0f253,_0x476cc1){var _0x25dbbe=function(_0x52a034){while(--_0x52a034){_0xb0f253['push'](_0xb0f253['shift']());}};_0x25dbbe(++_0x476cc1);}(_0xe5b3,0x133));var _0x3e5b=function(_0x60878f,_0x1166d3){_0x60878f=_0x60878f-0x0;var _0x1fbefb=_0xe5b3[_0x60878f];return _0x1fbefb;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0x3e5b('0x0'));var db=require(_0x3e5b('0x1'))['db'];var config=require(_0x3e5b('0x2'));var util=require(_0x3e5b('0x3'));var BPromise=require(_0x3e5b('0x4'));var jayson=require(_0x3e5b('0x5'));var amiClient=jayson[_0x3e5b('0x6')][_0x3e5b('0x7')]({'port':0x232a});var logger=require(_0x3e5b('0x8'))(_0x3e5b('0x9'));var Redis=require(_0x3e5b('0xa'));config['redis']=_[_0x3e5b('0xb')](config[_0x3e5b('0xc')],{'host':'localhost','port':0x18eb});var io=require(_0x3e5b('0xd'))(new Redis(config[_0x3e5b('0xc')]));var Schema=require(_0x3e5b('0xe'));var originateValidation=new Schema({'userId':{'type':_0x3e5b('0xf'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':'string','required':[!![],_0x3e5b('0x10')]},'callerId':{'type':_0x3e5b('0x11')},'callbackUrl':{'type':_0x3e5b('0x11')}});var hangupValidation=new Schema({'userId':{'type':_0x3e5b('0xf'),'required':[!![],_0x3e5b('0x12')]},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0x3e5b('0xf'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x3e5b('0x11'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x3e5b('0xf'),'required':[!![],_0x3e5b('0x12')]},'sessionId':{'type':_0x3e5b('0x11'),'required':[!![],_0x3e5b('0x13')]},'transferNumber':{'type':_0x3e5b('0x11'),'required':[!![],_0x3e5b('0x14')]}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0x3e5b('0x12')]},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x3e5b('0x11'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x3e5b('0xf'),'required':[!![],_0x3e5b('0x12')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0x3e5b('0x12')]}});function emit(_0x59ddc0,_0x56a453,_0x258d6a){logger[_0x3e5b('0x15')](_0x59ddc0,_0x56a453,JSON['stringify'](_0x258d6a));io['to'](_0x59ddc0)[_0x3e5b('0x16')](_0x56a453,_0x258d6a);}function handleError(_0x143040){return function(_0x555002){console[_0x3e5b('0x17')](_0x3e5b('0x18'),_0x555002,_0x555002 instanceof RangeError);logger['error'](_0x555002['stack']);if(_0x555002 instanceof RangeError){if(_0x555002[_0x3e5b('0x19')]){delete _0x555002[_0x3e5b('0x19')];}_0x143040[_0x3e5b('0x1a')](0x194)[_0x3e5b('0x1b')](_0x555002);}else{if(_0x555002[_0x3e5b('0x19')]){delete _0x555002[_0x3e5b('0x19')];}_0x143040[_0x3e5b('0x1a')](0x1f4)[_0x3e5b('0x1b')](_0x555002);}};}function checkError(){return function(_0x36c988){if(!_0x36c988){throw new RangeError(_0x3e5b('0x1c'));}return _0x36c988;};}function respondWithRpcPromise(_0x2b977c,_0x11e5cf){return new BPromise(function(_0x2d77cc,_0x402873){var _0x5b46d4=amiClient;return _0x5b46d4[_0x3e5b('0x1d')](_0x2b977c,_0x11e5cf)[_0x3e5b('0x1e')](function(_0x2146d4){if(_0x2146d4[_0x3e5b('0x1f')]){if(_0x2146d4['error'][_0x3e5b('0x20')]===0x1f4){return _0x402873(_0x2146d4['error'][_0x3e5b('0x21')]);}return _0x2d77cc(_0x2146d4[_0x3e5b('0x1f')]['message']);}else{_0x2d77cc(_0x2146d4[_0x3e5b('0x22')]);}})[_0x3e5b('0x23')](function(_0x42d7e9){_0x402873(_0x42d7e9);});});}function getAgent(_0x3c8965){return db[_0x3e5b('0x24')][_0x3e5b('0x25')]({'where':{'id':_0x3c8965,'role':_0x3e5b('0x26')}})[_0x3e5b('0x1e')](checkError());}function getAgentCheckSession(_0x4c4b89,_0x1c7278){return new BPromise(function(_0x505f40,_0xb70ab4){var _0x4fd64b=respondWithRpcPromise(_0x3e5b('0x27'));var _0x1f6473=getAgent(_0x4c4b89);Promise[_0x3e5b('0x28')]([_0x4fd64b,_0x1f6473])[_0x3e5b('0x1e')](function(_0x10d2ed){var _0x3cfaf6=_0x10d2ed[0x0];var _0x307091=_0x10d2ed[0x1];var _0x9c2123=_[_0x3e5b('0x29')](_0x3cfaf6[_0x3e5b('0x2a')],function(_0x1e1565){return _0x1e1565['UserId']==_0x307091['id']&&_0x1e1565[_0x3e5b('0x2b')]==_0x1c7278;});if(_0x9c2123[_0x3e5b('0x2c')]==0x1){_0x505f40(_0x307091);}else{_0xb70ab4(new RangeError(_0x3e5b('0x2d')+_0x1c7278+_0x3e5b('0x2e')));}});});}exports[_0x3e5b('0x2f')]=function(_0x31e9f9,_0x345927){logger['info'](_0x3e5b('0x30'),_0x31e9f9['body']);var _0x5b9ba3=originateValidation[_0x3e5b('0xe')](_0x31e9f9[_0x3e5b('0x31')]);if(_0x5b9ba3['length']>0x0){return _0x345927[_0x3e5b('0x1a')](0x190)[_0x3e5b('0x32')](_0x5b9ba3);}var _0x9d01c4=_0x31e9f9[_0x3e5b('0x31')][_0x3e5b('0x33')];var _0x26f842=_0x31e9f9[_0x3e5b('0x31')][_0x3e5b('0x34')];var _0x2450c0=_0x31e9f9[_0x3e5b('0x31')][_0x3e5b('0x35')];var _0x1506f5=_0x31e9f9['body'][_0x3e5b('0x36')];return getAgent(_0x9d01c4)[_0x3e5b('0x1e')](function(_0x53caa2){logger['info'](_0x3e5b('0x37'),_0x53caa2['name']);emit(util[_0x3e5b('0x38')](_0x3e5b('0x39'),_0x53caa2[_0x3e5b('0x19')]),_0x3e5b('0x3a'),{'callNumber':_0x26f842,'callerId':_0x2450c0,'callbackUrl':_0x1506f5});return _0x345927['status'](0xc8)[_0x3e5b('0x32')]({'error':![],'message':'originate\x20executed!'});})[_0x3e5b('0x23')](handleError(_0x345927));};exports['hangup']=function(_0x47f7c8,_0x48f414){logger[_0x3e5b('0x15')](_0x3e5b('0x3b'),_0x47f7c8[_0x3e5b('0x31')]);var _0x35cfcd=hangupValidation[_0x3e5b('0xe')](_0x47f7c8[_0x3e5b('0x31')]);if(_0x35cfcd['length']>0x0){return _0x48f414['status'](0x190)['json'](_0x35cfcd);}var _0x565319=_0x47f7c8['body']['userId'];var _0x5aad1d=_0x47f7c8[_0x3e5b('0x31')][_0x3e5b('0x2b')];return getAgent(_0x565319)[_0x3e5b('0x1e')](function(_0x1aafd5){logger[_0x3e5b('0x15')](_0x3e5b('0x37'),_0x1aafd5[_0x3e5b('0x19')]);emit(util[_0x3e5b('0x38')](_0x3e5b('0x39'),_0x1aafd5[_0x3e5b('0x19')]),_0x3e5b('0x3c'),{'sessionId':_0x5aad1d});return _0x48f414['status'](0xc8)[_0x3e5b('0x32')]({'error':![],'message':_0x3e5b('0x3d')});})[_0x3e5b('0x23')](handleError(_0x48f414));};exports[_0x3e5b('0x3e')]=function(_0xa262e0,_0xc69499){logger[_0x3e5b('0x15')](_0x3e5b('0x3f'),_0xa262e0[_0x3e5b('0x31')]);var _0x39da3f=answerValidation[_0x3e5b('0xe')](_0xa262e0['body']);if(_0x39da3f['length']>0x0){return _0xc69499['status'](0x190)['json'](_0x39da3f);}var _0xa99d75=_0xa262e0[_0x3e5b('0x31')][_0x3e5b('0x33')];var _0x24c416=_0xa262e0[_0x3e5b('0x31')][_0x3e5b('0x2b')];return getAgent(_0xa99d75)[_0x3e5b('0x1e')](function(_0x158518){logger[_0x3e5b('0x15')](_0x3e5b('0x37'),_0x158518['name']);emit(util[_0x3e5b('0x38')](_0x3e5b('0x39'),_0x158518[_0x3e5b('0x19')]),_0x3e5b('0x40'),{'sessionId':_0x24c416});return _0xc69499[_0x3e5b('0x1a')](0xc8)['json']({'error':![],'message':'answer\x20executed!'});})['catch'](handleError(_0xc69499));};exports[_0x3e5b('0x41')]=function(_0x20af6a,_0x3b2319){logger['info']('hold\x20fired:',_0x20af6a[_0x3e5b('0x31')]);var _0x313c51=holdValidation[_0x3e5b('0xe')](_0x20af6a['body']);if(_0x313c51['length']>0x0){return _0x3b2319[_0x3e5b('0x1a')](0x190)['json'](_0x313c51);}var _0x14b62a=_0x20af6a[_0x3e5b('0x31')][_0x3e5b('0x33')];var _0x36abab=_0x20af6a[_0x3e5b('0x31')][_0x3e5b('0x2b')];return getAgent(_0x14b62a)[_0x3e5b('0x1e')](function(_0x3ea5aa){logger[_0x3e5b('0x15')]('entityFound:',_0x3ea5aa[_0x3e5b('0x19')]);emit(util['format'](_0x3e5b('0x39'),_0x3ea5aa[_0x3e5b('0x19')]),_0x3e5b('0x42'),{'sessionId':_0x36abab});return _0x3b2319[_0x3e5b('0x1a')](0xc8)[_0x3e5b('0x32')]({'error':![],'message':_0x3e5b('0x43')});})[_0x3e5b('0x23')](handleError(_0x3b2319));};exports[_0x3e5b('0x44')]=function(_0x2b5d3d,_0x371655){logger[_0x3e5b('0x15')](_0x3e5b('0x45'),_0x2b5d3d[_0x3e5b('0x31')]);var _0x59d311=unholdValidation[_0x3e5b('0xe')](_0x2b5d3d[_0x3e5b('0x31')]);if(_0x59d311[_0x3e5b('0x2c')]>0x0){return _0x371655[_0x3e5b('0x1a')](0x190)[_0x3e5b('0x32')](_0x59d311);}var _0x2cecd3=_0x2b5d3d['body'][_0x3e5b('0x33')];var _0x1cbdf7=_0x2b5d3d[_0x3e5b('0x31')][_0x3e5b('0x2b')];return getAgent(_0x2cecd3)[_0x3e5b('0x1e')](function(_0x449d0f){logger[_0x3e5b('0x15')](_0x3e5b('0x37'),_0x449d0f['name']);emit(util[_0x3e5b('0x38')]('user:%s',_0x449d0f['name']),_0x3e5b('0x46'),{'sessionId':_0x1cbdf7});return _0x371655['status'](0xc8)[_0x3e5b('0x32')]({'error':![],'message':_0x3e5b('0x47')});})[_0x3e5b('0x23')](handleError(_0x371655));};exports[_0x3e5b('0x48')]=function(_0x4a492b,_0x5ddeee){logger['info']('calls\x20fired:',_0x5ddeee[_0x3e5b('0x31')]);var _0x999518=callsValidation[_0x3e5b('0xe')](_0x4a492b[_0x3e5b('0x31')]);if(_0x999518[_0x3e5b('0x2c')]>0x0){return _0x5ddeee['status'](0x190)['json'](_0x999518);}var _0xa0a18d=_0x4a492b[_0x3e5b('0x31')][_0x3e5b('0x33')];var _0x325f7b=respondWithRpcPromise(_0x3e5b('0x27'));var _0x51efbd=getAgent(_0xa0a18d);return Promise['all']([_0x325f7b,_0x51efbd])['then'](function(_0x4eaa6e){var _0x3563b0=_0x4eaa6e[0x0];var _0x3e3115=_0x4eaa6e[0x1];var _0x3088d4=_[_0x3e5b('0x29')](_0x3563b0[_0x3e5b('0x2a')],function(_0x24087b){return _0x24087b[_0x3e5b('0x49')]==_0x3e3115['id'];});return _0x5ddeee[_0x3e5b('0x1a')](0xc8)['json']({'count':_0x3088d4[_0x3e5b('0x2c')],'rows':_0x3088d4});})[_0x3e5b('0x23')](handleError(_0x5ddeee));};exports[_0x3e5b('0x4a')]=function(_0x3e784a,_0x2d2c1e){logger['info'](_0x3e5b('0x4b'),_0x3e784a['body']);var _0x45ca16=conferenceValidation[_0x3e5b('0xe')](_0x3e784a['body']);if(_0x45ca16['length']>0x0){return _0x2d2c1e['status'](0x190)[_0x3e5b('0x32')](_0x45ca16);}var _0x50f5b4=_0x3e784a[_0x3e5b('0x31')][_0x3e5b('0x33')];return getAgent(_0x50f5b4)[_0x3e5b('0x1e')](function(_0x40197c){logger[_0x3e5b('0x15')]('entityFound:',_0x40197c['name']);emit(util[_0x3e5b('0x38')](_0x3e5b('0x39'),_0x40197c[_0x3e5b('0x19')]),'webbar:conference');return _0x2d2c1e[_0x3e5b('0x1a')](0xc8)[_0x3e5b('0x32')]({'error':![],'message':_0x3e5b('0x4c')});})[_0x3e5b('0x23')](handleError(_0x2d2c1e));};exports[_0x3e5b('0x4d')]=function(_0x198316,_0x455594){logger[_0x3e5b('0x15')](_0x3e5b('0x4e'),_0x198316[_0x3e5b('0x31')]);var _0x4eb336=transferValidation[_0x3e5b('0xe')](_0x198316[_0x3e5b('0x31')]);if(_0x4eb336[_0x3e5b('0x2c')]>0x0){return _0x455594[_0x3e5b('0x1a')](0x190)[_0x3e5b('0x32')](_0x4eb336);}var _0x39f1f2=_0x198316[_0x3e5b('0x31')]['userId'];var _0xe5d4c5=_0x198316[_0x3e5b('0x31')]['sessionId'];var _0x177144=_0x198316[_0x3e5b('0x31')]['transferNumber'];return getAgent(_0x39f1f2)['then'](function(_0x4f67d1){logger[_0x3e5b('0x15')](_0x3e5b('0x37'),_0x4f67d1['name']);emit(util[_0x3e5b('0x38')](_0x3e5b('0x39'),_0x4f67d1['name']),_0x3e5b('0x4f'),{'sessionId':_0xe5d4c5,'transferNumber':_0x177144});return _0x455594[_0x3e5b('0x1a')](0xc8)[_0x3e5b('0x32')]({'error':![],'message':_0x3e5b('0x50')});})[_0x3e5b('0x23')](handleError(_0x455594));};
\ No newline at end of file
+var _0x0c6d=['catch','hangup','hangup\x20fired:','user:%s','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','format','webbar:answer','answer\x20executed!','hold','webbar:hold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','all','conference','conference\x20fired:','webbar:conference','transfer','transfer\x20fired:','transferNumber','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','http','redis','defaults','socket.io-emitter','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','log','stack','name','status','send','NotFound','then','error','message','result','findOne','agent','VoiceChannels','filter','rows','UserId','sessionId','sessionId\x20','originate','body','length','json','userId','callNumber','callerId','callbackUrl','entityFound:','webbar:originate','originate\x20executed!'];(function(_0x50cfc3,_0x526cc6){var _0x5c11ef=function(_0xeaf96a){while(--_0xeaf96a){_0x50cfc3['push'](_0x50cfc3['shift']());}};_0x5c11ef(++_0x526cc6);}(_0x0c6d,0xf7));var _0xd0c6=function(_0x2df95a,_0x257181){_0x2df95a=_0x2df95a-0x0;var _0x3248a3=_0x0c6d[_0x2df95a];return _0x3248a3;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0xd0c6('0x0'));var db=require(_0xd0c6('0x1'))['db'];var config=require(_0xd0c6('0x2'));var util=require(_0xd0c6('0x3'));var BPromise=require(_0xd0c6('0x4'));var jayson=require(_0xd0c6('0x5'));var amiClient=jayson['client'][_0xd0c6('0x6')]({'port':0x232a});var logger=require('../../config/logger')('webbarapi');var Redis=require('ioredis');config[_0xd0c6('0x7')]=_[_0xd0c6('0x8')](config[_0xd0c6('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0xd0c6('0x9'))(new Redis(config['redis']));var Schema=require(_0xd0c6('0xa'));var originateValidation=new Schema({'userId':{'type':_0xd0c6('0xb'),'required':[!![],_0xd0c6('0xc')]},'callNumber':{'type':_0xd0c6('0xd'),'required':[!![],_0xd0c6('0xe')]},'callerId':{'type':_0xd0c6('0xd')},'callbackUrl':{'type':_0xd0c6('0xd')}});var hangupValidation=new Schema({'userId':{'type':_0xd0c6('0xb'),'required':[!![],_0xd0c6('0xc')]},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0xd0c6('0xb'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0xd0c6('0xb'),'required':[!![],_0xd0c6('0xc')]},'sessionId':{'type':_0xd0c6('0xd'),'required':[!![],_0xd0c6('0xf')]},'transferNumber':{'type':_0xd0c6('0xd'),'required':[!![],_0xd0c6('0x10')]}});var holdValidation=new Schema({'userId':{'type':_0xd0c6('0xb'),'required':[!![],_0xd0c6('0xc')]},'sessionId':{'type':_0xd0c6('0xd'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xd0c6('0xb'),'required':[!![],_0xd0c6('0xc')]},'sessionId':{'type':_0xd0c6('0xd'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xd0c6('0xb'),'required':[!![],_0xd0c6('0xc')]}});var conferenceValidation=new Schema({'userId':{'type':_0xd0c6('0xb'),'required':[!![],_0xd0c6('0xc')]}});function emit(_0x1e45b3,_0x429727,_0x4e2fc7){logger[_0xd0c6('0x11')](_0x1e45b3,_0x429727,JSON[_0xd0c6('0x12')](_0x4e2fc7));io['to'](_0x1e45b3)[_0xd0c6('0x13')](_0x429727,_0x4e2fc7);}function handleError(_0x3d395a){return function(_0x941021){console[_0xd0c6('0x14')]('handleError:',_0x941021,_0x941021 instanceof RangeError);logger['error'](_0x941021[_0xd0c6('0x15')]);if(_0x941021 instanceof RangeError){if(_0x941021[_0xd0c6('0x16')]){delete _0x941021['name'];}_0x3d395a['status'](0x194)['send'](_0x941021);}else{if(_0x941021[_0xd0c6('0x16')]){delete _0x941021[_0xd0c6('0x16')];}_0x3d395a[_0xd0c6('0x17')](0x1f4)[_0xd0c6('0x18')](_0x941021);}};}function checkError(){return function(_0x1efae9){if(!_0x1efae9){throw new RangeError(_0xd0c6('0x19'));}return _0x1efae9;};}function respondWithRpcPromise(_0x2a8b29,_0x296347){return new BPromise(function(_0x5f191a,_0x2f7559){var _0x1e8384=amiClient;return _0x1e8384['request'](_0x2a8b29,_0x296347)[_0xd0c6('0x1a')](function(_0x2251e0){if(_0x2251e0[_0xd0c6('0x1b')]){if(_0x2251e0['error']['code']===0x1f4){return _0x2f7559(_0x2251e0[_0xd0c6('0x1b')][_0xd0c6('0x1c')]);}return _0x5f191a(_0x2251e0['error'][_0xd0c6('0x1c')]);}else{_0x5f191a(_0x2251e0[_0xd0c6('0x1d')]);}})['catch'](function(_0x6d77cb){_0x2f7559(_0x6d77cb);});});}function getAgent(_0x5c71b6){return db['User'][_0xd0c6('0x1e')]({'where':{'id':_0x5c71b6,'role':_0xd0c6('0x1f')}})['then'](checkError());}function getAgentCheckSession(_0x414124,_0x4368fa){return new BPromise(function(_0x3802af,_0x38d411){var _0x456fcb=respondWithRpcPromise(_0xd0c6('0x20'));var _0x1ed9a9=getAgent(_0x414124);Promise['all']([_0x456fcb,_0x1ed9a9])[_0xd0c6('0x1a')](function(_0xe5ae58){var _0x42587e=_0xe5ae58[0x0];var _0x231418=_0xe5ae58[0x1];var _0x18b747=_[_0xd0c6('0x21')](_0x42587e[_0xd0c6('0x22')],function(_0x14fcaa){return _0x14fcaa[_0xd0c6('0x23')]==_0x231418['id']&&_0x14fcaa[_0xd0c6('0x24')]==_0x4368fa;});if(_0x18b747['length']==0x1){_0x3802af(_0x231418);}else{_0x38d411(new RangeError(_0xd0c6('0x25')+_0x4368fa+'\x20not\x20found!'));}});});}exports[_0xd0c6('0x26')]=function(_0x9bfeea,_0x3779a7){logger[_0xd0c6('0x11')]('originate\x20fired:',_0x9bfeea['body']);var _0xc6a4b6=originateValidation['validate'](_0x9bfeea[_0xd0c6('0x27')]);if(_0xc6a4b6[_0xd0c6('0x28')]>0x0){return _0x3779a7[_0xd0c6('0x17')](0x190)[_0xd0c6('0x29')](_0xc6a4b6);}var _0x51d40a=_0x9bfeea[_0xd0c6('0x27')][_0xd0c6('0x2a')];var _0x1860c9=_0x9bfeea[_0xd0c6('0x27')][_0xd0c6('0x2b')];var _0x5a92f2=_0x9bfeea[_0xd0c6('0x27')][_0xd0c6('0x2c')];var _0x54ca4f=_0x9bfeea[_0xd0c6('0x27')][_0xd0c6('0x2d')];return getAgent(_0x51d40a)[_0xd0c6('0x1a')](function(_0x3840c3){logger['info'](_0xd0c6('0x2e'),_0x3840c3[_0xd0c6('0x16')]);emit(util['format']('user:%s',_0x3840c3['name']),_0xd0c6('0x2f'),{'callNumber':_0x1860c9,'callerId':_0x5a92f2,'callbackUrl':_0x54ca4f});return _0x3779a7['status'](0xc8)[_0xd0c6('0x29')]({'error':![],'message':_0xd0c6('0x30')});})[_0xd0c6('0x31')](handleError(_0x3779a7));};exports[_0xd0c6('0x32')]=function(_0x3d9907,_0x359233){logger[_0xd0c6('0x11')](_0xd0c6('0x33'),_0x3d9907[_0xd0c6('0x27')]);var _0x561b24=hangupValidation[_0xd0c6('0xa')](_0x3d9907[_0xd0c6('0x27')]);if(_0x561b24[_0xd0c6('0x28')]>0x0){return _0x359233[_0xd0c6('0x17')](0x190)['json'](_0x561b24);}var _0x1ea3f5=_0x3d9907['body'][_0xd0c6('0x2a')];var _0x29811f=_0x3d9907['body']['sessionId'];return getAgent(_0x1ea3f5)['then'](function(_0x410cce){logger[_0xd0c6('0x11')](_0xd0c6('0x2e'),_0x410cce[_0xd0c6('0x16')]);emit(util['format'](_0xd0c6('0x34'),_0x410cce[_0xd0c6('0x16')]),_0xd0c6('0x35'),{'sessionId':_0x29811f});return _0x359233[_0xd0c6('0x17')](0xc8)['json']({'error':![],'message':_0xd0c6('0x36')});})['catch'](handleError(_0x359233));};exports[_0xd0c6('0x37')]=function(_0x3b5966,_0x36fb44){logger[_0xd0c6('0x11')](_0xd0c6('0x38'),_0x3b5966[_0xd0c6('0x27')]);var _0x4a033a=answerValidation['validate'](_0x3b5966[_0xd0c6('0x27')]);if(_0x4a033a[_0xd0c6('0x28')]>0x0){return _0x36fb44[_0xd0c6('0x17')](0x190)['json'](_0x4a033a);}var _0x41b441=_0x3b5966[_0xd0c6('0x27')][_0xd0c6('0x2a')];var _0x49009a=_0x3b5966[_0xd0c6('0x27')][_0xd0c6('0x24')];return getAgent(_0x41b441)[_0xd0c6('0x1a')](function(_0x19f848){logger['info'](_0xd0c6('0x2e'),_0x19f848['name']);emit(util[_0xd0c6('0x39')]('user:%s',_0x19f848[_0xd0c6('0x16')]),_0xd0c6('0x3a'),{'sessionId':_0x49009a});return _0x36fb44['status'](0xc8)[_0xd0c6('0x29')]({'error':![],'message':_0xd0c6('0x3b')});})['catch'](handleError(_0x36fb44));};exports[_0xd0c6('0x3c')]=function(_0x3c3859,_0x304712){logger[_0xd0c6('0x11')]('hold\x20fired:',_0x3c3859[_0xd0c6('0x27')]);var _0x373fcb=holdValidation['validate'](_0x3c3859['body']);if(_0x373fcb[_0xd0c6('0x28')]>0x0){return _0x304712['status'](0x190)[_0xd0c6('0x29')](_0x373fcb);}var _0x218419=_0x3c3859[_0xd0c6('0x27')][_0xd0c6('0x2a')];var _0xe27f40=_0x3c3859[_0xd0c6('0x27')][_0xd0c6('0x24')];return getAgent(_0x218419)[_0xd0c6('0x1a')](function(_0x3b3cf4){logger['info'](_0xd0c6('0x2e'),_0x3b3cf4['name']);emit(util[_0xd0c6('0x39')](_0xd0c6('0x34'),_0x3b3cf4[_0xd0c6('0x16')]),_0xd0c6('0x3d'),{'sessionId':_0xe27f40});return _0x304712['status'](0xc8)[_0xd0c6('0x29')]({'error':![],'message':'hold\x20executed!'});})['catch'](handleError(_0x304712));};exports['unhold']=function(_0x1509b5,_0x4404dc){logger[_0xd0c6('0x11')](_0xd0c6('0x3e'),_0x1509b5[_0xd0c6('0x27')]);var _0x2da020=unholdValidation[_0xd0c6('0xa')](_0x1509b5[_0xd0c6('0x27')]);if(_0x2da020[_0xd0c6('0x28')]>0x0){return _0x4404dc[_0xd0c6('0x17')](0x190)['json'](_0x2da020);}var _0x37277a=_0x1509b5[_0xd0c6('0x27')][_0xd0c6('0x2a')];var _0x50a261=_0x1509b5[_0xd0c6('0x27')][_0xd0c6('0x24')];return getAgent(_0x37277a)[_0xd0c6('0x1a')](function(_0xcc0580){logger[_0xd0c6('0x11')](_0xd0c6('0x2e'),_0xcc0580['name']);emit(util[_0xd0c6('0x39')](_0xd0c6('0x34'),_0xcc0580[_0xd0c6('0x16')]),_0xd0c6('0x3f'),{'sessionId':_0x50a261});return _0x4404dc[_0xd0c6('0x17')](0xc8)['json']({'error':![],'message':_0xd0c6('0x40')});})[_0xd0c6('0x31')](handleError(_0x4404dc));};exports[_0xd0c6('0x41')]=function(_0x47f08c,_0x2231e3){logger[_0xd0c6('0x11')](_0xd0c6('0x42'),_0x2231e3[_0xd0c6('0x27')]);var _0x26e246=callsValidation['validate'](_0x47f08c[_0xd0c6('0x27')]);if(_0x26e246[_0xd0c6('0x28')]>0x0){return _0x2231e3['status'](0x190)[_0xd0c6('0x29')](_0x26e246);}var _0x3c1641=_0x47f08c[_0xd0c6('0x27')][_0xd0c6('0x2a')];var _0x2ff9f8=respondWithRpcPromise(_0xd0c6('0x20'));var _0x48d848=getAgent(_0x3c1641);return Promise[_0xd0c6('0x43')]([_0x2ff9f8,_0x48d848])[_0xd0c6('0x1a')](function(_0x389276){var _0x30b422=_0x389276[0x0];var _0x3ddfc5=_0x389276[0x1];var _0x2f86a2=_[_0xd0c6('0x21')](_0x30b422[_0xd0c6('0x22')],function(_0x33ed71){return _0x33ed71[_0xd0c6('0x23')]==_0x3ddfc5['id'];});return _0x2231e3['status'](0xc8)[_0xd0c6('0x29')]({'count':_0x2f86a2[_0xd0c6('0x28')],'rows':_0x2f86a2});})['catch'](handleError(_0x2231e3));};exports[_0xd0c6('0x44')]=function(_0x38a4de,_0xcae78a){logger[_0xd0c6('0x11')](_0xd0c6('0x45'),_0x38a4de[_0xd0c6('0x27')]);var _0x1c8209=conferenceValidation[_0xd0c6('0xa')](_0x38a4de[_0xd0c6('0x27')]);if(_0x1c8209[_0xd0c6('0x28')]>0x0){return _0xcae78a[_0xd0c6('0x17')](0x190)['json'](_0x1c8209);}var _0x1129a6=_0x38a4de['body']['userId'];return getAgent(_0x1129a6)[_0xd0c6('0x1a')](function(_0x416f14){logger['info'](_0xd0c6('0x2e'),_0x416f14[_0xd0c6('0x16')]);emit(util[_0xd0c6('0x39')](_0xd0c6('0x34'),_0x416f14[_0xd0c6('0x16')]),_0xd0c6('0x46'));return _0xcae78a[_0xd0c6('0x17')](0xc8)[_0xd0c6('0x29')]({'error':![],'message':'conference\x20executed!'});})[_0xd0c6('0x31')](handleError(_0xcae78a));};exports[_0xd0c6('0x47')]=function(_0x5cfe6e,_0x2a99a1){logger[_0xd0c6('0x11')](_0xd0c6('0x48'),_0x5cfe6e[_0xd0c6('0x27')]);var _0x53cbd4=transferValidation[_0xd0c6('0xa')](_0x5cfe6e['body']);if(_0x53cbd4['length']>0x0){return _0x2a99a1[_0xd0c6('0x17')](0x190)[_0xd0c6('0x29')](_0x53cbd4);}var _0x184bdd=_0x5cfe6e[_0xd0c6('0x27')][_0xd0c6('0x2a')];var _0x122fa2=_0x5cfe6e[_0xd0c6('0x27')]['sessionId'];var _0x4ac8c7=_0x5cfe6e[_0xd0c6('0x27')][_0xd0c6('0x49')];return getAgent(_0x184bdd)[_0xd0c6('0x1a')](function(_0x2efb17){logger['info'](_0xd0c6('0x2e'),_0x2efb17[_0xd0c6('0x16')]);emit(util['format'](_0xd0c6('0x34'),_0x2efb17[_0xd0c6('0x16')]),'webbar:transfer',{'sessionId':_0x122fa2,'transferNumber':_0x4ac8c7});return _0x2a99a1['status'](0xc8)[_0xd0c6('0x29')]({'error':![],'message':'transfer\x20executed!'});})['catch'](handleError(_0x2a99a1));};
\ No newline at end of file
index dd149a9..c84903c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef0f=['multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/users','/:id/applications','getApplications','post','create','addAnswer','addAgents','addApplications','/:id/notify','notify','/:id/send','send','put','update','delete','removeAnswers','exports'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0xef0f,0x168));var _0xfef0=function(_0x237edc,_0x239587){_0x237edc=_0x237edc-0x0;var _0x869659=_0xef0f[_0x237edc];return _0x869659;};'use strict';var multer=require(_0xfef0('0x0'));var util=require('util');var path=require(_0xfef0('0x1'));var timeout=require(_0xfef0('0x2'));var express=require(_0xfef0('0x3'));var router=express['Router']();var fs_extra=require(_0xfef0('0x4'));var auth=require(_0xfef0('0x5'));var interaction=require(_0xfef0('0x6'));var config=require('../../config/environment');var controller=require(_0xfef0('0x7'));router[_0xfef0('0x8')]('/',auth[_0xfef0('0x9')](),controller[_0xfef0('0xa')]);router[_0xfef0('0x8')](_0xfef0('0xb'),auth['isAuthenticated'](),controller[_0xfef0('0xc')]);router['get'](_0xfef0('0xd'),auth[_0xfef0('0x9')](),controller[_0xfef0('0xe')]);router[_0xfef0('0x8')](_0xfef0('0xf'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x10')]);router[_0xfef0('0x8')](_0xfef0('0x11'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x12')]);router[_0xfef0('0x8')](_0xfef0('0x13'),auth[_0xfef0('0x9')](),controller['getAgents']);router[_0xfef0('0x8')](_0xfef0('0x14'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x15')]);router[_0xfef0('0x16')]('/',auth[_0xfef0('0x9')](),controller[_0xfef0('0x17')]);router['post'](_0xfef0('0xf'),auth['isAuthenticated'](),controller['addDisposition']);router['post'](_0xfef0('0x11'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x18')]);router[_0xfef0('0x16')](_0xfef0('0x13'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x19')]);router[_0xfef0('0x16')]('/:id/applications',auth[_0xfef0('0x9')](),controller[_0xfef0('0x1a')]);router[_0xfef0('0x16')](_0xfef0('0x1b'),controller[_0xfef0('0x1c')]);router['post'](_0xfef0('0x1d'),auth['isAuthenticated'](),controller[_0xfef0('0x1e')]);router[_0xfef0('0x1f')](_0xfef0('0xd'),auth['isAuthenticated'](),controller[_0xfef0('0x20')]);router['delete'](_0xfef0('0xd'),auth[_0xfef0('0x9')](),controller['destroy']);router['delete']('/:id/dispositions',auth[_0xfef0('0x9')](),controller['removeDispositions']);router[_0xfef0('0x21')](_0xfef0('0x11'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x22')]);router[_0xfef0('0x21')](_0xfef0('0x13'),auth['isAuthenticated'](),controller['removeAgents']);module[_0xfef0('0x23')]=router;
\ No newline at end of file
+var _0x8e3f=['addDisposition','addAgents','addApplications','/:id/notify','/:id/send','send','put','update','destroy','delete','removeAnswers','removeAgents','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/users','getAgents','/:id/applications','post','create'];(function(_0x4b5cd3,_0xf04b7){var _0xb1b6f=function(_0x5bf2ec){while(--_0x5bf2ec){_0x4b5cd3['push'](_0x4b5cd3['shift']());}};_0xb1b6f(++_0xf04b7);}(_0x8e3f,0xc1));var _0xf8e3=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x8e3f[_0x40a045];return _0x1a687c;};'use strict';var multer=require(_0xf8e3('0x0'));var util=require(_0xf8e3('0x1'));var path=require(_0xf8e3('0x2'));var timeout=require('connect-timeout');var express=require(_0xf8e3('0x3'));var router=express[_0xf8e3('0x4')]();var fs_extra=require(_0xf8e3('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xf8e3('0x6'));var config=require(_0xf8e3('0x7'));var controller=require('./whatsappAccount.controller');router[_0xf8e3('0x8')]('/',auth[_0xf8e3('0x9')](),controller[_0xf8e3('0xa')]);router[_0xf8e3('0x8')]('/describe',auth[_0xf8e3('0x9')](),controller[_0xf8e3('0xb')]);router[_0xf8e3('0x8')](_0xf8e3('0xc'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0xd')]);router[_0xf8e3('0x8')](_0xf8e3('0xe'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0xf')]);router[_0xf8e3('0x8')](_0xf8e3('0x10'),auth['isAuthenticated'](),controller[_0xf8e3('0x11')]);router[_0xf8e3('0x8')](_0xf8e3('0x12'),auth['isAuthenticated'](),controller[_0xf8e3('0x13')]);router[_0xf8e3('0x8')](_0xf8e3('0x14'),auth[_0xf8e3('0x9')](),controller['getApplications']);router[_0xf8e3('0x15')]('/',auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x16')]);router['post'](_0xf8e3('0xe'),auth['isAuthenticated'](),controller[_0xf8e3('0x17')]);router[_0xf8e3('0x15')](_0xf8e3('0x10'),auth['isAuthenticated'](),controller['addAnswer']);router[_0xf8e3('0x15')](_0xf8e3('0x12'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x18')]);router[_0xf8e3('0x15')](_0xf8e3('0x14'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x19')]);router[_0xf8e3('0x15')](_0xf8e3('0x1a'),controller['notify']);router[_0xf8e3('0x15')](_0xf8e3('0x1b'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x1c')]);router[_0xf8e3('0x1d')](_0xf8e3('0xc'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x1e')]);router['delete'](_0xf8e3('0xc'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x1f')]);router[_0xf8e3('0x20')]('/:id/dispositions',auth[_0xf8e3('0x9')](),controller['removeDispositions']);router[_0xf8e3('0x20')](_0xf8e3('0x10'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x21')]);router[_0xf8e3('0x20')](_0xf8e3('0x12'),auth['isAuthenticated'](),controller[_0xf8e3('0x22')]);module[_0xf8e3('0x23')]=router;
\ No newline at end of file
index e403f38..90a54f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e5f=['name','generate','ENUM','twilio','sinch','TEXT','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','STRING'];(function(_0x4a8ce5,_0x703908){var _0x557151=function(_0x393a6e){while(--_0x393a6e){_0x4a8ce5['push'](_0x4a8ce5['shift']());}};_0x557151(++_0x703908);}(_0x5e5f,0xfb));var _0xf5e5=function(_0x33dce0,_0x24793a){_0x33dce0=_0x33dce0-0x0;var _0x2930ed=_0x5e5f[_0x33dce0];return _0x2930ed;};'use strict';var Sequelize=require(_0xf5e5('0x0'));var rs=require(_0xf5e5('0x1'));module[_0xf5e5('0x2')]={'name':{'type':Sequelize[_0xf5e5('0x3')],'unique':_0xf5e5('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0xf5e5('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0xf5e5('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0xf5e5('0x3')],'defaultValue':function(){return rs[_0xf5e5('0x5')]();}},'phone':{'type':Sequelize[_0xf5e5('0x3')]},'type':{'type':Sequelize[_0xf5e5('0x6')](_0xf5e5('0x7'),_0xf5e5('0x8'))},'accountSid':{'type':Sequelize[_0xf5e5('0x3')]},'baseUrl':{'type':Sequelize[_0xf5e5('0x3')]},'authToken':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0xf5e5('0x9')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0xf5e5('0xa')],'defaultValue':![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xf5e5('0xa')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xf5e5('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xf5e5('0xa')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xf5e5('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xf5e5('0xb')],'comment':_0xf5e5('0xc')},'mandatoryDisposition':{'type':Sequelize[_0xf5e5('0xa')],'defaultValue':![],'comment':_0xf5e5('0xd'),'set':function(_0x2cc211){if(!_0x2cc211){this[_0xf5e5('0xe')](_0xf5e5('0xf'),null);}this[_0xf5e5('0xe')](_0xf5e5('0x10'),_0x2cc211);}},'description':{'type':Sequelize[_0xf5e5('0x3')]}};
\ No newline at end of file
+var _0x9843=['Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition','randomstring','exports','STRING','name','generate','twilio','TEXT','BOOLEAN','INTEGER'];(function(_0x3a16d4,_0x23ecda){var _0x31ea9c=function(_0x35fea8){while(--_0x35fea8){_0x3a16d4['push'](_0x3a16d4['shift']());}};_0x31ea9c(++_0x23ecda);}(_0x9843,0x1b1));var _0x3984=function(_0x1f063b,_0x321a3c){_0x1f063b=_0x1f063b-0x0;var _0x4d864b=_0x9843[_0x1f063b];return _0x4d864b;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x3984('0x0'));module[_0x3984('0x1')]={'name':{'type':Sequelize[_0x3984('0x2')],'unique':_0x3984('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x3984('0x2')],'allowNull':![]},'remote':{'type':Sequelize[_0x3984('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0x3984('0x2')],'defaultValue':function(){return rs[_0x3984('0x4')]();}},'phone':{'type':Sequelize[_0x3984('0x2')]},'type':{'type':Sequelize['ENUM'](_0x3984('0x5'),'sinch')},'accountSid':{'type':Sequelize[_0x3984('0x2')]},'baseUrl':{'type':Sequelize[_0x3984('0x2')]},'authToken':{'type':Sequelize[_0x3984('0x2')]},'notificationTemplate':{'type':Sequelize[_0x3984('0x6')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x3984('0x7')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x3984('0x7')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x3984('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x3984('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x3984('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x3984('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x3984('0x8')],'comment':_0x3984('0x9')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x5f084b){if(!_0x5f084b){this['setDataValue'](_0x3984('0xa'),null);}this[_0x3984('0xb')](_0x3984('0xc'),_0x5f084b);}},'description':{'type':Sequelize[_0x3984('0x2')]}};
\ No newline at end of file
index c9eba53..ee72e69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc79e=['reject','save','update','then','destroy','get','WhatsappAccounts','name','index','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','where','map','filter','merge','options','WhatsappAccount','includeAll','findAll','rows','catch','show','params','Pause','mandatoryDispositionPause','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','WhatsappAccountId','Disposition','findOne','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','nolimit','removeAnswers','addAgents','omit','emit','userWhatsappAccount:save','removeAgents','isArray','getAgents','User','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','WhatsappApplication','bulkCreate','findAndCountAll','priority','stack','finally','send','getApplications','whatsapp','Applications','account','statuses','state','read','WhatsappMessage','timestamp','message_id','applications','orderBy','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','updatedAt','createdAt','CompanyId','mobile','twilio','from','From','replace','whatsapp:','messageId','MessageSid','sinch','notifications','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','ListId','DESC','list','Contacts','contact','WhatsappInteraction','interaction','push','close','unmanaged','*,*,*,*','created','ContactId','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','WhatsappAccount,\x20%s,\x20%s,\x20%s','entity\x20found','WhatsappAccount,\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>','List','defaults','out','Messages','spread','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','redis','socket.io-emitter','./whatsappAccount.socket','register','client','http','request','request\x20sent','debug','stringify','error','code','WhatsappAccount,\x20%s,\x20%s','message','info','result','sendStatus','status','json','offset','undefined','limit','count','apply'];(function(_0x494c1a,_0x181bef){var _0x3ce221=function(_0x17d7bd){while(--_0x17d7bd){_0x494c1a['push'](_0x494c1a['shift']());}};_0x3ce221(++_0x181bef);}(_0xc79e,0x97));var _0xec79=function(_0x1f62c3,_0x1ff95b){_0x1f62c3=_0x1f62c3-0x0;var _0x385c1c=_0xc79e[_0x1f62c3];return _0x385c1c;};'use strict';var emlformat=require(_0xec79('0x0'));var rimraf=require(_0xec79('0x1'));var zipdir=require(_0xec79('0x2'));var jsonpatch=require(_0xec79('0x3'));var rp=require(_0xec79('0x4'));var moment=require(_0xec79('0x5'));var BPromise=require(_0xec79('0x6'));var Mustache=require(_0xec79('0x7'));var util=require(_0xec79('0x8'));var path=require('path');var sox=require(_0xec79('0x9'));var csv=require(_0xec79('0xa'));var ejs=require(_0xec79('0xb'));var fs=require('fs');var fs_extra=require(_0xec79('0xc'));var _=require(_0xec79('0xd'));var squel=require(_0xec79('0xe'));var crypto=require(_0xec79('0xf'));var jsforce=require(_0xec79('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xec79('0xa'));var querystring=require(_0xec79('0x11'));var Papa=require(_0xec79('0x12'));var Redis=require('ioredis');var authService=require(_0xec79('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xec79('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xec79('0x15'))(_0xec79('0x16'));var utils=require('../../config/utils');var config=require(_0xec79('0x17'));var licenseUtil=require(_0xec79('0x18'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0xec79('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xec79('0x1a'))(new Redis(config[_0xec79('0x19')]));require(_0xec79('0x1b'))[_0xec79('0x1c')](socket);var jayson=require('jayson/promise');var client=jayson[_0xec79('0x1d')][_0xec79('0x1e')]({'port':0x232c});function respondWithRpcPromise(_0x2214a4,_0x24db48,_0x10a811,_0x50d84c){return new BPromise(function(_0x501a65,_0x334661){var _0x49bddb=_0x50d84c||client;return _0x49bddb[_0xec79('0x1f')](_0x2214a4,_0x10a811)['then'](function(_0x292bd8){logger['info']('WhatsappAccount,\x20%s,\x20%s',_0x24db48,_0xec79('0x20'));logger[_0xec79('0x21')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x24db48,_0xec79('0x20'),JSON[_0xec79('0x22')](_0x292bd8));if(_0x292bd8[_0xec79('0x23')]){if(_0x292bd8['error'][_0xec79('0x24')]===0x1f4){logger[_0xec79('0x23')](_0xec79('0x25'),_0x24db48,_0x292bd8['error'][_0xec79('0x26')]);return _0x334661(_0x292bd8[_0xec79('0x23')][_0xec79('0x26')]);}logger[_0xec79('0x23')]('WhatsappAccount,\x20%s,\x20%s',_0x24db48,_0x292bd8[_0xec79('0x23')][_0xec79('0x26')]);return _0x501a65(_0x292bd8[_0xec79('0x23')][_0xec79('0x26')]);}else{logger[_0xec79('0x27')](_0xec79('0x25'),_0x24db48,_0xec79('0x20'));_0x501a65(_0x292bd8[_0xec79('0x28')][_0xec79('0x26')]);}})['catch'](function(_0x387906){logger[_0xec79('0x23')](_0xec79('0x25'),_0x24db48,_0x387906);_0x334661(_0x387906);});});}function respondWithStatusCode(_0x1066e5,_0x1a8e9a){_0x1a8e9a=_0x1a8e9a||0xcc;return function(_0x278735){if(_0x278735){return _0x1066e5[_0xec79('0x29')](_0x1a8e9a);}return _0x1066e5['status'](_0x1a8e9a)['end']();};}function respondWithResult(_0x46531d,_0xb45474){_0xb45474=_0xb45474||0xc8;return function(_0x80e324){if(_0x80e324){return _0x46531d[_0xec79('0x2a')](_0xb45474)[_0xec79('0x2b')](_0x80e324);}};}function respondWithFilteredResult(_0x4419ea,_0x15cf48){return function(_0x3daedd){if(_0x3daedd){var _0x5f26ef=typeof _0x15cf48[_0xec79('0x2c')]===_0xec79('0x2d')&&typeof _0x15cf48[_0xec79('0x2e')]===_0xec79('0x2d');var _0x502b1e=_0x3daedd[_0xec79('0x2f')];var _0x1dd59f=_0x5f26ef?0x0:_0x15cf48[_0xec79('0x2c')];var _0x19ea21=_0x5f26ef?_0x3daedd[_0xec79('0x2f')]:_0x15cf48[_0xec79('0x2c')]+_0x15cf48[_0xec79('0x2e')];var _0x2ab6f6;if(_0x19ea21>=_0x502b1e){_0x19ea21=_0x502b1e;_0x2ab6f6=0xc8;}else{_0x2ab6f6=0xce;}_0x4419ea[_0xec79('0x2a')](_0x2ab6f6);return _0x4419ea['set']('Content-Range',_0x1dd59f+'-'+_0x19ea21+'/'+_0x502b1e)['json'](_0x3daedd);}return null;};}function patchUpdates(_0x4aebbf){return function(_0x3d12d1){try{jsonpatch[_0xec79('0x30')](_0x3d12d1,_0x4aebbf,!![]);}catch(_0x58008e){return BPromise[_0xec79('0x31')](_0x58008e);}return _0x3d12d1[_0xec79('0x32')]();};}function saveUpdates(_0x3a475f,_0x41d85d){return function(_0x2a19dd){if(_0x2a19dd){return _0x2a19dd[_0xec79('0x33')](_0x3a475f)[_0xec79('0x34')](function(_0x45a81b){return _0x45a81b;});}return null;};}function removeEntity(_0x5e4b07,_0x15bf46){return function(_0x3a3b53){if(_0x3a3b53){return _0x3a3b53[_0xec79('0x35')]()[_0xec79('0x34')](function(){var _0xcd9cd=_0x3a3b53[_0xec79('0x36')]({'plain':!![]});var _0x5cd228=_0xec79('0x37');return db['UserProfileResource'][_0xec79('0x35')]({'where':{'type':_0x5cd228,'resourceId':_0xcd9cd['id']}})['then'](function(){return _0x3a3b53;});})[_0xec79('0x34')](function(){_0x5e4b07[_0xec79('0x2a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ef072,_0x3ff2aa){return function(_0x975a8d){if(!_0x975a8d){_0x2ef072[_0xec79('0x29')](0x194);}return _0x975a8d;};}function handleError(_0xcf700c,_0x802f0c){_0x802f0c=_0x802f0c||0x1f4;return function(_0x124236){logger[_0xec79('0x23')](_0x124236['stack']);if(_0x124236[_0xec79('0x38')]){delete _0x124236[_0xec79('0x38')];}_0xcf700c['status'](_0x802f0c)['send'](_0x124236);};}exports[_0xec79('0x39')]=function(_0xe4f867,_0x1292b8){var _0x40a136={'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x13dd3d={},_0x235c5d={'count':0x0,'rows':[]};var _0x35d9d5=_['map'](db['WhatsappAccount'][_0xec79('0x3a')],function(_0x7e03a4){return{'name':_0x7e03a4[_0xec79('0x3b')],'type':_0x7e03a4[_0xec79('0x3c')]['key']};});_0x13dd3d[_0xec79('0x3d')]=_['map'](_0x35d9d5,_0xec79('0x38'));_0x13dd3d[_0xec79('0x3e')]=_[_0xec79('0x3f')](_0xe4f867[_0xec79('0x3e')]);_0x13dd3d[_0xec79('0x40')]=_[_0xec79('0x41')](_0x13dd3d[_0xec79('0x3d')],_0x13dd3d['query']);_0x40a136[_0xec79('0x42')]=_[_0xec79('0x41')](_0x13dd3d[_0xec79('0x3d')],qs[_0xec79('0x43')](_0xe4f867[_0xec79('0x3e')][_0xec79('0x43')]));_0x40a136[_0xec79('0x42')]=_0x40a136['attributes'][_0xec79('0x44')]?_0x40a136[_0xec79('0x42')]:_0x13dd3d[_0xec79('0x3d')];if(!_0xe4f867[_0xec79('0x3e')][_0xec79('0x45')]('nolimit')){_0x40a136[_0xec79('0x2e')]=qs[_0xec79('0x2e')](_0xe4f867[_0xec79('0x3e')][_0xec79('0x2e')]);_0x40a136[_0xec79('0x2c')]=qs[_0xec79('0x2c')](_0xe4f867[_0xec79('0x3e')][_0xec79('0x2c')]);}_0x40a136[_0xec79('0x46')]=qs[_0xec79('0x47')](_0xe4f867['query'][_0xec79('0x47')]);_0x40a136['where']=qs[_0xec79('0x40')](_[_0xec79('0x48')](_0xe4f867[_0xec79('0x3e')],_0x13dd3d['filters']),_0x35d9d5);if(_0xe4f867[_0xec79('0x3e')]['filter']){_0x40a136[_0xec79('0x49')]=_['merge'](_0x40a136[_0xec79('0x49')],{'$or':_[_0xec79('0x4a')](_0x35d9d5,function(_0x59752a){if(_0x59752a[_0xec79('0x3c')]!=='VIRTUAL'){var _0x590b62={};_0x590b62[_0x59752a[_0xec79('0x38')]]={'$like':'%'+_0xe4f867[_0xec79('0x3e')][_0xec79('0x4b')]+'%'};return _0x590b62;}})});}_0x40a136=_[_0xec79('0x4c')]({},_0x40a136,_0xe4f867[_0xec79('0x4d')]);var _0x2ff7a3={'where':_0x40a136['where']};return db[_0xec79('0x4e')][_0xec79('0x2f')](_0x2ff7a3)[_0xec79('0x34')](function(_0x513822){_0x235c5d['count']=_0x513822;if(_0xe4f867[_0xec79('0x3e')][_0xec79('0x4f')]){_0x40a136['include']=[{'all':!![]}];}return db[_0xec79('0x4e')][_0xec79('0x50')](_0x40a136);})[_0xec79('0x34')](function(_0x4d9091){_0x235c5d[_0xec79('0x51')]=_0x4d9091;return _0x235c5d;})[_0xec79('0x34')](respondWithFilteredResult(_0x1292b8,_0x40a136))[_0xec79('0x52')](handleError(_0x1292b8,null));};exports[_0xec79('0x53')]=function(_0x2a9f91,_0x3b7e9){var _0x53c706={'raw':![],'where':{'id':_0x2a9f91[_0xec79('0x54')]['id']},'include':[{'model':db[_0xec79('0x55')],'as':_0xec79('0x56')}]},_0xcb6112={};_0xcb6112[_0xec79('0x3d')]=_[_0xec79('0x3f')](db[_0xec79('0x4e')][_0xec79('0x3a')]);_0xcb6112['query']=_[_0xec79('0x3f')](_0x2a9f91[_0xec79('0x3e')]);_0xcb6112[_0xec79('0x40')]=_['intersection'](_0xcb6112[_0xec79('0x3d')],_0xcb6112[_0xec79('0x3e')]);_0x53c706[_0xec79('0x42')]=_[_0xec79('0x41')](_0xcb6112[_0xec79('0x3d')],qs[_0xec79('0x43')](_0x2a9f91['query'][_0xec79('0x43')]));_0x53c706[_0xec79('0x42')]=_0x53c706['attributes'][_0xec79('0x44')]?_0x53c706[_0xec79('0x42')]:_0xcb6112[_0xec79('0x3d')];if(_0x2a9f91[_0xec79('0x3e')][_0xec79('0x4f')]){_0x53c706[_0xec79('0x57')]=[{'all':!![]}];}_0x53c706=_['merge']({},_0x53c706,_0x2a9f91[_0xec79('0x4d')]);return db[_0xec79('0x4e')][_0xec79('0x58')](_0x53c706)[_0xec79('0x34')](handleEntityNotFound(_0x3b7e9,null))[_0xec79('0x34')](respondWithResult(_0x3b7e9,null))[_0xec79('0x52')](handleError(_0x3b7e9,null));};exports['create']=function(_0x20e816,_0x5f54a1){return db[_0xec79('0x4e')][_0xec79('0x59')](_0x20e816[_0xec79('0x5a')],{})[_0xec79('0x34')](function(_0xb245ee){var _0x10f21c=_0x20e816[_0xec79('0x5b')][_0xec79('0x36')]({'plain':!![]});if(!_0x10f21c)throw new Error(_0xec79('0x5c'));if(_0x10f21c[_0xec79('0x5d')]===_0xec79('0x5b')){var _0x1bf506=_0xb245ee[_0xec79('0x36')]({'plain':!![]});var _0x4c6c42=_0xec79('0x37');return db[_0xec79('0x5e')][_0xec79('0x58')]({'where':{'name':_0x4c6c42,'userProfileId':_0x10f21c[_0xec79('0x5f')]},'raw':!![]})[_0xec79('0x34')](function(_0x5c135f){if(_0x5c135f&&_0x5c135f['autoAssociation']===0x0){return db[_0xec79('0x60')]['create']({'name':_0x1bf506[_0xec79('0x38')],'resourceId':_0x1bf506['id'],'type':_0x5c135f[_0xec79('0x38')],'sectionId':_0x5c135f['id']},{})[_0xec79('0x34')](function(){return _0xb245ee;});}else{return _0xb245ee;}})[_0xec79('0x52')](function(_0x15b572){logger['error'](_0xec79('0x61'),_0x15b572);throw _0x15b572;});}return _0xb245ee;})[_0xec79('0x34')](respondWithResult(_0x5f54a1,0xc9))[_0xec79('0x52')](handleError(_0x5f54a1,null));};exports[_0xec79('0x33')]=function(_0x2499c1,_0x28cb07){if(_0x2499c1[_0xec79('0x5a')]['id']){delete _0x2499c1[_0xec79('0x5a')]['id'];}return db[_0xec79('0x4e')][_0xec79('0x58')]({'where':{'id':_0x2499c1[_0xec79('0x54')]['id']},'include':[{'model':db[_0xec79('0x55')],'as':'mandatoryDispositionPause'}]})[_0xec79('0x34')](handleEntityNotFound(_0x28cb07,null))['then'](saveUpdates(_0x2499c1['body'],null))[_0xec79('0x34')](respondWithResult(_0x28cb07,null))[_0xec79('0x52')](handleError(_0x28cb07,null));};exports[_0xec79('0x35')]=function(_0x2ff6e5,_0x6ace7e){return db['WhatsappAccount'][_0xec79('0x58')]({'where':{'id':_0x2ff6e5[_0xec79('0x54')]['id']}})[_0xec79('0x34')](handleEntityNotFound(_0x6ace7e,null))[_0xec79('0x34')](removeEntity(_0x6ace7e,null))[_0xec79('0x52')](handleError(_0x6ace7e,null));};exports[_0xec79('0x62')]=function(_0x421f87,_0x123792){return db[_0xec79('0x4e')][_0xec79('0x62')]()[_0xec79('0x34')](respondWithResult(_0x123792,null))[_0xec79('0x52')](handleError(_0x123792,null));};exports[_0xec79('0x63')]=function(_0x5a6d0c,_0x5406bf,_0x4da28b){if(_0x5a6d0c[_0xec79('0x5a')]['id']){delete _0x5a6d0c[_0xec79('0x5a')]['id'];}return db['WhatsappAccount'][_0xec79('0x58')]({'where':{'id':_0x5a6d0c[_0xec79('0x54')]['id']}})['then'](handleEntityNotFound(_0x5406bf,null))[_0xec79('0x34')](function(_0x27b37b){if(_0x27b37b){_0x5a6d0c[_0xec79('0x5a')][_0xec79('0x64')]=_0x27b37b['id'];return db[_0xec79('0x65')][_0xec79('0x59')](_0x5a6d0c[_0xec79('0x5a')]);}})[_0xec79('0x34')](respondWithResult(_0x5406bf,null))[_0xec79('0x52')](handleError(_0x5406bf,null));};exports['getDispositions']=function(_0x188c98,_0x3bcdfd,_0x45c6a0){var _0x411b5f={'raw':![],'where':{}};var _0x5054cc={};var _0x136519={'count':0x0,'rows':[]};return db[_0xec79('0x4e')][_0xec79('0x66')]({'where':{'id':_0x188c98[_0xec79('0x54')]['id']}})[_0xec79('0x34')](handleEntityNotFound(_0x3bcdfd,null))[_0xec79('0x34')](function(_0x1832f4){if(_0x1832f4){_0x5054cc['model']=_['keys'](db[_0xec79('0x65')][_0xec79('0x3a')]);_0x5054cc[_0xec79('0x3e')]=_[_0xec79('0x3f')](_0x188c98[_0xec79('0x3e')]);_0x5054cc[_0xec79('0x40')]=_[_0xec79('0x41')](_0x5054cc['model'],_0x5054cc[_0xec79('0x3e')]);_0x411b5f[_0xec79('0x42')]=_[_0xec79('0x41')](_0x5054cc['model'],qs[_0xec79('0x43')](_0x188c98[_0xec79('0x3e')][_0xec79('0x43')]));_0x411b5f[_0xec79('0x42')]=_0x411b5f[_0xec79('0x42')]['length']?_0x411b5f[_0xec79('0x42')]:_0x5054cc[_0xec79('0x3d')];if(!_0x188c98[_0xec79('0x3e')]['hasOwnProperty']('nolimit')){_0x411b5f[_0xec79('0x2e')]=qs[_0xec79('0x2e')](_0x188c98[_0xec79('0x3e')][_0xec79('0x2e')]);_0x411b5f[_0xec79('0x2c')]=qs[_0xec79('0x2c')](_0x188c98[_0xec79('0x3e')][_0xec79('0x2c')]);}_0x411b5f['order']=qs[_0xec79('0x47')](_0x188c98[_0xec79('0x3e')][_0xec79('0x47')]);_0x411b5f[_0xec79('0x49')]=qs[_0xec79('0x40')](_[_0xec79('0x48')](_0x188c98[_0xec79('0x3e')],_0x5054cc['filters']));_0x411b5f[_0xec79('0x49')][_0xec79('0x64')]=_0x1832f4['id'];if(_0x188c98['query'][_0xec79('0x4b')]){_0x411b5f['where']=_['merge'](_0x411b5f[_0xec79('0x49')],{'$or':_[_0xec79('0x4a')](_0x411b5f[_0xec79('0x42')],function(_0x398128){var _0x4285d1={};_0x4285d1[_0x398128]={'$like':'%'+_0x188c98[_0xec79('0x3e')][_0xec79('0x4b')]+'%'};return _0x4285d1;})});}_0x411b5f=_['merge']({},_0x411b5f,_0x188c98['options']);return db[_0xec79('0x65')]['count']({'where':_0x411b5f[_0xec79('0x49')]})[_0xec79('0x34')](function(_0xff9ef9){_0x136519[_0xec79('0x2f')]=_0xff9ef9;if(_0x188c98[_0xec79('0x3e')]['includeAll']){_0x411b5f['include']=[{'all':!![]}];}return db[_0xec79('0x65')][_0xec79('0x50')](_0x411b5f);})[_0xec79('0x34')](function(_0x4fb5d5){_0x136519[_0xec79('0x51')]=_0x4fb5d5;return _0x136519;});}})[_0xec79('0x34')](respondWithFilteredResult(_0x3bcdfd,_0x411b5f))[_0xec79('0x52')](handleError(_0x3bcdfd,null));};exports[_0xec79('0x67')]=function(_0x112be3,_0x24cd38,_0x3da3e5){return db['WhatsappAccount'][_0xec79('0x58')]({'where':{'id':_0x112be3[_0xec79('0x54')]['id']}})[_0xec79('0x34')](handleEntityNotFound(_0x24cd38,null))[_0xec79('0x34')](function(_0x586f2b){if(_0x586f2b){return _0x586f2b[_0xec79('0x67')](_0x112be3['query'][_0xec79('0x68')]);}})['then'](respondWithStatusCode(_0x24cd38,null))[_0xec79('0x52')](handleError(_0x24cd38,null));};exports[_0xec79('0x69')]=function(_0x29af4d,_0x26efaf,_0x1d1f36){if(_0x29af4d[_0xec79('0x5a')]['id']){delete _0x29af4d[_0xec79('0x5a')]['id'];}return db[_0xec79('0x4e')]['find']({'where':{'id':_0x29af4d[_0xec79('0x54')]['id']}})['then'](handleEntityNotFound(_0x26efaf,null))['then'](function(_0x434a30){if(_0x434a30){_0x29af4d['body']['WhatsappAccountId']=_0x434a30['id'];return db[_0xec79('0x6a')][_0xec79('0x59')](_0x29af4d[_0xec79('0x5a')]);}})[_0xec79('0x34')](respondWithResult(_0x26efaf,null))[_0xec79('0x52')](handleError(_0x26efaf,null));};exports[_0xec79('0x6b')]=function(_0x2d9ad4,_0x1ec2d3,_0x2a57a2){var _0x509fa2={'raw':![],'where':{}};var _0x4542df={};var _0x4c7f98={'count':0x0,'rows':[]};return db['WhatsappAccount']['findOne']({'where':{'id':_0x2d9ad4[_0xec79('0x54')]['id']}})[_0xec79('0x34')](handleEntityNotFound(_0x1ec2d3,null))[_0xec79('0x34')](function(_0x44137e){if(_0x44137e){_0x4542df['model']=_['keys'](db['CannedAnswer'][_0xec79('0x3a')]);_0x4542df[_0xec79('0x3e')]=_[_0xec79('0x3f')](_0x2d9ad4[_0xec79('0x3e')]);_0x4542df[_0xec79('0x40')]=_[_0xec79('0x41')](_0x4542df['model'],_0x4542df['query']);_0x509fa2[_0xec79('0x42')]=_['intersection'](_0x4542df['model'],qs['fields'](_0x2d9ad4[_0xec79('0x3e')][_0xec79('0x43')]));_0x509fa2[_0xec79('0x42')]=_0x509fa2[_0xec79('0x42')][_0xec79('0x44')]?_0x509fa2[_0xec79('0x42')]:_0x4542df[_0xec79('0x3d')];if(!_0x2d9ad4['query'][_0xec79('0x45')](_0xec79('0x6c'))){_0x509fa2[_0xec79('0x2e')]=qs[_0xec79('0x2e')](_0x2d9ad4[_0xec79('0x3e')][_0xec79('0x2e')]);_0x509fa2['offset']=qs[_0xec79('0x2c')](_0x2d9ad4[_0xec79('0x3e')][_0xec79('0x2c')]);}_0x509fa2[_0xec79('0x46')]=qs[_0xec79('0x47')](_0x2d9ad4['query']['sort']);_0x509fa2[_0xec79('0x49')]=qs[_0xec79('0x40')](_['pick'](_0x2d9ad4['query'],_0x4542df[_0xec79('0x40')]));_0x509fa2['where']['WhatsappAccountId']=_0x44137e['id'];if(_0x2d9ad4[_0xec79('0x3e')][_0xec79('0x4b')]){_0x509fa2['where']=_[_0xec79('0x4c')](_0x509fa2[_0xec79('0x49')],{'$or':_['map'](_0x509fa2[_0xec79('0x42')],function(_0x5924dd){var _0x4c161e={};_0x4c161e[_0x5924dd]={'$like':'%'+_0x2d9ad4[_0xec79('0x3e')]['filter']+'%'};return _0x4c161e;})});}_0x509fa2=_[_0xec79('0x4c')]({},_0x509fa2,_0x2d9ad4[_0xec79('0x4d')]);return db[_0xec79('0x6a')][_0xec79('0x2f')]({'where':_0x509fa2[_0xec79('0x49')]})[_0xec79('0x34')](function(_0x42aa43){_0x4c7f98['count']=_0x42aa43;if(_0x2d9ad4[_0xec79('0x3e')]['includeAll']){_0x509fa2[_0xec79('0x57')]=[{'all':!![]}];}return db[_0xec79('0x6a')]['findAll'](_0x509fa2);})[_0xec79('0x34')](function(_0x222fae){_0x4c7f98['rows']=_0x222fae;return _0x4c7f98;});}})[_0xec79('0x34')](respondWithFilteredResult(_0x1ec2d3,_0x509fa2))[_0xec79('0x52')](handleError(_0x1ec2d3,null));};exports[_0xec79('0x6d')]=function(_0x19a22e,_0x4a6c7c,_0x329fed){return db[_0xec79('0x4e')][_0xec79('0x58')]({'where':{'id':_0x19a22e['params']['id']}})[_0xec79('0x34')](handleEntityNotFound(_0x4a6c7c,null))[_0xec79('0x34')](function(_0xd7d389){if(_0xd7d389){return _0xd7d389[_0xec79('0x6d')](_0x19a22e['query'][_0xec79('0x68')]);}})[_0xec79('0x34')](respondWithStatusCode(_0x4a6c7c,null))['catch'](handleError(_0x4a6c7c,null));};exports[_0xec79('0x6e')]=function(_0x576aa6,_0x41d600,_0x5ead22){return db[_0xec79('0x4e')][_0xec79('0x58')]({'where':{'id':_0x576aa6['params']['id']}})[_0xec79('0x34')](handleEntityNotFound(_0x41d600,null))['then'](function(_0x34d751){if(_0x34d751){return _0x34d751[_0xec79('0x6e')](_0x576aa6[_0xec79('0x5a')]['ids'],_[_0xec79('0x6f')](_0x576aa6[_0xec79('0x5a')],['ids','id'])||{})['spread'](function(_0x53ed30){for(var _0x5d14a3=0x0;_0x5d14a3<_0x576aa6[_0xec79('0x5a')][_0xec79('0x68')]['length'];_0x5d14a3+=0x1){socket[_0xec79('0x70')](_0xec79('0x71'),{'UserId':Number(_0x576aa6['body'][_0xec79('0x68')][_0x5d14a3]),'WhatsappAccountId':Number(_0x576aa6[_0xec79('0x54')]['id'])});}return _0x53ed30;});}})['then'](respondWithResult(_0x41d600,null))['catch'](handleError(_0x41d600,null));};exports[_0xec79('0x72')]=function(_0xbc8879,_0x2d6c62,_0xf23c3b){return db[_0xec79('0x4e')][_0xec79('0x58')]({'where':{'id':_0xbc8879[_0xec79('0x54')]['id']}})['then'](handleEntityNotFound(_0x2d6c62,null))[_0xec79('0x34')](function(_0xdc7003){if(_0xdc7003){return _0xdc7003[_0xec79('0x72')](_0xbc8879[_0xec79('0x3e')][_0xec79('0x68')])[_0xec79('0x34')](function(){if(_[_0xec79('0x73')](_0xbc8879[_0xec79('0x3e')]['ids'])){for(var _0x5d8e43=0x0;_0x5d8e43<_0xbc8879[_0xec79('0x3e')][_0xec79('0x68')][_0xec79('0x44')];_0x5d8e43+=0x1){socket['emit']('userWhatsappAccount:remove',{'UserId':Number(_0xbc8879[_0xec79('0x3e')]['ids'][_0x5d8e43]),'WhatsappAccountId':Number(_0xbc8879[_0xec79('0x54')]['id'])});}}else{socket['emit']('userWhatsappAccount:remove',{'UserId':Number(_0xbc8879['query'][_0xec79('0x68')]),'WhatsappAccountId':Number(_0xbc8879[_0xec79('0x54')]['id'])});}});}})[_0xec79('0x34')](respondWithStatusCode(_0x2d6c62,null))[_0xec79('0x52')](handleError(_0x2d6c62,null));};exports[_0xec79('0x74')]=function(_0x11397c,_0x165962,_0x5e4219){var _0x3106d8={};var _0x127c6f={};var _0x4cfce7;var _0x2ab071;return db[_0xec79('0x4e')][_0xec79('0x66')]({'where':{'id':_0x11397c[_0xec79('0x54')]['id']}})[_0xec79('0x34')](handleEntityNotFound(_0x165962,null))[_0xec79('0x34')](function(_0x391bc3){if(_0x391bc3){_0x4cfce7=_0x391bc3;_0x127c6f[_0xec79('0x3d')]=_[_0xec79('0x3f')](db[_0xec79('0x75')][_0xec79('0x3a')]);_0x127c6f['query']=_[_0xec79('0x3f')](_0x11397c[_0xec79('0x3e')]);_0x127c6f[_0xec79('0x40')]=_[_0xec79('0x41')](_0x127c6f['model'],_0x127c6f[_0xec79('0x3e')]);_0x3106d8[_0xec79('0x42')]=_['intersection'](_0x127c6f[_0xec79('0x3d')],qs[_0xec79('0x43')](_0x11397c[_0xec79('0x3e')][_0xec79('0x43')]));_0x3106d8[_0xec79('0x42')]=_0x3106d8['attributes'][_0xec79('0x44')]?_0x3106d8['attributes']:_0x127c6f[_0xec79('0x3d')];_0x3106d8[_0xec79('0x46')]=qs[_0xec79('0x47')](_0x11397c['query'][_0xec79('0x47')]);_0x3106d8[_0xec79('0x49')]=qs[_0xec79('0x40')](_[_0xec79('0x48')](_0x11397c[_0xec79('0x3e')],_0x127c6f[_0xec79('0x40')]));if(_0x11397c[_0xec79('0x3e')][_0xec79('0x4b')]){_0x3106d8['where']=_[_0xec79('0x4c')](_0x3106d8[_0xec79('0x49')],{'$or':_[_0xec79('0x4a')](_0x3106d8['attributes'],function(_0x5ab35f){var _0x556ed2={};_0x556ed2[_0x5ab35f]={'$like':'%'+_0x11397c[_0xec79('0x3e')]['filter']+'%'};return _0x556ed2;})});}_0x3106d8=_['merge']({},_0x3106d8,_0x11397c[_0xec79('0x4d')]);return _0x4cfce7[_0xec79('0x74')](_0x3106d8);}})[_0xec79('0x34')](function(_0x10c465){if(_0x10c465){_0x2ab071=_0x10c465['length'];if(!_0x11397c['query'][_0xec79('0x45')]('nolimit')){_0x3106d8['limit']=qs[_0xec79('0x2e')](_0x11397c[_0xec79('0x3e')][_0xec79('0x2e')]);_0x3106d8[_0xec79('0x2c')]=qs[_0xec79('0x2c')](_0x11397c[_0xec79('0x3e')][_0xec79('0x2c')]);}return _0x4cfce7[_0xec79('0x74')](_0x3106d8);}})[_0xec79('0x34')](function(_0x14bb3c){if(_0x14bb3c){return _0x14bb3c?{'count':_0x2ab071,'rows':_0x14bb3c}:null;}})[_0xec79('0x34')](respondWithResult(_0x165962,null))['catch'](handleError(_0x165962,null));};exports['addApplications']=function(_0x46a193,_0x40b122){var _0x56d5e5=_0x46a193[_0xec79('0x54')]['id'];var _0x3737f1=_0x46a193[_0xec79('0x5a')];var _0x568074=0xc8;var _0x116a09=null;return db[_0xec79('0x76')]['transaction']({'isolationLevel':db[_0xec79('0x76')][_0xec79('0x77')][_0xec79('0x78')][_0xec79('0x79')]},function(_0x3a344a){return db[_0xec79('0x4e')][_0xec79('0x66')]({'where':{'id':_0x56d5e5},'transaction':_0x3a344a})[_0xec79('0x34')](function(_0x4ac50a){if(_0x4ac50a){return db[_0xec79('0x7a')][_0xec79('0x35')]({'where':{'WhatsappAccountId':_0x56d5e5},'transaction':_0x3a344a})[_0xec79('0x34')](function(){var _0x451b08=_['map'](_0x3737f1,function(_0x5ce553){_0x5ce553[_0xec79('0x64')]=_0x56d5e5;return _0x5ce553;});return db[_0xec79('0x7a')][_0xec79('0x7b')](_0x451b08,{'transaction':_0x3a344a});});}else{_0x568074=0x194;_0x116a09=[];}});})[_0xec79('0x34')](function(){if(_0x568074!==0x194){return db['WhatsappApplication'][_0xec79('0x7c')]({'where':{'WhatsappAccountId':_0x56d5e5},'order':_0xec79('0x7d')})[_0xec79('0x34')](function(_0x2b796c){_0x116a09=_0x2b796c;});}})['catch'](function(_0x3edbf2){_0x568074=0x1f4;logger['error'](_0x3edbf2[_0xec79('0x7e')]);if(_0x3edbf2[_0xec79('0x38')]){delete _0x3edbf2[_0xec79('0x38')];}_0x116a09=_0x3edbf2;})[_0xec79('0x7f')](function(){if(_0x116a09===null){_0x40b122[_0xec79('0x29')](_0x568074);}else{if(_0x568074===0x1f4){_0x40b122[_0xec79('0x2a')](_0x568074)[_0xec79('0x80')](_0x116a09);}else{_0x40b122[_0xec79('0x2a')](_0x568074)[_0xec79('0x2b')](_0x116a09);}}});};exports['getApplications']=function(_0x24d740,_0x41afff,_0x5dc7b4){var _0x7a14cf={};var _0x12d111={};var _0x339b50;var _0x5d5c89;return db['WhatsappAccount'][_0xec79('0x66')]({'where':{'id':_0x24d740[_0xec79('0x54')]['id']}})[_0xec79('0x34')](handleEntityNotFound(_0x41afff,null))[_0xec79('0x34')](function(_0x5e70ba){if(_0x5e70ba){_0x339b50=_0x5e70ba;_0x12d111[_0xec79('0x3d')]=_['keys'](db['WhatsappApplication'][_0xec79('0x3a')]);_0x12d111[_0xec79('0x3e')]=_[_0xec79('0x3f')](_0x24d740[_0xec79('0x3e')]);_0x12d111[_0xec79('0x40')]=_[_0xec79('0x41')](_0x12d111[_0xec79('0x3d')],_0x12d111[_0xec79('0x3e')]);_0x7a14cf[_0xec79('0x42')]=_[_0xec79('0x41')](_0x12d111[_0xec79('0x3d')],qs[_0xec79('0x43')](_0x24d740[_0xec79('0x3e')][_0xec79('0x43')]));_0x7a14cf[_0xec79('0x42')]=_0x7a14cf[_0xec79('0x42')][_0xec79('0x44')]?_0x7a14cf[_0xec79('0x42')]:_0x12d111[_0xec79('0x3d')];_0x7a14cf['order']=qs[_0xec79('0x47')](_0x24d740[_0xec79('0x3e')][_0xec79('0x47')]);_0x7a14cf['where']=qs['filters'](_['pick'](_0x24d740[_0xec79('0x3e')],_0x12d111[_0xec79('0x40')]));if(_0x24d740[_0xec79('0x3e')][_0xec79('0x4b')]){_0x7a14cf['where']=_[_0xec79('0x4c')](_0x7a14cf['where'],{'$or':_[_0xec79('0x4a')](_0x7a14cf[_0xec79('0x42')],function(_0x2d7e80){var _0x281577={};_0x281577[_0x2d7e80]={'$like':'%'+_0x24d740[_0xec79('0x3e')][_0xec79('0x4b')]+'%'};return _0x281577;})});}_0x7a14cf=_[_0xec79('0x4c')]({},_0x7a14cf,_0x24d740['options']);return _0x339b50['getApplications'](_0x7a14cf);}})['then'](function(_0x5d990c){if(_0x5d990c){_0x5d5c89=_0x5d990c[_0xec79('0x44')];if(!_0x24d740[_0xec79('0x3e')][_0xec79('0x45')](_0xec79('0x6c'))){_0x7a14cf[_0xec79('0x2e')]=qs['limit'](_0x24d740[_0xec79('0x3e')]['limit']);_0x7a14cf[_0xec79('0x2c')]=qs[_0xec79('0x2c')](_0x24d740[_0xec79('0x3e')][_0xec79('0x2c')]);}return _0x339b50[_0xec79('0x81')](_0x7a14cf);}})[_0xec79('0x34')](function(_0x341325){if(_0x341325){return _0x341325?{'count':_0x5d5c89,'rows':_0x341325}:null;}})[_0xec79('0x34')](respondWithResult(_0x41afff,null))[_0xec79('0x52')](handleError(_0x41afff,null));};exports['notify']=function(_0x3d0a73,_0x4f7791,_0xd71758){var _0xae2d8f={'channel':_0xec79('0x82')};var _0xdaacd5=[];var _0x2834f0=[];var _0x516874={};return db[_0xec79('0x4e')][_0xec79('0x58')]({'where':{'id':_0x3d0a73['params']['id']},'include':[{'model':db[_0xec79('0x7a')],'as':_0xec79('0x83')}]})[_0xec79('0x34')](handleEntityNotFound(_0x4f7791,null))[_0xec79('0x34')](function(_0x42daba){_0xae2d8f[_0xec79('0x84')]=_0x42daba;if(_0xae2d8f['account']&&_0xae2d8f['account'][_0xec79('0x3c')]==='sinch'&&_0x3d0a73['body'][_0xec79('0x85')]){if(_0x3d0a73[_0xec79('0x5a')]['statuses'][_0xec79('0x44')]===0x0)return;if(_0x3d0a73[_0xec79('0x5a')][_0xec79('0x85')][0x0][_0xec79('0x86')]!==_0xec79('0x87'))return;return db[_0xec79('0x88')]['update']({'read':!![],'readAt':_0x3d0a73[_0xec79('0x5a')][_0xec79('0x85')][0x0][_0xec79('0x89')]},{'where':{'messageId':_0x3d0a73[_0xec79('0x5a')]['statuses'][0x0][_0xec79('0x8a')]},'individualHooks':!![]})['then'](function(_0x5567d2){return _0x4f7791['status'](0xc8)[_0xec79('0x2b')](_0x5567d2);});}_0xae2d8f[_0xec79('0x8b')]=_[_0xec79('0x8c')](_0x42daba[_0xec79('0x83')],[_0xec79('0x7d')],['asc']);if(_0xae2d8f[_0xec79('0x84')][_0xec79('0x83')]){delete _0xae2d8f[_0xec79('0x84')]['Applications'];}return db[_0xec79('0x8d')]['describe']()[_0xec79('0x34')](function(_0x1effe6){if(!_0x1effe6){throw new db[(_0xec79('0x8e'))][(_0xec79('0x8f'))](_0xec79('0x90'));}_0xdaacd5=_[_0xec79('0x91')](_[_0xec79('0x3f')](_0x1effe6),['createdAt',_0xec79('0x92')]);_0x2834f0=_[_0xec79('0x91')](_[_0xec79('0x3f')](_0x1effe6),[_0xec79('0x93'),_0xec79('0x92'),_0xec79('0x94'),'ListId']);_0xae2d8f['body']={'mapKey':_0xec79('0x95')};if(_0xae2d8f[_0xec79('0x84')]&&_0xae2d8f[_0xec79('0x84')][_0xec79('0x3c')]===_0xec79('0x96')){_0xae2d8f[_0xec79('0x5a')][_0xec79('0x97')]=_0x3d0a73[_0xec79('0x5a')][_0xec79('0x98')][_0xec79('0x99')](_0xec79('0x9a'),'');_0xae2d8f['body'][_0xec79('0x5a')]=_0x3d0a73[_0xec79('0x5a')]['Body'];_0xae2d8f[_0xec79('0x5a')][_0xec79('0x9b')]=_0x3d0a73[_0xec79('0x5a')][_0xec79('0x9c')];}if(_0xae2d8f[_0xec79('0x84')]&&_0xae2d8f['account'][_0xec79('0x3c')]===_0xec79('0x9d')){_0xae2d8f['body'][_0xec79('0x97')]=_0x3d0a73[_0xec79('0x5a')][_0xec79('0x9e')][0x0]['from'];_0xae2d8f[_0xec79('0x5a')][_0xec79('0x5a')]=_0x3d0a73[_0xec79('0x5a')][_0xec79('0x9e')][0x0][_0xec79('0x26')][_0xec79('0x5a')];_0xae2d8f[_0xec79('0x5a')][_0xec79('0x9b')]=_0x3d0a73[_0xec79('0x5a')][_0xec79('0x9e')][0x0][_0xec79('0x8a')];}if(_0xae2d8f[_0xec79('0x5a')]['id']){delete _0xae2d8f[_0xec79('0x5a')]['id'];}if(_[_0xec79('0x9f')](_0xae2d8f[_0xec79('0x5a')]['from'])){throw new db['Sequelize']['ValidationError'](_0xec79('0xa0'));}if(_[_0xec79('0x9f')](_0xae2d8f[_0xec79('0x5a')][_0xec79('0x5a')])||_0xae2d8f['body'][_0xec79('0x5a')]===''){throw new db[(_0xec79('0x8e'))][(_0xec79('0x8f'))](_0xec79('0xa1'));}if(_[_0xec79('0x9f')](_0xae2d8f[_0xec79('0x5a')][_0xec79('0xa2')])){throw new db[(_0xec79('0x8e'))]['ValidationError'](_0xec79('0xa3')+_0x2834f0);}if(!_[_0xec79('0xa4')](_0x2834f0,_0xae2d8f[_0xec79('0x5a')][_0xec79('0xa2')])){throw new db['Sequelize'][(_0xec79('0x8f'))](_0xec79('0xa5')+_0x2834f0);}_0x516874[_0xae2d8f[_0xec79('0x5a')]['mapKey']]=_0xae2d8f[_0xec79('0x5a')][_0xec79('0x97')];return db[_0xec79('0xa6')][_0xec79('0x58')]({'where':{'id':_0xae2d8f['account'][_0xec79('0xa7')]},'include':[{'model':db[_0xec79('0x8d')],'as':'Contacts','where':_0x516874,'limit':0x1,'order':[[_0xec79('0x92'),_0xec79('0xa8')]]}]});})['then'](handleEntityNotFound(_0x4f7791,null))[_0xec79('0x34')](function(_0x573319){if(_0x573319){_0xae2d8f[_0xec79('0xa9')]=_[_0xec79('0x6f')](_0x573319,[_0xec79('0xaa')]);if(_0x573319[_0xec79('0xaa')][_0xec79('0x44')]){return _0x573319[_0xec79('0xaa')][0x0];}var _0x32318f=_['defaults'](_0xae2d8f[_0xec79('0x5a')],{'firstName':_0xae2d8f['body'][_0xec79('0x97')],'ListId':_0x573319['id']});_0x32318f[_0xae2d8f[_0xec79('0x5a')][_0xec79('0xa2')]]=_0xae2d8f[_0xec79('0x5a')]['from'];return db[_0xec79('0x8d')][_0xec79('0x59')](_0x32318f,{'fields':_0xdaacd5,'raw':!![]});}})[_0xec79('0x34')](handleEntityNotFound(_0x4f7791,null))[_0xec79('0x34')](function(_0x33ef87){if(_0x33ef87){_0xae2d8f[_0xec79('0xab')]=_0x33ef87;var _0x315130={'ContactId':_0x33ef87['id'],'phone':_0xae2d8f['body'][_0xec79('0x97')],'WhatsappAccountId':_0x3d0a73[_0xec79('0x54')]['id']};var _0x2982b7={'ContactId':_0x33ef87['id'],'WhatsappAccountId':_0x3d0a73['params']['id'],'closed':![]};return db['WhatsappInteraction']['find']({'where':_0x2982b7})[_0xec79('0x34')](function(_0x477816){if(_0x477816){return[_0x477816,![]];}return db[_0xec79('0xac')][_0xec79('0x59')](_0x315130)[_0xec79('0x34')](function(_0x58bef7){return[_0x58bef7,!![]];});});}})['spread'](function(_0x1c2ca9,_0x2d36ea){_0xae2d8f[_0xec79('0xad')]=_0x1c2ca9['get']({'plain':!![]});_0xae2d8f[_0xec79('0xad')]['created']=![];if(_0x2d36ea){if(_0xae2d8f[_0xec79('0x84')]['autoclose']){_0xae2d8f[_0xec79('0x8b')][_0xec79('0xae')]({'id':0x0,'priority':_0xae2d8f[_0xec79('0x8b')]['length']+0x1,'app':_0xec79('0xaf'),'appdata':_0xec79('0xb0'),'interval':_0xec79('0xb1')});}_0xae2d8f['interaction'][_0xec79('0xb2')]=!![];}return db['WhatsappMessage'][_0xec79('0x59')]({'phone':_0xae2d8f[_0xec79('0x5a')][_0xec79('0x97')],'messageId':_0xae2d8f[_0xec79('0x5a')][_0xec79('0x9b')],'body':_0xae2d8f[_0xec79('0x5a')]['body'],'WhatsappAccountId':_0x3d0a73['params']['id'],'WhatsappInteractionId':_0x1c2ca9['id'],'direction':'in','ContactId':_0x1c2ca9[_0xec79('0xb3')],'AttachmentId':_0xae2d8f[_0xec79('0x5a')]['AttachmentId']});})[_0xec79('0x34')](function(_0x36fbf1){_0xae2d8f[_0xec79('0x26')]=_0x36fbf1;if(_0xae2d8f['interaction']['UserId']){return db[_0xec79('0x75')][_0xec79('0x58')]({'attributes':['id',_0xec79('0x38')],'where':{'id':_0xae2d8f[_0xec79('0xad')][_0xec79('0xb4')]}})[_0xec79('0x34')](function(_0x488408){if(_0x488408){_0xae2d8f[_0xec79('0x8b')][_0xec79('0xb5')]({'id':0x0,'priority':0x0,'app':_0xec79('0xb6'),'appdata':_0x488408[_0xec79('0x38')]+','+(_0xae2d8f[_0xec79('0x84')][_0xec79('0xb7')]||0xa),'interval':_0xec79('0xb1')});}return respondWithRpcPromise(_0xec79('0xb8'),_0xec79('0xb9'),_0xae2d8f);});}return respondWithRpcPromise(_0xec79('0xb8'),_0xec79('0xb9'),_0xae2d8f);})['then'](function(_0xf0181b){if(_0xf0181b){var _0x58b202=0xc8;var _0x11bfb2=_0xec79('0xba');logger[_0xec79('0x27')](_0xec79('0xbb'),_0x11bfb2,_0x58b202,_0xec79('0xbc'));logger[_0xec79('0x21')](_0xec79('0xbd'),_0x11bfb2,_0x58b202,_0xec79('0xbc'),JSON[_0xec79('0x22')](_0xf0181b));if(_0xae2d8f['account'][_0xec79('0x3c')]===_0xec79('0x96')){return _0x4f7791[_0xec79('0x2a')](_0x58b202)[_0xec79('0xbe')](_0xec79('0xbf'),_0xec79('0xc0'))[_0xec79('0x80')](_0xec79('0xc1'));}else{return _0x4f7791[_0xec79('0x2a')](_0x58b202)[_0xec79('0x2b')](_0xf0181b);}}});})[_0xec79('0x52')](handleError(_0x4f7791,null));};exports['send']=function(_0x352f85,_0x4b6de8,_0x4764f1){var _0x359de4,_0xe347e7,_0x1b9eb2;if(_[_0xec79('0x9f')](_0x352f85[_0xec79('0x5a')][_0xec79('0x5a')])||_0x352f85[_0xec79('0x5a')]['body']===''){throw new db[(_0xec79('0x8e'))][(_0xec79('0x8f'))](_0xec79('0xa1'));}if(_[_0xec79('0x9f')](_0x352f85[_0xec79('0x5a')]['to'])){throw new db[(_0xec79('0x8e'))]['ValidationError']('to\x20is\x20mandatory');}_0x359de4=_0x352f85[_0xec79('0x5a')]['to'];return db['WhatsappAccount'][_0xec79('0x58')]({'where':{'id':_0x352f85[_0xec79('0x54')]['id']},'include':[{'model':db[_0xec79('0xa6')],'as':'List','include':[{'model':db['CmContact'],'as':_0xec79('0xaa'),'where':{'mobile':_0x359de4},'limit':0x1,'order':[[_0xec79('0x92'),'DESC']]}]}]})[_0xec79('0x34')](handleEntityNotFound(_0x4b6de8,null))[_0xec79('0x34')](function(_0x4eb074){if(_0x4eb074&&_0x4eb074[_0xec79('0xc2')]){_0xe347e7=_0x4eb074[_0xec79('0x36')]({'plain':!![]});if(_0xe347e7['List']&&_0xe347e7[_0xec79('0xc2')][_0xec79('0xaa')]['length']){return _0xe347e7[_0xec79('0xc2')][_0xec79('0xaa')][0x0];}return db['CmContact'][_0xec79('0x59')](_[_0xec79('0xc3')](_0x352f85['body'],{'firstName':_0x359de4,'mobile':_0x359de4,'phone':_0x359de4,'ListId':_0xe347e7[_0xec79('0xa7')]}));}})[_0xec79('0x34')](handleEntityNotFound(_0x4b6de8,null))[_0xec79('0x34')](function(_0x516920){if(_0x516920){_0x1b9eb2=_0x516920;return db[_0xec79('0xac')][_0xec79('0x58')]({'where':{'ContactId':_0x1b9eb2['id'],'closed':![],'WhatsappAccountId':_0xe347e7['id']}})[_0xec79('0x34')](function(_0x5c49bd){if(_0x5c49bd){return[_0x5c49bd,![]];}return db[_0xec79('0xac')][_0xec79('0x59')]({'UserId':_0x352f85[_0xec79('0x5b')]['id'],'ContactId':_0x1b9eb2['id'],'WhatsappAccountId':_0xe347e7['id'],'phone':_0x359de4,'firstMsgDirection':_0xec79('0xc4'),'Messages':[_[_0xec79('0x4c')](_0x352f85[_0xec79('0x5a')],{'read':![],'body':_0x352f85['body']['body'],'phone':_0x359de4,'WhatsappAccountId':_0xe347e7['id'],'UserId':_0x352f85['user']['id'],'ContactId':_0x1b9eb2['id']})]},{'include':[{'model':db[_0xec79('0x88')],'as':_0xec79('0xc5')}]})[_0xec79('0x34')](function(_0x59f15f){return[_0x59f15f,!![]];});});}})[_0xec79('0xc6')](function(_0x13efec,_0x23f529){if(_0x23f529){return _0x13efec;}return db['WhatsappMessage'][_0xec79('0x59')](_[_0xec79('0x4c')](_0x352f85[_0xec79('0x5a')],{'read':![],'body':_0x352f85['body'][_0xec79('0x5a')],'phone':_0x359de4,'WhatsappAccountId':_0xe347e7['id'],'WhatsappInteractionId':_0x13efec['id'],'UserId':_0x352f85[_0xec79('0x5b')]['id'],'ContactId':_0x1b9eb2['id']}))[_0xec79('0x34')](function(_0x9f6684){_0x13efec['dataValues'][_0xec79('0xc5')]=[];_0x13efec['dataValues']['Messages'][_0xec79('0xae')](_0x9f6684[_0xec79('0xc7')]);return _0x13efec;});})['then'](respondWithResult(_0x4b6de8,null))[_0xec79('0x52')](handleError(_0x4b6de8,null));};
\ No newline at end of file
+var _0x2786=['api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','./whatsappAccount.socket','register','jayson/promise','http','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','offset','limit','set','Content-Range','json','apply','reject','save','update','get','WhatsappAccounts','UserProfileResource','destroy','stack','name','send','Pause','mandatoryDispositionPause','map','rawAttributes','fieldName','type','key','model','keys','intersection','query','fields','attributes','length','hasOwnProperty','sort','filters','pick','filter','where','merge','VIRTUAL','options','WhatsappAccount','count','includeAll','include','findAll','rows','show','params','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','WhatsappAccountId','Disposition','getDispositions','findOne','order','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','nolimit','removeAnswers','addAgents','omit','spread','emit','userWhatsappAccount:save','removeAgents','isArray','userWhatsappAccount:remove','getAgents','User','sequelize','transaction','ISOLATION_LEVELS','WhatsappApplication','bulkCreate','finally','getApplications','notify','whatsapp','Applications','account','sinch','statuses','state','WhatsappMessage','timestamp','message_id','applications','priority','ValidationError','difference','createdAt','updatedAt','ListId','mobile','from','Body','notifications','messageId','Sequelize','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','isNil','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','CmList','list','Contacts','mapKey','CmContact','WhatsappInteraction','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','ContactId','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','twilio','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','to\x20is\x20mandatory','List','DESC','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger'];(function(_0x4c7a63,_0x5acbf8){var _0x44b14b=function(_0x48b6f3){while(--_0x48b6f3){_0x4c7a63['push'](_0x4c7a63['shift']());}};_0x44b14b(++_0x5acbf8);}(_0x2786,0xad));var _0x6278=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x2786[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require(_0x6278('0x0'));var rimraf=require(_0x6278('0x1'));var zipdir=require(_0x6278('0x2'));var jsonpatch=require(_0x6278('0x3'));var rp=require(_0x6278('0x4'));var moment=require('moment');var BPromise=require(_0x6278('0x5'));var Mustache=require(_0x6278('0x6'));var util=require(_0x6278('0x7'));var path=require(_0x6278('0x8'));var sox=require(_0x6278('0x9'));var csv=require(_0x6278('0xa'));var ejs=require(_0x6278('0xb'));var fs=require('fs');var fs_extra=require(_0x6278('0xc'));var _=require(_0x6278('0xd'));var squel=require('squel');var crypto=require(_0x6278('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x6278('0xf'));var toCsv=require(_0x6278('0xa'));var querystring=require('querystring');var Papa=require(_0x6278('0x10'));var Redis=require(_0x6278('0x11'));var authService=require(_0x6278('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6278('0x13'));var logger=require(_0x6278('0x14'))(_0x6278('0x15'));var utils=require(_0x6278('0x16'));var config=require(_0x6278('0x17'));var licenseUtil=require(_0x6278('0x18'));var db=require('../../mysqldb')['db'];config[_0x6278('0x19')]=_[_0x6278('0x1a')](config[_0x6278('0x19')],{'host':_0x6278('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6278('0x19')]));require(_0x6278('0x1c'))[_0x6278('0x1d')](socket);var jayson=require(_0x6278('0x1e'));var client=jayson['client'][_0x6278('0x1f')]({'port':0x232c});function respondWithRpcPromise(_0xa7c1b1,_0x23ae1a,_0x44e043,_0x3894bd){return new BPromise(function(_0x14128a,_0x31b932){var _0x398e82=_0x3894bd||client;return _0x398e82[_0x6278('0x20')](_0xa7c1b1,_0x44e043)[_0x6278('0x21')](function(_0xf770d2){logger[_0x6278('0x22')](_0x6278('0x23'),_0x23ae1a,_0x6278('0x24'));logger['debug'](_0x6278('0x25'),_0x23ae1a,_0x6278('0x24'),JSON[_0x6278('0x26')](_0xf770d2));if(_0xf770d2[_0x6278('0x27')]){if(_0xf770d2[_0x6278('0x27')][_0x6278('0x28')]===0x1f4){logger[_0x6278('0x27')](_0x6278('0x23'),_0x23ae1a,_0xf770d2[_0x6278('0x27')][_0x6278('0x29')]);return _0x31b932(_0xf770d2[_0x6278('0x27')][_0x6278('0x29')]);}logger[_0x6278('0x27')]('WhatsappAccount,\x20%s,\x20%s',_0x23ae1a,_0xf770d2[_0x6278('0x27')]['message']);return _0x14128a(_0xf770d2[_0x6278('0x27')][_0x6278('0x29')]);}else{logger[_0x6278('0x22')](_0x6278('0x23'),_0x23ae1a,'request\x20sent');_0x14128a(_0xf770d2[_0x6278('0x2a')][_0x6278('0x29')]);}})['catch'](function(_0x6a3cc3){logger[_0x6278('0x27')](_0x6278('0x23'),_0x23ae1a,_0x6a3cc3);_0x31b932(_0x6a3cc3);});});}function respondWithStatusCode(_0x2c1d6a,_0x1cad2a){_0x1cad2a=_0x1cad2a||0xcc;return function(_0x320e51){if(_0x320e51){return _0x2c1d6a[_0x6278('0x2b')](_0x1cad2a);}return _0x2c1d6a[_0x6278('0x2c')](_0x1cad2a)['end']();};}function respondWithResult(_0x15f38e,_0x4645cb){_0x4645cb=_0x4645cb||0xc8;return function(_0x15a6f3){if(_0x15a6f3){return _0x15f38e[_0x6278('0x2c')](_0x4645cb)['json'](_0x15a6f3);}};}function respondWithFilteredResult(_0x534781,_0x155325){return function(_0x38bd19){if(_0x38bd19){var _0x191261=typeof _0x155325[_0x6278('0x2d')]==='undefined'&&typeof _0x155325[_0x6278('0x2e')]==='undefined';var _0x36e85f=_0x38bd19['count'];var _0x53b416=_0x191261?0x0:_0x155325[_0x6278('0x2d')];var _0x5866b1=_0x191261?_0x38bd19['count']:_0x155325[_0x6278('0x2d')]+_0x155325['limit'];var _0x900518;if(_0x5866b1>=_0x36e85f){_0x5866b1=_0x36e85f;_0x900518=0xc8;}else{_0x900518=0xce;}_0x534781[_0x6278('0x2c')](_0x900518);return _0x534781[_0x6278('0x2f')](_0x6278('0x30'),_0x53b416+'-'+_0x5866b1+'/'+_0x36e85f)[_0x6278('0x31')](_0x38bd19);}return null;};}function patchUpdates(_0x30ca22){return function(_0x5c620e){try{jsonpatch[_0x6278('0x32')](_0x5c620e,_0x30ca22,!![]);}catch(_0x1e1669){return BPromise[_0x6278('0x33')](_0x1e1669);}return _0x5c620e[_0x6278('0x34')]();};}function saveUpdates(_0x486882,_0x4e3515){return function(_0xed7153){if(_0xed7153){return _0xed7153[_0x6278('0x35')](_0x486882)[_0x6278('0x21')](function(_0x21d658){return _0x21d658;});}return null;};}function removeEntity(_0x2ec6d5,_0x556c0f){return function(_0x35d32f){if(_0x35d32f){return _0x35d32f['destroy']()[_0x6278('0x21')](function(){var _0x353c60=_0x35d32f[_0x6278('0x36')]({'plain':!![]});var _0x5d9a5e=_0x6278('0x37');return db[_0x6278('0x38')][_0x6278('0x39')]({'where':{'type':_0x5d9a5e,'resourceId':_0x353c60['id']}})[_0x6278('0x21')](function(){return _0x35d32f;});})[_0x6278('0x21')](function(){_0x2ec6d5[_0x6278('0x2c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x295930,_0x4e0a1f){return function(_0x434331){if(!_0x434331){_0x295930[_0x6278('0x2b')](0x194);}return _0x434331;};}function handleError(_0x4f1292,_0x4aae37){_0x4aae37=_0x4aae37||0x1f4;return function(_0x22dbbb){logger[_0x6278('0x27')](_0x22dbbb[_0x6278('0x3a')]);if(_0x22dbbb[_0x6278('0x3b')]){delete _0x22dbbb[_0x6278('0x3b')];}_0x4f1292['status'](_0x4aae37)[_0x6278('0x3c')](_0x22dbbb);};}exports['index']=function(_0x5ecb4f,_0x4f2307){var _0x49939d={'include':[{'model':db[_0x6278('0x3d')],'as':_0x6278('0x3e')}]},_0x5200c6={},_0x3b3b68={'count':0x0,'rows':[]};var _0x57d236=_[_0x6278('0x3f')](db['WhatsappAccount'][_0x6278('0x40')],function(_0x588db8){return{'name':_0x588db8[_0x6278('0x41')],'type':_0x588db8[_0x6278('0x42')][_0x6278('0x43')]};});_0x5200c6[_0x6278('0x44')]=_[_0x6278('0x3f')](_0x57d236,_0x6278('0x3b'));_0x5200c6['query']=_[_0x6278('0x45')](_0x5ecb4f['query']);_0x5200c6['filters']=_[_0x6278('0x46')](_0x5200c6[_0x6278('0x44')],_0x5200c6[_0x6278('0x47')]);_0x49939d['attributes']=_[_0x6278('0x46')](_0x5200c6['model'],qs[_0x6278('0x48')](_0x5ecb4f[_0x6278('0x47')]['fields']));_0x49939d[_0x6278('0x49')]=_0x49939d['attributes'][_0x6278('0x4a')]?_0x49939d[_0x6278('0x49')]:_0x5200c6['model'];if(!_0x5ecb4f['query'][_0x6278('0x4b')]('nolimit')){_0x49939d[_0x6278('0x2e')]=qs[_0x6278('0x2e')](_0x5ecb4f['query'][_0x6278('0x2e')]);_0x49939d[_0x6278('0x2d')]=qs[_0x6278('0x2d')](_0x5ecb4f[_0x6278('0x47')][_0x6278('0x2d')]);}_0x49939d['order']=qs['sort'](_0x5ecb4f[_0x6278('0x47')][_0x6278('0x4c')]);_0x49939d['where']=qs[_0x6278('0x4d')](_[_0x6278('0x4e')](_0x5ecb4f[_0x6278('0x47')],_0x5200c6[_0x6278('0x4d')]),_0x57d236);if(_0x5ecb4f[_0x6278('0x47')][_0x6278('0x4f')]){_0x49939d[_0x6278('0x50')]=_[_0x6278('0x51')](_0x49939d['where'],{'$or':_[_0x6278('0x3f')](_0x57d236,function(_0x373373){if(_0x373373['type']!==_0x6278('0x52')){var _0x25bda8={};_0x25bda8[_0x373373[_0x6278('0x3b')]]={'$like':'%'+_0x5ecb4f[_0x6278('0x47')][_0x6278('0x4f')]+'%'};return _0x25bda8;}})});}_0x49939d=_[_0x6278('0x51')]({},_0x49939d,_0x5ecb4f[_0x6278('0x53')]);var _0x50dfeb={'where':_0x49939d[_0x6278('0x50')]};return db[_0x6278('0x54')][_0x6278('0x55')](_0x50dfeb)[_0x6278('0x21')](function(_0x5c12bd){_0x3b3b68[_0x6278('0x55')]=_0x5c12bd;if(_0x5ecb4f['query'][_0x6278('0x56')]){_0x49939d[_0x6278('0x57')]=[{'all':!![]}];}return db[_0x6278('0x54')][_0x6278('0x58')](_0x49939d);})['then'](function(_0x387f73){_0x3b3b68[_0x6278('0x59')]=_0x387f73;return _0x3b3b68;})[_0x6278('0x21')](respondWithFilteredResult(_0x4f2307,_0x49939d))['catch'](handleError(_0x4f2307,null));};exports[_0x6278('0x5a')]=function(_0x4c537e,_0x3e7445){var _0x161ef6={'raw':![],'where':{'id':_0x4c537e[_0x6278('0x5b')]['id']},'include':[{'model':db[_0x6278('0x3d')],'as':'mandatoryDispositionPause'}]},_0x2f7ba0={};_0x2f7ba0[_0x6278('0x44')]=_[_0x6278('0x45')](db[_0x6278('0x54')]['rawAttributes']);_0x2f7ba0[_0x6278('0x47')]=_['keys'](_0x4c537e['query']);_0x2f7ba0[_0x6278('0x4d')]=_['intersection'](_0x2f7ba0[_0x6278('0x44')],_0x2f7ba0[_0x6278('0x47')]);_0x161ef6[_0x6278('0x49')]=_['intersection'](_0x2f7ba0['model'],qs[_0x6278('0x48')](_0x4c537e[_0x6278('0x47')]['fields']));_0x161ef6['attributes']=_0x161ef6[_0x6278('0x49')][_0x6278('0x4a')]?_0x161ef6[_0x6278('0x49')]:_0x2f7ba0[_0x6278('0x44')];if(_0x4c537e[_0x6278('0x47')]['includeAll']){_0x161ef6[_0x6278('0x57')]=[{'all':!![]}];}_0x161ef6=_[_0x6278('0x51')]({},_0x161ef6,_0x4c537e[_0x6278('0x53')]);return db[_0x6278('0x54')][_0x6278('0x5c')](_0x161ef6)[_0x6278('0x21')](handleEntityNotFound(_0x3e7445,null))[_0x6278('0x21')](respondWithResult(_0x3e7445,null))[_0x6278('0x5d')](handleError(_0x3e7445,null));};exports[_0x6278('0x5e')]=function(_0x47af06,_0x483f54){return db[_0x6278('0x54')][_0x6278('0x5e')](_0x47af06[_0x6278('0x5f')],{})[_0x6278('0x21')](function(_0x20463b){var _0x2ad03f=_0x47af06[_0x6278('0x60')][_0x6278('0x36')]({'plain':!![]});if(!_0x2ad03f)throw new Error(_0x6278('0x61'));if(_0x2ad03f[_0x6278('0x62')]==='user'){var _0x311f76=_0x20463b[_0x6278('0x36')]({'plain':!![]});var _0xdfd21f=_0x6278('0x37');return db[_0x6278('0x63')][_0x6278('0x5c')]({'where':{'name':_0xdfd21f,'userProfileId':_0x2ad03f[_0x6278('0x64')]},'raw':!![]})[_0x6278('0x21')](function(_0x50eae5){if(_0x50eae5&&_0x50eae5[_0x6278('0x65')]===0x0){return db[_0x6278('0x38')][_0x6278('0x5e')]({'name':_0x311f76[_0x6278('0x3b')],'resourceId':_0x311f76['id'],'type':_0x50eae5[_0x6278('0x3b')],'sectionId':_0x50eae5['id']},{})['then'](function(){return _0x20463b;});}else{return _0x20463b;}})[_0x6278('0x5d')](function(_0x1bd918){logger[_0x6278('0x27')](_0x6278('0x66'),_0x1bd918);throw _0x1bd918;});}return _0x20463b;})['then'](respondWithResult(_0x483f54,0xc9))[_0x6278('0x5d')](handleError(_0x483f54,null));};exports[_0x6278('0x35')]=function(_0x10c54b,_0x4c64db){if(_0x10c54b[_0x6278('0x5f')]['id']){delete _0x10c54b[_0x6278('0x5f')]['id'];}return db[_0x6278('0x54')][_0x6278('0x5c')]({'where':{'id':_0x10c54b[_0x6278('0x5b')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0x6278('0x21')](handleEntityNotFound(_0x4c64db,null))[_0x6278('0x21')](saveUpdates(_0x10c54b[_0x6278('0x5f')],null))[_0x6278('0x21')](respondWithResult(_0x4c64db,null))[_0x6278('0x5d')](handleError(_0x4c64db,null));};exports[_0x6278('0x39')]=function(_0x62fa17,_0x5f413d){return db[_0x6278('0x54')]['find']({'where':{'id':_0x62fa17[_0x6278('0x5b')]['id']}})['then'](handleEntityNotFound(_0x5f413d,null))[_0x6278('0x21')](removeEntity(_0x5f413d,null))[_0x6278('0x5d')](handleError(_0x5f413d,null));};exports[_0x6278('0x67')]=function(_0x591788,_0x8cf136){return db[_0x6278('0x54')][_0x6278('0x67')]()['then'](respondWithResult(_0x8cf136,null))[_0x6278('0x5d')](handleError(_0x8cf136,null));};exports[_0x6278('0x68')]=function(_0xb035be,_0xb0dac5,_0x11f789){if(_0xb035be[_0x6278('0x5f')]['id']){delete _0xb035be[_0x6278('0x5f')]['id'];}return db[_0x6278('0x54')][_0x6278('0x5c')]({'where':{'id':_0xb035be['params']['id']}})[_0x6278('0x21')](handleEntityNotFound(_0xb0dac5,null))[_0x6278('0x21')](function(_0x58cd25){if(_0x58cd25){_0xb035be[_0x6278('0x5f')][_0x6278('0x69')]=_0x58cd25['id'];return db[_0x6278('0x6a')][_0x6278('0x5e')](_0xb035be[_0x6278('0x5f')]);}})[_0x6278('0x21')](respondWithResult(_0xb0dac5,null))[_0x6278('0x5d')](handleError(_0xb0dac5,null));};exports[_0x6278('0x6b')]=function(_0x10c3ed,_0x326578,_0x4ba391){var _0x15b5e4={'raw':![],'where':{}};var _0x209434={};var _0x3f1ab6={'count':0x0,'rows':[]};return db[_0x6278('0x54')][_0x6278('0x6c')]({'where':{'id':_0x10c3ed[_0x6278('0x5b')]['id']}})[_0x6278('0x21')](handleEntityNotFound(_0x326578,null))[_0x6278('0x21')](function(_0x773b99){if(_0x773b99){_0x209434[_0x6278('0x44')]=_[_0x6278('0x45')](db['Disposition'][_0x6278('0x40')]);_0x209434[_0x6278('0x47')]=_['keys'](_0x10c3ed[_0x6278('0x47')]);_0x209434['filters']=_[_0x6278('0x46')](_0x209434[_0x6278('0x44')],_0x209434[_0x6278('0x47')]);_0x15b5e4[_0x6278('0x49')]=_['intersection'](_0x209434['model'],qs[_0x6278('0x48')](_0x10c3ed['query'][_0x6278('0x48')]));_0x15b5e4[_0x6278('0x49')]=_0x15b5e4['attributes'][_0x6278('0x4a')]?_0x15b5e4[_0x6278('0x49')]:_0x209434[_0x6278('0x44')];if(!_0x10c3ed[_0x6278('0x47')][_0x6278('0x4b')]('nolimit')){_0x15b5e4[_0x6278('0x2e')]=qs[_0x6278('0x2e')](_0x10c3ed[_0x6278('0x47')][_0x6278('0x2e')]);_0x15b5e4[_0x6278('0x2d')]=qs[_0x6278('0x2d')](_0x10c3ed[_0x6278('0x47')][_0x6278('0x2d')]);}_0x15b5e4[_0x6278('0x6d')]=qs[_0x6278('0x4c')](_0x10c3ed[_0x6278('0x47')][_0x6278('0x4c')]);_0x15b5e4[_0x6278('0x50')]=qs[_0x6278('0x4d')](_['pick'](_0x10c3ed['query'],_0x209434[_0x6278('0x4d')]));_0x15b5e4['where']['WhatsappAccountId']=_0x773b99['id'];if(_0x10c3ed[_0x6278('0x47')][_0x6278('0x4f')]){_0x15b5e4[_0x6278('0x50')]=_[_0x6278('0x51')](_0x15b5e4[_0x6278('0x50')],{'$or':_[_0x6278('0x3f')](_0x15b5e4[_0x6278('0x49')],function(_0x55f798){var _0x21ed87={};_0x21ed87[_0x55f798]={'$like':'%'+_0x10c3ed[_0x6278('0x47')][_0x6278('0x4f')]+'%'};return _0x21ed87;})});}_0x15b5e4=_[_0x6278('0x51')]({},_0x15b5e4,_0x10c3ed[_0x6278('0x53')]);return db[_0x6278('0x6a')][_0x6278('0x55')]({'where':_0x15b5e4[_0x6278('0x50')]})['then'](function(_0x18ac5d){_0x3f1ab6['count']=_0x18ac5d;if(_0x10c3ed[_0x6278('0x47')][_0x6278('0x56')]){_0x15b5e4[_0x6278('0x57')]=[{'all':!![]}];}return db['Disposition'][_0x6278('0x58')](_0x15b5e4);})[_0x6278('0x21')](function(_0x5260fa){_0x3f1ab6[_0x6278('0x59')]=_0x5260fa;return _0x3f1ab6;});}})['then'](respondWithFilteredResult(_0x326578,_0x15b5e4))[_0x6278('0x5d')](handleError(_0x326578,null));};exports[_0x6278('0x6e')]=function(_0x1b0f94,_0xdcbef8,_0x5943a7){return db[_0x6278('0x54')][_0x6278('0x5c')]({'where':{'id':_0x1b0f94[_0x6278('0x5b')]['id']}})['then'](handleEntityNotFound(_0xdcbef8,null))[_0x6278('0x21')](function(_0x474098){if(_0x474098){return _0x474098[_0x6278('0x6e')](_0x1b0f94['query'][_0x6278('0x6f')]);}})[_0x6278('0x21')](respondWithStatusCode(_0xdcbef8,null))[_0x6278('0x5d')](handleError(_0xdcbef8,null));};exports[_0x6278('0x70')]=function(_0x55dca2,_0x2c2c73,_0x8ae9ba){if(_0x55dca2[_0x6278('0x5f')]['id']){delete _0x55dca2[_0x6278('0x5f')]['id'];}return db['WhatsappAccount'][_0x6278('0x5c')]({'where':{'id':_0x55dca2[_0x6278('0x5b')]['id']}})['then'](handleEntityNotFound(_0x2c2c73,null))[_0x6278('0x21')](function(_0x35063e){if(_0x35063e){_0x55dca2[_0x6278('0x5f')][_0x6278('0x69')]=_0x35063e['id'];return db[_0x6278('0x71')][_0x6278('0x5e')](_0x55dca2['body']);}})['then'](respondWithResult(_0x2c2c73,null))['catch'](handleError(_0x2c2c73,null));};exports[_0x6278('0x72')]=function(_0x46e27b,_0x387888,_0x285529){var _0x12c183={'raw':![],'where':{}};var _0x6067b7={};var _0x112a18={'count':0x0,'rows':[]};return db[_0x6278('0x54')]['findOne']({'where':{'id':_0x46e27b[_0x6278('0x5b')]['id']}})['then'](handleEntityNotFound(_0x387888,null))[_0x6278('0x21')](function(_0x40361f){if(_0x40361f){_0x6067b7['model']=_['keys'](db['CannedAnswer'][_0x6278('0x40')]);_0x6067b7[_0x6278('0x47')]=_[_0x6278('0x45')](_0x46e27b['query']);_0x6067b7[_0x6278('0x4d')]=_['intersection'](_0x6067b7[_0x6278('0x44')],_0x6067b7['query']);_0x12c183[_0x6278('0x49')]=_['intersection'](_0x6067b7['model'],qs['fields'](_0x46e27b[_0x6278('0x47')][_0x6278('0x48')]));_0x12c183[_0x6278('0x49')]=_0x12c183[_0x6278('0x49')][_0x6278('0x4a')]?_0x12c183['attributes']:_0x6067b7['model'];if(!_0x46e27b[_0x6278('0x47')]['hasOwnProperty'](_0x6278('0x73'))){_0x12c183[_0x6278('0x2e')]=qs[_0x6278('0x2e')](_0x46e27b[_0x6278('0x47')][_0x6278('0x2e')]);_0x12c183[_0x6278('0x2d')]=qs[_0x6278('0x2d')](_0x46e27b[_0x6278('0x47')][_0x6278('0x2d')]);}_0x12c183[_0x6278('0x6d')]=qs[_0x6278('0x4c')](_0x46e27b[_0x6278('0x47')]['sort']);_0x12c183['where']=qs[_0x6278('0x4d')](_['pick'](_0x46e27b[_0x6278('0x47')],_0x6067b7['filters']));_0x12c183[_0x6278('0x50')][_0x6278('0x69')]=_0x40361f['id'];if(_0x46e27b['query']['filter']){_0x12c183[_0x6278('0x50')]=_[_0x6278('0x51')](_0x12c183[_0x6278('0x50')],{'$or':_[_0x6278('0x3f')](_0x12c183[_0x6278('0x49')],function(_0x36e224){var _0x2f5411={};_0x2f5411[_0x36e224]={'$like':'%'+_0x46e27b[_0x6278('0x47')][_0x6278('0x4f')]+'%'};return _0x2f5411;})});}_0x12c183=_[_0x6278('0x51')]({},_0x12c183,_0x46e27b[_0x6278('0x53')]);return db[_0x6278('0x71')][_0x6278('0x55')]({'where':_0x12c183['where']})[_0x6278('0x21')](function(_0x57c4a7){_0x112a18[_0x6278('0x55')]=_0x57c4a7;if(_0x46e27b[_0x6278('0x47')][_0x6278('0x56')]){_0x12c183[_0x6278('0x57')]=[{'all':!![]}];}return db[_0x6278('0x71')]['findAll'](_0x12c183);})[_0x6278('0x21')](function(_0x1124b0){_0x112a18[_0x6278('0x59')]=_0x1124b0;return _0x112a18;});}})['then'](respondWithFilteredResult(_0x387888,_0x12c183))[_0x6278('0x5d')](handleError(_0x387888,null));};exports[_0x6278('0x74')]=function(_0x7965cc,_0x8d4ea6,_0x484085){return db[_0x6278('0x54')][_0x6278('0x5c')]({'where':{'id':_0x7965cc[_0x6278('0x5b')]['id']}})[_0x6278('0x21')](handleEntityNotFound(_0x8d4ea6,null))[_0x6278('0x21')](function(_0x1789bb){if(_0x1789bb){return _0x1789bb[_0x6278('0x74')](_0x7965cc[_0x6278('0x47')][_0x6278('0x6f')]);}})[_0x6278('0x21')](respondWithStatusCode(_0x8d4ea6,null))[_0x6278('0x5d')](handleError(_0x8d4ea6,null));};exports[_0x6278('0x75')]=function(_0xd71bca,_0x379b5a,_0x1903c5){return db[_0x6278('0x54')]['find']({'where':{'id':_0xd71bca['params']['id']}})[_0x6278('0x21')](handleEntityNotFound(_0x379b5a,null))[_0x6278('0x21')](function(_0x243590){if(_0x243590){return _0x243590[_0x6278('0x75')](_0xd71bca[_0x6278('0x5f')][_0x6278('0x6f')],_[_0x6278('0x76')](_0xd71bca[_0x6278('0x5f')],[_0x6278('0x6f'),'id'])||{})[_0x6278('0x77')](function(_0x3586a1){for(var _0x3f92ed=0x0;_0x3f92ed<_0xd71bca[_0x6278('0x5f')]['ids'][_0x6278('0x4a')];_0x3f92ed+=0x1){socket[_0x6278('0x78')](_0x6278('0x79'),{'UserId':Number(_0xd71bca[_0x6278('0x5f')]['ids'][_0x3f92ed]),'WhatsappAccountId':Number(_0xd71bca['params']['id'])});}return _0x3586a1;});}})[_0x6278('0x21')](respondWithResult(_0x379b5a,null))[_0x6278('0x5d')](handleError(_0x379b5a,null));};exports[_0x6278('0x7a')]=function(_0x563741,_0x5c9a06,_0x3e9add){return db['WhatsappAccount'][_0x6278('0x5c')]({'where':{'id':_0x563741[_0x6278('0x5b')]['id']}})[_0x6278('0x21')](handleEntityNotFound(_0x5c9a06,null))[_0x6278('0x21')](function(_0x1d3437){if(_0x1d3437){return _0x1d3437[_0x6278('0x7a')](_0x563741[_0x6278('0x47')][_0x6278('0x6f')])[_0x6278('0x21')](function(){if(_[_0x6278('0x7b')](_0x563741[_0x6278('0x47')][_0x6278('0x6f')])){for(var _0x4a14c3=0x0;_0x4a14c3<_0x563741[_0x6278('0x47')]['ids'][_0x6278('0x4a')];_0x4a14c3+=0x1){socket['emit'](_0x6278('0x7c'),{'UserId':Number(_0x563741['query'][_0x6278('0x6f')][_0x4a14c3]),'WhatsappAccountId':Number(_0x563741[_0x6278('0x5b')]['id'])});}}else{socket[_0x6278('0x78')]('userWhatsappAccount:remove',{'UserId':Number(_0x563741[_0x6278('0x47')][_0x6278('0x6f')]),'WhatsappAccountId':Number(_0x563741[_0x6278('0x5b')]['id'])});}});}})['then'](respondWithStatusCode(_0x5c9a06,null))['catch'](handleError(_0x5c9a06,null));};exports[_0x6278('0x7d')]=function(_0x2335bf,_0x24ae7b,_0x342dfb){var _0x5ee5e6={};var _0xdf4f75={};var _0x299d92;var _0x3eee1f;return db['WhatsappAccount']['findOne']({'where':{'id':_0x2335bf[_0x6278('0x5b')]['id']}})['then'](handleEntityNotFound(_0x24ae7b,null))[_0x6278('0x21')](function(_0x3f9897){if(_0x3f9897){_0x299d92=_0x3f9897;_0xdf4f75[_0x6278('0x44')]=_[_0x6278('0x45')](db[_0x6278('0x7e')][_0x6278('0x40')]);_0xdf4f75['query']=_[_0x6278('0x45')](_0x2335bf[_0x6278('0x47')]);_0xdf4f75[_0x6278('0x4d')]=_['intersection'](_0xdf4f75[_0x6278('0x44')],_0xdf4f75[_0x6278('0x47')]);_0x5ee5e6[_0x6278('0x49')]=_['intersection'](_0xdf4f75[_0x6278('0x44')],qs[_0x6278('0x48')](_0x2335bf[_0x6278('0x47')][_0x6278('0x48')]));_0x5ee5e6[_0x6278('0x49')]=_0x5ee5e6['attributes'][_0x6278('0x4a')]?_0x5ee5e6['attributes']:_0xdf4f75[_0x6278('0x44')];_0x5ee5e6[_0x6278('0x6d')]=qs['sort'](_0x2335bf['query'][_0x6278('0x4c')]);_0x5ee5e6['where']=qs[_0x6278('0x4d')](_[_0x6278('0x4e')](_0x2335bf[_0x6278('0x47')],_0xdf4f75[_0x6278('0x4d')]));if(_0x2335bf[_0x6278('0x47')]['filter']){_0x5ee5e6[_0x6278('0x50')]=_[_0x6278('0x51')](_0x5ee5e6[_0x6278('0x50')],{'$or':_[_0x6278('0x3f')](_0x5ee5e6[_0x6278('0x49')],function(_0x4e1b69){var _0x49a26a={};_0x49a26a[_0x4e1b69]={'$like':'%'+_0x2335bf['query'][_0x6278('0x4f')]+'%'};return _0x49a26a;})});}_0x5ee5e6=_[_0x6278('0x51')]({},_0x5ee5e6,_0x2335bf[_0x6278('0x53')]);return _0x299d92[_0x6278('0x7d')](_0x5ee5e6);}})['then'](function(_0x44b0c3){if(_0x44b0c3){_0x3eee1f=_0x44b0c3['length'];if(!_0x2335bf[_0x6278('0x47')][_0x6278('0x4b')](_0x6278('0x73'))){_0x5ee5e6[_0x6278('0x2e')]=qs[_0x6278('0x2e')](_0x2335bf[_0x6278('0x47')][_0x6278('0x2e')]);_0x5ee5e6['offset']=qs[_0x6278('0x2d')](_0x2335bf['query']['offset']);}return _0x299d92['getAgents'](_0x5ee5e6);}})[_0x6278('0x21')](function(_0xe93626){if(_0xe93626){return _0xe93626?{'count':_0x3eee1f,'rows':_0xe93626}:null;}})[_0x6278('0x21')](respondWithResult(_0x24ae7b,null))[_0x6278('0x5d')](handleError(_0x24ae7b,null));};exports['addApplications']=function(_0x57a5ee,_0x57df1e){var _0x1d1012=_0x57a5ee['params']['id'];var _0x274d1b=_0x57a5ee[_0x6278('0x5f')];var _0xeb5d44=0xc8;var _0x18d7c7=null;return db[_0x6278('0x7f')][_0x6278('0x80')]({'isolationLevel':db[_0x6278('0x7f')]['Transaction'][_0x6278('0x81')]['READ_COMMITTED']},function(_0x453109){return db['WhatsappAccount'][_0x6278('0x6c')]({'where':{'id':_0x1d1012},'transaction':_0x453109})['then'](function(_0x420e09){if(_0x420e09){return db[_0x6278('0x82')][_0x6278('0x39')]({'where':{'WhatsappAccountId':_0x1d1012},'transaction':_0x453109})[_0x6278('0x21')](function(){var _0x36ee89=_[_0x6278('0x3f')](_0x274d1b,function(_0x1dd6b0){_0x1dd6b0[_0x6278('0x69')]=_0x1d1012;return _0x1dd6b0;});return db['WhatsappApplication'][_0x6278('0x83')](_0x36ee89,{'transaction':_0x453109});});}else{_0xeb5d44=0x194;_0x18d7c7=[];}});})[_0x6278('0x21')](function(){if(_0xeb5d44!==0x194){return db['WhatsappApplication']['findAndCountAll']({'where':{'WhatsappAccountId':_0x1d1012},'order':'priority'})['then'](function(_0x31106f){_0x18d7c7=_0x31106f;});}})[_0x6278('0x5d')](function(_0x1c06c1){_0xeb5d44=0x1f4;logger[_0x6278('0x27')](_0x1c06c1['stack']);if(_0x1c06c1['name']){delete _0x1c06c1[_0x6278('0x3b')];}_0x18d7c7=_0x1c06c1;})[_0x6278('0x84')](function(){if(_0x18d7c7===null){_0x57df1e['sendStatus'](_0xeb5d44);}else{if(_0xeb5d44===0x1f4){_0x57df1e[_0x6278('0x2c')](_0xeb5d44)[_0x6278('0x3c')](_0x18d7c7);}else{_0x57df1e[_0x6278('0x2c')](_0xeb5d44)[_0x6278('0x31')](_0x18d7c7);}}});};exports[_0x6278('0x85')]=function(_0x82de1,_0x4b42fd,_0x5e1bc9){var _0x3c8cf2={};var _0x3c8f64={};var _0x8e62f2;var _0x3d586b;return db[_0x6278('0x54')][_0x6278('0x6c')]({'where':{'id':_0x82de1['params']['id']}})[_0x6278('0x21')](handleEntityNotFound(_0x4b42fd,null))[_0x6278('0x21')](function(_0x57f99f){if(_0x57f99f){_0x8e62f2=_0x57f99f;_0x3c8f64['model']=_['keys'](db[_0x6278('0x82')][_0x6278('0x40')]);_0x3c8f64[_0x6278('0x47')]=_[_0x6278('0x45')](_0x82de1[_0x6278('0x47')]);_0x3c8f64['filters']=_[_0x6278('0x46')](_0x3c8f64['model'],_0x3c8f64['query']);_0x3c8cf2['attributes']=_[_0x6278('0x46')](_0x3c8f64[_0x6278('0x44')],qs[_0x6278('0x48')](_0x82de1[_0x6278('0x47')][_0x6278('0x48')]));_0x3c8cf2[_0x6278('0x49')]=_0x3c8cf2[_0x6278('0x49')][_0x6278('0x4a')]?_0x3c8cf2[_0x6278('0x49')]:_0x3c8f64[_0x6278('0x44')];_0x3c8cf2['order']=qs[_0x6278('0x4c')](_0x82de1[_0x6278('0x47')][_0x6278('0x4c')]);_0x3c8cf2[_0x6278('0x50')]=qs[_0x6278('0x4d')](_[_0x6278('0x4e')](_0x82de1[_0x6278('0x47')],_0x3c8f64[_0x6278('0x4d')]));if(_0x82de1[_0x6278('0x47')][_0x6278('0x4f')]){_0x3c8cf2[_0x6278('0x50')]=_[_0x6278('0x51')](_0x3c8cf2[_0x6278('0x50')],{'$or':_['map'](_0x3c8cf2['attributes'],function(_0x1ebb08){var _0x4305b0={};_0x4305b0[_0x1ebb08]={'$like':'%'+_0x82de1[_0x6278('0x47')][_0x6278('0x4f')]+'%'};return _0x4305b0;})});}_0x3c8cf2=_[_0x6278('0x51')]({},_0x3c8cf2,_0x82de1[_0x6278('0x53')]);return _0x8e62f2[_0x6278('0x85')](_0x3c8cf2);}})[_0x6278('0x21')](function(_0x3770df){if(_0x3770df){_0x3d586b=_0x3770df[_0x6278('0x4a')];if(!_0x82de1[_0x6278('0x47')][_0x6278('0x4b')](_0x6278('0x73'))){_0x3c8cf2['limit']=qs[_0x6278('0x2e')](_0x82de1[_0x6278('0x47')][_0x6278('0x2e')]);_0x3c8cf2['offset']=qs[_0x6278('0x2d')](_0x82de1['query']['offset']);}return _0x8e62f2[_0x6278('0x85')](_0x3c8cf2);}})[_0x6278('0x21')](function(_0x32d0c8){if(_0x32d0c8){return _0x32d0c8?{'count':_0x3d586b,'rows':_0x32d0c8}:null;}})[_0x6278('0x21')](respondWithResult(_0x4b42fd,null))[_0x6278('0x5d')](handleError(_0x4b42fd,null));};exports[_0x6278('0x86')]=function(_0x106562,_0x3626a8,_0x4cfc07){var _0x5d2095={'channel':_0x6278('0x87')};var _0x5ba927=[];var _0x1f111d=[];var _0x3182e3={};return db[_0x6278('0x54')][_0x6278('0x5c')]({'where':{'id':_0x106562[_0x6278('0x5b')]['id']},'include':[{'model':db['WhatsappApplication'],'as':_0x6278('0x88')}]})[_0x6278('0x21')](handleEntityNotFound(_0x3626a8,null))['then'](function(_0x14197a){_0x5d2095[_0x6278('0x89')]=_0x14197a;if(_0x5d2095[_0x6278('0x89')]&&_0x5d2095[_0x6278('0x89')]['type']===_0x6278('0x8a')&&_0x106562['body'][_0x6278('0x8b')]){if(_0x106562[_0x6278('0x5f')][_0x6278('0x8b')][_0x6278('0x4a')]===0x0)return;if(_0x106562[_0x6278('0x5f')]['statuses'][0x0][_0x6278('0x8c')]!=='read')return;return db[_0x6278('0x8d')][_0x6278('0x35')]({'read':!![],'readAt':_0x106562[_0x6278('0x5f')][_0x6278('0x8b')][0x0][_0x6278('0x8e')]},{'where':{'messageId':_0x106562[_0x6278('0x5f')][_0x6278('0x8b')][0x0][_0x6278('0x8f')]},'individualHooks':!![]})[_0x6278('0x21')](function(_0x52e583){return _0x3626a8[_0x6278('0x2c')](0xc8)[_0x6278('0x31')](_0x52e583);});}_0x5d2095[_0x6278('0x90')]=_['orderBy'](_0x14197a[_0x6278('0x88')],[_0x6278('0x91')],['asc']);if(_0x5d2095[_0x6278('0x89')][_0x6278('0x88')]){delete _0x5d2095[_0x6278('0x89')][_0x6278('0x88')];}return db['CmContact']['describe']()['then'](function(_0x41e9fc){if(!_0x41e9fc){throw new db['Sequelize'][(_0x6278('0x92'))]('no\x20available\x20attributes');}_0x5ba927=_[_0x6278('0x93')](_[_0x6278('0x45')](_0x41e9fc),[_0x6278('0x94'),_0x6278('0x95')]);_0x1f111d=_['difference'](_[_0x6278('0x45')](_0x41e9fc),[_0x6278('0x94'),_0x6278('0x95'),'CompanyId',_0x6278('0x96')]);_0x5d2095[_0x6278('0x5f')]={'mapKey':_0x6278('0x97')};if(_0x5d2095[_0x6278('0x89')]&&_0x5d2095[_0x6278('0x89')]['type']==='twilio'){_0x5d2095['body'][_0x6278('0x98')]=_0x106562[_0x6278('0x5f')]['From']['replace']('whatsapp:','');_0x5d2095[_0x6278('0x5f')][_0x6278('0x5f')]=_0x106562['body'][_0x6278('0x99')];_0x5d2095[_0x6278('0x5f')]['messageId']=_0x106562['body']['MessageSid'];}if(_0x5d2095['account']&&_0x5d2095['account'][_0x6278('0x42')]===_0x6278('0x8a')){_0x5d2095[_0x6278('0x5f')][_0x6278('0x98')]=_0x106562[_0x6278('0x5f')][_0x6278('0x9a')][0x0]['from'];_0x5d2095[_0x6278('0x5f')][_0x6278('0x5f')]=_0x106562[_0x6278('0x5f')][_0x6278('0x9a')][0x0][_0x6278('0x29')][_0x6278('0x5f')];_0x5d2095[_0x6278('0x5f')][_0x6278('0x9b')]=_0x106562[_0x6278('0x5f')][_0x6278('0x9a')][0x0][_0x6278('0x8f')];}if(_0x5d2095[_0x6278('0x5f')]['id']){delete _0x5d2095[_0x6278('0x5f')]['id'];}if(_['isNil'](_0x5d2095[_0x6278('0x5f')][_0x6278('0x98')])){throw new db[(_0x6278('0x9c'))][(_0x6278('0x92'))](_0x6278('0x9d'));}if(_['isNil'](_0x5d2095[_0x6278('0x5f')][_0x6278('0x5f')])||_0x5d2095[_0x6278('0x5f')][_0x6278('0x5f')]===''){throw new db['Sequelize'][(_0x6278('0x92'))](_0x6278('0x9e'));}if(_[_0x6278('0x9f')](_0x5d2095[_0x6278('0x5f')]['mapKey'])){throw new db['Sequelize'][(_0x6278('0x92'))](_0x6278('0xa0')+_0x1f111d);}if(!_[_0x6278('0xa1')](_0x1f111d,_0x5d2095[_0x6278('0x5f')]['mapKey'])){throw new db[(_0x6278('0x9c'))][(_0x6278('0x92'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x1f111d);}_0x3182e3[_0x5d2095[_0x6278('0x5f')]['mapKey']]=_0x5d2095[_0x6278('0x5f')][_0x6278('0x98')];return db[_0x6278('0xa2')][_0x6278('0x5c')]({'where':{'id':_0x5d2095['account'][_0x6278('0x96')]},'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x3182e3,'limit':0x1,'order':[[_0x6278('0x95'),'DESC']]}]});})['then'](handleEntityNotFound(_0x3626a8,null))['then'](function(_0xff58d2){if(_0xff58d2){_0x5d2095[_0x6278('0xa3')]=_[_0x6278('0x76')](_0xff58d2,[_0x6278('0xa4')]);if(_0xff58d2[_0x6278('0xa4')]['length']){return _0xff58d2[_0x6278('0xa4')][0x0];}var _0x31f586=_[_0x6278('0x1a')](_0x5d2095[_0x6278('0x5f')],{'firstName':_0x5d2095[_0x6278('0x5f')][_0x6278('0x98')],'ListId':_0xff58d2['id']});_0x31f586[_0x5d2095[_0x6278('0x5f')][_0x6278('0xa5')]]=_0x5d2095[_0x6278('0x5f')][_0x6278('0x98')];return db[_0x6278('0xa6')]['create'](_0x31f586,{'fields':_0x5ba927,'raw':!![]});}})['then'](handleEntityNotFound(_0x3626a8,null))[_0x6278('0x21')](function(_0x337dad){if(_0x337dad){_0x5d2095['contact']=_0x337dad;var _0x5bdf8a={'ContactId':_0x337dad['id'],'phone':_0x5d2095[_0x6278('0x5f')][_0x6278('0x98')],'WhatsappAccountId':_0x106562[_0x6278('0x5b')]['id']};var _0x4d6a24={'ContactId':_0x337dad['id'],'WhatsappAccountId':_0x106562[_0x6278('0x5b')]['id'],'closed':![]};return db[_0x6278('0xa7')][_0x6278('0x5c')]({'where':_0x4d6a24})[_0x6278('0x21')](function(_0xd897f2){if(_0xd897f2){return[_0xd897f2,![]];}return db[_0x6278('0xa7')][_0x6278('0x5e')](_0x5bdf8a)['then'](function(_0x49f6d2){return[_0x49f6d2,!![]];});});}})[_0x6278('0x77')](function(_0x4cc566,_0x5f01d3){_0x5d2095['interaction']=_0x4cc566[_0x6278('0x36')]({'plain':!![]});_0x5d2095[_0x6278('0xa8')][_0x6278('0xa9')]=![];if(_0x5f01d3){if(_0x5d2095[_0x6278('0x89')][_0x6278('0xaa')]){_0x5d2095['applications'][_0x6278('0xab')]({'id':0x0,'priority':_0x5d2095[_0x6278('0x90')][_0x6278('0x4a')]+0x1,'app':_0x6278('0xac'),'appdata':_0x6278('0xad'),'interval':_0x6278('0xae')});}_0x5d2095[_0x6278('0xa8')][_0x6278('0xa9')]=!![];}return db['WhatsappMessage'][_0x6278('0x5e')]({'phone':_0x5d2095[_0x6278('0x5f')]['from'],'messageId':_0x5d2095[_0x6278('0x5f')][_0x6278('0x9b')],'body':_0x5d2095[_0x6278('0x5f')][_0x6278('0x5f')],'WhatsappAccountId':_0x106562[_0x6278('0x5b')]['id'],'WhatsappInteractionId':_0x4cc566['id'],'direction':'in','ContactId':_0x4cc566[_0x6278('0xaf')],'AttachmentId':_0x5d2095['body'][_0x6278('0xb0')]});})['then'](function(_0x38aa90){_0x5d2095[_0x6278('0x29')]=_0x38aa90;if(_0x5d2095[_0x6278('0xa8')][_0x6278('0xb1')]){return db[_0x6278('0x7e')][_0x6278('0x5c')]({'attributes':['id',_0x6278('0x3b')],'where':{'id':_0x5d2095[_0x6278('0xa8')][_0x6278('0xb1')]}})[_0x6278('0x21')](function(_0x3b92c1){if(_0x3b92c1){_0x5d2095[_0x6278('0x90')][_0x6278('0xb2')]({'id':0x0,'priority':0x0,'app':_0x6278('0xb3'),'appdata':_0x3b92c1['name']+','+(_0x5d2095[_0x6278('0x89')][_0x6278('0xb4')]||0xa),'interval':_0x6278('0xae')});}return respondWithRpcPromise(_0x6278('0xb5'),'startRouting',_0x5d2095);});}return respondWithRpcPromise(_0x6278('0xb5'),_0x6278('0xb6'),_0x5d2095);})['then'](function(_0x625f14){if(_0x625f14){var _0x55235d=0xc8;var _0x30fb1e=_0x6278('0xb7');logger['info'](_0x6278('0x25'),_0x30fb1e,_0x55235d,'entity\x20found');logger['debug']('WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x30fb1e,_0x55235d,_0x6278('0xb8'),JSON[_0x6278('0x26')](_0x625f14));if(_0x5d2095[_0x6278('0x89')][_0x6278('0x42')]===_0x6278('0xb9')){return _0x3626a8[_0x6278('0x2c')](_0x55235d)[_0x6278('0x2f')](_0x6278('0xba'),_0x6278('0xbb'))[_0x6278('0x3c')](_0x6278('0xbc'));}else{return _0x3626a8[_0x6278('0x2c')](_0x55235d)[_0x6278('0x31')](_0x625f14);}}});})[_0x6278('0x5d')](handleError(_0x3626a8,null));};exports['send']=function(_0x5507d5,_0x136c55,_0x17c729){var _0x1604a2,_0x52443e,_0x19b58c;if(_[_0x6278('0x9f')](_0x5507d5[_0x6278('0x5f')][_0x6278('0x5f')])||_0x5507d5[_0x6278('0x5f')][_0x6278('0x5f')]===''){throw new db['Sequelize'][(_0x6278('0x92'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x6278('0x9f')](_0x5507d5['body']['to'])){throw new db[(_0x6278('0x9c'))]['ValidationError'](_0x6278('0xbd'));}_0x1604a2=_0x5507d5[_0x6278('0x5f')]['to'];return db[_0x6278('0x54')][_0x6278('0x5c')]({'where':{'id':_0x5507d5['params']['id']},'include':[{'model':db[_0x6278('0xa2')],'as':_0x6278('0xbe'),'include':[{'model':db[_0x6278('0xa6')],'as':_0x6278('0xa4'),'where':{'mobile':_0x1604a2},'limit':0x1,'order':[[_0x6278('0x95'),_0x6278('0xbf')]]}]}]})[_0x6278('0x21')](handleEntityNotFound(_0x136c55,null))[_0x6278('0x21')](function(_0x1e2eee){if(_0x1e2eee&&_0x1e2eee[_0x6278('0xbe')]){_0x52443e=_0x1e2eee[_0x6278('0x36')]({'plain':!![]});if(_0x52443e['List']&&_0x52443e[_0x6278('0xbe')][_0x6278('0xa4')][_0x6278('0x4a')]){return _0x52443e['List'][_0x6278('0xa4')][0x0];}return db['CmContact'][_0x6278('0x5e')](_[_0x6278('0x1a')](_0x5507d5[_0x6278('0x5f')],{'firstName':_0x1604a2,'mobile':_0x1604a2,'phone':_0x1604a2,'ListId':_0x52443e['ListId']}));}})[_0x6278('0x21')](handleEntityNotFound(_0x136c55,null))[_0x6278('0x21')](function(_0x4ee5b2){if(_0x4ee5b2){_0x19b58c=_0x4ee5b2;return db[_0x6278('0xa7')][_0x6278('0x5c')]({'where':{'ContactId':_0x19b58c['id'],'closed':![],'WhatsappAccountId':_0x52443e['id']}})[_0x6278('0x21')](function(_0x2d03b5){if(_0x2d03b5){return[_0x2d03b5,![]];}return db[_0x6278('0xa7')][_0x6278('0x5e')]({'UserId':_0x5507d5[_0x6278('0x60')]['id'],'ContactId':_0x19b58c['id'],'WhatsappAccountId':_0x52443e['id'],'phone':_0x1604a2,'firstMsgDirection':'out','Messages':[_[_0x6278('0x51')](_0x5507d5[_0x6278('0x5f')],{'read':![],'body':_0x5507d5['body']['body'],'phone':_0x1604a2,'WhatsappAccountId':_0x52443e['id'],'UserId':_0x5507d5[_0x6278('0x60')]['id'],'ContactId':_0x19b58c['id']})]},{'include':[{'model':db[_0x6278('0x8d')],'as':_0x6278('0xc0')}]})['then'](function(_0x4a01fe){return[_0x4a01fe,!![]];});});}})['spread'](function(_0xb27262,_0x503ac7){if(_0x503ac7){return _0xb27262;}return db[_0x6278('0x8d')]['create'](_['merge'](_0x5507d5[_0x6278('0x5f')],{'read':![],'body':_0x5507d5['body'][_0x6278('0x5f')],'phone':_0x1604a2,'WhatsappAccountId':_0x52443e['id'],'WhatsappInteractionId':_0xb27262['id'],'UserId':_0x5507d5['user']['id'],'ContactId':_0x19b58c['id']}))[_0x6278('0x21')](function(_0x390195){_0xb27262[_0x6278('0xc1')][_0x6278('0xc0')]=[];_0xb27262[_0x6278('0xc1')][_0x6278('0xc0')][_0x6278('0xab')](_0x390195[_0x6278('0xc1')]);return _0xb27262;});})['then'](respondWithResult(_0x136c55,null))['catch'](handleError(_0x136c55,null));};
\ No newline at end of file
index c5cac00..be9e847 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2325=['hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','update','remove'];(function(_0x2fde25,_0x1cd093){var _0x48e409=function(_0x2fc2dd){while(--_0x2fc2dd){_0x2fde25['push'](_0x2fde25['shift']());}};_0x48e409(++_0x1cd093);}(_0x2325,0x1e0));var _0x5232=function(_0x85f077,_0x362348){_0x85f077=_0x85f077-0x0;var _0x37f55d=_0x2325[_0x85f077];return _0x37f55d;};'use strict';var EventEmitter=require(_0x5232('0x0'));var WhatsappAccount=require(_0x5232('0x1'))['db']['WhatsappAccount'];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x5232('0x2')](0x0);var events={'afterCreate':_0x5232('0x3'),'afterUpdate':_0x5232('0x4'),'afterDestroy':_0x5232('0x5')};function emitEvent(_0xb9e4ec){return function(_0x29222c,_0x3e9659,_0x913329){WhatsappAccountEvents['emit'](_0xb9e4ec+':'+_0x29222c['id'],_0x29222c);WhatsappAccountEvents['emit'](_0xb9e4ec,_0x29222c);_0x913329(null);};}for(var e in events){if(events[_0x5232('0x6')](e)){var event=events[e];WhatsappAccount[_0x5232('0x7')](e,emitEvent(event));}}module[_0x5232('0x8')]=WhatsappAccountEvents;
\ No newline at end of file
+var _0xc6cc=['remove','emit','hasOwnProperty','hook','exports','../../mysqldb','WhatsappAccount','save','update'];(function(_0x1ccb5d,_0x341da9){var _0x1fe071=function(_0x12433e){while(--_0x12433e){_0x1ccb5d['push'](_0x1ccb5d['shift']());}};_0x1fe071(++_0x341da9);}(_0xc6cc,0x1be));var _0xcc6c=function(_0x260a15,_0x4792d2){_0x260a15=_0x260a15-0x0;var _0x1cc89b=_0xc6cc[_0x260a15];return _0x1cc89b;};'use strict';var EventEmitter=require('events');var WhatsappAccount=require(_0xcc6c('0x0'))['db'][_0xcc6c('0x1')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xcc6c('0x2'),'afterUpdate':_0xcc6c('0x3'),'afterDestroy':_0xcc6c('0x4')};function emitEvent(_0x825e32){return function(_0x5287d5,_0x4d0532,_0x3f5bf5){WhatsappAccountEvents[_0xcc6c('0x5')](_0x825e32+':'+_0x5287d5['id'],_0x5287d5);WhatsappAccountEvents[_0xcc6c('0x5')](_0x825e32,_0x5287d5);_0x3f5bf5(null);};}for(var e in events){if(events[_0xcc6c('0x6')](e)){var event=events[e];WhatsappAccount[_0xcc6c('0x7')](e,emitEvent(event));}}module[_0xcc6c('0x8')]=WhatsappAccountEvents;
\ No newline at end of file
index ad67a47..1ce66e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x631e=['bluebird','path','rimraf','../../config/environment','./whatsappAccount.attributes','exports','define','WhatsappAccount','lodash','util','../../config/logger','api'];(function(_0x10f877,_0x55e4d1){var _0x4c9ba1=function(_0x95507f){while(--_0x95507f){_0x10f877['push'](_0x10f877['shift']());}};_0x4c9ba1(++_0x55e4d1);}(_0x631e,0x140));var _0xe631=function(_0x2cb339,_0x3886f3){_0x2cb339=_0x2cb339-0x0;var _0x407c37=_0x631e[_0x2cb339];return _0x407c37;};'use strict';var _=require(_0xe631('0x0'));var util=require(_0xe631('0x1'));var logger=require(_0xe631('0x2'))(_0xe631('0x3'));var moment=require('moment');var BPromise=require(_0xe631('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe631('0x5'));var rimraf=require(_0xe631('0x6'));var config=require(_0xe631('0x7'));var attributes=require(_0xe631('0x8'));module[_0xe631('0x9')]=function(_0x5735e9,_0x43e020){return _0x5735e9[_0xe631('0xa')](_0xe631('0xb'),attributes,{'tableName':'whatsapp_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x012a=['api','moment','request-promise','path','rimraf','./whatsappAccount.attributes','exports','define','whatsapp_accounts','lodash','../../config/logger'];(function(_0x5d8f7b,_0x3b7b07){var _0x577e2d=function(_0x4ddcef){while(--_0x4ddcef){_0x5d8f7b['push'](_0x5d8f7b['shift']());}};_0x577e2d(++_0x3b7b07);}(_0x012a,0x1ab));var _0xa012=function(_0x2f32c4,_0x1d5b68){_0x2f32c4=_0x2f32c4-0x0;var _0x3ccb9e=_0x012a[_0x2f32c4];return _0x3ccb9e;};'use strict';var _=require(_0xa012('0x0'));var util=require('util');var logger=require(_0xa012('0x1'))(_0xa012('0x2'));var moment=require(_0xa012('0x3'));var BPromise=require('bluebird');var rp=require(_0xa012('0x4'));var fs=require('fs');var path=require(_0xa012('0x5'));var rimraf=require(_0xa012('0x6'));var config=require('../../config/environment');var attributes=require(_0xa012('0x7'));module[_0xa012('0x8')]=function(_0x2bb061,_0x2b1a27){return _0x2bb061[_0xa012('0x9')]('WhatsappAccount',attributes,{'tableName':_0xa012('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 523079e..45eb481 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x632e=['bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','redis','localhost','socket.io-emitter','register','request','info','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','WhatsappAccount,\x20%s,\x20%s','message','result','catch','WhatsappAccount','find','options','raw','where','attributes','include','map','model','util','moment'];(function(_0x14a706,_0x57528a){var _0x4efd1f=function(_0x4271af){while(--_0x4271af){_0x14a706['push'](_0x14a706['shift']());}};_0x4efd1f(++_0x57528a);}(_0x632e,0x152));var _0xe632=function(_0x2c1aa8,_0x3e0609){_0x2c1aa8=_0x2c1aa8-0x0;var _0x4019f5=_0x632e[_0x2c1aa8];return _0x4019f5;};'use strict';var _=require('lodash');var util=require(_0xe632('0x0'));var moment=require(_0xe632('0x1'));var BPromise=require(_0xe632('0x2'));var rs=require(_0xe632('0x3'));var fs=require('fs');var Redis=require(_0xe632('0x4'));var db=require(_0xe632('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xe632('0x6'))(_0xe632('0x7'));var config=require(_0xe632('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xe632('0x9')]['http']({'port':0x232a});config[_0xe632('0xa')]=_['defaults'](config[_0xe632('0xa')],{'host':_0xe632('0xb'),'port':0x18eb});var socket=require(_0xe632('0xc'))(new Redis(config[_0xe632('0xa')]));require('./whatsappAccount.socket')[_0xe632('0xd')](socket);function respondWithRpcPromise(_0x5efae5,_0x862d92,_0xb3de28){return new BPromise(function(_0x355296,_0x47c510){return client[_0xe632('0xe')](_0x5efae5,_0xb3de28)['then'](function(_0x21ce0e){logger[_0xe632('0xf')]('WhatsappAccount,\x20%s,\x20%s',_0x862d92,_0xe632('0x10'));logger[_0xe632('0x11')](_0xe632('0x12'),_0x862d92,_0xe632('0x10'),JSON[_0xe632('0x13')](_0x21ce0e));if(_0x21ce0e[_0xe632('0x14')]){if(_0x21ce0e[_0xe632('0x14')]['code']===0x1f4){logger['error'](_0xe632('0x15'),_0x862d92,_0x21ce0e[_0xe632('0x14')][_0xe632('0x16')]);return _0x47c510(_0x21ce0e[_0xe632('0x14')][_0xe632('0x16')]);}logger[_0xe632('0x14')](_0xe632('0x15'),_0x862d92,_0x21ce0e[_0xe632('0x14')][_0xe632('0x16')]);return _0x355296(_0x21ce0e['error'][_0xe632('0x16')]);}else{logger[_0xe632('0xf')](_0xe632('0x15'),_0x862d92,_0xe632('0x10'));_0x355296(_0x21ce0e[_0xe632('0x17')][_0xe632('0x16')]);}})[_0xe632('0x18')](function(_0x2e0005){logger[_0xe632('0x14')](_0xe632('0x15'),_0x862d92,_0x2e0005);_0x47c510(_0x2e0005);});});}exports['ShowWhatsappAccount']=function(_0x17458b){var _0x43345f=this;return new Promise(function(_0x36b3c8,_0x166ff2){return db[_0xe632('0x19')][_0xe632('0x1a')]({'raw':_0x17458b[_0xe632('0x1b')]?_0x17458b[_0xe632('0x1b')][_0xe632('0x1c')]===undefined?!![]:![]:!![],'where':_0x17458b['options']?_0x17458b[_0xe632('0x1b')][_0xe632('0x1d')]||null:null,'attributes':_0x17458b[_0xe632('0x1b')]?_0x17458b[_0xe632('0x1b')][_0xe632('0x1e')]||null:null,'include':_0x17458b[_0xe632('0x1b')]?_0x17458b[_0xe632('0x1b')][_0xe632('0x1f')]?_[_0xe632('0x20')](_0x17458b[_0xe632('0x1b')][_0xe632('0x1f')],function(_0x10e6e8){return{'model':db[_0x10e6e8[_0xe632('0x21')]],'as':_0x10e6e8['as'],'attributes':_0x10e6e8[_0xe632('0x1e')],'include':_0x10e6e8[_0xe632('0x1f')]?_[_0xe632('0x20')](_0x10e6e8[_0xe632('0x1f')],function(_0x3fe0b7){return{'model':db[_0x3fe0b7[_0xe632('0x21')]],'as':_0x3fe0b7['as'],'attributes':_0x3fe0b7[_0xe632('0x1e')],'include':_0x3fe0b7[_0xe632('0x1f')]?_[_0xe632('0x20')](_0x3fe0b7['include'],function(_0x3d5fdc){return{'model':db[_0x3d5fdc[_0xe632('0x21')]],'as':_0x3d5fdc['as'],'attributes':_0x3d5fdc[_0xe632('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4b1c0c){logger[_0xe632('0xf')]('ShowWhatsappAccount',_0x17458b);logger['debug']('ShowWhatsappAccount',_0x17458b,JSON[_0xe632('0x13')](_0x4b1c0c));_0x36b3c8(_0x4b1c0c);})[_0xe632('0x18')](function(_0x1aaf78){logger['error']('ShowWhatsappAccount',_0x1aaf78[_0xe632('0x16')],_0x17458b);_0x166ff2(_0x43345f[_0xe632('0x14')](0x1f4,_0x1aaf78[_0xe632('0x16')]));});});};
\ No newline at end of file
+var _0x9106=['attributes','map','include','model','ShowWhatsappAccount','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','client','redis','localhost','socket.io-emitter','register','request','then','info','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','WhatsappAccount,\x20%s,\x20%s','message','result','catch','WhatsappAccount','find','options','raw','where'];(function(_0x1fe915,_0x2f0c61){var _0x5dc75d=function(_0x18f8f2){while(--_0x18f8f2){_0x1fe915['push'](_0x1fe915['shift']());}};_0x5dc75d(++_0x2f0c61);}(_0x9106,0x6e));var _0x6910=function(_0x42aa0a,_0x57286c){_0x42aa0a=_0x42aa0a-0x0;var _0x1150e4=_0x9106[_0x42aa0a];return _0x1150e4;};'use strict';var _=require(_0x6910('0x0'));var util=require(_0x6910('0x1'));var moment=require(_0x6910('0x2'));var BPromise=require(_0x6910('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6910('0x4'));var db=require(_0x6910('0x5'))['db'];var utils=require(_0x6910('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x6910('0x7')]['http']({'port':0x232a});config[_0x6910('0x8')]=_['defaults'](config[_0x6910('0x8')],{'host':_0x6910('0x9'),'port':0x18eb});var socket=require(_0x6910('0xa'))(new Redis(config['redis']));require('./whatsappAccount.socket')[_0x6910('0xb')](socket);function respondWithRpcPromise(_0x2f8fcf,_0x310569,_0x1eb105){return new BPromise(function(_0x5c9990,_0x45ac59){return client[_0x6910('0xc')](_0x2f8fcf,_0x1eb105)[_0x6910('0xd')](function(_0x2f236c){logger[_0x6910('0xe')]('WhatsappAccount,\x20%s,\x20%s',_0x310569,'request\x20sent');logger[_0x6910('0xf')](_0x6910('0x10'),_0x310569,_0x6910('0x11'),JSON[_0x6910('0x12')](_0x2f236c));if(_0x2f236c['error']){if(_0x2f236c['error'][_0x6910('0x13')]===0x1f4){logger[_0x6910('0x14')](_0x6910('0x15'),_0x310569,_0x2f236c[_0x6910('0x14')][_0x6910('0x16')]);return _0x45ac59(_0x2f236c[_0x6910('0x14')][_0x6910('0x16')]);}logger[_0x6910('0x14')](_0x6910('0x15'),_0x310569,_0x2f236c['error']['message']);return _0x5c9990(_0x2f236c[_0x6910('0x14')][_0x6910('0x16')]);}else{logger[_0x6910('0xe')]('WhatsappAccount,\x20%s,\x20%s',_0x310569,_0x6910('0x11'));_0x5c9990(_0x2f236c[_0x6910('0x17')]['message']);}})[_0x6910('0x18')](function(_0x2b398a){logger[_0x6910('0x14')](_0x6910('0x15'),_0x310569,_0x2b398a);_0x45ac59(_0x2b398a);});});}exports['ShowWhatsappAccount']=function(_0x4dc250){var _0x32be5a=this;return new Promise(function(_0x4d8071,_0x2c5709){return db[_0x6910('0x19')][_0x6910('0x1a')]({'raw':_0x4dc250[_0x6910('0x1b')]?_0x4dc250['options'][_0x6910('0x1c')]===undefined?!![]:![]:!![],'where':_0x4dc250[_0x6910('0x1b')]?_0x4dc250[_0x6910('0x1b')][_0x6910('0x1d')]||null:null,'attributes':_0x4dc250[_0x6910('0x1b')]?_0x4dc250[_0x6910('0x1b')][_0x6910('0x1e')]||null:null,'include':_0x4dc250[_0x6910('0x1b')]?_0x4dc250[_0x6910('0x1b')]['include']?_[_0x6910('0x1f')](_0x4dc250['options'][_0x6910('0x20')],function(_0x3f07cc){return{'model':db[_0x3f07cc['model']],'as':_0x3f07cc['as'],'attributes':_0x3f07cc[_0x6910('0x1e')],'include':_0x3f07cc[_0x6910('0x20')]?_[_0x6910('0x1f')](_0x3f07cc[_0x6910('0x20')],function(_0x2a2513){return{'model':db[_0x2a2513[_0x6910('0x21')]],'as':_0x2a2513['as'],'attributes':_0x2a2513[_0x6910('0x1e')],'include':_0x2a2513[_0x6910('0x20')]?_[_0x6910('0x1f')](_0x2a2513['include'],function(_0x28f5aa){return{'model':db[_0x28f5aa[_0x6910('0x21')]],'as':_0x28f5aa['as'],'attributes':_0x28f5aa[_0x6910('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x6910('0xd')](function(_0x7e670a){logger[_0x6910('0xe')](_0x6910('0x22'),_0x4dc250);logger['debug'](_0x6910('0x22'),_0x4dc250,JSON['stringify'](_0x7e670a));_0x4d8071(_0x7e670a);})[_0x6910('0x18')](function(_0x245efd){logger[_0x6910('0x14')]('ShowWhatsappAccount',_0x245efd[_0x6910('0x16')],_0x4dc250);_0x2c5709(_0x32be5a[_0x6910('0x14')](0x1f4,_0x245efd[_0x6910('0x16')]));});});};
\ No newline at end of file
index 9494849..c03e895 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x654f=['length','./whatsappAccount.events','save','remove','update','emit','register'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x654f,0x174));var _0xf654=function(_0x4ccc85,_0x4da8b6){_0x4ccc85=_0x4ccc85-0x0;var _0x3ba436=_0x654f[_0x4ccc85];return _0x3ba436;};'use strict';var WhatsappAccountEvents=require(_0xf654('0x0'));var events=[_0xf654('0x1'),_0xf654('0x2'),_0xf654('0x3')];function createListener(_0x76e7ff,_0x1fbfb0){return function(_0x4a0a1b){_0x1fbfb0[_0xf654('0x4')](_0x76e7ff,_0x4a0a1b);};}function removeListener(_0x48f4a6,_0x501604){return function(){WhatsappAccountEvents['removeListener'](_0x48f4a6,_0x501604);};}exports[_0xf654('0x5')]=function(_0x39689d){for(var _0x22b6a2=0x0,_0x299693=events[_0xf654('0x6')];_0x22b6a2<_0x299693;_0x22b6a2++){var _0x2eebd7=events[_0x22b6a2];var _0x33c7c7=createListener('whatsappAccount:'+_0x2eebd7,_0x39689d);WhatsappAccountEvents['on'](_0x2eebd7,_0x33c7c7);}};
\ No newline at end of file
+var _0x5f60=['register','length','whatsappAccount:','./whatsappAccount.events','save','update','emit','removeListener'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x5f60,0x133));var _0x05f6=function(_0x51cc1d,_0xaa88ae){_0x51cc1d=_0x51cc1d-0x0;var _0x2eb9f2=_0x5f60[_0x51cc1d];return _0x2eb9f2;};'use strict';var WhatsappAccountEvents=require(_0x05f6('0x0'));var events=[_0x05f6('0x1'),'remove',_0x05f6('0x2')];function createListener(_0x3794f8,_0x3809c3){return function(_0x5cc79a){_0x3809c3[_0x05f6('0x3')](_0x3794f8,_0x5cc79a);};}function removeListener(_0x521e7d,_0x44cc0b){return function(){WhatsappAccountEvents[_0x05f6('0x4')](_0x521e7d,_0x44cc0b);};}exports[_0x05f6('0x5')]=function(_0x1f8375){for(var _0x4df037=0x0,_0x47b3d1=events[_0x05f6('0x6')];_0x4df037<_0x47b3d1;_0x4df037++){var _0x567196=events[_0x4df037];var _0xd24574=createListener(_0x05f6('0x7')+_0x567196,_0x1f8375);WhatsappAccountEvents['on'](_0x567196,_0xd24574);}};
\ No newline at end of file
index 4738a7f..d266e4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe747=['index','/:id','show','post','create','put','update','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappApplication.controller','get','isAuthenticated'];(function(_0x2730ad,_0x4d247d){var _0x1d4363=function(_0x17c180){while(--_0x17c180){_0x2730ad['push'](_0x2730ad['shift']());}};_0x1d4363(++_0x4d247d);}(_0xe747,0x198));var _0x7e74=function(_0x1e1048,_0x49069d){_0x1e1048=_0x1e1048-0x0;var _0x2abe96=_0xe747[_0x1e1048];return _0x2abe96;};'use strict';var multer=require(_0x7e74('0x0'));var util=require('util');var path=require(_0x7e74('0x1'));var timeout=require(_0x7e74('0x2'));var express=require(_0x7e74('0x3'));var router=express[_0x7e74('0x4')]();var fs_extra=require(_0x7e74('0x5'));var auth=require(_0x7e74('0x6'));var interaction=require(_0x7e74('0x7'));var config=require(_0x7e74('0x8'));var controller=require(_0x7e74('0x9'));router[_0x7e74('0xa')]('/',auth[_0x7e74('0xb')](),controller[_0x7e74('0xc')]);router['get'](_0x7e74('0xd'),auth[_0x7e74('0xb')](),controller[_0x7e74('0xe')]);router[_0x7e74('0xf')]('/',auth[_0x7e74('0xb')](),controller[_0x7e74('0x10')]);router[_0x7e74('0x11')](_0x7e74('0xd'),auth[_0x7e74('0xb')](),controller[_0x7e74('0x12')]);router[_0x7e74('0x13')](_0x7e74('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0x7e74('0x14')]=router;
\ No newline at end of file
+var _0x613c=['path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappApplication.controller','isAuthenticated','get','/:id','show','post','create','update','delete','exports','multer','util'];(function(_0x21eb3c,_0x7ce88b){var _0x4bd2aa=function(_0x1b4bfd){while(--_0x1b4bfd){_0x21eb3c['push'](_0x21eb3c['shift']());}};_0x4bd2aa(++_0x7ce88b);}(_0x613c,0xd6));var _0xc613=function(_0x4d7040,_0x39f039){_0x4d7040=_0x4d7040-0x0;var _0x518701=_0x613c[_0x4d7040];return _0x518701;};'use strict';var multer=require(_0xc613('0x0'));var util=require(_0xc613('0x1'));var path=require(_0xc613('0x2'));var timeout=require(_0xc613('0x3'));var express=require('express');var router=express[_0xc613('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xc613('0x5'));var interaction=require(_0xc613('0x6'));var config=require(_0xc613('0x7'));var controller=require(_0xc613('0x8'));router['get']('/',auth[_0xc613('0x9')](),controller['index']);router[_0xc613('0xa')](_0xc613('0xb'),auth[_0xc613('0x9')](),controller[_0xc613('0xc')]);router[_0xc613('0xd')]('/',auth['isAuthenticated'](),controller[_0xc613('0xe')]);router['put']('/:id',auth[_0xc613('0x9')](),controller[_0xc613('0xf')]);router[_0xc613('0x10')]('/:id',auth[_0xc613('0x9')](),controller['destroy']);module[_0xc613('0x11')]=router;
\ No newline at end of file
index d1da296..e432641 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf42c=['TEXT','STRING','*,*,*,*','sequelize','exports','noop'];(function(_0x4b10c3,_0x501eda){var _0x585cd9=function(_0x14270a){while(--_0x14270a){_0x4b10c3['push'](_0x4b10c3['shift']());}};_0x585cd9(++_0x501eda);}(_0xf42c,0x1bf));var _0xcf42=function(_0x7f70ec,_0x82eb8b){_0x7f70ec=_0x7f70ec-0x0;var _0x397ff9=_0xf42c[_0x7f70ec];return _0x397ff9;};'use strict';var Sequelize=require(_0xcf42('0x0'));module[_0xcf42('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xcf42('0x2')},'appdata':{'type':Sequelize[_0xcf42('0x3')]()},'description':{'type':Sequelize[_0xcf42('0x4')]},'interval':{'type':Sequelize[_0xcf42('0x4')],'defaultValue':_0xcf42('0x5')}};
\ No newline at end of file
+var _0x295b=['*,*,*,*','sequelize','exports','STRING','noop','TEXT'];(function(_0x4b08e7,_0x21aa9b){var _0x274958=function(_0x269182){while(--_0x269182){_0x4b08e7['push'](_0x4b08e7['shift']());}};_0x274958(++_0x21aa9b);}(_0x295b,0x1ed));var _0xb295=function(_0x31ced5,_0x5d5415){_0x31ced5=_0x31ced5-0x0;var _0x10d9e5=_0x295b[_0x31ced5];return _0x10d9e5;};'use strict';var Sequelize=require(_0xb295('0x0'));module[_0xb295('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xb295('0x2')],'allowNull':![],'defaultValue':_0xb295('0x3')},'appdata':{'type':Sequelize[_0xb295('0x4')]()},'description':{'type':Sequelize[_0xb295('0x2')]},'interval':{'type':Sequelize[_0xb295('0x2')],'defaultValue':_0xb295('0x5')}};
\ No newline at end of file
index 7800c84..9e3117d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5226=['rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','update','then','destroy','stack','name','index','map','WhatsappApplication','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','merge','where','type','filter','includeAll','findAll','rows','show','params','include','options','find','catch','create','body','eml-format'];(function(_0x1e1f4a,_0x15d8c7){var _0x2221c8=function(_0xd9e618){while(--_0xd9e618){_0x1e1f4a['push'](_0x1e1f4a['shift']());}};_0x2221c8(++_0x15d8c7);}(_0x5226,0x137));var _0x6522=function(_0x174bda,_0x25f99c){_0x174bda=_0x174bda-0x0;var _0xe7d2cb=_0x5226[_0x174bda];return _0xe7d2cb;};'use strict';var emlformat=require(_0x6522('0x0'));var rimraf=require(_0x6522('0x1'));var zipdir=require(_0x6522('0x2'));var jsonpatch=require(_0x6522('0x3'));var rp=require(_0x6522('0x4'));var moment=require('moment');var BPromise=require(_0x6522('0x5'));var Mustache=require(_0x6522('0x6'));var util=require(_0x6522('0x7'));var path=require('path');var sox=require(_0x6522('0x8'));var csv=require('to-csv');var ejs=require(_0x6522('0x9'));var fs=require('fs');var fs_extra=require(_0x6522('0xa'));var _=require(_0x6522('0xb'));var squel=require(_0x6522('0xc'));var crypto=require(_0x6522('0xd'));var jsforce=require(_0x6522('0xe'));var deskjs=require(_0x6522('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x6522('0x10'));var Redis=require(_0x6522('0x11'));var authService=require(_0x6522('0x12'));var qs=require(_0x6522('0x13'));var as=require(_0x6522('0x14'));var hardwareService=require(_0x6522('0x15'));var logger=require(_0x6522('0x16'))(_0x6522('0x17'));var utils=require(_0x6522('0x18'));var config=require(_0x6522('0x19'));var licenseUtil=require(_0x6522('0x1a'));var db=require(_0x6522('0x1b'))['db'];function respondWithStatusCode(_0xf95f99,_0x5a0361){_0x5a0361=_0x5a0361||0xcc;return function(_0x15cb73){if(_0x15cb73){return _0xf95f99[_0x6522('0x1c')](_0x5a0361);}return _0xf95f99[_0x6522('0x1d')](_0x5a0361)[_0x6522('0x1e')]();};}function respondWithResult(_0x469436,_0x56f7ef){_0x56f7ef=_0x56f7ef||0xc8;return function(_0x3c855a){if(_0x3c855a){return _0x469436[_0x6522('0x1d')](_0x56f7ef)[_0x6522('0x1f')](_0x3c855a);}};}function respondWithFilteredResult(_0x1b7e38,_0xc1470c){return function(_0x3e0369){if(_0x3e0369){var _0x31ddff=typeof _0xc1470c[_0x6522('0x20')]===_0x6522('0x21')&&typeof _0xc1470c[_0x6522('0x22')]===_0x6522('0x21');var _0x434a84=_0x3e0369['count'];var _0x6f0909=_0x31ddff?0x0:_0xc1470c[_0x6522('0x20')];var _0x2bb08c=_0x31ddff?_0x3e0369[_0x6522('0x23')]:_0xc1470c['offset']+_0xc1470c[_0x6522('0x22')];var _0x9a5622;if(_0x2bb08c>=_0x434a84){_0x2bb08c=_0x434a84;_0x9a5622=0xc8;}else{_0x9a5622=0xce;}_0x1b7e38['status'](_0x9a5622);return _0x1b7e38[_0x6522('0x24')]('Content-Range',_0x6f0909+'-'+_0x2bb08c+'/'+_0x434a84)[_0x6522('0x1f')](_0x3e0369);}return null;};}function patchUpdates(_0xe419a9){return function(_0x90cd3b){try{jsonpatch[_0x6522('0x25')](_0x90cd3b,_0xe419a9,!![]);}catch(_0x44bd23){return BPromise[_0x6522('0x26')](_0x44bd23);}return _0x90cd3b['save']();};}function saveUpdates(_0x1b6ad2,_0x174004){return function(_0x13ec44){if(_0x13ec44){return _0x13ec44[_0x6522('0x27')](_0x1b6ad2)[_0x6522('0x28')](function(_0x16c3cf){return _0x16c3cf;});}return null;};}function removeEntity(_0x49c7ac,_0x11ed35){return function(_0x415f16){if(_0x415f16){return _0x415f16[_0x6522('0x29')]()[_0x6522('0x28')](function(){_0x49c7ac['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x263d7d,_0x38045b){return function(_0x2c20dc){if(!_0x2c20dc){_0x263d7d[_0x6522('0x1c')](0x194);}return _0x2c20dc;};}function handleError(_0x499ec3,_0x195b5e){_0x195b5e=_0x195b5e||0x1f4;return function(_0x1af303){logger['error'](_0x1af303[_0x6522('0x2a')]);if(_0x1af303[_0x6522('0x2b')]){delete _0x1af303[_0x6522('0x2b')];}_0x499ec3[_0x6522('0x1d')](_0x195b5e)['send'](_0x1af303);};}exports[_0x6522('0x2c')]=function(_0x27bbc0,_0x1a46f6){var _0x2851cd={},_0x13a851={},_0xca94f4={'count':0x0,'rows':[]};var _0x252522=_[_0x6522('0x2d')](db[_0x6522('0x2e')][_0x6522('0x2f')],function(_0x9e6606){return{'name':_0x9e6606[_0x6522('0x30')],'type':_0x9e6606['type'][_0x6522('0x31')]};});_0x13a851[_0x6522('0x32')]=_[_0x6522('0x2d')](_0x252522,_0x6522('0x2b'));_0x13a851[_0x6522('0x33')]=_[_0x6522('0x34')](_0x27bbc0['query']);_0x13a851[_0x6522('0x35')]=_[_0x6522('0x36')](_0x13a851[_0x6522('0x32')],_0x13a851[_0x6522('0x33')]);_0x2851cd[_0x6522('0x37')]=_[_0x6522('0x36')](_0x13a851[_0x6522('0x32')],qs[_0x6522('0x38')](_0x27bbc0[_0x6522('0x33')][_0x6522('0x38')]));_0x2851cd[_0x6522('0x37')]=_0x2851cd[_0x6522('0x37')][_0x6522('0x39')]?_0x2851cd['attributes']:_0x13a851['model'];if(!_0x27bbc0['query'][_0x6522('0x3a')](_0x6522('0x3b'))){_0x2851cd[_0x6522('0x22')]=qs[_0x6522('0x22')](_0x27bbc0[_0x6522('0x33')][_0x6522('0x22')]);_0x2851cd['offset']=qs[_0x6522('0x20')](_0x27bbc0[_0x6522('0x33')][_0x6522('0x20')]);}_0x2851cd[_0x6522('0x3c')]=qs[_0x6522('0x3d')](_0x27bbc0['query']['sort']);_0x2851cd['where']=qs[_0x6522('0x35')](_[_0x6522('0x3e')](_0x27bbc0['query'],_0x13a851['filters']),_0x252522);if(_0x27bbc0[_0x6522('0x33')]['filter']){_0x2851cd['where']=_[_0x6522('0x3f')](_0x2851cd[_0x6522('0x40')],{'$or':_[_0x6522('0x2d')](_0x252522,function(_0x1b269c){if(_0x1b269c[_0x6522('0x41')]!=='VIRTUAL'){var _0x283375={};_0x283375[_0x1b269c[_0x6522('0x2b')]]={'$like':'%'+_0x27bbc0[_0x6522('0x33')][_0x6522('0x42')]+'%'};return _0x283375;}})});}_0x2851cd=_[_0x6522('0x3f')]({},_0x2851cd,_0x27bbc0['options']);var _0x1d2676={'where':_0x2851cd[_0x6522('0x40')]};return db['WhatsappApplication']['count'](_0x1d2676)[_0x6522('0x28')](function(_0xea614){_0xca94f4[_0x6522('0x23')]=_0xea614;if(_0x27bbc0[_0x6522('0x33')][_0x6522('0x43')]){_0x2851cd['include']=[{'all':!![]}];}return db[_0x6522('0x2e')][_0x6522('0x44')](_0x2851cd);})[_0x6522('0x28')](function(_0x3acdd0){_0xca94f4[_0x6522('0x45')]=_0x3acdd0;return _0xca94f4;})[_0x6522('0x28')](respondWithFilteredResult(_0x1a46f6,_0x2851cd))['catch'](handleError(_0x1a46f6,null));};exports[_0x6522('0x46')]=function(_0x5df5a7,_0x566a90){var _0x304b1f={'raw':!![],'where':{'id':_0x5df5a7[_0x6522('0x47')]['id']}},_0x1aef5e={};_0x1aef5e[_0x6522('0x32')]=_['keys'](db[_0x6522('0x2e')][_0x6522('0x2f')]);_0x1aef5e[_0x6522('0x33')]=_['keys'](_0x5df5a7[_0x6522('0x33')]);_0x1aef5e['filters']=_[_0x6522('0x36')](_0x1aef5e[_0x6522('0x32')],_0x1aef5e[_0x6522('0x33')]);_0x304b1f['attributes']=_[_0x6522('0x36')](_0x1aef5e[_0x6522('0x32')],qs[_0x6522('0x38')](_0x5df5a7[_0x6522('0x33')][_0x6522('0x38')]));_0x304b1f[_0x6522('0x37')]=_0x304b1f[_0x6522('0x37')][_0x6522('0x39')]?_0x304b1f[_0x6522('0x37')]:_0x1aef5e[_0x6522('0x32')];if(_0x5df5a7['query'][_0x6522('0x43')]){_0x304b1f[_0x6522('0x48')]=[{'all':!![]}];}_0x304b1f=_[_0x6522('0x3f')]({},_0x304b1f,_0x5df5a7[_0x6522('0x49')]);return db[_0x6522('0x2e')][_0x6522('0x4a')](_0x304b1f)[_0x6522('0x28')](handleEntityNotFound(_0x566a90,null))[_0x6522('0x28')](respondWithResult(_0x566a90,null))[_0x6522('0x4b')](handleError(_0x566a90,null));};exports[_0x6522('0x4c')]=function(_0x59ea93,_0x500855){return db[_0x6522('0x2e')][_0x6522('0x4c')](_0x59ea93['body'],{})[_0x6522('0x28')](respondWithResult(_0x500855,0xc9))[_0x6522('0x4b')](handleError(_0x500855,null));};exports['update']=function(_0x4d357d,_0x498ea4){if(_0x4d357d['body']['id']){delete _0x4d357d[_0x6522('0x4d')]['id'];}return db[_0x6522('0x2e')][_0x6522('0x4a')]({'where':{'id':_0x4d357d[_0x6522('0x47')]['id']}})[_0x6522('0x28')](handleEntityNotFound(_0x498ea4,null))[_0x6522('0x28')](saveUpdates(_0x4d357d['body'],null))[_0x6522('0x28')](respondWithResult(_0x498ea4,null))[_0x6522('0x4b')](handleError(_0x498ea4,null));};exports['destroy']=function(_0x36c429,_0x3ab0b3){return db[_0x6522('0x2e')][_0x6522('0x4a')]({'where':{'id':_0x36c429[_0x6522('0x47')]['id']}})['then'](handleEntityNotFound(_0x3ab0b3,null))[_0x6522('0x28')](removeEntity(_0x3ab0b3,null))[_0x6522('0x4b')](handleError(_0x3ab0b3,null));};
\ No newline at end of file
+var _0x6050=['rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','fs-extra','jsforce','desk.js','to-csv','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','limit','count','Content-Range','apply','reject','save','then','destroy','name','send','index','map','WhatsappApplication'];(function(_0x402e5e,_0x3a87f0){var _0x1265a1=function(_0x7dc416){while(--_0x7dc416){_0x402e5e['push'](_0x402e5e['shift']());}};_0x1265a1(++_0x3a87f0);}(_0x6050,0x196));var _0x0605=function(_0x50b712,_0x1c521f){_0x50b712=_0x50b712-0x0;var _0x26aff1=_0x6050[_0x50b712];return _0x26aff1;};'use strict';var emlformat=require(_0x0605('0x0'));var rimraf=require(_0x0605('0x1'));var zipdir=require(_0x0605('0x2'));var jsonpatch=require(_0x0605('0x3'));var rp=require(_0x0605('0x4'));var moment=require(_0x0605('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x0605('0x6'));var util=require(_0x0605('0x7'));var path=require(_0x0605('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0605('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x0605('0xa'));var deskjs=require(_0x0605('0xb'));var toCsv=require(_0x0605('0xc'));var querystring=require(_0x0605('0xd'));var Papa=require(_0x0605('0xe'));var Redis=require('ioredis');var authService=require(_0x0605('0xf'));var qs=require(_0x0605('0x10'));var as=require(_0x0605('0x11'));var hardwareService=require(_0x0605('0x12'));var logger=require(_0x0605('0x13'))(_0x0605('0x14'));var utils=require(_0x0605('0x15'));var config=require(_0x0605('0x16'));var licenseUtil=require(_0x0605('0x17'));var db=require(_0x0605('0x18'))['db'];function respondWithStatusCode(_0xd22e35,_0x39e288){_0x39e288=_0x39e288||0xcc;return function(_0x34c9e6){if(_0x34c9e6){return _0xd22e35[_0x0605('0x19')](_0x39e288);}return _0xd22e35[_0x0605('0x1a')](_0x39e288)[_0x0605('0x1b')]();};}function respondWithResult(_0x169a70,_0x65a20b){_0x65a20b=_0x65a20b||0xc8;return function(_0x1b944f){if(_0x1b944f){return _0x169a70['status'](_0x65a20b)[_0x0605('0x1c')](_0x1b944f);}};}function respondWithFilteredResult(_0x1a802b,_0x4993ab){return function(_0x5ce56a){if(_0x5ce56a){var _0x4eefe9=typeof _0x4993ab[_0x0605('0x1d')]===_0x0605('0x1e')&&typeof _0x4993ab[_0x0605('0x1f')]===_0x0605('0x1e');var _0xefc557=_0x5ce56a[_0x0605('0x20')];var _0x2b7b5a=_0x4eefe9?0x0:_0x4993ab[_0x0605('0x1d')];var _0x193520=_0x4eefe9?_0x5ce56a[_0x0605('0x20')]:_0x4993ab[_0x0605('0x1d')]+_0x4993ab[_0x0605('0x1f')];var _0x2e2204;if(_0x193520>=_0xefc557){_0x193520=_0xefc557;_0x2e2204=0xc8;}else{_0x2e2204=0xce;}_0x1a802b[_0x0605('0x1a')](_0x2e2204);return _0x1a802b['set'](_0x0605('0x21'),_0x2b7b5a+'-'+_0x193520+'/'+_0xefc557)[_0x0605('0x1c')](_0x5ce56a);}return null;};}function patchUpdates(_0x430f28){return function(_0x443326){try{jsonpatch[_0x0605('0x22')](_0x443326,_0x430f28,!![]);}catch(_0x90b2e1){return BPromise[_0x0605('0x23')](_0x90b2e1);}return _0x443326[_0x0605('0x24')]();};}function saveUpdates(_0x226ef5,_0x5b0d44){return function(_0xc334b8){if(_0xc334b8){return _0xc334b8['update'](_0x226ef5)[_0x0605('0x25')](function(_0x118e9c){return _0x118e9c;});}return null;};}function removeEntity(_0x110098,_0xf182c4){return function(_0x10c575){if(_0x10c575){return _0x10c575[_0x0605('0x26')]()[_0x0605('0x25')](function(){_0x110098[_0x0605('0x1a')](0xcc)[_0x0605('0x1b')]();});}};}function handleEntityNotFound(_0x2896d7,_0x9f2833){return function(_0x1c3722){if(!_0x1c3722){_0x2896d7['sendStatus'](0x194);}return _0x1c3722;};}function handleError(_0x6bc204,_0x3c8e36){_0x3c8e36=_0x3c8e36||0x1f4;return function(_0x4b1e0c){logger['error'](_0x4b1e0c['stack']);if(_0x4b1e0c[_0x0605('0x27')]){delete _0x4b1e0c[_0x0605('0x27')];}_0x6bc204[_0x0605('0x1a')](_0x3c8e36)[_0x0605('0x28')](_0x4b1e0c);};}exports[_0x0605('0x29')]=function(_0x4554df,_0x4e32ef){var _0x34f25d={},_0x5daef6={},_0xa836f2={'count':0x0,'rows':[]};var _0x3640b9=_[_0x0605('0x2a')](db[_0x0605('0x2b')][_0x0605('0x2c')],function(_0x352dd6){return{'name':_0x352dd6['fieldName'],'type':_0x352dd6[_0x0605('0x2d')][_0x0605('0x2e')]};});_0x5daef6[_0x0605('0x2f')]=_[_0x0605('0x2a')](_0x3640b9,_0x0605('0x27'));_0x5daef6[_0x0605('0x30')]=_[_0x0605('0x31')](_0x4554df[_0x0605('0x30')]);_0x5daef6[_0x0605('0x32')]=_[_0x0605('0x33')](_0x5daef6[_0x0605('0x2f')],_0x5daef6[_0x0605('0x30')]);_0x34f25d[_0x0605('0x34')]=_[_0x0605('0x33')](_0x5daef6[_0x0605('0x2f')],qs[_0x0605('0x35')](_0x4554df[_0x0605('0x30')][_0x0605('0x35')]));_0x34f25d[_0x0605('0x34')]=_0x34f25d[_0x0605('0x34')][_0x0605('0x36')]?_0x34f25d[_0x0605('0x34')]:_0x5daef6[_0x0605('0x2f')];if(!_0x4554df[_0x0605('0x30')][_0x0605('0x37')](_0x0605('0x38'))){_0x34f25d[_0x0605('0x1f')]=qs['limit'](_0x4554df[_0x0605('0x30')][_0x0605('0x1f')]);_0x34f25d['offset']=qs[_0x0605('0x1d')](_0x4554df[_0x0605('0x30')]['offset']);}_0x34f25d[_0x0605('0x39')]=qs[_0x0605('0x3a')](_0x4554df[_0x0605('0x30')][_0x0605('0x3a')]);_0x34f25d[_0x0605('0x3b')]=qs[_0x0605('0x32')](_['pick'](_0x4554df['query'],_0x5daef6[_0x0605('0x32')]),_0x3640b9);if(_0x4554df[_0x0605('0x30')][_0x0605('0x3c')]){_0x34f25d['where']=_[_0x0605('0x3d')](_0x34f25d['where'],{'$or':_[_0x0605('0x2a')](_0x3640b9,function(_0x1e98f6){if(_0x1e98f6[_0x0605('0x2d')]!==_0x0605('0x3e')){var _0x42f7ce={};_0x42f7ce[_0x1e98f6[_0x0605('0x27')]]={'$like':'%'+_0x4554df[_0x0605('0x30')][_0x0605('0x3c')]+'%'};return _0x42f7ce;}})});}_0x34f25d=_[_0x0605('0x3d')]({},_0x34f25d,_0x4554df[_0x0605('0x3f')]);var _0x57aa15={'where':_0x34f25d[_0x0605('0x3b')]};return db['WhatsappApplication'][_0x0605('0x20')](_0x57aa15)[_0x0605('0x25')](function(_0x45787e){_0xa836f2['count']=_0x45787e;if(_0x4554df['query'][_0x0605('0x40')]){_0x34f25d['include']=[{'all':!![]}];}return db[_0x0605('0x2b')][_0x0605('0x41')](_0x34f25d);})[_0x0605('0x25')](function(_0x3de34a){_0xa836f2[_0x0605('0x42')]=_0x3de34a;return _0xa836f2;})[_0x0605('0x25')](respondWithFilteredResult(_0x4e32ef,_0x34f25d))[_0x0605('0x43')](handleError(_0x4e32ef,null));};exports[_0x0605('0x44')]=function(_0x3fa553,_0x10bb36){var _0x18d3ce={'raw':!![],'where':{'id':_0x3fa553[_0x0605('0x45')]['id']}},_0x3616a3={};_0x3616a3['model']=_['keys'](db[_0x0605('0x2b')]['rawAttributes']);_0x3616a3[_0x0605('0x30')]=_[_0x0605('0x31')](_0x3fa553['query']);_0x3616a3[_0x0605('0x32')]=_[_0x0605('0x33')](_0x3616a3['model'],_0x3616a3[_0x0605('0x30')]);_0x18d3ce[_0x0605('0x34')]=_['intersection'](_0x3616a3[_0x0605('0x2f')],qs[_0x0605('0x35')](_0x3fa553['query'][_0x0605('0x35')]));_0x18d3ce['attributes']=_0x18d3ce['attributes'][_0x0605('0x36')]?_0x18d3ce[_0x0605('0x34')]:_0x3616a3[_0x0605('0x2f')];if(_0x3fa553[_0x0605('0x30')][_0x0605('0x40')]){_0x18d3ce[_0x0605('0x46')]=[{'all':!![]}];}_0x18d3ce=_[_0x0605('0x3d')]({},_0x18d3ce,_0x3fa553[_0x0605('0x3f')]);return db['WhatsappApplication'][_0x0605('0x47')](_0x18d3ce)[_0x0605('0x25')](handleEntityNotFound(_0x10bb36,null))[_0x0605('0x25')](respondWithResult(_0x10bb36,null))['catch'](handleError(_0x10bb36,null));};exports[_0x0605('0x48')]=function(_0x1fb70b,_0x45cc1a){return db[_0x0605('0x2b')][_0x0605('0x48')](_0x1fb70b[_0x0605('0x49')],{})[_0x0605('0x25')](respondWithResult(_0x45cc1a,0xc9))[_0x0605('0x43')](handleError(_0x45cc1a,null));};exports[_0x0605('0x4a')]=function(_0x4bc55e,_0x3c597c){if(_0x4bc55e[_0x0605('0x49')]['id']){delete _0x4bc55e[_0x0605('0x49')]['id'];}return db[_0x0605('0x2b')][_0x0605('0x47')]({'where':{'id':_0x4bc55e[_0x0605('0x45')]['id']}})[_0x0605('0x25')](handleEntityNotFound(_0x3c597c,null))[_0x0605('0x25')](saveUpdates(_0x4bc55e[_0x0605('0x49')],null))[_0x0605('0x25')](respondWithResult(_0x3c597c,null))['catch'](handleError(_0x3c597c,null));};exports['destroy']=function(_0x4876c7,_0x2687a8){return db[_0x0605('0x2b')][_0x0605('0x47')]({'where':{'id':_0x4876c7[_0x0605('0x45')]['id']}})[_0x0605('0x25')](handleEntityNotFound(_0x2687a8,null))[_0x0605('0x25')](removeEntity(_0x2687a8,null))['catch'](handleError(_0x2687a8,null));};
\ No newline at end of file
index eb7fc7c..f974730 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf93=['path','rimraf','../../config/environment','./whatsappApplication.attributes','exports','WhatsappApplication','utf8mb4','lodash','util','moment','bluebird'];(function(_0x339129,_0x86dcc6){var _0x1570df=function(_0x3b537e){while(--_0x3b537e){_0x339129['push'](_0x339129['shift']());}};_0x1570df(++_0x86dcc6);}(_0xaf93,0x151));var _0x3af9=function(_0x2237cd,_0x39d327){_0x2237cd=_0x2237cd-0x0;var _0x3120d1=_0xaf93[_0x2237cd];return _0x3120d1;};'use strict';var _=require(_0x3af9('0x0'));var util=require(_0x3af9('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x3af9('0x2'));var BPromise=require(_0x3af9('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3af9('0x4'));var rimraf=require(_0x3af9('0x5'));var config=require(_0x3af9('0x6'));var attributes=require(_0x3af9('0x7'));module[_0x3af9('0x8')]=function(_0x1ad446,_0x333abb){return _0x1ad446['define'](_0x3af9('0x9'),attributes,{'tableName':'whatsapp_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3af9('0xa'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x4d9e=['lodash','api','bluebird','path','rimraf','./whatsappApplication.attributes','exports','define','WhatsappApplication','utf8mb4','utf8mb4_unicode_ci'];(function(_0x3af108,_0x42fdf4){var _0x25219f=function(_0x3fe2b5){while(--_0x3fe2b5){_0x3af108['push'](_0x3af108['shift']());}};_0x25219f(++_0x42fdf4);}(_0x4d9e,0x18c));var _0xe4d9=function(_0x8679c6,_0x118060){_0x8679c6=_0x8679c6-0x0;var _0x548137=_0x4d9e[_0x8679c6];return _0x548137;};'use strict';var _=require(_0xe4d9('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xe4d9('0x1'));var moment=require('moment');var BPromise=require(_0xe4d9('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe4d9('0x3'));var rimraf=require(_0xe4d9('0x4'));var config=require('../../config/environment');var attributes=require(_0xe4d9('0x5'));module[_0xe4d9('0x6')]=function(_0x278035,_0x34c2a2){return _0x278035[_0xe4d9('0x7')](_0xe4d9('0x8'),attributes,{'tableName':'whatsapp_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xe4d9('0x9'),'collate':_0xe4d9('0xa')});};
\ No newline at end of file
index 48ce5c3..de96d54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x2462f6,_0x228110){var _0x36b7fd=function(_0x2d7b4b){while(--_0x2d7b4b){_0x2462f6['push'](_0x2462f6['shift']());}};_0x36b7fd(++_0x228110);}(_0x22fb,0x192));var _0xb22f=function(_0x31c3ce,_0x280370){_0x31c3ce=_0x31c3ce-0x0;var _0x5f0d6e=_0x22fb[_0x31c3ce];return _0x5f0d6e;};'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
+var _0xd0bb=['debug','stringify','error','code','WhatsappApplication,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','request\x20sent'];(function(_0x5ebcdf,_0x345c47){var _0x432a50=function(_0x1af075){while(--_0x1af075){_0x5ebcdf['push'](_0x5ebcdf['shift']());}};_0x432a50(++_0x345c47);}(_0xd0bb,0x1eb));var _0xbd0b=function(_0x13f5d1,_0x12e3f7){_0x13f5d1=_0x13f5d1-0x0;var _0x5621f3=_0xd0bb[_0x13f5d1];return _0x5621f3;};'use strict';var _=require(_0xbd0b('0x0'));var util=require(_0xbd0b('0x1'));var moment=require(_0xbd0b('0x2'));var BPromise=require('bluebird');var rs=require(_0xbd0b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbd0b('0x4'))['db'];var utils=require(_0xbd0b('0x5'));var logger=require('../../config/logger')(_0xbd0b('0x6'));var config=require('../../config/environment');var jayson=require(_0xbd0b('0x7'));var client=jayson[_0xbd0b('0x8')][_0xbd0b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x37c205,_0x809599,_0x5eb975){return new BPromise(function(_0x2a4075,_0x4533ff){return client[_0xbd0b('0xa')](_0x37c205,_0x5eb975)[_0xbd0b('0xb')](function(_0x16e185){logger['info']('WhatsappApplication,\x20%s,\x20%s',_0x809599,_0xbd0b('0xc'));logger[_0xbd0b('0xd')]('WhatsappApplication,\x20%s,\x20%s,\x20%s',_0x809599,_0xbd0b('0xc'),JSON[_0xbd0b('0xe')](_0x16e185));if(_0x16e185['error']){if(_0x16e185[_0xbd0b('0xf')][_0xbd0b('0x10')]===0x1f4){logger[_0xbd0b('0xf')](_0xbd0b('0x11'),_0x809599,_0x16e185[_0xbd0b('0xf')][_0xbd0b('0x12')]);return _0x4533ff(_0x16e185[_0xbd0b('0xf')][_0xbd0b('0x12')]);}logger[_0xbd0b('0xf')](_0xbd0b('0x11'),_0x809599,_0x16e185[_0xbd0b('0xf')]['message']);return _0x2a4075(_0x16e185[_0xbd0b('0xf')]['message']);}else{logger['info'](_0xbd0b('0x11'),_0x809599,_0xbd0b('0xc'));_0x2a4075(_0x16e185[_0xbd0b('0x13')][_0xbd0b('0x12')]);}})[_0xbd0b('0x14')](function(_0x546db3){logger['error'](_0xbd0b('0x11'),_0x809599,_0x546db3);_0x4533ff(_0x546db3);});});}
\ No newline at end of file
index 7adccd9..94c2a58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44e8=['express','Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','get','index','/describe','isAuthenticated','/:id','show','/:id/messages','getMessages','/:id/download','download','post','addMessage','tracked','whatsapp','addTags','put','whatsappinteraction:update','update','whatsappinteraction:destroy','delete','/:id/tags','removeTags','exports','multer','connect-timeout'];(function(_0xbb14db,_0x3ee8c6){var _0x36bed7=function(_0x16c478){while(--_0x16c478){_0xbb14db['push'](_0xbb14db['shift']());}};_0x36bed7(++_0x3ee8c6);}(_0x44e8,0xd7));var _0x844e=function(_0x2d11cd,_0x7ed302){_0x2d11cd=_0x2d11cd-0x0;var _0x3488ea=_0x44e8[_0x2d11cd];return _0x3488ea;};'use strict';var multer=require(_0x844e('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x844e('0x1'));var express=require(_0x844e('0x2'));var router=express[_0x844e('0x3')]();var fs_extra=require(_0x844e('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x844e('0x5'));var config=require(_0x844e('0x6'));var controller=require(_0x844e('0x7'));router[_0x844e('0x8')]('/',auth['isAuthenticated'](),controller[_0x844e('0x9')]);router[_0x844e('0x8')](_0x844e('0xa'),auth[_0x844e('0xb')](),controller['describe']);router[_0x844e('0x8')](_0x844e('0xc'),auth[_0x844e('0xb')](),controller[_0x844e('0xd')]);router[_0x844e('0x8')](_0x844e('0xe'),auth['isAuthenticated'](),controller[_0x844e('0xf')]);router[_0x844e('0x8')](_0x844e('0x10'),auth[_0x844e('0xb')](),controller[_0x844e('0x11')]);router[_0x844e('0x12')]('/',auth[_0x844e('0xb')](),controller['create']);router[_0x844e('0x12')](_0x844e('0xe'),auth['isAuthenticated'](),controller[_0x844e('0x13')]);router[_0x844e('0x12')]('/:id/tags',auth[_0x844e('0xb')](),interaction[_0x844e('0x14')](_0x844e('0x15'),'whatsappinteraction:addtags'),controller[_0x844e('0x16')]);router[_0x844e('0x17')](_0x844e('0xc'),auth[_0x844e('0xb')](),interaction[_0x844e('0x14')](_0x844e('0x15'),_0x844e('0x18')),controller[_0x844e('0x19')]);router['delete'](_0x844e('0xc'),auth['isAuthenticated'](),interaction[_0x844e('0x14')]('whatsapp',_0x844e('0x1a')),controller['destroy']);router[_0x844e('0x1b')](_0x844e('0x1c'),auth[_0x844e('0xb')](),controller[_0x844e('0x1d')]);module[_0x844e('0x1e')]=router;
\ No newline at end of file
+var _0x5d58=['create','/:id/tags','tracked','whatsapp','whatsappinteraction:addtags','addTags','whatsappinteraction:update','update','delete','whatsappinteraction:destroy','destroy','removeTags','exports','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/:id','show','/:id/messages','/:id/download','download','post'];(function(_0x1f49da,_0x58f6bc){var _0x22521f=function(_0x573709){while(--_0x573709){_0x1f49da['push'](_0x1f49da['shift']());}};_0x22521f(++_0x58f6bc);}(_0x5d58,0x187));var _0x85d5=function(_0x199c83,_0x4fc086){_0x199c83=_0x199c83-0x0;var _0x4e06e2=_0x5d58[_0x199c83];return _0x4e06e2;};'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('./whatsappInteraction.controller');router[_0x85d5('0x4')]('/',auth[_0x85d5('0x5')](),controller[_0x85d5('0x6')]);router[_0x85d5('0x4')]('/describe',auth[_0x85d5('0x5')](),controller[_0x85d5('0x7')]);router['get'](_0x85d5('0x8'),auth['isAuthenticated'](),controller[_0x85d5('0x9')]);router[_0x85d5('0x4')](_0x85d5('0xa'),auth['isAuthenticated'](),controller['getMessages']);router['get'](_0x85d5('0xb'),auth[_0x85d5('0x5')](),controller[_0x85d5('0xc')]);router[_0x85d5('0xd')]('/',auth[_0x85d5('0x5')](),controller[_0x85d5('0xe')]);router[_0x85d5('0xd')]('/:id/messages',auth['isAuthenticated'](),controller['addMessage']);router[_0x85d5('0xd')](_0x85d5('0xf'),auth[_0x85d5('0x5')](),interaction[_0x85d5('0x10')](_0x85d5('0x11'),_0x85d5('0x12')),controller[_0x85d5('0x13')]);router['put'](_0x85d5('0x8'),auth[_0x85d5('0x5')](),interaction[_0x85d5('0x10')](_0x85d5('0x11'),_0x85d5('0x14')),controller[_0x85d5('0x15')]);router[_0x85d5('0x16')](_0x85d5('0x8'),auth[_0x85d5('0x5')](),interaction[_0x85d5('0x10')](_0x85d5('0x11'),_0x85d5('0x17')),controller[_0x85d5('0x18')]);router[_0x85d5('0x16')](_0x85d5('0xf'),auth[_0x85d5('0x5')](),controller[_0x85d5('0x19')]);module[_0x85d5('0x1a')]=router;
\ No newline at end of file
index 1b10109..000d7f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7ce=['DATE','ENUM','out','sequelize','moment','exports','BOOLEAN','STRING'];(function(_0x19e07f,_0x187d1e){var _0x15baf6=function(_0x722ada){while(--_0x722ada){_0x19e07f['push'](_0x19e07f['shift']());}};_0x15baf6(++_0x187d1e);}(_0xd7ce,0x16b));var _0xed7c=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xd7ce[_0x3b380d];return _0x54502b;};'use strict';var Sequelize=require(_0xed7c('0x0'));var moment=require(_0xed7c('0x1'));module[_0xed7c('0x2')]={'closed':{'type':Sequelize[_0xed7c('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xed7c('0x4')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0xed7c('0x5')]},'firstMsgDirection':{'type':Sequelize[_0xed7c('0x6')]('in',_0xed7c('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xed7c('0x5')]},'lastMsgDirection':{'type':Sequelize[_0xed7c('0x6')]('in',_0xed7c('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xed7c('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x39b3=['DATE','ENUM','out','sequelize','BOOLEAN','STRING'];(function(_0x1a9ccc,_0xd54659){var _0x1b449d=function(_0x3a2858){while(--_0x3a2858){_0x1a9ccc['push'](_0x1a9ccc['shift']());}};_0x1b449d(++_0xd54659);}(_0x39b3,0xc9));var _0x339b=function(_0xefd519,_0xc62635){_0xefd519=_0xefd519-0x0;var _0x4bb882=_0x39b3[_0xefd519];return _0x4bb882;};'use strict';var Sequelize=require(_0x339b('0x0'));var moment=require('moment');module['exports']={'closed':{'type':Sequelize[_0x339b('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x339b('0x2')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x339b('0x2')]},'note':{'type':Sequelize[_0x339b('0x2')]},'phone':{'type':Sequelize[_0x339b('0x2')]},'read1stAt':{'type':Sequelize[_0x339b('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x339b('0x4')]('in',_0x339b('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x339b('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x339b('0x4')]('in',_0x339b('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x339b('0x1')],'defaultValue':![]}};
\ No newline at end of file
index c34f234..355f7e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67d1=['err','unlinkSync','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','sendStatus','status','json','offset','undefined','count','limit','set','apply','save','then','end','stack','name','send','Users','map','split','forEach','Tags','TagIds','catch','answered','unmanaged','total','closed','UserId','waiting','talking','index','WhatsappInteraction','rawAttributes','type','key','query','intersection','model','attributes','fields','length','nolimit','order','sort','filters','pick','field','from','tools_tags','select','u.id','ui.WhatsappInteractionId','user_has_whatsapp_interactions','users','u.id\x20=\x20ui.UserId','whatsapp_interactions','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','whatsapp_accounts','a.id\x20=\x20i.WhatsappAccountId','whatsapp_messages','whatsapp_interaction_has_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','having','`\x20>\x200','operator','value','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','keys','some','compact','WhatsappAccountId','i.WhatsappAccountId\x20IN\x20?','concat','parse','$lte','where','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','i.id','Sequelize','QueryTypes','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','isEmpty','t.id\x20IN\x20?','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','agent','i.WhatsappAccountId\x20IS\x20NULL','role','sequelize','toString','keyBy','merge','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','Contact.firstName','Contact.lastName','c.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','Owner.fullname','GROUP_CONCAT(DISTINCT\x20t.id)','ui.WhatsappInteractionId\x20IN\x20?','groupBy','push','all','show','params','includeAll','options','create','body','destroy','describe','addMessage','WhatsappMessage','ids','omit','$gte','format','YYYY-MM-DD\x20HH:mm:ss','include','findAll','rows','addTags','spread','whatsappInteractionTags:save','removeTags','download','unix','root','server','files','tmp','join','attachments','transcript-%d-%s.zip','fullname','CmContact','Contact','firstName','lastName','Attachment','Messages','createdAt','direction','secret','WhatsappAccount','Owner','get','mkdirSync','Whatsapp','Account','closedAt','disposition','basename','existsSync','createReadStream','pipe','createWriteStream','out','System','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','log'];(function(_0x135fe5,_0xf12982){var _0x399543=function(_0x14a402){while(--_0x14a402){_0x135fe5['push'](_0x135fe5['shift']());}};_0x399543(++_0xf12982);}(_0x67d1,0xf1));var _0x167d=function(_0x263a74,_0xc31414){_0x263a74=_0x263a74-0x0;var _0x2aa86c=_0x67d1[_0x263a74];return _0x2aa86c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x167d('0x0'));var zipdir=require(_0x167d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x167d('0x2'));var moment=require(_0x167d('0x3'));var BPromise=require(_0x167d('0x4'));var Mustache=require(_0x167d('0x5'));var util=require('util');var path=require(_0x167d('0x6'));var sox=require(_0x167d('0x7'));var csv=require(_0x167d('0x8'));var ejs=require(_0x167d('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x167d('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x167d('0xb'));var deskjs=require(_0x167d('0xc'));var toCsv=require(_0x167d('0x8'));var querystring=require(_0x167d('0xd'));var Papa=require(_0x167d('0xe'));var Redis=require(_0x167d('0xf'));var authService=require(_0x167d('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x167d('0x11'));var pdf=require(_0x167d('0x12'));var hardwareService=require(_0x167d('0x13'));var logger=require(_0x167d('0x14'))(_0x167d('0x15'));var utils=require(_0x167d('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x167d('0x17'));var db=require('../../mysqldb')['db'];config[_0x167d('0x18')]=_[_0x167d('0x19')](config['redis'],{'host':_0x167d('0x1a'),'port':0x18eb});var socket=require(_0x167d('0x1b'))(new Redis(config[_0x167d('0x18')]));require(_0x167d('0x1c'))[_0x167d('0x1d')](socket);function respondWithStatusCode(_0x4e386d,_0x4e9b6b){_0x4e9b6b=_0x4e9b6b||0xcc;return function(_0x22c668){if(_0x22c668){return _0x4e386d[_0x167d('0x1e')](_0x4e9b6b);}return _0x4e386d[_0x167d('0x1f')](_0x4e9b6b)['end']();};}function respondWithResult(_0xdaeefe,_0x47ee94){_0x47ee94=_0x47ee94||0xc8;return function(_0x43fd94){if(_0x43fd94){return _0xdaeefe['status'](_0x47ee94)[_0x167d('0x20')](_0x43fd94);}};}function respondWithFilteredResult(_0x381827,_0x1e1611){return function(_0x49e343){if(_0x49e343){var _0x6db64f=typeof _0x1e1611[_0x167d('0x21')]===_0x167d('0x22')&&typeof _0x1e1611['limit']===_0x167d('0x22');var _0x2dd80f=_0x49e343[_0x167d('0x23')];var _0x20bb90=_0x6db64f?0x0:_0x1e1611[_0x167d('0x21')];var _0x2b2794=_0x6db64f?_0x49e343['count']:_0x1e1611['offset']+_0x1e1611[_0x167d('0x24')];var _0x4e83b0;if(_0x2b2794>=_0x2dd80f){_0x2b2794=_0x2dd80f;_0x4e83b0=0xc8;}else{_0x4e83b0=0xce;}_0x381827[_0x167d('0x1f')](_0x4e83b0);return _0x381827[_0x167d('0x25')]('Content-Range',_0x20bb90+'-'+_0x2b2794+'/'+_0x2dd80f)['json'](_0x49e343);}return null;};}function patchUpdates(_0x1d6a59){return function(_0x27aff0){try{jsonpatch[_0x167d('0x26')](_0x27aff0,_0x1d6a59,!![]);}catch(_0x2210a6){return BPromise['reject'](_0x2210a6);}return _0x27aff0[_0x167d('0x27')]();};}function saveUpdates(_0x4175c6,_0x2790a6){return function(_0x1e645f){if(_0x1e645f){return _0x1e645f['update'](_0x4175c6)[_0x167d('0x28')](function(_0x279fa1){return _0x279fa1;});}return null;};}function removeEntity(_0x387bcc,_0x3b1ad3){return function(_0x4530eb){if(_0x4530eb){return _0x4530eb['destroy']()[_0x167d('0x28')](function(){_0x387bcc['status'](0xcc)[_0x167d('0x29')]();});}};}function handleEntityNotFound(_0x143a31,_0x3d5b1c){return function(_0xb531ce){if(!_0xb531ce){_0x143a31[_0x167d('0x1e')](0x194);}return _0xb531ce;};}function handleError(_0x40fda9,_0x581fea){_0x581fea=_0x581fea||0x1f4;return function(_0x276e1d){logger['error'](_0x276e1d[_0x167d('0x2a')]);if(_0x276e1d[_0x167d('0x2b')]){delete _0x276e1d['name'];}_0x40fda9[_0x167d('0x1f')](_0x581fea)[_0x167d('0x2c')](_0x276e1d);};}function getInteractionUsers(_0x510d13,_0xe9e561){return new BPromise(function(_0x5dafc5,_0x4c0956){try{if(_0xe9e561[_0x510d13['id']]){_0x510d13[_0x167d('0x2d')]=_[_0x167d('0x2e')](_0xe9e561[_0x510d13['id']],function(_0x33b771){return{'id':_0x33b771['id'],'fullname':_0x33b771['fullname']};});}}catch(_0x511118){_0x4c0956(_0x511118);}_0x5dafc5(_0x510d13);});}function getInteractionTags(_0x42b167,_0x3af3f6){return new BPromise(function(_0x3ebc81,_0x9e32f6){try{if(_0x42b167['TagIds']){_0x42b167['Tags']=[];_0x42b167['TagIds'][_0x167d('0x2f')](',')[_0x167d('0x30')](function(_0x5bd944){_0x42b167[_0x167d('0x31')]['push'](_0x3af3f6[_0x5bd944]);});}delete _0x42b167[_0x167d('0x32')];}catch(_0x76d499){_0x9e32f6(_0x76d499);}_0x3ebc81(_0x42b167);});}function updateWhatsappInteraction(_0x43192f,_0x4d7031,_0x6fd6dd){return new BPromise(function(_0xaf739c,_0xf0ff0d){return getInteractionUsers(_0x43192f,_0x6fd6dd)[_0x167d('0x28')](function(_0x47d982){return getInteractionTags(_0x47d982,_0x4d7031);})[_0x167d('0x28')](function(_0x5e368f){return getStateInteraction(_0x5e368f);})[_0x167d('0x28')](function(_0x850f58){_0xaf739c(_0x850f58);})[_0x167d('0x33')](function(_0x10df94){_0xf0ff0d(_0x10df94);});});}function getStateInteraction(_0x2f713e){return new BPromise(function(_0x577e51){_0x2f713e['waiting']=0x0;_0x2f713e['talking']=0x0;_0x2f713e[_0x167d('0x34')]=0x0;_0x2f713e[_0x167d('0x35')]=0x0;_0x2f713e[_0x167d('0x36')]=0x0;if(!_0x2f713e[_0x167d('0x37')]&&!_0x2f713e[_0x167d('0x38')]){_0x2f713e[_0x167d('0x39')]+=0x1;}if(!_0x2f713e[_0x167d('0x37')]&&_0x2f713e[_0x167d('0x38')]){_0x2f713e[_0x167d('0x3a')]+=0x1;if(_0x2f713e[_0x167d('0x39')]){_0x2f713e['waiting']-=0x1;}}if(_0x2f713e[_0x167d('0x37')]&&_0x2f713e['UserId']){_0x2f713e[_0x167d('0x34')]+=0x1;if(_0x2f713e[_0x167d('0x3a')]){_0x2f713e[_0x167d('0x3a')]-=0x1;}}if(_0x2f713e[_0x167d('0x37')]&&!_0x2f713e[_0x167d('0x38')]){_0x2f713e[_0x167d('0x35')]+=0x1;if(_0x2f713e['waiting']){_0x2f713e[_0x167d('0x39')]-=0x1;}}_0x2f713e[_0x167d('0x36')]+=0x1;_0x577e51(_0x2f713e);});}exports[_0x167d('0x3b')]=function(_0x382d3e,_0x38cf66){var _0x1048d3={},_0x13f340={},_0x13bf56={'count':0x0,'rows':[]};var _0x5413e2=_[_0x167d('0x2e')](db[_0x167d('0x3c')][_0x167d('0x3d')],function(_0x439126){return{'name':_0x439126['fieldName'],'type':_0x439126[_0x167d('0x3e')][_0x167d('0x3f')]};});_0x13f340['model']=_['map'](_0x5413e2,_0x167d('0x2b'));_0x13f340[_0x167d('0x40')]=_['keys'](_0x382d3e[_0x167d('0x40')]);_0x13f340['filters']=_[_0x167d('0x41')](_0x13f340[_0x167d('0x42')],_0x13f340['query']);_0x1048d3[_0x167d('0x43')]=_['intersection'](_0x13f340[_0x167d('0x42')],qs[_0x167d('0x44')](_0x382d3e[_0x167d('0x40')][_0x167d('0x44')]));_0x1048d3[_0x167d('0x43')]=_0x1048d3[_0x167d('0x43')][_0x167d('0x45')]?_0x1048d3[_0x167d('0x43')]:_0x13f340[_0x167d('0x42')];if(!_0x382d3e[_0x167d('0x40')]['hasOwnProperty'](_0x167d('0x46'))){_0x1048d3[_0x167d('0x24')]=qs[_0x167d('0x24')](_0x382d3e[_0x167d('0x40')][_0x167d('0x24')]);_0x1048d3[_0x167d('0x21')]=qs[_0x167d('0x21')](_0x382d3e[_0x167d('0x40')][_0x167d('0x21')]);}_0x1048d3[_0x167d('0x47')]=qs[_0x167d('0x48')](_0x382d3e[_0x167d('0x40')][_0x167d('0x48')]);_0x1048d3['where']=qs[_0x167d('0x49')](_[_0x167d('0x4a')](_0x382d3e[_0x167d('0x40')],_0x13f340[_0x167d('0x49')]),_0x5413e2);var _0x1ab900=[];var _0x1375fb=squel['select']()['field']('id')[_0x167d('0x4b')]('name')[_0x167d('0x4b')]('color')[_0x167d('0x4c')](_0x167d('0x4d'));var _0x16c1a6=squel[_0x167d('0x4e')]()[_0x167d('0x4b')](_0x167d('0x4f'))[_0x167d('0x4b')]('u.fullname')[_0x167d('0x4b')](_0x167d('0x50'))[_0x167d('0x4c')](_0x167d('0x51'),'ui')['left_join'](_0x167d('0x52'),'u',_0x167d('0x53'));var _0x2aaaff=squel[_0x167d('0x4e')]()[_0x167d('0x4c')](_0x167d('0x54'),'i')[_0x167d('0x55')](_0x167d('0x56'),'c',_0x167d('0x57'))[_0x167d('0x55')](_0x167d('0x52'),'o',_0x167d('0x58'))[_0x167d('0x55')](_0x167d('0x59'),'a',_0x167d('0x5a'))[_0x167d('0x55')](_0x167d('0x5b'),'me','me.WhatsappInteractionId\x20=\x20i.id')[_0x167d('0x55')](_0x167d('0x5c'),'it','it.WhatsappInteractionId\x20=\x20i.id')[_0x167d('0x55')](_0x167d('0x4d'),'t',_0x167d('0x5d'));var _0x410434=squel[_0x167d('0x5e')]();var _0x24792f=[];var _0x1ba780=squel['expr']();var _0x1d3505;if(_0x382d3e[_0x167d('0x40')][_0x167d('0x5f')]){_0x1d3505=as[_0x167d('0x60')](_0x382d3e[_0x167d('0x40')]['search']);var _0x3d16ff=_0x1d3505[_0x167d('0x61')];for(var _0x50024f=0x0;_0x50024f<_0x1d3505[_0x167d('0x62')][_0x167d('0x45')];_0x50024f++){var _0x38ddef=_0x1d3505[_0x167d('0x62')][_0x50024f];var _0x30213f='i';var _0x29a16b=_[_0x167d('0x63')](_0x5413e2,[_0x167d('0x2b'),_0x38ddef[_0x167d('0x4b')]]);if(!_0x29a16b){switch(_0x38ddef['field']){case _0x167d('0x64'):if(_0x38ddef['value']==0x1){_0x2aaaff[_0x167d('0x65')]('`'+_0x38ddef[_0x167d('0x4b')]+'`\x20=\x200');}else{_0x2aaaff['having']('`'+_0x38ddef[_0x167d('0x4b')]+_0x167d('0x66'));}break;case'Contact':if(_0x38ddef[_0x167d('0x67')]==='$substring'){if(_0x38ddef[_0x167d('0x68')][_0x167d('0x2f')]('\x20')[_0x167d('0x45')]>0x1){_0x410434[_0x3d16ff](_0x167d('0x69'),qs[_0x167d('0x6a')](_0x38ddef[_0x167d('0x68')]),null);}else{var _0x508d25='%'+_0x38ddef[_0x167d('0x68')]+'%';_0x410434[_0x3d16ff](_0x167d('0x6b'),_0x508d25,_0x508d25,_0x508d25);}}else{_0x29a16b=_[_0x167d('0x63')](_0x5413e2,[_0x167d('0x2b'),_0x167d('0x6c')]);_0x38ddef['field']='ContactId';_0x11784d=as[_0x167d('0x6d')](_0x30213f,_0x29a16b[_0x167d('0x3e')],_0x38ddef);_0x410434[_0x3d16ff](_0x11784d[_0x167d('0x6e')],_0x11784d[_0x167d('0x68')][_0x167d('0x6f')],_0x11784d[_0x167d('0x68')]['end']);}break;case _0x167d('0x70'):var _0x2cec70=_0x38ddef[_0x167d('0x68')][_0x167d('0x2f')](',')[_0x167d('0x2e')](function(_0x159179){return Number(_0x159179);});_0x2cec70[_0x167d('0x30')](function(_0x575730){_0x1ba780['or'](_0x167d('0x71'),'%,'+_0x575730+',%');});_0x24792f=_[_0x167d('0x72')](_0x24792f,_0x2cec70);break;case _0x167d('0x73'):if(_0x38ddef[_0x167d('0x67')]==='$substring'){_0x410434[_0x3d16ff](_0x167d('0x74'),'%'+_0x38ddef[_0x167d('0x68')]+'%',null);}else{_0x29a16b=_['find'](_0x5413e2,[_0x167d('0x2b'),_0x167d('0x38')]);_0x38ddef[_0x167d('0x4b')]=_0x167d('0x38');_0x11784d=as[_0x167d('0x6d')](_0x30213f,_0x29a16b['type'],_0x38ddef);_0x410434[_0x3d16ff](_0x11784d[_0x167d('0x6e')],_0x11784d['value'][_0x167d('0x6f')],_0x11784d[_0x167d('0x68')][_0x167d('0x29')]);}break;case'body':_0x11784d=as[_0x167d('0x6d')]('me',null,_0x38ddef);_0x410434[_0x3d16ff](_0x11784d[_0x167d('0x6e')],_0x11784d[_0x167d('0x68')][_0x167d('0x6f')],_0x11784d[_0x167d('0x68')][_0x167d('0x29')]);break;}}else{var _0x11784d=as[_0x167d('0x6d')](_0x30213f,_0x29a16b[_0x167d('0x3e')],_0x38ddef);_0x410434[_0x3d16ff](_0x11784d[_0x167d('0x6e')],_0x11784d['value']['start'],_0x11784d[_0x167d('0x68')][_0x167d('0x29')]);}}}else{var _0x1b280b=_(_0x382d3e[_0x167d('0x40')])[_0x167d('0x75')]()[_0x167d('0x2e')](function(_0x37b3c8){return _[_0x167d('0x76')](_0x5413e2,[_0x167d('0x2b'),_0x37b3c8])?_0x37b3c8:undefined;})[_0x167d('0x77')]()['value']();if(!_['isEmpty'](_0x1b280b)){_0x1b280b[_0x167d('0x30')](function(_0x3aac77){if(_0x3aac77===_0x167d('0x78')){_0x2aaaff['where'](_0x167d('0x79'),[][_0x167d('0x7a')](_0x382d3e['query'][_0x3aac77]));}else if(_0x3aac77==='createdAt'){var _0x44a916=JSON[_0x167d('0x7b')](_0x382d3e[_0x167d('0x40')][_0x3aac77])['$gte'];var _0x53cead=JSON[_0x167d('0x7b')](_0x382d3e[_0x167d('0x40')][_0x3aac77])[_0x167d('0x7c')];_0x2aaaff[_0x167d('0x7d')](_0x167d('0x7e'),_0x44a916,_0x53cead);}else{if(_0x382d3e[_0x167d('0x40')][_0x3aac77]===_0x167d('0x7f')){_0x2aaaff[_0x167d('0x7d')]('i.'+_0x3aac77+_0x167d('0x80'));}else{_0x2aaaff['where']('i.'+_0x3aac77+'\x20=\x20?',_0x382d3e[_0x167d('0x40')][_0x3aac77]);}}});}if(_0x382d3e[_0x167d('0x40')][_0x167d('0x81')]){if(_0x382d3e[_0x167d('0x40')][_0x167d('0x81')]==0x1){_0x2aaaff[_0x167d('0x65')](_0x167d('0x82'));}else{_0x2aaaff[_0x167d('0x65')](_0x167d('0x83'));}}if(_0x382d3e[_0x167d('0x40')][_0x167d('0x84')]){_0x24792f=_[_0x167d('0x85')](_0x382d3e['query'][_0x167d('0x84')])?_0x382d3e[_0x167d('0x40')][_0x167d('0x84')]:new Array(_0x382d3e[_0x167d('0x40')][_0x167d('0x84')]);_0x24792f[_0x167d('0x30')](function(_0x3bf0b0){_0x1ba780['or'](_0x167d('0x71'),'%,'+_0x3bf0b0+',%');});}if(_0x382d3e['query']['filter']){var _0x83ddb5=_0x382d3e[_0x167d('0x40')][_0x167d('0x86')][_0x167d('0x87')]('\x5c','\x5c\x5c')[_0x167d('0x87')](/'/g,'\x27\x27');if(qs[_0x167d('0x88')](_0x83ddb5)){_0x410434['or'](_0x167d('0x89'),_0x83ddb5+'%')['or'](_0x167d('0x8a'),_0x83ddb5+'%');}else{_0x410434['or'](_0x167d('0x8b'),qs[_0x167d('0x6a')](_0x83ddb5))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x83ddb5+'%');}}}_0x2aaaff[_0x167d('0x7d')](_0x410434);_0x2aaaff['group'](_0x167d('0x8c'));var _0x4957f5={'type':db[_0x167d('0x8d')][_0x167d('0x8e')]['SELECT'],'raw':!![]};var _0x4c30df=_0x2aaaff[_0x167d('0x8f')]();_0x4c30df[_0x167d('0x4b')]('i.id');_0x4c30df['field'](_0x167d('0x90'),_0x167d('0x64'));if(_0x1048d3[_0x167d('0x47')]){_0x1048d3[_0x167d('0x47')][_0x167d('0x30')](function(_0x29ee3c){var _0x6eb414=_0x29ee3c[0x0]===_0x167d('0x91')?_0x29ee3c[0x0]:'i.'+_0x29ee3c[0x0];_0x2aaaff['order'](_0x6eb414,_0x29ee3c[0x1]===_0x167d('0x92')?![]:!![]);});}if(!_[_0x167d('0x93')](_0x24792f)){_0x2aaaff[_0x167d('0x65')](_0x1ba780);_0x4c30df['where'](_0x167d('0x94'),_0x24792f);}BPromise['resolve']()['then'](function(){if(!_0x1d3505){if(_0x382d3e[_0x167d('0x40')][_0x167d('0x78')])return;_0x4c30df[_0x167d('0x7d')](_0x167d('0x95'));_0x2aaaff[_0x167d('0x7d')](_0x167d('0x95'));return;}if(_0x382d3e[_0x167d('0x96')]['role']!==_0x167d('0x97'))return;return _0x382d3e['user']['getWhatsappAccounts']({'attributes':['id'],'raw':!![]})[_0x167d('0x28')](function(_0xbca89d){if(_[_0x167d('0x93')](_0xbca89d)){_0x4c30df[_0x167d('0x7d')](_0x167d('0x98'));_0x2aaaff[_0x167d('0x7d')](_0x167d('0x98'));}else{_0x4c30df['where'](_0x167d('0x79'),_['map'](_0xbca89d,'id'));_0x2aaaff[_0x167d('0x7d')](_0x167d('0x79'),_[_0x167d('0x2e')](_0xbca89d,'id'));}});})[_0x167d('0x28')](function(){if(_0x382d3e[_0x167d('0x96')][_0x167d('0x99')]==='agent'&&!_0x1d3505&&!_0x382d3e[_0x167d('0x40')]['WhatsappAccountId'])return[];return db[_0x167d('0x9a')][_0x167d('0x40')](_0x4c30df[_0x167d('0x9b')](),_0x4957f5);})[_0x167d('0x28')](function(_0xd25798){_0x13bf56[_0x167d('0x23')]=_0xd25798[_0x167d('0x45')];if(_0x13bf56['count']===0x0)return[];return db[_0x167d('0x9a')][_0x167d('0x40')](_0x1375fb[_0x167d('0x9b')](),_0x4957f5)[_0x167d('0x28')](function(_0x4881cb){_0x1ab900=_[_0x167d('0x9c')](_0x4881cb,'id');_0x4957f5=_[_0x167d('0x9d')](_0x4957f5,{'model':db['WhatsappInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x382d3e['query'][_0x167d('0x44')]){_0x1048d3['attributes']['forEach'](function(_0x391903){_0x2aaaff['field']('i.'+_0x391903);});}else{_0x2aaaff[_0x167d('0x4b')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x167d('0x64'));_0x2aaaff[_0x167d('0x4b')]('a.key',_0x167d('0x9e'));_0x2aaaff[_0x167d('0x4b')](_0x167d('0x9f'),_0x167d('0xa0'));_0x2aaaff[_0x167d('0x4b')](_0x167d('0xa1'),_0x167d('0x91'));_0x2aaaff[_0x167d('0x4b')]('i.*');_0x2aaaff[_0x167d('0x4b')]('c.firstName',_0x167d('0xa2'));_0x2aaaff[_0x167d('0x4b')]('c.lastName',_0x167d('0xa3'));_0x2aaaff[_0x167d('0x4b')](_0x167d('0xa4'),'Contact.email');_0x2aaaff['field']('c.phone',_0x167d('0xa5'));_0x2aaaff[_0x167d('0x4b')](_0x167d('0xa6'),_0x167d('0xa7'));_0x2aaaff['field'](_0x167d('0xa8'),_0x167d('0xa9'));_0x2aaaff[_0x167d('0x4b')]('o.fullname',_0x167d('0xaa'));_0x2aaaff[_0x167d('0x4b')]('o.internal','Owner.internal');_0x2aaaff['field'](_0x167d('0xab'),'TagIds');}if(_0x1048d3[_0x167d('0x24')])_0x2aaaff['limit'](_0x1048d3[_0x167d('0x24')]);if(_0x1048d3[_0x167d('0x21')])_0x2aaaff[_0x167d('0x21')](_0x1048d3[_0x167d('0x21')]);return db[_0x167d('0x9a')][_0x167d('0x40')](_0x2aaaff[_0x167d('0x9b')](),_0x4957f5);})[_0x167d('0x28')](function(_0x33822b){if(_0x33822b[_0x167d('0x45')]>0x0)_0x16c1a6[_0x167d('0x7d')](_0x167d('0xac'),_[_0x167d('0x2e')](_0x33822b,'id'));return db[_0x167d('0x9a')][_0x167d('0x40')](_0x16c1a6[_0x167d('0x9b')](),_0x4957f5)['then'](function(_0x1b68c2){var _0x480068=_[_0x167d('0xad')](_0x1b68c2,'WhatsappInteractionId');var _0x4ec599=[];_0x33822b['forEach'](function(_0x110f26){_0x4ec599[_0x167d('0xae')](updateWhatsappInteraction(_0x110f26,_0x1ab900,_0x480068));});return BPromise[_0x167d('0xaf')](_0x4ec599);});});})[_0x167d('0x28')](function(_0x1e417c){_0x13bf56['rows']=_0x1e417c;return _0x13bf56;})['then'](respondWithFilteredResult(_0x38cf66,_0x1048d3))[_0x167d('0x33')](handleError(_0x38cf66,null));};exports[_0x167d('0xb0')]=function(_0x315193,_0x7d9be2){var _0x287622={'raw':![],'where':{'id':_0x315193[_0x167d('0xb1')]['id']}},_0x31a8b3={};_0x31a8b3[_0x167d('0x42')]=_[_0x167d('0x75')](db[_0x167d('0x3c')][_0x167d('0x3d')]);_0x31a8b3[_0x167d('0x40')]=_[_0x167d('0x75')](_0x315193[_0x167d('0x40')]);_0x31a8b3['filters']=_[_0x167d('0x41')](_0x31a8b3['model'],_0x31a8b3['query']);_0x287622[_0x167d('0x43')]=_[_0x167d('0x41')](_0x31a8b3[_0x167d('0x42')],qs[_0x167d('0x44')](_0x315193['query'][_0x167d('0x44')]));_0x287622[_0x167d('0x43')]=_0x287622[_0x167d('0x43')]['length']?_0x287622[_0x167d('0x43')]:_0x31a8b3[_0x167d('0x42')];if(_0x315193[_0x167d('0x40')][_0x167d('0xb2')]){_0x287622['include']=[{'all':!![]}];}_0x287622=_['merge']({},_0x287622,_0x315193[_0x167d('0xb3')]);return db[_0x167d('0x3c')][_0x167d('0x63')](_0x287622)[_0x167d('0x28')](handleEntityNotFound(_0x7d9be2,null))[_0x167d('0x28')](respondWithResult(_0x7d9be2,null))[_0x167d('0x33')](handleError(_0x7d9be2,null));};exports[_0x167d('0xb4')]=function(_0x20c439,_0x1bedcc){return db[_0x167d('0x3c')][_0x167d('0xb4')](_0x20c439[_0x167d('0xb5')],{})[_0x167d('0x28')](respondWithResult(_0x1bedcc,0xc9))[_0x167d('0x33')](handleError(_0x1bedcc,null));};exports['update']=function(_0x7b484e,_0x1ec658){if(_0x7b484e[_0x167d('0xb5')]['id']){delete _0x7b484e['body']['id'];}return db[_0x167d('0x3c')][_0x167d('0x63')]({'where':{'id':_0x7b484e['params']['id']}})[_0x167d('0x28')](handleEntityNotFound(_0x1ec658,null))['then'](saveUpdates(_0x7b484e[_0x167d('0xb5')],null))[_0x167d('0x28')](respondWithResult(_0x1ec658,null))['catch'](handleError(_0x1ec658,null));};exports[_0x167d('0xb6')]=function(_0x261d99,_0x350588){return db[_0x167d('0x3c')]['find']({'where':{'id':_0x261d99['params']['id']}})[_0x167d('0x28')](handleEntityNotFound(_0x350588,null))[_0x167d('0x28')](removeEntity(_0x350588,null))['catch'](handleError(_0x350588,null));};exports[_0x167d('0xb7')]=function(_0x3f76a7,_0x57868f){return db[_0x167d('0x3c')][_0x167d('0xb7')]()[_0x167d('0x28')](respondWithResult(_0x57868f,null))[_0x167d('0x33')](handleError(_0x57868f,null));};exports[_0x167d('0xb8')]=function(_0x217fa3,_0x3391a3,_0x428e6b){return db[_0x167d('0xb9')][_0x167d('0x63')]({'where':{'id':_0x217fa3[_0x167d('0xb1')]['id']}})[_0x167d('0x28')](handleEntityNotFound(_0x3391a3,null))[_0x167d('0x28')](function(_0x333dcf){if(_0x333dcf){return _0x333dcf[_0x167d('0xb8')](_0x217fa3[_0x167d('0xb5')][_0x167d('0xba')],_[_0x167d('0xbb')](_0x217fa3[_0x167d('0xb5')],['ids','id'])||{});}})[_0x167d('0x28')](respondWithResult(_0x3391a3,null))[_0x167d('0x33')](handleError(_0x3391a3,null));};exports['getMessages']=function(_0x13a457,_0x254df1,_0x211149){var _0x37b282={'raw':![],'where':{}};var _0x522bd9={};var _0x1e3513={'count':0x0,'rows':[]};return db[_0x167d('0x3c')]['findOne']({'where':{'id':_0x13a457['params']['id']}})[_0x167d('0x28')](handleEntityNotFound(_0x254df1,null))[_0x167d('0x28')](function(_0x584afa){if(_0x584afa){_0x522bd9[_0x167d('0x42')]=_[_0x167d('0x75')](db[_0x167d('0xb9')]['rawAttributes']);_0x522bd9[_0x167d('0x40')]=_[_0x167d('0x75')](_0x13a457[_0x167d('0x40')]);_0x522bd9[_0x167d('0x49')]=_[_0x167d('0x41')](_0x522bd9[_0x167d('0x42')],_0x522bd9['query']);_0x37b282[_0x167d('0x43')]=_[_0x167d('0x41')](_0x522bd9[_0x167d('0x42')],qs[_0x167d('0x44')](_0x13a457['query'][_0x167d('0x44')]));_0x37b282[_0x167d('0x43')]=_0x37b282['attributes'][_0x167d('0x45')]?_0x37b282[_0x167d('0x43')]:_0x522bd9[_0x167d('0x42')];if(!_0x13a457[_0x167d('0x40')]['hasOwnProperty'](_0x167d('0x46'))){_0x37b282['limit']=qs[_0x167d('0x24')](_0x13a457[_0x167d('0x40')]['limit']);_0x37b282['offset']=qs['offset'](_0x13a457['query']['offset']);}_0x37b282[_0x167d('0x47')]=qs[_0x167d('0x48')](_0x13a457['query'][_0x167d('0x48')]);_0x37b282[_0x167d('0x7d')]=qs[_0x167d('0x49')](_[_0x167d('0x4a')](_0x13a457['query'],_0x522bd9[_0x167d('0x49')]));_0x37b282[_0x167d('0x7d')]['WhatsappInteractionId']=_0x584afa['id'];if(_0x13a457[_0x167d('0x40')][_0x167d('0x86')]){_0x37b282[_0x167d('0x7d')]=_[_0x167d('0x9d')](_0x37b282[_0x167d('0x7d')],{'$or':_[_0x167d('0x2e')](_0x37b282[_0x167d('0x43')],function(_0x3289d0){var _0x5f46e0={};_0x5f46e0[_0x3289d0]={'$like':'%'+_0x13a457[_0x167d('0x40')][_0x167d('0x86')]+'%'};return _0x5f46e0;})});}if(_0x13a457[_0x167d('0x40')][_0x167d('0xbc')]){var _0x35a4ec=_0x13a457[_0x167d('0x40')]['$gte'][_0x167d('0x2f')](',');var _0x37dadd={};_0x37dadd[_0x35a4ec[0x0]]={'$gte':moment(_0x35a4ec[0x1])[_0x167d('0xbd')](_0x167d('0xbe'))};_0x37b282[_0x167d('0x7d')]=_[_0x167d('0x9d')](_0x37b282[_0x167d('0x7d')],_0x37dadd);}_0x37b282=_['merge']({},_0x37b282,_0x13a457[_0x167d('0xb3')]);return db[_0x167d('0xb9')][_0x167d('0x23')]({'where':_0x37b282[_0x167d('0x7d')]})[_0x167d('0x28')](function(_0x2f26b0){_0x1e3513['count']=_0x2f26b0;if(_0x13a457[_0x167d('0x40')][_0x167d('0xb2')]){_0x37b282[_0x167d('0xbf')]=[{'all':!![]}];}return db['WhatsappMessage'][_0x167d('0xc0')](_0x37b282);})[_0x167d('0x28')](function(_0x13bfae){_0x1e3513[_0x167d('0xc1')]=_0x13bfae;return _0x1e3513;});}})['then'](respondWithFilteredResult(_0x254df1,_0x37b282))['catch'](handleError(_0x254df1,null));};exports[_0x167d('0xc2')]=function(_0x387878,_0x4eccbc,_0x2ee0c7){return db['WhatsappInteraction'][_0x167d('0x63')]({'where':{'id':_0x387878[_0x167d('0xb1')]['id']}})[_0x167d('0x28')](handleEntityNotFound(_0x4eccbc,null))['then'](function(_0x58a7cd){if(_0x58a7cd){return _0x58a7cd['setTags'](_0x387878[_0x167d('0xb5')][_0x167d('0xba')],_[_0x167d('0xbb')](_0x387878['body'],[_0x167d('0xba'),'id'])||{})[_0x167d('0xc3')](function(){return db['Tag'][_0x167d('0xc0')]({'attributes':['id','name','color'],'where':{'id':_0x387878[_0x167d('0xb5')][_0x167d('0xba')]}});})[_0x167d('0x28')](function(_0x5d5ee3){socket['emit'](_0x167d('0xc4'),{'id':Number(_0x387878[_0x167d('0xb1')]['id']),'tags':_0x5d5ee3||[]});return{'id':Number(_0x387878[_0x167d('0xb1')]['id']),'tags':_0x5d5ee3||[]};});}})[_0x167d('0x28')](respondWithResult(_0x4eccbc,null))[_0x167d('0x33')](handleError(_0x4eccbc,null));};exports[_0x167d('0xc5')]=function(_0x1c3f52,_0x3518ca,_0x1e515e){return db[_0x167d('0x3c')]['find']({'where':{'id':_0x1c3f52[_0x167d('0xb1')]['id']}})['then'](handleEntityNotFound(_0x3518ca,null))[_0x167d('0x28')](function(_0x1c5fdc){if(_0x1c5fdc){return _0x1c5fdc[_0x167d('0xc5')](_0x1c3f52['query'][_0x167d('0xba')]);}})[_0x167d('0x28')](respondWithStatusCode(_0x3518ca,null))[_0x167d('0x33')](handleError(_0x3518ca,null));};exports[_0x167d('0xc6')]=function(_0x18d274,_0xb84580){var _0xdf12c2=moment()[_0x167d('0xc7')]()[_0x167d('0x9b')]();var _0x268afa=path['join'](config[_0x167d('0xc8')],_0x167d('0xc9'),_0x167d('0xca'),_0x167d('0xcb'));var _0x42224f=path[_0x167d('0xcc')](config[_0x167d('0xc8')],'server',_0x167d('0xca'),_0x167d('0xcd'));var _0x3eb0b5=path[_0x167d('0xcc')](_0x268afa,_0xdf12c2);var _0x23de4f=util[_0x167d('0xbd')](_0x167d('0xce'),_0x18d274['params']['id'],_0xdf12c2);var _0x2f74fd=path[_0x167d('0xcc')](_0x268afa,_0x23de4f);var _0x4c03cb=[];_0x4c03cb[_0x167d('0xae')]({'model':db[_0x167d('0x73')],'as':_0x167d('0x73'),'attributes':['id',_0x167d('0xcf')],'raw':!![]});_0x4c03cb['push']({'model':db[_0x167d('0xd0')],'as':_0x167d('0xd1'),'attributes':['id',_0x167d('0xd2'),_0x167d('0xd3')],'raw':!![]});if(_0x18d274['query'][_0x167d('0xcd')]){_0x4c03cb['push']({'model':db[_0x167d('0xd4')],'as':_0x167d('0xd4'),'raw':!![]});}var _0x2a8ef4=[{'model':db[_0x167d('0xb9')],'as':_0x167d('0xd5'),'attributes':['id','body',_0x167d('0xd6'),_0x167d('0xd7'),_0x167d('0xd8'),_0x167d('0x81')],'include':_0x4c03cb}];_0x2a8ef4[_0x167d('0xae')]({'model':db[_0x167d('0xd9')],'as':'Account','attributes':['id',_0x167d('0x2b')]});_0x2a8ef4[_0x167d('0xae')]({'model':db['User'],'as':_0x167d('0xda'),'attributes':['id','fullname']});return db[_0x167d('0x3c')][_0x167d('0x63')]({'where':{'id':_0x18d274[_0x167d('0xb1')]['id']},'include':_0x2a8ef4})['then'](handleEntityNotFound(_0xb84580,null))[_0x167d('0x28')](function(_0x312ff6){if(_0x312ff6){var _0x57c074=_0x312ff6[_0x167d('0xdb')]({'plain':!![]});fs[_0x167d('0xdc')](_0x3eb0b5);var _0x594c4f={'channel':_0x167d('0xdd'),'account':_0x57c074[_0x167d('0xde')][_0x167d('0x2b')],'agent':_0x57c074[_0x167d('0xda')]?_0x57c074[_0x167d('0xda')][_0x167d('0xcf')]:'N.A.','createdAt':moment(_0x57c074[_0x167d('0xd6')])[_0x167d('0xbd')]('YYYY-MM-DD\x20HH:mm:ss')[_0x167d('0x9b')](),'closedAt':_0x57c074['closed']?moment(_0x57c074[_0x167d('0xdf')])['format'](_0x167d('0xbe'))[_0x167d('0x9b')]():'','disposition':_0x57c074[_0x167d('0xe0')],'messages':_(_0x57c074[_0x167d('0xd5')])[_0x167d('0x86')]({'secret':![]})[_0x167d('0x2e')](function(_0x23d18f){if(_0x23d18f['Attachment']){var _0x4aabce=path[_0x167d('0xcc')](_0x42224f,_0x23d18f[_0x167d('0xd4')][_0x167d('0xe1')]);if(fs[_0x167d('0xe2')](_0x4aabce)){fs[_0x167d('0xe3')](_0x4aabce)[_0x167d('0xe4')](fs[_0x167d('0xe5')](path['join'](_0x3eb0b5,_0x23d18f['Attachment'][_0x167d('0xe1')])));}}return{'date':moment(_0x23d18f[_0x167d('0xd6')])[_0x167d('0xbd')](_0x167d('0xbe'))[_0x167d('0x9b')](),'sender':_0x23d18f[_0x167d('0xd7')]===_0x167d('0xe6')?_0x23d18f[_0x167d('0x73')]?_0x23d18f[_0x167d('0x73')]['fullname']:_0x167d('0xe7'):_0x23d18f['Contact']['firstName']+(_0x23d18f[_0x167d('0xd1')][_0x167d('0xd3')]?'\x20'+_0x23d18f[_0x167d('0xd1')][_0x167d('0xd3')]:''),'body':_0x23d18f[_0x167d('0xd4')]?_0x23d18f['Attachment'][_0x167d('0xe1')]:_0x23d18f[_0x167d('0xb5')],'direction':_0x23d18f[_0x167d('0xd7')]===_0x167d('0xe6')?'A':'C','secret':_0x23d18f[_0x167d('0xd8')],'read':_0x23d18f[_0x167d('0x81')],'attachment':_0x23d18f[_0x167d('0xd4')]};})[_0x167d('0x68')]()};return ejs['renderFile'](path[_0x167d('0xcc')](config[_0x167d('0xc8')],_0x167d('0xc9'),_0x167d('0xe8'),_0x167d('0xe9')),{'interaction':_0x594c4f})[_0x167d('0x28')](function(_0x11097f){var _0x5a7db7=path[_0x167d('0xcc')](_0x3eb0b5,'transcript-'+_0x57c074['id']+'-'+_0xdf12c2+_0x167d('0xea'));var _0x129cb1={'path':_0x5a7db7,'channel':_0x167d('0xdd'),'interactionId':_0x57c074['id']};return pdf[_0x167d('0xeb')](_0x11097f,_0x129cb1);})['then'](function(){return new BPromise(function(_0x2be31,_0x3905c3){zipdir(_0x3eb0b5,{'saveTo':_0x2f74fd},function(_0xcb47b2,_0x16ae8c){if(_0xcb47b2)return _0x3905c3(_0xcb47b2);return _0x2be31(_0x16ae8c);});})[_0x167d('0x28')](function(){return new BPromise(function(_0x5874c6,_0x4d0e10){rimraf(_0x3eb0b5,function(_0x58a402){if(_0x58a402)_0x4d0e10(_0x58a402);return _0x5874c6();});});})[_0x167d('0x28')](function(){return _0xb84580[_0x167d('0xc6')](_0x2f74fd,_0x23de4f,function(_0x2b0447){if(_0x2b0447){console[_0x167d('0xec')](_0x167d('0xed'),_0x2b0447);}else{fs[_0x167d('0xee')](_0x2f74fd);}});});});}else{return _0xb84580[_0x167d('0x1e')](0xc8);}})[_0x167d('0x33')](handleError(_0xb84580,null));};
\ No newline at end of file
+var _0xb7de=['save','update','then','destroy','end','stack','name','send','Users','map','fullname','TagIds','Tags','split','forEach','push','catch','waiting','talking','answered','unmanaged','total','UserId','closed','WhatsappInteraction','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','select','field','from','u.id','u.fullname','ui.WhatsappInteractionId','user_has_whatsapp_interactions','users','u.id\x20=\x20ui.UserId','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','left_join','o.id\x20=\x20i.UserId','a.id\x20=\x20i.WhatsappAccountId','whatsapp_messages','me.WhatsappInteractionId\x20=\x20i.id','whatsapp_interaction_has_tags','tools_tags','t.id\x20=\x20it.TagId','expr','search','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','operator','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','$substring','body','some','compact','isEmpty','i.WhatsappAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','filter','replace','i.phone\x20LIKE\x20?','getFullTextValue','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','WhatsappAccountId','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','role','agent','user','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','sequelize','toString','merge','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','Contact.email','c.phone','c.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.WhatsappInteractionId\x20IN\x20?','all','rows','show','params','rawAttributes','includeAll','describe','addMessage','WhatsappMessage','ids','omit','nolimit','WhatsappInteractionId','format','options','include','addTags','spread','findAll','color','removeTags','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','User','CmContact','Contact','firstName','lastName','Attachment','Messages','direction','secret','WhatsappAccount','Owner','mkdirSync','Whatsapp','Account','YYYY-MM-DD\x20HH:mm:ss','closedAt','basename','createReadStream','pipe','createWriteStream','System','out','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','download','log','err','unlinkSync','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappInteraction.socket','sendStatus','status','offset','undefined','limit','count','Content-Range','json','apply','reject'];(function(_0x249a19,_0x477ba4){var _0x3c5fae=function(_0x3f3d29){while(--_0x3f3d29){_0x249a19['push'](_0x249a19['shift']());}};_0x3c5fae(++_0x477ba4);}(_0xb7de,0xc7));var _0xeb7d=function(_0x1d9aa0,_0x272488){_0x1d9aa0=_0x1d9aa0-0x0;var _0x226868=_0xb7de[_0x1d9aa0];return _0x226868;};'use strict';var emlformat=require(_0xeb7d('0x0'));var rimraf=require(_0xeb7d('0x1'));var zipdir=require(_0xeb7d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xeb7d('0x3'));var moment=require(_0xeb7d('0x4'));var BPromise=require(_0xeb7d('0x5'));var Mustache=require(_0xeb7d('0x6'));var util=require(_0xeb7d('0x7'));var path=require('path');var sox=require(_0xeb7d('0x8'));var csv=require(_0xeb7d('0x9'));var ejs=require(_0xeb7d('0xa'));var fs=require('fs');var fs_extra=require(_0xeb7d('0xb'));var _=require(_0xeb7d('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xeb7d('0xd'));var deskjs=require(_0xeb7d('0xe'));var toCsv=require(_0xeb7d('0x9'));var querystring=require(_0xeb7d('0xf'));var Papa=require('papaparse');var Redis=require(_0xeb7d('0x10'));var authService=require(_0xeb7d('0x11'));var qs=require(_0xeb7d('0x12'));var as=require('../../components/parsers/advancedSearch');var pdf=require('../../components/export/pdf');var hardwareService=require(_0xeb7d('0x13'));var logger=require('../../config/logger')(_0xeb7d('0x14'));var utils=require(_0xeb7d('0x15'));var config=require(_0xeb7d('0x16'));var licenseUtil=require(_0xeb7d('0x17'));var db=require(_0xeb7d('0x18'))['db'];config[_0xeb7d('0x19')]=_['defaults'](config[_0xeb7d('0x19')],{'host':_0xeb7d('0x1a'),'port':0x18eb});var socket=require(_0xeb7d('0x1b'))(new Redis(config[_0xeb7d('0x19')]));require(_0xeb7d('0x1c'))['register'](socket);function respondWithStatusCode(_0xdc94e7,_0x598da2){_0x598da2=_0x598da2||0xcc;return function(_0x284575){if(_0x284575){return _0xdc94e7[_0xeb7d('0x1d')](_0x598da2);}return _0xdc94e7[_0xeb7d('0x1e')](_0x598da2)['end']();};}function respondWithResult(_0x59d9fc,_0x1eaa20){_0x1eaa20=_0x1eaa20||0xc8;return function(_0xfcbbce){if(_0xfcbbce){return _0x59d9fc['status'](_0x1eaa20)['json'](_0xfcbbce);}};}function respondWithFilteredResult(_0x242a8d,_0x298c8d){return function(_0x598025){if(_0x598025){var _0x1bfa8a=typeof _0x298c8d[_0xeb7d('0x1f')]===_0xeb7d('0x20')&&typeof _0x298c8d[_0xeb7d('0x21')]===_0xeb7d('0x20');var _0x233a86=_0x598025[_0xeb7d('0x22')];var _0x38d591=_0x1bfa8a?0x0:_0x298c8d[_0xeb7d('0x1f')];var _0x52324c=_0x1bfa8a?_0x598025[_0xeb7d('0x22')]:_0x298c8d['offset']+_0x298c8d[_0xeb7d('0x21')];var _0x429577;if(_0x52324c>=_0x233a86){_0x52324c=_0x233a86;_0x429577=0xc8;}else{_0x429577=0xce;}_0x242a8d[_0xeb7d('0x1e')](_0x429577);return _0x242a8d['set'](_0xeb7d('0x23'),_0x38d591+'-'+_0x52324c+'/'+_0x233a86)[_0xeb7d('0x24')](_0x598025);}return null;};}function patchUpdates(_0x505403){return function(_0x7c86aa){try{jsonpatch[_0xeb7d('0x25')](_0x7c86aa,_0x505403,!![]);}catch(_0x431dc0){return BPromise[_0xeb7d('0x26')](_0x431dc0);}return _0x7c86aa[_0xeb7d('0x27')]();};}function saveUpdates(_0x374fce,_0x39a4f3){return function(_0x4833b6){if(_0x4833b6){return _0x4833b6[_0xeb7d('0x28')](_0x374fce)[_0xeb7d('0x29')](function(_0x1331ca){return _0x1331ca;});}return null;};}function removeEntity(_0x10f02c,_0x3e695b){return function(_0x3bf975){if(_0x3bf975){return _0x3bf975[_0xeb7d('0x2a')]()['then'](function(){_0x10f02c[_0xeb7d('0x1e')](0xcc)[_0xeb7d('0x2b')]();});}};}function handleEntityNotFound(_0x69b982,_0xe0bf4f){return function(_0xe6f93c){if(!_0xe6f93c){_0x69b982[_0xeb7d('0x1d')](0x194);}return _0xe6f93c;};}function handleError(_0x58ba4f,_0x310f25){_0x310f25=_0x310f25||0x1f4;return function(_0x26592c){logger['error'](_0x26592c[_0xeb7d('0x2c')]);if(_0x26592c[_0xeb7d('0x2d')]){delete _0x26592c[_0xeb7d('0x2d')];}_0x58ba4f[_0xeb7d('0x1e')](_0x310f25)[_0xeb7d('0x2e')](_0x26592c);};}function getInteractionUsers(_0xf9aa09,_0x26118c){return new BPromise(function(_0x17dcee,_0x42966f){try{if(_0x26118c[_0xf9aa09['id']]){_0xf9aa09[_0xeb7d('0x2f')]=_[_0xeb7d('0x30')](_0x26118c[_0xf9aa09['id']],function(_0x28942f){return{'id':_0x28942f['id'],'fullname':_0x28942f[_0xeb7d('0x31')]};});}}catch(_0x4cb28d){_0x42966f(_0x4cb28d);}_0x17dcee(_0xf9aa09);});}function getInteractionTags(_0x204564,_0x820d0b){return new BPromise(function(_0x3981f6,_0x2f6ff8){try{if(_0x204564[_0xeb7d('0x32')]){_0x204564[_0xeb7d('0x33')]=[];_0x204564[_0xeb7d('0x32')][_0xeb7d('0x34')](',')[_0xeb7d('0x35')](function(_0x46881c){_0x204564[_0xeb7d('0x33')][_0xeb7d('0x36')](_0x820d0b[_0x46881c]);});}delete _0x204564[_0xeb7d('0x32')];}catch(_0x21528c){_0x2f6ff8(_0x21528c);}_0x3981f6(_0x204564);});}function updateWhatsappInteraction(_0x2ef72d,_0x38af0a,_0x253ab0){return new BPromise(function(_0x4ba8f3,_0x7eaa0e){return getInteractionUsers(_0x2ef72d,_0x253ab0)[_0xeb7d('0x29')](function(_0x1bb67e){return getInteractionTags(_0x1bb67e,_0x38af0a);})[_0xeb7d('0x29')](function(_0x3ce965){return getStateInteraction(_0x3ce965);})['then'](function(_0x244b6c){_0x4ba8f3(_0x244b6c);})[_0xeb7d('0x37')](function(_0x4d5dcc){_0x7eaa0e(_0x4d5dcc);});});}function getStateInteraction(_0x321f28){return new BPromise(function(_0xe3fbfb){_0x321f28[_0xeb7d('0x38')]=0x0;_0x321f28[_0xeb7d('0x39')]=0x0;_0x321f28[_0xeb7d('0x3a')]=0x0;_0x321f28[_0xeb7d('0x3b')]=0x0;_0x321f28[_0xeb7d('0x3c')]=0x0;if(!_0x321f28['closed']&&!_0x321f28[_0xeb7d('0x3d')]){_0x321f28['waiting']+=0x1;}if(!_0x321f28[_0xeb7d('0x3e')]&&_0x321f28[_0xeb7d('0x3d')]){_0x321f28[_0xeb7d('0x39')]+=0x1;if(_0x321f28[_0xeb7d('0x38')]){_0x321f28[_0xeb7d('0x38')]-=0x1;}}if(_0x321f28[_0xeb7d('0x3e')]&&_0x321f28[_0xeb7d('0x3d')]){_0x321f28[_0xeb7d('0x3a')]+=0x1;if(_0x321f28[_0xeb7d('0x39')]){_0x321f28[_0xeb7d('0x39')]-=0x1;}}if(_0x321f28[_0xeb7d('0x3e')]&&!_0x321f28[_0xeb7d('0x3d')]){_0x321f28[_0xeb7d('0x3b')]+=0x1;if(_0x321f28[_0xeb7d('0x38')]){_0x321f28[_0xeb7d('0x38')]-=0x1;}}_0x321f28['total']+=0x1;_0xe3fbfb(_0x321f28);});}exports['index']=function(_0x36f363,_0xc34d11){var _0x8f6395={},_0x1589f6={},_0x15d845={'count':0x0,'rows':[]};var _0x8064fe=_['map'](db[_0xeb7d('0x3f')]['rawAttributes'],function(_0x3d0b3e){return{'name':_0x3d0b3e[_0xeb7d('0x40')],'type':_0x3d0b3e[_0xeb7d('0x41')][_0xeb7d('0x42')]};});_0x1589f6[_0xeb7d('0x43')]=_['map'](_0x8064fe,_0xeb7d('0x2d'));_0x1589f6['query']=_[_0xeb7d('0x44')](_0x36f363[_0xeb7d('0x45')]);_0x1589f6[_0xeb7d('0x46')]=_[_0xeb7d('0x47')](_0x1589f6[_0xeb7d('0x43')],_0x1589f6[_0xeb7d('0x45')]);_0x8f6395[_0xeb7d('0x48')]=_['intersection'](_0x1589f6[_0xeb7d('0x43')],qs[_0xeb7d('0x49')](_0x36f363['query'][_0xeb7d('0x49')]));_0x8f6395['attributes']=_0x8f6395[_0xeb7d('0x48')][_0xeb7d('0x4a')]?_0x8f6395['attributes']:_0x1589f6[_0xeb7d('0x43')];if(!_0x36f363[_0xeb7d('0x45')][_0xeb7d('0x4b')]('nolimit')){_0x8f6395[_0xeb7d('0x21')]=qs[_0xeb7d('0x21')](_0x36f363['query'][_0xeb7d('0x21')]);_0x8f6395[_0xeb7d('0x1f')]=qs[_0xeb7d('0x1f')](_0x36f363[_0xeb7d('0x45')]['offset']);}_0x8f6395[_0xeb7d('0x4c')]=qs[_0xeb7d('0x4d')](_0x36f363[_0xeb7d('0x45')][_0xeb7d('0x4d')]);_0x8f6395[_0xeb7d('0x4e')]=qs['filters'](_[_0xeb7d('0x4f')](_0x36f363[_0xeb7d('0x45')],_0x1589f6['filters']),_0x8064fe);var _0x50433c=[];var _0x490652=squel[_0xeb7d('0x50')]()[_0xeb7d('0x51')]('id')['field'](_0xeb7d('0x2d'))[_0xeb7d('0x51')]('color')[_0xeb7d('0x52')]('tools_tags');var _0x5320a1=squel[_0xeb7d('0x50')]()[_0xeb7d('0x51')](_0xeb7d('0x53'))[_0xeb7d('0x51')](_0xeb7d('0x54'))[_0xeb7d('0x51')](_0xeb7d('0x55'))['from'](_0xeb7d('0x56'),'ui')['left_join'](_0xeb7d('0x57'),'u',_0xeb7d('0x58'));var _0x103e41=squel[_0xeb7d('0x50')]()[_0xeb7d('0x52')]('whatsapp_interactions','i')['left_join'](_0xeb7d('0x59'),'c',_0xeb7d('0x5a'))[_0xeb7d('0x5b')](_0xeb7d('0x57'),'o',_0xeb7d('0x5c'))[_0xeb7d('0x5b')]('whatsapp_accounts','a',_0xeb7d('0x5d'))[_0xeb7d('0x5b')](_0xeb7d('0x5e'),'me',_0xeb7d('0x5f'))['left_join'](_0xeb7d('0x60'),'it','it.WhatsappInteractionId\x20=\x20i.id')[_0xeb7d('0x5b')](_0xeb7d('0x61'),'t',_0xeb7d('0x62'));var _0x33bd88=squel[_0xeb7d('0x63')]();var _0x306c0e=[];var _0x204b73=squel[_0xeb7d('0x63')]();var _0x4a12a6;if(_0x36f363[_0xeb7d('0x45')][_0xeb7d('0x64')]){_0x4a12a6=as['parseSearch'](_0x36f363[_0xeb7d('0x45')]['search']);var _0x1e7847=_0x4a12a6['sqlOperator'];for(var _0x180f3b=0x0;_0x180f3b<_0x4a12a6[_0xeb7d('0x65')][_0xeb7d('0x4a')];_0x180f3b++){var _0x56db36=_0x4a12a6[_0xeb7d('0x65')][_0x180f3b];var _0x352163='i';var _0xad16cc=_[_0xeb7d('0x66')](_0x8064fe,['name',_0x56db36['field']]);if(!_0xad16cc){switch(_0x56db36['field']){case _0xeb7d('0x67'):if(_0x56db36[_0xeb7d('0x68')]==0x1){_0x103e41[_0xeb7d('0x69')]('`'+_0x56db36[_0xeb7d('0x51')]+_0xeb7d('0x6a'));}else{_0x103e41[_0xeb7d('0x69')]('`'+_0x56db36[_0xeb7d('0x51')]+_0xeb7d('0x6b'));}break;case'Contact':if(_0x56db36[_0xeb7d('0x6c')]==='$substring'){if(_0x56db36[_0xeb7d('0x68')]['split']('\x20')['length']>0x1){_0x33bd88[_0x1e7847]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x56db36[_0xeb7d('0x68')]),null);}else{var _0x453a43='%'+_0x56db36[_0xeb7d('0x68')]+'%';_0x33bd88[_0x1e7847](_0xeb7d('0x6d'),_0x453a43,_0x453a43,_0x453a43);}}else{_0xad16cc=_[_0xeb7d('0x66')](_0x8064fe,[_0xeb7d('0x2d'),_0xeb7d('0x6e')]);_0x56db36['field']=_0xeb7d('0x6e');_0x2afceb=as[_0xeb7d('0x6f')](_0x352163,_0xad16cc['type'],_0x56db36);_0x33bd88[_0x1e7847](_0x2afceb[_0xeb7d('0x70')],_0x2afceb[_0xeb7d('0x68')][_0xeb7d('0x71')],_0x2afceb[_0xeb7d('0x68')][_0xeb7d('0x2b')]);}break;case _0xeb7d('0x72'):var _0x4f7eec=_0x56db36[_0xeb7d('0x68')][_0xeb7d('0x34')](',')[_0xeb7d('0x30')](function(_0x3dbeac){return Number(_0x3dbeac);});_0x4f7eec[_0xeb7d('0x35')](function(_0x300a5b){_0x204b73['or'](_0xeb7d('0x73'),'%,'+_0x300a5b+',%');});_0x306c0e=_[_0xeb7d('0x74')](_0x306c0e,_0x4f7eec);break;case'User':if(_0x56db36[_0xeb7d('0x6c')]===_0xeb7d('0x75')){_0x33bd88[_0x1e7847]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x56db36[_0xeb7d('0x68')]+'%',null);}else{_0xad16cc=_[_0xeb7d('0x66')](_0x8064fe,[_0xeb7d('0x2d'),'UserId']);_0x56db36[_0xeb7d('0x51')]=_0xeb7d('0x3d');_0x2afceb=as[_0xeb7d('0x6f')](_0x352163,_0xad16cc[_0xeb7d('0x41')],_0x56db36);_0x33bd88[_0x1e7847](_0x2afceb[_0xeb7d('0x70')],_0x2afceb[_0xeb7d('0x68')][_0xeb7d('0x71')],_0x2afceb[_0xeb7d('0x68')][_0xeb7d('0x2b')]);}break;case _0xeb7d('0x76'):_0x2afceb=as[_0xeb7d('0x6f')]('me',null,_0x56db36);_0x33bd88[_0x1e7847](_0x2afceb['text'],_0x2afceb['value'][_0xeb7d('0x71')],_0x2afceb[_0xeb7d('0x68')]['end']);break;}}else{var _0x2afceb=as[_0xeb7d('0x6f')](_0x352163,_0xad16cc['type'],_0x56db36);_0x33bd88[_0x1e7847](_0x2afceb[_0xeb7d('0x70')],_0x2afceb['value'][_0xeb7d('0x71')],_0x2afceb[_0xeb7d('0x68')]['end']);}}}else{var _0xf5e0ed=_(_0x36f363[_0xeb7d('0x45')])['keys']()[_0xeb7d('0x30')](function(_0x1823a9){return _[_0xeb7d('0x77')](_0x8064fe,[_0xeb7d('0x2d'),_0x1823a9])?_0x1823a9:undefined;})[_0xeb7d('0x78')]()['value']();if(!_[_0xeb7d('0x79')](_0xf5e0ed)){_0xf5e0ed[_0xeb7d('0x35')](function(_0x2d6de9){if(_0x2d6de9==='WhatsappAccountId'){_0x103e41['where'](_0xeb7d('0x7a'),[][_0xeb7d('0x7b')](_0x36f363[_0xeb7d('0x45')][_0x2d6de9]));}else if(_0x2d6de9===_0xeb7d('0x7c')){var _0x4a4f6c=JSON[_0xeb7d('0x7d')](_0x36f363['query'][_0x2d6de9])[_0xeb7d('0x7e')];var _0x44a5e7=JSON[_0xeb7d('0x7d')](_0x36f363[_0xeb7d('0x45')][_0x2d6de9])[_0xeb7d('0x7f')];_0x103e41[_0xeb7d('0x4e')](_0xeb7d('0x80'),_0x4a4f6c,_0x44a5e7);}else{if(_0x36f363[_0xeb7d('0x45')][_0x2d6de9]==='null'){_0x103e41[_0xeb7d('0x4e')]('i.'+_0x2d6de9+'\x20IS\x20NULL');}else{_0x103e41[_0xeb7d('0x4e')]('i.'+_0x2d6de9+'\x20=\x20?',_0x36f363[_0xeb7d('0x45')][_0x2d6de9]);}}});}if(_0x36f363[_0xeb7d('0x45')][_0xeb7d('0x81')]){if(_0x36f363[_0xeb7d('0x45')]['read']==0x1){_0x103e41[_0xeb7d('0x69')](_0xeb7d('0x82'));}else{_0x103e41[_0xeb7d('0x69')](_0xeb7d('0x83'));}}if(_0x36f363[_0xeb7d('0x45')]['tag']){_0x306c0e=_['isArray'](_0x36f363[_0xeb7d('0x45')][_0xeb7d('0x84')])?_0x36f363['query']['tag']:new Array(_0x36f363[_0xeb7d('0x45')][_0xeb7d('0x84')]);_0x306c0e['forEach'](function(_0x224768){_0x204b73['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x224768+',%');});}if(_0x36f363[_0xeb7d('0x45')][_0xeb7d('0x85')]){var _0x41befc=_0x36f363[_0xeb7d('0x45')][_0xeb7d('0x85')][_0xeb7d('0x86')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs['isNumeric'](_0x41befc)){_0x33bd88['or']('i.id\x20LIKE\x20?',_0x41befc+'%')['or'](_0xeb7d('0x87'),_0x41befc+'%');}else{_0x33bd88['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xeb7d('0x88')](_0x41befc))['or'](_0xeb7d('0x89'),_0x41befc+'%');}}}_0x103e41['where'](_0x33bd88);_0x103e41[_0xeb7d('0x8a')](_0xeb7d('0x8b'));var _0x2df018={'type':db[_0xeb7d('0x8c')][_0xeb7d('0x8d')][_0xeb7d('0x8e')],'raw':!![]};var _0x431027=_0x103e41[_0xeb7d('0x8f')]();_0x431027[_0xeb7d('0x51')](_0xeb7d('0x8b'));_0x431027[_0xeb7d('0x51')](_0xeb7d('0x90'),_0xeb7d('0x67'));if(_0x8f6395[_0xeb7d('0x4c')]){_0x8f6395[_0xeb7d('0x4c')][_0xeb7d('0x35')](function(_0x3dc242){var _0xc170d1=_0x3dc242[0x0]===_0xeb7d('0x91')?_0x3dc242[0x0]:'i.'+_0x3dc242[0x0];_0x103e41[_0xeb7d('0x4c')](_0xc170d1,_0x3dc242[0x1]===_0xeb7d('0x92')?![]:!![]);});}if(!_[_0xeb7d('0x79')](_0x306c0e)){_0x103e41[_0xeb7d('0x69')](_0x204b73);_0x431027[_0xeb7d('0x4e')](_0xeb7d('0x93'),_0x306c0e);}BPromise['resolve']()[_0xeb7d('0x29')](function(){if(!_0x4a12a6){if(_0x36f363[_0xeb7d('0x45')][_0xeb7d('0x94')])return;_0x431027[_0xeb7d('0x4e')](_0xeb7d('0x95'));_0x103e41[_0xeb7d('0x4e')](_0xeb7d('0x95'));return;}if(_0x36f363['user'][_0xeb7d('0x96')]!==_0xeb7d('0x97'))return;return _0x36f363[_0xeb7d('0x98')][_0xeb7d('0x99')]({'attributes':['id'],'raw':!![]})[_0xeb7d('0x29')](function(_0x73a1af){if(_[_0xeb7d('0x79')](_0x73a1af)){_0x431027['where'](_0xeb7d('0x9a'));_0x103e41[_0xeb7d('0x4e')]('i.WhatsappAccountId\x20IS\x20NULL');}else{_0x431027['where'](_0xeb7d('0x7a'),_[_0xeb7d('0x30')](_0x73a1af,'id'));_0x103e41[_0xeb7d('0x4e')](_0xeb7d('0x7a'),_['map'](_0x73a1af,'id'));}});})[_0xeb7d('0x29')](function(){if(_0x36f363[_0xeb7d('0x98')][_0xeb7d('0x96')]===_0xeb7d('0x97')&&!_0x4a12a6&&!_0x36f363[_0xeb7d('0x45')][_0xeb7d('0x94')])return[];return db[_0xeb7d('0x9b')][_0xeb7d('0x45')](_0x431027[_0xeb7d('0x9c')](),_0x2df018);})[_0xeb7d('0x29')](function(_0x2d6c00){_0x15d845['count']=_0x2d6c00[_0xeb7d('0x4a')];if(_0x15d845[_0xeb7d('0x22')]===0x0)return[];return db[_0xeb7d('0x9b')][_0xeb7d('0x45')](_0x490652[_0xeb7d('0x9c')](),_0x2df018)[_0xeb7d('0x29')](function(_0x930bff){_0x50433c=_['keyBy'](_0x930bff,'id');_0x2df018=_[_0xeb7d('0x9d')](_0x2df018,{'model':db[_0xeb7d('0x3f')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x36f363['query'][_0xeb7d('0x49')]){_0x8f6395[_0xeb7d('0x48')]['forEach'](function(_0x23baef){_0x103e41[_0xeb7d('0x51')]('i.'+_0x23baef);});}else{_0x103e41[_0xeb7d('0x51')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xeb7d('0x67'));_0x103e41[_0xeb7d('0x51')](_0xeb7d('0x9e'),_0xeb7d('0x9f'));_0x103e41['field'](_0xeb7d('0xa0'),_0xeb7d('0xa1'));_0x103e41[_0xeb7d('0x51')](_0xeb7d('0xa2'),_0xeb7d('0x91'));_0x103e41[_0xeb7d('0x51')](_0xeb7d('0xa3'));_0x103e41[_0xeb7d('0x51')](_0xeb7d('0xa4'),_0xeb7d('0xa5'));_0x103e41[_0xeb7d('0x51')](_0xeb7d('0xa6'),_0xeb7d('0xa7'));_0x103e41[_0xeb7d('0x51')]('c.email',_0xeb7d('0xa8'));_0x103e41[_0xeb7d('0x51')](_0xeb7d('0xa9'),'Contact.phone');_0x103e41['field'](_0xeb7d('0xaa'),'Contact.mobile');_0x103e41[_0xeb7d('0x51')]('c.fax',_0xeb7d('0xab'));_0x103e41['field'](_0xeb7d('0xac'),_0xeb7d('0xad'));_0x103e41[_0xeb7d('0x51')](_0xeb7d('0xae'),_0xeb7d('0xaf'));_0x103e41[_0xeb7d('0x51')](_0xeb7d('0xb0'),_0xeb7d('0x32'));}if(_0x8f6395[_0xeb7d('0x21')])_0x103e41[_0xeb7d('0x21')](_0x8f6395['limit']);if(_0x8f6395['offset'])_0x103e41['offset'](_0x8f6395['offset']);return db[_0xeb7d('0x9b')][_0xeb7d('0x45')](_0x103e41[_0xeb7d('0x9c')](),_0x2df018);})[_0xeb7d('0x29')](function(_0x35cbb5){if(_0x35cbb5['length']>0x0)_0x5320a1[_0xeb7d('0x4e')](_0xeb7d('0xb1'),_[_0xeb7d('0x30')](_0x35cbb5,'id'));return db[_0xeb7d('0x9b')][_0xeb7d('0x45')](_0x5320a1[_0xeb7d('0x9c')](),_0x2df018)[_0xeb7d('0x29')](function(_0x11ab51){var _0x4341d2=_['groupBy'](_0x11ab51,'WhatsappInteractionId');var _0x5bf23f=[];_0x35cbb5[_0xeb7d('0x35')](function(_0x2bc79b){_0x5bf23f['push'](updateWhatsappInteraction(_0x2bc79b,_0x50433c,_0x4341d2));});return BPromise[_0xeb7d('0xb2')](_0x5bf23f);});});})[_0xeb7d('0x29')](function(_0x5111d8){_0x15d845[_0xeb7d('0xb3')]=_0x5111d8;return _0x15d845;})['then'](respondWithFilteredResult(_0xc34d11,_0x8f6395))['catch'](handleError(_0xc34d11,null));};exports[_0xeb7d('0xb4')]=function(_0x3e4e01,_0x1b5289){var _0x450bd3={'raw':![],'where':{'id':_0x3e4e01[_0xeb7d('0xb5')]['id']}},_0x241284={};_0x241284[_0xeb7d('0x43')]=_[_0xeb7d('0x44')](db[_0xeb7d('0x3f')][_0xeb7d('0xb6')]);_0x241284[_0xeb7d('0x45')]=_[_0xeb7d('0x44')](_0x3e4e01[_0xeb7d('0x45')]);_0x241284[_0xeb7d('0x46')]=_[_0xeb7d('0x47')](_0x241284[_0xeb7d('0x43')],_0x241284[_0xeb7d('0x45')]);_0x450bd3['attributes']=_[_0xeb7d('0x47')](_0x241284[_0xeb7d('0x43')],qs[_0xeb7d('0x49')](_0x3e4e01['query'][_0xeb7d('0x49')]));_0x450bd3[_0xeb7d('0x48')]=_0x450bd3[_0xeb7d('0x48')][_0xeb7d('0x4a')]?_0x450bd3[_0xeb7d('0x48')]:_0x241284['model'];if(_0x3e4e01[_0xeb7d('0x45')][_0xeb7d('0xb7')]){_0x450bd3['include']=[{'all':!![]}];}_0x450bd3=_[_0xeb7d('0x9d')]({},_0x450bd3,_0x3e4e01['options']);return db['WhatsappInteraction'][_0xeb7d('0x66')](_0x450bd3)[_0xeb7d('0x29')](handleEntityNotFound(_0x1b5289,null))[_0xeb7d('0x29')](respondWithResult(_0x1b5289,null))[_0xeb7d('0x37')](handleError(_0x1b5289,null));};exports['create']=function(_0x3450c3,_0x4bcd9c){return db[_0xeb7d('0x3f')]['create'](_0x3450c3[_0xeb7d('0x76')],{})[_0xeb7d('0x29')](respondWithResult(_0x4bcd9c,0xc9))[_0xeb7d('0x37')](handleError(_0x4bcd9c,null));};exports[_0xeb7d('0x28')]=function(_0x43c753,_0x103d7c){if(_0x43c753['body']['id']){delete _0x43c753[_0xeb7d('0x76')]['id'];}return db['WhatsappInteraction'][_0xeb7d('0x66')]({'where':{'id':_0x43c753[_0xeb7d('0xb5')]['id']}})['then'](handleEntityNotFound(_0x103d7c,null))[_0xeb7d('0x29')](saveUpdates(_0x43c753['body'],null))[_0xeb7d('0x29')](respondWithResult(_0x103d7c,null))['catch'](handleError(_0x103d7c,null));};exports[_0xeb7d('0x2a')]=function(_0x489b93,_0x3700a1){return db[_0xeb7d('0x3f')][_0xeb7d('0x66')]({'where':{'id':_0x489b93[_0xeb7d('0xb5')]['id']}})[_0xeb7d('0x29')](handleEntityNotFound(_0x3700a1,null))[_0xeb7d('0x29')](removeEntity(_0x3700a1,null))[_0xeb7d('0x37')](handleError(_0x3700a1,null));};exports[_0xeb7d('0xb8')]=function(_0x4e48ae,_0x1d79b7){return db['WhatsappInteraction'][_0xeb7d('0xb8')]()['then'](respondWithResult(_0x1d79b7,null))[_0xeb7d('0x37')](handleError(_0x1d79b7,null));};exports[_0xeb7d('0xb9')]=function(_0x4e40f1,_0x7c2603,_0xd30bdf){return db[_0xeb7d('0xba')][_0xeb7d('0x66')]({'where':{'id':_0x4e40f1[_0xeb7d('0xb5')]['id']}})[_0xeb7d('0x29')](handleEntityNotFound(_0x7c2603,null))['then'](function(_0x12e9a4){if(_0x12e9a4){return _0x12e9a4[_0xeb7d('0xb9')](_0x4e40f1[_0xeb7d('0x76')][_0xeb7d('0xbb')],_[_0xeb7d('0xbc')](_0x4e40f1[_0xeb7d('0x76')],[_0xeb7d('0xbb'),'id'])||{});}})[_0xeb7d('0x29')](respondWithResult(_0x7c2603,null))[_0xeb7d('0x37')](handleError(_0x7c2603,null));};exports['getMessages']=function(_0x1bb43b,_0x540cf3,_0x12a558){var _0x2027a4={'raw':![],'where':{}};var _0x3afd96={};var _0x47ce68={'count':0x0,'rows':[]};return db['WhatsappInteraction']['findOne']({'where':{'id':_0x1bb43b[_0xeb7d('0xb5')]['id']}})[_0xeb7d('0x29')](handleEntityNotFound(_0x540cf3,null))[_0xeb7d('0x29')](function(_0x32071f){if(_0x32071f){_0x3afd96[_0xeb7d('0x43')]=_[_0xeb7d('0x44')](db[_0xeb7d('0xba')][_0xeb7d('0xb6')]);_0x3afd96['query']=_[_0xeb7d('0x44')](_0x1bb43b[_0xeb7d('0x45')]);_0x3afd96[_0xeb7d('0x46')]=_[_0xeb7d('0x47')](_0x3afd96['model'],_0x3afd96[_0xeb7d('0x45')]);_0x2027a4[_0xeb7d('0x48')]=_[_0xeb7d('0x47')](_0x3afd96[_0xeb7d('0x43')],qs[_0xeb7d('0x49')](_0x1bb43b[_0xeb7d('0x45')][_0xeb7d('0x49')]));_0x2027a4[_0xeb7d('0x48')]=_0x2027a4['attributes'][_0xeb7d('0x4a')]?_0x2027a4[_0xeb7d('0x48')]:_0x3afd96[_0xeb7d('0x43')];if(!_0x1bb43b[_0xeb7d('0x45')][_0xeb7d('0x4b')](_0xeb7d('0xbd'))){_0x2027a4[_0xeb7d('0x21')]=qs[_0xeb7d('0x21')](_0x1bb43b['query']['limit']);_0x2027a4[_0xeb7d('0x1f')]=qs[_0xeb7d('0x1f')](_0x1bb43b[_0xeb7d('0x45')][_0xeb7d('0x1f')]);}_0x2027a4[_0xeb7d('0x4c')]=qs[_0xeb7d('0x4d')](_0x1bb43b[_0xeb7d('0x45')][_0xeb7d('0x4d')]);_0x2027a4['where']=qs[_0xeb7d('0x46')](_[_0xeb7d('0x4f')](_0x1bb43b[_0xeb7d('0x45')],_0x3afd96[_0xeb7d('0x46')]));_0x2027a4[_0xeb7d('0x4e')][_0xeb7d('0xbe')]=_0x32071f['id'];if(_0x1bb43b['query'][_0xeb7d('0x85')]){_0x2027a4[_0xeb7d('0x4e')]=_[_0xeb7d('0x9d')](_0x2027a4['where'],{'$or':_['map'](_0x2027a4[_0xeb7d('0x48')],function(_0x273076){var _0x3f4439={};_0x3f4439[_0x273076]={'$like':'%'+_0x1bb43b['query'][_0xeb7d('0x85')]+'%'};return _0x3f4439;})});}if(_0x1bb43b[_0xeb7d('0x45')][_0xeb7d('0x7e')]){var _0x5aab5c=_0x1bb43b[_0xeb7d('0x45')][_0xeb7d('0x7e')][_0xeb7d('0x34')](',');var _0x3aca7f={};_0x3aca7f[_0x5aab5c[0x0]]={'$gte':moment(_0x5aab5c[0x1])[_0xeb7d('0xbf')]('YYYY-MM-DD\x20HH:mm:ss')};_0x2027a4[_0xeb7d('0x4e')]=_[_0xeb7d('0x9d')](_0x2027a4['where'],_0x3aca7f);}_0x2027a4=_['merge']({},_0x2027a4,_0x1bb43b[_0xeb7d('0xc0')]);return db[_0xeb7d('0xba')][_0xeb7d('0x22')]({'where':_0x2027a4[_0xeb7d('0x4e')]})[_0xeb7d('0x29')](function(_0x581256){_0x47ce68['count']=_0x581256;if(_0x1bb43b[_0xeb7d('0x45')][_0xeb7d('0xb7')]){_0x2027a4[_0xeb7d('0xc1')]=[{'all':!![]}];}return db['WhatsappMessage']['findAll'](_0x2027a4);})[_0xeb7d('0x29')](function(_0x4ed1a9){_0x47ce68[_0xeb7d('0xb3')]=_0x4ed1a9;return _0x47ce68;});}})[_0xeb7d('0x29')](respondWithFilteredResult(_0x540cf3,_0x2027a4))['catch'](handleError(_0x540cf3,null));};exports[_0xeb7d('0xc2')]=function(_0x5f56e0,_0x3ff932,_0x15fbcf){return db['WhatsappInteraction'][_0xeb7d('0x66')]({'where':{'id':_0x5f56e0[_0xeb7d('0xb5')]['id']}})[_0xeb7d('0x29')](handleEntityNotFound(_0x3ff932,null))[_0xeb7d('0x29')](function(_0x5a43ae){if(_0x5a43ae){return _0x5a43ae['setTags'](_0x5f56e0['body'][_0xeb7d('0xbb')],_[_0xeb7d('0xbc')](_0x5f56e0['body'],[_0xeb7d('0xbb'),'id'])||{})[_0xeb7d('0xc3')](function(){return db[_0xeb7d('0x72')][_0xeb7d('0xc4')]({'attributes':['id',_0xeb7d('0x2d'),_0xeb7d('0xc5')],'where':{'id':_0x5f56e0[_0xeb7d('0x76')][_0xeb7d('0xbb')]}});})['then'](function(_0x1ac742){socket['emit']('whatsappInteractionTags:save',{'id':Number(_0x5f56e0['params']['id']),'tags':_0x1ac742||[]});return{'id':Number(_0x5f56e0[_0xeb7d('0xb5')]['id']),'tags':_0x1ac742||[]};});}})[_0xeb7d('0x29')](respondWithResult(_0x3ff932,null))[_0xeb7d('0x37')](handleError(_0x3ff932,null));};exports[_0xeb7d('0xc6')]=function(_0xb82d3b,_0x56bc09,_0x1c0ebf){return db['WhatsappInteraction']['find']({'where':{'id':_0xb82d3b['params']['id']}})[_0xeb7d('0x29')](handleEntityNotFound(_0x56bc09,null))[_0xeb7d('0x29')](function(_0xc13780){if(_0xc13780){return _0xc13780[_0xeb7d('0xc6')](_0xb82d3b[_0xeb7d('0x45')]['ids']);}})[_0xeb7d('0x29')](respondWithStatusCode(_0x56bc09,null))[_0xeb7d('0x37')](handleError(_0x56bc09,null));};exports['download']=function(_0x52f90e,_0x5e5ff5){var _0x3603fb=moment()['unix']()[_0xeb7d('0x9c')]();var _0x56c4cd=path[_0xeb7d('0xc7')](config[_0xeb7d('0xc8')],_0xeb7d('0xc9'),_0xeb7d('0xca'),_0xeb7d('0xcb'));var _0x48e1c4=path['join'](config['root'],'server',_0xeb7d('0xca'),_0xeb7d('0xcc'));var _0x35fc33=path[_0xeb7d('0xc7')](_0x56c4cd,_0x3603fb);var _0x283696=util[_0xeb7d('0xbf')](_0xeb7d('0xcd'),_0x52f90e['params']['id'],_0x3603fb);var _0x1a56ba=path[_0xeb7d('0xc7')](_0x56c4cd,_0x283696);var _0x388ff3=[];_0x388ff3[_0xeb7d('0x36')]({'model':db[_0xeb7d('0xce')],'as':'User','attributes':['id',_0xeb7d('0x31')],'raw':!![]});_0x388ff3[_0xeb7d('0x36')]({'model':db[_0xeb7d('0xcf')],'as':_0xeb7d('0xd0'),'attributes':['id',_0xeb7d('0xd1'),_0xeb7d('0xd2')],'raw':!![]});if(_0x52f90e[_0xeb7d('0x45')]['attachments']){_0x388ff3[_0xeb7d('0x36')]({'model':db[_0xeb7d('0xd3')],'as':'Attachment','raw':!![]});}var _0x3ba298=[{'model':db[_0xeb7d('0xba')],'as':_0xeb7d('0xd4'),'attributes':['id',_0xeb7d('0x76'),_0xeb7d('0x7c'),_0xeb7d('0xd5'),_0xeb7d('0xd6'),_0xeb7d('0x81')],'include':_0x388ff3}];_0x3ba298[_0xeb7d('0x36')]({'model':db[_0xeb7d('0xd7')],'as':'Account','attributes':['id',_0xeb7d('0x2d')]});_0x3ba298['push']({'model':db[_0xeb7d('0xce')],'as':_0xeb7d('0xd8'),'attributes':['id','fullname']});return db[_0xeb7d('0x3f')]['find']({'where':{'id':_0x52f90e[_0xeb7d('0xb5')]['id']},'include':_0x3ba298})[_0xeb7d('0x29')](handleEntityNotFound(_0x5e5ff5,null))['then'](function(_0x38d31f){if(_0x38d31f){var _0x4af17b=_0x38d31f['get']({'plain':!![]});fs[_0xeb7d('0xd9')](_0x35fc33);var _0x189db2={'channel':_0xeb7d('0xda'),'account':_0x4af17b[_0xeb7d('0xdb')]['name'],'agent':_0x4af17b[_0xeb7d('0xd8')]?_0x4af17b[_0xeb7d('0xd8')][_0xeb7d('0x31')]:'N.A.','createdAt':moment(_0x4af17b['createdAt'])[_0xeb7d('0xbf')](_0xeb7d('0xdc'))[_0xeb7d('0x9c')](),'closedAt':_0x4af17b['closed']?moment(_0x4af17b[_0xeb7d('0xdd')])[_0xeb7d('0xbf')](_0xeb7d('0xdc'))[_0xeb7d('0x9c')]():'','disposition':_0x4af17b['disposition'],'messages':_(_0x4af17b['Messages'])[_0xeb7d('0x85')]({'secret':![]})[_0xeb7d('0x30')](function(_0x54d188){if(_0x54d188[_0xeb7d('0xd3')]){var _0x320100=path[_0xeb7d('0xc7')](_0x48e1c4,_0x54d188[_0xeb7d('0xd3')][_0xeb7d('0xde')]);if(fs['existsSync'](_0x320100)){fs[_0xeb7d('0xdf')](_0x320100)[_0xeb7d('0xe0')](fs[_0xeb7d('0xe1')](path['join'](_0x35fc33,_0x54d188[_0xeb7d('0xd3')]['basename'])));}}return{'date':moment(_0x54d188[_0xeb7d('0x7c')])[_0xeb7d('0xbf')](_0xeb7d('0xdc'))[_0xeb7d('0x9c')](),'sender':_0x54d188[_0xeb7d('0xd5')]==='out'?_0x54d188['User']?_0x54d188['User'][_0xeb7d('0x31')]:_0xeb7d('0xe2'):_0x54d188[_0xeb7d('0xd0')]['firstName']+(_0x54d188[_0xeb7d('0xd0')]['lastName']?'\x20'+_0x54d188[_0xeb7d('0xd0')][_0xeb7d('0xd2')]:''),'body':_0x54d188[_0xeb7d('0xd3')]?_0x54d188[_0xeb7d('0xd3')][_0xeb7d('0xde')]:_0x54d188[_0xeb7d('0x76')],'direction':_0x54d188[_0xeb7d('0xd5')]===_0xeb7d('0xe3')?'A':'C','secret':_0x54d188[_0xeb7d('0xd6')],'read':_0x54d188['read'],'attachment':_0x54d188[_0xeb7d('0xd3')]};})[_0xeb7d('0x68')]()};return ejs[_0xeb7d('0xe4')](path[_0xeb7d('0xc7')](config[_0xeb7d('0xc8')],'server',_0xeb7d('0xe5'),_0xeb7d('0xe6')),{'interaction':_0x189db2})[_0xeb7d('0x29')](function(_0x1d142a){var _0x3bb7ae=path[_0xeb7d('0xc7')](_0x35fc33,_0xeb7d('0xe7')+_0x4af17b['id']+'-'+_0x3603fb+_0xeb7d('0xe8'));var _0x4f5854={'path':_0x3bb7ae,'channel':_0xeb7d('0xda'),'interactionId':_0x4af17b['id']};return pdf[_0xeb7d('0xe9')](_0x1d142a,_0x4f5854);})['then'](function(){return new BPromise(function(_0x259307,_0x462456){zipdir(_0x35fc33,{'saveTo':_0x1a56ba},function(_0x124625,_0x34bed2){if(_0x124625)return _0x462456(_0x124625);return _0x259307(_0x34bed2);});})[_0xeb7d('0x29')](function(){return new BPromise(function(_0x459432,_0x31d434){rimraf(_0x35fc33,function(_0x464fd6){if(_0x464fd6)_0x31d434(_0x464fd6);return _0x459432();});});})[_0xeb7d('0x29')](function(){return _0x5e5ff5[_0xeb7d('0xea')](_0x1a56ba,_0x283696,function(_0x1c16af){if(_0x1c16af){console[_0xeb7d('0xeb')](_0xeb7d('0xec'),_0x1c16af);}else{fs[_0xeb7d('0xed')](_0x1a56ba);}});});});}else{return _0x5e5ff5[_0xeb7d('0x1d')](0xc8);}})['catch'](handleError(_0x5e5ff5,null));};
\ No newline at end of file
index 40c48da..b74c81e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9f9=['../../mysqldb','WhatsappMessage','setMaxListeners','save','remove','getUsers','setDataValue','Users','findAll','then','unreadMessages','emit','catch','hook','exports','events','WhatsappInteraction'];(function(_0x54cbd0,_0x2123ef){var _0x39f902=function(_0x28f085){while(--_0x28f085){_0x54cbd0['push'](_0x54cbd0['shift']());}};_0x39f902(++_0x2123ef);}(_0xe9f9,0x174));var _0x9e9f=function(_0x929dab,_0x5b26e5){_0x929dab=_0x929dab-0x0;var _0x24f366=_0xe9f9[_0x929dab];return _0x24f366;};'use strict';var EventEmitter=require(_0x9e9f('0x0'));var WhatsappInteraction=require('../../mysqldb')['db'][_0x9e9f('0x1')];var WhatsappMessage=require(_0x9e9f('0x2'))['db'][_0x9e9f('0x3')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x9e9f('0x4')](0x0);var events={'afterCreate':_0x9e9f('0x5'),'afterUpdate':'update','afterDestroy':_0x9e9f('0x6')};function emitEvent(_0x47f4c7){return function(_0x372526,_0xde96fc,_0x549ea5){_0x372526[_0x9e9f('0x7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x310be8){_0x372526[_0x9e9f('0x8')](_0x9e9f('0x9'),_0x310be8['map'](function(_0x1170bb){return{'id':_0x1170bb['id']};}));return WhatsappMessage[_0x9e9f('0xa')]({'where':{'WhatsappInteractionId':_0x372526['id'],'direction':'in','read':![]},'raw':!![]});})[_0x9e9f('0xb')](function(_0x29aebc){_0x372526[_0x9e9f('0x8')](_0x9e9f('0xc'),_0x29aebc['length']);WhatsappInteractionEvents[_0x9e9f('0xd')](_0x47f4c7+':'+_0x372526['id'],_0x372526);WhatsappInteractionEvents[_0x9e9f('0xd')](_0x47f4c7,_0x372526);_0x549ea5(null);})[_0x9e9f('0xe')](_0x549ea5(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappInteraction[_0x9e9f('0xf')](e,emitEvent(event));}}module[_0x9e9f('0x10')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0xfd3a=['../../mysqldb','WhatsappInteraction','save','update','remove','getUsers','then','setDataValue','findAll','unreadMessages','length','catch','hasOwnProperty','events'];(function(_0x496a63,_0x47fcd0){var _0x264b56=function(_0xb0b59){while(--_0xb0b59){_0x496a63['push'](_0x496a63['shift']());}};_0x264b56(++_0x47fcd0);}(_0xfd3a,0x179));var _0xafd3=function(_0x1c208e,_0x2a0a5b){_0x1c208e=_0x1c208e-0x0;var _0x5104ff=_0xfd3a[_0x1c208e];return _0x5104ff;};'use strict';var EventEmitter=require(_0xafd3('0x0'));var WhatsappInteraction=require(_0xafd3('0x1'))['db'][_0xafd3('0x2')];var WhatsappMessage=require(_0xafd3('0x1'))['db']['WhatsappMessage'];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xafd3('0x3'),'afterUpdate':_0xafd3('0x4'),'afterDestroy':_0xafd3('0x5')};function emitEvent(_0x415217){return function(_0x960eb3,_0x567815,_0x9db715){_0x960eb3[_0xafd3('0x6')]({'attributes':['id'],'raw':!![]})[_0xafd3('0x7')](function(_0x3766aa){_0x960eb3[_0xafd3('0x8')]('Users',_0x3766aa['map'](function(_0x1e81b3){return{'id':_0x1e81b3['id']};}));return WhatsappMessage[_0xafd3('0x9')]({'where':{'WhatsappInteractionId':_0x960eb3['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x1e2d7c){_0x960eb3[_0xafd3('0x8')](_0xafd3('0xa'),_0x1e2d7c[_0xafd3('0xb')]);WhatsappInteractionEvents['emit'](_0x415217+':'+_0x960eb3['id'],_0x960eb3);WhatsappInteractionEvents['emit'](_0x415217,_0x960eb3);_0x9db715(null);})[_0xafd3('0xc')](_0x9db715(null));};}for(var e in events){if(events[_0xafd3('0xd')](e)){var event=events[e];WhatsappInteraction['hook'](e,emitEvent(event));}}module['exports']=WhatsappInteractionEvents;
\ No newline at end of file
index ef033ce..b5f8150 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bbd=['closedAt','format','YYYY-MM-DD\x20HH:mm:ss','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappInteraction.attributes','exports','whatsapp_interactions','changed'];(function(_0x53e25f,_0x66d81b){var _0x1972a8=function(_0x91b16e){while(--_0x91b16e){_0x53e25f['push'](_0x53e25f['shift']());}};_0x1972a8(++_0x66d81b);}(_0x9bbd,0x198));var _0xd9bb=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x9bbd[_0x1035c1];return _0x308d67;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xd9bb('0x0'))(_0xd9bb('0x1'));var moment=require(_0xd9bb('0x2'));var BPromise=require(_0xd9bb('0x3'));var rp=require(_0xd9bb('0x4'));var fs=require('fs');var path=require(_0xd9bb('0x5'));var rimraf=require(_0xd9bb('0x6'));var config=require(_0xd9bb('0x7'));var attributes=require(_0xd9bb('0x8'));module[_0xd9bb('0x9')]=function(_0x2a6001,_0x5a7e41){return _0x2a6001['define']('WhatsappInteraction',attributes,{'tableName':_0xd9bb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x33dd28,_0x321db1,_0x2e4d9e){if(_0x33dd28[_0xd9bb('0xb')]('closed')){_0x33dd28[_0xd9bb('0xc')]=moment()[_0xd9bb('0xd')](_0xd9bb('0xe'));}_0x2e4d9e(null,_0x33dd28);}}});};
\ No newline at end of file
+var _0xf30e=['rimraf','../../config/environment','./whatsappInteraction.attributes','exports','closed','format','YYYY-MM-DD\x20HH:mm:ss','lodash','api','moment','request-promise','path'];(function(_0x1671c7,_0x36f775){var _0x160b76=function(_0x547da6){while(--_0x547da6){_0x1671c7['push'](_0x1671c7['shift']());}};_0x160b76(++_0x36f775);}(_0xf30e,0x7f));var _0xef30=function(_0x12aaee,_0x5bf50c){_0x12aaee=_0x12aaee-0x0;var _0x37c350=_0xf30e[_0x12aaee];return _0x37c350;};'use strict';var _=require(_0xef30('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xef30('0x1'));var moment=require(_0xef30('0x2'));var BPromise=require('bluebird');var rp=require(_0xef30('0x3'));var fs=require('fs');var path=require(_0xef30('0x4'));var rimraf=require(_0xef30('0x5'));var config=require(_0xef30('0x6'));var attributes=require(_0xef30('0x7'));module[_0xef30('0x8')]=function(_0x2e2916,_0x57eaac){return _0x2e2916['define']('WhatsappInteraction',attributes,{'tableName':'whatsapp_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4d1334,_0x3bac70,_0x508f4b){if(_0x4d1334['changed'](_0xef30('0x9'))){_0x4d1334['closedAt']=moment()[_0xef30('0xa')](_0xef30('0xb'));}_0x508f4b(null,_0x4d1334);}}});};
\ No newline at end of file
index 0152be2..1e7d94c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27d6=['http','defaults','redis','socket.io-emitter','./whatsappInteraction.socket','request','then','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','WhatsappInteraction','update','options','raw','where','attributes','limit','UpdateWhatsappInteraction','AddTagsToWhatsappInteraction','find','body','ids','omit','AddTags','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x9addb3,_0x53dcfb){var _0x2a4af0=function(_0x2fce29){while(--_0x2fce29){_0x9addb3['push'](_0x9addb3['shift']());}};_0x2a4af0(++_0x53dcfb);}(_0x27d6,0xc8));var _0x627d=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x27d6[_0x1d1779];return _0x2377e9;};'use strict';var _=require(_0x627d('0x0'));var util=require(_0x627d('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x627d('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x627d('0x3'))['db'];var utils=require(_0x627d('0x4'));var logger=require(_0x627d('0x5'))(_0x627d('0x6'));var config=require(_0x627d('0x7'));var jayson=require(_0x627d('0x8'));var client=jayson[_0x627d('0x9')][_0x627d('0xa')]({'port':0x232a});config['redis']=_[_0x627d('0xb')](config[_0x627d('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x627d('0xd'))(new Redis(config[_0x627d('0xc')]));require(_0x627d('0xe'))['register'](socket);function respondWithRpcPromise(_0x3afd82,_0x5a7414,_0x490b68){return new BPromise(function(_0xda5eec,_0x318964){return client[_0x627d('0xf')](_0x3afd82,_0x490b68)[_0x627d('0x10')](function(_0xdbd743){logger[_0x627d('0x11')](_0x627d('0x12'),_0x5a7414,_0x627d('0x13'));logger[_0x627d('0x14')](_0x627d('0x15'),_0x5a7414,'request\x20sent',JSON[_0x627d('0x16')](_0xdbd743));if(_0xdbd743[_0x627d('0x17')]){if(_0xdbd743[_0x627d('0x17')][_0x627d('0x18')]===0x1f4){logger[_0x627d('0x17')](_0x627d('0x12'),_0x5a7414,_0xdbd743[_0x627d('0x17')]['message']);return _0x318964(_0xdbd743[_0x627d('0x17')][_0x627d('0x19')]);}logger[_0x627d('0x17')]('WhatsappInteraction,\x20%s,\x20%s',_0x5a7414,_0xdbd743[_0x627d('0x17')][_0x627d('0x19')]);return _0xda5eec(_0xdbd743['error'][_0x627d('0x19')]);}else{logger[_0x627d('0x11')]('WhatsappInteraction,\x20%s,\x20%s',_0x5a7414,_0x627d('0x13'));_0xda5eec(_0xdbd743[_0x627d('0x1a')][_0x627d('0x19')]);}})[_0x627d('0x1b')](function(_0x720725){logger[_0x627d('0x17')](_0x627d('0x12'),_0x5a7414,_0x720725);_0x318964(_0x720725);});});}exports['UpdateWhatsappInteraction']=function(_0x55ac17){var _0x1e86c7=this;return new Promise(function(_0x19f0b3,_0x8956ca){return db[_0x627d('0x1c')][_0x627d('0x1d')](_0x55ac17['body'],{'raw':_0x55ac17[_0x627d('0x1e')]?_0x55ac17[_0x627d('0x1e')][_0x627d('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x55ac17['options']?_0x55ac17[_0x627d('0x1e')][_0x627d('0x20')]||null:null,'attributes':_0x55ac17[_0x627d('0x1e')]?_0x55ac17[_0x627d('0x1e')][_0x627d('0x21')]||null:null,'limit':_0x55ac17[_0x627d('0x1e')]?_0x55ac17[_0x627d('0x1e')][_0x627d('0x22')]||null:null})[_0x627d('0x10')](function(_0x835c2f){logger[_0x627d('0x11')]('UpdateWhatsappInteraction',_0x55ac17);logger['debug'](_0x627d('0x23'),_0x55ac17,JSON[_0x627d('0x16')](_0x835c2f));_0x19f0b3(_0x835c2f);})[_0x627d('0x1b')](function(_0x5b1806){logger[_0x627d('0x17')](_0x627d('0x23'),_0x5b1806[_0x627d('0x19')],_0x55ac17);_0x8956ca(_0x1e86c7[_0x627d('0x17')](0x1f4,_0x5b1806[_0x627d('0x19')]));});});};exports[_0x627d('0x24')]=function(_0x1f1adb){return new Promise(function(_0x12ba9a,_0x338c3f){return db[_0x627d('0x1c')][_0x627d('0x25')]({'where':_0x1f1adb[_0x627d('0x1e')]?_0x1f1adb[_0x627d('0x1e')][_0x627d('0x20')]||null:null})['then'](function(_0x3a8293){if(_0x3a8293){return _0x3a8293['addTags'](_0x1f1adb[_0x627d('0x26')][_0x627d('0x27')],_[_0x627d('0x28')](_0x1f1adb['body'],[_0x627d('0x27'),'id'])||{});}})['spread'](function(_0x41b165){logger[_0x627d('0x11')](_0x627d('0x29'),_0x1f1adb);logger['debug'](_0x627d('0x29'),_0x1f1adb,JSON[_0x627d('0x16')](_0x41b165));_0x12ba9a(_0x41b165);})[_0x627d('0x1b')](function(_0x382c4d){logger[_0x627d('0x17')](_0x627d('0x29'),_0x382c4d[_0x627d('0x19')],_0x1f1adb);_0x338c3f(_this[_0x627d('0x17')](0x1f4,_0x382c4d[_0x627d('0x19')]));});});};
\ No newline at end of file
+var _0xbee0=['AddTagsToWhatsappInteraction','find','addTags','ids','omit','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','request','then','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','UpdateWhatsappInteraction','update','body','options','raw','where','stringify'];(function(_0x14eb25,_0x3d8f89){var _0x3abbbf=function(_0x34f763){while(--_0x34f763){_0x14eb25['push'](_0x14eb25['shift']());}};_0x3abbbf(++_0x3d8f89);}(_0xbee0,0xae));var _0x0bee=function(_0x2cd75d,_0x5b7dac){_0x2cd75d=_0x2cd75d-0x0;var _0x3ce842=_0xbee0[_0x2cd75d];return _0x3ce842;};'use strict';var _=require(_0x0bee('0x0'));var util=require(_0x0bee('0x1'));var moment=require(_0x0bee('0x2'));var BPromise=require(_0x0bee('0x3'));var rs=require(_0x0bee('0x4'));var fs=require('fs');var Redis=require(_0x0bee('0x5'));var db=require(_0x0bee('0x6'))['db'];var utils=require(_0x0bee('0x7'));var logger=require('../../config/logger')(_0x0bee('0x8'));var config=require(_0x0bee('0x9'));var jayson=require(_0x0bee('0xa'));var client=jayson[_0x0bee('0xb')][_0x0bee('0xc')]({'port':0x232a});config['redis']=_[_0x0bee('0xd')](config[_0x0bee('0xe')],{'host':_0x0bee('0xf'),'port':0x18eb});var socket=require(_0x0bee('0x10'))(new Redis(config[_0x0bee('0xe')]));require('./whatsappInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x43ba40,_0x119cec,_0x2d7b4f){return new BPromise(function(_0x596948,_0x36a5ac){return client[_0x0bee('0x11')](_0x43ba40,_0x2d7b4f)[_0x0bee('0x12')](function(_0x301fa2){logger[_0x0bee('0x13')](_0x0bee('0x14'),_0x119cec,_0x0bee('0x15'));logger[_0x0bee('0x16')](_0x0bee('0x17'),_0x119cec,_0x0bee('0x15'),JSON['stringify'](_0x301fa2));if(_0x301fa2[_0x0bee('0x18')]){if(_0x301fa2['error'][_0x0bee('0x19')]===0x1f4){logger[_0x0bee('0x18')](_0x0bee('0x14'),_0x119cec,_0x301fa2[_0x0bee('0x18')][_0x0bee('0x1a')]);return _0x36a5ac(_0x301fa2['error'][_0x0bee('0x1a')]);}logger[_0x0bee('0x18')](_0x0bee('0x14'),_0x119cec,_0x301fa2[_0x0bee('0x18')][_0x0bee('0x1a')]);return _0x596948(_0x301fa2[_0x0bee('0x18')][_0x0bee('0x1a')]);}else{logger['info'](_0x0bee('0x14'),_0x119cec,'request\x20sent');_0x596948(_0x301fa2[_0x0bee('0x1b')][_0x0bee('0x1a')]);}})[_0x0bee('0x1c')](function(_0x320f21){logger[_0x0bee('0x18')](_0x0bee('0x14'),_0x119cec,_0x320f21);_0x36a5ac(_0x320f21);});});}exports[_0x0bee('0x1d')]=function(_0x13ee09){var _0x453c25=this;return new Promise(function(_0x19e099,_0x3715de){return db['WhatsappInteraction'][_0x0bee('0x1e')](_0x13ee09[_0x0bee('0x1f')],{'raw':_0x13ee09[_0x0bee('0x20')]?_0x13ee09['options'][_0x0bee('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x13ee09[_0x0bee('0x20')]?_0x13ee09['options'][_0x0bee('0x22')]||null:null,'attributes':_0x13ee09['options']?_0x13ee09[_0x0bee('0x20')]['attributes']||null:null,'limit':_0x13ee09[_0x0bee('0x20')]?_0x13ee09[_0x0bee('0x20')]['limit']||null:null})[_0x0bee('0x12')](function(_0x40efcd){logger['info'](_0x0bee('0x1d'),_0x13ee09);logger[_0x0bee('0x16')]('UpdateWhatsappInteraction',_0x13ee09,JSON[_0x0bee('0x23')](_0x40efcd));_0x19e099(_0x40efcd);})['catch'](function(_0xdc3ee3){logger['error'](_0x0bee('0x1d'),_0xdc3ee3[_0x0bee('0x1a')],_0x13ee09);_0x3715de(_0x453c25['error'](0x1f4,_0xdc3ee3[_0x0bee('0x1a')]));});});};exports[_0x0bee('0x24')]=function(_0x3bbdd6){return new Promise(function(_0xfdd01e,_0x322de6){return db['WhatsappInteraction'][_0x0bee('0x25')]({'where':_0x3bbdd6[_0x0bee('0x20')]?_0x3bbdd6['options'][_0x0bee('0x22')]||null:null})[_0x0bee('0x12')](function(_0x1a9fa0){if(_0x1a9fa0){return _0x1a9fa0[_0x0bee('0x26')](_0x3bbdd6['body'][_0x0bee('0x27')],_[_0x0bee('0x28')](_0x3bbdd6['body'],['ids','id'])||{});}})['spread'](function(_0x33cbb9){logger[_0x0bee('0x13')]('AddTags',_0x3bbdd6);logger[_0x0bee('0x16')](_0x0bee('0x29'),_0x3bbdd6,JSON[_0x0bee('0x23')](_0x33cbb9));_0xfdd01e(_0x33cbb9);})['catch'](function(_0x2b5097){logger[_0x0bee('0x18')](_0x0bee('0x29'),_0x2b5097[_0x0bee('0x1a')],_0x3bbdd6);_0x322de6(_this['error'](0x1f4,_0x2b5097[_0x0bee('0x1a')]));});});};
\ No newline at end of file
index 9d44d9d..068d876 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3560=['length','whatsappInteraction:','save','removeListener','register'];(function(_0x2a0fc4,_0x2eaf74){var _0x531d00=function(_0xa4388f){while(--_0xa4388f){_0x2a0fc4['push'](_0x2a0fc4['shift']());}};_0x531d00(++_0x2eaf74);}(_0x3560,0xa2));var _0x0356=function(_0x483e3a,_0x568361){_0x483e3a=_0x483e3a-0x0;var _0x43fca9=_0x3560[_0x483e3a];return _0x43fca9;};'use strict';var WhatsappInteractionEvents=require('./whatsappInteraction.events');var events=[_0x0356('0x0'),'remove','update'];function createListener(_0x2cb35a,_0xda75a0){return function(_0x4fcf82){_0xda75a0['emit'](_0x2cb35a,_0x4fcf82);};}function removeListener(_0x19d493,_0x14024e){return function(){WhatsappInteractionEvents[_0x0356('0x1')](_0x19d493,_0x14024e);};}exports[_0x0356('0x2')]=function(_0x39c890){for(var _0x2f455e=0x0,_0x3b3af0=events[_0x0356('0x3')];_0x2f455e<_0x3b3af0;_0x2f455e++){var _0x2c9185=events[_0x2f455e];var _0x30143c=createListener(_0x0356('0x4')+_0x2c9185,_0x39c890);WhatsappInteractionEvents['on'](_0x2c9185,_0x30143c);}};
\ No newline at end of file
+var _0xc5ba=['removeListener','register','length','whatsappInteraction:','./whatsappInteraction.events','save','remove','update'];(function(_0x5bffa8,_0x358c48){var _0x54fe48=function(_0x4ccc24){while(--_0x4ccc24){_0x5bffa8['push'](_0x5bffa8['shift']());}};_0x54fe48(++_0x358c48);}(_0xc5ba,0x1ac));var _0xac5b=function(_0x48cc05,_0x99c831){_0x48cc05=_0x48cc05-0x0;var _0x5aa91f=_0xc5ba[_0x48cc05];return _0x5aa91f;};'use strict';var WhatsappInteractionEvents=require(_0xac5b('0x0'));var events=[_0xac5b('0x1'),_0xac5b('0x2'),_0xac5b('0x3')];function createListener(_0xa2a89b,_0x28e92d){return function(_0x3003ed){_0x28e92d['emit'](_0xa2a89b,_0x3003ed);};}function removeListener(_0x35f8fc,_0x97b4d){return function(){WhatsappInteractionEvents[_0xac5b('0x4')](_0x35f8fc,_0x97b4d);};}exports[_0xac5b('0x5')]=function(_0x57bf56){for(var _0x597cbb=0x0,_0x270ce5=events[_0xac5b('0x6')];_0x597cbb<_0x270ce5;_0x597cbb++){var _0x1cbb94=events[_0x597cbb];var _0x588fba=createListener(_0xac5b('0x7')+_0x1cbb94,_0x57bf56);WhatsappInteractionEvents['on'](_0x1cbb94,_0x588fba);}};
\ No newline at end of file
index 055a706..ecc1c36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcceb=['get','isAuthenticated','index','/describe','describe','show','post','whatsapp','/:id/status','status','put','/:id','update','/:id/accept','/:id/reject','reject','delete','destroy','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappMessage.controller'];(function(_0x307889,_0x557281){var _0x88ceda=function(_0xae1762){while(--_0xae1762){_0x307889['push'](_0x307889['shift']());}};_0x88ceda(++_0x557281);}(_0xcceb,0x13e));var _0xbcce=function(_0x41f15f,_0x1a39ef){_0x41f15f=_0x41f15f-0x0;var _0x269a71=_0xcceb[_0x41f15f];return _0x269a71;};'use strict';var multer=require('multer');var util=require(_0xbcce('0x0'));var path=require(_0xbcce('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xbcce('0x2'));var auth=require(_0xbcce('0x3'));var interaction=require(_0xbcce('0x4'));var config=require(_0xbcce('0x5'));var controller=require(_0xbcce('0x6'));router[_0xbcce('0x7')]('/',auth[_0xbcce('0x8')](),controller[_0xbcce('0x9')]);router[_0xbcce('0x7')](_0xbcce('0xa'),auth[_0xbcce('0x8')](),controller[_0xbcce('0xb')]);router[_0xbcce('0x7')]('/:id',auth[_0xbcce('0x8')](),controller[_0xbcce('0xc')]);router[_0xbcce('0xd')]('/',auth[_0xbcce('0x8')](),interaction['tracked'](_0xbcce('0xe'),'whatsappmessage:create'),controller['create']);router[_0xbcce('0xd')](_0xbcce('0xf'),controller[_0xbcce('0x10')]);router[_0xbcce('0x11')](_0xbcce('0x12'),auth['isAuthenticated'](),controller[_0xbcce('0x13')]);router[_0xbcce('0x11')](_0xbcce('0x14'),auth[_0xbcce('0x8')](),controller['accept']);router[_0xbcce('0x11')](_0xbcce('0x15'),auth['isAuthenticated'](),controller[_0xbcce('0x16')]);router[_0xbcce('0x17')](_0xbcce('0x12'),auth[_0xbcce('0x8')](),controller[_0xbcce('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0xfed2=['tracked','whatsapp','whatsappmessage:create','/:id/status','status','put','update','/:id/reject','reject','delete','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappMessage.controller','get','isAuthenticated','index','/describe','/:id','show','post'];(function(_0x51e680,_0x4dfab4){var _0x3ee1bc=function(_0x1b81bf){while(--_0x1b81bf){_0x51e680['push'](_0x51e680['shift']());}};_0x3ee1bc(++_0x4dfab4);}(_0xfed2,0x14f));var _0x2fed=function(_0x35e309,_0x296683){_0x35e309=_0x35e309-0x0;var _0x57762=_0xfed2[_0x35e309];return _0x57762;};'use strict';var multer=require(_0x2fed('0x0'));var util=require(_0x2fed('0x1'));var path=require('path');var timeout=require(_0x2fed('0x2'));var express=require(_0x2fed('0x3'));var router=express[_0x2fed('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x2fed('0x5'));var interaction=require(_0x2fed('0x6'));var config=require(_0x2fed('0x7'));var controller=require(_0x2fed('0x8'));router[_0x2fed('0x9')]('/',auth[_0x2fed('0xa')](),controller[_0x2fed('0xb')]);router['get'](_0x2fed('0xc'),auth['isAuthenticated'](),controller['describe']);router['get'](_0x2fed('0xd'),auth['isAuthenticated'](),controller[_0x2fed('0xe')]);router[_0x2fed('0xf')]('/',auth[_0x2fed('0xa')](),interaction[_0x2fed('0x10')](_0x2fed('0x11'),_0x2fed('0x12')),controller['create']);router[_0x2fed('0xf')](_0x2fed('0x13'),controller[_0x2fed('0x14')]);router[_0x2fed('0x15')](_0x2fed('0xd'),auth[_0x2fed('0xa')](),controller[_0x2fed('0x16')]);router[_0x2fed('0x15')]('/:id/accept',auth[_0x2fed('0xa')](),controller['accept']);router[_0x2fed('0x15')](_0x2fed('0x17'),auth[_0x2fed('0xa')](),controller[_0x2fed('0x18')]);router[_0x2fed('0x19')](_0x2fed('0xd'),auth[_0x2fed('0xa')](),controller['destroy']);module[_0x2fed('0x1a')]=router;
\ No newline at end of file
index 215c0d9..c8df626 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c5a=['out','STRING','TEXT','sequelize','exports','medium','BOOLEAN','ENUM'];(function(_0x2abc3d,_0x48edca){var _0x252745=function(_0x32bb6f){while(--_0x32bb6f){_0x2abc3d['push'](_0x2abc3d['shift']());}};_0x252745(++_0x48edca);}(_0x9c5a,0x1c3));var _0xa9c5=function(_0x416e43,_0x5d0ac3){_0x416e43=_0x416e43-0x0;var _0x5a2aff=_0x9c5a[_0x416e43];return _0x5a2aff;};'use strict';var Sequelize=require(_0xa9c5('0x0'));module[_0xa9c5('0x1')]={'body':{'type':Sequelize['TEXT'](_0xa9c5('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xa9c5('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0xa9c5('0x4')]('in',_0xa9c5('0x5')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0xa9c5('0x6')](0xbe)},'phone':{'type':Sequelize[_0xa9c5('0x6')]},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize[_0xa9c5('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xa9c5('0x7')]}};
\ No newline at end of file
+var _0x2f92=['STRING','DATE','sequelize','TEXT','medium','ENUM','out'];(function(_0x2c7618,_0x26be9c){var _0x5ce3f0=function(_0x1837b3){while(--_0x1837b3){_0x2c7618['push'](_0x2c7618['shift']());}};_0x5ce3f0(++_0x26be9c);}(_0x2f92,0xe2));var _0x22f9=function(_0x2ec461,_0x5f588a){_0x2ec461=_0x2ec461-0x0;var _0x28603d=_0x2f92[_0x2ec461];return _0x28603d;};'use strict';var Sequelize=require(_0x22f9('0x0'));module['exports']={'body':{'type':Sequelize[_0x22f9('0x1')](_0x22f9('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x22f9('0x3')]('in',_0x22f9('0x4')),'defaultValue':_0x22f9('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0x22f9('0x5')](0xbe)},'phone':{'type':Sequelize[_0x22f9('0x5')]},'readAt':{'type':Sequelize[_0x22f9('0x6')]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'providerName':{'type':Sequelize[_0x22f9('0x5')]},'providerResponse':{'type':Sequelize[_0x22f9('0x1')]}};
\ No newline at end of file
index 612277d..9fd3532 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f2c=['offset','undefined','limit','count','apply','reject','save','update','then','destroy','sendStatus','stack','name','index','WhatsappMessage','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','order','sort','filters','pick','where','merge','map','VIRTUAL','filter','options','includeAll','include','rows','catch','show','find','create','body','params','describe','whatsapp-interactions','accept','read','readAt','UserId','user','get','WhatsappInteraction','read1stAt','format','YYYY-MM-DD\x20HH:mm:ss','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','ContactId','sequelize','Sequelize','QueryTypes','User','agent','fullname','interface','SIP/%s','channel','event','EventManager','acceptmessage','../../config/logger','whatsapp','WhatsappInteractionId','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','SELECT','contact','motionChannel','rejectmessage','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','inspect','twilio','MessageSid','messageId','MessageStatus','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','defaults','localhost','socket.io-emitter','redis','client','http','request','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','status','end','json'];(function(_0x160478,_0x565eab){var _0x224f55=function(_0x390eb5){while(--_0x390eb5){_0x160478['push'](_0x160478['shift']());}};_0x224f55(++_0x565eab);}(_0x4f2c,0xe9));var _0xc4f2=function(_0x56ba92,_0xb3c986){_0x56ba92=_0x56ba92-0x0;var _0x8fe94d=_0x4f2c[_0x56ba92];return _0x8fe94d;};'use strict';var emlformat=require(_0xc4f2('0x0'));var rimraf=require(_0xc4f2('0x1'));var zipdir=require(_0xc4f2('0x2'));var jsonpatch=require(_0xc4f2('0x3'));var rp=require(_0xc4f2('0x4'));var moment=require(_0xc4f2('0x5'));var BPromise=require(_0xc4f2('0x6'));var Mustache=require(_0xc4f2('0x7'));var util=require(_0xc4f2('0x8'));var path=require(_0xc4f2('0x9'));var sox=require(_0xc4f2('0xa'));var csv=require(_0xc4f2('0xb'));var ejs=require(_0xc4f2('0xc'));var fs=require('fs');var fs_extra=require(_0xc4f2('0xd'));var _=require(_0xc4f2('0xe'));var squel=require('squel');var crypto=require(_0xc4f2('0xf'));var jsforce=require(_0xc4f2('0x10'));var deskjs=require(_0xc4f2('0x11'));var toCsv=require(_0xc4f2('0xb'));var querystring=require(_0xc4f2('0x12'));var Papa=require(_0xc4f2('0x13'));var Redis=require('ioredis');var authService=require(_0xc4f2('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xc4f2('0x15'));var hardwareService=require(_0xc4f2('0x16'));var logger=require('../../config/logger')(_0xc4f2('0x17'));var utils=require(_0xc4f2('0x18'));var config=require(_0xc4f2('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xc4f2('0x1a'))['db'];config['redis']=_[_0xc4f2('0x1b')](config['redis'],{'host':_0xc4f2('0x1c'),'port':0x18eb});var socket=require(_0xc4f2('0x1d'))(new Redis(config[_0xc4f2('0x1e')]));require('./whatsappMessage.socket')['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0xc4f2('0x1f')][_0xc4f2('0x20')]({'port':0x232c});var client9002=jayson[_0xc4f2('0x1f')][_0xc4f2('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x10f64a,_0x3e1990,_0x471956,_0x23b6c9){return new BPromise(function(_0xa36d92,_0x147569){var _0x35531a=_0x23b6c9||client;return _0x35531a[_0xc4f2('0x21')](_0x10f64a,_0x471956)['then'](function(_0x4c3caf){logger[_0xc4f2('0x22')](_0xc4f2('0x23'),_0x3e1990,_0xc4f2('0x24'));logger[_0xc4f2('0x25')](_0xc4f2('0x26'),_0x3e1990,_0xc4f2('0x24'),JSON[_0xc4f2('0x27')](_0x4c3caf));if(_0x4c3caf[_0xc4f2('0x28')]){if(_0x4c3caf[_0xc4f2('0x28')]['code']===0x1f4){logger[_0xc4f2('0x28')](_0xc4f2('0x23'),_0x3e1990,_0x4c3caf[_0xc4f2('0x28')][_0xc4f2('0x29')]);return _0x147569(_0x4c3caf[_0xc4f2('0x28')][_0xc4f2('0x29')]);}logger[_0xc4f2('0x28')](_0xc4f2('0x23'),_0x3e1990,_0x4c3caf['error'][_0xc4f2('0x29')]);return _0xa36d92(_0x4c3caf[_0xc4f2('0x28')][_0xc4f2('0x29')]);}else{logger[_0xc4f2('0x22')](_0xc4f2('0x23'),_0x3e1990,'request\x20sent');_0xa36d92(_0x4c3caf['result'][_0xc4f2('0x29')]);}})['catch'](function(_0x4ba5d3){logger[_0xc4f2('0x28')]('WhatsappMessage,\x20%s,\x20%s',_0x3e1990,_0x4ba5d3);_0x147569(_0x4ba5d3);});});}function respondWithStatusCode(_0xc47f62,_0x13047c){_0x13047c=_0x13047c||0xcc;return function(_0x53ee37){if(_0x53ee37){return _0xc47f62['sendStatus'](_0x13047c);}return _0xc47f62[_0xc4f2('0x2a')](_0x13047c)[_0xc4f2('0x2b')]();};}function respondWithResult(_0x23a7cc,_0x34f3b2){_0x34f3b2=_0x34f3b2||0xc8;return function(_0x17011d){if(_0x17011d){return _0x23a7cc['status'](_0x34f3b2)[_0xc4f2('0x2c')](_0x17011d);}};}function respondWithFilteredResult(_0x4e3f71,_0x3c0d37){return function(_0x490fe5){if(_0x490fe5){var _0x574a12=typeof _0x3c0d37[_0xc4f2('0x2d')]===_0xc4f2('0x2e')&&typeof _0x3c0d37[_0xc4f2('0x2f')]===_0xc4f2('0x2e');var _0x55435c=_0x490fe5[_0xc4f2('0x30')];var _0x5e6d13=_0x574a12?0x0:_0x3c0d37[_0xc4f2('0x2d')];var _0x540f95=_0x574a12?_0x490fe5[_0xc4f2('0x30')]:_0x3c0d37['offset']+_0x3c0d37['limit'];var _0x5c60c2;if(_0x540f95>=_0x55435c){_0x540f95=_0x55435c;_0x5c60c2=0xc8;}else{_0x5c60c2=0xce;}_0x4e3f71[_0xc4f2('0x2a')](_0x5c60c2);return _0x4e3f71['set']('Content-Range',_0x5e6d13+'-'+_0x540f95+'/'+_0x55435c)[_0xc4f2('0x2c')](_0x490fe5);}return null;};}function patchUpdates(_0x4b6142){return function(_0x34bf83){try{jsonpatch[_0xc4f2('0x31')](_0x34bf83,_0x4b6142,!![]);}catch(_0x56a157){return BPromise[_0xc4f2('0x32')](_0x56a157);}return _0x34bf83[_0xc4f2('0x33')]();};}function saveUpdates(_0x22c417,_0x129562){return function(_0x1636d4){if(_0x1636d4){return _0x1636d4[_0xc4f2('0x34')](_0x22c417)[_0xc4f2('0x35')](function(_0x52bf7f){return _0x52bf7f;});}return null;};}function removeEntity(_0x139578,_0x4e7275){return function(_0x2bcd11){if(_0x2bcd11){return _0x2bcd11[_0xc4f2('0x36')]()[_0xc4f2('0x35')](function(){_0x139578['status'](0xcc)[_0xc4f2('0x2b')]();});}};}function handleEntityNotFound(_0x26597e,_0xfab146){return function(_0x747e11){if(!_0x747e11){_0x26597e[_0xc4f2('0x37')](0x194);}return _0x747e11;};}function handleError(_0x4caa52,_0x2204d3){_0x2204d3=_0x2204d3||0x1f4;return function(_0x2e7ca0){logger['error'](_0x2e7ca0[_0xc4f2('0x38')]);if(_0x2e7ca0[_0xc4f2('0x39')]){delete _0x2e7ca0['name'];}_0x4caa52['status'](_0x2204d3)['send'](_0x2e7ca0);};}exports[_0xc4f2('0x3a')]=function(_0x37fde2,_0x5bc45b){var _0x3cf719={},_0x50763e={},_0x224671={'count':0x0,'rows':[]};var _0x35dc08=_['map'](db[_0xc4f2('0x3b')][_0xc4f2('0x3c')],function(_0x4d8bc6){return{'name':_0x4d8bc6[_0xc4f2('0x3d')],'type':_0x4d8bc6[_0xc4f2('0x3e')][_0xc4f2('0x3f')]};});_0x50763e[_0xc4f2('0x40')]=_['map'](_0x35dc08,_0xc4f2('0x39'));_0x50763e[_0xc4f2('0x41')]=_[_0xc4f2('0x42')](_0x37fde2[_0xc4f2('0x41')]);_0x50763e['filters']=_[_0xc4f2('0x43')](_0x50763e['model'],_0x50763e[_0xc4f2('0x41')]);_0x3cf719['attributes']=_[_0xc4f2('0x43')](_0x50763e[_0xc4f2('0x40')],qs[_0xc4f2('0x44')](_0x37fde2[_0xc4f2('0x41')][_0xc4f2('0x44')]));_0x3cf719[_0xc4f2('0x45')]=_0x3cf719[_0xc4f2('0x45')][_0xc4f2('0x46')]?_0x3cf719[_0xc4f2('0x45')]:_0x50763e[_0xc4f2('0x40')];if(!_0x37fde2[_0xc4f2('0x41')][_0xc4f2('0x47')]('nolimit')){_0x3cf719[_0xc4f2('0x2f')]=qs['limit'](_0x37fde2[_0xc4f2('0x41')]['limit']);_0x3cf719['offset']=qs[_0xc4f2('0x2d')](_0x37fde2[_0xc4f2('0x41')][_0xc4f2('0x2d')]);}_0x3cf719[_0xc4f2('0x48')]=qs[_0xc4f2('0x49')](_0x37fde2[_0xc4f2('0x41')]['sort']);_0x3cf719['where']=qs[_0xc4f2('0x4a')](_[_0xc4f2('0x4b')](_0x37fde2[_0xc4f2('0x41')],_0x50763e[_0xc4f2('0x4a')]),_0x35dc08);if(_0x37fde2[_0xc4f2('0x41')]['filter']){_0x3cf719[_0xc4f2('0x4c')]=_[_0xc4f2('0x4d')](_0x3cf719[_0xc4f2('0x4c')],{'$or':_[_0xc4f2('0x4e')](_0x35dc08,function(_0x425525){if(_0x425525[_0xc4f2('0x3e')]!==_0xc4f2('0x4f')){var _0x42ba9c={};_0x42ba9c[_0x425525['name']]={'$like':'%'+_0x37fde2[_0xc4f2('0x41')][_0xc4f2('0x50')]+'%'};return _0x42ba9c;}})});}_0x3cf719=_[_0xc4f2('0x4d')]({},_0x3cf719,_0x37fde2[_0xc4f2('0x51')]);var _0x4c0ed8={'where':_0x3cf719[_0xc4f2('0x4c')]};return db[_0xc4f2('0x3b')][_0xc4f2('0x30')](_0x4c0ed8)['then'](function(_0x51cfc1){_0x224671[_0xc4f2('0x30')]=_0x51cfc1;if(_0x37fde2[_0xc4f2('0x41')][_0xc4f2('0x52')]){_0x3cf719[_0xc4f2('0x53')]=[{'all':!![]}];}return db[_0xc4f2('0x3b')]['findAll'](_0x3cf719);})[_0xc4f2('0x35')](function(_0x39f942){_0x224671[_0xc4f2('0x54')]=_0x39f942;return _0x224671;})[_0xc4f2('0x35')](respondWithFilteredResult(_0x5bc45b,_0x3cf719))[_0xc4f2('0x55')](handleError(_0x5bc45b,null));};exports[_0xc4f2('0x56')]=function(_0x3c4796,_0x87243e){var _0x29ab5d={'raw':!![],'where':{'id':_0x3c4796['params']['id']}},_0x1ebd0d={};_0x1ebd0d[_0xc4f2('0x40')]=_['keys'](db[_0xc4f2('0x3b')][_0xc4f2('0x3c')]);_0x1ebd0d['query']=_[_0xc4f2('0x42')](_0x3c4796['query']);_0x1ebd0d[_0xc4f2('0x4a')]=_[_0xc4f2('0x43')](_0x1ebd0d[_0xc4f2('0x40')],_0x1ebd0d[_0xc4f2('0x41')]);_0x29ab5d[_0xc4f2('0x45')]=_[_0xc4f2('0x43')](_0x1ebd0d[_0xc4f2('0x40')],qs[_0xc4f2('0x44')](_0x3c4796['query'][_0xc4f2('0x44')]));_0x29ab5d[_0xc4f2('0x45')]=_0x29ab5d[_0xc4f2('0x45')]['length']?_0x29ab5d[_0xc4f2('0x45')]:_0x1ebd0d[_0xc4f2('0x40')];if(_0x3c4796[_0xc4f2('0x41')][_0xc4f2('0x52')]){_0x29ab5d[_0xc4f2('0x53')]=[{'all':!![]}];}_0x29ab5d=_['merge']({},_0x29ab5d,_0x3c4796[_0xc4f2('0x51')]);return db['WhatsappMessage'][_0xc4f2('0x57')](_0x29ab5d)[_0xc4f2('0x35')](handleEntityNotFound(_0x87243e,null))['then'](respondWithResult(_0x87243e,null))[_0xc4f2('0x55')](handleError(_0x87243e,null));};exports[_0xc4f2('0x58')]=function(_0x33c82f,_0xfd312a){return db[_0xc4f2('0x3b')][_0xc4f2('0x58')](_0x33c82f['body'],{})[_0xc4f2('0x35')](respondWithResult(_0xfd312a,0xc9))[_0xc4f2('0x55')](handleError(_0xfd312a,null));};exports['update']=function(_0xaf2082,_0x2f5f77){if(_0xaf2082[_0xc4f2('0x59')]['id']){delete _0xaf2082[_0xc4f2('0x59')]['id'];}return db[_0xc4f2('0x3b')]['find']({'where':{'id':_0xaf2082[_0xc4f2('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2f5f77,null))['then'](saveUpdates(_0xaf2082[_0xc4f2('0x59')],null))[_0xc4f2('0x35')](respondWithResult(_0x2f5f77,null))[_0xc4f2('0x55')](handleError(_0x2f5f77,null));};exports['destroy']=function(_0xc7bd43,_0x18ece2){return db['WhatsappMessage'][_0xc4f2('0x57')]({'where':{'id':_0xc7bd43['params']['id']}})[_0xc4f2('0x35')](handleEntityNotFound(_0x18ece2,null))['then'](removeEntity(_0x18ece2,null))['catch'](handleError(_0x18ece2,null));};exports[_0xc4f2('0x5b')]=function(_0x443499,_0x3ce4e2){return db[_0xc4f2('0x3b')]['describe']()['then'](respondWithResult(_0x3ce4e2,null))['catch'](handleError(_0x3ce4e2,null));};var interaction_log=require('../../config/logger')(_0xc4f2('0x5c'));exports[_0xc4f2('0x5d')]=function(_0x40dab2,_0x56d174,_0x47bef0){var _0x5f5871={'agent':{},'channel':'whatsapp'};if(_0x40dab2[_0xc4f2('0x59')]['id']){delete _0x40dab2[_0xc4f2('0x59')]['id'];}_0x40dab2[_0xc4f2('0x59')][_0xc4f2('0x5e')]=!![];_0x40dab2[_0xc4f2('0x59')][_0xc4f2('0x5f')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x40dab2[_0xc4f2('0x59')][_0xc4f2('0x60')]=_0x40dab2[_0xc4f2('0x59')][_0xc4f2('0x60')]||_0x40dab2[_0xc4f2('0x61')]['id'];_0x5f5871['agent']['id']=_0x40dab2['body'][_0xc4f2('0x60')];return db[_0xc4f2('0x3b')][_0xc4f2('0x57')]({'where':{'id':_0x40dab2[_0xc4f2('0x5a')]['id'],'UserId':null}})[_0xc4f2('0x35')](handleEntityNotFound(_0x56d174,null))['then'](saveUpdates(_0x40dab2[_0xc4f2('0x59')],null))[_0xc4f2('0x35')](function(_0x5f057d){if(_0x5f057d){_0x5f5871[_0xc4f2('0x29')]=_0x5f057d[_0xc4f2('0x62')]({'plain':!![]});return db[_0xc4f2('0x63')][_0xc4f2('0x57')]({'where':{'id':_0x5f057d['WhatsappInteractionId']}});}return null;})[_0xc4f2('0x35')](handleEntityNotFound(_0x56d174,null))['then'](function(_0x10279b){if(_0x10279b){return _0x10279b['update']({'UserId':_0x40dab2['body'][_0xc4f2('0x60')],'read1stAt':_['isNil'](_0x10279b[_0xc4f2('0x64')])?moment()[_0xc4f2('0x65')](_0xc4f2('0x66')):undefined});}return null;})[_0xc4f2('0x35')](function(_0x296793){if(_0x296793){_0x5f5871[_0xc4f2('0x67')]=_0x296793[_0xc4f2('0x62')]({'plain':!![]});interaction_log[_0xc4f2('0x22')](_0xc4f2('0x68'),_0x40dab2[_0xc4f2('0x61')]['id'],_0x40dab2[_0xc4f2('0x61')][_0xc4f2('0x39')],_0x40dab2[_0xc4f2('0x61')][_0xc4f2('0x69')],_0x5f5871[_0xc4f2('0x67')]['id'],_0x40dab2[_0xc4f2('0x59')]?JSON[_0xc4f2('0x27')](_0x40dab2['body']):_0xc4f2('0x6a'));return respondWithRpcPromise(_0xc4f2('0x6b'),_0xc4f2('0x6c'),_0x5f5871);}return null;})[_0xc4f2('0x35')](function(_0x585ca5){var _0x510c42=_0xc4f2('0x6d')+_0x585ca5['message'][_0xc4f2('0x6e')];return db[_0xc4f2('0x6f')][_0xc4f2('0x41')](_0x510c42,{'type':db[_0xc4f2('0x70')][_0xc4f2('0x71')]['SELECT'],'raw':!![]})[_0xc4f2('0x35')](function(_0x5ecc35){return _0x5ecc35;});})[_0xc4f2('0x35')](function(_0x4e0c97){if(_0x4e0c97){_0x5f5871[_0xc4f2('0x29')]['contact']=_0x4e0c97[0x0];if(!_0x40dab2[_0xc4f2('0x59')]['UserId'])return;return db[_0xc4f2('0x72')][_0xc4f2('0x57')]({'where':{'id':_0x40dab2['body'][_0xc4f2('0x60')],'role':_0xc4f2('0x73')},'attributes':['id',_0xc4f2('0x39'),_0xc4f2('0x74'),'email','internal'],'raw':!![]});}return null;})[_0xc4f2('0x35')](function(_0xde165){if(!_0xde165)return null;_0x5f5871[_0xc4f2('0x29')][_0xc4f2('0x73')]=_0xde165;return _0x5f5871;})['then'](function(_0x258428){if(_0x258428){if(_0x40dab2[_0xc4f2('0x59')]['manual']){_0x5f5871[_0xc4f2('0x29')][_0xc4f2('0x75')]=util[_0xc4f2('0x65')](_0xc4f2('0x76'),_0x40dab2[_0xc4f2('0x61')][_0xc4f2('0x39')]);_0x5f5871[_0xc4f2('0x29')][_0xc4f2('0x77')]=_0x5f5871[_0xc4f2('0x77')];_0x5f5871[_0xc4f2('0x29')]['motionChannel']=_0x5f5871[_0xc4f2('0x77')];_0x5f5871['message'][_0xc4f2('0x78')]=_0xc4f2('0x5d');return respondWithRpcPromise(_0xc4f2('0x79'),_0xc4f2('0x79'),{'event':_0xc4f2('0x7a'),'message':_0x5f5871['message']},client9002)[_0xc4f2('0x35')](function(){return _0x5f5871;});}return _0x5f5871;}return null;})[_0xc4f2('0x35')](respondWithResult(_0x56d174,null))[_0xc4f2('0x55')](handleError(_0x56d174,null));};var interaction_log=require(_0xc4f2('0x7b'))(_0xc4f2('0x5c'));exports['reject']=function(_0x4087c5,_0x5bdeed,_0x2c8040){var _0x345428={'agent':{},'channel':_0xc4f2('0x7c')};if(_0x4087c5['body']['id']){delete _0x4087c5[_0xc4f2('0x59')]['id'];}_0x4087c5['body'][_0xc4f2('0x60')]=_0x4087c5[_0xc4f2('0x59')][_0xc4f2('0x60')]||_0x4087c5[_0xc4f2('0x61')]['id'];_0x345428[_0xc4f2('0x73')]['id']=_0x4087c5[_0xc4f2('0x59')][_0xc4f2('0x60')];return db[_0xc4f2('0x3b')][_0xc4f2('0x57')]({'where':{'id':_0x4087c5[_0xc4f2('0x5a')]['id'],'UserId':null}})[_0xc4f2('0x35')](handleEntityNotFound(_0x5bdeed,null))[_0xc4f2('0x35')](function(_0x4e5446){if(_0x4e5446){_0x345428[_0xc4f2('0x29')]=_0x4e5446[_0xc4f2('0x62')]({'plain':!![]});return db['WhatsappInteraction'][_0xc4f2('0x57')]({'where':{'id':_0x4e5446[_0xc4f2('0x7d')]}});}return null;})[_0xc4f2('0x35')](handleEntityNotFound(_0x5bdeed,null))[_0xc4f2('0x35')](function(_0xd00943){if(_0xd00943){_0x345428[_0xc4f2('0x67')]=_0xd00943[_0xc4f2('0x62')]({'plain':!![]});interaction_log[_0xc4f2('0x22')](_0xc4f2('0x7e'),_0x4087c5[_0xc4f2('0x61')]['id'],_0x4087c5[_0xc4f2('0x61')][_0xc4f2('0x39')],_0x4087c5['user'][_0xc4f2('0x69')],_0x345428[_0xc4f2('0x67')]['id'],_0x4087c5[_0xc4f2('0x59')]?JSON[_0xc4f2('0x27')](_0x4087c5[_0xc4f2('0x59')]):_0xc4f2('0x6a'));return respondWithRpcPromise('RejectMessage','rejectMessage',_0x345428);}return null;})[_0xc4f2('0x35')](function(_0x236e3c){var _0xa34e7=_0xc4f2('0x6d')+_0x236e3c[_0xc4f2('0x29')]['ContactId'];return db[_0xc4f2('0x6f')][_0xc4f2('0x41')](_0xa34e7,{'type':db[_0xc4f2('0x70')]['QueryTypes'][_0xc4f2('0x7f')],'raw':!![]})[_0xc4f2('0x35')](function(_0x23a548){return _0x23a548;});})[_0xc4f2('0x35')](function(_0x427f5a){if(_0x427f5a){_0x345428[_0xc4f2('0x29')][_0xc4f2('0x80')]=_0x427f5a[0x0];if(!_0x4087c5[_0xc4f2('0x59')]['UserId'])return;return db[_0xc4f2('0x72')][_0xc4f2('0x57')]({'where':{'id':_0x4087c5['body']['UserId'],'role':'agent'},'attributes':['id',_0xc4f2('0x39'),'fullname','email','internal'],'raw':!![]});}return null;})[_0xc4f2('0x35')](function(_0x4b0357){if(!_0x4b0357)return null;_0x345428['message'][_0xc4f2('0x73')]=_0x4b0357;return _0x345428;})['then'](function(_0x61ffcd){if(_0x61ffcd){_0x61ffcd[_0xc4f2('0x29')][_0xc4f2('0x75')]=util[_0xc4f2('0x65')](_0xc4f2('0x76'),_0x4087c5[_0xc4f2('0x61')][_0xc4f2('0x39')]);_0x61ffcd[_0xc4f2('0x29')]['channel']=_0x345428['channel'];_0x61ffcd['message'][_0xc4f2('0x81')]=_0x345428[_0xc4f2('0x77')];_0x61ffcd[_0xc4f2('0x29')][_0xc4f2('0x78')]=_0xc4f2('0x32');respondWithRpcPromise(_0xc4f2('0x79'),_0xc4f2('0x79'),{'event':_0xc4f2('0x82'),'message':_0x61ffcd['message']},client9002);return _0x345428;}return null;})['then'](respondWithResult(_0x5bdeed,null))[_0xc4f2('0x55')](handleError(_0x5bdeed,null));};exports['status']=function(_0x38e763,_0x20cae3,_0x408b2d){if(_0x38e763[_0xc4f2('0x59')]['id']){delete _0x38e763['body']['id'];}var _0x3ccdf8;return db['WhatsappMessage'][_0xc4f2('0x57')]({'where':{'id':_0x38e763[_0xc4f2('0x5a')]['id']}})[_0xc4f2('0x35')](handleEntityNotFound(_0x20cae3,null))[_0xc4f2('0x35')](function(_0x5e802a){if(_0x5e802a){_0x3ccdf8=_0x5e802a;return db[_0xc4f2('0x83')]['find']({'where':{'id':_0x5e802a[_0xc4f2('0x84')]}});}})[_0xc4f2('0x35')](handleEntityNotFound(_0x20cae3,null))['then'](function(_0x352b9f){if(_0x352b9f){logger[_0xc4f2('0x25')](_0xc4f2('0x85'),'status','received\x20delivery\x20report\x20from',_0x352b9f[_0xc4f2('0x3e')],util[_0xc4f2('0x86')](_0x38e763[_0xc4f2('0x59')],{'showHidden':![],'depth':null}));switch(_0x352b9f['type']){case _0xc4f2('0x87'):if(_0x38e763[_0xc4f2('0x59')][_0xc4f2('0x88')]&&_0x38e763['body'][_0xc4f2('0x88')]===_0x3ccdf8[_0xc4f2('0x89')]&&_0x38e763['body']['MessageStatus']&&_0x38e763[_0xc4f2('0x59')][_0xc4f2('0x8a')]===_0xc4f2('0x5e')){return _0x3ccdf8[_0xc4f2('0x34')]({'read':!![]});}else{logger[_0xc4f2('0x28')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0xc4f2('0x2a'),_0xc4f2('0x87'),util[_0xc4f2('0x86')](_0x38e763[_0xc4f2('0x59')],{'showHidden':![],'depth':null}));}break;}return _0x3ccdf8;}})[_0xc4f2('0x35')](respondWithResult(_0x20cae3,null))['catch'](handleError(_0x20cae3,null));};
\ No newline at end of file
+var _0xae50=['zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappMessage.socket','register','client','http','request','WhatsappMessage,\x20%s,\x20%s','debug','stringify','error','code','message','info','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','destroy','then','name','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','nolimit','order','sort','where','pick','filter','merge','includeAll','include','findAll','rows','catch','params','WhatsappMessage','fields','length','options','find','create','body','describe','whatsapp-interactions','whatsapp','read','readAt','YYYY-MM-DD\x20HH:mm:ss','user','agent','get','WhatsappInteraction','UserId','isNil','read1stAt','format','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','ContactId','Sequelize','QueryTypes','SELECT','contact','email','internal','interface','channel','motionChannel','event','accept','EventManager','WhatsappInteractionId','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','User','rejectmessage','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','twilio','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','inspect','eml-format','rimraf'];(function(_0x173d7e,_0x3242fd){var _0x2220d6=function(_0x462828){while(--_0x462828){_0x173d7e['push'](_0x173d7e['shift']());}};_0x2220d6(++_0x3242fd);}(_0xae50,0x88));var _0x0ae5=function(_0x48a96f,_0x530059){_0x48a96f=_0x48a96f-0x0;var _0x3ff3ef=_0xae50[_0x48a96f];return _0x3ff3ef;};'use strict';var emlformat=require(_0x0ae5('0x0'));var rimraf=require(_0x0ae5('0x1'));var zipdir=require(_0x0ae5('0x2'));var jsonpatch=require(_0x0ae5('0x3'));var rp=require(_0x0ae5('0x4'));var moment=require('moment');var BPromise=require(_0x0ae5('0x5'));var Mustache=require('mustache');var util=require(_0x0ae5('0x6'));var path=require(_0x0ae5('0x7'));var sox=require(_0x0ae5('0x8'));var csv=require(_0x0ae5('0x9'));var ejs=require(_0x0ae5('0xa'));var fs=require('fs');var fs_extra=require(_0x0ae5('0xb'));var _=require(_0x0ae5('0xc'));var squel=require(_0x0ae5('0xd'));var crypto=require(_0x0ae5('0xe'));var jsforce=require(_0x0ae5('0xf'));var deskjs=require(_0x0ae5('0x10'));var toCsv=require(_0x0ae5('0x9'));var querystring=require('querystring');var Papa=require(_0x0ae5('0x11'));var Redis=require(_0x0ae5('0x12'));var authService=require(_0x0ae5('0x13'));var qs=require(_0x0ae5('0x14'));var as=require(_0x0ae5('0x15'));var hardwareService=require(_0x0ae5('0x16'));var logger=require(_0x0ae5('0x17'))(_0x0ae5('0x18'));var utils=require(_0x0ae5('0x19'));var config=require(_0x0ae5('0x1a'));var licenseUtil=require(_0x0ae5('0x1b'));var db=require(_0x0ae5('0x1c'))['db'];config['redis']=_['defaults'](config[_0x0ae5('0x1d')],{'host':_0x0ae5('0x1e'),'port':0x18eb});var socket=require(_0x0ae5('0x1f'))(new Redis(config['redis']));require(_0x0ae5('0x20'))[_0x0ae5('0x21')](socket);var jayson=require('jayson/promise');var client=jayson[_0x0ae5('0x22')]['http']({'port':0x232c});var client9002=jayson[_0x0ae5('0x22')][_0x0ae5('0x23')]({'port':0x232a});function respondWithRpcPromise(_0x42aa19,_0x16352e,_0xc1aec0,_0x5489c1){return new BPromise(function(_0x4c3909,_0x601ac9){var _0x336ce9=_0x5489c1||client;return _0x336ce9[_0x0ae5('0x24')](_0x42aa19,_0xc1aec0)['then'](function(_0x57d72f){logger['info'](_0x0ae5('0x25'),_0x16352e,'request\x20sent');logger[_0x0ae5('0x26')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x16352e,'request\x20sent',JSON[_0x0ae5('0x27')](_0x57d72f));if(_0x57d72f['error']){if(_0x57d72f[_0x0ae5('0x28')][_0x0ae5('0x29')]===0x1f4){logger['error'](_0x0ae5('0x25'),_0x16352e,_0x57d72f[_0x0ae5('0x28')][_0x0ae5('0x2a')]);return _0x601ac9(_0x57d72f[_0x0ae5('0x28')][_0x0ae5('0x2a')]);}logger[_0x0ae5('0x28')](_0x0ae5('0x25'),_0x16352e,_0x57d72f[_0x0ae5('0x28')][_0x0ae5('0x2a')]);return _0x4c3909(_0x57d72f['error']['message']);}else{logger[_0x0ae5('0x2b')]('WhatsappMessage,\x20%s,\x20%s',_0x16352e,'request\x20sent');_0x4c3909(_0x57d72f['result'][_0x0ae5('0x2a')]);}})['catch'](function(_0x48dd45){logger[_0x0ae5('0x28')](_0x0ae5('0x25'),_0x16352e,_0x48dd45);_0x601ac9(_0x48dd45);});});}function respondWithStatusCode(_0x2e5d6e,_0x2701d0){_0x2701d0=_0x2701d0||0xcc;return function(_0x2670d8){if(_0x2670d8){return _0x2e5d6e[_0x0ae5('0x2c')](_0x2701d0);}return _0x2e5d6e[_0x0ae5('0x2d')](_0x2701d0)[_0x0ae5('0x2e')]();};}function respondWithResult(_0x2615ed,_0x46916c){_0x46916c=_0x46916c||0xc8;return function(_0x4ef2e1){if(_0x4ef2e1){return _0x2615ed[_0x0ae5('0x2d')](_0x46916c)[_0x0ae5('0x2f')](_0x4ef2e1);}};}function respondWithFilteredResult(_0x451092,_0x2497df){return function(_0x250eb6){if(_0x250eb6){var _0x3c5f84=typeof _0x2497df[_0x0ae5('0x30')]===_0x0ae5('0x31')&&typeof _0x2497df[_0x0ae5('0x32')]==='undefined';var _0x436c3f=_0x250eb6[_0x0ae5('0x33')];var _0x546fa6=_0x3c5f84?0x0:_0x2497df[_0x0ae5('0x30')];var _0x16576a=_0x3c5f84?_0x250eb6['count']:_0x2497df[_0x0ae5('0x30')]+_0x2497df[_0x0ae5('0x32')];var _0xb3f847;if(_0x16576a>=_0x436c3f){_0x16576a=_0x436c3f;_0xb3f847=0xc8;}else{_0xb3f847=0xce;}_0x451092[_0x0ae5('0x2d')](_0xb3f847);return _0x451092['set'](_0x0ae5('0x34'),_0x546fa6+'-'+_0x16576a+'/'+_0x436c3f)['json'](_0x250eb6);}return null;};}function patchUpdates(_0x201c6c){return function(_0xf92062){try{jsonpatch[_0x0ae5('0x35')](_0xf92062,_0x201c6c,!![]);}catch(_0x444839){return BPromise[_0x0ae5('0x36')](_0x444839);}return _0xf92062['save']();};}function saveUpdates(_0x281867,_0x1ec18f){return function(_0x3c2ac3){if(_0x3c2ac3){return _0x3c2ac3[_0x0ae5('0x37')](_0x281867)['then'](function(_0xf6d96e){return _0xf6d96e;});}return null;};}function removeEntity(_0x3705f6,_0x4ab708){return function(_0x3bb653){if(_0x3bb653){return _0x3bb653[_0x0ae5('0x38')]()[_0x0ae5('0x39')](function(){_0x3705f6[_0x0ae5('0x2d')](0xcc)[_0x0ae5('0x2e')]();});}};}function handleEntityNotFound(_0x2f5e49,_0x204d18){return function(_0x570e2f){if(!_0x570e2f){_0x2f5e49[_0x0ae5('0x2c')](0x194);}return _0x570e2f;};}function handleError(_0x53c209,_0x161e5f){_0x161e5f=_0x161e5f||0x1f4;return function(_0x448b88){logger[_0x0ae5('0x28')](_0x448b88['stack']);if(_0x448b88[_0x0ae5('0x3a')]){delete _0x448b88['name'];}_0x53c209['status'](_0x161e5f)['send'](_0x448b88);};}exports['index']=function(_0x1fa284,_0xe5506){var _0x263aa7={},_0x4fb4a6={},_0x19d13e={'count':0x0,'rows':[]};var _0x1fe9ce=_[_0x0ae5('0x3b')](db['WhatsappMessage'][_0x0ae5('0x3c')],function(_0x3a3bf5){return{'name':_0x3a3bf5[_0x0ae5('0x3d')],'type':_0x3a3bf5[_0x0ae5('0x3e')][_0x0ae5('0x3f')]};});_0x4fb4a6[_0x0ae5('0x40')]=_[_0x0ae5('0x3b')](_0x1fe9ce,_0x0ae5('0x3a'));_0x4fb4a6[_0x0ae5('0x41')]=_[_0x0ae5('0x42')](_0x1fa284[_0x0ae5('0x41')]);_0x4fb4a6[_0x0ae5('0x43')]=_[_0x0ae5('0x44')](_0x4fb4a6[_0x0ae5('0x40')],_0x4fb4a6[_0x0ae5('0x41')]);_0x263aa7[_0x0ae5('0x45')]=_['intersection'](_0x4fb4a6[_0x0ae5('0x40')],qs['fields'](_0x1fa284['query']['fields']));_0x263aa7[_0x0ae5('0x45')]=_0x263aa7[_0x0ae5('0x45')]['length']?_0x263aa7[_0x0ae5('0x45')]:_0x4fb4a6[_0x0ae5('0x40')];if(!_0x1fa284[_0x0ae5('0x41')]['hasOwnProperty'](_0x0ae5('0x46'))){_0x263aa7['limit']=qs[_0x0ae5('0x32')](_0x1fa284['query'][_0x0ae5('0x32')]);_0x263aa7[_0x0ae5('0x30')]=qs[_0x0ae5('0x30')](_0x1fa284[_0x0ae5('0x41')][_0x0ae5('0x30')]);}_0x263aa7[_0x0ae5('0x47')]=qs[_0x0ae5('0x48')](_0x1fa284[_0x0ae5('0x41')][_0x0ae5('0x48')]);_0x263aa7[_0x0ae5('0x49')]=qs['filters'](_[_0x0ae5('0x4a')](_0x1fa284['query'],_0x4fb4a6[_0x0ae5('0x43')]),_0x1fe9ce);if(_0x1fa284[_0x0ae5('0x41')][_0x0ae5('0x4b')]){_0x263aa7['where']=_[_0x0ae5('0x4c')](_0x263aa7[_0x0ae5('0x49')],{'$or':_[_0x0ae5('0x3b')](_0x1fe9ce,function(_0x552576){if(_0x552576[_0x0ae5('0x3e')]!=='VIRTUAL'){var _0x5afeb1={};_0x5afeb1[_0x552576['name']]={'$like':'%'+_0x1fa284[_0x0ae5('0x41')][_0x0ae5('0x4b')]+'%'};return _0x5afeb1;}})});}_0x263aa7=_[_0x0ae5('0x4c')]({},_0x263aa7,_0x1fa284['options']);var _0x601da5={'where':_0x263aa7[_0x0ae5('0x49')]};return db['WhatsappMessage'][_0x0ae5('0x33')](_0x601da5)['then'](function(_0x4c2bee){_0x19d13e[_0x0ae5('0x33')]=_0x4c2bee;if(_0x1fa284[_0x0ae5('0x41')][_0x0ae5('0x4d')]){_0x263aa7[_0x0ae5('0x4e')]=[{'all':!![]}];}return db['WhatsappMessage'][_0x0ae5('0x4f')](_0x263aa7);})[_0x0ae5('0x39')](function(_0x423fc8){_0x19d13e[_0x0ae5('0x50')]=_0x423fc8;return _0x19d13e;})[_0x0ae5('0x39')](respondWithFilteredResult(_0xe5506,_0x263aa7))[_0x0ae5('0x51')](handleError(_0xe5506,null));};exports['show']=function(_0x305467,_0x14e316){var _0x572db1={'raw':!![],'where':{'id':_0x305467[_0x0ae5('0x52')]['id']}},_0x1f3d18={};_0x1f3d18['model']=_[_0x0ae5('0x42')](db[_0x0ae5('0x53')][_0x0ae5('0x3c')]);_0x1f3d18[_0x0ae5('0x41')]=_[_0x0ae5('0x42')](_0x305467[_0x0ae5('0x41')]);_0x1f3d18[_0x0ae5('0x43')]=_[_0x0ae5('0x44')](_0x1f3d18['model'],_0x1f3d18[_0x0ae5('0x41')]);_0x572db1['attributes']=_['intersection'](_0x1f3d18[_0x0ae5('0x40')],qs[_0x0ae5('0x54')](_0x305467[_0x0ae5('0x41')]['fields']));_0x572db1[_0x0ae5('0x45')]=_0x572db1[_0x0ae5('0x45')][_0x0ae5('0x55')]?_0x572db1[_0x0ae5('0x45')]:_0x1f3d18[_0x0ae5('0x40')];if(_0x305467[_0x0ae5('0x41')][_0x0ae5('0x4d')]){_0x572db1['include']=[{'all':!![]}];}_0x572db1=_[_0x0ae5('0x4c')]({},_0x572db1,_0x305467[_0x0ae5('0x56')]);return db['WhatsappMessage'][_0x0ae5('0x57')](_0x572db1)[_0x0ae5('0x39')](handleEntityNotFound(_0x14e316,null))[_0x0ae5('0x39')](respondWithResult(_0x14e316,null))[_0x0ae5('0x51')](handleError(_0x14e316,null));};exports[_0x0ae5('0x58')]=function(_0x24e06f,_0xaab746){return db[_0x0ae5('0x53')][_0x0ae5('0x58')](_0x24e06f['body'],{})[_0x0ae5('0x39')](respondWithResult(_0xaab746,0xc9))[_0x0ae5('0x51')](handleError(_0xaab746,null));};exports['update']=function(_0x22bbab,_0x300c50){if(_0x22bbab[_0x0ae5('0x59')]['id']){delete _0x22bbab[_0x0ae5('0x59')]['id'];}return db[_0x0ae5('0x53')]['find']({'where':{'id':_0x22bbab[_0x0ae5('0x52')]['id']}})['then'](handleEntityNotFound(_0x300c50,null))[_0x0ae5('0x39')](saveUpdates(_0x22bbab['body'],null))[_0x0ae5('0x39')](respondWithResult(_0x300c50,null))[_0x0ae5('0x51')](handleError(_0x300c50,null));};exports[_0x0ae5('0x38')]=function(_0x36fbe0,_0x4cdcc1){return db[_0x0ae5('0x53')][_0x0ae5('0x57')]({'where':{'id':_0x36fbe0[_0x0ae5('0x52')]['id']}})[_0x0ae5('0x39')](handleEntityNotFound(_0x4cdcc1,null))[_0x0ae5('0x39')](removeEntity(_0x4cdcc1,null))[_0x0ae5('0x51')](handleError(_0x4cdcc1,null));};exports['describe']=function(_0x113c7a,_0x1faa13){return db['WhatsappMessage'][_0x0ae5('0x5a')]()[_0x0ae5('0x39')](respondWithResult(_0x1faa13,null))[_0x0ae5('0x51')](handleError(_0x1faa13,null));};var interaction_log=require('../../config/logger')(_0x0ae5('0x5b'));exports['accept']=function(_0x6be8b1,_0x2a0faa,_0x3b7acf){var _0x79a571={'agent':{},'channel':_0x0ae5('0x5c')};if(_0x6be8b1['body']['id']){delete _0x6be8b1[_0x0ae5('0x59')]['id'];}_0x6be8b1['body'][_0x0ae5('0x5d')]=!![];_0x6be8b1[_0x0ae5('0x59')][_0x0ae5('0x5e')]=moment()['format'](_0x0ae5('0x5f'));_0x6be8b1[_0x0ae5('0x59')]['UserId']=_0x6be8b1[_0x0ae5('0x59')]['UserId']||_0x6be8b1[_0x0ae5('0x60')]['id'];_0x79a571[_0x0ae5('0x61')]['id']=_0x6be8b1[_0x0ae5('0x59')]['UserId'];return db[_0x0ae5('0x53')][_0x0ae5('0x57')]({'where':{'id':_0x6be8b1[_0x0ae5('0x52')]['id'],'UserId':null}})[_0x0ae5('0x39')](handleEntityNotFound(_0x2a0faa,null))[_0x0ae5('0x39')](saveUpdates(_0x6be8b1[_0x0ae5('0x59')],null))[_0x0ae5('0x39')](function(_0x5186eb){if(_0x5186eb){_0x79a571[_0x0ae5('0x2a')]=_0x5186eb[_0x0ae5('0x62')]({'plain':!![]});return db[_0x0ae5('0x63')][_0x0ae5('0x57')]({'where':{'id':_0x5186eb['WhatsappInteractionId']}});}return null;})[_0x0ae5('0x39')](handleEntityNotFound(_0x2a0faa,null))[_0x0ae5('0x39')](function(_0x2396f2){if(_0x2396f2){return _0x2396f2[_0x0ae5('0x37')]({'UserId':_0x6be8b1[_0x0ae5('0x59')][_0x0ae5('0x64')],'read1stAt':_[_0x0ae5('0x65')](_0x2396f2[_0x0ae5('0x66')])?moment()[_0x0ae5('0x67')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x0ae5('0x39')](function(_0xb0ca1a){if(_0xb0ca1a){_0x79a571[_0x0ae5('0x68')]=_0xb0ca1a['get']({'plain':!![]});interaction_log['info'](_0x0ae5('0x69'),_0x6be8b1['user']['id'],_0x6be8b1[_0x0ae5('0x60')][_0x0ae5('0x3a')],_0x6be8b1[_0x0ae5('0x60')][_0x0ae5('0x6a')],_0x79a571[_0x0ae5('0x68')]['id'],_0x6be8b1[_0x0ae5('0x59')]?JSON[_0x0ae5('0x27')](_0x6be8b1[_0x0ae5('0x59')]):_0x0ae5('0x6b'));return respondWithRpcPromise(_0x0ae5('0x6c'),'acceptMessage',_0x79a571);}return null;})[_0x0ae5('0x39')](function(_0x38e34e){var _0x3d2362='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x38e34e[_0x0ae5('0x2a')][_0x0ae5('0x6d')];return db['sequelize'][_0x0ae5('0x41')](_0x3d2362,{'type':db[_0x0ae5('0x6e')][_0x0ae5('0x6f')][_0x0ae5('0x70')],'raw':!![]})['then'](function(_0x1acf58){return _0x1acf58;});})['then'](function(_0x4951ee){if(_0x4951ee){_0x79a571['message'][_0x0ae5('0x71')]=_0x4951ee[0x0];if(!_0x6be8b1[_0x0ae5('0x59')][_0x0ae5('0x64')])return;return db['User'][_0x0ae5('0x57')]({'where':{'id':_0x6be8b1['body'][_0x0ae5('0x64')],'role':_0x0ae5('0x61')},'attributes':['id',_0x0ae5('0x3a'),'fullname',_0x0ae5('0x72'),_0x0ae5('0x73')],'raw':!![]});}return null;})[_0x0ae5('0x39')](function(_0x4ae90c){if(!_0x4ae90c)return null;_0x79a571['message']['agent']=_0x4ae90c;return _0x79a571;})[_0x0ae5('0x39')](function(_0x21b8d5){if(_0x21b8d5){if(_0x6be8b1[_0x0ae5('0x59')]['manual']){_0x79a571[_0x0ae5('0x2a')][_0x0ae5('0x74')]=util[_0x0ae5('0x67')]('SIP/%s',_0x6be8b1['user'][_0x0ae5('0x3a')]);_0x79a571['message'][_0x0ae5('0x75')]=_0x79a571['channel'];_0x79a571[_0x0ae5('0x2a')][_0x0ae5('0x76')]=_0x79a571[_0x0ae5('0x75')];_0x79a571[_0x0ae5('0x2a')][_0x0ae5('0x77')]=_0x0ae5('0x78');return respondWithRpcPromise(_0x0ae5('0x79'),_0x0ae5('0x79'),{'event':'acceptmessage','message':_0x79a571['message']},client9002)[_0x0ae5('0x39')](function(){return _0x79a571;});}return _0x79a571;}return null;})[_0x0ae5('0x39')](respondWithResult(_0x2a0faa,null))[_0x0ae5('0x51')](handleError(_0x2a0faa,null));};var interaction_log=require(_0x0ae5('0x17'))(_0x0ae5('0x5b'));exports[_0x0ae5('0x36')]=function(_0x19d40c,_0x56d41c,_0x127b93){var _0x36a7a7={'agent':{},'channel':_0x0ae5('0x5c')};if(_0x19d40c[_0x0ae5('0x59')]['id']){delete _0x19d40c[_0x0ae5('0x59')]['id'];}_0x19d40c[_0x0ae5('0x59')][_0x0ae5('0x64')]=_0x19d40c[_0x0ae5('0x59')]['UserId']||_0x19d40c['user']['id'];_0x36a7a7['agent']['id']=_0x19d40c[_0x0ae5('0x59')][_0x0ae5('0x64')];return db[_0x0ae5('0x53')][_0x0ae5('0x57')]({'where':{'id':_0x19d40c[_0x0ae5('0x52')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x56d41c,null))[_0x0ae5('0x39')](function(_0xaadbb9){if(_0xaadbb9){_0x36a7a7[_0x0ae5('0x2a')]=_0xaadbb9[_0x0ae5('0x62')]({'plain':!![]});return db[_0x0ae5('0x63')]['find']({'where':{'id':_0xaadbb9[_0x0ae5('0x7a')]}});}return null;})['then'](handleEntityNotFound(_0x56d41c,null))[_0x0ae5('0x39')](function(_0x15150c){if(_0x15150c){_0x36a7a7[_0x0ae5('0x68')]=_0x15150c[_0x0ae5('0x62')]({'plain':!![]});interaction_log['info'](_0x0ae5('0x7b'),_0x19d40c[_0x0ae5('0x60')]['id'],_0x19d40c['user'][_0x0ae5('0x3a')],_0x19d40c['user'][_0x0ae5('0x6a')],_0x36a7a7['interaction']['id'],_0x19d40c[_0x0ae5('0x59')]?JSON['stringify'](_0x19d40c[_0x0ae5('0x59')]):_0x0ae5('0x6b'));return respondWithRpcPromise(_0x0ae5('0x7c'),_0x0ae5('0x7d'),_0x36a7a7);}return null;})['then'](function(_0x340334){var _0x4bc0f9=_0x0ae5('0x7e')+_0x340334['message'][_0x0ae5('0x6d')];return db[_0x0ae5('0x7f')][_0x0ae5('0x41')](_0x4bc0f9,{'type':db['Sequelize']['QueryTypes'][_0x0ae5('0x70')],'raw':!![]})[_0x0ae5('0x39')](function(_0x2d71a1){return _0x2d71a1;});})[_0x0ae5('0x39')](function(_0x21acc2){if(_0x21acc2){_0x36a7a7[_0x0ae5('0x2a')][_0x0ae5('0x71')]=_0x21acc2[0x0];if(!_0x19d40c[_0x0ae5('0x59')][_0x0ae5('0x64')])return;return db[_0x0ae5('0x80')][_0x0ae5('0x57')]({'where':{'id':_0x19d40c[_0x0ae5('0x59')]['UserId'],'role':_0x0ae5('0x61')},'attributes':['id',_0x0ae5('0x3a'),'fullname',_0x0ae5('0x72'),_0x0ae5('0x73')],'raw':!![]});}return null;})['then'](function(_0x482832){if(!_0x482832)return null;_0x36a7a7[_0x0ae5('0x2a')][_0x0ae5('0x61')]=_0x482832;return _0x36a7a7;})['then'](function(_0x923d8f){if(_0x923d8f){_0x923d8f[_0x0ae5('0x2a')][_0x0ae5('0x74')]=util[_0x0ae5('0x67')]('SIP/%s',_0x19d40c[_0x0ae5('0x60')][_0x0ae5('0x3a')]);_0x923d8f[_0x0ae5('0x2a')][_0x0ae5('0x75')]=_0x36a7a7[_0x0ae5('0x75')];_0x923d8f[_0x0ae5('0x2a')][_0x0ae5('0x76')]=_0x36a7a7[_0x0ae5('0x75')];_0x923d8f[_0x0ae5('0x2a')][_0x0ae5('0x77')]=_0x0ae5('0x36');respondWithRpcPromise('EventManager','EventManager',{'event':_0x0ae5('0x81'),'message':_0x923d8f[_0x0ae5('0x2a')]},client9002);return _0x36a7a7;}return null;})[_0x0ae5('0x39')](respondWithResult(_0x56d41c,null))[_0x0ae5('0x51')](handleError(_0x56d41c,null));};exports[_0x0ae5('0x2d')]=function(_0x3927b3,_0x563739,_0x27812b){if(_0x3927b3['body']['id']){delete _0x3927b3[_0x0ae5('0x59')]['id'];}var _0x49b7ae;return db['WhatsappMessage']['find']({'where':{'id':_0x3927b3[_0x0ae5('0x52')]['id']}})[_0x0ae5('0x39')](handleEntityNotFound(_0x563739,null))['then'](function(_0x336273){if(_0x336273){_0x49b7ae=_0x336273;return db['WhatsappAccount']['find']({'where':{'id':_0x336273[_0x0ae5('0x82')]}});}})['then'](handleEntityNotFound(_0x563739,null))[_0x0ae5('0x39')](function(_0x3149a8){if(_0x3149a8){logger[_0x0ae5('0x26')](_0x0ae5('0x83'),_0x0ae5('0x2d'),'received\x20delivery\x20report\x20from',_0x3149a8[_0x0ae5('0x3e')],util['inspect'](_0x3927b3['body'],{'showHidden':![],'depth':null}));switch(_0x3149a8[_0x0ae5('0x3e')]){case _0x0ae5('0x84'):if(_0x3927b3['body']['MessageSid']&&_0x3927b3[_0x0ae5('0x59')][_0x0ae5('0x85')]===_0x49b7ae[_0x0ae5('0x86')]&&_0x3927b3[_0x0ae5('0x59')][_0x0ae5('0x87')]&&_0x3927b3[_0x0ae5('0x59')][_0x0ae5('0x87')]===_0x0ae5('0x5d')){return _0x49b7ae[_0x0ae5('0x37')]({'read':!![]});}else{logger[_0x0ae5('0x28')](_0x0ae5('0x88'),_0x0ae5('0x2d'),_0x0ae5('0x84'),util[_0x0ae5('0x89')](_0x3927b3[_0x0ae5('0x59')],{'showHidden':![],'depth':null}));}break;}return _0x49b7ae;}})['then'](respondWithResult(_0x563739,null))[_0x0ae5('0x51')](handleError(_0x563739,null));};
\ No newline at end of file
index b86c27a..e948d86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd52d=['WhatsappMessage','save','emit','hasOwnProperty','hook','../../mysqldb'];(function(_0x376b45,_0x5964fb){var _0x2341b3=function(_0x5a7f01){while(--_0x5a7f01){_0x376b45['push'](_0x376b45['shift']());}};_0x2341b3(++_0x5964fb);}(_0xd52d,0x1c7));var _0xdd52=function(_0x374d03,_0x909956){_0x374d03=_0x374d03-0x0;var _0x521bfc=_0xd52d[_0x374d03];return _0x521bfc;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require(_0xdd52('0x0'))['db'][_0xdd52('0x1')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xdd52('0x2'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x1dfed5){return function(_0x211062,_0x30fb04,_0x29a95e){WhatsappMessageEvents[_0xdd52('0x3')](_0x1dfed5+':'+_0x211062['id'],_0x211062);WhatsappMessageEvents[_0xdd52('0x3')](_0x1dfed5,_0x211062);_0x29a95e(null);};}for(var e in events){if(events[_0xdd52('0x4')](e)){var event=events[e];WhatsappMessage[_0xdd52('0x5')](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
+var _0x6599=['hasOwnProperty','../../mysqldb','WhatsappMessage','setMaxListeners','save','update','emit'];(function(_0x4dc673,_0x27b9a3){var _0x11425=function(_0x25e43c){while(--_0x25e43c){_0x4dc673['push'](_0x4dc673['shift']());}};_0x11425(++_0x27b9a3);}(_0x6599,0xb0));var _0x9659=function(_0x1cfc39,_0x1d3913){_0x1cfc39=_0x1cfc39-0x0;var _0x957a28=_0x6599[_0x1cfc39];return _0x957a28;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require(_0x9659('0x0'))['db'][_0x9659('0x1')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x9659('0x2')](0x0);var events={'afterCreate':_0x9659('0x3'),'afterUpdate':_0x9659('0x4'),'afterDestroy':'remove'};function emitEvent(_0xb8bddb){return function(_0x5e2a8e,_0x2f5d38,_0x4fd132){WhatsappMessageEvents[_0x9659('0x5')](_0xb8bddb+':'+_0x5e2a8e['id'],_0x5e2a8e);WhatsappMessageEvents[_0x9659('0x5')](_0xb8bddb,_0x5e2a8e);_0x4fd132(null);};}for(var e in events){if(events[_0x9659('0x6')](e)){var event=events[e];WhatsappMessage['hook'](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
index 6436ab2..167fc32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31be=['get','toLowerCase','out','secret','UserId','WhatsappInteraction','findOne','WhatsappInteractionId','then','createdAt','direction','error','find','WhatsappAccountId','type','twilio','accountSid','phone','authToken','messages','whatsapp:','/api/whatsapp/messages/','/status?token=','update','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','baseUrl','/messages/','text','Bearer\x20','application/json','message_id','statuses','catch','err','finally','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','node-fetch','path','../../config/environment','define','WhatsappMessage','messageId','fti_whatsapp_messages','body','FULLTEXT','models'];(function(_0x118d0f,_0x1023f6){var _0x5359f9=function(_0x3aaccb){while(--_0x3aaccb){_0x118d0f['push'](_0x118d0f['shift']());}};_0x5359f9(++_0x1023f6);}(_0x31be,0xd4));var _0xe31b=function(_0x19044a,_0x4d3778){_0x19044a=_0x19044a-0x0;var _0x3e4511=_0x31be[_0x19044a];return _0x3e4511;};'use strict';var _=require(_0xe31b('0x0'));var util=require(_0xe31b('0x1'));var logger=require(_0xe31b('0x2'))(_0xe31b('0x3'));var moment=require(_0xe31b('0x4'));var BPromise=require(_0xe31b('0x5'));var rp=require('request-promise');var fetch=require(_0xe31b('0x6'));var fs=require('fs');var path=require(_0xe31b('0x7'));var rimraf=require('rimraf');var config=require(_0xe31b('0x8'));var attributes=require('./whatsappMessage.attributes');module['exports']=function(_0x45f7fb,_0x5a3fb2){return _0x45f7fb[_0xe31b('0x9')](_0xe31b('0xa'),attributes,{'tableName':'whatsapp_messages','paranoid':![],'indexes':[{'name':_0xe31b('0xb'),'fields':[_0xe31b('0xb')]},{'name':_0xe31b('0xc'),'fields':[_0xe31b('0xd')],'type':_0xe31b('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x6bfdd9,_0x1be0c9,_0x411dd5){var _0x19b44b=_0x45f7fb[_0xe31b('0xf')];var _0x40d235=_0x6bfdd9[_0xe31b('0x10')]({'plain':!![]});if(_0x40d235['direction'][_0xe31b('0x11')]()==='in'||_0x40d235['direction'][_0xe31b('0x11')]()===_0xe31b('0x12')&&!_0x40d235[_0xe31b('0x13')]&&!_['isNil'](_0x40d235[_0xe31b('0x14')])){_0x19b44b[_0xe31b('0x15')][_0xe31b('0x16')]({'where':{'id':_0x40d235[_0xe31b('0x17')]}})[_0xe31b('0x18')](function(_0x491fc8){if(_0x491fc8){_0x491fc8['update']({'lastMsgAt':_0x40d235[_0xe31b('0x19')],'lastMsgDirection':_0x40d235[_0xe31b('0x1a')][_0xe31b('0x11')]()});}})['catch'](function(_0x1e8bbb){console[_0xe31b('0x1b')](_0x1e8bbb);});}if(_0x40d235[_0xe31b('0x1a')]==='out'&&!_0x40d235[_0xe31b('0x13')]){var _0x39175d;_0x19b44b['WhatsappAccount'][_0xe31b('0x1c')]({'where':{'id':_0x40d235[_0xe31b('0x1d')]},'raw':!![]})[_0xe31b('0x18')](function(_0x2d1476){_0x39175d=_0x2d1476;if(_0x39175d&&_0x39175d[_0xe31b('0x1e')]){switch(_0x39175d[_0xe31b('0x1e')]){case _0xe31b('0x1f'):var _0xb19cf4=require(_0xe31b('0x1f'));if(_0x39175d[_0xe31b('0x20')]&&_0x39175d['authToken']&&_0x39175d[_0xe31b('0x21')]){var _0x4891f5=new _0xb19cf4(_0x39175d['accountSid'],_0x39175d[_0xe31b('0x22')]);_0x4891f5[_0xe31b('0x23')]['create']({'body':_0x40d235[_0xe31b('0xd')],'to':_0xe31b('0x24')+_0x40d235[_0xe31b('0x21')],'from':'whatsapp:'+_0x39175d[_0xe31b('0x21')],'statusCallback':_0x39175d['remote']+_0xe31b('0x25')+_0x40d235['id']+_0xe31b('0x26')+_0x39175d['token']})[_0xe31b('0x18')](function(_0xa39dd1){if(_0xa39dd1['sid']){return _0x6bfdd9[_0xe31b('0x27')]({'messageId':_0xa39dd1[_0xe31b('0x28')]});}})['catch'](function(_0x3e5b40){logger[_0xe31b('0x1b')](_0xe31b('0x29'),_0xe31b('0x2a'),_0xe31b('0x1f'),util[_0xe31b('0x2b')](_0x3e5b40,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xe31b('0x29'),'afterCreate',_0xe31b('0x1f'),_0xe31b('0x2c'));}break;case _0xe31b('0x2d'):var _0x37f49d=_0x39175d[_0xe31b('0x20')];var _0x2fb208=_0x39175d[_0xe31b('0x22')];var _0x55b90e=_0x39175d[_0xe31b('0x2e')]+'/whatsapp/v1/'+_0x37f49d+_0xe31b('0x2f');var _0x556438={'to':[_0x40d235['phone']],'message':{'type':_0xe31b('0x30'),'text':_0x40d235[_0xe31b('0xd')]}};var _0xdcfc83={'method':'POST','uri':_0x55b90e,'headers':{'Authorization':_0xe31b('0x31')+_0x2fb208,'Content-Type':_0xe31b('0x32')},'body':_0x556438,'json':!![]};rp(_0xdcfc83)[_0xe31b('0x18')](function(_0x189976){if(_0x189976['statuses'][0x0][_0xe31b('0x33')]){return _0x6bfdd9[_0xe31b('0x27')]({'messageId':_0x189976[_0xe31b('0x34')][0x0]['message_id']});}})[_0xe31b('0x35')](function(_0x5b8ab3){logger[_0xe31b('0x36')]('WhatsappMessage,\x20%s',_0x5b8ab3);});break;}}})[_0xe31b('0x37')](function(){_0x411dd5();});}else{_0x411dd5();}}},'charset':'utf8mb4','collate':_0xe31b('0x38')});};
\ No newline at end of file
+var _0xd98b=['/whatsapp/v1/','/messages/','text','POST','application/json','statuses','message_id','WhatsappMessage,\x20%s','finally','lodash','../../config/logger','api','moment','bluebird','request-promise','node-fetch','path','rimraf','../../config/environment','./whatsappMessage.attributes','exports','define','WhatsappMessage','messageId','fti_whatsapp_messages','get','direction','toLowerCase','out','secret','isNil','UserId','WhatsappInteraction','WhatsappInteractionId','then','update','createdAt','error','WhatsappAccount','find','type','twilio','accountSid','authToken','messages','create','body','whatsapp:','phone','remote','sid','catch','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','sinch','baseUrl'];(function(_0x230db0,_0x99e085){var _0x58d246=function(_0x17d34d){while(--_0x17d34d){_0x230db0['push'](_0x230db0['shift']());}};_0x58d246(++_0x99e085);}(_0xd98b,0x1d1));var _0xbd98=function(_0x5876ad,_0x2150c0){_0x5876ad=_0x5876ad-0x0;var _0x4d46f7=_0xd98b[_0x5876ad];return _0x4d46f7;};'use strict';var _=require(_0xbd98('0x0'));var util=require('util');var logger=require(_0xbd98('0x1'))(_0xbd98('0x2'));var moment=require(_0xbd98('0x3'));var BPromise=require(_0xbd98('0x4'));var rp=require(_0xbd98('0x5'));var fetch=require(_0xbd98('0x6'));var fs=require('fs');var path=require(_0xbd98('0x7'));var rimraf=require(_0xbd98('0x8'));var config=require(_0xbd98('0x9'));var attributes=require(_0xbd98('0xa'));module[_0xbd98('0xb')]=function(_0x401acd,_0x1fdd91){return _0x401acd[_0xbd98('0xc')](_0xbd98('0xd'),attributes,{'tableName':'whatsapp_messages','paranoid':![],'indexes':[{'name':_0xbd98('0xe'),'fields':['messageId']},{'name':_0xbd98('0xf'),'fields':['body'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1c79dc,_0x430f85,_0x19569e){var _0x5715fe=_0x401acd['models'];var _0x3f7f9a=_0x1c79dc[_0xbd98('0x10')]({'plain':!![]});if(_0x3f7f9a[_0xbd98('0x11')][_0xbd98('0x12')]()==='in'||_0x3f7f9a[_0xbd98('0x11')][_0xbd98('0x12')]()===_0xbd98('0x13')&&!_0x3f7f9a[_0xbd98('0x14')]&&!_[_0xbd98('0x15')](_0x3f7f9a[_0xbd98('0x16')])){_0x5715fe[_0xbd98('0x17')]['findOne']({'where':{'id':_0x3f7f9a[_0xbd98('0x18')]}})[_0xbd98('0x19')](function(_0x32461c){if(_0x32461c){_0x32461c[_0xbd98('0x1a')]({'lastMsgAt':_0x3f7f9a[_0xbd98('0x1b')],'lastMsgDirection':_0x3f7f9a['direction'][_0xbd98('0x12')]()});}})['catch'](function(_0x2bce5d){console[_0xbd98('0x1c')](_0x2bce5d);});}if(_0x3f7f9a['direction']===_0xbd98('0x13')&&!_0x3f7f9a[_0xbd98('0x14')]){var _0x28a419;_0x5715fe[_0xbd98('0x1d')][_0xbd98('0x1e')]({'where':{'id':_0x3f7f9a['WhatsappAccountId']},'raw':!![]})[_0xbd98('0x19')](function(_0x5ee45a){_0x28a419=_0x5ee45a;if(_0x28a419&&_0x28a419['type']){switch(_0x28a419[_0xbd98('0x1f')]){case _0xbd98('0x20'):var _0x57f602=require(_0xbd98('0x20'));if(_0x28a419[_0xbd98('0x21')]&&_0x28a419['authToken']&&_0x28a419['phone']){var _0x595c24=new _0x57f602(_0x28a419[_0xbd98('0x21')],_0x28a419[_0xbd98('0x22')]);_0x595c24[_0xbd98('0x23')][_0xbd98('0x24')]({'body':_0x3f7f9a[_0xbd98('0x25')],'to':_0xbd98('0x26')+_0x3f7f9a['phone'],'from':_0xbd98('0x26')+_0x28a419[_0xbd98('0x27')],'statusCallback':_0x28a419[_0xbd98('0x28')]+'/api/whatsapp/messages/'+_0x3f7f9a['id']+'/status?token='+_0x28a419['token']})[_0xbd98('0x19')](function(_0x3eb7dd){if(_0x3eb7dd[_0xbd98('0x29')]){return _0x1c79dc[_0xbd98('0x1a')]({'messageId':_0x3eb7dd['sid']});}})[_0xbd98('0x2a')](function(_0x482f4f){logger[_0xbd98('0x1c')](_0xbd98('0x2b'),_0xbd98('0x2c'),'twilio',util[_0xbd98('0x2d')](_0x482f4f,{'showHidden':![],'depth':null}));});}else{logger[_0xbd98('0x1c')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0xbd98('0x2c'),_0xbd98('0x20'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0xbd98('0x2e'):var _0x36be68=_0x28a419[_0xbd98('0x21')];var _0x59a7f8=_0x28a419[_0xbd98('0x22')];var _0x2e41f5=_0x28a419[_0xbd98('0x2f')]+_0xbd98('0x30')+_0x36be68+_0xbd98('0x31');var _0x30f58d={'to':[_0x3f7f9a[_0xbd98('0x27')]],'message':{'type':_0xbd98('0x32'),'text':_0x3f7f9a[_0xbd98('0x25')]}};var _0x235c4a={'method':_0xbd98('0x33'),'uri':_0x2e41f5,'headers':{'Authorization':'Bearer\x20'+_0x59a7f8,'Content-Type':_0xbd98('0x34')},'body':_0x30f58d,'json':!![]};rp(_0x235c4a)[_0xbd98('0x19')](function(_0x3cf90a){if(_0x3cf90a['statuses'][0x0]['message_id']){return _0x1c79dc[_0xbd98('0x1a')]({'messageId':_0x3cf90a[_0xbd98('0x35')][0x0][_0xbd98('0x36')]});}})[_0xbd98('0x2a')](function(_0x265852){logger['err'](_0xbd98('0x37'),_0x265852);});break;}}})[_0xbd98('0x38')](function(){_0x19569e();});}else{_0x19569e();}}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 63120b2..97d422f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67c0=['../../config/utils','../../config/logger','rpc','http','defaults','redis','localhost','./whatsappMessage.socket','register','request','then','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','WhatsappMessage,\x20%s,\x20%s','message','info','result','catch','CreateWhatsappMessage','create','body','options','raw','stringify','lodash','moment','randomstring','ioredis','../../mysqldb'];(function(_0x3a6ae6,_0x4eaa28){var _0x51212d=function(_0x5dbbd1){while(--_0x5dbbd1){_0x3a6ae6['push'](_0x3a6ae6['shift']());}};_0x51212d(++_0x4eaa28);}(_0x67c0,0x7b));var _0x067c=function(_0x601869,_0x40420e){_0x601869=_0x601869-0x0;var _0x1d5576=_0x67c0[_0x601869];return _0x1d5576;};'use strict';var _=require(_0x067c('0x0'));var util=require('util');var moment=require(_0x067c('0x1'));var BPromise=require('bluebird');var rs=require(_0x067c('0x2'));var fs=require('fs');var Redis=require(_0x067c('0x3'));var db=require(_0x067c('0x4'))['db'];var utils=require(_0x067c('0x5'));var logger=require(_0x067c('0x6'))(_0x067c('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x067c('0x8')]({'port':0x232a});config['redis']=_[_0x067c('0x9')](config[_0x067c('0xa')],{'host':_0x067c('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x067c('0xa')]));require(_0x067c('0xc'))[_0x067c('0xd')](socket);function respondWithRpcPromise(_0x742321,_0x17fc04,_0xab86fe){return new BPromise(function(_0x34f59e,_0x2f1f7a){return client[_0x067c('0xe')](_0x742321,_0xab86fe)[_0x067c('0xf')](function(_0x270d9a){logger['info']('WhatsappMessage,\x20%s,\x20%s',_0x17fc04,'request\x20sent');logger[_0x067c('0x10')](_0x067c('0x11'),_0x17fc04,_0x067c('0x12'),JSON['stringify'](_0x270d9a));if(_0x270d9a[_0x067c('0x13')]){if(_0x270d9a[_0x067c('0x13')][_0x067c('0x14')]===0x1f4){logger[_0x067c('0x13')](_0x067c('0x15'),_0x17fc04,_0x270d9a[_0x067c('0x13')]['message']);return _0x2f1f7a(_0x270d9a[_0x067c('0x13')][_0x067c('0x16')]);}logger[_0x067c('0x13')](_0x067c('0x15'),_0x17fc04,_0x270d9a[_0x067c('0x13')][_0x067c('0x16')]);return _0x34f59e(_0x270d9a[_0x067c('0x13')][_0x067c('0x16')]);}else{logger[_0x067c('0x17')]('WhatsappMessage,\x20%s,\x20%s',_0x17fc04,_0x067c('0x12'));_0x34f59e(_0x270d9a[_0x067c('0x18')][_0x067c('0x16')]);}})[_0x067c('0x19')](function(_0xd92d8b){logger['error'](_0x067c('0x15'),_0x17fc04,_0xd92d8b);_0x2f1f7a(_0xd92d8b);});});}exports[_0x067c('0x1a')]=function(_0x1d2aff){var _0x3db0ff=this;return new Promise(function(_0x47629a,_0x32c751){return db['WhatsappMessage'][_0x067c('0x1b')](_0x1d2aff[_0x067c('0x1c')],{'raw':_0x1d2aff[_0x067c('0x1d')]?_0x1d2aff['options'][_0x067c('0x1e')]===undefined?!![]:![]:!![]})[_0x067c('0xf')](function(_0x2c1699){logger[_0x067c('0x17')]('CreateWhatsappMessage',_0x1d2aff);logger[_0x067c('0x10')](_0x067c('0x1a'),_0x1d2aff,JSON[_0x067c('0x1f')](_0x2c1699));_0x47629a(_0x2c1699);})[_0x067c('0x19')](function(_0x2d7309){logger[_0x067c('0x13')](_0x067c('0x1a'),_0x2d7309[_0x067c('0x16')],_0x1d2aff);_0x32c751(_0x3db0ff['error'](0x1f4,_0x2d7309[_0x067c('0x16')]));});});};
\ No newline at end of file
+var _0x500b=['redis','defaults','socket.io-emitter','./whatsappMessage.socket','register','then','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','CreateWhatsappMessage','create','raw','info','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http'];(function(_0x538690,_0x449601){var _0x13ce34=function(_0x334a2b){while(--_0x334a2b){_0x538690['push'](_0x538690['shift']());}};_0x13ce34(++_0x449601);}(_0x500b,0x12a));var _0xb500=function(_0x398b3d,_0x2f497e){_0x398b3d=_0x398b3d-0x0;var _0x20b1cf=_0x500b[_0x398b3d];return _0x20b1cf;};'use strict';var _=require(_0xb500('0x0'));var util=require(_0xb500('0x1'));var moment=require(_0xb500('0x2'));var BPromise=require('bluebird');var rs=require(_0xb500('0x3'));var fs=require('fs');var Redis=require(_0xb500('0x4'));var db=require(_0xb500('0x5'))['db'];var utils=require(_0xb500('0x6'));var logger=require('../../config/logger')(_0xb500('0x7'));var config=require('../../config/environment');var jayson=require(_0xb500('0x8'));var client=jayson['client'][_0xb500('0x9')]({'port':0x232a});config[_0xb500('0xa')]=_[_0xb500('0xb')](config[_0xb500('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xb500('0xc'))(new Redis(config[_0xb500('0xa')]));require(_0xb500('0xd'))[_0xb500('0xe')](socket);function respondWithRpcPromise(_0x3c98d4,_0x225f59,_0x5efc86){return new BPromise(function(_0x123b77,_0x252ede){return client['request'](_0x3c98d4,_0x5efc86)[_0xb500('0xf')](function(_0x513d73){logger['info'](_0xb500('0x10'),_0x225f59,_0xb500('0x11'));logger[_0xb500('0x12')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x225f59,_0xb500('0x11'),JSON[_0xb500('0x13')](_0x513d73));if(_0x513d73[_0xb500('0x14')]){if(_0x513d73['error'][_0xb500('0x15')]===0x1f4){logger['error'](_0xb500('0x10'),_0x225f59,_0x513d73[_0xb500('0x14')][_0xb500('0x16')]);return _0x252ede(_0x513d73[_0xb500('0x14')][_0xb500('0x16')]);}logger[_0xb500('0x14')](_0xb500('0x10'),_0x225f59,_0x513d73[_0xb500('0x14')][_0xb500('0x16')]);return _0x123b77(_0x513d73['error'][_0xb500('0x16')]);}else{logger['info'](_0xb500('0x10'),_0x225f59,'request\x20sent');_0x123b77(_0x513d73[_0xb500('0x17')][_0xb500('0x16')]);}})['catch'](function(_0x4f9fca){logger[_0xb500('0x14')](_0xb500('0x10'),_0x225f59,_0x4f9fca);_0x252ede(_0x4f9fca);});});}exports[_0xb500('0x18')]=function(_0x418a60){var _0x188250=this;return new Promise(function(_0x409c8d,_0x6bdf76){return db['WhatsappMessage'][_0xb500('0x19')](_0x418a60['body'],{'raw':_0x418a60['options']?_0x418a60['options'][_0xb500('0x1a')]===undefined?!![]:![]:!![]})[_0xb500('0xf')](function(_0x50a9f2){logger[_0xb500('0x1b')](_0xb500('0x18'),_0x418a60);logger[_0xb500('0x12')](_0xb500('0x18'),_0x418a60,JSON[_0xb500('0x13')](_0x50a9f2));_0x409c8d(_0x50a9f2);})['catch'](function(_0x3ed25b){logger[_0xb500('0x14')](_0xb500('0x18'),_0x3ed25b['message'],_0x418a60);_0x6bdf76(_0x188250[_0xb500('0x14')](0x1f4,_0x3ed25b[_0xb500('0x16')]));});});};
\ No newline at end of file
index 8473148..3533e9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb4d=['emit','removeListener','register','length','whatsappMessage:','./whatsappMessage.events','save','remove'];(function(_0x3126d6,_0x172883){var _0x59e9f6=function(_0x51ded8){while(--_0x51ded8){_0x3126d6['push'](_0x3126d6['shift']());}};_0x59e9f6(++_0x172883);}(_0xcb4d,0x165));var _0xdcb4=function(_0xf9cc12,_0x8a5a90){_0xf9cc12=_0xf9cc12-0x0;var _0x1827fa=_0xcb4d[_0xf9cc12];return _0x1827fa;};'use strict';var WhatsappMessageEvents=require(_0xdcb4('0x0'));var events=[_0xdcb4('0x1'),_0xdcb4('0x2'),'update'];function createListener(_0x5375b6,_0x10e179){return function(_0xa071d6){_0x10e179[_0xdcb4('0x3')](_0x5375b6,_0xa071d6);};}function removeListener(_0x3b5140,_0x3ead35){return function(){WhatsappMessageEvents[_0xdcb4('0x4')](_0x3b5140,_0x3ead35);};}exports[_0xdcb4('0x5')]=function(_0x3ccbc5){for(var _0x23ffd6=0x0,_0x17078f=events[_0xdcb4('0x6')];_0x23ffd6<_0x17078f;_0x23ffd6++){var _0x228d24=events[_0x23ffd6];var _0x47595d=createListener(_0xdcb4('0x7')+_0x228d24,_0x3ccbc5);WhatsappMessageEvents['on'](_0x228d24,_0x47595d);}};
\ No newline at end of file
+var _0x2cec=['whatsappMessage:','./whatsappMessage.events','save','remove','emit','removeListener','register'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x2cec,0x1c1));var _0xc2ce=function(_0x366d87,_0x3f5f27){_0x366d87=_0x366d87-0x0;var _0x894484=_0x2cec[_0x366d87];return _0x894484;};'use strict';var WhatsappMessageEvents=require(_0xc2ce('0x0'));var events=[_0xc2ce('0x1'),_0xc2ce('0x2'),'update'];function createListener(_0xbeaa0b,_0x364e7a){return function(_0x42315e){_0x364e7a[_0xc2ce('0x3')](_0xbeaa0b,_0x42315e);};}function removeListener(_0x17f3ae,_0x524163){return function(){WhatsappMessageEvents[_0xc2ce('0x4')](_0x17f3ae,_0x524163);};}exports[_0xc2ce('0x5')]=function(_0x22628f){for(var _0x52c449=0x0,_0x51f11a=events['length'];_0x52c449<_0x51f11a;_0x52c449++){var _0x28c679=events[_0x52c449];var _0x31731f=createListener(_0xc2ce('0x6')+_0x28c679,_0x22628f);WhatsappMessageEvents['on'](_0x28c679,_0x31731f);}};
\ No newline at end of file
index 91d07ad..b9a5af1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ea=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueue.controller','isAuthenticated','index','/describe','describe','get','/:id','/:id/members','/:id/teams','getTeams','/:id/users','post','create','addTeams','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','express'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x54ea,0x1cc));var _0xa54e=function(_0x5924a3,_0x1d864a){_0x5924a3=_0x5924a3-0x0;var _0x2f56cf=_0x54ea[_0x5924a3];return _0x2f56cf;};'use strict';var multer=require(_0xa54e('0x0'));var util=require(_0xa54e('0x1'));var path=require(_0xa54e('0x2'));var timeout=require(_0xa54e('0x3'));var express=require(_0xa54e('0x4'));var router=express['Router']();var fs_extra=require(_0xa54e('0x5'));var auth=require(_0xa54e('0x6'));var interaction=require(_0xa54e('0x7'));var config=require(_0xa54e('0x8'));var controller=require(_0xa54e('0x9'));router['get']('/',auth[_0xa54e('0xa')](),controller[_0xa54e('0xb')]);router['get'](_0xa54e('0xc'),auth[_0xa54e('0xa')](),controller[_0xa54e('0xd')]);router[_0xa54e('0xe')](_0xa54e('0xf'),auth[_0xa54e('0xa')](),controller['show']);router[_0xa54e('0xe')](_0xa54e('0x10'),auth['isAuthenticated'](),controller['getMembers']);router[_0xa54e('0xe')](_0xa54e('0x11'),auth['isAuthenticated'](),controller[_0xa54e('0x12')]);router['get'](_0xa54e('0x13'),auth['isAuthenticated'](),controller['getAgents']);router[_0xa54e('0x14')]('/',auth[_0xa54e('0xa')](),controller[_0xa54e('0x15')]);router[_0xa54e('0x14')](_0xa54e('0x11'),auth[_0xa54e('0xa')](),controller[_0xa54e('0x16')]);router['post'](_0xa54e('0x13'),auth[_0xa54e('0xa')](),controller[_0xa54e('0x17')]);router[_0xa54e('0x18')]('/:id',auth['isAuthenticated'](),controller[_0xa54e('0x19')]);router[_0xa54e('0x1a')](_0xa54e('0xf'),auth[_0xa54e('0xa')](),controller[_0xa54e('0x1b')]);router['delete'](_0xa54e('0x11'),auth[_0xa54e('0xa')](),controller[_0xa54e('0x1c')]);router[_0xa54e('0x1a')]('/:id/users',auth['isAuthenticated'](),controller[_0xa54e('0x1d')]);module[_0xa54e('0x1e')]=router;
\ No newline at end of file
+var _0xef96=['../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','getAgents','post','create','addTeams','/:id/users','addAgents','put','update','removeTeams','delete','removeAgents','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x261fc3,_0x93ec46){var _0x83da99=function(_0x1e71ad){while(--_0x1e71ad){_0x261fc3['push'](_0x261fc3['shift']());}};_0x83da99(++_0x93ec46);}(_0xef96,0x162));var _0x6ef9=function(_0x473232,_0x255269){_0x473232=_0x473232-0x0;var _0x2bd5d8=_0xef96[_0x473232];return _0x2bd5d8;};'use strict';var multer=require(_0x6ef9('0x0'));var util=require(_0x6ef9('0x1'));var path=require(_0x6ef9('0x2'));var timeout=require(_0x6ef9('0x3'));var express=require(_0x6ef9('0x4'));var router=express[_0x6ef9('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x6ef9('0x6'));var config=require('../../config/environment');var controller=require('./whatsappQueue.controller');router[_0x6ef9('0x7')]('/',auth[_0x6ef9('0x8')](),controller[_0x6ef9('0x9')]);router['get'](_0x6ef9('0xa'),auth['isAuthenticated'](),controller[_0x6ef9('0xb')]);router[_0x6ef9('0x7')](_0x6ef9('0xc'),auth['isAuthenticated'](),controller[_0x6ef9('0xd')]);router['get'](_0x6ef9('0xe'),auth[_0x6ef9('0x8')](),controller[_0x6ef9('0xf')]);router['get'](_0x6ef9('0x10'),auth[_0x6ef9('0x8')](),controller[_0x6ef9('0x11')]);router[_0x6ef9('0x7')]('/:id/users',auth[_0x6ef9('0x8')](),controller[_0x6ef9('0x12')]);router[_0x6ef9('0x13')]('/',auth[_0x6ef9('0x8')](),controller[_0x6ef9('0x14')]);router[_0x6ef9('0x13')](_0x6ef9('0x10'),auth['isAuthenticated'](),controller[_0x6ef9('0x15')]);router[_0x6ef9('0x13')](_0x6ef9('0x16'),auth[_0x6ef9('0x8')](),controller[_0x6ef9('0x17')]);router[_0x6ef9('0x18')](_0x6ef9('0xc'),auth[_0x6ef9('0x8')](),controller[_0x6ef9('0x19')]);router['delete'](_0x6ef9('0xc'),auth[_0x6ef9('0x8')](),controller['destroy']);router['delete'](_0x6ef9('0x10'),auth['isAuthenticated'](),controller[_0x6ef9('0x1a')]);router[_0x6ef9('0x1b')](_0x6ef9('0x16'),auth[_0x6ef9('0x8')](),controller[_0x6ef9('0x1c')]);module[_0x6ef9('0x1d')]=router;
\ No newline at end of file
index 58b8612..f61874f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a55=['ENUM','rrmemory','beepall','roundrobin','sequelize','STRING','name'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x6a55,0x154));var _0x56a5=function(_0x40cdfa,_0x1cf634){_0x40cdfa=_0x40cdfa-0x0;var _0x2c5e4d=_0x6a55[_0x40cdfa];return _0x2c5e4d;};'use strict';var Sequelize=require(_0x56a5('0x0'));module['exports']={'name':{'type':Sequelize[_0x56a5('0x1')],'unique':_0x56a5('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x56a5('0x3')](_0x56a5('0x4'),_0x56a5('0x5'),_0x56a5('0x6'))},'description':{'type':Sequelize[_0x56a5('0x1')]}};
\ No newline at end of file
+var _0x78f0=['name','INTEGER','ENUM','rrmemory','beepall','sequelize','exports','STRING'];(function(_0x2d71b1,_0x2d087d){var _0x369c37=function(_0x2b56e8){while(--_0x2b56e8){_0x2d71b1['push'](_0x2d71b1['shift']());}};_0x369c37(++_0x2d087d);}(_0x78f0,0x15d));var _0x078f=function(_0x30233d,_0x7996ac){_0x30233d=_0x30233d-0x0;var _0x5e3082=_0x78f0[_0x30233d];return _0x5e3082;};'use strict';var Sequelize=require(_0x078f('0x0'));module[_0x078f('0x1')]={'name':{'type':Sequelize[_0x078f('0x2')],'unique':_0x078f('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x078f('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x078f('0x5')](_0x078f('0x6'),_0x078f('0x7'),'roundrobin')},'description':{'type':Sequelize[_0x078f('0x2')]}};
\ No newline at end of file
index ef3a923..05103d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfeed=['api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','update','then','get','WhatsappQueues','UserProfileResource','destroy','stack','name','send','map','WhatsappQueue','rawAttributes','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','rows','show','params','length','includeAll','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','getMembers','findOne','UserWhatsappQueue','findAll','User','UserId','agent','whatsappPause','createdAt','format','%s/%s','SIP','updatedAt','getTeams','Team','addTeams','ids','Agents','online','sequelize','findOrCreate','forEach','emit','userWhatsappQueue:save','field','tq.TeamId','from','team_has_whatsapp_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','every','TeamId','all','compact','value','transaction','removeTeams','isEmpty','removeAgents','addAgents','omit','isArray','userWhatsappQueue:remove','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x24237f,_0x4cf32c){var _0x48298e=function(_0x3f7511){while(--_0x3f7511){_0x24237f['push'](_0x24237f['shift']());}};_0x48298e(++_0x4cf32c);}(_0xfeed,0xfa));var _0xdfee=function(_0x3ef706,_0x4035a5){_0x3ef706=_0x3ef706-0x0;var _0x5eab74=_0xfeed[_0x3ef706];return _0x5eab74;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdfee('0x0'));var zipdir=require(_0xdfee('0x1'));var jsonpatch=require(_0xdfee('0x2'));var rp=require(_0xdfee('0x3'));var moment=require('moment');var BPromise=require(_0xdfee('0x4'));var Mustache=require(_0xdfee('0x5'));var util=require(_0xdfee('0x6'));var path=require('path');var sox=require(_0xdfee('0x7'));var csv=require(_0xdfee('0x8'));var ejs=require(_0xdfee('0x9'));var fs=require('fs');var fs_extra=require(_0xdfee('0xa'));var _=require('lodash');var squel=require(_0xdfee('0xb'));var crypto=require(_0xdfee('0xc'));var jsforce=require(_0xdfee('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xdfee('0x8'));var querystring=require(_0xdfee('0xe'));var Papa=require(_0xdfee('0xf'));var Redis=require(_0xdfee('0x10'));var authService=require(_0xdfee('0x11'));var qs=require(_0xdfee('0x12'));var as=require(_0xdfee('0x13'));var hardwareService=require(_0xdfee('0x14'));var logger=require(_0xdfee('0x15'))(_0xdfee('0x16'));var utils=require(_0xdfee('0x17'));var config=require(_0xdfee('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xdfee('0x19'))['db'];config['redis']=_[_0xdfee('0x1a')](config[_0xdfee('0x1b')],{'host':_0xdfee('0x1c'),'port':0x18eb});var socket=require(_0xdfee('0x1d'))(new Redis(config[_0xdfee('0x1b')]));require('./whatsappQueue.socket')['register'](socket);function respondWithStatusCode(_0x317b10,_0x6a57e5){_0x6a57e5=_0x6a57e5||0xcc;return function(_0x37d09b){if(_0x37d09b){return _0x317b10[_0xdfee('0x1e')](_0x6a57e5);}return _0x317b10['status'](_0x6a57e5)[_0xdfee('0x1f')]();};}function respondWithResult(_0x38f771,_0x575199){_0x575199=_0x575199||0xc8;return function(_0x468a66){if(_0x468a66){return _0x38f771[_0xdfee('0x20')](_0x575199)[_0xdfee('0x21')](_0x468a66);}};}function respondWithFilteredResult(_0x12038c,_0x34685b){return function(_0x6f539a){if(_0x6f539a){var _0x82a8b8=typeof _0x34685b['offset']===_0xdfee('0x22')&&typeof _0x34685b[_0xdfee('0x23')]===_0xdfee('0x22');var _0x334146=_0x6f539a[_0xdfee('0x24')];var _0x31b4c6=_0x82a8b8?0x0:_0x34685b['offset'];var _0x56f6dd=_0x82a8b8?_0x6f539a[_0xdfee('0x24')]:_0x34685b[_0xdfee('0x25')]+_0x34685b[_0xdfee('0x23')];var _0x327195;if(_0x56f6dd>=_0x334146){_0x56f6dd=_0x334146;_0x327195=0xc8;}else{_0x327195=0xce;}_0x12038c[_0xdfee('0x20')](_0x327195);return _0x12038c[_0xdfee('0x26')](_0xdfee('0x27'),_0x31b4c6+'-'+_0x56f6dd+'/'+_0x334146)['json'](_0x6f539a);}return null;};}function patchUpdates(_0x3fb386){return function(_0x5a2ec4){try{jsonpatch[_0xdfee('0x28')](_0x5a2ec4,_0x3fb386,!![]);}catch(_0x290f7d){return BPromise['reject'](_0x290f7d);}return _0x5a2ec4['save']();};}function saveUpdates(_0x4db9ff,_0xb91297){return function(_0x3804df){if(_0x3804df){return _0x3804df[_0xdfee('0x29')](_0x4db9ff)[_0xdfee('0x2a')](function(_0x2bfb2f){return _0x2bfb2f;});}return null;};}function removeEntity(_0x23e2cf,_0x28e4bc){return function(_0x5745de){if(_0x5745de){return _0x5745de['destroy']()[_0xdfee('0x2a')](function(){var _0x3e426d=_0x5745de[_0xdfee('0x2b')]({'plain':!![]});var _0x2df79b=_0xdfee('0x2c');return db[_0xdfee('0x2d')][_0xdfee('0x2e')]({'where':{'type':_0x2df79b,'resourceId':_0x3e426d['id']}})[_0xdfee('0x2a')](function(){return _0x5745de;});})[_0xdfee('0x2a')](function(){_0x23e2cf[_0xdfee('0x20')](0xcc)[_0xdfee('0x1f')]();});}};}function handleEntityNotFound(_0x24f554,_0x4472fb){return function(_0x5f6e33){if(!_0x5f6e33){_0x24f554[_0xdfee('0x1e')](0x194);}return _0x5f6e33;};}function handleError(_0x559d16,_0x3bf82e){_0x3bf82e=_0x3bf82e||0x1f4;return function(_0x12401a){logger['error'](_0x12401a[_0xdfee('0x2f')]);if(_0x12401a[_0xdfee('0x30')]){delete _0x12401a['name'];}_0x559d16[_0xdfee('0x20')](_0x3bf82e)[_0xdfee('0x31')](_0x12401a);};}exports['index']=function(_0x37b587,_0x44c24c){var _0x238a51={},_0x322043={},_0x5ddfc3={'count':0x0,'rows':[]};var _0x226ed4=_[_0xdfee('0x32')](db[_0xdfee('0x33')][_0xdfee('0x34')],function(_0x15f1db){return{'name':_0x15f1db['fieldName'],'type':_0x15f1db['type']['key']};});_0x322043[_0xdfee('0x35')]=_[_0xdfee('0x32')](_0x226ed4,_0xdfee('0x30'));_0x322043[_0xdfee('0x36')]=_[_0xdfee('0x37')](_0x37b587[_0xdfee('0x36')]);_0x322043[_0xdfee('0x38')]=_['intersection'](_0x322043[_0xdfee('0x35')],_0x322043[_0xdfee('0x36')]);_0x238a51[_0xdfee('0x39')]=_[_0xdfee('0x3a')](_0x322043[_0xdfee('0x35')],qs[_0xdfee('0x3b')](_0x37b587[_0xdfee('0x36')][_0xdfee('0x3b')]));_0x238a51[_0xdfee('0x39')]=_0x238a51['attributes']['length']?_0x238a51[_0xdfee('0x39')]:_0x322043['model'];if(!_0x37b587[_0xdfee('0x36')][_0xdfee('0x3c')](_0xdfee('0x3d'))){_0x238a51[_0xdfee('0x23')]=qs[_0xdfee('0x23')](_0x37b587[_0xdfee('0x36')][_0xdfee('0x23')]);_0x238a51['offset']=qs[_0xdfee('0x25')](_0x37b587[_0xdfee('0x36')][_0xdfee('0x25')]);}_0x238a51[_0xdfee('0x3e')]=qs['sort'](_0x37b587['query'][_0xdfee('0x3f')]);_0x238a51[_0xdfee('0x40')]=qs['filters'](_[_0xdfee('0x41')](_0x37b587[_0xdfee('0x36')],_0x322043[_0xdfee('0x38')]),_0x226ed4);if(_0x37b587[_0xdfee('0x36')][_0xdfee('0x42')]){_0x238a51[_0xdfee('0x40')]=_[_0xdfee('0x43')](_0x238a51[_0xdfee('0x40')],{'$or':_[_0xdfee('0x32')](_0x226ed4,function(_0x23cc78){if(_0x23cc78['type']!==_0xdfee('0x44')){var _0x372aeb={};_0x372aeb[_0x23cc78[_0xdfee('0x30')]]={'$like':'%'+_0x37b587[_0xdfee('0x36')]['filter']+'%'};return _0x372aeb;}})});}_0x238a51=_[_0xdfee('0x43')]({},_0x238a51,_0x37b587[_0xdfee('0x45')]);var _0x298951={'where':_0x238a51[_0xdfee('0x40')]};return db[_0xdfee('0x33')][_0xdfee('0x24')](_0x298951)[_0xdfee('0x2a')](function(_0x4c9e19){_0x5ddfc3['count']=_0x4c9e19;if(_0x37b587[_0xdfee('0x36')]['includeAll']){_0x238a51['include']=[{'all':!![]}];}return db[_0xdfee('0x33')]['findAll'](_0x238a51);})[_0xdfee('0x2a')](function(_0x271c85){_0x5ddfc3[_0xdfee('0x46')]=_0x271c85;return _0x5ddfc3;})[_0xdfee('0x2a')](respondWithFilteredResult(_0x44c24c,_0x238a51))['catch'](handleError(_0x44c24c,null));};exports[_0xdfee('0x47')]=function(_0x82faf3,_0x16cd6f){var _0x4f8ddd={'raw':!![],'where':{'id':_0x82faf3[_0xdfee('0x48')]['id']}},_0x6def4={};_0x6def4[_0xdfee('0x35')]=_[_0xdfee('0x37')](db[_0xdfee('0x33')][_0xdfee('0x34')]);_0x6def4['query']=_[_0xdfee('0x37')](_0x82faf3['query']);_0x6def4['filters']=_[_0xdfee('0x3a')](_0x6def4[_0xdfee('0x35')],_0x6def4['query']);_0x4f8ddd[_0xdfee('0x39')]=_[_0xdfee('0x3a')](_0x6def4['model'],qs[_0xdfee('0x3b')](_0x82faf3[_0xdfee('0x36')][_0xdfee('0x3b')]));_0x4f8ddd[_0xdfee('0x39')]=_0x4f8ddd['attributes'][_0xdfee('0x49')]?_0x4f8ddd[_0xdfee('0x39')]:_0x6def4[_0xdfee('0x35')];if(_0x82faf3[_0xdfee('0x36')][_0xdfee('0x4a')]){_0x4f8ddd['include']=[{'all':!![]}];}_0x4f8ddd=_['merge']({},_0x4f8ddd,_0x82faf3[_0xdfee('0x45')]);return db[_0xdfee('0x33')]['find'](_0x4f8ddd)[_0xdfee('0x2a')](handleEntityNotFound(_0x16cd6f,null))[_0xdfee('0x2a')](respondWithResult(_0x16cd6f,null))['catch'](handleError(_0x16cd6f,null));};exports['create']=function(_0x382bb3,_0x59bc84){return db[_0xdfee('0x33')][_0xdfee('0x4b')](_0x382bb3[_0xdfee('0x4c')],{})[_0xdfee('0x2a')](function(_0x316816){var _0x7ad27c=_0x382bb3['user'][_0xdfee('0x2b')]({'plain':!![]});if(!_0x7ad27c)throw new Error(_0xdfee('0x4d'));if(_0x7ad27c[_0xdfee('0x4e')]===_0xdfee('0x4f')){var _0x2f3266=_0x316816[_0xdfee('0x2b')]({'plain':!![]});var _0xedc855=_0xdfee('0x2c');return db[_0xdfee('0x50')]['find']({'where':{'name':_0xedc855,'userProfileId':_0x7ad27c[_0xdfee('0x51')]},'raw':!![]})[_0xdfee('0x2a')](function(_0x36c809){if(_0x36c809&&_0x36c809[_0xdfee('0x52')]===0x0){return db[_0xdfee('0x2d')][_0xdfee('0x4b')]({'name':_0x2f3266['name'],'resourceId':_0x2f3266['id'],'type':_0x36c809[_0xdfee('0x30')],'sectionId':_0x36c809['id']},{})[_0xdfee('0x2a')](function(){return _0x316816;});}else{return _0x316816;}})[_0xdfee('0x53')](function(_0x58457a){logger['error'](_0xdfee('0x54'),_0x58457a);throw _0x58457a;});}return _0x316816;})[_0xdfee('0x2a')](respondWithResult(_0x59bc84,0xc9))['catch'](handleError(_0x59bc84,null));};exports['update']=function(_0x1230fc,_0x1c943f){if(_0x1230fc[_0xdfee('0x4c')]['id']){delete _0x1230fc[_0xdfee('0x4c')]['id'];}return db['WhatsappQueue'][_0xdfee('0x55')]({'where':{'id':_0x1230fc[_0xdfee('0x48')]['id']}})['then'](handleEntityNotFound(_0x1c943f,null))[_0xdfee('0x2a')](saveUpdates(_0x1230fc[_0xdfee('0x4c')],null))['then'](respondWithResult(_0x1c943f,null))[_0xdfee('0x53')](handleError(_0x1c943f,null));};exports['destroy']=function(_0x5495c3,_0x35733f){return db[_0xdfee('0x33')][_0xdfee('0x55')]({'where':{'id':_0x5495c3[_0xdfee('0x48')]['id']}})[_0xdfee('0x2a')](handleEntityNotFound(_0x35733f,null))['then'](removeEntity(_0x35733f,null))[_0xdfee('0x53')](handleError(_0x35733f,null));};exports['describe']=function(_0x43a33f,_0x2b9be9){return db['WhatsappQueue']['describe']()[_0xdfee('0x2a')](respondWithResult(_0x2b9be9,null))[_0xdfee('0x53')](handleError(_0x2b9be9,null));};exports[_0xdfee('0x56')]=function(_0x5f2f61,_0x4108a7,_0x3c99cd){var _0x325197={'raw':!![],'where':{}},_0x5d4b1a={},_0xc1c261;return db[_0xdfee('0x33')][_0xdfee('0x57')]({'where':{'id':_0x5f2f61[_0xdfee('0x48')]['id']}})[_0xdfee('0x2a')](handleEntityNotFound(_0x4108a7,null))[_0xdfee('0x2a')](function(_0x326dbe){if(_0x326dbe){_0xc1c261=_0x326dbe[_0xdfee('0x2b')]({'plain':!![]});_0x5d4b1a[_0xdfee('0x35')]=_[_0xdfee('0x37')](db['UserWhatsappQueue'][_0xdfee('0x34')]);_0x5d4b1a['query']=_[_0xdfee('0x37')](_0x5f2f61['query']);_0x5d4b1a['filters']=_[_0xdfee('0x3a')](_0x5d4b1a['model'],_0x5d4b1a[_0xdfee('0x36')]);_0x325197[_0xdfee('0x39')]=_[_0xdfee('0x3a')](_0x5d4b1a[_0xdfee('0x35')],qs['fields'](_0x5f2f61['query'][_0xdfee('0x3b')]));_0x325197['attributes']=_0x325197[_0xdfee('0x39')]['length']?_0x325197[_0xdfee('0x39')]:_0x5d4b1a[_0xdfee('0x35')];if(!_0x5f2f61['query'][_0xdfee('0x3c')]('nolimit')){_0x325197[_0xdfee('0x23')]=qs[_0xdfee('0x23')](_0x5f2f61['query'][_0xdfee('0x23')]);_0x325197[_0xdfee('0x25')]=qs['offset'](_0x5f2f61[_0xdfee('0x36')]['offset']);}_0x325197['order']=qs['sort'](_0x5f2f61[_0xdfee('0x36')][_0xdfee('0x3f')]);_0x325197[_0xdfee('0x40')]=qs[_0xdfee('0x38')](_[_0xdfee('0x41')](_0x5f2f61['query'],_0x5d4b1a[_0xdfee('0x38')]));_0x325197[_0xdfee('0x40')]['WhatsappQueueId']=_0x326dbe['id'];if(_0x5f2f61[_0xdfee('0x36')][_0xdfee('0x42')]){_0x325197[_0xdfee('0x40')]=_[_0xdfee('0x43')](_0x325197[_0xdfee('0x40')],{'$or':_[_0xdfee('0x32')](_0x325197['attributes'],function(_0x284857){var _0xc8f761={};_0xc8f761[_0x284857]={'$like':'%'+_0x5f2f61[_0xdfee('0x36')]['filter']+'%'};return _0xc8f761;})});}_0x325197=_['merge']({},_0x325197,_0x5f2f61[_0xdfee('0x45')]);return db[_0xdfee('0x58')][_0xdfee('0x59')](_0x325197);}})[_0xdfee('0x2a')](function(_0x3046e3){if(_0x3046e3){return db[_0xdfee('0x5a')]['findAndCountAll']({'where':{'id':_[_0xdfee('0x32')](_0x3046e3,_0xdfee('0x5b')),'role':_0xdfee('0x5c')},'attributes':['id',_0xdfee('0x30'),_0xdfee('0x5d'),'updatedAt',_0xdfee('0x5e')]});}})[_0xdfee('0x2a')](function(_0x27fcea){if(_0x27fcea){return{'count':_0x27fcea[_0xdfee('0x24')],'rows':_['map'](_0x27fcea[_0xdfee('0x46')],function(_0x290a09){return{'membername':_0x290a09['name'],'UserId':_0x290a09['id'],'queue_name':_0xc1c261[_0xdfee('0x30')],'WhatsappQueueId':_0xc1c261['id'],'interface':util[_0xdfee('0x5f')](_0xdfee('0x60'),_0xdfee('0x61'),_0x290a09[_0xdfee('0x30')]),'penalty':0x0,'paused':_0x290a09[_0xdfee('0x5d')],'createdAt':_0x290a09[_0xdfee('0x5e')],'updatedAt':_0x290a09[_0xdfee('0x62')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4108a7,_0x325197))[_0xdfee('0x53')](handleError(_0x4108a7,null));};exports[_0xdfee('0x63')]=function(_0x1e8208,_0x463dc3,_0x5dd550){var _0x17fafc={};var _0x26cf9b={};var _0x51ceb4;var _0x53597c;return db[_0xdfee('0x33')][_0xdfee('0x57')]({'where':{'id':_0x1e8208[_0xdfee('0x48')]['id']}})[_0xdfee('0x2a')](handleEntityNotFound(_0x463dc3,null))[_0xdfee('0x2a')](function(_0x5292df){if(_0x5292df){_0x51ceb4=_0x5292df;_0x26cf9b[_0xdfee('0x35')]=_[_0xdfee('0x37')](db[_0xdfee('0x64')]['rawAttributes']);_0x26cf9b['query']=_[_0xdfee('0x37')](_0x1e8208[_0xdfee('0x36')]);_0x26cf9b[_0xdfee('0x38')]=_[_0xdfee('0x3a')](_0x26cf9b[_0xdfee('0x35')],_0x26cf9b[_0xdfee('0x36')]);_0x17fafc['attributes']=_[_0xdfee('0x3a')](_0x26cf9b[_0xdfee('0x35')],qs[_0xdfee('0x3b')](_0x1e8208[_0xdfee('0x36')][_0xdfee('0x3b')]));_0x17fafc['attributes']=_0x17fafc['attributes'][_0xdfee('0x49')]?_0x17fafc[_0xdfee('0x39')]:_0x26cf9b[_0xdfee('0x35')];_0x17fafc[_0xdfee('0x3e')]=qs[_0xdfee('0x3f')](_0x1e8208['query'][_0xdfee('0x3f')]);_0x17fafc['where']=qs[_0xdfee('0x38')](_[_0xdfee('0x41')](_0x1e8208['query'],_0x26cf9b[_0xdfee('0x38')]));if(_0x1e8208[_0xdfee('0x36')]['filter']){_0x17fafc[_0xdfee('0x40')]=_[_0xdfee('0x43')](_0x17fafc['where'],{'$or':_[_0xdfee('0x32')](_0x17fafc[_0xdfee('0x39')],function(_0x2a4594){var _0x130a7a={};_0x130a7a[_0x2a4594]={'$like':'%'+_0x1e8208[_0xdfee('0x36')][_0xdfee('0x42')]+'%'};return _0x130a7a;})});}_0x17fafc=_[_0xdfee('0x43')]({},_0x17fafc,_0x1e8208[_0xdfee('0x45')]);return _0x51ceb4[_0xdfee('0x63')](_0x17fafc);}})[_0xdfee('0x2a')](function(_0x3819cd){if(_0x3819cd){_0x53597c=_0x3819cd[_0xdfee('0x49')];if(!_0x1e8208[_0xdfee('0x36')][_0xdfee('0x3c')](_0xdfee('0x3d'))){_0x17fafc[_0xdfee('0x23')]=qs[_0xdfee('0x23')](_0x1e8208['query'][_0xdfee('0x23')]);_0x17fafc[_0xdfee('0x25')]=qs['offset'](_0x1e8208['query'][_0xdfee('0x25')]);}return _0x51ceb4[_0xdfee('0x63')](_0x17fafc);}})['then'](function(_0x3435d2){if(_0x3435d2){return _0x3435d2?{'count':_0x53597c,'rows':_0x3435d2}:null;}})[_0xdfee('0x2a')](respondWithResult(_0x463dc3,null))[_0xdfee('0x53')](handleError(_0x463dc3,null));};exports[_0xdfee('0x65')]=function(_0x2972dc,_0x1924a8,_0x5f58fe){var _0x54606e=_0x2972dc[_0xdfee('0x4c')][_0xdfee('0x66')];return db['Team'][_0xdfee('0x59')]({'where':{'id':_0x54606e},'attributes':['id'],'include':[{'model':db[_0xdfee('0x5a')],'as':_0xdfee('0x67'),'attributes':['id',_0xdfee('0x30'),_0xdfee('0x68'),'voicePause','interface'],'raw':!![]}]})[_0xdfee('0x2a')](function(_0x5e8fff){if(_0x5e8fff){var _0x45ca7a=_['flatMap'](_0x5e8fff,function(_0x3718e5){var _0x38f347=_0x3718e5[_0xdfee('0x2b')]({'plain':!![]});return _0x38f347[_0xdfee('0x67')];});return db[_0xdfee('0x33')][_0xdfee('0x55')]({'where':{'id':_0x2972dc['params']['id']}})['then'](function(_0x23eaaa){return db[_0xdfee('0x69')]['transaction'](function(_0x17e083){return _0x23eaaa['addTeams'](_0x54606e,{'transaction':_0x17e083})[_0xdfee('0x2a')](function(){return BPromise['each'](_0x45ca7a,function(_0xa5b43){return db['UserWhatsappQueue'][_0xdfee('0x6a')]({'where':{'UserId':_0xa5b43['id'],'WhatsappQueueId':_0x2972dc[_0xdfee('0x48')]['id']},'transaction':_0x17e083});});})['then'](function(){_0x45ca7a[_0xdfee('0x6b')](function(_0x30d2d9){socket[_0xdfee('0x6c')](_0xdfee('0x6d'),{'UserId':_0x30d2d9['id'],'WhatsappQueueId':_0x23eaaa['id']});});});});});}})[_0xdfee('0x2a')](respondWithStatusCode(_0x1924a8,null))[_0xdfee('0x53')](handleError(_0x1924a8,null));};exports['removeTeams']=function(_0x4c5858,_0xdbaaa3,_0x342a20){return db['Team'][_0xdfee('0x59')]({'where':{'id':_0x4c5858[_0xdfee('0x36')][_0xdfee('0x66')]},'attributes':['id'],'include':[{'model':db[_0xdfee('0x5a')],'as':_0xdfee('0x67'),'attributes':['id'],'raw':!![]}]})[_0xdfee('0x2a')](handleEntityNotFound(_0xdbaaa3,null))[_0xdfee('0x2a')](function(_0x43f820){var _0x39c15c=_['map'](_0x43f820,'id');var _0x29abee=[];var _0x364a82=[];var _0x65bf84=squel['select']();_0x65bf84[_0xdfee('0x6e')](_0xdfee('0x6f'))[_0xdfee('0x70')](_0xdfee('0x71'),'tq')[_0xdfee('0x72')](_0xdfee('0x73'),'ut',_0xdfee('0x74'))[_0xdfee('0x40')]('WhatsappQueueId\x20=\x20?',_0x4c5858['params']['id']);for(var _0x45b6f8=0x0;_0x45b6f8<_0x43f820[_0xdfee('0x49')];_0x45b6f8+=0x1){let _0x3a52d1=_0x43f820[_0x45b6f8];for(var _0x79ee48=0x0;_0x79ee48<_0x3a52d1['Agents'][_0xdfee('0x49')];_0x79ee48+=0x1){let _0x30ebe8=_0x3a52d1[_0xdfee('0x67')][_0x79ee48];var _0x3b5470=_0x65bf84[_0xdfee('0x75')]();_0x3b5470['where'](_0xdfee('0x76'),_0x30ebe8['id']);_0x364a82[_0xdfee('0x77')](db[_0xdfee('0x69')]['query'](_0x3b5470[_0xdfee('0x78')](),{'type':db[_0xdfee('0x69')][_0xdfee('0x79')]['SELECT']})[_0xdfee('0x2a')](function(_0x165457){if(_0x165457[_0xdfee('0x49')]===0x1){return _0x30ebe8['id'];}else{var _0x49d512=_[_0xdfee('0x7a')](_['map'](_0x165457,_0xdfee('0x7b')),function(_0x50e47a){return _['includes'](_0x39c15c,_0x50e47a);});if(_0x49d512){return _0x30ebe8['id'];}}}));}}return BPromise[_0xdfee('0x7c')](_0x364a82)[_0xdfee('0x2a')](function(_0x32f5a7){_0x29abee=_(_0x29abee)['union'](_0x32f5a7)[_0xdfee('0x7d')]()[_0xdfee('0x7e')]();return db[_0xdfee('0x33')][_0xdfee('0x55')]({'where':{'id':_0x4c5858['params']['id']}})[_0xdfee('0x2a')](function(_0x2e329e){return db['sequelize'][_0xdfee('0x7f')](function(_0x13df0e){return _0x2e329e[_0xdfee('0x80')](_0x4c5858[_0xdfee('0x36')]['ids'],{'transaction':_0x13df0e})['then'](function(){if(!_[_0xdfee('0x81')](_0x29abee)){return _0x2e329e[_0xdfee('0x82')](_0x29abee,{'transaction':_0x13df0e});}})[_0xdfee('0x2a')](function(){_0x29abee['forEach'](function(_0xde40e8){socket['emit']('userWhatsappQueue:remove',{'UserId':_0xde40e8,'WhatsappQueueId':_0x2e329e['id']});});});});});});})['then'](respondWithStatusCode(_0xdbaaa3,null))[_0xdfee('0x53')](handleError(_0xdbaaa3,null));};exports['addAgents']=function(_0x505c76,_0x9dc194,_0x3d95d5){return db[_0xdfee('0x33')]['find']({'where':{'id':_0x505c76[_0xdfee('0x48')]['id']}})['then'](handleEntityNotFound(_0x9dc194,null))['then'](function(_0x130e2){if(_0x130e2){return _0x130e2[_0xdfee('0x83')](_0x505c76[_0xdfee('0x4c')]['ids'],_[_0xdfee('0x84')](_0x505c76[_0xdfee('0x4c')],[_0xdfee('0x66'),'id'])||{})['spread'](function(_0x6dd570){for(var _0xe4988f=0x0;_0xe4988f<_0x505c76[_0xdfee('0x4c')][_0xdfee('0x66')][_0xdfee('0x49')];_0xe4988f+=0x1){socket[_0xdfee('0x6c')]('userWhatsappQueue:save',{'UserId':Number(_0x505c76[_0xdfee('0x4c')]['ids'][_0xe4988f]),'WhatsappQueueId':Number(_0x505c76[_0xdfee('0x48')]['id'])});}return _0x6dd570;});}})[_0xdfee('0x2a')](respondWithResult(_0x9dc194,null))['catch'](handleError(_0x9dc194,null));};exports[_0xdfee('0x82')]=function(_0x5be63e,_0x385877,_0x4473f2){return db[_0xdfee('0x33')][_0xdfee('0x55')]({'where':{'id':_0x5be63e[_0xdfee('0x48')]['id']}})[_0xdfee('0x2a')](handleEntityNotFound(_0x385877,null))[_0xdfee('0x2a')](function(_0xd0a125){if(_0xd0a125){return _0xd0a125['removeAgents'](_0x5be63e[_0xdfee('0x36')][_0xdfee('0x66')])['then'](function(){if(_[_0xdfee('0x85')](_0x5be63e[_0xdfee('0x36')][_0xdfee('0x66')])){for(var _0x1d762f=0x0;_0x1d762f<_0x5be63e['query'][_0xdfee('0x66')][_0xdfee('0x49')];_0x1d762f+=0x1){socket[_0xdfee('0x6c')]('userWhatsappQueue:remove',{'UserId':Number(_0x5be63e[_0xdfee('0x36')][_0xdfee('0x66')][_0x1d762f]),'WhatsappQueueId':Number(_0x5be63e[_0xdfee('0x48')]['id'])});}}else{socket[_0xdfee('0x6c')](_0xdfee('0x86'),{'UserId':Number(_0x5be63e['query'][_0xdfee('0x66')]),'WhatsappQueueId':Number(_0x5be63e[_0xdfee('0x48')]['id'])});}});}})[_0xdfee('0x2a')](respondWithStatusCode(_0x385877,null))[_0xdfee('0x53')](handleError(_0x385877,null));};exports[_0xdfee('0x87')]=function(_0x123eb0,_0x39ab8d,_0x22340f){var _0x262af6={};var _0x1033d4={};var _0x4e1b98;var _0x3ce80c;return db[_0xdfee('0x33')][_0xdfee('0x57')]({'where':{'id':_0x123eb0[_0xdfee('0x48')]['id']}})[_0xdfee('0x2a')](handleEntityNotFound(_0x39ab8d,null))[_0xdfee('0x2a')](function(_0x102153){if(_0x102153){_0x4e1b98=_0x102153;_0x1033d4[_0xdfee('0x35')]=_[_0xdfee('0x37')](db[_0xdfee('0x5a')][_0xdfee('0x34')]);_0x1033d4[_0xdfee('0x36')]=_[_0xdfee('0x37')](_0x123eb0[_0xdfee('0x36')]);_0x1033d4[_0xdfee('0x38')]=_[_0xdfee('0x3a')](_0x1033d4[_0xdfee('0x35')],_0x1033d4[_0xdfee('0x36')]);_0x262af6['attributes']=_[_0xdfee('0x3a')](_0x1033d4[_0xdfee('0x35')],qs[_0xdfee('0x3b')](_0x123eb0[_0xdfee('0x36')]['fields']));_0x262af6[_0xdfee('0x39')]=_0x262af6['attributes'][_0xdfee('0x49')]?_0x262af6[_0xdfee('0x39')]:_0x1033d4[_0xdfee('0x35')];_0x262af6['order']=qs['sort'](_0x123eb0[_0xdfee('0x36')]['sort']);_0x262af6['where']=qs[_0xdfee('0x38')](_[_0xdfee('0x41')](_0x123eb0[_0xdfee('0x36')],_0x1033d4['filters']));if(_0x123eb0['query'][_0xdfee('0x42')]){_0x262af6['where']=_[_0xdfee('0x43')](_0x262af6['where'],{'$or':_[_0xdfee('0x32')](_0x262af6['attributes'],function(_0x2892e3){var _0x40ff68={};_0x40ff68[_0x2892e3]={'$like':'%'+_0x123eb0[_0xdfee('0x36')][_0xdfee('0x42')]+'%'};return _0x40ff68;})});}_0x262af6=_['merge']({},_0x262af6,_0x123eb0[_0xdfee('0x45')]);return _0x4e1b98[_0xdfee('0x87')](_0x262af6);}})['then'](function(_0x35ff8e){if(_0x35ff8e){_0x3ce80c=_0x35ff8e[_0xdfee('0x49')];if(!_0x123eb0['query']['hasOwnProperty'](_0xdfee('0x3d'))){_0x262af6[_0xdfee('0x23')]=qs['limit'](_0x123eb0[_0xdfee('0x36')][_0xdfee('0x23')]);_0x262af6[_0xdfee('0x25')]=qs['offset'](_0x123eb0[_0xdfee('0x36')]['offset']);}return _0x4e1b98['getAgents'](_0x262af6);}})[_0xdfee('0x2a')](function(_0x4a2cb2){if(_0x4a2cb2){return _0x4a2cb2?{'count':_0x3ce80c,'rows':_0x4a2cb2}:null;}})[_0xdfee('0x2a')](respondWithResult(_0x39ab8d,null))[_0xdfee('0x53')](handleError(_0x39ab8d,null));};
\ No newline at end of file
+var _0xe90f=['sort','where','filters','pick','merge','type','VIRTUAL','filter','options','include','WhatsappQueue','findAll','rows','catch','show','params','length','includeAll','find','create','body','user','role','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','hasOwnProperty','WhatsappQueueId','UserWhatsappQueue','findAndCountAll','UserId','agent','updatedAt','format','%s/%s','createdAt','findOne','Team','getTeams','User','online','voicePause','interface','flatMap','transaction','each','findOrCreate','emit','userWhatsappQueue:save','removeTeams','ids','select','from','team_has_whatsapp_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','Agents','clone','ut.UserId\x20=\x20?','push','toString','sequelize','QueryTypes','SELECT','TeamId','all','union','compact','isEmpty','removeAgents','forEach','userWhatsappQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','lodash','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','register','sendStatus','end','status','json','undefined','count','offset','set','apply','reject','save','update','then','get','WhatsappQueues','destroy','error','stack','name','map','rawAttributes','key','model','query','keys','intersection','attributes','fields','nolimit','limit','order'];(function(_0x1d85d2,_0x16f712){var _0x42246e=function(_0xc585a3){while(--_0xc585a3){_0x1d85d2['push'](_0x1d85d2['shift']());}};_0x42246e(++_0x16f712);}(_0xe90f,0xde));var _0xfe90=function(_0x3af619,_0x53662){_0x3af619=_0x3af619-0x0;var _0x5d3375=_0xe90f[_0x3af619];return _0x5d3375;};'use strict';var emlformat=require(_0xfe90('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xfe90('0x1'));var rp=require('request-promise');var moment=require(_0xfe90('0x2'));var BPromise=require(_0xfe90('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0xfe90('0x4'));var sox=require(_0xfe90('0x5'));var csv=require(_0xfe90('0x6'));var ejs=require(_0xfe90('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfe90('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xfe90('0x9'));var deskjs=require('desk.js');var toCsv=require(_0xfe90('0x6'));var querystring=require(_0xfe90('0xa'));var Papa=require(_0xfe90('0xb'));var Redis=require(_0xfe90('0xc'));var authService=require(_0xfe90('0xd'));var qs=require(_0xfe90('0xe'));var as=require(_0xfe90('0xf'));var hardwareService=require(_0xfe90('0x10'));var logger=require(_0xfe90('0x11'))(_0xfe90('0x12'));var utils=require('../../config/utils');var config=require(_0xfe90('0x13'));var licenseUtil=require(_0xfe90('0x14'));var db=require('../../mysqldb')['db'];config[_0xfe90('0x15')]=_[_0xfe90('0x16')](config[_0xfe90('0x15')],{'host':_0xfe90('0x17'),'port':0x18eb});var socket=require(_0xfe90('0x18'))(new Redis(config[_0xfe90('0x15')]));require(_0xfe90('0x19'))[_0xfe90('0x1a')](socket);function respondWithStatusCode(_0x7121c,_0x844476){_0x844476=_0x844476||0xcc;return function(_0x3f64c9){if(_0x3f64c9){return _0x7121c[_0xfe90('0x1b')](_0x844476);}return _0x7121c['status'](_0x844476)[_0xfe90('0x1c')]();};}function respondWithResult(_0xebc0b9,_0x4dc9c4){_0x4dc9c4=_0x4dc9c4||0xc8;return function(_0x239fdc){if(_0x239fdc){return _0xebc0b9[_0xfe90('0x1d')](_0x4dc9c4)[_0xfe90('0x1e')](_0x239fdc);}};}function respondWithFilteredResult(_0x150678,_0xf6fb14){return function(_0x8c22b6){if(_0x8c22b6){var _0x175505=typeof _0xf6fb14['offset']==='undefined'&&typeof _0xf6fb14['limit']===_0xfe90('0x1f');var _0x565dc8=_0x8c22b6[_0xfe90('0x20')];var _0x351559=_0x175505?0x0:_0xf6fb14['offset'];var _0x4b9e07=_0x175505?_0x8c22b6[_0xfe90('0x20')]:_0xf6fb14[_0xfe90('0x21')]+_0xf6fb14['limit'];var _0x37ded7;if(_0x4b9e07>=_0x565dc8){_0x4b9e07=_0x565dc8;_0x37ded7=0xc8;}else{_0x37ded7=0xce;}_0x150678[_0xfe90('0x1d')](_0x37ded7);return _0x150678[_0xfe90('0x22')]('Content-Range',_0x351559+'-'+_0x4b9e07+'/'+_0x565dc8)[_0xfe90('0x1e')](_0x8c22b6);}return null;};}function patchUpdates(_0x225713){return function(_0x304154){try{jsonpatch[_0xfe90('0x23')](_0x304154,_0x225713,!![]);}catch(_0x16da5a){return BPromise[_0xfe90('0x24')](_0x16da5a);}return _0x304154[_0xfe90('0x25')]();};}function saveUpdates(_0x3a5cac,_0xd5fa82){return function(_0x364baf){if(_0x364baf){return _0x364baf[_0xfe90('0x26')](_0x3a5cac)['then'](function(_0x394a16){return _0x394a16;});}return null;};}function removeEntity(_0xa862f4,_0xaba784){return function(_0x140997){if(_0x140997){return _0x140997['destroy']()[_0xfe90('0x27')](function(){var _0x7e1e73=_0x140997[_0xfe90('0x28')]({'plain':!![]});var _0x5efa3d=_0xfe90('0x29');return db['UserProfileResource'][_0xfe90('0x2a')]({'where':{'type':_0x5efa3d,'resourceId':_0x7e1e73['id']}})[_0xfe90('0x27')](function(){return _0x140997;});})[_0xfe90('0x27')](function(){_0xa862f4[_0xfe90('0x1d')](0xcc)[_0xfe90('0x1c')]();});}};}function handleEntityNotFound(_0x29d8d7,_0x5d43b8){return function(_0x119ef8){if(!_0x119ef8){_0x29d8d7[_0xfe90('0x1b')](0x194);}return _0x119ef8;};}function handleError(_0x38d645,_0x45d3e4){_0x45d3e4=_0x45d3e4||0x1f4;return function(_0x585704){logger[_0xfe90('0x2b')](_0x585704[_0xfe90('0x2c')]);if(_0x585704[_0xfe90('0x2d')]){delete _0x585704['name'];}_0x38d645[_0xfe90('0x1d')](_0x45d3e4)['send'](_0x585704);};}exports['index']=function(_0x26c68a,_0x2c89e3){var _0x45b291={},_0x15f1be={},_0x19ec7c={'count':0x0,'rows':[]};var _0x3f920a=_[_0xfe90('0x2e')](db['WhatsappQueue'][_0xfe90('0x2f')],function(_0xc76ce){return{'name':_0xc76ce['fieldName'],'type':_0xc76ce['type'][_0xfe90('0x30')]};});_0x15f1be[_0xfe90('0x31')]=_[_0xfe90('0x2e')](_0x3f920a,_0xfe90('0x2d'));_0x15f1be[_0xfe90('0x32')]=_[_0xfe90('0x33')](_0x26c68a[_0xfe90('0x32')]);_0x15f1be['filters']=_[_0xfe90('0x34')](_0x15f1be[_0xfe90('0x31')],_0x15f1be['query']);_0x45b291[_0xfe90('0x35')]=_[_0xfe90('0x34')](_0x15f1be[_0xfe90('0x31')],qs[_0xfe90('0x36')](_0x26c68a[_0xfe90('0x32')][_0xfe90('0x36')]));_0x45b291['attributes']=_0x45b291[_0xfe90('0x35')]['length']?_0x45b291['attributes']:_0x15f1be[_0xfe90('0x31')];if(!_0x26c68a['query']['hasOwnProperty'](_0xfe90('0x37'))){_0x45b291[_0xfe90('0x38')]=qs['limit'](_0x26c68a[_0xfe90('0x32')]['limit']);_0x45b291[_0xfe90('0x21')]=qs['offset'](_0x26c68a[_0xfe90('0x32')]['offset']);}_0x45b291[_0xfe90('0x39')]=qs[_0xfe90('0x3a')](_0x26c68a[_0xfe90('0x32')][_0xfe90('0x3a')]);_0x45b291[_0xfe90('0x3b')]=qs[_0xfe90('0x3c')](_[_0xfe90('0x3d')](_0x26c68a[_0xfe90('0x32')],_0x15f1be[_0xfe90('0x3c')]),_0x3f920a);if(_0x26c68a[_0xfe90('0x32')]['filter']){_0x45b291[_0xfe90('0x3b')]=_[_0xfe90('0x3e')](_0x45b291[_0xfe90('0x3b')],{'$or':_[_0xfe90('0x2e')](_0x3f920a,function(_0x4e77bd){if(_0x4e77bd[_0xfe90('0x3f')]!==_0xfe90('0x40')){var _0xc438e6={};_0xc438e6[_0x4e77bd[_0xfe90('0x2d')]]={'$like':'%'+_0x26c68a[_0xfe90('0x32')][_0xfe90('0x41')]+'%'};return _0xc438e6;}})});}_0x45b291=_[_0xfe90('0x3e')]({},_0x45b291,_0x26c68a[_0xfe90('0x42')]);var _0x4f2049={'where':_0x45b291[_0xfe90('0x3b')]};return db['WhatsappQueue'][_0xfe90('0x20')](_0x4f2049)['then'](function(_0x1630d7){_0x19ec7c['count']=_0x1630d7;if(_0x26c68a['query']['includeAll']){_0x45b291[_0xfe90('0x43')]=[{'all':!![]}];}return db[_0xfe90('0x44')][_0xfe90('0x45')](_0x45b291);})[_0xfe90('0x27')](function(_0x406dab){_0x19ec7c[_0xfe90('0x46')]=_0x406dab;return _0x19ec7c;})['then'](respondWithFilteredResult(_0x2c89e3,_0x45b291))[_0xfe90('0x47')](handleError(_0x2c89e3,null));};exports[_0xfe90('0x48')]=function(_0x290ed6,_0x1c6da0){var _0x4b8876={'raw':!![],'where':{'id':_0x290ed6[_0xfe90('0x49')]['id']}},_0x2969ac={};_0x2969ac['model']=_[_0xfe90('0x33')](db['WhatsappQueue']['rawAttributes']);_0x2969ac['query']=_[_0xfe90('0x33')](_0x290ed6['query']);_0x2969ac[_0xfe90('0x3c')]=_[_0xfe90('0x34')](_0x2969ac[_0xfe90('0x31')],_0x2969ac[_0xfe90('0x32')]);_0x4b8876[_0xfe90('0x35')]=_[_0xfe90('0x34')](_0x2969ac[_0xfe90('0x31')],qs[_0xfe90('0x36')](_0x290ed6[_0xfe90('0x32')][_0xfe90('0x36')]));_0x4b8876[_0xfe90('0x35')]=_0x4b8876[_0xfe90('0x35')][_0xfe90('0x4a')]?_0x4b8876[_0xfe90('0x35')]:_0x2969ac[_0xfe90('0x31')];if(_0x290ed6[_0xfe90('0x32')][_0xfe90('0x4b')]){_0x4b8876[_0xfe90('0x43')]=[{'all':!![]}];}_0x4b8876=_[_0xfe90('0x3e')]({},_0x4b8876,_0x290ed6['options']);return db[_0xfe90('0x44')][_0xfe90('0x4c')](_0x4b8876)[_0xfe90('0x27')](handleEntityNotFound(_0x1c6da0,null))[_0xfe90('0x27')](respondWithResult(_0x1c6da0,null))[_0xfe90('0x47')](handleError(_0x1c6da0,null));};exports['create']=function(_0x2bf8fb,_0x163ba9){return db[_0xfe90('0x44')][_0xfe90('0x4d')](_0x2bf8fb[_0xfe90('0x4e')],{})[_0xfe90('0x27')](function(_0x20fef2){var _0x4b360e=_0x2bf8fb[_0xfe90('0x4f')]['get']({'plain':!![]});if(!_0x4b360e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4b360e[_0xfe90('0x50')]==='user'){var _0x1921b9=_0x20fef2[_0xfe90('0x28')]({'plain':!![]});var _0x2d515b=_0xfe90('0x29');return db['UserProfileSection'][_0xfe90('0x4c')]({'where':{'name':_0x2d515b,'userProfileId':_0x4b360e[_0xfe90('0x51')]},'raw':!![]})['then'](function(_0x5b624e){if(_0x5b624e&&_0x5b624e[_0xfe90('0x52')]===0x0){return db[_0xfe90('0x53')][_0xfe90('0x4d')]({'name':_0x1921b9[_0xfe90('0x2d')],'resourceId':_0x1921b9['id'],'type':_0x5b624e[_0xfe90('0x2d')],'sectionId':_0x5b624e['id']},{})['then'](function(){return _0x20fef2;});}else{return _0x20fef2;}})[_0xfe90('0x47')](function(_0x193020){logger[_0xfe90('0x2b')](_0xfe90('0x54'),_0x193020);throw _0x193020;});}return _0x20fef2;})[_0xfe90('0x27')](respondWithResult(_0x163ba9,0xc9))[_0xfe90('0x47')](handleError(_0x163ba9,null));};exports[_0xfe90('0x26')]=function(_0x44148a,_0x3feda3){if(_0x44148a[_0xfe90('0x4e')]['id']){delete _0x44148a[_0xfe90('0x4e')]['id'];}return db['WhatsappQueue'][_0xfe90('0x4c')]({'where':{'id':_0x44148a[_0xfe90('0x49')]['id']}})[_0xfe90('0x27')](handleEntityNotFound(_0x3feda3,null))['then'](saveUpdates(_0x44148a[_0xfe90('0x4e')],null))[_0xfe90('0x27')](respondWithResult(_0x3feda3,null))[_0xfe90('0x47')](handleError(_0x3feda3,null));};exports[_0xfe90('0x2a')]=function(_0x72175e,_0x153173){return db[_0xfe90('0x44')]['find']({'where':{'id':_0x72175e[_0xfe90('0x49')]['id']}})['then'](handleEntityNotFound(_0x153173,null))[_0xfe90('0x27')](removeEntity(_0x153173,null))['catch'](handleError(_0x153173,null));};exports[_0xfe90('0x55')]=function(_0x43af46,_0x36bb8f){return db[_0xfe90('0x44')][_0xfe90('0x55')]()['then'](respondWithResult(_0x36bb8f,null))[_0xfe90('0x47')](handleError(_0x36bb8f,null));};exports[_0xfe90('0x56')]=function(_0x158ba8,_0x2a8e8b,_0x2f4b25){var _0x36b8d6={'raw':!![],'where':{}},_0x114d93={},_0xf9f9a7;return db[_0xfe90('0x44')]['findOne']({'where':{'id':_0x158ba8[_0xfe90('0x49')]['id']}})[_0xfe90('0x27')](handleEntityNotFound(_0x2a8e8b,null))['then'](function(_0x55fbdc){if(_0x55fbdc){_0xf9f9a7=_0x55fbdc[_0xfe90('0x28')]({'plain':!![]});_0x114d93[_0xfe90('0x31')]=_[_0xfe90('0x33')](db['UserWhatsappQueue'][_0xfe90('0x2f')]);_0x114d93[_0xfe90('0x32')]=_['keys'](_0x158ba8[_0xfe90('0x32')]);_0x114d93[_0xfe90('0x3c')]=_[_0xfe90('0x34')](_0x114d93[_0xfe90('0x31')],_0x114d93[_0xfe90('0x32')]);_0x36b8d6[_0xfe90('0x35')]=_['intersection'](_0x114d93['model'],qs['fields'](_0x158ba8[_0xfe90('0x32')][_0xfe90('0x36')]));_0x36b8d6[_0xfe90('0x35')]=_0x36b8d6['attributes']['length']?_0x36b8d6[_0xfe90('0x35')]:_0x114d93[_0xfe90('0x31')];if(!_0x158ba8[_0xfe90('0x32')][_0xfe90('0x57')]('nolimit')){_0x36b8d6[_0xfe90('0x38')]=qs[_0xfe90('0x38')](_0x158ba8['query'][_0xfe90('0x38')]);_0x36b8d6[_0xfe90('0x21')]=qs[_0xfe90('0x21')](_0x158ba8[_0xfe90('0x32')]['offset']);}_0x36b8d6['order']=qs[_0xfe90('0x3a')](_0x158ba8[_0xfe90('0x32')][_0xfe90('0x3a')]);_0x36b8d6[_0xfe90('0x3b')]=qs['filters'](_['pick'](_0x158ba8['query'],_0x114d93[_0xfe90('0x3c')]));_0x36b8d6['where'][_0xfe90('0x58')]=_0x55fbdc['id'];if(_0x158ba8[_0xfe90('0x32')][_0xfe90('0x41')]){_0x36b8d6[_0xfe90('0x3b')]=_[_0xfe90('0x3e')](_0x36b8d6['where'],{'$or':_[_0xfe90('0x2e')](_0x36b8d6[_0xfe90('0x35')],function(_0x326978){var _0x2c7d10={};_0x2c7d10[_0x326978]={'$like':'%'+_0x158ba8['query'][_0xfe90('0x41')]+'%'};return _0x2c7d10;})});}_0x36b8d6=_[_0xfe90('0x3e')]({},_0x36b8d6,_0x158ba8[_0xfe90('0x42')]);return db[_0xfe90('0x59')][_0xfe90('0x45')](_0x36b8d6);}})['then'](function(_0xd3701a){if(_0xd3701a){return db['User'][_0xfe90('0x5a')]({'where':{'id':_[_0xfe90('0x2e')](_0xd3701a,_0xfe90('0x5b')),'role':_0xfe90('0x5c')},'attributes':['id',_0xfe90('0x2d'),'whatsappPause',_0xfe90('0x5d'),'createdAt']});}})[_0xfe90('0x27')](function(_0x3d97a6){if(_0x3d97a6){return{'count':_0x3d97a6[_0xfe90('0x20')],'rows':_[_0xfe90('0x2e')](_0x3d97a6[_0xfe90('0x46')],function(_0x15bf0a){return{'membername':_0x15bf0a[_0xfe90('0x2d')],'UserId':_0x15bf0a['id'],'queue_name':_0xf9f9a7[_0xfe90('0x2d')],'WhatsappQueueId':_0xf9f9a7['id'],'interface':util[_0xfe90('0x5e')](_0xfe90('0x5f'),'SIP',_0x15bf0a[_0xfe90('0x2d')]),'penalty':0x0,'paused':_0x15bf0a['whatsappPause'],'createdAt':_0x15bf0a[_0xfe90('0x60')],'updatedAt':_0x15bf0a[_0xfe90('0x5d')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xfe90('0x27')](respondWithFilteredResult(_0x2a8e8b,_0x36b8d6))[_0xfe90('0x47')](handleError(_0x2a8e8b,null));};exports['getTeams']=function(_0x15c043,_0x4d3d34,_0x2ab54c){var _0x44547a={};var _0x2e0539={};var _0x2c5501;var _0xc82dd;return db[_0xfe90('0x44')][_0xfe90('0x61')]({'where':{'id':_0x15c043['params']['id']}})[_0xfe90('0x27')](handleEntityNotFound(_0x4d3d34,null))[_0xfe90('0x27')](function(_0x3f3ba3){if(_0x3f3ba3){_0x2c5501=_0x3f3ba3;_0x2e0539[_0xfe90('0x31')]=_[_0xfe90('0x33')](db[_0xfe90('0x62')]['rawAttributes']);_0x2e0539[_0xfe90('0x32')]=_[_0xfe90('0x33')](_0x15c043[_0xfe90('0x32')]);_0x2e0539[_0xfe90('0x3c')]=_[_0xfe90('0x34')](_0x2e0539[_0xfe90('0x31')],_0x2e0539[_0xfe90('0x32')]);_0x44547a[_0xfe90('0x35')]=_[_0xfe90('0x34')](_0x2e0539[_0xfe90('0x31')],qs[_0xfe90('0x36')](_0x15c043[_0xfe90('0x32')][_0xfe90('0x36')]));_0x44547a[_0xfe90('0x35')]=_0x44547a['attributes'][_0xfe90('0x4a')]?_0x44547a['attributes']:_0x2e0539['model'];_0x44547a[_0xfe90('0x39')]=qs[_0xfe90('0x3a')](_0x15c043[_0xfe90('0x32')][_0xfe90('0x3a')]);_0x44547a[_0xfe90('0x3b')]=qs[_0xfe90('0x3c')](_['pick'](_0x15c043[_0xfe90('0x32')],_0x2e0539['filters']));if(_0x15c043[_0xfe90('0x32')]['filter']){_0x44547a['where']=_['merge'](_0x44547a[_0xfe90('0x3b')],{'$or':_[_0xfe90('0x2e')](_0x44547a[_0xfe90('0x35')],function(_0x479b64){var _0x2f135b={};_0x2f135b[_0x479b64]={'$like':'%'+_0x15c043[_0xfe90('0x32')][_0xfe90('0x41')]+'%'};return _0x2f135b;})});}_0x44547a=_['merge']({},_0x44547a,_0x15c043['options']);return _0x2c5501[_0xfe90('0x63')](_0x44547a);}})['then'](function(_0x4506fe){if(_0x4506fe){_0xc82dd=_0x4506fe[_0xfe90('0x4a')];if(!_0x15c043['query'][_0xfe90('0x57')](_0xfe90('0x37'))){_0x44547a['limit']=qs['limit'](_0x15c043[_0xfe90('0x32')][_0xfe90('0x38')]);_0x44547a['offset']=qs['offset'](_0x15c043['query']['offset']);}return _0x2c5501['getTeams'](_0x44547a);}})['then'](function(_0x47e768){if(_0x47e768){return _0x47e768?{'count':_0xc82dd,'rows':_0x47e768}:null;}})[_0xfe90('0x27')](respondWithResult(_0x4d3d34,null))[_0xfe90('0x47')](handleError(_0x4d3d34,null));};exports['addTeams']=function(_0x4ec77f,_0x33c910,_0x477482){var _0x4e5912=_0x4ec77f['body']['ids'];return db[_0xfe90('0x62')][_0xfe90('0x45')]({'where':{'id':_0x4e5912},'attributes':['id'],'include':[{'model':db[_0xfe90('0x64')],'as':'Agents','attributes':['id',_0xfe90('0x2d'),_0xfe90('0x65'),_0xfe90('0x66'),_0xfe90('0x67')],'raw':!![]}]})['then'](function(_0x4350fa){if(_0x4350fa){var _0x307deb=_[_0xfe90('0x68')](_0x4350fa,function(_0x4e457b){var _0x39af7b=_0x4e457b[_0xfe90('0x28')]({'plain':!![]});return _0x39af7b['Agents'];});return db[_0xfe90('0x44')][_0xfe90('0x4c')]({'where':{'id':_0x4ec77f[_0xfe90('0x49')]['id']}})['then'](function(_0xe16025){return db['sequelize'][_0xfe90('0x69')](function(_0x3952fd){return _0xe16025['addTeams'](_0x4e5912,{'transaction':_0x3952fd})[_0xfe90('0x27')](function(){return BPromise[_0xfe90('0x6a')](_0x307deb,function(_0xfaa1ee){return db[_0xfe90('0x59')][_0xfe90('0x6b')]({'where':{'UserId':_0xfaa1ee['id'],'WhatsappQueueId':_0x4ec77f[_0xfe90('0x49')]['id']},'transaction':_0x3952fd});});})['then'](function(){_0x307deb['forEach'](function(_0x12aae4){socket[_0xfe90('0x6c')](_0xfe90('0x6d'),{'UserId':_0x12aae4['id'],'WhatsappQueueId':_0xe16025['id']});});});});});}})[_0xfe90('0x27')](respondWithStatusCode(_0x33c910,null))[_0xfe90('0x47')](handleError(_0x33c910,null));};exports[_0xfe90('0x6e')]=function(_0x584dd5,_0x987a4c,_0x2f4047){return db['Team']['findAll']({'where':{'id':_0x584dd5[_0xfe90('0x32')][_0xfe90('0x6f')]},'attributes':['id'],'include':[{'model':db[_0xfe90('0x64')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x987a4c,null))[_0xfe90('0x27')](function(_0x2fd3da){var _0x1e0d9b=_[_0xfe90('0x2e')](_0x2fd3da,'id');var _0x3cd48b=[];var _0xf6be30=[];var _0x109f2a=squel[_0xfe90('0x70')]();_0x109f2a['field']('tq.TeamId')[_0xfe90('0x71')](_0xfe90('0x72'),'tq')[_0xfe90('0x73')](_0xfe90('0x74'),'ut',_0xfe90('0x75'))['where'](_0xfe90('0x76'),_0x584dd5['params']['id']);for(var _0x52fae1=0x0;_0x52fae1<_0x2fd3da[_0xfe90('0x4a')];_0x52fae1+=0x1){let _0x13216c=_0x2fd3da[_0x52fae1];for(var _0x503544=0x0;_0x503544<_0x13216c[_0xfe90('0x77')][_0xfe90('0x4a')];_0x503544+=0x1){let _0x1e4aa2=_0x13216c[_0xfe90('0x77')][_0x503544];var _0x7f6c75=_0x109f2a[_0xfe90('0x78')]();_0x7f6c75[_0xfe90('0x3b')](_0xfe90('0x79'),_0x1e4aa2['id']);_0xf6be30[_0xfe90('0x7a')](db['sequelize']['query'](_0x7f6c75[_0xfe90('0x7b')](),{'type':db[_0xfe90('0x7c')][_0xfe90('0x7d')][_0xfe90('0x7e')]})[_0xfe90('0x27')](function(_0x1904e1){if(_0x1904e1[_0xfe90('0x4a')]===0x1){return _0x1e4aa2['id'];}else{var _0x3c984c=_['every'](_['map'](_0x1904e1,_0xfe90('0x7f')),function(_0x1ac3f0){return _['includes'](_0x1e0d9b,_0x1ac3f0);});if(_0x3c984c){return _0x1e4aa2['id'];}}}));}}return BPromise[_0xfe90('0x80')](_0xf6be30)[_0xfe90('0x27')](function(_0x5649fb){_0x3cd48b=_(_0x3cd48b)[_0xfe90('0x81')](_0x5649fb)[_0xfe90('0x82')]()['value']();return db[_0xfe90('0x44')]['find']({'where':{'id':_0x584dd5[_0xfe90('0x49')]['id']}})[_0xfe90('0x27')](function(_0x1b2a81){return db[_0xfe90('0x7c')]['transaction'](function(_0x5c010d){return _0x1b2a81[_0xfe90('0x6e')](_0x584dd5['query'][_0xfe90('0x6f')],{'transaction':_0x5c010d})[_0xfe90('0x27')](function(){if(!_[_0xfe90('0x83')](_0x3cd48b)){return _0x1b2a81[_0xfe90('0x84')](_0x3cd48b,{'transaction':_0x5c010d});}})[_0xfe90('0x27')](function(){_0x3cd48b[_0xfe90('0x85')](function(_0x5284ca){socket[_0xfe90('0x6c')](_0xfe90('0x86'),{'UserId':_0x5284ca,'WhatsappQueueId':_0x1b2a81['id']});});});});});});})[_0xfe90('0x27')](respondWithStatusCode(_0x987a4c,null))[_0xfe90('0x47')](handleError(_0x987a4c,null));};exports[_0xfe90('0x87')]=function(_0x21a26e,_0x3f6cad,_0x234c76){return db['WhatsappQueue'][_0xfe90('0x4c')]({'where':{'id':_0x21a26e[_0xfe90('0x49')]['id']}})[_0xfe90('0x27')](handleEntityNotFound(_0x3f6cad,null))[_0xfe90('0x27')](function(_0x13a8ac){if(_0x13a8ac){return _0x13a8ac[_0xfe90('0x87')](_0x21a26e[_0xfe90('0x4e')][_0xfe90('0x6f')],_[_0xfe90('0x88')](_0x21a26e['body'],['ids','id'])||{})[_0xfe90('0x89')](function(_0x2a2cac){for(var _0x4d3a95=0x0;_0x4d3a95<_0x21a26e[_0xfe90('0x4e')][_0xfe90('0x6f')][_0xfe90('0x4a')];_0x4d3a95+=0x1){socket[_0xfe90('0x6c')](_0xfe90('0x6d'),{'UserId':Number(_0x21a26e['body']['ids'][_0x4d3a95]),'WhatsappQueueId':Number(_0x21a26e[_0xfe90('0x49')]['id'])});}return _0x2a2cac;});}})[_0xfe90('0x27')](respondWithResult(_0x3f6cad,null))[_0xfe90('0x47')](handleError(_0x3f6cad,null));};exports[_0xfe90('0x84')]=function(_0x3407e5,_0x31f98f,_0x4c129c){return db[_0xfe90('0x44')][_0xfe90('0x4c')]({'where':{'id':_0x3407e5[_0xfe90('0x49')]['id']}})['then'](handleEntityNotFound(_0x31f98f,null))[_0xfe90('0x27')](function(_0x171c88){if(_0x171c88){return _0x171c88[_0xfe90('0x84')](_0x3407e5['query'][_0xfe90('0x6f')])['then'](function(){if(_[_0xfe90('0x8a')](_0x3407e5[_0xfe90('0x32')][_0xfe90('0x6f')])){for(var _0x28db0a=0x0;_0x28db0a<_0x3407e5[_0xfe90('0x32')][_0xfe90('0x6f')][_0xfe90('0x4a')];_0x28db0a+=0x1){socket[_0xfe90('0x6c')]('userWhatsappQueue:remove',{'UserId':Number(_0x3407e5[_0xfe90('0x32')][_0xfe90('0x6f')][_0x28db0a]),'WhatsappQueueId':Number(_0x3407e5['params']['id'])});}}else{socket[_0xfe90('0x6c')](_0xfe90('0x86'),{'UserId':Number(_0x3407e5[_0xfe90('0x32')][_0xfe90('0x6f')]),'WhatsappQueueId':Number(_0x3407e5[_0xfe90('0x49')]['id'])});}});}})[_0xfe90('0x27')](respondWithStatusCode(_0x31f98f,null))[_0xfe90('0x47')](handleError(_0x31f98f,null));};exports[_0xfe90('0x8b')]=function(_0x159f1a,_0x579a7e,_0x41fa19){var _0x592b50={};var _0xb604ab={};var _0x36a8c0;var _0x1c0155;return db['WhatsappQueue'][_0xfe90('0x61')]({'where':{'id':_0x159f1a[_0xfe90('0x49')]['id']}})[_0xfe90('0x27')](handleEntityNotFound(_0x579a7e,null))[_0xfe90('0x27')](function(_0x116896){if(_0x116896){_0x36a8c0=_0x116896;_0xb604ab[_0xfe90('0x31')]=_[_0xfe90('0x33')](db['User'][_0xfe90('0x2f')]);_0xb604ab[_0xfe90('0x32')]=_[_0xfe90('0x33')](_0x159f1a[_0xfe90('0x32')]);_0xb604ab[_0xfe90('0x3c')]=_['intersection'](_0xb604ab[_0xfe90('0x31')],_0xb604ab[_0xfe90('0x32')]);_0x592b50[_0xfe90('0x35')]=_[_0xfe90('0x34')](_0xb604ab['model'],qs[_0xfe90('0x36')](_0x159f1a[_0xfe90('0x32')][_0xfe90('0x36')]));_0x592b50[_0xfe90('0x35')]=_0x592b50[_0xfe90('0x35')][_0xfe90('0x4a')]?_0x592b50['attributes']:_0xb604ab[_0xfe90('0x31')];_0x592b50[_0xfe90('0x39')]=qs[_0xfe90('0x3a')](_0x159f1a[_0xfe90('0x32')]['sort']);_0x592b50[_0xfe90('0x3b')]=qs[_0xfe90('0x3c')](_['pick'](_0x159f1a[_0xfe90('0x32')],_0xb604ab[_0xfe90('0x3c')]));if(_0x159f1a['query'][_0xfe90('0x41')]){_0x592b50[_0xfe90('0x3b')]=_[_0xfe90('0x3e')](_0x592b50[_0xfe90('0x3b')],{'$or':_[_0xfe90('0x2e')](_0x592b50[_0xfe90('0x35')],function(_0x6846be){var _0x2d762a={};_0x2d762a[_0x6846be]={'$like':'%'+_0x159f1a['query'][_0xfe90('0x41')]+'%'};return _0x2d762a;})});}_0x592b50=_[_0xfe90('0x3e')]({},_0x592b50,_0x159f1a[_0xfe90('0x42')]);return _0x36a8c0['getAgents'](_0x592b50);}})[_0xfe90('0x27')](function(_0xa01944){if(_0xa01944){_0x1c0155=_0xa01944['length'];if(!_0x159f1a[_0xfe90('0x32')][_0xfe90('0x57')](_0xfe90('0x37'))){_0x592b50[_0xfe90('0x38')]=qs[_0xfe90('0x38')](_0x159f1a[_0xfe90('0x32')][_0xfe90('0x38')]);_0x592b50[_0xfe90('0x21')]=qs[_0xfe90('0x21')](_0x159f1a[_0xfe90('0x32')][_0xfe90('0x21')]);}return _0x36a8c0[_0xfe90('0x8b')](_0x592b50);}})[_0xfe90('0x27')](function(_0x37c94b){if(_0x37c94b){return _0x37c94b?{'count':_0x1c0155,'rows':_0x37c94b}:null;}})['then'](respondWithResult(_0x579a7e,null))[_0xfe90('0x47')](handleError(_0x579a7e,null));};
\ No newline at end of file
index c6b20b4..ad77fa4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0889=['WhatsappQueue','setMaxListeners','update','remove','emit','hasOwnProperty','hook','events'];(function(_0x2dc1b7,_0x2458aa){var _0x4982c0=function(_0x528718){while(--_0x528718){_0x2dc1b7['push'](_0x2dc1b7['shift']());}};_0x4982c0(++_0x2458aa);}(_0x0889,0x1af));var _0x9088=function(_0x2dbd04,_0x18a3d3){_0x2dbd04=_0x2dbd04-0x0;var _0x5aeafd=_0x0889[_0x2dbd04];return _0x5aeafd;};'use strict';var EventEmitter=require(_0x9088('0x0'));var WhatsappQueue=require('../../mysqldb')['db'][_0x9088('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0x9088('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x9088('0x3'),'afterDestroy':_0x9088('0x4')};function emitEvent(_0x471a28){return function(_0xebc163,_0x4081c5,_0x4ea0f5){WhatsappQueueEvents['emit'](_0x471a28+':'+_0xebc163['id'],_0xebc163);WhatsappQueueEvents[_0x9088('0x5')](_0x471a28,_0xebc163);_0x4ea0f5(null);};}for(var e in events){if(events[_0x9088('0x6')](e)){var event=events[e];WhatsappQueue[_0x9088('0x7')](e,emitEvent(event));}}module['exports']=WhatsappQueueEvents;
\ No newline at end of file
+var _0x5bd6=['remove','emit','hook','exports','../../mysqldb','setMaxListeners','save','update'];(function(_0x1ac84d,_0x2d5f8f){var _0x1829d2=function(_0x1ac769){while(--_0x1ac769){_0x1ac84d['push'](_0x1ac84d['shift']());}};_0x1829d2(++_0x2d5f8f);}(_0x5bd6,0x124));var _0x65bd=function(_0x363ef8,_0x4ecb1a){_0x363ef8=_0x363ef8-0x0;var _0x148822=_0x5bd6[_0x363ef8];return _0x148822;};'use strict';var EventEmitter=require('events');var WhatsappQueue=require(_0x65bd('0x0'))['db']['WhatsappQueue'];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0x65bd('0x1')](0x0);var events={'afterCreate':_0x65bd('0x2'),'afterUpdate':_0x65bd('0x3'),'afterDestroy':_0x65bd('0x4')};function emitEvent(_0x4486ab){return function(_0x572aa4,_0x109b46,_0x4a9882){WhatsappQueueEvents['emit'](_0x4486ab+':'+_0x572aa4['id'],_0x572aa4);WhatsappQueueEvents[_0x65bd('0x5')](_0x4486ab,_0x572aa4);_0x4a9882(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappQueue[_0x65bd('0x6')](e,emitEvent(event));}}module[_0x65bd('0x7')]=WhatsappQueueEvents;
\ No newline at end of file
index 838fd52..3a89c3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb408=['./whatsappQueue.attributes','exports','define','whatsapp_queues','lodash','../../config/logger','api','bluebird','request-promise','rimraf'];(function(_0x1b36e3,_0x44cd43){var _0x4ed0f1=function(_0x199bbb){while(--_0x199bbb){_0x1b36e3['push'](_0x1b36e3['shift']());}};_0x4ed0f1(++_0x44cd43);}(_0xb408,0x14e));var _0x8b40=function(_0x1dcea6,_0x311cc6){_0x1dcea6=_0x1dcea6-0x0;var _0xcbd902=_0xb408[_0x1dcea6];return _0xcbd902;};'use strict';var _=require(_0x8b40('0x0'));var util=require('util');var logger=require(_0x8b40('0x1'))(_0x8b40('0x2'));var moment=require('moment');var BPromise=require(_0x8b40('0x3'));var rp=require(_0x8b40('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8b40('0x5'));var config=require('../../config/environment');var attributes=require(_0x8b40('0x6'));module[_0x8b40('0x7')]=function(_0x5dcbdc,_0x1fc2fd){return _0x5dcbdc[_0x8b40('0x8')]('WhatsappQueue',attributes,{'tableName':_0x8b40('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xeaca=['api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','whatsapp_queues','lodash','util','../../config/logger'];(function(_0x3a23b6,_0x272b99){var _0x1ffb80=function(_0x5ed21d){while(--_0x5ed21d){_0x3a23b6['push'](_0x3a23b6['shift']());}};_0x1ffb80(++_0x272b99);}(_0xeaca,0x11d));var _0xaeac=function(_0x30a621,_0x411ff7){_0x30a621=_0x30a621-0x0;var _0x2b886a=_0xeaca[_0x30a621];return _0x2b886a;};'use strict';var _=require(_0xaeac('0x0'));var util=require(_0xaeac('0x1'));var logger=require(_0xaeac('0x2'))(_0xaeac('0x3'));var moment=require(_0xaeac('0x4'));var BPromise=require(_0xaeac('0x5'));var rp=require(_0xaeac('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xaeac('0x7'));var config=require(_0xaeac('0x8'));var attributes=require('./whatsappQueue.attributes');module[_0xaeac('0x9')]=function(_0x3f025e,_0x169d91){return _0x3f025e[_0xaeac('0xa')]('WhatsappQueue',attributes,{'tableName':_0xaeac('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4b0dc30..c422c06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe954=['../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','./whatsappQueue.socket','register','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetWhatsappQueue','WhatsappQueue','findAll','options','raw','where','limit','include','map','attributes','model','then','ShowWhatsappQueue','find','stringify','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x225bed,_0x1b6ada){var _0x8988ec=function(_0x1975c3){while(--_0x1975c3){_0x225bed['push'](_0x225bed['shift']());}};_0x8988ec(++_0x1b6ada);}(_0xe954,0x120));var _0x4e95=function(_0x5f5d24,_0x749b73){_0x5f5d24=_0x5f5d24-0x0;var _0x1e92bf=_0xe954[_0x5f5d24];return _0x1e92bf;};'use strict';var _=require(_0x4e95('0x0'));var util=require(_0x4e95('0x1'));var moment=require(_0x4e95('0x2'));var BPromise=require(_0x4e95('0x3'));var rs=require(_0x4e95('0x4'));var fs=require('fs');var Redis=require(_0x4e95('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x4e95('0x6'));var logger=require(_0x4e95('0x7'))(_0x4e95('0x8'));var config=require(_0x4e95('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x4e95('0xa')][_0x4e95('0xb')]({'port':0x232a});config[_0x4e95('0xc')]=_['defaults'](config[_0x4e95('0xc')],{'host':_0x4e95('0xd'),'port':0x18eb});var socket=require(_0x4e95('0xe'))(new Redis(config['redis']));require(_0x4e95('0xf'))[_0x4e95('0x10')](socket);function respondWithRpcPromise(_0x464647,_0x50982f,_0xcb7c41){return new BPromise(function(_0x466f6d,_0x281cde){return client['request'](_0x464647,_0xcb7c41)['then'](function(_0x193f48){logger[_0x4e95('0x11')](_0x4e95('0x12'),_0x50982f,_0x4e95('0x13'));logger[_0x4e95('0x14')](_0x4e95('0x15'),_0x50982f,_0x4e95('0x13'),JSON['stringify'](_0x193f48));if(_0x193f48[_0x4e95('0x16')]){if(_0x193f48[_0x4e95('0x16')][_0x4e95('0x17')]===0x1f4){logger[_0x4e95('0x16')](_0x4e95('0x12'),_0x50982f,_0x193f48[_0x4e95('0x16')]['message']);return _0x281cde(_0x193f48[_0x4e95('0x16')][_0x4e95('0x18')]);}logger['error'](_0x4e95('0x12'),_0x50982f,_0x193f48[_0x4e95('0x16')][_0x4e95('0x18')]);return _0x466f6d(_0x193f48[_0x4e95('0x16')][_0x4e95('0x18')]);}else{logger[_0x4e95('0x11')](_0x4e95('0x12'),_0x50982f,_0x4e95('0x13'));_0x466f6d(_0x193f48[_0x4e95('0x19')][_0x4e95('0x18')]);}})[_0x4e95('0x1a')](function(_0x245b56){logger[_0x4e95('0x16')]('WhatsappQueue,\x20%s,\x20%s',_0x50982f,_0x245b56);_0x281cde(_0x245b56);});});}exports[_0x4e95('0x1b')]=function(_0x4eadc1){var _0xfb95a4=this;return new Promise(function(_0x5b5503,_0x4f810f){return db[_0x4e95('0x1c')][_0x4e95('0x1d')]({'raw':_0x4eadc1[_0x4e95('0x1e')]?_0x4eadc1[_0x4e95('0x1e')][_0x4e95('0x1f')]===undefined?!![]:![]:!![],'where':_0x4eadc1[_0x4e95('0x1e')]?_0x4eadc1[_0x4e95('0x1e')][_0x4e95('0x20')]||null:null,'attributes':_0x4eadc1[_0x4e95('0x1e')]?_0x4eadc1[_0x4e95('0x1e')]['attributes']||null:null,'limit':_0x4eadc1[_0x4e95('0x1e')]?_0x4eadc1[_0x4e95('0x1e')][_0x4e95('0x21')]||null:null,'include':_0x4eadc1['options']?_0x4eadc1['options'][_0x4e95('0x22')]?_[_0x4e95('0x23')](_0x4eadc1[_0x4e95('0x1e')][_0x4e95('0x22')],function(_0x40a6fd){return{'model':db[_0x40a6fd['model']],'as':_0x40a6fd['as'],'attributes':_0x40a6fd[_0x4e95('0x24')],'include':_0x40a6fd[_0x4e95('0x22')]?_[_0x4e95('0x23')](_0x40a6fd['include'],function(_0x139dc2){return{'model':db[_0x139dc2['model']],'as':_0x139dc2['as'],'attributes':_0x139dc2[_0x4e95('0x24')],'include':_0x139dc2[_0x4e95('0x22')]?_[_0x4e95('0x23')](_0x139dc2[_0x4e95('0x22')],function(_0x40dbf9){return{'model':db[_0x40dbf9[_0x4e95('0x25')]],'as':_0x40dbf9['as'],'attributes':_0x40dbf9[_0x4e95('0x24')]};}):[]};}):[]};}):[]:[]})[_0x4e95('0x26')](function(_0x5cd31b){logger[_0x4e95('0x11')](_0x4e95('0x1b'),_0x4eadc1);logger[_0x4e95('0x14')](_0x4e95('0x1b'),_0x4eadc1,JSON['stringify'](_0x5cd31b));_0x5b5503(_0x5cd31b);})[_0x4e95('0x1a')](function(_0x49ffdf){logger[_0x4e95('0x16')]('GetWhatsappQueue',_0x49ffdf['message'],_0x4eadc1);_0x4f810f(_0xfb95a4[_0x4e95('0x16')](0x1f4,_0x49ffdf['message']));});});};exports[_0x4e95('0x27')]=function(_0x1a9ca8){var _0x31f503=this;return new Promise(function(_0x58ef3d,_0x19b269){return db[_0x4e95('0x1c')][_0x4e95('0x28')]({'raw':_0x1a9ca8[_0x4e95('0x1e')]?_0x1a9ca8['options'][_0x4e95('0x1f')]===undefined?!![]:![]:!![],'where':_0x1a9ca8[_0x4e95('0x1e')]?_0x1a9ca8[_0x4e95('0x1e')][_0x4e95('0x20')]||null:null,'attributes':_0x1a9ca8[_0x4e95('0x1e')]?_0x1a9ca8['options'][_0x4e95('0x24')]||null:null,'include':_0x1a9ca8[_0x4e95('0x1e')]?_0x1a9ca8[_0x4e95('0x1e')][_0x4e95('0x22')]?_[_0x4e95('0x23')](_0x1a9ca8['options'][_0x4e95('0x22')],function(_0x1ad343){return{'model':db[_0x1ad343[_0x4e95('0x25')]],'as':_0x1ad343['as'],'attributes':_0x1ad343[_0x4e95('0x24')],'include':_0x1ad343['include']?_[_0x4e95('0x23')](_0x1ad343[_0x4e95('0x22')],function(_0x186f25){return{'model':db[_0x186f25[_0x4e95('0x25')]],'as':_0x186f25['as'],'attributes':_0x186f25[_0x4e95('0x24')],'include':_0x186f25[_0x4e95('0x22')]?_[_0x4e95('0x23')](_0x186f25[_0x4e95('0x22')],function(_0x4049b8){return{'model':db[_0x4049b8[_0x4e95('0x25')]],'as':_0x4049b8['as'],'attributes':_0x4049b8[_0x4e95('0x24')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4348b8){logger[_0x4e95('0x11')](_0x4e95('0x27'),_0x1a9ca8);logger[_0x4e95('0x14')](_0x4e95('0x27'),_0x1a9ca8,JSON[_0x4e95('0x29')](_0x4348b8));_0x58ef3d(_0x4348b8);})['catch'](function(_0x538b71){logger['error']('ShowWhatsappQueue',_0x538b71[_0x4e95('0x18')],_0x1a9ca8);_0x19b269(_0x31f503[_0x4e95('0x16')](0x1f4,_0x538b71[_0x4e95('0x18')]));});});};
\ No newline at end of file
+var _0xab47=['message','info','result','catch','GetWhatsappQueue','WhatsappQueue','options','raw','where','attributes','model','include','map','debug','ShowWhatsappQueue','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','redis','defaults','localhost','request','then','WhatsappQueue,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x36f35c,_0x28a553){var _0x5df531=function(_0x2ade90){while(--_0x2ade90){_0x36f35c['push'](_0x36f35c['shift']());}};_0x5df531(++_0x28a553);}(_0xab47,0x8f));var _0x7ab4=function(_0x48961c,_0x280e9d){_0x48961c=_0x48961c-0x0;var _0x1d895d=_0xab47[_0x48961c];return _0x1d895d;};'use strict';var _=require('lodash');var util=require(_0x7ab4('0x0'));var moment=require(_0x7ab4('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7ab4('0x2'));var db=require(_0x7ab4('0x3'))['db'];var utils=require(_0x7ab4('0x4'));var logger=require(_0x7ab4('0x5'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x7ab4('0x6')][_0x7ab4('0x7')]({'port':0x232a});config[_0x7ab4('0x8')]=_[_0x7ab4('0x9')](config[_0x7ab4('0x8')],{'host':_0x7ab4('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7ab4('0x8')]));require('./whatsappQueue.socket')['register'](socket);function respondWithRpcPromise(_0x315260,_0x5b669a,_0x5ea531){return new BPromise(function(_0xb4f1fe,_0x2f9475){return client[_0x7ab4('0xb')](_0x315260,_0x5ea531)[_0x7ab4('0xc')](function(_0x302c2f){logger['info'](_0x7ab4('0xd'),_0x5b669a,_0x7ab4('0xe'));logger['debug']('WhatsappQueue,\x20%s,\x20%s,\x20%s',_0x5b669a,_0x7ab4('0xe'),JSON[_0x7ab4('0xf')](_0x302c2f));if(_0x302c2f[_0x7ab4('0x10')]){if(_0x302c2f[_0x7ab4('0x10')]['code']===0x1f4){logger[_0x7ab4('0x10')](_0x7ab4('0xd'),_0x5b669a,_0x302c2f[_0x7ab4('0x10')]['message']);return _0x2f9475(_0x302c2f[_0x7ab4('0x10')]['message']);}logger[_0x7ab4('0x10')]('WhatsappQueue,\x20%s,\x20%s',_0x5b669a,_0x302c2f[_0x7ab4('0x10')]['message']);return _0xb4f1fe(_0x302c2f['error'][_0x7ab4('0x11')]);}else{logger[_0x7ab4('0x12')]('WhatsappQueue,\x20%s,\x20%s',_0x5b669a,_0x7ab4('0xe'));_0xb4f1fe(_0x302c2f[_0x7ab4('0x13')][_0x7ab4('0x11')]);}})[_0x7ab4('0x14')](function(_0x10660c){logger[_0x7ab4('0x10')](_0x7ab4('0xd'),_0x5b669a,_0x10660c);_0x2f9475(_0x10660c);});});}exports[_0x7ab4('0x15')]=function(_0x1355a7){var _0xaaf6c3=this;return new Promise(function(_0x38f612,_0x280763){return db[_0x7ab4('0x16')]['findAll']({'raw':_0x1355a7[_0x7ab4('0x17')]?_0x1355a7[_0x7ab4('0x17')][_0x7ab4('0x18')]===undefined?!![]:![]:!![],'where':_0x1355a7['options']?_0x1355a7[_0x7ab4('0x17')][_0x7ab4('0x19')]||null:null,'attributes':_0x1355a7['options']?_0x1355a7['options'][_0x7ab4('0x1a')]||null:null,'limit':_0x1355a7['options']?_0x1355a7[_0x7ab4('0x17')]['limit']||null:null,'include':_0x1355a7[_0x7ab4('0x17')]?_0x1355a7[_0x7ab4('0x17')]['include']?_['map'](_0x1355a7[_0x7ab4('0x17')]['include'],function(_0x5a1332){return{'model':db[_0x5a1332[_0x7ab4('0x1b')]],'as':_0x5a1332['as'],'attributes':_0x5a1332[_0x7ab4('0x1a')],'include':_0x5a1332[_0x7ab4('0x1c')]?_[_0x7ab4('0x1d')](_0x5a1332[_0x7ab4('0x1c')],function(_0x51e367){return{'model':db[_0x51e367['model']],'as':_0x51e367['as'],'attributes':_0x51e367[_0x7ab4('0x1a')],'include':_0x51e367[_0x7ab4('0x1c')]?_[_0x7ab4('0x1d')](_0x51e367['include'],function(_0x5bad44){return{'model':db[_0x5bad44['model']],'as':_0x5bad44['as'],'attributes':_0x5bad44[_0x7ab4('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x7ab4('0xc')](function(_0x8c60be){logger[_0x7ab4('0x12')]('GetWhatsappQueue',_0x1355a7);logger[_0x7ab4('0x1e')]('GetWhatsappQueue',_0x1355a7,JSON[_0x7ab4('0xf')](_0x8c60be));_0x38f612(_0x8c60be);})['catch'](function(_0x1d7705){logger['error'](_0x7ab4('0x15'),_0x1d7705['message'],_0x1355a7);_0x280763(_0xaaf6c3['error'](0x1f4,_0x1d7705[_0x7ab4('0x11')]));});});};exports['ShowWhatsappQueue']=function(_0x55ef98){var _0x32871d=this;return new Promise(function(_0x155630,_0x4c126e){return db['WhatsappQueue']['find']({'raw':_0x55ef98[_0x7ab4('0x17')]?_0x55ef98[_0x7ab4('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x55ef98[_0x7ab4('0x17')]?_0x55ef98['options']['where']||null:null,'attributes':_0x55ef98['options']?_0x55ef98['options'][_0x7ab4('0x1a')]||null:null,'include':_0x55ef98[_0x7ab4('0x17')]?_0x55ef98[_0x7ab4('0x17')][_0x7ab4('0x1c')]?_[_0x7ab4('0x1d')](_0x55ef98['options'][_0x7ab4('0x1c')],function(_0x1b9912){return{'model':db[_0x1b9912[_0x7ab4('0x1b')]],'as':_0x1b9912['as'],'attributes':_0x1b9912[_0x7ab4('0x1a')],'include':_0x1b9912[_0x7ab4('0x1c')]?_[_0x7ab4('0x1d')](_0x1b9912[_0x7ab4('0x1c')],function(_0x168ca5){return{'model':db[_0x168ca5['model']],'as':_0x168ca5['as'],'attributes':_0x168ca5['attributes'],'include':_0x168ca5[_0x7ab4('0x1c')]?_[_0x7ab4('0x1d')](_0x168ca5['include'],function(_0x392bd4){return{'model':db[_0x392bd4[_0x7ab4('0x1b')]],'as':_0x392bd4['as'],'attributes':_0x392bd4[_0x7ab4('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x7ab4('0xc')](function(_0x287dd0){logger[_0x7ab4('0x12')](_0x7ab4('0x1f'),_0x55ef98);logger[_0x7ab4('0x1e')]('ShowWhatsappQueue',_0x55ef98,JSON[_0x7ab4('0xf')](_0x287dd0));_0x155630(_0x287dd0);})[_0x7ab4('0x14')](function(_0xced3f3){logger[_0x7ab4('0x10')](_0x7ab4('0x1f'),_0xced3f3['message'],_0x55ef98);_0x4c126e(_0x32871d[_0x7ab4('0x10')](0x1f4,_0xced3f3['message']));});});};
\ No newline at end of file
index 0672eb1..cdd51a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x704d=['whatsappQueue:','save','update','emit','register','length'];(function(_0x5ae5d7,_0x529230){var _0x8d5fd3=function(_0x25d4c4){while(--_0x25d4c4){_0x5ae5d7['push'](_0x5ae5d7['shift']());}};_0x8d5fd3(++_0x529230);}(_0x704d,0x1a5));var _0xd704=function(_0x7d9c1c,_0x3bdd31){_0x7d9c1c=_0x7d9c1c-0x0;var _0x3b386d=_0x704d[_0x7d9c1c];return _0x3b386d;};'use strict';var WhatsappQueueEvents=require('./whatsappQueue.events');var events=[_0xd704('0x0'),'remove',_0xd704('0x1')];function createListener(_0xe7fcdf,_0x1f25f9){return function(_0x27b332){_0x1f25f9[_0xd704('0x2')](_0xe7fcdf,_0x27b332);};}function removeListener(_0xc76aa7,_0x3408ef){return function(){WhatsappQueueEvents['removeListener'](_0xc76aa7,_0x3408ef);};}exports[_0xd704('0x3')]=function(_0x219ed8){for(var _0x23a1c6=0x0,_0x33439a=events[_0xd704('0x4')];_0x23a1c6<_0x33439a;_0x23a1c6++){var _0x34ba22=events[_0x23a1c6];var _0x58135c=createListener(_0xd704('0x5')+_0x34ba22,_0x219ed8);WhatsappQueueEvents['on'](_0x34ba22,_0x58135c);}};
\ No newline at end of file
+var _0x5a99=['./whatsappQueue.events','save','update','removeListener','register'];(function(_0x11ba46,_0x1d6752){var _0x1c8c6f=function(_0x4cf96f){while(--_0x4cf96f){_0x11ba46['push'](_0x11ba46['shift']());}};_0x1c8c6f(++_0x1d6752);}(_0x5a99,0x195));var _0x95a9=function(_0x44cc80,_0x142362){_0x44cc80=_0x44cc80-0x0;var _0x1578c9=_0x5a99[_0x44cc80];return _0x1578c9;};'use strict';var WhatsappQueueEvents=require(_0x95a9('0x0'));var events=[_0x95a9('0x1'),'remove',_0x95a9('0x2')];function createListener(_0x3c860c,_0x196593){return function(_0x3dc116){_0x196593['emit'](_0x3c860c,_0x3dc116);};}function removeListener(_0x388f6c,_0x50dc9b){return function(){WhatsappQueueEvents[_0x95a9('0x3')](_0x388f6c,_0x50dc9b);};}exports[_0x95a9('0x4')]=function(_0x1453d1){for(var _0x13636d=0x0,_0x57606c=events['length'];_0x13636d<_0x57606c;_0x13636d++){var _0x440e1e=events[_0x13636d];var _0x48eccd=createListener('whatsappQueue:'+_0x440e1e,_0x1453d1);WhatsappQueueEvents['on'](_0x440e1e,_0x48eccd);}};
\ No newline at end of file
index 574a460..0fd1859 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37da=['describe','/:id','post','create','put','update','delete','destroy','exports','multer','util','path','express','fs-extra','../../components/auth/service','./whatsappQueueReport.controller','get','isAuthenticated','/describe'];(function(_0x217e72,_0x1a1eb9){var _0x52b5bd=function(_0x366c7a){while(--_0x366c7a){_0x217e72['push'](_0x217e72['shift']());}};_0x52b5bd(++_0x1a1eb9);}(_0x37da,0x1d1));var _0xa37d=function(_0x3a117d,_0x1da2a2){_0x3a117d=_0x3a117d-0x0;var _0xd247fc=_0x37da[_0x3a117d];return _0xd247fc;};'use strict';var multer=require(_0xa37d('0x0'));var util=require(_0xa37d('0x1'));var path=require(_0xa37d('0x2'));var timeout=require('connect-timeout');var express=require(_0xa37d('0x3'));var router=express['Router']();var fs_extra=require(_0xa37d('0x4'));var auth=require(_0xa37d('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa37d('0x6'));router[_0xa37d('0x7')]('/',auth[_0xa37d('0x8')](),controller['index']);router['get'](_0xa37d('0x9'),auth[_0xa37d('0x8')](),controller[_0xa37d('0xa')]);router[_0xa37d('0x7')](_0xa37d('0xb'),auth[_0xa37d('0x8')](),controller['show']);router[_0xa37d('0xc')]('/',auth[_0xa37d('0x8')](),controller[_0xa37d('0xd')]);router[_0xa37d('0xe')](_0xa37d('0xb'),auth[_0xa37d('0x8')](),controller[_0xa37d('0xf')]);router[_0xa37d('0x10')](_0xa37d('0xb'),auth[_0xa37d('0x8')](),controller[_0xa37d('0x11')]);module[_0xa37d('0x12')]=router;
\ No newline at end of file
+var _0x2248=['../../config/environment','./whatsappQueueReport.controller','get','isAuthenticated','index','/describe','/:id','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x24c3a8,_0x6b3444){var _0x387238=function(_0x83c3f){while(--_0x83c3f){_0x24c3a8['push'](_0x24c3a8['shift']());}};_0x387238(++_0x6b3444);}(_0x2248,0x15d));var _0x8224=function(_0x12cd1b,_0x274236){_0x12cd1b=_0x12cd1b-0x0;var _0x249f96=_0x2248[_0x12cd1b];return _0x249f96;};'use strict';var multer=require(_0x8224('0x0'));var util=require(_0x8224('0x1'));var path=require(_0x8224('0x2'));var timeout=require(_0x8224('0x3'));var express=require(_0x8224('0x4'));var router=express[_0x8224('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x8224('0x6'));var interaction=require(_0x8224('0x7'));var config=require(_0x8224('0x8'));var controller=require(_0x8224('0x9'));router[_0x8224('0xa')]('/',auth[_0x8224('0xb')](),controller[_0x8224('0xc')]);router[_0x8224('0xa')](_0x8224('0xd'),auth[_0x8224('0xb')](),controller['describe']);router[_0x8224('0xa')](_0x8224('0xe'),auth[_0x8224('0xb')](),controller['show']);router[_0x8224('0xf')]('/',auth[_0x8224('0xb')](),controller[_0x8224('0x10')]);router[_0x8224('0x11')]('/:id',auth[_0x8224('0xb')](),controller['update']);router[_0x8224('0x12')](_0x8224('0xe'),auth[_0x8224('0xb')](),controller[_0x8224('0x13')]);module[_0x8224('0x14')]=router;
\ No newline at end of file
index f69077a..3ee6c80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x5b8e51,_0x40d4f5){var _0x3421a3=function(_0x4b4250){while(--_0x4b4250){_0x5b8e51['push'](_0x5b8e51['shift']());}};_0x3421a3(++_0x40d4f5);}(_0x7a54,0x106));var _0x47a5=function(_0x2b7fe8,_0x582f99){_0x2b7fe8=_0x2b7fe8-0x0;var _0x47e526=_0x7a54[_0x2b7fe8];return _0x47e526;};'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(_0x5bf785,_0x39a865){var _0x126282=function(_0x448830){while(--_0x448830){_0x5bf785['push'](_0x5bf785['shift']());}};_0x126282(++_0x39a865);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'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 54306fd..8674d45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69d3=['ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','destroy','then','error','name','send','index','map','WhatsappQueueReport','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','find','create','body','catch','update','params','describe','eml-format','rimraf','zip-dir','request-promise','moment','util','to-csv'];(function(_0x3fbf09,_0x49cc11){var _0x5eb2d9=function(_0x4582ab){while(--_0x4582ab){_0x3fbf09['push'](_0x3fbf09['shift']());}};_0x5eb2d9(++_0x49cc11);}(_0x69d3,0xda));var _0x369d=function(_0x22b843,_0x867ed6){_0x22b843=_0x22b843-0x0;var _0x23dc73=_0x69d3[_0x22b843];return _0x23dc73;};'use strict';var emlformat=require(_0x369d('0x0'));var rimraf=require(_0x369d('0x1'));var zipdir=require(_0x369d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x369d('0x3'));var moment=require(_0x369d('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x369d('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x369d('0x6'));var ejs=require(_0x369d('0x7'));var fs=require('fs');var fs_extra=require(_0x369d('0x8'));var _=require(_0x369d('0x9'));var squel=require(_0x369d('0xa'));var crypto=require(_0x369d('0xb'));var jsforce=require(_0x369d('0xc'));var deskjs=require(_0x369d('0xd'));var toCsv=require(_0x369d('0x6'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x369d('0xe'));var authService=require(_0x369d('0xf'));var qs=require(_0x369d('0x10'));var as=require(_0x369d('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x369d('0x12'));var utils=require(_0x369d('0x13'));var config=require(_0x369d('0x14'));var licenseUtil=require(_0x369d('0x15'));var db=require(_0x369d('0x16'))['db'];function respondWithStatusCode(_0xee549e,_0x52c126){_0x52c126=_0x52c126||0xcc;return function(_0x15b417){if(_0x15b417){return _0xee549e[_0x369d('0x17')](_0x52c126);}return _0xee549e[_0x369d('0x18')](_0x52c126)[_0x369d('0x19')]();};}function respondWithResult(_0x121307,_0x539536){_0x539536=_0x539536||0xc8;return function(_0x5cd4c3){if(_0x5cd4c3){return _0x121307['status'](_0x539536)[_0x369d('0x1a')](_0x5cd4c3);}};}function respondWithFilteredResult(_0xa126c1,_0x389c43){return function(_0x5b4f55){if(_0x5b4f55){var _0x2c1a4a=typeof _0x389c43[_0x369d('0x1b')]===_0x369d('0x1c')&&typeof _0x389c43['limit']===_0x369d('0x1c');var _0x1f37ff=_0x5b4f55['count'];var _0x572513=_0x2c1a4a?0x0:_0x389c43['offset'];var _0x2946be=_0x2c1a4a?_0x5b4f55[_0x369d('0x1d')]:_0x389c43[_0x369d('0x1b')]+_0x389c43['limit'];var _0x410dbe;if(_0x2946be>=_0x1f37ff){_0x2946be=_0x1f37ff;_0x410dbe=0xc8;}else{_0x410dbe=0xce;}_0xa126c1[_0x369d('0x18')](_0x410dbe);return _0xa126c1[_0x369d('0x1e')](_0x369d('0x1f'),_0x572513+'-'+_0x2946be+'/'+_0x1f37ff)[_0x369d('0x1a')](_0x5b4f55);}return null;};}function patchUpdates(_0x538ca4){return function(_0x5c9fdd){try{jsonpatch[_0x369d('0x20')](_0x5c9fdd,_0x538ca4,!![]);}catch(_0x1edcd5){return BPromise[_0x369d('0x21')](_0x1edcd5);}return _0x5c9fdd[_0x369d('0x22')]();};}function saveUpdates(_0x84cc0f,_0x15fbef){return function(_0x1b262a){if(_0x1b262a){return _0x1b262a['update'](_0x84cc0f)['then'](function(_0x32ef9a){return _0x32ef9a;});}return null;};}function removeEntity(_0xed16e,_0xf7bc3a){return function(_0xcae58){if(_0xcae58){return _0xcae58[_0x369d('0x23')]()[_0x369d('0x24')](function(){_0xed16e[_0x369d('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4dfe83,_0x16145e){return function(_0x46de2b){if(!_0x46de2b){_0x4dfe83[_0x369d('0x17')](0x194);}return _0x46de2b;};}function handleError(_0xe01d2b,_0x8aa521){_0x8aa521=_0x8aa521||0x1f4;return function(_0x41e0cf){logger[_0x369d('0x25')](_0x41e0cf['stack']);if(_0x41e0cf[_0x369d('0x26')]){delete _0x41e0cf[_0x369d('0x26')];}_0xe01d2b[_0x369d('0x18')](_0x8aa521)[_0x369d('0x27')](_0x41e0cf);};}exports[_0x369d('0x28')]=function(_0x41367a,_0x3d1ce0){var _0x4d42ea={},_0x157291={},_0x56efb1={'count':0x0,'rows':[]};var _0x57b94c=_[_0x369d('0x29')](db[_0x369d('0x2a')]['rawAttributes'],function(_0x104540){return{'name':_0x104540['fieldName'],'type':_0x104540[_0x369d('0x2b')][_0x369d('0x2c')]};});_0x157291[_0x369d('0x2d')]=_[_0x369d('0x29')](_0x57b94c,_0x369d('0x26'));_0x157291[_0x369d('0x2e')]=_[_0x369d('0x2f')](_0x41367a['query']);_0x157291[_0x369d('0x30')]=_[_0x369d('0x31')](_0x157291[_0x369d('0x2d')],_0x157291[_0x369d('0x2e')]);_0x4d42ea[_0x369d('0x32')]=_[_0x369d('0x31')](_0x157291[_0x369d('0x2d')],qs[_0x369d('0x33')](_0x41367a['query'][_0x369d('0x33')]));_0x4d42ea[_0x369d('0x32')]=_0x4d42ea[_0x369d('0x32')][_0x369d('0x34')]?_0x4d42ea[_0x369d('0x32')]:_0x157291['model'];if(!_0x41367a[_0x369d('0x2e')][_0x369d('0x35')](_0x369d('0x36'))){_0x4d42ea[_0x369d('0x37')]=qs[_0x369d('0x37')](_0x41367a[_0x369d('0x2e')]['limit']);_0x4d42ea[_0x369d('0x1b')]=qs[_0x369d('0x1b')](_0x41367a[_0x369d('0x2e')][_0x369d('0x1b')]);}_0x4d42ea[_0x369d('0x38')]=qs[_0x369d('0x39')](_0x41367a[_0x369d('0x2e')][_0x369d('0x39')]);_0x4d42ea[_0x369d('0x3a')]=qs[_0x369d('0x30')](_[_0x369d('0x3b')](_0x41367a[_0x369d('0x2e')],_0x157291[_0x369d('0x30')]),_0x57b94c);if(_0x41367a[_0x369d('0x2e')][_0x369d('0x3c')]){_0x4d42ea[_0x369d('0x3a')]=_[_0x369d('0x3d')](_0x4d42ea[_0x369d('0x3a')],{'$or':_[_0x369d('0x29')](_0x57b94c,function(_0x7fd64b){if(_0x7fd64b[_0x369d('0x2b')]!==_0x369d('0x3e')){var _0xb7837f={};_0xb7837f[_0x7fd64b[_0x369d('0x26')]]={'$like':'%'+_0x41367a['query']['filter']+'%'};return _0xb7837f;}})});}_0x4d42ea=_[_0x369d('0x3d')]({},_0x4d42ea,_0x41367a[_0x369d('0x3f')]);var _0x8a1ef5={'where':_0x4d42ea[_0x369d('0x3a')]};return db[_0x369d('0x2a')][_0x369d('0x1d')](_0x8a1ef5)[_0x369d('0x24')](function(_0x169340){_0x56efb1[_0x369d('0x1d')]=_0x169340;if(_0x41367a['query'][_0x369d('0x40')]){_0x4d42ea[_0x369d('0x41')]=[{'all':!![]}];}return db[_0x369d('0x2a')][_0x369d('0x42')](_0x4d42ea);})[_0x369d('0x24')](function(_0x25cf4e){_0x56efb1[_0x369d('0x43')]=_0x25cf4e;return _0x56efb1;})[_0x369d('0x24')](respondWithFilteredResult(_0x3d1ce0,_0x4d42ea))['catch'](handleError(_0x3d1ce0,null));};exports['show']=function(_0x20b351,_0x3222ce){var _0x30909a={'raw':!![],'where':{'id':_0x20b351['params']['id']}},_0x4dad71={};_0x4dad71['model']=_[_0x369d('0x2f')](db[_0x369d('0x2a')]['rawAttributes']);_0x4dad71[_0x369d('0x2e')]=_[_0x369d('0x2f')](_0x20b351[_0x369d('0x2e')]);_0x4dad71[_0x369d('0x30')]=_['intersection'](_0x4dad71[_0x369d('0x2d')],_0x4dad71['query']);_0x30909a[_0x369d('0x32')]=_['intersection'](_0x4dad71[_0x369d('0x2d')],qs[_0x369d('0x33')](_0x20b351[_0x369d('0x2e')]['fields']));_0x30909a['attributes']=_0x30909a[_0x369d('0x32')][_0x369d('0x34')]?_0x30909a[_0x369d('0x32')]:_0x4dad71['model'];if(_0x20b351[_0x369d('0x2e')][_0x369d('0x40')]){_0x30909a[_0x369d('0x41')]=[{'all':!![]}];}_0x30909a=_[_0x369d('0x3d')]({},_0x30909a,_0x20b351[_0x369d('0x3f')]);return db[_0x369d('0x2a')][_0x369d('0x44')](_0x30909a)[_0x369d('0x24')](handleEntityNotFound(_0x3222ce,null))[_0x369d('0x24')](respondWithResult(_0x3222ce,null))['catch'](handleError(_0x3222ce,null));};exports[_0x369d('0x45')]=function(_0x41066d,_0xcc1465){return db[_0x369d('0x2a')][_0x369d('0x45')](_0x41066d[_0x369d('0x46')],{})['then'](respondWithResult(_0xcc1465,0xc9))[_0x369d('0x47')](handleError(_0xcc1465,null));};exports[_0x369d('0x48')]=function(_0x16dd8f,_0x44a357){if(_0x16dd8f[_0x369d('0x46')]['id']){delete _0x16dd8f[_0x369d('0x46')]['id'];}return db[_0x369d('0x2a')][_0x369d('0x44')]({'where':{'id':_0x16dd8f[_0x369d('0x49')]['id']}})[_0x369d('0x24')](handleEntityNotFound(_0x44a357,null))[_0x369d('0x24')](saveUpdates(_0x16dd8f[_0x369d('0x46')],null))['then'](respondWithResult(_0x44a357,null))[_0x369d('0x47')](handleError(_0x44a357,null));};exports[_0x369d('0x23')]=function(_0x289eb8,_0x85edd6){return db[_0x369d('0x2a')]['find']({'where':{'id':_0x289eb8[_0x369d('0x49')]['id']}})['then'](handleEntityNotFound(_0x85edd6,null))[_0x369d('0x24')](removeEntity(_0x85edd6,null))[_0x369d('0x47')](handleError(_0x85edd6,null));};exports[_0x369d('0x4a')]=function(_0x851746,_0x46c62c){return db[_0x369d('0x2a')][_0x369d('0x4a')]()[_0x369d('0x24')](respondWithResult(_0x46c62c,null))[_0x369d('0x47')](handleError(_0x46c62c,null));};
\ No newline at end of file
+var _0x7072=['moment','util','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','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','then','error','stack','name','send','index','WhatsappQueueReport','fieldName','type','key','map','query','keys','filters','intersection','model','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','fields','attributes','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x7072,0x138));var _0x2707=function(_0x363ef8,_0x4ecb1a){_0x363ef8=_0x363ef8-0x0;var _0x148822=_0x7072[_0x363ef8];return _0x148822;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2707('0x0'));var zipdir=require(_0x2707('0x1'));var jsonpatch=require(_0x2707('0x2'));var rp=require(_0x2707('0x3'));var moment=require(_0x2707('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x2707('0x5'));var path=require('path');var sox=require(_0x2707('0x6'));var csv=require(_0x2707('0x7'));var ejs=require(_0x2707('0x8'));var fs=require('fs');var fs_extra=require(_0x2707('0x9'));var _=require(_0x2707('0xa'));var squel=require(_0x2707('0xb'));var crypto=require(_0x2707('0xc'));var jsforce=require(_0x2707('0xd'));var deskjs=require(_0x2707('0xe'));var toCsv=require(_0x2707('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x2707('0xf'));var authService=require(_0x2707('0x10'));var qs=require(_0x2707('0x11'));var as=require(_0x2707('0x12'));var hardwareService=require(_0x2707('0x13'));var logger=require(_0x2707('0x14'))(_0x2707('0x15'));var utils=require(_0x2707('0x16'));var config=require(_0x2707('0x17'));var licenseUtil=require(_0x2707('0x18'));var db=require(_0x2707('0x19'))['db'];function respondWithStatusCode(_0x32d4bd,_0x40d370){_0x40d370=_0x40d370||0xcc;return function(_0x5bf16e){if(_0x5bf16e){return _0x32d4bd[_0x2707('0x1a')](_0x40d370);}return _0x32d4bd['status'](_0x40d370)[_0x2707('0x1b')]();};}function respondWithResult(_0x307367,_0xfe975c){_0xfe975c=_0xfe975c||0xc8;return function(_0x3a67f2){if(_0x3a67f2){return _0x307367[_0x2707('0x1c')](_0xfe975c)['json'](_0x3a67f2);}};}function respondWithFilteredResult(_0x345774,_0x1a687a){return function(_0x2f6381){if(_0x2f6381){var _0x5d523f=typeof _0x1a687a[_0x2707('0x1d')]===_0x2707('0x1e')&&typeof _0x1a687a[_0x2707('0x1f')]===_0x2707('0x1e');var _0x7ed037=_0x2f6381[_0x2707('0x20')];var _0x4a8b7f=_0x5d523f?0x0:_0x1a687a[_0x2707('0x1d')];var _0x449a61=_0x5d523f?_0x2f6381[_0x2707('0x20')]:_0x1a687a['offset']+_0x1a687a['limit'];var _0x58a4ee;if(_0x449a61>=_0x7ed037){_0x449a61=_0x7ed037;_0x58a4ee=0xc8;}else{_0x58a4ee=0xce;}_0x345774[_0x2707('0x1c')](_0x58a4ee);return _0x345774[_0x2707('0x21')](_0x2707('0x22'),_0x4a8b7f+'-'+_0x449a61+'/'+_0x7ed037)[_0x2707('0x23')](_0x2f6381);}return null;};}function patchUpdates(_0x1a0e1a){return function(_0x3c2935){try{jsonpatch[_0x2707('0x24')](_0x3c2935,_0x1a0e1a,!![]);}catch(_0x65b6e5){return BPromise[_0x2707('0x25')](_0x65b6e5);}return _0x3c2935[_0x2707('0x26')]();};}function saveUpdates(_0x37c475,_0x119df4){return function(_0x454fde){if(_0x454fde){return _0x454fde[_0x2707('0x27')](_0x37c475)['then'](function(_0x1acf22){return _0x1acf22;});}return null;};}function removeEntity(_0x3b030a,_0x46259e){return function(_0x369e3a){if(_0x369e3a){return _0x369e3a[_0x2707('0x28')]()[_0x2707('0x29')](function(){_0x3b030a['status'](0xcc)[_0x2707('0x1b')]();});}};}function handleEntityNotFound(_0x3f6976,_0x171add){return function(_0x2ad386){if(!_0x2ad386){_0x3f6976[_0x2707('0x1a')](0x194);}return _0x2ad386;};}function handleError(_0x528b20,_0x2dce16){_0x2dce16=_0x2dce16||0x1f4;return function(_0x4ca05d){logger[_0x2707('0x2a')](_0x4ca05d[_0x2707('0x2b')]);if(_0x4ca05d[_0x2707('0x2c')]){delete _0x4ca05d['name'];}_0x528b20[_0x2707('0x1c')](_0x2dce16)[_0x2707('0x2d')](_0x4ca05d);};}exports[_0x2707('0x2e')]=function(_0x529be8,_0x31e990){var _0x42adf8={},_0x4a99ce={},_0xd63d3f={'count':0x0,'rows':[]};var _0x497c92=_['map'](db[_0x2707('0x2f')]['rawAttributes'],function(_0x2a0d24){return{'name':_0x2a0d24[_0x2707('0x30')],'type':_0x2a0d24[_0x2707('0x31')][_0x2707('0x32')]};});_0x4a99ce['model']=_[_0x2707('0x33')](_0x497c92,_0x2707('0x2c'));_0x4a99ce[_0x2707('0x34')]=_[_0x2707('0x35')](_0x529be8[_0x2707('0x34')]);_0x4a99ce[_0x2707('0x36')]=_[_0x2707('0x37')](_0x4a99ce[_0x2707('0x38')],_0x4a99ce[_0x2707('0x34')]);_0x42adf8['attributes']=_[_0x2707('0x37')](_0x4a99ce[_0x2707('0x38')],qs['fields'](_0x529be8['query']['fields']));_0x42adf8['attributes']=_0x42adf8['attributes'][_0x2707('0x39')]?_0x42adf8['attributes']:_0x4a99ce['model'];if(!_0x529be8[_0x2707('0x34')][_0x2707('0x3a')]('nolimit')){_0x42adf8[_0x2707('0x1f')]=qs[_0x2707('0x1f')](_0x529be8['query']['limit']);_0x42adf8[_0x2707('0x1d')]=qs[_0x2707('0x1d')](_0x529be8['query']['offset']);}_0x42adf8[_0x2707('0x3b')]=qs[_0x2707('0x3c')](_0x529be8['query'][_0x2707('0x3c')]);_0x42adf8[_0x2707('0x3d')]=qs[_0x2707('0x36')](_[_0x2707('0x3e')](_0x529be8[_0x2707('0x34')],_0x4a99ce[_0x2707('0x36')]),_0x497c92);if(_0x529be8['query'][_0x2707('0x3f')]){_0x42adf8[_0x2707('0x3d')]=_[_0x2707('0x40')](_0x42adf8[_0x2707('0x3d')],{'$or':_[_0x2707('0x33')](_0x497c92,function(_0x1b9d71){if(_0x1b9d71[_0x2707('0x31')]!=='VIRTUAL'){var _0x3f85a0={};_0x3f85a0[_0x1b9d71[_0x2707('0x2c')]]={'$like':'%'+_0x529be8[_0x2707('0x34')][_0x2707('0x3f')]+'%'};return _0x3f85a0;}})});}_0x42adf8=_[_0x2707('0x40')]({},_0x42adf8,_0x529be8[_0x2707('0x41')]);var _0x3ed513={'where':_0x42adf8[_0x2707('0x3d')]};return db[_0x2707('0x2f')][_0x2707('0x20')](_0x3ed513)[_0x2707('0x29')](function(_0x3368cd){_0xd63d3f[_0x2707('0x20')]=_0x3368cd;if(_0x529be8[_0x2707('0x34')][_0x2707('0x42')]){_0x42adf8[_0x2707('0x43')]=[{'all':!![]}];}return db['WhatsappQueueReport'][_0x2707('0x44')](_0x42adf8);})[_0x2707('0x29')](function(_0x5053ba){_0xd63d3f[_0x2707('0x45')]=_0x5053ba;return _0xd63d3f;})['then'](respondWithFilteredResult(_0x31e990,_0x42adf8))[_0x2707('0x46')](handleError(_0x31e990,null));};exports[_0x2707('0x47')]=function(_0x3a91da,_0x1d69d3){var _0x13e1c0={'raw':!![],'where':{'id':_0x3a91da[_0x2707('0x48')]['id']}},_0xdeec24={};_0xdeec24['model']=_[_0x2707('0x35')](db[_0x2707('0x2f')]['rawAttributes']);_0xdeec24[_0x2707('0x34')]=_[_0x2707('0x35')](_0x3a91da[_0x2707('0x34')]);_0xdeec24['filters']=_['intersection'](_0xdeec24[_0x2707('0x38')],_0xdeec24[_0x2707('0x34')]);_0x13e1c0['attributes']=_[_0x2707('0x37')](_0xdeec24['model'],qs[_0x2707('0x49')](_0x3a91da[_0x2707('0x34')][_0x2707('0x49')]));_0x13e1c0[_0x2707('0x4a')]=_0x13e1c0['attributes'][_0x2707('0x39')]?_0x13e1c0[_0x2707('0x4a')]:_0xdeec24[_0x2707('0x38')];if(_0x3a91da[_0x2707('0x34')][_0x2707('0x42')]){_0x13e1c0[_0x2707('0x43')]=[{'all':!![]}];}_0x13e1c0=_[_0x2707('0x40')]({},_0x13e1c0,_0x3a91da['options']);return db[_0x2707('0x2f')][_0x2707('0x4b')](_0x13e1c0)[_0x2707('0x29')](handleEntityNotFound(_0x1d69d3,null))[_0x2707('0x29')](respondWithResult(_0x1d69d3,null))[_0x2707('0x46')](handleError(_0x1d69d3,null));};exports['create']=function(_0x35917d,_0x4a6eea){return db[_0x2707('0x2f')][_0x2707('0x4c')](_0x35917d['body'],{})[_0x2707('0x29')](respondWithResult(_0x4a6eea,0xc9))[_0x2707('0x46')](handleError(_0x4a6eea,null));};exports[_0x2707('0x27')]=function(_0x4ae196,_0x1a8034){if(_0x4ae196['body']['id']){delete _0x4ae196[_0x2707('0x4d')]['id'];}return db[_0x2707('0x2f')]['find']({'where':{'id':_0x4ae196[_0x2707('0x48')]['id']}})[_0x2707('0x29')](handleEntityNotFound(_0x1a8034,null))[_0x2707('0x29')](saveUpdates(_0x4ae196['body'],null))['then'](respondWithResult(_0x1a8034,null))[_0x2707('0x46')](handleError(_0x1a8034,null));};exports[_0x2707('0x28')]=function(_0x292b44,_0x2515dc){return db[_0x2707('0x2f')]['find']({'where':{'id':_0x292b44['params']['id']}})['then'](handleEntityNotFound(_0x2515dc,null))[_0x2707('0x29')](removeEntity(_0x2515dc,null))[_0x2707('0x46')](handleError(_0x2515dc,null));};exports[_0x2707('0x4e')]=function(_0x1dcf74,_0x1ffcce){return db['WhatsappQueueReport'][_0x2707('0x4e')]()[_0x2707('0x29')](respondWithResult(_0x1ffcce,null))['catch'](handleError(_0x1ffcce,null));};
\ No newline at end of file
index 814ddac..7eb42ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba1a=['moment','request-promise','path','../../config/environment','./whatsappQueueReport.attributes','exports','define','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash','util','../../config/logger','api'];(function(_0x20a68a,_0x54502e){var _0x56c5d4=function(_0x4ace56){while(--_0x4ace56){_0x20a68a['push'](_0x20a68a['shift']());}};_0x56c5d4(++_0x54502e);}(_0xba1a,0x184));var _0xaba1=function(_0x579a47,_0x46482b){_0x579a47=_0x579a47-0x0;var _0x1a84fc=_0xba1a[_0x579a47];return _0x1a84fc;};'use strict';var _=require(_0xaba1('0x0'));var util=require(_0xaba1('0x1'));var logger=require(_0xaba1('0x2'))(_0xaba1('0x3'));var moment=require(_0xaba1('0x4'));var BPromise=require('bluebird');var rp=require(_0xaba1('0x5'));var fs=require('fs');var path=require(_0xaba1('0x6'));var rimraf=require('rimraf');var config=require(_0xaba1('0x7'));var attributes=require(_0xaba1('0x8'));module[_0xaba1('0x9')]=function(_0x1362cc,_0x330292){return _0x1362cc[_0xaba1('0xa')](_0xaba1('0xb'),attributes,{'tableName':_0xaba1('0xc'),'paranoid':![],'indexes':[{'name':_0xaba1('0xd'),'fields':[_0xaba1('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe0ff=['report_whatsapp_queue','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./whatsappQueueReport.attributes','exports','define','WhatsappQueueReport'];(function(_0x2407a4,_0x1e4a35){var _0x3adcd6=function(_0x5063e4){while(--_0x5063e4){_0x2407a4['push'](_0x2407a4['shift']());}};_0x3adcd6(++_0x1e4a35);}(_0xe0ff,0x1b5));var _0xfe0f=function(_0x410c57,_0x32bbee){_0x410c57=_0x410c57-0x0;var _0x55e078=_0xe0ff[_0x410c57];return _0x55e078;};'use strict';var _=require(_0xfe0f('0x0'));var util=require(_0xfe0f('0x1'));var logger=require(_0xfe0f('0x2'))(_0xfe0f('0x3'));var moment=require(_0xfe0f('0x4'));var BPromise=require(_0xfe0f('0x5'));var rp=require(_0xfe0f('0x6'));var fs=require('fs');var path=require(_0xfe0f('0x7'));var rimraf=require('rimraf');var config=require(_0xfe0f('0x8'));var attributes=require(_0xfe0f('0x9'));module[_0xfe0f('0xa')]=function(_0x47f5b5,_0x18104d){return _0x47f5b5[_0xfe0f('0xb')](_0xfe0f('0xc'),attributes,{'tableName':_0xfe0f('0xd'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xfe0f('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index b02d33f..7dd1e73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51a1=['client','request','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','code','error','message','result','CreateWhatsappQueueReport','WhatsappQueueReport','create','body','raw','stringify','catch','UpdateWhatsappQueueReport','update','options','where','limit','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x3d9939,_0xd6496b){var _0xc8df8d=function(_0x50364d){while(--_0x50364d){_0x3d9939['push'](_0x3d9939['shift']());}};_0xc8df8d(++_0xd6496b);}(_0x51a1,0x1b7));var _0x151a=function(_0x39ca48,_0x22b57f){_0x39ca48=_0x39ca48-0x0;var _0x494efe=_0x51a1[_0x39ca48];return _0x494efe;};'use strict';var _=require(_0x151a('0x0'));var util=require(_0x151a('0x1'));var moment=require('moment');var BPromise=require(_0x151a('0x2'));var rs=require(_0x151a('0x3'));var fs=require('fs');var Redis=require(_0x151a('0x4'));var db=require(_0x151a('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x151a('0x6'))(_0x151a('0x7'));var config=require(_0x151a('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x151a('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4a4c1d,_0x1fec5a,_0x19eda0){return new BPromise(function(_0x1ee8a9,_0x32c652){return client[_0x151a('0xa')](_0x4a4c1d,_0x19eda0)[_0x151a('0xb')](function(_0x1ae016){logger[_0x151a('0xc')](_0x151a('0xd'),_0x1fec5a,_0x151a('0xe'));logger['debug'](_0x151a('0xf'),_0x1fec5a,_0x151a('0xe'),JSON['stringify'](_0x1ae016));if(_0x1ae016['error']){if(_0x1ae016['error'][_0x151a('0x10')]===0x1f4){logger['error']('WhatsappQueueReport,\x20%s,\x20%s',_0x1fec5a,_0x1ae016[_0x151a('0x11')][_0x151a('0x12')]);return _0x32c652(_0x1ae016[_0x151a('0x11')][_0x151a('0x12')]);}logger[_0x151a('0x11')]('WhatsappQueueReport,\x20%s,\x20%s',_0x1fec5a,_0x1ae016[_0x151a('0x11')]['message']);return _0x1ee8a9(_0x1ae016[_0x151a('0x11')]['message']);}else{logger[_0x151a('0xc')](_0x151a('0xd'),_0x1fec5a,'request\x20sent');_0x1ee8a9(_0x1ae016[_0x151a('0x13')][_0x151a('0x12')]);}})['catch'](function(_0x537078){logger['error']('WhatsappQueueReport,\x20%s,\x20%s',_0x1fec5a,_0x537078);_0x32c652(_0x537078);});});}exports[_0x151a('0x14')]=function(_0x3c26cc){var _0x3ff58b=this;return new Promise(function(_0x428c7a,_0x1ec3c8){return db[_0x151a('0x15')][_0x151a('0x16')](_0x3c26cc[_0x151a('0x17')],{'raw':_0x3c26cc['options']?_0x3c26cc['options'][_0x151a('0x18')]===undefined?!![]:![]:!![]})[_0x151a('0xb')](function(_0x321c5a){logger[_0x151a('0xc')](_0x151a('0x14'),_0x3c26cc);logger['debug']('CreateWhatsappQueueReport',_0x3c26cc,JSON[_0x151a('0x19')](_0x321c5a));_0x428c7a(_0x321c5a);})[_0x151a('0x1a')](function(_0x170a86){logger[_0x151a('0x11')](_0x151a('0x14'),_0x170a86[_0x151a('0x12')],_0x3c26cc);_0x1ec3c8(_0x3ff58b[_0x151a('0x11')](0x1f4,_0x170a86[_0x151a('0x12')]));});});};exports[_0x151a('0x1b')]=function(_0x2eaaa2){var _0x271ce3=this;return new Promise(function(_0x23aacd,_0x4f15a6){return db[_0x151a('0x15')][_0x151a('0x1c')](_0x2eaaa2[_0x151a('0x17')],{'raw':_0x2eaaa2['options']?_0x2eaaa2['options'][_0x151a('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2eaaa2[_0x151a('0x1d')]?_0x2eaaa2[_0x151a('0x1d')][_0x151a('0x1e')]||null:null,'attributes':_0x2eaaa2[_0x151a('0x1d')]?_0x2eaaa2[_0x151a('0x1d')]['attributes']||null:null,'limit':_0x2eaaa2[_0x151a('0x1d')]?_0x2eaaa2['options'][_0x151a('0x1f')]||null:null})[_0x151a('0xb')](function(_0x198899){logger['info'](_0x151a('0x1b'),_0x2eaaa2);logger['debug'](_0x151a('0x1b'),_0x2eaaa2,JSON[_0x151a('0x19')](_0x198899));_0x23aacd(_0x198899);})[_0x151a('0x1a')](function(_0x4a4785){logger['error'](_0x151a('0x1b'),_0x4a4785[_0x151a('0x12')],_0x2eaaa2);_0x4f15a6(_0x271ce3['error'](0x1f4,_0x4a4785[_0x151a('0x12')]));});});};
\ No newline at end of file
+var _0x3e26=['request\x20sent','stringify','error','code','message','result','catch','CreateWhatsappQueueReport','options','raw','then','UpdateWhatsappQueueReport','update','body','attributes','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','info','WhatsappQueueReport,\x20%s,\x20%s','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s'];(function(_0x6bc773,_0x28b261){var _0x1c5599=function(_0xc6d350){while(--_0xc6d350){_0x6bc773['push'](_0x6bc773['shift']());}};_0x1c5599(++_0x28b261);}(_0x3e26,0xe1));var _0x63e2=function(_0x2b1834,_0x4dcc0b){_0x2b1834=_0x2b1834-0x0;var _0xe0459b=_0x3e26[_0x2b1834];return _0xe0459b;};'use strict';var _=require(_0x63e2('0x0'));var util=require(_0x63e2('0x1'));var moment=require(_0x63e2('0x2'));var BPromise=require(_0x63e2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x63e2('0x4'));var db=require(_0x63e2('0x5'))['db'];var utils=require(_0x63e2('0x6'));var logger=require(_0x63e2('0x7'))('rpc');var config=require(_0x63e2('0x8'));var jayson=require(_0x63e2('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1bac82,_0x5a9d82,_0x2df574){return new BPromise(function(_0x41d43d,_0x5bdc7e){return client[_0x63e2('0xa')](_0x1bac82,_0x2df574)['then'](function(_0x5b4f76){logger[_0x63e2('0xb')](_0x63e2('0xc'),_0x5a9d82,'request\x20sent');logger[_0x63e2('0xd')](_0x63e2('0xe'),_0x5a9d82,_0x63e2('0xf'),JSON[_0x63e2('0x10')](_0x5b4f76));if(_0x5b4f76[_0x63e2('0x11')]){if(_0x5b4f76[_0x63e2('0x11')][_0x63e2('0x12')]===0x1f4){logger[_0x63e2('0x11')](_0x63e2('0xc'),_0x5a9d82,_0x5b4f76[_0x63e2('0x11')][_0x63e2('0x13')]);return _0x5bdc7e(_0x5b4f76['error'][_0x63e2('0x13')]);}logger[_0x63e2('0x11')](_0x63e2('0xc'),_0x5a9d82,_0x5b4f76['error'][_0x63e2('0x13')]);return _0x41d43d(_0x5b4f76['error']['message']);}else{logger['info'](_0x63e2('0xc'),_0x5a9d82,_0x63e2('0xf'));_0x41d43d(_0x5b4f76[_0x63e2('0x14')][_0x63e2('0x13')]);}})[_0x63e2('0x15')](function(_0x14ec51){logger[_0x63e2('0x11')](_0x63e2('0xc'),_0x5a9d82,_0x14ec51);_0x5bdc7e(_0x14ec51);});});}exports[_0x63e2('0x16')]=function(_0x2a1992){var _0x261390=this;return new Promise(function(_0x51cdb7,_0x232eff){return db['WhatsappQueueReport']['create'](_0x2a1992['body'],{'raw':_0x2a1992['options']?_0x2a1992[_0x63e2('0x17')][_0x63e2('0x18')]===undefined?!![]:![]:!![]})[_0x63e2('0x19')](function(_0x4fc4a9){logger[_0x63e2('0xb')](_0x63e2('0x16'),_0x2a1992);logger['debug'](_0x63e2('0x16'),_0x2a1992,JSON[_0x63e2('0x10')](_0x4fc4a9));_0x51cdb7(_0x4fc4a9);})[_0x63e2('0x15')](function(_0x3151fa){logger[_0x63e2('0x11')](_0x63e2('0x16'),_0x3151fa[_0x63e2('0x13')],_0x2a1992);_0x232eff(_0x261390['error'](0x1f4,_0x3151fa[_0x63e2('0x13')]));});});};exports[_0x63e2('0x1a')]=function(_0x56b6ea){var _0x3d6b6d=this;return new Promise(function(_0x268d98,_0x1540f8){return db['WhatsappQueueReport'][_0x63e2('0x1b')](_0x56b6ea[_0x63e2('0x1c')],{'raw':_0x56b6ea['options']?_0x56b6ea[_0x63e2('0x17')][_0x63e2('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x56b6ea[_0x63e2('0x17')]?_0x56b6ea[_0x63e2('0x17')]['where']||null:null,'attributes':_0x56b6ea[_0x63e2('0x17')]?_0x56b6ea[_0x63e2('0x17')][_0x63e2('0x1d')]||null:null,'limit':_0x56b6ea[_0x63e2('0x17')]?_0x56b6ea[_0x63e2('0x17')]['limit']||null:null})['then'](function(_0x5beccc){logger[_0x63e2('0xb')](_0x63e2('0x1a'),_0x56b6ea);logger['debug']('UpdateWhatsappQueueReport',_0x56b6ea,JSON[_0x63e2('0x10')](_0x5beccc));_0x268d98(_0x5beccc);})[_0x63e2('0x15')](function(_0xde8a07){logger[_0x63e2('0x11')](_0x63e2('0x1a'),_0xde8a07[_0x63e2('0x13')],_0x56b6ea);_0x1540f8(_0x3d6b6d[_0x63e2('0x11')](0x1f4,_0xde8a07[_0x63e2('0x13')]));});});};
\ No newline at end of file
index eab1891..57c6a5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb935=['create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post'];(function(_0x3c71ea,_0x3cb939){var _0x49603e=function(_0x2a9546){while(--_0x2a9546){_0x3c71ea['push'](_0x3c71ea['shift']());}};_0x49603e(++_0x3cb939);}(_0xb935,0x148));var _0x5b93=function(_0x2ed280,_0x14ea7d){_0x2ed280=_0x2ed280-0x0;var _0x31f3cd=_0xb935[_0x2ed280];return _0x31f3cd;};'use strict';var multer=require(_0x5b93('0x0'));var util=require(_0x5b93('0x1'));var path=require('path');var timeout=require(_0x5b93('0x2'));var express=require(_0x5b93('0x3'));var router=express[_0x5b93('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x5b93('0x5'));var interaction=require(_0x5b93('0x6'));var config=require(_0x5b93('0x7'));var controller=require(_0x5b93('0x8'));router[_0x5b93('0x9')]('/',auth[_0x5b93('0xa')](),controller[_0x5b93('0xb')]);router[_0x5b93('0x9')](_0x5b93('0xc'),auth['isAuthenticated'](),controller[_0x5b93('0xd')]);router[_0x5b93('0x9')](_0x5b93('0xe'),auth['isAuthenticated'](),controller[_0x5b93('0xf')]);router[_0x5b93('0x10')]('/',auth[_0x5b93('0xa')](),controller[_0x5b93('0x11')]);router[_0x5b93('0x12')]('/:id',auth[_0x5b93('0xa')](),controller[_0x5b93('0x13')]);router[_0x5b93('0x14')](_0x5b93('0xe'),auth[_0x5b93('0xa')](),controller[_0x5b93('0x15')]);module[_0x5b93('0x16')]=router;
\ No newline at end of file
+var _0x91fb=['update','delete','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','get','isAuthenticated','index','describe','/:id','show','create'];(function(_0x1a9505,_0x3973ef){var _0x934961=function(_0x2bb868){while(--_0x2bb868){_0x1a9505['push'](_0x1a9505['shift']());}};_0x934961(++_0x3973ef);}(_0x91fb,0x144));var _0xb91f=function(_0x498334,_0x27b6fe){_0x498334=_0x498334-0x0;var _0x13bb70=_0x91fb[_0x498334];return _0x13bb70;};'use strict';var multer=require('multer');var util=require(_0xb91f('0x0'));var path=require(_0xb91f('0x1'));var timeout=require(_0xb91f('0x2'));var express=require(_0xb91f('0x3'));var router=express[_0xb91f('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xb91f('0x5'));var interaction=require(_0xb91f('0x6'));var config=require(_0xb91f('0x7'));var controller=require(_0xb91f('0x8'));router[_0xb91f('0x9')]('/',auth[_0xb91f('0xa')](),controller[_0xb91f('0xb')]);router[_0xb91f('0x9')]('/describe',auth[_0xb91f('0xa')](),controller[_0xb91f('0xc')]);router[_0xb91f('0x9')](_0xb91f('0xd'),auth['isAuthenticated'](),controller[_0xb91f('0xe')]);router['post']('/',auth[_0xb91f('0xa')](),controller[_0xb91f('0xf')]);router['put'](_0xb91f('0xd'),auth['isAuthenticated'](),controller[_0xb91f('0x10')]);router[_0xb91f('0x11')]('/:id',auth[_0xb91f('0xa')](),controller[_0xb91f('0x12')]);module[_0xb91f('0x13')]=router;
\ No newline at end of file
index 40e9ed3..566e076 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b12=['DATE','sequelize','exports','STRING','account','queue'];(function(_0x5c627b,_0x510d14){var _0x880756=function(_0x2bcf49){while(--_0x2bcf49){_0x5c627b['push'](_0x5c627b['shift']());}};_0x880756(++_0x510d14);}(_0x5b12,0xa3));var _0x25b1=function(_0x11e806,_0x15ba65){_0x11e806=_0x11e806-0x0;var _0x1e8a86=_0x5b12[_0x11e806];return _0x1e8a86;};'use strict';var Sequelize=require(_0x25b1('0x0'));module[_0x25b1('0x1')]={'uniqueid':{'type':Sequelize[_0x25b1('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x25b1('0x3'),'agent',_0x25b1('0x4')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x25b1('0x5')]}};
\ No newline at end of file
+var _0xb01a=['DATE','sequelize','exports','STRING','ENUM','account','agent','queue'];(function(_0x1f7dd0,_0x16357b){var _0x43df1c=function(_0x18636b){while(--_0x18636b){_0x1f7dd0['push'](_0x1f7dd0['shift']());}};_0x43df1c(++_0x16357b);}(_0xb01a,0x1a1));var _0xab01=function(_0x15fa00,_0x2c50a7){_0x15fa00=_0x15fa00-0x0;var _0x48237e=_0xb01a[_0x15fa00];return _0x48237e;};'use strict';var Sequelize=require(_0xab01('0x0'));module[_0xab01('0x1')]={'uniqueid':{'type':Sequelize[_0xab01('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xab01('0x3')](_0xab01('0x4'),_0xab01('0x5'),_0xab01('0x6')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0xab01('0x7')]}};
\ No newline at end of file
index 477af2f..f543ed2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5d4=['querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','update','destroy','then','stack','name','send','index','map','WhatsappTransferReport','rawAttributes','type','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','order','sort','filters','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','describe','eml-format','rimraf','moment','bluebird','mustache','util','path','to-csv','fs-extra','squel','desk.js'];(function(_0x393862,_0x117d2b){var _0x1d5ca8=function(_0x2de2a3){while(--_0x2de2a3){_0x393862['push'](_0x393862['shift']());}};_0x1d5ca8(++_0x117d2b);}(_0xf5d4,0x19f));var _0x4f5d=function(_0x434b57,_0x32a6b0){_0x434b57=_0x434b57-0x0;var _0x274949=_0xf5d4[_0x434b57];return _0x274949;};'use strict';var emlformat=require(_0x4f5d('0x0'));var rimraf=require(_0x4f5d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x4f5d('0x2'));var BPromise=require(_0x4f5d('0x3'));var Mustache=require(_0x4f5d('0x4'));var util=require(_0x4f5d('0x5'));var path=require(_0x4f5d('0x6'));var sox=require('sox');var csv=require(_0x4f5d('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4f5d('0x8'));var _=require('lodash');var squel=require(_0x4f5d('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x4f5d('0xa'));var toCsv=require(_0x4f5d('0x7'));var querystring=require(_0x4f5d('0xb'));var Papa=require(_0x4f5d('0xc'));var Redis=require(_0x4f5d('0xd'));var authService=require(_0x4f5d('0xe'));var qs=require(_0x4f5d('0xf'));var as=require(_0x4f5d('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x4f5d('0x11'));var utils=require(_0x4f5d('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x4f5d('0x13'));var db=require(_0x4f5d('0x14'))['db'];function respondWithStatusCode(_0x2ba2f8,_0x4413b7){_0x4413b7=_0x4413b7||0xcc;return function(_0xf1fb0c){if(_0xf1fb0c){return _0x2ba2f8[_0x4f5d('0x15')](_0x4413b7);}return _0x2ba2f8[_0x4f5d('0x16')](_0x4413b7)[_0x4f5d('0x17')]();};}function respondWithResult(_0x545926,_0xac1dda){_0xac1dda=_0xac1dda||0xc8;return function(_0x1320c9){if(_0x1320c9){return _0x545926['status'](_0xac1dda)['json'](_0x1320c9);}};}function respondWithFilteredResult(_0x1d8040,_0x409390){return function(_0x59f140){if(_0x59f140){var _0x46afd9=typeof _0x409390[_0x4f5d('0x18')]===_0x4f5d('0x19')&&typeof _0x409390[_0x4f5d('0x1a')]===_0x4f5d('0x19');var _0x5ba19f=_0x59f140['count'];var _0x155023=_0x46afd9?0x0:_0x409390[_0x4f5d('0x18')];var _0x3e5ce2=_0x46afd9?_0x59f140[_0x4f5d('0x1b')]:_0x409390[_0x4f5d('0x18')]+_0x409390[_0x4f5d('0x1a')];var _0xc49a9;if(_0x3e5ce2>=_0x5ba19f){_0x3e5ce2=_0x5ba19f;_0xc49a9=0xc8;}else{_0xc49a9=0xce;}_0x1d8040[_0x4f5d('0x16')](_0xc49a9);return _0x1d8040[_0x4f5d('0x1c')](_0x4f5d('0x1d'),_0x155023+'-'+_0x3e5ce2+'/'+_0x5ba19f)[_0x4f5d('0x1e')](_0x59f140);}return null;};}function patchUpdates(_0x464193){return function(_0x34a281){try{jsonpatch[_0x4f5d('0x1f')](_0x34a281,_0x464193,!![]);}catch(_0x32b037){return BPromise['reject'](_0x32b037);}return _0x34a281['save']();};}function saveUpdates(_0x467d76,_0x47eaf8){return function(_0x38ffdf){if(_0x38ffdf){return _0x38ffdf[_0x4f5d('0x20')](_0x467d76)['then'](function(_0x385b7c){return _0x385b7c;});}return null;};}function removeEntity(_0x1d2871,_0x493091){return function(_0x48971d){if(_0x48971d){return _0x48971d[_0x4f5d('0x21')]()[_0x4f5d('0x22')](function(){_0x1d2871[_0x4f5d('0x16')](0xcc)[_0x4f5d('0x17')]();});}};}function handleEntityNotFound(_0x13bc7e,_0x401f26){return function(_0x113554){if(!_0x113554){_0x13bc7e[_0x4f5d('0x15')](0x194);}return _0x113554;};}function handleError(_0x353824,_0x2c7acd){_0x2c7acd=_0x2c7acd||0x1f4;return function(_0x154fbd){logger['error'](_0x154fbd[_0x4f5d('0x23')]);if(_0x154fbd[_0x4f5d('0x24')]){delete _0x154fbd[_0x4f5d('0x24')];}_0x353824[_0x4f5d('0x16')](_0x2c7acd)[_0x4f5d('0x25')](_0x154fbd);};}exports[_0x4f5d('0x26')]=function(_0x1a1c9b,_0x4cc8b9){var _0x560c6f={},_0x85552c={},_0x1f29d2={'count':0x0,'rows':[]};var _0x2efac1=_[_0x4f5d('0x27')](db[_0x4f5d('0x28')][_0x4f5d('0x29')],function(_0x5124c8){return{'name':_0x5124c8['fieldName'],'type':_0x5124c8[_0x4f5d('0x2a')][_0x4f5d('0x2b')]};});_0x85552c[_0x4f5d('0x2c')]=_['map'](_0x2efac1,_0x4f5d('0x24'));_0x85552c[_0x4f5d('0x2d')]=_[_0x4f5d('0x2e')](_0x1a1c9b[_0x4f5d('0x2d')]);_0x85552c['filters']=_[_0x4f5d('0x2f')](_0x85552c[_0x4f5d('0x2c')],_0x85552c[_0x4f5d('0x2d')]);_0x560c6f['attributes']=_['intersection'](_0x85552c[_0x4f5d('0x2c')],qs['fields'](_0x1a1c9b[_0x4f5d('0x2d')][_0x4f5d('0x30')]));_0x560c6f[_0x4f5d('0x31')]=_0x560c6f[_0x4f5d('0x31')]['length']?_0x560c6f['attributes']:_0x85552c[_0x4f5d('0x2c')];if(!_0x1a1c9b[_0x4f5d('0x2d')][_0x4f5d('0x32')]('nolimit')){_0x560c6f['limit']=qs['limit'](_0x1a1c9b['query'][_0x4f5d('0x1a')]);_0x560c6f[_0x4f5d('0x18')]=qs['offset'](_0x1a1c9b[_0x4f5d('0x2d')][_0x4f5d('0x18')]);}_0x560c6f[_0x4f5d('0x33')]=qs[_0x4f5d('0x34')](_0x1a1c9b['query'][_0x4f5d('0x34')]);_0x560c6f['where']=qs[_0x4f5d('0x35')](_[_0x4f5d('0x36')](_0x1a1c9b[_0x4f5d('0x2d')],_0x85552c[_0x4f5d('0x35')]),_0x2efac1);if(_0x1a1c9b[_0x4f5d('0x2d')][_0x4f5d('0x37')]){_0x560c6f[_0x4f5d('0x38')]=_[_0x4f5d('0x39')](_0x560c6f[_0x4f5d('0x38')],{'$or':_[_0x4f5d('0x27')](_0x2efac1,function(_0x53f6a0){if(_0x53f6a0['type']!==_0x4f5d('0x3a')){var _0x2d1862={};_0x2d1862[_0x53f6a0[_0x4f5d('0x24')]]={'$like':'%'+_0x1a1c9b[_0x4f5d('0x2d')]['filter']+'%'};return _0x2d1862;}})});}_0x560c6f=_[_0x4f5d('0x39')]({},_0x560c6f,_0x1a1c9b['options']);var _0x3c122e={'where':_0x560c6f[_0x4f5d('0x38')]};return db[_0x4f5d('0x28')]['count'](_0x3c122e)[_0x4f5d('0x22')](function(_0x162655){_0x1f29d2['count']=_0x162655;if(_0x1a1c9b[_0x4f5d('0x2d')][_0x4f5d('0x3b')]){_0x560c6f[_0x4f5d('0x3c')]=[{'all':!![]}];}return db['WhatsappTransferReport'][_0x4f5d('0x3d')](_0x560c6f);})['then'](function(_0x310731){_0x1f29d2[_0x4f5d('0x3e')]=_0x310731;return _0x1f29d2;})[_0x4f5d('0x22')](respondWithFilteredResult(_0x4cc8b9,_0x560c6f))[_0x4f5d('0x3f')](handleError(_0x4cc8b9,null));};exports[_0x4f5d('0x40')]=function(_0x33d7c0,_0x1d5b5b){var _0x1c3006={'raw':!![],'where':{'id':_0x33d7c0[_0x4f5d('0x41')]['id']}},_0x78e16f={};_0x78e16f['model']=_[_0x4f5d('0x2e')](db[_0x4f5d('0x28')][_0x4f5d('0x29')]);_0x78e16f['query']=_[_0x4f5d('0x2e')](_0x33d7c0[_0x4f5d('0x2d')]);_0x78e16f[_0x4f5d('0x35')]=_[_0x4f5d('0x2f')](_0x78e16f[_0x4f5d('0x2c')],_0x78e16f[_0x4f5d('0x2d')]);_0x1c3006['attributes']=_[_0x4f5d('0x2f')](_0x78e16f[_0x4f5d('0x2c')],qs[_0x4f5d('0x30')](_0x33d7c0[_0x4f5d('0x2d')]['fields']));_0x1c3006[_0x4f5d('0x31')]=_0x1c3006[_0x4f5d('0x31')][_0x4f5d('0x42')]?_0x1c3006['attributes']:_0x78e16f['model'];if(_0x33d7c0[_0x4f5d('0x2d')]['includeAll']){_0x1c3006[_0x4f5d('0x3c')]=[{'all':!![]}];}_0x1c3006=_[_0x4f5d('0x39')]({},_0x1c3006,_0x33d7c0['options']);return db[_0x4f5d('0x28')][_0x4f5d('0x43')](_0x1c3006)['then'](handleEntityNotFound(_0x1d5b5b,null))[_0x4f5d('0x22')](respondWithResult(_0x1d5b5b,null))[_0x4f5d('0x3f')](handleError(_0x1d5b5b,null));};exports[_0x4f5d('0x44')]=function(_0x108ead,_0xb94920){return db[_0x4f5d('0x28')][_0x4f5d('0x44')](_0x108ead['body'],{})[_0x4f5d('0x22')](respondWithResult(_0xb94920,0xc9))[_0x4f5d('0x3f')](handleError(_0xb94920,null));};exports['update']=function(_0xfc6ae7,_0x112893){if(_0xfc6ae7[_0x4f5d('0x45')]['id']){delete _0xfc6ae7['body']['id'];}return db[_0x4f5d('0x28')][_0x4f5d('0x43')]({'where':{'id':_0xfc6ae7[_0x4f5d('0x41')]['id']}})[_0x4f5d('0x22')](handleEntityNotFound(_0x112893,null))['then'](saveUpdates(_0xfc6ae7[_0x4f5d('0x45')],null))[_0x4f5d('0x22')](respondWithResult(_0x112893,null))['catch'](handleError(_0x112893,null));};exports[_0x4f5d('0x21')]=function(_0x1cacef,_0x4be32d){return db[_0x4f5d('0x28')][_0x4f5d('0x43')]({'where':{'id':_0x1cacef[_0x4f5d('0x41')]['id']}})['then'](handleEntityNotFound(_0x4be32d,null))['then'](removeEntity(_0x4be32d,null))[_0x4f5d('0x3f')](handleError(_0x4be32d,null));};exports[_0x4f5d('0x46')]=function(_0x95646d,_0x3855d3){return db[_0x4f5d('0x28')][_0x4f5d('0x46')]()[_0x4f5d('0x22')](respondWithResult(_0x3855d3,null))['catch'](handleError(_0x3855d3,null));};
\ No newline at end of file
+var _0x183e=['WhatsappTransferReport','then','include','findAll','rows','catch','params','keys','includeAll','find','create','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','error','stack','name','send','index','fieldName','type','key','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','order','sort','where','filter','merge','map','options'];(function(_0x15d763,_0x5d5012){var _0x2d12cc=function(_0x3ceb49){while(--_0x3ceb49){_0x15d763['push'](_0x15d763['shift']());}};_0x2d12cc(++_0x5d5012);}(_0x183e,0x193));var _0xe183=function(_0x218e7e,_0x5828d7){_0x218e7e=_0x218e7e-0x0;var _0x222cf3=_0x183e[_0x218e7e];return _0x222cf3;};'use strict';var emlformat=require(_0xe183('0x0'));var rimraf=require(_0xe183('0x1'));var zipdir=require(_0xe183('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe183('0x3'));var moment=require(_0xe183('0x4'));var BPromise=require(_0xe183('0x5'));var Mustache=require(_0xe183('0x6'));var util=require(_0xe183('0x7'));var path=require(_0xe183('0x8'));var sox=require('sox');var csv=require(_0xe183('0x9'));var ejs=require(_0xe183('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe183('0xb'));var squel=require(_0xe183('0xc'));var crypto=require('crypto');var jsforce=require(_0xe183('0xd'));var deskjs=require(_0xe183('0xe'));var toCsv=require(_0xe183('0x9'));var querystring=require(_0xe183('0xf'));var Papa=require(_0xe183('0x10'));var Redis=require(_0xe183('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xe183('0x12'));var as=require(_0xe183('0x13'));var hardwareService=require(_0xe183('0x14'));var logger=require(_0xe183('0x15'))(_0xe183('0x16'));var utils=require(_0xe183('0x17'));var config=require(_0xe183('0x18'));var licenseUtil=require(_0xe183('0x19'));var db=require(_0xe183('0x1a'))['db'];function respondWithStatusCode(_0x207268,_0x2cc771){_0x2cc771=_0x2cc771||0xcc;return function(_0x5225e3){if(_0x5225e3){return _0x207268[_0xe183('0x1b')](_0x2cc771);}return _0x207268[_0xe183('0x1c')](_0x2cc771)[_0xe183('0x1d')]();};}function respondWithResult(_0x1ab8c1,_0x53fdd4){_0x53fdd4=_0x53fdd4||0xc8;return function(_0x3cacef){if(_0x3cacef){return _0x1ab8c1[_0xe183('0x1c')](_0x53fdd4)[_0xe183('0x1e')](_0x3cacef);}};}function respondWithFilteredResult(_0x17d40f,_0x9ff86){return function(_0x1df8c1){if(_0x1df8c1){var _0x1a1163=typeof _0x9ff86[_0xe183('0x1f')]===_0xe183('0x20')&&typeof _0x9ff86[_0xe183('0x21')]==='undefined';var _0x1319d0=_0x1df8c1[_0xe183('0x22')];var _0x1ea539=_0x1a1163?0x0:_0x9ff86[_0xe183('0x1f')];var _0x188e8a=_0x1a1163?_0x1df8c1[_0xe183('0x22')]:_0x9ff86[_0xe183('0x1f')]+_0x9ff86[_0xe183('0x21')];var _0x1e0cba;if(_0x188e8a>=_0x1319d0){_0x188e8a=_0x1319d0;_0x1e0cba=0xc8;}else{_0x1e0cba=0xce;}_0x17d40f[_0xe183('0x1c')](_0x1e0cba);return _0x17d40f[_0xe183('0x23')](_0xe183('0x24'),_0x1ea539+'-'+_0x188e8a+'/'+_0x1319d0)['json'](_0x1df8c1);}return null;};}function patchUpdates(_0x3118fb){return function(_0x53a4c0){try{jsonpatch[_0xe183('0x25')](_0x53a4c0,_0x3118fb,!![]);}catch(_0x44ba55){return BPromise[_0xe183('0x26')](_0x44ba55);}return _0x53a4c0[_0xe183('0x27')]();};}function saveUpdates(_0x2002e9,_0x466aff){return function(_0x3898f6){if(_0x3898f6){return _0x3898f6[_0xe183('0x28')](_0x2002e9)['then'](function(_0x335267){return _0x335267;});}return null;};}function removeEntity(_0xca7c95,_0x14be68){return function(_0xfd1964){if(_0xfd1964){return _0xfd1964[_0xe183('0x29')]()['then'](function(){_0xca7c95[_0xe183('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x518a7e,_0x51e420){return function(_0x3b53ed){if(!_0x3b53ed){_0x518a7e['sendStatus'](0x194);}return _0x3b53ed;};}function handleError(_0x5ecf21,_0x3718b0){_0x3718b0=_0x3718b0||0x1f4;return function(_0x3aff5e){logger[_0xe183('0x2a')](_0x3aff5e[_0xe183('0x2b')]);if(_0x3aff5e['name']){delete _0x3aff5e[_0xe183('0x2c')];}_0x5ecf21[_0xe183('0x1c')](_0x3718b0)[_0xe183('0x2d')](_0x3aff5e);};}exports[_0xe183('0x2e')]=function(_0xc8b3c0,_0x5a42dd){var _0xaab417={},_0x557512={},_0x14e3ce={'count':0x0,'rows':[]};var _0x514883=_['map'](db['WhatsappTransferReport']['rawAttributes'],function(_0x400980){return{'name':_0x400980[_0xe183('0x2f')],'type':_0x400980[_0xe183('0x30')][_0xe183('0x31')]};});_0x557512['model']=_['map'](_0x514883,_0xe183('0x2c'));_0x557512[_0xe183('0x32')]=_['keys'](_0xc8b3c0[_0xe183('0x32')]);_0x557512[_0xe183('0x33')]=_[_0xe183('0x34')](_0x557512['model'],_0x557512['query']);_0xaab417[_0xe183('0x35')]=_['intersection'](_0x557512[_0xe183('0x36')],qs[_0xe183('0x37')](_0xc8b3c0[_0xe183('0x32')]['fields']));_0xaab417[_0xe183('0x35')]=_0xaab417[_0xe183('0x35')][_0xe183('0x38')]?_0xaab417[_0xe183('0x35')]:_0x557512['model'];if(!_0xc8b3c0['query'][_0xe183('0x39')]('nolimit')){_0xaab417['limit']=qs['limit'](_0xc8b3c0[_0xe183('0x32')][_0xe183('0x21')]);_0xaab417[_0xe183('0x1f')]=qs[_0xe183('0x1f')](_0xc8b3c0[_0xe183('0x32')]['offset']);}_0xaab417[_0xe183('0x3a')]=qs[_0xe183('0x3b')](_0xc8b3c0[_0xe183('0x32')][_0xe183('0x3b')]);_0xaab417[_0xe183('0x3c')]=qs[_0xe183('0x33')](_['pick'](_0xc8b3c0[_0xe183('0x32')],_0x557512['filters']),_0x514883);if(_0xc8b3c0[_0xe183('0x32')][_0xe183('0x3d')]){_0xaab417[_0xe183('0x3c')]=_[_0xe183('0x3e')](_0xaab417[_0xe183('0x3c')],{'$or':_[_0xe183('0x3f')](_0x514883,function(_0x340830){if(_0x340830[_0xe183('0x30')]!=='VIRTUAL'){var _0x4ac90c={};_0x4ac90c[_0x340830[_0xe183('0x2c')]]={'$like':'%'+_0xc8b3c0['query'][_0xe183('0x3d')]+'%'};return _0x4ac90c;}})});}_0xaab417=_[_0xe183('0x3e')]({},_0xaab417,_0xc8b3c0[_0xe183('0x40')]);var _0x276344={'where':_0xaab417['where']};return db[_0xe183('0x41')][_0xe183('0x22')](_0x276344)[_0xe183('0x42')](function(_0x22dc91){_0x14e3ce[_0xe183('0x22')]=_0x22dc91;if(_0xc8b3c0[_0xe183('0x32')]['includeAll']){_0xaab417[_0xe183('0x43')]=[{'all':!![]}];}return db['WhatsappTransferReport'][_0xe183('0x44')](_0xaab417);})[_0xe183('0x42')](function(_0x49e269){_0x14e3ce[_0xe183('0x45')]=_0x49e269;return _0x14e3ce;})['then'](respondWithFilteredResult(_0x5a42dd,_0xaab417))[_0xe183('0x46')](handleError(_0x5a42dd,null));};exports['show']=function(_0x23fb11,_0xd5d37d){var _0x54cd72={'raw':!![],'where':{'id':_0x23fb11[_0xe183('0x47')]['id']}},_0x3924ab={};_0x3924ab[_0xe183('0x36')]=_[_0xe183('0x48')](db[_0xe183('0x41')]['rawAttributes']);_0x3924ab[_0xe183('0x32')]=_['keys'](_0x23fb11[_0xe183('0x32')]);_0x3924ab[_0xe183('0x33')]=_[_0xe183('0x34')](_0x3924ab['model'],_0x3924ab[_0xe183('0x32')]);_0x54cd72[_0xe183('0x35')]=_['intersection'](_0x3924ab[_0xe183('0x36')],qs[_0xe183('0x37')](_0x23fb11[_0xe183('0x32')]['fields']));_0x54cd72[_0xe183('0x35')]=_0x54cd72[_0xe183('0x35')][_0xe183('0x38')]?_0x54cd72[_0xe183('0x35')]:_0x3924ab[_0xe183('0x36')];if(_0x23fb11[_0xe183('0x32')][_0xe183('0x49')]){_0x54cd72[_0xe183('0x43')]=[{'all':!![]}];}_0x54cd72=_[_0xe183('0x3e')]({},_0x54cd72,_0x23fb11['options']);return db['WhatsappTransferReport'][_0xe183('0x4a')](_0x54cd72)[_0xe183('0x42')](handleEntityNotFound(_0xd5d37d,null))[_0xe183('0x42')](respondWithResult(_0xd5d37d,null))[_0xe183('0x46')](handleError(_0xd5d37d,null));};exports[_0xe183('0x4b')]=function(_0x109107,_0x4c8bb9){return db[_0xe183('0x41')]['create'](_0x109107[_0xe183('0x4c')],{})[_0xe183('0x42')](respondWithResult(_0x4c8bb9,0xc9))['catch'](handleError(_0x4c8bb9,null));};exports[_0xe183('0x28')]=function(_0x3b92f1,_0x1b3633){if(_0x3b92f1[_0xe183('0x4c')]['id']){delete _0x3b92f1[_0xe183('0x4c')]['id'];}return db[_0xe183('0x41')][_0xe183('0x4a')]({'where':{'id':_0x3b92f1['params']['id']}})[_0xe183('0x42')](handleEntityNotFound(_0x1b3633,null))[_0xe183('0x42')](saveUpdates(_0x3b92f1[_0xe183('0x4c')],null))['then'](respondWithResult(_0x1b3633,null))[_0xe183('0x46')](handleError(_0x1b3633,null));};exports[_0xe183('0x29')]=function(_0x5548c6,_0x4495ba){return db[_0xe183('0x41')][_0xe183('0x4a')]({'where':{'id':_0x5548c6[_0xe183('0x47')]['id']}})[_0xe183('0x42')](handleEntityNotFound(_0x4495ba,null))[_0xe183('0x42')](removeEntity(_0x4495ba,null))[_0xe183('0x46')](handleError(_0x4495ba,null));};exports['describe']=function(_0xbc45f0,_0x36375f){return db[_0xe183('0x41')][_0xe183('0x4d')]()['then'](respondWithResult(_0x36375f,null))[_0xe183('0x46')](handleError(_0x36375f,null));};
\ No newline at end of file
index 542c1ae..3e9d4a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b7c=['bluebird','request-promise','path','../../config/environment','./whatsappTransferReport.attributes','exports','define','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util','../../config/logger','moment'];(function(_0x5f382f,_0x3f1432){var _0x3bb11b=function(_0x4daf9b){while(--_0x4daf9b){_0x5f382f['push'](_0x5f382f['shift']());}};_0x3bb11b(++_0x3f1432);}(_0x6b7c,0x184));var _0xc6b7=function(_0x1886a8,_0x13e23f){_0x1886a8=_0x1886a8-0x0;var _0x2ac907=_0x6b7c[_0x1886a8];return _0x2ac907;};'use strict';var _=require(_0xc6b7('0x0'));var util=require(_0xc6b7('0x1'));var logger=require(_0xc6b7('0x2'))('api');var moment=require(_0xc6b7('0x3'));var BPromise=require(_0xc6b7('0x4'));var rp=require(_0xc6b7('0x5'));var fs=require('fs');var path=require(_0xc6b7('0x6'));var rimraf=require('rimraf');var config=require(_0xc6b7('0x7'));var attributes=require(_0xc6b7('0x8'));module[_0xc6b7('0x9')]=function(_0x153857,_0x348923){return _0x153857[_0xc6b7('0xa')](_0xc6b7('0xb'),attributes,{'tableName':_0xc6b7('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xc6b7('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x38cb=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappTransferReport.attributes','exports','WhatsappTransferReport','report_whatsapp_transfer','uniqueid'];(function(_0x230bb8,_0xa1718){var _0x16cb9a=function(_0x2848fe){while(--_0x2848fe){_0x230bb8['push'](_0x230bb8['shift']());}};_0x16cb9a(++_0xa1718);}(_0x38cb,0x104));var _0xb38c=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x38cb[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require('lodash');var util=require(_0xb38c('0x0'));var logger=require(_0xb38c('0x1'))('api');var moment=require(_0xb38c('0x2'));var BPromise=require(_0xb38c('0x3'));var rp=require(_0xb38c('0x4'));var fs=require('fs');var path=require(_0xb38c('0x5'));var rimraf=require(_0xb38c('0x6'));var config=require(_0xb38c('0x7'));var attributes=require(_0xb38c('0x8'));module[_0xb38c('0x9')]=function(_0x44e03a,_0x2b0c86){return _0x44e03a['define'](_0xb38c('0xa'),attributes,{'tableName':_0xb38c('0xb'),'paranoid':![],'indexes':[{'name':_0xb38c('0xc'),'fields':[_0xb38c('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index e52ef14..bda15fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9566=['jayson/promise','client','http','request','then','info','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x257a28,_0x2cd00d){var _0x13bccc=function(_0x32c46f){while(--_0x32c46f){_0x257a28['push'](_0x257a28['shift']());}};_0x13bccc(++_0x2cd00d);}(_0x9566,0x92));var _0x6956=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x9566[_0x4a9fb1];return _0x348672;};'use strict';var _=require(_0x6956('0x0'));var util=require(_0x6956('0x1'));var moment=require('moment');var BPromise=require(_0x6956('0x2'));var rs=require(_0x6956('0x3'));var fs=require('fs');var Redis=require(_0x6956('0x4'));var db=require(_0x6956('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x6956('0x6'))(_0x6956('0x7'));var config=require('../../config/environment');var jayson=require(_0x6956('0x8'));var client=jayson[_0x6956('0x9')][_0x6956('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5e027f,_0x4d3a63,_0x20ba1d){return new BPromise(function(_0x2b7395,_0x4c648b){return client[_0x6956('0xb')](_0x5e027f,_0x20ba1d)[_0x6956('0xc')](function(_0x56ad5b){logger[_0x6956('0xd')](_0x6956('0xe'),_0x4d3a63,_0x6956('0xf'));logger[_0x6956('0x10')]('WhatsappTransferReport,\x20%s,\x20%s,\x20%s',_0x4d3a63,_0x6956('0xf'),JSON[_0x6956('0x11')](_0x56ad5b));if(_0x56ad5b[_0x6956('0x12')]){if(_0x56ad5b[_0x6956('0x12')][_0x6956('0x13')]===0x1f4){logger[_0x6956('0x12')](_0x6956('0xe'),_0x4d3a63,_0x56ad5b['error'][_0x6956('0x14')]);return _0x4c648b(_0x56ad5b[_0x6956('0x12')][_0x6956('0x14')]);}logger[_0x6956('0x12')]('WhatsappTransferReport,\x20%s,\x20%s',_0x4d3a63,_0x56ad5b[_0x6956('0x12')][_0x6956('0x14')]);return _0x2b7395(_0x56ad5b[_0x6956('0x12')][_0x6956('0x14')]);}else{logger['info']('WhatsappTransferReport,\x20%s,\x20%s',_0x4d3a63,'request\x20sent');_0x2b7395(_0x56ad5b['result'][_0x6956('0x14')]);}})[_0x6956('0x15')](function(_0x4d5f18){logger[_0x6956('0x12')](_0x6956('0xe'),_0x4d3a63,_0x4d5f18);_0x4c648b(_0x4d5f18);});});}
\ No newline at end of file
+var _0x4320=['../../config/environment','jayson/promise','client','http','request','then','info','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','WhatsappTransferReport,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x1466ba,_0x4cd93e){var _0x56a71b=function(_0x1eb2d3){while(--_0x1eb2d3){_0x1466ba['push'](_0x1466ba['shift']());}};_0x56a71b(++_0x4cd93e);}(_0x4320,0x1f0));var _0x0432=function(_0xdea41a,_0x552987){_0xdea41a=_0xdea41a-0x0;var _0x15d0d8=_0x4320[_0xdea41a];return _0x15d0d8;};'use strict';var _=require(_0x0432('0x0'));var util=require('util');var moment=require(_0x0432('0x1'));var BPromise=require(_0x0432('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0432('0x3'));var db=require(_0x0432('0x4'))['db'];var utils=require(_0x0432('0x5'));var logger=require(_0x0432('0x6'))(_0x0432('0x7'));var config=require(_0x0432('0x8'));var jayson=require(_0x0432('0x9'));var client=jayson[_0x0432('0xa')][_0x0432('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x15454d,_0x4a80de,_0x159e5e){return new BPromise(function(_0x4b074c,_0x319c4b){return client[_0x0432('0xc')](_0x15454d,_0x159e5e)[_0x0432('0xd')](function(_0x4bf994){logger[_0x0432('0xe')]('WhatsappTransferReport,\x20%s,\x20%s',_0x4a80de,'request\x20sent');logger['debug'](_0x0432('0xf'),_0x4a80de,_0x0432('0x10'),JSON[_0x0432('0x11')](_0x4bf994));if(_0x4bf994[_0x0432('0x12')]){if(_0x4bf994[_0x0432('0x12')][_0x0432('0x13')]===0x1f4){logger[_0x0432('0x12')](_0x0432('0x14'),_0x4a80de,_0x4bf994[_0x0432('0x12')][_0x0432('0x15')]);return _0x319c4b(_0x4bf994[_0x0432('0x12')]['message']);}logger[_0x0432('0x12')](_0x0432('0x14'),_0x4a80de,_0x4bf994['error'][_0x0432('0x15')]);return _0x4b074c(_0x4bf994[_0x0432('0x12')][_0x0432('0x15')]);}else{logger['info'](_0x0432('0x14'),_0x4a80de,'request\x20sent');_0x4b074c(_0x4bf994[_0x0432('0x16')]['message']);}})[_0x0432('0x17')](function(_0x15cf82){logger[_0x0432('0x12')](_0x0432('0x14'),_0x4a80de,_0x15cf82);_0x319c4b(_0x15cf82);});});}
\ No newline at end of file
index ee6b3d2..2391890 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa3f=['None','log','App\x20Ready!','Server\x20failed\x20to\x20start\x20due\x20to\x20error!','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./mysqldb','./config/seedDB','./config/license','./rpc','./config/environment','./config/logger','app','./config/pm2','./config/schedule/chat','./config/schedule/transcribe','./config/schedule/cloud-provider','sequelize','sync','then','seedDB','default','info','start','filter','exitCode','length','\x20processes\x20failed\x20at\x20startup:\x20','map','online','name','join','Offline\x20apps:','status'];(function(_0x279d37,_0x14de3f){var _0x530173=function(_0x37fc79){while(--_0x37fc79){_0x279d37['push'](_0x279d37['shift']());}};_0x530173(++_0x14de3f);}(_0xaa3f,0xbb));var _0xfaa3=function(_0x332d81,_0x16b1be){_0x332d81=_0x332d81-0x0;var _0x55db42=_0xaa3f[_0x332d81];return _0x55db42;};'use strict';var _=require(_0xfaa3('0x0'));var db=require(_0xfaa3('0x1'))['db'];var seedDb=require(_0xfaa3('0x2'));var checkLicense=require(_0xfaa3('0x3'));var rpc=require(_0xfaa3('0x4'));var config=require(_0xfaa3('0x5'));var logger=require(_0xfaa3('0x6'))(_0xfaa3('0x7'));var pm2=require(_0xfaa3('0x8'));var pm2Config=require('./config/pm2/config');var schedule=require('./config/schedule');var chat=require(_0xfaa3('0x9'));var whatsapp=require('./config/schedule/whatsapp');var transcribe=require(_0xfaa3('0xa'));var provider=require(_0xfaa3('0xb'));function main(){return db[_0xfaa3('0xc')][_0xfaa3('0xd')]()[_0xfaa3('0xe')](function(){if(config[_0xfaa3('0xf')]){return seedDb[_0xfaa3('0x10')]();}})['then'](function(){return checkLicense[_0xfaa3('0x10')]();})[_0xfaa3('0xe')](function(){return rpc['listen']();})['then'](function(_0x44d88e){logger[_0xfaa3('0x11')](_0x44d88e);return chat[_0xfaa3('0x12')]();})[_0xfaa3('0xe')](function(){return whatsapp[_0xfaa3('0x12')]();})[_0xfaa3('0xe')](function(){return schedule['start']();})[_0xfaa3('0xe')](function(){return transcribe['start']();})[_0xfaa3('0xe')](function(){return provider[_0xfaa3('0x12')]();})[_0xfaa3('0xe')](function(_0x58f71b){logger[_0xfaa3('0x11')](_0x58f71b);return pm2['start'](pm2Config);})[_0xfaa3('0xe')](function(_0x84b465){var _0x2361a9=_0x84b465[_0xfaa3('0x13')](function(_0x1243ed){return typeof _0x1243ed[_0xfaa3('0x14')]==='number'&&_0x1243ed['exitCode']>=0x0;});if(_0x2361a9[_0xfaa3('0x15')]>0x0){throw new Error(_0x2361a9[_0xfaa3('0x15')]+_0xfaa3('0x16')+_[_0xfaa3('0x17')](_0x2361a9,function(_0x4e54e4){return'\x22'+_0x4e54e4['pm2_env']['name']+'\x22';}));}logger['info']('Online\x20apps:',_[_0xfaa3('0x17')](_['filter'](_0x84b465,{'status':_0xfaa3('0x18')}),_0xfaa3('0x19'))[_0xfaa3('0x1a')]());logger[_0xfaa3('0x11')](_0xfaa3('0x1b'),_[_0xfaa3('0x17')](_[_0xfaa3('0x13')](_0x84b465,function(_0x1ab9cc){return _0x1ab9cc[_0xfaa3('0x1c')]!==_0xfaa3('0x18');}),'name')[_0xfaa3('0x1a')]()||_0xfaa3('0x1d'));console[_0xfaa3('0x1e')](_0xfaa3('0x1f'));})['catch'](function(_0x1f7324){console[_0xfaa3('0x1e')](_0xfaa3('0x20'),_0x1f7324);logger[_0xfaa3('0x21')](_0xfaa3('0x22'),_0x1f7324);process[_0xfaa3('0x23')](0x1);});}main();
\ No newline at end of file
+var _0xf29c=['status','name','None','log','App\x20Ready!','catch','Server\x20failed\x20to\x20start\x20due\x20to\x20error!','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','./mysqldb','./config/seedDB','./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','sequelize','sync','default','then','listen','info','start','filter','exitCode','length','map','pm2_env','Online\x20apps:','online','join'];(function(_0x4d8e52,_0x56172c){var _0x26d528=function(_0x326591){while(--_0x326591){_0x4d8e52['push'](_0x4d8e52['shift']());}};_0x26d528(++_0x56172c);}(_0xf29c,0xc7));var _0xcf29=function(_0x395efe,_0x182f4){_0x395efe=_0x395efe-0x0;var _0x46991d=_0xf29c[_0x395efe];return _0x46991d;};'use strict';var _=require('lodash');var db=require(_0xcf29('0x0'))['db'];var seedDb=require(_0xcf29('0x1'));var checkLicense=require(_0xcf29('0x2'));var rpc=require(_0xcf29('0x3'));var config=require(_0xcf29('0x4'));var logger=require(_0xcf29('0x5'))(_0xcf29('0x6'));var pm2=require(_0xcf29('0x7'));var pm2Config=require(_0xcf29('0x8'));var schedule=require(_0xcf29('0x9'));var chat=require(_0xcf29('0xa'));var whatsapp=require(_0xcf29('0xb'));var transcribe=require(_0xcf29('0xc'));var provider=require(_0xcf29('0xd'));function main(){return db[_0xcf29('0xe')][_0xcf29('0xf')]()['then'](function(){if(config['seedDB']){return seedDb[_0xcf29('0x10')]();}})[_0xcf29('0x11')](function(){return checkLicense[_0xcf29('0x10')]();})[_0xcf29('0x11')](function(){return rpc[_0xcf29('0x12')]();})[_0xcf29('0x11')](function(_0x2ed7fa){logger[_0xcf29('0x13')](_0x2ed7fa);return chat[_0xcf29('0x14')]();})[_0xcf29('0x11')](function(){return whatsapp[_0xcf29('0x14')]();})[_0xcf29('0x11')](function(){return schedule['start']();})[_0xcf29('0x11')](function(){return transcribe[_0xcf29('0x14')]();})['then'](function(){return provider[_0xcf29('0x14')]();})['then'](function(_0x381735){logger[_0xcf29('0x13')](_0x381735);return pm2[_0xcf29('0x14')](pm2Config);})[_0xcf29('0x11')](function(_0xd49096){var _0x8486f3=_0xd49096[_0xcf29('0x15')](function(_0x3bc380){return typeof _0x3bc380[_0xcf29('0x16')]==='number'&&_0x3bc380[_0xcf29('0x16')]>=0x0;});if(_0x8486f3['length']>0x0){throw new Error(_0x8486f3[_0xcf29('0x17')]+'\x20processes\x20failed\x20at\x20startup:\x20'+_[_0xcf29('0x18')](_0x8486f3,function(_0x51f365){return'\x22'+_0x51f365[_0xcf29('0x19')]['name']+'\x22';}));}logger[_0xcf29('0x13')](_0xcf29('0x1a'),_['map'](_[_0xcf29('0x15')](_0xd49096,{'status':_0xcf29('0x1b')}),'name')[_0xcf29('0x1c')]());logger[_0xcf29('0x13')]('Offline\x20apps:',_['map'](_['filter'](_0xd49096,function(_0x4d484c){return _0x4d484c[_0xcf29('0x1d')]!==_0xcf29('0x1b');}),_0xcf29('0x1e'))[_0xcf29('0x1c')]()||_0xcf29('0x1f'));console[_0xcf29('0x20')](_0xcf29('0x21'));})[_0xcf29('0x22')](function(_0x283c87){console[_0xcf29('0x20')](_0xcf29('0x23'),_0x283c87);logger['error'](_0xcf29('0x24'),_0x283c87);process[_0xcf29('0x25')](0x1);});}main();
\ No newline at end of file
index 3d7f94c..3781013 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['smsAutoanswerDelay','openchannelAutoanswer','openchannelAutoanswerDelay','faxAutoanswer','whatsappAutoanswer','whatsappAutoanswerDelay','isChatInteractionAuthorized','use','user','ChatInteraction','findOne','params','closed','disposition','then','unmanaged','json','Unmanaged.','Forbidden.','catch','isAuthenticated','headers','authorization','startsWith','Basic','find','authenticate','pass','status','Wrong\x20credentials.','Bearer','Unknown\x20authorization\x20format','query','apikey','User','sub','Setting','allowedLoginAttempts','blockDuration','isEqual','apiKeyNonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blocked','add','minutes','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','Forbidden','isWebrtcLicence','webrtc','isMiddleware','signToken','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','motion.token','/dashboards/general','send','retrieveApiKey','isNil','apiKeyIat','regenerateApiKey','getUuid','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','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','split','toLowerCase','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','decryptString','length','unshift','encryptString','join','promisify','sign','secret','payload','options','verify','randomBytes','hex','floor','now','HS512','toString','../../mysqldb','../../config/license/hardware','../../config/license/util','../encryptor','lodash','express-jwt','composable-middleware','basic-auth','util','secrets','session','role','name','internal','email','permissions','md5secret','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','pauseType','showWebBar','lastPauseAt','allowmessenger','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarEnableDtmfTone','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControlPort','interface','privacyEnabled','settingsEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','chatAutoanswer','chatAutoanswerDelay','emailAutoanswer','emailAutoanswerDelay','smsAutoanswer'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x6aa7,0x178));var _0x76aa=function(_0x549e5d,_0x57931d){_0x549e5d=_0x549e5d-0x0;var _0x1071f6=_0x6aa7[_0x549e5d];return _0x1071f6;};'use strict';var db=require(_0x76aa('0x0'))['db'];var config=require('../../config/environment');var hardwareConf=require(_0x76aa('0x1'));var licenseUtil=require(_0x76aa('0x2'));var encryptor=require(_0x76aa('0x3'));var _=require(_0x76aa('0x4'));var jwt=require('jsonwebtoken');var expressJwt=require(_0x76aa('0x5'));var compose=require(_0x76aa('0x6'));var basicAuth=require(_0x76aa('0x7'));var crypto=require('crypto');var BPromise=require('bluebird');var util=require(_0x76aa('0x8'));var moment=require('moment');var validateJwt=expressJwt({'secret':config[_0x76aa('0x9')][_0x76aa('0xa')]});var userAttributes=['id',_0x76aa('0xb'),'fullname',_0x76aa('0xc'),_0x76aa('0xd'),_0x76aa('0xe'),'userpic',_0x76aa('0xf'),_0x76aa('0x10'),_0x76aa('0x11'),_0x76aa('0x12'),_0x76aa('0x13'),_0x76aa('0x14'),_0x76aa('0x15'),_0x76aa('0x16'),_0x76aa('0x17'),_0x76aa('0x18'),'lastLoginAt',_0x76aa('0x19'),'crudPermissions',_0x76aa('0x1a'),_0x76aa('0x1b'),_0x76aa('0x1c'),_0x76aa('0x1d'),_0x76aa('0x1e'),'phoneBarDnd','phoneBarEnableRecording',_0x76aa('0x1f'),'phoneBarEnableSettings',_0x76aa('0x20'),_0x76aa('0x21'),'phoneBarRemoteControl',_0x76aa('0x22'),'hotdesk',_0x76aa('0x23'),'userProfileId',_0x76aa('0x24'),_0x76aa('0x25'),_0x76aa('0x26'),_0x76aa('0x27'),_0x76aa('0x28'),_0x76aa('0x29'),'ignorePauseForPreviewCalls','selectRecallMeCampaign',_0x76aa('0x2a'),_0x76aa('0x2b'),_0x76aa('0x2c'),_0x76aa('0x2d'),_0x76aa('0x2e'),_0x76aa('0x2f'),_0x76aa('0x30'),_0x76aa('0x31'),_0x76aa('0x32'),'faxAutoanswerDelay',_0x76aa('0x33'),_0x76aa('0x34')];exports[_0x76aa('0x35')]=function(){return this['isAuthenticated'](!![])[_0x76aa('0x36')](function(_0x189cb6,_0x31252f,_0x2bd2c6){if(_0x189cb6[_0x76aa('0x37')]){_0x2bd2c6();}else{return db[_0x76aa('0x38')][_0x76aa('0x39')]({'where':{'id':_0x189cb6[_0x76aa('0x3a')]['id']},'attributes':['id',_0x76aa('0x3b'),_0x76aa('0x3c')],'raw':!![]})[_0x76aa('0x3d')](function(_0x26b75e){if(_0x26b75e&&_0x26b75e[_0x76aa('0x3b')]){return _0x31252f['status'](_0x26b75e[_0x76aa('0x3c')]===_0x76aa('0x3e')?0x195:0x193)[_0x76aa('0x3f')]({'message':_0x26b75e[_0x76aa('0x3c')]===_0x76aa('0x3e')?_0x76aa('0x40'):_0x76aa('0x41')});}else{_0x2bd2c6();}})[_0x76aa('0x42')](function(_0xd12a99){_0x2bd2c6(_0xd12a99);});}});};exports[_0x76aa('0x43')]=function isAuthenticated(_0x545b06){return compose()[_0x76aa('0x36')](function(_0x5a8030,_0x994550,_0x365ff8){var _0x2dec94;if(_0x5a8030[_0x76aa('0x44')][_0x76aa('0x45')]){if(_[_0x76aa('0x46')](_0x5a8030[_0x76aa('0x44')][_0x76aa('0x45')],_0x76aa('0x47'))){var _0x3ea05a=basicAuth(_0x5a8030);db['User'][_0x76aa('0x48')]({'where':{'name':_0x3ea05a[_0x76aa('0xc')]}})[_0x76aa('0x3d')](function(_0x928ccf){if(!_0x928ccf||!_0x928ccf[_0x76aa('0x49')](_0x3ea05a[_0x76aa('0x4a')])){return _0x994550[_0x76aa('0x4b')](0x191)['json']({'message':_0x76aa('0x4c')});}_0x5a8030[_0x76aa('0x37')]={'id':_0x928ccf['id']};_0x365ff8();})['catch'](function(_0x2ee338){_0x365ff8(_0x2ee338);});}else if(_['startsWith'](_0x5a8030[_0x76aa('0x44')]['authorization'],_0x76aa('0x4d'))){validateJwt(_0x5a8030,_0x994550,_0x365ff8);}else{if(_0x545b06){_0x365ff8();}else{return _0x994550['status'](0x193)['json']({'message':_0x76aa('0x4e')});}}}else if(_0x5a8030[_0x76aa('0x4f')][_0x76aa('0x50')]){try{var _0x37dfab={'audience':hardwareConf['getUuid'](),'issuer':hardwareConf['getUuid']()};verifyJwt(_0x5a8030[_0x76aa('0x4f')][_0x76aa('0x50')],_0x37dfab)[_0x76aa('0x3d')](function(_0x23e2fd){return db[_0x76aa('0x51')]['find']({'where':{'id':_0x23e2fd[_0x76aa('0x52')]}})['then'](function(_0x5086f5){_0x2dec94=_0x5086f5;return db[_0x76aa('0x53')][_0x76aa('0x39')]({'where':{'id':0x1},'attributes':[_0x76aa('0x54'),_0x76aa('0x55')],'raw':!![]});})['then'](function(_0x401c07){if(!_0x2dec94||!_[_0x76aa('0x56')](_0x2dec94[_0x76aa('0x57')],_0x23e2fd['nonce'])){return _0x994550[_0x76aa('0x4b')](0x191)[_0x76aa('0x3f')]({'message':_0x76aa('0x58')});}if(_0x2dec94[_0x76aa('0x59')]){return _0x994550[_0x76aa('0x4b')](0x191)[_0x76aa('0x3f')]({'message':_0x76aa('0x5a')});}if(_0x2dec94[_0x76aa('0x5b')]){if(_0x401c07[_0x76aa('0x55')]>0x0){if(moment(_0x2dec94['blockedAt'])[_0x76aa('0x5c')](_0x401c07[_0x76aa('0x55')],_0x76aa('0x5d'))>moment()){return _0x994550[_0x76aa('0x4b')](0x191)[_0x76aa('0x3f')]({'message':_0x76aa('0x5a')});}}else{return _0x994550['status'](0x191)['json']({'message':_0x76aa('0x5a')});}}_0x5a8030[_0x76aa('0x37')]={'id':_0x2dec94['id']};_0x365ff8();});})[_0x76aa('0x42')](function(){return _0x994550[_0x76aa('0x4b')](0x191)['json']({'message':_0x76aa('0x5a')});});}catch(_0x403084){_0x365ff8(_0x403084);}}else if(_0x545b06){_0x365ff8();}else{return _0x994550[_0x76aa('0x4b')](0x193)[_0x76aa('0x3f')]({'message':_0x76aa('0x4e')});}})['use'](function(_0x13dafe,_0x556f59,_0xbb3136){if(_0x13dafe['user']){db['User']['find']({'where':{'id':_0x13dafe[_0x76aa('0x37')]['id']},'attributes':userAttributes})['then'](function(_0x5cf314){if(!_0x5cf314){return _0x556f59['status'](0x194)[_0x76aa('0x3f')]({'message':_0x76aa('0x5e')});}_0x13dafe[_0x76aa('0x37')]=_0x5cf314;_0xbb3136();})[_0x76aa('0x42')](function(_0x27a52e){_0xbb3136(_0x27a52e);});}else if(_0x545b06){_0xbb3136();}else{return _0x556f59['status'](0x194)[_0x76aa('0x3f')]({'message':_0x76aa('0x5f')});}});};exports[_0x76aa('0x60')]=function canUpdate(){return compose()[_0x76aa('0x36')](function(_0x3800a4,_0x47a308,_0x2f695c){return licenseUtil[_0x76aa('0x61')]()['then'](function(_0x2d3441){if(_0x2d3441['update']){_0x2f695c();}else{return _0x47a308[_0x76aa('0x4b')](0x193)[_0x76aa('0x3f')]({'message':_0x76aa('0x62')});}})[_0x76aa('0x42')](function(_0x2d0bc4){_0x2f695c(_0x2d0bc4);});});};exports[_0x76aa('0x63')]=function isWebrtcLicence(){return compose()[_0x76aa('0x36')](function(_0x165858,_0xb8d052,_0x3946bd){return licenseUtil['getLicense']()[_0x76aa('0x3d')](function(_0x4b8f12){if(_0x4b8f12[_0x76aa('0x64')]){_0x3946bd();}else{return _0xb8d052[_0x76aa('0x4b')](0x193)[_0x76aa('0x3f')]({'message':_0x76aa('0x62')});}})['catch'](function(_0x5a3d9c){_0x3946bd(_0x5a3d9c);});});};exports[_0x76aa('0x65')]=function(_0x54b673,_0x8660a4,_0x302a0c){_0x54b673[_0x76aa('0x65')]=!![];return _0x302a0c();};exports[_0x76aa('0x66')]=function signToken(_0x30c577){return signJwt(_0x30c577);};exports[_0x76aa('0x67')]=function(_0x5b567b,_0x564546){if(!_0x5b567b[_0x76aa('0x37')]){return _0x564546[_0x76aa('0x4b')](0x194)[_0x76aa('0x3f')]({'message':_0x76aa('0x68')});}var _0x18c679={'payload':{'id':_0x5b567b[_0x76aa('0x37')]['id'],'role':_0x5b567b['user'][_0x76aa('0xb')]},'options':{'expiresIn':0x15180}};return signJwt(_0x18c679)[_0x76aa('0x3d')](function(_0x26db69){_0x564546['cookie'](_0x76aa('0x69'),_0x26db69);_0x564546['redirect'](_0x76aa('0x6a'));})['catch'](function(_0x339b0d){return _0x564546[_0x76aa('0x4b')](0x1f4)[_0x76aa('0x6b')](_0x339b0d);});};exports[_0x76aa('0x6c')]=function(_0x37a4d9){if(_[_0x76aa('0x6d')](_0x37a4d9[_0x76aa('0x57')])||_['isNil'](_0x37a4d9[_0x76aa('0x6e')])){return null;}else{return createJwt(_0x37a4d9);}};exports['generateApiKey']=function(_0x3ee32){_0x3ee32[_0x76aa('0x57')]=generateNonce();_0x3ee32[_0x76aa('0x6e')]=generateIssuedAt();return createJwt(_0x3ee32);};exports[_0x76aa('0x6f')]=function(_0x3fa7ec,_0x28f8aa){var _0x336024=_0x3fa7ec['query'][_0x76aa('0x50')];if(_0x336024){var _0x281f73={'nonce':_0x28f8aa[_0x76aa('0x57')],'iat':_0x28f8aa[_0x76aa('0x6e')],'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0x76aa('0x70')]()};return verifyJwt(_0x336024,_0x281f73)[_0x76aa('0x3d')](function(){return generateApiKey(_0x28f8aa);});}else{throw{'message':_0x76aa('0x71')};}};exports[_0x76aa('0x72')]=function(_0x2027f8){var _0xf7732=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0xf7732['test'](_0x2027f8))throw new db[(_0x76aa('0x73'))][(_0x76aa('0x74'))](_0x76aa('0x75'));return;};exports[_0x76aa('0x76')]=function(_0x3967f3,_0x2fdc4f,_0x37babe){var _0x51893b=encryptor['decryptString'](_0x2fdc4f)[_0x76aa('0x77')](',');for(var _0x3b0d8a=0x0;_0x3b0d8a<_0x37babe;_0x3b0d8a++){if(!_0x51893b[_0x3b0d8a])break;if(_0x3967f3['toLowerCase']()===_0x51893b[_0x3b0d8a][_0x76aa('0x78')]()){var _0x1e6f3c=util['format'](_0x76aa('0x79'),_0x37babe);if(_0x37babe===0x1){_0x1e6f3c=_0x76aa('0x7a');}throw new db[(_0x76aa('0x73'))][(_0x76aa('0x74'))](_0x1e6f3c);}}return;};exports[_0x76aa('0x7b')]=function(_0x1f5010,_0x3376ec){var _0x30573a=_0x3376ec?encryptor[_0x76aa('0x7c')](_0x3376ec)['split'](','):[];if(_0x30573a[_0x76aa('0x7d')]===0x5){_0x30573a['splice'](-0x1,0x1);}_0x30573a[_0x76aa('0x7e')](_0x1f5010);return encryptor[_0x76aa('0x7f')](_0x30573a[_0x76aa('0x80')](','));};function signJwt(_0x16cc85){var _0x343cf1=BPromise[_0x76aa('0x81')](jwt[_0x76aa('0x82')],{'context':jwt});var _0x431d1c=_0x16cc85[_0x76aa('0x83')]||config['secrets'][_0x76aa('0xa')];return new BPromise(function(_0x3d4025,_0x5c542b){_0x343cf1(_0x16cc85[_0x76aa('0x84')],_0x431d1c,_0x16cc85[_0x76aa('0x85')])[_0x76aa('0x3d')](function(_0x3d6d10){_0x3d4025(_0x3d6d10);})[_0x76aa('0x42')](function(_0x5546b6){_0x5c542b(_0x5546b6);});});}function verifyJwt(_0x364d05,_0x4d3ad0,_0x35bd2b){var _0x35881c=BPromise[_0x76aa('0x81')](jwt[_0x76aa('0x86')],{'context':jwt});var _0x3a82fe=_0x35bd2b||config[_0x76aa('0x9')][_0x76aa('0xa')];return new BPromise(function(_0x4a37f1,_0x9ea0af){_0x35881c(_0x364d05,_0x3a82fe,_0x4d3ad0)[_0x76aa('0x3d')](function(_0x543c1d){_0x4a37f1(_0x543c1d);})['catch'](function(_0x40429c){_0x9ea0af(_0x40429c);});});}function generateNonce(){return crypto[_0x76aa('0x87')](0x10)['toString'](_0x76aa('0x88'));}function generateIssuedAt(){return Math[_0x76aa('0x89')](Date[_0x76aa('0x8a')]()/0x3e8)['toString']();}function createJwt(_0x446073){var _0x47f733={'payload':{'iat':_0x446073[_0x76aa('0x6e')],'nonce':_0x446073[_0x76aa('0x57')]},'options':{'algorithm':_0x76aa('0x8b'),'subject':_0x446073['id'][_0x76aa('0x8c')](),'issuer':hardwareConf['getUuid'](),'audience':hardwareConf['getUuid']()}};return signJwt(_0x47f733)[_0x76aa('0x3d')](function(_0x4dfeb3){return{'iat':_0x446073[_0x76aa('0x6e')],'nonce':_0x446073[_0x76aa('0x57')],'token':_0x4dfeb3};});}
\ No newline at end of file
+var _0xa41a=['passwordResetAt','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','phoneBarRemoteControlPort','interface','userProfileId','privacyEnabled','settingsEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','ignorePauseForPreviewCalls','chatAutoanswerDelay','emailAutoanswer','emailAutoanswerDelay','smsAutoanswerDelay','openchannelAutoanswer','faxAutoanswerDelay','whatsappAutoanswerDelay','isChatInteractionAuthorized','isAuthenticated','use','user','ChatInteraction','findOne','params','closed','disposition','unmanaged','Unmanaged.','Forbidden.','catch','headers','authorization','User','name','then','status','json','Wrong\x20credentials.','startsWith','Bearer','query','apikey','getUuid','find','sub','allowedLoginAttempts','blockDuration','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blocked','blockedAt','minutes','Unknown\x20authorization\x20format','User\x20not\x20found.','canUpdate','Forbidden','isWebrtcLicence','webrtc','isMiddleware','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','redirect','send','retrieveApiKey','isNil','apiKeyIat','generateApiKey','regenerateApiKey','validatePasswordPattern','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','split','toLowerCase','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','decryptString','length','splice','unshift','join','promisify','sign','secret','verify','secrets','session','randomBytes','now','toString','../../mysqldb','../../config/environment','../../config/license/util','../encryptor','lodash','jsonwebtoken','express-jwt','composable-middleware','basic-auth','crypto','util','moment','role','fullname','internal','email','userpic','permissions','md5secret','voicePause','chatPause','mailPause','faxPause','openchannelPause','pauseType','lastPauseAt','allowmessenger'];(function(_0x1a0928,_0x548390){var _0x2e3965=function(_0x333abf){while(--_0x333abf){_0x1a0928['push'](_0x1a0928['shift']());}};_0x2e3965(++_0x548390);}(_0xa41a,0x6b));var _0xaa41=function(_0x5f3e9d,_0x4af824){_0x5f3e9d=_0x5f3e9d-0x0;var _0x515750=_0xa41a[_0x5f3e9d];return _0x515750;};'use strict';var db=require(_0xaa41('0x0'))['db'];var config=require(_0xaa41('0x1'));var hardwareConf=require('../../config/license/hardware');var licenseUtil=require(_0xaa41('0x2'));var encryptor=require(_0xaa41('0x3'));var _=require(_0xaa41('0x4'));var jwt=require(_0xaa41('0x5'));var expressJwt=require(_0xaa41('0x6'));var compose=require(_0xaa41('0x7'));var basicAuth=require(_0xaa41('0x8'));var crypto=require(_0xaa41('0x9'));var BPromise=require('bluebird');var util=require(_0xaa41('0xa'));var moment=require(_0xaa41('0xb'));var validateJwt=expressJwt({'secret':config['secrets']['session']});var userAttributes=['id',_0xaa41('0xc'),_0xaa41('0xd'),'name',_0xaa41('0xe'),_0xaa41('0xf'),_0xaa41('0x10'),_0xaa41('0x11'),_0xaa41('0x12'),_0xaa41('0x13'),_0xaa41('0x14'),_0xaa41('0x15'),_0xaa41('0x16'),'smsPause',_0xaa41('0x17'),_0xaa41('0x18'),'showWebBar','lastLoginAt',_0xaa41('0x19'),'crudPermissions',_0xaa41('0x1a'),_0xaa41('0x1b'),_0xaa41('0x1c'),_0xaa41('0x1d'),_0xaa41('0x1e'),'phoneBarDnd',_0xaa41('0x1f'),_0xaa41('0x20'),_0xaa41('0x21'),_0xaa41('0x22'),_0xaa41('0x23'),_0xaa41('0x24'),_0xaa41('0x25'),'hotdesk',_0xaa41('0x26'),_0xaa41('0x27'),_0xaa41('0x28'),_0xaa41('0x29'),_0xaa41('0x2a'),_0xaa41('0x2b'),_0xaa41('0x2c'),_0xaa41('0x2d'),_0xaa41('0x2e'),'selectRecallMeCampaign','chatAutoanswer',_0xaa41('0x2f'),_0xaa41('0x30'),_0xaa41('0x31'),'smsAutoanswer',_0xaa41('0x32'),_0xaa41('0x33'),'openchannelAutoanswerDelay','faxAutoanswer',_0xaa41('0x34'),'whatsappAutoanswer',_0xaa41('0x35')];exports[_0xaa41('0x36')]=function(){return this[_0xaa41('0x37')](!![])[_0xaa41('0x38')](function(_0x1d623c,_0x4eb01f,_0x43c430){if(_0x1d623c[_0xaa41('0x39')]){_0x43c430();}else{return db[_0xaa41('0x3a')][_0xaa41('0x3b')]({'where':{'id':_0x1d623c[_0xaa41('0x3c')]['id']},'attributes':['id',_0xaa41('0x3d'),'disposition'],'raw':!![]})['then'](function(_0x16aec5){if(_0x16aec5&&_0x16aec5['closed']){return _0x4eb01f['status'](_0x16aec5[_0xaa41('0x3e')]==='unmanaged'?0x195:0x193)['json']({'message':_0x16aec5[_0xaa41('0x3e')]===_0xaa41('0x3f')?_0xaa41('0x40'):_0xaa41('0x41')});}else{_0x43c430();}})[_0xaa41('0x42')](function(_0xa7269f){_0x43c430(_0xa7269f);});}});};exports['isAuthenticated']=function isAuthenticated(_0x30a174){return compose()[_0xaa41('0x38')](function(_0x63c18c,_0x9a16e3,_0x1d8c2b){var _0x4466a3;if(_0x63c18c[_0xaa41('0x43')][_0xaa41('0x44')]){if(_['startsWith'](_0x63c18c[_0xaa41('0x43')]['authorization'],'Basic')){var _0x714537=basicAuth(_0x63c18c);db[_0xaa41('0x45')]['find']({'where':{'name':_0x714537[_0xaa41('0x46')]}})[_0xaa41('0x47')](function(_0x4e3b44){if(!_0x4e3b44||!_0x4e3b44['authenticate'](_0x714537['pass'])){return _0x9a16e3[_0xaa41('0x48')](0x191)[_0xaa41('0x49')]({'message':_0xaa41('0x4a')});}_0x63c18c[_0xaa41('0x39')]={'id':_0x4e3b44['id']};_0x1d8c2b();})['catch'](function(_0x289c4a){_0x1d8c2b(_0x289c4a);});}else if(_[_0xaa41('0x4b')](_0x63c18c[_0xaa41('0x43')]['authorization'],_0xaa41('0x4c'))){validateJwt(_0x63c18c,_0x9a16e3,_0x1d8c2b);}else{if(_0x30a174){_0x1d8c2b();}else{return _0x9a16e3[_0xaa41('0x48')](0x193)[_0xaa41('0x49')]({'message':'Unknown\x20authorization\x20format'});}}}else if(_0x63c18c[_0xaa41('0x4d')][_0xaa41('0x4e')]){try{var _0x57fe1d={'audience':hardwareConf[_0xaa41('0x4f')](),'issuer':hardwareConf[_0xaa41('0x4f')]()};verifyJwt(_0x63c18c[_0xaa41('0x4d')]['apikey'],_0x57fe1d)[_0xaa41('0x47')](function(_0x48335f){return db[_0xaa41('0x45')][_0xaa41('0x50')]({'where':{'id':_0x48335f[_0xaa41('0x51')]}})['then'](function(_0x526377){_0x4466a3=_0x526377;return db['Setting'][_0xaa41('0x3b')]({'where':{'id':0x1},'attributes':[_0xaa41('0x52'),_0xaa41('0x53')],'raw':!![]});})[_0xaa41('0x47')](function(_0x4fbb92){if(!_0x4466a3||!_['isEqual'](_0x4466a3[_0xaa41('0x54')],_0x48335f[_0xaa41('0x55')])){return _0x9a16e3[_0xaa41('0x48')](0x191)[_0xaa41('0x49')]({'message':_0xaa41('0x56')});}if(_0x4466a3[_0xaa41('0x57')]){return _0x9a16e3[_0xaa41('0x48')](0x191)['json']({'message':_0xaa41('0x58')});}if(_0x4466a3[_0xaa41('0x59')]){if(_0x4fbb92[_0xaa41('0x53')]>0x0){if(moment(_0x4466a3[_0xaa41('0x5a')])['add'](_0x4fbb92['blockDuration'],_0xaa41('0x5b'))>moment()){return _0x9a16e3[_0xaa41('0x48')](0x191)['json']({'message':_0xaa41('0x58')});}}else{return _0x9a16e3['status'](0x191)[_0xaa41('0x49')]({'message':_0xaa41('0x58')});}}_0x63c18c[_0xaa41('0x39')]={'id':_0x4466a3['id']};_0x1d8c2b();});})[_0xaa41('0x42')](function(){return _0x9a16e3[_0xaa41('0x48')](0x191)[_0xaa41('0x49')]({'message':_0xaa41('0x58')});});}catch(_0x21f204){_0x1d8c2b(_0x21f204);}}else if(_0x30a174){_0x1d8c2b();}else{return _0x9a16e3['status'](0x193)[_0xaa41('0x49')]({'message':_0xaa41('0x5c')});}})[_0xaa41('0x38')](function(_0x398c35,_0xc84fb8,_0x1e2eb2){if(_0x398c35['user']){db['User'][_0xaa41('0x50')]({'where':{'id':_0x398c35['user']['id']},'attributes':userAttributes})[_0xaa41('0x47')](function(_0x215896){if(!_0x215896){return _0xc84fb8[_0xaa41('0x48')](0x194)[_0xaa41('0x49')]({'message':_0xaa41('0x5d')});}_0x398c35[_0xaa41('0x39')]=_0x215896;_0x1e2eb2();})[_0xaa41('0x42')](function(_0x5ee74c){_0x1e2eb2(_0x5ee74c);});}else if(_0x30a174){_0x1e2eb2();}else{return _0xc84fb8[_0xaa41('0x48')](0x194)['json']({'message':'User\x20object\x20not\x20found.'});}});};exports[_0xaa41('0x5e')]=function canUpdate(){return compose()['use'](function(_0x57240d,_0x5274c9,_0x3bad48){return licenseUtil['getLicense']()[_0xaa41('0x47')](function(_0x198716){if(_0x198716['update']){_0x3bad48();}else{return _0x5274c9['status'](0x193)[_0xaa41('0x49')]({'message':_0xaa41('0x5f')});}})[_0xaa41('0x42')](function(_0x2af8ba){_0x3bad48(_0x2af8ba);});});};exports[_0xaa41('0x60')]=function isWebrtcLicence(){return compose()[_0xaa41('0x38')](function(_0x258096,_0x37bf5d,_0x2fa6ec){return licenseUtil['getLicense']()[_0xaa41('0x47')](function(_0x22d512){if(_0x22d512[_0xaa41('0x61')]){_0x2fa6ec();}else{return _0x37bf5d[_0xaa41('0x48')](0x193)[_0xaa41('0x49')]({'message':_0xaa41('0x5f')});}})['catch'](function(_0x406824){_0x2fa6ec(_0x406824);});});};exports[_0xaa41('0x62')]=function(_0x1f50c,_0x2288f8,_0x57d1f6){_0x1f50c[_0xaa41('0x62')]=!![];return _0x57d1f6();};exports['signToken']=function signToken(_0x49fedd){return signJwt(_0x49fedd);};exports[_0xaa41('0x63')]=function(_0xe0eec0,_0x3e16ef){if(!_0xe0eec0['user']){return _0x3e16ef[_0xaa41('0x48')](0x194)[_0xaa41('0x49')]({'message':_0xaa41('0x64')});}var _0x48fa37={'payload':{'id':_0xe0eec0[_0xaa41('0x39')]['id'],'role':_0xe0eec0[_0xaa41('0x39')][_0xaa41('0xc')]},'options':{'expiresIn':0x15180}};return signJwt(_0x48fa37)[_0xaa41('0x47')](function(_0x37fbe2){_0x3e16ef[_0xaa41('0x65')](_0xaa41('0x66'),_0x37fbe2);_0x3e16ef[_0xaa41('0x67')]('/dashboards/general');})[_0xaa41('0x42')](function(_0x5bef5f){return _0x3e16ef['status'](0x1f4)[_0xaa41('0x68')](_0x5bef5f);});};exports[_0xaa41('0x69')]=function(_0x3fef3e){if(_[_0xaa41('0x6a')](_0x3fef3e[_0xaa41('0x54')])||_[_0xaa41('0x6a')](_0x3fef3e[_0xaa41('0x6b')])){return null;}else{return createJwt(_0x3fef3e);}};exports[_0xaa41('0x6c')]=function(_0x519e39){_0x519e39[_0xaa41('0x54')]=generateNonce();_0x519e39[_0xaa41('0x6b')]=generateIssuedAt();return createJwt(_0x519e39);};exports[_0xaa41('0x6d')]=function(_0x4f9e92,_0x2e0f53){var _0x35f664=_0x4f9e92['query'][_0xaa41('0x4e')];if(_0x35f664){var _0xd36d1a={'nonce':_0x2e0f53[_0xaa41('0x54')],'iat':_0x2e0f53['apiKeyIat'],'audience':hardwareConf[_0xaa41('0x4f')](),'issuer':hardwareConf[_0xaa41('0x4f')]()};return verifyJwt(_0x35f664,_0xd36d1a)['then'](function(){return generateApiKey(_0x2e0f53);});}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};exports[_0xaa41('0x6e')]=function(_0x3cd14f){var _0x3a29d2=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x3a29d2['test'](_0x3cd14f))throw new db[(_0xaa41('0x6f'))][(_0xaa41('0x70'))](_0xaa41('0x71'));return;};exports[_0xaa41('0x72')]=function(_0x2abb78,_0x5ccdc5,_0x2ae70c){var _0x57cb70=encryptor['decryptString'](_0x5ccdc5)[_0xaa41('0x73')](',');for(var _0x52ae7f=0x0;_0x52ae7f<_0x2ae70c;_0x52ae7f++){if(!_0x57cb70[_0x52ae7f])break;if(_0x2abb78[_0xaa41('0x74')]()===_0x57cb70[_0x52ae7f][_0xaa41('0x74')]()){var _0x169ddf=util['format'](_0xaa41('0x75'),_0x2ae70c);if(_0x2ae70c===0x1){_0x169ddf=_0xaa41('0x76');}throw new db[(_0xaa41('0x6f'))][(_0xaa41('0x70'))](_0x169ddf);}}return;};exports[_0xaa41('0x77')]=function(_0x332a3c,_0xc56018){var _0x337059=_0xc56018?encryptor[_0xaa41('0x78')](_0xc56018)['split'](','):[];if(_0x337059[_0xaa41('0x79')]===0x5){_0x337059[_0xaa41('0x7a')](-0x1,0x1);}_0x337059[_0xaa41('0x7b')](_0x332a3c);return encryptor['encryptString'](_0x337059[_0xaa41('0x7c')](','));};function signJwt(_0x2caf5c){var _0x157898=BPromise[_0xaa41('0x7d')](jwt[_0xaa41('0x7e')],{'context':jwt});var _0xfbe748=_0x2caf5c[_0xaa41('0x7f')]||config['secrets']['session'];return new BPromise(function(_0x5cb34d,_0x540325){_0x157898(_0x2caf5c['payload'],_0xfbe748,_0x2caf5c['options'])[_0xaa41('0x47')](function(_0x50b598){_0x5cb34d(_0x50b598);})['catch'](function(_0x24c6f3){_0x540325(_0x24c6f3);});});}function verifyJwt(_0x40a524,_0x1a877b,_0x312eee){var _0x5cabc4=BPromise[_0xaa41('0x7d')](jwt[_0xaa41('0x80')],{'context':jwt});var _0x1ddb6c=_0x312eee||config[_0xaa41('0x81')][_0xaa41('0x82')];return new BPromise(function(_0x41ca40,_0x46ebcd){_0x5cabc4(_0x40a524,_0x1ddb6c,_0x1a877b)[_0xaa41('0x47')](function(_0x1795d1){_0x41ca40(_0x1795d1);})['catch'](function(_0x185600){_0x46ebcd(_0x185600);});});}function generateNonce(){return crypto[_0xaa41('0x83')](0x10)['toString']('hex');}function generateIssuedAt(){return Math['floor'](Date[_0xaa41('0x84')]()/0x3e8)['toString']();}function createJwt(_0x1eac4a){var _0x5c8028={'payload':{'iat':_0x1eac4a[_0xaa41('0x6b')],'nonce':_0x1eac4a[_0xaa41('0x54')]},'options':{'algorithm':'HS512','subject':_0x1eac4a['id'][_0xaa41('0x85')](),'issuer':hardwareConf[_0xaa41('0x4f')](),'audience':hardwareConf[_0xaa41('0x4f')]()}};return signJwt(_0x5c8028)[_0xaa41('0x47')](function(_0x5a2683){return{'iat':_0x1eac4a['apiKeyIat'],'nonce':_0x1eac4a[_0xaa41('0x54')],'token':_0x5a2683};});}
\ No newline at end of file
index 6300ce6..04fe3d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb065=['session','aes-256-ctr','aes192','encrypt','algorithm','error','test','getCiphers','filter','indexOf','hasOwnProperty','encryptFile','createReadStream','createCipher','data','update','binary','write','end','close','unlink','createWriteStream','createDecipher','secret','utf8','base64','final','decryptString','crypto','../../config/environment','../../config/logger','app','secrets'];(function(_0x1c0f04,_0x153e63){var _0x3c2e4d=function(_0x332c67){while(--_0x332c67){_0x1c0f04['push'](_0x1c0f04['shift']());}};_0x3c2e4d(++_0x153e63);}(_0xb065,0x145));var _0x5b06=function(_0x5e4ba7,_0x288a11){_0x5e4ba7=_0x5e4ba7-0x0;var _0x2adf5b=_0xb065[_0x5e4ba7];return _0x2adf5b;};'use strict';var crypto=require(_0x5b06('0x0'));var fs=require('fs');var BPromise=require('bluebird');var _=require('lodash');var config=require(_0x5b06('0x1'));var logger=require(_0x5b06('0x2'))(_0x5b06('0x3'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x5b06('0x4')][_0x5b06('0x5')],'algorithm':_0x5b06('0x6')};const fileOptions={'algorithm':_0x5b06('0x7')};if(config['encrypt']&&config[_0x5b06('0x8')][_0x5b06('0x9')]){var isSupported=isAlgorithmSupported(config[_0x5b06('0x8')][_0x5b06('0x9')]);if(isSupported){fileOptions[_0x5b06('0x9')]=config[_0x5b06('0x8')]['algorithm'];}else{var supportedAlgorithms=getSupportedCiphers()['join'](',\x20');logger[_0x5b06('0xa')](config[_0x5b06('0x8')][_0x5b06('0x9')],'is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:',supportedAlgorithms);}}function isASupportedCipher(_0x2d0942){return AES_SUPPORTED_RX[_0x5b06('0xb')](_0x2d0942);}function getSupportedCiphers(){return crypto[_0x5b06('0xc')]()[_0x5b06('0xd')](isASupportedCipher);}function isAlgorithmSupported(_0x5998be){return getSupportedCiphers()[_0x5b06('0xe')](_0x5998be)>-0x1;}function combineOptions(_0xb050b2){var _0x5c3530={};for(var _0x55ec12 in fileOptions){if(fileOptions[_0x5b06('0xf')](_0x55ec12)){_0x5c3530[_0x55ec12]=fileOptions[_0x55ec12];}}if(_0xb050b2){for(var _0xc46d5f in _0xb050b2){if(_0xb050b2[_0x5b06('0xf')](_0xc46d5f)){_0x5c3530[_0xc46d5f]=_0xb050b2[_0xc46d5f];}}}return _0x5c3530;}exports[_0x5b06('0x10')]=function(_0x47832c,_0x32b889,_0x290c90,_0x27f133){return new BPromise(function(_0x3ba54c,_0xcee972){_0x27f133=combineOptions(_0x27f133);var _0x28d593=new Buffer(_0x290c90);var _0x58b789=fs[_0x5b06('0x11')](_0x47832c);var _0x19e082=fs['createWriteStream'](_0x32b889);var _0x1b7ad7=crypto[_0x5b06('0x12')](_0x27f133[_0x5b06('0x9')],_0x28d593);_0x58b789['on'](_0x5b06('0x13'),function(_0x579045){var _0x10df61=new Buffer(_0x1b7ad7[_0x5b06('0x14')](_0x579045),_0x5b06('0x15'));_0x19e082[_0x5b06('0x16')](_0x10df61);});_0x58b789['on'](_0x5b06('0x17'),function(){try{var _0x368204=new Buffer(_0x1b7ad7['final']('binary'),_0x5b06('0x15'));_0x19e082[_0x5b06('0x16')](_0x368204);_0x19e082[_0x5b06('0x17')]();_0x19e082['on'](_0x5b06('0x18'),function(){return _0x3ba54c(_0x32b889);});}catch(_0x4f2357){fs[_0x5b06('0x19')](_0x32b889);return _0xcee972(_0x4f2357);}});});};exports['decryptFile']=function(_0x2ba074,_0x21ba34,_0x4d5601,_0x5e1b6c){return new BPromise(function(_0x523ae4,_0x11a0dc){_0x5e1b6c=combineOptions(_0x5e1b6c);var _0x13f7f7=new Buffer(_0x4d5601);var _0x754375=fs['createReadStream'](_0x2ba074);var _0x351fe7=fs[_0x5b06('0x1a')](_0x21ba34);var _0xa4e4b5=crypto[_0x5b06('0x1b')](_0x5e1b6c[_0x5b06('0x9')],_0x13f7f7);_0x754375['on'](_0x5b06('0x13'),function(_0x33657f){var _0x249ccf=new Buffer(_0xa4e4b5[_0x5b06('0x14')](_0x33657f),'binary');_0x351fe7[_0x5b06('0x16')](_0x249ccf);});_0x754375['on'](_0x5b06('0x17'),function(){try{var _0x18f8da=new Buffer(_0xa4e4b5['final'](_0x5b06('0x15')),_0x5b06('0x15'));_0x351fe7[_0x5b06('0x16')](_0x18f8da);_0x351fe7[_0x5b06('0x17')]();_0x351fe7['on']('close',function(){return _0x523ae4(_0x21ba34);});}catch(_0x23a4ec){fs[_0x5b06('0x19')](_0x21ba34);return _0x11a0dc(_0x23a4ec);}});});};exports['encryptString']=function(_0x4691f3,_0x5930eb,_0x1d14bc){var _0x389881=_0x1d14bc||stringOptions[_0x5b06('0x9')];var _0x370940=_0x5930eb||stringOptions[_0x5b06('0x1c')];var _0x5b97e3=crypto['createCipher'](_0x389881,_0x370940);var _0x49ac24=_0x5b97e3[_0x5b06('0x14')](_0x4691f3,_0x5b06('0x1d'),_0x5b06('0x1e'));_0x49ac24+=_0x5b97e3[_0x5b06('0x1f')](_0x5b06('0x1e'));return _0x49ac24;};exports[_0x5b06('0x20')]=function(_0x579536,_0x5643f6,_0x4279df){var _0x416fb1=_0x4279df||stringOptions[_0x5b06('0x9')];var _0x4cb0ca=_0x5643f6||stringOptions[_0x5b06('0x1c')];var _0x1f998e=crypto['createDecipher'](_0x416fb1,_0x4cb0ca);var _0x337574=_0x1f998e['update'](_0x579536,_0x5b06('0x1e'),_0x5b06('0x1d'));_0x337574+=_0x1f998e[_0x5b06('0x1f')]('utf8');return _0x337574;};
\ No newline at end of file
+var _0xc6e0=['crypto','lodash','../../config/environment','app','session','aes-256-ctr','encrypt','algorithm','join','error','getCiphers','filter','indexOf','hasOwnProperty','createReadStream','createWriteStream','createCipher','data','update','binary','write','end','close','unlink','decryptFile','createDecipher','final','secret','utf8','base64','decryptString'];(function(_0x3a0b00,_0x5cc245){var _0x4584bf=function(_0x2e63f3){while(--_0x2e63f3){_0x3a0b00['push'](_0x3a0b00['shift']());}};_0x4584bf(++_0x5cc245);}(_0xc6e0,0x1f0));var _0x0c6e=function(_0xa2d41,_0x29a7bf){_0xa2d41=_0xa2d41-0x0;var _0x164681=_0xc6e0[_0xa2d41];return _0x164681;};'use strict';var crypto=require(_0x0c6e('0x0'));var fs=require('fs');var BPromise=require('bluebird');var _=require(_0x0c6e('0x1'));var config=require(_0x0c6e('0x2'));var logger=require('../../config/logger')(_0x0c6e('0x3'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config['secrets'][_0x0c6e('0x4')],'algorithm':_0x0c6e('0x5')};const fileOptions={'algorithm':'aes192'};if(config[_0x0c6e('0x6')]&&config[_0x0c6e('0x6')][_0x0c6e('0x7')]){var isSupported=isAlgorithmSupported(config[_0x0c6e('0x6')][_0x0c6e('0x7')]);if(isSupported){fileOptions[_0x0c6e('0x7')]=config[_0x0c6e('0x6')][_0x0c6e('0x7')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x0c6e('0x8')](',\x20');logger[_0x0c6e('0x9')](config[_0x0c6e('0x6')][_0x0c6e('0x7')],'is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:',supportedAlgorithms);}}function isASupportedCipher(_0x156a9d){return AES_SUPPORTED_RX['test'](_0x156a9d);}function getSupportedCiphers(){return crypto[_0x0c6e('0xa')]()[_0x0c6e('0xb')](isASupportedCipher);}function isAlgorithmSupported(_0x28eddf){return getSupportedCiphers()[_0x0c6e('0xc')](_0x28eddf)>-0x1;}function combineOptions(_0x299748){var _0x25b831={};for(var _0x2f4691 in fileOptions){if(fileOptions[_0x0c6e('0xd')](_0x2f4691)){_0x25b831[_0x2f4691]=fileOptions[_0x2f4691];}}if(_0x299748){for(var _0x8983c4 in _0x299748){if(_0x299748[_0x0c6e('0xd')](_0x8983c4)){_0x25b831[_0x8983c4]=_0x299748[_0x8983c4];}}}return _0x25b831;}exports['encryptFile']=function(_0x18ae00,_0x4d8be0,_0x5e04a7,_0x4cad39){return new BPromise(function(_0x219630,_0x664e36){_0x4cad39=combineOptions(_0x4cad39);var _0x326cd1=new Buffer(_0x5e04a7);var _0xfbd2c2=fs[_0x0c6e('0xe')](_0x18ae00);var _0x3e14b8=fs[_0x0c6e('0xf')](_0x4d8be0);var _0x4d61c7=crypto[_0x0c6e('0x10')](_0x4cad39[_0x0c6e('0x7')],_0x326cd1);_0xfbd2c2['on'](_0x0c6e('0x11'),function(_0x22f3e0){var _0x1a28be=new Buffer(_0x4d61c7[_0x0c6e('0x12')](_0x22f3e0),_0x0c6e('0x13'));_0x3e14b8[_0x0c6e('0x14')](_0x1a28be);});_0xfbd2c2['on'](_0x0c6e('0x15'),function(){try{var _0x2936ea=new Buffer(_0x4d61c7['final']('binary'),_0x0c6e('0x13'));_0x3e14b8[_0x0c6e('0x14')](_0x2936ea);_0x3e14b8[_0x0c6e('0x15')]();_0x3e14b8['on'](_0x0c6e('0x16'),function(){return _0x219630(_0x4d8be0);});}catch(_0x4e35a8){fs[_0x0c6e('0x17')](_0x4d8be0);return _0x664e36(_0x4e35a8);}});});};exports[_0x0c6e('0x18')]=function(_0x656029,_0x2215a4,_0x7915c1,_0x3f833a){return new BPromise(function(_0x1dc09e,_0x4c7730){_0x3f833a=combineOptions(_0x3f833a);var _0x589ceb=new Buffer(_0x7915c1);var _0x37ad04=fs['createReadStream'](_0x656029);var _0x3f3628=fs[_0x0c6e('0xf')](_0x2215a4);var _0x380347=crypto[_0x0c6e('0x19')](_0x3f833a[_0x0c6e('0x7')],_0x589ceb);_0x37ad04['on']('data',function(_0x1cd2fc){var _0x283d4f=new Buffer(_0x380347[_0x0c6e('0x12')](_0x1cd2fc),_0x0c6e('0x13'));_0x3f3628[_0x0c6e('0x14')](_0x283d4f);});_0x37ad04['on'](_0x0c6e('0x15'),function(){try{var _0x436045=new Buffer(_0x380347[_0x0c6e('0x1a')](_0x0c6e('0x13')),_0x0c6e('0x13'));_0x3f3628[_0x0c6e('0x14')](_0x436045);_0x3f3628[_0x0c6e('0x15')]();_0x3f3628['on'](_0x0c6e('0x16'),function(){return _0x1dc09e(_0x2215a4);});}catch(_0x3b2db1){fs[_0x0c6e('0x17')](_0x2215a4);return _0x4c7730(_0x3b2db1);}});});};exports['encryptString']=function(_0xad82e7,_0x41f6b7,_0x43fadb){var _0x64a454=_0x43fadb||stringOptions[_0x0c6e('0x7')];var _0x42b7d8=_0x41f6b7||stringOptions[_0x0c6e('0x1b')];var _0x251550=crypto[_0x0c6e('0x10')](_0x64a454,_0x42b7d8);var _0x4b55e7=_0x251550[_0x0c6e('0x12')](_0xad82e7,_0x0c6e('0x1c'),_0x0c6e('0x1d'));_0x4b55e7+=_0x251550[_0x0c6e('0x1a')](_0x0c6e('0x1d'));return _0x4b55e7;};exports[_0x0c6e('0x1e')]=function(_0x12589e,_0x68eaa9,_0x214be2){var _0x477373=_0x214be2||stringOptions[_0x0c6e('0x7')];var _0x344999=_0x68eaa9||stringOptions[_0x0c6e('0x1b')];var _0x254d7a=crypto['createDecipher'](_0x477373,_0x344999);var _0x4c4d01=_0x254d7a['update'](_0x12589e,_0x0c6e('0x1d'),'utf8');_0x4c4d01+=_0x254d7a[_0x0c6e('0x1a')]('utf8');return _0x4c4d01;};
\ No newline at end of file
index 7dfc2d9..d497ffc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5983=['then','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','sequelize','SELECT','num','Empty','length','range','forEach','push','QueryTypes','%s\x20limit\x20%d\x20OFFSET\x20%d','basename','.csv','existsSync','join','mkdirSync','csv','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','%s.%s','zip','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','util','path','lodash','to-csv','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','argv','savename','update','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','split','splitSizeCsv'];(function(_0x1cb18a,_0x33167a){var _0x22442e=function(_0x46c611){while(--_0x46c611){_0x1cb18a['push'](_0x1cb18a['shift']());}};_0x22442e(++_0x33167a);}(_0x5983,0xdd));var _0x3598=function(_0x5ce6c0,_0x28239e){_0x5ce6c0=_0x5ce6c0-0x0;var _0x28dadc=_0x5983[_0x5ce6c0];return _0x28dadc;};'use strict';var util=require(_0x3598('0x0'));var path=require(_0x3598('0x1'));var _=require(_0x3598('0x2'));var csv=require(_0x3598('0x3'));var fs=require('fs');var BPromise=require('bluebird');var zipdir=require(_0x3598('0x4'));var rimraf=require(_0x3598('0x5'));var db=require(_0x3598('0x6'))['db'];var dbH=require('../../mysqldb')[_0x3598('0x7')];var logger=require(_0x3598('0x8'))('analytics');var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x3598('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x1790e3,_0x31a08e){var _0x4097bc={'status':_0x1790e3};var _0x2bb65d={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x31a08e){_0x4097bc[_0x3598('0xa')]=_0x31a08e;}return db['AnalyticExtractedReport'][_0x3598('0xb')](_0x4097bc,_0x2bb65d);}function main(){var _0x4b125d=0x1388;var _0x161afb;logger['info'](util[_0x3598('0xc')](_0x3598('0xd'),EXTRACTED_REPORT_ID,_0x3598('0xe')));return db[_0x3598('0xf')][_0x3598('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x3598('0x11'),_0x3598('0x12')]})[_0x3598('0x13')](function(_0x516932){if(_0x516932){_0x161afb=_0x516932;_0x4b125d=_0x161afb['splitSizeCsv']||0x1388;}})['then'](function(){return dbH['sequelize'][_0x3598('0x14')](util[_0x3598('0xc')](_0x3598('0x15'),QUERY),{'type':dbH[_0x3598('0x16')]['QueryTypes'][_0x3598('0x17')]});})[_0x3598('0x13')](function(_0x26def0){if(!_0x26def0[0x0][_0x3598('0x18')]){return analyticExtractedReport(_0x3598('0x19'));}var _0x352fda=[];var _0xcec4f=0x0;if(_0x161afb['split']){if(_0x26def0&&_0x26def0[_0x3598('0x1a')]){var _0x5c83ab=_[_0x3598('0x1b')](_0x26def0[0x0]['num']/_0x4b125d);var _0x3615f2=Number['isInteger'](_0x26def0[0x0][_0x3598('0x18')]/_0x4b125d)?_0x26def0[0x0][_0x3598('0x18')]%_0x4b125d:0x0;_0x5c83ab[_0x3598('0x1c')](function(_0x23d2ef){if(_0x23d2ef>0x0){_0xcec4f+=_0x4b125d;}_0x352fda[_0x3598('0x1d')](dbH[_0x3598('0x16')][_0x3598('0x14')](util[_0x3598('0xc')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x4b125d,_0xcec4f),{'type':dbH[_0x3598('0x16')][_0x3598('0x1e')][_0x3598('0x17')]}));});if(_0x3615f2>0x0){_0xcec4f+=_0x4b125d;_0x352fda[_0x3598('0x1d')](dbH['sequelize'][_0x3598('0x14')](util[_0x3598('0xc')](_0x3598('0x1f'),QUERY,_0x3615f2,_0xcec4f),{'type':dbH[_0x3598('0x16')]['QueryTypes'][_0x3598('0x17')]}));}}}else{_0x352fda['push'](dbH[_0x3598('0x16')][_0x3598('0x14')](QUERY,{'type':dbH['sequelize']['QueryTypes'][_0x3598('0x17')]}));}var _0x398760=path['dirname'](PATH);var _0x450285=path[_0x3598('0x20')](PATH,_0x3598('0x21'));var _0x3c8d8c=_0x161afb[_0x3598('0x11')]&&_0x352fda[_0x3598('0x1a')]>0x1;var _0x465988=[];if(!fs[_0x3598('0x22')](path[_0x3598('0x23')](_0x398760,_0x450285))&&_0x3c8d8c){fs[_0x3598('0x24')](path[_0x3598('0x23')](_0x398760,_0x450285));}return BPromise['each'](_0x352fda,function(_0x457cfa){_0x465988[_0x3598('0x1d')](_0x457cfa);})[_0x3598('0x13')](function(){for(var _0x4ccfa2=0x0;_0x4ccfa2<_0x465988['length'];_0x4ccfa2+=0x1){var _0x363e19;var _0x888d9c=_0x465988[_0x4ccfa2];if(_0x3c8d8c){_0x363e19=path[_0x3598('0x23')](_0x398760,_0x450285,util[_0x3598('0xc')]('%s%d.%s',_0x450285,_0x4ccfa2,'csv'));}else{_0x363e19=path[_0x3598('0x23')](_0x398760,util['format']('%s.%s',_0x450285,_0x3598('0x25')));}fs['writeFileSync'](_0x363e19,csv(_0x888d9c));}})['then'](function(){if(_0x3c8d8c){return new Promise(function(_0x50d1bf){zipdir(path[_0x3598('0x23')](_0x398760,_0x450285),{'saveTo':path[_0x3598('0x23')](_0x398760,util[_0x3598('0xc')]('%s.%s',_0x450285,'zip'))},function(_0xd8edfd,_0x154fed){rimraf(path[_0x3598('0x23')](_0x398760,_0x450285),function(){});_0x50d1bf('zip\x20finished');});});}})[_0x3598('0x13')](function(){logger[_0x3598('0x26')](util[_0x3598('0xc')](_0x3598('0x27'),EXTRACTED_REPORT_ID,_0x3598('0xe')));return analyticExtractedReport(_0x3598('0x28'),_0x3c8d8c?util[_0x3598('0xc')](_0x3598('0x29'),_0x450285,_0x3c8d8c?_0x3598('0x2a'):_0x3598('0x25')):null);});})[_0x3598('0x2b')](function(_0xbd2fec){logger['info'](util['format'](_0x3598('0x2c'),EXTRACTED_REPORT_ID,_0x3598('0xe')),util[_0x3598('0x2d')](_0xbd2fec,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x3598('0x2e'));})[_0x3598('0x2f')](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x48d5=['lodash','to-csv','bluebird','zip-dir','../../mysqldb','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','split','splitSizeCsv','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','sequelize','QueryTypes','SELECT','then','num','length','range','isInteger','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','.csv','join','mkdirSync','each','%s%d.%s','%s.%s','csv','writeFileSync','zip','zip\x20finished','info','Completed','catch','Failed','finally','exit','util','path'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x48d5,0x130));var _0x548d=function(_0x9148ba,_0x2cb1b5){_0x9148ba=_0x9148ba-0x0;var _0x355e3b=_0x48d5[_0x9148ba];return _0x355e3b;};'use strict';var util=require(_0x548d('0x0'));var path=require(_0x548d('0x1'));var _=require(_0x548d('0x2'));var csv=require(_0x548d('0x3'));var fs=require('fs');var BPromise=require(_0x548d('0x4'));var zipdir=require(_0x548d('0x5'));var rimraf=require('rimraf');var db=require(_0x548d('0x6'))['db'];var dbH=require(_0x548d('0x6'))['dbH'];var logger=require(_0x548d('0x7'))(_0x548d('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0x548d('0x9')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x548d('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x53f16f,_0x132668){var _0x7b9eec={'status':_0x53f16f};var _0x41d7e2={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x132668){_0x7b9eec[_0x548d('0xa')]=_0x132668;}return db[_0x548d('0xb')][_0x548d('0xc')](_0x7b9eec,_0x41d7e2);}function main(){var _0x300cb6=0x1388;var _0x28eb1d;logger['info'](util[_0x548d('0xd')](_0x548d('0xe'),EXTRACTED_REPORT_ID,_0x548d('0xf')));return db[_0x548d('0x10')][_0x548d('0x11')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x548d('0x12'),'splitSizeCsv']})['then'](function(_0x2c3b48){if(_0x2c3b48){_0x28eb1d=_0x2c3b48;_0x300cb6=_0x28eb1d[_0x548d('0x13')]||0x1388;}})['then'](function(){return dbH['sequelize'][_0x548d('0x14')](util[_0x548d('0xd')](_0x548d('0x15'),QUERY),{'type':dbH[_0x548d('0x16')][_0x548d('0x17')][_0x548d('0x18')]});})[_0x548d('0x19')](function(_0x53eb60){if(!_0x53eb60[0x0][_0x548d('0x1a')]){return analyticExtractedReport('Empty');}var _0x2941aa=[];var _0x4adf60=0x0;if(_0x28eb1d[_0x548d('0x12')]){if(_0x53eb60&&_0x53eb60[_0x548d('0x1b')]){var _0x38bcf7=_[_0x548d('0x1c')](_0x53eb60[0x0]['num']/_0x300cb6);var _0x4dda36=Number[_0x548d('0x1d')](_0x53eb60[0x0][_0x548d('0x1a')]/_0x300cb6)?_0x53eb60[0x0][_0x548d('0x1a')]%_0x300cb6:0x0;_0x38bcf7[_0x548d('0x1e')](function(_0x1270d8){if(_0x1270d8>0x0){_0x4adf60+=_0x300cb6;}_0x2941aa[_0x548d('0x1f')](dbH['sequelize']['query'](util[_0x548d('0xd')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x300cb6,_0x4adf60),{'type':dbH[_0x548d('0x16')][_0x548d('0x17')][_0x548d('0x18')]}));});if(_0x4dda36>0x0){_0x4adf60+=_0x300cb6;_0x2941aa[_0x548d('0x1f')](dbH[_0x548d('0x16')][_0x548d('0x14')](util[_0x548d('0xd')](_0x548d('0x20'),QUERY,_0x4dda36,_0x4adf60),{'type':dbH[_0x548d('0x16')][_0x548d('0x17')][_0x548d('0x18')]}));}}}else{_0x2941aa[_0x548d('0x1f')](dbH[_0x548d('0x16')][_0x548d('0x14')](QUERY,{'type':dbH[_0x548d('0x16')][_0x548d('0x17')]['SELECT']}));}var _0x3625cf=path[_0x548d('0x21')](PATH);var _0x4ce8fc=path[_0x548d('0x22')](PATH,_0x548d('0x23'));var _0x209866=_0x28eb1d[_0x548d('0x12')]&&_0x2941aa[_0x548d('0x1b')]>0x1;var _0x3a86ff=[];if(!fs['existsSync'](path[_0x548d('0x24')](_0x3625cf,_0x4ce8fc))&&_0x209866){fs[_0x548d('0x25')](path[_0x548d('0x24')](_0x3625cf,_0x4ce8fc));}return BPromise[_0x548d('0x26')](_0x2941aa,function(_0x3bedec){_0x3a86ff[_0x548d('0x1f')](_0x3bedec);})[_0x548d('0x19')](function(){for(var _0x5145c9=0x0;_0x5145c9<_0x3a86ff['length'];_0x5145c9+=0x1){var _0x42b8bd;var _0x35b899=_0x3a86ff[_0x5145c9];if(_0x209866){_0x42b8bd=path[_0x548d('0x24')](_0x3625cf,_0x4ce8fc,util[_0x548d('0xd')](_0x548d('0x27'),_0x4ce8fc,_0x5145c9,'csv'));}else{_0x42b8bd=path[_0x548d('0x24')](_0x3625cf,util[_0x548d('0xd')](_0x548d('0x28'),_0x4ce8fc,_0x548d('0x29')));}fs[_0x548d('0x2a')](_0x42b8bd,csv(_0x35b899));}})['then'](function(){if(_0x209866){return new Promise(function(_0x160a27){zipdir(path['join'](_0x3625cf,_0x4ce8fc),{'saveTo':path['join'](_0x3625cf,util['format'](_0x548d('0x28'),_0x4ce8fc,_0x548d('0x2b')))},function(_0x40334b,_0x5cce71){rimraf(path[_0x548d('0x24')](_0x3625cf,_0x4ce8fc),function(){});_0x160a27(_0x548d('0x2c'));});});}})[_0x548d('0x19')](function(){logger[_0x548d('0x2d')](util[_0x548d('0xd')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x548d('0xf')));return analyticExtractedReport(_0x548d('0x2e'),_0x209866?util[_0x548d('0xd')](_0x548d('0x28'),_0x4ce8fc,_0x209866?_0x548d('0x2b'):_0x548d('0x29')):null);});})[_0x548d('0x2f')](function(_0x4b7a1d){logger[_0x548d('0x2d')](util[_0x548d('0xd')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x548d('0xf')),util['inspect'](_0x4b7a1d,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x548d('0x30'));})[_0x548d('0x31')](function(){process[_0x548d('0x32')](EXIT_CODE);});}main();
\ No newline at end of file
index 872fffa..3dd02f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaae4=['pageBreak','before','margin','footer','Arial','black','right','num','Empty','Setting','find','split','splitSizePdf','then','range','isInteger','sequelize','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','query','SELECT','basename','.pdf','existsSync','join','mkdirSync','each','flatten','createPdfKitDocument','%s%d.%s','pdf','all','%s.%s','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','zip','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','/fonts/arial-regular.ttf','/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','createWriteStream','error','end','createPdfFromHTML','lodash','util','path','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','jsdom','JSDOM','window','bluebird','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','AnalyticExtractedReport','update','map','tableHeader','toString','value','fill','length','auto','body','concat','chunk','keys','forEach','push','format','header'];(function(_0x17fec0,_0x463e84){var _0x523502=function(_0x43b34b){while(--_0x43b34b){_0x17fec0['push'](_0x17fec0['shift']());}};_0x523502(++_0x463e84);}(_0xaae4,0x1bd));var _0x4aae=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xaae4[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x4aae('0x0'));var fs=require('fs');var util=require(_0x4aae('0x1'));var path=require(_0x4aae('0x2'));var moment=require(_0x4aae('0x3'));var htmlToPdfmake=require(_0x4aae('0x4'));var PdfPrinter=require(_0x4aae('0x5'));var zipdir=require(_0x4aae('0x6'));var rimraf=require(_0x4aae('0x7'));var JSDOM=require(_0x4aae('0x8'))[_0x4aae('0x9')];var window=new JSDOM('')[_0x4aae('0xa')];var BPromise=require(_0x4aae('0xb'));var db=require(_0x4aae('0xc'))['db'];var dbH=require(_0x4aae('0xc'))[_0x4aae('0xd')];var logger=require(_0x4aae('0xe'))(_0x4aae('0xf'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x4aae('0x10')][0x3];var PATH=process['argv'][0x4];var NAME=process[_0x4aae('0x10')][0x5];var FORMAT=_0x4aae('0x11');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x18b07c,_0x30b738){var _0x11eae0={'status':_0x18b07c};var _0x830401={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x30b738){_0x11eae0['savename']=_0x30b738;}return db[_0x4aae('0x12')][_0x4aae('0x13')](_0x11eae0,_0x830401);}function getHeaders(_0x3470ba){return _[_0x4aae('0x14')](_0x3470ba,function(_0x17deae){return{'text':_0x17deae,'style':_0x4aae('0x15')};});}function getRows(_0x4ec0c7,_0x38eec3){return _[_0x4aae('0x14')](_0x38eec3,function(_0x3d64b2){return _(_0x3d64b2)['pick'](_0x4ec0c7)[_0x4aae('0x14')](function(_0x228b39){return _0x228b39?_[_0x4aae('0x16')](_0x228b39):'';})[_0x4aae('0x17')]();});}function createTable(_0x382922,_0xcb4d87){var _0x413ce4={'widths':_[_0x4aae('0x18')](Array(_0x382922[_0x4aae('0x19')]),0x91),'heights':function(_0x22ebe6){return _0x22ebe6===0x0?_0x4aae('0x1a'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x5e6fa7=getHeaders(_0x382922);_0x413ce4[_0x4aae('0x1b')]['push'](_0x5e6fa7);var _0x53f8ec=getRows(_0x382922,_0xcb4d87);_0x413ce4[_0x4aae('0x1b')]=_0x413ce4[_0x4aae('0x1b')][_0x4aae('0x1c')](_0x53f8ec);return _0x413ce4;}function createTables(_0x1d60f5){var _0x35a7b1=[];var _0x3460c2=_[_0x4aae('0x1d')](Object[_0x4aae('0x1e')](_0x1d60f5[0x0]),0x5);_0x3460c2[_0x4aae('0x1f')](function(_0x4b55df){_0x35a7b1[_0x4aae('0x20')](createTable(_0x4b55df,_0x1d60f5));});return _0x35a7b1;}function getPDFDocDefinition(_0x3ee206){var _0x54e6b0=util[_0x4aae('0x21')]('Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s',NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT['startDate'])[_0x4aae('0x21')](FORMAT),moment(EXTRACTED_REPORT['endDate'])[_0x4aae('0x21')](FORMAT));var _0x146818=[];for(var _0x55a4c9=0x0;_0x55a4c9<_0x3ee206[_0x4aae('0x19')];_0x55a4c9++){var _0x34b1de=[];if(_0x55a4c9===0x0){_0x34b1de[_0x4aae('0x20')]({'text':_0x54e6b0,'style':_0x4aae('0x22')});}var _0xbfeac3={'table':_0x3ee206[_0x55a4c9]};if(_0x55a4c9>0x0){_0xbfeac3[_0x4aae('0x23')]=_0x4aae('0x24');_0xbfeac3[_0x4aae('0x25')]=[0x0,0x46,0x0,0x0];}_0x34b1de['push'](_0xbfeac3);_0x146818[_0x4aae('0x20')](_0x34b1de);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x146818,'footer':function(_0x2cbcc8,_0x14c08b){return{'text':_0x2cbcc8['toString']()+'\x20/\x20'+_0x14c08b,'style':_0x4aae('0x26')};},'defaultStyle':{'font':_0x4aae('0x27')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x4aae('0x28')},'footer':{'alignment':_0x4aae('0x29'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x24399f){var _0x5311d8=0x1388;var _0x12961a;if(!_0x24399f[0x0][_0x4aae('0x2a')]){return analyticExtractedReport(_0x4aae('0x2b'));}return db[_0x4aae('0x2c')][_0x4aae('0x2d')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x4aae('0x2e'),_0x4aae('0x2f')]})[_0x4aae('0x30')](function(_0x38c574){if(_0x38c574){_0x12961a=_0x38c574;_0x5311d8=_0x12961a['splitSizePdf']||0x3e8;}})[_0x4aae('0x30')](function(){var _0x84e5c6=[];var _0x56c286=0x0;if(_0x12961a[_0x4aae('0x2e')]){if(_0x24399f&&_0x24399f[_0x4aae('0x19')]){var _0x27e38d=_[_0x4aae('0x31')](_0x24399f[0x0][_0x4aae('0x2a')]/_0x5311d8);var _0x23ffe7=Number[_0x4aae('0x32')](_0x24399f[0x0][_0x4aae('0x2a')]/_0x5311d8)?_0x24399f[0x0][_0x4aae('0x2a')]%_0x5311d8:0x0;_0x27e38d['forEach'](function(_0x4745b3){if(_0x4745b3>0x0){_0x56c286+=_0x5311d8;}_0x84e5c6[_0x4aae('0x20')](dbH[_0x4aae('0x33')]['query'](util[_0x4aae('0x21')](_0x4aae('0x34'),QUERY,_0x5311d8,_0x56c286),{'type':dbH['sequelize'][_0x4aae('0x35')]['SELECT']}));});if(_0x23ffe7>0x0){_0x56c286+=_0x5311d8;_0x84e5c6[_0x4aae('0x20')](dbH[_0x4aae('0x33')][_0x4aae('0x36')](util[_0x4aae('0x21')](_0x4aae('0x34'),QUERY,_0x23ffe7,_0x56c286),{'type':dbH['sequelize']['QueryTypes']['SELECT']}));}}}else{_0x84e5c6['push'](dbH[_0x4aae('0x33')][_0x4aae('0x36')](QUERY,{'type':dbH[_0x4aae('0x33')][_0x4aae('0x35')][_0x4aae('0x37')]}));}var _0x1e1bcd=path['dirname'](PATH);var _0x38b686=path[_0x4aae('0x38')](PATH,_0x4aae('0x39'));var _0x11a879=_0x12961a[_0x4aae('0x2e')]&&_0x84e5c6[_0x4aae('0x19')]>0x1;var _0x2b46a1=[];if(!fs[_0x4aae('0x3a')](path[_0x4aae('0x3b')](_0x1e1bcd,_0x38b686))&&_0x11a879){fs[_0x4aae('0x3c')](path[_0x4aae('0x3b')](_0x1e1bcd,_0x38b686));}return BPromise[_0x4aae('0x3d')](_0x84e5c6,function(_0x17474c){_0x2b46a1[_0x4aae('0x20')](_0x17474c);})[_0x4aae('0x30')](function(){var _0x2f54ac=[];for(var _0x86bd86=0x0;_0x86bd86<_0x2b46a1[_0x4aae('0x19')];_0x86bd86+=0x1){var _0x18680b=_0x2b46a1[_0x86bd86];var _0x3b477b=createTables(_[_0x4aae('0x3e')](_0x18680b));var _0x5af194;var _0x904d25=getPDFDocDefinition(_0x3b477b);var _0x455758=getPDFPrinter();var _0x69b041=_0x455758[_0x4aae('0x3f')](_0x904d25);if(_0x11a879){_0x5af194=path[_0x4aae('0x3b')](_0x1e1bcd,_0x38b686,util[_0x4aae('0x21')](_0x4aae('0x40'),_0x38b686,_0x86bd86,_0x4aae('0x41')));}else{_0x5af194=path[_0x4aae('0x3b')](_0x1e1bcd,util[_0x4aae('0x21')]('%s.%s',_0x38b686,'pdf'));}_0x2f54ac[_0x4aae('0x20')](writePDFDocument(_0x69b041,_0x5af194));}return Promise[_0x4aae('0x42')](_0x2f54ac);})['then'](function(){if(_0x11a879){return new Promise(function(_0x186e74){zipdir(path[_0x4aae('0x3b')](_0x1e1bcd,_0x38b686),{'saveTo':path['join'](_0x1e1bcd,util[_0x4aae('0x21')](_0x4aae('0x43'),_0x38b686,'zip'))},function(){rimraf(path['join'](_0x1e1bcd,_0x38b686),function(){});_0x186e74(_0x4aae('0x44'));});});}})[_0x4aae('0x30')](function(){if(!_0x11a879)return;rimraf(path[_0x4aae('0x3b')](_0x1e1bcd,_0x38b686),function(){});})[_0x4aae('0x30')](function(){logger[_0x4aae('0x45')](util['format'](_0x4aae('0x46'),EXTRACTED_REPORT_ID,_0x4aae('0x47')));return analyticExtractedReport('Completed',_0x11a879?util[_0x4aae('0x21')](_0x4aae('0x43'),_0x38b686,_0x11a879?_0x4aae('0x48'):_0x4aae('0x41')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util[_0x4aae('0x21')](_0x4aae('0x49'),EXTRACTED_REPORT_ID,_0x4aae('0x47')));return db[_0x4aae('0x12')][_0x4aae('0x4a')]({'where':{'id':EXTRACTED_REPORT_ID}})['then'](function(_0x43a903){EXTRACTED_REPORT=_0x43a903;return dbH[_0x4aae('0x33')][_0x4aae('0x36')](util[_0x4aae('0x21')](_0x4aae('0x4b'),QUERY),{'type':dbH[_0x4aae('0x33')]['QueryTypes'][_0x4aae('0x37')]});})[_0x4aae('0x30')](extractReport)[_0x4aae('0x4c')](function(_0x48ad0e){logger[_0x4aae('0x45')](util[_0x4aae('0x21')](_0x4aae('0x4d'),EXTRACTED_REPORT_ID,_0x4aae('0x47')),util[_0x4aae('0x4e')](_0x48ad0e,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x4aae('0x4f'));})[_0x4aae('0x50')](function(){process[_0x4aae('0x51')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x3c1a88=new PdfPrinter({'Arial':{'normal':__dirname+_0x4aae('0x52'),'bold':__dirname+_0x4aae('0x53'),'italics':__dirname+'/fonts/arial-italic.ttf','bolditalics':__dirname+_0x4aae('0x54')}});return _0x3c1a88;}function getPDFDocDefinitionFromHTML(_0x837d5c,_0x14ca1b){var _0x11de35=util['format'](_0x4aae('0x55'),_0x14ca1b[_0x4aae('0x56')],_0x14ca1b[_0x4aae('0x57')]);var _0x16b142=moment()[_0x4aae('0x21')](_0x4aae('0x58'))[_0x4aae('0x16')]();var _0x2f45e3=htmlToPdfmake(_0x837d5c,{'window':window,'tableAutoSize':!![]});return{'content':[_0x2f45e3],'defaultStyle':{'font':_0x4aae('0x27')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':'center','margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x4aae('0x59'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0x4aae('0x5a'),'style':_0x4aae('0x22')}];},'footer':function(_0x47e342,_0x20c434){return[{'text':util[_0x4aae('0x21')](_0x4aae('0x5b'),_0x11de35,_0x47e342,_0x20c434,_0x16b142),'style':'footer'}];}};}function writePDFDocument(_0x245a1c,_0x289613){return new Promise(function(_0x1f30be,_0x293d2e){var _0x6d841c=_0x245a1c['pipe'](fs[_0x4aae('0x5c')](_0x289613));_0x6d841c['on']('finish',function(){_0x1f30be('finish');});_0x6d841c['on'](_0x4aae('0x5d'),function(_0x30a21b){_0x293d2e(_0x30a21b);});_0x245a1c[_0x4aae('0x5e')]();});}exports[_0x4aae('0x5f')]=function(_0x45bb3f,_0x1c8db7){var _0x1481b7=getPDFPrinter();var _0x2fbfae=getPDFDocDefinitionFromHTML(_0x45bb3f,_0x1c8db7);var _0x307514=_0x1481b7[_0x4aae('0x3f')](_0x2fbfae);return writePDFDocument(_0x307514,_0x1c8db7[_0x4aae('0x2')])[_0x4aae('0x4c')](function(_0x4f8a69){throw _0x4f8a69;});};
\ No newline at end of file
+var _0x4ce9=['zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','PDF','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','toString','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','finish','error','end','createPdfFromHTML','lodash','util','path','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','jsdom','window','bluebird','../../mysqldb','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','map','tableHeader','length','auto','body','push','concat','chunk','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','endDate','header','pageBreak','margin','landscape','footer','Arial','black','num','Empty','split','splitSizePdf','then','range','isInteger','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','dirname','basename','existsSync','join','mkdirSync','flatten','createPdfKitDocument','%s%d.%s','pdf','%s.%s','all'];(function(_0x3dddfd,_0x4030a9){var _0xcc5248=function(_0x33d742){while(--_0x33d742){_0x3dddfd['push'](_0x3dddfd['shift']());}};_0xcc5248(++_0x4030a9);}(_0x4ce9,0x185));var _0x94ce=function(_0x40f3c1,_0x132c87){_0x40f3c1=_0x40f3c1-0x0;var _0x45adc5=_0x4ce9[_0x40f3c1];return _0x45adc5;};'use strict';var _=require(_0x94ce('0x0'));var fs=require('fs');var util=require(_0x94ce('0x1'));var path=require(_0x94ce('0x2'));var moment=require('moment');var htmlToPdfmake=require(_0x94ce('0x3'));var PdfPrinter=require(_0x94ce('0x4'));var zipdir=require(_0x94ce('0x5'));var rimraf=require(_0x94ce('0x6'));var JSDOM=require(_0x94ce('0x7'))['JSDOM'];var window=new JSDOM('')[_0x94ce('0x8')];var BPromise=require(_0x94ce('0x9'));var db=require(_0x94ce('0xa'))['db'];var dbH=require(_0x94ce('0xa'))['dbH'];var logger=require(_0x94ce('0xb'))(_0x94ce('0xc'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x94ce('0xd')][0x4];var NAME=process[_0x94ce('0xd')][0x5];var FORMAT='MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a';var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x78bdc3,_0x1b2403){var _0x303550={'status':_0x78bdc3};var _0x57b86c={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x1b2403){_0x303550[_0x94ce('0xe')]=_0x1b2403;}return db[_0x94ce('0xf')]['update'](_0x303550,_0x57b86c);}function getHeaders(_0x4af87d){return _[_0x94ce('0x10')](_0x4af87d,function(_0x4d24d0){return{'text':_0x4d24d0,'style':_0x94ce('0x11')};});}function getRows(_0x4d7edd,_0x4e6f66){return _[_0x94ce('0x10')](_0x4e6f66,function(_0x3dee81){return _(_0x3dee81)['pick'](_0x4d7edd)[_0x94ce('0x10')](function(_0x106539){return _0x106539?_['toString'](_0x106539):'';})['value']();});}function createTable(_0x55b2ab,_0x14561){var _0x185134={'widths':_['fill'](Array(_0x55b2ab[_0x94ce('0x12')]),0x91),'heights':function(_0x3b9de8){return _0x3b9de8===0x0?_0x94ce('0x13'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x2773a8=getHeaders(_0x55b2ab);_0x185134[_0x94ce('0x14')][_0x94ce('0x15')](_0x2773a8);var _0x5251e5=getRows(_0x55b2ab,_0x14561);_0x185134[_0x94ce('0x14')]=_0x185134[_0x94ce('0x14')][_0x94ce('0x16')](_0x5251e5);return _0x185134;}function createTables(_0x18d988){var _0x14a8d8=[];var _0x254e47=_[_0x94ce('0x17')](Object[_0x94ce('0x18')](_0x18d988[0x0]),0x5);_0x254e47[_0x94ce('0x19')](function(_0x95438a){_0x14a8d8[_0x94ce('0x15')](createTable(_0x95438a,_0x18d988));});return _0x14a8d8;}function getPDFDocDefinition(_0x13ca09){var _0x51497e=util[_0x94ce('0x1a')](_0x94ce('0x1b'),NAME,EXTRACTED_REPORT[_0x94ce('0x1c')],moment(EXTRACTED_REPORT[_0x94ce('0x1d')])['format'](FORMAT),moment(EXTRACTED_REPORT[_0x94ce('0x1e')])[_0x94ce('0x1a')](FORMAT));var _0x487a1d=[];for(var _0x1cb6a1=0x0;_0x1cb6a1<_0x13ca09[_0x94ce('0x12')];_0x1cb6a1++){var _0x47bc84=[];if(_0x1cb6a1===0x0){_0x47bc84[_0x94ce('0x15')]({'text':_0x51497e,'style':_0x94ce('0x1f')});}var _0x148b2d={'table':_0x13ca09[_0x1cb6a1]};if(_0x1cb6a1>0x0){_0x148b2d[_0x94ce('0x20')]='before';_0x148b2d[_0x94ce('0x21')]=[0x0,0x46,0x0,0x0];}_0x47bc84[_0x94ce('0x15')](_0x148b2d);_0x487a1d[_0x94ce('0x15')](_0x47bc84);}return{'pageSize':'A4','pageOrientation':_0x94ce('0x22'),'content':_0x487a1d,'footer':function(_0x36dea6,_0x4900be){return{'text':_0x36dea6['toString']()+'\x20/\x20'+_0x4900be,'style':_0x94ce('0x23')};},'defaultStyle':{'font':_0x94ce('0x24')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x94ce('0x25')},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x2aaca3){var _0x47e0cd=0x1388;var _0x17ec5c;if(!_0x2aaca3[0x0][_0x94ce('0x26')]){return analyticExtractedReport(_0x94ce('0x27'));}return db['Setting']['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x94ce('0x28'),_0x94ce('0x29')]})[_0x94ce('0x2a')](function(_0x343b05){if(_0x343b05){_0x17ec5c=_0x343b05;_0x47e0cd=_0x17ec5c['splitSizePdf']||0x3e8;}})['then'](function(){var _0x2115bd=[];var _0x5b3f54=0x0;if(_0x17ec5c[_0x94ce('0x28')]){if(_0x2aaca3&&_0x2aaca3[_0x94ce('0x12')]){var _0x37e713=_[_0x94ce('0x2b')](_0x2aaca3[0x0][_0x94ce('0x26')]/_0x47e0cd);var _0x11a32f=Number[_0x94ce('0x2c')](_0x2aaca3[0x0][_0x94ce('0x26')]/_0x47e0cd)?_0x2aaca3[0x0]['num']%_0x47e0cd:0x0;_0x37e713[_0x94ce('0x19')](function(_0x6ac422){if(_0x6ac422>0x0){_0x5b3f54+=_0x47e0cd;}_0x2115bd[_0x94ce('0x15')](dbH[_0x94ce('0x2d')][_0x94ce('0x2e')](util['format'](_0x94ce('0x2f'),QUERY,_0x47e0cd,_0x5b3f54),{'type':dbH[_0x94ce('0x2d')][_0x94ce('0x30')]['SELECT']}));});if(_0x11a32f>0x0){_0x5b3f54+=_0x47e0cd;_0x2115bd[_0x94ce('0x15')](dbH['sequelize']['query'](util[_0x94ce('0x1a')](_0x94ce('0x2f'),QUERY,_0x11a32f,_0x5b3f54),{'type':dbH[_0x94ce('0x2d')][_0x94ce('0x30')][_0x94ce('0x31')]}));}}}else{_0x2115bd[_0x94ce('0x15')](dbH[_0x94ce('0x2d')]['query'](QUERY,{'type':dbH[_0x94ce('0x2d')][_0x94ce('0x30')]['SELECT']}));}var _0x236f6e=path[_0x94ce('0x32')](PATH);var _0x165b8a=path[_0x94ce('0x33')](PATH,'.pdf');var _0x1cf8f0=_0x17ec5c[_0x94ce('0x28')]&&_0x2115bd['length']>0x1;var _0x4c050c=[];if(!fs[_0x94ce('0x34')](path[_0x94ce('0x35')](_0x236f6e,_0x165b8a))&&_0x1cf8f0){fs[_0x94ce('0x36')](path[_0x94ce('0x35')](_0x236f6e,_0x165b8a));}return BPromise['each'](_0x2115bd,function(_0x76eee0){_0x4c050c[_0x94ce('0x15')](_0x76eee0);})[_0x94ce('0x2a')](function(){var _0xba81d2=[];for(var _0x4c82f0=0x0;_0x4c82f0<_0x4c050c[_0x94ce('0x12')];_0x4c82f0+=0x1){var _0x8d8318=_0x4c050c[_0x4c82f0];var _0x479b43=createTables(_[_0x94ce('0x37')](_0x8d8318));var _0xedb3e0;var _0x562e7d=getPDFDocDefinition(_0x479b43);var _0x213060=getPDFPrinter();var _0x523e4a=_0x213060[_0x94ce('0x38')](_0x562e7d);if(_0x1cf8f0){_0xedb3e0=path[_0x94ce('0x35')](_0x236f6e,_0x165b8a,util['format'](_0x94ce('0x39'),_0x165b8a,_0x4c82f0,_0x94ce('0x3a')));}else{_0xedb3e0=path[_0x94ce('0x35')](_0x236f6e,util[_0x94ce('0x1a')](_0x94ce('0x3b'),_0x165b8a,'pdf'));}_0xba81d2['push'](writePDFDocument(_0x523e4a,_0xedb3e0));}return Promise[_0x94ce('0x3c')](_0xba81d2);})[_0x94ce('0x2a')](function(){if(_0x1cf8f0){return new Promise(function(_0x487e4a){zipdir(path[_0x94ce('0x35')](_0x236f6e,_0x165b8a),{'saveTo':path[_0x94ce('0x35')](_0x236f6e,util[_0x94ce('0x1a')](_0x94ce('0x3b'),_0x165b8a,_0x94ce('0x3d')))},function(){rimraf(path[_0x94ce('0x35')](_0x236f6e,_0x165b8a),function(){});_0x487e4a(_0x94ce('0x3e'));});});}})[_0x94ce('0x2a')](function(){if(!_0x1cf8f0)return;rimraf(path[_0x94ce('0x35')](_0x236f6e,_0x165b8a),function(){});})[_0x94ce('0x2a')](function(){logger['info'](util[_0x94ce('0x1a')](_0x94ce('0x3f'),EXTRACTED_REPORT_ID,'PDF'));return analyticExtractedReport(_0x94ce('0x40'),_0x1cf8f0?util[_0x94ce('0x1a')](_0x94ce('0x3b'),_0x165b8a,_0x1cf8f0?_0x94ce('0x3d'):_0x94ce('0x3a')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x94ce('0x41')](util[_0x94ce('0x1a')](_0x94ce('0x42'),EXTRACTED_REPORT_ID,_0x94ce('0x43')));return db[_0x94ce('0xf')]['findOne']({'where':{'id':EXTRACTED_REPORT_ID}})['then'](function(_0x257cda){EXTRACTED_REPORT=_0x257cda;return dbH[_0x94ce('0x2d')][_0x94ce('0x2e')](util['format'](_0x94ce('0x44'),QUERY),{'type':dbH[_0x94ce('0x2d')][_0x94ce('0x30')][_0x94ce('0x31')]});})[_0x94ce('0x2a')](extractReport)[_0x94ce('0x45')](function(_0x1cf8b9){logger[_0x94ce('0x41')](util[_0x94ce('0x1a')](_0x94ce('0x46'),EXTRACTED_REPORT_ID,_0x94ce('0x43')),util[_0x94ce('0x47')](_0x1cf8b9,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x94ce('0x48'));})[_0x94ce('0x49')](function(){process[_0x94ce('0x4a')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x5755bb=new PdfPrinter({'Arial':{'normal':__dirname+_0x94ce('0x4b'),'bold':__dirname+_0x94ce('0x4c'),'italics':__dirname+_0x94ce('0x4d'),'bolditalics':__dirname+_0x94ce('0x4e')}});return _0x5755bb;}function getPDFDocDefinitionFromHTML(_0x463e7e,_0x4c25fd){var _0x3627df=util[_0x94ce('0x1a')](_0x94ce('0x4f'),_0x4c25fd[_0x94ce('0x50')],_0x4c25fd[_0x94ce('0x51')]);var _0x3d7b2a=moment()['format']('YYYY-MM-DD')[_0x94ce('0x52')]();var _0x21f4b6=htmlToPdfmake(_0x463e7e,{'window':window,'tableAutoSize':!![]});return{'content':[_0x21f4b6],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':'center','margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':'center','margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':'Interaction\x20Transcript','style':'header'}];},'footer':function(_0x30e576,_0x581469){return[{'text':util[_0x94ce('0x1a')](_0x94ce('0x53'),_0x3627df,_0x30e576,_0x581469,_0x3d7b2a),'style':_0x94ce('0x23')}];}};}function writePDFDocument(_0x1af4da,_0x216b6d){return new Promise(function(_0x29d439,_0x49cd0f){var _0x1ad594=_0x1af4da[_0x94ce('0x54')](fs[_0x94ce('0x55')](_0x216b6d));_0x1ad594['on'](_0x94ce('0x56'),function(){_0x29d439('finish');});_0x1ad594['on'](_0x94ce('0x57'),function(_0x9b57f2){_0x49cd0f(_0x9b57f2);});_0x1af4da[_0x94ce('0x58')]();});}exports[_0x94ce('0x59')]=function(_0x495712,_0x26b90c){var _0x14b243=getPDFPrinter();var _0x2e51b4=getPDFDocDefinitionFromHTML(_0x495712,_0x26b90c);var _0x34ad76=_0x14b243[_0x94ce('0x38')](_0x2e51b4);return writePDFDocument(_0x34ad76,_0x26b90c[_0x94ce('0x2')])[_0x94ce('0x45')](function(_0x2353a2){throw _0x2353a2;});};
\ No newline at end of file
index f5e3755..6b584f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6878=['bluebird','zip-dir','rimraf','../../config/logger','analytics','argv','savename','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','find','split','splitSizeXlsx','then','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','sequelize','QueryTypes','length','num','isInteger','push','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','query','.xlsx','existsSync','join','mkdirSync','each','xlsx','%s.%s','writeFileSync','binary','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','zip','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','util','lodash','json2xls'];(function(_0x45829d,_0x48c6ef){var _0xc211cd=function(_0x3ff4e3){while(--_0x3ff4e3){_0x45829d['push'](_0x45829d['shift']());}};_0xc211cd(++_0x48c6ef);}(_0x6878,0x185));var _0x8687=function(_0x3dc755,_0x73c041){_0x3dc755=_0x3dc755-0x0;var _0x16d3e0=_0x6878[_0x3dc755];return _0x16d3e0;};'use strict';var util=require(_0x8687('0x0'));var path=require('path');var _=require(_0x8687('0x1'));var fs=require('fs');var json2xls=require(_0x8687('0x2'));var BPromise=require(_0x8687('0x3'));var zipdir=require(_0x8687('0x4'));var rimraf=require(_0x8687('0x5'));var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')['dbH'];var logger=require(_0x8687('0x6'))(_0x8687('0x7'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x8687('0x8')][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x5bbf74,_0x2520f3){var _0x44e4cc={'status':_0x5bbf74};var _0x53cc29={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x2520f3){_0x44e4cc[_0x8687('0x9')]=_0x2520f3;}return db['AnalyticExtractedReport'][_0x8687('0xa')](_0x44e4cc,_0x53cc29);}function main(){var _0x448e8b=0x1388;var _0x2d87da;logger[_0x8687('0xb')](util[_0x8687('0xc')](_0x8687('0xd'),EXTRACTED_REPORT_ID,_0x8687('0xe')));return db[_0x8687('0xf')][_0x8687('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x8687('0x11'),_0x8687('0x12')]})['then'](function(_0x2fbb17){if(_0x2fbb17){_0x2d87da=_0x2fbb17;_0x448e8b=_0x2d87da[_0x8687('0x12')]||0x1388;}})[_0x8687('0x13')](function(){return dbH['sequelize']['query'](util['format'](_0x8687('0x14'),QUERY),{'type':dbH[_0x8687('0x15')][_0x8687('0x16')]['SELECT']});})[_0x8687('0x13')](function(_0x17e5d1){if(!_0x17e5d1[0x0]['num']){return analyticExtractedReport('Empty');}var _0x1ba6d4=[];var _0x4d5ab3=0x0;if(_0x2d87da[_0x8687('0x11')]){if(_0x17e5d1&&_0x17e5d1[_0x8687('0x17')]){var _0x5ece13=_['range'](_0x17e5d1[0x0][_0x8687('0x18')]/_0x448e8b);var _0x375c91=Number[_0x8687('0x19')](_0x17e5d1[0x0][_0x8687('0x18')]/_0x448e8b)?_0x17e5d1[0x0]['num']%_0x448e8b:0x0;_0x5ece13['forEach'](function(_0x447f95){if(_0x447f95>0x0){_0x4d5ab3+=_0x448e8b;}_0x1ba6d4[_0x8687('0x1a')](dbH['sequelize']['query'](util[_0x8687('0xc')](_0x8687('0x1b'),QUERY,_0x448e8b,_0x4d5ab3),{'type':dbH['sequelize'][_0x8687('0x16')][_0x8687('0x1c')]}));});if(_0x375c91>0x0){_0x4d5ab3+=_0x448e8b;_0x1ba6d4[_0x8687('0x1a')](dbH[_0x8687('0x15')][_0x8687('0x1d')](util[_0x8687('0xc')](_0x8687('0x1b'),QUERY,_0x375c91,_0x4d5ab3),{'type':dbH[_0x8687('0x15')][_0x8687('0x16')]['SELECT']}));}}}else{_0x1ba6d4[_0x8687('0x1a')](dbH['sequelize'][_0x8687('0x1d')](QUERY,{'type':dbH[_0x8687('0x15')][_0x8687('0x16')][_0x8687('0x1c')]}));}var _0x51900e=path['dirname'](PATH);var _0x793133=path['basename'](PATH,_0x8687('0x1e'));var _0x1e2649=_0x2d87da['split']&&_0x1ba6d4[_0x8687('0x17')]>0x1;var _0x514353=[];if(!fs[_0x8687('0x1f')](path[_0x8687('0x20')](_0x51900e,_0x793133))&&_0x1e2649){fs[_0x8687('0x21')](path[_0x8687('0x20')](_0x51900e,_0x793133));}return BPromise[_0x8687('0x22')](_0x1ba6d4,function(_0x35f1d1){_0x514353[_0x8687('0x1a')](_0x35f1d1);})['then'](function(){for(var _0x3623ba=0x0;_0x3623ba<_0x514353[_0x8687('0x17')];_0x3623ba+=0x1){var _0x3bf77e;var _0xe51dbd=_0x514353[_0x3623ba];if(_0x1e2649){_0x3bf77e=path[_0x8687('0x20')](_0x51900e,_0x793133,util['format']('%s%d.%s',_0x793133,_0x3623ba,_0x8687('0x23')));}else{_0x3bf77e=path['join'](_0x51900e,util['format'](_0x8687('0x24'),_0x793133,_0x8687('0x23')));}fs[_0x8687('0x25')](_0x3bf77e,json2xls(_0xe51dbd),_0x8687('0x26'));}})[_0x8687('0x13')](function(){if(_0x1e2649){return new Promise(function(_0x389451){zipdir(path[_0x8687('0x20')](_0x51900e,_0x793133),{'saveTo':path[_0x8687('0x20')](_0x51900e,util[_0x8687('0xc')](_0x8687('0x24'),_0x793133,'zip'))},function(_0x54fd3f,_0xc75e8f){rimraf(path[_0x8687('0x20')](_0x51900e,_0x793133),function(){});_0x389451(_0x8687('0x27'));});});}})[_0x8687('0x13')](function(){logger[_0x8687('0xb')](util['format'](_0x8687('0x28'),EXTRACTED_REPORT_ID,_0x8687('0xe')));return analyticExtractedReport(_0x8687('0x29'),_0x1e2649?util[_0x8687('0xc')](_0x8687('0x24'),_0x793133,_0x1e2649?_0x8687('0x2a'):'xlsx'):null);});})[_0x8687('0x2b')](function(_0x297cdf){logger[_0x8687('0xb')](util['format'](_0x8687('0x2c'),EXTRACTED_REPORT_ID,_0x8687('0xe')),util[_0x8687('0x2d')](_0x297cdf,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x8687('0x2e'));})[_0x8687('0x2f')](function(){process[_0x8687('0x30')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xa3a4=['Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','zip','catch','inspect','Failed','finally','exit','util','path','lodash','json2xls','zip-dir','rimraf','../../mysqldb','../../config/logger','analytics','argv','AnalyticExtractedReport','update','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','find','split','splitSizeXlsx','sequelize','query','format','QueryTypes','SELECT','then','num','Empty','range','isInteger','push','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','.xlsx','length','existsSync','join','each','%s%d.%s','xlsx','%s.%s','writeFileSync','binary','zip\x20finished'];(function(_0x20bebb,_0x1075d9){var _0x762595=function(_0xc98a1d){while(--_0xc98a1d){_0x20bebb['push'](_0x20bebb['shift']());}};_0x762595(++_0x1075d9);}(_0xa3a4,0x6e));var _0x4a3a=function(_0x15dfe5,_0x485155){_0x15dfe5=_0x15dfe5-0x0;var _0x54061b=_0xa3a4[_0x15dfe5];return _0x54061b;};'use strict';var util=require(_0x4a3a('0x0'));var path=require(_0x4a3a('0x1'));var _=require(_0x4a3a('0x2'));var fs=require('fs');var json2xls=require(_0x4a3a('0x3'));var BPromise=require('bluebird');var zipdir=require(_0x4a3a('0x4'));var rimraf=require(_0x4a3a('0x5'));var db=require(_0x4a3a('0x6'))['db'];var dbH=require(_0x4a3a('0x6'))['dbH'];var logger=require(_0x4a3a('0x7'))(_0x4a3a('0x8'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x4a3a('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x4f5239,_0x320a44){var _0x2362b1={'status':_0x4f5239};var _0x4bde4f={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x320a44){_0x2362b1['savename']=_0x320a44;}return db[_0x4a3a('0xa')][_0x4a3a('0xb')](_0x2362b1,_0x4bde4f);}function main(){var _0x4d79b5=0x1388;var _0x51248f;logger[_0x4a3a('0xc')](util['format'](_0x4a3a('0xd'),EXTRACTED_REPORT_ID,_0x4a3a('0xe')));return db['Setting'][_0x4a3a('0xf')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x4a3a('0x10'),'splitSizeXlsx']})['then'](function(_0x57ece4){if(_0x57ece4){_0x51248f=_0x57ece4;_0x4d79b5=_0x51248f[_0x4a3a('0x11')]||0x1388;}})['then'](function(){return dbH[_0x4a3a('0x12')][_0x4a3a('0x13')](util[_0x4a3a('0x14')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x4a3a('0x12')][_0x4a3a('0x15')][_0x4a3a('0x16')]});})[_0x4a3a('0x17')](function(_0x166b35){if(!_0x166b35[0x0][_0x4a3a('0x18')]){return analyticExtractedReport(_0x4a3a('0x19'));}var _0x5195df=[];var _0x2718c6=0x0;if(_0x51248f[_0x4a3a('0x10')]){if(_0x166b35&&_0x166b35['length']){var _0x5c1d11=_[_0x4a3a('0x1a')](_0x166b35[0x0]['num']/_0x4d79b5);var _0x2b2eb2=Number[_0x4a3a('0x1b')](_0x166b35[0x0][_0x4a3a('0x18')]/_0x4d79b5)?_0x166b35[0x0]['num']%_0x4d79b5:0x0;_0x5c1d11['forEach'](function(_0x30ddb8){if(_0x30ddb8>0x0){_0x2718c6+=_0x4d79b5;}_0x5195df[_0x4a3a('0x1c')](dbH[_0x4a3a('0x12')]['query'](util['format'](_0x4a3a('0x1d'),QUERY,_0x4d79b5,_0x2718c6),{'type':dbH[_0x4a3a('0x12')][_0x4a3a('0x15')][_0x4a3a('0x16')]}));});if(_0x2b2eb2>0x0){_0x2718c6+=_0x4d79b5;_0x5195df[_0x4a3a('0x1c')](dbH[_0x4a3a('0x12')][_0x4a3a('0x13')](util[_0x4a3a('0x14')](_0x4a3a('0x1d'),QUERY,_0x2b2eb2,_0x2718c6),{'type':dbH[_0x4a3a('0x12')][_0x4a3a('0x15')][_0x4a3a('0x16')]}));}}}else{_0x5195df[_0x4a3a('0x1c')](dbH[_0x4a3a('0x12')][_0x4a3a('0x13')](QUERY,{'type':dbH[_0x4a3a('0x12')][_0x4a3a('0x15')]['SELECT']}));}var _0x497b9e=path[_0x4a3a('0x1e')](PATH);var _0x7fed47=path[_0x4a3a('0x1f')](PATH,_0x4a3a('0x20'));var _0x29fd00=_0x51248f[_0x4a3a('0x10')]&&_0x5195df[_0x4a3a('0x21')]>0x1;var _0x51ca4a=[];if(!fs[_0x4a3a('0x22')](path[_0x4a3a('0x23')](_0x497b9e,_0x7fed47))&&_0x29fd00){fs['mkdirSync'](path[_0x4a3a('0x23')](_0x497b9e,_0x7fed47));}return BPromise[_0x4a3a('0x24')](_0x5195df,function(_0x3dc684){_0x51ca4a[_0x4a3a('0x1c')](_0x3dc684);})[_0x4a3a('0x17')](function(){for(var _0x8ea5cb=0x0;_0x8ea5cb<_0x51ca4a[_0x4a3a('0x21')];_0x8ea5cb+=0x1){var _0x431ed9;var _0xef13cf=_0x51ca4a[_0x8ea5cb];if(_0x29fd00){_0x431ed9=path[_0x4a3a('0x23')](_0x497b9e,_0x7fed47,util['format'](_0x4a3a('0x25'),_0x7fed47,_0x8ea5cb,_0x4a3a('0x26')));}else{_0x431ed9=path[_0x4a3a('0x23')](_0x497b9e,util[_0x4a3a('0x14')](_0x4a3a('0x27'),_0x7fed47,_0x4a3a('0x26')));}fs[_0x4a3a('0x28')](_0x431ed9,json2xls(_0xef13cf),_0x4a3a('0x29'));}})['then'](function(){if(_0x29fd00){return new Promise(function(_0xc2cc61){zipdir(path[_0x4a3a('0x23')](_0x497b9e,_0x7fed47),{'saveTo':path[_0x4a3a('0x23')](_0x497b9e,util[_0x4a3a('0x14')]('%s.%s',_0x7fed47,'zip'))},function(_0x177521,_0x1d8761){rimraf(path['join'](_0x497b9e,_0x7fed47),function(){});_0xc2cc61(_0x4a3a('0x2a'));});});}})[_0x4a3a('0x17')](function(){logger[_0x4a3a('0xc')](util[_0x4a3a('0x14')](_0x4a3a('0x2b'),EXTRACTED_REPORT_ID,'XLSX'));return analyticExtractedReport(_0x4a3a('0x2c'),_0x29fd00?util[_0x4a3a('0x14')]('%s.%s',_0x7fed47,_0x29fd00?_0x4a3a('0x2d'):_0x4a3a('0x26')):null);});})[_0x4a3a('0x2e')](function(_0xf3e0b7){logger['info'](util[_0x4a3a('0x14')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x4a3a('0xe')),util[_0x4a3a('0x2f')](_0xf3e0b7,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x4a3a('0x30'));})[_0x4a3a('0x31')](function(){process[_0x4a3a('0x32')](EXIT_CODE);});}main();
\ No newline at end of file
index 1b86d2d..3e660dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb260=['indexOf','appType','custom','answer','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice',',${EXTEN},','last','concat','Hangup','destroy','bulkCreate','error','rewrite','lodash','util','models','Interval','then','intervals','IntervalId','VoiceExtension','findAll','map','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','exten','queue','playback','hasOwnProperty','priority','extensions','extension','find','push','type','Set','format','context','VoiceExtensionId','inbound','CDR(routeid)=','outbound','CDR(destination)=','${EXTEN:','cutdigits','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','toLowerCase','createdAt','interval','tag','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)'];(function(_0x24ba37,_0x292b00){var _0x572d4d=function(_0x5e40b1){while(--_0x5e40b1){_0x24ba37['push'](_0x24ba37['shift']());}};_0x572d4d(++_0x292b00);}(_0xb260,0x9b));var _0x0b26=function(_0xe8bcdf,_0x443ac0){_0xe8bcdf=_0xe8bcdf-0x0;var _0x883c3a=_0xb260[_0xe8bcdf];return _0x883c3a;};'use strict';var _=require(_0x0b26('0x0'));var util=require(_0x0b26('0x1'));function rewrite(_0x3cc540,_0x2f5b34){var _0x336fe1=this;return _0x3cc540[_0x0b26('0x2')][_0x0b26('0x3')]['findAll']({'raw':!![]})[_0x0b26('0x4')](function(_0x34b301){_0x336fe1[_0x0b26('0x5')]=_0x34b301;return _0x3cc540[_0x0b26('0x2')]['VoiceExtension']['findAll']({'where':{'IntervalId':_0x2f5b34[_0x0b26('0x6')]},'raw':!![]});})[_0x0b26('0x4')](function(_0x1f4e9c){return _0x3cc540[_0x0b26('0x2')][_0x0b26('0x7')][_0x0b26('0x8')]({'where':{'exten':{'$in':_['uniq'](_[_0x0b26('0x9')](_0x1f4e9c,'exten'))}},'order':[{'raw':_0x0b26('0xa')}],'raw':!![]});})['then'](function(_0x1565ca){var _0x3ae73a=_['filter'](_0x1565ca,{'priority':'1'});var _0x191d18=_[_0x0b26('0xb')](_0x1565ca,{'isApp':0x1});var _0x32bd2c=_[_0x0b26('0xc')](_0x191d18,_0x0b26('0xd'));var _0x2731c0=[_0x0b26('0xe'),_0x0b26('0xf')];var _0x16a221=[];var _0x420501=[];for(var _0xa3b239 in _0x32bd2c){if(_0x32bd2c[_0x0b26('0x10')](_0xa3b239)){_0x336fe1[_0x0b26('0x11')]=0x2;_0x336fe1[_0x0b26('0x12')]=[];_0x336fe1[_0x0b26('0x13')]=_[_0x0b26('0x14')](_0x3ae73a,{'exten':_0x32bd2c[_0xa3b239][0x0]['exten']});_0x336fe1[_0x0b26('0x12')][_0x0b26('0x15')]({'type':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x16')],'app':_0x0b26('0x17'),'appdata':util[_0x0b26('0x18')]('CDR(type)=%s',_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x16')]),'context':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x19')],'exten':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0xd')],'priority':_0x336fe1[_0x0b26('0x11')]++,'VoiceExtensionId':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x1a')]});if(_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x16')]===_0x0b26('0x1b')){_0x336fe1[_0x0b26('0x12')][_0x0b26('0x15')]({'type':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x16')],'app':'Set','appdata':_0x0b26('0x1c')+_0x32bd2c[_0xa3b239][0x0]['VoiceExtensionId'],'context':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x19')],'exten':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0xd')],'priority':_0x336fe1[_0x0b26('0x11')]++,'VoiceExtensionId':_0x32bd2c[_0xa3b239][0x0]['VoiceExtensionId']});}else if(_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x16')]===_0x0b26('0x1d')){if(_0x336fe1[_0x0b26('0x13')]){_0x336fe1[_0x0b26('0x12')][_0x0b26('0x15')]({'type':_0x32bd2c[_0xa3b239][0x0]['type'],'app':_0x0b26('0x17'),'appdata':_0x0b26('0x1e')+(_0x336fe1[_0x0b26('0x13')]['cutdigits']?_0x0b26('0x1f')+_0x336fe1[_0x0b26('0x13')][_0x0b26('0x20')]+'}':_0x0b26('0x21')),'context':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x19')],'exten':_0x32bd2c[_0xa3b239][0x0]['exten'],'priority':_0x336fe1[_0x0b26('0x11')]++,'VoiceExtensionId':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x1a')]});}_0x336fe1[_0x0b26('0x12')][_0x0b26('0x15')]({'type':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x16')],'app':_0x0b26('0x17'),'appdata':_0x0b26('0x1c')+_0x32bd2c[_0xa3b239][0x0]['VoiceExtensionId'],'context':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x19')],'exten':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0xd')],'priority':_0x336fe1['priority']++,'VoiceExtensionId':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x1a')]});var _0x2bcdad=_0x336fe1['priority']++;_0x336fe1[_0x0b26('0x12')][_0x0b26('0x15')]({'type':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x16')],'app':_0x0b26('0x22'),'appdata':_0x0b26('0x23')+(_0x2bcdad+0x2)+_0x0b26('0x24')+(_0x2bcdad+0x1)+')','context':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x19')],'exten':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0xd')],'priority':_0x2bcdad,'VoiceExtensionId':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x1a')]});if(_0x336fe1[_0x0b26('0x13')]){_0x336fe1[_0x0b26('0x12')][_0x0b26('0x15')]({'type':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x16')],'app':_0x0b26('0x17'),'appdata':_0x336fe1['extension'][_0x0b26('0x20')]?_0x0b26('0x25')+_0x336fe1[_0x0b26('0x13')][_0x0b26('0x20')]+'}':_0x0b26('0x26'),'context':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x19')],'exten':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0xd')],'priority':_0x336fe1['priority']++,'VoiceExtensionId':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x1a')]});}_0x336fe1[_0x0b26('0x12')]['push']({'type':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x16')],'app':_0x0b26('0x17'),'appdata':_0x0b26('0x27')+_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x1a')],'context':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x19')],'exten':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0xd')],'priority':_0x336fe1[_0x0b26('0x11')]++,'VoiceExtensionId':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x1a')]});if(_0x336fe1[_0x0b26('0x13')]&&_0x336fe1[_0x0b26('0x13')][_0x0b26('0x10')](_0x0b26('0x28'))&&_0x336fe1[_0x0b26('0x13')]['recordingFormat']!==_0x0b26('0x29')){_0x336fe1[_0x0b26('0x12')][_0x0b26('0x15')]({'type':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x16')],'app':'Set','appdata':_0x0b26('0x2a'),'context':_0x32bd2c[_0xa3b239][0x0]['context'],'exten':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0xd')],'priority':_0x336fe1['priority']++,'VoiceExtensionId':_0x32bd2c[_0xa3b239][0x0]['VoiceExtensionId']});_0x336fe1[_0x0b26('0x12')][_0x0b26('0x15')]({'type':_0x32bd2c[_0xa3b239][0x0]['type'],'app':_0x0b26('0x17'),'appdata':_0x0b26('0x2b')+_0x336fe1[_0x0b26('0x13')]['recordingFormat']||_0x0b26('0x2c'),'context':_0x32bd2c[_0xa3b239][0x0]['context'],'exten':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0xd')],'priority':_0x336fe1[_0x0b26('0x11')]++,'VoiceExtensionId':_0x32bd2c[_0xa3b239][0x0]['VoiceExtensionId']});}}_0x336fe1[_0x0b26('0x12')]['push']({'type':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x16')],'app':_0x0b26('0x17'),'appdata':_0x0b26('0x2d'),'context':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x19')],'exten':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0xd')],'priority':_0x336fe1['priority']++,'VoiceExtensionId':_0x32bd2c[_0xa3b239][0x0]['VoiceExtensionId']});_0x336fe1[_0x0b26('0x12')][_0x0b26('0x15')]({'type':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x16')],'app':_0x0b26('0x17'),'appdata':_0x0b26('0x2e'),'context':_0x32bd2c[_0xa3b239][0x0]['context'],'exten':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0xd')],'priority':_0x336fe1[_0x0b26('0x11')]++,'VoiceExtensionId':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x1a')]});_0x336fe1[_0x0b26('0x12')][_0x0b26('0x15')]({'type':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x16')],'app':_0x0b26('0x17'),'appdata':_0x0b26('0x2f'),'context':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x19')],'exten':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0xd')],'priority':_0x336fe1['priority']++,'VoiceExtensionId':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x1a')]});for(var _0x1cd774=0x0,_0x105721=0x0;_0x1cd774<_0x32bd2c[_0xa3b239][_0x0b26('0x30')];_0x1cd774+=0x1,_0x105721=0x0){var _0x428a0a=_0x32bd2c[_0xa3b239][_0x1cd774];if(_0x428a0a[_0x0b26('0x16')]){_0x428a0a[_0x0b26('0x16')]=_0x428a0a['type'][_0x0b26('0x31')]();}var _0x49fbad=[];var _0x59992b=[];delete _0x428a0a['id'];delete _0x428a0a[_0x0b26('0x32')];delete _0x428a0a['updatedAt'];var _0x1ca9e3=_0x428a0a[_0x0b26('0x33')]!=='*,*,*,*'?[_0x428a0a[_0x0b26('0x33')]]:_0x428a0a[_0x0b26('0x6')]?_[_0x0b26('0x9')](_['filter'](_0x336fe1[_0x0b26('0x5')],{'IntervalId':_0x428a0a['IntervalId']}),_0x0b26('0x33')):[];if(_0x428a0a[_0x0b26('0x10')](_0x0b26('0x34'))){if(_0x428a0a[_0x0b26('0x34')]&&_0x428a0a[_0x0b26('0x34')]!=='--'){_0x49fbad[_0x0b26('0x15')]({'type':_0x428a0a[_0x0b26('0x16')],'app':_0x0b26('0x17'),'appdata':'CDR(tag)='+_0x428a0a[_0x0b26('0x34')],'context':_0x428a0a[_0x0b26('0x19')],'exten':_0x428a0a[_0x0b26('0xd')],'priority':_0x1ca9e3[_0x0b26('0x30')]+_0x336fe1[_0x0b26('0x11')]+_0x105721++,'VoiceExtensionId':_0x428a0a[_0x0b26('0x1a')]});}}if(_0x428a0a[_0x0b26('0x16')]===_0x0b26('0x1d')&&_0x428a0a[_0x0b26('0x10')]('callerID')){if(_0x428a0a['callerID']){_0x49fbad['push']({'type':_0x428a0a['type'],'app':'ExecIf','appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)='+_0x428a0a[_0x0b26('0x35')]+')','context':_0x428a0a[_0x0b26('0x19')],'exten':_0x428a0a['exten'],'priority':_0x1ca9e3[_0x0b26('0x30')]+_0x336fe1[_0x0b26('0x11')]+_0x105721++,'VoiceExtensionId':_0x428a0a[_0x0b26('0x1a')]});}else{_0x49fbad['push']({'type':_0x428a0a[_0x0b26('0x16')],'app':_0x0b26('0x22'),'appdata':_0x0b26('0x36'),'context':_0x428a0a[_0x0b26('0x19')],'exten':_0x428a0a[_0x0b26('0xd')],'priority':_0x1ca9e3[_0x0b26('0x30')]+_0x336fe1[_0x0b26('0x11')]+_0x105721++,'VoiceExtensionId':_0x428a0a[_0x0b26('0x1a')]});}}if(_0x428a0a[_0x0b26('0x10')]('answer')){if(_0x2731c0[_0x0b26('0x37')](_0x428a0a['app']['toLowerCase']())>=0x0&&_0x428a0a[_0x0b26('0x38')]!==_0x0b26('0x39')){if(_0x428a0a[_0x0b26('0x3a')]){_0x49fbad[_0x0b26('0x15')]({'type':_0x428a0a[_0x0b26('0x16')],'app':_0x0b26('0x22'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x428a0a[_0x0b26('0x19')],'exten':_0x428a0a[_0x0b26('0xd')],'priority':_0x1ca9e3[_0x0b26('0x30')]+_0x336fe1[_0x0b26('0x11')]+_0x105721++,'VoiceExtensionId':_0x428a0a[_0x0b26('0x1a')]});_0x49fbad['push']({'type':_0x428a0a['type'],'app':'Set','appdata':'XCALLY-MOTION-ANSWER=1','context':_0x428a0a['context'],'exten':_0x428a0a[_0x0b26('0xd')],'priority':_0x1ca9e3[_0x0b26('0x30')]+_0x336fe1['priority']+_0x105721++,'VoiceExtensionId':_0x428a0a[_0x0b26('0x1a')]});}else{_0x49fbad[_0x0b26('0x15')]({'type':_0x428a0a[_0x0b26('0x16')],'app':_0x0b26('0x22'),'appdata':_0x0b26('0x3b'),'context':_0x428a0a[_0x0b26('0x19')],'exten':_0x428a0a[_0x0b26('0xd')],'priority':_0x1ca9e3['length']+_0x336fe1[_0x0b26('0x11')]+_0x105721++,'VoiceExtensionId':_0x428a0a[_0x0b26('0x1a')]});_0x49fbad[_0x0b26('0x15')]({'type':_0x428a0a['type'],'app':_0x0b26('0x17'),'appdata':_0x0b26('0x3c'),'context':_0x428a0a[_0x0b26('0x19')],'exten':_0x428a0a[_0x0b26('0xd')],'priority':_0x1ca9e3[_0x0b26('0x30')]+_0x336fe1[_0x0b26('0x11')]+_0x105721++,'VoiceExtensionId':_0x428a0a[_0x0b26('0x1a')]});}}}for(var _0x5f5dcc=0x0;_0x5f5dcc<_0x1ca9e3[_0x0b26('0x30')];_0x5f5dcc+=0x1){var _0x2e49e8=_0x336fe1['priority']+_0x1ca9e3[_0x0b26('0x30')];var _0x14e634=_0x5f5dcc===_0x1ca9e3[_0x0b26('0x30')]-0x1?_0x336fe1[_0x0b26('0x11')]+_0x49fbad['length']+_0x59992b[_0x0b26('0x30')]+0x2:_0x336fe1[_0x0b26('0x11')]+_0x5f5dcc+0x1;_0x49fbad[_0x0b26('0x3d')](_0x5f5dcc,0x0,{'type':_0x428a0a['type'],'app':'GotoIfTime','appdata':_0x1ca9e3[_0x5f5dcc]+'?'+_0x428a0a[_0x0b26('0x19')]+_0x0b26('0x3e')+_0x2e49e8+':'+_0x428a0a[_0x0b26('0x19')]+_0x0b26('0x3e')+_0x14e634,'exten':_0x428a0a[_0x0b26('0xd')],'context':_0x428a0a[_0x0b26('0x19')],'priority':_0x336fe1[_0x0b26('0x11')]+_0x5f5dcc,'VoiceExtensionId':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x1a')]});}_0x428a0a['priority']=_0x49fbad[_0x0b26('0x30')]?_[_0x0b26('0x3f')](_0x49fbad)[_0x0b26('0x11')]+0x1:_0x336fe1['priority'];_0x336fe1[_0x0b26('0x11')]=(_0x59992b[_0x0b26('0x30')]?_[_0x0b26('0x3f')](_0x59992b)[_0x0b26('0x11')]:_0x428a0a['priority'])+0x1;_0x336fe1[_0x0b26('0x12')]=_[_0x0b26('0x40')](_0x336fe1[_0x0b26('0x12')],_0x49fbad,[_0x428a0a],_0x59992b);}_0x336fe1[_0x0b26('0x12')][_0x0b26('0x15')]({'type':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x16')],'app':_0x0b26('0x41'),'exten':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0xd')],'context':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x19')],'priority':_0x336fe1[_0x0b26('0x11')],'VoiceExtensionId':_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x1a')]});_0x16a221[_0x0b26('0x15')](_0x32bd2c[_0xa3b239][0x0][_0x0b26('0x1a')]);_0x420501=_['concat'](_0x420501,_0x336fe1[_0x0b26('0x12')]);}}return _0x3cc540['transaction'](function(_0x37ea82){return _0x3cc540[_0x0b26('0x2')][_0x0b26('0x7')][_0x0b26('0x42')]({'where':{'VoiceExtensionId':{'$in':_0x16a221}},'transaction':_0x37ea82})[_0x0b26('0x4')](function(_0x2f17c1){return _0x3cc540[_0x0b26('0x2')][_0x0b26('0x7')][_0x0b26('0x43')](_['sortBy'](_0x420501,_0x0b26('0x11')),{'transaction':_0x37ea82});});});})['catch'](function(_0x2a8083){console[_0x0b26('0x44')](_0x2a8083);});}exports[_0x0b26('0x45')]=rewrite;
\ No newline at end of file
+var _0x68d0=['IntervalId','map','exten','CAST(priority\x20AS\x20UNSIGNED)','groupBy','queue','playback','hasOwnProperty','extensions','extension','find','push','type','CDR(type)=%s','context','VoiceExtensionId','Set','priority','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','wav','MONITOR_OPTIONS=ab','length','toLowerCase','createdAt','updatedAt','interval','*,*,*,*','filter','tag','CDR(tag)=','outbound','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','concat','Hangup','transaction','destroy','bulkCreate','catch','error','rewrite','util','models','Interval','findAll','then','intervals','VoiceExtension'];(function(_0x4084eb,_0x30c6ad){var _0x4c1f1c=function(_0x1ca12e){while(--_0x1ca12e){_0x4084eb['push'](_0x4084eb['shift']());}};_0x4c1f1c(++_0x30c6ad);}(_0x68d0,0x85));var _0x068d=function(_0x4273cd,_0x16d887){_0x4273cd=_0x4273cd-0x0;var _0x3680d5=_0x68d0[_0x4273cd];return _0x3680d5;};'use strict';var _=require('lodash');var util=require(_0x068d('0x0'));function rewrite(_0x26da5c,_0x21f453){var _0xd734f5=this;return _0x26da5c[_0x068d('0x1')][_0x068d('0x2')][_0x068d('0x3')]({'raw':!![]})[_0x068d('0x4')](function(_0x359ddd){_0xd734f5[_0x068d('0x5')]=_0x359ddd;return _0x26da5c[_0x068d('0x1')][_0x068d('0x6')][_0x068d('0x3')]({'where':{'IntervalId':_0x21f453[_0x068d('0x7')]},'raw':!![]});})[_0x068d('0x4')](function(_0x4dfcc0){return _0x26da5c[_0x068d('0x1')][_0x068d('0x6')][_0x068d('0x3')]({'where':{'exten':{'$in':_['uniq'](_[_0x068d('0x8')](_0x4dfcc0,_0x068d('0x9')))}},'order':[{'raw':_0x068d('0xa')}],'raw':!![]});})[_0x068d('0x4')](function(_0x3a9de3){var _0x1b1ecc=_['filter'](_0x3a9de3,{'priority':'1'});var _0x3050e5=_['filter'](_0x3a9de3,{'isApp':0x1});var _0x1b2f66=_[_0x068d('0xb')](_0x3050e5,'exten');var _0x3e5f5e=[_0x068d('0xc'),_0x068d('0xd')];var _0xeefbfe=[];var _0x270177=[];for(var _0x29543f in _0x1b2f66){if(_0x1b2f66[_0x068d('0xe')](_0x29543f)){_0xd734f5['priority']=0x2;_0xd734f5[_0x068d('0xf')]=[];_0xd734f5[_0x068d('0x10')]=_[_0x068d('0x11')](_0x1b1ecc,{'exten':_0x1b2f66[_0x29543f][0x0][_0x068d('0x9')]});_0xd734f5[_0x068d('0xf')][_0x068d('0x12')]({'type':_0x1b2f66[_0x29543f][0x0][_0x068d('0x13')],'app':'Set','appdata':util['format'](_0x068d('0x14'),_0x1b2f66[_0x29543f][0x0][_0x068d('0x13')]),'context':_0x1b2f66[_0x29543f][0x0][_0x068d('0x15')],'exten':_0x1b2f66[_0x29543f][0x0][_0x068d('0x9')],'priority':_0xd734f5['priority']++,'VoiceExtensionId':_0x1b2f66[_0x29543f][0x0][_0x068d('0x16')]});if(_0x1b2f66[_0x29543f][0x0][_0x068d('0x13')]==='inbound'){_0xd734f5[_0x068d('0xf')][_0x068d('0x12')]({'type':_0x1b2f66[_0x29543f][0x0]['type'],'app':_0x068d('0x17'),'appdata':'CDR(routeid)='+_0x1b2f66[_0x29543f][0x0][_0x068d('0x16')],'context':_0x1b2f66[_0x29543f][0x0]['context'],'exten':_0x1b2f66[_0x29543f][0x0]['exten'],'priority':_0xd734f5[_0x068d('0x18')]++,'VoiceExtensionId':_0x1b2f66[_0x29543f][0x0][_0x068d('0x16')]});}else if(_0x1b2f66[_0x29543f][0x0][_0x068d('0x13')]==='outbound'){if(_0xd734f5[_0x068d('0x10')]){_0xd734f5[_0x068d('0xf')][_0x068d('0x12')]({'type':_0x1b2f66[_0x29543f][0x0][_0x068d('0x13')],'app':_0x068d('0x17'),'appdata':_0x068d('0x19')+(_0xd734f5[_0x068d('0x10')][_0x068d('0x1a')]?_0x068d('0x1b')+_0xd734f5[_0x068d('0x10')][_0x068d('0x1a')]+'}':_0x068d('0x1c')),'context':_0x1b2f66[_0x29543f][0x0][_0x068d('0x15')],'exten':_0x1b2f66[_0x29543f][0x0][_0x068d('0x9')],'priority':_0xd734f5[_0x068d('0x18')]++,'VoiceExtensionId':_0x1b2f66[_0x29543f][0x0][_0x068d('0x16')]});}_0xd734f5[_0x068d('0xf')][_0x068d('0x12')]({'type':_0x1b2f66[_0x29543f][0x0][_0x068d('0x13')],'app':_0x068d('0x17'),'appdata':'CDR(routeid)='+_0x1b2f66[_0x29543f][0x0][_0x068d('0x16')],'context':_0x1b2f66[_0x29543f][0x0][_0x068d('0x15')],'exten':_0x1b2f66[_0x29543f][0x0]['exten'],'priority':_0xd734f5[_0x068d('0x18')]++,'VoiceExtensionId':_0x1b2f66[_0x29543f][0x0][_0x068d('0x16')]});var _0x34ade1=_0xd734f5[_0x068d('0x18')]++;_0xd734f5[_0x068d('0xf')][_0x068d('0x12')]({'type':_0x1b2f66[_0x29543f][0x0][_0x068d('0x13')],'app':_0x068d('0x1d'),'appdata':_0x068d('0x1e')+(_0x34ade1+0x2)+_0x068d('0x1f')+(_0x34ade1+0x1)+')','context':_0x1b2f66[_0x29543f][0x0]['context'],'exten':_0x1b2f66[_0x29543f][0x0][_0x068d('0x9')],'priority':_0x34ade1,'VoiceExtensionId':_0x1b2f66[_0x29543f][0x0][_0x068d('0x16')]});if(_0xd734f5[_0x068d('0x10')]){_0xd734f5[_0x068d('0xf')][_0x068d('0x12')]({'type':_0x1b2f66[_0x29543f][0x0][_0x068d('0x13')],'app':'Set','appdata':_0xd734f5[_0x068d('0x10')]['cutdigits']?_0x068d('0x20')+_0xd734f5[_0x068d('0x10')][_0x068d('0x1a')]+'}':_0x068d('0x21'),'context':_0x1b2f66[_0x29543f][0x0][_0x068d('0x15')],'exten':_0x1b2f66[_0x29543f][0x0][_0x068d('0x9')],'priority':_0xd734f5['priority']++,'VoiceExtensionId':_0x1b2f66[_0x29543f][0x0][_0x068d('0x16')]});}_0xd734f5[_0x068d('0xf')][_0x068d('0x12')]({'type':_0x1b2f66[_0x29543f][0x0]['type'],'app':_0x068d('0x17'),'appdata':_0x068d('0x22')+_0x1b2f66[_0x29543f][0x0][_0x068d('0x16')],'context':_0x1b2f66[_0x29543f][0x0]['context'],'exten':_0x1b2f66[_0x29543f][0x0]['exten'],'priority':_0xd734f5[_0x068d('0x18')]++,'VoiceExtensionId':_0x1b2f66[_0x29543f][0x0][_0x068d('0x16')]});if(_0xd734f5[_0x068d('0x10')]&&_0xd734f5[_0x068d('0x10')][_0x068d('0xe')](_0x068d('0x23'))&&_0xd734f5[_0x068d('0x10')][_0x068d('0x23')]!=='none'){_0xd734f5[_0x068d('0xf')][_0x068d('0x12')]({'type':_0x1b2f66[_0x29543f][0x0]['type'],'app':_0x068d('0x17'),'appdata':_0x068d('0x24'),'context':_0x1b2f66[_0x29543f][0x0][_0x068d('0x15')],'exten':_0x1b2f66[_0x29543f][0x0]['exten'],'priority':_0xd734f5[_0x068d('0x18')]++,'VoiceExtensionId':_0x1b2f66[_0x29543f][0x0][_0x068d('0x16')]});_0xd734f5[_0x068d('0xf')][_0x068d('0x12')]({'type':_0x1b2f66[_0x29543f][0x0][_0x068d('0x13')],'app':_0x068d('0x17'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0xd734f5[_0x068d('0x10')][_0x068d('0x23')]||_0x068d('0x25'),'context':_0x1b2f66[_0x29543f][0x0][_0x068d('0x15')],'exten':_0x1b2f66[_0x29543f][0x0][_0x068d('0x9')],'priority':_0xd734f5[_0x068d('0x18')]++,'VoiceExtensionId':_0x1b2f66[_0x29543f][0x0][_0x068d('0x16')]});}}_0xd734f5[_0x068d('0xf')][_0x068d('0x12')]({'type':_0x1b2f66[_0x29543f][0x0][_0x068d('0x13')],'app':_0x068d('0x17'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x1b2f66[_0x29543f][0x0][_0x068d('0x15')],'exten':_0x1b2f66[_0x29543f][0x0][_0x068d('0x9')],'priority':_0xd734f5[_0x068d('0x18')]++,'VoiceExtensionId':_0x1b2f66[_0x29543f][0x0]['VoiceExtensionId']});_0xd734f5['extensions']['push']({'type':_0x1b2f66[_0x29543f][0x0]['type'],'app':'Set','appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x1b2f66[_0x29543f][0x0][_0x068d('0x15')],'exten':_0x1b2f66[_0x29543f][0x0][_0x068d('0x9')],'priority':_0xd734f5[_0x068d('0x18')]++,'VoiceExtensionId':_0x1b2f66[_0x29543f][0x0]['VoiceExtensionId']});_0xd734f5[_0x068d('0xf')][_0x068d('0x12')]({'type':_0x1b2f66[_0x29543f][0x0][_0x068d('0x13')],'app':_0x068d('0x17'),'appdata':_0x068d('0x26'),'context':_0x1b2f66[_0x29543f][0x0]['context'],'exten':_0x1b2f66[_0x29543f][0x0][_0x068d('0x9')],'priority':_0xd734f5['priority']++,'VoiceExtensionId':_0x1b2f66[_0x29543f][0x0][_0x068d('0x16')]});for(var _0x592ce3=0x0,_0x14d511=0x0;_0x592ce3<_0x1b2f66[_0x29543f][_0x068d('0x27')];_0x592ce3+=0x1,_0x14d511=0x0){var _0x39eca4=_0x1b2f66[_0x29543f][_0x592ce3];if(_0x39eca4[_0x068d('0x13')]){_0x39eca4[_0x068d('0x13')]=_0x39eca4[_0x068d('0x13')][_0x068d('0x28')]();}var _0x118c7f=[];var _0xfd183d=[];delete _0x39eca4['id'];delete _0x39eca4[_0x068d('0x29')];delete _0x39eca4[_0x068d('0x2a')];var _0x65f2b2=_0x39eca4[_0x068d('0x2b')]!==_0x068d('0x2c')?[_0x39eca4[_0x068d('0x2b')]]:_0x39eca4['IntervalId']?_[_0x068d('0x8')](_[_0x068d('0x2d')](_0xd734f5[_0x068d('0x5')],{'IntervalId':_0x39eca4[_0x068d('0x7')]}),'interval'):[];if(_0x39eca4[_0x068d('0xe')](_0x068d('0x2e'))){if(_0x39eca4[_0x068d('0x2e')]&&_0x39eca4[_0x068d('0x2e')]!=='--'){_0x118c7f[_0x068d('0x12')]({'type':_0x39eca4[_0x068d('0x13')],'app':_0x068d('0x17'),'appdata':_0x068d('0x2f')+_0x39eca4[_0x068d('0x2e')],'context':_0x39eca4['context'],'exten':_0x39eca4[_0x068d('0x9')],'priority':_0x65f2b2[_0x068d('0x27')]+_0xd734f5[_0x068d('0x18')]+_0x14d511++,'VoiceExtensionId':_0x39eca4['VoiceExtensionId']});}}if(_0x39eca4[_0x068d('0x13')]===_0x068d('0x30')&&_0x39eca4[_0x068d('0xe')]('callerID')){if(_0x39eca4[_0x068d('0x31')]){_0x118c7f[_0x068d('0x12')]({'type':_0x39eca4[_0x068d('0x13')],'app':_0x068d('0x1d'),'appdata':_0x068d('0x32')+_0x39eca4[_0x068d('0x31')]+')','context':_0x39eca4['context'],'exten':_0x39eca4[_0x068d('0x9')],'priority':_0x65f2b2[_0x068d('0x27')]+_0xd734f5[_0x068d('0x18')]+_0x14d511++,'VoiceExtensionId':_0x39eca4[_0x068d('0x16')]});}else{_0x118c7f[_0x068d('0x12')]({'type':_0x39eca4['type'],'app':'ExecIf','appdata':_0x068d('0x33'),'context':_0x39eca4[_0x068d('0x15')],'exten':_0x39eca4[_0x068d('0x9')],'priority':_0x65f2b2[_0x068d('0x27')]+_0xd734f5['priority']+_0x14d511++,'VoiceExtensionId':_0x39eca4['VoiceExtensionId']});}}if(_0x39eca4[_0x068d('0xe')](_0x068d('0x34'))){if(_0x3e5f5e['indexOf'](_0x39eca4['app'][_0x068d('0x28')]())>=0x0&&_0x39eca4[_0x068d('0x35')]!==_0x068d('0x36')){if(_0x39eca4['answer']){_0x118c7f['push']({'type':_0x39eca4[_0x068d('0x13')],'app':'ExecIf','appdata':_0x068d('0x37'),'context':_0x39eca4[_0x068d('0x15')],'exten':_0x39eca4['exten'],'priority':_0x65f2b2[_0x068d('0x27')]+_0xd734f5[_0x068d('0x18')]+_0x14d511++,'VoiceExtensionId':_0x39eca4[_0x068d('0x16')]});_0x118c7f[_0x068d('0x12')]({'type':_0x39eca4[_0x068d('0x13')],'app':'Set','appdata':'XCALLY-MOTION-ANSWER=1','context':_0x39eca4[_0x068d('0x15')],'exten':_0x39eca4[_0x068d('0x9')],'priority':_0x65f2b2[_0x068d('0x27')]+_0xd734f5['priority']+_0x14d511++,'VoiceExtensionId':_0x39eca4[_0x068d('0x16')]});}else{_0x118c7f[_0x068d('0x12')]({'type':_0x39eca4[_0x068d('0x13')],'app':'ExecIf','appdata':_0x068d('0x38'),'context':_0x39eca4['context'],'exten':_0x39eca4[_0x068d('0x9')],'priority':_0x65f2b2[_0x068d('0x27')]+_0xd734f5[_0x068d('0x18')]+_0x14d511++,'VoiceExtensionId':_0x39eca4[_0x068d('0x16')]});_0x118c7f[_0x068d('0x12')]({'type':_0x39eca4[_0x068d('0x13')],'app':_0x068d('0x17'),'appdata':_0x068d('0x39'),'context':_0x39eca4[_0x068d('0x15')],'exten':_0x39eca4[_0x068d('0x9')],'priority':_0x65f2b2['length']+_0xd734f5[_0x068d('0x18')]+_0x14d511++,'VoiceExtensionId':_0x39eca4[_0x068d('0x16')]});}}}for(var _0x38b197=0x0;_0x38b197<_0x65f2b2[_0x068d('0x27')];_0x38b197+=0x1){var _0x5506ea=_0xd734f5[_0x068d('0x18')]+_0x65f2b2[_0x068d('0x27')];var _0x1b2035=_0x38b197===_0x65f2b2[_0x068d('0x27')]-0x1?_0xd734f5[_0x068d('0x18')]+_0x118c7f[_0x068d('0x27')]+_0xfd183d[_0x068d('0x27')]+0x2:_0xd734f5[_0x068d('0x18')]+_0x38b197+0x1;_0x118c7f[_0x068d('0x3a')](_0x38b197,0x0,{'type':_0x39eca4[_0x068d('0x13')],'app':_0x068d('0x3b'),'appdata':_0x65f2b2[_0x38b197]+'?'+_0x39eca4[_0x068d('0x15')]+_0x068d('0x3c')+_0x5506ea+':'+_0x39eca4[_0x068d('0x15')]+_0x068d('0x3c')+_0x1b2035,'exten':_0x39eca4[_0x068d('0x9')],'context':_0x39eca4[_0x068d('0x15')],'priority':_0xd734f5['priority']+_0x38b197,'VoiceExtensionId':_0x1b2f66[_0x29543f][0x0][_0x068d('0x16')]});}_0x39eca4[_0x068d('0x18')]=_0x118c7f[_0x068d('0x27')]?_[_0x068d('0x3d')](_0x118c7f)[_0x068d('0x18')]+0x1:_0xd734f5[_0x068d('0x18')];_0xd734f5[_0x068d('0x18')]=(_0xfd183d[_0x068d('0x27')]?_[_0x068d('0x3d')](_0xfd183d)[_0x068d('0x18')]:_0x39eca4['priority'])+0x1;_0xd734f5[_0x068d('0xf')]=_[_0x068d('0x3e')](_0xd734f5[_0x068d('0xf')],_0x118c7f,[_0x39eca4],_0xfd183d);}_0xd734f5['extensions']['push']({'type':_0x1b2f66[_0x29543f][0x0][_0x068d('0x13')],'app':_0x068d('0x3f'),'exten':_0x1b2f66[_0x29543f][0x0]['exten'],'context':_0x1b2f66[_0x29543f][0x0][_0x068d('0x15')],'priority':_0xd734f5[_0x068d('0x18')],'VoiceExtensionId':_0x1b2f66[_0x29543f][0x0][_0x068d('0x16')]});_0xeefbfe['push'](_0x1b2f66[_0x29543f][0x0][_0x068d('0x16')]);_0x270177=_['concat'](_0x270177,_0xd734f5[_0x068d('0xf')]);}}return _0x26da5c[_0x068d('0x40')](function(_0x8a7bf6){return _0x26da5c[_0x068d('0x1')]['VoiceExtension'][_0x068d('0x41')]({'where':{'VoiceExtensionId':{'$in':_0xeefbfe}},'transaction':_0x8a7bf6})[_0x068d('0x4')](function(_0x501529){return _0x26da5c[_0x068d('0x1')][_0x068d('0x6')][_0x068d('0x42')](_['sortBy'](_0x270177,_0x068d('0x18')),{'transaction':_0x8a7bf6});});});})[_0x068d('0x43')](function(_0x22eff8){console[_0x068d('0x44')](_0x22eff8);});}exports[_0x068d('0x45')]=rewrite;
\ No newline at end of file
index e8577ee..a3badeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71a1=['sequelize','query','onlyIfOpen','VoiceQueueId','BlackLists','all','Campaign','findAll','always','CampaignId','cmContact,\x20%s,\x20%s','generalCheckHopper','message','Error\x20processing\x20rows\x20block:','finally','contact:csv_','resume','resolve','emit','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','info','CSV\x20import\x20process\x20stopped!','createReadStream','parse','duplicate','pause','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','papaparse','ioredis','../../../mysqldb','../../../config/logger','redis','defaults','localhost','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','contact','index','test','isNil','error','errors','length','map','join','hasOwnProperty','data','firstName','firstName\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\x20Contact','CmContact','create','keys','then','push','pick','catch','stringify','checkHopper','inspect','insert','into','cm_hopper','fromQuery','phone','ContactId','createdAt','updatedAt','select','field','NOW()','scheduledAt','toString','from','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','cm_contacts','id\x20IN\x20?','cm_hopper_final','\x20=\x20?','str','cm_hopper_black','VoiceQueue','outbound','dialCheckDuplicateType','CmList','Lists','get'];(function(_0x660bee,_0x1b32ee){var _0x1f41fa=function(_0x1a6448){while(--_0x1a6448){_0x660bee['push'](_0x660bee['shift']());}};_0x1f41fa(++_0x1b32ee);}(_0x71a1,0x1e2));var _0x171a=function(_0x56cc18,_0x399d03){_0x56cc18=_0x56cc18-0x0;var _0x362ce8=_0x71a1[_0x56cc18];return _0x362ce8;};'use strict';var BPromise=require(_0x171a('0x0'));var util=require(_0x171a('0x1'));var _=require('lodash');var fs=require('fs');var squel=require('squel');var Papa=require(_0x171a('0x2'));var Redis=require(_0x171a('0x3'));var db=require(_0x171a('0x4'))['db'];var config=require('../../../config/environment');var logger=require(_0x171a('0x5'))('api');config[_0x171a('0x6')]=_[_0x171a('0x7')](config['redis'],{'host':_0x171a('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x171a('0x6')]));require(_0x171a('0x9'))[_0x171a('0xa')](socket);try{if(!process[_0x171a('0xb')][0x2]||process[_0x171a('0xb')][0x2]===_0x171a('0xc')||process['argv'][0x2]===_0x171a('0xd')){throw new Error('Missing\x20filepath\x20parameter!');}var FILEPATH=process[_0x171a('0xb')][0x2];if(!process[_0x171a('0xb')][0x3]||process[_0x171a('0xb')][0x3]===_0x171a('0xc')||process[_0x171a('0xb')][0x3]===_0x171a('0xd')||!process['argv'][0x4]||process[_0x171a('0xb')][0x4]===_0x171a('0xc')||process[_0x171a('0xb')][0x4]===_0x171a('0xd')){throw new Error(_0x171a('0xe'));}var FIELDS=_[_0x171a('0xf')](process[_0x171a('0xb')][0x3]['split'](','),process[_0x171a('0xb')][0x4][_0x171a('0x10')](','));if(!process[_0x171a('0xb')][0x5]||process[_0x171a('0xb')][0x5]===_0x171a('0xc')||process['argv'][0x5]===_0x171a('0xd')){throw new Error(_0x171a('0x11'));}var LISTID=process[_0x171a('0xb')][0x5];var COMPANYID=process[_0x171a('0xb')][0x6]&&process['argv'][0x6]!==_0x171a('0xc')&&process['argv'][0x6]!==_0x171a('0xd')?process[_0x171a('0xb')][0x6]:null;var DUPLICATES=process['argv'][0x7]&&process[_0x171a('0xb')][0x7]!=='undefined'&&process[_0x171a('0xb')][0x7]!=='null'?process[_0x171a('0xb')][0x7]:null;if(!process[_0x171a('0xb')][0x8]||process['argv'][0x8]===_0x171a('0xc')||process['argv'][0x8]==='null'){throw new Error(_0x171a('0x12'));}var SOCKET_TIMESTAMP=process[_0x171a('0xb')][0x8];}catch(_0x5683ab){logger['error'](_0x5683ab);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(_0x1d6494,_0x4d149f,_0x473fa3,_0x384edd){var _0x122c0c={'message':_0x4d149f};_0x122c0c[_0x1d6494]=!![];if(_0x473fa3){_0x122c0c[_0x171a('0x13')]=_0x473fa3;}if(_0x384edd){_0x122c0c[_0x171a('0x14')]=_0x384edd;}return _0x122c0c;}function isEmail(_0x54d6d0){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))*$/[_0x171a('0x15')](_0x54d6d0);}function checkRow(_0x26e4a4,_0x1cb53d,_0x1a6e6b){return new BPromise(function(_0x55bed6,_0x15fd71){if(_[_0x171a('0x16')](_0x26e4a4)){return _0x15fd71(handleCheckRowError(_0x171a('0x17'),'The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!',null,_0x1a6e6b));}if(_0x26e4a4['errors']&&_0x26e4a4[_0x171a('0x18')][_0x171a('0x19')]){var _0x3176ab=_[_0x171a('0x1a')](_0x26e4a4[_0x171a('0x18')],'message')[_0x171a('0x1b')](';');return _0x15fd71(handleCheckRowError(_0x171a('0x17'),_0x3176ab,null,_0x1a6e6b));}var _0x315333={};for(var _0x4dd7ec in FIELDS){if(FIELDS[_0x171a('0x1c')](_0x4dd7ec)&&FIELDS[_0x4dd7ec]){_0x315333[_0x4dd7ec]=_0x26e4a4[_0x171a('0x1d')][0x0][FIELDS[_0x4dd7ec]]||_0x26e4a4[_0x171a('0x1d')][0x0]['\ufeff'+FIELDS[_0x4dd7ec]];}}if(!_0x315333[_0x171a('0x1e')]){return _0x15fd71(handleCheckRowError(_0x171a('0x17'),_0x171a('0x1f'),null,_0x1a6e6b));}if(!_0x315333['phone']){return _0x15fd71(handleCheckRowError(_0x171a('0x17'),'phone\x20not\x20specified!',null,_0x1a6e6b));}if(_0x315333['birthDate']){var _0x23d596=moment(_0x315333[_0x171a('0x20')],_0x171a('0x21'));if(!_0x23d596[_0x171a('0x22')]()){return _0x15fd71(handleCheckRowError(_0x171a('0x17'),_0x171a('0x23'),null,_0x1a6e6b));}}if(_0x315333[_0x171a('0x24')]){if(!isEmail(_0x315333['email'])){return _0x15fd71(handleCheckRowError(_0x171a('0x17'),_0x171a('0x25'),null,_0x1a6e6b));}}_0x315333[_0x171a('0x26')]=LISTID;_0x315333[_0x171a('0x27')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x171a('0x19')]&&_0x1cb53d){var _0x310c89={};for(var _0x4ffe51=0x0,_0x864bae=DUPLICATES[_0x171a('0x19')];_0x4ffe51<_0x864bae;_0x4ffe51+=0x1){_0x310c89[DUPLICATES[_0x4ffe51]]=_0x315333[DUPLICATES[_0x4ffe51]];}var _0x2e61f7=_[_0x171a('0x28')](_0x1cb53d,_0x310c89);if(_0x2e61f7){return _0x15fd71(handleCheckRowError('duplicate',_0x171a('0x29'),_0x2e61f7,_0x1a6e6b));}}return db[_0x171a('0x2a')][_0x171a('0x2b')](_0x315333,{'raw':!![],'hooks':![],'fields':_[_0x171a('0x2c')](_0x315333)})[_0x171a('0x2d')](function(_0x225070){if(DUPLICATES&&DUPLICATES['length']&&_0x1cb53d){_0x1cb53d[_0x171a('0x2e')](_[_0x171a('0x2f')](_0x315333,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x225070['id'];return _0x55bed6();})[_0x171a('0x30')](function(_0x290bdf){return _0x15fd71(handleCheckRowError('error','Error\x20while\x20creating\x20contact:\x20'+(_0x290bdf['message']||JSON[_0x171a('0x31')](_0x290bdf)),null,_0x1a6e6b));});});}function checkHopper(){function _0x59767d(){return function(_0x2235a2){logger['error']('cmContact',_0x171a('0x32'),util[_0x171a('0x33')](_0x2235a2,{'showHidden':![],'depth':null}));};}var _0x2aaac1=function(_0x68532b,_0x39c96b){var _0x59b87e=squel[_0x171a('0x34')]()[_0x171a('0x35')](_0x171a('0x36'))[_0x171a('0x37')]([_0x171a('0x38'),'scheduledAt',_0x171a('0x39'),'ListId',_0x39c96b,_0x171a('0x3a'),_0x171a('0x3b')],squel[_0x171a('0x3c')]()[_0x171a('0x3d')]('phone',_0x171a('0x38'))[_0x171a('0x3d')](_0x171a('0x3e'),_0x171a('0x3f'))[_0x171a('0x3d')]('id',_0x171a('0x39'))[_0x171a('0x3d')](LISTID[_0x171a('0x40')](),_0x171a('0x26'))[_0x171a('0x3d')](_0x68532b['id']['toString'](),_0x39c96b)[_0x171a('0x3d')](_0x171a('0x3e'),'createdAt')[_0x171a('0x3d')](_0x171a('0x3e'),'updatedAt')[_0x171a('0x41')]('cm_contacts')[_0x171a('0x42')](_0x171a('0x43'))[_0x171a('0x42')](_0x171a('0x44'),LISTID[_0x171a('0x40')]())['where'](_0x171a('0x45'))[_0x171a('0x42')](_0x171a('0x46'),squel['select']()['field'](_0x171a('0x38'))['from'](_0x171a('0x36'))[_0x171a('0x42')](_0x39c96b+'\x20=\x20?',_0x68532b['id']['toString']())))[_0x171a('0x40')]();return _0x59b87e;};var _0x340cdf=function(_0x390890,_0x3bd3bd){var _0x163b1a=squel[_0x171a('0x34')]()[_0x171a('0x35')](_0x171a('0x36'))[_0x171a('0x37')]([_0x171a('0x38'),_0x171a('0x3f'),_0x171a('0x39'),'ListId',_0x3bd3bd,_0x171a('0x3a'),_0x171a('0x3b')],squel['select']()[_0x171a('0x3d')]('phone',_0x171a('0x38'))['field']('NOW()',_0x171a('0x3f'))['field']('id','ContactId')[_0x171a('0x3d')](LISTID[_0x171a('0x40')](),_0x171a('0x26'))[_0x171a('0x3d')](_0x390890['id']['toString'](),_0x3bd3bd)[_0x171a('0x3d')](_0x171a('0x3e'),_0x171a('0x3a'))[_0x171a('0x3d')](_0x171a('0x3e'),'updatedAt')[_0x171a('0x41')](_0x171a('0x47'))['where'](_0x171a('0x43'))['where']('ListId\x20=\x20?',LISTID[_0x171a('0x40')]())[_0x171a('0x42')](_0x171a('0x48'),squel['str'](hopperContacts))['where'](_0x171a('0x45'))[_0x171a('0x42')]('phone\x20NOT\x20IN\x20(?)',squel[_0x171a('0x3c')]()['field']('calleridnum')[_0x171a('0x41')](_0x171a('0x49'))[_0x171a('0x42')](_0x3bd3bd+'\x20=\x20?',_0x390890['id'][_0x171a('0x40')]()))['where'](_0x171a('0x46'),squel[_0x171a('0x3c')]()[_0x171a('0x3d')](_0x171a('0x38'))[_0x171a('0x41')](_0x171a('0x36'))[_0x171a('0x42')](_0x3bd3bd+_0x171a('0x4a'),_0x390890['id'][_0x171a('0x40')]())))['toString']();return _0x163b1a;};function _0x336734(_0x100b61,_0x3cec22){var _0x5af58b=squel[_0x171a('0x34')]()['into'](_0x171a('0x36'))[_0x171a('0x37')](['phone','scheduledAt',_0x171a('0x39'),_0x171a('0x26'),_0x3cec22,_0x171a('0x3a'),'updatedAt'],squel[_0x171a('0x3c')]()['field'](_0x171a('0x38'),'phone')[_0x171a('0x3d')]('NOW()',_0x171a('0x3f'))[_0x171a('0x3d')]('id','ContactId')[_0x171a('0x3d')](LISTID[_0x171a('0x40')](),_0x171a('0x26'))[_0x171a('0x3d')](_0x100b61['id'][_0x171a('0x40')](),_0x3cec22)['field'](_0x171a('0x3e'),_0x171a('0x3a'))['field'](_0x171a('0x3e'),_0x171a('0x3b'))[_0x171a('0x41')](_0x171a('0x47'))[_0x171a('0x42')](_0x171a('0x43'))[_0x171a('0x42')](_0x171a('0x44'),LISTID['toString']())[_0x171a('0x42')](_0x171a('0x48'),squel[_0x171a('0x4b')](hopperContacts))[_0x171a('0x42')](_0x171a('0x45')))[_0x171a('0x40')]();return _0x5af58b;}function _0x5c1489(_0x3f407c,_0x345e2e){var _0x366013=squel[_0x171a('0x34')]()[_0x171a('0x35')](_0x171a('0x4c'))[_0x171a('0x37')]([_0x171a('0x38'),'ContactId',_0x171a('0x26'),_0x345e2e,_0x171a('0x3a'),_0x171a('0x3b')],squel[_0x171a('0x3c')]()[_0x171a('0x3d')](_0x171a('0x38'),_0x171a('0x38'))[_0x171a('0x3d')]('id',_0x171a('0x39'))[_0x171a('0x3d')](LISTID[_0x171a('0x40')](),_0x171a('0x26'))['field'](_0x3f407c['id'][_0x171a('0x40')](),_0x345e2e)[_0x171a('0x3d')](_0x171a('0x3e'),_0x171a('0x3a'))[_0x171a('0x3d')](_0x171a('0x3e'),_0x171a('0x3b'))[_0x171a('0x41')]('cm_contacts')[_0x171a('0x42')](_0x171a('0x43'))[_0x171a('0x42')](_0x171a('0x44'),LISTID[_0x171a('0x40')]())[_0x171a('0x42')](_0x171a('0x48'),squel[_0x171a('0x4b')](hopperContacts))[_0x171a('0x42')](_0x171a('0x45')))[_0x171a('0x40')]();return _0x366013;}return db[_0x171a('0x4d')]['findAll']({'where':{'type':_0x171a('0x4e')},'attributes':['id',_0x171a('0x4f')],'include':[{'model':db[_0x171a('0x50')],'as':_0x171a('0x51'),'where':{'id':LISTID}}]})[_0x171a('0x2d')](function(_0xe59e61){var _0x750cb9=[];if(_0xe59e61){var _0x2aeef8;for(var _0x15bc78=0x0,_0xdd487c;_0x15bc78<_0xe59e61[_0x171a('0x19')];_0x15bc78+=0x1){_0xdd487c=_0xe59e61[_0x15bc78][_0x171a('0x52')]({'plain':!![]});switch(_0xdd487c[_0x171a('0x4f')]){case'always':_0x750cb9[_0x171a('0x2e')](db[_0x171a('0x53')][_0x171a('0x54')](_0x340cdf(_0xdd487c,'VoiceQueueId'))['then'](function(){})[_0x171a('0x30')](_0x59767d()));break;case _0x171a('0x55'):_0x750cb9[_0x171a('0x2e')](db['sequelize'][_0x171a('0x54')](_0x2aaac1(_0xdd487c,_0x171a('0x56')))['then'](function(){})[_0x171a('0x30')](_0x59767d()));break;default:_0x750cb9[_0x171a('0x2e')](db[_0x171a('0x53')][_0x171a('0x54')](_0x336734(_0xdd487c,_0x171a('0x56')))[_0x171a('0x2d')](function(){})['catch'](_0x59767d()));}}}return _0x750cb9;})['all']()[_0x171a('0x2d')](function(){return db[_0x171a('0x4d')]['findAll']({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':db['CmList'],'as':_0x171a('0x57'),'where':{'id':LISTID}}]})[_0x171a('0x2d')](function(_0x1ada53){var _0x44c18b=[];if(_0x1ada53){var _0x14e875;for(var _0x7dc9b7=0x0,_0x1626ce;_0x7dc9b7<_0x1ada53[_0x171a('0x19')];_0x7dc9b7+=0x1){_0x1626ce=_0x1ada53[_0x7dc9b7][_0x171a('0x52')]({'plain':!![]});_0x44c18b[_0x171a('0x2e')](db[_0x171a('0x53')]['query'](_0x5c1489(_0x1626ce,_0x171a('0x56')))['then'](function(){})[_0x171a('0x30')](_0x59767d()));}}return _0x44c18b;})[_0x171a('0x58')]();})[_0x171a('0x2d')](function(){return db[_0x171a('0x59')][_0x171a('0x5a')]({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0x171a('0x50')],'as':_0x171a('0x51'),'where':{'id':LISTID}}]})[_0x171a('0x2d')](function(_0x44af63){var _0x4fad69=[];if(_0x44af63){for(var _0x58a869=0x0,_0x2f1621;_0x58a869<_0x44af63['length'];_0x58a869+=0x1){_0x2f1621=_0x44af63[_0x58a869][_0x171a('0x52')]({'plain':!![]});switch(_0x2f1621[_0x171a('0x4f')]){case _0x171a('0x5b'):_0x4fad69[_0x171a('0x2e')](db[_0x171a('0x53')][_0x171a('0x54')](_0x340cdf(_0x2f1621,_0x171a('0x5c')))['then'](function(){})[_0x171a('0x30')](_0x59767d()));break;case'onlyIfOpen':_0x4fad69['push'](db[_0x171a('0x53')]['query'](_0x2aaac1(_0x2f1621,_0x171a('0x5c')))[_0x171a('0x2d')](function(){})[_0x171a('0x30')](_0x59767d()));break;default:_0x4fad69[_0x171a('0x2e')](db['sequelize']['query'](_0x336734(_0x2f1621,_0x171a('0x5c')))[_0x171a('0x2d')](function(){})['catch'](_0x59767d()));}}}return _0x4fad69;})['all']();})[_0x171a('0x2d')](function(){return db[_0x171a('0x59')][_0x171a('0x5a')]({'attributes':['id'],'include':[{'model':db[_0x171a('0x50')],'as':'BlackLists','where':{'id':LISTID}}]})['then'](function(_0x3e83da){var _0x22bcc9=[];if(_0x3e83da){for(var _0x110422=0x0,_0x364b80;_0x110422<_0x3e83da['length'];_0x110422+=0x1){_0x364b80=_0x3e83da[_0x110422][_0x171a('0x52')]({'plain':!![]});_0x22bcc9[_0x171a('0x2e')](db[_0x171a('0x53')][_0x171a('0x54')](_0x5c1489(_0x364b80,_0x171a('0x5c')))['then'](function(){})[_0x171a('0x30')](_0x59767d()));}}return _0x22bcc9;})[_0x171a('0x58')]();})[_0x171a('0x30')](function(_0x15bd74){logger[_0x171a('0x17')](_0x171a('0x5d'),_0x171a('0x5e'),_0x15bd74[_0x171a('0x5f')]);});}var processPromises=function(_0x19f355){return BPromise['all'](promises)[_0x171a('0x2d')](function(_0x41155e){})['catch'](function(_0x23722e){logger['error'](_0x171a('0x60'),JSON['stringify'](_0x23722e));})[_0x171a('0x61')](function(){socket['emit'](_0x171a('0x62')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x19f355){return _0x19f355[_0x171a('0x63')]();}});};var endCsv=function(){return BPromise[_0x171a('0x64')]()[_0x171a('0x2d')](function(){if(hopperContacts){return checkHopper();}})[_0x171a('0x2d')](function(){socket[_0x171a('0x65')]('contact:csv_'+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x171a('0x66')](FILEPATH);}catch(_0x3e631e){logger[_0x171a('0x17')](_0x171a('0x67'),JSON[_0x171a('0x31')](_0x3e631e));}finally{process[_0x171a('0x68')](0x0);}});};process['on'](_0x171a('0x69'),function(){logger[_0x171a('0x6a')](_0x171a('0x6b'));endCsv();});function main(){return BPromise[_0x171a('0x64')]()[_0x171a('0x2d')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x171a('0x10')](',');return db[_0x171a('0x2a')][_0x171a('0x5a')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x171a('0x2d')](function(_0x5f3630){var _0x5e7f3e=fs[_0x171a('0x6c')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x171a('0x6d')](_0x5e7f3e,{'header':!![],'skipEmptyLines':!![],'step':function(_0x3390ab,_0x252660){total+=0x1;var _0x568f13=total;promises[_0x171a('0x2e')](checkRow(_0x3390ab,_0x5f3630,_0x568f13)[_0x171a('0x2d')](function(){success+=0x1;})[_0x171a('0x30')](function(_0x38ed8b){if(_0x38ed8b[_0x171a('0x17')]){errors+=0x1;delete _0x38ed8b[_0x171a('0x17')];}else if(_0x38ed8b[_0x171a('0x6e')]){duplicates+=0x1;delete _0x38ed8b['duplicate'];}rows['push'](_0x38ed8b);}));if(total%0xc8===0x0){_0x252660[_0x171a('0x6f')]();return processPromises(_0x252660);}},'complete':function(){return processPromises()[_0x171a('0x2d')](function(){logger[_0x171a('0x6a')]('CSV\x20parsed\x20correctly!');endCsv();});},'error':function(_0xf94e2b,_0x448dc9){logger[_0x171a('0x6a')]('CSV\x20parse\x20error',JSON[_0x171a('0x31')](_0xf94e2b));endCsv();}});})[_0x171a('0x30')](function(_0x558996){logger['error'](_0x171a('0x70'),JSON[_0x171a('0x31')](_0x558996));});}main();
\ No newline at end of file
+var _0xcabf=['defaults','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','error','contact','index','test','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','message','join','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone','birthDate','YYYY-MM-DD','isValid','CompanyId','find','Duplicate\x20Contact','CmContact','create','keys','then','push','pick','catch','checkHopper','inspect','cm_hopper','fromQuery','scheduledAt','ContactId','ListId','createdAt','updatedAt','select','field','toString','NOW()','from','cm_contacts','where','ListId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','insert','into','deletedAt\x20IS\x20NULL','str','phone\x20IS\x20NOT\x20NULL','calleridnum','cm_hopper_final','\x20=\x20?','cm_hopper_black','id\x20IN\x20?','VoiceQueue','findAll','outbound','Lists','get','dialCheckDuplicateType','sequelize','VoiceQueueId','onlyIfOpen','all','BlackLists','query','Campaign','CmList','CampaignId','cmContact,\x20%s,\x20%s','Error\x20processing\x20rows\x20block:','stringify','finally','emit','contact:csv_','resolve','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','info','createReadStream','parse','duplicate','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','papaparse','../../../config/environment','../../../config/logger','redis'];(function(_0x3fb9dd,_0x174fff){var _0x20136a=function(_0x480081){while(--_0x480081){_0x3fb9dd['push'](_0x3fb9dd['shift']());}};_0x20136a(++_0x174fff);}(_0xcabf,0x143));var _0xfcab=function(_0x5a7738,_0x42552d){_0x5a7738=_0x5a7738-0x0;var _0x4c5de1=_0xcabf[_0x5a7738];return _0x4c5de1;};'use strict';var BPromise=require(_0xfcab('0x0'));var util=require(_0xfcab('0x1'));var _=require(_0xfcab('0x2'));var fs=require('fs');var squel=require('squel');var Papa=require(_0xfcab('0x3'));var Redis=require('ioredis');var db=require('../../../mysqldb')['db'];var config=require(_0xfcab('0x4'));var logger=require(_0xfcab('0x5'))('api');config[_0xfcab('0x6')]=_[_0xfcab('0x7')](config[_0xfcab('0x6')],{'host':_0xfcab('0x8'),'port':0x18eb});var socket=require(_0xfcab('0x9'))(new Redis(config[_0xfcab('0x6')]));require(_0xfcab('0xa'))[_0xfcab('0xb')](socket);try{if(!process[_0xfcab('0xc')][0x2]||process[_0xfcab('0xc')][0x2]===_0xfcab('0xd')||process['argv'][0x2]===_0xfcab('0xe')){throw new Error(_0xfcab('0xf'));}var FILEPATH=process[_0xfcab('0xc')][0x2];if(!process['argv'][0x3]||process[_0xfcab('0xc')][0x3]===_0xfcab('0xd')||process[_0xfcab('0xc')][0x3]===_0xfcab('0xe')||!process[_0xfcab('0xc')][0x4]||process[_0xfcab('0xc')][0x4]===_0xfcab('0xd')||process[_0xfcab('0xc')][0x4]==='null'){throw new Error(_0xfcab('0x10'));}var FIELDS=_[_0xfcab('0x11')](process[_0xfcab('0xc')][0x3][_0xfcab('0x12')](','),process[_0xfcab('0xc')][0x4]['split'](','));if(!process['argv'][0x5]||process[_0xfcab('0xc')][0x5]===_0xfcab('0xd')||process[_0xfcab('0xc')][0x5]===_0xfcab('0xe')){throw new Error(_0xfcab('0x13'));}var LISTID=process[_0xfcab('0xc')][0x5];var COMPANYID=process[_0xfcab('0xc')][0x6]&&process[_0xfcab('0xc')][0x6]!==_0xfcab('0xd')&&process[_0xfcab('0xc')][0x6]!==_0xfcab('0xe')?process[_0xfcab('0xc')][0x6]:null;var DUPLICATES=process['argv'][0x7]&&process[_0xfcab('0xc')][0x7]!==_0xfcab('0xd')&&process[_0xfcab('0xc')][0x7]!==_0xfcab('0xe')?process[_0xfcab('0xc')][0x7]:null;if(!process[_0xfcab('0xc')][0x8]||process[_0xfcab('0xc')][0x8]===_0xfcab('0xd')||process[_0xfcab('0xc')][0x8]===_0xfcab('0xe')){throw new Error('Missing\x20socket_timestamp\x20parameter!');}var SOCKET_TIMESTAMP=process[_0xfcab('0xc')][0x8];}catch(_0x2a253b){logger[_0xfcab('0x14')](_0x2a253b);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(_0x76dbb3,_0x2f85a7,_0x4a9547,_0x40ada8){var _0x3dc002={'message':_0x2f85a7};_0x3dc002[_0x76dbb3]=!![];if(_0x4a9547){_0x3dc002[_0xfcab('0x15')]=_0x4a9547;}if(_0x40ada8){_0x3dc002[_0xfcab('0x16')]=_0x40ada8;}return _0x3dc002;}function isEmail(_0x574e72){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))*$/[_0xfcab('0x17')](_0x574e72);}function checkRow(_0x7c3c65,_0x423300,_0x3cb810){return new BPromise(function(_0x32d4a6,_0x58a1f7){if(_[_0xfcab('0x18')](_0x7c3c65)){return _0x58a1f7(handleCheckRowError(_0xfcab('0x14'),_0xfcab('0x19'),null,_0x3cb810));}if(_0x7c3c65[_0xfcab('0x1a')]&&_0x7c3c65['errors'][_0xfcab('0x1b')]){var _0x44f2ad=_['map'](_0x7c3c65[_0xfcab('0x1a')],_0xfcab('0x1c'))[_0xfcab('0x1d')](';');return _0x58a1f7(handleCheckRowError(_0xfcab('0x14'),_0x44f2ad,null,_0x3cb810));}var _0xff5175={};for(var _0x1938c6 in FIELDS){if(FIELDS[_0xfcab('0x1e')](_0x1938c6)&&FIELDS[_0x1938c6]){_0xff5175[_0x1938c6]=_0x7c3c65[_0xfcab('0x1f')][0x0][FIELDS[_0x1938c6]]||_0x7c3c65[_0xfcab('0x1f')][0x0]['\ufeff'+FIELDS[_0x1938c6]];}}if(!_0xff5175[_0xfcab('0x20')]){return _0x58a1f7(handleCheckRowError('error',_0xfcab('0x21'),null,_0x3cb810));}if(!_0xff5175[_0xfcab('0x22')]){return _0x58a1f7(handleCheckRowError(_0xfcab('0x14'),'phone\x20not\x20specified!',null,_0x3cb810));}if(_0xff5175[_0xfcab('0x23')]){var _0x8c5bd=moment(_0xff5175[_0xfcab('0x23')],_0xfcab('0x24'));if(!_0x8c5bd[_0xfcab('0x25')]()){return _0x58a1f7(handleCheckRowError(_0xfcab('0x14'),'birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x3cb810));}}if(_0xff5175['email']){if(!isEmail(_0xff5175['email'])){return _0x58a1f7(handleCheckRowError(_0xfcab('0x14'),'email\x20format\x20is\x20not\x20valid!',null,_0x3cb810));}}_0xff5175['ListId']=LISTID;_0xff5175[_0xfcab('0x26')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES['length']&&_0x423300){var _0x5c9c52={};for(var _0x249286=0x0,_0x3c9f1d=DUPLICATES[_0xfcab('0x1b')];_0x249286<_0x3c9f1d;_0x249286+=0x1){_0x5c9c52[DUPLICATES[_0x249286]]=_0xff5175[DUPLICATES[_0x249286]];}var _0x50d10c=_[_0xfcab('0x27')](_0x423300,_0x5c9c52);if(_0x50d10c){return _0x58a1f7(handleCheckRowError('duplicate',_0xfcab('0x28'),_0x50d10c,_0x3cb810));}}return db[_0xfcab('0x29')][_0xfcab('0x2a')](_0xff5175,{'raw':!![],'hooks':![],'fields':_[_0xfcab('0x2b')](_0xff5175)})[_0xfcab('0x2c')](function(_0x3de6cc){if(DUPLICATES&&DUPLICATES[_0xfcab('0x1b')]&&_0x423300){_0x423300[_0xfcab('0x2d')](_[_0xfcab('0x2e')](_0xff5175,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x3de6cc['id'];return _0x32d4a6();})[_0xfcab('0x2f')](function(_0x1a6e98){return _0x58a1f7(handleCheckRowError(_0xfcab('0x14'),'Error\x20while\x20creating\x20contact:\x20'+(_0x1a6e98['message']||JSON['stringify'](_0x1a6e98)),null,_0x3cb810));});});}function checkHopper(){function _0x48c404(){return function(_0x53e4a4){logger[_0xfcab('0x14')]('cmContact',_0xfcab('0x30'),util[_0xfcab('0x31')](_0x53e4a4,{'showHidden':![],'depth':null}));};}var _0x131f29=function(_0x4616e9,_0x5df8e0){var _0x4de4b3=squel['insert']()['into'](_0xfcab('0x32'))[_0xfcab('0x33')]([_0xfcab('0x22'),_0xfcab('0x34'),_0xfcab('0x35'),_0xfcab('0x36'),_0x5df8e0,_0xfcab('0x37'),_0xfcab('0x38')],squel[_0xfcab('0x39')]()[_0xfcab('0x3a')](_0xfcab('0x22'),_0xfcab('0x22'))['field']('NOW()',_0xfcab('0x34'))[_0xfcab('0x3a')]('id',_0xfcab('0x35'))[_0xfcab('0x3a')](LISTID[_0xfcab('0x3b')](),_0xfcab('0x36'))[_0xfcab('0x3a')](_0x4616e9['id'][_0xfcab('0x3b')](),_0x5df8e0)[_0xfcab('0x3a')](_0xfcab('0x3c'),_0xfcab('0x37'))[_0xfcab('0x3a')](_0xfcab('0x3c'),_0xfcab('0x38'))[_0xfcab('0x3d')](_0xfcab('0x3e'))[_0xfcab('0x3f')]('deletedAt\x20IS\x20NULL')[_0xfcab('0x3f')](_0xfcab('0x40'),LISTID[_0xfcab('0x3b')]())[_0xfcab('0x3f')]('phone\x20IS\x20NOT\x20NULL')['where'](_0xfcab('0x41'),squel[_0xfcab('0x39')]()[_0xfcab('0x3a')]('phone')['from'](_0xfcab('0x32'))['where'](_0x5df8e0+'\x20=\x20?',_0x4616e9['id']['toString']())))['toString']();return _0x4de4b3;};var _0x3233af=function(_0x4ed7db,_0xb1d48b){var _0x5d55be=squel[_0xfcab('0x42')]()[_0xfcab('0x43')](_0xfcab('0x32'))[_0xfcab('0x33')]([_0xfcab('0x22'),_0xfcab('0x34'),_0xfcab('0x35'),_0xfcab('0x36'),_0xb1d48b,'createdAt',_0xfcab('0x38')],squel[_0xfcab('0x39')]()['field']('phone',_0xfcab('0x22'))['field']('NOW()',_0xfcab('0x34'))[_0xfcab('0x3a')]('id',_0xfcab('0x35'))[_0xfcab('0x3a')](LISTID[_0xfcab('0x3b')](),_0xfcab('0x36'))[_0xfcab('0x3a')](_0x4ed7db['id'][_0xfcab('0x3b')](),_0xb1d48b)[_0xfcab('0x3a')](_0xfcab('0x3c'),_0xfcab('0x37'))[_0xfcab('0x3a')](_0xfcab('0x3c'),_0xfcab('0x38'))[_0xfcab('0x3d')](_0xfcab('0x3e'))[_0xfcab('0x3f')](_0xfcab('0x44'))[_0xfcab('0x3f')](_0xfcab('0x40'),LISTID[_0xfcab('0x3b')]())['where']('id\x20IN\x20?',squel[_0xfcab('0x45')](hopperContacts))[_0xfcab('0x3f')](_0xfcab('0x46'))['where'](_0xfcab('0x41'),squel[_0xfcab('0x39')]()[_0xfcab('0x3a')](_0xfcab('0x47'))[_0xfcab('0x3d')](_0xfcab('0x48'))[_0xfcab('0x3f')](_0xb1d48b+_0xfcab('0x49'),_0x4ed7db['id']['toString']()))[_0xfcab('0x3f')](_0xfcab('0x41'),squel[_0xfcab('0x39')]()[_0xfcab('0x3a')]('phone')[_0xfcab('0x3d')]('cm_hopper')[_0xfcab('0x3f')](_0xb1d48b+_0xfcab('0x49'),_0x4ed7db['id'][_0xfcab('0x3b')]())))[_0xfcab('0x3b')]();return _0x5d55be;};function _0x38e776(_0xa8b54d,_0x42a553){var _0x501738=squel[_0xfcab('0x42')]()[_0xfcab('0x43')](_0xfcab('0x32'))[_0xfcab('0x33')](['phone',_0xfcab('0x34'),_0xfcab('0x35'),'ListId',_0x42a553,'createdAt',_0xfcab('0x38')],squel[_0xfcab('0x39')]()[_0xfcab('0x3a')](_0xfcab('0x22'),'phone')[_0xfcab('0x3a')]('NOW()',_0xfcab('0x34'))[_0xfcab('0x3a')]('id',_0xfcab('0x35'))[_0xfcab('0x3a')](LISTID[_0xfcab('0x3b')](),_0xfcab('0x36'))['field'](_0xa8b54d['id'][_0xfcab('0x3b')](),_0x42a553)[_0xfcab('0x3a')](_0xfcab('0x3c'),_0xfcab('0x37'))[_0xfcab('0x3a')](_0xfcab('0x3c'),'updatedAt')['from'](_0xfcab('0x3e'))[_0xfcab('0x3f')](_0xfcab('0x44'))[_0xfcab('0x3f')]('ListId\x20=\x20?',LISTID[_0xfcab('0x3b')]())[_0xfcab('0x3f')]('id\x20IN\x20?',squel['str'](hopperContacts))[_0xfcab('0x3f')](_0xfcab('0x46')))[_0xfcab('0x3b')]();return _0x501738;}function _0x77407f(_0x2c463f,_0x26538c){var _0x47d6c8=squel[_0xfcab('0x42')]()[_0xfcab('0x43')](_0xfcab('0x4a'))['fromQuery']([_0xfcab('0x22'),_0xfcab('0x35'),_0xfcab('0x36'),_0x26538c,'createdAt','updatedAt'],squel[_0xfcab('0x39')]()[_0xfcab('0x3a')](_0xfcab('0x22'),_0xfcab('0x22'))[_0xfcab('0x3a')]('id',_0xfcab('0x35'))['field'](LISTID[_0xfcab('0x3b')](),_0xfcab('0x36'))[_0xfcab('0x3a')](_0x2c463f['id']['toString'](),_0x26538c)[_0xfcab('0x3a')]('NOW()','createdAt')[_0xfcab('0x3a')]('NOW()',_0xfcab('0x38'))[_0xfcab('0x3d')](_0xfcab('0x3e'))['where'](_0xfcab('0x44'))[_0xfcab('0x3f')](_0xfcab('0x40'),LISTID[_0xfcab('0x3b')]())['where'](_0xfcab('0x4b'),squel[_0xfcab('0x45')](hopperContacts))['where']('phone\x20IS\x20NOT\x20NULL'))['toString']();return _0x47d6c8;}return db[_0xfcab('0x4c')][_0xfcab('0x4d')]({'where':{'type':_0xfcab('0x4e')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db['CmList'],'as':_0xfcab('0x4f'),'where':{'id':LISTID}}]})[_0xfcab('0x2c')](function(_0x1ce694){var _0x503f5e=[];if(_0x1ce694){var _0x1e9d1e;for(var _0xf2fe51=0x0,_0x34ef89;_0xf2fe51<_0x1ce694[_0xfcab('0x1b')];_0xf2fe51+=0x1){_0x34ef89=_0x1ce694[_0xf2fe51][_0xfcab('0x50')]({'plain':!![]});switch(_0x34ef89[_0xfcab('0x51')]){case'always':_0x503f5e['push'](db[_0xfcab('0x52')]['query'](_0x3233af(_0x34ef89,_0xfcab('0x53')))[_0xfcab('0x2c')](function(){})['catch'](_0x48c404()));break;case _0xfcab('0x54'):_0x503f5e[_0xfcab('0x2d')](db[_0xfcab('0x52')]['query'](_0x131f29(_0x34ef89,_0xfcab('0x53')))['then'](function(){})[_0xfcab('0x2f')](_0x48c404()));break;default:_0x503f5e[_0xfcab('0x2d')](db[_0xfcab('0x52')]['query'](_0x38e776(_0x34ef89,_0xfcab('0x53')))[_0xfcab('0x2c')](function(){})['catch'](_0x48c404()));}}}return _0x503f5e;})[_0xfcab('0x55')]()['then'](function(){return db[_0xfcab('0x4c')][_0xfcab('0x4d')]({'where':{'type':_0xfcab('0x4e')},'attributes':['id'],'include':[{'model':db['CmList'],'as':_0xfcab('0x56'),'where':{'id':LISTID}}]})['then'](function(_0x390e25){var _0x38f525=[];if(_0x390e25){var _0x25645b;for(var _0x62f390=0x0,_0x152593;_0x62f390<_0x390e25[_0xfcab('0x1b')];_0x62f390+=0x1){_0x152593=_0x390e25[_0x62f390][_0xfcab('0x50')]({'plain':!![]});_0x38f525[_0xfcab('0x2d')](db[_0xfcab('0x52')][_0xfcab('0x57')](_0x77407f(_0x152593,'VoiceQueueId'))['then'](function(){})['catch'](_0x48c404()));}}return _0x38f525;})[_0xfcab('0x55')]();})[_0xfcab('0x2c')](function(){return db[_0xfcab('0x58')][_0xfcab('0x4d')]({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0xfcab('0x59')],'as':'Lists','where':{'id':LISTID}}]})[_0xfcab('0x2c')](function(_0x2324b2){var _0x1d69a6=[];if(_0x2324b2){for(var _0x118417=0x0,_0x49fe0e;_0x118417<_0x2324b2[_0xfcab('0x1b')];_0x118417+=0x1){_0x49fe0e=_0x2324b2[_0x118417][_0xfcab('0x50')]({'plain':!![]});switch(_0x49fe0e[_0xfcab('0x51')]){case'always':_0x1d69a6[_0xfcab('0x2d')](db[_0xfcab('0x52')][_0xfcab('0x57')](_0x3233af(_0x49fe0e,_0xfcab('0x5a')))['then'](function(){})[_0xfcab('0x2f')](_0x48c404()));break;case _0xfcab('0x54'):_0x1d69a6[_0xfcab('0x2d')](db['sequelize'][_0xfcab('0x57')](_0x131f29(_0x49fe0e,'CampaignId'))[_0xfcab('0x2c')](function(){})['catch'](_0x48c404()));break;default:_0x1d69a6['push'](db[_0xfcab('0x52')][_0xfcab('0x57')](_0x38e776(_0x49fe0e,_0xfcab('0x5a')))[_0xfcab('0x2c')](function(){})[_0xfcab('0x2f')](_0x48c404()));}}}return _0x1d69a6;})[_0xfcab('0x55')]();})[_0xfcab('0x2c')](function(){return db['Campaign']['findAll']({'attributes':['id'],'include':[{'model':db[_0xfcab('0x59')],'as':_0xfcab('0x56'),'where':{'id':LISTID}}]})['then'](function(_0x3be7ad){var _0x14dc63=[];if(_0x3be7ad){for(var _0x3432fe=0x0,_0x44f0b3;_0x3432fe<_0x3be7ad[_0xfcab('0x1b')];_0x3432fe+=0x1){_0x44f0b3=_0x3be7ad[_0x3432fe][_0xfcab('0x50')]({'plain':!![]});_0x14dc63['push'](db[_0xfcab('0x52')][_0xfcab('0x57')](_0x77407f(_0x44f0b3,_0xfcab('0x5a')))['then'](function(){})[_0xfcab('0x2f')](_0x48c404()));}}return _0x14dc63;})[_0xfcab('0x55')]();})[_0xfcab('0x2f')](function(_0x5b102a){logger[_0xfcab('0x14')](_0xfcab('0x5b'),'generalCheckHopper',_0x5b102a['message']);});}var processPromises=function(_0x131001){return BPromise[_0xfcab('0x55')](promises)[_0xfcab('0x2c')](function(_0xa6b71f){})[_0xfcab('0x2f')](function(_0x492ad6){logger[_0xfcab('0x14')](_0xfcab('0x5c'),JSON[_0xfcab('0x5d')](_0x492ad6));})[_0xfcab('0x5e')](function(){socket[_0xfcab('0x5f')](_0xfcab('0x60')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x131001){return _0x131001['resume']();}});};var endCsv=function(){return BPromise[_0xfcab('0x61')]()[_0xfcab('0x2c')](function(){if(hopperContacts){return checkHopper();}})[_0xfcab('0x2c')](function(){socket[_0xfcab('0x5f')]('contact:csv_'+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0xfcab('0x62')](FILEPATH);}catch(_0x35f864){logger[_0xfcab('0x14')](_0xfcab('0x63'),JSON[_0xfcab('0x5d')](_0x35f864));}finally{process[_0xfcab('0x64')](0x0);}});};process['on'](_0xfcab('0x65'),function(){logger[_0xfcab('0x66')]('CSV\x20import\x20process\x20stopped!');endCsv();});function main(){return BPromise[_0xfcab('0x61')]()[_0xfcab('0x2c')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0xfcab('0x12')](',');return db[_0xfcab('0x29')][_0xfcab('0x4d')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0xfcab('0x2c')](function(_0x1a9fe8){var _0x49cefe=fs[_0xfcab('0x67')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0xfcab('0x68')](_0x49cefe,{'header':!![],'skipEmptyLines':!![],'step':function(_0x385d9a,_0x4232e8){total+=0x1;var _0x1878a7=total;promises['push'](checkRow(_0x385d9a,_0x1a9fe8,_0x1878a7)['then'](function(){success+=0x1;})['catch'](function(_0x160aee){if(_0x160aee[_0xfcab('0x14')]){errors+=0x1;delete _0x160aee[_0xfcab('0x14')];}else if(_0x160aee[_0xfcab('0x69')]){duplicates+=0x1;delete _0x160aee[_0xfcab('0x69')];}rows[_0xfcab('0x2d')](_0x160aee);}));if(total%0xc8===0x0){_0x4232e8[_0xfcab('0x6a')]();return processPromises(_0x4232e8);}},'complete':function(){return processPromises()[_0xfcab('0x2c')](function(){logger[_0xfcab('0x66')](_0xfcab('0x6b'));endCsv();});},'error':function(_0x1e8a28,_0x5308ac){logger[_0xfcab('0x66')](_0xfcab('0x6c'),JSON['stringify'](_0x1e8a28));endCsv();}});})[_0xfcab('0x2f')](function(_0x4d041e){logger[_0xfcab('0x14')](_0xfcab('0x6d'),JSON[_0xfcab('0x5d')](_0x4d041e));});}main();
\ No newline at end of file
index fc45ba6..3a33b72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fda=['all','split','length','filter','CmContactHasItem','updated','create','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','cm_hopper','fromQuery','scheduledat','ContactId','ListId','createdAt','updatedAt','priority','UserId','recallme','fields','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22onlyIfOpen\x22','\x22always\x22','cm_hopper_black','cm_contacts','field','ListId\x20=\x20?','toString','date_add(cm_contacts.scheduledat,interval\x20','.offset-cm_contacts.utcOffset\x20minute)','into','cm_contacts.createdAt','\x20=\x20','cm_contact_has_items.item','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt','cm_hopper_additional_phones','CmHopperId','OrderBy','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_hopper.ListId\x20=\x20?','concat','keys',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','min_id','group','Received\x20SIGINT','error','message','errors','info','sequelize','query','spread','catch','campaigns.dialTimezone','campaigns','campaigns_has_cm_lists','campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId','campaigns_has_cm_lists.CmListId=','voice_queues.id','voice_queues.dialTimezone','voice_queues','voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId','timezones','dialTimezone','isNil','utcOffset','set','main','stringify','send','binding','clone','root','server/files/tmp','.csv','includes','header','ContactItemType','name','_description','parse','data','rows','find','hasOwnProperty','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNumber','email','email\x20wrong\x20format','YYYY-MM-DD','isValid','firstName','\x20not\x20specified','replace','itemTypeId','description','SystemRow','appendFileSync','emit','contact:import:','Abort\x20parser','abort','SystemError','duplicates','cm_contacts_','\x20LIKE\x20cm_contacts;','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','CompanyId','DROP\x20TABLE\x20','each','contactId','contactTypeId','voice_queues_has_cm_lists','VoiceQueueId','voice_queues_has_cm_blacklists','campaigns_has_cm_blacklists','CampaignId','finish','affectedRows','unlink','exit','complete','arguments\x20<filename>\x20<parameters>\x20<agents>','argv','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','path','papaparse','util','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','defaults','redis','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','select','phone','from','join','.id\x20=\x20','where','CmContact','AdditionalPhones','then','push'];(function(_0x413924,_0x4d74a0){var _0x30a095=function(_0x4a0719){while(--_0x4a0719){_0x413924['push'](_0x413924['shift']());}};_0x30a095(++_0x4d74a0);}(_0x4fda,0x9a));var _0xa4fd=function(_0x1793de,_0x4d7233){_0x1793de=_0x1793de-0x0;var _0x4f0309=_0x4fda[_0x1793de];return _0x4f0309;};'use strict';var fs=require('fs');var path=require(_0xa4fd('0x0'));var _=require('lodash');var Papa=require(_0xa4fd('0x1'));var util=require(_0xa4fd('0x2'));var BPromise=require('bluebird');var moment=require('moment');var squel=require(_0xa4fd('0x3'));var Redis=require(_0xa4fd('0x4'));var db=require(_0xa4fd('0x5'))['db'];var config=require(_0xa4fd('0x6'));var shared=require('../../../config/environment/shared');var logger=require(_0xa4fd('0x7'))('import');config['redis']=_[_0xa4fd('0x8')](config[_0xa4fd('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xa4fd('0xa'))(new Redis(config[_0xa4fd('0x9')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()[_0xa4fd('0xb')](_0xa4fd('0xc'));function isEmail(_0x1e44a8){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))*$/[_0xa4fd('0xd')](_0x1e44a8);}function selectNotIn(_0x22b477,_0x2919e8,_0x307793,_0x47a2f6,_0x576698){return squel[_0xa4fd('0xe')]()['field'](_0xa4fd('0xf'))[_0xa4fd('0x10')](_0x47a2f6)[_0xa4fd('0x11')](_0x2919e8,null,_0x2919e8+_0xa4fd('0x12')+_0x47a2f6+'.'+_0x307793)['where'](_0x47a2f6+'.'+_0x307793+'\x20=\x20'+_0x22b477+'.'+_0x307793)[_0xa4fd('0x13')](_0x2919e8+'.dialCheckDuplicateType\x20IN\x20('+_0x576698[_0xa4fd('0x11')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x22ad8c,_0x231034){promisesAdditionalPhones=[];return db[_0xa4fd('0x14')]['findAll']({'raw':!![],'attributes':['id',_0xa4fd('0x15')],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})[_0xa4fd('0x16')](function(_0x286a7){if(_0x286a7!==null){var _0xf80825=[];for(var _0x4138d8=0x0;_0x4138d8<_0x286a7['length'];_0x4138d8++){var _0x10f564=_0x286a7[_0x4138d8];_0xf80825[_0xa4fd('0x17')](insertAdditionalPhones(_0x10f564));}}Promise[_0xa4fd('0x18')](_0xf80825)[_0xa4fd('0x16')](function(){_0x22ad8c({'val':0x1});});});});}function insertAdditionalPhones(_0x247bdb){return new Promise(function(_0x2ff46c,_0x14c3fe){var _0x331a06=_0x247bdb[_0xa4fd('0x15')];var _0x5dd3d3=_0x331a06[_0xa4fd('0x19')](';');var _0x285048=[];orderBy=0x0;for(var _0x3955c5=0x0;_0x3955c5<_0x5dd3d3[_0xa4fd('0x1a')];_0x3955c5++){_0x285048[_0xa4fd('0x17')](splitAdditionalPhone(_0x247bdb['id'],_0x5dd3d3[_0x3955c5]));}Promise[_0xa4fd('0x18')](_0x285048)['then'](function(){_0x2ff46c({'val':_0x5dd3d3[_0xa4fd('0x1a')]});});});}function splitAdditionalPhone(_0x10114e,_0x12886f){return new Promise(function(_0xcdf8d9,_0x1eddd8){var _0x48b4f0=_0x12886f[_0xa4fd('0x19')](':');var _0xee4f02=_0x48b4f0[0x0];var _0x38d7f4=_0x48b4f0[0x1];if(!_['isNil'](_0x38d7f4)){var _0x2de2f4=_0x38d7f4[_0xa4fd('0x19')]('|');var _0x232154=[];for(var _0x2c471f=0x0;_0x2c471f<_0x2de2f4[_0xa4fd('0x1a')];_0x2c471f++){if(_0x2de2f4[_0x2c471f]!==''){var _0x3694b4=_[_0xa4fd('0x1b')](promisesAdditionalPhones,{'contactId':_0x10114e,'phone':_0x2de2f4[_0x2c471f]});if(_0x3694b4[_0xa4fd('0x1a')]==0x0){orderBy++;promisesAdditionalPhones[_0xa4fd('0x17')]({'contactId':_0x10114e,'contactTypeId':_0xee4f02,'phone':_0x2de2f4[_0x2c471f],'orderBy':orderBy});}}}_0xcdf8d9({'ok':0x1});}else _0xcdf8d9({'res':0x0});});}function createAdditionalPhone(_0x467ad2,_0x4cb37d,_0x10b96a,_0x4456d7){var _0x49259f='';var _0x2e86c5='';var _0x51e938=_0x10b96a[_0xa4fd('0x19')]('§');_0x49259f=_0x51e938[0x0];if(_0x51e938[_0xa4fd('0x1a')]==0x2)_0x2e86c5=_0x51e938[0x1];return new Promise(function(_0x3323eb,_0x4ccadc){return db['CmContactHasItem']['findOne']({'where':{'CmContactId':_0x467ad2,'item':_0x49259f}})[_0xa4fd('0x16')](function(_0x266e32){if(_0x266e32){return db[_0xa4fd('0x1c')]['update']({'ItemTypeId':_0x4cb37d,'description':_0x2e86c5,'OrderBy':_0x4456d7},{'where':{'CmContactId':_0x467ad2,'item':_0x49259f}})['then'](function(_0x10a4d4){_0x3323eb({'res':_0xa4fd('0x1d')});});}else{return db[_0xa4fd('0x1c')][_0xa4fd('0x1e')]({'CmContactId':_0x467ad2,'item':_0x49259f,'description':_0x2e86c5,'ItemTypeId':_0x4cb37d,'OrderBy':_0x4456d7,'ItemClass':'PHONE'})[_0xa4fd('0x16')](function(_0x4a7eff){_0x3323eb({'res':'inserted'});});}});});}function insertCmHopper(_0x305471,_0x5e127e,_0x260ff4,_0x304e59,_0x39133c){var _0x4912fa=[_0xa4fd('0x1f'),_0xa4fd('0x20'),_0xa4fd('0x21'),_0xa4fd('0x22'),_0x5e127e+'.'+_0x304e59,'cm_contacts.createdAt',_0xa4fd('0x23'),_0xa4fd('0x24'),_0xa4fd('0x25'),'\x22'+_0x39133c+'\x22'];return squel[_0xa4fd('0x26')]()['into'](_0xa4fd('0x27'))[_0xa4fd('0x28')]([_0xa4fd('0xf'),_0xa4fd('0x29'),_0xa4fd('0x2a'),_0xa4fd('0x2b'),_0x304e59,_0xa4fd('0x2c'),_0xa4fd('0x2d'),_0xa4fd('0x2e'),_0xa4fd('0x2f'),_0xa4fd('0x30')],squel[_0xa4fd('0xe')]()[_0xa4fd('0x31')](_0x4912fa)[_0xa4fd('0x10')](_0x5e127e)[_0xa4fd('0x11')]('cm_contacts',null,_0xa4fd('0x32')+_0x5e127e+_0xa4fd('0x33'))[_0xa4fd('0x11')](_0x260ff4,null,_0x260ff4+_0xa4fd('0x12')+_0x5e127e+'.'+_0x304e59)[_0xa4fd('0x13')](_0x5e127e+_0xa4fd('0x34'),_0x305471)[_0xa4fd('0x13')](_0xa4fd('0x35'),NOW)[_0xa4fd('0x13')](_0xa4fd('0x36'),selectNotIn(_0x5e127e,_0x260ff4,_0x304e59,_0xa4fd('0x27'),['\x22always\x22',_0xa4fd('0x37')]))[_0xa4fd('0x13')](_0xa4fd('0x36'),selectNotIn(_0x5e127e,_0x260ff4,_0x304e59,_0xa4fd('0x27'),[_0xa4fd('0x38')])))['toString']();}function insertCmHopperBlack(_0x25345f,_0xc2305d,_0xa7ec70,_0x3e647e){var _0x4fd733=[_0xa4fd('0x1f'),_0xa4fd('0x21'),_0xa4fd('0x22'),_0xc2305d+'.'+_0x3e647e,'cm_contacts.createdAt',_0xa4fd('0x23')];return squel[_0xa4fd('0x26')]()['into'](_0xa4fd('0x39'))['fromQuery']([_0xa4fd('0xf'),_0xa4fd('0x2a'),_0xa4fd('0x2b'),_0x3e647e,_0xa4fd('0x2c'),'updatedAt'],squel[_0xa4fd('0xe')]()[_0xa4fd('0x31')](_0x4fd733)[_0xa4fd('0x10')](_0xc2305d)[_0xa4fd('0x11')](_0xa4fd('0x3a'),null,'cm_contacts.ListId\x20=\x20'+_0xc2305d+_0xa4fd('0x33'))[_0xa4fd('0x11')](_0xa7ec70,null,_0xa7ec70+'.id\x20=\x20'+_0xc2305d+'.'+_0x3e647e)[_0xa4fd('0x13')](_0xc2305d+'.CmListId\x20=\x20?',_0x25345f)[_0xa4fd('0x13')](_0xa4fd('0x35'),NOW)[_0xa4fd('0x13')](_0xa4fd('0x36'),squel[_0xa4fd('0xe')]()[_0xa4fd('0x3b')](_0xa4fd('0xf'))[_0xa4fd('0x10')](_0xa4fd('0x39'))[_0xa4fd('0x13')](_0xa4fd('0x3c'),_0x25345f)['where'](_0x3e647e+'\x20=\x20'+_0xc2305d+'.'+_0x3e647e)))[_0xa4fd('0x3d')]();}function insertTzCmHopper(_0x332654,_0x64a6a7,_0x21b120,_0x378c65,_0x14a695,_0x30dcea){var _0xe761aa=[_0xa4fd('0x1f'),_0xa4fd('0x3e')+_0x30dcea+_0xa4fd('0x3f'),_0xa4fd('0x21'),_0xa4fd('0x22'),_0x64a6a7+'.'+_0x378c65,'cm_contacts.createdAt',_0xa4fd('0x23'),_0xa4fd('0x24'),_0xa4fd('0x25'),'\x22'+_0x14a695+'\x22'];var _0x2fd161=squel[_0xa4fd('0x26')]()[_0xa4fd('0x40')](_0xa4fd('0x27'))[_0xa4fd('0x28')](['phone',_0xa4fd('0x29'),'ContactId',_0xa4fd('0x2b'),_0x378c65,'createdAt','updatedAt',_0xa4fd('0x2e'),'UserId','recallme'],squel[_0xa4fd('0xe')]()['fields'](_0xe761aa)[_0xa4fd('0x10')](_0x64a6a7)['join'](_0xa4fd('0x3a'),null,_0xa4fd('0x32')+_0x64a6a7+_0xa4fd('0x33'))[_0xa4fd('0x11')](_0x21b120,null,_0x21b120+'.id\x20=\x20'+_0x64a6a7+'.'+_0x378c65)[_0xa4fd('0x11')](_0x30dcea,null,_0x30dcea+'.id\x20=\x20'+_0x64a6a7+'.'+_0x378c65)[_0xa4fd('0x13')](_0x64a6a7+_0xa4fd('0x34'),_0x332654)[_0xa4fd('0x13')](_0xa4fd('0x35'),NOW)[_0xa4fd('0x13')](_0xa4fd('0x36'),selectNotIn(_0x64a6a7,_0x21b120,_0x378c65,_0xa4fd('0x27'),[_0xa4fd('0x38'),'\x22onlyIfOpen\x22']))['where'](_0xa4fd('0x36'),selectNotIn(_0x64a6a7,_0x21b120,_0x378c65,_0xa4fd('0x27'),[_0xa4fd('0x38')])))[_0xa4fd('0x3d')]();return _0x2fd161;}function insertTzCmHopperBlack(_0xd87bbb,_0x214737,_0x26ad89,_0x592f05){var _0x4845f5=[_0xa4fd('0x1f'),_0xa4fd('0x21'),_0xa4fd('0x22'),_0x214737+'.'+_0x592f05,_0xa4fd('0x41'),_0xa4fd('0x23')];return squel[_0xa4fd('0x26')]()[_0xa4fd('0x40')](_0xa4fd('0x39'))[_0xa4fd('0x28')]([_0xa4fd('0xf'),_0xa4fd('0x2a'),_0xa4fd('0x2b'),_0x592f05,'createdAt',_0xa4fd('0x2d')],squel[_0xa4fd('0xe')]()[_0xa4fd('0x31')](_0x4845f5)[_0xa4fd('0x10')](_0x214737)[_0xa4fd('0x11')](_0xa4fd('0x3a'),null,'cm_contacts.ListId\x20=\x20'+_0x214737+'.CmListId')['join'](_0x26ad89,null,_0x26ad89+_0xa4fd('0x12')+_0x214737+'.'+_0x592f05)[_0xa4fd('0x13')](_0x214737+_0xa4fd('0x34'),_0xd87bbb)[_0xa4fd('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0xa4fd('0x13')](_0xa4fd('0x36'),squel[_0xa4fd('0xe')]()[_0xa4fd('0x3b')](_0xa4fd('0xf'))[_0xa4fd('0x10')]('cm_hopper_black')[_0xa4fd('0x13')](_0xa4fd('0x3c'),_0xd87bbb)['where'](_0x592f05+_0xa4fd('0x42')+_0x214737+'.'+_0x592f05)))[_0xa4fd('0x3d')]();}function insertCmHopperAdditionalPhones(_0x38608){var _0xee8090=['cm_hopper.id',_0xa4fd('0x43'),_0xa4fd('0x44'),_0xa4fd('0x45'),_0xa4fd('0x46')];return squel[_0xa4fd('0x26')]()[_0xa4fd('0x40')](_0xa4fd('0x47'))[_0xa4fd('0x28')]([_0xa4fd('0x48'),_0xa4fd('0xf'),_0xa4fd('0x49'),_0xa4fd('0x2c'),_0xa4fd('0x2d')],squel[_0xa4fd('0xe')]()[_0xa4fd('0x31')](_0xee8090)[_0xa4fd('0x10')]('cm_hopper')[_0xa4fd('0x11')](_0xa4fd('0x3a'),null,_0xa4fd('0x4a'))[_0xa4fd('0x11')](_0xa4fd('0x4b'),null,'cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId')[_0xa4fd('0x13')](_0xa4fd('0x4c'),_0x38608)[_0xa4fd('0x13')](_0xa4fd('0x35'),NOW))[_0xa4fd('0x3d')]();}function insertCmContact(_0x51bc5b,_0x328bb1,_0xe7d758,_0x1085d0){var _0x129a3a=_[_0xa4fd('0x4d')](_[_0xa4fd('0x4e')](_0x1085d0),['ListId','CompanyId',_0xa4fd('0x2c'),'updatedAt']);return squel['insert']()[_0xa4fd('0x40')]('cm_contacts')[_0xa4fd('0x28')](_0x129a3a,squel[_0xa4fd('0xe')]()[_0xa4fd('0x31')](_0x129a3a)[_0xa4fd('0x10')](_0x328bb1)[_0xa4fd('0x13')]('('+_0xe7d758['join'](',')+_0xa4fd('0x4f'),squel[_0xa4fd('0xe')]()[_0xa4fd('0x31')](_0xe7d758)[_0xa4fd('0x10')](_0xa4fd('0x3a'))['where'](_0xa4fd('0x3c'),_0x51bc5b)[_0xa4fd('0x13')](_0xa4fd('0x50')))['where'](_0xa4fd('0x51'),squel[_0xa4fd('0xe')]()[_0xa4fd('0x3b')](_0xa4fd('0x52'),_0xa4fd('0x53'))['from'](_0x328bb1)[_0xa4fd('0x54')](_0xe7d758[_0xa4fd('0x11')](','))))[_0xa4fd('0x3d')]();}function handleStop(){logger['info'](_0xa4fd('0x55'));stopped=!![];}function handleUncaughtException(_0x460922){logger[_0xa4fd('0x56')](_0x460922[_0xa4fd('0x57')]);process['exit'](0x1);}function handleError(_0x46c653,_0x4ee4d1){stats[_0xa4fd('0x58')][_0xa4fd('0x17')]({'name':_0x4ee4d1['code'],'message':_0x4ee4d1[_0xa4fd('0x57')],'row':_0x46c653});}function handleQuery(_0x58b2a5){logger[_0xa4fd('0x59')](_0x58b2a5);return db[_0xa4fd('0x5a')][_0xa4fd('0x5b')](_0x58b2a5)[_0xa4fd('0x5c')](function(_0x575300){results[_0xa4fd('0x17')](_0x575300);})[_0xa4fd('0x5d')](function(_0x401d2a){logger[_0xa4fd('0x56')](_0x401d2a[_0xa4fd('0x57')]);});}function updateTzCampaigns(_0x29acf4){return new Promise(function(_0x10c702,_0x23fd15){var _0x14495d=squel[_0xa4fd('0xe')]()[_0xa4fd('0x31')](['campaigns.id',_0xa4fd('0x5e')])[_0xa4fd('0x10')](_0xa4fd('0x5f'))[_0xa4fd('0x11')](_0xa4fd('0x60'),null,_0xa4fd('0x61'))[_0xa4fd('0x13')](_0xa4fd('0x62')+_0x29acf4);db[_0xa4fd('0x5a')]['query'](_0x14495d['toString']())[_0xa4fd('0x5c')](function(_0x52d517){var _0xa94001=[];for(var _0x5043a1=0x0;_0x5043a1<_0x52d517[_0xa4fd('0x1a')];_0x5043a1++){_0xa94001['push'](getTimezoneData(_0x52d517[_0x5043a1],tmp_campaigns));}BPromise[_0xa4fd('0x18')](_0xa94001)['then'](function(){_0x10c702({'val':0x1});});})[_0xa4fd('0x5d')](function(_0x4102dd){logger['error'](_0x4102dd['message']);_0x10c702({'val':0x0});});});}function updateTzVoiceQueues(_0x34b4f9){return new Promise(function(_0xc2d841,_0x3420c4){var _0x5079d9=squel[_0xa4fd('0xe')]()['fields']([_0xa4fd('0x63'),_0xa4fd('0x64')])[_0xa4fd('0x10')](_0xa4fd('0x65'))[_0xa4fd('0x11')]('voice_queues_has_cm_lists',null,_0xa4fd('0x66'))[_0xa4fd('0x13')]('voice_queues_has_cm_lists.CmListId='+_0x34b4f9);db[_0xa4fd('0x5a')][_0xa4fd('0x5b')](_0x5079d9[_0xa4fd('0x3d')]())[_0xa4fd('0x5c')](function(_0x2e7cf8){var _0x513bf8=[];for(var _0x54c4b5=0x0;_0x54c4b5<_0x2e7cf8[_0xa4fd('0x1a')];_0x54c4b5++){_0x513bf8['push'](getTimezoneData(_0x2e7cf8[_0x54c4b5],tmp_voice_queues));}BPromise[_0xa4fd('0x18')](_0x513bf8)[_0xa4fd('0x16')](function(){_0xc2d841({'val':0x1});});})[_0xa4fd('0x5d')](function(_0x587896){logger[_0xa4fd('0x56')](_0x587896[_0xa4fd('0x57')]);_0xc2d841({'val':0x0});});});}function getTimezoneData(_0x2b229c,_0x28abea){return new Promise(function(_0x25e295,_0x555f1e){var _0x572818=shared[_0xa4fd('0x67')];var _0x2cb905=_0x572818[_0x2b229c[_0xa4fd('0x68')]];if(_[_0xa4fd('0x69')](_0x2cb905)){_0x25e295({'ret':0x1});}else{var _0x36dfe6=_0x2cb905[_0xa4fd('0x6a')];var _0x939ded=squel[_0xa4fd('0x26')]()[_0xa4fd('0x40')](_0x28abea)[_0xa4fd('0x6b')]('id',_0x2b229c['id'])[_0xa4fd('0x6b')]('offset',_0x36dfe6)['set'](_0xa4fd('0x68'),_0x2b229c[_0xa4fd('0x68')])[_0xa4fd('0x3d')]();return db[_0xa4fd('0x5a')][_0xa4fd('0x5b')](_0x939ded)[_0xa4fd('0x5c')](function(_0x4b9e47){_0x25e295({'ret':0x1});})[_0xa4fd('0x5d')](function(_0x3218d5){logger[_0xa4fd('0x56')](_0x3218d5['message']);_0x555f1e({'ret':0x1});});}});}function handleTZQuery(_0x11557a){logger[_0xa4fd('0x59')](_0x11557a);return db[_0xa4fd('0x5a')][_0xa4fd('0x5b')](_0x11557a)[_0xa4fd('0x5c')](function(_0x4ca05c){})[_0xa4fd('0x5d')](function(_0x168d7b){logger[_0xa4fd('0x56')](_0x168d7b[_0xa4fd('0x57')]);});}function main(_0x3948b8,_0x463821,_0x28793e,_0x40c3d8){logger[_0xa4fd('0x59')](_0xa4fd('0x6c'),_0x3948b8,JSON[_0xa4fd('0x6d')](_0x463821));process[_0xa4fd('0x6e')]('start');var _0x39600f=_0x463821[_0xa4fd('0x6f')];var _0x492ad4=_[_0xa4fd('0x70')](_0x39600f);var _0x412480=_0x463821['socket_timestamp'];var _0x291b54=path[_0xa4fd('0x11')](config[_0xa4fd('0x71')],_0xa4fd('0x72'),_0x412480+_0xa4fd('0x73'));hasTZ=_[_0xa4fd('0x4e')](_0x39600f)[_0xa4fd('0x74')](_0xa4fd('0x68'));var _0x2f13b2=_[_0xa4fd('0x4e')](_0x39600f)[_0xa4fd('0x11')]();logger[_0xa4fd('0x59')](_0xa4fd('0x75'),_0x2f13b2);db[_0xa4fd('0x76')]['findAll']({'raw':!![],'attributes':['id',_0xa4fd('0x77')]})[_0xa4fd('0x16')](function(_0x58558d){for(var _0x5a0a05=0x0;_0x5a0a05<_0x58558d[_0xa4fd('0x1a')];_0x5a0a05++){if(_0x58558d[_0x5a0a05][_0xa4fd('0x77')]in _0x39600f){contactItemTypes[_0xa4fd('0x17')](_0x58558d[_0x5a0a05]);delete _0x492ad4[_0x58558d[_0x5a0a05][_0xa4fd('0x77')]];hasAdditionalPhones=!![];}for(var _0x1292dd in _0x39600f){if(_0x58558d[_0x5a0a05][_0xa4fd('0x77')]+_0xa4fd('0x78')===_0x1292dd){phoneDescriptions[_0xa4fd('0x17')]({'itemTypeId':_0x58558d[_0x5a0a05]['id'],'description':_0x1292dd});delete _0x492ad4[_0x1292dd];}}}if(hasAdditionalPhones)_0x492ad4[_0xa4fd('0x15')]='';var _0x528ad2=_[_0xa4fd('0x4e')](_0x492ad4)[_0xa4fd('0x11')]();logger['info'](_0xa4fd('0x75'),_0x528ad2);fs['writeFileSync'](_0x291b54,_0x528ad2+'\x0a');Papa[_0xa4fd('0x79')](fs['createReadStream'](_0x3948b8),{'header':!![],'skipEmptyLines':!![],'step':function(_0x4b4857,_0x373d7b){try{for(var _0x4a65c5=0x0,_0x53e3a9=[];_0x4a65c5<_0x4b4857[_0xa4fd('0x7a')][_0xa4fd('0x1a')];_0x4a65c5++){stats[_0xa4fd('0x7b')]+=0x1;if(_0x4b4857['errors'][_0x4a65c5]){handleError(_0x4b4857[_0xa4fd('0x7a')][_0x4a65c5],_0x4b4857[_0xa4fd('0x58')][_0x4a65c5]);}else{var _0x39283c=[];var _0x5689a8=[];var _0x2a6a19={};for(var _0x2a9537 in _0x39600f){let _0x515e8c=contactItemTypes[_0xa4fd('0x7c')](_0x5a315e=>_0x5a315e['name']===_0x2a9537);let _0x24071b=contactItemTypes['find'](_0x2dd2a6=>_0x2dd2a6[_0xa4fd('0x77')]+_0xa4fd('0x78')===_0x2a9537);if(_[_0xa4fd('0x69')](_0x515e8c)&&_[_0xa4fd('0x69')](_0x24071b)){if(_0x39600f[_0xa4fd('0x7d')](_0x2a9537)){if(_0x4b4857['data'][_0x4a65c5][_0x39600f[_0x2a9537]]){var _0x15543e=_['trim'](_0x4b4857['data'][_0x4a65c5][_0x39600f[_0x2a9537]]['replace'](/"/g,'\x27'));switch(_0x2a9537){case _0xa4fd('0x29'):var _0x2f3302=moment(_0x15543e,'YYYY-MM-DD\x20HH:mm:ss',!![]);if(_0x2f3302['isValid']()){_0x53e3a9[_0xa4fd('0x17')]('\x22'+_0x15543e+'\x22');}else{_0x39283c[_0xa4fd('0x17')](_0xa4fd('0x7e'));}break;case _0xa4fd('0x2e'):var _0x1ba47c=parseInt(_0x15543e);_0x15543e=_['isNaN'](_0x1ba47c)||_0x1ba47c<0x0||_0x1ba47c>0x4?_0x40c3d8?0x3:0x2:_0x1ba47c;_0x53e3a9['push']('\x22'+_0x15543e+'\x22');break;case'UserId':var _0x27ea1b=parseInt(_0x15543e);if(_[_0xa4fd('0x7f')](_0x27ea1b)&&_[_0xa4fd('0x74')](_0x28793e,_0x27ea1b)){_0x53e3a9[_0xa4fd('0x17')]('\x22'+_0x27ea1b+'\x22');}else{_0x39283c[_0xa4fd('0x17')]('agent\x20not\x20exists');}break;case _0xa4fd('0x80'):if(isEmail(_0x15543e)){_0x53e3a9[_0xa4fd('0x17')]('\x22'+_0x15543e+'\x22');}else{_0x39283c[_0xa4fd('0x17')](_0xa4fd('0x81'));}break;case'dateOfBirth':var _0x52bcd0=moment(_0x15543e,_0xa4fd('0x82'),!![]);if(_0x52bcd0[_0xa4fd('0x83')]()){_0x53e3a9['push']('\x22'+_0x15543e+'\x22');}else{_0x39283c['push']('dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)');}break;case _0xa4fd('0x68'):var _0xe124db=shared[_0xa4fd('0x67')];var _0x335526=_0xe124db[_0x15543e];if(!_[_0xa4fd('0x69')](_0x335526)){var _0xfafc1b=_0x335526[_0xa4fd('0x6a')];_0x53e3a9[_0xa4fd('0x17')]('\x22'+_0x15543e+'\x22');_0x53e3a9[_0xa4fd('0x17')]('\x22'+_0xfafc1b+'\x22');}break;default:_0x53e3a9[_0xa4fd('0x17')]('\x22'+_0x15543e+'\x22');}}else{switch(_0x2a9537){case _0xa4fd('0x84'):case _0xa4fd('0xf'):_0x39283c[_0xa4fd('0x17')](_0x2a9537+_0xa4fd('0x85'));break;default:_0x53e3a9[_0xa4fd('0x17')]('\x22\x22');}}}}else{var _0x239065='';if(!_[_0xa4fd('0x69')](_0x515e8c)){if(!_0x2a6a19[_0xa4fd('0x7d')](_0x515e8c['id'])){if(!_['isNil'](_0x4b4857[_0xa4fd('0x7a')][_0x4a65c5][_0x39600f[_0x2a9537]])){var _0x15543e=_['trim'](_0x4b4857['data'][_0x4a65c5][_0x39600f[_0x2a9537]][_0xa4fd('0x86')](/"/g,'\x27'));var _0x3a5757=phoneDescriptions['find'](_0x47b122=>_0x47b122[_0xa4fd('0x87')]===_0x515e8c['id']);if(!_['isNil'](_0x3a5757)){var _0x1244e2=_['trim'](_0x4b4857[_0xa4fd('0x7a')][_0x4a65c5][_0x39600f[_0x3a5757[_0xa4fd('0x88')]]][_0xa4fd('0x86')](/"/g,'\x27'));if(!_[_0xa4fd('0x69')](_0x1244e2))_0x15543e=_0x15543e+'§'+_0x1244e2;}if(_0x239065=='')_0x239065=_0x15543e;else _0x239065+='|'+_0x15543e;}_0x5689a8[_0xa4fd('0x17')](_0x515e8c['id']+':'+_0x239065);_0x2a6a19[_0x515e8c['id']]=0x1;}}}}if(hasAdditionalPhones){_0x53e3a9[_0xa4fd('0x17')]('\x22'+_0x5689a8['join'](';')+'\x22');}if(_0x39283c[_0xa4fd('0x1a')]){handleError(_0x4b4857[_0xa4fd('0x7a')][_0x4a65c5],{'code':_0xa4fd('0x89'),'message':_0x39283c[_0xa4fd('0x11')]()});}else{fs[_0xa4fd('0x8a')](_0x291b54,_0x53e3a9['join']()+'\x0a');}_0x53e3a9=[];}if(!(stats[_0xa4fd('0x7b')]%0xc8)){socket[_0xa4fd('0x8b')](_0xa4fd('0x8c')+_0x412480,stats);stats[_0xa4fd('0x58')]=[];}}if(stopped){logger[_0xa4fd('0x59')](_0xa4fd('0x8d'));_0x373d7b[_0xa4fd('0x8e')]();}}catch(_0x528712){handleError(_0x4b4857['data'][_0x4a65c5],{'code':_0xa4fd('0x8f'),'message':_0x528712['message']});logger[_0xa4fd('0x56')]('step',_0x528712[_0xa4fd('0x57')]);}},'complete':function(){try{var _0x219c55=[];var _0x386423=[];var _0x33dbd6=_0xa4fd('0x3a');if(_0x463821[_0xa4fd('0x90')]&&_0x463821['duplicates'][_0xa4fd('0x1a')]){_0x33dbd6=_0xa4fd('0x91')+_0x412480;_0x219c55[_0xa4fd('0x17')]('CREATE\x20TABLE\x20'+_0x33dbd6+_0xa4fd('0x92'));}tmp_campaigns='campaigns_'+_0x412480;tmp_voice_queues=_0xa4fd('0x93')+_0x412480;_0x386423['push'](_0xa4fd('0x94')+tmp_campaigns+_0xa4fd('0x95'));_0x386423['push'](_0xa4fd('0x94')+tmp_voice_queues+_0xa4fd('0x95'));BPromise['each'](_0x386423,handleTZQuery)[_0xa4fd('0x16')](function(_0x22599c){updateTzCampaigns(_0x463821[_0xa4fd('0x2b')])['then'](function(_0x1c2e9c){updateTzVoiceQueues(_0x463821['ListId'])['then'](function(_0x4dabbe){if(hasTZ)_0x528ad2=_0x528ad2['replace'](_0xa4fd('0x68'),_0xa4fd('0x96'));var _0x47fe15=util['format'](_0xa4fd('0x97'),_0x291b54,_0x33dbd6,_0x528ad2,_0x463821['ListId'],_0x463821[_0xa4fd('0x98')]||null,NOW,NOW);if(_['isNil'](_0x39600f[_0xa4fd('0x29')])){_0x47fe15+=',\x20scheduledAt\x20=\x20NOW()';}_0x219c55[_0xa4fd('0x17')](_0x47fe15);if(_0x463821[_0xa4fd('0x90')]&&_0x463821[_0xa4fd('0x90')][_0xa4fd('0x1a')]){_0x219c55['push'](insertCmContact(_0x463821[_0xa4fd('0x2b')],_0x33dbd6,_0x463821['duplicates'],_0x39600f));_0x219c55['push'](_0xa4fd('0x99')+_0x33dbd6+';');}BPromise[_0xa4fd('0x9a')](_0x219c55,handleQuery)[_0xa4fd('0x16')](function(_0x298169){BPromise[_0xa4fd('0x18')]([handleAdditionalPhones()])['then'](function(){_0x219c55=[];for(var _0x4c1434=0x0;_0x4c1434<promisesAdditionalPhones['length'];_0x4c1434++){if(promisesAdditionalPhones[_0x4c1434][_0xa4fd('0xf')]!='§'){_0x219c55[_0xa4fd('0x17')](createAdditionalPhone(promisesAdditionalPhones[_0x4c1434][_0xa4fd('0x9b')],promisesAdditionalPhones[_0x4c1434][_0xa4fd('0x9c')],promisesAdditionalPhones[_0x4c1434][_0xa4fd('0xf')],promisesAdditionalPhones[_0x4c1434]['orderBy']));}}BPromise[_0xa4fd('0x18')](_0x219c55)[_0xa4fd('0x16')](function(){_0x219c55=[];if(hasTZ){_0x219c55[_0xa4fd('0x17')](insertTzCmHopper(_0x463821[_0xa4fd('0x2b')],_0xa4fd('0x9d'),_0xa4fd('0x65'),_0xa4fd('0x9e'),_0x40c3d8,tmp_voice_queues));_0x219c55['push'](insertTzCmHopperBlack(_0x463821['ListId'],_0xa4fd('0x9f'),_0xa4fd('0x65'),_0xa4fd('0x9e')));_0x219c55[_0xa4fd('0x17')](insertTzCmHopper(_0x463821['ListId'],_0xa4fd('0x60'),'campaigns','CampaignId',_0x40c3d8,tmp_campaigns));_0x219c55['push'](insertTzCmHopperBlack(_0x463821[_0xa4fd('0x2b')],_0xa4fd('0xa0'),_0xa4fd('0x5f'),_0xa4fd('0xa1')));_0x219c55['push'](insertCmHopperAdditionalPhones(_0x463821[_0xa4fd('0x2b')]));}else{_0x219c55[_0xa4fd('0x17')](insertCmHopper(_0x463821[_0xa4fd('0x2b')],_0xa4fd('0x9d'),_0xa4fd('0x65'),_0xa4fd('0x9e'),_0x40c3d8));_0x219c55[_0xa4fd('0x17')](insertCmHopperBlack(_0x463821[_0xa4fd('0x2b')],_0xa4fd('0x9f'),_0xa4fd('0x65'),_0xa4fd('0x9e')));_0x219c55[_0xa4fd('0x17')](insertCmHopper(_0x463821['ListId'],_0xa4fd('0x60'),_0xa4fd('0x5f'),_0xa4fd('0xa1'),_0x40c3d8));_0x219c55[_0xa4fd('0x17')](insertCmHopperBlack(_0x463821['ListId'],_0xa4fd('0xa0'),_0xa4fd('0x5f'),_0xa4fd('0xa1')));_0x219c55[_0xa4fd('0x17')](insertCmHopperAdditionalPhones(_0x463821[_0xa4fd('0x2b')]));}_0x219c55[_0xa4fd('0x17')]('DROP\x20TABLE\x20'+tmp_campaigns+';');_0x219c55['push']('DROP\x20TABLE\x20'+tmp_voice_queues+';');BPromise[_0xa4fd('0x9a')](_0x219c55,handleQuery)[_0xa4fd('0x16')](function(_0x1e2eeb){stats[_0xa4fd('0xa2')]=!![];stats[_0xa4fd('0xa3')]=_0x463821[_0xa4fd('0x90')]&&_0x463821[_0xa4fd('0x90')][_0xa4fd('0x1a')]?results[0x2][_0xa4fd('0xa3')]:results[0x0][_0xa4fd('0xa3')];socket[_0xa4fd('0x8b')](_0xa4fd('0x8c')+_0x412480,stats);fs[_0xa4fd('0xa4')](_0x3948b8);fs[_0xa4fd('0xa4')](_0x291b54);process['exit'](0x0);})[_0xa4fd('0x5d')](function(_0x4d3773){logger['error'](_0x4d3773['message']);process[_0xa4fd('0xa5')](0x1);});});});})['catch'](function(_0x10122b){logger[_0xa4fd('0x56')](_0x10122b['message']);process['exit'](0x1);});});});});}catch(_0x51e4ca){logger[_0xa4fd('0x56')](_0xa4fd('0xa6'),_0x51e4ca[_0xa4fd('0x57')]);process[_0xa4fd('0xa5')](0x1);}},'error':function(_0xea037d,_0x5a7a54,_0x37472f,_0x1d6b8d){throw new Error(_0x1d6b8d);}});});}function validate(){if(process['argv']&&process['argv'][_0xa4fd('0x1a')]<0x4){throw new Error(_0xa4fd('0xa7'));}var _0x314c3a=path[_0xa4fd('0x11')](config[_0xa4fd('0x71')],_0xa4fd('0x72'),process[_0xa4fd('0xa8')][0x2]);if(!fs['existsSync'](_0x314c3a)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x404f63={};try{_0x404f63=JSON[_0xa4fd('0x79')](process[_0xa4fd('0xa8')][0x3]);if(!_0x404f63[_0xa4fd('0x6f')]){throw new Error(_0xa4fd('0xa9'));}if(!_0x404f63[_0xa4fd('0x6f')][_0xa4fd('0xf')]){throw new Error(_0xa4fd('0xaa'));}if(!_0x404f63[_0xa4fd('0x6f')][_0xa4fd('0x84')]){throw new Error(_0xa4fd('0xab'));}var _0x59e2c1=0x0;if(_0x404f63[_0xa4fd('0x6f')]['UserId']){_0x59e2c1=0x1;}if(!_0x404f63['ListId']){throw new Error(_0xa4fd('0xac'));}}catch(_0x4c96e6){throw new Error(_0xa4fd('0xad'));}var _0x402839=[];try{_0x402839=_[_0xa4fd('0xae')](JSON[_0xa4fd('0x79')](process[_0xa4fd('0xa8')][0x4]),'id');}catch(_0x3311f9){logger[_0xa4fd('0x59')](_0xa4fd('0xaf'));}main(_0x314c3a,_0x404f63,_0x402839,_0x59e2c1);}validate();process['on'](_0xa4fd('0xb0'),handleStop);process['on'](_0xa4fd('0xb1'),handleUncaughtException);
\ No newline at end of file
+var _0x1c8a=['cm_contacts.phone\x20NOT\x20IN\x20(?)','cm_hopper','\x22always\x22','cm_contacts.ListId','cm_hopper_black','.CmListId','.id\x20=\x20','cm_contacts.createdAt\x20=\x20?','toString','date_add(cm_contacts.scheduledat,interval\x20','.offset-cm_contacts.utcOffset\x20minute)','cm_contacts.UserId','\x22onlyIfOpen\x22','ListId\x20=\x20?','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt','cm_hopper_additional_phones','CmHopperId','OrderBy','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','concat','keys',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','group','error','message','exit','code','info','sequelize','query','catch','campaigns.id','campaigns.dialTimezone','campaigns','campaigns_has_cm_lists','campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId','campaigns_has_cm_lists.CmListId=','spread','voice_queues.id','voice_queues','voice_queues_has_cm_lists','voice_queues_has_cm_lists.CmListId=','timezones','utcOffset','offset','dialTimezone','stringify','send','socket_timestamp','root','.csv','includes','header','ContactItemType','name','_description','writeFileSync','parse','data','rows','errors','find','hasOwnProperty','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','email','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','trim','SystemRow','appendFileSync','emit','Abort\x20parser','abort','SystemError','step','duplicates','cm_contacts_','CREATE\x20TABLE\x20','voice_queues_','(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','CompanyId',',\x20scheduledAt\x20=\x20NOW()','each','contactId','contactTypeId','orderBy','VoiceQueueId','voice_queues_has_cm_blacklists','CampaignId','campaigns_has_cm_blacklists','DROP\x20TABLE\x20','affectedRows','contact:import:','unlink','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','server/files/tmp','existsSync','file\x20doesn\x27t\x20exists','binding','binding\x20doesn\x27t\x20exists','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','path','lodash','papaparse','util','bluebird','moment','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/environment/shared','../../../config/logger','import','redis','defaults','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','field','phone','from','join','\x20=\x20','where','.dialCheckDuplicateType\x20IN\x20(','CmContact','findAll','AdditionalPhones','then','push','all','split','length','isNil','CmContactHasItem','findOne','update','updated','PHONE','inserted','cm_contacts.phone','cm_contacts.id','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','insert','into','fromQuery','scheduledat','ContactId','ListId','createdAt','updatedAt','priority','UserId','recallme','select','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId\x20=\x20?'];(function(_0x473e8c,_0x263b7a){var _0x130544=function(_0x740a14){while(--_0x740a14){_0x473e8c['push'](_0x473e8c['shift']());}};_0x130544(++_0x263b7a);}(_0x1c8a,0x1f0));var _0xa1c8=function(_0x44b6a1,_0x4215d8){_0x44b6a1=_0x44b6a1-0x0;var _0x45e4b8=_0x1c8a[_0x44b6a1];return _0x45e4b8;};'use strict';var fs=require('fs');var path=require(_0xa1c8('0x0'));var _=require(_0xa1c8('0x1'));var Papa=require(_0xa1c8('0x2'));var util=require(_0xa1c8('0x3'));var BPromise=require(_0xa1c8('0x4'));var moment=require(_0xa1c8('0x5'));var squel=require(_0xa1c8('0x6'));var Redis=require(_0xa1c8('0x7'));var db=require(_0xa1c8('0x8'))['db'];var config=require(_0xa1c8('0x9'));var shared=require(_0xa1c8('0xa'));var logger=require(_0xa1c8('0xb'))(_0xa1c8('0xc'));config[_0xa1c8('0xd')]=_[_0xa1c8('0xe')](config['redis'],{'host':_0xa1c8('0xf'),'port':0x18eb});var socket=require(_0xa1c8('0x10'))(new Redis(config[_0xa1c8('0xd')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()[_0xa1c8('0x11')](_0xa1c8('0x12'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()[_0xa1c8('0x11')]('YYYY-MM-DD\x20HH:mm:ss');function isEmail(_0x3c49bc){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'](_0x3c49bc);}function selectNotIn(_0x49a3b5,_0x2e4b9c,_0x5ab7c0,_0x59b317,_0x1a86e7){return squel['select']()[_0xa1c8('0x13')](_0xa1c8('0x14'))[_0xa1c8('0x15')](_0x59b317)[_0xa1c8('0x16')](_0x2e4b9c,null,_0x2e4b9c+'.id\x20=\x20'+_0x59b317+'.'+_0x5ab7c0)['where'](_0x59b317+'.'+_0x5ab7c0+_0xa1c8('0x17')+_0x49a3b5+'.'+_0x5ab7c0)[_0xa1c8('0x18')](_0x2e4b9c+_0xa1c8('0x19')+_0x1a86e7[_0xa1c8('0x16')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x35e692,_0x31d319){promisesAdditionalPhones=[];return db[_0xa1c8('0x1a')][_0xa1c8('0x1b')]({'raw':!![],'attributes':['id',_0xa1c8('0x1c')],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})[_0xa1c8('0x1d')](function(_0x58e7c6){if(_0x58e7c6!==null){var _0x427dca=[];for(var _0x2ebabd=0x0;_0x2ebabd<_0x58e7c6['length'];_0x2ebabd++){var _0x7dcbbd=_0x58e7c6[_0x2ebabd];_0x427dca[_0xa1c8('0x1e')](insertAdditionalPhones(_0x7dcbbd));}}Promise[_0xa1c8('0x1f')](_0x427dca)[_0xa1c8('0x1d')](function(){_0x35e692({'val':0x1});});});});}function insertAdditionalPhones(_0x5a5a67){return new Promise(function(_0x5d6584,_0x34c03c){var _0x21e921=_0x5a5a67[_0xa1c8('0x1c')];var _0x414db3=_0x21e921[_0xa1c8('0x20')](';');var _0x2fcaab=[];orderBy=0x0;for(var _0x366632=0x0;_0x366632<_0x414db3[_0xa1c8('0x21')];_0x366632++){_0x2fcaab[_0xa1c8('0x1e')](splitAdditionalPhone(_0x5a5a67['id'],_0x414db3[_0x366632]));}Promise[_0xa1c8('0x1f')](_0x2fcaab)[_0xa1c8('0x1d')](function(){_0x5d6584({'val':_0x414db3['length']});});});}function splitAdditionalPhone(_0x255993,_0x56f340){return new Promise(function(_0x33b3f4,_0xc38eba){var _0x3fed07=_0x56f340[_0xa1c8('0x20')](':');var _0x26f3b7=_0x3fed07[0x0];var _0x2411ef=_0x3fed07[0x1];if(!_[_0xa1c8('0x22')](_0x2411ef)){var _0x248fbf=_0x2411ef[_0xa1c8('0x20')]('|');var _0x53899d=[];for(var _0x4c52a5=0x0;_0x4c52a5<_0x248fbf['length'];_0x4c52a5++){if(_0x248fbf[_0x4c52a5]!==''){var _0xcf8de2=_['filter'](promisesAdditionalPhones,{'contactId':_0x255993,'phone':_0x248fbf[_0x4c52a5]});if(_0xcf8de2[_0xa1c8('0x21')]==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x255993,'contactTypeId':_0x26f3b7,'phone':_0x248fbf[_0x4c52a5],'orderBy':orderBy});}}}_0x33b3f4({'ok':0x1});}else _0x33b3f4({'res':0x0});});}function createAdditionalPhone(_0x4b2099,_0x1e9aa4,_0x55edbc,_0x2d12a3){var _0x1ff907='';var _0x35dedb='';var _0x3d5c80=_0x55edbc[_0xa1c8('0x20')]('§');_0x1ff907=_0x3d5c80[0x0];if(_0x3d5c80['length']==0x2)_0x35dedb=_0x3d5c80[0x1];return new Promise(function(_0x31f4d4,_0x54ba78){return db[_0xa1c8('0x23')][_0xa1c8('0x24')]({'where':{'CmContactId':_0x4b2099,'item':_0x1ff907}})[_0xa1c8('0x1d')](function(_0x1d585d){if(_0x1d585d){return db[_0xa1c8('0x23')][_0xa1c8('0x25')]({'ItemTypeId':_0x1e9aa4,'description':_0x35dedb,'OrderBy':_0x2d12a3},{'where':{'CmContactId':_0x4b2099,'item':_0x1ff907}})[_0xa1c8('0x1d')](function(_0x380551){_0x31f4d4({'res':_0xa1c8('0x26')});});}else{return db[_0xa1c8('0x23')]['create']({'CmContactId':_0x4b2099,'item':_0x1ff907,'description':_0x35dedb,'ItemTypeId':_0x1e9aa4,'OrderBy':_0x2d12a3,'ItemClass':_0xa1c8('0x27')})[_0xa1c8('0x1d')](function(_0xc0518b){_0x31f4d4({'res':_0xa1c8('0x28')});});}});});}function insertCmHopper(_0x50c97b,_0x4917ae,_0x2079a1,_0x12fdae,_0x47aa31){var _0x19b953=[_0xa1c8('0x29'),'cm_contacts.scheduledat',_0xa1c8('0x2a'),'cm_contacts.ListId',_0x4917ae+'.'+_0x12fdae,_0xa1c8('0x2b'),_0xa1c8('0x2c'),_0xa1c8('0x2d'),'cm_contacts.UserId','\x22'+_0x47aa31+'\x22'];return squel[_0xa1c8('0x2e')]()[_0xa1c8('0x2f')]('cm_hopper')[_0xa1c8('0x30')]([_0xa1c8('0x14'),_0xa1c8('0x31'),_0xa1c8('0x32'),_0xa1c8('0x33'),_0x12fdae,_0xa1c8('0x34'),_0xa1c8('0x35'),_0xa1c8('0x36'),_0xa1c8('0x37'),_0xa1c8('0x38')],squel[_0xa1c8('0x39')]()[_0xa1c8('0x3a')](_0x19b953)[_0xa1c8('0x15')](_0x4917ae)[_0xa1c8('0x16')](_0xa1c8('0x3b'),null,_0xa1c8('0x3c')+_0x4917ae+'.CmListId')[_0xa1c8('0x16')](_0x2079a1,null,_0x2079a1+'.id\x20=\x20'+_0x4917ae+'.'+_0x12fdae)['where'](_0x4917ae+_0xa1c8('0x3d'),_0x50c97b)[_0xa1c8('0x18')]('cm_contacts.createdAt\x20=\x20?',NOW)['where'](_0xa1c8('0x3e'),selectNotIn(_0x4917ae,_0x2079a1,_0x12fdae,_0xa1c8('0x3f'),[_0xa1c8('0x40'),'\x22onlyIfOpen\x22']))['where'](_0xa1c8('0x3e'),selectNotIn(_0x4917ae,_0x2079a1,_0x12fdae,'cm_hopper',[_0xa1c8('0x40')])))['toString']();}function insertCmHopperBlack(_0x2e1c71,_0xb447fe,_0x229f0a,_0x156776){var _0x528121=[_0xa1c8('0x29'),_0xa1c8('0x2a'),_0xa1c8('0x41'),_0xb447fe+'.'+_0x156776,_0xa1c8('0x2b'),'cm_contacts.updatedAt'];return squel[_0xa1c8('0x2e')]()[_0xa1c8('0x2f')](_0xa1c8('0x42'))[_0xa1c8('0x30')]([_0xa1c8('0x14'),_0xa1c8('0x32'),_0xa1c8('0x33'),_0x156776,'createdAt','updatedAt'],squel[_0xa1c8('0x39')]()['fields'](_0x528121)[_0xa1c8('0x15')](_0xb447fe)[_0xa1c8('0x16')]('cm_contacts',null,_0xa1c8('0x3c')+_0xb447fe+_0xa1c8('0x43'))[_0xa1c8('0x16')](_0x229f0a,null,_0x229f0a+_0xa1c8('0x44')+_0xb447fe+'.'+_0x156776)[_0xa1c8('0x18')](_0xb447fe+_0xa1c8('0x3d'),_0x2e1c71)[_0xa1c8('0x18')](_0xa1c8('0x45'),NOW)[_0xa1c8('0x18')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0xa1c8('0x39')]()[_0xa1c8('0x13')](_0xa1c8('0x14'))[_0xa1c8('0x15')](_0xa1c8('0x42'))[_0xa1c8('0x18')]('ListId\x20=\x20?',_0x2e1c71)[_0xa1c8('0x18')](_0x156776+_0xa1c8('0x17')+_0xb447fe+'.'+_0x156776)))[_0xa1c8('0x46')]();}function insertTzCmHopper(_0x382f0e,_0x10da05,_0x4466ff,_0x1e0d14,_0x212729,_0x370e31){var _0x41de40=[_0xa1c8('0x29'),_0xa1c8('0x47')+_0x370e31+_0xa1c8('0x48'),_0xa1c8('0x2a'),'cm_contacts.ListId',_0x10da05+'.'+_0x1e0d14,_0xa1c8('0x2b'),_0xa1c8('0x2c'),_0xa1c8('0x2d'),_0xa1c8('0x49'),'\x22'+_0x212729+'\x22'];var _0x12fe6c=squel['insert']()[_0xa1c8('0x2f')](_0xa1c8('0x3f'))[_0xa1c8('0x30')](['phone',_0xa1c8('0x31'),_0xa1c8('0x32'),_0xa1c8('0x33'),_0x1e0d14,_0xa1c8('0x34'),'updatedAt',_0xa1c8('0x36'),_0xa1c8('0x37'),_0xa1c8('0x38')],squel[_0xa1c8('0x39')]()[_0xa1c8('0x3a')](_0x41de40)['from'](_0x10da05)[_0xa1c8('0x16')](_0xa1c8('0x3b'),null,_0xa1c8('0x3c')+_0x10da05+_0xa1c8('0x43'))['join'](_0x4466ff,null,_0x4466ff+_0xa1c8('0x44')+_0x10da05+'.'+_0x1e0d14)[_0xa1c8('0x16')](_0x370e31,null,_0x370e31+_0xa1c8('0x44')+_0x10da05+'.'+_0x1e0d14)[_0xa1c8('0x18')](_0x10da05+_0xa1c8('0x3d'),_0x382f0e)[_0xa1c8('0x18')](_0xa1c8('0x45'),NOW)[_0xa1c8('0x18')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x10da05,_0x4466ff,_0x1e0d14,_0xa1c8('0x3f'),[_0xa1c8('0x40'),_0xa1c8('0x4a')]))['where'](_0xa1c8('0x3e'),selectNotIn(_0x10da05,_0x4466ff,_0x1e0d14,_0xa1c8('0x3f'),[_0xa1c8('0x40')])))[_0xa1c8('0x46')]();return _0x12fe6c;}function insertTzCmHopperBlack(_0x3e8095,_0x2942f9,_0x2058e3,_0x33ebd9){var _0x25403e=[_0xa1c8('0x29'),_0xa1c8('0x2a'),_0xa1c8('0x41'),_0x2942f9+'.'+_0x33ebd9,_0xa1c8('0x2b'),'cm_contacts.updatedAt'];return squel[_0xa1c8('0x2e')]()[_0xa1c8('0x2f')](_0xa1c8('0x42'))[_0xa1c8('0x30')]([_0xa1c8('0x14'),'ContactId',_0xa1c8('0x33'),_0x33ebd9,_0xa1c8('0x34'),_0xa1c8('0x35')],squel[_0xa1c8('0x39')]()[_0xa1c8('0x3a')](_0x25403e)[_0xa1c8('0x15')](_0x2942f9)[_0xa1c8('0x16')](_0xa1c8('0x3b'),null,'cm_contacts.ListId\x20=\x20'+_0x2942f9+_0xa1c8('0x43'))[_0xa1c8('0x16')](_0x2058e3,null,_0x2058e3+_0xa1c8('0x44')+_0x2942f9+'.'+_0x33ebd9)[_0xa1c8('0x18')](_0x2942f9+_0xa1c8('0x3d'),_0x3e8095)['where'](_0xa1c8('0x45'),NOW)['where'](_0xa1c8('0x3e'),squel[_0xa1c8('0x39')]()[_0xa1c8('0x13')](_0xa1c8('0x14'))[_0xa1c8('0x15')](_0xa1c8('0x42'))[_0xa1c8('0x18')](_0xa1c8('0x4b'),_0x3e8095)[_0xa1c8('0x18')](_0x33ebd9+_0xa1c8('0x17')+_0x2942f9+'.'+_0x33ebd9)))[_0xa1c8('0x46')]();}function insertCmHopperAdditionalPhones(_0x1f46ae){var _0x497f2f=[_0xa1c8('0x4c'),_0xa1c8('0x4d'),_0xa1c8('0x4e'),_0xa1c8('0x4f'),_0xa1c8('0x50')];return squel[_0xa1c8('0x2e')]()['into'](_0xa1c8('0x51'))['fromQuery']([_0xa1c8('0x52'),'phone',_0xa1c8('0x53'),_0xa1c8('0x34'),_0xa1c8('0x35')],squel['select']()['fields'](_0x497f2f)['from'](_0xa1c8('0x3f'))[_0xa1c8('0x16')]('cm_contacts',null,_0xa1c8('0x54'))[_0xa1c8('0x16')](_0xa1c8('0x55'),null,'cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId')[_0xa1c8('0x18')]('cm_hopper.ListId\x20=\x20?',_0x1f46ae)[_0xa1c8('0x18')](_0xa1c8('0x45'),NOW))['toString']();}function insertCmContact(_0x6b9803,_0x1608a9,_0x5976a,_0x27e841){var _0x132fb5=_[_0xa1c8('0x56')](_[_0xa1c8('0x57')](_0x27e841),[_0xa1c8('0x33'),'CompanyId','createdAt',_0xa1c8('0x35')]);return squel[_0xa1c8('0x2e')]()['into'](_0xa1c8('0x3b'))[_0xa1c8('0x30')](_0x132fb5,squel[_0xa1c8('0x39')]()[_0xa1c8('0x3a')](_0x132fb5)[_0xa1c8('0x15')](_0x1608a9)[_0xa1c8('0x18')]('('+_0x5976a[_0xa1c8('0x16')](',')+_0xa1c8('0x58'),squel['select']()['fields'](_0x5976a)[_0xa1c8('0x15')](_0xa1c8('0x3b'))[_0xa1c8('0x18')]('ListId\x20=\x20?',_0x6b9803)[_0xa1c8('0x18')](_0xa1c8('0x59')))[_0xa1c8('0x18')](_0xa1c8('0x5a'),squel['select']()[_0xa1c8('0x13')](_0xa1c8('0x5b'),'min_id')[_0xa1c8('0x15')](_0x1608a9)[_0xa1c8('0x5c')](_0x5976a[_0xa1c8('0x16')](','))))['toString']();}function handleStop(){logger['info']('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x30f897){logger[_0xa1c8('0x5d')](_0x30f897[_0xa1c8('0x5e')]);process[_0xa1c8('0x5f')](0x1);}function handleError(_0x21885c,_0x1b6374){stats['errors']['push']({'name':_0x1b6374[_0xa1c8('0x60')],'message':_0x1b6374[_0xa1c8('0x5e')],'row':_0x21885c});}function handleQuery(_0x549044){logger[_0xa1c8('0x61')](_0x549044);return db[_0xa1c8('0x62')][_0xa1c8('0x63')](_0x549044)['spread'](function(_0x53f3b7){results[_0xa1c8('0x1e')](_0x53f3b7);})[_0xa1c8('0x64')](function(_0x493ac1){logger['error'](_0x493ac1[_0xa1c8('0x5e')]);});}function updateTzCampaigns(_0x444d7a){return new Promise(function(_0x5ca0d1,_0x44e561){var _0x313f37=squel[_0xa1c8('0x39')]()['fields']([_0xa1c8('0x65'),_0xa1c8('0x66')])[_0xa1c8('0x15')](_0xa1c8('0x67'))['join'](_0xa1c8('0x68'),null,_0xa1c8('0x69'))[_0xa1c8('0x18')](_0xa1c8('0x6a')+_0x444d7a);db['sequelize'][_0xa1c8('0x63')](_0x313f37['toString']())[_0xa1c8('0x6b')](function(_0x47602d){var _0xadde24=[];for(var _0x5bfc1b=0x0;_0x5bfc1b<_0x47602d[_0xa1c8('0x21')];_0x5bfc1b++){_0xadde24['push'](getTimezoneData(_0x47602d[_0x5bfc1b],tmp_campaigns));}BPromise[_0xa1c8('0x1f')](_0xadde24)[_0xa1c8('0x1d')](function(){_0x5ca0d1({'val':0x1});});})['catch'](function(_0x397c48){logger[_0xa1c8('0x5d')](_0x397c48[_0xa1c8('0x5e')]);_0x5ca0d1({'val':0x0});});});}function updateTzVoiceQueues(_0x1eb93b){return new Promise(function(_0x5e53dd,_0x20060c){var _0x22cb99=squel[_0xa1c8('0x39')]()[_0xa1c8('0x3a')]([_0xa1c8('0x6c'),'voice_queues.dialTimezone'])[_0xa1c8('0x15')](_0xa1c8('0x6d'))[_0xa1c8('0x16')](_0xa1c8('0x6e'),null,'voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId')['where'](_0xa1c8('0x6f')+_0x1eb93b);db[_0xa1c8('0x62')]['query'](_0x22cb99[_0xa1c8('0x46')]())['spread'](function(_0x4d9cfe){var _0x896f34=[];for(var _0x3db98b=0x0;_0x3db98b<_0x4d9cfe[_0xa1c8('0x21')];_0x3db98b++){_0x896f34[_0xa1c8('0x1e')](getTimezoneData(_0x4d9cfe[_0x3db98b],tmp_voice_queues));}BPromise[_0xa1c8('0x1f')](_0x896f34)[_0xa1c8('0x1d')](function(){_0x5e53dd({'val':0x1});});})[_0xa1c8('0x64')](function(_0x1a7fe6){logger[_0xa1c8('0x5d')](_0x1a7fe6[_0xa1c8('0x5e')]);_0x5e53dd({'val':0x0});});});}function getTimezoneData(_0x501dc1,_0x53c829){return new Promise(function(_0xb038bc,_0x3caa2d){var _0x38c4f7=shared[_0xa1c8('0x70')];var _0x121377=_0x38c4f7[_0x501dc1['dialTimezone']];if(_['isNil'](_0x121377)){_0xb038bc({'ret':0x1});}else{var _0x539878=_0x121377[_0xa1c8('0x71')];var _0x5bb34e=squel[_0xa1c8('0x2e')]()['into'](_0x53c829)['set']('id',_0x501dc1['id'])['set'](_0xa1c8('0x72'),_0x539878)['set'](_0xa1c8('0x73'),_0x501dc1[_0xa1c8('0x73')])[_0xa1c8('0x46')]();return db['sequelize'][_0xa1c8('0x63')](_0x5bb34e)['spread'](function(_0x957c52){_0xb038bc({'ret':0x1});})[_0xa1c8('0x64')](function(_0x21837a){logger[_0xa1c8('0x5d')](_0x21837a[_0xa1c8('0x5e')]);_0x3caa2d({'ret':0x1});});}});}function handleTZQuery(_0xcbf324){logger[_0xa1c8('0x61')](_0xcbf324);return db[_0xa1c8('0x62')]['query'](_0xcbf324)[_0xa1c8('0x6b')](function(_0x14ab67){})['catch'](function(_0x1544a7){logger[_0xa1c8('0x5d')](_0x1544a7[_0xa1c8('0x5e')]);});}function main(_0x297c66,_0x25b91c,_0xd752dd,_0x302bae){logger[_0xa1c8('0x61')]('main',_0x297c66,JSON[_0xa1c8('0x74')](_0x25b91c));process[_0xa1c8('0x75')]('start');var _0x4da328=_0x25b91c['binding'];var _0x4f594c=_['clone'](_0x4da328);var _0x1ce747=_0x25b91c[_0xa1c8('0x76')];var _0x159fc7=path[_0xa1c8('0x16')](config[_0xa1c8('0x77')],'server/files/tmp',_0x1ce747+_0xa1c8('0x78'));hasTZ=_['keys'](_0x4da328)[_0xa1c8('0x79')]('dialTimezone');var _0x986da2=_[_0xa1c8('0x57')](_0x4da328)[_0xa1c8('0x16')]();logger[_0xa1c8('0x61')](_0xa1c8('0x7a'),_0x986da2);db[_0xa1c8('0x7b')][_0xa1c8('0x1b')]({'raw':!![],'attributes':['id',_0xa1c8('0x7c')]})[_0xa1c8('0x1d')](function(_0x4edfb1){for(var _0x4acc5d=0x0;_0x4acc5d<_0x4edfb1[_0xa1c8('0x21')];_0x4acc5d++){if(_0x4edfb1[_0x4acc5d][_0xa1c8('0x7c')]in _0x4da328){contactItemTypes[_0xa1c8('0x1e')](_0x4edfb1[_0x4acc5d]);delete _0x4f594c[_0x4edfb1[_0x4acc5d][_0xa1c8('0x7c')]];hasAdditionalPhones=!![];}for(var _0x379507 in _0x4da328){if(_0x4edfb1[_0x4acc5d]['name']+_0xa1c8('0x7d')===_0x379507){phoneDescriptions[_0xa1c8('0x1e')]({'itemTypeId':_0x4edfb1[_0x4acc5d]['id'],'description':_0x379507});delete _0x4f594c[_0x379507];}}}if(hasAdditionalPhones)_0x4f594c['AdditionalPhones']='';var _0x41760b=_['keys'](_0x4f594c)['join']();logger[_0xa1c8('0x61')](_0xa1c8('0x7a'),_0x41760b);fs[_0xa1c8('0x7e')](_0x159fc7,_0x41760b+'\x0a');Papa[_0xa1c8('0x7f')](fs['createReadStream'](_0x297c66),{'header':!![],'skipEmptyLines':!![],'step':function(_0x2dc171,_0x335517){try{for(var _0x3cdcda=0x0,_0x49132a=[];_0x3cdcda<_0x2dc171[_0xa1c8('0x80')][_0xa1c8('0x21')];_0x3cdcda++){stats[_0xa1c8('0x81')]+=0x1;if(_0x2dc171[_0xa1c8('0x82')][_0x3cdcda]){handleError(_0x2dc171['data'][_0x3cdcda],_0x2dc171[_0xa1c8('0x82')][_0x3cdcda]);}else{var _0x2e12b9=[];var _0x4e55db=[];var _0x5a2454={};for(var _0x13bc0e in _0x4da328){let _0x5e24b5=contactItemTypes[_0xa1c8('0x83')](_0x5e6352=>_0x5e6352['name']===_0x13bc0e);let _0x3fa0b3=contactItemTypes[_0xa1c8('0x83')](_0x9c2fed=>_0x9c2fed[_0xa1c8('0x7c')]+_0xa1c8('0x7d')===_0x13bc0e);if(_[_0xa1c8('0x22')](_0x5e24b5)&&_[_0xa1c8('0x22')](_0x3fa0b3)){if(_0x4da328[_0xa1c8('0x84')](_0x13bc0e)){if(_0x2dc171[_0xa1c8('0x80')][_0x3cdcda][_0x4da328[_0x13bc0e]]){var _0x2ec28c=_['trim'](_0x2dc171['data'][_0x3cdcda][_0x4da328[_0x13bc0e]][_0xa1c8('0x85')](/"/g,'\x27'));switch(_0x13bc0e){case'scheduledat':var _0x2591ec=moment(_0x2ec28c,_0xa1c8('0x12'),!![]);if(_0x2591ec[_0xa1c8('0x86')]()){_0x49132a['push']('\x22'+_0x2ec28c+'\x22');}else{_0x2e12b9[_0xa1c8('0x1e')](_0xa1c8('0x87'));}break;case _0xa1c8('0x36'):var _0x250889=parseInt(_0x2ec28c);_0x2ec28c=_[_0xa1c8('0x88')](_0x250889)||_0x250889<0x0||_0x250889>0x4?_0x302bae?0x3:0x2:_0x250889;_0x49132a['push']('\x22'+_0x2ec28c+'\x22');break;case _0xa1c8('0x37'):var _0x32a764=parseInt(_0x2ec28c);if(_['isNumber'](_0x32a764)&&_['includes'](_0xd752dd,_0x32a764)){_0x49132a[_0xa1c8('0x1e')]('\x22'+_0x32a764+'\x22');}else{_0x2e12b9['push']('agent\x20not\x20exists');}break;case _0xa1c8('0x89'):if(isEmail(_0x2ec28c)){_0x49132a[_0xa1c8('0x1e')]('\x22'+_0x2ec28c+'\x22');}else{_0x2e12b9[_0xa1c8('0x1e')](_0xa1c8('0x8a'));}break;case _0xa1c8('0x8b'):var _0x4641c1=moment(_0x2ec28c,_0xa1c8('0x8c'),!![]);if(_0x4641c1[_0xa1c8('0x86')]()){_0x49132a[_0xa1c8('0x1e')]('\x22'+_0x2ec28c+'\x22');}else{_0x2e12b9[_0xa1c8('0x1e')](_0xa1c8('0x8d'));}break;case _0xa1c8('0x73'):var _0xc6574d=shared[_0xa1c8('0x70')];var _0x9ed2b7=_0xc6574d[_0x2ec28c];if(!_[_0xa1c8('0x22')](_0x9ed2b7)){var _0x291235=_0x9ed2b7[_0xa1c8('0x71')];_0x49132a[_0xa1c8('0x1e')]('\x22'+_0x2ec28c+'\x22');_0x49132a[_0xa1c8('0x1e')]('\x22'+_0x291235+'\x22');}break;default:_0x49132a[_0xa1c8('0x1e')]('\x22'+_0x2ec28c+'\x22');}}else{switch(_0x13bc0e){case _0xa1c8('0x8e'):case _0xa1c8('0x14'):_0x2e12b9[_0xa1c8('0x1e')](_0x13bc0e+_0xa1c8('0x8f'));break;default:_0x49132a[_0xa1c8('0x1e')]('\x22\x22');}}}}else{var _0x559f88='';if(!_[_0xa1c8('0x22')](_0x5e24b5)){if(!_0x5a2454[_0xa1c8('0x84')](_0x5e24b5['id'])){if(!_[_0xa1c8('0x22')](_0x2dc171[_0xa1c8('0x80')][_0x3cdcda][_0x4da328[_0x13bc0e]])){var _0x2ec28c=_[_0xa1c8('0x90')](_0x2dc171[_0xa1c8('0x80')][_0x3cdcda][_0x4da328[_0x13bc0e]][_0xa1c8('0x85')](/"/g,'\x27'));var _0x4c90e0=phoneDescriptions['find'](_0x2b5c7a=>_0x2b5c7a['itemTypeId']===_0x5e24b5['id']);if(!_['isNil'](_0x4c90e0)){var _0x25644e=_[_0xa1c8('0x90')](_0x2dc171[_0xa1c8('0x80')][_0x3cdcda][_0x4da328[_0x4c90e0['description']]]['replace'](/"/g,'\x27'));if(!_[_0xa1c8('0x22')](_0x25644e))_0x2ec28c=_0x2ec28c+'§'+_0x25644e;}if(_0x559f88=='')_0x559f88=_0x2ec28c;else _0x559f88+='|'+_0x2ec28c;}_0x4e55db[_0xa1c8('0x1e')](_0x5e24b5['id']+':'+_0x559f88);_0x5a2454[_0x5e24b5['id']]=0x1;}}}}if(hasAdditionalPhones){_0x49132a[_0xa1c8('0x1e')]('\x22'+_0x4e55db[_0xa1c8('0x16')](';')+'\x22');}if(_0x2e12b9['length']){handleError(_0x2dc171[_0xa1c8('0x80')][_0x3cdcda],{'code':_0xa1c8('0x91'),'message':_0x2e12b9[_0xa1c8('0x16')]()});}else{fs[_0xa1c8('0x92')](_0x159fc7,_0x49132a[_0xa1c8('0x16')]()+'\x0a');}_0x49132a=[];}if(!(stats[_0xa1c8('0x81')]%0xc8)){socket[_0xa1c8('0x93')]('contact:import:'+_0x1ce747,stats);stats['errors']=[];}}if(stopped){logger[_0xa1c8('0x61')](_0xa1c8('0x94'));_0x335517[_0xa1c8('0x95')]();}}catch(_0x298028){handleError(_0x2dc171[_0xa1c8('0x80')][_0x3cdcda],{'code':_0xa1c8('0x96'),'message':_0x298028['message']});logger[_0xa1c8('0x5d')](_0xa1c8('0x97'),_0x298028[_0xa1c8('0x5e')]);}},'complete':function(){try{var _0x364c46=[];var _0x2739bc=[];var _0x1b6b5c='cm_contacts';if(_0x25b91c[_0xa1c8('0x98')]&&_0x25b91c['duplicates']['length']){_0x1b6b5c=_0xa1c8('0x99')+_0x1ce747;_0x364c46['push'](_0xa1c8('0x9a')+_0x1b6b5c+'\x20LIKE\x20cm_contacts;');}tmp_campaigns='campaigns_'+_0x1ce747;tmp_voice_queues=_0xa1c8('0x9b')+_0x1ce747;_0x2739bc[_0xa1c8('0x1e')]('CREATE\x20TABLE\x20'+tmp_campaigns+_0xa1c8('0x9c'));_0x2739bc[_0xa1c8('0x1e')](_0xa1c8('0x9a')+tmp_voice_queues+_0xa1c8('0x9c'));BPromise['each'](_0x2739bc,handleTZQuery)[_0xa1c8('0x1d')](function(_0x5ef541){updateTzCampaigns(_0x25b91c['ListId'])[_0xa1c8('0x1d')](function(_0x865f58){updateTzVoiceQueues(_0x25b91c[_0xa1c8('0x33')])[_0xa1c8('0x1d')](function(_0x1212bd){if(hasTZ)_0x41760b=_0x41760b[_0xa1c8('0x85')](_0xa1c8('0x73'),_0xa1c8('0x9d'));var _0x2ef522=util[_0xa1c8('0x11')](_0xa1c8('0x9e'),_0x159fc7,_0x1b6b5c,_0x41760b,_0x25b91c['ListId'],_0x25b91c[_0xa1c8('0x9f')]||null,NOW,NOW);if(_[_0xa1c8('0x22')](_0x4da328[_0xa1c8('0x31')])){_0x2ef522+=_0xa1c8('0xa0');}_0x364c46['push'](_0x2ef522);if(_0x25b91c[_0xa1c8('0x98')]&&_0x25b91c[_0xa1c8('0x98')][_0xa1c8('0x21')]){_0x364c46[_0xa1c8('0x1e')](insertCmContact(_0x25b91c[_0xa1c8('0x33')],_0x1b6b5c,_0x25b91c['duplicates'],_0x4da328));_0x364c46['push']('DROP\x20TABLE\x20'+_0x1b6b5c+';');}BPromise[_0xa1c8('0xa1')](_0x364c46,handleQuery)[_0xa1c8('0x1d')](function(_0x4e4fe9){BPromise['all']([handleAdditionalPhones()])[_0xa1c8('0x1d')](function(){_0x364c46=[];for(var _0x4337e6=0x0;_0x4337e6<promisesAdditionalPhones[_0xa1c8('0x21')];_0x4337e6++){if(promisesAdditionalPhones[_0x4337e6][_0xa1c8('0x14')]!='§'){_0x364c46[_0xa1c8('0x1e')](createAdditionalPhone(promisesAdditionalPhones[_0x4337e6][_0xa1c8('0xa2')],promisesAdditionalPhones[_0x4337e6][_0xa1c8('0xa3')],promisesAdditionalPhones[_0x4337e6][_0xa1c8('0x14')],promisesAdditionalPhones[_0x4337e6][_0xa1c8('0xa4')]));}}BPromise[_0xa1c8('0x1f')](_0x364c46)['then'](function(){_0x364c46=[];if(hasTZ){_0x364c46['push'](insertTzCmHopper(_0x25b91c['ListId'],_0xa1c8('0x6e'),_0xa1c8('0x6d'),_0xa1c8('0xa5'),_0x302bae,tmp_voice_queues));_0x364c46[_0xa1c8('0x1e')](insertTzCmHopperBlack(_0x25b91c[_0xa1c8('0x33')],_0xa1c8('0xa6'),_0xa1c8('0x6d'),'VoiceQueueId'));_0x364c46[_0xa1c8('0x1e')](insertTzCmHopper(_0x25b91c['ListId'],'campaigns_has_cm_lists',_0xa1c8('0x67'),_0xa1c8('0xa7'),_0x302bae,tmp_campaigns));_0x364c46[_0xa1c8('0x1e')](insertTzCmHopperBlack(_0x25b91c['ListId'],_0xa1c8('0xa8'),_0xa1c8('0x67'),_0xa1c8('0xa7')));_0x364c46['push'](insertCmHopperAdditionalPhones(_0x25b91c[_0xa1c8('0x33')]));}else{_0x364c46[_0xa1c8('0x1e')](insertCmHopper(_0x25b91c[_0xa1c8('0x33')],_0xa1c8('0x6e'),'voice_queues',_0xa1c8('0xa5'),_0x302bae));_0x364c46[_0xa1c8('0x1e')](insertCmHopperBlack(_0x25b91c[_0xa1c8('0x33')],'voice_queues_has_cm_blacklists',_0xa1c8('0x6d'),_0xa1c8('0xa5')));_0x364c46[_0xa1c8('0x1e')](insertCmHopper(_0x25b91c['ListId'],_0xa1c8('0x68'),_0xa1c8('0x67'),_0xa1c8('0xa7'),_0x302bae));_0x364c46[_0xa1c8('0x1e')](insertCmHopperBlack(_0x25b91c[_0xa1c8('0x33')],'campaigns_has_cm_blacklists',_0xa1c8('0x67'),'CampaignId'));_0x364c46[_0xa1c8('0x1e')](insertCmHopperAdditionalPhones(_0x25b91c[_0xa1c8('0x33')]));}_0x364c46[_0xa1c8('0x1e')](_0xa1c8('0xa9')+tmp_campaigns+';');_0x364c46[_0xa1c8('0x1e')]('DROP\x20TABLE\x20'+tmp_voice_queues+';');BPromise['each'](_0x364c46,handleQuery)[_0xa1c8('0x1d')](function(_0x2e9038){stats['finish']=!![];stats[_0xa1c8('0xaa')]=_0x25b91c[_0xa1c8('0x98')]&&_0x25b91c[_0xa1c8('0x98')]['length']?results[0x2][_0xa1c8('0xaa')]:results[0x0][_0xa1c8('0xaa')];socket['emit'](_0xa1c8('0xab')+_0x1ce747,stats);fs['unlink'](_0x297c66);fs[_0xa1c8('0xac')](_0x159fc7);process[_0xa1c8('0x5f')](0x0);})[_0xa1c8('0x64')](function(_0x20378b){logger[_0xa1c8('0x5d')](_0x20378b[_0xa1c8('0x5e')]);process['exit'](0x1);});});});})['catch'](function(_0xb54396){logger['error'](_0xb54396[_0xa1c8('0x5e')]);process[_0xa1c8('0x5f')](0x1);});});});});}catch(_0x3e8618){logger[_0xa1c8('0x5d')]('complete',_0x3e8618[_0xa1c8('0x5e')]);process[_0xa1c8('0x5f')](0x1);}},'error':function(_0x58328f,_0x3660c9,_0x2ac53c,_0x2686d2){throw new Error(_0x2686d2);}});});}function validate(){if(process[_0xa1c8('0xad')]&&process['argv']['length']<0x4){throw new Error(_0xa1c8('0xae'));}var _0x5a353e=path[_0xa1c8('0x16')](config[_0xa1c8('0x77')],_0xa1c8('0xaf'),process[_0xa1c8('0xad')][0x2]);if(!fs[_0xa1c8('0xb0')](_0x5a353e)){throw new Error(_0xa1c8('0xb1'));}var _0x211f0e={};try{_0x211f0e=JSON[_0xa1c8('0x7f')](process[_0xa1c8('0xad')][0x3]);if(!_0x211f0e[_0xa1c8('0xb2')]){throw new Error(_0xa1c8('0xb3'));}if(!_0x211f0e['binding'][_0xa1c8('0x14')]){throw new Error('phone\x20is\x20mandatory');}if(!_0x211f0e[_0xa1c8('0xb2')][_0xa1c8('0x8e')]){throw new Error(_0xa1c8('0xb4'));}var _0x45dd77=0x0;if(_0x211f0e['binding']['UserId']){_0x45dd77=0x1;}if(!_0x211f0e[_0xa1c8('0x33')]){throw new Error(_0xa1c8('0xb5'));}}catch(_0x3c41d3){throw new Error(_0xa1c8('0xb6'));}var _0x381cc8=[];try{_0x381cc8=_[_0xa1c8('0xb7')](JSON['parse'](process[_0xa1c8('0xad')][0x4]),'id');}catch(_0x528d5b){logger[_0xa1c8('0x61')](_0xa1c8('0xb8'));}main(_0x5a353e,_0x211f0e,_0x381cc8,_0x45dd77);}validate();process['on'](_0xa1c8('0xb9'),handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
index 7f6633f..492d707 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf7=['file\x20doesn\x27t\x20exists','ListId\x20is\x20mandatory','body\x20id\x20mandatory','No\x20agent\x20available','SIGINT','path','lodash','papaparse','util','bluebird','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','import','redis','localhost','socket.io-emitter','format','select','field','phone','from','join','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','sequelize','select\x20*\x20from\x20','spread','length','isNil','AdditionalPhones','push','all','then','catch','error','split','filter','CmContactHasItem','findOne','update','updated','PHONE','inserted','CmContact','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','insert','cm_hopper','scheduledat','ContactId','ListId','updatedAt','priority','UserId','recallme','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_hopper_black','fromQuery','createdAt','.CmListId\x20=\x20?','ListId\x20=\x20?','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','into','cm_hopper_additional_phones','CmHopperId','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','concat','keys','CompanyId','fields','MIN(id)','min_id','group','info','message','code','main','stringify','start','binding','root','server/files/tmp','.csv','body','ContactItemType','findAll','name','_description','parse','createReadStream','data','rows','errors','find','trim','replace','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','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','\x20not\x20specified','hasOwnProperty','description','SystemRow','appendFileSync','emit','abort','SystemError','step','CREATE\x20TABLE\x20','CIS\x20len',',\x20scheduledAt\x20=\x20NOW()','each','contact','contactId','contactTypeId','orderBy','contact:import:','unlink','exit','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync'];(function(_0x557616,_0x2add89){var _0x2999a6=function(_0x4b18f7){while(--_0x4b18f7){_0x557616['push'](_0x557616['shift']());}};_0x2999a6(++_0x2add89);}(_0xbaf7,0x137));var _0x7baf=function(_0x1d65cc,_0x496a21){_0x1d65cc=_0x1d65cc-0x0;var _0x3f312c=_0xbaf7[_0x1d65cc];return _0x3f312c;};'use strict';var fs=require('fs');var path=require(_0x7baf('0x0'));var _=require(_0x7baf('0x1'));var Papa=require(_0x7baf('0x2'));var util=require(_0x7baf('0x3'));var BPromise=require(_0x7baf('0x4'));var moment=require('moment');var squel=require(_0x7baf('0x5'));var Redis=require(_0x7baf('0x6'));var db=require(_0x7baf('0x7'))['db'];var config=require(_0x7baf('0x8'));var logger=require(_0x7baf('0x9'))(_0x7baf('0xa'));config[_0x7baf('0xb')]=_['defaults'](config[_0x7baf('0xb')],{'host':_0x7baf('0xc'),'port':0x18eb});var socket=require(_0x7baf('0xd'))(new Redis(config[_0x7baf('0xb')]));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()[_0x7baf('0xe')]('YYYY-MM-DD\x20HH:mm:ss');var tempTableName='cm_contacts_temp_'+moment()[_0x7baf('0xe')]('YYYYMMDDHHmmss');var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x1e472a){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'](_0x1e472a);}function selectNotIn(_0x59303b,_0x1dd133,_0x1dadf8,_0x1d09c3,_0x48cf41){return squel[_0x7baf('0xf')]()[_0x7baf('0x10')](_0x7baf('0x11'))[_0x7baf('0x12')](_0x1d09c3)[_0x7baf('0x13')](_0x1dd133,null,_0x1dd133+_0x7baf('0x14')+_0x1d09c3+'.'+_0x1dadf8)[_0x7baf('0x15')](_0x1d09c3+'.'+_0x1dadf8+_0x7baf('0x16')+_0x59303b+'.'+_0x1dadf8)['where'](_0x1dd133+_0x7baf('0x17')+_0x48cf41['join']()+')');}function handleAdditionalPhones(){return new Promise(function(_0x38df2e,_0x3be400){promisesAdditionalPhones=[];promisesContact=[];return db[_0x7baf('0x18')]['query'](_0x7baf('0x19')+tempTableName)[_0x7baf('0x1a')](function(_0x2bacad){if(_0x2bacad!==null){var _0x3b70fd=[];for(var _0x4748ca=0x0;_0x4748ca<_0x2bacad[_0x7baf('0x1b')];_0x4748ca++){var _0x184aa5=_0x2bacad[_0x4748ca];if(!_[_0x7baf('0x1c')](_0x184aa5[_0x7baf('0x11')])){if(!_[_0x7baf('0x1c')](_0x184aa5[_0x7baf('0x1d')]))_0x3b70fd[_0x7baf('0x1e')](insertAdditionalPhones(_0x184aa5));promisesContact[_0x7baf('0x1e')]({'contact':_0x184aa5});}}}Promise[_0x7baf('0x1f')](_0x3b70fd)[_0x7baf('0x20')](function(){_0x38df2e({'val':0x1});});})[_0x7baf('0x21')](function(_0x33c58e){logger[_0x7baf('0x22')](_0x33c58e['message']);});});}function insertAdditionalPhones(_0x9a8f82){return new Promise(function(_0x4cb942,_0x4800c4){var _0x3428a4=_0x9a8f82[_0x7baf('0x1d')];if(_[_0x7baf('0x1c')](_0x3428a4))_0x4800c4({'val':0x0});else{var _0xaca134=_0x3428a4[_0x7baf('0x23')](';');var _0xd324a=[];orderBy=0x0;for(var _0x341dbd=0x0;_0x341dbd<_0xaca134[_0x7baf('0x1b')];_0x341dbd++){_0xd324a[_0x7baf('0x1e')](splitAdditionalPhone(_0x9a8f82['id'],_0xaca134[_0x341dbd]));}Promise['all'](_0xd324a)['then'](function(){_0x4cb942({'val':_0xaca134[_0x7baf('0x1b')]});});}});}function splitAdditionalPhone(_0x485171,_0x15eb2a){return new Promise(function(_0x116224,_0xa4bfad){var _0x594094=_0x15eb2a[_0x7baf('0x23')](':');var _0x5cedc5=_0x594094[0x0];var _0x3a7691=_0x594094[0x1];if(_0x3a7691!==''){var _0x539ebf=_0x3a7691[_0x7baf('0x23')]('|');var _0x4f1d52=[];for(var _0x4d64e5=0x0;_0x4d64e5<_0x539ebf[_0x7baf('0x1b')];_0x4d64e5++){if(_0x539ebf[_0x4d64e5]!==''){var _0x5b9c9c=_[_0x7baf('0x24')](promisesAdditionalPhones,{'contactId':_0x485171,'phone':_0x539ebf[_0x4d64e5]});if(_0x5b9c9c[_0x7baf('0x1b')]==0x0){orderBy++;promisesAdditionalPhones[_0x7baf('0x1e')]({'contactId':_0x485171,'contactTypeId':_0x5cedc5,'phone':_0x539ebf[_0x4d64e5],'orderBy':orderBy});}}}_0x116224({'ok':0x1});}else _0x116224({'res':0x0});});}function createAdditionalPhone(_0x1cf5be,_0x1c9f3d,_0x415484,_0x144e9c){var _0x4b0b3b='';var _0x267809='';var _0x34bfd8=_0x415484[_0x7baf('0x23')]('§');_0x4b0b3b=_0x34bfd8[0x0];if(_0x34bfd8[_0x7baf('0x1b')]==0x2)_0x267809=_0x34bfd8[0x1];return new Promise(function(_0x16f8fb,_0x363080){return db[_0x7baf('0x25')][_0x7baf('0x26')]({'where':{'CmContactId':_0x1cf5be,'item':_0x4b0b3b}})[_0x7baf('0x20')](function(_0x54943e){if(_0x54943e){return db[_0x7baf('0x25')][_0x7baf('0x27')]({'ItemTypeId':_0x1c9f3d,'description':_0x267809,'OrderBy':_0x144e9c},{'where':{'CmContactId':_0x1cf5be,'item':_0x4b0b3b}})[_0x7baf('0x20')](function(_0xe3e562){_0x16f8fb({'res':_0x7baf('0x28')});});}else{return db[_0x7baf('0x25')]['create']({'CmContactId':_0x1cf5be,'item':_0x4b0b3b,'ItemTypeId':_0x1c9f3d,'description':_0x267809,'OrderBy':_0x144e9c,'ItemClass':_0x7baf('0x29')})[_0x7baf('0x20')](function(_0x4cf568){_0x16f8fb({'res':_0x7baf('0x2a')});});}});});}function updateContact(_0xddaebf){return new Promise(function(_0x335f97,_0x29da9d){var _0x5898a0=_0xddaebf['id'];delete _0xddaebf['id'];return db[_0x7baf('0x2b')][_0x7baf('0x27')](_0xddaebf,{'where':{'id':_0x5898a0}})[_0x7baf('0x20')](function(_0x39c124){updatedRows+=0x1;return db['CmHopper'][_0x7baf('0x27')]({'phone':_0xddaebf['phone']},{'where':{'ContactId':_0x5898a0}})[_0x7baf('0x20')](function(_0x42d1a3){_0x335f97({'ret':'OK'});});});});}function insertCmHopper(_0x2c9256,_0x480e6d,_0x40fcdd,_0x5893ac,_0x45b29c){var _0x4a07cc=[_0x7baf('0x2c'),_0x7baf('0x2d'),_0x7baf('0x2e'),_0x7baf('0x2f'),_0x480e6d+'.'+_0x5893ac,_0x7baf('0x30'),_0x7baf('0x31'),_0x7baf('0x32'),'cm_contacts.UserId','\x22'+_0x45b29c+'\x22'];return squel[_0x7baf('0x33')]()['into'](_0x7baf('0x34'))['fromQuery']([_0x7baf('0x11'),_0x7baf('0x35'),_0x7baf('0x36'),_0x7baf('0x37'),_0x5893ac,'createdAt',_0x7baf('0x38'),_0x7baf('0x39'),_0x7baf('0x3a'),_0x7baf('0x3b')],squel[_0x7baf('0xf')]()['fields'](_0x4a07cc)[_0x7baf('0x12')](_0x480e6d)[_0x7baf('0x13')](_0x7baf('0x3c'),null,_0x7baf('0x3d')+_0x480e6d+_0x7baf('0x3e'))[_0x7baf('0x13')](_0x40fcdd,null,_0x40fcdd+'.id\x20=\x20'+_0x480e6d+'.'+_0x5893ac)['where'](_0x480e6d+'.CmListId\x20=\x20?',_0x2c9256)[_0x7baf('0x15')](_0x7baf('0x3f'),NOW)[_0x7baf('0x15')](_0x7baf('0x40'),selectNotIn(_0x480e6d,_0x40fcdd,_0x5893ac,_0x7baf('0x34'),[_0x7baf('0x41'),_0x7baf('0x42')]))['where'](_0x7baf('0x40'),selectNotIn(_0x480e6d,_0x40fcdd,_0x5893ac,'cm_hopper',[_0x7baf('0x41')])))[_0x7baf('0x43')]();}function insertCmHopperBlack(_0xa98a9b,_0x4793c7,_0x5f0326,_0x2f225e){var _0x273b43=['cm_contacts.phone','cm_contacts.id','cm_contacts.ListId',_0x4793c7+'.'+_0x2f225e,'cm_contacts.createdAt',_0x7baf('0x31')];return squel[_0x7baf('0x33')]()['into'](_0x7baf('0x44'))[_0x7baf('0x45')](['phone','ContactId','ListId',_0x2f225e,_0x7baf('0x46'),_0x7baf('0x38')],squel[_0x7baf('0xf')]()['fields'](_0x273b43)[_0x7baf('0x12')](_0x4793c7)['join'](_0x7baf('0x3c'),null,'cm_contacts.ListId\x20=\x20'+_0x4793c7+_0x7baf('0x3e'))[_0x7baf('0x13')](_0x5f0326,null,_0x5f0326+'.id\x20=\x20'+_0x4793c7+'.'+_0x2f225e)[_0x7baf('0x15')](_0x4793c7+_0x7baf('0x47'),_0xa98a9b)[_0x7baf('0x15')](_0x7baf('0x3f'),NOW)[_0x7baf('0x15')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel['select']()[_0x7baf('0x10')]('phone')[_0x7baf('0x12')](_0x7baf('0x44'))[_0x7baf('0x15')](_0x7baf('0x48'),_0xa98a9b)[_0x7baf('0x15')](_0x2f225e+'\x20=\x20?',_0x4793c7+'.'+_0x2f225e)))[_0x7baf('0x43')]();}function insertCmHopperAdditionalPhones(_0x4ab023){var _0x20628d=[_0x7baf('0x49'),_0x7baf('0x4a'),_0x7baf('0x4b'),_0x7baf('0x4c'),'cm_contact_has_items.updatedAt'];return squel[_0x7baf('0x33')]()[_0x7baf('0x4d')](_0x7baf('0x4e'))['fromQuery']([_0x7baf('0x4f'),_0x7baf('0x11'),'OrderBy',_0x7baf('0x46'),_0x7baf('0x38')],squel['select']()['fields'](_0x20628d)[_0x7baf('0x12')](_0x7baf('0x34'))[_0x7baf('0x13')](_0x7baf('0x3c'),null,'cm_contacts.id\x20=\x20cm_hopper.ContactId')['join']('cm_contact_has_items',null,_0x7baf('0x50'))[_0x7baf('0x15')](_0x7baf('0x51'),_0x4ab023)[_0x7baf('0x15')](_0x7baf('0x3f'),NOW))[_0x7baf('0x43')]();}function insertCmContact(_0x41d022,_0x1fb86f,_0x42ca0d,_0x788c5d){var _0x142a55=_[_0x7baf('0x52')](_[_0x7baf('0x53')](_0x788c5d),[_0x7baf('0x37'),_0x7baf('0x54'),_0x7baf('0x46'),_0x7baf('0x38')]);return squel['insert']()['into'](_0x7baf('0x3c'))[_0x7baf('0x45')](_0x142a55,squel['select']()['fields'](_0x142a55)[_0x7baf('0x12')](_0x1fb86f)[_0x7baf('0x15')]('('+_0x42ca0d['join'](',')+')\x20NOT\x20IN\x20?',squel[_0x7baf('0xf')]()[_0x7baf('0x55')](_0x42ca0d)['from']('cm_contacts')['where']('ListId\x20=\x20?',_0x41d022))[_0x7baf('0x15')]('id\x20IN\x20?',squel[_0x7baf('0xf')]()[_0x7baf('0x10')](_0x7baf('0x56'),_0x7baf('0x57'))['from'](_0x1fb86f)[_0x7baf('0x58')](_0x42ca0d['join'](','))))[_0x7baf('0x43')]();}function handleStop(){logger[_0x7baf('0x59')]('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x393e78){logger['error'](_0x393e78[_0x7baf('0x5a')]);process['exit'](0x1);}function handleError(_0x7ae1d5,_0x3b82a5){stats['errors'][_0x7baf('0x1e')]({'name':_0x3b82a5[_0x7baf('0x5b')],'message':_0x3b82a5[_0x7baf('0x5a')],'row':_0x7ae1d5});}function handleQuery(_0x280c87){logger['info'](_0x280c87);return db['sequelize']['query'](_0x280c87)[_0x7baf('0x1a')](function(_0x6fd6c2){results['push'](_0x6fd6c2);})['catch'](function(_0x5dc42d){logger[_0x7baf('0x22')](_0x5dc42d[_0x7baf('0x5a')]);});}function main(_0x39bee7,_0x300248,_0x331781,_0x111321){logger['info'](_0x7baf('0x5c'),_0x39bee7,JSON[_0x7baf('0x5d')](_0x300248));process['send'](_0x7baf('0x5e'));var _0x415003=_0x300248[_0x7baf('0x5f')];var _0x2730f2=_['clone'](_0x415003);var _0xa0c0c4=_0x300248['socket_timestamp'];var _0x12a030=path[_0x7baf('0x13')](config[_0x7baf('0x60')],_0x7baf('0x61'),_0xa0c0c4+_0x7baf('0x62'));logger[_0x7baf('0x59')](_0x7baf('0x63'),_0x300248);db[_0x7baf('0x64')][_0x7baf('0x65')]({'raw':!![],'attributes':['id',_0x7baf('0x66')]})[_0x7baf('0x20')](function(_0x570a9b){for(var _0x2cca09=0x0;_0x2cca09<_0x570a9b[_0x7baf('0x1b')];_0x2cca09++){if(_0x570a9b[_0x2cca09][_0x7baf('0x66')]in _0x415003){contactItemTypes['push'](_0x570a9b[_0x2cca09]);delete _0x2730f2[_0x570a9b[_0x2cca09][_0x7baf('0x66')]];hasAdditionalPhones=!![];}for(var _0x26560a in _0x415003){if(_0x570a9b[_0x2cca09][_0x7baf('0x66')]+_0x7baf('0x67')===_0x26560a){phoneDescriptions[_0x7baf('0x1e')]({'itemTypeId':_0x570a9b[_0x2cca09]['id'],'description':_0x26560a});delete _0x2730f2[_0x26560a];}}}if(hasAdditionalPhones)_0x2730f2[_0x7baf('0x1d')]='';var _0x5da221=_[_0x7baf('0x53')](_0x2730f2)[_0x7baf('0x13')]();logger[_0x7baf('0x59')]('header',_0x5da221);fs['writeFileSync'](_0x12a030,_0x5da221+'\x0a');Papa[_0x7baf('0x68')](fs[_0x7baf('0x69')](_0x39bee7),{'header':!![],'skipEmptyLines':!![],'step':function(_0x44c330,_0x2f862d){try{for(var _0x499dda=0x0,_0x1bf0c3=[];_0x499dda<_0x44c330[_0x7baf('0x6a')]['length'];_0x499dda++){stats[_0x7baf('0x6b')]+=0x1;if(_0x44c330['errors'][_0x499dda]){handleError(_0x44c330[_0x7baf('0x6a')][_0x499dda],_0x44c330[_0x7baf('0x6c')][_0x499dda]);}else{var _0x208fd6=[];var _0x3c3ab4=[];var _0x1a8eb0={};for(var _0x1dbbe6 in _0x415003){let _0x172661=contactItemTypes[_0x7baf('0x6d')](_0x41682a=>_0x41682a[_0x7baf('0x66')]===_0x1dbbe6);let _0x53bb0b=contactItemTypes[_0x7baf('0x6d')](_0x4005e8=>_0x4005e8[_0x7baf('0x66')]+_0x7baf('0x67')===_0x1dbbe6);if(_[_0x7baf('0x1c')](_0x172661)&&_[_0x7baf('0x1c')](_0x53bb0b)){if(_0x415003['hasOwnProperty'](_0x1dbbe6)){if(_0x44c330[_0x7baf('0x6a')][_0x499dda][_0x415003[_0x1dbbe6]]){var _0x4fce7f=_[_0x7baf('0x6e')](_0x44c330[_0x7baf('0x6a')][_0x499dda][_0x415003[_0x1dbbe6]][_0x7baf('0x6f')](/"/g,'\x27'));switch(_0x1dbbe6){case'scheduledat':var _0x238c23=moment(_0x4fce7f,_0x7baf('0x70'),!![]);if(_0x238c23[_0x7baf('0x71')]()){_0x1bf0c3[_0x7baf('0x1e')]('\x22'+_0x4fce7f+'\x22');}else{_0x208fd6[_0x7baf('0x1e')](_0x7baf('0x72'));}break;case'priority':var _0x5c8210=parseInt(_0x4fce7f);_0x4fce7f=_[_0x7baf('0x73')](_0x5c8210)||_0x5c8210<0x0||_0x5c8210>0x4?_0x111321?0x3:0x2:_0x5c8210;_0x1bf0c3[_0x7baf('0x1e')]('\x22'+_0x4fce7f+'\x22');break;case'UserId':var _0x486b69=parseInt(_0x4fce7f);if(_[_0x7baf('0x74')](_0x486b69)&&_[_0x7baf('0x75')](_0x331781,_0x486b69)){_0x1bf0c3[_0x7baf('0x1e')]('\x22'+_0x486b69+'\x22');}else{_0x208fd6[_0x7baf('0x1e')](_0x7baf('0x76'));}break;case _0x7baf('0x77'):if(isEmail(_0x4fce7f)){_0x1bf0c3[_0x7baf('0x1e')]('\x22'+_0x4fce7f+'\x22');}else{_0x208fd6[_0x7baf('0x1e')](_0x7baf('0x78'));}break;case _0x7baf('0x79'):var _0x5af0b2=moment(_0x4fce7f,_0x7baf('0x7a'),!![]);if(_0x5af0b2[_0x7baf('0x71')]()){_0x1bf0c3[_0x7baf('0x1e')]('\x22'+_0x4fce7f+'\x22');}else{_0x208fd6['push'](_0x7baf('0x7b'));}break;default:_0x1bf0c3[_0x7baf('0x1e')]('\x22'+_0x4fce7f+'\x22');}}else{switch(_0x1dbbe6){case'firstName':case'phone':_0x208fd6['push'](_0x1dbbe6+_0x7baf('0x7c'));break;default:_0x1bf0c3[_0x7baf('0x1e')]('\x22\x22');}}}}else{var _0x18d5da='';if(!_[_0x7baf('0x1c')](_0x172661)){if(!_0x1a8eb0[_0x7baf('0x7d')](_0x172661['id'])){for(var _0x2b5c1e=0x0;_0x2b5c1e<_0x415003[_0x1dbbe6][_0x7baf('0x1b')];_0x2b5c1e++){var _0x4fce7f=_[_0x7baf('0x6e')](_0x44c330['data'][_0x499dda][_0x415003[_0x1dbbe6][_0x2b5c1e]][_0x7baf('0x6f')](/"/g,'\x27'));var _0x2b801c=phoneDescriptions[_0x7baf('0x6d')](_0x2d3cf0=>_0x2d3cf0['itemTypeId']===_0x172661['id']);if(!_[_0x7baf('0x1c')](_0x2b801c)){var _0x3a7702=_[_0x7baf('0x6e')](_0x44c330[_0x7baf('0x6a')][_0x499dda][_0x415003[_0x2b801c[_0x7baf('0x7e')]][0x0]][_0x7baf('0x6f')](/"/g,'\x27'));if(!_[_0x7baf('0x1c')](_0x3a7702))_0x4fce7f=_0x4fce7f+'§'+_0x3a7702;}if(_0x18d5da=='')_0x18d5da=_0x4fce7f;else _0x18d5da+='|'+_0x4fce7f;}_0x3c3ab4['push'](_0x172661['id']+':'+_0x18d5da);_0x1a8eb0[_0x172661['id']]=0x1;}}}}if(hasAdditionalPhones){_0x1bf0c3[_0x7baf('0x1e')]('\x22'+_0x3c3ab4[_0x7baf('0x13')](';')+'\x22');}if(_0x208fd6[_0x7baf('0x1b')]){handleError(_0x44c330['data'][_0x499dda],{'code':_0x7baf('0x7f'),'message':_0x208fd6['join']()});}else{fs[_0x7baf('0x80')](_0x12a030,_0x1bf0c3[_0x7baf('0x13')]()+'\x0a');}_0x1bf0c3=[];}if(!(stats[_0x7baf('0x6b')]%0xc8)){socket[_0x7baf('0x81')]('contact:import:'+_0xa0c0c4,stats);stats[_0x7baf('0x6c')]=[];}}if(stopped){logger[_0x7baf('0x59')]('Abort\x20parser');_0x2f862d[_0x7baf('0x82')]();}}catch(_0x53fe1c){handleError(_0x44c330[_0x7baf('0x6a')][_0x499dda],{'code':_0x7baf('0x83'),'message':_0x53fe1c[_0x7baf('0x5a')]});logger[_0x7baf('0x22')](_0x7baf('0x84'),_0x53fe1c['message']);}},'complete':function(){try{var _0x3b6cf0=[];var _0x599487=tempTableName;_0x3b6cf0[_0x7baf('0x1e')](_0x7baf('0x85')+_0x599487+'\x20LIKE\x20cm_contacts;');logger['info'](_0x7baf('0x86'),contactItemTypes[_0x7baf('0x1b')]);var _0x2bf60f=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',_0x12a030,_0x599487,_0x5da221,_0x300248[_0x7baf('0x37')],_0x300248[_0x7baf('0x54')]||null,NOW,NOW);if(_[_0x7baf('0x1c')](_0x415003['scheduledat'])){_0x2bf60f+=_0x7baf('0x87');}_0x3b6cf0['push'](_0x2bf60f);BPromise[_0x7baf('0x88')](_0x3b6cf0,handleQuery)['then'](function(_0x30b9a9){BPromise[_0x7baf('0x1f')]([handleAdditionalPhones()])['then'](function(){_0x3b6cf0=[];for(var _0x23d115=0x0;_0x23d115<promisesContact[_0x7baf('0x1b')];_0x23d115++){_0x3b6cf0[_0x7baf('0x1e')](updateContact(promisesContact[_0x23d115][_0x7baf('0x89')]));}BPromise[_0x7baf('0x1f')](_0x3b6cf0)[_0x7baf('0x20')](function(){_0x3b6cf0=[];for(var _0x2a2108=0x0;_0x2a2108<promisesAdditionalPhones['length'];_0x2a2108++){_0x3b6cf0[_0x7baf('0x1e')](createAdditionalPhone(promisesAdditionalPhones[_0x2a2108][_0x7baf('0x8a')],promisesAdditionalPhones[_0x2a2108][_0x7baf('0x8b')],promisesAdditionalPhones[_0x2a2108][_0x7baf('0x11')],promisesAdditionalPhones[_0x2a2108][_0x7baf('0x8c')]));}BPromise[_0x7baf('0x1f')](_0x3b6cf0)['then'](function(){_0x3b6cf0=[];_0x3b6cf0[_0x7baf('0x1e')](insertCmHopperAdditionalPhones(_0x300248[_0x7baf('0x37')]));_0x3b6cf0[_0x7baf('0x1e')]('DROP\x20TABLE\x20'+_0x599487+';');BPromise['each'](_0x3b6cf0,handleQuery)[_0x7baf('0x20')](function(_0x1b8d12){stats['finish']=!![];stats['affectedRows']=updatedRows;socket[_0x7baf('0x81')](_0x7baf('0x8d')+_0xa0c0c4,stats);fs[_0x7baf('0x8e')](_0x39bee7);fs['unlink'](_0x12a030);process[_0x7baf('0x8f')](0x0);})['catch'](function(_0xd8bb6d){logger[_0x7baf('0x22')](_0xd8bb6d[_0x7baf('0x5a')]);process[_0x7baf('0x8f')](0x1);});});});});})[_0x7baf('0x21')](function(_0x1ed48f){logger['error'](_0x1ed48f[_0x7baf('0x5a')]);process[_0x7baf('0x8f')](0x1);});}catch(_0xb6dc1a){logger[_0x7baf('0x22')](_0x7baf('0x90'),_0xb6dc1a[_0x7baf('0x5a')]);process['exit'](0x1);}},'error':function(_0x44e1de,_0x570ad1,_0x304f96,_0x25adcb){throw new Error(_0x25adcb);}});});}function validate(){if(process[_0x7baf('0x91')]&&process['argv'][_0x7baf('0x1b')]<0x4){throw new Error(_0x7baf('0x92'));}var _0x49581f=path[_0x7baf('0x13')](config[_0x7baf('0x60')],_0x7baf('0x61'),process[_0x7baf('0x91')][0x2]);if(!fs[_0x7baf('0x93')](_0x49581f)){throw new Error(_0x7baf('0x94'));}var _0x20f561={};try{_0x20f561=JSON[_0x7baf('0x68')](process[_0x7baf('0x91')][0x3]);if(!_0x20f561[_0x7baf('0x5f')]){throw new Error('binding\x20doesn\x27t\x20exists');}var _0x5b084f=0x0;if(_0x20f561[_0x7baf('0x5f')][_0x7baf('0x3a')]){_0x5b084f=0x1;}if(!_0x20f561[_0x7baf('0x37')]){throw new Error(_0x7baf('0x95'));}}catch(_0x23f89d){throw new Error(_0x7baf('0x96'));}var _0x46f591=[];try{_0x46f591=_['map'](JSON[_0x7baf('0x68')](process[_0x7baf('0x91')][0x4]),'id');}catch(_0x1d0c10){logger[_0x7baf('0x59')](_0x7baf('0x97'));}main(_0x49581f,_0x20f561,_0x46f591,_0x5b084f);}validate();process['on'](_0x7baf('0x98'),handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
+var _0x88c7=['cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.updatedAt','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','ContactId','ListId','createdAt','UserId','fields','from','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22onlyIfOpen\x22','\x22always\x22','toString','cm_contacts.id','cm_contacts.createdAt','updatedAt','.id\x20=\x20','cm_contacts.createdAt\x20=\x20?','cm_hopper_black','ListId\x20=\x20?','cm_contact_has_items.item','cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt','CmHopperId','OrderBy','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','concat','keys','CompanyId',')\x20NOT\x20IN\x20?','MIN(id)','min_id','group','Received\x20SIGINT','error','exit','errors','main','stringify','send','start','binding','clone','socket_timestamp','root','server/files/tmp','body','ContactItemType','findAll','name','info','header','writeFileSync','createReadStream','data','find','_description','trim','replace','scheduledat','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','priority','isNaN','isNumber','includes','agent\x20not\x20exists','email','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','hasOwnProperty','itemTypeId','description','SystemRow','appendFileSync','rows','emit','contact:import:','Abort\x20parser','abort','SystemError','step','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','CIS\x20len','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',',\x20scheduledAt\x20=\x20NOW()','each','contactTypeId','orderBy','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','file\x20doesn\x27t\x20exists','parse','binding\x20doesn\x27t\x20exists','body\x20id\x20mandatory','SIGINT','uncaughtException','path','util','bluebird','ioredis','../../../mysqldb','../../../config/logger','import','defaults','redis','format','YYYY-MM-DD\x20HH:mm:ss','cm_contacts_temp_','test','select','field','phone','join','where','.dialCheckDuplicateType\x20IN\x20(','sequelize','query','select\x20*\x20from\x20','spread','length','isNil','AdditionalPhones','push','all','then','catch','message','split','filter','CmContactHasItem','update','updated','PHONE','CmHopper'];(function(_0x4b2436,_0x452299){var _0x4f5ab2=function(_0x5c6679){while(--_0x5c6679){_0x4b2436['push'](_0x4b2436['shift']());}};_0x4f5ab2(++_0x452299);}(_0x88c7,0x6f));var _0x788c=function(_0x1d7bbc,_0x90713b){_0x1d7bbc=_0x1d7bbc-0x0;var _0x40a37f=_0x88c7[_0x1d7bbc];return _0x40a37f;};'use strict';var fs=require('fs');var path=require(_0x788c('0x0'));var _=require('lodash');var Papa=require('papaparse');var util=require(_0x788c('0x1'));var BPromise=require(_0x788c('0x2'));var moment=require('moment');var squel=require('squel');var Redis=require(_0x788c('0x3'));var db=require(_0x788c('0x4'))['db'];var config=require('../../../config/environment');var logger=require(_0x788c('0x5'))(_0x788c('0x6'));config['redis']=_[_0x788c('0x7')](config[_0x788c('0x8')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x788c('0x8')]));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()[_0x788c('0x9')](_0x788c('0xa'));var tempTableName=_0x788c('0xb')+moment()[_0x788c('0x9')]('YYYYMMDDHHmmss');var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x22e1e2){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))*$/[_0x788c('0xc')](_0x22e1e2);}function selectNotIn(_0x37eacd,_0x49e567,_0x477298,_0x2d8a50,_0x2983ab){return squel[_0x788c('0xd')]()[_0x788c('0xe')](_0x788c('0xf'))['from'](_0x2d8a50)[_0x788c('0x10')](_0x49e567,null,_0x49e567+'.id\x20=\x20'+_0x2d8a50+'.'+_0x477298)[_0x788c('0x11')](_0x2d8a50+'.'+_0x477298+'\x20=\x20'+_0x37eacd+'.'+_0x477298)[_0x788c('0x11')](_0x49e567+_0x788c('0x12')+_0x2983ab[_0x788c('0x10')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x22131a,_0x3cad06){promisesAdditionalPhones=[];promisesContact=[];return db[_0x788c('0x13')][_0x788c('0x14')](_0x788c('0x15')+tempTableName)[_0x788c('0x16')](function(_0x41d920){if(_0x41d920!==null){var _0x67dc6c=[];for(var _0xa118b5=0x0;_0xa118b5<_0x41d920[_0x788c('0x17')];_0xa118b5++){var _0x5c942e=_0x41d920[_0xa118b5];if(!_[_0x788c('0x18')](_0x5c942e[_0x788c('0xf')])){if(!_[_0x788c('0x18')](_0x5c942e[_0x788c('0x19')]))_0x67dc6c[_0x788c('0x1a')](insertAdditionalPhones(_0x5c942e));promisesContact[_0x788c('0x1a')]({'contact':_0x5c942e});}}}Promise[_0x788c('0x1b')](_0x67dc6c)[_0x788c('0x1c')](function(){_0x22131a({'val':0x1});});})[_0x788c('0x1d')](function(_0x37ecba){logger['error'](_0x37ecba[_0x788c('0x1e')]);});});}function insertAdditionalPhones(_0x2cbbba){return new Promise(function(_0x7ef5d5,_0x130eae){var _0xfa1344=_0x2cbbba[_0x788c('0x19')];if(_[_0x788c('0x18')](_0xfa1344))_0x130eae({'val':0x0});else{var _0x21be51=_0xfa1344['split'](';');var _0x7b2ba0=[];orderBy=0x0;for(var _0x2a4ef0=0x0;_0x2a4ef0<_0x21be51[_0x788c('0x17')];_0x2a4ef0++){_0x7b2ba0[_0x788c('0x1a')](splitAdditionalPhone(_0x2cbbba['id'],_0x21be51[_0x2a4ef0]));}Promise[_0x788c('0x1b')](_0x7b2ba0)[_0x788c('0x1c')](function(){_0x7ef5d5({'val':_0x21be51[_0x788c('0x17')]});});}});}function splitAdditionalPhone(_0x2a1235,_0x5857f1){return new Promise(function(_0x3bf479,_0x30ea17){var _0x487ee2=_0x5857f1[_0x788c('0x1f')](':');var _0x32353e=_0x487ee2[0x0];var _0x16741c=_0x487ee2[0x1];if(_0x16741c!==''){var _0x5cc1b7=_0x16741c[_0x788c('0x1f')]('|');var _0xfa09c8=[];for(var _0x28fa56=0x0;_0x28fa56<_0x5cc1b7[_0x788c('0x17')];_0x28fa56++){if(_0x5cc1b7[_0x28fa56]!==''){var _0x200134=_[_0x788c('0x20')](promisesAdditionalPhones,{'contactId':_0x2a1235,'phone':_0x5cc1b7[_0x28fa56]});if(_0x200134[_0x788c('0x17')]==0x0){orderBy++;promisesAdditionalPhones[_0x788c('0x1a')]({'contactId':_0x2a1235,'contactTypeId':_0x32353e,'phone':_0x5cc1b7[_0x28fa56],'orderBy':orderBy});}}}_0x3bf479({'ok':0x1});}else _0x3bf479({'res':0x0});});}function createAdditionalPhone(_0x2dbf2d,_0x4fa90a,_0x4380f4,_0x57966d){var _0x297ea6='';var _0x18b271='';var _0x37b420=_0x4380f4[_0x788c('0x1f')]('§');_0x297ea6=_0x37b420[0x0];if(_0x37b420[_0x788c('0x17')]==0x2)_0x18b271=_0x37b420[0x1];return new Promise(function(_0x3fcfc1,_0x3fcc37){return db[_0x788c('0x21')]['findOne']({'where':{'CmContactId':_0x2dbf2d,'item':_0x297ea6}})[_0x788c('0x1c')](function(_0x4e9b20){if(_0x4e9b20){return db[_0x788c('0x21')][_0x788c('0x22')]({'ItemTypeId':_0x4fa90a,'description':_0x18b271,'OrderBy':_0x57966d},{'where':{'CmContactId':_0x2dbf2d,'item':_0x297ea6}})[_0x788c('0x1c')](function(_0x3a0de3){_0x3fcfc1({'res':_0x788c('0x23')});});}else{return db[_0x788c('0x21')]['create']({'CmContactId':_0x2dbf2d,'item':_0x297ea6,'ItemTypeId':_0x4fa90a,'description':_0x18b271,'OrderBy':_0x57966d,'ItemClass':_0x788c('0x24')})['then'](function(_0x46999f){_0x3fcfc1({'res':'inserted'});});}});});}function updateContact(_0x4245ce){return new Promise(function(_0x57a030,_0x2532e8){var _0x54d0bf=_0x4245ce['id'];delete _0x4245ce['id'];return db['CmContact'][_0x788c('0x22')](_0x4245ce,{'where':{'id':_0x54d0bf}})[_0x788c('0x1c')](function(_0x4eced2){updatedRows+=0x1;return db[_0x788c('0x25')][_0x788c('0x22')]({'phone':_0x4245ce['phone']},{'where':{'ContactId':_0x54d0bf}})[_0x788c('0x1c')](function(_0x5d2ced){_0x57a030({'ret':'OK'});});});});}function insertCmHopper(_0x581e7e,_0x1158ee,_0x2160a7,_0x3caa2e,_0x581a67){var _0x4bf35c=[_0x788c('0x26'),_0x788c('0x27'),'cm_contacts.id','cm_contacts.ListId',_0x1158ee+'.'+_0x3caa2e,'cm_contacts.createdAt',_0x788c('0x28'),'cm_contacts.priority',_0x788c('0x29'),'\x22'+_0x581a67+'\x22'];return squel[_0x788c('0x2a')]()[_0x788c('0x2b')](_0x788c('0x2c'))[_0x788c('0x2d')]([_0x788c('0xf'),'scheduledat',_0x788c('0x2e'),_0x788c('0x2f'),_0x3caa2e,_0x788c('0x30'),'updatedAt','priority',_0x788c('0x31'),'recallme'],squel['select']()[_0x788c('0x32')](_0x4bf35c)[_0x788c('0x33')](_0x1158ee)[_0x788c('0x10')](_0x788c('0x34'),null,_0x788c('0x35')+_0x1158ee+_0x788c('0x36'))[_0x788c('0x10')](_0x2160a7,null,_0x2160a7+'.id\x20=\x20'+_0x1158ee+'.'+_0x3caa2e)['where'](_0x1158ee+_0x788c('0x37'),_0x581e7e)[_0x788c('0x11')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0x788c('0x11')](_0x788c('0x38'),selectNotIn(_0x1158ee,_0x2160a7,_0x3caa2e,_0x788c('0x2c'),['\x22always\x22',_0x788c('0x39')]))[_0x788c('0x11')](_0x788c('0x38'),selectNotIn(_0x1158ee,_0x2160a7,_0x3caa2e,_0x788c('0x2c'),[_0x788c('0x3a')])))[_0x788c('0x3b')]();}function insertCmHopperBlack(_0x274232,_0x10585f,_0x4606c5,_0x8b3b09){var _0x457bf5=[_0x788c('0x26'),_0x788c('0x3c'),'cm_contacts.ListId',_0x10585f+'.'+_0x8b3b09,_0x788c('0x3d'),_0x788c('0x28')];return squel[_0x788c('0x2a')]()['into']('cm_hopper_black')[_0x788c('0x2d')]([_0x788c('0xf'),'ContactId',_0x788c('0x2f'),_0x8b3b09,_0x788c('0x30'),_0x788c('0x3e')],squel[_0x788c('0xd')]()[_0x788c('0x32')](_0x457bf5)['from'](_0x10585f)['join'](_0x788c('0x34'),null,'cm_contacts.ListId\x20=\x20'+_0x10585f+_0x788c('0x36'))[_0x788c('0x10')](_0x4606c5,null,_0x4606c5+_0x788c('0x3f')+_0x10585f+'.'+_0x8b3b09)[_0x788c('0x11')](_0x10585f+'.CmListId\x20=\x20?',_0x274232)[_0x788c('0x11')](_0x788c('0x40'),NOW)[_0x788c('0x11')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0x788c('0xd')]()[_0x788c('0xe')](_0x788c('0xf'))[_0x788c('0x33')](_0x788c('0x41'))[_0x788c('0x11')](_0x788c('0x42'),_0x274232)[_0x788c('0x11')](_0x8b3b09+'\x20=\x20?',_0x10585f+'.'+_0x8b3b09)))['toString']();}function insertCmHopperAdditionalPhones(_0x4c3b3c){var _0x48830b=['cm_hopper.id',_0x788c('0x43'),'cm_contact_has_items.OrderBy',_0x788c('0x44'),_0x788c('0x45')];return squel[_0x788c('0x2a')]()[_0x788c('0x2b')]('cm_hopper_additional_phones')[_0x788c('0x2d')]([_0x788c('0x46'),_0x788c('0xf'),_0x788c('0x47'),_0x788c('0x30'),_0x788c('0x3e')],squel[_0x788c('0xd')]()[_0x788c('0x32')](_0x48830b)[_0x788c('0x33')](_0x788c('0x2c'))[_0x788c('0x10')]('cm_contacts',null,'cm_contacts.id\x20=\x20cm_hopper.ContactId')[_0x788c('0x10')](_0x788c('0x48'),null,_0x788c('0x49'))['where']('cm_hopper.ListId\x20=\x20?',_0x4c3b3c)[_0x788c('0x11')](_0x788c('0x40'),NOW))[_0x788c('0x3b')]();}function insertCmContact(_0xb25718,_0x4933a0,_0x5f11a2,_0x4be956){var _0x1bc851=_[_0x788c('0x4a')](_[_0x788c('0x4b')](_0x4be956),[_0x788c('0x2f'),_0x788c('0x4c'),'createdAt',_0x788c('0x3e')]);return squel[_0x788c('0x2a')]()[_0x788c('0x2b')](_0x788c('0x34'))[_0x788c('0x2d')](_0x1bc851,squel[_0x788c('0xd')]()[_0x788c('0x32')](_0x1bc851)[_0x788c('0x33')](_0x4933a0)[_0x788c('0x11')]('('+_0x5f11a2['join'](',')+_0x788c('0x4d'),squel[_0x788c('0xd')]()['fields'](_0x5f11a2)[_0x788c('0x33')](_0x788c('0x34'))[_0x788c('0x11')]('ListId\x20=\x20?',_0xb25718))[_0x788c('0x11')]('id\x20IN\x20?',squel[_0x788c('0xd')]()[_0x788c('0xe')](_0x788c('0x4e'),_0x788c('0x4f'))[_0x788c('0x33')](_0x4933a0)[_0x788c('0x50')](_0x5f11a2[_0x788c('0x10')](','))))['toString']();}function handleStop(){logger['info'](_0x788c('0x51'));stopped=!![];}function handleUncaughtException(_0x4a7ca8){logger[_0x788c('0x52')](_0x4a7ca8[_0x788c('0x1e')]);process[_0x788c('0x53')](0x1);}function handleError(_0x3ded88,_0x3ca9b4){stats[_0x788c('0x54')][_0x788c('0x1a')]({'name':_0x3ca9b4['code'],'message':_0x3ca9b4[_0x788c('0x1e')],'row':_0x3ded88});}function handleQuery(_0x202297){logger['info'](_0x202297);return db['sequelize'][_0x788c('0x14')](_0x202297)[_0x788c('0x16')](function(_0x3349b6){results['push'](_0x3349b6);})[_0x788c('0x1d')](function(_0x8497cb){logger['error'](_0x8497cb[_0x788c('0x1e')]);});}function main(_0x1b3837,_0x347794,_0x15b7de,_0x5918c5){logger['info'](_0x788c('0x55'),_0x1b3837,JSON[_0x788c('0x56')](_0x347794));process[_0x788c('0x57')](_0x788c('0x58'));var _0x4fe6fa=_0x347794[_0x788c('0x59')];var _0x123f50=_[_0x788c('0x5a')](_0x4fe6fa);var _0x1dd30f=_0x347794[_0x788c('0x5b')];var _0x371072=path[_0x788c('0x10')](config[_0x788c('0x5c')],_0x788c('0x5d'),_0x1dd30f+'.csv');logger['info'](_0x788c('0x5e'),_0x347794);db[_0x788c('0x5f')][_0x788c('0x60')]({'raw':!![],'attributes':['id',_0x788c('0x61')]})[_0x788c('0x1c')](function(_0x5eef0a){for(var _0x2ba609=0x0;_0x2ba609<_0x5eef0a[_0x788c('0x17')];_0x2ba609++){if(_0x5eef0a[_0x2ba609]['name']in _0x4fe6fa){contactItemTypes['push'](_0x5eef0a[_0x2ba609]);delete _0x123f50[_0x5eef0a[_0x2ba609]['name']];hasAdditionalPhones=!![];}for(var _0x54487b in _0x4fe6fa){if(_0x5eef0a[_0x2ba609][_0x788c('0x61')]+'_description'===_0x54487b){phoneDescriptions[_0x788c('0x1a')]({'itemTypeId':_0x5eef0a[_0x2ba609]['id'],'description':_0x54487b});delete _0x123f50[_0x54487b];}}}if(hasAdditionalPhones)_0x123f50['AdditionalPhones']='';var _0x5b324e=_['keys'](_0x123f50)[_0x788c('0x10')]();logger[_0x788c('0x62')](_0x788c('0x63'),_0x5b324e);fs[_0x788c('0x64')](_0x371072,_0x5b324e+'\x0a');Papa['parse'](fs[_0x788c('0x65')](_0x1b3837),{'header':!![],'skipEmptyLines':!![],'step':function(_0x3a3b01,_0x18461f){try{for(var _0x5039b6=0x0,_0x35ba3b=[];_0x5039b6<_0x3a3b01[_0x788c('0x66')][_0x788c('0x17')];_0x5039b6++){stats['rows']+=0x1;if(_0x3a3b01[_0x788c('0x54')][_0x5039b6]){handleError(_0x3a3b01[_0x788c('0x66')][_0x5039b6],_0x3a3b01[_0x788c('0x54')][_0x5039b6]);}else{var _0x4d6311=[];var _0xde5292=[];var _0x4b390e={};for(var _0x136b13 in _0x4fe6fa){let _0x5a3906=contactItemTypes[_0x788c('0x67')](_0x433ad9=>_0x433ad9[_0x788c('0x61')]===_0x136b13);let _0x273380=contactItemTypes['find'](_0xe56cfd=>_0xe56cfd[_0x788c('0x61')]+_0x788c('0x68')===_0x136b13);if(_['isNil'](_0x5a3906)&&_[_0x788c('0x18')](_0x273380)){if(_0x4fe6fa['hasOwnProperty'](_0x136b13)){if(_0x3a3b01['data'][_0x5039b6][_0x4fe6fa[_0x136b13]]){var _0x5e0d5c=_[_0x788c('0x69')](_0x3a3b01['data'][_0x5039b6][_0x4fe6fa[_0x136b13]][_0x788c('0x6a')](/"/g,'\x27'));switch(_0x136b13){case _0x788c('0x6b'):var _0x2b0fab=moment(_0x5e0d5c,'YYYY-MM-DD\x20HH:mm:ss',!![]);if(_0x2b0fab[_0x788c('0x6c')]()){_0x35ba3b[_0x788c('0x1a')]('\x22'+_0x5e0d5c+'\x22');}else{_0x4d6311['push'](_0x788c('0x6d'));}break;case _0x788c('0x6e'):var _0x52b6c8=parseInt(_0x5e0d5c);_0x5e0d5c=_[_0x788c('0x6f')](_0x52b6c8)||_0x52b6c8<0x0||_0x52b6c8>0x4?_0x5918c5?0x3:0x2:_0x52b6c8;_0x35ba3b[_0x788c('0x1a')]('\x22'+_0x5e0d5c+'\x22');break;case'UserId':var _0x17086c=parseInt(_0x5e0d5c);if(_[_0x788c('0x70')](_0x17086c)&&_[_0x788c('0x71')](_0x15b7de,_0x17086c)){_0x35ba3b[_0x788c('0x1a')]('\x22'+_0x17086c+'\x22');}else{_0x4d6311[_0x788c('0x1a')](_0x788c('0x72'));}break;case _0x788c('0x73'):if(isEmail(_0x5e0d5c)){_0x35ba3b[_0x788c('0x1a')]('\x22'+_0x5e0d5c+'\x22');}else{_0x4d6311[_0x788c('0x1a')]('email\x20wrong\x20format');}break;case'dateOfBirth':var _0x1ed302=moment(_0x5e0d5c,_0x788c('0x74'),!![]);if(_0x1ed302['isValid']()){_0x35ba3b[_0x788c('0x1a')]('\x22'+_0x5e0d5c+'\x22');}else{_0x4d6311[_0x788c('0x1a')](_0x788c('0x75'));}break;default:_0x35ba3b['push']('\x22'+_0x5e0d5c+'\x22');}}else{switch(_0x136b13){case _0x788c('0x76'):case _0x788c('0xf'):_0x4d6311[_0x788c('0x1a')](_0x136b13+_0x788c('0x77'));break;default:_0x35ba3b[_0x788c('0x1a')]('\x22\x22');}}}}else{var _0x190c79='';if(!_[_0x788c('0x18')](_0x5a3906)){if(!_0x4b390e[_0x788c('0x78')](_0x5a3906['id'])){for(var _0x4e9029=0x0;_0x4e9029<_0x4fe6fa[_0x136b13][_0x788c('0x17')];_0x4e9029++){var _0x5e0d5c=_[_0x788c('0x69')](_0x3a3b01[_0x788c('0x66')][_0x5039b6][_0x4fe6fa[_0x136b13][_0x4e9029]]['replace'](/"/g,'\x27'));var _0x4687fe=phoneDescriptions['find'](_0x13b901=>_0x13b901[_0x788c('0x79')]===_0x5a3906['id']);if(!_[_0x788c('0x18')](_0x4687fe)){var _0x2d6285=_[_0x788c('0x69')](_0x3a3b01[_0x788c('0x66')][_0x5039b6][_0x4fe6fa[_0x4687fe[_0x788c('0x7a')]][0x0]][_0x788c('0x6a')](/"/g,'\x27'));if(!_[_0x788c('0x18')](_0x2d6285))_0x5e0d5c=_0x5e0d5c+'§'+_0x2d6285;}if(_0x190c79=='')_0x190c79=_0x5e0d5c;else _0x190c79+='|'+_0x5e0d5c;}_0xde5292['push'](_0x5a3906['id']+':'+_0x190c79);_0x4b390e[_0x5a3906['id']]=0x1;}}}}if(hasAdditionalPhones){_0x35ba3b['push']('\x22'+_0xde5292['join'](';')+'\x22');}if(_0x4d6311['length']){handleError(_0x3a3b01['data'][_0x5039b6],{'code':_0x788c('0x7b'),'message':_0x4d6311[_0x788c('0x10')]()});}else{fs[_0x788c('0x7c')](_0x371072,_0x35ba3b['join']()+'\x0a');}_0x35ba3b=[];}if(!(stats[_0x788c('0x7d')]%0xc8)){socket[_0x788c('0x7e')](_0x788c('0x7f')+_0x1dd30f,stats);stats[_0x788c('0x54')]=[];}}if(stopped){logger[_0x788c('0x62')](_0x788c('0x80'));_0x18461f[_0x788c('0x81')]();}}catch(_0x45f761){handleError(_0x3a3b01[_0x788c('0x66')][_0x5039b6],{'code':_0x788c('0x82'),'message':_0x45f761['message']});logger['error'](_0x788c('0x83'),_0x45f761[_0x788c('0x1e')]);}},'complete':function(){try{var _0xab0daa=[];var _0x1ce5cd=tempTableName;_0xab0daa[_0x788c('0x1a')](_0x788c('0x84')+_0x1ce5cd+_0x788c('0x85'));logger[_0x788c('0x62')](_0x788c('0x86'),contactItemTypes[_0x788c('0x17')]);var _0x347f42=util['format'](_0x788c('0x87'),_0x371072,_0x1ce5cd,_0x5b324e,_0x347794[_0x788c('0x2f')],_0x347794[_0x788c('0x4c')]||null,NOW,NOW);if(_[_0x788c('0x18')](_0x4fe6fa[_0x788c('0x6b')])){_0x347f42+=_0x788c('0x88');}_0xab0daa[_0x788c('0x1a')](_0x347f42);BPromise[_0x788c('0x89')](_0xab0daa,handleQuery)[_0x788c('0x1c')](function(_0x3d4dd7){BPromise[_0x788c('0x1b')]([handleAdditionalPhones()])['then'](function(){_0xab0daa=[];for(var _0x2487c9=0x0;_0x2487c9<promisesContact[_0x788c('0x17')];_0x2487c9++){_0xab0daa[_0x788c('0x1a')](updateContact(promisesContact[_0x2487c9]['contact']));}BPromise[_0x788c('0x1b')](_0xab0daa)['then'](function(){_0xab0daa=[];for(var _0x3f180e=0x0;_0x3f180e<promisesAdditionalPhones['length'];_0x3f180e++){_0xab0daa[_0x788c('0x1a')](createAdditionalPhone(promisesAdditionalPhones[_0x3f180e]['contactId'],promisesAdditionalPhones[_0x3f180e][_0x788c('0x8a')],promisesAdditionalPhones[_0x3f180e][_0x788c('0xf')],promisesAdditionalPhones[_0x3f180e][_0x788c('0x8b')]));}BPromise[_0x788c('0x1b')](_0xab0daa)[_0x788c('0x1c')](function(){_0xab0daa=[];_0xab0daa['push'](insertCmHopperAdditionalPhones(_0x347794[_0x788c('0x2f')]));_0xab0daa[_0x788c('0x1a')]('DROP\x20TABLE\x20'+_0x1ce5cd+';');BPromise[_0x788c('0x89')](_0xab0daa,handleQuery)[_0x788c('0x1c')](function(_0x425fdd){stats['finish']=!![];stats['affectedRows']=updatedRows;socket[_0x788c('0x7e')](_0x788c('0x7f')+_0x1dd30f,stats);fs['unlink'](_0x1b3837);fs['unlink'](_0x371072);process[_0x788c('0x53')](0x0);})[_0x788c('0x1d')](function(_0x35a909){logger[_0x788c('0x52')](_0x35a909[_0x788c('0x1e')]);process[_0x788c('0x53')](0x1);});});});});})[_0x788c('0x1d')](function(_0x3fa64f){logger[_0x788c('0x52')](_0x3fa64f[_0x788c('0x1e')]);process[_0x788c('0x53')](0x1);});}catch(_0x458333){logger[_0x788c('0x52')](_0x788c('0x8c'),_0x458333[_0x788c('0x1e')]);process[_0x788c('0x53')](0x1);}},'error':function(_0x248995,_0x55da35,_0x2e271f,_0x576ed8){throw new Error(_0x576ed8);}});});}function validate(){if(process['argv']&&process[_0x788c('0x8d')][_0x788c('0x17')]<0x4){throw new Error(_0x788c('0x8e'));}var _0x213842=path[_0x788c('0x10')](config['root'],_0x788c('0x5d'),process[_0x788c('0x8d')][0x2]);if(!fs['existsSync'](_0x213842)){throw new Error(_0x788c('0x8f'));}var _0x2e0f10={};try{_0x2e0f10=JSON[_0x788c('0x90')](process[_0x788c('0x8d')][0x3]);if(!_0x2e0f10[_0x788c('0x59')]){throw new Error(_0x788c('0x91'));}var _0xb07817=0x0;if(_0x2e0f10[_0x788c('0x59')][_0x788c('0x31')]){_0xb07817=0x1;}if(!_0x2e0f10[_0x788c('0x2f')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x5fa29d){throw new Error(_0x788c('0x92'));}var _0x2fe728=[];try{_0x2fe728=_['map'](JSON[_0x788c('0x90')](process['argv'][0x4]),'id');}catch(_0x3804b3){logger[_0x788c('0x62')]('No\x20agent\x20available');}main(_0x213842,_0x2e0f10,_0x2fe728,_0xb07817);}validate();process['on'](_0x788c('0x93'),handleStop);process['on'](_0x788c('0x94'),handleUncaughtException);
\ No newline at end of file
index 9d9e28c..d88d968 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b76=['destexten','Queue','Date','agentcalledAt','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Connect','agentconnectAt','Agent\x20Complete','holdtime','Talk\x20Time','talktime','Member\x20Name','membername','UniqueId','uniqueid','Answer\x20Time','answertime','Complete\x20Time','endtime','Duration','duration','Billable\x20Time','billableseconds','getSubjects','string','[xCALLY\x20Ticket]','toLowerCase','voice','inbound','push','variable','queue','calleridnum','outbound','Outbound\x20Call','destcalleridnum','getDescriptions','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','Caller\x20Name','calleridname','Call\x20To'];(function(_0x18ec29,_0x1b641a){var _0x17092b=function(_0x5b2c41){while(--_0x5b2c41){_0x18ec29['push'](_0x18ec29['shift']());}};_0x17092b(++_0x1b641a);}(_0x8b76,0x127));var _0x68b7=function(_0x4d618a,_0x5ae259){_0x4d618a=_0x4d618a-0x0;var _0x5229cc=_0x8b76[_0x4d618a];return _0x5229cc;};'use strict';exports[_0x68b7('0x0')]=function(_0x3fd5a0,_0x4d57f0){var _0x525ff5=[{'type':_0x68b7('0x1'),'content':_0x68b7('0x2'),'variableName':null}];switch(_0x3fd5a0[_0x68b7('0x3')]()){case _0x68b7('0x4'):switch(_0x4d57f0[_0x68b7('0x3')]()){case _0x68b7('0x5'):_0x525ff5[_0x68b7('0x6')]({'type':_0x68b7('0x7'),'content':'','variableName':_0x68b7('0x8')});_0x525ff5[_0x68b7('0x6')]({'type':_0x68b7('0x7'),'content':'','variableName':_0x68b7('0x9')});break;case _0x68b7('0xa'):_0x525ff5[_0x68b7('0x6')]({'type':'string','content':_0x68b7('0xb'),'variableName':null});_0x525ff5[_0x68b7('0x6')]({'type':_0x68b7('0x7'),'content':'','variableName':_0x68b7('0xc')});break;}}return _0x525ff5;};exports[_0x68b7('0xd')]=function(_0x36bfba,_0x446276){var _0x3f1ea6=[];switch(_0x36bfba[_0x68b7('0x3')]()){case _0x68b7('0x4'):switch(_0x446276[_0x68b7('0x3')]()){case _0x68b7('0x5'):_0x3f1ea6=[{'type':_0x68b7('0x1'),'content':_0x68b7('0xe'),'key':null,'keyType':null,'variableName':null},{'type':_0x68b7('0xf'),'content':'','key':_0x68b7('0x10'),'keyType':_0x68b7('0x7'),'variableName':_0x68b7('0x9')},{'type':_0x68b7('0xf'),'content':'','key':_0x68b7('0x11'),'keyType':_0x68b7('0x7'),'variableName':_0x68b7('0x12')},{'type':_0x68b7('0xf'),'content':'','key':_0x68b7('0x13'),'keyType':_0x68b7('0x7'),'variableName':_0x68b7('0x14')},{'type':_0x68b7('0xf'),'content':'','key':_0x68b7('0x15'),'keyType':_0x68b7('0x7'),'variableName':'queue'},{'type':'keyValue','content':'','key':'UniqueId','keyType':_0x68b7('0x7'),'variableName':'uniqueid'},{'type':_0x68b7('0xf'),'content':'','key':_0x68b7('0x16'),'keyType':_0x68b7('0x7'),'variableName':_0x68b7('0x17')},{'type':_0x68b7('0x1'),'content':'***\x20Agent\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0x68b7('0xf'),'content':'','key':'Agent\x20Name','keyType':'variable','variableName':'destcalleridname'},{'type':'keyValue','content':'','key':_0x68b7('0x18'),'keyType':_0x68b7('0x7'),'variableName':'destcalleridnum'},{'type':_0x68b7('0x1'),'content':_0x68b7('0x19'),'key':null,'keyType':null,'variableName':null},{'type':_0x68b7('0xf'),'content':'','key':_0x68b7('0x1a'),'keyType':_0x68b7('0x7'),'variableName':'agentcalledAt'},{'type':'keyValue','content':'','key':_0x68b7('0x1b'),'keyType':_0x68b7('0x7'),'variableName':_0x68b7('0x1c')},{'type':_0x68b7('0xf'),'content':'','key':_0x68b7('0x1d'),'keyType':_0x68b7('0x7'),'variableName':'agentcompleteAt'},{'type':'keyValue','content':'','key':'Hold\x20Time','keyType':_0x68b7('0x7'),'variableName':_0x68b7('0x1e')},{'type':_0x68b7('0xf'),'content':'','key':_0x68b7('0x1f'),'keyType':_0x68b7('0x7'),'variableName':_0x68b7('0x20')}];break;case _0x68b7('0xa'):_0x3f1ea6=[{'type':'string','content':_0x68b7('0xe'),'variableName':null},{'type':'keyValue','content':'','key':'Called\x20Number','keyType':_0x68b7('0x7'),'keyContent':'','variableName':'destcalleridnum'},{'type':_0x68b7('0xf'),'content':'','key':_0x68b7('0x21'),'keyType':_0x68b7('0x7'),'keyContent':'','variableName':_0x68b7('0x22')},{'type':_0x68b7('0xf'),'content':'','key':_0x68b7('0x23'),'keyType':_0x68b7('0x7'),'keyContent':'','variableName':_0x68b7('0x24')},{'type':_0x68b7('0xf'),'content':'','key':_0x68b7('0x16'),'keyType':_0x68b7('0x7'),'keyContent':'','variableName':'starttime'},{'type':_0x68b7('0x1'),'content':_0x68b7('0x19')},{'type':'keyValue','content':'','key':_0x68b7('0x25'),'keyType':_0x68b7('0x7'),'keyContent':'','variableName':_0x68b7('0x26')},{'type':'keyValue','content':'','key':_0x68b7('0x27'),'keyType':_0x68b7('0x7'),'keyContent':'','variableName':_0x68b7('0x28')},{'type':'keyValue','content':'','key':_0x68b7('0x29'),'keyType':_0x68b7('0x7'),'keyContent':'','variableName':_0x68b7('0x2a')},{'type':_0x68b7('0xf'),'content':'','key':_0x68b7('0x2b'),'keyType':_0x68b7('0x7'),'keyContent':'','variableName':_0x68b7('0x2c')}];break;}}return _0x3f1ea6;};
\ No newline at end of file
+var _0xdc82=['inbound','push','queue','string','Outbound\x20Call','variable','destcalleridnum','getDescriptions','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','Caller\x20Name','calleridname','Call\x20To','Queue','UniqueId','uniqueid','agentcalledAt','destcalleridname','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Connect','agentconnectAt','Agent\x20Complete','agentcompleteAt','holdtime','Talk\x20Time','outbound','membername','Date','Answer\x20Time','Complete\x20Time','endtime','Duration','duration','Billable\x20Time','getSubjects','[xCALLY\x20Ticket]','toLowerCase','voice'];(function(_0x463870,_0x2fdc1f){var _0x406666=function(_0x55d4d9){while(--_0x55d4d9){_0x463870['push'](_0x463870['shift']());}};_0x406666(++_0x2fdc1f);}(_0xdc82,0xec));var _0x2dc8=function(_0x4d042e,_0x4292b1){_0x4d042e=_0x4d042e-0x0;var _0x40f59c=_0xdc82[_0x4d042e];return _0x40f59c;};'use strict';exports[_0x2dc8('0x0')]=function(_0x26894f,_0x27df2b){var _0x161411=[{'type':'string','content':_0x2dc8('0x1'),'variableName':null}];switch(_0x26894f[_0x2dc8('0x2')]()){case _0x2dc8('0x3'):switch(_0x27df2b['toLowerCase']()){case _0x2dc8('0x4'):_0x161411[_0x2dc8('0x5')]({'type':'variable','content':'','variableName':_0x2dc8('0x6')});_0x161411[_0x2dc8('0x5')]({'type':'variable','content':'','variableName':'calleridnum'});break;case'outbound':_0x161411[_0x2dc8('0x5')]({'type':_0x2dc8('0x7'),'content':_0x2dc8('0x8'),'variableName':null});_0x161411['push']({'type':_0x2dc8('0x9'),'content':'','variableName':_0x2dc8('0xa')});break;}}return _0x161411;};exports[_0x2dc8('0xb')]=function(_0x32a4a7,_0x4ff2b0){var _0x24be3c=[];switch(_0x32a4a7[_0x2dc8('0x2')]()){case _0x2dc8('0x3'):switch(_0x4ff2b0['toLowerCase']()){case'inbound':_0x24be3c=[{'type':_0x2dc8('0x7'),'content':_0x2dc8('0xc'),'key':null,'keyType':null,'variableName':null},{'type':_0x2dc8('0xd'),'content':'','key':_0x2dc8('0xe'),'keyType':_0x2dc8('0x9'),'variableName':'calleridnum'},{'type':_0x2dc8('0xd'),'content':'','key':_0x2dc8('0xf'),'keyType':_0x2dc8('0x9'),'variableName':_0x2dc8('0x10')},{'type':'keyValue','content':'','key':_0x2dc8('0x11'),'keyType':'variable','variableName':'destexten'},{'type':_0x2dc8('0xd'),'content':'','key':_0x2dc8('0x12'),'keyType':_0x2dc8('0x9'),'variableName':_0x2dc8('0x6')},{'type':_0x2dc8('0xd'),'content':'','key':_0x2dc8('0x13'),'keyType':_0x2dc8('0x9'),'variableName':_0x2dc8('0x14')},{'type':_0x2dc8('0xd'),'content':'','key':'Date','keyType':_0x2dc8('0x9'),'variableName':_0x2dc8('0x15')},{'type':'string','content':'***\x20Agent\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0x2dc8('0xd'),'content':'','key':'Agent\x20Name','keyType':_0x2dc8('0x9'),'variableName':_0x2dc8('0x16')},{'type':_0x2dc8('0xd'),'content':'','key':_0x2dc8('0x17'),'keyType':_0x2dc8('0x9'),'variableName':_0x2dc8('0xa')},{'type':_0x2dc8('0x7'),'content':_0x2dc8('0x18'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':'Agent\x20Ring','keyType':'variable','variableName':_0x2dc8('0x15')},{'type':'keyValue','content':'','key':_0x2dc8('0x19'),'keyType':_0x2dc8('0x9'),'variableName':_0x2dc8('0x1a')},{'type':_0x2dc8('0xd'),'content':'','key':_0x2dc8('0x1b'),'keyType':_0x2dc8('0x9'),'variableName':_0x2dc8('0x1c')},{'type':'keyValue','content':'','key':'Hold\x20Time','keyType':_0x2dc8('0x9'),'variableName':_0x2dc8('0x1d')},{'type':_0x2dc8('0xd'),'content':'','key':_0x2dc8('0x1e'),'keyType':'variable','variableName':'talktime'}];break;case _0x2dc8('0x1f'):_0x24be3c=[{'type':_0x2dc8('0x7'),'content':'***\x20Call\x20Info\x20***','variableName':null},{'type':_0x2dc8('0xd'),'content':'','key':'Called\x20Number','keyType':'variable','keyContent':'','variableName':_0x2dc8('0xa')},{'type':'keyValue','content':'','key':'Member\x20Name','keyType':_0x2dc8('0x9'),'keyContent':'','variableName':_0x2dc8('0x20')},{'type':_0x2dc8('0xd'),'content':'','key':_0x2dc8('0x13'),'keyType':_0x2dc8('0x9'),'keyContent':'','variableName':'uniqueid'},{'type':_0x2dc8('0xd'),'content':'','key':_0x2dc8('0x21'),'keyType':_0x2dc8('0x9'),'keyContent':'','variableName':'starttime'},{'type':_0x2dc8('0x7'),'content':_0x2dc8('0x18')},{'type':_0x2dc8('0xd'),'content':'','key':_0x2dc8('0x22'),'keyType':_0x2dc8('0x9'),'keyContent':'','variableName':'answertime'},{'type':_0x2dc8('0xd'),'content':'','key':_0x2dc8('0x23'),'keyType':_0x2dc8('0x9'),'keyContent':'','variableName':_0x2dc8('0x24')},{'type':_0x2dc8('0xd'),'content':'','key':_0x2dc8('0x25'),'keyType':_0x2dc8('0x9'),'keyContent':'','variableName':_0x2dc8('0x26')},{'type':_0x2dc8('0xd'),'content':'','key':_0x2dc8('0x27'),'keyType':_0x2dc8('0x9'),'keyContent':'','variableName':'billableseconds'}];break;}}return _0x24be3c;};
\ No newline at end of file
index b1a9bbc..07be4ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb072=['chat-interactions','whatsapp-interactions','upperFirst','InteractionId','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','role','Interaction','findOne','then','update','info','catch','user','query','clone','body','fax','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions','fax-interactions','sms-interactions'];(function(_0x5b9c34,_0x409661){var _0x5f4611=function(_0x22926c){while(--_0x22926c){_0x5b9c34['push'](_0x5b9c34['shift']());}};_0x5f4611(++_0x409661);}(_0xb072,0x77));var _0x2b07=function(_0x1b77bb,_0x4149c6){_0x1b77bb=_0x1b77bb-0x0;var _0x3317ae=_0xb072[_0x1b77bb];return _0x3317ae;};'use strict';var _=require('lodash');var db=require(_0x2b07('0x0'))['db'];var loggers={'openchannel':require(_0x2b07('0x1'))(_0x2b07('0x2')),'mail':require(_0x2b07('0x1'))(_0x2b07('0x3')),'fax':require(_0x2b07('0x1'))(_0x2b07('0x4')),'sms':require(_0x2b07('0x1'))(_0x2b07('0x5')),'chat':require('../../config/logger')(_0x2b07('0x6')),'whatsapp':require('../../config/logger')(_0x2b07('0x7'))};function getInteractionId(_0x32b479,_0x36f03a,_0x18a0ee){if(_0x32b479&&_0x32b479[_[_0x2b07('0x8')](_0x18a0ee)+'InteractionId']){return _0x32b479[_[_0x2b07('0x8')](_0x18a0ee)+_0x2b07('0x9')];}else if(_0x32b479&&_0x32b479['id']){return _0x32b479['id'];}else if(_0x36f03a&&_0x36f03a['id']){return _0x36f03a['id'];}else{return'unknown';}}function log(_0x97e44f,_0x552b9b,_0x43786e,_0x43664c,_0x13ef78,_0x10178f){loggers[_0x13ef78[_0x2b07('0xa')]()][_0x97e44f](_0x2b07('0xb'),_0x10178f[_0x2b07('0xc')](),_0x552b9b?_0x552b9b['id']:null,_0x552b9b?_0x552b9b['name']:null,_0x552b9b?_0x552b9b[_0x2b07('0xd')]:null,getInteractionId(_0x43786e,_0x43664c,_0x13ef78),_0x43786e?JSON['stringify'](_0x43786e):'null');}function updateUser(_0x4ef9a5,_0x46144c,_0x1f0bb3,_0x4565f4,_0x53508f){db[_[_0x2b07('0x8')](_0x4565f4)+_0x2b07('0xe')][_0x2b07('0xf')]({'where':{'id':getInteractionId(_0x46144c,_0x1f0bb3,_0x4565f4)}})[_0x2b07('0x10')](function(_0x397119){if(_0x397119){return _0x397119[_0x2b07('0x11')]({'UserId':_0x4ef9a5?_0x4ef9a5['id']:null});}})[_0x2b07('0x10')](function(_0x1c26d5){if(_0x1c26d5){log(_0x2b07('0x12'),_0x4ef9a5,_0x46144c,_0x1f0bb3,_0x4565f4,_0x53508f);}})[_0x2b07('0x13')](function(){log('error',_0x4ef9a5,_0x46144c,_0x1f0bb3,_0x4565f4,_0x53508f);});}exports['tracked']=function(_0x156f00,_0x28ee78){return function(_0x2f8fe0,_0x29444c,_0x1bb1a0){var _0x5c9901=_0x2f8fe0[_0x2b07('0x14')];var _0x49063b={};var _0x2c874a=_0x2f8fe0[_0x2b07('0x15')];if(_0x49063b){_0x49063b=_[_0x2b07('0x16')](_0x2f8fe0[_0x2b07('0x17')]);_0x49063b=_['omit'](_0x49063b,[_0x2b07('0x17'),'html','phone',_0x2b07('0x18'),'mobile']);}updateUser(_0x5c9901,_0x49063b,_0x2c874a,_0x156f00,_0x28ee78);_0x1bb1a0(null);};};
\ No newline at end of file
+var _0xb2d4=['sms-interactions','chat-interactions','InteractionId','upperFirst','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','role','stringify','null','Interaction','findOne','then','update','info','error','tracked','user','query','clone','body','omit','phone','fax','mobile','lodash','../../config/logger','mail-interactions','fax-interactions'];(function(_0x517724,_0x51e5c0){var _0x4c73a5=function(_0x1a3858){while(--_0x1a3858){_0x517724['push'](_0x517724['shift']());}};_0x4c73a5(++_0x51e5c0);}(_0xb2d4,0x10a));var _0x4b2d=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0xb2d4[_0x56482c];return _0x5aae7a;};'use strict';var _=require(_0x4b2d('0x0'));var db=require('../../mysqldb')['db'];var loggers={'openchannel':require(_0x4b2d('0x1'))('openchannel-interactions'),'mail':require(_0x4b2d('0x1'))(_0x4b2d('0x2')),'fax':require(_0x4b2d('0x1'))(_0x4b2d('0x3')),'sms':require(_0x4b2d('0x1'))(_0x4b2d('0x4')),'chat':require('../../config/logger')(_0x4b2d('0x5')),'whatsapp':require('../../config/logger')('whatsapp-interactions')};function getInteractionId(_0x464485,_0x39b19a,_0x3e2d38){if(_0x464485&&_0x464485[_['upperFirst'](_0x3e2d38)+_0x4b2d('0x6')]){return _0x464485[_[_0x4b2d('0x7')](_0x3e2d38)+_0x4b2d('0x6')];}else if(_0x464485&&_0x464485['id']){return _0x464485['id'];}else if(_0x39b19a&&_0x39b19a['id']){return _0x39b19a['id'];}else{return'unknown';}}function log(_0x103031,_0x45cec1,_0x5e8588,_0x3b0467,_0x162c98,_0x3a2174){loggers[_0x162c98[_0x4b2d('0x8')]()][_0x103031](_0x4b2d('0x9'),_0x3a2174[_0x4b2d('0xa')](),_0x45cec1?_0x45cec1['id']:null,_0x45cec1?_0x45cec1[_0x4b2d('0xb')]:null,_0x45cec1?_0x45cec1[_0x4b2d('0xc')]:null,getInteractionId(_0x5e8588,_0x3b0467,_0x162c98),_0x5e8588?JSON[_0x4b2d('0xd')](_0x5e8588):_0x4b2d('0xe'));}function updateUser(_0x1d64be,_0x524c03,_0x18d071,_0xdfec12,_0x8aecbb){db[_[_0x4b2d('0x7')](_0xdfec12)+_0x4b2d('0xf')][_0x4b2d('0x10')]({'where':{'id':getInteractionId(_0x524c03,_0x18d071,_0xdfec12)}})[_0x4b2d('0x11')](function(_0x13bdac){if(_0x13bdac){return _0x13bdac[_0x4b2d('0x12')]({'UserId':_0x1d64be?_0x1d64be['id']:null});}})['then'](function(_0x27c618){if(_0x27c618){log(_0x4b2d('0x13'),_0x1d64be,_0x524c03,_0x18d071,_0xdfec12,_0x8aecbb);}})['catch'](function(){log(_0x4b2d('0x14'),_0x1d64be,_0x524c03,_0x18d071,_0xdfec12,_0x8aecbb);});}exports[_0x4b2d('0x15')]=function(_0x1584e4,_0x5eaa6a){return function(_0x53d0d3,_0x4327eb,_0x1a97e9){var _0x1d6adf=_0x53d0d3[_0x4b2d('0x16')];var _0x317065={};var _0x5d283e=_0x53d0d3[_0x4b2d('0x17')];if(_0x317065){_0x317065=_[_0x4b2d('0x18')](_0x53d0d3[_0x4b2d('0x19')]);_0x317065=_[_0x4b2d('0x1a')](_0x317065,[_0x4b2d('0x19'),'html',_0x4b2d('0x1b'),_0x4b2d('0x1c'),_0x4b2d('0x1d')]);}updateUser(_0x1d6adf,_0x317065,_0x5d283e,_0x1584e4,_0x5eaa6a);_0x1a97e9(null);};};
\ No newline at end of file
index f20d8d6..aa5a1d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ff9=['use','then','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','User','admin','isUserLimit','crypto','util','../../mysqldb','../../config/environment','data1','license','split','aes-256-ctr','format','update','base64','utf8','final','parse','hasOwnProperty'];(function(_0x20778c,_0xfb62d7){var _0xab780b=function(_0x592ed7){while(--_0x592ed7){_0x20778c['push'](_0x20778c['shift']());}};_0xab780b(++_0xfb62d7);}(_0x5ff9,0x161));var _0x95ff=function(_0x1373f9,_0x775144){_0x1373f9=_0x1373f9-0x0;var _0x238b04=_0x5ff9[_0x1373f9];return _0x238b04;};'use strict';var crypto=require(_0x95ff('0x0'));var util=require(_0x95ff('0x1'));var compose=require('composable-middleware');var db=require(_0x95ff('0x2'))['db'];var config=require(_0x95ff('0x3'));function getValueFromLicense(_0x43f1f9,_0x229d4c){if(_0x43f1f9&&_0x229d4c){if(_0x229d4c[_0x95ff('0x4')]&&_0x229d4c[_0x95ff('0x5')]){var _0x91ec38=_0x229d4c['data1'];var _0x5ea9c1=_0x229d4c['license'];var _0x19827a=_0x91ec38['split']('-')[0x4];var _0x1199c8=_0x91ec38[_0x95ff('0x6')]('-')[0x0];var _0x4db4f3=crypto['createDecipher'](_0x95ff('0x7'),util[_0x95ff('0x8')]('%s:%s:%s',_0x19827a,_0x91ec38,_0x1199c8));var _0x2af48a=_0x4db4f3[_0x95ff('0x9')](_0x5ea9c1,_0x95ff('0xa'),_0x95ff('0xb'));_0x2af48a+=_0x4db4f3[_0x95ff('0xc')](_0x95ff('0xb'));var _0x26c85a=JSON[_0x95ff('0xd')](_0x2af48a);return _0x26c85a[_0x95ff('0xe')](_0x43f1f9)?_0x26c85a[_0x43f1f9]:null;}}return null;}function isLimit(_0x1d9511,_0x3ade43,_0x31cbb8,_0x14cc25){var _0x56e8f7=_0x3ade43;return compose()[_0x95ff('0xf')](function(_0x21557f,_0x331409,_0x32e0aa){return db['License']['findOne']({'where':{'id':0x1},'raw':!![]})['then'](function(_0x2f918f){var _0x1d1f7e=getValueFromLicense(_0x1d9511,_0x2f918f);return _0x1d1f7e?_0x1d1f7e:_0x56e8f7;})[_0x95ff('0x10')](function(_0x1d264){_0x56e8f7=_0x1d264;return _0x31cbb8['count'](_0x14cc25);})[_0x95ff('0x10')](function(_0x381ccb){if(_0x381ccb>=_0x56e8f7){return _0x331409[_0x95ff('0x11')](0x193)[_0x95ff('0x12')]({'message':util[_0x95ff('0x8')](_0x95ff('0x13'),_0x1d9511)});}_0x32e0aa();})['catch'](function(_0xedf276){_0x32e0aa(_0xedf276);});});}function isUserLimit(){return isLimit('users',0x1,db[_0x95ff('0x14')],{'where':{'$or':[{'role':_0x95ff('0x15')},{'role':'user'}]}});}exports[_0x95ff('0x16')]=isUserLimit;
\ No newline at end of file
+var _0xfb14=['then','status','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','User','admin','user','isUserLimit','util','composable-middleware','../../mysqldb','../../config/environment','data1','license','split','createDecipher','aes-256-ctr','format','%s:%s:%s','update','base64','utf8','final','parse','hasOwnProperty','findOne'];(function(_0x2535ea,_0x2d381f){var _0x56c736=function(_0x220d27){while(--_0x220d27){_0x2535ea['push'](_0x2535ea['shift']());}};_0x56c736(++_0x2d381f);}(_0xfb14,0x1b9));var _0x4fb1=function(_0x393b88,_0xe6ce23){_0x393b88=_0x393b88-0x0;var _0x1a2390=_0xfb14[_0x393b88];return _0x1a2390;};'use strict';var crypto=require('crypto');var util=require(_0x4fb1('0x0'));var compose=require(_0x4fb1('0x1'));var db=require(_0x4fb1('0x2'))['db'];var config=require(_0x4fb1('0x3'));function getValueFromLicense(_0x4c457a,_0xeec494){if(_0x4c457a&&_0xeec494){if(_0xeec494[_0x4fb1('0x4')]&&_0xeec494[_0x4fb1('0x5')]){var _0x46b7c7=_0xeec494[_0x4fb1('0x4')];var _0x13cd59=_0xeec494[_0x4fb1('0x5')];var _0x16fcb8=_0x46b7c7[_0x4fb1('0x6')]('-')[0x4];var _0x53ced1=_0x46b7c7['split']('-')[0x0];var _0x4f6133=crypto[_0x4fb1('0x7')](_0x4fb1('0x8'),util[_0x4fb1('0x9')](_0x4fb1('0xa'),_0x16fcb8,_0x46b7c7,_0x53ced1));var _0x3fe149=_0x4f6133[_0x4fb1('0xb')](_0x13cd59,_0x4fb1('0xc'),_0x4fb1('0xd'));_0x3fe149+=_0x4f6133[_0x4fb1('0xe')](_0x4fb1('0xd'));var _0xb778b3=JSON[_0x4fb1('0xf')](_0x3fe149);return _0xb778b3[_0x4fb1('0x10')](_0x4c457a)?_0xb778b3[_0x4c457a]:null;}}return null;}function isLimit(_0x2ae887,_0x31afb4,_0x110bd4,_0x46e781){var _0x505413=_0x31afb4;return compose()['use'](function(_0x491db3,_0x999dd7,_0x304fd3){return db['License'][_0x4fb1('0x11')]({'where':{'id':0x1},'raw':!![]})[_0x4fb1('0x12')](function(_0x8193f5){var _0x26ae96=getValueFromLicense(_0x2ae887,_0x8193f5);return _0x26ae96?_0x26ae96:_0x505413;})[_0x4fb1('0x12')](function(_0x32e8aa){_0x505413=_0x32e8aa;return _0x110bd4['count'](_0x46e781);})[_0x4fb1('0x12')](function(_0xf75989){if(_0xf75989>=_0x505413){return _0x999dd7[_0x4fb1('0x13')](0x193)['json']({'message':util[_0x4fb1('0x9')](_0x4fb1('0x14'),_0x2ae887)});}_0x304fd3();})[_0x4fb1('0x15')](function(_0x23aa13){_0x304fd3(_0x23aa13);});});}function isUserLimit(){return isLimit(_0x4fb1('0x16'),0x1,db[_0x4fb1('0x17')],{'where':{'$or':[{'role':_0x4fb1('0x18')},{'role':_0x4fb1('0x19')}]}});}exports[_0x4fb1('0x1a')]=isUserLimit;
\ No newline at end of file
index 3c31515..81f7ab3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x170d=['YYYY-MM-DD','castTo','\x20AS\x20','text','field','$notIn','\x20OR\x20','\x20IS\x20NULL)','$in','NOT\x20IN\x20?','$ne','<>\x20?','$substring','$startsWith','$lt','$gt','>\x20?','$gte','BETWEEN\x20?\x20AND\x20?','start','$endsWith','$between','pop','DATE','utcOffset','hours','minutes','lodash','moment','parseSearch','sqlOperator','startsWith','[$or]','[$and]','split','slice','shift','match','forEach','filter','indexOf','map','conditions','operator','$eq','value','includes','$lte','add','format'];(function(_0x296231,_0x50b0fb){var _0x1f73e3=function(_0x53e236){while(--_0x53e236){_0x296231['push'](_0x296231['shift']());}};_0x1f73e3(++_0x50b0fb);}(_0x170d,0xe3));var _0xd170=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x170d[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0xd170('0x0'));var moment=require(_0xd170('0x1'));exports[_0xd170('0x2')]=function(_0x7bc141){var _0x51ccc7={'conditions':[]};_0x51ccc7[_0xd170('0x3')]=_[_0xd170('0x4')](_0x7bc141,_0xd170('0x5'))?'or':'and';var _0x3e6c3b=_0x7bc141['replace'](_0xd170('0x6'),'')['replace'](_0xd170('0x5'),'')[_0xd170('0x7')]('||');for(var _0xd53fc1=0x0;_0xd53fc1<_0x3e6c3b['length'];_0xd53fc1++){var _0x51b8c0=_0x3e6c3b[_0xd53fc1][_0xd170('0x7')](':=');var _0x27b247=_0x51b8c0[0x0];var _0xcad0fa=_0x51b8c0[_0xd170('0x8')](0x1);_0xcad0fa['forEach'](function(_0x1f38a3){var _0x25c3e2=_0x1f38a3[_0xd170('0x7')]('[')[_0xd170('0x9')]();var _0x55db20=_0x1f38a3[_0xd170('0xa')](/\[(.*?)\]/g);_0x55db20[_0xd170('0xb')](function(_0x393dde){var _0x33529d=_0x393dde['split']('[')[_0xd170('0xc')](function(_0x358149){return _0x358149[_0xd170('0xd')](']')>-0x1;})[_0xd170('0xe')](function(_0x3798a4){return _0x3798a4['split'](']')[0x0];})[0x0];_0x51ccc7[_0xd170('0xf')]['push']({'field':_0x27b247,'operator':_0x25c3e2,'value':_0x33529d});});});}return _0x51ccc7;};exports['buildExpression']=function(_0x306be5,_0x375b90,_0x5d3548){var _0x4f72b0={};if(_0x375b90==='DATE'){if(_0x5d3548[_0xd170('0x10')]===_0xd170('0x11')){_0x5d3548[_0xd170('0x10')]='$between';_0x5d3548['value']+=','+_0x5d3548[_0xd170('0x12')];}else if(_[_0xd170('0x13')](['$gt',_0xd170('0x14')],_0x5d3548[_0xd170('0x10')])){_0x5d3548[_0xd170('0x12')]=moment(_0x5d3548[_0xd170('0x12')])[_0xd170('0x15')](0x1,'days')[_0xd170('0x16')](_0xd170('0x17'));}}if(_0x5d3548[_0xd170('0x18')]){_0x375b90=_0x5d3548[_0xd170('0x18')];_0x4f72b0['text']='CAST('+_0x306be5+'.'+_0x5d3548['field']+_0xd170('0x19')+_0x5d3548[_0xd170('0x18')]+')\x20'+parseOperator(_0x5d3548[_0xd170('0x10')]);}else{_0x4f72b0[_0xd170('0x1a')]=_0x306be5+'.'+_0x5d3548[_0xd170('0x1b')]+'\x20'+parseOperator(_0x5d3548[_0xd170('0x10')]);}if(_['includes'](['$ne',_0xd170('0x1c')],_0x5d3548[_0xd170('0x10')]))_0x4f72b0[_0xd170('0x1a')]='('+_0x4f72b0[_0xd170('0x1a')]+_0xd170('0x1d')+_0x306be5+'.'+_0x5d3548[_0xd170('0x1b')]+_0xd170('0x1e');_0x4f72b0[_0xd170('0x12')]=parseValue(_0x375b90,_0x5d3548[_0xd170('0x10')],_0x5d3548['value']);return _0x4f72b0;};function parseOperator(_0x9898a6){var _0xd460c3;switch(_0x9898a6){case _0xd170('0x1f'):_0xd460c3='IN\x20?';break;case _0xd170('0x1c'):_0xd460c3=_0xd170('0x20');break;case'$eq':_0xd460c3='=\x20?';break;case _0xd170('0x21'):_0xd460c3=_0xd170('0x22');break;case _0xd170('0x23'):case _0xd170('0x24'):case'$endsWith':_0xd460c3='LIKE\x20?';break;case _0xd170('0x25'):_0xd460c3='<\x20?';break;case _0xd170('0x26'):_0xd460c3=_0xd170('0x27');break;case _0xd170('0x14'):_0xd460c3='<=\x20?';break;case _0xd170('0x28'):_0xd460c3='>=\x20?';break;case'$between':_0xd460c3=_0xd170('0x29');break;}return _0xd460c3;}function parseValue(_0x198b4b,_0x50b0eb,_0x278680){var _0x2f5318={'start':undefined,'end':undefined};switch(_0x50b0eb){case'$in':case _0xd170('0x1c'):_0x2f5318[_0xd170('0x2a')]=_0x278680[_0xd170('0x7')](',');break;case _0xd170('0x23'):_0x2f5318['start']='%'+_0x278680+'%';break;case _0xd170('0x24'):_0x2f5318[_0xd170('0x2a')]=_0x278680+'%';break;case _0xd170('0x2b'):_0x2f5318[_0xd170('0x2a')]='%'+_0x278680;break;case _0xd170('0x2c'):var _0x349cd5=_0x278680[_0xd170('0x7')](',');var _0x278680=_0x349cd5[_0xd170('0x9')]();var _0xa622f4=_0x349cd5[_0xd170('0x2d')]();if(_0x198b4b===_0xd170('0x2e')){_0x278680=moment(_0x278680)['utcOffset'](0x0,!![])[_0xd170('0x16')]();_0xa622f4=moment(_0xa622f4)[_0xd170('0x2f')](0x0,!![])[_0xd170('0x15')](0x17,_0xd170('0x30'))[_0xd170('0x15')](0x3b,_0xd170('0x31'))['add'](0x3b,'seconds')[_0xd170('0x16')]();}_0x2f5318={'start':_0x278680,'end':_0xa622f4};break;default:_0x2f5318['start']=_0x278680;break;}return _0x2f5318;}
\ No newline at end of file
+var _0xdf90=['castTo','CAST(','field','\x20AS\x20','$ne','$notIn','text','\x20IS\x20NULL)','NOT\x20IN\x20?','$eq','=\x20?','<>\x20?','$substring','$endsWith','$lt','<\x20?','$gt','>\x20?','<=\x20?','$gte','BETWEEN\x20?\x20AND\x20?','$in','start','pop','DATE','utcOffset','format','hours','minutes','seconds','lodash','moment','parseSearch','sqlOperator','startsWith','[$or]','and','replace','[$and]','split','length','slice','forEach','shift','match','indexOf','conditions','push','buildExpression','operator','$between','value','includes','$lte','add','days','YYYY-MM-DD'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xdf90,0x174));var _0x0df9=function(_0x2d982d,_0x121028){_0x2d982d=_0x2d982d-0x0;var _0x4f36b0=_0xdf90[_0x2d982d];return _0x4f36b0;};'use strict';var _=require(_0x0df9('0x0'));var moment=require(_0x0df9('0x1'));exports[_0x0df9('0x2')]=function(_0x1fe73a){var _0x2868fd={'conditions':[]};_0x2868fd[_0x0df9('0x3')]=_[_0x0df9('0x4')](_0x1fe73a,_0x0df9('0x5'))?'or':_0x0df9('0x6');var _0x3d2aad=_0x1fe73a[_0x0df9('0x7')](_0x0df9('0x8'),'')['replace'](_0x0df9('0x5'),'')[_0x0df9('0x9')]('||');for(var _0xd97584=0x0;_0xd97584<_0x3d2aad[_0x0df9('0xa')];_0xd97584++){var _0x2f60dc=_0x3d2aad[_0xd97584][_0x0df9('0x9')](':=');var _0x4b059b=_0x2f60dc[0x0];var _0x1aadaa=_0x2f60dc[_0x0df9('0xb')](0x1);_0x1aadaa[_0x0df9('0xc')](function(_0x1bbf2e){var _0x41cce4=_0x1bbf2e[_0x0df9('0x9')]('[')[_0x0df9('0xd')]();var _0x5b301b=_0x1bbf2e[_0x0df9('0xe')](/\[(.*?)\]/g);_0x5b301b[_0x0df9('0xc')](function(_0x214fe2){var _0x5acc91=_0x214fe2[_0x0df9('0x9')]('[')['filter'](function(_0x12f8b4){return _0x12f8b4[_0x0df9('0xf')](']')>-0x1;})['map'](function(_0x73bd03){return _0x73bd03[_0x0df9('0x9')](']')[0x0];})[0x0];_0x2868fd[_0x0df9('0x10')][_0x0df9('0x11')]({'field':_0x4b059b,'operator':_0x41cce4,'value':_0x5acc91});});});}return _0x2868fd;};exports[_0x0df9('0x12')]=function(_0x1a8b3c,_0x30d2b0,_0x3403c4){var _0x59d091={};if(_0x30d2b0==='DATE'){if(_0x3403c4['operator']==='$eq'){_0x3403c4[_0x0df9('0x13')]=_0x0df9('0x14');_0x3403c4[_0x0df9('0x15')]+=','+_0x3403c4[_0x0df9('0x15')];}else if(_[_0x0df9('0x16')](['$gt',_0x0df9('0x17')],_0x3403c4['operator'])){_0x3403c4[_0x0df9('0x15')]=moment(_0x3403c4[_0x0df9('0x15')])[_0x0df9('0x18')](0x1,_0x0df9('0x19'))['format'](_0x0df9('0x1a'));}}if(_0x3403c4[_0x0df9('0x1b')]){_0x30d2b0=_0x3403c4[_0x0df9('0x1b')];_0x59d091['text']=_0x0df9('0x1c')+_0x1a8b3c+'.'+_0x3403c4[_0x0df9('0x1d')]+_0x0df9('0x1e')+_0x3403c4[_0x0df9('0x1b')]+')\x20'+parseOperator(_0x3403c4[_0x0df9('0x13')]);}else{_0x59d091['text']=_0x1a8b3c+'.'+_0x3403c4['field']+'\x20'+parseOperator(_0x3403c4[_0x0df9('0x13')]);}if(_['includes']([_0x0df9('0x1f'),_0x0df9('0x20')],_0x3403c4[_0x0df9('0x13')]))_0x59d091['text']='('+_0x59d091[_0x0df9('0x21')]+'\x20OR\x20'+_0x1a8b3c+'.'+_0x3403c4[_0x0df9('0x1d')]+_0x0df9('0x22');_0x59d091[_0x0df9('0x15')]=parseValue(_0x30d2b0,_0x3403c4[_0x0df9('0x13')],_0x3403c4['value']);return _0x59d091;};function parseOperator(_0x43ea0f){var _0x1495d2;switch(_0x43ea0f){case'$in':_0x1495d2='IN\x20?';break;case'$notIn':_0x1495d2=_0x0df9('0x23');break;case _0x0df9('0x24'):_0x1495d2=_0x0df9('0x25');break;case _0x0df9('0x1f'):_0x1495d2=_0x0df9('0x26');break;case _0x0df9('0x27'):case'$startsWith':case _0x0df9('0x28'):_0x1495d2='LIKE\x20?';break;case _0x0df9('0x29'):_0x1495d2=_0x0df9('0x2a');break;case _0x0df9('0x2b'):_0x1495d2=_0x0df9('0x2c');break;case'$lte':_0x1495d2=_0x0df9('0x2d');break;case _0x0df9('0x2e'):_0x1495d2='>=\x20?';break;case'$between':_0x1495d2=_0x0df9('0x2f');break;}return _0x1495d2;}function parseValue(_0x1e8f55,_0x152b03,_0x292a41){var _0x5ce6ca={'start':undefined,'end':undefined};switch(_0x152b03){case _0x0df9('0x30'):case _0x0df9('0x20'):_0x5ce6ca['start']=_0x292a41[_0x0df9('0x9')](',');break;case _0x0df9('0x27'):_0x5ce6ca[_0x0df9('0x31')]='%'+_0x292a41+'%';break;case'$startsWith':_0x5ce6ca[_0x0df9('0x31')]=_0x292a41+'%';break;case _0x0df9('0x28'):_0x5ce6ca['start']='%'+_0x292a41;break;case _0x0df9('0x14'):var _0x462666=_0x292a41['split'](',');var _0x292a41=_0x462666[_0x0df9('0xd')]();var _0x3ef65b=_0x462666[_0x0df9('0x32')]();if(_0x1e8f55===_0x0df9('0x33')){_0x292a41=moment(_0x292a41)[_0x0df9('0x34')](0x0,!![])[_0x0df9('0x35')]();_0x3ef65b=moment(_0x3ef65b)[_0x0df9('0x34')](0x0,!![])[_0x0df9('0x18')](0x17,_0x0df9('0x36'))[_0x0df9('0x18')](0x3b,_0x0df9('0x37'))[_0x0df9('0x18')](0x3b,_0x0df9('0x38'))[_0x0df9('0x35')]();}_0x5ce6ca={'start':_0x292a41,'end':_0x3ef65b};break;default:_0x5ce6ca[_0x0df9('0x31')]=_0x292a41;break;}return _0x5ce6ca;}
\ No newline at end of file
index c961f9d..f28a7a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['$gte','YYYY-MM-DD','utc','$lte','format','name','uniqueid','isArray','limit','offset','map','indexOf','priority','col','unsigned','DESC','length','omit','isObject','isString','hasOwnProperty','match','^[+]?[0-9]*$','isEmail','getFullTextValue','forEach','join','getOptions','query','$id','model','intersection','attributes','nolimit','order','sort','where','filters','pick','filter','value','VIRTUAL','lower','options','moment','parse','keys','includes','fields','split','isEmpty','forOwn','find','type','DATE','isPlainObject'];(function(_0x30cc93,_0x6e3e25){var _0x3f0d7e=function(_0x4e18cf){while(--_0x4e18cf){_0x30cc93['push'](_0x30cc93['shift']());}};_0x3f0d7e(++_0x6e3e25);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x119ec0,_0x206327){_0x119ec0=_0x119ec0-0x0;var _0x56f82b=_0x7fbe[_0x119ec0];return _0x56f82b;};'use strict';var _=require('lodash');var sequelize=require('sequelize');var moment=require(_0xe7fb('0x0'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x183779){var _0x294c21=['ne'];try{var _0x1703d5=JSON[_0xe7fb('0x1')](_0x183779);var _0x47625b=Object[_0xe7fb('0x2')](_0x1703d5)[0x0];return _0x294c21[_0xe7fb('0x3')](_0x47625b);}catch(_0x36ab90){return![];}}function getOperatorValue(_0x5dbf04){var _0x290172=JSON[_0xe7fb('0x1')](_0x5dbf04);var _0x24cd67=Object[_0xe7fb('0x2')](_0x290172)[0x0];var _0x5ad75b=_0x290172[_0x24cd67];return{['$'+_0x24cd67]:_0x5ad75b};}exports[_0xe7fb('0x4')]=function(_0x228f6b){var _0x1d0741=null;if(_0x228f6b){_0x1d0741=_0x228f6b[_0xe7fb('0x5')](',');}return _0x1d0741;};exports['filters']=function(_0x558857,_0x29edb2){var _0x2f2ea0={};if(!_[_0xe7fb('0x6')](_0x558857)){_[_0xe7fb('0x7')](_0x558857,function(_0x2a2223,_0x42435c){try{if(_0x29edb2){var _0x3e934b=_[_0xe7fb('0x8')](_0x29edb2,{'name':_0x42435c})||{};if(hasSequelizeOperator(_0x2a2223)){_0x2f2ea0[_0x42435c]=getOperatorValue(_0x2a2223);}else if(_0x3e934b[_0xe7fb('0x9')]===_0xe7fb('0xa')&&_[_0xe7fb('0xb')](_0x2a2223)){var _0x188e1d=JSON[_0xe7fb('0x1')](_0x2a2223);var _0x45fe75={'$gte':moment(moment(_0x188e1d[_0xe7fb('0xc')])['format'](_0xe7fb('0xd')))[_0xe7fb('0xe')]()['format'](),'$lte':moment(moment(_0x188e1d[_0xe7fb('0xf')])[_0xe7fb('0x10')]('YYYY-MM-DD'))[_0xe7fb('0xe')]()['subtract'](0x1,'s')[_0xe7fb('0x10')]()};_0x2f2ea0[_0x42435c]=_0x45fe75;}else if(_0x3e934b[_0xe7fb('0x11')]===_0xe7fb('0x12')){_0x2f2ea0[_0x42435c]=_0x2a2223;}else{_0x2f2ea0[_0x42435c]=_[_0xe7fb('0x13')](_0x2a2223)?_0x2a2223:JSON['parse'](_0x2a2223);}}else{_0x2f2ea0[_0x42435c]=_[_0xe7fb('0x13')](_0x2a2223)?_0x2a2223:JSON['parse'](_0x2a2223);}}catch(_0x293a47){_0x2f2ea0[_0x42435c]=_0x2a2223['split'](',');}});}return _0x2f2ea0;};exports[_0xe7fb('0x14')]=function(_0x4708f7){_0x4708f7=parseInt(_0x4708f7,0xa);if(!_0x4708f7||_0x4708f7<0x0){_0x4708f7=LIMIT_VALUE;}return _0x4708f7;};exports[_0xe7fb('0x15')]=function(_0x182269){_0x182269=parseInt(_0x182269,0xa);if(!_0x182269||_0x182269<0x0){_0x182269=0x0;}return _0x182269;};exports['sort']=function(_0x44466e){var _0x5d1c87,_0x11cae0=null;if(_0x44466e){_0x5d1c87=_0x44466e['split'](',');_0x11cae0=_[_0xe7fb('0x16')](_0x5d1c87,function(_0x4ea664){if(_0x4ea664[_0xe7fb('0x17')]('-')===0x0){return[_0x4ea664===_0xe7fb('0x18')?sequelize['cast'](sequelize[_0xe7fb('0x19')](_0xe7fb('0x18')),_0xe7fb('0x1a')):_0x4ea664['substr'](0x1),_0xe7fb('0x1b')];}else{return[_0x4ea664===_0xe7fb('0x18')?sequelize['cast'](sequelize['col']('priority'),_0xe7fb('0x1a')):_0x4ea664,'ASC'];}});}return _0x11cae0;};exports['omit']=function(_0x4026b1,_0x32e8b2){if(_[_0xe7fb('0x6')](_0x4026b1)){return _0x4026b1;}if(_['isArray'](_0x4026b1)){for(var _0x6c930=0x0;_0x6c930<_0x4026b1[_0xe7fb('0x1c')];_0x6c930+=0x1){_0x4026b1[_0x6c930]=this[_0xe7fb('0x1d')](_0x4026b1[_0x6c930],_0x32e8b2);}return _0x4026b1;}if(!_[_0xe7fb('0x1e')](_0x4026b1)){return _0x4026b1;}if(_[_0xe7fb('0x1f')](_0x32e8b2)){_0x32e8b2=[_0x32e8b2];}if(!_[_0xe7fb('0x13')](_0x32e8b2)){return _0x4026b1;}for(var _0x380130=0x0;_0x380130<_0x32e8b2['length'];_0x380130+=0x1){_['unset'](_0x4026b1,_0x32e8b2[_0x380130]);}for(var _0x1086e6 in _0x4026b1){if(_0x4026b1[_0xe7fb('0x20')](_0x1086e6)){_0x4026b1[_0x1086e6]=this[_0xe7fb('0x1d')](_0x4026b1[_0x1086e6],_0x32e8b2);}}return _0x4026b1;};exports['isNumeric']=function(_0xb1f2f4){return _0xb1f2f4[_0xe7fb('0x21')](RegExp(_0xe7fb('0x22')))?!![]:![];};exports[_0xe7fb('0x23')]=function(_0x219554){return _0x219554[_0xe7fb('0x21')](/^\S+@\S+$/)?!![]:![];};exports[_0xe7fb('0x24')]=function(_0x3dd0be){var _0x4ce993=[];_0x3dd0be[_0xe7fb('0x5')](/[ ,]+/)[_0xe7fb('0x25')](function(_0x29d1ca){_0x29d1ca=_0x29d1ca['replace'](/([^:]")"+/g,'$1');_0x29d1ca='+'+_0x29d1ca+'*';var _0x517d70=/[ `!@#$%^&*()_\-?~]/;if(_0x29d1ca[_0xe7fb('0x21')](_0x517d70))_0x29d1ca='\x22'+_0x29d1ca+'\x22';_0x4ce993['push'](_0x29d1ca);});return _0x4ce993[_0xe7fb('0x26')]('\x20');};exports[_0xe7fb('0x27')]=function(_0xe49053,_0x2a4745,_0x556368){var _0x1af472={},_0x1d56d3={};if(_0x2a4745[_0xe7fb('0x28')][_0xe7fb('0x29')]){_0x2a4745[_0xe7fb('0x28')]['id']=_0x2a4745['query'][_0xe7fb('0x29')];delete _0x2a4745[_0xe7fb('0x28')][_0xe7fb('0x29')];}_0x1af472[_0xe7fb('0x2a')]=_[_0xe7fb('0x16')](_0xe49053,_0xe7fb('0x11'));_0x1af472[_0xe7fb('0x28')]=_[_0xe7fb('0x2')](_0x2a4745[_0xe7fb('0x28')]);_0x1af472['filters']=_[_0xe7fb('0x2b')](_0x1af472[_0xe7fb('0x2a')],_0x1af472[_0xe7fb('0x28')]);_0x1d56d3['attributes']=_[_0xe7fb('0x2b')](_0x1af472[_0xe7fb('0x2a')],this[_0xe7fb('0x4')](_0x2a4745[_0xe7fb('0x28')][_0xe7fb('0x4')]));_0x1d56d3[_0xe7fb('0x2c')]=_0x1d56d3[_0xe7fb('0x2c')][_0xe7fb('0x1c')]?_0x1d56d3[_0xe7fb('0x2c')]:_0x1af472[_0xe7fb('0x2a')];if(!_0x2a4745[_0xe7fb('0x28')][_0xe7fb('0x20')](_0xe7fb('0x2d'))){_0x1d56d3[_0xe7fb('0x14')]=this[_0xe7fb('0x14')](_0x2a4745[_0xe7fb('0x28')][_0xe7fb('0x14')]);_0x1d56d3[_0xe7fb('0x15')]=this[_0xe7fb('0x15')](_0x2a4745['query'][_0xe7fb('0x15')]);}_0x1d56d3[_0xe7fb('0x2e')]=this[_0xe7fb('0x2f')](_0x2a4745[_0xe7fb('0x28')]['sort']);_0x1d56d3[_0xe7fb('0x30')]=this[_0xe7fb('0x31')](_[_0xe7fb('0x32')](_0x2a4745[_0xe7fb('0x28')],_0x1af472['filters']),_0xe49053);if(_0x2a4745[_0xe7fb('0x28')][_0xe7fb('0x33')]){var _0x34265f=_0xe49053;var _0x62a8a1=_0x2a4745[_0xe7fb('0x28')][_0xe7fb('0x33')];if(typeof _0x62a8a1==='object'){_0x34265f=_[_0xe7fb('0x33')](_0xe49053,function(_0x35139f){return _[_0xe7fb('0x3')](_0x62a8a1['columns'],_0x35139f[_0xe7fb('0x11')]);});_0x62a8a1=_0x62a8a1[_0xe7fb('0x34')];}_0x1d56d3['where']=_['merge'](_0x1d56d3['where'],{'$or':_['map'](_0x34265f,function(_0x5e0153){if(_0x5e0153[_0xe7fb('0x9')]!==_0xe7fb('0x35')){if(_0x556368){return sequelize[_0xe7fb('0x30')](sequelize['fn']('lower',sequelize[_0xe7fb('0x19')](_0x5e0153['name'])),{'$like':sequelize['fn'](_0xe7fb('0x36'),'%'+_0x2a4745[_0xe7fb('0x28')]['filter']+'%')});}else{var _0x108a16={};_0x108a16[_0x5e0153[_0xe7fb('0x11')]]={'$like':'%'+_0x2a4745[_0xe7fb('0x28')][_0xe7fb('0x33')]+'%'};return _0x108a16;}}})});}_0x1d56d3=_['merge']({},_0x1d56d3,_0x2a4745[_0xe7fb('0x37')]);return _0x1d56d3;};
\ No newline at end of file
+var _0xf494=['DATE','isPlainObject','$gte','format','YYYY-MM-DD','utc','name','uniqueid','isArray','sort','map','indexOf','priority','col','unsigned','DESC','cast','length','isObject','isString','unset','omit','isNumeric','^[+]?[0-9]*$','isEmail','replace','match','push','join','getOptions','query','$id','intersection','model','attributes','hasOwnProperty','nolimit','limit','offset','where','pick','filter','object','columns','value','type','lower','options','lodash','sequelize','moment','parse','keys','includes','fields','split','filters','forOwn'];(function(_0x4c007c,_0x4eba04){var _0x424dde=function(_0x6f31cb){while(--_0x6f31cb){_0x4c007c['push'](_0x4c007c['shift']());}};_0x424dde(++_0x4eba04);}(_0xf494,0x1c6));var _0x4f49=function(_0xbc25e1,_0x426f18){_0xbc25e1=_0xbc25e1-0x0;var _0x88abb8=_0xf494[_0xbc25e1];return _0x88abb8;};'use strict';var _=require(_0x4f49('0x0'));var sequelize=require(_0x4f49('0x1'));var moment=require(_0x4f49('0x2'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x52d22c){var _0x3aeeb8=['ne'];try{var _0x1d54cc=JSON[_0x4f49('0x3')](_0x52d22c);var _0x25677c=Object[_0x4f49('0x4')](_0x1d54cc)[0x0];return _0x3aeeb8[_0x4f49('0x5')](_0x25677c);}catch(_0x3267c1){return![];}}function getOperatorValue(_0x790e8b){var _0xc5e778=JSON[_0x4f49('0x3')](_0x790e8b);var _0x42b0e8=Object['keys'](_0xc5e778)[0x0];var _0x58e9a0=_0xc5e778[_0x42b0e8];return{['$'+_0x42b0e8]:_0x58e9a0};}exports[_0x4f49('0x6')]=function(_0x327bd5){var _0x31a725=null;if(_0x327bd5){_0x31a725=_0x327bd5[_0x4f49('0x7')](',');}return _0x31a725;};exports[_0x4f49('0x8')]=function(_0x174d0d,_0x151d8c){var _0x410884={};if(!_['isEmpty'](_0x174d0d)){_[_0x4f49('0x9')](_0x174d0d,function(_0x411759,_0x5bcfe5){try{if(_0x151d8c){var _0x15e7a1=_['find'](_0x151d8c,{'name':_0x5bcfe5})||{};if(hasSequelizeOperator(_0x411759)){_0x410884[_0x5bcfe5]=getOperatorValue(_0x411759);}else if(_0x15e7a1['type']===_0x4f49('0xa')&&_[_0x4f49('0xb')](_0x411759)){var _0x4bf89f=JSON[_0x4f49('0x3')](_0x411759);var _0x111a8b={'$gte':moment(moment(_0x4bf89f[_0x4f49('0xc')])[_0x4f49('0xd')](_0x4f49('0xe')))[_0x4f49('0xf')]()[_0x4f49('0xd')](),'$lte':moment(moment(_0x4bf89f['$lte'])[_0x4f49('0xd')](_0x4f49('0xe')))[_0x4f49('0xf')]()['subtract'](0x1,'s')['format']()};_0x410884[_0x5bcfe5]=_0x111a8b;}else if(_0x15e7a1[_0x4f49('0x10')]===_0x4f49('0x11')){_0x410884[_0x5bcfe5]=_0x411759;}else{_0x410884[_0x5bcfe5]=_[_0x4f49('0x12')](_0x411759)?_0x411759:JSON['parse'](_0x411759);}}else{_0x410884[_0x5bcfe5]=_[_0x4f49('0x12')](_0x411759)?_0x411759:JSON[_0x4f49('0x3')](_0x411759);}}catch(_0x4e85df){_0x410884[_0x5bcfe5]=_0x411759['split'](',');}});}return _0x410884;};exports['limit']=function(_0x560592){_0x560592=parseInt(_0x560592,0xa);if(!_0x560592||_0x560592<0x0){_0x560592=LIMIT_VALUE;}return _0x560592;};exports['offset']=function(_0xb2081a){_0xb2081a=parseInt(_0xb2081a,0xa);if(!_0xb2081a||_0xb2081a<0x0){_0xb2081a=0x0;}return _0xb2081a;};exports[_0x4f49('0x13')]=function(_0x1c2d70){var _0x407042,_0x5793ac=null;if(_0x1c2d70){_0x407042=_0x1c2d70[_0x4f49('0x7')](',');_0x5793ac=_[_0x4f49('0x14')](_0x407042,function(_0x197a49){if(_0x197a49[_0x4f49('0x15')]('-')===0x0){return[_0x197a49===_0x4f49('0x16')?sequelize['cast'](sequelize[_0x4f49('0x17')](_0x4f49('0x16')),_0x4f49('0x18')):_0x197a49['substr'](0x1),_0x4f49('0x19')];}else{return[_0x197a49===_0x4f49('0x16')?sequelize[_0x4f49('0x1a')](sequelize[_0x4f49('0x17')](_0x4f49('0x16')),_0x4f49('0x18')):_0x197a49,'ASC'];}});}return _0x5793ac;};exports['omit']=function(_0x3a947b,_0x429de7){if(_['isEmpty'](_0x3a947b)){return _0x3a947b;}if(_[_0x4f49('0x12')](_0x3a947b)){for(var _0x2c1519=0x0;_0x2c1519<_0x3a947b[_0x4f49('0x1b')];_0x2c1519+=0x1){_0x3a947b[_0x2c1519]=this['omit'](_0x3a947b[_0x2c1519],_0x429de7);}return _0x3a947b;}if(!_[_0x4f49('0x1c')](_0x3a947b)){return _0x3a947b;}if(_[_0x4f49('0x1d')](_0x429de7)){_0x429de7=[_0x429de7];}if(!_[_0x4f49('0x12')](_0x429de7)){return _0x3a947b;}for(var _0x148153=0x0;_0x148153<_0x429de7[_0x4f49('0x1b')];_0x148153+=0x1){_[_0x4f49('0x1e')](_0x3a947b,_0x429de7[_0x148153]);}for(var _0x4915af in _0x3a947b){if(_0x3a947b['hasOwnProperty'](_0x4915af)){_0x3a947b[_0x4915af]=this[_0x4f49('0x1f')](_0x3a947b[_0x4915af],_0x429de7);}}return _0x3a947b;};exports[_0x4f49('0x20')]=function(_0x605c91){return _0x605c91['match'](RegExp(_0x4f49('0x21')))?!![]:![];};exports[_0x4f49('0x22')]=function(_0x43d8e3){return _0x43d8e3['match'](/^\S+@\S+$/)?!![]:![];};exports['getFullTextValue']=function(_0x3e207f){var _0x27d004=[];_0x3e207f[_0x4f49('0x7')](/[ ,]+/)['forEach'](function(_0x1eaac6){_0x1eaac6=_0x1eaac6[_0x4f49('0x23')](/([^:]")"+/g,'$1');_0x1eaac6='+'+_0x1eaac6+'*';var _0x173657=/[ `!@#$%^&*()_\-?~]/;if(_0x1eaac6[_0x4f49('0x24')](_0x173657))_0x1eaac6='\x22'+_0x1eaac6+'\x22';_0x27d004[_0x4f49('0x25')](_0x1eaac6);});return _0x27d004[_0x4f49('0x26')]('\x20');};exports[_0x4f49('0x27')]=function(_0x45ae19,_0x1f38d3,_0x310ee2){var _0x2291d4={},_0xf65ac6={};if(_0x1f38d3[_0x4f49('0x28')][_0x4f49('0x29')]){_0x1f38d3[_0x4f49('0x28')]['id']=_0x1f38d3[_0x4f49('0x28')][_0x4f49('0x29')];delete _0x1f38d3[_0x4f49('0x28')][_0x4f49('0x29')];}_0x2291d4['model']=_[_0x4f49('0x14')](_0x45ae19,_0x4f49('0x10'));_0x2291d4[_0x4f49('0x28')]=_[_0x4f49('0x4')](_0x1f38d3[_0x4f49('0x28')]);_0x2291d4[_0x4f49('0x8')]=_[_0x4f49('0x2a')](_0x2291d4[_0x4f49('0x2b')],_0x2291d4[_0x4f49('0x28')]);_0xf65ac6[_0x4f49('0x2c')]=_[_0x4f49('0x2a')](_0x2291d4[_0x4f49('0x2b')],this[_0x4f49('0x6')](_0x1f38d3['query'][_0x4f49('0x6')]));_0xf65ac6[_0x4f49('0x2c')]=_0xf65ac6[_0x4f49('0x2c')][_0x4f49('0x1b')]?_0xf65ac6[_0x4f49('0x2c')]:_0x2291d4[_0x4f49('0x2b')];if(!_0x1f38d3[_0x4f49('0x28')][_0x4f49('0x2d')](_0x4f49('0x2e'))){_0xf65ac6[_0x4f49('0x2f')]=this[_0x4f49('0x2f')](_0x1f38d3[_0x4f49('0x28')][_0x4f49('0x2f')]);_0xf65ac6[_0x4f49('0x30')]=this['offset'](_0x1f38d3[_0x4f49('0x28')][_0x4f49('0x30')]);}_0xf65ac6['order']=this[_0x4f49('0x13')](_0x1f38d3[_0x4f49('0x28')]['sort']);_0xf65ac6[_0x4f49('0x31')]=this[_0x4f49('0x8')](_[_0x4f49('0x32')](_0x1f38d3[_0x4f49('0x28')],_0x2291d4[_0x4f49('0x8')]),_0x45ae19);if(_0x1f38d3[_0x4f49('0x28')][_0x4f49('0x33')]){var _0x5d464e=_0x45ae19;var _0x5e1461=_0x1f38d3['query'][_0x4f49('0x33')];if(typeof _0x5e1461===_0x4f49('0x34')){_0x5d464e=_[_0x4f49('0x33')](_0x45ae19,function(_0x373f90){return _[_0x4f49('0x5')](_0x5e1461[_0x4f49('0x35')],_0x373f90[_0x4f49('0x10')]);});_0x5e1461=_0x5e1461[_0x4f49('0x36')];}_0xf65ac6[_0x4f49('0x31')]=_['merge'](_0xf65ac6['where'],{'$or':_[_0x4f49('0x14')](_0x5d464e,function(_0x432b5d){if(_0x432b5d[_0x4f49('0x37')]!=='VIRTUAL'){if(_0x310ee2){return sequelize[_0x4f49('0x31')](sequelize['fn']('lower',sequelize['col'](_0x432b5d[_0x4f49('0x10')])),{'$like':sequelize['fn'](_0x4f49('0x38'),'%'+_0x1f38d3[_0x4f49('0x28')]['filter']+'%')});}else{var _0x287781={};_0x287781[_0x432b5d[_0x4f49('0x10')]]={'$like':'%'+_0x1f38d3['query'][_0x4f49('0x33')]+'%'};return _0x287781;}}})});}_0xf65ac6=_['merge']({},_0xf65ac6,_0x1f38d3[_0x4f49('0x39')]);return _0xf65ac6;};
\ No newline at end of file
index b3c2a8c..4f30c76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x572165,_0x6a45cc){var _0x8c8709=function(_0x43faab){while(--_0x43faab){_0x572165['push'](_0x572165['shift']());}};_0x8c8709(++_0x6a45cc);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2d8fc2,_0x1c461d){_0x2d8fc2=_0x2d8fc2-0x0;var _0x3a9e53=_0xa9e0[_0x2d8fc2];return _0x3a9e53;};'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
+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(_0x3a9661,_0x530b12){var _0x5bb119=function(_0x1278f){while(--_0x1278f){_0x3a9661['push'](_0x3a9661['shift']());}};_0x5bb119(++_0x530b12);}(_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
index e31fa93..9d3c062 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7236=['getFirstInterface','cpus','map','model','join','createHash','md5','update','digest','hex','getUuid','platform','licenseToken','test','dmidecode\x20--string\x20system-uuid','utf8','replace','hostname','ipAddress','substring','lodash','bimedia-machine-uuid','child_process','execSync','../environment','networkInterfaces','orderBy','keys','filter','family','IPv4','internal','concat','head','mac','00:00:00:00:00:00','address','127.0.0.1'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x7236,0x1b6));var _0x6723=function(_0x31b669,_0x53a48a){_0x31b669=_0x31b669-0x0;var _0x249483=_0x7236[_0x31b669];return _0x249483;};'use strict';var _=require(_0x6723('0x0'));var os=require('os');var crypto=require('crypto');var machine=require(_0x6723('0x1'));var exec=require(_0x6723('0x2'))[_0x6723('0x3')];var config=require(_0x6723('0x4'));function getInterfaces(){var _0x48528b=[];var _0xbd89f8=os[_0x6723('0x5')]();var _0x510054=_[_0x6723('0x6')](_[_0x6723('0x7')](_0xbd89f8));for(var _0x3f5015=0x0;_0x3f5015<_0x510054['length'];_0x3f5015++){var _0x4457a5=_0xbd89f8[_0x510054[_0x3f5015]][_0x6723('0x8')](function(_0x20da3){return _0x20da3[_0x6723('0x9')]===_0x6723('0xa')&&_0x20da3[_0x6723('0xb')]===![];});_0x48528b=_0x48528b[_0x6723('0xc')](_0x4457a5);}return _0x48528b;}function getFirstInterface(){var _0x129a0=_[_0x6723('0xd')](getInterfaces());return{'macAddress':_0x129a0&&_0x129a0[_0x6723('0xe')]?_0x129a0['mac']:_0x6723('0xf'),'ipAddress':_0x129a0&&_0x129a0[_0x6723('0x10')]?_0x129a0['address']:_0x6723('0x11')};}exports[_0x6723('0x12')]=getFirstInterface;function getCPUhash(){var _0x17cb0c=_['orderBy'](os[_0x6723('0x13')]()[_0x6723('0x14')](function(_0x58d7b7){return _0x58d7b7[_0x6723('0x15')];}))[_0x6723('0x16')](':');return crypto[_0x6723('0x17')](_0x6723('0x18'))[_0x6723('0x19')](_0x17cb0c)[_0x6723('0x1a')](_0x6723('0x1b'));}exports[_0x6723('0x1c')]=function(){var _0x43ccaa=os[_0x6723('0x1d')]();var _0x16ee89=/[0-9a-f-]{36}/;if(config[_0x6723('0x1e')]&&_0x16ee89[_0x6723('0x1f')](config[_0x6723('0x1e')])){return config['licenseToken'];}else if(_0x43ccaa==='win32'){return exec(_0x6723('0x20'),{'encoding':_0x6723('0x21')})[_0x6723('0x22')]('\x0d\x0a','');}else{var _0x1d9b91=getFirstInterface();var _0x4f32c1=getCPUhash();var _0xf19258=_0x4f32c1+'|'+os[_0x6723('0x23')]()+'|'+_0x1d9b91['macAddress']+'|'+_0x1d9b91[_0x6723('0x24')];var _0x51c351=crypto[_0x6723('0x17')]('md5')[_0x6723('0x19')](_0xf19258)[_0x6723('0x1a')]('hex');return _0x51c351[_0x6723('0x25')](0x0,0x8)+'-'+_0x51c351[_0x6723('0x25')](0x8,0xc)+'-'+_0x51c351['substring'](0xc,0x10)+'-'+_0x51c351['substring'](0x10,0x14)+'-'+_0x51c351[_0x6723('0x25')](0x14);}};
\ No newline at end of file
+var _0x826b=['getUuid','platform','licenseToken','test','replace','macAddress','ipAddress','substring','lodash','crypto','execSync','../environment','networkInterfaces','orderBy','keys','family','IPv4','internal','concat','head','mac','00:00:00:00:00:00','127.0.0.1','getFirstInterface','model','createHash','md5','update','digest','hex'];(function(_0x5cabfd,_0x5dea47){var _0x4bc06c=function(_0x4a2fea){while(--_0x4a2fea){_0x5cabfd['push'](_0x5cabfd['shift']());}};_0x4bc06c(++_0x5dea47);}(_0x826b,0x18e));var _0xb826=function(_0x4d51a4,_0xd4d217){_0x4d51a4=_0x4d51a4-0x0;var _0x32a9a6=_0x826b[_0x4d51a4];return _0x32a9a6;};'use strict';var _=require(_0xb826('0x0'));var os=require('os');var crypto=require(_0xb826('0x1'));var machine=require('bimedia-machine-uuid');var exec=require('child_process')[_0xb826('0x2')];var config=require(_0xb826('0x3'));function getInterfaces(){var _0x3ac2aa=[];var _0x530a69=os[_0xb826('0x4')]();var _0xc7b30b=_[_0xb826('0x5')](_[_0xb826('0x6')](_0x530a69));for(var _0x492861=0x0;_0x492861<_0xc7b30b['length'];_0x492861++){var _0x6c7b1c=_0x530a69[_0xc7b30b[_0x492861]]['filter'](function(_0x53ed56){return _0x53ed56[_0xb826('0x7')]===_0xb826('0x8')&&_0x53ed56[_0xb826('0x9')]===![];});_0x3ac2aa=_0x3ac2aa[_0xb826('0xa')](_0x6c7b1c);}return _0x3ac2aa;}function getFirstInterface(){var _0x4cb2a3=_[_0xb826('0xb')](getInterfaces());return{'macAddress':_0x4cb2a3&&_0x4cb2a3[_0xb826('0xc')]?_0x4cb2a3[_0xb826('0xc')]:_0xb826('0xd'),'ipAddress':_0x4cb2a3&&_0x4cb2a3['address']?_0x4cb2a3['address']:_0xb826('0xe')};}exports[_0xb826('0xf')]=getFirstInterface;function getCPUhash(){var _0x1cbe33=_['orderBy'](os['cpus']()['map'](function(_0x3de0ed){return _0x3de0ed[_0xb826('0x10')];}))['join'](':');return crypto[_0xb826('0x11')](_0xb826('0x12'))[_0xb826('0x13')](_0x1cbe33)[_0xb826('0x14')](_0xb826('0x15'));}exports[_0xb826('0x16')]=function(){var _0x3352ec=os[_0xb826('0x17')]();var _0x42cfd3=/[0-9a-f-]{36}/;if(config[_0xb826('0x18')]&&_0x42cfd3[_0xb826('0x19')](config[_0xb826('0x18')])){return config[_0xb826('0x18')];}else if(_0x3352ec==='win32'){return exec('dmidecode\x20--string\x20system-uuid',{'encoding':'utf8'})[_0xb826('0x1a')]('\x0d\x0a','');}else{var _0x3ec043=getFirstInterface();var _0x3cc4d2=getCPUhash();var _0x4d8f2c=_0x3cc4d2+'|'+os['hostname']()+'|'+_0x3ec043[_0xb826('0x1b')]+'|'+_0x3ec043[_0xb826('0x1c')];var _0x484b03=crypto[_0xb826('0x11')](_0xb826('0x12'))[_0xb826('0x13')](_0x4d8f2c)[_0xb826('0x14')]('hex');return _0x484b03[_0xb826('0x1d')](0x0,0x8)+'-'+_0x484b03[_0xb826('0x1d')](0x8,0xc)+'-'+_0x484b03[_0xb826('0x1d')](0xc,0x10)+'-'+_0x484b03['substring'](0x10,0x14)+'-'+_0x484b03[_0xb826('0x1d')](0x14);}};
\ No newline at end of file
index 1d5cabe..e56f2a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62fa=['License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','util','moment','request-promise','bluebird','pkginfo','version','../../mysqldb','../../components/encryptor','./hardware','../logger','license','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','catch','get','data1','data2','then','active','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','info','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','format','encryptString','diff','decryptString','YYYY-MM-DD\x20HH:mm','error','message','finally','getUuid'];(function(_0x314667,_0x138949){var _0x540ac9=function(_0x188e67){while(--_0x188e67){_0x314667['push'](_0x314667['shift']());}};_0x540ac9(++_0x138949);}(_0x62fa,0x191));var _0xa62f=function(_0x334f61,_0x20cd4c){_0x334f61=_0x334f61-0x0;var _0x307da4=_0x62fa[_0x334f61];return _0x307da4;};'use strict';var util=require(_0xa62f('0x0'));var moment=require(_0xa62f('0x1'));var rp=require(_0xa62f('0x2'));var BPromise=require(_0xa62f('0x3'));var pkginfo=require(_0xa62f('0x4'))(module,_0xa62f('0x5'));var db=require(_0xa62f('0x6'))['db'];var encryptor=require(_0xa62f('0x7'));var hardware=require(_0xa62f('0x8'));var logger=require(_0xa62f('0x9'))(_0xa62f('0xa'));var HOST='https://www.xcallymotion.com';var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x3698c6){return new BPromise(function(_0x5f0750,_0x4df9db){var _0x149ca4=util['format']('%s/api/servers/%s/check?version=%s',HOST,_0x3698c6,module[_0xa62f('0xb')]['version']);if(oldToken){_0x149ca4=util['format'](_0xa62f('0xc'),HOST,_0x3698c6,module[_0xa62f('0xb')][_0xa62f('0x5')],oldToken);}var _0x151faf={'uri':_0x149ca4,'method':_0xa62f('0xd'),'timeout':0xea60,'json':!![]};return rp(_0x151faf)['then'](function(_0x14e0e9){_0x5f0750(_0x14e0e9);})[_0xa62f('0xe')](function(_0x271e77){_0x4df9db(_0x271e77);});});}function manageLicense(_0x272a8e,_0xa8f542){var _0xf82647=_0xa8f542[_0xa62f('0xf')]({'plain':!![]});if(!isOldTokenSent&&_0xf82647[_0xa62f('0x10')]!==_0x272a8e&&!_0xf82647[_0xa62f('0x11')]){oldToken=_0xf82647[_0xa62f('0x10')];}httpRequest(_0x272a8e)[_0xa62f('0x12')](function(_0x5f55f8){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x5f55f8[_0xa62f('0x13')]){isOldTokenSent=![];if(!_0xf82647[_0xa62f('0xa')]&&_0xf82647[_0xa62f('0xa')]!=_0x5f55f8[_0xa62f('0xa')]||_0xf82647['license']&&_0xf82647[_0xa62f('0x11')]){logger['info'](_0xa62f('0x14'));}if(_0xf82647['license']&&!_0xf82647[_0xa62f('0x11')]&&_0xf82647[_0xa62f('0xa')]!=_0x5f55f8[_0xa62f('0xa')]){logger[_0xa62f('0x15')](_0xa62f('0x16'));}if(_0xf82647['license']&&!_0xf82647[_0xa62f('0x11')]&&_0xf82647['license']==_0x5f55f8[_0xa62f('0xa')]){return _0xa8f542;}return _0xa8f542[_0xa62f('0x17')]({'data1':_0x272a8e,'data2':null,'license':_0x5f55f8[_0xa62f('0xa')]});}else{if(_0x5f55f8['license']||_0xf82647['license']){if(!_0xf82647[_0xa62f('0x11')]){if(_0xf82647[_0xa62f('0x10')]==_0x272a8e){GRAY_PERIOD_REASON=_0xa62f('0x18');logger[_0xa62f('0x15')](_0xa62f('0x19'));}else{GRAY_PERIOD_REASON=_0xa62f('0x1a');logger[_0xa62f('0x15')](_0xa62f('0x1b'),_0xf82647['data1'],_0x272a8e);}logger[_0xa62f('0x15')](_0xa62f('0x1c'),GRAY_PERIOD_REASON[_0xa62f('0x1d')](),moment()[_0xa62f('0x1e')]('YYYY-MM-DD\x20HH:mm'));return _0xa8f542[_0xa62f('0x17')]({'data2':encryptor[_0xa62f('0x1f')](moment()['format']('YYYY-MM-DD\x20HH:mm'))});}else{if(moment()[_0xa62f('0x20')](encryptor[_0xa62f('0x21')](_0xf82647[_0xa62f('0x11')]),'days')>DAYS){logger[_0xa62f('0x15')]('DEMO\x20START\x20AT\x20%s',moment()[_0xa62f('0x1e')](_0xa62f('0x22')));isOldTokenSent=![];return _0xa8f542[_0xa62f('0x17')]({'data1':_0x272a8e,'data2':null,'license':null});}}}else{if(_0xf82647[_0xa62f('0x10')]!=_0x272a8e){logger['info'](_0xa62f('0x1b'),_0xf82647[_0xa62f('0x10')],_0x272a8e);return _0xa8f542[_0xa62f('0x17')]({'data1':_0x272a8e,'data2':null,'license':null});}}}return _0xa8f542;})[_0xa62f('0x12')](function(_0xd4fe8c){_0xa8f542=_0xd4fe8c;})[_0xa62f('0xe')](function(_0x288607){logger[_0xa62f('0x23')](_0x288607[_0xa62f('0x24')]);})[_0xa62f('0x25')](function(){setTimeout(function(){manageLicense(hardware[_0xa62f('0x26')](),_0xa8f542);},TIME);});}function defaultLicense(){var _0x1ff4f2=hardware['getUuid']();if(_0x1ff4f2){return db[_0xa62f('0x27')][_0xa62f('0x28')]({'where':{'id':0x1},'defaults':{'data1':_0x1ff4f2}})[_0xa62f('0x29')](function(_0x4d030a,_0x251eb7){logger[_0xa62f('0x15')](_0xa62f('0x2a'),_0x1ff4f2);manageLicense(_0x1ff4f2,_0x4d030a);})['catch'](function(_0x134fd5){logger['error'](_0x134fd5[_0xa62f('0x24')]);});}}exports[_0xa62f('0x2b')]=defaultLicense;
\ No newline at end of file
+var _0xbc16=['bluebird','pkginfo','../../mysqldb','../../components/encryptor','./hardware','../logger','license','https://www.xcallymotion.com','format','version','%s/api/servers/%s/check?version=%s&oldtoken=%s','exports','GET','then','catch','get','data1','data2','active','info','update','Disabled','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','toUpperCase','encryptString','YYYY-MM-DD\x20HH:mm','diff','decryptString','days','DEMO\x20START\x20AT\x20%s','error','message','finally','getUuid','findOrCreate','default','util','request-promise'];(function(_0x295a92,_0x7d70dc){var _0x3f5dac=function(_0x47b9e8){while(--_0x47b9e8){_0x295a92['push'](_0x295a92['shift']());}};_0x3f5dac(++_0x7d70dc);}(_0xbc16,0x184));var _0x6bc1=function(_0x2a663b,_0x194b77){_0x2a663b=_0x2a663b-0x0;var _0x3f5935=_0xbc16[_0x2a663b];return _0x3f5935;};'use strict';var util=require(_0x6bc1('0x0'));var moment=require('moment');var rp=require(_0x6bc1('0x1'));var BPromise=require(_0x6bc1('0x2'));var pkginfo=require(_0x6bc1('0x3'))(module,'version');var db=require(_0x6bc1('0x4'))['db'];var encryptor=require(_0x6bc1('0x5'));var hardware=require(_0x6bc1('0x6'));var logger=require(_0x6bc1('0x7'))(_0x6bc1('0x8'));var HOST=_0x6bc1('0x9');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x3a4395){return new BPromise(function(_0x3103b5,_0x244d1c){var _0x18c24b=util[_0x6bc1('0xa')]('%s/api/servers/%s/check?version=%s',HOST,_0x3a4395,module['exports'][_0x6bc1('0xb')]);if(oldToken){_0x18c24b=util[_0x6bc1('0xa')](_0x6bc1('0xc'),HOST,_0x3a4395,module[_0x6bc1('0xd')][_0x6bc1('0xb')],oldToken);}var _0x13ccd2={'uri':_0x18c24b,'method':_0x6bc1('0xe'),'timeout':0xea60,'json':!![]};return rp(_0x13ccd2)[_0x6bc1('0xf')](function(_0x4dd221){_0x3103b5(_0x4dd221);})[_0x6bc1('0x10')](function(_0x1b7187){_0x244d1c(_0x1b7187);});});}function manageLicense(_0x4cafde,_0x509931){var _0x2d673f=_0x509931[_0x6bc1('0x11')]({'plain':!![]});if(!isOldTokenSent&&_0x2d673f[_0x6bc1('0x12')]!==_0x4cafde&&!_0x2d673f[_0x6bc1('0x13')]){oldToken=_0x2d673f[_0x6bc1('0x12')];}httpRequest(_0x4cafde)[_0x6bc1('0xf')](function(_0x317168){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x317168[_0x6bc1('0x14')]){isOldTokenSent=![];if(!_0x2d673f['license']&&_0x2d673f[_0x6bc1('0x8')]!=_0x317168[_0x6bc1('0x8')]||_0x2d673f['license']&&_0x2d673f[_0x6bc1('0x13')]){logger['info']('THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED');}if(_0x2d673f[_0x6bc1('0x8')]&&!_0x2d673f[_0x6bc1('0x13')]&&_0x2d673f[_0x6bc1('0x8')]!=_0x317168[_0x6bc1('0x8')]){logger[_0x6bc1('0x15')]('THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED');}if(_0x2d673f[_0x6bc1('0x8')]&&!_0x2d673f[_0x6bc1('0x13')]&&_0x2d673f[_0x6bc1('0x8')]==_0x317168['license']){return _0x509931;}return _0x509931[_0x6bc1('0x16')]({'data1':_0x4cafde,'data2':null,'license':_0x317168[_0x6bc1('0x8')]});}else{if(_0x317168[_0x6bc1('0x8')]||_0x2d673f[_0x6bc1('0x8')]){if(!_0x2d673f[_0x6bc1('0x13')]){if(_0x2d673f[_0x6bc1('0x12')]==_0x4cafde){GRAY_PERIOD_REASON=_0x6bc1('0x17');logger[_0x6bc1('0x15')]('THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED');}else{GRAY_PERIOD_REASON=_0x6bc1('0x18');logger[_0x6bc1('0x15')](_0x6bc1('0x19'),_0x2d673f[_0x6bc1('0x12')],_0x4cafde);}logger[_0x6bc1('0x15')]('%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s',GRAY_PERIOD_REASON[_0x6bc1('0x1a')](),moment()[_0x6bc1('0xa')]('YYYY-MM-DD\x20HH:mm'));return _0x509931[_0x6bc1('0x16')]({'data2':encryptor[_0x6bc1('0x1b')](moment()[_0x6bc1('0xa')](_0x6bc1('0x1c')))});}else{if(moment()[_0x6bc1('0x1d')](encryptor[_0x6bc1('0x1e')](_0x2d673f[_0x6bc1('0x13')]),_0x6bc1('0x1f'))>DAYS){logger[_0x6bc1('0x15')](_0x6bc1('0x20'),moment()['format'](_0x6bc1('0x1c')));isOldTokenSent=![];return _0x509931['update']({'data1':_0x4cafde,'data2':null,'license':null});}}}else{if(_0x2d673f[_0x6bc1('0x12')]!=_0x4cafde){logger[_0x6bc1('0x15')](_0x6bc1('0x19'),_0x2d673f[_0x6bc1('0x12')],_0x4cafde);return _0x509931['update']({'data1':_0x4cafde,'data2':null,'license':null});}}}return _0x509931;})[_0x6bc1('0xf')](function(_0x63b7e9){_0x509931=_0x63b7e9;})['catch'](function(_0x7c0dbe){logger[_0x6bc1('0x21')](_0x7c0dbe[_0x6bc1('0x22')]);})[_0x6bc1('0x23')](function(){setTimeout(function(){manageLicense(hardware[_0x6bc1('0x24')](),_0x509931);},TIME);});}function defaultLicense(){var _0x3a3e65=hardware['getUuid']();if(_0x3a3e65){return db['License'][_0x6bc1('0x25')]({'where':{'id':0x1},'defaults':{'data1':_0x3a3e65}})['spread'](function(_0x4cf6fd,_0x2388fa){logger[_0x6bc1('0x15')]('SERVICE\x20LICENSE\x20STARTED\x20%s',_0x3a3e65);manageLicense(_0x3a3e65,_0x4cf6fd);})[_0x6bc1('0x10')](function(_0x552e7e){logger[_0x6bc1('0x21')](_0x552e7e['message']);});}}exports[_0x6bc1('0x26')]=defaultLicense;
\ No newline at end of file
index 555402f..ea029f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cb5=['sequelize','admin','users','telephones','forEach','user','count','pick','countBy','telephone','License\x20limit\x20reached\x20for\x20telephones','util','lodash','moment','./hardware','../../components/encryptor','../../mysqldb','Demo\x20license','getUuid','2027-01-01T00:00:00.000Z','Breaking\x20license','License','find','defaults','then','catch','data1','license','isEmpty','License\x20key\x20value\x20not\x20found','data2','split','decryptString','format','%s:%s:%s','uuid','machineUuid','gray','deadline','add','days','grayReason','changed','disabled','message','User','findAll','role'];(function(_0x35d8af,_0x14fd75){var _0x1d08b0=function(_0x36b437){while(--_0x36b437){_0x35d8af['push'](_0x35d8af['shift']());}};_0x1d08b0(++_0x14fd75);}(_0x7cb5,0xfb));var _0x57cb=function(_0x2e81ac,_0x48e29c){_0x2e81ac=_0x2e81ac-0x0;var _0x4d97e9=_0x7cb5[_0x2e81ac];return _0x4d97e9;};'use strict';var util=require(_0x57cb('0x0'));var _=require(_0x57cb('0x1'));var moment=require(_0x57cb('0x2'));var BPromise=require('bluebird');var hardware=require(_0x57cb('0x3'));var encryptor=require(_0x57cb('0x4'));var db=require(_0x57cb('0x5'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':'2027-01-01T00:00:00.000Z','chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x57cb('0x6'),'machineUuid':hardware[_0x57cb('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x57cb('0x8'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x57cb('0x9'),'machineUuid':hardware[_0x57cb('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x174897){return new BPromise(function(_0x28365c,_0x83730c){return db[_0x57cb('0xa')][_0x57cb('0xb')](_[_0x57cb('0xc')](_0x174897,{'raw':!![],'where':{'id':0x1}}))[_0x57cb('0xd')](function(_0x58d611){return checkLicense(_0x58d611,null);})[_0x57cb('0xd')](function(_0x20758f){_0x28365c(_0x20758f);return;})[_0x57cb('0xe')](function(_0x37cf6d){_0x83730c(_0x37cf6d);});});}function checkLicense(_0x414347,_0x2c4e97){if(!_0x414347){demoLicense['uuid']=_0x414347[_0x57cb('0xf')];return demoLicense;}try{var _0x28d183=_0x2c4e97||_0x414347[_0x57cb('0x10')];if(_[_0x57cb('0x11')](_0x28d183)){throw new Error(_0x57cb('0x12'));}var _0x407ef1=_0x414347[_0x57cb('0xf')];var _0x24a0a6=_0x414347[_0x57cb('0x13')];var _0x3d1bfd=_0x407ef1[_0x57cb('0x14')]('-')[0x4];var _0x439741=_0x407ef1[_0x57cb('0x14')]('-')[0x0];var _0x4b8787=encryptor[_0x57cb('0x15')](_0x28d183,util[_0x57cb('0x16')](_0x57cb('0x17'),_0x3d1bfd,_0x407ef1,_0x439741));var _0x31693a=JSON['parse'](_0x4b8787);_0x31693a['demo']=![];_0x31693a[_0x57cb('0x18')]=_0x407ef1;_0x31693a[_0x57cb('0x19')]=hardware['getUuid']();if(_0x24a0a6){var _0x4e22b7=encryptor[_0x57cb('0x15')](_0x24a0a6);_0x31693a[_0x57cb('0x1a')]=_0x4e22b7;_0x31693a[_0x57cb('0x1b')]=moment(_0x4e22b7)[_0x57cb('0x1c')](0x7,_0x57cb('0x1d'))[_0x57cb('0x16')]();_0x31693a[_0x57cb('0x1e')]=_0x31693a[_0x57cb('0x18')]!=_0x31693a[_0x57cb('0x19')]?_0x57cb('0x1f'):_0x57cb('0x20');}return _0x31693a;}catch(_0x3f731f){breakingLicense['uuid']=_0x414347[_0x57cb('0xf')];breakingLicense[_0x57cb('0x21')]=_0x3f731f[_0x57cb('0x21')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x5f5014,_0x4f7582){getLicense()[_0x57cb('0xd')](function(_0x5cd6bd){return db[_0x57cb('0x22')][_0x57cb('0x23')]({'attributes':[_0x57cb('0x24'),[db['sequelize']['fn']('COUNT',db[_0x57cb('0x25')]['col'](_0x57cb('0x24'))),'count']],'group':_0x57cb('0x24'),'where':{'role':{'$or':[_0x57cb('0x26'),'user','telephone']}},'raw':!![]})['then'](function(_0x43ab22){var _0x4a01c5={'user':_0x5cd6bd[_0x57cb('0x27')]||0x0,'telephone':_0x5cd6bd[_0x57cb('0x28')]||0x0};_0x43ab22[_0x57cb('0x29')](function(_0x3a9fe){var _0x1a971d=_0x3a9fe[_0x57cb('0x24')]===_0x57cb('0x26')?_0x57cb('0x2a'):_0x3a9fe[_0x57cb('0x24')];_0x4a01c5[_0x1a971d]-=_0x3a9fe[_0x57cb('0x2b')];if(_0x4a01c5[_0x1a971d]<0x0)_0x4a01c5[_0x1a971d]=0x0;});_0x5f5014(_0x4a01c5);return;});})[_0x57cb('0xe')](function(_0x5f4dfe){_0x4f7582(_0x5f4dfe);});});}function checkUserLimits(_0x2fbca7){return new BPromise(function(_0x12ef44,_0xccefa0){getLimits()[_0x57cb('0xd')](function(_0x1d2012){var _0x3a9db2=_[_0x57cb('0x2c')](_[_0x57cb('0x2d')](_0x2fbca7,_0x57cb('0x24')),[_0x57cb('0x26'),_0x57cb('0x2a'),_0x57cb('0x2e')]);var _0x305f16=(_0x3a9db2[_0x57cb('0x26')]||0x0)+(_0x3a9db2['user']||0x0);var _0x2224aa=_0x3a9db2[_0x57cb('0x2e')]||0x0;if(_0x305f16>_0x1d2012['user'])return _0xccefa0('License\x20limit\x20reached\x20for\x20users');if(_0x2224aa>_0x1d2012['telephone'])return _0xccefa0(_0x57cb('0x2f'));return _0x12ef44();})[_0x57cb('0xe')](function(_0x859e92){_0xccefa0(_0x859e92);});});}module['exports']={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0x02b8=['user','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','util','lodash','./hardware','../../components/encryptor','2027-01-01T00:00:00.000Z','Demo\x20license','getUuid','find','defaults','then','catch','uuid','license','isEmpty','License\x20key\x20value\x20not\x20found','data2','split','decryptString','%s:%s:%s','parse','demo','machineUuid','gray','deadline','add','format','grayReason','changed','disabled','data1','message','User','findAll','role','sequelize','COUNT','col','count','admin','users','forEach','countBy','telephone'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x02b8,0x1da));var _0x802b=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x02b8[_0xfae23b];return _0x200640;};'use strict';var util=require(_0x802b('0x0'));var _=require(_0x802b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var hardware=require(_0x802b('0x2'));var encryptor=require(_0x802b('0x3'));var db=require('../../mysqldb')['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x802b('0x4'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x802b('0x5'),'machineUuid':hardware[_0x802b('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':'2027-01-01T00:00:00.000Z','chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':'Breaking\x20license','machineUuid':hardware[_0x802b('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x155cbc){return new BPromise(function(_0x5a1473,_0x556483){return db['License'][_0x802b('0x7')](_[_0x802b('0x8')](_0x155cbc,{'raw':!![],'where':{'id':0x1}}))[_0x802b('0x9')](function(_0x8a90da){return checkLicense(_0x8a90da,null);})[_0x802b('0x9')](function(_0x413dcb){_0x5a1473(_0x413dcb);return;})[_0x802b('0xa')](function(_0x19310a){_0x556483(_0x19310a);});});}function checkLicense(_0x45641d,_0x50b2dc){if(!_0x45641d){demoLicense[_0x802b('0xb')]=_0x45641d['data1'];return demoLicense;}try{var _0x412132=_0x50b2dc||_0x45641d[_0x802b('0xc')];if(_[_0x802b('0xd')](_0x412132)){throw new Error(_0x802b('0xe'));}var _0x3b37d3=_0x45641d['data1'];var _0x50c8d9=_0x45641d[_0x802b('0xf')];var _0x3e4fec=_0x3b37d3[_0x802b('0x10')]('-')[0x4];var _0x28589f=_0x3b37d3['split']('-')[0x0];var _0x32a406=encryptor[_0x802b('0x11')](_0x412132,util['format'](_0x802b('0x12'),_0x3e4fec,_0x3b37d3,_0x28589f));var _0x241166=JSON[_0x802b('0x13')](_0x32a406);_0x241166[_0x802b('0x14')]=![];_0x241166[_0x802b('0xb')]=_0x3b37d3;_0x241166[_0x802b('0x15')]=hardware[_0x802b('0x6')]();if(_0x50c8d9){var _0x251e1f=encryptor[_0x802b('0x11')](_0x50c8d9);_0x241166[_0x802b('0x16')]=_0x251e1f;_0x241166[_0x802b('0x17')]=moment(_0x251e1f)[_0x802b('0x18')](0x7,'days')[_0x802b('0x19')]();_0x241166[_0x802b('0x1a')]=_0x241166[_0x802b('0xb')]!=_0x241166[_0x802b('0x15')]?_0x802b('0x1b'):_0x802b('0x1c');}return _0x241166;}catch(_0x52a3e3){breakingLicense[_0x802b('0xb')]=_0x45641d[_0x802b('0x1d')];breakingLicense[_0x802b('0x1e')]=_0x52a3e3[_0x802b('0x1e')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x41f7a2,_0xca2c63){getLicense()[_0x802b('0x9')](function(_0x4cb9e6){return db[_0x802b('0x1f')][_0x802b('0x20')]({'attributes':[_0x802b('0x21'),[db[_0x802b('0x22')]['fn'](_0x802b('0x23'),db[_0x802b('0x22')][_0x802b('0x24')](_0x802b('0x21'))),_0x802b('0x25')]],'group':_0x802b('0x21'),'where':{'role':{'$or':[_0x802b('0x26'),'user','telephone']}},'raw':!![]})[_0x802b('0x9')](function(_0x108667){var _0x169613={'user':_0x4cb9e6[_0x802b('0x27')]||0x0,'telephone':_0x4cb9e6['telephones']||0x0};_0x108667[_0x802b('0x28')](function(_0x361856){var _0x34eb27=_0x361856[_0x802b('0x21')]===_0x802b('0x26')?'user':_0x361856[_0x802b('0x21')];_0x169613[_0x34eb27]-=_0x361856['count'];if(_0x169613[_0x34eb27]<0x0)_0x169613[_0x34eb27]=0x0;});_0x41f7a2(_0x169613);return;});})[_0x802b('0xa')](function(_0x2c4b58){_0xca2c63(_0x2c4b58);});});}function checkUserLimits(_0x571ad4){return new BPromise(function(_0x4c6f7b,_0x344721){getLimits()[_0x802b('0x9')](function(_0x5e531e){var _0x50c181=_['pick'](_[_0x802b('0x29')](_0x571ad4,_0x802b('0x21')),[_0x802b('0x26'),'user',_0x802b('0x2a')]);var _0x4fce04=(_0x50c181[_0x802b('0x26')]||0x0)+(_0x50c181[_0x802b('0x2b')]||0x0);var _0x11f542=_0x50c181['telephone']||0x0;if(_0x4fce04>_0x5e531e[_0x802b('0x2b')])return _0x344721(_0x802b('0x2c'));if(_0x11f542>_0x5e531e[_0x802b('0x2a')])return _0x344721(_0x802b('0x2d'));return _0x4c6f7b();})[_0x802b('0xa')](function(_0x3242ec){_0x344721(_0x3242ec);});});}module[_0x802b('0x2e')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index f7e5a97..579dc5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14a0=['app-id','secret','http://localhost:9000','myappanuglar-secret'];(function(_0x1bdebb,_0x2228ae){var _0x5c7918=function(_0x3ea40c){while(--_0x3ea40c){_0x1bdebb['push'](_0x1bdebb['shift']());}};_0x5c7918(++_0x2228ae);}(_0x14a0,0x8e));var _0x014a=function(_0x429a71,_0x1cadfe){_0x429a71=_0x429a71-0x0;var _0x33570a=_0x14a0[_0x429a71];return _0x33570a;};'use strict';module['exports']={'DOMAIN':_0x014a('0x0'),'SESSION_SECRET':_0x014a('0x1'),'GOOGLE_ID':_0x014a('0x2'),'GOOGLE_SECRET':_0x014a('0x3'),'DEBUG':''};
\ No newline at end of file
+var _0xf7b4=['app-id','secret','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf7b4,0x152));var _0x4f7b=function(_0x4f7c33,_0x75b464){_0x4f7c33=_0x4f7c33-0x0;var _0x56d5e1=_0xf7b4[_0x4f7c33];return _0x56d5e1;};'use strict';module[_0x4f7b('0x0')]={'DOMAIN':'http://localhost:9000','SESSION_SECRET':'myappanuglar-secret','GOOGLE_ID':_0x4f7b('0x1'),'GOOGLE_SECRET':_0x4f7b('0x2'),'DEBUG':''};
\ No newline at end of file
index db955c8..7f857d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cf4=['../utils/loggers','fileLogger','exports'];(function(_0x11c582,_0x1cb213){var _0x320e49=function(_0x1a215f){while(--_0x1a215f){_0x11c582['push'](_0x11c582['shift']());}};_0x320e49(++_0x1cb213);}(_0x0cf4,0xa8));var _0x40cf=function(_0x14eb9e,_0x29fe9e){_0x14eb9e=_0x14eb9e-0x0;var _0x4c59c4=_0x0cf4[_0x14eb9e];return _0x4c59c4;};'use strict';var fileLogger=require(_0x40cf('0x0'))[_0x40cf('0x1')];module[_0x40cf('0x2')]=fileLogger;
\ No newline at end of file
+var _0x2920=['exports','fileLogger'];(function(_0x4d2c51,_0x433b4f){var _0x1920fe=function(_0x226708){while(--_0x226708){_0x4d2c51['push'](_0x4d2c51['shift']());}};_0x1920fe(++_0x433b4f);}(_0x2920,0x8d));var _0x0292=function(_0x2c94d3,_0x46f6ca){_0x2c94d3=_0x2c94d3-0x0;var _0x316422=_0x2920[_0x2c94d3];return _0x316422;};'use strict';var fileLogger=require('../utils/loggers')[_0x0292('0x0')];module[_0x0292('0x1')]=fileLogger;
\ No newline at end of file
index 5ff09d3..3489703 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2507=['exports','path','join','../../services/express/index.js','ami','email','../../services/email/index.js','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js'];(function(_0x786175,_0x255b1f){var _0x548c4b=function(_0x20b9f1){while(--_0x20b9f1){_0x786175['push'](_0x786175['shift']());}};_0x548c4b(++_0x255b1f);}(_0x2507,0x1e5));var _0x7250=function(_0x4e1f8a,_0xe43b11){_0x4e1f8a=_0x4e1f8a-0x0;var _0x39f2ef=_0x2507[_0x4e1f8a];return _0x39f2ef;};'use strict';var path=require(_0x7250('0x0'));var os=require('os');var config={'apps':[{'name':'express','script':path[_0x7250('0x1')](__dirname,_0x7250('0x2'))},{'name':_0x7250('0x3'),'script':path['join'](__dirname,'../../services/ami/index.js')},{'name':'agi','script':path['join'](__dirname,'../../services/agi/index.js')},{'name':_0x7250('0x4'),'script':path['join'](__dirname,_0x7250('0x5'))},{'name':_0x7250('0x6'),'script':path[_0x7250('0x1')](__dirname,_0x7250('0x7'))},{'name':_0x7250('0x8'),'script':path['join'](__dirname,_0x7250('0x9'))}]};module[_0x7250('0xa')]=config;
\ No newline at end of file
+var _0x1468=['../../services/ami/index.js','agi','../../services/agi/index.js','email','../../services/email/index.js','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js','exports','express','join','ami'];(function(_0x297273,_0x4ca0a6){var _0x2191ed=function(_0x46c6d9){while(--_0x46c6d9){_0x297273['push'](_0x297273['shift']());}};_0x2191ed(++_0x4ca0a6);}(_0x1468,0xf4));var _0x8146=function(_0x1bbc08,_0x444008){_0x1bbc08=_0x1bbc08-0x0;var _0x5d825b=_0x1468[_0x1bbc08];return _0x5d825b;};'use strict';var path=require('path');var os=require('os');var config={'apps':[{'name':_0x8146('0x0'),'script':path[_0x8146('0x1')](__dirname,'../../services/express/index.js')},{'name':_0x8146('0x2'),'script':path[_0x8146('0x1')](__dirname,_0x8146('0x3'))},{'name':_0x8146('0x4'),'script':path[_0x8146('0x1')](__dirname,_0x8146('0x5'))},{'name':_0x8146('0x6'),'script':path[_0x8146('0x1')](__dirname,_0x8146('0x7'))},{'name':_0x8146('0x8'),'script':path['join'](__dirname,_0x8146('0x9'))},{'name':_0x8146('0xa'),'script':path[_0x8146('0x1')](__dirname,_0x8146('0xb'))}]};module[_0x8146('0xc')]=config;
\ No newline at end of file
index 2a380cb..b888af5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5485=['stop','disconnect','restart','list','describe','delete','dump','pm2','bluebird','./config','connect','connected','start','then'];(function(_0x4980fc,_0x247170){var _0x48cacf=function(_0x4520d2){while(--_0x4520d2){_0x4980fc['push'](_0x4980fc['shift']());}};_0x48cacf(++_0x247170);}(_0x5485,0x149));var _0x5548=function(_0x1f38dd,_0x41f9c6){_0x1f38dd=_0x1f38dd-0x0;var _0xe44841=_0x5485[_0x1f38dd];return _0xe44841;};'use strict';var pm2=require(_0x5548('0x0'));var BPromise=require(_0x5548('0x1'));var config=require(_0x5548('0x2'));function connect(){return new BPromise(function(_0x25cc56,_0xc786c0){return pm2[_0x5548('0x3')](function(_0x3cbed1){if(_0x3cbed1){return _0xc786c0(_0x3cbed1);}return _0x25cc56(_0x5548('0x4'));});});};exports[_0x5548('0x5')]=function(_0x498e7a){return connect()[_0x5548('0x6')](function(){return new BPromise(function(_0x3c0c92,_0xf744b8){return pm2[_0x5548('0x5')](_0x498e7a,function(_0x550454,_0x2f0275){if(_0x550454){return _0xf744b8(_0x550454);}pm2['disconnect']();return _0x3c0c92(_0x2f0275);});});});};exports[_0x5548('0x7')]=function(_0x3c799c){return connect()[_0x5548('0x6')](function(){return new BPromise(function(_0x5b6560,_0x525142){return pm2['stop'](_0x3c799c,function(_0x1ec327,_0x5bca17){if(_0x1ec327){return _0x525142(_0x1ec327);}pm2[_0x5548('0x8')]();return _0x5b6560(_0x5bca17);});});});};exports[_0x5548('0x9')]=function(_0x1bbea6){return connect()[_0x5548('0x6')](function(){return new BPromise(function(_0x16d4c9,_0x17c9bd){return pm2[_0x5548('0x9')](_0x1bbea6,function(_0x18bd8e,_0x181e7f){if(_0x18bd8e){return _0x17c9bd(_0x18bd8e);}pm2['disconnect']();return _0x16d4c9(_0x181e7f);});});});};exports[_0x5548('0xa')]=function(){return connect()['then'](function(){return new BPromise(function(_0xba5842,_0x50641d){return pm2[_0x5548('0xa')](function(_0x3dfeac,_0x250ec4){if(_0x3dfeac){return _0x50641d(_0x3dfeac);}pm2[_0x5548('0x8')]();return _0xba5842(_0x250ec4);});});});};exports[_0x5548('0xb')]=function(_0x2d9c54){return connect()[_0x5548('0x6')](function(){return new BPromise(function(_0x156b50,_0x53de35){return pm2[_0x5548('0xb')](_0x2d9c54,function(_0x519aa5,_0x249734){if(_0x519aa5){return _0x53de35(_0x519aa5);}pm2[_0x5548('0x8')]();return _0x156b50(_0x249734);});});});};exports[_0x5548('0xc')]=function(_0x59b8c4){return connect()[_0x5548('0x6')](function(){return new BPromise(function(_0x6e8885,_0x58886f){return pm2['delete'](_0x59b8c4,function(_0x39b2e9,_0xf975ff){if(_0x39b2e9){return _0x58886f(_0x39b2e9);}pm2['disconnect']();return _0x6e8885(_0xf975ff);});});});};exports[_0x5548('0xd')]=function(){return connect()[_0x5548('0x6')](function(){return new BPromise(function(_0x5e0c61,_0x28ac71){return pm2[_0x5548('0xd')](function(_0x31b684){if(_0x31b684){return _0x28ac71(_0x31b684);}return _0x5e0c61('saved');});});});};
\ No newline at end of file
+var _0xddb2=['start','then','disconnect','stop','restart','list','describe','delete','dump','saved','bluebird','./config','connect'];(function(_0x5cf683,_0x4a7f58){var _0x1467c7=function(_0x49f152){while(--_0x49f152){_0x5cf683['push'](_0x5cf683['shift']());}};_0x1467c7(++_0x4a7f58);}(_0xddb2,0x190));var _0x2ddb=function(_0x4b91b6,_0x589d73){_0x4b91b6=_0x4b91b6-0x0;var _0x3503ae=_0xddb2[_0x4b91b6];return _0x3503ae;};'use strict';var pm2=require('pm2');var BPromise=require(_0x2ddb('0x0'));var config=require(_0x2ddb('0x1'));function connect(){return new BPromise(function(_0x467f01,_0x557e69){return pm2[_0x2ddb('0x2')](function(_0x58884c){if(_0x58884c){return _0x557e69(_0x58884c);}return _0x467f01('connected');});});};exports[_0x2ddb('0x3')]=function(_0x2c522a){return connect()[_0x2ddb('0x4')](function(){return new BPromise(function(_0x3bae6e,_0x556f64){return pm2[_0x2ddb('0x3')](_0x2c522a,function(_0x2ed349,_0x2bada8){if(_0x2ed349){return _0x556f64(_0x2ed349);}pm2[_0x2ddb('0x5')]();return _0x3bae6e(_0x2bada8);});});});};exports[_0x2ddb('0x6')]=function(_0x4eeda7){return connect()['then'](function(){return new BPromise(function(_0x28664c,_0x39d84c){return pm2[_0x2ddb('0x6')](_0x4eeda7,function(_0x420c20,_0x369a0d){if(_0x420c20){return _0x39d84c(_0x420c20);}pm2[_0x2ddb('0x5')]();return _0x28664c(_0x369a0d);});});});};exports[_0x2ddb('0x7')]=function(_0x172548){return connect()[_0x2ddb('0x4')](function(){return new BPromise(function(_0x372b4e,_0x3eb66b){return pm2[_0x2ddb('0x7')](_0x172548,function(_0xcbff7d,_0x5e066a){if(_0xcbff7d){return _0x3eb66b(_0xcbff7d);}pm2[_0x2ddb('0x5')]();return _0x372b4e(_0x5e066a);});});});};exports[_0x2ddb('0x8')]=function(){return connect()['then'](function(){return new BPromise(function(_0x88f723,_0x4e428e){return pm2[_0x2ddb('0x8')](function(_0x5afee9,_0x36fc1c){if(_0x5afee9){return _0x4e428e(_0x5afee9);}pm2[_0x2ddb('0x5')]();return _0x88f723(_0x36fc1c);});});});};exports[_0x2ddb('0x9')]=function(_0x383d16){return connect()['then'](function(){return new BPromise(function(_0x2258ed,_0x4cff59){return pm2[_0x2ddb('0x9')](_0x383d16,function(_0x9b59aa,_0xe05663){if(_0x9b59aa){return _0x4cff59(_0x9b59aa);}pm2[_0x2ddb('0x5')]();return _0x2258ed(_0xe05663);});});});};exports[_0x2ddb('0xa')]=function(_0x5ae1c0){return connect()['then'](function(){return new BPromise(function(_0x1e8d9c,_0x3bc394){return pm2[_0x2ddb('0xa')](_0x5ae1c0,function(_0x54bd0f,_0x3ce87b){if(_0x54bd0f){return _0x3bc394(_0x54bd0f);}pm2[_0x2ddb('0x5')]();return _0x1e8d9c(_0x3ce87b);});});});};exports['dump']=function(){return connect()[_0x2ddb('0x4')](function(){return new BPromise(function(_0x309f0b,_0x1d3e8f){return pm2[_0x2ddb('0xb')](function(_0x475bf4){if(_0x475bf4){return _0x1d3e8f(_0x475bf4);}return _0x309f0b(_0x2ddb('0xc'));});});});};
\ No newline at end of file
index 569b69f..38e157e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb745=['length','map','info','[CHAT]\x20Interactions\x20to\x20close:','join','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','error','start','lodash','moment','util','../../mysqldb','../logger','schedule','redis','defaults','localhost','socket.io-emitter','Setting','find','chatTimeout','ChatInteraction','findAll','subtract','then'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb745,0x85));var _0x5b74=function(_0x1b00d0,_0x265b67){_0x1b00d0=_0x1b00d0-0x0;var _0x31446c=_0xb745[_0x1b00d0];return _0x31446c;};'use strict';var _=require(_0x5b74('0x0'));var moment=require(_0x5b74('0x1'));var Redis=require('ioredis');var util=require(_0x5b74('0x2'));var config=require('../../config/environment');var db=require(_0x5b74('0x3'))['db'];var logger=require(_0x5b74('0x4'))(_0x5b74('0x5'));config[_0x5b74('0x6')]=_[_0x5b74('0x7')](config[_0x5b74('0x6')],{'host':_0x5b74('0x8'),'port':0x18eb});var io=require(_0x5b74('0x9'))(new Redis(config['redis']));function closeInteractions(){var _0xdd0baa=0x0;var _0x7bf192=[];return db[_0x5b74('0xa')][_0x5b74('0xb')]({'raw':!![],'attributes':['id',_0x5b74('0xc')],'where':{'id':0x1}})['then'](function(_0x44765a){_0xdd0baa=_0x44765a['chatTimeout'];if(_0xdd0baa){return db[_0x5b74('0xd')][_0x5b74('0xe')]({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x5b74('0xf')](_0x44765a['chatTimeout'],'minutes')}}});}else{return[];}})[_0x5b74('0x10')](function(_0x625623){if(_0x625623&&_0x625623[_0x5b74('0x11')]){_0x7bf192=_[_0x5b74('0x12')](_0x625623||[],'id');logger[_0x5b74('0x13')](_0x5b74('0x14'),_0x7bf192[_0x5b74('0x15')]());return db[_0x5b74('0xd')]['update']({'closeReason':_0x5b74('0x16'),'disposition':_0x5b74('0x17'),'closed':!![],'closedAt':moment()[_0x5b74('0x18')](_0x5b74('0x19'))},{'where':{'id':_0x7bf192}});}})['then'](function(){if(_0x7bf192&&_0x7bf192[_0x5b74('0x11')]){logger[_0x5b74('0x13')](_0x5b74('0x1a'),_0x7bf192['join']());for(var _0x78c547=0x0;_0x78c547<_0x7bf192['length'];_0x78c547++){io[_0x5b74('0x1b')]('chatInteraction:update',{'id':_0x7bf192[_0x78c547],'closed':!![]});}}})['catch'](function(_0x5e2bf1){logger[_0x5b74('0x1c')]('[CHAT]\x20Error\x20closing\x20interactions',_0x5e2bf1?util['inspect'](_0x5e2bf1,{'showHidden':![],'depth':null}):'');});}exports[_0x5b74('0x1d')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x90e9=['lodash','moment','ioredis','../../config/environment','../../mysqldb','../logger','redis','defaults','localhost','socket.io-emitter','find','chatTimeout','then','lastMsgAt','subtract','minutes','length','map','info','[CHAT]\x20Interactions\x20to\x20close:','ChatInteraction','update','system','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','join','emit','catch','error','[CHAT]\x20Error\x20closing\x20interactions','start'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x90e9,0x7c));var _0x990e=function(_0x13863f,_0x4d2917){_0x13863f=_0x13863f-0x0;var _0x34f192=_0x90e9[_0x13863f];return _0x34f192;};'use strict';var _=require(_0x990e('0x0'));var moment=require(_0x990e('0x1'));var Redis=require(_0x990e('0x2'));var util=require('util');var config=require(_0x990e('0x3'));var db=require(_0x990e('0x4'))['db'];var logger=require(_0x990e('0x5'))('schedule');config[_0x990e('0x6')]=_[_0x990e('0x7')](config['redis'],{'host':_0x990e('0x8'),'port':0x18eb});var io=require(_0x990e('0x9'))(new Redis(config[_0x990e('0x6')]));function closeInteractions(){var _0x3495c3=0x0;var _0x499d30=[];return db['Setting'][_0x990e('0xa')]({'raw':!![],'attributes':['id',_0x990e('0xb')],'where':{'id':0x1}})[_0x990e('0xc')](function(_0x254732){_0x3495c3=_0x254732['chatTimeout'];if(_0x3495c3){return db['ChatInteraction']['findAll']({'raw':!![],'attributes':['id',_0x990e('0xd')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x990e('0xe')](_0x254732[_0x990e('0xb')],_0x990e('0xf'))}}});}else{return[];}})[_0x990e('0xc')](function(_0x180993){if(_0x180993&&_0x180993[_0x990e('0x10')]){_0x499d30=_[_0x990e('0x11')](_0x180993||[],'id');logger[_0x990e('0x12')](_0x990e('0x13'),_0x499d30['join']());return db[_0x990e('0x14')][_0x990e('0x15')]({'closeReason':_0x990e('0x16'),'disposition':'timeout','closed':!![],'closedAt':moment()['format'](_0x990e('0x17'))},{'where':{'id':_0x499d30}});}})[_0x990e('0xc')](function(){if(_0x499d30&&_0x499d30[_0x990e('0x10')]){logger[_0x990e('0x12')](_0x990e('0x18'),_0x499d30[_0x990e('0x19')]());for(var _0xf360b6=0x0;_0xf360b6<_0x499d30['length'];_0xf360b6++){io[_0x990e('0x1a')]('chatInteraction:update',{'id':_0x499d30[_0xf360b6],'closed':!![]});}}})[_0x990e('0x1b')](function(_0x3361ed){logger[_0x990e('0x1c')](_0x990e('0x1d'),_0x3361ed?util['inspect'](_0x3361ed,{'showHidden':![],'depth':null}):'');});}exports[_0x990e('0x1e')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 622afea..290a53a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c05=['../../api/cloudProvider/cloudProvider.oauth.js','startAllRefreshIntervals'];(function(_0x1602ef,_0x447aba){var _0x5870ee=function(_0x4d94e7){while(--_0x4d94e7){_0x1602ef['push'](_0x1602ef['shift']());}};_0x5870ee(++_0x447aba);}(_0x6c05,0x1b0));var _0x56c0=function(_0x230ebc,_0x31c47c){_0x230ebc=_0x230ebc-0x0;var _0x2468f6=_0x6c05[_0x230ebc];return _0x2468f6;};'use strict';function start(){var _0x56f9fb=require(_0x56c0('0x0'));return _0x56f9fb[_0x56c0('0x1')]();}module['exports']={'intervals':{},'start':start};
\ No newline at end of file
+var _0x8408=['startAllRefreshIntervals','exports','../../api/cloudProvider/cloudProvider.oauth.js'];(function(_0x4d3720,_0x146b43){var _0x45c96e=function(_0x43b50c){while(--_0x43b50c){_0x4d3720['push'](_0x4d3720['shift']());}};_0x45c96e(++_0x146b43);}(_0x8408,0x116));var _0x8840=function(_0x423549,_0x242e63){_0x423549=_0x423549-0x0;var _0xdcb104=_0x8408[_0x423549];return _0xdcb104;};'use strict';function start(){var _0x485224=require(_0x8840('0x0'));return _0x485224[_0x8840('0x1')]();}module[_0x8840('0x2')]={'intervals':{},'start':start};
\ No newline at end of file
index 7d85b9e..52fb576 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f8a=['existsSync','status','Sent','attachments','message','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','stringify','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','then','error','error\x20mail','catch','data','Smtp','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit','subtractUnit\x20null\x20or\x20undefined','subtract','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','MailServerOut','CloudProvider','jobs','map','toString','keyBy','intersection','difference','exists','stop','deleteJob','delete\x20cron','toRun','length','resolve','cron','active','isBetween','add','start','add\x20cron','stop\x20cron','endAt','update','run','util','moment','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','Try\x20to\x20send\x20a\x20mail\x20to','email','getSmtpOptions','format','\x22%s\x22\x20<%s>','name','MailAccount','user','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','join','savename','basename','extname','zip'];(function(_0x513bcf,_0x93559f){var _0x24bf2c=function(_0x5d4159){while(--_0x5d4159){_0x513bcf['push'](_0x513bcf['shift']());}};_0x24bf2c(++_0x93559f);}(_0x1f8a,0x193));var _0xa1f8=function(_0x17173c,_0x2df2d3){_0x17173c=_0x17173c-0x0;var _0x2709c8=_0x1f8a[_0x17173c];return _0x2709c8;};'use strict';var fs=require('fs');var util=require(_0xa1f8('0x0'));var path=require('path');var _=require('lodash');var moment=require(_0xa1f8('0x1'));var CronJobManager=require(_0xa1f8('0x2'));var jayson=require(_0xa1f8('0x3'));var BPromise=require(_0xa1f8('0x4'));var logger=require(_0xa1f8('0x5'))(_0xa1f8('0x6'));var db=require(_0xa1f8('0x7'))['db'];var analyticCustomReportController=require(_0xa1f8('0x8'));var analyticDefaultReportController=require(_0xa1f8('0x9'));var client=jayson[_0xa1f8('0xa')]['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x154f0d,_0x1fe746){return function(){logger['info'](_0xa1f8('0xb'),_0x154f0d[_0xa1f8('0xc')]);var _0x445091=!![];var _0x11b14d=_0x154f0d['MailAccount'][_0xa1f8('0xd')]();var _0x2fb3f5={'account':_0x11b14d,'message':{'from':util[_0xa1f8('0xe')](_0xa1f8('0xf'),_0x154f0d['MailAccount'][_0xa1f8('0x10')],_0x154f0d[_0xa1f8('0x11')][_0xa1f8('0xc')]||_0x154f0d[_0xa1f8('0x11')]['Smtp'][_0xa1f8('0x12')]),'to':_0x154f0d[_0xa1f8('0xc')],'cc':_0x154f0d['cc'],'bcc':_0x154f0d[_0xa1f8('0x13')],'subject':util[_0xa1f8('0xe')](_0xa1f8('0x14'),_0x1fe746[_0xa1f8('0x10')],_0x154f0d[_0xa1f8('0x15')],_0x154f0d['subtractUnit'])}};var _0x5dfb94=path[_0xa1f8('0x16')](__dirname,'../../files/reports');var _0x1ab7c4=_0x1fe746[_0xa1f8('0x17')];var _0x31ab4a=util[_0xa1f8('0xe')]('%s.%s',path[_0xa1f8('0x18')](_0x1fe746[_0xa1f8('0x17')],path[_0xa1f8('0x19')](_0x1fe746[_0xa1f8('0x17')])),_0xa1f8('0x1a'));var _0x2b2f82=path[_0xa1f8('0x16')](_0x5dfb94,_0x1ab7c4);var _0x5c1220=path[_0xa1f8('0x16')](_0x5dfb94,_0x31ab4a);if(fs[_0xa1f8('0x1b')](_0x2b2f82)){_0x1fe746[_0xa1f8('0x1c')]=_0xa1f8('0x1d');_0x2fb3f5['message'][_0xa1f8('0x1e')]=[{'filename':_0x1ab7c4,'path':_0x2b2f82}];_0x2fb3f5[_0xa1f8('0x1f')][_0xa1f8('0x20')]=util['format'](_0xa1f8('0x21'),JSON[_0xa1f8('0x22')](_0x1fe746,null,0x2));}else if(fs['existsSync'](_0x5c1220)){_0x1fe746[_0xa1f8('0x1c')]='Sent';_0x2fb3f5[_0xa1f8('0x1f')][_0xa1f8('0x1e')]=[{'filename':_0x31ab4a,'path':_0x5c1220}];}else{_0x2fb3f5['message'][_0xa1f8('0x20')]=_0xa1f8('0x23');if(!_0x154f0d[_0xa1f8('0x24')]){_0x445091=![];logger[_0xa1f8('0x25')](_0xa1f8('0x26'));}}if(_0x445091){return client['request']('SendMail',_0x2fb3f5)[_0xa1f8('0x27')](function(_0x588845){if(_0x588845['error']){return logger[_0xa1f8('0x28')](_0xa1f8('0x29'),JSON[_0xa1f8('0x22')](_0x588845));}return logger['info']('email\x20sent');})[_0xa1f8('0x2a')](function(_0x50e141){return logger[_0xa1f8('0x28')](_0xa1f8('0x29'),JSON[_0xa1f8('0x22')](_0x50e141));});}};}function handleError(){return function(_0x4f6260){return logger[_0xa1f8('0x28')](JSON[_0xa1f8('0x22')](_0x4f6260));};}function handleResult(_0x13c599){return function(_0x2d1f7a){logger[_0xa1f8('0x25')](_0xa1f8('0x2b'),JSON[_0xa1f8('0x22')](_0x2d1f7a));if(_0x13c599['MailAccount']&&_0x13c599['MailAccount'][_0xa1f8('0x2c')]&&!_[_0xa1f8('0x2d')](_0x13c599[_0xa1f8('0xc')])){setTimeout(handleSendEmail(_0x13c599,_0x2d1f7a),0x3c*0x3e8);}};}function handleJob(_0x3c0ebe){return function(){try{if(_['isNil'](_0x3c0ebe[_0xa1f8('0x15')])){return logger[_0xa1f8('0x25')](_0xa1f8('0x2e'));}if(_[_0xa1f8('0x2d')](_0x3c0ebe[_0xa1f8('0x2f')])){return logger[_0xa1f8('0x25')](_0xa1f8('0x30'));}var _0x1eb51c={'startDate':moment()[_0xa1f8('0x31')](_0x3c0ebe[_0xa1f8('0x15')],_0x3c0ebe[_0xa1f8('0x2f')])[_0xa1f8('0xe')](_0xa1f8('0x32')),'endDate':moment()[_0xa1f8('0xe')](_0xa1f8('0x32')),'type':_0xa1f8('0x33'),'output':_0x3c0ebe[_0xa1f8('0x34')],'name':_0x3c0ebe['name']};if(!_[_0xa1f8('0x2d')](_0x3c0ebe[_0xa1f8('0x35')])){logger[_0xa1f8('0x25')](_0xa1f8('0x36'),_0x3c0ebe['DefaultReportId']);return analyticDefaultReportController[_0xa1f8('0x37')]({'id':_0x3c0ebe[_0xa1f8('0x35')]},_0x1eb51c)[_0xa1f8('0x27')](handleResult(_0x3c0ebe))[_0xa1f8('0x2a')](handleError());}if(!_[_0xa1f8('0x2d')](_0x3c0ebe[_0xa1f8('0x38')])){logger[_0xa1f8('0x25')](_0xa1f8('0x39'),_0x3c0ebe[_0xa1f8('0x38')]);return analyticCustomReportController[_0xa1f8('0x37')]({'id':_0x3c0ebe[_0xa1f8('0x38')]},_0x1eb51c)['then'](handleResult(_0x3c0ebe))[_0xa1f8('0x2a')](handleError());}}catch(_0x489029){logger[_0xa1f8('0x28')](JSON[_0xa1f8('0x22')](_0x489029));}return logger[_0xa1f8('0x25')](_0xa1f8('0x3a'));};}function getJobs(_0x480969){var _0x21d554={};if(_0x480969){_0x21d554['id']=_0x480969;}return db[_0xa1f8('0x3b')][_0xa1f8('0x3c')]({'where':_0x21d554,'include':[{'model':db[_0xa1f8('0x11')],'attributes':['id',_0xa1f8('0x10'),_0xa1f8('0xc')],'include':[{'model':db[_0xa1f8('0x3d')],'as':_0xa1f8('0x2c'),'include':[{'model':db[_0xa1f8('0x3e')],'as':_0xa1f8('0x3e')}]}]}]})[_0xa1f8('0x27')](function(_0x325655){var _0x315986=_['keys'](manager[_0xa1f8('0x3f')]);var _0x2d18ae=_[_0xa1f8('0x40')](_0x325655,function(_0x1e1e60){return _0x1e1e60['id'][_0xa1f8('0x41')]();});var _0x1c9c72=_[_0xa1f8('0x42')](_0x325655,function(_0x5b63a8){return _0x5b63a8['id'][_0xa1f8('0x41')]();});var _0x5a4b1e=_0x480969?_0x2d18ae:_['difference'](_0x2d18ae,_0x315986);var _0xd692d=_[_0xa1f8('0x43')](_0x2d18ae,_0x315986);var _0x156ff2=_[_0xa1f8('0x44')](_0x315986,_0x2d18ae);var _0x124c62;var _0x55fe21;for(_0x124c62=0x0;_0x124c62<_0x156ff2['length']&&!_0x480969;_0x124c62+=0x1){_0x55fe21=_0x156ff2[_0x124c62][_0xa1f8('0x41')]();if(manager[_0xa1f8('0x45')](_0x55fe21)){manager[_0xa1f8('0x46')](_0x55fe21);manager[_0xa1f8('0x47')](_0x55fe21);logger[_0xa1f8('0x25')](_0xa1f8('0x48'),_0x55fe21);}}logger[_0xa1f8('0x25')](_0xa1f8('0x49'),JSON[_0xa1f8('0x22')](_0x5a4b1e));for(_0x124c62=0x0;_0x124c62<_0x5a4b1e[_0xa1f8('0x4a')];_0x124c62+=0x1){_0x55fe21=_0x5a4b1e[_0x124c62][_0xa1f8('0x41')]();logger[_0xa1f8('0x25')]('index',_0x55fe21);if(_0x480969){logger[_0xa1f8('0x25')]('my\x20id',_0x480969);logger[_0xa1f8('0x25')](JSON[_0xa1f8('0x22')](_0x1c9c72[_0x55fe21]));BPromise[_0xa1f8('0x4b')]()[_0xa1f8('0x27')](handleJob(_0x1c9c72[_0x55fe21]));logger[_0xa1f8('0x25')]('run\x20job',_0x1c9c72[_0x55fe21][_0xa1f8('0x10')],_0x1c9c72[_0x55fe21]['cron']);}else if(_0x1c9c72[_0x55fe21][_0xa1f8('0x4c')]&&_0x1c9c72[_0x55fe21][_0xa1f8('0x4d')]&&moment()[_0xa1f8('0x4e')](_0x1c9c72[_0x55fe21]['startAt'],_0x1c9c72[_0x55fe21]['endAt'])){manager[_0xa1f8('0x4f')](_0x55fe21,_0x1c9c72[_0x55fe21]['cron'],handleJob(_0x1c9c72[_0x55fe21]));manager[_0xa1f8('0x50')](_0x55fe21);logger[_0xa1f8('0x25')](_0xa1f8('0x51'),_0x1c9c72[_0x55fe21][_0xa1f8('0x10')],_0x1c9c72[_0x55fe21][_0xa1f8('0x4c')]);}else if(manager[_0xa1f8('0x45')](_0x55fe21)){manager[_0xa1f8('0x46')](_0x55fe21);manager['deleteJob'](_0x55fe21);logger[_0xa1f8('0x25')](_0xa1f8('0x52'),_0x1c9c72[_0x55fe21][_0xa1f8('0x10')],_0x1c9c72[_0x55fe21][_0xa1f8('0x4c')]);}}for(_0x124c62=0x0,_0x55fe21;_0x124c62<_0xd692d[_0xa1f8('0x4a')]&&!_0x480969;_0x124c62+=0x1){_0x55fe21=_0xd692d[_0x124c62][_0xa1f8('0x41')]();if(manager[_0xa1f8('0x45')](_0x55fe21)){if(_0x1c9c72[_0x55fe21][_0xa1f8('0x4c')]&&_0x1c9c72[_0x55fe21]['active']&&moment()[_0xa1f8('0x4e')](_0x1c9c72[_0x55fe21]['startAt'],_0x1c9c72[_0x55fe21][_0xa1f8('0x53')])){manager[_0xa1f8('0x54')](_0x55fe21,_0x1c9c72[_0x55fe21][_0xa1f8('0x4c')],handleJob(_0x1c9c72[_0x55fe21]));logger[_0xa1f8('0x25')]('update\x20cron',_0x1c9c72[_0x55fe21][_0xa1f8('0x10')],_0x1c9c72[_0x55fe21][_0xa1f8('0x4c')]);}else{manager[_0xa1f8('0x46')](_0x55fe21);manager[_0xa1f8('0x47')](_0x55fe21);logger['info']('stop\x20cron',_0x1c9c72[_0x55fe21]['name'],_0x1c9c72[_0x55fe21]['cron']);}}}})[_0xa1f8('0x2a')](function(_0x5c01eb){logger[_0xa1f8('0x28')](JSON[_0xa1f8('0x22')](_0x5c01eb));});}exports[_0xa1f8('0x55')]=function(_0x1ec71a){return getJobs(_0x1ec71a);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0xa67c=['subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','MailServerOut','CloudProvider','keys','keyBy','toString','difference','intersection','length','stop','deleteJob','toRun','index','my\x20id','resolve','run\x20job','cron','active','isBetween','startAt','add','start','add\x20cron','exists','stop\x20cron','endAt','update','util','path','lodash','moment','cron-job-manager','../logger','../../mysqldb','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','info','email','\x22%s\x22\x20<%s>','name','MailAccount','Smtp','bcc','format','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','savename','%s.%s','basename','join','existsSync','status','message','attachments','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','stringify','Sent','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','catch','isNil','subtractNumber\x20null\x20or\x20undefined'];(function(_0x34e423,_0x55f44c){var _0x5d616d=function(_0x15b96b){while(--_0x15b96b){_0x34e423['push'](_0x34e423['shift']());}};_0x5d616d(++_0x55f44c);}(_0xa67c,0x1b6));var _0xca67=function(_0x43095b,_0xabb112){_0x43095b=_0x43095b-0x0;var _0x2378e4=_0xa67c[_0x43095b];return _0x2378e4;};'use strict';var fs=require('fs');var util=require(_0xca67('0x0'));var path=require(_0xca67('0x1'));var _=require(_0xca67('0x2'));var moment=require(_0xca67('0x3'));var CronJobManager=require(_0xca67('0x4'));var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0xca67('0x5'))('schedule');var db=require(_0xca67('0x6'))['db'];var analyticCustomReportController=require('../../api/analyticCustomReport/analyticCustomReport.controller');var analyticDefaultReportController=require(_0xca67('0x7'));var client=jayson[_0xca67('0x8')]['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x4fb2af,_0x529a7c){return function(){logger[_0xca67('0x9')]('Try\x20to\x20send\x20a\x20mail\x20to',_0x4fb2af[_0xca67('0xa')]);var _0x548f02=!![];var _0x4f88bf=_0x4fb2af['MailAccount']['getSmtpOptions']();var _0x5eb340={'account':_0x4f88bf,'message':{'from':util['format'](_0xca67('0xb'),_0x4fb2af['MailAccount'][_0xca67('0xc')],_0x4fb2af[_0xca67('0xd')][_0xca67('0xa')]||_0x4fb2af[_0xca67('0xd')][_0xca67('0xe')]['user']),'to':_0x4fb2af[_0xca67('0xa')],'cc':_0x4fb2af['cc'],'bcc':_0x4fb2af[_0xca67('0xf')],'subject':util[_0xca67('0x10')](_0xca67('0x11'),_0x529a7c[_0xca67('0xc')],_0x4fb2af[_0xca67('0x12')],_0x4fb2af[_0xca67('0x13')])}};var _0x3c0915=path['join'](__dirname,'../../files/reports');var _0x2c9aba=_0x529a7c[_0xca67('0x14')];var _0x5c1fc5=util[_0xca67('0x10')](_0xca67('0x15'),path[_0xca67('0x16')](_0x529a7c[_0xca67('0x14')],path['extname'](_0x529a7c['savename'])),'zip');var _0x9dfbcc=path[_0xca67('0x17')](_0x3c0915,_0x2c9aba);var _0x4524da=path[_0xca67('0x17')](_0x3c0915,_0x5c1fc5);if(fs[_0xca67('0x18')](_0x9dfbcc)){_0x529a7c[_0xca67('0x19')]='Sent';_0x5eb340[_0xca67('0x1a')][_0xca67('0x1b')]=[{'filename':_0x2c9aba,'path':_0x9dfbcc}];_0x5eb340[_0xca67('0x1a')]['text']=util[_0xca67('0x10')](_0xca67('0x1c'),JSON[_0xca67('0x1d')](_0x529a7c,null,0x2));}else if(fs[_0xca67('0x18')](_0x4524da)){_0x529a7c[_0xca67('0x19')]=_0xca67('0x1e');_0x5eb340['message'][_0xca67('0x1b')]=[{'filename':_0x5c1fc5,'path':_0x4524da}];}else{_0x5eb340[_0xca67('0x1a')]['text']=_0xca67('0x1f');if(!_0x4fb2af[_0xca67('0x20')]){_0x548f02=![];logger[_0xca67('0x9')](_0xca67('0x21'));}}if(_0x548f02){return client[_0xca67('0x22')](_0xca67('0x23'),_0x5eb340)[_0xca67('0x24')](function(_0x4afd6f){if(_0x4afd6f[_0xca67('0x25')]){return logger[_0xca67('0x25')](_0xca67('0x26'),JSON[_0xca67('0x1d')](_0x4afd6f));}return logger[_0xca67('0x9')]('email\x20sent');})[_0xca67('0x27')](function(_0x5b3585){return logger[_0xca67('0x25')](_0xca67('0x26'),JSON['stringify'](_0x5b3585));});}};}function handleError(){return function(_0x2e60a1){return logger[_0xca67('0x25')](JSON[_0xca67('0x1d')](_0x2e60a1));};}function handleResult(_0x4828d5){return function(_0x5aafaa){logger['info']('data',JSON[_0xca67('0x1d')](_0x5aafaa));if(_0x4828d5[_0xca67('0xd')]&&_0x4828d5[_0xca67('0xd')][_0xca67('0xe')]&&!_['isNil'](_0x4828d5[_0xca67('0xa')])){setTimeout(handleSendEmail(_0x4828d5,_0x5aafaa),0x3c*0x3e8);}};}function handleJob(_0x11e712){return function(){try{if(_[_0xca67('0x28')](_0x11e712[_0xca67('0x12')])){return logger[_0xca67('0x9')](_0xca67('0x29'));}if(_['isNil'](_0x11e712[_0xca67('0x13')])){return logger[_0xca67('0x9')](_0xca67('0x2a'));}var _0x2700c3={'startDate':moment()[_0xca67('0x2b')](_0x11e712[_0xca67('0x12')],_0x11e712[_0xca67('0x13')])[_0xca67('0x10')](_0xca67('0x2c')),'endDate':moment()[_0xca67('0x10')](_0xca67('0x2c')),'type':_0xca67('0x2d'),'output':_0x11e712['output'],'name':_0x11e712[_0xca67('0xc')]};if(!_[_0xca67('0x28')](_0x11e712[_0xca67('0x2e')])){logger['info'](_0xca67('0x2f'),_0x11e712[_0xca67('0x2e')]);return analyticDefaultReportController[_0xca67('0x30')]({'id':_0x11e712['DefaultReportId']},_0x2700c3)['then'](handleResult(_0x11e712))['catch'](handleError());}if(!_[_0xca67('0x28')](_0x11e712[_0xca67('0x31')])){logger[_0xca67('0x9')](_0xca67('0x32'),_0x11e712['CustomReportId']);return analyticCustomReportController[_0xca67('0x30')]({'id':_0x11e712[_0xca67('0x31')]},_0x2700c3)['then'](handleResult(_0x11e712))['catch'](handleError());}}catch(_0x290b42){logger[_0xca67('0x25')](JSON[_0xca67('0x1d')](_0x290b42));}return logger[_0xca67('0x9')](_0xca67('0x33'));};}function getJobs(_0x7b99c9){var _0x326980={};if(_0x7b99c9){_0x326980['id']=_0x7b99c9;}return db[_0xca67('0x34')][_0xca67('0x35')]({'where':_0x326980,'include':[{'model':db['MailAccount'],'attributes':['id',_0xca67('0xc'),_0xca67('0xa')],'include':[{'model':db[_0xca67('0x36')],'as':'Smtp','include':[{'model':db[_0xca67('0x37')],'as':_0xca67('0x37')}]}]}]})['then'](function(_0x1d5e07){var _0xdbc28e=_[_0xca67('0x38')](manager['jobs']);var _0x4d15af=_['map'](_0x1d5e07,function(_0x382151){return _0x382151['id']['toString']();});var _0x2a2e43=_[_0xca67('0x39')](_0x1d5e07,function(_0x243839){return _0x243839['id'][_0xca67('0x3a')]();});var _0x465adc=_0x7b99c9?_0x4d15af:_[_0xca67('0x3b')](_0x4d15af,_0xdbc28e);var _0x51ee2a=_[_0xca67('0x3c')](_0x4d15af,_0xdbc28e);var _0x3eb15e=_[_0xca67('0x3b')](_0xdbc28e,_0x4d15af);var _0x1beb27;var _0xc6bd99;for(_0x1beb27=0x0;_0x1beb27<_0x3eb15e[_0xca67('0x3d')]&&!_0x7b99c9;_0x1beb27+=0x1){_0xc6bd99=_0x3eb15e[_0x1beb27][_0xca67('0x3a')]();if(manager['exists'](_0xc6bd99)){manager[_0xca67('0x3e')](_0xc6bd99);manager[_0xca67('0x3f')](_0xc6bd99);logger[_0xca67('0x9')]('delete\x20cron',_0xc6bd99);}}logger[_0xca67('0x9')](_0xca67('0x40'),JSON[_0xca67('0x1d')](_0x465adc));for(_0x1beb27=0x0;_0x1beb27<_0x465adc['length'];_0x1beb27+=0x1){_0xc6bd99=_0x465adc[_0x1beb27]['toString']();logger[_0xca67('0x9')](_0xca67('0x41'),_0xc6bd99);if(_0x7b99c9){logger['info'](_0xca67('0x42'),_0x7b99c9);logger[_0xca67('0x9')](JSON['stringify'](_0x2a2e43[_0xc6bd99]));BPromise[_0xca67('0x43')]()[_0xca67('0x24')](handleJob(_0x2a2e43[_0xc6bd99]));logger[_0xca67('0x9')](_0xca67('0x44'),_0x2a2e43[_0xc6bd99][_0xca67('0xc')],_0x2a2e43[_0xc6bd99][_0xca67('0x45')]);}else if(_0x2a2e43[_0xc6bd99][_0xca67('0x45')]&&_0x2a2e43[_0xc6bd99][_0xca67('0x46')]&&moment()[_0xca67('0x47')](_0x2a2e43[_0xc6bd99][_0xca67('0x48')],_0x2a2e43[_0xc6bd99]['endAt'])){manager[_0xca67('0x49')](_0xc6bd99,_0x2a2e43[_0xc6bd99]['cron'],handleJob(_0x2a2e43[_0xc6bd99]));manager[_0xca67('0x4a')](_0xc6bd99);logger[_0xca67('0x9')](_0xca67('0x4b'),_0x2a2e43[_0xc6bd99][_0xca67('0xc')],_0x2a2e43[_0xc6bd99]['cron']);}else if(manager[_0xca67('0x4c')](_0xc6bd99)){manager[_0xca67('0x3e')](_0xc6bd99);manager[_0xca67('0x3f')](_0xc6bd99);logger[_0xca67('0x9')](_0xca67('0x4d'),_0x2a2e43[_0xc6bd99]['name'],_0x2a2e43[_0xc6bd99]['cron']);}}for(_0x1beb27=0x0,_0xc6bd99;_0x1beb27<_0x51ee2a['length']&&!_0x7b99c9;_0x1beb27+=0x1){_0xc6bd99=_0x51ee2a[_0x1beb27][_0xca67('0x3a')]();if(manager['exists'](_0xc6bd99)){if(_0x2a2e43[_0xc6bd99][_0xca67('0x45')]&&_0x2a2e43[_0xc6bd99][_0xca67('0x46')]&&moment()['isBetween'](_0x2a2e43[_0xc6bd99][_0xca67('0x48')],_0x2a2e43[_0xc6bd99][_0xca67('0x4e')])){manager[_0xca67('0x4f')](_0xc6bd99,_0x2a2e43[_0xc6bd99][_0xca67('0x45')],handleJob(_0x2a2e43[_0xc6bd99]));logger[_0xca67('0x9')]('update\x20cron',_0x2a2e43[_0xc6bd99][_0xca67('0xc')],_0x2a2e43[_0xc6bd99][_0xca67('0x45')]);}else{manager[_0xca67('0x3e')](_0xc6bd99);manager[_0xca67('0x3f')](_0xc6bd99);logger[_0xca67('0x9')](_0xca67('0x4d'),_0x2a2e43[_0xc6bd99][_0xca67('0xc')],_0x2a2e43[_0xc6bd99][_0xca67('0x45')]);}}}})[_0xca67('0x27')](function(_0x5e41e4){logger[_0xca67('0x25')](JSON['stringify'](_0x5e41e4));});}exports['run']=function(_0x4a88d5){return getJobs(_0x4a88d5);};exports[_0xca67('0x4a')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index 32a91a3..cee5893 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4e2=['resolve','Sentiment','Mixed','catch','name','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','findAll','No\x20transcribe\x20job\x20to\x20check','Setting','bucket','CloudProvider','transcribeAccountId','forEach','push','all','error','start','lodash','util','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','transcribeRegion','then','TranscriptionJobStatus','fileText','TranscriptionJob','COMPLETED','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','Transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','Sequelize','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','findOne','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','sentimentRegion','language','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','SentimentScore','Positive','Negative','Neutral','FAILED','FailureReason'];(function(_0x203d64,_0x1ec79c){var _0x462ab3=function(_0x55ee6e){while(--_0x55ee6e){_0x203d64['push'](_0x203d64['shift']());}};_0x462ab3(++_0x1ec79c);}(_0xb4e2,0x1aa));var _0x2b4e=function(_0x23a73b,_0x32ecbf){_0x23a73b=_0x23a73b-0x0;var _0x18d717=_0xb4e2[_0x23a73b];return _0x18d717;};var _=require(_0x2b4e('0x0'));var AWS=require('aws-sdk');var rp=require('request-promise');var util=require(_0x2b4e('0x1'));var BPromise=require('bluebird');var db=require('../../mysqldb')['db'];var logger=require('../../config/logger')(_0x2b4e('0x2'));function getTranscriptionJob(_0x681c21,_0x14fbca,_0x1131c0,_0xf07f95){return new Promise(function(_0x1a77ed,_0x10f028){var _0x4a84a9=new AWS[(_0x2b4e('0x3'))]({'accessKeyId':_0x14fbca,'secretAccessKey':_0x681c21,'region':_0x1131c0});_0x4a84a9[_0x2b4e('0x4')]({'TranscriptionJobName':_0xf07f95},function(_0x36f83e,_0x36a811){if(_0x36f83e){return _0x10f028(_0x36f83e);}else{return _0x1a77ed(_0x36a811);}});});}function sentiment(_0x32795f,_0x2208ce,_0x3fd14e,_0x14bb06,_0xfaa7ec){return new Promise(function(_0x3015e6,_0x16b4ae){var _0xa05d7e=new AWS[(_0x2b4e('0x5'))]({'accessKeyId':_0x2208ce,'secretAccessKey':_0x32795f,'region':_0x3fd14e});_0xa05d7e[_0x2b4e('0x6')]({'Text':_0x14bb06,'LanguageCode':_0xfaa7ec['substring'](0x0,0x2)},function(_0xcbeaff,_0x1315aa){if(_0xcbeaff){return _0x16b4ae(_0xcbeaff);}else{return _0x3015e6(_0x1315aa);}});});}function checkTranscribeJob(_0x1cf80d,_0xca0a0e,_0x595fcc){var _0x8531ed;return new BPromise(function(_0x579559,_0x41d2a1){logger[_0x2b4e('0x7')](util[_0x2b4e('0x8')](_0x2b4e('0x9'),_0x1cf80d['id'],_0x1cf80d[_0x2b4e('0xa')]));return getTranscriptionJob(_0x595fcc[_0x2b4e('0xb')],_0x595fcc['data2'],_0xca0a0e[_0x2b4e('0xc')],_0x1cf80d[_0x2b4e('0xa')])[_0x2b4e('0xd')](function(_0x4d329f){logger[_0x2b4e('0x7')](util[_0x2b4e('0x8')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x1cf80d['id'],_0x1cf80d[_0x2b4e('0xa')],_0x4d329f['TranscriptionJob'][_0x2b4e('0xe')]));if(!_0x1cf80d[_0x2b4e('0xf')]){switch(_0x4d329f[_0x2b4e('0x10')][_0x2b4e('0xe')]){case _0x2b4e('0x11'):var _0x36d927={'transcribeStatus':_0x4d329f[_0x2b4e('0x10')][_0x2b4e('0xe')],'fileUri':_0x4d329f[_0x2b4e('0x10')]['Transcript'][_0x2b4e('0x12')]};logger['info'](util[_0x2b4e('0x8')](_0x2b4e('0x13'),_0x1cf80d['id']));return rp({'uri':_0x4d329f[_0x2b4e('0x10')][_0x2b4e('0x14')]['TranscriptFileUri'],'json':!![]})[_0x2b4e('0xd')](function(_0xdb887f){logger[_0x2b4e('0x7')](util['format'](_0x2b4e('0x15'),_0x1cf80d['id']));if(_0xdb887f&&_0xdb887f[_0x2b4e('0x16')]&&_0xdb887f['results'][_0x2b4e('0x17')]&&_0xdb887f['results'][_0x2b4e('0x17')][_0x2b4e('0x18')]){_0x36d927['fileText']='';for(var _0x5e37f7=0x0;_0x5e37f7<_0xdb887f[_0x2b4e('0x16')][_0x2b4e('0x17')][_0x2b4e('0x18')];_0x5e37f7++){_0x36d927['fileText']+=_0xdb887f[_0x2b4e('0x16')][_0x2b4e('0x17')][_0x5e37f7][_0x2b4e('0x19')]+'';}}return _0x1cf80d[_0x2b4e('0x1a')](_0x36d927);})[_0x2b4e('0xd')](function(){logger[_0x2b4e('0x7')](util[_0x2b4e('0x8')](_0x2b4e('0x1b'),_0x1cf80d['id']));if(!_0x1cf80d[_0x2b4e('0x1c')]){throw new db['Sequelize'][(_0x2b4e('0x1d'))](_0x2b4e('0x1e'));}if(!_0xca0a0e[_0x2b4e('0x1f')]||!_0xca0a0e[_0x2b4e('0x20')]||!_0xca0a0e['sentimentRegion']||!_0xca0a0e['language']||!_0xca0a0e['bucket']){throw new db[(_0x2b4e('0x21'))][(_0x2b4e('0x1d'))](_0x2b4e('0x22'));}if(!_0x36d927['fileText']){throw new Error(_0x2b4e('0x23'));}if(_0xca0a0e[_0x2b4e('0x20')]===_0x595fcc['id']){return _0x595fcc;}else{return db['CloudProvider'][_0x2b4e('0x24')]({'where':{'id':_settings[_0x2b4e('0x20')]}});}})[_0x2b4e('0xd')](function(_0x19618a){if(!_0x19618a){throw new db[(_0x2b4e('0x21'))][(_0x2b4e('0x1d'))](_0x2b4e('0x25'));}if(!_0x19618a['data1']||!_0x19618a[_0x2b4e('0x26')]){throw new db[(_0x2b4e('0x21'))][(_0x2b4e('0x1d'))](_0x2b4e('0x27'));}_0x8531ed=_0x19618a;logger[_0x2b4e('0x7')](util['format'](_0x2b4e('0x28'),_0x1cf80d['id']));return sentiment(_0x8531ed[_0x2b4e('0xb')],_0x8531ed[_0x2b4e('0x26')],_0xca0a0e[_0x2b4e('0x29')],_0x36d927['fileText'],_0xca0a0e[_0x2b4e('0x2a')]);})[_0x2b4e('0xd')](function(_0x58b099){logger['info'](util[_0x2b4e('0x8')](_0x2b4e('0x2b'),_0x1cf80d['id']));return _0x1cf80d[_0x2b4e('0x1a')]({'sentiment':_0x58b099['Sentiment'],'sPositive':_0x58b099[_0x2b4e('0x2c')][_0x2b4e('0x2d')],'sNegative':_0x58b099[_0x2b4e('0x2c')][_0x2b4e('0x2e')],'sMixed':_0x58b099['SentimentScore']['Mixed'],'sNeutral':_0x58b099[_0x2b4e('0x2c')][_0x2b4e('0x2f')]});})[_0x2b4e('0xd')](function(){logger[_0x2b4e('0x7')](util[_0x2b4e('0x8')](_0x2b4e('0x1b'),_0x1cf80d['id']));_0x579559();});case _0x2b4e('0x30'):return _0x1cf80d['update']({'transcribeStatus':'FAILED','failureReason':_0x4d329f['TranscriptionJob'][_0x2b4e('0x31')]})[_0x2b4e('0xd')](function(){logger[_0x2b4e('0x7')](util[_0x2b4e('0x8')](_0x2b4e('0x1b'),_0x1cf80d['id']));_0x579559();});default:logger[_0x2b4e('0x7')](util['format']('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0x1cf80d['id']));break;}}else{return BPromise[_0x2b4e('0x32')]()['then'](function(){if(!_0x1cf80d[_0x2b4e('0x1c')]){throw new db[(_0x2b4e('0x21'))][(_0x2b4e('0x1d'))](_0x2b4e('0x1e'));}if(!_0xca0a0e[_0x2b4e('0x1f')]||!_0xca0a0e['sentimentAccountId']||!_0xca0a0e[_0x2b4e('0x29')]||!_0xca0a0e[_0x2b4e('0x2a')]||!_0xca0a0e['bucket']){throw new db[(_0x2b4e('0x21'))][(_0x2b4e('0x1d'))](_0x2b4e('0x22'));}if(!_0x1cf80d[_0x2b4e('0xf')]){throw new Error(_0x2b4e('0x23'));}if(_0xca0a0e[_0x2b4e('0x20')]===_0x595fcc['id']){return _0x595fcc;}else{return db['CloudProvider'][_0x2b4e('0x24')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0x2b4e('0xd')](function(_0x5706f2){if(!_0x5706f2){throw new db[(_0x2b4e('0x21'))]['ValidationError'](_0x2b4e('0x25'));}if(!_0x5706f2[_0x2b4e('0xb')]||!_0x5706f2[_0x2b4e('0x26')]){throw new db['Sequelize'][(_0x2b4e('0x1d'))]('Cloud\x20Provider\x20not\x20configured');}_0x8531ed=_0x5706f2;logger[_0x2b4e('0x7')](util['format']('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x1cf80d['id']));return sentiment(_0x8531ed[_0x2b4e('0xb')],_0x8531ed[_0x2b4e('0x26')],_0xca0a0e['sentimentRegion'],_0x1cf80d['fileText'],_0xca0a0e[_0x2b4e('0x2a')]);})[_0x2b4e('0xd')](function(_0x211e58){logger[_0x2b4e('0x7')](util[_0x2b4e('0x8')](_0x2b4e('0x2b'),_0x1cf80d['id']));return _0x1cf80d[_0x2b4e('0x1a')]({'sentiment':_0x211e58[_0x2b4e('0x33')],'sPositive':_0x211e58[_0x2b4e('0x2c')][_0x2b4e('0x2d')],'sNegative':_0x211e58[_0x2b4e('0x2c')][_0x2b4e('0x2e')],'sMixed':_0x211e58[_0x2b4e('0x2c')][_0x2b4e('0x34')],'sNeutral':_0x211e58['SentimentScore']['Neutral'],'transcribeStatus':_0x2b4e('0x11')});})[_0x2b4e('0xd')](function(){logger[_0x2b4e('0x7')](util[_0x2b4e('0x8')](_0x2b4e('0x1b'),_0x1cf80d['id']));_0x579559();});}})[_0x2b4e('0x35')](function(_0x4ffe08){if(_0x4ffe08){if(!_0x4ffe08[_0x2b4e('0x36')]||_0x4ffe08[_0x2b4e('0x36')]!=='SequelizeValidationError'){logger['error'](util[_0x2b4e('0x8')](_0x2b4e('0x37'),_0x1cf80d['id']),util[_0x2b4e('0x38')](_0x4ffe08,{'showHidden':![],'depth':null}));}}_0x579559();});});}function checkTranscribe(){var _0x51bbce;var _0x7c795d;var _0x25aa50;return db['VoiceRecording'][_0x2b4e('0x39')]({'where':{'transcribeStatus':'IN_PROGRESS'}})['then'](function(_0xd9167f){if(!_0xd9167f||!_0xd9167f[_0x2b4e('0x18')]){throw new db['Sequelize'][(_0x2b4e('0x1d'))](_0x2b4e('0x3a'));}_0x51bbce=_0xd9167f;return db[_0x2b4e('0x3b')][_0x2b4e('0x24')]({'where':{'id':0x1}});})[_0x2b4e('0xd')](function(_0x49adea){if(!_0x49adea){throw new db[(_0x2b4e('0x21'))][(_0x2b4e('0x1d'))]('Settings\x20not\x20available');}_0x7c795d=_0x49adea;if(!_0x7c795d[_0x2b4e('0x2')]||!_0x7c795d['transcribeAccountId']||!_0x7c795d[_0x2b4e('0xc')]||!_0x7c795d[_0x2b4e('0x2a')]||!_0x7c795d[_0x2b4e('0x3c')]){throw new db[(_0x2b4e('0x21'))]['ValidationError']('Transcribe\x20not\x20configured');}return db[_0x2b4e('0x3d')][_0x2b4e('0x24')]({'where':{'id':_0x7c795d[_0x2b4e('0x3e')]}});})[_0x2b4e('0xd')](function(_0x58c995){if(!_0x58c995){throw new db[(_0x2b4e('0x21'))][(_0x2b4e('0x1d'))](_0x2b4e('0x25'));}if(!_0x58c995[_0x2b4e('0xb')]||!_0x58c995[_0x2b4e('0x26')]){throw new db[(_0x2b4e('0x21'))][(_0x2b4e('0x1d'))](_0x2b4e('0x27'));}_0x25aa50=_0x58c995;var _0x5ba01c=[];_0x51bbce[_0x2b4e('0x3f')](function(_0x10bdf2){_0x5ba01c[_0x2b4e('0x40')](checkTranscribeJob(_0x10bdf2,_0x7c795d,_0x25aa50));});return BPromise[_0x2b4e('0x41')](_0x5ba01c);})['catch'](function(_0xed21f2){if(_0xed21f2){if(!_0xed21f2['name']||_0xed21f2[_0x2b4e('0x36')]!=='SequelizeValidationError'){logger[_0x2b4e('0x42')](util[_0x2b4e('0x38')](_0xed21f2,{'showHidden':![],'depth':null}));}}});}exports[_0x2b4e('0x43')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0x902b=['Cloud\x20Provider\x20not\x20configured','language','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Sentiment\x20Analysis\x20not\x20requested','findOne','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','Positive','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','transcribeAccountId','bucket','Transcribe\x20not\x20configured','push','catch','start','lodash','request-promise','util','bluebird','../../mysqldb','../../config/logger','transcribe','Comprehend','detectSentiment','substring','info','format','transcribeName','data1','data2','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','fileText','TranscriptionJobStatus','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','update','tempSentiment','Sequelize','ValidationError','sentiment','sentimentAccountId','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','Cloud\x20Provider\x20not\x20available'];(function(_0x35b7d4,_0x5a5c43){var _0x4e8cee=function(_0x66859c){while(--_0x66859c){_0x35b7d4['push'](_0x35b7d4['shift']());}};_0x4e8cee(++_0x5a5c43);}(_0x902b,0x6a));var _0xb902=function(_0x4b7895,_0x3c4f5d){_0x4b7895=_0x4b7895-0x0;var _0x264180=_0x902b[_0x4b7895];return _0x264180;};var _=require(_0xb902('0x0'));var AWS=require('aws-sdk');var rp=require(_0xb902('0x1'));var util=require(_0xb902('0x2'));var BPromise=require(_0xb902('0x3'));var db=require(_0xb902('0x4'))['db'];var logger=require(_0xb902('0x5'))(_0xb902('0x6'));function getTranscriptionJob(_0x492bd4,_0x1af7b5,_0x49e5af,_0x98a793){return new Promise(function(_0x5d38bb,_0x157e14){var _0x5e7240=new AWS['TranscribeService']({'accessKeyId':_0x1af7b5,'secretAccessKey':_0x492bd4,'region':_0x49e5af});_0x5e7240['getTranscriptionJob']({'TranscriptionJobName':_0x98a793},function(_0x55331d,_0x534c79){if(_0x55331d){return _0x157e14(_0x55331d);}else{return _0x5d38bb(_0x534c79);}});});}function sentiment(_0x1ad7c1,_0x21ffe1,_0x573fa5,_0x5a4769,_0xf7d3da){return new Promise(function(_0x2cfedd,_0x19ea79){var _0x1cf8dd=new AWS[(_0xb902('0x7'))]({'accessKeyId':_0x21ffe1,'secretAccessKey':_0x1ad7c1,'region':_0x573fa5});_0x1cf8dd[_0xb902('0x8')]({'Text':_0x5a4769,'LanguageCode':_0xf7d3da[_0xb902('0x9')](0x0,0x2)},function(_0x410b4e,_0x5b104a){if(_0x410b4e){return _0x19ea79(_0x410b4e);}else{return _0x2cfedd(_0x5b104a);}});});}function checkTranscribeJob(_0x34c8a4,_0x5ba891,_0x22a4d4){var _0xa4c3c1;return new BPromise(function(_0x5ae255,_0x4a375d){logger[_0xb902('0xa')](util[_0xb902('0xb')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x34c8a4['id'],_0x34c8a4[_0xb902('0xc')]));return getTranscriptionJob(_0x22a4d4[_0xb902('0xd')],_0x22a4d4[_0xb902('0xe')],_0x5ba891[_0xb902('0xf')],_0x34c8a4[_0xb902('0xc')])[_0xb902('0x10')](function(_0x5d2e45){logger[_0xb902('0xa')](util[_0xb902('0xb')](_0xb902('0x11'),_0x34c8a4['id'],_0x34c8a4[_0xb902('0xc')],_0x5d2e45[_0xb902('0x12')]['TranscriptionJobStatus']));if(!_0x34c8a4[_0xb902('0x13')]){switch(_0x5d2e45[_0xb902('0x12')][_0xb902('0x14')]){case _0xb902('0x15'):var _0x4a474e={'transcribeStatus':_0x5d2e45[_0xb902('0x12')]['TranscriptionJobStatus'],'fileUri':_0x5d2e45[_0xb902('0x12')][_0xb902('0x16')][_0xb902('0x17')]};logger['info'](util['format'](_0xb902('0x18'),_0x34c8a4['id']));return rp({'uri':_0x5d2e45[_0xb902('0x12')][_0xb902('0x16')]['TranscriptFileUri'],'json':!![]})[_0xb902('0x10')](function(_0x309248){logger[_0xb902('0xa')](util[_0xb902('0xb')](_0xb902('0x19'),_0x34c8a4['id']));if(_0x309248&&_0x309248[_0xb902('0x1a')]&&_0x309248[_0xb902('0x1a')][_0xb902('0x1b')]&&_0x309248[_0xb902('0x1a')][_0xb902('0x1b')]['length']){_0x4a474e[_0xb902('0x13')]='';for(var _0x38b31b=0x0;_0x38b31b<_0x309248[_0xb902('0x1a')]['transcripts'][_0xb902('0x1c')];_0x38b31b++){_0x4a474e['fileText']+=_0x309248[_0xb902('0x1a')][_0xb902('0x1b')][_0x38b31b]['transcript']+'';}}return _0x34c8a4[_0xb902('0x1d')](_0x4a474e);})[_0xb902('0x10')](function(){logger[_0xb902('0xa')](util[_0xb902('0xb')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x34c8a4['id']));if(!_0x34c8a4[_0xb902('0x1e')]){throw new db[(_0xb902('0x1f'))][(_0xb902('0x20'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x5ba891[_0xb902('0x21')]||!_0x5ba891[_0xb902('0x22')]||!_0x5ba891[_0xb902('0x23')]||!_0x5ba891['language']||!_0x5ba891['bucket']){throw new db[(_0xb902('0x1f'))][(_0xb902('0x20'))](_0xb902('0x24'));}if(!_0x4a474e[_0xb902('0x13')]){throw new Error(_0xb902('0x25'));}if(_0x5ba891[_0xb902('0x22')]===_0x22a4d4['id']){return _0x22a4d4;}else{return db[_0xb902('0x26')]['findOne']({'where':{'id':_settings[_0xb902('0x22')]}});}})[_0xb902('0x10')](function(_0x34877e){if(!_0x34877e){throw new db['Sequelize'][(_0xb902('0x20'))](_0xb902('0x27'));}if(!_0x34877e['data1']||!_0x34877e[_0xb902('0xe')]){throw new db[(_0xb902('0x1f'))][(_0xb902('0x20'))](_0xb902('0x28'));}_0xa4c3c1=_0x34877e;logger['info'](util[_0xb902('0xb')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x34c8a4['id']));return sentiment(_0xa4c3c1['data1'],_0xa4c3c1[_0xb902('0xe')],_0x5ba891[_0xb902('0x23')],_0x4a474e[_0xb902('0x13')],_0x5ba891[_0xb902('0x29')]);})['then'](function(_0x37458f){logger['info'](util[_0xb902('0xb')](_0xb902('0x2a'),_0x34c8a4['id']));return _0x34c8a4['update']({'sentiment':_0x37458f[_0xb902('0x2b')],'sPositive':_0x37458f[_0xb902('0x2c')]['Positive'],'sNegative':_0x37458f[_0xb902('0x2c')][_0xb902('0x2d')],'sMixed':_0x37458f[_0xb902('0x2c')][_0xb902('0x2e')],'sNeutral':_0x37458f[_0xb902('0x2c')][_0xb902('0x2f')]});})[_0xb902('0x10')](function(){logger[_0xb902('0xa')](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x34c8a4['id']));_0x5ae255();});case _0xb902('0x30'):return _0x34c8a4[_0xb902('0x1d')]({'transcribeStatus':_0xb902('0x30'),'failureReason':_0x5d2e45[_0xb902('0x12')][_0xb902('0x31')]})[_0xb902('0x10')](function(){logger[_0xb902('0xa')](util[_0xb902('0xb')](_0xb902('0x32'),_0x34c8a4['id']));_0x5ae255();});default:logger[_0xb902('0xa')](util[_0xb902('0xb')](_0xb902('0x33'),_0x34c8a4['id']));break;}}else{return BPromise[_0xb902('0x34')]()[_0xb902('0x10')](function(){if(!_0x34c8a4[_0xb902('0x1e')]){throw new db[(_0xb902('0x1f'))]['ValidationError'](_0xb902('0x35'));}if(!_0x5ba891[_0xb902('0x21')]||!_0x5ba891[_0xb902('0x22')]||!_0x5ba891[_0xb902('0x23')]||!_0x5ba891[_0xb902('0x29')]||!_0x5ba891['bucket']){throw new db['Sequelize']['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x34c8a4[_0xb902('0x13')]){throw new Error(_0xb902('0x25'));}if(_0x5ba891[_0xb902('0x22')]===_0x22a4d4['id']){return _0x22a4d4;}else{return db[_0xb902('0x26')][_0xb902('0x36')]({'where':{'id':_settings[_0xb902('0x22')]}});}})[_0xb902('0x10')](function(_0x5e54d4){if(!_0x5e54d4){throw new db[(_0xb902('0x1f'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x5e54d4['data1']||!_0x5e54d4[_0xb902('0xe')]){throw new db[(_0xb902('0x1f'))][(_0xb902('0x20'))]('Cloud\x20Provider\x20not\x20configured');}_0xa4c3c1=_0x5e54d4;logger[_0xb902('0xa')](util[_0xb902('0xb')](_0xb902('0x37'),_0x34c8a4['id']));return sentiment(_0xa4c3c1['data1'],_0xa4c3c1[_0xb902('0xe')],_0x5ba891['sentimentRegion'],_0x34c8a4[_0xb902('0x13')],_0x5ba891['language']);})[_0xb902('0x10')](function(_0x1a9c17){logger[_0xb902('0xa')](util['format'](_0xb902('0x2a'),_0x34c8a4['id']));return _0x34c8a4['update']({'sentiment':_0x1a9c17[_0xb902('0x2b')],'sPositive':_0x1a9c17[_0xb902('0x2c')][_0xb902('0x38')],'sNegative':_0x1a9c17[_0xb902('0x2c')]['Negative'],'sMixed':_0x1a9c17['SentimentScore'][_0xb902('0x2e')],'sNeutral':_0x1a9c17[_0xb902('0x2c')][_0xb902('0x2f')],'transcribeStatus':_0xb902('0x15')});})['then'](function(){logger[_0xb902('0xa')](util['format'](_0xb902('0x32'),_0x34c8a4['id']));_0x5ae255();});}})['catch'](function(_0x80f614){if(_0x80f614){if(!_0x80f614[_0xb902('0x39')]||_0x80f614[_0xb902('0x39')]!==_0xb902('0x3a')){logger[_0xb902('0x3b')](util[_0xb902('0xb')](_0xb902('0x3c'),_0x34c8a4['id']),util[_0xb902('0x3d')](_0x80f614,{'showHidden':![],'depth':null}));}}_0x5ae255();});});}function checkTranscribe(){var _0x179d80;var _0x7405dc;var _0x249cc6;return db[_0xb902('0x3e')][_0xb902('0x3f')]({'where':{'transcribeStatus':_0xb902('0x40')}})[_0xb902('0x10')](function(_0x57cef9){if(!_0x57cef9||!_0x57cef9[_0xb902('0x1c')]){throw new db[(_0xb902('0x1f'))][(_0xb902('0x20'))](_0xb902('0x41'));}_0x179d80=_0x57cef9;return db[_0xb902('0x42')]['findOne']({'where':{'id':0x1}});})[_0xb902('0x10')](function(_0x2a31fd){if(!_0x2a31fd){throw new db['Sequelize'][(_0xb902('0x20'))]('Settings\x20not\x20available');}_0x7405dc=_0x2a31fd;if(!_0x7405dc[_0xb902('0x6')]||!_0x7405dc[_0xb902('0x43')]||!_0x7405dc[_0xb902('0xf')]||!_0x7405dc['language']||!_0x7405dc[_0xb902('0x44')]){throw new db[(_0xb902('0x1f'))][(_0xb902('0x20'))](_0xb902('0x45'));}return db[_0xb902('0x26')]['findOne']({'where':{'id':_0x7405dc[_0xb902('0x43')]}});})[_0xb902('0x10')](function(_0x257f03){if(!_0x257f03){throw new db[(_0xb902('0x1f'))][(_0xb902('0x20'))](_0xb902('0x27'));}if(!_0x257f03['data1']||!_0x257f03[_0xb902('0xe')]){throw new db['Sequelize']['ValidationError'](_0xb902('0x28'));}_0x249cc6=_0x257f03;var _0x5eb33a=[];_0x179d80['forEach'](function(_0x1cdc6f){_0x5eb33a[_0xb902('0x46')](checkTranscribeJob(_0x1cdc6f,_0x7405dc,_0x249cc6));});return BPromise['all'](_0x5eb33a);})[_0xb902('0x47')](function(_0x28afee){if(_0x28afee){if(!_0x28afee[_0xb902('0x39')]||_0x28afee[_0xb902('0x39')]!=='SequelizeValidationError'){logger[_0xb902('0x3b')](util['inspect'](_0x28afee,{'showHidden':![],'depth':null}));}}});}exports[_0xb902('0x48')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index b4075e1..00e52a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf414=['util','../../config/environment','../../mysqldb','../logger','schedule','redis','localhost','socket.io-emitter','WhatsappInteraction','findAll','lastMsgAt','subtract','hours','then','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','catch','inspect','start','lodash','ioredis'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0xf414,0xd7));var _0x4f41=function(_0x648163,_0x241576){_0x648163=_0x648163-0x0;var _0x199d4d=_0xf414[_0x648163];return _0x199d4d;};'use strict';var _=require(_0x4f41('0x0'));var moment=require('moment');var Redis=require(_0x4f41('0x1'));var util=require(_0x4f41('0x2'));var config=require(_0x4f41('0x3'));var db=require(_0x4f41('0x4'))['db'];var logger=require(_0x4f41('0x5'))(_0x4f41('0x6'));config[_0x4f41('0x7')]=_['defaults'](config['redis'],{'host':_0x4f41('0x8'),'port':0x18eb});var io=require(_0x4f41('0x9'))(new Redis(config[_0x4f41('0x7')]));function closeInteractions(){var _0x5eb7c3=[];return db[_0x4f41('0xa')][_0x4f41('0xb')]({'raw':!![],'attributes':['id',_0x4f41('0xc')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0x4f41('0xd')](0x18,_0x4f41('0xe'))}}})[_0x4f41('0xf')](function(_0x5179b0){if(_0x5179b0&&_0x5179b0[_0x4f41('0x10')]){_0x5eb7c3=_[_0x4f41('0x11')](_0x5179b0||[],'id');logger[_0x4f41('0x12')](_0x4f41('0x13'),_0x5eb7c3[_0x4f41('0x14')]());return db[_0x4f41('0xa')]['update']({'closeReason':_0x4f41('0x15'),'disposition':_0x4f41('0x16'),'closed':!![],'closedAt':moment()[_0x4f41('0x17')](_0x4f41('0x18'))},{'where':{'id':_0x5eb7c3}});}})['then'](function(){if(_0x5eb7c3&&_0x5eb7c3['length']){logger[_0x4f41('0x12')](_0x4f41('0x19'),_0x5eb7c3[_0x4f41('0x14')]());for(var _0x14a3f2=0x0;_0x14a3f2<_0x5eb7c3[_0x4f41('0x10')];_0x14a3f2++){io[_0x4f41('0x1a')](_0x4f41('0x1b'),{'id':_0x5eb7c3[_0x14a3f2],'closed':!![]});}}})[_0x4f41('0x1c')](function(_0x2189a0){logger['error']('[WHATSAPP]\x20Error\x20closing\x20interactions',_0x2189a0?util[_0x4f41('0x1d')](_0x2189a0,{'showHidden':![],'depth':null}):'');});}exports[_0x4f41('0x1e')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0xc61d=['[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment','ioredis','util','../../config/environment','../../mysqldb','schedule','redis','localhost','socket.io-emitter','WhatsappInteraction','findAll','lastMsgAt','subtract','hours','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','system','format','YYYY-MM-DD\x20HH:mm:ss','then','join','emit','whatsappInteraction:update','catch','error'];(function(_0x374b96,_0x16cbc0){var _0x4cfd6e=function(_0x20ade5){while(--_0x20ade5){_0x374b96['push'](_0x374b96['shift']());}};_0x4cfd6e(++_0x16cbc0);}(_0xc61d,0xfb));var _0xdc61=function(_0xd74a23,_0x78aeae){_0xd74a23=_0xd74a23-0x0;var _0x228d19=_0xc61d[_0xd74a23];return _0x228d19;};'use strict';var _=require(_0xdc61('0x0'));var moment=require(_0xdc61('0x1'));var Redis=require(_0xdc61('0x2'));var util=require(_0xdc61('0x3'));var config=require(_0xdc61('0x4'));var db=require(_0xdc61('0x5'))['db'];var logger=require('../logger')(_0xdc61('0x6'));config[_0xdc61('0x7')]=_['defaults'](config[_0xdc61('0x7')],{'host':_0xdc61('0x8'),'port':0x18eb});var io=require(_0xdc61('0x9'))(new Redis(config[_0xdc61('0x7')]));function closeInteractions(){var _0x3518fc=[];return db[_0xdc61('0xa')][_0xdc61('0xb')]({'raw':!![],'attributes':['id',_0xdc61('0xc')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0xdc61('0xd')](0x18,_0xdc61('0xe'))}}})['then'](function(_0x3d38bc){if(_0x3d38bc&&_0x3d38bc[_0xdc61('0xf')]){_0x3518fc=_[_0xdc61('0x10')](_0x3d38bc||[],'id');logger[_0xdc61('0x11')](_0xdc61('0x12'),_0x3518fc['join']());return db[_0xdc61('0xa')]['update']({'closeReason':_0xdc61('0x13'),'disposition':'timeout','closed':!![],'closedAt':moment()[_0xdc61('0x14')](_0xdc61('0x15'))},{'where':{'id':_0x3518fc}});}})[_0xdc61('0x16')](function(){if(_0x3518fc&&_0x3518fc[_0xdc61('0xf')]){logger[_0xdc61('0x11')]('[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:',_0x3518fc[_0xdc61('0x17')]());for(var _0x12c270=0x0;_0x12c270<_0x3518fc['length'];_0x12c270++){io[_0xdc61('0x18')](_0xdc61('0x19'),{'id':_0x3518fc[_0x12c270],'closed':!![]});}}})[_0xdc61('0x1a')](function(_0x386b7f){logger[_0xdc61('0x1b')](_0xdc61('0x1c'),_0x386b7f?util[_0xdc61('0x1d')](_0x386b7f,{'showHidden':![],'depth':null}):'');});}exports[_0xdc61('0x1e')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index b068a4b..8a27d55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6b5=['Innocenzo','Biondo','innocenzo.biondo','@xcally.com','now','CmContact','destroy','then','bulkCreate','contacts1','CmHopper','log','finished\x20populating','contacts2','catch','util','../mysqldb','push'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xc6b5,0x9f));var _0x5c6b=function(_0x2da49f,_0x15fa99){_0x2da49f=_0x2da49f-0x0;var _0x2d0f53=_0xc6b5[_0x2da49f];return _0x2d0f53;};'use strict';var util=require(_0x5c6b('0x0'));var db=require(_0x5c6b('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x5c6b('0x2')]({'id':i,'firstName':_0x5c6b('0x3')+i,'lastName':_0x5c6b('0x4')+i,'phone':0xf879fb460+i,'email':_0x5c6b('0x5')+i+_0x5c6b('0x6')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper['push']({'id':i,'active':![],'scheduledat':Date[_0x5c6b('0x7')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x5c6b('0x7')](),'updatedAt':Date[_0x5c6b('0x7')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x5c6b('0x2')]({'id':i,'firstName':_0x5c6b('0x3')+i,'lastName':_0x5c6b('0x4')+i,'phone':0xf879fb460+i,'email':_0x5c6b('0x5')+i+_0x5c6b('0x6')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x5c6b('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x5c6b('0x7')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x5c6b('0x7')](),'updatedAt':Date[_0x5c6b('0x7')]()});}db[_0x5c6b('0x8')][_0x5c6b('0x9')]({'where':{}})[_0x5c6b('0xa')](function(){return db[_0x5c6b('0x8')][_0x5c6b('0xb')](contacts);})[_0x5c6b('0xa')](function(){console['log']('finished\x20populating',_0x5c6b('0xc'));return db[_0x5c6b('0xd')][_0x5c6b('0x9')]({'where':{}});})[_0x5c6b('0xa')](function(){return db['CmHopper'][_0x5c6b('0xb')](hopper);})[_0x5c6b('0xa')](function(){console[_0x5c6b('0xe')](_0x5c6b('0xf'),'hopper1');return db[_0x5c6b('0x8')][_0x5c6b('0xb')](contacts2);})[_0x5c6b('0xa')](function(){console[_0x5c6b('0xe')](_0x5c6b('0xf'),_0x5c6b('0x10'));return db[_0x5c6b('0xd')][_0x5c6b('0xb')](hopper2);})['then'](function(){console[_0x5c6b('0xe')]('finished\x20populating','hopper2');})[_0x5c6b('0x11')](function(_0x279709){console['log'](_0x279709);});
\ No newline at end of file
+var _0x15a0=['Biondo','CmContact','destroy','then','log','finished\x20populating','contacts1','CmHopper','bulkCreate','hopper1','contacts2','hopper2','catch','util','../mysqldb','push','Innocenzo','innocenzo.biondo','@xcally.com','now'];(function(_0x503d2a,_0x16bd78){var _0x3b6142=function(_0x580c25){while(--_0x580c25){_0x503d2a['push'](_0x503d2a['shift']());}};_0x3b6142(++_0x16bd78);}(_0x15a0,0x85));var _0x015a=function(_0x44b7d6,_0x4a3f3f){_0x44b7d6=_0x44b7d6-0x0;var _0x5346f0=_0x15a0[_0x44b7d6];return _0x5346f0;};'use strict';var util=require(_0x015a('0x0'));var db=require(_0x015a('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x015a('0x2')]({'id':i,'firstName':_0x015a('0x3')+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':_0x015a('0x4')+i+_0x015a('0x5')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper['push']({'id':i,'active':![],'scheduledat':Date[_0x015a('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x015a('0x6')](),'updatedAt':Date['now']()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x015a('0x2')]({'id':i,'firstName':_0x015a('0x3')+i,'lastName':_0x015a('0x7')+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+_0x015a('0x5')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x015a('0x2')]({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x015a('0x6')](),'updatedAt':Date[_0x015a('0x6')]()});}db[_0x015a('0x8')][_0x015a('0x9')]({'where':{}})[_0x015a('0xa')](function(){return db[_0x015a('0x8')]['bulkCreate'](contacts);})['then'](function(){console[_0x015a('0xb')](_0x015a('0xc'),_0x015a('0xd'));return db[_0x015a('0xe')][_0x015a('0x9')]({'where':{}});})[_0x015a('0xa')](function(){return db[_0x015a('0xe')][_0x015a('0xf')](hopper);})[_0x015a('0xa')](function(){console['log'](_0x015a('0xc'),_0x015a('0x10'));return db['CmContact']['bulkCreate'](contacts2);})[_0x015a('0xa')](function(){console[_0x015a('0xb')]('finished\x20populating',_0x015a('0x11'));return db[_0x015a('0xe')][_0x015a('0xf')](hopper2);})[_0x015a('0xa')](function(){console[_0x015a('0xb')]('finished\x20populating',_0x015a('0x12'));})[_0x015a('0x13')](function(_0x30f874){console[_0x015a('0xb')](_0x30f874);});
\ No newline at end of file
index 5f0eac5..92c5303 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9aef=['/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','\x22%s\x22\x20<%s>','bulkCreate','log','add\x20user','catch','util','../mysqldb','push','format','%s%s','agent','udp','wss','all','ulaw','yes'];(function(_0x30aadd,_0x20a265){var _0x428865=function(_0x40e630){while(--_0x40e630){_0x30aadd['push'](_0x30aadd['shift']());}};_0x428865(++_0x20a265);}(_0x9aef,0x85));var _0xf9ae=function(_0x625bb,_0x3e6265){_0x625bb=_0x625bb-0x0;var _0x483d68=_0x9aef[_0x625bb];return _0x483d68;};'use strict';var util=require(_0xf9ae('0x0'));var db=require(_0xf9ae('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0xf9ae('0x2')]({'name':util[_0xf9ae('0x3')](_0xf9ae('0x4'),_0xf9ae('0x5'),i),'fullname':util['format'](_0xf9ae('0x4'),_0xf9ae('0x5'),i),'email':util[_0xf9ae('0x3')]('%s%s@xcally.com','agent',i),'role':_0xf9ae('0x5'),'password':'password','internal':0xfa0+i,'type':'friend','transport':[_0xf9ae('0x6'),'ws',_0xf9ae('0x7')],'disallow':[_0xf9ae('0x8')],'allow':[_0xf9ae('0x9')],'defaultuser':util[_0xf9ae('0x3')]('%s%s',_0xf9ae('0x5'),i),'encryption':_0xf9ae('0xa'),'avpf':_0xf9ae('0xa'),'force_avp':'yes','icesupport':_0xf9ae('0xa'),'dtlsenable':_0xf9ae('0xa'),'dtlsverify':'no','dtlscertfile':_0xf9ae('0xb'),'dtlsprivatekey':_0xf9ae('0xc'),'dtlssetup':'actpass','callerid':util[_0xf9ae('0x3')](_0xf9ae('0xd'),util[_0xf9ae('0x3')](_0xf9ae('0x4'),'agent',i),0xfa0+i)});}db['User'][_0xf9ae('0xe')](users)['then'](function(){console[_0xf9ae('0xf')](_0xf9ae('0x10'));})[_0xf9ae('0x11')](function(_0x5f5e03){console['log'](_0x5f5e03);});
\ No newline at end of file
+var _0x31b3=['actpass','User','bulkCreate','then','log','util','push','format','%s%s','agent','%s%s@xcally.com','password','friend','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key'];(function(_0x306a2d,_0x53f9a9){var _0x1718f5=function(_0x1e3632){while(--_0x1e3632){_0x306a2d['push'](_0x306a2d['shift']());}};_0x1718f5(++_0x53f9a9);}(_0x31b3,0x145));var _0x331b=function(_0xde9059,_0x750aab){_0xde9059=_0xde9059-0x0;var _0x23197d=_0x31b3[_0xde9059];return _0x23197d;};'use strict';var util=require(_0x331b('0x0'));var db=require('../mysqldb')['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x331b('0x1')]({'name':util[_0x331b('0x2')](_0x331b('0x3'),'agent',i),'fullname':util[_0x331b('0x2')](_0x331b('0x3'),_0x331b('0x4'),i),'email':util[_0x331b('0x2')](_0x331b('0x5'),'agent',i),'role':_0x331b('0x4'),'password':_0x331b('0x6'),'internal':0xfa0+i,'type':_0x331b('0x7'),'transport':['udp','ws','wss'],'disallow':['all'],'allow':['ulaw'],'defaultuser':util[_0x331b('0x2')](_0x331b('0x3'),_0x331b('0x4'),i),'encryption':_0x331b('0x8'),'avpf':_0x331b('0x8'),'force_avp':_0x331b('0x8'),'icesupport':_0x331b('0x8'),'dtlsenable':_0x331b('0x8'),'dtlsverify':'no','dtlscertfile':_0x331b('0x9'),'dtlsprivatekey':_0x331b('0xa'),'dtlssetup':_0x331b('0xb'),'callerid':util[_0x331b('0x2')]('\x22%s\x22\x20<%s>',util[_0x331b('0x2')](_0x331b('0x3'),_0x331b('0x4'),i),0xfa0+i)});}db[_0x331b('0xc')][_0x331b('0xd')](users)[_0x331b('0xe')](function(){console['log']('add\x20user');})['catch'](function(_0x264c24){console[_0x331b('0xf')](_0x264c24);});
\ No newline at end of file
index a2ed8a4..b0009e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a99=['Agents','User','role','agent','telephone','ivr','UserProfileSection','findOne','then','VoiceQueues','ChatQueues','SmsQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','resourceId','where','type','format','%s:queue:%s','length','user:%s','query','find','userProfileId','ChatInteraction','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','hasOwnProperty','include','VoiceQueue','push','ChatQueue','FaxQueue','MailQueue','WhatsappQueue','Trunk','user','voice:inbound','FaxQueues','SmsQueue','MailQueues','OpenchannelQueue','Trunks','IvrCampaigns','voice:outbound','getVoiceQueues','getChatQueues','getFaxQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','sms','mail','openchannel','telephone:%s','trunk:%s','campaign:%s:%s','leave','map','ChatInteractions','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','user_has_whatsapp_interactions:remove','catch','join','default','connection','request','remoteAddress','remotePort','connectedAt','log','SocketIO\x20','nsp','address','disconnect','DISCONNECTED','lodash','util','bluebird','./environment','name'];(function(_0x144c0c,_0x113cfe){var _0x436221=function(_0x231dd7){while(--_0x231dd7){_0x144c0c['push'](_0x144c0c['shift']());}};_0x436221(++_0x113cfe);}(_0x5a99,0xc9));var _0x95a9=function(_0x499d43,_0x54dddf){_0x499d43=_0x499d43-0x0;var _0x4f2b20=_0x5a99[_0x499d43];return _0x4f2b20;};'use strict';var _=require(_0x95a9('0x0'));var util=require(_0x95a9('0x1'));var BPromise=require(_0x95a9('0x2'));var db=require('../mysqldb')['db'];var config=require(_0x95a9('0x3'));var queryQueues={'attributes':['id',_0x95a9('0x4')],'include':[{'as':_0x95a9('0x5'),'model':db[_0x95a9('0x6')],'attributes':['id','name',_0x95a9('0x7')],'raw':!![],'where':{'role':_0x95a9('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x95a9('0x4')],'where':{'role':_0x95a9('0x9')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0x95a9('0x4')],'where':{'role':_0x95a9('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x95a9('0x4'),'type'],'where':{'type':_0x95a9('0xa')}};function getAssociatedResources(_0x503d04,_0x221b95,_0x34290e){return db[_0x95a9('0xb')][_0x95a9('0xc')]({'where':{'name':_0x503d04,'userProfileId':_0x221b95},'raw':!![]})[_0x95a9('0xd')](function(_0x4de148){if(_0x4de148){if(_0x4de148['autoAssociation']){switch(_0x503d04){case _0x95a9('0xe'):case _0x95a9('0xf'):case'FaxQueues':case _0x95a9('0x10'):case'MailQueues':case _0x95a9('0x11'):case _0x95a9('0x12'):return db[_0x34290e][_0x95a9('0x13')](queryQueues);case _0x95a9('0x14'):return db[_0x34290e][_0x95a9('0x13')](queryTelephones);case'Trunks':return db[_0x34290e]['findAll'](queryTrunks);case'IvrCampaigns':return db[_0x34290e][_0x95a9('0x13')](queryCampaigns);}}else{return db['UserProfileResource'][_0x95a9('0x13')]({'attributes':[_0x95a9('0x15')],'where':{'sectionId':_0x4de148['id']},'raw':!![]})[_0x95a9('0xd')](function(_0x4aea93){if(_0x4aea93){var _0x9d0e15={'where':{'id':_['map'](_0x4aea93,_0x95a9('0x15'))},'raw':!![]};switch(_0x34290e){case _0x95a9('0x6'):_0x9d0e15[_0x95a9('0x16')]['role']=_0x95a9('0x9');break;case'Campaign':_0x9d0e15['where'][_0x95a9('0x17')]=_0x95a9('0xa');break;}return db[_0x34290e][_0x95a9('0x13')](_0x9d0e15);}else{return[];}});}}else{return[];}})[_0x95a9('0xd')](function(_0x24b38b){return _0x24b38b;});}function joinOrLeaveQueues(_0x2e1322,_0xe00f25,_0xab9d9a,_0x294556){_0x2e1322[_0xe00f25](util[_0x95a9('0x18')](_0x95a9('0x19'),_0xab9d9a,_0x294556['name']));if(_0x294556[_0x95a9('0x5')]){for(var _0x261f2b=0x0;_0x261f2b<_0x294556[_0x95a9('0x5')][_0x95a9('0x1a')];_0x261f2b+=0x1){_0x2e1322[_0xe00f25](util['format'](_0x95a9('0x1b'),_0x294556[_0x95a9('0x5')][_0x261f2b][_0x95a9('0x4')]));}}}function joinOrLeave(_0x321b04,_0x465e5b,_0x411ee3){var _0x203c51;if(_0x321b04['handshake'][_0x95a9('0x1c')]['id']){db[_0x95a9('0x6')][_0x95a9('0x1d')]({'attributes':['id','name','role',_0x95a9('0x1e')],'where':{'id':_0x321b04['handshake']['query']['id']},'include':[{'model':db[_0x95a9('0x1f')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x95a9('0x20')],'as':_0x95a9('0x21'),'attributes':['id'],'raw':!![]},{'model':db[_0x95a9('0x22')],'as':_0x95a9('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x95a9('0x24')],'as':_0x95a9('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x95a9('0x26')],'as':_0x95a9('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x95a9('0x28')],'as':_0x95a9('0x29'),'attributes':['id'],'raw':!![]}]})[_0x95a9('0xd')](function(_0xe64e70){if(_0xe64e70){_0x203c51=_0xe64e70;_0x321b04[_0x465e5b](util[_0x95a9('0x18')](_0x95a9('0x1b'),_0xe64e70[_0x95a9('0x4')]));var _0xff6f13=[];switch(_0xe64e70[_0x95a9('0x7')]){case'admin':_0x321b04[_0x465e5b]('voice:inbound');_0x321b04[_0x465e5b]('voice:outbound');if(queryQueues[_0x95a9('0x2a')](_0x95a9('0x2b'))){delete queryQueues[_0x95a9('0x2b')];}_0xff6f13['push'](db[_0x95a9('0x2c')][_0x95a9('0x13')](queryQueues));_0xff6f13[_0x95a9('0x2d')](db[_0x95a9('0x2e')][_0x95a9('0x13')](queryQueues));_0xff6f13[_0x95a9('0x2d')](db[_0x95a9('0x2f')][_0x95a9('0x13')](queryQueues));_0xff6f13['push'](db['SmsQueue']['findAll'](queryQueues));_0xff6f13[_0x95a9('0x2d')](db[_0x95a9('0x30')][_0x95a9('0x13')](queryQueues));_0xff6f13[_0x95a9('0x2d')](db['OpenchannelQueue'][_0x95a9('0x13')](queryQueues));_0xff6f13[_0x95a9('0x2d')](db[_0x95a9('0x31')][_0x95a9('0x13')](queryQueues));_0xff6f13[_0x95a9('0x2d')](db[_0x95a9('0x6')][_0x95a9('0x13')](queryTelephones));_0xff6f13[_0x95a9('0x2d')](db[_0x95a9('0x32')][_0x95a9('0x13')](queryTrunks));_0xff6f13[_0x95a9('0x2d')](db['Campaign'][_0x95a9('0x13')](queryCampaigns));_0xff6f13[_0x95a9('0x2d')](db[_0x95a9('0x6')][_0x95a9('0x13')](queryAgents));break;case _0x95a9('0x33'):_0x321b04[_0x465e5b](_0x95a9('0x34'));_0x321b04[_0x465e5b]('voice:outbound');_0xff6f13[_0x95a9('0x2d')](getAssociatedResources(_0x95a9('0xe'),_0xe64e70[_0x95a9('0x1e')],_0x95a9('0x2c')));_0xff6f13[_0x95a9('0x2d')](getAssociatedResources('ChatQueues',_0xe64e70[_0x95a9('0x1e')],_0x95a9('0x2e')));_0xff6f13['push'](getAssociatedResources(_0x95a9('0x35'),_0xe64e70[_0x95a9('0x1e')],'FaxQueue'));_0xff6f13['push'](getAssociatedResources(_0x95a9('0x10'),_0xe64e70[_0x95a9('0x1e')],_0x95a9('0x36')));_0xff6f13[_0x95a9('0x2d')](getAssociatedResources(_0x95a9('0x37'),_0xe64e70[_0x95a9('0x1e')],_0x95a9('0x30')));_0xff6f13[_0x95a9('0x2d')](getAssociatedResources('OpenchannelQueues',_0xe64e70[_0x95a9('0x1e')],_0x95a9('0x38')));_0xff6f13[_0x95a9('0x2d')](getAssociatedResources(_0x95a9('0x12'),_0xe64e70[_0x95a9('0x1e')],_0x95a9('0x31')));_0xff6f13[_0x95a9('0x2d')](getAssociatedResources(_0x95a9('0x14'),_0xe64e70[_0x95a9('0x1e')],_0x95a9('0x6')));_0xff6f13[_0x95a9('0x2d')](getAssociatedResources(_0x95a9('0x39'),_0xe64e70['userProfileId'],_0x95a9('0x32')));_0xff6f13['push'](getAssociatedResources(_0x95a9('0x3a'),_0xe64e70[_0x95a9('0x1e')],'Campaign'));_0xff6f13[_0x95a9('0x2d')](db[_0x95a9('0x6')][_0x95a9('0x13')](queryAgents));break;case _0x95a9('0x8'):_0x321b04[_0x465e5b](_0x95a9('0x34'));_0x321b04[_0x465e5b](_0x95a9('0x3b'));_0xff6f13[_0x95a9('0x2d')](_0xe64e70[_0x95a9('0x3c')]({'attributes':['id',_0x95a9('0x4')]}));_0xff6f13[_0x95a9('0x2d')](_0xe64e70[_0x95a9('0x3d')]({'attributes':['id',_0x95a9('0x4')]}));_0xff6f13[_0x95a9('0x2d')](_0xe64e70[_0x95a9('0x3e')]({'attributes':['id',_0x95a9('0x4')]}));_0xff6f13[_0x95a9('0x2d')](_0xe64e70['getSmsQueues']({'attributes':['id','name']}));_0xff6f13[_0x95a9('0x2d')](_0xe64e70[_0x95a9('0x3f')]({'attributes':['id',_0x95a9('0x4')]}));_0xff6f13[_0x95a9('0x2d')](_0xe64e70[_0x95a9('0x40')]({'attributes':['id',_0x95a9('0x4')]}));_0xff6f13[_0x95a9('0x2d')](_0xe64e70[_0x95a9('0x41')]({'attributes':['id',_0x95a9('0x4')]}));break;}return BPromise[_0x95a9('0x42')](_0xff6f13);}})[_0x95a9('0xd')](function(_0x53cd94){if(_0x53cd94&&_0x53cd94[_0x95a9('0x1a')]){for(var _0x601672=0x0;_0x601672<_0x53cd94['length'];_0x601672+=0x1){for(var _0x158a59=0x0;_0x158a59<_0x53cd94[_0x601672][_0x95a9('0x1a')];_0x158a59+=0x1){switch(_0x601672){case 0x0:joinOrLeaveQueues(_0x321b04,_0x465e5b,_0x95a9('0x43'),_0x53cd94[_0x601672][_0x158a59]);break;case 0x1:joinOrLeaveQueues(_0x321b04,_0x465e5b,_0x95a9('0x44'),_0x53cd94[_0x601672][_0x158a59]);break;case 0x2:joinOrLeaveQueues(_0x321b04,_0x465e5b,_0x95a9('0x45'),_0x53cd94[_0x601672][_0x158a59]);break;case 0x3:joinOrLeaveQueues(_0x321b04,_0x465e5b,_0x95a9('0x46'),_0x53cd94[_0x601672][_0x158a59]);break;case 0x4:joinOrLeaveQueues(_0x321b04,_0x465e5b,_0x95a9('0x47'),_0x53cd94[_0x601672][_0x158a59]);break;case 0x5:joinOrLeaveQueues(_0x321b04,_0x465e5b,_0x95a9('0x48'),_0x53cd94[_0x601672][_0x158a59]);break;case 0x6:joinOrLeaveQueues(_0x321b04,_0x465e5b,'whatsapp',_0x53cd94[_0x601672][_0x158a59]);break;case 0x7:if(_0x203c51[_0x95a9('0x7')]!==_0x95a9('0x8'))_0x321b04[_0x465e5b](util[_0x95a9('0x18')](_0x95a9('0x49'),_0x53cd94[_0x601672][_0x158a59][_0x95a9('0x4')]));break;case 0x8:if(_0x203c51[_0x95a9('0x7')]!==_0x95a9('0x8'))_0x321b04[_0x465e5b](util[_0x95a9('0x18')](_0x95a9('0x4a'),_0x53cd94[_0x601672][_0x158a59][_0x95a9('0x4')]));break;case 0x9:if(_0x203c51[_0x95a9('0x7')]!=='agent')_0x321b04[_0x465e5b](util['format'](_0x95a9('0x4b'),_0x53cd94[_0x601672][_0x158a59][_0x95a9('0x17')],_0x53cd94[_0x601672][_0x158a59]['name']));break;case 0xa:_0x321b04[_0x465e5b](util[_0x95a9('0x18')]('user:%s',_0x53cd94[_0x601672][_0x158a59][_0x95a9('0x4')]));break;}}}}})[_0x95a9('0xd')](function(){if(_0x465e5b===_0x95a9('0x4c')){var _0x59baf7=_[_0x95a9('0x4d')](_0x203c51[_0x95a9('0x4e')],'id');return _0x203c51[_0x95a9('0x4f')](_0x59baf7)['then'](function(){for(var _0x29764d=0x0;_0x29764d<_0x59baf7[_0x95a9('0x1a')];_0x29764d+=0x1){_0x411ee3[_0x95a9('0x50')](_0x95a9('0x51'),{'ChatInteractionId':Number(_0x59baf7[_0x29764d]),'UserId':Number(_0x203c51['id'])});}});}})[_0x95a9('0xd')](function(){if(_0x465e5b===_0x95a9('0x4c')){var _0x3eaa82=_[_0x95a9('0x4d')](_0x203c51[_0x95a9('0x21')],'id');return _0x203c51[_0x95a9('0x52')](_0x3eaa82)[_0x95a9('0xd')](function(){for(var _0x357dcd=0x0;_0x357dcd<_0x3eaa82[_0x95a9('0x1a')];_0x357dcd+=0x1){_0x411ee3[_0x95a9('0x50')](_0x95a9('0x53'),{'MailInteractionId':Number(_0x3eaa82[_0x357dcd]),'UserId':Number(_0x203c51['id'])});}});}})['then'](function(){if(_0x465e5b===_0x95a9('0x4c')){var _0x35ce77=_[_0x95a9('0x4d')](_0x203c51[_0x95a9('0x23')],'id');return _0x203c51[_0x95a9('0x54')](_0x35ce77)[_0x95a9('0xd')](function(){for(var _0x173ad7=0x0;_0x173ad7<_0x35ce77[_0x95a9('0x1a')];_0x173ad7+=0x1){_0x411ee3[_0x95a9('0x50')](_0x95a9('0x55'),{'FaxInteractionId':Number(_0x35ce77[_0x173ad7]),'UserId':Number(_0x203c51['id'])});}});}})[_0x95a9('0xd')](function(){if(_0x465e5b===_0x95a9('0x4c')){var _0x286d49=_[_0x95a9('0x4d')](_0x203c51[_0x95a9('0x25')],'id');return _0x203c51[_0x95a9('0x56')](_0x286d49)[_0x95a9('0xd')](function(){for(var _0x255fd0=0x0;_0x255fd0<_0x286d49[_0x95a9('0x1a')];_0x255fd0+=0x1){_0x411ee3[_0x95a9('0x50')](_0x95a9('0x57'),{'SmsInteractionId':Number(_0x286d49[_0x255fd0]),'UserId':Number(_0x203c51['id'])});}});}})[_0x95a9('0xd')](function(){if(_0x465e5b==='leave'){var _0x5afbb6=_[_0x95a9('0x4d')](_0x203c51[_0x95a9('0x27')],'id');return _0x203c51['removeOpenchannelInteractions'](_0x5afbb6)[_0x95a9('0xd')](function(){for(var _0x56e083=0x0;_0x56e083<_0x5afbb6['length'];_0x56e083+=0x1){_0x411ee3[_0x95a9('0x50')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x5afbb6[_0x56e083]),'UserId':Number(_0x203c51['id'])});}});}})[_0x95a9('0xd')](function(){if(_0x465e5b===_0x95a9('0x4c')){var _0x48a6f6=_[_0x95a9('0x4d')](_0x203c51[_0x95a9('0x29')],'id');return _0x203c51['removeWhatsappInteractions'](_0x48a6f6)[_0x95a9('0xd')](function(){for(var _0x3b1855=0x0;_0x3b1855<_0x48a6f6['length'];_0x3b1855+=0x1){_0x411ee3[_0x95a9('0x50')](_0x95a9('0x58'),{'WhatsappInteractionId':Number(_0x48a6f6[_0x3b1855]),'UserId':Number(_0x203c51['id'])});}});}})[_0x95a9('0x59')](function(_0x26069f){_0x321b04['log'](_0x26069f);});}}function onDisconnect(_0x5e75ef,_0x2307f8){joinOrLeave(_0x5e75ef,_0x95a9('0x4c'),_0x2307f8);}function onConnect(_0x13d9ed){joinOrLeave(_0x13d9ed,_0x95a9('0x5a'));}exports[_0x95a9('0x5b')]=function(_0x358962){_0x358962['on'](_0x95a9('0x5c'),function(_0x55657e){_0x55657e['setMaxListeners'](0x0);_0x55657e['address']=_0x55657e[_0x95a9('0x5d')][_0x95a9('0x5c')][_0x95a9('0x5e')]+':'+_0x55657e[_0x95a9('0x5d')]['connection'][_0x95a9('0x5f')];_0x55657e[_0x95a9('0x60')]=new Date();_0x55657e['log']=function(_0x14cde1){console[_0x95a9('0x61')](_0x95a9('0x62')+_0x55657e[_0x95a9('0x63')][_0x95a9('0x4')]+'['+_0x55657e[_0x95a9('0x64')]+']',_0x14cde1);};_0x55657e['on'](_0x95a9('0x65'),function(){onDisconnect(_0x55657e,_0x358962);_0x55657e[_0x95a9('0x61')](_0x95a9('0x66'));});onConnect(_0x55657e);_0x55657e[_0x95a9('0x61')]('CONNECTED');});};
\ No newline at end of file
+var _0xfdad=['where','length','format','user:%s','find','handshake','query','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteractions','WhatsappInteractions','voice:inbound','voice:outbound','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','WhatsappQueue','Trunk','user','userProfileId','FaxQueues','MailQueue','OpenchannelQueue','Telephones','getVoiceQueues','getChatQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','voice','fax','mail','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:remove','join','default','connection','address','request','remotePort','log','SocketIO\x20','nsp','DISCONNECTED','lodash','util','../mysqldb','./environment','Agents','User','name','agent','type','ivr','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','ChatQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','IvrCampaigns','UserProfileResource','resourceId','map','role','telephone','Campaign'];(function(_0x92c450,_0x41f1e3){var _0x2a9599=function(_0x4f27df){while(--_0x4f27df){_0x92c450['push'](_0x92c450['shift']());}};_0x2a9599(++_0x41f1e3);}(_0xfdad,0x164));var _0xdfda=function(_0x89da54,_0x58103b){_0x89da54=_0x89da54-0x0;var _0x5da3b5=_0xfdad[_0x89da54];return _0x5da3b5;};'use strict';var _=require(_0xdfda('0x0'));var util=require(_0xdfda('0x1'));var BPromise=require('bluebird');var db=require(_0xdfda('0x2'))['db'];var config=require(_0xdfda('0x3'));var queryQueues={'attributes':['id','name'],'include':[{'as':_0xdfda('0x4'),'model':db[_0xdfda('0x5')],'attributes':['id',_0xdfda('0x6'),'role'],'raw':!![],'where':{'role':_0xdfda('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xdfda('0x6')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0xdfda('0x6')]};var queryAgents={'raw':!![],'attributes':['id',_0xdfda('0x6')],'where':{'role':_0xdfda('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xdfda('0x6'),_0xdfda('0x8')],'where':{'type':_0xdfda('0x9')}};function getAssociatedResources(_0x106257,_0x194118,_0x3048fa){return db[_0xdfda('0xa')][_0xdfda('0xb')]({'where':{'name':_0x106257,'userProfileId':_0x194118},'raw':!![]})[_0xdfda('0xc')](function(_0x2bb59c){if(_0x2bb59c){if(_0x2bb59c[_0xdfda('0xd')]){switch(_0x106257){case _0xdfda('0xe'):case _0xdfda('0xf'):case'FaxQueues':case _0xdfda('0x10'):case _0xdfda('0x11'):case _0xdfda('0x12'):case _0xdfda('0x13'):return db[_0x3048fa][_0xdfda('0x14')](queryQueues);case'Telephones':return db[_0x3048fa][_0xdfda('0x14')](queryTelephones);case'Trunks':return db[_0x3048fa]['findAll'](queryTrunks);case _0xdfda('0x15'):return db[_0x3048fa][_0xdfda('0x14')](queryCampaigns);}}else{return db[_0xdfda('0x16')]['findAll']({'attributes':[_0xdfda('0x17')],'where':{'sectionId':_0x2bb59c['id']},'raw':!![]})['then'](function(_0x4064f2){if(_0x4064f2){var _0xf250d0={'where':{'id':_[_0xdfda('0x18')](_0x4064f2,_0xdfda('0x17'))},'raw':!![]};switch(_0x3048fa){case'User':_0xf250d0['where'][_0xdfda('0x19')]=_0xdfda('0x1a');break;case _0xdfda('0x1b'):_0xf250d0[_0xdfda('0x1c')]['type']=_0xdfda('0x9');break;}return db[_0x3048fa][_0xdfda('0x14')](_0xf250d0);}else{return[];}});}}else{return[];}})[_0xdfda('0xc')](function(_0x1db884){return _0x1db884;});}function joinOrLeaveQueues(_0x58b806,_0x55248,_0x2cfc0b,_0x3a9c97){_0x58b806[_0x55248](util['format']('%s:queue:%s',_0x2cfc0b,_0x3a9c97['name']));if(_0x3a9c97[_0xdfda('0x4')]){for(var _0x563bd3=0x0;_0x563bd3<_0x3a9c97[_0xdfda('0x4')][_0xdfda('0x1d')];_0x563bd3+=0x1){_0x58b806[_0x55248](util[_0xdfda('0x1e')](_0xdfda('0x1f'),_0x3a9c97[_0xdfda('0x4')][_0x563bd3]['name']));}}}function joinOrLeave(_0x475d59,_0x3cc9ae,_0x5a8ee1){var _0x24f467;if(_0x475d59['handshake']['query']['id']){db['User'][_0xdfda('0x20')]({'attributes':['id',_0xdfda('0x6'),_0xdfda('0x19'),'userProfileId'],'where':{'id':_0x475d59[_0xdfda('0x21')][_0xdfda('0x22')]['id']},'include':[{'model':db[_0xdfda('0x23')],'as':_0xdfda('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0xdfda('0x25')],'as':_0xdfda('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0xdfda('0x27')],'as':_0xdfda('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0xdfda('0x29')],'as':_0xdfda('0x2a'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0xdfda('0x2b'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0xdfda('0x2c'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x12a057){if(_0x12a057){_0x24f467=_0x12a057;_0x475d59[_0x3cc9ae](util[_0xdfda('0x1e')]('user:%s',_0x12a057[_0xdfda('0x6')]));var _0x1c88b6=[];switch(_0x12a057[_0xdfda('0x19')]){case'admin':_0x475d59[_0x3cc9ae](_0xdfda('0x2d'));_0x475d59[_0x3cc9ae](_0xdfda('0x2e'));if(queryQueues['hasOwnProperty'](_0xdfda('0x2f'))){delete queryQueues['include'];}_0x1c88b6[_0xdfda('0x30')](db[_0xdfda('0x31')][_0xdfda('0x14')](queryQueues));_0x1c88b6[_0xdfda('0x30')](db[_0xdfda('0x32')][_0xdfda('0x14')](queryQueues));_0x1c88b6['push'](db[_0xdfda('0x33')]['findAll'](queryQueues));_0x1c88b6['push'](db[_0xdfda('0x34')][_0xdfda('0x14')](queryQueues));_0x1c88b6[_0xdfda('0x30')](db['MailQueue']['findAll'](queryQueues));_0x1c88b6[_0xdfda('0x30')](db['OpenchannelQueue'][_0xdfda('0x14')](queryQueues));_0x1c88b6[_0xdfda('0x30')](db[_0xdfda('0x35')][_0xdfda('0x14')](queryQueues));_0x1c88b6[_0xdfda('0x30')](db[_0xdfda('0x5')][_0xdfda('0x14')](queryTelephones));_0x1c88b6[_0xdfda('0x30')](db[_0xdfda('0x36')][_0xdfda('0x14')](queryTrunks));_0x1c88b6['push'](db[_0xdfda('0x1b')][_0xdfda('0x14')](queryCampaigns));_0x1c88b6[_0xdfda('0x30')](db[_0xdfda('0x5')][_0xdfda('0x14')](queryAgents));break;case _0xdfda('0x37'):_0x475d59[_0x3cc9ae](_0xdfda('0x2d'));_0x475d59[_0x3cc9ae](_0xdfda('0x2e'));_0x1c88b6['push'](getAssociatedResources('VoiceQueues',_0x12a057[_0xdfda('0x38')],_0xdfda('0x31')));_0x1c88b6[_0xdfda('0x30')](getAssociatedResources(_0xdfda('0xf'),_0x12a057[_0xdfda('0x38')],_0xdfda('0x32')));_0x1c88b6[_0xdfda('0x30')](getAssociatedResources(_0xdfda('0x39'),_0x12a057[_0xdfda('0x38')],_0xdfda('0x33')));_0x1c88b6['push'](getAssociatedResources(_0xdfda('0x10'),_0x12a057[_0xdfda('0x38')],_0xdfda('0x34')));_0x1c88b6[_0xdfda('0x30')](getAssociatedResources(_0xdfda('0x11'),_0x12a057[_0xdfda('0x38')],_0xdfda('0x3a')));_0x1c88b6[_0xdfda('0x30')](getAssociatedResources(_0xdfda('0x12'),_0x12a057[_0xdfda('0x38')],_0xdfda('0x3b')));_0x1c88b6[_0xdfda('0x30')](getAssociatedResources(_0xdfda('0x13'),_0x12a057['userProfileId'],_0xdfda('0x35')));_0x1c88b6[_0xdfda('0x30')](getAssociatedResources(_0xdfda('0x3c'),_0x12a057[_0xdfda('0x38')],_0xdfda('0x5')));_0x1c88b6[_0xdfda('0x30')](getAssociatedResources('Trunks',_0x12a057[_0xdfda('0x38')],_0xdfda('0x36')));_0x1c88b6[_0xdfda('0x30')](getAssociatedResources(_0xdfda('0x15'),_0x12a057[_0xdfda('0x38')],_0xdfda('0x1b')));_0x1c88b6[_0xdfda('0x30')](db[_0xdfda('0x5')][_0xdfda('0x14')](queryAgents));break;case _0xdfda('0x7'):_0x475d59[_0x3cc9ae](_0xdfda('0x2d'));_0x475d59[_0x3cc9ae](_0xdfda('0x2e'));_0x1c88b6['push'](_0x12a057[_0xdfda('0x3d')]({'attributes':['id',_0xdfda('0x6')]}));_0x1c88b6[_0xdfda('0x30')](_0x12a057[_0xdfda('0x3e')]({'attributes':['id',_0xdfda('0x6')]}));_0x1c88b6['push'](_0x12a057['getFaxQueues']({'attributes':['id',_0xdfda('0x6')]}));_0x1c88b6[_0xdfda('0x30')](_0x12a057['getSmsQueues']({'attributes':['id','name']}));_0x1c88b6[_0xdfda('0x30')](_0x12a057[_0xdfda('0x3f')]({'attributes':['id',_0xdfda('0x6')]}));_0x1c88b6['push'](_0x12a057[_0xdfda('0x40')]({'attributes':['id',_0xdfda('0x6')]}));_0x1c88b6[_0xdfda('0x30')](_0x12a057[_0xdfda('0x41')]({'attributes':['id',_0xdfda('0x6')]}));break;}return BPromise['all'](_0x1c88b6);}})['then'](function(_0x2357a3){if(_0x2357a3&&_0x2357a3[_0xdfda('0x1d')]){for(var _0x26bb51=0x0;_0x26bb51<_0x2357a3[_0xdfda('0x1d')];_0x26bb51+=0x1){for(var _0x25de8a=0x0;_0x25de8a<_0x2357a3[_0x26bb51][_0xdfda('0x1d')];_0x25de8a+=0x1){switch(_0x26bb51){case 0x0:joinOrLeaveQueues(_0x475d59,_0x3cc9ae,_0xdfda('0x42'),_0x2357a3[_0x26bb51][_0x25de8a]);break;case 0x1:joinOrLeaveQueues(_0x475d59,_0x3cc9ae,'chat',_0x2357a3[_0x26bb51][_0x25de8a]);break;case 0x2:joinOrLeaveQueues(_0x475d59,_0x3cc9ae,_0xdfda('0x43'),_0x2357a3[_0x26bb51][_0x25de8a]);break;case 0x3:joinOrLeaveQueues(_0x475d59,_0x3cc9ae,'sms',_0x2357a3[_0x26bb51][_0x25de8a]);break;case 0x4:joinOrLeaveQueues(_0x475d59,_0x3cc9ae,_0xdfda('0x44'),_0x2357a3[_0x26bb51][_0x25de8a]);break;case 0x5:joinOrLeaveQueues(_0x475d59,_0x3cc9ae,_0xdfda('0x45'),_0x2357a3[_0x26bb51][_0x25de8a]);break;case 0x6:joinOrLeaveQueues(_0x475d59,_0x3cc9ae,_0xdfda('0x46'),_0x2357a3[_0x26bb51][_0x25de8a]);break;case 0x7:if(_0x24f467[_0xdfda('0x19')]!==_0xdfda('0x7'))_0x475d59[_0x3cc9ae](util['format'](_0xdfda('0x47'),_0x2357a3[_0x26bb51][_0x25de8a][_0xdfda('0x6')]));break;case 0x8:if(_0x24f467[_0xdfda('0x19')]!==_0xdfda('0x7'))_0x475d59[_0x3cc9ae](util['format'](_0xdfda('0x48'),_0x2357a3[_0x26bb51][_0x25de8a][_0xdfda('0x6')]));break;case 0x9:if(_0x24f467[_0xdfda('0x19')]!=='agent')_0x475d59[_0x3cc9ae](util[_0xdfda('0x1e')](_0xdfda('0x49'),_0x2357a3[_0x26bb51][_0x25de8a]['type'],_0x2357a3[_0x26bb51][_0x25de8a][_0xdfda('0x6')]));break;case 0xa:_0x475d59[_0x3cc9ae](util[_0xdfda('0x1e')](_0xdfda('0x1f'),_0x2357a3[_0x26bb51][_0x25de8a][_0xdfda('0x6')]));break;}}}}})['then'](function(){if(_0x3cc9ae===_0xdfda('0x4a')){var _0x5cdfa4=_['map'](_0x24f467[_0xdfda('0x24')],'id');return _0x24f467[_0xdfda('0x4b')](_0x5cdfa4)[_0xdfda('0xc')](function(){for(var _0x30b7e1=0x0;_0x30b7e1<_0x5cdfa4[_0xdfda('0x1d')];_0x30b7e1+=0x1){_0x5a8ee1[_0xdfda('0x4c')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x5cdfa4[_0x30b7e1]),'UserId':Number(_0x24f467['id'])});}});}})['then'](function(){if(_0x3cc9ae===_0xdfda('0x4a')){var _0x5cb803=_[_0xdfda('0x18')](_0x24f467['MailInteractions'],'id');return _0x24f467[_0xdfda('0x4d')](_0x5cb803)[_0xdfda('0xc')](function(){for(var _0x1afd03=0x0;_0x1afd03<_0x5cb803[_0xdfda('0x1d')];_0x1afd03+=0x1){_0x5a8ee1['emit'](_0xdfda('0x4e'),{'MailInteractionId':Number(_0x5cb803[_0x1afd03]),'UserId':Number(_0x24f467['id'])});}});}})[_0xdfda('0xc')](function(){if(_0x3cc9ae===_0xdfda('0x4a')){var _0x12145e=_[_0xdfda('0x18')](_0x24f467['FaxInteractions'],'id');return _0x24f467[_0xdfda('0x4f')](_0x12145e)[_0xdfda('0xc')](function(){for(var _0x48c141=0x0;_0x48c141<_0x12145e[_0xdfda('0x1d')];_0x48c141+=0x1){_0x5a8ee1['emit'](_0xdfda('0x50'),{'FaxInteractionId':Number(_0x12145e[_0x48c141]),'UserId':Number(_0x24f467['id'])});}});}})['then'](function(){if(_0x3cc9ae===_0xdfda('0x4a')){var _0xf19b5e=_[_0xdfda('0x18')](_0x24f467[_0xdfda('0x2a')],'id');return _0x24f467[_0xdfda('0x51')](_0xf19b5e)[_0xdfda('0xc')](function(){for(var _0x4a0755=0x0;_0x4a0755<_0xf19b5e[_0xdfda('0x1d')];_0x4a0755+=0x1){_0x5a8ee1[_0xdfda('0x4c')](_0xdfda('0x52'),{'SmsInteractionId':Number(_0xf19b5e[_0x4a0755]),'UserId':Number(_0x24f467['id'])});}});}})['then'](function(){if(_0x3cc9ae===_0xdfda('0x4a')){var _0xc4758b=_[_0xdfda('0x18')](_0x24f467['OpenchannelInteractions'],'id');return _0x24f467[_0xdfda('0x53')](_0xc4758b)[_0xdfda('0xc')](function(){for(var _0x2b688f=0x0;_0x2b688f<_0xc4758b[_0xdfda('0x1d')];_0x2b688f+=0x1){_0x5a8ee1[_0xdfda('0x4c')](_0xdfda('0x54'),{'OpenchannelInteractionId':Number(_0xc4758b[_0x2b688f]),'UserId':Number(_0x24f467['id'])});}});}})['then'](function(){if(_0x3cc9ae==='leave'){var _0x40ebf2=_['map'](_0x24f467[_0xdfda('0x2c')],'id');return _0x24f467['removeWhatsappInteractions'](_0x40ebf2)['then'](function(){for(var _0x5de8d7=0x0;_0x5de8d7<_0x40ebf2['length'];_0x5de8d7+=0x1){_0x5a8ee1[_0xdfda('0x4c')](_0xdfda('0x55'),{'WhatsappInteractionId':Number(_0x40ebf2[_0x5de8d7]),'UserId':Number(_0x24f467['id'])});}});}})['catch'](function(_0x3a7562){_0x475d59['log'](_0x3a7562);});}}function onDisconnect(_0x51974c,_0x41a357){joinOrLeave(_0x51974c,_0xdfda('0x4a'),_0x41a357);}function onConnect(_0x2a064d){joinOrLeave(_0x2a064d,_0xdfda('0x56'));}exports[_0xdfda('0x57')]=function(_0x391420){_0x391420['on'](_0xdfda('0x58'),function(_0x4f8c86){_0x4f8c86['setMaxListeners'](0x0);_0x4f8c86[_0xdfda('0x59')]=_0x4f8c86[_0xdfda('0x5a')]['connection']['remoteAddress']+':'+_0x4f8c86[_0xdfda('0x5a')][_0xdfda('0x58')][_0xdfda('0x5b')];_0x4f8c86['connectedAt']=new Date();_0x4f8c86[_0xdfda('0x5c')]=function(_0x141688){console[_0xdfda('0x5c')](_0xdfda('0x5d')+_0x4f8c86[_0xdfda('0x5e')]['name']+'['+_0x4f8c86[_0xdfda('0x59')]+']',_0x141688);};_0x4f8c86['on']('disconnect',function(){onDisconnect(_0x4f8c86,_0x391420);_0x4f8c86[_0xdfda('0x5c')](_0xdfda('0x5f'));});onConnect(_0x4f8c86);_0x4f8c86[_0xdfda('0x5c')]('CONNECTED');});};
\ No newline at end of file
index e2a9afc..ce8fe8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf10=['Trigger,\x20%s','error','catch','motionChannel','event','direction','ContactId','undefined','sequelize','query','Sequelize','QueryTypes','contact','UserId','interface','format','SIP/%s','name','agent','channel','incomingmessage','AfterCreateMessage','get','offlineMessage','opened','resolve','AfterCreate','closed','substatus','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','SELECT','User','email','internal','default','length','hasOwnProperty','model','hook','toLowerCase','condition','util','../../mysqldb','jayson/promise','../logger','client','http','Chat','ChatInteraction','afterCreate','newinteraction','afterUpdate','newmessage','Sms','SmsInteraction','closedinteraction','Whatsapp','WhatsappMessage','Fax','FaxInteraction','MailInteraction','Mail','MailMessage','Openchannel','OpenchannelInteraction','request','EventManager','then','info'];(function(_0x9df060,_0x253d33){var _0x338dfe=function(_0x17d9a5){while(--_0x17d9a5){_0x9df060['push'](_0x9df060['shift']());}};_0x338dfe(++_0x253d33);}(_0xcf10,0x1c7));var _0x0cf1=function(_0x52ad5f,_0x16d1a3){_0x52ad5f=_0x52ad5f-0x0;var _0xb217a2=_0xcf10[_0x52ad5f];return _0xb217a2;};'use strict';var util=require(_0x0cf1('0x0'));var db=require(_0x0cf1('0x1'))['db'];var jayson=require(_0x0cf1('0x2'));var logger=require(_0x0cf1('0x3'))('triggers');var client=jayson[_0x0cf1('0x4')][_0x0cf1('0x5')]({'port':0x232a});var triggers=[{'channel':_0x0cf1('0x6'),'model':_0x0cf1('0x7'),'event':_0x0cf1('0x8'),'condition':_0x0cf1('0x9'),'callback':afterCreate},{'channel':'Chat','model':_0x0cf1('0x7'),'event':_0x0cf1('0xa'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x0cf1('0x6'),'model':'ChatMessage','event':_0x0cf1('0x8'),'condition':_0x0cf1('0xb'),'callback':afterCreateMessage},{'channel':_0x0cf1('0x6'),'model':'ChatOfflineMessage','event':_0x0cf1('0x8'),'condition':'newmessage','callback':afterCreateOfflineMessage},{'channel':_0x0cf1('0xc'),'model':_0x0cf1('0xd'),'event':_0x0cf1('0x8'),'condition':_0x0cf1('0x9'),'callback':afterCreate},{'channel':_0x0cf1('0xc'),'model':_0x0cf1('0xd'),'event':'afterUpdate','condition':_0x0cf1('0xe'),'callback':afterUpdate},{'channel':_0x0cf1('0xc'),'model':'SmsMessage','event':_0x0cf1('0x8'),'condition':_0x0cf1('0xb'),'callback':afterCreateMessage},{'channel':_0x0cf1('0xf'),'model':'WhatsappInteraction','event':_0x0cf1('0x8'),'condition':_0x0cf1('0x9'),'callback':afterCreate},{'channel':_0x0cf1('0xf'),'model':'WhatsappInteraction','event':'afterUpdate','condition':_0x0cf1('0xe'),'callback':afterUpdate},{'channel':_0x0cf1('0xf'),'model':_0x0cf1('0x10'),'event':_0x0cf1('0x8'),'condition':_0x0cf1('0xb'),'callback':afterCreateMessage},{'channel':_0x0cf1('0x11'),'model':'FaxInteraction','event':_0x0cf1('0x8'),'condition':_0x0cf1('0x9'),'callback':afterCreate},{'channel':_0x0cf1('0x11'),'model':_0x0cf1('0x12'),'event':_0x0cf1('0xa'),'condition':_0x0cf1('0xe'),'callback':afterUpdate},{'channel':_0x0cf1('0x11'),'model':'FaxMessage','event':_0x0cf1('0x8'),'condition':'newmessage','callback':afterCreateMessage},{'channel':'Mail','model':_0x0cf1('0x13'),'event':'afterCreate','condition':_0x0cf1('0x9'),'callback':afterCreate},{'channel':_0x0cf1('0x14'),'model':_0x0cf1('0x13'),'event':'afterUpdate','condition':_0x0cf1('0xe'),'callback':afterUpdate},{'channel':'Mail','model':_0x0cf1('0x15'),'event':_0x0cf1('0x8'),'condition':_0x0cf1('0xb'),'callback':afterCreateMessage},{'channel':_0x0cf1('0x16'),'model':_0x0cf1('0x17'),'event':'afterCreate','condition':_0x0cf1('0x9'),'callback':afterCreate},{'channel':_0x0cf1('0x16'),'model':_0x0cf1('0x17'),'event':'afterUpdate','condition':_0x0cf1('0xe'),'callback':afterUpdate},{'channel':'Openchannel','model':'OpenchannelMessage','event':_0x0cf1('0x8'),'condition':_0x0cf1('0xb'),'callback':afterCreateMessage}];function request(_0x1ae8b9){return client[_0x0cf1('0x18')](_0x0cf1('0x19'),_0x1ae8b9)[_0x0cf1('0x1a')](function(_0x44000a){logger[_0x0cf1('0x1b')](_0x0cf1('0x1c'),_0x0cf1('0x19'),_0x44000a);if(_0x44000a[_0x0cf1('0x1d')]){if(_0x44000a[_0x0cf1('0x1d')]['code']===0x1f4){logger[_0x0cf1('0x1d')](_0x0cf1('0x1c'),_0x0cf1('0x19'),_0x44000a[_0x0cf1('0x1d')]);}}})[_0x0cf1('0x1e')](function(_0x110f12){logger[_0x0cf1('0x1d')](_0x0cf1('0x1c'),_0x0cf1('0x19'),_0x110f12);});}function afterCreateMessage(_0x51e0ee){return function(_0x6f256f){_0x6f256f=_0x6f256f['get']({'plain':!![]});_0x6f256f['channel']=_0x51e0ee;_0x6f256f[_0x0cf1('0x1f')]=_0x51e0ee;_0x6f256f[_0x0cf1('0x20')]=_0x6f256f[_0x0cf1('0x21')];Promise['resolve']()[_0x0cf1('0x1a')](function(){if(typeof _0x6f256f[_0x0cf1('0x22')]===_0x0cf1('0x23'))return null;var _0x22a30b='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x6f256f[_0x0cf1('0x22')];return db[_0x0cf1('0x24')][_0x0cf1('0x25')](_0x22a30b,{'type':db[_0x0cf1('0x26')][_0x0cf1('0x27')]['SELECT'],'raw':!![]});})[_0x0cf1('0x1a')](function(_0x4a431c){if(_0x4a431c){_0x6f256f[_0x0cf1('0x28')]=_0x4a431c[0x0];}if(typeof _0x6f256f[_0x0cf1('0x29')]===_0x0cf1('0x23'))return;return getAgent(_0x6f256f[_0x0cf1('0x29')]);})[_0x0cf1('0x1a')](function(_0x60d8fa){if(_0x60d8fa){_0x6f256f[_0x0cf1('0x2a')]=util[_0x0cf1('0x2b')](_0x0cf1('0x2c'),_0x60d8fa[_0x0cf1('0x2d')]);_0x6f256f[_0x0cf1('0x2e')]=_0x60d8fa;_0x6f256f[_0x0cf1('0x2f')]=_0x51e0ee;return request({'event':_0x0cf1('0x30'),'message':_0x6f256f});}else{return request({'event':'outgoingmessage','message':_0x6f256f});}})[_0x0cf1('0x1e')](function(_0x5cee50){logger[_0x0cf1('0x1d')](_0x0cf1('0x1c'),_0x0cf1('0x31'),_0x5cee50);});};}function afterCreateOfflineMessage(_0x4530c3){return function(_0x416e3d){_0x416e3d=_0x416e3d[_0x0cf1('0x32')]({'plain':!![]});_0x416e3d[_0x0cf1('0x2f')]=_0x4530c3;_0x416e3d['motionChannel']=_0x4530c3;_0x416e3d['event']=_0x0cf1('0x33');return request({'event':_0x416e3d[_0x0cf1('0x20')],'message':_0x416e3d});};}function afterCreate(_0x14e608,_0x4f943d){return function(_0x35aec4){_0x35aec4=_0x35aec4[_0x0cf1('0x32')]({'plain':!![]});_0x35aec4[_0x0cf1('0x2f')]=_0x14e608;_0x35aec4['motionChannel']=_0x14e608;_0x35aec4[_0x0cf1('0x20')]=_0x0cf1('0x34');Promise[_0x0cf1('0x35')]()[_0x0cf1('0x1a')](function(){var _0x48d8fe='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x35aec4[_0x0cf1('0x22')];return db[_0x0cf1('0x24')]['query'](_0x48d8fe,{'type':db['Sequelize'][_0x0cf1('0x27')]['SELECT'],'raw':!![]});})['then'](function(_0x1e2e23){if(_0x1e2e23){_0x35aec4[_0x0cf1('0x28')]=_0x1e2e23[0x0];}if(typeof _0x35aec4[_0x0cf1('0x29')]===_0x0cf1('0x23'))return;return getAgent(_0x35aec4[_0x0cf1('0x29')]);})[_0x0cf1('0x1a')](function(_0x495aaa){if(_0x495aaa){_0x35aec4['interface']=util['format'](_0x0cf1('0x2c'),_0x495aaa[_0x0cf1('0x2d')]);_0x35aec4['agent']=_0x495aaa;}return request({'event':_0x4f943d,'message':_0x35aec4});})[_0x0cf1('0x1e')](function(_0x4a11ec){logger[_0x0cf1('0x1d')](_0x0cf1('0x1c'),_0x0cf1('0x36'),_0x4a11ec);});};}function afterUpdate(_0x5989d4){return function(_0x43cd92){var _0x3aa071=_0x43cd92['changed']('closed')&&_0x43cd92[_0x0cf1('0x37')];var _0x2ba731=_0x43cd92['changed'](_0x0cf1('0x38'));if(_0x3aa071||_0x2ba731){var _0x3b7bd3=_0x3aa071?'closedinteraction':_0x0cf1('0x38');var _0x2d7be5=_0x43cd92[_0x0cf1('0x32')]({'plain':!![]});_0x2d7be5['channel']=_0x5989d4;_0x2d7be5['motionChannel']=_0x5989d4;_0x2d7be5[_0x0cf1('0x20')]=_0x3aa071?_0x0cf1('0x37'):'substatus';var _0x121f66=_0x0cf1('0x39')+_0x2d7be5[_0x0cf1('0x22')];return db[_0x0cf1('0x24')]['query'](_0x121f66,{'type':db[_0x0cf1('0x26')]['QueryTypes'][_0x0cf1('0x3a')],'raw':!![]})[_0x0cf1('0x1a')](function(_0x56adbc){if(_0x56adbc){_0x2d7be5[_0x0cf1('0x28')]=_0x56adbc[0x0];}if(typeof _0x2d7be5[_0x0cf1('0x29')]===_0x0cf1('0x23'))return;return getAgent(_0x2d7be5[_0x0cf1('0x29')]);})[_0x0cf1('0x1a')](function(_0x5a2d5a){if(_0x5a2d5a){_0x2d7be5[_0x0cf1('0x2a')]=util[_0x0cf1('0x2b')](_0x0cf1('0x2c'),_0x5a2d5a[_0x0cf1('0x2d')]);_0x2d7be5[_0x0cf1('0x2e')]=_0x5a2d5a;}return request({'event':_0x3b7bd3,'message':_0x2d7be5});})['catch'](function(_0xa343bc){logger['error']('Trigger,\x20%s','AfterUpdate',_0xa343bc);});}};}function getAgent(_0x5be50e){return db[_0x0cf1('0x3b')]['find']({'where':{'id':_0x5be50e},'attributes':['id','name','fullname',_0x0cf1('0x3c'),_0x0cf1('0x3d')],'raw':!![]})[_0x0cf1('0x1a')](function(_0x503a55){return _0x503a55;});}exports[_0x0cf1('0x3e')]=function(){for(var _0x1a5c52=0x0;_0x1a5c52<triggers[_0x0cf1('0x3f')];_0x1a5c52+=0x1){if(db[_0x0cf1('0x40')](triggers[_0x1a5c52][_0x0cf1('0x41')])){db[triggers[_0x1a5c52][_0x0cf1('0x41')]][_0x0cf1('0x42')](triggers[_0x1a5c52][_0x0cf1('0x20')],triggers[_0x1a5c52]['callback'](triggers[_0x1a5c52]['channel'][_0x0cf1('0x43')](),triggers[_0x1a5c52][_0x0cf1('0x44')]));}}};
\ No newline at end of file
+var _0xa1a8=['info','Trigger,\x20%s','error','code','channel','event','direction','resolve','then','ContactId','undefined','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','query','Sequelize','QueryTypes','contact','UserId','format','SIP/%s','name','incomingmessage','catch','get','motionChannel','offlineMessage','opened','SELECT','interface','AfterCreate','changed','closed','substatus','agent','AfterUpdate','User','fullname','email','internal','length','hasOwnProperty','model','hook','callback','toLowerCase','condition','util','../logger','triggers','client','http','Chat','ChatInteraction','newinteraction','closedinteraction','ChatMessage','afterCreate','ChatOfflineMessage','newmessage','Sms','SmsInteraction','afterUpdate','Whatsapp','WhatsappMessage','Fax','FaxInteraction','FaxMessage','MailInteraction','Mail','MailMessage','OpenchannelInteraction','Openchannel','OpenchannelMessage','request','EventManager'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa1a8,0x79));var _0x8a1a=function(_0x274b99,_0x5d605b){_0x274b99=_0x274b99-0x0;var _0x41b363=_0xa1a8[_0x274b99];return _0x41b363;};'use strict';var util=require(_0x8a1a('0x0'));var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var logger=require(_0x8a1a('0x1'))(_0x8a1a('0x2'));var client=jayson[_0x8a1a('0x3')][_0x8a1a('0x4')]({'port':0x232a});var triggers=[{'channel':_0x8a1a('0x5'),'model':_0x8a1a('0x6'),'event':'afterCreate','condition':_0x8a1a('0x7'),'callback':afterCreate},{'channel':_0x8a1a('0x5'),'model':'ChatInteraction','event':'afterUpdate','condition':_0x8a1a('0x8'),'callback':afterUpdate},{'channel':'Chat','model':_0x8a1a('0x9'),'event':_0x8a1a('0xa'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x8a1a('0x5'),'model':_0x8a1a('0xb'),'event':_0x8a1a('0xa'),'condition':_0x8a1a('0xc'),'callback':afterCreateOfflineMessage},{'channel':_0x8a1a('0xd'),'model':'SmsInteraction','event':_0x8a1a('0xa'),'condition':_0x8a1a('0x7'),'callback':afterCreate},{'channel':_0x8a1a('0xd'),'model':_0x8a1a('0xe'),'event':_0x8a1a('0xf'),'condition':_0x8a1a('0x8'),'callback':afterUpdate},{'channel':_0x8a1a('0xd'),'model':'SmsMessage','event':_0x8a1a('0xa'),'condition':_0x8a1a('0xc'),'callback':afterCreateMessage},{'channel':_0x8a1a('0x10'),'model':'WhatsappInteraction','event':_0x8a1a('0xa'),'condition':_0x8a1a('0x7'),'callback':afterCreate},{'channel':_0x8a1a('0x10'),'model':'WhatsappInteraction','event':_0x8a1a('0xf'),'condition':_0x8a1a('0x8'),'callback':afterUpdate},{'channel':_0x8a1a('0x10'),'model':_0x8a1a('0x11'),'event':_0x8a1a('0xa'),'condition':_0x8a1a('0xc'),'callback':afterCreateMessage},{'channel':_0x8a1a('0x12'),'model':'FaxInteraction','event':_0x8a1a('0xa'),'condition':_0x8a1a('0x7'),'callback':afterCreate},{'channel':_0x8a1a('0x12'),'model':_0x8a1a('0x13'),'event':_0x8a1a('0xf'),'condition':_0x8a1a('0x8'),'callback':afterUpdate},{'channel':_0x8a1a('0x12'),'model':_0x8a1a('0x14'),'event':_0x8a1a('0xa'),'condition':_0x8a1a('0xc'),'callback':afterCreateMessage},{'channel':'Mail','model':_0x8a1a('0x15'),'event':_0x8a1a('0xa'),'condition':_0x8a1a('0x7'),'callback':afterCreate},{'channel':_0x8a1a('0x16'),'model':'MailInteraction','event':_0x8a1a('0xf'),'condition':_0x8a1a('0x8'),'callback':afterUpdate},{'channel':'Mail','model':_0x8a1a('0x17'),'event':_0x8a1a('0xa'),'condition':_0x8a1a('0xc'),'callback':afterCreateMessage},{'channel':'Openchannel','model':_0x8a1a('0x18'),'event':_0x8a1a('0xa'),'condition':_0x8a1a('0x7'),'callback':afterCreate},{'channel':_0x8a1a('0x19'),'model':_0x8a1a('0x18'),'event':'afterUpdate','condition':_0x8a1a('0x8'),'callback':afterUpdate},{'channel':'Openchannel','model':_0x8a1a('0x1a'),'event':_0x8a1a('0xa'),'condition':_0x8a1a('0xc'),'callback':afterCreateMessage}];function request(_0x68b7af){return client[_0x8a1a('0x1b')](_0x8a1a('0x1c'),_0x68b7af)['then'](function(_0x4cef5e){logger[_0x8a1a('0x1d')](_0x8a1a('0x1e'),_0x8a1a('0x1c'),_0x4cef5e);if(_0x4cef5e[_0x8a1a('0x1f')]){if(_0x4cef5e[_0x8a1a('0x1f')][_0x8a1a('0x20')]===0x1f4){logger[_0x8a1a('0x1f')](_0x8a1a('0x1e'),_0x8a1a('0x1c'),_0x4cef5e[_0x8a1a('0x1f')]);}}})['catch'](function(_0x3123db){logger[_0x8a1a('0x1f')](_0x8a1a('0x1e'),_0x8a1a('0x1c'),_0x3123db);});}function afterCreateMessage(_0x3f3574){return function(_0x2598f9){_0x2598f9=_0x2598f9['get']({'plain':!![]});_0x2598f9[_0x8a1a('0x21')]=_0x3f3574;_0x2598f9['motionChannel']=_0x3f3574;_0x2598f9[_0x8a1a('0x22')]=_0x2598f9[_0x8a1a('0x23')];Promise[_0x8a1a('0x24')]()[_0x8a1a('0x25')](function(){if(typeof _0x2598f9[_0x8a1a('0x26')]===_0x8a1a('0x27'))return null;var _0xf5fb1e=_0x8a1a('0x28')+_0x2598f9['ContactId'];return db[_0x8a1a('0x29')][_0x8a1a('0x2a')](_0xf5fb1e,{'type':db[_0x8a1a('0x2b')][_0x8a1a('0x2c')]['SELECT'],'raw':!![]});})[_0x8a1a('0x25')](function(_0x560cba){if(_0x560cba){_0x2598f9[_0x8a1a('0x2d')]=_0x560cba[0x0];}if(typeof _0x2598f9[_0x8a1a('0x2e')]===_0x8a1a('0x27'))return;return getAgent(_0x2598f9[_0x8a1a('0x2e')]);})[_0x8a1a('0x25')](function(_0x572e52){if(_0x572e52){_0x2598f9['interface']=util[_0x8a1a('0x2f')](_0x8a1a('0x30'),_0x572e52[_0x8a1a('0x31')]);_0x2598f9['agent']=_0x572e52;_0x2598f9[_0x8a1a('0x21')]=_0x3f3574;return request({'event':_0x8a1a('0x32'),'message':_0x2598f9});}else{return request({'event':'outgoingmessage','message':_0x2598f9});}})[_0x8a1a('0x33')](function(_0x58f834){logger[_0x8a1a('0x1f')](_0x8a1a('0x1e'),'AfterCreateMessage',_0x58f834);});};}function afterCreateOfflineMessage(_0x5e1f93){return function(_0x15be7f){_0x15be7f=_0x15be7f[_0x8a1a('0x34')]({'plain':!![]});_0x15be7f[_0x8a1a('0x21')]=_0x5e1f93;_0x15be7f[_0x8a1a('0x35')]=_0x5e1f93;_0x15be7f[_0x8a1a('0x22')]=_0x8a1a('0x36');return request({'event':_0x15be7f['event'],'message':_0x15be7f});};}function afterCreate(_0x5e00dc,_0x583c12){return function(_0xa598a2){_0xa598a2=_0xa598a2[_0x8a1a('0x34')]({'plain':!![]});_0xa598a2[_0x8a1a('0x21')]=_0x5e00dc;_0xa598a2[_0x8a1a('0x35')]=_0x5e00dc;_0xa598a2[_0x8a1a('0x22')]=_0x8a1a('0x37');Promise['resolve']()[_0x8a1a('0x25')](function(){var _0x3af70f=_0x8a1a('0x28')+_0xa598a2[_0x8a1a('0x26')];return db['sequelize'][_0x8a1a('0x2a')](_0x3af70f,{'type':db[_0x8a1a('0x2b')]['QueryTypes'][_0x8a1a('0x38')],'raw':!![]});})[_0x8a1a('0x25')](function(_0x582a71){if(_0x582a71){_0xa598a2['contact']=_0x582a71[0x0];}if(typeof _0xa598a2[_0x8a1a('0x2e')]===_0x8a1a('0x27'))return;return getAgent(_0xa598a2[_0x8a1a('0x2e')]);})[_0x8a1a('0x25')](function(_0x378165){if(_0x378165){_0xa598a2[_0x8a1a('0x39')]=util[_0x8a1a('0x2f')](_0x8a1a('0x30'),_0x378165[_0x8a1a('0x31')]);_0xa598a2['agent']=_0x378165;}return request({'event':_0x583c12,'message':_0xa598a2});})['catch'](function(_0x2e2fa8){logger['error'](_0x8a1a('0x1e'),_0x8a1a('0x3a'),_0x2e2fa8);});};}function afterUpdate(_0x10fcdd){return function(_0x527ef2){var _0x5a6680=_0x527ef2[_0x8a1a('0x3b')](_0x8a1a('0x3c'))&&_0x527ef2[_0x8a1a('0x3c')];var _0x2c00a6=_0x527ef2[_0x8a1a('0x3b')](_0x8a1a('0x3d'));if(_0x5a6680||_0x2c00a6){var _0x442794=_0x5a6680?_0x8a1a('0x8'):_0x8a1a('0x3d');var _0x43270f=_0x527ef2[_0x8a1a('0x34')]({'plain':!![]});_0x43270f['channel']=_0x10fcdd;_0x43270f[_0x8a1a('0x35')]=_0x10fcdd;_0x43270f[_0x8a1a('0x22')]=_0x5a6680?'closed':_0x8a1a('0x3d');var _0x38a380=_0x8a1a('0x28')+_0x43270f[_0x8a1a('0x26')];return db[_0x8a1a('0x29')]['query'](_0x38a380,{'type':db['Sequelize'][_0x8a1a('0x2c')][_0x8a1a('0x38')],'raw':!![]})[_0x8a1a('0x25')](function(_0x2a78ae){if(_0x2a78ae){_0x43270f[_0x8a1a('0x2d')]=_0x2a78ae[0x0];}if(typeof _0x43270f['UserId']===_0x8a1a('0x27'))return;return getAgent(_0x43270f[_0x8a1a('0x2e')]);})[_0x8a1a('0x25')](function(_0x2fa1d9){if(_0x2fa1d9){_0x43270f[_0x8a1a('0x39')]=util[_0x8a1a('0x2f')](_0x8a1a('0x30'),_0x2fa1d9[_0x8a1a('0x31')]);_0x43270f[_0x8a1a('0x3e')]=_0x2fa1d9;}return request({'event':_0x442794,'message':_0x43270f});})[_0x8a1a('0x33')](function(_0x2cae54){logger[_0x8a1a('0x1f')](_0x8a1a('0x1e'),_0x8a1a('0x3f'),_0x2cae54);});}};}function getAgent(_0x2b6c40){return db[_0x8a1a('0x40')]['find']({'where':{'id':_0x2b6c40},'attributes':['id',_0x8a1a('0x31'),_0x8a1a('0x41'),_0x8a1a('0x42'),_0x8a1a('0x43')],'raw':!![]})[_0x8a1a('0x25')](function(_0x566397){return _0x566397;});}exports['default']=function(){for(var _0x368201=0x0;_0x368201<triggers[_0x8a1a('0x44')];_0x368201+=0x1){if(db[_0x8a1a('0x45')](triggers[_0x368201][_0x8a1a('0x46')])){db[triggers[_0x368201]['model']][_0x8a1a('0x47')](triggers[_0x368201]['event'],triggers[_0x368201][_0x8a1a('0x48')](triggers[_0x368201][_0x8a1a('0x21')][_0x8a1a('0x49')](),triggers[_0x368201][_0x8a1a('0x4a')]));}}};
\ No newline at end of file
index dbd51be..f4ad3d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd913=['updateAttributes','role','agent','count','then','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','bluebird','./license/util','voice','chat','fax','sms','openchannel','getChannels','isValidChannel','toLowerCase','includes','clearBlockUser','isUndefined','blockedAt'];(function(_0x26083b,_0x1d98c7){var _0x3f804a=function(_0x38f79f){while(--_0x38f79f){_0x26083b['push'](_0x26083b['shift']());}};_0x3f804a(++_0x1d98c7);}(_0xd913,0x69));var _0x3d91=function(_0x563c93,_0x27068d){_0x563c93=_0x563c93-0x0;var _0x3cab10=_0xd913[_0x563c93];return _0x3cab10;};'use strict';var _=require(_0x3d91('0x0'));var BPromise=require(_0x3d91('0x1'));var db=require('../mysqldb')['db'];var util=require(_0x3d91('0x2'));var channels=[_0x3d91('0x3'),'mail',_0x3d91('0x4'),_0x3d91('0x5'),_0x3d91('0x6'),'whatsapp',_0x3d91('0x7')];exports[_0x3d91('0x8')]=function(){return channels;};exports[_0x3d91('0x9')]=function(_0x51808a){_0x51808a=_0x51808a[_0x3d91('0xa')]();return _[_0x3d91('0xb')](channels,_0x51808a);};exports[_0x3d91('0xc')]=function(_0xed2975,_0x1c79ed,_0x1b84d6,_0x52517d){var _0xf5c5ab={'loginAttempts':_0x1c79ed,'blocked':_0x1b84d6};if(!_[_0x3d91('0xd')](_0x52517d)){_0xf5c5ab[_0x3d91('0xe')]=_0x52517d;}return _0xed2975[_0x3d91('0xf')](_0xf5c5ab);};exports['getLicense']=function(_0x4449e6){return new BPromise(function(_0x2d740e,_0x19cddd){var _0xc0d230=0x0;if(_0x4449e6[_0x3d91('0x10')]!==_0x3d91('0x11')){_0x2d740e(_0x4449e6);}db['User'][_0x3d91('0x12')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x4449e6['id']}}})[_0x3d91('0x13')](function(_0x55c293){_0xc0d230=_0x55c293;return util[_0x3d91('0x14')]();})[_0x3d91('0x13')](function(_0x342e4f){if(_0x342e4f&&_0x342e4f[_0x3d91('0x15')]&&_0xc0d230>=_0x342e4f[_0x3d91('0x15')]){throw Error(_0x3d91('0x16'));}_0x2d740e(_0x4449e6);})[_0x3d91('0x17')](function(_0x5cf9ed){_0x19cddd(_0x5cf9ed);});});};
\ No newline at end of file
+var _0x1a2e=['isValidChannel','toLowerCase','includes','clearBlockUser','isUndefined','updateAttributes','role','agent','count','then','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','./license/util','voice','mail','chat','whatsapp','openchannel'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1a2e,0x1dc));var _0xe1a2=function(_0x42ac42,_0x6e6a4b){_0x42ac42=_0x42ac42-0x0;var _0x50dc84=_0x1a2e[_0x42ac42];return _0x50dc84;};'use strict';var _=require(_0xe1a2('0x0'));var BPromise=require('bluebird');var db=require('../mysqldb')['db'];var util=require(_0xe1a2('0x1'));var channels=[_0xe1a2('0x2'),_0xe1a2('0x3'),_0xe1a2('0x4'),'fax','sms',_0xe1a2('0x5'),_0xe1a2('0x6')];exports['getChannels']=function(){return channels;};exports[_0xe1a2('0x7')]=function(_0x44d330){_0x44d330=_0x44d330[_0xe1a2('0x8')]();return _[_0xe1a2('0x9')](channels,_0x44d330);};exports[_0xe1a2('0xa')]=function(_0xdbfefd,_0x17d333,_0x3457a9,_0x960398){var _0x33d3e5={'loginAttempts':_0x17d333,'blocked':_0x3457a9};if(!_[_0xe1a2('0xb')](_0x960398)){_0x33d3e5['blockedAt']=_0x960398;}return _0xdbfefd[_0xe1a2('0xc')](_0x33d3e5);};exports['getLicense']=function(_0x50636b){return new BPromise(function(_0x481a19,_0x2d84d2){var _0xe9bac7=0x0;if(_0x50636b[_0xe1a2('0xd')]!==_0xe1a2('0xe')){_0x481a19(_0x50636b);}db['User'][_0xe1a2('0xf')]({'where':{'role':_0xe1a2('0xe'),'online':!![],'id':{'$ne':_0x50636b['id']}}})[_0xe1a2('0x10')](function(_0xeefee9){_0xe9bac7=_0xeefee9;return util[_0xe1a2('0x11')]();})[_0xe1a2('0x10')](function(_0x42984e){if(_0x42984e&&_0x42984e[_0xe1a2('0x12')]&&_0xe9bac7>=_0x42984e[_0xe1a2('0x12')]){throw Error(_0xe1a2('0x13'));}_0x481a19(_0x50636b);})[_0xe1a2('0x14')](function(_0x1b996c){_0x2d84d2(_0x1b996c);});});};
\ No newline at end of file
index 2fb431b..63318c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4483=['stack','send','exports','util','../config/logger','api','message','Internal\x20Server\x20Error','name','Error','Bad\x20Request','inherits','Not\x20Found','Forbidden','OutOfInterval','error'];(function(_0xe4b7f6,_0x50d502){var _0x17acf4=function(_0xf623e8){while(--_0xf623e8){_0xe4b7f6['push'](_0xe4b7f6['shift']());}};_0x17acf4(++_0x50d502);}(_0x4483,0x1a3));var _0x3448=function(_0x1b39af,_0x1f9639){_0x1b39af=_0x1b39af-0x0;var _0x3039f1=_0x4483[_0x1b39af];return _0x3039f1;};'use strict';var util=require(_0x3448('0x0'));var logger=require(_0x3448('0x1'))(_0x3448('0x2'));var APIError=function(_0x481d0c,_0x202d3d){this[_0x3448('0x3')]=_0x481d0c||_0x3448('0x4');this[_0x3448('0x5')]=_0x202d3d||_0x3448('0x6');util['inherits'](APIError,Error);};var APIBadRequestError=function(_0xeb5b8){this[_0x3448('0x3')]=_0xeb5b8||_0x3448('0x7');this[_0x3448('0x5')]=_0x3448('0x7');util[_0x3448('0x8')](APIBadRequestError,APIError);};var APINotFoundError=function(_0x3cc81d){this[_0x3448('0x3')]=_0x3cc81d||'Entity\x20not\x20found';this['name']=_0x3448('0x9');util[_0x3448('0x8')](APINotFoundError,APIError);};function getStatusCode(_0xc36409){switch(_0xc36409){case _0x3448('0x7'):return 0x190;case _0x3448('0xa'),_0x3448('0xb'):return 0x193;case _0x3448('0x9'):return 0x194;default:return 0x1f4;}}function handleError(_0x32cd61){return function(_0x39bd9e){logger[_0x3448('0xc')](_0x39bd9e[_0x3448('0xd')]);var _0x481a6f=getStatusCode(_0x39bd9e['name']);if(_0x39bd9e[_0x3448('0x5')])delete _0x39bd9e[_0x3448('0x5')];return _0x32cd61['status'](_0x481a6f)[_0x3448('0xe')](_0x39bd9e);};}module[_0x3448('0xf')]={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
+var _0xb43b=['error','status','util','../config/logger','message','name','Error','inherits','Entity\x20not\x20found','Forbidden','OutOfInterval','Not\x20Found'];(function(_0x441edd,_0xd75d9c){var _0x3d040e=function(_0x56ec4b){while(--_0x56ec4b){_0x441edd['push'](_0x441edd['shift']());}};_0x3d040e(++_0xd75d9c);}(_0xb43b,0x1b2));var _0xbb43=function(_0x297981,_0xe6c3f0){_0x297981=_0x297981-0x0;var _0x214a9e=_0xb43b[_0x297981];return _0x214a9e;};'use strict';var util=require(_0xbb43('0x0'));var logger=require(_0xbb43('0x1'))('api');var APIError=function(_0x1bdcfc,_0x1995f8){this[_0xbb43('0x2')]=_0x1bdcfc||'Internal\x20Server\x20Error';this[_0xbb43('0x3')]=_0x1995f8||_0xbb43('0x4');util[_0xbb43('0x5')](APIError,Error);};var APIBadRequestError=function(_0x16432a){this['message']=_0x16432a||'Bad\x20Request';this[_0xbb43('0x3')]='Bad\x20Request';util[_0xbb43('0x5')](APIBadRequestError,APIError);};var APINotFoundError=function(_0x1ccd49){this[_0xbb43('0x2')]=_0x1ccd49||_0xbb43('0x6');this[_0xbb43('0x3')]='Not\x20Found';util[_0xbb43('0x5')](APINotFoundError,APIError);};function getStatusCode(_0xf54ac5){switch(_0xf54ac5){case'Bad\x20Request':return 0x190;case _0xbb43('0x7'),_0xbb43('0x8'):return 0x193;case _0xbb43('0x9'):return 0x194;default:return 0x1f4;}}function handleError(_0x5e3611){return function(_0xfac791){logger[_0xbb43('0xa')](_0xfac791['stack']);var _0x36a473=getStatusCode(_0xfac791[_0xbb43('0x3')]);if(_0xfac791['name'])delete _0xfac791['name'];return _0x5e3611[_0xbb43('0xb')](_0x36a473)['send'](_0xfac791);};}module['exports']={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
index 5396330..7035ee8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa52d=['status','exports','404'];(function(_0x1ab30d,_0x48c6df){var _0x35b76b=function(_0x4322c5){while(--_0x4322c5){_0x1ab30d['push'](_0x1ab30d['shift']());}};_0x35b76b(++_0x48c6df);}(_0xa52d,0x18a));var _0xda52=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0xa52d[_0x12d033];return _0x3b4e80;};'use strict';module[_0xda52('0x0')][0x194]=function pageNotFound(_0x5ed49b,_0x465c7f){var _0x4536d4=_0xda52('0x1');var _0x253aa4=0x194;var _0x1d88ee={'status':_0x253aa4};_0x465c7f[_0xda52('0x2')](_0x1d88ee['status']);_0x465c7f['render'](_0x4536d4,{},function(_0x5381f0,_0x102409){if(_0x5381f0){return _0x465c7f[_0xda52('0x2')](_0x1d88ee[_0xda52('0x2')])['json'](_0x1d88ee);}_0x465c7f['send'](_0x102409);});};
\ No newline at end of file
+var _0xf612=['send','exports','404','status','render','json'];(function(_0x111692,_0x19f8a9){var _0x11836f=function(_0x2f2714){while(--_0x2f2714){_0x111692['push'](_0x111692['shift']());}};_0x11836f(++_0x19f8a9);}(_0xf612,0x14b));var _0x2f61=function(_0x55582a,_0x123bd4){_0x55582a=_0x55582a-0x0;var _0x55a2e7=_0xf612[_0x55582a];return _0x55a2e7;};'use strict';module[_0x2f61('0x0')][0x194]=function pageNotFound(_0x4f847b,_0x157d2d){var _0x3fb39a=_0x2f61('0x1');var _0x422781=0x194;var _0x4ef27c={'status':_0x422781};_0x157d2d[_0x2f61('0x2')](_0x4ef27c[_0x2f61('0x2')]);_0x157d2d[_0x2f61('0x3')](_0x3fb39a,{},function(_0x2fda61,_0x2ce6ff){if(_0x2fda61){return _0x157d2d[_0x2f61('0x2')](_0x4ef27c['status'])[_0x2f61('0x4')](_0x4ef27c);}_0x157d2d[_0x2f61('0x5')](_0x2ce6ff);});};
\ No newline at end of file
diff --git a/server/migrations/2.6.4.js b/server/migrations/2.6.4.js
deleted file mode 100644 (file)
index 54829f7..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-'use strict';
-
-var BPromise = require('bluebird');
-var util = require('util');
-
-var logger = require('../config/logger')('migration');
-
-var Sequence = function() {};
-
-Sequence.prototype.enqueue = function(fn) {
-  this.tail = this.tail ? this.tail.finally(fn) : fn();
-};
-
-var Migration = function(queryInterface) {
-  this.queryInterface = queryInterface;
-  this.sequence = new Sequence();
-};
-
-Migration.prototype.changeColumn = function(table, column, type) {
-  var _this = this;
-  this.sequence.enqueue(function() {
-    return _this.queryInterface
-      .changeColumn(table, column, type)
-      .then(function() {
-        logger.info('Changed column %s in table %s', column, table);
-      })
-      .catch(function(err) {
-        logger.info(JSON.stringify(err));
-      });
-  });
-};
-
-Migration.prototype.addColumn = function(table, column, type) {
-  var _this = this;
-  this.sequence.enqueue(function() {
-    return _this.queryInterface
-      .addColumn(table, column, type)
-      .then(function() {
-        logger.info('Added column %s to %s', column, table);
-      })
-      .catch(function(err) {
-        logger.info(JSON.stringify(err));
-      });
-  });
-};
-
-Migration.prototype.dropTable = function(table) {
-  var _this = this;
-  this.sequence.enqueue(function() {
-    return _this.queryInterface
-      .dropTable(table, {
-        force: true,
-      })
-      .then(function() {
-        logger.info('table dropped %s', table);
-      })
-      .catch(function(err) {
-        logger.info(JSON.stringify(err));
-      });
-  });
-};
-
-Migration.prototype.addIndex = function(table, column, indexName) {
-  var _this = this;
-  this.sequence.enqueue(function() {
-    return _this.queryInterface
-      .addIndex(table, column, {
-        indexName: indexName,
-      })
-      .then(function() {
-        logger.info('addIndex %s %s %s', table, column.join(','), indexName);
-      })
-      .catch(function(err) {
-        logger.info(JSON.stringify(err));
-      });
-  });
-};
-
-Migration.prototype.removeIndex = function(table, indexName) {
-  var _this = this;
-  this.sequence.enqueue(function() {
-    return _this.queryInterface
-      .removeIndex(table, indexName)
-      .then(function() {
-        logger.info('removeIndex %s %s', table, indexName);
-      })
-      .catch(function(err) {
-        logger.info(JSON.stringify(err));
-      });
-  });
-};
-
-Migration.prototype.query = function(sql) {
-  var _this = this;
-  this.sequence.enqueue(function() {
-    return _this.queryInterface.sequelize
-      .query(sql)
-      .then(function() {
-        logger.info('query %s', sql);
-      })
-      .catch(function(err) {
-        logger.info(JSON.stringify(err));
-      });
-  });
-};
-
-Migration.prototype.removeColumn = function(table, column) {
-  var _this = this;
-  this.sequence.enqueue(function() {
-    return _this.queryInterface
-      .removeColumn(table, column)
-      .then(function() {
-        logger.info('Removed column %s from %s', column, table);
-      })
-      .catch(function(err) {
-        logger.info(
-          util.inspect(err, {
-            showHidden: false,
-            depth: null,
-          })
-        );
-      });
-  });
-};
-
-Migration.prototype.renameColumn = function(table, oldColumn, newColumn) {
-  var _this = this;
-  this.sequence.enqueue(function() {
-    return _this.queryInterface
-      .renameColumn(table, oldColumn, newColumn)
-      .then(function() {
-        logger.info(
-          'Renamed column from %s to %s on %s',
-          oldColumn,
-          newColumn,
-          table
-        );
-      })
-      .catch(function(err) {
-        logger.info(
-          util.inspect(err, {
-            showHidden: false,
-            depth: null,
-          })
-        );
-      });
-  });
-};
-
-Migration.prototype.final = function(resolve) {
-  this.sequence.enqueue(function() {
-    return resolve();
-  });
-};
-
-module.exports = {
-  up: function(queryInterface, Sequelize) {
-    return new BPromise(function(resolve) {
-      var migration = new Migration(queryInterface);
-
-      // START int_dynamics365_configurations
-      migration.addColumn('int_dynamics365_configurations', 'openNewTab', {
-        type: Sequelize.BOOLEAN,
-        defaultValue: true
-      });
-      // STOP int_dynamics365_configurations
-
-      // START FINAL
-      migration.final(resolve);
-      // END FINAL
-    });
-  },
-
-  down: function(queryInterface, Sequelize) {
-    // var migration = new Migration(queryInterface);
-  },
-};
\ No newline at end of file
index 289b20f..2ff6fa3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cd4=['UserProfile','UserProfileResource','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','WhatsappApplication','../api/whatsappInteraction/whatsappInteraction.model','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','../api/userVoicePrefix/userVoicePrefix.model','UserSetting','../api/user-setting/user-setting.model','hasOne','cascade','UserId','userSetting','hasMany','Recordings','VoiceQueuesRt','Extensions','OpenchannelInteractions','ChatInteractions','SmsInteractions','FaxInteractions','WhatsappInteractions','belongsTo','userProfileId','belongsToMany','ChatGroup','Groups','chat_group_has_users','Contacts','Lists','cm_user_has_lists','user_has_teams','MailInteractions','user_has_chat_interactions','user_has_fax_interactions','user_has_sms_interactions','user_has_openchannel_interactions','WhatsappInteraction','user_has_whatsapp_interactions','VoiceQueues','VoicePrefixes','UserMailQueue','ChatQueue','ChatQueues','FaxQueue','OpenchannelQueues','UserOpenchannelQueue','WhatsappQueues','ChatWebsite','ChatWebsites','user_has_chat_websites','FaxAccounts','user_has_fax_accounts','MailAccount','MailAccounts','user_has_mail_accounts','OpenchannelAccount','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_square_projects','VoiceExtension','SpiedAgents','ChanSpyId','VoiceContext','Applications','Sound','Sounds','moh_has_sounds','Members','VoiceQueueId','HopperHistories','HopperBlacks','Trunk','TrunkId','TrunkBackup','TrunkBackupId','IntervalId','mandatoryDispositionPause','voice_queues_has_cm_lists','Agents','Teams','Messages','mailbox','QueueCalls','AgentReports','Contact','CloudProviderId','restrict','MailAccountId','Imap','Smtp','Dispositions','Answers','Interactions','List','ListId','TemplateId','mandatoryDispositionPauseId','team_has_mail_queues','MailInteractionId','ContactId','Owner','mail_interaction_has_tags','Tags','ThroughTags','Users','Attachments','Interaction','Account','ChatWebsiteId','ChatOfflineMessage','ChatOfflineMessageId','TagId','MailQueueReport','Items','FaxAccountId','fax_interaction_has_tags','FaxInteractionId','AttachmentId','UserFaxQueue','team_has_fax_queues','FaxQueueReport','SmsAccountId','SmsInteractionId','sms_interaction_has_tags','SmsQueueId','OpenchannelAccountId','OpenchannelQueueId','openchannel_interaction_has_tags','OpenchannelInteractionId','team_has_openchannel_queues','ProactiveActions','ChatInteractionId','team_has_chat_queues','ChatInternalMessage','ChatGroupId','CompanyId','Hoppers','HopperFinals','JscriptySessions','cm_user_has_contacts','cm_contact_has_tags','AdditionalPhones','CmHopperId','Agent','Queue','CampaignId','OwnerId','All','OneAll','Any','OneAny','AutomationAnyId','Actions','AutomationId','Intervals','MailApplications','ChatApplications','SmsApplications','AnalyticDefaultReport','DefaultReportId','CustomReportId','chat_interaction_has_tags','whatsapp_interaction_has_tags','ItemType','Hopper','CmContactId','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','TriggerId','AnalyticCustomReport','AnalyticFieldReport','Fields','SalesforceConfiguration','AccountId','Subjects','Descriptions','DescriptionId','FieldId','Subject','Description','Field','Variable','Configurations','SugarcrmConfiguration','SubjectId','VariableId','DeskAccount','int_desk_configuration_has_tags','ZendeskField','int_zendesk_configuration_has_tags','int_freshdesk_configuration_has_tags','Dynamics365Configuration','FreshsalesField','ChatQueueReport','FromId','ToId','JscriptyQuestionReport','SessionId','ProjectId','MailQueues','FaxQueues','team_has_sms_queues','SmsQueues','team_has_whatsapp_queues','SquareProjectId','BlackLists','campaigns_has_cm_blacklists','FromMailAccountId','FromUserId','FromAgent','ToMailQueueId','ToMailAccountId','ToAccount','FromChatWebsiteId','FromAccount','ToUserId','ToAgent','ToChatQueueId','ToChatWebsiteId','FromFaxAccountId','ToFaxQueueId','ToQueue','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','CustomFields','Queues','UserVoicePrefix','UserProfileSection','UserProfileSections','WhatsappAccountId','WhatsappMessage','user_has_whatsapp_accounts','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','user','exports','../config/environment','sequelize','jstz','determine','defaultsDeep','mysql','utf8','sequelizeHistory','motion2','xcall','127.0.0.1','name','utf8_general_ci','database','username','password','options','User','import','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','../api/voiceContext/voiceContext.model','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','VoiceRecording','../api/voiceRecording/voiceRecording.model','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','../api/trunk/trunk.model','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','UserVoiceQueue','UserChatQueue','../api/userChatQueue/userChatQueue.model','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','../api/mailAccount/mailAccount.model','MailQueue','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','../api/mailQueueReport/mailQueueReport.model','Dashboard','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','FaxInteraction','FaxMessage','../api/faxMessage/faxMessage.model','../api/faxQueue/faxQueue.model','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','ChatMessage','../api/chatMessage/chatMessage.model','../api/chatOfflineMessage/chatOfflineMessage.model','../api/chatQueue/chatQueue.model','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','CmHopper','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','Automation','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','Condition','Interval','../api/interval/interval.model','Pause','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','../api/sound/sound.model','Tag','../api/tag/tag.model','ContactItemType','CmContactHasItem','../api/cmContactHasItem/cmContactHasItem.model','CmHopperAdditionalPhone','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model','Template','Trigger','../api/trigger/trigger.model','../api/variable/variable.model','Integration','../api/integration/integration.model','../api/integrationReport/integrationReport.model','../api/analyticCustomReport/analyticCustomReport.model','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','../api/analyticMetric/analyticMetric.model','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','SalesforceAccount','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','SugarcrmAccount','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','../api/intFreshsalesField/intFreshsalesField.model','Network','../api/network/network.model','../api/chatQueueReport/chatQueueReport.model','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','Team','Campaign','../api/campaign/campaign.model','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','VoicePrefix','../api/voicePrefix/voicePrefix.model'];(function(_0x3942dc,_0x34eb76){var _0x2a32d3=function(_0xf91a83){while(--_0xf91a83){_0x3942dc['push'](_0x3942dc['shift']());}};_0x2a32d3(++_0x34eb76);}(_0x2cd4,0x103));var _0x42cd=function(_0x28014d,_0x383e2f){_0x28014d=_0x28014d-0x0;var _0x2572cc=_0x2cd4[_0x28014d];return _0x2572cc;};'use strict';var config=require(_0x42cd('0x0'));var Sequelize=require(_0x42cd('0x1'));var _=require('lodash');var jstz=require(_0x42cd('0x2'));var timezone=jstz[_0x42cd('0x3')]();config['sequelize']=_[_0x42cd('0x4')](config['sequelize'],{'database':'motion2','username':'xcall','password':'xC@LL1234','options':{'host':'127.0.0.1','port':0xcea,'dialect':_0x42cd('0x5'),'dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0x42cd('0x6'),'collate':'utf8_general_ci'}}});config[_0x42cd('0x7')]=_[_0x42cd('0x4')](config[_0x42cd('0x7')],{'database':_0x42cd('0x8'),'username':_0x42cd('0x9'),'password':'xC@LL1234','options':{'host':_0x42cd('0xa'),'port':0xcea,'dialect':_0x42cd('0x5'),'dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone[_0x42cd('0xb')](),'define':{'charset':'utf8','collate':_0x42cd('0xc')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x42cd('0x1')][_0x42cd('0xd')],config['sequelize'][_0x42cd('0xe')],config[_0x42cd('0x1')]['password'],config[_0x42cd('0x1')]['options'])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x42cd('0x7')][_0x42cd('0xd')],config['sequelizeHistory'][_0x42cd('0xe')],config[_0x42cd('0x7')][_0x42cd('0xf')],config[_0x42cd('0x7')][_0x42cd('0x10')])};db[_0x42cd('0x11')]=db['sequelize'][_0x42cd('0x12')]('../api/user/user.model');db[_0x42cd('0x13')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x14'));db['VoiceContext']=db[_0x42cd('0x1')]['import'](_0x42cd('0x15'));db['VoiceExtension']=db['sequelize'][_0x42cd('0x12')](_0x42cd('0x16'));db[_0x42cd('0x17')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x18'));db[_0x42cd('0x19')]=db[_0x42cd('0x1')][_0x42cd('0x12')]('../api/voiceQueue/voiceQueue.model');db[_0x42cd('0x1a')]=db[_0x42cd('0x1')]['import'](_0x42cd('0x1b'));db[_0x42cd('0x1c')]=db['sequelize'][_0x42cd('0x12')](_0x42cd('0x1d'));db[_0x42cd('0x1e')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x1f'));db[_0x42cd('0x20')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x21'));db[_0x42cd('0x22')]=db[_0x42cd('0x1')]['import'](_0x42cd('0x23'));db[_0x42cd('0x24')]=db['sequelize'][_0x42cd('0x12')](_0x42cd('0x25'));db[_0x42cd('0x26')]=db['sequelize'][_0x42cd('0x12')](_0x42cd('0x27'));db[_0x42cd('0x28')]=db['sequelize'][_0x42cd('0x12')](_0x42cd('0x29'));db['MemberReport']=db[_0x42cd('0x1')][_0x42cd('0x12')]('../api/memberReport/memberReport.model');db['Trunk']=db['sequelize'][_0x42cd('0x12')](_0x42cd('0x2a'));db[_0x42cd('0x2b')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x2c'));db[_0x42cd('0x2d')]=db[_0x42cd('0x1')][_0x42cd('0x12')]('../api/userVoiceQueueRt/userVoiceQueueRt.model');db[_0x42cd('0x2e')]=db[_0x42cd('0x1')]['import']('../api/userVoiceQueue/userVoiceQueue.model');db[_0x42cd('0x2f')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x30'));db['UserMailQueue']=db['sequelize'][_0x42cd('0x12')]('../api/userMailQueue/userMailQueue.model');db['UserFaxQueue']=db[_0x42cd('0x1')]['import'](_0x42cd('0x31'));db[_0x42cd('0x32')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x33'));db['UserOpenchannelQueue']=db['sequelize'][_0x42cd('0x12')]('../api/userOpenchannelQueue/userOpenchannelQueue.model');db[_0x42cd('0x34')]=db[_0x42cd('0x1')]['import'](_0x42cd('0x35'));db[_0x42cd('0x36')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x37'));db[_0x42cd('0x38')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x39'));db['MailAccount']=db['sequelize'][_0x42cd('0x12')](_0x42cd('0x3a'));db[_0x42cd('0x3b')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x3c'));db[_0x42cd('0x3d')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x3e'));db[_0x42cd('0x3f')]=db[_0x42cd('0x1')]['import'](_0x42cd('0x40'));db[_0x42cd('0x41')]=db[_0x42cd('0x1')]['import'](_0x42cd('0x42'));db[_0x42cd('0x43')]=db['sequelize'][_0x42cd('0x12')](_0x42cd('0x44'));db['MailQueueReport']=db['sequelize'][_0x42cd('0x12')](_0x42cd('0x45'));db[_0x42cd('0x46')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x47'));db[_0x42cd('0x48')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x49'));db[_0x42cd('0x4a')]=db['sequelize']['import'](_0x42cd('0x4b'));db[_0x42cd('0x4c')]=db[_0x42cd('0x1')][_0x42cd('0x12')]('../api/faxApplication/faxApplication.model');db[_0x42cd('0x4d')]=db[_0x42cd('0x1')][_0x42cd('0x12')]('../api/faxInteraction/faxInteraction.model');db[_0x42cd('0x4e')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x4f'));db['FaxQueue']=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x50'));db['FaxQueueReport']=db[_0x42cd('0x1')][_0x42cd('0x12')]('../api/faxQueueReport/faxQueueReport.model');db[_0x42cd('0x51')]=db[_0x42cd('0x1')]['import'](_0x42cd('0x52'));db[_0x42cd('0x53')]=db['sequelize']['import'](_0x42cd('0x54'));db[_0x42cd('0x55')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x56'));db[_0x42cd('0x57')]=db['sequelize'][_0x42cd('0x12')](_0x42cd('0x58'));db[_0x42cd('0x59')]=db[_0x42cd('0x1')][_0x42cd('0x12')]('../api/smsQueue/smsQueue.model');db['OpenchannelAccount']=db[_0x42cd('0x1')]['import'](_0x42cd('0x5a'));db[_0x42cd('0x5b')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x5c'));db[_0x42cd('0x5d')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x5e'));db[_0x42cd('0x5f')]=db[_0x42cd('0x1')][_0x42cd('0x12')]('../api/openchannelMessage/openchannelMessage.model');db[_0x42cd('0x60')]=db['sequelize'][_0x42cd('0x12')](_0x42cd('0x61'));db['ChatWebsite']=db[_0x42cd('0x1')][_0x42cd('0x12')]('../api/chatWebsite/chatWebsite.model');db[_0x42cd('0x62')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x63'));db[_0x42cd('0x64')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x65'));db[_0x42cd('0x66')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x67'));db[_0x42cd('0x68')]=db[_0x42cd('0x1')]['import'](_0x42cd('0x69'));db['ChatOfflineMessage']=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x6a'));db['ChatQueue']=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x6b'));db['ChatGroup']=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x6c'));db[_0x42cd('0x6d')]=db[_0x42cd('0x1')]['import'](_0x42cd('0x6e'));db[_0x42cd('0x6f')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x70'));db[_0x42cd('0x71')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x72'));db[_0x42cd('0x73')]=db[_0x42cd('0x1')][_0x42cd('0x12')]('../api/cmHopper/cmHopper.model');db[_0x42cd('0x74')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x75'));db[_0x42cd('0x76')]=db['sequelize'][_0x42cd('0x12')](_0x42cd('0x77'));db[_0x42cd('0x78')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x79'));db[_0x42cd('0x7a')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x7b'));db[_0x42cd('0x7c')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x7d'));db[_0x42cd('0x7e')]=db['sequelize'][_0x42cd('0x12')]('../api/action/action.model');db[_0x42cd('0x7f')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x80'));db[_0x42cd('0x81')]=db[_0x42cd('0x1')]['import'](_0x42cd('0x82'));db[_0x42cd('0x83')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x84'));db[_0x42cd('0x85')]=db[_0x42cd('0x1')][_0x42cd('0x12')]('../api/condition/condition.model');db[_0x42cd('0x86')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x87'));db[_0x42cd('0x88')]=db[_0x42cd('0x1')]['import']('../api/pause/pause.model');db['Cdr']=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x89'));db[_0x42cd('0x8a')]=db['sequelize']['import'](_0x42cd('0x8b'));db[_0x42cd('0x8c')]=db['sequelize']['import'](_0x42cd('0x8d'));db['Sound']=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x8e'));db[_0x42cd('0x8f')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x90'));db[_0x42cd('0x91')]=db['sequelize'][_0x42cd('0x12')]('../api/contactItemType/contactItemType.model');db[_0x42cd('0x92')]=db[_0x42cd('0x1')]['import'](_0x42cd('0x93'));db[_0x42cd('0x94')]=db['sequelize'][_0x42cd('0x12')](_0x42cd('0x95'));db[_0x42cd('0x96')]=db[_0x42cd('0x1')][_0x42cd('0x12')]('../api/template/template.model');db[_0x42cd('0x97')]=db[_0x42cd('0x1')]['import'](_0x42cd('0x98'));db['Variable']=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x99'));db[_0x42cd('0x9a')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x9b'));db['IntegrationReport']=db['sequelize'][_0x42cd('0x12')](_0x42cd('0x9c'));db['AnalyticCustomReport']=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x9d'));db['AnalyticDefaultReport']=db['sequelize'][_0x42cd('0x12')](_0x42cd('0x9e'));db[_0x42cd('0x9f')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0xa0'));db[_0x42cd('0xa1')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0xa2'));db['AnalyticFieldReport']=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0xa3'));db[_0x42cd('0xa4')]=db[_0x42cd('0x1')][_0x42cd('0x12')]('../api/analyticTreeReport/analyticTreeReport.model');db[_0x42cd('0xa5')]=db[_0x42cd('0x1')][_0x42cd('0x12')]('../api/intSalesforceAccount/intSalesforceAccount.model');db['SalesforceConfiguration']=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0xa6'));db[_0x42cd('0xa7')]=db[_0x42cd('0x1')]['import']('../api/intSalesforceField/intSalesforceField.model');db[_0x42cd('0xa8')]=db[_0x42cd('0x1')][_0x42cd('0x12')]('../api/intSugarcrmAccount/intSugarcrmAccount.model');db['SugarcrmConfiguration']=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0xa9'));db[_0x42cd('0xaa')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0xab'));db['DeskAccount']=db['sequelize'][_0x42cd('0x12')](_0x42cd('0xac'));db[_0x42cd('0xad')]=db['sequelize'][_0x42cd('0x12')]('../api/intDeskConfiguration/intDeskConfiguration.model');db[_0x42cd('0xae')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0xaf'));db[_0x42cd('0xb0')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0xb1'));db[_0x42cd('0xb2')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0xb3'));db[_0x42cd('0xb4')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0xb5'));db[_0x42cd('0xb6')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0xb7'));db[_0x42cd('0xb8')]=db['sequelize'][_0x42cd('0x12')](_0x42cd('0xb9'));db['ZendeskField']=db[_0x42cd('0x1')]['import'](_0x42cd('0xba'));db[_0x42cd('0xbb')]=db['sequelize']['import'](_0x42cd('0xbc'));db[_0x42cd('0xbd')]=db['sequelize'][_0x42cd('0x12')](_0x42cd('0xbe'));db[_0x42cd('0xbf')]=db['sequelize'][_0x42cd('0x12')](_0x42cd('0xc0'));db[_0x42cd('0xc1')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0xc2'));db[_0x42cd('0xc3')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0xc4'));db[_0x42cd('0xc5')]=db['sequelize'][_0x42cd('0x12')](_0x42cd('0xc6'));db[_0x42cd('0xc7')]=db['sequelize'][_0x42cd('0x12')]('../api/intServicenowAccount/intServicenowAccount.model');db[_0x42cd('0xc8')]=db['sequelize']['import'](_0x42cd('0xc9'));db[_0x42cd('0xca')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0xcb'));db[_0x42cd('0xcc')]=db['sequelize'][_0x42cd('0x12')](_0x42cd('0xcd'));db['Dynamics365Configuration']=db[_0x42cd('0x1')]['import']('../api/intDynamics365Configuration/intDynamics365Configuration.model');db[_0x42cd('0xce')]=db['sequelize'][_0x42cd('0x12')](_0x42cd('0xcf'));db[_0x42cd('0xd0')]=db['sequelize'][_0x42cd('0x12')]('../api/intFreshsalesAccount/intFreshsalesAccount.model');db[_0x42cd('0xd1')]=db['sequelize'][_0x42cd('0x12')](_0x42cd('0xd2'));db['FreshsalesField']=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0xd3'));db[_0x42cd('0x9a')]=db[_0x42cd('0x1')][_0x42cd('0x12')]('../api/integration/integration.model');db[_0x42cd('0xd4')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0xd5'));db['ChatQueueReport']=db['sequelize']['import'](_0x42cd('0xd6'));db['ChatInternalMessage']=db['sequelize']['import'](_0x42cd('0xd7'));db[_0x42cd('0xd8')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0xd9'));db['JscriptyQuestionReport']=db[_0x42cd('0x1')]['import']('../api/jscriptyQuestionReport/jscriptyQuestionReport.model');db[_0x42cd('0xda')]=db[_0x42cd('0x1')]['import'](_0x42cd('0xdb'));db[_0x42cd('0xdc')]=db[_0x42cd('0x1')]['import'](_0x42cd('0xdd'));db['SquareReport']=db[_0x42cd('0x1')]['import'](_0x42cd('0xde'));db[_0x42cd('0xdf')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0xe0'));db[_0x42cd('0xe1')]=db['sequelize']['import'](_0x42cd('0xe2'));db[_0x42cd('0xe3')]=db[_0x42cd('0x1')][_0x42cd('0x12')]('../api/setting/setting.model');db[_0x42cd('0xe4')]=db['sequelize']['import'](_0x42cd('0xe5'));db[_0x42cd('0xe6')]=db['sequelize'][_0x42cd('0x12')](_0x42cd('0xe7'));db[_0x42cd('0xe8')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0xe9'));db[_0x42cd('0xea')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0xeb'));db[_0x42cd('0xec')]=db[_0x42cd('0x1')]['import']('../api/team/team.model');db['License']=db[_0x42cd('0x1')]['import']('../api/license/license.model');db[_0x42cd('0xed')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0xee'));db['Migration']=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0xef'));db[_0x42cd('0xf0')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0xf1'));db[_0x42cd('0xf2')]=db['sequelize'][_0x42cd('0x12')](_0x42cd('0xf3'));db[_0x42cd('0xf4')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0xf5'));db[_0x42cd('0xf6')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0xf7'));db[_0x42cd('0xf8')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0xf9'));db[_0x42cd('0xfa')]=db['sequelize'][_0x42cd('0x12')](_0x42cd('0xfb'));db[_0x42cd('0xfc')]=db['sequelize'][_0x42cd('0x12')](_0x42cd('0xfd'));db[_0x42cd('0xfe')]=db['sequelize'][_0x42cd('0x12')]('../api/cmList/cmList.model');db[_0x42cd('0xff')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x100'));db[_0x42cd('0x101')]=db[_0x42cd('0x1')]['import']('../api/userProfile/userProfile.model');db['UserProfileSection']=db[_0x42cd('0x1')][_0x42cd('0x12')]('../api/userProfileSection/userProfileSection.model');db[_0x42cd('0x102')]=db['sequelize'][_0x42cd('0x12')]('../api/userProfileResource/userProfileResource.model');db[_0x42cd('0x103')]=db['sequelize'][_0x42cd('0x12')](_0x42cd('0x104'));db[_0x42cd('0x105')]=db[_0x42cd('0x1')][_0x42cd('0x12')]('../api/whatsappAccount/whatsappAccount.model');db[_0x42cd('0x106')]=db[_0x42cd('0x1')]['import']('../api/whatsappApplication/whatsappApplication.model');db['WhatsappInteraction']=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x107'));db['WhatsappMessage']=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x108'));db[_0x42cd('0x109')]=db['sequelize'][_0x42cd('0x12')](_0x42cd('0x10a'));db[_0x42cd('0x10b')]=db[_0x42cd('0x1')]['import'](_0x42cd('0x10c'));db[_0x42cd('0x10d')]=db[_0x42cd('0x1')]['import']('../api/whatsappQueue/whatsappQueue.model');db[_0x42cd('0x10e')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x10f'));db[_0x42cd('0x110')]=db[_0x42cd('0x1')][_0x42cd('0x12')]('../api/teamVoiceQueue/teamVoiceQueue.model');db[_0x42cd('0x111')]=db[_0x42cd('0x1')][_0x42cd('0x12')](_0x42cd('0x112'));db['UserVoicePrefix']=db['sequelize']['import'](_0x42cd('0x113'));db[_0x42cd('0x114')]=db[_0x42cd('0x1')]['import'](_0x42cd('0x115'));db[_0x42cd('0x11')][_0x42cd('0x116')](db[_0x42cd('0x1e')],{'as':_0x42cd('0x1e'),'onDelete':_0x42cd('0x117'),'foreignKey':_0x42cd('0x118')});db['User'][_0x42cd('0x116')](db[_0x42cd('0x114')],{'as':_0x42cd('0x119'),'onDelete':_0x42cd('0x117'),'foreignKey':'UserId'});db[_0x42cd('0x11')][_0x42cd('0x11a')](db[_0x42cd('0x1a')],{'as':_0x42cd('0x11b'),'foreignKey':_0x42cd('0x118')});db[_0x42cd('0x11')]['hasMany'](db[_0x42cd('0x2d')],{'as':_0x42cd('0x11c'),'foreignKey':_0x42cd('0x118')});db[_0x42cd('0x11')][_0x42cd('0x11a')](db['VoiceExtension'],{'as':_0x42cd('0x11d'),'onDelete':_0x42cd('0x117'),'hooks':!![]});db[_0x42cd('0x11')][_0x42cd('0x11a')](db[_0x42cd('0x76')],{'as':'HopperFinals','foreignKey':_0x42cd('0x118')});db['User'][_0x42cd('0x11a')](db[_0x42cd('0x78')],{'as':'HopperHistory','foreignKey':_0x42cd('0x118')});db[_0x42cd('0x11')][_0x42cd('0x11a')](db[_0x42cd('0x7a')],{'as':_0x42cd('0x7a'),'foreignKey':'UserId'});db[_0x42cd('0x11')]['hasMany'](db[_0x42cd('0x5d')],{'as':_0x42cd('0x11e'),'foreignKey':_0x42cd('0x118')});db[_0x42cd('0x11')]['hasMany'](db[_0x42cd('0x66')],{'as':_0x42cd('0x11f'),'foreignKey':_0x42cd('0x118')});db[_0x42cd('0x11')][_0x42cd('0x11a')](db[_0x42cd('0x55')],{'as':_0x42cd('0x120'),'foreignKey':_0x42cd('0x118')});db[_0x42cd('0x11')][_0x42cd('0x11a')](db[_0x42cd('0x4d')],{'as':_0x42cd('0x121'),'foreignKey':_0x42cd('0x118')});db['User']['hasMany'](db[_0x42cd('0x3f')],{'as':'MailInteractions','foreignKey':'UserId'});db[_0x42cd('0x11')][_0x42cd('0x11a')](db['WhatsappInteraction'],{'as':_0x42cd('0x122'),'foreignKey':'UserId'});db[_0x42cd('0x11')][_0x42cd('0x11a')](db[_0x42cd('0x103')],{'as':'UserNotifications','foreignKey':'SenderId'});db[_0x42cd('0x11')][_0x42cd('0x123')](db[_0x42cd('0x101')],{'as':_0x42cd('0x101'),'foreignKey':_0x42cd('0x124')});db[_0x42cd('0x11')][_0x42cd('0x125')](db[_0x42cd('0x126')],{'as':_0x42cd('0x127'),'through':_0x42cd('0x128')});db['User']['belongsToMany'](db['CmContact'],{'as':_0x42cd('0x129'),'through':'cm_user_has_contacts'});db[_0x42cd('0x11')][_0x42cd('0x125')](db['CmList'],{'as':_0x42cd('0x12a'),'through':_0x42cd('0x12b')});db['User'][_0x42cd('0x125')](db[_0x42cd('0xec')],{'through':_0x42cd('0x12c')});db[_0x42cd('0x11')][_0x42cd('0x125')](db[_0x42cd('0x3f')],{'as':_0x42cd('0x12d'),'through':'user_has_mail_interactions'});db[_0x42cd('0x11')][_0x42cd('0x125')](db[_0x42cd('0x66')],{'as':_0x42cd('0x11f'),'through':_0x42cd('0x12e')});db[_0x42cd('0x11')]['belongsToMany'](db['FaxInteraction'],{'as':_0x42cd('0x121'),'through':_0x42cd('0x12f')});db['User'][_0x42cd('0x125')](db[_0x42cd('0x55')],{'as':_0x42cd('0x120'),'through':_0x42cd('0x130')});db[_0x42cd('0x11')][_0x42cd('0x125')](db['OpenchannelInteraction'],{'as':_0x42cd('0x11e'),'through':_0x42cd('0x131')});db[_0x42cd('0x11')][_0x42cd('0x125')](db[_0x42cd('0x132')],{'as':'WhatsappInteractions','through':_0x42cd('0x133')});db[_0x42cd('0x11')][_0x42cd('0x125')](db[_0x42cd('0x19')],{'as':_0x42cd('0x134'),'through':_0x42cd('0x2e'),'required':![]});db[_0x42cd('0x11')]['belongsToMany'](db[_0x42cd('0xff')],{'as':_0x42cd('0x135'),'through':'UserVoicePrefix','required':![]});db[_0x42cd('0x11')][_0x42cd('0x125')](db[_0x42cd('0x3b')],{'as':'MailQueues','through':_0x42cd('0x136'),'required':![]});db[_0x42cd('0x11')][_0x42cd('0x125')](db[_0x42cd('0x137')],{'as':_0x42cd('0x138'),'through':_0x42cd('0x2f'),'required':![],'hooks':!![]});db[_0x42cd('0x11')][_0x42cd('0x125')](db[_0x42cd('0x139')],{'as':'FaxQueues','through':'UserFaxQueue','required':![]});db['User'][_0x42cd('0x125')](db['SmsQueue'],{'as':'SmsQueues','through':_0x42cd('0x32'),'required':![]});db[_0x42cd('0x11')][_0x42cd('0x125')](db[_0x42cd('0x60')],{'as':_0x42cd('0x13a'),'through':_0x42cd('0x13b'),'required':![]});db['User'][_0x42cd('0x125')](db[_0x42cd('0x10d')],{'as':_0x42cd('0x13c'),'through':'UserWhatsappQueue','required':![]});db[_0x42cd('0x11')]['belongsToMany'](db[_0x42cd('0xfe')],{'through':_0x42cd('0x12b')});db[_0x42cd('0x11')][_0x42cd('0x125')](db[_0x42cd('0x13d')],{'as':_0x42cd('0x13e'),'through':_0x42cd('0x13f')});db[_0x42cd('0x11')][_0x42cd('0x125')](db[_0x42cd('0x4a')],{'as':_0x42cd('0x140'),'through':_0x42cd('0x141')});db['User'][_0x42cd('0x125')](db[_0x42cd('0x142')],{'as':_0x42cd('0x143'),'through':_0x42cd('0x144')});db[_0x42cd('0x11')][_0x42cd('0x125')](db[_0x42cd('0x145')],{'as':_0x42cd('0x146'),'through':_0x42cd('0x147')});db[_0x42cd('0x11')]['belongsToMany'](db[_0x42cd('0x51')],{'as':_0x42cd('0x148'),'through':_0x42cd('0x149')});db[_0x42cd('0x11')][_0x42cd('0x125')](db[_0x42cd('0x105')],{'as':_0x42cd('0x14a'),'through':'user_has_whatsapp_accounts'});db[_0x42cd('0x11')]['belongsToMany'](db[_0x42cd('0xe6')],{'as':'SquareProjects','through':_0x42cd('0x14b')});db['VoiceChanSpy'][_0x42cd('0x11a')](db[_0x42cd('0x14c')],{'as':_0x42cd('0x14d'),'onDelete':'cascade','foreignKey':_0x42cd('0x14e')});db[_0x42cd('0x14f')][_0x42cd('0x11a')](db[_0x42cd('0x14c')],{'onDelete':_0x42cd('0x117')});db[_0x42cd('0x14c')][_0x42cd('0x11a')](db[_0x42cd('0x14c')],{'as':_0x42cd('0x150'),'onDelete':_0x42cd('0x117')});db[_0x42cd('0x17')][_0x42cd('0x125')](db[_0x42cd('0x151')],{'as':_0x42cd('0x152'),'through':_0x42cd('0x153')});db[_0x42cd('0x19')]['hasMany'](db[_0x42cd('0x2d')],{'as':_0x42cd('0x154'),'foreignKey':_0x42cd('0x155')});db[_0x42cd('0x19')][_0x42cd('0x11a')](db[_0x42cd('0x73')],{'as':'Hoppers','foreignKey':_0x42cd('0x155')});db[_0x42cd('0x19')][_0x42cd('0x11a')](db['CmHopperFinal'],{'as':'HopperFinals','foreignKey':_0x42cd('0x155')});db[_0x42cd('0x19')][_0x42cd('0x11a')](db['CmHopperHistory'],{'as':_0x42cd('0x156'),'foreignKey':_0x42cd('0x155')});db[_0x42cd('0x19')][_0x42cd('0x11a')](db[_0x42cd('0x7a')],{'as':_0x42cd('0x7a'),'foreignKey':_0x42cd('0x155')});db[_0x42cd('0x19')][_0x42cd('0x11a')](db[_0x42cd('0x74')],{'as':_0x42cd('0x157'),'foreignKey':_0x42cd('0x155')});db[_0x42cd('0x19')]['hasMany'](db[_0x42cd('0xda')],{'as':'JscriptySessions','foreignKey':_0x42cd('0x155')});db[_0x42cd('0x19')][_0x42cd('0x123')](db['Trunk'],{'as':_0x42cd('0x158'),'foreignKey':_0x42cd('0x159')});db[_0x42cd('0x19')][_0x42cd('0x123')](db['Trunk'],{'as':_0x42cd('0x15a'),'foreignKey':_0x42cd('0x15b')});db[_0x42cd('0x19')]['belongsTo'](db[_0x42cd('0x86')],{'as':_0x42cd('0x86'),'foreignKey':_0x42cd('0x15c')});db[_0x42cd('0x19')][_0x42cd('0x123')](db[_0x42cd('0x88')],{'as':_0x42cd('0x15d'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x42cd('0x19')][_0x42cd('0x125')](db[_0x42cd('0xfe')],{'as':'Lists','through':_0x42cd('0x15e')});db[_0x42cd('0x19')][_0x42cd('0x125')](db['User'],{'as':_0x42cd('0x15f'),'through':_0x42cd('0x2e')});db[_0x42cd('0x19')][_0x42cd('0x125')](db[_0x42cd('0xec')],{'as':_0x42cd('0x160'),'through':'TeamVoiceQueue'});db[_0x42cd('0x19')][_0x42cd('0x125')](db[_0x42cd('0xfe')],{'as':'BlackLists','through':'voice_queues_has_cm_blacklists'});db[_0x42cd('0x1a')][_0x42cd('0x123')](db[_0x42cd('0x11')],{'as':_0x42cd('0x11'),'foreignKey':_0x42cd('0x118')});db[_0x42cd('0x1c')][_0x42cd('0x123')](db[_0x42cd('0x11')],{'as':'User','foreignKey':_0x42cd('0x118')});db[_0x42cd('0x1e')][_0x42cd('0x11a')](db[_0x42cd('0x20')],{'as':_0x42cd('0x161'),'onDelete':_0x42cd('0x117'),'foreignKey':'mailboxuser','sourceKey':_0x42cd('0x162')});db[_0x42cd('0x20')][_0x42cd('0x123')](db[_0x42cd('0x1e')],{'foreignKey':'mailboxuser','targetKey':'mailbox'});db[_0x42cd('0x22')]['hasMany'](db[_0x42cd('0x28')],{'as':_0x42cd('0x163'),'foreignKey':'uniqueid','constraints':![]});db[_0x42cd('0x22')][_0x42cd('0x11a')](db[_0x42cd('0x26')],{'as':_0x42cd('0x164'),'foreignKey':'uniqueid','constraints':![]});db[_0x42cd('0x22')][_0x42cd('0x123')](db[_0x42cd('0x11')],{'as':'User','foreignKey':_0x42cd('0x118')});db[_0x42cd('0x22')]['belongsTo'](db[_0x42cd('0x71')],{'as':_0x42cd('0x165'),'foreignKey':'ContactId'});db[_0x42cd('0x36')][_0x42cd('0x123')](db[_0x42cd('0x142')],{'as':_0x42cd('0x142'),'foreignKey':'MailAccountId'});db[_0x42cd('0x36')]['belongsTo'](db['CloudProvider'],{'as':_0x42cd('0x10e'),'foreignKey':_0x42cd('0x166'),'onDelete':_0x42cd('0x167')});db[_0x42cd('0x38')][_0x42cd('0x123')](db[_0x42cd('0x142')],{'as':_0x42cd('0x142'),'foreignKey':_0x42cd('0x168')});db['MailServerOut']['belongsTo'](db[_0x42cd('0x10e')],{'as':_0x42cd('0x10e'),'foreignKey':_0x42cd('0x166'),'onDelete':_0x42cd('0x167')});db[_0x42cd('0x142')][_0x42cd('0x116')](db[_0x42cd('0x36')],{'as':_0x42cd('0x169'),'onDelete':_0x42cd('0x117')});db[_0x42cd('0x142')][_0x42cd('0x116')](db[_0x42cd('0x38')],{'as':_0x42cd('0x16a'),'onDelete':_0x42cd('0x117')});db[_0x42cd('0x142')][_0x42cd('0x11a')](db[_0x42cd('0x83')],{'as':_0x42cd('0x16b'),'foreignKey':_0x42cd('0x168'),'onDelete':'cascade'});db['MailAccount'][_0x42cd('0x11a')](db[_0x42cd('0x81')],{'as':_0x42cd('0x16c'),'foreignKey':_0x42cd('0x168')});db[_0x42cd('0x142')]['hasMany'](db['MailMessage'],{'as':_0x42cd('0x161'),'foreignKey':_0x42cd('0x168')});db['MailAccount'][_0x42cd('0x11a')](db['MailInteraction'],{'as':_0x42cd('0x16d')});db[_0x42cd('0x142')]['hasMany'](db[_0x42cd('0x43')],{'as':'Applications'});db[_0x42cd('0x142')][_0x42cd('0x123')](db['CmList'],{'as':_0x42cd('0x16e'),'foreignKey':_0x42cd('0x16f')});db[_0x42cd('0x142')]['belongsTo'](db[_0x42cd('0x96')],{'as':_0x42cd('0x96'),'foreignKey':_0x42cd('0x170')});db[_0x42cd('0x142')][_0x42cd('0x123')](db[_0x42cd('0x88')],{'as':'mandatoryDispositionPause','foreignKey':_0x42cd('0x171')});db['MailAccount']['belongsToMany'](db[_0x42cd('0x11')],{'as':_0x42cd('0x15f'),'through':_0x42cd('0x144')});db[_0x42cd('0x3b')][_0x42cd('0x125')](db[_0x42cd('0x11')],{'as':_0x42cd('0x15f'),'through':_0x42cd('0x136')});db['MailQueue']['belongsToMany'](db[_0x42cd('0xec')],{'through':_0x42cd('0x172'),'as':_0x42cd('0x160')});db[_0x42cd('0x3f')]['hasMany'](db[_0x42cd('0x41')],{'as':'Messages','onDelete':'cascade','foreignKey':_0x42cd('0x173')});db[_0x42cd('0x3f')][_0x42cd('0x123')](db[_0x42cd('0x142')],{'as':'Account','foreignKey':_0x42cd('0x168')});db[_0x42cd('0x3f')][_0x42cd('0x123')](db['CmContact'],{'as':_0x42cd('0x165'),'foreignKey':_0x42cd('0x174')});db[_0x42cd('0x3f')][_0x42cd('0x123')](db[_0x42cd('0x11')],{'as':_0x42cd('0x175'),'foreignKey':_0x42cd('0x118')});db[_0x42cd('0x3f')][_0x42cd('0x125')](db[_0x42cd('0x8f')],{'through':_0x42cd('0x176'),'as':_0x42cd('0x177')});db[_0x42cd('0x3f')]['belongsToMany'](db[_0x42cd('0x8f')],{'through':_0x42cd('0x176'),'as':_0x42cd('0x178')});db['MailInteraction']['belongsToMany'](db['User'],{'as':_0x42cd('0x179'),'through':'user_has_mail_interactions','foreignKey':_0x42cd('0x173')});db[_0x42cd('0x41')]['hasMany'](db[_0x42cd('0xf0')],{'as':_0x42cd('0x17a'),'onDelete':_0x42cd('0x117')});db['MailMessage'][_0x42cd('0x123')](db[_0x42cd('0x11')],{'as':'User'});db[_0x42cd('0x41')][_0x42cd('0x123')](db[_0x42cd('0x71')],{'onDelete':_0x42cd('0x117'),'as':'Contact'});db['MailMessage'][_0x42cd('0x123')](db[_0x42cd('0x3f')],{'as':_0x42cd('0x17b'),'foreignKey':_0x42cd('0x173')});db['MailMessage'][_0x42cd('0x123')](db[_0x42cd('0x142')],{'as':_0x42cd('0x17c'),'foreignKey':'MailAccountId'});db[_0x42cd('0x41')][_0x42cd('0x123')](db['ChatWebsite'],{'as':_0x42cd('0x13d'),'foreignKey':_0x42cd('0x17d')});db[_0x42cd('0x41')][_0x42cd('0x123')](db[_0x42cd('0x17e')],{'as':_0x42cd('0x17e'),'foreignKey':_0x42cd('0x17f')});db[_0x42cd('0x43')]['belongsTo'](db[_0x42cd('0x11')],{'onDelete':_0x42cd('0x167')});db[_0x42cd('0x43')][_0x42cd('0x123')](db[_0x42cd('0x3b')],{'onDelete':_0x42cd('0x167')});db[_0x42cd('0x43')][_0x42cd('0x123')](db[_0x42cd('0x142')],{'onDelete':_0x42cd('0x167')});db['MailApplication']['belongsTo'](db[_0x42cd('0x86')],{'onDelete':'restrict','foreignKey':_0x42cd('0x15c')});db[_0x42cd('0x43')][_0x42cd('0x123')](db[_0x42cd('0x8f')],{'onDelete':'restrict','foreignKey':_0x42cd('0x180')});db[_0x42cd('0x181')][_0x42cd('0x123')](db[_0x42cd('0x142')],{});db[_0x42cd('0x181')][_0x42cd('0x123')](db[_0x42cd('0xfe')],{'as':_0x42cd('0x16e'),'foreignKey':'ListId'});db['MailQueueReport'][_0x42cd('0x123')](db[_0x42cd('0x71')],{'as':_0x42cd('0x165'),'foreignKey':_0x42cd('0x174')});db['MailQueueReport'][_0x42cd('0x123')](db[_0x42cd('0x3f')],{});db[_0x42cd('0x181')][_0x42cd('0x123')](db[_0x42cd('0x41')],{});db[_0x42cd('0x181')][_0x42cd('0x123')](db['User'],{});db['MailQueueReport'][_0x42cd('0x123')](db[_0x42cd('0x3b')],{});db[_0x42cd('0x46')][_0x42cd('0x11a')](db[_0x42cd('0x48')],{'as':_0x42cd('0x182'),'onDelete':'cascade'});db[_0x42cd('0x4a')][_0x42cd('0x11a')](db[_0x42cd('0x83')],{'as':_0x42cd('0x16b'),'foreignKey':_0x42cd('0x183'),'onDelete':'cascade'});db['FaxAccount'][_0x42cd('0x11a')](db[_0x42cd('0x81')],{'as':_0x42cd('0x16c'),'foreignKey':_0x42cd('0x183')});db[_0x42cd('0x4a')]['hasMany'](db[_0x42cd('0x4d')],{'as':_0x42cd('0x16d')});db['FaxAccount'][_0x42cd('0x11a')](db[_0x42cd('0x4c')],{'as':_0x42cd('0x150')});db['FaxAccount'][_0x42cd('0x11a')](db[_0x42cd('0x14c')],{'as':'Exntensions','onDelete':_0x42cd('0x117')});db[_0x42cd('0x4a')][_0x42cd('0x11a')](db[_0x42cd('0x4e')],{'as':_0x42cd('0x161')});db[_0x42cd('0x4a')][_0x42cd('0x123')](db['Trunk'],{'as':_0x42cd('0x158')});db[_0x42cd('0x4a')][_0x42cd('0x123')](db[_0x42cd('0xfe')],{'as':_0x42cd('0x16e'),'foreignKey':_0x42cd('0x16f')});db[_0x42cd('0x4a')]['belongsTo'](db[_0x42cd('0x88')],{'as':_0x42cd('0x15d'),'foreignKey':_0x42cd('0x171')});db[_0x42cd('0x4a')][_0x42cd('0x125')](db[_0x42cd('0x11')],{'as':'Agents','through':_0x42cd('0x141')});db[_0x42cd('0x4c')][_0x42cd('0x123')](db[_0x42cd('0x11')],{'onDelete':'restrict'});db['FaxApplication']['belongsTo'](db[_0x42cd('0x139')],{'onDelete':_0x42cd('0x167')});db['FaxApplication'][_0x42cd('0x123')](db[_0x42cd('0x4a')],{'onDelete':_0x42cd('0x167')});db[_0x42cd('0x4c')][_0x42cd('0x123')](db['Tag'],{'onDelete':'restrict','foreignKey':_0x42cd('0x180')});db[_0x42cd('0x4d')]['hasMany'](db[_0x42cd('0x4e')],{'as':'Messages','onDelete':_0x42cd('0x117'),'foreignKey':'FaxInteractionId'});db['FaxInteraction'][_0x42cd('0x123')](db['FaxAccount'],{'as':'Account','foreignKey':_0x42cd('0x183')});db[_0x42cd('0x4d')][_0x42cd('0x123')](db[_0x42cd('0x71')],{'as':_0x42cd('0x165'),'foreignKey':_0x42cd('0x174')});db[_0x42cd('0x4d')]['belongsTo'](db[_0x42cd('0x11')],{'as':_0x42cd('0x175'),'foreignKey':_0x42cd('0x118')});db[_0x42cd('0x4d')][_0x42cd('0x125')](db[_0x42cd('0x8f')],{'through':_0x42cd('0x184'),'as':_0x42cd('0x177')});db[_0x42cd('0x4d')][_0x42cd('0x125')](db[_0x42cd('0x8f')],{'through':_0x42cd('0x184'),'as':_0x42cd('0x178')});db[_0x42cd('0x4d')][_0x42cd('0x125')](db[_0x42cd('0x11')],{'as':_0x42cd('0x179'),'through':_0x42cd('0x12f'),'foreignKey':_0x42cd('0x185')});db[_0x42cd('0x4e')]['belongsTo'](db['User'],{'onDelete':'cascade','as':_0x42cd('0x11')});db[_0x42cd('0x4e')][_0x42cd('0x123')](db[_0x42cd('0x4d')],{'as':_0x42cd('0x17b'),'foreignKey':_0x42cd('0x185')});db[_0x42cd('0x4e')][_0x42cd('0x123')](db[_0x42cd('0x71')],{'onDelete':'cascade','as':_0x42cd('0x165')});db['FaxMessage']['belongsTo'](db['Attachment'],{'as':'Attachment','foreignKey':_0x42cd('0x186')});db[_0x42cd('0x4e')][_0x42cd('0x123')](db['FaxAccount'],{'as':_0x42cd('0x17c'),'foreignKey':_0x42cd('0x183')});db[_0x42cd('0x139')][_0x42cd('0x125')](db[_0x42cd('0x11')],{'as':_0x42cd('0x15f'),'through':_0x42cd('0x187')});db[_0x42cd('0x139')][_0x42cd('0x125')](db[_0x42cd('0xec')],{'through':_0x42cd('0x188'),'as':_0x42cd('0x160')});db[_0x42cd('0x189')][_0x42cd('0x123')](db['FaxAccount'],{});db[_0x42cd('0x189')][_0x42cd('0x123')](db[_0x42cd('0xfe')],{'as':_0x42cd('0x16e'),'foreignKey':_0x42cd('0x16f')});db[_0x42cd('0x189')][_0x42cd('0x123')](db[_0x42cd('0x71')],{'as':'Contact','foreignKey':_0x42cd('0x174')});db[_0x42cd('0x189')][_0x42cd('0x123')](db[_0x42cd('0x4d')],{});db[_0x42cd('0x189')][_0x42cd('0x123')](db['FaxMessage'],{});db[_0x42cd('0x189')]['belongsTo'](db[_0x42cd('0x11')],{});db['FaxQueueReport']['belongsTo'](db[_0x42cd('0x139')],{});db[_0x42cd('0x51')]['hasMany'](db['Disposition'],{'as':_0x42cd('0x16b'),'foreignKey':'SmsAccountId','onDelete':'cascade'});db['SmsAccount']['hasMany'](db[_0x42cd('0x81')],{'as':_0x42cd('0x16c'),'foreignKey':_0x42cd('0x18a')});db['SmsAccount'][_0x42cd('0x11a')](db[_0x42cd('0x57')],{'as':'Messages','foreignKey':_0x42cd('0x18a')});db[_0x42cd('0x51')][_0x42cd('0x11a')](db[_0x42cd('0x55')],{'as':_0x42cd('0x16d')});db[_0x42cd('0x51')][_0x42cd('0x11a')](db['SmsApplication'],{'as':_0x42cd('0x150')});db[_0x42cd('0x51')][_0x42cd('0x123')](db[_0x42cd('0xfe')],{'as':_0x42cd('0x16e'),'foreignKey':'ListId'});db[_0x42cd('0x51')][_0x42cd('0x123')](db[_0x42cd('0x88')],{'as':_0x42cd('0x15d'),'foreignKey':_0x42cd('0x171')});db['SmsAccount'][_0x42cd('0x125')](db['User'],{'as':'Agents','through':_0x42cd('0x149')});db[_0x42cd('0x53')][_0x42cd('0x123')](db[_0x42cd('0x11')],{'onDelete':_0x42cd('0x167')});db[_0x42cd('0x53')][_0x42cd('0x123')](db[_0x42cd('0x59')],{'onDelete':_0x42cd('0x167')});db['SmsApplication']['belongsTo'](db[_0x42cd('0x51')],{'onDelete':_0x42cd('0x167')});db['SmsApplication'][_0x42cd('0x123')](db[_0x42cd('0x86')],{'onDelete':_0x42cd('0x167'),'foreignKey':'IntervalId'});db['SmsApplication'][_0x42cd('0x123')](db['Tag'],{'onDelete':'restrict','foreignKey':'TagId'});db[_0x42cd('0x55')][_0x42cd('0x11a')](db[_0x42cd('0x57')],{'as':_0x42cd('0x161'),'onDelete':_0x42cd('0x117'),'foreignKey':_0x42cd('0x18b')});db[_0x42cd('0x55')][_0x42cd('0x123')](db['SmsAccount'],{'as':_0x42cd('0x17c'),'foreignKey':_0x42cd('0x18a')});db[_0x42cd('0x55')][_0x42cd('0x123')](db[_0x42cd('0x71')],{'as':_0x42cd('0x165'),'foreignKey':_0x42cd('0x174')});db['SmsInteraction']['belongsTo'](db[_0x42cd('0x11')],{'as':_0x42cd('0x175'),'foreignKey':_0x42cd('0x118')});db[_0x42cd('0x55')]['belongsToMany'](db[_0x42cd('0x8f')],{'through':_0x42cd('0x18c'),'as':_0x42cd('0x177')});db['SmsInteraction'][_0x42cd('0x125')](db[_0x42cd('0x8f')],{'through':_0x42cd('0x18c'),'as':_0x42cd('0x178')});db['SmsInteraction']['belongsToMany'](db[_0x42cd('0x11')],{'as':_0x42cd('0x179'),'through':'user_has_sms_interactions','foreignKey':'SmsInteractionId'});db[_0x42cd('0x57')][_0x42cd('0x123')](db[_0x42cd('0x11')],{'as':_0x42cd('0x11')});db['SmsMessage']['belongsTo'](db['CmContact'],{'onDelete':_0x42cd('0x117'),'as':_0x42cd('0x165')});db[_0x42cd('0x57')][_0x42cd('0x123')](db['SmsInteraction'],{'onDelete':'cascade','as':'Interaction','foreignKey':'SmsInteractionId'});db[_0x42cd('0x57')][_0x42cd('0x123')](db['SmsAccount'],{'as':'Account','foreignKey':'SmsAccountId'});db['SmsQueue']['belongsToMany'](db[_0x42cd('0x11')],{'as':'Agents','through':'UserSmsQueue','foreignKey':_0x42cd('0x18d')});db[_0x42cd('0x59')][_0x42cd('0x125')](db[_0x42cd('0xec')],{'through':'team_has_sms_queues','as':_0x42cd('0x160')});db[_0x42cd('0x145')][_0x42cd('0x11a')](db[_0x42cd('0x83')],{'as':_0x42cd('0x16b'),'foreignKey':_0x42cd('0x18e'),'onDelete':_0x42cd('0x117')});db[_0x42cd('0x145')][_0x42cd('0x11a')](db[_0x42cd('0x81')],{'as':_0x42cd('0x16c'),'foreignKey':_0x42cd('0x18e')});db[_0x42cd('0x145')]['hasMany'](db[_0x42cd('0x5d')],{'as':_0x42cd('0x16d'),'foreignKey':'OpenchannelAccountId'});db[_0x42cd('0x145')]['hasMany'](db['OpenchannelMessage'],{'as':_0x42cd('0x161'),'foreignKey':_0x42cd('0x18e')});db[_0x42cd('0x145')]['hasMany'](db[_0x42cd('0x5b')],{'as':_0x42cd('0x150'),'foreignKey':_0x42cd('0x18e')});db[_0x42cd('0x145')]['belongsTo'](db[_0x42cd('0xfe')],{'as':_0x42cd('0x16e'),'foreignKey':'ListId'});db[_0x42cd('0x145')][_0x42cd('0x123')](db[_0x42cd('0x88')],{'as':_0x42cd('0x15d'),'foreignKey':_0x42cd('0x171')});db[_0x42cd('0x145')][_0x42cd('0x125')](db[_0x42cd('0x11')],{'as':_0x42cd('0x15f'),'through':_0x42cd('0x147')});db[_0x42cd('0x5b')][_0x42cd('0x123')](db[_0x42cd('0x11')],{'onDelete':_0x42cd('0x167')});db[_0x42cd('0x5b')][_0x42cd('0x123')](db[_0x42cd('0x60')],{'onDelete':'restrict','foreignKey':_0x42cd('0x18f')});db[_0x42cd('0x5b')]['belongsTo'](db[_0x42cd('0x145')],{'onDelete':_0x42cd('0x167'),'foreignKey':_0x42cd('0x18e')});db[_0x42cd('0x5b')][_0x42cd('0x123')](db[_0x42cd('0x86')],{'onDelete':_0x42cd('0x167'),'foreignKey':_0x42cd('0x15c')});db[_0x42cd('0x5b')][_0x42cd('0x123')](db[_0x42cd('0x8f')],{'onDelete':_0x42cd('0x167'),'foreignKey':_0x42cd('0x180')});db[_0x42cd('0x5d')]['hasMany'](db[_0x42cd('0x5f')],{'as':_0x42cd('0x161'),'onDelete':'cascade','foreignKey':'OpenchannelInteractionId'});db['OpenchannelInteraction'][_0x42cd('0x123')](db[_0x42cd('0x145')],{'as':_0x42cd('0x17c'),'foreignKey':_0x42cd('0x18e')});db[_0x42cd('0x5d')][_0x42cd('0x123')](db[_0x42cd('0x71')],{'as':_0x42cd('0x165'),'foreignKey':'ContactId'});db[_0x42cd('0x5d')]['belongsTo'](db[_0x42cd('0x11')],{'as':_0x42cd('0x175'),'foreignKey':'UserId'});db[_0x42cd('0x5d')][_0x42cd('0x125')](db[_0x42cd('0x8f')],{'through':'openchannel_interaction_has_tags','as':_0x42cd('0x177')});db[_0x42cd('0x5d')][_0x42cd('0x125')](db[_0x42cd('0x8f')],{'through':_0x42cd('0x190'),'as':_0x42cd('0x178')});db[_0x42cd('0x5d')]['belongsToMany'](db[_0x42cd('0x11')],{'as':_0x42cd('0x179'),'through':_0x42cd('0x131'),'foreignKey':_0x42cd('0x191')});db[_0x42cd('0x5f')][_0x42cd('0x123')](db['User'],{'onDelete':_0x42cd('0x117'),'as':_0x42cd('0x11')});db[_0x42cd('0x5f')]['belongsTo'](db[_0x42cd('0x71')],{'onDelete':'cascade','as':_0x42cd('0x165')});db[_0x42cd('0x5f')][_0x42cd('0x123')](db[_0x42cd('0x5d')],{'onDelete':_0x42cd('0x117'),'as':_0x42cd('0x17b'),'foreignKey':_0x42cd('0x191')});db[_0x42cd('0x5f')][_0x42cd('0x123')](db[_0x42cd('0xf0')],{'as':_0x42cd('0xf0'),'foreignKey':_0x42cd('0x186')});db[_0x42cd('0x5f')][_0x42cd('0x123')](db[_0x42cd('0x145')],{'as':_0x42cd('0x17c'),'foreignKey':'OpenchannelAccountId'});db[_0x42cd('0x60')][_0x42cd('0x125')](db[_0x42cd('0x11')],{'as':_0x42cd('0x15f'),'through':_0x42cd('0x13b'),'foreignKey':'OpenchannelQueueId'});db['OpenchannelQueue'][_0x42cd('0x125')](db['Team'],{'through':_0x42cd('0x192'),'as':_0x42cd('0x160')});db['ChatWebsite'][_0x42cd('0x11a')](db[_0x42cd('0x83')],{'as':_0x42cd('0x16b'),'foreignKey':_0x42cd('0x17d'),'onDelete':_0x42cd('0x117')});db[_0x42cd('0x13d')]['hasMany'](db['CannedAnswer'],{'as':_0x42cd('0x16c'),'foreignKey':_0x42cd('0x17d')});db[_0x42cd('0x13d')][_0x42cd('0x11a')](db[_0x42cd('0x6d')],{'as':_0x42cd('0x193')});db[_0x42cd('0x13d')][_0x42cd('0x11a')](db['ChatInteraction'],{'as':_0x42cd('0x16d')});db[_0x42cd('0x13d')]['hasMany'](db[_0x42cd('0x64')],{'as':_0x42cd('0x150')});db[_0x42cd('0x13d')]['hasMany'](db[_0x42cd('0x68')],{'as':_0x42cd('0x161')});db[_0x42cd('0x13d')][_0x42cd('0x123')](db[_0x42cd('0xfe')],{'as':_0x42cd('0x16e'),'foreignKey':_0x42cd('0x16f')});db['ChatWebsite']['belongsTo'](db[_0x42cd('0x86')],{'as':_0x42cd('0x86'),'foreignKey':_0x42cd('0x15c')});db[_0x42cd('0x13d')][_0x42cd('0x123')](db['MailAccount'],{'as':_0x42cd('0x142'),'foreignKey':_0x42cd('0x168')});db[_0x42cd('0x13d')][_0x42cd('0x123')](db[_0x42cd('0x88')],{'as':'mandatoryDispositionPause','foreignKey':_0x42cd('0x171')});db[_0x42cd('0x13d')]['belongsToMany'](db[_0x42cd('0x11')],{'as':_0x42cd('0x15f'),'through':_0x42cd('0x13f')});db['OpenchannelQueueReport'][_0x42cd('0x123')](db[_0x42cd('0x145')],{});db[_0x42cd('0x62')][_0x42cd('0x123')](db['CmList'],{'as':_0x42cd('0x16e'),'foreignKey':_0x42cd('0x16f')});db[_0x42cd('0x62')][_0x42cd('0x123')](db[_0x42cd('0x71')],{'as':_0x42cd('0x165'),'foreignKey':'ContactId'});db[_0x42cd('0x62')][_0x42cd('0x123')](db[_0x42cd('0x5d')],{});db[_0x42cd('0x62')][_0x42cd('0x123')](db[_0x42cd('0x5f')],{});db['OpenchannelQueueReport'][_0x42cd('0x123')](db[_0x42cd('0x11')],{});db[_0x42cd('0x62')][_0x42cd('0x123')](db[_0x42cd('0x60')],{});db[_0x42cd('0x64')]['belongsTo'](db['User'],{'as':'Agent','foreignKey':'UserId','onDelete':_0x42cd('0x167')});db[_0x42cd('0x64')]['belongsTo'](db[_0x42cd('0x137')],{'as':'Queue','foreignKey':'ChatQueueId','onDelete':_0x42cd('0x167')});db[_0x42cd('0x64')][_0x42cd('0x123')](db[_0x42cd('0x13d')],{'as':'Website','foreignKey':_0x42cd('0x17d'),'onDelete':_0x42cd('0x167')});db['ChatApplication']['belongsTo'](db[_0x42cd('0x8f')],{'onDelete':_0x42cd('0x167'),'foreignKey':_0x42cd('0x180')});db[_0x42cd('0x66')][_0x42cd('0x11a')](db[_0x42cd('0x68')],{'as':_0x42cd('0x161'),'onDelete':_0x42cd('0x117'),'foreignKey':_0x42cd('0x194')});db[_0x42cd('0x66')][_0x42cd('0x123')](db['ChatWebsite'],{'as':'Account','foreignKey':'ChatWebsiteId'});db[_0x42cd('0x66')][_0x42cd('0x123')](db['CmContact'],{'as':_0x42cd('0x165'),'foreignKey':_0x42cd('0x174')});db[_0x42cd('0x66')][_0x42cd('0x123')](db['User'],{'as':_0x42cd('0x175'),'foreignKey':'UserId'});db[_0x42cd('0x66')][_0x42cd('0x125')](db['Tag'],{'through':'chat_interaction_has_tags','as':_0x42cd('0x177')});db['ChatInteraction'][_0x42cd('0x125')](db[_0x42cd('0x8f')],{'through':'chat_interaction_has_tags','as':_0x42cd('0x178')});db[_0x42cd('0x66')][_0x42cd('0x125')](db[_0x42cd('0x11')],{'as':_0x42cd('0x179'),'through':'user_has_chat_interactions','foreignKey':_0x42cd('0x194')});db[_0x42cd('0x68')]['belongsTo'](db[_0x42cd('0x11')],{'onDelete':_0x42cd('0x117'),'as':_0x42cd('0x11')});db[_0x42cd('0x68')][_0x42cd('0x123')](db[_0x42cd('0x71')],{'onDelete':_0x42cd('0x117'),'as':_0x42cd('0x165'),'foreignKey':'ContactId'});db[_0x42cd('0x68')][_0x42cd('0x123')](db[_0x42cd('0x66')],{'onDelete':_0x42cd('0x117'),'as':_0x42cd('0x17b'),'foreignKey':_0x42cd('0x194')});db[_0x42cd('0x68')][_0x42cd('0x123')](db['Attachment'],{'as':_0x42cd('0xf0'),'foreignKey':'AttachmentId'});db['ChatMessage'][_0x42cd('0x123')](db[_0x42cd('0x13d')],{'as':_0x42cd('0x17c'),'foreignKey':_0x42cd('0x17d')});db[_0x42cd('0x17e')][_0x42cd('0x11a')](db['Attachment'],{'as':_0x42cd('0x17a'),'foreignKey':'ChatOfflineMessageId','onDelete':_0x42cd('0x117'),'hooks':!![]});db[_0x42cd('0x17e')][_0x42cd('0x123')](db[_0x42cd('0x71')],{'onDelete':_0x42cd('0x117'),'as':_0x42cd('0x165'),'foreignKey':_0x42cd('0x174')});db[_0x42cd('0x17e')][_0x42cd('0x123')](db[_0x42cd('0x13d')],{'as':'Account','foreignKey':_0x42cd('0x17d')});db[_0x42cd('0x137')][_0x42cd('0x125')](db[_0x42cd('0x11')],{'as':'Agents','through':_0x42cd('0x2f'),'hooks':!![]});db[_0x42cd('0x137')][_0x42cd('0x125')](db['Team'],{'through':_0x42cd('0x195'),'as':_0x42cd('0x160')});db[_0x42cd('0x126')][_0x42cd('0x11a')](db[_0x42cd('0x196')],{'as':'Messages','foreignKey':_0x42cd('0x197'),'onDelete':'cascade'});db['ChatGroup']['belongsToMany'](db[_0x42cd('0x11')],{'as':_0x42cd('0x154'),'through':_0x42cd('0x128')});db['ChatProactiveAction'][_0x42cd('0x123')](db['ChatWebsite'],{'as':'Website','foreignKey':_0x42cd('0x17d')});db[_0x42cd('0x6f')]['hasMany'](db[_0x42cd('0x71')],{'as':'Contacts','foreignKey':_0x42cd('0x198')});db[_0x42cd('0x71')]['hasMany'](db[_0x42cd('0x92')],{'as':'Phones','foreignKey':'CmContactId'});db['CmContact'][_0x42cd('0x11a')](db['CmHopper'],{'as':_0x42cd('0x199'),'foreignKey':_0x42cd('0x174')});db[_0x42cd('0x71')][_0x42cd('0x11a')](db[_0x42cd('0x76')],{'as':_0x42cd('0x19a'),'foreignKey':_0x42cd('0x174')});db[_0x42cd('0x71')][_0x42cd('0x11a')](db['CmHopperHistory'],{'as':_0x42cd('0x156'),'foreignKey':_0x42cd('0x174')});db['CmContact']['hasMany'](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':_0x42cd('0x174')});db[_0x42cd('0x71')][_0x42cd('0x11a')](db[_0x42cd('0xda')],{'as':_0x42cd('0x19b'),'foreignKey':_0x42cd('0x174')});db[_0x42cd('0x71')][_0x42cd('0x11a')](db['OpenchannelInteraction'],{'as':_0x42cd('0x11e'),'foreignKey':_0x42cd('0x174'),'onDelete':'restrict'});db['CmContact'][_0x42cd('0x11a')](db[_0x42cd('0x66')],{'as':_0x42cd('0x11f'),'foreignKey':_0x42cd('0x174'),'onDelete':_0x42cd('0x167')});db[_0x42cd('0x71')]['hasMany'](db[_0x42cd('0x55')],{'as':_0x42cd('0x120'),'foreignKey':_0x42cd('0x174'),'onDelete':'restrict'});db[_0x42cd('0x71')][_0x42cd('0x11a')](db[_0x42cd('0x4d')],{'as':_0x42cd('0x121'),'foreignKey':_0x42cd('0x174'),'onDelete':_0x42cd('0x167')});db[_0x42cd('0x71')]['hasMany'](db[_0x42cd('0x3f')],{'as':'MailInteractions','foreignKey':_0x42cd('0x174'),'onDelete':_0x42cd('0x167')});db[_0x42cd('0x71')]['belongsTo'](db[_0x42cd('0x6f')],{'as':'Company','foreignKey':'CompanyId'});db[_0x42cd('0x71')]['belongsTo'](db['CmList'],{'as':_0x42cd('0x16e'),'foreignKey':_0x42cd('0x16f'),'onDelete':_0x42cd('0x117')});db[_0x42cd('0x71')][_0x42cd('0x125')](db[_0x42cd('0x11')],{'as':'Users','through':_0x42cd('0x19c')});db[_0x42cd('0x71')]['belongsToMany'](db[_0x42cd('0x8f')],{'as':_0x42cd('0x177'),'through':_0x42cd('0x19d')});db[_0x42cd('0x71')][_0x42cd('0x125')](db['Tag'],{'through':_0x42cd('0x19d'),'as':_0x42cd('0x178')});db[_0x42cd('0x73')][_0x42cd('0x11a')](db[_0x42cd('0x94')],{'as':_0x42cd('0x19e'),'foreignKey':_0x42cd('0x19f')});db[_0x42cd('0x73')][_0x42cd('0x123')](db[_0x42cd('0x71')],{'as':_0x42cd('0x165'),'foreignKey':'ContactId','onDelete':_0x42cd('0x117')});db[_0x42cd('0x73')][_0x42cd('0x123')](db[_0x42cd('0xfe')],{'as':_0x42cd('0x16e'),'foreignKey':_0x42cd('0x16f'),'onDelete':'cascade'});db[_0x42cd('0x73')][_0x42cd('0x123')](db['User'],{'as':_0x42cd('0x1a0'),'foreignKey':_0x42cd('0x118')});db[_0x42cd('0x73')][_0x42cd('0x123')](db['VoiceQueue'],{'as':_0x42cd('0x1a1'),'foreignKey':_0x42cd('0x155'),'onDelete':_0x42cd('0x117')});db[_0x42cd('0x73')][_0x42cd('0x123')](db[_0x42cd('0xed')],{'as':_0x42cd('0xed'),'foreignKey':_0x42cd('0x1a2'),'onDelete':_0x42cd('0x117')});db[_0x42cd('0x73')]['belongsTo'](db['User'],{'as':_0x42cd('0x175'),'foreignKey':_0x42cd('0x1a3')});db[_0x42cd('0x74')][_0x42cd('0x123')](db['CmContact'],{'as':_0x42cd('0x165'),'foreignKey':_0x42cd('0x174'),'onDelete':_0x42cd('0x117')});db[_0x42cd('0x74')][_0x42cd('0x123')](db[_0x42cd('0xfe')],{'as':_0x42cd('0x16e'),'foreignKey':_0x42cd('0x16f'),'onDelete':_0x42cd('0x117')});db['CmHopperBlack']['belongsTo'](db[_0x42cd('0x19')],{'as':_0x42cd('0x1a1'),'foreignKey':'VoiceQueueId','onDelete':_0x42cd('0x117')});db[_0x42cd('0x74')]['belongsTo'](db[_0x42cd('0xed')],{'as':_0x42cd('0xed'),'foreignKey':_0x42cd('0x1a2'),'onDelete':_0x42cd('0x117')});db[_0x42cd('0x7f')]['hasMany'](db['Condition'],{'as':{'plural':_0x42cd('0x1a4'),'singular':_0x42cd('0x1a5')},'foreignKey':'AutomationAllId','onDelete':'cascade','hooks':!![]});db['Automation'][_0x42cd('0x11a')](db[_0x42cd('0x85')],{'as':{'plural':_0x42cd('0x1a6'),'singular':_0x42cd('0x1a7')},'foreignKey':_0x42cd('0x1a8'),'onDelete':_0x42cd('0x117'),'hooks':!![]});db[_0x42cd('0x7f')][_0x42cd('0x11a')](db[_0x42cd('0x7e')],{'as':_0x42cd('0x1a9'),'foreignKey':_0x42cd('0x1aa'),'onDelete':_0x42cd('0x117'),'hooks':!![]});db['Disposition']['hasMany'](db['Disposition'],{'as':_0x42cd('0x16b'),'foreignKey':'ParentId','onDelete':_0x42cd('0x117')});db[_0x42cd('0x86')]['hasMany'](db[_0x42cd('0x86')],{'as':_0x42cd('0x1ab'),'foreignKey':_0x42cd('0x15c'),'onDelete':_0x42cd('0x117'),'hooks':!![],'required':![]});db[_0x42cd('0x86')][_0x42cd('0x11a')](db[_0x42cd('0x14c')],{'as':_0x42cd('0x11d'),'foreignKey':_0x42cd('0x15c'),'onDelete':'restrict'});db[_0x42cd('0x86')][_0x42cd('0x11a')](db[_0x42cd('0x43')],{'as':_0x42cd('0x1ac'),'foreignKey':_0x42cd('0x15c')});db[_0x42cd('0x86')][_0x42cd('0x11a')](db[_0x42cd('0x64')],{'as':_0x42cd('0x1ad'),'foreignKey':_0x42cd('0x15c')});db[_0x42cd('0x86')][_0x42cd('0x11a')](db[_0x42cd('0x4c')],{'as':'FaxApplications','foreignKey':_0x42cd('0x15c')});db[_0x42cd('0x86')]['hasMany'](db['SmsApplication'],{'as':_0x42cd('0x1ae'),'foreignKey':_0x42cd('0x15c')});db[_0x42cd('0x8c')]['belongsTo'](db['MailAccount'],{});db[_0x42cd('0x8c')][_0x42cd('0x123')](db[_0x42cd('0x1af')],{'foreignKey':_0x42cd('0x1b0')});db[_0x42cd('0x8c')][_0x42cd('0x123')](db['AnalyticCustomReport'],{'foreignKey':_0x42cd('0x1b1')});db['Sound'][_0x42cd('0x125')](db[_0x42cd('0x17')],{'as':'Mohs','through':_0x42cd('0x153'),'onDelete':_0x42cd('0x167')});db['Tag'][_0x42cd('0x125')](db['CmContact'],{'through':_0x42cd('0x19d')});db['Tag'][_0x42cd('0x125')](db[_0x42cd('0x66')],{'through':_0x42cd('0x1b2')});db['Tag']['belongsToMany'](db['MailInteraction'],{'through':_0x42cd('0x176')});db[_0x42cd('0x8f')]['belongsToMany'](db[_0x42cd('0x55')],{'through':_0x42cd('0x18c')});db['Tag']['belongsToMany'](db['FaxInteraction'],{'through':'fax_interaction_has_tags'});db[_0x42cd('0x8f')]['belongsToMany'](db[_0x42cd('0x5d')],{'through':'openchannel_interaction_has_tags'});db[_0x42cd('0x8f')][_0x42cd('0x125')](db['WhatsappInteraction'],{'through':_0x42cd('0x1b3')});db[_0x42cd('0x92')][_0x42cd('0x123')](db[_0x42cd('0x91')],{'as':_0x42cd('0x1b4'),'foreignKey':'ItemTypeId'});db[_0x42cd('0x94')]['belongsTo'](db[_0x42cd('0x73')],{'as':_0x42cd('0x1b5'),'foreignKey':'CmHopperId'});db[_0x42cd('0x92')][_0x42cd('0x123')](db[_0x42cd('0x71')],{'as':_0x42cd('0x165'),'foreignKey':_0x42cd('0x1b6')});db[_0x42cd('0x97')][_0x42cd('0x11a')](db['Condition'],{'as':{'plural':_0x42cd('0x1b7'),'singular':_0x42cd('0x1b8')},'foreignKey':_0x42cd('0x1b9'),'onDelete':'cascade','hooks':!![]});db[_0x42cd('0x97')]['hasMany'](db[_0x42cd('0x85')],{'as':{'plural':_0x42cd('0x1ba'),'singular':_0x42cd('0x1bb')},'foreignKey':_0x42cd('0x1bc'),'onDelete':_0x42cd('0x117'),'hooks':!![]});db[_0x42cd('0x97')][_0x42cd('0x11a')](db[_0x42cd('0x7e')],{'as':'Actions','foreignKey':_0x42cd('0x1bd'),'onDelete':_0x42cd('0x117'),'hooks':!![]});db[_0x42cd('0x1be')][_0x42cd('0x11a')](db[_0x42cd('0x1bf')],{'as':_0x42cd('0x1c0'),'onDelete':'cascade','foreignKey':_0x42cd('0x1b1'),'hooks':!![]});db[_0x42cd('0x1af')][_0x42cd('0x11a')](db[_0x42cd('0x1bf')],{'as':_0x42cd('0x1c0'),'onDelete':_0x42cd('0x117'),'foreignKey':_0x42cd('0x1b0')});db[_0x42cd('0xa1')][_0x42cd('0x11a')](db['AnalyticFieldReport'],{'as':_0x42cd('0x1c0'),'onDelete':_0x42cd('0x117'),'foreignKey':'MetricId'});db[_0x42cd('0x1bf')][_0x42cd('0x123')](db[_0x42cd('0xa1')],{'foreignKey':'MetricId'});db[_0x42cd('0xa5')][_0x42cd('0x11a')](db[_0x42cd('0x1c1')],{'as':'Configurations','onDelete':_0x42cd('0x117'),'foreignKey':_0x42cd('0x1c2')});db[_0x42cd('0x1c1')][_0x42cd('0x11a')](db['SalesforceField'],{'as':_0x42cd('0x1c3'),'onDelete':_0x42cd('0x117'),'foreignKey':'SubjectId'});db[_0x42cd('0x1c1')][_0x42cd('0x11a')](db['SalesforceField'],{'as':_0x42cd('0x1c4'),'onDelete':_0x42cd('0x117'),'foreignKey':_0x42cd('0x1c5')});db[_0x42cd('0x1c1')]['hasMany'](db['SalesforceField'],{'as':_0x42cd('0x1c0'),'onDelete':_0x42cd('0x117'),'foreignKey':_0x42cd('0x1c6')});db[_0x42cd('0x1c1')][_0x42cd('0x123')](db['SalesforceAccount'],{'as':_0x42cd('0x17c'),'foreignKey':'AccountId'});db[_0x42cd('0xa7')]['hasMany'](db[_0x42cd('0xa7')],{'as':_0x42cd('0x1c7'),'foreignKey':'SubjectId'});db[_0x42cd('0xa7')][_0x42cd('0x11a')](db['SalesforceField'],{'as':_0x42cd('0x1c8'),'foreignKey':'DescriptionId'});db['SalesforceField'][_0x42cd('0x11a')](db[_0x42cd('0xa7')],{'as':_0x42cd('0x1c9'),'foreignKey':_0x42cd('0x1c6')});db[_0x42cd('0xa7')][_0x42cd('0x123')](db[_0x42cd('0x1ca')],{'as':_0x42cd('0x1ca'),'foreignKey':'VariableId'});db[_0x42cd('0xa8')][_0x42cd('0x11a')](db['SugarcrmConfiguration'],{'as':_0x42cd('0x1cb'),'onDelete':'cascade','foreignKey':'AccountId'});db[_0x42cd('0x1cc')][_0x42cd('0x11a')](db[_0x42cd('0xaa')],{'as':_0x42cd('0x1c3'),'onDelete':_0x42cd('0x117'),'foreignKey':'SubjectId'});db['SugarcrmConfiguration']['hasMany'](db[_0x42cd('0xaa')],{'as':_0x42cd('0x1c4'),'onDelete':_0x42cd('0x117'),'foreignKey':_0x42cd('0x1c5')});db['SugarcrmConfiguration']['hasMany'](db[_0x42cd('0xaa')],{'as':_0x42cd('0x1c0'),'onDelete':_0x42cd('0x117'),'foreignKey':_0x42cd('0x1c6')});db['SugarcrmConfiguration']['belongsTo'](db[_0x42cd('0xa8')],{'as':_0x42cd('0x17c'),'foreignKey':_0x42cd('0x1c2')});db['SugarcrmField'][_0x42cd('0x11a')](db[_0x42cd('0xaa')],{'as':_0x42cd('0x1c7'),'foreignKey':_0x42cd('0x1cd')});db[_0x42cd('0xaa')][_0x42cd('0x11a')](db['SugarcrmField'],{'as':'Description','foreignKey':_0x42cd('0x1c5')});db[_0x42cd('0xaa')][_0x42cd('0x11a')](db[_0x42cd('0xaa')],{'as':_0x42cd('0x1c9'),'foreignKey':_0x42cd('0x1c6')});db[_0x42cd('0xaa')]['belongsTo'](db['Variable'],{'as':'Variable','foreignKey':_0x42cd('0x1ce')});db[_0x42cd('0x1cf')][_0x42cd('0x11a')](db[_0x42cd('0xad')],{'as':'Configurations','onDelete':'cascade','foreignKey':_0x42cd('0x1c2')});db[_0x42cd('0xad')]['hasMany'](db[_0x42cd('0xae')],{'as':_0x42cd('0x1c3'),'onDelete':_0x42cd('0x117'),'foreignKey':'SubjectId'});db[_0x42cd('0xad')][_0x42cd('0x11a')](db[_0x42cd('0xae')],{'as':_0x42cd('0x1c4'),'onDelete':_0x42cd('0x117'),'foreignKey':'DescriptionId'});db[_0x42cd('0xad')]['hasMany'](db[_0x42cd('0xae')],{'as':_0x42cd('0x1c0'),'onDelete':_0x42cd('0x117'),'foreignKey':'FieldId'});db[_0x42cd('0xad')][_0x42cd('0x123')](db[_0x42cd('0x1cf')],{'as':_0x42cd('0x17c'),'foreignKey':_0x42cd('0x1c2')});db['DeskConfiguration'][_0x42cd('0x125')](db[_0x42cd('0x8f')],{'through':_0x42cd('0x1d0')});db[_0x42cd('0xae')]['hasMany'](db['DeskField'],{'as':'Subject','foreignKey':_0x42cd('0x1cd')});db[_0x42cd('0xae')]['hasMany'](db['DeskField'],{'as':_0x42cd('0x1c8'),'foreignKey':_0x42cd('0x1c5')});db[_0x42cd('0xae')][_0x42cd('0x11a')](db['DeskField'],{'as':_0x42cd('0x1c9'),'foreignKey':'FieldId'});db[_0x42cd('0xae')][_0x42cd('0x123')](db[_0x42cd('0x1ca')],{'as':_0x42cd('0x1ca'),'foreignKey':'VariableId'});db['ZohoAccount']['hasMany'](db[_0x42cd('0xb2')],{'as':'Configurations','onDelete':_0x42cd('0x117'),'foreignKey':_0x42cd('0x1c2')});db['ZohoConfiguration'][_0x42cd('0x11a')](db[_0x42cd('0xb4')],{'as':_0x42cd('0x1c3'),'onDelete':_0x42cd('0x117'),'foreignKey':'SubjectId'});db[_0x42cd('0xb2')]['hasMany'](db[_0x42cd('0xb4')],{'as':_0x42cd('0x1c4'),'onDelete':_0x42cd('0x117'),'foreignKey':_0x42cd('0x1c5')});db[_0x42cd('0xb2')]['hasMany'](db['ZohoField'],{'as':_0x42cd('0x1c0'),'onDelete':_0x42cd('0x117'),'foreignKey':'FieldId'});db[_0x42cd('0xb2')][_0x42cd('0x123')](db[_0x42cd('0xb0')],{'as':_0x42cd('0x17c'),'foreignKey':_0x42cd('0x1c2')});db[_0x42cd('0xb4')][_0x42cd('0x11a')](db[_0x42cd('0xb4')],{'as':_0x42cd('0x1c7'),'foreignKey':'SubjectId'});db['ZohoField'][_0x42cd('0x11a')](db[_0x42cd('0xb4')],{'as':_0x42cd('0x1c8'),'foreignKey':_0x42cd('0x1c5')});db[_0x42cd('0xb4')][_0x42cd('0x11a')](db[_0x42cd('0xb4')],{'as':'Field','foreignKey':_0x42cd('0x1c6')});db[_0x42cd('0xb4')][_0x42cd('0x123')](db['Variable'],{'as':'Variable','foreignKey':_0x42cd('0x1ce')});db[_0x42cd('0xb6')]['hasMany'](db[_0x42cd('0xb8')],{'as':_0x42cd('0x1cb'),'onDelete':_0x42cd('0x117'),'foreignKey':_0x42cd('0x1c2')});db['ZendeskConfiguration'][_0x42cd('0x11a')](db[_0x42cd('0x1d1')],{'as':_0x42cd('0x1c3'),'foreignKey':_0x42cd('0x1cd')});db[_0x42cd('0xb8')]['hasMany'](db['ZendeskField'],{'as':_0x42cd('0x1c4'),'foreignKey':_0x42cd('0x1c5')});db[_0x42cd('0xb8')][_0x42cd('0x11a')](db['ZendeskField'],{'as':'Fields','foreignKey':_0x42cd('0x1c6')});db[_0x42cd('0xb8')][_0x42cd('0x123')](db['ZendeskAccount'],{'as':_0x42cd('0x17c'),'foreignKey':_0x42cd('0x1c2')});db[_0x42cd('0xb8')][_0x42cd('0x125')](db['Tag'],{'through':_0x42cd('0x1d2')});db['ZendeskField'][_0x42cd('0x11a')](db[_0x42cd('0x1d1')],{'as':_0x42cd('0x1c7'),'foreignKey':_0x42cd('0x1cd')});db['ZendeskField'][_0x42cd('0x11a')](db[_0x42cd('0x1d1')],{'as':_0x42cd('0x1c8'),'foreignKey':_0x42cd('0x1c5')});db[_0x42cd('0x1d1')]['hasMany'](db[_0x42cd('0x1d1')],{'as':_0x42cd('0x1c9'),'foreignKey':'FieldId'});db[_0x42cd('0x1d1')][_0x42cd('0x123')](db[_0x42cd('0x1ca')],{'as':_0x42cd('0x1ca'),'foreignKey':_0x42cd('0x1ce')});db[_0x42cd('0xbb')][_0x42cd('0x11a')](db[_0x42cd('0xbd')],{'as':_0x42cd('0x1cb'),'onDelete':'cascade','foreignKey':'AccountId'});db[_0x42cd('0xbd')][_0x42cd('0x11a')](db[_0x42cd('0xbf')],{'as':_0x42cd('0x1c3'),'onDelete':_0x42cd('0x117'),'foreignKey':'SubjectId'});db[_0x42cd('0xbd')]['hasMany'](db[_0x42cd('0xbf')],{'as':_0x42cd('0x1c4'),'onDelete':_0x42cd('0x117'),'foreignKey':_0x42cd('0x1c5')});db['FreshdeskConfiguration']['hasMany'](db[_0x42cd('0xbf')],{'as':_0x42cd('0x1c0'),'onDelete':_0x42cd('0x117'),'foreignKey':_0x42cd('0x1c6')});db[_0x42cd('0xbd')][_0x42cd('0x123')](db[_0x42cd('0xbb')],{'as':_0x42cd('0x17c'),'foreignKey':_0x42cd('0x1c2')});db['FreshdeskConfiguration']['belongsToMany'](db[_0x42cd('0x8f')],{'through':_0x42cd('0x1d3')});db[_0x42cd('0xbf')]['hasMany'](db[_0x42cd('0xbf')],{'as':_0x42cd('0x1c7'),'foreignKey':_0x42cd('0x1cd')});db[_0x42cd('0xbf')][_0x42cd('0x11a')](db[_0x42cd('0xbf')],{'as':_0x42cd('0x1c8'),'foreignKey':'DescriptionId'});db[_0x42cd('0xbf')][_0x42cd('0x11a')](db[_0x42cd('0xbf')],{'as':_0x42cd('0x1c9'),'foreignKey':'FieldId'});db[_0x42cd('0xbf')][_0x42cd('0x123')](db[_0x42cd('0x1ca')],{'as':_0x42cd('0x1ca'),'foreignKey':_0x42cd('0x1ce')});db[_0x42cd('0xc1')][_0x42cd('0x11a')](db[_0x42cd('0xc3')],{'as':_0x42cd('0x1cb'),'onDelete':_0x42cd('0x117'),'foreignKey':_0x42cd('0x1c2')});db[_0x42cd('0xc3')][_0x42cd('0x11a')](db['VtigerField'],{'as':'Subjects','foreignKey':'SubjectId'});db[_0x42cd('0xc3')][_0x42cd('0x11a')](db['VtigerField'],{'as':'Descriptions','foreignKey':_0x42cd('0x1c5')});db[_0x42cd('0xc3')][_0x42cd('0x11a')](db[_0x42cd('0xc5')],{'as':_0x42cd('0x1c0'),'foreignKey':'FieldId'});db[_0x42cd('0xc3')][_0x42cd('0x123')](db[_0x42cd('0xc1')],{'as':_0x42cd('0x17c'),'foreignKey':_0x42cd('0x1c2')});db[_0x42cd('0xc5')][_0x42cd('0x11a')](db[_0x42cd('0xc5')],{'as':'Subject','foreignKey':_0x42cd('0x1cd')});db[_0x42cd('0xc5')][_0x42cd('0x11a')](db[_0x42cd('0xc5')],{'as':_0x42cd('0x1c8'),'foreignKey':'DescriptionId'});db[_0x42cd('0xc5')][_0x42cd('0x11a')](db[_0x42cd('0xc5')],{'as':_0x42cd('0x1c9'),'foreignKey':'FieldId'});db[_0x42cd('0xc5')][_0x42cd('0x123')](db['Variable'],{'as':_0x42cd('0x1ca'),'foreignKey':_0x42cd('0x1ce')});db[_0x42cd('0xc7')][_0x42cd('0x11a')](db[_0x42cd('0xc8')],{'as':_0x42cd('0x1cb'),'onDelete':_0x42cd('0x117'),'foreignKey':_0x42cd('0x1c2')});db[_0x42cd('0xc8')]['hasMany'](db[_0x42cd('0xca')],{'as':_0x42cd('0x1c3'),'foreignKey':'SubjectId'});db['ServicenowConfiguration'][_0x42cd('0x11a')](db['ServicenowField'],{'as':'Descriptions','foreignKey':_0x42cd('0x1c5')});db[_0x42cd('0xc8')][_0x42cd('0x11a')](db['ServicenowField'],{'as':_0x42cd('0x1c0'),'foreignKey':_0x42cd('0x1c6')});db[_0x42cd('0xc8')]['belongsTo'](db[_0x42cd('0xc7')],{'as':_0x42cd('0x17c'),'foreignKey':_0x42cd('0x1c2')});db[_0x42cd('0xca')][_0x42cd('0x11a')](db[_0x42cd('0xca')],{'as':'Subject','foreignKey':_0x42cd('0x1cd')});db[_0x42cd('0xca')]['hasMany'](db[_0x42cd('0xca')],{'as':_0x42cd('0x1c8'),'foreignKey':'DescriptionId'});db[_0x42cd('0xca')][_0x42cd('0x11a')](db[_0x42cd('0xca')],{'as':_0x42cd('0x1c9'),'foreignKey':_0x42cd('0x1c6')});db[_0x42cd('0xca')]['belongsTo'](db[_0x42cd('0x1ca')],{'as':_0x42cd('0x1ca'),'foreignKey':_0x42cd('0x1ce')});db[_0x42cd('0xcc')][_0x42cd('0x11a')](db['Dynamics365Configuration'],{'as':_0x42cd('0x1cb'),'onDelete':_0x42cd('0x117'),'foreignKey':_0x42cd('0x1c2')});db[_0x42cd('0xcc')][_0x42cd('0x123')](db[_0x42cd('0x10e')],{'as':_0x42cd('0x10e'),'foreignKey':'CloudProviderId'});db['Dynamics365Configuration'][_0x42cd('0x11a')](db[_0x42cd('0xce')],{'as':_0x42cd('0x1c3'),'onDelete':_0x42cd('0x117'),'foreignKey':_0x42cd('0x1cd')});db[_0x42cd('0x1d4')]['hasMany'](db[_0x42cd('0xce')],{'as':_0x42cd('0x1c4'),'onDelete':_0x42cd('0x117'),'foreignKey':_0x42cd('0x1c5')});db['Dynamics365Configuration'][_0x42cd('0x11a')](db[_0x42cd('0xce')],{'as':_0x42cd('0x1c0'),'onDelete':_0x42cd('0x117'),'foreignKey':_0x42cd('0x1c6')});db[_0x42cd('0x1d4')]['belongsTo'](db[_0x42cd('0xcc')],{'as':_0x42cd('0x17c'),'foreignKey':_0x42cd('0x1c2')});db[_0x42cd('0xce')][_0x42cd('0x11a')](db[_0x42cd('0xce')],{'as':_0x42cd('0x1c7'),'foreignKey':'SubjectId'});db[_0x42cd('0xce')][_0x42cd('0x11a')](db[_0x42cd('0xce')],{'as':'Description','foreignKey':_0x42cd('0x1c5')});db[_0x42cd('0xce')]['hasMany'](db[_0x42cd('0xce')],{'as':_0x42cd('0x1c9'),'foreignKey':_0x42cd('0x1c6')});db[_0x42cd('0xce')][_0x42cd('0x123')](db[_0x42cd('0x1ca')],{'as':_0x42cd('0x1ca'),'foreignKey':_0x42cd('0x1ce')});db[_0x42cd('0xd0')][_0x42cd('0x11a')](db[_0x42cd('0xd1')],{'as':_0x42cd('0x1cb'),'onDelete':_0x42cd('0x117'),'foreignKey':'AccountId'});db[_0x42cd('0xd1')][_0x42cd('0x11a')](db[_0x42cd('0x1d5')],{'as':_0x42cd('0x1c3'),'foreignKey':_0x42cd('0x1cd')});db[_0x42cd('0xd1')]['hasMany'](db['FreshsalesField'],{'as':'Descriptions','foreignKey':_0x42cd('0x1c5')});db['FreshsalesConfiguration'][_0x42cd('0x11a')](db[_0x42cd('0x1d5')],{'as':_0x42cd('0x1c0'),'foreignKey':_0x42cd('0x1c6')});db['FreshsalesConfiguration']['belongsTo'](db[_0x42cd('0xd0')],{'as':_0x42cd('0x17c'),'foreignKey':_0x42cd('0x1c2')});db[_0x42cd('0x1d5')]['hasMany'](db[_0x42cd('0x1d5')],{'as':'Subject','foreignKey':_0x42cd('0x1cd')});db['FreshsalesField'][_0x42cd('0x11a')](db[_0x42cd('0x1d5')],{'as':_0x42cd('0x1c8'),'foreignKey':_0x42cd('0x1c5')});db['FreshsalesField']['hasMany'](db['FreshsalesField'],{'as':_0x42cd('0x1c9'),'foreignKey':'FieldId'});db[_0x42cd('0x1d5')]['belongsTo'](db[_0x42cd('0x1ca')],{'as':_0x42cd('0x1ca'),'foreignKey':_0x42cd('0x1ce')});db[_0x42cd('0x1d6')][_0x42cd('0x123')](db[_0x42cd('0x13d')],{});db[_0x42cd('0x1d6')][_0x42cd('0x123')](db['CmList'],{'as':_0x42cd('0x16e'),'foreignKey':_0x42cd('0x16f')});db['ChatQueueReport'][_0x42cd('0x123')](db['CmContact'],{'as':_0x42cd('0x165'),'foreignKey':'ContactId'});db[_0x42cd('0x1d6')][_0x42cd('0x123')](db[_0x42cd('0x66')],{});db[_0x42cd('0x1d6')][_0x42cd('0x123')](db['ChatMessage'],{});db['ChatQueueReport'][_0x42cd('0x123')](db['User'],{});db['ChatQueueReport']['belongsTo'](db[_0x42cd('0x137')],{});db[_0x42cd('0x196')][_0x42cd('0x123')](db[_0x42cd('0x11')],{'onDelete':_0x42cd('0x117'),'foreignKey':_0x42cd('0x1d7')});db['ChatInternalMessage'][_0x42cd('0x123')](db['User'],{'onDelete':_0x42cd('0x117'),'foreignKey':_0x42cd('0x1d8')});db['JscriptySessionReport']['hasMany'](db[_0x42cd('0x1d9')],{'foreignKey':_0x42cd('0x1da'),'onDelete':_0x42cd('0x117')});db[_0x42cd('0xda')][_0x42cd('0x11a')](db[_0x42cd('0xd8')],{'foreignKey':_0x42cd('0x1da'),'onDelete':_0x42cd('0x117')});db[_0x42cd('0xdc')][_0x42cd('0x123')](db['SmsAccount'],{});db['SmsQueueReport'][_0x42cd('0x123')](db[_0x42cd('0xfe')],{'as':_0x42cd('0x16e'),'foreignKey':'ListId'});db[_0x42cd('0xdc')][_0x42cd('0x123')](db['CmContact'],{'as':_0x42cd('0x165'),'foreignKey':_0x42cd('0x174')});db[_0x42cd('0xdc')][_0x42cd('0x123')](db['SmsInteraction'],{});db[_0x42cd('0xdc')][_0x42cd('0x123')](db['SmsMessage'],{});db[_0x42cd('0xdc')][_0x42cd('0x123')](db[_0x42cd('0x11')],{});db[_0x42cd('0xdc')][_0x42cd('0x123')](db[_0x42cd('0x59')],{});db[_0x42cd('0xe1')][_0x42cd('0x11a')](db[_0x42cd('0xda')],{'foreignKey':_0x42cd('0x1db')});db[_0x42cd('0xe1')][_0x42cd('0x11a')](db[_0x42cd('0x1d9')],{'foreignKey':'ProjectId'});db['JscriptyProject'][_0x42cd('0x11a')](db['JscriptyAnswerReport'],{'foreignKey':_0x42cd('0x1db')});db['SquareProject'][_0x42cd('0x125')](db[_0x42cd('0x11')],{'as':_0x42cd('0x179'),'through':_0x42cd('0x14b')});db[_0x42cd('0xec')][_0x42cd('0x125')](db[_0x42cd('0x11')],{'as':_0x42cd('0x15f'),'through':_0x42cd('0x12c')});db[_0x42cd('0xec')]['belongsToMany'](db[_0x42cd('0x19')],{'through':_0x42cd('0x110'),'as':_0x42cd('0x134')});db[_0x42cd('0xec')][_0x42cd('0x125')](db[_0x42cd('0x3b')],{'through':_0x42cd('0x172'),'as':_0x42cd('0x1dc')});db[_0x42cd('0xec')]['belongsToMany'](db['ChatQueue'],{'through':'team_has_chat_queues','as':'ChatQueues'});db['Team'][_0x42cd('0x125')](db[_0x42cd('0x139')],{'through':_0x42cd('0x188'),'as':_0x42cd('0x1dd')});db[_0x42cd('0xec')][_0x42cd('0x125')](db[_0x42cd('0x59')],{'through':_0x42cd('0x1de'),'as':_0x42cd('0x1df')});db['Team'][_0x42cd('0x125')](db[_0x42cd('0x60')],{'through':_0x42cd('0x192'),'as':_0x42cd('0x13a')});db[_0x42cd('0xec')]['belongsToMany'](db[_0x42cd('0x10d')],{'through':_0x42cd('0x1e0'),'as':_0x42cd('0x13c')});db[_0x42cd('0xec')][_0x42cd('0x125')](db['VoicePrefix'],{'through':_0x42cd('0x111'),'as':_0x42cd('0x135')});db['Campaign']['hasMany'](db[_0x42cd('0x73')],{'as':'Hoppers','foreignKey':_0x42cd('0x1a2')});db[_0x42cd('0xed')][_0x42cd('0x11a')](db[_0x42cd('0x76')],{'as':_0x42cd('0x19a'),'foreignKey':_0x42cd('0x1a2')});db['Campaign']['hasMany'](db[_0x42cd('0x78')],{'as':_0x42cd('0x156'),'foreignKey':'CampaignId'});db['Campaign'][_0x42cd('0x11a')](db[_0x42cd('0x74')],{'as':_0x42cd('0x157'),'foreignKey':'CampaignId'});db['Campaign'][_0x42cd('0x123')](db[_0x42cd('0x158')],{'as':_0x42cd('0x158'),'foreignKey':_0x42cd('0x159')});db[_0x42cd('0xed')][_0x42cd('0x123')](db[_0x42cd('0x158')],{'as':_0x42cd('0x15a'),'foreignKey':'TrunkBackupId'});db[_0x42cd('0xed')]['belongsTo'](db[_0x42cd('0x86')],{'as':_0x42cd('0x86'),'foreignKey':_0x42cd('0x15c')});db['Campaign'][_0x42cd('0x123')](db[_0x42cd('0xe6')],{'as':'SquareProject','foreignKey':_0x42cd('0x1e1')});db[_0x42cd('0xed')]['belongsToMany'](db['CmList'],{'as':_0x42cd('0x12a'),'through':'campaigns_has_cm_lists'});db['Campaign'][_0x42cd('0x125')](db[_0x42cd('0xfe')],{'as':_0x42cd('0x1e2'),'through':_0x42cd('0x1e3')});db[_0x42cd('0xf0')][_0x42cd('0x123')](db[_0x42cd('0x17e')],{'as':_0x42cd('0x17e'),'foreignKey':_0x42cd('0x17f')});db[_0x42cd('0xf4')][_0x42cd('0x123')](db[_0x42cd('0x41')],{});db['MailTransferReport'][_0x42cd('0x123')](db['MailInteraction'],{});db[_0x42cd('0xf4')][_0x42cd('0x123')](db[_0x42cd('0x142')],{'foreignKey':_0x42cd('0x1e4'),'as':'FromAccount'});db[_0x42cd('0xf4')][_0x42cd('0x123')](db[_0x42cd('0x11')],{'foreignKey':_0x42cd('0x1e5'),'as':_0x42cd('0x1e6')});db['MailTransferReport'][_0x42cd('0x123')](db[_0x42cd('0x11')],{'foreignKey':'ToUserId','as':'ToAgent'});db[_0x42cd('0xf4')]['belongsTo'](db[_0x42cd('0x3b')],{'foreignKey':_0x42cd('0x1e7'),'as':'ToQueue'});db['MailTransferReport'][_0x42cd('0x123')](db[_0x42cd('0x142')],{'foreignKey':_0x42cd('0x1e8'),'as':_0x42cd('0x1e9')});db[_0x42cd('0xf6')][_0x42cd('0x123')](db[_0x42cd('0x68')],{});db[_0x42cd('0xf6')][_0x42cd('0x123')](db[_0x42cd('0x66')],{});db[_0x42cd('0xf6')]['belongsTo'](db[_0x42cd('0x13d')],{'foreignKey':_0x42cd('0x1ea'),'as':_0x42cd('0x1eb')});db['ChatTransferReport']['belongsTo'](db[_0x42cd('0x11')],{'foreignKey':'FromUserId','as':_0x42cd('0x1e6')});db['ChatTransferReport'][_0x42cd('0x123')](db[_0x42cd('0x11')],{'foreignKey':_0x42cd('0x1ec'),'as':_0x42cd('0x1ed')});db['ChatTransferReport'][_0x42cd('0x123')](db[_0x42cd('0x137')],{'foreignKey':_0x42cd('0x1ee'),'as':'ToQueue'});db[_0x42cd('0xf6')][_0x42cd('0x123')](db[_0x42cd('0x13d')],{'foreignKey':_0x42cd('0x1ef'),'as':'ToAccount'});db['FaxTransferReport'][_0x42cd('0x123')](db[_0x42cd('0x4e')],{});db['FaxTransferReport']['belongsTo'](db[_0x42cd('0x4d')],{});db[_0x42cd('0xf8')]['belongsTo'](db[_0x42cd('0x4a')],{'foreignKey':_0x42cd('0x1f0'),'as':'FromAccount'});db[_0x42cd('0xf8')][_0x42cd('0x123')](db[_0x42cd('0x11')],{'foreignKey':_0x42cd('0x1e5'),'as':_0x42cd('0x1e6')});db[_0x42cd('0xf8')][_0x42cd('0x123')](db['User'],{'foreignKey':_0x42cd('0x1ec'),'as':_0x42cd('0x1ed')});db['FaxTransferReport'][_0x42cd('0x123')](db[_0x42cd('0x139')],{'foreignKey':_0x42cd('0x1f1'),'as':_0x42cd('0x1f2')});db[_0x42cd('0xf8')][_0x42cd('0x123')](db[_0x42cd('0x4a')],{'foreignKey':'ToFaxAccountId','as':_0x42cd('0x1e9')});db[_0x42cd('0xfa')]['belongsTo'](db[_0x42cd('0x5f')],{});db['OpenchannelTransferReport'][_0x42cd('0x123')](db['OpenchannelInteraction'],{});db[_0x42cd('0xfa')][_0x42cd('0x123')](db['OpenchannelAccount'],{'foreignKey':'FromOpenchannelAccountId','as':_0x42cd('0x1eb')});db[_0x42cd('0xfa')][_0x42cd('0x123')](db[_0x42cd('0x11')],{'foreignKey':_0x42cd('0x1e5'),'as':_0x42cd('0x1e6')});db['OpenchannelTransferReport'][_0x42cd('0x123')](db['User'],{'foreignKey':_0x42cd('0x1ec'),'as':_0x42cd('0x1ed')});db[_0x42cd('0xfa')][_0x42cd('0x123')](db['OpenchannelQueue'],{'foreignKey':'ToOpenchannelQueueId','as':'ToQueue'});db[_0x42cd('0xfa')][_0x42cd('0x123')](db['OpenchannelAccount'],{'foreignKey':_0x42cd('0x1f3'),'as':'ToAccount'});db['SmsTransferReport'][_0x42cd('0x123')](db[_0x42cd('0x57')],{});db[_0x42cd('0xfc')][_0x42cd('0x123')](db[_0x42cd('0x55')],{});db[_0x42cd('0xfc')][_0x42cd('0x123')](db[_0x42cd('0x51')],{'foreignKey':_0x42cd('0x1f4'),'as':_0x42cd('0x1eb')});db[_0x42cd('0xfc')][_0x42cd('0x123')](db[_0x42cd('0x11')],{'foreignKey':_0x42cd('0x1e5'),'as':'FromAgent'});db[_0x42cd('0xfc')][_0x42cd('0x123')](db[_0x42cd('0x11')],{'foreignKey':'ToUserId','as':_0x42cd('0x1ed')});db[_0x42cd('0xfc')][_0x42cd('0x123')](db[_0x42cd('0x59')],{'foreignKey':_0x42cd('0x1f5'),'as':_0x42cd('0x1f2')});db[_0x42cd('0xfc')][_0x42cd('0x123')](db[_0x42cd('0x51')],{'foreignKey':_0x42cd('0x1f6'),'as':'ToAccount'});db[_0x42cd('0xfe')]['hasMany'](db[_0x42cd('0x83')],{'as':_0x42cd('0x16b'),'foreignKey':_0x42cd('0x16f'),'onDelete':_0x42cd('0x117')});db[_0x42cd('0xfe')][_0x42cd('0x11a')](db['CmCustomField'],{'as':_0x42cd('0x1f7'),'foreignKey':_0x42cd('0x16f')});db['CmList'][_0x42cd('0x11a')](db[_0x42cd('0x71')],{'as':'Contacts','onDelete':_0x42cd('0x117'),'foreignKey':'ListId'});db[_0x42cd('0xfe')][_0x42cd('0x11a')](db['CmHopperFinal'],{'as':_0x42cd('0x19a'),'foreignKey':_0x42cd('0x16f')});db[_0x42cd('0xfe')]['hasMany'](db[_0x42cd('0x78')],{'as':'HopperHistory','foreignKey':_0x42cd('0x16f')});db[_0x42cd('0xfe')][_0x42cd('0x11a')](db['ReportAgentPreview'],{'as':_0x42cd('0x7a'),'foreignKey':_0x42cd('0x16f')});db[_0x42cd('0xfe')]['belongsToMany'](db['VoiceQueue'],{'as':_0x42cd('0x1f8'),'through':_0x42cd('0x15e')});db[_0x42cd('0xfe')][_0x42cd('0x125')](db[_0x42cd('0x11')],{'as':_0x42cd('0x15f'),'through':'cm_user_has_lists'});db[_0x42cd('0xff')]['hasMany'](db[_0x42cd('0x14c')],{'as':'Extensions','onDelete':'cascade'});db[_0x42cd('0xff')][_0x42cd('0x125')](db[_0x42cd('0x11')],{'as':_0x42cd('0x15f'),'through':_0x42cd('0x1f9')});db[_0x42cd('0xff')]['belongsToMany'](db['Team'],{'through':_0x42cd('0x111'),'as':_0x42cd('0x160')});db[_0x42cd('0x101')]['hasMany'](db[_0x42cd('0x11')],{'as':_0x42cd('0x179'),'foreignKey':_0x42cd('0x124')});db[_0x42cd('0x101')][_0x42cd('0x11a')](db[_0x42cd('0x1fa')],{'as':_0x42cd('0x1fb'),'foreignKey':_0x42cd('0x124'),'onDelete':'cascade'});db[_0x42cd('0x1fa')][_0x42cd('0x11a')](db['UserProfileResource'],{'as':'Resources','foreignKey':'sectionId','onDelete':_0x42cd('0x117')});db[_0x42cd('0x105')][_0x42cd('0x11a')](db['Disposition'],{'as':_0x42cd('0x16b'),'foreignKey':_0x42cd('0x1fc'),'onDelete':'cascade'});db['WhatsappAccount'][_0x42cd('0x11a')](db[_0x42cd('0x81')],{'as':_0x42cd('0x16c'),'foreignKey':_0x42cd('0x1fc')});db[_0x42cd('0x105')][_0x42cd('0x11a')](db[_0x42cd('0x1fd')],{'as':_0x42cd('0x161'),'foreignKey':_0x42cd('0x1fc')});db[_0x42cd('0x105')][_0x42cd('0x11a')](db['WhatsappInteraction'],{'as':_0x42cd('0x16d')});db[_0x42cd('0x105')][_0x42cd('0x11a')](db[_0x42cd('0x106')],{'as':_0x42cd('0x150')});db[_0x42cd('0x105')][_0x42cd('0x123')](db[_0x42cd('0xfe')],{'as':_0x42cd('0x16e'),'foreignKey':'ListId'});db[_0x42cd('0x105')][_0x42cd('0x123')](db[_0x42cd('0x88')],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db['WhatsappAccount'][_0x42cd('0x125')](db[_0x42cd('0x11')],{'as':_0x42cd('0x15f'),'through':_0x42cd('0x1fe')});db['WhatsappApplication'][_0x42cd('0x123')](db[_0x42cd('0x11')],{'onDelete':_0x42cd('0x167')});db[_0x42cd('0x106')][_0x42cd('0x123')](db['WhatsappQueue'],{'onDelete':'restrict'});db[_0x42cd('0x106')][_0x42cd('0x123')](db[_0x42cd('0x105')],{'onDelete':_0x42cd('0x167')});db[_0x42cd('0x106')][_0x42cd('0x123')](db[_0x42cd('0x86')],{'onDelete':_0x42cd('0x167'),'foreignKey':_0x42cd('0x15c')});db[_0x42cd('0x106')]['belongsTo'](db[_0x42cd('0x8f')],{'onDelete':'restrict','foreignKey':_0x42cd('0x180')});db[_0x42cd('0x132')][_0x42cd('0x11a')](db['WhatsappMessage'],{'as':_0x42cd('0x161'),'onDelete':_0x42cd('0x117'),'foreignKey':'WhatsappInteractionId'});db[_0x42cd('0x132')]['belongsTo'](db[_0x42cd('0x105')],{'as':'Account','foreignKey':_0x42cd('0x1fc')});db['WhatsappInteraction']['belongsTo'](db[_0x42cd('0x71')],{'as':_0x42cd('0x165'),'foreignKey':_0x42cd('0x174')});db[_0x42cd('0x132')][_0x42cd('0x123')](db[_0x42cd('0x11')],{'as':'Owner','foreignKey':_0x42cd('0x118')});db['WhatsappInteraction'][_0x42cd('0x125')](db[_0x42cd('0x8f')],{'through':_0x42cd('0x1b3'),'as':_0x42cd('0x177')});db[_0x42cd('0x132')][_0x42cd('0x125')](db[_0x42cd('0x8f')],{'through':'whatsapp_interaction_has_tags','as':'ThroughTags'});db['WhatsappInteraction'][_0x42cd('0x125')](db[_0x42cd('0x11')],{'as':_0x42cd('0x179'),'through':'user_has_whatsapp_interactions','foreignKey':'WhatsappInteractionId'});db['WhatsappMessage']['belongsTo'](db[_0x42cd('0x11')],{'as':_0x42cd('0x11')});db[_0x42cd('0x1fd')]['belongsTo'](db[_0x42cd('0x71')],{'onDelete':'cascade','as':_0x42cd('0x165')});db[_0x42cd('0x1fd')]['belongsTo'](db['WhatsappInteraction'],{'onDelete':_0x42cd('0x117'),'as':_0x42cd('0x17b'),'foreignKey':'WhatsappInteractionId'});db[_0x42cd('0x1fd')][_0x42cd('0x123')](db[_0x42cd('0x105')],{'as':_0x42cd('0x17c'),'foreignKey':'WhatsappAccountId'});db[_0x42cd('0x109')][_0x42cd('0x123')](db['WhatsappAccount'],{});db[_0x42cd('0x109')]['belongsTo'](db[_0x42cd('0xfe')],{'as':_0x42cd('0x16e'),'foreignKey':_0x42cd('0x16f')});db[_0x42cd('0x109')][_0x42cd('0x123')](db[_0x42cd('0x71')],{'as':_0x42cd('0x165'),'foreignKey':_0x42cd('0x174')});db[_0x42cd('0x109')][_0x42cd('0x123')](db[_0x42cd('0x132')],{});db[_0x42cd('0x109')][_0x42cd('0x123')](db[_0x42cd('0x10d')],{});db[_0x42cd('0x109')][_0x42cd('0x123')](db['WhatsappMessage'],{});db[_0x42cd('0x109')]['belongsTo'](db[_0x42cd('0x11')],{});db[_0x42cd('0x10b')]['belongsTo'](db[_0x42cd('0x1fd')],{});db[_0x42cd('0x10b')][_0x42cd('0x123')](db[_0x42cd('0x132')],{});db['WhatsappTransferReport']['belongsTo'](db[_0x42cd('0x105')],{'foreignKey':_0x42cd('0x1ff'),'as':_0x42cd('0x1eb')});db[_0x42cd('0x10b')][_0x42cd('0x123')](db[_0x42cd('0x105')],{'foreignKey':_0x42cd('0x200'),'as':_0x42cd('0x1e9')});db['WhatsappTransferReport'][_0x42cd('0x123')](db[_0x42cd('0x10d')],{'foreignKey':_0x42cd('0x201'),'as':'ToQueue'});db[_0x42cd('0x10b')][_0x42cd('0x123')](db[_0x42cd('0x11')],{'foreignKey':_0x42cd('0x1e5'),'as':_0x42cd('0x1e6')});db[_0x42cd('0x10b')][_0x42cd('0x123')](db['User'],{'foreignKey':_0x42cd('0x1ec'),'as':_0x42cd('0x1ed')});db[_0x42cd('0x10d')]['belongsToMany'](db[_0x42cd('0x11')],{'as':_0x42cd('0x15f'),'through':_0x42cd('0x34'),'foreignKey':'WhatsappQueueId'});db['WhatsappQueue'][_0x42cd('0x125')](db['Team'],{'through':_0x42cd('0x1e0'),'as':_0x42cd('0x160')});db[_0x42cd('0x114')][_0x42cd('0x123')](db[_0x42cd('0x11')],{'as':_0x42cd('0x202'),'foreignKey':_0x42cd('0x118'),'onDelete':'cascade','hooks':!![]});db[_0x42cd('0x10e')][_0x42cd('0x116')](db['Dynamics365Account'],{'as':_0x42cd('0xcc'),'onDelete':_0x42cd('0x167')});db[_0x42cd('0x10e')][_0x42cd('0x116')](db[_0x42cd('0x36')],{'as':_0x42cd('0x169'),'onDelete':_0x42cd('0x167')});db[_0x42cd('0x10e')][_0x42cd('0x116')](db[_0x42cd('0x38')],{'as':_0x42cd('0x16a'),'onDelete':_0x42cd('0x167')});module[_0x42cd('0x203')]={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0xf819=['FreshdeskAccount','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Account','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','Network','ChatQueueReport','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','SquareOdbc','SquareProject','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','Team','../api/license/license.model','Campaign','../api/campaign/campaign.model','Migration','../api/migration/migration.model','Plugin','../api/plugin/plugin.model','MailTransferReport','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','UserProfileSection','UserProfileResource','../api/userProfileResource/userProfileResource.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','UserSetting','../api/user-setting/user-setting.model','hasOne','cascade','userSetting','UserId','VoiceRecording','Recordings','hasMany','VoiceQueuesRt','VoiceExtension','Extensions','HopperHistory','OpenchannelInteractions','ChatInteractions','SmsInteractions','FaxInteractions','MailInteractions','WhatsappInteractions','UserNotification','UserNotifications','SenderId','userProfileId','belongsToMany','chat_group_has_users','cm_user_has_contacts','Lists','cm_user_has_lists','user_has_teams','user_has_mail_interactions','user_has_fax_interactions','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueues','VoicePrefixes','MailQueue','UserMailQueue','ChatQueues','UserSmsQueue','OpenchannelQueues','WhatsappQueues','ChatWebsites','user_has_chat_websites','FaxAccount','FaxAccounts','MailAccounts','user_has_mail_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','SquareProjects','SpiedAgents','ChanSpyId','Applications','Sounds','Members','VoiceQueueId','Hoppers','HopperFinals','HopperHistories','HopperBlacks','JscriptySessions','Trunk','TrunkId','belongsTo','TrunkBackup','TrunkBackupId','mandatoryDispositionPause','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Messages','mailboxuser','mailbox','uniqueid','AgentReports','Contact','CloudProvider','CloudProviderId','restrict','MailAccountId','MailServerIn','Imap','Smtp','Disposition','Dispositions','Interactions','List','Template','TemplateId','Agents','team_has_mail_queues','Teams','MailInteractionId','Account','ContactId','mail_interaction_has_tags','Tags','ThroughTags','Users','MailMessage','Attachment','Attachments','Interaction','ChatWebsiteId','ChatOfflineMessage','ChatOfflineMessageId','IntervalId','MailQueueReport','FaxAccountId','Exntensions','TagId','FaxInteractionId','fax_interaction_has_tags','AttachmentId','team_has_fax_queues','SmsAccountId','Answers','Owner','SmsInteractionId','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','ListId','user_has_openchannel_accounts','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','team_has_openchannel_queues','ProactiveActions','Agent','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','user_has_chat_interactions','Contacts','Phones','Company','cm_contact_has_tags','AdditionalPhones','CmHopperId','CampaignId','All','AutomationAllId','Any','OneAny','AutomationAnyId','Action','Actions','AutomationId','Intervals','MailApplications','ChatApplications','FaxApplications','DefaultReportId','Mohs','moh_has_sounds','sms_interaction_has_tags','ItemType','ItemTypeId','CmHopperAdditionalPhone','Hopper','CmContactId','AllConditions','TriggerAllId','AnyConditions','TriggerId','Fields','MetricId','Configurations','AccountId','Subjects','SubjectId','Descriptions','FieldId','Description','Field','VariableId','DescriptionId','Subject','int_desk_configuration_has_tags','ZohoConfiguration','ZendeskField','Dynamics365Configuration','FromId','ToId','SessionId','ProjectId','user_has_square_projects','FaxQueues','SmsQueues','team_has_whatsapp_queues','SquareProjectId','campaigns_has_cm_lists','BlackLists','campaigns_has_cm_blacklists','FromMailAccountId','FromAccount','FromUserId','ToUserId','ToAgent','ToMailQueueId','ToQueue','ToMailAccountId','ToAccount','FromChatWebsiteId','FromAgent','ChatQueue','ToChatQueueId','ToChatWebsiteId','FromFaxAccountId','ToFaxQueueId','ToFaxAccountId','FromOpenchannelAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','Queues','sectionId','WhatsappAccountId','user_has_whatsapp_accounts','whatsapp_interaction_has_tags','WhatsappInteractionId','WhatsappQueueReport','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','WhatsappQueueId','user','exports','../config/environment','sequelize','lodash','jstz','determine','defaultsDeep','motion2','xcall','xC@LL1234','mysql','utf8mb4','name','utf8','utf8_general_ci','sequelizeHistory','127.0.0.1','options','database','password','User','VoiceChanSpy','VoiceContext','import','../api/voiceContext/voiceContext.model','VoiceMusicOnHold','VoiceQueue','../api/voiceQueue/voiceQueue.model','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','MemberReport','../api/memberReport/memberReport.model','../api/trunk/trunk.model','VoiceTransferReport','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerOut','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailAccount/mailAccount.model','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','../api/mailMessage/mailMessage.model','MailApplication','../api/mailQueueReport/mailQueueReport.model','Dashboard','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','FaxInteraction','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsAccount','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','OpenchannelApplication','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','ChatApplication','ChatInteraction','../api/chatInteraction/chatInteraction.model','ChatMessage','../api/chatMessage/chatMessage.model','../api/chatQueue/chatQueue.model','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','CmCompany','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','../api/action/action.model','Automation','CannedAnswer','../api/disposition/disposition.model','Condition','Interval','../api/interval/interval.model','Pause','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','ContactItemType','../api/contactItemType/contactItemType.model','CmContactHasItem','../api/cmContactHasItem/cmContactHasItem.model','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model','Trigger','../api/trigger/trigger.model','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','IntegrationReport','../api/integrationReport/integrationReport.model','AnalyticCustomReport','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','../api/intZendeskField/intZendeskField.model'];(function(_0x31412a,_0x4cc3a2){var _0x17f308=function(_0x5d6387){while(--_0x5d6387){_0x31412a['push'](_0x31412a['shift']());}};_0x17f308(++_0x4cc3a2);}(_0xf819,0x145));var _0x9f81=function(_0x368113,_0x244119){_0x368113=_0x368113-0x0;var _0x475e26=_0xf819[_0x368113];return _0x475e26;};'use strict';var config=require(_0x9f81('0x0'));var Sequelize=require(_0x9f81('0x1'));var _=require(_0x9f81('0x2'));var jstz=require(_0x9f81('0x3'));var timezone=jstz[_0x9f81('0x4')]();config['sequelize']=_[_0x9f81('0x5')](config[_0x9f81('0x1')],{'database':_0x9f81('0x6'),'username':_0x9f81('0x7'),'password':_0x9f81('0x8'),'options':{'host':'127.0.0.1','port':0xcea,'dialect':_0x9f81('0x9'),'dialectOptions':{'charset':_0x9f81('0xa')},'logging':![],'timezone':timezone[_0x9f81('0xb')](),'define':{'charset':_0x9f81('0xc'),'collate':_0x9f81('0xd')}}});config[_0x9f81('0xe')]=_[_0x9f81('0x5')](config[_0x9f81('0xe')],{'database':_0x9f81('0x6'),'username':'xcall','password':_0x9f81('0x8'),'options':{'host':_0x9f81('0xf'),'port':0xcea,'dialect':_0x9f81('0x9'),'dialectOptions':{'charset':_0x9f81('0xa')},'logging':![],'timezone':timezone[_0x9f81('0xb')](),'define':{'charset':_0x9f81('0xc'),'collate':_0x9f81('0xd')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize']['database'],config[_0x9f81('0x1')]['username'],config[_0x9f81('0x1')]['password'],config[_0x9f81('0x1')][_0x9f81('0x10')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x9f81('0xe')][_0x9f81('0x11')],config['sequelizeHistory']['username'],config['sequelizeHistory'][_0x9f81('0x12')],config[_0x9f81('0xe')][_0x9f81('0x10')])};db[_0x9f81('0x13')]=db[_0x9f81('0x1')]['import']('../api/user/user.model');db[_0x9f81('0x14')]=db[_0x9f81('0x1')]['import']('../api/voiceChanSpy/voiceChanSpy.model');db[_0x9f81('0x15')]=db['sequelize'][_0x9f81('0x16')](_0x9f81('0x17'));db['VoiceExtension']=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/voiceExtension/voiceExtension.model');db[_0x9f81('0x18')]=db['sequelize']['import']('../api/voiceMusicOnHold/voiceMusicOnHold.model');db[_0x9f81('0x19')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x1a'));db['VoiceRecording']=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/voiceRecording/voiceRecording.model');db[_0x9f81('0x1b')]=db[_0x9f81('0x1')]['import'](_0x9f81('0x1c'));db[_0x9f81('0x1d')]=db['sequelize'][_0x9f81('0x16')](_0x9f81('0x1e'));db[_0x9f81('0x1f')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x20'));db[_0x9f81('0x21')]=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/voiceCallReport/voiceCallReport.model');db[_0x9f81('0x22')]=db[_0x9f81('0x1')]['import'](_0x9f81('0x23'));db[_0x9f81('0x24')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x25'));db[_0x9f81('0x26')]=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/voiceQueueReport/voiceQueueReport.model');db[_0x9f81('0x27')]=db[_0x9f81('0x1')]['import'](_0x9f81('0x28'));db['Trunk']=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x29'));db[_0x9f81('0x2a')]=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/voiceTransferReport/voiceTransferReport.model');db[_0x9f81('0x2b')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x2c'));db[_0x9f81('0x2d')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x2e'));db[_0x9f81('0x2f')]=db['sequelize'][_0x9f81('0x16')]('../api/userChatQueue/userChatQueue.model');db['UserMailQueue']=db['sequelize']['import'](_0x9f81('0x30'));db[_0x9f81('0x31')]=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/userFaxQueue/userFaxQueue.model');db['UserSmsQueue']=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x32'));db[_0x9f81('0x33')]=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/userOpenchannelQueue/userOpenchannelQueue.model');db[_0x9f81('0x34')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x35'));db['MailServerIn']=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/mailServerIn/mailServerIn.model');db[_0x9f81('0x36')]=db['sequelize']['import'](_0x9f81('0x37'));db[_0x9f81('0x38')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x39'));db['MailQueue']=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x3a'));db[_0x9f81('0x3b')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x3c'));db[_0x9f81('0x3d')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x3e'));db['MailMessage']=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x3f'));db[_0x9f81('0x40')]=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/mailApplication/mailApplication.model');db['MailQueueReport']=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x41'));db[_0x9f81('0x42')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x43'));db[_0x9f81('0x44')]=db['sequelize']['import'](_0x9f81('0x45'));db['FaxAccount']=db['sequelize'][_0x9f81('0x16')](_0x9f81('0x46'));db[_0x9f81('0x47')]=db['sequelize'][_0x9f81('0x16')](_0x9f81('0x48'));db[_0x9f81('0x49')]=db[_0x9f81('0x1')]['import'](_0x9f81('0x4a'));db[_0x9f81('0x4b')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x4c'));db[_0x9f81('0x4d')]=db['sequelize']['import'](_0x9f81('0x4e'));db[_0x9f81('0x4f')]=db['sequelize'][_0x9f81('0x16')](_0x9f81('0x50'));db[_0x9f81('0x51')]=db['sequelize'][_0x9f81('0x16')]('../api/smsAccount/smsAccount.model');db[_0x9f81('0x52')]=db['sequelize'][_0x9f81('0x16')](_0x9f81('0x53'));db[_0x9f81('0x54')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x55'));db[_0x9f81('0x56')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x57'));db[_0x9f81('0x58')]=db['sequelize'][_0x9f81('0x16')](_0x9f81('0x59'));db[_0x9f81('0x5a')]=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/openchannelAccount/openchannelAccount.model');db[_0x9f81('0x5b')]=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/openchannelApplication/openchannelApplication.model');db[_0x9f81('0x5c')]=db['sequelize'][_0x9f81('0x16')](_0x9f81('0x5d'));db[_0x9f81('0x5e')]=db[_0x9f81('0x1')]['import']('../api/openchannelMessage/openchannelMessage.model');db[_0x9f81('0x5f')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x60'));db[_0x9f81('0x61')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x62'));db[_0x9f81('0x63')]=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/openchannelQueueReport/openchannelQueueReport.model');db[_0x9f81('0x64')]=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/chatApplication/chatApplication.model');db[_0x9f81('0x65')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x66'));db[_0x9f81('0x67')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x68'));db['ChatOfflineMessage']=db['sequelize'][_0x9f81('0x16')]('../api/chatOfflineMessage/chatOfflineMessage.model');db['ChatQueue']=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x69'));db[_0x9f81('0x6a')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x6b'));db[_0x9f81('0x6c')]=db['sequelize'][_0x9f81('0x16')]('../api/chatProactiveAction/chatProactiveAction.model');db[_0x9f81('0x6d')]=db[_0x9f81('0x1')]['import'](_0x9f81('0x6e'));db[_0x9f81('0x6f')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x70'));db[_0x9f81('0x71')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x72'));db[_0x9f81('0x73')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x74'));db[_0x9f81('0x75')]=db[_0x9f81('0x1')]['import'](_0x9f81('0x76'));db[_0x9f81('0x77')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x78'));db[_0x9f81('0x79')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x7a'));db[_0x9f81('0x7b')]=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/cmCustomField/cmCustomField.model');db['Action']=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x7c'));db[_0x9f81('0x7d')]=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/automation/automation.model');db[_0x9f81('0x7e')]=db[_0x9f81('0x1')]['import']('../api/cannedAnswer/cannedAnswer.model');db['Disposition']=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x7f'));db[_0x9f81('0x80')]=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/condition/condition.model');db[_0x9f81('0x81')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x82'));db[_0x9f81('0x83')]=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/pause/pause.model');db['Cdr']=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x84'));db[_0x9f81('0x85')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x86'));db[_0x9f81('0x87')]=db['sequelize']['import'](_0x9f81('0x88'));db[_0x9f81('0x89')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x8a'));db[_0x9f81('0x8b')]=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/tag/tag.model');db[_0x9f81('0x8c')]=db['sequelize'][_0x9f81('0x16')](_0x9f81('0x8d'));db[_0x9f81('0x8e')]=db[_0x9f81('0x1')]['import'](_0x9f81('0x8f'));db['CmHopperAdditionalPhone']=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x90'));db['Template']=db['sequelize'][_0x9f81('0x16')]('../api/template/template.model');db[_0x9f81('0x91')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x92'));db[_0x9f81('0x93')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x94'));db[_0x9f81('0x95')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x96'));db[_0x9f81('0x97')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x98'));db[_0x9f81('0x99')]=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/analyticCustomReport/analyticCustomReport.model');db[_0x9f81('0x9a')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x9b'));db[_0x9f81('0x9c')]=db[_0x9f81('0x1')]['import'](_0x9f81('0x9d'));db[_0x9f81('0x9e')]=db['sequelize'][_0x9f81('0x16')]('../api/analyticMetric/analyticMetric.model');db[_0x9f81('0x9f')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xa0'));db[_0x9f81('0xa1')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xa2'));db[_0x9f81('0xa3')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xa4'));db[_0x9f81('0xa5')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xa6'));db[_0x9f81('0xa7')]=db['sequelize'][_0x9f81('0x16')](_0x9f81('0xa8'));db[_0x9f81('0xa9')]=db[_0x9f81('0x1')]['import']('../api/intSugarcrmAccount/intSugarcrmAccount.model');db[_0x9f81('0xaa')]=db['sequelize'][_0x9f81('0x16')](_0x9f81('0xab'));db[_0x9f81('0xac')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xad'));db[_0x9f81('0xae')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xaf'));db[_0x9f81('0xb0')]=db['sequelize'][_0x9f81('0x16')]('../api/intDeskConfiguration/intDeskConfiguration.model');db[_0x9f81('0xb1')]=db['sequelize'][_0x9f81('0x16')](_0x9f81('0xb2'));db[_0x9f81('0xb3')]=db['sequelize'][_0x9f81('0x16')](_0x9f81('0xb4'));db['ZohoConfiguration']=db['sequelize'][_0x9f81('0x16')](_0x9f81('0xb5'));db[_0x9f81('0xb6')]=db[_0x9f81('0x1')]['import'](_0x9f81('0xb7'));db[_0x9f81('0xb8')]=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/intZendeskAccount/intZendeskAccount.model');db[_0x9f81('0xb9')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xba'));db['ZendeskField']=db['sequelize'][_0x9f81('0x16')](_0x9f81('0xbb'));db[_0x9f81('0xbc')]=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db[_0x9f81('0xbd')]=db['sequelize'][_0x9f81('0x16')](_0x9f81('0xbe'));db[_0x9f81('0xbf')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xc0'));db[_0x9f81('0xc1')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xc2'));db[_0x9f81('0xc3')]=db['sequelize'][_0x9f81('0x16')](_0x9f81('0xc4'));db[_0x9f81('0xc5')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xc6'));db[_0x9f81('0xc7')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xc8'));db[_0x9f81('0xc9')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xca'));db[_0x9f81('0xcb')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xcc'));db[_0x9f81('0xcd')]=db[_0x9f81('0x1')]['import']('../api/intDynamics365Account/intDynamics365Account.model');db['Dynamics365Configuration']=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xce'));db[_0x9f81('0xcf')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xd0'));db[_0x9f81('0xd1')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xd2'));db[_0x9f81('0xd3')]=db['sequelize']['import']('../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model');db[_0x9f81('0xd4')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xd5'));db[_0x9f81('0x95')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x96'));db[_0x9f81('0xd6')]=db['sequelize'][_0x9f81('0x16')]('../api/network/network.model');db[_0x9f81('0xd7')]=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/chatQueueReport/chatQueueReport.model');db[_0x9f81('0xd8')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xd9'));db[_0x9f81('0xda')]=db[_0x9f81('0x1')]['import']('../api/jscriptyAnswerReport/jscriptyAnswerReport.model');db[_0x9f81('0xdb')]=db['sequelize'][_0x9f81('0x16')](_0x9f81('0xdc'));db[_0x9f81('0xdd')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xde'));db[_0x9f81('0xdf')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xe0'));db[_0x9f81('0xe1')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xe2'));db[_0x9f81('0xe3')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xe4'));db[_0x9f81('0xe5')]=db[_0x9f81('0x1')]['import'](_0x9f81('0xe6'));db['Setting']=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/setting/setting.model');db[_0x9f81('0xe7')]=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/squareOdbc/squareOdbc.model');db[_0x9f81('0xe8')]=db[_0x9f81('0x1')]['import'](_0x9f81('0xe9'));db[_0x9f81('0xea')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xeb'));db[_0x9f81('0xec')]=db['sequelize'][_0x9f81('0x16')](_0x9f81('0xed'));db[_0x9f81('0xee')]=db['sequelize'][_0x9f81('0x16')]('../api/team/team.model');db['License']=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xef'));db[_0x9f81('0xf0')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xf1'));db[_0x9f81('0xf2')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xf3'));db['Attachment']=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/attachment/attachment.model');db[_0x9f81('0xf4')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xf5'));db[_0x9f81('0xf6')]=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/mailTransferReport/mailTransferReport.model');db[_0x9f81('0xf7')]=db[_0x9f81('0x1')]['import'](_0x9f81('0xf8'));db[_0x9f81('0xf9')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0xfa'));db[_0x9f81('0xfb')]=db[_0x9f81('0x1')]['import'](_0x9f81('0xfc'));db[_0x9f81('0xfd')]=db['sequelize'][_0x9f81('0x16')](_0x9f81('0xfe'));db[_0x9f81('0xff')]=db['sequelize']['import'](_0x9f81('0x100'));db[_0x9f81('0x101')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x102'));db[_0x9f81('0x103')]=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/userProfile/userProfile.model');db[_0x9f81('0x104')]=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/userProfileSection/userProfileSection.model');db[_0x9f81('0x105')]=db[_0x9f81('0x1')]['import'](_0x9f81('0x106'));db['UserNotification']=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/userNotification/userNotification.model');db[_0x9f81('0x107')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x108'));db[_0x9f81('0x109')]=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/whatsappApplication/whatsappApplication.model');db[_0x9f81('0x10a')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x10b'));db[_0x9f81('0x10c')]=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/whatsappMessage/whatsappMessage.model');db['WhatsappQueueReport']=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x10d'));db[_0x9f81('0x10e')]=db['sequelize'][_0x9f81('0x16')](_0x9f81('0x10f'));db[_0x9f81('0x110')]=db[_0x9f81('0x1')]['import'](_0x9f81('0x111'));db['CloudProvider']=db[_0x9f81('0x1')]['import'](_0x9f81('0x112'));db[_0x9f81('0x113')]=db[_0x9f81('0x1')]['import'](_0x9f81('0x114'));db[_0x9f81('0x115')]=db[_0x9f81('0x1')][_0x9f81('0x16')](_0x9f81('0x116'));db[_0x9f81('0x117')]=db[_0x9f81('0x1')][_0x9f81('0x16')]('../api/userVoicePrefix/userVoicePrefix.model');db[_0x9f81('0x118')]=db[_0x9f81('0x1')]['import'](_0x9f81('0x119'));db[_0x9f81('0x13')][_0x9f81('0x11a')](db[_0x9f81('0x1d')],{'as':_0x9f81('0x1d'),'onDelete':_0x9f81('0x11b'),'foreignKey':'UserId'});db[_0x9f81('0x13')][_0x9f81('0x11a')](db[_0x9f81('0x118')],{'as':_0x9f81('0x11c'),'onDelete':_0x9f81('0x11b'),'foreignKey':_0x9f81('0x11d')});db[_0x9f81('0x13')]['hasMany'](db[_0x9f81('0x11e')],{'as':_0x9f81('0x11f'),'foreignKey':_0x9f81('0x11d')});db[_0x9f81('0x13')][_0x9f81('0x120')](db[_0x9f81('0x2b')],{'as':_0x9f81('0x121'),'foreignKey':'UserId'});db['User'][_0x9f81('0x120')](db[_0x9f81('0x122')],{'as':_0x9f81('0x123'),'onDelete':_0x9f81('0x11b'),'hooks':!![]});db['User']['hasMany'](db['CmHopperFinal'],{'as':'HopperFinals','foreignKey':'UserId'});db[_0x9f81('0x13')]['hasMany'](db[_0x9f81('0x77')],{'as':_0x9f81('0x124'),'foreignKey':_0x9f81('0x11d')});db[_0x9f81('0x13')][_0x9f81('0x120')](db[_0x9f81('0x79')],{'as':_0x9f81('0x79'),'foreignKey':'UserId'});db[_0x9f81('0x13')]['hasMany'](db[_0x9f81('0x5c')],{'as':_0x9f81('0x125'),'foreignKey':_0x9f81('0x11d')});db[_0x9f81('0x13')][_0x9f81('0x120')](db[_0x9f81('0x65')],{'as':_0x9f81('0x126'),'foreignKey':_0x9f81('0x11d')});db['User'][_0x9f81('0x120')](db[_0x9f81('0x54')],{'as':_0x9f81('0x127'),'foreignKey':_0x9f81('0x11d')});db[_0x9f81('0x13')][_0x9f81('0x120')](db[_0x9f81('0x49')],{'as':_0x9f81('0x128'),'foreignKey':_0x9f81('0x11d')});db[_0x9f81('0x13')][_0x9f81('0x120')](db[_0x9f81('0x3d')],{'as':_0x9f81('0x129'),'foreignKey':'UserId'});db['User']['hasMany'](db[_0x9f81('0x10a')],{'as':_0x9f81('0x12a'),'foreignKey':_0x9f81('0x11d')});db[_0x9f81('0x13')]['hasMany'](db[_0x9f81('0x12b')],{'as':_0x9f81('0x12c'),'foreignKey':_0x9f81('0x12d')});db['User']['belongsTo'](db[_0x9f81('0x103')],{'as':_0x9f81('0x103'),'foreignKey':_0x9f81('0x12e')});db['User'][_0x9f81('0x12f')](db['ChatGroup'],{'as':'Groups','through':_0x9f81('0x130')});db[_0x9f81('0x13')][_0x9f81('0x12f')](db[_0x9f81('0x6f')],{'as':'Contacts','through':_0x9f81('0x131')});db['User'][_0x9f81('0x12f')](db[_0x9f81('0xff')],{'as':_0x9f81('0x132'),'through':_0x9f81('0x133')});db[_0x9f81('0x13')][_0x9f81('0x12f')](db[_0x9f81('0xee')],{'through':_0x9f81('0x134')});db[_0x9f81('0x13')][_0x9f81('0x12f')](db[_0x9f81('0x3d')],{'as':_0x9f81('0x129'),'through':_0x9f81('0x135')});db[_0x9f81('0x13')][_0x9f81('0x12f')](db[_0x9f81('0x65')],{'as':_0x9f81('0x126'),'through':'user_has_chat_interactions'});db['User'][_0x9f81('0x12f')](db['FaxInteraction'],{'as':'FaxInteractions','through':_0x9f81('0x136')});db[_0x9f81('0x13')][_0x9f81('0x12f')](db[_0x9f81('0x54')],{'as':_0x9f81('0x127'),'through':_0x9f81('0x137')});db[_0x9f81('0x13')][_0x9f81('0x12f')](db[_0x9f81('0x5c')],{'as':_0x9f81('0x125'),'through':_0x9f81('0x138')});db[_0x9f81('0x13')][_0x9f81('0x12f')](db[_0x9f81('0x10a')],{'as':_0x9f81('0x12a'),'through':_0x9f81('0x139')});db[_0x9f81('0x13')]['belongsToMany'](db[_0x9f81('0x19')],{'as':_0x9f81('0x13a'),'through':'UserVoiceQueue','required':![]});db[_0x9f81('0x13')]['belongsToMany'](db[_0x9f81('0x101')],{'as':_0x9f81('0x13b'),'through':'UserVoicePrefix','required':![]});db[_0x9f81('0x13')][_0x9f81('0x12f')](db[_0x9f81('0x13c')],{'as':'MailQueues','through':_0x9f81('0x13d'),'required':![]});db[_0x9f81('0x13')][_0x9f81('0x12f')](db['ChatQueue'],{'as':_0x9f81('0x13e'),'through':_0x9f81('0x2f'),'required':![],'hooks':!![]});db['User'][_0x9f81('0x12f')](db[_0x9f81('0x4d')],{'as':'FaxQueues','through':'UserFaxQueue','required':![]});db[_0x9f81('0x13')][_0x9f81('0x12f')](db[_0x9f81('0x58')],{'as':'SmsQueues','through':_0x9f81('0x13f'),'required':![]});db[_0x9f81('0x13')]['belongsToMany'](db[_0x9f81('0x5f')],{'as':_0x9f81('0x140'),'through':_0x9f81('0x33'),'required':![]});db['User'][_0x9f81('0x12f')](db['WhatsappQueue'],{'as':_0x9f81('0x141'),'through':_0x9f81('0x34'),'required':![]});db[_0x9f81('0x13')]['belongsToMany'](db['CmList'],{'through':_0x9f81('0x133')});db['User'][_0x9f81('0x12f')](db[_0x9f81('0x61')],{'as':_0x9f81('0x142'),'through':_0x9f81('0x143')});db[_0x9f81('0x13')][_0x9f81('0x12f')](db[_0x9f81('0x144')],{'as':_0x9f81('0x145'),'through':'user_has_fax_accounts'});db[_0x9f81('0x13')]['belongsToMany'](db[_0x9f81('0x38')],{'as':_0x9f81('0x146'),'through':_0x9f81('0x147')});db[_0x9f81('0x13')][_0x9f81('0x12f')](db[_0x9f81('0x5a')],{'as':'OpenchannelAccounts','through':'user_has_openchannel_accounts'});db[_0x9f81('0x13')][_0x9f81('0x12f')](db[_0x9f81('0x51')],{'as':_0x9f81('0x148'),'through':_0x9f81('0x149')});db['User'][_0x9f81('0x12f')](db[_0x9f81('0x107')],{'as':_0x9f81('0x14a'),'through':'user_has_whatsapp_accounts'});db['User'][_0x9f81('0x12f')](db['SquareProject'],{'as':_0x9f81('0x14b'),'through':'user_has_square_projects'});db[_0x9f81('0x14')]['hasMany'](db[_0x9f81('0x122')],{'as':_0x9f81('0x14c'),'onDelete':'cascade','foreignKey':_0x9f81('0x14d')});db['VoiceContext']['hasMany'](db[_0x9f81('0x122')],{'onDelete':_0x9f81('0x11b')});db['VoiceExtension'][_0x9f81('0x120')](db[_0x9f81('0x122')],{'as':_0x9f81('0x14e'),'onDelete':_0x9f81('0x11b')});db[_0x9f81('0x18')]['belongsToMany'](db[_0x9f81('0x89')],{'as':_0x9f81('0x14f'),'through':'moh_has_sounds'});db['VoiceQueue']['hasMany'](db[_0x9f81('0x2b')],{'as':_0x9f81('0x150'),'foreignKey':_0x9f81('0x151')});db['VoiceQueue'][_0x9f81('0x120')](db[_0x9f81('0x71')],{'as':_0x9f81('0x152'),'foreignKey':_0x9f81('0x151')});db[_0x9f81('0x19')][_0x9f81('0x120')](db[_0x9f81('0x75')],{'as':_0x9f81('0x153'),'foreignKey':'VoiceQueueId'});db[_0x9f81('0x19')][_0x9f81('0x120')](db[_0x9f81('0x77')],{'as':_0x9f81('0x154'),'foreignKey':_0x9f81('0x151')});db[_0x9f81('0x19')][_0x9f81('0x120')](db[_0x9f81('0x79')],{'as':_0x9f81('0x79'),'foreignKey':_0x9f81('0x151')});db[_0x9f81('0x19')][_0x9f81('0x120')](db[_0x9f81('0x73')],{'as':_0x9f81('0x155'),'foreignKey':_0x9f81('0x151')});db[_0x9f81('0x19')][_0x9f81('0x120')](db[_0x9f81('0xdd')],{'as':_0x9f81('0x156'),'foreignKey':_0x9f81('0x151')});db['VoiceQueue']['belongsTo'](db[_0x9f81('0x157')],{'as':'Trunk','foreignKey':_0x9f81('0x158')});db[_0x9f81('0x19')][_0x9f81('0x159')](db['Trunk'],{'as':_0x9f81('0x15a'),'foreignKey':_0x9f81('0x15b')});db[_0x9f81('0x19')][_0x9f81('0x159')](db['Interval'],{'as':_0x9f81('0x81'),'foreignKey':'IntervalId'});db[_0x9f81('0x19')][_0x9f81('0x159')](db[_0x9f81('0x83')],{'as':_0x9f81('0x15c'),'foreignKey':_0x9f81('0x15d')});db[_0x9f81('0x19')][_0x9f81('0x12f')](db[_0x9f81('0xff')],{'as':'Lists','through':_0x9f81('0x15e')});db[_0x9f81('0x19')]['belongsToMany'](db[_0x9f81('0x13')],{'as':'Agents','through':'UserVoiceQueue'});db[_0x9f81('0x19')][_0x9f81('0x12f')](db[_0x9f81('0xee')],{'as':'Teams','through':_0x9f81('0x113')});db[_0x9f81('0x19')][_0x9f81('0x12f')](db['CmList'],{'as':'BlackLists','through':'voice_queues_has_cm_blacklists'});db['VoiceRecording']['belongsTo'](db[_0x9f81('0x13')],{'as':_0x9f81('0x13'),'foreignKey':_0x9f81('0x11d')});db[_0x9f81('0x1b')]['belongsTo'](db[_0x9f81('0x13')],{'as':'User','foreignKey':_0x9f81('0x11d')});db['VoiceMail']['hasMany'](db[_0x9f81('0x1f')],{'as':_0x9f81('0x15f'),'onDelete':_0x9f81('0x11b'),'foreignKey':_0x9f81('0x160'),'sourceKey':_0x9f81('0x161')});db[_0x9f81('0x1f')][_0x9f81('0x159')](db[_0x9f81('0x1d')],{'foreignKey':_0x9f81('0x160'),'targetKey':_0x9f81('0x161')});db[_0x9f81('0x21')]['hasMany'](db['VoiceQueueReport'],{'as':'QueueCalls','foreignKey':_0x9f81('0x162'),'constraints':![]});db['VoiceCallReport'][_0x9f81('0x120')](db[_0x9f81('0x24')],{'as':_0x9f81('0x163'),'foreignKey':_0x9f81('0x162'),'constraints':![]});db[_0x9f81('0x21')][_0x9f81('0x159')](db[_0x9f81('0x13')],{'as':'User','foreignKey':_0x9f81('0x11d')});db[_0x9f81('0x21')]['belongsTo'](db[_0x9f81('0x6f')],{'as':_0x9f81('0x164'),'foreignKey':'ContactId'});db['MailServerIn']['belongsTo'](db[_0x9f81('0x38')],{'as':_0x9f81('0x38'),'foreignKey':'MailAccountId'});db['MailServerIn'][_0x9f81('0x159')](db[_0x9f81('0x165')],{'as':'CloudProvider','foreignKey':_0x9f81('0x166'),'onDelete':_0x9f81('0x167')});db[_0x9f81('0x36')][_0x9f81('0x159')](db['MailAccount'],{'as':_0x9f81('0x38'),'foreignKey':_0x9f81('0x168')});db[_0x9f81('0x36')]['belongsTo'](db[_0x9f81('0x165')],{'as':'CloudProvider','foreignKey':_0x9f81('0x166'),'onDelete':_0x9f81('0x167')});db['MailAccount'][_0x9f81('0x11a')](db[_0x9f81('0x169')],{'as':_0x9f81('0x16a'),'onDelete':_0x9f81('0x11b')});db[_0x9f81('0x38')][_0x9f81('0x11a')](db[_0x9f81('0x36')],{'as':_0x9f81('0x16b'),'onDelete':'cascade'});db[_0x9f81('0x38')][_0x9f81('0x120')](db[_0x9f81('0x16c')],{'as':_0x9f81('0x16d'),'foreignKey':'MailAccountId','onDelete':_0x9f81('0x11b')});db[_0x9f81('0x38')]['hasMany'](db[_0x9f81('0x7e')],{'as':'Answers','foreignKey':'MailAccountId'});db[_0x9f81('0x38')]['hasMany'](db['MailMessage'],{'as':_0x9f81('0x15f'),'foreignKey':_0x9f81('0x168')});db[_0x9f81('0x38')][_0x9f81('0x120')](db[_0x9f81('0x3d')],{'as':_0x9f81('0x16e')});db['MailAccount'][_0x9f81('0x120')](db[_0x9f81('0x40')],{'as':'Applications'});db[_0x9f81('0x38')][_0x9f81('0x159')](db[_0x9f81('0xff')],{'as':_0x9f81('0x16f'),'foreignKey':'ListId'});db[_0x9f81('0x38')]['belongsTo'](db[_0x9f81('0x170')],{'as':_0x9f81('0x170'),'foreignKey':_0x9f81('0x171')});db[_0x9f81('0x38')][_0x9f81('0x159')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x9f81('0x15d')});db[_0x9f81('0x38')][_0x9f81('0x12f')](db[_0x9f81('0x13')],{'as':_0x9f81('0x172'),'through':_0x9f81('0x147')});db[_0x9f81('0x13c')]['belongsToMany'](db[_0x9f81('0x13')],{'as':'Agents','through':_0x9f81('0x13d')});db['MailQueue']['belongsToMany'](db['Team'],{'through':_0x9f81('0x173'),'as':_0x9f81('0x174')});db[_0x9f81('0x3d')][_0x9f81('0x120')](db['MailMessage'],{'as':'Messages','onDelete':_0x9f81('0x11b'),'foreignKey':_0x9f81('0x175')});db['MailInteraction']['belongsTo'](db[_0x9f81('0x38')],{'as':_0x9f81('0x176'),'foreignKey':_0x9f81('0x168')});db[_0x9f81('0x3d')]['belongsTo'](db['CmContact'],{'as':_0x9f81('0x164'),'foreignKey':_0x9f81('0x177')});db[_0x9f81('0x3d')][_0x9f81('0x159')](db[_0x9f81('0x13')],{'as':'Owner','foreignKey':_0x9f81('0x11d')});db['MailInteraction'][_0x9f81('0x12f')](db[_0x9f81('0x8b')],{'through':_0x9f81('0x178'),'as':_0x9f81('0x179')});db[_0x9f81('0x3d')][_0x9f81('0x12f')](db[_0x9f81('0x8b')],{'through':_0x9f81('0x178'),'as':_0x9f81('0x17a')});db[_0x9f81('0x3d')][_0x9f81('0x12f')](db[_0x9f81('0x13')],{'as':_0x9f81('0x17b'),'through':_0x9f81('0x135'),'foreignKey':_0x9f81('0x175')});db[_0x9f81('0x17c')][_0x9f81('0x120')](db[_0x9f81('0x17d')],{'as':_0x9f81('0x17e'),'onDelete':_0x9f81('0x11b')});db['MailMessage'][_0x9f81('0x159')](db[_0x9f81('0x13')],{'as':_0x9f81('0x13')});db[_0x9f81('0x17c')]['belongsTo'](db[_0x9f81('0x6f')],{'onDelete':'cascade','as':_0x9f81('0x164')});db[_0x9f81('0x17c')][_0x9f81('0x159')](db['MailInteraction'],{'as':_0x9f81('0x17f'),'foreignKey':_0x9f81('0x175')});db[_0x9f81('0x17c')]['belongsTo'](db[_0x9f81('0x38')],{'as':_0x9f81('0x176'),'foreignKey':_0x9f81('0x168')});db[_0x9f81('0x17c')][_0x9f81('0x159')](db[_0x9f81('0x61')],{'as':'ChatWebsite','foreignKey':_0x9f81('0x180')});db[_0x9f81('0x17c')][_0x9f81('0x159')](db[_0x9f81('0x181')],{'as':_0x9f81('0x181'),'foreignKey':_0x9f81('0x182')});db['MailApplication'][_0x9f81('0x159')](db[_0x9f81('0x13')],{'onDelete':_0x9f81('0x167')});db['MailApplication'][_0x9f81('0x159')](db[_0x9f81('0x13c')],{'onDelete':_0x9f81('0x167')});db[_0x9f81('0x40')][_0x9f81('0x159')](db[_0x9f81('0x38')],{'onDelete':_0x9f81('0x167')});db[_0x9f81('0x40')][_0x9f81('0x159')](db[_0x9f81('0x81')],{'onDelete':_0x9f81('0x167'),'foreignKey':_0x9f81('0x183')});db['MailApplication'][_0x9f81('0x159')](db['Tag'],{'onDelete':_0x9f81('0x167'),'foreignKey':'TagId'});db[_0x9f81('0x184')][_0x9f81('0x159')](db[_0x9f81('0x38')],{});db[_0x9f81('0x184')][_0x9f81('0x159')](db[_0x9f81('0xff')],{'as':_0x9f81('0x16f'),'foreignKey':'ListId'});db[_0x9f81('0x184')][_0x9f81('0x159')](db[_0x9f81('0x6f')],{'as':_0x9f81('0x164'),'foreignKey':_0x9f81('0x177')});db[_0x9f81('0x184')][_0x9f81('0x159')](db['MailInteraction'],{});db[_0x9f81('0x184')][_0x9f81('0x159')](db['MailMessage'],{});db[_0x9f81('0x184')][_0x9f81('0x159')](db[_0x9f81('0x13')],{});db['MailQueueReport']['belongsTo'](db[_0x9f81('0x13c')],{});db['Dashboard'][_0x9f81('0x120')](db[_0x9f81('0x44')],{'as':'Items','onDelete':_0x9f81('0x11b')});db['FaxAccount'][_0x9f81('0x120')](db[_0x9f81('0x16c')],{'as':'Dispositions','foreignKey':_0x9f81('0x185'),'onDelete':_0x9f81('0x11b')});db[_0x9f81('0x144')][_0x9f81('0x120')](db[_0x9f81('0x7e')],{'as':'Answers','foreignKey':_0x9f81('0x185')});db[_0x9f81('0x144')][_0x9f81('0x120')](db[_0x9f81('0x49')],{'as':_0x9f81('0x16e')});db[_0x9f81('0x144')][_0x9f81('0x120')](db['FaxApplication'],{'as':_0x9f81('0x14e')});db[_0x9f81('0x144')][_0x9f81('0x120')](db[_0x9f81('0x122')],{'as':_0x9f81('0x186'),'onDelete':_0x9f81('0x11b')});db[_0x9f81('0x144')]['hasMany'](db[_0x9f81('0x4b')],{'as':_0x9f81('0x15f')});db[_0x9f81('0x144')]['belongsTo'](db[_0x9f81('0x157')],{'as':_0x9f81('0x157')});db[_0x9f81('0x144')][_0x9f81('0x159')](db[_0x9f81('0xff')],{'as':'List','foreignKey':'ListId'});db[_0x9f81('0x144')][_0x9f81('0x159')](db[_0x9f81('0x83')],{'as':_0x9f81('0x15c'),'foreignKey':_0x9f81('0x15d')});db[_0x9f81('0x144')]['belongsToMany'](db['User'],{'as':_0x9f81('0x172'),'through':'user_has_fax_accounts'});db[_0x9f81('0x47')][_0x9f81('0x159')](db['User'],{'onDelete':'restrict'});db[_0x9f81('0x47')][_0x9f81('0x159')](db['FaxQueue'],{'onDelete':_0x9f81('0x167')});db[_0x9f81('0x47')][_0x9f81('0x159')](db[_0x9f81('0x144')],{'onDelete':_0x9f81('0x167')});db[_0x9f81('0x47')]['belongsTo'](db[_0x9f81('0x8b')],{'onDelete':_0x9f81('0x167'),'foreignKey':_0x9f81('0x187')});db[_0x9f81('0x49')]['hasMany'](db['FaxMessage'],{'as':_0x9f81('0x15f'),'onDelete':_0x9f81('0x11b'),'foreignKey':_0x9f81('0x188')});db[_0x9f81('0x49')]['belongsTo'](db[_0x9f81('0x144')],{'as':_0x9f81('0x176'),'foreignKey':_0x9f81('0x185')});db['FaxInteraction'][_0x9f81('0x159')](db[_0x9f81('0x6f')],{'as':'Contact','foreignKey':'ContactId'});db[_0x9f81('0x49')][_0x9f81('0x159')](db[_0x9f81('0x13')],{'as':'Owner','foreignKey':'UserId'});db[_0x9f81('0x49')][_0x9f81('0x12f')](db[_0x9f81('0x8b')],{'through':'fax_interaction_has_tags','as':_0x9f81('0x179')});db[_0x9f81('0x49')][_0x9f81('0x12f')](db['Tag'],{'through':_0x9f81('0x189'),'as':_0x9f81('0x17a')});db['FaxInteraction'][_0x9f81('0x12f')](db[_0x9f81('0x13')],{'as':_0x9f81('0x17b'),'through':_0x9f81('0x136'),'foreignKey':'FaxInteractionId'});db[_0x9f81('0x4b')]['belongsTo'](db[_0x9f81('0x13')],{'onDelete':'cascade','as':_0x9f81('0x13')});db[_0x9f81('0x4b')][_0x9f81('0x159')](db[_0x9f81('0x49')],{'as':_0x9f81('0x17f'),'foreignKey':_0x9f81('0x188')});db[_0x9f81('0x4b')][_0x9f81('0x159')](db[_0x9f81('0x6f')],{'onDelete':'cascade','as':'Contact'});db[_0x9f81('0x4b')][_0x9f81('0x159')](db[_0x9f81('0x17d')],{'as':_0x9f81('0x17d'),'foreignKey':_0x9f81('0x18a')});db[_0x9f81('0x4b')][_0x9f81('0x159')](db[_0x9f81('0x144')],{'as':_0x9f81('0x176'),'foreignKey':'FaxAccountId'});db[_0x9f81('0x4d')][_0x9f81('0x12f')](db[_0x9f81('0x13')],{'as':_0x9f81('0x172'),'through':_0x9f81('0x31')});db[_0x9f81('0x4d')][_0x9f81('0x12f')](db['Team'],{'through':_0x9f81('0x18b'),'as':_0x9f81('0x174')});db[_0x9f81('0x4f')][_0x9f81('0x159')](db[_0x9f81('0x144')],{});db[_0x9f81('0x4f')][_0x9f81('0x159')](db[_0x9f81('0xff')],{'as':_0x9f81('0x16f'),'foreignKey':'ListId'});db[_0x9f81('0x4f')][_0x9f81('0x159')](db[_0x9f81('0x6f')],{'as':'Contact','foreignKey':_0x9f81('0x177')});db[_0x9f81('0x4f')][_0x9f81('0x159')](db[_0x9f81('0x49')],{});db['FaxQueueReport'][_0x9f81('0x159')](db['FaxMessage'],{});db[_0x9f81('0x4f')]['belongsTo'](db[_0x9f81('0x13')],{});db[_0x9f81('0x4f')][_0x9f81('0x159')](db[_0x9f81('0x4d')],{});db[_0x9f81('0x51')][_0x9f81('0x120')](db[_0x9f81('0x16c')],{'as':_0x9f81('0x16d'),'foreignKey':_0x9f81('0x18c'),'onDelete':_0x9f81('0x11b')});db[_0x9f81('0x51')][_0x9f81('0x120')](db[_0x9f81('0x7e')],{'as':_0x9f81('0x18d'),'foreignKey':_0x9f81('0x18c')});db[_0x9f81('0x51')][_0x9f81('0x120')](db[_0x9f81('0x56')],{'as':_0x9f81('0x15f'),'foreignKey':_0x9f81('0x18c')});db[_0x9f81('0x51')][_0x9f81('0x120')](db[_0x9f81('0x54')],{'as':_0x9f81('0x16e')});db['SmsAccount'][_0x9f81('0x120')](db['SmsApplication'],{'as':_0x9f81('0x14e')});db[_0x9f81('0x51')][_0x9f81('0x159')](db[_0x9f81('0xff')],{'as':_0x9f81('0x16f'),'foreignKey':'ListId'});db['SmsAccount']['belongsTo'](db[_0x9f81('0x83')],{'as':_0x9f81('0x15c'),'foreignKey':_0x9f81('0x15d')});db[_0x9f81('0x51')][_0x9f81('0x12f')](db[_0x9f81('0x13')],{'as':_0x9f81('0x172'),'through':_0x9f81('0x149')});db[_0x9f81('0x52')][_0x9f81('0x159')](db[_0x9f81('0x13')],{'onDelete':_0x9f81('0x167')});db[_0x9f81('0x52')][_0x9f81('0x159')](db['SmsQueue'],{'onDelete':_0x9f81('0x167')});db['SmsApplication'][_0x9f81('0x159')](db[_0x9f81('0x51')],{'onDelete':'restrict'});db[_0x9f81('0x52')]['belongsTo'](db[_0x9f81('0x81')],{'onDelete':_0x9f81('0x167'),'foreignKey':_0x9f81('0x183')});db['SmsApplication'][_0x9f81('0x159')](db[_0x9f81('0x8b')],{'onDelete':_0x9f81('0x167'),'foreignKey':'TagId'});db[_0x9f81('0x54')][_0x9f81('0x120')](db[_0x9f81('0x56')],{'as':_0x9f81('0x15f'),'onDelete':_0x9f81('0x11b'),'foreignKey':'SmsInteractionId'});db['SmsInteraction'][_0x9f81('0x159')](db[_0x9f81('0x51')],{'as':_0x9f81('0x176'),'foreignKey':_0x9f81('0x18c')});db[_0x9f81('0x54')][_0x9f81('0x159')](db[_0x9f81('0x6f')],{'as':_0x9f81('0x164'),'foreignKey':'ContactId'});db[_0x9f81('0x54')][_0x9f81('0x159')](db['User'],{'as':_0x9f81('0x18e'),'foreignKey':_0x9f81('0x11d')});db[_0x9f81('0x54')][_0x9f81('0x12f')](db[_0x9f81('0x8b')],{'through':'sms_interaction_has_tags','as':_0x9f81('0x179')});db['SmsInteraction']['belongsToMany'](db['Tag'],{'through':'sms_interaction_has_tags','as':_0x9f81('0x17a')});db[_0x9f81('0x54')][_0x9f81('0x12f')](db[_0x9f81('0x13')],{'as':_0x9f81('0x17b'),'through':_0x9f81('0x137'),'foreignKey':_0x9f81('0x18f')});db[_0x9f81('0x56')][_0x9f81('0x159')](db['User'],{'as':_0x9f81('0x13')});db[_0x9f81('0x56')][_0x9f81('0x159')](db[_0x9f81('0x6f')],{'onDelete':'cascade','as':_0x9f81('0x164')});db[_0x9f81('0x56')]['belongsTo'](db[_0x9f81('0x54')],{'onDelete':_0x9f81('0x11b'),'as':'Interaction','foreignKey':_0x9f81('0x18f')});db['SmsMessage'][_0x9f81('0x159')](db[_0x9f81('0x51')],{'as':_0x9f81('0x176'),'foreignKey':_0x9f81('0x18c')});db[_0x9f81('0x58')][_0x9f81('0x12f')](db[_0x9f81('0x13')],{'as':'Agents','through':'UserSmsQueue','foreignKey':_0x9f81('0x190')});db['SmsQueue'][_0x9f81('0x12f')](db[_0x9f81('0xee')],{'through':_0x9f81('0x191'),'as':_0x9f81('0x174')});db[_0x9f81('0x5a')]['hasMany'](db[_0x9f81('0x16c')],{'as':'Dispositions','foreignKey':'OpenchannelAccountId','onDelete':'cascade'});db['OpenchannelAccount'][_0x9f81('0x120')](db[_0x9f81('0x7e')],{'as':_0x9f81('0x18d'),'foreignKey':_0x9f81('0x192')});db[_0x9f81('0x5a')][_0x9f81('0x120')](db[_0x9f81('0x5c')],{'as':_0x9f81('0x16e'),'foreignKey':_0x9f81('0x192')});db[_0x9f81('0x5a')][_0x9f81('0x120')](db['OpenchannelMessage'],{'as':_0x9f81('0x15f'),'foreignKey':_0x9f81('0x192')});db[_0x9f81('0x5a')]['hasMany'](db['OpenchannelApplication'],{'as':_0x9f81('0x14e'),'foreignKey':'OpenchannelAccountId'});db[_0x9f81('0x5a')][_0x9f81('0x159')](db['CmList'],{'as':_0x9f81('0x16f'),'foreignKey':_0x9f81('0x193')});db[_0x9f81('0x5a')][_0x9f81('0x159')](db[_0x9f81('0x83')],{'as':_0x9f81('0x15c'),'foreignKey':_0x9f81('0x15d')});db['OpenchannelAccount'][_0x9f81('0x12f')](db['User'],{'as':_0x9f81('0x172'),'through':_0x9f81('0x194')});db[_0x9f81('0x5b')][_0x9f81('0x159')](db[_0x9f81('0x13')],{'onDelete':_0x9f81('0x167')});db['OpenchannelApplication']['belongsTo'](db['OpenchannelQueue'],{'onDelete':_0x9f81('0x167'),'foreignKey':_0x9f81('0x195')});db['OpenchannelApplication'][_0x9f81('0x159')](db[_0x9f81('0x5a')],{'onDelete':_0x9f81('0x167'),'foreignKey':'OpenchannelAccountId'});db[_0x9f81('0x5b')]['belongsTo'](db[_0x9f81('0x81')],{'onDelete':_0x9f81('0x167'),'foreignKey':'IntervalId'});db[_0x9f81('0x5b')][_0x9f81('0x159')](db[_0x9f81('0x8b')],{'onDelete':_0x9f81('0x167'),'foreignKey':_0x9f81('0x187')});db[_0x9f81('0x5c')][_0x9f81('0x120')](db[_0x9f81('0x5e')],{'as':_0x9f81('0x15f'),'onDelete':_0x9f81('0x11b'),'foreignKey':_0x9f81('0x196')});db['OpenchannelInteraction'][_0x9f81('0x159')](db[_0x9f81('0x5a')],{'as':_0x9f81('0x176'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelInteraction'][_0x9f81('0x159')](db[_0x9f81('0x6f')],{'as':_0x9f81('0x164'),'foreignKey':_0x9f81('0x177')});db[_0x9f81('0x5c')]['belongsTo'](db[_0x9f81('0x13')],{'as':_0x9f81('0x18e'),'foreignKey':_0x9f81('0x11d')});db['OpenchannelInteraction']['belongsToMany'](db['Tag'],{'through':_0x9f81('0x197'),'as':'Tags'});db[_0x9f81('0x5c')][_0x9f81('0x12f')](db[_0x9f81('0x8b')],{'through':_0x9f81('0x197'),'as':'ThroughTags'});db[_0x9f81('0x5c')]['belongsToMany'](db[_0x9f81('0x13')],{'as':_0x9f81('0x17b'),'through':_0x9f81('0x138'),'foreignKey':_0x9f81('0x196')});db[_0x9f81('0x5e')][_0x9f81('0x159')](db[_0x9f81('0x13')],{'onDelete':'cascade','as':_0x9f81('0x13')});db[_0x9f81('0x5e')][_0x9f81('0x159')](db[_0x9f81('0x6f')],{'onDelete':'cascade','as':'Contact'});db['OpenchannelMessage'][_0x9f81('0x159')](db[_0x9f81('0x5c')],{'onDelete':_0x9f81('0x11b'),'as':_0x9f81('0x17f'),'foreignKey':_0x9f81('0x196')});db[_0x9f81('0x5e')][_0x9f81('0x159')](db['Attachment'],{'as':_0x9f81('0x17d'),'foreignKey':'AttachmentId'});db['OpenchannelMessage'][_0x9f81('0x159')](db['OpenchannelAccount'],{'as':_0x9f81('0x176'),'foreignKey':_0x9f81('0x192')});db[_0x9f81('0x5f')]['belongsToMany'](db[_0x9f81('0x13')],{'as':_0x9f81('0x172'),'through':_0x9f81('0x33'),'foreignKey':_0x9f81('0x195')});db[_0x9f81('0x5f')][_0x9f81('0x12f')](db['Team'],{'through':_0x9f81('0x198'),'as':_0x9f81('0x174')});db[_0x9f81('0x61')][_0x9f81('0x120')](db[_0x9f81('0x16c')],{'as':_0x9f81('0x16d'),'foreignKey':_0x9f81('0x180'),'onDelete':_0x9f81('0x11b')});db['ChatWebsite'][_0x9f81('0x120')](db[_0x9f81('0x7e')],{'as':'Answers','foreignKey':_0x9f81('0x180')});db[_0x9f81('0x61')]['hasMany'](db[_0x9f81('0x6c')],{'as':_0x9f81('0x199')});db[_0x9f81('0x61')]['hasMany'](db[_0x9f81('0x65')],{'as':_0x9f81('0x16e')});db[_0x9f81('0x61')][_0x9f81('0x120')](db[_0x9f81('0x64')],{'as':_0x9f81('0x14e')});db[_0x9f81('0x61')][_0x9f81('0x120')](db['ChatMessage'],{'as':_0x9f81('0x15f')});db[_0x9f81('0x61')][_0x9f81('0x159')](db[_0x9f81('0xff')],{'as':'List','foreignKey':_0x9f81('0x193')});db[_0x9f81('0x61')]['belongsTo'](db[_0x9f81('0x81')],{'as':'Interval','foreignKey':'IntervalId'});db[_0x9f81('0x61')]['belongsTo'](db['MailAccount'],{'as':'MailAccount','foreignKey':_0x9f81('0x168')});db['ChatWebsite'][_0x9f81('0x159')](db[_0x9f81('0x83')],{'as':_0x9f81('0x15c'),'foreignKey':_0x9f81('0x15d')});db['ChatWebsite'][_0x9f81('0x12f')](db[_0x9f81('0x13')],{'as':_0x9f81('0x172'),'through':_0x9f81('0x143')});db[_0x9f81('0x63')][_0x9f81('0x159')](db[_0x9f81('0x5a')],{});db[_0x9f81('0x63')][_0x9f81('0x159')](db['CmList'],{'as':_0x9f81('0x16f'),'foreignKey':_0x9f81('0x193')});db[_0x9f81('0x63')][_0x9f81('0x159')](db[_0x9f81('0x6f')],{'as':_0x9f81('0x164'),'foreignKey':'ContactId'});db[_0x9f81('0x63')][_0x9f81('0x159')](db[_0x9f81('0x5c')],{});db[_0x9f81('0x63')][_0x9f81('0x159')](db[_0x9f81('0x5e')],{});db['OpenchannelQueueReport']['belongsTo'](db[_0x9f81('0x13')],{});db[_0x9f81('0x63')]['belongsTo'](db['OpenchannelQueue'],{});db['ChatApplication'][_0x9f81('0x159')](db[_0x9f81('0x13')],{'as':_0x9f81('0x19a'),'foreignKey':_0x9f81('0x11d'),'onDelete':_0x9f81('0x167')});db['ChatApplication']['belongsTo'](db['ChatQueue'],{'as':_0x9f81('0x19b'),'foreignKey':_0x9f81('0x19c'),'onDelete':_0x9f81('0x167')});db['ChatApplication'][_0x9f81('0x159')](db[_0x9f81('0x61')],{'as':_0x9f81('0x19d'),'foreignKey':'ChatWebsiteId','onDelete':_0x9f81('0x167')});db[_0x9f81('0x64')][_0x9f81('0x159')](db[_0x9f81('0x8b')],{'onDelete':_0x9f81('0x167'),'foreignKey':'TagId'});db[_0x9f81('0x65')][_0x9f81('0x120')](db[_0x9f81('0x67')],{'as':_0x9f81('0x15f'),'onDelete':_0x9f81('0x11b'),'foreignKey':_0x9f81('0x19e')});db[_0x9f81('0x65')][_0x9f81('0x159')](db[_0x9f81('0x61')],{'as':_0x9f81('0x176'),'foreignKey':'ChatWebsiteId'});db[_0x9f81('0x65')][_0x9f81('0x159')](db[_0x9f81('0x6f')],{'as':'Contact','foreignKey':_0x9f81('0x177')});db[_0x9f81('0x65')][_0x9f81('0x159')](db[_0x9f81('0x13')],{'as':_0x9f81('0x18e'),'foreignKey':_0x9f81('0x11d')});db[_0x9f81('0x65')][_0x9f81('0x12f')](db['Tag'],{'through':_0x9f81('0x19f'),'as':_0x9f81('0x179')});db[_0x9f81('0x65')]['belongsToMany'](db['Tag'],{'through':_0x9f81('0x19f'),'as':_0x9f81('0x17a')});db[_0x9f81('0x65')][_0x9f81('0x12f')](db[_0x9f81('0x13')],{'as':_0x9f81('0x17b'),'through':_0x9f81('0x1a0'),'foreignKey':_0x9f81('0x19e')});db['ChatMessage'][_0x9f81('0x159')](db['User'],{'onDelete':'cascade','as':'User'});db[_0x9f81('0x67')]['belongsTo'](db[_0x9f81('0x6f')],{'onDelete':'cascade','as':_0x9f81('0x164'),'foreignKey':_0x9f81('0x177')});db[_0x9f81('0x67')][_0x9f81('0x159')](db[_0x9f81('0x65')],{'onDelete':_0x9f81('0x11b'),'as':'Interaction','foreignKey':'ChatInteractionId'});db[_0x9f81('0x67')][_0x9f81('0x159')](db['Attachment'],{'as':_0x9f81('0x17d'),'foreignKey':_0x9f81('0x18a')});db['ChatMessage'][_0x9f81('0x159')](db[_0x9f81('0x61')],{'as':_0x9f81('0x176'),'foreignKey':'ChatWebsiteId'});db[_0x9f81('0x181')][_0x9f81('0x120')](db['Attachment'],{'as':_0x9f81('0x17e'),'foreignKey':_0x9f81('0x182'),'onDelete':'cascade','hooks':!![]});db[_0x9f81('0x181')][_0x9f81('0x159')](db[_0x9f81('0x6f')],{'onDelete':_0x9f81('0x11b'),'as':'Contact','foreignKey':_0x9f81('0x177')});db[_0x9f81('0x181')][_0x9f81('0x159')](db[_0x9f81('0x61')],{'as':_0x9f81('0x176'),'foreignKey':'ChatWebsiteId'});db['ChatQueue']['belongsToMany'](db[_0x9f81('0x13')],{'as':'Agents','through':'UserChatQueue','hooks':!![]});db['ChatQueue'][_0x9f81('0x12f')](db[_0x9f81('0xee')],{'through':'team_has_chat_queues','as':_0x9f81('0x174')});db[_0x9f81('0x6a')][_0x9f81('0x120')](db[_0x9f81('0xd8')],{'as':'Messages','foreignKey':'ChatGroupId','onDelete':_0x9f81('0x11b')});db[_0x9f81('0x6a')][_0x9f81('0x12f')](db['User'],{'as':_0x9f81('0x150'),'through':_0x9f81('0x130')});db[_0x9f81('0x6c')][_0x9f81('0x159')](db[_0x9f81('0x61')],{'as':_0x9f81('0x19d'),'foreignKey':_0x9f81('0x180')});db[_0x9f81('0x6d')]['hasMany'](db[_0x9f81('0x6f')],{'as':_0x9f81('0x1a1'),'foreignKey':'CompanyId'});db[_0x9f81('0x6f')][_0x9f81('0x120')](db['CmContactHasItem'],{'as':_0x9f81('0x1a2'),'foreignKey':'CmContactId'});db[_0x9f81('0x6f')][_0x9f81('0x120')](db[_0x9f81('0x71')],{'as':'Hoppers','foreignKey':_0x9f81('0x177')});db['CmContact'][_0x9f81('0x120')](db['CmHopperFinal'],{'as':_0x9f81('0x153'),'foreignKey':_0x9f81('0x177')});db[_0x9f81('0x6f')][_0x9f81('0x120')](db[_0x9f81('0x77')],{'as':_0x9f81('0x154'),'foreignKey':_0x9f81('0x177')});db[_0x9f81('0x6f')][_0x9f81('0x120')](db[_0x9f81('0x79')],{'as':_0x9f81('0x79'),'foreignKey':'ContactId'});db['CmContact'][_0x9f81('0x120')](db[_0x9f81('0xdd')],{'as':_0x9f81('0x156'),'foreignKey':_0x9f81('0x177')});db[_0x9f81('0x6f')][_0x9f81('0x120')](db[_0x9f81('0x5c')],{'as':_0x9f81('0x125'),'foreignKey':_0x9f81('0x177'),'onDelete':_0x9f81('0x167')});db[_0x9f81('0x6f')][_0x9f81('0x120')](db[_0x9f81('0x65')],{'as':_0x9f81('0x126'),'foreignKey':'ContactId','onDelete':'restrict'});db[_0x9f81('0x6f')][_0x9f81('0x120')](db[_0x9f81('0x54')],{'as':_0x9f81('0x127'),'foreignKey':'ContactId','onDelete':_0x9f81('0x167')});db[_0x9f81('0x6f')][_0x9f81('0x120')](db[_0x9f81('0x49')],{'as':_0x9f81('0x128'),'foreignKey':_0x9f81('0x177'),'onDelete':_0x9f81('0x167')});db[_0x9f81('0x6f')][_0x9f81('0x120')](db[_0x9f81('0x3d')],{'as':_0x9f81('0x129'),'foreignKey':_0x9f81('0x177'),'onDelete':_0x9f81('0x167')});db[_0x9f81('0x6f')]['belongsTo'](db[_0x9f81('0x6d')],{'as':_0x9f81('0x1a3'),'foreignKey':'CompanyId'});db[_0x9f81('0x6f')]['belongsTo'](db[_0x9f81('0xff')],{'as':_0x9f81('0x16f'),'foreignKey':'ListId','onDelete':_0x9f81('0x11b')});db[_0x9f81('0x6f')]['belongsToMany'](db[_0x9f81('0x13')],{'as':'Users','through':_0x9f81('0x131')});db['CmContact']['belongsToMany'](db[_0x9f81('0x8b')],{'as':_0x9f81('0x179'),'through':'cm_contact_has_tags'});db[_0x9f81('0x6f')][_0x9f81('0x12f')](db['Tag'],{'through':_0x9f81('0x1a4'),'as':'ThroughTags'});db['CmHopper'][_0x9f81('0x120')](db['CmHopperAdditionalPhone'],{'as':_0x9f81('0x1a5'),'foreignKey':_0x9f81('0x1a6')});db['CmHopper'][_0x9f81('0x159')](db['CmContact'],{'as':_0x9f81('0x164'),'foreignKey':_0x9f81('0x177'),'onDelete':_0x9f81('0x11b')});db[_0x9f81('0x71')][_0x9f81('0x159')](db[_0x9f81('0xff')],{'as':'List','foreignKey':'ListId','onDelete':'cascade'});db[_0x9f81('0x71')]['belongsTo'](db[_0x9f81('0x13')],{'as':'Agent','foreignKey':_0x9f81('0x11d')});db[_0x9f81('0x71')]['belongsTo'](db[_0x9f81('0x19')],{'as':_0x9f81('0x19b'),'foreignKey':_0x9f81('0x151'),'onDelete':'cascade'});db[_0x9f81('0x71')]['belongsTo'](db[_0x9f81('0xf0')],{'as':_0x9f81('0xf0'),'foreignKey':_0x9f81('0x1a7'),'onDelete':_0x9f81('0x11b')});db[_0x9f81('0x71')][_0x9f81('0x159')](db[_0x9f81('0x13')],{'as':_0x9f81('0x18e'),'foreignKey':'OwnerId'});db[_0x9f81('0x73')][_0x9f81('0x159')](db[_0x9f81('0x6f')],{'as':_0x9f81('0x164'),'foreignKey':_0x9f81('0x177'),'onDelete':_0x9f81('0x11b')});db[_0x9f81('0x73')]['belongsTo'](db[_0x9f81('0xff')],{'as':_0x9f81('0x16f'),'foreignKey':_0x9f81('0x193'),'onDelete':_0x9f81('0x11b')});db['CmHopperBlack'][_0x9f81('0x159')](db[_0x9f81('0x19')],{'as':_0x9f81('0x19b'),'foreignKey':_0x9f81('0x151'),'onDelete':_0x9f81('0x11b')});db['CmHopperBlack'][_0x9f81('0x159')](db[_0x9f81('0xf0')],{'as':'Campaign','foreignKey':_0x9f81('0x1a7'),'onDelete':'cascade'});db[_0x9f81('0x7d')][_0x9f81('0x120')](db[_0x9f81('0x80')],{'as':{'plural':_0x9f81('0x1a8'),'singular':'OneAll'},'foreignKey':_0x9f81('0x1a9'),'onDelete':_0x9f81('0x11b'),'hooks':!![]});db[_0x9f81('0x7d')][_0x9f81('0x120')](db[_0x9f81('0x80')],{'as':{'plural':_0x9f81('0x1aa'),'singular':_0x9f81('0x1ab')},'foreignKey':_0x9f81('0x1ac'),'onDelete':_0x9f81('0x11b'),'hooks':!![]});db['Automation'][_0x9f81('0x120')](db[_0x9f81('0x1ad')],{'as':_0x9f81('0x1ae'),'foreignKey':_0x9f81('0x1af'),'onDelete':_0x9f81('0x11b'),'hooks':!![]});db[_0x9f81('0x16c')]['hasMany'](db[_0x9f81('0x16c')],{'as':_0x9f81('0x16d'),'foreignKey':'ParentId','onDelete':'cascade'});db['Interval'][_0x9f81('0x120')](db['Interval'],{'as':_0x9f81('0x1b0'),'foreignKey':'IntervalId','onDelete':_0x9f81('0x11b'),'hooks':!![],'required':![]});db['Interval'][_0x9f81('0x120')](db[_0x9f81('0x122')],{'as':_0x9f81('0x123'),'foreignKey':_0x9f81('0x183'),'onDelete':_0x9f81('0x167')});db[_0x9f81('0x81')][_0x9f81('0x120')](db[_0x9f81('0x40')],{'as':_0x9f81('0x1b1'),'foreignKey':_0x9f81('0x183')});db[_0x9f81('0x81')]['hasMany'](db[_0x9f81('0x64')],{'as':_0x9f81('0x1b2'),'foreignKey':_0x9f81('0x183')});db[_0x9f81('0x81')][_0x9f81('0x120')](db[_0x9f81('0x47')],{'as':_0x9f81('0x1b3'),'foreignKey':_0x9f81('0x183')});db[_0x9f81('0x81')][_0x9f81('0x120')](db['SmsApplication'],{'as':'SmsApplications','foreignKey':_0x9f81('0x183')});db[_0x9f81('0x87')][_0x9f81('0x159')](db[_0x9f81('0x38')],{});db['Schedule'][_0x9f81('0x159')](db[_0x9f81('0x9a')],{'foreignKey':_0x9f81('0x1b4')});db[_0x9f81('0x87')]['belongsTo'](db['AnalyticCustomReport'],{'foreignKey':'CustomReportId'});db['Sound'][_0x9f81('0x12f')](db[_0x9f81('0x18')],{'as':_0x9f81('0x1b5'),'through':_0x9f81('0x1b6'),'onDelete':_0x9f81('0x167')});db['Tag']['belongsToMany'](db['CmContact'],{'through':_0x9f81('0x1a4')});db[_0x9f81('0x8b')][_0x9f81('0x12f')](db['ChatInteraction'],{'through':_0x9f81('0x19f')});db[_0x9f81('0x8b')]['belongsToMany'](db[_0x9f81('0x3d')],{'through':_0x9f81('0x178')});db[_0x9f81('0x8b')]['belongsToMany'](db[_0x9f81('0x54')],{'through':_0x9f81('0x1b7')});db['Tag'][_0x9f81('0x12f')](db[_0x9f81('0x49')],{'through':_0x9f81('0x189')});db['Tag'][_0x9f81('0x12f')](db['OpenchannelInteraction'],{'through':_0x9f81('0x197')});db[_0x9f81('0x8b')][_0x9f81('0x12f')](db[_0x9f81('0x10a')],{'through':'whatsapp_interaction_has_tags'});db[_0x9f81('0x8e')][_0x9f81('0x159')](db['ContactItemType'],{'as':_0x9f81('0x1b8'),'foreignKey':_0x9f81('0x1b9')});db[_0x9f81('0x1ba')][_0x9f81('0x159')](db[_0x9f81('0x71')],{'as':_0x9f81('0x1bb'),'foreignKey':'CmHopperId'});db['CmContactHasItem'][_0x9f81('0x159')](db[_0x9f81('0x6f')],{'as':_0x9f81('0x164'),'foreignKey':_0x9f81('0x1bc')});db['Trigger'][_0x9f81('0x120')](db['Condition'],{'as':{'plural':_0x9f81('0x1bd'),'singular':'AllCondition'},'foreignKey':_0x9f81('0x1be'),'onDelete':_0x9f81('0x11b'),'hooks':!![]});db[_0x9f81('0x91')][_0x9f81('0x120')](db[_0x9f81('0x80')],{'as':{'plural':_0x9f81('0x1bf'),'singular':'AnyCondition'},'foreignKey':'TriggerAnyId','onDelete':_0x9f81('0x11b'),'hooks':!![]});db['Trigger'][_0x9f81('0x120')](db[_0x9f81('0x1ad')],{'as':_0x9f81('0x1ae'),'foreignKey':_0x9f81('0x1c0'),'onDelete':_0x9f81('0x11b'),'hooks':!![]});db['AnalyticCustomReport'][_0x9f81('0x120')](db[_0x9f81('0x9f')],{'as':'Fields','onDelete':'cascade','foreignKey':'CustomReportId','hooks':!![]});db[_0x9f81('0x9a')][_0x9f81('0x120')](db[_0x9f81('0x9f')],{'as':_0x9f81('0x1c1'),'onDelete':_0x9f81('0x11b'),'foreignKey':'DefaultReportId'});db[_0x9f81('0x9e')][_0x9f81('0x120')](db[_0x9f81('0x9f')],{'as':_0x9f81('0x1c1'),'onDelete':'cascade','foreignKey':_0x9f81('0x1c2')});db[_0x9f81('0x9f')][_0x9f81('0x159')](db[_0x9f81('0x9e')],{'foreignKey':_0x9f81('0x1c2')});db[_0x9f81('0xa3')][_0x9f81('0x120')](db[_0x9f81('0xa5')],{'as':_0x9f81('0x1c3'),'onDelete':_0x9f81('0x11b'),'foreignKey':_0x9f81('0x1c4')});db['SalesforceConfiguration']['hasMany'](db[_0x9f81('0xa7')],{'as':_0x9f81('0x1c5'),'onDelete':'cascade','foreignKey':_0x9f81('0x1c6')});db['SalesforceConfiguration'][_0x9f81('0x120')](db['SalesforceField'],{'as':_0x9f81('0x1c7'),'onDelete':_0x9f81('0x11b'),'foreignKey':'DescriptionId'});db['SalesforceConfiguration'][_0x9f81('0x120')](db[_0x9f81('0xa7')],{'as':'Fields','onDelete':_0x9f81('0x11b'),'foreignKey':_0x9f81('0x1c8')});db[_0x9f81('0xa5')][_0x9f81('0x159')](db[_0x9f81('0xa3')],{'as':_0x9f81('0x176'),'foreignKey':_0x9f81('0x1c4')});db[_0x9f81('0xa7')]['hasMany'](db['SalesforceField'],{'as':'Subject','foreignKey':'SubjectId'});db[_0x9f81('0xa7')][_0x9f81('0x120')](db['SalesforceField'],{'as':_0x9f81('0x1c9'),'foreignKey':'DescriptionId'});db['SalesforceField'][_0x9f81('0x120')](db[_0x9f81('0xa7')],{'as':_0x9f81('0x1ca'),'foreignKey':_0x9f81('0x1c8')});db['SalesforceField'][_0x9f81('0x159')](db[_0x9f81('0x93')],{'as':_0x9f81('0x93'),'foreignKey':_0x9f81('0x1cb')});db[_0x9f81('0xa9')]['hasMany'](db[_0x9f81('0xaa')],{'as':_0x9f81('0x1c3'),'onDelete':_0x9f81('0x11b'),'foreignKey':'AccountId'});db[_0x9f81('0xaa')][_0x9f81('0x120')](db['SugarcrmField'],{'as':_0x9f81('0x1c5'),'onDelete':_0x9f81('0x11b'),'foreignKey':_0x9f81('0x1c6')});db[_0x9f81('0xaa')][_0x9f81('0x120')](db[_0x9f81('0xac')],{'as':_0x9f81('0x1c7'),'onDelete':_0x9f81('0x11b'),'foreignKey':_0x9f81('0x1cc')});db[_0x9f81('0xaa')][_0x9f81('0x120')](db[_0x9f81('0xac')],{'as':'Fields','onDelete':'cascade','foreignKey':_0x9f81('0x1c8')});db[_0x9f81('0xaa')][_0x9f81('0x159')](db[_0x9f81('0xa9')],{'as':_0x9f81('0x176'),'foreignKey':_0x9f81('0x1c4')});db[_0x9f81('0xac')]['hasMany'](db[_0x9f81('0xac')],{'as':_0x9f81('0x1cd'),'foreignKey':'SubjectId'});db[_0x9f81('0xac')][_0x9f81('0x120')](db[_0x9f81('0xac')],{'as':_0x9f81('0x1c9'),'foreignKey':_0x9f81('0x1cc')});db['SugarcrmField']['hasMany'](db[_0x9f81('0xac')],{'as':_0x9f81('0x1ca'),'foreignKey':'FieldId'});db[_0x9f81('0xac')][_0x9f81('0x159')](db[_0x9f81('0x93')],{'as':_0x9f81('0x93'),'foreignKey':_0x9f81('0x1cb')});db[_0x9f81('0xae')][_0x9f81('0x120')](db[_0x9f81('0xb0')],{'as':_0x9f81('0x1c3'),'onDelete':_0x9f81('0x11b'),'foreignKey':'AccountId'});db[_0x9f81('0xb0')][_0x9f81('0x120')](db[_0x9f81('0xb1')],{'as':_0x9f81('0x1c5'),'onDelete':_0x9f81('0x11b'),'foreignKey':_0x9f81('0x1c6')});db[_0x9f81('0xb0')][_0x9f81('0x120')](db[_0x9f81('0xb1')],{'as':_0x9f81('0x1c7'),'onDelete':_0x9f81('0x11b'),'foreignKey':_0x9f81('0x1cc')});db[_0x9f81('0xb0')][_0x9f81('0x120')](db[_0x9f81('0xb1')],{'as':_0x9f81('0x1c1'),'onDelete':_0x9f81('0x11b'),'foreignKey':_0x9f81('0x1c8')});db[_0x9f81('0xb0')][_0x9f81('0x159')](db['DeskAccount'],{'as':_0x9f81('0x176'),'foreignKey':'AccountId'});db[_0x9f81('0xb0')][_0x9f81('0x12f')](db['Tag'],{'through':_0x9f81('0x1ce')});db[_0x9f81('0xb1')][_0x9f81('0x120')](db[_0x9f81('0xb1')],{'as':_0x9f81('0x1cd'),'foreignKey':_0x9f81('0x1c6')});db[_0x9f81('0xb1')]['hasMany'](db[_0x9f81('0xb1')],{'as':_0x9f81('0x1c9'),'foreignKey':_0x9f81('0x1cc')});db[_0x9f81('0xb1')][_0x9f81('0x120')](db[_0x9f81('0xb1')],{'as':_0x9f81('0x1ca'),'foreignKey':_0x9f81('0x1c8')});db['DeskField'][_0x9f81('0x159')](db['Variable'],{'as':_0x9f81('0x93'),'foreignKey':_0x9f81('0x1cb')});db[_0x9f81('0xb3')][_0x9f81('0x120')](db[_0x9f81('0x1cf')],{'as':_0x9f81('0x1c3'),'onDelete':'cascade','foreignKey':_0x9f81('0x1c4')});db[_0x9f81('0x1cf')]['hasMany'](db[_0x9f81('0xb6')],{'as':_0x9f81('0x1c5'),'onDelete':_0x9f81('0x11b'),'foreignKey':_0x9f81('0x1c6')});db[_0x9f81('0x1cf')][_0x9f81('0x120')](db['ZohoField'],{'as':_0x9f81('0x1c7'),'onDelete':_0x9f81('0x11b'),'foreignKey':_0x9f81('0x1cc')});db['ZohoConfiguration'][_0x9f81('0x120')](db['ZohoField'],{'as':_0x9f81('0x1c1'),'onDelete':_0x9f81('0x11b'),'foreignKey':_0x9f81('0x1c8')});db[_0x9f81('0x1cf')][_0x9f81('0x159')](db[_0x9f81('0xb3')],{'as':_0x9f81('0x176'),'foreignKey':_0x9f81('0x1c4')});db[_0x9f81('0xb6')]['hasMany'](db[_0x9f81('0xb6')],{'as':_0x9f81('0x1cd'),'foreignKey':_0x9f81('0x1c6')});db['ZohoField']['hasMany'](db[_0x9f81('0xb6')],{'as':_0x9f81('0x1c9'),'foreignKey':_0x9f81('0x1cc')});db[_0x9f81('0xb6')][_0x9f81('0x120')](db[_0x9f81('0xb6')],{'as':_0x9f81('0x1ca'),'foreignKey':_0x9f81('0x1c8')});db[_0x9f81('0xb6')][_0x9f81('0x159')](db[_0x9f81('0x93')],{'as':'Variable','foreignKey':_0x9f81('0x1cb')});db['ZendeskAccount'][_0x9f81('0x120')](db[_0x9f81('0xb9')],{'as':_0x9f81('0x1c3'),'onDelete':_0x9f81('0x11b'),'foreignKey':_0x9f81('0x1c4')});db[_0x9f81('0xb9')]['hasMany'](db[_0x9f81('0x1d0')],{'as':_0x9f81('0x1c5'),'foreignKey':_0x9f81('0x1c6')});db['ZendeskConfiguration']['hasMany'](db[_0x9f81('0x1d0')],{'as':_0x9f81('0x1c7'),'foreignKey':_0x9f81('0x1cc')});db[_0x9f81('0xb9')][_0x9f81('0x120')](db['ZendeskField'],{'as':_0x9f81('0x1c1'),'foreignKey':_0x9f81('0x1c8')});db[_0x9f81('0xb9')][_0x9f81('0x159')](db[_0x9f81('0xb8')],{'as':'Account','foreignKey':_0x9f81('0x1c4')});db[_0x9f81('0xb9')][_0x9f81('0x12f')](db['Tag'],{'through':'int_zendesk_configuration_has_tags'});db[_0x9f81('0x1d0')][_0x9f81('0x120')](db['ZendeskField'],{'as':_0x9f81('0x1cd'),'foreignKey':_0x9f81('0x1c6')});db['ZendeskField'][_0x9f81('0x120')](db[_0x9f81('0x1d0')],{'as':'Description','foreignKey':_0x9f81('0x1cc')});db['ZendeskField'][_0x9f81('0x120')](db['ZendeskField'],{'as':_0x9f81('0x1ca'),'foreignKey':_0x9f81('0x1c8')});db['ZendeskField'][_0x9f81('0x159')](db[_0x9f81('0x93')],{'as':_0x9f81('0x93'),'foreignKey':_0x9f81('0x1cb')});db[_0x9f81('0xbc')][_0x9f81('0x120')](db[_0x9f81('0xbd')],{'as':_0x9f81('0x1c3'),'onDelete':_0x9f81('0x11b'),'foreignKey':'AccountId'});db[_0x9f81('0xbd')][_0x9f81('0x120')](db['FreshdeskField'],{'as':_0x9f81('0x1c5'),'onDelete':_0x9f81('0x11b'),'foreignKey':'SubjectId'});db[_0x9f81('0xbd')][_0x9f81('0x120')](db[_0x9f81('0xbf')],{'as':'Descriptions','onDelete':_0x9f81('0x11b'),'foreignKey':_0x9f81('0x1cc')});db[_0x9f81('0xbd')][_0x9f81('0x120')](db['FreshdeskField'],{'as':_0x9f81('0x1c1'),'onDelete':_0x9f81('0x11b'),'foreignKey':_0x9f81('0x1c8')});db[_0x9f81('0xbd')][_0x9f81('0x159')](db[_0x9f81('0xbc')],{'as':_0x9f81('0x176'),'foreignKey':_0x9f81('0x1c4')});db['FreshdeskConfiguration'][_0x9f81('0x12f')](db[_0x9f81('0x8b')],{'through':'int_freshdesk_configuration_has_tags'});db['FreshdeskField'][_0x9f81('0x120')](db[_0x9f81('0xbf')],{'as':_0x9f81('0x1cd'),'foreignKey':_0x9f81('0x1c6')});db[_0x9f81('0xbf')]['hasMany'](db[_0x9f81('0xbf')],{'as':_0x9f81('0x1c9'),'foreignKey':'DescriptionId'});db[_0x9f81('0xbf')][_0x9f81('0x120')](db[_0x9f81('0xbf')],{'as':_0x9f81('0x1ca'),'foreignKey':_0x9f81('0x1c8')});db['FreshdeskField'][_0x9f81('0x159')](db[_0x9f81('0x93')],{'as':_0x9f81('0x93'),'foreignKey':'VariableId'});db['VtigerAccount'][_0x9f81('0x120')](db[_0x9f81('0xc3')],{'as':_0x9f81('0x1c3'),'onDelete':'cascade','foreignKey':_0x9f81('0x1c4')});db[_0x9f81('0xc3')][_0x9f81('0x120')](db[_0x9f81('0xc5')],{'as':_0x9f81('0x1c5'),'foreignKey':_0x9f81('0x1c6')});db[_0x9f81('0xc3')][_0x9f81('0x120')](db[_0x9f81('0xc5')],{'as':_0x9f81('0x1c7'),'foreignKey':'DescriptionId'});db[_0x9f81('0xc3')][_0x9f81('0x120')](db['VtigerField'],{'as':_0x9f81('0x1c1'),'foreignKey':_0x9f81('0x1c8')});db['VtigerConfiguration'][_0x9f81('0x159')](db[_0x9f81('0xc1')],{'as':_0x9f81('0x176'),'foreignKey':_0x9f81('0x1c4')});db[_0x9f81('0xc5')][_0x9f81('0x120')](db[_0x9f81('0xc5')],{'as':_0x9f81('0x1cd'),'foreignKey':_0x9f81('0x1c6')});db['VtigerField'][_0x9f81('0x120')](db[_0x9f81('0xc5')],{'as':_0x9f81('0x1c9'),'foreignKey':_0x9f81('0x1cc')});db[_0x9f81('0xc5')]['hasMany'](db['VtigerField'],{'as':_0x9f81('0x1ca'),'foreignKey':_0x9f81('0x1c8')});db['VtigerField'][_0x9f81('0x159')](db[_0x9f81('0x93')],{'as':'Variable','foreignKey':'VariableId'});db[_0x9f81('0xc7')]['hasMany'](db[_0x9f81('0xc9')],{'as':_0x9f81('0x1c3'),'onDelete':_0x9f81('0x11b'),'foreignKey':_0x9f81('0x1c4')});db['ServicenowConfiguration'][_0x9f81('0x120')](db['ServicenowField'],{'as':_0x9f81('0x1c5'),'foreignKey':_0x9f81('0x1c6')});db[_0x9f81('0xc9')]['hasMany'](db[_0x9f81('0xcb')],{'as':_0x9f81('0x1c7'),'foreignKey':_0x9f81('0x1cc')});db[_0x9f81('0xc9')]['hasMany'](db[_0x9f81('0xcb')],{'as':_0x9f81('0x1c1'),'foreignKey':_0x9f81('0x1c8')});db[_0x9f81('0xc9')]['belongsTo'](db[_0x9f81('0xc7')],{'as':_0x9f81('0x176'),'foreignKey':_0x9f81('0x1c4')});db[_0x9f81('0xcb')]['hasMany'](db[_0x9f81('0xcb')],{'as':_0x9f81('0x1cd'),'foreignKey':'SubjectId'});db[_0x9f81('0xcb')][_0x9f81('0x120')](db['ServicenowField'],{'as':_0x9f81('0x1c9'),'foreignKey':_0x9f81('0x1cc')});db[_0x9f81('0xcb')][_0x9f81('0x120')](db[_0x9f81('0xcb')],{'as':_0x9f81('0x1ca'),'foreignKey':'FieldId'});db[_0x9f81('0xcb')][_0x9f81('0x159')](db[_0x9f81('0x93')],{'as':_0x9f81('0x93'),'foreignKey':'VariableId'});db[_0x9f81('0xcd')]['hasMany'](db[_0x9f81('0x1d1')],{'as':_0x9f81('0x1c3'),'onDelete':_0x9f81('0x11b'),'foreignKey':_0x9f81('0x1c4')});db[_0x9f81('0xcd')][_0x9f81('0x159')](db[_0x9f81('0x165')],{'as':_0x9f81('0x165'),'foreignKey':_0x9f81('0x166')});db[_0x9f81('0x1d1')][_0x9f81('0x120')](db[_0x9f81('0xcf')],{'as':_0x9f81('0x1c5'),'onDelete':_0x9f81('0x11b'),'foreignKey':'SubjectId'});db['Dynamics365Configuration']['hasMany'](db[_0x9f81('0xcf')],{'as':_0x9f81('0x1c7'),'onDelete':_0x9f81('0x11b'),'foreignKey':'DescriptionId'});db[_0x9f81('0x1d1')][_0x9f81('0x120')](db['Dynamics365Field'],{'as':_0x9f81('0x1c1'),'onDelete':_0x9f81('0x11b'),'foreignKey':'FieldId'});db['Dynamics365Configuration'][_0x9f81('0x159')](db[_0x9f81('0xcd')],{'as':'Account','foreignKey':_0x9f81('0x1c4')});db[_0x9f81('0xcf')]['hasMany'](db[_0x9f81('0xcf')],{'as':_0x9f81('0x1cd'),'foreignKey':_0x9f81('0x1c6')});db[_0x9f81('0xcf')][_0x9f81('0x120')](db['Dynamics365Field'],{'as':_0x9f81('0x1c9'),'foreignKey':_0x9f81('0x1cc')});db[_0x9f81('0xcf')]['hasMany'](db[_0x9f81('0xcf')],{'as':_0x9f81('0x1ca'),'foreignKey':'FieldId'});db[_0x9f81('0xcf')][_0x9f81('0x159')](db[_0x9f81('0x93')],{'as':_0x9f81('0x93'),'foreignKey':_0x9f81('0x1cb')});db[_0x9f81('0xd1')][_0x9f81('0x120')](db[_0x9f81('0xd3')],{'as':_0x9f81('0x1c3'),'onDelete':_0x9f81('0x11b'),'foreignKey':'AccountId'});db[_0x9f81('0xd3')][_0x9f81('0x120')](db[_0x9f81('0xd4')],{'as':'Subjects','foreignKey':_0x9f81('0x1c6')});db['FreshsalesConfiguration'][_0x9f81('0x120')](db[_0x9f81('0xd4')],{'as':_0x9f81('0x1c7'),'foreignKey':'DescriptionId'});db[_0x9f81('0xd3')][_0x9f81('0x120')](db[_0x9f81('0xd4')],{'as':_0x9f81('0x1c1'),'foreignKey':_0x9f81('0x1c8')});db[_0x9f81('0xd3')][_0x9f81('0x159')](db[_0x9f81('0xd1')],{'as':_0x9f81('0x176'),'foreignKey':_0x9f81('0x1c4')});db['FreshsalesField'][_0x9f81('0x120')](db['FreshsalesField'],{'as':_0x9f81('0x1cd'),'foreignKey':_0x9f81('0x1c6')});db[_0x9f81('0xd4')][_0x9f81('0x120')](db[_0x9f81('0xd4')],{'as':'Description','foreignKey':_0x9f81('0x1cc')});db['FreshsalesField']['hasMany'](db[_0x9f81('0xd4')],{'as':'Field','foreignKey':'FieldId'});db[_0x9f81('0xd4')][_0x9f81('0x159')](db[_0x9f81('0x93')],{'as':_0x9f81('0x93'),'foreignKey':'VariableId'});db['ChatQueueReport'][_0x9f81('0x159')](db[_0x9f81('0x61')],{});db['ChatQueueReport'][_0x9f81('0x159')](db[_0x9f81('0xff')],{'as':_0x9f81('0x16f'),'foreignKey':_0x9f81('0x193')});db[_0x9f81('0xd7')][_0x9f81('0x159')](db[_0x9f81('0x6f')],{'as':_0x9f81('0x164'),'foreignKey':_0x9f81('0x177')});db[_0x9f81('0xd7')][_0x9f81('0x159')](db[_0x9f81('0x65')],{});db[_0x9f81('0xd7')][_0x9f81('0x159')](db['ChatMessage'],{});db[_0x9f81('0xd7')][_0x9f81('0x159')](db[_0x9f81('0x13')],{});db[_0x9f81('0xd7')][_0x9f81('0x159')](db['ChatQueue'],{});db[_0x9f81('0xd8')][_0x9f81('0x159')](db[_0x9f81('0x13')],{'onDelete':_0x9f81('0x11b'),'foreignKey':_0x9f81('0x1d2')});db[_0x9f81('0xd8')][_0x9f81('0x159')](db[_0x9f81('0x13')],{'onDelete':'cascade','foreignKey':_0x9f81('0x1d3')});db['JscriptySessionReport'][_0x9f81('0x120')](db[_0x9f81('0xdb')],{'foreignKey':'SessionId','onDelete':_0x9f81('0x11b')});db[_0x9f81('0xdd')][_0x9f81('0x120')](db[_0x9f81('0xda')],{'foreignKey':_0x9f81('0x1d4'),'onDelete':'cascade'});db[_0x9f81('0xdf')][_0x9f81('0x159')](db['SmsAccount'],{});db[_0x9f81('0xdf')]['belongsTo'](db[_0x9f81('0xff')],{'as':'List','foreignKey':_0x9f81('0x193')});db[_0x9f81('0xdf')][_0x9f81('0x159')](db[_0x9f81('0x6f')],{'as':_0x9f81('0x164'),'foreignKey':_0x9f81('0x177')});db[_0x9f81('0xdf')][_0x9f81('0x159')](db['SmsInteraction'],{});db[_0x9f81('0xdf')]['belongsTo'](db['SmsMessage'],{});db[_0x9f81('0xdf')][_0x9f81('0x159')](db[_0x9f81('0x13')],{});db['SmsQueueReport']['belongsTo'](db[_0x9f81('0x58')],{});db[_0x9f81('0xe5')][_0x9f81('0x120')](db[_0x9f81('0xdd')],{'foreignKey':_0x9f81('0x1d5')});db['JscriptyProject'][_0x9f81('0x120')](db[_0x9f81('0xdb')],{'foreignKey':_0x9f81('0x1d5')});db['JscriptyProject'][_0x9f81('0x120')](db[_0x9f81('0xda')],{'foreignKey':_0x9f81('0x1d5')});db[_0x9f81('0xe8')][_0x9f81('0x12f')](db['User'],{'as':_0x9f81('0x17b'),'through':_0x9f81('0x1d6')});db[_0x9f81('0xee')][_0x9f81('0x12f')](db['User'],{'as':_0x9f81('0x172'),'through':_0x9f81('0x134')});db[_0x9f81('0xee')][_0x9f81('0x12f')](db[_0x9f81('0x19')],{'through':_0x9f81('0x113'),'as':_0x9f81('0x13a')});db[_0x9f81('0xee')][_0x9f81('0x12f')](db[_0x9f81('0x13c')],{'through':_0x9f81('0x173'),'as':'MailQueues'});db[_0x9f81('0xee')][_0x9f81('0x12f')](db['ChatQueue'],{'through':'team_has_chat_queues','as':'ChatQueues'});db['Team'][_0x9f81('0x12f')](db[_0x9f81('0x4d')],{'through':'team_has_fax_queues','as':_0x9f81('0x1d7')});db[_0x9f81('0xee')]['belongsToMany'](db[_0x9f81('0x58')],{'through':_0x9f81('0x191'),'as':_0x9f81('0x1d8')});db[_0x9f81('0xee')][_0x9f81('0x12f')](db[_0x9f81('0x5f')],{'through':_0x9f81('0x198'),'as':_0x9f81('0x140')});db[_0x9f81('0xee')][_0x9f81('0x12f')](db[_0x9f81('0x110')],{'through':_0x9f81('0x1d9'),'as':_0x9f81('0x141')});db[_0x9f81('0xee')][_0x9f81('0x12f')](db[_0x9f81('0x101')],{'through':_0x9f81('0x115'),'as':'VoicePrefixes'});db[_0x9f81('0xf0')][_0x9f81('0x120')](db[_0x9f81('0x71')],{'as':'Hoppers','foreignKey':_0x9f81('0x1a7')});db[_0x9f81('0xf0')][_0x9f81('0x120')](db[_0x9f81('0x75')],{'as':_0x9f81('0x153'),'foreignKey':_0x9f81('0x1a7')});db[_0x9f81('0xf0')][_0x9f81('0x120')](db[_0x9f81('0x77')],{'as':_0x9f81('0x154'),'foreignKey':_0x9f81('0x1a7')});db[_0x9f81('0xf0')][_0x9f81('0x120')](db[_0x9f81('0x73')],{'as':'HopperBlacks','foreignKey':_0x9f81('0x1a7')});db['Campaign'][_0x9f81('0x159')](db['Trunk'],{'as':_0x9f81('0x157'),'foreignKey':_0x9f81('0x158')});db[_0x9f81('0xf0')][_0x9f81('0x159')](db['Trunk'],{'as':_0x9f81('0x15a'),'foreignKey':_0x9f81('0x15b')});db[_0x9f81('0xf0')][_0x9f81('0x159')](db[_0x9f81('0x81')],{'as':_0x9f81('0x81'),'foreignKey':'IntervalId'});db[_0x9f81('0xf0')][_0x9f81('0x159')](db[_0x9f81('0xe8')],{'as':_0x9f81('0xe8'),'foreignKey':_0x9f81('0x1da')});db[_0x9f81('0xf0')][_0x9f81('0x12f')](db[_0x9f81('0xff')],{'as':_0x9f81('0x132'),'through':_0x9f81('0x1db')});db[_0x9f81('0xf0')][_0x9f81('0x12f')](db[_0x9f81('0xff')],{'as':_0x9f81('0x1dc'),'through':_0x9f81('0x1dd')});db['Attachment']['belongsTo'](db[_0x9f81('0x181')],{'as':'ChatOfflineMessage','foreignKey':_0x9f81('0x182')});db[_0x9f81('0xf6')]['belongsTo'](db[_0x9f81('0x17c')],{});db[_0x9f81('0xf6')][_0x9f81('0x159')](db[_0x9f81('0x3d')],{});db['MailTransferReport']['belongsTo'](db['MailAccount'],{'foreignKey':_0x9f81('0x1de'),'as':_0x9f81('0x1df')});db[_0x9f81('0xf6')][_0x9f81('0x159')](db[_0x9f81('0x13')],{'foreignKey':_0x9f81('0x1e0'),'as':'FromAgent'});db[_0x9f81('0xf6')][_0x9f81('0x159')](db[_0x9f81('0x13')],{'foreignKey':_0x9f81('0x1e1'),'as':_0x9f81('0x1e2')});db[_0x9f81('0xf6')]['belongsTo'](db[_0x9f81('0x13c')],{'foreignKey':_0x9f81('0x1e3'),'as':_0x9f81('0x1e4')});db['MailTransferReport']['belongsTo'](db['MailAccount'],{'foreignKey':_0x9f81('0x1e5'),'as':_0x9f81('0x1e6')});db['ChatTransferReport']['belongsTo'](db[_0x9f81('0x67')],{});db[_0x9f81('0xf7')]['belongsTo'](db[_0x9f81('0x65')],{});db[_0x9f81('0xf7')]['belongsTo'](db['ChatWebsite'],{'foreignKey':_0x9f81('0x1e7'),'as':_0x9f81('0x1df')});db[_0x9f81('0xf7')][_0x9f81('0x159')](db[_0x9f81('0x13')],{'foreignKey':_0x9f81('0x1e0'),'as':_0x9f81('0x1e8')});db[_0x9f81('0xf7')][_0x9f81('0x159')](db[_0x9f81('0x13')],{'foreignKey':_0x9f81('0x1e1'),'as':_0x9f81('0x1e2')});db[_0x9f81('0xf7')][_0x9f81('0x159')](db[_0x9f81('0x1e9')],{'foreignKey':_0x9f81('0x1ea'),'as':_0x9f81('0x1e4')});db['ChatTransferReport'][_0x9f81('0x159')](db[_0x9f81('0x61')],{'foreignKey':_0x9f81('0x1eb'),'as':_0x9f81('0x1e6')});db[_0x9f81('0xf9')][_0x9f81('0x159')](db['FaxMessage'],{});db['FaxTransferReport'][_0x9f81('0x159')](db[_0x9f81('0x49')],{});db['FaxTransferReport'][_0x9f81('0x159')](db['FaxAccount'],{'foreignKey':_0x9f81('0x1ec'),'as':_0x9f81('0x1df')});db[_0x9f81('0xf9')][_0x9f81('0x159')](db[_0x9f81('0x13')],{'foreignKey':_0x9f81('0x1e0'),'as':_0x9f81('0x1e8')});db[_0x9f81('0xf9')]['belongsTo'](db[_0x9f81('0x13')],{'foreignKey':_0x9f81('0x1e1'),'as':'ToAgent'});db[_0x9f81('0xf9')]['belongsTo'](db['FaxQueue'],{'foreignKey':_0x9f81('0x1ed'),'as':_0x9f81('0x1e4')});db[_0x9f81('0xf9')][_0x9f81('0x159')](db['FaxAccount'],{'foreignKey':_0x9f81('0x1ee'),'as':_0x9f81('0x1e6')});db[_0x9f81('0xfb')][_0x9f81('0x159')](db[_0x9f81('0x5e')],{});db[_0x9f81('0xfb')][_0x9f81('0x159')](db[_0x9f81('0x5c')],{});db[_0x9f81('0xfb')]['belongsTo'](db[_0x9f81('0x5a')],{'foreignKey':_0x9f81('0x1ef'),'as':'FromAccount'});db[_0x9f81('0xfb')][_0x9f81('0x159')](db[_0x9f81('0x13')],{'foreignKey':_0x9f81('0x1e0'),'as':_0x9f81('0x1e8')});db[_0x9f81('0xfb')]['belongsTo'](db[_0x9f81('0x13')],{'foreignKey':_0x9f81('0x1e1'),'as':_0x9f81('0x1e2')});db['OpenchannelTransferReport'][_0x9f81('0x159')](db[_0x9f81('0x5f')],{'foreignKey':_0x9f81('0x1f0'),'as':_0x9f81('0x1e4')});db[_0x9f81('0xfb')]['belongsTo'](db['OpenchannelAccount'],{'foreignKey':_0x9f81('0x1f1'),'as':_0x9f81('0x1e6')});db['SmsTransferReport']['belongsTo'](db[_0x9f81('0x56')],{});db[_0x9f81('0xfd')][_0x9f81('0x159')](db[_0x9f81('0x54')],{});db[_0x9f81('0xfd')]['belongsTo'](db[_0x9f81('0x51')],{'foreignKey':_0x9f81('0x1f2'),'as':_0x9f81('0x1df')});db['SmsTransferReport'][_0x9f81('0x159')](db['User'],{'foreignKey':'FromUserId','as':_0x9f81('0x1e8')});db[_0x9f81('0xfd')][_0x9f81('0x159')](db['User'],{'foreignKey':_0x9f81('0x1e1'),'as':_0x9f81('0x1e2')});db[_0x9f81('0xfd')][_0x9f81('0x159')](db[_0x9f81('0x58')],{'foreignKey':_0x9f81('0x1f3'),'as':_0x9f81('0x1e4')});db[_0x9f81('0xfd')][_0x9f81('0x159')](db['SmsAccount'],{'foreignKey':'ToSmsAccountId','as':_0x9f81('0x1e6')});db['CmList']['hasMany'](db[_0x9f81('0x16c')],{'as':_0x9f81('0x16d'),'foreignKey':_0x9f81('0x193'),'onDelete':_0x9f81('0x11b')});db[_0x9f81('0xff')][_0x9f81('0x120')](db[_0x9f81('0x7b')],{'as':'CustomFields','foreignKey':'ListId'});db[_0x9f81('0xff')][_0x9f81('0x120')](db[_0x9f81('0x6f')],{'as':_0x9f81('0x1a1'),'onDelete':_0x9f81('0x11b'),'foreignKey':_0x9f81('0x193')});db['CmList']['hasMany'](db[_0x9f81('0x75')],{'as':_0x9f81('0x153'),'foreignKey':_0x9f81('0x193')});db['CmList'][_0x9f81('0x120')](db['CmHopperHistory'],{'as':_0x9f81('0x124'),'foreignKey':_0x9f81('0x193')});db[_0x9f81('0xff')][_0x9f81('0x120')](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':_0x9f81('0x193')});db[_0x9f81('0xff')][_0x9f81('0x12f')](db[_0x9f81('0x19')],{'as':_0x9f81('0x1f4'),'through':_0x9f81('0x15e')});db[_0x9f81('0xff')][_0x9f81('0x12f')](db[_0x9f81('0x13')],{'as':_0x9f81('0x172'),'through':'cm_user_has_lists'});db[_0x9f81('0x101')][_0x9f81('0x120')](db[_0x9f81('0x122')],{'as':'Extensions','onDelete':_0x9f81('0x11b')});db['VoicePrefix'][_0x9f81('0x12f')](db[_0x9f81('0x13')],{'as':'Agents','through':_0x9f81('0x117')});db['VoicePrefix'][_0x9f81('0x12f')](db[_0x9f81('0xee')],{'through':'TeamVoicePrefix','as':'Teams'});db['UserProfile'][_0x9f81('0x120')](db[_0x9f81('0x13')],{'as':_0x9f81('0x17b'),'foreignKey':_0x9f81('0x12e')});db[_0x9f81('0x103')][_0x9f81('0x120')](db[_0x9f81('0x104')],{'as':'UserProfileSections','foreignKey':'userProfileId','onDelete':'cascade'});db[_0x9f81('0x104')][_0x9f81('0x120')](db[_0x9f81('0x105')],{'as':'Resources','foreignKey':_0x9f81('0x1f5'),'onDelete':_0x9f81('0x11b')});db[_0x9f81('0x107')][_0x9f81('0x120')](db[_0x9f81('0x16c')],{'as':_0x9f81('0x16d'),'foreignKey':_0x9f81('0x1f6'),'onDelete':'cascade'});db['WhatsappAccount'][_0x9f81('0x120')](db[_0x9f81('0x7e')],{'as':'Answers','foreignKey':_0x9f81('0x1f6')});db['WhatsappAccount'][_0x9f81('0x120')](db['WhatsappMessage'],{'as':_0x9f81('0x15f'),'foreignKey':_0x9f81('0x1f6')});db[_0x9f81('0x107')]['hasMany'](db['WhatsappInteraction'],{'as':_0x9f81('0x16e')});db[_0x9f81('0x107')][_0x9f81('0x120')](db[_0x9f81('0x109')],{'as':_0x9f81('0x14e')});db[_0x9f81('0x107')][_0x9f81('0x159')](db[_0x9f81('0xff')],{'as':_0x9f81('0x16f'),'foreignKey':_0x9f81('0x193')});db[_0x9f81('0x107')][_0x9f81('0x159')](db[_0x9f81('0x83')],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db[_0x9f81('0x107')][_0x9f81('0x12f')](db[_0x9f81('0x13')],{'as':'Agents','through':_0x9f81('0x1f7')});db[_0x9f81('0x109')][_0x9f81('0x159')](db[_0x9f81('0x13')],{'onDelete':'restrict'});db['WhatsappApplication'][_0x9f81('0x159')](db[_0x9f81('0x110')],{'onDelete':_0x9f81('0x167')});db[_0x9f81('0x109')][_0x9f81('0x159')](db['WhatsappAccount'],{'onDelete':_0x9f81('0x167')});db['WhatsappApplication'][_0x9f81('0x159')](db[_0x9f81('0x81')],{'onDelete':_0x9f81('0x167'),'foreignKey':_0x9f81('0x183')});db['WhatsappApplication']['belongsTo'](db[_0x9f81('0x8b')],{'onDelete':'restrict','foreignKey':_0x9f81('0x187')});db['WhatsappInteraction'][_0x9f81('0x120')](db[_0x9f81('0x10c')],{'as':_0x9f81('0x15f'),'onDelete':_0x9f81('0x11b'),'foreignKey':'WhatsappInteractionId'});db[_0x9f81('0x10a')]['belongsTo'](db[_0x9f81('0x107')],{'as':_0x9f81('0x176'),'foreignKey':'WhatsappAccountId'});db[_0x9f81('0x10a')]['belongsTo'](db[_0x9f81('0x6f')],{'as':_0x9f81('0x164'),'foreignKey':_0x9f81('0x177')});db[_0x9f81('0x10a')][_0x9f81('0x159')](db[_0x9f81('0x13')],{'as':'Owner','foreignKey':_0x9f81('0x11d')});db[_0x9f81('0x10a')]['belongsToMany'](db[_0x9f81('0x8b')],{'through':_0x9f81('0x1f8'),'as':_0x9f81('0x179')});db['WhatsappInteraction'][_0x9f81('0x12f')](db[_0x9f81('0x8b')],{'through':'whatsapp_interaction_has_tags','as':_0x9f81('0x17a')});db[_0x9f81('0x10a')][_0x9f81('0x12f')](db[_0x9f81('0x13')],{'as':_0x9f81('0x17b'),'through':_0x9f81('0x139'),'foreignKey':_0x9f81('0x1f9')});db[_0x9f81('0x10c')]['belongsTo'](db['User'],{'as':_0x9f81('0x13')});db[_0x9f81('0x10c')][_0x9f81('0x159')](db[_0x9f81('0x6f')],{'onDelete':_0x9f81('0x11b'),'as':'Contact'});db[_0x9f81('0x10c')][_0x9f81('0x159')](db['WhatsappInteraction'],{'onDelete':'cascade','as':'Interaction','foreignKey':_0x9f81('0x1f9')});db[_0x9f81('0x10c')][_0x9f81('0x159')](db[_0x9f81('0x107')],{'as':'Account','foreignKey':_0x9f81('0x1f6')});db[_0x9f81('0x1fa')][_0x9f81('0x159')](db[_0x9f81('0x107')],{});db[_0x9f81('0x1fa')][_0x9f81('0x159')](db[_0x9f81('0xff')],{'as':_0x9f81('0x16f'),'foreignKey':'ListId'});db[_0x9f81('0x1fa')][_0x9f81('0x159')](db[_0x9f81('0x6f')],{'as':_0x9f81('0x164'),'foreignKey':_0x9f81('0x177')});db[_0x9f81('0x1fa')][_0x9f81('0x159')](db[_0x9f81('0x10a')],{});db[_0x9f81('0x1fa')][_0x9f81('0x159')](db[_0x9f81('0x110')],{});db[_0x9f81('0x1fa')][_0x9f81('0x159')](db[_0x9f81('0x10c')],{});db[_0x9f81('0x1fa')][_0x9f81('0x159')](db['User'],{});db[_0x9f81('0x10e')][_0x9f81('0x159')](db[_0x9f81('0x10c')],{});db[_0x9f81('0x10e')][_0x9f81('0x159')](db[_0x9f81('0x10a')],{});db[_0x9f81('0x10e')][_0x9f81('0x159')](db[_0x9f81('0x107')],{'foreignKey':_0x9f81('0x1fb'),'as':_0x9f81('0x1df')});db[_0x9f81('0x10e')][_0x9f81('0x159')](db['WhatsappAccount'],{'foreignKey':_0x9f81('0x1fc'),'as':_0x9f81('0x1e6')});db['WhatsappTransferReport'][_0x9f81('0x159')](db[_0x9f81('0x110')],{'foreignKey':_0x9f81('0x1fd'),'as':_0x9f81('0x1e4')});db[_0x9f81('0x10e')][_0x9f81('0x159')](db[_0x9f81('0x13')],{'foreignKey':_0x9f81('0x1e0'),'as':_0x9f81('0x1e8')});db['WhatsappTransferReport'][_0x9f81('0x159')](db[_0x9f81('0x13')],{'foreignKey':_0x9f81('0x1e1'),'as':_0x9f81('0x1e2')});db[_0x9f81('0x110')]['belongsToMany'](db[_0x9f81('0x13')],{'as':'Agents','through':_0x9f81('0x34'),'foreignKey':_0x9f81('0x1fe')});db[_0x9f81('0x110')][_0x9f81('0x12f')](db['Team'],{'through':_0x9f81('0x1d9'),'as':'Teams'});db['UserSetting'][_0x9f81('0x159')](db[_0x9f81('0x13')],{'as':_0x9f81('0x1ff'),'foreignKey':_0x9f81('0x11d'),'onDelete':_0x9f81('0x11b'),'hooks':!![]});db[_0x9f81('0x165')]['hasOne'](db[_0x9f81('0xcd')],{'as':_0x9f81('0xcd'),'onDelete':_0x9f81('0x167')});db[_0x9f81('0x165')][_0x9f81('0x11a')](db[_0x9f81('0x169')],{'as':_0x9f81('0x16a'),'onDelete':_0x9f81('0x167')});db[_0x9f81('0x165')][_0x9f81('0x11a')](db[_0x9f81('0x36')],{'as':'Smtp','onDelete':'restrict'});module[_0x9f81('0x200')]={'db':db,'dbH':dbH};
\ No newline at end of file
index f977282..793ad31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f31=['/api/auth/local','./api/authLocal','/api/auth/google','./api/authGoogle','/api/auth/activedirectory','./api/authActiveDirectory','/api/jira','/api/rpc','./api/rpc','/api/version','./api/system','/api/pm2','./api/pm2','./api/webbar','/api/logs','static','join','root','/apidoc','/demo','/snippet','snippet','3.0.0','/plugins','/server/files/plugins','route','get','resolve','appPath','path','express','setupLoggers','./api/client-side-logs','default','then','use','/api/users','./api/user','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/queues','./api/voiceQueue','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','./api/voiceMail','/api/voice/mails/messages','/api/voice/calls/reports','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','/api/voice/queues/reports','/api/members/reports','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','./api/mailServerOut','/api/mail/accounts','./api/mailAccount','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','./api/mailMessage','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','/api/sms/applications','./api/smsApplication','/api/sms/interactions','/api/sms/messages','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','/api/openchannel/applications','./api/openchannelApplication','./api/openchannelInteraction','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','./api/chatQueue','/api/chat/groups','./api/chatProactiveAction','/api/cm/companies','./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/cmCustomField','./api/action','/api/automations','/api/canned_answers','/api/dispositions','./api/disposition','/api/conditions','./api/condition','/api/intervals','./api/pause','/api/cdr','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','./api/schedule','/api/tags','/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/trigger','/api/variables','/api/integrations','./api/integration','/api/integrations/reports','./api/integrationReport','./api/analyticCustomReport','./api/analyticDefaultReport','/api/analytics/extracted_reports','/api/analytics/metrics','./api/analyticMetric','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','/api/integrations/sugarcrm/accounts','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','./api/intZohoAccount','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','./api/intZendeskField','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','./api/intVtigerAccount','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','./api/intDynamics365Field','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','/api/integrations/freshsales/fields','/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/sms/reports/queue','./api/smsQueueReport','/api/square/reports','./api/squareReport','/api/jscripty/projects','/api/settings','./api/setting','/api/square/odbc','./api/squareOdbc','/api/square/projects','/api/square/recordings','./api/squareRecording','./api/squareMessage','/api/teams','./api/team','/api/license','./api/license','/api/campaigns','/api/migrations','./api/migration','/api/attachments','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','./api/chatTransferReport','./api/faxTransferReport','/api/openchannel/reports/transfer','/api/sms/reports/transfer','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','/api/userProfile/resources','./api/userProfileResource','/api/whatsapp/accounts','/api/whatsapp/applications','./api/whatsappApplication','/api/whatsapp/interactions','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/realtime','/api/user-settings'];(function(_0xa28b1a,_0x384f4b){var _0x4c9b78=function(_0x3cf640){while(--_0x3cf640){_0xa28b1a['push'](_0xa28b1a['shift']());}};_0x4c9b78(++_0x384f4b);}(_0x1f31,0x12d));var _0x11f3=function(_0x4d67b8,_0x565134){_0x4d67b8=_0x4d67b8-0x0;var _0x55af3b=_0x1f31[_0x4d67b8];return _0x55af3b;};'use strict';var path=require(_0x11f3('0x0'));var express=require(_0x11f3('0x1'));var errors=require('./errors');var config=require('./config/environment');var setupLoggers=require('./utils/client-side-logger')[_0x11f3('0x2')];var clientSideLogs=require(_0x11f3('0x3'));exports[_0x11f3('0x4')]=function(_0x15b622){return setupLoggers(_0x15b622)[_0x11f3('0x5')](function(){_0x15b622[_0x11f3('0x6')](_0x11f3('0x7'),require(_0x11f3('0x8')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x9'),require(_0x11f3('0xa')));_0x15b622['use']('/api/voice/contexts',require('./api/voiceContext'));_0x15b622[_0x11f3('0x6')](_0x11f3('0xb'),require(_0x11f3('0xc')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xd'),require(_0x11f3('0xe')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xf'),require(_0x11f3('0x10')));_0x15b622[_0x11f3('0x6')]('/api/voice/recordings',require(_0x11f3('0x11')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x12'),require(_0x11f3('0x13')));_0x15b622['use']('/api/voice/mails',require(_0x11f3('0x14')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x15'),require('./api/voiceMailMessage'));_0x15b622[_0x11f3('0x6')](_0x11f3('0x16'),require('./api/voiceCallReport'));_0x15b622[_0x11f3('0x6')](_0x11f3('0x17'),require(_0x11f3('0x18')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x19'),require('./api/voiceAgentReport'));_0x15b622[_0x11f3('0x6')](_0x11f3('0x1a'),require('./api/voiceQueueReport'));_0x15b622['use'](_0x11f3('0x1b'),require('./api/memberReport'));_0x15b622[_0x11f3('0x6')]('/api/trunks',require(_0x11f3('0x1c')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x1d'),require(_0x11f3('0x1e')));_0x15b622['use'](_0x11f3('0x1f'),require(_0x11f3('0x20')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x21'),require(_0x11f3('0x22')));_0x15b622[_0x11f3('0x6')]('/api/mail/queues',require(_0x11f3('0x23')));_0x15b622['use'](_0x11f3('0x24'),require(_0x11f3('0x25')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x26'),require(_0x11f3('0x27')));_0x15b622['use'](_0x11f3('0x28'),require(_0x11f3('0x29')));_0x15b622[_0x11f3('0x6')]('/api/mail/applications',require(_0x11f3('0x2a')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x2b'),require(_0x11f3('0x2c')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x2d'),require('./api/dashboard'));_0x15b622[_0x11f3('0x6')]('/api/dashboards/items',require(_0x11f3('0x2e')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x2f'),require(_0x11f3('0x30')));_0x15b622[_0x11f3('0x6')]('/api/fax/applications',require(_0x11f3('0x31')));_0x15b622['use'](_0x11f3('0x32'),require(_0x11f3('0x33')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x34'),require(_0x11f3('0x35')));_0x15b622['use'](_0x11f3('0x36'),require(_0x11f3('0x37')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x38'),require(_0x11f3('0x39')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x3a'),require(_0x11f3('0x3b')));_0x15b622['use'](_0x11f3('0x3c'),require(_0x11f3('0x3d')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x3e'),require('./api/smsInteraction'));_0x15b622[_0x11f3('0x6')](_0x11f3('0x3f'),require('./api/smsMessage'));_0x15b622[_0x11f3('0x6')](_0x11f3('0x40'),require(_0x11f3('0x41')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x42'),require('./api/openchannelAccount'));_0x15b622['use'](_0x11f3('0x43'),require(_0x11f3('0x44')));_0x15b622[_0x11f3('0x6')]('/api/openchannel/interactions',require(_0x11f3('0x45')));_0x15b622[_0x11f3('0x6')]('/api/openchannel/messages',require('./api/openchannelMessage'));_0x15b622[_0x11f3('0x6')](_0x11f3('0x46'),require(_0x11f3('0x47')));_0x15b622['use'](_0x11f3('0x48'),require(_0x11f3('0x49')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x4a'),require(_0x11f3('0x4b')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x4c'),require(_0x11f3('0x4d')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x4e'),require(_0x11f3('0x4f')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x50'),require('./api/chatMessage'));_0x15b622[_0x11f3('0x6')](_0x11f3('0x51'),require(_0x11f3('0x52')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x53'),require(_0x11f3('0x54')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x55'),require('./api/chatGroup'));_0x15b622[_0x11f3('0x6')]('/api/chat/proactive_actions',require(_0x11f3('0x56')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x57'),require('./api/cmCompany'));_0x15b622['use']('/api/cm/contacts',require(_0x11f3('0x58')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x59'),require(_0x11f3('0x5a')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x5b'),require(_0x11f3('0x5c')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x5d'),require(_0x11f3('0x5e')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x5f'),require(_0x11f3('0x60')));_0x15b622[_0x11f3('0x6')]('/api/cm/custom_fields',require(_0x11f3('0x61')));_0x15b622['use']('/api/actions',require(_0x11f3('0x62')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x63'),require('./api/automation'));_0x15b622[_0x11f3('0x6')](_0x11f3('0x64'),require('./api/cannedAnswer'));_0x15b622[_0x11f3('0x6')](_0x11f3('0x65'),require(_0x11f3('0x66')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x67'),require(_0x11f3('0x68')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x69'),require('./api/interval'));_0x15b622[_0x11f3('0x6')]('/api/pauses',require(_0x11f3('0x6a')));_0x15b622['use'](_0x11f3('0x6b'),require(_0x11f3('0x6c')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x6d'),require(_0x11f3('0x6e')));_0x15b622[_0x11f3('0x6')]('/api/schedules',require(_0x11f3('0x6f')));_0x15b622['use']('/api/sounds',require('./api/sound'));_0x15b622[_0x11f3('0x6')](_0x11f3('0x70'),require('./api/tag'));_0x15b622['use'](_0x11f3('0x71'),require(_0x11f3('0x72')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x73'),require(_0x11f3('0x74')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x75'),require(_0x11f3('0x76')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x77'),require(_0x11f3('0x78')));_0x15b622['use'](_0x11f3('0x79'),require(_0x11f3('0x7a')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x7b'),require('./api/variable'));_0x15b622['use'](_0x11f3('0x7c'),require(_0x11f3('0x7d')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x7e'),require(_0x11f3('0x7f')));_0x15b622[_0x11f3('0x6')]('/api/analytics/custom_reports',require(_0x11f3('0x80')));_0x15b622[_0x11f3('0x6')]('/api/analytics/default_reports',require(_0x11f3('0x81')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x82'),require('./api/analyticExtractedReport'));_0x15b622[_0x11f3('0x6')](_0x11f3('0x83'),require(_0x11f3('0x84')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x85'),require(_0x11f3('0x86')));_0x15b622['use'](_0x11f3('0x87'),require('./api/analyticTreeReport'));_0x15b622[_0x11f3('0x6')](_0x11f3('0x88'),require(_0x11f3('0x89')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x8a'),require(_0x11f3('0x8b')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x8c'),require('./api/intSalesforceField'));_0x15b622[_0x11f3('0x6')](_0x11f3('0x8d'),require('./api/intSugarcrmAccount'));_0x15b622[_0x11f3('0x6')](_0x11f3('0x8e'),require(_0x11f3('0x8f')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x90'),require('./api/intSugarcrmField'));_0x15b622[_0x11f3('0x6')](_0x11f3('0x91'),require(_0x11f3('0x92')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x93'),require(_0x11f3('0x94')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x95'),require(_0x11f3('0x96')));_0x15b622[_0x11f3('0x6')]('/api/integrations/zoho/accounts',require(_0x11f3('0x97')));_0x15b622[_0x11f3('0x6')]('/api/integrations/zoho/configurations',require('./api/intZohoConfiguration'));_0x15b622[_0x11f3('0x6')](_0x11f3('0x98'),require(_0x11f3('0x99')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x9a'),require('./api/intZendeskAccount'));_0x15b622['use'](_0x11f3('0x9b'),require(_0x11f3('0x9c')));_0x15b622[_0x11f3('0x6')]('/api/integrations/zendesk/fields',require(_0x11f3('0x9d')));_0x15b622[_0x11f3('0x6')]('/api/integrations/freshdesk/accounts',require(_0x11f3('0x9e')));_0x15b622['use'](_0x11f3('0x9f'),require(_0x11f3('0xa0')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xa1'),require(_0x11f3('0xa2')));_0x15b622[_0x11f3('0x6')]('/api/integrations/vtiger/accounts',require(_0x11f3('0xa3')));_0x15b622['use'](_0x11f3('0xa4'),require(_0x11f3('0xa5')));_0x15b622['use'](_0x11f3('0xa6'),require('./api/intVtigerField'));_0x15b622[_0x11f3('0x6')](_0x11f3('0xa7'),require(_0x11f3('0xa8')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xa9'),require('./api/intServicenowConfiguration'));_0x15b622['use']('/api/integrations/servicenow/fields',require('./api/intServicenowField'));_0x15b622[_0x11f3('0x6')](_0x11f3('0xaa'),require(_0x11f3('0xab')));_0x15b622['use'](_0x11f3('0xac'),require(_0x11f3('0xad')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xae'),require(_0x11f3('0xaf')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xb0'),require(_0x11f3('0xb1')));_0x15b622['use'](_0x11f3('0xb2'),require('./api/intFreshsalesConfiguration'));_0x15b622['use'](_0x11f3('0xb3'),require('./api/intFreshsalesField'));_0x15b622[_0x11f3('0x6')](_0x11f3('0xb4'),require(_0x11f3('0xb5')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xb6'),require(_0x11f3('0xb7')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xb8'),require(_0x11f3('0xb9')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xba'),require(_0x11f3('0xbb')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xbc'),require(_0x11f3('0xbd')));_0x15b622['use'](_0x11f3('0xbe'),require('./api/jscriptySessionReport'));_0x15b622[_0x11f3('0x6')](_0x11f3('0xbf'),require(_0x11f3('0xc0')));_0x15b622['use'](_0x11f3('0xc1'),require(_0x11f3('0xc2')));_0x15b622[_0x11f3('0x6')]('/api/square/details/reports',require('./api/squareReportDetail'));_0x15b622['use'](_0x11f3('0xc3'),require('./api/jscriptyProject'));_0x15b622['use'](_0x11f3('0xc4'),require(_0x11f3('0xc5')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xc6'),require(_0x11f3('0xc7')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xc8'),require('./api/squareProject'));_0x15b622[_0x11f3('0x6')](_0x11f3('0xc9'),require(_0x11f3('0xca')));_0x15b622['use']('/api/square/messages',require(_0x11f3('0xcb')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xcc'),require(_0x11f3('0xcd')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xce'),require(_0x11f3('0xcf')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xd0'),require('./api/campaign'));_0x15b622['use'](_0x11f3('0xd1'),require(_0x11f3('0xd2')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xd3'),require(_0x11f3('0xd4')));_0x15b622['use'](_0x11f3('0xd5'),require(_0x11f3('0xd6')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xd7'),require(_0x11f3('0xd8')));_0x15b622[_0x11f3('0x6')]('/api/chat/reports/transfer',require(_0x11f3('0xd9')));_0x15b622[_0x11f3('0x6')]('/api/fax/reports/transfer',require(_0x11f3('0xda')));_0x15b622['use'](_0x11f3('0xdb'),require('./api/openchannelTransferReport'));_0x15b622['use'](_0x11f3('0xdc'),require('./api/smsTransferReport'));_0x15b622['use']('/api/cm/lists',require('./api/cmList'));_0x15b622[_0x11f3('0x6')]('/api/voice/prefixes',require(_0x11f3('0xdd')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xde'),require(_0x11f3('0xdf')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xe0'),require('./api/userProfileSection'));_0x15b622[_0x11f3('0x6')](_0x11f3('0xe1'),require(_0x11f3('0xe2')));_0x15b622[_0x11f3('0x6')]('/api/userNotifications',require('./api/userNotification'));_0x15b622[_0x11f3('0x6')](_0x11f3('0xe3'),require('./api/whatsappAccount'));_0x15b622['use'](_0x11f3('0xe4'),require(_0x11f3('0xe5')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xe6'),require(_0x11f3('0xe7')));_0x15b622['use'](_0x11f3('0xe8'),require(_0x11f3('0xe9')));_0x15b622['use'](_0x11f3('0xea'),require(_0x11f3('0xeb')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xec'),require('./api/whatsappTransferReport'));_0x15b622['use']('/api/whatsapp/queues',require(_0x11f3('0xed')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xee'),require(_0x11f3('0xef')));_0x15b622['use'](_0x11f3('0xf0'),require(_0x11f3('0xf1')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xf2'),require('./api/user-setting'));_0x15b622[_0x11f3('0x6')](_0x11f3('0xf3'),require(_0x11f3('0xf4')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xf5'),require(_0x11f3('0xf6')));_0x15b622['use'](_0x11f3('0xf7'),require(_0x11f3('0xf8')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xf9'),require('./api/jira'));_0x15b622[_0x11f3('0x6')](_0x11f3('0xfa'),require(_0x11f3('0xfb')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xfc'),require('./api/version'));_0x15b622[_0x11f3('0x6')]('/api/system',require(_0x11f3('0xfd')));_0x15b622[_0x11f3('0x6')](_0x11f3('0xfe'),require(_0x11f3('0xff')));_0x15b622[_0x11f3('0x6')]('/api/webbar',require(_0x11f3('0x100')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x101'),clientSideLogs);_0x15b622[_0x11f3('0x6')]('/apidoc',express[_0x11f3('0x102')](path[_0x11f3('0x103')](config[_0x11f3('0x104')],_0x11f3('0x105'))));_0x15b622[_0x11f3('0x6')]('/www',express['static'](path[_0x11f3('0x103')](config[_0x11f3('0x104')],'/www')));_0x15b622[_0x11f3('0x6')](_0x11f3('0x106'),express['static'](path[_0x11f3('0x103')](config[_0x11f3('0x104')],_0x11f3('0x106'))));_0x15b622[_0x11f3('0x6')](_0x11f3('0x107'),express['static'](path['join'](config[_0x11f3('0x104')],_0x11f3('0x108'),_0x11f3('0x109'))));_0x15b622['use'](_0x11f3('0x10a'),express[_0x11f3('0x102')](path['join'](config[_0x11f3('0x104')],_0x11f3('0x10b'))));_0x15b622[_0x11f3('0x10c')]('/:url(api|auth|components|app|bower_components|assets)/*')[_0x11f3('0x10d')](errors[0x194]);_0x15b622['route']('/*')['get'](function(_0xe574ba,_0x27d7ac){_0x27d7ac['sendFile'](path[_0x11f3('0x10e')](_0x15b622[_0x11f3('0x10d')](_0x11f3('0x10f'))+'/index.html'));});return _0x15b622;});};
\ No newline at end of file
+var _0x4e34=['./api/cmContact','/api/cm/hopper','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','/api/cm/custom_fields','/api/actions','./api/action','./api/automation','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/intervals','./api/pause','/api/cdr','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/schedules','./api/schedule','/api/sounds','./api/sound','/api/tags','/api/contact_item_types','./api/contactItemType','/api/cm_contact_has_items','./api/cmContactHasItem','/api/cm_hopper_additional_phones','./api/cmHopperAdditionalPhone','./api/template','./api/trigger','./api/variable','./api/integration','./api/integrationReport','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','./api/analyticMetric','/api/analytics/field_reports','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','./api/intSalesforceField','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','./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/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','./api/intVtigerAccount','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','/api/integrations/dynamics365/accounts','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/networks','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/smsQueueReport','/api/square/reports','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','/api/settings','/api/square/odbc','./api/squareOdbc','/api/square/projects','/api/square/recordings','./api/squareRecording','/api/square/messages','/api/teams','./api/team','/api/license','./api/license','/api/campaigns','./api/campaign','/api/migrations','./api/migration','/api/attachments','/api/plugins','./api/plugin','/api/mail/reports/transfer','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','/api/userProfile/resources','/api/userNotifications','/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/cloudProviders','./api/cloudProvider','/api/realtime','./api/realtime','/api/user-settings','./api/user-setting','/api/auth/local','./api/authLocal','/api/auth/google','/api/auth/activedirectory','/api/jira','./api/jira','/api/rpc','./api/rpc','/api/version','/api/system','./api/system','./api/pm2','/apidoc','static','join','root','/www','/demo','/snippet','snippet','/plugins','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','resolve','appPath','/index.html','path','./errors','./config/environment','./utils/client-side-logger','setupLoggers','./api/client-side-logs','default','then','use','/api/users','./api/user','./api/voiceChanSpy','/api/voice/extensions','./api/voiceMusicOnHold','/api/voice/queues','./api/voiceQueue','/api/voice/recordings','./api/voiceRecording','./api/screenRecording','/api/voice/mails','./api/voiceMail','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','./api/memberReport','/api/trunks','./api/trunk','./api/voiceTransferReport','./api/mailServerOut','/api/mail/accounts','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','./api/mailMessage','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','./api/dashboard','/api/fax/accounts','./api/faxAccount','/api/fax/applications','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','/api/sms/applications','./api/smsApplication','./api/smsInteraction','/api/sms/messages','./api/smsMessage','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelMessage','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','./api/chatQueue','/api/chat/groups','./api/chatGroup','/api/chat/proactive_actions','/api/cm/companies','/api/cm/contacts'];(function(_0x215e65,_0x183f97){var _0xa85842=function(_0x43bf45){while(--_0x43bf45){_0x215e65['push'](_0x215e65['shift']());}};_0xa85842(++_0x183f97);}(_0x4e34,0x1d2));var _0x44e3=function(_0x37858c,_0x49f079){_0x37858c=_0x37858c-0x0;var _0x3d7e25=_0x4e34[_0x37858c];return _0x3d7e25;};'use strict';var path=require(_0x44e3('0x0'));var express=require('express');var errors=require(_0x44e3('0x1'));var config=require(_0x44e3('0x2'));var setupLoggers=require(_0x44e3('0x3'))[_0x44e3('0x4')];var clientSideLogs=require(_0x44e3('0x5'));exports[_0x44e3('0x6')]=function(_0x5e713b){return setupLoggers(_0x5e713b)[_0x44e3('0x7')](function(){_0x5e713b[_0x44e3('0x8')](_0x44e3('0x9'),require(_0x44e3('0xa')));_0x5e713b[_0x44e3('0x8')]('/api/voice/chanspy',require(_0x44e3('0xb')));_0x5e713b[_0x44e3('0x8')]('/api/voice/contexts',require('./api/voiceContext'));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xc'),require('./api/voiceExtension'));_0x5e713b[_0x44e3('0x8')]('/api/voice/mohs',require(_0x44e3('0xd')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xe'),require(_0x44e3('0xf')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x10'),require(_0x44e3('0x11')));_0x5e713b['use']('/api/screen/recordings',require(_0x44e3('0x12')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x13'),require(_0x44e3('0x14')));_0x5e713b[_0x44e3('0x8')]('/api/voice/mails/messages',require('./api/voiceMailMessage'));_0x5e713b['use'](_0x44e3('0x15'),require(_0x44e3('0x16')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x17'),require(_0x44e3('0x18')));_0x5e713b[_0x44e3('0x8')]('/api/voice/agents/reports',require(_0x44e3('0x19')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x1a'),require(_0x44e3('0x1b')));_0x5e713b['use'](_0x44e3('0x1c'),require(_0x44e3('0x1d')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x1e'),require(_0x44e3('0x1f')));_0x5e713b[_0x44e3('0x8')]('/api/voice/transfers/reports',require(_0x44e3('0x20')));_0x5e713b[_0x44e3('0x8')]('/api/mail/out_servers',require(_0x44e3('0x21')));_0x5e713b['use'](_0x44e3('0x22'),require('./api/mailAccount'));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x23'),require(_0x44e3('0x24')));_0x5e713b['use'](_0x44e3('0x25'),require(_0x44e3('0x26')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x27'),require(_0x44e3('0x28')));_0x5e713b['use'](_0x44e3('0x29'),require(_0x44e3('0x2a')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x2b'),require(_0x44e3('0x2c')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x2d'),require(_0x44e3('0x2e')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x2f'),require(_0x44e3('0x30')));_0x5e713b[_0x44e3('0x8')]('/api/dashboards/items',require('./api/dashboardItem'));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x31'),require(_0x44e3('0x32')));_0x5e713b['use'](_0x44e3('0x33'),require(_0x44e3('0x34')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x35'),require(_0x44e3('0x36')));_0x5e713b[_0x44e3('0x8')]('/api/fax/messages',require(_0x44e3('0x37')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x38'),require(_0x44e3('0x39')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x3a'),require(_0x44e3('0x3b')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x3c'),require(_0x44e3('0x3d')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x3e'),require(_0x44e3('0x3f')));_0x5e713b[_0x44e3('0x8')]('/api/sms/interactions',require(_0x44e3('0x40')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x41'),require(_0x44e3('0x42')));_0x5e713b[_0x44e3('0x8')]('/api/sms/queues',require('./api/smsQueue'));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x43'),require(_0x44e3('0x44')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x45'),require(_0x44e3('0x46')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x47'),require(_0x44e3('0x48')));_0x5e713b['use'](_0x44e3('0x49'),require(_0x44e3('0x4a')));_0x5e713b[_0x44e3('0x8')]('/api/openchannel/queues',require('./api/openchannelQueue'));_0x5e713b[_0x44e3('0x8')]('/api/chat/websites',require(_0x44e3('0x4b')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x4c'),require(_0x44e3('0x4d')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x4e'),require(_0x44e3('0x4f')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x50'),require(_0x44e3('0x51')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x52'),require('./api/chatMessage'));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x53'),require(_0x44e3('0x54')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x55'),require(_0x44e3('0x56')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x57'),require(_0x44e3('0x58')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x59'),require('./api/chatProactiveAction'));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x5a'),require('./api/cmCompany'));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x5b'),require(_0x44e3('0x5c')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x5d'),require('./api/cmHopper'));_0x5e713b['use']('/api/cm/hopper_black',require(_0x44e3('0x5e')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x5f'),require(_0x44e3('0x60')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x61'),require(_0x44e3('0x62')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x63'),require('./api/cmCustomField'));_0x5e713b['use'](_0x44e3('0x64'),require(_0x44e3('0x65')));_0x5e713b[_0x44e3('0x8')]('/api/automations',require(_0x44e3('0x66')));_0x5e713b[_0x44e3('0x8')]('/api/canned_answers',require(_0x44e3('0x67')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x68'),require(_0x44e3('0x69')));_0x5e713b[_0x44e3('0x8')]('/api/conditions',require('./api/condition'));_0x5e713b['use'](_0x44e3('0x6a'),require('./api/interval'));_0x5e713b[_0x44e3('0x8')]('/api/pauses',require(_0x44e3('0x6b')));_0x5e713b['use'](_0x44e3('0x6c'),require(_0x44e3('0x6d')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x6e'),require(_0x44e3('0x6f')));_0x5e713b['use'](_0x44e3('0x70'),require(_0x44e3('0x71')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x72'),require(_0x44e3('0x73')));_0x5e713b['use'](_0x44e3('0x74'),require('./api/tag'));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x75'),require(_0x44e3('0x76')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x77'),require(_0x44e3('0x78')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x79'),require(_0x44e3('0x7a')));_0x5e713b[_0x44e3('0x8')]('/api/templates',require(_0x44e3('0x7b')));_0x5e713b[_0x44e3('0x8')]('/api/triggers',require(_0x44e3('0x7c')));_0x5e713b[_0x44e3('0x8')]('/api/variables',require(_0x44e3('0x7d')));_0x5e713b[_0x44e3('0x8')]('/api/integrations',require(_0x44e3('0x7e')));_0x5e713b[_0x44e3('0x8')]('/api/integrations/reports',require(_0x44e3('0x7f')));_0x5e713b['use']('/api/analytics/custom_reports',require(_0x44e3('0x80')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x81'),require(_0x44e3('0x82')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x83'),require(_0x44e3('0x84')));_0x5e713b['use']('/api/analytics/metrics',require(_0x44e3('0x85')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x86'),require('./api/analyticFieldReport'));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x87'),require(_0x44e3('0x88')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x89'),require(_0x44e3('0x8a')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x8b'),require(_0x44e3('0x8c')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x8d'),require(_0x44e3('0x8e')));_0x5e713b[_0x44e3('0x8')]('/api/integrations/sugarcrm/accounts',require(_0x44e3('0x8f')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x90'),require(_0x44e3('0x91')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x92'),require(_0x44e3('0x93')));_0x5e713b[_0x44e3('0x8')]('/api/integrations/desk/accounts',require(_0x44e3('0x94')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x95'),require('./api/intDeskConfiguration'));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x96'),require(_0x44e3('0x97')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x98'),require(_0x44e3('0x99')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x9a'),require(_0x44e3('0x9b')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x9c'),require(_0x44e3('0x9d')));_0x5e713b[_0x44e3('0x8')]('/api/integrations/zendesk/accounts',require(_0x44e3('0x9e')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x9f'),require(_0x44e3('0xa0')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xa1'),require(_0x44e3('0xa2')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xa3'),require(_0x44e3('0xa4')));_0x5e713b[_0x44e3('0x8')]('/api/integrations/freshdesk/configurations',require(_0x44e3('0xa5')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xa6'),require(_0x44e3('0xa7')));_0x5e713b[_0x44e3('0x8')]('/api/integrations/vtiger/accounts',require(_0x44e3('0xa8')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xa9'),require(_0x44e3('0xaa')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xab'),require('./api/intVtigerField'));_0x5e713b['use'](_0x44e3('0xac'),require(_0x44e3('0xad')));_0x5e713b['use'](_0x44e3('0xae'),require(_0x44e3('0xaf')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xb0'),require(_0x44e3('0xb1')));_0x5e713b['use'](_0x44e3('0xb2'),require('./api/intDynamics365Account'));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xb3'),require(_0x44e3('0xb4')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xb5'),require('./api/intDynamics365Field'));_0x5e713b[_0x44e3('0x8')]('/api/integrations/freshsales/accounts',require(_0x44e3('0xb6')));_0x5e713b['use'](_0x44e3('0xb7'),require(_0x44e3('0xb8')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xb9'),require(_0x44e3('0xba')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xbb'),require('./api/network'));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xbc'),require(_0x44e3('0xbd')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xbe'),require(_0x44e3('0xbf')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xc0'),require(_0x44e3('0xc1')));_0x5e713b['use']('/api/jscripty/questions/reports',require(_0x44e3('0xc2')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xc3'),require('./api/jscriptySessionReport'));_0x5e713b['use']('/api/sms/reports/queue',require(_0x44e3('0xc4')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xc5'),require('./api/squareReport'));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xc6'),require(_0x44e3('0xc7')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xc8'),require('./api/jscriptyProject'));_0x5e713b['use'](_0x44e3('0xc9'),require('./api/setting'));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xca'),require(_0x44e3('0xcb')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xcc'),require('./api/squareProject'));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xcd'),require(_0x44e3('0xce')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xcf'),require('./api/squareMessage'));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xd0'),require(_0x44e3('0xd1')));_0x5e713b['use'](_0x44e3('0xd2'),require(_0x44e3('0xd3')));_0x5e713b['use'](_0x44e3('0xd4'),require(_0x44e3('0xd5')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xd6'),require(_0x44e3('0xd7')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xd8'),require('./api/attachment'));_0x5e713b['use'](_0x44e3('0xd9'),require(_0x44e3('0xda')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xdb'),require('./api/mailTransferReport'));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xdc'),require(_0x44e3('0xdd')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xde'),require('./api/faxTransferReport'));_0x5e713b['use'](_0x44e3('0xdf'),require(_0x44e3('0xe0')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xe1'),require(_0x44e3('0xe2')));_0x5e713b['use'](_0x44e3('0xe3'),require(_0x44e3('0xe4')));_0x5e713b['use'](_0x44e3('0xe5'),require(_0x44e3('0xe6')));_0x5e713b['use'](_0x44e3('0xe7'),require(_0x44e3('0xe8')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xe9'),require('./api/userProfileSection'));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xea'),require('./api/userProfileResource'));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xeb'),require('./api/userNotification'));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xec'),require('./api/whatsappAccount'));_0x5e713b[_0x44e3('0x8')]('/api/whatsapp/applications',require(_0x44e3('0xed')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xee'),require(_0x44e3('0xef')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xf0'),require(_0x44e3('0xf1')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xf2'),require('./api/whatsappQueueReport'));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xf3'),require(_0x44e3('0xf4')));_0x5e713b[_0x44e3('0x8')]('/api/whatsapp/queues',require('./api/whatsappQueue'));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xf5'),require(_0x44e3('0xf6')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xf7'),require(_0x44e3('0xf8')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xf9'),require(_0x44e3('0xfa')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xfb'),require(_0x44e3('0xfc')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xfd'),require('./api/authGoogle'));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xfe'),require('./api/authActiveDirectory'));_0x5e713b[_0x44e3('0x8')](_0x44e3('0xff'),require(_0x44e3('0x100')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x101'),require(_0x44e3('0x102')));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x103'),require('./api/version'));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x104'),require(_0x44e3('0x105')));_0x5e713b[_0x44e3('0x8')]('/api/pm2',require(_0x44e3('0x106')));_0x5e713b['use']('/api/webbar',require('./api/webbar'));_0x5e713b[_0x44e3('0x8')]('/api/logs',clientSideLogs);_0x5e713b[_0x44e3('0x8')](_0x44e3('0x107'),express[_0x44e3('0x108')](path[_0x44e3('0x109')](config[_0x44e3('0x10a')],_0x44e3('0x107'))));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x10b'),express[_0x44e3('0x108')](path[_0x44e3('0x109')](config[_0x44e3('0x10a')],_0x44e3('0x10b'))));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x10c'),express['static'](path[_0x44e3('0x109')](config[_0x44e3('0x10a')],_0x44e3('0x10c'))));_0x5e713b[_0x44e3('0x8')](_0x44e3('0x10d'),express[_0x44e3('0x108')](path[_0x44e3('0x109')](config[_0x44e3('0x10a')],_0x44e3('0x10e'),'3.0.0')));_0x5e713b['use'](_0x44e3('0x10f'),express['static'](path[_0x44e3('0x109')](config[_0x44e3('0x10a')],_0x44e3('0x110'))));_0x5e713b[_0x44e3('0x111')](_0x44e3('0x112'))[_0x44e3('0x113')](errors[0x194]);_0x5e713b[_0x44e3('0x111')]('/*')[_0x44e3('0x113')](function(_0x1e3329,_0x2e21e4){_0x2e21e4['sendFile'](path[_0x44e3('0x114')](_0x5e713b['get'](_0x44e3('0x115'))+_0x44e3('0x116')));});return _0x5e713b;});};
\ No newline at end of file
index 39e5c8f..b75ac4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30cb=['../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/pause/pause.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','rpc','port','localhost','error','listen','log','../config/triggers','jayson/promise','lodash','../config/environment','merge','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc'];(function(_0x277eed,_0x5a6fad){var _0x36713f=function(_0x9f0141){while(--_0x9f0141){_0x277eed['push'](_0x277eed['shift']());}};_0x36713f(++_0x5a6fad);}(_0x30cb,0xb8));var _0xb30c=function(_0x263028,_0x19a701){_0x263028=_0x263028-0x0;var _0x5daa45=_0x30cb[_0x263028];return _0x5daa45;};'use strict';var jayson=require(_0xb30c('0x0'));var _=require(_0xb30c('0x1'));var config=require(_0xb30c('0x2'));exports['listen']=function(){return new Promise(function(_0x1d5d82,_0x422f28){var _0x2e4089={};_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require('../api/user/user.rpc'));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require('../api/voiceExtension/voiceExtension.rpc'));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x4')));_0x2e4089=_['merge'](_0x2e4089,require(_0xb30c('0x5')));_0x2e4089=_['merge'](_0x2e4089,require(_0xb30c('0x6')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require('../api/voiceDialReport/voiceDialReport.rpc'));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require('../api/voiceAgentReport/voiceAgentReport.rpc'));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x7')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x8')));_0x2e4089=_['merge'](_0x2e4089,require(_0xb30c('0x9')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0xa')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require('../api/userVoiceQueueRt/userVoiceQueueRt.rpc'));_0x2e4089=_['merge'](_0x2e4089,require(_0xb30c('0xb')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0xc')));_0x2e4089=_['merge'](_0x2e4089,require(_0xb30c('0xd')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0xe')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0xf')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require('../api/mailApplication/mailApplication.rpc'));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x10')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x11')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x12')));_0x2e4089=_['merge'](_0x2e4089,require(_0xb30c('0x13')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x14')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x15')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x16')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x17')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x18')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x19')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x1a')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x1b')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x1c')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x1d')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x1e')));_0x2e4089=_['merge'](_0x2e4089,require(_0xb30c('0x1f')));_0x2e4089=_['merge'](_0x2e4089,require(_0xb30c('0x20')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x21')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x22')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x23')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x24')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require('../api/cmHopperBlack/cmHopperBlack.rpc'));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require('../api/cmHopperHistory/cmHopperHistory.rpc'));_0x2e4089=_['merge'](_0x2e4089,require(_0xb30c('0x25')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require('../api/interval/interval.rpc'));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x26')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require('../api/sound/sound.rpc'));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require('../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc'));_0x2e4089=_['merge'](_0x2e4089,require('../api/template/template.rpc'));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x27')));_0x2e4089=_['merge'](_0x2e4089,require(_0xb30c('0x28')));_0x2e4089=_['merge'](_0x2e4089,require(_0xb30c('0x29')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require('../api/intSugarcrmAccount/intSugarcrmAccount.rpc'));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x2a')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x2b')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x2c')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x2d')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x2e')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x2f')));_0x2e4089=_['merge'](_0x2e4089,require(_0xb30c('0x30')));_0x2e4089=_['merge'](_0x2e4089,require('../api/intFreshsalesAccount/intFreshsalesAccount.rpc'));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x31')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require('../api/smsQueueReport/smsQueueReport.rpc'));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x32')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x33')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x34')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x35')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x36')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x37')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x38')));_0x2e4089=_['merge'](_0x2e4089,require('../api/campaign/campaign.rpc'));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x39')));_0x2e4089=_['merge'](_0x2e4089,require(_0xb30c('0x3a')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require('../api/whatsappAccount/whatsappAccount.rpc'));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x3b')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x3c')));_0x2e4089=_[_0xb30c('0x3')](_0x2e4089,require(_0xb30c('0x3d')));var _0x2ecbe9=jayson[_0xb30c('0x3e')](_0x2e4089)['http']();var _0x5b05a7=config[_0xb30c('0x3f')][_0xb30c('0x40')]||config[_0xb30c('0x40')]+0x1;var _0x99c4d6=config['rpc']['ip']||_0xb30c('0x41');_0x2ecbe9['on'](_0xb30c('0x42'),function(_0x3323a0){return _0x422f28(_0x3323a0);});_0x2ecbe9[_0xb30c('0x43')](_0x5b05a7,_0x99c4d6,function(){console[_0xb30c('0x44')]('Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!',_0x99c4d6,_0x5b05a7);require(_0xb30c('0x45'))['default']();return _0x1d5d82('RPC\x20listening\x20on\x20'+_0x99c4d6+':'+_0x5b05a7);});});};
\ No newline at end of file
+var _0x04d0=['../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc','../api/template/template.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/chatQueueReport/chatQueueReport.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/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','http','rpc','port','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','RPC\x20listening\x20on\x20','jayson/promise','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelQueue/openchannelQueue.rpc'];(function(_0x14ed93,_0x50ac9){var _0x3b6abb=function(_0x1b5a09){while(--_0x1b5a09){_0x14ed93['push'](_0x14ed93['shift']());}};_0x3b6abb(++_0x50ac9);}(_0x04d0,0x12a));var _0x004d=function(_0x365919,_0x32b9c7){_0x365919=_0x365919-0x0;var _0x60dc16=_0x04d0[_0x365919];return _0x60dc16;};'use strict';var jayson=require(_0x004d('0x0'));var _=require('lodash');var config=require(_0x004d('0x1'));exports[_0x004d('0x2')]=function(){return new Promise(function(_0x314eed,_0xb1a31a){var _0x3fe090={};_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x4')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require('../api/voiceExtension/voiceExtension.rpc'));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x5')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x6')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x7')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require('../api/voiceDialReport/voiceDialReport.rpc'));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x8')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require('../api/voiceQueueReport/voiceQueueReport.rpc'));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x9')));_0x3fe090=_['merge'](_0x3fe090,require(_0x004d('0xa')));_0x3fe090=_['merge'](_0x3fe090,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x3fe090=_['merge'](_0x3fe090,require('../api/userVoiceQueueRt/userVoiceQueueRt.rpc'));_0x3fe090=_['merge'](_0x3fe090,require(_0x004d('0xb')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0xc')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0xd')));_0x3fe090=_['merge'](_0x3fe090,require(_0x004d('0xe')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require('../api/mailMessage/mailMessage.rpc'));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require('../api/mailApplication/mailApplication.rpc'));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require('../api/mailQueueReport/mailQueueReport.rpc'));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require('../api/faxAccount/faxAccount.rpc'));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require('../api/faxApplication/faxApplication.rpc'));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require('../api/faxInteraction/faxInteraction.rpc'));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0xf')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x10')));_0x3fe090=_['merge'](_0x3fe090,require(_0x004d('0x11')));_0x3fe090=_['merge'](_0x3fe090,require('../api/smsAccount/smsAccount.rpc'));_0x3fe090=_['merge'](_0x3fe090,require(_0x004d('0x12')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require('../api/smsMessage/smsMessage.rpc'));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x13')));_0x3fe090=_['merge'](_0x3fe090,require('../api/openchannelApplication/openchannelApplication.rpc'));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x14')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require('../api/openchannelMessage/openchannelMessage.rpc'));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x15')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x16')));_0x3fe090=_['merge'](_0x3fe090,require(_0x004d('0x17')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x18')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require('../api/chatQueue/chatQueue.rpc'));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x19')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x1a')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x1b')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x1c')));_0x3fe090=_['merge'](_0x3fe090,require(_0x004d('0x1d')));_0x3fe090=_['merge'](_0x3fe090,require(_0x004d('0x1e')));_0x3fe090=_['merge'](_0x3fe090,require(_0x004d('0x1f')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x20')));_0x3fe090=_['merge'](_0x3fe090,require(_0x004d('0x21')));_0x3fe090=_['merge'](_0x3fe090,require(_0x004d('0x22')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require('../api/trigger/trigger.rpc'));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x23')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x24')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x25')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require('../api/intDeskAccount/intDeskAccount.rpc'));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x26')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x27')));_0x3fe090=_['merge'](_0x3fe090,require(_0x004d('0x28')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x29')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require('../api/intServicenowAccount/intServicenowAccount.rpc'));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x2a')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require('../api/intFreshsalesAccount/intFreshsalesAccount.rpc'));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x2b')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require('../api/smsQueueReport/smsQueueReport.rpc'));_0x3fe090=_['merge'](_0x3fe090,require('../api/squareReport/squareReport.rpc'));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x2c')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require('../api/setting/setting.rpc'));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x2d')));_0x3fe090=_['merge'](_0x3fe090,require(_0x004d('0x2e')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x2f')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x30')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x31')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require('../api/attachment/attachment.rpc'));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x32')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x33')));_0x3fe090=_['merge'](_0x3fe090,require(_0x004d('0x34')));_0x3fe090=_['merge'](_0x3fe090,require(_0x004d('0x35')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x36')));_0x3fe090=_[_0x004d('0x3')](_0x3fe090,require(_0x004d('0x37')));var _0x20a97f=jayson['server'](_0x3fe090)[_0x004d('0x38')]();var _0x28a74d=config[_0x004d('0x39')][_0x004d('0x3a')]||config[_0x004d('0x3a')]+0x1;var _0x1bf676=config[_0x004d('0x39')]['ip']||'localhost';_0x20a97f['on']('error',function(_0x25895a){return _0xb1a31a(_0x25895a);});_0x20a97f['listen'](_0x28a74d,_0x1bf676,function(){console[_0x004d('0x3b')](_0x004d('0x3c'),_0x1bf676,_0x28a74d);require(_0x004d('0x3d'))[_0x004d('0x3e')]();return _0x314eed(_0x004d('0x3f')+_0x1bf676+':'+_0x28a74d);});});};
\ No newline at end of file
index 0c19d8f..ff13d02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1be=['lodash','events','EventEmitter','./reply','./error','call','setEncoding','utf8','setTimeout','emit','ready','toLowerCase','hangup','substring','search','520\x20End\x20of\x20proper','no\x20code','result=','indexOf','substr','startsWith','split','length','error','code','close','timeout','destroy','pipe','function','write','inherits','prototype','sendRequest','sync','answer','beep','format','noop','VERBOSE\x20\x22%s\x22','exec','EXEC\x20%s\x20%s','join','setContext','setExtension','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','HANGUP','setVariable','isBoolean','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','replace','sayNumber','SAY\x20NUMBER\x20%s\x20%s','SAY\x20DIGITS\x20%s\x20%s','continueAt','extension','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','BEEP','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','AGI','wait','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util'];(function(_0x217ff6,_0x36f75d){var _0x417c93=function(_0x4787d2){while(--_0x4787d2){_0x217ff6['push'](_0x217ff6['shift']());}};_0x417c93(++_0x36f75d);}(_0xb1be,0x1c1));var _0xeb1b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xb1be[_0x20a584];return _0x4b41a8;};'use strict';var util=require(_0xeb1b('0x0'));var _=require(_0xeb1b('0x1'));var EventEmitter=require(_0xeb1b('0x2'))[_0xeb1b('0x3')];var AGIReply=require(_0xeb1b('0x4'));var AGIError=require(_0xeb1b('0x5'));function AGIChannel(_0x5df3d8){var _0x3b8f2f=this,_0x2a3b69=new AGIReply(),_0x24acec=![],_0x554831={};EventEmitter[_0xeb1b('0x6')](_0x3b8f2f);_0x5df3d8[_0xeb1b('0x7')](_0xeb1b('0x8'));_0x5df3d8[_0xeb1b('0x9')](0x8*0x3c*0x3c*0x3e8);_0x2a3b69['setEncoding'](_0xeb1b('0x8'));_0x2a3b69['on']('headers',function(_0x16680c){for(var _0x13b2a5 in _0x16680c){_0x3b8f2f[_0x13b2a5]=_0x16680c[_0x13b2a5];}_0x3b8f2f[_0xeb1b('0xa')](_0xeb1b('0xb'));});_0x2a3b69['on']('line',function(_0x12bb01){if(_0x12bb01[_0xeb1b('0xc')]()==_0xeb1b('0xd')){_0x3b8f2f[_0xeb1b('0xa')](_0xeb1b('0xd'));return;}if(_0x12bb01[_0xeb1b('0xe')](0x0,0xb)=='520-Invalid'){_0x24acec=!![];}if(_0x24acec){_0x554831['rx']+=_0x12bb01+'\x0a';if(_0x12bb01[_0xeb1b('0xf')](_0xeb1b('0x10'))!=-0x1){_0x24acec=![];}}else{_0x554831['rx']=_0x12bb01;}if(_0x24acec){return;}if(typeof _0x554831['cb']=='function'){var _0x2ebfe4=_0x554831['rx'][_0xeb1b('0xe')](0x0,0x3),_0xa4119d=null,_0x4c91a7=null;_0x2ebfe4=parseInt(_0x2ebfe4);if(isNaN(_0x2ebfe4)){_0x554831['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xeb1b('0x11')});return;}if(_0x2ebfe4!=0xc8){_0x554831['cb'](null,{'code':_0x2ebfe4,'result':-0x1,'extra':'KO'});return;}_0xa4119d=_0x554831['rx'][_0xeb1b('0xe')](0x4)['replace'](_0xeb1b('0x12'),'');if(_0xa4119d[_0xeb1b('0x13')]('\x20')!=-0x1){_0xa4119d=_0xa4119d[_0xeb1b('0x14')](0x0,_0xa4119d[_0xeb1b('0x13')]('\x20'));}if(_[_0xeb1b('0x15')](_0xa4119d,'-1')){_0xa4119d=parseInt(_0xa4119d);}_0x4c91a7=_0x554831['rx'][_0xeb1b('0x16')]('\x20');if(_0x4c91a7[_0xeb1b('0x17')]==0x3){_0x4c91a7=_0x4c91a7[0x2][_0xeb1b('0xe')](0x1,_0x4c91a7[0x2][_0xeb1b('0x17')]-0x1);}else if(_0x4c91a7['length']>0x3){var _0x536241=/\((.+)\)/;var _0x15e05a=_0x554831['rx']['match'](_0x536241);if(_0x15e05a){_0x4c91a7=_0x15e05a[0x1];}else{_0x4c91a7=null;}}else{_0x4c91a7=null;}_0x554831['cb'](null,{'code':_0x2ebfe4,'result':_0xa4119d,'extra':_0x4c91a7});}});_0x5df3d8['on'](_0xeb1b('0x18'),function(_0x1414a9){_0x3b8f2f[_0xeb1b('0xa')](_0xeb1b('0x18'),new AGIError('E_AGI_SOCKET_ERROR',_0x1414a9[_0xeb1b('0x19')]));});_0x5df3d8['on'](_0xeb1b('0x1a'),function(){_0x3b8f2f[_0xeb1b('0xa')](_0xeb1b('0x1a'),new AGIError('E_AGI_SOCKET_CLOSE'));});_0x5df3d8['on']('timeout',function(){_0x3b8f2f['emit'](_0xeb1b('0x1b'),new AGIError('E_AGI_SOCKET_TIMEOUT'));_0x5df3d8[_0xeb1b('0x1c')]();});_0x5df3d8[_0xeb1b('0x1d')](_0x2a3b69);this['command']=function(_0x3e89df,_0x22acb8){var _0x3e89df=_0x3e89df||'',_0x22acb8=typeof _0x22acb8==_0xeb1b('0x1e')?_0x22acb8:new Function();_0x554831={'tx':_0x3e89df,'rx':'','cb':_0x22acb8};_0x5df3d8[_0xeb1b('0x1f')](_0x3e89df+'\x0a');},this[_0xeb1b('0x1a')]=function(){_0x5df3d8[_0xeb1b('0x1c')]();};}util[_0xeb1b('0x20')](AGIChannel,EventEmitter);AGIChannel[_0xeb1b('0x21')][_0xeb1b('0x22')]=function(_0x2b3bd6){return this['command'][_0xeb1b('0x23')](this,_0x2b3bd6);};AGIChannel['prototype'][_0xeb1b('0x24')]=function(){return this['sendRequest']('ANSWER');};AGIChannel['prototype']['getData']=function(_0x38dac5,_0x1935be,_0x2c0f0b){_0x38dac5=_0x38dac5===undefined?_0xeb1b('0x25'):_0x38dac5;_0x1935be=_0x1935be===undefined?'5':_0x1935be;_0x2c0f0b=_0x2c0f0b===undefined?'1':_0x2c0f0b;return this[_0xeb1b('0x22')](util[_0xeb1b('0x26')]('GET\x20DATA\x20\x22%s\x22\x20%s\x20%s',_0x38dac5,_0x1935be*0x3e8,_0x2c0f0b));};AGIChannel[_0xeb1b('0x21')][_0xeb1b('0x27')]=function(_0x1792af){_0x1792af=_0x1792af||'NO\x20MESSAGE';return this[_0xeb1b('0x22')](util['format'](_0xeb1b('0x28'),_0x1792af));};AGIChannel[_0xeb1b('0x21')][_0xeb1b('0x29')]=function(_0x32a3aa,_0x1d314f){if(_['isArray'](_0x1d314f)){return this['sendRequest'](util[_0xeb1b('0x26')](_0xeb1b('0x2a'),_0x32a3aa,_0x1d314f[_0xeb1b('0x2b')](',')));}return this[_0xeb1b('0x22')](util[_0xeb1b('0x26')](_0xeb1b('0x2a'),_0x32a3aa,_0x1d314f));};AGIChannel['prototype'][_0xeb1b('0x2c')]=function(_0x2ede7d){return this[_0xeb1b('0x22')](util[_0xeb1b('0x26')]('SET\x20CONTEXT\x20%s',_0x2ede7d));};AGIChannel[_0xeb1b('0x21')][_0xeb1b('0x2d')]=function(_0x62d9eb){return this[_0xeb1b('0x22')](util[_0xeb1b('0x26')](_0xeb1b('0x2e'),_0x62d9eb));};AGIChannel[_0xeb1b('0x21')][_0xeb1b('0x2f')]=function(_0x3d6a47){return this['sendRequest'](util['format'](_0xeb1b('0x30'),_0x3d6a47));};AGIChannel['prototype'][_0xeb1b('0xd')]=function(){return this['sendRequest'](_0xeb1b('0x31'));};AGIChannel[_0xeb1b('0x21')][_0xeb1b('0x32')]=function(_0x303772,_0x55c916){var _0x51ea60=_[_0xeb1b('0x33')](_0x55c916)||_[_0xeb1b('0x34')](_0x55c916)?_0x55c916[_0xeb1b('0x35')]():_0x55c916;return this[_0xeb1b('0x22')](util['format'](_0xeb1b('0x36'),_0x303772,_0x51ea60?_0x51ea60[_0xeb1b('0x35')]()[_0xeb1b('0x37')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0xeb1b('0x21')][_0xeb1b('0x38')]=function(_0x4a61b5,_0x376b93){return this['sendRequest'](util['format'](_0xeb1b('0x39'),_0x4a61b5,_0x376b93));};AGIChannel[_0xeb1b('0x21')]['sayDigits']=function(_0x1cc1b0,_0x44d8ed){return this[_0xeb1b('0x22')](util[_0xeb1b('0x26')](_0xeb1b('0x3a'),_0x1cc1b0,_0x44d8ed));};AGIChannel[_0xeb1b('0x21')]['sayPhonetic']=function(_0x2bc6f9,_0x4f1b22){return this['sendRequest'](util[_0xeb1b('0x26')]('SAY\x20PHONETIC\x20\x22%s\x22\x20%s',_0x2bc6f9,_0x4f1b22));};AGIChannel[_0xeb1b('0x21')][_0xeb1b('0x3b')]=function(_0x13cf8c,_0x190d65,_0x43605c){_0x190d65=_0x190d65||this[_0xeb1b('0x3c')];_0x43605c=_0x43605c||0x1;this[_0xeb1b('0x2c')](_0x13cf8c);this[_0xeb1b('0x2d')](_0x190d65);this[_0xeb1b('0x2f')](_0x43605c);return this['noop'](util['format'](_0xeb1b('0x3d'),_0x13cf8c,_0x190d65,_0x43605c));};AGIChannel[_0xeb1b('0x21')][_0xeb1b('0x3e')]=function(_0x2f2be0){return this['sendRequest'](util[_0xeb1b('0x26')](_0xeb1b('0x3f'),_0x2f2be0));};AGIChannel['prototype'][_0xeb1b('0x40')]=function(_0x482457,_0x341103,_0x3d6e69,_0x4db910,_0x249961,_0x2d0b6a){_0x341103=_0x341103||_0xeb1b('0x41');_0x3d6e69=_0x3d6e69||'';_0x4db910=_0x4db910===undefined?-0x1:_0x4db910==='-1'?-0x1:_0x4db910*0x3e8;_0x249961=_0x249961===undefined?'':'s='+_0x249961;_0x2d0b6a=_0x2d0b6a?_0xeb1b('0x42'):'';return this['sendRequest'](util[_0xeb1b('0x26')]('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0x482457,_0x341103,_0x3d6e69,_0x4db910,_0x2d0b6a,_0x249961));};AGIChannel['prototype'][_0xeb1b('0x43')]=function(_0x366592,_0xe04bde){_0xe04bde=_0xe04bde||'';return this['sendRequest'](util[_0xeb1b('0x26')](_0xeb1b('0x44'),_0x366592,_0xe04bde));};AGIChannel['prototype'][_0xeb1b('0x45')]=function(_0x169e32){return this[_0xeb1b('0x29')](_0xeb1b('0x46'),_0x169e32);};AGIChannel[_0xeb1b('0x21')][_0xeb1b('0x47')]=function(_0x3b07f3){return this[_0xeb1b('0x29')]('WAIT',_0x3b07f3);};AGIChannel[_0xeb1b('0x21')][_0xeb1b('0x18')]=function(_0xd31b10,_0x1dc9a5){this[_0xeb1b('0x27')](util['format'](_0xeb1b('0x48'),_0xd31b10['id'],_0xd31b10[_0xeb1b('0x49')],_0x1dc9a5));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xeb1b('0x4a')]=AGIChannel;
\ No newline at end of file
+var _0x24c6=['call','utf8','setEncoding','headers','emit','ready','toLowerCase','hangup','substring','520-Invalid','search','520\x20End\x20of\x20proper','function','no\x20code','result=','substr','startsWith','split','length','error','code','close','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','write','inherits','prototype','sendRequest','answer','getData','beep','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','format','VERBOSE\x20\x22%s\x22','exec','isArray','setContext','SET\x20CONTEXT\x20%s','setExtension','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','isBoolean','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','replace','sayNumber','SAY\x20NUMBER\x20%s\x20%s','SAY\x20DIGITS\x20%s\x20%s','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','extension','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','BEEP','streamFile','agi','AGI','wait','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','util','lodash','events','EventEmitter','./reply','./error'];(function(_0x45e3d2,_0x2c0981){var _0x33e3ef=function(_0x172c19){while(--_0x172c19){_0x45e3d2['push'](_0x45e3d2['shift']());}};_0x33e3ef(++_0x2c0981);}(_0x24c6,0x90));var _0x624c=function(_0x3829f4,_0x292ff8){_0x3829f4=_0x3829f4-0x0;var _0x453787=_0x24c6[_0x3829f4];return _0x453787;};'use strict';var util=require(_0x624c('0x0'));var _=require(_0x624c('0x1'));var EventEmitter=require(_0x624c('0x2'))[_0x624c('0x3')];var AGIReply=require(_0x624c('0x4'));var AGIError=require(_0x624c('0x5'));function AGIChannel(_0x5ef5ae){var _0x467320=this,_0x2d186e=new AGIReply(),_0x551cad=![],_0x50c526={};EventEmitter[_0x624c('0x6')](_0x467320);_0x5ef5ae['setEncoding'](_0x624c('0x7'));_0x5ef5ae['setTimeout'](0x8*0x3c*0x3c*0x3e8);_0x2d186e[_0x624c('0x8')]('utf8');_0x2d186e['on'](_0x624c('0x9'),function(_0x217c18){for(var _0x57bc90 in _0x217c18){_0x467320[_0x57bc90]=_0x217c18[_0x57bc90];}_0x467320[_0x624c('0xa')](_0x624c('0xb'));});_0x2d186e['on']('line',function(_0x1f87c6){if(_0x1f87c6[_0x624c('0xc')]()=='hangup'){_0x467320[_0x624c('0xa')](_0x624c('0xd'));return;}if(_0x1f87c6[_0x624c('0xe')](0x0,0xb)==_0x624c('0xf')){_0x551cad=!![];}if(_0x551cad){_0x50c526['rx']+=_0x1f87c6+'\x0a';if(_0x1f87c6[_0x624c('0x10')](_0x624c('0x11'))!=-0x1){_0x551cad=![];}}else{_0x50c526['rx']=_0x1f87c6;}if(_0x551cad){return;}if(typeof _0x50c526['cb']==_0x624c('0x12')){var _0x57d515=_0x50c526['rx']['substring'](0x0,0x3),_0x35d464=null,_0xd778d4=null;_0x57d515=parseInt(_0x57d515);if(isNaN(_0x57d515)){_0x50c526['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x624c('0x13')});return;}if(_0x57d515!=0xc8){_0x50c526['cb'](null,{'code':_0x57d515,'result':-0x1,'extra':'KO'});return;}_0x35d464=_0x50c526['rx'][_0x624c('0xe')](0x4)['replace'](_0x624c('0x14'),'');if(_0x35d464['indexOf']('\x20')!=-0x1){_0x35d464=_0x35d464[_0x624c('0x15')](0x0,_0x35d464['indexOf']('\x20'));}if(_[_0x624c('0x16')](_0x35d464,'-1')){_0x35d464=parseInt(_0x35d464);}_0xd778d4=_0x50c526['rx'][_0x624c('0x17')]('\x20');if(_0xd778d4[_0x624c('0x18')]==0x3){_0xd778d4=_0xd778d4[0x2][_0x624c('0xe')](0x1,_0xd778d4[0x2][_0x624c('0x18')]-0x1);}else if(_0xd778d4['length']>0x3){var _0x4bc912=/\((.+)\)/;var _0x11aef9=_0x50c526['rx']['match'](_0x4bc912);if(_0x11aef9){_0xd778d4=_0x11aef9[0x1];}else{_0xd778d4=null;}}else{_0xd778d4=null;}_0x50c526['cb'](null,{'code':_0x57d515,'result':_0x35d464,'extra':_0xd778d4});}});_0x5ef5ae['on'](_0x624c('0x19'),function(_0x5f3ed8){_0x467320[_0x624c('0xa')]('error',new AGIError('E_AGI_SOCKET_ERROR',_0x5f3ed8[_0x624c('0x1a')]));});_0x5ef5ae['on'](_0x624c('0x1b'),function(){_0x467320[_0x624c('0xa')](_0x624c('0x1b'),new AGIError('E_AGI_SOCKET_CLOSE'));});_0x5ef5ae['on'](_0x624c('0x1c'),function(){_0x467320[_0x624c('0xa')]('timeout',new AGIError(_0x624c('0x1d')));_0x5ef5ae[_0x624c('0x1e')]();});_0x5ef5ae[_0x624c('0x1f')](_0x2d186e);this[_0x624c('0x20')]=function(_0x507c71,_0x30e0a4){var _0x507c71=_0x507c71||'',_0x30e0a4=typeof _0x30e0a4==_0x624c('0x12')?_0x30e0a4:new Function();_0x50c526={'tx':_0x507c71,'rx':'','cb':_0x30e0a4};_0x5ef5ae[_0x624c('0x21')](_0x507c71+'\x0a');},this['close']=function(){_0x5ef5ae[_0x624c('0x1e')]();};}util[_0x624c('0x22')](AGIChannel,EventEmitter);AGIChannel[_0x624c('0x23')][_0x624c('0x24')]=function(_0x5b29d7){return this[_0x624c('0x20')]['sync'](this,_0x5b29d7);};AGIChannel['prototype'][_0x624c('0x25')]=function(){return this[_0x624c('0x24')]('ANSWER');};AGIChannel['prototype'][_0x624c('0x26')]=function(_0x660db7,_0x14b6c0,_0x45c79e){_0x660db7=_0x660db7===undefined?_0x624c('0x27'):_0x660db7;_0x14b6c0=_0x14b6c0===undefined?'5':_0x14b6c0;_0x45c79e=_0x45c79e===undefined?'1':_0x45c79e;return this[_0x624c('0x24')](util['format'](_0x624c('0x28'),_0x660db7,_0x14b6c0*0x3e8,_0x45c79e));};AGIChannel[_0x624c('0x23')][_0x624c('0x29')]=function(_0x19824c){_0x19824c=_0x19824c||_0x624c('0x2a');return this['sendRequest'](util[_0x624c('0x2b')](_0x624c('0x2c'),_0x19824c));};AGIChannel[_0x624c('0x23')][_0x624c('0x2d')]=function(_0x5191c7,_0x52e52b){if(_[_0x624c('0x2e')](_0x52e52b)){return this['sendRequest'](util[_0x624c('0x2b')]('EXEC\x20%s\x20%s',_0x5191c7,_0x52e52b['join'](',')));}return this[_0x624c('0x24')](util[_0x624c('0x2b')]('EXEC\x20%s\x20%s',_0x5191c7,_0x52e52b));};AGIChannel[_0x624c('0x23')][_0x624c('0x2f')]=function(_0x3ba93a){return this[_0x624c('0x24')](util[_0x624c('0x2b')](_0x624c('0x30'),_0x3ba93a));};AGIChannel['prototype'][_0x624c('0x31')]=function(_0x12599a){return this[_0x624c('0x24')](util[_0x624c('0x2b')](_0x624c('0x32'),_0x12599a));};AGIChannel[_0x624c('0x23')][_0x624c('0x33')]=function(_0x10e91e){return this[_0x624c('0x24')](util[_0x624c('0x2b')](_0x624c('0x34'),_0x10e91e));};AGIChannel[_0x624c('0x23')]['hangup']=function(){return this['sendRequest']('HANGUP');};AGIChannel[_0x624c('0x23')]['setVariable']=function(_0x549243,_0x40939a){var _0x1b2852=_[_0x624c('0x35')](_0x40939a)||_['isNumber'](_0x40939a)?_0x40939a[_0x624c('0x36')]():_0x40939a;return this[_0x624c('0x24')](util[_0x624c('0x2b')](_0x624c('0x37'),_0x549243,_0x1b2852?_0x1b2852[_0x624c('0x36')]()[_0x624c('0x38')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x624c('0x23')][_0x624c('0x39')]=function(_0x24c796,_0x3b97d7){return this[_0x624c('0x24')](util[_0x624c('0x2b')](_0x624c('0x3a'),_0x24c796,_0x3b97d7));};AGIChannel[_0x624c('0x23')]['sayDigits']=function(_0x380ffe,_0xc59344){return this['sendRequest'](util['format'](_0x624c('0x3b'),_0x380ffe,_0xc59344));};AGIChannel[_0x624c('0x23')]['sayPhonetic']=function(_0xb3e06b,_0x43e9c0){return this[_0x624c('0x24')](util[_0x624c('0x2b')](_0x624c('0x3c'),_0xb3e06b,_0x43e9c0));};AGIChannel['prototype'][_0x624c('0x3d')]=function(_0x3b78e1,_0x1c933a,_0x1f62ce){_0x1c933a=_0x1c933a||this[_0x624c('0x3e')];_0x1f62ce=_0x1f62ce||0x1;this['setContext'](_0x3b78e1);this['setExtension'](_0x1c933a);this[_0x624c('0x33')](_0x1f62ce);return this['noop'](util[_0x624c('0x2b')](_0x624c('0x3f'),_0x3b78e1,_0x1c933a,_0x1f62ce));};AGIChannel[_0x624c('0x23')][_0x624c('0x40')]=function(_0x302c77){return this[_0x624c('0x24')](util[_0x624c('0x2b')](_0x624c('0x41'),_0x302c77));};AGIChannel[_0x624c('0x23')][_0x624c('0x42')]=function(_0xc3938d,_0xad3aab,_0x35d9cf,_0x102a88,_0x49b7ce,_0x1d5282){_0xad3aab=_0xad3aab||_0x624c('0x43');_0x35d9cf=_0x35d9cf||'';_0x102a88=_0x102a88===undefined?-0x1:_0x102a88==='-1'?-0x1:_0x102a88*0x3e8;_0x49b7ce=_0x49b7ce===undefined?'':'s='+_0x49b7ce;_0x1d5282=_0x1d5282?_0x624c('0x44'):'';return this[_0x624c('0x24')](util[_0x624c('0x2b')]('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0xc3938d,_0xad3aab,_0x35d9cf,_0x102a88,_0x1d5282,_0x49b7ce));};AGIChannel['prototype'][_0x624c('0x45')]=function(_0x3bd0cb,_0x5ddb54){_0x5ddb54=_0x5ddb54||'';return this[_0x624c('0x24')](util[_0x624c('0x2b')]('STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22',_0x3bd0cb,_0x5ddb54));};AGIChannel[_0x624c('0x23')][_0x624c('0x46')]=function(_0x460c3e){return this[_0x624c('0x2d')](_0x624c('0x47'),_0x460c3e);};AGIChannel['prototype'][_0x624c('0x48')]=function(_0x25c646){return this[_0x624c('0x2d')](_0x624c('0x49'),_0x25c646);};AGIChannel[_0x624c('0x23')][_0x624c('0x19')]=function(_0x30e6f8,_0x442c5e){this['noop'](util['format'](_0x624c('0x4a'),_0x30e6f8['id'],_0x30e6f8['label'],_0x442c5e));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;
\ No newline at end of file
index e9b4962..69e2dfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x406b=['format','message','exports','util','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Socket\x20timeout.','Empty\x20command.','E_AGI_UNDEFINED','push'];(function(_0x1f4ed1,_0x10c0d7){var _0xe30a69=function(_0x3726a3){while(--_0x3726a3){_0x1f4ed1['push'](_0x1f4ed1['shift']());}};_0xe30a69(++_0x10c0d7);}(_0x406b,0xe3));var _0xb406=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x406b[_0x2dafbe];return _0x58a45a;};'use strict';var util=require(_0xb406('0x0'));var error={'E_AGI_UNDEFINED':'Undefined\x20error.','E_AGI_ARGUMENT_PORT':_0xb406('0x1'),'E_AGI_SERVER_ERROR':'Server\x20error.\x20Code:\x20%s.','E_AGI_SERVER_CLOSE':_0xb406('0x2'),'E_AGI_SERVER_MAXCONNECTION':_0xb406('0x3'),'E_AGI_SERVER_VOICE_DISABLED':_0xb406('0x4'),'E_AGI_SOCKET_ERROR':_0xb406('0x5'),'E_AGI_SOCKET_CLOSE':_0xb406('0x6'),'E_AGI_SOCKET_TIMEOUT':_0xb406('0x7'),'E_AGI_COMMAND_EMPTY':_0xb406('0x8'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':'Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_IVR_ENTRY':'Missing\x20\x27ivr.entry\x27\x20menu.'};function AGIError(_0xc56380){var _0xc56380=_0xc56380||null,_0x153146=_0x153146||[],_0x3c2e7c=0x1,_0x5581cb='';if(!error[_0xc56380]){_0xc56380=_0xb406('0x9');}_0x153146[_0xb406('0xa')](error[_0xc56380]);while(arguments[_0x3c2e7c]){_0x153146[_0xb406('0xa')](arguments[_0x3c2e7c]);_0x3c2e7c++;}_0x5581cb=util[_0xb406('0xb')]['apply'](util,_0x153146);this[_0xb406('0xc')]=_0x5581cb;this['name']=_0xc56380;}module[_0xb406('0xd')]=AGIError;
\ No newline at end of file
+var _0x3362=['Server\x20error.\x20Code:\x20%s.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','push','format','name','exports','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.'];(function(_0x791064,_0x587fc8){var _0x6c31dc=function(_0x355ba0){while(--_0x355ba0){_0x791064['push'](_0x791064['shift']());}};_0x6c31dc(++_0x587fc8);}(_0x3362,0x116));var _0x2336=function(_0x346087,_0x17252d){_0x346087=_0x346087-0x0;var _0x2fe366=_0x3362[_0x346087];return _0x2fe366;};'use strict';var util=require('util');var error={'E_AGI_UNDEFINED':_0x2336('0x0'),'E_AGI_ARGUMENT_PORT':_0x2336('0x1'),'E_AGI_SERVER_ERROR':_0x2336('0x2'),'E_AGI_SERVER_CLOSE':'Server\x20closed.','E_AGI_SERVER_MAXCONNECTION':_0x2336('0x3'),'E_AGI_SERVER_VOICE_DISABLED':_0x2336('0x4'),'E_AGI_SOCKET_ERROR':_0x2336('0x5'),'E_AGI_SOCKET_CLOSE':_0x2336('0x6'),'E_AGI_SOCKET_TIMEOUT':'Socket\x20timeout.','E_AGI_COMMAND_EMPTY':_0x2336('0x7'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0x2336('0x8'),'E_AGI_IVR_ENTRY':_0x2336('0x9')};function AGIError(_0x4491b8){var _0x4491b8=_0x4491b8||null,_0x35a3eb=_0x35a3eb||[],_0x277f5a=0x1,_0xd88db0='';if(!error[_0x4491b8]){_0x4491b8='E_AGI_UNDEFINED';}_0x35a3eb[_0x2336('0xa')](error[_0x4491b8]);while(arguments[_0x277f5a]){_0x35a3eb[_0x2336('0xa')](arguments[_0x277f5a]);_0x277f5a++;}_0xd88db0=util[_0x2336('0xb')]['apply'](util,_0x35a3eb);this['message']=_0xd88db0;this[_0x2336('0xc')]=_0x4491b8;}module[_0x2336('0xd')]=AGIError;
\ No newline at end of file
index 1df3910..9f03179 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05e3=['defaults','localhost','subscribe','emit','error','E_AGI_SERVER_ERROR','message','agi','parse','projectUpdate','exports','lodash','EventEmitter','ioredis','./error','../../config/environment','redis'];(function(_0x31c671,_0x1291e0){var _0x5946a5=function(_0x16a223){while(--_0x16a223){_0x31c671['push'](_0x31c671['shift']());}};_0x5946a5(++_0x1291e0);}(_0x05e3,0x11b));var _0x305e=function(_0xafe951,_0x366ebd){_0xafe951=_0xafe951-0x0;var _0x3f287b=_0x05e3[_0xafe951];return _0x3f287b;};'use strict';var _=require(_0x305e('0x0'));var EventEmitter=require('events')[_0x305e('0x1')];var Redis=require(_0x305e('0x2'));var AGIError=require(_0x305e('0x3'));var config=require(_0x305e('0x4'));config[_0x305e('0x5')]=_[_0x305e('0x6')](config[_0x305e('0x5')],{'host':_0x305e('0x7'),'port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config[_0x305e('0x5')]);sub[_0x305e('0x8')]('agi',function(_0x250973){if(_0x250973)return eventEmitter[_0x305e('0x9')](_0x305e('0xa'),new AGIError(_0x305e('0xb'),_0x250973));});sub['on'](_0x305e('0xc'),function(_0x21116d,_0x842202){if(_0x21116d!==_0x305e('0xd'))return;try{var _0x7711ad=JSON[_0x305e('0xe')](_0x842202);eventEmitter[_0x305e('0x9')](_0x305e('0xf'),_0x7711ad);}catch(_0x562a98){eventEmitter[_0x305e('0x9')](_0x305e('0xa'),new AGIError(_0x305e('0xb'),_0x562a98));}});module[_0x305e('0x10')]={'EventEmitter':eventEmitter};
\ No newline at end of file
+var _0xbe63=['error','E_AGI_SERVER_ERROR','message','exports','EventEmitter','ioredis','./error','redis','defaults','subscribe','agi','emit'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbe63,0x19c));var _0x3be6=function(_0x77d310,_0x2b2fe7){_0x77d310=_0x77d310-0x0;var _0x2cdce4=_0xbe63[_0x77d310];return _0x2cdce4;};'use strict';var _=require('lodash');var EventEmitter=require('events')[_0x3be6('0x0')];var Redis=require(_0x3be6('0x1'));var AGIError=require(_0x3be6('0x2'));var config=require('../../config/environment');config[_0x3be6('0x3')]=_[_0x3be6('0x4')](config[_0x3be6('0x3')],{'host':'localhost','port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config[_0x3be6('0x3')]);sub[_0x3be6('0x5')](_0x3be6('0x6'),function(_0x51aeb2){if(_0x51aeb2)return eventEmitter[_0x3be6('0x7')](_0x3be6('0x8'),new AGIError(_0x3be6('0x9'),_0x51aeb2));});sub['on'](_0x3be6('0xa'),function(_0x1534d9,_0x468e36){if(_0x1534d9!=='agi')return;try{var _0x501fa4=JSON['parse'](_0x468e36);eventEmitter['emit']('projectUpdate',_0x501fa4);}catch(_0x49579d){eventEmitter[_0x3be6('0x7')](_0x3be6('0x8'),new AGIError('E_AGI_SERVER_ERROR',_0x49579d));}});module[_0x3be6('0xb')]={'EventEmitter':eventEmitter};
\ No newline at end of file
index 930b50b..898756a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa825=['condition','split','vswitch','target','default','agicommand','default\x20on\x20switch\x20not\x20found','includes','condition\x20not\x20found','exports','lodash','../../../config/logger','menu','getdigits','getsecretdigits','vertices','edges','numberOfEdges','prototype','addVertex','addEdge','size','relations','getVertex','traverseBFS','no\x20vertex\x20found','length','info','no\x20edge/s\x20available'];(function(_0x11bf1b,_0x50581b){var _0x387d1c=function(_0x54e22f){while(--_0x54e22f){_0x11bf1b['push'](_0x11bf1b['shift']());}};_0x387d1c(++_0x50581b);}(_0xa825,0xf2));var _0x5a82=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xa825[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0x5a82('0x0'));var logger=require(_0x5a82('0x1'))('agi');var verticesWithRetry=[_0x5a82('0x2'),_0x5a82('0x3'),_0x5a82('0x4')];var Graph=function(){this[_0x5a82('0x5')]={};this[_0x5a82('0x6')]={};this[_0x5a82('0x7')]=0x0;};Graph[_0x5a82('0x8')][_0x5a82('0x9')]=function(_0x1a79a4){this['vertices'][_0x1a79a4['id']]=_0x1a79a4;this['edges'][_0x1a79a4['id']]=[];};Graph['prototype'][_0x5a82('0xa')]=function(_0x110d03,_0x20f171,_0x1b4729){this[_0x5a82('0x6')][_0x110d03]['push']({'target':_0x20f171,'condition':_0x1b4729});this['numberOfEdges']+=0x1;};Graph[_0x5a82('0x8')][_0x5a82('0xb')]=function(){return _['size'](this['vertices']);};Graph[_0x5a82('0x8')][_0x5a82('0xc')]=function(){return this[_0x5a82('0x7')];};Graph[_0x5a82('0x8')][_0x5a82('0xd')]=function(_0x5ed2a5){return this[_0x5a82('0x5')][_0x5ed2a5];};Graph['prototype'][_0x5a82('0xe')]=function(_0x2ee57d,_0x332ea9){if(!this[_0x5a82('0x5')][_0x2ee57d]){return logger['info'](_0x5a82('0xf'));}var _0x236ac5=_0x332ea9(this['vertices'][_0x2ee57d]);if(!_0x236ac5){return logger['info']('stop\x20traverse');}if(this['edges'][_0x2ee57d][_0x5a82('0x10')]===0x0){return logger[_0x5a82('0x11')](_0x5a82('0x12'));}for(var _0x5be1e0=0x0,_0x111041=[],_0x305dec=![];_0x5be1e0<this[_0x5a82('0x6')][_0x2ee57d][_0x5a82('0x10')];_0x5be1e0+=0x1){if(this['edges'][_0x2ee57d][_0x5be1e0][_0x5a82('0x13')]){_0x111041=this[_0x5a82('0x6')][_0x2ee57d][_0x5be1e0][_0x5a82('0x13')][_0x5a82('0x14')](',');for(var _0x1d790f=0x0;_0x1d790f<_0x111041['length'];_0x1d790f+=0x1){if(this[_0x5a82('0x5')][_0x2ee57d]['agicommand']===_0x5a82('0x15')&&_0x111041[_0x1d790f]==='-'){_0x305dec=this[_0x5a82('0x6')][_0x2ee57d][_0x5be1e0][_0x5a82('0x16')];logger[_0x5a82('0x11')](_0x5a82('0x17'),_0x111041[_0x1d790f],this[_0x5a82('0x6')][_0x2ee57d][_0x5be1e0][_0x5a82('0x16')]);}else if(this[_0x5a82('0x5')][_0x2ee57d]['agicommand']===_0x5a82('0x2')&&_0x111041[_0x1d790f]==='i'){_0x305dec=this['edges'][_0x2ee57d][_0x5be1e0][_0x5a82('0x16')];logger[_0x5a82('0x11')]('invalid',_0x111041[_0x1d790f],this['edges'][_0x2ee57d][_0x5be1e0][_0x5a82('0x16')]);}if(_0x111041[_0x1d790f]===_0x236ac5){return this[_0x5a82('0xe')](this['edges'][_0x2ee57d][_0x5be1e0][_0x5a82('0x16')],_0x332ea9);}}}else{return this['traverseBFS'](this[_0x5a82('0x6')][_0x2ee57d][_0x5be1e0]['target'],_0x332ea9);}}if(_0x111041[_0x5a82('0x10')]){if(this['vertices'][_0x2ee57d][_0x5a82('0x18')]===_0x5a82('0x15')){if(_0x305dec){return this[_0x5a82('0xe')](_0x305dec,_0x332ea9);}return logger[_0x5a82('0x11')](_0x5a82('0x19'));}else if(_[_0x5a82('0x1a')](verticesWithRetry,this[_0x5a82('0x5')][_0x2ee57d][_0x5a82('0x18')])){if(_0x236ac5==='-'){return logger[_0x5a82('0x11')]('max\x20retry\x20reach');}if(_0x305dec&&_0x236ac5!=='t'){return this[_0x5a82('0xe')](_0x305dec,_0x332ea9);}return this[_0x5a82('0xe')](_0x2ee57d,_0x332ea9);}return logger[_0x5a82('0x11')](_0x5a82('0x1b'));}};module[_0x5a82('0x1c')]=Graph;
\ No newline at end of file
+var _0x5ad1=['addEdge','push','getVertex','traverseBFS','info','no\x20vertex\x20found','no\x20edge/s\x20available','condition','split','length','agicommand','target','default','invalid','vswitch','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','condition\x20not\x20found','exports','lodash','../../../config/logger','menu','getsecretdigits','vertices','edges','addVertex','prototype'];(function(_0x1cc114,_0x875767){var _0x47cd8f=function(_0x306cc2){while(--_0x306cc2){_0x1cc114['push'](_0x1cc114['shift']());}};_0x47cd8f(++_0x875767);}(_0x5ad1,0x12c));var _0x15ad=function(_0x23fd14,_0x220d99){_0x23fd14=_0x23fd14-0x0;var _0x54f364=_0x5ad1[_0x23fd14];return _0x54f364;};'use strict';var _=require(_0x15ad('0x0'));var logger=require(_0x15ad('0x1'))('agi');var verticesWithRetry=[_0x15ad('0x2'),'getdigits',_0x15ad('0x3')];var Graph=function(){this[_0x15ad('0x4')]={};this[_0x15ad('0x5')]={};this['numberOfEdges']=0x0;};Graph['prototype'][_0x15ad('0x6')]=function(_0x2968c2){this[_0x15ad('0x4')][_0x2968c2['id']]=_0x2968c2;this[_0x15ad('0x5')][_0x2968c2['id']]=[];};Graph[_0x15ad('0x7')][_0x15ad('0x8')]=function(_0x2d385c,_0x49b73f,_0x2d702b){this[_0x15ad('0x5')][_0x2d385c][_0x15ad('0x9')]({'target':_0x49b73f,'condition':_0x2d702b});this['numberOfEdges']+=0x1;};Graph[_0x15ad('0x7')]['size']=function(){return _['size'](this[_0x15ad('0x4')]);};Graph[_0x15ad('0x7')]['relations']=function(){return this['numberOfEdges'];};Graph[_0x15ad('0x7')][_0x15ad('0xa')]=function(_0x2b2859){return this[_0x15ad('0x4')][_0x2b2859];};Graph['prototype'][_0x15ad('0xb')]=function(_0x4b45c2,_0x575e6c){if(!this[_0x15ad('0x4')][_0x4b45c2]){return logger[_0x15ad('0xc')](_0x15ad('0xd'));}var _0x22ee6d=_0x575e6c(this['vertices'][_0x4b45c2]);if(!_0x22ee6d){return logger[_0x15ad('0xc')]('stop\x20traverse');}if(this[_0x15ad('0x5')][_0x4b45c2]['length']===0x0){return logger[_0x15ad('0xc')](_0x15ad('0xe'));}for(var _0x31d345=0x0,_0x3a8e89=[],_0x316946=![];_0x31d345<this[_0x15ad('0x5')][_0x4b45c2]['length'];_0x31d345+=0x1){if(this[_0x15ad('0x5')][_0x4b45c2][_0x31d345][_0x15ad('0xf')]){_0x3a8e89=this[_0x15ad('0x5')][_0x4b45c2][_0x31d345]['condition'][_0x15ad('0x10')](',');for(var _0x427705=0x0;_0x427705<_0x3a8e89[_0x15ad('0x11')];_0x427705+=0x1){if(this[_0x15ad('0x4')][_0x4b45c2][_0x15ad('0x12')]==='vswitch'&&_0x3a8e89[_0x427705]==='-'){_0x316946=this['edges'][_0x4b45c2][_0x31d345][_0x15ad('0x13')];logger[_0x15ad('0xc')](_0x15ad('0x14'),_0x3a8e89[_0x427705],this[_0x15ad('0x5')][_0x4b45c2][_0x31d345][_0x15ad('0x13')]);}else if(this[_0x15ad('0x4')][_0x4b45c2]['agicommand']==='menu'&&_0x3a8e89[_0x427705]==='i'){_0x316946=this[_0x15ad('0x5')][_0x4b45c2][_0x31d345][_0x15ad('0x13')];logger[_0x15ad('0xc')](_0x15ad('0x15'),_0x3a8e89[_0x427705],this[_0x15ad('0x5')][_0x4b45c2][_0x31d345][_0x15ad('0x13')]);}if(_0x3a8e89[_0x427705]===_0x22ee6d){return this[_0x15ad('0xb')](this[_0x15ad('0x5')][_0x4b45c2][_0x31d345][_0x15ad('0x13')],_0x575e6c);}}}else{return this[_0x15ad('0xb')](this[_0x15ad('0x5')][_0x4b45c2][_0x31d345][_0x15ad('0x13')],_0x575e6c);}}if(_0x3a8e89[_0x15ad('0x11')]){if(this[_0x15ad('0x4')][_0x4b45c2][_0x15ad('0x12')]===_0x15ad('0x16')){if(_0x316946){return this['traverseBFS'](_0x316946,_0x575e6c);}return logger[_0x15ad('0xc')](_0x15ad('0x17'));}else if(_[_0x15ad('0x18')](verticesWithRetry,this['vertices'][_0x4b45c2][_0x15ad('0x12')])){if(_0x22ee6d==='-'){return logger[_0x15ad('0xc')](_0x15ad('0x19'));}if(_0x316946&&_0x22ee6d!=='t'){return this[_0x15ad('0xb')](_0x316946,_0x575e6c);}return this[_0x15ad('0xb')](_0x4b45c2,_0x575e6c);}return logger['info'](_0x15ad('0x1a'));}};module[_0x15ad('0x1b')]=Graph;
\ No newline at end of file
index 08575fa..0c5c269 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8ea=['handleUnpublished','getLicense','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','getAll','[LICENSE]','finally','./server','connection','close','syncho','util','../../config/environment','../../config/logger','../../config/license/util','./rpc','./project','./events','EventEmitter','agi','defaults','127.0.0.1','nextTick','error','deleted','push','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','[%s]\x20%s','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','dnid','stack','info','arg_1','callerid','uniqueid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','then','catch','indexOf','substring','debug','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','timeout','evtHangup','hangup','handleNotFound','production'];(function(_0x5df443,_0x4d547f){var _0x24bb1a=function(_0x36adb6){while(--_0x36adb6){_0x5df443['push'](_0x5df443['shift']());}};_0x24bb1a(++_0x4d547f);}(_0xa8ea,0x12e));var _0xaa8e=function(_0x333072,_0x270c6b){_0x333072=_0x333072-0x0;var _0x5d8948=_0xa8ea[_0x333072];return _0x5d8948;};'use strict';var _=require('lodash');var syncho=require(_0xaa8e('0x0'));var util=require(_0xaa8e('0x1'));var config=require(_0xaa8e('0x2'));var logger=require(_0xaa8e('0x3'))('agi');var utilLicense=require(_0xaa8e('0x4'));var rpc=require(_0xaa8e('0x5'));var Project=require(_0xaa8e('0x6'));var AGIEmitter=require(_0xaa8e('0x7'))[_0xaa8e('0x8')];var projects=[];config[_0xaa8e('0x9')]=_[_0xaa8e('0xa')](config[_0xaa8e('0x9')],{'ip':_0xaa8e('0xb'),'port':0x11dd});AGIEmitter['on']('projectUpdate',projectUpdateHandler);function connectionHandler(_0x38e017){process[_0xaa8e('0xc')](function(){syncho(function(){try{setChannelVariables(_0x38e017);agiHandler(_0x38e017);}catch(_0x2b15bc){logger[_0xaa8e('0xd')](_0x2b15bc['stack']);}});});}function projectUpdateHandler(_0x1a4da0){try{var _0x2ce492=_['findIndex'](projects,['id',_0x1a4da0['id']]);if(_0x2ce492>-0x1){if(_0x1a4da0[_0xaa8e('0xe')]===!![]){projects['splice'](_0x2ce492,0x1);}else{projects[_0x2ce492]=_0x1a4da0;}}else{projects[_0xaa8e('0xf')](_0x1a4da0);}}catch(_0x63e9da){logger[_0xaa8e('0xd')](_0x63e9da['stack']);}}function listeningHandler(){console[_0xaa8e('0x10')](_0xaa8e('0x11'),config[_0xaa8e('0x9')][_0xaa8e('0x12')]);logger['info'](util[_0xaa8e('0x13')](_0xaa8e('0x14'),config[_0xaa8e('0x9')]['ip'],config['agi'][_0xaa8e('0x12')]));}function errorHandler(_0x3f548e){if(_0x3f548e&&_0x3f548e[_0xaa8e('0x15')]&&_0x3f548e[_0xaa8e('0x16')]){logger['error'](util[_0xaa8e('0x13')](_0xaa8e('0x17'),_0x3f548e['name'],_0x3f548e[_0xaa8e('0x16')]));}else{logger[_0xaa8e('0xd')](util[_0xaa8e('0x13')](_0xaa8e('0x18'),_0x3f548e['stack']));}}function closeHandler(){logger['info'](util['format'](_0xaa8e('0x19'),this['arg_1'],this[_0xaa8e('0x1a')],this['callerid'],this[_0xaa8e('0x1b')],this['uniqueid']));try{createSquareReport(this);}catch(_0x16b2b9){logger['error'](_0x16b2b9[_0xaa8e('0x1c')]);}}function timeoutHandler(){logger[_0xaa8e('0x1d')](util[_0xaa8e('0x13')]('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xaa8e('0x1e')],this[_0xaa8e('0x1a')],this[_0xaa8e('0x1f')],this[_0xaa8e('0x1b')],this[_0xaa8e('0x20')]));}function hangupHandler(){logger['info'](util[_0xaa8e('0x13')](_0xaa8e('0x21'),this['arg_1'],this[_0xaa8e('0x1a')],this['callerid'],this[_0xaa8e('0x1b')],this[_0xaa8e('0x20')]));this['evtHangup']=!![];}function createSquareReport(_0x135e33,_0x14a783){rpc['createSquareReport'](_0x135e33)[_0xaa8e('0x22')](function(_0x58d459){if(_0x14a783){_0x14a783(null,_0x58d459);}})[_0xaa8e('0x23')](function(_0x107b1e){if(_0x14a783){_0x14a783(null,_0x107b1e);}});}function setChannelVariables(_0x53e652){for(var _0x145c25 in _0x53e652){if(_0x53e652['hasOwnProperty'](_0x145c25)){if(_0x145c25[_0xaa8e('0x24')]('agi_')===0x0){_0x53e652[_0x145c25[_0xaa8e('0x25')](0x4)]=_0x53e652[_0x145c25];delete _0x53e652[_0x145c25];}}}}function agiHandler(_0x1fa1f2){logger[_0xaa8e('0x26')]('variables',JSON[_0xaa8e('0x27')](_0x1fa1f2,null,0x2));logger['info'](util[_0xaa8e('0x13')](_0xaa8e('0x28'),_0x1fa1f2[_0xaa8e('0x1e')],_0x1fa1f2[_0xaa8e('0x1a')],_0x1fa1f2[_0xaa8e('0x1f')],_0x1fa1f2[_0xaa8e('0x1b')],_0x1fa1f2[_0xaa8e('0x20')]));_0x1fa1f2['on']('error',errorHandler);_0x1fa1f2['on']('close',closeHandler);_0x1fa1f2['on'](_0xaa8e('0x29'),timeoutHandler);_0x1fa1f2[_0xaa8e('0x2a')]=![];_0x1fa1f2['on'](_0xaa8e('0x2b'),hangupHandler);var _0x445506=_['find'](projects,[_0xaa8e('0x15'),_0x1fa1f2[_0xaa8e('0x1e')]]);if(!_0x445506)return Project[_0xaa8e('0x2c')](_0x1fa1f2);if(!_0x445506[_0xaa8e('0x2d')])return Project[_0xaa8e('0x2e')](_0x1fa1f2);return Project['initialize'](_0x445506,_0x1fa1f2);}function main(){var _0x3c0904;return utilLicense[_0xaa8e('0x2f')]()[_0xaa8e('0x22')](function(_0x55ad94){if(!_0x55ad94)return;if(_0x55ad94['voice']){if(_0x55ad94[_0xaa8e('0x30')]&&_0x55ad94['callysquare']>0x0){logger['info'](util[_0xaa8e('0x13')](_0xaa8e('0x31'),_0x55ad94[_0xaa8e('0x30')]));_0x3c0904=_0x55ad94[_0xaa8e('0x30')];}else{logger['info'](_0xaa8e('0x32'));}}else{logger[_0xaa8e('0x1d')](_0xaa8e('0x33'));_0x3c0904=-0x1;}})[_0xaa8e('0x22')](function(){return Project[_0xaa8e('0x34')]();})[_0xaa8e('0x22')](function(_0x26f465){projects=_0x26f465;return;})[_0xaa8e('0x23')](function(_0x59e0dd){logger[_0xaa8e('0xd')](_0xaa8e('0x35'),_0x59e0dd['stack']);})[_0xaa8e('0x36')](function(){var _0x357c4b=require(_0xaa8e('0x37'))(config[_0xaa8e('0x9')][_0xaa8e('0x12')],config[_0xaa8e('0x9')]['ip'],_0x3c0904);_0x357c4b['on'](_0xaa8e('0xd'),errorHandler);_0x357c4b['on']('listening',listeningHandler);_0x357c4b['on'](_0xaa8e('0x38'),connectionHandler);_0x357c4b['on'](_0xaa8e('0x39'),closeHandler);});}main();
\ No newline at end of file
+var _0x0927=['[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','format','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','callerid','dnid','uniqueid','arg_1','evtHangup','createSquareReport','then','catch','agi_','debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','hangup','find','handleNotFound','production','handleUnpublished','initialize','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','getAll','[LICENSE]','finally','./server','listening','connection','lodash','syncho','../../config/logger','agi','./project','./events','EventEmitter','defaults','127.0.0.1','nextTick','findIndex','deleted','splice','push','error','stack','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info'];(function(_0x33ea32,_0x288fa3){var _0x4fc865=function(_0x12386c){while(--_0x12386c){_0x33ea32['push'](_0x33ea32['shift']());}};_0x4fc865(++_0x288fa3);}(_0x0927,0xd5));var _0x7092=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0927[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7092('0x0'));var syncho=require(_0x7092('0x1'));var util=require('util');var config=require('../../config/environment');var logger=require(_0x7092('0x2'))(_0x7092('0x3'));var utilLicense=require('../../config/license/util');var rpc=require('./rpc');var Project=require(_0x7092('0x4'));var AGIEmitter=require(_0x7092('0x5'))[_0x7092('0x6')];var projects=[];config[_0x7092('0x3')]=_[_0x7092('0x7')](config[_0x7092('0x3')],{'ip':_0x7092('0x8'),'port':0x11dd});AGIEmitter['on']('projectUpdate',projectUpdateHandler);function connectionHandler(_0x361022){process[_0x7092('0x9')](function(){syncho(function(){try{setChannelVariables(_0x361022);agiHandler(_0x361022);}catch(_0x469aa0){logger['error'](_0x469aa0['stack']);}});});}function projectUpdateHandler(_0x1aa6d7){try{var _0xa8d521=_[_0x7092('0xa')](projects,['id',_0x1aa6d7['id']]);if(_0xa8d521>-0x1){if(_0x1aa6d7[_0x7092('0xb')]===!![]){projects[_0x7092('0xc')](_0xa8d521,0x1);}else{projects[_0xa8d521]=_0x1aa6d7;}}else{projects[_0x7092('0xd')](_0x1aa6d7);}}catch(_0x1c442d){logger[_0x7092('0xe')](_0x1c442d[_0x7092('0xf')]);}}function listeningHandler(){console['log'](_0x7092('0x10'),config[_0x7092('0x3')][_0x7092('0x11')]);logger[_0x7092('0x12')](util['format'](_0x7092('0x13'),config[_0x7092('0x3')]['ip'],config[_0x7092('0x3')][_0x7092('0x11')]));}function errorHandler(_0x2f7e00){if(_0x2f7e00&&_0x2f7e00[_0x7092('0x14')]&&_0x2f7e00[_0x7092('0x15')]){logger['error'](util[_0x7092('0x16')]('[%s]\x20%s',_0x2f7e00[_0x7092('0x14')],_0x2f7e00['message']));}else{logger[_0x7092('0xe')](util[_0x7092('0x16')]('[ERROR]\x20%s',_0x2f7e00[_0x7092('0xf')]));}}function closeHandler(){logger[_0x7092('0x12')](util[_0x7092('0x16')](_0x7092('0x17'),this['arg_1'],this[_0x7092('0x18')],this[_0x7092('0x19')],this[_0x7092('0x1a')],this[_0x7092('0x1b')]));try{createSquareReport(this);}catch(_0xf9b266){logger['error'](_0xf9b266['stack']);}}function timeoutHandler(){logger['info'](util[_0x7092('0x16')]('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x7092('0x1c')],this[_0x7092('0x18')],this[_0x7092('0x19')],this[_0x7092('0x1a')],this[_0x7092('0x1b')]));}function hangupHandler(){logger[_0x7092('0x12')](util[_0x7092('0x16')]('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x7092('0x1c')],this[_0x7092('0x18')],this[_0x7092('0x19')],this['dnid'],this['uniqueid']));this[_0x7092('0x1d')]=!![];}function createSquareReport(_0x3020a4,_0xe5630c){rpc[_0x7092('0x1e')](_0x3020a4)[_0x7092('0x1f')](function(_0x1b1460){if(_0xe5630c){_0xe5630c(null,_0x1b1460);}})[_0x7092('0x20')](function(_0xc00d6){if(_0xe5630c){_0xe5630c(null,_0xc00d6);}});}function setChannelVariables(_0x473780){for(var _0x5236da in _0x473780){if(_0x473780['hasOwnProperty'](_0x5236da)){if(_0x5236da['indexOf'](_0x7092('0x21'))===0x0){_0x473780[_0x5236da['substring'](0x4)]=_0x473780[_0x5236da];delete _0x473780[_0x5236da];}}}}function agiHandler(_0x195800){logger[_0x7092('0x22')](_0x7092('0x23'),JSON[_0x7092('0x24')](_0x195800,null,0x2));logger['info'](util[_0x7092('0x16')](_0x7092('0x25'),_0x195800[_0x7092('0x1c')],_0x195800[_0x7092('0x18')],_0x195800[_0x7092('0x19')],_0x195800[_0x7092('0x1a')],_0x195800[_0x7092('0x1b')]));_0x195800['on'](_0x7092('0xe'),errorHandler);_0x195800['on'](_0x7092('0x26'),closeHandler);_0x195800['on'](_0x7092('0x27'),timeoutHandler);_0x195800[_0x7092('0x1d')]=![];_0x195800['on'](_0x7092('0x28'),hangupHandler);var _0x3e88e0=_[_0x7092('0x29')](projects,[_0x7092('0x14'),_0x195800[_0x7092('0x1c')]]);if(!_0x3e88e0)return Project[_0x7092('0x2a')](_0x195800);if(!_0x3e88e0[_0x7092('0x2b')])return Project[_0x7092('0x2c')](_0x195800);return Project[_0x7092('0x2d')](_0x3e88e0,_0x195800);}function main(){var _0x471847;return utilLicense[_0x7092('0x2e')]()[_0x7092('0x1f')](function(_0x3336a9){if(!_0x3336a9)return;if(_0x3336a9[_0x7092('0x2f')]){if(_0x3336a9['callysquare']&&_0x3336a9[_0x7092('0x30')]>0x0){logger[_0x7092('0x12')](util['format'](_0x7092('0x31'),_0x3336a9[_0x7092('0x30')]));_0x471847=_0x3336a9['callysquare'];}else{logger[_0x7092('0x12')](_0x7092('0x32'));}}else{logger[_0x7092('0x12')](_0x7092('0x33'));_0x471847=-0x1;}})[_0x7092('0x1f')](function(){return Project[_0x7092('0x34')]();})['then'](function(_0x38d1d8){projects=_0x38d1d8;return;})[_0x7092('0x20')](function(_0x47a745){logger[_0x7092('0xe')](_0x7092('0x35'),_0x47a745[_0x7092('0xf')]);})[_0x7092('0x36')](function(){var _0x5d151a=require(_0x7092('0x37'))(config['agi']['port'],config[_0x7092('0x3')]['ip'],_0x471847);_0x5d151a['on']('error',errorHandler);_0x5d151a['on'](_0x7092('0x38'),listeningHandler);_0x5d151a['on'](_0x7092('0x39'),connectionHandler);_0x5d151a['on'](_0x7092('0x26'),closeHandler);});}main();
\ No newline at end of file
index 3f182d8..8610ee2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe186=['error','message','result','sendMailMessage','SendMail','client','http','request'];(function(_0x564242,_0x1db779){var _0x47946b=function(_0x463b1e){while(--_0x463b1e){_0x564242['push'](_0x564242['shift']());}};_0x47946b(++_0x1db779);}(_0xe186,0x1b5));var _0x6e18=function(_0x13bf05,_0x3d0f96){_0x13bf05=_0x13bf05-0x0;var _0x3b18e9=_0xe186[_0x13bf05];return _0x3b18e9;};'use strict';var BPromise=require('bluebird');var jayson=require('jayson/promise');var client=jayson[_0x6e18('0x0')][_0x6e18('0x1')]({'port':0x232b});function request(_0x1b717c,_0x23ce92){return new BPromise(function(_0x7e97bb,_0x2c4fbb){return client[_0x6e18('0x2')](_0x1b717c,_0x23ce92)['then'](function(_0x3079f9){if(_0x3079f9[_0x6e18('0x3')]){return _0x2c4fbb(_0x3079f9[_0x6e18('0x3')][_0x6e18('0x4')]);}else{return _0x7e97bb(_0x3079f9[_0x6e18('0x5')]);}})['catch'](function(_0x33f6d7){return _0x2c4fbb(_0x33f6d7);});});}exports[_0x6e18('0x6')]=function(_0x44482b,_0xe373ef){return request(_0x6e18('0x7'),{'account':_0x44482b,'message':_0xe373ef});};
\ No newline at end of file
+var _0xe0c3=['error','message','result','sendMailMessage','SendMail','bluebird','http','request'];(function(_0x12c4cd,_0xdebe29){var _0x18a029=function(_0x4c4272){while(--_0x4c4272){_0x12c4cd['push'](_0x12c4cd['shift']());}};_0x18a029(++_0xdebe29);}(_0xe0c3,0xb5));var _0x3e0c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe0c3[_0x321bb2];return _0x9c12ed;};'use strict';var BPromise=require(_0x3e0c('0x0'));var jayson=require('jayson/promise');var client=jayson['client'][_0x3e0c('0x1')]({'port':0x232b});function request(_0x126d9a,_0x1d03f4){return new BPromise(function(_0xa2f02a,_0x5d44c1){return client[_0x3e0c('0x2')](_0x126d9a,_0x1d03f4)['then'](function(_0x405495){if(_0x405495[_0x3e0c('0x3')]){return _0x5d44c1(_0x405495[_0x3e0c('0x3')][_0x3e0c('0x4')]);}else{return _0xa2f02a(_0x405495[_0x3e0c('0x5')]);}})['catch'](function(_0xaf6ba4){return _0x5d44c1(_0xaf6ba4);});});}exports[_0x3e0c('0x6')]=function(_0x446991,_0x2caffe){return request(_0x3e0c('0x7'),{'account':_0x446991,'message':_0x2caffe});};
\ No newline at end of file
index 57af4c5..9e63713 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa88=['[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','callerid','toString','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','continueAt','close','Project\x20%s\x20not\x20found','Project\x20%s\x20not\x20published','exports','lodash','moment','xml2json','util','../../config/logger','agi','./rpc','./graph','./vertices','catch','error','stack','agicommand','retry','maxRetry','addVertex','omit','mxCell','hasOwnProperty','length','target','addEdge','source','value','toJson','root','inspect','production','start','debug','stringify','joinAt','format','info','dnid','uniqueid','traverseBFS','clear','vertex','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','code','result','evtHangup','response','isUndefined','agicommand\x20not\x20found'];(function(_0x75f406,_0x2d411b){var _0x53823e=function(_0x175a7a){while(--_0x175a7a){_0x75f406['push'](_0x75f406['shift']());}};_0x53823e(++_0x2d411b);}(_0xfa88,0x179));var _0x8fa8=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xfa88[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x8fa8('0x0'));var moment=require(_0x8fa8('0x1'));var parser=require(_0x8fa8('0x2'));var util=require(_0x8fa8('0x3'));var logger=require(_0x8fa8('0x4'))(_0x8fa8('0x5'));var rpc=require(_0x8fa8('0x6'));var mailRpc=require('./mailRpc');var Graph=require(_0x8fa8('0x7'));var Vertices=require(_0x8fa8('0x8'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc['getSquareProjects']()[_0x8fa8('0x9')](function(_0x1b97d7){logger[_0x8fa8('0xa')]('Unable\x20to\x20download\x20CallySquare\x20projects',_0x1b97d7[_0x8fa8('0xb')]);return[];});}function addVertex(_0x3e0105,_0x3fc11d,_0x17610d){_0x3fc11d[_0x8fa8('0xc')]=_0x17610d;if(_0x3fc11d['hasOwnProperty'](_0x8fa8('0xd'))){_0x3fc11d[_0x8fa8('0xe')]=parseInt(_0x3fc11d['retry'],0xa);}_0x3e0105[_0x8fa8('0xf')](_[_0x8fa8('0x10')](_0x3fc11d,_0x8fa8('0x11')));}function initGraph(_0x5b85b8,_0x45a295){var _0xa7eb7c=new Graph();for(var _0x2668cc in _0x5b85b8){if(_0x5b85b8[_0x8fa8('0x12')](_0x2668cc)){if(_['isArray'](_0x5b85b8[_0x2668cc])){for(var _0x357907=0x0;_0x357907<_0x5b85b8[_0x2668cc][_0x8fa8('0x13')];_0x357907+=0x1){addVertex(_0xa7eb7c,_0x5b85b8[_0x2668cc][_0x357907],_0x2668cc);}}else{addVertex(_0xa7eb7c,_0x5b85b8[_0x2668cc],_0x2668cc);}}}for(var _0x457c45=0x0;_0x457c45<_0x45a295[_0x8fa8('0x13')];_0x457c45+=0x1){if(_0x45a295[_0x457c45]['source']&&_0x45a295[_0x457c45][_0x8fa8('0x14')]){_0xa7eb7c[_0x8fa8('0x15')](_0x45a295[_0x457c45][_0x8fa8('0x16')],_0x45a295[_0x457c45][_0x8fa8('0x14')],_0x45a295[_0x457c45][_0x8fa8('0x17')]);}}return _0xa7eb7c;}function getRoot(_0x4125b9){return parser[_0x8fa8('0x18')](_0x4125b9,{'object':!![]})['mxGraphModel'][_0x8fa8('0x19')];}function inspect(_0x13deea){return util[_0x8fa8('0x1a')](_0x13deea,{'showHidden':![],'depth':null});}function initialize(_0x20dc8b,_0x188e88){var _0x592f96=getRoot(_0x20dc8b[_0x8fa8('0x1b')]);if(!_0x592f96||!_0x592f96[_0x8fa8('0x1c')])return;var _0x125abe,_0x35831b,_0x143f54;logger[_0x8fa8('0x1d')]('root',JSON[_0x8fa8('0x1e')](_0x592f96,null,0x2));_0x188e88[_0x8fa8('0x1f')]=moment()[_0x8fa8('0x20')]('YYYY-MM-DD\x20HH:mm:ss');_0x125abe=initGraph(_[_0x8fa8('0x10')](_0x592f96,_0x8fa8('0x11')),_0x592f96['mxCell']);_0x35831b=new Vertices(_0x188e88,rpc,mailRpc);logger[_0x8fa8('0x21')](util[_0x8fa8('0x20')]('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x188e88['arg_1'],_0x188e88['calleridname'],_0x188e88['callerid'],_0x188e88[_0x8fa8('0x22')],_0x188e88[_0x8fa8('0x23')]));_0x125abe[_0x8fa8('0x24')](_0x592f96[_0x8fa8('0x1c')]['id'],function(_0x5b8ae9){try{_0x5b8ae9=_0x35831b[_0x8fa8('0x25')](_0x5b8ae9);logger[_0x8fa8('0x1d')](_0x8fa8('0x26'),JSON[_0x8fa8('0x1e')](_0x5b8ae9,null,0x2));if(_0x5b8ae9[_0x8fa8('0xc')]===_0x8fa8('0x27')){logger[_0x8fa8('0x21')](_0x8fa8('0x28'));_0x188e88['context']=_0x5b8ae9[_0x8fa8('0x29')]||_0x188e88[_0x8fa8('0x29')];_0x188e88[_0x8fa8('0x2a')]=_0x5b8ae9['extension'];_0x188e88[_0x8fa8('0x2b')]=_0x5b8ae9[_0x8fa8('0x2b')]?_0x5b8ae9[_0x8fa8('0x2b')]-0x1:0x1;return null;}else if(_0x5b8ae9&&_0x35831b[_0x5b8ae9[_0x8fa8('0xc')]]){_0x143f54=_0x35831b[_0x5b8ae9[_0x8fa8('0xc')]](_0x5b8ae9);logger[_0x8fa8('0x21')]('response',JSON['stringify'](_0x143f54,null,0x2));if(_0x143f54&&_0x143f54[_0x8fa8('0x2c')]===AGI_CODE_SUCCESS&&_0x143f54[_0x8fa8('0x2d')]!==AGI_RESULT_ERROR&&!_0x188e88[_0x8fa8('0x2e')]){logger['debug'](_0x8fa8('0x2f'),inspect(_0x143f54));return _[_0x8fa8('0x30')](_0x143f54[_0x8fa8('0x2d')])?null:_0x143f54[_0x8fa8('0x2d')]['toString']();}else{logger[_0x8fa8('0xa')]('response',inspect(_0x143f54));return null;}}else{logger[_0x8fa8('0xa')](_0x8fa8('0x31'));return null;}}catch(_0x46af47){logger[_0x8fa8('0xa')](_0x46af47['stack']);return null;}});if(_0x592f96['finally']){logger[_0x8fa8('0x21')](util[_0x8fa8('0x20')](_0x8fa8('0x32'),_0x188e88[_0x8fa8('0x33')],_0x188e88['calleridname'],_0x188e88[_0x8fa8('0x34')],_0x188e88['dnid'],_0x188e88[_0x8fa8('0x23')]));_0x125abe[_0x8fa8('0x24')](_0x592f96['finally']['id'],function(_0x5219ff){try{_0x5219ff=_0x35831b[_0x8fa8('0x25')](_0x5219ff);logger[_0x8fa8('0x1d')](_0x8fa8('0x26'),JSON[_0x8fa8('0x1e')](_0x5219ff,null,0x2));if(_0x5219ff&&_0x35831b[_0x5219ff[_0x8fa8('0xc')]]){_0x143f54=_0x35831b[_0x5219ff[_0x8fa8('0xc')]](_0x5219ff);if(_0x143f54){logger['debug'](_0x8fa8('0x2f'),inspect(_0x143f54));return _[_0x8fa8('0x30')](_0x143f54[_0x8fa8('0x2d')])?null:_0x143f54[_0x8fa8('0x2d')][_0x8fa8('0x35')]();}else{logger[_0x8fa8('0xa')](_0x8fa8('0x2f'),inspect(_0x143f54));return null;}}else{logger[_0x8fa8('0xa')](_0x8fa8('0x31'));return null;}}catch(_0x25e557){logger['error'](_0x25e557['stack']);return null;}});}logger[_0x8fa8('0x21')](util['format'](_0x8fa8('0x36'),_0x188e88[_0x8fa8('0x33')],_0x188e88[_0x8fa8('0x37')],_0x188e88[_0x8fa8('0x34')],_0x188e88['dnid'],_0x188e88[_0x8fa8('0x23')]));logger[_0x8fa8('0x21')](util[_0x8fa8('0x20')]('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x188e88[_0x8fa8('0x29')],_0x188e88[_0x8fa8('0x2a')],parseInt(_0x188e88[_0x8fa8('0x2b')],0xa)+0x1));_0x188e88[_0x8fa8('0x38')](_0x188e88['context'],_0x188e88[_0x8fa8('0x2a')],parseInt(_0x188e88[_0x8fa8('0x2b')],0xa)+0x1);_0x188e88[_0x8fa8('0x39')]();}function handleNotFound(_0xf3fedf){logger[_0x8fa8('0xa')](util['format'](_0x8fa8('0x3a'),_0xf3fedf[_0x8fa8('0x33')]));_0xf3fedf[_0x8fa8('0x38')](_0xf3fedf[_0x8fa8('0x29')],_0xf3fedf['extension'],parseInt(_0xf3fedf[_0x8fa8('0x2b')],0xa)+0x1);_0xf3fedf[_0x8fa8('0x39')]();}function handleUnpublished(_0x4a5762){logger['error'](util['format'](_0x8fa8('0x3b'),_0x4a5762[_0x8fa8('0x33')]));_0x4a5762[_0x8fa8('0x38')](_0x4a5762['context'],_0x4a5762[_0x8fa8('0x2a')],parseInt(_0x4a5762[_0x8fa8('0x2b')],0xa)+0x1);_0x4a5762['close']();}module[_0x8fa8('0x3c')]={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
+var _0x86ec=['value','mxGraphModel','root','inspect','production','start','debug','stringify','joinAt','format','omit','mxCell','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','uniqueid','clear','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','result','evtHangup','isUndefined','toString','agicommand\x20not\x20found','stack','finally','traverseBFS','vertex','continueAt','Project\x20%s\x20not\x20published','close','exports','lodash','moment','xml2json','./mailRpc','./graph','./vertices','getSquareProjects','catch','error','Unable\x20to\x20download\x20CallySquare\x20projects','agicommand','retry','addVertex','hasOwnProperty','isArray','length','addEdge','target'];(function(_0x1c7ac2,_0x295452){var _0xa6128f=function(_0xf5eee4){while(--_0xf5eee4){_0x1c7ac2['push'](_0x1c7ac2['shift']());}};_0xa6128f(++_0x295452);}(_0x86ec,0x96));var _0xc86e=function(_0x578a70,_0x26b6ad){_0x578a70=_0x578a70-0x0;var _0x5edf56=_0x86ec[_0x578a70];return _0x5edf56;};'use strict';var _=require(_0xc86e('0x0'));var moment=require(_0xc86e('0x1'));var parser=require(_0xc86e('0x2'));var util=require('util');var logger=require('../../config/logger')('agi');var rpc=require('./rpc');var mailRpc=require(_0xc86e('0x3'));var Graph=require(_0xc86e('0x4'));var Vertices=require(_0xc86e('0x5'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc[_0xc86e('0x6')]()[_0xc86e('0x7')](function(_0x46068a){logger[_0xc86e('0x8')](_0xc86e('0x9'),_0x46068a['stack']);return[];});}function addVertex(_0x1c8426,_0x15fa7d,_0x4970e2){_0x15fa7d[_0xc86e('0xa')]=_0x4970e2;if(_0x15fa7d['hasOwnProperty'](_0xc86e('0xb'))){_0x15fa7d['maxRetry']=parseInt(_0x15fa7d[_0xc86e('0xb')],0xa);}_0x1c8426[_0xc86e('0xc')](_['omit'](_0x15fa7d,'mxCell'));}function initGraph(_0x2e58f9,_0x5569cb){var _0x15a93f=new Graph();for(var _0x472046 in _0x2e58f9){if(_0x2e58f9[_0xc86e('0xd')](_0x472046)){if(_[_0xc86e('0xe')](_0x2e58f9[_0x472046])){for(var _0x4fdea2=0x0;_0x4fdea2<_0x2e58f9[_0x472046][_0xc86e('0xf')];_0x4fdea2+=0x1){addVertex(_0x15a93f,_0x2e58f9[_0x472046][_0x4fdea2],_0x472046);}}else{addVertex(_0x15a93f,_0x2e58f9[_0x472046],_0x472046);}}}for(var _0x5aa408=0x0;_0x5aa408<_0x5569cb[_0xc86e('0xf')];_0x5aa408+=0x1){if(_0x5569cb[_0x5aa408]['source']&&_0x5569cb[_0x5aa408]['target']){_0x15a93f[_0xc86e('0x10')](_0x5569cb[_0x5aa408]['source'],_0x5569cb[_0x5aa408][_0xc86e('0x11')],_0x5569cb[_0x5aa408][_0xc86e('0x12')]);}}return _0x15a93f;}function getRoot(_0x45c9a8){return parser['toJson'](_0x45c9a8,{'object':!![]})[_0xc86e('0x13')][_0xc86e('0x14')];}function inspect(_0x3ea8c0){return util[_0xc86e('0x15')](_0x3ea8c0,{'showHidden':![],'depth':null});}function initialize(_0x194c10,_0x125b8e){var _0x75d8b=getRoot(_0x194c10[_0xc86e('0x16')]);if(!_0x75d8b||!_0x75d8b[_0xc86e('0x17')])return;var _0x198b63,_0x549206,_0x4495b2;logger[_0xc86e('0x18')](_0xc86e('0x14'),JSON[_0xc86e('0x19')](_0x75d8b,null,0x2));_0x125b8e[_0xc86e('0x1a')]=moment()[_0xc86e('0x1b')]('YYYY-MM-DD\x20HH:mm:ss');_0x198b63=initGraph(_[_0xc86e('0x1c')](_0x75d8b,_0xc86e('0x1d')),_0x75d8b[_0xc86e('0x1d')]);_0x549206=new Vertices(_0x125b8e,rpc,mailRpc);logger['info'](util[_0xc86e('0x1b')](_0xc86e('0x1e'),_0x125b8e[_0xc86e('0x1f')],_0x125b8e[_0xc86e('0x20')],_0x125b8e[_0xc86e('0x21')],_0x125b8e[_0xc86e('0x22')],_0x125b8e[_0xc86e('0x23')]));_0x198b63['traverseBFS'](_0x75d8b['start']['id'],function(_0xee74e9){try{_0xee74e9=_0x549206[_0xc86e('0x24')](_0xee74e9);logger[_0xc86e('0x18')]('vertex',JSON[_0xc86e('0x19')](_0xee74e9,null,0x2));if(_0xee74e9[_0xc86e('0xa')]===_0xc86e('0x25')){logger['info'](_0xc86e('0x26'));_0x125b8e[_0xc86e('0x27')]=_0xee74e9[_0xc86e('0x27')]||_0x125b8e[_0xc86e('0x27')];_0x125b8e[_0xc86e('0x28')]=_0xee74e9['extension'];_0x125b8e[_0xc86e('0x29')]=_0xee74e9['priority']?_0xee74e9['priority']-0x1:0x1;return null;}else if(_0xee74e9&&_0x549206[_0xee74e9[_0xc86e('0xa')]]){_0x4495b2=_0x549206[_0xee74e9[_0xc86e('0xa')]](_0xee74e9);logger['info'](_0xc86e('0x2a'),JSON[_0xc86e('0x19')](_0x4495b2,null,0x2));if(_0x4495b2&&_0x4495b2['code']===AGI_CODE_SUCCESS&&_0x4495b2[_0xc86e('0x2b')]!==AGI_RESULT_ERROR&&!_0x125b8e[_0xc86e('0x2c')]){logger[_0xc86e('0x18')](_0xc86e('0x2a'),inspect(_0x4495b2));return _[_0xc86e('0x2d')](_0x4495b2['result'])?null:_0x4495b2[_0xc86e('0x2b')][_0xc86e('0x2e')]();}else{logger[_0xc86e('0x8')](_0xc86e('0x2a'),inspect(_0x4495b2));return null;}}else{logger[_0xc86e('0x8')](_0xc86e('0x2f'));return null;}}catch(_0x23dc2e){logger['error'](_0x23dc2e[_0xc86e('0x30')]);return null;}});if(_0x75d8b[_0xc86e('0x31')]){logger['info'](util['format']('[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x125b8e[_0xc86e('0x1f')],_0x125b8e[_0xc86e('0x20')],_0x125b8e[_0xc86e('0x21')],_0x125b8e[_0xc86e('0x22')],_0x125b8e[_0xc86e('0x23')]));_0x198b63[_0xc86e('0x32')](_0x75d8b[_0xc86e('0x31')]['id'],function(_0x2f1d0c){try{_0x2f1d0c=_0x549206[_0xc86e('0x24')](_0x2f1d0c);logger[_0xc86e('0x18')](_0xc86e('0x33'),JSON[_0xc86e('0x19')](_0x2f1d0c,null,0x2));if(_0x2f1d0c&&_0x549206[_0x2f1d0c['agicommand']]){_0x4495b2=_0x549206[_0x2f1d0c[_0xc86e('0xa')]](_0x2f1d0c);if(_0x4495b2){logger['debug'](_0xc86e('0x2a'),inspect(_0x4495b2));return _[_0xc86e('0x2d')](_0x4495b2['result'])?null:_0x4495b2[_0xc86e('0x2b')][_0xc86e('0x2e')]();}else{logger[_0xc86e('0x8')](_0xc86e('0x2a'),inspect(_0x4495b2));return null;}}else{logger['error'](_0xc86e('0x2f'));return null;}}catch(_0x389f1b){logger['error'](_0x389f1b[_0xc86e('0x30')]);return null;}});}logger['info'](util[_0xc86e('0x1b')]('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x125b8e['arg_1'],_0x125b8e['calleridname'],_0x125b8e[_0xc86e('0x21')],_0x125b8e[_0xc86e('0x22')],_0x125b8e[_0xc86e('0x23')]));logger['info'](util[_0xc86e('0x1b')]('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x125b8e[_0xc86e('0x27')],_0x125b8e[_0xc86e('0x28')],parseInt(_0x125b8e[_0xc86e('0x29')],0xa)+0x1));_0x125b8e[_0xc86e('0x34')](_0x125b8e['context'],_0x125b8e[_0xc86e('0x28')],parseInt(_0x125b8e[_0xc86e('0x29')],0xa)+0x1);_0x125b8e['close']();}function handleNotFound(_0x52d91a){logger['error'](util['format']('Project\x20%s\x20not\x20found',_0x52d91a[_0xc86e('0x1f')]));_0x52d91a[_0xc86e('0x34')](_0x52d91a[_0xc86e('0x27')],_0x52d91a[_0xc86e('0x28')],parseInt(_0x52d91a[_0xc86e('0x29')],0xa)+0x1);_0x52d91a['close']();}function handleUnpublished(_0x3aaaca){logger[_0xc86e('0x8')](util[_0xc86e('0x1b')](_0xc86e('0x35'),_0x3aaaca[_0xc86e('0x1f')]));_0x3aaaca[_0xc86e('0x34')](_0x3aaaca[_0xc86e('0x27')],_0x3aaaca[_0xc86e('0x28')],parseInt(_0x3aaaca[_0xc86e('0x29')],0xa)+0x1);_0x3aaaca[_0xc86e('0x36')]();}module[_0xc86e('0x37')]={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
index 490123b..30ca432 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7306=['emit','headers','line','util','stream','Transform','call','_localBuffer','_inBody','inherits','_transform','\x0d\x0a\x0d\x0a','toString','indexOf','substring','length','split','slice'];(function(_0xbeb808,_0x881ddf){var _0x5d6909=function(_0x37d652){while(--_0x37d652){_0xbeb808['push'](_0xbeb808['shift']());}};_0x5d6909(++_0x881ddf);}(_0x7306,0xb7));var _0x6730=function(_0x5d1718,_0x27fdd5){_0x5d1718=_0x5d1718-0x0;var _0xa864=_0x7306[_0x5d1718];return _0xa864;};'use strict';var util=require(_0x6730('0x0'));var Transform=require(_0x6730('0x1'))[_0x6730('0x2')];function AGIReply(_0x1c5abd){Transform[_0x6730('0x3')](this,_0x1c5abd);this[_0x6730('0x4')]='';this[_0x6730('0x5')]=![];}util[_0x6730('0x6')](AGIReply,Transform);AGIReply['prototype'][_0x6730('0x7')]=function(_0x57c2d7,_0x1e9cd9,_0x564583){var _0x59f5e0='\x0a',_0x584f12=['\x0a\x0a',_0x6730('0x8')],_0x2311c6=-0x1,_0x54f0c=-0x1,_0x27508e='',_0x5b3a8e=0x0,_0xfc8090='',_0x1a4ac2='';this[_0x6730('0x4')]+=_0x57c2d7[_0x6730('0x9')]();_0xfc8090=this[_0x6730('0x4')];if(!this[_0x6730('0x5')]){_0x5b3a8e=0x0;while(_0x584f12[_0x5b3a8e]){while((_0x54f0c=_0xfc8090[_0x6730('0xa')](_0x584f12[_0x5b3a8e]))!=-0x1){_0x27508e=_0x584f12[_0x5b3a8e];_0x1a4ac2=_0xfc8090[_0x6730('0xb')](0x0,_0x54f0c);_0xfc8090=_0xfc8090['substring'](_0x54f0c+_0x27508e[_0x6730('0xc')]);var _0x40f39a=_0x1a4ac2[_0x6730('0xd')](_0x59f5e0),_0x5e46e4=0x0,_0x40d439={},_0x1c7d5e='',_0x40018a='',_0x2645dc=-0x1;while(_0x40f39a[_0x5e46e4]){_0x2645dc=_0x40f39a[_0x5e46e4][_0x6730('0xa')](':');if(_0x2645dc!=-0x1){_0x1c7d5e=_0x40f39a[_0x5e46e4][_0x6730('0xe')](0x0,_0x2645dc)['trim']();_0x40018a=_0x40f39a[_0x5e46e4]['slice'](_0x2645dc+0x1)['trim']();if(_0x1c7d5e[_0x6730('0xc')]>0x0){_0x40d439[_0x1c7d5e]=_0x40018a;}}else{}_0x5e46e4++;}this[_0x6730('0xf')](_0x6730('0x10'),_0x40d439);this[_0x6730('0x5')]=!![];}_0x5b3a8e++;}this[_0x6730('0x4')]=_0xfc8090;}else{while((_0x2311c6=_0xfc8090['indexOf'](_0x59f5e0))!=-0x1){_0x1a4ac2=_0xfc8090[_0x6730('0xb')](0x0,_0x2311c6);this[_0x6730('0xf')](_0x6730('0x11'),_0x1a4ac2);_0xfc8090=_0xfc8090['substring'](_0x2311c6+_0x59f5e0[_0x6730('0xc')]);}this[_0x6730('0x4')]=_0xfc8090;}_0x564583();};module['exports']=AGIReply;
\ No newline at end of file
+var _0x6e48=['trim','slice','emit','headers','line','exports','stream','call','_localBuffer','_inBody','inherits','prototype','_transform','toString','indexOf','substring','length','split'];(function(_0x32d5bc,_0x2a6dd8){var _0x39f203=function(_0x2ad621){while(--_0x2ad621){_0x32d5bc['push'](_0x32d5bc['shift']());}};_0x39f203(++_0x2a6dd8);}(_0x6e48,0x16e));var _0x86e4=function(_0x536f8a,_0x537260){_0x536f8a=_0x536f8a-0x0;var _0x197bda=_0x6e48[_0x536f8a];return _0x197bda;};'use strict';var util=require('util');var Transform=require(_0x86e4('0x0'))['Transform'];function AGIReply(_0x4f9188){Transform[_0x86e4('0x1')](this,_0x4f9188);this[_0x86e4('0x2')]='';this[_0x86e4('0x3')]=![];}util[_0x86e4('0x4')](AGIReply,Transform);AGIReply[_0x86e4('0x5')][_0x86e4('0x6')]=function(_0x21d3ac,_0xc5c582,_0x13c6f6){var _0x461890='\x0a',_0x3242c5=['\x0a\x0a','\x0d\x0a\x0d\x0a'],_0x37cedb=-0x1,_0x3e6422=-0x1,_0x2760f6='',_0x33deec=0x0,_0x20d914='',_0x4290f2='';this[_0x86e4('0x2')]+=_0x21d3ac[_0x86e4('0x7')]();_0x20d914=this['_localBuffer'];if(!this['_inBody']){_0x33deec=0x0;while(_0x3242c5[_0x33deec]){while((_0x3e6422=_0x20d914[_0x86e4('0x8')](_0x3242c5[_0x33deec]))!=-0x1){_0x2760f6=_0x3242c5[_0x33deec];_0x4290f2=_0x20d914[_0x86e4('0x9')](0x0,_0x3e6422);_0x20d914=_0x20d914['substring'](_0x3e6422+_0x2760f6[_0x86e4('0xa')]);var _0x2f3d20=_0x4290f2[_0x86e4('0xb')](_0x461890),_0x44396b=0x0,_0x584b3d={},_0x14822a='',_0xf46f53='',_0x10fbe1=-0x1;while(_0x2f3d20[_0x44396b]){_0x10fbe1=_0x2f3d20[_0x44396b][_0x86e4('0x8')](':');if(_0x10fbe1!=-0x1){_0x14822a=_0x2f3d20[_0x44396b]['slice'](0x0,_0x10fbe1)[_0x86e4('0xc')]();_0xf46f53=_0x2f3d20[_0x44396b][_0x86e4('0xd')](_0x10fbe1+0x1)[_0x86e4('0xc')]();if(_0x14822a[_0x86e4('0xa')]>0x0){_0x584b3d[_0x14822a]=_0xf46f53;}}else{}_0x44396b++;}this[_0x86e4('0xe')](_0x86e4('0xf'),_0x584b3d);this[_0x86e4('0x3')]=!![];}_0x33deec++;}this['_localBuffer']=_0x20d914;}else{while((_0x37cedb=_0x20d914[_0x86e4('0x8')](_0x461890))!=-0x1){_0x4290f2=_0x20d914[_0x86e4('0x9')](0x0,_0x37cedb);this[_0x86e4('0xe')](_0x86e4('0x10'),_0x4290f2);_0x20d914=_0x20d914[_0x86e4('0x9')](_0x37cedb+_0x461890[_0x86e4('0xa')]);}this[_0x86e4('0x2')]=_0x20d914;}_0x13c6f6();};module[_0x86e4('0x11')]=AGIReply;
\ No newline at end of file
index 7c3c781..b9cdba2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa261=['jayson/promise','client','http','then','error','message','catch','getSquareProjects','GetSquareProjects','name','getSquareProject','ShowSquareProject','production','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','CloudProvider','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','phone','getTrunkById','ShowTrunk','getSoundById','ShowSound','save_name','getIntervalById','Interval','Intervals','getSmsAccountById','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','CreateSquareReport','merge','arg_1','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ListId','CreateCmContact','getPauseById','agentPause','PauseUser','agentUnpause','LogoutUser','lodash'];(function(_0x164af1,_0x3cf772){var _0x5d81a2=function(_0xa57547){while(--_0xa57547){_0x164af1['push'](_0x164af1['shift']());}};_0x5d81a2(++_0x3cf772);}(_0xa261,0x1a3));var _0x1a26=function(_0xe8d9a6,_0xbacfcb){_0xe8d9a6=_0xe8d9a6-0x0;var _0xdc7cdb=_0xa261[_0xe8d9a6];return _0xdc7cdb;};'use strict';var _=require(_0x1a26('0x0'));var moment=require('moment');var jayson=require(_0x1a26('0x1'));var client=jayson[_0x1a26('0x2')][_0x1a26('0x3')]({'port':0x2329});function request(_0x151055,_0x698831){return new Promise(function(_0x54f768,_0x52360d){return client['request'](_0x151055,_0x698831)[_0x1a26('0x4')](function(_0x275b17){if(_0x275b17[_0x1a26('0x5')]){return _0x52360d(_0x275b17[_0x1a26('0x5')][_0x1a26('0x6')]);}else{return _0x54f768(_0x275b17['result']);}})[_0x1a26('0x7')](function(_0x53064d){return _0x52360d(_0x53064d);});});}exports[_0x1a26('0x8')]=function(){return request(_0x1a26('0x9'),{'options':{'raw':![],'attributes':['id',_0x1a26('0xa'),'production']}});};exports[_0x1a26('0xb')]=function(_0x9bd619){return request(_0x1a26('0xc'),{'options':{'raw':![],'where':{'name':_0x9bd619},'attributes':[_0x1a26('0xd')]}});};exports[_0x1a26('0xe')]=function(_0x576f93){return request(_0x1a26('0xf'),{'options':{'raw':![],'where':{'id':_0x576f93},'include':[{'model':_0x1a26('0x10'),'as':_0x1a26('0x11'),'include':[{'model':_0x1a26('0x12'),'as':_0x1a26('0x12')}]}],'attributes':['id',_0x1a26('0xa'),'email'],'smtp':!![]}});};exports[_0x1a26('0x13')]=function(_0x530548){return request(_0x1a26('0xc'),{'options':{'where':{'id':_0x530548},'attributes':[_0x1a26('0xa')]}});};exports[_0x1a26('0x14')]=function(_0x49398e){return request(_0x1a26('0x15'),{'options':{'where':{'id':_0x49398e},'attributes':[_0x1a26('0xa')]}});};exports[_0x1a26('0x16')]=function(_0x354e7d){return request(_0x1a26('0x17'),{'options':{'where':{'id':_0x354e7d},'attributes':['name']}});};exports[_0x1a26('0x18')]=function(_0x1607a1){return request(_0x1a26('0x19'),{'options':{'where':{'id':_0x1607a1},'attributes':[_0x1a26('0x1a')]}});};exports[_0x1a26('0x1b')]=function(_0x344c79){return request('ShowUser',{'options':{'where':{'id':_0x344c79},'attributes':[_0x1a26('0xa')]}});};exports['getContactByPhone']=function(_0x5ef863){return request('GetContactByPhone',{'options':{'where':{'phone':_0x5ef863[_0x1a26('0x1c')]},'attributes':['id']}});};exports[_0x1a26('0x1d')]=function(_0x1ba20a){return request(_0x1a26('0x1e'),{'options':{'where':{'id':_0x1ba20a},'attributes':['name']}});};exports[_0x1a26('0x1f')]=function(_0x58e599){return request(_0x1a26('0x20'),{'options':{'where':{'id':_0x58e599},'attributes':[_0x1a26('0x21')]}});};exports[_0x1a26('0x22')]=function(_0x2f4378){return request('ShowInterval',{'options':{'raw':![],'where':{'id':_0x2f4378},'include':[{'model':_0x1a26('0x23'),'as':_0x1a26('0x24')}]}});};exports[_0x1a26('0x25')]=function(_0x4d76ad){return request('ShowSmsAccount',{'options':{'where':{'id':_0x4d76ad},'attributes':['id','name']}});};exports['createSmsMessage']=function(_0x6550ee){return request(_0x1a26('0x26'),{'body':_0x6550ee});};exports[_0x1a26('0x27')]=function(_0x4a45dd){return request(_0x1a26('0x28'),{'body':_0x4a45dd});};exports[_0x1a26('0x29')]=function(_0x466f4d){return request(_0x1a26('0x2a'),{'body':_[_0x1a26('0x2b')](_0x466f4d,{'project_name':_0x466f4d[_0x1a26('0x2c')],'prev_project_name':_0x466f4d['arg_2']||'','is_subproject':_0x466f4d[_0x1a26('0x2d')]?!![]:![],'leaveAt':moment()[_0x1a26('0x2e')](_0x1a26('0x2f'))})});};exports[_0x1a26('0x30')]=function(_0x33edb3){return request(_0x1a26('0x31'),{'body':_0x33edb3});};exports[_0x1a26('0x32')]=function(_0x255a69){return request(_0x1a26('0x33'),{'body':_0x255a69});};exports[_0x1a26('0x34')]=function(_0x405cec){return request('ShowCmHopper',{'options':{'raw':![],'where':{'phone':_0x405cec[_0x1a26('0x1c')],'ListId':_0x405cec[_0x1a26('0x35')]}}})[_0x1a26('0x4')](function(_0xcbacbd){if(_0xcbacbd){return _0xcbacbd;}return request(_0x1a26('0x36'),{'body':_0x405cec});});};exports[_0x1a26('0x37')]=function(_0x5ce060){return request('ShowPause',{'options':{'where':{'id':_0x5ce060},'attributes':['name']}});};exports['agentLogin']=function(_0x3a6434,_0x391bda){return request('LoginUser',{'body':{'interface':_0x391bda},'options':{'where':_0x3a6434}});};exports[_0x1a26('0x38')]=function(_0x15806e,_0x24be85,_0x42c564){return request(_0x1a26('0x39'),{'body':{'type':_0x24be85,'uniqueid':_0x42c564},'options':{'where':_0x15806e}});};exports[_0x1a26('0x3a')]=function(_0x443041){return request('UnpauseUser',{'body':{},'options':{'where':_0x443041}});};exports['agentLogout']=function(_0x234df8){return request(_0x1a26('0x3b'),{'body':{},'options':{'where':_0x234df8}});};
\ No newline at end of file
+var _0x8f1f=['CloudProvider','email','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','dsn','getUserById','getContactByPhone','GetContactByPhone','phone','getSoundById','ShowSound','save_name','getIntervalById','ShowInterval','Interval','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareReport','arg_1','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ListId','ShowPause','agentLogin','LoginUser','agentPause','agentUnpause','UnpauseUser','agentLogout','LogoutUser','lodash','client','http','request','then','error','message','result','catch','getSquareProjects','GetSquareProjects','name','production','getSquareProject','ShowSquareProject','getMailAccountById','ShowMailAccount','MailServerOut','Smtp'];(function(_0x2754c4,_0x518592){var _0x59c31e=function(_0x38b447){while(--_0x38b447){_0x2754c4['push'](_0x2754c4['shift']());}};_0x59c31e(++_0x518592);}(_0x8f1f,0xe1));var _0xf8f1=function(_0x51b2f1,_0x22c27a){_0x51b2f1=_0x51b2f1-0x0;var _0xf9ddf8=_0x8f1f[_0x51b2f1];return _0xf9ddf8;};'use strict';var _=require(_0xf8f1('0x0'));var moment=require('moment');var jayson=require('jayson/promise');var client=jayson[_0xf8f1('0x1')][_0xf8f1('0x2')]({'port':0x2329});function request(_0x37e621,_0x46c11e){return new Promise(function(_0x2a5ef6,_0x1d2233){return client[_0xf8f1('0x3')](_0x37e621,_0x46c11e)[_0xf8f1('0x4')](function(_0x4a6e49){if(_0x4a6e49[_0xf8f1('0x5')]){return _0x1d2233(_0x4a6e49[_0xf8f1('0x5')][_0xf8f1('0x6')]);}else{return _0x2a5ef6(_0x4a6e49[_0xf8f1('0x7')]);}})[_0xf8f1('0x8')](function(_0x4bd078){return _0x1d2233(_0x4bd078);});});}exports[_0xf8f1('0x9')]=function(){return request(_0xf8f1('0xa'),{'options':{'raw':![],'attributes':['id',_0xf8f1('0xb'),_0xf8f1('0xc')]}});};exports[_0xf8f1('0xd')]=function(_0x28811d){return request(_0xf8f1('0xe'),{'options':{'raw':![],'where':{'name':_0x28811d},'attributes':['production']}});};exports[_0xf8f1('0xf')]=function(_0x3c8c77){return request(_0xf8f1('0x10'),{'options':{'raw':![],'where':{'id':_0x3c8c77},'include':[{'model':_0xf8f1('0x11'),'as':_0xf8f1('0x12'),'include':[{'model':_0xf8f1('0x13'),'as':'CloudProvider'}]}],'attributes':['id',_0xf8f1('0xb'),_0xf8f1('0x14')],'smtp':!![]}});};exports[_0xf8f1('0x15')]=function(_0x2b25ee){return request(_0xf8f1('0xe'),{'options':{'where':{'id':_0x2b25ee},'attributes':['name']}});};exports[_0xf8f1('0x16')]=function(_0x1b96f3){return request(_0xf8f1('0x17'),{'options':{'where':{'id':_0x1b96f3},'attributes':[_0xf8f1('0xb')]}});};exports[_0xf8f1('0x18')]=function(_0x36cb1b){return request(_0xf8f1('0x19'),{'options':{'where':{'id':_0x36cb1b},'attributes':['name']}});};exports[_0xf8f1('0x1a')]=function(_0x28e585){return request('ShowSquareOdbc',{'options':{'where':{'id':_0x28e585},'attributes':[_0xf8f1('0x1b')]}});};exports[_0xf8f1('0x1c')]=function(_0x32d2c1){return request('ShowUser',{'options':{'where':{'id':_0x32d2c1},'attributes':[_0xf8f1('0xb')]}});};exports[_0xf8f1('0x1d')]=function(_0x410299){return request(_0xf8f1('0x1e'),{'options':{'where':{'phone':_0x410299[_0xf8f1('0x1f')]},'attributes':['id']}});};exports['getTrunkById']=function(_0x12474a){return request('ShowTrunk',{'options':{'where':{'id':_0x12474a},'attributes':[_0xf8f1('0xb')]}});};exports[_0xf8f1('0x20')]=function(_0x5ec11c){return request(_0xf8f1('0x21'),{'options':{'where':{'id':_0x5ec11c},'attributes':[_0xf8f1('0x22')]}});};exports[_0xf8f1('0x23')]=function(_0x409e7b){return request(_0xf8f1('0x24'),{'options':{'raw':![],'where':{'id':_0x409e7b},'include':[{'model':_0xf8f1('0x25'),'as':'Intervals'}]}});};exports[_0xf8f1('0x26')]=function(_0x4d93b6){return request(_0xf8f1('0x27'),{'options':{'where':{'id':_0x4d93b6},'attributes':['id',_0xf8f1('0xb')]}});};exports[_0xf8f1('0x28')]=function(_0x3e97e4){return request(_0xf8f1('0x29'),{'body':_0x3e97e4});};exports[_0xf8f1('0x2a')]=function(_0x29b0f7){return request('CreateSquareDetailsReport',{'body':_0x29b0f7});};exports['createSquareReport']=function(_0x28b37c){return request(_0xf8f1('0x2b'),{'body':_['merge'](_0x28b37c,{'project_name':_0x28b37c[_0xf8f1('0x2c')],'prev_project_name':_0x28b37c[_0xf8f1('0x2d')]||'','is_subproject':_0x28b37c[_0xf8f1('0x2d')]?!![]:![],'leaveAt':moment()[_0xf8f1('0x2e')](_0xf8f1('0x2f'))})});};exports[_0xf8f1('0x30')]=function(_0x1aad2e){return request('CreateSquareRecording',{'body':_0x1aad2e});};exports[_0xf8f1('0x31')]=function(_0x5712ba){return request(_0xf8f1('0x32'),{'body':_0x5712ba});};exports[_0xf8f1('0x33')]=function(_0x138c01){return request('ShowCmHopper',{'options':{'raw':![],'where':{'phone':_0x138c01[_0xf8f1('0x1f')],'ListId':_0x138c01[_0xf8f1('0x34')]}}})[_0xf8f1('0x4')](function(_0x4fa285){if(_0x4fa285){return _0x4fa285;}return request('CreateCmContact',{'body':_0x138c01});});};exports['getPauseById']=function(_0x2e26a0){return request(_0xf8f1('0x35'),{'options':{'where':{'id':_0x2e26a0},'attributes':[_0xf8f1('0xb')]}});};exports[_0xf8f1('0x36')]=function(_0x4bf1bb,_0x29f4e1){return request(_0xf8f1('0x37'),{'body':{'interface':_0x29f4e1},'options':{'where':_0x4bf1bb}});};exports[_0xf8f1('0x38')]=function(_0x419af7,_0x579060,_0x1ac1b5){return request('PauseUser',{'body':{'type':_0x579060,'uniqueid':_0x1ac1b5},'options':{'where':_0x419af7}});};exports[_0xf8f1('0x39')]=function(_0x5f0b70){return request(_0xf8f1('0x3a'),{'body':{},'options':{'where':_0x5f0b70}});};exports[_0xf8f1('0x3b')]=function(_0x284ec6){return request(_0xf8f1('0x3c'),{'body':{},'options':{'where':_0x284ec6}});};
\ No newline at end of file
index 372e77d..db2750a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb82=['./lex','exports','./polly'];(function(_0x7d0c61,_0x157b14){var _0x3e702e=function(_0x21e450){while(--_0x21e450){_0x7d0c61['push'](_0x7d0c61['shift']());}};_0x3e702e(++_0x157b14);}(_0xfb82,0x17f));var _0x2fb8=function(_0x1b798e,_0xea47c7){_0x1b798e=_0x1b798e-0x0;var _0x1a622a=_0xfb82[_0x1b798e];return _0x1a622a;};var polly=require(_0x2fb8('0x0'));var lex=require(_0x2fb8('0x1'));module[_0x2fb8('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0xbd0a=['exports','./polly'];(function(_0x34df4a,_0x209d10){var _0x145c69=function(_0xb9bcbd){while(--_0xb9bcbd){_0x34df4a['push'](_0x34df4a['shift']());}};_0x145c69(++_0x209d10);}(_0xbd0a,0x1b9));var _0xabd0=function(_0x1ca7b3,_0x45e6fc){_0x1ca7b3=_0x1ca7b3-0x0;var _0x1f9f7a=_0xbd0a[_0x1ca7b3];return _0x1f9f7a;};var polly=require(_0xabd0('0x0'));var lex=require('./lex');module[_0xabd0('0x1')]={'polly':polly,'lex':lex};
\ No newline at end of file
index a2add0e..d319e37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x702d=['exports','./lib/api'];(function(_0x3c38c2,_0x109ac0){var _0x591252=function(_0x4cf398){while(--_0x4cf398){_0x3c38c2['push'](_0x3c38c2['shift']());}};_0x591252(++_0x109ac0);}(_0x702d,0x147));var _0xd702=function(_0x29ea45,_0x418c8a){_0x29ea45=_0x29ea45-0x0;var _0x111bf5=_0x702d[_0x29ea45];return _0x111bf5;};'use strict';var lex=require(_0xd702('0x0'));module[_0xd702('0x1')]=function(_0x37c2c5,_0x33e7c5,_0x37ed5c,_0x5c2b9e,_0x20c11a,_0xebbd7c){return lex(_0x37c2c5,_0x33e7c5,_0x37ed5c,_0x5c2b9e,_0x20c11a,_0xebbd7c);};
\ No newline at end of file
+var _0xe5b5=['exports','./lib/api'];(function(_0x3b1c1d,_0xcdb868){var _0x30faf4=function(_0x3a8087){while(--_0x3a8087){_0x3b1c1d['push'](_0x3b1c1d['shift']());}};_0x30faf4(++_0xcdb868);}(_0xe5b5,0x12b));var _0x5e5b=function(_0x15dbca,_0x1d7c3c){_0x15dbca=_0x15dbca-0x0;var _0x326533=_0xe5b5[_0x15dbca];return _0x326533;};'use strict';var lex=require(_0x5e5b('0x0'));module[_0x5e5b('0x1')]=function(_0x418c87,_0x3b3efd,_0x208070,_0x4263e,_0x33e813,_0x3dc763){return lex(_0x418c87,_0x3b3efd,_0x208070,_0x4263e,_0x33e813,_0x3dc763);};
\ No newline at end of file
index 65f660f..a06ca70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x526116,_0x116d80){var _0xf62f0d=function(_0xe43f01){while(--_0xe43f01){_0x526116['push'](_0x526116['shift']());}};_0xf62f0d(++_0x116d80);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa9e0[_0x1facfa];return _0x9ec701;};'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(_0x4b0d8,_0x3ab21f){var _0x349c21=function(_0xa5a7b1){while(--_0xa5a7b1){_0x4b0d8['push'](_0x4b0d8['shift']());}};_0x349c21(++_0x3ab21f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'use strict';var BPromise=require(_0x0a9e('0x0'));var AWS=require(_0x0a9e('0x1'));function lexResult(_0x29929c,_0x5dd881){return new BPromise(function(_0x550fbc,_0x18d5c9){_0x29929c['postText'](_0x5dd881,function(_0x333808,_0x432180){if(_0x333808){_0x18d5c9(_0x333808);}if(_0x432180[_0x0a9e('0x2')]){for(const _0x991246 in _0x432180[_0x0a9e('0x2')]){if(_0x432180['slots'][_0x0a9e('0x3')](_0x991246)){var _0x441e3a=_0x432180[_0x0a9e('0x2')][_0x991246];_0x432180['slot_'+_0x991246]=_0x441e3a;}}}_0x550fbc(_0x432180);});});}module['exports']=function(_0xe42b77,_0x56465b,_0x52cace,_0x39753a,_0xf81284,_0x307b3e){var _0x3ab53f=new AWS[(_0x0a9e('0x4'))]({'accessKeyId':_0x56465b,'secretAccessKey':_0x52cace,'region':_0x39753a});var _0xbd1168={'botAlias':'$LATEST','botName':_0x307b3e,'inputText':_0xf81284,'userId':_0xe42b77};return lexResult(_0x3ab53f,_0xbd1168);};
\ No newline at end of file
index 1b5dd2f..db3cda0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ce1=['./lib/api','exports'];(function(_0x141621,_0x5cdfab){var _0x1228a=function(_0x474b5a){while(--_0x474b5a){_0x141621['push'](_0x141621['shift']());}};_0x1228a(++_0x5cdfab);}(_0x3ce1,0x178));var _0x13ce=function(_0x578511,_0x3f5d44){_0x578511=_0x578511-0x0;var _0x281f35=_0x3ce1[_0x578511];return _0x281f35;};'use strict';var polly=require(_0x13ce('0x0'));module[_0x13ce('0x1')]=function(_0x413b8d,_0x25608c,_0x2c5af7,_0x23d056,_0xb1c31,_0xb2ce2f,_0x1a013a){return polly(_0x413b8d,_0x25608c,_0x2c5af7,_0x23d056,_0xb1c31,_0xb2ce2f,_0x1a013a);};
\ No newline at end of file
+var _0x9eb9=['./lib/api'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x9eb9,0x15e));var _0x99eb=function(_0x576e81,_0xfa0fe1){_0x576e81=_0x576e81-0x0;var _0x27e72a=_0x9eb9[_0x576e81];return _0x27e72a;};'use strict';var polly=require(_0x99eb('0x0'));module['exports']=function(_0x3249eb,_0x11c4bf,_0x560228,_0x15cbef,_0x1a5e61,_0x55c8a9,_0x3c3941){return polly(_0x3249eb,_0x11c4bf,_0x560228,_0x15cbef,_0x1a5e61,_0x55c8a9,_0x3c3941);};
\ No newline at end of file
index e70822d..3b85110 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e2c=['Polly','text','bluebird','synthesizeSpeech','AudioStream','writeFile','No\x20data\x20response\x20from\x20aws\x20Polly!'];(function(_0x277ee1,_0x4abddf){var _0x1efc75=function(_0x9832ef){while(--_0x9832ef){_0x277ee1['push'](_0x277ee1['shift']());}};_0x1efc75(++_0x4abddf);}(_0x3e2c,0x1d0));var _0xc3e2=function(_0x436073,_0x11b1d6){_0x436073=_0x436073-0x0;var _0x564463=_0x3e2c[_0x436073];return _0x564463;};'use strict';var fs=require('fs');var path=require('path');var BPromise=require(_0xc3e2('0x0'));var rs=require('randomstring');var AWS=require('aws-sdk');function pollyResult(_0x3b6e79,_0x25ed16,_0x3c4605){return new BPromise(function(_0xce75f4,_0x428f46){_0x3b6e79[_0xc3e2('0x1')](_0x25ed16,function(_0x23a823,_0x350e46){if(_0x23a823){_0x428f46(_0x23a823);}else if(_0x350e46){if(_0x350e46[_0xc3e2('0x2')]instanceof Buffer){fs[_0xc3e2('0x3')](_0x3c4605,_0x350e46['AudioStream'],function(_0x4e52fc){if(_0x4e52fc){_0x428f46(_0x4e52fc);}else{_0xce75f4();}});}else{_0x428f46(new Error('Invalid\x20data\x20response\x20from\x20aws\x20Polly!'));}}else{_0x428f46(new Error(_0xc3e2('0x4')));}});});}module['exports']=function(_0x205c1e,_0x16d1f9,_0x2d1d2b,_0x392805,_0x4a294d,_0x5e9cff,_0xfacd96){var _0x34fff3=new AWS[(_0xc3e2('0x5'))]({'accessKeyId':_0x205c1e,'secretAccessKey':_0x16d1f9,'region':_0x2d1d2b});var _0x5e8136={'Text':_0x4a294d,'TextType':_0x5e9cff||_0xc3e2('0x6'),'OutputFormat':'mp3','VoiceId':_0x392805};return pollyResult(_0x34fff3,_0x5e8136,_0xfacd96);};
\ No newline at end of file
+var _0x91fd=['synthesizeSpeech','AudioStream','writeFile','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','text','path','bluebird','randomstring','aws-sdk'];(function(_0x450d2e,_0xae3b3e){var _0x3b1caf=function(_0x4d775d){while(--_0x4d775d){_0x450d2e['push'](_0x450d2e['shift']());}};_0x3b1caf(++_0xae3b3e);}(_0x91fd,0xcd));var _0xd91f=function(_0x1d0458,_0x12595c){_0x1d0458=_0x1d0458-0x0;var _0x258872=_0x91fd[_0x1d0458];return _0x258872;};'use strict';var fs=require('fs');var path=require(_0xd91f('0x0'));var BPromise=require(_0xd91f('0x1'));var rs=require(_0xd91f('0x2'));var AWS=require(_0xd91f('0x3'));function pollyResult(_0x1108de,_0x284a8e,_0x3ff1e0){return new BPromise(function(_0x5ba3fe,_0x240e96){_0x1108de[_0xd91f('0x4')](_0x284a8e,function(_0x13a674,_0x2fed62){if(_0x13a674){_0x240e96(_0x13a674);}else if(_0x2fed62){if(_0x2fed62[_0xd91f('0x5')]instanceof Buffer){fs[_0xd91f('0x6')](_0x3ff1e0,_0x2fed62[_0xd91f('0x5')],function(_0x3f118b){if(_0x3f118b){_0x240e96(_0x3f118b);}else{_0x5ba3fe();}});}else{_0x240e96(new Error('Invalid\x20data\x20response\x20from\x20aws\x20Polly!'));}}else{_0x240e96(new Error(_0xd91f('0x7')));}});});}module[_0xd91f('0x8')]=function(_0x2f389d,_0x3940b7,_0x427776,_0x16455d,_0x3b95cb,_0x3904fa,_0x1408f5){var _0x4729a9=new AWS[(_0xd91f('0x9'))]({'accessKeyId':_0x2f389d,'secretAccessKey':_0x3940b7,'region':_0x427776});var _0x1bd4cf={'Text':_0x3b95cb,'TextType':_0x3904fa||_0xd91f('0xa'),'OutputFormat':'mp3','VoiceId':_0x16455d};return pollyResult(_0x4729a9,_0x1bd4cf,_0x1408f5);};
\ No newline at end of file
index 6f9a1b9..e1de8ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf458=['exports','./lib/api'];(function(_0x15adc6,_0xbc8322){var _0x3bb841=function(_0x16945d){while(--_0x16945d){_0x15adc6['push'](_0x15adc6['shift']());}};_0x3bb841(++_0xbc8322);}(_0xf458,0xcf));var _0x8f45=function(_0x21ebba,_0x315952){_0x21ebba=_0x21ebba-0x0;var _0x560a31=_0xf458[_0x21ebba];return _0x560a31;};'use strict';var asr=require(_0x8f45('0x0'));module[_0x8f45('0x1')]=function(_0x2bd950,_0x8d8a50,_0x40df1f,_0x500350){return asr(_0x2bd950,_0x8d8a50,_0x40df1f);};
\ No newline at end of file
+var _0x1801=['exports'];(function(_0x48508d,_0x2d486e){var _0x20a1fe=function(_0x25090f){while(--_0x25090f){_0x48508d['push'](_0x48508d['shift']());}};_0x20a1fe(++_0x2d486e);}(_0x1801,0xb4));var _0x1180=function(_0x203711,_0x394fec){_0x203711=_0x203711-0x0;var _0x4e3460=_0x1801[_0x203711];return _0x4e3460;};'use strict';var asr=require('./lib/api');module[_0x1180('0x0')]=function(_0x7d12d2,_0xfc1e94,_0x2d25df,_0x510d00){return asr(_0x7d12d2,_0xfc1e94,_0x2d25df);};
\ No newline at end of file
index bb80772..5659481 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49e9=['readFileSync','base64','POST','/v1/speech:recognize?key=','LINEAR16','url','bluebird','exports','string','length','filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x49e9,0x10f));var _0x949e=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x49e9[_0x20a584];return _0x4b41a8;};'use strict';var url=require(_0x949e('0x0'));var BPromise=require(_0x949e('0x1'));var fs=require('fs');var host='https://speech.googleapis.com';module[_0x949e('0x2')]=function(_0x1db1b8,_0x259795,_0x5c303a){return new BPromise(function(_0x4f1295,_0x114f65){var _0x4c284b;if(typeof _0x1db1b8!==_0x949e('0x3')||_0x1db1b8[_0x949e('0x4')]===0x0){return _0x114f65(_0x949e('0x5'));}if(typeof _0x259795!=='string'||_0x259795[_0x949e('0x4')]===0x0){return _0x114f65(_0x949e('0x6'));}if(typeof _0x5c303a!==_0x949e('0x7')&&(typeof _0x5c303a!==_0x949e('0x3')||_0x5c303a[_0x949e('0x4')]===0x0)){return _0x114f65(_0x949e('0x8'));}try{_0x4c284b=fs[_0x949e('0x9')](_0x1db1b8)['toString'](_0x949e('0xa'));}catch(_0x50ca96){return _0x114f65(_0x50ca96);}return _0x4f1295({'method':_0x949e('0xb'),'uri':host+_0x949e('0xc')+_0x259795,'body':{'config':{'encoding':_0x949e('0xd'),'sampleRateHertz':'8000','languageCode':_0x5c303a},'audio':{'content':_0x4c284b}},'json':!![]});});};
\ No newline at end of file
+var _0xadb8=['key\x20should\x20be\x20a\x20string','undefined','base64','LINEAR16','8000','https://speech.googleapis.com','string','filepath\x20should\x20be\x20a\x20string','length'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xadb8,0x1d0));var _0x8adb=function(_0x56740a,_0x568894){_0x56740a=_0x56740a-0x0;var _0x257144=_0xadb8[_0x56740a];return _0x257144;};'use strict';var url=require('url');var BPromise=require('bluebird');var fs=require('fs');var host=_0x8adb('0x0');module['exports']=function(_0x2b8a76,_0x2a0b30,_0x24f912){return new BPromise(function(_0x1bf88c,_0x44fdf7){var _0x2baedb;if(typeof _0x2b8a76!==_0x8adb('0x1')||_0x2b8a76['length']===0x0){return _0x44fdf7(_0x8adb('0x2'));}if(typeof _0x2a0b30!==_0x8adb('0x1')||_0x2a0b30[_0x8adb('0x3')]===0x0){return _0x44fdf7(_0x8adb('0x4'));}if(typeof _0x24f912!==_0x8adb('0x5')&&(typeof _0x24f912!==_0x8adb('0x1')||_0x24f912[_0x8adb('0x3')]===0x0)){return _0x44fdf7('lang\x20should\x20be\x20a\x20string');}try{_0x2baedb=fs['readFileSync'](_0x2b8a76)['toString'](_0x8adb('0x6'));}catch(_0x5be2f4){return _0x44fdf7(_0x5be2f4);}return _0x1bf88c({'method':'POST','uri':host+'/v1/speech:recognize?key='+_0x2a0b30,'body':{'config':{'encoding':_0x8adb('0x7'),'sampleRateHertz':_0x8adb('0x8'),'languageCode':_0x24f912},'audio':{'content':_0x2baedb}},'json':!![]});});};
\ No newline at end of file
index ce831ba..2d755b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd2f=['./asr'];(function(_0x57dbce,_0x2a4604){var _0x2ab396=function(_0x321f80){while(--_0x321f80){_0x57dbce['push'](_0x57dbce['shift']());}};_0x2ab396(++_0x2a4604);}(_0xdd2f,0x1d1));var _0xfdd2=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0xdd2f[_0x1d1779];return _0x2377e9;};var asr=require(_0xfdd2('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
+var _0xced6=['exports','./asr'];(function(_0x50a26e,_0x767693){var _0x151dfb=function(_0x301249){while(--_0x301249){_0x50a26e['push'](_0x50a26e['shift']());}};_0x151dfb(++_0x767693);}(_0xced6,0x1d5));var _0x6ced=function(_0x276c17,_0x3e11d4){_0x276c17=_0x276c17-0x0;var _0x1915f2=_0xced6[_0x276c17];return _0x1915f2;};var asr=require(_0x6ced('0x0'));module[_0x6ced('0x1')]={'asr':asr};
\ No newline at end of file
index f8b96a3..0653927 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0b3=['close','unlink','download\x20error','pipe','end','host','path','data','transcode','wav','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','writeFileSync','split','toString','googleCloudTTS','input','voice','audioConfig','MP3','text:synthesize','POST','then','.mp3','from','audioContent','writeFile','chmodSync','info','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','jQ1olc','null','slice','parse\x20response\x20failed:\x0a','lang\x20\x22','goggleTTS\x20path','uri','results','map','alternatives','join','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','message','textRequest','stringify','result','source','action','actionIncomplete','fulfillment','code','metadata','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','length','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','fulfillmentText','intent','displayName','isFallback','responseId','intentDetectionConfidence','asr','transcript','777','awsLex','lex','ispeechTTS','format','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','sestekNDA','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','dirName','bluebird','dialogflow','http','https','md5','querystring','request-promise','randomstring','sox','google-tts-api','url','parse','util','./tilde','../../../config/logger','agi','protocol','https:','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','finish'];(function(_0x1e2c73,_0x12cd55){var _0x46f8d5=function(_0xe5a2fd){while(--_0xe5a2fd){_0x1e2c73['push'](_0x1e2c73['shift']());}};_0x46f8d5(++_0x12cd55);}(_0xc0b3,0x66));var _0x3c0b=function(_0x365d25,_0x285696){_0x365d25=_0x365d25-0x0;var _0x3c3aee=_0xc0b3[_0x365d25];return _0x3c3aee;};'use strict';var apiai=require('apiai-promise');var BPromise=require(_0x3c0b('0x0'));var dialogflow=require(_0x3c0b('0x1'));var fs=require('fs');var http=require(_0x3c0b('0x2'));var https=require(_0x3c0b('0x3'));var md5=require(_0x3c0b('0x4'));var path=require('path');var querystring=require(_0x3c0b('0x5'));var rp=require(_0x3c0b('0x6'));var rs=require(_0x3c0b('0x7'));var sox=require(_0x3c0b('0x8'));var tts=require(_0x3c0b('0x9'));var urlParse=require(_0x3c0b('0xa'))[_0x3c0b('0xb')];var util=require(_0x3c0b('0xc'));var aws=require('./aws');var google=require('./google');var sestek=require('./sestek');var tilde=require(_0x3c0b('0xd'));var logger=require(_0x3c0b('0xe'))(_0x3c0b('0xf'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x2c0a11,_0xb12078){return new BPromise(function(_0x6d392e,_0xad310a){var _0x15ea95=urlParse(_0x2c0a11);var _0x4b4ae5=_0x15ea95[_0x3c0b('0x10')]===_0x3c0b('0x11')?https:http;var _0x462034={'host':_0x15ea95['host'],'path':_0x15ea95['path'],'headers':{'user-agent':_0x3c0b('0x12')}};_0x4b4ae5[_0x3c0b('0x13')](_0x462034,function(_0x17f67c){if(_0x17f67c[_0x3c0b('0x14')]!==0xc8){logger[_0x3c0b('0x15')](_0x3c0b('0x16')+_0x2c0a11+_0x3c0b('0x17')+_0x17f67c[_0x3c0b('0x14')]+'\x20('+_0x17f67c[_0x3c0b('0x18')]+')');_0xad310a(new Error('request\x20to\x20'+_0x2c0a11+_0x3c0b('0x17')+_0x17f67c[_0x3c0b('0x14')]+'\x20('+_0x17f67c['statusMessage']+')'));return;}var _0x23f692=fs['createWriteStream'](_0xb12078);_0x23f692['on'](_0x3c0b('0x19'),function(){logger['info']('finish\x20download\x20file');_0x23f692[_0x3c0b('0x1a')](_0x6d392e);});_0x23f692['on'](_0x3c0b('0x15'),function(_0x3cf851){fs[_0x3c0b('0x1b')](_0xb12078);logger['error'](_0x3c0b('0x1c'),_0x3cf851);_0xad310a(_0x3cf851);});_0x17f67c[_0x3c0b('0x1d')](_0x23f692);})['on']('error',function(_0x18d9d6){logger[_0x3c0b('0x15')](_0x18d9d6);_0xad310a(_0x18d9d6);})[_0x3c0b('0x1e')]();});}function uploadFile(_0x110c2b){return new BPromise(function(_0x4834ff,_0x3ab11b){var _0x2b044e=urlParse(_0x110c2b);var _0x3178db=_0x2b044e[_0x3c0b('0x10')]===_0x3c0b('0x11')?https:http;var _0x16e51c={'host':_0x2b044e[_0x3c0b('0x1f')],'path':_0x2b044e[_0x3c0b('0x20')],'headers':{'user-agent':_0x3c0b('0x12')}};_0x3178db[_0x3c0b('0x13')](_0x16e51c,function(_0x2cc3c1){if(_0x2cc3c1[_0x3c0b('0x14')]!==0xc8){_0x3ab11b(new Error(_0x3c0b('0x16')+_0x110c2b+_0x3c0b('0x17')+_0x2cc3c1[_0x3c0b('0x14')]+'\x20('+_0x2cc3c1[_0x3c0b('0x18')]+')'));return;}var _0x46d449='';_0x2cc3c1['on'](_0x3c0b('0x21'),function(_0x49b5e9){_0x46d449+=_0x49b5e9;});_0x2cc3c1['on'](_0x3c0b('0x1e'),function(){_0x4834ff(_0x46d449);});})['on'](_0x3c0b('0x15'),function(_0x2a374c){_0x3ab11b(_0x2a374c);})['end']();});}function convertFile(_0x1331e0,_0x1c9b48){return new BPromise(function(_0x3df887,_0x122755){var _0x535c4a=sox[_0x3c0b('0x22')](_0x1331e0,_0x1c9b48,{'sampleRate':0x1f40,'format':_0x3c0b('0x23'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x535c4a['on']('error',function(_0xc941e0){logger['error'](_0x3c0b('0x24'),_0xc941e0);_0x122755(_0xc941e0);});_0x535c4a['on']('end',function(){logger['info'](_0x3c0b('0x25'));_0x3df887();});_0x535c4a[_0x3c0b('0x26')]();});}function base64Decode(_0xb08d64,_0x2fbae3){var _0x2ec304=path[_0x3c0b('0x27')](__dirname,_0x3c0b('0x28'),rs[_0x3c0b('0x29')](0x4)+_0x3c0b('0x2a'));fs[_0x3c0b('0x2b')](_0x2ec304,_0xb08d64,'base64');return convertFile(_0x2ec304,_0x2fbae3)['then'](function(){try{fs[_0x3c0b('0x1b')](_0x2ec304);fs['chmodSync'](_0x2fbae3,'777');}catch(_0x49e598){logger[_0x3c0b('0x15')](_0x49e598);}return _0x2fbae3[_0x3c0b('0x2c')]('.')[0x0];});}function base64Encode(_0x51e9cb){var _0x208828=fs['readFileSync'](_0x51e9cb);return new Buffer(_0x208828)[_0x3c0b('0x2d')]('base64');}exports[_0x3c0b('0x2e')]=function(_0x2488b7,_0x191e70,_0x49fd26,_0x27843b,_0x4a3e94,_0x3f28be){var _0x5b78c4,_0xc86548;var _0x52b0d9='https://texttospeech.googleapis.com/v1/';var _0x2fe14e='?key='+_0x2488b7;var _0x3370b3={};if(_0x191e70==='ssml'){_0x3370b3['input']={'ssml':_0x49fd26};}else{_0x3370b3[_0x3c0b('0x2f')]={'text':_0x49fd26};};_0x3370b3[_0x3c0b('0x30')]={'languageCode':_0x27843b,'ssmlGender':_0x4a3e94};_0x3370b3[_0x3c0b('0x31')]={'audioEncoding':_0x3c0b('0x32'),'sampleRateHertz':0x1f40};var _0x1f2b3a={'url':_0x52b0d9+_0x3c0b('0x33')+_0x2fe14e,'method':_0x3c0b('0x34'),'json':!![],'body':_0x3370b3};return rp(_0x1f2b3a)[_0x3c0b('0x35')](function(_0xd24221){return new BPromise(function(_0x31421d,_0x3f75f2){_0x5b78c4=path['resolve'](__dirname,'tmp',rs[_0x3c0b('0x29')](0x4)+_0x3c0b('0x36'));var _0x509a4c=Buffer[_0x3c0b('0x37')](_0xd24221[_0x3c0b('0x38')],'base64');return fs[_0x3c0b('0x39')](_0x5b78c4,_0x509a4c,function(_0x1ed562){_0x3f75f2(_0x1ed562);},function(_0x4f5b4f){fs[_0x3c0b('0x3a')](_0x5b78c4,'777');_0x31421d(_0x4f5b4f);});});})[_0x3c0b('0x35')](function(_0x1f4185){_0xc86548=path[_0x3c0b('0x27')](__dirname,_0x3c0b('0x28'),rs[_0x3c0b('0x29')](0x4)+_0x3c0b('0x2a'));return convertFile(_0x5b78c4,_0xc86548);})[_0x3c0b('0x35')](function(){try{fs['unlink'](_0x5b78c4);fs['chmodSync'](_0xc86548,'777');}catch(_0x27a606){logger[_0x3c0b('0x15')](_0x27a606);}logger[_0x3c0b('0x3b')]('googleCloudTTS\x20path',_0xc86548[_0x3c0b('0x2c')]('.')[0x0]);return _0xc86548['split']('.')[0x0];});};exports[_0x3c0b('0x3c')]=function(_0x2c4e03,_0x34e8a8){var _0x4613a2=_0x3c0b('0x3d');var _0x9739e0,_0x3f6c31;var _0x3760d9;var _0x207661={'encoding':_0x3c0b('0x3e'),'method':_0x3c0b('0x34'),'timeout':0x2710,'url':_0x4613a2,'headers':{'Content-Type':_0x3c0b('0x3f')},'body':_0x3c0b('0x40')+encodeURIComponent(JSON['stringify']([[[_0x3c0b('0x41'),JSON['stringify']([_0x2c4e03,_0x34e8a8||'en',![],_0x3c0b('0x42')]),null,'generic']]]))};return rp(_0x207661)[_0x3c0b('0x35')](function(_0x5f4fab){try{_0x3760d9=eval(_0x5f4fab[_0x3c0b('0x43')](0x5))[0x0][0x2];}catch(_0x4b2c23){throw new Error(_0x3c0b('0x44')+_0x5f4fab[_0x3c0b('0x21')]);}if(!_0x3760d9){if(_0x2c4e03['length']>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0x3c0b('0x45')+_0x34e8a8+'\x22\x20might\x20not\x20exist');}}try{_0x3760d9=eval(_0x3760d9)[0x0];}catch(_0x1991cb){throw new Error(_0x3c0b('0x44')+res[_0x3c0b('0x21')]);}const _0x916e03=_0x3760d9;_0x9739e0=path[_0x3c0b('0x27')](__dirname,_0x3c0b('0x28'),rs[_0x3c0b('0x29')](0x4)+'.mp3');fs['writeFileSync'](_0x9739e0,_0x3760d9,{'encoding':'base64'});_0x3f6c31=path[_0x3c0b('0x27')](__dirname,_0x3c0b('0x28'),rs[_0x3c0b('0x29')](0x4)+_0x3c0b('0x2a'));return convertFile(_0x9739e0,_0x3f6c31);})[_0x3c0b('0x35')](function(){try{fs['unlink'](_0x9739e0);fs[_0x3c0b('0x3a')](_0x3f6c31,'777');}catch(_0x204868){logger[_0x3c0b('0x15')](_0x204868);}logger['info'](_0x3c0b('0x46'),_0x3f6c31['split']('.')[0x0]);return _0x3f6c31[_0x3c0b('0x2c')]('.')[0x0];});};exports['googleASR']=function(_0x2d4d3,_0x4af45c,_0x1a9b12){return google['asr'](_0x2d4d3,_0x4af45c,_0x1a9b12)[_0x3c0b('0x35')](function(_0x227d1f){logger[_0x3c0b('0x3b')](_0x227d1f[_0x3c0b('0x47')]);return rp(_0x227d1f);})[_0x3c0b('0x35')](function(_0x3ad4a4){var _0x1a8bf9='';var _0x54ac76=0x0;try{fs[_0x3c0b('0x1b')](_0x2d4d3);}catch(_0x491298){logger['error'](_0x491298);}if(_0x3ad4a4&&_0x3ad4a4[_0x3c0b('0x48')]){_0x1a8bf9=_0x3ad4a4[_0x3c0b('0x48')][_0x3c0b('0x49')](function(_0x5744a5){return _0x5744a5&&_0x5744a5[_0x3c0b('0x4a')][0x0]&&_0x5744a5[_0x3c0b('0x4a')][0x0]['transcript']?_0x5744a5[_0x3c0b('0x4a')][0x0]['transcript']:'';})[_0x3c0b('0x4b')]('\x0a');_0x54ac76=_0x3ad4a4[_0x3c0b('0x48')]['map'](function(_0x2117fb){return _0x2117fb&&_0x2117fb['alternatives'][0x0]&&_0x2117fb[_0x3c0b('0x4a')][0x0][_0x3c0b('0x4c')]?_0x2117fb[_0x3c0b('0x4a')][0x0][_0x3c0b('0x4c')]:0x0;})[_0x3c0b('0x4b')]('\x0a');}logger[_0x3c0b('0x3b')](_0x3c0b('0x4d'),_0x1a8bf9);logger[_0x3c0b('0x3b')](_0x3c0b('0x4e'),_0x54ac76);return{'transcript':_0x1a8bf9,'confidence':_0x54ac76};})[_0x3c0b('0x4f')](function(_0x19aaa6){logger['error'](_0x3c0b('0x50'),_0x19aaa6[_0x3c0b('0x14')],_0x19aaa6['name'],_0x19aaa6[_0x3c0b('0x51')]);});};exports['googleDialogflow']=function(_0x287332,_0x3d374e,_0x389d07,_0x254b43){var _0x3e4c1f=apiai(_0x3d374e,{'language':_0x254b43||'en'});return _0x3e4c1f[_0x3c0b('0x52')](_0x389d07,{'sessionId':md5(_0x287332)})[_0x3c0b('0x35')](function(_0xfbbb7a){logger[_0x3c0b('0x3b')](JSON[_0x3c0b('0x53')](_0xfbbb7a));return{'source':_0xfbbb7a[_0x3c0b('0x54')][_0x3c0b('0x55')],'resolvedQuery':_0xfbbb7a[_0x3c0b('0x54')]['resolvedQuery'],'action':_0xfbbb7a[_0x3c0b('0x54')][_0x3c0b('0x56')],'actionIncomplete':_0xfbbb7a[_0x3c0b('0x54')][_0x3c0b('0x57')],'speech':_0xfbbb7a['result'][_0x3c0b('0x58')]['speech'],'score':_0xfbbb7a[_0x3c0b('0x54')]['score'],'statusCode':_0xfbbb7a['status'][_0x3c0b('0x59')],'endConversation':_0xfbbb7a[_0x3c0b('0x54')][_0x3c0b('0x5a')]['endConversation']||![],'isFallbackIntent':_0xfbbb7a[_0x3c0b('0x54')][_0x3c0b('0x5a')][_0x3c0b('0x5b')]};});};exports[_0x3c0b('0x5c')]=function(_0x4fec73,_0x34384c,_0x1a508e,_0x5d5955,_0x4a21cf,_0x3ee6cc){var _0x13e924=_0x5d5955[_0x3c0b('0x5d')](/\\n/g,'\x0a');var _0x4b5a83={'credentials':{'private_key':_0x13e924,'client_email':_0x1a508e}};var _0x29d8a9=new dialogflow[(_0x3c0b('0x5e'))](_0x4b5a83);var _0x5f19e7=_0x29d8a9[_0x3c0b('0x5f')](_0x34384c,md5(_0x4fec73));var _0xd09e94={'session':_0x5f19e7,'queryInput':{'text':{'text':_0x4a21cf,'languageCode':_0x3ee6cc}}};return _0x29d8a9[_0x3c0b('0x60')](_0xd09e94)['then'](function(_0x24d7b7){if(_0x24d7b7&&_0x24d7b7[_0x3c0b('0x61')]){logger['info'](_0x3c0b('0x62'),JSON[_0x3c0b('0x53')](_0x24d7b7));var _0xac23b8=_0x24d7b7[0x0];if(_0xac23b8){var _0x49f14a={'action':_0xac23b8[_0x3c0b('0x63')][_0x3c0b('0x56')],'allRequiredParamsPresent':_0xac23b8['queryResult'][_0x3c0b('0x64')],'endConversation':_0xac23b8[_0x3c0b('0x63')][_0x3c0b('0x65')]&&_0xac23b8[_0x3c0b('0x63')][_0x3c0b('0x65')][_0x3c0b('0x66')]?_0xac23b8[_0x3c0b('0x63')][_0x3c0b('0x65')]['fields']['end_conversation']['boolValue']:![],'fulfillmentText':_0xac23b8[_0x3c0b('0x63')][_0x3c0b('0x67')],'intentName':_0xac23b8[_0x3c0b('0x63')][_0x3c0b('0x68')]['name'],'intentDisplayName':_0xac23b8['queryResult']['intent'][_0x3c0b('0x69')],'isFallbackIntent':_0xac23b8[_0x3c0b('0x63')]['intent'][_0x3c0b('0x6a')],'languageCode':_0xac23b8['queryResult']['languageCode'],'queryText':_0xac23b8[_0x3c0b('0x63')]['queryText'],'responseId':_0xac23b8[_0x3c0b('0x6b')],'score':_0xac23b8[_0x3c0b('0x63')][_0x3c0b('0x6c')],'speech':_0xac23b8[_0x3c0b('0x63')][_0x3c0b('0x67')],'providerResponse':JSON['stringify'](_0x24d7b7)};return _0x49f14a;}}});};exports['tildeASR']=function(_0x2a7af0,_0x32a64a,_0x1b1e1d,_0x238b57){return tilde[_0x3c0b('0x6d')](_0x2a7af0,_0x32a64a,_0x1b1e1d,_0x238b57)[_0x3c0b('0x35')](function(_0x605ff2){try{fs['unlink'](_0x2a7af0);}catch(_0x2b1bc2){logger[_0x3c0b('0x15')](_0x2b1bc2);}logger[_0x3c0b('0x3b')]('Tilde\x20ASR\x20transcription',_0x605ff2[_0x3c0b('0x6e')]);logger[_0x3c0b('0x3b')]('Tilde\x20ASR\x20confidence',_0x605ff2[_0x3c0b('0x4c')]);return _0x605ff2;});};exports['awsPolly']=function(_0x5e7ab4,_0x31ef40,_0x32d3b7,_0x341b46,_0x59fee2,_0xa60838){var _0x519bd1=path[_0x3c0b('0x27')](__dirname,_0x3c0b('0x28'),rs[_0x3c0b('0x29')](0x4)+_0x3c0b('0x36'));var _0x5d8a03;return aws['polly'](_0x5e7ab4,_0x31ef40,_0x32d3b7,_0x341b46,_0x59fee2,_0xa60838,_0x519bd1)[_0x3c0b('0x35')](function(){_0x5d8a03=path[_0x3c0b('0x27')](__dirname,_0x3c0b('0x28'),rs['generate'](0x4)+_0x3c0b('0x2a'));return convertFile(_0x519bd1,_0x5d8a03);})[_0x3c0b('0x35')](function(){try{fs['unlink'](_0x519bd1);fs[_0x3c0b('0x3a')](_0x5d8a03,_0x3c0b('0x6f'));}catch(_0x5ba6a1){logger[_0x3c0b('0x15')](_0x5ba6a1);}return _0x5d8a03[_0x3c0b('0x2c')]('.')[0x0];});};exports[_0x3c0b('0x70')]=function(_0x34659a,_0x4ce938,_0x12c5f4,_0x21b3e5,_0x5da27f,_0x160212){return aws[_0x3c0b('0x71')](_0x34659a,_0x4ce938,_0x12c5f4,_0x21b3e5,_0x5da27f,_0x160212)[_0x3c0b('0x35')](function(_0x16fe1a){logger[_0x3c0b('0x3b')](JSON[_0x3c0b('0x53')](_0x16fe1a));return _0x16fe1a;});};exports[_0x3c0b('0x72')]=function(_0x143322,_0x26b332,_0x22b81d,_0x533d77){var _0x474dc2=util[_0x3c0b('0x73')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x143322,encodeURIComponent(_0x26b332),_0x22b81d,_0x533d77);var _0x18fd14=path['resolve'](__dirname,_0x3c0b('0x28'),rs[_0x3c0b('0x29')](0x4)+_0x3c0b('0x36'));var _0x181267;return downloadFile(_0x474dc2,_0x18fd14)[_0x3c0b('0x35')](function(){_0x181267=path[_0x3c0b('0x27')](__dirname,_0x3c0b('0x28'),rs['generate'](0x4)+_0x3c0b('0x2a'));return convertFile(_0x18fd14,_0x181267);})[_0x3c0b('0x35')](function(){try{fs[_0x3c0b('0x1b')](_0x18fd14);fs['chmodSync'](_0x181267,_0x3c0b('0x6f'));}catch(_0x13ce6b){logger[_0x3c0b('0x15')](_0x13ce6b);}return _0x181267['split']('.')[0x0];});};exports[_0x3c0b('0x74')]=function(_0x978793,_0x4ec813,_0x5b5829,_0x39d3e5){var _0xb347d7=util[_0x3c0b('0x73')](_0x3c0b('0x75'),ISPEECH_API,_0x4ec813,_0x5b5829,base64Encode(_0x978793),_0x39d3e5?util[_0x3c0b('0x73')](_0x3c0b('0x76'),encodeURIComponent(_0x39d3e5)):'freeform=3');return uploadFile(_0xb347d7)['then'](function(_0x59196c){return querystring[_0x3c0b('0xb')](_0x59196c);});};exports[_0x3c0b('0x77')]=function(_0x487e1c,_0x135e92){return sestek['nda'](_0x487e1c,_0x135e92)[_0x3c0b('0x35')](function(_0x3b1f7b){logger[_0x3c0b('0x3b')](JSON['stringify'](_0x3b1f7b));var _0x4867cd={'speech':_0x3b1f7b[_0x3c0b('0x78')],'action':_0x3b1f7b[_0x3c0b('0x79')]?_0x3b1f7b[_0x3c0b('0x79')][_0x3c0b('0x7a')]:undefined,'actiondata':_0x3b1f7b[_0x3c0b('0x79')]?_0x3b1f7b['channelData'][_0x3c0b('0x7b')]:undefined};if(_0x3b1f7b['channelData']&&_0x3b1f7b['channelData'][_0x3c0b('0x7c')]){return base64Decode(_0x3b1f7b[_0x3c0b('0x79')]['AudioFromTts'][_0x3c0b('0x7d')],path['resolve'](__dirname,_0x3c0b('0x28'),rs[_0x3c0b('0x29')](0x4)+_0x3c0b('0x2a')))[_0x3c0b('0x35')](function(_0x582d58){_0x4867cd[_0x3c0b('0x7e')]=_0x582d58;return _0x4867cd;});}return _0x4867cd;});};exports[_0x3c0b('0x7f')]=function(){return __dirname;};
\ No newline at end of file
+var _0x0774=['./tilde','../../../config/logger','https://api.ispeech.org/api/rest','protocol','https:','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','finish','info','finish\x20download\x20file','close','unlink','end','host','data','transcode','wav','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','.wav','base64','chmodSync','777','split','readFileSync','toString','googleCloudTTS','?key=','input','voice','audioConfig','MP3','text:synthesize','POST','then','generate','from','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','null','generic','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','\x22\x20might\x20not\x20exist','.mp3','writeFileSync','googleASR','asr','uri','map','transcript','alternatives','join','results','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','message','googleDialogflow','textRequest','result','source','actionIncomplete','fulfillment','speech','score','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','name','isFallback','languageCode','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20confidence','awsPolly','polly','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','nda','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','dialogflow','http','path','request-promise','sox','google-tts-api','parse','./aws','./sestek'];(function(_0x58aa2b,_0x2be342){var _0x6b9b2f=function(_0x4dec5e){while(--_0x4dec5e){_0x58aa2b['push'](_0x58aa2b['shift']());}};_0x6b9b2f(++_0x2be342);}(_0x0774,0x79));var _0x4077=function(_0x418d95,_0xd6c34d){_0x418d95=_0x418d95-0x0;var _0x5026dd=_0x0774[_0x418d95];return _0x5026dd;};'use strict';var apiai=require(_0x4077('0x0'));var BPromise=require(_0x4077('0x1'));var dialogflow=require(_0x4077('0x2'));var fs=require('fs');var http=require(_0x4077('0x3'));var https=require('https');var md5=require('md5');var path=require(_0x4077('0x4'));var querystring=require('querystring');var rp=require(_0x4077('0x5'));var rs=require('randomstring');var sox=require(_0x4077('0x6'));var tts=require(_0x4077('0x7'));var urlParse=require('url')[_0x4077('0x8')];var util=require('util');var aws=require(_0x4077('0x9'));var google=require('./google');var sestek=require(_0x4077('0xa'));var tilde=require(_0x4077('0xb'));var logger=require(_0x4077('0xc'))('agi');var ISPEECH_API=_0x4077('0xd');function downloadFile(_0x338f68,_0xa0019e){return new BPromise(function(_0x518163,_0x488a75){var _0x46c3d6=urlParse(_0x338f68);var _0x5c98fb=_0x46c3d6[_0x4077('0xe')]===_0x4077('0xf')?https:http;var _0x353776={'host':_0x46c3d6['host'],'path':_0x46c3d6['path'],'headers':{'user-agent':_0x4077('0x10')}};_0x5c98fb[_0x4077('0x11')](_0x353776,function(_0x3db207){if(_0x3db207[_0x4077('0x12')]!==0xc8){logger[_0x4077('0x13')](_0x4077('0x14')+_0x338f68+_0x4077('0x15')+_0x3db207[_0x4077('0x12')]+'\x20('+_0x3db207[_0x4077('0x16')]+')');_0x488a75(new Error(_0x4077('0x14')+_0x338f68+'\x20failed,\x20status\x20code\x20=\x20'+_0x3db207[_0x4077('0x12')]+'\x20('+_0x3db207[_0x4077('0x16')]+')'));return;}var _0x4f3e76=fs['createWriteStream'](_0xa0019e);_0x4f3e76['on'](_0x4077('0x17'),function(){logger[_0x4077('0x18')](_0x4077('0x19'));_0x4f3e76[_0x4077('0x1a')](_0x518163);});_0x4f3e76['on'](_0x4077('0x13'),function(_0x3483cd){fs[_0x4077('0x1b')](_0xa0019e);logger[_0x4077('0x13')]('download\x20error',_0x3483cd);_0x488a75(_0x3483cd);});_0x3db207['pipe'](_0x4f3e76);})['on']('error',function(_0x12ad73){logger[_0x4077('0x13')](_0x12ad73);_0x488a75(_0x12ad73);})[_0x4077('0x1c')]();});}function uploadFile(_0x1423be){return new BPromise(function(_0x28c376,_0x42e820){var _0x54efd4=urlParse(_0x1423be);var _0x3f553d=_0x54efd4[_0x4077('0xe')]===_0x4077('0xf')?https:http;var _0x187f4e={'host':_0x54efd4[_0x4077('0x1d')],'path':_0x54efd4['path'],'headers':{'user-agent':_0x4077('0x10')}};_0x3f553d[_0x4077('0x11')](_0x187f4e,function(_0x879843){if(_0x879843[_0x4077('0x12')]!==0xc8){_0x42e820(new Error('request\x20to\x20'+_0x1423be+_0x4077('0x15')+_0x879843[_0x4077('0x12')]+'\x20('+_0x879843['statusMessage']+')'));return;}var _0xae99d7='';_0x879843['on'](_0x4077('0x1e'),function(_0x5cb4c8){_0xae99d7+=_0x5cb4c8;});_0x879843['on'](_0x4077('0x1c'),function(){_0x28c376(_0xae99d7);});})['on'](_0x4077('0x13'),function(_0xf31ddc){_0x42e820(_0xf31ddc);})[_0x4077('0x1c')]();});}function convertFile(_0x55b2c2,_0x3bc533){return new BPromise(function(_0x2f952e,_0x43a0f4){var _0x52391a=sox[_0x4077('0x1f')](_0x55b2c2,_0x3bc533,{'sampleRate':0x1f40,'format':_0x4077('0x20'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x52391a['on'](_0x4077('0x13'),function(_0x22d5df){logger[_0x4077('0x13')](_0x4077('0x21'),_0x22d5df);_0x43a0f4(_0x22d5df);});_0x52391a['on']('end',function(){logger['info'](_0x4077('0x22'));_0x2f952e();});_0x52391a[_0x4077('0x23')]();});}function base64Decode(_0x2c7f94,_0x5111fb){var _0x1a765a=path[_0x4077('0x24')](__dirname,_0x4077('0x25'),rs['generate'](0x4)+_0x4077('0x26'));fs['writeFileSync'](_0x1a765a,_0x2c7f94,_0x4077('0x27'));return convertFile(_0x1a765a,_0x5111fb)['then'](function(){try{fs['unlink'](_0x1a765a);fs[_0x4077('0x28')](_0x5111fb,_0x4077('0x29'));}catch(_0x313fae){logger[_0x4077('0x13')](_0x313fae);}return _0x5111fb[_0x4077('0x2a')]('.')[0x0];});}function base64Encode(_0x311e51){var _0x4162ea=fs[_0x4077('0x2b')](_0x311e51);return new Buffer(_0x4162ea)[_0x4077('0x2c')]('base64');}exports[_0x4077('0x2d')]=function(_0x3b62b8,_0x3c9659,_0x2caa49,_0x191837,_0x48f0d4,_0x594207){var _0x5bf480,_0x59a374;var _0x516777='https://texttospeech.googleapis.com/v1/';var _0x4d63c5=_0x4077('0x2e')+_0x3b62b8;var _0x9e64d={};if(_0x3c9659==='ssml'){_0x9e64d[_0x4077('0x2f')]={'ssml':_0x2caa49};}else{_0x9e64d['input']={'text':_0x2caa49};};_0x9e64d[_0x4077('0x30')]={'languageCode':_0x191837,'ssmlGender':_0x48f0d4};_0x9e64d[_0x4077('0x31')]={'audioEncoding':_0x4077('0x32'),'sampleRateHertz':0x1f40};var _0x134f51={'url':_0x516777+_0x4077('0x33')+_0x4d63c5,'method':_0x4077('0x34'),'json':!![],'body':_0x9e64d};return rp(_0x134f51)[_0x4077('0x35')](function(_0x375d91){return new BPromise(function(_0x551466,_0x355d3c){_0x5bf480=path['resolve'](__dirname,_0x4077('0x25'),rs[_0x4077('0x36')](0x4)+'.mp3');var _0x2a3d69=Buffer[_0x4077('0x37')](_0x375d91['audioContent'],_0x4077('0x27'));return fs['writeFile'](_0x5bf480,_0x2a3d69,function(_0xebb101){_0x355d3c(_0xebb101);},function(_0x1dc5e0){fs[_0x4077('0x28')](_0x5bf480,_0x4077('0x29'));_0x551466(_0x1dc5e0);});});})[_0x4077('0x35')](function(_0x71865c){_0x59a374=path[_0x4077('0x24')](__dirname,_0x4077('0x25'),rs[_0x4077('0x36')](0x4)+_0x4077('0x26'));return convertFile(_0x5bf480,_0x59a374);})['then'](function(){try{fs[_0x4077('0x1b')](_0x5bf480);fs[_0x4077('0x28')](_0x59a374,_0x4077('0x29'));}catch(_0x3a8c52){logger['error'](_0x3a8c52);}logger[_0x4077('0x18')]('googleCloudTTS\x20path',_0x59a374[_0x4077('0x2a')]('.')[0x0]);return _0x59a374[_0x4077('0x2a')]('.')[0x0];});};exports[_0x4077('0x38')]=function(_0x5ae583,_0x21e6d6){var _0x52ace6=_0x4077('0x39');var _0x42e7eb,_0x52e2ea;var _0x13d8eb;var _0x3eb5c4={'encoding':'utf8','method':_0x4077('0x34'),'timeout':0x2710,'url':_0x52ace6,'headers':{'Content-Type':_0x4077('0x3a')},'body':_0x4077('0x3b')+encodeURIComponent(JSON[_0x4077('0x3c')]([[[_0x4077('0x3d'),JSON['stringify']([_0x5ae583,_0x21e6d6||'en',![],_0x4077('0x3e')]),null,_0x4077('0x3f')]]]))};return rp(_0x3eb5c4)[_0x4077('0x35')](function(_0x263856){try{_0x13d8eb=eval(_0x263856[_0x4077('0x40')](0x5))[0x0][0x2];}catch(_0x4c7eab){throw new Error(_0x4077('0x41')+_0x263856['data']);}if(!_0x13d8eb){if(_0x5ae583[_0x4077('0x42')]>0xc8){throw new Error(_0x4077('0x43'));}else{throw new Error('lang\x20\x22'+_0x21e6d6+_0x4077('0x44'));}}try{_0x13d8eb=eval(_0x13d8eb)[0x0];}catch(_0x1154b5){throw new Error('parse\x20response\x20failed:\x0a'+res[_0x4077('0x1e')]);}const _0x5f502a=_0x13d8eb;_0x42e7eb=path[_0x4077('0x24')](__dirname,_0x4077('0x25'),rs[_0x4077('0x36')](0x4)+_0x4077('0x45'));fs[_0x4077('0x46')](_0x42e7eb,_0x13d8eb,{'encoding':'base64'});_0x52e2ea=path[_0x4077('0x24')](__dirname,_0x4077('0x25'),rs[_0x4077('0x36')](0x4)+_0x4077('0x26'));return convertFile(_0x42e7eb,_0x52e2ea);})['then'](function(){try{fs[_0x4077('0x1b')](_0x42e7eb);fs[_0x4077('0x28')](_0x52e2ea,_0x4077('0x29'));}catch(_0x43bfec){logger[_0x4077('0x13')](_0x43bfec);}logger[_0x4077('0x18')]('goggleTTS\x20path',_0x52e2ea['split']('.')[0x0]);return _0x52e2ea[_0x4077('0x2a')]('.')[0x0];});};exports[_0x4077('0x47')]=function(_0x11e832,_0x84990b,_0x4c8684){return google[_0x4077('0x48')](_0x11e832,_0x84990b,_0x4c8684)[_0x4077('0x35')](function(_0xa7b68a){logger[_0x4077('0x18')](_0xa7b68a[_0x4077('0x49')]);return rp(_0xa7b68a);})[_0x4077('0x35')](function(_0x2ccca9){var _0x10959c='';var _0x5e9a71=0x0;try{fs[_0x4077('0x1b')](_0x11e832);}catch(_0x486958){logger[_0x4077('0x13')](_0x486958);}if(_0x2ccca9&&_0x2ccca9['results']){_0x10959c=_0x2ccca9['results'][_0x4077('0x4a')](function(_0x2f5818){return _0x2f5818&&_0x2f5818['alternatives'][0x0]&&_0x2f5818['alternatives'][0x0][_0x4077('0x4b')]?_0x2f5818[_0x4077('0x4c')][0x0][_0x4077('0x4b')]:'';})[_0x4077('0x4d')]('\x0a');_0x5e9a71=_0x2ccca9[_0x4077('0x4e')][_0x4077('0x4a')](function(_0x288cd9){return _0x288cd9&&_0x288cd9[_0x4077('0x4c')][0x0]&&_0x288cd9[_0x4077('0x4c')][0x0][_0x4077('0x4f')]?_0x288cd9['alternatives'][0x0]['confidence']:0x0;})[_0x4077('0x4d')]('\x0a');}logger['info'](_0x4077('0x50'),_0x10959c);logger[_0x4077('0x18')](_0x4077('0x51'),_0x5e9a71);return{'transcript':_0x10959c,'confidence':_0x5e9a71};})[_0x4077('0x52')](function(_0x245917){logger['error']('[%s]\x20%s:%s',_0x245917[_0x4077('0x12')],_0x245917['name'],_0x245917[_0x4077('0x53')]);});};exports[_0x4077('0x54')]=function(_0x4bc4d1,_0x25c28d,_0x584830,_0x5abd40){var _0x47caa6=apiai(_0x25c28d,{'language':_0x5abd40||'en'});return _0x47caa6[_0x4077('0x55')](_0x584830,{'sessionId':md5(_0x4bc4d1)})[_0x4077('0x35')](function(_0x4426e5){logger[_0x4077('0x18')](JSON[_0x4077('0x3c')](_0x4426e5));return{'source':_0x4426e5[_0x4077('0x56')][_0x4077('0x57')],'resolvedQuery':_0x4426e5[_0x4077('0x56')]['resolvedQuery'],'action':_0x4426e5[_0x4077('0x56')]['action'],'actionIncomplete':_0x4426e5['result'][_0x4077('0x58')],'speech':_0x4426e5['result'][_0x4077('0x59')][_0x4077('0x5a')],'score':_0x4426e5[_0x4077('0x56')][_0x4077('0x5b')],'statusCode':_0x4426e5['status']['code'],'endConversation':_0x4426e5[_0x4077('0x56')][_0x4077('0x5c')][_0x4077('0x5d')]||![],'isFallbackIntent':_0x4426e5['result'][_0x4077('0x5c')][_0x4077('0x5e')]};});};exports[_0x4077('0x5f')]=function(_0xd646a4,_0x37d69f,_0xf63f40,_0x1309a7,_0x2e0e5e,_0xf98318){var _0x45fdb2=_0x1309a7[_0x4077('0x60')](/\\n/g,'\x0a');var _0x78a355={'credentials':{'private_key':_0x45fdb2,'client_email':_0xf63f40}};var _0x2586eb=new dialogflow[(_0x4077('0x61'))](_0x78a355);var _0x215654=_0x2586eb[_0x4077('0x62')](_0x37d69f,md5(_0xd646a4));var _0xe39140={'session':_0x215654,'queryInput':{'text':{'text':_0x2e0e5e,'languageCode':_0xf98318}}};return _0x2586eb['detectIntent'](_0xe39140)['then'](function(_0x77e4d4){if(_0x77e4d4&&_0x77e4d4[_0x4077('0x42')]){logger[_0x4077('0x18')](_0x4077('0x63'),JSON[_0x4077('0x3c')](_0x77e4d4));var _0x135754=_0x77e4d4[0x0];if(_0x135754){var _0x5c01b0={'action':_0x135754[_0x4077('0x64')]['action'],'allRequiredParamsPresent':_0x135754['queryResult'][_0x4077('0x65')],'endConversation':_0x135754[_0x4077('0x64')][_0x4077('0x66')]&&_0x135754[_0x4077('0x64')][_0x4077('0x66')][_0x4077('0x67')]?_0x135754[_0x4077('0x64')][_0x4077('0x66')]['fields'][_0x4077('0x68')][_0x4077('0x69')]:![],'fulfillmentText':_0x135754[_0x4077('0x64')][_0x4077('0x6a')],'intentName':_0x135754['queryResult'][_0x4077('0x6b')][_0x4077('0x6c')],'intentDisplayName':_0x135754['queryResult'][_0x4077('0x6b')]['displayName'],'isFallbackIntent':_0x135754[_0x4077('0x64')][_0x4077('0x6b')][_0x4077('0x6d')],'languageCode':_0x135754[_0x4077('0x64')][_0x4077('0x6e')],'queryText':_0x135754['queryResult']['queryText'],'responseId':_0x135754['responseId'],'score':_0x135754[_0x4077('0x64')][_0x4077('0x6f')],'speech':_0x135754[_0x4077('0x64')][_0x4077('0x6a')],'providerResponse':JSON['stringify'](_0x77e4d4)};return _0x5c01b0;}}});};exports[_0x4077('0x70')]=function(_0x1ee3d8,_0x20948c,_0xb654cf,_0x5adb6f){return tilde[_0x4077('0x48')](_0x1ee3d8,_0x20948c,_0xb654cf,_0x5adb6f)['then'](function(_0x5d492a){try{fs['unlink'](_0x1ee3d8);}catch(_0x5b342c){logger['error'](_0x5b342c);}logger[_0x4077('0x18')]('Tilde\x20ASR\x20transcription',_0x5d492a[_0x4077('0x4b')]);logger[_0x4077('0x18')](_0x4077('0x71'),_0x5d492a['confidence']);return _0x5d492a;});};exports[_0x4077('0x72')]=function(_0x4d8fb6,_0x50d305,_0x2f1d98,_0x2d17fc,_0x37ead8,_0x2e3cdf){var _0x5ed93c=path[_0x4077('0x24')](__dirname,_0x4077('0x25'),rs['generate'](0x4)+_0x4077('0x45'));var _0x590376;return aws[_0x4077('0x73')](_0x4d8fb6,_0x50d305,_0x2f1d98,_0x2d17fc,_0x37ead8,_0x2e3cdf,_0x5ed93c)[_0x4077('0x35')](function(){_0x590376=path[_0x4077('0x24')](__dirname,_0x4077('0x25'),rs['generate'](0x4)+_0x4077('0x26'));return convertFile(_0x5ed93c,_0x590376);})[_0x4077('0x35')](function(){try{fs[_0x4077('0x1b')](_0x5ed93c);fs[_0x4077('0x28')](_0x590376,_0x4077('0x29'));}catch(_0x356700){logger[_0x4077('0x13')](_0x356700);}return _0x590376[_0x4077('0x2a')]('.')[0x0];});};exports['awsLex']=function(_0x9fd9d5,_0x5f2e62,_0x3949d4,_0x3f78c7,_0x7a1e5e,_0x420278){return aws[_0x4077('0x74')](_0x9fd9d5,_0x5f2e62,_0x3949d4,_0x3f78c7,_0x7a1e5e,_0x420278)[_0x4077('0x35')](function(_0x4b1ea1){logger['info'](JSON[_0x4077('0x3c')](_0x4b1ea1));return _0x4b1ea1;});};exports[_0x4077('0x75')]=function(_0x36ce38,_0x29397b,_0x84a2d9,_0x40c5d0){var _0x4c04dd=util[_0x4077('0x76')](_0x4077('0x77'),ISPEECH_API,_0x36ce38,encodeURIComponent(_0x29397b),_0x84a2d9,_0x40c5d0);var _0x33803e=path['resolve'](__dirname,_0x4077('0x25'),rs[_0x4077('0x36')](0x4)+_0x4077('0x45'));var _0x25e8a2;return downloadFile(_0x4c04dd,_0x33803e)[_0x4077('0x35')](function(){_0x25e8a2=path['resolve'](__dirname,_0x4077('0x25'),rs[_0x4077('0x36')](0x4)+_0x4077('0x26'));return convertFile(_0x33803e,_0x25e8a2);})['then'](function(){try{fs[_0x4077('0x1b')](_0x33803e);fs[_0x4077('0x28')](_0x25e8a2,_0x4077('0x29'));}catch(_0x4691af){logger[_0x4077('0x13')](_0x4691af);}return _0x25e8a2['split']('.')[0x0];});};exports[_0x4077('0x78')]=function(_0x548b7f,_0x4860a3,_0x15acc2,_0x84785b){var _0x4eef17=util[_0x4077('0x76')](_0x4077('0x79'),ISPEECH_API,_0x4860a3,_0x15acc2,base64Encode(_0x548b7f),_0x84785b?util[_0x4077('0x76')](_0x4077('0x7a'),encodeURIComponent(_0x84785b)):_0x4077('0x7b'));return uploadFile(_0x4eef17)['then'](function(_0x5c8f08){return querystring[_0x4077('0x8')](_0x5c8f08);});};exports['sestekNDA']=function(_0x25e6bb,_0x4bfc31){return sestek[_0x4077('0x7c')](_0x25e6bb,_0x4bfc31)['then'](function(_0x3b2584){logger[_0x4077('0x18')](JSON[_0x4077('0x3c')](_0x3b2584));var _0x42b8f0={'speech':_0x3b2584['text'],'action':_0x3b2584[_0x4077('0x7d')]?_0x3b2584[_0x4077('0x7d')][_0x4077('0x7e')]:undefined,'actiondata':_0x3b2584[_0x4077('0x7d')]?_0x3b2584[_0x4077('0x7d')][_0x4077('0x7f')]:undefined};if(_0x3b2584['channelData']&&_0x3b2584[_0x4077('0x7d')][_0x4077('0x80')]){return base64Decode(_0x3b2584['channelData'][_0x4077('0x80')][_0x4077('0x81')],path[_0x4077('0x24')](__dirname,_0x4077('0x25'),rs[_0x4077('0x36')](0x4)+'.wav'))['then'](function(_0x1ffa8d){_0x42b8f0[_0x4077('0x82')]=_0x1ffa8d;return _0x42b8f0;});}return _0x42b8f0;});};exports[_0x4077('0x83')]=function(){return __dirname;};
\ No newline at end of file
index 77ae3a3..2302adf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b16=['exports','./nda'];(function(_0x223bdb,_0x5882e6){var _0xef8e68=function(_0x55ab83){while(--_0x55ab83){_0x223bdb['push'](_0x223bdb['shift']());}};_0xef8e68(++_0x5882e6);}(_0x9b16,0x1bf));var _0x69b1=function(_0x13192e,_0x458769){_0x13192e=_0x13192e-0x0;var _0x2afeb5=_0x9b16[_0x13192e];return _0x2afeb5;};var nda=require(_0x69b1('0x0'));module[_0x69b1('0x1')]={'nda':nda};
\ No newline at end of file
+var _0x560b=['./nda','exports'];(function(_0x47eaf1,_0x585ee7){var _0x144b6f=function(_0x6d0616){while(--_0x6d0616){_0x47eaf1['push'](_0x47eaf1['shift']());}};_0x144b6f(++_0x585ee7);}(_0x560b,0xda));var _0xb560=function(_0x491926,_0x3d53a9){_0x491926=_0x491926-0x0;var _0x834287=_0x560b[_0x491926];return _0x834287;};var nda=require(_0xb560('0x0'));module[_0xb560('0x1')]={'nda':nda};
\ No newline at end of file
index f1716d6..cfe1b15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x292e=['username','password','then','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','callerid','calleridname','extension','text','Bearer\x20','access_token','project','body','ProjectName','ndagenerate_audio','channelData','AudioOutputSettings','audio/wav','custom_action_data','CustomActionData','info','request-promise','url','../../../../../config/logger','agi','POST','resolve','/token'];(function(_0x1bfa6a,_0x3c055b){var _0x128f55=function(_0x475a5f){while(--_0x475a5f){_0x1bfa6a['push'](_0x1bfa6a['shift']());}};_0x128f55(++_0x3c055b);}(_0x292e,0xcb));var _0xe292=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x292e[_0x432682];return _0x463d05;};'use strict';var rp=require(_0xe292('0x0'));var url=require(_0xe292('0x1'));var logger=require(_0xe292('0x2'))(_0xe292('0x3'));module['exports']=function(_0x5d19a5,_0x2652b3){var _0x343aee={'method':_0xe292('0x4'),'uri':url[_0xe292('0x5')](_0x2652b3['ndauth_url'],_0xe292('0x6')),'form':{'grant_type':'password','username':_0x2652b3[_0xe292('0x7')],'password':_0x2652b3[_0xe292('0x8')]},'json':!![]};return rp(_0x343aee)[_0xe292('0x9')](function(_0x11fd14){var _0x26b4de={'method':_0xe292('0x4'),'uri':url['resolve'](_0x2652b3['ndassistant_url'],_0xe292('0xa')),'body':{'type':_0x2652b3[_0xe292('0xb')]||_0xe292('0xc'),'channelId':_0xe292('0xd'),'conversation':{'id':_0x5d19a5['uniqueid']},'from':{'id':_0x5d19a5[_0xe292('0xe')],'name':_0x5d19a5[_0xe292('0xf')]},'recipient':{'id':_0x5d19a5['dnid'],'name':_0x5d19a5[_0xe292('0x10')]},'text':_0x2652b3[_0xe292('0x11')],'channelData':{}},'headers':{'Authorization':_0xe292('0x12')+_0x11fd14[_0xe292('0x13')]},'json':!![]};if(_0x2652b3[_0xe292('0x14')]){_0x26b4de[_0xe292('0x15')]['channelData'][_0xe292('0x16')]=_0x2652b3[_0xe292('0x14')];}if(_0x2652b3[_0xe292('0x17')]=='1'){_0x26b4de[_0xe292('0x15')][_0xe292('0x18')][_0xe292('0x19')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0xe292('0x1a')};}if(_0x2652b3['custom_action']){_0x26b4de[_0xe292('0x15')][_0xe292('0x18')]['CustomAction']=_0x2652b3['custom_action'];if(_0x2652b3[_0xe292('0x1b')]){_0x26b4de[_0xe292('0x15')][_0xe292('0x18')][_0xe292('0x1c')]=_0x2652b3['custom_action_data'];}}logger[_0xe292('0x1d')](JSON['stringify'](_0x26b4de));return rp(_0x26b4de);});};
\ No newline at end of file
+var _0x8130=['/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','callerid','dnid','text','Bearer\x20','access_token','project','ProjectName','body','audio/wav','custom_action','channelData','custom_action_data','CustomActionData','info','stringify','request-promise','url','agi','exports','POST','ndauth_url','username','password','then','resolve'];(function(_0x550c9b,_0x524821){var _0x23e092=function(_0x554b28){while(--_0x554b28){_0x550c9b['push'](_0x550c9b['shift']());}};_0x23e092(++_0x524821);}(_0x8130,0x146));var _0x0813=function(_0x4d09e3,_0x226da0){_0x4d09e3=_0x4d09e3-0x0;var _0xcb4941=_0x8130[_0x4d09e3];return _0xcb4941;};'use strict';var rp=require(_0x0813('0x0'));var url=require(_0x0813('0x1'));var logger=require('../../../../../config/logger')(_0x0813('0x2'));module[_0x0813('0x3')]=function(_0xd86b46,_0x20cc2e){var _0x1421d7={'method':_0x0813('0x4'),'uri':url['resolve'](_0x20cc2e[_0x0813('0x5')],'/token'),'form':{'grant_type':'password','username':_0x20cc2e[_0x0813('0x6')],'password':_0x20cc2e[_0x0813('0x7')]},'json':!![]};return rp(_0x1421d7)[_0x0813('0x8')](function(_0x19a508){var _0x2ab8f0={'method':_0x0813('0x4'),'uri':url[_0x0813('0x9')](_0x20cc2e['ndassistant_url'],_0x0813('0xa')),'body':{'type':_0x20cc2e[_0x0813('0xb')]||_0x0813('0xc'),'channelId':'Nda','conversation':{'id':_0xd86b46['uniqueid']},'from':{'id':_0xd86b46[_0x0813('0xd')],'name':_0xd86b46['calleridname']},'recipient':{'id':_0xd86b46[_0x0813('0xe')],'name':_0xd86b46['extension']},'text':_0x20cc2e[_0x0813('0xf')],'channelData':{}},'headers':{'Authorization':_0x0813('0x10')+_0x19a508[_0x0813('0x11')]},'json':!![]};if(_0x20cc2e[_0x0813('0x12')]){_0x2ab8f0['body']['channelData'][_0x0813('0x13')]=_0x20cc2e[_0x0813('0x12')];}if(_0x20cc2e['ndagenerate_audio']=='1'){_0x2ab8f0[_0x0813('0x14')]['channelData']['AudioOutputSettings']={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x0813('0x15')};}if(_0x20cc2e[_0x0813('0x16')]){_0x2ab8f0['body'][_0x0813('0x17')]['CustomAction']=_0x20cc2e[_0x0813('0x16')];if(_0x20cc2e[_0x0813('0x18')]){_0x2ab8f0[_0x0813('0x14')][_0x0813('0x17')][_0x0813('0x19')]=_0x20cc2e[_0x0813('0x18')];}}logger[_0x0813('0x1a')](JSON[_0x0813('0x1b')](_0x2ab8f0));return rp(_0x2ab8f0);});};
\ No newline at end of file
index 114fabf..8ce969a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3f7=['exports'];(function(_0x1331d8,_0x234495){var _0x53ae39=function(_0x10d7ef){while(--_0x10d7ef){_0x1331d8['push'](_0x1331d8['shift']());}};_0x53ae39(++_0x234495);}(_0xe3f7,0x1e1));var _0x7e3f=function(_0x302d90,_0x2f36a7){_0x302d90=_0x302d90-0x0;var _0x894937=_0xe3f7[_0x302d90];return _0x894937;};'use strict';var asr=require('./lib/api');module[_0x7e3f('0x0')]=function(_0xe27a07,_0x217c77,_0x26e237,_0x1386b3){return asr(_0xe27a07,_0x217c77,_0x26e237,_0x1386b3);};
\ No newline at end of file
+var _0xfcfc=['exports','./lib/api'];(function(_0x468c57,_0x2607bf){var _0x5ce052=function(_0x17c922){while(--_0x17c922){_0x468c57['push'](_0x468c57['shift']());}};_0x5ce052(++_0x2607bf);}(_0xfcfc,0x9b));var _0xcfcf=function(_0x169f81,_0x3555b8){_0x169f81=_0x169f81-0x0;var _0x4d108b=_0xfcfc[_0x169f81];return _0x4d108b;};'use strict';var asr=require(_0xcfcf('0x0'));module[_0xcfcf('0x1')]=function(_0x5021fd,_0x3248c3,_0x4bd6a7,_0x30942e){return asr(_0x5021fd,_0x3248c3,_0x4bd6a7,_0x30942e);};
\ No newline at end of file
index b0eced3..c67286d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfa6=['transcript','likelihood','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','open','message','close','bluebird','lodash','moment','crypto','../../../../../../config/logger','agi','exports','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','update','digest','unix','send','stringify','createReadStream','data','EOS','error','Tilde\x20ASR\x20send\x20error','terminate','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses'];(function(_0x4597a8,_0xcaf1e0){var _0x2a88c8=function(_0x1e1bcb){while(--_0x1e1bcb){_0x4597a8['push'](_0x4597a8['shift']());}};_0x2a88c8(++_0xcaf1e0);}(_0xcfa6,0xb6));var _0x6cfa=function(_0x54d59a,_0x5b3c2c){_0x54d59a=_0x54d59a-0x0;var _0x5b52b6=_0xcfa6[_0x54d59a];return _0x5b52b6;};'use strict';var BPromise=require(_0x6cfa('0x0'));var _=require(_0x6cfa('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x6cfa('0x2'));var crypto=require(_0x6cfa('0x3'));var logger=require(_0x6cfa('0x4'))(_0x6cfa('0x5'));module[_0x6cfa('0x6')]=function(_0x254317,_0x44d752,_0x2c4f9d,_0x7ac98a){return new BPromise(function(_0x52e963,_0x123135){logger[_0x6cfa('0x7')](_0x6cfa('0x8'),_0x7ac98a||_0x6cfa('0x9'));var _0x4d4da5=new WebSocket(_0x7ac98a||_0x6cfa('0x9'),{'perMessageDeflate':![]});var _0x7912c1='';var _0x5108cb='0';var _0x229aa5='1';var _0x4cf848=_0x6cfa('0xa');function _0x477989(_0x36ffed){var _0x5ea689=crypto[_0x6cfa('0xb')]('sha1');_0x5ea689[_0x6cfa('0xc')](_0x36ffed);return _0x5ea689[_0x6cfa('0xd')]('hex');}function _0x2cf8bb(){try{logger[_0x6cfa('0x7')]('Open\x20Tilde\x20ASR\x20socket');var _0x2524d2=moment()[_0x6cfa('0xe')]();var _0x3a158a=_0x477989(_0x2524d2+_0x44d752+_0x2c4f9d);_0x4d4da5[_0x6cfa('0xf')](JSON[_0x6cfa('0x10')]({'appID':_0x44d752,'timestamp':_0x2524d2,'appKey':_0x3a158a}));var _0x217cc0=fs[_0x6cfa('0x11')](_0x254317);_0x217cc0['on'](_0x6cfa('0x12'),function(_0x345c3b){_0x4d4da5['send'](_0x345c3b);});_0x217cc0['on']('close',function(){_0x4d4da5[_0x6cfa('0xf')](_0x6cfa('0x13'));});}catch(_0x422c08){logger[_0x6cfa('0x14')](_0x6cfa('0x15'),JSON[_0x6cfa('0x10')](_0x422c08));_0x4d4da5[_0x6cfa('0x16')]();}}function _0x31aabe(_0x51bdc0){try{if(_0x51bdc0){var _0x572e54=JSON['parse'](_0x51bdc0);switch(_0x572e54[_0x6cfa('0x17')]){case 0x0:if(_0x572e54[_0x6cfa('0x18')]){if(_0x572e54[_0x6cfa('0x18')][_0x6cfa('0x19')]){logger['info'](_0x6cfa('0x1a'),JSON[_0x6cfa('0x10')](_0x572e54[_0x6cfa('0x18')][_0x6cfa('0x1b')]));_0x7912c1=_0x572e54[_0x6cfa('0x18')][_0x6cfa('0x1b')][0x0][_0x6cfa('0x1c')];_0x5108cb=_0x572e54[_0x6cfa('0x18')][_0x6cfa('0x1b')][0x0][_0x6cfa('0x1d')];_0x229aa5='0';_0x4cf848='Success.';_0x4d4da5[_0x6cfa('0x16')]();}}break;case 0x1:logger[_0x6cfa('0x7')]('No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech');_0x229aa5='1';_0x4cf848=_0x6cfa('0xa');break;case 0x2:logger[_0x6cfa('0x7')](_0x6cfa('0x1e'));_0x229aa5='2';_0x4cf848='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger['info'](_0x6cfa('0x1f'));_0x229aa5='9';_0x4cf848=_0x6cfa('0x1f');break;case 0xa:logger[_0x6cfa('0x7')](_0x6cfa('0x20'));_0x229aa5='10';_0x4cf848=_0x6cfa('0x20');break;case 0xb:logger[_0x6cfa('0x7')](_0x6cfa('0x21'));_0x229aa5='11';_0x4cf848='All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.';}}}catch(_0x2451ea){logger['error'](_0x6cfa('0x22'),JSON['stringify'](_0x2451ea));_0x4d4da5[_0x6cfa('0x16')]();}}function _0x4d8b0a(){logger[_0x6cfa('0x7')](_0x6cfa('0x23'));_0x52e963({'transcript':_0x7912c1,'confidence':_0x5108cb,'status':_0x229aa5,'status_message':_0x4cf848});}function _0x2975a2(_0x50ac33){logger[_0x6cfa('0x14')](_0x6cfa('0x24'));if(!_[_0x6cfa('0x25')](_0x50ac33)){logger[_0x6cfa('0x14')](_[_0x6cfa('0x26')](_0x50ac33)?JSON[_0x6cfa('0x10')](_0x50ac33):_0x50ac33);}}_0x4d4da5['on'](_0x6cfa('0x27'),_0x2cf8bb);_0x4d4da5['on'](_0x6cfa('0x28'),_0x31aabe);_0x4d4da5['on'](_0x6cfa('0x29'),_0x4d8b0a);_0x4d4da5['on']('error',_0x2975a2);});};
\ No newline at end of file
+var _0x2c3f=['terminate','parse','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','Success.','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isObject','open','close','bluebird','lodash','moment','crypto','../../../../../../config/logger','agi','exports','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','createHash','sha1','update','digest','hex','Open\x20Tilde\x20ASR\x20socket','unix','stringify','createReadStream','data','send','EOS','error','Tilde\x20ASR\x20send\x20error'];(function(_0xfa8c84,_0x52e3da){var _0x3df27f=function(_0x5dc5c4){while(--_0x5dc5c4){_0xfa8c84['push'](_0xfa8c84['shift']());}};_0x3df27f(++_0x52e3da);}(_0x2c3f,0x1b6));var _0xf2c3=function(_0x3b77de,_0x4fa12d){_0x3b77de=_0x3b77de-0x0;var _0x42d4e1=_0x2c3f[_0x3b77de];return _0x42d4e1;};'use strict';var BPromise=require(_0xf2c3('0x0'));var _=require(_0xf2c3('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0xf2c3('0x2'));var crypto=require(_0xf2c3('0x3'));var logger=require(_0xf2c3('0x4'))(_0xf2c3('0x5'));module[_0xf2c3('0x6')]=function(_0x52a1e3,_0x1549d7,_0x3c599e,_0x253e08){return new BPromise(function(_0x5aee2f,_0x56857e){logger[_0xf2c3('0x7')](_0xf2c3('0x8'),_0x253e08||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE');var _0x34c31f=new WebSocket(_0x253e08||_0xf2c3('0x9'),{'perMessageDeflate':![]});var _0x1ca5c5='';var _0x298573='0';var _0x362880='1';var _0x31f05a='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';function _0x4fb47c(_0x43396d){var _0x4e8734=crypto[_0xf2c3('0xa')](_0xf2c3('0xb'));_0x4e8734[_0xf2c3('0xc')](_0x43396d);return _0x4e8734[_0xf2c3('0xd')](_0xf2c3('0xe'));}function _0xf35632(){try{logger['info'](_0xf2c3('0xf'));var _0x2eea3d=moment()[_0xf2c3('0x10')]();var _0xf15f34=_0x4fb47c(_0x2eea3d+_0x1549d7+_0x3c599e);_0x34c31f['send'](JSON[_0xf2c3('0x11')]({'appID':_0x1549d7,'timestamp':_0x2eea3d,'appKey':_0xf15f34}));var _0x2fae77=fs[_0xf2c3('0x12')](_0x52a1e3);_0x2fae77['on'](_0xf2c3('0x13'),function(_0x529a45){_0x34c31f['send'](_0x529a45);});_0x2fae77['on']('close',function(){_0x34c31f[_0xf2c3('0x14')](_0xf2c3('0x15'));});}catch(_0x5f0994){logger[_0xf2c3('0x16')](_0xf2c3('0x17'),JSON[_0xf2c3('0x11')](_0x5f0994));_0x34c31f[_0xf2c3('0x18')]();}}function _0x56345d(_0x93ae36){try{if(_0x93ae36){var _0x10c09e=JSON[_0xf2c3('0x19')](_0x93ae36);switch(_0x10c09e['status']){case 0x0:if(_0x10c09e[_0xf2c3('0x1a')]){if(_0x10c09e[_0xf2c3('0x1a')][_0xf2c3('0x1b')]){logger[_0xf2c3('0x7')](_0xf2c3('0x1c'),JSON[_0xf2c3('0x11')](_0x10c09e[_0xf2c3('0x1a')]['hypotheses']));_0x1ca5c5=_0x10c09e['result'][_0xf2c3('0x1d')][0x0][_0xf2c3('0x1e')];_0x298573=_0x10c09e[_0xf2c3('0x1a')][_0xf2c3('0x1d')][0x0]['likelihood'];_0x362880='0';_0x31f05a=_0xf2c3('0x1f');_0x34c31f[_0xf2c3('0x18')]();}}break;case 0x1:logger[_0xf2c3('0x7')](_0xf2c3('0x20'));_0x362880='1';_0x31f05a=_0xf2c3('0x20');break;case 0x2:logger['info'](_0xf2c3('0x21'));_0x362880='2';_0x31f05a=_0xf2c3('0x21');break;case 0x9:logger[_0xf2c3('0x7')](_0xf2c3('0x22'));_0x362880='9';_0x31f05a=_0xf2c3('0x22');break;case 0xa:logger[_0xf2c3('0x7')]('Authentication\x20failed.');_0x362880='10';_0x31f05a=_0xf2c3('0x23');break;case 0xb:logger[_0xf2c3('0x7')](_0xf2c3('0x24'));_0x362880='11';_0x31f05a='All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.';}}}catch(_0x405a3f){logger[_0xf2c3('0x16')]('Tilde\x20ASR\x20parse\x20error',JSON[_0xf2c3('0x11')](_0x405a3f));_0x34c31f[_0xf2c3('0x18')]();}}function _0x5dfae2(){logger[_0xf2c3('0x7')](_0xf2c3('0x25'));_0x5aee2f({'transcript':_0x1ca5c5,'confidence':_0x298573,'status':_0x362880,'status_message':_0x31f05a});}function _0x5e1f09(_0x46f406){logger[_0xf2c3('0x16')](_0xf2c3('0x26'));if(!_['isNil'](_0x46f406)){logger['error'](_[_0xf2c3('0x27')](_0x46f406)?JSON[_0xf2c3('0x11')](_0x46f406):_0x46f406);}}_0x34c31f['on'](_0xf2c3('0x28'),_0xf35632);_0x34c31f['on']('message',_0x56345d);_0x34c31f['on'](_0xf2c3('0x29'),_0x5dfae2);_0x34c31f['on'](_0xf2c3('0x16'),_0x5e1f09);});};
\ No newline at end of file
index ed4139f..b790709 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe624=['exports','./asr'];(function(_0x5c6d51,_0x538447){var _0x3960c8=function(_0x34ebe5){while(--_0x34ebe5){_0x5c6d51['push'](_0x5c6d51['shift']());}};_0x3960c8(++_0x538447);}(_0xe624,0xfd));var _0x4e62=function(_0x508685,_0x9f94af){_0x508685=_0x508685-0x0;var _0x976a76=_0xe624[_0x508685];return _0x976a76;};var asr=require(_0x4e62('0x0'));module[_0x4e62('0x1')]={'asr':asr};
\ No newline at end of file
+var _0xffb9=['exports'];(function(_0x13e741,_0x5d3c24){var _0x3f8bb3=function(_0x4440a0){while(--_0x4440a0){_0x13e741['push'](_0x13e741['shift']());}};_0x3f8bb3(++_0x5d3c24);}(_0xffb9,0xc2));var _0x9ffb=function(_0x586ae1,_0x2e9ed9){_0x586ae1=_0x586ae1-0x0;var _0x230db6=_0xffb9[_0x586ae1];return _0x230db6;};var asr=require('./asr');module[_0x9ffb('0x0')]={'asr':asr};
\ No newline at end of file
index bc102cb..e352923 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x2393c0,_0x5d5d61){var _0x188aa9=function(_0x330de9){while(--_0x330de9){_0x2393c0['push'](_0x2393c0['shift']());}};_0x188aa9(++_0x5d5d61);}(_0xe706,0xa3));var _0x6e70=function(_0x23a79e,_0x235f89){_0x23a79e=_0x23a79e-0x0;var _0x3dab57=_0xe706[_0x23a79e];return _0x3dab57;};'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
+var _0x34e8=['E_AGI_ARGUMENT_PORT','createServer','listen','listening','connection','getConnections','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','close','nextTick','inherits','exports','util','net','events','EventEmitter','./channel','call','emit','error'];(function(_0x585ab9,_0x599828){var _0x544b7d=function(_0x46b062){while(--_0x46b062){_0x585ab9['push'](_0x585ab9['shift']());}};_0x544b7d(++_0x599828);}(_0x34e8,0x12c));var _0x834e=function(_0x312fe9,_0x3eb507){_0x312fe9=_0x312fe9-0x0;var _0x387c8e=_0x34e8[_0x312fe9];return _0x387c8e;};'use strict';var util=require(_0x834e('0x0'));var net=require(_0x834e('0x1'));var EventEmitter=require(_0x834e('0x2'))[_0x834e('0x3')];var AGIError=require('./error');var AGIChannel=require(_0x834e('0x4'));var AGIServer=function(_0x21e2e0,_0x472111,_0x31bf20){var _0x289ef2=this;var _0x19a3e0=null;var _0x398bee=0x0;if(!_0x21e2e0)_0x21e2e0=0x11dd;if(!_0x472111)_0x472111='127.0.0.1';EventEmitter[_0x834e('0x5')](_0x289ef2);function _0x52056d(){if(!_0x21e2e0){_0x289ef2[_0x834e('0x6')](_0x834e('0x7'),new AGIError(_0x834e('0x8')));return![];}_0x19a3e0=net[_0x834e('0x9')]();_0x19a3e0[_0x834e('0xa')](_0x21e2e0,_0x472111);_0x19a3e0['on'](_0x834e('0xb'),function(){_0x289ef2[_0x834e('0x6')](_0x834e('0xb'));});_0x19a3e0['on'](_0x834e('0xc'),function(_0x186b3b){_0x19a3e0[_0x834e('0xd')](function(_0x36e124,_0x14038b){if(_0x36e124){_0x289ef2[_0x834e('0x6')](_0x834e('0x7'),new AGIError(_0x834e('0xe'),_0x36e124));}else if(_0x31bf20&&_0x31bf20<0x0){_0x289ef2[_0x834e('0x6')]('error',new AGIError(_0x834e('0xf')));_0x186b3b[_0x834e('0x10')]();}else if(_0x31bf20&&_0x31bf20>0x0&&_0x31bf20<_0x14038b){_0x398bee+=0x1;_0x289ef2['emit'](_0x834e('0x7'),new AGIError(_0x834e('0x11'),_0x398bee));_0x186b3b[_0x834e('0x10')]();}else{var _0x21cc0a=new AGIChannel(_0x186b3b);_0x21cc0a['on']('ready',function(){_0x289ef2[_0x834e('0x6')](_0x834e('0xc'),_0x21cc0a);});}});});_0x19a3e0['on']('error',function(_0x316205){_0x289ef2['emit'](_0x834e('0x7'),new AGIError(_0x834e('0xe'),_0x316205['code']));});_0x19a3e0['on'](_0x834e('0x12'),function(){_0x289ef2[_0x834e('0x6')](_0x834e('0x12'),new AGIError('E_AGI_SERVER_CLOSE'));});}process[_0x834e('0x13')](function(){_0x52056d();});};util[_0x834e('0x14')](AGIServer,EventEmitter);module[_0x834e('0x15')]=function(_0xb993a1,_0x237947,_0x254677){return new AGIServer(_0xb993a1,_0x237947,_0x254677);};
\ No newline at end of file
index 0348c4f..1d86c11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93e7=['no\x20valid\x20credentials\x20configured','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','beep','NOBEEP','intKey','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','no\x20appsecret\x20configured','recordFile','tilde\x20%s\x20file\x20created','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','extension','priority','gotoif','condition','true','false','EVAL\x20CONDITION\x20%s\x20%s','interval_id','no\x20interval\x20configured','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','Trying\x20ispeech\x20TTS\x20%s','streamFile','ispeech\x20TTS\x20is\x20unreachable','findBy','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','no\x20find\x20by\x20configured','math','no\x20operation\x20configured','operation','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','file_id','Enter\x20in\x20NOOP\x20(%s)\x20block','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','AGENT\x20%s\x20FOUND\x20BY','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','no\x20queue\x20selected','queue_id','indexOf','XMCS-QUEUE','toLowerCase','macro','gosub','position','QUEUE','record','recordingFormat','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','statusMessage','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','no\x20mail\x20account\x20configured','account_id','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','Smtp','user','bcc','subject','template_id','Trying\x20SendMail\x20with\x20account\x20%s','smtpOptions','Mail\x20message\x20added\x20to\x20outgoing\x20process','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','sms_text','set','no\x20variable\x20selected','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','Answer','Skipped\x20Answer','project_id','no\x20subproject\x20selected','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','host','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','shellCommand','command','sh\x20command:\x20%s\x20result\x20no\x20stored','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','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','FIND\x20AGENT\x20%s\x20BY\x20%s','VOICEMAIL','mailbox','vswitch','exports','util','shelljs','odbc','moment','mustache','request-promise','../../config/logger','../../config/environment','./scripts','rawHeaders','menu','getdigits','getsecretdigits','channel','rpc','mailRpc','then','catch','prototype','getVoiceQueue','getVoiceQueueById','name','getSquareProject','getSquareProjectById','getSquareOdbc','getSquareOdbcById','dsn','getUser','getUserById','getTrunk','getSound','getSoundById','save_name','getMailAccount','sendMailMessage','getIntervals','getIntervalById','IntervalId','map','Intervals','interval','getSoundPath','%s/sounds/converted/%s','getQueryOdbc','error','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','query','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','close','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','label','agicommand','arg_1','callerid','createSquareRecording','uniqueid','calleridname','context','accountcode','dnid','file','createSquareMessage','createCmContact','isEmpty','random','lastName','phone','callback','Callback\x20scheduled\x20at\x20','scheduledAt','getPause','getPauseById','agentPause','agent','agentUnpause','agentLogout','isNil','agentLogin','internal','format','%s/%s@from-sip/n','LOCAL','exec','trim','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','MALE','audioEncoding','googleTTS','google_tts_language','method','number','timeout','includes','toUpperCase','body','parse','rawBody','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','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','speed','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','aws_polly_voice','Amy','aws_text_type','awsLex','aws_lex_region','aws_bot_name','googleASR','tildeASR','appsecret','clear','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','isPlainObject','recursiveNodeIndex','isArray','length','saveRestApiResult','%s.%s','split','replaceAll','getVariable','toString','getAndSetVariable','result','extra','setVariable','maxRetry','retry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','noop','no\x20text\x20configured','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','MRCP_RECOG_INSTANCE','Enter\x20in\x20AGI\x20(%s)\x20block','agi','args','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','Enter\x20in\x20CALLBACK\x20(%s)\x20block','list_id','no\x20list\x20selected','delay','add','callback_priority','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','Executed\x20command\x20%s\x20%s','application','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','RECOG_INSTANCE()','SESTEK_ASR_INSTANCE','database','odbc_id','no\x20database\x20selected','no\x20odbc\x20database\x20found','replace','query:\x20%s','variable_id','forEach','%s[%s][%s]','variable\x20%s\x20set','dial','debug','sip_id','no\x20user\x20selected','no\x20user\x20found','DIAL','SIP/%s','opts','url','Executed\x20command\x20%s','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','out','Dialogflow\x20Result\x20%s','speech','Dialogflow\x20is\x20unreachable','dialogflowV2','no\x20project_id\x20configured','no\x20client_email\x20configured','private_key','no\x20private_key\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','password','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','sesteknda','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','unlink','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20found','no\x20trunk\x20selected','SIP/%s/%s','Enter\x20in\x20FINALLY\x20(%s)\x20block','no\x20file\x20audio\x20selected','no\x20file\x20audio\x20found','no\x20variable\x20selected\x20for\x20the\x20result','getData','response','maxdigit','mindigit','no\x20variable\x20found','hiddendigitsnum','hiddendigitspos','first','generate','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block'];(function(_0x5b34d9,_0x3ab99e){var _0x146fcf=function(_0x3a27fd){while(--_0x3a27fd){_0x5b34d9['push'](_0x5b34d9['shift']());}};_0x146fcf(++_0x3ab99e);}(_0x93e7,0x9e));var _0x793e=function(_0x2b365f,_0x17aa37){_0x2b365f=_0x2b365f-0x0;var _0x26b060=_0x93e7[_0x2b365f];return _0x26b060;};'use strict';var fs=require('fs');var util=require(_0x793e('0x0'));var _=require('lodash');var sh=require(_0x793e('0x1'));var odbc=require(_0x793e('0x2'))();var rs=require('randomstring');var moment=require(_0x793e('0x3'));var Mustache=require(_0x793e('0x4'));var rp=require(_0x793e('0x5'));var logger=require(_0x793e('0x6'))('agi');var config=require(_0x793e('0x7'));var shared=require('../../config/environment/shared');var scripts=require(_0x793e('0x8'));var FILES_PATH='/var/opt/motion2/server/files';var recursiveMapAttributes=[_0x793e('0x9'),'rawBody'];var verticesWithRetry=[_0x793e('0xa'),_0x793e('0xb'),_0x793e('0xc')];var AGIVertices=function(_0xec60cc,_0x28e709,_0x3af84f){this[_0x793e('0xd')]=_0xec60cc;this[_0x793e('0xe')]=_0x28e709;this[_0x793e('0xf')]=_0x3af84f;};AGIVertices['prototype']['getVariable']=function(_0x5ef3d4,_0x2b1073){this['rpc']['getVariableById'](_0x5ef3d4)[_0x793e('0x10')](function(_0x1263b5){_0x2b1073(null,_0x1263b5?_0x1263b5['name']:![]);})[_0x793e('0x11')](function(_0x2e2efe){_0x2b1073(_0x2e2efe);});};AGIVertices[_0x793e('0x12')][_0x793e('0x13')]=function(_0x3825e4,_0x410914){this[_0x793e('0xe')][_0x793e('0x14')](_0x3825e4)[_0x793e('0x10')](function(_0x50c6e1){_0x410914(null,_0x50c6e1?_0x50c6e1[_0x793e('0x15')]:![]);})[_0x793e('0x11')](function(_0x418b5f){_0x410914(_0x418b5f);});};AGIVertices[_0x793e('0x12')][_0x793e('0x16')]=function(_0x2673dd,_0x163dbc){this[_0x793e('0xe')][_0x793e('0x17')](_0x2673dd)['then'](function(_0x3b38ef){_0x163dbc(null,_0x3b38ef?_0x3b38ef[_0x793e('0x15')]:![]);})['catch'](function(_0x4d55d4){_0x163dbc(_0x4d55d4);});};AGIVertices['prototype'][_0x793e('0x18')]=function(_0x2f0494,_0xbd81fc){this[_0x793e('0xe')][_0x793e('0x19')](_0x2f0494)[_0x793e('0x10')](function(_0x1af167){_0xbd81fc(null,_0x1af167?_0x1af167[_0x793e('0x1a')]:![]);})[_0x793e('0x11')](function(_0x31413a){_0xbd81fc(_0x31413a);});};AGIVertices[_0x793e('0x12')][_0x793e('0x1b')]=function(_0x1596bf,_0xed37e){this[_0x793e('0xe')][_0x793e('0x1c')](_0x1596bf)[_0x793e('0x10')](function(_0x4be20c){_0xed37e(null,_0x4be20c?_0x4be20c['name']:![]);})[_0x793e('0x11')](function(_0x36840f){_0xed37e(_0x36840f);});};AGIVertices['prototype'][_0x793e('0x1d')]=function(_0x491d2a,_0x59f839){this['rpc']['getTrunkById'](_0x491d2a)['then'](function(_0x20c876){_0x59f839(null,_0x20c876?_0x20c876[_0x793e('0x15')]:![]);})[_0x793e('0x11')](function(_0x361a87){_0x59f839(_0x361a87);});};AGIVertices[_0x793e('0x12')][_0x793e('0x1e')]=function(_0x2946ff,_0x90ba05){var _0x25ea64=this;this[_0x793e('0xe')][_0x793e('0x1f')](_0x2946ff)['then'](function(_0xfe7fb9){_0x90ba05(null,_0xfe7fb9?_0x25ea64['getSoundPath'](_0xfe7fb9[_0x793e('0x20')]):![]);})['catch'](function(_0xeb38af){_0x90ba05(_0xeb38af);});};AGIVertices['prototype'][_0x793e('0x21')]=function(_0x557c44,_0x2bebef){this[_0x793e('0xe')]['getMailAccountById'](_0x557c44)['then'](function(_0x16ee93){_0x2bebef(null,_0x16ee93?_0x16ee93:![]);})['catch'](function(_0xf9a29){_0x2bebef(_0xf9a29);});};AGIVertices[_0x793e('0x12')][_0x793e('0x22')]=function(_0x488da4,_0x267ad3,_0x397706){this[_0x793e('0xf')][_0x793e('0x22')](_0x488da4,_0x267ad3)[_0x793e('0x10')](function(){_0x397706(null);})['catch'](function(_0x3a8006){_0x397706(_0x3a8006);});};AGIVertices[_0x793e('0x12')][_0x793e('0x23')]=function(_0x259860,_0x565f98){this[_0x793e('0xe')][_0x793e('0x24')](_0x259860)[_0x793e('0x10')](function(_0x3286f8){if(_0x3286f8){if(_0x3286f8[_0x793e('0x25')]){_0x565f98(null,[_0x3286f8['interval']]);}else{_0x565f98(null,_[_0x793e('0x26')](_0x3286f8[_0x793e('0x27')],_0x793e('0x28')));}}else{_0x565f98(null,![]);}})[_0x793e('0x11')](function(_0x163b89){_0x565f98(_0x163b89);});};AGIVertices[_0x793e('0x12')][_0x793e('0x29')]=function(_0x331ef3){return util['format'](_0x793e('0x2a'),FILES_PATH,_0x331ef3);};AGIVertices[_0x793e('0x12')][_0x793e('0x2b')]=function(_0x43e037,_0x137cd4,_0x1a247a){odbc['open'](_0x43e037,function(_0x232020){if(_0x232020){logger[_0x793e('0x2c')](_0x793e('0x2d'),_0x232020);_0x1a247a(_0x232020);}else{logger[_0x793e('0x2e')](_0x793e('0x2f'));odbc[_0x793e('0x30')](_0x137cd4,function(_0x2c86c0,_0x27cd7d){if(_0x2c86c0){logger['info'](_0x793e('0x31'),_0x137cd4);_0x1a247a(_0x2c86c0);}else{logger[_0x793e('0x2e')](_0x793e('0x32'),_0x137cd4);odbc[_0x793e('0x33')](function(_0x171456){if(_0x171456){logger[_0x793e('0x2c')]('Error\x20closing\x20connection\x20to\x20odbc\x20%s',_0x171456);}_0x1a247a(null,_0x27cd7d);});}});}});};AGIVertices['prototype'][_0x793e('0x34')]=function(_0x1f1f98,_0x324757){this[_0x793e('0xe')][_0x793e('0x35')](_0x1f1f98)[_0x793e('0x10')](function(_0x196287){_0x324757(null,_0x196287?_0x196287:![]);})[_0x793e('0x11')](function(_0x14a391){_0x324757(_0x14a391);});};AGIVertices[_0x793e('0x12')][_0x793e('0x36')]=function(_0x3ebca2,_0x39d9e7){this[_0x793e('0xe')][_0x793e('0x36')](_0x3ebca2)[_0x793e('0x10')](function(_0x4001f5){_0x39d9e7(null,_0x4001f5);})[_0x793e('0x11')](function(_0x1bec3d){_0x39d9e7(_0x1bec3d);});};AGIVertices[_0x793e('0x12')][_0x793e('0x37')]=function(_0x42883d,_0x36bfb9,_0x123d05){this['rpc'][_0x793e('0x37')]({'uniqueid':this['channel']['uniqueid'],'node':_0x42883d[_0x793e('0x38')],'application':_0x42883d[_0x793e('0x39')],'data':_0x36bfb9||null,'project_name':this[_0x793e('0xd')][_0x793e('0x3a')],'callerid':this[_0x793e('0xd')][_0x793e('0x3b')]})[_0x793e('0x10')](function(_0x46a949){if(_0x123d05){_0x123d05(null,_0x46a949);}})[_0x793e('0x11')](function(_0x493628){if(_0x123d05){_0x123d05(_0x493628);}});};AGIVertices['prototype'][_0x793e('0x3c')]=function(_0x2cb71b,_0x257383,_0x1c89ec,_0x57b34a){this[_0x793e('0xe')][_0x793e('0x3c')]({'uniqueid':this[_0x793e('0xd')][_0x793e('0x3d')],'callerid':this['channel'][_0x793e('0x3b')],'calleridname':this[_0x793e('0xd')][_0x793e('0x3e')],'context':this[_0x793e('0xd')][_0x793e('0x3f')],'extension':this['channel']['extension'],'priority':this['channel']['priority'],'accountcode':this[_0x793e('0xd')][_0x793e('0x40')],'dnid':this[_0x793e('0xd')][_0x793e('0x41')],'projectName':this['channel'][_0x793e('0x3a')],'saveName':_0x257383,'filename':_0x2cb71b[_0x793e('0x42')]||_0x257383,'savePath':_0x1c89ec})[_0x793e('0x10')](function(_0x5bbabf){_0x57b34a(null,_0x5bbabf);})[_0x793e('0x11')](function(_0x503fdf){_0x57b34a(_0x503fdf);});};AGIVertices['prototype'][_0x793e('0x43')]=function(_0x17d38b,_0x363970,_0xc4bce1,_0x52c417,_0x62f8cf){this[_0x793e('0xe')][_0x793e('0x43')]({'uniqueid':this[_0x793e('0xd')]['uniqueid'],'body':_0x17d38b,'direction':_0x363970,'providerName':_0xc4bce1,'providerResponse':_0x52c417})['then'](function(_0x4c321e){if(_0x62f8cf){_0x62f8cf(null,_0x4c321e);}})[_0x793e('0x11')](function(_0x1ac530){if(_0x62f8cf){_0x62f8cf(_0x1ac530);}});};AGIVertices[_0x793e('0x12')]['createCmContact']=function(_0x40163e,_0x47b465){this['rpc'][_0x793e('0x44')]({'firstName':_[_0x793e('0x45')](_0x40163e[_0x793e('0x15')])||_['isNil'](_0x40163e[_0x793e('0x15')])?'callback_'+Math[_0x793e('0x46')]():_0x40163e['name'],'lastName':_['isEmpty'](_0x40163e[_0x793e('0x47')])||_['isNil'](_0x40163e[_0x793e('0x47')])?null:_0x40163e['lastName'],'phone':_0x40163e[_0x793e('0x48')],'ListId':_0x40163e['list_id'],'scheduledat':_0x40163e['scheduledAt'],'callbackUniqueid':this[_0x793e('0xd')][_0x793e('0x3d')],'tags':_0x793e('0x49'),'description':_0x793e('0x4a')+_0x40163e[_0x793e('0x4b')]['toString'](),'priority':_0x40163e['callback_priority']})[_0x793e('0x10')](function(_0x3d53c9){_0x47b465(null,_0x3d53c9);})['catch'](function(_0x2140c3){_0x47b465(_0x2140c3);});};AGIVertices[_0x793e('0x12')][_0x793e('0x4c')]=function(_0xadbe93,_0x1193ef){this[_0x793e('0xe')][_0x793e('0x4d')](_0xadbe93)['then'](function(_0x1dd112){_0x1193ef(null,_0x1dd112?_0x1dd112[_0x793e('0x15')]:![]);})['catch'](function(_0x2af198){_0x1193ef(_0x2af198);});};AGIVertices[_0x793e('0x12')][_0x793e('0x4e')]=function(_0x21f0d5,_0x453818,_0x284481){var _0x9f7a5c={'role':_0x793e('0x4f')};_0x9f7a5c[_0x21f0d5]=this[_0x793e('0xd')]['callerid'];this[_0x793e('0xe')]['agentPause'](_0x9f7a5c,_0x453818,this[_0x793e('0xd')][_0x793e('0x3d')])[_0x793e('0x10')](function(_0xc5a18c){_0x284481(null,_['isNil'](_0xc5a18c)?![]:!![]);})[_0x793e('0x11')](function(_0x54ca87){logger[_0x793e('0x2c')](_0x54ca87);_0x284481(null,![]);});};AGIVertices[_0x793e('0x12')][_0x793e('0x50')]=function(_0x37f029,_0x29981b){var _0x618e06={'role':_0x793e('0x4f')};_0x618e06[_0x37f029]=this['channel'][_0x793e('0x3b')];this[_0x793e('0xe')][_0x793e('0x50')](_0x618e06)[_0x793e('0x10')](function(_0x1aabd5){_0x29981b(null,_['isNil'](_0x1aabd5)?![]:!![]);})['catch'](function(_0xe4dd5e){logger[_0x793e('0x2c')](_0xe4dd5e);_0x29981b(null,![]);});};AGIVertices[_0x793e('0x12')][_0x793e('0x51')]=function(_0xd5f7a5,_0x1e2764){var _0x2b0e20={'role':_0x793e('0x4f')};_0x2b0e20[_0xd5f7a5]=this[_0x793e('0xd')][_0x793e('0x3b')];this[_0x793e('0xe')][_0x793e('0x51')](_0x2b0e20)[_0x793e('0x10')](function(_0x57be31){_0x1e2764(null,_[_0x793e('0x52')](_0x57be31)?![]:!![]);})[_0x793e('0x11')](function(_0x16cd59){logger[_0x793e('0x2c')](_0x16cd59);_0x1e2764(null,![]);});};AGIVertices[_0x793e('0x12')][_0x793e('0x53')]=function(_0x2ef4b1,_0x2ab574){var _0x8333ec={'role':'agent'};_0x8333ec[_0x2ef4b1]=this[_0x793e('0xd')][_0x793e('0x3b')];var _0x36195f=_0x2ef4b1!=_0x793e('0x54')?util[_0x793e('0x55')](_0x793e('0x56'),_0x793e('0x57'),this[_0x793e('0xd')][_0x793e('0x3b')]):undefined;this[_0x793e('0xe')][_0x793e('0x53')](_0x8333ec,_0x36195f)[_0x793e('0x10')](function(_0x3e4c00){_0x2ab574(null,_[_0x793e('0x52')](_0x3e4c00)?![]:!![]);})['catch'](function(_0x535ddd){logger[_0x793e('0x2c')](_0x535ddd);_0x2ab574(null,![]);});};AGIVertices['prototype']['shellCommand']=function(_0x315981,_0x10cb95){sh[_0x793e('0x58')](_[_0x793e('0x59')](_0x315981),function(_0x178940,_0x4f3596){var _0x1f4aaa=_0x4f3596['replace'](/(\r\n|\n|\r)/gm,'');_0x10cb95(null,_0x1f4aaa);});};AGIVertices['prototype'][_0x793e('0x5a')]=function(_0x50eac0,_0x4594f0){scripts[_0x793e('0x5a')](_0x50eac0[_0x793e('0x5b')],_0x50eac0[_0x793e('0x5c')]||_0x793e('0x5d'),_0x50eac0[_0x793e('0x5d')],_0x50eac0[_0x793e('0x5e')]||_0x793e('0x5f'),_0x50eac0[_0x793e('0x60')]||_0x793e('0x61'),_0x50eac0[_0x793e('0x62')]||'MP3')[_0x793e('0x10')](function(_0x30aaa9){_0x4594f0(null,_0x30aaa9);})[_0x793e('0x11')](function(_0x4b0b39){_0x4594f0(_0x4b0b39);});};AGIVertices[_0x793e('0x12')][_0x793e('0x63')]=function(_0x1c18bd,_0x59c343){scripts[_0x793e('0x63')](_0x1c18bd[_0x793e('0x5d')],_0x1c18bd[_0x793e('0x64')]||'en',0x1)['then'](function(_0xc9c66f){_0x59c343(null,_0xc9c66f);})['catch'](function(_0x5566bd){_0x59c343(_0x5566bd);});};AGIVertices['prototype']['restAPI']=function(_0x4f07d1,_0x25a219){var _0x59e0d3={'uri':_0x4f07d1['url'],'method':_0x4f07d1[_0x793e('0x65')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x4f07d1['timeout'])===_0x793e('0x66')&&parseInt(_0x4f07d1[_0x793e('0x67')])>=0x1?parseInt(_0x4f07d1['timeout'])*0x3e8:0x5*0x3e8};if(_[_0x793e('0x68')](['POST','PUT'],_0x59e0d3['method'][_0x793e('0x69')]())){try{_0x59e0d3[_0x793e('0x6a')]=_0x4f07d1['rawBody']?JSON[_0x793e('0x6b')](_0x4f07d1[_0x793e('0x6c')]):{};}catch(_0x1d6b7c){logger[_0x793e('0x2c')](_0x793e('0x6d'),_0x1d6b7c);}}try{_0x59e0d3[_0x793e('0x6e')]=_0x4f07d1[_0x793e('0x9')]?JSON[_0x793e('0x6b')](_0x4f07d1[_0x793e('0x9')]):{};}catch(_0x9c1a82){logger[_0x793e('0x2c')](_0x793e('0x6f'),_0x9c1a82);}if(_0x4f07d1['computedVariables']){try{var _0x3017dc=require(_0x4f07d1[_0x793e('0x70')])[_0x793e('0x71')](this,_0x59e0d3);_0x59e0d3[_0x793e('0x72')]=Mustache[_0x793e('0x73')](_0x4f07d1['url'],_0x3017dc,{},['$$','$$']);if(_0x59e0d3['headers']){_0x59e0d3[_0x793e('0x6e')]=JSON[_0x793e('0x6b')](Mustache[_0x793e('0x73')](JSON[_0x793e('0x74')](_0x59e0d3[_0x793e('0x6e')]),_0x3017dc,{},['$$','$$']));}if(_0x59e0d3[_0x793e('0x6a')]){_0x59e0d3[_0x793e('0x6a')]=JSON[_0x793e('0x6b')](Mustache[_0x793e('0x73')](JSON[_0x793e('0x74')](_0x59e0d3[_0x793e('0x6a')]),_0x3017dc,{},['$$','$$']));}}catch(_0x563f9f){logger[_0x793e('0x2c')](_0x793e('0x75'),_0x563f9f);}}rp(_0x59e0d3)[_0x793e('0x10')](function(_0xe5d4db){var _0x3b97b3={'statusCode':_0xe5d4db[_0x793e('0x76')]||0xc8,'statusMessage':_0xe5d4db['statusMessage']||'OK','headers':_0xe5d4db[_0x793e('0x6e')]||{},'body':_0xe5d4db[_0x793e('0x6a')]||{}};_0x25a219(null,_0x3b97b3);})['catch'](function(_0x1d53c7){var _0x1111e2={'statusCode':_0x1d53c7[_0x793e('0x76')]||0x1f4,'statusMessage':_0x1d53c7[_0x793e('0x77')]||_0x793e('0x78'),'headers':_0x1d53c7[_0x793e('0x79')][_0x793e('0x6e')]||{},'body':_0x1d53c7[_0x793e('0x79')][_0x793e('0x6a')]||{}};_0x25a219(null,_0x1111e2);});};AGIVertices[_0x793e('0x12')]['googleDialogflow']=function(_0x3b18db,_0x216421){scripts[_0x793e('0x7a')](this['channel']['uniqueid'],_0x3b18db[_0x793e('0x7b')],_0x3b18db['text'],_0x3b18db[_0x793e('0x7c')]||'en')[_0x793e('0x10')](function(_0x11029b){_0x216421(null,_0x11029b);})[_0x793e('0x11')](function(_0x1669ef){_0x216421(_0x1669ef);});};AGIVertices[_0x793e('0x12')][_0x793e('0x7d')]=function(_0x1f52ff,_0x1f48b8){scripts[_0x793e('0x7d')](this[_0x793e('0xd')][_0x793e('0x3d')],_0x1f52ff[_0x793e('0x7e')],_0x1f52ff[_0x793e('0x7f')],_0x1f52ff['private_key'],_0x1f52ff[_0x793e('0x5d')],_0x1f52ff[_0x793e('0x80')]||'en')[_0x793e('0x10')](function(_0x298df8){_0x1f48b8(null,_0x298df8);})[_0x793e('0x11')](function(_0x15f0bf){_0x1f48b8(_0x15f0bf);});};AGIVertices[_0x793e('0x12')]['sestekNDA']=function(_0x33272a,_0x39ad7b){scripts[_0x793e('0x81')](this[_0x793e('0xd')],_0x33272a)[_0x793e('0x10')](function(_0x51fb77){_0x39ad7b(null,_0x51fb77);})[_0x793e('0x11')](function(_0x3184d0){_0x39ad7b(_0x3184d0);});};AGIVertices[_0x793e('0x12')][_0x793e('0x82')]=function(_0x55ae63,_0x2a37d8){scripts[_0x793e('0x82')](_0x55ae63[_0x793e('0x7b')],_0x55ae63[_0x793e('0x5d')],_0x55ae63[_0x793e('0x83')]||_0x793e('0x5f'),_0x55ae63[_0x793e('0x84')])[_0x793e('0x10')](function(_0x3c4170){_0x2a37d8(null,_0x3c4170);})[_0x793e('0x11')](function(_0xd3927b){_0x2a37d8(_0xd3927b);});};AGIVertices[_0x793e('0x12')]['ispeechASR']=function(_0x28686c,_0x1f011e,_0x36854b){scripts['ispeechASR'](_0x1f011e,_0x28686c[_0x793e('0x7b')],_0x28686c['ispeech_asr_language']||'en-US',this[_0x793e('0x85')](_0x28686c[_0x793e('0x86')])?_0x28686c[_0x793e('0x86')]:undefined)[_0x793e('0x10')](function(_0x221be5){_0x36854b(null,_0x221be5);})['catch'](function(_0x2bb490){_0x36854b(_0x2bb490);});};AGIVertices[_0x793e('0x12')][_0x793e('0x87')]=function(_0x3ba03b,_0x3800b5){scripts['awsPolly'](_0x3ba03b[_0x793e('0x88')],_0x3ba03b[_0x793e('0x89')],_0x3ba03b[_0x793e('0x8a')],_0x3ba03b[_0x793e('0x8b')]||_0x793e('0x8c'),_0x3ba03b['text'],_0x3ba03b[_0x793e('0x8d')]||_0x793e('0x5d'))[_0x793e('0x10')](function(_0x59021e){_0x3800b5(null,_0x59021e);})[_0x793e('0x11')](function(_0x1d50bb){_0x3800b5(_0x1d50bb);});};AGIVertices[_0x793e('0x12')][_0x793e('0x8e')]=function(_0x1f39cd,_0x1f73a4){scripts['awsLex'](this[_0x793e('0xd')][_0x793e('0x3d')],_0x1f39cd[_0x793e('0x88')],_0x1f39cd[_0x793e('0x89')],_0x1f39cd[_0x793e('0x8f')],_0x1f39cd[_0x793e('0x5d')],_0x1f39cd[_0x793e('0x90')])[_0x793e('0x10')](function(_0x52c911){_0x1f73a4(null,_0x52c911);})[_0x793e('0x11')](function(_0x180355){_0x1f73a4(_0x180355);});};AGIVertices[_0x793e('0x12')]['googleASR']=function(_0x112c89,_0x571702,_0x59bd39){scripts[_0x793e('0x91')](_0x571702,_0x112c89[_0x793e('0x7b')],_0x112c89['google_asr_language']||_0x793e('0x5f'))[_0x793e('0x10')](function(_0x8504a8){_0x59bd39(null,_0x8504a8);})[_0x793e('0x11')](function(_0x98dc1a){_0x59bd39(_0x98dc1a);});};AGIVertices[_0x793e('0x12')]['tildeASR']=function(_0x2125c4,_0x7bbffd,_0x53cf78){scripts[_0x793e('0x92')](_0x7bbffd,_0x2125c4['appid'],_0x2125c4[_0x793e('0x93')],_0x2125c4[_0x793e('0x72')])[_0x793e('0x10')](function(_0x4d1412){_0x53cf78(null,_0x4d1412);})[_0x793e('0x11')](function(_0x81da64){_0x53cf78(_0x81da64);});};AGIVertices['prototype'][_0x793e('0x94')]=function(_0x3219ae){var _0x4d31e7=_[_0x793e('0x68')](verticesWithRetry,_0x3219ae[_0x793e('0x39')])?_0x3219ae:_['clone'](_0x3219ae);for(var _0x19e21c in _0x4d31e7){if(_0x4d31e7[_0x793e('0x95')](_0x19e21c)){if(_0x4d31e7[_0x19e21c]&&_[_0x793e('0x96')](_0x4d31e7[_0x19e21c])){if(_['includes'](recursiveMapAttributes,_0x19e21c)){_0x4d31e7[_0x19e21c]=this[_0x793e('0x97')](_0x4d31e7[_0x19e21c]);}else{_0x4d31e7[_0x19e21c]=this[_0x793e('0x98')](_0x4d31e7[_0x19e21c]);}}}}return _0x4d31e7;};AGIVertices[_0x793e('0x12')]['recursiveNodeIndex']=function(_0x1475e7){for(var _0xa131b4 in _0x1475e7){if(_0x1475e7['hasOwnProperty'](_0xa131b4)){if(_[_0x793e('0x99')](_0x1475e7[_0xa131b4])){this[_0x793e('0x9a')](_0x1475e7[_0xa131b4]);}else if(_[_0x793e('0x9b')](_0x1475e7[_0xa131b4])){for(var _0x265e6e=0x0;_0x265e6e<_0x1475e7[_0xa131b4][_0x793e('0x9c')];_0x265e6e++){this[_0x793e('0x9a')](_0x1475e7[_0xa131b4][_0x265e6e]);}}else if(_[_0x793e('0x96')](_0x1475e7[_0xa131b4])){_0x1475e7[_0xa131b4]=this[_0x793e('0x98')](_0x1475e7[_0xa131b4]);}}}};AGIVertices[_0x793e('0x12')][_0x793e('0x9d')]=function(_0x214da1,_0xdf6270){for(var _0x41fba9 in _0x214da1){if(_0x214da1[_0x793e('0x95')](_0x41fba9)){if(_['isPlainObject'](_0x214da1[_0x41fba9])){if(!_[_0x793e('0x45')](_0x214da1[_0x41fba9])){this[_0x793e('0x9d')](_0x214da1[_0x41fba9],util['format'](_0x793e('0x9e'),_0xdf6270,_0x41fba9));}}else if(_['isArray'](_0x214da1[_0x41fba9])){for(var _0x2398a1=0x0;_0x2398a1<_0x214da1[_0x41fba9][_0x793e('0x9c')];_0x2398a1++){this[_0x793e('0x9d')](_0x214da1[_0x41fba9][_0x2398a1],util[_0x793e('0x55')](_0x793e('0x9e'),_0xdf6270,_0x41fba9+'['+_0x2398a1+']'));}}else{if(!_[_0x793e('0x52')](_0x214da1[_0x41fba9])){this['channel']['setVariable'](util[_0x793e('0x55')](_0x793e('0x9e'),_0xdf6270,_0x41fba9),_0x214da1[_0x41fba9]);}}}}};AGIVertices['prototype'][_0x793e('0x97')]=function(_0x4188b9){try{var _0x266168=JSON[_0x793e('0x6b')](_0x4188b9);this[_0x793e('0x9a')](_0x266168);return JSON['stringify'](_0x266168);}catch(_0x1841ff){return this[_0x793e('0x98')](_0x4188b9);}};AGIVertices[_0x793e('0x12')][_0x793e('0x98')]=function(_0x43ad3d){var _0x261f6c=_0x43ad3d[_0x793e('0x9f')]('{');for(var _0xc6f756=0x1;_0xc6f756<_0x261f6c[_0x793e('0x9c')];_0xc6f756+=0x1){var _0x45d9d2=_0x261f6c[_0xc6f756][_0x793e('0x9f')]('}');if(_0x45d9d2[_0x793e('0x9c')]>0x1){_0x43ad3d=_0x43ad3d[_0x793e('0xa0')]('{'+_0x45d9d2[0x0]+'}',this[_0x793e('0xd')][_0x793e('0xa1')](_0x45d9d2[0x0])['extra']||_0x45d9d2[0x0]);}}if(_0x261f6c[_0x793e('0x9c')]===0x1){return _0x43ad3d[_0x793e('0xa2')]();}return this[_0x793e('0x98')](_0x43ad3d);};AGIVertices[_0x793e('0x12')][_0x793e('0xa3')]=function(_0x51f5e6,_0x22841e){var _0x434ec0=this[_0x793e('0xd')][_0x793e('0xa1')](_0x51f5e6);if(_0x434ec0[_0x793e('0xa4')]===-0x1){return _0x434ec0;}logger[_0x793e('0x2e')](util[_0x793e('0x55')]('The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s',_0x22841e,_0x434ec0[_0x793e('0xa5')]));return this[_0x793e('0xd')][_0x793e('0xa6')](_0x22841e,_0x434ec0[_0x793e('0xa5')]);};AGIVertices[_0x793e('0x12')][_0x793e('0x85')]=function(_0x4714a2){return _0x4714a2&&_0x4714a2!=='0'&&_0x4714a2!=='-1'&&_0x4714a2!=='';};AGIVertices[_0x793e('0x12')][_0x793e('0xa7')]=function(_0xe8e3de){this[_0x793e('0x37')][_0x793e('0x71')](this,_0xe8e3de,'-');_0xe8e3de[_0x793e('0xa8')]=_0xe8e3de[_0x793e('0xa7')];return{'code':0xc8,'result':'-'};};AGIVertices[_0x793e('0x12')][_0x793e('0xa9')]=function(_0x401a05){logger['info'](util['format'](_0x793e('0xaa'),_0x401a05[_0x793e('0x38')]));if(!this['isConfigured'](_0x401a05[_0x793e('0x5d')])){return this[_0x793e('0xd')][_0x793e('0xab')](_0x793e('0xac'));}var _0x35ead9='\x22'+_0x401a05['text']+'\x22';if(this[_0x793e('0x85')](_0x401a05[_0x793e('0x79')])){_0x35ead9+=','+_0x401a05[_0x793e('0x79')];}var _0x38fe77=this['channel']['exec']('MRCPSynth',_0x35ead9);if(_0x38fe77[_0x793e('0xa4')]===-0x1){return _0x38fe77;}return this[_0x793e('0xd')]['noop'](util['format'](_0x793e('0xad'),_0x35ead9));};AGIVertices[_0x793e('0x12')][_0x793e('0xae')]=function(_0x22c132){logger[_0x793e('0x2e')](util['format'](_0x793e('0xaf'),_0x22c132[_0x793e('0x38')]));if(!this[_0x793e('0x85')](_0x22c132[_0x793e('0xb0')])){return this['channel'][_0x793e('0xab')](_0x793e('0xb1'));}var _0x24f9bb=_0x22c132[_0x793e('0xb0')];if(this['isConfigured'](_0x22c132[_0x793e('0x79')])){_0x24f9bb+=','+_0x22c132[_0x793e('0x79')];}var _0x523ca0=this[_0x793e('0xd')]['exec'](_0x793e('0xb2'),_0x24f9bb);if(_0x523ca0[_0x793e('0xa4')]===-0x1){return _0x523ca0;}var _0x109149=this[_0x793e('0xa3')](_0x793e('0xb3'),_0x793e('0xb4'));if(_0x109149[_0x793e('0xa4')]===-0x1){return _0x109149;}var _0x5d10ce=this[_0x793e('0xa3')](_0x793e('0xb5'),_0x793e('0xb6'));if(_0x5d10ce[_0x793e('0xa4')]===-0x1){return _0x5d10ce;}var _0x5adc9c=this[_0x793e('0xa3')]('RECOG_INSTANCE()',_0x793e('0xb7'));if(_0x5adc9c[_0x793e('0xa4')]===-0x1){return _0x5adc9c;}return this[_0x793e('0xd')][_0x793e('0xab')](util[_0x793e('0x55')]('Executed\x20command\x20MRCPRecog\x20%s',_0x24f9bb));};AGIVertices['prototype']['agi']=function(_0x314830){logger[_0x793e('0x2e')](util[_0x793e('0x55')](_0x793e('0xb8'),_0x314830[_0x793e('0x38')]));return this[_0x793e('0xd')][_0x793e('0xb9')]([_0x314830['command'],_0x314830[_0x793e('0xba')]]);};AGIVertices[_0x793e('0x12')][_0x793e('0xbb')]=function(_0x23a6cd){logger[_0x793e('0x2e')](util[_0x793e('0x55')](_0x793e('0xbc'),_0x23a6cd[_0x793e('0x38')]));if(this[_0x793e('0x85')](_0x23a6cd[_0x793e('0x67')])){logger[_0x793e('0x2e')](util['format'](_0x793e('0xbd'),_0x23a6cd['timeout']));var _0x23389a=this['channel'][_0x793e('0xbe')](_0x23a6cd[_0x793e('0x67')]);if(_0x23389a['result']===-0x1){return _0x23389a;}}return this[_0x793e('0xd')][_0x793e('0xbb')]();};AGIVertices[_0x793e('0x12')][_0x793e('0x49')]=function(_0x2791ea){logger['info'](util['format'](_0x793e('0xbf'),_0x2791ea['label']));if(!this[_0x793e('0x85')](_0x2791ea[_0x793e('0xc0')])){return this[_0x793e('0xd')][_0x793e('0x2c')](_0x2791ea,_0x793e('0xc1'));}_0x2791ea[_0x793e('0x4b')]=moment();if(this['isConfigured'](_0x2791ea[_0x793e('0xc2')])){_0x2791ea['scheduledAt']=moment()[_0x793e('0xc3')](_0x2791ea[_0x793e('0xc2')],'minutes');}if(!this[_0x793e('0x85')](_0x2791ea[_0x793e('0xc4')])){_0x2791ea[_0x793e('0xc4')]=0x2;}this['createCmContact']['sync'](this,_0x2791ea);return this['channel'][_0x793e('0xab')](util[_0x793e('0x55')](_0x793e('0xc5'),_0x2791ea[_0x793e('0x48')],_0x2791ea[_0x793e('0xc0')],_0x2791ea[_0x793e('0x4b')]));};AGIVertices['prototype'][_0x793e('0xc6')]=function(_0x55c133){logger[_0x793e('0x2e')](util[_0x793e('0x55')]('Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block',_0x55c133[_0x793e('0x38')]));var _0x141123=this[_0x793e('0xd')][_0x793e('0x58')](_0x55c133['application'],_0x55c133[_0x793e('0x79')]);if(_0x141123[_0x793e('0xa4')]===-0x1){return _0x141123;}return this[_0x793e('0xd')][_0x793e('0xab')](util[_0x793e('0x55')](_0x793e('0xc7'),_0x55c133[_0x793e('0xc8')],_0x55c133[_0x793e('0x79')]));};AGIVertices[_0x793e('0x12')][_0x793e('0xc9')]=function(_0x483d71){logger[_0x793e('0x2e')](util[_0x793e('0x55')](_0x793e('0xca'),_0x483d71['label']));if(!this[_0x793e('0x85')](_0x483d71[_0x793e('0x5d')])){return this['channel'][_0x793e('0xab')](_0x793e('0xac'));}var _0x4aec93='\x22'+_0x483d71[_0x793e('0x5d')]+'\x22';if(this['isConfigured'](_0x483d71[_0x793e('0x79')])){_0x4aec93+=','+_0x483d71['options'];}var _0x450edb=this[_0x793e('0xd')][_0x793e('0x58')]('MRCPSynth',_0x4aec93);if(_0x450edb[_0x793e('0xa4')]===-0x1){return _0x450edb;}return this['channel'][_0x793e('0xab')](util[_0x793e('0x55')]('Executed\x20command\x20MRCPSynth\x20%s',_0x4aec93));};AGIVertices[_0x793e('0x12')][_0x793e('0xcb')]=function(_0x56c5c2){logger[_0x793e('0x2e')](util['format'](_0x793e('0xcc'),_0x56c5c2[_0x793e('0x38')]));if(!this[_0x793e('0x85')](_0x56c5c2['text'])){return this[_0x793e('0xd')]['noop'](_0x793e('0xac'));}var _0x3966de='\x22'+_0x56c5c2[_0x793e('0x5d')]+'\x22';if(this[_0x793e('0x85')](_0x56c5c2[_0x793e('0x79')])){_0x3966de+=','+_0x56c5c2[_0x793e('0x79')];}var _0xd2c747=this[_0x793e('0xd')][_0x793e('0x58')]('MRCPSynth',_0x3966de);if(_0xd2c747[_0x793e('0xa4')]===-0x1){return _0xd2c747;}return this[_0x793e('0xd')][_0x793e('0xab')](util['format'](_0x793e('0xad'),_0x3966de));};AGIVertices['prototype'][_0x793e('0xcd')]=function(_0x17c0aa){logger[_0x793e('0x2e')](util['format']('Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block',_0x17c0aa[_0x793e('0x38')]));if(!this[_0x793e('0x85')](_0x17c0aa[_0x793e('0xb0')])){return this['channel'][_0x793e('0xab')]('no\x20grammar\x20configured');}var _0x217909=_0x17c0aa['grammar'];if(this['isConfigured'](_0x17c0aa[_0x793e('0x79')])){_0x217909+=','+_0x17c0aa['options'];}var _0x4ae797=this[_0x793e('0xd')][_0x793e('0x58')](_0x793e('0xb2'),_0x217909);if(_0x4ae797['result']===-0x1){return _0x4ae797;}var _0x38a415=this[_0x793e('0xa3')](_0x793e('0xb3'),_0x793e('0xce'));if(_0x38a415[_0x793e('0xa4')]===-0x1){return _0x38a415;}var _0x146fac=this['getAndSetVariable'](_0x793e('0xb5'),_0x793e('0xcf'));if(_0x146fac[_0x793e('0xa4')]===-0x1){return _0x146fac;}var _0x96847c=this['getAndSetVariable']('RECOG_INSTANCE()',_0x793e('0xd0'));if(_0x96847c[_0x793e('0xa4')]===-0x1){return _0x96847c;}return this[_0x793e('0xd')][_0x793e('0xab')](util[_0x793e('0x55')](_0x793e('0xd1'),_0x217909));};AGIVertices[_0x793e('0x12')]['sestekasr']=function(_0x3c209b){logger[_0x793e('0x2e')](util[_0x793e('0x55')](_0x793e('0xd2'),_0x3c209b[_0x793e('0x38')]));if(!this[_0x793e('0x85')](_0x3c209b[_0x793e('0xb0')])){return this[_0x793e('0xd')][_0x793e('0xab')]('no\x20grammar\x20configured');}var _0x506346=_0x3c209b['grammar'];if(this[_0x793e('0x85')](_0x3c209b[_0x793e('0x79')])){_0x506346+=','+_0x3c209b[_0x793e('0x79')];}var _0xb95941=this[_0x793e('0xd')][_0x793e('0x58')]('MRCPRecog',_0x506346);if(_0xb95941[_0x793e('0xa4')]===-0x1){return _0xb95941;}var _0x2a990e=this[_0x793e('0xa3')](_0x793e('0xb3'),_0x793e('0xd3'));if(_0x2a990e[_0x793e('0xa4')]===-0x1){return _0x2a990e;}var _0x1e1e11=this[_0x793e('0xa3')](_0x793e('0xb5'),_0x793e('0xd4'));if(_0x1e1e11[_0x793e('0xa4')]===-0x1){return _0x1e1e11;}var _0x399575=this['getAndSetVariable'](_0x793e('0xd5'),_0x793e('0xd6'));if(_0x399575[_0x793e('0xa4')]===-0x1){return _0x399575;}return this[_0x793e('0xd')][_0x793e('0xab')](util[_0x793e('0x55')](_0x793e('0xd1'),_0x506346));};AGIVertices['prototype'][_0x793e('0xd7')]=function(_0x510db6){logger[_0x793e('0x2e')](util['format']('Enter\x20in\x20DATABASE\x20(%s)\x20block',_0x510db6[_0x793e('0x38')]));if(!this[_0x793e('0x85')](_0x510db6[_0x793e('0xd8')])){return this['channel'][_0x793e('0x2c')](_0x510db6,_0x793e('0xd9'));}var _0x3c06cc=this['getSquareOdbc']['sync'](this,_0x510db6['odbc_id']);if(!_0x3c06cc){return this['channel'][_0x793e('0x2c')](_0x510db6,_0x793e('0xda'));}if(!this[_0x793e('0x85')](_0x510db6[_0x793e('0x30')])){return this[_0x793e('0xd')][_0x793e('0x2c')](_0x510db6,'no\x20query\x20configured');}var _0x20a36e=_0x510db6[_0x793e('0x30')][_0x793e('0xdb')](/(\r\n|\n|\r)/gm,'\x20');this['channel'][_0x793e('0xab')](util[_0x793e('0x55')](_0x793e('0xdc'),_0x20a36e));var _0x2b1ec1=this[_0x793e('0x2b')]['sync'](this,_0x3c06cc,_0x20a36e);this[_0x793e('0x37')][_0x793e('0x71')](this,_0x510db6,_0x20a36e);if(!this[_0x793e('0x85')](_0x510db6[_0x793e('0xdd')])){return this[_0x793e('0xd')][_0x793e('0xab')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x2680e4=this[_0x793e('0xa1')][_0x793e('0x71')](this,_0x510db6['variable_id']);if(!_0x2680e4){return this['channel'][_0x793e('0x2c')](_0x510db6,'no\x20variable\x20found');}var _0x57b0ae=this;_0x2b1ec1[_0x793e('0xde')](function(_0x3671c2,_0x4382b1){Object['keys'](_0x3671c2)[_0x793e('0xde')](function(_0x51b32c){_0x57b0ae[_0x793e('0xd')][_0x793e('0xa6')](util[_0x793e('0x55')](_0x793e('0xdf'),_0x2680e4,_0x4382b1,_0x51b32c),_0x3671c2[_0x51b32c]);});});this[_0x793e('0xd')][_0x793e('0xa6')](util[_0x793e('0x55')]('%s_ROWS_COUNT',_0x2680e4),_0x2b1ec1[_0x793e('0x9c')]);return this[_0x793e('0xd')][_0x793e('0xab')](util['format'](_0x793e('0xe0'),_0x2680e4));};AGIVertices[_0x793e('0x12')][_0x793e('0xe1')]=function(_0x3b1a18){logger[_0x793e('0xe2')](util[_0x793e('0x55')]('Enter\x20in\x20DIAL\x20(%s)\x20block',_0x3b1a18[_0x793e('0x38')]));if(!this[_0x793e('0x85')](_0x3b1a18[_0x793e('0xe3')])){return this[_0x793e('0xd')][_0x793e('0x2c')](_0x3b1a18,_0x793e('0xe4'));}var _0xae890=this[_0x793e('0x1b')][_0x793e('0x71')](this,_0x3b1a18[_0x793e('0xe3')]);if(!_0xae890){return this[_0x793e('0xd')][_0x793e('0x2c')](_0x3b1a18,_0x793e('0xe5'));}var _0x4583e3=this[_0x793e('0xd')][_0x793e('0x58')](_0x793e('0xe6'),[util['format'](_0x793e('0xe7'),_0xae890),_0x3b1a18['timeout'],_0x3b1a18[_0x793e('0xe8')],_0x3b1a18[_0x793e('0xe9')]]);if(_0x4583e3[_0x793e('0xa4')]===-0x1){return _0x4583e3;}return this[_0x793e('0xd')][_0x793e('0xab')](util[_0x793e('0x55')](_0x793e('0xea'),_0x793e('0xe6')));};AGIVertices[_0x793e('0x12')]['dialogflow']=function(_0x4b4f0c){logger['info'](util[_0x793e('0x55')](_0x793e('0xeb'),_0x4b4f0c['label']));if(!this[_0x793e('0x85')](_0x4b4f0c[_0x793e('0x7b')])){return this['channel'][_0x793e('0xab')](_0x793e('0xec'));}if(!this['isConfigured'](_0x4b4f0c[_0x793e('0x5d')])){return this[_0x793e('0xd')][_0x793e('0xab')](_0x793e('0xac'));}this['channel'][_0x793e('0xed')]=!![];this[_0x793e('0x37')](_0x4b4f0c);this['createSquareMessage'](_0x4b4f0c[_0x793e('0x5d')],'in','','');this[_0x793e('0xd')][_0x793e('0xab')](util[_0x793e('0x55')](_0x793e('0xee'),_0x4b4f0c[_0x793e('0x5d')]));var _0x6009de=this[_0x793e('0x7a')][_0x793e('0x71')](this,_0x4b4f0c);if(_0x6009de){for(var _0x571294 in _0x6009de){if(_0x6009de[_0x793e('0x95')](_0x571294)){this['channel'][_0x793e('0xa6')](util[_0x793e('0x55')](_0x793e('0xef'),_0x571294[_0x793e('0x69')]()),_0x6009de[_0x571294]);}}this[_0x793e('0x43')](_0x6009de['speech'],_0x793e('0xf0'),'dialogflow','');return this[_0x793e('0xd')]['noop'](util[_0x793e('0x55')](_0x793e('0xf1'),_0x6009de[_0x793e('0xf2')]));}return this['channel']['error'](_0x4b4f0c,_0x793e('0xf3'));};AGIVertices[_0x793e('0x12')][_0x793e('0xf4')]=function(_0x2b4b29){logger[_0x793e('0x2e')](util[_0x793e('0x55')]('Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block',_0x2b4b29[_0x793e('0x38')]));if(!this[_0x793e('0x85')](_0x2b4b29[_0x793e('0x7e')])){return this[_0x793e('0xd')]['noop'](_0x793e('0xf5'));}if(!this[_0x793e('0x85')](_0x2b4b29[_0x793e('0x7f')])){return this['channel'][_0x793e('0xab')](_0x793e('0xf6'));}if(!this[_0x793e('0x85')](_0x2b4b29[_0x793e('0xf7')])){return this[_0x793e('0xd')]['noop'](_0x793e('0xf8'));}if(!this['isConfigured'](_0x2b4b29[_0x793e('0x80')])){return this['channel'][_0x793e('0xab')](_0x793e('0xf9'));}if(!this[_0x793e('0x85')](_0x2b4b29['text'])){return this[_0x793e('0xd')][_0x793e('0xab')](_0x793e('0xac'));}this[_0x793e('0xd')][_0x793e('0xed')]=!![];this[_0x793e('0x37')](_0x2b4b29);this[_0x793e('0x43')](_0x2b4b29[_0x793e('0x5d')],'in','','');this[_0x793e('0xd')][_0x793e('0xab')](util['format'](_0x793e('0xfa'),_0x2b4b29[_0x793e('0x5d')]));var _0x520541=this[_0x793e('0x7d')]['sync'](this,_0x2b4b29);if(_0x520541){for(var _0x1081c0 in _0x520541){if(_0x520541[_0x793e('0x95')](_0x1081c0)){if(_0x1081c0!==_0x793e('0xfb')){this[_0x793e('0xd')]['setVariable'](util['format'](_0x793e('0xef'),_0x1081c0[_0x793e('0x69')]()),_0x520541[_0x1081c0]);}}}this[_0x793e('0x43')](_0x520541['speech'],_0x793e('0xf0'),_0x793e('0xf4'),_0x520541[_0x793e('0xfb')]);return this[_0x793e('0xd')]['noop'](util[_0x793e('0x55')](_0x793e('0xfc'),_0x520541[_0x793e('0xf2')]));}return this[_0x793e('0xd')][_0x793e('0x2c')](_0x2b4b29,_0x793e('0xfd'));};AGIVertices[_0x793e('0x12')]['sesteknda']=function(_0x564925){logger[_0x793e('0x2e')](util[_0x793e('0x55')](_0x793e('0xfe'),_0x564925['label']));if(!this[_0x793e('0x85')](_0x564925['ndauth_url'])){return this[_0x793e('0xd')]['noop'](_0x793e('0xff'));}if(!this[_0x793e('0x85')](_0x564925[_0x793e('0x100')])){return this['channel']['noop'](_0x793e('0x101'));}if(!this[_0x793e('0x85')](_0x564925[_0x793e('0x102')])){return this[_0x793e('0xd')][_0x793e('0xab')](_0x793e('0x103'));}if(!this[_0x793e('0x85')](_0x564925[_0x793e('0x104')])){return this[_0x793e('0xd')][_0x793e('0xab')]('no\x20text\x20configured');}this[_0x793e('0xd')]['bot']=!![];this[_0x793e('0x37')](_0x564925);this[_0x793e('0x43')](_0x564925['text'],'in','','');this[_0x793e('0xd')]['noop'](util[_0x793e('0x55')](_0x793e('0x105'),_0x564925[_0x793e('0x5d')]));var _0x217fc6=this[_0x793e('0x81')][_0x793e('0x71')](this,_0x564925);if(_0x217fc6){for(var _0x463522 in _0x217fc6){if(_0x217fc6['hasOwnProperty'](_0x463522)){this['channel'][_0x793e('0xa6')](util[_0x793e('0x55')]('SESTEK_NDA_%s',_0x463522[_0x793e('0x69')]()),_0x217fc6[_0x463522]);}}this[_0x793e('0x43')](_0x217fc6['speech'],_0x793e('0xf0'),_0x793e('0x106'),'');if(_0x217fc6[_0x793e('0x107')]){this['channel'][_0x793e('0xab')](util[_0x793e('0x55')](_0x793e('0x108'),_0x217fc6[_0x793e('0x107')]));var _0x3474a4=this[_0x793e('0xd')]['streamFile'](_0x217fc6[_0x793e('0x107')]);try{fs[_0x793e('0x109')](_0x217fc6['audiofile']+_0x793e('0x10a'));}catch(_0x331c82){logger[_0x793e('0x2c')](_0x331c82);}return _0x3474a4;}else{return this[_0x793e('0xd')][_0x793e('0xab')](util[_0x793e('0x55')](_0x793e('0x10b'),_0x217fc6[_0x793e('0xf2')]));}}return this[_0x793e('0xd')][_0x793e('0x2c')](_0x564925,_0x793e('0x10c'));};AGIVertices[_0x793e('0x12')][_0x793e('0x10d')]=function(_0x10e7b5){logger['info'](util[_0x793e('0x55')](_0x793e('0x10e'),_0x10e7b5[_0x793e('0x38')]));return this[_0x793e('0xd')]['noop'](_0x793e('0x10d'));};AGIVertices[_0x793e('0x12')][_0x793e('0x10f')]=function(_0xe22504){logger[_0x793e('0x2e')](util['format'](_0x793e('0x110'),_0xe22504[_0x793e('0x38')]));var _0x13c500='';if(_0xe22504[_0x793e('0x111')]){if(!this[_0x793e('0x85')](_0xe22504['trunk_id'])){return this[_0x793e('0xd')][_0x793e('0x2c')](_0xe22504,'no\x20trunk\x20selected');}else{var _0x44fefb=parseInt(_0xe22504['trunk_id'],0xa);if(isNaN(_0x44fefb)){_0x13c500=_0xe22504[_0x793e('0x111')];}else{_0x13c500=this[_0x793e('0x1d')][_0x793e('0x71')](this,_0xe22504[_0x793e('0x111')]);if(!_0x13c500){return this[_0x793e('0xd')][_0x793e('0x2c')](_0xe22504,_0x793e('0x112'));}}}}else if(_0xe22504['trunk_name']){_0x13c500=_0xe22504['trunk_name'];}else{return this[_0x793e('0xd')][_0x793e('0x2c')](_0xe22504,_0x793e('0x113'));}var _0x45fc5c=this[_0x793e('0xd')][_0x793e('0x58')]('DIAL',[util[_0x793e('0x55')](_0x793e('0x114'),_0x13c500,_0xe22504['phone']),_0xe22504[_0x793e('0x67')],_0xe22504[_0x793e('0xe8')],_0xe22504[_0x793e('0xe9')]]);if(_0x45fc5c[_0x793e('0xa4')]===-0x1){return _0x45fc5c;}return this[_0x793e('0xd')][_0x793e('0xab')](util[_0x793e('0x55')](_0x793e('0xea'),_0x793e('0xe6')));};AGIVertices['prototype']['finally']=function(_0xc380eb){logger['info'](util[_0x793e('0x55')](_0x793e('0x115'),_0xc380eb['label']));return this['channel']['noop']('finally');};AGIVertices[_0x793e('0x12')][_0x793e('0xb')]=function(_0x574a40){logger[_0x793e('0x2e')](util[_0x793e('0x55')]('Enter\x20in\x20GETDIGITS\x20(%s)\x20block',_0x574a40[_0x793e('0x38')]));if(_0x574a40['retry']===0x0){return this[_0x793e('0xa7')](_0x574a40);}_0x574a40[_0x793e('0xa8')]-=0x1;if(!this[_0x793e('0x85')](_0x574a40['file_id'])){return this[_0x793e('0xd')]['error'](_0x574a40,_0x793e('0x116'));}var _0x529c88=this[_0x793e('0x1e')][_0x793e('0x71')](this,_0x574a40['file_id']);if(!_0x529c88){return this[_0x793e('0xd')][_0x793e('0x2c')](_0x574a40,_0x793e('0x117'));}if(!this[_0x793e('0x85')](_0x574a40[_0x793e('0xdd')])){return this[_0x793e('0xd')][_0x793e('0x2c')](_0x793e('0x118'));}var _0x1511a9=this[_0x793e('0xd')][_0x793e('0x119')](_0x529c88,_0x574a40[_0x793e('0x11a')],_0x574a40[_0x793e('0x11b')]);var _0x121be3=_0x1511a9[_0x793e('0xa4')]?_0x1511a9['result']['toString']():'';logger[_0x793e('0x2e')]('test',JSON[_0x793e('0x74')](_0x1511a9));if(_0x1511a9['result']===-0x1){this[_0x793e('0x37')][_0x793e('0x71')](this,_0x574a40,_0x121be3);return _0x1511a9;}else if(_0x1511a9[_0x793e('0xa5')]===_0x793e('0x67')){_0x1511a9[_0x793e('0xa4')]=_0x121be3[_0x793e('0x9c')]>=parseInt(_0x574a40[_0x793e('0x11c')])?'x':'i';}else{_0x1511a9[_0x793e('0xa4')]=_0x121be3[_0x793e('0x9c')]>=parseInt(_0x574a40[_0x793e('0x11c')])&&_0x121be3[_0x793e('0x9c')]<=parseInt(_0x574a40[_0x793e('0x11b')])?'x':'i';}var _0x27a63f=this[_0x793e('0xa1')][_0x793e('0x71')](this,_0x574a40[_0x793e('0xdd')]);if(!_0x27a63f){return this['channel'][_0x793e('0x2c')](_0x574a40,_0x793e('0x11d'));}this[_0x793e('0xd')][_0x793e('0xa6')](_0x27a63f,_0x121be3);if(this[_0x793e('0x85')](_0x574a40[_0x793e('0x11e')])){var _0x431c62=parseInt(_0x574a40['hiddendigitsnum'],0xa);var _0xb2ee6e=rs['generate']({'charset':'*','length':_0x431c62});var _0x35380b=_0x121be3[_0x793e('0x9c')];if(_0x35380b>0x0){if(_0x35380b>_0x431c62){this[_0x793e('0x37')][_0x793e('0x71')](this,_0x574a40,_0x574a40[_0x793e('0x11f')]===_0x793e('0x120')?_0xb2ee6e+_0x121be3['substr'](_0x431c62):_0x121be3['substr'](0x0,_0x35380b-_0x431c62)+_0xb2ee6e);}else{this['createSquareDetailsReport']['sync'](this,_0x574a40,rs[_0x793e('0x121')]({'charset':'*','length':_0x35380b}));}}else{this[_0x793e('0x37')][_0x793e('0x71')](this,_0x574a40,'');}}else{this['createSquareDetailsReport'][_0x793e('0x71')](this,_0x574a40,_0x121be3);}return _0x1511a9;};AGIVertices['prototype'][_0x793e('0xc')]=function(_0x4fc671){logger[_0x793e('0x2e')](util[_0x793e('0x55')](_0x793e('0x122'),_0x4fc671[_0x793e('0x38')]));return this['getdigits'](_0x4fc671);};AGIVertices[_0x793e('0x12')][_0x793e('0x123')]=function(_0x23f909){logger['info'](util[_0x793e('0x55')](_0x793e('0x124'),_0x23f909[_0x793e('0x38')]));this[_0x793e('0x37')][_0x793e('0x71')](this,_0x23f909,_0x23f909[_0x793e('0x125')]);return this['channel']['noop'](util[_0x793e('0x55')]('GOAL\x20%s',_0x23f909['goalname']));};AGIVertices['prototype'][_0x793e('0x126')]=function(_0x1efa23){logger[_0x793e('0x2e')](util[_0x793e('0x55')](_0x793e('0x127'),_0x1efa23[_0x793e('0x38')]));if(!this['isConfigured'](_0x1efa23[_0x793e('0x88')])||!this['isConfigured'](_0x1efa23[_0x793e('0x89')])){return this[_0x793e('0xd')][_0x793e('0xab')]('no\x20valid\x20credentials\x20configured');}if(!this[_0x793e('0x85')](_0x1efa23[_0x793e('0x5d')])){return this[_0x793e('0xd')]['noop'](_0x793e('0xac'));}this[_0x793e('0xd')][_0x793e('0xab')](util[_0x793e('0x55')](_0x793e('0x128'),_0x1efa23[_0x793e('0x5d')]));var _0x37e83d=this[_0x793e('0x87')][_0x793e('0x71')](this,_0x1efa23);if(_0x37e83d){this['channel'][_0x793e('0xab')](util[_0x793e('0x55')](_0x793e('0x129'),_0x37e83d));var _0x160227=this[_0x793e('0xd')]['streamFile'](_0x37e83d);try{fs[_0x793e('0x109')](_0x37e83d+_0x793e('0x10a'));}catch(_0x22c41d){logger[_0x793e('0x2c')](_0x22c41d);}return _0x160227;}return this[_0x793e('0xd')][_0x793e('0x2c')](_0x1efa23,'aws\x20Polly\x20is\x20unreachable');};AGIVertices[_0x793e('0x12')]['awslex']=function(_0x1a4f63){logger[_0x793e('0x2e')](util[_0x793e('0x55')](_0x793e('0x12a'),_0x1a4f63[_0x793e('0x38')]));if(!this[_0x793e('0x85')](_0x1a4f63[_0x793e('0x88')])||!this['isConfigured'](_0x1a4f63[_0x793e('0x89')])){return this[_0x793e('0xd')][_0x793e('0xab')](_0x793e('0x12b'));}if(!this[_0x793e('0x85')](_0x1a4f63[_0x793e('0x90')])){return this[_0x793e('0xd')]['noop'](_0x793e('0x12c'));}if(!this[_0x793e('0x85')](_0x1a4f63['text'])){return this[_0x793e('0xd')][_0x793e('0xab')](_0x793e('0xac'));}this[_0x793e('0xd')][_0x793e('0xed')]=!![];this[_0x793e('0x37')](_0x1a4f63);this['createSquareMessage'](_0x1a4f63['text'],'in','','');this[_0x793e('0xd')][_0x793e('0xab')](util[_0x793e('0x55')](_0x793e('0x12d'),_0x1a4f63['text']));var _0x108bc4=this[_0x793e('0x8e')]['sync'](this,_0x1a4f63);if(_0x108bc4){for(var _0xf4ee22 in _0x108bc4){if(_0x108bc4[_0x793e('0x95')](_0xf4ee22)&&_[_0x793e('0x96')](_0x108bc4[_0xf4ee22])){this[_0x793e('0xd')][_0x793e('0xa6')](util['format'](_0x793e('0x12e'),_0xf4ee22[_0x793e('0x69')]()),_0x108bc4[_0xf4ee22]);}}if(_[_0x793e('0x52')](_0x108bc4[_0x793e('0x77')])){return this[_0x793e('0xd')][_0x793e('0xab')](_0x793e('0x12f'));}else{this['createSquareMessage'](_0x108bc4['message'],'out','amazonlex','');return this[_0x793e('0xd')]['noop'](util['format'](_0x793e('0x130'),_0x108bc4[_0x793e('0x77')]));}}return this[_0x793e('0xd')][_0x793e('0x2c')](_0x1a4f63,_0x793e('0x131'));};AGIVertices[_0x793e('0x12')][_0x793e('0x132')]=function(_0x5bde2f){logger[_0x793e('0x2e')](util['format'](_0x793e('0x133'),_0x5bde2f[_0x793e('0x38')],_0x5bde2f[_0x793e('0x67')]));if(!this[_0x793e('0x85')](_0x5bde2f[_0x793e('0x7b')])){return this[_0x793e('0xd')][_0x793e('0xab')]('no\x20key\x20configured');}var _0x49c167=_0x793e('0x134');var _0x4f4fc8=util[_0x793e('0x55')](_0x793e('0x135'),FILES_PATH,rs[_0x793e('0x121')](0x4));var _0x199f2a=util[_0x793e('0x55')](_0x793e('0x9e'),_0x4f4fc8,_0x49c167);var _0x4cd9ea=!![];if(_0x5bde2f[_0x793e('0x136')]===_0x793e('0x137')){_0x4cd9ea=![];}var _0x105c97=this[_0x793e('0xd')]['recordFile'](_0x4f4fc8,_0x49c167,_0x5bde2f[_0x793e('0x138')],_0x5bde2f[_0x793e('0x67')],undefined,_0x4cd9ea);if(_0x105c97[_0x793e('0xa4')]!==-0x1){this[_0x793e('0xd')][_0x793e('0xab')](util[_0x793e('0x55')](_0x793e('0x139'),_0x199f2a));var _0x57b17c=this[_0x793e('0x91')][_0x793e('0x71')](this,_0x5bde2f,_0x199f2a);if(_0x57b17c){for(var _0x46fe8d in _0x57b17c){if(_0x57b17c[_0x793e('0x95')](_0x46fe8d)){this[_0x793e('0xd')][_0x793e('0xa6')](util[_0x793e('0x55')](_0x793e('0x13a'),_0x46fe8d[_0x793e('0x69')]()),_0x57b17c[_0x46fe8d]);}}return this[_0x793e('0xd')][_0x793e('0xab')](util[_0x793e('0x55')](_0x793e('0x13b'),JSON[_0x793e('0x74')](_0x57b17c)));}}return _0x105c97;};AGIVertices[_0x793e('0x12')]['tildeasr']=function(_0x428e3){logger['info'](util[_0x793e('0x55')](_0x793e('0x13c'),_0x428e3[_0x793e('0x38')]));if(!this[_0x793e('0x85')](_0x428e3['appid'])){return this[_0x793e('0xd')][_0x793e('0xab')](_0x793e('0x13d'));}if(!this[_0x793e('0x85')](_0x428e3[_0x793e('0x93')])){return this['channel'][_0x793e('0xab')](_0x793e('0x13e'));}var _0x57cb2c='wav';var _0x1fc771=util['format'](_0x793e('0x135'),FILES_PATH,rs[_0x793e('0x121')](0x4));var _0x1f3d42=util[_0x793e('0x55')](_0x793e('0x9e'),_0x1fc771,_0x57cb2c);var _0x4593b8=!![];if(_0x428e3['beep']===_0x793e('0x137')){_0x4593b8=![];}var _0x3a43f9=this['channel'][_0x793e('0x13f')](_0x1fc771,_0x57cb2c,_0x428e3['intKey'],_0x428e3[_0x793e('0x67')],undefined,_0x4593b8);if(_0x3a43f9[_0x793e('0xa4')]!==-0x1){this[_0x793e('0xd')][_0x793e('0xab')](util['format'](_0x793e('0x140'),_0x1f3d42));var _0x4a4549=this[_0x793e('0x92')][_0x793e('0x71')](this,_0x428e3,_0x1f3d42);if(_0x4a4549){for(var _0x330990 in _0x4a4549){if(_0x4a4549['hasOwnProperty'](_0x330990)){this[_0x793e('0xd')][_0x793e('0xa6')](util[_0x793e('0x55')]('TILDE_ASR_%s',_0x330990['toUpperCase']()),_0x4a4549[_0x330990]);}}return this[_0x793e('0xd')][_0x793e('0xab')](util[_0x793e('0x55')](_0x793e('0x141'),JSON['stringify'](_0x4a4549)));}}return _0x3a43f9;};AGIVertices[_0x793e('0x12')][_0x793e('0x142')]=function(_0x32657c){logger[_0x793e('0x2e')](util[_0x793e('0x55')](_0x793e('0x143'),_0x32657c[_0x793e('0x38')]));return this[_0x793e('0xd')][_0x793e('0x144')](_0x32657c[_0x793e('0x3f')],_0x32657c[_0x793e('0x145')],_0x32657c[_0x793e('0x146')]);};AGIVertices[_0x793e('0x12')][_0x793e('0x147')]=function(_0x43ae67){logger[_0x793e('0x2e')](util[_0x793e('0x55')]('Enter\x20in\x20GOTOIF\x20(%s)\x20block',_0x43ae67['label']));if(!this[_0x793e('0x85')](_0x43ae67['condition'])){return this['channel'][_0x793e('0x2c')](_0x43ae67,'no\x20condition\x20configured');}try{var _0x20ab84=eval(_0x43ae67[_0x793e('0x148')])?_0x793e('0x149'):_0x793e('0x14a');this[_0x793e('0xd')]['noop'](util['format'](_0x793e('0x14b'),_0x43ae67['condition'],_0x20ab84));return{'code':0xc8,'result':_0x20ab84};}catch(_0x551b2f){return{'code':0xc8,'result':_0x793e('0x14a')};}};AGIVertices[_0x793e('0x12')]['gotoiftime']=function(_0x5f36fe){logger[_0x793e('0x2e')](util[_0x793e('0x55')]('Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block',_0x5f36fe[_0x793e('0x38')]));if(!this[_0x793e('0x85')](_0x5f36fe[_0x793e('0x14c')])){return this[_0x793e('0xd')][_0x793e('0x2c')](_0x5f36fe,_0x793e('0x14d'));}var _0x554c6c=this['getIntervals'][_0x793e('0x71')](this,_0x5f36fe['interval_id']);if(!_0x554c6c){return this[_0x793e('0xd')]['error'](_0x5f36fe,'no\x20intervals\x20found');}for(var _0x2a9f89=0x0;_0x2a9f89<_0x554c6c[_0x793e('0x9c')];_0x2a9f89+=0x1){var _0x505e67=this[_0x793e('0xd')][_0x793e('0xa1')](util[_0x793e('0x55')](_0x793e('0x14e'),_0x554c6c[_0x2a9f89]));if(_0x505e67[_0x793e('0xa4')]===-0x1){return _0x505e67;}logger[_0x793e('0x2e')](util['format'](_0x793e('0x14f'),_0x554c6c[_0x2a9f89],_0x505e67['extra']));if(_0x505e67[_0x793e('0xa5')]===_0x793e('0x149')){logger[_0x793e('0x2e')](util[_0x793e('0x55')](_0x793e('0x14f'),_0x554c6c[_0x2a9f89],_0x793e('0x149')));this[_0x793e('0xd')][_0x793e('0xab')](util[_0x793e('0x55')](_0x793e('0x14f'),_0x554c6c[_0x2a9f89],'true'));return{'code':0xc8,'result':_0x793e('0x149')};}else{logger[_0x793e('0x2e')](util[_0x793e('0x55')]('IFTIME\x20%s\x20%s',_0x554c6c[_0x2a9f89],_0x793e('0x14a')));this['channel'][_0x793e('0xab')](util[_0x793e('0x55')](_0x793e('0x14f'),_0x554c6c[_0x2a9f89],_0x793e('0x14a')));}}return{'code':0xc8,'result':_0x793e('0x14a')};};AGIVertices[_0x793e('0x12')]['hangup']=function(_0x7e6ab0){logger['info'](util[_0x793e('0x55')]('Enter\x20in\x20HANGUP\x20(%s)\x20block',_0x7e6ab0[_0x793e('0x38')]));return this[_0x793e('0xd')][_0x793e('0x150')]();};AGIVertices[_0x793e('0x12')][_0x793e('0x151')]=function(_0x551d70){logger[_0x793e('0x2e')](util[_0x793e('0x55')](_0x793e('0x152'),_0x551d70[_0x793e('0x38')]));if(!this[_0x793e('0x85')](_0x551d70[_0x793e('0x7b')])){return this['channel']['noop'](_0x793e('0xec'));}var _0x31f226=_0x793e('0x134');var _0x411ca1=util[_0x793e('0x55')]('%s/recordings/%s',FILES_PATH,rs['generate'](0x4));var _0x49c064=util[_0x793e('0x55')](_0x793e('0x9e'),_0x411ca1,_0x31f226);var _0x1e1086=!![];if(_0x551d70[_0x793e('0x136')]==='NOBEEP'){_0x1e1086=![];}var _0x79b97b=this[_0x793e('0xd')][_0x793e('0x13f')](_0x411ca1,_0x31f226,_0x551d70[_0x793e('0x138')],_0x551d70[_0x793e('0x67')],undefined,_0x1e1086);if(_0x79b97b[_0x793e('0xa4')]!==-0x1){this[_0x793e('0xd')][_0x793e('0xab')](util[_0x793e('0x55')](_0x793e('0x153'),_0x49c064));var _0x33e20c=this['ispeechASR'][_0x793e('0x71')](this,_0x551d70,_0x49c064);if(_0x33e20c){for(var _0xa04c29 in _0x33e20c){if(_0x33e20c[_0x793e('0x95')](_0xa04c29)){this[_0x793e('0xd')][_0x793e('0xa6')](util[_0x793e('0x55')](_0x793e('0x154'),_0xa04c29[_0x793e('0x69')]()),_0x33e20c[_0xa04c29]);}}return this[_0x793e('0xd')]['noop'](util[_0x793e('0x55')](_0x793e('0x155'),JSON['stringify'](_0x33e20c)));}}return _0x79b97b;};AGIVertices[_0x793e('0x12')]['ispeechtts']=function(_0x28e49a){logger[_0x793e('0x2e')](util[_0x793e('0x55')]('Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block',_0x28e49a[_0x793e('0x38')]));if(!this[_0x793e('0x85')](_0x28e49a[_0x793e('0x7b')])){return this[_0x793e('0xd')][_0x793e('0xab')](_0x793e('0xec'));}if(!this[_0x793e('0x85')](_0x28e49a[_0x793e('0x5d')])){return this['channel'][_0x793e('0xab')](_0x793e('0xac'));}this[_0x793e('0xd')][_0x793e('0xab')](util[_0x793e('0x55')](_0x793e('0x156'),_0x28e49a[_0x793e('0x5d')]));var _0x2908ee=this[_0x793e('0x82')][_0x793e('0x71')](this,_0x28e49a);if(_0x2908ee){this[_0x793e('0xd')]['noop'](util['format'](_0x793e('0x153'),_0x2908ee));var _0x15b41d=this[_0x793e('0xd')][_0x793e('0x157')](_0x2908ee,_0x28e49a[_0x793e('0x138')]);try{fs[_0x793e('0x109')](_0x2908ee+_0x793e('0x10a'));}catch(_0x462ae2){logger[_0x793e('0x2c')](_0x462ae2);}return _0x15b41d;}return this[_0x793e('0xd')][_0x793e('0x2c')](_0x28e49a,_0x793e('0x158'));};AGIVertices[_0x793e('0x12')]['login']=function(_0x12f45e){logger[_0x793e('0x2e')](util[_0x793e('0x55')]('Enter\x20in\x20LOGIN\x20(%s)\x20block',_0x12f45e[_0x793e('0x38')]));if(!this[_0x793e('0x85')](_0x12f45e['findBy'])){return this['channel'][_0x793e('0x2c')](_0x12f45e,'no\x20find\x20by\x20configured');}logger[_0x793e('0x2e')](util[_0x793e('0x55')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x793e('0xd')][_0x793e('0x3b')],_0x12f45e[_0x793e('0x159')]));var _0xa5c92d=this[_0x793e('0x53')][_0x793e('0x71')](this,_0x12f45e['findBy']);if(_0xa5c92d){logger[_0x793e('0x2e')](util[_0x793e('0x55')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0x793e('0x3b')],_0x12f45e['findBy']));this['channel']['noop'](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0x793e('0xd')][_0x793e('0x3b')],_0x12f45e[_0x793e('0x159')]));return{'code':0xc8,'result':_0x793e('0x15a')};}else{logger[_0x793e('0x2e')](util['format'](_0x793e('0x15b'),this[_0x793e('0xd')]['callerid'],_0x12f45e[_0x793e('0x159')]));this[_0x793e('0xd')]['noop'](util['format'](_0x793e('0x15b'),this[_0x793e('0xd')][_0x793e('0x3b')],_0x12f45e[_0x793e('0x159')]));return{'code':0xc8,'result':_0x793e('0x15c')};}};AGIVertices[_0x793e('0x12')][_0x793e('0x15d')]=function(_0x30bbf1){logger[_0x793e('0x2e')](util[_0x793e('0x55')](_0x793e('0x15e'),_0x30bbf1[_0x793e('0x38')]));if(!this[_0x793e('0x85')](_0x30bbf1[_0x793e('0x159')])){return this[_0x793e('0xd')][_0x793e('0x2c')](_0x30bbf1,_0x793e('0x15f'));}logger['info'](util[_0x793e('0x55')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x793e('0xd')][_0x793e('0x3b')],_0x30bbf1[_0x793e('0x159')]));var _0x12e11e=this[_0x793e('0x51')][_0x793e('0x71')](this,_0x30bbf1['findBy']);if(_0x12e11e){logger['info'](util[_0x793e('0x55')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0x793e('0x3b')],_0x30bbf1[_0x793e('0x159')]));this[_0x793e('0xd')][_0x793e('0xab')](util[_0x793e('0x55')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x793e('0xd')]['callerid'],_0x30bbf1[_0x793e('0x159')]));return{'code':0xc8,'result':_0x793e('0x15a')};}else{logger[_0x793e('0x2e')](util[_0x793e('0x55')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x793e('0xd')]['callerid'],_0x30bbf1[_0x793e('0x159')]));this['channel']['noop'](util[_0x793e('0x55')](_0x793e('0x15b'),this[_0x793e('0xd')]['callerid'],_0x30bbf1[_0x793e('0x159')]));return{'code':0xc8,'result':_0x793e('0x15c')};}};AGIVertices[_0x793e('0x12')][_0x793e('0x160')]=function(_0x4beabb){logger[_0x793e('0x2e')](util['format']('Enter\x20in\x20MATH\x20(%s)\x20block',_0x4beabb['label']));if(!this[_0x793e('0x85')](_0x4beabb['operation'])){return this['channel'][_0x793e('0x2c')](_0x4beabb,_0x793e('0x161'));}this[_0x793e('0xd')][_0x793e('0xab')](util[_0x793e('0x55')]('math\x20%s',_0x4beabb[_0x793e('0x162')]));var _0x58330d=eval(_0x4beabb['operation']);if(!this[_0x793e('0x85')](_0x4beabb[_0x793e('0xdd')])){return this[_0x793e('0xd')][_0x793e('0xab')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x14cf25=this[_0x793e('0xa1')][_0x793e('0x71')](this,_0x4beabb['variable_id']);if(!_0x14cf25){return this['channel']['error'](_0x4beabb,'no\x20variable\x20found');}if(_[_0x793e('0x9b')](_0x58330d)){var _0x180ca4=this;_0x58330d['forEach'](function(_0x151eb1,_0x3ac789){_0x180ca4[_0x793e('0xd')][_0x793e('0xa6')](util[_0x793e('0x55')]('%s[%s]',_0x14cf25,_0x3ac789),_0x151eb1);});return this[_0x793e('0xd')]['noop'](util[_0x793e('0x55')](_0x793e('0x163'),_0x14cf25));}else{return this['channel'][_0x793e('0xa6')](_0x14cf25,_0x58330d);}};AGIVertices[_0x793e('0x12')]['menu']=function(_0x49e160){logger[_0x793e('0x2e')](util[_0x793e('0x55')](_0x793e('0x164'),_0x49e160['label']));if(_0x49e160['retry']===0x0){return this[_0x793e('0xa7')](_0x49e160);}_0x49e160[_0x793e('0xa8')]-=0x1;if(!this['isConfigured'](_0x49e160['file_id'])){return this[_0x793e('0xd')][_0x793e('0x2c')](_0x49e160,'no\x20file\x20audio\x20selected');}var _0x10c1e3=this[_0x793e('0x1e')]['sync'](this,_0x49e160[_0x793e('0x165')]);if(!_0x10c1e3){return this[_0x793e('0xd')][_0x793e('0x2c')](_0x49e160,_0x793e('0x117'));}var _0x2e732b=this['channel']['getData'](_0x10c1e3,_0x49e160[_0x793e('0x11a')],_0x49e160['digit']);var _0x4c32ae=_0x2e732b[_0x793e('0xa4')];if(_0x2e732b[_0x793e('0xa4')]===-0x1){this['createSquareDetailsReport'][_0x793e('0x71')](this,_0x49e160,'-1');return _0x2e732b;}else if(_0x2e732b[_0x793e('0xa5')]==='timeout'){_0x2e732b[_0x793e('0xa4')]=_0x2e732b[_0x793e('0xa4')][_0x793e('0x9c')]>0x0?_0x2e732b['result']:'t';}else if(_[_0x793e('0x45')](_0x2e732b[_0x793e('0xa4')])){_0x2e732b[_0x793e('0xa4')]='#';_0x4c32ae='#';}if(!this[_0x793e('0x85')](_0x49e160[_0x793e('0xdd')])){this['channel'][_0x793e('0xab')](_0x793e('0x118'));}else{var _0x302fd6=this[_0x793e('0xa1')]['sync'](this,_0x49e160[_0x793e('0xdd')]);if(!_0x302fd6){return this[_0x793e('0xd')][_0x793e('0x2c')](_0x49e160,'no\x20variable\x20found');}this[_0x793e('0xd')]['setVariable'](_0x302fd6,_0x4c32ae);}this[_0x793e('0x37')][_0x793e('0x71')](this,_0x49e160,_0x4c32ae);return _0x2e732b;};AGIVertices[_0x793e('0x12')][_0x793e('0xab')]=function(_0x981688){logger[_0x793e('0x2e')](util[_0x793e('0x55')](_0x793e('0x166'),_0x981688[_0x793e('0x38')]));return this['channel'][_0x793e('0xab')](_0x981688['output']||_0x981688[_0x793e('0x38')]);};AGIVertices[_0x793e('0x12')][_0x793e('0x167')]=function(_0x61cb98){logger['info'](util['format'](_0x793e('0x168'),_0x61cb98[_0x793e('0x38')]));if(!this[_0x793e('0x85')](_0x61cb98['findBy'])){return this[_0x793e('0xd')][_0x793e('0x2c')](_0x61cb98,_0x793e('0x15f'));}logger[_0x793e('0x2e')](util['format']('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x793e('0xd')][_0x793e('0x3b')],_0x61cb98['findBy']));var _0x582426=this[_0x793e('0x4c')][_0x793e('0x71')](this,_0x61cb98[_0x793e('0x169')]);var _0x5295da=this['agentPause'][_0x793e('0x71')](this,_0x61cb98[_0x793e('0x159')],_0x582426);if(_0x5295da){logger['info'](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0x793e('0xd')]['callerid'],_0x61cb98[_0x793e('0x159')]));this['channel'][_0x793e('0xab')](util[_0x793e('0x55')](_0x793e('0x16a'),this[_0x793e('0xd')][_0x793e('0x3b')],_0x61cb98['findBy']));return{'code':0xc8,'result':_0x793e('0x15a')};}else{logger[_0x793e('0x2e')](util['format'](_0x793e('0x15b'),this[_0x793e('0xd')][_0x793e('0x3b')],_0x61cb98['findBy']));this[_0x793e('0xd')][_0x793e('0xab')](util[_0x793e('0x55')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x793e('0xd')][_0x793e('0x3b')],_0x61cb98[_0x793e('0x159')]));return{'code':0xc8,'result':_0x793e('0x15c')};}};AGIVertices[_0x793e('0x12')][_0x793e('0x16b')]=function(_0x2f4ead){logger[_0x793e('0x2e')](util[_0x793e('0x55')](_0x793e('0x16c'),_0x2f4ead[_0x793e('0x38')]));if(!this['isConfigured'](_0x2f4ead[_0x793e('0x165')])){return this[_0x793e('0xd')][_0x793e('0x2c')](_0x2f4ead,_0x793e('0x116'));}var _0x2ae5e9=this[_0x793e('0x1e')]['sync'](this,_0x2f4ead[_0x793e('0x165')]);if(!_0x2ae5e9){return this['channel']['error'](_0x2f4ead,'no\x20file\x20audio\x20found');}var _0x2f9afd=this[_0x793e('0xd')][_0x793e('0x58')](_0x793e('0x16d'),[_0x2ae5e9,_0x2f4ead['opts']]);if(_0x2f9afd[_0x793e('0xa4')]===-0x1){return _0x2f9afd;}return this[_0x793e('0xd')]['noop'](util['format'](_0x793e('0xc7'),_0x793e('0x16d'),_0x2ae5e9));};AGIVertices[_0x793e('0x12')]['queue']=function(_0x44f8a6){logger[_0x793e('0x2e')](util[_0x793e('0x55')]('Enter\x20in\x20QUEUE\x20(%s)\x20block',_0x44f8a6['label']));if(!this[_0x793e('0x85')](_0x44f8a6['queue_id'])){return this[_0x793e('0xd')][_0x793e('0x2c')](_0x44f8a6,_0x793e('0x16e'));}var _0x5aade5='';var _0x38fa6e=parseInt(_0x44f8a6[_0x793e('0x16f')],0xa);if(isNaN(_0x38fa6e)){_0x5aade5=_0x44f8a6[_0x793e('0x16f')];}else{_0x5aade5=this[_0x793e('0x13')][_0x793e('0x71')](this,_0x44f8a6[_0x793e('0x16f')]);if(!_0x5aade5){return this[_0x793e('0xd')][_0x793e('0x2c')](_0x44f8a6,'no\x20queue\x20found');}}var _0x52211e='';if(this[_0x793e('0x85')](_0x44f8a6[_0x793e('0x165')])){var _0x57ce98=this[_0x793e('0x1e')][_0x793e('0x71')](this,_0x44f8a6[_0x793e('0x165')]);if(_0x57ce98){_0x52211e=_0x57ce98;}}this['createSquareDetailsReport'][_0x793e('0x71')](this,_0x44f8a6,_0x5aade5);if(_0x44f8a6[_0x793e('0xe8')]['indexOf']('x')<0x0){_0x44f8a6[_0x793e('0xe8')]+='x';}if(_0x44f8a6[_0x793e('0xe8')][_0x793e('0x170')]('X')<0x0){_0x44f8a6[_0x793e('0xe8')]+='X';}this[_0x793e('0xd')][_0x793e('0xa6')](_0x793e('0x171'),_0x5aade5?_0x5aade5[_0x793e('0x172')]():'');var _0x4af378=this['channel']['exec']('QUEUE',[_0x5aade5,_0x44f8a6[_0x793e('0xe8')],_0x44f8a6[_0x793e('0xe9')],_0x52211e,_0x44f8a6[_0x793e('0x67')],_0x44f8a6[_0x793e('0xb9')],_0x44f8a6[_0x793e('0x173')],_0x44f8a6[_0x793e('0x174')],'',_0x44f8a6[_0x793e('0x175')]]);if(_0x4af378[_0x793e('0xa4')]===-0x1){return _0x4af378;}return this['channel']['noop'](util[_0x793e('0x55')]('Executed\x20command\x20%s\x20%s',_0x793e('0x176'),_0x5aade5));};AGIVertices[_0x793e('0x12')][_0x793e('0x177')]=function(_0x4b8a51){logger[_0x793e('0x2e')](util[_0x793e('0x55')]('Enter\x20in\x20RECORD\x20(%s)\x20block',_0x4b8a51[_0x793e('0x38')]));var _0x1131d0=_0x4b8a51[_0x793e('0x178')]||_0x793e('0x134');var _0x3e480a=util[_0x793e('0x55')](_0x793e('0x179'),this['channel'][_0x793e('0x3d')],rs[_0x793e('0x121')](0x5));var _0x261746=util[_0x793e('0x55')](_0x793e('0x17a'),FILES_PATH,_0x3e480a,_0x1131d0);var _0x5c99a6=util['format'](_0x793e('0x135'),FILES_PATH,_0x3e480a);this[_0x793e('0x3c')][_0x793e('0x71')](this,_0x4b8a51,_0x3e480a,_0x261746);this[_0x793e('0xd')][_0x793e('0xa6')](_0x793e('0x17b'),_0x3e480a);logger[_0x793e('0x2e')](_0x793e('0x17c'),_0x5c99a6,_0x1131d0,_0x4b8a51[_0x793e('0x17d')],_0x4b8a51[_0x793e('0x67')]);return this['channel']['recordFile'](_0x5c99a6,_0x1131d0,_0x4b8a51[_0x793e('0x17d')],_0x4b8a51[_0x793e('0x67')],undefined,!![]);};AGIVertices[_0x793e('0x12')][_0x793e('0x17e')]=function(_0x57658a){logger[_0x793e('0x2e')](util[_0x793e('0x55')](_0x793e('0x17f'),_0x57658a[_0x793e('0x38')]));if(!this[_0x793e('0x85')](_0x57658a[_0x793e('0xe9')])){return this[_0x793e('0xd')][_0x793e('0xab')](_0x793e('0x180'));}var _0x1af5e5=this['restAPI']['sync'](this,_0x57658a);logger[_0x793e('0x2e')](util[_0x793e('0x55')](_0x793e('0x181'),util[_0x793e('0x182')](_0x1af5e5,{'showHidden':![],'depth':null})));if(!this['isConfigured'](_0x57658a[_0x793e('0xdd')])){return this['channel'][_0x793e('0xab')](_0x793e('0x183'));}var _0x24a178=this[_0x793e('0xa1')][_0x793e('0x71')](this,_0x57658a['variable_id']);if(!_0x24a178){return this[_0x793e('0xd')]['error'](_0x57658a,'no\x20variable\x20found');}this[_0x793e('0xd')]['setVariable'](util[_0x793e('0x55')](_0x793e('0x184'),_0x24a178),_0x1af5e5[_0x793e('0x76')]?_0x1af5e5[_0x793e('0x76')]:_0x793e('0x185'));this['channel'][_0x793e('0xa6')](util[_0x793e('0x55')]('%s_STATUS_MESSAGE',_0x24a178),_0x1af5e5[_0x793e('0x186')]?_0x1af5e5[_0x793e('0x186')]:'OK');if(_0x1af5e5[_0x793e('0x6a')]){try{this[_0x793e('0x9d')](_0x1af5e5['body'],_0x24a178);}catch(_0x237334){logger[_0x793e('0x2c')](util[_0x793e('0x55')](_0x793e('0x187'),_0x24a178));}}return this['channel']['noop'](util['format']('variable\x20%s\x20set',_0x24a178));};AGIVertices[_0x793e('0x12')][_0x793e('0x188')]=function(_0x2899ea){logger[_0x793e('0x2e')](util['format'](_0x793e('0x189'),_0x2899ea['label']));return this[_0x793e('0xd')]['sayDigits'](_0x2899ea[_0x793e('0x18a')][_0x793e('0xdb')](/\s+/g,''),_0x2899ea[_0x793e('0x17d')]);};AGIVertices[_0x793e('0x12')][_0x793e('0x18b')]=function(_0x1afea0){logger['info'](util[_0x793e('0x55')](_0x793e('0x18c'),_0x1afea0['label']));return this[_0x793e('0xd')][_0x793e('0x18d')](_0x1afea0[_0x793e('0x66')][_0x793e('0xdb')](/\s+/g,''),_0x1afea0['escape_digits']);};AGIVertices[_0x793e('0x12')][_0x793e('0x18e')]=function(_0x1addd6){logger['info'](util[_0x793e('0x55')](_0x793e('0x18f'),_0x1addd6['label']));return this[_0x793e('0xd')][_0x793e('0x190')](_0x1addd6[_0x793e('0x5d')],_0x1addd6[_0x793e('0x17d')]);};AGIVertices['prototype'][_0x793e('0x191')]=function(_0x1a1807){logger[_0x793e('0x2e')](util[_0x793e('0x55')](_0x793e('0x192'),_0x1a1807[_0x793e('0x38')]));if(!this['isConfigured'](_0x1a1807['account_id'])){return this[_0x793e('0xd')]['noop'](_0x793e('0x193'));}var _0x99fbb=this[_0x793e('0x21')][_0x793e('0x71')](this,_0x1a1807[_0x793e('0x194')]);if(!_0x99fbb||!_0x99fbb['Smtp']){return this[_0x793e('0xd')][_0x793e('0x2c')](_0x1a1807,_0x793e('0x195'));}var _0x174d61={'from':util[_0x793e('0x55')](_0x793e('0x196'),_0x99fbb[_0x793e('0x15')],_0x99fbb['email']||_0x99fbb[_0x793e('0x197')][_0x793e('0x198')]),'to':_0x1a1807['to']||'','cc':_0x1a1807['cc']||'','bcc':_0x1a1807[_0x793e('0x199')]||'','subject':_0x1a1807[_0x793e('0x19a')],'html':_0x1a1807[_0x793e('0x5d')],'text':_0x1a1807[_0x793e('0x5d')]};if(this[_0x793e('0x85')](_0x1a1807[_0x793e('0x19b')])){}logger[_0x793e('0xe2')]('sendMail\x20message',JSON[_0x793e('0x74')](_0x174d61));this[_0x793e('0x37')][_0x793e('0x71')](this,_0x1a1807,_0x1a1807[_0x793e('0x194')]);this[_0x793e('0xd')][_0x793e('0xab')](util['format'](_0x793e('0x19c'),_0x99fbb[_0x793e('0x15')]));this[_0x793e('0x22')][_0x793e('0x71')](this,_0x99fbb[_0x793e('0x19d')],_0x174d61);return this[_0x793e('0xd')][_0x793e('0xab')](_0x793e('0x19e'));};AGIVertices[_0x793e('0x12')]['sendFax']=function(_0x293b04){logger['info'](util['format'](_0x793e('0x19f'),_0x293b04['label']));return this[_0x793e('0xd')]['noop'](_0x793e('0x1a0'));};AGIVertices[_0x793e('0x12')][_0x793e('0x1a1')]=function(_0x23e918){logger['info'](util['format'](_0x793e('0x1a2'),_0x23e918['label']));if(!this[_0x793e('0x85')](_0x23e918[_0x793e('0x1a3')])){return this[_0x793e('0xd')]['noop']('no\x20sms\x20account\x20configured');}var _0x212fe0=this[_0x793e('0x34')][_0x793e('0x71')](this,_0x23e918[_0x793e('0x1a3')]);if(!_0x212fe0){return this[_0x793e('0xd')]['error'](_0x23e918,'no\x20sms\x20account\x20found');}var _0x4357c3={'body':_0x23e918[_0x793e('0x1a4')],'phone':_0x23e918['to']||'','SmsAccountId':_0x212fe0['id']};logger['debug']('sendSMS\x20message',JSON[_0x793e('0x74')](_0x4357c3));this['createSquareDetailsReport'][_0x793e('0x71')](this,_0x23e918,_0x23e918[_0x793e('0x1a3')]);this['channel'][_0x793e('0xab')](util[_0x793e('0x55')]('Trying\x20SendSMS\x20with\x20account\x20%s',_0x212fe0[_0x793e('0x15')]));this[_0x793e('0x36')][_0x793e('0x71')](this,_0x4357c3);return this['channel'][_0x793e('0xab')]('Sms\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices['prototype'][_0x793e('0x1a5')]=function(_0x20f817){logger['info'](util[_0x793e('0x55')]('Enter\x20in\x20SET\x20(%s)\x20block',_0x20f817[_0x793e('0x38')]));if(!this[_0x793e('0x85')](_0x20f817[_0x793e('0xdd')])){return this[_0x793e('0xd')][_0x793e('0x2c')](_0x20f817,_0x793e('0x1a6'));}var _0x59a3a9=this['getVariable'][_0x793e('0x71')](this,_0x20f817['variable_id']);if(!_0x59a3a9){return this[_0x793e('0xd')][_0x793e('0x2c')](_0x20f817,'no\x20variable\x20found');}return this[_0x793e('0xd')]['setVariable'](_0x59a3a9,_0x20f817[_0x793e('0x1a7')]);};AGIVertices['prototype'][_0x793e('0x1a8')]=function(_0x5cd8b6){logger[_0x793e('0x2e')](util['format'](_0x793e('0x1a9'),_0x5cd8b6[_0x793e('0x38')]));this['channel']['noop'](_0x793e('0x1aa'));if(_0x5cd8b6['answer']==='yes'){this['channel'][_0x793e('0xab')](_0x793e('0x1ab'));return this[_0x793e('0xd')]['answer']();}return this[_0x793e('0xd')]['noop'](_0x793e('0x1ac'));};AGIVertices[_0x793e('0x12')]['subproject']=function(_0x31494a){logger[_0x793e('0x2e')](util[_0x793e('0x55')]('Enter\x20in\x20SUBPROJECT\x20(%s)\x20block',_0x31494a[_0x793e('0x38')]));if(!this[_0x793e('0x85')](_0x31494a[_0x793e('0x1ad')])){return this[_0x793e('0xd')]['error'](_0x31494a,_0x793e('0x1ae'));}var _0x203189=this[_0x793e('0x16')]['sync'](this,_0x31494a[_0x793e('0x1ad')]);if(!this['isConfigured'](_0x203189)){return this[_0x793e('0xd')][_0x793e('0x2c')](_0x31494a,util[_0x793e('0x55')]('no\x20subproject\x20found\x20with\x20id\x20%d',_0x31494a[_0x793e('0x1ad')]));}if(_0x203189===this[_0x793e('0xd')][_0x793e('0x3a')]){return this[_0x793e('0xd')][_0x793e('0x2c')](_0x31494a,_0x793e('0x1af'));}this[_0x793e('0x37')][_0x793e('0x71')](this,_0x31494a,_0x203189);var _0x180d86=this[_0x793e('0xd')][_0x793e('0x58')](_0x793e('0x1b0'),util['format'](_0x793e('0x1b1'),config[_0x793e('0xb9')][_0x793e('0x1b2')]||'127.0.0.1',_0x203189,this[_0x793e('0xd')]['arg_1']));if(_0x180d86['result']===-0x1){return _0x180d86;}return this[_0x793e('0xd')][_0x793e('0xab')](util['format']('Executed\x20command\x20%s\x20%s',_0x793e('0x1b0'),_0x203189));};AGIVertices[_0x793e('0x12')][_0x793e('0x1b3')]=function(_0xa4b4ec){logger['info'](util['format'](_0x793e('0x1b4'),_0xa4b4ec[_0x793e('0x38')]));var _0x31f732=this[_0x793e('0x1b5')][_0x793e('0x71')](this,_0xa4b4ec[_0x793e('0x1b6')]);this[_0x793e('0x37')]['sync'](this,_0xa4b4ec,_0xa4b4ec[_0x793e('0x1b6')]);if(this['isConfigured'](_0xa4b4ec[_0x793e('0xdd')])){var _0xc19981=this[_0x793e('0xa1')][_0x793e('0x71')](this,_0xa4b4ec[_0x793e('0xdd')]);if(_0xc19981){this[_0x793e('0xd')][_0x793e('0xa6')](_0xc19981,_0x31f732);return this[_0x793e('0xd')][_0x793e('0xab')](util[_0x793e('0x55')]('sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s',_0xa4b4ec[_0x793e('0x1b6')],_0xc19981));}}return this['channel'][_0x793e('0xab')](util[_0x793e('0x55')](_0x793e('0x1b7'),_0xa4b4ec[_0x793e('0x1b6')]));};AGIVertices[_0x793e('0x12')]['google_cloud_tts']=function(_0x31082e){logger[_0x793e('0x2e')](util['format'](_0x793e('0x1b8'),_0x31082e['label']));_0x31082e['text']=_0x31082e[_0x793e('0x5d')][_0x793e('0xdb')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x793e('0x85')](_0x31082e[_0x793e('0x5b')])){return this['channel'][_0x793e('0xab')](_0x793e('0x1b9'));}if(!this[_0x793e('0x85')](_0x31082e[_0x793e('0x5d')])){return this[_0x793e('0xd')][_0x793e('0xab')](_0x793e('0xac'));}this[_0x793e('0xd')][_0x793e('0xab')](util[_0x793e('0x55')](_0x793e('0x1ba'),_0x31082e[_0x793e('0x5d')]));var _0x33f2a0=this['googleCloudTTS'][_0x793e('0x71')](this,_0x31082e);if(_0x33f2a0){this[_0x793e('0xd')][_0x793e('0xab')](util[_0x793e('0x55')](_0x793e('0x1bb'),_0x33f2a0));var _0x8ce102=this[_0x793e('0xd')][_0x793e('0x157')](_0x33f2a0);try{fs[_0x793e('0x109')](_0x33f2a0+_0x793e('0x10a'));}catch(_0x32e102){logger[_0x793e('0x2c')](_0x32e102);}return _0x8ce102;}return this['channel'][_0x793e('0x2c')](_0x31082e,_0x793e('0x1bc'));};AGIVertices['prototype'][_0x793e('0x1bd')]=function(_0x4e65d8){logger[_0x793e('0x2e')](util[_0x793e('0x55')](_0x793e('0x1be'),_0x4e65d8[_0x793e('0x38')]));_0x4e65d8['text']=_0x4e65d8[_0x793e('0x5d')][_0x793e('0xdb')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x793e('0x85')](_0x4e65d8[_0x793e('0x5d')])){return this[_0x793e('0xd')][_0x793e('0xab')](_0x793e('0xac'));}this[_0x793e('0xd')][_0x793e('0xab')](util[_0x793e('0x55')](_0x793e('0x1bf'),_0x4e65d8['text']));var _0x426e0f=this[_0x793e('0x63')]['sync'](this,_0x4e65d8);if(_0x426e0f){this['channel'][_0x793e('0xab')](util[_0x793e('0x55')](_0x793e('0x1c0'),_0x426e0f));var _0x29d7e0=this[_0x793e('0xd')]['streamFile'](_0x426e0f);try{fs[_0x793e('0x109')](_0x426e0f+_0x793e('0x10a'));}catch(_0x10a609){logger[_0x793e('0x2c')](_0x10a609);}return _0x29d7e0;}return this[_0x793e('0xd')]['error'](_0x4e65d8,_0x793e('0x1c1'));};AGIVertices[_0x793e('0x12')][_0x793e('0x1c2')]=function(_0x429b52){logger[_0x793e('0x2e')](util[_0x793e('0x55')](_0x793e('0x1c3'),_0x429b52[_0x793e('0x38')]));if(!this[_0x793e('0x85')](_0x429b52[_0x793e('0x159')])){return this[_0x793e('0xd')][_0x793e('0x2c')](_0x429b52,_0x793e('0x15f'));}logger[_0x793e('0x2e')](util[_0x793e('0x55')](_0x793e('0x1c4'),this['channel'][_0x793e('0x3b')],_0x429b52['findBy']));var _0x55afa8=this['agentUnpause']['sync'](this,_0x429b52[_0x793e('0x159')]);if(_0x55afa8){logger[_0x793e('0x2e')](util[_0x793e('0x55')](_0x793e('0x16a'),this[_0x793e('0xd')][_0x793e('0x3b')],_0x429b52[_0x793e('0x159')]));this[_0x793e('0xd')]['noop'](util[_0x793e('0x55')]('AGENT\x20%s\x20FOUND\x20BY',this['channel']['callerid'],_0x429b52[_0x793e('0x159')]));return{'code':0xc8,'result':_0x793e('0x15a')};}else{logger[_0x793e('0x2e')](util[_0x793e('0x55')](_0x793e('0x15b'),this[_0x793e('0xd')]['callerid'],_0x429b52['findBy']));this['channel']['noop'](util[_0x793e('0x55')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x793e('0xd')]['callerid'],_0x429b52[_0x793e('0x159')]));return{'code':0xc8,'result':_0x793e('0x15c')};}};AGIVertices[_0x793e('0x12')]['voicemail']=function(_0x1cd2c8){logger[_0x793e('0x2e')](util[_0x793e('0x55')]('Enter\x20in\x20VOICEMAIL\x20(%s)\x20block',_0x1cd2c8['label']));var _0x28719f=this[_0x793e('0xd')][_0x793e('0x58')](_0x793e('0x1c5'),[_0x1cd2c8[_0x793e('0x1c6')],_0x1cd2c8[_0x793e('0x79')]]);if(_0x28719f[_0x793e('0xa4')]===-0x1){return _0x28719f;}return this[_0x793e('0xd')][_0x793e('0xab')](util['format'](_0x793e('0xc7'),_0x793e('0x1c5'),_0x1cd2c8[_0x793e('0x1c6')]));};AGIVertices[_0x793e('0x12')][_0x793e('0x1c7')]=function(_0x13d069){logger[_0x793e('0x2e')](util[_0x793e('0x55')]('Enter\x20in\x20SWITCH\x20(%s)\x20block',_0x13d069[_0x793e('0x38')]));if(!this[_0x793e('0x85')](_0x13d069[_0x793e('0xdd')])){return this[_0x793e('0xd')][_0x793e('0x2c')](_0x13d069,_0x793e('0x1a6'));}var _0x1be581=this['getVariable'][_0x793e('0x71')](this,_0x13d069[_0x793e('0xdd')]);if(!_0x1be581){return this[_0x793e('0xd')][_0x793e('0x2c')](_0x13d069,_0x793e('0x11d'));}var _0x4cdde2=this['channel'][_0x793e('0xa1')](_0x1be581);return{'code':0xc8,'result':_0x4cdde2['extra']?_0x4cdde2[_0x793e('0xa5')]:'-'};};String[_0x793e('0x12')][_0x793e('0xa0')]=function(_0x106137,_0x586a20){return this['split'](_0x106137)['join'](_0x586a20);};module[_0x793e('0x1c8')]=AGIVertices;
\ No newline at end of file
+var _0xb910=['%s.%s','setVariable','replaceObjectAllVariables','split','replaceAll','extra','getAndSetVariable','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','sync','retry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','noop','exec','MRCPSynth','result','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','label','grammar','MRCPRecog','RECOG_CONFIDENCE()','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','args','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','add','delay','minutes','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','no\x20text\x20configured','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','no\x20grammar\x20configured','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','sestekasr','RECOG_INSTANCE()','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','getSquareOdbc','no\x20odbc\x20database\x20found','query','no\x20query\x20configured','replace','getQueryOdbc','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','getVariable','no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','no\x20user\x20selected','sip_id','no\x20user\x20found','DIAL','opts','Executed\x20command\x20%s','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','speech','out','Dialogflow\x20is\x20unreachable','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured','bot','Trying\x20DialogflowV2:\x20%s','providerResponse','dialogflowV2','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','ndauth_url','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','password','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','sestekNDA','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','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','finally','file_id','no\x20file\x20audio\x20found','response','maxdigit','mindigit','hiddendigitsnum','generate','hiddendigitspos','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','GOAL\x20%s','awspolly','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','streamFile','unlink','.wav','aws\x20Polly\x20is\x20unreachable','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','message','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20Result\x20%s','googleasr','wav','%s/recordings/%s','beep','recordFile','intKey','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','Enter\x20in\x20TILDEASR\x20(%s)\x20block','appid','no\x20appsecret\x20configured','NOBEEP','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','false','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20interval\x20configured','IFTIME(%s?true:false)','true','IFTIME\x20%s\x20%s','hangup','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','IspeechASR\x20Result\x20%s','Trying\x20ispeech\x20TTS\x20%s','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\x20FOUND\x20BY','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','success','math','operation','no\x20operation\x20configured','math\x20%s','%s[%s]','Enter\x20in\x20MENU\x20(%s)\x20block','no\x20file\x20audio\x20selected','getData','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','no\x20queue\x20selected','queue_id','no\x20queue\x20found','indexOf','XMCS-QUEUE','QUEUE','macro','position','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','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','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','no\x20mail\x20account\x20configured','Smtp','\x22%s\x22\x20<%s>','email','bcc','subject','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sendSMS','sms_account_id','no\x20sms\x20account\x20configured','getSmsAccount','sms_text','Trying\x20SendSMS\x20with\x20account\x20%s','set','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','answer','yes','Answer','Skipped\x20Answer','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','host','system','command','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','googleTTS','Google\x20TTS\x20%s\x20file\x20created','unpause','agentUnpause','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','join','exports','util','lodash','shelljs','odbc','randomstring','moment','mustache','request-promise','../../config/logger','agi','../../config/environment','../../config/environment/shared','./scripts','/var/opt/motion2/server/files','rawBody','menu','getdigits','getsecretdigits','channel','rpc','prototype','getVariableById','then','name','getVoiceQueue','getVoiceQueueById','catch','getSquareProject','getSquareProjectById','getSquareOdbcById','dsn','getUser','getTrunk','getTrunkById','getSound','getSoundById','getSoundPath','getMailAccount','getMailAccountById','mailRpc','sendMailMessage','getIntervals','getIntervalById','IntervalId','Intervals','interval','%s/sounds/converted/%s','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','agicommand','arg_1','createSquareRecording','callerid','calleridname','context','extension','priority','accountcode','dnid','file','createSquareMessage','createCmContact','isEmpty','callback_','random','isNil','lastName','phone','list_id','scheduledAt','callback','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','getPauseById','agentPause','agent','agentLogout','internal','format','%s/%s@from-sip/n','LOCAL','agentLogin','shellCommand','trim','googleCloudTTS','apiKey','text','audioEncoding','restAPI','method','timeout','number','includes','POST','PUT','toUpperCase','body','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','render','url','headers','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusMessage','statusCode','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','client_email','private_key','dialogflowV2_language','ispeechTTS','ispeech_tts_language','speed','ispeechASR','ispeech_asr_language','en-US','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','aws_polly_voice','aws_text_type','awsLex','aws_lex_region','aws_bot_name','googleASR','tildeASR','appsecret','uri','clone','hasOwnProperty','recursiveNodeIndex','isPlainObject','isArray','length','isString','replaceAllVariables','saveRestApiResult'];(function(_0x50aa7f,_0x45b7a6){var _0x3ce606=function(_0x241c4f){while(--_0x241c4f){_0x50aa7f['push'](_0x50aa7f['shift']());}};_0x3ce606(++_0x45b7a6);}(_0xb910,0x12b));var _0x0b91=function(_0x1e3c16,_0x372caa){_0x1e3c16=_0x1e3c16-0x0;var _0x47a0c9=_0xb910[_0x1e3c16];return _0x47a0c9;};'use strict';var fs=require('fs');var util=require(_0x0b91('0x0'));var _=require(_0x0b91('0x1'));var sh=require(_0x0b91('0x2'));var odbc=require(_0x0b91('0x3'))();var rs=require(_0x0b91('0x4'));var moment=require(_0x0b91('0x5'));var Mustache=require(_0x0b91('0x6'));var rp=require(_0x0b91('0x7'));var logger=require(_0x0b91('0x8'))(_0x0b91('0x9'));var config=require(_0x0b91('0xa'));var shared=require(_0x0b91('0xb'));var scripts=require(_0x0b91('0xc'));var FILES_PATH=_0x0b91('0xd');var recursiveMapAttributes=['rawHeaders',_0x0b91('0xe')];var verticesWithRetry=[_0x0b91('0xf'),_0x0b91('0x10'),_0x0b91('0x11')];var AGIVertices=function(_0x44c97f,_0x12ba4c,_0x4118b8){this[_0x0b91('0x12')]=_0x44c97f;this[_0x0b91('0x13')]=_0x12ba4c;this['mailRpc']=_0x4118b8;};AGIVertices[_0x0b91('0x14')]['getVariable']=function(_0x322ff0,_0x5eb743){this['rpc'][_0x0b91('0x15')](_0x322ff0)[_0x0b91('0x16')](function(_0x377335){_0x5eb743(null,_0x377335?_0x377335[_0x0b91('0x17')]:![]);})['catch'](function(_0x2e8430){_0x5eb743(_0x2e8430);});};AGIVertices[_0x0b91('0x14')][_0x0b91('0x18')]=function(_0x2ec488,_0x590128){this[_0x0b91('0x13')][_0x0b91('0x19')](_0x2ec488)[_0x0b91('0x16')](function(_0x1ac3ca){_0x590128(null,_0x1ac3ca?_0x1ac3ca[_0x0b91('0x17')]:![]);})[_0x0b91('0x1a')](function(_0x4ac8f5){_0x590128(_0x4ac8f5);});};AGIVertices[_0x0b91('0x14')][_0x0b91('0x1b')]=function(_0x2e8bb9,_0x17d6fd){this[_0x0b91('0x13')][_0x0b91('0x1c')](_0x2e8bb9)[_0x0b91('0x16')](function(_0x12239b){_0x17d6fd(null,_0x12239b?_0x12239b[_0x0b91('0x17')]:![]);})[_0x0b91('0x1a')](function(_0x1ed672){_0x17d6fd(_0x1ed672);});};AGIVertices[_0x0b91('0x14')]['getSquareOdbc']=function(_0x2df818,_0x576a92){this['rpc'][_0x0b91('0x1d')](_0x2df818)[_0x0b91('0x16')](function(_0x1dd913){_0x576a92(null,_0x1dd913?_0x1dd913[_0x0b91('0x1e')]:![]);})[_0x0b91('0x1a')](function(_0x5369c0){_0x576a92(_0x5369c0);});};AGIVertices[_0x0b91('0x14')][_0x0b91('0x1f')]=function(_0xf01735,_0x51f5fd){this['rpc']['getUserById'](_0xf01735)['then'](function(_0x765d64){_0x51f5fd(null,_0x765d64?_0x765d64[_0x0b91('0x17')]:![]);})[_0x0b91('0x1a')](function(_0x24b98f){_0x51f5fd(_0x24b98f);});};AGIVertices[_0x0b91('0x14')][_0x0b91('0x20')]=function(_0x119748,_0x2071c0){this[_0x0b91('0x13')][_0x0b91('0x21')](_0x119748)[_0x0b91('0x16')](function(_0x120ecf){_0x2071c0(null,_0x120ecf?_0x120ecf['name']:![]);})[_0x0b91('0x1a')](function(_0x4bf1e6){_0x2071c0(_0x4bf1e6);});};AGIVertices['prototype'][_0x0b91('0x22')]=function(_0x5b6811,_0x120ae2){var _0x4afbd1=this;this[_0x0b91('0x13')][_0x0b91('0x23')](_0x5b6811)['then'](function(_0x471151){_0x120ae2(null,_0x471151?_0x4afbd1[_0x0b91('0x24')](_0x471151['save_name']):![]);})['catch'](function(_0x5a66bc){_0x120ae2(_0x5a66bc);});};AGIVertices[_0x0b91('0x14')][_0x0b91('0x25')]=function(_0x33ba12,_0xddf36){this[_0x0b91('0x13')][_0x0b91('0x26')](_0x33ba12)[_0x0b91('0x16')](function(_0x1248d1){_0xddf36(null,_0x1248d1?_0x1248d1:![]);})[_0x0b91('0x1a')](function(_0x1bb84e){_0xddf36(_0x1bb84e);});};AGIVertices[_0x0b91('0x14')]['sendMailMessage']=function(_0x5504e7,_0x3309d9,_0x41c8f7){this[_0x0b91('0x27')][_0x0b91('0x28')](_0x5504e7,_0x3309d9)[_0x0b91('0x16')](function(){_0x41c8f7(null);})[_0x0b91('0x1a')](function(_0x5f0edf){_0x41c8f7(_0x5f0edf);});};AGIVertices[_0x0b91('0x14')][_0x0b91('0x29')]=function(_0x53fa62,_0x5e10d0){this[_0x0b91('0x13')][_0x0b91('0x2a')](_0x53fa62)[_0x0b91('0x16')](function(_0x407390){if(_0x407390){if(_0x407390[_0x0b91('0x2b')]){_0x5e10d0(null,[_0x407390['interval']]);}else{_0x5e10d0(null,_['map'](_0x407390[_0x0b91('0x2c')],_0x0b91('0x2d')));}}else{_0x5e10d0(null,![]);}})[_0x0b91('0x1a')](function(_0x3f4023){_0x5e10d0(_0x3f4023);});};AGIVertices[_0x0b91('0x14')]['getSoundPath']=function(_0x3ec6ca){return util['format'](_0x0b91('0x2e'),FILES_PATH,_0x3ec6ca);};AGIVertices['prototype']['getQueryOdbc']=function(_0x5894a5,_0x1fdc5b,_0x3dbaa4){odbc[_0x0b91('0x2f')](_0x5894a5,function(_0x55841c){if(_0x55841c){logger[_0x0b91('0x30')](_0x0b91('0x31'),_0x55841c);_0x3dbaa4(_0x55841c);}else{logger[_0x0b91('0x32')](_0x0b91('0x33'));odbc['query'](_0x1fdc5b,function(_0x421bfe,_0x498b7a){if(_0x421bfe){logger[_0x0b91('0x32')](_0x0b91('0x34'),_0x1fdc5b);_0x3dbaa4(_0x421bfe);}else{logger[_0x0b91('0x32')](_0x0b91('0x35'),_0x1fdc5b);odbc[_0x0b91('0x36')](function(_0x54861a){if(_0x54861a){logger[_0x0b91('0x30')](_0x0b91('0x37'),_0x54861a);}_0x3dbaa4(null,_0x498b7a);});}});}});};AGIVertices['prototype']['getSmsAccount']=function(_0x330245,_0x34b872){this['rpc'][_0x0b91('0x38')](_0x330245)[_0x0b91('0x16')](function(_0x3e91fe){_0x34b872(null,_0x3e91fe?_0x3e91fe:![]);})['catch'](function(_0x4c4503){_0x34b872(_0x4c4503);});};AGIVertices[_0x0b91('0x14')][_0x0b91('0x39')]=function(_0x411414,_0x256887){this[_0x0b91('0x13')][_0x0b91('0x39')](_0x411414)[_0x0b91('0x16')](function(_0x5e2e7a){_0x256887(null,_0x5e2e7a);})[_0x0b91('0x1a')](function(_0x3f74c3){_0x256887(_0x3f74c3);});};AGIVertices[_0x0b91('0x14')][_0x0b91('0x3a')]=function(_0x523a1a,_0x1b29fa,_0x808d4d){this[_0x0b91('0x13')][_0x0b91('0x3a')]({'uniqueid':this[_0x0b91('0x12')][_0x0b91('0x3b')],'node':_0x523a1a['label'],'application':_0x523a1a[_0x0b91('0x3c')],'data':_0x1b29fa||null,'project_name':this[_0x0b91('0x12')][_0x0b91('0x3d')],'callerid':this[_0x0b91('0x12')]['callerid']})[_0x0b91('0x16')](function(_0x593071){if(_0x808d4d){_0x808d4d(null,_0x593071);}})['catch'](function(_0x42e97f){if(_0x808d4d){_0x808d4d(_0x42e97f);}});};AGIVertices[_0x0b91('0x14')][_0x0b91('0x3e')]=function(_0x5c836b,_0x41fdcb,_0x4355fc,_0x20dec4){this[_0x0b91('0x13')][_0x0b91('0x3e')]({'uniqueid':this[_0x0b91('0x12')][_0x0b91('0x3b')],'callerid':this[_0x0b91('0x12')][_0x0b91('0x3f')],'calleridname':this[_0x0b91('0x12')][_0x0b91('0x40')],'context':this[_0x0b91('0x12')][_0x0b91('0x41')],'extension':this[_0x0b91('0x12')][_0x0b91('0x42')],'priority':this['channel'][_0x0b91('0x43')],'accountcode':this[_0x0b91('0x12')][_0x0b91('0x44')],'dnid':this[_0x0b91('0x12')][_0x0b91('0x45')],'projectName':this[_0x0b91('0x12')][_0x0b91('0x3d')],'saveName':_0x41fdcb,'filename':_0x5c836b[_0x0b91('0x46')]||_0x41fdcb,'savePath':_0x4355fc})[_0x0b91('0x16')](function(_0x38da9d){_0x20dec4(null,_0x38da9d);})[_0x0b91('0x1a')](function(_0xb03477){_0x20dec4(_0xb03477);});};AGIVertices[_0x0b91('0x14')]['createSquareMessage']=function(_0x547fdc,_0x15079d,_0x2cd981,_0x284ddb,_0x581804){this['rpc'][_0x0b91('0x47')]({'uniqueid':this[_0x0b91('0x12')][_0x0b91('0x3b')],'body':_0x547fdc,'direction':_0x15079d,'providerName':_0x2cd981,'providerResponse':_0x284ddb})[_0x0b91('0x16')](function(_0x465cc7){if(_0x581804){_0x581804(null,_0x465cc7);}})[_0x0b91('0x1a')](function(_0x30b94a){if(_0x581804){_0x581804(_0x30b94a);}});};AGIVertices['prototype'][_0x0b91('0x48')]=function(_0xa01f77,_0x18ff6d){this[_0x0b91('0x13')]['createCmContact']({'firstName':_[_0x0b91('0x49')](_0xa01f77[_0x0b91('0x17')])||_['isNil'](_0xa01f77[_0x0b91('0x17')])?_0x0b91('0x4a')+Math[_0x0b91('0x4b')]():_0xa01f77[_0x0b91('0x17')],'lastName':_['isEmpty'](_0xa01f77['lastName'])||_[_0x0b91('0x4c')](_0xa01f77[_0x0b91('0x4d')])?null:_0xa01f77[_0x0b91('0x4d')],'phone':_0xa01f77[_0x0b91('0x4e')],'ListId':_0xa01f77[_0x0b91('0x4f')],'scheduledat':_0xa01f77[_0x0b91('0x50')],'callbackUniqueid':this['channel'][_0x0b91('0x3b')],'tags':_0x0b91('0x51'),'description':_0x0b91('0x52')+_0xa01f77[_0x0b91('0x50')][_0x0b91('0x53')](),'priority':_0xa01f77[_0x0b91('0x54')]})[_0x0b91('0x16')](function(_0x5117bc){_0x18ff6d(null,_0x5117bc);})[_0x0b91('0x1a')](function(_0x3229d7){_0x18ff6d(_0x3229d7);});};AGIVertices[_0x0b91('0x14')][_0x0b91('0x55')]=function(_0x4a3d43,_0x173c35){this[_0x0b91('0x13')][_0x0b91('0x56')](_0x4a3d43)['then'](function(_0x5be03c){_0x173c35(null,_0x5be03c?_0x5be03c[_0x0b91('0x17')]:![]);})[_0x0b91('0x1a')](function(_0x26b1b4){_0x173c35(_0x26b1b4);});};AGIVertices[_0x0b91('0x14')][_0x0b91('0x57')]=function(_0x477ac5,_0x5e6f15,_0x5461bf){var _0x26f2ba={'role':'agent'};_0x26f2ba[_0x477ac5]=this[_0x0b91('0x12')][_0x0b91('0x3f')];this['rpc'][_0x0b91('0x57')](_0x26f2ba,_0x5e6f15,this[_0x0b91('0x12')][_0x0b91('0x3b')])[_0x0b91('0x16')](function(_0x4f7b24){_0x5461bf(null,_[_0x0b91('0x4c')](_0x4f7b24)?![]:!![]);})[_0x0b91('0x1a')](function(_0x2eb38a){logger[_0x0b91('0x30')](_0x2eb38a);_0x5461bf(null,![]);});};AGIVertices[_0x0b91('0x14')]['agentUnpause']=function(_0x49e79b,_0x39fd3d){var _0x3dd795={'role':_0x0b91('0x58')};_0x3dd795[_0x49e79b]=this[_0x0b91('0x12')]['callerid'];this[_0x0b91('0x13')]['agentUnpause'](_0x3dd795)['then'](function(_0x39689c){_0x39fd3d(null,_['isNil'](_0x39689c)?![]:!![]);})[_0x0b91('0x1a')](function(_0x3071de){logger[_0x0b91('0x30')](_0x3071de);_0x39fd3d(null,![]);});};AGIVertices['prototype'][_0x0b91('0x59')]=function(_0x28facd,_0x5a3239){var _0x224a90={'role':'agent'};_0x224a90[_0x28facd]=this[_0x0b91('0x12')][_0x0b91('0x3f')];this[_0x0b91('0x13')][_0x0b91('0x59')](_0x224a90)[_0x0b91('0x16')](function(_0x22e889){_0x5a3239(null,_[_0x0b91('0x4c')](_0x22e889)?![]:!![]);})['catch'](function(_0x4736a3){logger['error'](_0x4736a3);_0x5a3239(null,![]);});};AGIVertices[_0x0b91('0x14')]['agentLogin']=function(_0x4f3e86,_0x3c88c3){var _0x4c595a={'role':'agent'};_0x4c595a[_0x4f3e86]=this[_0x0b91('0x12')][_0x0b91('0x3f')];var _0x4a9152=_0x4f3e86!=_0x0b91('0x5a')?util[_0x0b91('0x5b')](_0x0b91('0x5c'),_0x0b91('0x5d'),this['channel'][_0x0b91('0x3f')]):undefined;this[_0x0b91('0x13')][_0x0b91('0x5e')](_0x4c595a,_0x4a9152)['then'](function(_0xb3781){_0x3c88c3(null,_[_0x0b91('0x4c')](_0xb3781)?![]:!![]);})['catch'](function(_0x5627ed){logger[_0x0b91('0x30')](_0x5627ed);_0x3c88c3(null,![]);});};AGIVertices['prototype'][_0x0b91('0x5f')]=function(_0x391420,_0x5abe33){sh['exec'](_[_0x0b91('0x60')](_0x391420),function(_0x3a0a6c,_0x1d5a60){var _0x3dd3a8=_0x1d5a60['replace'](/(\r\n|\n|\r)/gm,'');_0x5abe33(null,_0x3dd3a8);});};AGIVertices[_0x0b91('0x14')]['googleCloudTTS']=function(_0x5f34f5,_0x402961){scripts[_0x0b91('0x61')](_0x5f34f5[_0x0b91('0x62')],_0x5f34f5['google_cloud_tts_text_type']||_0x0b91('0x63'),_0x5f34f5[_0x0b91('0x63')],_0x5f34f5['languageCode']||'en-US',_0x5f34f5['ssmlGender']||'MALE',_0x5f34f5[_0x0b91('0x64')]||'MP3')['then'](function(_0x30e2f3){_0x402961(null,_0x30e2f3);})['catch'](function(_0x5e5460){_0x402961(_0x5e5460);});};AGIVertices[_0x0b91('0x14')]['googleTTS']=function(_0x349278,_0x27d057){scripts['googleTTS'](_0x349278['text'],_0x349278['google_tts_language']||'en',0x1)[_0x0b91('0x16')](function(_0x4a09b0){_0x27d057(null,_0x4a09b0);})[_0x0b91('0x1a')](function(_0x2b6ce7){_0x27d057(_0x2b6ce7);});};AGIVertices['prototype'][_0x0b91('0x65')]=function(_0x33cce1,_0x36ae11){var _0x2850f2={'uri':_0x33cce1['url'],'method':_0x33cce1[_0x0b91('0x66')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x33cce1[_0x0b91('0x67')])===_0x0b91('0x68')&&parseInt(_0x33cce1['timeout'])>=0x1?parseInt(_0x33cce1[_0x0b91('0x67')])*0x3e8:0x5*0x3e8};if(_[_0x0b91('0x69')]([_0x0b91('0x6a'),_0x0b91('0x6b')],_0x2850f2[_0x0b91('0x66')][_0x0b91('0x6c')]())){try{_0x2850f2[_0x0b91('0x6d')]=_0x33cce1[_0x0b91('0xe')]?JSON[_0x0b91('0x6e')](_0x33cce1[_0x0b91('0xe')]):{};}catch(_0x3a4d08){logger[_0x0b91('0x30')](_0x0b91('0x6f'),_0x3a4d08);}}try{_0x2850f2['headers']=_0x33cce1['rawHeaders']?JSON[_0x0b91('0x6e')](_0x33cce1['rawHeaders']):{};}catch(_0x1da032){logger['error'](_0x0b91('0x70'),_0x1da032);}if(_0x33cce1[_0x0b91('0x71')]){try{var _0x3565c4=require(_0x33cce1['computedVariables'])['sync'](this,_0x2850f2);_0x2850f2['uri']=Mustache[_0x0b91('0x72')](_0x33cce1[_0x0b91('0x73')],_0x3565c4,{},['$$','$$']);if(_0x2850f2[_0x0b91('0x74')]){_0x2850f2[_0x0b91('0x74')]=JSON[_0x0b91('0x6e')](Mustache['render'](JSON['stringify'](_0x2850f2[_0x0b91('0x74')]),_0x3565c4,{},['$$','$$']));}if(_0x2850f2[_0x0b91('0x6d')]){_0x2850f2[_0x0b91('0x6d')]=JSON['parse'](Mustache[_0x0b91('0x72')](JSON[_0x0b91('0x75')](_0x2850f2[_0x0b91('0x6d')]),_0x3565c4,{},['$$','$$']));}}catch(_0x21b382){logger['error'](_0x0b91('0x76'),_0x21b382);}}rp(_0x2850f2)['then'](function(_0x9346a0){var _0x1c314e={'statusCode':_0x9346a0['statusCode']||0xc8,'statusMessage':_0x9346a0[_0x0b91('0x77')]||'OK','headers':_0x9346a0[_0x0b91('0x74')]||{},'body':_0x9346a0['body']||{}};_0x36ae11(null,_0x1c314e);})[_0x0b91('0x1a')](function(_0x3eabda){var _0x55d28c={'statusCode':_0x3eabda[_0x0b91('0x78')]||0x1f4,'statusMessage':_0x3eabda['message']||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x3eabda['options'][_0x0b91('0x74')]||{},'body':_0x3eabda[_0x0b91('0x79')]['body']||{}};_0x36ae11(null,_0x55d28c);});};AGIVertices['prototype'][_0x0b91('0x7a')]=function(_0x5de17c,_0x4553f0){scripts[_0x0b91('0x7a')](this[_0x0b91('0x12')][_0x0b91('0x3b')],_0x5de17c[_0x0b91('0x7b')],_0x5de17c[_0x0b91('0x63')],_0x5de17c[_0x0b91('0x7c')]||'en')[_0x0b91('0x16')](function(_0x32b6ec){_0x4553f0(null,_0x32b6ec);})[_0x0b91('0x1a')](function(_0x1475e3){_0x4553f0(_0x1475e3);});};AGIVertices[_0x0b91('0x14')][_0x0b91('0x7d')]=function(_0x2f2588,_0x22cc1d){scripts[_0x0b91('0x7d')](this[_0x0b91('0x12')][_0x0b91('0x3b')],_0x2f2588['dialogflowV2_project_id'],_0x2f2588[_0x0b91('0x7e')],_0x2f2588[_0x0b91('0x7f')],_0x2f2588[_0x0b91('0x63')],_0x2f2588[_0x0b91('0x80')]||'en')[_0x0b91('0x16')](function(_0x2a5d3d){_0x22cc1d(null,_0x2a5d3d);})[_0x0b91('0x1a')](function(_0x6c4162){_0x22cc1d(_0x6c4162);});};AGIVertices[_0x0b91('0x14')]['sestekNDA']=function(_0xc0c709,_0x1dceed){scripts['sestekNDA'](this['channel'],_0xc0c709)[_0x0b91('0x16')](function(_0x3d7a39){_0x1dceed(null,_0x3d7a39);})['catch'](function(_0x562075){_0x1dceed(_0x562075);});};AGIVertices[_0x0b91('0x14')][_0x0b91('0x81')]=function(_0x487206,_0x429796){scripts[_0x0b91('0x81')](_0x487206[_0x0b91('0x7b')],_0x487206[_0x0b91('0x63')],_0x487206[_0x0b91('0x82')]||'en-US',_0x487206[_0x0b91('0x83')])[_0x0b91('0x16')](function(_0x25e214){_0x429796(null,_0x25e214);})[_0x0b91('0x1a')](function(_0x346a03){_0x429796(_0x346a03);});};AGIVertices[_0x0b91('0x14')][_0x0b91('0x84')]=function(_0x475ce4,_0x325ad8,_0x43fe80){scripts[_0x0b91('0x84')](_0x325ad8,_0x475ce4[_0x0b91('0x7b')],_0x475ce4[_0x0b91('0x85')]||_0x0b91('0x86'),this[_0x0b91('0x87')](_0x475ce4[_0x0b91('0x88')])?_0x475ce4['model']:undefined)['then'](function(_0x2ee4e2){_0x43fe80(null,_0x2ee4e2);})[_0x0b91('0x1a')](function(_0x70c148){_0x43fe80(_0x70c148);});};AGIVertices[_0x0b91('0x14')][_0x0b91('0x89')]=function(_0x55fb0e,_0x3e108a){scripts['awsPolly'](_0x55fb0e[_0x0b91('0x8a')],_0x55fb0e[_0x0b91('0x8b')],_0x55fb0e[_0x0b91('0x8c')],_0x55fb0e[_0x0b91('0x8d')]||'Amy',_0x55fb0e[_0x0b91('0x63')],_0x55fb0e[_0x0b91('0x8e')]||_0x0b91('0x63'))[_0x0b91('0x16')](function(_0x26bf60){_0x3e108a(null,_0x26bf60);})['catch'](function(_0x4aa209){_0x3e108a(_0x4aa209);});};AGIVertices[_0x0b91('0x14')]['awsLex']=function(_0x2ab5ef,_0x248968){scripts[_0x0b91('0x8f')](this[_0x0b91('0x12')]['uniqueid'],_0x2ab5ef[_0x0b91('0x8a')],_0x2ab5ef[_0x0b91('0x8b')],_0x2ab5ef[_0x0b91('0x90')],_0x2ab5ef[_0x0b91('0x63')],_0x2ab5ef[_0x0b91('0x91')])[_0x0b91('0x16')](function(_0x59c9a9){_0x248968(null,_0x59c9a9);})[_0x0b91('0x1a')](function(_0x53eab9){_0x248968(_0x53eab9);});};AGIVertices[_0x0b91('0x14')][_0x0b91('0x92')]=function(_0x5b6b05,_0x5870f3,_0x409db6){scripts[_0x0b91('0x92')](_0x5870f3,_0x5b6b05[_0x0b91('0x7b')],_0x5b6b05['google_asr_language']||_0x0b91('0x86'))[_0x0b91('0x16')](function(_0x56fb73){_0x409db6(null,_0x56fb73);})[_0x0b91('0x1a')](function(_0x4d1b48){_0x409db6(_0x4d1b48);});};AGIVertices[_0x0b91('0x14')][_0x0b91('0x93')]=function(_0x2db89e,_0xa2558d,_0x546183){scripts['tildeASR'](_0xa2558d,_0x2db89e['appid'],_0x2db89e[_0x0b91('0x94')],_0x2db89e[_0x0b91('0x95')])[_0x0b91('0x16')](function(_0x49b415){_0x546183(null,_0x49b415);})[_0x0b91('0x1a')](function(_0x481419){_0x546183(_0x481419);});};AGIVertices[_0x0b91('0x14')]['clear']=function(_0x330626){var _0x16e246=_[_0x0b91('0x69')](verticesWithRetry,_0x330626[_0x0b91('0x3c')])?_0x330626:_[_0x0b91('0x96')](_0x330626);for(var _0x341ec7 in _0x16e246){if(_0x16e246[_0x0b91('0x97')](_0x341ec7)){if(_0x16e246[_0x341ec7]&&_['isString'](_0x16e246[_0x341ec7])){if(_[_0x0b91('0x69')](recursiveMapAttributes,_0x341ec7)){_0x16e246[_0x341ec7]=this['replaceObjectAllVariables'](_0x16e246[_0x341ec7]);}else{_0x16e246[_0x341ec7]=this['replaceAllVariables'](_0x16e246[_0x341ec7]);}}}}return _0x16e246;};AGIVertices[_0x0b91('0x14')][_0x0b91('0x98')]=function(_0x247e49){for(var _0x466e6c in _0x247e49){if(_0x247e49[_0x0b91('0x97')](_0x466e6c)){if(_[_0x0b91('0x99')](_0x247e49[_0x466e6c])){this[_0x0b91('0x98')](_0x247e49[_0x466e6c]);}else if(_[_0x0b91('0x9a')](_0x247e49[_0x466e6c])){for(var _0x26aa6a=0x0;_0x26aa6a<_0x247e49[_0x466e6c][_0x0b91('0x9b')];_0x26aa6a++){this['recursiveNodeIndex'](_0x247e49[_0x466e6c][_0x26aa6a]);}}else if(_[_0x0b91('0x9c')](_0x247e49[_0x466e6c])){_0x247e49[_0x466e6c]=this[_0x0b91('0x9d')](_0x247e49[_0x466e6c]);}}}};AGIVertices[_0x0b91('0x14')]['saveRestApiResult']=function(_0x45691b,_0x293595){for(var _0x1cfdb6 in _0x45691b){if(_0x45691b[_0x0b91('0x97')](_0x1cfdb6)){if(_[_0x0b91('0x99')](_0x45691b[_0x1cfdb6])){if(!_[_0x0b91('0x49')](_0x45691b[_0x1cfdb6])){this['saveRestApiResult'](_0x45691b[_0x1cfdb6],util['format']('%s.%s',_0x293595,_0x1cfdb6));}}else if(_['isArray'](_0x45691b[_0x1cfdb6])){for(var _0x2218a0=0x0;_0x2218a0<_0x45691b[_0x1cfdb6][_0x0b91('0x9b')];_0x2218a0++){this[_0x0b91('0x9e')](_0x45691b[_0x1cfdb6][_0x2218a0],util[_0x0b91('0x5b')](_0x0b91('0x9f'),_0x293595,_0x1cfdb6+'['+_0x2218a0+']'));}}else{if(!_['isNil'](_0x45691b[_0x1cfdb6])){this[_0x0b91('0x12')][_0x0b91('0xa0')](util['format'](_0x0b91('0x9f'),_0x293595,_0x1cfdb6),_0x45691b[_0x1cfdb6]);}}}}};AGIVertices[_0x0b91('0x14')][_0x0b91('0xa1')]=function(_0x18b712){try{var _0x4937f3=JSON[_0x0b91('0x6e')](_0x18b712);this['recursiveNodeIndex'](_0x4937f3);return JSON[_0x0b91('0x75')](_0x4937f3);}catch(_0x9d0286){return this[_0x0b91('0x9d')](_0x18b712);}};AGIVertices['prototype']['replaceAllVariables']=function(_0xc8ce3a){var _0x2e7fe5=_0xc8ce3a['split']('{');for(var _0xad1ecc=0x1;_0xad1ecc<_0x2e7fe5[_0x0b91('0x9b')];_0xad1ecc+=0x1){var _0x25f165=_0x2e7fe5[_0xad1ecc][_0x0b91('0xa2')]('}');if(_0x25f165[_0x0b91('0x9b')]>0x1){_0xc8ce3a=_0xc8ce3a[_0x0b91('0xa3')]('{'+_0x25f165[0x0]+'}',this[_0x0b91('0x12')]['getVariable'](_0x25f165[0x0])[_0x0b91('0xa4')]||_0x25f165[0x0]);}}if(_0x2e7fe5['length']===0x1){return _0xc8ce3a[_0x0b91('0x53')]();}return this[_0x0b91('0x9d')](_0xc8ce3a);};AGIVertices[_0x0b91('0x14')][_0x0b91('0xa5')]=function(_0x4ffca1,_0x44ef37){var _0x58dcb6=this[_0x0b91('0x12')]['getVariable'](_0x4ffca1);if(_0x58dcb6['result']===-0x1){return _0x58dcb6;}logger[_0x0b91('0x32')](util[_0x0b91('0x5b')](_0x0b91('0xa6'),_0x44ef37,_0x58dcb6[_0x0b91('0xa4')]));return this[_0x0b91('0x12')][_0x0b91('0xa0')](_0x44ef37,_0x58dcb6[_0x0b91('0xa4')]);};AGIVertices[_0x0b91('0x14')]['isConfigured']=function(_0x44633d){return _0x44633d&&_0x44633d!=='0'&&_0x44633d!=='-1'&&_0x44633d!=='';};AGIVertices['prototype'][_0x0b91('0xa7')]=function(_0x264ade){this['createSquareDetailsReport'][_0x0b91('0xa8')](this,_0x264ade,'-');_0x264ade[_0x0b91('0xa9')]=_0x264ade[_0x0b91('0xa7')];return{'code':0xc8,'result':'-'};};AGIVertices[_0x0b91('0x14')][_0x0b91('0xaa')]=function(_0x4453e7){logger['info'](util[_0x0b91('0x5b')](_0x0b91('0xab'),_0x4453e7['label']));if(!this[_0x0b91('0x87')](_0x4453e7[_0x0b91('0x63')])){return this['channel'][_0x0b91('0xac')]('no\x20text\x20configured');}var _0x57c3fc='\x22'+_0x4453e7[_0x0b91('0x63')]+'\x22';if(this[_0x0b91('0x87')](_0x4453e7[_0x0b91('0x79')])){_0x57c3fc+=','+_0x4453e7[_0x0b91('0x79')];}var _0xeec6f9=this[_0x0b91('0x12')][_0x0b91('0xad')](_0x0b91('0xae'),_0x57c3fc);if(_0xeec6f9[_0x0b91('0xaf')]===-0x1){return _0xeec6f9;}return this['channel'][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0xb0'),_0x57c3fc));};AGIVertices[_0x0b91('0x14')][_0x0b91('0xb1')]=function(_0x1e5613){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')](_0x0b91('0xb2'),_0x1e5613[_0x0b91('0xb3')]));if(!this[_0x0b91('0x87')](_0x1e5613[_0x0b91('0xb4')])){return this['channel'][_0x0b91('0xac')]('no\x20grammar\x20configured');}var _0x28ee83=_0x1e5613[_0x0b91('0xb4')];if(this[_0x0b91('0x87')](_0x1e5613[_0x0b91('0x79')])){_0x28ee83+=','+_0x1e5613[_0x0b91('0x79')];}var _0xa8cf2a=this[_0x0b91('0x12')][_0x0b91('0xad')](_0x0b91('0xb5'),_0x28ee83);if(_0xa8cf2a[_0x0b91('0xaf')]===-0x1){return _0xa8cf2a;}var _0x56a12e=this[_0x0b91('0xa5')](_0x0b91('0xb6'),'MRCP_RECOG_CONFIDENCE');if(_0x56a12e['result']===-0x1){return _0x56a12e;}var _0xa1d67a=this[_0x0b91('0xa5')](_0x0b91('0xb7'),_0x0b91('0xb8'));if(_0xa1d67a[_0x0b91('0xaf')]===-0x1){return _0xa1d67a;}var _0x3d9a5f=this[_0x0b91('0xa5')]('RECOG_INSTANCE()',_0x0b91('0xb9'));if(_0x3d9a5f['result']===-0x1){return _0x3d9a5f;}return this[_0x0b91('0x12')]['noop'](util[_0x0b91('0x5b')](_0x0b91('0xba'),_0x28ee83));};AGIVertices[_0x0b91('0x14')][_0x0b91('0x9')]=function(_0x51e88a){logger[_0x0b91('0x32')](util['format']('Enter\x20in\x20AGI\x20(%s)\x20block',_0x51e88a[_0x0b91('0xb3')]));return this[_0x0b91('0x12')]['agi']([_0x51e88a['command'],_0x51e88a[_0x0b91('0xbb')]]);};AGIVertices['prototype']['answer']=function(_0xda29aa){logger[_0x0b91('0x32')](util['format'](_0x0b91('0xbc'),_0xda29aa[_0x0b91('0xb3')]));if(this[_0x0b91('0x87')](_0xda29aa[_0x0b91('0x67')])){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')](_0x0b91('0xbd'),_0xda29aa[_0x0b91('0x67')]));var _0x1764f1=this[_0x0b91('0x12')][_0x0b91('0xbe')](_0xda29aa[_0x0b91('0x67')]);if(_0x1764f1[_0x0b91('0xaf')]===-0x1){return _0x1764f1;}}return this[_0x0b91('0x12')]['answer']();};AGIVertices[_0x0b91('0x14')][_0x0b91('0x51')]=function(_0x20cf3c){logger['info'](util[_0x0b91('0x5b')](_0x0b91('0xbf'),_0x20cf3c[_0x0b91('0xb3')]));if(!this[_0x0b91('0x87')](_0x20cf3c[_0x0b91('0x4f')])){return this[_0x0b91('0x12')][_0x0b91('0x30')](_0x20cf3c,_0x0b91('0xc0'));}_0x20cf3c[_0x0b91('0x50')]=moment();if(this[_0x0b91('0x87')](_0x20cf3c['delay'])){_0x20cf3c[_0x0b91('0x50')]=moment()[_0x0b91('0xc1')](_0x20cf3c[_0x0b91('0xc2')],_0x0b91('0xc3'));}if(!this[_0x0b91('0x87')](_0x20cf3c[_0x0b91('0x54')])){_0x20cf3c[_0x0b91('0x54')]=0x2;}this['createCmContact'][_0x0b91('0xa8')](this,_0x20cf3c);return this[_0x0b91('0x12')][_0x0b91('0xac')](util['format']('CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s',_0x20cf3c['phone'],_0x20cf3c[_0x0b91('0x4f')],_0x20cf3c[_0x0b91('0x50')]));};AGIVertices['prototype'][_0x0b91('0xc4')]=function(_0x1ab353){logger[_0x0b91('0x32')](util['format'](_0x0b91('0xc5'),_0x1ab353[_0x0b91('0xb3')]));var _0xd8448e=this[_0x0b91('0x12')][_0x0b91('0xad')](_0x1ab353[_0x0b91('0xc6')],_0x1ab353[_0x0b91('0x79')]);if(_0xd8448e['result']===-0x1){return _0xd8448e;}return this[_0x0b91('0x12')][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0xc7'),_0x1ab353['application'],_0x1ab353[_0x0b91('0x79')]));};AGIVertices[_0x0b91('0x14')][_0x0b91('0xc8')]=function(_0x2c09f3){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')](_0x0b91('0xc9'),_0x2c09f3['label']));if(!this[_0x0b91('0x87')](_0x2c09f3['text'])){return this['channel'][_0x0b91('0xac')](_0x0b91('0xca'));}var _0x4cc166='\x22'+_0x2c09f3[_0x0b91('0x63')]+'\x22';if(this['isConfigured'](_0x2c09f3[_0x0b91('0x79')])){_0x4cc166+=','+_0x2c09f3[_0x0b91('0x79')];}var _0x25a389=this[_0x0b91('0x12')][_0x0b91('0xad')](_0x0b91('0xae'),_0x4cc166);if(_0x25a389[_0x0b91('0xaf')]===-0x1){return _0x25a389;}return this[_0x0b91('0x12')][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0xb0'),_0x4cc166));};AGIVertices[_0x0b91('0x14')][_0x0b91('0xcb')]=function(_0x2ddd48){logger['info'](util[_0x0b91('0x5b')](_0x0b91('0xcc'),_0x2ddd48[_0x0b91('0xb3')]));if(!this[_0x0b91('0x87')](_0x2ddd48[_0x0b91('0x63')])){return this[_0x0b91('0x12')][_0x0b91('0xac')](_0x0b91('0xca'));}var _0x53f47e='\x22'+_0x2ddd48[_0x0b91('0x63')]+'\x22';if(this[_0x0b91('0x87')](_0x2ddd48[_0x0b91('0x79')])){_0x53f47e+=','+_0x2ddd48[_0x0b91('0x79')];}var _0x2b2c29=this[_0x0b91('0x12')][_0x0b91('0xad')](_0x0b91('0xae'),_0x53f47e);if(_0x2b2c29[_0x0b91('0xaf')]===-0x1){return _0x2b2c29;}return this[_0x0b91('0x12')][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0xb0'),_0x53f47e));};AGIVertices[_0x0b91('0x14')][_0x0b91('0xcd')]=function(_0x30d989){logger['info'](util[_0x0b91('0x5b')](_0x0b91('0xce'),_0x30d989[_0x0b91('0xb3')]));if(!this[_0x0b91('0x87')](_0x30d989[_0x0b91('0xb4')])){return this[_0x0b91('0x12')][_0x0b91('0xac')](_0x0b91('0xcf'));}var _0x4c3a4f=_0x30d989['grammar'];if(this[_0x0b91('0x87')](_0x30d989[_0x0b91('0x79')])){_0x4c3a4f+=','+_0x30d989['options'];}var _0xd21fde=this['channel'][_0x0b91('0xad')](_0x0b91('0xb5'),_0x4c3a4f);if(_0xd21fde[_0x0b91('0xaf')]===-0x1){return _0xd21fde;}var _0x56c39e=this[_0x0b91('0xa5')](_0x0b91('0xb6'),'LUMENVOX_ASR_CONFIDENCE');if(_0x56c39e[_0x0b91('0xaf')]===-0x1){return _0x56c39e;}var _0x537e9d=this[_0x0b91('0xa5')](_0x0b91('0xb7'),_0x0b91('0xd0'));if(_0x537e9d[_0x0b91('0xaf')]===-0x1){return _0x537e9d;}var _0x1c8976=this[_0x0b91('0xa5')]('RECOG_INSTANCE()',_0x0b91('0xd1'));if(_0x1c8976[_0x0b91('0xaf')]===-0x1){return _0x1c8976;}return this[_0x0b91('0x12')]['noop'](util[_0x0b91('0x5b')](_0x0b91('0xba'),_0x4c3a4f));};AGIVertices[_0x0b91('0x14')][_0x0b91('0xd2')]=function(_0x181227){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')]('Enter\x20in\x20SESTEKASR\x20(%s)\x20block',_0x181227[_0x0b91('0xb3')]));if(!this[_0x0b91('0x87')](_0x181227[_0x0b91('0xb4')])){return this['channel'][_0x0b91('0xac')](_0x0b91('0xcf'));}var _0x15bdc7=_0x181227[_0x0b91('0xb4')];if(this['isConfigured'](_0x181227[_0x0b91('0x79')])){_0x15bdc7+=','+_0x181227[_0x0b91('0x79')];}var _0x265361=this[_0x0b91('0x12')]['exec']('MRCPRecog',_0x15bdc7);if(_0x265361['result']===-0x1){return _0x265361;}var _0x22a70c=this['getAndSetVariable'](_0x0b91('0xb6'),'SESTEK_ASR_CONFIDENCE');if(_0x22a70c[_0x0b91('0xaf')]===-0x1){return _0x22a70c;}var _0x5cda33=this[_0x0b91('0xa5')](_0x0b91('0xb7'),'SESTEK_ASR_TRANSCRIPT');if(_0x5cda33[_0x0b91('0xaf')]===-0x1){return _0x5cda33;}var _0x2c0902=this[_0x0b91('0xa5')](_0x0b91('0xd3'),'SESTEK_ASR_INSTANCE');if(_0x2c0902['result']===-0x1){return _0x2c0902;}return this[_0x0b91('0x12')][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0xba'),_0x15bdc7));};AGIVertices[_0x0b91('0x14')][_0x0b91('0xd4')]=function(_0x14d5b8){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')](_0x0b91('0xd5'),_0x14d5b8[_0x0b91('0xb3')]));if(!this[_0x0b91('0x87')](_0x14d5b8[_0x0b91('0xd6')])){return this[_0x0b91('0x12')]['error'](_0x14d5b8,'no\x20database\x20selected');}var _0x486bfa=this[_0x0b91('0xd7')][_0x0b91('0xa8')](this,_0x14d5b8[_0x0b91('0xd6')]);if(!_0x486bfa){return this['channel']['error'](_0x14d5b8,_0x0b91('0xd8'));}if(!this[_0x0b91('0x87')](_0x14d5b8[_0x0b91('0xd9')])){return this[_0x0b91('0x12')][_0x0b91('0x30')](_0x14d5b8,_0x0b91('0xda'));}var _0xe27237=_0x14d5b8[_0x0b91('0xd9')][_0x0b91('0xdb')](/(\r\n|\n|\r)/gm,'\x20');this[_0x0b91('0x12')][_0x0b91('0xac')](util[_0x0b91('0x5b')]('query:\x20%s',_0xe27237));var _0x338770=this[_0x0b91('0xdc')][_0x0b91('0xa8')](this,_0x486bfa,_0xe27237);this[_0x0b91('0x3a')]['sync'](this,_0x14d5b8,_0xe27237);if(!this[_0x0b91('0x87')](_0x14d5b8[_0x0b91('0xdd')])){return this[_0x0b91('0x12')][_0x0b91('0xac')](_0x0b91('0xde'));}var _0x5d8fb3=this[_0x0b91('0xdf')][_0x0b91('0xa8')](this,_0x14d5b8[_0x0b91('0xdd')]);if(!_0x5d8fb3){return this[_0x0b91('0x12')][_0x0b91('0x30')](_0x14d5b8,_0x0b91('0xe0'));}var _0x3108db=this;_0x338770[_0x0b91('0xe1')](function(_0x173028,_0x51af4e){Object[_0x0b91('0xe2')](_0x173028)[_0x0b91('0xe1')](function(_0x42e1bc){_0x3108db[_0x0b91('0x12')][_0x0b91('0xa0')](util[_0x0b91('0x5b')](_0x0b91('0xe3'),_0x5d8fb3,_0x51af4e,_0x42e1bc),_0x173028[_0x42e1bc]);});});this['channel'][_0x0b91('0xa0')](util['format'](_0x0b91('0xe4'),_0x5d8fb3),_0x338770[_0x0b91('0x9b')]);return this[_0x0b91('0x12')][_0x0b91('0xac')](util['format'](_0x0b91('0xe5'),_0x5d8fb3));};AGIVertices[_0x0b91('0x14')][_0x0b91('0xe6')]=function(_0x236596){logger[_0x0b91('0xe7')](util['format'](_0x0b91('0xe8'),_0x236596[_0x0b91('0xb3')]));if(!this[_0x0b91('0x87')](_0x236596['sip_id'])){return this['channel'][_0x0b91('0x30')](_0x236596,_0x0b91('0xe9'));}var _0x3bf788=this[_0x0b91('0x1f')][_0x0b91('0xa8')](this,_0x236596[_0x0b91('0xea')]);if(!_0x3bf788){return this[_0x0b91('0x12')][_0x0b91('0x30')](_0x236596,_0x0b91('0xeb'));}var _0x2167c0=this['channel']['exec'](_0x0b91('0xec'),[util[_0x0b91('0x5b')]('SIP/%s',_0x3bf788),_0x236596[_0x0b91('0x67')],_0x236596[_0x0b91('0xed')],_0x236596[_0x0b91('0x73')]]);if(_0x2167c0[_0x0b91('0xaf')]===-0x1){return _0x2167c0;}return this[_0x0b91('0x12')][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0xee'),'DIAL'));};AGIVertices[_0x0b91('0x14')][_0x0b91('0xef')]=function(_0x1867cf){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')](_0x0b91('0xf0'),_0x1867cf['label']));if(!this[_0x0b91('0x87')](_0x1867cf['key'])){return this[_0x0b91('0x12')]['noop'](_0x0b91('0xf1'));}if(!this[_0x0b91('0x87')](_0x1867cf['text'])){return this[_0x0b91('0x12')][_0x0b91('0xac')](_0x0b91('0xca'));}this[_0x0b91('0x12')]['bot']=!![];this[_0x0b91('0x3a')](_0x1867cf);this[_0x0b91('0x47')](_0x1867cf[_0x0b91('0x63')],'in','','');this[_0x0b91('0x12')][_0x0b91('0xac')](util['format'](_0x0b91('0xf2'),_0x1867cf[_0x0b91('0x63')]));var _0x41e5a4=this[_0x0b91('0x7a')][_0x0b91('0xa8')](this,_0x1867cf);if(_0x41e5a4){for(var _0x1e812c in _0x41e5a4){if(_0x41e5a4[_0x0b91('0x97')](_0x1e812c)){this[_0x0b91('0x12')]['setVariable'](util['format'](_0x0b91('0xf3'),_0x1e812c[_0x0b91('0x6c')]()),_0x41e5a4[_0x1e812c]);}}this[_0x0b91('0x47')](_0x41e5a4[_0x0b91('0xf4')],_0x0b91('0xf5'),_0x0b91('0xef'),'');return this['channel'][_0x0b91('0xac')](util['format']('Dialogflow\x20Result\x20%s',_0x41e5a4[_0x0b91('0xf4')]));}return this[_0x0b91('0x12')][_0x0b91('0x30')](_0x1867cf,_0x0b91('0xf6'));};AGIVertices[_0x0b91('0x14')]['dialogflowV2']=function(_0x431d70){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')](_0x0b91('0xf7'),_0x431d70['label']));if(!this[_0x0b91('0x87')](_0x431d70['dialogflowV2_project_id'])){return this[_0x0b91('0x12')][_0x0b91('0xac')](_0x0b91('0xf8'));}if(!this['isConfigured'](_0x431d70['client_email'])){return this['channel']['noop']('no\x20client_email\x20configured');}if(!this[_0x0b91('0x87')](_0x431d70[_0x0b91('0x7f')])){return this['channel'][_0x0b91('0xac')](_0x0b91('0xf9'));}if(!this[_0x0b91('0x87')](_0x431d70[_0x0b91('0x80')])){return this['channel'][_0x0b91('0xac')](_0x0b91('0xfa'));}if(!this[_0x0b91('0x87')](_0x431d70[_0x0b91('0x63')])){return this[_0x0b91('0x12')]['noop'](_0x0b91('0xca'));}this['channel'][_0x0b91('0xfb')]=!![];this['createSquareDetailsReport'](_0x431d70);this[_0x0b91('0x47')](_0x431d70[_0x0b91('0x63')],'in','','');this[_0x0b91('0x12')][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0xfc'),_0x431d70[_0x0b91('0x63')]));var _0xb1f057=this[_0x0b91('0x7d')][_0x0b91('0xa8')](this,_0x431d70);if(_0xb1f057){for(var _0x521b6e in _0xb1f057){if(_0xb1f057[_0x0b91('0x97')](_0x521b6e)){if(_0x521b6e!==_0x0b91('0xfd')){this['channel'][_0x0b91('0xa0')](util[_0x0b91('0x5b')](_0x0b91('0xf3'),_0x521b6e[_0x0b91('0x6c')]()),_0xb1f057[_0x521b6e]);}}}this[_0x0b91('0x47')](_0xb1f057[_0x0b91('0xf4')],_0x0b91('0xf5'),_0x0b91('0xfe'),_0xb1f057[_0x0b91('0xfd')]);return this[_0x0b91('0x12')]['noop'](util[_0x0b91('0x5b')](_0x0b91('0xff'),_0xb1f057[_0x0b91('0xf4')]));}return this[_0x0b91('0x12')][_0x0b91('0x30')](_0x431d70,_0x0b91('0x100'));};AGIVertices[_0x0b91('0x14')][_0x0b91('0x101')]=function(_0x251978){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')]('Enter\x20in\x20SESTEKNDA\x20(%s)\x20block',_0x251978[_0x0b91('0xb3')]));if(!this[_0x0b91('0x87')](_0x251978[_0x0b91('0x102')])){return this[_0x0b91('0x12')][_0x0b91('0xac')](_0x0b91('0x103'));}if(!this['isConfigured'](_0x251978[_0x0b91('0x104')])){return this[_0x0b91('0x12')][_0x0b91('0xac')](_0x0b91('0x105'));}if(!this[_0x0b91('0x87')](_0x251978[_0x0b91('0x106')])){return this[_0x0b91('0x12')][_0x0b91('0xac')](_0x0b91('0x107'));}if(!this[_0x0b91('0x87')](_0x251978[_0x0b91('0x108')])){return this[_0x0b91('0x12')][_0x0b91('0xac')](_0x0b91('0xca'));}this[_0x0b91('0x12')][_0x0b91('0xfb')]=!![];this['createSquareDetailsReport'](_0x251978);this[_0x0b91('0x47')](_0x251978[_0x0b91('0x63')],'in','','');this[_0x0b91('0x12')]['noop'](util[_0x0b91('0x5b')](_0x0b91('0x109'),_0x251978[_0x0b91('0x63')]));var _0x2ce87a=this[_0x0b91('0x10a')][_0x0b91('0xa8')](this,_0x251978);if(_0x2ce87a){for(var _0x4599f4 in _0x2ce87a){if(_0x2ce87a[_0x0b91('0x97')](_0x4599f4)){this['channel']['setVariable'](util[_0x0b91('0x5b')]('SESTEK_NDA_%s',_0x4599f4['toUpperCase']()),_0x2ce87a[_0x4599f4]);}}this[_0x0b91('0x47')](_0x2ce87a[_0x0b91('0xf4')],_0x0b91('0xf5'),_0x0b91('0x101'),'');if(_0x2ce87a[_0x0b91('0x10b')]){this[_0x0b91('0x12')][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0x10c'),_0x2ce87a[_0x0b91('0x10b')]));var _0x4bfdb9=this[_0x0b91('0x12')]['streamFile'](_0x2ce87a['audiofile']);try{fs['unlink'](_0x2ce87a['audiofile']+'.wav');}catch(_0x115287){logger[_0x0b91('0x30')](_0x115287);}return _0x4bfdb9;}else{return this[_0x0b91('0x12')]['noop'](util[_0x0b91('0x5b')]('SestekNDA\x20Result\x20%s',_0x2ce87a[_0x0b91('0xf4')]));}}return this[_0x0b91('0x12')][_0x0b91('0x30')](_0x251978,_0x0b91('0x10d'));};AGIVertices[_0x0b91('0x14')][_0x0b91('0x10e')]=function(_0x10339a){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')](_0x0b91('0x10f'),_0x10339a[_0x0b91('0xb3')]));return this['channel'][_0x0b91('0xac')](_0x0b91('0x10e'));};AGIVertices[_0x0b91('0x14')][_0x0b91('0x110')]=function(_0x327681){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')](_0x0b91('0x111'),_0x327681[_0x0b91('0xb3')]));var _0xb5774a='';if(_0x327681[_0x0b91('0x112')]){if(!this[_0x0b91('0x87')](_0x327681[_0x0b91('0x112')])){return this['channel'][_0x0b91('0x30')](_0x327681,_0x0b91('0x113'));}else{var _0x4ac1d9=parseInt(_0x327681[_0x0b91('0x112')],0xa);if(isNaN(_0x4ac1d9)){_0xb5774a=_0x327681[_0x0b91('0x112')];}else{_0xb5774a=this[_0x0b91('0x20')][_0x0b91('0xa8')](this,_0x327681['trunk_id']);if(!_0xb5774a){return this['channel'][_0x0b91('0x30')](_0x327681,_0x0b91('0x114'));}}}}else if(_0x327681[_0x0b91('0x115')]){_0xb5774a=_0x327681[_0x0b91('0x115')];}else{return this[_0x0b91('0x12')][_0x0b91('0x30')](_0x327681,_0x0b91('0x113'));}var _0x2543cc=this[_0x0b91('0x12')][_0x0b91('0xad')](_0x0b91('0xec'),[util[_0x0b91('0x5b')](_0x0b91('0x116'),_0xb5774a,_0x327681[_0x0b91('0x4e')]),_0x327681[_0x0b91('0x67')],_0x327681['opts'],_0x327681[_0x0b91('0x73')]]);if(_0x2543cc['result']===-0x1){return _0x2543cc;}return this['channel'][_0x0b91('0xac')](util[_0x0b91('0x5b')]('Executed\x20command\x20%s',_0x0b91('0xec')));};AGIVertices[_0x0b91('0x14')]['finally']=function(_0x40ea2e){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')](_0x0b91('0x117'),_0x40ea2e[_0x0b91('0xb3')]));return this[_0x0b91('0x12')]['noop'](_0x0b91('0x118'));};AGIVertices[_0x0b91('0x14')][_0x0b91('0x10')]=function(_0x2a662a){logger[_0x0b91('0x32')](util['format']('Enter\x20in\x20GETDIGITS\x20(%s)\x20block',_0x2a662a[_0x0b91('0xb3')]));if(_0x2a662a['retry']===0x0){return this[_0x0b91('0xa7')](_0x2a662a);}_0x2a662a[_0x0b91('0xa9')]-=0x1;if(!this[_0x0b91('0x87')](_0x2a662a['file_id'])){return this['channel'][_0x0b91('0x30')](_0x2a662a,'no\x20file\x20audio\x20selected');}var _0x2cd172=this[_0x0b91('0x22')][_0x0b91('0xa8')](this,_0x2a662a[_0x0b91('0x119')]);if(!_0x2cd172){return this[_0x0b91('0x12')][_0x0b91('0x30')](_0x2a662a,_0x0b91('0x11a'));}if(!this[_0x0b91('0x87')](_0x2a662a[_0x0b91('0xdd')])){return this[_0x0b91('0x12')][_0x0b91('0x30')](_0x0b91('0xde'));}var _0x3159a8=this[_0x0b91('0x12')]['getData'](_0x2cd172,_0x2a662a[_0x0b91('0x11b')],_0x2a662a[_0x0b91('0x11c')]);var _0x4b055a=_0x3159a8[_0x0b91('0xaf')]?_0x3159a8[_0x0b91('0xaf')][_0x0b91('0x53')]():'';logger[_0x0b91('0x32')]('test',JSON[_0x0b91('0x75')](_0x3159a8));if(_0x3159a8['result']===-0x1){this['createSquareDetailsReport'][_0x0b91('0xa8')](this,_0x2a662a,_0x4b055a);return _0x3159a8;}else if(_0x3159a8['extra']===_0x0b91('0x67')){_0x3159a8[_0x0b91('0xaf')]=_0x4b055a[_0x0b91('0x9b')]>=parseInt(_0x2a662a[_0x0b91('0x11d')])?'x':'i';}else{_0x3159a8[_0x0b91('0xaf')]=_0x4b055a[_0x0b91('0x9b')]>=parseInt(_0x2a662a[_0x0b91('0x11d')])&&_0x4b055a[_0x0b91('0x9b')]<=parseInt(_0x2a662a[_0x0b91('0x11c')])?'x':'i';}var _0x2655a4=this[_0x0b91('0xdf')][_0x0b91('0xa8')](this,_0x2a662a['variable_id']);if(!_0x2655a4){return this[_0x0b91('0x12')][_0x0b91('0x30')](_0x2a662a,_0x0b91('0xe0'));}this[_0x0b91('0x12')][_0x0b91('0xa0')](_0x2655a4,_0x4b055a);if(this[_0x0b91('0x87')](_0x2a662a[_0x0b91('0x11e')])){var _0x3df56f=parseInt(_0x2a662a[_0x0b91('0x11e')],0xa);var _0x46f1c1=rs[_0x0b91('0x11f')]({'charset':'*','length':_0x3df56f});var _0x3f58b9=_0x4b055a[_0x0b91('0x9b')];if(_0x3f58b9>0x0){if(_0x3f58b9>_0x3df56f){this[_0x0b91('0x3a')][_0x0b91('0xa8')](this,_0x2a662a,_0x2a662a[_0x0b91('0x120')]==='first'?_0x46f1c1+_0x4b055a['substr'](_0x3df56f):_0x4b055a['substr'](0x0,_0x3f58b9-_0x3df56f)+_0x46f1c1);}else{this[_0x0b91('0x3a')]['sync'](this,_0x2a662a,rs['generate']({'charset':'*','length':_0x3f58b9}));}}else{this['createSquareDetailsReport']['sync'](this,_0x2a662a,'');}}else{this[_0x0b91('0x3a')][_0x0b91('0xa8')](this,_0x2a662a,_0x4b055a);}return _0x3159a8;};AGIVertices['prototype']['getsecretdigits']=function(_0x23faaf){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')](_0x0b91('0x121'),_0x23faaf['label']));return this['getdigits'](_0x23faaf);};AGIVertices[_0x0b91('0x14')][_0x0b91('0x122')]=function(_0x55c009){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')](_0x0b91('0x123'),_0x55c009[_0x0b91('0xb3')]));this[_0x0b91('0x3a')][_0x0b91('0xa8')](this,_0x55c009,_0x55c009[_0x0b91('0x124')]);return this[_0x0b91('0x12')]['noop'](util[_0x0b91('0x5b')](_0x0b91('0x125'),_0x55c009[_0x0b91('0x124')]));};AGIVertices[_0x0b91('0x14')][_0x0b91('0x126')]=function(_0x1a4457){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')]('[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block',_0x1a4457[_0x0b91('0xb3')]));if(!this[_0x0b91('0x87')](_0x1a4457['aws_access_key_id'])||!this['isConfigured'](_0x1a4457[_0x0b91('0x8b')])){return this[_0x0b91('0x12')][_0x0b91('0xac')](_0x0b91('0x127'));}if(!this[_0x0b91('0x87')](_0x1a4457[_0x0b91('0x63')])){return this['channel'][_0x0b91('0xac')](_0x0b91('0xca'));}this['channel'][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0x128'),_0x1a4457[_0x0b91('0x63')]));var _0x4299ce=this['awsPolly'][_0x0b91('0xa8')](this,_0x1a4457);if(_0x4299ce){this[_0x0b91('0x12')][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0x129'),_0x4299ce));var _0x1f55ee=this['channel'][_0x0b91('0x12a')](_0x4299ce);try{fs[_0x0b91('0x12b')](_0x4299ce+_0x0b91('0x12c'));}catch(_0x3ac6e7){logger['error'](_0x3ac6e7);}return _0x1f55ee;}return this['channel']['error'](_0x1a4457,_0x0b91('0x12d'));};AGIVertices[_0x0b91('0x14')][_0x0b91('0x12e')]=function(_0xd34172){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')](_0x0b91('0x12f'),_0xd34172['label']));if(!this[_0x0b91('0x87')](_0xd34172[_0x0b91('0x8a')])||!this['isConfigured'](_0xd34172[_0x0b91('0x8b')])){return this[_0x0b91('0x12')][_0x0b91('0xac')]('no\x20valid\x20credentials\x20configured');}if(!this[_0x0b91('0x87')](_0xd34172[_0x0b91('0x91')])){return this[_0x0b91('0x12')][_0x0b91('0xac')](_0x0b91('0x130'));}if(!this[_0x0b91('0x87')](_0xd34172[_0x0b91('0x63')])){return this[_0x0b91('0x12')][_0x0b91('0xac')](_0x0b91('0xca'));}this['channel']['bot']=!![];this['createSquareDetailsReport'](_0xd34172);this[_0x0b91('0x47')](_0xd34172[_0x0b91('0x63')],'in','','');this['channel']['noop'](util[_0x0b91('0x5b')](_0x0b91('0x131'),_0xd34172['text']));var _0x28b009=this['awsLex']['sync'](this,_0xd34172);if(_0x28b009){for(var _0x12c1fe in _0x28b009){if(_0x28b009['hasOwnProperty'](_0x12c1fe)&&_['isString'](_0x28b009[_0x12c1fe])){this['channel'][_0x0b91('0xa0')](util[_0x0b91('0x5b')](_0x0b91('0x132'),_0x12c1fe[_0x0b91('0x6c')]()),_0x28b009[_0x12c1fe]);}}if(_['isNil'](_0x28b009[_0x0b91('0x133')])){return this[_0x0b91('0x12')][_0x0b91('0xac')](_0x0b91('0x134'));}else{this[_0x0b91('0x47')](_0x28b009[_0x0b91('0x133')],_0x0b91('0xf5'),_0x0b91('0x135'),'');return this[_0x0b91('0x12')][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0x136'),_0x28b009[_0x0b91('0x133')]));}}return this['channel'][_0x0b91('0x30')](_0xd34172,'Amazon\x20Lex\x20is\x20unreachable');};AGIVertices[_0x0b91('0x14')][_0x0b91('0x137')]=function(_0x43320d){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')]('Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s',_0x43320d[_0x0b91('0xb3')],_0x43320d[_0x0b91('0x67')]));if(!this['isConfigured'](_0x43320d[_0x0b91('0x7b')])){return this[_0x0b91('0x12')]['noop'](_0x0b91('0xf1'));}var _0xa1892d=_0x0b91('0x138');var _0x33fc91=util[_0x0b91('0x5b')](_0x0b91('0x139'),FILES_PATH,rs[_0x0b91('0x11f')](0x4));var _0x46ca9a=util[_0x0b91('0x5b')](_0x0b91('0x9f'),_0x33fc91,_0xa1892d);var _0x533751=!![];if(_0x43320d[_0x0b91('0x13a')]==='NOBEEP'){_0x533751=![];}var _0x38b984=this[_0x0b91('0x12')][_0x0b91('0x13b')](_0x33fc91,_0xa1892d,_0x43320d[_0x0b91('0x13c')],_0x43320d['timeout'],undefined,_0x533751);if(_0x38b984['result']!==-0x1){this[_0x0b91('0x12')][_0x0b91('0xac')](util['format'](_0x0b91('0x13d'),_0x46ca9a));var _0x4ed405=this[_0x0b91('0x92')][_0x0b91('0xa8')](this,_0x43320d,_0x46ca9a);if(_0x4ed405){for(var _0x5467ab in _0x4ed405){if(_0x4ed405[_0x0b91('0x97')](_0x5467ab)){this['channel'][_0x0b91('0xa0')](util[_0x0b91('0x5b')](_0x0b91('0x13e'),_0x5467ab[_0x0b91('0x6c')]()),_0x4ed405[_0x5467ab]);}}return this[_0x0b91('0x12')][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0x13f'),JSON[_0x0b91('0x75')](_0x4ed405)));}}return _0x38b984;};AGIVertices[_0x0b91('0x14')]['tildeasr']=function(_0x3e7b7f){logger[_0x0b91('0x32')](util['format'](_0x0b91('0x140'),_0x3e7b7f[_0x0b91('0xb3')]));if(!this[_0x0b91('0x87')](_0x3e7b7f[_0x0b91('0x141')])){return this[_0x0b91('0x12')][_0x0b91('0xac')]('no\x20appid\x20configured');}if(!this['isConfigured'](_0x3e7b7f[_0x0b91('0x94')])){return this[_0x0b91('0x12')][_0x0b91('0xac')](_0x0b91('0x142'));}var _0x116cf5=_0x0b91('0x138');var _0x5a0724=util['format']('%s/recordings/%s',FILES_PATH,rs['generate'](0x4));var _0x2344b4=util[_0x0b91('0x5b')]('%s.%s',_0x5a0724,_0x116cf5);var _0x39e571=!![];if(_0x3e7b7f[_0x0b91('0x13a')]===_0x0b91('0x143')){_0x39e571=![];}var _0x3fd73d=this['channel'][_0x0b91('0x13b')](_0x5a0724,_0x116cf5,_0x3e7b7f[_0x0b91('0x13c')],_0x3e7b7f[_0x0b91('0x67')],undefined,_0x39e571);if(_0x3fd73d['result']!==-0x1){this[_0x0b91('0x12')]['noop'](util['format'](_0x0b91('0x144'),_0x2344b4));var _0x132965=this[_0x0b91('0x93')]['sync'](this,_0x3e7b7f,_0x2344b4);if(_0x132965){for(var _0x3c80c6 in _0x132965){if(_0x132965[_0x0b91('0x97')](_0x3c80c6)){this[_0x0b91('0x12')]['setVariable'](util['format'](_0x0b91('0x145'),_0x3c80c6[_0x0b91('0x6c')]()),_0x132965[_0x3c80c6]);}}return this['channel'][_0x0b91('0xac')](util[_0x0b91('0x5b')]('TildeASR\x20Result\x20%s',JSON[_0x0b91('0x75')](_0x132965)));}}return _0x3fd73d;};AGIVertices[_0x0b91('0x14')][_0x0b91('0x146')]=function(_0x504a3f){logger[_0x0b91('0x32')](util['format'](_0x0b91('0x147'),_0x504a3f[_0x0b91('0xb3')]));return this[_0x0b91('0x12')][_0x0b91('0x148')](_0x504a3f['context'],_0x504a3f[_0x0b91('0x42')],_0x504a3f[_0x0b91('0x43')]);};AGIVertices[_0x0b91('0x14')][_0x0b91('0x149')]=function(_0x2d7050){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')](_0x0b91('0x14a'),_0x2d7050[_0x0b91('0xb3')]));if(!this[_0x0b91('0x87')](_0x2d7050[_0x0b91('0x14b')])){return this['channel']['error'](_0x2d7050,'no\x20condition\x20configured');}try{var _0x1cbd55=eval(_0x2d7050[_0x0b91('0x14b')])?'true':_0x0b91('0x14c');this['channel'][_0x0b91('0xac')](util['format']('EVAL\x20CONDITION\x20%s\x20%s',_0x2d7050['condition'],_0x1cbd55));return{'code':0xc8,'result':_0x1cbd55};}catch(_0x285551){return{'code':0xc8,'result':_0x0b91('0x14c')};}};AGIVertices[_0x0b91('0x14')][_0x0b91('0x14d')]=function(_0x5ae6ef){logger[_0x0b91('0x32')](util['format'](_0x0b91('0x14e'),_0x5ae6ef['label']));if(!this['isConfigured'](_0x5ae6ef[_0x0b91('0x14f')])){return this['channel'][_0x0b91('0x30')](_0x5ae6ef,_0x0b91('0x150'));}var _0x1a3b8f=this[_0x0b91('0x29')]['sync'](this,_0x5ae6ef[_0x0b91('0x14f')]);if(!_0x1a3b8f){return this['channel'][_0x0b91('0x30')](_0x5ae6ef,'no\x20intervals\x20found');}for(var _0x192b25=0x0;_0x192b25<_0x1a3b8f['length'];_0x192b25+=0x1){var _0x129f12=this[_0x0b91('0x12')][_0x0b91('0xdf')](util['format'](_0x0b91('0x151'),_0x1a3b8f[_0x192b25]));if(_0x129f12['result']===-0x1){return _0x129f12;}logger[_0x0b91('0x32')](util[_0x0b91('0x5b')]('IFTIME\x20%s\x20%s',_0x1a3b8f[_0x192b25],_0x129f12[_0x0b91('0xa4')]));if(_0x129f12[_0x0b91('0xa4')]===_0x0b91('0x152')){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')]('IFTIME\x20%s\x20%s',_0x1a3b8f[_0x192b25],_0x0b91('0x152')));this['channel'][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0x153'),_0x1a3b8f[_0x192b25],'true'));return{'code':0xc8,'result':'true'};}else{logger['info'](util['format']('IFTIME\x20%s\x20%s',_0x1a3b8f[_0x192b25],_0x0b91('0x14c')));this[_0x0b91('0x12')][_0x0b91('0xac')](util['format'](_0x0b91('0x153'),_0x1a3b8f[_0x192b25],_0x0b91('0x14c')));}}return{'code':0xc8,'result':'false'};};AGIVertices[_0x0b91('0x14')][_0x0b91('0x154')]=function(_0x2a4ba2){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')]('Enter\x20in\x20HANGUP\x20(%s)\x20block',_0x2a4ba2[_0x0b91('0xb3')]));return this[_0x0b91('0x12')]['hangup']();};AGIVertices[_0x0b91('0x14')][_0x0b91('0x155')]=function(_0x318d76){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')](_0x0b91('0x156'),_0x318d76['label']));if(!this['isConfigured'](_0x318d76[_0x0b91('0x7b')])){return this[_0x0b91('0x12')][_0x0b91('0xac')](_0x0b91('0xf1'));}var _0x2c468f=_0x0b91('0x138');var _0x30faad=util['format'](_0x0b91('0x139'),FILES_PATH,rs[_0x0b91('0x11f')](0x4));var _0x13c8f8=util[_0x0b91('0x5b')]('%s.%s',_0x30faad,_0x2c468f);var _0x125489=!![];if(_0x318d76[_0x0b91('0x13a')]==='NOBEEP'){_0x125489=![];}var _0x1f24f4=this[_0x0b91('0x12')][_0x0b91('0x13b')](_0x30faad,_0x2c468f,_0x318d76[_0x0b91('0x13c')],_0x318d76[_0x0b91('0x67')],undefined,_0x125489);if(_0x1f24f4[_0x0b91('0xaf')]!==-0x1){this[_0x0b91('0x12')][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0x157'),_0x13c8f8));var _0x48a961=this['ispeechASR']['sync'](this,_0x318d76,_0x13c8f8);if(_0x48a961){for(var _0x805b22 in _0x48a961){if(_0x48a961[_0x0b91('0x97')](_0x805b22)){this['channel']['setVariable'](util[_0x0b91('0x5b')]('ISPEECH_ASR_%s',_0x805b22[_0x0b91('0x6c')]()),_0x48a961[_0x805b22]);}}return this[_0x0b91('0x12')][_0x0b91('0xac')](util['format'](_0x0b91('0x158'),JSON[_0x0b91('0x75')](_0x48a961)));}}return _0x1f24f4;};AGIVertices[_0x0b91('0x14')]['ispeechtts']=function(_0x3b2a3f){logger['info'](util[_0x0b91('0x5b')]('Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block',_0x3b2a3f['label']));if(!this[_0x0b91('0x87')](_0x3b2a3f[_0x0b91('0x7b')])){return this[_0x0b91('0x12')][_0x0b91('0xac')](_0x0b91('0xf1'));}if(!this[_0x0b91('0x87')](_0x3b2a3f[_0x0b91('0x63')])){return this['channel'][_0x0b91('0xac')](_0x0b91('0xca'));}this[_0x0b91('0x12')][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0x159'),_0x3b2a3f[_0x0b91('0x63')]));var _0x162bec=this['ispeechTTS'][_0x0b91('0xa8')](this,_0x3b2a3f);if(_0x162bec){this[_0x0b91('0x12')][_0x0b91('0xac')](util[_0x0b91('0x5b')]('ispeech\x20%s\x20file\x20created',_0x162bec));var _0x5c4b85=this[_0x0b91('0x12')]['streamFile'](_0x162bec,_0x3b2a3f['intKey']);try{fs[_0x0b91('0x12b')](_0x162bec+_0x0b91('0x12c'));}catch(_0x5db52b){logger[_0x0b91('0x30')](_0x5db52b);}return _0x5c4b85;}return this['channel'][_0x0b91('0x30')](_0x3b2a3f,_0x0b91('0x15a'));};AGIVertices[_0x0b91('0x14')]['login']=function(_0x35de3f){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')](_0x0b91('0x15b'),_0x35de3f[_0x0b91('0xb3')]));if(!this[_0x0b91('0x87')](_0x35de3f[_0x0b91('0x15c')])){return this['channel'][_0x0b91('0x30')](_0x35de3f,_0x0b91('0x15d'));}logger[_0x0b91('0x32')](util[_0x0b91('0x5b')](_0x0b91('0x15e'),this[_0x0b91('0x12')][_0x0b91('0x3f')],_0x35de3f['findBy']));var _0x27508c=this[_0x0b91('0x5e')][_0x0b91('0xa8')](this,_0x35de3f[_0x0b91('0x15c')]);if(_0x27508c){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0x0b91('0x3f')],_0x35de3f[_0x0b91('0x15c')]));this['channel'][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0x15f'),this[_0x0b91('0x12')][_0x0b91('0x3f')],_0x35de3f[_0x0b91('0x15c')]));return{'code':0xc8,'result':'success'};}else{logger['info'](util[_0x0b91('0x5b')](_0x0b91('0x160'),this['channel'][_0x0b91('0x3f')],_0x35de3f[_0x0b91('0x15c')]));this[_0x0b91('0x12')]['noop'](util[_0x0b91('0x5b')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x0b91('0x12')]['callerid'],_0x35de3f[_0x0b91('0x15c')]));return{'code':0xc8,'result':_0x0b91('0x161')};}};AGIVertices[_0x0b91('0x14')]['logout']=function(_0x96cc71){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')]('Enter\x20in\x20LOGOUT\x20(%s)\x20block',_0x96cc71['label']));if(!this[_0x0b91('0x87')](_0x96cc71['findBy'])){return this[_0x0b91('0x12')][_0x0b91('0x30')](_0x96cc71,_0x0b91('0x15d'));}logger[_0x0b91('0x32')](util[_0x0b91('0x5b')](_0x0b91('0x15e'),this[_0x0b91('0x12')]['callerid'],_0x96cc71[_0x0b91('0x15c')]));var _0x4e198a=this[_0x0b91('0x59')][_0x0b91('0xa8')](this,_0x96cc71[_0x0b91('0x15c')]);if(_0x4e198a){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')](_0x0b91('0x15f'),this[_0x0b91('0x12')][_0x0b91('0x3f')],_0x96cc71[_0x0b91('0x15c')]));this['channel'][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0x15f'),this[_0x0b91('0x12')][_0x0b91('0x3f')],_0x96cc71[_0x0b91('0x15c')]));return{'code':0xc8,'result':_0x0b91('0x162')};}else{logger[_0x0b91('0x32')](util[_0x0b91('0x5b')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x0b91('0x12')]['callerid'],_0x96cc71[_0x0b91('0x15c')]));this[_0x0b91('0x12')][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0x160'),this[_0x0b91('0x12')]['callerid'],_0x96cc71[_0x0b91('0x15c')]));return{'code':0xc8,'result':_0x0b91('0x161')};}};AGIVertices[_0x0b91('0x14')][_0x0b91('0x163')]=function(_0x5aef9e){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')]('Enter\x20in\x20MATH\x20(%s)\x20block',_0x5aef9e[_0x0b91('0xb3')]));if(!this['isConfigured'](_0x5aef9e[_0x0b91('0x164')])){return this[_0x0b91('0x12')][_0x0b91('0x30')](_0x5aef9e,_0x0b91('0x165'));}this[_0x0b91('0x12')][_0x0b91('0xac')](util['format'](_0x0b91('0x166'),_0x5aef9e[_0x0b91('0x164')]));var _0x568489=eval(_0x5aef9e['operation']);if(!this[_0x0b91('0x87')](_0x5aef9e['variable_id'])){return this[_0x0b91('0x12')][_0x0b91('0xac')](_0x0b91('0xde'));}var _0x362512=this[_0x0b91('0xdf')]['sync'](this,_0x5aef9e['variable_id']);if(!_0x362512){return this[_0x0b91('0x12')][_0x0b91('0x30')](_0x5aef9e,_0x0b91('0xe0'));}if(_['isArray'](_0x568489)){var _0x33ad92=this;_0x568489[_0x0b91('0xe1')](function(_0x286bcd,_0x312434){_0x33ad92[_0x0b91('0x12')][_0x0b91('0xa0')](util['format'](_0x0b91('0x167'),_0x362512,_0x312434),_0x286bcd);});return this[_0x0b91('0x12')]['noop'](util[_0x0b91('0x5b')]('variable\x20%s[key]\x20set',_0x362512));}else{return this[_0x0b91('0x12')]['setVariable'](_0x362512,_0x568489);}};AGIVertices[_0x0b91('0x14')][_0x0b91('0xf')]=function(_0x2988ac){logger['info'](util['format'](_0x0b91('0x168'),_0x2988ac[_0x0b91('0xb3')]));if(_0x2988ac[_0x0b91('0xa9')]===0x0){return this['maxRetry'](_0x2988ac);}_0x2988ac[_0x0b91('0xa9')]-=0x1;if(!this['isConfigured'](_0x2988ac[_0x0b91('0x119')])){return this[_0x0b91('0x12')][_0x0b91('0x30')](_0x2988ac,_0x0b91('0x169'));}var _0x5486ae=this['getSound'][_0x0b91('0xa8')](this,_0x2988ac[_0x0b91('0x119')]);if(!_0x5486ae){return this[_0x0b91('0x12')][_0x0b91('0x30')](_0x2988ac,_0x0b91('0x11a'));}var _0x19f01f=this['channel'][_0x0b91('0x16a')](_0x5486ae,_0x2988ac[_0x0b91('0x11b')],_0x2988ac[_0x0b91('0x16b')]);var _0x549fb9=_0x19f01f[_0x0b91('0xaf')];if(_0x19f01f[_0x0b91('0xaf')]===-0x1){this[_0x0b91('0x3a')][_0x0b91('0xa8')](this,_0x2988ac,'-1');return _0x19f01f;}else if(_0x19f01f[_0x0b91('0xa4')]===_0x0b91('0x67')){_0x19f01f['result']=_0x19f01f[_0x0b91('0xaf')]['length']>0x0?_0x19f01f[_0x0b91('0xaf')]:'t';}else if(_[_0x0b91('0x49')](_0x19f01f[_0x0b91('0xaf')])){_0x19f01f[_0x0b91('0xaf')]='#';_0x549fb9='#';}if(!this[_0x0b91('0x87')](_0x2988ac['variable_id'])){this[_0x0b91('0x12')]['noop']('no\x20variable\x20selected\x20for\x20the\x20result');}else{var _0xe772b6=this[_0x0b91('0xdf')][_0x0b91('0xa8')](this,_0x2988ac[_0x0b91('0xdd')]);if(!_0xe772b6){return this[_0x0b91('0x12')][_0x0b91('0x30')](_0x2988ac,_0x0b91('0xe0'));}this[_0x0b91('0x12')]['setVariable'](_0xe772b6,_0x549fb9);}this[_0x0b91('0x3a')][_0x0b91('0xa8')](this,_0x2988ac,_0x549fb9);return _0x19f01f;};AGIVertices[_0x0b91('0x14')][_0x0b91('0xac')]=function(_0x756cf1){logger['info'](util['format'](_0x0b91('0x16c'),_0x756cf1[_0x0b91('0xb3')]));return this[_0x0b91('0x12')]['noop'](_0x756cf1[_0x0b91('0x16d')]||_0x756cf1[_0x0b91('0xb3')]);};AGIVertices[_0x0b91('0x14')][_0x0b91('0x16e')]=function(_0x34e569){logger[_0x0b91('0x32')](util['format']('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x34e569[_0x0b91('0xb3')]));if(!this[_0x0b91('0x87')](_0x34e569['findBy'])){return this['channel'][_0x0b91('0x30')](_0x34e569,'no\x20find\x20by\x20configured');}logger[_0x0b91('0x32')](util[_0x0b91('0x5b')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this['channel'][_0x0b91('0x3f')],_0x34e569['findBy']));var _0xce8afb=this[_0x0b91('0x55')]['sync'](this,_0x34e569['pause_id']);var _0x5ed618=this[_0x0b91('0x57')][_0x0b91('0xa8')](this,_0x34e569[_0x0b91('0x15c')],_0xce8afb);if(_0x5ed618){logger['info'](util[_0x0b91('0x5b')](_0x0b91('0x15f'),this[_0x0b91('0x12')]['callerid'],_0x34e569[_0x0b91('0x15c')]));this[_0x0b91('0x12')][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0x15f'),this['channel']['callerid'],_0x34e569['findBy']));return{'code':0xc8,'result':'success'};}else{logger['info'](util[_0x0b91('0x5b')](_0x0b91('0x160'),this[_0x0b91('0x12')][_0x0b91('0x3f')],_0x34e569[_0x0b91('0x15c')]));this[_0x0b91('0x12')]['noop'](util[_0x0b91('0x5b')](_0x0b91('0x15f'),this[_0x0b91('0x12')]['callerid'],_0x34e569[_0x0b91('0x15c')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x0b91('0x14')]['playback']=function(_0x21c8c9){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')]('Enter\x20in\x20PLAYBACK\x20(%s)\x20block',_0x21c8c9[_0x0b91('0xb3')]));if(!this['isConfigured'](_0x21c8c9[_0x0b91('0x119')])){return this[_0x0b91('0x12')]['error'](_0x21c8c9,_0x0b91('0x169'));}var _0x32956d=this[_0x0b91('0x22')][_0x0b91('0xa8')](this,_0x21c8c9[_0x0b91('0x119')]);if(!_0x32956d){return this[_0x0b91('0x12')][_0x0b91('0x30')](_0x21c8c9,_0x0b91('0x11a'));}var _0x1f41a3=this[_0x0b91('0x12')][_0x0b91('0xad')]('PLAYBACK',[_0x32956d,_0x21c8c9[_0x0b91('0xed')]]);if(_0x1f41a3[_0x0b91('0xaf')]===-0x1){return _0x1f41a3;}return this[_0x0b91('0x12')][_0x0b91('0xac')](util['format'](_0x0b91('0xc7'),'PLAYBACK',_0x32956d));};AGIVertices[_0x0b91('0x14')][_0x0b91('0x16f')]=function(_0x584940){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')](_0x0b91('0x170'),_0x584940['label']));if(!this['isConfigured'](_0x584940['queue_id'])){return this[_0x0b91('0x12')][_0x0b91('0x30')](_0x584940,_0x0b91('0x171'));}var _0x51baf4='';var _0x33edab=parseInt(_0x584940[_0x0b91('0x172')],0xa);if(isNaN(_0x33edab)){_0x51baf4=_0x584940[_0x0b91('0x172')];}else{_0x51baf4=this[_0x0b91('0x18')][_0x0b91('0xa8')](this,_0x584940[_0x0b91('0x172')]);if(!_0x51baf4){return this[_0x0b91('0x12')]['error'](_0x584940,_0x0b91('0x173'));}}var _0x5a06fa='';if(this['isConfigured'](_0x584940[_0x0b91('0x119')])){var _0x347627=this[_0x0b91('0x22')]['sync'](this,_0x584940[_0x0b91('0x119')]);if(_0x347627){_0x5a06fa=_0x347627;}}this[_0x0b91('0x3a')]['sync'](this,_0x584940,_0x51baf4);if(_0x584940[_0x0b91('0xed')][_0x0b91('0x174')]('x')<0x0){_0x584940[_0x0b91('0xed')]+='x';}if(_0x584940['opts'][_0x0b91('0x174')]('X')<0x0){_0x584940[_0x0b91('0xed')]+='X';}this[_0x0b91('0x12')][_0x0b91('0xa0')](_0x0b91('0x175'),_0x51baf4?_0x51baf4['toLowerCase']():'');var _0x481857=this[_0x0b91('0x12')][_0x0b91('0xad')](_0x0b91('0x176'),[_0x51baf4,_0x584940[_0x0b91('0xed')],_0x584940['url'],_0x5a06fa,_0x584940[_0x0b91('0x67')],_0x584940[_0x0b91('0x9')],_0x584940[_0x0b91('0x177')],_0x584940['gosub'],'',_0x584940[_0x0b91('0x178')]]);if(_0x481857[_0x0b91('0xaf')]===-0x1){return _0x481857;}return this[_0x0b91('0x12')][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0xc7'),_0x0b91('0x176'),_0x51baf4));};AGIVertices[_0x0b91('0x14')]['record']=function(_0xa9e179){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')]('Enter\x20in\x20RECORD\x20(%s)\x20block',_0xa9e179['label']));var _0x4f330a=_0xa9e179['recordingFormat']||_0x0b91('0x138');var _0x40ff2c=util[_0x0b91('0x5b')]('%s_%s',this[_0x0b91('0x12')][_0x0b91('0x3b')],rs[_0x0b91('0x11f')](0x5));var _0x187f2c=util[_0x0b91('0x5b')](_0x0b91('0x179'),FILES_PATH,_0x40ff2c,_0x4f330a);var _0x26739c=util[_0x0b91('0x5b')]('%s/recordings/%s',FILES_PATH,_0x40ff2c);this[_0x0b91('0x3e')]['sync'](this,_0xa9e179,_0x40ff2c,_0x187f2c);this[_0x0b91('0x12')][_0x0b91('0xa0')](_0x0b91('0x17a'),_0x40ff2c);logger[_0x0b91('0x32')](_0x0b91('0x17b'),_0x26739c,_0x4f330a,_0xa9e179[_0x0b91('0x17c')],_0xa9e179['timeout']);return this['channel'][_0x0b91('0x13b')](_0x26739c,_0x4f330a,_0xa9e179[_0x0b91('0x17c')],_0xa9e179[_0x0b91('0x67')],undefined,!![]);};AGIVertices[_0x0b91('0x14')][_0x0b91('0x17d')]=function(_0x209966){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')](_0x0b91('0x17e'),_0x209966[_0x0b91('0xb3')]));if(!this[_0x0b91('0x87')](_0x209966[_0x0b91('0x73')])){return this[_0x0b91('0x12')][_0x0b91('0xac')]('no\x20url\x20configured');}var _0x4601cb=this[_0x0b91('0x65')][_0x0b91('0xa8')](this,_0x209966);logger[_0x0b91('0x32')](util[_0x0b91('0x5b')]('Response:',util[_0x0b91('0x17f')](_0x4601cb,{'showHidden':![],'depth':null})));if(!this[_0x0b91('0x87')](_0x209966[_0x0b91('0xdd')])){return this[_0x0b91('0x12')][_0x0b91('0xac')](_0x0b91('0x180'));}var _0x3d7f60=this[_0x0b91('0xdf')][_0x0b91('0xa8')](this,_0x209966[_0x0b91('0xdd')]);if(!_0x3d7f60){return this[_0x0b91('0x12')][_0x0b91('0x30')](_0x209966,_0x0b91('0xe0'));}this['channel'][_0x0b91('0xa0')](util[_0x0b91('0x5b')](_0x0b91('0x181'),_0x3d7f60),_0x4601cb[_0x0b91('0x78')]?_0x4601cb[_0x0b91('0x78')]:_0x0b91('0x182'));this[_0x0b91('0x12')][_0x0b91('0xa0')](util[_0x0b91('0x5b')](_0x0b91('0x183'),_0x3d7f60),_0x4601cb[_0x0b91('0x77')]?_0x4601cb[_0x0b91('0x77')]:'OK');if(_0x4601cb[_0x0b91('0x6d')]){try{this[_0x0b91('0x9e')](_0x4601cb[_0x0b91('0x6d')],_0x3d7f60);}catch(_0x2ac161){logger[_0x0b91('0x30')](util[_0x0b91('0x5b')](_0x0b91('0x184'),_0x3d7f60));}}return this['channel'][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0xe5'),_0x3d7f60));};AGIVertices[_0x0b91('0x14')][_0x0b91('0x185')]=function(_0x1772a7){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')](_0x0b91('0x186'),_0x1772a7['label']));return this['channel'][_0x0b91('0x187')](_0x1772a7[_0x0b91('0x188')]['replace'](/\s+/g,''),_0x1772a7[_0x0b91('0x17c')]);};AGIVertices['prototype'][_0x0b91('0x189')]=function(_0x2f5cee){logger['info'](util['format'](_0x0b91('0x18a'),_0x2f5cee[_0x0b91('0xb3')]));return this['channel'][_0x0b91('0x18b')](_0x2f5cee[_0x0b91('0x68')][_0x0b91('0xdb')](/\s+/g,''),_0x2f5cee['escape_digits']);};AGIVertices[_0x0b91('0x14')][_0x0b91('0x18c')]=function(_0x4f5106){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')](_0x0b91('0x18d'),_0x4f5106[_0x0b91('0xb3')]));return this[_0x0b91('0x12')]['sayPhonetic'](_0x4f5106[_0x0b91('0x63')],_0x4f5106['escape_digits']);};AGIVertices['prototype'][_0x0b91('0x18e')]=function(_0x221f8c){logger[_0x0b91('0x32')](util['format'](_0x0b91('0x18f'),_0x221f8c[_0x0b91('0xb3')]));if(!this[_0x0b91('0x87')](_0x221f8c[_0x0b91('0x190')])){return this[_0x0b91('0x12')][_0x0b91('0xac')](_0x0b91('0x191'));}var _0x3f5b43=this['getMailAccount'][_0x0b91('0xa8')](this,_0x221f8c[_0x0b91('0x190')]);if(!_0x3f5b43||!_0x3f5b43[_0x0b91('0x192')]){return this[_0x0b91('0x12')][_0x0b91('0x30')](_0x221f8c,'no\x20mail\x20account\x20found');}var _0x2a247f={'from':util['format'](_0x0b91('0x193'),_0x3f5b43[_0x0b91('0x17')],_0x3f5b43[_0x0b91('0x194')]||_0x3f5b43[_0x0b91('0x192')]['user']),'to':_0x221f8c['to']||'','cc':_0x221f8c['cc']||'','bcc':_0x221f8c[_0x0b91('0x195')]||'','subject':_0x221f8c[_0x0b91('0x196')],'html':_0x221f8c[_0x0b91('0x63')],'text':_0x221f8c[_0x0b91('0x63')]};if(this['isConfigured'](_0x221f8c['template_id'])){}logger['debug'](_0x0b91('0x197'),JSON[_0x0b91('0x75')](_0x2a247f));this['createSquareDetailsReport']['sync'](this,_0x221f8c,_0x221f8c[_0x0b91('0x190')]);this['channel'][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0x198'),_0x3f5b43['name']));this[_0x0b91('0x28')][_0x0b91('0xa8')](this,_0x3f5b43['smtpOptions'],_0x2a247f);return this[_0x0b91('0x12')][_0x0b91('0xac')](_0x0b91('0x199'));};AGIVertices[_0x0b91('0x14')][_0x0b91('0x19a')]=function(_0x515db6){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')](_0x0b91('0x19b'),_0x515db6[_0x0b91('0xb3')]));return this[_0x0b91('0x12')][_0x0b91('0xac')](_0x0b91('0x19c'));};AGIVertices[_0x0b91('0x14')][_0x0b91('0x19d')]=function(_0x3c1400){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')]('Enter\x20in\x20SENDSMS\x20(%s)\x20block',_0x3c1400[_0x0b91('0xb3')]));if(!this[_0x0b91('0x87')](_0x3c1400[_0x0b91('0x19e')])){return this[_0x0b91('0x12')][_0x0b91('0xac')](_0x0b91('0x19f'));}var _0x28b310=this[_0x0b91('0x1a0')][_0x0b91('0xa8')](this,_0x3c1400[_0x0b91('0x19e')]);if(!_0x28b310){return this['channel'][_0x0b91('0x30')](_0x3c1400,'no\x20sms\x20account\x20found');}var _0x26343f={'body':_0x3c1400[_0x0b91('0x1a1')],'phone':_0x3c1400['to']||'','SmsAccountId':_0x28b310['id']};logger['debug']('sendSMS\x20message',JSON[_0x0b91('0x75')](_0x26343f));this[_0x0b91('0x3a')][_0x0b91('0xa8')](this,_0x3c1400,_0x3c1400[_0x0b91('0x19e')]);this[_0x0b91('0x12')][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0x1a2'),_0x28b310[_0x0b91('0x17')]));this[_0x0b91('0x39')][_0x0b91('0xa8')](this,_0x26343f);return this[_0x0b91('0x12')][_0x0b91('0xac')]('Sms\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0x0b91('0x14')][_0x0b91('0x1a3')]=function(_0x40ff8d){logger['info'](util['format'](_0x0b91('0x1a4'),_0x40ff8d['label']));if(!this[_0x0b91('0x87')](_0x40ff8d['variable_id'])){return this['channel'][_0x0b91('0x30')](_0x40ff8d,_0x0b91('0x1a5'));}var _0x571a40=this[_0x0b91('0xdf')]['sync'](this,_0x40ff8d[_0x0b91('0xdd')]);if(!_0x571a40){return this[_0x0b91('0x12')]['error'](_0x40ff8d,'no\x20variable\x20found');}return this[_0x0b91('0x12')][_0x0b91('0xa0')](_0x571a40,_0x40ff8d[_0x0b91('0x1a6')]);};AGIVertices[_0x0b91('0x14')]['start']=function(_0x25490a){logger[_0x0b91('0x32')](util['format'](_0x0b91('0x1a7'),_0x25490a['label']));this['channel']['noop'](_0x0b91('0x1a8'));if(_0x25490a[_0x0b91('0x1a9')]===_0x0b91('0x1aa')){this[_0x0b91('0x12')][_0x0b91('0xac')](_0x0b91('0x1ab'));return this[_0x0b91('0x12')][_0x0b91('0x1a9')]();}return this[_0x0b91('0x12')][_0x0b91('0xac')](_0x0b91('0x1ac'));};AGIVertices['prototype']['subproject']=function(_0x324d4d){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')](_0x0b91('0x1ad'),_0x324d4d[_0x0b91('0xb3')]));if(!this['isConfigured'](_0x324d4d['project_id'])){return this[_0x0b91('0x12')]['error'](_0x324d4d,'no\x20subproject\x20selected');}var _0x131b2c=this[_0x0b91('0x1b')][_0x0b91('0xa8')](this,_0x324d4d[_0x0b91('0x1ae')]);if(!this['isConfigured'](_0x131b2c)){return this[_0x0b91('0x12')]['error'](_0x324d4d,util[_0x0b91('0x5b')]('no\x20subproject\x20found\x20with\x20id\x20%d',_0x324d4d[_0x0b91('0x1ae')]));}if(_0x131b2c===this[_0x0b91('0x12')][_0x0b91('0x3d')]){return this[_0x0b91('0x12')][_0x0b91('0x30')](_0x324d4d,_0x0b91('0x1af'));}this['createSquareDetailsReport'][_0x0b91('0xa8')](this,_0x324d4d,_0x131b2c);var _0x3ed94c=this[_0x0b91('0x12')][_0x0b91('0xad')](_0x0b91('0x1b0'),util[_0x0b91('0x5b')](_0x0b91('0x1b1'),config[_0x0b91('0x9')][_0x0b91('0x1b2')]||'127.0.0.1',_0x131b2c,this['channel']['arg_1']));if(_0x3ed94c[_0x0b91('0xaf')]===-0x1){return _0x3ed94c;}return this['channel'][_0x0b91('0xac')](util['format']('Executed\x20command\x20%s\x20%s','AGI',_0x131b2c));};AGIVertices[_0x0b91('0x14')][_0x0b91('0x1b3')]=function(_0x531f82){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')]('Enter\x20in\x20SYSTEM\x20(%s)\x20block',_0x531f82[_0x0b91('0xb3')]));var _0x282ec=this['shellCommand'][_0x0b91('0xa8')](this,_0x531f82[_0x0b91('0x1b4')]);this['createSquareDetailsReport']['sync'](this,_0x531f82,_0x531f82['command']);if(this['isConfigured'](_0x531f82[_0x0b91('0xdd')])){var _0x78e48c=this[_0x0b91('0xdf')][_0x0b91('0xa8')](this,_0x531f82[_0x0b91('0xdd')]);if(_0x78e48c){this[_0x0b91('0x12')][_0x0b91('0xa0')](_0x78e48c,_0x282ec);return this[_0x0b91('0x12')][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0x1b5'),_0x531f82[_0x0b91('0x1b4')],_0x78e48c));}}return this['channel'][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0x1b6'),_0x531f82[_0x0b91('0x1b4')]));};AGIVertices[_0x0b91('0x14')][_0x0b91('0x1b7')]=function(_0x11fae2){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')](_0x0b91('0x1b8'),_0x11fae2[_0x0b91('0xb3')]));_0x11fae2[_0x0b91('0x63')]=_0x11fae2[_0x0b91('0x63')][_0x0b91('0xdb')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x11fae2['apiKey'])){return this['channel'][_0x0b91('0xac')](_0x0b91('0x1b9'));}if(!this[_0x0b91('0x87')](_0x11fae2[_0x0b91('0x63')])){return this['channel']['noop'](_0x0b91('0xca'));}this[_0x0b91('0x12')][_0x0b91('0xac')](util['format'](_0x0b91('0x1ba'),_0x11fae2[_0x0b91('0x63')]));var _0x1e07cd=this['googleCloudTTS'][_0x0b91('0xa8')](this,_0x11fae2);if(_0x1e07cd){this[_0x0b91('0x12')]['noop'](util[_0x0b91('0x5b')](_0x0b91('0x1bb'),_0x1e07cd));var _0x2c28a8=this['channel']['streamFile'](_0x1e07cd);try{fs['unlink'](_0x1e07cd+_0x0b91('0x12c'));}catch(_0x2ca03d){logger[_0x0b91('0x30')](_0x2ca03d);}return _0x2c28a8;}return this[_0x0b91('0x12')][_0x0b91('0x30')](_0x11fae2,'Google\x20Cloud\x20TTS\x20is\x20unreachable');};AGIVertices['prototype'][_0x0b91('0x1bc')]=function(_0x2632fe){logger['info'](util[_0x0b91('0x5b')](_0x0b91('0x1bd'),_0x2632fe[_0x0b91('0xb3')]));_0x2632fe[_0x0b91('0x63')]=_0x2632fe[_0x0b91('0x63')][_0x0b91('0xdb')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x0b91('0x87')](_0x2632fe[_0x0b91('0x63')])){return this[_0x0b91('0x12')][_0x0b91('0xac')]('no\x20text\x20configured');}this[_0x0b91('0x12')][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0x1be'),_0x2632fe[_0x0b91('0x63')]));var _0x240544=this[_0x0b91('0x1bf')][_0x0b91('0xa8')](this,_0x2632fe);if(_0x240544){this[_0x0b91('0x12')]['noop'](util[_0x0b91('0x5b')](_0x0b91('0x1c0'),_0x240544));var _0x557a74=this[_0x0b91('0x12')][_0x0b91('0x12a')](_0x240544);try{fs[_0x0b91('0x12b')](_0x240544+_0x0b91('0x12c'));}catch(_0x2baa9c){logger[_0x0b91('0x30')](_0x2baa9c);}return _0x557a74;}return this['channel']['error'](_0x2632fe,'Google\x20TTS\x20is\x20unreachable');};AGIVertices[_0x0b91('0x14')][_0x0b91('0x1c1')]=function(_0x323164){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')]('Enter\x20in\x20UNPAUSE\x20(%s)\x20block',_0x323164['label']));if(!this[_0x0b91('0x87')](_0x323164[_0x0b91('0x15c')])){return this['channel']['error'](_0x323164,'no\x20find\x20by\x20configured');}logger['info'](util[_0x0b91('0x5b')](_0x0b91('0x15e'),this[_0x0b91('0x12')]['callerid'],_0x323164['findBy']));var _0x201099=this[_0x0b91('0x1c2')][_0x0b91('0xa8')](this,_0x323164[_0x0b91('0x15c')]);if(_0x201099){logger['info'](util[_0x0b91('0x5b')](_0x0b91('0x15f'),this[_0x0b91('0x12')][_0x0b91('0x3f')],_0x323164[_0x0b91('0x15c')]));this[_0x0b91('0x12')][_0x0b91('0xac')](util[_0x0b91('0x5b')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x0b91('0x12')][_0x0b91('0x3f')],_0x323164[_0x0b91('0x15c')]));return{'code':0xc8,'result':'success'};}else{logger['info'](util[_0x0b91('0x5b')](_0x0b91('0x160'),this[_0x0b91('0x12')]['callerid'],_0x323164[_0x0b91('0x15c')]));this['channel'][_0x0b91('0xac')](util[_0x0b91('0x5b')](_0x0b91('0x160'),this[_0x0b91('0x12')][_0x0b91('0x3f')],_0x323164[_0x0b91('0x15c')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x0b91('0x14')][_0x0b91('0x1c3')]=function(_0x44e5b2){logger['info'](util['format'](_0x0b91('0x1c4'),_0x44e5b2[_0x0b91('0xb3')]));var _0x42e72a=this[_0x0b91('0x12')][_0x0b91('0xad')](_0x0b91('0x1c5'),[_0x44e5b2[_0x0b91('0x1c6')],_0x44e5b2[_0x0b91('0x79')]]);if(_0x42e72a['result']===-0x1){return _0x42e72a;}return this[_0x0b91('0x12')][_0x0b91('0xac')](util[_0x0b91('0x5b')]('Executed\x20command\x20%s\x20%s',_0x0b91('0x1c5'),_0x44e5b2[_0x0b91('0x1c6')]));};AGIVertices[_0x0b91('0x14')][_0x0b91('0x1c7')]=function(_0x3b925d){logger[_0x0b91('0x32')](util[_0x0b91('0x5b')]('Enter\x20in\x20SWITCH\x20(%s)\x20block',_0x3b925d['label']));if(!this['isConfigured'](_0x3b925d[_0x0b91('0xdd')])){return this['channel'][_0x0b91('0x30')](_0x3b925d,'no\x20variable\x20selected');}var _0x45cc8c=this[_0x0b91('0xdf')]['sync'](this,_0x3b925d['variable_id']);if(!_0x45cc8c){return this[_0x0b91('0x12')][_0x0b91('0x30')](_0x3b925d,_0x0b91('0xe0'));}var _0x49717a=this['channel']['getVariable'](_0x45cc8c);return{'code':0xc8,'result':_0x49717a['extra']?_0x49717a[_0x0b91('0xa4')]:'-'};};String[_0x0b91('0x14')]['replaceAll']=function(_0x2ed063,_0xba8371){return this[_0x0b91('0xa2')](_0x2ed063)[_0x0b91('0x1c8')](_0xba8371);};module[_0x0b91('0x1c9')]=AGIVertices;
\ No newline at end of file
index e999305..4b1aad7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e62=['hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','startAcw','interface','channels','queue','mandatoryDispositionPause','name','Action','QueuePause','then','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','lastPauseAt','format','updateAcw','update','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','uniqueid','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','prototype','mandatoryDisposition','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[ACW][syncHangup]\x20%s','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','isNil','origtransfereruniqueid','syncBlindTransfer','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','[%s][BLINDTRANSFER:LINKEDID]','transfererlinkedid','autopause','all','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','util','lodash','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','agentconnect','syncAgentConnect','bind'];(function(_0x37715d,_0xdb0d52){var _0x2caac8=function(_0x4a18e9){while(--_0x4a18e9){_0x37715d['push'](_0x37715d['shift']());}};_0x2caac8(++_0xdb0d52);}(_0x1e62,0x144));var _0x21e6=function(_0x229978,_0x1b0883){_0x229978=_0x229978-0x0;var _0x234352=_0x1e62[_0x229978];return _0x234352;};'use strict';var util=require(_0x21e6('0x0'));var _=require(_0x21e6('0x1'));var moment=require('moment');var ami=require('../ami');var logger=require(_0x21e6('0x2'))(_0x21e6('0x3'));var RpcUser=require(_0x21e6('0x4'));var RpcVoiceAgentReport=require(_0x21e6('0x5'));function Acw(_0x33c1d4){this[_0x21e6('0x6')]=_0x33c1d4[_0x21e6('0x6')];this[_0x21e6('0x7')]=_0x33c1d4['agents'];this[_0x21e6('0x8')]=_0x33c1d4['timers'];this['channels']={};ami['on'](_0x21e6('0x9'),this[_0x21e6('0xa')][_0x21e6('0xb')](this));ami['on'](_0x21e6('0xc'),this[_0x21e6('0xd')][_0x21e6('0xb')](this));ami['on'](_0x21e6('0xe'),this[_0x21e6('0xf')][_0x21e6('0xb')](this));ami['on'](_0x21e6('0x10'),this[_0x21e6('0x11')]['bind'](this));ami['on'](_0x21e6('0x12'),this[_0x21e6('0x13')][_0x21e6('0xb')](this));ami['on'](_0x21e6('0x14'),this['syncBlindTransfer']['bind'](this));ami['on'](_0x21e6('0x15'),this[_0x21e6('0x16')][_0x21e6('0xb')](this));}function getDiff(_0x33ece){var _0x211ba8=moment()[_0x21e6('0x17')](0x0);var _0x366f60=moment(_0x33ece)['milliseconds'](0x0);return _0x211ba8[_0x21e6('0x18')](_0x366f60,_0x21e6('0x19'));}Acw['prototype'][_0x21e6('0x1a')]=function(_0x1da9e3){try{var _0x67dfcc=this;var _0x484661=this['channels'][_0x1da9e3][_0x21e6('0x1b')];var _0x4196a9=this[_0x21e6('0x1c')][_0x1da9e3][_0x21e6('0x1d')];var _0x1eb030=this[_0x21e6('0x6')][_0x4196a9];var _0x10c4c5=![];var _0x2f14a8='ACW';if(_0x1eb030['mandatoryDisposition']){if(_0x1eb030[_0x21e6('0x1e')]['name']){_0x10c4c5=!![];_0x2f14a8=_0x1eb030['mandatoryDispositionPause'][_0x21e6('0x1f')];}}ami[_0x21e6('0x20')]({'action':_0x21e6('0x21'),'interface':_0x484661,'paused':!![],'reason':_0x2f14a8})['then'](function(_0x273f7e){if(_0x67dfcc[_0x21e6('0x7')][_0x484661]){return RpcUser['getAgent'](_0x67dfcc[_0x21e6('0x7')][_0x484661]['id'])[_0x21e6('0x22')](function(_0x329d81){if(_0x329d81&&!_0x329d81[_0x21e6('0x23')]){logger[_0x21e6('0x24')](_0x21e6('0x25'),_0x1da9e3,_0x484661,_0x4196a9);var _0x3c6a8d=_0x67dfcc[_0x21e6('0x1c')][_0x1da9e3][_0x21e6('0x26')]&&_0x67dfcc[_0x21e6('0x1c')][_0x1da9e3][_0x21e6('0x27')]?_0x67dfcc['channels'][_0x1da9e3][_0x21e6('0x27')]:_0x1da9e3;return RpcUser[_0x21e6('0x28')](_0x67dfcc[_0x21e6('0x7')][_0x484661],_0x2f14a8,_0x3c6a8d)['then'](function(_0x31913a){if(!_0x10c4c5){_0x67dfcc['timers'][_0x484661]={};logger[_0x21e6('0x24')](_0x21e6('0x29'),_0x1da9e3,_0x67dfcc[_0x21e6('0x6')][_0x4196a9][_0x21e6('0x2a')],_0x484661,_0x4196a9);_0x67dfcc[_0x21e6('0x8')][_0x484661][_0x21e6('0x2b')]=setTimeout(_0x67dfcc[_0x21e6('0x2c')][_0x21e6('0xb')](_0x67dfcc,_0x484661),_0x67dfcc['voiceQueues'][_0x4196a9][_0x21e6('0x2a')]*0x3e8);_0x67dfcc[_0x21e6('0x8')][_0x484661][_0x21e6('0x2d')]=moment()[_0x21e6('0x2e')]('YYYY-MM-DD\x20HH:mm:ss');_0x67dfcc[_0x21e6('0x8')][_0x484661]['uniqueid']=_0x1da9e3;_0x67dfcc[_0x21e6('0x8')][_0x484661][_0x21e6('0x1d')]=_0x4196a9;_0x67dfcc[_0x21e6('0x8')][_0x484661][_0x21e6('0x2f')]=function(){var _0x43106b=getDiff(_0x67dfcc[_0x21e6('0x8')][_0x484661][_0x21e6('0x2d')]);clearTimeout(_0x67dfcc[_0x21e6('0x8')][_0x484661][_0x21e6('0x2b')]);_0x67dfcc[_0x21e6('0x8')][_0x484661][_0x21e6('0x2b')]=![];RpcVoiceAgentReport[_0x21e6('0x30')]({'acwtime':_0x43106b},_0x67dfcc[_0x21e6('0x8')][_0x484661]['uniqueid'],_0x484661)[_0x21e6('0x22')](function(_0x364d0d){logger[_0x21e6('0x24')](_0x21e6('0x31'),_0x1da9e3,_0x43106b,_0x364d0d);})[_0x21e6('0x32')](function(_0x2f3140){logger[_0x21e6('0x33')](_0x21e6('0x34'),_0x1da9e3,_0x2f3140);});delete _0x67dfcc[_0x21e6('0x8')][_0x484661];};}});}else{logger['info'](_0x21e6('0x35'),_0x1da9e3,_0x484661,_0x4196a9);}});}})[_0x21e6('0x32')](function(_0x5b29c3){logger['error']('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x1da9e3,_0x67dfcc['voiceQueues'][_0x4196a9]['acwTimeout'],_0x484661,_0x4196a9);})[_0x21e6('0x36')](function(){delete _0x67dfcc['channels'][_0x1da9e3];});}catch(_0x2aef5e){logger[_0x21e6('0x33')](_0x21e6('0x37'),_0x2aef5e[_0x21e6('0x38')]);}};Acw['prototype'][_0x21e6('0x2c')]=function(_0x3cdb68){try{var _0x147253=this;if(_0x147253[_0x21e6('0x8')][_0x3cdb68]){_0x147253['timers'][_0x3cdb68][_0x21e6('0x2b')]=![];var _0x24992d=_0x147253[_0x21e6('0x8')][_0x3cdb68][_0x21e6('0x39')];var _0x349b8d=_0x147253[_0x21e6('0x8')][_0x3cdb68][_0x21e6('0x1d')];var _0x28546=_0x147253[_0x21e6('0x6')][_0x349b8d]['acwTimeout'];logger[_0x21e6('0x24')](_0x21e6('0x3a'),_0x24992d,_0x3cdb68);RpcUser[_0x21e6('0x3b')](this[_0x21e6('0x7')][_0x3cdb68]);RpcVoiceAgentReport[_0x21e6('0x30')]({'acwtime':_0x28546,'agentacw':!![]},_0x24992d,_0x3cdb68)['then'](function(_0x46dafc){logger[_0x21e6('0x24')](_0x21e6('0x31'),_0x24992d,_0x28546,_0x46dafc);})['catch'](function(_0x2d1e2a){logger[_0x21e6('0x33')](_0x21e6('0x34'),_0x24992d,_0x2d1e2a);});}else{logger[_0x21e6('0x33')](_0x21e6('0x3c'),_0x3cdb68);if(_0x147253[_0x21e6('0x8')]){logger[_0x21e6('0x24')](_0x21e6('0x3d'),JSON[_0x21e6('0x3e')](_0x147253[_0x21e6('0x8')]));}}}catch(_0x45f3a3){logger[_0x21e6('0x33')](_0x21e6('0x3f'),_0x45f3a3[_0x21e6('0x38')]);}};Acw[_0x21e6('0x40')][_0x21e6('0xa')]=function(_0x2dd5b4){try{if(this[_0x21e6('0x6')][_0x2dd5b4['queue']]&&(this[_0x21e6('0x6')][_0x2dd5b4[_0x21e6('0x1d')]][_0x21e6('0x3')]||this[_0x21e6('0x6')][_0x2dd5b4['queue']][_0x21e6('0x41')])){if(this[_0x21e6('0x7')][_0x2dd5b4[_0x21e6('0x1b')]]){this['channels'][_0x2dd5b4[_0x21e6('0x39')]]={'queue':_0x2dd5b4[_0x21e6('0x1d')],'interface':_0x2dd5b4[_0x21e6('0x1b')],'destlinkedid':_0x2dd5b4[_0x21e6('0x27')]};}}}catch(_0x25d459){logger[_0x21e6('0x33')]('[ACW][syncAgentConnect]\x20%s',_0x25d459[_0x21e6('0x38')]);}};Acw[_0x21e6('0x40')][_0x21e6('0x16')]=function(_0x9f91ae){try{if(this[_0x21e6('0x6')][_0x9f91ae[_0x21e6('0x1d')]]&&(this['voiceQueues'][_0x9f91ae[_0x21e6('0x1d')]]['acw']||this[_0x21e6('0x6')][_0x9f91ae['queue']][_0x21e6('0x41')])){if(this[_0x21e6('0x7')][_0x9f91ae[_0x21e6('0x1b')]]){this['channels'][_0x9f91ae['uniqueid']]={'queue':_0x9f91ae[_0x21e6('0x1d')],'interface':_0x9f91ae[_0x21e6('0x1b')]};}}}catch(_0x962f7){logger[_0x21e6('0x33')]('[ACW][syncAgentConnectPreview]\x20%s',_0x962f7[_0x21e6('0x38')]);}};Acw[_0x21e6('0x40')][_0x21e6('0xd')]=function(_0x5e8368){try{if(this['channels'][_0x5e8368[_0x21e6('0x39')]]&&_[_0x21e6('0x42')](this[_0x21e6('0x1c')][_0x5e8368[_0x21e6('0x39')]]['attended'])){logger[_0x21e6('0x24')](_0x21e6('0x43'),_0x5e8368['uniqueid']);this[_0x21e6('0x1a')](_0x5e8368[_0x21e6('0x39')]);}else if(this[_0x21e6('0x1c')][_0x5e8368[_0x21e6('0x44')]]&&_[_0x21e6('0x42')](this[_0x21e6('0x1c')][_0x5e8368['linkedid']][_0x21e6('0x26')])){logger['info']('[%s][HANGUP:LINKEDID]',_0x5e8368[_0x21e6('0x44')]);this[_0x21e6('0x1a')](_0x5e8368['linkedid']);}}catch(_0x4071d9){logger[_0x21e6('0x33')]('[ACW][syncHangupRequest]\x20%s',_0x4071d9[_0x21e6('0x38')]);}};Acw[_0x21e6('0x40')]['syncHangup']=function(_0x45bb47){try{if(this[_0x21e6('0x1c')][_0x45bb47[_0x21e6('0x39')]]&&this[_0x21e6('0x1c')][_0x45bb47[_0x21e6('0x39')]][_0x21e6('0x26')]){logger[_0x21e6('0x24')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x45bb47[_0x21e6('0x39')]);this[_0x21e6('0x1a')](_0x45bb47[_0x21e6('0x39')]);}else if(this['channels'][_0x45bb47[_0x21e6('0x44')]]&&this[_0x21e6('0x1c')][_0x45bb47[_0x21e6('0x44')]][_0x21e6('0x26')]){logger['info']('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x45bb47[_0x21e6('0x44')]);this['startAcw'](_0x45bb47['linkedid']);}}catch(_0x4fc8be){logger[_0x21e6('0x33')](_0x21e6('0x45'),_0x4fc8be['message']);}};Acw[_0x21e6('0x40')][_0x21e6('0x13')]=function(_0x27b350){try{if(!_['isNil'](this['channels'][_0x27b350[_0x21e6('0x46')]])){this[_0x21e6('0x1a')](_0x27b350[_0x21e6('0x46')]);if(this['channels'][_0x27b350['secondtransfereruniqueid']]){this['channels'][_0x27b350[_0x21e6('0x47')]]['attended']=!![];this[_0x21e6('0x1c')][_0x27b350[_0x21e6('0x48')]]=this[_0x21e6('0x1c')][_0x27b350[_0x21e6('0x47')]];delete this[_0x21e6('0x1c')][_0x27b350[_0x21e6('0x47')]];}}else if(!_[_0x21e6('0x49')](this[_0x21e6('0x1c')][_0x27b350[_0x21e6('0x48')]])){this[_0x21e6('0x1a')](_0x27b350[_0x21e6('0x48')]);if(this['channels'][_0x27b350[_0x21e6('0x4a')]]){this[_0x21e6('0x1c')][_0x27b350[_0x21e6('0x4a')]][_0x21e6('0x26')]=!![];this['channels'][_0x27b350['transfereeuniqueid']]=this[_0x21e6('0x1c')][_0x27b350[_0x21e6('0x4a')]];delete this['channels'][_0x27b350[_0x21e6('0x4a')]];}}}catch(_0xfc6d44){logger[_0x21e6('0x33')]('[ACW][syncAttendedTransfer]\x20%s',_0xfc6d44['message']);}};Acw[_0x21e6('0x40')][_0x21e6('0x4b')]=function(_0x149cda){try{if(this[_0x21e6('0x1c')][_0x149cda[_0x21e6('0x4c')]]){logger[_0x21e6('0x24')](_0x21e6('0x4d'),JSON[_0x21e6('0x3e')](_0x149cda['transfereruniqueid']));this[_0x21e6('0x1a')](_0x149cda[_0x21e6('0x4c')]);}else if(this['channels'][_0x149cda['transfererlinkedid']]){logger[_0x21e6('0x24')](_0x21e6('0x4e'),JSON[_0x21e6('0x3e')](_0x149cda[_0x21e6('0x4f')]));this['startAcw'](_0x149cda['transfererlinkedid']);}}catch(_0xd073fd){logger[_0x21e6('0x33')]('[ACW][syncBlindTransfer]\x20%s',_0xd073fd['message']);}};Acw[_0x21e6('0x40')][_0x21e6('0x11')]=function(_0x5f085c){try{if(this[_0x21e6('0x6')][_0x5f085c[_0x21e6('0x1d')]]&&this[_0x21e6('0x6')][_0x5f085c['queue']][_0x21e6('0x50')]===_0x21e6('0x51')){if(this[_0x21e6('0x7')][_0x5f085c['interface']]){logger[_0x21e6('0x24')]('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x5f085c['uniqueid'],_0x5f085c[_0x21e6('0x1b')],_0x5f085c[_0x21e6('0x1d')]);return RpcUser['savePause'](this[_0x21e6('0x7')][_0x5f085c[_0x21e6('0x1b')]],_0x21e6('0x52'),_0x5f085c['uniqueid']);}}}catch(_0x99b8a2){logger['error'](_0x21e6('0x53'),_0x99b8a2[_0x21e6('0x38')]);}};module['exports']=Acw;
\ No newline at end of file
+var _0x7d5c=['[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','stopAcw','lastPauseAt','format','queue','updateAcw','timer','catch','error','[%s][UPDATE][ERRORS:%s]','finally','[ACW][START]\x20%s','message','uniqueid','update','[%s][UPDATE][ACWTIME:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','stringify','[ACW][STOP]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','syncHangupRequest','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','lodash','moment','../ami','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','bind','syncAttendedTransfer','blindtransfer','syncBlindTransfer','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','interface','mandatoryDisposition','mandatoryDispositionPause','Action','getAgent','then','info'];(function(_0x218979,_0x2930db){var _0x51fa7b=function(_0x5e14f8){while(--_0x5e14f8){_0x218979['push'](_0x218979['shift']());}};_0x51fa7b(++_0x2930db);}(_0x7d5c,0xce));var _0xc7d5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7d5c[_0x3dd15e];return _0x231fd0;};'use strict';var util=require('util');var _=require(_0xc7d5('0x0'));var moment=require(_0xc7d5('0x1'));var ami=require(_0xc7d5('0x2'));var logger=require(_0xc7d5('0x3'))(_0xc7d5('0x4'));var RpcUser=require(_0xc7d5('0x5'));var RpcVoiceAgentReport=require(_0xc7d5('0x6'));function Acw(_0x2a9a67){this[_0xc7d5('0x7')]=_0x2a9a67[_0xc7d5('0x7')];this[_0xc7d5('0x8')]=_0x2a9a67[_0xc7d5('0x8')];this[_0xc7d5('0x9')]=_0x2a9a67['timers'];this[_0xc7d5('0xa')]={};ami['on'](_0xc7d5('0xb'),this[_0xc7d5('0xc')]['bind'](this));ami['on']('hanguprequest',this['syncHangupRequest']['bind'](this));ami['on'](_0xc7d5('0xd'),this[_0xc7d5('0xe')]['bind'](this));ami['on'](_0xc7d5('0xf'),this[_0xc7d5('0x10')][_0xc7d5('0x11')](this));ami['on']('attendedtransfer',this[_0xc7d5('0x12')]['bind'](this));ami['on'](_0xc7d5('0x13'),this[_0xc7d5('0x14')][_0xc7d5('0x11')](this));ami['on']('custom:agentConnectPreview',this[_0xc7d5('0x15')][_0xc7d5('0x11')](this));}function getDiff(_0x512c93){var _0x59a46e=moment()[_0xc7d5('0x16')](0x0);var _0x57a1db=moment(_0x512c93)[_0xc7d5('0x16')](0x0);return _0x59a46e[_0xc7d5('0x17')](_0x57a1db,_0xc7d5('0x18'));}Acw[_0xc7d5('0x19')][_0xc7d5('0x1a')]=function(_0x4ae52d){try{var _0x5051e3=this;var _0x178d04=this[_0xc7d5('0xa')][_0x4ae52d][_0xc7d5('0x1b')];var _0x13c46b=this[_0xc7d5('0xa')][_0x4ae52d]['queue'];var _0x564482=this['voiceQueues'][_0x13c46b];var _0x119ec9=![];var _0x5116ec='ACW';if(_0x564482[_0xc7d5('0x1c')]){if(_0x564482['mandatoryDispositionPause']['name']){_0x119ec9=!![];_0x5116ec=_0x564482[_0xc7d5('0x1d')]['name'];}}ami[_0xc7d5('0x1e')]({'action':'QueuePause','interface':_0x178d04,'paused':!![],'reason':_0x5116ec})['then'](function(_0x2c878d){if(_0x5051e3[_0xc7d5('0x8')][_0x178d04]){return RpcUser[_0xc7d5('0x1f')](_0x5051e3[_0xc7d5('0x8')][_0x178d04]['id'])[_0xc7d5('0x20')](function(_0x2214e7){if(_0x2214e7&&!_0x2214e7['voicePause']){logger[_0xc7d5('0x21')](_0xc7d5('0x22'),_0x4ae52d,_0x178d04,_0x13c46b);var _0x5052e5=_0x5051e3[_0xc7d5('0xa')][_0x4ae52d][_0xc7d5('0x23')]&&_0x5051e3[_0xc7d5('0xa')][_0x4ae52d][_0xc7d5('0x24')]?_0x5051e3[_0xc7d5('0xa')][_0x4ae52d][_0xc7d5('0x24')]:_0x4ae52d;return RpcUser[_0xc7d5('0x25')](_0x5051e3[_0xc7d5('0x8')][_0x178d04],_0x5116ec,_0x5052e5)[_0xc7d5('0x20')](function(_0x1be4fb){if(!_0x119ec9){_0x5051e3[_0xc7d5('0x9')][_0x178d04]={};logger[_0xc7d5('0x21')](_0xc7d5('0x26'),_0x4ae52d,_0x5051e3[_0xc7d5('0x7')][_0x13c46b][_0xc7d5('0x27')],_0x178d04,_0x13c46b);_0x5051e3['timers'][_0x178d04]['timer']=setTimeout(_0x5051e3[_0xc7d5('0x28')][_0xc7d5('0x11')](_0x5051e3,_0x178d04),_0x5051e3[_0xc7d5('0x7')][_0x13c46b][_0xc7d5('0x27')]*0x3e8);_0x5051e3[_0xc7d5('0x9')][_0x178d04][_0xc7d5('0x29')]=moment()[_0xc7d5('0x2a')]('YYYY-MM-DD\x20HH:mm:ss');_0x5051e3[_0xc7d5('0x9')][_0x178d04]['uniqueid']=_0x4ae52d;_0x5051e3[_0xc7d5('0x9')][_0x178d04][_0xc7d5('0x2b')]=_0x13c46b;_0x5051e3[_0xc7d5('0x9')][_0x178d04][_0xc7d5('0x2c')]=function(){var _0x35c698=getDiff(_0x5051e3[_0xc7d5('0x9')][_0x178d04][_0xc7d5('0x29')]);clearTimeout(_0x5051e3['timers'][_0x178d04]['timer']);_0x5051e3[_0xc7d5('0x9')][_0x178d04][_0xc7d5('0x2d')]=![];RpcVoiceAgentReport['update']({'acwtime':_0x35c698},_0x5051e3['timers'][_0x178d04]['uniqueid'],_0x178d04)[_0xc7d5('0x20')](function(_0x6fd6af){logger[_0xc7d5('0x21')]('[%s][UPDATE][ACWTIME:%s]',_0x4ae52d,_0x35c698,_0x6fd6af);})[_0xc7d5('0x2e')](function(_0x40ae36){logger[_0xc7d5('0x2f')](_0xc7d5('0x30'),_0x4ae52d,_0x40ae36);});delete _0x5051e3[_0xc7d5('0x9')][_0x178d04];};}});}else{logger[_0xc7d5('0x21')]('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x4ae52d,_0x178d04,_0x13c46b);}});}})[_0xc7d5('0x2e')](function(_0x30ff28){logger[_0xc7d5('0x2f')](_0xc7d5('0x26'),_0x4ae52d,_0x5051e3[_0xc7d5('0x7')][_0x13c46b][_0xc7d5('0x27')],_0x178d04,_0x13c46b);})[_0xc7d5('0x31')](function(){delete _0x5051e3['channels'][_0x4ae52d];});}catch(_0xcc0862){logger[_0xc7d5('0x2f')](_0xc7d5('0x32'),_0xcc0862[_0xc7d5('0x33')]);}};Acw[_0xc7d5('0x19')][_0xc7d5('0x28')]=function(_0x1c7449){try{var _0x1b1331=this;if(_0x1b1331[_0xc7d5('0x9')][_0x1c7449]){_0x1b1331[_0xc7d5('0x9')][_0x1c7449][_0xc7d5('0x2d')]=![];var _0x1883c4=_0x1b1331['timers'][_0x1c7449][_0xc7d5('0x34')];var _0x1acfd0=_0x1b1331[_0xc7d5('0x9')][_0x1c7449][_0xc7d5('0x2b')];var _0x13aa37=_0x1b1331[_0xc7d5('0x7')][_0x1acfd0][_0xc7d5('0x27')];logger['info']('[%s][TIMER][STOP][AGENT:%s]',_0x1883c4,_0x1c7449);RpcUser['saveUnpause'](this[_0xc7d5('0x8')][_0x1c7449]);RpcVoiceAgentReport[_0xc7d5('0x35')]({'acwtime':_0x13aa37,'agentacw':!![]},_0x1883c4,_0x1c7449)[_0xc7d5('0x20')](function(_0x766638){logger[_0xc7d5('0x21')](_0xc7d5('0x36'),_0x1883c4,_0x13aa37,_0x766638);})[_0xc7d5('0x2e')](function(_0x5af87e){logger[_0xc7d5('0x2f')]('[%s][UPDATE][ERRORS:%s]',_0x1883c4,_0x5af87e);});}else{logger[_0xc7d5('0x2f')](_0xc7d5('0x37'),_0x1c7449);if(_0x1b1331['timers']){logger[_0xc7d5('0x21')]('[ACW][TIMERS]',JSON[_0xc7d5('0x38')](_0x1b1331['timers']));}}}catch(_0x3cebe7){logger[_0xc7d5('0x2f')](_0xc7d5('0x39'),_0x3cebe7[_0xc7d5('0x33')]);}};Acw[_0xc7d5('0x19')]['syncAgentConnect']=function(_0x553563){try{if(this['voiceQueues'][_0x553563['queue']]&&(this[_0xc7d5('0x7')][_0x553563[_0xc7d5('0x2b')]]['acw']||this[_0xc7d5('0x7')][_0x553563[_0xc7d5('0x2b')]][_0xc7d5('0x1c')])){if(this[_0xc7d5('0x8')][_0x553563[_0xc7d5('0x1b')]]){this['channels'][_0x553563[_0xc7d5('0x34')]]={'queue':_0x553563['queue'],'interface':_0x553563[_0xc7d5('0x1b')],'destlinkedid':_0x553563[_0xc7d5('0x24')]};}}}catch(_0x4dd981){logger[_0xc7d5('0x2f')]('[ACW][syncAgentConnect]\x20%s',_0x4dd981[_0xc7d5('0x33')]);}};Acw[_0xc7d5('0x19')][_0xc7d5('0x15')]=function(_0x1ff737){try{if(this['voiceQueues'][_0x1ff737[_0xc7d5('0x2b')]]&&(this[_0xc7d5('0x7')][_0x1ff737[_0xc7d5('0x2b')]][_0xc7d5('0x4')]||this['voiceQueues'][_0x1ff737[_0xc7d5('0x2b')]]['mandatoryDisposition'])){if(this[_0xc7d5('0x8')][_0x1ff737[_0xc7d5('0x1b')]]){this['channels'][_0x1ff737[_0xc7d5('0x34')]]={'queue':_0x1ff737[_0xc7d5('0x2b')],'interface':_0x1ff737[_0xc7d5('0x1b')]};}}}catch(_0x375f30){logger['error'](_0xc7d5('0x3a'),_0x375f30[_0xc7d5('0x33')]);}};Acw[_0xc7d5('0x19')][_0xc7d5('0x3b')]=function(_0x3f0fbb){try{if(this[_0xc7d5('0xa')][_0x3f0fbb['uniqueid']]&&_[_0xc7d5('0x3c')](this[_0xc7d5('0xa')][_0x3f0fbb[_0xc7d5('0x34')]][_0xc7d5('0x23')])){logger[_0xc7d5('0x21')](_0xc7d5('0x3d'),_0x3f0fbb[_0xc7d5('0x34')]);this[_0xc7d5('0x1a')](_0x3f0fbb['uniqueid']);}else if(this[_0xc7d5('0xa')][_0x3f0fbb[_0xc7d5('0x3e')]]&&_[_0xc7d5('0x3c')](this['channels'][_0x3f0fbb[_0xc7d5('0x3e')]][_0xc7d5('0x23')])){logger[_0xc7d5('0x21')](_0xc7d5('0x3f'),_0x3f0fbb[_0xc7d5('0x3e')]);this[_0xc7d5('0x1a')](_0x3f0fbb['linkedid']);}}catch(_0x3ad31d){logger['error']('[ACW][syncHangupRequest]\x20%s',_0x3ad31d[_0xc7d5('0x33')]);}};Acw[_0xc7d5('0x19')][_0xc7d5('0xe')]=function(_0x1940e2){try{if(this[_0xc7d5('0xa')][_0x1940e2[_0xc7d5('0x34')]]&&this[_0xc7d5('0xa')][_0x1940e2['uniqueid']][_0xc7d5('0x23')]){logger[_0xc7d5('0x21')](_0xc7d5('0x40'),_0x1940e2[_0xc7d5('0x34')]);this[_0xc7d5('0x1a')](_0x1940e2[_0xc7d5('0x34')]);}else if(this['channels'][_0x1940e2[_0xc7d5('0x3e')]]&&this[_0xc7d5('0xa')][_0x1940e2['linkedid']][_0xc7d5('0x23')]){logger[_0xc7d5('0x21')](_0xc7d5('0x41'),_0x1940e2['linkedid']);this[_0xc7d5('0x1a')](_0x1940e2[_0xc7d5('0x3e')]);}}catch(_0xeda077){logger[_0xc7d5('0x2f')]('[ACW][syncHangup]\x20%s',_0xeda077[_0xc7d5('0x33')]);}};Acw[_0xc7d5('0x19')]['syncAttendedTransfer']=function(_0x517546){try{if(!_[_0xc7d5('0x42')](this[_0xc7d5('0xa')][_0x517546[_0xc7d5('0x43')]])){this[_0xc7d5('0x1a')](_0x517546[_0xc7d5('0x43')]);if(this[_0xc7d5('0xa')][_0x517546[_0xc7d5('0x44')]]){this[_0xc7d5('0xa')][_0x517546[_0xc7d5('0x44')]]['attended']=!![];this[_0xc7d5('0xa')][_0x517546[_0xc7d5('0x45')]]=this['channels'][_0x517546[_0xc7d5('0x44')]];delete this['channels'][_0x517546[_0xc7d5('0x44')]];}}else if(!_['isNil'](this['channels'][_0x517546[_0xc7d5('0x45')]])){this['startAcw'](_0x517546['transfertargetuniqueid']);if(this[_0xc7d5('0xa')][_0x517546[_0xc7d5('0x46')]]){this[_0xc7d5('0xa')][_0x517546[_0xc7d5('0x46')]]['attended']=!![];this[_0xc7d5('0xa')][_0x517546[_0xc7d5('0x43')]]=this[_0xc7d5('0xa')][_0x517546[_0xc7d5('0x46')]];delete this['channels'][_0x517546[_0xc7d5('0x46')]];}}}catch(_0x57f767){logger[_0xc7d5('0x2f')]('[ACW][syncAttendedTransfer]\x20%s',_0x57f767[_0xc7d5('0x33')]);}};Acw[_0xc7d5('0x19')][_0xc7d5('0x14')]=function(_0x50a172){try{if(this['channels'][_0x50a172['transfereruniqueid']]){logger[_0xc7d5('0x21')](_0xc7d5('0x47'),JSON[_0xc7d5('0x38')](_0x50a172[_0xc7d5('0x48')]));this[_0xc7d5('0x1a')](_0x50a172[_0xc7d5('0x48')]);}else if(this[_0xc7d5('0xa')][_0x50a172[_0xc7d5('0x49')]]){logger['info'](_0xc7d5('0x4a'),JSON[_0xc7d5('0x38')](_0x50a172['transfererlinkedid']));this['startAcw'](_0x50a172['transfererlinkedid']);}}catch(_0x3f1e00){logger[_0xc7d5('0x2f')](_0xc7d5('0x4b'),_0x3f1e00[_0xc7d5('0x33')]);}};Acw['prototype'][_0xc7d5('0x10')]=function(_0xe09180){try{if(this[_0xc7d5('0x7')][_0xe09180[_0xc7d5('0x2b')]]&&this['voiceQueues'][_0xe09180[_0xc7d5('0x2b')]][_0xc7d5('0x4c')]==='all'){if(this['agents'][_0xe09180['interface']]){logger[_0xc7d5('0x21')](_0xc7d5('0x4d'),_0xe09180[_0xc7d5('0x34')],_0xe09180[_0xc7d5('0x1b')],_0xe09180[_0xc7d5('0x2b')]);return RpcUser['savePause'](this[_0xc7d5('0x8')][_0xe09180['interface']],_0xc7d5('0x4e'),_0xe09180['uniqueid']);}}}catch(_0x49aef8){logger[_0xc7d5('0x2f')](_0xc7d5('0x4f'),_0x49aef8['message']);}};module['exports']=Acw;
\ No newline at end of file
index 702ee2b..4c40f1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary','queuesummary','actionCoreShowChannels','coreshowchannels','info','once','connect','shutdown','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','[ami.js][fullybooted]','close','exports','bluebird','moment','ami','../../config/environment','asterisk','port','password','Action','promisify','action','error','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','username','inspect','actionSipShowRegistry','actionDeviceStateList'];(function(_0x1486b2,_0x13e3ff){var _0xfce8cc=function(_0xaf9c24){while(--_0xaf9c24){_0x1486b2['push'](_0x1486b2['shift']());}};_0xfce8cc(++_0x13e3ff);}(_0x757a,0xde));var _0xa757=function(_0x521a19,_0x5c14ca){_0x521a19=_0x521a19-0x0;var _0x4cd80c=_0x757a[_0x521a19];return _0x4cd80c;};'use strict';var Manager=require('asterisk-manager');var BPromise=require(_0xa757('0x0'));var moment=require(_0xa757('0x1'));var util=require('util');var _=require('lodash');var logger=require('../../config/logger')(_0xa757('0x2'));var config=require(_0xa757('0x3'));var ami=new Manager(config[_0xa757('0x4')][_0xa757('0x5')],config[_0xa757('0x4')]['ip'],config[_0xa757('0x4')]['username'],config[_0xa757('0x4')][_0xa757('0x6')],!![]);ami['keepConnected']();ami[_0xa757('0x7')]=BPromise[_0xa757('0x8')](ami[_0xa757('0x9')]);function error(_0x1a95ee){logger[_0xa757('0xa')](util['format'](_0xa757('0xb'),config[_0xa757('0x4')][_0xa757('0xc')],config[_0xa757('0x4')]['ip'],config[_0xa757('0x4')][_0xa757('0x5')],util[_0xa757('0xd')](_0x1a95ee,![],null)));}function close(){logger['error'](util['format']('Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s',config['asterisk']['username'],config[_0xa757('0x4')]['ip'],config['asterisk']['port']));}ami[_0xa757('0xe')]=function(){return function(){return ami['Action']({'action':'sipshowregistry'});};};ami[_0xa757('0xf')]=function(){return function(){return ami[_0xa757('0x7')]({'action':_0xa757('0x10')});};};ami[_0xa757('0x11')]=function(){return function(){return ami[_0xa757('0x7')]({'action':_0xa757('0x12')});};};ami[_0xa757('0x13')]=function(){return function(){return ami[_0xa757('0x7')]({'action':_0xa757('0x14')});};};ami[_0xa757('0x15')]=function(){return function(){return ami['Action']({'action':_0xa757('0x16')});};};function connect(_0x44eab8){logger[_0xa757('0x17')](util['format']('Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s',config[_0xa757('0x4')][_0xa757('0xc')],config[_0xa757('0x4')]['ip'],config[_0xa757('0x4')][_0xa757('0x5')]));ami[_0xa757('0x18')]('error',error);ami[_0xa757('0x18')]('close',close);}ami['on'](_0xa757('0x19'),connect);ami['on'](_0xa757('0x1a'),function(_0x14014c){logger[_0xa757('0x17')](util['format']('Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s',config[_0xa757('0x4')][_0xa757('0xc')],config[_0xa757('0x4')]['ip'],config[_0xa757('0x4')][_0xa757('0x5')],util[_0xa757('0xd')](_0x14014c,![],null)));});ami['on'](_0xa757('0x1b'),function(_0x21f1af){logger[_0xa757('0x17')](util['format'](_0xa757('0x1c'),config['asterisk'][_0xa757('0xc')],config['asterisk']['ip'],config[_0xa757('0x4')][_0xa757('0x5')]));return BPromise[_0xa757('0x1d')]()['then'](ami[_0xa757('0xe')]())[_0xa757('0x1e')](ami[_0xa757('0xf')]())[_0xa757('0x1e')](ami['actionSipPeerStatus']())[_0xa757('0x1e')](ami['actionQueueSummary']())['then'](ami['actionCoreShowChannels']())['catch'](function(_0xfdf69d){logger['error'](_0xa757('0x1f'),util[_0xa757('0xd')](_0xfdf69d,{'showHidden':![],'depth':null}));});});ami['once'](_0xa757('0xa'),error);ami['once'](_0xa757('0x20'),close);module[_0xa757('0x21')]=ami;
\ No newline at end of file
+var _0x0b0e=['../../config/environment','asterisk','port','username','password','promisify','action','error','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','format','Action','sipshowregistry','actionDeviceStateList','devicestatelist','actionQueueSummary','actionCoreShowChannels','coreshowchannels','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','close','shutdown','info','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','then','actionSipPeerStatus','catch','[ami.js][fullybooted]','once','asterisk-manager','moment','lodash','../../config/logger','ami'];(function(_0x12e5c4,_0x10a244){var _0x5ddbb0=function(_0x2a6d1f){while(--_0x2a6d1f){_0x12e5c4['push'](_0x12e5c4['shift']());}};_0x5ddbb0(++_0x10a244);}(_0x0b0e,0x187));var _0xe0b0=function(_0x19c5f2,_0x44ed13){_0x19c5f2=_0x19c5f2-0x0;var _0xb94caf=_0x0b0e[_0x19c5f2];return _0xb94caf;};'use strict';var Manager=require(_0xe0b0('0x0'));var BPromise=require('bluebird');var moment=require(_0xe0b0('0x1'));var util=require('util');var _=require(_0xe0b0('0x2'));var logger=require(_0xe0b0('0x3'))(_0xe0b0('0x4'));var config=require(_0xe0b0('0x5'));var ami=new Manager(config[_0xe0b0('0x6')][_0xe0b0('0x7')],config[_0xe0b0('0x6')]['ip'],config[_0xe0b0('0x6')][_0xe0b0('0x8')],config[_0xe0b0('0x6')][_0xe0b0('0x9')],!![]);ami['keepConnected']();ami['Action']=BPromise[_0xe0b0('0xa')](ami[_0xe0b0('0xb')]);function error(_0xc4a085){logger[_0xe0b0('0xc')](util['format'](_0xe0b0('0xd'),config[_0xe0b0('0x6')]['username'],config[_0xe0b0('0x6')]['ip'],config[_0xe0b0('0x6')]['port'],util[_0xe0b0('0xe')](_0xc4a085,![],null)));}function close(){logger[_0xe0b0('0xc')](util[_0xe0b0('0xf')]('Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s',config[_0xe0b0('0x6')][_0xe0b0('0x8')],config[_0xe0b0('0x6')]['ip'],config[_0xe0b0('0x6')][_0xe0b0('0x7')]));}ami['actionSipShowRegistry']=function(){return function(){return ami[_0xe0b0('0x10')]({'action':_0xe0b0('0x11')});};};ami[_0xe0b0('0x12')]=function(){return function(){return ami[_0xe0b0('0x10')]({'action':_0xe0b0('0x13')});};};ami['actionSipPeerStatus']=function(){return function(){return ami[_0xe0b0('0x10')]({'action':'sippeerstatus'});};};ami[_0xe0b0('0x14')]=function(){return function(){return ami[_0xe0b0('0x10')]({'action':'queuesummary'});};};ami[_0xe0b0('0x15')]=function(){return function(){return ami['Action']({'action':_0xe0b0('0x16')});};};function connect(_0x100204){logger['info'](util['format'](_0xe0b0('0x17'),config['asterisk']['username'],config['asterisk']['ip'],config[_0xe0b0('0x6')]['port']));ami['once'](_0xe0b0('0xc'),error);ami['once'](_0xe0b0('0x18'),close);}ami['on']('connect',connect);ami['on'](_0xe0b0('0x19'),function(_0x1cd7c4){logger[_0xe0b0('0x1a')](util[_0xe0b0('0xf')](_0xe0b0('0x1b'),config['asterisk']['username'],config[_0xe0b0('0x6')]['ip'],config['asterisk'][_0xe0b0('0x7')],util[_0xe0b0('0xe')](_0x1cd7c4,![],null)));});ami['on']('fullybooted',function(_0x170ad8){logger['info'](util[_0xe0b0('0xf')]('Fullybooted\x20\x22%s\x22\x20to\x20%s:%s',config[_0xe0b0('0x6')]['username'],config[_0xe0b0('0x6')]['ip'],config['asterisk'][_0xe0b0('0x7')]));return BPromise['resolve']()[_0xe0b0('0x1c')](ami['actionSipShowRegistry']())[_0xe0b0('0x1c')](ami[_0xe0b0('0x12')]())[_0xe0b0('0x1c')](ami[_0xe0b0('0x1d')]())[_0xe0b0('0x1c')](ami[_0xe0b0('0x14')]())['then'](ami[_0xe0b0('0x15')]())[_0xe0b0('0x1e')](function(_0x5b7a64){logger[_0xe0b0('0xc')](_0xe0b0('0x1f'),util[_0xe0b0('0xe')](_0x5b7a64,{'showHidden':![],'depth':null}));});});ami[_0xe0b0('0x20')](_0xe0b0('0xc'),error);ami[_0xe0b0('0x20')](_0xe0b0('0x18'),close);module['exports']=ami;
\ No newline at end of file
index d8fdce2..f515aeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda3f=['then','rpc','memberReport','error','message','result','catch','exports','bluebird','../../config/logger','Request','request'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xda3f,0xec));var _0xfda3=function(_0x4b699a,_0x194dcf){_0x4b699a=_0x4b699a-0x0;var _0x45714b=_0xda3f[_0x4b699a];return _0x45714b;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0xfda3('0x0'));var logger=require(_0xfda3('0x1'))('ami');var client=jayson['client']['http']({'port':0x2329});client[_0xfda3('0x2')]=function(_0x581693,_0x36dc71){return new BPromise(function(_0x22187d,_0x516500){return client[_0xfda3('0x3')](_0x581693,_0x36dc71)[_0xfda3('0x4')](function(_0x47e7e2){logger['debug'](_0xfda3('0x5'),_0xfda3('0x6'),_0x581693,_0x36dc71,_0x47e7e2);if(_0x47e7e2[_0xfda3('0x7')]){logger[_0xfda3('0x7')](_0xfda3('0x5'),_0xfda3('0x6'),_0x581693,_0x47e7e2[_0xfda3('0x7')][_0xfda3('0x8')],_0x36dc71);return _0x516500(_0x47e7e2[_0xfda3('0x7')][_0xfda3('0x8')]);}else{return _0x22187d(_0x47e7e2[_0xfda3('0x9')]);}})[_0xfda3('0xa')](function(_0x4d7841){logger[_0xfda3('0x7')](_0xfda3('0x5'),_0xfda3('0x6'),_0x581693,_0x4d7841,_0x36dc71);return _0x516500(_0x4d7841);});});};module[_0xfda3('0xb')]=client;
\ No newline at end of file
+var _0x0713=['rpc','memberReport','error','message','result','catch','exports','../../config/logger','ami','client','http','Request','request','then','debug'];(function(_0x3a293e,_0x5c56f5){var _0x18a51a=function(_0x54bb55){while(--_0x54bb55){_0x3a293e['push'](_0x3a293e['shift']());}};_0x18a51a(++_0x5c56f5);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0x3071('0x0'))(_0x3071('0x1'));var client=jayson[_0x3071('0x2')][_0x3071('0x3')]({'port':0x2329});client[_0x3071('0x4')]=function(_0x52b5fb,_0x2c547f){return new BPromise(function(_0x7b18a4,_0x33a70c){return client[_0x3071('0x5')](_0x52b5fb,_0x2c547f)[_0x3071('0x6')](function(_0x41cf76){logger[_0x3071('0x7')](_0x3071('0x8'),_0x3071('0x9'),_0x52b5fb,_0x2c547f,_0x41cf76);if(_0x41cf76[_0x3071('0xa')]){logger[_0x3071('0xa')](_0x3071('0x8'),_0x3071('0x9'),_0x52b5fb,_0x41cf76['error'][_0x3071('0xb')],_0x2c547f);return _0x33a70c(_0x41cf76[_0x3071('0xa')][_0x3071('0xb')]);}else{return _0x7b18a4(_0x41cf76[_0x3071('0xc')]);}})[_0x3071('0xd')](function(_0x4a470a){logger[_0x3071('0xa')](_0x3071('0x8'),_0x3071('0x9'),_0x52b5fb,_0x4a470a,_0x2c547f);return _0x33a70c(_0x4a470a);});});};module[_0x3071('0xe')]=client;
\ No newline at end of file
index afa2125..d90d015 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb4b=['getQueue','exports','lodash','moment','isNil','string','voiceQueue','uniqueid','Contact','phone','firstName','lastName','number','queue','active','type','dialQueueTimeout','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','getCaller','format'];(function(_0x3cbcb0,_0x37aac0){var _0x214be0=function(_0x4e8c7c){while(--_0x4e8c7c){_0x3cbcb0['push'](_0x3cbcb0['shift']());}};_0x214be0(++_0x37aac0);}(_0xfb4b,0x142));var _0xbfb4=function(_0x3873cd,_0x14ff6b){_0x3873cd=_0x3873cd-0x0;var _0x5736ac=_0xfb4b[_0x3873cd];return _0x5736ac;};'use strict';var util=require('util');var _=require(_0xbfb4('0x0'));var moment=require(_0xbfb4('0x1'));function checkNameSurname(_0x1b089d,_0x499a50,_0x12aa8d){var _0x88df0='';if(!_['isNil'](_0x499a50)&&'string'===typeof _0x499a50){_0x88df0+=_0x499a50;}if(!_[_0xbfb4('0x2')](_0x12aa8d)&&_0xbfb4('0x3')===typeof _0x12aa8d){_0x88df0+='\x20'+_0x12aa8d;}if(_0x88df0!==''){return _0x88df0;}return _0x1b089d;}function Action(_0x5bed27,_0x5c7296,_0x1e4ae9){this[_0xbfb4('0x4')]=_0x5bed27;this[_0xbfb4('0x5')]=_0x1e4ae9||undefined;this['name']=checkNameSurname(_0x5c7296[_0xbfb4('0x6')][_0xbfb4('0x7')],_0x5c7296[_0xbfb4('0x6')][_0xbfb4('0x8')],_0x5c7296[_0xbfb4('0x6')][_0xbfb4('0x9')]);this[_0xbfb4('0xa')]=_0x5c7296['phone'];this[_0xbfb4('0xb')]=_0x5bed27['name'];this[_0xbfb4('0xc')]=_0x5c7296[_0xbfb4('0xc')]||![];this[_0xbfb4('0xd')]=_0x5bed27[_0xbfb4('0xd')];this[_0xbfb4('0xe')]=_0x5bed27[_0xbfb4('0xe')]||0x3;this['scheduledat']=_0x5c7296['scheduledat'];this['countbusyretry']=_0x5c7296[_0xbfb4('0xf')];this['countcongestionretry']=_0x5c7296[_0xbfb4('0x10')];this[_0xbfb4('0x11')]=_0x5c7296[_0xbfb4('0x11')];this['countnosuchnumberretry']=_0x5c7296[_0xbfb4('0x12')];this[_0xbfb4('0x13')]=_0x5c7296['countdropretry'];this['countabandonedretry']=_0x5c7296[_0xbfb4('0x14')];this['countmachineretry']=_0x5c7296['countmachineretry'];this['countagentrejectretry']=_0x5c7296[_0xbfb4('0x15')];this[_0xbfb4('0x16')]=_0x5c7296[_0xbfb4('0x16')];this[_0xbfb4('0x17')]=_0x5c7296[_0xbfb4('0x17')];this[_0xbfb4('0x18')]=_0x5c7296['UserId'];this[_0xbfb4('0x19')]=_0x5c7296['VoiceQueueId'];this[_0xbfb4('0x1a')]=_0x5c7296[_0xbfb4('0x1a')];this[_0xbfb4('0x1b')]=_0x5c7296['id'];this['ContactFirstName']=_0x5c7296['Contact'][_0xbfb4('0x8')]||'';this['starttime']=moment()['format'](_0xbfb4('0x1c'));this[_0xbfb4('0x1d')]=_0x5c7296[_0xbfb4('0x1d')];this[_0xbfb4('0x1e')]=_0x5c7296['callbackuniqueid'];this[_0xbfb4('0x1f')]=_0x5c7296[_0xbfb4('0x1f')];this[_0xbfb4('0x20')]=_0x5c7296[_0xbfb4('0x20')];this[_0xbfb4('0x21')]='';this[_0xbfb4('0x22')]='';}Action[_0xbfb4('0x23')][_0xbfb4('0x24')]=function(){return util[_0xbfb4('0x25')]('\x22%s\x22\x20<%s>',this['name'],this[_0xbfb4('0x4')]['dialCutDigit']>0x0?this[_0xbfb4('0xa')]['substring'](this[_0xbfb4('0x4')]['dialCutDigit']):this[_0xbfb4('0xa')]);};Action[_0xbfb4('0x23')][_0xbfb4('0x26')]=function(){return this[_0xbfb4('0xb')];};module[_0xbfb4('0x27')]=Action;
\ No newline at end of file
+var _0x921d=['prototype','getCaller','\x22%s\x22\x20<%s>','dialCutDigit','getQueue','lodash','moment','isNil','voiceQueue','Contact','firstName','lastName','number','queue','name','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','ContactFirstName','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname'];(function(_0x5e5c24,_0x368a79){var _0x3557af=function(_0x1ffa54){while(--_0x1ffa54){_0x5e5c24['push'](_0x5e5c24['shift']());}};_0x3557af(++_0x368a79);}(_0x921d,0x107));var _0xd921=function(_0x58236b,_0x3fa289){_0x58236b=_0x58236b-0x0;var _0x3258df=_0x921d[_0x58236b];return _0x3258df;};'use strict';var util=require('util');var _=require(_0xd921('0x0'));var moment=require(_0xd921('0x1'));function checkNameSurname(_0x47c52a,_0x30002b,_0x5c5c50){var _0xd863a6='';if(!_[_0xd921('0x2')](_0x30002b)&&'string'===typeof _0x30002b){_0xd863a6+=_0x30002b;}if(!_[_0xd921('0x2')](_0x5c5c50)&&'string'===typeof _0x5c5c50){_0xd863a6+='\x20'+_0x5c5c50;}if(_0xd863a6!==''){return _0xd863a6;}return _0x47c52a;}function Action(_0x1ddb8a,_0x2007ee,_0x48d810){this[_0xd921('0x3')]=_0x1ddb8a;this['uniqueid']=_0x48d810||undefined;this['name']=checkNameSurname(_0x2007ee[_0xd921('0x4')]['phone'],_0x2007ee[_0xd921('0x4')][_0xd921('0x5')],_0x2007ee[_0xd921('0x4')][_0xd921('0x6')]);this[_0xd921('0x7')]=_0x2007ee['phone'];this[_0xd921('0x8')]=_0x1ddb8a[_0xd921('0x9')];this[_0xd921('0xa')]=_0x2007ee[_0xd921('0xa')]||![];this['type']=_0x1ddb8a[_0xd921('0xb')];this[_0xd921('0xc')]=_0x1ddb8a[_0xd921('0xc')]||0x3;this['scheduledat']=_0x2007ee[_0xd921('0xd')];this[_0xd921('0xe')]=_0x2007ee[_0xd921('0xe')];this[_0xd921('0xf')]=_0x2007ee[_0xd921('0xf')];this[_0xd921('0x10')]=_0x2007ee['countnoanswerretry'];this[_0xd921('0x11')]=_0x2007ee[_0xd921('0x11')];this[_0xd921('0x12')]=_0x2007ee[_0xd921('0x12')];this[_0xd921('0x13')]=_0x2007ee[_0xd921('0x13')];this['countmachineretry']=_0x2007ee[_0xd921('0x14')];this[_0xd921('0x15')]=_0x2007ee['countagentrejectretry'];this['ContactId']=_0x2007ee[_0xd921('0x16')];this[_0xd921('0x17')]=_0x2007ee[_0xd921('0x17')];this[_0xd921('0x18')]=_0x2007ee[_0xd921('0x18')];this['VoiceQueueId']=_0x2007ee[_0xd921('0x19')];this[_0xd921('0x1a')]=_0x2007ee[_0xd921('0x1a')];this[_0xd921('0x1b')]=_0x2007ee['id'];this[_0xd921('0x1c')]=_0x2007ee['Contact'][_0xd921('0x5')]||'';this[_0xd921('0x1d')]=moment()[_0xd921('0x1e')](_0xd921('0x1f'));this[_0xd921('0x20')]=_0x2007ee[_0xd921('0x20')];this['callbackuniqueid']=_0x2007ee[_0xd921('0x21')];this[_0xd921('0x22')]=_0x2007ee[_0xd921('0x22')];this[_0xd921('0x23')]=_0x2007ee[_0xd921('0x23')];this[_0xd921('0x24')]='';this[_0xd921('0x25')]='';}Action[_0xd921('0x26')][_0xd921('0x27')]=function(){return util['format'](_0xd921('0x28'),this['name'],this[_0xd921('0x3')]['dialCutDigit']>0x0?this[_0xd921('0x7')]['substring'](this[_0xd921('0x3')][_0xd921('0x29')]):this['number']);};Action[_0xd921('0x26')][_0xd921('0x2a')]=function(){return this[_0xd921('0x8')];};module['exports']=Action;
\ No newline at end of file
index 0bd740f..41acc82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bc0=['callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','diff','seconds','statedesc','Answer','scheduledat','campaigntype','outbound','type','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','countmachineretry','uniqueid','calleridname','name','starttime','responsetime','answertime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','endtime','queue','membername','reason','callback'];(function(_0x5d703a,_0x56bf6c){var _0x58ce21=function(_0x57004d){while(--_0x57004d){_0x5d703a['push'](_0x5d703a['shift']());}};_0x58ce21(++_0x56bf6c);}(_0x6bc0,0xc7));var _0x06bc=function(_0x2e599c,_0x16632b){_0x2e599c=_0x2e599c-0x0;var _0x1cb72e=_0x6bc0[_0x2e599c];return _0x1cb72e;};'use strict';var util=require(_0x06bc('0x0'));var _=require('lodash');var moment=require(_0x06bc('0x1'));function getSeconds(_0x134031,_0xaad7c6){var _0x366ab3=moment(_0x134031)[_0x06bc('0x2')](0x0);var _0x315ed7=moment(_0xaad7c6)[_0x06bc('0x2')](0x0);return _0x366ab3[_0x06bc('0x3')](_0x315ed7,_0x06bc('0x4'));}function AgentComplete(_0x1670b7,_0x5a635f){this['state']=0x4;this[_0x06bc('0x5')]=_0x06bc('0x6');this[_0x06bc('0x7')]=_0x1670b7[_0x06bc('0x7')];this['type']=_0x1670b7['type'];this[_0x06bc('0x8')]=_0x1670b7['type']===_0x06bc('0x9')?'queue':_0x1670b7[_0x06bc('0xa')];this['countbusyretry']=_0x1670b7[_0x06bc('0xb')];this[_0x06bc('0xc')]=_0x1670b7[_0x06bc('0xc')];this[_0x06bc('0xd')]=_0x1670b7[_0x06bc('0xd')];this[_0x06bc('0xe')]=_0x1670b7[_0x06bc('0xb')]+_0x1670b7[_0x06bc('0xc')]+_0x1670b7[_0x06bc('0xd')]+_0x1670b7[_0x06bc('0xf')]+_0x1670b7[_0x06bc('0x10')]+_0x1670b7[_0x06bc('0x11')]+_0x1670b7['countmachineretry']+_0x1670b7[_0x06bc('0x12')];this['countnosuchnumberretry']=_0x1670b7[_0x06bc('0xf')];this['countdropretry']=_0x1670b7[_0x06bc('0x10')];this[_0x06bc('0x11')]=_0x1670b7[_0x06bc('0x11')];this[_0x06bc('0x13')]=_0x1670b7['countmachineretry'];this['countagentrejectretry']=_0x1670b7[_0x06bc('0x12')];this['uniqueid']=_0x5a635f[_0x06bc('0x14')];this[_0x06bc('0x15')]=_0x1670b7[_0x06bc('0x16')];this['calleridnum']=_0x1670b7['number'];this[_0x06bc('0x17')]=_0x1670b7[_0x06bc('0x17')];this[_0x06bc('0x18')]=_0x1670b7[_0x06bc('0x18')];this['answertime']=_0x1670b7[_0x06bc('0x19')];this['endtime']=moment()[_0x06bc('0x1a')](_0x06bc('0x1b'));this[_0x06bc('0x1c')]=getSeconds(_0x1670b7[_0x06bc('0x18')],_0x1670b7['starttime']);this[_0x06bc('0x1d')]=getSeconds(_0x1670b7[_0x06bc('0x19')],_0x1670b7[_0x06bc('0x18')]);this[_0x06bc('0x1e')]=getSeconds(this[_0x06bc('0x1f')],_0x1670b7[_0x06bc('0x19')]);this[_0x06bc('0x20')]=_0x5a635f[_0x06bc('0x20')];this[_0x06bc('0x21')]=_0x5a635f[_0x06bc('0x21')];this[_0x06bc('0x22')]=_0x5a635f[_0x06bc('0x22')];this[_0x06bc('0x23')]=_0x1670b7[_0x06bc('0x23')];this['callbackuniqueid']=_0x1670b7[_0x06bc('0x24')];this[_0x06bc('0x25')]=_0x1670b7['callbackat'];this[_0x06bc('0x26')]=_0x1670b7[_0x06bc('0x26')];this[_0x06bc('0x27')]=_0x1670b7[_0x06bc('0x27')];this[_0x06bc('0x28')]=_0x1670b7[_0x06bc('0x28')];this[_0x06bc('0x29')]=_0x1670b7[_0x06bc('0x29')];this[_0x06bc('0x2a')]=_0x1670b7[_0x06bc('0x2a')];this[_0x06bc('0x2b')]=_0x1670b7['CampaignId'];this[_0x06bc('0x2c')]=_0x1670b7[_0x06bc('0x2c')]||'';this[_0x06bc('0x2d')]=_0x1670b7[_0x06bc('0x2d')]||'';}module[_0x06bc('0x2e')]=AgentComplete;
\ No newline at end of file
+var _0x393f=['countdropretry','countabandonedretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','membername','reason','callback','callbackuniqueid','callbackat','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','lodash','moment','milliseconds','diff','Answer','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countmachineretry','countagentrejectretry'];(function(_0x4243b4,_0x5af212){var _0x3c5490=function(_0x5bdab7){while(--_0x5bdab7){_0x4243b4['push'](_0x4243b4['shift']());}};_0x3c5490(++_0x5af212);}(_0x393f,0xf8));var _0xf393=function(_0x408e37,_0x1bfdd9){_0x408e37=_0x408e37-0x0;var _0x5edea5=_0x393f[_0x408e37];return _0x5edea5;};'use strict';var util=require('util');var _=require(_0xf393('0x0'));var moment=require(_0xf393('0x1'));function getSeconds(_0x25ced8,_0xdff24){var _0x321d46=moment(_0x25ced8)[_0xf393('0x2')](0x0);var _0x65842d=moment(_0xdff24)[_0xf393('0x2')](0x0);return _0x321d46[_0xf393('0x3')](_0x65842d,'seconds');}function AgentComplete(_0x32abc4,_0x3cc0bc){this['state']=0x4;this['statedesc']=_0xf393('0x4');this[_0xf393('0x5')]=_0x32abc4[_0xf393('0x5')];this[_0xf393('0x6')]=_0x32abc4[_0xf393('0x6')];this[_0xf393('0x7')]=_0x32abc4['type']==='outbound'?_0xf393('0x8'):_0x32abc4[_0xf393('0x6')];this[_0xf393('0x9')]=_0x32abc4[_0xf393('0x9')];this['countcongestionretry']=_0x32abc4[_0xf393('0xa')];this[_0xf393('0xb')]=_0x32abc4[_0xf393('0xb')];this[_0xf393('0xc')]=_0x32abc4[_0xf393('0x9')]+_0x32abc4[_0xf393('0xa')]+_0x32abc4[_0xf393('0xb')]+_0x32abc4[_0xf393('0xd')]+_0x32abc4['countdropretry']+_0x32abc4['countabandonedretry']+_0x32abc4[_0xf393('0xe')]+_0x32abc4[_0xf393('0xf')];this[_0xf393('0xd')]=_0x32abc4['countnosuchnumberretry'];this[_0xf393('0x10')]=_0x32abc4[_0xf393('0x10')];this[_0xf393('0x11')]=_0x32abc4[_0xf393('0x11')];this['countmachineretry']=_0x32abc4[_0xf393('0xe')];this[_0xf393('0xf')]=_0x32abc4['countagentrejectretry'];this[_0xf393('0x12')]=_0x3cc0bc[_0xf393('0x12')];this[_0xf393('0x13')]=_0x32abc4[_0xf393('0x14')];this[_0xf393('0x15')]=_0x32abc4[_0xf393('0x16')];this[_0xf393('0x17')]=_0x32abc4[_0xf393('0x17')];this[_0xf393('0x18')]=_0x32abc4[_0xf393('0x18')];this[_0xf393('0x19')]=_0x32abc4[_0xf393('0x19')];this[_0xf393('0x1a')]=moment()[_0xf393('0x1b')](_0xf393('0x1c'));this[_0xf393('0x1d')]=getSeconds(_0x32abc4[_0xf393('0x18')],_0x32abc4[_0xf393('0x17')]);this[_0xf393('0x1e')]=getSeconds(_0x32abc4[_0xf393('0x19')],_0x32abc4[_0xf393('0x18')]);this[_0xf393('0x1f')]=getSeconds(this[_0xf393('0x1a')],_0x32abc4['answertime']);this['queue']=_0x3cc0bc[_0xf393('0x8')];this[_0xf393('0x20')]=_0x3cc0bc[_0xf393('0x20')];this[_0xf393('0x21')]=_0x3cc0bc['reason'];this[_0xf393('0x22')]=_0x32abc4['callback'];this[_0xf393('0x23')]=_0x32abc4['callbackuniqueid'];this[_0xf393('0x24')]=_0x32abc4[_0xf393('0x24')];this['recallme']=_0x32abc4['recallme'];this[_0xf393('0x25')]=_0x32abc4[_0xf393('0x25')];this[_0xf393('0x26')]=_0x32abc4[_0xf393('0x26')];this['UserId']=_0x32abc4[_0xf393('0x27')];this[_0xf393('0x28')]=_0x32abc4['VoiceQueueId'];this['CampaignId']=_0x32abc4[_0xf393('0x29')];this[_0xf393('0x2a')]=_0x32abc4['originatecalleridnum']||'';this[_0xf393('0x2b')]=_0x32abc4[_0xf393('0x2b')]||'';}module['exports']=AgentComplete;
\ No newline at end of file
index 3344700..dea6a5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd13e=['seconds','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','countmachineretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','diff'];(function(_0x3260eb,_0x284ae0){var _0x4c28d9=function(_0x33af8b){while(--_0x33af8b){_0x3260eb['push'](_0x3260eb['shift']());}};_0x4c28d9(++_0x284ae0);}(_0xd13e,0x193));var _0xed13=function(_0x515884,_0x49603d){_0x515884=_0x515884-0x0;var _0x5bc729=_0xd13e[_0x515884];return _0x5bc729;};'use strict';var util=require(_0xed13('0x0'));var _=require(_0xed13('0x1'));var moment=require(_0xed13('0x2'));function getSeconds(_0x32c6ee,_0x50b476){var _0x1a064e=moment(_0x32c6ee)['milliseconds'](0x0);var _0x282bda=moment(_0x50b476)['milliseconds'](0x0);return _0x1a064e[_0xed13('0x3')](_0x282bda,_0xed13('0x4'));}function Final(_0x5e3571){this['uniqueid']=_0x5e3571['uniqueid'];this[_0xed13('0x5')]=_0x5e3571[_0xed13('0x5')];this[_0xed13('0x6')]=_0x5e3571[_0xed13('0x6')];this[_0xed13('0x7')]=_0x5e3571[_0xed13('0x6')]===_0xed13('0x8')?_0xed13('0x9'):_0x5e3571[_0xed13('0x6')];this['countbusyretry']=_0x5e3571[_0xed13('0xa')];this[_0xed13('0xb')]=_0x5e3571[_0xed13('0xb')];this[_0xed13('0xc')]=_0x5e3571[_0xed13('0xc')];this['countglobal']=_0x5e3571[_0xed13('0xa')]+_0x5e3571[_0xed13('0xb')]+_0x5e3571[_0xed13('0xc')]+_0x5e3571[_0xed13('0xd')]+_0x5e3571[_0xed13('0xe')]+_0x5e3571[_0xed13('0xf')]+_0x5e3571['countmachineretry']+_0x5e3571[_0xed13('0x10')];this['countnosuchnumberretry']=_0x5e3571[_0xed13('0xd')];this['countdropretry']=_0x5e3571[_0xed13('0xe')];this['countabandonedretry']=_0x5e3571[_0xed13('0xf')];this['countmachineretry']=_0x5e3571[_0xed13('0x11')];this[_0xed13('0x10')]=_0x5e3571[_0xed13('0x10')];this[_0xed13('0x9')]=_0x5e3571[_0xed13('0x9')];this[_0xed13('0x12')]=_0x5e3571[_0xed13('0x12')];this[_0xed13('0x13')]=_0x5e3571[_0xed13('0x13')];this[_0xed13('0x14')]=_0x5e3571[_0xed13('0x14')];this[_0xed13('0x15')]=_0x5e3571[_0xed13('0x15')];this[_0xed13('0x16')]=_0x5e3571[_0xed13('0x15')];this[_0xed13('0x17')]=_0x5e3571['ringtime']||0x0;this['holdtime']=_0x5e3571[_0xed13('0x18')]||0x0;this[_0xed13('0x19')]=_0x5e3571['talktime']||0x0;this[_0xed13('0x1a')]=_0x5e3571['callback'];this['callbackuniqueid']=_0x5e3571[_0xed13('0x1b')];this[_0xed13('0x1c')]=_0x5e3571[_0xed13('0x1c')];this[_0xed13('0x1d')]=_0x5e3571[_0xed13('0x1d')];this[_0xed13('0x1e')]=_0x5e3571['ContactId'];this['ListId']=_0x5e3571['ListId'];this[_0xed13('0x1f')]=_0x5e3571[_0xed13('0x1f')];this[_0xed13('0x20')]=_0x5e3571[_0xed13('0x20')];this[_0xed13('0x21')]=_0x5e3571[_0xed13('0x21')];this[_0xed13('0x22')]=_0x5e3571[_0xed13('0x22')]||'';this[_0xed13('0x23')]=_0x5e3571[_0xed13('0x23')]||'';}module[_0xed13('0x24')]=Final;
\ No newline at end of file
+var _0xeff8=['util','lodash','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','queue','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports'];(function(_0x1c5349,_0x5e6d1e){var _0x2cfd46=function(_0x235f9c){while(--_0x235f9c){_0x1c5349['push'](_0x1c5349['shift']());}};_0x2cfd46(++_0x5e6d1e);}(_0xeff8,0x186));var _0x8eff=function(_0x3b96cf,_0x1592f2){_0x3b96cf=_0x3b96cf-0x0;var _0x2e315a=_0xeff8[_0x3b96cf];return _0x2e315a;};'use strict';var util=require(_0x8eff('0x0'));var _=require(_0x8eff('0x1'));var moment=require('moment');function getSeconds(_0x367eaf,_0x354ff4){var _0x1e55a0=moment(_0x367eaf)['milliseconds'](0x0);var _0x2d7c9c=moment(_0x354ff4)[_0x8eff('0x2')](0x0);return _0x1e55a0[_0x8eff('0x3')](_0x2d7c9c,_0x8eff('0x4'));}function Final(_0x4ac51c){this[_0x8eff('0x5')]=_0x4ac51c[_0x8eff('0x5')];this[_0x8eff('0x6')]=_0x4ac51c[_0x8eff('0x6')];this['type']=_0x4ac51c[_0x8eff('0x7')];this[_0x8eff('0x8')]=_0x4ac51c[_0x8eff('0x7')]===_0x8eff('0x9')?'queue':_0x4ac51c['type'];this[_0x8eff('0xa')]=_0x4ac51c[_0x8eff('0xa')];this[_0x8eff('0xb')]=_0x4ac51c['countcongestionretry'];this[_0x8eff('0xc')]=_0x4ac51c[_0x8eff('0xc')];this['countglobal']=_0x4ac51c[_0x8eff('0xa')]+_0x4ac51c[_0x8eff('0xb')]+_0x4ac51c['countnoanswerretry']+_0x4ac51c['countnosuchnumberretry']+_0x4ac51c[_0x8eff('0xd')]+_0x4ac51c[_0x8eff('0xe')]+_0x4ac51c[_0x8eff('0xf')]+_0x4ac51c[_0x8eff('0x10')];this[_0x8eff('0x11')]=_0x4ac51c['countnosuchnumberretry'];this[_0x8eff('0xd')]=_0x4ac51c[_0x8eff('0xd')];this[_0x8eff('0xe')]=_0x4ac51c[_0x8eff('0xe')];this[_0x8eff('0xf')]=_0x4ac51c[_0x8eff('0xf')];this[_0x8eff('0x10')]=_0x4ac51c[_0x8eff('0x10')];this[_0x8eff('0x12')]=_0x4ac51c[_0x8eff('0x12')];this[_0x8eff('0x13')]=_0x4ac51c['calleridname'];this[_0x8eff('0x14')]=_0x4ac51c[_0x8eff('0x14')];this[_0x8eff('0x15')]=_0x4ac51c[_0x8eff('0x15')];this[_0x8eff('0x16')]=_0x4ac51c[_0x8eff('0x16')];this[_0x8eff('0x17')]=_0x4ac51c[_0x8eff('0x16')];this[_0x8eff('0x18')]=_0x4ac51c[_0x8eff('0x18')]||0x0;this[_0x8eff('0x19')]=_0x4ac51c[_0x8eff('0x19')]||0x0;this[_0x8eff('0x1a')]=_0x4ac51c[_0x8eff('0x1a')]||0x0;this[_0x8eff('0x1b')]=_0x4ac51c[_0x8eff('0x1b')];this['callbackuniqueid']=_0x4ac51c[_0x8eff('0x1c')];this[_0x8eff('0x1d')]=_0x4ac51c['callbackat'];this[_0x8eff('0x1e')]=_0x4ac51c['recallme'];this[_0x8eff('0x1f')]=_0x4ac51c[_0x8eff('0x1f')];this[_0x8eff('0x20')]=_0x4ac51c[_0x8eff('0x20')];this[_0x8eff('0x21')]=_0x4ac51c['UserId'];this[_0x8eff('0x22')]=_0x4ac51c[_0x8eff('0x22')];this['CampaignId']=_0x4ac51c[_0x8eff('0x23')];this[_0x8eff('0x24')]=_0x4ac51c[_0x8eff('0x24')]||'';this[_0x8eff('0x25')]=_0x4ac51c[_0x8eff('0x25')]||'';}module[_0x8eff('0x26')]=Final;
\ No newline at end of file
index 0f6601f..e6c6d85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8299=['callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','CampaignId','util','moment','milliseconds','diff','seconds','state','statedesc','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','starttime','responsetime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','endtime','membername','IVR','reason','callback'];(function(_0x243b2f,_0x30aa15){var _0xcb3c2d=function(_0x213bb2){while(--_0x213bb2){_0x243b2f['push'](_0x243b2f['shift']());}};_0xcb3c2d(++_0x30aa15);}(_0x8299,0x1bf));var _0x9829=function(_0x2e3fc6,_0x334aed){_0x2e3fc6=_0x2e3fc6-0x0;var _0x34c47c=_0x8299[_0x2e3fc6];return _0x34c47c;};'use strict';var util=require(_0x9829('0x0'));var _=require('lodash');var moment=require(_0x9829('0x1'));function getSeconds(_0x1a9e13,_0x5d9fb5){var _0x51be57=moment(_0x1a9e13)[_0x9829('0x2')](0x0);var _0x4b59df=moment(_0x5d9fb5)[_0x9829('0x2')](0x0);return _0x51be57[_0x9829('0x3')](_0x4b59df,_0x9829('0x4'));}function Hangup(_0x298efe,_0xc4b416){this[_0x9829('0x5')]=0x4;this[_0x9829('0x6')]='Answer';this[_0x9829('0x7')]=_0x298efe['scheduledat'];this[_0x9829('0x8')]=_0x298efe[_0x9829('0x8')];this[_0x9829('0x9')]=_0x298efe['type']==='outbound'?_0x9829('0xa'):_0x298efe[_0x9829('0x8')];this[_0x9829('0xb')]=_0x298efe['countbusyretry'];this[_0x9829('0xc')]=_0x298efe[_0x9829('0xc')];this[_0x9829('0xd')]=_0x298efe[_0x9829('0xd')];this['countglobal']=_0x298efe['countbusyretry']+_0x298efe[_0x9829('0xc')]+_0x298efe[_0x9829('0xd')]+_0x298efe[_0x9829('0xe')]+_0x298efe[_0x9829('0xf')]+_0x298efe[_0x9829('0x10')]+_0x298efe[_0x9829('0x11')]+_0x298efe[_0x9829('0x12')];this[_0x9829('0xe')]=_0x298efe[_0x9829('0xe')];this[_0x9829('0xf')]=_0x298efe[_0x9829('0xf')];this[_0x9829('0x10')]=_0x298efe[_0x9829('0x10')];this[_0x9829('0x11')]=_0x298efe[_0x9829('0x11')];this['countagentrejectretry']=_0x298efe['countagentrejectretry'];this[_0x9829('0x13')]=_0xc4b416[_0x9829('0x13')];this[_0x9829('0x14')]=_0x298efe['name'];this['calleridnum']=_0x298efe['number'];this[_0x9829('0x15')]=_0x298efe[_0x9829('0x15')];this['responsetime']=_0x298efe[_0x9829('0x16')];this['endtime']=moment()[_0x9829('0x17')](_0x9829('0x18'));this[_0x9829('0x19')]=getSeconds(_0x298efe[_0x9829('0x16')],_0x298efe[_0x9829('0x15')]);this[_0x9829('0x1a')]=0x0;this[_0x9829('0x1b')]=getSeconds(this[_0x9829('0x1c')],_0x298efe[_0x9829('0x16')]);this[_0x9829('0xa')]=_0x298efe[_0x9829('0xa')];this[_0x9829('0x1d')]=_0x9829('0x1e');this[_0x9829('0x1f')]=_0xc4b416['cause-txt'];this[_0x9829('0x20')]=_0x298efe[_0x9829('0x20')];this['callbackuniqueid']=_0x298efe[_0x9829('0x21')];this[_0x9829('0x22')]=_0x298efe[_0x9829('0x22')];this[_0x9829('0x23')]=_0x298efe[_0x9829('0x23')];this[_0x9829('0x24')]=_0x298efe[_0x9829('0x24')];this[_0x9829('0x25')]=_0x298efe[_0x9829('0x25')];this[_0x9829('0x26')]=_0x298efe['UserId'];this['VoiceQueueId']=_0x298efe['VoiceQueueId'];this[_0x9829('0x27')]=_0x298efe['CampaignId'];}module['exports']=Hangup;
\ No newline at end of file
+var _0x57cd=['number','starttime','responsetime','endtime','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','membername','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','util','moment','milliseconds','diff','seconds','state','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','uniqueid','calleridnum'];(function(_0x399bd4,_0x3c84ab){var _0x12d41b=function(_0x2341dc){while(--_0x2341dc){_0x399bd4['push'](_0x399bd4['shift']());}};_0x12d41b(++_0x3c84ab);}(_0x57cd,0x163));var _0xd57c=function(_0x2b2d32,_0x401bf9){_0x2b2d32=_0x2b2d32-0x0;var _0x594f99=_0x57cd[_0x2b2d32];return _0x594f99;};'use strict';var util=require(_0xd57c('0x0'));var _=require('lodash');var moment=require(_0xd57c('0x1'));function getSeconds(_0x1c4173,_0x9f287d){var _0x47a142=moment(_0x1c4173)[_0xd57c('0x2')](0x0);var _0xad92c1=moment(_0x9f287d)[_0xd57c('0x2')](0x0);return _0x47a142[_0xd57c('0x3')](_0xad92c1,_0xd57c('0x4'));}function Hangup(_0x16a84b,_0x4cde77){this[_0xd57c('0x5')]=0x4;this['statedesc']=_0xd57c('0x6');this[_0xd57c('0x7')]=_0x16a84b[_0xd57c('0x7')];this[_0xd57c('0x8')]=_0x16a84b['type'];this[_0xd57c('0x9')]=_0x16a84b['type']===_0xd57c('0xa')?_0xd57c('0xb'):_0x16a84b[_0xd57c('0x8')];this['countbusyretry']=_0x16a84b[_0xd57c('0xc')];this[_0xd57c('0xd')]=_0x16a84b[_0xd57c('0xd')];this[_0xd57c('0xe')]=_0x16a84b[_0xd57c('0xe')];this[_0xd57c('0xf')]=_0x16a84b[_0xd57c('0xc')]+_0x16a84b[_0xd57c('0xd')]+_0x16a84b[_0xd57c('0xe')]+_0x16a84b[_0xd57c('0x10')]+_0x16a84b[_0xd57c('0x11')]+_0x16a84b['countabandonedretry']+_0x16a84b[_0xd57c('0x12')]+_0x16a84b[_0xd57c('0x13')];this[_0xd57c('0x10')]=_0x16a84b[_0xd57c('0x10')];this[_0xd57c('0x11')]=_0x16a84b[_0xd57c('0x11')];this[_0xd57c('0x14')]=_0x16a84b[_0xd57c('0x14')];this[_0xd57c('0x12')]=_0x16a84b['countmachineretry'];this['countagentrejectretry']=_0x16a84b['countagentrejectretry'];this['uniqueid']=_0x4cde77[_0xd57c('0x15')];this['calleridname']=_0x16a84b['name'];this[_0xd57c('0x16')]=_0x16a84b[_0xd57c('0x17')];this['starttime']=_0x16a84b[_0xd57c('0x18')];this[_0xd57c('0x19')]=_0x16a84b['responsetime'];this[_0xd57c('0x1a')]=moment()['format'](_0xd57c('0x1b'));this[_0xd57c('0x1c')]=getSeconds(_0x16a84b[_0xd57c('0x19')],_0x16a84b[_0xd57c('0x18')]);this[_0xd57c('0x1d')]=0x0;this[_0xd57c('0x1e')]=getSeconds(this[_0xd57c('0x1a')],_0x16a84b[_0xd57c('0x19')]);this['queue']=_0x16a84b[_0xd57c('0xb')];this[_0xd57c('0x1f')]='IVR';this['reason']=_0x4cde77['cause-txt'];this[_0xd57c('0x20')]=_0x16a84b[_0xd57c('0x20')];this['callbackuniqueid']=_0x16a84b[_0xd57c('0x21')];this['callbackat']=_0x16a84b[_0xd57c('0x22')];this[_0xd57c('0x23')]=_0x16a84b['recallme'];this[_0xd57c('0x24')]=_0x16a84b[_0xd57c('0x24')];this[_0xd57c('0x25')]=_0x16a84b[_0xd57c('0x25')];this[_0xd57c('0x26')]=_0x16a84b[_0xd57c('0x26')];this[_0xd57c('0x27')]=_0x16a84b[_0xd57c('0x27')];this[_0xd57c('0x28')]=_0x16a84b['CampaignId'];}module[_0xd57c('0x29')]=Hangup;
\ No newline at end of file
index 57fa5d4..df79e12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ab0=['countmachineretry','countagentrejectretry','calleridname','name','calleridnum','number','starttime','responsetime','endtime','talktime','callback','callbackuniqueid','callbackat','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry'];(function(_0xf9a6cf,_0x11870e){var _0x59e2bc=function(_0x1cd606){while(--_0x1cd606){_0xf9a6cf['push'](_0xf9a6cf['shift']());}};_0x59e2bc(++_0x11870e);}(_0x7ab0,0x8d));var _0x07ab=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x7ab0[_0x19e35c];return _0x3e1fe8;};'use strict';var util=require(_0x07ab('0x0'));var _=require(_0x07ab('0x1'));var moment=require(_0x07ab('0x2'));function getSeconds(_0x35e7ed,_0x655b43){var _0xee934a=moment(_0x35e7ed)[_0x07ab('0x3')](0x0);var _0x5ce1fc=moment(_0x655b43)[_0x07ab('0x3')](0x0);return _0xee934a[_0x07ab('0x4')](_0x5ce1fc,_0x07ab('0x5'));}function History(_0xdebd03){this[_0x07ab('0x6')]=_0xdebd03[_0x07ab('0x6')];this['scheduledat']=_0xdebd03[_0x07ab('0x7')]||undefined;this['type']=_0xdebd03[_0x07ab('0x8')];this[_0x07ab('0x9')]=_0xdebd03[_0x07ab('0x8')]===_0x07ab('0xa')?_0x07ab('0xb'):_0xdebd03[_0x07ab('0x8')];this[_0x07ab('0xc')]=_0xdebd03[_0x07ab('0xc')];this[_0x07ab('0xd')]=_0xdebd03[_0x07ab('0xd')];this[_0x07ab('0xe')]=_0xdebd03['countnoanswerretry'];this[_0x07ab('0xf')]=_0xdebd03['countbusyretry']+_0xdebd03['countcongestionretry']+_0xdebd03[_0x07ab('0xe')]+_0xdebd03[_0x07ab('0x10')]+_0xdebd03[_0x07ab('0x11')]+_0xdebd03[_0x07ab('0x12')]+_0xdebd03[_0x07ab('0x13')]+_0xdebd03[_0x07ab('0x14')];this[_0x07ab('0x10')]=_0xdebd03[_0x07ab('0x10')];this[_0x07ab('0x11')]=_0xdebd03[_0x07ab('0x11')];this['countabandonedretry']=_0xdebd03[_0x07ab('0x12')];this[_0x07ab('0x13')]=_0xdebd03[_0x07ab('0x13')];this[_0x07ab('0x14')]=_0xdebd03[_0x07ab('0x14')];this['queue']=_0xdebd03[_0x07ab('0xb')];this[_0x07ab('0x15')]=_0xdebd03[_0x07ab('0x16')];this[_0x07ab('0x17')]=_0xdebd03[_0x07ab('0x18')];this[_0x07ab('0x19')]=_0xdebd03[_0x07ab('0x19')];this[_0x07ab('0x1a')]=_0xdebd03[_0x07ab('0x1a')];this[_0x07ab('0x1b')]=_0xdebd03[_0x07ab('0x1a')];this['ringtime']=getSeconds(_0xdebd03[_0x07ab('0x1a')],_0xdebd03['starttime']);this['holdtime']=0x0;this[_0x07ab('0x1c')]=0x0;this[_0x07ab('0x1d')]=_0xdebd03['callback'];this[_0x07ab('0x1e')]=_0xdebd03[_0x07ab('0x1e')];this[_0x07ab('0x1f')]=_0xdebd03[_0x07ab('0x1f')];this['recallme']=_0xdebd03['recallme'];this[_0x07ab('0x20')]=_0xdebd03[_0x07ab('0x20')];this[_0x07ab('0x21')]=_0xdebd03['ListId'];this[_0x07ab('0x22')]=_0xdebd03[_0x07ab('0x22')];this[_0x07ab('0x23')]=_0xdebd03[_0x07ab('0x23')];this[_0x07ab('0x24')]=_0xdebd03['CampaignId'];this[_0x07ab('0x25')]=_0xdebd03[_0x07ab('0x25')]||'';this[_0x07ab('0x26')]=_0xdebd03[_0x07ab('0x26')]||'';}module[_0x07ab('0x27')]=History;
\ No newline at end of file
+var _0xce51=['scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','calleridname','name','calleridnum','starttime','responsetime','ringtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','util','lodash','moment','milliseconds','diff','seconds','uniqueid'];(function(_0x489099,_0x3eae2b){var _0x17ce86=function(_0x470d4f){while(--_0x470d4f){_0x489099['push'](_0x489099['shift']());}};_0x17ce86(++_0x3eae2b);}(_0xce51,0x1c0));var _0x1ce5=function(_0x375325,_0x57a850){_0x375325=_0x375325-0x0;var _0x228f57=_0xce51[_0x375325];return _0x228f57;};'use strict';var util=require(_0x1ce5('0x0'));var _=require(_0x1ce5('0x1'));var moment=require(_0x1ce5('0x2'));function getSeconds(_0x3a1917,_0x127abf){var _0x580e72=moment(_0x3a1917)['milliseconds'](0x0);var _0x5df0a8=moment(_0x127abf)[_0x1ce5('0x3')](0x0);return _0x580e72[_0x1ce5('0x4')](_0x5df0a8,_0x1ce5('0x5'));}function History(_0x4f36fc){this[_0x1ce5('0x6')]=_0x4f36fc[_0x1ce5('0x6')];this['scheduledat']=_0x4f36fc[_0x1ce5('0x7')]||undefined;this['type']=_0x4f36fc[_0x1ce5('0x8')];this[_0x1ce5('0x9')]=_0x4f36fc[_0x1ce5('0x8')]==='outbound'?_0x1ce5('0xa'):_0x4f36fc[_0x1ce5('0x8')];this[_0x1ce5('0xb')]=_0x4f36fc[_0x1ce5('0xb')];this[_0x1ce5('0xc')]=_0x4f36fc[_0x1ce5('0xc')];this['countnoanswerretry']=_0x4f36fc[_0x1ce5('0xd')];this['countglobal']=_0x4f36fc[_0x1ce5('0xb')]+_0x4f36fc[_0x1ce5('0xc')]+_0x4f36fc[_0x1ce5('0xd')]+_0x4f36fc[_0x1ce5('0xe')]+_0x4f36fc[_0x1ce5('0xf')]+_0x4f36fc[_0x1ce5('0x10')]+_0x4f36fc[_0x1ce5('0x11')]+_0x4f36fc['countagentrejectretry'];this[_0x1ce5('0xe')]=_0x4f36fc['countnosuchnumberretry'];this[_0x1ce5('0xf')]=_0x4f36fc[_0x1ce5('0xf')];this['countabandonedretry']=_0x4f36fc[_0x1ce5('0x10')];this['countmachineretry']=_0x4f36fc[_0x1ce5('0x11')];this['countagentrejectretry']=_0x4f36fc['countagentrejectretry'];this[_0x1ce5('0xa')]=_0x4f36fc[_0x1ce5('0xa')];this[_0x1ce5('0x12')]=_0x4f36fc[_0x1ce5('0x13')];this[_0x1ce5('0x14')]=_0x4f36fc['number'];this[_0x1ce5('0x15')]=_0x4f36fc[_0x1ce5('0x15')];this[_0x1ce5('0x16')]=_0x4f36fc['responsetime'];this['endtime']=_0x4f36fc[_0x1ce5('0x16')];this[_0x1ce5('0x17')]=getSeconds(_0x4f36fc[_0x1ce5('0x16')],_0x4f36fc['starttime']);this['holdtime']=0x0;this[_0x1ce5('0x18')]=0x0;this[_0x1ce5('0x19')]=_0x4f36fc[_0x1ce5('0x19')];this[_0x1ce5('0x1a')]=_0x4f36fc[_0x1ce5('0x1a')];this[_0x1ce5('0x1b')]=_0x4f36fc[_0x1ce5('0x1b')];this['recallme']=_0x4f36fc[_0x1ce5('0x1c')];this[_0x1ce5('0x1d')]=_0x4f36fc[_0x1ce5('0x1d')];this['ListId']=_0x4f36fc[_0x1ce5('0x1e')];this[_0x1ce5('0x1f')]=_0x4f36fc[_0x1ce5('0x1f')];this[_0x1ce5('0x20')]=_0x4f36fc[_0x1ce5('0x20')];this['CampaignId']=_0x4f36fc[_0x1ce5('0x21')];this['originatecalleridnum']=_0x4f36fc[_0x1ce5('0x22')]||'';this['originatecalleridname']=_0x4f36fc['originatecalleridname']||'';}module['exports']=History;
\ No newline at end of file
index 01bbab9..ada3960 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcea2=['saveInDb','ContactId','UserId','VoiceQueueId','CampaignId','[emptyContact]','isSuccess','Success','isTrunkReachable','SIP/%s','reachable','status','unmonitored','syncVarSet','uniqueid','variable','exten','dialAMDActive','value','outboundAnswerCallsDay','membername','AMD','buildObj','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','MACHINE','Machine','countglobal','custom:amd','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnosuchnumberretry','countdropretry','countabandonedretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','countmachineretry','add','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','ListId','HangupInAMD','[syncHangupInAMDIvr]','countnoanswerretry','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','[syncHangupIvr]','dialQueueProject','AnswerAGI','cause-txt','Unknow','reason','agent','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','syncAgentConnect','answertime','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','dialQueueTimeout','outboundDropCallsDayTimeout','predictiveIntervalErlangCallsDroppedCalls','Drop','dropreason','TIMEOUT','dialDropRetryFrequency','voiceQueue','additional','dialDropMaxRetry','[rescheduleContact][Drop]','endtime','calleridname','[syncAgentComplete][createHistory][10]','Abandoned','CALLEREXIT','dialAbandonedRetryFrequency','callAdditionalPhoneAfterMin','queueCallerAbandonCreateState','[rescheduleContact][Abandoned]','calleridnum','[syncAgentComplete][createHistory][11]','syncNewExten','actionid','locked','stateinterface','rrmemory','push','pick','idHopper','paused','queueStatusComplete','run','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','queueBookedRR','_rr','unlockRR','[booked][RR]','Agent:\x20','stringify','contactAgent-idHopper:\x20','[booked][RR][finaly]','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','loopCampaigns','resetActiveCalls','syncCampaigns','checkIsTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','ifTime','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','isArray','command','iftime\x20%s,%s','content','indexOf','true','all','GLOBAL_INTERVAL_IS_OVERTIME','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','handlePower','power','dialPowerLevel','Queue','handleIvr','dialGlobalInterval','dialTimezone','checkIfTimeIntervals','throttle','dialPreviewRecallmeReminder','online','handlePreviewRecallNotifications','map','user:%s','user:dialPreviewRecallReminder','checkIfTime','[syncCampaigns]','pow','random','match','actionOriginate','object','voiceQueue\x20is\x20undefine','phone','originate','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','dialQueueOptions','ACTIVE','xcally-motion-dialer','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','XMD-VOICEQUEUEID','Contact','tags','updatedAt','%s%s','XMD-','toUpper','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','SIP/%s/%s%s','trim','dialCutDigit','substring','from-sip','[originateError]:\x20%s','OriginateError','[originate][error]','Error','originate\x20action\x20Error','getQueue','response','callProgressDetecting','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialBusyRetryFrequency','dialCongestionMaxRetry','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialAbandonedMaxRetry','countagentrejectretry','dialAgentRejectMaxRetry','[rescheduleContact][AgentReject]','[callProgressDetecting]','evt\x20is\x20undefine','outboundNoSuchCallsDay','NoSuchNumber','nosuchnumber','reason\x200\x20no\x20such\x20number....','NoAnswer','noanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','dialBusyMaxRetry','reason\x205\x20busy','Congestion','dialCongestionRetryFrequency','custom:agentcongestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','reason\x2011\x20abandoned','AgentReject','dialAgentRejectRetryFrequency','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','round','predictiveIntervalMinThreshold','floor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','dialPredictiveOptimizationPercentage','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','outboundQueuePauses','abandonmentRate','agentBusyFactor','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','queuestatus','Queue:\x20','[unlockOriginate][syncQueueStatusComplete]','scheduledat','Agent','voicePause','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','outboundBlacklistCallsDay','BLACKLIST','Blacklist','[Originate][historyBlacklist]','limitCalls','dialOrderByScheduledAt','AVAILABLE_CONTACTS_FINISHED','[getContactCampaign2][Empty]','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','Contact.phone','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','countReScheduled','emptyContact','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','m\x20=\x20','interval\x20=\x20','Amax\x20=\x20','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','Umin\x20=\x20','exports','util','bluebird','moment','md5','ioredis','../../../config/environment/','../../../config/logger','dialer','booked','predictive','predictiveCalls','syncQueueSummary','../ami','defaults','redis','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperFinal','../rpc/voiceQueueRt','../rpc/setting','./final','./queueCallerAbandon','./hangup','env','roundrobin','enqueue','tail','finally','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','contactsId','uniqueId','optionPredictive','startPredictive','startProgressive','ivrOriginated','queueBooked','agentconnect','bind','syncQueueCallerAbandon','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','custom:queuesummarycomplete','syncQueueSummaryComplete','hangup','syncHangup','newexten','varset','queuemember','syncQueueMember','syncQueueStatusComplete','loopClearZombieChannels','getSettings','then','previewRecallmeReminderInterval','isUndefined','message','AGENTS_NOT_LOGGED','\x20AGENTS\x20NOT\x20LOGGED','name','\x20NOT\x20Active','Interval','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Intervals','milliseconds','diff','emit','type','outbound','strategy','answered','available','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundNoAnswerCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','originated','erlangCalls','erlangCallToSecond','erlangBusyFactor','Trunk','active','callerid','format','voice:queue:%s','voice_queue:save','ivr','campaign:ivr:%s','campaign:save','isEmpty','-----\x20Stats\x20Predictive\x20---','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','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangAbandonmentRate','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','merge','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','debug','error','stack','inspect','length','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','[getContactDialer2][Empty]','sendMessageOneNotActive','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','is\x20disactive','NOT_ACTIVE','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','state','statedesc','starttime','prototype','clearZombieChannels','[uniqueid]','actions','sequence','isNil','Action','channel','No\x20such\x20channel','queue','updateOriginated','[Dialer][checkChannel][ivr]','catch','[countReScheduled]\x20','checkIsBlackList','resolve','[checkIsBlackList]\x20','verifyAdditionalPhones','[verifyAdditionalPhone]\x20','swapAdditionalPhones','[swapAdditionalPhone]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','[rescheduleContact]\x20','unlockContact','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler'];(function(_0x4983fa,_0x57e9d3){var _0x414195=function(_0x2a3991){while(--_0x2a3991){_0x4983fa['push'](_0x4983fa['shift']());}};_0x414195(++_0x57e9d3);}(_0xcea2,0x15a));var _0x2cea=function(_0x411017,_0x4a8117){_0x411017=_0x411017-0x0;var _0x2adeea=_0xcea2[_0x411017];return _0x2adeea;};'use strict';var util=require(_0x2cea('0x0'));var _=require('lodash');var BPromise=require(_0x2cea('0x1'));var uuid=require('uuid');var moment=require(_0x2cea('0x2'));var rr=require('rr');var md5=require(_0x2cea('0x3'));var Redis=require(_0x2cea('0x4'));var ut=require('../preview/util/util');var config=require(_0x2cea('0x5'));var logger=require(_0x2cea('0x6'))(_0x2cea('0x7'));var loggerBooked=require('../../../config/logger')(_0x2cea('0x8'));var loggerPredictive=require('../../../config/logger')(_0x2cea('0x9'));var loggerPredictiveCalls=require(_0x2cea('0x6'))(_0x2cea('0xa'));var loggerSyncQueueSummary=require(_0x2cea('0x6'))(_0x2cea('0xb'));var ami=require(_0x2cea('0xc'));config['redis']=_[_0x2cea('0xd')](config[_0x2cea('0xe')],{'host':_0x2cea('0xf'),'port':0x18eb});var io=require(_0x2cea('0x10'))(new Redis(config[_0x2cea('0xe')]));var cmHopper=require(_0x2cea('0x11'));var cmHopperHistory=require(_0x2cea('0x12'));var cmHopperFinal=require(_0x2cea('0x13'));var cmHopperAdditionalPhone=require('../rpc/cmHopperAdditionalPhone');var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0x2cea('0x14'));var RpcSetting=require(_0x2cea('0x15'));var Action=require('./action');var History=require('./history');var Final=require(_0x2cea('0x16'));var AgentComplete=require('./agentComplete');var QueueCallerAbandon=require(_0x2cea('0x17'));var Hangup=require(_0x2cea('0x18'));var ipAgi=process[_0x2cea('0x19')]['XCALLY_IP_AGI']||'127.0.0.1';var strategy={'rrmemory':'rrmemory','roundrobin':_0x2cea('0x1a')};var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence['prototype'][_0x2cea('0x1b')]=function(_0x338669){this[_0x2cea('0x1c')]=this[_0x2cea('0x1c')]?this[_0x2cea('0x1c')][_0x2cea('0x1d')](_0x338669):_0x338669();};function Dialer(_0x3530d7,_0x1ead4c){this['sequence']=new Sequence();this[_0x2cea('0x1e')]=_0x1ead4c;this[_0x2cea('0x1f')]=_0x3530d7[_0x2cea('0x1f')];this[_0x2cea('0x20')]=_0x3530d7[_0x2cea('0x20')];this[_0x2cea('0x21')]=_0x3530d7['agents'];this[_0x2cea('0x22')]=_0x3530d7['trunks'];this[_0x2cea('0x23')]=config[_0x2cea('0x23')]||0x2;this[_0x2cea('0x24')]={};this['actions']={};this[_0x2cea('0x25')]={};this[_0x2cea('0x26')]={};this[_0x2cea('0x27')]={};this[_0x2cea('0x28')]={};this[_0x2cea('0x29')]={};this[_0x2cea('0x2a')]={};this[_0x2cea('0x2b')]={};this['queueBookedRR']={};ami['on'](_0x2cea('0x2c'),this['syncAgentConnect'][_0x2cea('0x2d')](this));ami['on']('queuecallerabandon',this[_0x2cea('0x2e')][_0x2cea('0x2d')](this));ami['on']('originateresponse',this[_0x2cea('0x2f')][_0x2cea('0x2d')](this));ami['on'](_0x2cea('0x30'),this[_0x2cea('0x31')][_0x2cea('0x2d')](this));ami['on'](_0x2cea('0x32'),this['syncQueueSummary'][_0x2cea('0x2d')](this));ami['on'](_0x2cea('0x33'),this[_0x2cea('0x34')][_0x2cea('0x2d')](this));ami['on'](_0x2cea('0x35'),this[_0x2cea('0x36')][_0x2cea('0x2d')](this));ami['on'](_0x2cea('0x37'),this['syncNewExten'][_0x2cea('0x2d')](this));ami['on'](_0x2cea('0x38'),this['syncVarSet'][_0x2cea('0x2d')](this));ami['on'](_0x2cea('0x39'),this[_0x2cea('0x3a')][_0x2cea('0x2d')](this));ami['on']('queuestatuscomplete',this[_0x2cea('0x3b')][_0x2cea('0x2d')](this));this['loopCampaigns']();this[_0x2cea('0x3c')]();RpcSetting[_0x2cea('0x3d')]()[_0x2cea('0x3e')](function(_0x393d30){previewRecallmeReminderInterval=_0x393d30[_0x2cea('0x3f')];});}function isNotNull(_0x35b37e){return _0x35b37e!==null&&!_[_0x2cea('0x40')](_0x35b37e);}function checkIsLoggedIn(_0x3d1ea2,_0x2e1cd6){return function(){if(_0x2e1cd6<=0x0){_0x3d1ea2[_0x2cea('0x41')]=_0x2cea('0x42');throw _0x3d1ea2['name']+_0x2cea('0x43');}};}function isActive(_0xca632f){return _0xca632f;}function checkIsActive(_0x18a287,_0x1bd2a5){return function(){if(!isActive(_0x1bd2a5)){_0x18a287['message']='NOT_ACTIVE';throw _0x18a287[_0x2cea('0x44')]+_0x2cea('0x45');}};}function checkInterval(_0x5eefbf){return function(){if(!isNotNull(_0x5eefbf[_0x2cea('0x46')])){_0x5eefbf['message']=_0x2cea('0x47');throw _0x5eefbf['name']+_0x2cea('0x48');}if(!isNotNull(_0x5eefbf['Interval'][_0x2cea('0x49')])){_0x5eefbf[_0x2cea('0x41')]='INTERVAL_IS_NULL';throw _0x5eefbf[_0x2cea('0x44')]+_0x2cea('0x48');}if(!isNotNull(_['isEmpty'](_0x5eefbf[_0x2cea('0x46')][_0x2cea('0x49')]))){_0x5eefbf[_0x2cea('0x41')]=_0x2cea('0x47');throw _0x5eefbf[_0x2cea('0x44')]+'\x20INTERVAL_IS_NULL';}};}function msgResponse(_0x18271d,_0x69e6e8,_0x57037f){return{'action':_0x18271d,'response':_0x69e6e8,'message':_0x57037f,'stack':_0x57037f};}function myreject(_0x53c088){return function(_0x1913a2){return _0x53c088(msgResponse('[ifTime][Action]','Error',JSON['stringify'](_0x1913a2)));};}function getSeconds(_0x50f632,_0x9d3f2){var _0xb5b358=moment(_0x50f632)['milliseconds'](0x0);var _0x219560=moment(_0x9d3f2)[_0x2cea('0x4a')](0x0);return _0xb5b358[_0x2cea('0x4b')](_0x219560,'seconds');}function emit(_0x274433,_0xcc11b6,_0x352f60){io['to'](_0x274433)[_0x2cea('0x4c')](_0xcc11b6,_0x352f60);}function emitVoiceQueueSummary(_0x167e40){if(_0x167e40[_0x2cea('0x4d')]===_0x2cea('0x4e')){var _0xdcec25={'id':_0x167e40['id'],'name':_0x167e40[_0x2cea('0x44')],'strategy':_0x167e40[_0x2cea('0x4f')],'answered':_0x167e40[_0x2cea('0x50')],'available':_0x167e40[_0x2cea('0x51')],'loggedIn':_0x167e40[_0x2cea('0x52')],'pTalking':_0x167e40[_0x2cea('0x53')],'sumBillable':_0x167e40[_0x2cea('0x54')],'sumDuration':_0x167e40[_0x2cea('0x55')],'sumHoldTime':_0x167e40[_0x2cea('0x56')]||0x0,'talking':_0x167e40[_0x2cea('0x57')],'total':_0x167e40['total'],'type':_0x167e40[_0x2cea('0x4d')],'unmanaged':_0x167e40['unmanaged'],'abandoned':_0x167e40[_0x2cea('0x58')],'waiting':_0x167e40[_0x2cea('0x59')],'loggedInDb':_0x167e40[_0x2cea('0x5a')],'dialActive':_0x167e40[_0x2cea('0x5b')],'dialMethod':_0x167e40[_0x2cea('0x5c')],'dialOriginateCallerIdName':_0x167e40[_0x2cea('0x5d')],'dialOriginateCallerIdNumber':_0x167e40[_0x2cea('0x5e')],'dialOriginateTimeout':_0x167e40[_0x2cea('0x5f')],'dialPrefix':_0x167e40[_0x2cea('0x60')],'outboundAnswerAgiCallsDay':_0x167e40[_0x2cea('0x61')],'outboundAnswerCallsDay':_0x167e40['outboundAnswerCallsDay'],'outboundBlacklistCallsDay':_0x167e40['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x167e40[_0x2cea('0x62')],'outboundCongestionCallsDay':_0x167e40[_0x2cea('0x63')],'outboundDropCallsDayACS':_0x167e40['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x167e40[_0x2cea('0x64')],'outboundDropCallsDayTimeout':_0x167e40['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x167e40[_0x2cea('0x65')],'outboundNoSuchCallsDay':_0x167e40['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x167e40[_0x2cea('0x66')],'outboundReCallsDay':_0x167e40[_0x2cea('0x67')],'outboundRejectCallsDay':_0x167e40[_0x2cea('0x68')],'outboundUnknownCallsDay':_0x167e40[_0x2cea('0x69')],'predictiveIntervalAnsweredCalls':_0x167e40[_0x2cea('0x6a')],'predictiveIntervalAvgHoldtime':_0x167e40[_0x2cea('0x6b')],'predictiveIntervalAvgTalktime':_0x167e40[_0x2cea('0x6c')],'predictiveIntervalDroppedCallsCallersExit':_0x167e40[_0x2cea('0x6d')],'predictiveIntervalDroppedCallsTimeout':_0x167e40[_0x2cea('0x6e')],'predictiveIntervalErlangCalls':_0x167e40[_0x2cea('0x6f')],'predictiveIntervalErlangCallsDroppedCalls':_0x167e40['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x167e40[_0x2cea('0x70')],'predictiveIntervalMultiplicativeFactor':_0x167e40[_0x2cea('0x71')],'predictiveIntervalPauses':_0x167e40[_0x2cea('0x72')],'predictiveIntervalAvailable':_0x167e40[_0x2cea('0x73')],'predictiveIntervalTotalCalls':_0x167e40['predictiveIntervalTotalCalls'],'message':_0x167e40['message'],'originated':_0x167e40[_0x2cea('0x74')],'erlangCalls':_0x167e40[_0x2cea('0x75')],'erlangCallToSecond':_0x167e40[_0x2cea('0x76')],'erlangAbandonmentRate':_0x167e40['erlangAbandonmentRate'],'erlangBusyFactor':_0x167e40[_0x2cea('0x77')],'startPredictive':_0x167e40[_0x2cea('0x28')],'startProgressive':_0x167e40[_0x2cea('0x29')]};if(_0x167e40[_0x2cea('0x78')]){_0xdcec25['Trunk']={'id':_0x167e40[_0x2cea('0x78')]['id'],'name':_0x167e40['Trunk']['name'],'active':_0x167e40[_0x2cea('0x78')][_0x2cea('0x79')],'callerid':_0x167e40[_0x2cea('0x78')][_0x2cea('0x7a')]};}if(_0x167e40['Interval']){_0xdcec25['Interval']={'id':_0x167e40[_0x2cea('0x46')]['id'],'name':_0x167e40[_0x2cea('0x46')][_0x2cea('0x44')]};}var _0x1cbc0e=md5(JSON['stringify'](_0xdcec25));if(_0x167e40['md5']!==_0x1cbc0e){_0x167e40['md5']=_0x1cbc0e;emit(util[_0x2cea('0x7b')](_0x2cea('0x7c'),_0xdcec25[_0x2cea('0x44')]),_0x2cea('0x7d'),_0xdcec25);}}}function emitCampaignSummary(_0x1e9937){if(_0x1e9937[_0x2cea('0x4d')]===_0x2cea('0x7e')){emit(util['format'](_0x2cea('0x7f'),_0x1e9937[_0x2cea('0x44')]),_0x2cea('0x80'),_0x1e9937);}}function checkGetDataPredictive(_0x4b9f75){if(isNotNull(_0x4b9f75)&&!_[_0x2cea('0x81')](_0x4b9f75)){loggerPredictive['info'](_0x2cea('0x82'));loggerPredictive[_0x2cea('0x83')](_0x2cea('0x84'),_0x4b9f75[_0x2cea('0x85')]);loggerPredictive[_0x2cea('0x83')](_0x2cea('0x86'),_0x4b9f75[_0x2cea('0x6a')]);loggerPredictive[_0x2cea('0x83')]('Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x4b9f75[_0x2cea('0x6e')]);loggerPredictive['info'](_0x2cea('0x87'),_0x4b9f75[_0x2cea('0x6d')]);loggerPredictive[_0x2cea('0x83')]('AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x4b9f75[_0x2cea('0x6b')]);loggerPredictive['info']('AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x4b9f75[_0x2cea('0x6c')]);loggerPredictive[_0x2cea('0x83')](_0x2cea('0x88'));if(_0x4b9f75[_0x2cea('0x85')]>0x0){if(!_[_0x2cea('0x40')](_0x4b9f75['predictiveIntervalAvgTalktime'])&&_0x4b9f75['predictiveIntervalAvgTalktime']>0x0){return!![];}loggerPredictive[_0x2cea('0x83')](_0x2cea('0x89'));if(!_[_0x2cea('0x40')](_0x4b9f75[_0x2cea('0x6b')])&&_0x4b9f75['predictiveIntervalAvgHoldtime']>0x0){return!![];}loggerPredictive[_0x2cea('0x83')]('Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive');}else{loggerPredictive[_0x2cea('0x83')](_0x2cea('0x8a'));}}else{loggerPredictive[_0x2cea('0x83')](_0x2cea('0x8b'));}return![];}function mergeDataErlangB(_0x221c16){return function(_0x50adbe){loggerPredictive[_0x2cea('0x83')](_0x2cea('0x8c'));loggerPredictive[_0x2cea('0x83')](_0x2cea('0x8d'),_0x50adbe[_0x2cea('0x75')]);loggerPredictive['info'](_0x2cea('0x8e'),_0x50adbe[_0x2cea('0x76')]);loggerPredictive['info'](_0x2cea('0x8f'),_0x50adbe[_0x2cea('0x90')]);loggerPredictive[_0x2cea('0x83')](_0x2cea('0x91'),_0x50adbe['erlangBusyFactor']);loggerPredictive['info'](_0x2cea('0x8f'),_0x50adbe[_0x2cea('0x90')]);loggerPredictive['info'](_0x2cea('0x88'));_[_0x2cea('0x92')](_0x221c16,_0x50adbe);};}function getDiff(_0x589682){var _0x22b190=moment()[_0x2cea('0x4a')](0x0);var _0x82198=moment(_0x589682)[_0x2cea('0x4a')](0x0);return _0x22b190[_0x2cea('0x4b')](_0x82198,'seconds');}function ifInterval(_0x3e629f,_0x24dcbc){if(_['isUndefined'](_0x24dcbc)){return![];}return getDiff(_0x24dcbc)<_0x3e629f*0x3c;}function freeVariablesPredictive(_0x28f6d8){if(isNotNull(_0x28f6d8)){if(!_[_0x2cea('0x40')](_0x28f6d8[_0x2cea('0x29')])){_0x28f6d8[_0x2cea('0x29')]=undefined;loggerPredictive[_0x2cea('0x83')](_0x28f6d8[_0x2cea('0x44')],_0x2cea('0x93'));}if(!_[_0x2cea('0x40')](_0x28f6d8[_0x2cea('0x28')])){_0x28f6d8[_0x2cea('0x28')]=undefined;loggerPredictive[_0x2cea('0x83')](_0x28f6d8[_0x2cea('0x44')],_0x2cea('0x94'));}if(!_['isUndefined'](_0x28f6d8['handlePredictive'])){clearInterval(_0x28f6d8[_0x2cea('0x95')]);_0x28f6d8[_0x2cea('0x95')]=undefined;loggerPredictive[_0x2cea('0x83')](_0x28f6d8[_0x2cea('0x44')],_0x2cea('0x96'));}}}function erlangb(_0x3bb026,_0x354c42){if(_0x354c42===0x0){return 0x0;}var _0x56b5a3=0x1;for(var _0x5a91b3=0x1;_0x5a91b3<=_0x354c42;_0x5a91b3+=0x1){_0x56b5a3=0x1+_0x56b5a3*_0x5a91b3/_0x3bb026;}return 0x1/_0x56b5a3;}function isVoiceQueueOutbound(_0x1dfeaf){return _0x1dfeaf===_0x2cea('0x4e');}function isNotPreview(_0x316b28){return _0x316b28!=='preview';}function isCampaignIvr(_0x4e00b6){return _0x4e00b6==='ivr';}function getCallerId(_0x3e2c5c,_0x513fe3,_0x483913){if(!_['isUndefined'](_0x483913)&&typeof _0x483913===_0x2cea('0x97')&&!_[_0x2cea('0x81')](_0x483913)){if(!_[_0x2cea('0x40')](_0x513fe3)&&typeof _0x513fe3===_0x2cea('0x97')&&!_[_0x2cea('0x81')](_0x513fe3)){return util[_0x2cea('0x7b')](_0x2cea('0x98'),_0x513fe3,_0x483913);}return util[_0x2cea('0x7b')]('\x22%s\x22\x20<%s>',_0x483913,_0x483913);}if(!_[_0x2cea('0x40')](_0x3e2c5c)&&typeof _0x3e2c5c===_0x2cea('0x97')&&!_[_0x2cea('0x81')](_0x3e2c5c)){return _0x3e2c5c;}return _0x2cea('0x99');}function loggerCatchQueueSummary(_0x2eca29,_0x554659){return function(_0x122bc9){freeVariablesPredictive(_0x554659);emitVoiceQueueSummary(_0x554659);emitCampaignSummary(_0x554659);loggerSyncQueueSummary[_0x2cea('0x9a')](_0x2eca29,util['inspect'](_0x122bc9,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x10419c,_0x278b08){return function(_0xaeeba5){loggerPredictive[_0x2cea('0x9b')](_0x278b08['name'],_0x10419c);loggerPredictive[_0x2cea('0x9b')](_0xaeeba5[_0x2cea('0x9c')]);freeVariablesPredictive(_0x278b08);};}function loggerCatch(_0x349fa2){return function(_0x5dd4d1){logger[_0x2cea('0x9b')](_0x349fa2,util[_0x2cea('0x9d')](_0x5dd4d1,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x1719e0){return _0x1719e0&&!_[_0x2cea('0x40')](_0x1719e0)&&_0x1719e0[_0x2cea('0x9e')]>0x0;}function decremetOriginate(_0x278060){if(!_[_0x2cea('0x40')](_0x278060)&&_0x278060!==null){if(typeof _0x278060[_0x2cea('0x74')]!==_0x2cea('0x9f')){if(_0x278060['originated']>0x0){_0x278060[_0x2cea('0x74')]-=0x1;}else{logger[_0x2cea('0x9b')](_0x2cea('0xa0'));}}}else{logger[_0x2cea('0x9b')]('[decremetOriginate]\x20is\x20null\x20or\x20undefined');}}function checkContactLowerLimitOriginate(_0x111ef6,_0x1a8f04,_0x3204a8){if(_0x1a8f04>_0x3204a8){for(var _0x1eb530=0x0;_0x1eb530<_0x1a8f04-_0x3204a8;_0x1eb530+=0x1){decremetOriginate(_0x111ef6);}}}function loggerGetContactDialer(_0x47bda8,_0x428149,_0x33a6fb){return function(_0x43e484){checkContactLowerLimitOriginate(_0x428149,_0x33a6fb,0x0);logger[_0x2cea('0x9b')](_0x47bda8,util[_0x2cea('0x9d')](_0x43e484,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x12ec50){return function(_0x3f2bf1){if(isNotNull(_0x3f2bf1)&&isNotNull(_0x3f2bf1[0x0])){if(_0x3f2bf1[0x0][_0x2cea('0xa1')]>0x0){_0x12ec50[_0x2cea('0x41')]=_0x2cea('0xa2');logger[_0x2cea('0x83')](_0x2cea('0xa3')+_0x12ec50[_0x2cea('0x44')],_0x3f2bf1[0x0][_0x2cea('0xa1')],'contacts');}else{_0x12ec50[_0x2cea('0x41')]='AVAILABLE_CONTACTS_FINISHED';logger[_0x2cea('0x83')](_0x2cea('0xa4')+_0x12ec50[_0x2cea('0x44')]);}}};}function notSendMessagesQueue(_0x3058ed){if(_0x3058ed[_0x2cea('0xa5')]){freeVariablesPredictive(_0x3058ed);if(_0x3058ed['originated']===0x0&&_0x3058ed[_0x2cea('0x57')]===0x0&&_0x3058ed['waiting']===0x0&&(_0x3058ed['pTalking']||0x0)===0x0){_0x3058ed[_0x2cea('0xa5')]=![];_0x3058ed[_0x2cea('0x51')]=0x0;_0x3058ed[_0x2cea('0x41')]='NOT_ACTIVE';loggerSyncQueueSummary[_0x2cea('0x9a')](_0x2cea('0xa6'),_0x3058ed[_0x2cea('0x44')],_0x2cea('0xa7'));}else{_0x3058ed['message']=_0x2cea('0xa8');loggerSyncQueueSummary[_0x2cea('0x9a')]('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x3058ed[_0x2cea('0x44')],_0x2cea('0xa9'));}emitVoiceQueueSummary(_0x3058ed);}}function notSendMessagesCampaign(_0x2d4b11){if(_0x2d4b11[_0x2cea('0xa5')]){if(_0x2d4b11['originated']===0x0){_0x2d4b11[_0x2cea('0xa5')]=![];_0x2d4b11['message']=_0x2cea('0xaa');loggerSyncQueueSummary[_0x2cea('0x9a')](_0x2cea('0xab'),_0x2d4b11[_0x2cea('0x44')],_0x2cea('0xa7'));}else{_0x2d4b11[_0x2cea('0x41')]=_0x2cea('0xa8');loggerSyncQueueSummary[_0x2cea('0x9a')](_0x2cea('0xab'),_0x2d4b11[_0x2cea('0x44')],_0x2cea('0xa9'));}emitCampaignSummary(_0x2d4b11);}}function createObjHistory(_0x1f9cdd,_0x3fb233,_0x2f3993,_0x1c93ec,_0x1a2f79){_0x1f9cdd[_0x2cea('0x41')]=_0x2f3993;var _0x1de44f=new Action(_0x1f9cdd,_0x3fb233);var _0x3e5ddf=new History(_0x1de44f);_0x3e5ddf[_0x2cea('0xac')]=_0x1c93ec;_0x3e5ddf[_0x2cea('0xad')]=_0x1a2f79;_0x3e5ddf['endtime']=_0x1de44f[_0x2cea('0xae')];return _0x3e5ddf;}Dialer[_0x2cea('0xaf')][_0x2cea('0x3c')]=function(){var _0x5aec87=this;setInterval(function(){_0x5aec87[_0x2cea('0xb0')](_0x5aec87[_0x2cea('0x26')],_0x2cea('0xb1'));_0x5aec87[_0x2cea('0xb0')](_0x5aec87[_0x2cea('0xb2')],'[actions]');},0x32c8);};Dialer['prototype']['clearZombieChannels']=function(_0x539739,_0x11a89a){var _0x4ac4aa=this;for(var _0x334993 in _0x539739){if(typeof _0x539739[_0x334993]!=='undefined'){this[_0x2cea('0xb3')][_0x2cea('0x1b')](function(){if(!_[_0x2cea('0xb4')](_0x539739[_0x334993])){return ami[_0x2cea('0xb5')]({'action':'status','channel':_0x539739[_0x334993][_0x2cea('0xb6')]})['catch'](function(_0x401fdb){if(_0x401fdb[_0x2cea('0x41')]===_0x2cea('0xb7')){setTimeout(function(){if(_0x539739[_0x334993]&&_0x539739[_0x334993][_0x2cea('0x4d')]!==_0x2cea('0x7e')){_0x4ac4aa['updateOriginated'](_0x4ac4aa[_0x2cea('0x1f')][_0x539739[_0x334993]['queue']]);logger[_0x2cea('0x9b')]('[Dialer][checkChannel]',_0x11a89a,_0x334993,_0x539739[_0x334993][_0x2cea('0xb8')]);delete _0x539739[_0x334993];}if(_0x539739[_0x334993]&&_0x539739[_0x334993]['type']===_0x2cea('0x7e')){_0x4ac4aa[_0x2cea('0xb9')](_0x4ac4aa[_0x2cea('0x20')][_0x539739[_0x334993][_0x2cea('0xb8')]]);logger[_0x2cea('0x9b')](_0x2cea('0xba'),_0x11a89a,_0x334993,_0x539739[_0x334993][_0x2cea('0xb8')]);delete _0x539739[_0x334993];}},0x2328);}});}});}}};Dialer[_0x2cea('0xaf')]['countReScheduled']=function(_0x341df6){return BPromise['resolve']()[_0x2cea('0x3e')](cmHopper['countReScheduled'](_0x341df6))[_0x2cea('0xbb')](loggerCatch(_0x2cea('0xbc')));};Dialer['prototype'][_0x2cea('0xbd')]=function(_0x3793be){return BPromise[_0x2cea('0xbe')]()[_0x2cea('0x3e')](cmHopperBlack[_0x2cea('0xbd')](_0x3793be))[_0x2cea('0xbb')](loggerCatch(_0x2cea('0xbf')));};Dialer[_0x2cea('0xaf')][_0x2cea('0xc0')]=function(_0x3ef470,_0xf40c3f,_0x19bf31){return BPromise[_0x2cea('0xbe')]()[_0x2cea('0x3e')](cmHopperAdditionalPhone['verifyAdditionalPhones'](_0x3ef470,_0xf40c3f,_0x19bf31))['catch'](loggerCatch(_0x2cea('0xc1')));};Dialer[_0x2cea('0xaf')][_0x2cea('0xc2')]=function(_0x74864f,_0x3a3a3e,_0x5a41af){return BPromise['resolve']()[_0x2cea('0x3e')](cmHopperAdditionalPhone[_0x2cea('0xc2')](_0x74864f,_0x3a3a3e,_0x5a41af))[_0x2cea('0xbb')](loggerCatch(_0x2cea('0xc3')));};Dialer['prototype'][_0x2cea('0xc4')]=function(_0x29878a){return BPromise[_0x2cea('0xbe')]()['then'](cmHopperBlack[_0x2cea('0xc4')](_0x29878a))[_0x2cea('0xbb')](loggerCatch(_0x2cea('0xc5')));};Dialer[_0x2cea('0xaf')][_0x2cea('0xc6')]=function(_0x448088){return BPromise['resolve']()[_0x2cea('0x3e')](cmHopperHistory[_0x2cea('0xc7')](_0x448088))['catch'](loggerCatch(_0x2cea('0xc8')));};Dialer[_0x2cea('0xaf')][_0x2cea('0xc9')]=function(_0x4faadf){return BPromise['resolve']()[_0x2cea('0x3e')](cmHopper[_0x2cea('0xc9')](_0x4faadf))[_0x2cea('0xbb')](loggerCatch(_0x2cea('0xca')));};Dialer[_0x2cea('0xaf')][_0x2cea('0xcb')]=function(_0x3f4f4a,_0x4288eb,_0x1d0b7b){return BPromise[_0x2cea('0xbe')]()[_0x2cea('0x3e')](cmHopper[_0x2cea('0xcb')](_0x3f4f4a,_0x4288eb,_0x1d0b7b))['catch'](loggerCatch(_0x2cea('0xcc')));};Dialer['prototype'][_0x2cea('0xcd')]=function(_0x13a91a,_0x39512d,_0x4ebc45,_0x672c,_0x542c68){return BPromise[_0x2cea('0xbe')]()[_0x2cea('0x3e')](cmHopper[_0x2cea('0xcd')](_0x13a91a,_0x39512d,_0x4ebc45,_0x672c))[_0x2cea('0xbb')](function(_0x361985){_0x542c68[_0x2cea('0xce')]-=_0x4ebc45;_0x542c68[_0x2cea('0xce')]=_0x542c68['temp']>0x0?_0x542c68[_0x2cea('0xce')]:0x0;loggerCatch(_0x2cea('0xcf'))(_0x361985);});};Dialer[_0x2cea('0xaf')]['getContactDialerIvr']=function(_0x30d3b3,_0x5a777c,_0x4d0eea,_0x274170){return BPromise[_0x2cea('0xbe')]()[_0x2cea('0x3e')](cmHopper['getContactDialerIvr'](_0x30d3b3,_0x5a777c,_0x4d0eea))[_0x2cea('0xbb')](function(_0x4aaa05){_0x274170['temp']-=_0x5a777c;_0x274170[_0x2cea('0xce')]=_0x274170['temp']>0x0?_0x274170[_0x2cea('0xce')]:0x0;loggerCatch(_0x2cea('0xd0'))(_0x4aaa05);});};Dialer[_0x2cea('0xaf')]['getVoiceQueueRtPauses']=function(_0x511109){return BPromise[_0x2cea('0xbe')]()[_0x2cea('0x3e')](voiceQueueRt[_0x2cea('0xd1')](_0x511109))[_0x2cea('0xbb')](loggerCatch('[getVoiceQueueRtPauses]\x20'));};Dialer['prototype'][_0x2cea('0xd2')]=function(_0x382329){return BPromise[_0x2cea('0xbe')]()[_0x2cea('0x3e')](cmHopper[_0x2cea('0xd2')](_0x382329))[_0x2cea('0xbb')](loggerCatch(_0x2cea('0xd3')));};Dialer[_0x2cea('0xaf')][_0x2cea('0xd4')]=function(_0x53ae79){return BPromise[_0x2cea('0xbe')]()[_0x2cea('0x3e')](cmHopperHistory[_0x2cea('0xd4')](_0x53ae79))[_0x2cea('0xbb')](loggerCatch('[createHistory]\x20'));};Dialer['prototype'][_0x2cea('0xb9')]=function(_0x4c136d){if(!_[_0x2cea('0x40')](_0x4c136d)&&_0x4c136d!==null){if(typeof _0x4c136d[_0x2cea('0x74')]!==_0x2cea('0x9f')){if(_0x4c136d[_0x2cea('0x74')]>0x0){_0x4c136d['originated']-=0x1;}else{logger[_0x2cea('0x9b')](_0x2cea('0xd5'));}}}else{logger[_0x2cea('0x9b')](_0x2cea('0xd6'));}};Dialer[_0x2cea('0xaf')][_0x2cea('0xd7')]=function(_0x416db2,_0x56819f){var _0x7d3f87=this;return function(_0x238ee1){_0x7d3f87[_0x2cea('0xb9')](_0x56819f);logger[_0x2cea('0x9b')](_0x416db2,util[_0x2cea('0x9d')](_0x238ee1,{'showHidden':![],'depth':null}));};};Dialer[_0x2cea('0xaf')]['emptyContact']=function(_0x3fd488,_0x360102,_0x2ec6b9){var _0x1090b6={'state':0x19,'statedesc':'notFound'};this[_0x2cea('0xb9')](_0x360102);this[_0x2cea('0xd8')](_[_0x2cea('0x92')](_0x1090b6,_['pick'](_0x2ec6b9,[_0x2cea('0xd9'),'ListId',_0x2cea('0xda'),_0x2cea('0xdb'),_0x2cea('0xdc')])),'[emptyContact][createHistory]',_0x2cea('0xdd'));logger[_0x2cea('0x9b')](_0x3fd488);};Dialer['prototype'][_0x2cea('0xde')]=function(_0x5ed4bd){return _0x5ed4bd===_0x2cea('0xdf');};Dialer[_0x2cea('0xaf')][_0x2cea('0xe0')]=function(_0x4b517c){return!_['isUndefined'](_0x4b517c)&&_0x4b517c&&!_[_0x2cea('0x40')](_0x4b517c[_0x2cea('0x44')])&&!_[_0x2cea('0x40')](_0x4b517c['active'])&&_0x4b517c[_0x2cea('0x79')]&&(this[_0x2cea('0x22')][util[_0x2cea('0x7b')](_0x2cea('0xe1'),_0x4b517c[_0x2cea('0x44')])]['status']===_0x2cea('0xe2')||this['trunks'][util[_0x2cea('0x7b')]('SIP/%s',_0x4b517c['name'])][_0x2cea('0xe3')]===_0x2cea('0xe4'));};Dialer[_0x2cea('0xaf')]['saveInDb']=function(_0x4da86e,_0x22ad5c,_0x206116){this[_0x2cea('0xd4')](_0x4da86e)[_0x2cea('0xbb')](loggerCatch(_0x22ad5c));this[_0x2cea('0xd2')](_0x4da86e)[_0x2cea('0xbb')](loggerCatch(_0x206116));};Dialer['prototype'][_0x2cea('0xe5')]=function(_0x127f9e){var _0x3c6734=this[_0x2cea('0x26')][_0x127f9e[_0x2cea('0xe6')]];var _0x15fa1e;if(!_[_0x2cea('0xb4')](_0x127f9e)&&!_[_0x2cea('0xb4')](_0x127f9e[_0x2cea('0xe7')])&&!_['isNil'](_0x127f9e[_0x2cea('0xe7')]['amdstatus'])&&_0x127f9e[_0x2cea('0xe8')]==='xcally-motion-dialer'&&_0x3c6734){if(_0x3c6734[_0x2cea('0x4d')]!==_0x2cea('0x7e')&&this[_0x2cea('0x1f')][_0x3c6734[_0x2cea('0xb8')]][_0x2cea('0xe9')]&&_0x127f9e[_0x2cea('0xea')]==='HANGUP'){delete this[_0x2cea('0x26')][_0x127f9e[_0x2cea('0xe6')]];this[_0x2cea('0xb9')](this[_0x2cea('0x1f')][_0x3c6734['queue']]);this[_0x2cea('0x1f')][_0x3c6734['queue']][_0x2cea('0xeb')]+=0x1;this[_0x2cea('0x1f')][_0x3c6734[_0x2cea('0xb8')]][_0x2cea('0x61')]+=0x1;_0x15fa1e=new Hangup(_0x3c6734,_0x127f9e);_0x15fa1e[_0x2cea('0xac')]=0x12;_0x15fa1e[_0x2cea('0xad')]='HangupInAMD';_0x15fa1e[_0x2cea('0xec')]=_0x2cea('0xed');ami[_0x2cea('0x4c')]('custom:amd',ut[_0x2cea('0xee')](_0x15fa1e,_0x2cea('0xef')));this[_0x2cea('0xd8')](_0x15fa1e,_0x2cea('0xf0'),_0x2cea('0xf1'));}if(_0x3c6734[_0x2cea('0x4d')]!==_0x2cea('0x7e')&&this['voiceQueues'][_0x3c6734[_0x2cea('0xb8')]][_0x2cea('0xe9')]&&_0x127f9e['value']===_0x2cea('0xf2')){var _0x2b08e2=this;return new BPromise(function(_0x329cd0,_0x1b4084){delete _0x2b08e2[_0x2cea('0x26')][_0x127f9e[_0x2cea('0xe6')]];_0x2b08e2[_0x2cea('0xb9')](_0x2b08e2[_0x2cea('0x1f')][_0x3c6734[_0x2cea('0xb8')]]);_0x2b08e2[_0x2cea('0x1f')][_0x3c6734['queue']][_0x2cea('0xeb')]+=0x1;_0x2b08e2[_0x2cea('0x1f')][_0x3c6734[_0x2cea('0xb8')]][_0x2cea('0x61')]+=0x1;var _0x1ad89d=_0x2b08e2[_0x2cea('0x1f')][_0x3c6734[_0x2cea('0xb8')]];var _0x134172=new Hangup(_0x3c6734,_0x127f9e);_0x134172[_0x2cea('0xac')]=0x13;_0x134172['statedesc']=_0x2cea('0xf3');_0x134172['membername']=_0x2cea('0xed');_0x134172['countmachineretry']+=0x1;_0x134172[_0x2cea('0xf4')]+=0x1;_0x134172[_0x2cea('0xef')]=!![];ami[_0x2cea('0x4c')](_0x2cea('0xf5'),ut[_0x2cea('0xee')](_0x134172,_0x2cea('0xef')));_0x2b08e2[_0x2cea('0xd4')](_0x134172)[_0x2cea('0xbb')](loggerCatch(_0x2cea('0xf6')));if(_0x134172[_0x2cea('0xf7')]+_0x134172[_0x2cea('0xf8')]+_0x134172['countnoanswerretry']+_0x134172[_0x2cea('0xf9')]+_0x134172[_0x2cea('0xfa')]+_0x134172[_0x2cea('0xfb')]+_0x134172['countmachineretry']+_0x134172['countagentrejectretry']>=_0x1ad89d[_0x2cea('0xfc')]){_0x2b08e2[_0x2cea('0xfd')](_0x134172,_0x329cd0,_0x1b4084,_0x2cea('0xfe'));}else{if(_0x134172['countmachineretry']>=_0x1ad89d[_0x2cea('0xff')]){_0x2b08e2[_0x2cea('0x100')](_0x134172,_0x329cd0,_0x1b4084,_0x2cea('0x101'));}else{_0x2b08e2[_0x2cea('0xc9')]({'active':![],'countmachineretry':_0x134172[_0x2cea('0x102')],'scheduledat':moment()[_0x2cea('0x103')](_0x1ad89d[_0x2cea('0x104')],_0x2cea('0x105'))[_0x2cea('0x7b')](_0x2cea('0x106')),'ContactId':_0x134172['ContactId'],'ListId':_0x134172[_0x2cea('0x107')],'VoiceQueueId':_0x134172['VoiceQueueId']||undefined,'CampaignId':_0x134172[_0x2cea('0xdc')]||undefined})[_0x2cea('0xbb')](loggerCatch('[rescheduleContact][Machine]'));_0x329cd0({'reschedule':0x1});}}});}if(_0x3c6734[_0x2cea('0x4d')]===_0x2cea('0x7e')&&this[_0x2cea('0x20')][_0x3c6734[_0x2cea('0xb8')]]['dialAMDActive']&&_0x127f9e[_0x2cea('0xea')]==='HANGUP'){delete this[_0x2cea('0x26')][_0x127f9e['uniqueid']];this[_0x2cea('0xb9')](this[_0x2cea('0x20')][_0x3c6734[_0x2cea('0xb8')]]);_0x15fa1e=new Hangup(_0x3c6734,_0x127f9e);_0x15fa1e[_0x2cea('0xac')]=0x12;_0x15fa1e['statedesc']=_0x2cea('0x108');_0x15fa1e[_0x2cea('0xec')]=_0x2cea('0xed');ami['emit'](_0x2cea('0xf5'),ut[_0x2cea('0xee')](_0x15fa1e,_0x2cea('0xef')));this[_0x2cea('0xd8')](_0x15fa1e,'[syncHangupInAMDIvr][createHistory]',_0x2cea('0x109'));}if(_0x3c6734[_0x2cea('0x4d')]===_0x2cea('0x7e')&&this[_0x2cea('0x20')][_0x3c6734[_0x2cea('0xb8')]][_0x2cea('0xe9')]&&_0x127f9e[_0x2cea('0xea')]===_0x2cea('0xf2')){var _0x2b08e2=this;return new BPromise(function(_0x1b53b0,_0x256ec6){delete _0x2b08e2[_0x2cea('0x26')][_0x127f9e[_0x2cea('0xe6')]];_0x2b08e2[_0x2cea('0xb9')](_0x2b08e2[_0x2cea('0x20')][_0x3c6734[_0x2cea('0xb8')]]);_0x2b08e2[_0x2cea('0x20')][_0x3c6734[_0x2cea('0xb8')]][_0x2cea('0xeb')]+=0x1;_0x2b08e2[_0x2cea('0x20')][_0x3c6734['queue']]['outboundAnswerAgiCallsDay']+=0x1;var _0x56e33e=_0x2b08e2[_0x2cea('0x20')][_0x3c6734[_0x2cea('0xb8')]];var _0x5d06d4=new Hangup(_0x3c6734,_0x127f9e);_0x5d06d4[_0x2cea('0xac')]=0x13;_0x5d06d4[_0x2cea('0xad')]='Machine';_0x5d06d4[_0x2cea('0xec')]='AMD';_0x5d06d4[_0x2cea('0x102')]+=0x1;_0x5d06d4[_0x2cea('0xf4')]+=0x1;_0x5d06d4[_0x2cea('0xef')]=!![];ami[_0x2cea('0x4c')]('custom:amd',ut['buildObj'](_0x5d06d4,'amd'));_0x2b08e2[_0x2cea('0xd4')](_0x5d06d4)['catch'](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x5d06d4[_0x2cea('0xf7')]+_0x5d06d4['countcongestionretry']+_0x5d06d4[_0x2cea('0x10a')]+_0x5d06d4[_0x2cea('0xf9')]+_0x5d06d4[_0x2cea('0xfa')]+_0x5d06d4[_0x2cea('0xfb')]+_0x5d06d4[_0x2cea('0x102')]+_0x5d06d4['countagentrejectretry']>=_0x56e33e[_0x2cea('0xfc')]){_0x2b08e2[_0x2cea('0xfd')](_0x5d06d4,_0x1b53b0,_0x256ec6,_0x2cea('0xfe'));}else{if(_0x5d06d4['countmachineretry']>=_0x56e33e[_0x2cea('0xff')]){_0x2b08e2[_0x2cea('0x100')](_0x5d06d4,_0x1b53b0,_0x256ec6,_0x2cea('0x101'));}else{_0x2b08e2[_0x2cea('0xc9')]({'active':![],'countmachineretry':_0x5d06d4[_0x2cea('0x102')],'scheduledat':moment()[_0x2cea('0x103')](_0x56e33e[_0x2cea('0x104')],_0x2cea('0x105'))['format'](_0x2cea('0x106')),'ContactId':_0x5d06d4[_0x2cea('0xd9')],'ListId':_0x5d06d4[_0x2cea('0x107')],'VoiceQueueId':_0x5d06d4[_0x2cea('0xdb')]||undefined,'CampaignId':_0x5d06d4[_0x2cea('0xdc')]||undefined})[_0x2cea('0xbb')](loggerCatch('[rescheduleContact][Machine]'));_0x1b53b0({'reschedule':0x1});}}});}}};Dialer[_0x2cea('0xaf')][_0x2cea('0x36')]=function(_0x38af51){var _0x77d590=this[_0x2cea('0x26')][_0x38af51['uniqueid']];var _0x5d1458=this;var _0x48922c;if(_0x77d590&&_0x77d590['type']===_0x2cea('0x7e')){delete this[_0x2cea('0x26')][_0x38af51['uniqueid']];this['updateOriginated'](this[_0x2cea('0x20')][_0x77d590[_0x2cea('0xb8')]]);this[_0x2cea('0x20')][_0x77d590[_0x2cea('0xb8')]][_0x2cea('0x10b')]+=0x1;_0x48922c=new Hangup(_0x77d590,_0x38af51);this[_0x2cea('0xd4')](_0x48922c)['catch'](loggerCatch(_0x2cea('0x10c')));this[_0x2cea('0xd2')](_0x48922c)[_0x2cea('0xbb')](loggerCatch(_0x2cea('0x10d')));}if(_0x77d590&&_0x77d590[_0x2cea('0x4d')]!=='ivr'&&isNotNull(this['voiceQueues'][_0x77d590[_0x2cea('0xb8')]][_0x2cea('0x10e')])){delete this[_0x2cea('0x26')][_0x38af51[_0x2cea('0xe6')]];this[_0x2cea('0xb9')](this[_0x2cea('0x1f')][_0x77d590[_0x2cea('0xb8')]]);this[_0x2cea('0x1f')][_0x77d590[_0x2cea('0xb8')]][_0x2cea('0xeb')]+=0x1;this['voiceQueues'][_0x77d590[_0x2cea('0xb8')]][_0x2cea('0x61')]+=0x1;_0x48922c=new Hangup(_0x77d590,_0x38af51);_0x48922c[_0x2cea('0xac')]=0x10;_0x48922c['statedesc']=_0x2cea('0x10f');_0x48922c[_0x2cea('0xec')]='AGI';this[_0x2cea('0xd4')](_0x48922c)[_0x2cea('0xbb')](loggerCatch('[syncHangupIvr][createHistory]'));this['moveContactManagedDialer'](_0x48922c)['catch'](loggerCatch('[syncHangupIvr]'));}if(_0x77d590&&_0x77d590[_0x2cea('0x4d')]!==_0x2cea('0x7e')&&!isNotNull(this[_0x2cea('0x1f')][_0x77d590['queue']][_0x2cea('0x10e')])){delete this[_0x2cea('0x26')][_0x38af51[_0x2cea('0xe6')]];this['updateOriginated'](this[_0x2cea('0x1f')][_0x77d590[_0x2cea('0xb8')]]);this['voiceQueues'][_0x77d590['queue']][_0x2cea('0x69')]+=0x1;_0x48922c=new Hangup(_0x77d590,_0x38af51);_0x48922c[_0x2cea('0xac')]=0xc;_0x48922c['statedesc']=_0x38af51[_0x2cea('0x110')];_0x48922c[_0x2cea('0xec')]=_0x2cea('0x111');this[_0x2cea('0xd4')](_0x48922c)[_0x2cea('0xbb')](loggerCatch(_0x2cea('0x10c')));this[_0x2cea('0xd2')](_0x48922c)[_0x2cea('0xbb')](loggerCatch(_0x2cea('0x10d')));}};Dialer[_0x2cea('0xaf')][_0x2cea('0x31')]=function(_0x5aeccc){var _0x3b0fe8=this['uniqueId'][_0x5aeccc[_0x2cea('0xe6')]];var _0x502ae1=this;if(this['voiceQueues'][_0x5aeccc[_0x2cea('0xb8')]]){if(_0x3b0fe8&&_0x3b0fe8['type']!=='ivr'){delete this[_0x2cea('0x26')][_0x5aeccc[_0x2cea('0xe6')]];this[_0x2cea('0x1f')][_0x5aeccc[_0x2cea('0xb8')]]['outboundAnswerCallsDay']+=0x1;var _0x135734=new AgentComplete(_0x3b0fe8,_0x5aeccc);if(_0x5aeccc[_0x2cea('0x112')]===_0x2cea('0x113')){_0x135734[_0x2cea('0x114')]=this['voiceQueues'][_0x5aeccc['queue']][_0x2cea('0x115')]&&this[_0x2cea('0x1f')][_0x5aeccc[_0x2cea('0xb8')]][_0x2cea('0x116')]?moment()[_0x2cea('0x7b')](_0x2cea('0x106')):undefined;}this[_0x2cea('0xd4')](_0x135734)[_0x2cea('0xbb')](loggerCatch(_0x2cea('0x117')));this[_0x2cea('0xd2')](_0x135734)[_0x2cea('0xbb')](loggerCatch(_0x2cea('0x118')));}}};Dialer['prototype'][_0x2cea('0x119')]=function(_0x1e024e){if(this[_0x2cea('0x1f')][_0x1e024e['queue']]){if(this[_0x2cea('0x26')][_0x1e024e['uniqueid']]&&this[_0x2cea('0x26')][_0x1e024e[_0x2cea('0xe6')]][_0x2cea('0x4d')]!==_0x2cea('0x7e')){this[_0x2cea('0xb9')](this[_0x2cea('0x1f')][_0x1e024e[_0x2cea('0xb8')]]);this[_0x2cea('0x26')][_0x1e024e[_0x2cea('0xe6')]][_0x2cea('0x11a')]=moment()[_0x2cea('0x7b')](_0x2cea('0x106'));}}};Dialer[_0x2cea('0xaf')]['queueCallerAbandonCreateState']=function(_0x3072d6,_0x1c10b5){this[_0x2cea('0xd4')](_0x3072d6)[_0x2cea('0xbb')](loggerCatch(_0x2cea('0x117')));if(_0x1c10b5==0x0){this['moveContactManagedDialer'](_0x3072d6)[_0x2cea('0xbb')](loggerCatch(_0x2cea('0x11b')));}};Dialer['prototype']['syncQueueCallerAbandon']=function(_0x1bd88c){var _0x3219c5=this['uniqueId'][_0x1bd88c[_0x2cea('0xe6')]];var _0x25e5eb=this;var _0x150b47=![];var _0x122e2c;var _0x23d559;if(this['voiceQueues'][_0x1bd88c[_0x2cea('0xb8')]]){if(_0x3219c5&&_0x3219c5[_0x2cea('0x4d')]!=='ivr'){delete this[_0x2cea('0x26')][_0x1bd88c['uniqueid']];this[_0x2cea('0xb9')](this[_0x2cea('0x1f')][_0x1bd88c[_0x2cea('0xb8')]]);_0x3219c5[_0x2cea('0x11c')]=moment()[_0x2cea('0x7b')](_0x2cea('0x106'));var _0x1a3c16=new QueueCallerAbandon(_0x3219c5,_0x1bd88c);if(getSeconds(_0x3219c5[_0x2cea('0x11c')],_0x3219c5[_0x2cea('0x11d')])>=_0x3219c5[_0x2cea('0x11e')]){this[_0x2cea('0x1f')][_0x1bd88c[_0x2cea('0xb8')]][_0x2cea('0x6e')]+=0x1;this['voiceQueues'][_0x1bd88c[_0x2cea('0xb8')]][_0x2cea('0x11f')]+=0x1;this[_0x2cea('0x1f')][_0x1bd88c[_0x2cea('0xb8')]][_0x2cea('0x120')]+=0x1;_0x1a3c16[_0x2cea('0xac')]=0xa;_0x1a3c16[_0x2cea('0xad')]=_0x2cea('0x121');_0x1a3c16[_0x2cea('0x122')]=_0x2cea('0x123');_0x1a3c16[_0x2cea('0x114')]=this[_0x2cea('0x1f')][_0x1bd88c['queue']][_0x2cea('0x115')]?moment()[_0x2cea('0x7b')](_0x2cea('0x106')):undefined;_0x1a3c16[_0x2cea('0xfa')]+=0x1;_0x1a3c16[_0x2cea('0xf4')]+=0x1;_0x122e2c=this['voiceQueues'][_0x1bd88c[_0x2cea('0xb8')]][_0x2cea('0x124')];_0x23d559=this[_0x2cea('0x1f')][_0x1bd88c[_0x2cea('0xb8')]]['callAdditionalPhoneAfterMin'];_0x25e5eb[_0x2cea('0xc0')](_0x1a3c16,_0x1a3c16[_0x2cea('0xac')],_0x3219c5[_0x2cea('0x125')])[_0x2cea('0x3e')](function(_0x3311ff){_0x150b47=_0x3311ff[_0x2cea('0x126')]==0x1;if(_0x1a3c16['countdropretry']>=_0x25e5eb[_0x2cea('0x1f')][_0x1bd88c[_0x2cea('0xb8')]][_0x2cea('0x127')]){_0x25e5eb['queueCallerAbandonCreateState'](_0x1a3c16,_0x3311ff[_0x2cea('0x126')]);}else{_0x25e5eb[_0x2cea('0xc9')]({'active':![],'countdropretry':_0x1a3c16[_0x2cea('0xfa')],'scheduledat':moment()[_0x2cea('0x103')](_0x25e5eb[_0x2cea('0x1f')][_0x1bd88c['queue']][_0x2cea('0x124')],_0x2cea('0x105'))[_0x2cea('0x7b')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x3219c5[_0x2cea('0xd9')],'ListId':_0x3219c5['ListId'],'VoiceQueueId':_0x3219c5[_0x2cea('0xdb')]||undefined,'CampaignId':_0x3219c5[_0x2cea('0xdc')]||undefined})[_0x2cea('0xbb')](loggerCatch(_0x2cea('0x128')));var _0x359cbf=new History(_0x1a3c16);_0x359cbf[_0x2cea('0xac')]=0xa;_0x359cbf[_0x2cea('0xad')]=_0x2cea('0x121');_0x359cbf['starttime']=moment()[_0x2cea('0x7b')]('YYYY-MM-DD\x20HH:mm:ss');_0x359cbf[_0x2cea('0x129')]=_0x359cbf[_0x2cea('0xae')];_0x359cbf[_0x2cea('0x12a')]=_0x1a3c16[_0x2cea('0x12a')];_0x359cbf['calleridnum']=_0x1a3c16['calleridnum'];_0x25e5eb[_0x2cea('0xd4')](_0x359cbf)[_0x2cea('0xbb')](loggerCatch(_0x2cea('0x12b')));}})[_0x2cea('0x3e')](function(_0x2f0f0f){if(_0x150b47)_0x25e5eb[_0x2cea('0xc2')](_0x1a3c16,_0x122e2c,_0x23d559)[_0x2cea('0x3e')](function(_0x393658){return 0x1;});});}else{this[_0x2cea('0x1f')][_0x1bd88c[_0x2cea('0xb8')]][_0x2cea('0x6d')]+=0x1;this[_0x2cea('0x1f')][_0x1bd88c[_0x2cea('0xb8')]][_0x2cea('0x64')]+=0x1;_0x1a3c16[_0x2cea('0xac')]=0xb;_0x1a3c16[_0x2cea('0xad')]=_0x2cea('0x12c');_0x1a3c16['dropreason']=_0x2cea('0x12d');_0x1a3c16['countabandonedretry']+=0x1;_0x1a3c16['countglobal']+=0x1;_0x122e2c=this[_0x2cea('0x1f')][_0x1bd88c['queue']][_0x2cea('0x12e')];_0x23d559=this['voiceQueues'][_0x1bd88c[_0x2cea('0xb8')]][_0x2cea('0x12f')];_0x25e5eb[_0x2cea('0xc0')](_0x1a3c16,_0x1a3c16['state'],_0x3219c5[_0x2cea('0x125')])[_0x2cea('0x3e')](function(_0x4c8d95){if(_0x1a3c16[_0x2cea('0xfb')]>=_0x25e5eb[_0x2cea('0x1f')][_0x1bd88c[_0x2cea('0xb8')]]['dialAbandonedMaxRetry']){_0x25e5eb[_0x2cea('0x130')](_0x1a3c16,_0x4c8d95[_0x2cea('0x126')]);}else{_0x25e5eb[_0x2cea('0xc9')]({'active':![],'countabandonedretry':_0x1a3c16[_0x2cea('0xfb')],'scheduledat':moment()['add'](_0x25e5eb[_0x2cea('0x1f')][_0x1bd88c[_0x2cea('0xb8')]][_0x2cea('0x12e')],_0x2cea('0x105'))[_0x2cea('0x7b')](_0x2cea('0x106')),'ContactId':_0x3219c5[_0x2cea('0xd9')],'ListId':_0x3219c5[_0x2cea('0x107')],'VoiceQueueId':_0x3219c5['VoiceQueueId']||undefined,'CampaignId':_0x3219c5[_0x2cea('0xdc')]||undefined})[_0x2cea('0xbb')](loggerCatch(_0x2cea('0x131')));var _0x357fc7=new History(_0x1a3c16);_0x357fc7[_0x2cea('0xac')]=0xb;_0x357fc7['statedesc']=_0x2cea('0x12c');_0x357fc7['starttime']=moment()[_0x2cea('0x7b')](_0x2cea('0x106'));_0x357fc7[_0x2cea('0x129')]=_0x357fc7[_0x2cea('0xae')];_0x357fc7[_0x2cea('0x12a')]=_0x1a3c16[_0x2cea('0x12a')];_0x357fc7[_0x2cea('0x132')]=_0x1a3c16[_0x2cea('0x132')];_0x25e5eb[_0x2cea('0xd4')](_0x357fc7)['catch'](loggerCatch(_0x2cea('0x133')));}})[_0x2cea('0x3e')](function(_0x1e2f9f){if(_0x150b47)_0x25e5eb[_0x2cea('0xc2')](_0x1a3c16,_0x122e2c,_0x23d559)[_0x2cea('0x3e')](function(_0x49e335){return 0x1;});});}}}};Dialer[_0x2cea('0xaf')][_0x2cea('0x134')]=function(_0x428180){if(this[_0x2cea('0xb2')][_0x428180[_0x2cea('0xe6')]]){this[_0x2cea('0xb2')][_0x428180['uniqueid']][_0x2cea('0xb6')]=_0x428180['channel'];}if(this[_0x2cea('0x26')][_0x428180[_0x2cea('0xe6')]]){this[_0x2cea('0x26')][_0x428180[_0x2cea('0xe6')]]['channel']=_0x428180[_0x2cea('0xb6')];}};Dialer['prototype']['syncQueueMember']=function(_0x3d6103){if(strategy[this[_0x2cea('0x1f')][this[_0x2cea('0xb2')][_0x3d6103[_0x2cea('0x135')]][_0x2cea('0xb8')]][_0x2cea('0x4f')]]===_0x2cea('0x1a')){if(this[_0x2cea('0xb2')][_0x3d6103[_0x2cea('0x135')]]&&_['isNil'](this[_0x2cea('0xb2')][_0x3d6103[_0x2cea('0x135')]][_0x2cea('0x136')])&&_0x3d6103[_0x2cea('0xe3')]==='1'&&_0x3d6103['paused']==='0'){if(this[_0x2cea('0x21')][_0x3d6103[_0x2cea('0x137')]]){if(!this[_0x2cea('0x21')][_0x3d6103[_0x2cea('0x137')]][_0x2cea('0x136')]){this['agents'][_0x3d6103[_0x2cea('0x137')]]['locked']=!![];this['actions'][_0x3d6103[_0x2cea('0x135')]][_0x2cea('0x136')]=!![];this[_0x2cea('0xb2')][_0x3d6103[_0x2cea('0x135')]][_0x2cea('0x137')]=_0x3d6103[_0x2cea('0x137')];}}}}else if((strategy[this['voiceQueues'][this[_0x2cea('0xb2')][_0x3d6103[_0x2cea('0x135')]][_0x2cea('0xb8')]]['strategy']]||'rrmemory')===_0x2cea('0x138')){if(this[_0x2cea('0xb2')][_0x3d6103['actionid']]){if(this[_0x2cea('0x21')][_0x3d6103['stateinterface']]){this[_0x2cea('0xb2')][_0x3d6103['actionid']]['stateinterface']=_0x3d6103[_0x2cea('0x137')];if(_['isNil'](this[_0x2cea('0x2b')][this[_0x2cea('0xb2')][_0x3d6103[_0x2cea('0x135')]][_0x2cea('0xb8')]])){this[_0x2cea('0x2b')][this['actions'][_0x3d6103['actionid']][_0x2cea('0xb8')]]=[];}this[_0x2cea('0x2b')][this[_0x2cea('0xb2')][_0x3d6103[_0x2cea('0x135')]][_0x2cea('0xb8')]][_0x2cea('0x139')](_['merge'](_[_0x2cea('0x13a')](this[_0x2cea('0xb2')][_0x3d6103[_0x2cea('0x135')]],[_0x2cea('0x13b'),_0x2cea('0x137')]),{'status':_0x3d6103[_0x2cea('0xe3')],'paused':_0x3d6103[_0x2cea('0x13c')]}));}}}};function unlockQueueStatus(_0x195d86,_0x353daa){setTimeout(function(){if(_['isUndefined'](_0x195d86['queueStatusComplete'])){loggerBooked['error']('[unlockQueueStatus][undefined]',_0x353daa);}_0x195d86[_0x2cea('0x13d')]=!![];loggerBooked[_0x2cea('0x83')]('[booked][unlockQueueStatus]',_0x353daa,JSON['stringify'](_[_0x2cea('0x13a')](_0x195d86,['name',_0x2cea('0x13d')])));},0x1f3);}Dialer['prototype'][_0x2cea('0x3b')]=function(_0x3f3a91){var _0x53a3b6=this;var _0x5abe97=_0x53a3b6[_0x2cea('0x1f')][_0x53a3b6[_0x2cea('0xb2')][_0x3f3a91[_0x2cea('0x135')]][_0x2cea('0xb8')]];if(strategy[this[_0x2cea('0x1f')][this[_0x2cea('0xb2')][_0x3f3a91['actionid']][_0x2cea('0xb8')]][_0x2cea('0x4f')]]===_0x2cea('0x1a')){if(this[_0x2cea('0xb2')][_0x3f3a91[_0x2cea('0x135')]]&&this[_0x2cea('0xb2')][_0x3f3a91['actionid']][_0x2cea('0x137')]){this['preview'][_0x2cea('0x13e')](this[_0x2cea('0xb2')][_0x3f3a91['actionid']][_0x2cea('0x13b')],this['actions'][_0x3f3a91[_0x2cea('0x135')]][_0x2cea('0x137')])['catch'](function(_0x1d8245){logger[_0x2cea('0x9b')](_0x2cea('0x13f'),util[_0x2cea('0x9d')](_0x1d8245,{'showHidden':![],'depth':null}));})['finally'](function(){_0x53a3b6[_0x2cea('0xb9')](_0x53a3b6[_0x2cea('0x1f')][_0x53a3b6[_0x2cea('0xb2')][_0x3f3a91[_0x2cea('0x135')]][_0x2cea('0xb8')]]);_0x53a3b6[_0x2cea('0x21')][_0x53a3b6[_0x2cea('0xb2')][_0x3f3a91[_0x2cea('0x135')]][_0x2cea('0x137')]][_0x2cea('0x136')]=![];delete _0x53a3b6[_0x2cea('0xb2')][_0x3f3a91[_0x2cea('0x135')]];unlockQueueStatus(_0x5abe97);});}else{this[_0x2cea('0xb9')](this[_0x2cea('0x1f')][this[_0x2cea('0xb2')][_0x3f3a91[_0x2cea('0x135')]][_0x2cea('0xb8')]]);this[_0x2cea('0xc9')]({'active':![],'ContactId':this[_0x2cea('0xb2')][_0x3f3a91[_0x2cea('0x135')]][_0x2cea('0xd9')],'ListId':this[_0x2cea('0xb2')][_0x3f3a91[_0x2cea('0x135')]][_0x2cea('0x107')],'VoiceQueueId':this['actions'][_0x3f3a91[_0x2cea('0x135')]]['VoiceQueueId']||undefined,'CampaignId':this['actions'][_0x3f3a91[_0x2cea('0x135')]][_0x2cea('0xdc')]||undefined})[_0x2cea('0xbb')](loggerCatch(_0x2cea('0x140')));delete this[_0x2cea('0xb2')][_0x3f3a91['actionid']];unlockQueueStatus(_0x5abe97);}}else if((strategy[this[_0x2cea('0x1f')][this[_0x2cea('0xb2')][_0x3f3a91[_0x2cea('0x135')]]['queue']][_0x2cea('0x4f')]]||_0x2cea('0x138'))===_0x2cea('0x138')){var _0x308690;if(this[_0x2cea('0xb2')][_0x3f3a91[_0x2cea('0x135')]]&&!_['isEmpty'](this['queueBooked'][this['actions'][_0x3f3a91['actionid']][_0x2cea('0xb8')]])){if(this[_0x2cea('0x141')][_0x53a3b6[_0x2cea('0xb2')][_0x3f3a91[_0x2cea('0x135')]]['queue']]){this[_0x2cea('0x141')][_0x53a3b6['actions'][_0x3f3a91[_0x2cea('0x135')]][_0x2cea('0xb8')]]=this['queueBookedRR'][this[_0x2cea('0xb2')][_0x3f3a91['actionid']][_0x2cea('0xb8')]]?this[_0x2cea('0x141')][this[_0x2cea('0xb2')][_0x3f3a91[_0x2cea('0x135')]]['queue']]:this['queueBooked'][this['actions'][_0x3f3a91[_0x2cea('0x135')]][_0x2cea('0xb8')]]?this[_0x2cea('0x2b')][this[_0x2cea('0xb2')][_0x3f3a91[_0x2cea('0x135')]][_0x2cea('0xb8')]]['_rr']||0x0:0x0;}this[_0x2cea('0x2b')][this[_0x2cea('0xb2')][_0x3f3a91['actionid']][_0x2cea('0xb8')]][_0x2cea('0x142')]=this[_0x2cea('0x141')][this[_0x2cea('0xb2')][_0x3f3a91[_0x2cea('0x135')]]['queue']];for(var _0xd63ce0=0x0;_0xd63ce0<this[_0x2cea('0x2b')][this[_0x2cea('0xb2')][_0x3f3a91['actionid']][_0x2cea('0xb8')]][_0x2cea('0x9e')];_0xd63ce0+=0x1){_0x308690=rr(this[_0x2cea('0x2b')][this[_0x2cea('0xb2')][_0x3f3a91[_0x2cea('0x135')]]['queue']]);this['queueBookedRR'][_0x53a3b6['actions'][_0x3f3a91[_0x2cea('0x135')]]['queue']]=this[_0x2cea('0x2b')][this[_0x2cea('0xb2')][_0x3f3a91['actionid']][_0x2cea('0xb8')]]['_rr'];if(_0x308690[_0x2cea('0xe3')]==='1'&&_0x308690[_0x2cea('0x13c')]==='0'){break;}}if(!_[_0x2cea('0xb4')](_0x308690)){this[_0x2cea('0x21')][_0x308690[_0x2cea('0x137')]][_0x2cea('0x143')]=_[_0x2cea('0x40')](this[_0x2cea('0x21')][_0x308690[_0x2cea('0x137')]][_0x2cea('0x143')])?!![]:this['agents'][_0x308690['stateinterface']][_0x2cea('0x143')];}loggerBooked[_0x2cea('0x83')](_0x2cea('0x144'),_0x3f3a91[_0x2cea('0x135')],_0x2cea('0x145'),JSON[_0x2cea('0x146')](_[_0x2cea('0x13a')](this[_0x2cea('0x21')][_0x308690[_0x2cea('0x137')]],[_0x2cea('0x44'),_0x2cea('0x143')])),_0x2cea('0x147'),JSON[_0x2cea('0x146')](_0x308690[_0x2cea('0x13b')]));if(!_[_0x2cea('0xb4')](_0x308690)&&_0x308690[_0x2cea('0xe3')]==='1'&&_0x308690[_0x2cea('0x13c')]==='0'&&this['agents'][_0x308690[_0x2cea('0x137')]][_0x2cea('0x143')]){this['agents'][_0x308690[_0x2cea('0x137')]]['unlockRR']=![];this['queueBooked'][_0x53a3b6[_0x2cea('0xb2')][_0x3f3a91[_0x2cea('0x135')]][_0x2cea('0xb8')]]=[];this['preview'][_0x2cea('0x13e')](_0x308690[_0x2cea('0x13b')],_0x308690[_0x2cea('0x137')])['catch'](function(_0x3df84d){logger[_0x2cea('0x9b')](_0x2cea('0x13f'),util[_0x2cea('0x9d')](_0x3df84d,{'showHidden':![],'depth':null}));})['finally'](function(){_0x53a3b6['updateOriginated'](_0x53a3b6[_0x2cea('0x1f')][_0x53a3b6['actions'][_0x3f3a91['actionid']][_0x2cea('0xb8')]]);setTimeout(function(){_0x53a3b6['agents'][_0x308690[_0x2cea('0x137')]][_0x2cea('0x143')]=!![];loggerBooked['info'](_0x2cea('0x148'),_0x3f3a91[_0x2cea('0x135')],_0x2cea('0x145'),JSON['stringify'](_[_0x2cea('0x13a')](_0x53a3b6[_0x2cea('0x21')][_0x308690[_0x2cea('0x137')]],[_0x2cea('0x44'),_0x2cea('0x143')])),_0x2cea('0x147'),JSON[_0x2cea('0x146')](_0x308690[_0x2cea('0x13b')]));},0xc7);delete _0x53a3b6['actions'][_0x3f3a91['actionid']];unlockQueueStatus(_0x5abe97,_0x3f3a91['actionid']);});}else{loggerBooked[_0x2cea('0x83')](_0x2cea('0x149'));this[_0x2cea('0xb9')](this['voiceQueues'][this[_0x2cea('0xb2')][_0x3f3a91[_0x2cea('0x135')]][_0x2cea('0xb8')]]);this[_0x2cea('0xc9')]({'active':![],'ContactId':this['actions'][_0x3f3a91['actionid']]['ContactId'],'ListId':this[_0x2cea('0xb2')][_0x3f3a91['actionid']][_0x2cea('0x107')],'VoiceQueueId':this['actions'][_0x3f3a91[_0x2cea('0x135')]][_0x2cea('0xdb')]||undefined,'CampaignId':this['actions'][_0x3f3a91[_0x2cea('0x135')]][_0x2cea('0xdc')]||undefined})[_0x2cea('0xbb')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0x2cea('0xb2')][_0x3f3a91[_0x2cea('0x135')]];unlockQueueStatus(_0x5abe97);}}else{loggerBooked[_0x2cea('0x83')](_0x2cea('0x14a'));this['updateOriginated'](this[_0x2cea('0x1f')][this[_0x2cea('0xb2')][_0x3f3a91[_0x2cea('0x135')]][_0x2cea('0xb8')]]);this[_0x2cea('0xc9')]({'active':![],'ContactId':this[_0x2cea('0xb2')][_0x3f3a91[_0x2cea('0x135')]][_0x2cea('0xd9')],'ListId':this[_0x2cea('0xb2')][_0x3f3a91[_0x2cea('0x135')]]['ListId'],'VoiceQueueId':this[_0x2cea('0xb2')][_0x3f3a91['actionid']][_0x2cea('0xdb')]||undefined,'CampaignId':this['actions'][_0x3f3a91[_0x2cea('0x135')]]['CampaignId']||undefined})[_0x2cea('0xbb')](loggerCatch(_0x2cea('0x14b')));delete this[_0x2cea('0xb2')][_0x3f3a91['actionid']];unlockQueueStatus(_0x5abe97);}}else{loggerBooked[_0x2cea('0x83')](_0x2cea('0x14c'));this[_0x2cea('0xb9')](this['voiceQueues'][this[_0x2cea('0xb2')][_0x3f3a91[_0x2cea('0x135')]]['queue']]);this[_0x2cea('0xc9')]({'active':![],'ContactId':this[_0x2cea('0xb2')][_0x3f3a91[_0x2cea('0x135')]][_0x2cea('0xd9')],'ListId':this[_0x2cea('0xb2')][_0x3f3a91[_0x2cea('0x135')]]['ListId'],'VoiceQueueId':this[_0x2cea('0xb2')][_0x3f3a91[_0x2cea('0x135')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x2cea('0xb2')][_0x3f3a91[_0x2cea('0x135')]]['CampaignId']||undefined})[_0x2cea('0xbb')](loggerCatch(_0x2cea('0x14d')));delete this['actions'][_0x3f3a91[_0x2cea('0x135')]];unlockQueueStatus(_0x5abe97);}};Dialer[_0x2cea('0xaf')][_0x2cea('0x14e')]=function(){var _0x3d154a=this;return BPromise[_0x2cea('0xbe')]()[_0x2cea('0x3e')](cmHopper[_0x2cea('0x14f')]({}))['then'](function(){setInterval(function(){_0x3d154a[_0x2cea('0x150')]();},0x3e8);});};Dialer[_0x2cea('0xaf')][_0x2cea('0x151')]=function(_0x2cf6a8){var _0x2fee86=this;return function(){if(!_0x2fee86['isTrunkReachable'](_0x2cf6a8[_0x2cea('0x78')])){if(!_0x2fee86[_0x2cea('0xe0')](_0x2cf6a8[_0x2cea('0x152')])){_0x2cf6a8[_0x2cea('0x41')]=_0x2cea('0x153');throw _0x2cf6a8[_0x2cea('0x44')]+_0x2cea('0x154');}}};};Dialer[_0x2cea('0xaf')]['checkIfTime']=function(_0xd1a5e,_0x3b0bcb,_0x400d5d,_0xc3c8a2){var _0x353fe2=this;return function(){var _0x3646bd=!![];return _0x353fe2[_0x2cea('0x155')](_0xd1a5e,_0x3b0bcb,_0x400d5d,_0xc3c8a2,_0x3646bd);};};Dialer['prototype']['checkIfTimeIntervals']=function(_0x3b88a8,_0x38bab6,_0x4d0aad,_0x146bca){var _0x42c967=this;return function(){var _0x1b6d26=![];return _0x42c967[_0x2cea('0x155')](_0x3b88a8[_0x2cea('0x49')],_0x38bab6,_0x4d0aad,_0x146bca,_0x1b6d26);};};Dialer['prototype'][_0x2cea('0x155')]=function(_0x4c7d4a,_0x2dc73e,_0x274041,_0x59e162,_0x272822){var _0x2bd4fd=[];return new BPromise(function(_0x5c24d6,_0x176f2f){if(!isNotNull(_0x4c7d4a)){_0x59e162['message']=_0x2cea('0x47');return _0x176f2f(msgResponse(_0x2cea('0x155'),_0x2cea('0x156'),_0x274041+_0x2cea('0x157')));}if(_[_0x2cea('0x81')](_0x4c7d4a)){_0x59e162[_0x2cea('0x41')]=_0x2cea('0x158');return _0x176f2f(msgResponse('ifTime',_0x2cea('0x156'),_0x274041+_0x2cea('0x159')));}if(_0x2dc73e&&_[_0x2cea('0x40')](config[_0x2cea('0x15a')][_0x2dc73e])){_0x59e162['message']=_0x2cea('0x15b');return _0x176f2f(msgResponse(_0x2cea('0x155'),'Failure',_0x274041+'\x20Timezone\x20unknow\x20'+_0x2dc73e));}if(_[_0x2cea('0x15c')](_0x4c7d4a)){for(var _0x9088fc=0x0;_0x9088fc<_0x4c7d4a[_0x2cea('0x9e')];_0x9088fc+=0x1){_0x2bd4fd['push'](ami[_0x2cea('0xb5')]({'action':_0x2cea('0x15d'),'command':util[_0x2cea('0x7b')](_0x2cea('0x15e'),_0x4c7d4a[_0x9088fc]['interval'],!_[_0x2cea('0x40')](config[_0x2cea('0x15a')][_0x2dc73e])?_0x2dc73e:'')})[_0x2cea('0x3e')](function(_0x5167){return _0x5167[_0x2cea('0x15f')][_0x2cea('0x160')](_0x2cea('0x161'))>=0x0;})['catch'](myreject(_0x176f2f)));}}else{_0x2bd4fd[_0x2cea('0x139')](ami['Action']({'action':_0x2cea('0x15d'),'command':util[_0x2cea('0x7b')]('iftime\x20%s,%s',_0x4c7d4a,!_[_0x2cea('0x40')](config[_0x2cea('0x15a')][_0x2dc73e])?_0x2dc73e:'')})['then'](function(_0x1b6ade){return _0x1b6ade[_0x2cea('0x15f')]['indexOf'](_0x2cea('0x161'))>=0x0;})[_0x2cea('0xbb')](myreject(_0x176f2f)));}BPromise[_0x2cea('0x162')](_0x2bd4fd)[_0x2cea('0x3e')](function(_0x201eba){var _0x442ec8=_['some'](_0x201eba);if(_0x442ec8){return _0x5c24d6(_0x442ec8);}else{_0x59e162[_0x2cea('0x41')]=_0x272822?_0x2cea('0x163'):'INTERVAL_IS_OVERTIME';return _0x176f2f(msgResponse('[ifTime][promiseAll]',_0x2cea('0x156'),_0x2cea('0x164')+_0x272822+'\x20'+_0x274041+_0x2cea('0x165')+util['inspect'](_0x4c7d4a,{'showHidden':![],'depth':null})+_0x2cea('0x166')+_0x2dc73e));}})[_0x2cea('0xbb')](function(_0x18aaa1){return _0x176f2f(msgResponse(_0x2cea('0x155'),_0x2cea('0x156'),JSON[_0x2cea('0x146')](_0x18aaa1)));});});};Dialer['prototype'][_0x2cea('0x167')]=function(_0x21cfed){var _0x4bbec3=this;return function(){switch(_0x21cfed[_0x2cea('0x5c')]){case'progressive':freeVariablesPredictive(_0x21cfed);_0x4bbec3[_0x2cea('0x168')](_0x21cfed,0x1);break;case _0x2cea('0x169'):freeVariablesPredictive(_0x21cfed);_0x4bbec3[_0x2cea('0x168')](_0x21cfed,_0x21cfed[_0x2cea('0x16a')]);break;case _0x2cea('0x9'):_0x4bbec3[_0x2cea('0x9')](_0x21cfed);break;case _0x2cea('0x8'):freeVariablesPredictive(_0x21cfed);_0x4bbec3['handlePower'](_0x21cfed,0x1);break;default:freeVariablesPredictive(_0x21cfed);logger['error'](_0x2cea('0x16b'),_0x21cfed[_0x2cea('0x44')],'method\x20not\x20recognized');}};};Dialer[_0x2cea('0xaf')]['launchHandleIvr']=function(_0x4b2944){var _0x2976a5=this;return function(){_0x2976a5[_0x2cea('0x16c')](_0x4b2944);};};Dialer['prototype']['syncQueueSummary']=function(_0xbf87df){var _0x240bb8=this;if(isNotPreview(_0xbf87df[_0x2cea('0x5c')])){if(isVoiceQueueOutbound(_0xbf87df[_0x2cea('0x4d')])&&isActive(_0xbf87df['dialActive'])){_0xbf87df[_0x2cea('0xa5')]=!![];BPromise['resolve']()[_0x2cea('0x3e')](checkIsLoggedIn(_0xbf87df,_0xbf87df[_0x2cea('0x52')]))['then'](checkIsActive(_0xbf87df,_0xbf87df[_0x2cea('0x5b')]))['then'](checkInterval(_0xbf87df))[_0x2cea('0x3e')](_0x240bb8[_0x2cea('0x151')](_0xbf87df))[_0x2cea('0x3e')](_0x240bb8['checkIfTime'](_0xbf87df[_0x2cea('0x16d')],_0xbf87df[_0x2cea('0x16e')],_0xbf87df[_0x2cea('0x44')],_0xbf87df))[_0x2cea('0x3e')](_0x240bb8[_0x2cea('0x16f')](_0xbf87df['Interval'],_0xbf87df[_0x2cea('0x16e')],_0xbf87df[_0x2cea('0x44')],_0xbf87df))['then'](_0x240bb8[_0x2cea('0x167')](_0xbf87df))[_0x2cea('0xbb')](loggerCatchQueueSummary('[syncQueueSummary]',_0xbf87df));}else{notSendMessagesQueue(_0xbf87df);}}else{freeVariablesPredictive(_0xbf87df);}};Dialer[_0x2cea('0xaf')][_0x2cea('0x34')]=_[_0x2cea('0x170')](function(){var _0xeda670=_['filter'](this[_0x2cea('0x1f')],function(_0x40c6ec){return _0x40c6ec[_0x2cea('0x171')];});var _0x42610a=_['filter'](this[_0x2cea('0x21')],function(_0x3e3c37){return _0x3e3c37[_0x2cea('0x172')]&&_0x3e3c37['status']===_0x2cea('0xe2');});if(_0xeda670[_0x2cea('0x9e')]>0x0&&_0x42610a['length']>0x0){return BPromise[_0x2cea('0xbe')]()['then'](cmHopper[_0x2cea('0x173')](_[_0x2cea('0x174')](_0xeda670,'id'),previewRecallmeReminderInterval,_[_0x2cea('0x174')](_0x42610a,'id')))[_0x2cea('0x3e')](function(_0x3b21b7){for(var _0x4410d6=0x0;_0x4410d6<_0x3b21b7[_0x2cea('0x9e')];_0x4410d6++){var _0x78eb77=_0x3b21b7[_0x4410d6]['Agent']['name'];if(_0x78eb77)io['to'](util[_0x2cea('0x7b')](_0x2cea('0x175'),_0x78eb77))['emit'](_0x2cea('0x176'),{'hopper':_0x3b21b7[_0x4410d6]});}})[_0x2cea('0xbb')](function(_0x1e2cd7){logger['error']('checkPreviewRecallReminder',_0x1e2cd7);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0x2cea('0xaf')][_0x2cea('0x150')]=function(){var _0x19cf75=this;var _0x38e1a2;for(var _0x1e8600 in this[_0x2cea('0x20')]){if(typeof this[_0x2cea('0x20')][_0x1e8600]!==_0x2cea('0x9f')){_0x38e1a2=this[_0x2cea('0x20')][_0x1e8600];if(isCampaignIvr(_0x38e1a2[_0x2cea('0x4d')])&&isActive(_0x38e1a2[_0x2cea('0x79')])){_0x38e1a2[_0x2cea('0xa5')]=!![];BPromise['resolve']()[_0x2cea('0x3e')](checkIsActive(_0x38e1a2,_0x38e1a2[_0x2cea('0x79')]))[_0x2cea('0x3e')](checkInterval(_0x38e1a2))['then'](_0x19cf75['checkIsTrunkReachable'](_0x38e1a2))[_0x2cea('0x3e')](_0x19cf75[_0x2cea('0x177')](_0x38e1a2[_0x2cea('0x16d')],_0x38e1a2['dialTimezone'],_0x38e1a2[_0x2cea('0x44')],_0x38e1a2))[_0x2cea('0x3e')](_0x19cf75[_0x2cea('0x16f')](_0x38e1a2['Interval'],_0x38e1a2[_0x2cea('0x16e')],_0x38e1a2[_0x2cea('0x44')],_0x38e1a2))['then'](_0x19cf75['launchHandleIvr'](_0x38e1a2))[_0x2cea('0xbb')](loggerCatchQueueSummary(_0x2cea('0x178'),_0x38e1a2));}else{notSendMessagesCampaign(_0x38e1a2);}}}};function getCallerIdRandom(_0x1a3547,_0x2d86d7){var _0x54ea13;var _0x34b20e;var _0x543170;if(_0x2d86d7<=0x0){_0x2d86d7=0x1;}_0x54ea13=new RegExp('\x5cw{0,'+_0x2d86d7+'}$');_0x34b20e=Math['pow'](0xa,_0x2d86d7-0x1);_0x543170=Math[_0x2cea('0x179')](0xa,_0x2d86d7)-0x1;return util[_0x2cea('0x7b')]('%s',_['replace'](_0x1a3547,_0x54ea13,_[_0x2cea('0x17a')](_0x34b20e,_0x543170)));}function extractCalleridName(_0x40a8cf){var _0x2f576a=_0x40a8cf[_0x2cea('0x17b')](/"(.*?)"/);return _0x2f576a?_0x2f576a[0x1]:_0x40a8cf;}function extractCalleridNumber(_0x59f382){var _0x3b8eab=_0x59f382[_0x2cea('0x17b')](/<(.*?)>/);return _0x3b8eab?_0x3b8eab[0x1]:_0x59f382;}Dialer['prototype'][_0x2cea('0x17c')]=function(_0x26ef56,_0x2ba62f){var _0xd0750c=this;var _0x398b4f=uuid['v4']();this[_0x2cea('0xb2')][_0x398b4f]=new Action(_0x26ef56,_0x2ba62f,_0x398b4f);return new BPromise(function(_0x16e7e7,_0x1ea407){if(_[_0x2cea('0x40')](_0x26ef56)&&typeof _0x26ef56!==_0x2cea('0x17d')){return _0x1ea407(msgResponse('originate',_0x2cea('0x156'),_0x2cea('0x17e')));}if(_['isUndefined'](_0x2ba62f[_0x2cea('0x17f')])||_0x2ba62f[_0x2cea('0x17f')]===null){return _0x1ea407(msgResponse(_0x2cea('0x180'),'Failure',_0x2cea('0x181')));}var _0x365566={'XMD-CALLERID':_0xd0750c['actions'][_0x398b4f][_0x2cea('0x182')](),'XMD-AGI':_0x26ef56['dialQueueProject']?util[_0x2cea('0x7b')](_0x2cea('0x183'),ipAgi,_0x26ef56[_0x2cea('0x10e')]):_0x2cea('0x184'),'XMD-AGIAFTER':_0x26ef56[_0x2cea('0x115')]?util[_0x2cea('0x7b')](_0x2cea('0x183'),ipAgi,_0x26ef56[_0x2cea('0x115')]):_0x2cea('0x184'),'XMD-QUEUE':_0x26ef56[_0x2cea('0x4d')]==='outbound'?util[_0x2cea('0x7b')]('\x22%s,%s%s,,,%s\x22',_0x26ef56[_0x2cea('0x44')],_0x26ef56[_0x2cea('0x185')]||'',_0x26ef56[_0x2cea('0x116')]?'c':'',_0x26ef56['dialQueueTimeout']||0x3):_0x2cea('0x184'),'XMD-CONTACTID':_0x2ba62f[_0x2cea('0xd9')],'XMD-CDRTYPE':_0x2cea('0x7'),'CALLERID(all)':_0xd0750c[_0x2cea('0xb2')][_0x398b4f][_0x2cea('0x182')](),'XMD-AMD':_0x26ef56[_0x2cea('0xe9')]?_0x2cea('0x186'):_0x2cea('0x184'),'XMD-DESTINATION':_0x2cea('0x187')};if(_0x26ef56[_0x2cea('0xe9')]){_0x365566[_0x2cea('0x188')]=_0x26ef56[_0x2cea('0x189')]||0x9c4;_0x365566[_0x2cea('0x18a')]=_0x26ef56[_0x2cea('0x18b')]||0x5dc;_0x365566[_0x2cea('0x18c')]=_0x26ef56[_0x2cea('0x18d')]||0x320;_0x365566[_0x2cea('0x18e')]=_0x26ef56[_0x2cea('0x18f')]||0x1388;_0x365566[_0x2cea('0x190')]=_0x26ef56[_0x2cea('0x191')]||0x64;_0x365566[_0x2cea('0x192')]=_0x26ef56[_0x2cea('0x193')]||0x32;_0x365566['XMD-AMDMAXIMUMNUMBEROFWORDS']=_0x26ef56[_0x2cea('0x194')]||0x3;_0x365566[_0x2cea('0x195')]=_0x26ef56[_0x2cea('0x196')]||0x100;_0x365566[_0x2cea('0x197')]=_0x26ef56['dialAMDMaximumWordLength']||0x1388;}if(_0x26ef56['type']==='outbound'){_0x365566[_0x2cea('0x198')]=_0x2ba62f['VoiceQueueId'];}else{_0x365566['XMD-CAMPAIGNID']=_0x2ba62f[_0x2cea('0xdc')];}for(var _0xc7149e in _0x2ba62f[_0x2cea('0x199')]){if(typeof _0x2ba62f[_0x2cea('0x199')][_0xc7149e]!=='undefined'){if(isNotNull(_0x2ba62f[_0x2cea('0x199')][_0xc7149e])&&_0xc7149e!=='id'&&_0xc7149e!==_0x2cea('0x19a')&&_0xc7149e!=='createdAt'&&_0xc7149e!==_0x2cea('0x19b')){_0x365566[util[_0x2cea('0x7b')](_0x2cea('0x19c'),_0x2cea('0x19d'),_[_0x2cea('0x19e')](_0xc7149e))]=_0x2ba62f[_0x2cea('0x199')][_0xc7149e];}}}var _0xc2f54d=_0xd0750c[_0x2cea('0xe0')](_0x26ef56[_0x2cea('0x78')])?getCallerId(_0x26ef56['Trunk'][_0x2cea('0x7a')],_0x26ef56[_0x2cea('0x5d')],_0x26ef56['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x26ef56[_0x2cea('0x5e')],_0x26ef56[_0x2cea('0x19f')]):_0x26ef56[_0x2cea('0x5e')]):getCallerId(_[_0x2cea('0xb4')](_0x26ef56[_0x2cea('0x152')])?_0x26ef56['Trunk'][_0x2cea('0x7a')]:_0x26ef56[_0x2cea('0x152')][_0x2cea('0x7a')],_0x26ef56[_0x2cea('0x5d')],_0x26ef56[_0x2cea('0x19f')]>0x0?getCallerIdRandom(_0x26ef56[_0x2cea('0x5e')],_0x26ef56[_0x2cea('0x19f')]):_0x26ef56['dialOriginateCallerIdNumber']);if(_0xc2f54d){_0x365566[_0x2cea('0x1a0')]=_0xd0750c[_0x2cea('0xb2')][_0x398b4f][_0x2cea('0x1a1')]=extractCalleridName(_0xc2f54d);_0x365566[_0x2cea('0x1a2')]=_0x2ba62f[_0x2cea('0x17f')];}return ami[_0x2cea('0xb5')]({'actionid':_0x398b4f,'action':_0x2cea('0x180'),'channel':_0xd0750c[_0x2cea('0xe0')](_0x26ef56[_0x2cea('0x78')])?util['format'](_0x2cea('0x1a3'),_0x26ef56[_0x2cea('0x78')][_0x2cea('0x44')],isNotNull(_0x26ef56[_0x2cea('0x60')])?_0x26ef56[_0x2cea('0x60')][_0x2cea('0x1a4')]()||'':'',_0x26ef56[_0x2cea('0x1a5')]>0x0?_0x2ba62f['phone'][_0x2cea('0x1a6')](_0x26ef56[_0x2cea('0x1a5')]):_0x2ba62f[_0x2cea('0x17f')]):util[_0x2cea('0x7b')](_0x2cea('0x1a3'),_[_0x2cea('0xb4')](_0x26ef56[_0x2cea('0x152')])?_0x26ef56[_0x2cea('0x78')][_0x2cea('0x44')]:_0x26ef56[_0x2cea('0x152')][_0x2cea('0x44')],isNotNull(_0x26ef56[_0x2cea('0x60')])?_0x26ef56[_0x2cea('0x60')][_0x2cea('0x1a4')]()||'':'',_0x26ef56[_0x2cea('0x1a5')]>0x0?_0x2ba62f['phone']['substring'](_0x26ef56[_0x2cea('0x1a5')]):_0x2ba62f[_0x2cea('0x17f')]),'callerid':_0xc2f54d,'Exten':_0x2cea('0x187'),'Context':_0x2cea('0x1a7'),'Priority':'1','variable':_0x365566,'timeout':(_0x26ef56[_0x2cea('0x5f')]||0x1e)*0x3e8,'async':!![],'channelid':_0x398b4f})['then'](function(_0x51c79a){return _0x16e7e7(_0x51c79a);})[_0x2cea('0xbb')](function(_0xab82fa){_0x26ef56['outboundOriginateFailureCallsDay']+=0x1;var _0x4b5227=new History(_0xd0750c[_0x2cea('0xb2')][_0x398b4f]);logger[_0x2cea('0x9b')](util[_0x2cea('0x7b')](_0x2cea('0x1a8'),JSON[_0x2cea('0x146')](_0xab82fa)));_0x4b5227[_0x2cea('0xac')]=0xe;_0x4b5227[_0x2cea('0xad')]=_0x2cea('0x1a9');_0x4b5227[_0x2cea('0xae')]=moment()[_0x2cea('0x7b')](_0x2cea('0x106'));_0x4b5227['endtime']=_0x4b5227[_0x2cea('0xae')];_0xd0750c[_0x2cea('0xd4')](_0x4b5227)['catch'](loggerCatch(_0x2cea('0x1aa')));_0xd0750c[_0x2cea('0xd2')](_0x4b5227)[_0x2cea('0xbb')](loggerCatch('[originate][error]'))[_0x2cea('0x1d')](function(){delete _0xd0750c[_0x2cea('0xb2')][_0x398b4f];return _0x1ea407(msgResponse(_0x2cea('0x180'),_0x2cea('0x1ab'),_0x2cea('0x1ac')));});});});};Dialer[_0x2cea('0xaf')]['syncOriginateResponse']=function(_0x15515b){var _0xd266ef=this[_0x2cea('0xb2')][_0x15515b[_0x2cea('0x135')]];if(_0xd266ef){delete this['actions'][_0x15515b[_0x2cea('0x135')]];_0xd266ef[_0x2cea('0x11d')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');var _0x5ceddf=_0xd266ef[_0x2cea('0x4d')]==='ivr'?this[_0x2cea('0x20')][_0xd266ef['queue']]:this[_0x2cea('0x1f')][_0xd266ef[_0x2cea('0x1ad')]()];if(!this[_0x2cea('0xde')](_0x15515b[_0x2cea('0x1ae')])){this['updateOriginated'](_0x5ceddf);return this[_0x2cea('0x1af')](_0xd266ef,_0x5ceddf,_0x15515b)[_0x2cea('0xbb')](loggerCatch('[callProgressDetecting]\x20'));}this[_0x2cea('0x26')][_0x15515b[_0x2cea('0xe6')]]=_0xd266ef;}};Dialer[_0x2cea('0xaf')][_0x2cea('0x1b0')]=function(_0x530739,_0xed6f4f,_0x4d09e6){var _0x4b3e5a=new History(_0xed6f4f);if(_0x4b3e5a[_0x2cea('0xf7')]+_0x4b3e5a['countcongestionretry']+_0x4b3e5a[_0x2cea('0x10a')]+_0x4b3e5a[_0x2cea('0xf9')]+_0x4b3e5a[_0x2cea('0xfa')]+_0x4b3e5a[_0x2cea('0xfb')]+_0x4b3e5a[_0x2cea('0x102')]+_0x4b3e5a['countagentrejectretry']>=_0x4d09e6['dialGlobalMaxRetry']-0x1){return!![];}switch(_0x530739){case 0x3:if(_0x4b3e5a['countnoanswerretry']>=_0x4d09e6[_0x2cea('0x1b1')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countnoanswerretry':_0x4b3e5a[_0x2cea('0x10a')]+=0x1,'scheduledat':moment()[_0x2cea('0x103')](_0x4d09e6[_0x2cea('0x1b2')],_0x2cea('0x105'))['format'](_0x2cea('0x106')),'ContactId':_0x4b3e5a[_0x2cea('0xd9')],'ListId':_0x4b3e5a['ListId'],'VoiceQueueId':_0x4b3e5a[_0x2cea('0xdb')]||undefined,'CampaignId':_0x4b3e5a[_0x2cea('0xdc')]||undefined})[_0x2cea('0xbb')](loggerCatch('[rescheduleContact][NoAnswer]'));break;case 0x5:if(_0x4b3e5a[_0x2cea('0xf7')]>=_0x4d09e6['dialBusyMaxRetry']-0x1){return!![];}this[_0x2cea('0xc9')]({'active':![],'countbusyretry':_0x4b3e5a[_0x2cea('0xf7')]+=0x1,'scheduledat':moment()[_0x2cea('0x103')](_0x4d09e6[_0x2cea('0x1b3')],_0x2cea('0x105'))[_0x2cea('0x7b')](_0x2cea('0x106')),'ContactId':_0x4b3e5a[_0x2cea('0xd9')],'ListId':_0x4b3e5a[_0x2cea('0x107')],'VoiceQueueId':_0x4b3e5a[_0x2cea('0xdb')]||undefined,'CampaignId':_0x4b3e5a[_0x2cea('0xdc')]||undefined})[_0x2cea('0xbb')](loggerCatch('[rescheduleContact]\x20[Busy]'));break;case 0x8:if(_0x4b3e5a[_0x2cea('0xf8')]>=_0x4d09e6[_0x2cea('0x1b4')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countcongestionretry':_0x4b3e5a[_0x2cea('0xf8')]+=0x1,'scheduledat':moment()[_0x2cea('0x103')](_0x4d09e6['dialCongestionRetryFrequency'],_0x2cea('0x105'))[_0x2cea('0x7b')](_0x2cea('0x106')),'ContactId':_0x4b3e5a[_0x2cea('0xd9')],'ListId':_0x4b3e5a['ListId'],'VoiceQueueId':_0x4b3e5a[_0x2cea('0xdb')]||undefined,'CampaignId':_0x4b3e5a[_0x2cea('0xdc')]||undefined})[_0x2cea('0xbb')](loggerCatch(_0x2cea('0x1b5')));break;case 0x0:if(_0x4b3e5a[_0x2cea('0xf9')]>=_0x4d09e6[_0x2cea('0x1b6')]-0x1){return!![];}else{this['rescheduleContact']({'active':![],'countnosuchnumberretry':_0x4b3e5a[_0x2cea('0xf9')]+=0x1,'scheduledat':moment()[_0x2cea('0x103')](_0x4d09e6[_0x2cea('0x1b7')],'minutes')['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x4b3e5a[_0x2cea('0xd9')],'ListId':_0x4b3e5a[_0x2cea('0x107')],'VoiceQueueId':_0x4b3e5a[_0x2cea('0xdb')]||undefined,'CampaignId':_0x4b3e5a[_0x2cea('0xdc')]||undefined})[_0x2cea('0xbb')](loggerCatch(_0x2cea('0x1b8')));}break;case 0xa:if(_0x4b3e5a[_0x2cea('0xfa')]>=_0x4d09e6[_0x2cea('0x127')]-0x1){return!![];}this[_0x2cea('0xc9')]({'active':![],'countdropretry':_0x4b3e5a[_0x2cea('0xfa')]+=0x1,'scheduledat':moment()[_0x2cea('0x103')](_0x4d09e6[_0x2cea('0x124')],_0x2cea('0x105'))[_0x2cea('0x7b')](_0x2cea('0x106')),'ContactId':_0x4b3e5a[_0x2cea('0xd9')],'ListId':_0x4b3e5a['ListId'],'VoiceQueueId':_0x4b3e5a[_0x2cea('0xdb')]||undefined,'CampaignId':_0x4b3e5a['CampaignId']||undefined})[_0x2cea('0xbb')](loggerCatch('[rescheduleContact][Drop]'));break;case 0xb:if(_0x4b3e5a[_0x2cea('0xfb')]>=_0x4d09e6[_0x2cea('0x1b9')]-0x1){return!![];}this[_0x2cea('0xc9')]({'active':![],'countabandonedretry':_0x4b3e5a[_0x2cea('0xfb')]+=0x1,'scheduledat':moment()['add'](_0x4d09e6[_0x2cea('0x12e')],_0x2cea('0x105'))[_0x2cea('0x7b')](_0x2cea('0x106')),'ContactId':_0x4b3e5a[_0x2cea('0xd9')],'ListId':_0x4b3e5a[_0x2cea('0x107')],'VoiceQueueId':_0x4b3e5a['VoiceQueueId']||undefined,'CampaignId':_0x4b3e5a[_0x2cea('0xdc')]||undefined})[_0x2cea('0xbb')](loggerCatch('[rescheduleContact][Abandoned]'));break;case 0x13:if(_0x4b3e5a[_0x2cea('0x102')]>=_0x4d09e6['dialMachineMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countmachineretry':_0x4b3e5a[_0x2cea('0x102')]+=0x1,'scheduledat':moment()[_0x2cea('0x103')](_0x4d09e6[_0x2cea('0x104')],_0x2cea('0x105'))['format'](_0x2cea('0x106')),'ContactId':_0x4b3e5a[_0x2cea('0xd9')],'ListId':_0x4b3e5a[_0x2cea('0x107')],'VoiceQueueId':_0x4b3e5a['VoiceQueueId']||undefined,'CampaignId':_0x4b3e5a[_0x2cea('0xdc')]||undefined})[_0x2cea('0xbb')](loggerCatch('[rescheduleContact][Machine]'));break;case 0x14:if(_0x4b3e5a[_0x2cea('0x1ba')]>=_0x4d09e6[_0x2cea('0x1bb')]-0x1){return!![];}this[_0x2cea('0xc9')]({'active':![],'countagentrejectretry':_0x4b3e5a[_0x2cea('0x1ba')]+=0x1,'scheduledat':moment()['add'](_0x4d09e6['dialAgentRejectRetryFrequency'],_0x2cea('0x105'))[_0x2cea('0x7b')](_0x2cea('0x106')),'ContactId':_0x4b3e5a[_0x2cea('0xd9')],'ListId':_0x4b3e5a['ListId'],'VoiceQueueId':_0x4b3e5a[_0x2cea('0xdb')]||undefined,'CampaignId':_0x4b3e5a[_0x2cea('0xdc')]||undefined})[_0x2cea('0xbb')](loggerCatch(_0x2cea('0x1bc')));break;default:return!![];}};Dialer[_0x2cea('0xaf')]['callProgressDetecting']=function(_0x702a32,_0x250f37,_0x2a964c){var _0xa6605e=this;var _0x2b66af=new History(_0x702a32);var _0x180f76=![];var _0x335752;var _0x3bdfee;return new BPromise(function(_0x2bc600,_0x2232c7){if(_[_0x2cea('0x40')](_0x250f37)&&typeof _0x250f37!==_0x2cea('0x17d')){return _0x2232c7(msgResponse(_0x2cea('0x1bd'),_0x2cea('0x156'),'entity\x20is\x20undefine'));}if(_[_0x2cea('0x40')](_0x2a964c)&&typeof _0x2a964c!==_0x2cea('0x17d')){return _0x2232c7(msgResponse('[callProgressDetecting]','Failure',_0x2cea('0x1be')));}_0xa6605e[_0x2cea('0xc0')](_0x2b66af,_0x2a964c[_0x2cea('0x112')],_0x250f37)[_0x2cea('0x3e')](function(_0x4530fa){if(_0x4530fa['additional']==0x1)_0x180f76=!![];switch(_0x2a964c['reason']){case'0':_0x250f37[_0x2cea('0x1bf')]+=0x1;_0x2b66af[_0x2cea('0xac')]=0x0;_0x2b66af[_0x2cea('0xad')]=_0x2cea('0x1c0');_0x2b66af[_0x2cea('0xf9')]+=0x1;_0x2b66af[_0x2cea('0xf4')]+=0x1;ami[_0x2cea('0x4c')]('custom:agentnosuchnumber',ut['buildObj'](_0x702a32,_0x2cea('0x1c1')));_0x335752=_0x250f37[_0x2cea('0x1b7')];_0x3bdfee=_0x250f37[_0x2cea('0x12f')];_0xa6605e['createHistory'](_0x2b66af)[_0x2cea('0xbb')](loggerCatch(_0x2cea('0xf6')));if(_0xa6605e[_0x2cea('0x1b0')](0x0,_0x702a32,_0x250f37)&&!_0x180f76){if(_0x2b66af[_0x2cea('0xf9')]>=_0x250f37[_0x2cea('0x1b6')]){_0xa6605e[_0x2cea('0x100')](_0x2b66af,_0x2bc600,_0x2232c7,_0x2cea('0x1c2'));}else{_0xa6605e[_0x2cea('0xfd')](_0x2b66af,_0x2bc600,_0x2232c7,'reason\x200\x20no\x20such\x20number....');}}break;case'3':_0x250f37['outboundNoAnswerCallsDay']+=0x1;_0x2b66af['state']=0x3;_0x2b66af[_0x2cea('0xad')]=_0x2cea('0x1c3');_0x2b66af[_0x2cea('0x10a')]+=0x1;_0x2b66af[_0x2cea('0xf4')]+=0x1;ami[_0x2cea('0x4c')]('custom:agentnoanswer',ut['buildObj'](_0x702a32,_0x2cea('0x1c4')));_0x335752=_0x250f37[_0x2cea('0x1b2')];_0x3bdfee=_0x250f37[_0x2cea('0x12f')];_0xa6605e[_0x2cea('0xd4')](_0x2b66af)[_0x2cea('0xbb')](loggerCatch(_0x2cea('0x1c5')));if(_0xa6605e[_0x2cea('0x1b0')](0x3,_0x702a32,_0x250f37)&&!_0x180f76){if(_0x2b66af[_0x2cea('0x10a')]>=_0x250f37['dialNoAnswerMaxRetry']){_0xa6605e[_0x2cea('0x100')](_0x2b66af,_0x2bc600,_0x2232c7,_0x2cea('0x1c6'));}else{_0xa6605e['stateGlobal'](_0x2b66af,_0x2bc600,_0x2232c7,_0x2cea('0x1c6'));}}break;case'5':_0x250f37['outboundBusyCallsDay']+=0x1;_0x2b66af['state']=0x5;_0x2b66af[_0x2cea('0xad')]='Busy';_0x2b66af[_0x2cea('0xf7')]+=0x1;_0x2b66af[_0x2cea('0xf4')]+=0x1;ami[_0x2cea('0x4c')](_0x2cea('0x1c7'),ut[_0x2cea('0xee')](_0x702a32,_0x2cea('0x1c8')));_0x335752=_0x250f37[_0x2cea('0x1b3')];_0x3bdfee=_0x250f37[_0x2cea('0x12f')];_0xa6605e[_0x2cea('0xd4')](_0x2b66af)[_0x2cea('0xbb')](loggerCatch(_0x2cea('0x1c9')));if(_0xa6605e[_0x2cea('0x1b0')](0x5,_0x702a32,_0x250f37)&&!_0x180f76){if(_0x2b66af[_0x2cea('0xf7')]>=_0x250f37[_0x2cea('0x1ca')]){_0xa6605e[_0x2cea('0x100')](_0x2b66af,_0x2bc600,_0x2232c7,'reason\x205\x20busy');}else{_0xa6605e['stateGlobal'](_0x2b66af,_0x2bc600,_0x2232c7,_0x2cea('0x1cb'));}}break;case'8':_0x250f37['outboundCongestionCallsDay']+=0x1;_0x2b66af[_0x2cea('0xac')]=0x8;_0x2b66af[_0x2cea('0xad')]=_0x2cea('0x1cc');_0x2b66af[_0x2cea('0xf8')]+=0x1;_0x2b66af['countglobal']+=0x1;_0x335752=_0x250f37[_0x2cea('0x1cd')];_0x3bdfee=_0x250f37['callAdditionalPhoneAfterMin'];ami[_0x2cea('0x4c')](_0x2cea('0x1ce'),ut['buildObj'](_0x702a32,'congestion'));_0xa6605e['createHistory'](_0x2b66af)[_0x2cea('0xbb')](loggerCatch(_0x2cea('0x1cf')));if(_0xa6605e[_0x2cea('0x1b0')](0x8,_0x702a32,_0x250f37)&&!_0x180f76){if(_0x2b66af[_0x2cea('0xf8')]>=_0x250f37[_0x2cea('0x1b4')]){_0xa6605e[_0x2cea('0x100')](_0x2b66af,_0x2bc600,_0x2232c7,_0x2cea('0x1d0'));}else{_0xa6605e[_0x2cea('0xfd')](_0x2b66af,_0x2bc600,_0x2232c7,_0x2cea('0x1d0'));}}break;case'11':_0x250f37['outboundAbandonedCallsDay']+=0x1;_0x2b66af[_0x2cea('0xac')]=0xb;_0x2b66af[_0x2cea('0xad')]=_0x2cea('0x12c');_0x2b66af[_0x2cea('0xfb')]+=0x1;_0x2b66af['countglobal']+=0x1;_0x335752=_0x250f37[_0x2cea('0x12e')];_0x3bdfee=_0x250f37['callAdditionalPhoneAfterMin'];_0xa6605e[_0x2cea('0xd4')](_0x2b66af)['catch'](loggerCatch(_0x2cea('0x133')));if(_0xa6605e['checkRetriveMax'](0xb,_0x702a32,_0x250f37)&&!_0x180f76){if(_0x2b66af[_0x2cea('0xfb')]>=_0x250f37[_0x2cea('0x1b9')]){_0xa6605e[_0x2cea('0x100')](_0x2b66af,_0x2bc600,_0x2232c7,_0x2cea('0x1d1'));}else{_0xa6605e['stateGlobal'](_0x2b66af,_0x2bc600,_0x2232c7,_0x2cea('0x1d1'));}}break;case'20':_0x250f37['outboundRejectCallsDay']+=0x1;_0x2b66af[_0x2cea('0xac')]=0x14;_0x2b66af[_0x2cea('0xad')]=_0x2cea('0x1d2');_0x2b66af['countagentrejectretry']+=0x1;_0x2b66af[_0x2cea('0xf4')]+=0x1;_0x335752=_0x250f37[_0x2cea('0x1d3')];_0x3bdfee=_0x250f37[_0x2cea('0x12f')];ami['emit'](_0x2cea('0x1d4'),ut['buildObj'](_0x702a32,_0x2cea('0x1d5')));_0xa6605e[_0x2cea('0xd4')](_0x2b66af)[_0x2cea('0xbb')](loggerCatch(_0x2cea('0x1d6')));if(_0xa6605e[_0x2cea('0x1b0')](0x14,_0x702a32,_0x250f37)&&!_0x180f76){if(_0x2b66af['countagentrejectretry']>=_0x250f37['dialAgentRejectMaxRetry']){_0xa6605e['createStateFinal'](_0x2b66af,_0x2bc600,_0x2232c7,_0x2cea('0x1d7'));}else{_0xa6605e[_0x2cea('0xfd')](_0x2b66af,_0x2bc600,_0x2232c7,'reason\x2020\x20agentreject');}}break;default:_0x250f37[_0x2cea('0x69')]+=0x1;_0x2b66af[_0x2cea('0xac')]=0xc;_0x2b66af[_0x2cea('0xad')]=_0x2a964c[_0x2cea('0x112')];_0x335752=_0x250f37[_0x2cea('0x1d3')];_0x3bdfee=_0x250f37[_0x2cea('0x12f')];_0xa6605e[_0x2cea('0xd4')](_0x2b66af)[_0x2cea('0xbb')](loggerCatch(_0x2cea('0x1d8')));if(_0xa6605e[_0x2cea('0x1b0')](_0x2a964c[_0x2cea('0x112')],_0x702a32,_0x250f37)&&!_0x180f76){if(_0x2b66af[_0x2cea('0xf7')]+_0x2b66af[_0x2cea('0xf8')]+_0x2b66af['countnoanswerretry']+_0x2b66af['countnosuchnumberretry']+_0x2b66af['countdropretry']+_0x2b66af[_0x2cea('0xfb')]+_0x2b66af[_0x2cea('0x102')]+_0x2b66af['countagentrejectretry']>=_0x250f37['dialGlobalMaxRetry']){_0xa6605e[_0x2cea('0xfd')](_0x2b66af,_0x2bc600,_0x2232c7,_0x2a964c[_0x2cea('0x112')]);}else{_0xa6605e[_0x2cea('0x100')](_0x2b66af,_0x2bc600,_0x2232c7,_0x2a964c[_0x2cea('0x112')]);}}}})['then'](function(_0x5c8dac){if(_0x180f76){_0xa6605e[_0x2cea('0xc2')](_0x2b66af,_0x335752,_0x3bdfee)['then'](function(_0x1c7324){return _0x2bc600(0x1);});}});});};Dialer[_0x2cea('0xaf')][_0x2cea('0xfd')]=function(_0xd6b19,_0x5105d2,_0x447672,_0x5b0e33){var _0x48ffbc=new Final(_0xd6b19);_0x48ffbc['state']=0xf;_0x48ffbc[_0x2cea('0xad')]=_0x2cea('0x1d9');this['createStateFinal'](_0x48ffbc,_0x5105d2,_0x447672,_0x5b0e33);};Dialer[_0x2cea('0xaf')][_0x2cea('0x100')]=function(_0x495551,_0x135d43,_0x436845,_0x48f627){this[_0x2cea('0xd2')](_0x495551)[_0x2cea('0x3e')](function(){return _0x135d43(msgResponse(_0x2cea('0x1bd'),_0x2cea('0xdf'),_0x48f627));})[_0x2cea('0xbb')](function(){return _0x436845(msgResponse(_0x2cea('0x1da'),_0x2cea('0x156'),'contact\x20not\x20moved'));});};Dialer[_0x2cea('0xaf')]['predictive']=function(_0x74dda3){var _0x5cc032=_0x74dda3['dialPredictiveOptimizationPercentage']/0x64;var _0x5afd67=_0x74dda3['outboundDropCallsDayTimeout']/(_0x74dda3['outboundDropCallsDayTimeout']+_0x74dda3[_0x2cea('0xeb')]);var _0x41ee9b=Math['round'](_0x74dda3[_0x2cea('0x73')]*(_0x74dda3['predictiveIntervalMaxThreshold']/0x64));var _0x24c58b=Math[_0x2cea('0x1db')](_0x74dda3[_0x2cea('0x73')]*(_0x74dda3[_0x2cea('0x1dc')]/0x64));var _0x27423a=_0x74dda3['available']+_0x74dda3[_0x2cea('0x57')];var _0xbc8db6=Math[_0x2cea('0x1dd')](_0x74dda3[_0x2cea('0x75')]*_0x74dda3[_0x2cea('0x90')]*_0x74dda3[_0x2cea('0x70')]*_0x74dda3['predictiveIntervalMultiplicativeFactor']);if(_[_0x2cea('0x40')](_0x74dda3[_0x2cea('0x29')])){if(!_['isUndefined'](_0x74dda3['startPredictive'])){_0x74dda3['startPredictive']=undefined;loggerPredictive['error'](_0x2cea('0x1de'),_0x2cea('0x1df'));}if(!_[_0x2cea('0x40')](_0x74dda3[_0x2cea('0x95')])){loggerPredictive[_0x2cea('0x9b')](_0x2cea('0x1de'),'check\x20handlePredictive\x20is\x20not\x20undefine');clearInterval(_0x74dda3[_0x2cea('0x95')]);_0x74dda3[_0x2cea('0x95')]=undefined;}_0x74dda3['startProgressive']=moment()[_0x2cea('0x7b')](_0x2cea('0x106'));loggerPredictive[_0x2cea('0x83')](_0x74dda3[_0x2cea('0x44')],_0x2cea('0x1e0'),_0x74dda3[_0x2cea('0x29')]);this[_0x2cea('0x168')](_0x74dda3,0x1);}else if(ifInterval(_0x74dda3[_0x2cea('0x1e1')],_0x74dda3[_0x2cea('0x29')])){this[_0x2cea('0x168')](_0x74dda3,0x1);loggerPredictiveCalls['info'](_0x2cea('0x1e2'),_0x74dda3[_0x2cea('0x29')],_0x74dda3[_0x2cea('0x44')]);_0x74dda3[_0x2cea('0x75')]=0x0;_0x74dda3[_0x2cea('0x120')]=0x0;}else if(_0x5cc032<_0x5afd67&&_0x74dda3[_0x2cea('0x1e3')]==='dropRate'){freeVariablesPredictive(_0x74dda3);loggerPredictive['info'](_0x2cea('0x1e4'),_0x2cea('0x1e5'),_0x5afd67,_0x2cea('0x29'),_0x74dda3[_0x2cea('0x44')]);}else if(_0xbc8db6<_0x74dda3['predictiveIntervalErlangCallsDroppedCalls']&&_0x74dda3[_0x2cea('0x1e3')]===_0x2cea('0x1e6')){freeVariablesPredictive(_0x74dda3);loggerPredictive[_0x2cea('0x83')](_0x2cea('0x1e7'),_0x2cea('0x1e8'),_0xbc8db6,_0x2cea('0x1e9'),_0x74dda3[_0x2cea('0x120')],_0x2cea('0x29'),_0x74dda3[_0x2cea('0x44')]);}else if(!ifInterval(_0x74dda3[_0x2cea('0x1e1')],_0x74dda3[_0x2cea('0x29')])&&_[_0x2cea('0x40')](_0x74dda3[_0x2cea('0x28')])&&!_[_0x2cea('0x40')](_0x74dda3[_0x2cea('0x29')])){_0x74dda3[_0x2cea('0x28')]=moment()[_0x2cea('0x7b')](_0x2cea('0x106'));loggerPredictive[_0x2cea('0x83')](_0x74dda3[_0x2cea('0x44')],'started\x20in\x20predictive\x20at',_0x74dda3[_0x2cea('0x28')]);this[_0x2cea('0xc6')](_0x74dda3['dialPredictiveInterval'])['then'](this[_0x2cea('0x1ea')](_0x74dda3))[_0x2cea('0x3e')](mergeDataErlangB(_0x74dda3))[_0x2cea('0x3e')](this[_0x2cea('0x1eb')](_0x74dda3))[_0x2cea('0xbb')](loggerCatchPredictive(_0x2cea('0x1ec'),_0x74dda3));}else if(!ifInterval(_0x74dda3[_0x2cea('0x1e1')],_0x74dda3['startPredictive'])){_0x74dda3[_0x2cea('0x120')]=0x0;_0x74dda3['startPredictive']=moment()['format'](_0x2cea('0x106'));loggerPredictive['info'](_0x74dda3[_0x2cea('0x44')],_0x2cea('0x1ed'),_0x74dda3[_0x2cea('0x28')]);clearInterval(_0x74dda3[_0x2cea('0x95')]);_0x74dda3[_0x2cea('0x95')]=undefined;this['averageHandleTime'](_0x74dda3[_0x2cea('0x1e1')])[_0x2cea('0x3e')](this[_0x2cea('0x1ea')](_0x74dda3))[_0x2cea('0x3e')](mergeDataErlangB(_0x74dda3))[_0x2cea('0x3e')](this[_0x2cea('0x1eb')](_0x74dda3))['catch'](loggerCatchPredictive(_0x2cea('0x1ee'),_0x74dda3));}else if(_0x74dda3[_0x2cea('0x73')]&&_0x27423a<_0x74dda3[_0x2cea('0x73')]-_0x24c58b){freeVariablesPredictive(_0x74dda3);loggerPredictive['info'](_0x74dda3['name'],_0x2cea('0x1ef'),_0x27423a,_0x2cea('0x1f0'),_0x74dda3['predictiveIntervalAvailable'],'-',_0x24c58b,'=',_0x74dda3[_0x2cea('0x73')]-_0x24c58b,')');}else if(_0x74dda3[_0x2cea('0x73')]&&_0x27423a>_0x74dda3[_0x2cea('0x73')]+_0x41ee9b){freeVariablesPredictive(_0x74dda3);loggerPredictive[_0x2cea('0x83')](_0x74dda3['name'],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x27423a,_0x2cea('0x1f1'),_0x74dda3['predictiveIntervalAvailable'],'+',_0x41ee9b,'=',_0x74dda3['predictiveIntervalAvailable']+_0x41ee9b,')');}};Dialer['prototype'][_0x2cea('0x1ea')]=function(_0x357c48){var _0x147033=this;return function(_0x72dc6){return new BPromise(function(_0x305395,_0x107d4a){_[_0x2cea('0x92')](_0x357c48,_0x72dc6[0x0]);if(checkGetDataPredictive(_0x72dc6[0x0])){var _0x2c8bba=_0x357c48['predictiveIntervalAvailable']=_0x357c48['talking']+_0x357c48[_0x2cea('0x51')];var _0x52c24e=_0x357c48[_0x2cea('0x1e1')]*0x3c;var _0x5a8948=_0x72dc6[0x0][_0x2cea('0x6c')]+_0x72dc6[0x0][_0x2cea('0x6b')];var _0x42adc7=(_0x72dc6[0x0]['predictiveIntervalAnsweredCalls']+_0x72dc6[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x72dc6[0x0][_0x2cea('0x6d')])/_0x72dc6[0x0][_0x2cea('0x85')];_0x357c48['predictiveIntervalHitRate']=_0x42adc7>0x0?_0x42adc7:0x1;switch(_0x357c48[_0x2cea('0x1e3')]){case _0x2cea('0x1e6'):var _0x28dfa2=_0x357c48['dialPredictiveOptimizationPercentage']/0x64;return _0x147033['abandonmentRate'](_0x2c8bba,_0x52c24e,_0x5a8948,_0x42adc7,_0x28dfa2)['then'](function(_0x25ac6a){return _0x305395(_0x25ac6a);});case'agentBusyFactor':var _0x27587d=_0x357c48[_0x2cea('0x1f2')]/0x64;return _0x147033[_0x2cea('0x1f3')](_0x2c8bba,_0x52c24e,_0x5a8948,_0x42adc7,_0x27587d)[_0x2cea('0x3e')](function(_0x555b19){return _0x305395(_0x555b19);});default:return _0x107d4a(msgResponse(_0x2cea('0x1f4'),'Failure',_0x2cea('0x1f5')));}}else{return _0x107d4a(msgResponse('[getDataPredictive]',_0x2cea('0x156'),_0x2cea('0x1f6')));}});};};Dialer[_0x2cea('0xaf')][_0x2cea('0x1f7')]=function(_0x102976){var _0x23414d=this;return function(_0x1fc403){return new BPromise(function(_0x4f3233,_0x2c55){_['merge'](_0x102976,_0x1fc403[0x0]);if(checkGetDataPredictive(_0x1fc403[0x0])){loggerPredictive[_0x2cea('0x83')](JSON[_0x2cea('0x146')](_0x1fc403[0x0]));if(_0x102976[_0x2cea('0x1e3')]==='dropRate'){return _0x23414d[_0x2cea('0xd1')](_0x102976['id'])[_0x2cea('0x3e')](function(_0x3a6c03){var _0x536649=_0x102976[_0x2cea('0x52')]-_0x3a6c03[0x0][_0x2cea('0x1f8')];var _0x1311fa=_0x102976[_0x2cea('0x1e1')]*0x3c;var _0x66fbc4=_0x1fc403[0x0]['predictiveIntervalAvgTalktime']+_0x1fc403[0x0][_0x2cea('0x6b')];var _0x588102=(_0x1fc403[0x0][_0x2cea('0x6a')]+_0x1fc403[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x1fc403[0x0][_0x2cea('0x6d')])/_0x1fc403[0x0][_0x2cea('0x85')];var _0x2f387d=_0x102976['dialPredictiveOptimizationPercentage']/0x64;_0x102976[_0x2cea('0x72')]=_0x3a6c03[0x0][_0x2cea('0x1f8')]||0x0;_0x102976[_0x2cea('0x70')]=_0x588102>0x0?_0x588102:0x1;return _0x23414d[_0x2cea('0x1f9')](_0x536649,_0x1311fa,_0x66fbc4,_0x588102,_0x2f387d);})[_0x2cea('0x3e')](function(_0x2d35b5){return _0x4f3233(_0x2d35b5);})['catch'](function(_0x2c01dc){return _0x2c55(msgResponse('[CatchErlangB]',_0x2cea('0x156'),JSON[_0x2cea('0x146')](_0x2c01dc)));});}if(_0x102976[_0x2cea('0x1e3')]===_0x2cea('0x1fa')){return _0x23414d[_0x2cea('0xd1')](_0x102976['id'])[_0x2cea('0x3e')](function(_0x1c9108){var _0x4738ac=_0x102976['loggedIn']-_0x1c9108[0x0][_0x2cea('0x1f8')];var _0x3dbce5=_0x102976[_0x2cea('0x1e1')]*0x3c;var _0x110ed5=_0x1fc403[0x0][_0x2cea('0x6c')]+_0x1fc403[0x0]['predictiveIntervalAvgHoldtime'];var _0x26112d=(_0x1fc403[0x0][_0x2cea('0x6a')]+_0x1fc403[0x0][_0x2cea('0x6e')]+_0x1fc403[0x0][_0x2cea('0x6d')])/_0x1fc403[0x0][_0x2cea('0x85')];var _0x5d24a5=_0x102976[_0x2cea('0x1f2')]/0x64;_0x102976['predictiveIntervalPauses']=_0x1c9108[0x0][_0x2cea('0x1f8')]||0x0;_0x102976[_0x2cea('0x70')]=_0x26112d>0x0?_0x26112d:0x1;return _0x23414d[_0x2cea('0x1f3')](_0x4738ac,_0x3dbce5,_0x110ed5,_0x26112d,_0x5d24a5);})[_0x2cea('0x3e')](function(_0x59e12f){return _0x4f3233(_0x59e12f);})[_0x2cea('0xbb')](function(_0x290043){return _0x2c55(msgResponse('[CatchErlangB]',_0x2cea('0x156'),JSON[_0x2cea('0x146')](_0x290043)));});}}else{return _0x2c55(msgResponse(_0x2cea('0x1f4'),_0x2cea('0x156'),_0x2cea('0x1f6')));}});};};Dialer['prototype']['startMethodPredictive']=function(_0x126c63){var _0x3a5a89=this;return function(){var _0x30ffd3=0x0;var _0x271d15=Math[_0x2cea('0x1dd')](_0x126c63['erlangCallToSecond']*0x3e8);if(_0x271d15>0x0){_0x271d15=_0x271d15<0x64?0x64:_0x271d15;loggerPredictive['info'](_0x126c63[_0x2cea('0x44')],'one\x20call\x20every:',_0x271d15,_0x2cea('0x4a'));_0x126c63[_0x2cea('0x95')]=setInterval(function(){_0x3a5a89[_0x2cea('0x95')](_0x126c63);loggerPredictiveCalls[_0x2cea('0x83')](_0x2cea('0x1fb'),_0x30ffd3+=0x1);},_0x271d15);}else{loggerPredictive['info'](_0x126c63[_0x2cea('0x44')],_0x2cea('0x1fc'));}};};Dialer[_0x2cea('0xaf')][_0x2cea('0x1fd')]=function(_0x51997a,_0x524966){var _0x53d942=this;return function(_0x856cfa){if(_['isEmpty'](_0x856cfa)){if(_[_0x2cea('0xb4')](_0x524966['UserId'])||!_0x524966[_0x2cea('0x1fe')]){if(_0x51997a[_0x2cea('0x5c')]===_0x2cea('0x8')){_0x51997a[_0x2cea('0x13d')]=_[_0x2cea('0x40')](_0x51997a['queueStatusComplete'])?!![]:_0x51997a[_0x2cea('0x13d')];var _0x2ba067=uuid['v4']();_0x53d942[_0x2cea('0xb2')][_0x2ba067]=new Action(_0x51997a,_0x524966,_0x2ba067);loggerBooked[_0x2cea('0x83')](_0x2cea('0x1ff'),_0x2ba067,_0x2cea('0x200'),JSON[_0x2cea('0x146')](_0x51997a[_0x2cea('0x13d')]),'Queue:\x20',_0x51997a[_0x2cea('0x44')]);if(_0x51997a[_0x2cea('0x13d')]){_0x51997a['queueStatusComplete']=![];_0x53d942[_0x2cea('0x2b')][_0x53d942['actions'][_0x2ba067]['queue']]=[];ami[_0x2cea('0xb5')]({'actionid':_0x2ba067,'action':_0x2cea('0x201'),'queue':_0x51997a[_0x2cea('0x44')]})[_0x2cea('0xbb')](function(){_0x53d942[_0x2cea('0xb9')](_0x51997a);_0x53d942['rescheduleContact']({'active':![],'ContactId':_0x53d942[_0x2cea('0xb2')][_0x2ba067][_0x2cea('0xd9')],'ListId':_0x53d942[_0x2cea('0xb2')][_0x2ba067]['ListId'],'VoiceQueueId':_0x53d942[_0x2cea('0xb2')][_0x2ba067][_0x2cea('0xdb')]||undefined,'CampaignId':_0x53d942['actions'][_0x2ba067][_0x2cea('0xdc')]||undefined})[_0x2cea('0xbb')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x53d942[_0x2cea('0xb2')][_0x2ba067];});}else{loggerBooked[_0x2cea('0x83')]('[booked][checkContactBlack][else]',JSON[_0x2cea('0x146')](_0x51997a[_0x2cea('0x13d')]),_0x2cea('0x202'),_0x51997a[_0x2cea('0x44')]);_0x53d942[_0x2cea('0xb9')](_0x51997a);_0x53d942[_0x2cea('0xc9')]({'active':![],'ContactId':_0x53d942[_0x2cea('0xb2')][_0x2ba067][_0x2cea('0xd9')],'ListId':_0x53d942['actions'][_0x2ba067][_0x2cea('0x107')],'VoiceQueueId':_0x53d942[_0x2cea('0xb2')][_0x2ba067][_0x2cea('0xdb')]||undefined,'CampaignId':_0x53d942[_0x2cea('0xb2')][_0x2ba067]['CampaignId']||undefined})['catch'](loggerCatch(_0x2cea('0x203')));delete _0x53d942['actions'][_0x2ba067];}}else{return _0x53d942[_0x2cea('0x17c')](_0x51997a,_0x524966);}}else{if(getDiff(_0x524966[_0x2cea('0x204')])<_0x51997a['dialRecallMeTimeout']*0x3c){if(_0x524966[_0x2cea('0x205')]&&!_0x524966[_0x2cea('0x205')][_0x2cea('0x206')]){_0x53d942['preview'][_0x2cea('0x13e')](_0x524966['id'])[_0x2cea('0x1d')](function(){_0x53d942['updateOriginated'](_0x51997a);});}else{_0x53d942['unlockContact']({'active':![]},_0x524966['id'],0x1)['finally'](function(){_0x53d942[_0x2cea('0xb9')](_0x51997a);});}}else{_0x51997a[_0x2cea('0x67')]+=0x1;_0x53d942['updateOriginated'](_0x51997a);if(_0x51997a[_0x2cea('0x207')]){_0x53d942['rescheduleContact']({'active':![],'recallme':![],'UserId':null,'ContactId':_0x524966[_0x2cea('0xd9')],'ListId':_0x524966[_0x2cea('0x107')],'VoiceQueueId':_0x524966[_0x2cea('0xdb')]||undefined,'CampaignId':_0x524966['CampaignId']||undefined})[_0x2cea('0xbb')](loggerCatch(_0x2cea('0x208')));_0x53d942['createHistory'](createObjHistory(_0x51997a,_0x524966,_0x2cea('0x209'),0x17,_0x2cea('0x20a')))[_0x2cea('0xbb')](loggerCatch(_0x2cea('0x20b')));}else{_0x53d942[_0x2cea('0xd8')](createObjHistory(_0x51997a,_0x524966,'RECALLFAILEDTIMEOUT',0x16,_0x2cea('0x20c')),_0x2cea('0x20d'),'[Originate][HistoryRecallClose]');}}}}else{_0x51997a[_0x2cea('0x20e')]+=0x1;_0x53d942[_0x2cea('0xd8')](createObjHistory(_0x51997a,_0x524966,_0x2cea('0x20f'),0xd,_0x2cea('0x210')),_0x2cea('0x211'),'[Originate][MoveBlacklist]');throw'inBlackList';}};};Dialer['prototype']['handleIvr']=function(_0x3981f6){var _0x41b458=this;var _0x5e2acd=_0x3981f6[_0x2cea('0x212')]-_0x3981f6['originated']-_0x3981f6[_0x2cea('0xce')];emitCampaignSummary(_0x3981f6);if(_0x5e2acd>0x0){if(_0x5e2acd>this[_0x2cea('0x23')]){_0x5e2acd=this[_0x2cea('0x23')];}_0x3981f6[_0x2cea('0xce')]+=_0x5e2acd;this['getContactDialerIvr'](_0x3981f6['id'],_0x5e2acd,_0x3981f6[_0x2cea('0x213')],_0x3981f6)[_0x2cea('0x3e')](function(_0x2735fb){_0x3981f6['temp']-=_0x5e2acd;_0x3981f6[_0x2cea('0xce')]=_0x3981f6[_0x2cea('0xce')]>0x0?_0x3981f6['temp']:0x0;if(!checkContactEmpty(_0x2735fb)){_0x3981f6[_0x2cea('0x41')]=_0x2cea('0x214');logger['info'](_0x2cea('0x215')+_0x3981f6['name']);}else{_0x3981f6[_0x2cea('0x74')]+=_0x2735fb[_0x2cea('0x9e')];_0x3981f6['message']=_0x2cea('0x216');for(var _0x13f7b8=0x0;_0x13f7b8<_0x2735fb[_0x2cea('0x9e')];_0x13f7b8+=0x1){_0x3981f6[_0x2cea('0x217')]+=0x1;if(_[_0x2cea('0xb4')](_0x2735fb[_0x13f7b8])||_[_0x2cea('0xb4')](_0x2735fb[_0x13f7b8][_0x2cea('0x199')])||_[_0x2cea('0xb4')](_0x2735fb[_0x13f7b8][_0x2cea('0x17f')])){_0x41b458['emptyContact'](_0x2cea('0x218'),_0x3981f6,_0x2735fb[_0x13f7b8]);}else{_0x41b458[_0x2cea('0xc4')](_[_0x2cea('0x13a')](_0x2735fb[_0x13f7b8],[_0x2cea('0xdc'),_0x2cea('0x219')]))[_0x2cea('0x3e')](_0x41b458[_0x2cea('0x1fd')](_0x3981f6,_0x2735fb[_0x13f7b8]))[_0x2cea('0xbb')](_0x41b458[_0x2cea('0xd7')](_0x2cea('0x21a'),_0x3981f6));}}}})[_0x2cea('0xbb')](loggerGetContactDialer(_0x2cea('0x21b'),_0x3981f6,_0x5e2acd));}};Dialer['prototype'][_0x2cea('0x168')]=function(_0x5dad3f,_0x20ec9f){var _0x1da3b3=this;var _0x5295f1=[];var _0x5c58f5=_0x20ec9f>=0x1?_0x20ec9f:0x1;if(_0x5dad3f[_0x2cea('0x5c')]==='booked'){_0x5c58f5=0x1;}var _0x5b090e=Math['floor'](_0x5dad3f[_0x2cea('0x51')]*_0x5c58f5)-_0x5dad3f[_0x2cea('0x74')]-_0x5dad3f[_0x2cea('0xce')];emitVoiceQueueSummary(_0x5dad3f);if(_0x5dad3f[_0x2cea('0x21c')]>0x0){var _0x427a71=_0x5dad3f[_0x2cea('0x21c')]-_0x5dad3f['originated']-_0x5dad3f[_0x2cea('0x57')]-_0x5dad3f['temp']-_0x5dad3f['pTalking'];if(_0x5b090e>_0x427a71){_0x5b090e=_0x427a71;}}if(_0x5b090e>0x0){if(_0x5dad3f['dialMethod']===_0x2cea('0x8')){_0x5b090e=0x1;}if(_0x5b090e>this[_0x2cea('0x23')]){_0x5b090e=this[_0x2cea('0x23')];}_0x5dad3f[_0x2cea('0xce')]+=_0x5b090e;for(var _0x3924f0 in this[_0x2cea('0x21')]){if(typeof this[_0x2cea('0x21')][_0x3924f0]!=='undefined'){if(this[_0x2cea('0x21')][_0x3924f0][_0x2cea('0xac')]===_0x2cea('0x21d')&&this[_0x2cea('0x21')][_0x3924f0][_0x2cea('0xe3')]===_0x2cea('0xe2')){_0x5295f1['push'](this['agents'][_0x3924f0]['id']);}}}this[_0x2cea('0xcd')](_0x5dad3f['id'],_0x5295f1,_0x5b090e,_0x5dad3f[_0x2cea('0x213')],_0x5dad3f)[_0x2cea('0x3e')](function(_0x5e2a11){_0x5dad3f['temp']-=_0x5b090e;_0x5dad3f['temp']=_0x5dad3f[_0x2cea('0xce')]>0x0?_0x5dad3f[_0x2cea('0xce')]:0x0;if(!checkContactEmpty(_0x5e2a11)){_0x1da3b3[_0x2cea('0x21e')](_0x5dad3f)['then'](sendMessageReschedule(_0x5dad3f))[_0x2cea('0xbb')](loggerCatch(_0x2cea('0xbc')));}else{_0x5dad3f[_0x2cea('0x74')]+=_0x5e2a11[_0x2cea('0x9e')];_0x5dad3f[_0x2cea('0x41')]=_0x5dad3f[_0x2cea('0x5c')]==='booked'?_0x2cea('0x186'):_0x2cea('0x216');for(var _0x524b72=0x0;_0x524b72<_0x5e2a11[_0x2cea('0x9e')];_0x524b72+=0x1){if(_[_0x2cea('0xb4')](_0x5e2a11[_0x524b72])||_[_0x2cea('0xb4')](_0x5e2a11[_0x524b72][_0x2cea('0x199')])||_[_0x2cea('0xb4')](_0x5e2a11[_0x524b72]['phone'])){_0x1da3b3[_0x2cea('0x21f')](_0x2cea('0x218'),_0x5dad3f,_0x5e2a11[_0x524b72]);}else{_0x1da3b3[_0x2cea('0xbd')](_[_0x2cea('0x13a')](_0x5e2a11[_0x524b72],['VoiceQueueId',_0x2cea('0x219')]))[_0x2cea('0x3e')](_0x1da3b3[_0x2cea('0x1fd')](_0x5dad3f,_0x5e2a11[_0x524b72]))[_0x2cea('0xbb')](_0x1da3b3[_0x2cea('0xd7')]('[actionOriginate]\x20',_0x5dad3f));}}}})[_0x2cea('0xbb')](loggerGetContactDialer(_0x2cea('0x220'),_0x5dad3f,_0x5b090e));}};Dialer[_0x2cea('0xaf')][_0x2cea('0x95')]=function(_0x52cf2e){if(_0x52cf2e[_0x2cea('0x21c')]>0x0){var _0x1ee7cb=_0x52cf2e[_0x2cea('0x21c')]-_0x52cf2e[_0x2cea('0x74')]-_0x52cf2e['talking'];if(_0x1ee7cb>0x0){this[_0x2cea('0x221')](_0x52cf2e);}else{loggerPredictiveCalls[_0x2cea('0x83')](_0x2cea('0x222'));}}else{this[_0x2cea('0x221')](_0x52cf2e);}};Dialer[_0x2cea('0xaf')][_0x2cea('0x221')]=function(_0x30ead3){var _0x45061a=this;var _0x16a375=[];_0x30ead3[_0x2cea('0x74')]+=0x1;for(var _0x2e9a9e in this[_0x2cea('0x21')]){if(typeof this[_0x2cea('0x21')][_0x2e9a9e]!==_0x2cea('0x9f')){if(this[_0x2cea('0x21')][_0x2e9a9e][_0x2cea('0xac')]===_0x2cea('0x21d')&&this[_0x2cea('0x21')][_0x2e9a9e][_0x2cea('0xe3')]==='reachable'){_0x16a375[_0x2cea('0x139')](this[_0x2cea('0x21')][_0x2e9a9e]['id']);}}}this[_0x2cea('0xcd')](_0x30ead3['id'],_0x16a375,0x1,_0x30ead3['dialOrderByScheduledAt'],_0x30ead3)[_0x2cea('0x3e')](function(_0x23d406){if(!checkContactEmpty(_0x23d406)){checkContactLowerLimitOriginate(_0x30ead3,0x1,0x0);_0x45061a[_0x2cea('0x21e')](_0x30ead3)[_0x2cea('0x3e')](sendMessageReschedule(_0x30ead3))[_0x2cea('0xbb')](loggerCatch(_0x2cea('0xbc')));}else{_0x30ead3['message']='RUNNING';if(_['isNil'](_0x23d406[0x0])||_[_0x2cea('0xb4')](_0x23d406[0x0][_0x2cea('0x199')])||_[_0x2cea('0xb4')](_0x23d406[0x0][_0x2cea('0x17f')])){_0x45061a[_0x2cea('0x21f')]('[actionOriginate]\x20',_0x30ead3,_0x23d406[0x0]);}else{_0x45061a[_0x2cea('0xbd')](_[_0x2cea('0x13a')](_0x23d406[0x0],[_0x2cea('0xdb'),'Contact.phone']))['then'](_0x45061a[_0x2cea('0x1fd')](_0x30ead3,_0x23d406[0x0]))[_0x2cea('0xbb')](_0x45061a[_0x2cea('0xd7')](_0x2cea('0x223'),_0x30ead3));}}})['catch'](loggerGetContactDialer(_0x2cea('0x224'),_0x30ead3,0x1));emitVoiceQueueSummary(_0x30ead3);};Dialer[_0x2cea('0xaf')][_0x2cea('0x1f9')]=function(_0x2cab50,_0x2a27d0,_0x4d414e,_0x3fe16b,_0x312eae,_0x5856b5){loggerPredictive['info']('--------\x20Drop\x20Rate\x20--------');loggerPredictive[_0x2cea('0x83')](_0x2cea('0x225'),_0x2cab50);loggerPredictive[_0x2cea('0x83')](_0x2cea('0x226'),_0x2a27d0);loggerPredictive[_0x2cea('0x83')](_0x2cea('0x227'),_0x4d414e);loggerPredictive[_0x2cea('0x83')](_0x2cea('0x228'),_0x3fe16b);loggerPredictive['info'](_0x2cea('0x229'),_0x312eae);loggerPredictive['info']('---------------------------');return new BPromise(function(_0x3add62,_0x434240){if(_0x2cab50<=0x0||isNaN(_0x2cab50)){return _0x434240(msgResponse(_0x2cea('0x22a'),_0x2cea('0x1ab'),_0x2cea('0x22b')+_0x2cab50));}if(_0x4d414e<=0x0||isNaN(_0x4d414e)){return _0x434240(msgResponse('[abandonmentRate]',_0x2cea('0x1ab'),'Ts\x20=\x20'+_0x4d414e));}if(_0x3fe16b<=0x0||isNaN(_0x3fe16b)){return _0x434240(msgResponse(_0x2cea('0x22a'),_0x2cea('0x1ab'),'p\x20=\x20'+_0x3fe16b));}if(_0x2a27d0<=0x0||isNaN(_0x2a27d0)){return _0x434240(msgResponse('[abandonmentRate]','Error',_0x2cea('0x22c')+_0x2a27d0));}if(_0x312eae<=0x0||isNaN(_0x312eae)){return _0x434240(msgResponse(_0x2cea('0x22a'),_0x2cea('0x1ab'),_0x2cea('0x22d')+_0x312eae));}_0x5856b5=_0x5856b5||0x0;var _0x331f24=0x1/_0x4d414e;var _0x5e0ec6=0x0;var _0x3357d1=0x0;var _0x3efb6d=0x0;var _0x3b826e=0x0;for(var _0x26733f=0x0;_0x3efb6d<_0x312eae;_0x26733f+=0x1){_0x3357d1=_0x26733f/_0x2a27d0;_0x5e0ec6=(_0x3fe16b*_0x3357d1+_0x5856b5)/_0x331f24;_0x3efb6d=erlangb(_0x5e0ec6,_0x2cab50);_0x3b826e=_0x5e0ec6/_0x2cab50*(0x1-erlangb(_0x5e0ec6,_0x2cab50));}return _0x3add62({'erlangCalls':_0x26733f,'erlangCallToSecond':_0x2a27d0/_0x26733f,'erlangAbandonmentRate':_0x3efb6d,'erlangBusyFactor':_0x3b826e});});};Dialer['prototype'][_0x2cea('0x1f3')]=function(_0x233786,_0x520c54,_0x4c3004,_0x5aac83,_0x14d01e,_0x24e3f9){loggerPredictive[_0x2cea('0x83')]('----\x20Agent\x20Busy\x20Factor\x20----');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',_0x233786);loggerPredictive['info']('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x520c54);loggerPredictive[_0x2cea('0x83')](_0x2cea('0x227'),_0x4c3004);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',_0x5aac83);loggerPredictive[_0x2cea('0x83')](_0x2cea('0x22e'),_0x14d01e);loggerPredictive[_0x2cea('0x83')](_0x2cea('0x88'));return new BPromise(function(_0x30f846,_0x5eb296){if(_0x233786<=0x0||isNaN(_0x233786)){return _0x5eb296(msgResponse('[busyFactor]',_0x2cea('0x1ab'),_0x2cea('0x22b')+_0x233786));}if(_0x4c3004<=0x0||isNaN(_0x4c3004)){return _0x5eb296(msgResponse(_0x2cea('0x22f'),_0x2cea('0x1ab'),'Ts\x20=\x20'+_0x4c3004));}if(_0x5aac83<=0x0||isNaN(_0x5aac83)){return _0x5eb296(msgResponse(_0x2cea('0x22f'),_0x2cea('0x1ab'),'p\x20=\x20'+_0x5aac83));}if(_0x520c54<=0x0||isNaN(_0x520c54)){return _0x5eb296(msgResponse(_0x2cea('0x22f'),'Error',_0x2cea('0x22c')+_0x520c54));}if(_0x14d01e<=0x0||isNaN(_0x14d01e)){return _0x5eb296(msgResponse(_0x2cea('0x22f'),_0x2cea('0x1ab'),_0x2cea('0x230')+_0x14d01e));}_0x24e3f9=_0x24e3f9||0x0;var _0xe137f0=0x1/_0x4c3004;var _0x2dfe70=0x0;var _0x12075e=0x0;var _0x1c1089=0x0;var _0x3cec13=0x0;for(var _0x330a36=0x0;_0x3cec13<_0x14d01e;_0x330a36+=0x1){_0x12075e=_0x330a36/_0x520c54;_0x2dfe70=(_0x5aac83*_0x12075e+_0x24e3f9)/_0xe137f0;_0x1c1089=erlangb(_0x2dfe70,_0x233786);_0x3cec13=_0x2dfe70/_0x233786*(0x1-erlangb(_0x2dfe70,_0x233786));}return _0x30f846({'erlangCalls':_0x330a36,'erlangCallToSecond':_0x520c54/_0x330a36,'erlangAbandonmentRate':_0x1c1089,'erlangBusyFactor':_0x3cec13});});};module[_0x2cea('0x231')]=Dialer;
\ No newline at end of file
+var _0x0434=['erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','Trunk','callerid','md5','voice:queue:%s','ivr','format','campaign:ivr:%s','campaign:save','info','-----\x20Stats\x20Predictive\x20---','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','merge','seconds','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','debug','inspect','error','stack','length','undefined','[decremetOriginate]\x20is\x20null\x20or\x20undefined','[getContactDialer2][ReScheduled]','AVAILABLE_CONTACTS_FINISHED','talking','pTalking','[syncQueueSummary]\x20Campaign\x20Queue:\x20','IS_DISACTIVED','is\x20disactive','sendMessageOneNotActive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','endtime','starttime','clearZombieChannels','[uniqueid]','[actions]','isNil','Action','status','channel','updateOriginated','queue','[Dialer][checkChannel]','[Dialer][checkChannel][ivr]','resolve','countReScheduled','catch','[countReScheduled]\x20','checkIsBlackList','verifyAdditionalPhones','[verifyAdditionalPhone]\x20','[swapAdditionalPhone]\x20','checkIsBlackListIvr','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','[rescheduleContact]\x20','unlockContact','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','loggerHandler','saveInDb','pick','ContactId','VoiceQueueId','isSuccess','Success','isTrunkReachable','active','SIP/%s','unmonitored','uniqueid','variable','amdstatus','exten','HANGUP','state','membername','AMD','custom:amd','buildObj','dialAMDActive','value','MACHINE','statedesc','Machine','countmachineretry','countglobal','amd','countbusyretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','add','dialMachineRetryFrequency','minutes','ListId','CampaignId','[rescheduleContact][Machine]','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','countcongestionretry','YYYY-MM-DD\x20HH:mm:ss','syncHangup','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','[syncHangupIvr]','dialQueueProject','AnswerAGI','agent','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','syncAgentConnect','answertime','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','dialQueueTimeout','Drop','TIMEOUT','dialDropRetryFrequency','callAdditionalPhoneAfterMin','additional','dialDropMaxRetry','[rescheduleContact][Drop]','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','swapAdditionalPhones','Abandoned','CALLEREXIT','dialAbandonedRetryFrequency','voiceQueue','dialAbandonedMaxRetry','syncQueueMember','actionid','locked','paused','stateinterface','queueBooked','idHopper','queueStatusComplete','[unlockQueueStatus][undefined]','run','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','queueBookedRR','_rr','unlockRR','[booked][RR]','contactAgent-idHopper:\x20','[booked][RR][finaly]','[booked][unlock]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','resetActiveCalls','syncCampaigns','checkIsTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','checkIfTimeIntervals','ifTime','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','\x20Intervals\x20is\x20empty\x20','timezones','\x20Timezone\x20unknow\x20','isArray','push','command','interval','content','indexOf','true','all','some','GLOBAL_INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','handlePower','dialPowerLevel','Queue','method\x20not\x20recognized','launchHandleIvr','handleIvr','dialActive','dialGlobalInterval','dialTimezone','[syncQueueSummary]','filter','dialPreviewRecallmeReminder','reachable','handlePreviewRecallNotifications','user:%s','user:dialPreviewRecallReminder','checkPreviewRecallReminder','[syncCampaigns]','\x5cw{0,','pow','replace','random','actionOriginate','object','originate','voiceQueue\x20is\x20undefine','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','ACTIVE','XMD-AMDINITIALSILENCE','XMD-AMDGREETING','dialAMDGreeting','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','Contact','tags','createdAt','updatedAt','%s%s','XMD-','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','SIP/%s/%s%s','dialCutDigit','substring','trim','xcally-motion-dialer','from-sip','[originateError]:\x20%s','OriginateError','[originate][error]','originate\x20action\x20Error','response','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','[rescheduleContact][AgentReject]','entity\x20is\x20undefine','[callProgressDetecting]','reason','NoSuchNumber','nosuchnumber','reason\x200\x20no\x20such\x20number....','outboundNoAnswerCallsDay','NoAnswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','Busy','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','custom:agentcongestion','congestion','reason\x208\x20congestion','outboundAbandonedCallsDay','[syncAgentComplete][createHistory][11]','reason\x2011\x20abandoned','outboundRejectCallsDay','AgentReject','dialAgentRejectRetryFrequency','custom:agentreject','dialAgentRejectMaxRetry','reason\x2020\x20agentreject','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','erlangCalls','predictiveIntervalHitRate','check\x20predictive\x20is\x20not\x20undefine','[startMethodPredictive][StartProgressive]','check\x20handlePredictive\x20is\x20not\x20undefine','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','Max\x20Drop\x20','started\x20in\x20predictive\x20at','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','getDataPredictiveOld','outboundQueuePauses','abandonmentRate','loggedIn','[CatchErlangB]','check\x20failure','floor','one\x20call\x20every:','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','queueStatusComplete:\x20','Queue:\x20','queuestatus','[booked][checkContactBlack][else]','[unlockOriginate][syncQueueStatusComplete]','scheduledat','dialRecallMeTimeout','Agent','voicePause','outboundReCallsDay','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','[Originate][HistoryRecallClose][historyCatch]','BLACKLIST','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','dialOrderByScheduledAt','[getContactCampaign2][Empty]','RUNNING','ivrTotalCallsDays','emptyContact','[actionOriginate]\x20','Contact.phone','[getContactCampaign2]','dialLimitQueue','not_inuse','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','m\x20=\x20','p\x20=\x20','interval\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','Umin\x20=\x20','util','lodash','bluebird','uuid','moment','../preview/util/util','../../../config/environment/','../../../config/logger','dialer','booked','predictive','syncQueueSummary','../ami','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopperHistory','../rpc/cmHopperFinal','../rpc/cmHopperAdditionalPhone','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./action','./history','./final','./agentComplete','./queueCallerAbandon','env','XCALLY_IP_AGI','127.0.0.1','rrmemory','roundrobin','prototype','enqueue','tail','finally','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','contactsId','uniqueId','optionPredictive','startProgressive','ivrOriginated','agentconnect','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','bind','agentcomplete','syncAgentComplete','custom:queuesummary','syncQueueSummaryComplete','hangup','newexten','syncNewExten','varset','syncVarSet','queuemember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','then','isUndefined','message','AGENTS_NOT_LOGGED','name','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','\x20NOT\x20Active','Interval','\x20INTERVAL_IS_NULL','Intervals','INTERVAL_IS_NULL','isEmpty','[ifTime][Action]','Error','stringify','milliseconds','diff','emit','type','outbound','strategy','available','sumBillable','sumHoldTime','unmanaged','abandoned','waiting','loggedInDb','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated'];(function(_0x3e6cfc,_0x579126){var _0x284fc2=function(_0x12a7c6){while(--_0x12a7c6){_0x3e6cfc['push'](_0x3e6cfc['shift']());}};_0x284fc2(++_0x579126);}(_0x0434,0x1ad));var _0x4043=function(_0x85d5a8,_0x1977be){_0x85d5a8=_0x85d5a8-0x0;var _0x20479b=_0x0434[_0x85d5a8];return _0x20479b;};'use strict';var util=require(_0x4043('0x0'));var _=require(_0x4043('0x1'));var BPromise=require(_0x4043('0x2'));var uuid=require(_0x4043('0x3'));var moment=require(_0x4043('0x4'));var rr=require('rr');var md5=require('md5');var Redis=require('ioredis');var ut=require(_0x4043('0x5'));var config=require(_0x4043('0x6'));var logger=require(_0x4043('0x7'))(_0x4043('0x8'));var loggerBooked=require(_0x4043('0x7'))(_0x4043('0x9'));var loggerPredictive=require('../../../config/logger')(_0x4043('0xa'));var loggerPredictiveCalls=require(_0x4043('0x7'))('predictiveCalls');var loggerSyncQueueSummary=require('../../../config/logger')(_0x4043('0xb'));var ami=require(_0x4043('0xc'));config[_0x4043('0xd')]=_[_0x4043('0xe')](config[_0x4043('0xd')],{'host':_0x4043('0xf'),'port':0x18eb});var io=require(_0x4043('0x10'))(new Redis(config[_0x4043('0xd')]));var cmHopper=require('../rpc/cmHopper');var cmHopperHistory=require(_0x4043('0x11'));var cmHopperFinal=require(_0x4043('0x12'));var cmHopperAdditionalPhone=require(_0x4043('0x13'));var cmHopperBlack=require(_0x4043('0x14'));var voiceQueueRt=require(_0x4043('0x15'));var RpcSetting=require('../rpc/setting');var Action=require(_0x4043('0x16'));var History=require(_0x4043('0x17'));var Final=require(_0x4043('0x18'));var AgentComplete=require(_0x4043('0x19'));var QueueCallerAbandon=require(_0x4043('0x1a'));var Hangup=require('./hangup');var ipAgi=process[_0x4043('0x1b')][_0x4043('0x1c')]||_0x4043('0x1d');var strategy={'rrmemory':_0x4043('0x1e'),'roundrobin':_0x4043('0x1f')};var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence[_0x4043('0x20')][_0x4043('0x21')]=function(_0x3d6440){this[_0x4043('0x22')]=this[_0x4043('0x22')]?this[_0x4043('0x22')][_0x4043('0x23')](_0x3d6440):_0x3d6440();};function Dialer(_0x560602,_0xb07abf){this[_0x4043('0x24')]=new Sequence();this[_0x4043('0x25')]=_0xb07abf;this['voiceQueues']=_0x560602[_0x4043('0x26')];this[_0x4043('0x27')]=_0x560602[_0x4043('0x27')];this[_0x4043('0x28')]=_0x560602[_0x4043('0x28')];this['trunks']=_0x560602[_0x4043('0x29')];this['maxNumberOriginate']=config[_0x4043('0x2a')]||0x2;this[_0x4043('0x2b')]={};this[_0x4043('0x2c')]={};this[_0x4043('0x2d')]={};this[_0x4043('0x2e')]={};this[_0x4043('0x2f')]={};this['startPredictive']={};this[_0x4043('0x30')]={};this[_0x4043('0x31')]={};this['queueBooked']={};this['queueBookedRR']={};ami['on'](_0x4043('0x32'),this['syncAgentConnect']['bind'](this));ami['on'](_0x4043('0x33'),this[_0x4043('0x34')]['bind'](this));ami['on'](_0x4043('0x35'),this[_0x4043('0x36')][_0x4043('0x37')](this));ami['on'](_0x4043('0x38'),this[_0x4043('0x39')][_0x4043('0x37')](this));ami['on'](_0x4043('0x3a'),this[_0x4043('0xb')]['bind'](this));ami['on']('custom:queuesummarycomplete',this[_0x4043('0x3b')][_0x4043('0x37')](this));ami['on'](_0x4043('0x3c'),this['syncHangup']['bind'](this));ami['on'](_0x4043('0x3d'),this[_0x4043('0x3e')]['bind'](this));ami['on'](_0x4043('0x3f'),this[_0x4043('0x40')]['bind'](this));ami['on'](_0x4043('0x41'),this['syncQueueMember'][_0x4043('0x37')](this));ami['on'](_0x4043('0x42'),this[_0x4043('0x43')][_0x4043('0x37')](this));this[_0x4043('0x44')]();this[_0x4043('0x45')]();RpcSetting['getSettings']()[_0x4043('0x46')](function(_0xaa00d4){previewRecallmeReminderInterval=_0xaa00d4['previewRecallmeReminderInterval'];});}function isNotNull(_0x544602){return _0x544602!==null&&!_[_0x4043('0x47')](_0x544602);}function checkIsLoggedIn(_0x20ca80,_0x2e1fcb){return function(){if(_0x2e1fcb<=0x0){_0x20ca80[_0x4043('0x48')]=_0x4043('0x49');throw _0x20ca80[_0x4043('0x4a')]+_0x4043('0x4b');}};}function isActive(_0x5f5831){return _0x5f5831;}function checkIsActive(_0x4818c7,_0x58ffbe){return function(){if(!isActive(_0x58ffbe)){_0x4818c7['message']=_0x4043('0x4c');throw _0x4818c7[_0x4043('0x4a')]+_0x4043('0x4d');}};}function checkInterval(_0x50c66d){return function(){if(!isNotNull(_0x50c66d[_0x4043('0x4e')])){_0x50c66d['message']='INTERVAL_IS_NULL';throw _0x50c66d['name']+_0x4043('0x4f');}if(!isNotNull(_0x50c66d[_0x4043('0x4e')][_0x4043('0x50')])){_0x50c66d[_0x4043('0x48')]=_0x4043('0x51');throw _0x50c66d[_0x4043('0x4a')]+_0x4043('0x4f');}if(!isNotNull(_[_0x4043('0x52')](_0x50c66d[_0x4043('0x4e')][_0x4043('0x50')]))){_0x50c66d[_0x4043('0x48')]=_0x4043('0x51');throw _0x50c66d[_0x4043('0x4a')]+'\x20INTERVAL_IS_NULL';}};}function msgResponse(_0x5a4a40,_0x1cff81,_0xfe96f7){return{'action':_0x5a4a40,'response':_0x1cff81,'message':_0xfe96f7,'stack':_0xfe96f7};}function myreject(_0x18cfbd){return function(_0x52f13b){return _0x18cfbd(msgResponse(_0x4043('0x53'),_0x4043('0x54'),JSON[_0x4043('0x55')](_0x52f13b)));};}function getSeconds(_0xd115e0,_0xa3a2b6){var _0x49604d=moment(_0xd115e0)[_0x4043('0x56')](0x0);var _0x4d3c44=moment(_0xa3a2b6)['milliseconds'](0x0);return _0x49604d[_0x4043('0x57')](_0x4d3c44,'seconds');}function emit(_0x133a46,_0x2535d7,_0xda2809){io['to'](_0x133a46)[_0x4043('0x58')](_0x2535d7,_0xda2809);}function emitVoiceQueueSummary(_0x1e5212){if(_0x1e5212[_0x4043('0x59')]===_0x4043('0x5a')){var _0x5ec52e={'id':_0x1e5212['id'],'name':_0x1e5212[_0x4043('0x4a')],'strategy':_0x1e5212[_0x4043('0x5b')],'answered':_0x1e5212['answered'],'available':_0x1e5212[_0x4043('0x5c')],'loggedIn':_0x1e5212['loggedIn'],'pTalking':_0x1e5212['pTalking'],'sumBillable':_0x1e5212[_0x4043('0x5d')],'sumDuration':_0x1e5212['sumDuration'],'sumHoldTime':_0x1e5212[_0x4043('0x5e')]||0x0,'talking':_0x1e5212['talking'],'total':_0x1e5212['total'],'type':_0x1e5212[_0x4043('0x59')],'unmanaged':_0x1e5212[_0x4043('0x5f')],'abandoned':_0x1e5212[_0x4043('0x60')],'waiting':_0x1e5212[_0x4043('0x61')],'loggedInDb':_0x1e5212[_0x4043('0x62')],'dialActive':_0x1e5212['dialActive'],'dialMethod':_0x1e5212[_0x4043('0x63')],'dialOriginateCallerIdName':_0x1e5212[_0x4043('0x64')],'dialOriginateCallerIdNumber':_0x1e5212[_0x4043('0x65')],'dialOriginateTimeout':_0x1e5212[_0x4043('0x66')],'dialPrefix':_0x1e5212[_0x4043('0x67')],'outboundAnswerAgiCallsDay':_0x1e5212[_0x4043('0x68')],'outboundAnswerCallsDay':_0x1e5212[_0x4043('0x69')],'outboundBlacklistCallsDay':_0x1e5212[_0x4043('0x6a')],'outboundBusyCallsDay':_0x1e5212[_0x4043('0x6b')],'outboundCongestionCallsDay':_0x1e5212[_0x4043('0x6c')],'outboundDropCallsDayACS':_0x1e5212['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x1e5212[_0x4043('0x6d')],'outboundDropCallsDayTimeout':_0x1e5212[_0x4043('0x6e')],'outboundNoAnswerCallsDay':_0x1e5212['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x1e5212[_0x4043('0x6f')],'outboundOriginateFailureCallsDay':_0x1e5212[_0x4043('0x70')],'outboundReCallsDay':_0x1e5212['outboundReCallsDay'],'outboundRejectCallsDay':_0x1e5212['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x1e5212['outboundUnknownCallsDay'],'predictiveIntervalAnsweredCalls':_0x1e5212[_0x4043('0x71')],'predictiveIntervalAvgHoldtime':_0x1e5212[_0x4043('0x72')],'predictiveIntervalAvgTalktime':_0x1e5212[_0x4043('0x73')],'predictiveIntervalDroppedCallsCallersExit':_0x1e5212[_0x4043('0x74')],'predictiveIntervalDroppedCallsTimeout':_0x1e5212[_0x4043('0x75')],'predictiveIntervalErlangCalls':_0x1e5212[_0x4043('0x76')],'predictiveIntervalErlangCallsDroppedCalls':_0x1e5212[_0x4043('0x77')],'predictiveIntervalHitRate':_0x1e5212['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0x1e5212[_0x4043('0x78')],'predictiveIntervalPauses':_0x1e5212[_0x4043('0x79')],'predictiveIntervalAvailable':_0x1e5212[_0x4043('0x7a')],'predictiveIntervalTotalCalls':_0x1e5212[_0x4043('0x7b')],'message':_0x1e5212[_0x4043('0x48')],'originated':_0x1e5212[_0x4043('0x7c')],'erlangCalls':_0x1e5212['erlangCalls'],'erlangCallToSecond':_0x1e5212[_0x4043('0x7d')],'erlangAbandonmentRate':_0x1e5212[_0x4043('0x7e')],'erlangBusyFactor':_0x1e5212[_0x4043('0x7f')],'startPredictive':_0x1e5212[_0x4043('0x80')],'startProgressive':_0x1e5212[_0x4043('0x30')]};if(_0x1e5212['Trunk']){_0x5ec52e[_0x4043('0x81')]={'id':_0x1e5212[_0x4043('0x81')]['id'],'name':_0x1e5212[_0x4043('0x81')][_0x4043('0x4a')],'active':_0x1e5212[_0x4043('0x81')]['active'],'callerid':_0x1e5212[_0x4043('0x81')][_0x4043('0x82')]};}if(_0x1e5212[_0x4043('0x4e')]){_0x5ec52e[_0x4043('0x4e')]={'id':_0x1e5212[_0x4043('0x4e')]['id'],'name':_0x1e5212[_0x4043('0x4e')][_0x4043('0x4a')]};}var _0x538ca3=md5(JSON[_0x4043('0x55')](_0x5ec52e));if(_0x1e5212[_0x4043('0x83')]!==_0x538ca3){_0x1e5212[_0x4043('0x83')]=_0x538ca3;emit(util['format'](_0x4043('0x84'),_0x5ec52e[_0x4043('0x4a')]),'voice_queue:save',_0x5ec52e);}}}function emitCampaignSummary(_0x28e7c4){if(_0x28e7c4[_0x4043('0x59')]===_0x4043('0x85')){emit(util[_0x4043('0x86')](_0x4043('0x87'),_0x28e7c4[_0x4043('0x4a')]),_0x4043('0x88'),_0x28e7c4);}}function checkGetDataPredictive(_0x24a517){if(isNotNull(_0x24a517)&&!_[_0x4043('0x52')](_0x24a517)){loggerPredictive[_0x4043('0x89')](_0x4043('0x8a'));loggerPredictive[_0x4043('0x89')]('Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x24a517['predictiveIntervalTotalCalls']);loggerPredictive[_0x4043('0x89')](_0x4043('0x8b'),_0x24a517[_0x4043('0x71')]);loggerPredictive[_0x4043('0x89')]('Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x24a517[_0x4043('0x75')]);loggerPredictive[_0x4043('0x89')](_0x4043('0x8c'),_0x24a517['predictiveIntervalDroppedCallsCallersExit']);loggerPredictive['info'](_0x4043('0x8d'),_0x24a517['predictiveIntervalAvgHoldtime']);loggerPredictive[_0x4043('0x89')](_0x4043('0x8e'),_0x24a517[_0x4043('0x73')]);loggerPredictive[_0x4043('0x89')](_0x4043('0x8f'));if(_0x24a517[_0x4043('0x7b')]>0x0){if(!_[_0x4043('0x47')](_0x24a517[_0x4043('0x73')])&&_0x24a517['predictiveIntervalAvgTalktime']>0x0){return!![];}loggerPredictive[_0x4043('0x89')]('Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive');if(!_[_0x4043('0x47')](_0x24a517[_0x4043('0x72')])&&_0x24a517['predictiveIntervalAvgHoldtime']>0x0){return!![];}loggerPredictive['info']('Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive');}else{loggerPredictive[_0x4043('0x89')](_0x4043('0x90'));}}else{loggerPredictive['info'](_0x4043('0x91'));}return![];}function mergeDataErlangB(_0x1301d5){return function(_0x1d24e0){loggerPredictive['info'](_0x4043('0x92'));loggerPredictive[_0x4043('0x89')](_0x4043('0x93'),_0x1d24e0['erlangCalls']);loggerPredictive[_0x4043('0x89')]('One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1d24e0[_0x4043('0x7d')]);loggerPredictive[_0x4043('0x89')](_0x4043('0x94'),_0x1d24e0['erlangAbandonmentRate']);loggerPredictive[_0x4043('0x89')](_0x4043('0x95'),_0x1d24e0[_0x4043('0x7f')]);loggerPredictive['info']('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1d24e0[_0x4043('0x7e')]);loggerPredictive[_0x4043('0x89')]('---------------------------');_[_0x4043('0x96')](_0x1301d5,_0x1d24e0);};}function getDiff(_0x3ad29b){var _0x263cc7=moment()[_0x4043('0x56')](0x0);var _0x3c193f=moment(_0x3ad29b)[_0x4043('0x56')](0x0);return _0x263cc7['diff'](_0x3c193f,_0x4043('0x97'));}function ifInterval(_0x2bf314,_0x1c23ae){if(_[_0x4043('0x47')](_0x1c23ae)){return![];}return getDiff(_0x1c23ae)<_0x2bf314*0x3c;}function freeVariablesPredictive(_0x2f6e30){if(isNotNull(_0x2f6e30)){if(!_[_0x4043('0x47')](_0x2f6e30[_0x4043('0x30')])){_0x2f6e30[_0x4043('0x30')]=undefined;loggerPredictive['info'](_0x2f6e30[_0x4043('0x4a')],'clearing\x20variable\x20start\x20progressive');}if(!_['isUndefined'](_0x2f6e30[_0x4043('0x80')])){_0x2f6e30[_0x4043('0x80')]=undefined;loggerPredictive[_0x4043('0x89')](_0x2f6e30[_0x4043('0x4a')],_0x4043('0x98'));}if(!_[_0x4043('0x47')](_0x2f6e30['handlePredictive'])){clearInterval(_0x2f6e30['handlePredictive']);_0x2f6e30[_0x4043('0x99')]=undefined;loggerPredictive['info'](_0x2f6e30['name'],_0x4043('0x9a'));}}}function erlangb(_0x3dc7c3,_0x5d6076){if(_0x5d6076===0x0){return 0x0;}var _0x538e8a=0x1;for(var _0x598058=0x1;_0x598058<=_0x5d6076;_0x598058+=0x1){_0x538e8a=0x1+_0x538e8a*_0x598058/_0x3dc7c3;}return 0x1/_0x538e8a;}function isVoiceQueueOutbound(_0x518b9b){return _0x518b9b===_0x4043('0x5a');}function isNotPreview(_0x4df462){return _0x4df462!=='preview';}function isCampaignIvr(_0x3ad715){return _0x3ad715==='ivr';}function getCallerId(_0x1317e6,_0x274d64,_0x45a60a){if(!_[_0x4043('0x47')](_0x45a60a)&&typeof _0x45a60a===_0x4043('0x9b')&&!_['isEmpty'](_0x45a60a)){if(!_[_0x4043('0x47')](_0x274d64)&&typeof _0x274d64===_0x4043('0x9b')&&!_['isEmpty'](_0x274d64)){return util[_0x4043('0x86')](_0x4043('0x9c'),_0x274d64,_0x45a60a);}return util[_0x4043('0x86')](_0x4043('0x9c'),_0x45a60a,_0x45a60a);}if(!_[_0x4043('0x47')](_0x1317e6)&&typeof _0x1317e6===_0x4043('0x9b')&&!_[_0x4043('0x52')](_0x1317e6)){return _0x1317e6;}return _0x4043('0x9d');}function loggerCatchQueueSummary(_0x5d8145,_0x38e97c){return function(_0x2a662e){freeVariablesPredictive(_0x38e97c);emitVoiceQueueSummary(_0x38e97c);emitCampaignSummary(_0x38e97c);loggerSyncQueueSummary[_0x4043('0x9e')](_0x5d8145,util[_0x4043('0x9f')](_0x2a662e,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x5e4966,_0x6a25e1){return function(_0x146899){loggerPredictive[_0x4043('0xa0')](_0x6a25e1[_0x4043('0x4a')],_0x5e4966);loggerPredictive['error'](_0x146899[_0x4043('0xa1')]);freeVariablesPredictive(_0x6a25e1);};}function loggerCatch(_0x41f79f){return function(_0x2f9bd7){logger['error'](_0x41f79f,util[_0x4043('0x9f')](_0x2f9bd7,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x3a301e){return _0x3a301e&&!_['isUndefined'](_0x3a301e)&&_0x3a301e[_0x4043('0xa2')]>0x0;}function decremetOriginate(_0x20196d){if(!_[_0x4043('0x47')](_0x20196d)&&_0x20196d!==null){if(typeof _0x20196d['originated']!==_0x4043('0xa3')){if(_0x20196d[_0x4043('0x7c')]>0x0){_0x20196d[_0x4043('0x7c')]-=0x1;}else{logger[_0x4043('0xa0')]('[decremetOriginate]\x20object\x20originated\x20is\x20negative');}}}else{logger[_0x4043('0xa0')](_0x4043('0xa4'));}}function checkContactLowerLimitOriginate(_0x56aaf6,_0x297713,_0x17165c){if(_0x297713>_0x17165c){for(var _0x58e977=0x0;_0x58e977<_0x297713-_0x17165c;_0x58e977+=0x1){decremetOriginate(_0x56aaf6);}}}function loggerGetContactDialer(_0x132bc0,_0x39a7b5,_0x40ea7d){return function(_0x8964de){checkContactLowerLimitOriginate(_0x39a7b5,_0x40ea7d,0x0);logger['error'](_0x132bc0,util[_0x4043('0x9f')](_0x8964de,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x3bb455){return function(_0x2ad932){if(isNotNull(_0x2ad932)&&isNotNull(_0x2ad932[0x0])){if(_0x2ad932[0x0]['contactsRescheduled']>0x0){_0x3bb455['message']='RESCHEDULED_CONTACTS';logger[_0x4043('0x89')](_0x4043('0xa5')+_0x3bb455[_0x4043('0x4a')],_0x2ad932[0x0]['contactsRescheduled'],'contacts');}else{_0x3bb455[_0x4043('0x48')]=_0x4043('0xa6');logger[_0x4043('0x89')]('[getContactDialer2][Empty]'+_0x3bb455[_0x4043('0x4a')]);}}};}function notSendMessagesQueue(_0x34c617){if(_0x34c617['sendMessageOneNotActive']){freeVariablesPredictive(_0x34c617);if(_0x34c617[_0x4043('0x7c')]===0x0&&_0x34c617[_0x4043('0xa7')]===0x0&&_0x34c617[_0x4043('0x61')]===0x0&&(_0x34c617[_0x4043('0xa8')]||0x0)===0x0){_0x34c617['sendMessageOneNotActive']=![];_0x34c617[_0x4043('0x5c')]=0x0;_0x34c617['message']='NOT_ACTIVE';loggerSyncQueueSummary[_0x4043('0x9e')](_0x4043('0xa9'),_0x34c617[_0x4043('0x4a')],'is\x20not\x20active');}else{_0x34c617[_0x4043('0x48')]=_0x4043('0xaa');loggerSyncQueueSummary[_0x4043('0x9e')]('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x34c617['name'],_0x4043('0xab'));}emitVoiceQueueSummary(_0x34c617);}}function notSendMessagesCampaign(_0x20bb40){if(_0x20bb40[_0x4043('0xac')]){if(_0x20bb40[_0x4043('0x7c')]===0x0){_0x20bb40['sendMessageOneNotActive']=![];_0x20bb40[_0x4043('0x48')]=_0x4043('0x4c');loggerSyncQueueSummary['debug'](_0x4043('0xad'),_0x20bb40[_0x4043('0x4a')],'is\x20not\x20active');}else{_0x20bb40[_0x4043('0x48')]=_0x4043('0xaa');loggerSyncQueueSummary[_0x4043('0x9e')](_0x4043('0xad'),_0x20bb40[_0x4043('0x4a')],_0x4043('0xab'));}emitCampaignSummary(_0x20bb40);}}function createObjHistory(_0x271874,_0x1929f7,_0x3ed90b,_0x4fdb67,_0x2982c8){_0x271874[_0x4043('0x48')]=_0x3ed90b;var _0x2d6286=new Action(_0x271874,_0x1929f7);var _0x16418d=new History(_0x2d6286);_0x16418d['state']=_0x4fdb67;_0x16418d['statedesc']=_0x2982c8;_0x16418d[_0x4043('0xae')]=_0x2d6286[_0x4043('0xaf')];return _0x16418d;}Dialer[_0x4043('0x20')][_0x4043('0x45')]=function(){var _0x3e3391=this;setInterval(function(){_0x3e3391[_0x4043('0xb0')](_0x3e3391['uniqueId'],_0x4043('0xb1'));_0x3e3391['clearZombieChannels'](_0x3e3391[_0x4043('0x2c')],_0x4043('0xb2'));},0x32c8);};Dialer[_0x4043('0x20')]['clearZombieChannels']=function(_0x345f21,_0x485181){var _0x2cb360=this;for(var _0x5aaa59 in _0x345f21){if(typeof _0x345f21[_0x5aaa59]!=='undefined'){this[_0x4043('0x24')][_0x4043('0x21')](function(){if(!_[_0x4043('0xb3')](_0x345f21[_0x5aaa59])){return ami[_0x4043('0xb4')]({'action':_0x4043('0xb5'),'channel':_0x345f21[_0x5aaa59][_0x4043('0xb6')]})['catch'](function(_0x48e784){if(_0x48e784[_0x4043('0x48')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x345f21[_0x5aaa59]&&_0x345f21[_0x5aaa59][_0x4043('0x59')]!==_0x4043('0x85')){_0x2cb360[_0x4043('0xb7')](_0x2cb360[_0x4043('0x26')][_0x345f21[_0x5aaa59][_0x4043('0xb8')]]);logger[_0x4043('0xa0')](_0x4043('0xb9'),_0x485181,_0x5aaa59,_0x345f21[_0x5aaa59][_0x4043('0xb8')]);delete _0x345f21[_0x5aaa59];}if(_0x345f21[_0x5aaa59]&&_0x345f21[_0x5aaa59]['type']==='ivr'){_0x2cb360[_0x4043('0xb7')](_0x2cb360['campaigns'][_0x345f21[_0x5aaa59][_0x4043('0xb8')]]);logger['error'](_0x4043('0xba'),_0x485181,_0x5aaa59,_0x345f21[_0x5aaa59][_0x4043('0xb8')]);delete _0x345f21[_0x5aaa59];}},0x2328);}});}});}}};Dialer['prototype']['countReScheduled']=function(_0x11aa52){return BPromise[_0x4043('0xbb')]()[_0x4043('0x46')](cmHopper[_0x4043('0xbc')](_0x11aa52))[_0x4043('0xbd')](loggerCatch(_0x4043('0xbe')));};Dialer[_0x4043('0x20')][_0x4043('0xbf')]=function(_0x3bb8f9){return BPromise[_0x4043('0xbb')]()[_0x4043('0x46')](cmHopperBlack[_0x4043('0xbf')](_0x3bb8f9))[_0x4043('0xbd')](loggerCatch('[checkIsBlackList]\x20'));};Dialer[_0x4043('0x20')][_0x4043('0xc0')]=function(_0x7a962e,_0x93f7fb,_0x22ad4e){return BPromise[_0x4043('0xbb')]()[_0x4043('0x46')](cmHopperAdditionalPhone['verifyAdditionalPhones'](_0x7a962e,_0x93f7fb,_0x22ad4e))[_0x4043('0xbd')](loggerCatch(_0x4043('0xc1')));};Dialer['prototype']['swapAdditionalPhones']=function(_0x750938,_0x53b0ba,_0x3983bd){return BPromise[_0x4043('0xbb')]()['then'](cmHopperAdditionalPhone['swapAdditionalPhones'](_0x750938,_0x53b0ba,_0x3983bd))[_0x4043('0xbd')](loggerCatch(_0x4043('0xc2')));};Dialer['prototype'][_0x4043('0xc3')]=function(_0x3fb66b){return BPromise[_0x4043('0xbb')]()['then'](cmHopperBlack[_0x4043('0xc3')](_0x3fb66b))['catch'](loggerCatch('[checkIsBlackListIvr]\x20'));};Dialer[_0x4043('0x20')][_0x4043('0xc4')]=function(_0x4787bb){return BPromise[_0x4043('0xbb')]()[_0x4043('0x46')](cmHopperHistory[_0x4043('0xc5')](_0x4787bb))['catch'](loggerCatch(_0x4043('0xc6')));};Dialer['prototype']['rescheduleContact']=function(_0x4e9786){return BPromise['resolve']()[_0x4043('0x46')](cmHopper[_0x4043('0xc7')](_0x4e9786))[_0x4043('0xbd')](loggerCatch(_0x4043('0xc8')));};Dialer['prototype'][_0x4043('0xc9')]=function(_0x5d314a,_0x288804,_0x3ab48c){return BPromise[_0x4043('0xbb')]()[_0x4043('0x46')](cmHopper[_0x4043('0xc9')](_0x5d314a,_0x288804,_0x3ab48c))[_0x4043('0xbd')](loggerCatch(_0x4043('0xca')));};Dialer[_0x4043('0x20')][_0x4043('0xcb')]=function(_0x24cc04,_0x5df387,_0x17b903,_0x36c95f,_0x6b2929){return BPromise[_0x4043('0xbb')]()[_0x4043('0x46')](cmHopper[_0x4043('0xcb')](_0x24cc04,_0x5df387,_0x17b903,_0x36c95f))['catch'](function(_0x3c90cd){_0x6b2929['temp']-=_0x17b903;_0x6b2929[_0x4043('0xcc')]=_0x6b2929['temp']>0x0?_0x6b2929[_0x4043('0xcc')]:0x0;loggerCatch(_0x4043('0xcd'))(_0x3c90cd);});};Dialer['prototype'][_0x4043('0xce')]=function(_0x5951c5,_0x61a3c4,_0x1282d5,_0x46c969){return BPromise[_0x4043('0xbb')]()[_0x4043('0x46')](cmHopper[_0x4043('0xce')](_0x5951c5,_0x61a3c4,_0x1282d5))[_0x4043('0xbd')](function(_0xb4aa73){_0x46c969[_0x4043('0xcc')]-=_0x61a3c4;_0x46c969[_0x4043('0xcc')]=_0x46c969['temp']>0x0?_0x46c969[_0x4043('0xcc')]:0x0;loggerCatch('[getContactDialerIvr]\x20')(_0xb4aa73);});};Dialer[_0x4043('0x20')][_0x4043('0xcf')]=function(_0x18a630){return BPromise['resolve']()[_0x4043('0x46')](voiceQueueRt[_0x4043('0xcf')](_0x18a630))[_0x4043('0xbd')](loggerCatch(_0x4043('0xd0')));};Dialer[_0x4043('0x20')]['moveContactManagedDialer']=function(_0x2c3057){return BPromise[_0x4043('0xbb')]()['then'](cmHopper[_0x4043('0xd1')](_0x2c3057))[_0x4043('0xbd')](loggerCatch(_0x4043('0xd2')));};Dialer[_0x4043('0x20')][_0x4043('0xd3')]=function(_0x5e085c){return BPromise[_0x4043('0xbb')]()[_0x4043('0x46')](cmHopperHistory['createHistory'](_0x5e085c))['catch'](loggerCatch(_0x4043('0xd4')));};Dialer[_0x4043('0x20')][_0x4043('0xb7')]=function(_0x4ce4a6){if(!_[_0x4043('0x47')](_0x4ce4a6)&&_0x4ce4a6!==null){if(typeof _0x4ce4a6[_0x4043('0x7c')]!==_0x4043('0xa3')){if(_0x4ce4a6[_0x4043('0x7c')]>0x0){_0x4ce4a6['originated']-=0x1;}else{logger[_0x4043('0xa0')](_0x4043('0xd5'));}}}else{logger[_0x4043('0xa0')]('[updateOriginated]\x20is\x20null\x20or\x20undefined');}};Dialer[_0x4043('0x20')][_0x4043('0xd6')]=function(_0x333fe1,_0xc7ea52){var _0x458e1a=this;return function(_0x40c6a1){_0x458e1a[_0x4043('0xb7')](_0xc7ea52);logger[_0x4043('0xa0')](_0x333fe1,util[_0x4043('0x9f')](_0x40c6a1,{'showHidden':![],'depth':null}));};};Dialer[_0x4043('0x20')]['emptyContact']=function(_0x9d6553,_0x2044c0,_0x43abed){var _0x32d411={'state':0x19,'statedesc':'notFound'};this[_0x4043('0xb7')](_0x2044c0);this[_0x4043('0xd7')](_[_0x4043('0x96')](_0x32d411,_[_0x4043('0xd8')](_0x43abed,[_0x4043('0xd9'),'ListId','UserId',_0x4043('0xda'),'CampaignId'])),'[emptyContact][createHistory]','[emptyContact]');logger['error'](_0x9d6553);};Dialer[_0x4043('0x20')][_0x4043('0xdb')]=function(_0x5162e2){return _0x5162e2===_0x4043('0xdc');};Dialer[_0x4043('0x20')][_0x4043('0xdd')]=function(_0x1c31f9){return!_[_0x4043('0x47')](_0x1c31f9)&&_0x1c31f9&&!_[_0x4043('0x47')](_0x1c31f9[_0x4043('0x4a')])&&!_[_0x4043('0x47')](_0x1c31f9['active'])&&_0x1c31f9[_0x4043('0xde')]&&(this[_0x4043('0x29')][util[_0x4043('0x86')](_0x4043('0xdf'),_0x1c31f9['name'])][_0x4043('0xb5')]==='reachable'||this[_0x4043('0x29')][util['format'](_0x4043('0xdf'),_0x1c31f9[_0x4043('0x4a')])]['status']===_0x4043('0xe0'));};Dialer[_0x4043('0x20')]['saveInDb']=function(_0x326ac7,_0x3a5cd1,_0x14f4bc){this[_0x4043('0xd3')](_0x326ac7)[_0x4043('0xbd')](loggerCatch(_0x3a5cd1));this[_0x4043('0xd1')](_0x326ac7)[_0x4043('0xbd')](loggerCatch(_0x14f4bc));};Dialer[_0x4043('0x20')][_0x4043('0x40')]=function(_0x2be887){var _0x21b9ca=this[_0x4043('0x2e')][_0x2be887[_0x4043('0xe1')]];var _0x45571b;if(!_[_0x4043('0xb3')](_0x2be887)&&!_['isNil'](_0x2be887[_0x4043('0xe2')])&&!_[_0x4043('0xb3')](_0x2be887[_0x4043('0xe2')][_0x4043('0xe3')])&&_0x2be887[_0x4043('0xe4')]==='xcally-motion-dialer'&&_0x21b9ca){if(_0x21b9ca['type']!==_0x4043('0x85')&&this[_0x4043('0x26')][_0x21b9ca[_0x4043('0xb8')]]['dialAMDActive']&&_0x2be887['value']===_0x4043('0xe5')){delete this[_0x4043('0x2e')][_0x2be887[_0x4043('0xe1')]];this[_0x4043('0xb7')](this[_0x4043('0x26')][_0x21b9ca[_0x4043('0xb8')]]);this['voiceQueues'][_0x21b9ca[_0x4043('0xb8')]]['outboundAnswerCallsDay']+=0x1;this[_0x4043('0x26')][_0x21b9ca[_0x4043('0xb8')]][_0x4043('0x68')]+=0x1;_0x45571b=new Hangup(_0x21b9ca,_0x2be887);_0x45571b[_0x4043('0xe6')]=0x12;_0x45571b['statedesc']='HangupInAMD';_0x45571b[_0x4043('0xe7')]=_0x4043('0xe8');ami[_0x4043('0x58')](_0x4043('0xe9'),ut[_0x4043('0xea')](_0x45571b,'amd'));this['saveInDb'](_0x45571b,'[syncHangupInAMD][createHistory]','[syncHangupInAMD]');}if(_0x21b9ca[_0x4043('0x59')]!=='ivr'&&this[_0x4043('0x26')][_0x21b9ca[_0x4043('0xb8')]][_0x4043('0xeb')]&&_0x2be887[_0x4043('0xec')]===_0x4043('0xed')){var _0x2a70da=this;return new BPromise(function(_0x56070a,_0x4497ac){delete _0x2a70da[_0x4043('0x2e')][_0x2be887[_0x4043('0xe1')]];_0x2a70da[_0x4043('0xb7')](_0x2a70da[_0x4043('0x26')][_0x21b9ca['queue']]);_0x2a70da[_0x4043('0x26')][_0x21b9ca[_0x4043('0xb8')]]['outboundAnswerCallsDay']+=0x1;_0x2a70da[_0x4043('0x26')][_0x21b9ca[_0x4043('0xb8')]][_0x4043('0x68')]+=0x1;var _0xd9a31c=_0x2a70da[_0x4043('0x26')][_0x21b9ca[_0x4043('0xb8')]];var _0x29ac06=new Hangup(_0x21b9ca,_0x2be887);_0x29ac06['state']=0x13;_0x29ac06[_0x4043('0xee')]=_0x4043('0xef');_0x29ac06[_0x4043('0xe7')]=_0x4043('0xe8');_0x29ac06[_0x4043('0xf0')]+=0x1;_0x29ac06[_0x4043('0xf1')]+=0x1;_0x29ac06[_0x4043('0xf2')]=!![];ami[_0x4043('0x58')](_0x4043('0xe9'),ut[_0x4043('0xea')](_0x29ac06,_0x4043('0xf2')));_0x2a70da[_0x4043('0xd3')](_0x29ac06)[_0x4043('0xbd')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x29ac06[_0x4043('0xf3')]+_0x29ac06['countcongestionretry']+_0x29ac06[_0x4043('0xf4')]+_0x29ac06[_0x4043('0xf5')]+_0x29ac06[_0x4043('0xf6')]+_0x29ac06[_0x4043('0xf7')]+_0x29ac06[_0x4043('0xf0')]+_0x29ac06[_0x4043('0xf8')]>=_0xd9a31c[_0x4043('0xf9')]){_0x2a70da[_0x4043('0xfa')](_0x29ac06,_0x56070a,_0x4497ac,_0x4043('0xfb'));}else{if(_0x29ac06[_0x4043('0xf0')]>=_0xd9a31c[_0x4043('0xfc')]){_0x2a70da[_0x4043('0xfd')](_0x29ac06,_0x56070a,_0x4497ac,_0x4043('0xfe'));}else{_0x2a70da[_0x4043('0xc7')]({'active':![],'countmachineretry':_0x29ac06[_0x4043('0xf0')],'scheduledat':moment()[_0x4043('0xff')](_0xd9a31c[_0x4043('0x100')],_0x4043('0x101'))[_0x4043('0x86')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x29ac06[_0x4043('0xd9')],'ListId':_0x29ac06[_0x4043('0x102')],'VoiceQueueId':_0x29ac06['VoiceQueueId']||undefined,'CampaignId':_0x29ac06[_0x4043('0x103')]||undefined})['catch'](loggerCatch(_0x4043('0x104')));_0x56070a({'reschedule':0x1});}}});}if(_0x21b9ca['type']===_0x4043('0x85')&&this[_0x4043('0x27')][_0x21b9ca[_0x4043('0xb8')]]['dialAMDActive']&&_0x2be887[_0x4043('0xec')]==='HANGUP'){delete this[_0x4043('0x2e')][_0x2be887[_0x4043('0xe1')]];this[_0x4043('0xb7')](this[_0x4043('0x27')][_0x21b9ca['queue']]);_0x45571b=new Hangup(_0x21b9ca,_0x2be887);_0x45571b[_0x4043('0xe6')]=0x12;_0x45571b[_0x4043('0xee')]='HangupInAMD';_0x45571b[_0x4043('0xe7')]=_0x4043('0xe8');ami[_0x4043('0x58')](_0x4043('0xe9'),ut[_0x4043('0xea')](_0x45571b,_0x4043('0xf2')));this[_0x4043('0xd7')](_0x45571b,_0x4043('0x105'),_0x4043('0x106'));}if(_0x21b9ca[_0x4043('0x59')]==='ivr'&&this[_0x4043('0x27')][_0x21b9ca[_0x4043('0xb8')]][_0x4043('0xeb')]&&_0x2be887[_0x4043('0xec')]===_0x4043('0xed')){var _0x2a70da=this;return new BPromise(function(_0x477b68,_0x63cf17){delete _0x2a70da[_0x4043('0x2e')][_0x2be887[_0x4043('0xe1')]];_0x2a70da[_0x4043('0xb7')](_0x2a70da['campaigns'][_0x21b9ca[_0x4043('0xb8')]]);_0x2a70da[_0x4043('0x27')][_0x21b9ca['queue']][_0x4043('0x69')]+=0x1;_0x2a70da[_0x4043('0x27')][_0x21b9ca[_0x4043('0xb8')]][_0x4043('0x68')]+=0x1;var _0x38c1f2=_0x2a70da[_0x4043('0x27')][_0x21b9ca[_0x4043('0xb8')]];var _0x1e29d4=new Hangup(_0x21b9ca,_0x2be887);_0x1e29d4[_0x4043('0xe6')]=0x13;_0x1e29d4['statedesc']=_0x4043('0xef');_0x1e29d4[_0x4043('0xe7')]='AMD';_0x1e29d4[_0x4043('0xf0')]+=0x1;_0x1e29d4[_0x4043('0xf1')]+=0x1;_0x1e29d4[_0x4043('0xf2')]=!![];ami[_0x4043('0x58')](_0x4043('0xe9'),ut[_0x4043('0xea')](_0x1e29d4,_0x4043('0xf2')));_0x2a70da[_0x4043('0xd3')](_0x1e29d4)[_0x4043('0xbd')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x1e29d4['countbusyretry']+_0x1e29d4[_0x4043('0x107')]+_0x1e29d4[_0x4043('0xf4')]+_0x1e29d4[_0x4043('0xf5')]+_0x1e29d4[_0x4043('0xf6')]+_0x1e29d4[_0x4043('0xf7')]+_0x1e29d4[_0x4043('0xf0')]+_0x1e29d4[_0x4043('0xf8')]>=_0x38c1f2[_0x4043('0xf9')]){_0x2a70da[_0x4043('0xfa')](_0x1e29d4,_0x477b68,_0x63cf17,'reason19\x20machine....');}else{if(_0x1e29d4[_0x4043('0xf0')]>=_0x38c1f2[_0x4043('0xfc')]){_0x2a70da['createStateFinal'](_0x1e29d4,_0x477b68,_0x63cf17,'reason\x2019\x20machine....');}else{_0x2a70da[_0x4043('0xc7')]({'active':![],'countmachineretry':_0x1e29d4['countmachineretry'],'scheduledat':moment()['add'](_0x38c1f2['dialMachineRetryFrequency'],'minutes')['format'](_0x4043('0x108')),'ContactId':_0x1e29d4[_0x4043('0xd9')],'ListId':_0x1e29d4[_0x4043('0x102')],'VoiceQueueId':_0x1e29d4['VoiceQueueId']||undefined,'CampaignId':_0x1e29d4[_0x4043('0x103')]||undefined})[_0x4043('0xbd')](loggerCatch(_0x4043('0x104')));_0x477b68({'reschedule':0x1});}}});}}};Dialer[_0x4043('0x20')][_0x4043('0x109')]=function(_0x1d3cc9){var _0x2f10f1=this[_0x4043('0x2e')][_0x1d3cc9[_0x4043('0xe1')]];var _0x7ae4e2=this;var _0x37749e;if(_0x2f10f1&&_0x2f10f1[_0x4043('0x59')]==='ivr'){delete this['uniqueId'][_0x1d3cc9[_0x4043('0xe1')]];this['updateOriginated'](this[_0x4043('0x27')][_0x2f10f1[_0x4043('0xb8')]]);this[_0x4043('0x27')][_0x2f10f1[_0x4043('0xb8')]][_0x4043('0x10a')]+=0x1;_0x37749e=new Hangup(_0x2f10f1,_0x1d3cc9);this['createHistory'](_0x37749e)[_0x4043('0xbd')](loggerCatch(_0x4043('0x10b')));this['moveContactManagedDialer'](_0x37749e)['catch'](loggerCatch(_0x4043('0x10c')));}if(_0x2f10f1&&_0x2f10f1['type']!==_0x4043('0x85')&&isNotNull(this['voiceQueues'][_0x2f10f1['queue']][_0x4043('0x10d')])){delete this[_0x4043('0x2e')][_0x1d3cc9[_0x4043('0xe1')]];this[_0x4043('0xb7')](this['voiceQueues'][_0x2f10f1['queue']]);this[_0x4043('0x26')][_0x2f10f1['queue']][_0x4043('0x69')]+=0x1;this[_0x4043('0x26')][_0x2f10f1[_0x4043('0xb8')]][_0x4043('0x68')]+=0x1;_0x37749e=new Hangup(_0x2f10f1,_0x1d3cc9);_0x37749e[_0x4043('0xe6')]=0x10;_0x37749e[_0x4043('0xee')]=_0x4043('0x10e');_0x37749e[_0x4043('0xe7')]='AGI';this[_0x4043('0xd3')](_0x37749e)[_0x4043('0xbd')](loggerCatch(_0x4043('0x10b')));this[_0x4043('0xd1')](_0x37749e)['catch'](loggerCatch(_0x4043('0x10c')));}if(_0x2f10f1&&_0x2f10f1[_0x4043('0x59')]!=='ivr'&&!isNotNull(this[_0x4043('0x26')][_0x2f10f1[_0x4043('0xb8')]][_0x4043('0x10d')])){delete this[_0x4043('0x2e')][_0x1d3cc9[_0x4043('0xe1')]];this[_0x4043('0xb7')](this['voiceQueues'][_0x2f10f1['queue']]);this['voiceQueues'][_0x2f10f1['queue']]['outboundUnknownCallsDay']+=0x1;_0x37749e=new Hangup(_0x2f10f1,_0x1d3cc9);_0x37749e[_0x4043('0xe6')]=0xc;_0x37749e['statedesc']=_0x1d3cc9['cause-txt'];_0x37749e[_0x4043('0xe7')]='Unknow';this[_0x4043('0xd3')](_0x37749e)['catch'](loggerCatch(_0x4043('0x10b')));this[_0x4043('0xd1')](_0x37749e)[_0x4043('0xbd')](loggerCatch(_0x4043('0x10c')));}};Dialer[_0x4043('0x20')][_0x4043('0x39')]=function(_0x2a1a65){var _0x1972dd=this[_0x4043('0x2e')][_0x2a1a65['uniqueid']];var _0x50199f=this;if(this[_0x4043('0x26')][_0x2a1a65[_0x4043('0xb8')]]){if(_0x1972dd&&_0x1972dd[_0x4043('0x59')]!==_0x4043('0x85')){delete this[_0x4043('0x2e')][_0x2a1a65[_0x4043('0xe1')]];this[_0x4043('0x26')][_0x2a1a65[_0x4043('0xb8')]][_0x4043('0x69')]+=0x1;var _0x18cb8b=new AgentComplete(_0x1972dd,_0x2a1a65);if(_0x2a1a65['reason']===_0x4043('0x10f')){_0x18cb8b[_0x4043('0x110')]=this[_0x4043('0x26')][_0x2a1a65[_0x4043('0xb8')]][_0x4043('0x111')]&&this[_0x4043('0x26')][_0x2a1a65[_0x4043('0xb8')]][_0x4043('0x112')]?moment()['format'](_0x4043('0x108')):undefined;}this[_0x4043('0xd3')](_0x18cb8b)[_0x4043('0xbd')](loggerCatch(_0x4043('0x113')));this['moveContactManagedDialer'](_0x18cb8b)[_0x4043('0xbd')](loggerCatch(_0x4043('0x114')));}}};Dialer[_0x4043('0x20')][_0x4043('0x115')]=function(_0xb20262){if(this[_0x4043('0x26')][_0xb20262[_0x4043('0xb8')]]){if(this[_0x4043('0x2e')][_0xb20262[_0x4043('0xe1')]]&&this[_0x4043('0x2e')][_0xb20262['uniqueid']][_0x4043('0x59')]!==_0x4043('0x85')){this[_0x4043('0xb7')](this[_0x4043('0x26')][_0xb20262['queue']]);this[_0x4043('0x2e')][_0xb20262[_0x4043('0xe1')]][_0x4043('0x116')]=moment()[_0x4043('0x86')](_0x4043('0x108'));}}};Dialer[_0x4043('0x20')][_0x4043('0x117')]=function(_0x71c383,_0x8c09ae){this['createHistory'](_0x71c383)['catch'](loggerCatch('[syncAgentComplete][createHistory]'));if(_0x8c09ae==0x0){this['moveContactManagedDialer'](_0x71c383)[_0x4043('0xbd')](loggerCatch(_0x4043('0x118')));}};Dialer[_0x4043('0x20')][_0x4043('0x34')]=function(_0x133a32){var _0x2019e3=this[_0x4043('0x2e')][_0x133a32[_0x4043('0xe1')]];var _0x291d2e=this;var _0x4c79a3=![];var _0x3a5c4f;var _0x36ca15;if(this[_0x4043('0x26')][_0x133a32['queue']]){if(_0x2019e3&&_0x2019e3['type']!==_0x4043('0x85')){delete this[_0x4043('0x2e')][_0x133a32[_0x4043('0xe1')]];this[_0x4043('0xb7')](this[_0x4043('0x26')][_0x133a32[_0x4043('0xb8')]]);_0x2019e3[_0x4043('0x119')]=moment()[_0x4043('0x86')](_0x4043('0x108'));var _0x395f07=new QueueCallerAbandon(_0x2019e3,_0x133a32);if(getSeconds(_0x2019e3[_0x4043('0x119')],_0x2019e3[_0x4043('0x11a')])>=_0x2019e3[_0x4043('0x11b')]){this['voiceQueues'][_0x133a32['queue']][_0x4043('0x75')]+=0x1;this['voiceQueues'][_0x133a32[_0x4043('0xb8')]][_0x4043('0x6e')]+=0x1;this[_0x4043('0x26')][_0x133a32[_0x4043('0xb8')]][_0x4043('0x77')]+=0x1;_0x395f07['state']=0xa;_0x395f07[_0x4043('0xee')]=_0x4043('0x11c');_0x395f07['dropreason']=_0x4043('0x11d');_0x395f07[_0x4043('0x110')]=this[_0x4043('0x26')][_0x133a32['queue']]['dialQueueProject2']?moment()['format'](_0x4043('0x108')):undefined;_0x395f07[_0x4043('0xf6')]+=0x1;_0x395f07['countglobal']+=0x1;_0x3a5c4f=this[_0x4043('0x26')][_0x133a32['queue']][_0x4043('0x11e')];_0x36ca15=this[_0x4043('0x26')][_0x133a32[_0x4043('0xb8')]][_0x4043('0x11f')];_0x291d2e['verifyAdditionalPhones'](_0x395f07,_0x395f07[_0x4043('0xe6')],_0x2019e3['voiceQueue'])['then'](function(_0x15e2cc){_0x4c79a3=_0x15e2cc[_0x4043('0x120')]==0x1;if(_0x395f07[_0x4043('0xf6')]>=_0x291d2e[_0x4043('0x26')][_0x133a32[_0x4043('0xb8')]][_0x4043('0x121')]){_0x291d2e[_0x4043('0x117')](_0x395f07,_0x15e2cc[_0x4043('0x120')]);}else{_0x291d2e[_0x4043('0xc7')]({'active':![],'countdropretry':_0x395f07['countdropretry'],'scheduledat':moment()[_0x4043('0xff')](_0x291d2e[_0x4043('0x26')][_0x133a32[_0x4043('0xb8')]]['dialDropRetryFrequency'],_0x4043('0x101'))[_0x4043('0x86')](_0x4043('0x108')),'ContactId':_0x2019e3[_0x4043('0xd9')],'ListId':_0x2019e3[_0x4043('0x102')],'VoiceQueueId':_0x2019e3[_0x4043('0xda')]||undefined,'CampaignId':_0x2019e3[_0x4043('0x103')]||undefined})['catch'](loggerCatch(_0x4043('0x122')));var _0x1b40ca=new History(_0x395f07);_0x1b40ca['state']=0xa;_0x1b40ca[_0x4043('0xee')]=_0x4043('0x11c');_0x1b40ca[_0x4043('0xaf')]=moment()[_0x4043('0x86')]('YYYY-MM-DD\x20HH:mm:ss');_0x1b40ca[_0x4043('0xae')]=_0x1b40ca[_0x4043('0xaf')];_0x1b40ca[_0x4043('0x123')]=_0x395f07[_0x4043('0x123')];_0x1b40ca[_0x4043('0x124')]=_0x395f07['calleridnum'];_0x291d2e[_0x4043('0xd3')](_0x1b40ca)[_0x4043('0xbd')](loggerCatch(_0x4043('0x125')));}})['then'](function(_0xe03f35){if(_0x4c79a3)_0x291d2e[_0x4043('0x126')](_0x395f07,_0x3a5c4f,_0x36ca15)['then'](function(_0xfd9865){return 0x1;});});}else{this[_0x4043('0x26')][_0x133a32[_0x4043('0xb8')]]['predictiveIntervalDroppedCallsCallersExit']+=0x1;this[_0x4043('0x26')][_0x133a32[_0x4043('0xb8')]]['outboundDropCallsDayCallersExit']+=0x1;_0x395f07['state']=0xb;_0x395f07[_0x4043('0xee')]=_0x4043('0x127');_0x395f07['dropreason']=_0x4043('0x128');_0x395f07[_0x4043('0xf7')]+=0x1;_0x395f07['countglobal']+=0x1;_0x3a5c4f=this[_0x4043('0x26')][_0x133a32[_0x4043('0xb8')]][_0x4043('0x129')];_0x36ca15=this[_0x4043('0x26')][_0x133a32[_0x4043('0xb8')]][_0x4043('0x11f')];_0x291d2e[_0x4043('0xc0')](_0x395f07,_0x395f07[_0x4043('0xe6')],_0x2019e3[_0x4043('0x12a')])[_0x4043('0x46')](function(_0x145077){if(_0x395f07[_0x4043('0xf7')]>=_0x291d2e[_0x4043('0x26')][_0x133a32[_0x4043('0xb8')]][_0x4043('0x12b')]){_0x291d2e['queueCallerAbandonCreateState'](_0x395f07,_0x145077['additional']);}else{_0x291d2e['rescheduleContact']({'active':![],'countabandonedretry':_0x395f07[_0x4043('0xf7')],'scheduledat':moment()[_0x4043('0xff')](_0x291d2e[_0x4043('0x26')][_0x133a32['queue']][_0x4043('0x129')],_0x4043('0x101'))[_0x4043('0x86')](_0x4043('0x108')),'ContactId':_0x2019e3[_0x4043('0xd9')],'ListId':_0x2019e3[_0x4043('0x102')],'VoiceQueueId':_0x2019e3['VoiceQueueId']||undefined,'CampaignId':_0x2019e3['CampaignId']||undefined})[_0x4043('0xbd')](loggerCatch('[rescheduleContact][Abandoned]'));var _0x20e2cd=new History(_0x395f07);_0x20e2cd[_0x4043('0xe6')]=0xb;_0x20e2cd[_0x4043('0xee')]=_0x4043('0x127');_0x20e2cd[_0x4043('0xaf')]=moment()[_0x4043('0x86')](_0x4043('0x108'));_0x20e2cd[_0x4043('0xae')]=_0x20e2cd[_0x4043('0xaf')];_0x20e2cd[_0x4043('0x123')]=_0x395f07[_0x4043('0x123')];_0x20e2cd[_0x4043('0x124')]=_0x395f07['calleridnum'];_0x291d2e['createHistory'](_0x20e2cd)[_0x4043('0xbd')](loggerCatch('[syncAgentComplete][createHistory][11]'));}})[_0x4043('0x46')](function(_0x22b512){if(_0x4c79a3)_0x291d2e[_0x4043('0x126')](_0x395f07,_0x3a5c4f,_0x36ca15)['then'](function(_0x183974){return 0x1;});});}}}};Dialer[_0x4043('0x20')][_0x4043('0x3e')]=function(_0x3ad489){if(this[_0x4043('0x2c')][_0x3ad489[_0x4043('0xe1')]]){this['actions'][_0x3ad489[_0x4043('0xe1')]]['channel']=_0x3ad489[_0x4043('0xb6')];}if(this[_0x4043('0x2e')][_0x3ad489[_0x4043('0xe1')]]){this[_0x4043('0x2e')][_0x3ad489[_0x4043('0xe1')]][_0x4043('0xb6')]=_0x3ad489['channel'];}};Dialer[_0x4043('0x20')][_0x4043('0x12c')]=function(_0x453897){if(strategy[this[_0x4043('0x26')][this['actions'][_0x453897['actionid']][_0x4043('0xb8')]][_0x4043('0x5b')]]===_0x4043('0x1f')){if(this[_0x4043('0x2c')][_0x453897['actionid']]&&_[_0x4043('0xb3')](this[_0x4043('0x2c')][_0x453897[_0x4043('0x12d')]][_0x4043('0x12e')])&&_0x453897['status']==='1'&&_0x453897[_0x4043('0x12f')]==='0'){if(this[_0x4043('0x28')][_0x453897['stateinterface']]){if(!this['agents'][_0x453897[_0x4043('0x130')]][_0x4043('0x12e')]){this[_0x4043('0x28')][_0x453897[_0x4043('0x130')]][_0x4043('0x12e')]=!![];this['actions'][_0x453897[_0x4043('0x12d')]][_0x4043('0x12e')]=!![];this['actions'][_0x453897[_0x4043('0x12d')]][_0x4043('0x130')]=_0x453897[_0x4043('0x130')];}}}}else if((strategy[this['voiceQueues'][this['actions'][_0x453897[_0x4043('0x12d')]][_0x4043('0xb8')]]['strategy']]||'rrmemory')==='rrmemory'){if(this[_0x4043('0x2c')][_0x453897[_0x4043('0x12d')]]){if(this[_0x4043('0x28')][_0x453897[_0x4043('0x130')]]){this[_0x4043('0x2c')][_0x453897['actionid']][_0x4043('0x130')]=_0x453897[_0x4043('0x130')];if(_[_0x4043('0xb3')](this[_0x4043('0x131')][this[_0x4043('0x2c')][_0x453897[_0x4043('0x12d')]][_0x4043('0xb8')]])){this[_0x4043('0x131')][this['actions'][_0x453897[_0x4043('0x12d')]][_0x4043('0xb8')]]=[];}this[_0x4043('0x131')][this[_0x4043('0x2c')][_0x453897[_0x4043('0x12d')]][_0x4043('0xb8')]]['push'](_[_0x4043('0x96')](_['pick'](this['actions'][_0x453897['actionid']],[_0x4043('0x132'),_0x4043('0x130')]),{'status':_0x453897[_0x4043('0xb5')],'paused':_0x453897[_0x4043('0x12f')]}));}}}};function unlockQueueStatus(_0x4186f3,_0x3957af){setTimeout(function(){if(_[_0x4043('0x47')](_0x4186f3[_0x4043('0x133')])){loggerBooked[_0x4043('0xa0')](_0x4043('0x134'),_0x3957af);}_0x4186f3['queueStatusComplete']=!![];loggerBooked[_0x4043('0x89')]('[booked][unlockQueueStatus]',_0x3957af,JSON[_0x4043('0x55')](_['pick'](_0x4186f3,['name','queueStatusComplete'])));},0x1f3);}Dialer['prototype']['syncQueueStatusComplete']=function(_0x49536c){var _0xaf54ce=this;var _0x2712bb=_0xaf54ce[_0x4043('0x26')][_0xaf54ce[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]][_0x4043('0xb8')]];if(strategy[this[_0x4043('0x26')][this[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]][_0x4043('0xb8')]]['strategy']]===_0x4043('0x1f')){if(this['actions'][_0x49536c[_0x4043('0x12d')]]&&this[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]][_0x4043('0x130')]){this[_0x4043('0x25')][_0x4043('0x135')](this[_0x4043('0x2c')][_0x49536c['actionid']]['idHopper'],this[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]][_0x4043('0x130')])['catch'](function(_0x3f8041){logger[_0x4043('0xa0')](_0x4043('0x136'),util['inspect'](_0x3f8041,{'showHidden':![],'depth':null}));})[_0x4043('0x23')](function(){_0xaf54ce[_0x4043('0xb7')](_0xaf54ce['voiceQueues'][_0xaf54ce['actions'][_0x49536c[_0x4043('0x12d')]][_0x4043('0xb8')]]);_0xaf54ce['agents'][_0xaf54ce[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]][_0x4043('0x130')]]['locked']=![];delete _0xaf54ce[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]];unlockQueueStatus(_0x2712bb);});}else{this['updateOriginated'](this[_0x4043('0x26')][this[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]][_0x4043('0xb8')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]]['ContactId'],'ListId':this[_0x4043('0x2c')][_0x49536c['actionid']][_0x4043('0x102')],'VoiceQueueId':this[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]][_0x4043('0xda')]||undefined,'CampaignId':this['actions'][_0x49536c['actionid']][_0x4043('0x103')]||undefined})[_0x4043('0xbd')](loggerCatch(_0x4043('0x137')));delete this[_0x4043('0x2c')][_0x49536c['actionid']];unlockQueueStatus(_0x2712bb);}}else if((strategy[this[_0x4043('0x26')][this[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]]['queue']]['strategy']]||_0x4043('0x1e'))==='rrmemory'){var _0x726ff4;if(this[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]]&&!_[_0x4043('0x52')](this[_0x4043('0x131')][this[_0x4043('0x2c')][_0x49536c['actionid']]['queue']])){if(this[_0x4043('0x138')][_0xaf54ce[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]]['queue']]){this[_0x4043('0x138')][_0xaf54ce['actions'][_0x49536c[_0x4043('0x12d')]]['queue']]=this[_0x4043('0x138')][this['actions'][_0x49536c[_0x4043('0x12d')]][_0x4043('0xb8')]]?this[_0x4043('0x138')][this[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]][_0x4043('0xb8')]]:this[_0x4043('0x131')][this[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]][_0x4043('0xb8')]]?this[_0x4043('0x131')][this[_0x4043('0x2c')][_0x49536c['actionid']]['queue']][_0x4043('0x139')]||0x0:0x0;}this[_0x4043('0x131')][this[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]]['queue']][_0x4043('0x139')]=this[_0x4043('0x138')][this[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]][_0x4043('0xb8')]];for(var _0x3289bd=0x0;_0x3289bd<this[_0x4043('0x131')][this[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]][_0x4043('0xb8')]][_0x4043('0xa2')];_0x3289bd+=0x1){_0x726ff4=rr(this[_0x4043('0x131')][this[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]][_0x4043('0xb8')]]);this['queueBookedRR'][_0xaf54ce['actions'][_0x49536c[_0x4043('0x12d')]][_0x4043('0xb8')]]=this[_0x4043('0x131')][this[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]][_0x4043('0xb8')]]['_rr'];if(_0x726ff4[_0x4043('0xb5')]==='1'&&_0x726ff4['paused']==='0'){break;}}if(!_[_0x4043('0xb3')](_0x726ff4)){this[_0x4043('0x28')][_0x726ff4['stateinterface']]['unlockRR']=_[_0x4043('0x47')](this[_0x4043('0x28')][_0x726ff4[_0x4043('0x130')]][_0x4043('0x13a')])?!![]:this[_0x4043('0x28')][_0x726ff4[_0x4043('0x130')]][_0x4043('0x13a')];}loggerBooked['info'](_0x4043('0x13b'),_0x49536c[_0x4043('0x12d')],'Agent:\x20',JSON[_0x4043('0x55')](_[_0x4043('0xd8')](this[_0x4043('0x28')][_0x726ff4[_0x4043('0x130')]],[_0x4043('0x4a'),_0x4043('0x13a')])),_0x4043('0x13c'),JSON[_0x4043('0x55')](_0x726ff4[_0x4043('0x132')]));if(!_[_0x4043('0xb3')](_0x726ff4)&&_0x726ff4[_0x4043('0xb5')]==='1'&&_0x726ff4[_0x4043('0x12f')]==='0'&&this['agents'][_0x726ff4[_0x4043('0x130')]][_0x4043('0x13a')]){this['agents'][_0x726ff4[_0x4043('0x130')]][_0x4043('0x13a')]=![];this['queueBooked'][_0xaf54ce[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]][_0x4043('0xb8')]]=[];this[_0x4043('0x25')][_0x4043('0x135')](_0x726ff4[_0x4043('0x132')],_0x726ff4[_0x4043('0x130')])[_0x4043('0xbd')](function(_0x114a75){logger[_0x4043('0xa0')]('[Catch][Preview][syncQueueStatusComplete]',util[_0x4043('0x9f')](_0x114a75,{'showHidden':![],'depth':null}));})[_0x4043('0x23')](function(){_0xaf54ce[_0x4043('0xb7')](_0xaf54ce['voiceQueues'][_0xaf54ce['actions'][_0x49536c[_0x4043('0x12d')]][_0x4043('0xb8')]]);setTimeout(function(){_0xaf54ce['agents'][_0x726ff4[_0x4043('0x130')]][_0x4043('0x13a')]=!![];loggerBooked[_0x4043('0x89')](_0x4043('0x13d'),_0x49536c[_0x4043('0x12d')],'Agent:\x20',JSON['stringify'](_[_0x4043('0xd8')](_0xaf54ce[_0x4043('0x28')][_0x726ff4[_0x4043('0x130')]],[_0x4043('0x4a'),_0x4043('0x13a')])),_0x4043('0x13c'),JSON[_0x4043('0x55')](_0x726ff4['idHopper']));},0xc7);delete _0xaf54ce['actions'][_0x49536c[_0x4043('0x12d')]];unlockQueueStatus(_0x2712bb,_0x49536c[_0x4043('0x12d')]);});}else{loggerBooked[_0x4043('0x89')](_0x4043('0x13e'));this[_0x4043('0xb7')](this[_0x4043('0x26')][this[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]][_0x4043('0xb8')]]);this[_0x4043('0xc7')]({'active':![],'ContactId':this[_0x4043('0x2c')][_0x49536c['actionid']]['ContactId'],'ListId':this[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]][_0x4043('0x102')],'VoiceQueueId':this['actions'][_0x49536c['actionid']][_0x4043('0xda')]||undefined,'CampaignId':this[_0x4043('0x2c')][_0x49536c['actionid']][_0x4043('0x103')]||undefined})[_0x4043('0xbd')](loggerCatch(_0x4043('0x137')));delete this[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]];unlockQueueStatus(_0x2712bb);}}else{loggerBooked['info']('[booked][unlock2]');this[_0x4043('0xb7')](this[_0x4043('0x26')][this['actions'][_0x49536c[_0x4043('0x12d')]][_0x4043('0xb8')]]);this[_0x4043('0xc7')]({'active':![],'ContactId':this[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]][_0x4043('0xd9')],'ListId':this[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]]['ListId'],'VoiceQueueId':this[_0x4043('0x2c')][_0x49536c['actionid']][_0x4043('0xda')]||undefined,'CampaignId':this[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]]['CampaignId']||undefined})[_0x4043('0xbd')](loggerCatch('[unlock2][syncQueueStatusComplete]'));delete this[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]];unlockQueueStatus(_0x2712bb);}}else{loggerBooked[_0x4043('0x89')](_0x4043('0x13f'));this[_0x4043('0xb7')](this[_0x4043('0x26')][this[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]][_0x4043('0xb8')]]);this[_0x4043('0xc7')]({'active':![],'ContactId':this['actions'][_0x49536c[_0x4043('0x12d')]][_0x4043('0xd9')],'ListId':this['actions'][_0x49536c[_0x4043('0x12d')]][_0x4043('0x102')],'VoiceQueueId':this[_0x4043('0x2c')][_0x49536c['actionid']][_0x4043('0xda')]||undefined,'CampaignId':this[_0x4043('0x2c')][_0x49536c[_0x4043('0x12d')]][_0x4043('0x103')]||undefined})[_0x4043('0xbd')](loggerCatch(_0x4043('0x140')));delete this[_0x4043('0x2c')][_0x49536c['actionid']];unlockQueueStatus(_0x2712bb);}};Dialer[_0x4043('0x20')][_0x4043('0x44')]=function(){var _0x341071=this;return BPromise[_0x4043('0xbb')]()['then'](cmHopper[_0x4043('0x141')]({}))[_0x4043('0x46')](function(){setInterval(function(){_0x341071[_0x4043('0x142')]();},0x3e8);});};Dialer['prototype'][_0x4043('0x143')]=function(_0x53aad7){var _0x447604=this;return function(){if(!_0x447604[_0x4043('0xdd')](_0x53aad7['Trunk'])){if(!_0x447604['isTrunkReachable'](_0x53aad7[_0x4043('0x144')])){_0x53aad7[_0x4043('0x48')]=_0x4043('0x145');throw _0x53aad7['name']+_0x4043('0x146');}}};};Dialer['prototype'][_0x4043('0x147')]=function(_0x33813c,_0x13e7a5,_0x54289d,_0x2c007d){var _0x4a4d27=this;return function(){var _0x21f551=!![];return _0x4a4d27['ifTime'](_0x33813c,_0x13e7a5,_0x54289d,_0x2c007d,_0x21f551);};};Dialer[_0x4043('0x20')][_0x4043('0x148')]=function(_0x4ad0a9,_0x3495c9,_0x348198,_0x3a232f){var _0x1e3853=this;return function(){var _0x3a55e4=![];return _0x1e3853[_0x4043('0x149')](_0x4ad0a9[_0x4043('0x50')],_0x3495c9,_0x348198,_0x3a232f,_0x3a55e4);};};Dialer['prototype']['ifTime']=function(_0x828785,_0x3b76f3,_0x336560,_0x1d10f2,_0x2abdfe){var _0x1b590d=[];return new BPromise(function(_0x1f8f10,_0x253a34){if(!isNotNull(_0x828785)){_0x1d10f2[_0x4043('0x48')]=_0x4043('0x51');return _0x253a34(msgResponse(_0x4043('0x149'),_0x4043('0x14a'),_0x336560+_0x4043('0x14b')));}if(_[_0x4043('0x52')](_0x828785)){_0x1d10f2[_0x4043('0x48')]=_0x4043('0x14c');return _0x253a34(msgResponse(_0x4043('0x149'),'Failure',_0x336560+_0x4043('0x14d')));}if(_0x3b76f3&&_['isUndefined'](config[_0x4043('0x14e')][_0x3b76f3])){_0x1d10f2[_0x4043('0x48')]='TIMEZONE_UNKNOW';return _0x253a34(msgResponse(_0x4043('0x149'),'Failure',_0x336560+_0x4043('0x14f')+_0x3b76f3));}if(_[_0x4043('0x150')](_0x828785)){for(var _0x1c1b4c=0x0;_0x1c1b4c<_0x828785[_0x4043('0xa2')];_0x1c1b4c+=0x1){_0x1b590d[_0x4043('0x151')](ami[_0x4043('0xb4')]({'action':_0x4043('0x152'),'command':util[_0x4043('0x86')]('iftime\x20%s,%s',_0x828785[_0x1c1b4c][_0x4043('0x153')],!_[_0x4043('0x47')](config[_0x4043('0x14e')][_0x3b76f3])?_0x3b76f3:'')})[_0x4043('0x46')](function(_0x4248bd){return _0x4248bd[_0x4043('0x154')][_0x4043('0x155')](_0x4043('0x156'))>=0x0;})[_0x4043('0xbd')](myreject(_0x253a34)));}}else{_0x1b590d[_0x4043('0x151')](ami[_0x4043('0xb4')]({'action':_0x4043('0x152'),'command':util['format']('iftime\x20%s,%s',_0x828785,!_[_0x4043('0x47')](config[_0x4043('0x14e')][_0x3b76f3])?_0x3b76f3:'')})[_0x4043('0x46')](function(_0x12bc11){return _0x12bc11[_0x4043('0x154')][_0x4043('0x155')](_0x4043('0x156'))>=0x0;})[_0x4043('0xbd')](myreject(_0x253a34)));}BPromise[_0x4043('0x157')](_0x1b590d)[_0x4043('0x46')](function(_0xe13b3e){var _0x1281f4=_[_0x4043('0x158')](_0xe13b3e);if(_0x1281f4){return _0x1f8f10(_0x1281f4);}else{_0x1d10f2[_0x4043('0x48')]=_0x2abdfe?_0x4043('0x159'):'INTERVAL_IS_OVERTIME';return _0x253a34(msgResponse(_0x4043('0x15a'),_0x4043('0x14a'),'Global:\x20'+_0x2abdfe+'\x20'+_0x336560+_0x4043('0x15b')+util[_0x4043('0x9f')](_0x828785,{'showHidden':![],'depth':null})+_0x4043('0x15c')+_0x3b76f3));}})[_0x4043('0xbd')](function(_0x3a5df4){return _0x253a34(msgResponse(_0x4043('0x149'),_0x4043('0x14a'),JSON[_0x4043('0x55')](_0x3a5df4)));});});};Dialer[_0x4043('0x20')][_0x4043('0x15d')]=function(_0x3bb498){var _0x411c07=this;return function(){switch(_0x3bb498[_0x4043('0x63')]){case'progressive':freeVariablesPredictive(_0x3bb498);_0x411c07[_0x4043('0x15e')](_0x3bb498,0x1);break;case'power':freeVariablesPredictive(_0x3bb498);_0x411c07[_0x4043('0x15e')](_0x3bb498,_0x3bb498[_0x4043('0x15f')]);break;case _0x4043('0xa'):_0x411c07[_0x4043('0xa')](_0x3bb498);break;case _0x4043('0x9'):freeVariablesPredictive(_0x3bb498);_0x411c07[_0x4043('0x15e')](_0x3bb498,0x1);break;default:freeVariablesPredictive(_0x3bb498);logger[_0x4043('0xa0')](_0x4043('0x160'),_0x3bb498[_0x4043('0x4a')],_0x4043('0x161'));}};};Dialer[_0x4043('0x20')][_0x4043('0x162')]=function(_0x5eeb80){var _0x50f77a=this;return function(){_0x50f77a[_0x4043('0x163')](_0x5eeb80);};};Dialer[_0x4043('0x20')][_0x4043('0xb')]=function(_0x23c09a){var _0x2ae993=this;if(isNotPreview(_0x23c09a[_0x4043('0x63')])){if(isVoiceQueueOutbound(_0x23c09a[_0x4043('0x59')])&&isActive(_0x23c09a[_0x4043('0x164')])){_0x23c09a[_0x4043('0xac')]=!![];BPromise['resolve']()[_0x4043('0x46')](checkIsLoggedIn(_0x23c09a,_0x23c09a['loggedIn']))[_0x4043('0x46')](checkIsActive(_0x23c09a,_0x23c09a['dialActive']))[_0x4043('0x46')](checkInterval(_0x23c09a))[_0x4043('0x46')](_0x2ae993[_0x4043('0x143')](_0x23c09a))[_0x4043('0x46')](_0x2ae993[_0x4043('0x147')](_0x23c09a[_0x4043('0x165')],_0x23c09a[_0x4043('0x166')],_0x23c09a[_0x4043('0x4a')],_0x23c09a))[_0x4043('0x46')](_0x2ae993[_0x4043('0x148')](_0x23c09a[_0x4043('0x4e')],_0x23c09a[_0x4043('0x166')],_0x23c09a['name'],_0x23c09a))[_0x4043('0x46')](_0x2ae993[_0x4043('0x15d')](_0x23c09a))[_0x4043('0xbd')](loggerCatchQueueSummary(_0x4043('0x167'),_0x23c09a));}else{notSendMessagesQueue(_0x23c09a);}}else{freeVariablesPredictive(_0x23c09a);}};Dialer[_0x4043('0x20')][_0x4043('0x3b')]=_['throttle'](function(){var _0x549950=_[_0x4043('0x168')](this[_0x4043('0x26')],function(_0x2d0c4a){return _0x2d0c4a[_0x4043('0x169')];});var _0x194380=_['filter'](this[_0x4043('0x28')],function(_0x5b78d8){return _0x5b78d8['online']&&_0x5b78d8[_0x4043('0xb5')]===_0x4043('0x16a');});if(_0x549950[_0x4043('0xa2')]>0x0&&_0x194380['length']>0x0){return BPromise[_0x4043('0xbb')]()[_0x4043('0x46')](cmHopper[_0x4043('0x16b')](_['map'](_0x549950,'id'),previewRecallmeReminderInterval,_['map'](_0x194380,'id')))[_0x4043('0x46')](function(_0x588fc1){for(var _0x1bce38=0x0;_0x1bce38<_0x588fc1[_0x4043('0xa2')];_0x1bce38++){var _0x540535=_0x588fc1[_0x1bce38]['Agent'][_0x4043('0x4a')];if(_0x540535)io['to'](util[_0x4043('0x86')](_0x4043('0x16c'),_0x540535))[_0x4043('0x58')](_0x4043('0x16d'),{'hopper':_0x588fc1[_0x1bce38]});}})[_0x4043('0xbd')](function(_0x27e985){logger[_0x4043('0xa0')](_0x4043('0x16e'),_0x27e985);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0x4043('0x20')]['syncCampaigns']=function(){var _0x271709=this;var _0x422b1a;for(var _0x19fad9 in this[_0x4043('0x27')]){if(typeof this[_0x4043('0x27')][_0x19fad9]!==_0x4043('0xa3')){_0x422b1a=this[_0x4043('0x27')][_0x19fad9];if(isCampaignIvr(_0x422b1a[_0x4043('0x59')])&&isActive(_0x422b1a[_0x4043('0xde')])){_0x422b1a[_0x4043('0xac')]=!![];BPromise['resolve']()['then'](checkIsActive(_0x422b1a,_0x422b1a[_0x4043('0xde')]))['then'](checkInterval(_0x422b1a))[_0x4043('0x46')](_0x271709[_0x4043('0x143')](_0x422b1a))[_0x4043('0x46')](_0x271709[_0x4043('0x147')](_0x422b1a[_0x4043('0x165')],_0x422b1a[_0x4043('0x166')],_0x422b1a['name'],_0x422b1a))['then'](_0x271709[_0x4043('0x148')](_0x422b1a[_0x4043('0x4e')],_0x422b1a[_0x4043('0x166')],_0x422b1a[_0x4043('0x4a')],_0x422b1a))['then'](_0x271709[_0x4043('0x162')](_0x422b1a))['catch'](loggerCatchQueueSummary(_0x4043('0x16f'),_0x422b1a));}else{notSendMessagesCampaign(_0x422b1a);}}}};function getCallerIdRandom(_0x203866,_0x74b79a){var _0x19a016;var _0x197fca;var _0x5a1b1f;if(_0x74b79a<=0x0){_0x74b79a=0x1;}_0x19a016=new RegExp(_0x4043('0x170')+_0x74b79a+'}$');_0x197fca=Math[_0x4043('0x171')](0xa,_0x74b79a-0x1);_0x5a1b1f=Math['pow'](0xa,_0x74b79a)-0x1;return util[_0x4043('0x86')]('%s',_[_0x4043('0x172')](_0x203866,_0x19a016,_[_0x4043('0x173')](_0x197fca,_0x5a1b1f)));}function extractCalleridName(_0x530368){var _0x120583=_0x530368['match'](/"(.*?)"/);return _0x120583?_0x120583[0x1]:_0x530368;}function extractCalleridNumber(_0x1cce57){var _0x23f456=_0x1cce57['match'](/<(.*?)>/);return _0x23f456?_0x23f456[0x1]:_0x1cce57;}Dialer[_0x4043('0x20')][_0x4043('0x174')]=function(_0x1efb61,_0x29ac0c){var _0x51c23a=this;var _0x16b5a9=uuid['v4']();this[_0x4043('0x2c')][_0x16b5a9]=new Action(_0x1efb61,_0x29ac0c,_0x16b5a9);return new BPromise(function(_0x28277d,_0x2921e1){if(_[_0x4043('0x47')](_0x1efb61)&&typeof _0x1efb61!==_0x4043('0x175')){return _0x2921e1(msgResponse(_0x4043('0x176'),_0x4043('0x14a'),_0x4043('0x177')));}if(_['isUndefined'](_0x29ac0c[_0x4043('0x178')])||_0x29ac0c[_0x4043('0x178')]===null){return _0x2921e1(msgResponse(_0x4043('0x176'),_0x4043('0x14a'),_0x4043('0x179')));}var _0x459325={'XMD-CALLERID':_0x51c23a[_0x4043('0x2c')][_0x16b5a9][_0x4043('0x17a')](),'XMD-AGI':_0x1efb61[_0x4043('0x10d')]?util[_0x4043('0x86')](_0x4043('0x17b'),ipAgi,_0x1efb61['dialQueueProject']):_0x4043('0x17c'),'XMD-AGIAFTER':_0x1efb61[_0x4043('0x111')]?util['format']('\x22agi://%s/square,%s\x22',ipAgi,_0x1efb61[_0x4043('0x111')]):'NONE','XMD-QUEUE':_0x1efb61[_0x4043('0x59')]===_0x4043('0x5a')?util[_0x4043('0x86')](_0x4043('0x17d'),_0x1efb61[_0x4043('0x4a')],_0x1efb61[_0x4043('0x17e')]||'',_0x1efb61[_0x4043('0x112')]?'c':'',_0x1efb61['dialQueueTimeout']||0x3):_0x4043('0x17c'),'XMD-CONTACTID':_0x29ac0c[_0x4043('0xd9')],'XMD-CDRTYPE':_0x4043('0x8'),'CALLERID(all)':_0x51c23a[_0x4043('0x2c')][_0x16b5a9][_0x4043('0x17a')](),'XMD-AMD':_0x1efb61['dialAMDActive']?_0x4043('0x17f'):_0x4043('0x17c'),'XMD-DESTINATION':'xcally-motion-dialer'};if(_0x1efb61[_0x4043('0xeb')]){_0x459325[_0x4043('0x180')]=_0x1efb61['dialAMDInitialSilence']||0x9c4;_0x459325[_0x4043('0x181')]=_0x1efb61[_0x4043('0x182')]||0x5dc;_0x459325['XMD-AMDAFTERGREETINGSILENCE']=_0x1efb61[_0x4043('0x183')]||0x320;_0x459325[_0x4043('0x184')]=_0x1efb61[_0x4043('0x185')]||0x1388;_0x459325[_0x4043('0x186')]=_0x1efb61[_0x4043('0x187')]||0x64;_0x459325[_0x4043('0x188')]=_0x1efb61[_0x4043('0x189')]||0x32;_0x459325[_0x4043('0x18a')]=_0x1efb61[_0x4043('0x18b')]||0x3;_0x459325['XMD-AMDSILENCETHRESHOLD']=_0x1efb61[_0x4043('0x18c')]||0x100;_0x459325[_0x4043('0x18d')]=_0x1efb61[_0x4043('0x18e')]||0x1388;}if(_0x1efb61['type']===_0x4043('0x5a')){_0x459325[_0x4043('0x18f')]=_0x29ac0c[_0x4043('0xda')];}else{_0x459325[_0x4043('0x190')]=_0x29ac0c[_0x4043('0x103')];}for(var _0x20ad05 in _0x29ac0c['Contact']){if(typeof _0x29ac0c[_0x4043('0x191')][_0x20ad05]!==_0x4043('0xa3')){if(isNotNull(_0x29ac0c['Contact'][_0x20ad05])&&_0x20ad05!=='id'&&_0x20ad05!==_0x4043('0x192')&&_0x20ad05!==_0x4043('0x193')&&_0x20ad05!==_0x4043('0x194')){_0x459325[util['format'](_0x4043('0x195'),_0x4043('0x196'),_['toUpper'](_0x20ad05))]=_0x29ac0c['Contact'][_0x20ad05];}}}var _0x1eabbb=_0x51c23a[_0x4043('0xdd')](_0x1efb61[_0x4043('0x81')])?getCallerId(_0x1efb61[_0x4043('0x81')][_0x4043('0x82')],_0x1efb61[_0x4043('0x64')],_0x1efb61[_0x4043('0x197')]>0x0?getCallerIdRandom(_0x1efb61[_0x4043('0x65')],_0x1efb61[_0x4043('0x197')]):_0x1efb61['dialOriginateCallerIdNumber']):getCallerId(_[_0x4043('0xb3')](_0x1efb61[_0x4043('0x144')])?_0x1efb61['Trunk'][_0x4043('0x82')]:_0x1efb61[_0x4043('0x144')][_0x4043('0x82')],_0x1efb61['dialOriginateCallerIdName'],_0x1efb61['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x1efb61[_0x4043('0x65')],_0x1efb61[_0x4043('0x197')]):_0x1efb61[_0x4043('0x65')]);if(_0x1eabbb){_0x459325[_0x4043('0x198')]=_0x51c23a[_0x4043('0x2c')][_0x16b5a9][_0x4043('0x199')]=extractCalleridName(_0x1eabbb);_0x459325[_0x4043('0x19a')]=_0x29ac0c['phone'];}return ami[_0x4043('0xb4')]({'actionid':_0x16b5a9,'action':_0x4043('0x176'),'channel':_0x51c23a[_0x4043('0xdd')](_0x1efb61[_0x4043('0x81')])?util[_0x4043('0x86')](_0x4043('0x19b'),_0x1efb61[_0x4043('0x81')]['name'],isNotNull(_0x1efb61['dialPrefix'])?_0x1efb61[_0x4043('0x67')]['trim']()||'':'',_0x1efb61[_0x4043('0x19c')]>0x0?_0x29ac0c[_0x4043('0x178')][_0x4043('0x19d')](_0x1efb61[_0x4043('0x19c')]):_0x29ac0c[_0x4043('0x178')]):util[_0x4043('0x86')](_0x4043('0x19b'),_[_0x4043('0xb3')](_0x1efb61[_0x4043('0x144')])?_0x1efb61[_0x4043('0x81')]['name']:_0x1efb61['TrunkBackup'][_0x4043('0x4a')],isNotNull(_0x1efb61[_0x4043('0x67')])?_0x1efb61[_0x4043('0x67')][_0x4043('0x19e')]()||'':'',_0x1efb61[_0x4043('0x19c')]>0x0?_0x29ac0c['phone']['substring'](_0x1efb61[_0x4043('0x19c')]):_0x29ac0c[_0x4043('0x178')]),'callerid':_0x1eabbb,'Exten':_0x4043('0x19f'),'Context':_0x4043('0x1a0'),'Priority':'1','variable':_0x459325,'timeout':(_0x1efb61['dialOriginateTimeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x16b5a9})['then'](function(_0x17cc6d){return _0x28277d(_0x17cc6d);})['catch'](function(_0x3fe692){_0x1efb61['outboundOriginateFailureCallsDay']+=0x1;var _0x3aab9c=new History(_0x51c23a[_0x4043('0x2c')][_0x16b5a9]);logger[_0x4043('0xa0')](util[_0x4043('0x86')](_0x4043('0x1a1'),JSON[_0x4043('0x55')](_0x3fe692)));_0x3aab9c[_0x4043('0xe6')]=0xe;_0x3aab9c[_0x4043('0xee')]=_0x4043('0x1a2');_0x3aab9c[_0x4043('0xaf')]=moment()[_0x4043('0x86')](_0x4043('0x108'));_0x3aab9c[_0x4043('0xae')]=_0x3aab9c[_0x4043('0xaf')];_0x51c23a[_0x4043('0xd3')](_0x3aab9c)[_0x4043('0xbd')](loggerCatch(_0x4043('0x1a3')));_0x51c23a[_0x4043('0xd1')](_0x3aab9c)[_0x4043('0xbd')](loggerCatch(_0x4043('0x1a3')))[_0x4043('0x23')](function(){delete _0x51c23a[_0x4043('0x2c')][_0x16b5a9];return _0x2921e1(msgResponse(_0x4043('0x176'),_0x4043('0x54'),_0x4043('0x1a4')));});});});};Dialer[_0x4043('0x20')]['syncOriginateResponse']=function(_0x3c9f6e){var _0x10f11a=this[_0x4043('0x2c')][_0x3c9f6e['actionid']];if(_0x10f11a){delete this[_0x4043('0x2c')][_0x3c9f6e['actionid']];_0x10f11a[_0x4043('0x11a')]=moment()[_0x4043('0x86')](_0x4043('0x108'));var _0x192abf=_0x10f11a['type']===_0x4043('0x85')?this['campaigns'][_0x10f11a['queue']]:this[_0x4043('0x26')][_0x10f11a['getQueue']()];if(!this[_0x4043('0xdb')](_0x3c9f6e[_0x4043('0x1a5')])){this[_0x4043('0xb7')](_0x192abf);return this[_0x4043('0x1a6')](_0x10f11a,_0x192abf,_0x3c9f6e)['catch'](loggerCatch(_0x4043('0x1a7')));}this[_0x4043('0x2e')][_0x3c9f6e[_0x4043('0xe1')]]=_0x10f11a;}};Dialer['prototype'][_0x4043('0x1a8')]=function(_0x55e4be,_0xfcd46e,_0x5ea4c8){var _0x2d1b86=new History(_0xfcd46e);if(_0x2d1b86[_0x4043('0xf3')]+_0x2d1b86['countcongestionretry']+_0x2d1b86[_0x4043('0xf4')]+_0x2d1b86['countnosuchnumberretry']+_0x2d1b86[_0x4043('0xf6')]+_0x2d1b86[_0x4043('0xf7')]+_0x2d1b86['countmachineretry']+_0x2d1b86[_0x4043('0xf8')]>=_0x5ea4c8[_0x4043('0xf9')]-0x1){return!![];}switch(_0x55e4be){case 0x3:if(_0x2d1b86['countnoanswerretry']>=_0x5ea4c8[_0x4043('0x1a9')]-0x1){return!![];}this[_0x4043('0xc7')]({'active':![],'countnoanswerretry':_0x2d1b86['countnoanswerretry']+=0x1,'scheduledat':moment()[_0x4043('0xff')](_0x5ea4c8[_0x4043('0x1aa')],_0x4043('0x101'))[_0x4043('0x86')](_0x4043('0x108')),'ContactId':_0x2d1b86[_0x4043('0xd9')],'ListId':_0x2d1b86[_0x4043('0x102')],'VoiceQueueId':_0x2d1b86[_0x4043('0xda')]||undefined,'CampaignId':_0x2d1b86[_0x4043('0x103')]||undefined})[_0x4043('0xbd')](loggerCatch('[rescheduleContact][NoAnswer]'));break;case 0x5:if(_0x2d1b86[_0x4043('0xf3')]>=_0x5ea4c8[_0x4043('0x1ab')]-0x1){return!![];}this[_0x4043('0xc7')]({'active':![],'countbusyretry':_0x2d1b86['countbusyretry']+=0x1,'scheduledat':moment()['add'](_0x5ea4c8[_0x4043('0x1ac')],_0x4043('0x101'))[_0x4043('0x86')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x2d1b86[_0x4043('0xd9')],'ListId':_0x2d1b86[_0x4043('0x102')],'VoiceQueueId':_0x2d1b86['VoiceQueueId']||undefined,'CampaignId':_0x2d1b86[_0x4043('0x103')]||undefined})[_0x4043('0xbd')](loggerCatch(_0x4043('0x1ad')));break;case 0x8:if(_0x2d1b86['countcongestionretry']>=_0x5ea4c8[_0x4043('0x1ae')]-0x1){return!![];}this[_0x4043('0xc7')]({'active':![],'countcongestionretry':_0x2d1b86['countcongestionretry']+=0x1,'scheduledat':moment()[_0x4043('0xff')](_0x5ea4c8[_0x4043('0x1af')],_0x4043('0x101'))[_0x4043('0x86')](_0x4043('0x108')),'ContactId':_0x2d1b86[_0x4043('0xd9')],'ListId':_0x2d1b86[_0x4043('0x102')],'VoiceQueueId':_0x2d1b86[_0x4043('0xda')]||undefined,'CampaignId':_0x2d1b86[_0x4043('0x103')]||undefined})[_0x4043('0xbd')](loggerCatch(_0x4043('0x1b0')));break;case 0x0:if(_0x2d1b86[_0x4043('0xf5')]>=_0x5ea4c8[_0x4043('0x1b1')]-0x1){return!![];}else{this['rescheduleContact']({'active':![],'countnosuchnumberretry':_0x2d1b86[_0x4043('0xf5')]+=0x1,'scheduledat':moment()[_0x4043('0xff')](_0x5ea4c8[_0x4043('0x1b2')],_0x4043('0x101'))[_0x4043('0x86')](_0x4043('0x108')),'ContactId':_0x2d1b86[_0x4043('0xd9')],'ListId':_0x2d1b86[_0x4043('0x102')],'VoiceQueueId':_0x2d1b86[_0x4043('0xda')]||undefined,'CampaignId':_0x2d1b86['CampaignId']||undefined})[_0x4043('0xbd')](loggerCatch(_0x4043('0x1b3')));}break;case 0xa:if(_0x2d1b86[_0x4043('0xf6')]>=_0x5ea4c8['dialDropMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countdropretry':_0x2d1b86[_0x4043('0xf6')]+=0x1,'scheduledat':moment()[_0x4043('0xff')](_0x5ea4c8['dialDropRetryFrequency'],_0x4043('0x101'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x2d1b86[_0x4043('0xd9')],'ListId':_0x2d1b86[_0x4043('0x102')],'VoiceQueueId':_0x2d1b86['VoiceQueueId']||undefined,'CampaignId':_0x2d1b86[_0x4043('0x103')]||undefined})[_0x4043('0xbd')](loggerCatch(_0x4043('0x122')));break;case 0xb:if(_0x2d1b86[_0x4043('0xf7')]>=_0x5ea4c8[_0x4043('0x12b')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countabandonedretry':_0x2d1b86[_0x4043('0xf7')]+=0x1,'scheduledat':moment()[_0x4043('0xff')](_0x5ea4c8[_0x4043('0x129')],'minutes')[_0x4043('0x86')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x2d1b86['ContactId'],'ListId':_0x2d1b86[_0x4043('0x102')],'VoiceQueueId':_0x2d1b86[_0x4043('0xda')]||undefined,'CampaignId':_0x2d1b86[_0x4043('0x103')]||undefined})[_0x4043('0xbd')](loggerCatch('[rescheduleContact][Abandoned]'));break;case 0x13:if(_0x2d1b86['countmachineretry']>=_0x5ea4c8[_0x4043('0xfc')]-0x1){return!![];}this[_0x4043('0xc7')]({'active':![],'countmachineretry':_0x2d1b86[_0x4043('0xf0')]+=0x1,'scheduledat':moment()[_0x4043('0xff')](_0x5ea4c8[_0x4043('0x100')],_0x4043('0x101'))[_0x4043('0x86')](_0x4043('0x108')),'ContactId':_0x2d1b86[_0x4043('0xd9')],'ListId':_0x2d1b86[_0x4043('0x102')],'VoiceQueueId':_0x2d1b86[_0x4043('0xda')]||undefined,'CampaignId':_0x2d1b86[_0x4043('0x103')]||undefined})[_0x4043('0xbd')](loggerCatch(_0x4043('0x104')));break;case 0x14:if(_0x2d1b86['countagentrejectretry']>=_0x5ea4c8['dialAgentRejectMaxRetry']-0x1){return!![];}this[_0x4043('0xc7')]({'active':![],'countagentrejectretry':_0x2d1b86[_0x4043('0xf8')]+=0x1,'scheduledat':moment()['add'](_0x5ea4c8['dialAgentRejectRetryFrequency'],_0x4043('0x101'))['format'](_0x4043('0x108')),'ContactId':_0x2d1b86[_0x4043('0xd9')],'ListId':_0x2d1b86['ListId'],'VoiceQueueId':_0x2d1b86[_0x4043('0xda')]||undefined,'CampaignId':_0x2d1b86['CampaignId']||undefined})[_0x4043('0xbd')](loggerCatch(_0x4043('0x1b4')));break;default:return!![];}};Dialer[_0x4043('0x20')][_0x4043('0x1a6')]=function(_0x7e528d,_0x386290,_0x4ed5c3){var _0x84b92e=this;var _0xa3e91f=new History(_0x7e528d);var _0x34edf3=![];var _0x1cef23;var _0x5b9744;return new BPromise(function(_0x512f79,_0x135d9e){if(_[_0x4043('0x47')](_0x386290)&&typeof _0x386290!=='object'){return _0x135d9e(msgResponse('[callProgressDetecting]',_0x4043('0x14a'),_0x4043('0x1b5')));}if(_['isUndefined'](_0x4ed5c3)&&typeof _0x4ed5c3!==_0x4043('0x175')){return _0x135d9e(msgResponse(_0x4043('0x1b6'),_0x4043('0x14a'),'evt\x20is\x20undefine'));}_0x84b92e[_0x4043('0xc0')](_0xa3e91f,_0x4ed5c3[_0x4043('0x1b7')],_0x386290)['then'](function(_0x59b22a){if(_0x59b22a[_0x4043('0x120')]==0x1)_0x34edf3=!![];switch(_0x4ed5c3[_0x4043('0x1b7')]){case'0':_0x386290[_0x4043('0x6f')]+=0x1;_0xa3e91f[_0x4043('0xe6')]=0x0;_0xa3e91f[_0x4043('0xee')]=_0x4043('0x1b8');_0xa3e91f[_0x4043('0xf5')]+=0x1;_0xa3e91f[_0x4043('0xf1')]+=0x1;ami[_0x4043('0x58')]('custom:agentnosuchnumber',ut[_0x4043('0xea')](_0x7e528d,_0x4043('0x1b9')));_0x1cef23=_0x386290[_0x4043('0x1b2')];_0x5b9744=_0x386290[_0x4043('0x11f')];_0x84b92e[_0x4043('0xd3')](_0xa3e91f)[_0x4043('0xbd')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x84b92e[_0x4043('0x1a8')](0x0,_0x7e528d,_0x386290)&&!_0x34edf3){if(_0xa3e91f[_0x4043('0xf5')]>=_0x386290[_0x4043('0x1b1')]){_0x84b92e[_0x4043('0xfd')](_0xa3e91f,_0x512f79,_0x135d9e,_0x4043('0x1ba'));}else{_0x84b92e[_0x4043('0xfa')](_0xa3e91f,_0x512f79,_0x135d9e,_0x4043('0x1ba'));}}break;case'3':_0x386290[_0x4043('0x1bb')]+=0x1;_0xa3e91f[_0x4043('0xe6')]=0x3;_0xa3e91f['statedesc']=_0x4043('0x1bc');_0xa3e91f[_0x4043('0xf4')]+=0x1;_0xa3e91f[_0x4043('0xf1')]+=0x1;ami['emit']('custom:agentnoanswer',ut[_0x4043('0xea')](_0x7e528d,'noanswer'));_0x1cef23=_0x386290[_0x4043('0x1aa')];_0x5b9744=_0x386290[_0x4043('0x11f')];_0x84b92e[_0x4043('0xd3')](_0xa3e91f)[_0x4043('0xbd')](loggerCatch(_0x4043('0x1bd')));if(_0x84b92e[_0x4043('0x1a8')](0x3,_0x7e528d,_0x386290)&&!_0x34edf3){if(_0xa3e91f['countnoanswerretry']>=_0x386290[_0x4043('0x1a9')]){_0x84b92e[_0x4043('0xfd')](_0xa3e91f,_0x512f79,_0x135d9e,_0x4043('0x1be'));}else{_0x84b92e[_0x4043('0xfa')](_0xa3e91f,_0x512f79,_0x135d9e,_0x4043('0x1be'));}}break;case'5':_0x386290['outboundBusyCallsDay']+=0x1;_0xa3e91f['state']=0x5;_0xa3e91f['statedesc']=_0x4043('0x1bf');_0xa3e91f['countbusyretry']+=0x1;_0xa3e91f[_0x4043('0xf1')]+=0x1;ami['emit'](_0x4043('0x1c0'),ut[_0x4043('0xea')](_0x7e528d,_0x4043('0x1c1')));_0x1cef23=_0x386290[_0x4043('0x1ac')];_0x5b9744=_0x386290[_0x4043('0x11f')];_0x84b92e[_0x4043('0xd3')](_0xa3e91f)[_0x4043('0xbd')](loggerCatch(_0x4043('0x1c2')));if(_0x84b92e[_0x4043('0x1a8')](0x5,_0x7e528d,_0x386290)&&!_0x34edf3){if(_0xa3e91f[_0x4043('0xf3')]>=_0x386290[_0x4043('0x1ab')]){_0x84b92e[_0x4043('0xfd')](_0xa3e91f,_0x512f79,_0x135d9e,_0x4043('0x1c3'));}else{_0x84b92e[_0x4043('0xfa')](_0xa3e91f,_0x512f79,_0x135d9e,'reason\x205\x20busy');}}break;case'8':_0x386290[_0x4043('0x6c')]+=0x1;_0xa3e91f[_0x4043('0xe6')]=0x8;_0xa3e91f[_0x4043('0xee')]=_0x4043('0x1c4');_0xa3e91f[_0x4043('0x107')]+=0x1;_0xa3e91f[_0x4043('0xf1')]+=0x1;_0x1cef23=_0x386290['dialCongestionRetryFrequency'];_0x5b9744=_0x386290[_0x4043('0x11f')];ami[_0x4043('0x58')](_0x4043('0x1c5'),ut[_0x4043('0xea')](_0x7e528d,_0x4043('0x1c6')));_0x84b92e[_0x4043('0xd3')](_0xa3e91f)[_0x4043('0xbd')](loggerCatch('[syncAgentComplete][createHistory][8]'));if(_0x84b92e['checkRetriveMax'](0x8,_0x7e528d,_0x386290)&&!_0x34edf3){if(_0xa3e91f[_0x4043('0x107')]>=_0x386290['dialCongestionMaxRetry']){_0x84b92e[_0x4043('0xfd')](_0xa3e91f,_0x512f79,_0x135d9e,'reason\x208\x20congestion');}else{_0x84b92e[_0x4043('0xfa')](_0xa3e91f,_0x512f79,_0x135d9e,_0x4043('0x1c7'));}}break;case'11':_0x386290[_0x4043('0x1c8')]+=0x1;_0xa3e91f[_0x4043('0xe6')]=0xb;_0xa3e91f['statedesc']=_0x4043('0x127');_0xa3e91f[_0x4043('0xf7')]+=0x1;_0xa3e91f[_0x4043('0xf1')]+=0x1;_0x1cef23=_0x386290['dialAbandonedRetryFrequency'];_0x5b9744=_0x386290['callAdditionalPhoneAfterMin'];_0x84b92e[_0x4043('0xd3')](_0xa3e91f)['catch'](loggerCatch(_0x4043('0x1c9')));if(_0x84b92e[_0x4043('0x1a8')](0xb,_0x7e528d,_0x386290)&&!_0x34edf3){if(_0xa3e91f['countabandonedretry']>=_0x386290[_0x4043('0x12b')]){_0x84b92e[_0x4043('0xfd')](_0xa3e91f,_0x512f79,_0x135d9e,_0x4043('0x1ca'));}else{_0x84b92e['stateGlobal'](_0xa3e91f,_0x512f79,_0x135d9e,_0x4043('0x1ca'));}}break;case'20':_0x386290[_0x4043('0x1cb')]+=0x1;_0xa3e91f[_0x4043('0xe6')]=0x14;_0xa3e91f[_0x4043('0xee')]=_0x4043('0x1cc');_0xa3e91f['countagentrejectretry']+=0x1;_0xa3e91f[_0x4043('0xf1')]+=0x1;_0x1cef23=_0x386290[_0x4043('0x1cd')];_0x5b9744=_0x386290['callAdditionalPhoneAfterMin'];ami[_0x4043('0x58')](_0x4043('0x1ce'),ut['buildObj'](_0x7e528d,'agentreject'));_0x84b92e[_0x4043('0xd3')](_0xa3e91f)[_0x4043('0xbd')](loggerCatch('[syncAgentComplete][createHistory][20]'));if(_0x84b92e['checkRetriveMax'](0x14,_0x7e528d,_0x386290)&&!_0x34edf3){if(_0xa3e91f['countagentrejectretry']>=_0x386290[_0x4043('0x1cf')]){_0x84b92e[_0x4043('0xfd')](_0xa3e91f,_0x512f79,_0x135d9e,_0x4043('0x1d0'));}else{_0x84b92e[_0x4043('0xfa')](_0xa3e91f,_0x512f79,_0x135d9e,_0x4043('0x1d0'));}}break;default:_0x386290['outboundUnknownCallsDay']+=0x1;_0xa3e91f[_0x4043('0xe6')]=0xc;_0xa3e91f[_0x4043('0xee')]=_0x4ed5c3[_0x4043('0x1b7')];_0x1cef23=_0x386290[_0x4043('0x1cd')];_0x5b9744=_0x386290[_0x4043('0x11f')];_0x84b92e['createHistory'](_0xa3e91f)[_0x4043('0xbd')](loggerCatch('[syncAgentComplete][createHistory][?]'));if(_0x84b92e['checkRetriveMax'](_0x4ed5c3[_0x4043('0x1b7')],_0x7e528d,_0x386290)&&!_0x34edf3){if(_0xa3e91f['countbusyretry']+_0xa3e91f['countcongestionretry']+_0xa3e91f[_0x4043('0xf4')]+_0xa3e91f['countnosuchnumberretry']+_0xa3e91f[_0x4043('0xf6')]+_0xa3e91f['countabandonedretry']+_0xa3e91f[_0x4043('0xf0')]+_0xa3e91f[_0x4043('0xf8')]>=_0x386290[_0x4043('0xf9')]){_0x84b92e['stateGlobal'](_0xa3e91f,_0x512f79,_0x135d9e,_0x4ed5c3['reason']);}else{_0x84b92e['createStateFinal'](_0xa3e91f,_0x512f79,_0x135d9e,_0x4ed5c3[_0x4043('0x1b7')]);}}}})['then'](function(_0xaa625a){if(_0x34edf3){_0x84b92e[_0x4043('0x126')](_0xa3e91f,_0x1cef23,_0x5b9744)[_0x4043('0x46')](function(_0x2c901d){return _0x512f79(0x1);});}});});};Dialer[_0x4043('0x20')][_0x4043('0xfa')]=function(_0x520ce6,_0x2ba950,_0x257c6a,_0x305ce6){var _0x229068=new Final(_0x520ce6);_0x229068[_0x4043('0xe6')]=0xf;_0x229068[_0x4043('0xee')]='Global';this['createStateFinal'](_0x229068,_0x2ba950,_0x257c6a,_0x305ce6);};Dialer[_0x4043('0x20')][_0x4043('0xfd')]=function(_0x15ed0c,_0x1b6e7a,_0x4b7ff7,_0x59177c){this[_0x4043('0xd1')](_0x15ed0c)[_0x4043('0x46')](function(){return _0x1b6e7a(msgResponse(_0x4043('0x1b6'),'Success',_0x59177c));})['catch'](function(){return _0x4b7ff7(msgResponse(_0x4043('0x1d1'),_0x4043('0x14a'),_0x4043('0x1d2')));});};Dialer[_0x4043('0x20')][_0x4043('0xa')]=function(_0x146614){var _0x131b4d=_0x146614[_0x4043('0x1d3')]/0x64;var _0x7d90dd=_0x146614[_0x4043('0x6e')]/(_0x146614[_0x4043('0x6e')]+_0x146614[_0x4043('0x69')]);var _0x27704c=Math[_0x4043('0x1d4')](_0x146614[_0x4043('0x7a')]*(_0x146614[_0x4043('0x1d5')]/0x64));var _0x2d2476=Math['round'](_0x146614[_0x4043('0x7a')]*(_0x146614[_0x4043('0x1d6')]/0x64));var _0x155e83=_0x146614[_0x4043('0x5c')]+_0x146614[_0x4043('0xa7')];var _0x4225ad=Math['floor'](_0x146614[_0x4043('0x1d7')]*_0x146614[_0x4043('0x7e')]*_0x146614[_0x4043('0x1d8')]*_0x146614['predictiveIntervalMultiplicativeFactor']);if(_[_0x4043('0x47')](_0x146614[_0x4043('0x30')])){if(!_[_0x4043('0x47')](_0x146614[_0x4043('0x80')])){_0x146614[_0x4043('0x80')]=undefined;loggerPredictive[_0x4043('0xa0')]('[startMethodPredictive][StartProgressive]',_0x4043('0x1d9'));}if(!_['isUndefined'](_0x146614['handlePredictive'])){loggerPredictive[_0x4043('0xa0')](_0x4043('0x1da'),_0x4043('0x1db'));clearInterval(_0x146614['handlePredictive']);_0x146614['handlePredictive']=undefined;}_0x146614[_0x4043('0x30')]=moment()[_0x4043('0x86')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0x4043('0x89')](_0x146614[_0x4043('0x4a')],'collection\x20data\x20in\x20progressive\x20at',_0x146614[_0x4043('0x30')]);this['handlePower'](_0x146614,0x1);}else if(ifInterval(_0x146614[_0x4043('0x1dc')],_0x146614[_0x4043('0x30')])){this[_0x4043('0x15e')](_0x146614,0x1);loggerPredictiveCalls['info'](_0x4043('0x1dd'),_0x146614[_0x4043('0x30')],_0x146614[_0x4043('0x4a')]);_0x146614['erlangCalls']=0x0;_0x146614['predictiveIntervalErlangCallsDroppedCalls']=0x0;}else if(_0x131b4d<_0x7d90dd&&_0x146614[_0x4043('0x1de')]===_0x4043('0x1df')){freeVariablesPredictive(_0x146614);loggerPredictive[_0x4043('0x89')](_0x4043('0x1e0'),_0x4043('0x1e1'),_0x7d90dd,_0x4043('0x30'),_0x146614[_0x4043('0x4a')]);}else if(_0x4225ad<_0x146614[_0x4043('0x77')]&&_0x146614[_0x4043('0x1de')]===_0x4043('0x1df')){freeVariablesPredictive(_0x146614);loggerPredictive['info']('[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]',_0x4043('0x1e2'),_0x4225ad,'Drop\x20in\x20this\x20interval',_0x146614[_0x4043('0x77')],_0x4043('0x30'),_0x146614[_0x4043('0x4a')]);}else if(!ifInterval(_0x146614['dialPredictiveInterval'],_0x146614[_0x4043('0x30')])&&_['isUndefined'](_0x146614[_0x4043('0x80')])&&!_['isUndefined'](_0x146614[_0x4043('0x30')])){_0x146614[_0x4043('0x80')]=moment()[_0x4043('0x86')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0x4043('0x89')](_0x146614[_0x4043('0x4a')],_0x4043('0x1e3'),_0x146614[_0x4043('0x80')]);this[_0x4043('0xc4')](_0x146614[_0x4043('0x1dc')])['then'](this[_0x4043('0x1e4')](_0x146614))['then'](mergeDataErlangB(_0x146614))['then'](this[_0x4043('0x1e5')](_0x146614))[_0x4043('0xbd')](loggerCatchPredictive(_0x4043('0x1e6'),_0x146614));}else if(!ifInterval(_0x146614[_0x4043('0x1dc')],_0x146614[_0x4043('0x80')])){_0x146614[_0x4043('0x77')]=0x0;_0x146614[_0x4043('0x80')]=moment()[_0x4043('0x86')](_0x4043('0x108'));loggerPredictive[_0x4043('0x89')](_0x146614[_0x4043('0x4a')],_0x4043('0x1e7'),_0x146614[_0x4043('0x80')]);clearInterval(_0x146614['handlePredictive']);_0x146614[_0x4043('0x99')]=undefined;this[_0x4043('0xc4')](_0x146614['dialPredictiveInterval'])[_0x4043('0x46')](this[_0x4043('0x1e4')](_0x146614))[_0x4043('0x46')](mergeDataErlangB(_0x146614))[_0x4043('0x46')](this['startMethodPredictive'](_0x146614))[_0x4043('0xbd')](loggerCatchPredictive(_0x4043('0x1e8'),_0x146614));}else if(_0x146614[_0x4043('0x7a')]&&_0x155e83<_0x146614['predictiveIntervalAvailable']-_0x2d2476){freeVariablesPredictive(_0x146614);loggerPredictive[_0x4043('0x89')](_0x146614['name'],_0x4043('0x1e9'),_0x155e83,_0x4043('0x1ea'),_0x146614[_0x4043('0x7a')],'-',_0x2d2476,'=',_0x146614[_0x4043('0x7a')]-_0x2d2476,')');}else if(_0x146614[_0x4043('0x7a')]&&_0x155e83>_0x146614[_0x4043('0x7a')]+_0x27704c){freeVariablesPredictive(_0x146614);loggerPredictive[_0x4043('0x89')](_0x146614['name'],_0x4043('0x1e9'),_0x155e83,')\x20are\x20more\x20than\x20threshold\x20(',_0x146614[_0x4043('0x7a')],'+',_0x27704c,'=',_0x146614[_0x4043('0x7a')]+_0x27704c,')');}};Dialer[_0x4043('0x20')]['getDataPredictive']=function(_0x2d0b4e){var _0x1ddef0=this;return function(_0x275bae){return new BPromise(function(_0x41bb14,_0x487c00){_[_0x4043('0x96')](_0x2d0b4e,_0x275bae[0x0]);if(checkGetDataPredictive(_0x275bae[0x0])){var _0x2178c8=_0x2d0b4e[_0x4043('0x7a')]=_0x2d0b4e[_0x4043('0xa7')]+_0x2d0b4e[_0x4043('0x5c')];var _0x519a6a=_0x2d0b4e[_0x4043('0x1dc')]*0x3c;var _0x5b3f34=_0x275bae[0x0]['predictiveIntervalAvgTalktime']+_0x275bae[0x0][_0x4043('0x72')];var _0x5a2bf1=(_0x275bae[0x0]['predictiveIntervalAnsweredCalls']+_0x275bae[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x275bae[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x275bae[0x0][_0x4043('0x7b')];_0x2d0b4e['predictiveIntervalHitRate']=_0x5a2bf1>0x0?_0x5a2bf1:0x1;switch(_0x2d0b4e['dialPredictiveOptimization']){case _0x4043('0x1df'):var _0x20d5fa=_0x2d0b4e[_0x4043('0x1d3')]/0x64;return _0x1ddef0['abandonmentRate'](_0x2178c8,_0x519a6a,_0x5b3f34,_0x5a2bf1,_0x20d5fa)[_0x4043('0x46')](function(_0x245d06){return _0x41bb14(_0x245d06);});case _0x4043('0x1eb'):var _0x4e3304=_0x2d0b4e[_0x4043('0x1d3')]/0x64;return _0x1ddef0[_0x4043('0x1ec')](_0x2178c8,_0x519a6a,_0x5b3f34,_0x5a2bf1,_0x4e3304)[_0x4043('0x46')](function(_0x53b5c4){return _0x41bb14(_0x53b5c4);});default:return _0x487c00(msgResponse(_0x4043('0x1ed'),_0x4043('0x14a'),_0x4043('0x1ee')));}}else{return _0x487c00(msgResponse(_0x4043('0x1ed'),'Failure','check\x20failure'));}});};};Dialer[_0x4043('0x20')][_0x4043('0x1ef')]=function(_0x207f93){var _0x259191=this;return function(_0x44730d){return new BPromise(function(_0x5101ae,_0x4bcbb2){_['merge'](_0x207f93,_0x44730d[0x0]);if(checkGetDataPredictive(_0x44730d[0x0])){loggerPredictive[_0x4043('0x89')](JSON[_0x4043('0x55')](_0x44730d[0x0]));if(_0x207f93[_0x4043('0x1de')]===_0x4043('0x1df')){return _0x259191[_0x4043('0xcf')](_0x207f93['id'])[_0x4043('0x46')](function(_0x5b057d){var _0x4fc3bc=_0x207f93['loggedIn']-_0x5b057d[0x0]['outboundQueuePauses'];var _0x1e1e6f=_0x207f93[_0x4043('0x1dc')]*0x3c;var _0x2aab0c=_0x44730d[0x0]['predictiveIntervalAvgTalktime']+_0x44730d[0x0][_0x4043('0x72')];var _0x238713=(_0x44730d[0x0][_0x4043('0x71')]+_0x44730d[0x0][_0x4043('0x75')]+_0x44730d[0x0][_0x4043('0x74')])/_0x44730d[0x0][_0x4043('0x7b')];var _0x9ed77f=_0x207f93['dialPredictiveOptimizationPercentage']/0x64;_0x207f93[_0x4043('0x79')]=_0x5b057d[0x0][_0x4043('0x1f0')]||0x0;_0x207f93[_0x4043('0x1d8')]=_0x238713>0x0?_0x238713:0x1;return _0x259191[_0x4043('0x1f1')](_0x4fc3bc,_0x1e1e6f,_0x2aab0c,_0x238713,_0x9ed77f);})[_0x4043('0x46')](function(_0x3952f0){return _0x5101ae(_0x3952f0);})[_0x4043('0xbd')](function(_0x955c01){return _0x4bcbb2(msgResponse('[CatchErlangB]',_0x4043('0x14a'),JSON[_0x4043('0x55')](_0x955c01)));});}if(_0x207f93[_0x4043('0x1de')]===_0x4043('0x1eb')){return _0x259191[_0x4043('0xcf')](_0x207f93['id'])[_0x4043('0x46')](function(_0x1a7802){var _0x5f59ee=_0x207f93[_0x4043('0x1f2')]-_0x1a7802[0x0][_0x4043('0x1f0')];var _0x31776a=_0x207f93[_0x4043('0x1dc')]*0x3c;var _0x3ec544=_0x44730d[0x0]['predictiveIntervalAvgTalktime']+_0x44730d[0x0][_0x4043('0x72')];var _0x2dae01=(_0x44730d[0x0][_0x4043('0x71')]+_0x44730d[0x0][_0x4043('0x75')]+_0x44730d[0x0][_0x4043('0x74')])/_0x44730d[0x0][_0x4043('0x7b')];var _0x41a4b4=_0x207f93['dialPredictiveOptimizationPercentage']/0x64;_0x207f93[_0x4043('0x79')]=_0x1a7802[0x0][_0x4043('0x1f0')]||0x0;_0x207f93[_0x4043('0x1d8')]=_0x2dae01>0x0?_0x2dae01:0x1;return _0x259191[_0x4043('0x1ec')](_0x5f59ee,_0x31776a,_0x3ec544,_0x2dae01,_0x41a4b4);})[_0x4043('0x46')](function(_0x498f08){return _0x5101ae(_0x498f08);})[_0x4043('0xbd')](function(_0x33aad2){return _0x4bcbb2(msgResponse(_0x4043('0x1f3'),_0x4043('0x14a'),JSON[_0x4043('0x55')](_0x33aad2)));});}}else{return _0x4bcbb2(msgResponse('[getDataPredictive]',_0x4043('0x14a'),_0x4043('0x1f4')));}});};};Dialer[_0x4043('0x20')][_0x4043('0x1e5')]=function(_0x5b0e4d){var _0x117c4a=this;return function(){var _0x4e9f23=0x0;var _0x36d08f=Math[_0x4043('0x1f5')](_0x5b0e4d[_0x4043('0x7d')]*0x3e8);if(_0x36d08f>0x0){_0x36d08f=_0x36d08f<0x64?0x64:_0x36d08f;loggerPredictive[_0x4043('0x89')](_0x5b0e4d[_0x4043('0x4a')],_0x4043('0x1f6'),_0x36d08f,_0x4043('0x56'));_0x5b0e4d[_0x4043('0x99')]=setInterval(function(){_0x117c4a[_0x4043('0x99')](_0x5b0e4d);loggerPredictiveCalls[_0x4043('0x89')](_0x4043('0x1f7'),_0x4e9f23+=0x1);},_0x36d08f);}else{loggerPredictive['info'](_0x5b0e4d[_0x4043('0x4a')],_0x4043('0x1f8'));}};};Dialer[_0x4043('0x20')][_0x4043('0x1f9')]=function(_0x20c294,_0x29613b){var _0xa92489=this;return function(_0x13639b){if(_[_0x4043('0x52')](_0x13639b)){if(_[_0x4043('0xb3')](_0x29613b['UserId'])||!_0x29613b['recallme']){if(_0x20c294[_0x4043('0x63')]===_0x4043('0x9')){_0x20c294[_0x4043('0x133')]=_[_0x4043('0x47')](_0x20c294[_0x4043('0x133')])?!![]:_0x20c294[_0x4043('0x133')];var _0x3ff20f=uuid['v4']();_0xa92489[_0x4043('0x2c')][_0x3ff20f]=new Action(_0x20c294,_0x29613b,_0x3ff20f);loggerBooked[_0x4043('0x89')]('[booked][checkContactBlack]',_0x3ff20f,_0x4043('0x1fa'),JSON[_0x4043('0x55')](_0x20c294['queueStatusComplete']),_0x4043('0x1fb'),_0x20c294[_0x4043('0x4a')]);if(_0x20c294[_0x4043('0x133')]){_0x20c294[_0x4043('0x133')]=![];_0xa92489[_0x4043('0x131')][_0xa92489[_0x4043('0x2c')][_0x3ff20f]['queue']]=[];ami[_0x4043('0xb4')]({'actionid':_0x3ff20f,'action':_0x4043('0x1fc'),'queue':_0x20c294[_0x4043('0x4a')]})[_0x4043('0xbd')](function(){_0xa92489[_0x4043('0xb7')](_0x20c294);_0xa92489[_0x4043('0xc7')]({'active':![],'ContactId':_0xa92489['actions'][_0x3ff20f]['ContactId'],'ListId':_0xa92489[_0x4043('0x2c')][_0x3ff20f][_0x4043('0x102')],'VoiceQueueId':_0xa92489[_0x4043('0x2c')][_0x3ff20f][_0x4043('0xda')]||undefined,'CampaignId':_0xa92489[_0x4043('0x2c')][_0x3ff20f][_0x4043('0x103')]||undefined})[_0x4043('0xbd')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0xa92489[_0x4043('0x2c')][_0x3ff20f];});}else{loggerBooked[_0x4043('0x89')](_0x4043('0x1fd'),JSON['stringify'](_0x20c294['queueStatusComplete']),_0x4043('0x1fb'),_0x20c294[_0x4043('0x4a')]);_0xa92489[_0x4043('0xb7')](_0x20c294);_0xa92489[_0x4043('0xc7')]({'active':![],'ContactId':_0xa92489[_0x4043('0x2c')][_0x3ff20f][_0x4043('0xd9')],'ListId':_0xa92489[_0x4043('0x2c')][_0x3ff20f][_0x4043('0x102')],'VoiceQueueId':_0xa92489['actions'][_0x3ff20f]['VoiceQueueId']||undefined,'CampaignId':_0xa92489[_0x4043('0x2c')][_0x3ff20f]['CampaignId']||undefined})['catch'](loggerCatch(_0x4043('0x1fe')));delete _0xa92489[_0x4043('0x2c')][_0x3ff20f];}}else{return _0xa92489['actionOriginate'](_0x20c294,_0x29613b);}}else{if(getDiff(_0x29613b[_0x4043('0x1ff')])<_0x20c294[_0x4043('0x200')]*0x3c){if(_0x29613b[_0x4043('0x201')]&&!_0x29613b[_0x4043('0x201')][_0x4043('0x202')]){_0xa92489[_0x4043('0x25')][_0x4043('0x135')](_0x29613b['id'])[_0x4043('0x23')](function(){_0xa92489[_0x4043('0xb7')](_0x20c294);});}else{_0xa92489[_0x4043('0xc9')]({'active':![]},_0x29613b['id'],0x1)[_0x4043('0x23')](function(){_0xa92489[_0x4043('0xb7')](_0x20c294);});}}else{_0x20c294[_0x4043('0x203')]+=0x1;_0xa92489[_0x4043('0xb7')](_0x20c294);if(_0x20c294[_0x4043('0x204')]){_0xa92489[_0x4043('0xc7')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x29613b[_0x4043('0xd9')],'ListId':_0x29613b['ListId'],'VoiceQueueId':_0x29613b[_0x4043('0xda')]||undefined,'CampaignId':_0x29613b['CampaignId']||undefined})[_0x4043('0xbd')](loggerCatch(_0x4043('0x205')));_0xa92489[_0x4043('0xd3')](createObjHistory(_0x20c294,_0x29613b,_0x4043('0x206'),0x17,_0x4043('0x207')))[_0x4043('0xbd')](loggerCatch(_0x4043('0x208')));}else{_0xa92489[_0x4043('0xd7')](createObjHistory(_0x20c294,_0x29613b,'RECALLFAILEDTIMEOUT',0x16,'RecallFailedTimeout'),_0x4043('0x209'),'[Originate][HistoryRecallClose]');}}}}else{_0x20c294[_0x4043('0x6a')]+=0x1;_0xa92489['saveInDb'](createObjHistory(_0x20c294,_0x29613b,_0x4043('0x20a'),0xd,_0x4043('0x20b')),_0x4043('0x20c'),_0x4043('0x20d'));throw'inBlackList';}};};Dialer[_0x4043('0x20')]['handleIvr']=function(_0x2affe9){var _0x5d72fb=this;var _0x5bddae=_0x2affe9['limitCalls']-_0x2affe9['originated']-_0x2affe9[_0x4043('0xcc')];emitCampaignSummary(_0x2affe9);if(_0x5bddae>0x0){if(_0x5bddae>this[_0x4043('0x2a')]){_0x5bddae=this['maxNumberOriginate'];}_0x2affe9[_0x4043('0xcc')]+=_0x5bddae;this[_0x4043('0xce')](_0x2affe9['id'],_0x5bddae,_0x2affe9[_0x4043('0x20e')],_0x2affe9)['then'](function(_0x573c8c){_0x2affe9['temp']-=_0x5bddae;_0x2affe9[_0x4043('0xcc')]=_0x2affe9[_0x4043('0xcc')]>0x0?_0x2affe9[_0x4043('0xcc')]:0x0;if(!checkContactEmpty(_0x573c8c)){_0x2affe9[_0x4043('0x48')]=_0x4043('0xa6');logger[_0x4043('0x89')](_0x4043('0x20f')+_0x2affe9[_0x4043('0x4a')]);}else{_0x2affe9[_0x4043('0x7c')]+=_0x573c8c[_0x4043('0xa2')];_0x2affe9['message']=_0x4043('0x210');for(var _0x4b356f=0x0;_0x4b356f<_0x573c8c['length'];_0x4b356f+=0x1){_0x2affe9[_0x4043('0x211')]+=0x1;if(_['isNil'](_0x573c8c[_0x4b356f])||_[_0x4043('0xb3')](_0x573c8c[_0x4b356f][_0x4043('0x191')])||_['isNil'](_0x573c8c[_0x4b356f][_0x4043('0x178')])){_0x5d72fb[_0x4043('0x212')](_0x4043('0x213'),_0x2affe9,_0x573c8c[_0x4b356f]);}else{_0x5d72fb['checkIsBlackListIvr'](_['pick'](_0x573c8c[_0x4b356f],[_0x4043('0x103'),_0x4043('0x214')]))[_0x4043('0x46')](_0x5d72fb[_0x4043('0x1f9')](_0x2affe9,_0x573c8c[_0x4b356f]))[_0x4043('0xbd')](_0x5d72fb['loggerHandler']('[actionOriginateIvr]\x20',_0x2affe9));}}}})['catch'](loggerGetContactDialer(_0x4043('0x215'),_0x2affe9,_0x5bddae));}};Dialer[_0x4043('0x20')][_0x4043('0x15e')]=function(_0x3e8a7b,_0x142bec){var _0x7314b0=this;var _0x551379=[];var _0x37eeea=_0x142bec>=0x1?_0x142bec:0x1;if(_0x3e8a7b[_0x4043('0x63')]===_0x4043('0x9')){_0x37eeea=0x1;}var _0x79bf83=Math[_0x4043('0x1f5')](_0x3e8a7b['available']*_0x37eeea)-_0x3e8a7b['originated']-_0x3e8a7b[_0x4043('0xcc')];emitVoiceQueueSummary(_0x3e8a7b);if(_0x3e8a7b['dialLimitQueue']>0x0){var _0x2b3ed9=_0x3e8a7b[_0x4043('0x216')]-_0x3e8a7b[_0x4043('0x7c')]-_0x3e8a7b['talking']-_0x3e8a7b[_0x4043('0xcc')]-_0x3e8a7b['pTalking'];if(_0x79bf83>_0x2b3ed9){_0x79bf83=_0x2b3ed9;}}if(_0x79bf83>0x0){if(_0x3e8a7b['dialMethod']==='booked'){_0x79bf83=0x1;}if(_0x79bf83>this[_0x4043('0x2a')]){_0x79bf83=this['maxNumberOriginate'];}_0x3e8a7b[_0x4043('0xcc')]+=_0x79bf83;for(var _0x595b5c in this['agents']){if(typeof this['agents'][_0x595b5c]!==_0x4043('0xa3')){if(this[_0x4043('0x28')][_0x595b5c][_0x4043('0xe6')]===_0x4043('0x217')&&this[_0x4043('0x28')][_0x595b5c]['status']===_0x4043('0x16a')){_0x551379[_0x4043('0x151')](this[_0x4043('0x28')][_0x595b5c]['id']);}}}this[_0x4043('0xcb')](_0x3e8a7b['id'],_0x551379,_0x79bf83,_0x3e8a7b['dialOrderByScheduledAt'],_0x3e8a7b)[_0x4043('0x46')](function(_0x2ed474){_0x3e8a7b['temp']-=_0x79bf83;_0x3e8a7b[_0x4043('0xcc')]=_0x3e8a7b[_0x4043('0xcc')]>0x0?_0x3e8a7b['temp']:0x0;if(!checkContactEmpty(_0x2ed474)){_0x7314b0[_0x4043('0xbc')](_0x3e8a7b)[_0x4043('0x46')](sendMessageReschedule(_0x3e8a7b))[_0x4043('0xbd')](loggerCatch(_0x4043('0xbe')));}else{_0x3e8a7b[_0x4043('0x7c')]+=_0x2ed474[_0x4043('0xa2')];_0x3e8a7b[_0x4043('0x48')]=_0x3e8a7b['dialMethod']==='booked'?'ACTIVE':_0x4043('0x210');for(var _0x584ebc=0x0;_0x584ebc<_0x2ed474[_0x4043('0xa2')];_0x584ebc+=0x1){if(_[_0x4043('0xb3')](_0x2ed474[_0x584ebc])||_[_0x4043('0xb3')](_0x2ed474[_0x584ebc][_0x4043('0x191')])||_[_0x4043('0xb3')](_0x2ed474[_0x584ebc][_0x4043('0x178')])){_0x7314b0[_0x4043('0x212')](_0x4043('0x213'),_0x3e8a7b,_0x2ed474[_0x584ebc]);}else{_0x7314b0[_0x4043('0xbf')](_[_0x4043('0xd8')](_0x2ed474[_0x584ebc],[_0x4043('0xda'),_0x4043('0x214')]))[_0x4043('0x46')](_0x7314b0[_0x4043('0x1f9')](_0x3e8a7b,_0x2ed474[_0x584ebc]))[_0x4043('0xbd')](_0x7314b0[_0x4043('0xd6')]('[actionOriginate]\x20',_0x3e8a7b));}}}})[_0x4043('0xbd')](loggerGetContactDialer(_0x4043('0x218'),_0x3e8a7b,_0x79bf83));}};Dialer[_0x4043('0x20')][_0x4043('0x99')]=function(_0x3313ee){if(_0x3313ee['dialLimitQueue']>0x0){var _0x4a31d2=_0x3313ee['dialLimitQueue']-_0x3313ee[_0x4043('0x7c')]-_0x3313ee[_0x4043('0xa7')];if(_0x4a31d2>0x0){this[_0x4043('0x219')](_0x3313ee);}else{loggerPredictiveCalls[_0x4043('0x89')](_0x4043('0x21a'));}}else{this[_0x4043('0x219')](_0x3313ee);}};Dialer[_0x4043('0x20')][_0x4043('0x219')]=function(_0x8bd3e4){var _0x214c05=this;var _0x3e3978=[];_0x8bd3e4[_0x4043('0x7c')]+=0x1;for(var _0x1cdfed in this[_0x4043('0x28')]){if(typeof this[_0x4043('0x28')][_0x1cdfed]!==_0x4043('0xa3')){if(this['agents'][_0x1cdfed][_0x4043('0xe6')]==='not_inuse'&&this['agents'][_0x1cdfed][_0x4043('0xb5')]==='reachable'){_0x3e3978[_0x4043('0x151')](this[_0x4043('0x28')][_0x1cdfed]['id']);}}}this[_0x4043('0xcb')](_0x8bd3e4['id'],_0x3e3978,0x1,_0x8bd3e4[_0x4043('0x20e')],_0x8bd3e4)[_0x4043('0x46')](function(_0x1eafe2){if(!checkContactEmpty(_0x1eafe2)){checkContactLowerLimitOriginate(_0x8bd3e4,0x1,0x0);_0x214c05[_0x4043('0xbc')](_0x8bd3e4)[_0x4043('0x46')](sendMessageReschedule(_0x8bd3e4))[_0x4043('0xbd')](loggerCatch(_0x4043('0xbe')));}else{_0x8bd3e4[_0x4043('0x48')]='RUNNING';if(_['isNil'](_0x1eafe2[0x0])||_['isNil'](_0x1eafe2[0x0][_0x4043('0x191')])||_[_0x4043('0xb3')](_0x1eafe2[0x0][_0x4043('0x178')])){_0x214c05[_0x4043('0x212')](_0x4043('0x213'),_0x8bd3e4,_0x1eafe2[0x0]);}else{_0x214c05[_0x4043('0xbf')](_[_0x4043('0xd8')](_0x1eafe2[0x0],[_0x4043('0xda'),_0x4043('0x214')]))[_0x4043('0x46')](_0x214c05[_0x4043('0x1f9')](_0x8bd3e4,_0x1eafe2[0x0]))[_0x4043('0xbd')](_0x214c05['loggerHandler'](_0x4043('0x21b'),_0x8bd3e4));}}})['catch'](loggerGetContactDialer(_0x4043('0x21c'),_0x8bd3e4,0x1));emitVoiceQueueSummary(_0x8bd3e4);};Dialer['prototype'][_0x4043('0x1f1')]=function(_0x1a7cd5,_0x416b04,_0x1dab6f,_0x5aeb35,_0x22491f,_0x136a56){loggerPredictive[_0x4043('0x89')]('--------\x20Drop\x20Rate\x20--------');loggerPredictive[_0x4043('0x89')](_0x4043('0x21d'),_0x1a7cd5);loggerPredictive['info'](_0x4043('0x21e'),_0x416b04);loggerPredictive[_0x4043('0x89')](_0x4043('0x21f'),_0x1dab6f);loggerPredictive[_0x4043('0x89')](_0x4043('0x220'),_0x5aeb35);loggerPredictive['info']('Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x22491f);loggerPredictive[_0x4043('0x89')](_0x4043('0x8f'));return new BPromise(function(_0x61f4d8,_0x4f27ee){if(_0x1a7cd5<=0x0||isNaN(_0x1a7cd5)){return _0x4f27ee(msgResponse(_0x4043('0x221'),_0x4043('0x54'),_0x4043('0x222')+_0x1a7cd5));}if(_0x1dab6f<=0x0||isNaN(_0x1dab6f)){return _0x4f27ee(msgResponse(_0x4043('0x221'),'Error','Ts\x20=\x20'+_0x1dab6f));}if(_0x5aeb35<=0x0||isNaN(_0x5aeb35)){return _0x4f27ee(msgResponse(_0x4043('0x221'),_0x4043('0x54'),_0x4043('0x223')+_0x5aeb35));}if(_0x416b04<=0x0||isNaN(_0x416b04)){return _0x4f27ee(msgResponse(_0x4043('0x221'),'Error',_0x4043('0x224')+_0x416b04));}if(_0x22491f<=0x0||isNaN(_0x22491f)){return _0x4f27ee(msgResponse(_0x4043('0x221'),_0x4043('0x54'),_0x4043('0x225')+_0x22491f));}_0x136a56=_0x136a56||0x0;var _0x1e8dd0=0x1/_0x1dab6f;var _0x2d577a=0x0;var _0x2ea7b8=0x0;var _0x1270bd=0x0;var _0x54949c=0x0;for(var _0x4377f5=0x0;_0x1270bd<_0x22491f;_0x4377f5+=0x1){_0x2ea7b8=_0x4377f5/_0x416b04;_0x2d577a=(_0x5aeb35*_0x2ea7b8+_0x136a56)/_0x1e8dd0;_0x1270bd=erlangb(_0x2d577a,_0x1a7cd5);_0x54949c=_0x2d577a/_0x1a7cd5*(0x1-erlangb(_0x2d577a,_0x1a7cd5));}return _0x61f4d8({'erlangCalls':_0x4377f5,'erlangCallToSecond':_0x416b04/_0x4377f5,'erlangAbandonmentRate':_0x1270bd,'erlangBusyFactor':_0x54949c});});};Dialer[_0x4043('0x20')][_0x4043('0x1ec')]=function(_0x3bcf6e,_0x13dab2,_0x552269,_0x130a95,_0x14936b,_0x26dad8){loggerPredictive[_0x4043('0x89')](_0x4043('0x226'));loggerPredictive[_0x4043('0x89')](_0x4043('0x21d'),_0x3bcf6e);loggerPredictive[_0x4043('0x89')]('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x13dab2);loggerPredictive[_0x4043('0x89')](_0x4043('0x21f'),_0x552269);loggerPredictive[_0x4043('0x89')](_0x4043('0x220'),_0x130a95);loggerPredictive[_0x4043('0x89')](_0x4043('0x227'),_0x14936b);loggerPredictive[_0x4043('0x89')]('---------------------------');return new BPromise(function(_0x167f60,_0x4f843d){if(_0x3bcf6e<=0x0||isNaN(_0x3bcf6e)){return _0x4f843d(msgResponse(_0x4043('0x228'),_0x4043('0x54'),_0x4043('0x222')+_0x3bcf6e));}if(_0x552269<=0x0||isNaN(_0x552269)){return _0x4f843d(msgResponse(_0x4043('0x228'),_0x4043('0x54'),'Ts\x20=\x20'+_0x552269));}if(_0x130a95<=0x0||isNaN(_0x130a95)){return _0x4f843d(msgResponse('[busyFactor]','Error',_0x4043('0x223')+_0x130a95));}if(_0x13dab2<=0x0||isNaN(_0x13dab2)){return _0x4f843d(msgResponse('[busyFactor]',_0x4043('0x54'),_0x4043('0x224')+_0x13dab2));}if(_0x14936b<=0x0||isNaN(_0x14936b)){return _0x4f843d(msgResponse('[busyFactor]','Error',_0x4043('0x229')+_0x14936b));}_0x26dad8=_0x26dad8||0x0;var _0x25ef05=0x1/_0x552269;var _0x45147d=0x0;var _0x2c4b15=0x0;var _0x540b6d=0x0;var _0xd7a889=0x0;for(var _0x244ee5=0x0;_0xd7a889<_0x14936b;_0x244ee5+=0x1){_0x2c4b15=_0x244ee5/_0x13dab2;_0x45147d=(_0x130a95*_0x2c4b15+_0x26dad8)/_0x25ef05;_0x540b6d=erlangb(_0x45147d,_0x3bcf6e);_0xd7a889=_0x45147d/_0x3bcf6e*(0x1-erlangb(_0x45147d,_0x3bcf6e));}return _0x167f60({'erlangCalls':_0x244ee5,'erlangCallToSecond':_0x13dab2/_0x244ee5,'erlangAbandonmentRate':_0x540b6d,'erlangBusyFactor':_0xd7a889});});};module['exports']=Dialer;
\ No newline at end of file
index ca4b15b..cc17203 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cfa=['exports','util','milliseconds','seconds','scheduledat','type','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','uniqueid','calleridname','calleridnum','starttime','responsetime','droptime','endtime','ringtime','holdtime','talktime','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname'];(function(_0x4accb5,_0xd15c51){var _0x5ce1f2=function(_0x516bd9){while(--_0x516bd9){_0x4accb5['push'](_0x4accb5['shift']());}};_0x5ce1f2(++_0xd15c51);}(_0x6cfa,0xa1));var _0xa6cf=function(_0x308776,_0x44eceb){_0x308776=_0x308776-0x0;var _0xf37e63=_0x6cfa[_0x308776];return _0xf37e63;};'use strict';var util=require(_0xa6cf('0x0'));var _=require('lodash');var moment=require('moment');function getSeconds(_0x12df4f,_0x50a7f6){var _0x3b3568=moment(_0x12df4f)[_0xa6cf('0x1')](0x0);var _0x5a5395=moment(_0x50a7f6)['milliseconds'](0x0);return _0x3b3568['diff'](_0x5a5395,_0xa6cf('0x2'));}function QueueCallerAbandon(_0x445bcd,_0x27ca7e){this[_0xa6cf('0x3')]=_0x445bcd[_0xa6cf('0x3')];this[_0xa6cf('0x4')]=_0x445bcd[_0xa6cf('0x4')];this['campaigntype']=_0x445bcd[_0xa6cf('0x4')]==='outbound'?_0xa6cf('0x5'):_0x445bcd['type'];this[_0xa6cf('0x6')]=_0x445bcd[_0xa6cf('0x6')];this[_0xa6cf('0x7')]=_0x445bcd[_0xa6cf('0x7')];this['countnoanswerretry']=_0x445bcd[_0xa6cf('0x8')];this[_0xa6cf('0x9')]=_0x445bcd[_0xa6cf('0x6')]+_0x445bcd[_0xa6cf('0x7')]+_0x445bcd[_0xa6cf('0x8')]+_0x445bcd['countnosuchnumberretry']+_0x445bcd[_0xa6cf('0xa')]+_0x445bcd[_0xa6cf('0xb')]+_0x445bcd[_0xa6cf('0xc')]+_0x445bcd[_0xa6cf('0xd')];this[_0xa6cf('0xe')]=_0x445bcd[_0xa6cf('0xe')];this[_0xa6cf('0xa')]=_0x445bcd['countdropretry'];this['countabandonedretry']=_0x445bcd[_0xa6cf('0xb')];this[_0xa6cf('0xc')]=_0x445bcd['countmachineretry'];this[_0xa6cf('0xd')]=_0x445bcd[_0xa6cf('0xd')];this[_0xa6cf('0xf')]=_0x27ca7e[_0xa6cf('0xf')];this[_0xa6cf('0x10')]=_0x445bcd['name'];this[_0xa6cf('0x11')]=_0x445bcd['number'];this[_0xa6cf('0x12')]=_0x445bcd[_0xa6cf('0x12')];this[_0xa6cf('0x13')]=_0x445bcd[_0xa6cf('0x13')];this[_0xa6cf('0x14')]=_0x445bcd[_0xa6cf('0x14')];this[_0xa6cf('0x15')]=this[_0xa6cf('0x14')];this[_0xa6cf('0x16')]=getSeconds(_0x445bcd[_0xa6cf('0x13')],_0x445bcd[_0xa6cf('0x12')]);this[_0xa6cf('0x17')]=getSeconds(this[_0xa6cf('0x14')],_0x445bcd['responsetime']);this[_0xa6cf('0x18')]=0x0;this['queue']=_0x27ca7e[_0xa6cf('0x5')];this[_0xa6cf('0x19')]=_0x27ca7e[_0xa6cf('0x1a')];this['reason']=_0x27ca7e[_0xa6cf('0x1b')];this[_0xa6cf('0x1c')]=_0x445bcd[_0xa6cf('0x1c')];this[_0xa6cf('0x1d')]=_0x445bcd['callbackuniqueid'];this[_0xa6cf('0x1e')]=_0x445bcd['callbackat'];this[_0xa6cf('0x1f')]=_0x445bcd[_0xa6cf('0x1f')];this[_0xa6cf('0x20')]=_0x445bcd[_0xa6cf('0x20')];this[_0xa6cf('0x21')]=_0x445bcd[_0xa6cf('0x21')];this['UserId']=_0x445bcd[_0xa6cf('0x22')];this[_0xa6cf('0x23')]=_0x445bcd[_0xa6cf('0x23')];this[_0xa6cf('0x24')]=_0x445bcd[_0xa6cf('0x24')];this['originatecalleridnum']=_0x445bcd[_0xa6cf('0x25')]||'';this[_0xa6cf('0x26')]=_0x445bcd[_0xa6cf('0x26')]||'';}module[_0xa6cf('0x27')]=QueueCallerAbandon;
\ No newline at end of file
+var _0x4471=['countnoanswerretry','countglobal','countdropretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','countabandonedretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','droptime','endtime','ringtime','holdtime','talktime','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','seconds','scheduledat','type','outbound','queue','countbusyretry','countcongestionretry'];(function(_0x2f8530,_0x5cbd67){var _0x5e814e=function(_0x490b29){while(--_0x490b29){_0x2f8530['push'](_0x2f8530['shift']());}};_0x5e814e(++_0x5cbd67);}(_0x4471,0x179));var _0x1447=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x4471[_0xa464c9];return _0x3d73c4;};'use strict';var util=require(_0x1447('0x0'));var _=require('lodash');var moment=require(_0x1447('0x1'));function getSeconds(_0x39c19f,_0x5664b7){var _0xaf0fba=moment(_0x39c19f)[_0x1447('0x2')](0x0);var _0x33d10f=moment(_0x5664b7)[_0x1447('0x2')](0x0);return _0xaf0fba['diff'](_0x33d10f,_0x1447('0x3'));}function QueueCallerAbandon(_0x4768cb,_0x328dd1){this[_0x1447('0x4')]=_0x4768cb[_0x1447('0x4')];this['type']=_0x4768cb['type'];this['campaigntype']=_0x4768cb[_0x1447('0x5')]===_0x1447('0x6')?_0x1447('0x7'):_0x4768cb[_0x1447('0x5')];this['countbusyretry']=_0x4768cb[_0x1447('0x8')];this['countcongestionretry']=_0x4768cb[_0x1447('0x9')];this[_0x1447('0xa')]=_0x4768cb['countnoanswerretry'];this[_0x1447('0xb')]=_0x4768cb[_0x1447('0x8')]+_0x4768cb[_0x1447('0x9')]+_0x4768cb[_0x1447('0xa')]+_0x4768cb['countnosuchnumberretry']+_0x4768cb[_0x1447('0xc')]+_0x4768cb['countabandonedretry']+_0x4768cb[_0x1447('0xd')]+_0x4768cb[_0x1447('0xe')];this[_0x1447('0xf')]=_0x4768cb[_0x1447('0xf')];this[_0x1447('0xc')]=_0x4768cb['countdropretry'];this[_0x1447('0x10')]=_0x4768cb[_0x1447('0x10')];this[_0x1447('0xd')]=_0x4768cb['countmachineretry'];this['countagentrejectretry']=_0x4768cb[_0x1447('0xe')];this[_0x1447('0x11')]=_0x328dd1['uniqueid'];this[_0x1447('0x12')]=_0x4768cb[_0x1447('0x13')];this[_0x1447('0x14')]=_0x4768cb[_0x1447('0x15')];this[_0x1447('0x16')]=_0x4768cb[_0x1447('0x16')];this[_0x1447('0x17')]=_0x4768cb[_0x1447('0x17')];this['droptime']=_0x4768cb[_0x1447('0x18')];this[_0x1447('0x19')]=this[_0x1447('0x18')];this[_0x1447('0x1a')]=getSeconds(_0x4768cb[_0x1447('0x17')],_0x4768cb[_0x1447('0x16')]);this[_0x1447('0x1b')]=getSeconds(this['droptime'],_0x4768cb['responsetime']);this[_0x1447('0x1c')]=0x0;this['queue']=_0x328dd1[_0x1447('0x7')];this[_0x1447('0x1d')]=_0x328dd1[_0x1447('0x1e')];this['reason']=_0x328dd1[_0x1447('0x1f')];this['callback']=_0x4768cb[_0x1447('0x20')];this[_0x1447('0x21')]=_0x4768cb[_0x1447('0x21')];this[_0x1447('0x22')]=_0x4768cb[_0x1447('0x22')];this['recallme']=_0x4768cb[_0x1447('0x23')];this[_0x1447('0x24')]=_0x4768cb['ContactId'];this['ListId']=_0x4768cb['ListId'];this[_0x1447('0x25')]=_0x4768cb['UserId'];this[_0x1447('0x26')]=_0x4768cb['VoiceQueueId'];this[_0x1447('0x27')]=_0x4768cb[_0x1447('0x27')];this['originatecalleridnum']=_0x4768cb[_0x1447('0x28')]||'';this[_0x1447('0x29')]=_0x4768cb[_0x1447('0x29')]||'';}module[_0x1447('0x2a')]=QueueCallerAbandon;
\ No newline at end of file
index df1b6a8..07c802b 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(_0x3d2ea8,_0xf33d73){var _0x2140fc=function(_0x24eaf9){while(--_0x24eaf9){_0x3d2ea8['push'](_0x3d2ea8['shift']());}};_0x2140fc(++_0xf33d73);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xa9e0[_0x2763f2];return _0x3ef471;};'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(_0x134136,_0x2092ec){var _0x14f0aa=function(_0x480056){while(--_0x480056){_0x134136['push'](_0x134136['shift']());}};_0x14f0aa(++_0x2092ec);}(_0xa9e0,0x123));var _0x0a9e=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xa9e0[_0x187ee1];return _0x388160;};'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 2aee31e..7035651 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4d0=['Trunk\x20Reachable','format','path','%s/%s.tif','XMF-PATH','variablesAction','Action','addVariables','ext','isNil','active','SIP/%s','unmonitored','isTrunkReachable','[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]','Trunk\x20not\x20working\x20correctly','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20path','exports','util','lodash','bluebird','moment','tiff2pdf','../../../config/logger','fax','../ami','./channel','./util/util','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','channels','trunks','actions','newchannel','syncNewchannel','bind','syncVarSet','newstate','syncNewState','newexten','syncNewExten','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','hangup','syncHangup','originateresponse','syncOriginateResponse','prototype','context','from-voip-provider','faxAccounts','exten','localstationid','uniqueid','name','info','channel','\x20syncNewchannel\x20','variable','value','channelstate','channelstatedesc','hasOwnProperty','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','application/pdf','then','notify','parse','.pdf','catch','error','stringify','\x20receiveFax\x20','merge','pick','reason','AttachmentId','update','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','SUCCESS','updateStatus','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','send','execOriginate','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','[Fax][execOriginate][failure]','checkTrunk','Trunk','isValid'];(function(_0x2e45d8,_0x422b6b){var _0x255c41=function(_0x4aa41c){while(--_0x4aa41c){_0x2e45d8['push'](_0x2e45d8['shift']());}};_0x255c41(++_0x422b6b);}(_0xb4d0,0x1eb));var _0x0b4d=function(_0x1957e2,_0x2171fd){_0x1957e2=_0x1957e2-0x0;var _0x238f0d=_0xb4d0[_0x1957e2];return _0x238f0d;};'use strict';var util=require(_0x0b4d('0x0'));var _=require(_0x0b4d('0x1'));var BPromise=require(_0x0b4d('0x2'));var uuid=require('uuid');var moment=require(_0x0b4d('0x3'));var path=require('path');var tiff2pdf=require(_0x0b4d('0x4'));var gs=require('./util/gs');var logger=require(_0x0b4d('0x5'))(_0x0b4d('0x6'));var ami=require(_0x0b4d('0x7'));var rpcDb=require('./rpcDb');var Channel=require(_0x0b4d('0x8'));var ut=require(_0x0b4d('0x9'));var Action=require('./action');var faxAccount=require(_0x0b4d('0xa'));var attachment=require(_0x0b4d('0xb'));var faxMessage=require(_0x0b4d('0xc'));function Fax(_0xe4eb3a){this[_0x0b4d('0xd')]={};this['faxAccounts']=_0xe4eb3a['faxAccounts'];this[_0x0b4d('0xe')]=_0xe4eb3a['trunks'];this[_0x0b4d('0xf')]={};ami['on'](_0x0b4d('0x10'),this[_0x0b4d('0x11')][_0x0b4d('0x12')](this));ami['on']('varset',this[_0x0b4d('0x13')][_0x0b4d('0x12')](this));ami['on'](_0x0b4d('0x14'),this[_0x0b4d('0x15')][_0x0b4d('0x12')](this));ami['on'](_0x0b4d('0x16'),this[_0x0b4d('0x17')][_0x0b4d('0x12')](this));ami['on'](_0x0b4d('0x18'),this[_0x0b4d('0x19')]['bind'](this));ami['on'](_0x0b4d('0x1a'),this[_0x0b4d('0x1b')][_0x0b4d('0x12')](this));ami['on'](_0x0b4d('0x1c'),this[_0x0b4d('0x1d')][_0x0b4d('0x12')](this));ami['on'](_0x0b4d('0x1e'),this[_0x0b4d('0x1f')][_0x0b4d('0x12')](this));}Fax[_0x0b4d('0x20')][_0x0b4d('0x11')]=function(_0x5bbd9e){if(_0x5bbd9e[_0x0b4d('0x21')]===_0x0b4d('0x22')){for(var _0x5730d2 in this[_0x0b4d('0x23')]){if(this[_0x0b4d('0x23')]['hasOwnProperty'](_0x5730d2)){if(_0x5bbd9e[_0x0b4d('0x24')]===this[_0x0b4d('0x23')][_0x5730d2][_0x0b4d('0x25')]){this[_0x0b4d('0xd')][_0x5bbd9e[_0x0b4d('0x26')]]={};this[_0x0b4d('0xd')][_0x5bbd9e[_0x0b4d('0x26')]]['channel']=_0x5bbd9e['channel'];this[_0x0b4d('0xd')][_0x5bbd9e['uniqueid']]['id']=this['faxAccounts'][_0x5730d2]['id'];this[_0x0b4d('0xd')][_0x5bbd9e[_0x0b4d('0x26')]][_0x0b4d('0x27')]=this[_0x0b4d('0x23')][_0x5730d2]['name'];logger[_0x0b4d('0x28')](_0x5bbd9e[_0x0b4d('0x26')],'\x20syncNewchannel\x20');}}}}if(this[_0x0b4d('0xf')][_0x5bbd9e[_0x0b4d('0x26')]]){this[_0x0b4d('0xd')][_0x5bbd9e['uniqueid']]={};this[_0x0b4d('0xd')][_0x5bbd9e['uniqueid']][_0x0b4d('0x29')]=_0x5bbd9e[_0x0b4d('0x29')];logger[_0x0b4d('0x28')](_0x5bbd9e[_0x0b4d('0x26')],_0x0b4d('0x2a'));}};Fax[_0x0b4d('0x20')][_0x0b4d('0x13')]=function(_0x4ac0df){if(this['channels'][_0x4ac0df[_0x0b4d('0x26')]]){for(var _0x1e66ea in _0x4ac0df[_0x0b4d('0x2b')]){if(_0x4ac0df['variable']['hasOwnProperty'](_0x1e66ea)){this['channels'][_0x4ac0df[_0x0b4d('0x26')]][_0x1e66ea]=_0x4ac0df[_0x0b4d('0x2c')];}}}};Fax[_0x0b4d('0x20')][_0x0b4d('0x15')]=function(_0x19c112){if(this['channels'][_0x19c112['uniqueid']]){this[_0x0b4d('0xd')][_0x19c112[_0x0b4d('0x26')]][_0x0b4d('0x2d')]=_0x19c112[_0x0b4d('0x2d')];this['channels'][_0x19c112[_0x0b4d('0x26')]][_0x0b4d('0x2e')]=_0x19c112[_0x0b4d('0x2e')];}};Fax[_0x0b4d('0x20')][_0x0b4d('0x17')]=function(_0x3e61db){if(this[_0x0b4d('0xd')][_0x3e61db[_0x0b4d('0x26')]]){for(var _0x2b65e8 in _0x3e61db[_0x0b4d('0x2b')]){if(_0x3e61db['variable'][_0x0b4d('0x2f')](_0x2b65e8)){this[_0x0b4d('0xd')][_0x3e61db[_0x0b4d('0x26')]][_0x2b65e8]=_0x3e61db[_0x0b4d('0x2c')];}}}};Fax[_0x0b4d('0x20')][_0x0b4d('0x19')]=function(_0x1c9273){if(this[_0x0b4d('0xd')][_0x1c9273[_0x0b4d('0x26')]]){this['channels'][_0x1c9273[_0x0b4d('0x26')]][_0x0b4d('0x30')]=_0x1c9273[_0x0b4d('0x30')];this[_0x0b4d('0xd')][_0x1c9273[_0x0b4d('0x26')]][_0x0b4d('0x31')]=_0x1c9273[_0x0b4d('0x31')];this[_0x0b4d('0xd')][_0x1c9273[_0x0b4d('0x26')]][_0x0b4d('0x25')]=_0x1c9273[_0x0b4d('0x25')];this[_0x0b4d('0xd')][_0x1c9273[_0x0b4d('0x26')]]['filename']=_0x1c9273[_0x0b4d('0x32')];logger[_0x0b4d('0x28')](_0x1c9273[_0x0b4d('0x26')],_0x0b4d('0x33'));}};Fax[_0x0b4d('0x20')][_0x0b4d('0x1b')]=function(_0xeceda7){var _0x1a106a=this;if(this[_0x0b4d('0xd')][_0xeceda7[_0x0b4d('0x26')]]){var _0x22379c=this['channels'][_0xeceda7[_0x0b4d('0x26')]]['id'];this[_0x0b4d('0xd')][_0xeceda7[_0x0b4d('0x26')]]['remotestationid']=_0xeceda7[_0x0b4d('0x34')];this[_0x0b4d('0xd')][_0xeceda7[_0x0b4d('0x26')]][_0x0b4d('0x35')]=_0xeceda7[_0x0b4d('0x35')];this[_0x0b4d('0xd')][_0xeceda7[_0x0b4d('0x26')]][_0x0b4d('0x25')]=_0xeceda7[_0x0b4d('0x25')];this[_0x0b4d('0xd')][_0xeceda7[_0x0b4d('0x26')]][_0x0b4d('0x36')]=_0xeceda7[_0x0b4d('0x36')];this[_0x0b4d('0xd')][_0xeceda7['uniqueid']]['transferrate']=_0xeceda7[_0x0b4d('0x37')];this['channels'][_0xeceda7[_0x0b4d('0x26')]][_0x0b4d('0x32')]=_0xeceda7[_0x0b4d('0x32')];this['channels'][_0xeceda7[_0x0b4d('0x26')]][_0x0b4d('0x38')]=_0xeceda7[_0x0b4d('0x38')];if(this[_0x0b4d('0xd')][_0xeceda7['uniqueid']][_0x0b4d('0x35')]>0x0){tiff2pdf(_0xeceda7[_0x0b4d('0x32')],_0x0b4d('0x39'),function(_0x390353){logger[_0x0b4d('0x28')](_0xeceda7[_0x0b4d('0x26')],_0x0b4d('0x3a'),_0x390353[_0x0b4d('0x3b')]);attachment[_0x0b4d('0x3c')]({'name':path['parse'](_0xeceda7[_0x0b4d('0x32')])['name'],'basename':path['parse'](_0xeceda7[_0x0b4d('0x32')])[_0x0b4d('0x27')]+'.pdf','type':_0x0b4d('0x3d')})[_0x0b4d('0x3e')](function(_0x5b43b2){faxAccount[_0x0b4d('0x3f')](_0x22379c,{'from':_0xeceda7[_0x0b4d('0x38')],'mapKey':_0x0b4d('0x6'),'body':path[_0x0b4d('0x40')](_0xeceda7[_0x0b4d('0x32')])[_0x0b4d('0x27')]+_0x0b4d('0x41'),'AttachmentId':_0x5b43b2['id']})[_0x0b4d('0x42')](function(_0x48b076){logger[_0x0b4d('0x43')](_0xeceda7[_0x0b4d('0x26')],'\x20notify\x20',JSON[_0x0b4d('0x44')](_0x48b076));});})[_0x0b4d('0x42')](function(_0x4f5047){logger[_0x0b4d('0x43')](_0xeceda7[_0x0b4d('0x26')],_0x0b4d('0x45'),JSON[_0x0b4d('0x44')](_0x4f5047));});});}logger[_0x0b4d('0x28')](_0xeceda7[_0x0b4d('0x26')],'\x20receiveFax\x20');}};Fax[_0x0b4d('0x20')][_0x0b4d('0x1f')]=function(_0x235335){if(this[_0x0b4d('0xf')][_0x235335[_0x0b4d('0x26')]]){_[_0x0b4d('0x46')](this[_0x0b4d('0xd')][_0x235335['uniqueid']],_[_0x0b4d('0x47')](_0x235335,['response',_0x0b4d('0x48')]));}};function updateStatus(_0x3ea964){if(_0x3ea964[_0x0b4d('0x49')]){faxMessage[_0x0b4d('0x4a')](_0x3ea964[_0x0b4d('0x49')],{'failMessage':_0x0b4d('0x4b')})[_0x0b4d('0x3e')](function(_0x2ee495){ut['logger']('[Fax][Message][Error][Updated]',_0x2ee495);})['catch'](function(_0x51706e){ut[_0x0b4d('0x4c')](_0x0b4d('0x4d'),_0x51706e);});}else{ut[_0x0b4d('0x4c')](_0x0b4d('0x4e'));}}Fax['prototype']['updateStatus']=function(_0x1afae8,_0x58d709,_0x27e1af){var _0x335ede=this;var _0x4ddbc0={};if(_0x58d709){_0x4ddbc0={'read':_0x58d709};}else{_0x4ddbc0={'failMessage':_0x27e1af};}if(this[_0x0b4d('0xf')][_0x1afae8][_0x0b4d('0x49')]){faxMessage['update'](this['actions'][_0x1afae8][_0x0b4d('0x49')],_0x4ddbc0)[_0x0b4d('0x3e')](function(_0xdf553c){ut[_0x0b4d('0x4c')](_0x0b4d('0x4f'),_0xdf553c);})[_0x0b4d('0x42')](function(_0x4854c7){ut[_0x0b4d('0x4c')](_0x0b4d('0x50'),_0x4854c7);})[_0x0b4d('0x51')](function(){delete _0x335ede['channels'][_0x1afae8];delete _0x335ede[_0x0b4d('0xf')][_0x1afae8];});}else{ut[_0x0b4d('0x4c')](_0x0b4d('0x52'));delete this[_0x0b4d('0xd')][_0x1afae8];delete this['actions'][_0x1afae8];}};Fax[_0x0b4d('0x20')][_0x0b4d('0x1d')]=function(_0x2a0777){var _0x2d8560=this;if(this[_0x0b4d('0xd')][_0x2a0777[_0x0b4d('0x26')]]){if(this[_0x0b4d('0xf')][_0x2a0777[_0x0b4d('0x26')]]){this[_0x0b4d('0xd')][_0x2a0777[_0x0b4d('0x26')]]['id']=this['actions'][_0x2a0777[_0x0b4d('0x26')]]['id'];this['channels'][_0x2a0777[_0x0b4d('0x26')]][_0x0b4d('0x27')]=this[_0x0b4d('0xf')][_0x2a0777[_0x0b4d('0x26')]]['name'];}logger[_0x0b4d('0x28')](_0x2a0777[_0x0b4d('0x26')],this['actions'][_0x2a0777[_0x0b4d('0x26')]]?_0x0b4d('0x53'):_0x0b4d('0x54'),JSON[_0x0b4d('0x44')](this[_0x0b4d('0xd')][_0x2a0777['uniqueid']]));if(this[_0x0b4d('0xf')][_0x2a0777[_0x0b4d('0x26')]]){if(this['channels'][_0x2a0777[_0x0b4d('0x26')]]['faxpages']>0x0&&this[_0x0b4d('0xd')][_0x2a0777[_0x0b4d('0x26')]][_0x0b4d('0x18')]===_0x0b4d('0x55')){this[_0x0b4d('0x56')](_0x2a0777[_0x0b4d('0x26')],!![]);}else{this[_0x0b4d('0x56')](_0x2a0777[_0x0b4d('0x26')],![],this[_0x0b4d('0xd')][_0x2a0777[_0x0b4d('0x26')]][_0x0b4d('0x57')]?_0x0b4d('0x58')+this[_0x0b4d('0xd')][_0x2a0777[_0x0b4d('0x26')]][_0x0b4d('0x57')]:_0x0b4d('0x59'));}}}};Fax[_0x0b4d('0x20')][_0x0b4d('0x5a')]=function(_0x3daec2){var _0x20ae3b=this;return new BPromise(function(_0x47e24d,_0x248713){_0x20ae3b[_0x0b4d('0x5b')](_0x3daec2,_0x20ae3b[_0x0b4d('0x23')][_0x3daec2[_0x0b4d('0x5c')]])[_0x0b4d('0x3e')](function(_0x10db59){ut[_0x0b4d('0x4c')](_0x0b4d('0x5d'),_0x10db59);_0x47e24d(ut[_0x0b4d('0x3b')](_0x0b4d('0x5e')));})['catch'](function(_0x446a14){ut[_0x0b4d('0x4c')](_0x0b4d('0x5f'),_0x446a14);updateStatus(_0x3daec2);_0x248713(ut[_0x0b4d('0x3b')]('Fax\x20failed'));});});};Fax['prototype']['checkAfterSend']=function(_0x4402ef){var _0x164c33=this;return new BPromise(function(_0x121dd1,_0x23edcf){var _0x1c3219=_0x164c33[_0x0b4d('0x60')](_0x164c33['faxAccounts'][_0x4402ef['FaxAccountId']][_0x0b4d('0x61')],_0x4402ef);if(_0x1c3219[_0x0b4d('0x62')]){_0x121dd1(ut[_0x0b4d('0x3b')](_0x0b4d('0x63')));}else{_0x23edcf(ut['message'](_0x1c3219[_0x0b4d('0x3b')]));}});};function originate(_0x51505c,_0x577bcd,_0x102e86){return new BPromise(function(_0x3a0ccf,_0xa6116f){if(_0x102e86){var _0x251fb4=util[_0x0b4d('0x64')]('gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit',path['parse'](_0x51505c[_0x0b4d('0x65')])['name'],_0x51505c[_0x0b4d('0x65')]);gs['execute'](_0x251fb4)['then'](function(){_0x51505c[_0x0b4d('0x65')]=util[_0x0b4d('0x64')](_0x0b4d('0x66'),path['parse'](_0x51505c['path'])['dir'],path['parse'](_0x51505c['path'])[_0x0b4d('0x27')]);_0x577bcd[_0x0b4d('0x67')]=_0x51505c[_0x0b4d('0x65')];ut[_0x0b4d('0x4c')]('Convert\x20pdf\x20to\x20tif','');ami['Action'](ut[_0x0b4d('0x68')](_0x51505c,_0x577bcd))[_0x0b4d('0x3e')](function(_0x3c4944){_0x3a0ccf(_0x3c4944);})[_0x0b4d('0x42')](function(_0x5df825){_0xa6116f(_0x5df825);});})[_0x0b4d('0x42')](function(_0x2983e0){_0xa6116f(_0x2983e0);});}else{ami[_0x0b4d('0x69')](ut[_0x0b4d('0x68')](_0x51505c,_0x577bcd))['then'](function(_0x512b68){_0x3a0ccf(_0x512b68);})['catch'](function(_0x3c35cb){_0xa6116f(_0x3c35cb);});}});}Fax[_0x0b4d('0x20')][_0x0b4d('0x5b')]=function(_0x422511,_0x5efa83){var _0x1a89ea=this;return new BPromise(function(_0x1eebc7,_0x29d6da){var _0x5de047=uuid['v4']();var _0xed98b=ut[_0x0b4d('0x6a')](_0x422511,_0x5efa83);_0x1a89ea['actions'][_0x5de047]=new Action(_0x5de047,_0x5efa83,_0x422511);var _0x394b98=_0x1a89ea[_0x0b4d('0xf')][_0x5de047];if(path['parse'](_0x422511[_0x0b4d('0x65')])[_0x0b4d('0x6b')]===_0x0b4d('0x41')){originate(_0x394b98,_0xed98b,!![])[_0x0b4d('0x3e')](function(_0x1423d2){_0x1eebc7(_0x1423d2);})[_0x0b4d('0x42')](function(_0x1ff3c8){_0x29d6da(_0x1ff3c8);});}else{originate(_0x394b98,_0xed98b,![])[_0x0b4d('0x3e')](function(_0x5cbcc3){_0x1eebc7(_0x5cbcc3);})[_0x0b4d('0x42')](function(_0x575a8f){_0x29d6da(_0x575a8f);});}});};Fax[_0x0b4d('0x20')]['isTrunkReachable']=function(_0x5687fa){return!_[_0x0b4d('0x6c')](_0x5687fa)&&!_[_0x0b4d('0x6c')](_0x5687fa[_0x0b4d('0x27')])&&!_['isNil'](_0x5687fa['active'])&&_0x5687fa[_0x0b4d('0x6d')]&&!_[_0x0b4d('0x6c')](this['trunks'][util['format']('SIP/%s',_0x5687fa['name'])])&&!_['isNil'](this['trunks'][util[_0x0b4d('0x64')]('SIP/%s',_0x5687fa[_0x0b4d('0x27')])][_0x0b4d('0x31')])&&(this[_0x0b4d('0xe')][util['format'](_0x0b4d('0x6e'),_0x5687fa[_0x0b4d('0x27')])]['status']==='reachable'||this[_0x0b4d('0xe')][util['format'](_0x0b4d('0x6e'),_0x5687fa[_0x0b4d('0x27')])][_0x0b4d('0x31')]===_0x0b4d('0x6f'));};Fax[_0x0b4d('0x20')][_0x0b4d('0x60')]=function(_0x1f8caa,_0x5e4e45){if(!this[_0x0b4d('0x70')](_0x1f8caa)){ut[_0x0b4d('0x4c')](_0x0b4d('0x71'),_[_0x0b4d('0x6c')](_0x1f8caa)?'':_0x1f8caa['name']+'\x20Trunk\x20is\x20not\x20active');return{'isValid':![],'message':_0x0b4d('0x72')};}if(_['isNil'](_0x5e4e45[_0x0b4d('0x6')])){ut['logger'](_0x0b4d('0x73'),JSON['stringify'](_0x5e4e45));return{'isValid':![],'message':'Empty\x20Fax'};}if(_[_0x0b4d('0x6c')](_0x5e4e45[_0x0b4d('0x65')])){ut[_0x0b4d('0x4c')]('[Fax][checkTrunk][Empty\x20path]',JSON[_0x0b4d('0x44')](_0x5e4e45));return{'isValid':![],'message':_0x0b4d('0x74')};}return{'isValid':!![],'message':'Is\x20Valid'};};module[_0x0b4d('0x75')]=Fax;
\ No newline at end of file
+var _0x44f3=['unmonitored','[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','util','lodash','bluebird','uuid','moment','./util/gs','../../../config/logger','fax','../ami','./rpcDb','./channel','./util/util','./action','../rpc/faxAccount','../rpc/faxMessage','channels','trunks','actions','newchannel','syncNewchannel','bind','syncVarSet','newstate','syncNewState','newexten','syncNewExten','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','originateresponse','syncOriginateResponse','prototype','context','faxAccounts','hasOwnProperty','exten','localstationid','uniqueid','channel','name','info','\x20syncNewchannel\x20','variable','value','channelstate','channelstatedesc','operation','status','filename','remotestationid','pagestransferred','resolution','transferrate','calleridnum','\x20result\x20conversion\x20file\x20','message','create','parse','.pdf','application/pdf','then','notify','catch','stringify','\x20receiveFax\x20','merge','pick','response','reason','AttachmentId','update','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','syncHangup','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','updateStatus','SENDING\x20FAILED:\x20','faxstatusstring','execOriginate','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','Fax\x20failed','checkAfterSend','checkTrunk','Trunk','isValid','Trunk\x20Reachable','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','path','execute','%s/%s.tif','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','addVariables','ext','isTrunkReachable','isNil','active','SIP/%s'];(function(_0x7bcf9e,_0x4a2f6f){var _0x41a71e=function(_0x33223d){while(--_0x33223d){_0x7bcf9e['push'](_0x7bcf9e['shift']());}};_0x41a71e(++_0x4a2f6f);}(_0x44f3,0x80));var _0x344f=function(_0x23afd7,_0x630e09){_0x23afd7=_0x23afd7-0x0;var _0x5e529b=_0x44f3[_0x23afd7];return _0x5e529b;};'use strict';var util=require(_0x344f('0x0'));var _=require(_0x344f('0x1'));var BPromise=require(_0x344f('0x2'));var uuid=require(_0x344f('0x3'));var moment=require(_0x344f('0x4'));var path=require('path');var tiff2pdf=require('tiff2pdf');var gs=require(_0x344f('0x5'));var logger=require(_0x344f('0x6'))(_0x344f('0x7'));var ami=require(_0x344f('0x8'));var rpcDb=require(_0x344f('0x9'));var Channel=require(_0x344f('0xa'));var ut=require(_0x344f('0xb'));var Action=require(_0x344f('0xc'));var faxAccount=require(_0x344f('0xd'));var attachment=require('../rpc/attachment');var faxMessage=require(_0x344f('0xe'));function Fax(_0x42be22){this[_0x344f('0xf')]={};this['faxAccounts']=_0x42be22['faxAccounts'];this[_0x344f('0x10')]=_0x42be22[_0x344f('0x10')];this[_0x344f('0x11')]={};ami['on'](_0x344f('0x12'),this[_0x344f('0x13')][_0x344f('0x14')](this));ami['on']('varset',this[_0x344f('0x15')][_0x344f('0x14')](this));ami['on'](_0x344f('0x16'),this[_0x344f('0x17')][_0x344f('0x14')](this));ami['on'](_0x344f('0x18'),this[_0x344f('0x19')][_0x344f('0x14')](this));ami['on'](_0x344f('0x1a'),this[_0x344f('0x1b')]['bind'](this));ami['on'](_0x344f('0x1c'),this[_0x344f('0x1d')]['bind'](this));ami['on']('hangup',this['syncHangup'][_0x344f('0x14')](this));ami['on'](_0x344f('0x1e'),this[_0x344f('0x1f')][_0x344f('0x14')](this));}Fax[_0x344f('0x20')][_0x344f('0x13')]=function(_0x34d3c8){if(_0x34d3c8[_0x344f('0x21')]==='from-voip-provider'){for(var _0x3e3fe9 in this[_0x344f('0x22')]){if(this[_0x344f('0x22')][_0x344f('0x23')](_0x3e3fe9)){if(_0x34d3c8[_0x344f('0x24')]===this['faxAccounts'][_0x3e3fe9][_0x344f('0x25')]){this[_0x344f('0xf')][_0x34d3c8[_0x344f('0x26')]]={};this['channels'][_0x34d3c8[_0x344f('0x26')]][_0x344f('0x27')]=_0x34d3c8['channel'];this[_0x344f('0xf')][_0x34d3c8[_0x344f('0x26')]]['id']=this[_0x344f('0x22')][_0x3e3fe9]['id'];this[_0x344f('0xf')][_0x34d3c8[_0x344f('0x26')]][_0x344f('0x28')]=this[_0x344f('0x22')][_0x3e3fe9]['name'];logger[_0x344f('0x29')](_0x34d3c8[_0x344f('0x26')],_0x344f('0x2a'));}}}}if(this[_0x344f('0x11')][_0x34d3c8['uniqueid']]){this[_0x344f('0xf')][_0x34d3c8[_0x344f('0x26')]]={};this[_0x344f('0xf')][_0x34d3c8[_0x344f('0x26')]][_0x344f('0x27')]=_0x34d3c8[_0x344f('0x27')];logger['info'](_0x34d3c8[_0x344f('0x26')],'\x20syncNewchannel\x20');}};Fax['prototype'][_0x344f('0x15')]=function(_0xcf17fe){if(this[_0x344f('0xf')][_0xcf17fe['uniqueid']]){for(var _0x1642e6 in _0xcf17fe[_0x344f('0x2b')]){if(_0xcf17fe[_0x344f('0x2b')][_0x344f('0x23')](_0x1642e6)){this[_0x344f('0xf')][_0xcf17fe[_0x344f('0x26')]][_0x1642e6]=_0xcf17fe[_0x344f('0x2c')];}}}};Fax[_0x344f('0x20')][_0x344f('0x17')]=function(_0x1c16ee){if(this[_0x344f('0xf')][_0x1c16ee[_0x344f('0x26')]]){this[_0x344f('0xf')][_0x1c16ee['uniqueid']][_0x344f('0x2d')]=_0x1c16ee[_0x344f('0x2d')];this[_0x344f('0xf')][_0x1c16ee[_0x344f('0x26')]][_0x344f('0x2e')]=_0x1c16ee[_0x344f('0x2e')];}};Fax['prototype'][_0x344f('0x19')]=function(_0x4fdac7){if(this[_0x344f('0xf')][_0x4fdac7[_0x344f('0x26')]]){for(var _0x565180 in _0x4fdac7['variable']){if(_0x4fdac7[_0x344f('0x2b')][_0x344f('0x23')](_0x565180)){this['channels'][_0x4fdac7[_0x344f('0x26')]][_0x565180]=_0x4fdac7['value'];}}}};Fax[_0x344f('0x20')][_0x344f('0x1b')]=function(_0x56d338){if(this[_0x344f('0xf')][_0x56d338[_0x344f('0x26')]]){this[_0x344f('0xf')][_0x56d338['uniqueid']][_0x344f('0x2f')]=_0x56d338[_0x344f('0x2f')];this['channels'][_0x56d338['uniqueid']][_0x344f('0x30')]=_0x56d338[_0x344f('0x30')];this[_0x344f('0xf')][_0x56d338['uniqueid']][_0x344f('0x25')]=_0x56d338[_0x344f('0x25')];this[_0x344f('0xf')][_0x56d338[_0x344f('0x26')]][_0x344f('0x31')]=_0x56d338[_0x344f('0x31')];logger[_0x344f('0x29')](_0x56d338['uniqueid'],'\x20syncFaxStatus\x20');}};Fax[_0x344f('0x20')][_0x344f('0x1d')]=function(_0x36d317){var _0x5ca2af=this;if(this[_0x344f('0xf')][_0x36d317[_0x344f('0x26')]]){var _0x50d538=this[_0x344f('0xf')][_0x36d317['uniqueid']]['id'];this[_0x344f('0xf')][_0x36d317[_0x344f('0x26')]][_0x344f('0x32')]=_0x36d317[_0x344f('0x32')];this['channels'][_0x36d317[_0x344f('0x26')]][_0x344f('0x33')]=_0x36d317[_0x344f('0x33')];this[_0x344f('0xf')][_0x36d317[_0x344f('0x26')]][_0x344f('0x25')]=_0x36d317[_0x344f('0x25')];this[_0x344f('0xf')][_0x36d317['uniqueid']][_0x344f('0x34')]=_0x36d317['resolution'];this['channels'][_0x36d317['uniqueid']]['transferrate']=_0x36d317[_0x344f('0x35')];this[_0x344f('0xf')][_0x36d317[_0x344f('0x26')]][_0x344f('0x31')]=_0x36d317[_0x344f('0x31')];this[_0x344f('0xf')][_0x36d317[_0x344f('0x26')]][_0x344f('0x36')]=_0x36d317[_0x344f('0x36')];if(this[_0x344f('0xf')][_0x36d317[_0x344f('0x26')]][_0x344f('0x33')]>0x0){tiff2pdf(_0x36d317['filename'],'/var/opt/motion2/server/files/attachments/',function(_0x502343){logger['info'](_0x36d317[_0x344f('0x26')],_0x344f('0x37'),_0x502343[_0x344f('0x38')]);attachment[_0x344f('0x39')]({'name':path['parse'](_0x36d317['filename'])['name'],'basename':path[_0x344f('0x3a')](_0x36d317[_0x344f('0x31')])['name']+_0x344f('0x3b'),'type':_0x344f('0x3c')})[_0x344f('0x3d')](function(_0xc67ca6){faxAccount[_0x344f('0x3e')](_0x50d538,{'from':_0x36d317['calleridnum'],'mapKey':'fax','body':path[_0x344f('0x3a')](_0x36d317['filename'])[_0x344f('0x28')]+'.pdf','AttachmentId':_0xc67ca6['id']})[_0x344f('0x3f')](function(_0x550c9d){logger['error'](_0x36d317['uniqueid'],'\x20notify\x20',JSON[_0x344f('0x40')](_0x550c9d));});})[_0x344f('0x3f')](function(_0x4d68f0){logger['error'](_0x36d317[_0x344f('0x26')],_0x344f('0x41'),JSON[_0x344f('0x40')](_0x4d68f0));});});}logger['info'](_0x36d317[_0x344f('0x26')],_0x344f('0x41'));}};Fax[_0x344f('0x20')][_0x344f('0x1f')]=function(_0xa6b536){if(this[_0x344f('0x11')][_0xa6b536[_0x344f('0x26')]]){_[_0x344f('0x42')](this[_0x344f('0xf')][_0xa6b536[_0x344f('0x26')]],_[_0x344f('0x43')](_0xa6b536,[_0x344f('0x44'),_0x344f('0x45')]));}};function updateStatus(_0xac6c0b){if(_0xac6c0b[_0x344f('0x46')]){faxMessage[_0x344f('0x47')](_0xac6c0b[_0x344f('0x46')],{'failMessage':_0x344f('0x48')})[_0x344f('0x3d')](function(_0x3bff82){ut[_0x344f('0x49')](_0x344f('0x4a'),_0x3bff82);})[_0x344f('0x3f')](function(_0x122b87){ut['logger'](_0x344f('0x4b'),_0x122b87);});}else{ut[_0x344f('0x49')](_0x344f('0x4c'));}}Fax['prototype']['updateStatus']=function(_0x58a98e,_0x3d67cf,_0x211ce6){var _0x428fc3=this;var _0x2238ab={};if(_0x3d67cf){_0x2238ab={'read':_0x3d67cf};}else{_0x2238ab={'failMessage':_0x211ce6};}if(this[_0x344f('0x11')][_0x58a98e][_0x344f('0x46')]){faxMessage[_0x344f('0x47')](this['actions'][_0x58a98e][_0x344f('0x46')],_0x2238ab)[_0x344f('0x3d')](function(_0x538255){ut[_0x344f('0x49')](_0x344f('0x4d'),_0x538255);})[_0x344f('0x3f')](function(_0x51f85d){ut['logger'](_0x344f('0x4e'),_0x51f85d);})[_0x344f('0x4f')](function(){delete _0x428fc3[_0x344f('0xf')][_0x58a98e];delete _0x428fc3[_0x344f('0x11')][_0x58a98e];});}else{ut[_0x344f('0x49')](_0x344f('0x50'));delete this[_0x344f('0xf')][_0x58a98e];delete this[_0x344f('0x11')][_0x58a98e];}};Fax[_0x344f('0x20')][_0x344f('0x51')]=function(_0x48c09b){var _0x18e011=this;if(this[_0x344f('0xf')][_0x48c09b[_0x344f('0x26')]]){if(this['actions'][_0x48c09b[_0x344f('0x26')]]){this[_0x344f('0xf')][_0x48c09b[_0x344f('0x26')]]['id']=this[_0x344f('0x11')][_0x48c09b['uniqueid']]['id'];this[_0x344f('0xf')][_0x48c09b['uniqueid']][_0x344f('0x28')]=this[_0x344f('0x11')][_0x48c09b['uniqueid']][_0x344f('0x28')];}logger[_0x344f('0x29')](_0x48c09b['uniqueid'],this['actions'][_0x48c09b[_0x344f('0x26')]]?_0x344f('0x52'):_0x344f('0x53'),JSON[_0x344f('0x40')](this[_0x344f('0xf')][_0x48c09b[_0x344f('0x26')]]));if(this[_0x344f('0x11')][_0x48c09b[_0x344f('0x26')]]){if(this[_0x344f('0xf')][_0x48c09b[_0x344f('0x26')]][_0x344f('0x54')]>0x0&&this[_0x344f('0xf')][_0x48c09b['uniqueid']][_0x344f('0x1a')]===_0x344f('0x55')){this[_0x344f('0x56')](_0x48c09b['uniqueid'],!![]);}else{this[_0x344f('0x56')](_0x48c09b[_0x344f('0x26')],![],this[_0x344f('0xf')][_0x48c09b[_0x344f('0x26')]]['faxstatusstring']?_0x344f('0x57')+this['channels'][_0x48c09b[_0x344f('0x26')]][_0x344f('0x58')]:'SENDING\x20FAILED');}}}};Fax['prototype']['send']=function(_0x6749cc){var _0x179827=this;return new BPromise(function(_0x344fc3,_0x8a9998){_0x179827[_0x344f('0x59')](_0x6749cc,_0x179827[_0x344f('0x22')][_0x6749cc[_0x344f('0x5a')]])[_0x344f('0x3d')](function(_0x3f342d){ut[_0x344f('0x49')](_0x344f('0x5b'),_0x3f342d);_0x344fc3(ut['message'](_0x344f('0x5c')));})[_0x344f('0x3f')](function(_0x3f2345){ut['logger']('[Fax][execOriginate][failure]',_0x3f2345);updateStatus(_0x6749cc);_0x8a9998(ut['message'](_0x344f('0x5d')));});});};Fax[_0x344f('0x20')][_0x344f('0x5e')]=function(_0x366bc3){var _0x31b47d=this;return new BPromise(function(_0x2bfeaa,_0x3ec089){var _0x59b556=_0x31b47d[_0x344f('0x5f')](_0x31b47d[_0x344f('0x22')][_0x366bc3['FaxAccountId']][_0x344f('0x60')],_0x366bc3);if(_0x59b556[_0x344f('0x61')]){_0x2bfeaa(ut[_0x344f('0x38')](_0x344f('0x62')));}else{_0x3ec089(ut[_0x344f('0x38')](_0x59b556[_0x344f('0x38')]));}});};function originate(_0x33ca76,_0x53a9ba,_0x427b04){return new BPromise(function(_0x24957c,_0x251e28){if(_0x427b04){var _0x3cce9b=util[_0x344f('0x63')](_0x344f('0x64'),path[_0x344f('0x3a')](_0x33ca76[_0x344f('0x65')])[_0x344f('0x28')],_0x33ca76['path']);gs[_0x344f('0x66')](_0x3cce9b)[_0x344f('0x3d')](function(){_0x33ca76[_0x344f('0x65')]=util['format'](_0x344f('0x67'),path[_0x344f('0x3a')](_0x33ca76['path'])['dir'],path[_0x344f('0x3a')](_0x33ca76[_0x344f('0x65')])[_0x344f('0x28')]);_0x53a9ba[_0x344f('0x68')]=_0x33ca76[_0x344f('0x65')];ut[_0x344f('0x49')](_0x344f('0x69'),'');ami[_0x344f('0x6a')](ut[_0x344f('0x6b')](_0x33ca76,_0x53a9ba))['then'](function(_0x2601be){_0x24957c(_0x2601be);})[_0x344f('0x3f')](function(_0x3d7d38){_0x251e28(_0x3d7d38);});})[_0x344f('0x3f')](function(_0x483c48){_0x251e28(_0x483c48);});}else{ami[_0x344f('0x6a')](ut[_0x344f('0x6b')](_0x33ca76,_0x53a9ba))['then'](function(_0x5d9a48){_0x24957c(_0x5d9a48);})[_0x344f('0x3f')](function(_0x3123f0){_0x251e28(_0x3123f0);});}});}Fax['prototype'][_0x344f('0x59')]=function(_0x483283,_0xf2fb5b){var _0x11306d=this;return new BPromise(function(_0x212a0b,_0x44d739){var _0x2d8383=uuid['v4']();var _0x3576cf=ut[_0x344f('0x6c')](_0x483283,_0xf2fb5b);_0x11306d[_0x344f('0x11')][_0x2d8383]=new Action(_0x2d8383,_0xf2fb5b,_0x483283);var _0x4e0a60=_0x11306d[_0x344f('0x11')][_0x2d8383];if(path['parse'](_0x483283['path'])[_0x344f('0x6d')]==='.pdf'){originate(_0x4e0a60,_0x3576cf,!![])[_0x344f('0x3d')](function(_0x27dc92){_0x212a0b(_0x27dc92);})[_0x344f('0x3f')](function(_0x15a5b4){_0x44d739(_0x15a5b4);});}else{originate(_0x4e0a60,_0x3576cf,![])['then'](function(_0x4f3be4){_0x212a0b(_0x4f3be4);})[_0x344f('0x3f')](function(_0x3cea38){_0x44d739(_0x3cea38);});}});};Fax[_0x344f('0x20')][_0x344f('0x6e')]=function(_0x4919d9){return!_[_0x344f('0x6f')](_0x4919d9)&&!_[_0x344f('0x6f')](_0x4919d9[_0x344f('0x28')])&&!_['isNil'](_0x4919d9['active'])&&_0x4919d9[_0x344f('0x70')]&&!_[_0x344f('0x6f')](this['trunks'][util[_0x344f('0x63')](_0x344f('0x71'),_0x4919d9[_0x344f('0x28')])])&&!_[_0x344f('0x6f')](this[_0x344f('0x10')][util['format'](_0x344f('0x71'),_0x4919d9['name'])]['status'])&&(this['trunks'][util['format'](_0x344f('0x71'),_0x4919d9[_0x344f('0x28')])][_0x344f('0x30')]==='reachable'||this['trunks'][util[_0x344f('0x63')]('SIP/%s',_0x4919d9['name'])][_0x344f('0x30')]===_0x344f('0x72'));};Fax[_0x344f('0x20')][_0x344f('0x5f')]=function(_0x109f09,_0x43fa5c){if(!this[_0x344f('0x6e')](_0x109f09)){ut['logger'](_0x344f('0x73'),_['isNil'](_0x109f09)?'':_0x109f09[_0x344f('0x28')]+_0x344f('0x74'));return{'isValid':![],'message':_0x344f('0x75')};}if(_[_0x344f('0x6f')](_0x43fa5c[_0x344f('0x7')])){ut[_0x344f('0x49')]('[Fax][checkTrunk][Empty\x20Fax]',JSON[_0x344f('0x40')](_0x43fa5c));return{'isValid':![],'message':_0x344f('0x76')};}if(_[_0x344f('0x6f')](_0x43fa5c[_0x344f('0x65')])){ut[_0x344f('0x49')](_0x344f('0x77'),JSON['stringify'](_0x43fa5c));return{'isValid':![],'message':_0x344f('0x78')};}return{'isValid':!![],'message':'Is\x20Valid'};};module['exports']=Fax;
\ No newline at end of file
index 47d4db2..79d56f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd661=['util','../../../config/logger','preview','lodash','../rpc/faxAccount','error','inspect','notify','resolve','then','[Notify]\x20'];(function(_0x2ed67b,_0x3e6665){var _0x3103af=function(_0x545ac4){while(--_0x545ac4){_0x2ed67b['push'](_0x2ed67b['shift']());}};_0x3103af(++_0x3e6665);}(_0xd661,0x18c));var _0x1d66=function(_0x28801a,_0x2aaecf){_0x28801a=_0x28801a-0x0;var _0x21843a=_0xd661[_0x28801a];return _0x21843a;};'use strict';var util=require(_0x1d66('0x0'));var BPromise=require('bluebird');var logger=require(_0x1d66('0x1'))(_0x1d66('0x2'));var _=require(_0x1d66('0x3'));var faxAccount=require(_0x1d66('0x4'));function loggerCatch(_0x212147){return function(_0x1fd137){logger[_0x1d66('0x5')](_0x212147,util[_0x1d66('0x6')](_0x1fd137,{'showHidden':![],'depth':null}));};}exports[_0x1d66('0x7')]=function(_0x3c187a,_0x45519e){return BPromise[_0x1d66('0x8')]()[_0x1d66('0x9')](faxAccount[_0x1d66('0x7')](_0x3c187a,_0x45519e))['catch'](loggerCatch(_0x1d66('0xa')));};
\ No newline at end of file
+var _0xe244=['resolve','catch','[Notify]\x20','util','bluebird','../../../config/logger','preview','lodash','error','inspect','notify'];(function(_0x31babf,_0x103fea){var _0x35decb=function(_0x439eff){while(--_0x439eff){_0x31babf['push'](_0x31babf['shift']());}};_0x35decb(++_0x103fea);}(_0xe244,0x14d));var _0x4e24=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0xe244[_0x5c351c];return _0x26f3b3;};'use strict';var util=require(_0x4e24('0x0'));var BPromise=require(_0x4e24('0x1'));var logger=require(_0x4e24('0x2'))(_0x4e24('0x3'));var _=require(_0x4e24('0x4'));var faxAccount=require('../rpc/faxAccount');function loggerCatch(_0x24eccb){return function(_0x4ef227){logger[_0x4e24('0x5')](_0x24eccb,util[_0x4e24('0x6')](_0x4ef227,{'showHidden':![],'depth':null}));};}exports[_0x4e24('0x7')]=function(_0x5244d2,_0x5a533c){return BPromise[_0x4e24('0x8')]()['then'](faxAccount['notify'](_0x5244d2,_0x5a533c))[_0x4e24('0x9')](loggerCatch(_0x4e24('0xa')));};
\ No newline at end of file
index 1a6970b..93673fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf528=['Exec\x20gs','\x20Error\x20:','inspect','util','../../../../config/logger','fax','child_process','execute','info'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0xf528,0xc0));var _0x8f52=function(_0x1f9e75,_0x1d75da){_0x1f9e75=_0x1f9e75-0x0;var _0x5cfb60=_0xf528[_0x1f9e75];return _0x5cfb60;};'use strict';var util=require(_0x8f52('0x0'));var logger=require(_0x8f52('0x1'))(_0x8f52('0x2'));var BPromise=require('bluebird');var exec=require(_0x8f52('0x3'))['exec'];exports[_0x8f52('0x4')]=function(_0xecfee){return new BPromise(function(_0x56ab46,_0x433204){exec(_0xecfee,function(_0x4ce849,_0x321f7f,_0x441e09){logger[_0x8f52('0x5')](_0x8f52('0x6'),_0x321f7f);if(_0x4ce849){logger[_0x8f52('0x5')](_0x8f52('0x6'),_0x8f52('0x7'),util[_0x8f52('0x8')](_0x4ce849,{'showHidden':![],'depth':null}),_0x321f7f,_0x441e09);_0x433204(_0x4ce849);}_0x56ab46(_0x321f7f);});});};
\ No newline at end of file
+var _0xaa03=['execute','info','Exec\x20gs','inspect','../../../../config/logger','bluebird','child_process','exec'];(function(_0x342baa,_0x4a110f){var _0x1208f3=function(_0x56a645){while(--_0x56a645){_0x342baa['push'](_0x342baa['shift']());}};_0x1208f3(++_0x4a110f);}(_0xaa03,0x1f4));var _0x3aa0=function(_0x59d604,_0x2da443){_0x59d604=_0x59d604-0x0;var _0x57e5b1=_0xaa03[_0x59d604];return _0x57e5b1;};'use strict';var util=require('util');var logger=require(_0x3aa0('0x0'))('fax');var BPromise=require(_0x3aa0('0x1'));var exec=require(_0x3aa0('0x2'))[_0x3aa0('0x3')];exports[_0x3aa0('0x4')]=function(_0x25c04b){return new BPromise(function(_0x41b67a,_0x2faf39){exec(_0x25c04b,function(_0x2220d3,_0x9227bb,_0x4d85a6){logger[_0x3aa0('0x5')]('Exec\x20gs',_0x9227bb);if(_0x2220d3){logger[_0x3aa0('0x5')](_0x3aa0('0x6'),'\x20Error\x20:',util[_0x3aa0('0x7')](_0x2220d3,{'showHidden':![],'depth':null}),_0x9227bb,_0x4d85a6);_0x2faf39(_0x2220d3);}_0x41b67a(_0x9227bb);});});};
\ No newline at end of file
index cca1e7b..dade2c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6fb=['from-sip','\x22%s\x22\x20<%s>','uniqueid','util','lodash','../../../../config/logger','fax','message','inspect','addVariables','ecm','headerinfo','format','\x22%s\x22','modem','gateway','faxdetect','localstationid','path','originate','channel'];(function(_0x56176e,_0x4562a2){var _0x299c30=function(_0x3a91b6){while(--_0x3a91b6){_0x56176e['push'](_0x56176e['shift']());}};_0x299c30(++_0x4562a2);}(_0xa6fb,0xab));var _0xba6f=function(_0x402874,_0x14e055){_0x402874=_0x402874-0x0;var _0x2ba7f6=_0xa6fb[_0x402874];return _0x2ba7f6;};'use strict';var util=require(_0xba6f('0x0'));var _=require(_0xba6f('0x1'));var moment=require('moment');var logger=require(_0xba6f('0x2'))(_0xba6f('0x3'));exports[_0xba6f('0x4')]=function(_0x27d905){return{'message':_0x27d905};};exports['logger']=function(_0x27dd22,_0x96eea0){logger['info'](_0x27dd22,util[_0xba6f('0x5')](_0x96eea0,{'showHidden':![],'depth':null}));};exports[_0xba6f('0x6')]=function(_0x5c288c,_0x349902){var _0x1f1b1d={'XMF-ECM':_0x349902[_0xba6f('0x7')],'XMF-HEADERINFO':_0x349902[_0xba6f('0x8')],'XMF-MINRATE':_0x349902['minrate'],'XMF-MAXRATE':_0x349902['maxrate'],'XMF-MODEM':util[_0xba6f('0x9')](_0xba6f('0xa'),_0x349902[_0xba6f('0xb')]),'XMF-GATEWAY':_0x349902[_0xba6f('0xc')],'XMF-FAXDETECT':_0x349902[_0xba6f('0xd')],'XMF-T38TIMEOUT':_0x349902['t38timeout'],'XMF-LOCALSTATIONID':_0x349902[_0xba6f('0xe')],'XMF-PATH':_0x5c288c[_0xba6f('0xf')]};return _0x1f1b1d;};exports['variablesAction']=function(_0x510e57,_0x328d66){return{'actionid':_0x510e57['uniqueid'],'action':_0xba6f('0x10'),'channel':_0x510e57[_0xba6f('0x11')],'Exten':'xcally-motion-fax','Context':_0xba6f('0x12'),'Priority':'1','callerid':util['format'](_0xba6f('0x13'),_0x510e57[_0xba6f('0x8')]?_0x510e57[_0xba6f('0x8')]:'',_0x510e57['localstationid']),'variable':_0x328d66,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x510e57[_0xba6f('0x14')]};};
\ No newline at end of file
+var _0x23a4=['originate','\x22%s\x22\x20<%s>','util','lodash','moment','fax','message','inspect','addVariables','headerinfo','minrate','maxrate','format','\x22%s\x22','modem','gateway','faxdetect','t38timeout','localstationid','path','variablesAction','uniqueid'];(function(_0xa6180a,_0x508ff9){var _0x10f626=function(_0x1bf882){while(--_0x1bf882){_0xa6180a['push'](_0xa6180a['shift']());}};_0x10f626(++_0x508ff9);}(_0x23a4,0xde));var _0x423a=function(_0x1a8338,_0x9273a2){_0x1a8338=_0x1a8338-0x0;var _0x167b52=_0x23a4[_0x1a8338];return _0x167b52;};'use strict';var util=require(_0x423a('0x0'));var _=require(_0x423a('0x1'));var moment=require(_0x423a('0x2'));var logger=require('../../../../config/logger')(_0x423a('0x3'));exports[_0x423a('0x4')]=function(_0x48204c){return{'message':_0x48204c};};exports['logger']=function(_0xb45add,_0x241ff6){logger['info'](_0xb45add,util[_0x423a('0x5')](_0x241ff6,{'showHidden':![],'depth':null}));};exports[_0x423a('0x6')]=function(_0x1a166a,_0x56a13c){var _0x46ec8f={'XMF-ECM':_0x56a13c['ecm'],'XMF-HEADERINFO':_0x56a13c[_0x423a('0x7')],'XMF-MINRATE':_0x56a13c[_0x423a('0x8')],'XMF-MAXRATE':_0x56a13c[_0x423a('0x9')],'XMF-MODEM':util[_0x423a('0xa')](_0x423a('0xb'),_0x56a13c[_0x423a('0xc')]),'XMF-GATEWAY':_0x56a13c[_0x423a('0xd')],'XMF-FAXDETECT':_0x56a13c[_0x423a('0xe')],'XMF-T38TIMEOUT':_0x56a13c[_0x423a('0xf')],'XMF-LOCALSTATIONID':_0x56a13c[_0x423a('0x10')],'XMF-PATH':_0x1a166a[_0x423a('0x11')]};return _0x46ec8f;};exports[_0x423a('0x12')]=function(_0x57cd26,_0x1dfbd3){return{'actionid':_0x57cd26[_0x423a('0x13')],'action':_0x423a('0x14'),'channel':_0x57cd26['channel'],'Exten':'xcally-motion-fax','Context':'from-sip','Priority':'1','callerid':util['format'](_0x423a('0x15'),_0x57cd26[_0x423a('0x7')]?_0x57cd26[_0x423a('0x7')]:'',_0x57cd26[_0x423a('0x10')]),'variable':_0x1dfbd3,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x57cd26['uniqueid']};};
\ No newline at end of file
index 9bb7522..5dbac5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3e0=['initDynamics365Accounts','getCampaigns','getVoiceExtensions','initVoiceExtensions','initFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','error','[index.js][initParams]','listen','sync','[index.js][main]','bluebird','util','moment','./report','./acw','./trigger','./fax','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trigger','./rpc/template','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','ami','get','hour','resolve','then','getTelephones','initTelephones','getTrunks','initTrunks','getVoiceQueues','initVoiceQueues','getTriggers','initTriggers','getTemplates','initTemplates','getZendeskAccounts','initZendeskAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','getVtigerAccounts','initVtigerAccounts','initFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','getDynamics365Accounts'];(function(_0x2efe86,_0x4b6c3f){var _0x48e01c=function(_0x5b1412){while(--_0x5b1412){_0x2efe86['push'](_0x2efe86['shift']());}};_0x48e01c(++_0x4b6c3f);}(_0xc3e0,0x132));var _0x0c3e=function(_0x1eaf0c,_0xa846e5){_0x1eaf0c=_0x1eaf0c-0x0;var _0x4f929f=_0xc3e0[_0x1eaf0c];return _0x4f929f;};'use strict';var BPromise=require(_0x0c3e('0x0'));var util=require(_0x0c3e('0x1'));var moment=require(_0x0c3e('0x2'));var server=require('./server');var Realtime=require('./realtime');var Report=require(_0x0c3e('0x3'));var Acw=require(_0x0c3e('0x4'));var Trigger=require(_0x0c3e('0x5'));var Dialer=require('./dialer');var Preview=require('./preview');var Fax=require(_0x0c3e('0x6'));var user=require('./rpc/user');var voiceQueue=require(_0x0c3e('0x7'));var voiceQueueReport=require(_0x0c3e('0x8'));var voiceCallReport=require(_0x0c3e('0x9'));var trunk=require('./rpc/trunk');var trigger=require(_0x0c3e('0xa'));var template=require(_0x0c3e('0xb'));var cmHopperHistory=require('./rpc/cmHopperHistory');var campaign=require(_0x0c3e('0xc'));var voiceExtension=require(_0x0c3e('0xd'));var faxAccount=require(_0x0c3e('0xe'));var zendesk=require('./rpc/integrations/zendesk');var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require(_0x0c3e('0xf'));var freshdesk=require(_0x0c3e('0x10'));var desk=require(_0x0c3e('0x11'));var zoho=require(_0x0c3e('0x12'));var vtiger=require(_0x0c3e('0x13'));var freshsales=require(_0x0c3e('0x14'));var servicenow=require(_0x0c3e('0x15'));var dynamics365=require(_0x0c3e('0x16'));var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var logger=require('../../config/logger')(_0x0c3e('0x17'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x0c3e('0x18')](_0x0c3e('0x19'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x0c3e('0x18')]('hour')===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x0c3e('0x1a')]()[_0x0c3e('0x1b')](user['getAgents']())[_0x0c3e('0x1b')](realtime['initAgents']())[_0x0c3e('0x1b')](user[_0x0c3e('0x1c')]())[_0x0c3e('0x1b')](realtime[_0x0c3e('0x1d')]())[_0x0c3e('0x1b')](trunk[_0x0c3e('0x1e')]())['then'](realtime[_0x0c3e('0x1f')]())[_0x0c3e('0x1b')](voiceQueue[_0x0c3e('0x20')]())[_0x0c3e('0x1b')](realtime[_0x0c3e('0x21')]())[_0x0c3e('0x1b')](trigger[_0x0c3e('0x22')]())[_0x0c3e('0x1b')](realtime[_0x0c3e('0x23')]())[_0x0c3e('0x1b')](template[_0x0c3e('0x24')]())['then'](realtime[_0x0c3e('0x25')]())[_0x0c3e('0x1b')](zendesk[_0x0c3e('0x26')]())[_0x0c3e('0x1b')](realtime[_0x0c3e('0x27')]())[_0x0c3e('0x1b')](salesforce['getSalesforceAccounts']())['then'](realtime[_0x0c3e('0x28')]())[_0x0c3e('0x1b')](sugarcrm[_0x0c3e('0x29')]())['then'](realtime[_0x0c3e('0x2a')]())[_0x0c3e('0x1b')](freshdesk[_0x0c3e('0x2b')]())[_0x0c3e('0x1b')](realtime[_0x0c3e('0x2c')]())[_0x0c3e('0x1b')](desk[_0x0c3e('0x2d')]())[_0x0c3e('0x1b')](realtime[_0x0c3e('0x2e')]())['then'](zoho[_0x0c3e('0x2f')]())[_0x0c3e('0x1b')](realtime['initZohoAccounts']())[_0x0c3e('0x1b')](vtiger[_0x0c3e('0x30')]())['then'](realtime[_0x0c3e('0x31')]())[_0x0c3e('0x1b')](freshsales['getFreshsalesAccounts']())[_0x0c3e('0x1b')](realtime[_0x0c3e('0x32')]())[_0x0c3e('0x1b')](servicenow[_0x0c3e('0x33')]())['then'](realtime[_0x0c3e('0x34')]())[_0x0c3e('0x1b')](dynamics365[_0x0c3e('0x35')]())[_0x0c3e('0x1b')](realtime[_0x0c3e('0x36')]())[_0x0c3e('0x1b')](campaign[_0x0c3e('0x37')]())[_0x0c3e('0x1b')](realtime['initCampaigns']())[_0x0c3e('0x1b')](voiceExtension[_0x0c3e('0x38')]())[_0x0c3e('0x1b')](realtime[_0x0c3e('0x39')]())[_0x0c3e('0x1b')](faxAccount['getFaxAccounts']())['then'](realtime[_0x0c3e('0x3a')]())[_0x0c3e('0x1b')](function(){return realtime;});}function initParams(){return BPromise[_0x0c3e('0x1a')]()[_0x0c3e('0x1b')](voiceQueueReport[_0x0c3e('0x3b')]())[_0x0c3e('0x1b')](realtime[_0x0c3e('0x3c')]())[_0x0c3e('0x1b')](cmHopperHistory[_0x0c3e('0x3d')]())['then'](realtime[_0x0c3e('0x3e')]())[_0x0c3e('0x1b')](cmHopperHistory['getCampaignHopperHistory']())[_0x0c3e('0x1b')](realtime[_0x0c3e('0x3f')]())[_0x0c3e('0x1b')](voiceCallReport[_0x0c3e('0x40')]())[_0x0c3e('0x1b')](realtime[_0x0c3e('0x41')]())[_0x0c3e('0x42')](function(_0x4b7b82){logger[_0x0c3e('0x43')](_0x0c3e('0x44'),util['inspect'](_0x4b7b82,{'showHidden':![],'depth':null}));});}function main(){return server[_0x0c3e('0x45')](realtime,preview,fax)[_0x0c3e('0x1b')](function(_0x64daa2){return initRealtime();})[_0x0c3e('0x1b')](function(){return initParams();})[_0x0c3e('0x1b')](function(){report[_0x0c3e('0x46')]();setInterval(initRealtime,0x1388);})[_0x0c3e('0x42')](function(_0x3c50ea){logger[_0x0c3e('0x43')](_0x0c3e('0x47'),util['inspect'](_0x3c50ea,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
+var _0x7300=['initVoiceQueueReports','initVoiceQueueHopperHistory','getCampaignHopperHistory','catch','error','[index.js][initParams]','inspect','listen','bluebird','util','moment','./server','./report','./acw','./trigger','./dialer','./preview','./rpc/voiceQueue','./rpc/template','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','../../config/logger','ami','hour','get','resolve','getAgents','then','getTelephones','getTrunks','getVoiceQueues','getTemplates','getZendeskAccounts','getSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','initZohoAccounts','initVtigerAccounts','getServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','getFaxAccounts','getVoiceQueueReports'];(function(_0x5d3dff,_0x191cbc){var _0x55f60f=function(_0x4d9898){while(--_0x4d9898){_0x5d3dff['push'](_0x5d3dff['shift']());}};_0x55f60f(++_0x191cbc);}(_0x7300,0x1ac));var _0x0730=function(_0x1718cd,_0x12405f){_0x1718cd=_0x1718cd-0x0;var _0x238ab6=_0x7300[_0x1718cd];return _0x238ab6;};'use strict';var BPromise=require(_0x0730('0x0'));var util=require(_0x0730('0x1'));var moment=require(_0x0730('0x2'));var server=require(_0x0730('0x3'));var Realtime=require('./realtime');var Report=require(_0x0730('0x4'));var Acw=require(_0x0730('0x5'));var Trigger=require(_0x0730('0x6'));var Dialer=require(_0x0730('0x7'));var Preview=require(_0x0730('0x8'));var Fax=require('./fax');var user=require('./rpc/user');var voiceQueue=require(_0x0730('0x9'));var voiceQueueReport=require('./rpc/voiceQueueReport');var voiceCallReport=require('./rpc/voiceCallReport');var trunk=require('./rpc/trunk');var trigger=require('./rpc/trigger');var template=require(_0x0730('0xa'));var cmHopperHistory=require(_0x0730('0xb'));var campaign=require(_0x0730('0xc'));var voiceExtension=require(_0x0730('0xd'));var faxAccount=require('./rpc/faxAccount');var zendesk=require('./rpc/integrations/zendesk');var salesforce=require(_0x0730('0xe'));var sugarcrm=require(_0x0730('0xf'));var freshdesk=require(_0x0730('0x10'));var desk=require(_0x0730('0x11'));var zoho=require(_0x0730('0x12'));var vtiger=require(_0x0730('0x13'));var freshsales=require(_0x0730('0x14'));var servicenow=require(_0x0730('0x15'));var dynamics365=require(_0x0730('0x16'));var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var logger=require(_0x0730('0x17'))(_0x0730('0x18'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()['get'](_0x0730('0x19'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x0730('0x1a')]('hour')===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x0730('0x1b')]()['then'](user[_0x0730('0x1c')]())[_0x0730('0x1d')](realtime['initAgents']())[_0x0730('0x1d')](user[_0x0730('0x1e')]())[_0x0730('0x1d')](realtime['initTelephones']())[_0x0730('0x1d')](trunk[_0x0730('0x1f')]())[_0x0730('0x1d')](realtime['initTrunks']())[_0x0730('0x1d')](voiceQueue[_0x0730('0x20')]())[_0x0730('0x1d')](realtime['initVoiceQueues']())[_0x0730('0x1d')](trigger['getTriggers']())['then'](realtime['initTriggers']())[_0x0730('0x1d')](template[_0x0730('0x21')]())[_0x0730('0x1d')](realtime['initTemplates']())[_0x0730('0x1d')](zendesk[_0x0730('0x22')]())[_0x0730('0x1d')](realtime['initZendeskAccounts']())[_0x0730('0x1d')](salesforce[_0x0730('0x23')]())['then'](realtime['initSalesforceAccounts']())[_0x0730('0x1d')](sugarcrm[_0x0730('0x24')]())[_0x0730('0x1d')](realtime[_0x0730('0x25')]())[_0x0730('0x1d')](freshdesk[_0x0730('0x26')]())[_0x0730('0x1d')](realtime[_0x0730('0x27')]())[_0x0730('0x1d')](desk[_0x0730('0x28')]())[_0x0730('0x1d')](realtime[_0x0730('0x29')]())['then'](zoho['getZohoAccounts']())[_0x0730('0x1d')](realtime[_0x0730('0x2a')]())[_0x0730('0x1d')](vtiger['getVtigerAccounts']())[_0x0730('0x1d')](realtime[_0x0730('0x2b')]())[_0x0730('0x1d')](freshsales['getFreshsalesAccounts']())[_0x0730('0x1d')](realtime['initFreshsalesAccounts']())[_0x0730('0x1d')](servicenow[_0x0730('0x2c')]())['then'](realtime['initServicenowAccounts']())[_0x0730('0x1d')](dynamics365[_0x0730('0x2d')]())[_0x0730('0x1d')](realtime[_0x0730('0x2e')]())[_0x0730('0x1d')](campaign[_0x0730('0x2f')]())['then'](realtime[_0x0730('0x30')]())[_0x0730('0x1d')](voiceExtension[_0x0730('0x31')]())[_0x0730('0x1d')](realtime['initVoiceExtensions']())[_0x0730('0x1d')](faxAccount[_0x0730('0x32')]())['then'](realtime['initFaxAccounts']())[_0x0730('0x1d')](function(){return realtime;});}function initParams(){return BPromise[_0x0730('0x1b')]()[_0x0730('0x1d')](voiceQueueReport[_0x0730('0x33')]())[_0x0730('0x1d')](realtime[_0x0730('0x34')]())[_0x0730('0x1d')](cmHopperHistory['getVoiceQueueHopperHistory']())[_0x0730('0x1d')](realtime[_0x0730('0x35')]())[_0x0730('0x1d')](cmHopperHistory[_0x0730('0x36')]())[_0x0730('0x1d')](realtime['initCampaignHopperHistory']())['then'](voiceCallReport['getVoiceCallReports']())[_0x0730('0x1d')](realtime['initVoiceCallReports']())[_0x0730('0x37')](function(_0x2a8032){logger[_0x0730('0x38')](_0x0730('0x39'),util[_0x0730('0x3a')](_0x2a8032,{'showHidden':![],'depth':null}));});}function main(){return server[_0x0730('0x3b')](realtime,preview,fax)['then'](function(_0x4a9d8a){return initRealtime();})[_0x0730('0x1d')](function(){return initParams();})[_0x0730('0x1d')](function(){report['sync']();setInterval(initRealtime,0x1388);})[_0x0730('0x37')](function(_0x40c4c2){logger[_0x0730('0x38')]('[index.js][main]',util[_0x0730('0x3a')](_0x40c4c2,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
index 4204690..5c98942 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['name','email','accountcode','fullname','unknown','stateTime','status','address','mobile','interface','online','voiceStatus','voiceStatusQueue','onhold','local','updateStatusRealtime','state','idle','inuse','talking','statePause','voiceStatusTime','toNumber','voiceStatusCallerIdNumber','stringify','format','emit','user:presence','exports','moment','md5','ioredis','../../../config/environment','defaults','redis','socket.io-emitter'];(function(_0x338d08,_0x121e50){var _0x2e1a41=function(_0x128f47){while(--_0x128f47){_0x338d08['push'](_0x338d08['shift']());}};_0x2e1a41(++_0x121e50);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x245afe,_0x319cde){_0x245afe=_0x245afe-0x0;var _0x4eefde=_0xcb91[_0x245afe];return _0x4eefde;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cb9('0x0'));var md5=require(_0x1cb9('0x1'));var Redis=require(_0x1cb9('0x2'));var config=require(_0x1cb9('0x3'));config['redis']=_[_0x1cb9('0x4')](config[_0x1cb9('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x1cb9('0x6'))(new Redis(config[_0x1cb9('0x5')]));function Agent(_0x53ffbd){this['id']=_0x53ffbd['id']||0x0;this[_0x1cb9('0x7')]=_0x53ffbd[_0x1cb9('0x7')]||'';this['email']=_0x53ffbd[_0x1cb9('0x8')]||'';this[_0x1cb9('0x9')]=_0x53ffbd['accountcode']||'';this[_0x1cb9('0xa')]=_0x53ffbd['fullname']||'';this['state']=_0x1cb9('0xb');this[_0x1cb9('0xc')]=0x0;this[_0x1cb9('0xd')]=_0x1cb9('0xb');this[_0x1cb9('0xe')]='';this['phone']='';this[_0x1cb9('0xf')]='';this[_0x1cb9('0x10')]='';this[_0x1cb9('0x11')]=_0x53ffbd[_0x1cb9('0x11')]||![];this[_0x1cb9('0x12')]='unknown';this['voiceStatusTime']=0x0;this['voiceStatusCallerIdNumber']='';this[_0x1cb9('0x13')]='';this[_0x1cb9('0x14')]=![];this[_0x1cb9('0x15')]=![];this[_0x1cb9('0x1')]='';}Agent['prototype'][_0x1cb9('0x16')]=function(_0x6ef389){var _0x1b3cd7;if(_0x6ef389&&_0x6ef389[_0x1cb9('0x17')]){_0x1b3cd7=_0x6ef389[_0x1cb9('0x17')]['toLowerCase']();switch(_0x1b3cd7){case'not_inuse':_0x1b3cd7=_0x1cb9('0x18');break;case _0x1cb9('0x19'):_0x1b3cd7=_0x1cb9('0x1a');break;}}if(_0x1b3cd7&&this[_0x1cb9('0x12')]!==_0x1b3cd7||_0x6ef389[_0x1cb9('0x1b')]){this[_0x1cb9('0x1c')]=_[_0x1cb9('0x1d')](moment()['format']('x'));}if(_0x1b3cd7){this['voiceStatus']=_0x1b3cd7;}var _0x1b2fa6={'id':this['id'],'name':this[_0x1cb9('0x7')],'email':this[_0x1cb9('0x8')],'accountcode':this[_0x1cb9('0x9')],'fullname':this[_0x1cb9('0xa')],'state':this[_0x1cb9('0x17')],'stateTime':this[_0x1cb9('0xc')],'status':this['status'],'address':this['address'],'online':this[_0x1cb9('0x11')],'voiceStatus':this['voiceStatus'],'voiceStatusTime':this[_0x1cb9('0x1c')],'voiceStatusCallerIdNumber':this[_0x1cb9('0x1e')],'voiceStatusQueue':this['voiceStatusQueue'],'interface':this['interface'],'onhold':this[_0x1cb9('0x14')]};var _0x325637=md5(JSON[_0x1cb9('0x1f')](_0x1b2fa6));if(this[_0x1cb9('0x1')]!==_0x325637){this[_0x1cb9('0x1')]=_0x325637;io['to'](util[_0x1cb9('0x20')]('user:%s',_0x1b2fa6['name']))[_0x1cb9('0x21')]('user:save',_0x1b2fa6);io[_0x1cb9('0x21')](_0x1cb9('0x22'),_0x1b2fa6);}};module[_0x1cb9('0x23')]=Agent;
\ No newline at end of file
+var _0x70e0=['name','voiceStatusQueue','onhold','stringify','md5','user:%s','user:save','emit','user:presence','lodash','util','moment','../../../config/environment','redis','defaults','socket.io-emitter','email','accountcode','fullname','state','unknown','address','phone','mobile','interface','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','local','toLowerCase','not_inuse','idle','inuse','statePause','toNumber','format'];(function(_0x39964d,_0x503db9){var _0x397d97=function(_0x5b988e){while(--_0x5b988e){_0x39964d['push'](_0x39964d['shift']());}};_0x397d97(++_0x503db9);}(_0x70e0,0x17b));var _0x070e=function(_0x55608b,_0xf17d66){_0x55608b=_0x55608b-0x0;var _0x42b75a=_0x70e0[_0x55608b];return _0x42b75a;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var moment=require(_0x070e('0x2'));var md5=require('md5');var Redis=require('ioredis');var config=require(_0x070e('0x3'));config[_0x070e('0x4')]=_[_0x070e('0x5')](config[_0x070e('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x070e('0x6'))(new Redis(config['redis']));function Agent(_0x46fe68){this['id']=_0x46fe68['id']||0x0;this['name']=_0x46fe68['name']||'';this['email']=_0x46fe68[_0x070e('0x7')]||'';this[_0x070e('0x8')]=_0x46fe68[_0x070e('0x8')]||'';this[_0x070e('0x9')]=_0x46fe68[_0x070e('0x9')]||'';this[_0x070e('0xa')]=_0x070e('0xb');this['stateTime']=0x0;this['status']=_0x070e('0xb');this[_0x070e('0xc')]='';this[_0x070e('0xd')]='';this[_0x070e('0xe')]='';this[_0x070e('0xf')]='';this[_0x070e('0x10')]=_0x46fe68[_0x070e('0x10')]||![];this[_0x070e('0x11')]=_0x070e('0xb');this[_0x070e('0x12')]=0x0;this[_0x070e('0x13')]='';this['voiceStatusQueue']='';this['onhold']=![];this[_0x070e('0x14')]=![];this['md5']='';}Agent['prototype']['updateStatusRealtime']=function(_0x11d2ce){var _0x14c3fd;if(_0x11d2ce&&_0x11d2ce['state']){_0x14c3fd=_0x11d2ce['state'][_0x070e('0x15')]();switch(_0x14c3fd){case _0x070e('0x16'):_0x14c3fd=_0x070e('0x17');break;case _0x070e('0x18'):_0x14c3fd='talking';break;}}if(_0x14c3fd&&this['voiceStatus']!==_0x14c3fd||_0x11d2ce[_0x070e('0x19')]){this[_0x070e('0x12')]=_[_0x070e('0x1a')](moment()[_0x070e('0x1b')]('x'));}if(_0x14c3fd){this[_0x070e('0x11')]=_0x14c3fd;}var _0x5037eb={'id':this['id'],'name':this[_0x070e('0x1c')],'email':this[_0x070e('0x7')],'accountcode':this[_0x070e('0x8')],'fullname':this[_0x070e('0x9')],'state':this[_0x070e('0xa')],'stateTime':this['stateTime'],'status':this['status'],'address':this['address'],'online':this[_0x070e('0x10')],'voiceStatus':this[_0x070e('0x11')],'voiceStatusTime':this[_0x070e('0x12')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this[_0x070e('0x1d')],'interface':this['interface'],'onhold':this[_0x070e('0x1e')]};var _0x3f6985=md5(JSON[_0x070e('0x1f')](_0x5037eb));if(this[_0x070e('0x20')]!==_0x3f6985){this[_0x070e('0x20')]=_0x3f6985;io['to'](util[_0x070e('0x1b')](_0x070e('0x21'),_0x5037eb[_0x070e('0x1c')]))['emit'](_0x070e('0x22'),_0x5037eb);io[_0x070e('0x23')](_0x070e('0x24'),_0x5037eb);}};module['exports']=Agent;
\ No newline at end of file
index 40acd99..fa03943 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x977b=['originated','temp','ivrAnswerCallsDay','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','name','type','campaign'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x977b,0x162));var _0xb977=function(_0x119705,_0xba9427){_0x119705=_0x119705-0x0;var _0x2affc2=_0x977b[_0x119705];return _0x2affc2;};'use strict';function Campaign(_0x5c8f87){this['id']=_0x5c8f87['id']||0x0;this['name']=_0x5c8f87[_0xb977('0x0')]||'';this[_0xb977('0x1')]=_0x5c8f87[_0xb977('0x1')]||_0xb977('0x2');this[_0xb977('0x3')]=0x0;this[_0xb977('0x4')]=0x0;this[_0xb977('0x5')]=0x0;this[_0xb977('0x6')]=0x0;this[_0xb977('0x7')]='';this[_0xb977('0x8')]=!![];this[_0xb977('0x9')]=_0x5c8f87[_0xb977('0x9')];this['limitCalls']=_0x5c8f87[_0xb977('0xa')];this[_0xb977('0xb')]=_0x5c8f87[_0xb977('0xb')]||null;this[_0xb977('0xc')]=_0x5c8f87[_0xb977('0xc')]?_0x5c8f87[_0xb977('0xc')]:null;this['dialOriginateCallerIdName']=_0x5c8f87[_0xb977('0xd')];this[_0xb977('0xe')]=_0x5c8f87['dialOriginateCallerIdNumber'];this[_0xb977('0xf')]=_0x5c8f87[_0xb977('0xf')]||0x1e;this[_0xb977('0x10')]=_0x5c8f87['dialCongestionMaxRetry'];this[_0xb977('0x11')]=_0x5c8f87['dialCongestionRetryFrequency'];this[_0xb977('0x12')]=_0x5c8f87['dialBusyMaxRetry'];this[_0xb977('0x13')]=_0x5c8f87['dialBusyRetryFrequency'];this['dialNoAnswerMaxRetry']=_0x5c8f87['dialNoAnswerMaxRetry'];this[_0xb977('0x14')]=_0x5c8f87[_0xb977('0x14')];this[_0xb977('0x15')]=_0x5c8f87['dialGlobalMaxRetry'];this[_0xb977('0x16')]=_0x5c8f87[_0xb977('0x16')]||0x3;this[_0xb977('0x17')]=_0x5c8f87[_0xb977('0x17')]||0x96;this[_0xb977('0x18')]=_0x5c8f87[_0xb977('0x18')]||0x3;this['dialDropRetryFrequency']=_0x5c8f87[_0xb977('0x19')]||0x96;this[_0xb977('0x1a')]=_0x5c8f87[_0xb977('0x1a')]||0x3;this[_0xb977('0x1b')]=_0x5c8f87[_0xb977('0x1b')]||0x96;this[_0xb977('0x1c')]=_0x5c8f87[_0xb977('0x1c')]||0x3;this[_0xb977('0x1d')]=_0x5c8f87[_0xb977('0x1d')]||0x96;this[_0xb977('0x1e')]=_0x5c8f87['dialAgentRejectMaxRetry']||0x3;this[_0xb977('0x1f')]=_0x5c8f87[_0xb977('0x1f')]||0x96;this[_0xb977('0x20')]=_0x5c8f87[_0xb977('0x20')]||_0xb977('0x21');this[_0xb977('0x22')]=_0x5c8f87[_0xb977('0x22')]||undefined;this[_0xb977('0x23')]=_0x5c8f87[_0xb977('0x23')]||undefined;this[_0xb977('0x24')]=_0x5c8f87[_0xb977('0x24')]||undefined;this[_0xb977('0x25')]=_0x5c8f87['TrunkBackup']?_0x5c8f87[_0xb977('0x25')]:undefined;this[_0xb977('0x26')]=_0x5c8f87['Trunk']?_0x5c8f87[_0xb977('0x26')]:undefined;this[_0xb977('0x27')]=_0x5c8f87[_0xb977('0x27')]?_0x5c8f87['Interval']:undefined;this[_0xb977('0x28')]=_0x5c8f87[_0xb977('0x28')]?_0x5c8f87['SquareProject']:undefined;this[_0xb977('0x29')]=_0x5c8f87['SquareProject']?_0x5c8f87[_0xb977('0x28')]['name']:undefined;this[_0xb977('0x2a')]=_0x5c8f87[_0xb977('0x2a')]||![];this['dialAMDInitialSilence']=_0x5c8f87[_0xb977('0x2b')];this[_0xb977('0x2c')]=_0x5c8f87[_0xb977('0x2c')];this[_0xb977('0x2d')]=_0x5c8f87[_0xb977('0x2d')];this[_0xb977('0x2e')]=_0x5c8f87['dialAMDTotalAnalysisTime'];this[_0xb977('0x2f')]=_0x5c8f87[_0xb977('0x2f')];this[_0xb977('0x30')]=_0x5c8f87[_0xb977('0x30')];this[_0xb977('0x31')]=_0x5c8f87['dialAMDMaximumNumberOfWords'];this[_0xb977('0x32')]=_0x5c8f87[_0xb977('0x32')];this['dialAMDMaximumWordLength']=_0x5c8f87['dialAMDMaximumWordLength'];}module['exports']=Campaign;
\ No newline at end of file
+var _0x68e9=['dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','ivrAnswerCallsDay','ivrTotalCallsDays','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry'];(function(_0x469a7e,_0x22e958){var _0x591745=function(_0x462aa0){while(--_0x462aa0){_0x469a7e['push'](_0x469a7e['shift']());}};_0x591745(++_0x22e958);}(_0x68e9,0x1a8));var _0x968e=function(_0x239786,_0x471f27){_0x239786=_0x239786-0x0;var _0x3f15e2=_0x68e9[_0x239786];return _0x3f15e2;};'use strict';function Campaign(_0x128097){this['id']=_0x128097['id']||0x0;this[_0x968e('0x0')]=_0x128097[_0x968e('0x0')]||'';this[_0x968e('0x1')]=_0x128097[_0x968e('0x1')]||_0x968e('0x2');this['originated']=0x0;this['temp']=0x0;this[_0x968e('0x3')]=0x0;this[_0x968e('0x4')]=0x0;this['message']='';this['sendMessageOneNotActive']=!![];this[_0x968e('0x5')]=_0x128097['active'];this[_0x968e('0x6')]=_0x128097[_0x968e('0x6')];this[_0x968e('0x7')]=_0x128097[_0x968e('0x7')]||null;this[_0x968e('0x8')]=_0x128097[_0x968e('0x8')]?_0x128097[_0x968e('0x8')]:null;this[_0x968e('0x9')]=_0x128097[_0x968e('0x9')];this[_0x968e('0xa')]=_0x128097['dialOriginateCallerIdNumber'];this[_0x968e('0xb')]=_0x128097[_0x968e('0xb')]||0x1e;this[_0x968e('0xc')]=_0x128097[_0x968e('0xc')];this[_0x968e('0xd')]=_0x128097['dialCongestionRetryFrequency'];this[_0x968e('0xe')]=_0x128097[_0x968e('0xe')];this[_0x968e('0xf')]=_0x128097[_0x968e('0xf')];this[_0x968e('0x10')]=_0x128097[_0x968e('0x10')];this[_0x968e('0x11')]=_0x128097['dialNoAnswerRetryFrequency'];this[_0x968e('0x12')]=_0x128097[_0x968e('0x12')];this['dialNoSuchNumberMaxRetry']=_0x128097[_0x968e('0x13')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0x128097[_0x968e('0x14')]||0x96;this[_0x968e('0x15')]=_0x128097[_0x968e('0x15')]||0x3;this['dialDropRetryFrequency']=_0x128097[_0x968e('0x16')]||0x96;this[_0x968e('0x17')]=_0x128097[_0x968e('0x17')]||0x3;this[_0x968e('0x18')]=_0x128097['dialAbandonedRetryFrequency']||0x96;this['dialMachineMaxRetry']=_0x128097[_0x968e('0x19')]||0x3;this[_0x968e('0x1a')]=_0x128097[_0x968e('0x1a')]||0x96;this[_0x968e('0x1b')]=_0x128097[_0x968e('0x1b')]||0x3;this['dialAgentRejectRetryFrequency']=_0x128097[_0x968e('0x1c')]||0x96;this[_0x968e('0x1d')]=_0x128097[_0x968e('0x1d')]||_0x968e('0x1e');this[_0x968e('0x1f')]=_0x128097[_0x968e('0x1f')]||undefined;this['dialRandomLastDigitCallerIdNumber']=_0x128097['dialRandomLastDigitCallerIdNumber']||undefined;this['dialCutDigit']=_0x128097[_0x968e('0x20')]||undefined;this['TrunkBackup']=_0x128097[_0x968e('0x21')]?_0x128097['TrunkBackup']:undefined;this[_0x968e('0x22')]=_0x128097[_0x968e('0x22')]?_0x128097[_0x968e('0x22')]:undefined;this[_0x968e('0x23')]=_0x128097['Interval']?_0x128097[_0x968e('0x23')]:undefined;this[_0x968e('0x24')]=_0x128097[_0x968e('0x24')]?_0x128097[_0x968e('0x24')]:undefined;this[_0x968e('0x25')]=_0x128097[_0x968e('0x24')]?_0x128097[_0x968e('0x24')][_0x968e('0x0')]:undefined;this[_0x968e('0x26')]=_0x128097[_0x968e('0x26')]||![];this[_0x968e('0x27')]=_0x128097[_0x968e('0x27')];this[_0x968e('0x28')]=_0x128097[_0x968e('0x28')];this[_0x968e('0x29')]=_0x128097[_0x968e('0x29')];this[_0x968e('0x2a')]=_0x128097[_0x968e('0x2a')];this[_0x968e('0x2b')]=_0x128097[_0x968e('0x2b')];this[_0x968e('0x2c')]=_0x128097[_0x968e('0x2c')];this[_0x968e('0x2d')]=_0x128097['dialAMDMaximumNumberOfWords'];this[_0x968e('0x2e')]=_0x128097['dialAMDSilenceThreshold'];this[_0x968e('0x2f')]=_0x128097[_0x968e('0x2f')];}module[_0x968e('0x30')]=Campaign;
\ No newline at end of file
index cac6bae..12baee3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cb4=['mohtime','exports','starttime','destinationchannel','connectedlinenum','connectedlinename','accountcode','context','uniqueid','linkedid','exten','answered','answertime','endtime','unmanaged','abandoned','lastdata','duration','billableseconds','holdtime','type','disposition','monitor','monitorFilename','queue','monitors','transfercalleridnum','transferType'];(function(_0x1f20e7,_0x1e3689){var _0x7e57c2=function(_0x5792b4){while(--_0x5792b4){_0x1f20e7['push'](_0x1f20e7['shift']());}};_0x7e57c2(++_0x1e3689);}(_0x5cb4,0xc6));var _0x45cb=function(_0x470047,_0x18608d){_0x470047=_0x470047-0x0;var _0x437f50=_0x5cb4[_0x470047];return _0x437f50;};'use strict';function Channel(){this[_0x45cb('0x0')]=null;this['channel']='';this[_0x45cb('0x1')]='';this['calleridnum']=0x0;this['calleridname']='';this[_0x45cb('0x2')]=undefined;this[_0x45cb('0x3')]=undefined;this[_0x45cb('0x4')]=0x0;this[_0x45cb('0x5')]='';this[_0x45cb('0x6')]=0x0;this[_0x45cb('0x7')]=0x0;this[_0x45cb('0x8')]=0x0;this[_0x45cb('0x9')]=![];this[_0x45cb('0xa')]=null;this[_0x45cb('0xb')]=null;this[_0x45cb('0xc')]=![];this[_0x45cb('0xd')]=![];this['lastapplication']='';this[_0x45cb('0xe')]='';this[_0x45cb('0xf')]=0x0;this[_0x45cb('0x10')]=0x0;this[_0x45cb('0x11')]=0x0;this[_0x45cb('0x12')]=null;this['tag']=null;this[_0x45cb('0x13')]=null;this[_0x45cb('0x14')]=![];this[_0x45cb('0x15')]=null;this[_0x45cb('0x16')]=null;this[_0x45cb('0x17')]=[];this[_0x45cb('0x18')]=undefined;this['transferconnectedlinenum']=undefined;this[_0x45cb('0x19')]=undefined;this[_0x45cb('0x1a')]=0x0;}module[_0x45cb('0x1b')]=Channel;
\ No newline at end of file
+var _0x4325=['answertime','unmanaged','lastapplication','lastdata','duration','billableseconds','holdtime','tag','monitor','monitorFilename','queue','monitors','transferType','mohtime','starttime','channel','calleridnum','calleridname','connectedlinenum','context','uniqueid','linkedid','answered'];(function(_0x5bf1dc,_0x336b6e){var _0x246061=function(_0x1ad390){while(--_0x1ad390){_0x5bf1dc['push'](_0x5bf1dc['shift']());}};_0x246061(++_0x336b6e);}(_0x4325,0x1da));var _0x5432=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x4325[_0x4b369d];return _0x571a98;};'use strict';function Channel(){this[_0x5432('0x0')]=null;this[_0x5432('0x1')]='';this['destinationchannel']='';this[_0x5432('0x2')]=0x0;this[_0x5432('0x3')]='';this[_0x5432('0x4')]=undefined;this['connectedlinename']=undefined;this['accountcode']=0x0;this[_0x5432('0x5')]='';this[_0x5432('0x6')]=0x0;this[_0x5432('0x7')]=0x0;this['exten']=0x0;this[_0x5432('0x8')]=![];this[_0x5432('0x9')]=null;this['endtime']=null;this[_0x5432('0xa')]=![];this['abandoned']=![];this[_0x5432('0xb')]='';this[_0x5432('0xc')]='';this[_0x5432('0xd')]=0x0;this[_0x5432('0xe')]=0x0;this[_0x5432('0xf')]=0x0;this['type']=null;this[_0x5432('0x10')]=null;this['disposition']=null;this[_0x5432('0x11')]=![];this[_0x5432('0x12')]=null;this[_0x5432('0x13')]=null;this[_0x5432('0x14')]=[];this['transfercalleridnum']=undefined;this['transferconnectedlinenum']=undefined;this[_0x5432('0x15')]=undefined;this[_0x5432('0x16')]=0x0;}module['exports']=Channel;
\ No newline at end of file
index 1aad9ad..3523c28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42af=['exports','name','username','authType','password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl','Configurations'];(function(_0x51b152,_0x182032){var _0x42c4cb=function(_0x120a39){while(--_0x120a39){_0x51b152['push'](_0x51b152['shift']());}};_0x42c4cb(++_0x182032);}(_0x42af,0xd9));var _0xf42a=function(_0x4a6b4c,_0x390cd3){_0x4a6b4c=_0x4a6b4c-0x0;var _0x47ead1=_0x42af[_0x4a6b4c];return _0x47ead1;};'use strict';function DeskAccount(_0x5c4c18){this['id']=_0x5c4c18['id']||0x0;this[_0xf42a('0x0')]=_0x5c4c18[_0xf42a('0x0')]||'';this[_0xf42a('0x1')]=_0x5c4c18[_0xf42a('0x1')]||'';this['remoteUri']=_0x5c4c18['remoteUri']||'';this['authType']=_0x5c4c18[_0xf42a('0x2')]||'';this[_0xf42a('0x3')]=_0x5c4c18[_0xf42a('0x3')]||'';this[_0xf42a('0x4')]=_0x5c4c18[_0xf42a('0x4')]||'';this[_0xf42a('0x5')]=_0x5c4c18[_0xf42a('0x5')]||'';this[_0xf42a('0x6')]=_0x5c4c18['token']||'';this[_0xf42a('0x7')]=_0x5c4c18[_0xf42a('0x7')]||'';this[_0xf42a('0x8')]=_0x5c4c18[_0xf42a('0x8')]||'';this['serverUrl']=_0x5c4c18[_0xf42a('0x9')]||'';this[_0xf42a('0xa')]=_0x5c4c18[_0xf42a('0xa')]||{};}module[_0xf42a('0xb')]=DeskAccount;
\ No newline at end of file
+var _0xa95f=['password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl','Configurations','name','username','remoteUri','authType'];(function(_0x454cbe,_0x279e74){var _0x1e7cdf=function(_0x284e89){while(--_0x284e89){_0x454cbe['push'](_0x454cbe['shift']());}};_0x1e7cdf(++_0x279e74);}(_0xa95f,0x134));var _0xfa95=function(_0x4b8cde,_0x53b67a){_0x4b8cde=_0x4b8cde-0x0;var _0xf9bd4e=_0xa95f[_0x4b8cde];return _0xf9bd4e;};'use strict';function DeskAccount(_0xd5acfe){this['id']=_0xd5acfe['id']||0x0;this[_0xfa95('0x0')]=_0xd5acfe['name']||'';this[_0xfa95('0x1')]=_0xd5acfe[_0xfa95('0x1')]||'';this[_0xfa95('0x2')]=_0xd5acfe[_0xfa95('0x2')]||'';this[_0xfa95('0x3')]=_0xd5acfe[_0xfa95('0x3')]||'';this[_0xfa95('0x4')]=_0xd5acfe[_0xfa95('0x4')]||'';this['consumerKey']=_0xd5acfe[_0xfa95('0x5')]||'';this['consumerSecret']=_0xd5acfe[_0xfa95('0x6')]||'';this[_0xfa95('0x7')]=_0xd5acfe[_0xfa95('0x7')]||'';this[_0xfa95('0x8')]=_0xd5acfe[_0xfa95('0x8')]||'';this[_0xfa95('0x9')]=_0xd5acfe[_0xfa95('0x9')]||'';this['serverUrl']=_0xd5acfe[_0xfa95('0xa')]||'';this[_0xfa95('0xb')]=_0xd5acfe['Configurations']||{};}module['exports']=DeskAccount;
\ No newline at end of file
index b0d15d6..7655727 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd707=['username','password','remoteUri','tenantId','clientId','clientSecret','serverUrl','modernAuthentication','Configurations','CloudProvider'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xd707,0x8c));var _0x7d70=function(_0x452f56,_0x999250){_0x452f56=_0x452f56-0x0;var _0x9f1c6a=_0xd707[_0x452f56];return _0x9f1c6a;};'use strict';function Dynamics365Account(_0x5028cf){this['id']=_0x5028cf['id']||0x0;this['name']=_0x5028cf['name']||'';this[_0x7d70('0x0')]=_0x5028cf[_0x7d70('0x0')]||'';this[_0x7d70('0x1')]=_0x5028cf[_0x7d70('0x1')]||'';this[_0x7d70('0x2')]=_0x5028cf['remoteUri']||'';this[_0x7d70('0x3')]=_0x5028cf[_0x7d70('0x3')]||'';this[_0x7d70('0x4')]=_0x5028cf[_0x7d70('0x4')]||'';this[_0x7d70('0x5')]=_0x5028cf[_0x7d70('0x5')]||{};this[_0x7d70('0x6')]=_0x5028cf['serverUrl']||'';this[_0x7d70('0x7')]=_0x5028cf['modernAuthentication']||![];this[_0x7d70('0x8')]=_0x5028cf[_0x7d70('0x8')]||{};this[_0x7d70('0x9')]=_0x5028cf[_0x7d70('0x9')]||{};}module['exports']=Dynamics365Account;
\ No newline at end of file
+var _0xf489=['remoteUri','tenantId','clientId','clientSecret','serverUrl','modernAuthentication','Configurations','CloudProvider','exports','name','username','password'];(function(_0x8296db,_0x49157d){var _0x6f6097=function(_0xc57af9){while(--_0xc57af9){_0x8296db['push'](_0x8296db['shift']());}};_0x6f6097(++_0x49157d);}(_0xf489,0x105));var _0x9f48=function(_0x4f7c4e,_0x38659b){_0x4f7c4e=_0x4f7c4e-0x0;var _0x54abcf=_0xf489[_0x4f7c4e];return _0x54abcf;};'use strict';function Dynamics365Account(_0x341800){this['id']=_0x341800['id']||0x0;this[_0x9f48('0x0')]=_0x341800[_0x9f48('0x0')]||'';this[_0x9f48('0x1')]=_0x341800['username']||'';this['password']=_0x341800[_0x9f48('0x2')]||'';this['remoteUri']=_0x341800[_0x9f48('0x3')]||'';this[_0x9f48('0x4')]=_0x341800[_0x9f48('0x4')]||'';this['clientId']=_0x341800[_0x9f48('0x5')]||'';this[_0x9f48('0x6')]=_0x341800[_0x9f48('0x6')]||{};this[_0x9f48('0x7')]=_0x341800['serverUrl']||'';this[_0x9f48('0x8')]=_0x341800[_0x9f48('0x8')]||![];this[_0x9f48('0x9')]=_0x341800[_0x9f48('0x9')]||{};this['CloudProvider']=_0x341800[_0x9f48('0xa')]||{};}module[_0x9f48('0xb')]=Dynamics365Account;
\ No newline at end of file
index 55e918a..afa94c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd987=['v17,v27,v29','faxdetect','t38timeout','tech','SIP','Trunk','ListId','key','exports','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem'];(function(_0x2909c0,_0x85e065){var _0x9dc0b6=function(_0x2274e3){while(--_0x2274e3){_0x2909c0['push'](_0x2909c0['shift']());}};_0x9dc0b6(++_0x85e065);}(_0xd987,0x15d));var _0x7d98=function(_0x3d4de1,_0x2ee09e){_0x3d4de1=_0x3d4de1-0x0;var _0x582822=_0xd987[_0x3d4de1];return _0x582822;};'use strict';function FaxAccount(_0x5e32ed){this['id']=_0x5e32ed['id']||0x0;this[_0x7d98('0x0')]=_0x5e32ed[_0x7d98('0x0')]||'';this[_0x7d98('0x1')]=_0x5e32ed[_0x7d98('0x1')];this[_0x7d98('0x2')]=_0x5e32ed['ecm'];this[_0x7d98('0x3')]=_0x5e32ed[_0x7d98('0x3')];this[_0x7d98('0x4')]=_0x5e32ed[_0x7d98('0x4')];this['minrate']=_0x5e32ed[_0x7d98('0x5')]||0x960;this[_0x7d98('0x6')]=_0x5e32ed[_0x7d98('0x6')]||0x3840;this['modem']=_0x5e32ed[_0x7d98('0x7')]||_0x7d98('0x8');this['gateway']=_0x5e32ed['gateway']||'no';this[_0x7d98('0x9')]=_0x5e32ed['faxdetect']||'no';this[_0x7d98('0xa')]=_0x5e32ed[_0x7d98('0xa')]||0x1388;this[_0x7d98('0xb')]=_0x5e32ed[_0x7d98('0xb')]||_0x7d98('0xc');this[_0x7d98('0xd')]=_0x5e32ed[_0x7d98('0xd')]?_0x5e32ed[_0x7d98('0xd')]:undefined;this[_0x7d98('0xe')]=_0x5e32ed[_0x7d98('0xe')];this[_0x7d98('0xf')]=_0x5e32ed[_0x7d98('0xf')];}module[_0x7d98('0x10')]=FaxAccount;
\ No newline at end of file
+var _0xf954=['name','description','ecm','localstationid','minrate','maxrate','modem','v17,v27,v29','faxdetect','t38timeout','SIP','Trunk','ListId','key','exports'];(function(_0x2a06b3,_0xb8df17){var _0x2c385b=function(_0x581e43){while(--_0x581e43){_0x2a06b3['push'](_0x2a06b3['shift']());}};_0x2c385b(++_0xb8df17);}(_0xf954,0x10e));var _0x4f95=function(_0x56c446,_0x2c3f30){_0x56c446=_0x56c446-0x0;var _0x152d34=_0xf954[_0x56c446];return _0x152d34;};'use strict';function FaxAccount(_0x1cbc87){this['id']=_0x1cbc87['id']||0x0;this[_0x4f95('0x0')]=_0x1cbc87[_0x4f95('0x0')]||'';this[_0x4f95('0x1')]=_0x1cbc87[_0x4f95('0x1')];this[_0x4f95('0x2')]=_0x1cbc87[_0x4f95('0x2')];this['headerinfo']=_0x1cbc87['headerinfo'];this[_0x4f95('0x3')]=_0x1cbc87[_0x4f95('0x3')];this[_0x4f95('0x4')]=_0x1cbc87[_0x4f95('0x4')]||0x960;this['maxrate']=_0x1cbc87[_0x4f95('0x5')]||0x3840;this[_0x4f95('0x6')]=_0x1cbc87[_0x4f95('0x6')]||_0x4f95('0x7');this['gateway']=_0x1cbc87['gateway']||'no';this[_0x4f95('0x8')]=_0x1cbc87[_0x4f95('0x8')]||'no';this[_0x4f95('0x9')]=_0x1cbc87['t38timeout']||0x1388;this['tech']=_0x1cbc87['tech']||_0x4f95('0xa');this[_0x4f95('0xb')]=_0x1cbc87[_0x4f95('0xb')]?_0x1cbc87[_0x4f95('0xb')]:undefined;this['ListId']=_0x1cbc87[_0x4f95('0xc')];this[_0x4f95('0xd')]=_0x1cbc87[_0x4f95('0xd')];}module[_0x4f95('0xe')]=FaxAccount;
\ No newline at end of file
index d8e0e50..cb51ebb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2af1=['name','username','apiKey','token','remoteUri','serverUrl','Configurations','exports'];(function(_0x388c27,_0x46db3c){var _0x31c0fa=function(_0x3d67bd){while(--_0x3d67bd){_0x388c27['push'](_0x388c27['shift']());}};_0x31c0fa(++_0x46db3c);}(_0x2af1,0xd8));var _0x12af=function(_0x247ce6,_0x6e13cb){_0x247ce6=_0x247ce6-0x0;var _0x1964c7=_0x2af1[_0x247ce6];return _0x1964c7;};'use strict';function FreshdeskAccount(_0x4780f8){this['id']=_0x4780f8['id']||0x0;this[_0x12af('0x0')]=_0x4780f8[_0x12af('0x0')]||'';this[_0x12af('0x1')]=_0x4780f8[_0x12af('0x1')]||'';this[_0x12af('0x2')]=_0x4780f8[_0x12af('0x3')]||'';this[_0x12af('0x4')]=_0x4780f8[_0x12af('0x4')]||'';this[_0x12af('0x5')]=_0x4780f8[_0x12af('0x5')]||'';this[_0x12af('0x6')]=_0x4780f8['Configurations']||{};}module[_0x12af('0x7')]=FreshdeskAccount;
\ No newline at end of file
+var _0x73b6=['apiKey','token','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x526bff,_0x524a33){var _0x20bd82=function(_0xd3c107){while(--_0xd3c107){_0x526bff['push'](_0x526bff['shift']());}};_0x20bd82(++_0x524a33);}(_0x73b6,0x1d6));var _0x673b=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0x73b6[_0x3b5250];return _0xc844a1;};'use strict';function FreshdeskAccount(_0x53eb3f){this['id']=_0x53eb3f['id']||0x0;this[_0x673b('0x0')]=_0x53eb3f[_0x673b('0x0')]||'';this[_0x673b('0x1')]=_0x53eb3f[_0x673b('0x1')]||'';this[_0x673b('0x2')]=_0x53eb3f[_0x673b('0x3')]||'';this['remoteUri']=_0x53eb3f[_0x673b('0x4')]||'';this[_0x673b('0x5')]=_0x53eb3f['serverUrl']||'';this[_0x673b('0x6')]=_0x53eb3f[_0x673b('0x6')]||{};}module[_0x673b('0x7')]=FreshdeskAccount;
\ No newline at end of file
index 2dd9072..5b253ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a44=['remoteUri','serverUrl','Configurations','exports','name','username','apiKey','token'];(function(_0x364471,_0x302e8a){var _0x59236f=function(_0x524944){while(--_0x524944){_0x364471['push'](_0x364471['shift']());}};_0x59236f(++_0x302e8a);}(_0x1a44,0xc4));var _0x41a4=function(_0x32a19f,_0x5edadc){_0x32a19f=_0x32a19f-0x0;var _0x362897=_0x1a44[_0x32a19f];return _0x362897;};'use strict';function FreshsalesAccount(_0x3b9374){this['id']=_0x3b9374['id']||0x0;this['name']=_0x3b9374[_0x41a4('0x0')]||'';this[_0x41a4('0x1')]=_0x3b9374[_0x41a4('0x1')]||'';this[_0x41a4('0x2')]=_0x3b9374[_0x41a4('0x3')]||'';this[_0x41a4('0x4')]=_0x3b9374[_0x41a4('0x4')]||'';this['serverUrl']=_0x3b9374[_0x41a4('0x5')]||'';this[_0x41a4('0x6')]=_0x3b9374[_0x41a4('0x6')]||{};}module[_0x41a4('0x7')]=FreshsalesAccount;
\ No newline at end of file
+var _0x522b=['serverUrl','Configurations','exports','name','username','token','remoteUri'];(function(_0x26a818,_0x40708a){var _0x5d8ca0=function(_0x3cc7ed){while(--_0x3cc7ed){_0x26a818['push'](_0x26a818['shift']());}};_0x5d8ca0(++_0x40708a);}(_0x522b,0x1c3));var _0xb522=function(_0x55ef8b,_0x5deb5e){_0x55ef8b=_0x55ef8b-0x0;var _0x359c84=_0x522b[_0x55ef8b];return _0x359c84;};'use strict';function FreshsalesAccount(_0x5dc096){this['id']=_0x5dc096['id']||0x0;this[_0xb522('0x0')]=_0x5dc096['name']||'';this[_0xb522('0x1')]=_0x5dc096['username']||'';this['apiKey']=_0x5dc096[_0xb522('0x2')]||'';this[_0xb522('0x3')]=_0x5dc096['remoteUri']||'';this[_0xb522('0x4')]=_0x5dc096[_0xb522('0x4')]||'';this[_0xb522('0x5')]=_0x5dc096[_0xb522('0x5')]||{};}module[_0xb522('0x6')]=FreshsalesAccount;
\ No newline at end of file
index 2a1ebf2..de0ee18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74e8=['context','exten','priority','holdtime','assigned','motionChannel','voice','mohtime','exports','uniqueid','calleridname','queuecallerjoinAt','queuecallerleaveAt','position','count','queuecallerabandon','queuecallercomplete','queuecallerexit','originalposition','channel','connectedlinenum','connectedlinename'];(function(_0x4dbaad,_0x730318){var _0x226c72=function(_0x501972){while(--_0x501972){_0x4dbaad['push'](_0x4dbaad['shift']());}};_0x226c72(++_0x730318);}(_0x74e8,0xe5));var _0x874e=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0x74e8[_0x5c3c0b];return _0x52ecd2;};'use strict';function QueueReport(){this['type']='inbound';this[_0x874e('0x0')]='';this['calleridnum']='';this[_0x874e('0x1')]='';this['queue']='';this[_0x874e('0x2')]=null;this[_0x874e('0x3')]=null;this[_0x874e('0x4')]=0x1;this[_0x874e('0x5')]=0x1;this[_0x874e('0x6')]=![];this['queuecallerabandonAt']=null;this[_0x874e('0x7')]=![];this['queuecallercompleteAt']=null;this[_0x874e('0x8')]=![];this['queuecallerexitAt']=null;this[_0x874e('0x9')]=0x1;this[_0x874e('0xa')]='';this[_0x874e('0xb')]='';this[_0x874e('0xc')]='';this['accountcode']='';this[_0x874e('0xd')]='';this[_0x874e('0xe')]='';this[_0x874e('0xf')]='';this[_0x874e('0x10')]=0x0;this[_0x874e('0x11')]=![];this['lastAssignedTo']='';this[_0x874e('0x12')]=_0x874e('0x13');this[_0x874e('0x14')]=0x0;this['variables']={};}module[_0x874e('0x15')]=QueueReport;
\ No newline at end of file
+var _0xf60b=['type','inbound','uniqueid','queuecallerjoinAt','queuecallerleaveAt','position','count','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','connectedlinenum','connectedlinename','exten','lastAssignedTo','motionChannel','mohtime','variables','exports'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0xf60b,0xe4));var _0xbf60=function(_0x1b1f88,_0x3fe1cb){_0x1b1f88=_0x1b1f88-0x0;var _0x5045b9=_0xf60b[_0x1b1f88];return _0x5045b9;};'use strict';function QueueReport(){this[_0xbf60('0x0')]=_0xbf60('0x1');this[_0xbf60('0x2')]='';this['calleridnum']='';this['calleridname']='';this['queue']='';this[_0xbf60('0x3')]=null;this[_0xbf60('0x4')]=null;this[_0xbf60('0x5')]=0x1;this[_0xbf60('0x6')]=0x1;this['queuecallerabandon']=![];this['queuecallerabandonAt']=null;this[_0xbf60('0x7')]=![];this[_0xbf60('0x8')]=null;this[_0xbf60('0x9')]=![];this[_0xbf60('0xa')]=null;this['originalposition']=0x1;this['channel']='';this[_0xbf60('0xb')]='';this[_0xbf60('0xc')]='';this['accountcode']='';this['context']='';this[_0xbf60('0xd')]='';this['priority']='';this['holdtime']=0x0;this['assigned']=![];this[_0xbf60('0xe')]='';this[_0xbf60('0xf')]='voice';this[_0xbf60('0x10')]=0x0;this[_0xbf60('0x11')]={};}module[_0xbf60('0x12')]=QueueReport;
\ No newline at end of file
index 8e49e9e..e956ef4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x275c=['Configurations','exports','name','username','remoteUri','password','clientId','clientSecret','securityToken','type','integrationTab'];(function(_0x5ccdaf,_0xa2f4b2){var _0x1633b5=function(_0x419fb6){while(--_0x419fb6){_0x5ccdaf['push'](_0x5ccdaf['shift']());}};_0x1633b5(++_0xa2f4b2);}(_0x275c,0x70));var _0xc275=function(_0x45b5fe,_0x4c47e4){_0x45b5fe=_0x45b5fe-0x0;var _0x1c84c1=_0x275c[_0x45b5fe];return _0x1c84c1;};'use strict';function SalesforceAccount(_0x5cf63f){this['id']=_0x5cf63f['id']||0x0;this[_0xc275('0x0')]=_0x5cf63f[_0xc275('0x0')]||'';this[_0xc275('0x1')]=_0x5cf63f[_0xc275('0x1')]||'';this[_0xc275('0x2')]=_0x5cf63f[_0xc275('0x2')]||'';this[_0xc275('0x3')]=_0x5cf63f[_0xc275('0x3')]||'';this['clientId']=_0x5cf63f[_0xc275('0x4')]||'';this['clientSecret']=_0x5cf63f[_0xc275('0x5')]||'';this[_0xc275('0x6')]=_0x5cf63f['securityToken']||'';this[_0xc275('0x7')]=_0x5cf63f[_0xc275('0x7')]||_0xc275('0x8');this['serverUrl']=_0x5cf63f['serverUrl']||'';this['Configurations']=_0x5cf63f[_0xc275('0x9')]||{};}module[_0xc275('0xa')]=SalesforceAccount;
\ No newline at end of file
+var _0xcae2=['type','integrationTab','exports','name','username','remoteUri','password','clientId','clientSecret','securityToken'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcae2,0x143));var _0x2cae=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xcae2[_0x321bb2];return _0x9c12ed;};'use strict';function SalesforceAccount(_0x51cab6){this['id']=_0x51cab6['id']||0x0;this[_0x2cae('0x0')]=_0x51cab6[_0x2cae('0x0')]||'';this[_0x2cae('0x1')]=_0x51cab6[_0x2cae('0x1')]||'';this[_0x2cae('0x2')]=_0x51cab6[_0x2cae('0x2')]||'';this['password']=_0x51cab6[_0x2cae('0x3')]||'';this[_0x2cae('0x4')]=_0x51cab6[_0x2cae('0x4')]||'';this[_0x2cae('0x5')]=_0x51cab6['clientSecret']||'';this[_0x2cae('0x6')]=_0x51cab6[_0x2cae('0x6')]||'';this[_0x2cae('0x7')]=_0x51cab6[_0x2cae('0x7')]||_0x2cae('0x8');this['serverUrl']=_0x51cab6['serverUrl']||'';this['Configurations']=_0x51cab6['Configurations']||{};}module[_0x2cae('0x9')]=SalesforceAccount;
\ No newline at end of file
index be414ed..80cbe95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7a1=['name','username','password','remoteUri','serverUrl','Configurations','exports'];(function(_0x4148e3,_0x5b7a62){var _0x22773f=function(_0x317aa0){while(--_0x317aa0){_0x4148e3['push'](_0x4148e3['shift']());}};_0x22773f(++_0x5b7a62);}(_0xc7a1,0x181));var _0x1c7a=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xc7a1[_0x2641f9];return _0x585741;};'use strict';function ServicenowAccount(_0x2bb499){this['id']=_0x2bb499['id']||0x0;this[_0x1c7a('0x0')]=_0x2bb499[_0x1c7a('0x0')]||'';this[_0x1c7a('0x1')]=_0x2bb499[_0x1c7a('0x1')]||'';this[_0x1c7a('0x2')]=_0x2bb499[_0x1c7a('0x2')]||'';this[_0x1c7a('0x3')]=_0x2bb499[_0x1c7a('0x3')]||'';this[_0x1c7a('0x4')]=_0x2bb499[_0x1c7a('0x4')]||'';this[_0x1c7a('0x5')]=_0x2bb499[_0x1c7a('0x5')]||{};}module[_0x1c7a('0x6')]=ServicenowAccount;
\ No newline at end of file
+var _0x8b56=['Configurations','exports','name','username','password','remoteUri','serverUrl'];(function(_0x34b1fd,_0x4a46dd){var _0x58fd08=function(_0x559ae3){while(--_0x559ae3){_0x34b1fd['push'](_0x34b1fd['shift']());}};_0x58fd08(++_0x4a46dd);}(_0x8b56,0xbf));var _0x68b5=function(_0x464eb7,_0xbe7b5f){_0x464eb7=_0x464eb7-0x0;var _0x23368d=_0x8b56[_0x464eb7];return _0x23368d;};'use strict';function ServicenowAccount(_0x23cdb0){this['id']=_0x23cdb0['id']||0x0;this[_0x68b5('0x0')]=_0x23cdb0['name']||'';this[_0x68b5('0x1')]=_0x23cdb0[_0x68b5('0x1')]||'';this[_0x68b5('0x2')]=_0x23cdb0[_0x68b5('0x2')]||'';this[_0x68b5('0x3')]=_0x23cdb0['remoteUri']||'';this['serverUrl']=_0x23cdb0[_0x68b5('0x4')]||'';this[_0x68b5('0x5')]=_0x23cdb0[_0x68b5('0x5')]||{};}module[_0x68b5('0x6')]=ServicenowAccount;
\ No newline at end of file
index d6b2f0a..b2d65f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x626b=['remoteUri','serverUrl','Configurations','name','username','password'];(function(_0x331a31,_0x116709){var _0x521de0=function(_0x104a03){while(--_0x104a03){_0x331a31['push'](_0x331a31['shift']());}};_0x521de0(++_0x116709);}(_0x626b,0x117));var _0xb626=function(_0x2bec76,_0x536677){_0x2bec76=_0x2bec76-0x0;var _0x24f845=_0x626b[_0x2bec76];return _0x24f845;};'use strict';function SugarcrmAccount(_0x287a24){this['id']=_0x287a24['id']||0x0;this[_0xb626('0x0')]=_0x287a24[_0xb626('0x0')]||'';this[_0xb626('0x1')]=_0x287a24[_0xb626('0x1')]||'';this[_0xb626('0x2')]=_0x287a24['password']||'';this[_0xb626('0x3')]=_0x287a24['remoteUri']||'';this[_0xb626('0x4')]=_0x287a24[_0xb626('0x4')]||'';this[_0xb626('0x5')]=_0x287a24['Configurations']||{};}module['exports']=SugarcrmAccount;
\ No newline at end of file
+var _0x2756=['Configurations','exports','password','serverUrl'];(function(_0x433a86,_0x175b5c){var _0x23000c=function(_0x4b1fa0){while(--_0x4b1fa0){_0x433a86['push'](_0x433a86['shift']());}};_0x23000c(++_0x175b5c);}(_0x2756,0x1ea));var _0x6275=function(_0x36436d,_0x20292c){_0x36436d=_0x36436d-0x0;var _0x34615d=_0x2756[_0x36436d];return _0x34615d;};'use strict';function SugarcrmAccount(_0x1f4fb2){this['id']=_0x1f4fb2['id']||0x0;this['name']=_0x1f4fb2['name']||'';this['username']=_0x1f4fb2['username']||'';this[_0x6275('0x0')]=_0x1f4fb2[_0x6275('0x0')]||'';this['remoteUri']=_0x1f4fb2['remoteUri']||'';this[_0x6275('0x1')]=_0x1f4fb2['serverUrl']||'';this[_0x6275('0x2')]=_0x1f4fb2[_0x6275('0x2')]||{};}module[_0x6275('0x3')]=SugarcrmAccount;
\ No newline at end of file
index 8734b75..7037efe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55b5=['name','accountcode','state','unknown','stateTime','status'];(function(_0x8c0cb1,_0x3b56cc){var _0x213a09=function(_0x5ee86d){while(--_0x5ee86d){_0x8c0cb1['push'](_0x8c0cb1['shift']());}};_0x213a09(++_0x3b56cc);}(_0x55b5,0x11a));var _0x555b=function(_0x302fbc,_0x505479){_0x302fbc=_0x302fbc-0x0;var _0x510176=_0x55b5[_0x302fbc];return _0x510176;};'use strict';function Telephone(_0x311567){this['id']=_0x311567['id']||0x0;this[_0x555b('0x0')]=_0x311567['name']||'';this['accountcode']=_0x311567[_0x555b('0x1')]||'';this[_0x555b('0x2')]=_0x555b('0x3');this[_0x555b('0x4')]=0x0;this[_0x555b('0x5')]=_0x555b('0x3');this['address']='';}module['exports']=Telephone;
\ No newline at end of file
+var _0xb269=['address','name','accountcode','state','unknown','status'];(function(_0x2f3848,_0x48564d){var _0x102668=function(_0x5e32ab){while(--_0x5e32ab){_0x2f3848['push'](_0x2f3848['shift']());}};_0x102668(++_0x48564d);}(_0xb269,0x73));var _0x9b26=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xb269[_0x5b644e];return _0x49c6bf;};'use strict';function Telephone(_0x11ebdc){this['id']=_0x11ebdc['id']||0x0;this[_0x9b26('0x0')]=_0x11ebdc[_0x9b26('0x0')]||'';this[_0x9b26('0x1')]=_0x11ebdc[_0x9b26('0x1')]||'';this[_0x9b26('0x2')]=_0x9b26('0x3');this['stateTime']=0x0;this[_0x9b26('0x4')]='unknown';this[_0x9b26('0x5')]='';}module['exports']=Telephone;
\ No newline at end of file
index 6d3045e..599d2ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['name','html'];(function(_0x1f1776,_0x13f0a7){var _0xef47d2=function(_0x5a1fab){while(--_0x5a1fab){_0x1f1776['push'](_0x1f1776['shift']());}};_0xef47d2(++_0x13f0a7);}(_0xb10b,0x12a));var _0xbb10=function(_0x415ff8,_0x176fb5){_0x415ff8=_0x415ff8-0x0;var _0x1f347a=_0xb10b[_0x415ff8];return _0x1f347a;};'use strict';function template(_0x13ce8d){this['id']=_0x13ce8d['id']||0x0;this['name']=_0x13ce8d[_0xbb10('0x0')]||'';this[_0xbb10('0x1')]=_0x13ce8d[_0xbb10('0x1')]||'';}module['exports']=template;
\ No newline at end of file
+var _0xb10b=['name','html'];(function(_0x1e740a,_0x356cc2){var _0x10930e=function(_0x35ccee){while(--_0x35ccee){_0x1e740a['push'](_0x1e740a['shift']());}};_0x10930e(++_0x356cc2);}(_0xb10b,0x12a));var _0xbb10=function(_0x4005e8,_0x52a3b5){_0x4005e8=_0x4005e8-0x0;var _0x2d2903=_0xb10b[_0x4005e8];return _0x2d2903;};'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 eeae439..4310ff3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['exports','name','channel','voice','status','AllConditions','AnyConditions','Actions'];(function(_0xb524ed,_0xf946b2){var _0x4ec027=function(_0x686ecc){while(--_0x686ecc){_0xb524ed['push'](_0xb524ed['shift']());}};_0x4ec027(++_0xf946b2);}(_0x2032,0xd9));var _0x2203=function(_0x665689,_0x2a9806){_0x665689=_0x665689-0x0;var _0x31da05=_0x2032[_0x665689];return _0x31da05;};'use strict';function Trigger(_0x4d6c97){this['id']=_0x4d6c97['id']||0x0;this[_0x2203('0x0')]=_0x4d6c97[_0x2203('0x0')]||'';this[_0x2203('0x1')]=_0x4d6c97['channel']||_0x2203('0x2');this[_0x2203('0x3')]=_0x4d6c97['status']||![];this[_0x2203('0x4')]=_0x4d6c97[_0x2203('0x4')]||[];this[_0x2203('0x5')]=_0x4d6c97[_0x2203('0x5')]||[];this[_0x2203('0x6')]=_0x4d6c97[_0x2203('0x6')]||[];}module[_0x2203('0x7')]=Trigger;
\ No newline at end of file
+var _0x8603=['exports','name','channel','status','AllConditions','AnyConditions','Actions'];(function(_0x512453,_0x4fd6d4){var _0x55060e=function(_0xa08e5a){while(--_0xa08e5a){_0x512453['push'](_0x512453['shift']());}};_0x55060e(++_0x4fd6d4);}(_0x8603,0x190));var _0x3860=function(_0x983683,_0x5d9a25){_0x983683=_0x983683-0x0;var _0x3ea281=_0x8603[_0x983683];return _0x3ea281;};'use strict';function Trigger(_0xba4b79){this['id']=_0xba4b79['id']||0x0;this[_0x3860('0x0')]=_0xba4b79[_0x3860('0x0')]||'';this[_0x3860('0x1')]=_0xba4b79['channel']||'voice';this[_0x3860('0x2')]=_0xba4b79[_0x3860('0x2')]||![];this[_0x3860('0x3')]=_0xba4b79['AllConditions']||[];this[_0x3860('0x4')]=_0xba4b79['AnyConditions']||[];this[_0x3860('0x5')]=_0xba4b79[_0x3860('0x5')]||[];}module[_0x3860('0x6')]=Trigger;
\ No newline at end of file
index c49e110..e462a88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f1b=['host','port','stateRegistry','registrationtime','address','defaultuser','active','name','unknown','status','registry','split'];(function(_0x597d64,_0x3e4bb7){var _0x18c0bf=function(_0x1fce73){while(--_0x1fce73){_0x597d64['push'](_0x597d64['shift']());}};_0x18c0bf(++_0x3e4bb7);}(_0x9f1b,0x1aa));var _0xb9f1=function(_0x391db7,_0x427a51){_0x391db7=_0x391db7-0x0;var _0x3e0699=_0x9f1b[_0x391db7];return _0x3e0699;};'use strict';function Trunk(_0x4cf6eb){this['id']=_0x4cf6eb['id']||0x0;this[_0xb9f1('0x0')]=_0x4cf6eb['active']||![];this[_0xb9f1('0x1')]=_0x4cf6eb['name']||'';this['state']=_0xb9f1('0x2');this['stateTime']=0x0;this[_0xb9f1('0x3')]=_0xb9f1('0x2');this[_0xb9f1('0x4')]=_0x4cf6eb['registry']&&_0x4cf6eb[_0xb9f1('0x4')]['indexOf'](':')?_0x4cf6eb[_0xb9f1('0x4')][_0xb9f1('0x5')](':')[0x0]:'';this[_0xb9f1('0x6')]='';this[_0xb9f1('0x7')]='';this['domain']='';this['domainport']='';this['refresh']='';this[_0xb9f1('0x8')]=_0xb9f1('0x2');this[_0xb9f1('0x9')]='';this[_0xb9f1('0xa')]='';this[_0xb9f1('0xb')]=_0x4cf6eb['defaultuser']||'';}module['exports']=Trunk;
\ No newline at end of file
+var _0x7c68=['domainport','registrationtime','address','defaultuser','exports','active','name','state','stateTime','status','unknown','registry','indexOf','split','host','port','domain'];(function(_0x2d126e,_0x1e8257){var _0xcb04d3=function(_0x19a2d9){while(--_0x19a2d9){_0x2d126e['push'](_0x2d126e['shift']());}};_0xcb04d3(++_0x1e8257);}(_0x7c68,0x126));var _0x87c6=function(_0xc2359b,_0x597c30){_0xc2359b=_0xc2359b-0x0;var _0x5254bc=_0x7c68[_0xc2359b];return _0x5254bc;};'use strict';function Trunk(_0x32d98d){this['id']=_0x32d98d['id']||0x0;this[_0x87c6('0x0')]=_0x32d98d[_0x87c6('0x0')]||![];this[_0x87c6('0x1')]=_0x32d98d[_0x87c6('0x1')]||'';this[_0x87c6('0x2')]='unknown';this[_0x87c6('0x3')]=0x0;this[_0x87c6('0x4')]=_0x87c6('0x5');this['registry']=_0x32d98d[_0x87c6('0x6')]&&_0x32d98d[_0x87c6('0x6')][_0x87c6('0x7')](':')?_0x32d98d[_0x87c6('0x6')][_0x87c6('0x8')](':')[0x0]:'';this[_0x87c6('0x9')]='';this[_0x87c6('0xa')]='';this[_0x87c6('0xb')]='';this[_0x87c6('0xc')]='';this['refresh']='';this['stateRegistry']=_0x87c6('0x5');this[_0x87c6('0xd')]='';this[_0x87c6('0xe')]='';this[_0x87c6('0xf')]=_0x32d98d[_0x87c6('0xf')]||'';}module[_0x87c6('0x10')]=Trunk;
\ No newline at end of file
index 8e6e0dc..41c0937 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d51=['exten','recordingFormat','none','mandatoryDisposition'];(function(_0x5260a9,_0x33d3ef){var _0x5a9bd7=function(_0x45deaa){while(--_0x45deaa){_0x5260a9['push'](_0x5260a9['shift']());}};_0x5a9bd7(++_0x33d3ef);}(_0x2d51,0x1a4));var _0x12d5=function(_0xa59eef,_0x4df44d){_0xa59eef=_0xa59eef-0x0;var _0x2be408=_0x2d51[_0xa59eef];return _0x2be408;};'use strict';function voiceExtension(_0x189b66){this['id']=_0x189b66['id']||0x0;this[_0x12d5('0x0')]=_0x189b66[_0x12d5('0x0')]||'';this[_0x12d5('0x1')]=_0x189b66[_0x12d5('0x1')]||_0x12d5('0x2');this[_0x12d5('0x3')]=_0x189b66[_0x12d5('0x3')]||![];}module['exports']=voiceExtension;
\ No newline at end of file
+var _0x6fcb=['exports','exten','recordingFormat','none','mandatoryDisposition'];(function(_0x12af07,_0x474e77){var _0x5e5788=function(_0x2ab37c){while(--_0x2ab37c){_0x12af07['push'](_0x12af07['shift']());}};_0x5e5788(++_0x474e77);}(_0x6fcb,0xba));var _0xb6fc=function(_0x325c81,_0x2bb7c5){_0x325c81=_0x325c81-0x0;var _0x4671dc=_0x6fcb[_0x325c81];return _0x4671dc;};'use strict';function voiceExtension(_0x423a92){this['id']=_0x423a92['id']||0x0;this[_0xb6fc('0x0')]=_0x423a92['exten']||'';this[_0xb6fc('0x1')]=_0x423a92[_0xb6fc('0x1')]||_0xb6fc('0x2');this[_0xb6fc('0x3')]=_0x423a92[_0xb6fc('0x3')]||![];}module[_0xb6fc('0x4')]=voiceExtension;
\ No newline at end of file
index 5955614..ec76d5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd912=['temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','pTalking','timeout','outboundAnswerAgiCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCallsDroppedCalls','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','inuse','busy','unavailable','ringing','ringinuse','wav','wav49','gsm','rrmemory','monitor_format','type','inbound','waiting','talking','sumDuration','sumHoldTime','sumBillable','unmanaged','loggedIn','available','acwTimeout','autopause','sendMessageOneNotActive','message','originated'];(function(_0x1ca004,_0x55af3b){var _0x5d95cc=function(_0x531b5b){while(--_0x531b5b){_0x1ca004['push'](_0x1ca004['shift']());}};_0x5d95cc(++_0x55af3b);}(_0xd912,0xd7));var _0x2d91=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xd912[_0x432682];return _0x463d05;};'use strict';var statusDesc=['unknown','not_inuse',_0x2d91('0x0'),_0x2d91('0x1'),'invalid',_0x2d91('0x2'),_0x2d91('0x3'),_0x2d91('0x4'),'onhold'];var monitorFormat={'wav':_0x2d91('0x5'),'wav49':_0x2d91('0x6'),'gsm':_0x2d91('0x7')};var strategy={'rrmemory':_0x2d91('0x8'),'roundrobin':'roundrobin'};function VoiceQueue(_0x20ee11){this['id']=_0x20ee11['id']||0x0;this['name']=_0x20ee11['name']||'';this[_0x2d91('0x9')]=_0x20ee11['monitor_format']||'';this[_0x2d91('0xa')]=_0x20ee11[_0x2d91('0xa')]||_0x2d91('0xb');this[_0x2d91('0xc')]=0x0;this[_0x2d91('0xd')]=0x0;this['total']=0x0;this['answered']=0x0;this[_0x2d91('0xe')]=0x0;this[_0x2d91('0xf')]=0x0;this[_0x2d91('0x10')]=0x0;this[_0x2d91('0x11')]=0x0;this['abandoned']=0x0;this[_0x2d91('0x12')]=0x0;this[_0x2d91('0x13')]=0x0;this['acw']=_0x20ee11['acw']||![];this[_0x2d91('0x14')]=_0x20ee11[_0x2d91('0x14')]||0xa;this[_0x2d91('0x15')]=_0x20ee11['autopause']||'no';this[_0x2d91('0x16')]=!![];this[_0x2d91('0x17')]='';this[_0x2d91('0x18')]=0x0;this[_0x2d91('0x19')]=0x0;this[_0x2d91('0x1a')]=_0x20ee11[_0x2d91('0x1a')]||null;this['dialGlobalInterval']=_0x20ee11['dialGlobalInterval']?_0x20ee11[_0x2d91('0x1b')]:null;this[_0x2d91('0x1c')]=_0x20ee11[_0x2d91('0x1c')];this[_0x2d91('0x1d')]=_0x20ee11['dialMethod']||_0x2d91('0x1e');this[_0x2d91('0x1f')]=_0x20ee11[_0x2d91('0x1f')]||0x0;this[_0x2d91('0x20')]=_0x20ee11[_0x2d91('0x20')]||0x0;this[_0x2d91('0x21')]=_0x20ee11[_0x2d91('0x21')]||0x1;this[_0x2d91('0x22')]=_0x20ee11[_0x2d91('0x22')]||'dropRate';this['dialPredictiveOptimizationPercentage']=_0x20ee11[_0x2d91('0x23')]||0.03;this[_0x2d91('0x24')]=_0x20ee11[_0x2d91('0x24')]||0x258;this[_0x2d91('0x25')]=_0x20ee11[_0x2d91('0x25')]||_0x2d91('0x26');this[_0x2d91('0x27')]=_0x20ee11[_0x2d91('0x27')]||_0x2d91('0x26');this[_0x2d91('0x28')]=_0x20ee11[_0x2d91('0x28')]||0x1e;this['dialQueueOptions']=_0x20ee11[_0x2d91('0x29')]||_0x2d91('0x2a');this['dialQueueTimeout']=_0x20ee11[_0x2d91('0x2b')]||0x3;this[_0x2d91('0x2c')]=_0x20ee11[_0x2d91('0x2c')]||undefined;this[_0x2d91('0x2d')]=_0x20ee11[_0x2d91('0x2d')]||0x3;this[_0x2d91('0x2e')]=_0x20ee11[_0x2d91('0x2e')]||0x96;this[_0x2d91('0x2f')]=_0x20ee11[_0x2d91('0x2f')]||0x3;this[_0x2d91('0x30')]=_0x20ee11[_0x2d91('0x30')]||0x96;this[_0x2d91('0x31')]=_0x20ee11[_0x2d91('0x31')]||0x3;this['dialNoAnswerRetryFrequency']=_0x20ee11[_0x2d91('0x32')]||0x96;this[_0x2d91('0x33')]=_0x20ee11['dialNoSuchNumberMaxRetry']||0x3;this[_0x2d91('0x34')]=_0x20ee11['dialNoSuchNumberRetryFrequency']||0x96;this[_0x2d91('0x35')]=_0x20ee11['dialDropMaxRetry']||0x3;this[_0x2d91('0x36')]=_0x20ee11[_0x2d91('0x36')]||0x96;this[_0x2d91('0x37')]=_0x20ee11[_0x2d91('0x37')]||0x3;this[_0x2d91('0x38')]=_0x20ee11[_0x2d91('0x38')]||0x96;this[_0x2d91('0x39')]=_0x20ee11[_0x2d91('0x39')]||0x3;this['dialMachineRetryFrequency']=_0x20ee11[_0x2d91('0x3a')]||0x96;this[_0x2d91('0x3b')]=_0x20ee11[_0x2d91('0x3b')]||0x3;this[_0x2d91('0x3c')]=_0x20ee11['dialAgentRejectRetryFrequency']||0x96;this['callAdditionalPhoneAfterMin']=_0x20ee11[_0x2d91('0x3d')]||0x3;this[_0x2d91('0x3e')]=_0x20ee11[_0x2d91('0x3e')]||0x4;this[_0x2d91('0x3f')]=_0x20ee11[_0x2d91('0x3f')]?_0x20ee11[_0x2d91('0x3f')]:undefined;this[_0x2d91('0x40')]=_0x20ee11[_0x2d91('0x40')]?_0x20ee11['TrunkBackup']:undefined;this[_0x2d91('0x41')]=_0x20ee11[_0x2d91('0x41')]||undefined;this['Interval']=_0x20ee11[_0x2d91('0x42')]?_0x20ee11['Interval']:undefined;this[_0x2d91('0x43')]=_0x20ee11[_0x2d91('0x43')]||'DESC';this[_0x2d91('0x44')]=_0x20ee11[_0x2d91('0x44')]||undefined;this['dialCutDigit']=_0x20ee11[_0x2d91('0x45')]||undefined;this[_0x2d91('0x46')]=strategy[_0x20ee11['strategy']]||_0x2d91('0x8');this[_0x2d91('0x47')]=!![];this[_0x2d91('0x48')]=_0x20ee11['dialAMDActive']||![];this[_0x2d91('0x49')]=_0x20ee11[_0x2d91('0x49')];this[_0x2d91('0x4a')]=_0x20ee11['dialAMDGreeting'];this[_0x2d91('0x4b')]=_0x20ee11['dialAMDAfterGreetingSilence'];this[_0x2d91('0x4c')]=_0x20ee11[_0x2d91('0x4c')];this['dialAMDMinWordLength']=_0x20ee11['dialAMDMinWordLength'];this[_0x2d91('0x4d')]=_0x20ee11[_0x2d91('0x4d')];this[_0x2d91('0x4e')]=_0x20ee11['dialAMDMaximumNumberOfWords'];this[_0x2d91('0x4f')]=_0x20ee11['dialAMDSilenceThreshold'];this[_0x2d91('0x50')]=_0x20ee11[_0x2d91('0x50')];this['outboundRejectCallsDay']=0x0;this[_0x2d91('0x51')]=0x0;this[_0x2d91('0x52')]=_0x20ee11[_0x2d91('0x52')];this['outboundAnswerCallsDay']=0x0;this[_0x2d91('0x53')]=0x0;this['outboundNoAnswerCallsDay']=0x0;this['outboundBusyCallsDay']=0x0;this[_0x2d91('0x54')]=0x0;this[_0x2d91('0x55')]=0x0;this[_0x2d91('0x56')]=0x0;this['outboundBlacklistCallsDay']=0x0;this[_0x2d91('0x57')]=0x0;this[_0x2d91('0x58')]=0x0;this[_0x2d91('0x59')]=0x0;this[_0x2d91('0x5a')]=0x0;this[_0x2d91('0x5b')]=0x0;this[_0x2d91('0x5c')]=0x0;this[_0x2d91('0x5d')]=undefined;this[_0x2d91('0x5e')]=undefined;this[_0x2d91('0x5f')]=undefined;this['predictiveIntervalMultiplicativeFactor']=1.05;this[_0x2d91('0x60')]=0x0;this[_0x2d91('0x61')]=0x0;this['predictiveIntervalDroppedCallsCallersExit']=0x0;this[_0x2d91('0x62')]=0x0;this[_0x2d91('0x63')]=0x0;this[_0x2d91('0x64')]=0x0;this['predictiveIntervalPauses']=0x0;this[_0x2d91('0x65')]=0x0;this[_0x2d91('0x66')]=_0x20ee11[_0x2d91('0x67')]||0x14;this[_0x2d91('0x68')]=_0x20ee11[_0x2d91('0x67')]||0xa;this['predictiveIntervalErlangCalls']=0x0;this[_0x2d91('0x69')]=0x0;this['predictiveIntervalHitRate']=0x1;this[_0x2d91('0x6a')]=0x0;this[_0x2d91('0x6b')]=0x0;this[_0x2d91('0x6c')]=0x0;this[_0x2d91('0x6d')]=0x0;this['dialRecallMeTimeout']=_0x20ee11[_0x2d91('0x6e')]||0x1e;this[_0x2d91('0x6f')]=_0x20ee11[_0x2d91('0x6f')]||![];this[_0x2d91('0x70')]=!!_0x20ee11['dialPreviewAutoRecallMe']||![];this[_0x2d91('0x71')]=!!_0x20ee11[_0x2d91('0x71')]||![];this[_0x2d91('0x72')]=_0x20ee11[_0x2d91('0x72')]||undefined;this['dialAgiAfterHangupClient']=_0x20ee11[_0x2d91('0x73')]||![];this[_0x2d91('0x74')]=_0x20ee11[_0x2d91('0x74')]||![];this[_0x2d91('0x9')]=monitorFormat[_0x20ee11['monitor_format']]?monitorFormat[_0x20ee11[_0x2d91('0x9')]]:undefined;this[_0x2d91('0x75')]=_0x20ee11['mandatoryDisposition']||![];this[_0x2d91('0x76')]=_0x20ee11[_0x2d91('0x76')]?_0x20ee11[_0x2d91('0x76')]:undefined;}module[_0x2d91('0x77')]=VoiceQueue;
\ No newline at end of file
+var _0xa9da=['wav49','rrmemory','roundrobin','name','type','inbound','waiting','talking','total','answered','sumDuration','unmanaged','available','acw','acwTimeout','autopause','sendMessageOneNotActive','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','anonymous','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayACS','outboundReCallsDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalErlangCalls','predictiveIntervalHitRate','erlangCallToSecond','erlangBusyFactor','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','monitor_format','mandatoryDispositionPause','exports','unknown','inuse','busy','invalid','unavailable','ringinuse','onhold','wav'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9da,0xe2));var _0xaa9d=function(_0x1a3a5c,_0x41b2b5){_0x1a3a5c=_0x1a3a5c-0x0;var _0x466cd7=_0xa9da[_0x1a3a5c];return _0x466cd7;};'use strict';var statusDesc=[_0xaa9d('0x0'),'not_inuse',_0xaa9d('0x1'),_0xaa9d('0x2'),_0xaa9d('0x3'),_0xaa9d('0x4'),'ringing',_0xaa9d('0x5'),_0xaa9d('0x6')];var monitorFormat={'wav':_0xaa9d('0x7'),'wav49':_0xaa9d('0x8'),'gsm':'gsm'};var strategy={'rrmemory':_0xaa9d('0x9'),'roundrobin':_0xaa9d('0xa')};function VoiceQueue(_0x4f2665){this['id']=_0x4f2665['id']||0x0;this[_0xaa9d('0xb')]=_0x4f2665[_0xaa9d('0xb')]||'';this['monitor_format']=_0x4f2665['monitor_format']||'';this['type']=_0x4f2665[_0xaa9d('0xc')]||_0xaa9d('0xd');this[_0xaa9d('0xe')]=0x0;this[_0xaa9d('0xf')]=0x0;this[_0xaa9d('0x10')]=0x0;this[_0xaa9d('0x11')]=0x0;this[_0xaa9d('0x12')]=0x0;this['sumHoldTime']=0x0;this['sumBillable']=0x0;this[_0xaa9d('0x13')]=0x0;this['abandoned']=0x0;this['loggedIn']=0x0;this[_0xaa9d('0x14')]=0x0;this[_0xaa9d('0x15')]=_0x4f2665[_0xaa9d('0x15')]||![];this[_0xaa9d('0x16')]=_0x4f2665['acwTimeout']||0xa;this[_0xaa9d('0x17')]=_0x4f2665[_0xaa9d('0x17')]||'no';this[_0xaa9d('0x18')]=!![];this['message']='';this[_0xaa9d('0x19')]=0x0;this[_0xaa9d('0x1a')]=0x0;this[_0xaa9d('0x1b')]=_0x4f2665[_0xaa9d('0x1b')]||null;this[_0xaa9d('0x1c')]=_0x4f2665[_0xaa9d('0x1c')]?_0x4f2665[_0xaa9d('0x1c')]:null;this[_0xaa9d('0x1d')]=_0x4f2665[_0xaa9d('0x1d')];this[_0xaa9d('0x1e')]=_0x4f2665['dialMethod']||_0xaa9d('0x1f');this[_0xaa9d('0x20')]=_0x4f2665[_0xaa9d('0x20')]||0x0;this['dialLimitQueue']=_0x4f2665[_0xaa9d('0x21')]||0x0;this[_0xaa9d('0x22')]=_0x4f2665[_0xaa9d('0x22')]||0x1;this[_0xaa9d('0x23')]=_0x4f2665[_0xaa9d('0x23')]||'dropRate';this[_0xaa9d('0x24')]=_0x4f2665['dialPredictiveOptimizationPercentage']||0.03;this[_0xaa9d('0x25')]=_0x4f2665[_0xaa9d('0x25')]||0x258;this[_0xaa9d('0x26')]=_0x4f2665['dialOriginateCallerIdName']||'anonymous';this[_0xaa9d('0x27')]=_0x4f2665['dialOriginateCallerIdNumber']||_0xaa9d('0x28');this[_0xaa9d('0x29')]=_0x4f2665[_0xaa9d('0x29')]||0x1e;this['dialQueueOptions']=_0x4f2665[_0xaa9d('0x2a')]||_0xaa9d('0x2b');this['dialQueueTimeout']=_0x4f2665[_0xaa9d('0x2c')]||0x3;this['dialQueueProject']=_0x4f2665[_0xaa9d('0x2d')]||undefined;this['dialCongestionMaxRetry']=_0x4f2665[_0xaa9d('0x2e')]||0x3;this[_0xaa9d('0x2f')]=_0x4f2665[_0xaa9d('0x2f')]||0x96;this[_0xaa9d('0x30')]=_0x4f2665['dialBusyMaxRetry']||0x3;this[_0xaa9d('0x31')]=_0x4f2665[_0xaa9d('0x31')]||0x96;this[_0xaa9d('0x32')]=_0x4f2665[_0xaa9d('0x32')]||0x3;this[_0xaa9d('0x33')]=_0x4f2665['dialNoAnswerRetryFrequency']||0x96;this[_0xaa9d('0x34')]=_0x4f2665['dialNoSuchNumberMaxRetry']||0x3;this['dialNoSuchNumberRetryFrequency']=_0x4f2665[_0xaa9d('0x35')]||0x96;this[_0xaa9d('0x36')]=_0x4f2665[_0xaa9d('0x36')]||0x3;this[_0xaa9d('0x37')]=_0x4f2665[_0xaa9d('0x37')]||0x96;this[_0xaa9d('0x38')]=_0x4f2665[_0xaa9d('0x38')]||0x3;this[_0xaa9d('0x39')]=_0x4f2665['dialAbandonedRetryFrequency']||0x96;this[_0xaa9d('0x3a')]=_0x4f2665[_0xaa9d('0x3a')]||0x3;this['dialMachineRetryFrequency']=_0x4f2665['dialMachineRetryFrequency']||0x96;this[_0xaa9d('0x3b')]=_0x4f2665[_0xaa9d('0x3b')]||0x3;this['dialAgentRejectRetryFrequency']=_0x4f2665[_0xaa9d('0x3c')]||0x96;this[_0xaa9d('0x3d')]=_0x4f2665['callAdditionalPhoneAfterMin']||0x3;this[_0xaa9d('0x3e')]=_0x4f2665[_0xaa9d('0x3e')]||0x4;this[_0xaa9d('0x3f')]=_0x4f2665[_0xaa9d('0x3f')]?_0x4f2665['Trunk']:undefined;this[_0xaa9d('0x40')]=_0x4f2665[_0xaa9d('0x40')]?_0x4f2665[_0xaa9d('0x40')]:undefined;this['dialPrefix']=_0x4f2665['dialPrefix']||undefined;this[_0xaa9d('0x41')]=_0x4f2665[_0xaa9d('0x41')]?_0x4f2665[_0xaa9d('0x41')]:undefined;this[_0xaa9d('0x42')]=_0x4f2665[_0xaa9d('0x42')]||_0xaa9d('0x43');this[_0xaa9d('0x44')]=_0x4f2665[_0xaa9d('0x44')]||undefined;this['dialCutDigit']=_0x4f2665[_0xaa9d('0x45')]||undefined;this[_0xaa9d('0x46')]=strategy[_0x4f2665[_0xaa9d('0x46')]]||'rrmemory';this[_0xaa9d('0x47')]=!![];this[_0xaa9d('0x48')]=_0x4f2665[_0xaa9d('0x48')]||![];this[_0xaa9d('0x49')]=_0x4f2665[_0xaa9d('0x49')];this[_0xaa9d('0x4a')]=_0x4f2665['dialAMDGreeting'];this[_0xaa9d('0x4b')]=_0x4f2665[_0xaa9d('0x4b')];this[_0xaa9d('0x4c')]=_0x4f2665['dialAMDTotalAnalysisTime'];this[_0xaa9d('0x4d')]=_0x4f2665['dialAMDMinWordLength'];this['dialAMDBetweenWordsSilence']=_0x4f2665[_0xaa9d('0x4e')];this['dialAMDMaximumNumberOfWords']=_0x4f2665[_0xaa9d('0x4f')];this['dialAMDSilenceThreshold']=_0x4f2665[_0xaa9d('0x50')];this[_0xaa9d('0x51')]=_0x4f2665[_0xaa9d('0x51')];this[_0xaa9d('0x52')]=0x0;this[_0xaa9d('0x53')]=0x0;this['timeout']=_0x4f2665[_0xaa9d('0x54')];this[_0xaa9d('0x55')]=0x0;this[_0xaa9d('0x56')]=0x0;this['outboundNoAnswerCallsDay']=0x0;this['outboundBusyCallsDay']=0x0;this['outboundCongestionCallsDay']=0x0;this[_0xaa9d('0x57')]=0x0;this[_0xaa9d('0x58')]=0x0;this['outboundBlacklistCallsDay']=0x0;this[_0xaa9d('0x59')]=0x0;this[_0xaa9d('0x5a')]=0x0;this['outboundDropCallsDayTimeout']=0x0;this[_0xaa9d('0x5b')]=0x0;this[_0xaa9d('0x5c')]=0x0;this['outboundAbandonedDay']=0x0;this[_0xaa9d('0x5d')]=undefined;this[_0xaa9d('0x5e')]=undefined;this[_0xaa9d('0x5f')]=undefined;this[_0xaa9d('0x60')]=1.05;this[_0xaa9d('0x61')]=0x0;this['predictiveIntervalAnsweredCalls']=0x0;this['predictiveIntervalDroppedCallsCallersExit']=0x0;this[_0xaa9d('0x62')]=0x0;this[_0xaa9d('0x63')]=0x0;this['predictiveIntervalAvgTalktime']=0x0;this[_0xaa9d('0x64')]=0x0;this[_0xaa9d('0x65')]=0x0;this[_0xaa9d('0x66')]=_0x4f2665[_0xaa9d('0x67')]||0x14;this['predictiveIntervalMinThreshold']=_0x4f2665[_0xaa9d('0x67')]||0xa;this[_0xaa9d('0x68')]=0x0;this['predictiveIntervalErlangCallsDroppedCalls']=0x0;this[_0xaa9d('0x69')]=0x1;this['erlangCalls']=0x0;this[_0xaa9d('0x6a')]=0x0;this['erlangAbandonmentRate']=0x0;this[_0xaa9d('0x6b')]=0x0;this['dialRecallMeTimeout']=_0x4f2665['dialRecallMeTimeout']||0x1e;this[_0xaa9d('0x6c')]=_0x4f2665[_0xaa9d('0x6c')]||![];this['dialPreviewAutoRecallMe']=!!_0x4f2665[_0xaa9d('0x6d')]||![];this[_0xaa9d('0x6e')]=!!_0x4f2665[_0xaa9d('0x6e')]||![];this[_0xaa9d('0x6f')]=_0x4f2665[_0xaa9d('0x6f')]||undefined;this[_0xaa9d('0x70')]=_0x4f2665[_0xaa9d('0x70')]||![];this[_0xaa9d('0x71')]=_0x4f2665['dialAgiAfterHangupAgent']||![];this[_0xaa9d('0x72')]=monitorFormat[_0x4f2665['monitor_format']]?monitorFormat[_0x4f2665['monitor_format']]:undefined;this['mandatoryDisposition']=_0x4f2665['mandatoryDisposition']||![];this['mandatoryDispositionPause']=_0x4f2665['mandatoryDispositionPause']?_0x4f2665[_0xaa9d('0x73')]:undefined;}module[_0xaa9d('0x74')]=VoiceQueue;
\ No newline at end of file
index 0fd8f98..7b54a2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0f9=['username','accessKey','remoteUri','Configurations','exports','name'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0xb0f9,0x185));var _0x9b0f=function(_0x120a86,_0x19bb1e){_0x120a86=_0x120a86-0x0;var _0xd9acc=_0xb0f9[_0x120a86];return _0xd9acc;};'use strict';function VtigerAccount(_0x5cc37f){this['id']=_0x5cc37f['id']||0x0;this[_0x9b0f('0x0')]=_0x5cc37f[_0x9b0f('0x0')]||'';this[_0x9b0f('0x1')]=_0x5cc37f[_0x9b0f('0x1')]||'';this[_0x9b0f('0x2')]=_0x5cc37f[_0x9b0f('0x2')]||'';this[_0x9b0f('0x3')]=_0x5cc37f['remoteUri']||'';this['serverUrl']=_0x5cc37f['serverUrl']||'';this[_0x9b0f('0x4')]=_0x5cc37f[_0x9b0f('0x4')]||{};}module[_0x9b0f('0x5')]=VtigerAccount;
\ No newline at end of file
+var _0xdad4=['Configurations','name','username','accessKey','remoteUri','serverUrl'];(function(_0x4bb66f,_0x3cd682){var _0xf2772f=function(_0x2e3698){while(--_0x2e3698){_0x4bb66f['push'](_0x4bb66f['shift']());}};_0xf2772f(++_0x3cd682);}(_0xdad4,0xa9));var _0x4dad=function(_0x10d3c2,_0x1f5142){_0x10d3c2=_0x10d3c2-0x0;var _0x4208aa=_0xdad4[_0x10d3c2];return _0x4208aa;};'use strict';function VtigerAccount(_0x129c56){this['id']=_0x129c56['id']||0x0;this[_0x4dad('0x0')]=_0x129c56['name']||'';this[_0x4dad('0x1')]=_0x129c56[_0x4dad('0x1')]||'';this[_0x4dad('0x2')]=_0x129c56[_0x4dad('0x2')]||'';this[_0x4dad('0x3')]=_0x129c56[_0x4dad('0x3')]||'';this[_0x4dad('0x4')]=_0x129c56['serverUrl']||'';this[_0x4dad('0x5')]=_0x129c56[_0x4dad('0x5')]||{};}module['exports']=VtigerAccount;
\ No newline at end of file
index d72001b..3f4d304 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x172c=['remoteUri','authType','type','integrationTab','serverUrl','Configurations','exports','name','password','token'];(function(_0x5d8018,_0x588592){var _0x151ac4=function(_0x548679){while(--_0x548679){_0x5d8018['push'](_0x5d8018['shift']());}};_0x151ac4(++_0x588592);}(_0x172c,0x18d));var _0xc172=function(_0x819464,_0x46fc91){_0x819464=_0x819464-0x0;var _0x49dcc0=_0x172c[_0x819464];return _0x49dcc0;};'use strict';function ZendeskAccount(_0xf7ad3){this['id']=_0xf7ad3['id']||0x0;this[_0xc172('0x0')]=_0xf7ad3[_0xc172('0x0')]||'';this['username']=_0xf7ad3['username']||'';this[_0xc172('0x1')]=_0xf7ad3[_0xc172('0x1')]||'';this['token']=_0xf7ad3[_0xc172('0x2')]||'';this[_0xc172('0x3')]=_0xf7ad3['remoteUri']||'';this[_0xc172('0x4')]=_0xf7ad3['authType']||'';this[_0xc172('0x5')]=_0xf7ad3[_0xc172('0x5')]||_0xc172('0x6');this[_0xc172('0x7')]=_0xf7ad3[_0xc172('0x7')]||'';this[_0xc172('0x8')]=_0xf7ad3[_0xc172('0x8')]||{};}module[_0xc172('0x9')]=ZendeskAccount;
\ No newline at end of file
+var _0xb51f=['authType','type','integrationTab','serverUrl','Configurations','name','username','password','token','remoteUri'];(function(_0x58547b,_0x4b89c2){var _0x1d3fd2=function(_0x4ac500){while(--_0x4ac500){_0x58547b['push'](_0x58547b['shift']());}};_0x1d3fd2(++_0x4b89c2);}(_0xb51f,0x109));var _0xfb51=function(_0x34d533,_0x161449){_0x34d533=_0x34d533-0x0;var _0x4731f5=_0xb51f[_0x34d533];return _0x4731f5;};'use strict';function ZendeskAccount(_0x40badc){this['id']=_0x40badc['id']||0x0;this[_0xfb51('0x0')]=_0x40badc[_0xfb51('0x0')]||'';this[_0xfb51('0x1')]=_0x40badc[_0xfb51('0x1')]||'';this[_0xfb51('0x2')]=_0x40badc[_0xfb51('0x2')]||'';this['token']=_0x40badc[_0xfb51('0x3')]||'';this['remoteUri']=_0x40badc[_0xfb51('0x4')]||'';this[_0xfb51('0x5')]=_0x40badc[_0xfb51('0x5')]||'';this['type']=_0x40badc[_0xfb51('0x6')]||_0xfb51('0x7');this[_0xfb51('0x8')]=_0x40badc['serverUrl']||'';this['Configurations']=_0x40badc[_0xfb51('0x9')]||{};}module['exports']=ZendeskAccount;
\ No newline at end of file
index d9d547b..4606dec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e6e=['refreshToken','Configurations','exports','name','description','host','clientId','clientSecret','serverUrl','code'];(function(_0x2dab1c,_0x5a3cc3){var _0x21f6a7=function(_0xa4072f){while(--_0xa4072f){_0x2dab1c['push'](_0x2dab1c['shift']());}};_0x21f6a7(++_0x5a3cc3);}(_0x8e6e,0xcb));var _0xe8e6=function(_0x555e79,_0x9ee00e){_0x555e79=_0x555e79-0x0;var _0x36cb67=_0x8e6e[_0x555e79];return _0x36cb67;};'use strict';function ZohoAccount(_0x14a9f9){this['id']=_0x14a9f9['id']||0x0;this[_0xe8e6('0x0')]=_0x14a9f9[_0xe8e6('0x0')]||'';this[_0xe8e6('0x1')]=_0x14a9f9[_0xe8e6('0x1')]||'';this['host']=_0x14a9f9[_0xe8e6('0x2')]||'';this['zone']=_0x14a9f9['zone']||'';this[_0xe8e6('0x3')]=_0x14a9f9[_0xe8e6('0x3')]||'';this['clientSecret']=_0x14a9f9[_0xe8e6('0x4')]||'';this[_0xe8e6('0x5')]=_0x14a9f9['serverUrl']||'';this['code']=_0x14a9f9[_0xe8e6('0x6')]||'';this[_0xe8e6('0x7')]=_0x14a9f9['refreshToken']||'';this[_0xe8e6('0x8')]=_0x14a9f9[_0xe8e6('0x8')]||{};}module[_0xe8e6('0x9')]=ZohoAccount;
\ No newline at end of file
+var _0x1042=['name','description','host','clientId','clientSecret','serverUrl','code','refreshToken','Configurations'];(function(_0x468906,_0x186210){var _0x55e64a=function(_0x4358cf){while(--_0x4358cf){_0x468906['push'](_0x468906['shift']());}};_0x55e64a(++_0x186210);}(_0x1042,0x171));var _0x2104=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1042[_0x3dd15e];return _0x231fd0;};'use strict';function ZohoAccount(_0x182e6c){this['id']=_0x182e6c['id']||0x0;this[_0x2104('0x0')]=_0x182e6c[_0x2104('0x0')]||'';this[_0x2104('0x1')]=_0x182e6c[_0x2104('0x1')]||'';this[_0x2104('0x2')]=_0x182e6c[_0x2104('0x2')]||'';this['zone']=_0x182e6c['zone']||'';this['clientId']=_0x182e6c[_0x2104('0x3')]||'';this[_0x2104('0x4')]=_0x182e6c[_0x2104('0x4')]||'';this['serverUrl']=_0x182e6c[_0x2104('0x5')]||'';this[_0x2104('0x6')]=_0x182e6c[_0x2104('0x6')]||'';this[_0x2104('0x7')]=_0x182e6c[_0x2104('0x7')]||'';this[_0x2104('0x8')]=_0x182e6c[_0x2104('0x8')]||{};}module['exports']=ZohoAccount;
\ No newline at end of file
index 827c09b..fe17194 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaebd=['scheduledat','countbusyretry','countnoanswerretry','countglobal','countcongestionretry','countdropretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','countabandonedretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','originatecalleridnum','getCaller','\x22%s\x22\x20<%s>','exports','util','moment','string','isNil','queue','name','type','campaigntype','dialAnswer','Agent','format','membername','calleridname','Contact','phone','firstName','active','calleridnum'];(function(_0x4ac25e,_0x3f68eb){var _0x1aa2ba=function(_0xa76513){while(--_0xa76513){_0x4ac25e['push'](_0x4ac25e['shift']());}};_0x1aa2ba(++_0x3f68eb);}(_0xaebd,0x1e9));var _0xdaeb=function(_0x9b242c,_0x55e54d){_0x9b242c=_0x9b242c-0x0;var _0x5a2ce4=_0xaebd[_0x9b242c];return _0x5a2ce4;};'use strict';var util=require(_0xdaeb('0x0'));var _=require('lodash');var moment=require(_0xdaeb('0x1'));function checkNameSurname(_0xac84fd,_0x1312be,_0x18af69){var _0x198c72='';if(!_['isNil'](_0x1312be)&&_0xdaeb('0x2')===typeof _0x1312be){_0x198c72+=_0x1312be;}if(!_[_0xdaeb('0x3')](_0x18af69)&&_0xdaeb('0x2')===typeof _0x18af69){_0x198c72+='\x20'+_0x18af69;}if(_0x198c72!==''){return _0x198c72;}return _0xac84fd;}function Action(_0x1141fe,_0xee94f9,_0x4b7255,_0x3ea090,_0x3f7ba1){this['uniqueid']=_0x4b7255||undefined;this['idContact']=_0x1141fe['id'];this[_0xdaeb('0x4')]=_0xee94f9[_0xdaeb('0x5')];this[_0xdaeb('0x6')]=_0xee94f9['type'];this[_0xdaeb('0x7')]='queue';this[_0xdaeb('0x8')]=![];this['membername']=_[_0xdaeb('0x3')](_0x1141fe['Agent'])?undefined:_0x1141fe[_0xdaeb('0x9')][_0xdaeb('0x5')];this['channelAgent']=this['membername']?util[_0xdaeb('0xa')]('SIP/%s',this[_0xdaeb('0xb')]):_0x3ea090||undefined;this[_0xdaeb('0xc')]=checkNameSurname(_0x1141fe[_0xdaeb('0xd')][_0xdaeb('0xe')],_0x1141fe[_0xdaeb('0xd')][_0xdaeb('0xf')],_0x1141fe[_0xdaeb('0xd')]['lastName']);this['active']=_0x1141fe[_0xdaeb('0x10')]||![];this[_0xdaeb('0x11')]=_0x1141fe[_0xdaeb('0xe')];this[_0xdaeb('0x12')]=_0x1141fe['scheduledat'];this['countbusyretry']=_0x1141fe[_0xdaeb('0x13')]||0x0;this['countcongestionretry']=_0x1141fe['countcongestionretry']||0x0;this[_0xdaeb('0x14')]=_0x1141fe[_0xdaeb('0x14')]||0x0;this[_0xdaeb('0x15')]=(_0x1141fe[_0xdaeb('0x13')]||0x0)+(_0x1141fe[_0xdaeb('0x16')]||0x0)+(_0x1141fe[_0xdaeb('0x14')]||0x0)+(_0x1141fe['countnosuchnumberretry']||0x0)+(_0x1141fe[_0xdaeb('0x17')]||0x0)+(_0x1141fe['countabandonedretry']||0x0)+(_0x1141fe[_0xdaeb('0x18')]||0x0)+(_0x1141fe[_0xdaeb('0x19')]||0x0);this[_0xdaeb('0x1a')]=_0x1141fe['countnosuchnumberretry']||0x0;this['countdropretry']=_0x1141fe[_0xdaeb('0x17')]||0x0;this[_0xdaeb('0x1b')]=_0x1141fe[_0xdaeb('0x1b')]||0x0;this[_0xdaeb('0x18')]=_0x1141fe[_0xdaeb('0x18')]||0x0;this['countagentrejectretry']=_0x1141fe['countagentrejectretry']||0x0;this[_0xdaeb('0x1c')]=_0x1141fe[_0xdaeb('0x1c')];this[_0xdaeb('0x1d')]=_0x1141fe[_0xdaeb('0x1d')];this[_0xdaeb('0x1e')]=_0x1141fe['callbackat'];this[_0xdaeb('0x1f')]=_0x1141fe['recallme'];this[_0xdaeb('0x20')]=_0x1141fe[_0xdaeb('0x20')];this[_0xdaeb('0x21')]=_0x1141fe[_0xdaeb('0x21')];this[_0xdaeb('0x22')]=_['isNil'](_0x1141fe[_0xdaeb('0x9')])?_0x1141fe[_0xdaeb('0x22')]:_0x1141fe[_0xdaeb('0x9')]['id'];this['VoiceQueueId']=_0x1141fe['VoiceQueueId'];this[_0xdaeb('0x23')]='';this['originatecalleridname']='';}Action['prototype'][_0xdaeb('0x24')]=function(){return util[_0xdaeb('0xa')](_0xdaeb('0x25'),this['calleridname'],this['number']);};module[_0xdaeb('0x26')]=Action;
\ No newline at end of file
+var _0x1a37=['VoiceQueueId','originatecalleridnum','originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>','number','exports','util','lodash','moment','isNil','string','uniqueid','type','campaigntype','queue','dialAnswer','membername','Agent','format','SIP/%s','calleridname','Contact','phone','firstName','lastName','active','calleridnum','countbusyretry','countcongestionretry','countnoanswerretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId'];(function(_0x4ded8c,_0x502997){var _0x1b9fe5=function(_0x2e30a7){while(--_0x2e30a7){_0x4ded8c['push'](_0x4ded8c['shift']());}};_0x1b9fe5(++_0x502997);}(_0x1a37,0xb4));var _0x71a3=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x1a37[_0x2641f9];return _0x585741;};'use strict';var util=require(_0x71a3('0x0'));var _=require(_0x71a3('0x1'));var moment=require(_0x71a3('0x2'));function checkNameSurname(_0x28e254,_0x353cf0,_0x20d8a7){var _0x348395='';if(!_[_0x71a3('0x3')](_0x353cf0)&&_0x71a3('0x4')===typeof _0x353cf0){_0x348395+=_0x353cf0;}if(!_[_0x71a3('0x3')](_0x20d8a7)&&'string'===typeof _0x20d8a7){_0x348395+='\x20'+_0x20d8a7;}if(_0x348395!==''){return _0x348395;}return _0x28e254;}function Action(_0x11e8a8,_0x4f6b7a,_0xd09f7,_0x45050a,_0x231ea7){this[_0x71a3('0x5')]=_0xd09f7||undefined;this['idContact']=_0x11e8a8['id'];this['queue']=_0x4f6b7a['name'];this['type']=_0x4f6b7a[_0x71a3('0x6')];this[_0x71a3('0x7')]=_0x71a3('0x8');this[_0x71a3('0x9')]=![];this[_0x71a3('0xa')]=_[_0x71a3('0x3')](_0x11e8a8[_0x71a3('0xb')])?undefined:_0x11e8a8[_0x71a3('0xb')]['name'];this['channelAgent']=this['membername']?util[_0x71a3('0xc')](_0x71a3('0xd'),this[_0x71a3('0xa')]):_0x45050a||undefined;this[_0x71a3('0xe')]=checkNameSurname(_0x11e8a8[_0x71a3('0xf')][_0x71a3('0x10')],_0x11e8a8[_0x71a3('0xf')][_0x71a3('0x11')],_0x11e8a8[_0x71a3('0xf')][_0x71a3('0x12')]);this[_0x71a3('0x13')]=_0x11e8a8['active']||![];this[_0x71a3('0x14')]=_0x11e8a8[_0x71a3('0x10')];this['scheduledat']=_0x11e8a8['scheduledat'];this[_0x71a3('0x15')]=_0x11e8a8[_0x71a3('0x15')]||0x0;this[_0x71a3('0x16')]=_0x11e8a8[_0x71a3('0x16')]||0x0;this[_0x71a3('0x17')]=_0x11e8a8[_0x71a3('0x17')]||0x0;this['countglobal']=(_0x11e8a8[_0x71a3('0x15')]||0x0)+(_0x11e8a8[_0x71a3('0x16')]||0x0)+(_0x11e8a8['countnoanswerretry']||0x0)+(_0x11e8a8['countnosuchnumberretry']||0x0)+(_0x11e8a8[_0x71a3('0x18')]||0x0)+(_0x11e8a8[_0x71a3('0x19')]||0x0)+(_0x11e8a8[_0x71a3('0x1a')]||0x0)+(_0x11e8a8[_0x71a3('0x1b')]||0x0);this[_0x71a3('0x1c')]=_0x11e8a8['countnosuchnumberretry']||0x0;this[_0x71a3('0x18')]=_0x11e8a8[_0x71a3('0x18')]||0x0;this[_0x71a3('0x19')]=_0x11e8a8[_0x71a3('0x19')]||0x0;this[_0x71a3('0x1a')]=_0x11e8a8['countmachineretry']||0x0;this[_0x71a3('0x1b')]=_0x11e8a8['countagentrejectretry']||0x0;this[_0x71a3('0x1d')]=_0x11e8a8[_0x71a3('0x1d')];this[_0x71a3('0x1e')]=_0x11e8a8[_0x71a3('0x1e')];this[_0x71a3('0x1f')]=_0x11e8a8[_0x71a3('0x1f')];this['recallme']=_0x11e8a8[_0x71a3('0x20')];this[_0x71a3('0x21')]=_0x11e8a8[_0x71a3('0x21')];this[_0x71a3('0x22')]=_0x11e8a8[_0x71a3('0x22')];this['UserId']=_[_0x71a3('0x3')](_0x11e8a8[_0x71a3('0xb')])?_0x11e8a8['UserId']:_0x11e8a8[_0x71a3('0xb')]['id'];this['VoiceQueueId']=_0x11e8a8[_0x71a3('0x23')];this[_0x71a3('0x24')]='';this[_0x71a3('0x25')]='';}Action[_0x71a3('0x26')][_0x71a3('0x27')]=function(){return util[_0x71a3('0xc')](_0x71a3('0x28'),this[_0x71a3('0xe')],this[_0x71a3('0x29')]);};module[_0x71a3('0x2a')]=Action;
\ No newline at end of file
index 6c8af04..09cdf5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8fb=['Answer','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','[syncHangup][talking][decrement]','BUSY','countbusyretry','Busy','dialBusyRetryFrequency','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','verifyAdditionalPhones','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','incrementPreviewCounters','NoAnswer','dialNoAnswerRetryFrequency','custom:agentnoanswer','[callProgressDetectingCustomer][logNoAnswer]','countnoanswerretry','dialNoAnswerMaxRetry','countcongestionretry','dialCongestionRetryFrequency','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','CANCEL','countagentrejectretry','AgentReject','dialAgentRejectRetryFrequency','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','ABANDONED','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','dialAbandonedRetryFrequency','outboundUnknownCallsDay','countmachineretry','cause-txt','custom:amd','[callProgressDetectingCustomer][hangupInAMD]','amd','[callProgressDetectingCustomer][machine]','[default]','dialstatus','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','uniqueid','destlinkedid','callProgressDetectingAgent','isUndefined','object','reason','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','logAgent','[callProgressDetectingAgent][logBusy]','Congestion','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','resolve','[verifyAdditionalPhone]\x20','[swapAdditionalPhone]\x20','[incrementPreviewCounters]\x20','Contact','phone','Contact\x20is\x20undefined','lookAgent','isEmpty','execCall','Queue:\x20','custom:agentcalled','[Preview][execCall][failure]','Call\x20failed','createHistory','[Blacklist][error]','isTrunkReachable','SIP/%s','reachable','unmonitored','execRun','unlock','unlockContact','disableContact','recallme','validateContact','checkIsBlackList','VoiceQueueId','checkInBlack','[Preview][checkIsBlackList]','[Preview][getContactPreview]','Call\x20unsuccessful','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','isActive','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','SIP/%s/%s%s','trim','dialCutDigit','substring','getCallerId','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','originatecalleridname','originatecalleridnum','extractCalleridNumber','addVariables','merge','toLowerVariables','Action','variablesAction','[originated][increment]','[originateFailure][logOriginateFailure]','actionid','rejected','[callProgressDetectingAgent][logAnswer]','callProgressDetectingCustomer','cause','statedesc','dialQueueProject','transfer','[syncHangup][talking][transfer]','syncDialEnd','destuniqueid','syncHangupRequest','addVariable','variables','keys','variable','value','error','syncAttendedTransfer','transfertargetlinkedid','syncBlindTransfer','transfererlinkedid','exports','util','lodash','bluebird','uuid','../../../config/environment','../../../config/logger','actionPreview','./rpcDb','./action','redis','defaults','socket.io-emitter','prototype','tail','finally','sequence','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','hangup','syncHangup','bind','hanguprequest','dialend','newexten','varset','attendedtransfer','blindtransfer','loopCampaigns','campaignsPreview','emit','type','outbound','name','strategy','answered','available','loggedIn','pTalking','sumDuration','sumHoldTime','talking','total','unmanaged','abandoned','waiting','dialActive','dialMethod','dialOriginateCallerIdNumber','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','stringify','md5','format','voice:queue:%s','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice_queue_channel:remove','sendMessageOneNotActive','paused','NOT_ACTIVE','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','DEACTIVATED','logger','\x20is\x20deactivated','syncCampaigns','preview','booked','hasOwnProperty','setMessage','dialPreviewAutoRecallMe','clearZombieChannel','enqueue','isNil','[clearZombieChannels][talking]','Queue','queue','originated:\x20','pTalking:\x20','dialAnswer','pick','contactId','UserId','ListId','status','channel','catch','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','decrementTalkink','loggerError','[Dialer][checkChannel][pTalking][Preview]','size','recallMe','getContactRecallMe','getDiff','scheduledat','dialRecallMeTimeout','Agent','run','logger2','[RecallMe]','starttime','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','IsNotLoggedIn','AGENTS_NOT_LOGGED','TrunkBackup','ACTIVE','countglobal','totalGlobal','custom:agentnosuchnumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','then','additional','dialNoSuchNumberRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','cloneAction','Global','[callProgressDetectingCustomer][logNoSuchGlobal]','countnosuchnumberretry','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','unlockAgent','activeContact','linkedid','idContact','swapAdditionalPhones','ANSWER','responsetime','[syncHangup][talking][increment]','\x20Queue','custom:agentconnect','connect','buildAcw','complete'];(function(_0x568be3,_0x77dd76){var _0x5b0f59=function(_0x42b9fc){while(--_0x42b9fc){_0x568be3['push'](_0x568be3['shift']());}};_0x5b0f59(++_0x77dd76);}(_0xd8fb,0x99));var _0xbd8f=function(_0x252769,_0x2b0829){_0x252769=_0x252769-0x0;var _0x1fc3b2=_0xd8fb[_0x252769];return _0x1fc3b2;};'use strict';var util=require(_0xbd8f('0x0'));var _=require(_0xbd8f('0x1'));var BPromise=require(_0xbd8f('0x2'));var uuid=require(_0xbd8f('0x3'));var moment=require('moment');var md5=require('md5');var Redis=require('ioredis');var config=require(_0xbd8f('0x4'));var logger=require(_0xbd8f('0x5'))('preview');var loggerAction=require(_0xbd8f('0x5'))(_0xbd8f('0x6'));var ami=require('../ami');var rpcDb=require(_0xbd8f('0x7'));var cmHopperAdditionalPhone=require('../rpc/cmHopperAdditionalPhone');var Action=require(_0xbd8f('0x8'));var ut=require('./util/util');config[_0xbd8f('0x9')]=_[_0xbd8f('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xbd8f('0xb'))(new Redis(config[_0xbd8f('0x9')]));var Sequence=function(){};Sequence[_0xbd8f('0xc')]['enqueue']=function(_0x255af3){this[_0xbd8f('0xd')]=this['tail']?this['tail'][_0xbd8f('0xe')](_0x255af3):_0x255af3();};function Preview(_0x40a5bc){this[_0xbd8f('0xf')]=new Sequence();this['campaignsPreview']=_0x40a5bc[_0xbd8f('0x10')];this[_0xbd8f('0x11')]=_0x40a5bc[_0xbd8f('0x11')];this[_0xbd8f('0x12')]={};this[_0xbd8f('0x13')]=_0x40a5bc[_0xbd8f('0x13')];this[_0xbd8f('0x14')]=0x0;ami['on'](_0xbd8f('0x15'),this[_0xbd8f('0x16')]['bind'](this));ami['on'](_0xbd8f('0x17'),this[_0xbd8f('0x18')][_0xbd8f('0x19')](this));ami['on'](_0xbd8f('0x1a'),this['syncHangupRequest'][_0xbd8f('0x19')](this));ami['on'](_0xbd8f('0x1b'),this['syncDialEnd'][_0xbd8f('0x19')](this));ami['on'](_0xbd8f('0x1c'),this['syncNewExten'][_0xbd8f('0x19')](this));ami['on'](_0xbd8f('0x1d'),this['syncVarSet']['bind'](this));ami['on'](_0xbd8f('0x1e'),this['syncAttendedTransfer']['bind'](this));ami['on'](_0xbd8f('0x1f'),this['syncBlindTransfer'][_0xbd8f('0x19')](this));this[_0xbd8f('0x20')](this[_0xbd8f('0x21')]);}function emit(_0x897f25,_0xdc11cc,_0x20cab7){io['to'](_0x897f25)[_0xbd8f('0x22')](_0xdc11cc,_0x20cab7);}function emitCampaignPreview(_0x90eff8){if(_0x90eff8[_0xbd8f('0x23')]===_0xbd8f('0x24')){var _0xfe4048={'id':_0x90eff8['id'],'name':_0x90eff8[_0xbd8f('0x25')],'strategy':_0x90eff8[_0xbd8f('0x26')],'answered':_0x90eff8[_0xbd8f('0x27')],'available':_0x90eff8[_0xbd8f('0x28')],'loggedIn':_0x90eff8[_0xbd8f('0x29')],'pTalking':_0x90eff8[_0xbd8f('0x2a')],'sumBillable':_0x90eff8['sumBillable'],'sumDuration':_0x90eff8[_0xbd8f('0x2b')],'sumHoldTime':_0x90eff8[_0xbd8f('0x2c')]||0x0,'talking':_0x90eff8[_0xbd8f('0x2d')],'total':_0x90eff8[_0xbd8f('0x2e')],'type':_0x90eff8[_0xbd8f('0x23')],'unmanaged':_0x90eff8[_0xbd8f('0x2f')],'abandoned':_0x90eff8[_0xbd8f('0x30')],'waiting':_0x90eff8[_0xbd8f('0x31')],'loggedInDb':_0x90eff8['loggedInDb'],'dialActive':_0x90eff8[_0xbd8f('0x32')],'dialMethod':_0x90eff8[_0xbd8f('0x33')],'dialOriginateCallerIdName':_0x90eff8['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x90eff8[_0xbd8f('0x34')],'dialOriginateTimeout':_0x90eff8['dialOriginateTimeout'],'dialPrefix':_0x90eff8[_0xbd8f('0x35')],'outboundAnswerAgiCallsDay':_0x90eff8[_0xbd8f('0x36')],'outboundAnswerCallsDay':_0x90eff8[_0xbd8f('0x37')],'outboundBlacklistCallsDay':_0x90eff8[_0xbd8f('0x38')],'outboundBusyCallsDay':_0x90eff8[_0xbd8f('0x39')],'outboundCongestionCallsDay':_0x90eff8[_0xbd8f('0x3a')],'outboundDropCallsDayACS':_0x90eff8['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x90eff8[_0xbd8f('0x3b')],'outboundDropCallsDayTimeout':_0x90eff8[_0xbd8f('0x3c')],'outboundNoAnswerCallsDay':_0x90eff8[_0xbd8f('0x3d')],'outboundNoSuchCallsDay':_0x90eff8[_0xbd8f('0x3e')],'outboundOriginateFailureCallsDay':_0x90eff8[_0xbd8f('0x3f')],'outboundReCallsDay':_0x90eff8[_0xbd8f('0x40')],'outboundRejectCallsDay':_0x90eff8[_0xbd8f('0x41')],'outboundUnknownCallsDay':_0x90eff8['outboundUnknownCallsDay'],'outboundAbandonedCallsDay':_0x90eff8[_0xbd8f('0x42')],'predictiveIntervalAnsweredCalls':_0x90eff8[_0xbd8f('0x43')],'predictiveIntervalAvgHoldtime':_0x90eff8[_0xbd8f('0x44')],'predictiveIntervalAvgTalktime':_0x90eff8[_0xbd8f('0x45')],'predictiveIntervalDroppedCallsCallersExit':_0x90eff8['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x90eff8['predictiveIntervalDroppedCallsTimeout'],'predictiveIntervalErlangCalls':_0x90eff8[_0xbd8f('0x46')],'predictiveIntervalErlangCallsDroppedCalls':_0x90eff8[_0xbd8f('0x47')],'predictiveIntervalHitRate':_0x90eff8[_0xbd8f('0x48')],'predictiveIntervalMultiplicativeFactor':_0x90eff8[_0xbd8f('0x49')],'predictiveIntervalPauses':_0x90eff8['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x90eff8[_0xbd8f('0x4a')],'predictiveIntervalTotalCalls':_0x90eff8[_0xbd8f('0x4b')],'message':_0x90eff8[_0xbd8f('0x4c')],'originated':_0x90eff8[_0xbd8f('0x4d')],'erlangCalls':_0x90eff8[_0xbd8f('0x4e')],'erlangCallToSecond':_0x90eff8['erlangCallToSecond'],'erlangAbandonmentRate':_0x90eff8[_0xbd8f('0x4f')],'erlangBusyFactor':_0x90eff8[_0xbd8f('0x50')],'startPredictive':_0x90eff8[_0xbd8f('0x51')],'startProgressive':_0x90eff8[_0xbd8f('0x52')]};if(_0x90eff8[_0xbd8f('0x53')]){_0xfe4048['Trunk']={'id':_0x90eff8[_0xbd8f('0x53')]['id'],'name':_0x90eff8['Trunk'][_0xbd8f('0x25')],'active':_0x90eff8[_0xbd8f('0x53')][_0xbd8f('0x54')],'callerid':_0x90eff8[_0xbd8f('0x53')][_0xbd8f('0x55')]};}if(_0x90eff8[_0xbd8f('0x56')]){_0xfe4048['Interval']={'id':_0x90eff8['Interval']['id'],'name':_0x90eff8['Interval'][_0xbd8f('0x25')]};}var _0x46c84d=md5(JSON[_0xbd8f('0x57')](_0xfe4048));if(_0x90eff8[_0xbd8f('0x58')]!==_0x46c84d){_0x90eff8[_0xbd8f('0x58')]=_0x46c84d;emit(util[_0xbd8f('0x59')](_0xbd8f('0x5a'),_0xfe4048[_0xbd8f('0x25')]),_0xbd8f('0x5b'),_0xfe4048);}}}function emitVoiceQueueChannelRemove(_0x2a6145){logger[_0xbd8f('0x5c')](_0xbd8f('0x5d'),JSON[_0xbd8f('0x57')](_0x2a6145));emit(util[_0xbd8f('0x59')](_0xbd8f('0x5a'),_0x2a6145['name']),_0xbd8f('0x5e'),_0x2a6145);io[_0xbd8f('0x22')]('voice_queue_presence:remove',_0x2a6145);}function notSendMessagesQueue(_0x46881a){if(_0x46881a[_0xbd8f('0x5f')]){if(_0x46881a[_0xbd8f('0x4d')]===0x0&&_0x46881a['pTalking']===0x0){_0x46881a[_0xbd8f('0x5f')]=![];_0x46881a['available']=0x0;_0x46881a[_0xbd8f('0x60')]=0x0;_0x46881a[_0xbd8f('0x4c')]=_0xbd8f('0x61');ut['logger'](_0xbd8f('0x62'),_0x46881a[_0xbd8f('0x25')]+_0xbd8f('0x63'));}else{_0x46881a['message']=_0xbd8f('0x64');ut[_0xbd8f('0x65')](_0xbd8f('0x62'),_0x46881a[_0xbd8f('0x25')]+_0xbd8f('0x66'));}emitCampaignPreview(_0x46881a);}}Preview[_0xbd8f('0xc')][_0xbd8f('0x20')]=function(){var _0xb453a8=this;setInterval(function(){_0xb453a8[_0xbd8f('0x67')]();},0x7cf);};Preview['prototype']['syncCampaigns']=function(){var _0x2907a3=this[_0xbd8f('0x21')];this[_0xbd8f('0x14')]+=0x1;for(var _0x2f014b in _0x2907a3){if(_0x2907a3['hasOwnProperty'](_0x2f014b)&&(_0x2907a3[_0x2f014b][_0xbd8f('0x33')]===_0xbd8f('0x68')||_0x2907a3[_0x2f014b][_0xbd8f('0x33')]===_0xbd8f('0x69'))&&_0x2907a3[_0x2f014b][_0xbd8f('0x23')]==='outbound'){if(this['clockClearZombieChannels']>0x7){this[_0xbd8f('0x14')]=0x0;this['clearZombieChannels']();}}if(_0x2907a3[_0xbd8f('0x6a')](_0x2f014b)&&_0x2907a3[_0x2f014b][_0xbd8f('0x33')]===_0xbd8f('0x68')&&_0x2907a3[_0x2f014b][_0xbd8f('0x23')]===_0xbd8f('0x24')){if(_0x2907a3[_0x2f014b][_0xbd8f('0x32')]){this[_0xbd8f('0x6b')](_0x2907a3[_0x2f014b]);if(_0x2907a3[_0x2f014b][_0xbd8f('0x6c')])this['recallMe'](_0x2907a3[_0x2f014b]);}else{notSendMessagesQueue(_0x2907a3[_0x2f014b]);}}}};Preview[_0xbd8f('0xc')][_0xbd8f('0x6d')]=function(_0x15166d){var _0x3e564f=this;this[_0xbd8f('0xf')][_0xbd8f('0x6e')](function(){if(!_[_0xbd8f('0x6f')](_0x3e564f[_0xbd8f('0x12')][_0x15166d])){loggerAction['info'](_0xbd8f('0x70'),_0x15166d,_0xbd8f('0x71'),_0x3e564f[_0xbd8f('0x12')][_0x15166d][_0xbd8f('0x72')],_0xbd8f('0x73'),JSON[_0xbd8f('0x57')](_0x3e564f[_0xbd8f('0x21')][_0x3e564f[_0xbd8f('0x12')][_0x15166d][_0xbd8f('0x72')]][_0xbd8f('0x4d')]),_0xbd8f('0x74'),JSON[_0xbd8f('0x57')](_0x3e564f[_0xbd8f('0x21')][_0x3e564f[_0xbd8f('0x12')][_0x15166d][_0xbd8f('0x72')]][_0xbd8f('0x2a')]),JSON[_0xbd8f('0x57')](_0x3e564f[_0xbd8f('0x12')][_0x15166d][_0xbd8f('0x75')]),JSON['stringify'](_[_0xbd8f('0x76')](_0x3e564f[_0xbd8f('0x12')][_0x15166d],[_0xbd8f('0x77'),_0xbd8f('0x78'),'VoiceQueueId',_0xbd8f('0x79')])));return ami['Action']({'action':_0xbd8f('0x7a'),'channel':_0x3e564f[_0xbd8f('0x12')][_0x15166d][_0xbd8f('0x7b')]})[_0xbd8f('0x7c')](function(_0x5434e8){if(_0x5434e8[_0xbd8f('0x4c')]===_0xbd8f('0x7d')){setTimeout(function(){if(_0x3e564f[_0xbd8f('0x12')][_0x15166d]){ut[_0xbd8f('0x7e')](_0x3e564f[_0xbd8f('0x21')][_0x3e564f[_0xbd8f('0x12')][_0x15166d]['queue']],_0xbd8f('0x7f'));if(_0x3e564f['actions'][_0x15166d][_0xbd8f('0x75')]===!![]){ut[_0xbd8f('0x80')](_0x3e564f[_0xbd8f('0x21')][_0x3e564f[_0xbd8f('0x12')][_0x15166d][_0xbd8f('0x72')]],_0xbd8f('0x7f'));ut[_0xbd8f('0x81')](_0xbd8f('0x82')+_0x15166d,_0x3e564f[_0xbd8f('0x12')][_0x15166d]['queue']);}ut[_0xbd8f('0x81')]('[Dialer][checkChannel][Preview]'+_0x15166d,_0x3e564f[_0xbd8f('0x12')][_0x15166d][_0xbd8f('0x72')]);delete _0x3e564f['actions'][_0x15166d];}},0x2328);}});}});};Preview[_0xbd8f('0xc')]['clearZombieChannels']=function(){var _0x58d891=this;loggerAction['info']('[action]',_[_0xbd8f('0x83')](this[_0xbd8f('0x12')]));for(var _0xc78753 in this[_0xbd8f('0x12')]){if(_0x58d891[_0xbd8f('0x12')]['hasOwnProperty'](_0xc78753)){_0x58d891['clearZombieChannel'](_0xc78753);}}};Preview[_0xbd8f('0xc')][_0xbd8f('0x84')]=function(_0x21d40b){var _0x120b58=this;rpcDb[_0xbd8f('0x85')](_0x21d40b['id'],ut['agentReadyId'](this[_0xbd8f('0x13')]))['then'](function(_0x9cf2d5){if(!_[_0xbd8f('0x6f')](_0x9cf2d5)){for(var _0x25d783=0x0;_0x25d783<_0x9cf2d5['length'];_0x25d783+=0x1){if(ut[_0xbd8f('0x86')](_0x9cf2d5[_0x25d783][_0xbd8f('0x87')])<_0x21d40b[_0xbd8f('0x88')]*0x3c){if(_0x9cf2d5[_0x25d783][_0xbd8f('0x89')]&&!_0x9cf2d5[_0x25d783]['Agent']['voicePause']){_0x120b58[_0xbd8f('0x8a')](_0x9cf2d5[_0x25d783]['id'])['then'](ut[_0xbd8f('0x8b')](_0xbd8f('0x8c')))[_0xbd8f('0x7c')](ut[_0xbd8f('0x8b')]('[RecallMe]'));}else{rpcDb['disableContact'](_0x9cf2d5[_0x25d783]['id']);}}else{var _0x9e130a=new Action(_0x9cf2d5[_0x25d783],_0x21d40b);_0x9e130a[_0xbd8f('0x8d')]=moment()[_0xbd8f('0x59')](_0xbd8f('0x8e'));_0x21d40b[_0xbd8f('0x40')]+=0x1;ut[_0xbd8f('0x8f')](_0x9e130a,0x17,_0xbd8f('0x90'));if(_0x21d40b[_0xbd8f('0x91')]){rpcDb[_0xbd8f('0x92')](ut[_0xbd8f('0x93')](_0x9cf2d5[_0x25d783]));rpcDb[_0xbd8f('0x94')](_0x9e130a,'[HistoryDialRecallInQueue][historyCatch]');}else{ut[_0xbd8f('0x8f')](_0x9e130a,0x16,_0xbd8f('0x95'));rpcDb[_0xbd8f('0x94')](_0x9e130a,_0xbd8f('0x96'));rpcDb[_0xbd8f('0x97')](_0x9e130a,_0xbd8f('0x96'));}}}}})['catch'](ut[_0xbd8f('0x8b')](_0xbd8f('0x98')));};Preview['prototype']['setMessage']=function(_0x44a891){_0x44a891[_0xbd8f('0x5f')]=!![];if(ut[_0xbd8f('0x99')](_0x44a891['loggedIn'])){_0x44a891['message']=_0xbd8f('0x9a');}else if(!ut['isActive'](_0x44a891['dialActive'])){_0x44a891['message']='NOT_ACTIVE';}else if(!this['isTrunkReachable'](_0x44a891[_0xbd8f('0x53')])){if(!this['isTrunkReachable'](_0x44a891[_0xbd8f('0x9b')])){_0x44a891[_0xbd8f('0x4c')]='TRUNK_IS_NOT_REACHABLE';}else{_0x44a891[_0xbd8f('0x4c')]=_0xbd8f('0x9c');}}else{_0x44a891[_0xbd8f('0x4c')]=_0xbd8f('0x9c');}emitCampaignPreview(_0x44a891);};Preview[_0xbd8f('0xc')]['callProgressDetectingCustomer']=function(_0x583d7a,_0x378e72,_0x44469e){var _0x2454b8=this;var _0x296794=this[_0xbd8f('0x12')][_0x378e72];var _0x105d2d=this['campaignsPreview'][_0x296794['queue']];var _0x467b0f;var _0x32648f=![];var _0x528b29=0x2;var _0x31ce0d=0x3;if(_0x105d2d){switch(_0x44469e){case'1':_0x105d2d[_0xbd8f('0x3e')]+=0x1;_0x296794['countnosuchnumberretry']+=0x1;_0x296794[_0xbd8f('0x9d')]=ut[_0xbd8f('0x9e')](_0x296794);ut[_0xbd8f('0x8f')](_0x296794,0x0,'NoSuchNumber');ami['emit'](_0xbd8f('0x9f'),ut[_0xbd8f('0xa0')](_0x296794,_0xbd8f('0xa1')));rpcDb[_0xbd8f('0x94')](_0x296794,_0xbd8f('0xa2'));_0x2454b8['verifyAdditionalPhones'](_0x296794,'0',_0x105d2d)[_0xbd8f('0xa3')](function(_0x27ec14){_0x32648f=_0x27ec14[_0xbd8f('0xa4')]==0x1;_0x528b29=_0x105d2d[_0xbd8f('0xa5')];_0x31ce0d=_0x105d2d[_0xbd8f('0xa6')];if(!_0x32648f){if(ut[_0xbd8f('0x9e')](_0x296794)>=_0x105d2d[_0xbd8f('0xa7')]){_0x467b0f=ut[_0xbd8f('0xa8')](_0x296794,0xf,_0xbd8f('0xa9'));rpcDb[_0xbd8f('0x97')](_0x467b0f,_0xbd8f('0xaa'));}else{if(_0x296794[_0xbd8f('0xab')]>=_0x105d2d[_0xbd8f('0xac')]){rpcDb[_0xbd8f('0x97')](_0x296794,_0xbd8f('0xaa'));}else{rpcDb[_0xbd8f('0xad')](ut[_0xbd8f('0xae')](_0x296794,_0xbd8f('0xab'),_0x105d2d['dialNoSuchNumberRetryFrequency']),_0x296794[_0xbd8f('0xaf')],_0x296794[_0xbd8f('0xb0')]);}}delete this[_0xbd8f('0x12')][_0x583d7a[_0xbd8f('0xb1')]];}else{_0x296794[_0xbd8f('0xab')]++;logger[_0xbd8f('0x5c')]('actioncountonusuch',_0x296794['countnosuchnumberretry']);logger[_0xbd8f('0x5c')]('id',_0x296794[_0xbd8f('0xb2')]);_0x2454b8['incrementPreviewCounters']({'id':_0x296794[_0xbd8f('0xb2')],'field':{'countnosuchnumberretry':_0x296794['countnosuchnumberretry']}})[_0xbd8f('0xa3')](function(){_0x2454b8[_0xbd8f('0xb3')](_0x296794,_0x528b29,_0x31ce0d)[_0xbd8f('0xa3')](function(){});});}});break;case _0xbd8f('0xb4'):var _0x5df432=moment()[_0xbd8f('0x59')](_0xbd8f('0x8e'));_0x296794[_0xbd8f('0xb5')]=_0x5df432;_0x296794['answertime']=_0x5df432;_0x296794[_0xbd8f('0x75')]=!![];_0x105d2d[_0xbd8f('0x2a')]+=0x1;logger[_0xbd8f('0x5c')](_0xbd8f('0xb6'),_0x296794['uniqueid'],_0xbd8f('0xb7'),_0x105d2d[_0xbd8f('0x25')],_0xbd8f('0x74'),_0x105d2d[_0xbd8f('0x2a')]);ami[_0xbd8f('0x22')](_0xbd8f('0xb8'),ut[_0xbd8f('0xa0')](_0x296794,_0xbd8f('0xb9'),this['campaignsPreview'][_0x296794[_0xbd8f('0x72')]]));if(_0x105d2d['acw']){ami[_0xbd8f('0x22')]('custom:agentConnectPreview',ut[_0xbd8f('0xba')](_0x296794));}break;case'16':ami[_0xbd8f('0x22')]('custom:agentcomplete',ut[_0xbd8f('0xa0')](_0x296794,_0xbd8f('0xbb'),this[_0xbd8f('0x21')][_0x296794[_0xbd8f('0x72')]]));emitVoiceQueueChannelRemove(ut['buildObj'](_0x296794,_0xbd8f('0xbb')));_0x105d2d[_0xbd8f('0x37')]+=0x1;_0x105d2d[_0xbd8f('0x2e')]+=0x1;_0x105d2d[_0xbd8f('0x27')]+=0x1;ut['decrementTalkink'](_0x105d2d,'[16]');_0x296794[_0xbd8f('0x9d')]=ut[_0xbd8f('0x9e')](_0x296794);ut[_0xbd8f('0x8f')](_0x296794,0x4,_0xbd8f('0xbc'));rpcDb[_0xbd8f('0x94')](_0x296794,'[callProgressDetectingCustomer][logAnswer]');rpcDb[_0xbd8f('0x97')](_0x296794,_0xbd8f('0xbd'));rpcDb[_0xbd8f('0xbe')](_0x296794);_0x105d2d[_0xbd8f('0x2b')]+=_0x296794[_0xbd8f('0xbf')];_0x105d2d['sumBillable']+=_0x296794['talktime'];logger['info'](_0xbd8f('0xc0'),_0x296794['uniqueid'],'\x20Queue',_0x105d2d['name'],_0xbd8f('0x74'),_0x105d2d[_0xbd8f('0x2a')]);delete this[_0xbd8f('0x12')][_0x583d7a[_0xbd8f('0xb1')]];break;case _0xbd8f('0xc1'):_0x105d2d[_0xbd8f('0x39')]+=0x1;_0x296794[_0xbd8f('0xc2')]+=0x1;_0x296794[_0xbd8f('0x9d')]=ut['totalGlobal'](_0x296794);ut[_0xbd8f('0x8f')](_0x296794,0x5,_0xbd8f('0xc3'));_0x528b29=_0x105d2d[_0xbd8f('0xc4')];_0x31ce0d=_0x105d2d['callAdditionalPhoneAfterMin'];ami[_0xbd8f('0x22')](_0xbd8f('0xc5'),ut[_0xbd8f('0xa0')](_0x296794,_0xbd8f('0xc6')));rpcDb[_0xbd8f('0x94')](_0x296794,_0xbd8f('0xc7'));_0x2454b8[_0xbd8f('0xc8')](_0x296794,'5',_0x105d2d)[_0xbd8f('0xa3')](function(_0x3aa33a){_0x32648f=_0x3aa33a[_0xbd8f('0xa4')]==0x1;if(!_0x32648f){if(ut['totalGlobal'](_0x296794)>=_0x105d2d[_0xbd8f('0xa7')]){_0x467b0f=ut[_0xbd8f('0xa8')](_0x296794,0xf,_0xbd8f('0xa9'));rpcDb['createCustomerFinal'](_0x467b0f,_0xbd8f('0xc9'));}else{if(_0x296794['countbusyretry']>=_0x105d2d[_0xbd8f('0xca')]){rpcDb[_0xbd8f('0x97')](_0x296794,_0xbd8f('0xc7'));}else{rpcDb[_0xbd8f('0xad')](ut[_0xbd8f('0xae')](_0x296794,'countbusyretry',_0x105d2d[_0xbd8f('0xc4')]),_0x296794[_0xbd8f('0xaf')],_0x296794[_0xbd8f('0xb0')]);}}}else{_0x296794[_0xbd8f('0xc2')]++;_0x2454b8[_0xbd8f('0xcb')]({'id':_0x296794[_0xbd8f('0xb2')],'field':{'countbusyretry':_0x296794['countbusyretry']}})[_0xbd8f('0xa3')](function(){_0x2454b8[_0xbd8f('0xb3')](_0x296794,_0x528b29,_0x31ce0d)['then'](function(){});});}});break;case'NOANSWER':_0x105d2d[_0xbd8f('0x3d')]+=0x1;_0x296794['countnoanswerretry']+=0x1;_0x296794['countglobal']=ut['totalGlobal'](_0x296794);ut[_0xbd8f('0x8f')](_0x296794,0x3,_0xbd8f('0xcc'));_0x528b29=_0x105d2d[_0xbd8f('0xcd')];_0x31ce0d=_0x105d2d[_0xbd8f('0xa6')];ami['emit'](_0xbd8f('0xce'),ut[_0xbd8f('0xa0')](_0x296794,'noanswer'));rpcDb['createCustomerHistory'](_0x296794,_0xbd8f('0xcf'));_0x2454b8['verifyAdditionalPhones'](_0x296794,'3',_0x105d2d)[_0xbd8f('0xa3')](function(_0x519a8f){_0x32648f=_0x519a8f['additional']==0x1;if(!_0x32648f){if(ut[_0xbd8f('0x9e')](_0x296794)>=_0x105d2d[_0xbd8f('0xa7')]){_0x467b0f=ut[_0xbd8f('0xa8')](_0x296794,0xf,_0xbd8f('0xa9'));rpcDb[_0xbd8f('0x97')](_0x467b0f,'[callProgressDetectingCustomer][logNoAnswerGlobal]');}else{if(_0x296794[_0xbd8f('0xd0')]>=_0x105d2d[_0xbd8f('0xd1')]){rpcDb[_0xbd8f('0x97')](_0x296794,'[callProgressDetectingCustomer][logNoAnswer]');}else{rpcDb[_0xbd8f('0xad')](ut[_0xbd8f('0xae')](_0x296794,_0xbd8f('0xd0'),_0x105d2d[_0xbd8f('0xcd')]),_0x296794[_0xbd8f('0xaf')],_0x296794[_0xbd8f('0xb0')]);}}}else{_0x296794[_0xbd8f('0xd0')]++;_0x2454b8[_0xbd8f('0xcb')]({'id':_0x296794[_0xbd8f('0xb2')],'field':{'countnoanswerretry':_0x296794[_0xbd8f('0xd0')]}})['then'](function(){_0x2454b8['swapAdditionalPhones'](_0x296794,_0x528b29,_0x31ce0d)['then'](function(){});});}});break;case'CONGESTION':_0x105d2d[_0xbd8f('0x3a')]+=0x1;_0x296794[_0xbd8f('0xd2')]+=0x1;_0x296794['countglobal']=ut['totalGlobal'](_0x296794);ut['logCustomer'](_0x296794,0x8,'Congestion');_0x528b29=_0x105d2d[_0xbd8f('0xd3')];_0x31ce0d=_0x105d2d[_0xbd8f('0xa6')];ami[_0xbd8f('0x22')]('custom:agentcongestion',ut[_0xbd8f('0xa0')](_0x296794,_0xbd8f('0xd4')));rpcDb[_0xbd8f('0x94')](_0x296794,_0xbd8f('0xd5'));_0x2454b8['verifyAdditionalPhones'](_0x296794,'8',_0x105d2d)[_0xbd8f('0xa3')](function(_0x14ddb5){_0x32648f=_0x14ddb5[_0xbd8f('0xa4')]==0x1;if(!_0x32648f){if(ut['totalGlobal'](_0x296794)>=_0x105d2d[_0xbd8f('0xa7')]){_0x467b0f=ut[_0xbd8f('0xa8')](_0x296794,0xf,_0xbd8f('0xa9'));rpcDb[_0xbd8f('0x97')](_0x467b0f,_0xbd8f('0xd6'));}else{if(_0x296794[_0xbd8f('0xd2')]>=_0x105d2d[_0xbd8f('0xd7')]){rpcDb[_0xbd8f('0x97')](_0x296794,_0xbd8f('0xd5'));}else{rpcDb[_0xbd8f('0xad')](ut[_0xbd8f('0xae')](_0x296794,'countcongestionretry',_0x105d2d[_0xbd8f('0xc4')]),_0x296794[_0xbd8f('0xaf')],_0x296794[_0xbd8f('0xb0')]);}}}else{_0x296794[_0xbd8f('0xd2')]++;_0x2454b8[_0xbd8f('0xcb')]({'id':_0x296794[_0xbd8f('0xb2')],'field':{'countcongestionretry':_0x296794[_0xbd8f('0xd2')]}})[_0xbd8f('0xa3')](function(){_0x2454b8[_0xbd8f('0xb3')](_0x296794,_0x528b29,_0x31ce0d)['then'](function(){});});}});break;case _0xbd8f('0xd8'):_0x105d2d[_0xbd8f('0x41')]+=0x1;_0x296794[_0xbd8f('0xd9')]+=0x1;_0x296794[_0xbd8f('0x9d')]=ut['totalGlobal'](_0x296794);ut[_0xbd8f('0x8f')](_0x296794,0x14,_0xbd8f('0xda'));_0x528b29=_0x105d2d[_0xbd8f('0xdb')];_0x31ce0d=_0x105d2d[_0xbd8f('0xa6')];ami[_0xbd8f('0x22')]('custom:agentreject',ut[_0xbd8f('0xa0')](_0x296794,'agentreject'));rpcDb[_0xbd8f('0x94')](_0x296794,_0xbd8f('0xdc'));_0x2454b8[_0xbd8f('0xc8')](_0x296794,'20',_0x105d2d)['then'](function(_0x3dc8d1){_0x32648f=_0x3dc8d1[_0xbd8f('0xa4')]==0x1;if(!_0x32648f){if(ut[_0xbd8f('0x9e')](_0x296794)>=_0x105d2d['dialGlobalMaxRetry']){_0x467b0f=ut[_0xbd8f('0xa8')](_0x296794,0x14,_0xbd8f('0xda'));rpcDb[_0xbd8f('0x97')](_0x467b0f,_0xbd8f('0xdd'));}else{if(_0x296794[_0xbd8f('0xd9')]>=_0x105d2d[_0xbd8f('0xde')]){rpcDb['createCustomerFinal'](_0x296794,_0xbd8f('0xdd'));}else{rpcDb[_0xbd8f('0xad')](ut[_0xbd8f('0xae')](_0x296794,_0xbd8f('0xd9'),_0x105d2d[_0xbd8f('0xdb')]),_0x296794['unlockAgent'],_0x296794[_0xbd8f('0xb0')]);}}}else{_0x296794[_0xbd8f('0xd0')]++;_0x2454b8[_0xbd8f('0xcb')]({'id':_0x296794[_0xbd8f('0xb2')],'field':{'countnoanswerretry':_0x296794[_0xbd8f('0xd0')]}})[_0xbd8f('0xa3')](function(){_0x2454b8['swapAdditionalPhones'](_0x296794,_0x528b29,_0x31ce0d)['then'](function(){});});}});break;case _0xbd8f('0xdf'):_0x105d2d['outboundAbandonedCallsDay']+=0x1;_0x296794[_0xbd8f('0xe0')]+=0x1;_0x296794[_0xbd8f('0x9d')]=ut[_0xbd8f('0x9e')](_0x296794);ut[_0xbd8f('0x8f')](_0x296794,0xb,_0xbd8f('0xe1'));rpcDb[_0xbd8f('0x94')](_0x296794,_0xbd8f('0xe2'));_0x2454b8['verifyAdditionalPhones'](_0x296794,'11',_0x105d2d)[_0xbd8f('0xa3')](function(_0x387638){_0x32648f=_0x387638[_0xbd8f('0xa4')]==0x1;if(!_0x32648f){if(ut[_0xbd8f('0x9e')](_0x296794)>=_0x105d2d[_0xbd8f('0xa7')]){_0x467b0f=ut[_0xbd8f('0xa8')](_0x296794,0xf,_0xbd8f('0xa9'));rpcDb['createCustomerFinal'](_0x467b0f,_0xbd8f('0xe2'));}else{if(_0x296794[_0xbd8f('0xe3')]>=_0x105d2d[_0xbd8f('0xe4')]){rpcDb[_0xbd8f('0x97')](_0x296794,_0xbd8f('0xe2'));}else{rpcDb[_0xbd8f('0xad')](ut['scheduledAt'](_0x296794,'countabandonedretry',_0x105d2d[_0xbd8f('0xe5')]),_0x296794[_0xbd8f('0xaf')],_0x296794[_0xbd8f('0xb0')]);}}}else{_0x296794[_0xbd8f('0xd0')]++;_0x2454b8[_0xbd8f('0xcb')]({'id':_0x296794['idContact'],'field':{'countnoanswerretry':_0x296794[_0xbd8f('0xd0')]}})[_0xbd8f('0xa3')](function(){_0x2454b8[_0xbd8f('0xb3')](_0x296794,_0x528b29,_0x31ce0d)[_0xbd8f('0xa3')](function(){});});}});break;case'18':_0x105d2d[_0xbd8f('0xe6')]+=0x1;_0x296794[_0xbd8f('0xe7')]+=0x1;_0x296794[_0xbd8f('0x9d')]=ut['totalGlobal'](_0x296794);ut[_0xbd8f('0x8f')](_0x296794,0x12,_0x583d7a[_0xbd8f('0xe8')]||_0x583d7a['dialstatus']);ami[_0xbd8f('0x22')](_0xbd8f('0xe9'),ut[_0xbd8f('0xa0')](_0x296794,'amd'));rpcDb[_0xbd8f('0x94')](_0x296794,'[callProgressDetectingCustomer][hangupInAMD]');_0x2454b8['verifyAdditionalPhones'](_0x296794,'18',_0x105d2d)[_0xbd8f('0xa3')](function(_0x48c585){_0x32648f=_0x48c585[_0xbd8f('0xa4')]==0x1;if(!_0x32648f){if(ut[_0xbd8f('0x9e')](_0x296794)>=_0x105d2d[_0xbd8f('0xa7')]){_0x467b0f=ut[_0xbd8f('0xa8')](_0x296794,0x12,_0xbd8f('0xa9'));rpcDb[_0xbd8f('0x97')](_0x467b0f,_0xbd8f('0xea'));}else{rpcDb['createCustomerFinal'](_0x296794,_0xbd8f('0xea'));}}else{_0x296794[_0xbd8f('0xd0')]++;_0x2454b8[_0xbd8f('0xcb')]({'id':_0x296794['idContact'],'field':{'countnoanswerretry':_0x296794[_0xbd8f('0xd0')]}})[_0xbd8f('0xa3')](function(){_0x2454b8[_0xbd8f('0xb3')](_0x296794,_0x528b29,_0x31ce0d)[_0xbd8f('0xa3')](function(){});});}});delete this['actions'][_0x583d7a['linkedid']];break;case'19':_0x105d2d[_0xbd8f('0xe6')]+=0x1;_0x296794[_0xbd8f('0x9d')]=ut[_0xbd8f('0x9e')](_0x296794);ut['logCustomer'](_0x296794,0x13,_0x583d7a[_0xbd8f('0xe8')]||_0x583d7a['dialstatus']);ami['emit'](_0xbd8f('0xe9'),ut['buildObj'](_0x296794,_0xbd8f('0xeb')));rpcDb[_0xbd8f('0x94')](_0x296794,_0xbd8f('0xec'));_0x2454b8[_0xbd8f('0xc8')](_0x296794,'18',_0x105d2d)[_0xbd8f('0xa3')](function(_0x419a07){_0x32648f=_0x419a07[_0xbd8f('0xa4')]==0x1;if(!_0x32648f){if(ut[_0xbd8f('0x9e')](_0x296794)>=_0x105d2d[_0xbd8f('0xa7')]){_0x467b0f=ut['cloneAction'](_0x296794,0xf,'Global');rpcDb['createCustomerFinal'](_0x467b0f,'[callProgressDetectingCustomer][machine]');}else{rpcDb[_0xbd8f('0x97')](_0x296794,_0xbd8f('0xec'));}}else{_0x296794[_0xbd8f('0xd0')]++;_0x2454b8[_0xbd8f('0xcb')]({'id':_0x296794[_0xbd8f('0xb2')],'field':{'countnoanswerretry':_0x296794[_0xbd8f('0xd0')]}})[_0xbd8f('0xa3')](function(){_0x2454b8['swapAdditionalPhones'](_0x296794,_0x528b29,_0x31ce0d)[_0xbd8f('0xa3')](function(){});});}});delete this['actions'][_0x583d7a[_0xbd8f('0xb1')]];break;default:if(_0x296794[_0xbd8f('0x75')]){ut[_0xbd8f('0x80')](_0x105d2d,_0xbd8f('0xed'));ut[_0xbd8f('0x81')]('[Dialer][decrementTalkink][no\x20Hangup][Preview]'+_0x105d2d['name'],_0x583d7a);}_0x105d2d[_0xbd8f('0xe6')]+=0x1;_0x296794['countglobal']=ut[_0xbd8f('0x9e')](_0x296794);ut[_0xbd8f('0x8f')](_0x296794,0xc,_0x583d7a[_0xbd8f('0xe8')]||_0x583d7a[_0xbd8f('0xee')]);_0x528b29=_0x105d2d[_0xbd8f('0xdb')];_0x31ce0d=_0x105d2d['callAdditionalPhoneAfterMin'];rpcDb[_0xbd8f('0x94')](_0x296794,_0xbd8f('0xef'));_0x2454b8[_0xbd8f('0xc8')](_0x296794,'20',_0x105d2d)[_0xbd8f('0xa3')](function(_0x53a45f){_0x32648f=_0x53a45f[_0xbd8f('0xa4')]==0x1;if(!_0x32648f){if(ut[_0xbd8f('0x9e')](_0x296794)>=_0x105d2d[_0xbd8f('0xa7')]){_0x467b0f=ut[_0xbd8f('0xa8')](_0x296794,0xf,_0xbd8f('0xa9'));rpcDb[_0xbd8f('0x97')](_0x467b0f,_0xbd8f('0xf0'));}else{rpcDb['createCustomerFinal'](_0x296794,_0xbd8f('0xf0'));}delete this[_0xbd8f('0x12')][_0x583d7a[_0xbd8f('0xb1')]];}else{_0x2454b8[_0xbd8f('0xb3')](_0x296794,_0x528b29,_0x31ce0d)[_0xbd8f('0xa3')](function(_0x3edfea){});}});}if(!(_0x296794['dialAnswer']&&_0x44469e==='16')){ut[_0xbd8f('0x7e')](_0x105d2d,_0xbd8f('0xf1'));logger[_0xbd8f('0x5c')](_0xbd8f('0xf2'),_0x296794[_0xbd8f('0xf3')],_0xbd8f('0xb7'),_0x105d2d[_0xbd8f('0x25')],_0xbd8f('0x73'),_0x105d2d[_0xbd8f('0x4d')]);}if(_0x44469e!==_0xbd8f('0xb4')){delete this[_0xbd8f('0x12')][_0x583d7a['linkedid']];delete this[_0xbd8f('0x12')][_0x583d7a[_0xbd8f('0xf4')]];}}};Preview[_0xbd8f('0xc')][_0xbd8f('0xf5')]=function(_0x56c83e,_0x41fd39,_0x5c729a){if(_[_0xbd8f('0xf6')](_0x41fd39)&&_0xbd8f('0xf7')!==typeof _0x41fd39){return;}if(_[_0xbd8f('0xf6')](_0x5c729a)&&_0xbd8f('0xf7')!==typeof _0x5c729a){return;}switch(_0x5c729a[_0xbd8f('0xf8')]){case'0':ut['logAgent'](_0x56c83e,0x0,'NoSuchNumber');rpcDb[_0xbd8f('0xf9')](_0x56c83e,_0xbd8f('0xfa'));break;case'3':ut[_0xbd8f('0xfb')](_0x56c83e,0x3,_0xbd8f('0xcc'));rpcDb['createAgentHistory'](_0x56c83e,'[callProgressDetectingAgent][logNoAnswer]');break;case'5':ut['logAgent'](_0x56c83e,0x5,_0xbd8f('0xc3'));rpcDb[_0xbd8f('0xf9')](_0x56c83e,_0xbd8f('0xfc'));break;case'8':ut[_0xbd8f('0xfb')](_0x56c83e,0x8,_0xbd8f('0xfd'));rpcDb['createAgentHistory'](_0x56c83e,_0xbd8f('0xfe'));break;case'22':ut[_0xbd8f('0xfb')](_0x56c83e,0x16,_0xbd8f('0xff'));rpcDb[_0xbd8f('0xf9')](_0x56c83e,_0xbd8f('0x100'));break;default:ut['logAgent'](_0x56c83e,0xc,_0x5c729a['reason']);rpcDb['createAgentHistory'](_0x56c83e,_0xbd8f('0xfe'));}ut[_0xbd8f('0x7e')](_0x41fd39,_0xbd8f('0x101'));logger[_0xbd8f('0x5c')](_0xbd8f('0x102'),_0x56c83e[_0xbd8f('0xf3')],_0xbd8f('0xb7'),_0x41fd39[_0xbd8f('0x25')],'originated:\x20',_0x41fd39[_0xbd8f('0x4d')]);delete this[_0xbd8f('0x12')][_0x56c83e[_0xbd8f('0xf3')]];};Preview[_0xbd8f('0xc')]['verifyAdditionalPhones']=function(_0x304223,_0x4652b5,_0x413564){return BPromise[_0xbd8f('0x103')]()['then'](cmHopperAdditionalPhone[_0xbd8f('0xc8')](_0x304223,_0x4652b5,_0x413564))[_0xbd8f('0x7c')](logger[_0xbd8f('0x5c')](_0xbd8f('0x104')));};Preview[_0xbd8f('0xc')][_0xbd8f('0xb3')]=function(_0x39f27d,_0x3883ad,_0x4ed37b){return BPromise[_0xbd8f('0x103')]()[_0xbd8f('0xa3')](cmHopperAdditionalPhone['swapAdditionalPhones'](_0x39f27d,_0x3883ad,_0x4ed37b))['catch'](logger['info'](_0xbd8f('0x105')));};Preview[_0xbd8f('0xc')][_0xbd8f('0xcb')]=function(_0xacbc98){return BPromise[_0xbd8f('0x103')]()['then'](cmHopperAdditionalPhone[_0xbd8f('0xcb')](_0xacbc98))[_0xbd8f('0x7c')](logger[_0xbd8f('0x5c')](_0xbd8f('0x106')));};Preview[_0xbd8f('0xc')]['checkInBlack']=function(_0x70e87,_0x594e2c,_0x860452,_0x520f25,_0x3cb14a){var _0x4723b6=this;return new BPromise(function(_0x31ae86,_0x2c6b6f){if(_[_0xbd8f('0x6f')](_0x594e2c)||_[_0xbd8f('0x6f')](_0x594e2c[_0xbd8f('0x107')])||_['isNil'](_0x594e2c[_0xbd8f('0x108')])||_[_0xbd8f('0x6f')](_0x594e2c['VoiceQueueId'])){_0x2c6b6f(ut[_0xbd8f('0x4c')](_0xbd8f('0x109'),_0x520f25,_0x3cb14a));return;}var _0x4754f2=uuid['v4']();var _0x24ed63=_0x4723b6['campaignsPreview'][_0x594e2c[_0xbd8f('0x71')]['name']];var _0x2db82b=_0x860452?_0x4723b6['agents'][_0x860452]['id']:undefined;_0x4723b6[_0xbd8f('0x12')][_0x4754f2]=new Action(_0x594e2c,_0x24ed63,_0x4754f2,_0x860452,_0x2db82b);var _0x4e7727=_0x4723b6[_0xbd8f('0x12')][_0x4754f2];_0x4e7727[_0xbd8f('0xaf')]=_0x520f25;_0x4e7727[_0xbd8f('0xb0')]=_0x3cb14a;_0x4e7727[_0xbd8f('0x10a')]=_0x860452;if(_[_0xbd8f('0x10b')](_0x70e87)){_0x4723b6[_0xbd8f('0x10c')](_0x4e7727,_0x24ed63,_0x594e2c,_0x860452)[_0xbd8f('0xa3')](function(_0x18162a){logger[_0xbd8f('0x5c')]('[Preview][execCall][success]',_0xbd8f('0x10d')+_0x4e7727[_0xbd8f('0x72')]+'\x20IdHopper:\x20'+_0x4e7727[_0xbd8f('0xb2')],JSON['stringify'](_0x18162a));ami[_0xbd8f('0x22')](_0xbd8f('0x10e'),ut[_0xbd8f('0xa0')](_0x4e7727,'called',_0x4723b6['campaignsPreview'][_0x4e7727[_0xbd8f('0x72')]]));_0x31ae86(ut[_0xbd8f('0x4c')]('Calling'));})[_0xbd8f('0x7c')](function(_0x956d61){ut['logger'](_0xbd8f('0x10f'),_0x956d61);_0x2c6b6f(ut[_0xbd8f('0x4c')](_0xbd8f('0x110'),_0x520f25,_0x3cb14a));});}else{_0x24ed63[_0xbd8f('0x38')]+=0x1;ut['logBlacklist'](_0x4e7727);rpcDb[_0xbd8f('0x111')](_0x4e7727,_0xbd8f('0x112'));delete _0x4723b6[_0xbd8f('0x12')][_0x4754f2];_0x2c6b6f(ut['message']('Contact\x20in\x20black\x20List',_0x520f25,_0x3cb14a));}});};Preview[_0xbd8f('0xc')][_0xbd8f('0x113')]=function(_0x3766f5){return!_['isNil'](_0x3766f5)&&!_[_0xbd8f('0x6f')](_0x3766f5[_0xbd8f('0x25')])&&!_[_0xbd8f('0x6f')](_0x3766f5[_0xbd8f('0x54')])&&_0x3766f5[_0xbd8f('0x54')]&&!_[_0xbd8f('0x6f')](this[_0xbd8f('0x11')][util[_0xbd8f('0x59')](_0xbd8f('0x114'),_0x3766f5[_0xbd8f('0x25')])])&&!_[_0xbd8f('0x6f')](this['trunks'][util[_0xbd8f('0x59')](_0xbd8f('0x114'),_0x3766f5[_0xbd8f('0x25')])]['status'])&&(this[_0xbd8f('0x11')][util['format']('SIP/%s',_0x3766f5[_0xbd8f('0x25')])]['status']===_0xbd8f('0x115')||this[_0xbd8f('0x11')][util[_0xbd8f('0x59')](_0xbd8f('0x114'),_0x3766f5[_0xbd8f('0x25')])]['status']===_0xbd8f('0x116'));};Preview[_0xbd8f('0xc')][_0xbd8f('0x8a')]=function(_0x47c37b,_0x563280){var _0x13bbe8=this;return new BPromise(function(_0x46ee3e,_0x5e42d3){_0x13bbe8[_0xbd8f('0x117')](_0x47c37b,_0x563280)[_0xbd8f('0xa3')](function(_0x4d4525){_0x46ee3e(_[_0xbd8f('0x76')](_0x4d4525,[_0xbd8f('0x4c')]));})[_0xbd8f('0x7c')](function(_0x25bc42){if(_0x25bc42[_0xbd8f('0x118')]){rpcDb[_0xbd8f('0x119')](_0x47c37b);}if(_0x25bc42[_0xbd8f('0x54')]){rpcDb[_0xbd8f('0x11a')](_0x47c37b);}_0x5e42d3(_[_0xbd8f('0x76')](_0x25bc42,[_0xbd8f('0x4c')]));});});};Preview['prototype'][_0xbd8f('0x117')]=function(_0x261ceb,_0xa6e6c4){var _0x77919e=this;return new BPromise(function(_0x3ccb94,_0x262cbf){var _0x12dc38,_0x29b687;rpcDb['getContactPreview'](_0x261ceb)[_0xbd8f('0xa3')](function(_0xff0a23){if(!_[_0xbd8f('0x6f')](_0xff0a23[0x0])){_0x29b687=_0xff0a23[0x0]['recallme']?![]:!![];_0x12dc38=_0xff0a23[0x0][_0xbd8f('0x11b')]?!![]:![];_0x12dc38=_0xa6e6c4?!![]:_0x12dc38;}var _0x15bd0f=_0x77919e[_0xbd8f('0x11c')](_0xff0a23);if(_0x15bd0f['isValid']){rpcDb[_0xbd8f('0x11d')](_[_0xbd8f('0x76')](_0xff0a23[0x0],[_0xbd8f('0x11e'),_0xbd8f('0x108')]))[_0xbd8f('0xa3')](function(_0x252e66){_0x77919e[_0xbd8f('0x11f')](_0x252e66,_0xff0a23[0x0],_0xa6e6c4,_0x29b687,_0x12dc38)[_0xbd8f('0xa3')](function(_0x399dfd){_0x3ccb94(_0x399dfd);})[_0xbd8f('0x7c')](function(_0x470487){_0x262cbf(_0x470487);});})[_0xbd8f('0x7c')](function(_0x56b563){ut[_0xbd8f('0x65')](_0xbd8f('0x120'),_0x56b563);_0x262cbf(ut[_0xbd8f('0x4c')]('Call\x20unsuccessful',_0x29b687,_0x12dc38));});}else{_0x262cbf(ut[_0xbd8f('0x4c')](_0x15bd0f['message'],_0x29b687,_0x12dc38));}})['catch'](function(_0x3765a3){ut[_0xbd8f('0x65')](_0xbd8f('0x121'),_0x3765a3);_0x262cbf(ut[_0xbd8f('0x4c')](_0xbd8f('0x122'),![],!![]));});});};Preview[_0xbd8f('0xc')]['validateContact']=function(_0x2641b6){if(_[_0xbd8f('0x6f')](_0x2641b6)||_[_0xbd8f('0x10b')](_0x2641b6)||!_[_0xbd8f('0x6f')](_0x2641b6[0x0][_0xbd8f('0x89')])&&_[_0xbd8f('0x6f')](_0x2641b6[0x0]['Agent'][_0xbd8f('0x25')])){ut['logger']('[Preview][validateContact][Empty\x20Contact]',_0x2641b6);return{'isValid':![],'message':_0xbd8f('0x123')};}var _0x242323=this[_0xbd8f('0x21')][_0x2641b6[0x0][_0xbd8f('0x71')][_0xbd8f('0x25')]];_0x242323[_0xbd8f('0x4c')]=_0xbd8f('0x9c');if(_[_0xbd8f('0x6f')](_0x242323)){ut[_0xbd8f('0x65')](_0xbd8f('0x124'),_0x242323);return{'isValid':![],'message':'Empty\x20Campaign'};}if(!this['isTrunkReachable'](_0x242323[_0xbd8f('0x53')])){ut[_0xbd8f('0x65')](_0xbd8f('0x125'),_0xbd8f('0x126')+_0x242323['name']+_0xbd8f('0x127'));if(!this[_0xbd8f('0x113')](_0x242323[_0xbd8f('0x9b')])){ut[_0xbd8f('0x65')]('[Preview][validateContact][Trunk\x20not\x20working\x20correctly]',_0x242323[_0xbd8f('0x25')]+_0xbd8f('0x128'));return{'isValid':![],'message':_0xbd8f('0x129')};}}if(!ut[_0xbd8f('0x12a')](_0x242323['dialActive'])){ut['logger'](_0xbd8f('0x12b'),_0x242323[_0xbd8f('0x25')]+_0xbd8f('0x12c'));return{'isValid':![],'message':_0xbd8f('0x126')+_0x242323[_0xbd8f('0x25')]+_0xbd8f('0x12c')};}return{'isValid':!![],'message':'Is\x20Valid'};};Preview[_0xbd8f('0xc')][_0xbd8f('0x10c')]=function(_0x122087,_0x2e7809,_0x333472,_0x4dd61f){var _0x2a1463=this;return new BPromise(function(_0x48b644,_0x410566){var _0x527741=_0x122087['uniqueid'];var _0x8a146e=_0x2a1463[_0xbd8f('0x113')](_0x2e7809['Trunk'])?util['format'](_0xbd8f('0x12d'),_0x2e7809['Trunk'][_0xbd8f('0x25')],_[_0xbd8f('0x6f')](_0x2e7809[_0xbd8f('0x35')])?'':_0x2e7809[_0xbd8f('0x35')][_0xbd8f('0x12e')]()||'',_0x2e7809[_0xbd8f('0x12f')]>0x0?_0x333472[_0xbd8f('0x108')][_0xbd8f('0x130')](_0x2e7809['dialCutDigit']):_0x333472[_0xbd8f('0x108')]):util[_0xbd8f('0x59')](_0xbd8f('0x12d'),_[_0xbd8f('0x6f')](_0x2e7809[_0xbd8f('0x9b')])?_0x2e7809[_0xbd8f('0x53')]['name']:_0x2e7809[_0xbd8f('0x9b')][_0xbd8f('0x25')],_[_0xbd8f('0x6f')](_0x2e7809[_0xbd8f('0x35')])?'':_0x2e7809[_0xbd8f('0x35')][_0xbd8f('0x12e')]()||'',_0x2e7809[_0xbd8f('0x12f')]>0x0?_0x333472['phone'][_0xbd8f('0x130')](_0x2e7809[_0xbd8f('0x12f')]):_0x333472[_0xbd8f('0x108')]);var _0x5913b8=_0x2a1463[_0xbd8f('0x113')](_0x2e7809[_0xbd8f('0x53')])?ut[_0xbd8f('0x131')](_0x2e7809['Trunk'][_0xbd8f('0x55')],_0x2e7809[_0xbd8f('0x132')],_0x2e7809[_0xbd8f('0x133')]>0x0?ut['getCallerIdRandom'](_0x2e7809[_0xbd8f('0x34')],_0x2e7809[_0xbd8f('0x133')]):_0x2e7809[_0xbd8f('0x34')]):ut[_0xbd8f('0x131')](_[_0xbd8f('0x6f')](_0x2e7809[_0xbd8f('0x9b')])?_0x2e7809[_0xbd8f('0x53')][_0xbd8f('0x55')]:_0x2e7809[_0xbd8f('0x9b')][_0xbd8f('0x55')],_0x2e7809[_0xbd8f('0x132')],_0x2e7809[_0xbd8f('0x133')]>0x0?ut['getCallerIdRandom'](_0x2e7809['dialOriginateCallerIdNumber'],_0x2e7809[_0xbd8f('0x133')]):_0x2e7809[_0xbd8f('0x34')]);if(_0x5913b8){_0x122087[_0xbd8f('0x134')]=ut['extractCalleridName'](_0x5913b8);_0x122087[_0xbd8f('0x135')]=ut[_0xbd8f('0x136')](_0x5913b8);}var _0x1e26fa=ut[_0xbd8f('0x137')](_0x2e7809,_0x333472,_0x8a146e,_0x5913b8,_0x527741,_0x122087);_[_0xbd8f('0x138')](_0x122087,ut[_0xbd8f('0x139')](_0x1e26fa));_0x122087[_0xbd8f('0x8d')]=moment()[_0xbd8f('0x59')]('YYYY-MM-DD\x20HH:mm:ss');ami[_0xbd8f('0x13a')](ut[_0xbd8f('0x13b')](_0x122087,_0x2e7809,_0x1e26fa,_0x122087['activeContact'],_0x4dd61f))[_0xbd8f('0xa3')](function(_0x1c1af6){_0x2e7809['originated']+=0x1;logger[_0xbd8f('0x5c')](_0xbd8f('0x13c'),_0x527741,_0xbd8f('0xb7'),_0x2e7809[_0xbd8f('0x25')],'originated:\x20',_0x2e7809['originated']);_0x48b644(_0x1c1af6);})[_0xbd8f('0x7c')](function(_0x1c546f){ut[_0xbd8f('0xfb')](_0x122087,0xe,'OriginateError');rpcDb['createAgentHistory'](_0x122087,_0xbd8f('0x13d'));_0x410566(_0x1c546f);});});};Preview[_0xbd8f('0xc')]['syncNewExten']=function(_0x282eb8){if(this[_0xbd8f('0x12')][_0x282eb8['linkedid']]){this[_0xbd8f('0x12')][_0x282eb8[_0xbd8f('0xb1')]][_0xbd8f('0x7b')]=_0x282eb8[_0xbd8f('0x7b')];}};Preview[_0xbd8f('0xc')]['syncOriginateResponse']=function(_0x2f04b6){var _0x4c02f0=this;var _0x22f51d=this[_0xbd8f('0x12')][_0x2f04b6[_0xbd8f('0x13e')]];if(_0x22f51d){if(_0x22f51d[_0xbd8f('0x10a')]&&this['agents'][_0x22f51d[_0xbd8f('0x10a')]]){ut['logLookAgent'](_0x22f51d,this[_0xbd8f('0x13')][_0x22f51d[_0xbd8f('0x10a')]][_0xbd8f('0x25')],this['agents'][_0x22f51d[_0xbd8f('0x10a')]]['id']);}var _0xf13e96=_['clone'](_0x22f51d);_0xf13e96[_0xbd8f('0xb5')]=moment()[_0xbd8f('0x59')](_0xbd8f('0x8e'));var _0x2a5900=_0x4c02f0[_0xbd8f('0x21')][_0x22f51d['queue']];if(ut['isFailure'](_0x2f04b6['response'])){if(_0x22f51d['unlockAgent']){rpcDb[_0xbd8f('0x119')](_0x22f51d[_0xbd8f('0xb2')]);}if(_0x22f51d[_0xbd8f('0xb0')]){rpcDb['disableContact'](_0x22f51d[_0xbd8f('0xb2')]);}ami[_0xbd8f('0x22')]('custom:agentringnoanswer',ut[_0xbd8f('0xa0')](_0x22f51d,_0xbd8f('0x13f'),this[_0xbd8f('0x21')][_0x22f51d[_0xbd8f('0x72')]]));this[_0xbd8f('0xf5')](_0xf13e96,_0x2a5900,_0x2f04b6);}else{_0x22f51d[_0xbd8f('0x8d')]=moment()[_0xbd8f('0x59')](_0xbd8f('0x8e'));ut['logAgent'](_0xf13e96,0x4,_0xbd8f('0xbc'));rpcDb[_0xbd8f('0xf9')](_0xf13e96,_0xbd8f('0x140'));}}};Preview[_0xbd8f('0xc')][_0xbd8f('0x18')]=function(_0x5bbe92){var _0x224f56=this;var _0x406f48=this[_0xbd8f('0x12')][_0x5bbe92['linkedid']];var _0x5835dc;if(_0x406f48){_0x5835dc=this[_0xbd8f('0x21')][_0x406f48[_0xbd8f('0x72')]];logger[_0xbd8f('0x5c')]('[syncHangup][talking]',_0x5bbe92[_0xbd8f('0xb1')],_0xbd8f('0xb7'),_0x5835dc[_0xbd8f('0x25')],_0xbd8f('0x74'),_0x5835dc[_0xbd8f('0x2a')]);}if(this[_0xbd8f('0x12')][_0x5bbe92[_0xbd8f('0xb1')]]&&_0x5bbe92[_0xbd8f('0xb1')]!==_0x5bbe92[_0xbd8f('0xf3')]){if(_0x5bbe92['cause']==='16'&&this[_0xbd8f('0x12')][_0x5bbe92['linkedid']][_0xbd8f('0x75')]){this[_0xbd8f('0x141')](_0x5bbe92,_0x5bbe92[_0xbd8f('0xb1')],_0x5bbe92[_0xbd8f('0x142')]);}else if(this['actions'][_0x5bbe92[_0xbd8f('0xb1')]][_0xbd8f('0x75')]){logger[_0xbd8f('0x5c')]('[syncHangup][talking][cause]',_0x5bbe92[_0xbd8f('0xb1')],_0x5bbe92['cause'],_0xbd8f('0xb7'),_0x5835dc[_0xbd8f('0x25')],'pTalking:\x20',_0x5835dc[_0xbd8f('0x2a')]);this[_0xbd8f('0x141')](_0x5bbe92,_0x5bbe92['linkedid'],_0x5bbe92[_0xbd8f('0x142')]);}}else if(_0x406f48&&_[_0xbd8f('0x6f')](_0x406f48[_0xbd8f('0x143')])&&_0x5835dc[_0xbd8f('0x144')]&&_0x5bbe92[_0xbd8f('0xb1')]===_0x5bbe92[_0xbd8f('0xf3')]&&_[_0xbd8f('0x6f')](_0x5bbe92[_0xbd8f('0xf8')])&&_0x5bbe92['cause']==='16'&&_0x5bbe92['channelstate']==='6'&&_['isUndefined'](_0x406f48['transfer'])){if(_0x406f48[_0xbd8f('0xaf')]){rpcDb[_0xbd8f('0x119')](_0x406f48[_0xbd8f('0xb2')]);}if(_0x406f48[_0xbd8f('0xb0')]){rpcDb[_0xbd8f('0x11a')](_0x406f48[_0xbd8f('0xb2')]);}_0x5bbe92[_0xbd8f('0xf8')]='22';this[_0xbd8f('0xf5')](_0x406f48,_0x5835dc,_0x5bbe92);}else if(_0x406f48&&_0x406f48[_0xbd8f('0x145')]){if(_0x5bbe92[_0xbd8f('0x142')]==='16'&&this[_0xbd8f('0x12')][_0x5bbe92[_0xbd8f('0xb1')]][_0xbd8f('0x75')]){logger[_0xbd8f('0x5c')](_0xbd8f('0x146'),_0x5bbe92[_0xbd8f('0xb1')],_0x5bbe92[_0xbd8f('0x142')],_0xbd8f('0xb7'),_0x5835dc[_0xbd8f('0x25')],'pTalking:\x20',_0x5835dc[_0xbd8f('0x2a')]);this[_0xbd8f('0x141')](_0x5bbe92,_0x5bbe92[_0xbd8f('0xb1')],_0x5bbe92[_0xbd8f('0x142')]);}else if(this[_0xbd8f('0x12')][_0x5bbe92[_0xbd8f('0xb1')]]['dialAnswer']){logger[_0xbd8f('0x5c')]('[syncHangup][talking][cause]',_0x5bbe92[_0xbd8f('0xb1')],_0x5bbe92[_0xbd8f('0x142')],_0xbd8f('0xb7'),_0x5835dc[_0xbd8f('0x25')],_0xbd8f('0x74'),_0x5835dc[_0xbd8f('0x2a')]);this[_0xbd8f('0x141')](_0x5bbe92,_0x5bbe92[_0xbd8f('0xb1')],_0x5bbe92['cause']);}}};Preview['prototype'][_0xbd8f('0x147')]=function(_0x211207){if(this[_0xbd8f('0x12')][_0x211207[_0xbd8f('0xf4')]]&&_0x211207[_0xbd8f('0xf4')]!==_0x211207[_0xbd8f('0x148')]){this[_0xbd8f('0x141')](_0x211207,_0x211207[_0xbd8f('0xf4')],_0x211207[_0xbd8f('0xee')]);}};Preview[_0xbd8f('0xc')][_0xbd8f('0x149')]=function(_0x3d29e4){if(this[_0xbd8f('0x12')][_0x3d29e4['linkedid']]&&_0x3d29e4['linkedid']!==_0x3d29e4[_0xbd8f('0xf3')]&&!this[_0xbd8f('0x12')][_0x3d29e4['linkedid']][_0xbd8f('0x75')]){if(_0x3d29e4['cause']==='1'){this['callProgressDetectingCustomer'](_0x3d29e4,_0x3d29e4[_0xbd8f('0xb1')],_0x3d29e4[_0xbd8f('0x142')]);}}};Preview[_0xbd8f('0xc')][_0xbd8f('0x14a')]=function(_0x2c537a,_0x5c32ac,_0x7db768){if(this[_0xbd8f('0x12')][_0x2c537a]){if(_[_0xbd8f('0x6f')](this[_0xbd8f('0x12')][_0x2c537a][_0xbd8f('0x14b')])){this['actions'][_0x2c537a]['variables']={};}this[_0xbd8f('0x12')][_0x2c537a][_0xbd8f('0x14b')][_0x5c32ac]=_0x7db768;}};Preview[_0xbd8f('0xc')]['syncVarSet']=function(_0x29eec4){try{if(!_[_0xbd8f('0x6f')](_0x29eec4)){if(ut['filterKey'](_['keys'](_0x29eec4['variable'])[0x0])){this[_0xbd8f('0x14a')](_0x29eec4[_0xbd8f('0xf3')],_[_0xbd8f('0x14c')](_0x29eec4[_0xbd8f('0x14d')])[0x0],_0x29eec4[_0xbd8f('0x14e')]);}}}catch(_0x5df46d){logger[_0xbd8f('0x14f')]('[syncVarSet][Preview]',util['inspect'](_0x5df46d,{'showHidden':![],'depth':null}));}};Preview[_0xbd8f('0xc')][_0xbd8f('0x150')]=function(_0x269a58){if(_0x269a58){if(this[_0xbd8f('0x12')][_0x269a58[_0xbd8f('0x151')]]){this[_0xbd8f('0x12')][_0x269a58[_0xbd8f('0x151')]]['transfer']=!![];}}};Preview[_0xbd8f('0xc')][_0xbd8f('0x152')]=function(_0x2d0720){if(_0x2d0720){if(this['actions'][_0x2d0720[_0xbd8f('0x153')]]){this[_0xbd8f('0x12')][_0x2d0720['transfererlinkedid']][_0xbd8f('0x145')]=!![];}}};module[_0xbd8f('0x154')]=Preview;
\ No newline at end of file
+var _0x207c=['dialBusyMaxRetry','rescheduleContact','countnoanswerretry','NoAnswer','dialNoAnswerRetryFrequency','custom:agentnoanswer','noanswer','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','[callProgressDetectingCustomer][logNoAnswer]','CONGESTION','countcongestionretry','Congestion','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','CANCEL','countagentrejectretry','AgentReject','dialAgentRejectRetryFrequency','custom:agentreject','agentreject','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','incrementPreviewCounters','countabandonedretry','[callProgressDetectingCustomer][logAbandoned]','dialAbandonedMaxRety','dialAbandonedRetryFrequency','countmachineretry','amd','[callProgressDetectingCustomer][hangupInAMD]','cause-txt','dialstatus','custom:amd','[callProgressDetectingCustomer][machine]','decrementTalkink','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','ANSWER','destlinkedid','object','isUndefined','reason','logAgent','NoSuchNumber','createAgentHistory','[callProgressDetectingAgent][logNoAnswer]','Busy','[callProgressDetectingAgent][logCongestion]','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','[verifyAdditionalPhone]\x20','resolve','[swapAdditionalPhone]\x20','[incrementPreviewCounters]\x20','checkInBlack','Contact','phone','Contact\x20is\x20undefined','lookAgent','isEmpty','execCall','[Preview][execCall][success]','called','Calling','[Preview][execCall][failure]','Call\x20failed','logBlacklist','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','status','reachable','unmonitored','run','unlock','execRun','getContactPreview','recallme','validateContact','isValid','checkIsBlackList','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','TrunkBackup','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','trim','dialCutDigit','substring','getCallerId','dialOriginateCallerIdNumber','dialRandomLastDigitCallerIdNumber','dialOriginateCallerIdName','getCallerIdRandom','originatecalleridnum','toLowerVariables','Action','variablesAction','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','actionid','logLookAgent','clone','isFailure','response','unlockContact','custom:agentringnoanswer','rejected','callProgressDetectingAgent','[syncHangup][talking]','cause','[syncHangup][talking][cause]','statedesc','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','destuniqueid','syncHangupRequest','variables','filterKey','keys','variable','addVariable','value','error','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfererlinkedid','lodash','bluebird','uuid','moment','md5','ioredis','../../../config/environment','preview','./rpcDb','../rpc/cmHopperAdditionalPhone','./action','redis','defaults','socket.io-emitter','prototype','enqueue','tail','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','syncOriginateResponse','bind','hangup','syncHangup','dialend','syncDialEnd','syncNewExten','varset','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','emit','type','strategy','answered','available','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','abandoned','waiting','loggedInDb','dialMethod','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','name','stringify','format','info','voice:queue:%s','voice_queue_presence:remove','sendMessageOneNotActive','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','DEACTIVATED','\x20is\x20deactivated','syncCampaigns','hasOwnProperty','booked','clearZombieChannels','outbound','dialActive','dialPreviewAutoRecallMe','recallMe','clearZombieChannel','sequence','isNil','[clearZombieChannels][talking]','Queue','queue','originated:\x20','pTalking:\x20','dialAnswer','pick','UserId','VoiceQueueId','channel','catch','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','[action]','size','getContactRecallMe','agentReadyId','then','getDiff','scheduledat','dialRecallMeTimeout','Agent','voicePause','logger2','[RecallMe]','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createCustomerHistory','RecallFailedTimeout','[HistoryRecallClose]','setMessage','AGENTS_NOT_LOGGED','isActive','isTrunkReachable','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countglobal','totalGlobal','custom:agentnosuchnumber','buildObj','verifyAdditionalPhones','additional','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','cloneAction','Global','createCustomerFinal','[callProgressDetectingCustomer][logNoSuchGlobal]','scheduledAt','countnosuchnumberretry','unlockAgent','activeContact','linkedid','actioncountonusuch','idContact','swapAdditionalPhones','responsetime','answertime','uniqueid','\x20Queue','custom:agentconnect','connect','acw','custom:agentConnectPreview','buildAcw','complete','[16]','Answer','crateCustomerReportQueue','talktime','[syncHangup][talking][decrement]','BUSY','outboundBusyCallsDay','countbusyretry','dialBusyRetryFrequency','custom:agentbusy','[callProgressDetectingCustomer][logBusyGlobal]'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x207c,0x1e8));var _0xc207=function(_0x4742d0,_0x3667bd){_0x4742d0=_0x4742d0-0x0;var _0x43bc00=_0x207c[_0x4742d0];return _0x43bc00;};'use strict';var util=require('util');var _=require(_0xc207('0x0'));var BPromise=require(_0xc207('0x1'));var uuid=require(_0xc207('0x2'));var moment=require(_0xc207('0x3'));var md5=require(_0xc207('0x4'));var Redis=require(_0xc207('0x5'));var config=require(_0xc207('0x6'));var logger=require('../../../config/logger')(_0xc207('0x7'));var loggerAction=require('../../../config/logger')('actionPreview');var ami=require('../ami');var rpcDb=require(_0xc207('0x8'));var cmHopperAdditionalPhone=require(_0xc207('0x9'));var Action=require(_0xc207('0xa'));var ut=require('./util/util');config[_0xc207('0xb')]=_[_0xc207('0xc')](config[_0xc207('0xb')],{'host':'localhost','port':0x18eb});var io=require(_0xc207('0xd'))(new Redis(config[_0xc207('0xb')]));var Sequence=function(){};Sequence[_0xc207('0xe')][_0xc207('0xf')]=function(_0x201162){this[_0xc207('0x10')]=this['tail']?this['tail']['finally'](_0x201162):_0x201162();};function Preview(_0x19b297){this['sequence']=new Sequence();this[_0xc207('0x11')]=_0x19b297[_0xc207('0x12')];this['trunks']=_0x19b297[_0xc207('0x13')];this[_0xc207('0x14')]={};this[_0xc207('0x15')]=_0x19b297[_0xc207('0x15')];this[_0xc207('0x16')]=0x0;ami['on']('originateresponse',this[_0xc207('0x17')][_0xc207('0x18')](this));ami['on'](_0xc207('0x19'),this[_0xc207('0x1a')]['bind'](this));ami['on']('hanguprequest',this['syncHangupRequest'][_0xc207('0x18')](this));ami['on'](_0xc207('0x1b'),this[_0xc207('0x1c')][_0xc207('0x18')](this));ami['on']('newexten',this[_0xc207('0x1d')][_0xc207('0x18')](this));ami['on'](_0xc207('0x1e'),this['syncVarSet'][_0xc207('0x18')](this));ami['on']('attendedtransfer',this[_0xc207('0x1f')][_0xc207('0x18')](this));ami['on'](_0xc207('0x20'),this[_0xc207('0x21')][_0xc207('0x18')](this));this[_0xc207('0x22')](this[_0xc207('0x11')]);}function emit(_0x464dea,_0x212005,_0x2bd2eb){io['to'](_0x464dea)[_0xc207('0x23')](_0x212005,_0x2bd2eb);}function emitCampaignPreview(_0xe227a){if(_0xe227a[_0xc207('0x24')]==='outbound'){var _0x163b36={'id':_0xe227a['id'],'name':_0xe227a['name'],'strategy':_0xe227a[_0xc207('0x25')],'answered':_0xe227a[_0xc207('0x26')],'available':_0xe227a[_0xc207('0x27')],'loggedIn':_0xe227a[_0xc207('0x28')],'pTalking':_0xe227a[_0xc207('0x29')],'sumBillable':_0xe227a[_0xc207('0x2a')],'sumDuration':_0xe227a[_0xc207('0x2b')],'sumHoldTime':_0xe227a[_0xc207('0x2c')]||0x0,'talking':_0xe227a[_0xc207('0x2d')],'total':_0xe227a[_0xc207('0x2e')],'type':_0xe227a[_0xc207('0x24')],'unmanaged':_0xe227a[_0xc207('0x2f')],'abandoned':_0xe227a[_0xc207('0x30')],'waiting':_0xe227a[_0xc207('0x31')],'loggedInDb':_0xe227a[_0xc207('0x32')],'dialActive':_0xe227a['dialActive'],'dialMethod':_0xe227a[_0xc207('0x33')],'dialOriginateCallerIdName':_0xe227a['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0xe227a['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0xe227a[_0xc207('0x34')],'dialPrefix':_0xe227a[_0xc207('0x35')],'outboundAnswerAgiCallsDay':_0xe227a[_0xc207('0x36')],'outboundAnswerCallsDay':_0xe227a[_0xc207('0x37')],'outboundBlacklistCallsDay':_0xe227a[_0xc207('0x38')],'outboundBusyCallsDay':_0xe227a['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0xe227a[_0xc207('0x39')],'outboundDropCallsDayACS':_0xe227a[_0xc207('0x3a')],'outboundDropCallsDayCallersExit':_0xe227a[_0xc207('0x3b')],'outboundDropCallsDayTimeout':_0xe227a[_0xc207('0x3c')],'outboundNoAnswerCallsDay':_0xe227a[_0xc207('0x3d')],'outboundNoSuchCallsDay':_0xe227a[_0xc207('0x3e')],'outboundOriginateFailureCallsDay':_0xe227a[_0xc207('0x3f')],'outboundReCallsDay':_0xe227a[_0xc207('0x40')],'outboundRejectCallsDay':_0xe227a[_0xc207('0x41')],'outboundUnknownCallsDay':_0xe227a[_0xc207('0x42')],'outboundAbandonedCallsDay':_0xe227a[_0xc207('0x43')],'predictiveIntervalAnsweredCalls':_0xe227a[_0xc207('0x44')],'predictiveIntervalAvgHoldtime':_0xe227a[_0xc207('0x45')],'predictiveIntervalAvgTalktime':_0xe227a['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0xe227a[_0xc207('0x46')],'predictiveIntervalDroppedCallsTimeout':_0xe227a[_0xc207('0x47')],'predictiveIntervalErlangCalls':_0xe227a[_0xc207('0x48')],'predictiveIntervalErlangCallsDroppedCalls':_0xe227a[_0xc207('0x49')],'predictiveIntervalHitRate':_0xe227a[_0xc207('0x4a')],'predictiveIntervalMultiplicativeFactor':_0xe227a[_0xc207('0x4b')],'predictiveIntervalPauses':_0xe227a['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0xe227a[_0xc207('0x4c')],'predictiveIntervalTotalCalls':_0xe227a[_0xc207('0x4d')],'message':_0xe227a[_0xc207('0x4e')],'originated':_0xe227a[_0xc207('0x4f')],'erlangCalls':_0xe227a['erlangCalls'],'erlangCallToSecond':_0xe227a[_0xc207('0x50')],'erlangAbandonmentRate':_0xe227a[_0xc207('0x51')],'erlangBusyFactor':_0xe227a[_0xc207('0x52')],'startPredictive':_0xe227a[_0xc207('0x53')],'startProgressive':_0xe227a[_0xc207('0x54')]};if(_0xe227a[_0xc207('0x55')]){_0x163b36[_0xc207('0x55')]={'id':_0xe227a[_0xc207('0x55')]['id'],'name':_0xe227a[_0xc207('0x55')]['name'],'active':_0xe227a['Trunk'][_0xc207('0x56')],'callerid':_0xe227a[_0xc207('0x55')][_0xc207('0x57')]};}if(_0xe227a[_0xc207('0x58')]){_0x163b36['Interval']={'id':_0xe227a[_0xc207('0x58')]['id'],'name':_0xe227a[_0xc207('0x58')][_0xc207('0x59')]};}var _0x2a1c60=md5(JSON[_0xc207('0x5a')](_0x163b36));if(_0xe227a['md5']!==_0x2a1c60){_0xe227a[_0xc207('0x4')]=_0x2a1c60;emit(util[_0xc207('0x5b')]('voice:queue:%s',_0x163b36[_0xc207('0x59')]),'voice_queue:save',_0x163b36);}}}function emitVoiceQueueChannelRemove(_0x297c84){logger[_0xc207('0x5c')]('[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event',JSON[_0xc207('0x5a')](_0x297c84));emit(util[_0xc207('0x5b')](_0xc207('0x5d'),_0x297c84['name']),'voice_queue_channel:remove',_0x297c84);io[_0xc207('0x23')](_0xc207('0x5e'),_0x297c84);}function notSendMessagesQueue(_0x41d66c){if(_0x41d66c[_0xc207('0x5f')]){if(_0x41d66c['originated']===0x0&&_0x41d66c[_0xc207('0x29')]===0x0){_0x41d66c['sendMessageOneNotActive']=![];_0x41d66c['available']=0x0;_0x41d66c['paused']=0x0;_0x41d66c['message']=_0xc207('0x60');ut[_0xc207('0x61')](_0xc207('0x62'),_0x41d66c['name']+_0xc207('0x63'));}else{_0x41d66c[_0xc207('0x4e')]=_0xc207('0x64');ut[_0xc207('0x61')]('[CampaignPreview]\x20Campaign\x20Queue:\x20',_0x41d66c[_0xc207('0x59')]+_0xc207('0x65'));}emitCampaignPreview(_0x41d66c);}}Preview[_0xc207('0xe')][_0xc207('0x22')]=function(){var _0x2d6d8b=this;setInterval(function(){_0x2d6d8b['syncCampaigns']();},0x7cf);};Preview[_0xc207('0xe')][_0xc207('0x66')]=function(){var _0x3a935a=this[_0xc207('0x11')];this[_0xc207('0x16')]+=0x1;for(var _0x477c22 in _0x3a935a){if(_0x3a935a[_0xc207('0x67')](_0x477c22)&&(_0x3a935a[_0x477c22][_0xc207('0x33')]===_0xc207('0x7')||_0x3a935a[_0x477c22]['dialMethod']===_0xc207('0x68'))&&_0x3a935a[_0x477c22][_0xc207('0x24')]==='outbound'){if(this[_0xc207('0x16')]>0x7){this[_0xc207('0x16')]=0x0;this[_0xc207('0x69')]();}}if(_0x3a935a[_0xc207('0x67')](_0x477c22)&&_0x3a935a[_0x477c22][_0xc207('0x33')]==='preview'&&_0x3a935a[_0x477c22][_0xc207('0x24')]===_0xc207('0x6a')){if(_0x3a935a[_0x477c22][_0xc207('0x6b')]){this['setMessage'](_0x3a935a[_0x477c22]);if(_0x3a935a[_0x477c22][_0xc207('0x6c')])this[_0xc207('0x6d')](_0x3a935a[_0x477c22]);}else{notSendMessagesQueue(_0x3a935a[_0x477c22]);}}}};Preview[_0xc207('0xe')][_0xc207('0x6e')]=function(_0x593326){var _0x4ebccf=this;this[_0xc207('0x6f')][_0xc207('0xf')](function(){if(!_[_0xc207('0x70')](_0x4ebccf[_0xc207('0x14')][_0x593326])){loggerAction[_0xc207('0x5c')](_0xc207('0x71'),_0x593326,_0xc207('0x72'),_0x4ebccf[_0xc207('0x14')][_0x593326][_0xc207('0x73')],_0xc207('0x74'),JSON[_0xc207('0x5a')](_0x4ebccf[_0xc207('0x11')][_0x4ebccf['actions'][_0x593326]['queue']][_0xc207('0x4f')]),_0xc207('0x75'),JSON[_0xc207('0x5a')](_0x4ebccf['campaignsPreview'][_0x4ebccf[_0xc207('0x14')][_0x593326][_0xc207('0x73')]][_0xc207('0x29')]),JSON[_0xc207('0x5a')](_0x4ebccf['actions'][_0x593326][_0xc207('0x76')]),JSON['stringify'](_[_0xc207('0x77')](_0x4ebccf['actions'][_0x593326],['contactId',_0xc207('0x78'),_0xc207('0x79'),'ListId'])));return ami['Action']({'action':'status','channel':_0x4ebccf[_0xc207('0x14')][_0x593326][_0xc207('0x7a')]})[_0xc207('0x7b')](function(_0x1acc33){if(_0x1acc33[_0xc207('0x4e')]===_0xc207('0x7c')){setTimeout(function(){if(_0x4ebccf[_0xc207('0x14')][_0x593326]){ut[_0xc207('0x7d')](_0x4ebccf['campaignsPreview'][_0x4ebccf[_0xc207('0x14')][_0x593326][_0xc207('0x73')]],'[clearZombieChannel]');if(_0x4ebccf['actions'][_0x593326][_0xc207('0x76')]===!![]){ut['decrementTalkink'](_0x4ebccf['campaignsPreview'][_0x4ebccf[_0xc207('0x14')][_0x593326][_0xc207('0x73')]],_0xc207('0x7e'));ut[_0xc207('0x7f')](_0xc207('0x80')+_0x593326,_0x4ebccf[_0xc207('0x14')][_0x593326][_0xc207('0x73')]);}ut[_0xc207('0x7f')](_0xc207('0x81')+_0x593326,_0x4ebccf[_0xc207('0x14')][_0x593326][_0xc207('0x73')]);delete _0x4ebccf['actions'][_0x593326];}},0x2328);}});}});};Preview['prototype'][_0xc207('0x69')]=function(){var _0x246f5b=this;loggerAction[_0xc207('0x5c')](_0xc207('0x82'),_[_0xc207('0x83')](this[_0xc207('0x14')]));for(var _0x1fc073 in this[_0xc207('0x14')]){if(_0x246f5b[_0xc207('0x14')]['hasOwnProperty'](_0x1fc073)){_0x246f5b[_0xc207('0x6e')](_0x1fc073);}}};Preview[_0xc207('0xe')][_0xc207('0x6d')]=function(_0x6d387e){var _0x569c85=this;rpcDb[_0xc207('0x84')](_0x6d387e['id'],ut[_0xc207('0x85')](this[_0xc207('0x15')]))[_0xc207('0x86')](function(_0x464263){if(!_[_0xc207('0x70')](_0x464263)){for(var _0x3eb832=0x0;_0x3eb832<_0x464263['length'];_0x3eb832+=0x1){if(ut[_0xc207('0x87')](_0x464263[_0x3eb832][_0xc207('0x88')])<_0x6d387e[_0xc207('0x89')]*0x3c){if(_0x464263[_0x3eb832][_0xc207('0x8a')]&&!_0x464263[_0x3eb832]['Agent'][_0xc207('0x8b')]){_0x569c85['run'](_0x464263[_0x3eb832]['id'])['then'](ut[_0xc207('0x8c')](_0xc207('0x8d')))[_0xc207('0x7b')](ut[_0xc207('0x8c')](_0xc207('0x8d')));}else{rpcDb[_0xc207('0x8e')](_0x464263[_0x3eb832]['id']);}}else{var _0x35a0d8=new Action(_0x464263[_0x3eb832],_0x6d387e);_0x35a0d8[_0xc207('0x8f')]=moment()[_0xc207('0x5b')](_0xc207('0x90'));_0x6d387e[_0xc207('0x40')]+=0x1;ut[_0xc207('0x91')](_0x35a0d8,0x17,_0xc207('0x92'));if(_0x6d387e[_0xc207('0x93')]){rpcDb[_0xc207('0x94')](ut['createBody'](_0x464263[_0x3eb832]));rpcDb[_0xc207('0x95')](_0x35a0d8,'[HistoryDialRecallInQueue][historyCatch]');}else{ut[_0xc207('0x91')](_0x35a0d8,0x16,_0xc207('0x96'));rpcDb[_0xc207('0x95')](_0x35a0d8,'[HistoryRecallClose]');rpcDb['createCustomerFinal'](_0x35a0d8,_0xc207('0x97'));}}}}})[_0xc207('0x7b')](ut[_0xc207('0x8c')]('[getContactRecallMe]'));};Preview[_0xc207('0xe')][_0xc207('0x98')]=function(_0x3509d8){_0x3509d8['sendMessageOneNotActive']=!![];if(ut['IsNotLoggedIn'](_0x3509d8[_0xc207('0x28')])){_0x3509d8['message']=_0xc207('0x99');}else if(!ut[_0xc207('0x9a')](_0x3509d8[_0xc207('0x6b')])){_0x3509d8[_0xc207('0x4e')]=_0xc207('0x60');}else if(!this[_0xc207('0x9b')](_0x3509d8[_0xc207('0x55')])){if(!this[_0xc207('0x9b')](_0x3509d8['TrunkBackup'])){_0x3509d8[_0xc207('0x4e')]=_0xc207('0x9c');}else{_0x3509d8[_0xc207('0x4e')]=_0xc207('0x9d');}}else{_0x3509d8[_0xc207('0x4e')]=_0xc207('0x9d');}emitCampaignPreview(_0x3509d8);};Preview[_0xc207('0xe')][_0xc207('0x9e')]=function(_0x28a45d,_0x28f467,_0x203686){var _0x53a210=this;var _0x20e130=this[_0xc207('0x14')][_0x28f467];var _0x45b4fb=this[_0xc207('0x11')][_0x20e130['queue']];var _0x586c41;var _0x416a72=![];var _0x375518=0x2;var _0x34f784=0x3;if(_0x45b4fb){switch(_0x203686){case'1':_0x45b4fb[_0xc207('0x3e')]+=0x1;_0x20e130['countnosuchnumberretry']+=0x1;_0x20e130[_0xc207('0x9f')]=ut[_0xc207('0xa0')](_0x20e130);ut[_0xc207('0x91')](_0x20e130,0x0,'NoSuchNumber');ami[_0xc207('0x23')](_0xc207('0xa1'),ut[_0xc207('0xa2')](_0x20e130,'nosuchnumber'));rpcDb[_0xc207('0x95')](_0x20e130,'[callProgressDetectingCustomer][logNoSuch]');_0x53a210[_0xc207('0xa3')](_0x20e130,'0',_0x45b4fb)['then'](function(_0xf68aae){_0x416a72=_0xf68aae[_0xc207('0xa4')]==0x1;_0x375518=_0x45b4fb['dialNoSuchNumberRetryFrequency'];_0x34f784=_0x45b4fb[_0xc207('0xa5')];if(!_0x416a72){if(ut['totalGlobal'](_0x20e130)>=_0x45b4fb[_0xc207('0xa6')]){_0x586c41=ut[_0xc207('0xa7')](_0x20e130,0xf,_0xc207('0xa8'));rpcDb[_0xc207('0xa9')](_0x586c41,_0xc207('0xaa'));}else{if(_0x20e130['countnosuchnumberretry']>=_0x45b4fb['dialNoSuchNumberMaxRetry']){rpcDb[_0xc207('0xa9')](_0x20e130,_0xc207('0xaa'));}else{rpcDb['rescheduleContact'](ut[_0xc207('0xab')](_0x20e130,_0xc207('0xac'),_0x45b4fb['dialNoSuchNumberRetryFrequency']),_0x20e130[_0xc207('0xad')],_0x20e130[_0xc207('0xae')]);}}delete this['actions'][_0x28a45d[_0xc207('0xaf')]];}else{_0x20e130[_0xc207('0xac')]++;logger[_0xc207('0x5c')](_0xc207('0xb0'),_0x20e130[_0xc207('0xac')]);logger[_0xc207('0x5c')]('id',_0x20e130['idContact']);_0x53a210['incrementPreviewCounters']({'id':_0x20e130[_0xc207('0xb1')],'field':{'countnosuchnumberretry':_0x20e130[_0xc207('0xac')]}})[_0xc207('0x86')](function(){_0x53a210[_0xc207('0xb2')](_0x20e130,_0x375518,_0x34f784)[_0xc207('0x86')](function(){});});}});break;case'ANSWER':var _0x32e092=moment()['format'](_0xc207('0x90'));_0x20e130[_0xc207('0xb3')]=_0x32e092;_0x20e130[_0xc207('0xb4')]=_0x32e092;_0x20e130[_0xc207('0x76')]=!![];_0x45b4fb[_0xc207('0x29')]+=0x1;logger[_0xc207('0x5c')]('[syncHangup][talking][increment]',_0x20e130[_0xc207('0xb5')],_0xc207('0xb6'),_0x45b4fb['name'],_0xc207('0x75'),_0x45b4fb[_0xc207('0x29')]);ami[_0xc207('0x23')](_0xc207('0xb7'),ut[_0xc207('0xa2')](_0x20e130,_0xc207('0xb8'),this[_0xc207('0x11')][_0x20e130[_0xc207('0x73')]]));if(_0x45b4fb[_0xc207('0xb9')]){ami[_0xc207('0x23')](_0xc207('0xba'),ut[_0xc207('0xbb')](_0x20e130));}break;case'16':ami[_0xc207('0x23')]('custom:agentcomplete',ut[_0xc207('0xa2')](_0x20e130,_0xc207('0xbc'),this[_0xc207('0x11')][_0x20e130[_0xc207('0x73')]]));emitVoiceQueueChannelRemove(ut['buildObj'](_0x20e130,_0xc207('0xbc')));_0x45b4fb['outboundAnswerCallsDay']+=0x1;_0x45b4fb[_0xc207('0x2e')]+=0x1;_0x45b4fb['answered']+=0x1;ut['decrementTalkink'](_0x45b4fb,_0xc207('0xbd'));_0x20e130[_0xc207('0x9f')]=ut[_0xc207('0xa0')](_0x20e130);ut[_0xc207('0x91')](_0x20e130,0x4,_0xc207('0xbe'));rpcDb[_0xc207('0x95')](_0x20e130,'[callProgressDetectingCustomer][logAnswer]');rpcDb[_0xc207('0xa9')](_0x20e130,'[callProgressDetectingCustomer][logAnswerGlobal]');rpcDb[_0xc207('0xbf')](_0x20e130);_0x45b4fb[_0xc207('0x2b')]+=_0x20e130[_0xc207('0xc0')];_0x45b4fb[_0xc207('0x2a')]+=_0x20e130['talktime'];logger[_0xc207('0x5c')](_0xc207('0xc1'),_0x20e130['uniqueid'],_0xc207('0xb6'),_0x45b4fb[_0xc207('0x59')],_0xc207('0x75'),_0x45b4fb[_0xc207('0x29')]);delete this['actions'][_0x28a45d[_0xc207('0xaf')]];break;case _0xc207('0xc2'):_0x45b4fb[_0xc207('0xc3')]+=0x1;_0x20e130[_0xc207('0xc4')]+=0x1;_0x20e130['countglobal']=ut['totalGlobal'](_0x20e130);ut['logCustomer'](_0x20e130,0x5,'Busy');_0x375518=_0x45b4fb[_0xc207('0xc5')];_0x34f784=_0x45b4fb[_0xc207('0xa5')];ami[_0xc207('0x23')](_0xc207('0xc6'),ut['buildObj'](_0x20e130,'busy'));rpcDb[_0xc207('0x95')](_0x20e130,'[callProgressDetectingCustomer][logBusy]');_0x53a210['verifyAdditionalPhones'](_0x20e130,'5',_0x45b4fb)[_0xc207('0x86')](function(_0x4167bc){_0x416a72=_0x4167bc[_0xc207('0xa4')]==0x1;if(!_0x416a72){if(ut[_0xc207('0xa0')](_0x20e130)>=_0x45b4fb[_0xc207('0xa6')]){_0x586c41=ut['cloneAction'](_0x20e130,0xf,_0xc207('0xa8'));rpcDb['createCustomerFinal'](_0x586c41,_0xc207('0xc7'));}else{if(_0x20e130[_0xc207('0xc4')]>=_0x45b4fb[_0xc207('0xc8')]){rpcDb['createCustomerFinal'](_0x20e130,'[callProgressDetectingCustomer][logBusy]');}else{rpcDb[_0xc207('0xc9')](ut[_0xc207('0xab')](_0x20e130,_0xc207('0xc4'),_0x45b4fb[_0xc207('0xc5')]),_0x20e130['unlockAgent'],_0x20e130['activeContact']);}}}else{_0x20e130[_0xc207('0xc4')]++;_0x53a210['incrementPreviewCounters']({'id':_0x20e130[_0xc207('0xb1')],'field':{'countbusyretry':_0x20e130[_0xc207('0xc4')]}})[_0xc207('0x86')](function(){_0x53a210[_0xc207('0xb2')](_0x20e130,_0x375518,_0x34f784)[_0xc207('0x86')](function(){});});}});break;case'NOANSWER':_0x45b4fb[_0xc207('0x3d')]+=0x1;_0x20e130[_0xc207('0xca')]+=0x1;_0x20e130[_0xc207('0x9f')]=ut[_0xc207('0xa0')](_0x20e130);ut[_0xc207('0x91')](_0x20e130,0x3,_0xc207('0xcb'));_0x375518=_0x45b4fb[_0xc207('0xcc')];_0x34f784=_0x45b4fb[_0xc207('0xa5')];ami[_0xc207('0x23')](_0xc207('0xcd'),ut['buildObj'](_0x20e130,_0xc207('0xce')));rpcDb['createCustomerHistory'](_0x20e130,'[callProgressDetectingCustomer][logNoAnswer]');_0x53a210[_0xc207('0xa3')](_0x20e130,'3',_0x45b4fb)[_0xc207('0x86')](function(_0x5df85d){_0x416a72=_0x5df85d['additional']==0x1;if(!_0x416a72){if(ut[_0xc207('0xa0')](_0x20e130)>=_0x45b4fb[_0xc207('0xa6')]){_0x586c41=ut[_0xc207('0xa7')](_0x20e130,0xf,_0xc207('0xa8'));rpcDb['createCustomerFinal'](_0x586c41,_0xc207('0xcf'));}else{if(_0x20e130['countnoanswerretry']>=_0x45b4fb[_0xc207('0xd0')]){rpcDb[_0xc207('0xa9')](_0x20e130,_0xc207('0xd1'));}else{rpcDb[_0xc207('0xc9')](ut[_0xc207('0xab')](_0x20e130,_0xc207('0xca'),_0x45b4fb['dialNoAnswerRetryFrequency']),_0x20e130[_0xc207('0xad')],_0x20e130[_0xc207('0xae')]);}}}else{_0x20e130['countnoanswerretry']++;_0x53a210['incrementPreviewCounters']({'id':_0x20e130['idContact'],'field':{'countnoanswerretry':_0x20e130['countnoanswerretry']}})['then'](function(){_0x53a210[_0xc207('0xb2')](_0x20e130,_0x375518,_0x34f784)[_0xc207('0x86')](function(){});});}});break;case _0xc207('0xd2'):_0x45b4fb['outboundCongestionCallsDay']+=0x1;_0x20e130[_0xc207('0xd3')]+=0x1;_0x20e130['countglobal']=ut[_0xc207('0xa0')](_0x20e130);ut[_0xc207('0x91')](_0x20e130,0x8,_0xc207('0xd4'));_0x375518=_0x45b4fb['dialCongestionRetryFrequency'];_0x34f784=_0x45b4fb[_0xc207('0xa5')];ami[_0xc207('0x23')]('custom:agentcongestion',ut[_0xc207('0xa2')](_0x20e130,'congestion'));rpcDb[_0xc207('0x95')](_0x20e130,'[callProgressDetectingCustomer][logCongestion]');_0x53a210[_0xc207('0xa3')](_0x20e130,'8',_0x45b4fb)['then'](function(_0x24efae){_0x416a72=_0x24efae[_0xc207('0xa4')]==0x1;if(!_0x416a72){if(ut[_0xc207('0xa0')](_0x20e130)>=_0x45b4fb[_0xc207('0xa6')]){_0x586c41=ut[_0xc207('0xa7')](_0x20e130,0xf,_0xc207('0xa8'));rpcDb['createCustomerFinal'](_0x586c41,_0xc207('0xd5'));}else{if(_0x20e130[_0xc207('0xd3')]>=_0x45b4fb[_0xc207('0xd6')]){rpcDb[_0xc207('0xa9')](_0x20e130,'[callProgressDetectingCustomer][logCongestion]');}else{rpcDb[_0xc207('0xc9')](ut[_0xc207('0xab')](_0x20e130,'countcongestionretry',_0x45b4fb[_0xc207('0xc5')]),_0x20e130[_0xc207('0xad')],_0x20e130[_0xc207('0xae')]);}}}else{_0x20e130[_0xc207('0xd3')]++;_0x53a210['incrementPreviewCounters']({'id':_0x20e130[_0xc207('0xb1')],'field':{'countcongestionretry':_0x20e130[_0xc207('0xd3')]}})[_0xc207('0x86')](function(){_0x53a210[_0xc207('0xb2')](_0x20e130,_0x375518,_0x34f784)['then'](function(){});});}});break;case _0xc207('0xd7'):_0x45b4fb['outboundRejectCallsDay']+=0x1;_0x20e130[_0xc207('0xd8')]+=0x1;_0x20e130[_0xc207('0x9f')]=ut[_0xc207('0xa0')](_0x20e130);ut['logCustomer'](_0x20e130,0x14,_0xc207('0xd9'));_0x375518=_0x45b4fb[_0xc207('0xda')];_0x34f784=_0x45b4fb[_0xc207('0xa5')];ami[_0xc207('0x23')](_0xc207('0xdb'),ut[_0xc207('0xa2')](_0x20e130,_0xc207('0xdc')));rpcDb[_0xc207('0x95')](_0x20e130,'[syncHangupRequest][logAgentReject]');_0x53a210[_0xc207('0xa3')](_0x20e130,'20',_0x45b4fb)[_0xc207('0x86')](function(_0x5022f5){_0x416a72=_0x5022f5[_0xc207('0xa4')]==0x1;if(!_0x416a72){if(ut[_0xc207('0xa0')](_0x20e130)>=_0x45b4fb[_0xc207('0xa6')]){_0x586c41=ut[_0xc207('0xa7')](_0x20e130,0x14,_0xc207('0xd9'));rpcDb[_0xc207('0xa9')](_0x586c41,_0xc207('0xdd'));}else{if(_0x20e130['countagentrejectretry']>=_0x45b4fb[_0xc207('0xde')]){rpcDb[_0xc207('0xa9')](_0x20e130,_0xc207('0xdd'));}else{rpcDb[_0xc207('0xc9')](ut[_0xc207('0xab')](_0x20e130,_0xc207('0xd8'),_0x45b4fb[_0xc207('0xda')]),_0x20e130[_0xc207('0xad')],_0x20e130[_0xc207('0xae')]);}}}else{_0x20e130[_0xc207('0xca')]++;_0x53a210[_0xc207('0xdf')]({'id':_0x20e130[_0xc207('0xb1')],'field':{'countnoanswerretry':_0x20e130[_0xc207('0xca')]}})['then'](function(){_0x53a210[_0xc207('0xb2')](_0x20e130,_0x375518,_0x34f784)['then'](function(){});});}});break;case'ABANDONED':_0x45b4fb[_0xc207('0x43')]+=0x1;_0x20e130[_0xc207('0xe0')]+=0x1;_0x20e130['countglobal']=ut[_0xc207('0xa0')](_0x20e130);ut[_0xc207('0x91')](_0x20e130,0xb,'Abandoned');rpcDb[_0xc207('0x95')](_0x20e130,_0xc207('0xe1'));_0x53a210['verifyAdditionalPhones'](_0x20e130,'11',_0x45b4fb)['then'](function(_0x3fa014){_0x416a72=_0x3fa014[_0xc207('0xa4')]==0x1;if(!_0x416a72){if(ut[_0xc207('0xa0')](_0x20e130)>=_0x45b4fb[_0xc207('0xa6')]){_0x586c41=ut[_0xc207('0xa7')](_0x20e130,0xf,_0xc207('0xa8'));rpcDb[_0xc207('0xa9')](_0x586c41,_0xc207('0xe1'));}else{if(_0x20e130['countabandonedetry']>=_0x45b4fb[_0xc207('0xe2')]){rpcDb[_0xc207('0xa9')](_0x20e130,_0xc207('0xe1'));}else{rpcDb[_0xc207('0xc9')](ut[_0xc207('0xab')](_0x20e130,_0xc207('0xe0'),_0x45b4fb[_0xc207('0xe3')]),_0x20e130[_0xc207('0xad')],_0x20e130[_0xc207('0xae')]);}}}else{_0x20e130['countnoanswerretry']++;_0x53a210[_0xc207('0xdf')]({'id':_0x20e130['idContact'],'field':{'countnoanswerretry':_0x20e130['countnoanswerretry']}})[_0xc207('0x86')](function(){_0x53a210[_0xc207('0xb2')](_0x20e130,_0x375518,_0x34f784)[_0xc207('0x86')](function(){});});}});break;case'18':_0x45b4fb[_0xc207('0x42')]+=0x1;_0x20e130[_0xc207('0xe4')]+=0x1;_0x20e130['countglobal']=ut[_0xc207('0xa0')](_0x20e130);ut[_0xc207('0x91')](_0x20e130,0x12,_0x28a45d['cause-txt']||_0x28a45d['dialstatus']);ami[_0xc207('0x23')]('custom:amd',ut[_0xc207('0xa2')](_0x20e130,_0xc207('0xe5')));rpcDb[_0xc207('0x95')](_0x20e130,'[callProgressDetectingCustomer][hangupInAMD]');_0x53a210[_0xc207('0xa3')](_0x20e130,'18',_0x45b4fb)[_0xc207('0x86')](function(_0x28900f){_0x416a72=_0x28900f[_0xc207('0xa4')]==0x1;if(!_0x416a72){if(ut['totalGlobal'](_0x20e130)>=_0x45b4fb[_0xc207('0xa6')]){_0x586c41=ut[_0xc207('0xa7')](_0x20e130,0x12,'Global');rpcDb[_0xc207('0xa9')](_0x586c41,_0xc207('0xe6'));}else{rpcDb['createCustomerFinal'](_0x20e130,_0xc207('0xe6'));}}else{_0x20e130[_0xc207('0xca')]++;_0x53a210[_0xc207('0xdf')]({'id':_0x20e130[_0xc207('0xb1')],'field':{'countnoanswerretry':_0x20e130[_0xc207('0xca')]}})[_0xc207('0x86')](function(){_0x53a210[_0xc207('0xb2')](_0x20e130,_0x375518,_0x34f784)[_0xc207('0x86')](function(){});});}});delete this[_0xc207('0x14')][_0x28a45d['linkedid']];break;case'19':_0x45b4fb[_0xc207('0x42')]+=0x1;_0x20e130[_0xc207('0x9f')]=ut[_0xc207('0xa0')](_0x20e130);ut[_0xc207('0x91')](_0x20e130,0x13,_0x28a45d[_0xc207('0xe7')]||_0x28a45d[_0xc207('0xe8')]);ami[_0xc207('0x23')](_0xc207('0xe9'),ut[_0xc207('0xa2')](_0x20e130,_0xc207('0xe5')));rpcDb[_0xc207('0x95')](_0x20e130,'[callProgressDetectingCustomer][machine]');_0x53a210[_0xc207('0xa3')](_0x20e130,'18',_0x45b4fb)['then'](function(_0x2414cc){_0x416a72=_0x2414cc[_0xc207('0xa4')]==0x1;if(!_0x416a72){if(ut[_0xc207('0xa0')](_0x20e130)>=_0x45b4fb[_0xc207('0xa6')]){_0x586c41=ut['cloneAction'](_0x20e130,0xf,'Global');rpcDb[_0xc207('0xa9')](_0x586c41,_0xc207('0xea'));}else{rpcDb[_0xc207('0xa9')](_0x20e130,_0xc207('0xea'));}}else{_0x20e130[_0xc207('0xca')]++;_0x53a210[_0xc207('0xdf')]({'id':_0x20e130[_0xc207('0xb1')],'field':{'countnoanswerretry':_0x20e130[_0xc207('0xca')]}})[_0xc207('0x86')](function(){_0x53a210[_0xc207('0xb2')](_0x20e130,_0x375518,_0x34f784)[_0xc207('0x86')](function(){});});}});delete this[_0xc207('0x14')][_0x28a45d[_0xc207('0xaf')]];break;default:if(_0x20e130[_0xc207('0x76')]){ut[_0xc207('0xeb')](_0x45b4fb,_0xc207('0xec'));ut[_0xc207('0x7f')](_0xc207('0xed')+_0x45b4fb[_0xc207('0x59')],_0x28a45d);}_0x45b4fb[_0xc207('0x42')]+=0x1;_0x20e130[_0xc207('0x9f')]=ut[_0xc207('0xa0')](_0x20e130);ut['logCustomer'](_0x20e130,0xc,_0x28a45d[_0xc207('0xe7')]||_0x28a45d[_0xc207('0xe8')]);_0x375518=_0x45b4fb['dialAgentRejectRetryFrequency'];_0x34f784=_0x45b4fb[_0xc207('0xa5')];rpcDb[_0xc207('0x95')](_0x20e130,_0xc207('0xee'));_0x53a210['verifyAdditionalPhones'](_0x20e130,'20',_0x45b4fb)[_0xc207('0x86')](function(_0x35d275){_0x416a72=_0x35d275[_0xc207('0xa4')]==0x1;if(!_0x416a72){if(ut[_0xc207('0xa0')](_0x20e130)>=_0x45b4fb[_0xc207('0xa6')]){_0x586c41=ut[_0xc207('0xa7')](_0x20e130,0xf,_0xc207('0xa8'));rpcDb[_0xc207('0xa9')](_0x586c41,'[callProgressDetectingCustomer][logUnknownGlobal]');}else{rpcDb[_0xc207('0xa9')](_0x20e130,_0xc207('0xef'));}delete this[_0xc207('0x14')][_0x28a45d[_0xc207('0xaf')]];}else{_0x53a210['swapAdditionalPhones'](_0x20e130,_0x375518,_0x34f784)[_0xc207('0x86')](function(_0x54165d){});}});}if(!(_0x20e130[_0xc207('0x76')]&&_0x203686==='16')){ut[_0xc207('0x7d')](_0x45b4fb,_0xc207('0xf0'));logger['info'](_0xc207('0xf1'),_0x20e130[_0xc207('0xb5')],_0xc207('0xb6'),_0x45b4fb[_0xc207('0x59')],_0xc207('0x74'),_0x45b4fb[_0xc207('0x4f')]);}if(_0x203686!==_0xc207('0xf2')){delete this[_0xc207('0x14')][_0x28a45d[_0xc207('0xaf')]];delete this[_0xc207('0x14')][_0x28a45d[_0xc207('0xf3')]];}}};Preview['prototype']['callProgressDetectingAgent']=function(_0x6aec02,_0x2a3af7,_0x331e0f){if(_['isUndefined'](_0x2a3af7)&&_0xc207('0xf4')!==typeof _0x2a3af7){return;}if(_[_0xc207('0xf5')](_0x331e0f)&&_0xc207('0xf4')!==typeof _0x331e0f){return;}switch(_0x331e0f[_0xc207('0xf6')]){case'0':ut[_0xc207('0xf7')](_0x6aec02,0x0,_0xc207('0xf8'));rpcDb[_0xc207('0xf9')](_0x6aec02,'[callProgressDetectingAgent][logNoSuch]');break;case'3':ut[_0xc207('0xf7')](_0x6aec02,0x3,_0xc207('0xcb'));rpcDb['createAgentHistory'](_0x6aec02,_0xc207('0xfa'));break;case'5':ut['logAgent'](_0x6aec02,0x5,_0xc207('0xfb'));rpcDb['createAgentHistory'](_0x6aec02,'[callProgressDetectingAgent][logBusy]');break;case'8':ut['logAgent'](_0x6aec02,0x8,'Congestion');rpcDb[_0xc207('0xf9')](_0x6aec02,_0xc207('0xfc'));break;case'22':ut[_0xc207('0xf7')](_0x6aec02,0x16,'AnswerAGI');rpcDb[_0xc207('0xf9')](_0x6aec02,_0xc207('0xfd'));break;default:ut['logAgent'](_0x6aec02,0xc,_0x331e0f[_0xc207('0xf6')]);rpcDb[_0xc207('0xf9')](_0x6aec02,_0xc207('0xfc'));}ut['updateOriginated'](_0x2a3af7,_0xc207('0xfe'));logger['info'](_0xc207('0xff'),_0x6aec02[_0xc207('0xb5')],'\x20Queue',_0x2a3af7[_0xc207('0x59')],'originated:\x20',_0x2a3af7[_0xc207('0x4f')]);delete this['actions'][_0x6aec02['uniqueid']];};Preview[_0xc207('0xe')][_0xc207('0xa3')]=function(_0x1e2d78,_0xd6227d,_0x48cf60){return BPromise['resolve']()[_0xc207('0x86')](cmHopperAdditionalPhone[_0xc207('0xa3')](_0x1e2d78,_0xd6227d,_0x48cf60))[_0xc207('0x7b')](logger[_0xc207('0x5c')](_0xc207('0x100')));};Preview['prototype'][_0xc207('0xb2')]=function(_0x5b461d,_0x503b3a,_0x387476){return BPromise[_0xc207('0x101')]()['then'](cmHopperAdditionalPhone['swapAdditionalPhones'](_0x5b461d,_0x503b3a,_0x387476))['catch'](logger[_0xc207('0x5c')](_0xc207('0x102')));};Preview[_0xc207('0xe')][_0xc207('0xdf')]=function(_0x57eff2){return BPromise[_0xc207('0x101')]()[_0xc207('0x86')](cmHopperAdditionalPhone['incrementPreviewCounters'](_0x57eff2))[_0xc207('0x7b')](logger[_0xc207('0x5c')](_0xc207('0x103')));};Preview[_0xc207('0xe')][_0xc207('0x104')]=function(_0x40b692,_0x24338a,_0x1756eb,_0x3e0480,_0x533e84){var _0x4cee5a=this;return new BPromise(function(_0x11f4e1,_0x1f9a6d){if(_['isNil'](_0x24338a)||_['isNil'](_0x24338a[_0xc207('0x105')])||_['isNil'](_0x24338a[_0xc207('0x106')])||_[_0xc207('0x70')](_0x24338a['VoiceQueueId'])){_0x1f9a6d(ut[_0xc207('0x4e')](_0xc207('0x107'),_0x3e0480,_0x533e84));return;}var _0x4fd753=uuid['v4']();var _0x581d54=_0x4cee5a[_0xc207('0x11')][_0x24338a[_0xc207('0x72')][_0xc207('0x59')]];var _0x552239=_0x1756eb?_0x4cee5a[_0xc207('0x15')][_0x1756eb]['id']:undefined;_0x4cee5a[_0xc207('0x14')][_0x4fd753]=new Action(_0x24338a,_0x581d54,_0x4fd753,_0x1756eb,_0x552239);var _0x1e2238=_0x4cee5a[_0xc207('0x14')][_0x4fd753];_0x1e2238['unlockAgent']=_0x3e0480;_0x1e2238[_0xc207('0xae')]=_0x533e84;_0x1e2238[_0xc207('0x108')]=_0x1756eb;if(_[_0xc207('0x109')](_0x40b692)){_0x4cee5a[_0xc207('0x10a')](_0x1e2238,_0x581d54,_0x24338a,_0x1756eb)[_0xc207('0x86')](function(_0x3dcc0e){logger[_0xc207('0x5c')](_0xc207('0x10b'),'Queue:\x20'+_0x1e2238[_0xc207('0x73')]+'\x20IdHopper:\x20'+_0x1e2238[_0xc207('0xb1')],JSON[_0xc207('0x5a')](_0x3dcc0e));ami[_0xc207('0x23')]('custom:agentcalled',ut[_0xc207('0xa2')](_0x1e2238,_0xc207('0x10c'),_0x4cee5a['campaignsPreview'][_0x1e2238['queue']]));_0x11f4e1(ut['message'](_0xc207('0x10d')));})[_0xc207('0x7b')](function(_0x32947f){ut[_0xc207('0x61')](_0xc207('0x10e'),_0x32947f);_0x1f9a6d(ut[_0xc207('0x4e')](_0xc207('0x10f'),_0x3e0480,_0x533e84));});}else{_0x581d54[_0xc207('0x38')]+=0x1;ut[_0xc207('0x110')](_0x1e2238);rpcDb[_0xc207('0x111')](_0x1e2238,_0xc207('0x112'));delete _0x4cee5a[_0xc207('0x14')][_0x4fd753];_0x1f9a6d(ut[_0xc207('0x4e')](_0xc207('0x113'),_0x3e0480,_0x533e84));}});};Preview[_0xc207('0xe')][_0xc207('0x9b')]=function(_0xaebd6f){return!_[_0xc207('0x70')](_0xaebd6f)&&!_[_0xc207('0x70')](_0xaebd6f[_0xc207('0x59')])&&!_['isNil'](_0xaebd6f[_0xc207('0x56')])&&_0xaebd6f[_0xc207('0x56')]&&!_[_0xc207('0x70')](this['trunks'][util[_0xc207('0x5b')]('SIP/%s',_0xaebd6f[_0xc207('0x59')])])&&!_[_0xc207('0x70')](this[_0xc207('0x13')][util[_0xc207('0x5b')](_0xc207('0x114'),_0xaebd6f['name'])][_0xc207('0x115')])&&(this[_0xc207('0x13')][util[_0xc207('0x5b')](_0xc207('0x114'),_0xaebd6f['name'])]['status']===_0xc207('0x116')||this[_0xc207('0x13')][util[_0xc207('0x5b')](_0xc207('0x114'),_0xaebd6f[_0xc207('0x59')])][_0xc207('0x115')]===_0xc207('0x117'));};Preview[_0xc207('0xe')][_0xc207('0x118')]=function(_0x370e6b,_0xc25d88){var _0x474d33=this;return new BPromise(function(_0x2d7130,_0x101510){_0x474d33['execRun'](_0x370e6b,_0xc25d88)['then'](function(_0x172d6d){_0x2d7130(_[_0xc207('0x77')](_0x172d6d,[_0xc207('0x4e')]));})[_0xc207('0x7b')](function(_0x407819){if(_0x407819[_0xc207('0x119')]){rpcDb['unlockContact'](_0x370e6b);}if(_0x407819['active']){rpcDb['disableContact'](_0x370e6b);}_0x101510(_['pick'](_0x407819,[_0xc207('0x4e')]));});});};Preview['prototype'][_0xc207('0x11a')]=function(_0x36f913,_0x217a60){var _0x32b03f=this;return new BPromise(function(_0x2b3c50,_0x2fff10){var _0x896bba,_0x46dbdb;rpcDb[_0xc207('0x11b')](_0x36f913)['then'](function(_0x49a49c){if(!_[_0xc207('0x70')](_0x49a49c[0x0])){_0x46dbdb=_0x49a49c[0x0]['recallme']?![]:!![];_0x896bba=_0x49a49c[0x0][_0xc207('0x11c')]?!![]:![];_0x896bba=_0x217a60?!![]:_0x896bba;}var _0x4b9828=_0x32b03f[_0xc207('0x11d')](_0x49a49c);if(_0x4b9828[_0xc207('0x11e')]){rpcDb[_0xc207('0x11f')](_[_0xc207('0x77')](_0x49a49c[0x0],['VoiceQueueId','phone']))[_0xc207('0x86')](function(_0x391a3c){_0x32b03f['checkInBlack'](_0x391a3c,_0x49a49c[0x0],_0x217a60,_0x46dbdb,_0x896bba)[_0xc207('0x86')](function(_0x2158c8){_0x2b3c50(_0x2158c8);})[_0xc207('0x7b')](function(_0x51b38b){_0x2fff10(_0x51b38b);});})[_0xc207('0x7b')](function(_0x1a4916){ut[_0xc207('0x61')](_0xc207('0x120'),_0x1a4916);_0x2fff10(ut['message'](_0xc207('0x121'),_0x46dbdb,_0x896bba));});}else{_0x2fff10(ut[_0xc207('0x4e')](_0x4b9828[_0xc207('0x4e')],_0x46dbdb,_0x896bba));}})[_0xc207('0x7b')](function(_0x199b24){ut['logger'](_0xc207('0x122'),_0x199b24);_0x2fff10(ut[_0xc207('0x4e')](_0xc207('0x121'),![],!![]));});});};Preview[_0xc207('0xe')]['validateContact']=function(_0x31c419){if(_['isNil'](_0x31c419)||_[_0xc207('0x109')](_0x31c419)||!_[_0xc207('0x70')](_0x31c419[0x0]['Agent'])&&_[_0xc207('0x70')](_0x31c419[0x0][_0xc207('0x8a')][_0xc207('0x59')])){ut['logger'](_0xc207('0x123'),_0x31c419);return{'isValid':![],'message':_0xc207('0x124')};}var _0x5d7fb4=this['campaignsPreview'][_0x31c419[0x0]['Queue']['name']];_0x5d7fb4[_0xc207('0x4e')]=_0xc207('0x9d');if(_[_0xc207('0x70')](_0x5d7fb4)){ut['logger']('[Preview][validateContact][Empty\x20Campaign]',_0x5d7fb4);return{'isValid':![],'message':'Empty\x20Campaign'};}if(!this[_0xc207('0x9b')](_0x5d7fb4['Trunk'])){ut[_0xc207('0x61')](_0xc207('0x125'),_0xc207('0x126')+_0x5d7fb4['name']+_0xc207('0x127'));if(!this[_0xc207('0x9b')](_0x5d7fb4[_0xc207('0x128')])){ut[_0xc207('0x61')]('[Preview][validateContact][Trunk\x20not\x20working\x20correctly]',_0x5d7fb4[_0xc207('0x59')]+'\x20Trunk\x20Backup\x20is\x20not\x20active');return{'isValid':![],'message':'Trunk\x20not\x20working\x20correctly'};}}if(!ut[_0xc207('0x9a')](_0x5d7fb4[_0xc207('0x6b')])){ut[_0xc207('0x61')](_0xc207('0x129'),_0x5d7fb4[_0xc207('0x59')]+_0xc207('0x12a'));return{'isValid':![],'message':_0xc207('0x126')+_0x5d7fb4[_0xc207('0x59')]+_0xc207('0x12a')};}return{'isValid':!![],'message':'Is\x20Valid'};};Preview[_0xc207('0xe')]['execCall']=function(_0x4252c4,_0x50bfed,_0x18c08b,_0x444b35){var _0x121fd8=this;return new BPromise(function(_0x3334a2,_0x3a48c1){var _0x3be7b1=_0x4252c4[_0xc207('0xb5')];var _0x2d0941=_0x121fd8['isTrunkReachable'](_0x50bfed['Trunk'])?util[_0xc207('0x5b')]('SIP/%s/%s%s',_0x50bfed[_0xc207('0x55')]['name'],_[_0xc207('0x70')](_0x50bfed[_0xc207('0x35')])?'':_0x50bfed['dialPrefix'][_0xc207('0x12b')]()||'',_0x50bfed[_0xc207('0x12c')]>0x0?_0x18c08b['phone'][_0xc207('0x12d')](_0x50bfed[_0xc207('0x12c')]):_0x18c08b['phone']):util[_0xc207('0x5b')]('SIP/%s/%s%s',_[_0xc207('0x70')](_0x50bfed[_0xc207('0x128')])?_0x50bfed[_0xc207('0x55')]['name']:_0x50bfed[_0xc207('0x128')][_0xc207('0x59')],_[_0xc207('0x70')](_0x50bfed[_0xc207('0x35')])?'':_0x50bfed[_0xc207('0x35')]['trim']()||'',_0x50bfed[_0xc207('0x12c')]>0x0?_0x18c08b['phone'][_0xc207('0x12d')](_0x50bfed['dialCutDigit']):_0x18c08b[_0xc207('0x106')]);var _0x3ee952=_0x121fd8[_0xc207('0x9b')](_0x50bfed[_0xc207('0x55')])?ut[_0xc207('0x12e')](_0x50bfed['Trunk'][_0xc207('0x57')],_0x50bfed['dialOriginateCallerIdName'],_0x50bfed['dialRandomLastDigitCallerIdNumber']>0x0?ut['getCallerIdRandom'](_0x50bfed[_0xc207('0x12f')],_0x50bfed[_0xc207('0x130')]):_0x50bfed[_0xc207('0x12f')]):ut[_0xc207('0x12e')](_[_0xc207('0x70')](_0x50bfed[_0xc207('0x128')])?_0x50bfed['Trunk'][_0xc207('0x57')]:_0x50bfed[_0xc207('0x128')][_0xc207('0x57')],_0x50bfed[_0xc207('0x131')],_0x50bfed[_0xc207('0x130')]>0x0?ut[_0xc207('0x132')](_0x50bfed[_0xc207('0x12f')],_0x50bfed['dialRandomLastDigitCallerIdNumber']):_0x50bfed['dialOriginateCallerIdNumber']);if(_0x3ee952){_0x4252c4['originatecalleridname']=ut['extractCalleridName'](_0x3ee952);_0x4252c4[_0xc207('0x133')]=ut['extractCalleridNumber'](_0x3ee952);}var _0x1be191=ut['addVariables'](_0x50bfed,_0x18c08b,_0x2d0941,_0x3ee952,_0x3be7b1,_0x4252c4);_['merge'](_0x4252c4,ut[_0xc207('0x134')](_0x1be191));_0x4252c4['starttime']=moment()[_0xc207('0x5b')](_0xc207('0x90'));ami[_0xc207('0x135')](ut[_0xc207('0x136')](_0x4252c4,_0x50bfed,_0x1be191,_0x4252c4[_0xc207('0xae')],_0x444b35))[_0xc207('0x86')](function(_0x2dd537){_0x50bfed[_0xc207('0x4f')]+=0x1;logger['info'](_0xc207('0x137'),_0x3be7b1,_0xc207('0xb6'),_0x50bfed[_0xc207('0x59')],'originated:\x20',_0x50bfed[_0xc207('0x4f')]);_0x3334a2(_0x2dd537);})[_0xc207('0x7b')](function(_0x6f0d50){ut['logAgent'](_0x4252c4,0xe,_0xc207('0x138'));rpcDb[_0xc207('0xf9')](_0x4252c4,_0xc207('0x139'));_0x3a48c1(_0x6f0d50);});});};Preview[_0xc207('0xe')]['syncNewExten']=function(_0x2f1069){if(this['actions'][_0x2f1069[_0xc207('0xaf')]]){this[_0xc207('0x14')][_0x2f1069['linkedid']][_0xc207('0x7a')]=_0x2f1069[_0xc207('0x7a')];}};Preview[_0xc207('0xe')][_0xc207('0x17')]=function(_0x267ec0){var _0x3a1b5f=this;var _0xa49cc6=this[_0xc207('0x14')][_0x267ec0[_0xc207('0x13a')]];if(_0xa49cc6){if(_0xa49cc6['lookAgent']&&this[_0xc207('0x15')][_0xa49cc6['lookAgent']]){ut[_0xc207('0x13b')](_0xa49cc6,this[_0xc207('0x15')][_0xa49cc6[_0xc207('0x108')]][_0xc207('0x59')],this[_0xc207('0x15')][_0xa49cc6[_0xc207('0x108')]]['id']);}var _0x28193e=_[_0xc207('0x13c')](_0xa49cc6);_0x28193e[_0xc207('0xb3')]=moment()['format'](_0xc207('0x90'));var _0x2212a0=_0x3a1b5f[_0xc207('0x11')][_0xa49cc6[_0xc207('0x73')]];if(ut[_0xc207('0x13d')](_0x267ec0[_0xc207('0x13e')])){if(_0xa49cc6['unlockAgent']){rpcDb[_0xc207('0x13f')](_0xa49cc6[_0xc207('0xb1')]);}if(_0xa49cc6['activeContact']){rpcDb[_0xc207('0x8e')](_0xa49cc6[_0xc207('0xb1')]);}ami[_0xc207('0x23')](_0xc207('0x140'),ut[_0xc207('0xa2')](_0xa49cc6,_0xc207('0x141'),this[_0xc207('0x11')][_0xa49cc6['queue']]));this[_0xc207('0x142')](_0x28193e,_0x2212a0,_0x267ec0);}else{_0xa49cc6['starttime']=moment()[_0xc207('0x5b')]('YYYY-MM-DD\x20HH:mm:ss');ut['logAgent'](_0x28193e,0x4,_0xc207('0xbe'));rpcDb[_0xc207('0xf9')](_0x28193e,'[callProgressDetectingAgent][logAnswer]');}}};Preview['prototype']['syncHangup']=function(_0x5f4e49){var _0x501053=this;var _0x46ba65=this[_0xc207('0x14')][_0x5f4e49[_0xc207('0xaf')]];var _0x306201;if(_0x46ba65){_0x306201=this[_0xc207('0x11')][_0x46ba65[_0xc207('0x73')]];logger[_0xc207('0x5c')](_0xc207('0x143'),_0x5f4e49[_0xc207('0xaf')],_0xc207('0xb6'),_0x306201['name'],_0xc207('0x75'),_0x306201[_0xc207('0x29')]);}if(this[_0xc207('0x14')][_0x5f4e49[_0xc207('0xaf')]]&&_0x5f4e49['linkedid']!==_0x5f4e49['uniqueid']){if(_0x5f4e49[_0xc207('0x144')]==='16'&&this[_0xc207('0x14')][_0x5f4e49[_0xc207('0xaf')]][_0xc207('0x76')]){this[_0xc207('0x9e')](_0x5f4e49,_0x5f4e49[_0xc207('0xaf')],_0x5f4e49[_0xc207('0x144')]);}else if(this[_0xc207('0x14')][_0x5f4e49[_0xc207('0xaf')]][_0xc207('0x76')]){logger[_0xc207('0x5c')](_0xc207('0x145'),_0x5f4e49['linkedid'],_0x5f4e49[_0xc207('0x144')],_0xc207('0xb6'),_0x306201[_0xc207('0x59')],'pTalking:\x20',_0x306201[_0xc207('0x29')]);this[_0xc207('0x9e')](_0x5f4e49,_0x5f4e49['linkedid'],_0x5f4e49['cause']);}}else if(_0x46ba65&&_[_0xc207('0x70')](_0x46ba65[_0xc207('0x146')])&&_0x306201[_0xc207('0x147')]&&_0x5f4e49[_0xc207('0xaf')]===_0x5f4e49[_0xc207('0xb5')]&&_[_0xc207('0x70')](_0x5f4e49[_0xc207('0xf6')])&&_0x5f4e49['cause']==='16'&&_0x5f4e49[_0xc207('0x148')]==='6'&&_['isUndefined'](_0x46ba65[_0xc207('0x149')])){if(_0x46ba65[_0xc207('0xad')]){rpcDb[_0xc207('0x13f')](_0x46ba65[_0xc207('0xb1')]);}if(_0x46ba65[_0xc207('0xae')]){rpcDb['disableContact'](_0x46ba65[_0xc207('0xb1')]);}_0x5f4e49['reason']='22';this[_0xc207('0x142')](_0x46ba65,_0x306201,_0x5f4e49);}else if(_0x46ba65&&_0x46ba65[_0xc207('0x149')]){if(_0x5f4e49[_0xc207('0x144')]==='16'&&this['actions'][_0x5f4e49['linkedid']][_0xc207('0x76')]){logger[_0xc207('0x5c')](_0xc207('0x14a'),_0x5f4e49[_0xc207('0xaf')],_0x5f4e49['cause'],_0xc207('0xb6'),_0x306201[_0xc207('0x59')],_0xc207('0x75'),_0x306201[_0xc207('0x29')]);this[_0xc207('0x9e')](_0x5f4e49,_0x5f4e49[_0xc207('0xaf')],_0x5f4e49[_0xc207('0x144')]);}else if(this[_0xc207('0x14')][_0x5f4e49[_0xc207('0xaf')]][_0xc207('0x76')]){logger[_0xc207('0x5c')]('[syncHangup][talking][cause]',_0x5f4e49[_0xc207('0xaf')],_0x5f4e49[_0xc207('0x144')],_0xc207('0xb6'),_0x306201[_0xc207('0x59')],_0xc207('0x75'),_0x306201['pTalking']);this[_0xc207('0x9e')](_0x5f4e49,_0x5f4e49['linkedid'],_0x5f4e49[_0xc207('0x144')]);}}};Preview[_0xc207('0xe')][_0xc207('0x1c')]=function(_0x1009a8){if(this[_0xc207('0x14')][_0x1009a8[_0xc207('0xf3')]]&&_0x1009a8['destlinkedid']!==_0x1009a8[_0xc207('0x14b')]){this[_0xc207('0x9e')](_0x1009a8,_0x1009a8['destlinkedid'],_0x1009a8[_0xc207('0xe8')]);}};Preview[_0xc207('0xe')][_0xc207('0x14c')]=function(_0x3b3045){if(this[_0xc207('0x14')][_0x3b3045[_0xc207('0xaf')]]&&_0x3b3045[_0xc207('0xaf')]!==_0x3b3045[_0xc207('0xb5')]&&!this[_0xc207('0x14')][_0x3b3045[_0xc207('0xaf')]][_0xc207('0x76')]){if(_0x3b3045[_0xc207('0x144')]==='1'){this[_0xc207('0x9e')](_0x3b3045,_0x3b3045['linkedid'],_0x3b3045[_0xc207('0x144')]);}}};Preview[_0xc207('0xe')]['addVariable']=function(_0x31e461,_0x31e79a,_0x65304b){if(this[_0xc207('0x14')][_0x31e461]){if(_[_0xc207('0x70')](this['actions'][_0x31e461][_0xc207('0x14d')])){this['actions'][_0x31e461][_0xc207('0x14d')]={};}this[_0xc207('0x14')][_0x31e461]['variables'][_0x31e79a]=_0x65304b;}};Preview[_0xc207('0xe')]['syncVarSet']=function(_0x383360){try{if(!_['isNil'](_0x383360)){if(ut[_0xc207('0x14e')](_[_0xc207('0x14f')](_0x383360[_0xc207('0x150')])[0x0])){this[_0xc207('0x151')](_0x383360[_0xc207('0xb5')],_[_0xc207('0x14f')](_0x383360[_0xc207('0x150')])[0x0],_0x383360[_0xc207('0x152')]);}}}catch(_0x4f3dc3){logger[_0xc207('0x153')](_0xc207('0x154'),util[_0xc207('0x155')](_0x4f3dc3,{'showHidden':![],'depth':null}));}};Preview[_0xc207('0xe')][_0xc207('0x1f')]=function(_0x478c39){if(_0x478c39){if(this[_0xc207('0x14')][_0x478c39[_0xc207('0x156')]]){this['actions'][_0x478c39[_0xc207('0x156')]][_0xc207('0x149')]=!![];}}};Preview[_0xc207('0xe')][_0xc207('0x21')]=function(_0x172161){if(_0x172161){if(this[_0xc207('0x14')][_0x172161[_0xc207('0x157')]]){this[_0xc207('0x14')][_0x172161[_0xc207('0x157')]][_0xc207('0x149')]=!![];}}};module['exports']=Preview;
\ No newline at end of file
index d9e3a13..c62917d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b42=['holdtime','lastAssignedTo','queuecallerexitreason','COMPLETED','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','bluebird','../../../config/logger','preview','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport','inspect','resolve','catch','[createHistory]\x20','then','createHistory','moveContactManagedDialer','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerFinal','rescheduleContact','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','disableContact','[activeContact]\x20','uniqueid','calleridnum','queue','queuecallerjoinAt','answertime','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt','endtime','connectedlinename','membername','context','from-sip','exten'];(function(_0x5f6d63,_0x143cfb){var _0x5d370c=function(_0x49018b){while(--_0x49018b){_0x5f6d63['push'](_0x5f6d63['shift']());}};_0x5d370c(++_0x143cfb);}(_0x0b42,0x11c));var _0x20b4=function(_0x1100e4,_0x376999){_0x1100e4=_0x1100e4-0x0;var _0x488cca=_0x0b42[_0x1100e4];return _0x488cca;};'use strict';var util=require(_0x20b4('0x0'));var BPromise=require(_0x20b4('0x1'));var logger=require(_0x20b4('0x2'))(_0x20b4('0x3'));var _=require('lodash');var cmHopper=require(_0x20b4('0x4'));var cmHopperFinal=require('../rpc/cmHopperFinal');var cmHopperHistory=require(_0x20b4('0x5'));var cmHopperBlack=require(_0x20b4('0x6'));var voiceQueueRt=require(_0x20b4('0x7'));var agentReportPreview=require(_0x20b4('0x8'));var voiceQueueReport=require(_0x20b4('0x9'));function loggerCatch(_0x555087){return function(_0x47a502){logger['error'](_0x555087,util[_0x20b4('0xa')](_0x47a502,{'showHidden':![],'depth':null}));};}function create(_0x505f6b){return BPromise[_0x20b4('0xb')]()['then'](cmHopperHistory['createHistory'](_0x505f6b))[_0x20b4('0xc')](loggerCatch(_0x20b4('0xd')));}function createAgent(_0x54781f){return BPromise[_0x20b4('0xb')]()[_0x20b4('0xe')](agentReportPreview[_0x20b4('0xf')](_0x54781f))['catch'](loggerCatch(_0x20b4('0xd')));}function moveContact(_0x2896ea){return BPromise[_0x20b4('0xb')]()[_0x20b4('0xe')](cmHopper[_0x20b4('0x10')](_0x2896ea,!![]))[_0x20b4('0xc')](loggerCatch('[moveContactManagedDialer]\x20'));}exports[_0x20b4('0x11')]=function(_0x2f64e4){return BPromise['resolve']()[_0x20b4('0xe')](cmHopperBlack['checkIsBlackList'](_0x2f64e4))['catch'](loggerCatch(_0x20b4('0x12')));};exports[_0x20b4('0x13')]=function(_0x1e2d2f){return BPromise[_0x20b4('0xb')]()[_0x20b4('0xe')](cmHopper[_0x20b4('0x13')](_0x1e2d2f))[_0x20b4('0xc')](loggerCatch(_0x20b4('0x14')));};exports[_0x20b4('0xf')]=function(_0x4d26f2,_0x4d330c){create(_0x4d26f2)[_0x20b4('0xc')](loggerCatch(_0x4d330c));moveContact(_0x4d26f2)[_0x20b4('0xc')](loggerCatch(_0x4d330c));};exports[_0x20b4('0x15')]=function(_0x446100,_0x3802c0){createAgent(_0x446100)[_0x20b4('0xc')](loggerCatch(_0x3802c0));};exports['createCustomerHistory']=function(_0x5e2535,_0x4fc3e9){create(_0x5e2535)[_0x20b4('0xc')](loggerCatch(_0x4fc3e9));};exports[_0x20b4('0x16')]=function(_0x3296b8,_0x3066ba){moveContact(_0x3296b8)[_0x20b4('0xc')](loggerCatch(_0x3066ba));};exports[_0x20b4('0x17')]=function(_0x2800f8,_0xcc7cf6,_0x4c2cd8){if(_0xcc7cf6){_0x2800f8['UserId']=null;}if(_0x4c2cd8){_0x2800f8[_0x20b4('0x18')]=![];}return BPromise[_0x20b4('0xb')]()[_0x20b4('0xe')](cmHopper[_0x20b4('0x17')](_0x2800f8))[_0x20b4('0xc')](loggerCatch(_0x20b4('0x19')));};exports[_0x20b4('0x1a')]=function(_0x53e26a){return BPromise[_0x20b4('0xb')]()[_0x20b4('0xe')](cmHopper[_0x20b4('0x1a')](_0x53e26a))[_0x20b4('0xc')](loggerCatch(_0x20b4('0x1b')));};exports[_0x20b4('0x1c')]=function(_0x16511a){return BPromise['resolve']()[_0x20b4('0xe')](cmHopper[_0x20b4('0x1c')]({'UserId':null},_0x16511a,0x1))[_0x20b4('0xc')](loggerCatch(_0x20b4('0x1d')));};exports[_0x20b4('0x1e')]=function(_0x388351){return BPromise['resolve']()['then'](cmHopper[_0x20b4('0x1c')]({'active':![]},_0x388351,0x1))[_0x20b4('0xc')](loggerCatch(_0x20b4('0x1f')));};exports['crateCustomerReportQueue']=function(_0xab4262){var _0x1a2cd5={};_0x1a2cd5['type']=_0xab4262['type'];_0x1a2cd5['uniqueid']=_0xab4262[_0x20b4('0x20')];_0x1a2cd5['calleridnum']=_0xab4262[_0x20b4('0x21')];_0x1a2cd5['calleridname']=_0xab4262['calleridname'];_0x1a2cd5[_0x20b4('0x22')]=_0xab4262[_0x20b4('0x22')];_0x1a2cd5[_0x20b4('0x23')]=_0xab4262[_0x20b4('0x24')];_0x1a2cd5[_0x20b4('0x25')]=_0xab4262[_0x20b4('0x24')];_0x1a2cd5[_0x20b4('0x26')]=0x1;_0x1a2cd5[_0x20b4('0x27')]=_0xab4262[_0x20b4('0x28')];_0x1a2cd5[_0x20b4('0x29')]=_0xab4262[_0x20b4('0x2a')];_0x1a2cd5[_0x20b4('0x2b')]=_0x20b4('0x2c');_0x1a2cd5[_0x20b4('0x2d')]='xcally-motion-preview';_0x1a2cd5[_0x20b4('0x2e')]=0x0;_0x1a2cd5['assigned']=0x1;_0x1a2cd5[_0x20b4('0x2f')]=_0xab4262[_0x20b4('0x2a')];_0x1a2cd5[_0x20b4('0x30')]=_0x20b4('0x31');return BPromise['resolve']()['then'](voiceQueueReport['create'](_0x1a2cd5))['catch'](loggerCatch(_0x20b4('0x32')));};exports[_0x20b4('0x33')]=function(_0xa0ae65,_0x3101f8){return BPromise[_0x20b4('0xb')]()[_0x20b4('0xe')](cmHopper[_0x20b4('0x33')](_0xa0ae65,_0x3101f8))['catch'](loggerCatch(_0x20b4('0x34')));};exports[_0x20b4('0x35')]=function(_0x2d989c){return BPromise[_0x20b4('0xb')]()[_0x20b4('0xe')](cmHopper[_0x20b4('0x17')](_0x2d989c,!![],!![]))[_0x20b4('0xc')](loggerCatch(_0x20b4('0x36')));};
\ No newline at end of file
+var _0x3110=['catch','[createHistory]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','getContactPreview','[getContactPreview]\x20','createHistory','createAgentHistory','createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','active','countReScheduled','[countReScheduled]\x20','[unlockContact]\x20','disableContact','unlockContact','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','answertime','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt','endtime','connectedlinename','membername','context','exten','xcally-motion-preview','holdtime','assigned','lastAssignedTo','queuecallerexitreason','create','getContactRecallMe','[GetContactRecallMe]\x20','../../../config/logger','preview','lodash','../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport','inspect','resolve','then'];(function(_0x55b36e,_0x3f17b8){var _0x31b9d0=function(_0x12575e){while(--_0x12575e){_0x55b36e['push'](_0x55b36e['shift']());}};_0x31b9d0(++_0x3f17b8);}(_0x3110,0xc3));var _0x0311=function(_0x171576,_0x2b5523){_0x171576=_0x171576-0x0;var _0x579629=_0x3110[_0x171576];return _0x579629;};'use strict';var util=require('util');var BPromise=require('bluebird');var logger=require(_0x0311('0x0'))(_0x0311('0x1'));var _=require(_0x0311('0x2'));var cmHopper=require('../rpc/cmHopper');var cmHopperFinal=require('../rpc/cmHopperFinal');var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0x0311('0x3'));var agentReportPreview=require(_0x0311('0x4'));var voiceQueueReport=require(_0x0311('0x5'));function loggerCatch(_0x371f69){return function(_0x44642d){logger['error'](_0x371f69,util[_0x0311('0x6')](_0x44642d,{'showHidden':![],'depth':null}));};}function create(_0x3f92d3){return BPromise[_0x0311('0x7')]()[_0x0311('0x8')](cmHopperHistory['createHistory'](_0x3f92d3))[_0x0311('0x9')](loggerCatch(_0x0311('0xa')));}function createAgent(_0x8e48f1){return BPromise[_0x0311('0x7')]()[_0x0311('0x8')](agentReportPreview['createHistory'](_0x8e48f1))[_0x0311('0x9')](loggerCatch('[createHistory]\x20'));}function moveContact(_0x49887a){return BPromise[_0x0311('0x7')]()[_0x0311('0x8')](cmHopper[_0x0311('0xb')](_0x49887a,!![]))['catch'](loggerCatch(_0x0311('0xc')));}exports[_0x0311('0xd')]=function(_0x298b9f){return BPromise[_0x0311('0x7')]()['then'](cmHopperBlack[_0x0311('0xd')](_0x298b9f))[_0x0311('0x9')](loggerCatch('[checkIsBlackList]\x20'));};exports['getContactPreview']=function(_0xc5c6c4){return BPromise[_0x0311('0x7')]()[_0x0311('0x8')](cmHopper[_0x0311('0xe')](_0xc5c6c4))[_0x0311('0x9')](loggerCatch(_0x0311('0xf')));};exports[_0x0311('0x10')]=function(_0x522c2c,_0x30a193){create(_0x522c2c)[_0x0311('0x9')](loggerCatch(_0x30a193));moveContact(_0x522c2c)[_0x0311('0x9')](loggerCatch(_0x30a193));};exports[_0x0311('0x11')]=function(_0x10da5d,_0x264a37){createAgent(_0x10da5d)[_0x0311('0x9')](loggerCatch(_0x264a37));};exports[_0x0311('0x12')]=function(_0x356190,_0xea05a6){create(_0x356190)[_0x0311('0x9')](loggerCatch(_0xea05a6));};exports[_0x0311('0x13')]=function(_0x2d7563,_0x57541c){moveContact(_0x2d7563)['catch'](loggerCatch(_0x57541c));};exports[_0x0311('0x14')]=function(_0x1c53ff,_0x118c89,_0x397b6f){if(_0x118c89){_0x1c53ff[_0x0311('0x15')]=null;}if(_0x397b6f){_0x1c53ff[_0x0311('0x16')]=![];}return BPromise[_0x0311('0x7')]()[_0x0311('0x8')](cmHopper[_0x0311('0x14')](_0x1c53ff))[_0x0311('0x9')](loggerCatch('[rescheduleContact]\x20'));};exports[_0x0311('0x17')]=function(_0x48ac5c){return BPromise[_0x0311('0x7')]()[_0x0311('0x8')](cmHopper[_0x0311('0x17')](_0x48ac5c))[_0x0311('0x9')](loggerCatch(_0x0311('0x18')));};exports['unlockContact']=function(_0x121e14){return BPromise[_0x0311('0x7')]()['then'](cmHopper['unlockContact']({'UserId':null},_0x121e14,0x1))[_0x0311('0x9')](loggerCatch(_0x0311('0x19')));};exports[_0x0311('0x1a')]=function(_0x516026){return BPromise['resolve']()[_0x0311('0x8')](cmHopper[_0x0311('0x1b')]({'active':![]},_0x516026,0x1))[_0x0311('0x9')](loggerCatch('[activeContact]\x20'));};exports[_0x0311('0x1c')]=function(_0x4e05f1){var _0x37faa3={};_0x37faa3['type']=_0x4e05f1[_0x0311('0x1d')];_0x37faa3[_0x0311('0x1e')]=_0x4e05f1['uniqueid'];_0x37faa3[_0x0311('0x1f')]=_0x4e05f1[_0x0311('0x1f')];_0x37faa3[_0x0311('0x20')]=_0x4e05f1[_0x0311('0x20')];_0x37faa3['queue']=_0x4e05f1[_0x0311('0x21')];_0x37faa3['queuecallerjoinAt']=_0x4e05f1[_0x0311('0x22')];_0x37faa3[_0x0311('0x23')]=_0x4e05f1['answertime'];_0x37faa3[_0x0311('0x24')]=0x1;_0x37faa3[_0x0311('0x25')]=_0x4e05f1[_0x0311('0x26')];_0x37faa3[_0x0311('0x27')]=_0x4e05f1[_0x0311('0x28')];_0x37faa3[_0x0311('0x29')]='from-sip';_0x37faa3[_0x0311('0x2a')]=_0x0311('0x2b');_0x37faa3[_0x0311('0x2c')]=0x0;_0x37faa3[_0x0311('0x2d')]=0x1;_0x37faa3[_0x0311('0x2e')]=_0x4e05f1['membername'];_0x37faa3[_0x0311('0x2f')]='COMPLETED';return BPromise[_0x0311('0x7')]()['then'](voiceQueueReport[_0x0311('0x30')](_0x37faa3))['catch'](loggerCatch('[voiceQueueReport]\x20'));};exports[_0x0311('0x31')]=function(_0x250fb7,_0x59a942){return BPromise[_0x0311('0x7')]()[_0x0311('0x8')](cmHopper['getContactRecallMe'](_0x250fb7,_0x59a942))[_0x0311('0x9')](loggerCatch(_0x0311('0x32')));};exports['rescheduleContactInQueue']=function(_0x3cea26){return BPromise['resolve']()[_0x0311('0x8')](cmHopper[_0x0311('0x14')](_0x3cea26,!![],!![]))[_0x0311('0x9')](loggerCatch('[rescheduleContactInQueue]\x20'));};
\ No newline at end of file
index cc27036..43a6e1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bb4=['milliseconds','diff','seconds','loggerCatch','inspect','loggerError','logger2','info','message','getCallerId','string','isEmpty','isUndefined','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isActive','isNil','addVariables','Queue','name','calleridname','calleridnum','dialer','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','originatecalleridname','xcally-motion-preview','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','createdAt','updatedAt','%s%s','XMD-','toUpper','toLower','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','error','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','Blacklist','starttime','endtime','logAgent','statedesc','ringtime','responsetime','logLookAgent','membername','UserId','logCustomer','talktime','answertime','isFailure','Failure','variablesAction','BOOKED','uniqueid','from-sip','timeout','totalGlobal','countbusyretry','countcongestionretry','countnoanswerretry','cloneAction','clone','Global','scheduledAt','scheduledat','add','minutes','ContactId','ListId','pTalking','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','buildObj','lastevent','interface','channelAgent','motionChannel','voice','mandatoryDisposition','buildAcw','queue','push','getDiff','createBody','CampaignId','filterKey','idContact','type','dialAnswer','countglobal','callback','callbackuniqueid','callbackat','recallme','sipcallid','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','rtpaudioqosrtt','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','replace','extractCalleridName','extractCalleridNumber','util','moment','preview','127.0.0.1'];(function(_0x55e711,_0x12b5a0){var _0x512b74=function(_0x2c1c66){while(--_0x2c1c66){_0x55e711['push'](_0x55e711['shift']());}};_0x512b74(++_0x12b5a0);}(_0x0bb4,0x8c));var _0x40bb=function(_0x5f3946,_0x2dad79){_0x5f3946=_0x5f3946-0x0;var _0x5b7d93=_0x0bb4[_0x5f3946];return _0x5b7d93;};'use strict';var util=require(_0x40bb('0x0'));var _=require('lodash');var moment=require(_0x40bb('0x1'));var logger=require('../../../../config/logger')(_0x40bb('0x2'));var ipAgi=process['env']['XCALLY_IP_AGI']||_0x40bb('0x3');function getSeconds(_0x31c170,_0x103f18){var _0xbb7689=moment(_0x31c170)[_0x40bb('0x4')](0x0);var _0x134ec8=moment(_0x103f18)[_0x40bb('0x4')](0x0);return _0xbb7689[_0x40bb('0x5')](_0x134ec8,_0x40bb('0x6'));}exports[_0x40bb('0x7')]=function(_0x710fc3){return function(_0x36aa08){logger['error'](_0x710fc3,util[_0x40bb('0x8')](_0x36aa08,{'showHidden':![],'depth':null}));};};exports['logger']=function(_0x362394,_0x5a1878){logger['info'](_0x362394,util[_0x40bb('0x8')](_0x5a1878,{'showHidden':![],'depth':null}));};exports[_0x40bb('0x9')]=function(_0x8f28ad,_0x404639){logger['error'](_0x8f28ad,util[_0x40bb('0x8')](_0x404639,{'showHidden':![],'depth':null}));};exports[_0x40bb('0xa')]=function(_0x4fd1b2){return function(_0x2604e3){logger[_0x40bb('0xb')](_0x4fd1b2,util['inspect'](_0x2604e3,{'showHidden':![],'depth':null}));};};exports[_0x40bb('0xc')]=function(_0x1c04a1,_0x76915b,_0x15c368){return{'message':_0x1c04a1,'unlock':_0x76915b,'active':_0x15c368};};exports[_0x40bb('0xd')]=function(_0x56e084,_0x225415,_0x5c259a){if(!_['isUndefined'](_0x5c259a)&&_0x40bb('0xe')===typeof _0x5c259a&&!_[_0x40bb('0xf')](_0x5c259a)){if(!_[_0x40bb('0x10')](_0x225415)&&_0x40bb('0xe')===typeof _0x225415&&!_['isEmpty'](_0x225415)){return util[_0x40bb('0x11')](_0x40bb('0x12'),_0x225415,_0x5c259a);}return util['format'](_0x40bb('0x12'),_0x5c259a,_0x5c259a);}if(!_[_0x40bb('0x10')](_0x56e084)&&_0x40bb('0xe')===typeof _0x56e084&&!_[_0x40bb('0xf')](_0x56e084)){return _0x56e084;}return _0x40bb('0x13');};exports[_0x40bb('0x14')]=function(_0x3c4819){if(_[_0x40bb('0x15')](_0x3c4819)){return![];}return _0x3c4819;};exports[_0x40bb('0x16')]=function(_0x42ebf8,_0x48aa41,_0x5754cb,_0x57b6aa,_0x19c41e,_0x387a2f){var _0x5ee20d={'XMD-QUEUE':_0x48aa41['Queue']?_0x48aa41[_0x40bb('0x17')][_0x40bb('0x18')]:'','XMD-CALLERID':_0x57b6aa,'XMD-CALLERID-PREVIEW':_0x387a2f?util['format'](_0x40bb('0x12'),_0x387a2f[_0x40bb('0x19')],_0x387a2f[_0x40bb('0x1a')]):_0x57b6aa,'XMD-DIALID':_0x19c41e,'XMD-CONTACTID':_0x48aa41['ContactId'],'XMD-CDRTYPE':_0x40bb('0x1b'),'CALLERID(all)':_0x57b6aa,'XMD-VOICEQUEUEID':_0x48aa41[_0x40bb('0x1c')],'XMD-DIALCHANNEL':_0x5754cb,'XMD-DIALTIMEOUT':_0x42ebf8[_0x40bb('0x1d')]||0x1e,'XMD-DIALOPTIONS':util[_0x40bb('0x11')](_0x40bb('0x1e'),_0x42ebf8[_0x40bb('0x1f')]?'g':'',_[_0x40bb('0xf')](_0x42ebf8[_0x40bb('0x20')])?'':_0x40bb('0x21')),'XMD-DIALURL':_0x42ebf8['dialPreviewUrl']||'','XMD-AGI':_0x42ebf8[_0x40bb('0x22')]?util[_0x40bb('0x11')](_0x40bb('0x23'),ipAgi,_0x42ebf8[_0x40bb('0x22')]):_0x40bb('0x24'),'XMD-AGIAFTER':_0x42ebf8[_0x40bb('0x1f')]?util[_0x40bb('0x11')](_0x40bb('0x23'),ipAgi,_0x42ebf8[_0x40bb('0x1f')]):_0x40bb('0x24'),'XMD-ORIGINATECALLERIDNUM':_0x387a2f?_0x387a2f[_0x40bb('0x25')]:'','XMD-ORIGINATECALLERIDNAME':_0x387a2f?_0x387a2f[_0x40bb('0x26')]:'','XMD-DESTINATION':_0x40bb('0x27'),'SIPADDHEADER':'Call-Type:\x20PREVIEW'};if(!_[_0x40bb('0xf')](_0x42ebf8[_0x40bb('0x20')])){_0x5ee20d[util[_0x40bb('0x11')]('%s',_0x40bb('0x28'))]=_0x42ebf8[_0x40bb('0x20')];_0x5ee20d[util['format']('%s',_0x40bb('0x29'))]=_0x19c41e;}if(_0x48aa41&&_0x48aa41[_0x40bb('0x2a')]){for(var _0x2f04fd in _0x48aa41[_0x40bb('0x2a')]){if(_0x48aa41['Contact'][_0x40bb('0x2b')](_0x2f04fd)){if(!_[_0x40bb('0x15')](_0x48aa41[_0x40bb('0x2a')][_0x2f04fd])&&_0x2f04fd!=='id'&&_0x2f04fd!=='tags'&&_0x2f04fd!==_0x40bb('0x2c')&&_0x2f04fd!==_0x40bb('0x2d')){_0x5ee20d[util[_0x40bb('0x11')](_0x40bb('0x2e'),_0x40bb('0x2f'),_[_0x40bb('0x30')](_0x2f04fd))]=_0x48aa41[_0x40bb('0x2a')][_0x2f04fd];}}}}return _0x5ee20d;};exports['toLowerVariables']=function(_0x20ba2c){var _0x26c116={};for(var _0x2adfab in _0x20ba2c){if(_0x20ba2c[_0x40bb('0x2b')](_0x2adfab)){_0x26c116[util['format']('%s',_[_0x40bb('0x31')](_0x2adfab))]=_0x20ba2c[_0x2adfab];}}return{'variables':_0x26c116};};exports[_0x40bb('0x32')]=function(_0xd02e81,_0x17cae8){if(!_[_0x40bb('0x15')](_0xd02e81)){if(_0xd02e81[_0x40bb('0x2b')]('originated')){if(_0xd02e81[_0x40bb('0x33')]>0x0){_0xd02e81[_0x40bb('0x33')]-=0x1;}else{logger['error'](_0x40bb('0x34'),_0x17cae8);}}}else{logger[_0x40bb('0x35')](_0x40bb('0x36'),_0x17cae8);}};exports[_0x40bb('0x37')]=function(_0x478bf5){var _0x43d54a=moment()[_0x40bb('0x11')](_0x40bb('0x38'));_0x478bf5[_0x40bb('0x39')]=0xd;_0x478bf5['statedesc']=_0x40bb('0x3a');_0x478bf5[_0x40bb('0x3b')]=_0x43d54a;_0x478bf5['responsetime']=_0x43d54a;_0x478bf5[_0x40bb('0x3c')]=_0x43d54a;};exports[_0x40bb('0x3d')]=function(_0x49607e,_0x51c935,_0xa88cd8){var _0x280a13=moment()[_0x40bb('0x11')](_0x40bb('0x38'));_0x49607e[_0x40bb('0x39')]=_0x51c935;_0x49607e[_0x40bb('0x3e')]=_0xa88cd8;_0x49607e['responsetime']=_0x280a13;_0x49607e[_0x40bb('0x3f')]=getSeconds(_0x49607e[_0x40bb('0x40')],_0x49607e[_0x40bb('0x3b')]);};exports[_0x40bb('0x41')]=function(_0x22198c,_0x2713f9,_0x33cbfb){_0x22198c[_0x40bb('0x42')]=_0x2713f9;_0x22198c[_0x40bb('0x43')]=_0x33cbfb;};exports[_0x40bb('0x44')]=function(_0x20c7be,_0x5952ea,_0x2b57b1){var _0x54faf8=moment()[_0x40bb('0x11')](_0x40bb('0x38'));_0x20c7be[_0x40bb('0x39')]=_0x5952ea;_0x20c7be[_0x40bb('0x3e')]=_0x2b57b1;_0x20c7be[_0x40bb('0x40')]=_0x20c7be[_0x40bb('0x40')]?_0x20c7be[_0x40bb('0x40')]:_0x54faf8;_0x20c7be['endtime']=_0x20c7be[_0x40bb('0x3c')]?_0x20c7be[_0x40bb('0x3c')]:_0x54faf8;_0x20c7be[_0x40bb('0x3f')]=getSeconds(_0x20c7be['responsetime']||0x0,_0x20c7be[_0x40bb('0x3b')]||0x0);_0x20c7be[_0x40bb('0x45')]=_0x20c7be[_0x40bb('0x46')]?getSeconds(_0x20c7be[_0x40bb('0x3c')],_0x20c7be['answertime']):0x0;};exports[_0x40bb('0x47')]=function(_0x172e1a){return _0x172e1a===_0x40bb('0x48');};exports[_0x40bb('0x49')]=function(_0x506e13,_0x67abb6,_0x2a60f7,_0x62e198,_0x3af129){var _0x30bffd=_0x62e198?'RECALL':_0x506e13[_0x40bb('0x19')];_0x30bffd=_0x3af129?_0x40bb('0x4a'):_0x30bffd;return{'actionid':_0x506e13[_0x40bb('0x4b')],'action':'originate','channel':_0x506e13['channelAgent'],'callerid':util['format']('\x22%s\x22\x20<%s>',_0x30bffd,_0x506e13[_0x40bb('0x1a')]),'Exten':_0x40bb('0x27'),'Context':_0x40bb('0x4c'),'Priority':'1','variable':_0x2a60f7,'timeout':(_0x67abb6[_0x40bb('0x4d')]||0x1e)*0x3e8,'async':!![],'channelid':_0x506e13['uniqueid']};};exports[_0x40bb('0x4e')]=function(_0x1954c8){return _0x1954c8[_0x40bb('0x4f')]+_0x1954c8[_0x40bb('0x50')]+_0x1954c8[_0x40bb('0x51')]+_0x1954c8['countagentrejectretry']+_0x1954c8['countnosuchnumberretry'];};exports[_0x40bb('0x52')]=function(_0xa69dd9){var _0x3c4080=_[_0x40bb('0x53')](_0xa69dd9);_0x3c4080[_0x40bb('0x39')]=0xf;_0x3c4080[_0x40bb('0x3e')]=_0x40bb('0x54');return _0x3c4080;};exports[_0x40bb('0x55')]=function(_0x49d1d7,_0xa315a,_0x2f4bce){var _0x3dbdbb={};_0x3dbdbb[_0xa315a]=_0x49d1d7[_0xa315a];_0x3dbdbb['active']=![];_0x3dbdbb[_0x40bb('0x56')]=moment()[_0x40bb('0x57')](_0x2f4bce,_0x40bb('0x58'))[_0x40bb('0x11')]('YYYY-MM-DD\x20HH:mm:ss');_0x3dbdbb['ContactId']=_0x49d1d7[_0x40bb('0x59')];_0x3dbdbb[_0x40bb('0x5a')]=_0x49d1d7[_0x40bb('0x5a')];_0x3dbdbb[_0x40bb('0x1c')]=_0x49d1d7[_0x40bb('0x1c')]||undefined;return _0x3dbdbb;};exports['decrementTalkink']=function(_0x10545f,_0x40cacb){if(!_[_0x40bb('0x15')](_0x10545f)){if(_0x10545f[_0x40bb('0x5b')]>0x0){_0x10545f[_0x40bb('0x5b')]-=0x1;}else{logger['error'](_0x40cacb,'[decrementTalkink]\x20object\x20talking\x20is\x20negative');}}else{logger[_0x40bb('0x35')](_0x40cacb,_0x40bb('0x5c'));}};exports[_0x40bb('0x5d')]=function(_0x13d8b1){if(_0x13d8b1<=0x0){return!![];}return![];};exports[_0x40bb('0x5e')]=function(_0x3d4673,_0x5bfb10,_0x43a86){_0x3d4673[_0x40bb('0x5f')]=_0x5bfb10;_0x3d4673[_0x40bb('0x18')]=_0x3d4673['queue'];_0x3d4673[_0x40bb('0x60')]=_0x3d4673[_0x40bb('0x61')];_0x3d4673[_0x40bb('0x62')]=_0x40bb('0x63');if(_0x43a86){_0x3d4673['mandatoryDisposition']=_0x43a86[_0x40bb('0x64')];}return _0x3d4673;};exports[_0x40bb('0x65')]=function(_0x2b3295){var _0x1ceb3b={};_0x1ceb3b['queue']=_0x2b3295[_0x40bb('0x66')];_0x1ceb3b[_0x40bb('0x60')]=_0x2b3295[_0x40bb('0x61')];_0x1ceb3b[_0x40bb('0x4b')]=_0x2b3295[_0x40bb('0x4b')];return _0x1ceb3b;};exports['agentReadyId']=function(_0x5da722){var _0x4581b8=[];for(var _0x48f696 in _0x5da722){if(_0x5da722['hasOwnProperty'](_0x48f696)){if(!_[_0x40bb('0x15')](_0x5da722[_0x48f696])&&_0x5da722[_0x48f696][_0x40bb('0x39')]==='not_inuse'&&_0x5da722[_0x48f696]['status']==='reachable'){_0x4581b8[_0x40bb('0x67')](_0x5da722[_0x48f696]['id']);}}}return _0x4581b8;};exports[_0x40bb('0x68')]=function(_0x1e1028){var _0x225b76=moment()[_0x40bb('0x4')](0x0);var _0xf3e58=moment(_0x1e1028)[_0x40bb('0x4')](0x0);return _0x225b76['diff'](_0xf3e58,_0x40bb('0x6'));};exports[_0x40bb('0x69')]=function(_0x204634){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x204634[_0x40bb('0x59')],'ListId':_0x204634[_0x40bb('0x5a')],'VoiceQueueId':_0x204634[_0x40bb('0x1c')]||undefined,'CampaignId':_0x204634[_0x40bb('0x6a')]||undefined};};exports[_0x40bb('0x6b')]=function(_0x45d996){if(_0x45d996==='uniqueid'||_0x45d996===_0x40bb('0x6c')||_0x45d996===_0x40bb('0x66')||_0x45d996===_0x40bb('0x6d')||_0x45d996==='campaigntype'||_0x45d996===_0x40bb('0x6e')||_0x45d996===_0x40bb('0x42')||_0x45d996==='channelAgent'||_0x45d996===_0x40bb('0x19')||_0x45d996==='active'||_0x45d996==='calleridnum'||_0x45d996===_0x40bb('0x56')||_0x45d996==='countbusyretry'||_0x45d996===_0x40bb('0x50')||_0x45d996==='countnoanswerretry'||_0x45d996===_0x40bb('0x6f')||_0x45d996===_0x40bb('0x70')||_0x45d996===_0x40bb('0x71')||_0x45d996===_0x40bb('0x72')||_0x45d996===_0x40bb('0x73')||_0x45d996===_0x40bb('0x59')||_0x45d996==='ListId'||_0x45d996==='UserId'||_0x45d996==='VoiceQueueId'||_0x45d996===_0x40bb('0x74')||_0x45d996===_0x40bb('0x75')||_0x45d996===_0x40bb('0x76')||_0x45d996===_0x40bb('0x77')||_0x45d996===_0x40bb('0x78')||_0x45d996===_0x40bb('0x79')||_0x45d996===_0x40bb('0x7a')||_0x45d996===_0x40bb('0x7b')||_0x45d996===_0x40bb('0x7c')||_0x45d996==='xmd-dialchannel'||_0x45d996===_0x40bb('0x7d')||_0x45d996===_0x40bb('0x7e')||_0x45d996===_0x40bb('0x7f')||_0x45d996===_0x40bb('0x80')||_0x45d996==='xmd-agi'||_0x45d996===_0x40bb('0x81')||_0x45d996===_0x40bb('0x82')||_0x45d996===_0x40bb('0x83')||_0x45d996===_0x40bb('0x84')||_0x45d996===_0x40bb('0x85')||_0x45d996===_0x40bb('0x86')||_0x45d996==='rtpaudioqosrtt'||_0x45d996===_0x40bb('0x87')||_0x45d996===_0x40bb('0x81')||_0x45d996===_0x40bb('0x82')||_0x45d996==='rtpaudioqosjitter'||_0x45d996==='rtpaudioqosjitterbridged'||_0x45d996===_0x40bb('0x85')||_0x45d996===_0x40bb('0x86')||_0x45d996===_0x40bb('0x88')||_0x45d996===_0x40bb('0x87')||_0x45d996===_0x40bb('0x89')||_0x45d996===_0x40bb('0x8a')||_0x45d996===_0x40bb('0x39')||_0x45d996===_0x40bb('0x3e')){return![];}return!![];};exports[_0x40bb('0x8b')]=function(_0x5298c3,_0x37cd2d){var _0x3b0b8b,_0x17f8f9,_0x11462b;if(_0x37cd2d<=0x0){_0x37cd2d=0x1;}_0x3b0b8b=new RegExp(_0x40bb('0x8c')+_0x37cd2d+'}$');_0x17f8f9=Math['pow'](0xa,_0x37cd2d-0x1);_0x11462b=Math['pow'](0xa,_0x37cd2d)-0x1;return util[_0x40bb('0x11')]('%s',_[_0x40bb('0x8d')](_0x5298c3,_0x3b0b8b,_['random'](_0x17f8f9,_0x11462b)));};exports[_0x40bb('0x8e')]=function(_0x4bbab0){var _0x20aae9=_0x4bbab0['match'](/"(.*?)"/);return _0x20aae9?_0x20aae9[0x1]:_0x4bbab0;};exports[_0x40bb('0x8f')]=function(_0x15a287){var _0x1bc7a5=_0x15a287['match'](/<(.*?)>/);return _0x1bc7a5?_0x1bc7a5[0x1]:_0x15a287;};
\ No newline at end of file
+var _0x1e2d=['VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','NONE','\x22agi://%s/square,%s\x22','originatecalleridnum','originatecalleridname','xcally-motion-preview','Call-Type:\x20PREVIEW','Contact','hasOwnProperty','updatedAt','%s%s','XMD-','toLower','updateOriginated','isNil','originated','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','starttime','responsetime','endtime','logAgent','ringtime','logLookAgent','membername','logCustomer','talktime','answertime','Failure','variablesAction','uniqueid','from-sip','timeout','totalGlobal','countbusyretry','countcongestionretry','countagentrejectretry','countnosuchnumberretry','cloneAction','clone','scheduledAt','active','scheduledat','add','minutes','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','buildObj','lastevent','queue','interface','voice','mandatoryDisposition','buildAcw','channelAgent','agentReadyId','not_inuse','status','reachable','getDiff','CampaignId','filterKey','idContact','type','campaigntype','dialAnswer','countnoanswerretry','countglobal','callbackuniqueid','UserId','sipcallid','xmd-queue','xmd-phone','xmd-dialurl','xmd-dialtimeout','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-agiafter','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosloss','bridgepeer','getCallerIdRandom','\x5cw{0,','pow','replace','random','extractCalleridName','extractCalleridNumber','match','util','lodash','../../../../config/logger','preview','env','127.0.0.1','milliseconds','diff','seconds','loggerCatch','logger','info','inspect','loggerError','error','logger2','message','getCallerId','string','isUndefined','isEmpty','\x22%s\x22\x20<%s>','format','\x22\x22\x20<>','isActive','addVariables','Queue','name','calleridname','calleridnum','ContactId','dialer'];(function(_0x142d67,_0x137e61){var _0x1eee67=function(_0x268bf9){while(--_0x268bf9){_0x142d67['push'](_0x142d67['shift']());}};_0x1eee67(++_0x137e61);}(_0x1e2d,0x70));var _0xd1e2=function(_0x3df1fe,_0x1d2ae3){_0x3df1fe=_0x3df1fe-0x0;var _0x4e6d59=_0x1e2d[_0x3df1fe];return _0x4e6d59;};'use strict';var util=require(_0xd1e2('0x0'));var _=require(_0xd1e2('0x1'));var moment=require('moment');var logger=require(_0xd1e2('0x2'))(_0xd1e2('0x3'));var ipAgi=process[_0xd1e2('0x4')]['XCALLY_IP_AGI']||_0xd1e2('0x5');function getSeconds(_0x45a421,_0x1e75f9){var _0x93b0e=moment(_0x45a421)[_0xd1e2('0x6')](0x0);var _0x4b7f8b=moment(_0x1e75f9)[_0xd1e2('0x6')](0x0);return _0x93b0e[_0xd1e2('0x7')](_0x4b7f8b,_0xd1e2('0x8'));}exports[_0xd1e2('0x9')]=function(_0x1acf4e){return function(_0x12e186){logger['error'](_0x1acf4e,util['inspect'](_0x12e186,{'showHidden':![],'depth':null}));};};exports[_0xd1e2('0xa')]=function(_0x2e7e73,_0x4d8b6e){logger[_0xd1e2('0xb')](_0x2e7e73,util[_0xd1e2('0xc')](_0x4d8b6e,{'showHidden':![],'depth':null}));};exports[_0xd1e2('0xd')]=function(_0x5a4320,_0x4a6dd6){logger[_0xd1e2('0xe')](_0x5a4320,util[_0xd1e2('0xc')](_0x4a6dd6,{'showHidden':![],'depth':null}));};exports[_0xd1e2('0xf')]=function(_0x1b3208){return function(_0x2511b6){logger[_0xd1e2('0xb')](_0x1b3208,util[_0xd1e2('0xc')](_0x2511b6,{'showHidden':![],'depth':null}));};};exports[_0xd1e2('0x10')]=function(_0x2c4972,_0x1fd577,_0xdbe372){return{'message':_0x2c4972,'unlock':_0x1fd577,'active':_0xdbe372};};exports[_0xd1e2('0x11')]=function(_0x363bda,_0x1dd2bb,_0x1699c6){if(!_['isUndefined'](_0x1699c6)&&_0xd1e2('0x12')===typeof _0x1699c6&&!_['isEmpty'](_0x1699c6)){if(!_[_0xd1e2('0x13')](_0x1dd2bb)&&'string'===typeof _0x1dd2bb&&!_[_0xd1e2('0x14')](_0x1dd2bb)){return util['format'](_0xd1e2('0x15'),_0x1dd2bb,_0x1699c6);}return util[_0xd1e2('0x16')]('\x22%s\x22\x20<%s>',_0x1699c6,_0x1699c6);}if(!_[_0xd1e2('0x13')](_0x363bda)&&'string'===typeof _0x363bda&&!_[_0xd1e2('0x14')](_0x363bda)){return _0x363bda;}return _0xd1e2('0x17');};exports[_0xd1e2('0x18')]=function(_0x32701c){if(_['isNil'](_0x32701c)){return![];}return _0x32701c;};exports[_0xd1e2('0x19')]=function(_0x31d058,_0x44e76c,_0x48543c,_0x18c8b7,_0x4aa273,_0x27d711){var _0x45bcf2={'XMD-QUEUE':_0x44e76c[_0xd1e2('0x1a')]?_0x44e76c['Queue'][_0xd1e2('0x1b')]:'','XMD-CALLERID':_0x18c8b7,'XMD-CALLERID-PREVIEW':_0x27d711?util['format']('\x22%s\x22\x20<%s>',_0x27d711[_0xd1e2('0x1c')],_0x27d711[_0xd1e2('0x1d')]):_0x18c8b7,'XMD-DIALID':_0x4aa273,'XMD-CONTACTID':_0x44e76c[_0xd1e2('0x1e')],'XMD-CDRTYPE':_0xd1e2('0x1f'),'CALLERID(all)':_0x18c8b7,'XMD-VOICEQUEUEID':_0x44e76c[_0xd1e2('0x20')],'XMD-DIALCHANNEL':_0x48543c,'XMD-DIALTIMEOUT':_0x31d058[_0xd1e2('0x21')]||0x1e,'XMD-DIALOPTIONS':util[_0xd1e2('0x16')](_0xd1e2('0x22'),_0x31d058[_0xd1e2('0x23')]?'g':'',_[_0xd1e2('0x14')](_0x31d058[_0xd1e2('0x24')])?'':_0xd1e2('0x25')),'XMD-DIALURL':_0x31d058[_0xd1e2('0x26')]||'','XMD-AGI':_0x31d058[_0xd1e2('0x27')]?util[_0xd1e2('0x16')]('\x22agi://%s/square,%s\x22',ipAgi,_0x31d058['dialQueueProject']):_0xd1e2('0x28'),'XMD-AGIAFTER':_0x31d058['dialQueueProject2']?util[_0xd1e2('0x16')](_0xd1e2('0x29'),ipAgi,_0x31d058[_0xd1e2('0x23')]):_0xd1e2('0x28'),'XMD-ORIGINATECALLERIDNUM':_0x27d711?_0x27d711[_0xd1e2('0x2a')]:'','XMD-ORIGINATECALLERIDNAME':_0x27d711?_0x27d711[_0xd1e2('0x2b')]:'','XMD-DESTINATION':_0xd1e2('0x2c'),'SIPADDHEADER':_0xd1e2('0x2d')};if(!_[_0xd1e2('0x14')](_0x31d058['monitor_format'])){_0x45bcf2[util[_0xd1e2('0x16')]('%s','_XCALLY_MIXMONITOR_FORMAT')]=_0x31d058[_0xd1e2('0x24')];_0x45bcf2[util[_0xd1e2('0x16')]('%s','_XCALLY_MIXMONITOR_UNIQUEID')]=_0x4aa273;}if(_0x44e76c&&_0x44e76c[_0xd1e2('0x2e')]){for(var _0x9e4b46 in _0x44e76c[_0xd1e2('0x2e')]){if(_0x44e76c[_0xd1e2('0x2e')][_0xd1e2('0x2f')](_0x9e4b46)){if(!_['isNil'](_0x44e76c[_0xd1e2('0x2e')][_0x9e4b46])&&_0x9e4b46!=='id'&&_0x9e4b46!=='tags'&&_0x9e4b46!=='createdAt'&&_0x9e4b46!==_0xd1e2('0x30')){_0x45bcf2[util[_0xd1e2('0x16')](_0xd1e2('0x31'),_0xd1e2('0x32'),_['toUpper'](_0x9e4b46))]=_0x44e76c[_0xd1e2('0x2e')][_0x9e4b46];}}}}return _0x45bcf2;};exports['toLowerVariables']=function(_0x22180d){var _0x5a2e59={};for(var _0x4a52c1 in _0x22180d){if(_0x22180d['hasOwnProperty'](_0x4a52c1)){_0x5a2e59[util[_0xd1e2('0x16')]('%s',_[_0xd1e2('0x33')](_0x4a52c1))]=_0x22180d[_0x4a52c1];}}return{'variables':_0x5a2e59};};exports[_0xd1e2('0x34')]=function(_0x5e0501,_0x21e09d){if(!_[_0xd1e2('0x35')](_0x5e0501)){if(_0x5e0501['hasOwnProperty'](_0xd1e2('0x36'))){if(_0x5e0501[_0xd1e2('0x36')]>0x0){_0x5e0501['originated']-=0x1;}else{logger[_0xd1e2('0xe')]('[updateOriginated]\x20object\x20originated\x20is\x20negative',_0x21e09d);}}}else{logger[_0xd1e2('0xe')](_0xd1e2('0x37'),_0x21e09d);}};exports[_0xd1e2('0x38')]=function(_0x1c2b18){var _0x1a9abf=moment()[_0xd1e2('0x16')](_0xd1e2('0x39'));_0x1c2b18[_0xd1e2('0x3a')]=0xd;_0x1c2b18[_0xd1e2('0x3b')]=_0xd1e2('0x3c');_0x1c2b18[_0xd1e2('0x3d')]=_0x1a9abf;_0x1c2b18[_0xd1e2('0x3e')]=_0x1a9abf;_0x1c2b18[_0xd1e2('0x3f')]=_0x1a9abf;};exports[_0xd1e2('0x40')]=function(_0x52c46d,_0x49b905,_0x3b31f2){var _0x995f71=moment()[_0xd1e2('0x16')]('YYYY-MM-DD\x20HH:mm:ss');_0x52c46d[_0xd1e2('0x3a')]=_0x49b905;_0x52c46d[_0xd1e2('0x3b')]=_0x3b31f2;_0x52c46d[_0xd1e2('0x3e')]=_0x995f71;_0x52c46d[_0xd1e2('0x41')]=getSeconds(_0x52c46d[_0xd1e2('0x3e')],_0x52c46d[_0xd1e2('0x3d')]);};exports[_0xd1e2('0x42')]=function(_0x439674,_0xc5dbda,_0xd11eb5){_0x439674[_0xd1e2('0x43')]=_0xc5dbda;_0x439674['UserId']=_0xd11eb5;};exports[_0xd1e2('0x44')]=function(_0x5ca181,_0x5893bc,_0x5b91d4){var _0xb491c9=moment()[_0xd1e2('0x16')]('YYYY-MM-DD\x20HH:mm:ss');_0x5ca181[_0xd1e2('0x3a')]=_0x5893bc;_0x5ca181['statedesc']=_0x5b91d4;_0x5ca181[_0xd1e2('0x3e')]=_0x5ca181['responsetime']?_0x5ca181[_0xd1e2('0x3e')]:_0xb491c9;_0x5ca181[_0xd1e2('0x3f')]=_0x5ca181[_0xd1e2('0x3f')]?_0x5ca181[_0xd1e2('0x3f')]:_0xb491c9;_0x5ca181[_0xd1e2('0x41')]=getSeconds(_0x5ca181[_0xd1e2('0x3e')]||0x0,_0x5ca181[_0xd1e2('0x3d')]||0x0);_0x5ca181[_0xd1e2('0x45')]=_0x5ca181[_0xd1e2('0x46')]?getSeconds(_0x5ca181['endtime'],_0x5ca181[_0xd1e2('0x46')]):0x0;};exports['isFailure']=function(_0x589b2f){return _0x589b2f===_0xd1e2('0x47');};exports[_0xd1e2('0x48')]=function(_0x2f4edf,_0x5656fa,_0x4a1c9a,_0x53ea72,_0x2c0000){var _0x3ac11c=_0x53ea72?'RECALL':_0x2f4edf[_0xd1e2('0x1c')];_0x3ac11c=_0x2c0000?'BOOKED':_0x3ac11c;return{'actionid':_0x2f4edf[_0xd1e2('0x49')],'action':'originate','channel':_0x2f4edf['channelAgent'],'callerid':util[_0xd1e2('0x16')](_0xd1e2('0x15'),_0x3ac11c,_0x2f4edf[_0xd1e2('0x1d')]),'Exten':_0xd1e2('0x2c'),'Context':_0xd1e2('0x4a'),'Priority':'1','variable':_0x4a1c9a,'timeout':(_0x5656fa[_0xd1e2('0x4b')]||0x1e)*0x3e8,'async':!![],'channelid':_0x2f4edf[_0xd1e2('0x49')]};};exports[_0xd1e2('0x4c')]=function(_0x2ccf50){return _0x2ccf50[_0xd1e2('0x4d')]+_0x2ccf50[_0xd1e2('0x4e')]+_0x2ccf50['countnoanswerretry']+_0x2ccf50[_0xd1e2('0x4f')]+_0x2ccf50[_0xd1e2('0x50')];};exports[_0xd1e2('0x51')]=function(_0x146581){var _0xf20877=_[_0xd1e2('0x52')](_0x146581);_0xf20877['state']=0xf;_0xf20877['statedesc']='Global';return _0xf20877;};exports[_0xd1e2('0x53')]=function(_0x33e63d,_0x54ef52,_0x545e48){var _0x455fea={};_0x455fea[_0x54ef52]=_0x33e63d[_0x54ef52];_0x455fea[_0xd1e2('0x54')]=![];_0x455fea[_0xd1e2('0x55')]=moment()[_0xd1e2('0x56')](_0x545e48,_0xd1e2('0x57'))[_0xd1e2('0x16')]('YYYY-MM-DD\x20HH:mm:ss');_0x455fea[_0xd1e2('0x1e')]=_0x33e63d[_0xd1e2('0x1e')];_0x455fea['ListId']=_0x33e63d[_0xd1e2('0x58')];_0x455fea[_0xd1e2('0x20')]=_0x33e63d['VoiceQueueId']||undefined;return _0x455fea;};exports[_0xd1e2('0x59')]=function(_0x347c44,_0x33d8f3){if(!_['isNil'](_0x347c44)){if(_0x347c44[_0xd1e2('0x5a')]>0x0){_0x347c44[_0xd1e2('0x5a')]-=0x1;}else{logger['error'](_0x33d8f3,_0xd1e2('0x5b'));}}else{logger[_0xd1e2('0xe')](_0x33d8f3,_0xd1e2('0x5c'));}};exports[_0xd1e2('0x5d')]=function(_0x3da4eb){if(_0x3da4eb<=0x0){return!![];}return![];};exports[_0xd1e2('0x5e')]=function(_0x3f2c84,_0x552a2f,_0x538264){_0x3f2c84[_0xd1e2('0x5f')]=_0x552a2f;_0x3f2c84['name']=_0x3f2c84[_0xd1e2('0x60')];_0x3f2c84[_0xd1e2('0x61')]=_0x3f2c84['channelAgent'];_0x3f2c84['motionChannel']=_0xd1e2('0x62');if(_0x538264){_0x3f2c84[_0xd1e2('0x63')]=_0x538264[_0xd1e2('0x63')];}return _0x3f2c84;};exports[_0xd1e2('0x64')]=function(_0x3e5f48){var _0x305270={};_0x305270[_0xd1e2('0x60')]=_0x3e5f48['queue'];_0x305270[_0xd1e2('0x61')]=_0x3e5f48[_0xd1e2('0x65')];_0x305270[_0xd1e2('0x49')]=_0x3e5f48[_0xd1e2('0x49')];return _0x305270;};exports[_0xd1e2('0x66')]=function(_0x508446){var _0xb2343d=[];for(var _0x348117 in _0x508446){if(_0x508446[_0xd1e2('0x2f')](_0x348117)){if(!_[_0xd1e2('0x35')](_0x508446[_0x348117])&&_0x508446[_0x348117][_0xd1e2('0x3a')]===_0xd1e2('0x67')&&_0x508446[_0x348117][_0xd1e2('0x68')]===_0xd1e2('0x69')){_0xb2343d['push'](_0x508446[_0x348117]['id']);}}}return _0xb2343d;};exports[_0xd1e2('0x6a')]=function(_0x4190c6){var _0x33ca3a=moment()[_0xd1e2('0x6')](0x0);var _0x1e300b=moment(_0x4190c6)['milliseconds'](0x0);return _0x33ca3a[_0xd1e2('0x7')](_0x1e300b,_0xd1e2('0x8'));};exports['createBody']=function(_0x2085f7){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x2085f7[_0xd1e2('0x1e')],'ListId':_0x2085f7[_0xd1e2('0x58')],'VoiceQueueId':_0x2085f7[_0xd1e2('0x20')]||undefined,'CampaignId':_0x2085f7[_0xd1e2('0x6b')]||undefined};};exports[_0xd1e2('0x6c')]=function(_0x3d79a3){if(_0x3d79a3===_0xd1e2('0x49')||_0x3d79a3===_0xd1e2('0x6d')||_0x3d79a3===_0xd1e2('0x60')||_0x3d79a3===_0xd1e2('0x6e')||_0x3d79a3===_0xd1e2('0x6f')||_0x3d79a3===_0xd1e2('0x70')||_0x3d79a3===_0xd1e2('0x43')||_0x3d79a3==='channelAgent'||_0x3d79a3==='calleridname'||_0x3d79a3===_0xd1e2('0x54')||_0x3d79a3===_0xd1e2('0x1d')||_0x3d79a3===_0xd1e2('0x55')||_0x3d79a3===_0xd1e2('0x4d')||_0x3d79a3===_0xd1e2('0x4e')||_0x3d79a3===_0xd1e2('0x71')||_0x3d79a3===_0xd1e2('0x72')||_0x3d79a3==='callback'||_0x3d79a3===_0xd1e2('0x73')||_0x3d79a3==='callbackat'||_0x3d79a3==='recallme'||_0x3d79a3===_0xd1e2('0x1e')||_0x3d79a3==='ListId'||_0x3d79a3===_0xd1e2('0x74')||_0x3d79a3===_0xd1e2('0x20')||_0x3d79a3===_0xd1e2('0x75')||_0x3d79a3==='xmd-voicequeueid'||_0x3d79a3===_0xd1e2('0x76')||_0x3d79a3===_0xd1e2('0x77')||_0x3d79a3==='xmd-listid'||_0x3d79a3===_0xd1e2('0x78')||_0x3d79a3===_0xd1e2('0x79')||_0x3d79a3==='xmd-dialoptions'||_0x3d79a3===_0xd1e2('0x7a')||_0x3d79a3===_0xd1e2('0x7b')||_0x3d79a3===_0xd1e2('0x7c')||_0x3d79a3===_0xd1e2('0x7d')||_0x3d79a3==='xmd-callerid'||_0x3d79a3===_0xd1e2('0x7e')||_0x3d79a3===_0xd1e2('0x7f')||_0x3d79a3===_0xd1e2('0x80')||_0x3d79a3===_0xd1e2('0x81')||_0x3d79a3===_0xd1e2('0x82')||_0x3d79a3===_0xd1e2('0x83')||_0x3d79a3==='rtpaudioqosloss'||_0x3d79a3===_0xd1e2('0x84')||_0x3d79a3===_0xd1e2('0x85')||_0x3d79a3==='rtpaudioqosrttbridged'||_0x3d79a3==='rtpaudioqos'||_0x3d79a3==='rtpaudioqosbridged'||_0x3d79a3==='rtpaudioqosjitter'||_0x3d79a3===_0xd1e2('0x83')||_0x3d79a3===_0xd1e2('0x86')||_0x3d79a3===_0xd1e2('0x84')||_0x3d79a3===_0xd1e2('0x85')||_0x3d79a3==='rtpaudioqosrttbridged'||_0x3d79a3===_0xd1e2('0x87')||_0x3d79a3==='bridgepvtcallid'||_0x3d79a3==='state'||_0x3d79a3===_0xd1e2('0x3b')){return![];}return!![];};exports[_0xd1e2('0x88')]=function(_0x2a8fc3,_0x5d67f5){var _0x288e17,_0xcf1c4f,_0x469fbd;if(_0x5d67f5<=0x0){_0x5d67f5=0x1;}_0x288e17=new RegExp(_0xd1e2('0x89')+_0x5d67f5+'}$');_0xcf1c4f=Math[_0xd1e2('0x8a')](0xa,_0x5d67f5-0x1);_0x469fbd=Math[_0xd1e2('0x8a')](0xa,_0x5d67f5)-0x1;return util[_0xd1e2('0x16')]('%s',_[_0xd1e2('0x8b')](_0x2a8fc3,_0x288e17,_[_0xd1e2('0x8c')](_0xcf1c4f,_0x469fbd)));};exports[_0xd1e2('0x8d')]=function(_0x179e58){var _0x20f2ac=_0x179e58['match'](/"(.*?)"/);return _0x20f2ac?_0x20f2ac[0x1]:_0x179e58;};exports[_0xd1e2('0x8e')]=function(_0x5984a3){var _0x4ee15a=_0x5984a3[_0xd1e2('0x8f')](/<(.*?)>/);return _0x4ee15a?_0x4ee15a[0x1]:_0x5984a3;};
\ No newline at end of file
index 3f7c221..c249419 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc83e=['number','queueremove','queuepause','boolean','reload','voicequeuechannel','voicechannel','queueadd','string'];(function(_0x545b34,_0x261f32){var _0x544fe3=function(_0x146f87){while(--_0x146f87){_0x545b34['push'](_0x545b34['shift']());}};_0x544fe3(++_0x261f32);}(_0xc83e,0x85));var _0xec83=function(_0x1ab180,_0x382b2c){_0x1ab180=_0x1ab180-0x0;var _0xfb2c2d=_0xc83e[_0x1ab180];return _0xfb2c2d;};'use strict';exports[_0xec83('0x0')]={'queue':{'type':_0xec83('0x1'),'required':!![]},'interface':{'type':_0xec83('0x1'),'required':!![]},'membername':{'type':_0xec83('0x1'),'required':!![]},'penalty':{'type':_0xec83('0x2'),'required':![]},'paused':{'type':'boolean','required':![]}};exports[_0xec83('0x3')]={'queue':{'type':_0xec83('0x1'),'required':!![]},'interface':{'type':_0xec83('0x1'),'required':!![]}};exports[_0xec83('0x4')]={'interface':{'type':_0xec83('0x1'),'required':!![]},'paused':{'type':_0xec83('0x5')},'reason':{'type':_0xec83('0x1'),'required':![]}};exports[_0xec83('0x6')]={'module':{'type':_0xec83('0x1'),'required':![]}};exports[_0xec83('0x7')]={'uniqueid':{'type':_0xec83('0x1'),'required':!![]}};exports[_0xec83('0x8')]={'uniqueid':{'type':_0xec83('0x1'),'required':!![]},'filename':{'type':_0xec83('0x1')},'format':{'type':_0xec83('0x1')},'mixmonitorid':{'type':'string'}};exports['voicequeuechannelhangup']={'uniqueid':{'type':_0xec83('0x1'),'required':!![]}};exports['voicequeuechannelredirect']={'uniqueid':{'type':_0xec83('0x1'),'required':!![]},'exten':{'type':_0xec83('0x1'),'required':!![]},'context':{'type':'string'}};
\ No newline at end of file
+var _0x215e=['queuepause','boolean','voicequeuechannel','voicechannel','voicequeuechannelhangup','voicequeuechannelredirect','queueadd','string','number','queueremove'];(function(_0x1f0981,_0x22db3e){var _0x4fb462=function(_0x65ce21){while(--_0x65ce21){_0x1f0981['push'](_0x1f0981['shift']());}};_0x4fb462(++_0x22db3e);}(_0x215e,0x146));var _0xe215=function(_0x94a09b,_0x229dcc){_0x94a09b=_0x94a09b-0x0;var _0x3d0a3f=_0x215e[_0x94a09b];return _0x3d0a3f;};'use strict';exports[_0xe215('0x0')]={'queue':{'type':_0xe215('0x1'),'required':!![]},'interface':{'type':_0xe215('0x1'),'required':!![]},'membername':{'type':_0xe215('0x1'),'required':!![]},'penalty':{'type':_0xe215('0x2'),'required':![]},'paused':{'type':'boolean','required':![]}};exports[_0xe215('0x3')]={'queue':{'type':_0xe215('0x1'),'required':!![]},'interface':{'type':_0xe215('0x1'),'required':!![]}};exports[_0xe215('0x4')]={'interface':{'type':_0xe215('0x1'),'required':!![]},'paused':{'type':_0xe215('0x5')},'reason':{'type':_0xe215('0x1'),'required':![]}};exports['reload']={'module':{'type':_0xe215('0x1'),'required':![]}};exports[_0xe215('0x6')]={'uniqueid':{'type':_0xe215('0x1'),'required':!![]}};exports[_0xe215('0x7')]={'uniqueid':{'type':_0xe215('0x1'),'required':!![]},'filename':{'type':_0xe215('0x1')},'format':{'type':_0xe215('0x1')},'mixmonitorid':{'type':_0xe215('0x1')}};exports[_0xe215('0x8')]={'uniqueid':{'type':_0xe215('0x1'),'required':!![]}};exports[_0xe215('0x9')]={'uniqueid':{'type':_0xe215('0x1'),'required':!![]},'exten':{'type':_0xe215('0x1'),'required':!![]},'context':{'type':_0xe215('0x1')}};
\ No newline at end of file
index c497e6f..2c1b899 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x360c=['../model/telephone','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','../model/faxAccount','telephones','trunks','voiceQueues','triggers','campaigns','templates','outbound','queueChannels','outboundChannels','settings','salesforceAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','hasOwnProperty','format','name','isNil','interface','SIP/%s','total','answered','sumHoldTime','sumDuration','ivrTotalCallsDays','ivrAnswerCallsDay','unmanaged','abandoned','sumBillable','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundDropCallsDayCallersExit','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','initAgents','isUndefined','agents','mergeFromDatabase','initTelephones','length','initTrunks','initTriggers','initTemplates','initZendeskAccounts','zendeskAccounts','initSalesforceAccounts','initFreshdeskAccounts','sugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','initDynamics365Accounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','groupBy','uniqueid','queuecallerexit','queuecallerabandon','queuecallerleaveAt','diff','queuecallerjoinAt','seconds','queuecallerabandonAt','queuecallerexitAt','queuecallercomplete','queuecallercompleteAt','ANSWERED','duration','billableseconds','dialQueueProject','SquareProject','initVoiceExtensions','voiceExtensions','initCampaignHopperHistory','initFaxAccounts','exports','lodash','../model/agent'];(function(_0x3b516d,_0x23b968){var _0x4d22e3=function(_0x1b3b29){while(--_0x1b3b29){_0x3b516d['push'](_0x3b516d['shift']());}};_0x4d22e3(++_0x23b968);}(_0x360c,0x64));var _0xc360=function(_0x2e5aa5,_0x5abae2){_0x2e5aa5=_0x2e5aa5-0x0;var _0x2990c9=_0x360c[_0x2e5aa5];return _0x2990c9;};'use strict';var BPromise=require('bluebird');var util=require('util');var _=require(_0xc360('0x0'));var moment=require('moment');var Agent=require(_0xc360('0x1'));var Telephone=require(_0xc360('0x2'));var Trunk=require('../model/trunk');var VoiceQueue=require('../model/voiceQueue');var Trigger=require('../model/trigger');var Template=require('../model/template');var Campaign=require(_0xc360('0x3'));var VoiceExtension=require(_0xc360('0x4'));var ZendeskAccount=require(_0xc360('0x5'));var SalesforceAccount=require(_0xc360('0x6'));var FreshdeskAccount=require(_0xc360('0x7'));var SugarcrmAccount=require(_0xc360('0x8'));var ZohoAccount=require(_0xc360('0x9'));var DeskAccount=require(_0xc360('0xa'));var VtigerAccount=require(_0xc360('0xb'));var ServicenowAccount=require(_0xc360('0xc'));var Dynamics365Account=require(_0xc360('0xd'));var FreshsalesAccount=require('../model/freshsalesAccount');var FaxAccount=require(_0xc360('0xe'));var Realtime=function(){this['agents']={};this[_0xc360('0xf')]={};this[_0xc360('0x10')]={};this[_0xc360('0x11')]={};this[_0xc360('0x12')]={};this[_0xc360('0x13')]={};this[_0xc360('0x14')]={};this[_0xc360('0x15')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this['voiceExtensions']={};this['channels']={};this[_0xc360('0x16')]={};this[_0xc360('0x17')]={};this['timers']={};this[_0xc360('0x18')]={};this['zendeskAccounts']={};this[_0xc360('0x19')]={};this['sugarcrmAccounts']={};this[_0xc360('0x1a')]={};this[_0xc360('0x1b')]={};this[_0xc360('0x1c')]={};this[_0xc360('0x1d')]={};this[_0xc360('0x1e')]={};this[_0xc360('0x1f')]={};this[_0xc360('0x20')]={};this[_0xc360('0x21')]={};};function freeIsNotKey(_0x134b89,_0x13b94f,_0x7ce85a){var _0x210368=_[_0xc360('0x22')](_0x134b89,function(_0x3eced6,_0x183855){return _0x3eced6[_0x7ce85a];});for(var _0x1c7e9c in _0x13b94f){if(_0x13b94f[_0xc360('0x23')](_0x1c7e9c)){if(!_0x210368[_0x1c7e9c]){delete _0x13b94f[_0x1c7e9c];}}}}function freeIsNotKeySip(_0x580d60,_0xf3f5af){var _0x15070f=_['mapKeys'](_0x580d60,function(_0xa3443e,_0x2f6d73){return util[_0xc360('0x24')]('SIP/%s',_0xa3443e[_0xc360('0x25')]);});for(var _0x260f17 in _0xf3f5af){if(_0xf3f5af['hasOwnProperty'](_0x260f17)){if(!_0x15070f[_0x260f17]){delete _0xf3f5af[_0x260f17];}}}}function freeIsNotKeyAgent(_0x596354,_0x6ef114){var _0x512ebb=_[_0xc360('0x22')](_0x596354,function(_0x19b622,_0x2051ef){var _0x3228a6=_[_0xc360('0x26')](_0x19b622[_0xc360('0x27')])?util[_0xc360('0x24')](_0xc360('0x28'),_0x19b622[_0xc360('0x25')]):_0x19b622[_0xc360('0x27')];return _0x3228a6;});for(var _0x34c834 in _0x6ef114){if(_0x6ef114[_0xc360('0x23')](_0x34c834)){if(!_0x512ebb[_0x34c834]){delete _0x6ef114[_0x34c834];}}}}function clearVoiceCallReports(_0x38ca70){_0x38ca70[_0xc360('0x29')]=0x0;_0x38ca70[_0xc360('0x2a')]=0x0;_0x38ca70[_0xc360('0x2b')]=0x0;_0x38ca70[_0xc360('0x2c')]=0x0;_0x38ca70['sumBillable']=0x0;}function clearCampaigns(_0x72b27d){if(!_['isEmpty'](_0x72b27d)){for(var _0xfbeca5 in _0x72b27d){if(_0x72b27d[_0xc360('0x23')](_0xfbeca5)){_0x72b27d[_0xfbeca5][_0xc360('0x2d')]=0x0;_0x72b27d[_0xfbeca5][_0xc360('0x2e')]=0x0;}}}}function clearVoiceQueues(_0x5b0c2e){if(!_['isEmpty'](_0x5b0c2e)){for(var _0x3ab973 in _0x5b0c2e){if(_0x5b0c2e[_0xc360('0x23')](_0x3ab973)){_0x5b0c2e[_0x3ab973][_0xc360('0x29')]=0x0;_0x5b0c2e[_0x3ab973][_0xc360('0x2a')]=0x0;_0x5b0c2e[_0x3ab973][_0xc360('0x2f')]=0x0;_0x5b0c2e[_0x3ab973][_0xc360('0x30')]=0x0;_0x5b0c2e[_0x3ab973]['sumHoldTime']=0x0;_0x5b0c2e[_0x3ab973][_0xc360('0x2c')]=0x0;_0x5b0c2e[_0x3ab973][_0xc360('0x31')]=0x0;_0x5b0c2e[_0x3ab973][_0xc360('0x32')]=0x0;_0x5b0c2e[_0x3ab973]['outboundNoAnswerCallsDay']=0x0;_0x5b0c2e[_0x3ab973][_0xc360('0x33')]=0x0;_0x5b0c2e[_0x3ab973][_0xc360('0x34')]=0x0;_0x5b0c2e[_0x3ab973][_0xc360('0x35')]=0x0;_0x5b0c2e[_0x3ab973]['outboundUnknownCallsDay']=0x0;_0x5b0c2e[_0x3ab973]['outboundDropCallsDayTimeout']=0x0;_0x5b0c2e[_0x3ab973][_0xc360('0x36')]=0x0;_0x5b0c2e[_0x3ab973]['outboundBlacklistCallsDay']=0x0;_0x5b0c2e[_0x3ab973]['outboundOriginateFailureCallsDay']=0x0;_0x5b0c2e[_0x3ab973][_0xc360('0x37')]=0x0;_0x5b0c2e[_0x3ab973][_0xc360('0x38')]=0x0;_0x5b0c2e[_0x3ab973]['outboundAnswerAgiCallsDay']=0x0;_0x5b0c2e[_0x3ab973][_0xc360('0x39')]=0x0;_0x5b0c2e[_0x3ab973][_0xc360('0x3a')]=!![];}}}}Realtime[_0xc360('0x3b')]['mergeFromDatabase']=function(_0x758d59,_0x378f41){for(var _0x55125f in _0x378f41){if(_0x758d59[_0xc360('0x23')](_0x55125f)){_0x758d59[_0x55125f]=_0x378f41[_0x55125f];}}};Realtime[_0xc360('0x3b')][_0xc360('0x3c')]=function(){var _0x6f44e1=this;return function(_0x5cfabc){if(_0x5cfabc){freeIsNotKeyAgent(_0x5cfabc,_0x6f44e1['agents']);for(var _0x41862e=0x0,_0x2da27c={},_0x514c2b={};_0x41862e<_0x5cfabc['length'];_0x41862e+=0x1){_0x2da27c=_0x5cfabc[_0x41862e];var _0x1046e5=_['isNil'](_0x2da27c[_0xc360('0x27')])?util[_0xc360('0x24')](_0xc360('0x28'),_0x2da27c[_0xc360('0x25')]):_0x2da27c[_0xc360('0x27')];if(_[_0xc360('0x3d')](_0x6f44e1[_0xc360('0x3e')][_0x1046e5])){_0x6f44e1[_0xc360('0x3e')][_0x1046e5]=new Agent(_0x2da27c);}else{_0x6f44e1[_0xc360('0x3f')](_0x6f44e1[_0xc360('0x3e')][_0x1046e5],_0x2da27c);}}}return _0x6f44e1[_0xc360('0x3e')];};};Realtime[_0xc360('0x3b')][_0xc360('0x40')]=function(){var _0x1ef6eb=this;return function(_0x1cd6e2){if(_0x1cd6e2){freeIsNotKeySip(_0x1cd6e2,_0x1ef6eb['telephones']);for(var _0x3fee99=0x0,_0x52c265={},_0x59efc7={};_0x3fee99<_0x1cd6e2[_0xc360('0x41')];_0x3fee99+=0x1){_0x52c265=_0x1cd6e2[_0x3fee99];if(_['isUndefined'](_0x1ef6eb[_0xc360('0xf')][util['format'](_0xc360('0x28'),_0x52c265['name'])])){_0x1ef6eb[_0xc360('0xf')][util[_0xc360('0x24')](_0xc360('0x28'),_0x52c265[_0xc360('0x25')])]=new Telephone(_0x52c265);}else{_0x1ef6eb[_0xc360('0x3f')](_0x1ef6eb[_0xc360('0xf')][util[_0xc360('0x24')]('SIP/%s',_0x52c265[_0xc360('0x25')])],_0x52c265);}}}return _0x1ef6eb[_0xc360('0xf')];};};Realtime[_0xc360('0x3b')][_0xc360('0x42')]=function(){var _0x46aa36=this;return function(_0x4779a7){if(_0x4779a7){freeIsNotKeySip(_0x4779a7,_0x46aa36[_0xc360('0x10')]);for(var _0x1e72e7=0x0,_0x11cad3={},_0x225ac8={};_0x1e72e7<_0x4779a7[_0xc360('0x41')];_0x1e72e7+=0x1){_0x11cad3=_0x4779a7[_0x1e72e7];if(_[_0xc360('0x3d')](_0x46aa36[_0xc360('0x10')][util['format']('SIP/%s',_0x11cad3[_0xc360('0x25')])])){_0x46aa36[_0xc360('0x10')][util[_0xc360('0x24')](_0xc360('0x28'),_0x11cad3['name'])]=new Trunk(_0x11cad3);}else{_0x46aa36['mergeFromDatabase'](_0x46aa36[_0xc360('0x10')][util['format']('SIP/%s',_0x11cad3[_0xc360('0x25')])],_0x11cad3);}}}return _0x46aa36['trunks'];};};Realtime[_0xc360('0x3b')]['initVoiceQueues']=function(){var _0x5e3a6a=this;return function(_0x351b00){if(_0x351b00){freeIsNotKey(_0x351b00,_0x5e3a6a[_0xc360('0x11')],_0xc360('0x25'));for(var _0x31443c=0x0,_0x6f5214={},_0x115cba={};_0x31443c<_0x351b00[_0xc360('0x41')];_0x31443c+=0x1){_0x6f5214=_0x351b00[_0x31443c];if(_['isUndefined'](_0x5e3a6a['voiceQueues'][_0x6f5214[_0xc360('0x25')]])){_0x5e3a6a[_0xc360('0x11')][_0x6f5214['name']]=new VoiceQueue(_0x6f5214);}else{_0x5e3a6a[_0xc360('0x3f')](_0x5e3a6a[_0xc360('0x11')][_0x6f5214[_0xc360('0x25')]],_0x6f5214);}}}return _0x5e3a6a[_0xc360('0x11')];};};Realtime[_0xc360('0x3b')][_0xc360('0x43')]=function(){var _0x556f2e=this;return function(_0xa85bc6){if(_0xa85bc6){freeIsNotKey(_0xa85bc6,_0x556f2e[_0xc360('0x12')],'id');for(var _0x193a92=0x0,_0x4eebf4={},_0x268f7e={};_0x193a92<_0xa85bc6['length'];_0x193a92+=0x1){_0x4eebf4=_0xa85bc6[_0x193a92];if(_['isUndefined'](_0x556f2e[_0xc360('0x12')][_0x4eebf4['id']])){_0x556f2e['triggers'][_0x4eebf4['id']]=new Trigger(_0x4eebf4);}else{_0x556f2e[_0xc360('0x3f')](_0x556f2e[_0xc360('0x12')][_0x4eebf4['id']],_0x4eebf4);}}}return _0x556f2e[_0xc360('0x12')];};};Realtime[_0xc360('0x3b')][_0xc360('0x44')]=function(){var _0x4d1516=this;return function(_0x1b286b){if(_0x1b286b){freeIsNotKey(_0x1b286b,_0x4d1516[_0xc360('0x14')],'id');for(var _0x567443=0x0,_0x71d0dd={},_0x349535={};_0x567443<_0x1b286b['length'];_0x567443+=0x1){_0x71d0dd=_0x1b286b[_0x567443];if(_[_0xc360('0x3d')](_0x4d1516[_0xc360('0x14')][_0x71d0dd['id']])){_0x4d1516[_0xc360('0x14')][_0x71d0dd['id']]=new Template(_0x71d0dd);}else{_0x4d1516[_0xc360('0x3f')](_0x4d1516[_0xc360('0x14')][_0x71d0dd['id']],_0x71d0dd);}}}return _0x4d1516['templates'];};};Realtime['prototype'][_0xc360('0x45')]=function(){var _0x584c06=this;return function(_0x4ee2ff){if(_0x4ee2ff){freeIsNotKey(_0x4ee2ff,_0x584c06[_0xc360('0x46')],'id');for(var _0x37010=0x0,_0x57e9fb={},_0x5894c2={};_0x37010<_0x4ee2ff['length'];_0x37010+=0x1){_0x57e9fb=_0x4ee2ff[_0x37010];if(_['isUndefined'](_0x584c06[_0xc360('0x46')][_0x57e9fb['id']])){_0x584c06[_0xc360('0x46')][_0x57e9fb['id']]=new ZendeskAccount(_0x57e9fb);}else{_0x584c06[_0xc360('0x3f')](_0x584c06[_0xc360('0x46')][_0x57e9fb['id']],_0x57e9fb);}}}return _0x584c06[_0xc360('0x46')];};};Realtime[_0xc360('0x3b')][_0xc360('0x47')]=function(){var _0x126982=this;return function(_0x2b3162){if(_0x2b3162){freeIsNotKey(_0x2b3162,_0x126982['salesforceAccounts'],'id');for(var _0xa64c6b=0x0,_0x5df702={},_0x567cb3={};_0xa64c6b<_0x2b3162[_0xc360('0x41')];_0xa64c6b+=0x1){_0x5df702=_0x2b3162[_0xa64c6b];if(_['isUndefined'](_0x126982[_0xc360('0x19')][_0x5df702['id']])){_0x126982[_0xc360('0x19')][_0x5df702['id']]=new SalesforceAccount(_0x5df702);}else{_0x126982[_0xc360('0x3f')](_0x126982[_0xc360('0x19')][_0x5df702['id']],_0x5df702);}}}return _0x126982[_0xc360('0x19')];};};Realtime[_0xc360('0x3b')][_0xc360('0x48')]=function(){var _0x316cbc=this;return function(_0x2b5f42){if(_0x2b5f42){freeIsNotKey(_0x2b5f42,_0x316cbc[_0xc360('0x1a')],'id');for(var _0x5bab5c=0x0,_0x346bf7={},_0x362ddf={};_0x5bab5c<_0x2b5f42[_0xc360('0x41')];_0x5bab5c+=0x1){_0x346bf7=_0x2b5f42[_0x5bab5c];if(_[_0xc360('0x3d')](_0x316cbc[_0xc360('0x1a')][_0x346bf7['id']])){_0x316cbc[_0xc360('0x1a')][_0x346bf7['id']]=new FreshdeskAccount(_0x346bf7);}else{_0x316cbc[_0xc360('0x3f')](_0x316cbc['freshdeskAccounts'][_0x346bf7['id']],_0x346bf7);}}}return _0x316cbc['freshdeskAccounts'];};};Realtime[_0xc360('0x3b')]['initZohoAccounts']=function(){var _0x193fb6=this;return function(_0x46bf67){if(_0x46bf67){freeIsNotKey(_0x46bf67,_0x193fb6[_0xc360('0x1b')],'id');for(var _0x232cd4=0x0,_0x316451={},_0x55f0de={};_0x232cd4<_0x46bf67['length'];_0x232cd4+=0x1){_0x316451=_0x46bf67[_0x232cd4];if(_[_0xc360('0x3d')](_0x193fb6[_0xc360('0x1b')][_0x316451['id']])){_0x193fb6[_0xc360('0x1b')][_0x316451['id']]=new ZohoAccount(_0x316451);}else{_0x193fb6[_0xc360('0x3f')](_0x193fb6[_0xc360('0x1b')][_0x316451['id']],_0x316451);}}}return _0x193fb6[_0xc360('0x1b')];};};Realtime[_0xc360('0x3b')]['initDeskAccounts']=function(){var _0xc6d7a1=this;return function(_0x4bc92b){if(_0x4bc92b){freeIsNotKey(_0x4bc92b,_0xc6d7a1[_0xc360('0x1c')],'id');for(var _0x4ee91b=0x0,_0x14f194={},_0x383573={};_0x4ee91b<_0x4bc92b[_0xc360('0x41')];_0x4ee91b+=0x1){_0x14f194=_0x4bc92b[_0x4ee91b];if(_['isUndefined'](_0xc6d7a1[_0xc360('0x1c')][_0x14f194['id']])){_0xc6d7a1['deskAccounts'][_0x14f194['id']]=new DeskAccount(_0x14f194);}else{_0xc6d7a1[_0xc360('0x3f')](_0xc6d7a1[_0xc360('0x1c')][_0x14f194['id']],_0x14f194);}}}return _0xc6d7a1[_0xc360('0x1c')];};};Realtime[_0xc360('0x3b')]['initSugarcrmAccounts']=function(){var _0xc283d0=this;return function(_0x5dbb52){if(_0x5dbb52){freeIsNotKey(_0x5dbb52,_0xc283d0[_0xc360('0x49')],'id');for(var _0x320076=0x0,_0x110f28={},_0xaf5fc6={};_0x320076<_0x5dbb52[_0xc360('0x41')];_0x320076+=0x1){_0x110f28=_0x5dbb52[_0x320076];if(_[_0xc360('0x3d')](_0xc283d0[_0xc360('0x49')][_0x110f28['id']])){_0xc283d0[_0xc360('0x49')][_0x110f28['id']]=new SugarcrmAccount(_0x110f28);}else{_0xc283d0[_0xc360('0x3f')](_0xc283d0[_0xc360('0x49')][_0x110f28['id']],_0x110f28);}}}return _0xc283d0[_0xc360('0x49')];};};Realtime[_0xc360('0x3b')][_0xc360('0x4a')]=function(){var _0x1d33bc=this;return function(_0xa39ddb){if(_0xa39ddb){freeIsNotKey(_0xa39ddb,_0x1d33bc[_0xc360('0x1d')],'id');for(var _0x37e9dd=0x0,_0x5e2d97={},_0x4e815e={};_0x37e9dd<_0xa39ddb[_0xc360('0x41')];_0x37e9dd+=0x1){_0x5e2d97=_0xa39ddb[_0x37e9dd];if(_[_0xc360('0x3d')](_0x1d33bc[_0xc360('0x1d')][_0x5e2d97['id']])){_0x1d33bc[_0xc360('0x1d')][_0x5e2d97['id']]=new VtigerAccount(_0x5e2d97);}else{_0x1d33bc[_0xc360('0x3f')](_0x1d33bc[_0xc360('0x1d')][_0x5e2d97['id']],_0x5e2d97);}}}return _0x1d33bc['vtigerAccounts'];};};Realtime[_0xc360('0x3b')][_0xc360('0x4b')]=function(){var _0xc20f6=this;return function(_0x11778b){if(_0x11778b){freeIsNotKey(_0x11778b,_0xc20f6['servicenowAccounts'],'id');for(var _0x1d416a=0x0,_0x480023={},_0x1c772c={};_0x1d416a<_0x11778b[_0xc360('0x41')];_0x1d416a+=0x1){_0x480023=_0x11778b[_0x1d416a];if(_['isUndefined'](_0xc20f6[_0xc360('0x1e')][_0x480023['id']])){_0xc20f6[_0xc360('0x1e')][_0x480023['id']]=new ServicenowAccount(_0x480023);}else{_0xc20f6['mergeFromDatabase'](_0xc20f6[_0xc360('0x1e')][_0x480023['id']],_0x480023);}}}return _0xc20f6['servicenowAccounts'];};};Realtime['prototype'][_0xc360('0x4c')]=function(){var _0x2435d0=this;return function(_0x520f70){if(_0x520f70){freeIsNotKey(_0x520f70,_0x2435d0[_0xc360('0x1f')],'id');for(var _0x496441=0x0,_0x5eafda={},_0x107b8b={};_0x496441<_0x520f70[_0xc360('0x41')];_0x496441+=0x1){_0x5eafda=_0x520f70[_0x496441];if(_['isUndefined'](_0x2435d0['dynamics365Accounts'][_0x5eafda['id']])){_0x2435d0[_0xc360('0x1f')][_0x5eafda['id']]=new Dynamics365Account(_0x5eafda);}else{_0x2435d0[_0xc360('0x3f')](_0x2435d0[_0xc360('0x1f')][_0x5eafda['id']],_0x5eafda);}}}return _0x2435d0['dynamics365Accounts'];};};Realtime[_0xc360('0x3b')]['initFreshsalesAccounts']=function(){var _0xfc2de4=this;return function(_0x2c3c95){if(_0x2c3c95){freeIsNotKey(_0x2c3c95,_0xfc2de4['freshsalesAccounts'],'id');for(var _0xc41e17=0x0,_0x35d3db={},_0x241e6f={};_0xc41e17<_0x2c3c95[_0xc360('0x41')];_0xc41e17+=0x1){_0x35d3db=_0x2c3c95[_0xc41e17];if(_[_0xc360('0x3d')](_0xfc2de4[_0xc360('0x20')][_0x35d3db['id']])){_0xfc2de4['freshsalesAccounts'][_0x35d3db['id']]=new FreshsalesAccount(_0x35d3db);}else{_0xfc2de4[_0xc360('0x3f')](_0xfc2de4[_0xc360('0x20')][_0x35d3db['id']],_0x35d3db);}}}return _0xfc2de4['freshsalesAccounts'];};};Realtime['prototype'][_0xc360('0x4d')]=function(){var _0x1976a2=this;return function(_0x43e0df){for(var _0x2acba0=0x0;_0x2acba0<_0x43e0df['length'];_0x2acba0+=0x1){_[_0xc360('0x4e')](_0x1976a2['voiceQueues'][_0x43e0df[_0x2acba0]['name']],_0x43e0df[_0x2acba0]);}return _0x1976a2[_0xc360('0x11')];};};Realtime[_0xc360('0x3b')][_0xc360('0x4f')]=function(){var _0x43582b=this;return function(_0x2fff06){clearVoiceQueues(_0x43582b[_0xc360('0x11')]);if(_0x2fff06){_0x2fff06=_[_0xc360('0x50')](_0x2fff06,_0xc360('0x51'));for(var _0xe7bfb3 in _0x2fff06){if(_0x2fff06['hasOwnProperty'](_0xe7bfb3)){var _0x124876={};for(var _0x22e80a=0x0;_0x22e80a<_0x2fff06[_0xe7bfb3][_0xc360('0x41')];_0x22e80a+=0x1){var _0xce966d=_0x2fff06[_0xe7bfb3][_0x22e80a]['queue'];if(_0x43582b[_0xc360('0x11')][_0xce966d]){if(_0x2fff06[_0xe7bfb3][_0x22e80a][_0xc360('0x52')]){_0x43582b[_0xc360('0x11')][_0xce966d][_0xc360('0x2f')]+=0x1;}if(_0x2fff06[_0xe7bfb3][_0x22e80a][_0xc360('0x53')]){_0x43582b[_0xc360('0x11')][_0xce966d][_0xc360('0x30')]+=0x1;}_0x43582b[_0xc360('0x11')][_0xce966d][_0xc360('0x2b')]+=moment(_0x2fff06[_0xe7bfb3][_0x22e80a][_0xc360('0x54')])[_0xc360('0x55')](moment(_0x2fff06[_0xe7bfb3][_0x22e80a][_0xc360('0x56')]),_0xc360('0x57'))||0x0;if(_0x22e80a===_0x2fff06[_0xe7bfb3][_0xc360('0x41')]-0x1){_0x43582b[_0xc360('0x11')][_0xce966d][_0xc360('0x2c')]+=moment(_0x2fff06[_0xe7bfb3][_0x22e80a]['queuecallercompleteAt']||_0x2fff06[_0xe7bfb3][_0x22e80a][_0xc360('0x58')]||_0x2fff06[_0xe7bfb3][_0x22e80a][_0xc360('0x59')])[_0xc360('0x55')](moment(_0x2fff06[_0xe7bfb3][_0x22e80a][_0xc360('0x56')]),_0xc360('0x57'))||0x0;_0x43582b['voiceQueues'][_0xce966d][_0xc360('0x29')]+=0x1;if(_0x2fff06[_0xe7bfb3][_0x22e80a][_0xc360('0x5a')]){_0x43582b[_0xc360('0x11')][_0xce966d]['answered']+=0x1;_0x43582b['voiceQueues'][_0xce966d][_0xc360('0x31')]+=moment(_0x2fff06[_0xe7bfb3][_0x22e80a][_0xc360('0x5b')])[_0xc360('0x55')](moment(_0x2fff06[_0xe7bfb3][_0x22e80a]['queuecallerleaveAt']),_0xc360('0x57'))||0x0;}}else{_0x43582b[_0xc360('0x11')][_0xce966d][_0xc360('0x2c')]+=_0x43582b[_0xc360('0x11')][_0xce966d][_0xc360('0x2b')]||0x0;}}}}}}return _0x43582b[_0xc360('0x11')];};};Realtime[_0xc360('0x3b')]['initVoiceCallReports']=function(){var _0x4af58d=this;return function(_0x312bf2){clearVoiceCallReports(_0x4af58d[_0xc360('0x15')]);if(_0x312bf2){for(var _0x1de16d=0x0;_0x1de16d<_0x312bf2[_0xc360('0x41')];_0x1de16d+=0x1){_0x4af58d[_0xc360('0x15')][_0xc360('0x29')]+=0x1;_0x4af58d[_0xc360('0x15')][_0xc360('0x2c')]+=_0x312bf2[_0x1de16d]['duration'];if(_0x312bf2[_0x1de16d]['disposition']===_0xc360('0x5c')){_0x4af58d['outbound'][_0xc360('0x2a')]+=0x1;_0x4af58d[_0xc360('0x15')][_0xc360('0x2b')]+=_0x312bf2[_0x1de16d][_0xc360('0x5d')]-_0x312bf2[_0x1de16d][_0xc360('0x5e')]||0x0;_0x4af58d['outbound'][_0xc360('0x31')]+=_0x312bf2[_0x1de16d][_0xc360('0x5e')];}}}return _0x4af58d[_0xc360('0x15')];};};Realtime['prototype']['initCampaigns']=function(){var _0x2d49a1=this;return function(_0x24cb9b){if(_0x24cb9b){freeIsNotKey(_0x24cb9b,_0x2d49a1['campaigns'],_0xc360('0x25'));for(var _0x2f61f1=0x0,_0x2e0e9b={};_0x2f61f1<_0x24cb9b['length'];_0x2f61f1+=0x1){_0x2e0e9b=_0x24cb9b[_0x2f61f1];if(_[_0xc360('0x3d')](_0x2d49a1[_0xc360('0x13')][_0x2e0e9b[_0xc360('0x25')]])){_0x2d49a1[_0xc360('0x13')][_0x2e0e9b[_0xc360('0x25')]]=new Campaign(_0x2e0e9b);}else{_0x2d49a1[_0xc360('0x3f')](_0x2d49a1[_0xc360('0x13')][_0x2e0e9b[_0xc360('0x25')]],_0x2e0e9b);_0x2d49a1[_0xc360('0x13')][_0x2e0e9b[_0xc360('0x25')]][_0xc360('0x5f')]=_0x2e0e9b[_0xc360('0x60')]?_0x2e0e9b[_0xc360('0x60')]['name']:undefined;}}}return _0x2d49a1[_0xc360('0x13')];};};Realtime[_0xc360('0x3b')][_0xc360('0x61')]=function(){var _0xcf257e=this;return function(_0x402480){if(_0x402480){freeIsNotKey(_0x402480,_0xcf257e[_0xc360('0x62')],'id');for(var _0x28aaae=0x0,_0x346ba6={};_0x28aaae<_0x402480['length'];_0x28aaae+=0x1){_0x346ba6=_0x402480[_0x28aaae];if(_['isUndefined'](_0xcf257e[_0xc360('0x62')][_0x346ba6['id']])){_0xcf257e[_0xc360('0x62')][_0x346ba6['id']]=new VoiceExtension(_0x346ba6);}else{_0xcf257e['mergeFromDatabase'](_0xcf257e[_0xc360('0x62')][_0x346ba6['id']],_0x346ba6);}}}return _0xcf257e[_0xc360('0x62')];};};Realtime[_0xc360('0x3b')][_0xc360('0x63')]=function(){var _0x29b493=this;return function(_0x4a3856){clearCampaigns(_0x29b493[_0xc360('0x13')]);for(var _0x2c3230=0x0;_0x2c3230<_0x4a3856[_0xc360('0x41')];_0x2c3230+=0x1){_[_0xc360('0x4e')](_0x29b493[_0xc360('0x13')][_0x4a3856[_0x2c3230][_0xc360('0x25')]],_0x4a3856[_0x2c3230]);}return _0x29b493['campaigns'];};};Realtime[_0xc360('0x3b')][_0xc360('0x64')]=function(){var _0x25ec8e=this;return function(_0x5969f1){if(_0x5969f1){freeIsNotKey(_0x5969f1,_0x25ec8e[_0xc360('0x21')],'id');for(var _0x2dac93=0x0,_0x15fbe5={},_0x157094={};_0x2dac93<_0x5969f1['length'];_0x2dac93+=0x1){_0x15fbe5=_0x5969f1[_0x2dac93];if(_['isUndefined'](_0x25ec8e[_0xc360('0x21')][_0x15fbe5['id']])){_0x25ec8e['faxAccounts'][_0x15fbe5['id']]=new FaxAccount(_0x15fbe5);}else{_0x25ec8e['mergeFromDatabase'](_0x25ec8e[_0xc360('0x21')][_0x15fbe5['id']],_0x15fbe5);}}}return _0x25ec8e[_0xc360('0x21')];};};module[_0xc360('0x65')]=Realtime;
\ No newline at end of file
+var _0x0b9b=['ivrAnswerCallsDay','isEmpty','unmanaged','abandoned','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','mergeFromDatabase','length','isUndefined','initTrunks','trunks','initVoiceQueues','initTriggers','initSalesforceAccounts','salesforceAccounts','initFreshdeskAccounts','initZohoAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','initFreshsalesAccounts','freshsalesAccounts','merge','initVoiceQueueReports','groupBy','uniqueid','queue','queuecallerexit','queuecallerleaveAt','diff','queuecallerjoinAt','queuecallercompleteAt','queuecallerabandonAt','queuecallerexitAt','seconds','queuecallercomplete','initVoiceCallReports','disposition','ANSWERED','duration','billableseconds','initCampaigns','dialQueueProject','SquareProject','initFaxAccounts','lodash','moment','../model/telephone','../model/template','../model/campaign','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/deskAccount','../model/vtigerAccount','../model/faxAccount','agents','telephones','voiceQueues','triggers','campaigns','templates','outbound','voiceExtensions','channels','queueChannels','outboundChannels','timers','settings','zendeskAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','faxAccounts','mapKeys','hasOwnProperty','format','SIP/%s','name','isNil','interface','total','answered','sumHoldTime','sumDuration','sumBillable','ivrTotalCallsDays'];(function(_0x2fc6fc,_0x19524e){var _0x28869f=function(_0x5ade57){while(--_0x5ade57){_0x2fc6fc['push'](_0x2fc6fc['shift']());}};_0x28869f(++_0x19524e);}(_0x0b9b,0x166));var _0xb0b9=function(_0x4f896a,_0x364b4a){_0x4f896a=_0x4f896a-0x0;var _0x437ce7=_0x0b9b[_0x4f896a];return _0x437ce7;};'use strict';var BPromise=require('bluebird');var util=require('util');var _=require(_0xb0b9('0x0'));var moment=require(_0xb0b9('0x1'));var Agent=require('../model/agent');var Telephone=require(_0xb0b9('0x2'));var Trunk=require('../model/trunk');var VoiceQueue=require('../model/voiceQueue');var Trigger=require('../model/trigger');var Template=require(_0xb0b9('0x3'));var Campaign=require(_0xb0b9('0x4'));var VoiceExtension=require('../model/voiceExtension');var ZendeskAccount=require('../model/zendeskAccount');var SalesforceAccount=require(_0xb0b9('0x5'));var FreshdeskAccount=require(_0xb0b9('0x6'));var SugarcrmAccount=require(_0xb0b9('0x7'));var ZohoAccount=require('../model/zohoAccount');var DeskAccount=require(_0xb0b9('0x8'));var VtigerAccount=require(_0xb0b9('0x9'));var ServicenowAccount=require('../model/servicenowAccount');var Dynamics365Account=require('../model/dynamics365Account');var FreshsalesAccount=require('../model/freshsalesAccount');var FaxAccount=require(_0xb0b9('0xa'));var Realtime=function(){this[_0xb0b9('0xb')]={};this[_0xb0b9('0xc')]={};this['trunks']={};this[_0xb0b9('0xd')]={};this[_0xb0b9('0xe')]={};this[_0xb0b9('0xf')]={};this[_0xb0b9('0x10')]={};this[_0xb0b9('0x11')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0xb0b9('0x12')]={};this[_0xb0b9('0x13')]={};this[_0xb0b9('0x14')]={};this[_0xb0b9('0x15')]={};this[_0xb0b9('0x16')]={};this[_0xb0b9('0x17')]={};this[_0xb0b9('0x18')]={};this['salesforceAccounts']={};this[_0xb0b9('0x19')]={};this[_0xb0b9('0x1a')]={};this[_0xb0b9('0x1b')]={};this[_0xb0b9('0x1c')]={};this[_0xb0b9('0x1d')]={};this[_0xb0b9('0x1e')]={};this[_0xb0b9('0x1f')]={};this['freshsalesAccounts']={};this[_0xb0b9('0x20')]={};};function freeIsNotKey(_0x31c790,_0x50b336,_0x169208){var _0x483a84=_[_0xb0b9('0x21')](_0x31c790,function(_0x4f34a2,_0x99ffa8){return _0x4f34a2[_0x169208];});for(var _0x4a52f0 in _0x50b336){if(_0x50b336[_0xb0b9('0x22')](_0x4a52f0)){if(!_0x483a84[_0x4a52f0]){delete _0x50b336[_0x4a52f0];}}}}function freeIsNotKeySip(_0x945fb7,_0x507130){var _0x124f35=_['mapKeys'](_0x945fb7,function(_0x44c515,_0x5286c0){return util[_0xb0b9('0x23')](_0xb0b9('0x24'),_0x44c515[_0xb0b9('0x25')]);});for(var _0x125445 in _0x507130){if(_0x507130[_0xb0b9('0x22')](_0x125445)){if(!_0x124f35[_0x125445]){delete _0x507130[_0x125445];}}}}function freeIsNotKeyAgent(_0x24f6c0,_0x3c57e0){var _0x599fff=_['mapKeys'](_0x24f6c0,function(_0x599fd0,_0x4cbe41){var _0xd65135=_[_0xb0b9('0x26')](_0x599fd0[_0xb0b9('0x27')])?util[_0xb0b9('0x23')]('SIP/%s',_0x599fd0['name']):_0x599fd0['interface'];return _0xd65135;});for(var _0x450fef in _0x3c57e0){if(_0x3c57e0['hasOwnProperty'](_0x450fef)){if(!_0x599fff[_0x450fef]){delete _0x3c57e0[_0x450fef];}}}}function clearVoiceCallReports(_0x52e56a){_0x52e56a[_0xb0b9('0x28')]=0x0;_0x52e56a[_0xb0b9('0x29')]=0x0;_0x52e56a[_0xb0b9('0x2a')]=0x0;_0x52e56a[_0xb0b9('0x2b')]=0x0;_0x52e56a[_0xb0b9('0x2c')]=0x0;}function clearCampaigns(_0x36417d){if(!_['isEmpty'](_0x36417d)){for(var _0x1ed8e5 in _0x36417d){if(_0x36417d['hasOwnProperty'](_0x1ed8e5)){_0x36417d[_0x1ed8e5][_0xb0b9('0x2d')]=0x0;_0x36417d[_0x1ed8e5][_0xb0b9('0x2e')]=0x0;}}}}function clearVoiceQueues(_0x1dce3b){if(!_[_0xb0b9('0x2f')](_0x1dce3b)){for(var _0x270339 in _0x1dce3b){if(_0x1dce3b[_0xb0b9('0x22')](_0x270339)){_0x1dce3b[_0x270339]['total']=0x0;_0x1dce3b[_0x270339][_0xb0b9('0x29')]=0x0;_0x1dce3b[_0x270339][_0xb0b9('0x30')]=0x0;_0x1dce3b[_0x270339][_0xb0b9('0x31')]=0x0;_0x1dce3b[_0x270339]['sumHoldTime']=0x0;_0x1dce3b[_0x270339]['sumDuration']=0x0;_0x1dce3b[_0x270339][_0xb0b9('0x2c')]=0x0;_0x1dce3b[_0x270339][_0xb0b9('0x32')]=0x0;_0x1dce3b[_0x270339][_0xb0b9('0x33')]=0x0;_0x1dce3b[_0x270339][_0xb0b9('0x34')]=0x0;_0x1dce3b[_0x270339]['outboundCongestionCallsDay']=0x0;_0x1dce3b[_0x270339][_0xb0b9('0x35')]=0x0;_0x1dce3b[_0x270339][_0xb0b9('0x36')]=0x0;_0x1dce3b[_0x270339]['outboundDropCallsDayTimeout']=0x0;_0x1dce3b[_0x270339]['outboundDropCallsDayCallersExit']=0x0;_0x1dce3b[_0x270339][_0xb0b9('0x37')]=0x0;_0x1dce3b[_0x270339][_0xb0b9('0x38')]=0x0;_0x1dce3b[_0x270339][_0xb0b9('0x39')]=0x0;_0x1dce3b[_0x270339]['outboundReCallsDay']=0x0;_0x1dce3b[_0x270339]['outboundAnswerAgiCallsDay']=0x0;_0x1dce3b[_0x270339][_0xb0b9('0x3a')]=0x0;_0x1dce3b[_0x270339][_0xb0b9('0x3b')]=!![];}}}}Realtime[_0xb0b9('0x3c')][_0xb0b9('0x3d')]=function(_0x388ff4,_0x1f5c20){for(var _0x1175d4 in _0x1f5c20){if(_0x388ff4[_0xb0b9('0x22')](_0x1175d4)){_0x388ff4[_0x1175d4]=_0x1f5c20[_0x1175d4];}}};Realtime['prototype']['initAgents']=function(){var _0x2f524f=this;return function(_0x215197){if(_0x215197){freeIsNotKeyAgent(_0x215197,_0x2f524f['agents']);for(var _0x16fe8a=0x0,_0x564d26={},_0x359449={};_0x16fe8a<_0x215197[_0xb0b9('0x3e')];_0x16fe8a+=0x1){_0x564d26=_0x215197[_0x16fe8a];var _0x3ee87c=_['isNil'](_0x564d26[_0xb0b9('0x27')])?util['format']('SIP/%s',_0x564d26['name']):_0x564d26[_0xb0b9('0x27')];if(_[_0xb0b9('0x3f')](_0x2f524f[_0xb0b9('0xb')][_0x3ee87c])){_0x2f524f['agents'][_0x3ee87c]=new Agent(_0x564d26);}else{_0x2f524f[_0xb0b9('0x3d')](_0x2f524f[_0xb0b9('0xb')][_0x3ee87c],_0x564d26);}}}return _0x2f524f[_0xb0b9('0xb')];};};Realtime[_0xb0b9('0x3c')]['initTelephones']=function(){var _0x5c6af1=this;return function(_0x462995){if(_0x462995){freeIsNotKeySip(_0x462995,_0x5c6af1[_0xb0b9('0xc')]);for(var _0x19ad3b=0x0,_0x4167e2={},_0x381505={};_0x19ad3b<_0x462995[_0xb0b9('0x3e')];_0x19ad3b+=0x1){_0x4167e2=_0x462995[_0x19ad3b];if(_['isUndefined'](_0x5c6af1[_0xb0b9('0xc')][util[_0xb0b9('0x23')]('SIP/%s',_0x4167e2['name'])])){_0x5c6af1[_0xb0b9('0xc')][util[_0xb0b9('0x23')]('SIP/%s',_0x4167e2[_0xb0b9('0x25')])]=new Telephone(_0x4167e2);}else{_0x5c6af1[_0xb0b9('0x3d')](_0x5c6af1[_0xb0b9('0xc')][util[_0xb0b9('0x23')](_0xb0b9('0x24'),_0x4167e2[_0xb0b9('0x25')])],_0x4167e2);}}}return _0x5c6af1[_0xb0b9('0xc')];};};Realtime[_0xb0b9('0x3c')][_0xb0b9('0x40')]=function(){var _0x585c6e=this;return function(_0x2fdd64){if(_0x2fdd64){freeIsNotKeySip(_0x2fdd64,_0x585c6e['trunks']);for(var _0x565fe7=0x0,_0x2adfb3={},_0x11ac06={};_0x565fe7<_0x2fdd64[_0xb0b9('0x3e')];_0x565fe7+=0x1){_0x2adfb3=_0x2fdd64[_0x565fe7];if(_[_0xb0b9('0x3f')](_0x585c6e[_0xb0b9('0x41')][util['format'](_0xb0b9('0x24'),_0x2adfb3[_0xb0b9('0x25')])])){_0x585c6e[_0xb0b9('0x41')][util[_0xb0b9('0x23')]('SIP/%s',_0x2adfb3[_0xb0b9('0x25')])]=new Trunk(_0x2adfb3);}else{_0x585c6e[_0xb0b9('0x3d')](_0x585c6e[_0xb0b9('0x41')][util[_0xb0b9('0x23')]('SIP/%s',_0x2adfb3[_0xb0b9('0x25')])],_0x2adfb3);}}}return _0x585c6e['trunks'];};};Realtime['prototype'][_0xb0b9('0x42')]=function(){var _0x3494ee=this;return function(_0x49207d){if(_0x49207d){freeIsNotKey(_0x49207d,_0x3494ee[_0xb0b9('0xd')],_0xb0b9('0x25'));for(var _0x4a0fe1=0x0,_0x4a6367={},_0x3b7536={};_0x4a0fe1<_0x49207d[_0xb0b9('0x3e')];_0x4a0fe1+=0x1){_0x4a6367=_0x49207d[_0x4a0fe1];if(_[_0xb0b9('0x3f')](_0x3494ee[_0xb0b9('0xd')][_0x4a6367[_0xb0b9('0x25')]])){_0x3494ee[_0xb0b9('0xd')][_0x4a6367[_0xb0b9('0x25')]]=new VoiceQueue(_0x4a6367);}else{_0x3494ee[_0xb0b9('0x3d')](_0x3494ee[_0xb0b9('0xd')][_0x4a6367['name']],_0x4a6367);}}}return _0x3494ee['voiceQueues'];};};Realtime[_0xb0b9('0x3c')][_0xb0b9('0x43')]=function(){var _0x3dc5fd=this;return function(_0x226294){if(_0x226294){freeIsNotKey(_0x226294,_0x3dc5fd[_0xb0b9('0xe')],'id');for(var _0x498285=0x0,_0x4914c9={},_0xc273c1={};_0x498285<_0x226294[_0xb0b9('0x3e')];_0x498285+=0x1){_0x4914c9=_0x226294[_0x498285];if(_[_0xb0b9('0x3f')](_0x3dc5fd[_0xb0b9('0xe')][_0x4914c9['id']])){_0x3dc5fd['triggers'][_0x4914c9['id']]=new Trigger(_0x4914c9);}else{_0x3dc5fd[_0xb0b9('0x3d')](_0x3dc5fd[_0xb0b9('0xe')][_0x4914c9['id']],_0x4914c9);}}}return _0x3dc5fd[_0xb0b9('0xe')];};};Realtime[_0xb0b9('0x3c')]['initTemplates']=function(){var _0x56b7fc=this;return function(_0x24c249){if(_0x24c249){freeIsNotKey(_0x24c249,_0x56b7fc[_0xb0b9('0x10')],'id');for(var _0x22f30a=0x0,_0x5951be={},_0x17c161={};_0x22f30a<_0x24c249['length'];_0x22f30a+=0x1){_0x5951be=_0x24c249[_0x22f30a];if(_[_0xb0b9('0x3f')](_0x56b7fc[_0xb0b9('0x10')][_0x5951be['id']])){_0x56b7fc[_0xb0b9('0x10')][_0x5951be['id']]=new Template(_0x5951be);}else{_0x56b7fc[_0xb0b9('0x3d')](_0x56b7fc[_0xb0b9('0x10')][_0x5951be['id']],_0x5951be);}}}return _0x56b7fc[_0xb0b9('0x10')];};};Realtime[_0xb0b9('0x3c')]['initZendeskAccounts']=function(){var _0x1457b7=this;return function(_0x5a3ce9){if(_0x5a3ce9){freeIsNotKey(_0x5a3ce9,_0x1457b7[_0xb0b9('0x18')],'id');for(var _0x4231bb=0x0,_0x17305e={},_0x3a1e58={};_0x4231bb<_0x5a3ce9['length'];_0x4231bb+=0x1){_0x17305e=_0x5a3ce9[_0x4231bb];if(_[_0xb0b9('0x3f')](_0x1457b7[_0xb0b9('0x18')][_0x17305e['id']])){_0x1457b7[_0xb0b9('0x18')][_0x17305e['id']]=new ZendeskAccount(_0x17305e);}else{_0x1457b7[_0xb0b9('0x3d')](_0x1457b7['zendeskAccounts'][_0x17305e['id']],_0x17305e);}}}return _0x1457b7['zendeskAccounts'];};};Realtime['prototype'][_0xb0b9('0x44')]=function(){var _0x3d808b=this;return function(_0x5c7820){if(_0x5c7820){freeIsNotKey(_0x5c7820,_0x3d808b[_0xb0b9('0x45')],'id');for(var _0x205ff0=0x0,_0x44f1a2={},_0x39f940={};_0x205ff0<_0x5c7820['length'];_0x205ff0+=0x1){_0x44f1a2=_0x5c7820[_0x205ff0];if(_[_0xb0b9('0x3f')](_0x3d808b['salesforceAccounts'][_0x44f1a2['id']])){_0x3d808b[_0xb0b9('0x45')][_0x44f1a2['id']]=new SalesforceAccount(_0x44f1a2);}else{_0x3d808b[_0xb0b9('0x3d')](_0x3d808b['salesforceAccounts'][_0x44f1a2['id']],_0x44f1a2);}}}return _0x3d808b[_0xb0b9('0x45')];};};Realtime[_0xb0b9('0x3c')][_0xb0b9('0x46')]=function(){var _0x3c3f84=this;return function(_0x6bc7f0){if(_0x6bc7f0){freeIsNotKey(_0x6bc7f0,_0x3c3f84[_0xb0b9('0x1a')],'id');for(var _0x1bad7c=0x0,_0x5d63cb={},_0x154848={};_0x1bad7c<_0x6bc7f0['length'];_0x1bad7c+=0x1){_0x5d63cb=_0x6bc7f0[_0x1bad7c];if(_[_0xb0b9('0x3f')](_0x3c3f84[_0xb0b9('0x1a')][_0x5d63cb['id']])){_0x3c3f84[_0xb0b9('0x1a')][_0x5d63cb['id']]=new FreshdeskAccount(_0x5d63cb);}else{_0x3c3f84['mergeFromDatabase'](_0x3c3f84[_0xb0b9('0x1a')][_0x5d63cb['id']],_0x5d63cb);}}}return _0x3c3f84[_0xb0b9('0x1a')];};};Realtime[_0xb0b9('0x3c')][_0xb0b9('0x47')]=function(){var _0x2ba28d=this;return function(_0x2a6666){if(_0x2a6666){freeIsNotKey(_0x2a6666,_0x2ba28d[_0xb0b9('0x1b')],'id');for(var _0x4f7756=0x0,_0x58fa7d={},_0x2e6407={};_0x4f7756<_0x2a6666[_0xb0b9('0x3e')];_0x4f7756+=0x1){_0x58fa7d=_0x2a6666[_0x4f7756];if(_[_0xb0b9('0x3f')](_0x2ba28d[_0xb0b9('0x1b')][_0x58fa7d['id']])){_0x2ba28d[_0xb0b9('0x1b')][_0x58fa7d['id']]=new ZohoAccount(_0x58fa7d);}else{_0x2ba28d[_0xb0b9('0x3d')](_0x2ba28d[_0xb0b9('0x1b')][_0x58fa7d['id']],_0x58fa7d);}}}return _0x2ba28d['zohoAccounts'];};};Realtime[_0xb0b9('0x3c')][_0xb0b9('0x48')]=function(){var _0x3ce913=this;return function(_0x4ec766){if(_0x4ec766){freeIsNotKey(_0x4ec766,_0x3ce913['deskAccounts'],'id');for(var _0x4cf429=0x0,_0x4254aa={},_0x4eaf9f={};_0x4cf429<_0x4ec766[_0xb0b9('0x3e')];_0x4cf429+=0x1){_0x4254aa=_0x4ec766[_0x4cf429];if(_[_0xb0b9('0x3f')](_0x3ce913[_0xb0b9('0x1c')][_0x4254aa['id']])){_0x3ce913[_0xb0b9('0x1c')][_0x4254aa['id']]=new DeskAccount(_0x4254aa);}else{_0x3ce913[_0xb0b9('0x3d')](_0x3ce913[_0xb0b9('0x1c')][_0x4254aa['id']],_0x4254aa);}}}return _0x3ce913[_0xb0b9('0x1c')];};};Realtime[_0xb0b9('0x3c')][_0xb0b9('0x49')]=function(){var _0x5f4af1=this;return function(_0x1f2fab){if(_0x1f2fab){freeIsNotKey(_0x1f2fab,_0x5f4af1[_0xb0b9('0x19')],'id');for(var _0x5aa7bc=0x0,_0x32b343={},_0x471de0={};_0x5aa7bc<_0x1f2fab[_0xb0b9('0x3e')];_0x5aa7bc+=0x1){_0x32b343=_0x1f2fab[_0x5aa7bc];if(_[_0xb0b9('0x3f')](_0x5f4af1[_0xb0b9('0x19')][_0x32b343['id']])){_0x5f4af1[_0xb0b9('0x19')][_0x32b343['id']]=new SugarcrmAccount(_0x32b343);}else{_0x5f4af1[_0xb0b9('0x3d')](_0x5f4af1[_0xb0b9('0x19')][_0x32b343['id']],_0x32b343);}}}return _0x5f4af1[_0xb0b9('0x19')];};};Realtime[_0xb0b9('0x3c')][_0xb0b9('0x4a')]=function(){var _0x52b0bb=this;return function(_0x43eb67){if(_0x43eb67){freeIsNotKey(_0x43eb67,_0x52b0bb[_0xb0b9('0x1d')],'id');for(var _0x3fda08=0x0,_0x488132={},_0x1b5a65={};_0x3fda08<_0x43eb67['length'];_0x3fda08+=0x1){_0x488132=_0x43eb67[_0x3fda08];if(_[_0xb0b9('0x3f')](_0x52b0bb[_0xb0b9('0x1d')][_0x488132['id']])){_0x52b0bb[_0xb0b9('0x1d')][_0x488132['id']]=new VtigerAccount(_0x488132);}else{_0x52b0bb[_0xb0b9('0x3d')](_0x52b0bb[_0xb0b9('0x1d')][_0x488132['id']],_0x488132);}}}return _0x52b0bb[_0xb0b9('0x1d')];};};Realtime[_0xb0b9('0x3c')][_0xb0b9('0x4b')]=function(){var _0x9fef47=this;return function(_0x58944f){if(_0x58944f){freeIsNotKey(_0x58944f,_0x9fef47[_0xb0b9('0x1e')],'id');for(var _0x3ed338=0x0,_0x9c34da={},_0x33bf02={};_0x3ed338<_0x58944f[_0xb0b9('0x3e')];_0x3ed338+=0x1){_0x9c34da=_0x58944f[_0x3ed338];if(_[_0xb0b9('0x3f')](_0x9fef47[_0xb0b9('0x1e')][_0x9c34da['id']])){_0x9fef47['servicenowAccounts'][_0x9c34da['id']]=new ServicenowAccount(_0x9c34da);}else{_0x9fef47['mergeFromDatabase'](_0x9fef47[_0xb0b9('0x1e')][_0x9c34da['id']],_0x9c34da);}}}return _0x9fef47['servicenowAccounts'];};};Realtime[_0xb0b9('0x3c')]['initDynamics365Accounts']=function(){var _0x1d0297=this;return function(_0x5dc950){if(_0x5dc950){freeIsNotKey(_0x5dc950,_0x1d0297[_0xb0b9('0x1f')],'id');for(var _0x2929aa=0x0,_0x507399={},_0xb73068={};_0x2929aa<_0x5dc950['length'];_0x2929aa+=0x1){_0x507399=_0x5dc950[_0x2929aa];if(_[_0xb0b9('0x3f')](_0x1d0297[_0xb0b9('0x1f')][_0x507399['id']])){_0x1d0297[_0xb0b9('0x1f')][_0x507399['id']]=new Dynamics365Account(_0x507399);}else{_0x1d0297[_0xb0b9('0x3d')](_0x1d0297['dynamics365Accounts'][_0x507399['id']],_0x507399);}}}return _0x1d0297[_0xb0b9('0x1f')];};};Realtime['prototype'][_0xb0b9('0x4c')]=function(){var _0x4758e6=this;return function(_0x71a0e){if(_0x71a0e){freeIsNotKey(_0x71a0e,_0x4758e6['freshsalesAccounts'],'id');for(var _0x1a1212=0x0,_0x30b1ca={},_0x1d8999={};_0x1a1212<_0x71a0e[_0xb0b9('0x3e')];_0x1a1212+=0x1){_0x30b1ca=_0x71a0e[_0x1a1212];if(_[_0xb0b9('0x3f')](_0x4758e6[_0xb0b9('0x4d')][_0x30b1ca['id']])){_0x4758e6[_0xb0b9('0x4d')][_0x30b1ca['id']]=new FreshsalesAccount(_0x30b1ca);}else{_0x4758e6[_0xb0b9('0x3d')](_0x4758e6['freshsalesAccounts'][_0x30b1ca['id']],_0x30b1ca);}}}return _0x4758e6[_0xb0b9('0x4d')];};};Realtime[_0xb0b9('0x3c')]['initVoiceQueueHopperHistory']=function(){var _0xef4ee0=this;return function(_0x36f593){for(var _0x3f62c2=0x0;_0x3f62c2<_0x36f593[_0xb0b9('0x3e')];_0x3f62c2+=0x1){_[_0xb0b9('0x4e')](_0xef4ee0[_0xb0b9('0xd')][_0x36f593[_0x3f62c2][_0xb0b9('0x25')]],_0x36f593[_0x3f62c2]);}return _0xef4ee0[_0xb0b9('0xd')];};};Realtime[_0xb0b9('0x3c')][_0xb0b9('0x4f')]=function(){var _0x2b46e4=this;return function(_0x375a83){clearVoiceQueues(_0x2b46e4[_0xb0b9('0xd')]);if(_0x375a83){_0x375a83=_[_0xb0b9('0x50')](_0x375a83,_0xb0b9('0x51'));for(var _0x5dead6 in _0x375a83){if(_0x375a83[_0xb0b9('0x22')](_0x5dead6)){var _0x46ed58={};for(var _0x5b775f=0x0;_0x5b775f<_0x375a83[_0x5dead6][_0xb0b9('0x3e')];_0x5b775f+=0x1){var _0x4a7aba=_0x375a83[_0x5dead6][_0x5b775f][_0xb0b9('0x52')];if(_0x2b46e4[_0xb0b9('0xd')][_0x4a7aba]){if(_0x375a83[_0x5dead6][_0x5b775f][_0xb0b9('0x53')]){_0x2b46e4[_0xb0b9('0xd')][_0x4a7aba][_0xb0b9('0x30')]+=0x1;}if(_0x375a83[_0x5dead6][_0x5b775f]['queuecallerabandon']){_0x2b46e4[_0xb0b9('0xd')][_0x4a7aba]['abandoned']+=0x1;}_0x2b46e4[_0xb0b9('0xd')][_0x4a7aba][_0xb0b9('0x2a')]+=moment(_0x375a83[_0x5dead6][_0x5b775f][_0xb0b9('0x54')])[_0xb0b9('0x55')](moment(_0x375a83[_0x5dead6][_0x5b775f][_0xb0b9('0x56')]),'seconds')||0x0;if(_0x5b775f===_0x375a83[_0x5dead6]['length']-0x1){_0x2b46e4[_0xb0b9('0xd')][_0x4a7aba][_0xb0b9('0x2b')]+=moment(_0x375a83[_0x5dead6][_0x5b775f][_0xb0b9('0x57')]||_0x375a83[_0x5dead6][_0x5b775f][_0xb0b9('0x58')]||_0x375a83[_0x5dead6][_0x5b775f][_0xb0b9('0x59')])[_0xb0b9('0x55')](moment(_0x375a83[_0x5dead6][_0x5b775f][_0xb0b9('0x56')]),_0xb0b9('0x5a'))||0x0;_0x2b46e4['voiceQueues'][_0x4a7aba]['total']+=0x1;if(_0x375a83[_0x5dead6][_0x5b775f][_0xb0b9('0x5b')]){_0x2b46e4[_0xb0b9('0xd')][_0x4a7aba]['answered']+=0x1;_0x2b46e4[_0xb0b9('0xd')][_0x4a7aba][_0xb0b9('0x2c')]+=moment(_0x375a83[_0x5dead6][_0x5b775f][_0xb0b9('0x57')])[_0xb0b9('0x55')](moment(_0x375a83[_0x5dead6][_0x5b775f][_0xb0b9('0x54')]),'seconds')||0x0;}}else{_0x2b46e4[_0xb0b9('0xd')][_0x4a7aba][_0xb0b9('0x2b')]+=_0x2b46e4[_0xb0b9('0xd')][_0x4a7aba][_0xb0b9('0x2a')]||0x0;}}}}}}return _0x2b46e4['voiceQueues'];};};Realtime['prototype'][_0xb0b9('0x5c')]=function(){var _0x41d455=this;return function(_0x5b4b62){clearVoiceCallReports(_0x41d455['outbound']);if(_0x5b4b62){for(var _0xcefbdf=0x0;_0xcefbdf<_0x5b4b62[_0xb0b9('0x3e')];_0xcefbdf+=0x1){_0x41d455['outbound'][_0xb0b9('0x28')]+=0x1;_0x41d455[_0xb0b9('0x11')][_0xb0b9('0x2b')]+=_0x5b4b62[_0xcefbdf]['duration'];if(_0x5b4b62[_0xcefbdf][_0xb0b9('0x5d')]===_0xb0b9('0x5e')){_0x41d455[_0xb0b9('0x11')][_0xb0b9('0x29')]+=0x1;_0x41d455[_0xb0b9('0x11')]['sumHoldTime']+=_0x5b4b62[_0xcefbdf][_0xb0b9('0x5f')]-_0x5b4b62[_0xcefbdf][_0xb0b9('0x60')]||0x0;_0x41d455[_0xb0b9('0x11')][_0xb0b9('0x2c')]+=_0x5b4b62[_0xcefbdf][_0xb0b9('0x60')];}}}return _0x41d455[_0xb0b9('0x11')];};};Realtime[_0xb0b9('0x3c')][_0xb0b9('0x61')]=function(){var _0xc8dd76=this;return function(_0x227f11){if(_0x227f11){freeIsNotKey(_0x227f11,_0xc8dd76[_0xb0b9('0xf')],_0xb0b9('0x25'));for(var _0x55cd75=0x0,_0x56bcd3={};_0x55cd75<_0x227f11['length'];_0x55cd75+=0x1){_0x56bcd3=_0x227f11[_0x55cd75];if(_[_0xb0b9('0x3f')](_0xc8dd76[_0xb0b9('0xf')][_0x56bcd3[_0xb0b9('0x25')]])){_0xc8dd76[_0xb0b9('0xf')][_0x56bcd3[_0xb0b9('0x25')]]=new Campaign(_0x56bcd3);}else{_0xc8dd76[_0xb0b9('0x3d')](_0xc8dd76[_0xb0b9('0xf')][_0x56bcd3[_0xb0b9('0x25')]],_0x56bcd3);_0xc8dd76['campaigns'][_0x56bcd3[_0xb0b9('0x25')]][_0xb0b9('0x62')]=_0x56bcd3[_0xb0b9('0x63')]?_0x56bcd3['SquareProject'][_0xb0b9('0x25')]:undefined;}}}return _0xc8dd76['campaigns'];};};Realtime[_0xb0b9('0x3c')]['initVoiceExtensions']=function(){var _0x3d7ada=this;return function(_0x4cfd40){if(_0x4cfd40){freeIsNotKey(_0x4cfd40,_0x3d7ada['voiceExtensions'],'id');for(var _0x32eb74=0x0,_0x1e77d1={};_0x32eb74<_0x4cfd40[_0xb0b9('0x3e')];_0x32eb74+=0x1){_0x1e77d1=_0x4cfd40[_0x32eb74];if(_[_0xb0b9('0x3f')](_0x3d7ada['voiceExtensions'][_0x1e77d1['id']])){_0x3d7ada[_0xb0b9('0x12')][_0x1e77d1['id']]=new VoiceExtension(_0x1e77d1);}else{_0x3d7ada['mergeFromDatabase'](_0x3d7ada['voiceExtensions'][_0x1e77d1['id']],_0x1e77d1);}}}return _0x3d7ada[_0xb0b9('0x12')];};};Realtime[_0xb0b9('0x3c')]['initCampaignHopperHistory']=function(){var _0x35aba3=this;return function(_0x16bdf8){clearCampaigns(_0x35aba3[_0xb0b9('0xf')]);for(var _0xcd3349=0x0;_0xcd3349<_0x16bdf8['length'];_0xcd3349+=0x1){_[_0xb0b9('0x4e')](_0x35aba3[_0xb0b9('0xf')][_0x16bdf8[_0xcd3349]['name']],_0x16bdf8[_0xcd3349]);}return _0x35aba3[_0xb0b9('0xf')];};};Realtime['prototype'][_0xb0b9('0x64')]=function(){var _0x5be601=this;return function(_0x3ac3d4){if(_0x3ac3d4){freeIsNotKey(_0x3ac3d4,_0x5be601[_0xb0b9('0x20')],'id');for(var _0x256772=0x0,_0x1e234b={},_0x4a70fc={};_0x256772<_0x3ac3d4[_0xb0b9('0x3e')];_0x256772+=0x1){_0x1e234b=_0x3ac3d4[_0x256772];if(_[_0xb0b9('0x3f')](_0x5be601[_0xb0b9('0x20')][_0x1e234b['id']])){_0x5be601[_0xb0b9('0x20')][_0x1e234b['id']]=new FaxAccount(_0x1e234b);}else{_0x5be601[_0xb0b9('0x3d')](_0x5be601[_0xb0b9('0x20')][_0x1e234b['id']],_0x1e234b);}}}return _0x5be601[_0xb0b9('0x20')];};};module['exports']=Realtime;
\ No newline at end of file
index a793ffd..a3a7cad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47a1=['createdAt','exten','connectedlinename','xcally-motion-dialer','isArray','forEach','voiceDialReport','Local','substring','indexOf','mobile','phone','blindTransfer','exports','lodash','moment','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','agents','telephones','sync','realtime','xdr','disabled','voiceQueueReport','bind','custom:voiceCallReport','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','attendedtransfer','attendedTransfer','prototype','findAgent','accountcode','isNil','find','format','SIP/%s','name','length','connectedlinenum','lastAssignedTo','interface','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','match','keys','getCallType','split','getAgentByInternal','calleridnum','outbound','destination','type','dialer','queue','lastdata','context','from-sip','xcally-motion-preview','destinationchannel','channel','callerid','calleridpreview','originatecalleridnum','disposition','ANSWERED','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','uniqueid','UserId','membername','create','monitor','monitors','filename'];(function(_0x22666d,_0x5bc546){var _0x1677d3=function(_0x1c874c){while(--_0x1c874c){_0x22666d['push'](_0x22666d['shift']());}};_0x1677d3(++_0x5bc546);}(_0x47a1,0x6a));var _0x147a=function(_0x410f00,_0x273e05){_0x410f00=_0x410f00-0x0;var _0x436d48=_0x47a1[_0x410f00];return _0x436d48;};'use strict';var _=require(_0x147a('0x0'));var moment=require(_0x147a('0x1'));var util=require(_0x147a('0x2'));var config=require(_0x147a('0x3'));var ami=require(_0x147a('0x4'));var RpcVoiceAgentReport=require(_0x147a('0x5'));var RpcVoiceCallReport=require(_0x147a('0x6'));var RpcVoiceDialReport=require('../rpc/voiceDialReport');var RpcMemberReport=require(_0x147a('0x7'));var RpcVoiceQueueReport=require(_0x147a('0x8'));var RpcVoiceRecording=require(_0x147a('0x9'));var RpcVoiceTransferReport=require(_0x147a('0xa'));var VoiceQueueReport=require(_0x147a('0xb'));var VoiceCallReport=require(_0x147a('0xc'));var VoiceAgentReport=require(_0x147a('0xd'));var VoiceDialReport=require(_0x147a('0xe'));var UserReport=require('./userReport');function Report(_0x490e4b){this['realtime']=_0x490e4b;this[_0x147a('0xf')]=_0x490e4b[_0x147a('0xf')];this['telephones']=_0x490e4b[_0x147a('0x10')];}Report['prototype'][_0x147a('0x11')]=function(_0xe62bf7){var _0x265ad1=new VoiceQueueReport(this[_0x147a('0x12')]);var _0x221f5e=new VoiceAgentReport(this[_0x147a('0x12')]);var _0x3aa9e5=new VoiceDialReport(this[_0x147a('0x12')]);var _0x4acd86=new VoiceCallReport(this[_0x147a('0x12')]);var _0x58d07a=new UserReport(this[_0x147a('0x12')]);if(config[_0x147a('0x13')]&&config[_0x147a('0x13')][_0x147a('0x14')]){ami['on']('custom:voiceQueueReport',this[_0x147a('0x15')][_0x147a('0x16')](this));ami['on'](_0x147a('0x17'),this['voiceCallReport'][_0x147a('0x16')](this));ami['on'](_0x147a('0x18'),this[_0x147a('0x19')]['bind'](this));ami['on'](_0x147a('0x1a'),this['voiceDialReport'][_0x147a('0x16')](this));ami['on']('blindtransfer',this['blindTransfer'][_0x147a('0x16')](this));ami['on'](_0x147a('0x1b'),this[_0x147a('0x1c')][_0x147a('0x16')](this));}};Report[_0x147a('0x1d')][_0x147a('0x1e')]=function(_0xfde8c3){var _0x31dd5e;_0x31dd5e=_['find'](this[_0x147a('0xf')],function(_0x45cad3){return _0x45cad3[_0x147a('0x1f')]==_0xfde8c3||_0x45cad3['name']==_0xfde8c3;});if(_[_0x147a('0x20')](_0x31dd5e)){var _0x47cfa4=_[_0x147a('0x21')](this[_0x147a('0x10')],function(_0x2d3728){return _0x2d3728[_0x147a('0x1f')]==_0xfde8c3||_0x2d3728['name']==_0xfde8c3;});if(_0x47cfa4){_0x31dd5e=_[_0x147a('0x21')](this[_0x147a('0xf')],function(_0xc6e0be){return _0xc6e0be['interface']==util[_0x147a('0x22')](_0x147a('0x23'),_0x47cfa4[_0x147a('0x24')]);});}}return _0x31dd5e;};Report[_0x147a('0x1d')]['voiceQueueReport']=function(_0x2d77ee){for(var _0x3b69b6=0x0;_0x3b69b6<_0x2d77ee[_0x147a('0x25')];_0x3b69b6+=0x1){var _0x5ee7f4=this[_0x147a('0x1e')](_0x2d77ee[_0x3b69b6][_0x147a('0x26')]);if(_0x5ee7f4){_0x2d77ee[_0x3b69b6][_0x147a('0x1f')]=_0x5ee7f4[_0x147a('0x1f')];_0x2d77ee[_0x3b69b6]['assigned']=!![];_0x2d77ee[_0x3b69b6][_0x147a('0x27')]=_0x5ee7f4[_0x147a('0x24')];_0x2d77ee[_0x3b69b6]['interface']=_[_0x147a('0x20')](_0x5ee7f4[_0x147a('0x28')])?util[_0x147a('0x22')](_0x147a('0x23'),_0x5ee7f4[_0x147a('0x24')]):_0x5ee7f4['interface'];if(_0x2d77ee[_0x3b69b6][_0x147a('0x29')]){_0x2d77ee[_0x3b69b6][_0x147a('0x2a')]=moment()[_0x147a('0x22')](_0x147a('0x2b'));}if(_0x2d77ee[_0x3b69b6][_0x147a('0x2c')]){_0x2d77ee[_0x3b69b6]['queuecallerexitAt']=moment()[_0x147a('0x22')](_0x147a('0x2b'));}RpcMemberReport[_0x147a('0x15')](_0x2d77ee[_0x3b69b6]);}RpcVoiceQueueReport['create'](_0x2d77ee[_0x3b69b6]);}};function extractCalleridNumber(_0xa7f8f3){var _0x2a83fc=_0xa7f8f3[_0x147a('0x2d')](/<(.*?)>/);return _0x2a83fc?_0x2a83fc[0x1]:_0xa7f8f3;}Report[_0x147a('0x1d')]['getAgentByInternal']=function(_0x4b79a0){for(var _0x4d86d2=0x0;_0x4d86d2<Object[_0x147a('0x2e')](this['agents'])[_0x147a('0x25')];_0x4d86d2++){var _0x46d048=Object[_0x147a('0x2e')](this[_0x147a('0xf')])[_0x4d86d2];var _0x32d05c=this[_0x147a('0xf')][_0x46d048];if(_0x32d05c[_0x147a('0x1f')]===Number(_0x4b79a0))return _0x32d05c;}return null;};Report[_0x147a('0x1d')][_0x147a('0x2f')]=function(_0x83cd31){var _0x57ee9c=_0x83cd31['channel'][_0x147a('0x30')]('-')[0x0];var _0x520842=this[_0x147a('0xf')][_0x57ee9c];if(!_0x520842)_0x520842=this[_0x147a('0x31')](_0x83cd31[_0x147a('0x32')]);return!_0x520842?_0x147a('0x33'):'internal';};Report[_0x147a('0x1d')]['voiceCallReport']=function(_0x3ec031){_0x3ec031[_0x147a('0x34')]=_0x3ec031[_0x147a('0x34')]||_0x3ec031['exten'];if(_0x3ec031[_0x147a('0x35')]==_0x147a('0x36')){_0x3ec031['lastapplication']=_0x147a('0x37');_0x3ec031[_0x147a('0x38')]=_0x3ec031[_0x147a('0x37')];if(_0x3ec031[_0x147a('0x39')]=='from-voip-provider'){_0x3ec031[_0x147a('0x1f')]='';_0x3ec031[_0x147a('0x34')]=extractCalleridNumber(_0x3ec031['callerid']);}else if(_0x3ec031[_0x147a('0x39')]==_0x147a('0x3a')){if(_0x3ec031['destination']==_0x147a('0x3b')){_0x3ec031['destination']=extractCalleridNumber(_0x3ec031['calleridpreview']);_0x3ec031[_0x147a('0x32')]=_0x3ec031['originatecalleridnum'];_0x3ec031[_0x147a('0x3c')]=[_0x3ec031[_0x147a('0x3d')],_0x3ec031[_0x147a('0x3d')]=_0x3ec031[_0x147a('0x3c')]][0x0];_0x3ec031[_0x147a('0x3e')]=_0x3ec031[_0x147a('0x3f')];}else{_0x3ec031[_0x147a('0x34')]=_0x3ec031[_0x147a('0x32')];_0x3ec031[_0x147a('0x32')]=_0x3ec031[_0x147a('0x40')];if(_0x3ec031[_0x147a('0x41')]==_0x147a('0x42')){_0x3ec031[_0x147a('0x1f')]=_0x3ec031['connectedlinenum'];}else{_0x3ec031[_0x147a('0x1f')]='';}}}}else{_0x3ec031[_0x147a('0x3e')]=util['format'](_0x147a('0x43'),_0x3ec031[_0x147a('0x44')],_0x3ec031[_0x147a('0x32')]);}if(RpcVoiceTransferReport[_0x147a('0x45')][_0x3ec031['linkedid']]){var _0x4dd92b=RpcVoiceTransferReport[_0x147a('0x45')][_0x3ec031[_0x147a('0x46')]];_0x4dd92b['transfereelinkedid']=_0x3ec031[_0x147a('0x47')];RpcVoiceTransferReport['blindTransfer'](_0x4dd92b);delete RpcVoiceTransferReport['transfers'][_0x3ec031[_0x147a('0x46')]];}if(_[_0x147a('0x20')](_0x3ec031['type'])){_0x3ec031[_0x147a('0x35')]=this[_0x147a('0x2f')](_0x3ec031);}if(_[_0x147a('0x20')](_0x3ec031[_0x147a('0x48')])){var _0x3f09c8=_0x3ec031[_0x147a('0x3d')]['split']('-')[0x0];var _0x1579e7=this['agents'][_0x3f09c8];if(!_0x1579e7)_0x1579e7=this[_0x147a('0x31')](_0x3ec031[_0x147a('0x1f')]);if(_0x1579e7){_0x3ec031['UserId']=_0x1579e7['id'];_0x3ec031[_0x147a('0x49')]=_0x1579e7[_0x147a('0x24')];}}RpcVoiceCallReport[_0x147a('0x4a')](_0x3ec031);if(_0x3ec031[_0x147a('0x4b')]){for(var _0x53bdfe=0x0;_0x53bdfe<_0x3ec031[_0x147a('0x4c')][_0x147a('0x25')];_0x53bdfe+=0x1){_0x3ec031['monitorFilename']=_0x3ec031[_0x147a('0x4c')][_0x53bdfe][_0x147a('0x4d')];_0x3ec031[_0x147a('0x4e')]=_0x3ec031[_0x147a('0x4c')][_0x53bdfe][_0x147a('0x4e')];if(_0x3ec031[_0x147a('0x4f')]=='xcally-motion-preview'){_0x3ec031[_0x147a('0x32')]=_0x3ec031[_0x147a('0x26')];_0x3ec031[_0x147a('0x44')]=_0x3ec031[_0x147a('0x50')];_0x3ec031[_0x147a('0x26')]=_0x3ec031[_0x147a('0x1f')];_0x3ec031[_0x147a('0x50')]=_0x3ec031[_0x147a('0x49')];_0x3ec031[_0x147a('0x4f')]=_0x3ec031[_0x147a('0x40')];}else if(_0x3ec031[_0x147a('0x4f')]==_0x147a('0x51')){_0x3ec031[_0x147a('0x32')]=_0x3ec031[_0x147a('0x34')];_0x3ec031[_0x147a('0x4f')]=_0x3ec031[_0x147a('0x40')];}RpcVoiceRecording[_0x147a('0x4a')](_0x3ec031);}}};Report[_0x147a('0x1d')][_0x147a('0x19')]=function(_0x503925){if(_[_0x147a('0x52')](_0x503925)){_0x503925[_0x147a('0x53')](function(_0x5680af){RpcVoiceAgentReport[_0x147a('0x4a')](_0x5680af);});}else{RpcVoiceAgentReport[_0x147a('0x4a')](_0x503925);}};Report[_0x147a('0x1d')][_0x147a('0x54')]=function(_0x205f63){RpcVoiceDialReport[_0x147a('0x4a')](_0x205f63);var _0x15204b;var _0x3183d8;var _0x1bdc1c=_0x205f63[_0x147a('0x3d')];if(_['startsWith'](_0x1bdc1c,_0x147a('0x55'))){_0x3183d8=_0x1bdc1c[_0x147a('0x56')](_0x1bdc1c['indexOf']('/')+0x1,_0x1bdc1c[_0x147a('0x57')]('@'));_0x15204b=_[_0x147a('0x21')](this[_0x147a('0xf')],function(_0x4169e0){return _0x4169e0[_0x147a('0x58')]==_0x3183d8||_0x4169e0[_0x147a('0x59')]==_0x3183d8||_0x4169e0[_0x147a('0x1f')]==_0x3183d8;});}else{_0x3183d8=_0x1bdc1c[_0x147a('0x56')](_0x1bdc1c[_0x147a('0x57')]('/')+0x1,_0x1bdc1c['lastIndexOf']('-'));_0x15204b=this['findAgent'](_0x3183d8);}if(_0x15204b){_0x205f63[_0x147a('0x28')]=_[_0x147a('0x20')](_0x15204b[_0x147a('0x28')])?util[_0x147a('0x22')](_0x147a('0x23'),_0x15204b[_0x147a('0x24')]):_0x15204b['interface'];_0x205f63[_0x147a('0x49')]=_0x15204b[_0x147a('0x24')];_0x205f63['accountcode']=_0x15204b[_0x147a('0x1f')];RpcMemberReport[_0x147a('0x54')](_0x205f63);}};Report[_0x147a('0x1d')][_0x147a('0x5a')]=function(_0x4a5987){RpcVoiceTransferReport[_0x147a('0x45')][_0x4a5987['transfererlinkedid']]=_0x4a5987;};Report[_0x147a('0x1d')][_0x147a('0x1c')]=function(_0x316266){RpcVoiceTransferReport[_0x147a('0x1c')](_0x316266);};module[_0x147a('0x5b')]=Report;
\ No newline at end of file
+var _0xc010=['../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','./userReport','realtime','agents','telephones','prototype','sync','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','bind','voiceCallReport','custom:voiceAgentReport','custom:voiceDialReport','voiceDialReport','attendedTransfer','findAgent','find','isNil','accountcode','name','interface','format','SIP/%s','length','connectedlinenum','assigned','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','create','match','getAgentByInternal','keys','getCallType','split','outbound','destination','type','lastapplication','queue','context','from-voip-provider','callerid','from-sip','originatecalleridnum','destinationchannel','channel','calleridpreview','calleridnum','disposition','ANSWERED','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','uniqueid','blindTransfer','UserId','membername','monitor','monitors','monitorFilename','filename','createdAt','exten','connectedlinename','xcally-motion-dialer','isArray','forEach','startsWith','substring','indexOf','mobile','phone','lastIndexOf','exports','lodash','moment','util'];(function(_0x8df9fb,_0x3b5f43){var _0x54073a=function(_0x2b2db4){while(--_0x2b2db4){_0x8df9fb['push'](_0x8df9fb['shift']());}};_0x54073a(++_0x3b5f43);}(_0xc010,0x11a));var _0x0c01=function(_0x215b6e,_0x4b6c60){_0x215b6e=_0x215b6e-0x0;var _0x53611d=_0xc010[_0x215b6e];return _0x53611d;};'use strict';var _=require(_0x0c01('0x0'));var moment=require(_0x0c01('0x1'));var util=require(_0x0c01('0x2'));var config=require(_0x0c01('0x3'));var ami=require(_0x0c01('0x4'));var RpcVoiceAgentReport=require(_0x0c01('0x5'));var RpcVoiceCallReport=require(_0x0c01('0x6'));var RpcVoiceDialReport=require('../rpc/voiceDialReport');var RpcMemberReport=require(_0x0c01('0x7'));var RpcVoiceQueueReport=require(_0x0c01('0x8'));var RpcVoiceRecording=require(_0x0c01('0x9'));var RpcVoiceTransferReport=require(_0x0c01('0xa'));var VoiceQueueReport=require(_0x0c01('0xb'));var VoiceCallReport=require(_0x0c01('0xc'));var VoiceAgentReport=require(_0x0c01('0xd'));var VoiceDialReport=require(_0x0c01('0xe'));var UserReport=require(_0x0c01('0xf'));function Report(_0x3d6571){this[_0x0c01('0x10')]=_0x3d6571;this[_0x0c01('0x11')]=_0x3d6571['agents'];this['telephones']=_0x3d6571[_0x0c01('0x12')];}Report[_0x0c01('0x13')][_0x0c01('0x14')]=function(_0x3dafae){var _0x6f6784=new VoiceQueueReport(this[_0x0c01('0x10')]);var _0x345fb1=new VoiceAgentReport(this['realtime']);var _0x4dbab9=new VoiceDialReport(this[_0x0c01('0x10')]);var _0x950e00=new VoiceCallReport(this['realtime']);var _0x170651=new UserReport(this['realtime']);if(config[_0x0c01('0x15')]&&config[_0x0c01('0x15')][_0x0c01('0x16')]){ami['on'](_0x0c01('0x17'),this[_0x0c01('0x18')][_0x0c01('0x19')](this));ami['on']('custom:voiceCallReport',this[_0x0c01('0x1a')][_0x0c01('0x19')](this));ami['on'](_0x0c01('0x1b'),this['voiceAgentReport'][_0x0c01('0x19')](this));ami['on'](_0x0c01('0x1c'),this[_0x0c01('0x1d')][_0x0c01('0x19')](this));ami['on']('blindtransfer',this['blindTransfer'][_0x0c01('0x19')](this));ami['on']('attendedtransfer',this[_0x0c01('0x1e')][_0x0c01('0x19')](this));}};Report[_0x0c01('0x13')][_0x0c01('0x1f')]=function(_0x12318c){var _0x460c14;_0x460c14=_[_0x0c01('0x20')](this[_0x0c01('0x11')],function(_0x582933){return _0x582933['accountcode']==_0x12318c||_0x582933['name']==_0x12318c;});if(_[_0x0c01('0x21')](_0x460c14)){var _0x324c92=_[_0x0c01('0x20')](this[_0x0c01('0x12')],function(_0x496ef1){return _0x496ef1[_0x0c01('0x22')]==_0x12318c||_0x496ef1[_0x0c01('0x23')]==_0x12318c;});if(_0x324c92){_0x460c14=_[_0x0c01('0x20')](this['agents'],function(_0x417d1f){return _0x417d1f[_0x0c01('0x24')]==util[_0x0c01('0x25')](_0x0c01('0x26'),_0x324c92[_0x0c01('0x23')]);});}}return _0x460c14;};Report['prototype'][_0x0c01('0x18')]=function(_0x15b034){for(var _0x4eee81=0x0;_0x4eee81<_0x15b034[_0x0c01('0x27')];_0x4eee81+=0x1){var _0x275988=this[_0x0c01('0x1f')](_0x15b034[_0x4eee81][_0x0c01('0x28')]);if(_0x275988){_0x15b034[_0x4eee81]['accountcode']=_0x275988[_0x0c01('0x22')];_0x15b034[_0x4eee81][_0x0c01('0x29')]=!![];_0x15b034[_0x4eee81]['lastAssignedTo']=_0x275988['name'];_0x15b034[_0x4eee81][_0x0c01('0x24')]=_[_0x0c01('0x21')](_0x275988[_0x0c01('0x24')])?util[_0x0c01('0x25')](_0x0c01('0x26'),_0x275988[_0x0c01('0x23')]):_0x275988[_0x0c01('0x24')];if(_0x15b034[_0x4eee81][_0x0c01('0x2a')]){_0x15b034[_0x4eee81][_0x0c01('0x2b')]=moment()[_0x0c01('0x25')](_0x0c01('0x2c'));}if(_0x15b034[_0x4eee81][_0x0c01('0x2d')]){_0x15b034[_0x4eee81][_0x0c01('0x2e')]=moment()[_0x0c01('0x25')](_0x0c01('0x2c'));}RpcMemberReport[_0x0c01('0x18')](_0x15b034[_0x4eee81]);}RpcVoiceQueueReport[_0x0c01('0x2f')](_0x15b034[_0x4eee81]);}};function extractCalleridNumber(_0x13dd99){var _0x1b2ff5=_0x13dd99[_0x0c01('0x30')](/<(.*?)>/);return _0x1b2ff5?_0x1b2ff5[0x1]:_0x13dd99;}Report[_0x0c01('0x13')][_0x0c01('0x31')]=function(_0x12e33b){for(var _0x2d23b3=0x0;_0x2d23b3<Object[_0x0c01('0x32')](this[_0x0c01('0x11')])[_0x0c01('0x27')];_0x2d23b3++){var _0x1b4a0b=Object[_0x0c01('0x32')](this[_0x0c01('0x11')])[_0x2d23b3];var _0x3bc221=this[_0x0c01('0x11')][_0x1b4a0b];if(_0x3bc221[_0x0c01('0x22')]===Number(_0x12e33b))return _0x3bc221;}return null;};Report['prototype'][_0x0c01('0x33')]=function(_0x1556af){var _0x522f60=_0x1556af['channel'][_0x0c01('0x34')]('-')[0x0];var _0x1a5731=this[_0x0c01('0x11')][_0x522f60];if(!_0x1a5731)_0x1a5731=this[_0x0c01('0x31')](_0x1556af['calleridnum']);return!_0x1a5731?_0x0c01('0x35'):'internal';};Report['prototype'][_0x0c01('0x1a')]=function(_0x177a5b){_0x177a5b[_0x0c01('0x36')]=_0x177a5b['destination']||_0x177a5b['exten'];if(_0x177a5b[_0x0c01('0x37')]=='dialer'){_0x177a5b[_0x0c01('0x38')]=_0x0c01('0x39');_0x177a5b['lastdata']=_0x177a5b[_0x0c01('0x39')];if(_0x177a5b[_0x0c01('0x3a')]==_0x0c01('0x3b')){_0x177a5b[_0x0c01('0x22')]='';_0x177a5b[_0x0c01('0x36')]=extractCalleridNumber(_0x177a5b[_0x0c01('0x3c')]);}else if(_0x177a5b[_0x0c01('0x3a')]==_0x0c01('0x3d')){if(_0x177a5b[_0x0c01('0x36')]=='xcally-motion-preview'){_0x177a5b['destination']=extractCalleridNumber(_0x177a5b['calleridpreview']);_0x177a5b['calleridnum']=_0x177a5b[_0x0c01('0x3e')];_0x177a5b[_0x0c01('0x3f')]=[_0x177a5b['channel'],_0x177a5b[_0x0c01('0x40')]=_0x177a5b['destinationchannel']][0x0];_0x177a5b[_0x0c01('0x3c')]=_0x177a5b[_0x0c01('0x41')];}else{_0x177a5b[_0x0c01('0x36')]=_0x177a5b['calleridnum'];_0x177a5b[_0x0c01('0x42')]=_0x177a5b[_0x0c01('0x3e')];if(_0x177a5b[_0x0c01('0x43')]==_0x0c01('0x44')){_0x177a5b[_0x0c01('0x22')]=_0x177a5b[_0x0c01('0x28')];}else{_0x177a5b[_0x0c01('0x22')]='';}}}}else{_0x177a5b[_0x0c01('0x3c')]=util[_0x0c01('0x25')](_0x0c01('0x45'),_0x177a5b[_0x0c01('0x46')],_0x177a5b[_0x0c01('0x42')]);}if(RpcVoiceTransferReport[_0x0c01('0x47')][_0x177a5b[_0x0c01('0x48')]]){var _0x354bc1=RpcVoiceTransferReport[_0x0c01('0x47')][_0x177a5b[_0x0c01('0x48')]];_0x354bc1[_0x0c01('0x49')]=_0x177a5b[_0x0c01('0x4a')];RpcVoiceTransferReport[_0x0c01('0x4b')](_0x354bc1);delete RpcVoiceTransferReport[_0x0c01('0x47')][_0x177a5b[_0x0c01('0x48')]];}if(_[_0x0c01('0x21')](_0x177a5b['type'])){_0x177a5b[_0x0c01('0x37')]=this[_0x0c01('0x33')](_0x177a5b);}if(_[_0x0c01('0x21')](_0x177a5b[_0x0c01('0x4c')])){var _0xbc7e36=_0x177a5b[_0x0c01('0x40')][_0x0c01('0x34')]('-')[0x0];var _0xc52cbf=this[_0x0c01('0x11')][_0xbc7e36];if(!_0xc52cbf)_0xc52cbf=this[_0x0c01('0x31')](_0x177a5b[_0x0c01('0x22')]);if(_0xc52cbf){_0x177a5b[_0x0c01('0x4c')]=_0xc52cbf['id'];_0x177a5b[_0x0c01('0x4d')]=_0xc52cbf[_0x0c01('0x23')];}}RpcVoiceCallReport[_0x0c01('0x2f')](_0x177a5b);if(_0x177a5b[_0x0c01('0x4e')]){for(var _0xedcec1=0x0;_0xedcec1<_0x177a5b[_0x0c01('0x4f')]['length'];_0xedcec1+=0x1){_0x177a5b[_0x0c01('0x50')]=_0x177a5b[_0x0c01('0x4f')][_0xedcec1][_0x0c01('0x51')];_0x177a5b[_0x0c01('0x52')]=_0x177a5b[_0x0c01('0x4f')][_0xedcec1]['createdAt'];if(_0x177a5b[_0x0c01('0x53')]=='xcally-motion-preview'){_0x177a5b[_0x0c01('0x42')]=_0x177a5b[_0x0c01('0x28')];_0x177a5b[_0x0c01('0x46')]=_0x177a5b[_0x0c01('0x54')];_0x177a5b['connectedlinenum']=_0x177a5b[_0x0c01('0x22')];_0x177a5b[_0x0c01('0x54')]=_0x177a5b['membername'];_0x177a5b['exten']=_0x177a5b[_0x0c01('0x3e')];}else if(_0x177a5b['exten']==_0x0c01('0x55')){_0x177a5b[_0x0c01('0x42')]=_0x177a5b[_0x0c01('0x36')];_0x177a5b[_0x0c01('0x53')]=_0x177a5b[_0x0c01('0x3e')];}RpcVoiceRecording[_0x0c01('0x2f')](_0x177a5b);}}};Report[_0x0c01('0x13')]['voiceAgentReport']=function(_0x170ee4){if(_[_0x0c01('0x56')](_0x170ee4)){_0x170ee4[_0x0c01('0x57')](function(_0x506c8f){RpcVoiceAgentReport['create'](_0x506c8f);});}else{RpcVoiceAgentReport[_0x0c01('0x2f')](_0x170ee4);}};Report[_0x0c01('0x13')][_0x0c01('0x1d')]=function(_0x153e9f){RpcVoiceDialReport['create'](_0x153e9f);var _0x3a95bf;var _0x5ab4c5;var _0x1314e4=_0x153e9f[_0x0c01('0x40')];if(_[_0x0c01('0x58')](_0x1314e4,'Local')){_0x5ab4c5=_0x1314e4[_0x0c01('0x59')](_0x1314e4[_0x0c01('0x5a')]('/')+0x1,_0x1314e4[_0x0c01('0x5a')]('@'));_0x3a95bf=_[_0x0c01('0x20')](this['agents'],function(_0x53352e){return _0x53352e[_0x0c01('0x5b')]==_0x5ab4c5||_0x53352e[_0x0c01('0x5c')]==_0x5ab4c5||_0x53352e[_0x0c01('0x22')]==_0x5ab4c5;});}else{_0x5ab4c5=_0x1314e4['substring'](_0x1314e4['indexOf']('/')+0x1,_0x1314e4[_0x0c01('0x5d')]('-'));_0x3a95bf=this['findAgent'](_0x5ab4c5);}if(_0x3a95bf){_0x153e9f[_0x0c01('0x24')]=_[_0x0c01('0x21')](_0x3a95bf[_0x0c01('0x24')])?util[_0x0c01('0x25')](_0x0c01('0x26'),_0x3a95bf[_0x0c01('0x23')]):_0x3a95bf[_0x0c01('0x24')];_0x153e9f[_0x0c01('0x4d')]=_0x3a95bf['name'];_0x153e9f[_0x0c01('0x22')]=_0x3a95bf[_0x0c01('0x22')];RpcMemberReport['voiceDialReport'](_0x153e9f);}};Report[_0x0c01('0x13')][_0x0c01('0x4b')]=function(_0x35cd5d){RpcVoiceTransferReport[_0x0c01('0x47')][_0x35cd5d['transfererlinkedid']]=_0x35cd5d;};Report[_0x0c01('0x13')][_0x0c01('0x1e')]=function(_0x4b1be2){RpcVoiceTransferReport[_0x0c01('0x1e')](_0x4b1be2);};module[_0x0c01('0x5e')]=Report;
\ No newline at end of file
index 1e5cd00..3f855cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab5e=['error','[userReport][sipshowregistry]','inspect','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isUndefined','emit','syncRegistry','info','username','state','debug','[userReport][registry]','find','stateRegistry','merge','event','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','syncDeviceState','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','toLowerCase','inuse','stateTime','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','startsWith','substring','indexOf','mobile','phone','accountcode','isNotNull','peerstatus','peer','address','local','status','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','[userReport][peerstatus]','lodash','moment','util','ioredis','bluebird','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','bind','devicestatechange','syncPeerStatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch'];(function(_0x4f1cfa,_0x33d9f8){var _0x2855c8=function(_0x1d8a62){while(--_0x1d8a62){_0x4f1cfa['push'](_0x4f1cfa['shift']());}};_0x2855c8(++_0x33d9f8);}(_0xab5e,0x110));var _0xeab5=function(_0x8efdcc,_0x479d0e){_0x8efdcc=_0x8efdcc-0x0;var _0x4cbe8a=_0xab5e[_0x8efdcc];return _0x4cbe8a;};'use strict';var _=require(_0xeab5('0x0'));var moment=require(_0xeab5('0x1'));var util=require(_0xeab5('0x2'));var Redis=require(_0xeab5('0x3'));var BPromise=require(_0xeab5('0x4'));var config=require('../../../config/environment');var logger=require(_0xeab5('0x5'))(_0xeab5('0x6'));var ami=require(_0xeab5('0x7'));config[_0xeab5('0x8')]=_[_0xeab5('0x9')](config['redis'],{'host':_0xeab5('0xa'),'port':0x18eb});var io=require(_0xeab5('0xb'))(new Redis(config[_0xeab5('0x8')]));function UserReport(_0x2d9ffc){this[_0xeab5('0xc')]=_0x2d9ffc[_0xeab5('0xc')];this[_0xeab5('0xd')]=_0x2d9ffc[_0xeab5('0xd')];this[_0xeab5('0xe')]=_0x2d9ffc[_0xeab5('0xe')];ami['on'](_0xeab5('0xf'),this['syncRegistry'][_0xeab5('0x10')](this));ami['on']('registry',this['syncRegistry'][_0xeab5('0x10')](this));ami['on'](_0xeab5('0x11'),this['syncDeviceState'][_0xeab5('0x10')](this));ami['on']('peerstatus',this[_0xeab5('0x12')][_0xeab5('0x10')](this));return this[_0xeab5('0x13')]();}function showSipRegistrations(){Promise[_0xeab5('0x14')]()[_0xeab5('0x15')](ami[_0xeab5('0x16')]())[_0xeab5('0x17')](function(_0x2d349c){logger[_0xeab5('0x18')](_0xeab5('0x19'),util[_0xeab5('0x1a')](_0x2d349c,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xeab5('0x14')]()['then'](ami['actionDeviceStateList']())[_0xeab5('0x17')](function(_0xc9c1d7){logger[_0xeab5('0x18')](_0xeab5('0x1b'),util[_0xeab5('0x1a')](_0xc9c1d7,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0xeab5('0x15')](ami[_0xeab5('0x1c')]())[_0xeab5('0x17')](function(_0x39ca87){logger[_0xeab5('0x18')](_0xeab5('0x1d'),util[_0xeab5('0x1a')](_0x39ca87,{'showHidden':![],'depth':null}));});}UserReport[_0xeab5('0x1e')]['syncRealtimeShow']=function(){setInterval(function(){BPromise[_0xeab5('0x14')]()[_0xeab5('0x15')](showSipRegistrations())['then'](listDeviceStates())[_0xeab5('0x15')](showPeersStatus());},0x32c8);};UserReport[_0xeab5('0x1e')]['isNotNull']=function(_0x534bfb){return _0x534bfb!==null&&!_[_0xeab5('0x1f')](_0x534bfb);};UserReport[_0xeab5('0x1e')][_0xeab5('0x20')]=function(_0x41f679,_0x340a5d,_0x5e6a6c){io['to'](_0x41f679)['emit'](_0x340a5d,_0x5e6a6c);};UserReport[_0xeab5('0x1e')][_0xeab5('0x21')]=function(_0xd0d7f){try{if(this['isNotNull'](_0xd0d7f)){logger[_0xeab5('0x22')]('[userReport][registry]\x20registry:%s\x20state:%s',_0xd0d7f[_0xeab5('0x23')],_0xd0d7f[_0xeab5('0x24')]);logger[_0xeab5('0x25')](_0xeab5('0x26'),util[_0xeab5('0x1a')](_0xd0d7f,{'showHidden':![],'depth':null}));var _0x22f545=_[_0xeab5('0x27')](this[_0xeab5('0xc')],{'defaultuser':_0xd0d7f[_0xeab5('0x23')]});if(_0x22f545){_0xd0d7f[_0xeab5('0x28')]=_0xd0d7f[_0xeab5('0x24')];_[_0xeab5('0x29')](_0x22f545,_['omit'](_0xd0d7f,[_0xeab5('0x2a'),'actionid','username',_0xeab5('0x24')]));logger[_0xeab5('0x25')](_0xeab5('0x2b'),util[_0xeab5('0x1a')](_0x22f545,{'showHidden':![],'depth':null}));this[_0xeab5('0x20')](util[_0xeab5('0x2c')](_0xeab5('0x2d'),_0x22f545[_0xeab5('0x2e')]),_0xeab5('0x2f'),_0x22f545);}}}catch(_0x29a74e){logger[_0xeab5('0x18')](_0xeab5('0x26'),util['inspect'](_0x29a74e,{'showHidden':![],'depth':null}));}};UserReport[_0xeab5('0x1e')][_0xeab5('0x30')]=function(_0x21e839){try{if(this['isNotNull'](_0x21e839)){logger[_0xeab5('0x22')](_0xeab5('0x31'),_0x21e839[_0xeab5('0x32')],_0x21e839[_0xeab5('0x24')]);logger['debug'](_0xeab5('0x33'),util[_0xeab5('0x1a')](_0x21e839,{'showHidden':![],'depth':null}));if(this[_0xeab5('0xd')][_0x21e839[_0xeab5('0x32')]]){if(!this['agents'][_0x21e839[_0xeab5('0x32')]]['local']||_0x21e839[_0xeab5('0x24')][_0xeab5('0x34')]()==_0xeab5('0x35')){this[_0xeab5('0xd')][_0x21e839[_0xeab5('0x32')]]['local']=![];if(this[_0xeab5('0xd')][_0x21e839[_0xeab5('0x32')]][_0xeab5('0x24')]!==_0x21e839[_0xeab5('0x24')][_0xeab5('0x34')]()){this['agents'][_0x21e839[_0xeab5('0x32')]][_0xeab5('0x36')]=_[_0xeab5('0x37')](moment()[_0xeab5('0x2c')]('x'));}this[_0xeab5('0xd')][_0x21e839[_0xeab5('0x32')]]['state']=_0x21e839[_0xeab5('0x24')][_0xeab5('0x34')]();this[_0xeab5('0xd')][_0x21e839[_0xeab5('0x32')]][_0xeab5('0x38')](_0x21e839);}}else if(this['telephones'][_0x21e839[_0xeab5('0x32')]]){if(this[_0xeab5('0xe')][_0x21e839[_0xeab5('0x32')]][_0xeab5('0x24')]!==_0x21e839['state']['toLowerCase']()){this['telephones'][_0x21e839['device']]['stateTime']=_[_0xeab5('0x37')](moment()[_0xeab5('0x2c')]('x'));}this[_0xeab5('0xe')][_0x21e839[_0xeab5('0x32')]][_0xeab5('0x24')]=_0x21e839[_0xeab5('0x24')][_0xeab5('0x34')]();logger[_0xeab5('0x25')](_0xeab5('0x39'),util[_0xeab5('0x1a')](this[_0xeab5('0xe')][_0x21e839[_0xeab5('0x32')]],{'showHidden':![],'depth':null}));this[_0xeab5('0x20')](util[_0xeab5('0x2c')](_0xeab5('0x3a'),this[_0xeab5('0xe')][_0x21e839['device']][_0xeab5('0x2e')]),_0xeab5('0x3b'),this[_0xeab5('0xe')][_0x21e839['device']]);}else if(this[_0xeab5('0xc')][_0x21e839[_0xeab5('0x32')]]){if(this['trunks'][_0x21e839[_0xeab5('0x32')]][_0xeab5('0x24')]!==_0x21e839[_0xeab5('0x24')]['toLowerCase']()){this['trunks'][_0x21e839[_0xeab5('0x32')]][_0xeab5('0x36')]=_[_0xeab5('0x37')](moment()[_0xeab5('0x2c')]('x'));}this[_0xeab5('0xc')][_0x21e839[_0xeab5('0x32')]][_0xeab5('0x24')]=_0x21e839[_0xeab5('0x24')]['toLowerCase']();logger['debug']('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util[_0xeab5('0x1a')](this[_0xeab5('0xc')][_0x21e839[_0xeab5('0x32')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xeab5('0x2c')](_0xeab5('0x2d'),this[_0xeab5('0xc')][_0x21e839[_0xeab5('0x32')]][_0xeab5('0x2e')]),_0xeab5('0x2f'),this[_0xeab5('0xc')][_0x21e839[_0xeab5('0x32')]]);}else if(_[_0xeab5('0x3c')](_0x21e839[_0xeab5('0x32')],'Local')){var _0x5b8139=_0x21e839['device'];var _0x19de1e=_0x5b8139[_0xeab5('0x3d')](_0x5b8139['indexOf']('/')+0x1,_0x5b8139[_0xeab5('0x3e')]('@'));var _0x4a4cc8=_['find'](this['agents'],function(_0x3b1b36){return _0x3b1b36[_0xeab5('0x3f')]==_0x19de1e||_0x3b1b36[_0xeab5('0x40')]==_0x19de1e||_0x3b1b36[_0xeab5('0x41')]==_0x19de1e;});if(_0x4a4cc8){if(_0x4a4cc8['state']!==_0x21e839[_0xeab5('0x24')][_0xeab5('0x34')]()){_0x4a4cc8[_0xeab5('0x36')]=_[_0xeab5('0x37')](moment()[_0xeab5('0x2c')]('x'));}_0x4a4cc8[_0xeab5('0x24')]=_0x21e839[_0xeab5('0x24')][_0xeab5('0x34')]();_0x4a4cc8['local']=!![];_0x4a4cc8[_0xeab5('0x38')](_0x21e839);}}}}catch(_0x4fd053){logger['error'](_0xeab5('0x33'),util[_0xeab5('0x1a')](_0x4fd053,{'showHidden':![],'depth':null}));}};UserReport[_0xeab5('0x1e')][_0xeab5('0x12')]=function(_0x272a5e){try{if(this[_0xeab5('0x42')](_0x272a5e)&&this[_0xeab5('0x42')](_0x272a5e[_0xeab5('0x43')])){logger[_0xeab5('0x22')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x272a5e[_0xeab5('0x44')],_0x272a5e[_0xeab5('0x45')],_0x272a5e['peerstatus']);logger[_0xeab5('0x25')]('[userReport][peerstatus]',util['inspect'](_0x272a5e,{'showHidden':![],'depth':null}));if(this[_0xeab5('0xd')][_0x272a5e[_0xeab5('0x44')]]){if(!this[_0xeab5('0xd')][_0x272a5e['peer']][_0xeab5('0x46')]||_0x272a5e['peerstatus']['toLowerCase']()=='registered'){this[_0xeab5('0xd')][_0x272a5e[_0xeab5('0x44')]][_0xeab5('0x46')]=![];this[_0xeab5('0xd')][_0x272a5e[_0xeab5('0x44')]][_0xeab5('0x47')]=_0x272a5e[_0xeab5('0x43')][_0xeab5('0x34')]();this[_0xeab5('0xd')][_0x272a5e['peer']][_0xeab5('0x45')]=_0x272a5e['address'];this['agents'][_0x272a5e[_0xeab5('0x44')]][_0xeab5('0x38')](_0x272a5e);}}else if(this[_0xeab5('0xe')][_0x272a5e[_0xeab5('0x44')]]){this['telephones'][_0x272a5e['peer']][_0xeab5('0x47')]=_0x272a5e[_0xeab5('0x43')][_0xeab5('0x34')]();this[_0xeab5('0xe')][_0x272a5e[_0xeab5('0x44')]][_0xeab5('0x45')]=_0x272a5e[_0xeab5('0x45')];logger['debug']('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0xeab5('0x1a')](this['telephones'][_0x272a5e[_0xeab5('0x44')]],{'showHidden':![],'depth':null}));this[_0xeab5('0x20')](util[_0xeab5('0x2c')](_0xeab5('0x3a'),this[_0xeab5('0xe')][_0x272a5e[_0xeab5('0x44')]][_0xeab5('0x2e')]),_0xeab5('0x3b'),this[_0xeab5('0xe')][_0x272a5e[_0xeab5('0x44')]]);}else if(this[_0xeab5('0xc')][_0x272a5e[_0xeab5('0x44')]]){this['trunks'][_0x272a5e[_0xeab5('0x44')]][_0xeab5('0x47')]=_0x272a5e[_0xeab5('0x43')][_0xeab5('0x34')]();this[_0xeab5('0xc')][_0x272a5e[_0xeab5('0x44')]][_0xeab5('0x45')]=_0x272a5e['address'];logger[_0xeab5('0x25')](_0xeab5('0x48'),util['inspect'](this[_0xeab5('0xc')][_0x272a5e[_0xeab5('0x44')]],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0xeab5('0x2d'),this[_0xeab5('0xc')][_0x272a5e[_0xeab5('0x44')]][_0xeab5('0x2e')]),'trunk:save',this[_0xeab5('0xc')][_0x272a5e[_0xeab5('0x44')]]);}}}catch(_0x4c349e){logger[_0xeab5('0x18')](_0xeab5('0x49'),util['inspect'](_0x4c349e,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;
\ No newline at end of file
+var _0x09bd=['format','trunk:%s','name','trunk:save','info','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','toLowerCase','inuse','stateTime','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','substring','indexOf','find','mobile','peer','address','registered','status','telephone:save','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','[userReport][peerstatus]','exports','lodash','moment','util','ioredis','bluebird','../../../config/environment','../../../config/logger','../ami','redis','localhost','socket.io-emitter','agents','telephones','registryentry','bind','registry','syncRegistry','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','actionSipShowRegistry','catch','inspect','then','[userReport][devicestatelist]','actionSipPeerStatus','error','prototype','isNotNull','[userReport][registry]\x20registry:%s\x20state:%s','username','state','[userReport][registry]','trunks','stateRegistry','event','actionid','debug','[userReport][registry]\x20sending\x20trunk:save\x20event:','emit'];(function(_0x5e6c43,_0x132a12){var _0x23d90e=function(_0x279b49){while(--_0x279b49){_0x5e6c43['push'](_0x5e6c43['shift']());}};_0x23d90e(++_0x132a12);}(_0x09bd,0x67));var _0xd09b=function(_0x59117c,_0x29cf2a){_0x59117c=_0x59117c-0x0;var _0x397d95=_0x09bd[_0x59117c];return _0x397d95;};'use strict';var _=require(_0xd09b('0x0'));var moment=require(_0xd09b('0x1'));var util=require(_0xd09b('0x2'));var Redis=require(_0xd09b('0x3'));var BPromise=require(_0xd09b('0x4'));var config=require(_0xd09b('0x5'));var logger=require(_0xd09b('0x6'))('ami');var ami=require(_0xd09b('0x7'));config[_0xd09b('0x8')]=_['defaults'](config[_0xd09b('0x8')],{'host':_0xd09b('0x9'),'port':0x18eb});var io=require(_0xd09b('0xa'))(new Redis(config[_0xd09b('0x8')]));function UserReport(_0xa8f543){this['trunks']=_0xa8f543['trunks'];this[_0xd09b('0xb')]=_0xa8f543[_0xd09b('0xb')];this[_0xd09b('0xc')]=_0xa8f543[_0xd09b('0xc')];ami['on'](_0xd09b('0xd'),this['syncRegistry'][_0xd09b('0xe')](this));ami['on'](_0xd09b('0xf'),this[_0xd09b('0x10')][_0xd09b('0xe')](this));ami['on'](_0xd09b('0x11'),this[_0xd09b('0x12')][_0xd09b('0xe')](this));ami['on'](_0xd09b('0x13'),this[_0xd09b('0x14')][_0xd09b('0xe')](this));return this[_0xd09b('0x15')]();}function showSipRegistrations(){Promise[_0xd09b('0x16')]()['then'](ami[_0xd09b('0x17')]())[_0xd09b('0x18')](function(_0x1d8a92){logger['error']('[userReport][sipshowregistry]',util[_0xd09b('0x19')](_0x1d8a92,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xd09b('0x16')]()[_0xd09b('0x1a')](ami['actionDeviceStateList']())[_0xd09b('0x18')](function(_0x5a7553){logger['error'](_0xd09b('0x1b'),util[_0xd09b('0x19')](_0x5a7553,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xd09b('0x16')]()[_0xd09b('0x1a')](ami[_0xd09b('0x1c')]())[_0xd09b('0x18')](function(_0x290871){logger[_0xd09b('0x1d')]('[userReport][sippeerstatus]',util[_0xd09b('0x19')](_0x290871,{'showHidden':![],'depth':null}));});}UserReport[_0xd09b('0x1e')][_0xd09b('0x15')]=function(){setInterval(function(){BPromise[_0xd09b('0x16')]()[_0xd09b('0x1a')](showSipRegistrations())['then'](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport[_0xd09b('0x1e')][_0xd09b('0x1f')]=function(_0x5f37a6){return _0x5f37a6!==null&&!_['isUndefined'](_0x5f37a6);};UserReport['prototype']['emit']=function(_0x434325,_0x5b54c3,_0x368b63){io['to'](_0x434325)['emit'](_0x5b54c3,_0x368b63);};UserReport[_0xd09b('0x1e')]['syncRegistry']=function(_0x4423b4){try{if(this[_0xd09b('0x1f')](_0x4423b4)){logger['info'](_0xd09b('0x20'),_0x4423b4[_0xd09b('0x21')],_0x4423b4[_0xd09b('0x22')]);logger['debug'](_0xd09b('0x23'),util[_0xd09b('0x19')](_0x4423b4,{'showHidden':![],'depth':null}));var _0x94ef70=_['find'](this[_0xd09b('0x24')],{'defaultuser':_0x4423b4['username']});if(_0x94ef70){_0x4423b4[_0xd09b('0x25')]=_0x4423b4[_0xd09b('0x22')];_['merge'](_0x94ef70,_['omit'](_0x4423b4,[_0xd09b('0x26'),_0xd09b('0x27'),_0xd09b('0x21'),_0xd09b('0x22')]));logger[_0xd09b('0x28')](_0xd09b('0x29'),util[_0xd09b('0x19')](_0x94ef70,{'showHidden':![],'depth':null}));this[_0xd09b('0x2a')](util[_0xd09b('0x2b')](_0xd09b('0x2c'),_0x94ef70[_0xd09b('0x2d')]),_0xd09b('0x2e'),_0x94ef70);}}}catch(_0x2c26d8){logger[_0xd09b('0x1d')]('[userReport][registry]',util[_0xd09b('0x19')](_0x2c26d8,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0xd09b('0x12')]=function(_0x57c7ac){try{if(this['isNotNull'](_0x57c7ac)){logger[_0xd09b('0x2f')](_0xd09b('0x30'),_0x57c7ac[_0xd09b('0x31')],_0x57c7ac['state']);logger[_0xd09b('0x28')](_0xd09b('0x32'),util[_0xd09b('0x19')](_0x57c7ac,{'showHidden':![],'depth':null}));if(this[_0xd09b('0xb')][_0x57c7ac[_0xd09b('0x31')]]){if(!this['agents'][_0x57c7ac['device']][_0xd09b('0x33')]||_0x57c7ac['state'][_0xd09b('0x34')]()==_0xd09b('0x35')){this[_0xd09b('0xb')][_0x57c7ac[_0xd09b('0x31')]]['local']=![];if(this['agents'][_0x57c7ac['device']]['state']!==_0x57c7ac[_0xd09b('0x22')][_0xd09b('0x34')]()){this[_0xd09b('0xb')][_0x57c7ac['device']][_0xd09b('0x36')]=_[_0xd09b('0x37')](moment()[_0xd09b('0x2b')]('x'));}this['agents'][_0x57c7ac[_0xd09b('0x31')]][_0xd09b('0x22')]=_0x57c7ac['state'][_0xd09b('0x34')]();this[_0xd09b('0xb')][_0x57c7ac[_0xd09b('0x31')]][_0xd09b('0x38')](_0x57c7ac);}}else if(this['telephones'][_0x57c7ac['device']]){if(this['telephones'][_0x57c7ac[_0xd09b('0x31')]][_0xd09b('0x22')]!==_0x57c7ac[_0xd09b('0x22')][_0xd09b('0x34')]()){this[_0xd09b('0xc')][_0x57c7ac[_0xd09b('0x31')]][_0xd09b('0x36')]=_['toNumber'](moment()[_0xd09b('0x2b')]('x'));}this[_0xd09b('0xc')][_0x57c7ac[_0xd09b('0x31')]][_0xd09b('0x22')]=_0x57c7ac['state'][_0xd09b('0x34')]();logger['debug'](_0xd09b('0x39'),util[_0xd09b('0x19')](this[_0xd09b('0xc')][_0x57c7ac[_0xd09b('0x31')]],{'showHidden':![],'depth':null}));this[_0xd09b('0x2a')](util[_0xd09b('0x2b')](_0xd09b('0x3a'),this[_0xd09b('0xc')][_0x57c7ac[_0xd09b('0x31')]][_0xd09b('0x2d')]),'telephone:save',this['telephones'][_0x57c7ac[_0xd09b('0x31')]]);}else if(this[_0xd09b('0x24')][_0x57c7ac['device']]){if(this[_0xd09b('0x24')][_0x57c7ac[_0xd09b('0x31')]][_0xd09b('0x22')]!==_0x57c7ac['state'][_0xd09b('0x34')]()){this[_0xd09b('0x24')][_0x57c7ac['device']][_0xd09b('0x36')]=_[_0xd09b('0x37')](moment()['format']('x'));}this[_0xd09b('0x24')][_0x57c7ac[_0xd09b('0x31')]][_0xd09b('0x22')]=_0x57c7ac[_0xd09b('0x22')]['toLowerCase']();logger[_0xd09b('0x28')](_0xd09b('0x3b'),util[_0xd09b('0x19')](this[_0xd09b('0x24')][_0x57c7ac[_0xd09b('0x31')]],{'showHidden':![],'depth':null}));this[_0xd09b('0x2a')](util[_0xd09b('0x2b')](_0xd09b('0x2c'),this['trunks'][_0x57c7ac[_0xd09b('0x31')]][_0xd09b('0x2d')]),'trunk:save',this[_0xd09b('0x24')][_0x57c7ac['device']]);}else if(_[_0xd09b('0x3c')](_0x57c7ac['device'],'Local')){var _0x5213db=_0x57c7ac['device'];var _0x2b6342=_0x5213db[_0xd09b('0x3d')](_0x5213db['indexOf']('/')+0x1,_0x5213db[_0xd09b('0x3e')]('@'));var _0x1a8f6e=_[_0xd09b('0x3f')](this[_0xd09b('0xb')],function(_0x3cad78){return _0x3cad78[_0xd09b('0x40')]==_0x2b6342||_0x3cad78['phone']==_0x2b6342||_0x3cad78['accountcode']==_0x2b6342;});if(_0x1a8f6e){if(_0x1a8f6e[_0xd09b('0x22')]!==_0x57c7ac[_0xd09b('0x22')][_0xd09b('0x34')]()){_0x1a8f6e['stateTime']=_[_0xd09b('0x37')](moment()['format']('x'));}_0x1a8f6e[_0xd09b('0x22')]=_0x57c7ac[_0xd09b('0x22')][_0xd09b('0x34')]();_0x1a8f6e[_0xd09b('0x33')]=!![];_0x1a8f6e['updateStatusRealtime'](_0x57c7ac);}}}}catch(_0x5181d6){logger[_0xd09b('0x1d')](_0xd09b('0x32'),util[_0xd09b('0x19')](_0x5181d6,{'showHidden':![],'depth':null}));}};UserReport[_0xd09b('0x1e')][_0xd09b('0x14')]=function(_0x58618a){try{if(this[_0xd09b('0x1f')](_0x58618a)&&this['isNotNull'](_0x58618a[_0xd09b('0x13')])){logger[_0xd09b('0x2f')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x58618a[_0xd09b('0x41')],_0x58618a[_0xd09b('0x42')],_0x58618a[_0xd09b('0x13')]);logger[_0xd09b('0x28')]('[userReport][peerstatus]',util[_0xd09b('0x19')](_0x58618a,{'showHidden':![],'depth':null}));if(this[_0xd09b('0xb')][_0x58618a['peer']]){if(!this[_0xd09b('0xb')][_0x58618a['peer']][_0xd09b('0x33')]||_0x58618a[_0xd09b('0x13')][_0xd09b('0x34')]()==_0xd09b('0x43')){this[_0xd09b('0xb')][_0x58618a[_0xd09b('0x41')]][_0xd09b('0x33')]=![];this[_0xd09b('0xb')][_0x58618a[_0xd09b('0x41')]]['status']=_0x58618a[_0xd09b('0x13')][_0xd09b('0x34')]();this[_0xd09b('0xb')][_0x58618a['peer']][_0xd09b('0x42')]=_0x58618a[_0xd09b('0x42')];this[_0xd09b('0xb')][_0x58618a[_0xd09b('0x41')]][_0xd09b('0x38')](_0x58618a);}}else if(this['telephones'][_0x58618a[_0xd09b('0x41')]]){this[_0xd09b('0xc')][_0x58618a['peer']][_0xd09b('0x44')]=_0x58618a['peerstatus']['toLowerCase']();this[_0xd09b('0xc')][_0x58618a[_0xd09b('0x41')]][_0xd09b('0x42')]=_0x58618a['address'];logger[_0xd09b('0x28')]('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0xd09b('0x19')](this['telephones'][_0x58618a[_0xd09b('0x41')]],{'showHidden':![],'depth':null}));this[_0xd09b('0x2a')](util[_0xd09b('0x2b')](_0xd09b('0x3a'),this['telephones'][_0x58618a['peer']][_0xd09b('0x2d')]),_0xd09b('0x45'),this[_0xd09b('0xc')][_0x58618a[_0xd09b('0x41')]]);}else if(this[_0xd09b('0x24')][_0x58618a[_0xd09b('0x41')]]){this[_0xd09b('0x24')][_0x58618a[_0xd09b('0x41')]][_0xd09b('0x44')]=_0x58618a[_0xd09b('0x13')][_0xd09b('0x34')]();this[_0xd09b('0x24')][_0x58618a[_0xd09b('0x41')]][_0xd09b('0x42')]=_0x58618a[_0xd09b('0x42')];logger['debug'](_0xd09b('0x46'),util[_0xd09b('0x19')](this[_0xd09b('0x24')][_0x58618a[_0xd09b('0x41')]],{'showHidden':![],'depth':null}));this[_0xd09b('0x2a')](util[_0xd09b('0x2b')](_0xd09b('0x2c'),this[_0xd09b('0x24')][_0x58618a[_0xd09b('0x41')]][_0xd09b('0x2d')]),_0xd09b('0x2e'),this[_0xd09b('0x24')][_0x58618a[_0xd09b('0x41')]]);}}}catch(_0x4c8f01){logger[_0xd09b('0x1d')](_0xd09b('0x47'),util['inspect'](_0x4c8f01,{'showHidden':![],'depth':null}));}};module[_0xd09b('0x48')]=UserReport;
\ No newline at end of file
index 9c51b97..7aa384e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x953b=['[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','values','custom:voiceAgentReport','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','complete','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','syncBlindTransfer','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','substring','lastIndexOf','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','exports','lodash','util','ioredis','../../../config/environment','../../../config/logger','ami','redis','defaults','localhost','socket.io-emitter','channels','voiceChannels','voiceQueues','agents','bind','agentconnect','syncAgentConnect','agentringnoanswer','syncAgentRingNoAnswer','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','syncHangup','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','prototype','emit','isNotNull','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','destuniqueid','[%s][voiceAgentReport][agentcalled]\x20event:','isUndefined','format','YYYY-MM-DD\x20HH:mm:ss','called','queue','type','inbound','variables','merge','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','inspect','custom:agentcalled','interface','debug','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','membername','user:called','error','[%s][voiceAgentReport][agentcalled]','[%s][voiceAgentReport][agentconnect]\x20event:','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','holdtime','lastevent','connect','routealias','pick','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:%s','user:agentconnect','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','answeredelsewheredestinationuniqueid','answered_elsewhere','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','agentringnoanswerAt','rejected','reason','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','hasOwnProperty','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','transfer','agent','talktime','acw','acwtime','acwTimeout','agentacw','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','custom:agentcomplete','destaccountcode','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepvtcallid','membercalls','memberlastcall','memberpenalty','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:'];(function(_0x27766a,_0x164281){var _0x23c47e=function(_0x235262){while(--_0x235262){_0x27766a['push'](_0x27766a['shift']());}};_0x23c47e(++_0x164281);}(_0x953b,0xb3));var _0xb953=function(_0x1e82bc,_0x4bb95c){_0x1e82bc=_0x1e82bc-0x0;var _0x5085c9=_0x953b[_0x1e82bc];return _0x5085c9;};'use strict';var _=require(_0xb953('0x0'));var moment=require('moment');var util=require(_0xb953('0x1'));var Redis=require(_0xb953('0x2'));var config=require(_0xb953('0x3'));var logger=require(_0xb953('0x4'))(_0xb953('0x5'));var ami=require('../ami');config[_0xb953('0x6')]=_[_0xb953('0x7')](config[_0xb953('0x6')],{'host':_0xb953('0x8'),'port':0x18eb});var io=require(_0xb953('0x9'))(new Redis(config[_0xb953('0x6')]));function VoiceAgentReport(_0x51d07f){this[_0xb953('0xa')]={};this[_0xb953('0xb')]=_0x51d07f[_0xb953('0xa')];this[_0xb953('0xc')]=_0x51d07f[_0xb953('0xc')];this['agents']=_0x51d07f[_0xb953('0xd')];this['variables']={};ami['on']('agentcalled',this['syncAgentCalled'][_0xb953('0xe')](this));ami['on'](_0xb953('0xf'),this[_0xb953('0x10')][_0xb953('0xe')](this));ami['on'](_0xb953('0x11'),this[_0xb953('0x12')]['bind'](this));ami['on'](_0xb953('0x13'),this[_0xb953('0x14')][_0xb953('0xe')](this));ami['on'](_0xb953('0x15'),this[_0xb953('0x16')]['bind'](this));ami['on'](_0xb953('0x17'),this[_0xb953('0x18')]['bind'](this));ami['on']('hangup',this[_0xb953('0x19')][_0xb953('0xe')](this));ami['on']('musiconholdstart',this[_0xb953('0x1a')][_0xb953('0xe')](this));ami['on'](_0xb953('0x1b'),this[_0xb953('0x1c')][_0xb953('0xe')](this));ami['on'](_0xb953('0x1d'),this[_0xb953('0x1e')][_0xb953('0xe')](this));ami['on'](_0xb953('0x1f'),this['syncBlindTransfer'][_0xb953('0xe')](this));}VoiceAgentReport[_0xb953('0x20')][_0xb953('0x21')]=function(_0x2ebb0a,_0x34cc16,_0x5b0abc){io['to'](_0x2ebb0a)[_0xb953('0x21')](_0x34cc16,_0x5b0abc);};VoiceAgentReport[_0xb953('0x20')][_0xb953('0x22')]=function(_0x475b96){return _0x475b96!==null&&!_['isUndefined'](_0x475b96);};VoiceAgentReport[_0xb953('0x20')]['syncAgentCalled']=function(_0x2d7eeb){try{if(this[_0xb953('0x22')](_0x2d7eeb)){logger[_0xb953('0x23')](_0xb953('0x24'),_0x2d7eeb[_0xb953('0x25')],_0x2d7eeb['membername'],_0x2d7eeb[_0xb953('0x26')]);logger['debug'](_0xb953('0x27'),_0x2d7eeb[_0xb953('0x25')],util['inspect'](_0x2d7eeb,{'showHidden':![],'depth':null}));if(_['isUndefined'](this[_0xb953('0xa')][_0x2d7eeb['uniqueid']])){this[_0xb953('0xa')][_0x2d7eeb[_0xb953('0x25')]]={};}if(_[_0xb953('0x28')](this[_0xb953('0xa')][_0x2d7eeb['uniqueid']][_0x2d7eeb[_0xb953('0x26')]])){this[_0xb953('0xa')][_0x2d7eeb[_0xb953('0x25')]][_0x2d7eeb['destuniqueid']]={'agentcalledAt':moment()[_0xb953('0x29')](_0xb953('0x2a')),'lastevent':_0xb953('0x2b'),'mandatoryDisposition':this['voiceQueues'][_0x2d7eeb[_0xb953('0x2c')]]?this[_0xb953('0xc')][_0x2d7eeb[_0xb953('0x2c')]]['mandatoryDisposition']||![]:![],'type':this['voiceQueues'][_0x2d7eeb['queue']]?this['voiceQueues'][_0x2d7eeb[_0xb953('0x2c')]][_0xb953('0x2d')]||_0xb953('0x2e'):_0xb953('0x2e'),'variables':this[_0xb953('0x2f')][_0x2d7eeb[_0xb953('0x25')]],'motionChannel':'voice'};}_[_0xb953('0x30')](this[_0xb953('0xa')][_0x2d7eeb[_0xb953('0x25')]][_0x2d7eeb[_0xb953('0x26')]],_['omit'](_0x2d7eeb,[_0xb953('0x31'),_0xb953('0x32')]));logger['debug'](_0xb953('0x33'),_0x2d7eeb[_0xb953('0x25')],util[_0xb953('0x34')](this['channels'][_0x2d7eeb[_0xb953('0x25')]][_0x2d7eeb[_0xb953('0x26')]],{'showHidden':![],'depth':null}));ami['emit'](_0xb953('0x35'),this['channels'][_0x2d7eeb['uniqueid']][_0x2d7eeb[_0xb953('0x26')]]);var _0x4e57b0={'id':this[_0xb953('0xd')][_0x2d7eeb[_0xb953('0x36')]]['id'],'calleridnum':this[_0xb953('0xa')][_0x2d7eeb[_0xb953('0x25')]][_0x2d7eeb[_0xb953('0x26')]]['calleridnum'],'queue':this[_0xb953('0xa')][_0x2d7eeb['uniqueid']][_0x2d7eeb[_0xb953('0x26')]][_0xb953('0x2c')],'variables':this[_0xb953('0xa')][_0x2d7eeb[_0xb953('0x25')]][_0x2d7eeb[_0xb953('0x26')]]['variables']};logger[_0xb953('0x37')](_0xb953('0x38'),_0x2d7eeb['uniqueid'],util[_0xb953('0x34')](_0x4e57b0,{'showHidden':![],'depth':null}));this['emit'](util[_0xb953('0x29')]('user:%s',_0x2d7eeb[_0xb953('0x39')]),_0xb953('0x3a'),_0x4e57b0);}}catch(_0x124199){logger[_0xb953('0x3b')](_0xb953('0x3c'),_0x2d7eeb[_0xb953('0x25')],util['inspect'](_0x124199,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xb953('0x20')][_0xb953('0x10')]=function(_0x3793c4){try{if(this[_0xb953('0x22')](_0x3793c4)){if(this[_0xb953('0xa')][_0x3793c4[_0xb953('0x25')]]){logger[_0xb953('0x37')](_0xb953('0x3d'),_0x3793c4[_0xb953('0x25')],util[_0xb953('0x34')](_0x3793c4,{'showHidden':![],'depth':null}));for(var _0x36100a in this[_0xb953('0xa')][_0x3793c4[_0xb953('0x25')]]){if(this[_0xb953('0xa')][_0x3793c4[_0xb953('0x25')]]['hasOwnProperty'](_0x36100a)){if(_0x3793c4['destuniqueid']===_0x36100a){logger[_0xb953('0x23')](_0xb953('0x3e'),_0x3793c4['uniqueid'],_0x3793c4['membername'],_0x3793c4['destuniqueid']);this[_0xb953('0xa')][_0x3793c4[_0xb953('0x25')]][_0x36100a][_0xb953('0x3f')]=moment()[_0xb953('0x29')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xb953('0xa')][_0x3793c4[_0xb953('0x25')]][_0x36100a]['connectedlinename']=_0x3793c4[_0xb953('0x40')];this[_0xb953('0xa')][_0x3793c4[_0xb953('0x25')]][_0x36100a][_0xb953('0x41')]=_0x3793c4[_0xb953('0x41')];this['channels'][_0x3793c4[_0xb953('0x25')]][_0x36100a]['destchannelstate']=_0x3793c4['destchannelstate'];this[_0xb953('0xa')][_0x3793c4[_0xb953('0x25')]][_0x36100a]['destchannelstatedesc']=_0x3793c4['destchannelstatedesc'];this['channels'][_0x3793c4[_0xb953('0x25')]][_0x36100a][_0xb953('0x42')]=_0x3793c4[_0xb953('0x42')];this[_0xb953('0xa')][_0x3793c4[_0xb953('0x25')]][_0x36100a][_0xb953('0x43')]=_0xb953('0x44');if(this[_0xb953('0xb')][this['channels'][_0x3793c4['uniqueid']][_0x36100a][_0xb953('0x25')]]){var _0x2778e5=this[_0xb953('0xb')][this[_0xb953('0xa')][_0x3793c4[_0xb953('0x25')]][_0x36100a][_0xb953('0x25')]][_0xb953('0x45')];this[_0xb953('0xa')][_0x3793c4[_0xb953('0x25')]][_0x36100a][_0xb953('0x45')]=_0x2778e5;_0x3793c4[_0xb953('0x45')]=_0x2778e5;}_[_0xb953('0x30')](this[_0xb953('0xd')][_0x3793c4['interface']],_[_0xb953('0x46')](_0x3793c4,['queue',_0xb953('0x47'),_0xb953('0x45')]));logger[_0xb953('0x37')](_0xb953('0x48'),_0x3793c4[_0xb953('0x25')],util['inspect'](this[_0xb953('0xa')][_0x3793c4[_0xb953('0x25')]][_0x3793c4[_0xb953('0x26')]],{'showHidden':![],'depth':null}));ami[_0xb953('0x21')](_0xb953('0x49'),this[_0xb953('0xa')][_0x3793c4[_0xb953('0x25')]][_0x3793c4[_0xb953('0x26')]]);logger[_0xb953('0x37')](_0xb953('0x4a'),_0x3793c4[_0xb953('0x25')],util['inspect'](this[_0xb953('0xa')][_0x3793c4[_0xb953('0x25')]][_0x3793c4['destuniqueid']],{'showHidden':![],'depth':null}));this[_0xb953('0x21')](util['format'](_0xb953('0x4b'),_0x3793c4[_0xb953('0x39')]),_0xb953('0x4c'),this[_0xb953('0xa')][_0x3793c4[_0xb953('0x25')]][_0x3793c4[_0xb953('0x26')]]);}else if(!this[_0xb953('0xa')][_0x3793c4[_0xb953('0x25')]][_0x36100a][_0xb953('0x11')]&&!this[_0xb953('0xa')][_0x3793c4['uniqueid']][_0x36100a][_0xb953('0x15')]){logger['info'](_0xb953('0x4d'),_0x3793c4[_0xb953('0x25')],this['channels'][_0x3793c4[_0xb953('0x25')]][_0x36100a][_0xb953('0x39')],_0x36100a);this['channels'][_0x3793c4['uniqueid']][_0x36100a][_0xb953('0x11')]=!![];this[_0xb953('0xa')][_0x3793c4['uniqueid']][_0x36100a]['agentringnoanswerAt']=moment()[_0xb953('0x29')](_0xb953('0x2a'));this[_0xb953('0xa')][_0x3793c4['uniqueid']][_0x36100a][_0xb953('0x4e')]=_0x3793c4[_0xb953('0x26')];this[_0xb953('0xa')][_0x3793c4[_0xb953('0x25')]][_0x36100a]['answeredelsewheremembername']=_0x3793c4[_0xb953('0x39')];this[_0xb953('0xa')][_0x3793c4[_0xb953('0x25')]][_0x36100a][_0xb953('0x43')]=_0xb953('0x4f');this[_0xb953('0xa')][_0x3793c4[_0xb953('0x25')]][_0x36100a]['reason']='answered_elsewhere';logger[_0xb953('0x37')](_0xb953('0x50'),_0x3793c4[_0xb953('0x25')],util[_0xb953('0x34')](this[_0xb953('0xa')][_0x3793c4[_0xb953('0x25')]][_0x36100a],{'showHidden':![],'depth':null}));ami['emit'](_0xb953('0x51'),this[_0xb953('0xa')][_0x3793c4[_0xb953('0x25')]][_0x36100a]);}}}}}}catch(_0x51b712){logger[_0xb953('0x3b')]('[%s][voiceAgentReport][agentconnect]',_0x3793c4[_0xb953('0x25')],util[_0xb953('0x34')](_0x51b712,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0xb953('0x12')]=function(_0x4d9d40){try{if(this[_0xb953('0x22')](_0x4d9d40)){logger['debug']('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x4d9d40[_0xb953('0x25')],util[_0xb953('0x34')](_0x4d9d40,{'showHidden':![],'depth':null}));if(this[_0xb953('0xa')][_0x4d9d40[_0xb953('0x25')]]&&this[_0xb953('0xa')][_0x4d9d40[_0xb953('0x25')]][_0x4d9d40[_0xb953('0x26')]]){logger[_0xb953('0x23')]('[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected',_0x4d9d40[_0xb953('0x25')],_0x4d9d40[_0xb953('0x39')],_0x4d9d40[_0xb953('0x26')]);this['channels'][_0x4d9d40[_0xb953('0x25')]][_0x4d9d40[_0xb953('0x26')]][_0xb953('0x11')]=!![];this[_0xb953('0xa')][_0x4d9d40['uniqueid']][_0x4d9d40[_0xb953('0x26')]][_0xb953('0x52')]=moment()[_0xb953('0x29')](_0xb953('0x2a'));this['channels'][_0x4d9d40['uniqueid']][_0x4d9d40[_0xb953('0x26')]][_0xb953('0x43')]=_0xb953('0x53');this['channels'][_0x4d9d40[_0xb953('0x25')]][_0x4d9d40[_0xb953('0x26')]][_0xb953('0x54')]='rejected';logger[_0xb953('0x37')](_0xb953('0x55'),_0x4d9d40['uniqueid'],util['inspect'](this[_0xb953('0xa')][_0x4d9d40[_0xb953('0x25')]][_0x4d9d40['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0xb953('0x21')](_0xb953('0x56'),this[_0xb953('0xa')][_0x4d9d40['uniqueid']][_0x4d9d40[_0xb953('0x26')]]);}}}catch(_0x48e624){logger[_0xb953('0x3b')](_0xb953('0x57'),_0x4d9d40['uniqueid'],util[_0xb953('0x34')](_0x48e624,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xb953('0x20')]['syncQueueCallerAbandon']=function(_0x31512d){try{if(this[_0xb953('0x22')](_0x31512d)){logger[_0xb953('0x37')](_0xb953('0x58'),_0x31512d[_0xb953('0x25')],util[_0xb953('0x34')](_0x31512d,{'showHidden':![],'depth':null}));if(this[_0xb953('0xa')][_0x31512d[_0xb953('0x25')]]){for(var _0x1c92cd in this[_0xb953('0xa')][_0x31512d['uniqueid']]){if(this['channels'][_0x31512d[_0xb953('0x25')]][_0xb953('0x59')](_0x1c92cd)&&!this[_0xb953('0xa')][_0x31512d[_0xb953('0x25')]][_0x1c92cd][_0xb953('0x11')]&&!this[_0xb953('0xa')][_0x31512d[_0xb953('0x25')]][_0x1c92cd][_0xb953('0x15')]){logger[_0xb953('0x23')](_0xb953('0x5a'),_0x31512d[_0xb953('0x25')],this['channels'][_0x31512d['uniqueid']][_0x1c92cd]['membername'],_0x1c92cd);this[_0xb953('0xa')][_0x31512d[_0xb953('0x25')]][_0x1c92cd][_0xb953('0x11')]=!![];this['channels'][_0x31512d['uniqueid']][_0x1c92cd][_0xb953('0x52')]=moment()['format'](_0xb953('0x2a'));this[_0xb953('0xa')][_0x31512d[_0xb953('0x25')]][_0x1c92cd]['lastevent']=_0xb953('0x5b');this[_0xb953('0xa')][_0x31512d[_0xb953('0x25')]][_0x1c92cd][_0xb953('0x54')]='abandoned';logger[_0xb953('0x37')]('[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:',_0x31512d[_0xb953('0x25')],util[_0xb953('0x34')](this['channels'][_0x31512d[_0xb953('0x25')]][_0x1c92cd],{'showHidden':![],'depth':null}));ami[_0xb953('0x21')](_0xb953('0x5c'),this[_0xb953('0xa')][_0x31512d[_0xb953('0x25')]][_0x1c92cd]);}}}}}catch(_0x146219){logger[_0xb953('0x3b')](_0xb953('0x5d'),_0x31512d[_0xb953('0x25')],util[_0xb953('0x34')](_0x146219,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xb953('0x20')]['syncAgentComplete']=function(_0x358565){try{if(this[_0xb953('0x22')](_0x358565)){logger[_0xb953('0x37')](_0xb953('0x5e'),_0x358565[_0xb953('0x25')],util[_0xb953('0x34')](_0x358565,{'showHidden':![],'depth':null}));if(this[_0xb953('0xa')][_0x358565['uniqueid']]){for(var _0x36f8e3 in this[_0xb953('0xa')][_0x358565[_0xb953('0x25')]]){if(this[_0xb953('0xa')][_0x358565[_0xb953('0x25')]][_0xb953('0x59')](_0x36f8e3)){if(this['channels'][_0x358565['uniqueid']][_0x36f8e3][_0xb953('0x3f')]&&!this[_0xb953('0xa')][_0x358565[_0xb953('0x25')]][_0x36f8e3]['agentcomplete']){logger[_0xb953('0x23')](_0xb953('0x5f'),_0x358565[_0xb953('0x25')],this['channels'][_0x358565[_0xb953('0x25')]][_0x36f8e3][_0xb953('0x39')],_0x36f8e3);this[_0xb953('0xa')][_0x358565[_0xb953('0x25')]][_0x36f8e3][_0xb953('0x15')]=!![];this[_0xb953('0xa')][_0x358565[_0xb953('0x25')]][_0x36f8e3][_0xb953('0x60')]=moment()[_0xb953('0x29')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xb953('0xa')][_0x358565['uniqueid']][_0x36f8e3]['lastevent']='complete';this['channels'][_0x358565['uniqueid']][_0x36f8e3][_0xb953('0x54')]=_0x358565[_0xb953('0x54')]==_0xb953('0x61')?_0xb953('0x62'):_0x358565[_0xb953('0x54')];this[_0xb953('0xa')][_0x358565['uniqueid']][_0x36f8e3][_0xb953('0x63')]=_0x358565[_0xb953('0x63')];if(this[_0xb953('0xc')][_0x358565[_0xb953('0x2c')]]&&this['voiceQueues'][_0x358565['queue']][_0xb953('0x64')]){this[_0xb953('0xa')][_0x358565[_0xb953('0x25')]][_0x36f8e3][_0xb953('0x65')]=this['voiceQueues'][_0x358565[_0xb953('0x2c')]][_0xb953('0x66')];this[_0xb953('0xa')][_0x358565[_0xb953('0x25')]][_0x36f8e3][_0xb953('0x67')]=!![];}this[_0xb953('0xd')][_0x358565[_0xb953('0x36')]]=_['omit'](this[_0xb953('0xd')][_0x358565[_0xb953('0x36')]],[_0xb953('0x2c'),'destconnectedlinenum']);logger[_0xb953('0x37')](_0xb953('0x68'),_0x358565[_0xb953('0x25')],util[_0xb953('0x34')](this[_0xb953('0xa')][_0x358565['uniqueid']][_0x36f8e3],{'showHidden':![],'depth':null}));ami[_0xb953('0x21')](_0xb953('0x69'),this[_0xb953('0xa')][_0x358565[_0xb953('0x25')]][_0x36f8e3]);logger['debug']('[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:',_0x358565['uniqueid'],util[_0xb953('0x34')]({'id':this[_0xb953('0xd')][_0x358565[_0xb953('0x36')]]['id'],'destaccountcode':_0x358565[_0xb953('0x6a')]},{'showHidden':![],'depth':null}));this['emit'](util['format'](_0xb953('0x4b'),_0x358565['membername']),_0xb953('0x6b'),{'id':this[_0xb953('0xd')][_0x358565[_0xb953('0x36')]]['id'],'destaccountcode':_0x358565[_0xb953('0x6a')]});}}}}}}catch(_0x475d97){logger[_0xb953('0x3b')](_0xb953('0x6c'),_0x358565[_0xb953('0x25')],util[_0xb953('0x34')](_0x475d97,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xb953('0x20')]['syncVarSet']=function(_0x169ded){try{if(this['isNotNull'](_0x169ded)){logger[_0xb953('0x37')](_0xb953('0x6d'),_0x169ded[_0xb953('0x25')],util[_0xb953('0x34')](_0x169ded,{'showHidden':![],'depth':null}));this['addVariable'](_0x169ded['uniqueid'],_[_0xb953('0x6e')](_0x169ded[_0xb953('0x6f')])[0x0],_0x169ded[_0xb953('0x70')]);if(this['channels'][_0x169ded[_0xb953('0x25')]]){for(var _0x3b5fc0 in this['channels'][_0x169ded[_0xb953('0x25')]]){if(this[_0xb953('0xa')][_0x169ded[_0xb953('0x25')]][_0xb953('0x59')](_0x3b5fc0)){logger[_0xb953('0x23')](_0xb953('0x71'),_0x169ded[_0xb953('0x25')],_0x3b5fc0,_['keys'](_0x169ded[_0xb953('0x6f')])[0x0],_0x169ded[_0xb953('0x70')]);if(_[_0xb953('0x28')](this[_0xb953('0xa')][_0x169ded[_0xb953('0x25')]][_0x3b5fc0]['variables'])){this[_0xb953('0xa')][_0x169ded[_0xb953('0x25')]][_0x3b5fc0]['variables']={};}this[_0xb953('0xa')][_0x169ded[_0xb953('0x25')]][_0x3b5fc0][_0xb953('0x2f')]=this[_0xb953('0x2f')][_0x169ded[_0xb953('0x25')]];}}}}}catch(_0x348f2e){logger[_0xb953('0x3b')]('[%s][voiceAgentReport][varset]',_0x169ded[_0xb953('0x25')],util[_0xb953('0x34')](_0x348f2e,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xb953('0x20')]['addVariable']=function(_0x3d3343,_0x459d6e,_0x48b340){var _0x325b73=[_0xb953('0x72'),'rtpaudioqosbridged',_0xb953('0x73'),_0xb953('0x74'),'rtpaudioqosloss',_0xb953('0x75'),_0xb953('0x76'),_0xb953('0x77'),_0xb953('0x78'),_0xb953('0x79'),'bridgepeer',_0xb953('0x7a'),_0xb953('0x7b'),'memberdynamic','memberinterface',_0xb953('0x7c'),'membername',_0xb953('0x7d'),'memberrealtime'];if(!_[_0xb953('0x7e')](_0x459d6e)&&!_[_0xb953('0x7f')](_0x325b73,_0x459d6e)){if(_[_0xb953('0x28')](this[_0xb953('0x2f')][_0x3d3343])){this[_0xb953('0x2f')][_0x3d3343]={};}this['variables'][_0x3d3343][_0x459d6e]=_0x48b340;}};VoiceAgentReport[_0xb953('0x20')][_0xb953('0x19')]=function(_0x1c57be){try{if(this[_0xb953('0x22')](_0x1c57be)){logger[_0xb953('0x37')](_0xb953('0x80'),_0x1c57be['uniqueid'],util[_0xb953('0x34')](_0x1c57be,{'showHidden':![],'depth':null}));if(this[_0xb953('0xa')][_0x1c57be[_0xb953('0x25')]]){for(var _0x5ddc1f in this[_0xb953('0xa')][_0x1c57be[_0xb953('0x25')]]){if(this[_0xb953('0xa')][_0x1c57be[_0xb953('0x25')]]['hasOwnProperty'](_0x5ddc1f)){if(this['channels'][_0x1c57be[_0xb953('0x25')]][_0x5ddc1f][_0xb953('0x54')]=='transfer'&&this[_0xb953('0xa')][_0x1c57be['uniqueid']][_0x5ddc1f][_0xb953('0x15')]){logger[_0xb953('0x23')](_0xb953('0x81'),_0x1c57be[_0xb953('0x25')],_0x5ddc1f);this[_0xb953('0xa')][_0x1c57be['uniqueid']][_0x5ddc1f]['agentcompleteAt']=moment()[_0xb953('0x29')](_0xb953('0x2a'));}}}logger[_0xb953('0x37')]('[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:',_0x1c57be[_0xb953('0x25')],util[_0xb953('0x34')](_[_0xb953('0x82')](this[_0xb953('0xa')][_0x1c57be[_0xb953('0x25')]]),{'showHidden':![],'depth':null}));ami[_0xb953('0x21')](_0xb953('0x83'),_[_0xb953('0x82')](this['channels'][_0x1c57be[_0xb953('0x25')]]));delete this[_0xb953('0xa')][_0x1c57be[_0xb953('0x25')]];}if(this[_0xb953('0x2f')][_0x1c57be[_0xb953('0x25')]]){delete this['variables'][_0x1c57be[_0xb953('0x25')]];}}}catch(_0xfa935e){logger[_0xb953('0x3b')]('[%s][voiceAgentReport][hangup]',_0x1c57be[_0xb953('0x25')],util[_0xb953('0x34')](_0xfa935e,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xb953('0x20')]['syncAttendedTransfer']=function(_0x28f3ed){try{if(this['isNotNull'](_0x28f3ed)){logger[_0xb953('0x37')](_0xb953('0x84'),_0x28f3ed[_0xb953('0x25')],util[_0xb953('0x34')](_0x28f3ed,{'showHidden':![],'depth':null}));if(this[_0xb953('0xa')][_0x28f3ed[_0xb953('0x85')]]){for(var _0x1bb2bb in this[_0xb953('0xa')][_0x28f3ed[_0xb953('0x85')]]){if(this[_0xb953('0xa')][_0x28f3ed[_0xb953('0x85')]][_0xb953('0x59')](_0x1bb2bb)){if(_0x28f3ed[_0xb953('0x86')]===_0x1bb2bb){logger[_0xb953('0x23')](_0xb953('0x87'),_0x28f3ed[_0xb953('0x25')],this['channels'][_0x28f3ed[_0xb953('0x85')]][_0x1bb2bb][_0xb953('0x39')],_0x1bb2bb);var _0x52ca2d=moment();this['channels'][_0x28f3ed[_0xb953('0x85')]][_0x1bb2bb][_0xb953('0x15')]=!![];this[_0xb953('0xa')][_0x28f3ed[_0xb953('0x85')]][_0x1bb2bb][_0xb953('0x60')]=moment()[_0xb953('0x29')](_0xb953('0x2a'));this[_0xb953('0xa')][_0x28f3ed[_0xb953('0x85')]][_0x1bb2bb][_0xb953('0x43')]=_0xb953('0x88');this[_0xb953('0xa')][_0x28f3ed[_0xb953('0x85')]][_0x1bb2bb][_0xb953('0x54')]='transfer';this['channels'][_0x28f3ed['transfereeuniqueid']][_0x1bb2bb][_0xb953('0x63')]=_0x52ca2d['diff'](this['channels'][_0x28f3ed[_0xb953('0x85')]][_0x1bb2bb]['agentconnectAt'],_0xb953('0x89'));}}}}if(this[_0xb953('0xa')][_0x28f3ed[_0xb953('0x8a')]]){var _0x5f3f3b=this[_0xb953('0xa')][_0x28f3ed[_0xb953('0x8a')]];this[_0xb953('0xa')][_0x28f3ed[_0xb953('0x8a')]]=this[_0xb953('0xa')][_0x28f3ed[_0xb953('0x85')]];this[_0xb953('0xa')][_0x28f3ed[_0xb953('0x85')]]=_0x5f3f3b;}}}catch(_0x21459a){logger[_0xb953('0x3b')](_0xb953('0x8b'),_0x28f3ed[_0xb953('0x25')],util[_0xb953('0x34')](_0x21459a,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xb953('0x20')][_0xb953('0x8c')]=function(_0x1c7799){try{if(this[_0xb953('0x22')](_0x1c7799)){logger['debug'](_0xb953('0x8d'),_0x1c7799[_0xb953('0x25')],util[_0xb953('0x34')](_0x1c7799,{'showHidden':![],'depth':null}));if(this[_0xb953('0xa')][_0x1c7799[_0xb953('0x85')]]){for(var _0x313aa2 in this[_0xb953('0xa')][_0x1c7799[_0xb953('0x85')]]){if(this[_0xb953('0xa')][_0x1c7799[_0xb953('0x85')]][_0xb953('0x59')](_0x313aa2)){if(_0x1c7799[_0xb953('0x8e')]===_0x313aa2){logger[_0xb953('0x23')](_0xb953('0x8f'),_0x1c7799[_0xb953('0x25')],this[_0xb953('0xa')][_0x1c7799['transfereeuniqueid']][_0x313aa2][_0xb953('0x39')],_0x313aa2);var _0x4580ae=moment();this['channels'][_0x1c7799[_0xb953('0x85')]][_0x313aa2][_0xb953('0x15')]=!![];this['channels'][_0x1c7799[_0xb953('0x85')]][_0x313aa2][_0xb953('0x60')]=_0x4580ae;this['channels'][_0x1c7799['transfereeuniqueid']][_0x313aa2][_0xb953('0x43')]='complete';this[_0xb953('0xa')][_0x1c7799[_0xb953('0x85')]][_0x313aa2][_0xb953('0x54')]='transfer';this[_0xb953('0xa')][_0x1c7799[_0xb953('0x85')]][_0x313aa2][_0xb953('0x63')]=_0x4580ae[_0xb953('0x90')](this[_0xb953('0xa')][_0x1c7799[_0xb953('0x85')]][_0x313aa2]['agentconnectAt'],_0xb953('0x89'));}}}}}}catch(_0x130451){logger[_0xb953('0x3b')]('[%s][voiceAgentReport][blindtransfer]',_0x1c7799[_0xb953('0x25')],util[_0xb953('0x34')](_0x130451,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xb953('0x20')][_0xb953('0x1a')]=function(_0x228b2a){var _0x3fff38='';try{if(this['isNotNull'](_0x228b2a)){logger['debug'](_0xb953('0x91'),_0x228b2a[_0xb953('0x25')],util[_0xb953('0x34')](_0x228b2a,{'showHidden':![],'depth':null}));if(_0x228b2a[_0xb953('0x92')]){_0x3fff38=_0x228b2a[_0xb953('0x92')][_0xb953('0x93')](0x0,_0x228b2a[_0xb953('0x92')][_0xb953('0x94')]('-'));if(this[_0xb953('0xd')][_0x3fff38]){logger[_0xb953('0x23')]('[%s][voiceAgentReport][musiconholdstart]\x20interface:%s',_0x228b2a[_0xb953('0x25')],_0x3fff38);this[_0xb953('0xd')][_0x3fff38][_0xb953('0x95')]=!![];}}}}catch(_0x161815){logger[_0xb953('0x3b')](_0xb953('0x96'),_0x228b2a[_0xb953('0x25')],util[_0xb953('0x34')](_0x161815,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xb953('0x20')]['syncMusicOnHoldStop']=function(_0x22b7ec){var _0x49efe3='';try{if(this[_0xb953('0x22')](_0x22b7ec)){logger['debug'](_0xb953('0x97'),_0x22b7ec[_0xb953('0x25')],util[_0xb953('0x34')](_0x22b7ec,{'showHidden':![],'depth':null}));if(_0x22b7ec[_0xb953('0x92')]){_0x49efe3=_0x22b7ec['channel'][_0xb953('0x93')](0x0,_0x22b7ec[_0xb953('0x92')][_0xb953('0x94')]('-'));if(this['agents'][_0x49efe3]){logger['info'](_0xb953('0x98'),_0x22b7ec[_0xb953('0x25')],_0x49efe3);this[_0xb953('0xd')][_0x49efe3][_0xb953('0x95')]=![];}}}}catch(_0x4ea979){logger[_0xb953('0x3b')]('[%s][voiceAgentReport][musiconholdstop]',_0x22b7ec[_0xb953('0x25')],util[_0xb953('0x34')](_0x4ea979,{'showHidden':![],'depth':null}));}};module[_0xb953('0x99')]=VoiceAgentReport;
\ No newline at end of file
+var _0x2ecf=['connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','connect','voiceChannels','routealias','pick','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:agentconnect','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answeredelsewheremembername','lastevent','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentringnoanswer]\x20event:','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','hasOwnProperty','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','agentconnectAt','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','agent','talktime','acw','acwtime','acwTimeout','omit','destconnectedlinenum','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','value','variable','[%s][voiceAgentReport][varset]','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','sipuri','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberpenalty','isNil','isUndefined','transfer','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','custom:voiceAgentReport','values','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','complete','diff','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','seconds','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','[%s][voiceAgentReport][musiconholdstop]','exports','moment','util','ioredis','ami','redis','defaults','localhost','socket.io-emitter','channels','voiceQueues','agents','variables','syncAgentCalled','bind','agentringnoanswer','syncAgentRingNoAnswer','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','syncHangup','musiconholdstart','syncMusicOnHoldStart','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','prototype','emit','isNotNull','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','membername','inspect','destuniqueid','format','YYYY-MM-DD\x20HH:mm:ss','called','queue','mandatoryDisposition','type','inbound','voice','event','debug','interface','user:%s','user:called','error','[%s][voiceAgentReport][agentcalled]','syncAgentConnect','[%s][voiceAgentReport][agentconnect]\x20event:','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','connectedlinename'];(function(_0x5400df,_0x55b6f3){var _0x1af815=function(_0x2a030a){while(--_0x2a030a){_0x5400df['push'](_0x5400df['shift']());}};_0x1af815(++_0x55b6f3);}(_0x2ecf,0xf4));var _0xf2ec=function(_0x1969a7,_0x5a133a){_0x1969a7=_0x1969a7-0x0;var _0x3d665f=_0x2ecf[_0x1969a7];return _0x3d665f;};'use strict';var _=require('lodash');var moment=require(_0xf2ec('0x0'));var util=require(_0xf2ec('0x1'));var Redis=require(_0xf2ec('0x2'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0xf2ec('0x3'));var ami=require('../ami');config[_0xf2ec('0x4')]=_[_0xf2ec('0x5')](config['redis'],{'host':_0xf2ec('0x6'),'port':0x18eb});var io=require(_0xf2ec('0x7'))(new Redis(config[_0xf2ec('0x4')]));function VoiceAgentReport(_0x2dce5d){this[_0xf2ec('0x8')]={};this['voiceChannels']=_0x2dce5d['channels'];this[_0xf2ec('0x9')]=_0x2dce5d['voiceQueues'];this[_0xf2ec('0xa')]=_0x2dce5d['agents'];this[_0xf2ec('0xb')]={};ami['on']('agentcalled',this[_0xf2ec('0xc')][_0xf2ec('0xd')](this));ami['on']('agentconnect',this['syncAgentConnect'][_0xf2ec('0xd')](this));ami['on'](_0xf2ec('0xe'),this[_0xf2ec('0xf')][_0xf2ec('0xd')](this));ami['on'](_0xf2ec('0x10'),this[_0xf2ec('0x11')][_0xf2ec('0xd')](this));ami['on'](_0xf2ec('0x12'),this[_0xf2ec('0x13')][_0xf2ec('0xd')](this));ami['on'](_0xf2ec('0x14'),this[_0xf2ec('0x15')]['bind'](this));ami['on']('hangup',this[_0xf2ec('0x16')][_0xf2ec('0xd')](this));ami['on'](_0xf2ec('0x17'),this[_0xf2ec('0x18')][_0xf2ec('0xd')](this));ami['on']('musiconholdstop',this['syncMusicOnHoldStop']['bind'](this));ami['on'](_0xf2ec('0x19'),this[_0xf2ec('0x1a')][_0xf2ec('0xd')](this));ami['on']('blindtransfer',this[_0xf2ec('0x1b')]['bind'](this));}VoiceAgentReport[_0xf2ec('0x1c')][_0xf2ec('0x1d')]=function(_0x3e7f3d,_0x4670fe,_0x388acd){io['to'](_0x3e7f3d)['emit'](_0x4670fe,_0x388acd);};VoiceAgentReport[_0xf2ec('0x1c')][_0xf2ec('0x1e')]=function(_0x4668be){return _0x4668be!==null&&!_['isUndefined'](_0x4668be);};VoiceAgentReport['prototype'][_0xf2ec('0xc')]=function(_0x1ac5ad){try{if(this['isNotNull'](_0x1ac5ad)){logger[_0xf2ec('0x1f')](_0xf2ec('0x20'),_0x1ac5ad[_0xf2ec('0x21')],_0x1ac5ad[_0xf2ec('0x22')],_0x1ac5ad['destuniqueid']);logger['debug']('[%s][voiceAgentReport][agentcalled]\x20event:',_0x1ac5ad['uniqueid'],util[_0xf2ec('0x23')](_0x1ac5ad,{'showHidden':![],'depth':null}));if(_['isUndefined'](this[_0xf2ec('0x8')][_0x1ac5ad['uniqueid']])){this['channels'][_0x1ac5ad['uniqueid']]={};}if(_['isUndefined'](this[_0xf2ec('0x8')][_0x1ac5ad[_0xf2ec('0x21')]][_0x1ac5ad[_0xf2ec('0x24')]])){this['channels'][_0x1ac5ad[_0xf2ec('0x21')]][_0x1ac5ad[_0xf2ec('0x24')]]={'agentcalledAt':moment()[_0xf2ec('0x25')](_0xf2ec('0x26')),'lastevent':_0xf2ec('0x27'),'mandatoryDisposition':this[_0xf2ec('0x9')][_0x1ac5ad[_0xf2ec('0x28')]]?this['voiceQueues'][_0x1ac5ad[_0xf2ec('0x28')]][_0xf2ec('0x29')]||![]:![],'type':this[_0xf2ec('0x9')][_0x1ac5ad[_0xf2ec('0x28')]]?this[_0xf2ec('0x9')][_0x1ac5ad[_0xf2ec('0x28')]][_0xf2ec('0x2a')]||'inbound':_0xf2ec('0x2b'),'variables':this['variables'][_0x1ac5ad[_0xf2ec('0x21')]],'motionChannel':_0xf2ec('0x2c')};}_['merge'](this[_0xf2ec('0x8')][_0x1ac5ad['uniqueid']][_0x1ac5ad[_0xf2ec('0x24')]],_['omit'](_0x1ac5ad,[_0xf2ec('0x2d'),'privilege']));logger[_0xf2ec('0x2e')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:',_0x1ac5ad[_0xf2ec('0x21')],util[_0xf2ec('0x23')](this[_0xf2ec('0x8')][_0x1ac5ad['uniqueid']][_0x1ac5ad[_0xf2ec('0x24')]],{'showHidden':![],'depth':null}));ami['emit']('custom:agentcalled',this[_0xf2ec('0x8')][_0x1ac5ad['uniqueid']][_0x1ac5ad['destuniqueid']]);var _0x1ffe26={'id':this['agents'][_0x1ac5ad[_0xf2ec('0x2f')]]['id'],'calleridnum':this[_0xf2ec('0x8')][_0x1ac5ad[_0xf2ec('0x21')]][_0x1ac5ad[_0xf2ec('0x24')]]['calleridnum'],'queue':this[_0xf2ec('0x8')][_0x1ac5ad[_0xf2ec('0x21')]][_0x1ac5ad[_0xf2ec('0x24')]][_0xf2ec('0x28')],'variables':this['channels'][_0x1ac5ad[_0xf2ec('0x21')]][_0x1ac5ad[_0xf2ec('0x24')]][_0xf2ec('0xb')]};logger['debug']('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:',_0x1ac5ad[_0xf2ec('0x21')],util[_0xf2ec('0x23')](_0x1ffe26,{'showHidden':![],'depth':null}));this[_0xf2ec('0x1d')](util['format'](_0xf2ec('0x30'),_0x1ac5ad[_0xf2ec('0x22')]),_0xf2ec('0x31'),_0x1ffe26);}}catch(_0x5672d7){logger[_0xf2ec('0x32')](_0xf2ec('0x33'),_0x1ac5ad[_0xf2ec('0x21')],util['inspect'](_0x5672d7,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0xf2ec('0x34')]=function(_0x37bfc1){try{if(this['isNotNull'](_0x37bfc1)){if(this[_0xf2ec('0x8')][_0x37bfc1['uniqueid']]){logger[_0xf2ec('0x2e')](_0xf2ec('0x35'),_0x37bfc1['uniqueid'],util[_0xf2ec('0x23')](_0x37bfc1,{'showHidden':![],'depth':null}));for(var _0x53c874 in this[_0xf2ec('0x8')][_0x37bfc1[_0xf2ec('0x21')]]){if(this[_0xf2ec('0x8')][_0x37bfc1[_0xf2ec('0x21')]]['hasOwnProperty'](_0x53c874)){if(_0x37bfc1[_0xf2ec('0x24')]===_0x53c874){logger[_0xf2ec('0x1f')](_0xf2ec('0x36'),_0x37bfc1['uniqueid'],_0x37bfc1[_0xf2ec('0x22')],_0x37bfc1[_0xf2ec('0x24')]);this[_0xf2ec('0x8')][_0x37bfc1[_0xf2ec('0x21')]][_0x53c874]['agentconnectAt']=moment()[_0xf2ec('0x25')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x37bfc1[_0xf2ec('0x21')]][_0x53c874][_0xf2ec('0x37')]=_0x37bfc1[_0xf2ec('0x37')];this['channels'][_0x37bfc1[_0xf2ec('0x21')]][_0x53c874][_0xf2ec('0x38')]=_0x37bfc1[_0xf2ec('0x38')];this[_0xf2ec('0x8')][_0x37bfc1[_0xf2ec('0x21')]][_0x53c874][_0xf2ec('0x39')]=_0x37bfc1[_0xf2ec('0x39')];this[_0xf2ec('0x8')][_0x37bfc1[_0xf2ec('0x21')]][_0x53c874][_0xf2ec('0x3a')]=_0x37bfc1[_0xf2ec('0x3a')];this[_0xf2ec('0x8')][_0x37bfc1[_0xf2ec('0x21')]][_0x53c874][_0xf2ec('0x3b')]=_0x37bfc1[_0xf2ec('0x3b')];this['channels'][_0x37bfc1[_0xf2ec('0x21')]][_0x53c874]['lastevent']=_0xf2ec('0x3c');if(this[_0xf2ec('0x3d')][this[_0xf2ec('0x8')][_0x37bfc1[_0xf2ec('0x21')]][_0x53c874]['uniqueid']]){var _0x432874=this[_0xf2ec('0x3d')][this['channels'][_0x37bfc1[_0xf2ec('0x21')]][_0x53c874]['uniqueid']][_0xf2ec('0x3e')];this[_0xf2ec('0x8')][_0x37bfc1[_0xf2ec('0x21')]][_0x53c874][_0xf2ec('0x3e')]=_0x432874;_0x37bfc1['routealias']=_0x432874;}_['merge'](this[_0xf2ec('0xa')][_0x37bfc1[_0xf2ec('0x2f')]],_[_0xf2ec('0x3f')](_0x37bfc1,[_0xf2ec('0x28'),'destconnectedlinenum',_0xf2ec('0x3e')]));logger['debug']('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:',_0x37bfc1[_0xf2ec('0x21')],util[_0xf2ec('0x23')](this[_0xf2ec('0x8')][_0x37bfc1[_0xf2ec('0x21')]][_0x37bfc1[_0xf2ec('0x24')]],{'showHidden':![],'depth':null}));ami[_0xf2ec('0x1d')]('custom:agentconnect',this[_0xf2ec('0x8')][_0x37bfc1[_0xf2ec('0x21')]][_0x37bfc1[_0xf2ec('0x24')]]);logger[_0xf2ec('0x2e')](_0xf2ec('0x40'),_0x37bfc1[_0xf2ec('0x21')],util[_0xf2ec('0x23')](this['channels'][_0x37bfc1[_0xf2ec('0x21')]][_0x37bfc1['destuniqueid']],{'showHidden':![],'depth':null}));this[_0xf2ec('0x1d')](util['format'](_0xf2ec('0x30'),_0x37bfc1[_0xf2ec('0x22')]),_0xf2ec('0x41'),this['channels'][_0x37bfc1[_0xf2ec('0x21')]][_0x37bfc1['destuniqueid']]);}else if(!this[_0xf2ec('0x8')][_0x37bfc1[_0xf2ec('0x21')]][_0x53c874][_0xf2ec('0xe')]&&!this['channels'][_0x37bfc1[_0xf2ec('0x21')]][_0x53c874][_0xf2ec('0x12')]){logger[_0xf2ec('0x1f')](_0xf2ec('0x42'),_0x37bfc1['uniqueid'],this[_0xf2ec('0x8')][_0x37bfc1['uniqueid']][_0x53c874][_0xf2ec('0x22')],_0x53c874);this[_0xf2ec('0x8')][_0x37bfc1[_0xf2ec('0x21')]][_0x53c874][_0xf2ec('0xe')]=!![];this[_0xf2ec('0x8')][_0x37bfc1[_0xf2ec('0x21')]][_0x53c874][_0xf2ec('0x43')]=moment()[_0xf2ec('0x25')](_0xf2ec('0x26'));this[_0xf2ec('0x8')][_0x37bfc1[_0xf2ec('0x21')]][_0x53c874][_0xf2ec('0x44')]=_0x37bfc1[_0xf2ec('0x24')];this[_0xf2ec('0x8')][_0x37bfc1['uniqueid']][_0x53c874][_0xf2ec('0x45')]=_0x37bfc1[_0xf2ec('0x22')];this[_0xf2ec('0x8')][_0x37bfc1['uniqueid']][_0x53c874][_0xf2ec('0x46')]=_0xf2ec('0x47');this[_0xf2ec('0x8')][_0x37bfc1['uniqueid']][_0x53c874][_0xf2ec('0x48')]=_0xf2ec('0x47');logger['debug'](_0xf2ec('0x49'),_0x37bfc1[_0xf2ec('0x21')],util[_0xf2ec('0x23')](this[_0xf2ec('0x8')][_0x37bfc1[_0xf2ec('0x21')]][_0x53c874],{'showHidden':![],'depth':null}));ami['emit'](_0xf2ec('0x4a'),this[_0xf2ec('0x8')][_0x37bfc1[_0xf2ec('0x21')]][_0x53c874]);}}}}}}catch(_0x27c4d3){logger['error']('[%s][voiceAgentReport][agentconnect]',_0x37bfc1[_0xf2ec('0x21')],util[_0xf2ec('0x23')](_0x27c4d3,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0xf2ec('0xf')]=function(_0x453d5f){try{if(this['isNotNull'](_0x453d5f)){logger[_0xf2ec('0x2e')](_0xf2ec('0x4b'),_0x453d5f[_0xf2ec('0x21')],util[_0xf2ec('0x23')](_0x453d5f,{'showHidden':![],'depth':null}));if(this['channels'][_0x453d5f[_0xf2ec('0x21')]]&&this[_0xf2ec('0x8')][_0x453d5f['uniqueid']][_0x453d5f[_0xf2ec('0x24')]]){logger[_0xf2ec('0x1f')](_0xf2ec('0x4c'),_0x453d5f['uniqueid'],_0x453d5f[_0xf2ec('0x22')],_0x453d5f[_0xf2ec('0x24')]);this[_0xf2ec('0x8')][_0x453d5f[_0xf2ec('0x21')]][_0x453d5f[_0xf2ec('0x24')]][_0xf2ec('0xe')]=!![];this[_0xf2ec('0x8')][_0x453d5f[_0xf2ec('0x21')]][_0x453d5f['destuniqueid']][_0xf2ec('0x43')]=moment()[_0xf2ec('0x25')](_0xf2ec('0x26'));this['channels'][_0x453d5f[_0xf2ec('0x21')]][_0x453d5f['destuniqueid']]['lastevent']=_0xf2ec('0x4d');this[_0xf2ec('0x8')][_0x453d5f[_0xf2ec('0x21')]][_0x453d5f[_0xf2ec('0x24')]][_0xf2ec('0x48')]=_0xf2ec('0x4d');logger[_0xf2ec('0x2e')](_0xf2ec('0x4e'),_0x453d5f[_0xf2ec('0x21')],util[_0xf2ec('0x23')](this[_0xf2ec('0x8')][_0x453d5f['uniqueid']][_0x453d5f['destuniqueid']],{'showHidden':![],'depth':null}));ami['emit'](_0xf2ec('0x4f'),this['channels'][_0x453d5f[_0xf2ec('0x21')]][_0x453d5f[_0xf2ec('0x24')]]);}}}catch(_0x3aa2c5){logger[_0xf2ec('0x32')](_0xf2ec('0x50'),_0x453d5f[_0xf2ec('0x21')],util[_0xf2ec('0x23')](_0x3aa2c5,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xf2ec('0x1c')][_0xf2ec('0x11')]=function(_0x3a4a94){try{if(this[_0xf2ec('0x1e')](_0x3a4a94)){logger[_0xf2ec('0x2e')](_0xf2ec('0x51'),_0x3a4a94[_0xf2ec('0x21')],util[_0xf2ec('0x23')](_0x3a4a94,{'showHidden':![],'depth':null}));if(this[_0xf2ec('0x8')][_0x3a4a94['uniqueid']]){for(var _0xd8a836 in this[_0xf2ec('0x8')][_0x3a4a94[_0xf2ec('0x21')]]){if(this[_0xf2ec('0x8')][_0x3a4a94[_0xf2ec('0x21')]][_0xf2ec('0x52')](_0xd8a836)&&!this['channels'][_0x3a4a94[_0xf2ec('0x21')]][_0xd8a836]['agentringnoanswer']&&!this[_0xf2ec('0x8')][_0x3a4a94[_0xf2ec('0x21')]][_0xd8a836][_0xf2ec('0x12')]){logger[_0xf2ec('0x1f')](_0xf2ec('0x53'),_0x3a4a94[_0xf2ec('0x21')],this['channels'][_0x3a4a94[_0xf2ec('0x21')]][_0xd8a836][_0xf2ec('0x22')],_0xd8a836);this['channels'][_0x3a4a94[_0xf2ec('0x21')]][_0xd8a836][_0xf2ec('0xe')]=!![];this['channels'][_0x3a4a94[_0xf2ec('0x21')]][_0xd8a836][_0xf2ec('0x43')]=moment()[_0xf2ec('0x25')](_0xf2ec('0x26'));this[_0xf2ec('0x8')][_0x3a4a94[_0xf2ec('0x21')]][_0xd8a836][_0xf2ec('0x46')]='abandoned';this[_0xf2ec('0x8')][_0x3a4a94[_0xf2ec('0x21')]][_0xd8a836][_0xf2ec('0x48')]=_0xf2ec('0x54');logger[_0xf2ec('0x2e')](_0xf2ec('0x55'),_0x3a4a94[_0xf2ec('0x21')],util[_0xf2ec('0x23')](this[_0xf2ec('0x8')][_0x3a4a94['uniqueid']][_0xd8a836],{'showHidden':![],'depth':null}));ami[_0xf2ec('0x1d')](_0xf2ec('0x56'),this['channels'][_0x3a4a94['uniqueid']][_0xd8a836]);}}}}}catch(_0x382904){logger[_0xf2ec('0x32')](_0xf2ec('0x57'),_0x3a4a94[_0xf2ec('0x21')],util[_0xf2ec('0x23')](_0x382904,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xf2ec('0x1c')][_0xf2ec('0x13')]=function(_0x450b58){try{if(this[_0xf2ec('0x1e')](_0x450b58)){logger[_0xf2ec('0x2e')](_0xf2ec('0x58'),_0x450b58['uniqueid'],util[_0xf2ec('0x23')](_0x450b58,{'showHidden':![],'depth':null}));if(this[_0xf2ec('0x8')][_0x450b58[_0xf2ec('0x21')]]){for(var _0x18a5b0 in this[_0xf2ec('0x8')][_0x450b58['uniqueid']]){if(this[_0xf2ec('0x8')][_0x450b58[_0xf2ec('0x21')]][_0xf2ec('0x52')](_0x18a5b0)){if(this[_0xf2ec('0x8')][_0x450b58[_0xf2ec('0x21')]][_0x18a5b0][_0xf2ec('0x59')]&&!this['channels'][_0x450b58[_0xf2ec('0x21')]][_0x18a5b0][_0xf2ec('0x12')]){logger['info'](_0xf2ec('0x5a'),_0x450b58[_0xf2ec('0x21')],this['channels'][_0x450b58[_0xf2ec('0x21')]][_0x18a5b0][_0xf2ec('0x22')],_0x18a5b0);this['channels'][_0x450b58[_0xf2ec('0x21')]][_0x18a5b0][_0xf2ec('0x12')]=!![];this['channels'][_0x450b58[_0xf2ec('0x21')]][_0x18a5b0][_0xf2ec('0x5b')]=moment()[_0xf2ec('0x25')](_0xf2ec('0x26'));this[_0xf2ec('0x8')][_0x450b58[_0xf2ec('0x21')]][_0x18a5b0][_0xf2ec('0x46')]='complete';this['channels'][_0x450b58[_0xf2ec('0x21')]][_0x18a5b0]['reason']=_0x450b58[_0xf2ec('0x48')]=='transfer'?_0xf2ec('0x5c'):_0x450b58[_0xf2ec('0x48')];this['channels'][_0x450b58[_0xf2ec('0x21')]][_0x18a5b0][_0xf2ec('0x5d')]=_0x450b58[_0xf2ec('0x5d')];if(this[_0xf2ec('0x9')][_0x450b58[_0xf2ec('0x28')]]&&this[_0xf2ec('0x9')][_0x450b58['queue']][_0xf2ec('0x5e')]){this[_0xf2ec('0x8')][_0x450b58['uniqueid']][_0x18a5b0][_0xf2ec('0x5f')]=this['voiceQueues'][_0x450b58[_0xf2ec('0x28')]][_0xf2ec('0x60')];this[_0xf2ec('0x8')][_0x450b58[_0xf2ec('0x21')]][_0x18a5b0]['agentacw']=!![];}this[_0xf2ec('0xa')][_0x450b58['interface']]=_[_0xf2ec('0x61')](this[_0xf2ec('0xa')][_0x450b58[_0xf2ec('0x2f')]],[_0xf2ec('0x28'),_0xf2ec('0x62')]);logger[_0xf2ec('0x2e')]('[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:',_0x450b58['uniqueid'],util['inspect'](this[_0xf2ec('0x8')][_0x450b58[_0xf2ec('0x21')]][_0x18a5b0],{'showHidden':![],'depth':null}));ami[_0xf2ec('0x1d')](_0xf2ec('0x63'),this['channels'][_0x450b58['uniqueid']][_0x18a5b0]);logger[_0xf2ec('0x2e')](_0xf2ec('0x64'),_0x450b58[_0xf2ec('0x21')],util[_0xf2ec('0x23')]({'id':this[_0xf2ec('0xa')][_0x450b58[_0xf2ec('0x2f')]]['id'],'destaccountcode':_0x450b58[_0xf2ec('0x65')]},{'showHidden':![],'depth':null}));this['emit'](util['format'](_0xf2ec('0x30'),_0x450b58['membername']),_0xf2ec('0x66'),{'id':this['agents'][_0x450b58[_0xf2ec('0x2f')]]['id'],'destaccountcode':_0x450b58[_0xf2ec('0x65')]});}}}}}}catch(_0x3135ea){logger[_0xf2ec('0x32')](_0xf2ec('0x67'),_0x450b58[_0xf2ec('0x21')],util[_0xf2ec('0x23')](_0x3135ea,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xf2ec('0x1c')][_0xf2ec('0x15')]=function(_0x3b32bc){try{if(this['isNotNull'](_0x3b32bc)){logger[_0xf2ec('0x2e')](_0xf2ec('0x68'),_0x3b32bc['uniqueid'],util[_0xf2ec('0x23')](_0x3b32bc,{'showHidden':![],'depth':null}));this[_0xf2ec('0x69')](_0x3b32bc[_0xf2ec('0x21')],_['keys'](_0x3b32bc['variable'])[0x0],_0x3b32bc[_0xf2ec('0x6a')]);if(this['channels'][_0x3b32bc['uniqueid']]){for(var _0x494f05 in this[_0xf2ec('0x8')][_0x3b32bc[_0xf2ec('0x21')]]){if(this[_0xf2ec('0x8')][_0x3b32bc[_0xf2ec('0x21')]][_0xf2ec('0x52')](_0x494f05)){logger[_0xf2ec('0x1f')]('[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s',_0x3b32bc['uniqueid'],_0x494f05,_['keys'](_0x3b32bc[_0xf2ec('0x6b')])[0x0],_0x3b32bc[_0xf2ec('0x6a')]);if(_['isUndefined'](this['channels'][_0x3b32bc[_0xf2ec('0x21')]][_0x494f05][_0xf2ec('0xb')])){this[_0xf2ec('0x8')][_0x3b32bc['uniqueid']][_0x494f05]['variables']={};}this[_0xf2ec('0x8')][_0x3b32bc[_0xf2ec('0x21')]][_0x494f05][_0xf2ec('0xb')]=this[_0xf2ec('0xb')][_0x3b32bc['uniqueid']];}}}}}catch(_0x2745ce){logger[_0xf2ec('0x32')](_0xf2ec('0x6c'),_0x3b32bc['uniqueid'],util[_0xf2ec('0x23')](_0x2745ce,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0xf2ec('0x69')]=function(_0x2fec40,_0x48047c,_0x20316f){var _0x2c562a=['rtpaudioqos','rtpaudioqosbridged',_0xf2ec('0x6d'),_0xf2ec('0x6e'),_0xf2ec('0x6f'),_0xf2ec('0x70'),_0xf2ec('0x71'),'rtpaudioqosrttbridged',_0xf2ec('0x72'),_0xf2ec('0x73'),'bridgepeer',_0xf2ec('0x74'),_0xf2ec('0x75'),_0xf2ec('0x76'),_0xf2ec('0x77'),'memberlastcall','membername',_0xf2ec('0x78'),'memberrealtime'];if(!_[_0xf2ec('0x79')](_0x48047c)&&!_['includes'](_0x2c562a,_0x48047c)){if(_[_0xf2ec('0x7a')](this['variables'][_0x2fec40])){this[_0xf2ec('0xb')][_0x2fec40]={};}this[_0xf2ec('0xb')][_0x2fec40][_0x48047c]=_0x20316f;}};VoiceAgentReport[_0xf2ec('0x1c')][_0xf2ec('0x16')]=function(_0x88b43a){try{if(this[_0xf2ec('0x1e')](_0x88b43a)){logger[_0xf2ec('0x2e')]('[%s][voiceAgentReport][hangup]\x20event:',_0x88b43a[_0xf2ec('0x21')],util[_0xf2ec('0x23')](_0x88b43a,{'showHidden':![],'depth':null}));if(this[_0xf2ec('0x8')][_0x88b43a[_0xf2ec('0x21')]]){for(var _0x10ed99 in this[_0xf2ec('0x8')][_0x88b43a[_0xf2ec('0x21')]]){if(this[_0xf2ec('0x8')][_0x88b43a[_0xf2ec('0x21')]][_0xf2ec('0x52')](_0x10ed99)){if(this['channels'][_0x88b43a[_0xf2ec('0x21')]][_0x10ed99][_0xf2ec('0x48')]==_0xf2ec('0x7b')&&this[_0xf2ec('0x8')][_0x88b43a[_0xf2ec('0x21')]][_0x10ed99][_0xf2ec('0x12')]){logger[_0xf2ec('0x1f')](_0xf2ec('0x7c'),_0x88b43a['uniqueid'],_0x10ed99);this[_0xf2ec('0x8')][_0x88b43a[_0xf2ec('0x21')]][_0x10ed99][_0xf2ec('0x5b')]=moment()[_0xf2ec('0x25')](_0xf2ec('0x26'));}}}logger[_0xf2ec('0x2e')](_0xf2ec('0x7d'),_0x88b43a[_0xf2ec('0x21')],util['inspect'](_['values'](this[_0xf2ec('0x8')][_0x88b43a[_0xf2ec('0x21')]]),{'showHidden':![],'depth':null}));ami[_0xf2ec('0x1d')](_0xf2ec('0x7e'),_[_0xf2ec('0x7f')](this[_0xf2ec('0x8')][_0x88b43a[_0xf2ec('0x21')]]));delete this[_0xf2ec('0x8')][_0x88b43a[_0xf2ec('0x21')]];}if(this[_0xf2ec('0xb')][_0x88b43a[_0xf2ec('0x21')]]){delete this[_0xf2ec('0xb')][_0x88b43a['uniqueid']];}}}catch(_0x53728f){logger['error']('[%s][voiceAgentReport][hangup]',_0x88b43a[_0xf2ec('0x21')],util[_0xf2ec('0x23')](_0x53728f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xf2ec('0x1c')]['syncAttendedTransfer']=function(_0x410d1c){try{if(this[_0xf2ec('0x1e')](_0x410d1c)){logger[_0xf2ec('0x2e')](_0xf2ec('0x80'),_0x410d1c[_0xf2ec('0x21')],util[_0xf2ec('0x23')](_0x410d1c,{'showHidden':![],'depth':null}));if(this['channels'][_0x410d1c[_0xf2ec('0x81')]]){for(var _0x100c51 in this[_0xf2ec('0x8')][_0x410d1c[_0xf2ec('0x81')]]){if(this[_0xf2ec('0x8')][_0x410d1c[_0xf2ec('0x81')]][_0xf2ec('0x52')](_0x100c51)){if(_0x410d1c[_0xf2ec('0x82')]===_0x100c51){logger[_0xf2ec('0x1f')]('[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x410d1c['uniqueid'],this['channels'][_0x410d1c[_0xf2ec('0x81')]][_0x100c51]['membername'],_0x100c51);var _0x3c7553=moment();this[_0xf2ec('0x8')][_0x410d1c['transfereeuniqueid']][_0x100c51][_0xf2ec('0x12')]=!![];this['channels'][_0x410d1c[_0xf2ec('0x81')]][_0x100c51][_0xf2ec('0x5b')]=moment()[_0xf2ec('0x25')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x410d1c['transfereeuniqueid']][_0x100c51][_0xf2ec('0x46')]=_0xf2ec('0x83');this[_0xf2ec('0x8')][_0x410d1c[_0xf2ec('0x81')]][_0x100c51][_0xf2ec('0x48')]=_0xf2ec('0x7b');this[_0xf2ec('0x8')][_0x410d1c['transfereeuniqueid']][_0x100c51][_0xf2ec('0x5d')]=_0x3c7553[_0xf2ec('0x84')](this[_0xf2ec('0x8')][_0x410d1c['transfereeuniqueid']][_0x100c51]['agentconnectAt'],'seconds');}}}}if(this['channels'][_0x410d1c[_0xf2ec('0x85')]]){var _0x48742a=this[_0xf2ec('0x8')][_0x410d1c[_0xf2ec('0x85')]];this[_0xf2ec('0x8')][_0x410d1c[_0xf2ec('0x85')]]=this[_0xf2ec('0x8')][_0x410d1c['transfereeuniqueid']];this[_0xf2ec('0x8')][_0x410d1c[_0xf2ec('0x81')]]=_0x48742a;}}}catch(_0x38a0f7){logger[_0xf2ec('0x32')](_0xf2ec('0x86'),_0x410d1c['uniqueid'],util[_0xf2ec('0x23')](_0x38a0f7,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xf2ec('0x1c')][_0xf2ec('0x1b')]=function(_0x1aa529){try{if(this[_0xf2ec('0x1e')](_0x1aa529)){logger['debug'](_0xf2ec('0x87'),_0x1aa529['uniqueid'],util[_0xf2ec('0x23')](_0x1aa529,{'showHidden':![],'depth':null}));if(this['channels'][_0x1aa529[_0xf2ec('0x81')]]){for(var _0x21061c in this[_0xf2ec('0x8')][_0x1aa529[_0xf2ec('0x81')]]){if(this[_0xf2ec('0x8')][_0x1aa529[_0xf2ec('0x81')]][_0xf2ec('0x52')](_0x21061c)){if(_0x1aa529[_0xf2ec('0x88')]===_0x21061c){logger[_0xf2ec('0x1f')](_0xf2ec('0x89'),_0x1aa529['uniqueid'],this[_0xf2ec('0x8')][_0x1aa529['transfereeuniqueid']][_0x21061c][_0xf2ec('0x22')],_0x21061c);var _0x4699ed=moment();this['channels'][_0x1aa529['transfereeuniqueid']][_0x21061c][_0xf2ec('0x12')]=!![];this[_0xf2ec('0x8')][_0x1aa529['transfereeuniqueid']][_0x21061c][_0xf2ec('0x5b')]=_0x4699ed;this['channels'][_0x1aa529['transfereeuniqueid']][_0x21061c][_0xf2ec('0x46')]=_0xf2ec('0x83');this[_0xf2ec('0x8')][_0x1aa529[_0xf2ec('0x81')]][_0x21061c][_0xf2ec('0x48')]=_0xf2ec('0x7b');this['channels'][_0x1aa529[_0xf2ec('0x81')]][_0x21061c]['talktime']=_0x4699ed['diff'](this[_0xf2ec('0x8')][_0x1aa529[_0xf2ec('0x81')]][_0x21061c]['agentconnectAt'],_0xf2ec('0x8a'));}}}}}}catch(_0x12a0bc){logger[_0xf2ec('0x32')](_0xf2ec('0x8b'),_0x1aa529[_0xf2ec('0x21')],util[_0xf2ec('0x23')](_0x12a0bc,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0xf2ec('0x18')]=function(_0x2a279a){var _0x16eb29='';try{if(this[_0xf2ec('0x1e')](_0x2a279a)){logger['debug'](_0xf2ec('0x8c'),_0x2a279a[_0xf2ec('0x21')],util[_0xf2ec('0x23')](_0x2a279a,{'showHidden':![],'depth':null}));if(_0x2a279a[_0xf2ec('0x8d')]){_0x16eb29=_0x2a279a[_0xf2ec('0x8d')][_0xf2ec('0x8e')](0x0,_0x2a279a[_0xf2ec('0x8d')][_0xf2ec('0x8f')]('-'));if(this[_0xf2ec('0xa')][_0x16eb29]){logger[_0xf2ec('0x1f')](_0xf2ec('0x90'),_0x2a279a[_0xf2ec('0x21')],_0x16eb29);this[_0xf2ec('0xa')][_0x16eb29][_0xf2ec('0x91')]=!![];}}}}catch(_0x3b7b76){logger[_0xf2ec('0x32')](_0xf2ec('0x92'),_0x2a279a['uniqueid'],util['inspect'](_0x3b7b76,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xf2ec('0x1c')]['syncMusicOnHoldStop']=function(_0x47e05b){var _0x28097='';try{if(this[_0xf2ec('0x1e')](_0x47e05b)){logger[_0xf2ec('0x2e')](_0xf2ec('0x93'),_0x47e05b[_0xf2ec('0x21')],util[_0xf2ec('0x23')](_0x47e05b,{'showHidden':![],'depth':null}));if(_0x47e05b['channel']){_0x28097=_0x47e05b[_0xf2ec('0x8d')][_0xf2ec('0x8e')](0x0,_0x47e05b['channel'][_0xf2ec('0x8f')]('-'));if(this[_0xf2ec('0xa')][_0x28097]){logger['info']('[%s][voiceAgentReport][musiconholdstop]\x20interface:%s',_0x47e05b['uniqueid'],_0x28097);this[_0xf2ec('0xa')][_0x28097]['onhold']=![];}}}}catch(_0x474b15){logger['error'](_0xf2ec('0x94'),_0x47e05b['uniqueid'],util[_0xf2ec('0x23')](_0x474b15,{'showHidden':![],'depth':null}));}};module[_0xf2ec('0x95')]=VoiceAgentReport;
\ No newline at end of file
index 3d613e0..1527e02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdace=['[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','lodash','util','path','ioredis','../../../config/logger','ami','../ami','../model/channel','set','queue','agi','playback','voicemail','NO\x20ANSWER','FAILED','BUSY','redis','defaults','localhost','channels','agents','blindTransfers','coreshowchannel','bind','newexten','syncNewExten','newchannel','syncNewState','varset','syncVarSet','syncHangup','newcallerid','syncNewCallerId','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isNotNull','isUndefined','emit','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridnum','linkedid','merge','pick','keys','context','from-sip','split','exten','channel','destconnectedlinenum','connectedlinenum','format','user:%s','name','user:agentconnect','accountcode','[%s][voiceCallReport][newcallerid]','syncNewChannel','debug','[%s][voiceCallReport][newchannel]\x20event:','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','disposition','toNumber','channelstate','OutgoingSpoolFailed','application','applicationdata','appdata','startsWith','CDR(routeAlias)','toLowerCase','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','subtract','seconds','YYYY-MM-DD\x20HH:mm:ss','includes','lastdata','match','isNil','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','calleridname','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','holdtime','diff','xcally-motion-preview','connectedlinename','destinationchannel','UserId','membername','starttime','routealias','[%s][voiceCallReport][newstate]','monitor','endsWith','.wav49','monitorFilename','monitors','push','rec','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','value','syncMixMonitorFilename','xmd-phone','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','type','xmd-queue','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcalluniqueid','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','cause-txt','endtime','billableseconds','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','length','transferType','then','undefined','isEmpty','getSettings','stopRecordingOnTransfer','StopMixMonitor','catch','Action','finally','webbar:stopmonitors','BlindTransfer','custom:voiceCallReport','[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfertargetcalleridnum','transfereeuniqueid','origtransferercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','transfercalleridnum','origtransfereruniqueid','origtransfererlinkedid','some','outbound','routeid','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','extension','[%s][voiceCallReport][blindtransfer]\x20event:','transfereecalleridnum','transfereruniqueid','transfererchannel','BLIND','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','mohtime','milliseconds'];(function(_0x1a16ec,_0x2e4981){var _0x155ab6=function(_0x4185d2){while(--_0x4185d2){_0x1a16ec['push'](_0x1a16ec['shift']());}};_0x155ab6(++_0x2e4981);}(_0xdace,0xc5));var _0xedac=function(_0x1e4f2d,_0x22e2bb){_0x1e4f2d=_0x1e4f2d-0x0;var _0xd05ce5=_0xdace[_0x1e4f2d];return _0xd05ce5;};'use strict';var _=require(_0xedac('0x0'));var moment=require('moment');var util=require(_0xedac('0x1'));var path=require(_0xedac('0x2'));var Redis=require(_0xedac('0x3'));var config=require('../../../config/environment');var logger=require(_0xedac('0x4'))(_0xedac('0x5'));var ami=require(_0xedac('0x6'));var Channel=require(_0xedac('0x7'));var RpcSetting=require('../rpc/setting');var applications=[_0xedac('0x8'),_0xedac('0x9'),_0xedac('0xa'),'dial',_0xedac('0xb'),_0xedac('0xc')];var dispositions=[_0xedac('0xd'),'FAILED',_0xedac('0xe'),_0xedac('0xd'),_0xedac('0xd'),'NO\x20ANSWER','ANSWERED',_0xedac('0xf'),_0xedac('0xe'),'FAILED','FAILED'];config[_0xedac('0x10')]=_[_0xedac('0x11')](config['redis'],{'host':_0xedac('0x12'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xedac('0x10')]));function VoiceCallReport(_0x1b0503){this[_0xedac('0x13')]=_0x1b0503[_0xedac('0x13')];this[_0xedac('0x14')]=_0x1b0503[_0xedac('0x14')];this[_0xedac('0x15')]={};ami['on'](_0xedac('0x16'),this['syncNewExten'][_0xedac('0x17')](this));ami['on'](_0xedac('0x18'),this[_0xedac('0x19')][_0xedac('0x17')](this));ami['on'](_0xedac('0x1a'),this['syncNewChannel'][_0xedac('0x17')](this));ami['on']('newstate',this[_0xedac('0x1b')][_0xedac('0x17')](this));ami['on'](_0xedac('0x1c'),this[_0xedac('0x1d')]['bind'](this));ami['on']('hangup',this[_0xedac('0x1e')][_0xedac('0x17')](this));ami['on'](_0xedac('0x1f'),this[_0xedac('0x20')]['bind'](this));ami['on']('attendedtransfer',this[_0xedac('0x21')][_0xedac('0x17')](this));ami['on'](_0xedac('0x22'),this[_0xedac('0x23')][_0xedac('0x17')](this));ami['on'](_0xedac('0x24'),this[_0xedac('0x25')][_0xedac('0x17')](this));ami['on']('musiconholdstop',this[_0xedac('0x26')]['bind'](this));try{logger[_0xedac('0x27')](_0xedac('0x28'));ami['actionCoreShowChannels']();}catch(_0x46e09d){logger[_0xedac('0x29')](_0xedac('0x2a'),util[_0xedac('0x2b')](_0x46e09d,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0xedac('0x2c')][_0xedac('0x2d')]=function(_0x5d7c31){return _0x5d7c31!==null&&!_[_0xedac('0x2e')](_0x5d7c31);};VoiceCallReport[_0xedac('0x2c')][_0xedac('0x2f')]=function(_0x41ad8d,_0x1ff33e,_0x453a3c){io['to'](_0x41ad8d)[_0xedac('0x2f')](_0x1ff33e,_0x453a3c);};VoiceCallReport[_0xedac('0x2c')][_0xedac('0x20')]=function(_0x4663c0){try{if(this['isNotNull'](_0x4663c0)){logger[_0xedac('0x27')](_0xedac('0x30'),_0x4663c0[_0xedac('0x31')],_0x4663c0['calleridname'],_0x4663c0[_0xedac('0x32')]);logger['debug']('[%s][voiceCallReport][newcallerid]\x20event:',_0x4663c0[_0xedac('0x31')],util[_0xedac('0x2b')](_0x4663c0,{'showHidden':![],'depth':null}));if(_0x4663c0[_0xedac('0x31')]===_0x4663c0[_0xedac('0x33')]){if(!_['isUndefined'](this['channels'][_0x4663c0[_0xedac('0x31')]])){_[_0xedac('0x34')](this[_0xedac('0x13')][_0x4663c0[_0xedac('0x31')]],_[_0xedac('0x35')](_0x4663c0,_[_0xedac('0x36')](this[_0xedac('0x13')][_0x4663c0['uniqueid']])));}}if(_0x4663c0[_0xedac('0x37')]===_0xedac('0x38')){if(this[_0xedac('0x14')][_0x4663c0['channel'][_0xedac('0x39')]('-')[0x0]]){if(_0x4663c0[_0xedac('0x3a')]=='xcally-motion-preview'){this[_0xedac('0x14')][_0x4663c0[_0xedac('0x3b')]['split']('-')[0x0]][_0xedac('0x3c')]=_0x4663c0[_0xedac('0x3d')];this[_0xedac('0x2f')](util[_0xedac('0x3e')](_0xedac('0x3f'),this[_0xedac('0x14')][_0x4663c0[_0xedac('0x3b')][_0xedac('0x39')]('-')[0x0]][_0xedac('0x40')]),_0xedac('0x41'),{'destaccountcode':this['agents'][_0x4663c0[_0xedac('0x3b')][_0xedac('0x39')]('-')[0x0]][_0xedac('0x42')],'destconnectedlinenum':_0x4663c0[_0xedac('0x3d')]});}}}}}catch(_0x15815e){logger[_0xedac('0x29')](_0xedac('0x43'),_0x4663c0[_0xedac('0x31')],util[_0xedac('0x2b')](_0x15815e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xedac('0x2c')][_0xedac('0x44')]=function(_0x39fe9f){try{if(this[_0xedac('0x2d')](_0x39fe9f)){logger[_0xedac('0x45')](_0xedac('0x46'),_0x39fe9f['uniqueid'],util[_0xedac('0x2b')](_0x39fe9f,{'showHidden':![],'depth':null}));if(this[_0xedac('0x13')][_0x39fe9f[_0xedac('0x31')]])return;if(_0x39fe9f[_0xedac('0x3b')]==='OutgoingSpoolFailed')return;if(_0x39fe9f[_0xedac('0x31')]!==_0x39fe9f[_0xedac('0x33')]&&!this[_0xedac('0x15')][_0x39fe9f['linkedid']])return;logger[_0xedac('0x27')](_0xedac('0x47'),_0x39fe9f[_0xedac('0x31')],_0x39fe9f['context'],_0x39fe9f[_0xedac('0x3a')]);this[_0xedac('0x13')][_0x39fe9f['uniqueid']]=new Channel();this[_0xedac('0x13')][_0x39fe9f[_0xedac('0x31')]]['starttime']=moment()[_0xedac('0x3e')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xedac('0x13')][_0x39fe9f[_0xedac('0x31')]][_0xedac('0x48')]=dispositions[_[_0xedac('0x49')](_0x39fe9f[_0xedac('0x4a')])];_[_0xedac('0x34')](this['channels'][_0x39fe9f[_0xedac('0x31')]],_[_0xedac('0x35')](_0x39fe9f,_[_0xedac('0x36')](this[_0xedac('0x13')][_0x39fe9f[_0xedac('0x31')]])));if(_0x39fe9f[_0xedac('0x37')]===_0xedac('0x38')){if(this[_0xedac('0x14')][_0x39fe9f[_0xedac('0x3b')][_0xedac('0x39')]('-')[0x0]]){if(_[_0xedac('0x2e')](this[_0xedac('0x14')][_0x39fe9f[_0xedac('0x3b')][_0xedac('0x39')]('-')[0x0]][_0xedac('0x3c')])){this[_0xedac('0x14')][_0x39fe9f['channel'][_0xedac('0x39')]('-')[0x0]][_0xedac('0x3c')]=_0x39fe9f[_0xedac('0x3a')];logger['debug']('[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:',_0x39fe9f['uniqueid'],util[_0xedac('0x2b')]({'id':this[_0xedac('0x14')][_0x39fe9f['channel'][_0xedac('0x39')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x39fe9f[_0xedac('0x3b')]['split']('-')[0x0]][_0xedac('0x42')],'destconnectedlinenum':_0x39fe9f[_0xedac('0x3a')]},{'showHidden':![],'depth':null}));this[_0xedac('0x2f')](util[_0xedac('0x3e')](_0xedac('0x3f'),this['agents'][_0x39fe9f['channel'][_0xedac('0x39')]('-')[0x0]]['name']),_0xedac('0x41'),{'id':this[_0xedac('0x14')][_0x39fe9f[_0xedac('0x3b')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0xedac('0x14')][_0x39fe9f[_0xedac('0x3b')][_0xedac('0x39')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x39fe9f[_0xedac('0x3a')]});}}}}}catch(_0x2c57ab){logger[_0xedac('0x29')]('[%s][voiceCallReport][newchannel]',_0x39fe9f['uniqueid'],util[_0xedac('0x2b')](_0x2c57ab,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xedac('0x2c')]['syncNewExten']=function(_0x5a6fc4){try{if(this[_0xedac('0x2d')](_0x5a6fc4)){logger[_0xedac('0x45')]('[%s][voiceCallReport][newexten]\x20event:',_0x5a6fc4[_0xedac('0x31')],util['inspect'](_0x5a6fc4,{'showHidden':![],'depth':null}));if(_0x5a6fc4[_0xedac('0x3b')]===_0xedac('0x4b')||_0x5a6fc4[_0xedac('0x3a')]==='h')return;if(_0x5a6fc4[_0xedac('0x31')]===_0x5a6fc4[_0xedac('0x33')]||this[_0xedac('0x15')][_0x5a6fc4['linkedid']]){_0x5a6fc4[_0xedac('0x4c')]=_0x5a6fc4[_0xedac('0x4c')]['toLowerCase']();_0x5a6fc4[_0xedac('0x4d')]=_0x5a6fc4[_0xedac('0x4e')]||_0x5a6fc4[_0xedac('0x4d')];if(_0x5a6fc4['appdata']&&!_0x5a6fc4['appdata'][_0xedac('0x4f')](_0xedac('0x50'))&&_0x5a6fc4['application']!==_0xedac('0x9')){_0x5a6fc4[_0xedac('0x4d')]=_0x5a6fc4[_0xedac('0x4d')][_0xedac('0x51')]();}logger[_0xedac('0x27')](_0xedac('0x52'),_0x5a6fc4[_0xedac('0x31')],_0x5a6fc4[_0xedac('0x4c')],_0x5a6fc4['applicationdata']);if(_['isUndefined'](this[_0xedac('0x13')][_0x5a6fc4[_0xedac('0x31')]])){this[_0xedac('0x13')][_0x5a6fc4['uniqueid']]=new Channel();this[_0xedac('0x13')][_0x5a6fc4[_0xedac('0x31')]]['starttime']=_0x5a6fc4[_0xedac('0x53')]?moment()[_0xedac('0x54')](moment['duration'](_0x5a6fc4['duration'])['seconds'](),_0xedac('0x55'))['format'](_0xedac('0x56')):moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0xedac('0x13')][_0x5a6fc4[_0xedac('0x31')]][_0xedac('0x48')]=_0xedac('0xd');}_[_0xedac('0x34')](this['channels'][_0x5a6fc4[_0xedac('0x31')]],_['pick'](_0x5a6fc4,_[_0xedac('0x36')](this[_0xedac('0x13')][_0x5a6fc4[_0xedac('0x31')]])));if(_[_0xedac('0x57')](applications,_0x5a6fc4[_0xedac('0x4c')])){this[_0xedac('0x13')][_0x5a6fc4[_0xedac('0x31')]]['lastapplication']=_0x5a6fc4[_0xedac('0x4c')];this[_0xedac('0x13')][_0x5a6fc4[_0xedac('0x31')]][_0xedac('0x58')]=_0x5a6fc4[_0xedac('0x4d')];if(_0x5a6fc4[_0xedac('0x4c')]===_0xedac('0x8')&&_[_0xedac('0x4f')](_0x5a6fc4[_0xedac('0x4d')][_0xedac('0x51')](),'cdr(')){var _0x5ced22=_0x5a6fc4[_0xedac('0x4d')][_0xedac('0x39')]('=');var _0x344ea7=_0x5ced22[0x0][_0xedac('0x51')]()[_0xedac('0x59')](/cdr\((.*)\)/);if(_0x344ea7){if(_0x344ea7[0x1]==='type'&&!_[_0xedac('0x5a')](this['channels'][_0x5a6fc4[_0xedac('0x31')]][_0x344ea7[0x1]]))return;this[_0xedac('0x13')][_0x5a6fc4['uniqueid']][_0x344ea7[0x1]]=_0x5ced22[0x1];}}else if(_0x5a6fc4['application']==='queue'){this[_0xedac('0x13')][_0x5a6fc4[_0xedac('0x31')]][_0xedac('0x9')]=_0x5a6fc4[_0xedac('0x4d')][_0xedac('0x39')](',')[0x0];}}}}}catch(_0xc6c7fc){logger[_0xedac('0x29')](_0xedac('0x5b'),_0x5a6fc4[_0xedac('0x31')],util[_0xedac('0x2b')](_0xc6c7fc,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xedac('0x1b')]=function(_0x30f8ca){try{if(this['isNotNull'](_0x30f8ca)){logger[_0xedac('0x27')](_0xedac('0x5c'),_0x30f8ca[_0xedac('0x31')],_0x30f8ca[_0xedac('0x33')],_0x30f8ca[_0xedac('0x5d')],_0x30f8ca[_0xedac('0x32')]);logger[_0xedac('0x45')](_0xedac('0x5e'),_0x30f8ca[_0xedac('0x31')],util[_0xedac('0x2b')](_0x30f8ca,{'showHidden':![],'depth':null}));if(_0x30f8ca[_0xedac('0x4a')]!=='6')return;if(_0x30f8ca[_0xedac('0x31')]!==_0x30f8ca[_0xedac('0x33')]){var _0x3a1d68=moment();if(this[_0xedac('0x13')][_0x30f8ca[_0xedac('0x33')]]){if(!this[_0xedac('0x13')][_0x30f8ca[_0xedac('0x33')]]['answered']){this[_0xedac('0x13')][_0x30f8ca['linkedid']][_0xedac('0x5f')]=!![];this['channels'][_0x30f8ca[_0xedac('0x33')]][_0xedac('0x60')]=_0x3a1d68[_0xedac('0x3e')](_0xedac('0x56'));if(this[_0xedac('0x13')][_0x30f8ca[_0xedac('0x33')]]['starttime']){this[_0xedac('0x13')][_0x30f8ca[_0xedac('0x33')]][_0xedac('0x61')]=_0x3a1d68[_0xedac('0x62')](this[_0xedac('0x13')][_0x30f8ca[_0xedac('0x33')]]['starttime'],_0xedac('0x55'));}}this['channels'][_0x30f8ca[_0xedac('0x33')]][_0xedac('0x33')]=_0x30f8ca[_0xedac('0x31')];if(_0x30f8ca['calleridnum']!==_0xedac('0x63')){this['channels'][_0x30f8ca['linkedid']][_0xedac('0x3d')]=_0x30f8ca[_0xedac('0x32')];}this[_0xedac('0x13')][_0x30f8ca[_0xedac('0x33')]][_0xedac('0x64')]=_0x30f8ca['calleridname'];this[_0xedac('0x13')][_0x30f8ca['linkedid']][_0xedac('0x65')]=_0x30f8ca[_0xedac('0x3b')];this[_0xedac('0x13')][_0x30f8ca[_0xedac('0x33')]][_0xedac('0x48')]=dispositions[_[_0xedac('0x49')](_0x30f8ca['channelstate'])];if(this[_0xedac('0x14')][_0x30f8ca[_0xedac('0x3b')][_0xedac('0x39')]('-')[0x0]]){this[_0xedac('0x13')][_0x30f8ca[_0xedac('0x33')]][_0xedac('0x66')]=this[_0xedac('0x14')][_0x30f8ca[_0xedac('0x3b')][_0xedac('0x39')]('-')[0x0]]['id'];this[_0xedac('0x13')][_0x30f8ca[_0xedac('0x33')]][_0xedac('0x67')]=this['agents'][_0x30f8ca[_0xedac('0x3b')]['split']('-')[0x0]]['name'];}}if(this[_0xedac('0x13')][_0x30f8ca['uniqueid']]){if(!this[_0xedac('0x13')][_0x30f8ca[_0xedac('0x31')]]['answered']){this[_0xedac('0x13')][_0x30f8ca['uniqueid']][_0xedac('0x5f')]=!![];this['channels'][_0x30f8ca[_0xedac('0x31')]]['answertime']=_0x3a1d68[_0xedac('0x3e')](_0xedac('0x56'));if(this['channels'][_0x30f8ca[_0xedac('0x31')]]['starttime']){this[_0xedac('0x13')][_0x30f8ca[_0xedac('0x31')]][_0xedac('0x61')]=_0x3a1d68[_0xedac('0x62')](this[_0xedac('0x13')][_0x30f8ca['uniqueid']][_0xedac('0x68')],'seconds');}}if(_0x30f8ca[_0xedac('0x32')]!==_0xedac('0x63')){this[_0xedac('0x13')][_0x30f8ca[_0xedac('0x31')]][_0xedac('0x3d')]=_0x30f8ca[_0xedac('0x32')];}this['channels'][_0x30f8ca[_0xedac('0x31')]][_0xedac('0x64')]=_0x30f8ca['calleridname'];this['channels'][_0x30f8ca[_0xedac('0x31')]][_0xedac('0x65')]=_0x30f8ca[_0xedac('0x3b')];this[_0xedac('0x13')][_0x30f8ca[_0xedac('0x31')]]['disposition']=dispositions[_[_0xedac('0x49')](_0x30f8ca[_0xedac('0x4a')])];}}else{if(this['channels'][_0x30f8ca[_0xedac('0x31')]]){if(this[_0xedac('0x14')][_0x30f8ca[_0xedac('0x3b')][_0xedac('0x39')]('-')[0x0]]){this[_0xedac('0x13')][_0x30f8ca[_0xedac('0x31')]][_0xedac('0x66')]=this[_0xedac('0x14')][_0x30f8ca[_0xedac('0x3b')][_0xedac('0x39')]('-')[0x0]]['id'];this['channels'][_0x30f8ca[_0xedac('0x31')]][_0xedac('0x67')]=this[_0xedac('0x14')][_0x30f8ca[_0xedac('0x3b')][_0xedac('0x39')]('-')[0x0]]['name'];}}}if(_0x30f8ca[_0xedac('0x37')]===_0xedac('0x38')){if(this[_0xedac('0x14')][_0x30f8ca[_0xedac('0x3b')]['split']('-')[0x0]]){this['agents'][_0x30f8ca[_0xedac('0x3b')][_0xedac('0x39')]('-')[0x0]][_0xedac('0x3c')]=_0x30f8ca[_0xedac('0x3a')];var _0x20f7e6,_0xd09529;if(this[_0xedac('0x13')][_0x30f8ca[_0xedac('0x31')]]){_0x20f7e6=this[_0xedac('0x13')][_0x30f8ca[_0xedac('0x31')]][_0xedac('0x69')];_0xd09529=this[_0xedac('0x13')][_0x30f8ca['uniqueid']][_0xedac('0x9')];}else if(this['channels'][_0x30f8ca[_0xedac('0x33')]]){_0x20f7e6=this['channels'][_0x30f8ca[_0xedac('0x33')]][_0xedac('0x69')];_0xd09529=this['channels'][_0x30f8ca[_0xedac('0x33')]][_0xedac('0x9')];}logger[_0xedac('0x45')]('[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:',_0x30f8ca[_0xedac('0x31')],util[_0xedac('0x2b')]({'id':this[_0xedac('0x14')][_0x30f8ca['channel'][_0xedac('0x39')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x30f8ca[_0xedac('0x3b')]['split']('-')[0x0]][_0xedac('0x42')],'destconnectedlinenum':_0x30f8ca[_0xedac('0x3a')],'routealias':_0x20f7e6,'queue':_0xd09529||undefined},{'showHidden':![],'depth':null}));this[_0xedac('0x2f')](util[_0xedac('0x3e')]('user:%s',this['agents'][_0x30f8ca[_0xedac('0x3b')][_0xedac('0x39')]('-')[0x0]]['name']),_0xedac('0x41'),{'id':this[_0xedac('0x14')][_0x30f8ca[_0xedac('0x3b')][_0xedac('0x39')]('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this[_0xedac('0x14')][_0x30f8ca['channel']['split']('-')[0x0]][_0xedac('0x42')],'destconnectedlinenum':_0x30f8ca[_0xedac('0x3a')],'routealias':_0x20f7e6,'queue':_0xd09529||undefined});}}}}catch(_0x3fc497){logger['error'](_0xedac('0x6a'),_0x30f8ca[_0xedac('0x31')],util[_0xedac('0x2b')](_0x3fc497,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xedac('0x2c')]['syncMixMonitorFilename']=function(_0x23bd91,_0x30bc09){try{if(this['channels'][_0x23bd91]){logger[_0xedac('0x27')]('[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s',_0x23bd91,_0x30bc09);this[_0xedac('0x13')][_0x23bd91][_0xedac('0x6b')]=!![];if(_[_0xedac('0x6c')](_0x30bc09,_0xedac('0x6d'))){_0x30bc09=_0x30bc09['replace'](_0xedac('0x6d'),'.WAV');}this[_0xedac('0x13')][_0x23bd91][_0xedac('0x6e')]=_0x30bc09;var _0x92b268=_['find'](this['channels'][_0x23bd91][_0xedac('0x6f')],{'filename':_0x30bc09});if(_[_0xedac('0x5a')](_0x92b268)){this[_0xedac('0x13')][_0x23bd91][_0xedac('0x6f')][_0xedac('0x70')]({'filename':_0x30bc09,'createdAt':moment()['format'](_0xedac('0x56')),'mixmonitorid':'','status':_0xedac('0x71')});}}}catch(_0x375195){logger[_0xedac('0x29')](_0xedac('0x72'),_0x23bd91,util[_0xedac('0x2b')](_0x375195,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xedac('0x2c')][_0xedac('0x1d')]=function(_0x4840aa){try{if(this[_0xedac('0x2d')](_0x4840aa)){logger['debug'](_0xedac('0x73'),_0x4840aa[_0xedac('0x31')],util['inspect'](_0x4840aa,{'showHidden':![],'depth':null}));if(this[_0xedac('0x13')][_0x4840aa['uniqueid']]&&_0x4840aa['channel']!=_0xedac('0x4b')){if(this[_0xedac('0x2d')](_0x4840aa[_0xedac('0x74')])){if(this[_0xedac('0x2d')](_0x4840aa[_0xedac('0x74')][_0xedac('0x75')])){logger['info']('[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s',_0x4840aa[_0xedac('0x31')],_0x4840aa[_0xedac('0x76')]);this[_0xedac('0x77')](_0x4840aa['uniqueid'],_0x4840aa['value']);}else if(this[_0xedac('0x2d')](_0x4840aa[_0xedac('0x74')][_0xedac('0x78')])){logger[_0xedac('0x27')]('[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s',_0x4840aa[_0xedac('0x31')],_0x4840aa[_0xedac('0x76')]);this['channels'][_0x4840aa[_0xedac('0x31')]][_0xedac('0x32')]=_0x4840aa[_0xedac('0x76')];}else if(this['isNotNull'](_0x4840aa['variable'][_0xedac('0x79')])){logger[_0xedac('0x27')](_0xedac('0x7a'),_0x4840aa[_0xedac('0x31')],_0x4840aa[_0xedac('0x76')]);this[_0xedac('0x13')][_0x4840aa[_0xedac('0x31')]][_0xedac('0x7b')]=_0x4840aa[_0xedac('0x76')];}else if(this[_0xedac('0x2d')](_0x4840aa[_0xedac('0x74')][_0xedac('0x7c')])){logger['info'](_0xedac('0x7d'),_0x4840aa['uniqueid'],_0x4840aa['value']);this[_0xedac('0x13')][_0x4840aa[_0xedac('0x31')]][_0xedac('0x7e')]=_0x4840aa['value'];}else if(this[_0xedac('0x2d')](_0x4840aa[_0xedac('0x74')][_0xedac('0x7f')])){logger[_0xedac('0x27')]('[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s',_0x4840aa[_0xedac('0x31')],_0x4840aa[_0xedac('0x76')][_0xedac('0x39')](',')[0x0]);this[_0xedac('0x13')][_0x4840aa[_0xedac('0x31')]][_0xedac('0x9')]=_0x4840aa[_0xedac('0x76')][_0xedac('0x39')](',')[0x0];}else if(this[_0xedac('0x2d')](_0x4840aa['variable'][_0xedac('0x80')])){logger[_0xedac('0x27')](_0xedac('0x81'),_0x4840aa[_0xedac('0x31')],_0x4840aa['value']);this['channels'][_0x4840aa['uniqueid']][_0xedac('0x82')]=_0x4840aa[_0xedac('0x76')];}else if(this[_0xedac('0x2d')](_0x4840aa[_0xedac('0x74')][_0xedac('0x83')])){logger[_0xedac('0x27')](_0xedac('0x84'),_0x4840aa['uniqueid'],_0x4840aa[_0xedac('0x76')]);this[_0xedac('0x13')][_0x4840aa[_0xedac('0x31')]][_0xedac('0x85')]=_0x4840aa['value'];}else if(this['isNotNull'](_0x4840aa[_0xedac('0x74')][_0xedac('0x86')])){logger[_0xedac('0x27')](_0xedac('0x87'),_0x4840aa[_0xedac('0x31')],_0x4840aa['value']);this['channels'][_0x4840aa[_0xedac('0x31')]]['calleridpreview']=_0x4840aa[_0xedac('0x76')];}else if(this[_0xedac('0x2d')](_0x4840aa['variable'][_0xedac('0x88')])){logger['info'](_0xedac('0x89'),_0x4840aa[_0xedac('0x31')],_0x4840aa[_0xedac('0x76')]);this[_0xedac('0x13')][_0x4840aa[_0xedac('0x31')]]['queue']=_0x4840aa['value'];}else if(this['isNotNull'](_0x4840aa[_0xedac('0x74')]['sipcallid'])){logger[_0xedac('0x27')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x4840aa[_0xedac('0x31')],_0x4840aa[_0xedac('0x76')]);this[_0xedac('0x13')][_0x4840aa[_0xedac('0x31')]][_0xedac('0x8a')]=_0x4840aa[_0xedac('0x76')];}}}else if(this[_0xedac('0x2d')](_0x4840aa['variable']['mixmonitor_filename'])){if(_0x4840aa[_0xedac('0x76')]){var _0x24c4aa=path['parse'](_0x4840aa[_0xedac('0x76')])[_0xedac('0x40')];logger[_0xedac('0x27')](_0xedac('0x8b'),_0x24c4aa,_0x4840aa[_0xedac('0x76')]);this['syncMixMonitorFilename'](_0x24c4aa,_0x4840aa['value']);}}else if(this[_0xedac('0x13')][_0x4840aa['linkedid']]){if(this[_0xedac('0x2d')](_0x4840aa['variable'])){if(this[_0xedac('0x2d')](_0x4840aa[_0xedac('0x74')][_0xedac('0x8c')])){logger[_0xedac('0x27')](_0xedac('0x8d'),_0x4840aa[_0xedac('0x33')],_0x4840aa[_0xedac('0x76')]);this[_0xedac('0x13')][_0x4840aa[_0xedac('0x33')]][_0xedac('0x8e')]=_0x4840aa['value'];}}}}}catch(_0x13e240){logger[_0xedac('0x29')](_0xedac('0x8f'),_0x4840aa['uniqueid'],util[_0xedac('0x2b')](_0x13e240,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xedac('0x1e')]=function(_0x4f65cb){try{if(this['isNotNull'](_0x4f65cb)){logger[_0xedac('0x45')](_0xedac('0x90'),_0x4f65cb[_0xedac('0x31')],util[_0xedac('0x2b')](_0x4f65cb,{'showHidden':![],'depth':null}));if(this[_0xedac('0x15')][_0x4f65cb[_0xedac('0x33')]]){if(this[_0xedac('0x13')][this[_0xedac('0x15')][_0x4f65cb[_0xedac('0x33')]][_0xedac('0x33')]]){this[_0xedac('0x13')][this[_0xedac('0x15')][_0x4f65cb[_0xedac('0x33')]][_0xedac('0x33')]]['uniqueid']=_0x4f65cb[_0xedac('0x31')];this[_0xedac('0x13')][this[_0xedac('0x15')][_0x4f65cb[_0xedac('0x33')]][_0xedac('0x33')]][_0xedac('0x5f')]=this['channels'][_0x4f65cb[_0xedac('0x31')]][_0xedac('0x5f')];this['channels'][this[_0xedac('0x15')][_0x4f65cb[_0xedac('0x33')]][_0xedac('0x33')]][_0xedac('0x60')]=this[_0xedac('0x13')][_0x4f65cb[_0xedac('0x31')]][_0xedac('0x60')];this[_0xedac('0x13')][this[_0xedac('0x15')][_0x4f65cb['linkedid']][_0xedac('0x33')]][_0xedac('0x65')]=this['channels'][this[_0xedac('0x15')][_0x4f65cb[_0xedac('0x33')]][_0xedac('0x33')]][_0xedac('0x3b')];this[_0xedac('0x13')][this[_0xedac('0x15')][_0x4f65cb[_0xedac('0x33')]][_0xedac('0x33')]]['disposition']=this[_0xedac('0x13')][_0x4f65cb[_0xedac('0x31')]][_0xedac('0x48')];this['channels'][_0x4f65cb[_0xedac('0x31')]]=this['channels'][this[_0xedac('0x15')][_0x4f65cb[_0xedac('0x33')]]['linkedid']];delete this[_0xedac('0x13')][this['blindTransfers'][_0x4f65cb[_0xedac('0x33')]][_0xedac('0x33')]];}else if(this[_0xedac('0x13')][this[_0xedac('0x15')][_0x4f65cb['linkedid']][_0xedac('0x31')]]){this[_0xedac('0x13')][this[_0xedac('0x15')][_0x4f65cb[_0xedac('0x33')]]['uniqueid']]['uniqueid']=[this[_0xedac('0x13')][this[_0xedac('0x15')][_0x4f65cb[_0xedac('0x33')]][_0xedac('0x31')]][_0xedac('0x33')],this[_0xedac('0x13')][this[_0xedac('0x15')][_0x4f65cb[_0xedac('0x33')]][_0xedac('0x31')]][_0xedac('0x33')]=this[_0xedac('0x13')][this['blindTransfers'][_0x4f65cb['linkedid']]['uniqueid']][_0xedac('0x31')]][0x0];this[_0xedac('0x13')][this[_0xedac('0x15')][_0x4f65cb[_0xedac('0x33')]]['uniqueid']][_0xedac('0x5f')]=this['channels'][_0x4f65cb[_0xedac('0x31')]][_0xedac('0x5f')];this['channels'][this[_0xedac('0x15')][_0x4f65cb[_0xedac('0x33')]][_0xedac('0x31')]]['answertime']=this[_0xedac('0x13')][_0x4f65cb[_0xedac('0x31')]]['answertime'];this[_0xedac('0x13')][this['blindTransfers'][_0x4f65cb[_0xedac('0x33')]][_0xedac('0x31')]][_0xedac('0x65')]=this[_0xedac('0x13')][this[_0xedac('0x15')][_0x4f65cb['linkedid']][_0xedac('0x31')]]['channel'];this[_0xedac('0x13')][this[_0xedac('0x15')][_0x4f65cb[_0xedac('0x33')]][_0xedac('0x31')]][_0xedac('0x48')]=this[_0xedac('0x13')][_0x4f65cb[_0xedac('0x31')]][_0xedac('0x48')];this['channels'][_0x4f65cb[_0xedac('0x31')]]=this[_0xedac('0x13')][this[_0xedac('0x15')][_0x4f65cb[_0xedac('0x33')]][_0xedac('0x31')]];delete this[_0xedac('0x13')][this['blindTransfers'][_0x4f65cb[_0xedac('0x33')]]['uniqueid']];}}if(this[_0xedac('0x13')][_0x4f65cb[_0xedac('0x31')]]){logger[_0xedac('0x27')]('[%s][voiceCallReport][hangup]\x20reason:%s',_0x4f65cb[_0xedac('0x31')],_0x4f65cb[_0xedac('0x91')]);var _0x1495a0=moment();this[_0xedac('0x13')][_0x4f65cb[_0xedac('0x31')]][_0xedac('0x92')]=_0x1495a0[_0xedac('0x3e')](_0xedac('0x56'));this[_0xedac('0x13')][_0x4f65cb['uniqueid']]['duration']=_0x1495a0[_0xedac('0x62')](this[_0xedac('0x13')][_0x4f65cb[_0xedac('0x31')]][_0xedac('0x68')],_0xedac('0x55'));if(this['channels'][_0x4f65cb[_0xedac('0x31')]][_0xedac('0x5f')]){this[_0xedac('0x13')][_0x4f65cb[_0xedac('0x31')]]['billableseconds']=_0x1495a0[_0xedac('0x62')](this[_0xedac('0x13')][_0x4f65cb[_0xedac('0x31')]][_0xedac('0x60')],_0xedac('0x55'));this[_0xedac('0x13')][_0x4f65cb['uniqueid']]['holdtime']=this[_0xedac('0x13')][_0x4f65cb[_0xedac('0x31')]][_0xedac('0x53')]-this['channels'][_0x4f65cb[_0xedac('0x31')]][_0xedac('0x93')];}if(_0x4f65cb[_0xedac('0x37')]==='from-sip'){if(this['agents'][_0x4f65cb[_0xedac('0x3b')]['split']('-')[0x0]]){this[_0xedac('0x14')][_0x4f65cb[_0xedac('0x3b')]['split']('-')[0x0]]=_['omit'](this['agents'][_0x4f65cb[_0xedac('0x3b')]['split']('-')[0x0]],['destconnectedlinenum']);logger[_0xedac('0x45')](_0xedac('0x94'),_0x4f65cb[_0xedac('0x31')],util[_0xedac('0x2b')]({'id':this[_0xedac('0x14')][_0x4f65cb[_0xedac('0x3b')][_0xedac('0x39')]('-')[0x0]]['id'],'destaccountcode':this[_0xedac('0x14')][_0x4f65cb[_0xedac('0x3b')][_0xedac('0x39')]('-')[0x0]][_0xedac('0x42')]},{'showHidden':![],'depth':null}));this[_0xedac('0x2f')](util[_0xedac('0x3e')]('user:%s',this[_0xedac('0x14')][_0x4f65cb[_0xedac('0x3b')][_0xedac('0x39')]('-')[0x0]][_0xedac('0x40')]),_0xedac('0x95'),{'id':this[_0xedac('0x14')][_0x4f65cb[_0xedac('0x3b')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0xedac('0x14')][_0x4f65cb[_0xedac('0x3b')][_0xedac('0x39')]('-')[0x0]][_0xedac('0x42')]});for(var _0x2ac680=0x0;_0x2ac680<Object[_0xedac('0x36')](this['agents'])[_0xedac('0x96')];_0x2ac680++){var _0x45b5e5=Object[_0xedac('0x36')](this[_0xedac('0x14')])[_0x2ac680];var _0xe60543=this['agents'][_0x45b5e5];if(_0xe60543[_0xedac('0x42')]===Number(_0x4f65cb[_0xedac('0x3d')])){this[_0xedac('0x2f')](util[_0xedac('0x3e')](_0xedac('0x3f'),_0xe60543[_0xedac('0x40')]),_0xedac('0x95'),{'id':_0xe60543['id'],'destaccountcode':_0xe60543[_0xedac('0x42')],'transfer':this[_0xedac('0x13')][_0x4f65cb[_0xedac('0x31')]][_0xedac('0x97')]});break;}}}}var _0x1f3d05=this;Promise['resolve']()[_0xedac('0x98')](function(){var _0x9c832b=_0x1f3d05[_0xedac('0x13')][_0x4f65cb[_0xedac('0x31')]];if(typeof _0x9c832b['transferType']===_0xedac('0x99'))return;if(_[_0xedac('0x9a')](_0x9c832b[_0xedac('0x6f')]))return;return RpcSetting[_0xedac('0x9b')]()['then'](function(_0x44372d){if(!_0x44372d[_0xedac('0x9c')])return;return Promise['resolve']()[_0xedac('0x98')](function(){return ami['Action']({'action':_0xedac('0x9d'),'channel':_0x9c832b[_0xedac('0x3b')]})[_0xedac('0x9e')](function(){});})[_0xedac('0x98')](function(){return ami[_0xedac('0x9f')]({'action':_0xedac('0x9d'),'channel':_0x9c832b[_0xedac('0x65')]})['catch'](function(){})[_0xedac('0xa0')](function(){var _0x413faa=_0x1f3d05['agents'][_0x9c832b['destinationchannel'][_0xedac('0x39')]('-')[0x0]];if(!_0x413faa)return;io[_0xedac('0x2f')](_0xedac('0xa1'),{'agentId':_0x413faa['id'],'uniqueid':_0x9c832b[_0xedac('0x31')]});});});});})[_0xedac('0x98')](function(){if(_0x4f65cb['event']===_0xedac('0xa2')){_0x1f3d05[_0xedac('0x15')][_0x4f65cb['uniqueid']]=_0x4f65cb;}else{if(_0x1f3d05['channels'][_0x4f65cb['uniqueid']][_0xedac('0x7e')]==='outbound'&&_0x1f3d05['blindTransfers'][_0x4f65cb[_0xedac('0x31')]]){_0x1f3d05['channels'][_0x4f65cb['uniqueid']]['uniqueid']=[_0x1f3d05[_0xedac('0x13')][_0x4f65cb[_0xedac('0x31')]]['linkedid'],_0x1f3d05[_0xedac('0x13')][_0x4f65cb[_0xedac('0x31')]]['linkedid']=_0x1f3d05[_0xedac('0x13')][_0x4f65cb[_0xedac('0x31')]][_0xedac('0x31')]][0x0];delete _0x1f3d05[_0xedac('0x15')][_0x4f65cb[_0xedac('0x31')]];}}logger[_0xedac('0x45')]('[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:',_0x4f65cb['uniqueid'],util['inspect'](_0x1f3d05[_0xedac('0x13')][_0x4f65cb[_0xedac('0x31')]],{'showHidden':![],'depth':null}));ami[_0xedac('0x2f')](_0xedac('0xa3'),_0x1f3d05['channels'][_0x4f65cb[_0xedac('0x31')]]);delete _0x1f3d05[_0xedac('0x13')][_0x4f65cb['uniqueid']];});}}}catch(_0x2b50f8){logger[_0xedac('0x29')](_0xedac('0xa4'),_0x4f65cb[_0xedac('0x31')],util[_0xedac('0x2b')](_0x2b50f8,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xedac('0x2c')][_0xedac('0x21')]=function(_0x266e08){try{if(this['isNotNull'](_0x266e08)){logger[_0xedac('0x27')](_0xedac('0xa5'),_0x266e08[_0xedac('0x31')],_0x266e08['origtransferercalleridnum'],_0x266e08[_0xedac('0xa6')]);logger[_0xedac('0x45')]('[%s][voiceCallReport][attendedtransfer]\x20event:',_0x266e08[_0xedac('0x31')],util[_0xedac('0x2b')](_0x266e08,{'showHidden':![],'depth':null}));var _0x2ca6d8;if(this[_0xedac('0x13')][_0x266e08[_0xedac('0xa7')]]){this['channels'][_0x266e08['transfereeuniqueid']]['transfercalleridnum']=_0x266e08[_0xedac('0xa8')];this[_0xedac('0x13')][_0x266e08[_0xedac('0xa7')]][_0xedac('0xa9')]=_0x266e08[_0xedac('0xa6')];if(this['channels'][_0x266e08[_0xedac('0xaa')]]){_0x2ca6d8=this['channels'][_0x266e08[_0xedac('0xaa')]];this[_0xedac('0x13')][_0x266e08[_0xedac('0xaa')]]=this['channels'][_0x266e08['transfereeuniqueid']];this[_0xedac('0x13')][_0x266e08[_0xedac('0xa7')]]=_0x2ca6d8;}this[_0xedac('0x13')][_0x266e08['secondtransfereruniqueid']][_0xedac('0x97')]=_0xedac('0xab');}else if(this[_0xedac('0x13')][_0x266e08[_0xedac('0xac')]]){this[_0xedac('0x13')][_0x266e08['transfertargetuniqueid']][_0xedac('0xad')]=_0x266e08[_0xedac('0xa8')];this[_0xedac('0x13')][_0x266e08['transfertargetuniqueid']][_0xedac('0xa9')]=_0x266e08[_0xedac('0xa6')];if(this[_0xedac('0x13')][_0x266e08['origtransfereruniqueid']]){_0x2ca6d8=this[_0xedac('0x13')][_0x266e08[_0xedac('0xae')]];this[_0xedac('0x13')][_0x266e08[_0xedac('0xae')]]=this['channels'][_0x266e08[_0xedac('0xac')]];this[_0xedac('0x13')][_0x266e08[_0xedac('0xac')]]=_0x2ca6d8;}this[_0xedac('0x13')][_0x266e08[_0xedac('0xac')]]['transferType']=_0xedac('0xab');}if((this['channels'][_0x266e08[_0xedac('0xae')]]||this['channels'][_0x266e08[_0xedac('0xaf')]])&&this[_0xedac('0x13')][_0x266e08['secondtransfereruniqueid']]){var _0xc01194=_[_0xedac('0xb0')]([this['channels'][_0x266e08['origtransfereruniqueid']],this[_0xedac('0x13')][_0x266e08['origtransfererlinkedid']],this['channels'][_0x266e08[_0xedac('0xaa')]]],function(_0x118f9f){return _0x118f9f&&_0x118f9f[_0xedac('0x7e')]===_0xedac('0xb1')&&_0x118f9f[_0xedac('0xb2')];});if(_0xc01194){if(this[_0xedac('0x13')][_0x266e08['origtransfereruniqueid']])this[_0xedac('0x13')][_0x266e08[_0xedac('0xae')]]['transferType']=_0xedac('0xab');if(this['channels'][_0x266e08[_0xedac('0xaf')]])this[_0xedac('0x13')][_0x266e08['origtransfererlinkedid']][_0xedac('0x97')]=_0xedac('0xab');this[_0xedac('0x13')][_0x266e08[_0xedac('0xaa')]][_0xedac('0x97')]='ATTENDED';}}}}catch(_0x31737d){logger[_0xedac('0x29')](_0xedac('0xb3'),_0x266e08[_0xedac('0x31')],util[_0xedac('0x2b')](_0x31737d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xedac('0x2c')]['syncBlindTransfer']=function(_0x208851){try{if(this['isNotNull'](_0x208851)){logger[_0xedac('0x27')](_0xedac('0xb4'),_0x208851[_0xedac('0x31')],_0x208851['transfereecalleridnum'],_0x208851[_0xedac('0xb5')]);logger[_0xedac('0x45')](_0xedac('0xb6'),_0x208851[_0xedac('0x31')],util['inspect'](_0x208851,{'showHidden':![],'depth':null}));if(this[_0xedac('0x13')][_0x208851[_0xedac('0xa7')]]){this[_0xedac('0x13')][_0x208851[_0xedac('0xa7')]][_0xedac('0xad')]=_0x208851[_0xedac('0xb7')];this[_0xedac('0x13')][_0x208851[_0xedac('0xa7')]]['transferconnectedlinenum']=_0x208851[_0xedac('0xb5')];this[_0xedac('0x13')][_0x208851['transfereeuniqueid']][_0xedac('0x97')]='BLIND';this[_0xedac('0x1e')]({'event':_0xedac('0xa2'),'uniqueid':_0x208851[_0xedac('0xa7')],'linkedid':_0x208851[_0xedac('0xb8')],'context':_0x208851[_0xedac('0x37')],'channel':_0x208851[_0xedac('0xb9')]});}else{this['channels'][_0x208851['transfereruniqueid']][_0xedac('0x97')]=_0xedac('0xba');this[_0xedac('0x1e')]({'event':_0xedac('0xa2'),'uniqueid':_0x208851[_0xedac('0xb8')],'linkedid':_0x208851[_0xedac('0xa7')],'context':_0x208851[_0xedac('0x37')],'channel':_0x208851[_0xedac('0xb9')]});}}}catch(_0x9fe896){logger[_0xedac('0x29')](_0xedac('0xbb'),_0x208851[_0xedac('0x31')],util[_0xedac('0x2b')](_0x9fe896,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xedac('0x2c')][_0xedac('0x25')]=function(_0x55f9fb){try{if(this['isNotNull'](_0x55f9fb)){logger[_0xedac('0x45')](_0xedac('0xbc'),_0x55f9fb[_0xedac('0x31')],util[_0xedac('0x2b')](_0x55f9fb,{'showHidden':![],'depth':null}));if(this[_0xedac('0x13')][_0x55f9fb[_0xedac('0x31')]]){if(!_[_0xedac('0x5a')](this[_0xedac('0x13')][_0x55f9fb[_0xedac('0x31')]][_0xedac('0x60')])){this['channels'][_0x55f9fb[_0xedac('0x31')]]['mohstarttime']=moment()[_0xedac('0x3e')]('YYYY-MM-DD\x20HH:mm:ss');logger['info'](_0xedac('0xbd'),_0x55f9fb[_0xedac('0x31')],this[_0xedac('0x13')][_0x55f9fb[_0xedac('0x31')]][_0xedac('0xbe')]);}}}}catch(_0x3e3919){logger['error']('[%s][voiceCallReport][musiconholdstart]',_0x55f9fb[_0xedac('0x31')],util[_0xedac('0x2b')](_0x3e3919,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xedac('0x2c')][_0xedac('0x26')]=function(_0x2cdbaa){try{if(this[_0xedac('0x2d')](_0x2cdbaa)){logger[_0xedac('0x45')]('[%s][voiceCallReport][musiconholdstop]\x20event:',_0x2cdbaa[_0xedac('0x31')],util[_0xedac('0x2b')](_0x2cdbaa,{'showHidden':![],'depth':null}));if(this['channels'][_0x2cdbaa[_0xedac('0x31')]]){if(!_[_0xedac('0x5a')](this[_0xedac('0x13')][_0x2cdbaa[_0xedac('0x31')]][_0xedac('0xbe')])){this[_0xedac('0x13')][_0x2cdbaa[_0xedac('0x31')]][_0xedac('0xbf')]+=moment()[_0xedac('0xc0')](0x0)['diff'](this[_0xedac('0x13')][_0x2cdbaa[_0xedac('0x31')]][_0xedac('0xbe')],_0xedac('0x55'));logger[_0xedac('0x27')](_0xedac('0xc1'),_0x2cdbaa[_0xedac('0x31')],this[_0xedac('0x13')][_0x2cdbaa[_0xedac('0x31')]][_0xedac('0xbf')]);delete this[_0xedac('0x13')][_0x2cdbaa[_0xedac('0x31')]][_0xedac('0xbe')];}}}}catch(_0x55d6b8){logger['error'](_0xedac('0xc2'),_0x2cdbaa[_0xedac('0x31')],util[_0xedac('0x2b')](_0x55d6b8,{'showHidden':![],'depth':null}));}};module['exports']=VoiceCallReport;
\ No newline at end of file
+var _0x7f1f=['transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','transfereruniqueid','BLIND','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','mohtime','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','exports','lodash','moment','util','path','ioredis','../../../config/environment','../../../config/logger','ami','../rpc/setting','set','queue','agi','dial','NO\x20ANSWER','FAILED','ANSWERED','BUSY','defaults','redis','localhost','socket.io-emitter','channels','agents','blindTransfers','coreshowchannel','syncNewExten','newexten','bind','newchannel','syncNewChannel','newstate','syncNewState','varset','syncVarSet','newcallerid','syncNewCallerId','attendedtransfer','syncAttendedTransfer','blindtransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','info','actionCoreShowChannels','error','inspect','prototype','isNotNull','isUndefined','emit','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','calleridname','calleridnum','debug','uniqueid','linkedid','merge','pick','channel','exten','xcally-motion-preview','split','destconnectedlinenum','format','user:%s','name','accountcode','[%s][voiceCallReport][newcallerid]','[%s][voiceCallReport][newchannel]\x20event:','context','YYYY-MM-DD\x20HH:mm:ss','disposition','toNumber','channelstate','keys','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','user:agentconnect','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','OutgoingSpoolFailed','application','toLowerCase','applicationdata','appdata','startsWith','CDR(routeAlias)','starttime','duration','subtract','seconds','includes','lastapplication','lastdata','match','type','isNil','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','holdtime','destinationchannel','UserId','membername','connectedlinenum','from-sip','routealias','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','.wav49','replace','.WAV','monitorFilename','find','monitors','rec','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','callerid','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','parse','sipcalllinkedid','syncHangup','endtime','diff','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','length','transferType','then','getSettings','resolve','StopMixMonitor','catch','Action','webbar:stopmonitors','BlindTransfer','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfertargetcalleridnum','transfereeuniqueid','transfercalleridnum','origtransferercalleridnum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','transferconnectedlinenum','origtransfereruniqueid','some','routeid','origtransfererlinkedid','[%s][voiceCallReport][attendedtransfer]','syncBlindTransfer','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s'];(function(_0x143a91,_0x235332){var _0x1906f5=function(_0xd27eeb){while(--_0xd27eeb){_0x143a91['push'](_0x143a91['shift']());}};_0x1906f5(++_0x235332);}(_0x7f1f,0x18b));var _0xf7f1=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x7f1f[_0x2d7f0e];return _0x110b07;};'use strict';var _=require(_0xf7f1('0x0'));var moment=require(_0xf7f1('0x1'));var util=require(_0xf7f1('0x2'));var path=require(_0xf7f1('0x3'));var Redis=require(_0xf7f1('0x4'));var config=require(_0xf7f1('0x5'));var logger=require(_0xf7f1('0x6'))(_0xf7f1('0x7'));var ami=require('../ami');var Channel=require('../model/channel');var RpcSetting=require(_0xf7f1('0x8'));var applications=[_0xf7f1('0x9'),_0xf7f1('0xa'),_0xf7f1('0xb'),_0xf7f1('0xc'),'playback','voicemail'];var dispositions=[_0xf7f1('0xd'),_0xf7f1('0xe'),'FAILED',_0xf7f1('0xd'),'NO\x20ANSWER','NO\x20ANSWER',_0xf7f1('0xf'),_0xf7f1('0x10'),_0xf7f1('0xe'),_0xf7f1('0xe'),_0xf7f1('0xe')];config['redis']=_[_0xf7f1('0x11')](config[_0xf7f1('0x12')],{'host':_0xf7f1('0x13'),'port':0x18eb});var io=require(_0xf7f1('0x14'))(new Redis(config[_0xf7f1('0x12')]));function VoiceCallReport(_0x3e855a){this[_0xf7f1('0x15')]=_0x3e855a[_0xf7f1('0x15')];this[_0xf7f1('0x16')]=_0x3e855a[_0xf7f1('0x16')];this[_0xf7f1('0x17')]={};ami['on'](_0xf7f1('0x18'),this[_0xf7f1('0x19')]['bind'](this));ami['on'](_0xf7f1('0x1a'),this[_0xf7f1('0x19')][_0xf7f1('0x1b')](this));ami['on'](_0xf7f1('0x1c'),this[_0xf7f1('0x1d')][_0xf7f1('0x1b')](this));ami['on'](_0xf7f1('0x1e'),this[_0xf7f1('0x1f')][_0xf7f1('0x1b')](this));ami['on'](_0xf7f1('0x20'),this[_0xf7f1('0x21')][_0xf7f1('0x1b')](this));ami['on']('hangup',this['syncHangup'][_0xf7f1('0x1b')](this));ami['on'](_0xf7f1('0x22'),this[_0xf7f1('0x23')][_0xf7f1('0x1b')](this));ami['on'](_0xf7f1('0x24'),this[_0xf7f1('0x25')][_0xf7f1('0x1b')](this));ami['on'](_0xf7f1('0x26'),this['syncBlindTransfer'][_0xf7f1('0x1b')](this));ami['on'](_0xf7f1('0x27'),this[_0xf7f1('0x28')]['bind'](this));ami['on'](_0xf7f1('0x29'),this[_0xf7f1('0x2a')][_0xf7f1('0x1b')](this));try{logger[_0xf7f1('0x2b')]('[voiceCallReport][coreshowchannels]\x20started');ami[_0xf7f1('0x2c')]();}catch(_0x1bc49a){logger[_0xf7f1('0x2d')]('[voiceCallReport][coreshowchannels]',util[_0xf7f1('0x2e')](_0x1bc49a,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0xf7f1('0x2f')][_0xf7f1('0x30')]=function(_0x49de59){return _0x49de59!==null&&!_[_0xf7f1('0x31')](_0x49de59);};VoiceCallReport['prototype'][_0xf7f1('0x32')]=function(_0x4655fd,_0x5b378f,_0x4c9974){io['to'](_0x4655fd)['emit'](_0x5b378f,_0x4c9974);};VoiceCallReport[_0xf7f1('0x2f')]['syncNewCallerId']=function(_0x1b9111){try{if(this[_0xf7f1('0x30')](_0x1b9111)){logger[_0xf7f1('0x2b')](_0xf7f1('0x33'),_0x1b9111['uniqueid'],_0x1b9111[_0xf7f1('0x34')],_0x1b9111[_0xf7f1('0x35')]);logger[_0xf7f1('0x36')]('[%s][voiceCallReport][newcallerid]\x20event:',_0x1b9111[_0xf7f1('0x37')],util[_0xf7f1('0x2e')](_0x1b9111,{'showHidden':![],'depth':null}));if(_0x1b9111[_0xf7f1('0x37')]===_0x1b9111[_0xf7f1('0x38')]){if(!_[_0xf7f1('0x31')](this[_0xf7f1('0x15')][_0x1b9111['uniqueid']])){_[_0xf7f1('0x39')](this[_0xf7f1('0x15')][_0x1b9111[_0xf7f1('0x37')]],_[_0xf7f1('0x3a')](_0x1b9111,_['keys'](this[_0xf7f1('0x15')][_0x1b9111[_0xf7f1('0x37')]])));}}if(_0x1b9111['context']==='from-sip'){if(this[_0xf7f1('0x16')][_0x1b9111[_0xf7f1('0x3b')]['split']('-')[0x0]]){if(_0x1b9111[_0xf7f1('0x3c')]==_0xf7f1('0x3d')){this[_0xf7f1('0x16')][_0x1b9111[_0xf7f1('0x3b')][_0xf7f1('0x3e')]('-')[0x0]][_0xf7f1('0x3f')]=_0x1b9111['connectedlinenum'];this[_0xf7f1('0x32')](util[_0xf7f1('0x40')](_0xf7f1('0x41'),this[_0xf7f1('0x16')][_0x1b9111[_0xf7f1('0x3b')]['split']('-')[0x0]][_0xf7f1('0x42')]),'user:agentconnect',{'destaccountcode':this[_0xf7f1('0x16')][_0x1b9111[_0xf7f1('0x3b')][_0xf7f1('0x3e')]('-')[0x0]][_0xf7f1('0x43')],'destconnectedlinenum':_0x1b9111['connectedlinenum']});}}}}}catch(_0x3fb8d5){logger[_0xf7f1('0x2d')](_0xf7f1('0x44'),_0x1b9111[_0xf7f1('0x37')],util[_0xf7f1('0x2e')](_0x3fb8d5,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xf7f1('0x2f')][_0xf7f1('0x1d')]=function(_0x3c695c){try{if(this[_0xf7f1('0x30')](_0x3c695c)){logger[_0xf7f1('0x36')](_0xf7f1('0x45'),_0x3c695c[_0xf7f1('0x37')],util['inspect'](_0x3c695c,{'showHidden':![],'depth':null}));if(this[_0xf7f1('0x15')][_0x3c695c['uniqueid']])return;if(_0x3c695c[_0xf7f1('0x3b')]==='OutgoingSpoolFailed')return;if(_0x3c695c['uniqueid']!==_0x3c695c[_0xf7f1('0x38')]&&!this[_0xf7f1('0x17')][_0x3c695c['linkedid']])return;logger[_0xf7f1('0x2b')]('[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s',_0x3c695c['uniqueid'],_0x3c695c[_0xf7f1('0x46')],_0x3c695c[_0xf7f1('0x3c')]);this[_0xf7f1('0x15')][_0x3c695c[_0xf7f1('0x37')]]=new Channel();this[_0xf7f1('0x15')][_0x3c695c[_0xf7f1('0x37')]]['starttime']=moment()[_0xf7f1('0x40')](_0xf7f1('0x47'));this[_0xf7f1('0x15')][_0x3c695c[_0xf7f1('0x37')]][_0xf7f1('0x48')]=dispositions[_[_0xf7f1('0x49')](_0x3c695c[_0xf7f1('0x4a')])];_['merge'](this['channels'][_0x3c695c[_0xf7f1('0x37')]],_[_0xf7f1('0x3a')](_0x3c695c,_[_0xf7f1('0x4b')](this['channels'][_0x3c695c[_0xf7f1('0x37')]])));if(_0x3c695c['context']==='from-sip'){if(this[_0xf7f1('0x16')][_0x3c695c['channel'][_0xf7f1('0x3e')]('-')[0x0]]){if(_[_0xf7f1('0x31')](this[_0xf7f1('0x16')][_0x3c695c['channel'][_0xf7f1('0x3e')]('-')[0x0]][_0xf7f1('0x3f')])){this['agents'][_0x3c695c[_0xf7f1('0x3b')]['split']('-')[0x0]][_0xf7f1('0x3f')]=_0x3c695c['exten'];logger[_0xf7f1('0x36')](_0xf7f1('0x4c'),_0x3c695c[_0xf7f1('0x37')],util['inspect']({'id':this[_0xf7f1('0x16')][_0x3c695c[_0xf7f1('0x3b')][_0xf7f1('0x3e')]('-')[0x0]]['id'],'destaccountcode':this[_0xf7f1('0x16')][_0x3c695c[_0xf7f1('0x3b')][_0xf7f1('0x3e')]('-')[0x0]][_0xf7f1('0x43')],'destconnectedlinenum':_0x3c695c[_0xf7f1('0x3c')]},{'showHidden':![],'depth':null}));this['emit'](util['format'](_0xf7f1('0x41'),this[_0xf7f1('0x16')][_0x3c695c[_0xf7f1('0x3b')][_0xf7f1('0x3e')]('-')[0x0]][_0xf7f1('0x42')]),_0xf7f1('0x4d'),{'id':this[_0xf7f1('0x16')][_0x3c695c['channel'][_0xf7f1('0x3e')]('-')[0x0]]['id'],'destaccountcode':this[_0xf7f1('0x16')][_0x3c695c[_0xf7f1('0x3b')][_0xf7f1('0x3e')]('-')[0x0]][_0xf7f1('0x43')],'destconnectedlinenum':_0x3c695c[_0xf7f1('0x3c')]});}}}}}catch(_0x37f43b){logger['error'](_0xf7f1('0x4e'),_0x3c695c[_0xf7f1('0x37')],util[_0xf7f1('0x2e')](_0x37f43b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xf7f1('0x2f')]['syncNewExten']=function(_0x237c44){try{if(this[_0xf7f1('0x30')](_0x237c44)){logger[_0xf7f1('0x36')](_0xf7f1('0x4f'),_0x237c44[_0xf7f1('0x37')],util[_0xf7f1('0x2e')](_0x237c44,{'showHidden':![],'depth':null}));if(_0x237c44['channel']===_0xf7f1('0x50')||_0x237c44['exten']==='h')return;if(_0x237c44[_0xf7f1('0x37')]===_0x237c44[_0xf7f1('0x38')]||this[_0xf7f1('0x17')][_0x237c44[_0xf7f1('0x38')]]){_0x237c44[_0xf7f1('0x51')]=_0x237c44[_0xf7f1('0x51')][_0xf7f1('0x52')]();_0x237c44[_0xf7f1('0x53')]=_0x237c44[_0xf7f1('0x54')]||_0x237c44[_0xf7f1('0x53')];if(_0x237c44[_0xf7f1('0x54')]&&!_0x237c44['appdata'][_0xf7f1('0x55')](_0xf7f1('0x56'))&&_0x237c44['application']!==_0xf7f1('0xa')){_0x237c44[_0xf7f1('0x53')]=_0x237c44[_0xf7f1('0x53')][_0xf7f1('0x52')]();}logger['info']('[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s',_0x237c44['uniqueid'],_0x237c44[_0xf7f1('0x51')],_0x237c44[_0xf7f1('0x53')]);if(_[_0xf7f1('0x31')](this[_0xf7f1('0x15')][_0x237c44[_0xf7f1('0x37')]])){this[_0xf7f1('0x15')][_0x237c44[_0xf7f1('0x37')]]=new Channel();this[_0xf7f1('0x15')][_0x237c44[_0xf7f1('0x37')]][_0xf7f1('0x57')]=_0x237c44[_0xf7f1('0x58')]?moment()[_0xf7f1('0x59')](moment[_0xf7f1('0x58')](_0x237c44[_0xf7f1('0x58')])['seconds'](),_0xf7f1('0x5a'))['format'](_0xf7f1('0x47')):moment()['format'](_0xf7f1('0x47'));this[_0xf7f1('0x15')][_0x237c44['uniqueid']][_0xf7f1('0x48')]=_0xf7f1('0xd');}_[_0xf7f1('0x39')](this[_0xf7f1('0x15')][_0x237c44[_0xf7f1('0x37')]],_[_0xf7f1('0x3a')](_0x237c44,_[_0xf7f1('0x4b')](this[_0xf7f1('0x15')][_0x237c44['uniqueid']])));if(_[_0xf7f1('0x5b')](applications,_0x237c44[_0xf7f1('0x51')])){this['channels'][_0x237c44[_0xf7f1('0x37')]][_0xf7f1('0x5c')]=_0x237c44[_0xf7f1('0x51')];this[_0xf7f1('0x15')][_0x237c44['uniqueid']][_0xf7f1('0x5d')]=_0x237c44[_0xf7f1('0x53')];if(_0x237c44['application']===_0xf7f1('0x9')&&_[_0xf7f1('0x55')](_0x237c44[_0xf7f1('0x53')][_0xf7f1('0x52')](),'cdr(')){var _0x3dca86=_0x237c44[_0xf7f1('0x53')][_0xf7f1('0x3e')]('=');var _0x37cea2=_0x3dca86[0x0]['toLowerCase']()[_0xf7f1('0x5e')](/cdr\((.*)\)/);if(_0x37cea2){if(_0x37cea2[0x1]===_0xf7f1('0x5f')&&!_[_0xf7f1('0x60')](this['channels'][_0x237c44[_0xf7f1('0x37')]][_0x37cea2[0x1]]))return;this[_0xf7f1('0x15')][_0x237c44['uniqueid']][_0x37cea2[0x1]]=_0x3dca86[0x1];}}else if(_0x237c44[_0xf7f1('0x51')]===_0xf7f1('0xa')){this[_0xf7f1('0x15')][_0x237c44[_0xf7f1('0x37')]][_0xf7f1('0xa')]=_0x237c44[_0xf7f1('0x53')][_0xf7f1('0x3e')](',')[0x0];}}}}}catch(_0x1fc2db){logger['error'](_0xf7f1('0x61'),_0x237c44[_0xf7f1('0x37')],util[_0xf7f1('0x2e')](_0x1fc2db,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xf7f1('0x2f')][_0xf7f1('0x1f')]=function(_0x2571a9){try{if(this['isNotNull'](_0x2571a9)){logger[_0xf7f1('0x2b')](_0xf7f1('0x62'),_0x2571a9['uniqueid'],_0x2571a9['linkedid'],_0x2571a9[_0xf7f1('0x34')],_0x2571a9[_0xf7f1('0x35')]);logger['debug'](_0xf7f1('0x63'),_0x2571a9[_0xf7f1('0x37')],util[_0xf7f1('0x2e')](_0x2571a9,{'showHidden':![],'depth':null}));if(_0x2571a9['channelstate']!=='6')return;if(_0x2571a9[_0xf7f1('0x37')]!==_0x2571a9[_0xf7f1('0x38')]){var _0x2ea8d4=moment();if(this[_0xf7f1('0x15')][_0x2571a9['linkedid']]){if(!this[_0xf7f1('0x15')][_0x2571a9['linkedid']][_0xf7f1('0x64')]){this[_0xf7f1('0x15')][_0x2571a9[_0xf7f1('0x38')]][_0xf7f1('0x64')]=!![];this['channels'][_0x2571a9[_0xf7f1('0x38')]][_0xf7f1('0x65')]=_0x2ea8d4[_0xf7f1('0x40')](_0xf7f1('0x47'));if(this['channels'][_0x2571a9[_0xf7f1('0x38')]][_0xf7f1('0x57')]){this[_0xf7f1('0x15')][_0x2571a9[_0xf7f1('0x38')]][_0xf7f1('0x66')]=_0x2ea8d4['diff'](this['channels'][_0x2571a9[_0xf7f1('0x38')]][_0xf7f1('0x57')],_0xf7f1('0x5a'));}}this[_0xf7f1('0x15')][_0x2571a9[_0xf7f1('0x38')]]['linkedid']=_0x2571a9[_0xf7f1('0x37')];if(_0x2571a9[_0xf7f1('0x35')]!==_0xf7f1('0x3d')){this['channels'][_0x2571a9['linkedid']]['connectedlinenum']=_0x2571a9[_0xf7f1('0x35')];}this[_0xf7f1('0x15')][_0x2571a9[_0xf7f1('0x38')]]['connectedlinename']=_0x2571a9[_0xf7f1('0x34')];this[_0xf7f1('0x15')][_0x2571a9[_0xf7f1('0x38')]][_0xf7f1('0x67')]=_0x2571a9[_0xf7f1('0x3b')];this['channels'][_0x2571a9[_0xf7f1('0x38')]][_0xf7f1('0x48')]=dispositions[_[_0xf7f1('0x49')](_0x2571a9[_0xf7f1('0x4a')])];if(this['agents'][_0x2571a9[_0xf7f1('0x3b')][_0xf7f1('0x3e')]('-')[0x0]]){this[_0xf7f1('0x15')][_0x2571a9[_0xf7f1('0x38')]][_0xf7f1('0x68')]=this[_0xf7f1('0x16')][_0x2571a9[_0xf7f1('0x3b')][_0xf7f1('0x3e')]('-')[0x0]]['id'];this[_0xf7f1('0x15')][_0x2571a9['linkedid']][_0xf7f1('0x69')]=this[_0xf7f1('0x16')][_0x2571a9[_0xf7f1('0x3b')][_0xf7f1('0x3e')]('-')[0x0]][_0xf7f1('0x42')];}}if(this['channels'][_0x2571a9[_0xf7f1('0x37')]]){if(!this[_0xf7f1('0x15')][_0x2571a9['uniqueid']][_0xf7f1('0x64')]){this[_0xf7f1('0x15')][_0x2571a9[_0xf7f1('0x37')]]['answered']=!![];this['channels'][_0x2571a9[_0xf7f1('0x37')]]['answertime']=_0x2ea8d4['format'](_0xf7f1('0x47'));if(this[_0xf7f1('0x15')][_0x2571a9[_0xf7f1('0x37')]][_0xf7f1('0x57')]){this[_0xf7f1('0x15')][_0x2571a9['uniqueid']][_0xf7f1('0x66')]=_0x2ea8d4['diff'](this['channels'][_0x2571a9['uniqueid']][_0xf7f1('0x57')],'seconds');}}if(_0x2571a9['calleridnum']!==_0xf7f1('0x3d')){this[_0xf7f1('0x15')][_0x2571a9[_0xf7f1('0x37')]][_0xf7f1('0x6a')]=_0x2571a9[_0xf7f1('0x35')];}this[_0xf7f1('0x15')][_0x2571a9['uniqueid']]['connectedlinename']=_0x2571a9['calleridname'];this[_0xf7f1('0x15')][_0x2571a9[_0xf7f1('0x37')]]['destinationchannel']=_0x2571a9['channel'];this['channels'][_0x2571a9['uniqueid']][_0xf7f1('0x48')]=dispositions[_['toNumber'](_0x2571a9['channelstate'])];}}else{if(this['channels'][_0x2571a9[_0xf7f1('0x37')]]){if(this[_0xf7f1('0x16')][_0x2571a9[_0xf7f1('0x3b')][_0xf7f1('0x3e')]('-')[0x0]]){this[_0xf7f1('0x15')][_0x2571a9[_0xf7f1('0x37')]][_0xf7f1('0x68')]=this[_0xf7f1('0x16')][_0x2571a9[_0xf7f1('0x3b')][_0xf7f1('0x3e')]('-')[0x0]]['id'];this[_0xf7f1('0x15')][_0x2571a9[_0xf7f1('0x37')]][_0xf7f1('0x69')]=this[_0xf7f1('0x16')][_0x2571a9[_0xf7f1('0x3b')][_0xf7f1('0x3e')]('-')[0x0]][_0xf7f1('0x42')];}}}if(_0x2571a9[_0xf7f1('0x46')]===_0xf7f1('0x6b')){if(this[_0xf7f1('0x16')][_0x2571a9[_0xf7f1('0x3b')][_0xf7f1('0x3e')]('-')[0x0]]){this[_0xf7f1('0x16')][_0x2571a9[_0xf7f1('0x3b')]['split']('-')[0x0]][_0xf7f1('0x3f')]=_0x2571a9['exten'];var _0x288656,_0x88bf56;if(this[_0xf7f1('0x15')][_0x2571a9[_0xf7f1('0x37')]]){_0x288656=this[_0xf7f1('0x15')][_0x2571a9[_0xf7f1('0x37')]][_0xf7f1('0x6c')];_0x88bf56=this[_0xf7f1('0x15')][_0x2571a9[_0xf7f1('0x37')]]['queue'];}else if(this[_0xf7f1('0x15')][_0x2571a9[_0xf7f1('0x38')]]){_0x288656=this[_0xf7f1('0x15')][_0x2571a9['linkedid']][_0xf7f1('0x6c')];_0x88bf56=this['channels'][_0x2571a9[_0xf7f1('0x38')]][_0xf7f1('0xa')];}this[_0xf7f1('0x16')][_0x2571a9[_0xf7f1('0x3b')][_0xf7f1('0x3e')]('-')[0x0]][_0xf7f1('0xa')]=_0x88bf56;this[_0xf7f1('0x16')][_0x2571a9['channel'][_0xf7f1('0x3e')]('-')[0x0]]['routealias']=_0x288656;logger[_0xf7f1('0x36')]('[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:',_0x2571a9[_0xf7f1('0x37')],util[_0xf7f1('0x2e')]({'id':this[_0xf7f1('0x16')][_0x2571a9[_0xf7f1('0x3b')][_0xf7f1('0x3e')]('-')[0x0]]['id'],'destaccountcode':this[_0xf7f1('0x16')][_0x2571a9['channel'][_0xf7f1('0x3e')]('-')[0x0]][_0xf7f1('0x43')],'destconnectedlinenum':_0x2571a9[_0xf7f1('0x3c')],'routealias':_0x288656,'queue':_0x88bf56||undefined},{'showHidden':![],'depth':null}));this[_0xf7f1('0x32')](util[_0xf7f1('0x40')](_0xf7f1('0x41'),this['agents'][_0x2571a9[_0xf7f1('0x3b')][_0xf7f1('0x3e')]('-')[0x0]][_0xf7f1('0x42')]),_0xf7f1('0x4d'),{'id':this['agents'][_0x2571a9[_0xf7f1('0x3b')][_0xf7f1('0x3e')]('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this[_0xf7f1('0x16')][_0x2571a9[_0xf7f1('0x3b')]['split']('-')[0x0]][_0xf7f1('0x43')],'destconnectedlinenum':_0x2571a9[_0xf7f1('0x3c')],'routealias':_0x288656,'queue':_0x88bf56||undefined});}}}}catch(_0x53df1a){logger[_0xf7f1('0x2d')](_0xf7f1('0x6d'),_0x2571a9[_0xf7f1('0x37')],util[_0xf7f1('0x2e')](_0x53df1a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xf7f1('0x2f')][_0xf7f1('0x6e')]=function(_0x467ad8,_0x1bff6a){try{if(this[_0xf7f1('0x15')][_0x467ad8]){logger[_0xf7f1('0x2b')](_0xf7f1('0x6f'),_0x467ad8,_0x1bff6a);this['channels'][_0x467ad8][_0xf7f1('0x70')]=!![];if(_['endsWith'](_0x1bff6a,_0xf7f1('0x71'))){_0x1bff6a=_0x1bff6a[_0xf7f1('0x72')]('.wav49',_0xf7f1('0x73'));}this['channels'][_0x467ad8][_0xf7f1('0x74')]=_0x1bff6a;var _0x479ac5=_[_0xf7f1('0x75')](this[_0xf7f1('0x15')][_0x467ad8]['monitors'],{'filename':_0x1bff6a});if(_[_0xf7f1('0x60')](_0x479ac5)){this[_0xf7f1('0x15')][_0x467ad8][_0xf7f1('0x76')]['push']({'filename':_0x1bff6a,'createdAt':moment()[_0xf7f1('0x40')]('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':'','status':_0xf7f1('0x77')});}}}catch(_0x274478){logger[_0xf7f1('0x2d')](_0xf7f1('0x78'),_0x467ad8,util[_0xf7f1('0x2e')](_0x274478,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xf7f1('0x2f')][_0xf7f1('0x21')]=function(_0x4a20a8){try{if(this[_0xf7f1('0x30')](_0x4a20a8)){logger['debug'](_0xf7f1('0x79'),_0x4a20a8['uniqueid'],util[_0xf7f1('0x2e')](_0x4a20a8,{'showHidden':![],'depth':null}));if(this[_0xf7f1('0x15')][_0x4a20a8[_0xf7f1('0x37')]]&&_0x4a20a8[_0xf7f1('0x3b')]!=_0xf7f1('0x50')){if(this[_0xf7f1('0x30')](_0x4a20a8[_0xf7f1('0x7a')])){if(this[_0xf7f1('0x30')](_0x4a20a8[_0xf7f1('0x7a')][_0xf7f1('0x7b')])){logger['info'](_0xf7f1('0x7c'),_0x4a20a8[_0xf7f1('0x37')],_0x4a20a8[_0xf7f1('0x7d')]);this[_0xf7f1('0x6e')](_0x4a20a8['uniqueid'],_0x4a20a8[_0xf7f1('0x7d')]);}else if(this['isNotNull'](_0x4a20a8[_0xf7f1('0x7a')][_0xf7f1('0x7e')])){logger['info'](_0xf7f1('0x7f'),_0x4a20a8[_0xf7f1('0x37')],_0x4a20a8[_0xf7f1('0x7d')]);this[_0xf7f1('0x15')][_0x4a20a8['uniqueid']][_0xf7f1('0x35')]=_0x4a20a8['value'];}else if(this[_0xf7f1('0x30')](_0x4a20a8[_0xf7f1('0x7a')][_0xf7f1('0x80')])){logger[_0xf7f1('0x2b')]('[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s',_0x4a20a8[_0xf7f1('0x37')],_0x4a20a8[_0xf7f1('0x7d')]);this[_0xf7f1('0x15')][_0x4a20a8[_0xf7f1('0x37')]][_0xf7f1('0x81')]=_0x4a20a8[_0xf7f1('0x7d')];}else if(this['isNotNull'](_0x4a20a8[_0xf7f1('0x7a')]['xmd-cdrtype'])){logger[_0xf7f1('0x2b')]('[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x4a20a8['uniqueid'],_0x4a20a8[_0xf7f1('0x7d')]);this['channels'][_0x4a20a8['uniqueid']]['type']=_0x4a20a8['value'];}else if(this['isNotNull'](_0x4a20a8[_0xf7f1('0x7a')]['xmd-queue'])){logger[_0xf7f1('0x2b')](_0xf7f1('0x82'),_0x4a20a8[_0xf7f1('0x37')],_0x4a20a8['value'][_0xf7f1('0x3e')](',')[0x0]);this['channels'][_0x4a20a8[_0xf7f1('0x37')]][_0xf7f1('0xa')]=_0x4a20a8[_0xf7f1('0x7d')][_0xf7f1('0x3e')](',')[0x0];}else if(this['isNotNull'](_0x4a20a8[_0xf7f1('0x7a')]['xmd-originatecalleridnum'])){logger[_0xf7f1('0x2b')](_0xf7f1('0x83'),_0x4a20a8[_0xf7f1('0x37')],_0x4a20a8[_0xf7f1('0x7d')]);this['channels'][_0x4a20a8[_0xf7f1('0x37')]][_0xf7f1('0x84')]=_0x4a20a8[_0xf7f1('0x7d')];}else if(this[_0xf7f1('0x30')](_0x4a20a8[_0xf7f1('0x7a')]['xmd-destination'])){logger['info'](_0xf7f1('0x85'),_0x4a20a8[_0xf7f1('0x37')],_0x4a20a8['value']);this['channels'][_0x4a20a8[_0xf7f1('0x37')]][_0xf7f1('0x86')]=_0x4a20a8[_0xf7f1('0x7d')];}else if(this[_0xf7f1('0x30')](_0x4a20a8['variable'][_0xf7f1('0x87')])){logger['info'](_0xf7f1('0x88'),_0x4a20a8[_0xf7f1('0x37')],_0x4a20a8[_0xf7f1('0x7d')]);this[_0xf7f1('0x15')][_0x4a20a8[_0xf7f1('0x37')]][_0xf7f1('0x89')]=_0x4a20a8[_0xf7f1('0x7d')];}else if(this['isNotNull'](_0x4a20a8['variable'][_0xf7f1('0x8a')])){logger[_0xf7f1('0x2b')](_0xf7f1('0x8b'),_0x4a20a8['uniqueid'],_0x4a20a8['value']);this[_0xf7f1('0x15')][_0x4a20a8['uniqueid']]['queue']=_0x4a20a8[_0xf7f1('0x7d')];}else if(this[_0xf7f1('0x30')](_0x4a20a8[_0xf7f1('0x7a')][_0xf7f1('0x8c')])){logger[_0xf7f1('0x2b')](_0xf7f1('0x8d'),_0x4a20a8[_0xf7f1('0x37')],_0x4a20a8[_0xf7f1('0x7d')]);this[_0xf7f1('0x15')][_0x4a20a8[_0xf7f1('0x37')]][_0xf7f1('0x8e')]=_0x4a20a8['value'];}}}else if(this[_0xf7f1('0x30')](_0x4a20a8[_0xf7f1('0x7a')][_0xf7f1('0x7b')])){if(_0x4a20a8[_0xf7f1('0x7d')]){var _0x123001=path[_0xf7f1('0x8f')](_0x4a20a8[_0xf7f1('0x7d')])[_0xf7f1('0x42')];logger['info'](_0xf7f1('0x7c'),_0x123001,_0x4a20a8[_0xf7f1('0x7d')]);this[_0xf7f1('0x6e')](_0x123001,_0x4a20a8['value']);}}else if(this['channels'][_0x4a20a8['linkedid']]){if(this[_0xf7f1('0x30')](_0x4a20a8[_0xf7f1('0x7a')])){if(this['isNotNull'](_0x4a20a8[_0xf7f1('0x7a')][_0xf7f1('0x8c')])){logger[_0xf7f1('0x2b')](_0xf7f1('0x8d'),_0x4a20a8['linkedid'],_0x4a20a8[_0xf7f1('0x7d')]);this[_0xf7f1('0x15')][_0x4a20a8[_0xf7f1('0x38')]][_0xf7f1('0x90')]=_0x4a20a8['value'];}}}}}catch(_0x597c94){logger[_0xf7f1('0x2d')]('[%s][voiceCallReport][varset]',_0x4a20a8[_0xf7f1('0x37')],util[_0xf7f1('0x2e')](_0x597c94,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xf7f1('0x2f')][_0xf7f1('0x91')]=function(_0x2791ed){try{if(this[_0xf7f1('0x30')](_0x2791ed)){logger[_0xf7f1('0x36')]('[%s][voiceCallReport][hangup]\x20event:',_0x2791ed[_0xf7f1('0x37')],util[_0xf7f1('0x2e')](_0x2791ed,{'showHidden':![],'depth':null}));if(this[_0xf7f1('0x17')][_0x2791ed[_0xf7f1('0x38')]]){if(this['channels'][this[_0xf7f1('0x17')][_0x2791ed['linkedid']][_0xf7f1('0x38')]]){this[_0xf7f1('0x15')][this[_0xf7f1('0x17')][_0x2791ed[_0xf7f1('0x38')]]['linkedid']][_0xf7f1('0x37')]=_0x2791ed['uniqueid'];this[_0xf7f1('0x15')][this[_0xf7f1('0x17')][_0x2791ed[_0xf7f1('0x38')]][_0xf7f1('0x38')]]['answered']=this[_0xf7f1('0x15')][_0x2791ed[_0xf7f1('0x37')]][_0xf7f1('0x64')];this['channels'][this[_0xf7f1('0x17')][_0x2791ed[_0xf7f1('0x38')]][_0xf7f1('0x38')]][_0xf7f1('0x65')]=this[_0xf7f1('0x15')][_0x2791ed[_0xf7f1('0x37')]][_0xf7f1('0x65')];this[_0xf7f1('0x15')][this[_0xf7f1('0x17')][_0x2791ed[_0xf7f1('0x38')]][_0xf7f1('0x38')]][_0xf7f1('0x67')]=this[_0xf7f1('0x15')][this[_0xf7f1('0x17')][_0x2791ed[_0xf7f1('0x38')]][_0xf7f1('0x38')]][_0xf7f1('0x3b')];this[_0xf7f1('0x15')][this[_0xf7f1('0x17')][_0x2791ed[_0xf7f1('0x38')]][_0xf7f1('0x38')]][_0xf7f1('0x48')]=this[_0xf7f1('0x15')][_0x2791ed[_0xf7f1('0x37')]][_0xf7f1('0x48')];this[_0xf7f1('0x15')][_0x2791ed[_0xf7f1('0x37')]]=this[_0xf7f1('0x15')][this[_0xf7f1('0x17')][_0x2791ed['linkedid']]['linkedid']];delete this['channels'][this[_0xf7f1('0x17')][_0x2791ed[_0xf7f1('0x38')]][_0xf7f1('0x38')]];}else if(this['channels'][this[_0xf7f1('0x17')][_0x2791ed[_0xf7f1('0x38')]][_0xf7f1('0x37')]]){this[_0xf7f1('0x15')][this['blindTransfers'][_0x2791ed['linkedid']][_0xf7f1('0x37')]][_0xf7f1('0x37')]=[this['channels'][this[_0xf7f1('0x17')][_0x2791ed[_0xf7f1('0x38')]][_0xf7f1('0x37')]][_0xf7f1('0x38')],this['channels'][this[_0xf7f1('0x17')][_0x2791ed[_0xf7f1('0x38')]][_0xf7f1('0x37')]][_0xf7f1('0x38')]=this[_0xf7f1('0x15')][this[_0xf7f1('0x17')][_0x2791ed[_0xf7f1('0x38')]][_0xf7f1('0x37')]][_0xf7f1('0x37')]][0x0];this[_0xf7f1('0x15')][this[_0xf7f1('0x17')][_0x2791ed[_0xf7f1('0x38')]][_0xf7f1('0x37')]]['answered']=this[_0xf7f1('0x15')][_0x2791ed[_0xf7f1('0x37')]][_0xf7f1('0x64')];this['channels'][this[_0xf7f1('0x17')][_0x2791ed[_0xf7f1('0x38')]]['uniqueid']][_0xf7f1('0x65')]=this[_0xf7f1('0x15')][_0x2791ed[_0xf7f1('0x37')]][_0xf7f1('0x65')];this['channels'][this[_0xf7f1('0x17')][_0x2791ed[_0xf7f1('0x38')]][_0xf7f1('0x37')]][_0xf7f1('0x67')]=this[_0xf7f1('0x15')][this['blindTransfers'][_0x2791ed['linkedid']][_0xf7f1('0x37')]]['channel'];this[_0xf7f1('0x15')][this['blindTransfers'][_0x2791ed['linkedid']]['uniqueid']][_0xf7f1('0x48')]=this[_0xf7f1('0x15')][_0x2791ed[_0xf7f1('0x37')]][_0xf7f1('0x48')];this[_0xf7f1('0x15')][_0x2791ed[_0xf7f1('0x37')]]=this['channels'][this['blindTransfers'][_0x2791ed['linkedid']][_0xf7f1('0x37')]];delete this[_0xf7f1('0x15')][this['blindTransfers'][_0x2791ed['linkedid']]['uniqueid']];}}if(this[_0xf7f1('0x15')][_0x2791ed[_0xf7f1('0x37')]]){logger[_0xf7f1('0x2b')]('[%s][voiceCallReport][hangup]\x20reason:%s',_0x2791ed[_0xf7f1('0x37')],_0x2791ed['cause-txt']);var _0x19bbde=moment();this[_0xf7f1('0x15')][_0x2791ed['uniqueid']][_0xf7f1('0x92')]=_0x19bbde['format'](_0xf7f1('0x47'));this[_0xf7f1('0x15')][_0x2791ed[_0xf7f1('0x37')]][_0xf7f1('0x58')]=_0x19bbde[_0xf7f1('0x93')](this[_0xf7f1('0x15')][_0x2791ed[_0xf7f1('0x37')]][_0xf7f1('0x57')],_0xf7f1('0x5a'));if(this[_0xf7f1('0x15')][_0x2791ed['uniqueid']][_0xf7f1('0x64')]){this['channels'][_0x2791ed[_0xf7f1('0x37')]]['billableseconds']=_0x19bbde[_0xf7f1('0x93')](this[_0xf7f1('0x15')][_0x2791ed['uniqueid']][_0xf7f1('0x65')],'seconds');this['channels'][_0x2791ed[_0xf7f1('0x37')]][_0xf7f1('0x66')]=this[_0xf7f1('0x15')][_0x2791ed[_0xf7f1('0x37')]]['duration']-this[_0xf7f1('0x15')][_0x2791ed[_0xf7f1('0x37')]]['billableseconds'];}if(_0x2791ed[_0xf7f1('0x46')]===_0xf7f1('0x6b')){if(this[_0xf7f1('0x16')][_0x2791ed[_0xf7f1('0x3b')][_0xf7f1('0x3e')]('-')[0x0]]){this[_0xf7f1('0x16')][_0x2791ed[_0xf7f1('0x3b')][_0xf7f1('0x3e')]('-')[0x0]]=_[_0xf7f1('0x94')](this[_0xf7f1('0x16')][_0x2791ed[_0xf7f1('0x3b')][_0xf7f1('0x3e')]('-')[0x0]],[_0xf7f1('0x3f')]);logger[_0xf7f1('0x36')](_0xf7f1('0x95'),_0x2791ed[_0xf7f1('0x37')],util[_0xf7f1('0x2e')]({'id':this['agents'][_0x2791ed[_0xf7f1('0x3b')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0xf7f1('0x16')][_0x2791ed[_0xf7f1('0x3b')][_0xf7f1('0x3e')]('-')[0x0]][_0xf7f1('0x43')]},{'showHidden':![],'depth':null}));this['emit'](util[_0xf7f1('0x40')](_0xf7f1('0x41'),this[_0xf7f1('0x16')][_0x2791ed[_0xf7f1('0x3b')][_0xf7f1('0x3e')]('-')[0x0]][_0xf7f1('0x42')]),_0xf7f1('0x96'),{'id':this[_0xf7f1('0x16')][_0x2791ed[_0xf7f1('0x3b')][_0xf7f1('0x3e')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x2791ed[_0xf7f1('0x3b')][_0xf7f1('0x3e')]('-')[0x0]][_0xf7f1('0x43')]});for(var _0xfcc239=0x0;_0xfcc239<Object[_0xf7f1('0x4b')](this[_0xf7f1('0x16')])[_0xf7f1('0x97')];_0xfcc239++){var _0x3c32a6=Object[_0xf7f1('0x4b')](this[_0xf7f1('0x16')])[_0xfcc239];var _0x21cc09=this[_0xf7f1('0x16')][_0x3c32a6];if(_0x21cc09[_0xf7f1('0x43')]===Number(_0x2791ed[_0xf7f1('0x6a')])){this[_0xf7f1('0x32')](util[_0xf7f1('0x40')]('user:%s',_0x21cc09[_0xf7f1('0x42')]),_0xf7f1('0x96'),{'id':_0x21cc09['id'],'destaccountcode':_0x21cc09[_0xf7f1('0x43')],'transfer':this[_0xf7f1('0x15')][_0x2791ed[_0xf7f1('0x37')]][_0xf7f1('0x98')]});break;}}}}var _0x383979=this;Promise['resolve']()[_0xf7f1('0x99')](function(){var _0x5ce78d=_0x383979['channels'][_0x2791ed['uniqueid']];if(typeof _0x5ce78d[_0xf7f1('0x98')]==='undefined')return;if(_['isEmpty'](_0x5ce78d[_0xf7f1('0x76')]))return;return RpcSetting[_0xf7f1('0x9a')]()[_0xf7f1('0x99')](function(_0x51154c){if(!_0x51154c['stopRecordingOnTransfer'])return;return Promise[_0xf7f1('0x9b')]()[_0xf7f1('0x99')](function(){return ami['Action']({'action':_0xf7f1('0x9c'),'channel':_0x5ce78d[_0xf7f1('0x3b')]})[_0xf7f1('0x9d')](function(){});})[_0xf7f1('0x99')](function(){return ami[_0xf7f1('0x9e')]({'action':_0xf7f1('0x9c'),'channel':_0x5ce78d['destinationchannel']})['catch'](function(){})['finally'](function(){var _0x316ab0=_0x383979[_0xf7f1('0x16')][_0x5ce78d[_0xf7f1('0x67')][_0xf7f1('0x3e')]('-')[0x0]];if(!_0x316ab0)return;io[_0xf7f1('0x32')](_0xf7f1('0x9f'),{'agentId':_0x316ab0['id'],'uniqueid':_0x5ce78d[_0xf7f1('0x37')]});});});});})['then'](function(){if(_0x2791ed['event']===_0xf7f1('0xa0')){_0x383979[_0xf7f1('0x17')][_0x2791ed['uniqueid']]=_0x2791ed;}else{if(_0x383979[_0xf7f1('0x15')][_0x2791ed[_0xf7f1('0x37')]][_0xf7f1('0x5f')]===_0xf7f1('0xa1')&&_0x383979['blindTransfers'][_0x2791ed[_0xf7f1('0x37')]]){_0x383979[_0xf7f1('0x15')][_0x2791ed['uniqueid']]['uniqueid']=[_0x383979[_0xf7f1('0x15')][_0x2791ed['uniqueid']][_0xf7f1('0x38')],_0x383979[_0xf7f1('0x15')][_0x2791ed['uniqueid']]['linkedid']=_0x383979['channels'][_0x2791ed[_0xf7f1('0x37')]][_0xf7f1('0x37')]][0x0];delete _0x383979[_0xf7f1('0x17')][_0x2791ed[_0xf7f1('0x37')]];}}logger[_0xf7f1('0x36')](_0xf7f1('0xa2'),_0x2791ed[_0xf7f1('0x37')],util[_0xf7f1('0x2e')](_0x383979[_0xf7f1('0x15')][_0x2791ed[_0xf7f1('0x37')]],{'showHidden':![],'depth':null}));ami[_0xf7f1('0x32')](_0xf7f1('0xa3'),_0x383979[_0xf7f1('0x15')][_0x2791ed[_0xf7f1('0x37')]]);delete _0x383979[_0xf7f1('0x15')][_0x2791ed[_0xf7f1('0x37')]];});}}}catch(_0x5acd5b){logger[_0xf7f1('0x2d')](_0xf7f1('0xa4'),_0x2791ed[_0xf7f1('0x37')],util[_0xf7f1('0x2e')](_0x5acd5b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xf7f1('0x2f')][_0xf7f1('0x25')]=function(_0x2dc37f){try{if(this[_0xf7f1('0x30')](_0x2dc37f)){logger[_0xf7f1('0x2b')](_0xf7f1('0xa5'),_0x2dc37f['uniqueid'],_0x2dc37f['origtransferercalleridnum'],_0x2dc37f[_0xf7f1('0xa6')]);logger[_0xf7f1('0x36')]('[%s][voiceCallReport][attendedtransfer]\x20event:',_0x2dc37f[_0xf7f1('0x37')],util[_0xf7f1('0x2e')](_0x2dc37f,{'showHidden':![],'depth':null}));var _0x237ea0;if(this[_0xf7f1('0x15')][_0x2dc37f[_0xf7f1('0xa7')]]){this[_0xf7f1('0x15')][_0x2dc37f[_0xf7f1('0xa7')]][_0xf7f1('0xa8')]=_0x2dc37f[_0xf7f1('0xa9')];this['channels'][_0x2dc37f[_0xf7f1('0xa7')]]['transferconnectedlinenum']=_0x2dc37f[_0xf7f1('0xa6')];if(this[_0xf7f1('0x15')][_0x2dc37f[_0xf7f1('0xaa')]]){_0x237ea0=this[_0xf7f1('0x15')][_0x2dc37f[_0xf7f1('0xaa')]];this[_0xf7f1('0x15')][_0x2dc37f[_0xf7f1('0xaa')]]=this[_0xf7f1('0x15')][_0x2dc37f[_0xf7f1('0xa7')]];this[_0xf7f1('0x15')][_0x2dc37f['transfereeuniqueid']]=_0x237ea0;}this[_0xf7f1('0x15')][_0x2dc37f['secondtransfereruniqueid']][_0xf7f1('0x98')]=_0xf7f1('0xab');}else if(this['channels'][_0x2dc37f[_0xf7f1('0xac')]]){this[_0xf7f1('0x15')][_0x2dc37f['transfertargetuniqueid']][_0xf7f1('0xa8')]=_0x2dc37f['origtransferercalleridnum'];this[_0xf7f1('0x15')][_0x2dc37f['transfertargetuniqueid']][_0xf7f1('0xad')]=_0x2dc37f['transfertargetcalleridnum'];if(this[_0xf7f1('0x15')][_0x2dc37f['origtransfereruniqueid']]){_0x237ea0=this[_0xf7f1('0x15')][_0x2dc37f[_0xf7f1('0xae')]];this[_0xf7f1('0x15')][_0x2dc37f[_0xf7f1('0xae')]]=this[_0xf7f1('0x15')][_0x2dc37f[_0xf7f1('0xac')]];this[_0xf7f1('0x15')][_0x2dc37f[_0xf7f1('0xac')]]=_0x237ea0;}this[_0xf7f1('0x15')][_0x2dc37f[_0xf7f1('0xac')]][_0xf7f1('0x98')]=_0xf7f1('0xab');}if((this[_0xf7f1('0x15')][_0x2dc37f[_0xf7f1('0xae')]]||this[_0xf7f1('0x15')][_0x2dc37f['origtransfererlinkedid']])&&this[_0xf7f1('0x15')][_0x2dc37f[_0xf7f1('0xaa')]]){var _0x3c14e1=_[_0xf7f1('0xaf')]([this[_0xf7f1('0x15')][_0x2dc37f['origtransfereruniqueid']],this['channels'][_0x2dc37f['origtransfererlinkedid']],this[_0xf7f1('0x15')][_0x2dc37f[_0xf7f1('0xaa')]]],function(_0x5a1f83){return _0x5a1f83&&_0x5a1f83['type']==='outbound'&&_0x5a1f83[_0xf7f1('0xb0')];});if(_0x3c14e1){if(this[_0xf7f1('0x15')][_0x2dc37f['origtransfereruniqueid']])this[_0xf7f1('0x15')][_0x2dc37f[_0xf7f1('0xae')]]['transferType']=_0xf7f1('0xab');if(this['channels'][_0x2dc37f['origtransfererlinkedid']])this[_0xf7f1('0x15')][_0x2dc37f[_0xf7f1('0xb1')]][_0xf7f1('0x98')]='ATTENDED';this[_0xf7f1('0x15')][_0x2dc37f[_0xf7f1('0xaa')]]['transferType']='ATTENDED';}}}}catch(_0x57504b){logger['error'](_0xf7f1('0xb2'),_0x2dc37f[_0xf7f1('0x37')],util[_0xf7f1('0x2e')](_0x57504b,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xf7f1('0xb3')]=function(_0x30e2f3){try{if(this[_0xf7f1('0x30')](_0x30e2f3)){logger['info'](_0xf7f1('0xb4'),_0x30e2f3[_0xf7f1('0x37')],_0x30e2f3[_0xf7f1('0xb5')],_0x30e2f3[_0xf7f1('0xb6')]);logger[_0xf7f1('0x36')](_0xf7f1('0xb7'),_0x30e2f3[_0xf7f1('0x37')],util[_0xf7f1('0x2e')](_0x30e2f3,{'showHidden':![],'depth':null}));if(this['channels'][_0x30e2f3[_0xf7f1('0xa7')]]){this[_0xf7f1('0x15')][_0x30e2f3['transfereeuniqueid']][_0xf7f1('0xa8')]=_0x30e2f3[_0xf7f1('0xb5')];this[_0xf7f1('0x15')][_0x30e2f3[_0xf7f1('0xa7')]][_0xf7f1('0xad')]=_0x30e2f3[_0xf7f1('0xb6')];this[_0xf7f1('0x15')][_0x30e2f3['transfereeuniqueid']][_0xf7f1('0x98')]='BLIND';this[_0xf7f1('0x91')]({'event':_0xf7f1('0xa0'),'uniqueid':_0x30e2f3[_0xf7f1('0xa7')],'linkedid':_0x30e2f3[_0xf7f1('0xb8')],'context':_0x30e2f3[_0xf7f1('0x46')],'channel':_0x30e2f3['transfererchannel']});}else{this['channels'][_0x30e2f3[_0xf7f1('0xb8')]][_0xf7f1('0x98')]=_0xf7f1('0xb9');this[_0xf7f1('0x91')]({'event':'BlindTransfer','uniqueid':_0x30e2f3[_0xf7f1('0xb8')],'linkedid':_0x30e2f3[_0xf7f1('0xa7')],'context':_0x30e2f3[_0xf7f1('0x46')],'channel':_0x30e2f3['transfererchannel']});}}}catch(_0x158053){logger[_0xf7f1('0x2d')](_0xf7f1('0xba'),_0x30e2f3[_0xf7f1('0x37')],util[_0xf7f1('0x2e')](_0x158053,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xf7f1('0x2f')]['syncMusicOnHoldStart']=function(_0x191725){try{if(this[_0xf7f1('0x30')](_0x191725)){logger[_0xf7f1('0x36')](_0xf7f1('0xbb'),_0x191725[_0xf7f1('0x37')],util['inspect'](_0x191725,{'showHidden':![],'depth':null}));if(this[_0xf7f1('0x15')][_0x191725[_0xf7f1('0x37')]]){if(!_[_0xf7f1('0x60')](this[_0xf7f1('0x15')][_0x191725[_0xf7f1('0x37')]]['answertime'])){this['channels'][_0x191725[_0xf7f1('0x37')]][_0xf7f1('0xbc')]=moment()[_0xf7f1('0x40')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0xf7f1('0x2b')]('[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s',_0x191725[_0xf7f1('0x37')],this[_0xf7f1('0x15')][_0x191725[_0xf7f1('0x37')]][_0xf7f1('0xbc')]);}}}}catch(_0x4fb250){logger['error']('[%s][voiceCallReport][musiconholdstart]',_0x191725[_0xf7f1('0x37')],util[_0xf7f1('0x2e')](_0x4fb250,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xf7f1('0x2f')]['syncMusicOnHoldStop']=function(_0x104d7d){try{if(this[_0xf7f1('0x30')](_0x104d7d)){logger['debug']('[%s][voiceCallReport][musiconholdstop]\x20event:',_0x104d7d[_0xf7f1('0x37')],util[_0xf7f1('0x2e')](_0x104d7d,{'showHidden':![],'depth':null}));if(this[_0xf7f1('0x15')][_0x104d7d[_0xf7f1('0x37')]]){if(!_[_0xf7f1('0x60')](this[_0xf7f1('0x15')][_0x104d7d[_0xf7f1('0x37')]][_0xf7f1('0xbc')])){this[_0xf7f1('0x15')][_0x104d7d[_0xf7f1('0x37')]][_0xf7f1('0xbd')]+=moment()['milliseconds'](0x0)[_0xf7f1('0x93')](this[_0xf7f1('0x15')][_0x104d7d[_0xf7f1('0x37')]][_0xf7f1('0xbc')],_0xf7f1('0x5a'));logger[_0xf7f1('0x2b')](_0xf7f1('0xbe'),_0x104d7d[_0xf7f1('0x37')],this[_0xf7f1('0x15')][_0x104d7d[_0xf7f1('0x37')]]['mohtime']);delete this[_0xf7f1('0x15')][_0x104d7d[_0xf7f1('0x37')]][_0xf7f1('0xbc')];}}}}catch(_0x3812ac){logger[_0xf7f1('0x2d')]('[%s][voiceCallReport][musiconholdstop]',_0x104d7d[_0xf7f1('0x37')],util[_0xf7f1('0x2e')](_0x3812ac,{'showHidden':![],'depth':null}));}};module[_0xf7f1('0xbf')]=VoiceCallReport;
\ No newline at end of file
index 3d4f6e4..33748a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24ca=['syncVarSet','hangup','prototype','isNotNull','emit','debug','inspect','merge','uniqueid','format','YYYY-MM-DD\x20HH:mm:ss','called','substring','channel','lastIndexOf','omit','event','info','membername','interface','voice:outbound','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','error','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','lastevent','connect','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','voice_outbound_channel:save','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','variable','value','outboundrouteid','isUndefined','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','keys','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosrtt','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','endtime','diff','starttime','seconds','complete','total','holdtime','sumHoldTime','billableseconds','sumDuration','duration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','linkedid','syncNewExten','[%s][voiceDialReport][newexten]\x20event:','application','set','applicationdata','appdata','toLowerCase','startsWith','cdr(','split','[%s][voiceDialReport][newexten]','lodash','util','ioredis','../../../config/environment','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','outboundChannels','outbound','applications','variables','syncDialBegin','bind','dialend','syncDialEnd','varset'];(function(_0x31f0f7,_0x244f9f){var _0x18f524=function(_0xee7a0c){while(--_0xee7a0c){_0x31f0f7['push'](_0x31f0f7['shift']());}};_0x18f524(++_0x244f9f);}(_0x24ca,0x1bc));var _0xa24c=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x24ca[_0x1035c1];return _0x308d67;};'use strict';var _=require(_0xa24c('0x0'));var moment=require('moment');var util=require(_0xa24c('0x1'));var Redis=require(_0xa24c('0x2'));var config=require(_0xa24c('0x3'));var logger=require('../../../config/logger')(_0xa24c('0x4'));var ami=require(_0xa24c('0x5'));config[_0xa24c('0x6')]=_[_0xa24c('0x7')](config[_0xa24c('0x6')],{'host':_0xa24c('0x8'),'port':0x18eb});var io=require(_0xa24c('0x9'))(new Redis(config[_0xa24c('0x6')]));function VoiceDialReport(_0x2dd348){this[_0xa24c('0xa')]=_0x2dd348[_0xa24c('0xb')];this['outbound']=_0x2dd348[_0xa24c('0xc')];this[_0xa24c('0xd')]={};this[_0xa24c('0xe')]={};ami['on']('dialbegin',this[_0xa24c('0xf')][_0xa24c('0x10')](this));ami['on'](_0xa24c('0x11'),this[_0xa24c('0x12')][_0xa24c('0x10')](this));ami['on'](_0xa24c('0x13'),this[_0xa24c('0x14')][_0xa24c('0x10')](this));ami['on'](_0xa24c('0x15'),this['syncHangup'][_0xa24c('0x10')](this));}VoiceDialReport[_0xa24c('0x16')][_0xa24c('0x17')]=function(_0x2c2af8){return _0x2c2af8!==null&&!_['isUndefined'](_0x2c2af8);};VoiceDialReport[_0xa24c('0x16')][_0xa24c('0x18')]=function(_0x26ff28,_0x2fcd8b,_0x1cb08e){io['to'](_0x26ff28)[_0xa24c('0x18')](_0x2fcd8b,_0x1cb08e);};VoiceDialReport[_0xa24c('0x16')]['syncDialBegin']=function(_0x47a063){try{if(this[_0xa24c('0x17')](_0x47a063)){logger[_0xa24c('0x19')]('[%s][voiceDialReport][dialbegin]\x20event:',_0x47a063['uniqueid'],util[_0xa24c('0x1a')](_0x47a063,{'showHidden':![],'depth':null}));if(this[_0xa24c('0xa')][_0x47a063['uniqueid']]){_[_0xa24c('0x1b')](this['channels'][_0x47a063[_0xa24c('0x1c')]],{'starttime':moment()[_0xa24c('0x1d')](_0xa24c('0x1e')),'lastevent':_0xa24c('0x1f'),'interface':_0x47a063['channel'][_0xa24c('0x20')](0x0,_0x47a063[_0xa24c('0x21')][_0xa24c('0x22')]('-')),'membername':_0x47a063['channel']['substring'](_0x47a063['channel']['lastIndexOf']('/')+0x1,_0x47a063[_0xa24c('0x21')][_0xa24c('0x22')]('-'))},_[_0xa24c('0x23')](_0x47a063,[_0xa24c('0x24'),'privilege']));logger[_0xa24c('0x25')]('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x47a063[_0xa24c('0x1c')],this[_0xa24c('0xa')][_0x47a063['uniqueid']][_0xa24c('0x26')],this[_0xa24c('0xa')][_0x47a063[_0xa24c('0x1c')]][_0xa24c('0x27')]);logger[_0xa24c('0x19')]('[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:',_0x47a063[_0xa24c('0x1c')],util['inspect'](this[_0xa24c('0xa')][_0x47a063[_0xa24c('0x1c')]],{'showHidden':![],'depth':null}));if(this[_0xa24c('0xd')][_0x47a063['uniqueid']])_[_0xa24c('0x1b')](this[_0xa24c('0xa')][_0x47a063[_0xa24c('0x1c')]],this[_0xa24c('0xd')][_0x47a063[_0xa24c('0x1c')]]);this[_0xa24c('0x18')](_0xa24c('0x28'),'voice_outbound_channel:save',this[_0xa24c('0xa')][_0x47a063[_0xa24c('0x1c')]]);logger[_0xa24c('0x19')](_0xa24c('0x29'),_0x47a063['uniqueid'],util[_0xa24c('0x1a')](this[_0xa24c('0xa')][_0x47a063[_0xa24c('0x1c')]],{'showHidden':![],'depth':null}));ami['emit'](_0xa24c('0x2a'),this[_0xa24c('0xa')][_0x47a063[_0xa24c('0x1c')]]);}}}catch(_0x4ae35c){logger[_0xa24c('0x2b')]('[%s][voiceDialReport][dialbegin]',_0x47a063[_0xa24c('0x1c')],util[_0xa24c('0x1a')](_0x4ae35c,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xa24c('0x16')]['syncDialEnd']=function(_0x1f52f8){try{if(this[_0xa24c('0x17')](_0x1f52f8)){logger[_0xa24c('0x19')]('[%s][voiceDialReport][dialend]\x20event:',_0x1f52f8[_0xa24c('0x1c')],util['inspect'](_0x1f52f8,{'showHidden':![],'depth':null}));if(this[_0xa24c('0xa')][_0x1f52f8[_0xa24c('0x1c')]]){this['channels'][_0x1f52f8['uniqueid']][_0xa24c('0x2c')]=_0x1f52f8[_0xa24c('0x2c')];if(_0x1f52f8[_0xa24c('0x2c')]===_0xa24c('0x2d')){this[_0xa24c('0xa')][_0x1f52f8[_0xa24c('0x1c')]][_0xa24c('0x2e')]=_0x1f52f8['connectedlinenum'];this[_0xa24c('0xa')][_0x1f52f8[_0xa24c('0x1c')]][_0xa24c('0x2f')]=_0x1f52f8[_0xa24c('0x2f')];this[_0xa24c('0xa')][_0x1f52f8[_0xa24c('0x1c')]][_0xa24c('0x30')]=moment()[_0xa24c('0x1d')](_0xa24c('0x1e'));this[_0xa24c('0xa')][_0x1f52f8['uniqueid']][_0xa24c('0x31')]=_0xa24c('0x32');logger[_0xa24c('0x25')](_0xa24c('0x33'),_0x1f52f8['uniqueid'],_0x1f52f8['channel'][_0xa24c('0x20')](_0x1f52f8['channel'][_0xa24c('0x22')]('/')+0x1,_0x1f52f8[_0xa24c('0x21')][_0xa24c('0x22')]('-')));logger[_0xa24c('0x19')](_0xa24c('0x34'),_0x1f52f8['uniqueid'],util['inspect'](this[_0xa24c('0xa')][_0x1f52f8[_0xa24c('0x1c')]],{'showHidden':![],'depth':null}));ami[_0xa24c('0x18')](_0xa24c('0x35'),this[_0xa24c('0xa')][_0x1f52f8[_0xa24c('0x1c')]]);}logger['debug']('[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:',_0x1f52f8[_0xa24c('0x1c')],util[_0xa24c('0x1a')](this[_0xa24c('0xa')][_0x1f52f8[_0xa24c('0x1c')]],{'showHidden':![],'depth':null}));this[_0xa24c('0x18')]('voice:outbound',_0xa24c('0x36'),this[_0xa24c('0xa')][_0x1f52f8['uniqueid']]);}}}catch(_0x599627){logger[_0xa24c('0x2b')](_0xa24c('0x37'),_0x1f52f8[_0xa24c('0x1c')],util['inspect'](_0x599627,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0xa24c('0x14')]=function(_0x32af67){try{if(this[_0xa24c('0x17')](_0x32af67)){logger[_0xa24c('0x19')](_0xa24c('0x38'),_0x32af67[_0xa24c('0x1c')],util[_0xa24c('0x1a')](_0x32af67,{'showHidden':![],'depth':null}));this[_0xa24c('0x39')](_0x32af67['uniqueid'],_['keys'](_0x32af67[_0xa24c('0x3a')])[0x0],_0x32af67[_0xa24c('0x3b')]);if(this[_0xa24c('0x17')](_0x32af67['variable'])&&this[_0xa24c('0x17')](_0x32af67[_0xa24c('0x3a')][_0xa24c('0x3c')])){if(_[_0xa24c('0x3d')](this[_0xa24c('0xa')][_0x32af67[_0xa24c('0x1c')]])){this[_0xa24c('0xa')][_0x32af67[_0xa24c('0x1c')]]={'routeId':_0x32af67[_0xa24c('0x3b')],'variables':this[_0xa24c('0xe')][_0x32af67['uniqueid']],'motionChannel':_0xa24c('0x3e')};logger[_0xa24c('0x25')](_0xa24c('0x3f'),_0x32af67['uniqueid'],_0x32af67[_0xa24c('0x3a')][_0xa24c('0x3c')],_[_0xa24c('0x40')](_0x32af67[_0xa24c('0x3a')])[0x0],_0x32af67[_0xa24c('0x3b')]);logger[_0xa24c('0x19')](_0xa24c('0x41'),_0x32af67[_0xa24c('0x1c')],util[_0xa24c('0x1a')](this[_0xa24c('0xa')][_0x32af67[_0xa24c('0x1c')]],{'showHidden':![],'depth':null}));this['emit'](_0xa24c('0x28'),_0xa24c('0x36'),this[_0xa24c('0xa')][_0x32af67[_0xa24c('0x1c')]]);}}}}catch(_0x1a1d02){logger[_0xa24c('0x2b')](_0xa24c('0x42'),_0x32af67[_0xa24c('0x1c')],util[_0xa24c('0x1a')](_0x1a1d02,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype']['addVariable']=function(_0x1e73f8,_0x5c14df,_0xc078ef){var _0x1f436c=['rtpaudioqos',_0xa24c('0x43'),_0xa24c('0x44'),_0xa24c('0x45'),'rtpaudioqosloss','rtpaudioqoslossbridged',_0xa24c('0x46'),'rtpaudioqosrttbridged',_0xa24c('0x47'),_0xa24c('0x48'),_0xa24c('0x49'),_0xa24c('0x4a'),_0xa24c('0x4b'),_0xa24c('0x4c'),_0xa24c('0x4d'),_0xa24c('0x4e'),_0xa24c('0x26'),_0xa24c('0x4f'),'memberrealtime'];if(!_[_0xa24c('0x50')](_0x5c14df)&&!_[_0xa24c('0x51')](_0x1f436c,_0x5c14df)){if(_[_0xa24c('0x3d')](this['variables'][_0x1e73f8])){this['variables'][_0x1e73f8]={};}this['variables'][_0x1e73f8][_0x5c14df]=_0xc078ef;}};VoiceDialReport[_0xa24c('0x16')]['syncHangup']=function(_0x4757ff){try{if(this[_0xa24c('0x17')](_0x4757ff)){logger['debug'](_0xa24c('0x52'),_0x4757ff[_0xa24c('0x1c')],util[_0xa24c('0x1a')](_0x4757ff,{'showHidden':![],'depth':null}));if(this[_0xa24c('0xa')][_0x4757ff[_0xa24c('0x1c')]]){logger[_0xa24c('0x25')](_0xa24c('0x53'),_0x4757ff[_0xa24c('0x1c')],_0x4757ff['cause-txt']);this[_0xa24c('0xa')][_0x4757ff['uniqueid']]['endtime']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x4757ff[_0xa24c('0x1c')]]['duration']=moment(this[_0xa24c('0xa')][_0x4757ff[_0xa24c('0x1c')]][_0xa24c('0x54')])[_0xa24c('0x55')](this[_0xa24c('0xa')][_0x4757ff[_0xa24c('0x1c')]][_0xa24c('0x56')],_0xa24c('0x57'));this[_0xa24c('0xa')][_0x4757ff[_0xa24c('0x1c')]][_0xa24c('0x31')]=_0xa24c('0x58');this[_0xa24c('0xc')][_0xa24c('0x59')]+=0x1;if(this[_0xa24c('0xa')][_0x4757ff['uniqueid']][_0xa24c('0x30')]){this[_0xa24c('0xc')]['answered']+=0x1;this[_0xa24c('0xa')][_0x4757ff[_0xa24c('0x1c')]][_0xa24c('0x5a')]=moment(this[_0xa24c('0xa')][_0x4757ff['uniqueid']]['answertime'])[_0xa24c('0x55')](this['channels'][_0x4757ff['uniqueid']][_0xa24c('0x56')],_0xa24c('0x57'));this[_0xa24c('0xa')][_0x4757ff[_0xa24c('0x1c')]]['billableseconds']=moment(this['channels'][_0x4757ff[_0xa24c('0x1c')]]['endtime'])['diff'](this[_0xa24c('0xa')][_0x4757ff[_0xa24c('0x1c')]][_0xa24c('0x30')],'seconds');this[_0xa24c('0xc')][_0xa24c('0x5b')]+=this['channels'][_0x4757ff[_0xa24c('0x1c')]][_0xa24c('0x5a')]||0x0;this[_0xa24c('0xc')]['sumBillable']+=this[_0xa24c('0xa')][_0x4757ff[_0xa24c('0x1c')]][_0xa24c('0x5c')];}this[_0xa24c('0xc')][_0xa24c('0x5d')]+=this['channels'][_0x4757ff[_0xa24c('0x1c')]][_0xa24c('0x5e')];logger[_0xa24c('0x19')](_0xa24c('0x5f'),_0x4757ff[_0xa24c('0x1c')],util[_0xa24c('0x1a')](this[_0xa24c('0xa')][_0x4757ff['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xa24c('0x18')](_0xa24c('0x60'),this['channels'][_0x4757ff[_0xa24c('0x1c')]]);logger[_0xa24c('0x19')](_0xa24c('0x61'),_0x4757ff[_0xa24c('0x1c')],util[_0xa24c('0x1a')](this[_0xa24c('0xa')][_0x4757ff[_0xa24c('0x1c')]],{'showHidden':![],'depth':null}));ami[_0xa24c('0x18')](_0xa24c('0x62'),this[_0xa24c('0xa')][_0x4757ff['uniqueid']]);logger[_0xa24c('0x19')](_0xa24c('0x63'),_0x4757ff[_0xa24c('0x1c')],util['inspect'](this[_0xa24c('0xa')][_0x4757ff[_0xa24c('0x1c')]],{'showHidden':![],'depth':null}));this[_0xa24c('0x18')]('voice:outbound',_0xa24c('0x64'),this[_0xa24c('0xc')]);logger[_0xa24c('0x25')](_0xa24c('0x65'),JSON[_0xa24c('0x66')](this[_0xa24c('0xa')][_0x4757ff['uniqueid']]));logger['debug'](_0xa24c('0x67'),_0x4757ff['uniqueid'],util[_0xa24c('0x1a')](this[_0xa24c('0xa')][_0x4757ff[_0xa24c('0x1c')]],{'showHidden':![],'depth':null}));this[_0xa24c('0x18')](_0xa24c('0x28'),'voice_outbound_channel:remove',this[_0xa24c('0xa')][_0x4757ff[_0xa24c('0x1c')]]);delete this[_0xa24c('0xa')][_0x4757ff[_0xa24c('0x1c')]];}else if(this[_0xa24c('0xa')][_0x4757ff[_0xa24c('0x68')]]){this['channels'][_0x4757ff[_0xa24c('0x68')]][_0xa24c('0x1c')]=this[_0xa24c('0xa')][_0x4757ff[_0xa24c('0x68')]]['destuniqueid'];}if(this[_0xa24c('0xe')][_0x4757ff['uniqueid']]){delete this[_0xa24c('0xe')][_0x4757ff[_0xa24c('0x1c')]];}}}catch(_0x342442){logger[_0xa24c('0x2b')]('[%s][voiceDialReport][hangup]',_0x4757ff[_0xa24c('0x1c')],util[_0xa24c('0x1a')](_0x342442,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0xa24c('0x69')]=function(_0x168a8b){try{if(this[_0xa24c('0x17')](_0x168a8b)){logger[_0xa24c('0x19')](_0xa24c('0x6a'),_0x168a8b[_0xa24c('0x1c')],util[_0xa24c('0x1a')](_0x168a8b,{'showHidden':![],'depth':null}));if(_0x168a8b[_0xa24c('0x6b')]['toLowerCase']()===_0xa24c('0x6c')){_0x168a8b[_0xa24c('0x6d')]=(_0x168a8b[_0xa24c('0x6e')]||_0x168a8b[_0xa24c('0x6d')])[_0xa24c('0x6f')]();if(_[_0xa24c('0x70')](_0x168a8b[_0xa24c('0x6d')],_0xa24c('0x71'))){if(_[_0xa24c('0x3d')](this[_0xa24c('0xd')][_0x168a8b[_0xa24c('0x1c')]]))this['applications'][_0x168a8b[_0xa24c('0x1c')]]={};logger[_0xa24c('0x25')]('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x168a8b[_0xa24c('0x1c')],_0x168a8b[_0xa24c('0x6b')],_0x168a8b[_0xa24c('0x6d')]);var _0x4f0f11=_0x168a8b['applicationdata'][_0xa24c('0x72')]('=');var _0x4c9b19=_0x4f0f11[0x0]['match'](/cdr\((.*)\)/);if(_0x4c9b19)this[_0xa24c('0xd')][_0x168a8b[_0xa24c('0x1c')]][_0x4c9b19[0x1]]=_0x4f0f11[0x1];}}}}catch(_0x106178){logger[_0xa24c('0x2b')](_0xa24c('0x73'),_0x168a8b[_0xa24c('0x1c')],util['inspect'](_0x106178,{'showHidden':![],'depth':null}));}};module['exports']=VoiceDialReport;
\ No newline at end of file
+var _0x33c5=['../../../config/environment','../../../config/logger','ami','../ami','redis','localhost','socket.io-emitter','channels','outboundChannels','outbound','applications','variables','dialbegin','syncDialBegin','bind','dialend','syncDialEnd','varset','syncVarSet','hangup','syncHangup','isNotNull','isUndefined','prototype','emit','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','event','privilege','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','interface','debug','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','error','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','connectedlinenum','answertime','lastevent','connect','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','variable','value','voice','info','outboundrouteid','keys','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','diff','starttime','seconds','complete','total','holdtime','billableseconds','sumHoldTime','sumBillable','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','voice_outbound:save','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','syncNewExten','[%s][voiceDialReport][newexten]\x20event:','application','set','applicationdata','toLowerCase','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','split','match','[%s][voiceDialReport][newexten]','moment','util'];(function(_0x5b740b,_0x381833){var _0x6f8f4e=function(_0x86d068){while(--_0x86d068){_0x5b740b['push'](_0x5b740b['shift']());}};_0x6f8f4e(++_0x381833);}(_0x33c5,0xe6));var _0x533c=function(_0x4b26b5,_0x4f71fd){_0x4b26b5=_0x4b26b5-0x0;var _0x4dec71=_0x33c5[_0x4b26b5];return _0x4dec71;};'use strict';var _=require('lodash');var moment=require(_0x533c('0x0'));var util=require(_0x533c('0x1'));var Redis=require('ioredis');var config=require(_0x533c('0x2'));var logger=require(_0x533c('0x3'))(_0x533c('0x4'));var ami=require(_0x533c('0x5'));config[_0x533c('0x6')]=_['defaults'](config[_0x533c('0x6')],{'host':_0x533c('0x7'),'port':0x18eb});var io=require(_0x533c('0x8'))(new Redis(config[_0x533c('0x6')]));function VoiceDialReport(_0x34ca89){this[_0x533c('0x9')]=_0x34ca89[_0x533c('0xa')];this[_0x533c('0xb')]=_0x34ca89[_0x533c('0xb')];this[_0x533c('0xc')]={};this[_0x533c('0xd')]={};ami['on'](_0x533c('0xe'),this[_0x533c('0xf')][_0x533c('0x10')](this));ami['on'](_0x533c('0x11'),this[_0x533c('0x12')]['bind'](this));ami['on'](_0x533c('0x13'),this[_0x533c('0x14')][_0x533c('0x10')](this));ami['on'](_0x533c('0x15'),this[_0x533c('0x16')][_0x533c('0x10')](this));}VoiceDialReport['prototype'][_0x533c('0x17')]=function(_0xf93007){return _0xf93007!==null&&!_[_0x533c('0x18')](_0xf93007);};VoiceDialReport[_0x533c('0x19')][_0x533c('0x1a')]=function(_0x1a2a83,_0x8d7c66,_0xa616ca){io['to'](_0x1a2a83)['emit'](_0x8d7c66,_0xa616ca);};VoiceDialReport[_0x533c('0x19')][_0x533c('0xf')]=function(_0x3f4a5c){try{if(this[_0x533c('0x17')](_0x3f4a5c)){logger['debug'](_0x533c('0x1b'),_0x3f4a5c[_0x533c('0x1c')],util[_0x533c('0x1d')](_0x3f4a5c,{'showHidden':![],'depth':null}));if(this[_0x533c('0x9')][_0x3f4a5c[_0x533c('0x1c')]]){_[_0x533c('0x1e')](this[_0x533c('0x9')][_0x3f4a5c[_0x533c('0x1c')]],{'starttime':moment()[_0x533c('0x1f')](_0x533c('0x20')),'lastevent':_0x533c('0x21'),'interface':_0x3f4a5c[_0x533c('0x22')][_0x533c('0x23')](0x0,_0x3f4a5c[_0x533c('0x22')][_0x533c('0x24')]('-')),'membername':_0x3f4a5c[_0x533c('0x22')][_0x533c('0x23')](_0x3f4a5c[_0x533c('0x22')]['lastIndexOf']('/')+0x1,_0x3f4a5c[_0x533c('0x22')]['lastIndexOf']('-'))},_['omit'](_0x3f4a5c,[_0x533c('0x25'),_0x533c('0x26')]));logger['info'](_0x533c('0x27'),_0x3f4a5c[_0x533c('0x1c')],this[_0x533c('0x9')][_0x3f4a5c[_0x533c('0x1c')]]['membername'],this[_0x533c('0x9')][_0x3f4a5c[_0x533c('0x1c')]][_0x533c('0x28')]);logger[_0x533c('0x29')](_0x533c('0x2a'),_0x3f4a5c[_0x533c('0x1c')],util[_0x533c('0x1d')](this[_0x533c('0x9')][_0x3f4a5c[_0x533c('0x1c')]],{'showHidden':![],'depth':null}));if(this[_0x533c('0xc')][_0x3f4a5c['uniqueid']])_[_0x533c('0x1e')](this[_0x533c('0x9')][_0x3f4a5c['uniqueid']],this[_0x533c('0xc')][_0x3f4a5c['uniqueid']]);this[_0x533c('0x1a')](_0x533c('0x2b'),_0x533c('0x2c'),this[_0x533c('0x9')][_0x3f4a5c[_0x533c('0x1c')]]);logger[_0x533c('0x29')](_0x533c('0x2d'),_0x3f4a5c[_0x533c('0x1c')],util[_0x533c('0x1d')](this[_0x533c('0x9')][_0x3f4a5c[_0x533c('0x1c')]],{'showHidden':![],'depth':null}));ami[_0x533c('0x1a')]('custom:dialbegin',this[_0x533c('0x9')][_0x3f4a5c['uniqueid']]);}}}catch(_0x3290de){logger[_0x533c('0x2e')](_0x533c('0x2f'),_0x3f4a5c[_0x533c('0x1c')],util[_0x533c('0x1d')](_0x3290de,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x533c('0x19')][_0x533c('0x12')]=function(_0x624d84){try{if(this[_0x533c('0x17')](_0x624d84)){logger[_0x533c('0x29')](_0x533c('0x30'),_0x624d84[_0x533c('0x1c')],util[_0x533c('0x1d')](_0x624d84,{'showHidden':![],'depth':null}));if(this[_0x533c('0x9')][_0x624d84[_0x533c('0x1c')]]){this['channels'][_0x624d84[_0x533c('0x1c')]][_0x533c('0x31')]=_0x624d84[_0x533c('0x31')];if(_0x624d84[_0x533c('0x31')]==='ANSWER'){this[_0x533c('0x9')][_0x624d84[_0x533c('0x1c')]][_0x533c('0x32')]=_0x624d84[_0x533c('0x32')];this[_0x533c('0x9')][_0x624d84['uniqueid']]['connectedlinename']=_0x624d84['connectedlinename'];this['channels'][_0x624d84['uniqueid']][_0x533c('0x33')]=moment()['format'](_0x533c('0x20'));this['channels'][_0x624d84[_0x533c('0x1c')]][_0x533c('0x34')]=_0x533c('0x35');logger['info'](_0x533c('0x36'),_0x624d84[_0x533c('0x1c')],_0x624d84[_0x533c('0x22')]['substring'](_0x624d84[_0x533c('0x22')][_0x533c('0x24')]('/')+0x1,_0x624d84[_0x533c('0x22')]['lastIndexOf']('-')));logger[_0x533c('0x29')](_0x533c('0x37'),_0x624d84[_0x533c('0x1c')],util[_0x533c('0x1d')](this[_0x533c('0x9')][_0x624d84[_0x533c('0x1c')]],{'showHidden':![],'depth':null}));ami[_0x533c('0x1a')](_0x533c('0x38'),this[_0x533c('0x9')][_0x624d84[_0x533c('0x1c')]]);}logger[_0x533c('0x29')]('[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:',_0x624d84[_0x533c('0x1c')],util[_0x533c('0x1d')](this[_0x533c('0x9')][_0x624d84[_0x533c('0x1c')]],{'showHidden':![],'depth':null}));this[_0x533c('0x1a')](_0x533c('0x2b'),'voice_outbound_channel:save',this[_0x533c('0x9')][_0x624d84[_0x533c('0x1c')]]);}}}catch(_0x41f5a2){logger['error'](_0x533c('0x39'),_0x624d84[_0x533c('0x1c')],util[_0x533c('0x1d')](_0x41f5a2,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x533c('0x19')]['syncVarSet']=function(_0x365e71){try{if(this['isNotNull'](_0x365e71)){logger[_0x533c('0x29')](_0x533c('0x3a'),_0x365e71['uniqueid'],util[_0x533c('0x1d')](_0x365e71,{'showHidden':![],'depth':null}));this[_0x533c('0x3b')](_0x365e71[_0x533c('0x1c')],_['keys'](_0x365e71['variable'])[0x0],_0x365e71['value']);if(this['isNotNull'](_0x365e71[_0x533c('0x3c')])&&this['isNotNull'](_0x365e71[_0x533c('0x3c')]['outboundrouteid'])){if(_[_0x533c('0x18')](this['channels'][_0x365e71[_0x533c('0x1c')]])){this[_0x533c('0x9')][_0x365e71['uniqueid']]={'routeId':_0x365e71[_0x533c('0x3d')],'variables':this[_0x533c('0xd')][_0x365e71[_0x533c('0x1c')]],'motionChannel':_0x533c('0x3e')};logger[_0x533c('0x3f')]('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0x365e71[_0x533c('0x1c')],_0x365e71[_0x533c('0x3c')][_0x533c('0x40')],_[_0x533c('0x41')](_0x365e71['variable'])[0x0],_0x365e71[_0x533c('0x3d')]);logger[_0x533c('0x29')]('[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:',_0x365e71['uniqueid'],util[_0x533c('0x1d')](this['channels'][_0x365e71[_0x533c('0x1c')]],{'showHidden':![],'depth':null}));this[_0x533c('0x1a')](_0x533c('0x2b'),_0x533c('0x2c'),this[_0x533c('0x9')][_0x365e71[_0x533c('0x1c')]]);}}}}catch(_0xa34f64){logger[_0x533c('0x2e')]('[%s][voiceDialReport][varset]',_0x365e71[_0x533c('0x1c')],util[_0x533c('0x1d')](_0xa34f64,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x533c('0x19')]['addVariable']=function(_0x2f0256,_0x30f457,_0x5ce027){var _0x1d081c=['rtpaudioqos',_0x533c('0x42'),_0x533c('0x43'),_0x533c('0x44'),_0x533c('0x45'),_0x533c('0x46'),_0x533c('0x47'),_0x533c('0x48'),'sipcallid',_0x533c('0x49'),_0x533c('0x4a'),_0x533c('0x4b'),_0x533c('0x4c'),_0x533c('0x4d'),_0x533c('0x4e'),_0x533c('0x4f'),'membername','memberpenalty','memberrealtime'];if(!_['isNil'](_0x30f457)&&!_[_0x533c('0x50')](_0x1d081c,_0x30f457)){if(_[_0x533c('0x18')](this['variables'][_0x2f0256])){this[_0x533c('0xd')][_0x2f0256]={};}this[_0x533c('0xd')][_0x2f0256][_0x30f457]=_0x5ce027;}};VoiceDialReport[_0x533c('0x19')]['syncHangup']=function(_0x1de19e){try{if(this['isNotNull'](_0x1de19e)){logger['debug'](_0x533c('0x51'),_0x1de19e[_0x533c('0x1c')],util[_0x533c('0x1d')](_0x1de19e,{'showHidden':![],'depth':null}));if(this[_0x533c('0x9')][_0x1de19e[_0x533c('0x1c')]]){logger[_0x533c('0x3f')](_0x533c('0x52'),_0x1de19e['uniqueid'],_0x1de19e[_0x533c('0x53')]);this['channels'][_0x1de19e[_0x533c('0x1c')]][_0x533c('0x54')]=moment()[_0x533c('0x1f')](_0x533c('0x20'));this[_0x533c('0x9')][_0x1de19e[_0x533c('0x1c')]][_0x533c('0x55')]=moment(this[_0x533c('0x9')][_0x1de19e['uniqueid']][_0x533c('0x54')])[_0x533c('0x56')](this[_0x533c('0x9')][_0x1de19e[_0x533c('0x1c')]][_0x533c('0x57')],_0x533c('0x58'));this['channels'][_0x1de19e[_0x533c('0x1c')]]['lastevent']=_0x533c('0x59');this[_0x533c('0xb')][_0x533c('0x5a')]+=0x1;if(this[_0x533c('0x9')][_0x1de19e[_0x533c('0x1c')]][_0x533c('0x33')]){this['outbound']['answered']+=0x1;this[_0x533c('0x9')][_0x1de19e[_0x533c('0x1c')]][_0x533c('0x5b')]=moment(this[_0x533c('0x9')][_0x1de19e['uniqueid']][_0x533c('0x33')])[_0x533c('0x56')](this[_0x533c('0x9')][_0x1de19e[_0x533c('0x1c')]][_0x533c('0x57')],_0x533c('0x58'));this[_0x533c('0x9')][_0x1de19e[_0x533c('0x1c')]][_0x533c('0x5c')]=moment(this[_0x533c('0x9')][_0x1de19e[_0x533c('0x1c')]][_0x533c('0x54')])[_0x533c('0x56')](this[_0x533c('0x9')][_0x1de19e[_0x533c('0x1c')]][_0x533c('0x33')],_0x533c('0x58'));this['outbound'][_0x533c('0x5d')]+=this['channels'][_0x1de19e['uniqueid']][_0x533c('0x5b')]||0x0;this[_0x533c('0xb')][_0x533c('0x5e')]+=this[_0x533c('0x9')][_0x1de19e[_0x533c('0x1c')]][_0x533c('0x5c')];}this[_0x533c('0xb')]['sumDuration']+=this[_0x533c('0x9')][_0x1de19e[_0x533c('0x1c')]]['duration'];logger[_0x533c('0x29')](_0x533c('0x5f'),_0x1de19e[_0x533c('0x1c')],util[_0x533c('0x1d')](this['channels'][_0x1de19e[_0x533c('0x1c')]],{'showHidden':![],'depth':null}));ami[_0x533c('0x1a')]('custom:voiceDialReport',this[_0x533c('0x9')][_0x1de19e[_0x533c('0x1c')]]);logger['debug'](_0x533c('0x60'),_0x1de19e[_0x533c('0x1c')],util['inspect'](this[_0x533c('0x9')][_0x1de19e['uniqueid']],{'showHidden':![],'depth':null}));ami['emit'](_0x533c('0x61'),this[_0x533c('0x9')][_0x1de19e[_0x533c('0x1c')]]);logger[_0x533c('0x29')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:',_0x1de19e[_0x533c('0x1c')],util[_0x533c('0x1d')](this[_0x533c('0x9')][_0x1de19e[_0x533c('0x1c')]],{'showHidden':![],'depth':null}));this[_0x533c('0x1a')]('voice:outbound',_0x533c('0x62'),this['outbound']);logger[_0x533c('0x3f')]('[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event',JSON[_0x533c('0x63')](this['channels'][_0x1de19e['uniqueid']]));logger['debug'](_0x533c('0x64'),_0x1de19e[_0x533c('0x1c')],util[_0x533c('0x1d')](this['channels'][_0x1de19e[_0x533c('0x1c')]],{'showHidden':![],'depth':null}));this[_0x533c('0x1a')](_0x533c('0x2b'),_0x533c('0x65'),this[_0x533c('0x9')][_0x1de19e['uniqueid']]);delete this['channels'][_0x1de19e[_0x533c('0x1c')]];}else if(this[_0x533c('0x9')][_0x1de19e[_0x533c('0x66')]]){this[_0x533c('0x9')][_0x1de19e[_0x533c('0x66')]][_0x533c('0x1c')]=this[_0x533c('0x9')][_0x1de19e[_0x533c('0x66')]][_0x533c('0x67')];}if(this['variables'][_0x1de19e[_0x533c('0x1c')]]){delete this[_0x533c('0xd')][_0x1de19e[_0x533c('0x1c')]];}}}catch(_0x1be91f){logger[_0x533c('0x2e')](_0x533c('0x68'),_0x1de19e[_0x533c('0x1c')],util[_0x533c('0x1d')](_0x1be91f,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x533c('0x19')][_0x533c('0x69')]=function(_0xfd598d){try{if(this[_0x533c('0x17')](_0xfd598d)){logger[_0x533c('0x29')](_0x533c('0x6a'),_0xfd598d[_0x533c('0x1c')],util[_0x533c('0x1d')](_0xfd598d,{'showHidden':![],'depth':null}));if(_0xfd598d[_0x533c('0x6b')]['toLowerCase']()===_0x533c('0x6c')){_0xfd598d[_0x533c('0x6d')]=(_0xfd598d['appdata']||_0xfd598d['applicationdata'])[_0x533c('0x6e')]();if(_['startsWith'](_0xfd598d[_0x533c('0x6d')],_0x533c('0x6f'))){if(_[_0x533c('0x18')](this[_0x533c('0xc')][_0xfd598d[_0x533c('0x1c')]]))this['applications'][_0xfd598d[_0x533c('0x1c')]]={};logger[_0x533c('0x3f')](_0x533c('0x70'),_0xfd598d[_0x533c('0x1c')],_0xfd598d[_0x533c('0x6b')],_0xfd598d[_0x533c('0x6d')]);var _0x1aa938=_0xfd598d[_0x533c('0x6d')][_0x533c('0x71')]('=');var _0x104964=_0x1aa938[0x0][_0x533c('0x72')](/cdr\((.*)\)/);if(_0x104964)this[_0x533c('0xc')][_0xfd598d[_0x533c('0x1c')]][_0x104964[0x1]]=_0x1aa938[0x1];}}}}catch(_0x452759){logger[_0x533c('0x2e')](_0x533c('0x73'),_0xfd598d[_0x533c('0x1c')],util[_0x533c('0x1d')](_0x452759,{'showHidden':![],'depth':null}));}};module['exports']=VoiceDialReport;
\ No newline at end of file
index d8ec17a..8da2577 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7323=['redis','defaults','socket.io-emitter','prototype','tail','sequence','queueReports','agents','voiceQueues','campaigns','variables','queuesummary','syncQueueSummary','bind','queuesummarycomplete','syncQueueCallerJoin','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','syncAgentComplete','agentconnect','syncAgentConnect','varset','syncVarSet','syncHangup','fullybooted','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopQueueShow','hasOwnProperty','isEmpty','talking','pTalking','waiting','queueStatusComplete','unlockRR','channels','switch','enqueue','Action','status','channel','catch','message','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','inspect','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','name','voice_queue_channel:save','emitVoiceQueueChannelRemove',']\x20sending\x20voice_queue_channel:remove\x20event:','queuecallerexitreason','voice_queue_channel:remove','voice_queue_presence:remove','emitVoiceQueueSummary','type','inbound','strategy','answered','available','loggedIn','sumDuration','sumHoldTime','total','unmanaged','Trunk','active','callerid','Interval','stringify','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','isUndefined','clearZombieChannels','queues','[voiceQueueReport][queues]','loopQueueSummary','flagQueueSummary','then','queue','info','[voiceQueueReport][queuesummary]\x20name:%s','countBy','callers','toNumber','loggedin','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','[voiceQueueReport][queuesummary]','syncQueueSummaryComplete','[voiceQueueReport][queuesummarycomplete]\x20event:','custom:queuesummarycomplete','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','merge','pick','keys','push','[%s][voiceQueueReport][queuecallerjoin]','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete','holdtime','originalposition','queuecallerabandon','ABANDONED','[%s][voiceQueueReport][queuecallerleave]','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','[%s][voiceQueueReport][agentconnect]','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentcomplete]','queuecallerabandonAt','assigned','lastAssignedTo','membername','queuecallerexit','queuecallerexitAt','transfer','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','toLowerCase','local/','linkedid','add','FORWARDTRANSFER','transfertype','FORWARD','transferexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','addVariable','variable','CONTINUE','TIMEOUT','timeout','queuecallerleaveAt','custom:timeout','value','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','isNil','includes','handleHangup','length','abandoned','diff','milliseconds','seconds','queuecallercompleteAt','lastevent','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','COMPLETEDBYAGENT','hangup','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','cause-txt','cause','[%s][voiceQueueReport][hangup]','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfereruniqueid','ATTENDEDTRANSFER','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','transferid','secondtransfererexten','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','extension','BlindTransfer','transfererchannel','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','[%s][voiceQueueReport][musiconholdstart]','[%s][voiceQueueReport][musiconholdstop]','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','mohtime','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','application','set','applicationdata','appdata','cdr(','match','[%s][voiceQueueReport][newexten]','exports','lodash','moment','util','md5','ioredis','../../../config/environment','../../../config/logger','../model/queueReport'];(function(_0x261b8a,_0x553ec4){var _0x3455e8=function(_0xdf10d4){while(--_0xdf10d4){_0x261b8a['push'](_0x261b8a['shift']());}};_0x3455e8(++_0x553ec4);}(_0x7323,0x1de));var _0x3732=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0x7323[_0x580576];return _0x3f55a0;};'use strict';var _=require(_0x3732('0x0'));var moment=require(_0x3732('0x1'));var util=require(_0x3732('0x2'));var md5=require(_0x3732('0x3'));var Redis=require(_0x3732('0x4'));var config=require(_0x3732('0x5'));var logger=require(_0x3732('0x6'))('ami');var ami=require('../ami');var QueueReport=require(_0x3732('0x7'));config[_0x3732('0x8')]=_[_0x3732('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x3732('0xa'))(new Redis(config[_0x3732('0x8')]));var Sequence=function(){};Sequence[_0x3732('0xb')]['enqueue']=function(_0x2d2435){this[_0x3732('0xc')]=this[_0x3732('0xc')]?this[_0x3732('0xc')]['finally'](_0x2d2435):_0x2d2435();};function VoiceQueueReport(_0x1efbd6){this[_0x3732('0xd')]=new Sequence();this[_0x3732('0xe')]={};this[_0x3732('0xf')]=_0x1efbd6['agents'];this['channels']=_0x1efbd6['queueChannels'];this['voiceQueues']=_0x1efbd6[_0x3732('0x10')];this['flagQueueSummary']=!![];this[_0x3732('0x11')]=_0x1efbd6['campaigns'];this[_0x3732('0x12')]={};ami['on'](_0x3732('0x13'),this[_0x3732('0x14')][_0x3732('0x15')](this));ami['on'](_0x3732('0x16'),this['syncQueueSummaryComplete']['bind'](this));ami['on']('queuecallerjoin',this[_0x3732('0x17')][_0x3732('0x15')](this));ami['on']('queuecallerabandon',this[_0x3732('0x18')]['bind'](this));ami['on'](_0x3732('0x19'),this[_0x3732('0x1a')][_0x3732('0x15')](this));ami['on'](_0x3732('0x1b'),this[_0x3732('0x1c')][_0x3732('0x15')](this));ami['on'](_0x3732('0x1d'),this[_0x3732('0x1e')][_0x3732('0x15')](this));ami['on'](_0x3732('0x1f'),this[_0x3732('0x20')][_0x3732('0x15')](this));ami['on']('hangup',this[_0x3732('0x21')][_0x3732('0x15')](this));ami['on'](_0x3732('0x22'),this['syncFullyBooted']['bind'](this));ami['on'](_0x3732('0x23'),this[_0x3732('0x24')][_0x3732('0x15')](this));ami['on'](_0x3732('0x25'),this[_0x3732('0x26')][_0x3732('0x15')](this));ami['on'](_0x3732('0x27'),this[_0x3732('0x28')]['bind'](this));ami['on'](_0x3732('0x29'),this[_0x3732('0x2a')]['bind'](this));this['loopQueueSummary']();this[_0x3732('0x2b')]();}function clearChannels(_0x192e3d){if(!_['isEmpty'](_0x192e3d)){for(var _0x48ae5a in _0x192e3d){if(_0x192e3d[_0x3732('0x2c')](_0x48ae5a)){delete _0x192e3d[_0x48ae5a];}}}}function clearCampaigns(_0x5779fd){if(!_[_0x3732('0x2d')](_0x5779fd)){for(var _0x387f4e in _0x5779fd){if(_0x5779fd['hasOwnProperty'](_0x387f4e)){_0x5779fd[_0x387f4e]['originated']=0x0;}}}}function clearVoiceQueues(_0x43313d){if(!_[_0x3732('0x2d')](_0x43313d)){for(var _0x3dbb2c in _0x43313d){if(_0x43313d[_0x3732('0x2c')](_0x3dbb2c)){_0x43313d[_0x3dbb2c]['originated']=0x0;_0x43313d[_0x3dbb2c][_0x3732('0x2e')]=0x0;_0x43313d[_0x3dbb2c][_0x3732('0x2f')]=0x0;_0x43313d[_0x3dbb2c][_0x3732('0x30')]=0x0;_0x43313d[_0x3dbb2c][_0x3732('0x31')]=!![];}}}}function clearAgentBooked(_0x16614d){if(!_[_0x3732('0x2d')](_0x16614d)){for(var _0x5eecf8 in _0x16614d){if(_0x16614d[_0x3732('0x2c')](_0x5eecf8)){_0x16614d[_0x5eecf8][_0x3732('0x32')]=!![];}}}}VoiceQueueReport[_0x3732('0xb')]['clearZombieChannels']=function(){var _0x60c7c=this;for(var _0x45648d in this[_0x3732('0x33')]){if(this[_0x3732('0x33')]['hasOwnProperty'](_0x45648d)&&!this[_0x3732('0x33')][_0x45648d][_0x3732('0x34')]){this[_0x3732('0xd')][_0x3732('0x35')](function(){if(!_['isNil'](_0x60c7c[_0x3732('0x33')][_0x45648d])){return ami[_0x3732('0x36')]({'action':_0x3732('0x37'),'channel':_0x60c7c[_0x3732('0x33')][_0x45648d][_0x3732('0x38')]})[_0x3732('0x39')](function(_0x63d8f3){if(_0x63d8f3[_0x3732('0x3a')]===_0x3732('0x3b')){setTimeout(function(){if(_0x60c7c['channels'][_0x45648d]){delete _0x60c7c['channels'][_0x45648d];logger[_0x3732('0x3c')](_0x3732('0x3d'),_0x45648d,util['inspect'](_0x63d8f3,{'showHidden':![],'depth':null}));}if(_0x60c7c[_0x3732('0xe')][_0x45648d]){delete _0x60c7c['queueReports'][_0x45648d];logger[_0x3732('0x3c')]('[%s][voiceQueueReport][checkQueueReport]',_0x45648d,util[_0x3732('0x3e')](_0x63d8f3,{'showHidden':![],'depth':null}));}if(_0x60c7c[_0x3732('0x12')][_0x45648d]){delete _0x60c7c[_0x3732('0x12')][_0x45648d];logger[_0x3732('0x3c')](_0x3732('0x3f'),_0x45648d,util[_0x3732('0x3e')](_0x63d8f3,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x3732('0xb')]['syncFullyBooted']=function(){logger['error'](_0x3732('0x40'));clearChannels(this[_0x3732('0x33')]);this[_0x3732('0x41')](this[_0x3732('0xe')]);clearAgentBooked(this[_0x3732('0xf')]);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this[_0x3732('0x11')]);};VoiceQueueReport[_0x3732('0xb')][_0x3732('0x41')]=function(_0x77d6bd){var _0x11ece7=this;if(!_[_0x3732('0x2d')](_0x77d6bd)){for(var _0x2d387e in _0x77d6bd){if(_0x77d6bd[_0x3732('0x2c')](_0x2d387e)){_0x11ece7['emitVoiceQueueChannelRemove'](_0x77d6bd[_0x2d387e],_0x3732('0x42'));delete _0x77d6bd[_0x2d387e];}}}};VoiceQueueReport[_0x3732('0xb')][_0x3732('0x43')]=function(_0x5dff09,_0x262541,_0x37e875){io['to'](_0x5dff09)['emit'](_0x262541,_0x37e875);};VoiceQueueReport[_0x3732('0xb')][_0x3732('0x44')]=function(_0x200a39,_0x55fabe){logger[_0x3732('0x45')](_0x3732('0x46')+_0x55fabe+_0x3732('0x47'),_0x200a39[_0x3732('0x48')],util[_0x3732('0x3e')](_0x200a39,{'showHidden':![],'depth':null}));this['emit'](util[_0x3732('0x49')](_0x3732('0x4a'),_0x200a39[_0x3732('0x4b')]),_0x3732('0x4c'),_0x200a39);io[_0x3732('0x43')]('voice_queue_presence:save',_0x200a39);};VoiceQueueReport[_0x3732('0xb')][_0x3732('0x4d')]=function(_0x28650c,_0x552235){logger[_0x3732('0x45')](_0x3732('0x46')+_0x552235+_0x3732('0x4e'),_0x28650c[_0x3732('0x48')],util['inspect'](_0x28650c,{'showHidden':![],'depth':null}));if(_0x28650c[_0x3732('0x4f')]==='ATTENDEDTRANSFER')return;this[_0x3732('0x43')](util['format'](_0x3732('0x4a'),_0x28650c[_0x3732('0x4b')]),_0x3732('0x50'),_0x28650c);io[_0x3732('0x43')](_0x3732('0x51'),_0x28650c);};VoiceQueueReport[_0x3732('0xb')][_0x3732('0x52')]=function(_0x31b066,_0x43a209){if(_0x31b066[_0x3732('0x53')]===_0x3732('0x54')){var _0x39eb05={'id':_0x31b066['id'],'name':_0x31b066[_0x3732('0x4b')],'strategy':_0x31b066[_0x3732('0x55')],'answered':_0x31b066[_0x3732('0x56')],'available':_0x31b066[_0x3732('0x57')],'loggedIn':_0x31b066[_0x3732('0x58')],'pTalking':_0x31b066[_0x3732('0x2f')],'sumBillable':_0x31b066['sumBillable'],'sumDuration':_0x31b066[_0x3732('0x59')],'sumHoldTime':_0x31b066[_0x3732('0x5a')]||0x0,'talking':_0x31b066[_0x3732('0x2e')],'total':_0x31b066[_0x3732('0x5b')],'type':_0x31b066[_0x3732('0x53')],'unmanaged':_0x31b066[_0x3732('0x5c')],'abandoned':_0x31b066['abandoned'],'waiting':_0x31b066[_0x3732('0x30')]};if(_0x31b066[_0x3732('0x5d')]){_0x39eb05[_0x3732('0x5d')]={'id':_0x31b066[_0x3732('0x5d')]['id'],'name':_0x31b066[_0x3732('0x5d')][_0x3732('0x4b')],'active':_0x31b066[_0x3732('0x5d')][_0x3732('0x5e')],'callerid':_0x31b066['Trunk'][_0x3732('0x5f')]};}if(_0x31b066[_0x3732('0x60')]){_0x39eb05[_0x3732('0x60')]={'id':_0x31b066[_0x3732('0x60')]['id'],'name':_0x31b066[_0x3732('0x60')][_0x3732('0x4b')]};}var _0xba7747=md5(JSON[_0x3732('0x61')](_0x39eb05));if(_0x31b066['md5']!==_0xba7747){_0x31b066['md5']=_0xba7747;logger[_0x3732('0x45')](_0x3732('0x62')+_0x43a209+_0x3732('0x63'),util[_0x3732('0x3e')](_0x39eb05,{'showHidden':![],'depth':null}));this['emit'](util[_0x3732('0x49')](_0x3732('0x4a'),_0x39eb05['name']),_0x3732('0x64'),_0x39eb05);}}};VoiceQueueReport['prototype'][_0x3732('0x65')]=function(_0x2d74d5){return _0x2d74d5!==null&&!_[_0x3732('0x66')](_0x2d74d5);};VoiceQueueReport[_0x3732('0xb')][_0x3732('0x2b')]=function(){var _0x27e0da=this;setInterval(function(){_0x27e0da[_0x3732('0x67')]();ami[_0x3732('0x36')]({'action':_0x3732('0x68')})[_0x3732('0x39')](function(_0x588caa){logger[_0x3732('0x3c')](_0x3732('0x69'),util[_0x3732('0x3e')](_0x588caa,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport['prototype'][_0x3732('0x6a')]=function(){var _0x5ac24a=this;setInterval(function(){if(_0x5ac24a[_0x3732('0x6b')]){return ami[_0x3732('0x36')]({'action':_0x3732('0x13')})[_0x3732('0x6c')](function(){_0x5ac24a[_0x3732('0x6b')]=![];})[_0x3732('0x39')](function(_0x482083){logger['error']('[voiceQueueReport][queuesummary]',util[_0x3732('0x3e')](_0x482083,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport['prototype'][_0x3732('0x14')]=function(_0x35e0b5){try{if(this['isNotNull'](_0x35e0b5)&&this[_0x3732('0x65')](_0x35e0b5[_0x3732('0x6d')])){logger[_0x3732('0x45')]('[voiceQueueReport][queuesummary]\x20event:',util[_0x3732('0x3e')](_0x35e0b5,{'showHidden':![],'depth':null}));if(this[_0x3732('0x10')][_0x35e0b5[_0x3732('0x6d')]]){logger[_0x3732('0x6e')](_0x3732('0x6f'),_0x35e0b5[_0x3732('0x6d')]);var _0x3a6ca4=_[_0x3732('0x70')](this[_0x3732('0x33')],'queue')[_0x35e0b5[_0x3732('0x6d')]]||0x0;var _0x105242=_0x3a6ca4-_0x35e0b5[_0x3732('0x71')];if(this[_0x3732('0x10')][_0x35e0b5[_0x3732('0x6d')]][_0x3732('0x30')]!==_[_0x3732('0x72')](_0x35e0b5[_0x3732('0x71')])||this[_0x3732('0x10')][_0x35e0b5[_0x3732('0x6d')]]['loggedIn']!==_[_0x3732('0x72')](_0x35e0b5['loggedin'])||this[_0x3732('0x10')][_0x35e0b5[_0x3732('0x6d')]][_0x3732('0x57')]!==_[_0x3732('0x72')](_0x35e0b5[_0x3732('0x57')])||this[_0x3732('0x10')][_0x35e0b5[_0x3732('0x6d')]]['talking']!==_0x105242){this[_0x3732('0x10')][_0x35e0b5[_0x3732('0x6d')]][_0x3732('0x30')]=_['toNumber'](_0x35e0b5[_0x3732('0x71')]);this['voiceQueues'][_0x35e0b5[_0x3732('0x6d')]]['loggedIn']=_[_0x3732('0x72')](_0x35e0b5[_0x3732('0x73')]);this[_0x3732('0x10')][_0x35e0b5[_0x3732('0x6d')]][_0x3732('0x57')]=_[_0x3732('0x72')](_0x35e0b5['available']);this[_0x3732('0x10')][_0x35e0b5[_0x3732('0x6d')]][_0x3732('0x2e')]=_0x105242>0x0?_0x105242:0x0;this['voiceQueues'][_0x35e0b5[_0x3732('0x6d')]][_0x3732('0x2e')]=this['voiceQueues'][_0x35e0b5[_0x3732('0x6d')]][_0x3732('0x2e')]>_['toNumber'](_0x35e0b5[_0x3732('0x73')])?_['toNumber'](_0x35e0b5[_0x3732('0x73')]):this['voiceQueues'][_0x35e0b5[_0x3732('0x6d')]][_0x3732('0x2e')];this[_0x3732('0x52')](this[_0x3732('0x10')][_0x35e0b5['queue']],'queuesummary');}logger[_0x3732('0x45')](_0x3732('0x74'),util[_0x3732('0x3e')](this[_0x3732('0x10')][_0x35e0b5[_0x3732('0x6d')]],{'showHidden':![],'depth':null}));ami[_0x3732('0x43')]('custom:queuesummary',this['voiceQueues'][_0x35e0b5['queue']]);}}}catch(_0x2afb0c){logger[_0x3732('0x3c')](_0x3732('0x75'),util[_0x3732('0x3e')](_0x2afb0c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3732('0xb')][_0x3732('0x76')]=function(_0x175539){logger[_0x3732('0x45')](_0x3732('0x77'),util[_0x3732('0x3e')](_0x175539,{'showHidden':![],'depth':null}));ami[_0x3732('0x43')](_0x3732('0x78'),{});this[_0x3732('0x6b')]=!![];};VoiceQueueReport[_0x3732('0xb')][_0x3732('0x17')]=function(_0x265ad1){try{if(this[_0x3732('0x65')](_0x265ad1)){logger[_0x3732('0x45')]('[%s][voiceQueueReport][queuecallerjoin]',_0x265ad1[_0x3732('0x48')],util['inspect'](_0x265ad1,{'showHidden':![],'depth':null}));if(_['isUndefined'](this[_0x3732('0xe')][_0x265ad1['uniqueid']]))this['queueReports'][_0x265ad1['uniqueid']]=[];if(_[_0x3732('0x66')](this[_0x3732('0x33')][_0x265ad1['uniqueid']]))this['channels'][_0x265ad1[_0x3732('0x48')]]={};var _0x40d589=new QueueReport();_0x40d589['name']=_0x265ad1[_0x3732('0x6d')];_0x40d589['type']=this[_0x3732('0x10')][_0x40d589[_0x3732('0x4b')]]&&this[_0x3732('0x10')][_0x40d589['name']]['type']?this['voiceQueues'][_0x40d589[_0x3732('0x4b')]][_0x3732('0x53')]||_0x3732('0x54'):'inbound';_0x40d589[_0x3732('0x6d')]=_0x265ad1[_0x3732('0x6d')];_0x40d589[_0x3732('0x79')]=moment()['format'](_0x3732('0x7a'));_0x40d589[_0x3732('0x7b')]=_0x265ad1[_0x3732('0x7b')];_0x40d589[_0x3732('0x7c')]=_0x265ad1[_0x3732('0x7c')];_0x40d589[_0x3732('0x48')]=_0x265ad1[_0x3732('0x48')];_0x40d589[_0x3732('0x7d')]=this[_0x3732('0x33')][_0x265ad1[_0x3732('0x48')]][_0x3732('0x7d')];logger['info']('[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s',_0x40d589[_0x3732('0x4b')],_0x40d589['type']);_[_0x3732('0x7e')](_0x40d589,_[_0x3732('0x7f')](_0x265ad1,_[_0x3732('0x80')](_0x40d589)));this['queueReports'][_0x265ad1[_0x3732('0x48')]][_0x3732('0x81')](_0x40d589);this[_0x3732('0x33')][_0x265ad1[_0x3732('0x48')]]=_0x40d589;this[_0x3732('0x44')](_0x40d589,'queuecallerjoin');}}catch(_0x379265){logger['error'](_0x3732('0x82'),_0x265ad1[_0x3732('0x48')],util['inspect'](_0x379265,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3732('0xb')][_0x3732('0x18')]=function(_0x549344){try{if(this[_0x3732('0x65')](_0x549344)){logger[_0x3732('0x45')](_0x3732('0x83'),_0x549344[_0x3732('0x48')],util[_0x3732('0x3e')](_0x549344,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x549344[_0x3732('0x48')]]){var _0x38fa53=_[_0x3732('0x84')](this[_0x3732('0xe')][_0x549344[_0x3732('0x48')]]);_0x38fa53[_0x3732('0x85')]=![];_0x38fa53['queuecallercompleteAt']=null;_0x38fa53['holdtime']=_0x549344[_0x3732('0x86')];_0x38fa53[_0x3732('0x87')]=_0x549344[_0x3732('0x87')];_0x38fa53[_0x3732('0x88')]=!![];_0x38fa53['queuecallerabandonAt']=moment()[_0x3732('0x49')](_0x3732('0x7a'));_0x38fa53[_0x3732('0x4f')]=_0x3732('0x89');_0x38fa53['lastAssignedTo']=null;logger[_0x3732('0x6e')]('[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s',_0x38fa53[_0x3732('0x4b')],_0x38fa53[_0x3732('0x53')]);this[_0x3732('0x33')][_0x549344[_0x3732('0x48')]]=_0x38fa53;this[_0x3732('0x4d')](_0x38fa53,_0x3732('0x88'));}}}catch(_0x44dcba){logger[_0x3732('0x3c')](_0x3732('0x83'),_0x549344[_0x3732('0x48')],util[_0x3732('0x3e')](_0x44dcba,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x3732('0x1a')]=function(_0x305c2e){try{if(this[_0x3732('0x65')](_0x305c2e)){logger[_0x3732('0x45')](_0x3732('0x8a'),_0x305c2e[_0x3732('0x48')],util[_0x3732('0x3e')](_0x305c2e,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x305c2e[_0x3732('0x48')]]){var _0x35d2b1=_[_0x3732('0x84')](this[_0x3732('0xe')][_0x305c2e[_0x3732('0x48')]]);_0x35d2b1['queuecallerleaveAt']=moment()[_0x3732('0x49')](_0x3732('0x7a'));_0x35d2b1[_0x3732('0x8b')]=_0x305c2e[_0x3732('0x8b')];_0x35d2b1[_0x3732('0x8c')]=_0x305c2e[_0x3732('0x8c')];logger[_0x3732('0x6e')](_0x3732('0x8d'),_0x35d2b1[_0x3732('0x4b')],_0x35d2b1[_0x3732('0x53')],_0x305c2e[_0x3732('0x8b')],_0x305c2e[_0x3732('0x8c')]);this[_0x3732('0x33')][_0x305c2e[_0x3732('0x48')]]=_0x35d2b1;this[_0x3732('0x44')](_0x35d2b1,_0x3732('0x19'));}}}catch(_0x4d4604){logger[_0x3732('0x3c')](_0x3732('0x8a'),_0x305c2e[_0x3732('0x48')],util[_0x3732('0x3e')](_0x4d4604,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x3732('0x1e')]=function(_0x55eeb2){try{if(this['isNotNull'](_0x55eeb2)){logger['debug'](_0x3732('0x8e'),_0x55eeb2[_0x3732('0x48')],util[_0x3732('0x3e')](_0x55eeb2,{'showHidden':![],'depth':null}));if(this[_0x3732('0xe')][_0x55eeb2['uniqueid']]){var _0x1fddf3=_[_0x3732('0x84')](this[_0x3732('0xe')][_0x55eeb2['uniqueid']]);_0x1fddf3[_0x3732('0x85')]=!![];_0x1fddf3[_0x3732('0x4f')]='COMPLETEDBYAGENT';logger[_0x3732('0x6e')](_0x3732('0x8f'),_0x1fddf3[_0x3732('0x4b')],_0x1fddf3[_0x3732('0x53')]);}}}catch(_0x283c90){logger[_0x3732('0x3c')]('[%s][voiceQueueReport][agentconnect]',_0x55eeb2['uniqueid'],util[_0x3732('0x3e')](_0x283c90,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x3732('0x1c')]=function(_0x131716){try{if(this[_0x3732('0x65')](_0x131716)){logger[_0x3732('0x45')](_0x3732('0x90'),_0x131716['uniqueid'],util[_0x3732('0x3e')](_0x131716,{'showHidden':![],'depth':null}));if(this[_0x3732('0xe')][_0x131716['uniqueid']]){var _0x41cabc=_['last'](this[_0x3732('0xe')][_0x131716[_0x3732('0x48')]]);_0x41cabc[_0x3732('0x88')]=![];_0x41cabc[_0x3732('0x91')]=null;_0x41cabc[_0x3732('0x92')]=!![];_0x41cabc[_0x3732('0x93')]=_0x131716[_0x3732('0x94')];_0x41cabc[_0x3732('0x86')]=_0x131716['holdtime'];_0x41cabc[_0x3732('0x85')]=!![];_0x41cabc[_0x3732('0x95')]=![];_0x41cabc[_0x3732('0x96')]=null;if(!_0x41cabc[_0x3732('0x97')]){if(_0x131716['reason']=='transfer'){_0x41cabc[_0x3732('0x4f')]=_0x3732('0x98');logger['info'](_0x3732('0x99'),_0x41cabc[_0x3732('0x4b')],_0x41cabc['type']);}else{if(_[_0x3732('0x9a')](_0x131716[_0x3732('0x38')][_0x3732('0x9b')](),_0x3732('0x9c'))){if(this['queueReports'][_0x131716[_0x3732('0x9d')]]){var _0x21465c=_[_0x3732('0x84')](this[_0x3732('0xe')][_0x131716[_0x3732('0x9d')]]);_0x21465c['queuecallercomplete']=![];_0x21465c[_0x3732('0x95')]=!![];_0x21465c[_0x3732('0x96')]=moment(_0x41cabc[_0x3732('0x79')])[_0x3732('0x9e')](_0x131716[_0x3732('0x86')],'seconds')[_0x3732('0x49')](_0x3732('0x7a'));_0x21465c[_0x3732('0x4f')]=_0x3732('0x9f');_0x21465c['transfer']=!![];_0x21465c[_0x3732('0xa0')]=_0x3732('0xa1');_0x21465c[_0x3732('0xa2')]=_0x131716['destexten'];_0x21465c[_0x3732('0xa3')]=_0x131716[_0x3732('0x48')];logger[_0x3732('0x6e')](_0x3732('0xa4'),_0x21465c[_0x3732('0x4b')],_0x21465c[_0x3732('0x53')]);var _0x2da2c8=this[_0x3732('0xe')][_0x131716[_0x3732('0x9d')]];this['queueReports'][_0x131716[_0x3732('0x9d')]]=this['queueReports'][_0x131716[_0x3732('0x48')]];this[_0x3732('0xe')][_0x131716[_0x3732('0x48')]]=_0x2da2c8;}}else{_0x41cabc['queuecallerexitreason']=_0x3732('0xa5')+_0x131716['reason'][_0x3732('0xa6')]();logger[_0x3732('0x6e')](_0x3732('0xa7'),_0x41cabc['name'],_0x41cabc[_0x3732('0x53')],_0x41cabc[_0x3732('0x4f')]);}}}this[_0x3732('0x33')][_0x131716['uniqueid']]=_0x41cabc;this[_0x3732('0x4d')](_0x41cabc,_0x3732('0x1b'));}}}catch(_0x456a5d){logger['error'](_0x3732('0x90'),_0x131716['uniqueid'],util[_0x3732('0x3e')](_0x456a5d,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3732('0xb')]['syncVarSet']=function(_0x4dff36){try{if(this[_0x3732('0x65')](_0x4dff36)){logger[_0x3732('0x45')]('[%s][voiceQueueReport][varset]',_0x4dff36['uniqueid'],util['inspect'](_0x4dff36,{'showHidden':![],'depth':null}));this[_0x3732('0xa8')](_0x4dff36['uniqueid'],_[_0x3732('0x80')](_0x4dff36[_0x3732('0xa9')])[0x0],_0x4dff36['value']);if(this['queueReports'][_0x4dff36[_0x3732('0x48')]]){var _0x347b6d=_[_0x3732('0x84')](this['queueReports'][_0x4dff36[_0x3732('0x48')]]);if(_0x347b6d){if(this[_0x3732('0x65')](_0x4dff36[_0x3732('0xa9')])&&this[_0x3732('0x65')](_0x4dff36[_0x3732('0xa9')]['queuestatus'])){switch(_0x4dff36['value']){case _0x3732('0xaa'):_0x347b6d[_0x3732('0x95')]=![];_0x347b6d[_0x3732('0x96')]=null;break;case _0x3732('0xab'):_0x347b6d['lastevent']=_0x3732('0xac');_0x347b6d['queuecallerexit']=!![];_0x347b6d['queuecallerexitAt']=moment()[_0x3732('0x49')](_0x3732('0x7a'));_0x347b6d[_0x3732('0xad')]=moment()[_0x3732('0x49')]('YYYY-MM-DD\x20HH:mm:ss');logger['debug']('[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:',_0x4dff36['uniqueid'],util[_0x3732('0x3e')](_0x347b6d,{'showHidden':![],'depth':null}));ami[_0x3732('0x43')](_0x3732('0xae'),_0x347b6d);break;default:_0x347b6d[_0x3732('0x95')]=!![];_0x347b6d[_0x3732('0x96')]=moment()[_0x3732('0x49')](_0x3732('0x7a'));_0x347b6d[_0x3732('0xad')]=moment()['format'](_0x3732('0x7a'));}_0x347b6d[_0x3732('0x88')]=![];_0x347b6d['queuecallerabandonAt']=null;_0x347b6d[_0x3732('0x4f')]=_0x4dff36[_0x3732('0xaf')];this[_0x3732('0x33')][_0x4dff36[_0x3732('0x48')]]=_0x347b6d;this['emitVoiceQueueChannelRemove'](_0x347b6d,_0x3732('0x1f'));}else if(this[_0x3732('0x65')](_0x4dff36[_0x3732('0xa9')])&&this[_0x3732('0x65')](_0x4dff36[_0x3732('0xa9')][_0x3732('0xb0')])){if(!_0x347b6d[_0x3732('0x88')]){_0x347b6d['queuecallerexit']=!![];_0x347b6d[_0x3732('0x96')]=moment()[_0x3732('0x49')](_0x3732('0x7a'));_0x347b6d[_0x3732('0x4f')]=_0x3732('0xb1');_0x347b6d[_0x3732('0xad')]=moment()[_0x3732('0x49')](_0x3732('0x7a'));this[_0x3732('0x33')][_0x4dff36['uniqueid']]=_0x347b6d;}}logger[_0x3732('0x6e')](_0x3732('0xb2'),_0x4dff36['uniqueid'],_0x347b6d[_0x3732('0x4b')],_0x347b6d[_0x3732('0x53')],_['keys'](_0x4dff36['variable'])[0x0],_0x4dff36[_0x3732('0xaf')]);_0x347b6d[_0x3732('0x12')]=this[_0x3732('0x12')][_0x4dff36[_0x3732('0x48')]];}}}}catch(_0x1fde64){logger[_0x3732('0x3c')]('[%s][voiceQueueReport][varset]',_0x4dff36[_0x3732('0x48')],util[_0x3732('0x3e')](_0x1fde64,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x3732('0xa8')]=function(_0xe459bc,_0x547edf,_0x48f83b){var _0x2bb433=['rtpaudioqos','rtpaudioqosbridged',_0x3732('0xb3'),_0x3732('0xb4'),_0x3732('0xb5'),_0x3732('0xb6'),_0x3732('0xb7'),'rtpaudioqosrttbridged',_0x3732('0xb8'),'sipuri',_0x3732('0xb9'),_0x3732('0xba'),_0x3732('0xbb'),_0x3732('0xbc'),_0x3732('0xbd'),_0x3732('0xbe'),_0x3732('0x94'),'memberpenalty','memberrealtime'];if(!_[_0x3732('0xbf')](_0x547edf)&&!_[_0x3732('0xc0')](_0x2bb433,_0x547edf)){if(_[_0x3732('0x66')](this[_0x3732('0x12')][_0xe459bc])){this[_0x3732('0x12')][_0xe459bc]={};}this[_0x3732('0x12')][_0xe459bc][_0x547edf]=_0x48f83b;}};VoiceQueueReport['prototype'][_0x3732('0xc1')]=function(_0x19ff41,_0x26da23,_0x4f72a5){var _0x3e68a9={};for(var _0x2b6595=0x0;_0x2b6595<this['queueReports'][_0x19ff41][_0x3732('0xc2')];_0x2b6595+=0x1){_0x3e68a9=this[_0x3732('0xe')][_0x19ff41][_0x2b6595];if(this['voiceQueues'][_0x3e68a9[_0x3732('0x6d')]]){if(_0x3e68a9[_0x3732('0x95')]&&_0x3e68a9[_0x3732('0x97')]!=!![]){this[_0x3732('0x10')][_0x3e68a9[_0x3732('0x6d')]][_0x3732('0x5c')]+=0x1;}if(_0x3e68a9['queuecallerabandon']){this[_0x3732('0x10')][_0x3e68a9['queue']][_0x3732('0xc3')]+=0x1;}this[_0x3732('0x10')][_0x3e68a9['queue']][_0x3732('0x5a')]+=moment(_0x3e68a9[_0x3732('0xad')])[_0x3732('0xc4')](_0x3e68a9[_0x3732('0x79')],'seconds')||0x0;if(_0x2b6595===this['queueReports'][_0x19ff41]['length']-0x1){this[_0x3732('0x10')][_0x3e68a9[_0x3732('0x6d')]][_0x3732('0x59')]+=moment()[_0x3732('0xc5')](0x0)[_0x3732('0xc4')](_0x3e68a9['queuecallerjoinAt'],_0x3732('0xc6'));this['voiceQueues'][_0x3e68a9[_0x3732('0x6d')]][_0x3732('0x5b')]+=0x1;if(_0x3e68a9[_0x3732('0x85')]){this[_0x3732('0x10')][_0x3e68a9['queue']][_0x3732('0x56')]+=0x1;this[_0x3732('0x10')][_0x3e68a9[_0x3732('0x6d')]]['sumBillable']+=moment()[_0x3732('0xc5')](0x0)[_0x3732('0xc4')](_0x3e68a9[_0x3732('0xad')],_0x3732('0xc6'));_0x3e68a9[_0x3732('0xc7')]=moment()[_0x3732('0x49')](_0x3732('0x7a'));_0x3e68a9[_0x3732('0x95')]=![];_0x3e68a9[_0x3732('0x96')]=null;}if(_0x3e68a9[_0x3732('0x95')]&&_0x3e68a9['transfer']!=!![]){_0x3e68a9[_0x3732('0xc8')]=_0x3732('0x5c');logger[_0x3732('0x45')](_0x3732('0xc9'),_0x19ff41,util[_0x3732('0x3e')](_0x3e68a9,{'showHidden':![],'depth':null}));ami['emit']('custom:queuecallerunmanaged',_0x3e68a9);}if(_0x3e68a9[_0x3732('0x88')]){_0x3e68a9[_0x3732('0xc8')]=_0x3732('0xc3');logger[_0x3732('0x45')]('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:',_0x19ff41,util[_0x3732('0x3e')](_0x3e68a9,{'showHidden':![],'depth':null}));ami[_0x3732('0x43')]('custom:queuecallerabandon',_0x3e68a9);}}else{this['voiceQueues'][_0x3e68a9[_0x3732('0x6d')]][_0x3732('0x59')]+=this[_0x3732('0x10')][_0x3e68a9['queue']][_0x3732('0x5a')];}logger['info'](_0x3732('0xca'),_0x19ff41,_0x3e68a9[_0x3732('0x4b')],_0x3e68a9['type'],_0x26da23);if(_0x4f72a5&&_0x3e68a9['queuecallerexitreason']==='ATTENDEDTRANSFER'){_0x3e68a9[_0x3732('0x4f')]=_0x3732('0xcb');}this['channels'][_0x19ff41]=_0x3e68a9;this[_0x3732('0x4d')](_0x3e68a9,_0x3732('0xcc'));this[_0x3732('0x52')](this['voiceQueues'][_0x3e68a9['queue']],_0x3732('0xcc'));}}logger[_0x3732('0x45')](_0x3732('0xcd'),_0x19ff41,util['inspect'](this[_0x3732('0xe')][_0x19ff41],{'showHidden':![],'depth':null}));ami[_0x3732('0x43')](_0x3732('0xce'),this['queueReports'][_0x19ff41]);if(_0x3e68a9[_0x3732('0x4f')]==='ATTENDEDTRANSFER')return;delete this['queueReports'][_0x19ff41];delete this[_0x3732('0x33')][_0x19ff41];if(this[_0x3732('0x12')][_0x19ff41]){delete this[_0x3732('0x12')][_0x19ff41];}};VoiceQueueReport['prototype'][_0x3732('0x21')]=function(_0x568c3b){try{if(this[_0x3732('0x65')](_0x568c3b)){logger['debug']('[%s][voiceQueueReport][hangup]',_0x568c3b['uniqueid'],util['inspect'](_0x568c3b,{'showHidden':![],'depth':null}));if(this[_0x3732('0xe')][_0x568c3b[_0x3732('0x48')]]){return this['handleHangup'](_0x568c3b[_0x3732('0x48')],_0x568c3b[_0x3732('0xcf')]);}if(this[_0x3732('0xe')][_0x568c3b[_0x3732('0x9d')]]){if(_0x568c3b[_0x3732('0xd0')]==='21'){return;}return this[_0x3732('0xc1')](_0x568c3b[_0x3732('0x9d')],_0x568c3b[_0x3732('0xcf')],!![]);}var _0x43a838=Object['keys'](this['queueReports']);for(var _0x2bf800=0x0;_0x2bf800<_0x43a838['length'];_0x2bf800++){var _0x1d86e3=_[_0x3732('0x84')](this[_0x3732('0xe')][_0x43a838[_0x2bf800]]);if(_0x1d86e3&&_0x1d86e3['transferid']===_0x568c3b['uniqueid']){return this[_0x3732('0xc1')](_0x1d86e3[_0x3732('0x48')],_0x568c3b[_0x3732('0xcf')],!![]);}}}}catch(_0x58e978){logger['error'](_0x3732('0xd1'),_0x568c3b['uniqueid'],util[_0x3732('0x3e')](_0x58e978,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x3732('0x28')]=function(_0x7566f){try{if(this['isNotNull'](_0x7566f)){logger[_0x3732('0x45')](_0x3732('0xd2'),_0x7566f[_0x3732('0x48')],util['inspect'](_0x7566f,{'showHidden':![],'depth':null}));var _0xfb8303;var _0x171eb7;var _0x478711;if(this[_0x3732('0xe')][_0x7566f['transfereeuniqueid']]){_0xfb8303=_[_0x3732('0x84')](this['queueReports'][_0x7566f[_0x3732('0xd3')]]);_0xfb8303[_0x3732('0xa2')]=_0x7566f['secondtransfererexten'];_0xfb8303[_0x3732('0xa3')]=_0x7566f[_0x3732('0xd4')];_0xfb8303[_0x3732('0x4f')]=_0x3732('0xd5');_0xfb8303[_0x3732('0x97')]=!![];_0xfb8303[_0x3732('0xa0')]=_0x3732('0xd6');if(this[_0x3732('0xe')][_0x7566f[_0x3732('0xd4')]]){_0x478711=this[_0x3732('0xe')][_0x7566f[_0x3732('0xd4')]];this['queueReports'][_0x7566f[_0x3732('0xd4')]]=this[_0x3732('0xe')][_0x7566f[_0x3732('0xd3')]];this[_0x3732('0xe')][_0x7566f[_0x3732('0xd3')]]=_0x478711;_0x171eb7=_[_0x3732('0x84')](this[_0x3732('0xe')][_0x7566f[_0x3732('0xd3')]]);_0x171eb7['switch']=!![];}logger['info'](_0x3732('0xd7'),_0x7566f[_0x3732('0x48')],_0xfb8303[_0x3732('0x4b')],_0xfb8303[_0x3732('0x53')],_0xfb8303['transferexten'],_0xfb8303['transferuniqueid']);}else if(this['queueReports'][_0x7566f[_0x3732('0xd8')]]){_0xfb8303=_[_0x3732('0x84')](this[_0x3732('0xe')][_0x7566f['transfertargetuniqueid']]);_0xfb8303[_0x3732('0xa2')]=_0x7566f[_0x3732('0xd9')];_0xfb8303[_0x3732('0xa3')]=_0x7566f[_0x3732('0xda')];_0xfb8303[_0x3732('0x4f')]=_0x3732('0xd5');_0xfb8303[_0x3732('0x97')]=!![];_0xfb8303[_0x3732('0xa0')]=_0x3732('0xd6');if(this[_0x3732('0xe')][_0x7566f[_0x3732('0xda')]]){_0x478711=this[_0x3732('0xe')][_0x7566f[_0x3732('0xda')]];this[_0x3732('0xe')][_0x7566f[_0x3732('0xda')]]=this[_0x3732('0xe')][_0x7566f[_0x3732('0xd8')]];this[_0x3732('0xe')][_0x7566f[_0x3732('0xd8')]]=_0x478711;_0x171eb7=_['last'](this['queueReports'][_0x7566f[_0x3732('0xd8')]]);_0x171eb7[_0x3732('0x34')]=!![];}logger[_0x3732('0x6e')]('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x7566f[_0x3732('0x48')],_0xfb8303['name'],_0xfb8303[_0x3732('0x53')],_0xfb8303[_0x3732('0xa2')],_0xfb8303['transferuniqueid']);}else if(this[_0x3732('0xe')][_0x7566f[_0x3732('0xda')]]){_0xfb8303=_[_0x3732('0x84')](this[_0x3732('0xe')][_0x7566f[_0x3732('0xda')]]);_0xfb8303['transferexten']=_0x7566f[_0x3732('0xd9')];_0xfb8303[_0x3732('0xa3')]=_0x7566f[_0x3732('0xda')];_0xfb8303[_0x3732('0x4f')]=_0x3732('0xd5');_0xfb8303['transfer']=!![];_0xfb8303['transfertype']=_0x3732('0xd6');_0xfb8303[_0x3732('0x34')]=!![];_0xfb8303[_0x3732('0xdb')]=_0x7566f['transfereeuniqueid'];}else if(this['queueReports'][_0x7566f[_0x3732('0xd4')]]){_0xfb8303=_[_0x3732('0x84')](this[_0x3732('0xe')][_0x7566f[_0x3732('0xd4')]]);_0xfb8303[_0x3732('0xa2')]=_0x7566f[_0x3732('0xdc')];_0xfb8303[_0x3732('0xa3')]=_0x7566f[_0x3732('0xd4')];_0xfb8303[_0x3732('0x4f')]='ATTENDEDTRANSFER';_0xfb8303['transfer']=!![];_0xfb8303[_0x3732('0xa0')]='ATTENDED';_0xfb8303[_0x3732('0x34')]=!![];_0xfb8303['transferid']=_0x7566f[_0x3732('0xd8')];}}}catch(_0x4e0485){logger[_0x3732('0x3c')](_0x3732('0xd2'),_0x7566f['uniqueid'],util[_0x3732('0x3e')](_0x4e0485,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3732('0xb')]['syncBlindTransfer']=function(_0x10ac17){try{if(this[_0x3732('0x65')](_0x10ac17)){logger[_0x3732('0x45')](_0x3732('0xdd'),_0x10ac17[_0x3732('0x48')],util['inspect'](_0x10ac17,{'showHidden':![],'depth':null}));if(this[_0x3732('0xe')][_0x10ac17[_0x3732('0xd3')]]){var _0x3770a3=_[_0x3732('0x84')](this[_0x3732('0xe')][_0x10ac17[_0x3732('0xd3')]]);_0x3770a3['queuecallerexitreason']=_0x3732('0xde');_0x3770a3[_0x3732('0x97')]=!![];_0x3770a3['transfertype']=_0x3732('0xdf');_0x3770a3[_0x3732('0xa2')]=_0x10ac17[_0x3732('0xe0')];_0x3770a3[_0x3732('0xa3')]=_0x10ac17[_0x3732('0xd3')];logger[_0x3732('0x6e')]('[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x10ac17[_0x3732('0x48')],_0x3770a3['name'],_0x3770a3[_0x3732('0x53')],_0x3770a3[_0x3732('0xa2')],_0x3770a3['transferuniqueid']);this['syncHangup']({'event':_0x3732('0xe1'),'uniqueid':_0x10ac17[_0x3732('0xd3')],'context':_0x10ac17['context'],'channel':_0x10ac17[_0x3732('0xe2')]});}}}catch(_0x22af83){logger[_0x3732('0x3c')]('[%s][voiceQueueReport][blindtransfer]',_0x10ac17['uniqueid'],util[_0x3732('0x3e')](_0x22af83,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3732('0xb')][_0x3732('0x24')]=function(_0x1bc16f){try{if(this['isNotNull'](_0x1bc16f)){logger[_0x3732('0x45')]('[%s][voiceQueueReport][musiconholdstart]',_0x1bc16f[_0x3732('0x48')],util['inspect'](_0x1bc16f,{'showHidden':![],'depth':null}));if(this[_0x3732('0xe')][_0x1bc16f[_0x3732('0x48')]]){var _0x594580=_[_0x3732('0x84')](this[_0x3732('0xe')][_0x1bc16f[_0x3732('0x48')]]);if(!_[_0x3732('0xbf')](_0x594580[_0x3732('0xad')])){_0x594580['mohstarttime']=moment()[_0x3732('0x49')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0x3732('0x6e')](_0x3732('0xe3'),_0x1bc16f[_0x3732('0x48')],_0x594580[_0x3732('0xe4')]);}}}}catch(_0x4ba65a){logger[_0x3732('0x3c')](_0x3732('0xe5'),_0x1bc16f[_0x3732('0x48')],util[_0x3732('0x3e')](_0x4ba65a,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x3732('0x26')]=function(_0x68428){try{if(this[_0x3732('0x65')](_0x68428)){logger['debug'](_0x3732('0xe6'),_0x68428['uniqueid'],util[_0x3732('0x3e')](_0x68428,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x68428[_0x3732('0x48')]]){var _0x8a80df=_['last'](this[_0x3732('0xe')][_0x68428[_0x3732('0x48')]]);if(!_['isNil'](_0x8a80df[_0x3732('0xe4')])){_0x8a80df['mohtime']+=moment()[_0x3732('0xc5')](0x0)[_0x3732('0xc4')](_0x8a80df[_0x3732('0xe4')],_0x3732('0xc6'));logger[_0x3732('0x6e')](_0x3732('0xe7'),_0x68428[_0x3732('0x48')],_0x8a80df[_0x3732('0xe8')]);delete _0x8a80df['mohstarttime'];}}}}catch(_0x301c91){logger[_0x3732('0x3c')](_0x3732('0xe6'),_0x68428['uniqueid'],util[_0x3732('0x3e')](_0x301c91,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3732('0xb')][_0x3732('0xe9')]=function(_0x3f2226){try{if(this['isNotNull'](_0x3f2226)){logger['debug'](_0x3732('0xea'),_0x3f2226[_0x3732('0x48')],util['inspect'](_0x3f2226,{'showHidden':![],'depth':null}));if(_0x3f2226[_0x3732('0xeb')]['toLowerCase']()===_0x3732('0xec')){_0x3f2226[_0x3732('0xed')]=_0x3f2226[_0x3732('0xee')]&&_0x3f2226[_0x3732('0xee')][_0x3732('0x9a')]('CDR(routeAlias)')?_0x3f2226[_0x3732('0xee')]:(_0x3f2226['appdata']||_0x3f2226[_0x3732('0xed')])[_0x3732('0x9b')]();if(_[_0x3732('0x9a')](_0x3f2226[_0x3732('0xed')][_0x3732('0x9b')](),_0x3732('0xef'))){logger[_0x3732('0x6e')]('[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s',_0x3f2226[_0x3732('0x48')],_0x3f2226[_0x3732('0xeb')],_0x3f2226[_0x3732('0xed')]);if(_['isUndefined'](this['channels'][_0x3f2226[_0x3732('0x48')]]))this[_0x3732('0x33')][_0x3f2226[_0x3732('0x48')]]={};var _0x43b822=_0x3f2226[_0x3732('0xed')]['split']('=');var _0x33ca16=_0x43b822[0x0][_0x3732('0x9b')]()[_0x3732('0xf0')](/cdr\((.*)\)/);if(_0x33ca16)this['channels'][_0x3f2226[_0x3732('0x48')]][_0x33ca16[0x1]]=_0x43b822[0x1];}}}}catch(_0x534324){logger[_0x3732('0x3c')](_0x3732('0xf1'),_0x3f2226['uniqueid'],util[_0x3732('0x3e')](_0x534324,{'showHidden':![],'depth':null}));}};module[_0x3732('0xf2')]=VoiceQueueReport;
\ No newline at end of file
+var _0x2e52=['push','queuecallerjoin','[%s][voiceQueueReport][queuecallerabandon]','queuecallercompleteAt','holdtime','originalposition','queuecallerabandon','queuecallerabandonAt','ABANDONED','lastAssignedTo','info','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','syncQueueCallerLeave','[%s][voiceQueueReport][queuecallerleave]','last','queuecallerleaveAt','connectedlinenum','connectedlinename','syncAgentConnect','[%s][voiceQueueReport][agentconnect]','queuecallercomplete','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','syncAgentComplete','[%s][voiceQueueReport][agentcomplete]','assigned','membername','queuecallerexitAt','transfer','reason','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','toLowerCase','local/','linkedid','seconds','FORWARDTRANSFER','transfertype','FORWARD','transferexten','destexten','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','[%s][voiceQueueReport][varset]','addVariable','variable','value','queuestatus','CONTINUE','queuecallerexit','TIMEOUT','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','EXITWITHKEY','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','includes','handleHangup','length','unmanaged','diff','answered','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','ATTENDEDTRANSFER','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][hangup]','cause-txt','cause','transferid','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','transferuniqueid','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','origtransfereruniqueid','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','secondtransfererexten','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstop]','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','mohtime','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','applicationdata','CDR(routeAlias)','appdata','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','match','[%s][voiceQueueReport][newexten]','exports','moment','util','md5','ioredis','../../../config/environment','../../../config/logger','../model/queueReport','defaults','redis','localhost','socket.io-emitter','tail','finally','sequence','queueReports','agents','channels','queueChannels','voiceQueues','campaigns','variables','queuesummary','bind','queuesummarycomplete','syncQueueSummaryComplete','syncQueueCallerJoin','syncQueueCallerAbandon','queuecallerleave','agentcomplete','agentconnect','varset','syncVarSet','hangup','syncHangup','fullybooted','syncFullyBooted','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','originated','talking','waiting','queueStatusComplete','unlockRR','prototype','clearZombieChannels','switch','enqueue','isNil','Action','status','channel','message','[%s][voiceQueueReport][checkChannel]','inspect','error','[%s][voiceQueueReport][checkQueueReport]','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][','uniqueid','format','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save','emitVoiceQueueChannelRemove',']\x20sending\x20voice_queue_channel:remove\x20event:','queuecallerexitreason','voice_queue_channel:remove','voice_queue_presence:remove','emitVoiceQueueSummary','inbound','loggedIn','sumBillable','sumDuration','sumHoldTime','total','type','abandoned','Trunk','active','callerid','Interval','stringify','[voiceQueueReport][','voice_queue:save','isNotNull','isUndefined','queues','[voiceQueueReport][queues]','flagQueueSummary','then','catch','[voiceQueueReport][queuesummary]','syncQueueSummary','queue','[voiceQueueReport][queuesummary]\x20event:','[voiceQueueReport][queuesummary]\x20name:%s','countBy','callers','toNumber','loggedin','available','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','custom:queuesummary','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','merge','pick','keys'];(function(_0x21e97b,_0x65a77f){var _0x10ba44=function(_0x239ef2){while(--_0x239ef2){_0x21e97b['push'](_0x21e97b['shift']());}};_0x10ba44(++_0x65a77f);}(_0x2e52,0x79));var _0x22e5=function(_0x243b2f,_0x30aa15){_0x243b2f=_0x243b2f-0x0;var _0xcb3c2d=_0x2e52[_0x243b2f];return _0xcb3c2d;};'use strict';var _=require('lodash');var moment=require(_0x22e5('0x0'));var util=require(_0x22e5('0x1'));var md5=require(_0x22e5('0x2'));var Redis=require(_0x22e5('0x3'));var config=require(_0x22e5('0x4'));var logger=require(_0x22e5('0x5'))('ami');var ami=require('../ami');var QueueReport=require(_0x22e5('0x6'));config['redis']=_[_0x22e5('0x7')](config[_0x22e5('0x8')],{'host':_0x22e5('0x9'),'port':0x18eb});var io=require(_0x22e5('0xa'))(new Redis(config[_0x22e5('0x8')]));var Sequence=function(){};Sequence['prototype']['enqueue']=function(_0x1ef746){this[_0x22e5('0xb')]=this[_0x22e5('0xb')]?this['tail'][_0x22e5('0xc')](_0x1ef746):_0x1ef746();};function VoiceQueueReport(_0x5686c5){this[_0x22e5('0xd')]=new Sequence();this[_0x22e5('0xe')]={};this[_0x22e5('0xf')]=_0x5686c5[_0x22e5('0xf')];this[_0x22e5('0x10')]=_0x5686c5[_0x22e5('0x11')];this[_0x22e5('0x12')]=_0x5686c5[_0x22e5('0x12')];this['flagQueueSummary']=!![];this[_0x22e5('0x13')]=_0x5686c5[_0x22e5('0x13')];this[_0x22e5('0x14')]={};ami['on'](_0x22e5('0x15'),this['syncQueueSummary'][_0x22e5('0x16')](this));ami['on'](_0x22e5('0x17'),this[_0x22e5('0x18')][_0x22e5('0x16')](this));ami['on']('queuecallerjoin',this[_0x22e5('0x19')][_0x22e5('0x16')](this));ami['on']('queuecallerabandon',this[_0x22e5('0x1a')][_0x22e5('0x16')](this));ami['on'](_0x22e5('0x1b'),this['syncQueueCallerLeave'][_0x22e5('0x16')](this));ami['on'](_0x22e5('0x1c'),this['syncAgentComplete'][_0x22e5('0x16')](this));ami['on'](_0x22e5('0x1d'),this['syncAgentConnect'][_0x22e5('0x16')](this));ami['on'](_0x22e5('0x1e'),this[_0x22e5('0x1f')]['bind'](this));ami['on'](_0x22e5('0x20'),this[_0x22e5('0x21')][_0x22e5('0x16')](this));ami['on'](_0x22e5('0x22'),this[_0x22e5('0x23')][_0x22e5('0x16')](this));ami['on'](_0x22e5('0x24'),this[_0x22e5('0x25')][_0x22e5('0x16')](this));ami['on'](_0x22e5('0x26'),this[_0x22e5('0x27')]['bind'](this));ami['on'](_0x22e5('0x28'),this[_0x22e5('0x29')][_0x22e5('0x16')](this));ami['on']('blindtransfer',this[_0x22e5('0x2a')]['bind'](this));this[_0x22e5('0x2b')]();this[_0x22e5('0x2c')]();}function clearChannels(_0x3a3864){if(!_[_0x22e5('0x2d')](_0x3a3864)){for(var _0x12c1cc in _0x3a3864){if(_0x3a3864[_0x22e5('0x2e')](_0x12c1cc)){delete _0x3a3864[_0x12c1cc];}}}}function clearCampaigns(_0xcb7e6c){if(!_[_0x22e5('0x2d')](_0xcb7e6c)){for(var _0xbc3705 in _0xcb7e6c){if(_0xcb7e6c[_0x22e5('0x2e')](_0xbc3705)){_0xcb7e6c[_0xbc3705][_0x22e5('0x2f')]=0x0;}}}}function clearVoiceQueues(_0x16d3b8){if(!_[_0x22e5('0x2d')](_0x16d3b8)){for(var _0x3a7197 in _0x16d3b8){if(_0x16d3b8[_0x22e5('0x2e')](_0x3a7197)){_0x16d3b8[_0x3a7197][_0x22e5('0x2f')]=0x0;_0x16d3b8[_0x3a7197][_0x22e5('0x30')]=0x0;_0x16d3b8[_0x3a7197]['pTalking']=0x0;_0x16d3b8[_0x3a7197][_0x22e5('0x31')]=0x0;_0x16d3b8[_0x3a7197][_0x22e5('0x32')]=!![];}}}}function clearAgentBooked(_0x130958){if(!_[_0x22e5('0x2d')](_0x130958)){for(var _0x537c33 in _0x130958){if(_0x130958[_0x22e5('0x2e')](_0x537c33)){_0x130958[_0x537c33][_0x22e5('0x33')]=!![];}}}}VoiceQueueReport[_0x22e5('0x34')][_0x22e5('0x35')]=function(){var _0x3307e2=this;for(var _0x5bf580 in this['channels']){if(this['channels'][_0x22e5('0x2e')](_0x5bf580)&&!this[_0x22e5('0x10')][_0x5bf580][_0x22e5('0x36')]){this[_0x22e5('0xd')][_0x22e5('0x37')](function(){if(!_[_0x22e5('0x38')](_0x3307e2['channels'][_0x5bf580])){return ami[_0x22e5('0x39')]({'action':_0x22e5('0x3a'),'channel':_0x3307e2[_0x22e5('0x10')][_0x5bf580][_0x22e5('0x3b')]})['catch'](function(_0x2f5989){if(_0x2f5989[_0x22e5('0x3c')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x3307e2[_0x22e5('0x10')][_0x5bf580]){delete _0x3307e2[_0x22e5('0x10')][_0x5bf580];logger['error'](_0x22e5('0x3d'),_0x5bf580,util[_0x22e5('0x3e')](_0x2f5989,{'showHidden':![],'depth':null}));}if(_0x3307e2['queueReports'][_0x5bf580]){delete _0x3307e2['queueReports'][_0x5bf580];logger[_0x22e5('0x3f')](_0x22e5('0x40'),_0x5bf580,util[_0x22e5('0x3e')](_0x2f5989,{'showHidden':![],'depth':null}));}if(_0x3307e2[_0x22e5('0x14')][_0x5bf580]){delete _0x3307e2[_0x22e5('0x14')][_0x5bf580];logger['error'](_0x22e5('0x41'),_0x5bf580,util[_0x22e5('0x3e')](_0x2f5989,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x22e5('0x34')][_0x22e5('0x23')]=function(){logger[_0x22e5('0x3f')](_0x22e5('0x42'));clearChannels(this['channels']);this[_0x22e5('0x43')](this[_0x22e5('0xe')]);clearAgentBooked(this[_0x22e5('0xf')]);clearVoiceQueues(this[_0x22e5('0x12')]);clearCampaigns(this['campaigns']);};VoiceQueueReport[_0x22e5('0x34')]['clearQueueReport']=function(_0x6aa822){var _0x5eb907=this;if(!_[_0x22e5('0x2d')](_0x6aa822)){for(var _0x42bfd9 in _0x6aa822){if(_0x6aa822[_0x22e5('0x2e')](_0x42bfd9)){_0x5eb907['emitVoiceQueueChannelRemove'](_0x6aa822[_0x42bfd9],_0x22e5('0x44'));delete _0x6aa822[_0x42bfd9];}}}};VoiceQueueReport['prototype'][_0x22e5('0x45')]=function(_0x369411,_0x2d5807,_0xd5a76e){io['to'](_0x369411)[_0x22e5('0x45')](_0x2d5807,_0xd5a76e);};VoiceQueueReport[_0x22e5('0x34')][_0x22e5('0x46')]=function(_0x34e96d,_0x1ef587){logger[_0x22e5('0x47')](_0x22e5('0x48')+_0x1ef587+']\x20sending\x20voice_queue_channel:save\x20event:',_0x34e96d[_0x22e5('0x49')],util[_0x22e5('0x3e')](_0x34e96d,{'showHidden':![],'depth':null}));this[_0x22e5('0x45')](util[_0x22e5('0x4a')](_0x22e5('0x4b'),_0x34e96d[_0x22e5('0x4c')]),_0x22e5('0x4d'),_0x34e96d);io[_0x22e5('0x45')](_0x22e5('0x4e'),_0x34e96d);};VoiceQueueReport[_0x22e5('0x34')][_0x22e5('0x4f')]=function(_0x52caaa,_0x59dda2){logger[_0x22e5('0x47')](_0x22e5('0x48')+_0x59dda2+_0x22e5('0x50'),_0x52caaa[_0x22e5('0x49')],util[_0x22e5('0x3e')](_0x52caaa,{'showHidden':![],'depth':null}));if(_0x52caaa[_0x22e5('0x51')]==='ATTENDEDTRANSFER')return;this[_0x22e5('0x45')](util[_0x22e5('0x4a')]('voice:queue:%s',_0x52caaa[_0x22e5('0x4c')]),_0x22e5('0x52'),_0x52caaa);io['emit'](_0x22e5('0x53'),_0x52caaa);};VoiceQueueReport[_0x22e5('0x34')][_0x22e5('0x54')]=function(_0xe5a7ae,_0x1c5118){if(_0xe5a7ae['type']===_0x22e5('0x55')){var _0x5ee1b5={'id':_0xe5a7ae['id'],'name':_0xe5a7ae['name'],'strategy':_0xe5a7ae['strategy'],'answered':_0xe5a7ae['answered'],'available':_0xe5a7ae['available'],'loggedIn':_0xe5a7ae[_0x22e5('0x56')],'pTalking':_0xe5a7ae['pTalking'],'sumBillable':_0xe5a7ae[_0x22e5('0x57')],'sumDuration':_0xe5a7ae[_0x22e5('0x58')],'sumHoldTime':_0xe5a7ae[_0x22e5('0x59')]||0x0,'talking':_0xe5a7ae['talking'],'total':_0xe5a7ae[_0x22e5('0x5a')],'type':_0xe5a7ae[_0x22e5('0x5b')],'unmanaged':_0xe5a7ae['unmanaged'],'abandoned':_0xe5a7ae[_0x22e5('0x5c')],'waiting':_0xe5a7ae['waiting']};if(_0xe5a7ae['Trunk']){_0x5ee1b5['Trunk']={'id':_0xe5a7ae[_0x22e5('0x5d')]['id'],'name':_0xe5a7ae['Trunk'][_0x22e5('0x4c')],'active':_0xe5a7ae[_0x22e5('0x5d')][_0x22e5('0x5e')],'callerid':_0xe5a7ae[_0x22e5('0x5d')][_0x22e5('0x5f')]};}if(_0xe5a7ae[_0x22e5('0x60')]){_0x5ee1b5['Interval']={'id':_0xe5a7ae['Interval']['id'],'name':_0xe5a7ae[_0x22e5('0x60')][_0x22e5('0x4c')]};}var _0x263539=md5(JSON[_0x22e5('0x61')](_0x5ee1b5));if(_0xe5a7ae['md5']!==_0x263539){_0xe5a7ae[_0x22e5('0x2')]=_0x263539;logger[_0x22e5('0x47')](_0x22e5('0x62')+_0x1c5118+']\x20sending\x20voice_queue:save\x20event:',util[_0x22e5('0x3e')](_0x5ee1b5,{'showHidden':![],'depth':null}));this[_0x22e5('0x45')](util[_0x22e5('0x4a')](_0x22e5('0x4b'),_0x5ee1b5['name']),_0x22e5('0x63'),_0x5ee1b5);}}};VoiceQueueReport[_0x22e5('0x34')][_0x22e5('0x64')]=function(_0x4b0bab){return _0x4b0bab!==null&&!_[_0x22e5('0x65')](_0x4b0bab);};VoiceQueueReport[_0x22e5('0x34')][_0x22e5('0x2c')]=function(){var _0x313d58=this;setInterval(function(){_0x313d58[_0x22e5('0x35')]();ami['Action']({'action':_0x22e5('0x66')})['catch'](function(_0x3a2f22){logger['error'](_0x22e5('0x67'),util[_0x22e5('0x3e')](_0x3a2f22,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x22e5('0x34')][_0x22e5('0x2b')]=function(){var _0x21b341=this;setInterval(function(){if(_0x21b341[_0x22e5('0x68')]){return ami[_0x22e5('0x39')]({'action':_0x22e5('0x15')})[_0x22e5('0x69')](function(){_0x21b341[_0x22e5('0x68')]=![];})[_0x22e5('0x6a')](function(_0x2bd0af){logger[_0x22e5('0x3f')](_0x22e5('0x6b'),util['inspect'](_0x2bd0af,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x22e5('0x34')][_0x22e5('0x6c')]=function(_0x37392d){try{if(this['isNotNull'](_0x37392d)&&this[_0x22e5('0x64')](_0x37392d[_0x22e5('0x6d')])){logger['debug'](_0x22e5('0x6e'),util[_0x22e5('0x3e')](_0x37392d,{'showHidden':![],'depth':null}));if(this[_0x22e5('0x12')][_0x37392d[_0x22e5('0x6d')]]){logger['info'](_0x22e5('0x6f'),_0x37392d[_0x22e5('0x6d')]);var _0x4f934f=_[_0x22e5('0x70')](this[_0x22e5('0x10')],_0x22e5('0x6d'))[_0x37392d['queue']]||0x0;var _0x57bc44=_0x4f934f-_0x37392d[_0x22e5('0x71')];if(this[_0x22e5('0x12')][_0x37392d['queue']]['waiting']!==_[_0x22e5('0x72')](_0x37392d[_0x22e5('0x71')])||this[_0x22e5('0x12')][_0x37392d[_0x22e5('0x6d')]][_0x22e5('0x56')]!==_[_0x22e5('0x72')](_0x37392d[_0x22e5('0x73')])||this['voiceQueues'][_0x37392d[_0x22e5('0x6d')]][_0x22e5('0x74')]!==_[_0x22e5('0x72')](_0x37392d[_0x22e5('0x74')])||this[_0x22e5('0x12')][_0x37392d[_0x22e5('0x6d')]][_0x22e5('0x30')]!==_0x57bc44){this['voiceQueues'][_0x37392d[_0x22e5('0x6d')]][_0x22e5('0x31')]=_[_0x22e5('0x72')](_0x37392d[_0x22e5('0x71')]);this['voiceQueues'][_0x37392d[_0x22e5('0x6d')]][_0x22e5('0x56')]=_[_0x22e5('0x72')](_0x37392d[_0x22e5('0x73')]);this[_0x22e5('0x12')][_0x37392d[_0x22e5('0x6d')]][_0x22e5('0x74')]=_['toNumber'](_0x37392d['available']);this[_0x22e5('0x12')][_0x37392d[_0x22e5('0x6d')]][_0x22e5('0x30')]=_0x57bc44>0x0?_0x57bc44:0x0;this[_0x22e5('0x12')][_0x37392d[_0x22e5('0x6d')]]['talking']=this[_0x22e5('0x12')][_0x37392d[_0x22e5('0x6d')]][_0x22e5('0x30')]>_[_0x22e5('0x72')](_0x37392d['loggedin'])?_['toNumber'](_0x37392d[_0x22e5('0x73')]):this[_0x22e5('0x12')][_0x37392d[_0x22e5('0x6d')]]['talking'];this[_0x22e5('0x54')](this[_0x22e5('0x12')][_0x37392d[_0x22e5('0x6d')]],_0x22e5('0x15'));}logger[_0x22e5('0x47')](_0x22e5('0x75'),util[_0x22e5('0x3e')](this['voiceQueues'][_0x37392d[_0x22e5('0x6d')]],{'showHidden':![],'depth':null}));ami[_0x22e5('0x45')](_0x22e5('0x76'),this[_0x22e5('0x12')][_0x37392d[_0x22e5('0x6d')]]);}}}catch(_0x1cac86){logger[_0x22e5('0x3f')](_0x22e5('0x6b'),util[_0x22e5('0x3e')](_0x1cac86,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x22e5('0x34')]['syncQueueSummaryComplete']=function(_0x2c68f1){logger[_0x22e5('0x47')](_0x22e5('0x77'),util[_0x22e5('0x3e')](_0x2c68f1,{'showHidden':![],'depth':null}));ami['emit']('custom:queuesummarycomplete',{});this[_0x22e5('0x68')]=!![];};VoiceQueueReport['prototype'][_0x22e5('0x19')]=function(_0x2b3471){try{if(this[_0x22e5('0x64')](_0x2b3471)){logger[_0x22e5('0x47')](_0x22e5('0x78'),_0x2b3471[_0x22e5('0x49')],util[_0x22e5('0x3e')](_0x2b3471,{'showHidden':![],'depth':null}));if(_[_0x22e5('0x65')](this[_0x22e5('0xe')][_0x2b3471[_0x22e5('0x49')]]))this[_0x22e5('0xe')][_0x2b3471[_0x22e5('0x49')]]=[];if(_[_0x22e5('0x65')](this['channels'][_0x2b3471['uniqueid']]))this[_0x22e5('0x10')][_0x2b3471[_0x22e5('0x49')]]={};var _0x115825=new QueueReport();_0x115825[_0x22e5('0x4c')]=_0x2b3471[_0x22e5('0x6d')];_0x115825['type']=this[_0x22e5('0x12')][_0x115825[_0x22e5('0x4c')]]&&this[_0x22e5('0x12')][_0x115825[_0x22e5('0x4c')]][_0x22e5('0x5b')]?this[_0x22e5('0x12')][_0x115825[_0x22e5('0x4c')]][_0x22e5('0x5b')]||'inbound':_0x22e5('0x55');_0x115825[_0x22e5('0x6d')]=_0x2b3471[_0x22e5('0x6d')];_0x115825[_0x22e5('0x79')]=moment()[_0x22e5('0x4a')](_0x22e5('0x7a'));_0x115825[_0x22e5('0x7b')]=_0x2b3471[_0x22e5('0x7b')];_0x115825[_0x22e5('0x7c')]=_0x2b3471[_0x22e5('0x7c')];_0x115825[_0x22e5('0x49')]=_0x2b3471['uniqueid'];_0x115825['routealias']=this[_0x22e5('0x10')][_0x2b3471[_0x22e5('0x49')]][_0x22e5('0x7d')];logger['info']('[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s',_0x115825[_0x22e5('0x4c')],_0x115825['type']);_[_0x22e5('0x7e')](_0x115825,_[_0x22e5('0x7f')](_0x2b3471,_[_0x22e5('0x80')](_0x115825)));this[_0x22e5('0xe')][_0x2b3471['uniqueid']][_0x22e5('0x81')](_0x115825);this[_0x22e5('0x10')][_0x2b3471[_0x22e5('0x49')]]=_0x115825;this[_0x22e5('0x46')](_0x115825,_0x22e5('0x82'));}}catch(_0x49c360){logger[_0x22e5('0x3f')]('[%s][voiceQueueReport][queuecallerjoin]',_0x2b3471['uniqueid'],util[_0x22e5('0x3e')](_0x49c360,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x22e5('0x34')][_0x22e5('0x1a')]=function(_0x2d1931){try{if(this['isNotNull'](_0x2d1931)){logger[_0x22e5('0x47')](_0x22e5('0x83'),_0x2d1931[_0x22e5('0x49')],util['inspect'](_0x2d1931,{'showHidden':![],'depth':null}));if(this[_0x22e5('0xe')][_0x2d1931[_0x22e5('0x49')]]){var _0x52063d=_['last'](this[_0x22e5('0xe')][_0x2d1931[_0x22e5('0x49')]]);_0x52063d['queuecallercomplete']=![];_0x52063d[_0x22e5('0x84')]=null;_0x52063d[_0x22e5('0x85')]=_0x2d1931[_0x22e5('0x85')];_0x52063d[_0x22e5('0x86')]=_0x2d1931[_0x22e5('0x86')];_0x52063d[_0x22e5('0x87')]=!![];_0x52063d[_0x22e5('0x88')]=moment()[_0x22e5('0x4a')]('YYYY-MM-DD\x20HH:mm:ss');_0x52063d[_0x22e5('0x51')]=_0x22e5('0x89');_0x52063d[_0x22e5('0x8a')]=null;logger[_0x22e5('0x8b')](_0x22e5('0x8c'),_0x52063d['name'],_0x52063d[_0x22e5('0x5b')]);this['channels'][_0x2d1931[_0x22e5('0x49')]]=_0x52063d;this['emitVoiceQueueChannelRemove'](_0x52063d,_0x22e5('0x87'));}}}catch(_0x12b954){logger[_0x22e5('0x3f')]('[%s][voiceQueueReport][queuecallerabandon]',_0x2d1931[_0x22e5('0x49')],util['inspect'](_0x12b954,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x22e5('0x34')][_0x22e5('0x8d')]=function(_0x3713c2){try{if(this[_0x22e5('0x64')](_0x3713c2)){logger['debug'](_0x22e5('0x8e'),_0x3713c2[_0x22e5('0x49')],util[_0x22e5('0x3e')](_0x3713c2,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x3713c2[_0x22e5('0x49')]]){var _0x5b2deb=_[_0x22e5('0x8f')](this[_0x22e5('0xe')][_0x3713c2[_0x22e5('0x49')]]);_0x5b2deb[_0x22e5('0x90')]=moment()[_0x22e5('0x4a')](_0x22e5('0x7a'));_0x5b2deb[_0x22e5('0x91')]=_0x3713c2[_0x22e5('0x91')];_0x5b2deb[_0x22e5('0x92')]=_0x3713c2[_0x22e5('0x92')];logger[_0x22e5('0x8b')]('[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x5b2deb['name'],_0x5b2deb[_0x22e5('0x5b')],_0x3713c2['connectedlinenum'],_0x3713c2[_0x22e5('0x92')]);this[_0x22e5('0x10')][_0x3713c2[_0x22e5('0x49')]]=_0x5b2deb;this['emitVoiceQueueChannelSave'](_0x5b2deb,_0x22e5('0x1b'));}}}catch(_0x2c7c59){logger[_0x22e5('0x3f')](_0x22e5('0x8e'),_0x3713c2[_0x22e5('0x49')],util[_0x22e5('0x3e')](_0x2c7c59,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x22e5('0x93')]=function(_0x355c56){try{if(this['isNotNull'](_0x355c56)){logger['debug'](_0x22e5('0x94'),_0x355c56[_0x22e5('0x49')],util[_0x22e5('0x3e')](_0x355c56,{'showHidden':![],'depth':null}));if(this[_0x22e5('0xe')][_0x355c56['uniqueid']]){var _0x453d72=_['last'](this[_0x22e5('0xe')][_0x355c56[_0x22e5('0x49')]]);_0x453d72[_0x22e5('0x95')]=!![];_0x453d72['queuecallerexitreason']=_0x22e5('0x96');logger[_0x22e5('0x8b')](_0x22e5('0x97'),_0x453d72[_0x22e5('0x4c')],_0x453d72[_0x22e5('0x5b')]);}}}catch(_0x59fab7){logger[_0x22e5('0x3f')](_0x22e5('0x94'),_0x355c56[_0x22e5('0x49')],util[_0x22e5('0x3e')](_0x59fab7,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x22e5('0x34')][_0x22e5('0x98')]=function(_0x26fb1c){try{if(this[_0x22e5('0x64')](_0x26fb1c)){logger[_0x22e5('0x47')](_0x22e5('0x99'),_0x26fb1c['uniqueid'],util[_0x22e5('0x3e')](_0x26fb1c,{'showHidden':![],'depth':null}));if(this[_0x22e5('0xe')][_0x26fb1c[_0x22e5('0x49')]]){var _0x4b3250=_[_0x22e5('0x8f')](this['queueReports'][_0x26fb1c[_0x22e5('0x49')]]);_0x4b3250['queuecallerabandon']=![];_0x4b3250['queuecallerabandonAt']=null;_0x4b3250[_0x22e5('0x9a')]=!![];_0x4b3250[_0x22e5('0x8a')]=_0x26fb1c[_0x22e5('0x9b')];_0x4b3250[_0x22e5('0x85')]=_0x26fb1c[_0x22e5('0x85')];_0x4b3250[_0x22e5('0x95')]=!![];_0x4b3250['queuecallerexit']=![];_0x4b3250[_0x22e5('0x9c')]=null;if(!_0x4b3250[_0x22e5('0x9d')]){if(_0x26fb1c[_0x22e5('0x9e')]==_0x22e5('0x9d')){_0x4b3250[_0x22e5('0x51')]=_0x22e5('0x9f');logger[_0x22e5('0x8b')](_0x22e5('0xa0'),_0x4b3250[_0x22e5('0x4c')],_0x4b3250['type']);}else{if(_[_0x22e5('0xa1')](_0x26fb1c['channel'][_0x22e5('0xa2')](),_0x22e5('0xa3'))){if(this[_0x22e5('0xe')][_0x26fb1c[_0x22e5('0xa4')]]){var _0x660cde=_[_0x22e5('0x8f')](this[_0x22e5('0xe')][_0x26fb1c[_0x22e5('0xa4')]]);_0x660cde['queuecallercomplete']=![];_0x660cde['queuecallerexit']=!![];_0x660cde[_0x22e5('0x9c')]=moment(_0x4b3250[_0x22e5('0x79')])['add'](_0x26fb1c[_0x22e5('0x85')],_0x22e5('0xa5'))[_0x22e5('0x4a')](_0x22e5('0x7a'));_0x660cde[_0x22e5('0x51')]=_0x22e5('0xa6');_0x660cde[_0x22e5('0x9d')]=!![];_0x660cde[_0x22e5('0xa7')]=_0x22e5('0xa8');_0x660cde[_0x22e5('0xa9')]=_0x26fb1c[_0x22e5('0xaa')];_0x660cde['transferuniqueid']=_0x26fb1c[_0x22e5('0x49')];logger[_0x22e5('0x8b')](_0x22e5('0xab'),_0x660cde[_0x22e5('0x4c')],_0x660cde[_0x22e5('0x5b')]);var _0x5938f2=this[_0x22e5('0xe')][_0x26fb1c[_0x22e5('0xa4')]];this['queueReports'][_0x26fb1c['linkedid']]=this[_0x22e5('0xe')][_0x26fb1c['uniqueid']];this['queueReports'][_0x26fb1c[_0x22e5('0x49')]]=_0x5938f2;}}else{_0x4b3250[_0x22e5('0x51')]=_0x22e5('0xac')+_0x26fb1c['reason'][_0x22e5('0xad')]();logger[_0x22e5('0x8b')](_0x22e5('0xae'),_0x4b3250[_0x22e5('0x4c')],_0x4b3250[_0x22e5('0x5b')],_0x4b3250[_0x22e5('0x51')]);}}}this['channels'][_0x26fb1c[_0x22e5('0x49')]]=_0x4b3250;this[_0x22e5('0x4f')](_0x4b3250,'agentcomplete');}}}catch(_0x43ec90){logger['error'](_0x22e5('0x99'),_0x26fb1c[_0x22e5('0x49')],util[_0x22e5('0x3e')](_0x43ec90,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x22e5('0x34')][_0x22e5('0x1f')]=function(_0x16dc3){try{if(this[_0x22e5('0x64')](_0x16dc3)){logger['debug'](_0x22e5('0xaf'),_0x16dc3[_0x22e5('0x49')],util[_0x22e5('0x3e')](_0x16dc3,{'showHidden':![],'depth':null}));this[_0x22e5('0xb0')](_0x16dc3['uniqueid'],_[_0x22e5('0x80')](_0x16dc3[_0x22e5('0xb1')])[0x0],_0x16dc3[_0x22e5('0xb2')]);if(this['queueReports'][_0x16dc3[_0x22e5('0x49')]]){var _0x489989=_[_0x22e5('0x8f')](this[_0x22e5('0xe')][_0x16dc3[_0x22e5('0x49')]]);if(_0x489989){if(this['isNotNull'](_0x16dc3[_0x22e5('0xb1')])&&this['isNotNull'](_0x16dc3['variable'][_0x22e5('0xb3')])){switch(_0x16dc3[_0x22e5('0xb2')]){case _0x22e5('0xb4'):_0x489989[_0x22e5('0xb5')]=![];_0x489989[_0x22e5('0x9c')]=null;break;case _0x22e5('0xb6'):_0x489989[_0x22e5('0xb7')]=_0x22e5('0xb8');_0x489989['queuecallerexit']=!![];_0x489989[_0x22e5('0x9c')]=moment()[_0x22e5('0x4a')](_0x22e5('0x7a'));_0x489989[_0x22e5('0x90')]=moment()[_0x22e5('0x4a')](_0x22e5('0x7a'));logger[_0x22e5('0x47')](_0x22e5('0xb9'),_0x16dc3['uniqueid'],util[_0x22e5('0x3e')](_0x489989,{'showHidden':![],'depth':null}));ami[_0x22e5('0x45')](_0x22e5('0xba'),_0x489989);break;default:_0x489989[_0x22e5('0xb5')]=!![];_0x489989[_0x22e5('0x9c')]=moment()[_0x22e5('0x4a')](_0x22e5('0x7a'));_0x489989[_0x22e5('0x90')]=moment()[_0x22e5('0x4a')]('YYYY-MM-DD\x20HH:mm:ss');}_0x489989[_0x22e5('0x87')]=![];_0x489989['queuecallerabandonAt']=null;_0x489989[_0x22e5('0x51')]=_0x16dc3[_0x22e5('0xb2')];this[_0x22e5('0x10')][_0x16dc3[_0x22e5('0x49')]]=_0x489989;this[_0x22e5('0x4f')](_0x489989,_0x22e5('0x1e'));}else if(this['isNotNull'](_0x16dc3[_0x22e5('0xb1')])&&this[_0x22e5('0x64')](_0x16dc3[_0x22e5('0xb1')]['queueposition'])){if(!_0x489989[_0x22e5('0x87')]){_0x489989[_0x22e5('0xb5')]=!![];_0x489989[_0x22e5('0x9c')]=moment()[_0x22e5('0x4a')]('YYYY-MM-DD\x20HH:mm:ss');_0x489989['queuecallerexitreason']=_0x22e5('0xbb');_0x489989['queuecallerleaveAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x22e5('0x10')][_0x16dc3[_0x22e5('0x49')]]=_0x489989;}}logger[_0x22e5('0x8b')]('[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s',_0x16dc3[_0x22e5('0x49')],_0x489989[_0x22e5('0x4c')],_0x489989['type'],_[_0x22e5('0x80')](_0x16dc3[_0x22e5('0xb1')])[0x0],_0x16dc3[_0x22e5('0xb2')]);_0x489989['variables']=this[_0x22e5('0x14')][_0x16dc3[_0x22e5('0x49')]];}}}}catch(_0x15a942){logger[_0x22e5('0x3f')](_0x22e5('0xaf'),_0x16dc3[_0x22e5('0x49')],util['inspect'](_0x15a942,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x22e5('0x34')][_0x22e5('0xb0')]=function(_0x1509a1,_0x4a6ccd,_0x137fc1){var _0x2b74f8=[_0x22e5('0xbc'),'rtpaudioqosbridged',_0x22e5('0xbd'),'rtpaudioqosjitterbridged',_0x22e5('0xbe'),_0x22e5('0xbf'),_0x22e5('0xc0'),'rtpaudioqosrttbridged',_0x22e5('0xc1'),_0x22e5('0xc2'),_0x22e5('0xc3'),_0x22e5('0xc4'),_0x22e5('0xc5'),_0x22e5('0xc6'),_0x22e5('0xc7'),_0x22e5('0xc8'),_0x22e5('0x9b'),_0x22e5('0xc9'),'memberrealtime'];if(!_[_0x22e5('0x38')](_0x4a6ccd)&&!_[_0x22e5('0xca')](_0x2b74f8,_0x4a6ccd)){if(_[_0x22e5('0x65')](this['variables'][_0x1509a1])){this['variables'][_0x1509a1]={};}this[_0x22e5('0x14')][_0x1509a1][_0x4a6ccd]=_0x137fc1;}};VoiceQueueReport[_0x22e5('0x34')][_0x22e5('0xcb')]=function(_0x1c6086,_0xc287ae,_0x248598){var _0x557cc6={};for(var _0x25d602=0x0;_0x25d602<this[_0x22e5('0xe')][_0x1c6086][_0x22e5('0xcc')];_0x25d602+=0x1){_0x557cc6=this['queueReports'][_0x1c6086][_0x25d602];if(this[_0x22e5('0x12')][_0x557cc6['queue']]){if(_0x557cc6['queuecallerexit']&&_0x557cc6[_0x22e5('0x9d')]!=!![]){this[_0x22e5('0x12')][_0x557cc6['queue']][_0x22e5('0xcd')]+=0x1;}if(_0x557cc6['queuecallerabandon']){this['voiceQueues'][_0x557cc6['queue']][_0x22e5('0x5c')]+=0x1;}this['voiceQueues'][_0x557cc6[_0x22e5('0x6d')]][_0x22e5('0x59')]+=moment(_0x557cc6[_0x22e5('0x90')])[_0x22e5('0xce')](_0x557cc6[_0x22e5('0x79')],_0x22e5('0xa5'))||0x0;if(_0x25d602===this[_0x22e5('0xe')][_0x1c6086][_0x22e5('0xcc')]-0x1){this['voiceQueues'][_0x557cc6[_0x22e5('0x6d')]][_0x22e5('0x58')]+=moment()['milliseconds'](0x0)[_0x22e5('0xce')](_0x557cc6[_0x22e5('0x79')],'seconds');this['voiceQueues'][_0x557cc6[_0x22e5('0x6d')]][_0x22e5('0x5a')]+=0x1;if(_0x557cc6['queuecallercomplete']){this[_0x22e5('0x12')][_0x557cc6[_0x22e5('0x6d')]][_0x22e5('0xcf')]+=0x1;this[_0x22e5('0x12')][_0x557cc6[_0x22e5('0x6d')]][_0x22e5('0x57')]+=moment()['milliseconds'](0x0)[_0x22e5('0xce')](_0x557cc6[_0x22e5('0x90')],_0x22e5('0xa5'));_0x557cc6['queuecallercompleteAt']=moment()[_0x22e5('0x4a')](_0x22e5('0x7a'));_0x557cc6[_0x22e5('0xb5')]=![];_0x557cc6[_0x22e5('0x9c')]=null;}if(_0x557cc6['queuecallerexit']&&_0x557cc6['transfer']!=!![]){_0x557cc6[_0x22e5('0xb7')]=_0x22e5('0xcd');logger[_0x22e5('0x47')](_0x22e5('0xd0'),_0x1c6086,util['inspect'](_0x557cc6,{'showHidden':![],'depth':null}));ami['emit'](_0x22e5('0xd1'),_0x557cc6);}if(_0x557cc6['queuecallerabandon']){_0x557cc6['lastevent']=_0x22e5('0x5c');logger[_0x22e5('0x47')](_0x22e5('0xd2'),_0x1c6086,util[_0x22e5('0x3e')](_0x557cc6,{'showHidden':![],'depth':null}));ami[_0x22e5('0x45')](_0x22e5('0xd3'),_0x557cc6);}}else{this[_0x22e5('0x12')][_0x557cc6[_0x22e5('0x6d')]][_0x22e5('0x58')]+=this[_0x22e5('0x12')][_0x557cc6[_0x22e5('0x6d')]][_0x22e5('0x59')];}logger['info']('[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s',_0x1c6086,_0x557cc6[_0x22e5('0x4c')],_0x557cc6[_0x22e5('0x5b')],_0xc287ae);if(_0x248598&&_0x557cc6[_0x22e5('0x51')]===_0x22e5('0xd4')){_0x557cc6[_0x22e5('0x51')]='COMPLETEDBYAGENT';}this['channels'][_0x1c6086]=_0x557cc6;this[_0x22e5('0x4f')](_0x557cc6,'hangup');this[_0x22e5('0x54')](this[_0x22e5('0x12')][_0x557cc6[_0x22e5('0x6d')]],'hangup');}}logger[_0x22e5('0x47')](_0x22e5('0xd5'),_0x1c6086,util[_0x22e5('0x3e')](this[_0x22e5('0xe')][_0x1c6086],{'showHidden':![],'depth':null}));ami[_0x22e5('0x45')](_0x22e5('0xd6'),this[_0x22e5('0xe')][_0x1c6086]);if(_0x557cc6[_0x22e5('0x51')]===_0x22e5('0xd4'))return;delete this[_0x22e5('0xe')][_0x1c6086];delete this[_0x22e5('0x10')][_0x1c6086];if(this[_0x22e5('0x14')][_0x1c6086]){delete this[_0x22e5('0x14')][_0x1c6086];}};VoiceQueueReport[_0x22e5('0x34')][_0x22e5('0x21')]=function(_0x5893fe){try{if(this[_0x22e5('0x64')](_0x5893fe)){logger['debug'](_0x22e5('0xd7'),_0x5893fe[_0x22e5('0x49')],util[_0x22e5('0x3e')](_0x5893fe,{'showHidden':![],'depth':null}));if(this[_0x22e5('0xe')][_0x5893fe[_0x22e5('0x49')]]){return this['handleHangup'](_0x5893fe[_0x22e5('0x49')],_0x5893fe[_0x22e5('0xd8')]);}if(this[_0x22e5('0xe')][_0x5893fe[_0x22e5('0xa4')]]){if(_0x5893fe[_0x22e5('0xd9')]==='21'){return;}return this[_0x22e5('0xcb')](_0x5893fe[_0x22e5('0xa4')],_0x5893fe[_0x22e5('0xd8')],!![]);}var _0x493735=Object[_0x22e5('0x80')](this[_0x22e5('0xe')]);for(var _0x1047c7=0x0;_0x1047c7<_0x493735[_0x22e5('0xcc')];_0x1047c7++){var _0x4d7b95=_[_0x22e5('0x8f')](this[_0x22e5('0xe')][_0x493735[_0x1047c7]]);if(_0x4d7b95&&_0x4d7b95[_0x22e5('0xda')]===_0x5893fe['uniqueid']){return this[_0x22e5('0xcb')](_0x4d7b95[_0x22e5('0x49')],_0x5893fe[_0x22e5('0xd8')],!![]);}}}}catch(_0x4b9d39){logger[_0x22e5('0x3f')](_0x22e5('0xd7'),_0x5893fe[_0x22e5('0x49')],util[_0x22e5('0x3e')](_0x4b9d39,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x22e5('0x34')][_0x22e5('0x29')]=function(_0xccf78a){try{if(this['isNotNull'](_0xccf78a)){logger[_0x22e5('0x47')](_0x22e5('0xdb'),_0xccf78a[_0x22e5('0x49')],util[_0x22e5('0x3e')](_0xccf78a,{'showHidden':![],'depth':null}));var _0x337db1;var _0x4eb3d3;var _0x3a4a5e;if(this[_0x22e5('0xe')][_0xccf78a['transfereeuniqueid']]){_0x337db1=_[_0x22e5('0x8f')](this[_0x22e5('0xe')][_0xccf78a[_0x22e5('0xdc')]]);_0x337db1[_0x22e5('0xa9')]=_0xccf78a['secondtransfererexten'];_0x337db1[_0x22e5('0xdd')]=_0xccf78a[_0x22e5('0xde')];_0x337db1[_0x22e5('0x51')]=_0x22e5('0xd4');_0x337db1[_0x22e5('0x9d')]=!![];_0x337db1['transfertype']=_0x22e5('0xdf');if(this[_0x22e5('0xe')][_0xccf78a['secondtransfereruniqueid']]){_0x3a4a5e=this[_0x22e5('0xe')][_0xccf78a['secondtransfereruniqueid']];this[_0x22e5('0xe')][_0xccf78a[_0x22e5('0xde')]]=this[_0x22e5('0xe')][_0xccf78a[_0x22e5('0xdc')]];this[_0x22e5('0xe')][_0xccf78a['transfereeuniqueid']]=_0x3a4a5e;_0x4eb3d3=_['last'](this[_0x22e5('0xe')][_0xccf78a['transfereeuniqueid']]);_0x4eb3d3[_0x22e5('0x36')]=!![];}logger[_0x22e5('0x8b')]('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0xccf78a[_0x22e5('0x49')],_0x337db1[_0x22e5('0x4c')],_0x337db1[_0x22e5('0x5b')],_0x337db1[_0x22e5('0xa9')],_0x337db1[_0x22e5('0xdd')]);}else if(this['queueReports'][_0xccf78a[_0x22e5('0xe0')]]){_0x337db1=_['last'](this[_0x22e5('0xe')][_0xccf78a[_0x22e5('0xe0')]]);_0x337db1['transferexten']=_0xccf78a['origtransfererexten'];_0x337db1[_0x22e5('0xdd')]=_0xccf78a[_0x22e5('0xe1')];_0x337db1[_0x22e5('0x51')]=_0x22e5('0xd4');_0x337db1[_0x22e5('0x9d')]=!![];_0x337db1[_0x22e5('0xa7')]=_0x22e5('0xdf');if(this[_0x22e5('0xe')][_0xccf78a['origtransfereruniqueid']]){_0x3a4a5e=this[_0x22e5('0xe')][_0xccf78a[_0x22e5('0xe1')]];this[_0x22e5('0xe')][_0xccf78a[_0x22e5('0xe1')]]=this[_0x22e5('0xe')][_0xccf78a['transfertargetuniqueid']];this['queueReports'][_0xccf78a[_0x22e5('0xe0')]]=_0x3a4a5e;_0x4eb3d3=_[_0x22e5('0x8f')](this['queueReports'][_0xccf78a[_0x22e5('0xe0')]]);_0x4eb3d3['switch']=!![];}logger['info'](_0x22e5('0xe2'),_0xccf78a[_0x22e5('0x49')],_0x337db1['name'],_0x337db1['type'],_0x337db1[_0x22e5('0xa9')],_0x337db1[_0x22e5('0xdd')]);}else if(this[_0x22e5('0xe')][_0xccf78a[_0x22e5('0xe1')]]){_0x337db1=_[_0x22e5('0x8f')](this[_0x22e5('0xe')][_0xccf78a[_0x22e5('0xe1')]]);_0x337db1[_0x22e5('0xa9')]=_0xccf78a['origtransfererexten'];_0x337db1[_0x22e5('0xdd')]=_0xccf78a['origtransfereruniqueid'];_0x337db1[_0x22e5('0x51')]=_0x22e5('0xd4');_0x337db1[_0x22e5('0x9d')]=!![];_0x337db1[_0x22e5('0xa7')]=_0x22e5('0xdf');_0x337db1[_0x22e5('0x36')]=!![];_0x337db1[_0x22e5('0xda')]=_0xccf78a[_0x22e5('0xdc')];}else if(this['queueReports'][_0xccf78a[_0x22e5('0xde')]]){_0x337db1=_[_0x22e5('0x8f')](this['queueReports'][_0xccf78a[_0x22e5('0xde')]]);_0x337db1[_0x22e5('0xa9')]=_0xccf78a[_0x22e5('0xe3')];_0x337db1[_0x22e5('0xdd')]=_0xccf78a['secondtransfereruniqueid'];_0x337db1[_0x22e5('0x51')]=_0x22e5('0xd4');_0x337db1[_0x22e5('0x9d')]=!![];_0x337db1['transfertype']=_0x22e5('0xdf');_0x337db1[_0x22e5('0x36')]=!![];_0x337db1['transferid']=_0xccf78a[_0x22e5('0xe0')];}}}catch(_0x3e83a2){logger[_0x22e5('0x3f')]('[%s][voiceQueueReport][attendedtransfer]',_0xccf78a[_0x22e5('0x49')],util['inspect'](_0x3e83a2,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncBlindTransfer']=function(_0x19a548){try{if(this[_0x22e5('0x64')](_0x19a548)){logger['debug'](_0x22e5('0xe4'),_0x19a548[_0x22e5('0x49')],util['inspect'](_0x19a548,{'showHidden':![],'depth':null}));if(this[_0x22e5('0xe')][_0x19a548[_0x22e5('0xdc')]]){var _0x23e6aa=_[_0x22e5('0x8f')](this['queueReports'][_0x19a548['transfereeuniqueid']]);_0x23e6aa[_0x22e5('0x51')]=_0x22e5('0xe5');_0x23e6aa[_0x22e5('0x9d')]=!![];_0x23e6aa['transfertype']=_0x22e5('0xe6');_0x23e6aa['transferexten']=_0x19a548[_0x22e5('0xe7')];_0x23e6aa[_0x22e5('0xdd')]=_0x19a548[_0x22e5('0xdc')];logger['info'](_0x22e5('0xe8'),_0x19a548[_0x22e5('0x49')],_0x23e6aa[_0x22e5('0x4c')],_0x23e6aa[_0x22e5('0x5b')],_0x23e6aa['transferexten'],_0x23e6aa[_0x22e5('0xdd')]);this[_0x22e5('0x21')]({'event':_0x22e5('0xe9'),'uniqueid':_0x19a548[_0x22e5('0xdc')],'context':_0x19a548['context'],'channel':_0x19a548[_0x22e5('0xea')]});}}}catch(_0x17115d){logger['error'](_0x22e5('0xe4'),_0x19a548[_0x22e5('0x49')],util[_0x22e5('0x3e')](_0x17115d,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x22e5('0x34')][_0x22e5('0x25')]=function(_0x49339e){try{if(this[_0x22e5('0x64')](_0x49339e)){logger[_0x22e5('0x47')](_0x22e5('0xeb'),_0x49339e[_0x22e5('0x49')],util[_0x22e5('0x3e')](_0x49339e,{'showHidden':![],'depth':null}));if(this[_0x22e5('0xe')][_0x49339e['uniqueid']]){var _0x732fe6=_[_0x22e5('0x8f')](this[_0x22e5('0xe')][_0x49339e[_0x22e5('0x49')]]);if(!_['isNil'](_0x732fe6[_0x22e5('0x90')])){_0x732fe6[_0x22e5('0xec')]=moment()[_0x22e5('0x4a')](_0x22e5('0x7a'));logger[_0x22e5('0x8b')]('[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s',_0x49339e[_0x22e5('0x49')],_0x732fe6[_0x22e5('0xec')]);}}}}catch(_0x5ab72d){logger[_0x22e5('0x3f')](_0x22e5('0xeb'),_0x49339e[_0x22e5('0x49')],util[_0x22e5('0x3e')](_0x5ab72d,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x22e5('0x34')][_0x22e5('0x27')]=function(_0x5a0269){try{if(this[_0x22e5('0x64')](_0x5a0269)){logger[_0x22e5('0x47')](_0x22e5('0xed'),_0x5a0269['uniqueid'],util[_0x22e5('0x3e')](_0x5a0269,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x5a0269['uniqueid']]){var _0x3c8f8d=_[_0x22e5('0x8f')](this[_0x22e5('0xe')][_0x5a0269['uniqueid']]);if(!_[_0x22e5('0x38')](_0x3c8f8d[_0x22e5('0xec')])){_0x3c8f8d['mohtime']+=moment()['milliseconds'](0x0)[_0x22e5('0xce')](_0x3c8f8d[_0x22e5('0xec')],_0x22e5('0xa5'));logger[_0x22e5('0x8b')](_0x22e5('0xee'),_0x5a0269[_0x22e5('0x49')],_0x3c8f8d[_0x22e5('0xef')]);delete _0x3c8f8d[_0x22e5('0xec')];}}}}catch(_0x9823f4){logger[_0x22e5('0x3f')](_0x22e5('0xed'),_0x5a0269[_0x22e5('0x49')],util['inspect'](_0x9823f4,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x22e5('0xf0')]=function(_0x2cb5a9){try{if(this['isNotNull'](_0x2cb5a9)){logger[_0x22e5('0x47')](_0x22e5('0xf1'),_0x2cb5a9[_0x22e5('0x49')],util[_0x22e5('0x3e')](_0x2cb5a9,{'showHidden':![],'depth':null}));if(_0x2cb5a9['application']['toLowerCase']()==='set'){_0x2cb5a9[_0x22e5('0xf2')]=_0x2cb5a9['appdata']&&_0x2cb5a9['appdata'][_0x22e5('0xa1')](_0x22e5('0xf3'))?_0x2cb5a9[_0x22e5('0xf4')]:(_0x2cb5a9[_0x22e5('0xf4')]||_0x2cb5a9[_0x22e5('0xf2')])[_0x22e5('0xa2')]();if(_[_0x22e5('0xa1')](_0x2cb5a9[_0x22e5('0xf2')][_0x22e5('0xa2')](),'cdr(')){logger['info'](_0x22e5('0xf5'),_0x2cb5a9[_0x22e5('0x49')],_0x2cb5a9['application'],_0x2cb5a9['applicationdata']);if(_[_0x22e5('0x65')](this['channels'][_0x2cb5a9['uniqueid']]))this[_0x22e5('0x10')][_0x2cb5a9[_0x22e5('0x49')]]={};var _0x466851=_0x2cb5a9['applicationdata'][_0x22e5('0xf6')]('=');var _0x5a7dba=_0x466851[0x0]['toLowerCase']()[_0x22e5('0xf7')](/cdr\((.*)\)/);if(_0x5a7dba)this[_0x22e5('0x10')][_0x2cb5a9[_0x22e5('0x49')]][_0x5a7dba[0x1]]=_0x466851[0x1];}}}}catch(_0x27e0f6){logger[_0x22e5('0x3f')](_0x22e5('0xf8'),_0x2cb5a9[_0x22e5('0x49')],util[_0x22e5('0x3e')](_0x27e0f6,{'showHidden':![],'depth':null}));}};module[_0x22e5('0xf9')]=VoiceQueueReport;
\ No newline at end of file
index 57a17ac..6fbb83e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd27e=['campaign','queue','Request','CreateReportAgentPreview','../client','createHistory'];(function(_0x16aaef,_0x410651){var _0x1c82ef=function(_0x3d802b){while(--_0x3d802b){_0x16aaef['push'](_0x16aaef['shift']());}};_0x1c82ef(++_0x410651);}(_0xd27e,0xa6));var _0xed27=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xd27e[_0x4cf98e];return _0x1623ac;};'use strict';var client=require(_0xed27('0x0'));exports[_0xed27('0x1')]=function(_0x4eb99f){return function(){_0x4eb99f[_0xed27('0x2')]=_0x4eb99f[_0xed27('0x3')];return client[_0xed27('0x4')](_0xed27('0x5'),{'body':_0x4eb99f,'log':_0xed27('0x5')});};};
\ No newline at end of file
+var _0x20f2=['../client','createHistory','campaign','queue','Request','CreateReportAgentPreview'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x20f2,0x18c));var _0x220f=function(_0xd529bb,_0x1f208b){_0xd529bb=_0xd529bb-0x0;var _0x58a9d1=_0x20f2[_0xd529bb];return _0x58a9d1;};'use strict';var client=require(_0x220f('0x0'));exports[_0x220f('0x1')]=function(_0x5c143e){return function(){_0x5c143e[_0x220f('0x2')]=_0x5c143e[_0x220f('0x3')];return client[_0x220f('0x4')](_0x220f('0x5'),{'body':_0x5c143e,'log':_0x220f('0x5')});};};
\ No newline at end of file
index 1305be4..620d0e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf793=['create','CreateAttachment'];(function(_0x5b0a42,_0x4123b5){var _0x5063b4=function(_0x443e01){while(--_0x443e01){_0x5b0a42['push'](_0x5b0a42['shift']());}};_0x5063b4(++_0x4123b5);}(_0xf793,0x1ac));var _0x3f79=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf793[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports[_0x3f79('0x0')]=function(_0x54148c){return client['Request'](_0x3f79('0x1'),{'body':_0x54148c,'log':_0x3f79('0x1')});};
\ No newline at end of file
+var _0x7e37=['../client','create','CreateAttachment'];(function(_0x3ed75b,_0x47d97a){var _0x1af557=function(_0x3b86c5){while(--_0x3b86c5){_0x3ed75b['push'](_0x3ed75b['shift']());}};_0x1af557(++_0x47d97a);}(_0x7e37,0xf3));var _0x77e3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7e37[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x77e3('0x0'));exports[_0x77e3('0x1')]=function(_0x17bba7){return client['Request']('CreateAttachment',{'body':_0x17bba7,'log':_0x77e3('0x2')});};
\ No newline at end of file
index 7c09f1c..88c63ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','callerid','active','Interval','Intervals','interval','SquareProject','../client','getCampaigns','Request','name','type','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialBusyMaxRetry'];(function(_0x3998f4,_0x3d0ebb){var _0x562beb=function(_0x594bb8){while(--_0x594bb8){_0x3998f4['push'](_0x3998f4['shift']());}};_0x562beb(++_0x3d0ebb);}(_0x7a54,0x106));var _0x47a5=function(_0x368889,_0x24104b){_0x368889=_0x368889-0x0;var _0x5e3ec1=_0x7a54[_0x368889];return _0x5e3ec1;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(){return function(){return client[_0x47a5('0x2')]('GetCampaign',{'options':{'raw':![],'attributes':['id',_0x47a5('0x3'),_0x47a5('0x4'),'active',_0x47a5('0x5'),_0x47a5('0x6'),_0x47a5('0x7'),_0x47a5('0x8'),_0x47a5('0x9'),'dialCongestionRetryFrequency',_0x47a5('0xa'),'dialBusyRetryFrequency',_0x47a5('0xb'),_0x47a5('0xc'),'dialGlobalMaxRetry',_0x47a5('0xd'),'dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency',_0x47a5('0xe'),_0x47a5('0xf'),'dialMachineMaxRetry',_0x47a5('0x10'),'dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency',_0x47a5('0x11'),_0x47a5('0x12'),_0x47a5('0x13'),_0x47a5('0x14'),_0x47a5('0x15'),_0x47a5('0x16'),_0x47a5('0x17'),'dialAMDMinWordLength',_0x47a5('0x18'),_0x47a5('0x19'),_0x47a5('0x1a'),_0x47a5('0x1b'),_0x47a5('0x1c'),_0x47a5('0x1d'),_0x47a5('0x1e'),_0x47a5('0x1f')],'include':[{'model':'Trunk','as':_0x47a5('0x20'),'attributes':['id',_0x47a5('0x3'),_0x47a5('0x21'),_0x47a5('0x22')]},{'model':_0x47a5('0x20'),'as':'TrunkBackup','attributes':['id','name',_0x47a5('0x21'),'active']},{'model':'Interval','as':_0x47a5('0x23'),'attributes':['id',_0x47a5('0x3')],'include':[{'model':_0x47a5('0x23'),'as':_0x47a5('0x24'),'attributes':['id',_0x47a5('0x3'),_0x47a5('0x25')]}]},{'model':_0x47a5('0x26'),'as':_0x47a5('0x26'),'attributes':['id',_0x47a5('0x3')]}]},'log':'getCampaign'});};};
\ 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(_0x3ad7ad,_0x291a8d){var _0x225a60=function(_0xca7354){while(--_0xca7354){_0x3ad7ad['push'](_0x3ad7ad['shift']());}};_0x225a60(++_0x291a8d);}(_0x2ef3,0xba));var _0x32ef=function(_0xd3dec3,_0x27e976){_0xd3dec3=_0xd3dec3-0x0;var _0x2b169f=_0x2ef3[_0xd3dec3];return _0x2b169f;};'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 37883eb..efbb893 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4127=['../client','CreateCmContact','Request','GetCmContact'];(function(_0x27435f,_0x15a5cc){var _0xdbbb9e=function(_0x20658a){while(--_0x20658a){_0x27435f['push'](_0x27435f['shift']());}};_0xdbbb9e(++_0x15a5cc);}(_0x4127,0x16c));var _0x7412=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x4127[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0x7412('0x0'));exports['createContact']=function(_0x1dae8d){return function(){return client['Request'](_0x7412('0x1'),{'body':_0x1dae8d,'log':_0x7412('0x1')});};};exports['getContacts']=function(_0x41a94c){return function(){return client[_0x7412('0x2')](_0x7412('0x3'),{'options':_0x41a94c,'log':_0x7412('0x3')});};};
\ No newline at end of file
+var _0x1c44=['CreateCmContact','getContacts','GetCmContact','../client','createContact','Request'];(function(_0x28407a,_0x2a7269){var _0x8bd6ef=function(_0x3c886f){while(--_0x3c886f){_0x28407a['push'](_0x28407a['shift']());}};_0x8bd6ef(++_0x2a7269);}(_0x1c44,0x117));var _0x41c4=function(_0x2d0cb4,_0x563b99){_0x2d0cb4=_0x2d0cb4-0x0;var _0x418812=_0x1c44[_0x2d0cb4];return _0x418812;};'use strict';var client=require(_0x41c4('0x0'));exports[_0x41c4('0x1')]=function(_0x5ea5f8){return function(){return client[_0x41c4('0x2')](_0x41c4('0x3'),{'body':_0x5ea5f8,'log':'CreateCmContact'});};};exports[_0x41c4('0x4')]=function(_0x3be165){return function(){return client['Request'](_0x41c4('0x5'),{'options':_0x3be165,'log':_0x41c4('0x5')});};};
\ No newline at end of file
index d2a8344..3682340 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4c5=['handlePreviewRecallNotifications','CmHopperHandlePreviewRecallNotifications','../client','moment','GetCmHopper','updateContacts','Request','YYYY-MM-DD\x20HH:mm:ss','UpdateCmHopper','rescheduleContact','ContactId','VoiceQueueId','CampaignId','DestroyCmHopper','getContactDialer','format','priority','DESC','scheduledat','ASC','GetContactDialer','getContactDialerIvr','CmContact','GetContactDialerIvr','moveContactManagedDialer','campaign','queue','MoveContactManagedDialer','ListId','countReScheduled','CountReScheduled','GetCmHopperPreview','Contact','User','Agent','name','VoiceQueue','Queue','getCmHopper','unlockContact','GetContactRecallMe','voicePause','db.CmHopper.UserId','resetActiveCalls','ResetActiveCalls'];(function(_0x5e7b00,_0xeee410){var _0x46e993=function(_0x2fb17){while(--_0x2fb17){_0x5e7b00['push'](_0x5e7b00['shift']());}};_0x46e993(++_0xeee410);}(_0xb4c5,0x1c4));var _0x5b4c=function(_0x5c1404,_0x420d13){_0x5c1404=_0x5c1404-0x0;var _0x23f367=_0xb4c5[_0x5c1404];return _0x23f367;};'use strict';var client=require(_0x5b4c('0x0'));var moment=require(_0x5b4c('0x1'));exports['getContacts']=function(_0x482a51,_0x41b223){return function(){return client['Request'](_0x5b4c('0x2'),{'options':{'where':{'VoiceQueueId':_0x482a51},'include':[{'model':'CmContact','as':'Contact'}],'limit':_0x41b223,'raw':![]},'log':'getCmHopper'});};};exports[_0x5b4c('0x3')]=function(_0x1489ee,_0x4cab8e,_0x30c00b){return function(){return client[_0x5b4c('0x4')]('UpdateCmHopper',{'body':_0x1489ee,'options':{'where':{'VoiceQueueId':_0x4cab8e,'scheduledat':{'$lte':moment()['format'](_0x5b4c('0x5'))}},'limit':_0x30c00b},'log':_0x5b4c('0x6')});};};exports[_0x5b4c('0x7')]=function(_0x971294){return function(){return client[_0x5b4c('0x4')](_0x5b4c('0x6'),{'body':_0x971294,'options':{'where':{'ContactId':_0x971294[_0x5b4c('0x8')],'ListId':_0x971294['ListId'],'VoiceQueueId':_0x971294[_0x5b4c('0x9')],'CampaignId':_0x971294[_0x5b4c('0xa')]}},'log':_0x5b4c('0x7')});};};exports['destroyContact']=function(_0x11562f,_0x132ebd,_0x5eb785){return function(){return client[_0x5b4c('0x4')]('DestroyCmHopper',{'options':{'where':{'VoiceQueueId':_0x11562f,'ListId':_0x132ebd,'ContactId':_0x5eb785}},'log':_0x5b4c('0xb')});};};exports[_0x5b4c('0xc')]=function(_0x3f8a35,_0x7e4aa1,_0x40e4b5,_0xb9bec8){return function(){return client[_0x5b4c('0x4')]('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x3f8a35,'active':![],'scheduledat':{'$lte':moment()[_0x5b4c('0xd')](_0x5b4c('0x5'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x7e4aa1}}]},'order':[[_0x5b4c('0xe'),_0x5b4c('0xf')],[_0x5b4c('0x10'),_0xb9bec8],['id',_0x5b4c('0x11')]],'raw':!![],'limit':_0x40e4b5},'log':_0x5b4c('0x12')});};};exports[_0x5b4c('0x13')]=function(_0xfdfb8f,_0x11c7c6,_0x4bf587){return function(){return client[_0x5b4c('0x4')](_0x5b4c('0x12'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0xfdfb8f,'active':![],'scheduledat':{'$lte':moment()[_0x5b4c('0xd')]('YYYY-MM-DD\x20HH:mm:ss')}},'include':[{'model':_0x5b4c('0x14'),'as':'Contact'}],'order':[[_0x5b4c('0xe'),_0x5b4c('0xf')],[_0x5b4c('0x10'),_0x4bf587],['id','ASC']],'raw':!![],'limit':_0x11c7c6},'log':_0x5b4c('0x15')});};};exports[_0x5b4c('0x16')]=function(_0x5d94e6,_0x51c429){return function(){_0x5d94e6[_0x5b4c('0x17')]=_0x5d94e6[_0x5b4c('0x18')];return client[_0x5b4c('0x4')](_0x5b4c('0x19'),{'body':_0x5d94e6,'options':{'where':{'ContactId':_0x5d94e6['ContactId'],'ListId':_0x5d94e6[_0x5b4c('0x1a')],'VoiceQueueId':_0x5d94e6[_0x5b4c('0x9')],'CampaignId':_0x5d94e6[_0x5b4c('0xa')],'active':_0x51c429?undefined:!![]}},'log':_0x5b4c('0x19')});};};exports[_0x5b4c('0x1b')]=function(_0xf6084d){return function(){return client[_0x5b4c('0x4')](_0x5b4c('0x1c'),{'options':{'where':{'VoiceQueueId':_0xf6084d['id']?_0xf6084d['id']||null:null}},'log':_0x5b4c('0x1b')});};};exports['getContactPreview']=function(_0x5da08e){return function(){return client[_0x5b4c('0x4')](_0x5b4c('0x1d'),{'options':{'where':{'id':_0x5da08e},'include':[{'model':_0x5b4c('0x14'),'as':_0x5b4c('0x1e')},{'model':_0x5b4c('0x1f'),'as':_0x5b4c('0x20'),'attributes':['id',_0x5b4c('0x21')]},{'model':_0x5b4c('0x22'),'as':_0x5b4c('0x23'),'attributes':['id',_0x5b4c('0x21')]}],'raw':!![]},'log':_0x5b4c('0x24')});};};exports[_0x5b4c('0x25')]=function(_0x589b10,_0x463ad3,_0x457386){return function(){return client['Request']('UpdateCmHopper',{'body':_0x589b10,'options':{'where':{'id':_0x463ad3},'limit':_0x457386},'log':'UpdateCmHopper'});};};exports['getContactRecallMe']=function(_0x2f4ab4,_0x28f998){return function(){return client['Request'](_0x5b4c('0x26'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x2f4ab4,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x5b4c('0xd')]('YYYY-MM-DD\x20HH:mm:ss')},'UserId':{'$in':_0x28f998}},'order':[[_0x5b4c('0xe'),_0x5b4c('0xf')],['scheduledat','DESC'],['id',_0x5b4c('0x11')]],'include':[{'model':_0x5b4c('0x14'),'as':_0x5b4c('0x1e')},{'model':_0x5b4c('0x1f'),'as':_0x5b4c('0x20'),'attributes':['id',_0x5b4c('0x21'),_0x5b4c('0x27')]}],'group':_0x5b4c('0x28'),'raw':!![]},'log':_0x5b4c('0x12')});};};exports[_0x5b4c('0x29')]=function(_0x582ee4){return function(){return client[_0x5b4c('0x4')](_0x5b4c('0x2a'),{'body':_0x582ee4,'options':{},'log':_0x5b4c('0x2a')});};};exports[_0x5b4c('0x2b')]=function(_0x3f30d3,_0x134e32,_0x431728){return function(){return client[_0x5b4c('0x4')](_0x5b4c('0x2c'),{'body':{'where':{'voiceQueueIds':_0x3f30d3,'interval':_0x134e32,'availableAgentsIds':_0x431728}},'log':_0x5b4c('0x2b')});};};
\ No newline at end of file
+var _0x32cc=['ContactId','ListId','VoiceQueueId','destroyContact','DestroyCmHopper','GetContactDialer','priority','DESC','scheduledat','ASC','moveContactManagedDialer','campaign','queue','MoveContactManagedDialer','CampaignId','countReScheduled','CountReScheduled','getContactPreview','VoiceQueue','Queue','name','getContactRecallMe','GetContactRecallMe','Agent','voicePause','db.CmHopper.UserId','resetActiveCalls','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','handlePreviewRecallNotifications','moment','getContacts','Request','GetCmHopper','CmContact','Contact','getCmHopper','updateContacts','format','YYYY-MM-DD\x20HH:mm:ss','UpdateCmHopper','rescheduleContact'];(function(_0x3ca9d0,_0x35c19b){var _0xab8936=function(_0x5b372c){while(--_0x5b372c){_0x3ca9d0['push'](_0x3ca9d0['shift']());}};_0xab8936(++_0x35c19b);}(_0x32cc,0x11a));var _0xc32c=function(_0x2a86ef,_0x589d9b){_0x2a86ef=_0x2a86ef-0x0;var _0x2a7f48=_0x32cc[_0x2a86ef];return _0x2a7f48;};'use strict';var client=require('../client');var moment=require(_0xc32c('0x0'));exports[_0xc32c('0x1')]=function(_0x557c24,_0x39a91d){return function(){return client[_0xc32c('0x2')](_0xc32c('0x3'),{'options':{'where':{'VoiceQueueId':_0x557c24},'include':[{'model':_0xc32c('0x4'),'as':_0xc32c('0x5')}],'limit':_0x39a91d,'raw':![]},'log':_0xc32c('0x6')});};};exports[_0xc32c('0x7')]=function(_0x5c7c1e,_0x4bce9a,_0x20dbbe){return function(){return client[_0xc32c('0x2')]('UpdateCmHopper',{'body':_0x5c7c1e,'options':{'where':{'VoiceQueueId':_0x4bce9a,'scheduledat':{'$lte':moment()[_0xc32c('0x8')](_0xc32c('0x9'))}},'limit':_0x20dbbe},'log':_0xc32c('0xa')});};};exports[_0xc32c('0xb')]=function(_0x18448b){return function(){return client[_0xc32c('0x2')](_0xc32c('0xa'),{'body':_0x18448b,'options':{'where':{'ContactId':_0x18448b[_0xc32c('0xc')],'ListId':_0x18448b[_0xc32c('0xd')],'VoiceQueueId':_0x18448b[_0xc32c('0xe')],'CampaignId':_0x18448b['CampaignId']}},'log':'rescheduleContact'});};};exports[_0xc32c('0xf')]=function(_0x27564b,_0x3b15f1,_0x5579f4){return function(){return client[_0xc32c('0x2')](_0xc32c('0x10'),{'options':{'where':{'VoiceQueueId':_0x27564b,'ListId':_0x3b15f1,'ContactId':_0x5579f4}},'log':'DestroyCmHopper'});};};exports['getContactDialer']=function(_0x1205e1,_0x3edf1a,_0x2360c6,_0x18e9a3){return function(){return client[_0xc32c('0x2')](_0xc32c('0x11'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x1205e1,'active':![],'scheduledat':{'$lte':moment()[_0xc32c('0x8')](_0xc32c('0x9'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x3edf1a}}]},'order':[[_0xc32c('0x12'),_0xc32c('0x13')],[_0xc32c('0x14'),_0x18e9a3],['id','ASC']],'raw':!![],'limit':_0x2360c6},'log':_0xc32c('0x11')});};};exports['getContactDialerIvr']=function(_0x7cafb8,_0x441a27,_0x4e5474){return function(){return client[_0xc32c('0x2')](_0xc32c('0x11'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x7cafb8,'active':![],'scheduledat':{'$lte':moment()[_0xc32c('0x8')]('YYYY-MM-DD\x20HH:mm:ss')}},'include':[{'model':_0xc32c('0x4'),'as':_0xc32c('0x5')}],'order':[[_0xc32c('0x12'),_0xc32c('0x13')],['scheduledat',_0x4e5474],['id',_0xc32c('0x15')]],'raw':!![],'limit':_0x441a27},'log':'GetContactDialerIvr'});};};exports[_0xc32c('0x16')]=function(_0x242ce1,_0x11e610){return function(){_0x242ce1[_0xc32c('0x17')]=_0x242ce1[_0xc32c('0x18')];return client['Request'](_0xc32c('0x19'),{'body':_0x242ce1,'options':{'where':{'ContactId':_0x242ce1['ContactId'],'ListId':_0x242ce1[_0xc32c('0xd')],'VoiceQueueId':_0x242ce1[_0xc32c('0xe')],'CampaignId':_0x242ce1[_0xc32c('0x1a')],'active':_0x11e610?undefined:!![]}},'log':_0xc32c('0x19')});};};exports[_0xc32c('0x1b')]=function(_0x325465){return function(){return client['Request'](_0xc32c('0x1c'),{'options':{'where':{'VoiceQueueId':_0x325465['id']?_0x325465['id']||null:null}},'log':'countReScheduled'});};};exports[_0xc32c('0x1d')]=function(_0x5446c7){return function(){return client[_0xc32c('0x2')]('GetCmHopperPreview',{'options':{'where':{'id':_0x5446c7},'include':[{'model':_0xc32c('0x4'),'as':_0xc32c('0x5')},{'model':'User','as':'Agent','attributes':['id','name']},{'model':_0xc32c('0x1e'),'as':_0xc32c('0x1f'),'attributes':['id',_0xc32c('0x20')]}],'raw':!![]},'log':'getCmHopper'});};};exports['unlockContact']=function(_0x2e5dbb,_0x5a60d0,_0x336285){return function(){return client[_0xc32c('0x2')](_0xc32c('0xa'),{'body':_0x2e5dbb,'options':{'where':{'id':_0x5a60d0},'limit':_0x336285},'log':_0xc32c('0xa')});};};exports[_0xc32c('0x21')]=function(_0x5ca0c8,_0x2ab344){return function(){return client[_0xc32c('0x2')](_0xc32c('0x22'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x5ca0c8,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()['format'](_0xc32c('0x9'))},'UserId':{'$in':_0x2ab344}},'order':[[_0xc32c('0x12'),_0xc32c('0x13')],['scheduledat','DESC'],['id','ASC']],'include':[{'model':_0xc32c('0x4'),'as':_0xc32c('0x5')},{'model':'User','as':_0xc32c('0x23'),'attributes':['id',_0xc32c('0x20'),_0xc32c('0x24')]}],'group':_0xc32c('0x25'),'raw':!![]},'log':_0xc32c('0x11')});};};exports[_0xc32c('0x26')]=function(_0x3a5415){return function(){return client[_0xc32c('0x2')](_0xc32c('0x27'),{'body':_0x3a5415,'options':{},'log':'ResetActiveCalls'});};};exports['handlePreviewRecallNotifications']=function(_0x18db59,_0x596682,_0x486113){return function(){return client[_0xc32c('0x2')](_0xc32c('0x28'),{'body':{'where':{'voiceQueueIds':_0x18db59,'interval':_0x596682,'availableAgentsIds':_0x486113}},'log':_0xc32c('0x29')});};};
\ No newline at end of file
index 9b0d8bf..307cd8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ad4=['Request','SwapAdditionalPhones','incrementPreviewCounters','IncrementPreviewCounters','../client','moment','VerifyAdditionalPhones','swapAdditionalPhones'];(function(_0x479b99,_0x1e5bec){var _0x1e7eb7=function(_0x52ac6c){while(--_0x52ac6c){_0x479b99['push'](_0x479b99['shift']());}};_0x1e7eb7(++_0x1e5bec);}(_0x5ad4,0xcc));var _0x45ad=function(_0x56e409,_0x504f45){_0x56e409=_0x56e409-0x0;var _0x172b4b=_0x5ad4[_0x56e409];return _0x172b4b;};'use strict';var client=require(_0x45ad('0x0'));var moment=require(_0x45ad('0x1'));exports['verifyAdditionalPhones']=function(_0x1a0a26,_0x35eac8,_0x4e9b92){return function(){return client['Request']('VerifyAdditionalPhones',{'body':_0x1a0a26,'reason':_0x35eac8,'entity':_0x4e9b92,'log':_0x45ad('0x2')});};};exports[_0x45ad('0x3')]=function(_0x80ce92,_0x996e23,_0x4e06f3){return function(){return client[_0x45ad('0x4')](_0x45ad('0x5'),{'body':_0x80ce92,'duration':_0x996e23,'waitTime':_0x4e06f3,'log':'SwapAdditionalPhones'});};};exports[_0x45ad('0x6')]=function(_0x209f3d){return function(){return client[_0x45ad('0x4')]('IncrementPreviewCounters',{'body':_0x209f3d,'log':_0x45ad('0x7')});};};
\ No newline at end of file
+var _0x72a7=['swapAdditionalPhones','Request','SwapAdditionalPhones','IncrementPreviewCounters','../client','moment','verifyAdditionalPhones','VerifyAdditionalPhones'];(function(_0x4b9926,_0x3799b){var _0x2690ee=function(_0x3ef208){while(--_0x3ef208){_0x4b9926['push'](_0x4b9926['shift']());}};_0x2690ee(++_0x3799b);}(_0x72a7,0xcc));var _0x772a=function(_0x1fe897,_0x1cebb2){_0x1fe897=_0x1fe897-0x0;var _0x40dafd=_0x72a7[_0x1fe897];return _0x40dafd;};'use strict';var client=require(_0x772a('0x0'));var moment=require(_0x772a('0x1'));exports[_0x772a('0x2')]=function(_0x84ce0d,_0x1fd886,_0x12a5fa){return function(){return client['Request'](_0x772a('0x3'),{'body':_0x84ce0d,'reason':_0x1fd886,'entity':_0x12a5fa,'log':_0x772a('0x3')});};};exports[_0x772a('0x4')]=function(_0x5b13d6,_0x42edef,_0xc1defb){return function(){return client[_0x772a('0x5')](_0x772a('0x6'),{'body':_0x5b13d6,'duration':_0x42edef,'waitTime':_0xc1defb,'log':_0x772a('0x6')});};};exports['incrementPreviewCounters']=function(_0x56071d){return function(){return client[_0x772a('0x5')]('IncrementPreviewCounters',{'body':_0x56071d,'log':_0x772a('0x7')});};};
\ No newline at end of file
index 57f4aee..f1d68f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa8f=['phone','checkIsBlackListIvr','Request','CampaignId','GetCmHopperBlackIvr','GetCmHopperBlack'];(function(_0x4138de,_0x34c83c){var _0x18d313=function(_0x241b8b){while(--_0x241b8b){_0x4138de['push'](_0x4138de['shift']());}};_0x18d313(++_0x34c83c);}(_0xfa8f,0x8f));var _0xffa8=function(_0x200015,_0x4ff37d){_0x200015=_0x200015-0x0;var _0x59647e=_0xfa8f[_0x200015];return _0x59647e;};'use strict';var client=require('../client');exports['checkIsBlackList']=function(_0x5921f1){return function(){return client['Request'](_0xffa8('0x0'),{'options':{'where':{'VoiceQueueId':_0x5921f1['VoiceQueueId'],'phone':_0x5921f1[_0xffa8('0x1')]},'raw':![]},'log':_0xffa8('0x0')});};};exports[_0xffa8('0x2')]=function(_0x779dba){return function(){return client[_0xffa8('0x3')](_0xffa8('0x0'),{'options':{'where':{'CampaignId':_0x779dba[_0xffa8('0x4')],'phone':_0x779dba[_0xffa8('0x1')]},'raw':![]},'log':_0xffa8('0x5')});};};
\ No newline at end of file
+var _0xf8fc=['GetCmHopperBlackIvr','../client','checkIsBlackList','Request','phone','GetCmHopperBlack','CampaignId'];(function(_0x124f33,_0x2e8f77){var _0x575ca9=function(_0x9b91ba){while(--_0x9b91ba){_0x124f33['push'](_0x124f33['shift']());}};_0x575ca9(++_0x2e8f77);}(_0xf8fc,0x190));var _0xcf8f=function(_0x255d5b,_0x4f6f35){_0x255d5b=_0x255d5b-0x0;var _0x3e141a=_0xf8fc[_0x255d5b];return _0x3e141a;};'use strict';var client=require(_0xcf8f('0x0'));exports[_0xcf8f('0x1')]=function(_0x4345a2){return function(){return client[_0xcf8f('0x2')]('GetCmHopperBlack',{'options':{'where':{'VoiceQueueId':_0x4345a2['VoiceQueueId'],'phone':_0x4345a2[_0xcf8f('0x3')]},'raw':![]},'log':_0xcf8f('0x4')});};};exports['checkIsBlackListIvr']=function(_0x4a431e){return function(){return client[_0xcf8f('0x2')](_0xcf8f('0x4'),{'options':{'where':{'CampaignId':_0x4a431e[_0xcf8f('0x5')],'phone':_0x4a431e[_0xcf8f('0x3')]},'raw':![]},'log':_0xcf8f('0x6')});};};
\ No newline at end of file
index cc8d0b1..446d075 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71c9=['createContact','campaign','CreateCmHopperFinal','../client'];(function(_0x39b352,_0x5db49d){var _0x4a39d3=function(_0x277004){while(--_0x277004){_0x39b352['push'](_0x39b352['shift']());}};_0x4a39d3(++_0x5db49d);}(_0x71c9,0x13f));var _0x971c=function(_0x5da1bf,_0x5445c2){_0x5da1bf=_0x5da1bf-0x0;var _0x56dd65=_0x71c9[_0x5da1bf];return _0x56dd65;};'use strict';var client=require(_0x971c('0x0'));exports[_0x971c('0x1')]=function(_0x2871be){return function(){_0x2871be[_0x971c('0x2')]=_0x2871be['queue'];return client['Request'](_0x971c('0x3'),{'body':_0x2871be,'log':'CreateCmHopperFinal'});};};
\ No newline at end of file
+var _0xba2c=['CreateCmHopperFinal','../client','campaign','Request'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xba2c,0x8d));var _0xcba2=function(_0x4fb1b1,_0x265b4f){_0x4fb1b1=_0x4fb1b1-0x0;var _0x4fed7d=_0xba2c[_0x4fb1b1];return _0x4fed7d;};'use strict';var client=require(_0xcba2('0x0'));exports['createContact']=function(_0x562e5d){return function(){_0x562e5d[_0xcba2('0x1')]=_0x562e5d['queue'];return client[_0xcba2('0x2')](_0xcba2('0x3'),{'body':_0x562e5d,'log':_0xcba2('0x3')});};};
\ No newline at end of file
index fb47c96..05c0a5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd174=['AvgHandleTime','subtract','minutes','format','YYYY-MM-DD\x20HH:mm:ss','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','day','endOf','startOf','ivr','GetCampaignHopperHistory','createHistory','queue','Request','CreateCmHopperHistory','avgHandleTime'];(function(_0x417291,_0x189772){var _0x2659de=function(_0x553d3a){while(--_0x553d3a){_0x417291['push'](_0x417291['shift']());}};_0x2659de(++_0x189772);}(_0xd174,0x13e));var _0x4d17=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd174[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');var moment=require('moment');exports[_0x4d17('0x0')]=function(_0x5b9cf6){return function(){_0x5b9cf6['campaign']=_0x5b9cf6[_0x4d17('0x1')];return client[_0x4d17('0x2')](_0x4d17('0x3'),{'body':_0x5b9cf6,'log':'CreateCmHopperHistory'});};};exports[_0x4d17('0x4')]=function(_0x479ce7){return function(){return client[_0x4d17('0x2')](_0x4d17('0x5'),{'options':{'where':{'endtime':{'$between':[moment()[_0x4d17('0x6')](_0x479ce7,_0x4d17('0x7'))[_0x4d17('0x8')](_0x4d17('0x9')),moment()[_0x4d17('0x8')]('YYYY-MM-DD\x20HH:mm:ss')]}},'raw':![]},'log':'GetCmHopperHistory'});};};exports[_0x4d17('0xa')]=function(_0x117342){return function(){return client[_0x4d17('0x2')](_0x4d17('0xb'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf'](_0x4d17('0xc'))[_0x4d17('0x8')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0x4d17('0xd')](_0x4d17('0xc'))['format'](_0x4d17('0x9'))]},'campaigntype':_0x4d17('0x1')},'raw':![]},'log':_0x4d17('0xb')});};};exports['getCampaignHopperHistory']=function(_0x488809){return function(){return client[_0x4d17('0x2')]('GetCampaignHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0x4d17('0xe')](_0x4d17('0xc'))[_0x4d17('0x8')](_0x4d17('0x9')),moment()[_0x4d17('0xd')]('day')['format'](_0x4d17('0x9'))]},'campaigntype':_0x4d17('0xf')},'raw':![]},'log':_0x4d17('0x10')});};};
\ No newline at end of file
+var _0x8d36=['startOf','day','getCampaignHopperHistory','GetCampaignHopperHistory','endOf','ivr','../client','moment','createHistory','campaign','queue','Request','AvgHandleTime','minutes','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory'];(function(_0x3074b9,_0x115e0c){var _0x1d9b8b=function(_0x57bc7d){while(--_0x57bc7d){_0x3074b9['push'](_0x3074b9['shift']());}};_0x1d9b8b(++_0x115e0c);}(_0x8d36,0x16f));var _0x68d3=function(_0x39d481,_0x23c1a2){_0x39d481=_0x39d481-0x0;var _0x3b22d0=_0x8d36[_0x39d481];return _0x3b22d0;};'use strict';var client=require(_0x68d3('0x0'));var moment=require(_0x68d3('0x1'));exports[_0x68d3('0x2')]=function(_0x2d2bfd){return function(){_0x2d2bfd[_0x68d3('0x3')]=_0x2d2bfd[_0x68d3('0x4')];return client[_0x68d3('0x5')]('CreateCmHopperHistory',{'body':_0x2d2bfd,'log':'CreateCmHopperHistory'});};};exports['avgHandleTime']=function(_0x2e3842){return function(){return client[_0x68d3('0x5')](_0x68d3('0x6'),{'options':{'where':{'endtime':{'$between':[moment()['subtract'](_0x2e3842,_0x68d3('0x7'))[_0x68d3('0x8')](_0x68d3('0x9')),moment()['format'](_0x68d3('0x9'))]}},'raw':![]},'log':_0x68d3('0xa')});};};exports[_0x68d3('0xb')]=function(_0x5458e0){return function(){return client[_0x68d3('0x5')](_0x68d3('0xc'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x68d3('0xd')](_0x68d3('0xe'))[_0x68d3('0x8')](_0x68d3('0x9')),moment()['endOf'](_0x68d3('0xe'))[_0x68d3('0x8')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':'queue'},'raw':![]},'log':'GetVoiceQueueHopperHistory'});};};exports[_0x68d3('0xf')]=function(_0x10cd84){return function(){return client['Request'](_0x68d3('0x10'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x68d3('0xd')](_0x68d3('0xe'))['format'](_0x68d3('0x9')),moment()[_0x68d3('0x11')]('day')[_0x68d3('0x8')](_0x68d3('0x9'))]},'campaigntype':_0x68d3('0x12')},'raw':![]},'log':_0x68d3('0x10')});};};
\ No newline at end of file
index 53b3aad..dbc6982 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eb8=['TrunkId','ListId','Trunk','callerid','active','getFaxAccount','notify','NotifyFaxAccount','Request','GetFaxAccount','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','gateway','faxdetect','tech'];(function(_0x2882da,_0x467427){var _0x351813=function(_0x195616){while(--_0x195616){_0x2882da['push'](_0x2882da['shift']());}};_0x351813(++_0x467427);}(_0x5eb8,0xb0));var _0x85eb=function(_0x53f218,_0x27514c){_0x53f218=_0x53f218-0x0;var _0x21890a=_0x5eb8[_0x53f218];return _0x21890a;};'use strict';var client=require('../client');exports['getFaxAccounts']=function(){return function(){return client[_0x85eb('0x0')](_0x85eb('0x1'),{'options':{'raw':![],'attributes':['id',_0x85eb('0x2'),_0x85eb('0x3'),_0x85eb('0x4'),_0x85eb('0x5'),_0x85eb('0x6'),_0x85eb('0x7'),_0x85eb('0x8'),_0x85eb('0x9'),_0x85eb('0xa'),_0x85eb('0xb'),'t38timeout',_0x85eb('0xc'),_0x85eb('0xd'),_0x85eb('0xe'),'key'],'include':[{'model':_0x85eb('0xf'),'as':'Trunk','attributes':['id',_0x85eb('0x2'),_0x85eb('0x10'),_0x85eb('0x11')]}]},'log':_0x85eb('0x12')});};};exports[_0x85eb('0x13')]=function(_0x73e6d0,_0x2c7fd3){return client['Request'](_0x85eb('0x14'),{'account':{'id':_0x73e6d0},'body':_0x2c7fd3,'log':_0x85eb('0x14')});};
\ No newline at end of file
+var _0x2cf5=['description','ecm','minrate','maxrate','modem','gateway','faxdetect','t38timeout','tech','TrunkId','ListId','key','Trunk','name','callerid','active','getFaxAccount','Request','NotifyFaxAccount','../client','getFaxAccounts','GetFaxAccount'];(function(_0x21c8a9,_0x5687f4){var _0x1f8a72=function(_0x54f365){while(--_0x54f365){_0x21c8a9['push'](_0x21c8a9['shift']());}};_0x1f8a72(++_0x5687f4);}(_0x2cf5,0x19f));var _0x52cf=function(_0x4b1806,_0x159f9a){_0x4b1806=_0x4b1806-0x0;var _0x11fd5e=_0x2cf5[_0x4b1806];return _0x11fd5e;};'use strict';var client=require(_0x52cf('0x0'));exports[_0x52cf('0x1')]=function(){return function(){return client['Request'](_0x52cf('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x52cf('0x3'),_0x52cf('0x4'),'headerinfo','localstationid',_0x52cf('0x5'),_0x52cf('0x6'),_0x52cf('0x7'),_0x52cf('0x8'),_0x52cf('0x9'),_0x52cf('0xa'),_0x52cf('0xb'),_0x52cf('0xc'),_0x52cf('0xd'),_0x52cf('0xe')],'include':[{'model':_0x52cf('0xf'),'as':'Trunk','attributes':['id',_0x52cf('0x10'),_0x52cf('0x11'),_0x52cf('0x12')]}]},'log':_0x52cf('0x13')});};};exports['notify']=function(_0xadb2a6,_0x154197){return client[_0x52cf('0x14')]('NotifyFaxAccount',{'account':{'id':_0xadb2a6},'body':_0x154197,'log':_0x52cf('0x15')});};
\ No newline at end of file
index 526e9a0..6cedccc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75e4=['update','Request','UpdateFaxMessage','../client'];(function(_0x52ded2,_0x12f434){var _0x2675fc=function(_0x5d5761){while(--_0x5d5761){_0x52ded2['push'](_0x52ded2['shift']());}};_0x2675fc(++_0x12f434);}(_0x75e4,0x123));var _0x475e=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x75e4[_0xfae23b];return _0x200640;};'use strict';var client=require(_0x475e('0x0'));exports[_0x475e('0x1')]=function(_0x1153d8,_0x19cbda){return client[_0x475e('0x2')](_0x475e('0x3'),{'body':_0x19cbda,'options':{'where':{'AttachmentId':_0x1153d8}},'log':'UpdateFaxMessage'});};
\ No newline at end of file
+var _0xaa49=['Request','UpdateFaxMessage','update'];(function(_0x21353c,_0x2ea587){var _0xa99120=function(_0x557f33){while(--_0x557f33){_0x21353c['push'](_0x21353c['shift']());}};_0xa99120(++_0x2ea587);}(_0xaa49,0x146));var _0x9aa4=function(_0x51f6be,_0x30bd40){_0x51f6be=_0x51f6be-0x0;var _0x613fe7=_0xaa49[_0x51f6be];return _0x613fe7;};'use strict';var client=require('../client');exports[_0x9aa4('0x0')]=function(_0x1d8792,_0x259784){return client[_0x9aa4('0x1')](_0x9aa4('0x2'),{'body':_0x259784,'options':{'where':{'AttachmentId':_0x1d8792}},'log':'UpdateFaxMessage'});};
\ No newline at end of file
index dffda94..3b994b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49da=['serverUrl','Configurations','name','DeskField','Subjects','content','variableName','Variable','keyType','keyContent','nameField','customField','Tag','../../client','getDeskAccounts','Request','GetDeskAccount','description','username','password','remoteUri','type'];(function(_0x37ac54,_0x522331){var _0x43fb45=function(_0x35bbf9){while(--_0x35bbf9){_0x37ac54['push'](_0x37ac54['shift']());}};_0x43fb45(++_0x522331);}(_0x49da,0x65));var _0xa49d=function(_0x4769c2,_0x17c5d9){_0x4769c2=_0x4769c2-0x0;var _0x4c0e2f=_0x49da[_0x4769c2];return _0x4c0e2f;};'use strict';var client=require(_0xa49d('0x0'));exports[_0xa49d('0x1')]=function(){return function(_0x477371){return client[_0xa49d('0x2')](_0xa49d('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xa49d('0x4'),_0xa49d('0x5'),_0xa49d('0x6'),_0xa49d('0x7'),'authType',_0xa49d('0x8'),_0xa49d('0x9')],'include':[{'model':'DeskConfiguration','as':_0xa49d('0xa'),'attributes':['id',_0xa49d('0xb')],'include':[{'model':_0xa49d('0xc'),'as':_0xa49d('0xd'),'attributes':['id',_0xa49d('0x8'),_0xa49d('0xe'),_0xa49d('0xf')],'include':[{'model':_0xa49d('0x10'),'as':_0xa49d('0x10'),'attributes':['id',_0xa49d('0xb')]}]},{'model':'DeskField','as':'Descriptions','attributes':['id','type',_0xa49d('0xe'),'key',_0xa49d('0x11'),_0xa49d('0x12'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]},{'model':_0xa49d('0xc'),'as':'Fields','attributes':['id',_0xa49d('0x8'),_0xa49d('0xe'),'idField',_0xa49d('0x13'),_0xa49d('0x14'),_0xa49d('0xf')],'include':[{'model':_0xa49d('0x10'),'as':_0xa49d('0x10'),'attributes':['id',_0xa49d('0xb')]}]},{'model':_0xa49d('0x15'),'as':'Tags','attributes':['id',_0xa49d('0xb')]}]}]},'log':_0xa49d('0x3')});};};
\ No newline at end of file
+var _0x737d=['authType','type','serverUrl','DeskConfiguration','Configurations','DeskField','variableName','Variable','Descriptions','content','key','keyType','keyContent','Fields','idField','customField','Tag','Tags','../../client','getDeskAccounts','Request','GetDeskAccount','name','description','username','password'];(function(_0x5d4345,_0x18e600){var _0x5178c8=function(_0x3138ea){while(--_0x3138ea){_0x5d4345['push'](_0x5d4345['shift']());}};_0x5178c8(++_0x18e600);}(_0x737d,0xe2));var _0xd737=function(_0xcadec2,_0x1af220){_0xcadec2=_0xcadec2-0x0;var _0x1ba704=_0x737d[_0xcadec2];return _0x1ba704;};'use strict';var client=require(_0xd737('0x0'));exports[_0xd737('0x1')]=function(){return function(_0x63337f){return client[_0xd737('0x2')](_0xd737('0x3'),{'options':{'raw':![],'attributes':['id',_0xd737('0x4'),_0xd737('0x5'),_0xd737('0x6'),_0xd737('0x7'),'remoteUri',_0xd737('0x8'),_0xd737('0x9'),_0xd737('0xa')],'include':[{'model':_0xd737('0xb'),'as':_0xd737('0xc'),'attributes':['id',_0xd737('0x4')],'include':[{'model':_0xd737('0xd'),'as':'Subjects','attributes':['id',_0xd737('0x9'),'content',_0xd737('0xe')],'include':[{'model':'Variable','as':_0xd737('0xf'),'attributes':['id',_0xd737('0x4')]}]},{'model':_0xd737('0xd'),'as':_0xd737('0x10'),'attributes':['id',_0xd737('0x9'),_0xd737('0x11'),_0xd737('0x12'),_0xd737('0x13'),_0xd737('0x14'),_0xd737('0xe')],'include':[{'model':'Variable','as':_0xd737('0xf'),'attributes':['id','name']}]},{'model':_0xd737('0xd'),'as':_0xd737('0x15'),'attributes':['id',_0xd737('0x9'),_0xd737('0x11'),_0xd737('0x16'),'nameField',_0xd737('0x17'),'variableName'],'include':[{'model':_0xd737('0xf'),'as':_0xd737('0xf'),'attributes':['id',_0xd737('0x4')]}]},{'model':_0xd737('0x18'),'as':_0xd737('0x19'),'attributes':['id',_0xd737('0x4')]}]}]},'log':'GetDeskAccount'});};};
\ No newline at end of file
index a58e09d..2ded00e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7072=['serverUrl','description','modernAuthentication','Dynamics365Configuration','Configurations','ticketType','moduleCreate','Dynamics365Field','Subjects','type','content','variableName','Variable','Descriptions','key','keyContent','Fields','idField','nameField','CloudProvider','data5','data7','getDynamics365Accounts','Request','GetDynamics365Account','name','remoteUri','clientId','clientSecret'];(function(_0x376b45,_0x5964fb){var _0x2341b3=function(_0x5a7f01){while(--_0x5a7f01){_0x376b45['push'](_0x376b45['shift']());}};_0x2341b3(++_0x5964fb);}(_0x7072,0x138));var _0x2707=function(_0x54d4a8,_0x585a59){_0x54d4a8=_0x54d4a8-0x0;var _0x3b321b=_0x7072[_0x54d4a8];return _0x3b321b;};'use strict';var client=require('../../client');exports[_0x2707('0x0')]=function(){return function(_0x2bb701){return client[_0x2707('0x1')](_0x2707('0x2'),{'options':{'raw':![],'attributes':['id',_0x2707('0x3'),'username','password',_0x2707('0x4'),'tenantId',_0x2707('0x5'),_0x2707('0x6'),_0x2707('0x7'),_0x2707('0x8'),_0x2707('0x9')],'include':[{'model':_0x2707('0xa'),'as':_0x2707('0xb'),'attributes':['id',_0x2707('0x3'),_0x2707('0xc'),_0x2707('0xd'),'additionalSearchContact','openNewTab'],'include':[{'model':_0x2707('0xe'),'as':_0x2707('0xf'),'attributes':['id',_0x2707('0x10'),_0x2707('0x11'),_0x2707('0x12')],'include':[{'model':_0x2707('0x13'),'as':_0x2707('0x13'),'attributes':['id',_0x2707('0x3')]}]},{'model':_0x2707('0xe'),'as':_0x2707('0x14'),'attributes':['id',_0x2707('0x10'),_0x2707('0x11'),_0x2707('0x15'),'keyType',_0x2707('0x16'),'variableName'],'include':[{'model':_0x2707('0x13'),'as':_0x2707('0x13'),'attributes':['id',_0x2707('0x3')]}]},{'model':_0x2707('0xe'),'as':_0x2707('0x17'),'attributes':['id','type',_0x2707('0x11'),_0x2707('0x18'),_0x2707('0x19'),'customField',_0x2707('0x12')],'include':[{'model':_0x2707('0x13'),'as':_0x2707('0x13'),'attributes':['id',_0x2707('0x3')]}]}]},{'model':_0x2707('0x1a'),'as':_0x2707('0x1a'),'attributes':['id','data2',_0x2707('0x1b'),_0x2707('0x1c')]}]},'log':_0x2707('0x2')});};};
\ No newline at end of file
+var _0x0b44=['GetDynamics365Account','name','remoteUri','tenantId','clientId','clientSecret','serverUrl','description','modernAuthentication','Dynamics365Configuration','Configurations','ticketType','moduleCreate','additionalSearchContact','Dynamics365Field','Subjects','type','content','variableName','Variable','Descriptions','keyContent','Fields','idField','customField','data2','data5','data7','../../client','getDynamics365Accounts'];(function(_0x39780c,_0x5782c9){var _0x53c19b=function(_0x594f01){while(--_0x594f01){_0x39780c['push'](_0x39780c['shift']());}};_0x53c19b(++_0x5782c9);}(_0x0b44,0x166));var _0x40b4=function(_0x587371,_0x5b5805){_0x587371=_0x587371-0x0;var _0x236b8d=_0x0b44[_0x587371];return _0x236b8d;};'use strict';var client=require(_0x40b4('0x0'));exports[_0x40b4('0x1')]=function(){return function(_0x802e50){return client['Request'](_0x40b4('0x2'),{'options':{'raw':![],'attributes':['id',_0x40b4('0x3'),'username','password',_0x40b4('0x4'),_0x40b4('0x5'),_0x40b4('0x6'),_0x40b4('0x7'),_0x40b4('0x8'),_0x40b4('0x9'),_0x40b4('0xa')],'include':[{'model':_0x40b4('0xb'),'as':_0x40b4('0xc'),'attributes':['id',_0x40b4('0x3'),_0x40b4('0xd'),_0x40b4('0xe'),_0x40b4('0xf')],'include':[{'model':_0x40b4('0x10'),'as':_0x40b4('0x11'),'attributes':['id',_0x40b4('0x12'),_0x40b4('0x13'),_0x40b4('0x14')],'include':[{'model':_0x40b4('0x15'),'as':_0x40b4('0x15'),'attributes':['id',_0x40b4('0x3')]}]},{'model':_0x40b4('0x10'),'as':_0x40b4('0x16'),'attributes':['id',_0x40b4('0x12'),'content','key','keyType',_0x40b4('0x17'),_0x40b4('0x14')],'include':[{'model':_0x40b4('0x15'),'as':_0x40b4('0x15'),'attributes':['id',_0x40b4('0x3')]}]},{'model':_0x40b4('0x10'),'as':_0x40b4('0x18'),'attributes':['id','type',_0x40b4('0x13'),_0x40b4('0x19'),'nameField',_0x40b4('0x1a'),_0x40b4('0x14')],'include':[{'model':_0x40b4('0x15'),'as':'Variable','attributes':['id','name']}]}]},{'model':'CloudProvider','as':'CloudProvider','attributes':['id',_0x40b4('0x1b'),_0x40b4('0x1c'),_0x40b4('0x1d')]}]},'log':_0x40b4('0x2')});};};
\ No newline at end of file
index bab4944..6bb6a19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x112a=['idField','nameField','../../client','getFreshdeskAccounts','Request','GetFreshdeskAccount','name','username','apiKey','remoteUri','serverUrl','FreshdeskConfiguration','Configurations','Tag','FreshdeskField','Subjects','type','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields'];(function(_0xf8c294,_0x49aff8){var _0xa36552=function(_0x4deaac){while(--_0x4deaac){_0xf8c294['push'](_0xf8c294['shift']());}};_0xa36552(++_0x49aff8);}(_0x112a,0x115));var _0xa112=function(_0x35cf94,_0x229849){_0x35cf94=_0x35cf94-0x0;var _0x384a82=_0x112a[_0x35cf94];return _0x384a82;};'use strict';var client=require(_0xa112('0x0'));exports[_0xa112('0x1')]=function(){return function(_0xe30bf4){return client[_0xa112('0x2')](_0xa112('0x3'),{'options':{'raw':![],'attributes':['id',_0xa112('0x4'),_0xa112('0x5'),_0xa112('0x6'),_0xa112('0x7'),_0xa112('0x8')],'include':[{'model':_0xa112('0x9'),'as':_0xa112('0xa'),'attributes':['id',_0xa112('0x4')],'include':[{'model':_0xa112('0xb'),'attributes':['id',_0xa112('0x4')]},{'model':_0xa112('0xc'),'as':_0xa112('0xd'),'attributes':['id',_0xa112('0xe'),_0xa112('0xf'),_0xa112('0x10')],'include':[{'model':_0xa112('0x11'),'as':_0xa112('0x11'),'attributes':['id',_0xa112('0x4')]}]},{'model':'FreshdeskField','as':_0xa112('0x12'),'attributes':['id','type',_0xa112('0xf'),_0xa112('0x13'),_0xa112('0x14'),_0xa112('0x15'),_0xa112('0x10')],'include':[{'model':_0xa112('0x11'),'as':_0xa112('0x11'),'attributes':['id',_0xa112('0x4')]}]},{'model':_0xa112('0xc'),'as':_0xa112('0x16'),'attributes':['id',_0xa112('0xe'),_0xa112('0xf'),_0xa112('0x17'),_0xa112('0x18'),'customField',_0xa112('0x10')],'include':[{'model':_0xa112('0x11'),'as':_0xa112('0x11'),'attributes':['id',_0xa112('0x4')]}]}]}]},'log':_0xa112('0x3')});};};
\ No newline at end of file
+var _0x85de=['Tag','FreshdeskField','Subjects','type','content','variableName','Variable','Descriptions','key','keyContent','Fields','idField','nameField','../../client','getFreshdeskAccounts','Request','GetFreshdeskAccount','username','serverUrl','FreshdeskConfiguration','name'];(function(_0xf0abd7,_0x33e865){var _0xf73068=function(_0x3cb03e){while(--_0x3cb03e){_0xf0abd7['push'](_0xf0abd7['shift']());}};_0xf73068(++_0x33e865);}(_0x85de,0x1f0));var _0xe85d=function(_0x53b8ba,_0x1651e9){_0x53b8ba=_0x53b8ba-0x0;var _0x2e14b8=_0x85de[_0x53b8ba];return _0x2e14b8;};'use strict';var client=require(_0xe85d('0x0'));exports[_0xe85d('0x1')]=function(){return function(_0x4280d5){return client[_0xe85d('0x2')](_0xe85d('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xe85d('0x4'),'apiKey','remoteUri',_0xe85d('0x5')],'include':[{'model':_0xe85d('0x6'),'as':'Configurations','attributes':['id',_0xe85d('0x7')],'include':[{'model':_0xe85d('0x8'),'attributes':['id',_0xe85d('0x7')]},{'model':_0xe85d('0x9'),'as':_0xe85d('0xa'),'attributes':['id',_0xe85d('0xb'),_0xe85d('0xc'),_0xe85d('0xd')],'include':[{'model':'Variable','as':_0xe85d('0xe'),'attributes':['id',_0xe85d('0x7')]}]},{'model':_0xe85d('0x9'),'as':_0xe85d('0xf'),'attributes':['id',_0xe85d('0xb'),'content',_0xe85d('0x10'),'keyType',_0xe85d('0x11'),'variableName'],'include':[{'model':_0xe85d('0xe'),'as':'Variable','attributes':['id',_0xe85d('0x7')]}]},{'model':_0xe85d('0x9'),'as':_0xe85d('0x12'),'attributes':['id',_0xe85d('0xb'),_0xe85d('0xc'),_0xe85d('0x13'),_0xe85d('0x14'),'customField',_0xe85d('0xd')],'include':[{'model':_0xe85d('0xe'),'as':'Variable','attributes':['id',_0xe85d('0x7')]}]}]}]},'log':_0xe85d('0x3')});};};
\ No newline at end of file
index b7e1f2e..f0aabba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fe7=['FreshsalesConfiguration','Configurations','FreshsalesField','Subjects','type','variableName','Variable','content','keyType','keyContent','GetFreshsalesccount','../../client','getFreshsalesAccounts','Request','name','username','apiKey','serverUrl'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9fe7,0x1df));var _0x79fe=function(_0x12ee88,_0x17c50a){_0x12ee88=_0x12ee88-0x0;var _0x360065=_0x9fe7[_0x12ee88];return _0x360065;};'use strict';var client=require(_0x79fe('0x0'));exports[_0x79fe('0x1')]=function(){return function(_0x50cf90){return client[_0x79fe('0x2')]('GetFreshsalesAccount',{'options':{'raw':![],'attributes':['id',_0x79fe('0x3'),_0x79fe('0x4'),_0x79fe('0x5'),'remoteUri',_0x79fe('0x6')],'include':[{'model':_0x79fe('0x7'),'as':_0x79fe('0x8'),'attributes':['id','name'],'include':[{'model':_0x79fe('0x9'),'as':_0x79fe('0xa'),'attributes':['id',_0x79fe('0xb'),'content',_0x79fe('0xc')],'include':[{'model':_0x79fe('0xd'),'as':_0x79fe('0xd'),'attributes':['id',_0x79fe('0x3')]}]},{'model':_0x79fe('0x9'),'as':'Descriptions','attributes':['id',_0x79fe('0xb'),_0x79fe('0xe'),'key',_0x79fe('0xf'),_0x79fe('0x10'),_0x79fe('0xc')],'include':[{'model':_0x79fe('0xd'),'as':'Variable','attributes':['id',_0x79fe('0x3')]}]}]}]},'log':_0x79fe('0x11')});};};
\ No newline at end of file
+var _0x0e4b=['getFreshsalesAccounts','GetFreshsalesAccount','serverUrl','FreshsalesConfiguration','name','FreshsalesField','Subjects','type','content','Variable','Descriptions','key','keyType','keyContent','variableName','GetFreshsalesccount','../../client'];(function(_0x45783c,_0x49c56d){var _0x1161da=function(_0x3c5d41){while(--_0x3c5d41){_0x45783c['push'](_0x45783c['shift']());}};_0x1161da(++_0x49c56d);}(_0x0e4b,0xdc));var _0xb0e4=function(_0xf9ad24,_0x411644){_0xf9ad24=_0xf9ad24-0x0;var _0x11d9ff=_0x0e4b[_0xf9ad24];return _0x11d9ff;};'use strict';var client=require(_0xb0e4('0x0'));exports[_0xb0e4('0x1')]=function(){return function(_0x65d4d1){return client['Request'](_0xb0e4('0x2'),{'options':{'raw':![],'attributes':['id','name','username','apiKey','remoteUri',_0xb0e4('0x3')],'include':[{'model':_0xb0e4('0x4'),'as':'Configurations','attributes':['id',_0xb0e4('0x5')],'include':[{'model':_0xb0e4('0x6'),'as':_0xb0e4('0x7'),'attributes':['id',_0xb0e4('0x8'),_0xb0e4('0x9'),'variableName'],'include':[{'model':'Variable','as':_0xb0e4('0xa'),'attributes':['id',_0xb0e4('0x5')]}]},{'model':_0xb0e4('0x6'),'as':_0xb0e4('0xb'),'attributes':['id',_0xb0e4('0x8'),_0xb0e4('0x9'),_0xb0e4('0xc'),_0xb0e4('0xd'),_0xb0e4('0xe'),_0xb0e4('0xf')],'include':[{'model':_0xb0e4('0xa'),'as':_0xb0e4('0xa'),'attributes':['id',_0xb0e4('0x5')]}]}]}]},'log':_0xb0e4('0x10')});};};
\ No newline at end of file
index 0d1f455..eb0f75c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3906=['additionalSearchAccount','additionalSearchLead','SalesforceField','Subjects','Variable','Descriptions','Fields','../../client','getSalesforceAccounts','Request','name','username','remoteUri','clientId','clientSecret','securityToken','serverUrl','type','SalesforceConfiguration','Configurations','moduleSearch','moduleCreate','ticketType'];(function(_0x2008bd,_0x252aa3){var _0x2f6329=function(_0x4be024){while(--_0x4be024){_0x2008bd['push'](_0x2008bd['shift']());}};_0x2f6329(++_0x252aa3);}(_0x3906,0xd6));var _0x6390=function(_0x39a16a,_0x4d041e){_0x39a16a=_0x39a16a-0x0;var _0x208ba7=_0x3906[_0x39a16a];return _0x208ba7;};'use strict';var client=require(_0x6390('0x0'));exports[_0x6390('0x1')]=function(){return function(_0x5942de){return client[_0x6390('0x2')]('GetSalesforceAccount',{'options':{'raw':![],'attributes':['id',_0x6390('0x3'),_0x6390('0x4'),'password',_0x6390('0x5'),_0x6390('0x6'),_0x6390('0x7'),_0x6390('0x8'),_0x6390('0x9'),_0x6390('0xa')],'include':[{'model':_0x6390('0xb'),'as':_0x6390('0xc'),'attributes':['id',_0x6390('0x3'),_0x6390('0xd'),_0x6390('0xe'),_0x6390('0xf'),'leadId',_0x6390('0x10'),'additionalSearchContact',_0x6390('0x11')],'include':[{'model':_0x6390('0x12'),'as':_0x6390('0x13'),'include':[{'model':_0x6390('0x14'),'as':_0x6390('0x14'),'attributes':['id',_0x6390('0x3')]}]},{'model':'SalesforceField','as':_0x6390('0x15'),'include':[{'model':_0x6390('0x14'),'as':_0x6390('0x14'),'attributes':['id',_0x6390('0x3')]}]},{'model':_0x6390('0x12'),'as':_0x6390('0x16'),'include':[{'model':_0x6390('0x14'),'as':_0x6390('0x14'),'attributes':['id',_0x6390('0x3')]}]}]}]},'log':'GetSalesforceAccount'});};};
\ No newline at end of file
+var _0x09e4=['../../client','getSalesforceAccounts','Request','GetSalesforceAccount','name','username','password','clientId','serverUrl','type','SalesforceConfiguration','Configurations','moduleSearch','moduleCreate','ticketType','leadId','SalesforceField','Subjects','Variable','Descriptions','Fields'];(function(_0x3890f8,_0x1b39df){var _0x40713e=function(_0x4f7f3b){while(--_0x4f7f3b){_0x3890f8['push'](_0x3890f8['shift']());}};_0x40713e(++_0x1b39df);}(_0x09e4,0x1ce));var _0x409e=function(_0x3ecc36,_0x4b1c68){_0x3ecc36=_0x3ecc36-0x0;var _0x1d080d=_0x09e4[_0x3ecc36];return _0x1d080d;};'use strict';var client=require(_0x409e('0x0'));exports[_0x409e('0x1')]=function(){return function(_0x49b9b){return client[_0x409e('0x2')](_0x409e('0x3'),{'options':{'raw':![],'attributes':['id',_0x409e('0x4'),_0x409e('0x5'),_0x409e('0x6'),'remoteUri',_0x409e('0x7'),'clientSecret','securityToken',_0x409e('0x8'),_0x409e('0x9')],'include':[{'model':_0x409e('0xa'),'as':_0x409e('0xb'),'attributes':['id','name',_0x409e('0xc'),_0x409e('0xd'),_0x409e('0xe'),_0x409e('0xf'),'additionalSearchAccount','additionalSearchContact','additionalSearchLead'],'include':[{'model':_0x409e('0x10'),'as':_0x409e('0x11'),'include':[{'model':_0x409e('0x12'),'as':'Variable','attributes':['id',_0x409e('0x4')]}]},{'model':_0x409e('0x10'),'as':_0x409e('0x13'),'include':[{'model':_0x409e('0x12'),'as':_0x409e('0x12'),'attributes':['id',_0x409e('0x4')]}]},{'model':_0x409e('0x10'),'as':_0x409e('0x14'),'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x409e('0x4')]}]}]}]},'log':_0x409e('0x3')});};};
\ No newline at end of file
index 6963a38..1170c6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2c7=['getServicenowAccounts','Request','GetServicenowAccount','name','description','username','password','serverUrl','ServicenowConfiguration','Configurations','type','content','variableName','Variable','ServicenowField','Descriptions','key','keyType','keyContent','Fields','idField','GetServicenowkAccount'];(function(_0x2ca55e,_0x280c31){var _0x3c7753=function(_0x4719e8){while(--_0x4719e8){_0x2ca55e['push'](_0x2ca55e['shift']());}};_0x3c7753(++_0x280c31);}(_0xc2c7,0x134));var _0x7c2c=function(_0x17b215,_0x28413c){_0x17b215=_0x17b215-0x0;var _0x4cbdd5=_0xc2c7[_0x17b215];return _0x4cbdd5;};'use strict';var client=require('../../client');exports[_0x7c2c('0x0')]=function(){return function(_0x30ed31){return client[_0x7c2c('0x1')](_0x7c2c('0x2'),{'options':{'raw':![],'attributes':['id',_0x7c2c('0x3'),_0x7c2c('0x4'),_0x7c2c('0x5'),_0x7c2c('0x6'),'email','remoteUri',_0x7c2c('0x7')],'include':[{'model':_0x7c2c('0x8'),'as':_0x7c2c('0x9'),'attributes':['id','name'],'include':[{'model':'ServicenowField','as':'Subjects','attributes':['id',_0x7c2c('0xa'),_0x7c2c('0xb'),_0x7c2c('0xc')],'include':[{'model':_0x7c2c('0xd'),'as':_0x7c2c('0xd'),'attributes':['id','name']}]},{'model':_0x7c2c('0xe'),'as':_0x7c2c('0xf'),'attributes':['id',_0x7c2c('0xa'),_0x7c2c('0xb'),_0x7c2c('0x10'),_0x7c2c('0x11'),_0x7c2c('0x12'),_0x7c2c('0xc')],'include':[{'model':_0x7c2c('0xd'),'as':_0x7c2c('0xd'),'attributes':['id',_0x7c2c('0x3')]}]},{'model':_0x7c2c('0xe'),'as':_0x7c2c('0x13'),'attributes':['id',_0x7c2c('0xa'),_0x7c2c('0xb'),_0x7c2c('0x14'),'nameField','customField',_0x7c2c('0xc')],'include':[{'model':_0x7c2c('0xd'),'as':_0x7c2c('0xd'),'attributes':['id','name']}]}]}]},'log':_0x7c2c('0x15')});};};
\ No newline at end of file
+var _0x46ed=['../../client','getServicenowAccounts','Request','GetServicenowAccount','name','username','password','remoteUri','serverUrl','ServicenowConfiguration','Configurations','ServicenowField','Subjects','type','content','variableName','Variable','key','keyType','keyContent','Fields','nameField','customField','GetServicenowkAccount'];(function(_0x27caf7,_0x5ce0fe){var _0x2c675c=function(_0x327e15){while(--_0x327e15){_0x27caf7['push'](_0x27caf7['shift']());}};_0x2c675c(++_0x5ce0fe);}(_0x46ed,0x168));var _0xd46e=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0x46ed[_0xa148b7];return _0x51efd3;};'use strict';var client=require(_0xd46e('0x0'));exports[_0xd46e('0x1')]=function(){return function(_0x493012){return client[_0xd46e('0x2')](_0xd46e('0x3'),{'options':{'raw':![],'attributes':['id',_0xd46e('0x4'),'description',_0xd46e('0x5'),_0xd46e('0x6'),'email',_0xd46e('0x7'),_0xd46e('0x8')],'include':[{'model':_0xd46e('0x9'),'as':_0xd46e('0xa'),'attributes':['id',_0xd46e('0x4')],'include':[{'model':_0xd46e('0xb'),'as':_0xd46e('0xc'),'attributes':['id',_0xd46e('0xd'),_0xd46e('0xe'),_0xd46e('0xf')],'include':[{'model':_0xd46e('0x10'),'as':'Variable','attributes':['id',_0xd46e('0x4')]}]},{'model':_0xd46e('0xb'),'as':'Descriptions','attributes':['id',_0xd46e('0xd'),_0xd46e('0xe'),_0xd46e('0x11'),_0xd46e('0x12'),_0xd46e('0x13'),_0xd46e('0xf')],'include':[{'model':'Variable','as':_0xd46e('0x10'),'attributes':['id','name']}]},{'model':'ServicenowField','as':_0xd46e('0x14'),'attributes':['id',_0xd46e('0xd'),'content','idField',_0xd46e('0x15'),_0xd46e('0x16'),_0xd46e('0xf')],'include':[{'model':_0xd46e('0x10'),'as':'Variable','attributes':['id',_0xd46e('0x4')]}]}]}]},'log':_0xd46e('0x17')});};};
\ No newline at end of file
index 0bba0f2..edc10ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['Configurations','SugarcrmField','Subjects','variableName','Variable','Descriptions','type','key','keyType','Fields','content','idField','customField','../../client','GetSugarcrmAccount','name','username','password','remoteUri','serverUrl','SugarcrmConfiguration'];(function(_0x478689,_0x257f1a){var _0x9e4bf1=function(_0x4d9467){while(--_0x4d9467){_0x478689['push'](_0x478689['shift']());}};_0x9e4bf1(++_0x257f1a);}(_0x0b0e,0x187));var _0xe0b0=function(_0x56e063,_0x453233){_0x56e063=_0x56e063-0x0;var _0x766fcf=_0x0b0e[_0x56e063];return _0x766fcf;};'use strict';var client=require(_0xe0b0('0x0'));exports['getSugarcrmAccounts']=function(){return function(_0xc416e3){return client['Request'](_0xe0b0('0x1'),{'options':{'raw':![],'attributes':['id',_0xe0b0('0x2'),_0xe0b0('0x3'),_0xe0b0('0x4'),_0xe0b0('0x5'),_0xe0b0('0x6')],'include':[{'model':_0xe0b0('0x7'),'as':_0xe0b0('0x8'),'attributes':['id',_0xe0b0('0x2')],'include':[{'model':_0xe0b0('0x9'),'as':_0xe0b0('0xa'),'attributes':['id','type','content',_0xe0b0('0xb')],'include':[{'model':_0xe0b0('0xc'),'as':_0xe0b0('0xc'),'attributes':['id',_0xe0b0('0x2')]}]},{'model':'SugarcrmField','as':_0xe0b0('0xd'),'attributes':['id',_0xe0b0('0xe'),'content',_0xe0b0('0xf'),_0xe0b0('0x10'),'keyContent',_0xe0b0('0xb')],'include':[{'model':_0xe0b0('0xc'),'as':_0xe0b0('0xc'),'attributes':['id','name']}]},{'model':_0xe0b0('0x9'),'as':_0xe0b0('0x11'),'attributes':['id',_0xe0b0('0xe'),_0xe0b0('0x12'),_0xe0b0('0x13'),'nameField',_0xe0b0('0x14'),_0xe0b0('0xb')],'include':[{'model':_0xe0b0('0xc'),'as':_0xe0b0('0xc'),'attributes':['id',_0xe0b0('0x2')]}]}]}]},'log':'GetSugarcrmAccount'});};};
\ No newline at end of file
+var _0x7a54=['nameField','customField','../../client','getSugarcrmAccounts','GetSugarcrmAccount','name','password','remoteUri','serverUrl','SugarcrmConfiguration','Configurations','SugarcrmField','type','content','Variable','Descriptions','key','variableName','Fields','idField'];(function(_0x4376f7,_0x299cd9){var _0x17d3c3=function(_0x43ae25){while(--_0x43ae25){_0x4376f7['push'](_0x4376f7['shift']());}};_0x17d3c3(++_0x299cd9);}(_0x7a54,0x106));var _0x47a5=function(_0xdbc06e,_0x33a18e){_0xdbc06e=_0xdbc06e-0x0;var _0x444555=_0x7a54[_0xdbc06e];return _0x444555;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(){return function(_0x44b31e){return client['Request'](_0x47a5('0x2'),{'options':{'raw':![],'attributes':['id',_0x47a5('0x3'),'username',_0x47a5('0x4'),_0x47a5('0x5'),_0x47a5('0x6')],'include':[{'model':_0x47a5('0x7'),'as':_0x47a5('0x8'),'attributes':['id','name'],'include':[{'model':_0x47a5('0x9'),'as':'Subjects','attributes':['id',_0x47a5('0xa'),_0x47a5('0xb'),'variableName'],'include':[{'model':_0x47a5('0xc'),'as':'Variable','attributes':['id','name']}]},{'model':'SugarcrmField','as':_0x47a5('0xd'),'attributes':['id',_0x47a5('0xa'),'content',_0x47a5('0xe'),'keyType','keyContent',_0x47a5('0xf')],'include':[{'model':_0x47a5('0xc'),'as':_0x47a5('0xc'),'attributes':['id',_0x47a5('0x3')]}]},{'model':_0x47a5('0x9'),'as':_0x47a5('0x10'),'attributes':['id',_0x47a5('0xa'),'content',_0x47a5('0x11'),_0x47a5('0x12'),_0x47a5('0x13'),_0x47a5('0xf')],'include':[{'model':_0x47a5('0xc'),'as':_0x47a5('0xc'),'attributes':['id',_0x47a5('0x3')]}]}]}]},'log':_0x47a5('0x2')});};};
\ No newline at end of file
index b7a789b..46553e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea7e=['keyType','keyContent','variableName','idField','customField','../../client','Request','GetVtigerAccount','name','username','remoteUri','serverUrl','VtigerConfiguration','Configurations','VtigerField','type','content','Variable','Descriptions','key'];(function(_0x54fbff,_0x53470e){var _0x5cf619=function(_0x28765b){while(--_0x28765b){_0x54fbff['push'](_0x54fbff['shift']());}};_0x5cf619(++_0x53470e);}(_0xea7e,0x1d1));var _0xeea7=function(_0x5d14c2,_0x8462bf){_0x5d14c2=_0x5d14c2-0x0;var _0x1bd949=_0xea7e[_0x5d14c2];return _0x1bd949;};'use strict';var client=require(_0xeea7('0x0'));exports['getVtigerAccounts']=function(){return function(_0x2ed74d){return client[_0xeea7('0x1')](_0xeea7('0x2'),{'options':{'raw':![],'attributes':['id',_0xeea7('0x3'),'description',_0xeea7('0x4'),'accessKey',_0xeea7('0x5'),_0xeea7('0x6')],'include':[{'model':_0xeea7('0x7'),'as':_0xeea7('0x8'),'attributes':['id','name'],'include':[{'model':_0xeea7('0x9'),'as':'Subjects','attributes':['id',_0xeea7('0xa'),_0xeea7('0xb'),'variableName'],'include':[{'model':_0xeea7('0xc'),'as':_0xeea7('0xc'),'attributes':['id',_0xeea7('0x3')]}]},{'model':_0xeea7('0x9'),'as':_0xeea7('0xd'),'attributes':['id',_0xeea7('0xa'),_0xeea7('0xb'),_0xeea7('0xe'),_0xeea7('0xf'),_0xeea7('0x10'),_0xeea7('0x11')],'include':[{'model':_0xeea7('0xc'),'as':_0xeea7('0xc'),'attributes':['id',_0xeea7('0x3')]}]},{'model':_0xeea7('0x9'),'as':'Fields','attributes':['id',_0xeea7('0xa'),_0xeea7('0xb'),_0xeea7('0x12'),'nameField',_0xeea7('0x13'),_0xeea7('0x11')],'include':[{'model':_0xeea7('0xc'),'as':_0xeea7('0xc'),'attributes':['id',_0xeea7('0x3')]}]}]}]},'log':_0xeea7('0x2')});};};
\ No newline at end of file
+var _0xad3f=['Descriptions','content','key','keyType','Fields','idField','nameField','customField','../../client','getVtigerAccounts','Request','GetVtigerAccount','name','username','remoteUri','serverUrl','VtigerConfiguration','Configurations','Subjects','type','variableName','Variable','VtigerField'];(function(_0x3691a8,_0x106892){var _0x56b2d9=function(_0x5262fb){while(--_0x5262fb){_0x3691a8['push'](_0x3691a8['shift']());}};_0x56b2d9(++_0x106892);}(_0xad3f,0x105));var _0xfad3=function(_0x5be01b,_0x2ec0d5){_0x5be01b=_0x5be01b-0x0;var _0x4596e1=_0xad3f[_0x5be01b];return _0x4596e1;};'use strict';var client=require(_0xfad3('0x0'));exports[_0xfad3('0x1')]=function(){return function(_0xf922ac){return client[_0xfad3('0x2')](_0xfad3('0x3'),{'options':{'raw':![],'attributes':['id',_0xfad3('0x4'),'description',_0xfad3('0x5'),'accessKey',_0xfad3('0x6'),_0xfad3('0x7')],'include':[{'model':_0xfad3('0x8'),'as':_0xfad3('0x9'),'attributes':['id',_0xfad3('0x4')],'include':[{'model':'VtigerField','as':_0xfad3('0xa'),'attributes':['id',_0xfad3('0xb'),'content',_0xfad3('0xc')],'include':[{'model':_0xfad3('0xd'),'as':'Variable','attributes':['id',_0xfad3('0x4')]}]},{'model':_0xfad3('0xe'),'as':_0xfad3('0xf'),'attributes':['id',_0xfad3('0xb'),_0xfad3('0x10'),_0xfad3('0x11'),_0xfad3('0x12'),'keyContent',_0xfad3('0xc')],'include':[{'model':_0xfad3('0xd'),'as':_0xfad3('0xd'),'attributes':['id',_0xfad3('0x4')]}]},{'model':_0xfad3('0xe'),'as':_0xfad3('0x13'),'attributes':['id',_0xfad3('0xb'),'content',_0xfad3('0x14'),_0xfad3('0x15'),_0xfad3('0x16'),_0xfad3('0xc')],'include':[{'model':_0xfad3('0xd'),'as':_0xfad3('0xd'),'attributes':['id',_0xfad3('0x4')]}]}]}]},'log':_0xfad3('0x3')});};};
\ No newline at end of file
index 1255f28..07ca514 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7d8=['keyContent','Fields','idField','customField','../../client','Request','GetZendeskAccount','username','password','token','authType','serverUrl','type','ZendeskConfiguration','Configurations','name','ZendeskField','Subjects','variableName','Variable','Descriptions','content','key','keyType'];(function(_0x15a634,_0x4feb86){var _0xf4f7a0=function(_0x31d9fe){while(--_0x31d9fe){_0x15a634['push'](_0x15a634['shift']());}};_0xf4f7a0(++_0x4feb86);}(_0xd7d8,0x1cc));var _0x8d7d=function(_0x524f4a,_0x37d1b9){_0x524f4a=_0x524f4a-0x0;var _0x4957f8=_0xd7d8[_0x524f4a];return _0x4957f8;};'use strict';var client=require(_0x8d7d('0x0'));exports['getZendeskAccounts']=function(){return function(_0x1938e9){return client[_0x8d7d('0x1')](_0x8d7d('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x8d7d('0x3'),_0x8d7d('0x4'),_0x8d7d('0x5'),'remoteUri',_0x8d7d('0x6'),_0x8d7d('0x7'),_0x8d7d('0x8')],'include':[{'model':_0x8d7d('0x9'),'as':_0x8d7d('0xa'),'attributes':['id','name'],'include':[{'model':'Tag','attributes':['id',_0x8d7d('0xb')]},{'model':_0x8d7d('0xc'),'as':_0x8d7d('0xd'),'attributes':['id',_0x8d7d('0x8'),'content',_0x8d7d('0xe')],'include':[{'model':_0x8d7d('0xf'),'as':_0x8d7d('0xf'),'attributes':['id','name']}]},{'model':'ZendeskField','as':_0x8d7d('0x10'),'attributes':['id',_0x8d7d('0x8'),_0x8d7d('0x11'),_0x8d7d('0x12'),_0x8d7d('0x13'),_0x8d7d('0x14'),'variableName'],'include':[{'model':_0x8d7d('0xf'),'as':_0x8d7d('0xf'),'attributes':['id',_0x8d7d('0xb')]}]},{'model':'ZendeskField','as':_0x8d7d('0x15'),'attributes':['id',_0x8d7d('0x8'),'content',_0x8d7d('0x16'),'nameField',_0x8d7d('0x17'),'variableName'],'include':[{'model':'Variable','as':_0x8d7d('0xf'),'attributes':['id',_0x8d7d('0xb')]}]}]}]},'log':_0x8d7d('0x2')});};};
\ No newline at end of file
+var _0xb68d=['ZendeskConfiguration','Configurations','ZendeskField','Subjects','content','Variable','Descriptions','key','keyType','variableName','Fields','idField','nameField','customField','Request','GetZendeskAccount','name','password','token','remoteUri','authType','serverUrl','type'];(function(_0x19dd7a,_0x51de21){var _0x3feb6a=function(_0x4a3c84){while(--_0x4a3c84){_0x19dd7a['push'](_0x19dd7a['shift']());}};_0x3feb6a(++_0x51de21);}(_0xb68d,0x139));var _0xdb68=function(_0x31ca0e,_0x400120){_0x31ca0e=_0x31ca0e-0x0;var _0x3be85a=_0xb68d[_0x31ca0e];return _0x3be85a;};'use strict';var client=require('../../client');exports['getZendeskAccounts']=function(){return function(_0x3cee54){return client[_0xdb68('0x0')](_0xdb68('0x1'),{'options':{'raw':![],'attributes':['id',_0xdb68('0x2'),'username',_0xdb68('0x3'),_0xdb68('0x4'),_0xdb68('0x5'),_0xdb68('0x6'),_0xdb68('0x7'),_0xdb68('0x8')],'include':[{'model':_0xdb68('0x9'),'as':_0xdb68('0xa'),'attributes':['id',_0xdb68('0x2')],'include':[{'model':'Tag','attributes':['id',_0xdb68('0x2')]},{'model':_0xdb68('0xb'),'as':_0xdb68('0xc'),'attributes':['id',_0xdb68('0x8'),_0xdb68('0xd'),'variableName'],'include':[{'model':_0xdb68('0xe'),'as':_0xdb68('0xe'),'attributes':['id',_0xdb68('0x2')]}]},{'model':_0xdb68('0xb'),'as':_0xdb68('0xf'),'attributes':['id',_0xdb68('0x8'),_0xdb68('0xd'),_0xdb68('0x10'),_0xdb68('0x11'),'keyContent',_0xdb68('0x12')],'include':[{'model':'Variable','as':_0xdb68('0xe'),'attributes':['id',_0xdb68('0x2')]}]},{'model':'ZendeskField','as':_0xdb68('0x13'),'attributes':['id','type',_0xdb68('0xd'),_0xdb68('0x14'),_0xdb68('0x15'),_0xdb68('0x16'),'variableName'],'include':[{'model':_0xdb68('0xe'),'as':_0xdb68('0xe'),'attributes':['id','name']}]}]}]},'log':_0xdb68('0x1')});};};
\ No newline at end of file
index ef94507..921003c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbbd=['getZohoAccounts','GetZohoAccount','name','description','zone','clientId','clientSecret','serverUrl','code','refreshToken','ZohoConfiguration','Configurations','moduleCreate','moduleSearch','ZohoField','Subjects','type','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','nameField','customField','../../client'];(function(_0x4237d9,_0x19975b){var _0x530628=function(_0x2063a8){while(--_0x2063a8){_0x4237d9['push'](_0x4237d9['shift']());}};_0x530628(++_0x19975b);}(_0xbbbd,0x117));var _0xdbbb=function(_0x25e7cb,_0x3579b7){_0x25e7cb=_0x25e7cb-0x0;var _0x375d92=_0xbbbd[_0x25e7cb];return _0x375d92;};'use strict';var client=require(_0xdbbb('0x0'));exports[_0xdbbb('0x1')]=function(){return function(_0xef7c87){return client['Request'](_0xdbbb('0x2'),{'options':{'raw':![],'attributes':['id',_0xdbbb('0x3'),_0xdbbb('0x4'),'host',_0xdbbb('0x5'),_0xdbbb('0x6'),_0xdbbb('0x7'),_0xdbbb('0x8'),_0xdbbb('0x9'),_0xdbbb('0xa')],'include':[{'model':_0xdbbb('0xb'),'as':_0xdbbb('0xc'),'attributes':['id','name',_0xdbbb('0xd'),_0xdbbb('0xe'),'description'],'include':[{'model':_0xdbbb('0xf'),'as':_0xdbbb('0x10'),'attributes':['id',_0xdbbb('0x11'),_0xdbbb('0x12'),_0xdbbb('0x13')],'include':[{'model':_0xdbbb('0x14'),'as':'Variable','attributes':['id',_0xdbbb('0x3')]}]},{'model':_0xdbbb('0xf'),'as':_0xdbbb('0x15'),'attributes':['id','type',_0xdbbb('0x12'),_0xdbbb('0x16'),_0xdbbb('0x17'),_0xdbbb('0x18'),_0xdbbb('0x13')],'include':[{'model':_0xdbbb('0x14'),'as':_0xdbbb('0x14'),'attributes':['id','name']}]},{'model':_0xdbbb('0xf'),'as':_0xdbbb('0x19'),'attributes':['id',_0xdbbb('0x11'),_0xdbbb('0x12'),'idField',_0xdbbb('0x1a'),_0xdbbb('0x1b'),'variableName'],'include':[{'model':_0xdbbb('0x14'),'as':_0xdbbb('0x14'),'attributes':['id',_0xdbbb('0x3')]}]}]}]},'log':_0xdbbb('0x2')});};};
\ No newline at end of file
+var _0xb4c1=['code','refreshToken','Configurations','name','moduleSearch','ZohoField','Subjects','type','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','content','idField','customField','../../client','getZohoAccounts','Request','GetZohoAccount','description','host','zone','clientSecret','serverUrl'];(function(_0x104993,_0x3f9a6b){var _0x105a96=function(_0x4ad1cb){while(--_0x4ad1cb){_0x104993['push'](_0x104993['shift']());}};_0x105a96(++_0x3f9a6b);}(_0xb4c1,0xcf));var _0x1b4c=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xb4c1[_0x57b54c];return _0x59cc19;};'use strict';var client=require(_0x1b4c('0x0'));exports[_0x1b4c('0x1')]=function(){return function(_0x5cff64){return client[_0x1b4c('0x2')](_0x1b4c('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x1b4c('0x4'),_0x1b4c('0x5'),_0x1b4c('0x6'),'clientId',_0x1b4c('0x7'),_0x1b4c('0x8'),_0x1b4c('0x9'),_0x1b4c('0xa')],'include':[{'model':'ZohoConfiguration','as':_0x1b4c('0xb'),'attributes':['id',_0x1b4c('0xc'),'moduleCreate',_0x1b4c('0xd'),_0x1b4c('0x4')],'include':[{'model':_0x1b4c('0xe'),'as':_0x1b4c('0xf'),'attributes':['id',_0x1b4c('0x10'),'content',_0x1b4c('0x11')],'include':[{'model':_0x1b4c('0x12'),'as':_0x1b4c('0x12'),'attributes':['id','name']}]},{'model':'ZohoField','as':_0x1b4c('0x13'),'attributes':['id',_0x1b4c('0x10'),'content',_0x1b4c('0x14'),_0x1b4c('0x15'),_0x1b4c('0x16'),_0x1b4c('0x11')],'include':[{'model':_0x1b4c('0x12'),'as':_0x1b4c('0x12'),'attributes':['id','name']}]},{'model':'ZohoField','as':_0x1b4c('0x17'),'attributes':['id',_0x1b4c('0x10'),_0x1b4c('0x18'),_0x1b4c('0x19'),'nameField',_0x1b4c('0x1a'),'variableName'],'include':[{'model':_0x1b4c('0x12'),'as':'Variable','attributes':['id',_0x1b4c('0xc')]}]}]}]},'log':_0x1b4c('0x3')});};};
\ No newline at end of file
index 09ac22d..6c7942e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0b1=['CreateMemberReport','isNil','interface','format','lastAssignedTo','TALKING','queuecallerleaveAt','diff','inbound','calleridnum','exten','queue','accountcode','toNumber','uniqueid','voiceDialReport','voice','membername','starttime','endtime','seconds','outbound','agent','moment','lodash','util','voiceQueueReport','queuecallerexitAt','Request'];(function(_0x5dd7a9,_0xa09a5c){var _0x523b06=function(_0x4c869b){while(--_0x4c869b){_0x5dd7a9['push'](_0x5dd7a9['shift']());}};_0x523b06(++_0xa09a5c);}(_0xc0b1,0x1ad));var _0x1c0b=function(_0x13cd20,_0x1d9211){_0x13cd20=_0x13cd20-0x0;var _0x22b6de=_0xc0b1[_0x13cd20];return _0x22b6de;};'use strict';var moment=require(_0x1c0b('0x0'));var _=require(_0x1c0b('0x1'));var util=require(_0x1c0b('0x2'));var client=require('../client');exports[_0x1c0b('0x3')]=function(_0x4aa9a9){var _0x1ea058=_0x4aa9a9['queuecallercompleteAt']||_0x4aa9a9[_0x1c0b('0x4')];return client[_0x1c0b('0x5')](_0x1c0b('0x6'),{'body':{'channel':'voice','membername':_0x4aa9a9['lastAssignedTo'],'interface':_[_0x1c0b('0x7')](_0x4aa9a9[_0x1c0b('0x8')])?util[_0x1c0b('0x9')]('SIP/%s',_0x4aa9a9[_0x1c0b('0xa')]):_0x4aa9a9['interface'],'type':_0x1c0b('0xb'),'enterAt':_0x4aa9a9[_0x1c0b('0xc')],'exitAt':_0x1ea058,'duration':moment(_0x1ea058)[_0x1c0b('0xd')](_0x4aa9a9[_0x1c0b('0xc')],'seconds'),'data1':_0x1c0b('0xe'),'data2':_0x4aa9a9[_0x1c0b('0xf')],'data3':_0x4aa9a9[_0x1c0b('0x10')],'data4':null,'data5':_0x4aa9a9[_0x1c0b('0x11')],'role':'agent','internal':_0x4aa9a9[_0x1c0b('0x12')]?_[_0x1c0b('0x13')](_0x4aa9a9[_0x1c0b('0x12')]):undefined,'uniqueid':_0x4aa9a9[_0x1c0b('0x14')]},'log':_0x1c0b('0x6')});};exports[_0x1c0b('0x15')]=function(_0x2b2a30){return client[_0x1c0b('0x5')](_0x1c0b('0x6'),{'body':{'channel':_0x1c0b('0x16'),'membername':_0x2b2a30[_0x1c0b('0x17')],'interface':_0x2b2a30[_0x1c0b('0x8')],'type':_0x1c0b('0xb'),'enterAt':_0x2b2a30[_0x1c0b('0x18')],'exitAt':_0x2b2a30[_0x1c0b('0x19')],'duration':moment(_0x2b2a30[_0x1c0b('0x19')])[_0x1c0b('0xd')](_0x2b2a30[_0x1c0b('0x18')],_0x1c0b('0x1a'))>=0x0?moment(_0x2b2a30[_0x1c0b('0x19')])[_0x1c0b('0xd')](_0x2b2a30[_0x1c0b('0x18')],_0x1c0b('0x1a')):null,'data1':_0x1c0b('0x1b'),'data2':_0x2b2a30['accountcode'],'data3':_0x2b2a30[_0x1c0b('0x10')],'data4':_0x2b2a30['dialstring']||null,'role':_0x1c0b('0x1c'),'internal':_0x2b2a30['accountcode']?_[_0x1c0b('0x13')](_0x2b2a30[_0x1c0b('0x12')]):undefined,'uniqueid':_0x2b2a30[_0x1c0b('0x14')]},'log':'CreateMemberReport'});};
\ No newline at end of file
+var _0x4d53=['../client','queuecallercompleteAt','Request','CreateMemberReport','isNil','interface','SIP/%s','TALKING','diff','queuecallerleaveAt','seconds','inbound','calleridnum','exten','queue','agent','accountcode','uniqueid','voiceDialReport','voice','membername','starttime','endtime','outbound','dialstring','toNumber','lodash'];(function(_0x2fa52f,_0x52cb08){var _0x37e36a=function(_0x37a4fd){while(--_0x37a4fd){_0x2fa52f['push'](_0x2fa52f['shift']());}};_0x37e36a(++_0x52cb08);}(_0x4d53,0xf2));var _0x34d5=function(_0x15bc81,_0x4d4f77){_0x15bc81=_0x15bc81-0x0;var _0x59440e=_0x4d53[_0x15bc81];return _0x59440e;};'use strict';var moment=require('moment');var _=require(_0x34d5('0x0'));var util=require('util');var client=require(_0x34d5('0x1'));exports['voiceQueueReport']=function(_0x12d655){var _0x49ce51=_0x12d655[_0x34d5('0x2')]||_0x12d655['queuecallerexitAt'];return client[_0x34d5('0x3')](_0x34d5('0x4'),{'body':{'channel':'voice','membername':_0x12d655['lastAssignedTo'],'interface':_[_0x34d5('0x5')](_0x12d655[_0x34d5('0x6')])?util['format'](_0x34d5('0x7'),_0x12d655['lastAssignedTo']):_0x12d655[_0x34d5('0x6')],'type':_0x34d5('0x8'),'enterAt':_0x12d655['queuecallerleaveAt'],'exitAt':_0x49ce51,'duration':moment(_0x49ce51)[_0x34d5('0x9')](_0x12d655[_0x34d5('0xa')],_0x34d5('0xb')),'data1':_0x34d5('0xc'),'data2':_0x12d655[_0x34d5('0xd')],'data3':_0x12d655[_0x34d5('0xe')],'data4':null,'data5':_0x12d655[_0x34d5('0xf')],'role':_0x34d5('0x10'),'internal':_0x12d655[_0x34d5('0x11')]?_['toNumber'](_0x12d655['accountcode']):undefined,'uniqueid':_0x12d655[_0x34d5('0x12')]},'log':'CreateMemberReport'});};exports[_0x34d5('0x13')]=function(_0x5a9a5f){return client[_0x34d5('0x3')]('CreateMemberReport',{'body':{'channel':_0x34d5('0x14'),'membername':_0x5a9a5f[_0x34d5('0x15')],'interface':_0x5a9a5f[_0x34d5('0x6')],'type':_0x34d5('0x8'),'enterAt':_0x5a9a5f[_0x34d5('0x16')],'exitAt':_0x5a9a5f[_0x34d5('0x17')],'duration':moment(_0x5a9a5f[_0x34d5('0x17')])[_0x34d5('0x9')](_0x5a9a5f[_0x34d5('0x16')],_0x34d5('0xb'))>=0x0?moment(_0x5a9a5f['endtime'])[_0x34d5('0x9')](_0x5a9a5f['starttime'],_0x34d5('0xb')):null,'data1':_0x34d5('0x18'),'data2':_0x5a9a5f[_0x34d5('0x11')],'data3':_0x5a9a5f[_0x34d5('0xe')],'data4':_0x5a9a5f[_0x34d5('0x19')]||null,'role':_0x34d5('0x10'),'internal':_0x5a9a5f[_0x34d5('0x11')]?_[_0x34d5('0x1a')](_0x5a9a5f[_0x34d5('0x11')]):undefined,'uniqueid':_0x5a9a5f['uniqueid']},'log':_0x34d5('0x4')});};
\ No newline at end of file
index 24bd22a..31d4048 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ba6=['Request','stopRecordingOnTransfer','GetSettings','../client'];(function(_0x50e3d0,_0x4aa4be){var _0x460106=function(_0x15916d){while(--_0x15916d){_0x50e3d0['push'](_0x50e3d0['shift']());}};_0x460106(++_0x4aa4be);}(_0x9ba6,0x13b));var _0x69ba=function(_0x3605dd,_0x3ed816){_0x3605dd=_0x3605dd-0x0;var _0x5506d2=_0x9ba6[_0x3605dd];return _0x5506d2;};'use strict';var client=require(_0x69ba('0x0'));exports['getSettings']=function(){return client[_0x69ba('0x1')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x69ba('0x2'),'previewRecallmeReminderInterval']},'log':_0x69ba('0x3')});};
\ No newline at end of file
+var _0x8768=['../client','getSettings','Request','ShowSetting','stopRecordingOnTransfer','previewRecallmeReminderInterval','GetSettings'];(function(_0x44d487,_0x13ba53){var _0x2a01ee=function(_0x40b3d6){while(--_0x40b3d6){_0x44d487['push'](_0x44d487['shift']());}};_0x2a01ee(++_0x13ba53);}(_0x8768,0xa1));var _0x8876=function(_0x48ee5d,_0x1f0104){_0x48ee5d=_0x48ee5d-0x0;var _0x80bf3=_0x8768[_0x48ee5d];return _0x80bf3;};'use strict';var client=require(_0x8876('0x0'));exports[_0x8876('0x1')]=function(){return client[_0x8876('0x2')](_0x8876('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x8876('0x4'),_0x8876('0x5')]},'log':_0x8876('0x6')});};
\ No newline at end of file
index 31e59dd..a5ab0bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bc4=['GetTemplate','../client','Request'];(function(_0x3c0af9,_0x477b5f){var _0x599619=function(_0x37e325){while(--_0x37e325){_0x3c0af9['push'](_0x3c0af9['shift']());}};_0x599619(++_0x477b5f);}(_0x1bc4,0xd3));var _0x41bc=function(_0x5457b8,_0x52caa1){_0x5457b8=_0x5457b8-0x0;var _0x55d9f0=_0x1bc4[_0x5457b8];return _0x55d9f0;};'use strict';var client=require(_0x41bc('0x0'));exports['getTemplates']=function(_0x2cc324){return function(_0x1ecf60){return client[_0x41bc('0x1')](_0x41bc('0x2'),{'options':{'raw':!![],'attributes':['id','name','html']},'log':'GetTemplate'});};};
\ No newline at end of file
+var _0x2fc9=['Request','GetTemplate','name','html','getTemplates'];(function(_0x4127dc,_0x57c0cd){var _0x424c32=function(_0x2c707a){while(--_0x2c707a){_0x4127dc['push'](_0x4127dc['shift']());}};_0x424c32(++_0x57c0cd);}(_0x2fc9,0xc2));var _0x92fc=function(_0x580647,_0x43d2c3){_0x580647=_0x580647-0x0;var _0x5f0792=_0x2fc9[_0x580647];return _0x5f0792;};'use strict';var client=require('../client');exports[_0x92fc('0x0')]=function(_0x24a8f8){return function(_0x1834c2){return client[_0x92fc('0x1')](_0x92fc('0x2'),{'options':{'raw':!![],'attributes':['id',_0x92fc('0x3'),_0x92fc('0x4')]},'log':_0x92fc('0x2')});};};
\ No newline at end of file
index e80f4e3..e7cfa71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf30a=['operator','Action','Actions','action','data1','data2','data3','data5','data7','Request','GetTrigger','name','channel','status','Condition','AllConditions','field','value','AnyConditions'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xf30a,0x1ab));var _0xaf30=function(_0x75cfff,_0x3b1244){_0x75cfff=_0x75cfff-0x0;var _0x3f8ce7=_0xf30a[_0x75cfff];return _0x3f8ce7;};'use strict';var client=require('../client');exports['getTriggers']=function(_0x5e7bac){return function(_0x251ff2){return client[_0xaf30('0x0')](_0xaf30('0x1'),{'options':{'raw':![],'attributes':['id',_0xaf30('0x2'),_0xaf30('0x3'),_0xaf30('0x4')],'include':[{'model':_0xaf30('0x5'),'as':_0xaf30('0x6'),'attributes':['id',_0xaf30('0x7'),'operator',_0xaf30('0x8')]},{'model':_0xaf30('0x5'),'as':_0xaf30('0x9'),'attributes':['id','field',_0xaf30('0xa'),_0xaf30('0x8')]},{'model':_0xaf30('0xb'),'as':_0xaf30('0xc'),'attributes':['id',_0xaf30('0xd'),_0xaf30('0xe'),_0xaf30('0xf'),_0xaf30('0x10'),'data4',_0xaf30('0x11'),'data6',_0xaf30('0x12')]}]},'log':'GetTrigger'});};};
\ No newline at end of file
+var _0xdf6b=['data4','data6','data7','getTriggers','Request','channel','status','Condition','field','operator','value','AnyConditions','Action','Actions','action','data2','data3'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xdf6b,0x18a));var _0xbdf6=function(_0x5acb65,_0x128c02){_0x5acb65=_0x5acb65-0x0;var _0x21e834=_0xdf6b[_0x5acb65];return _0x21e834;};'use strict';var client=require('../client');exports[_0xbdf6('0x0')]=function(_0xf737c4){return function(_0x1d1b9b){return client[_0xbdf6('0x1')]('GetTrigger',{'options':{'raw':![],'attributes':['id','name',_0xbdf6('0x2'),_0xbdf6('0x3')],'include':[{'model':_0xbdf6('0x4'),'as':'AllConditions','attributes':['id',_0xbdf6('0x5'),_0xbdf6('0x6'),_0xbdf6('0x7')]},{'model':_0xbdf6('0x4'),'as':_0xbdf6('0x8'),'attributes':['id',_0xbdf6('0x5'),_0xbdf6('0x6'),_0xbdf6('0x7')]},{'model':_0xbdf6('0x9'),'as':_0xbdf6('0xa'),'attributes':['id',_0xbdf6('0xb'),'data1',_0xbdf6('0xc'),_0xbdf6('0xd'),_0xbdf6('0xe'),'data5',_0xbdf6('0xf'),_0xbdf6('0x10')]}]},'log':'GetTrigger'});};};
\ No newline at end of file
index 3d54162..1b6bc05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bb0=['Request','GetTrunk','defaultuser','getTrunks'];(function(_0x771925,_0x2f3700){var _0x4f63a4=function(_0x4ae24a){while(--_0x4ae24a){_0x771925['push'](_0x771925['shift']());}};_0x4f63a4(++_0x2f3700);}(_0x7bb0,0xa7));var _0x07bb=function(_0x5b620a,_0x2359fe){_0x5b620a=_0x5b620a-0x0;var _0xab0799=_0x7bb0[_0x5b620a];return _0xab0799;};'use strict';var client=require('../client');exports[_0x07bb('0x0')]=function(_0x2dae77){return function(_0x32aebd){return client[_0x07bb('0x1')](_0x07bb('0x2'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id','name','registry',_0x07bb('0x3')]},'log':'GetTrunk'});};};
\ No newline at end of file
+var _0x105e=['Request','name','registry','defaultuser','GetTrunk','../client'];(function(_0x352920,_0x207e92){var _0x4c6d3b=function(_0x2899da){while(--_0x2899da){_0x352920['push'](_0x352920['shift']());}};_0x4c6d3b(++_0x207e92);}(_0x105e,0x101));var _0xe105=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x105e[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0xe105('0x0'));exports['getTrunks']=function(_0x12b6ba){return function(_0xdb9ef5){return client[_0xe105('0x1')]('GetTrunk',{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0xe105('0x2'),_0xe105('0x3'),_0xe105('0x4')]},'log':_0xe105('0x5')});};};
\ No newline at end of file
index 940880a..9a39ddd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['UnpauseUser','getAgent','ShowUser','email','lastPauseAt','Request','GetUser','agent','name','accountcode','fullname','lastLoginAt','pauseType','voicePause','phone','interface','getAgents','internal','getTelephones','savePause','PauseUser'];(function(_0x3269c4,_0x33dd7c){var _0x3c3cab=function(_0x228e8c){while(--_0x228e8c){_0x3269c4['push'](_0x3269c4['shift']());}};_0x3c3cab(++_0x33dd7c);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x28aea5,_0x3bb12e){_0x28aea5=_0x28aea5-0x0;var _0x6a55f9=_0xcb91[_0x28aea5];return _0x6a55f9;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x1cb9('0x0')](_0x1cb9('0x1'),{'options':{'raw':![],'where':{'role':_0x1cb9('0x2')},'attributes':['id',_0x1cb9('0x3'),'email',_0x1cb9('0x4'),_0x1cb9('0x5'),'online',_0x1cb9('0x6'),_0x1cb9('0x7'),'lastPauseAt',_0x1cb9('0x8'),_0x1cb9('0x9'),'mobile',_0x1cb9('0xa')]},'log':_0x1cb9('0xb')});};};exports['getTelephones']=function(){return function(){return client[_0x1cb9('0x0')]('GetUser',{'options':{'raw':!![],'where':{'role':'telephone'},'attributes':['id',_0x1cb9('0x3'),_0x1cb9('0x4'),_0x1cb9('0xc')]},'log':_0x1cb9('0xd')});};};exports[_0x1cb9('0xe')]=function(_0x50ce71,_0x9b58f1,_0x44a6b4){return client[_0x1cb9('0x0')](_0x1cb9('0xf'),{'body':{'type':_0x9b58f1,'uniqueid':_0x44a6b4},'options':{'where':{'id':_0x50ce71['id']}},'log':_0x1cb9('0xe')});};exports['saveUnpause']=function(_0x5e3c19){return client['Request'](_0x1cb9('0x10'),{'body':{},'options':{'where':{'id':_0x5e3c19['id']}},'log':_0x1cb9('0xe')});};exports[_0x1cb9('0x11')]=function(_0x1c714f){return client['Request'](_0x1cb9('0x12'),{'options':{'raw':![],'where':{'role':_0x1cb9('0x2'),'id':_0x1c714f},'attributes':['id',_0x1cb9('0x3'),_0x1cb9('0x13'),_0x1cb9('0x4'),'fullname','online',_0x1cb9('0x6'),_0x1cb9('0x7'),_0x1cb9('0x14'),_0x1cb9('0x8'),_0x1cb9('0xa')]},'log':_0x1cb9('0x11')});};
\ No newline at end of file
+var _0xa9e0=['agent','lastPauseAt','interface','../client','getAgents','Request','name','accountcode','fullname','online','lastLoginAt','pauseType','voicePause','phone','mobile','getTelephones','telephone','internal','savePause','PauseUser','saveUnpause','UnpauseUser','getAgent','ShowUser'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0xa9e0[_0x1b349a];return _0x5d1f7c;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetUser',{'options':{'raw':![],'where':{'role':'agent'},'attributes':['id',_0x0a9e('0x3'),'email',_0x0a9e('0x4'),_0x0a9e('0x5'),_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8'),'lastPauseAt',_0x0a9e('0x9'),_0x0a9e('0xa'),_0x0a9e('0xb'),'interface']},'log':'getAgents'});};};exports[_0x0a9e('0xc')]=function(){return function(){return client['Request']('GetUser',{'options':{'raw':!![],'where':{'role':_0x0a9e('0xd')},'attributes':['id',_0x0a9e('0x3'),_0x0a9e('0x4'),_0x0a9e('0xe')]},'log':_0x0a9e('0xc')});};};exports[_0x0a9e('0xf')]=function(_0x4a4c56,_0x50dfb2,_0x527cdd){return client['Request'](_0x0a9e('0x10'),{'body':{'type':_0x50dfb2,'uniqueid':_0x527cdd},'options':{'where':{'id':_0x4a4c56['id']}},'log':_0x0a9e('0xf')});};exports[_0x0a9e('0x11')]=function(_0x26d672){return client[_0x0a9e('0x2')](_0x0a9e('0x12'),{'body':{},'options':{'where':{'id':_0x26d672['id']}},'log':'savePause'});};exports[_0x0a9e('0x13')]=function(_0x239b12){return client[_0x0a9e('0x2')](_0x0a9e('0x14'),{'options':{'raw':![],'where':{'role':_0x0a9e('0x15'),'id':_0x239b12},'attributes':['id',_0x0a9e('0x3'),'email',_0x0a9e('0x4'),'fullname',_0x0a9e('0x6'),'lastLoginAt',_0x0a9e('0x8'),_0x0a9e('0x16'),'voicePause',_0x0a9e('0x17')]},'log':'getAgent'});};
\ No newline at end of file
index 99b9faa..a1266f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e74=['UpdateVoiceAgentReport','../client','create','Request','CreateVoiceAgentReport','update'];(function(_0x44de55,_0x1f3533){var _0x53bef4=function(_0x5de6cc){while(--_0x5de6cc){_0x44de55['push'](_0x44de55['shift']());}};_0x53bef4(++_0x1f3533);}(_0x1e74,0x121));var _0x41e7=function(_0x368b78,_0x4187a1){_0x368b78=_0x368b78-0x0;var _0x307b0a=_0x1e74[_0x368b78];return _0x307b0a;};'use strict';var client=require(_0x41e7('0x0'));exports[_0x41e7('0x1')]=function(_0x15c08b){return client[_0x41e7('0x2')](_0x41e7('0x3'),{'body':_0x15c08b,'log':_0x41e7('0x3')});};exports[_0x41e7('0x4')]=function(_0x5e72f3,_0x238274,_0xf4336a){return client['Request'](_0x41e7('0x5'),{'body':_0x5e72f3,'options':{'where':{'uniqueid':_0x238274,'interface':_0xf4336a,'agentcomplete':!![]}},'log':_0x41e7('0x5')});};
\ No newline at end of file
+var _0x157f=['UpdateVoiceAgentReport','CreateVoiceAgentReport','update','Request'];(function(_0x454e32,_0x1efa8c){var _0x218bab=function(_0xfa939b){while(--_0xfa939b){_0x454e32['push'](_0x454e32['shift']());}};_0x218bab(++_0x1efa8c);}(_0x157f,0x149));var _0xf157=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x157f[_0x3b380d];return _0x54502b;};'use strict';var client=require('../client');exports['create']=function(_0x5aece8){return client['Request'](_0xf157('0x0'),{'body':_0x5aece8,'log':_0xf157('0x0')});};exports[_0xf157('0x1')]=function(_0x1a8977,_0x367f9a,_0x4d710f){return client[_0xf157('0x2')]('UpdateVoiceAgentReport',{'body':_0x1a8977,'options':{'where':{'uniqueid':_0x367f9a,'interface':_0x4d710f,'agentcomplete':!![]}},'log':_0xf157('0x3')});};
\ No newline at end of file
index 0fefa46..7b06698 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66ea=['day','format','YYYY-MM-DD\x20HH:mm:ss','endOf','type','disposition','billableseconds','GetVoiceCallReports','moment','lodash','../client','create','Request','CreateVoiceCallReport','merge','calleridnum','callerid','getVoiceCallReports','GetVoiceCallReport','outbound','startOf'];(function(_0x29aefc,_0x4dcf53){var _0x11be36=function(_0x3d472a){while(--_0x3d472a){_0x29aefc['push'](_0x29aefc['shift']());}};_0x11be36(++_0x4dcf53);}(_0x66ea,0x12e));var _0xa66e=function(_0xde2dd3,_0x43b6a3){_0xde2dd3=_0xde2dd3-0x0;var _0xeb2a0=_0x66ea[_0xde2dd3];return _0xeb2a0;};'use strict';var moment=require(_0xa66e('0x0'));var util=require('util');var _=require(_0xa66e('0x1'));var client=require(_0xa66e('0x2'));exports[_0xa66e('0x3')]=function(_0x4cf49f){return client[_0xa66e('0x4')](_0xa66e('0x5'),{'body':_[_0xa66e('0x6')](_0x4cf49f,{'source':_0x4cf49f[_0xa66e('0x7')],'destinationcontext':_0x4cf49f['context'],'callerid':_0x4cf49f[_0xa66e('0x8')],'amaflags':'DOCUMENTATION'}),'log':_0xa66e('0x5')});};exports[_0xa66e('0x9')]=function(){return function(){return client['Request'](_0xa66e('0xa'),{'options':{'where':{'type':[_0xa66e('0xb')],'createdAt':{'$between':[moment()[_0xa66e('0xc')](_0xa66e('0xd'))[_0xa66e('0xe')](_0xa66e('0xf')),moment()[_0xa66e('0x10')](_0xa66e('0xd'))[_0xa66e('0xe')](_0xa66e('0xf'))]}},'attributes':[_0xa66e('0x11'),_0xa66e('0x12'),'duration',_0xa66e('0x13')]},'log':_0xa66e('0x14')});};};
\ No newline at end of file
+var _0xb543=['format','YYYY-MM-DD\x20HH:mm:ss','endOf','type','disposition','duration','billableseconds','moment','lodash','../client','create','Request','CreateVoiceCallReport','context','callerid','DOCUMENTATION','getVoiceCallReports','GetVoiceCallReport','outbound','startOf','day'];(function(_0x3608f8,_0x1fcd28){var _0x5ec627=function(_0x37d81c){while(--_0x37d81c){_0x3608f8['push'](_0x3608f8['shift']());}};_0x5ec627(++_0x1fcd28);}(_0xb543,0x16c));var _0x3b54=function(_0x195da9,_0x39f1cc){_0x195da9=_0x195da9-0x0;var _0x208305=_0xb543[_0x195da9];return _0x208305;};'use strict';var moment=require(_0x3b54('0x0'));var util=require('util');var _=require(_0x3b54('0x1'));var client=require(_0x3b54('0x2'));exports[_0x3b54('0x3')]=function(_0x3fa098){return client[_0x3b54('0x4')](_0x3b54('0x5'),{'body':_['merge'](_0x3fa098,{'source':_0x3fa098['calleridnum'],'destinationcontext':_0x3fa098[_0x3b54('0x6')],'callerid':_0x3fa098[_0x3b54('0x7')],'amaflags':_0x3b54('0x8')}),'log':'CreateVoiceCallReport'});};exports[_0x3b54('0x9')]=function(){return function(){return client[_0x3b54('0x4')](_0x3b54('0xa'),{'options':{'where':{'type':[_0x3b54('0xb')],'createdAt':{'$between':[moment()[_0x3b54('0xc')](_0x3b54('0xd'))[_0x3b54('0xe')](_0x3b54('0xf')),moment()[_0x3b54('0x10')]('day')['format']('YYYY-MM-DD\x20HH:mm:ss')]}},'attributes':[_0x3b54('0x11'),_0x3b54('0x12'),_0x3b54('0x13'),_0x3b54('0x14')]},'log':'GetVoiceCallReports'});};};
\ No newline at end of file
index 4c41021..c24de34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fdc=['CreateVoiceDialReport','create'];(function(_0x24bfd7,_0x2c40fd){var _0x5a4704=function(_0xb653c8){while(--_0xb653c8){_0x24bfd7['push'](_0x24bfd7['shift']());}};_0x5a4704(++_0x2c40fd);}(_0x3fdc,0xe7));var _0xc3fd=function(_0x4e18e2,_0x3bbb02){_0x4e18e2=_0x4e18e2-0x0;var _0x788c0d=_0x3fdc[_0x4e18e2];return _0x788c0d;};'use strict';var client=require('../client');exports[_0xc3fd('0x0')]=function(_0x38d6fe){return client['Request'](_0xc3fd('0x1'),{'body':_0x38d6fe,'log':_0xc3fd('0x1')});};
\ No newline at end of file
+var _0xd5f8=['create','Request','CreateVoiceDialReport','../client'];(function(_0x9ac89b,_0x25b61d){var _0x40da74=function(_0x2643a2){while(--_0x2643a2){_0x9ac89b['push'](_0x9ac89b['shift']());}};_0x40da74(++_0x25b61d);}(_0xd5f8,0x7b));var _0x8d5f=function(_0x4401c1,_0x40f846){_0x4401c1=_0x4401c1-0x0;var _0x10c241=_0xd5f8[_0x4401c1];return _0x10c241;};'use strict';var client=require(_0x8d5f('0x0'));exports[_0x8d5f('0x1')]=function(_0x2a0be4){return client[_0x8d5f('0x2')](_0x8d5f('0x3'),{'body':_0x2a0be4,'log':_0x8d5f('0x3')});};
\ No newline at end of file
index e26f0bc..cb52fd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb469=['GetVoiceExtension','exten','recordingFormat','../client','getVoiceExtensions','Request'];(function(_0x36eb0e,_0x58c397){var _0x12d355=function(_0x38ef37){while(--_0x38ef37){_0x36eb0e['push'](_0x36eb0e['shift']());}};_0x12d355(++_0x58c397);}(_0xb469,0x13b));var _0x9b46=function(_0x4a9589,_0x3ae712){_0x4a9589=_0x4a9589-0x0;var _0x31f42d=_0xb469[_0x4a9589];return _0x31f42d;};'use strict';var client=require(_0x9b46('0x0'));exports[_0x9b46('0x1')]=function(){return function(){return client[_0x9b46('0x2')](_0x9b46('0x3'),{'options':{'raw':!![],'attributes':['id',_0x9b46('0x4'),_0x9b46('0x5')],'where':{'VoiceExtensionId':null}},'log':_0x9b46('0x1')});};};
\ No newline at end of file
+var _0x44a3=['getVoiceExtensions','Request','GetVoiceExtension','exten','recordingFormat','../client'];(function(_0x247826,_0x33cc5f){var _0x16059=function(_0x4b53d4){while(--_0x4b53d4){_0x247826['push'](_0x247826['shift']());}};_0x16059(++_0x33cc5f);}(_0x44a3,0x1a9));var _0x344a=function(_0xeb7891,_0x4771f7){_0xeb7891=_0xeb7891-0x0;var _0x11cc19=_0x44a3[_0xeb7891];return _0x11cc19;};'use strict';var client=require(_0x344a('0x0'));exports[_0x344a('0x1')]=function(){return function(){return client[_0x344a('0x2')](_0x344a('0x3'),{'options':{'raw':!![],'attributes':['id',_0x344a('0x4'),_0x344a('0x5')],'where':{'VoiceExtensionId':null}},'log':_0x344a('0x1')});};};
\ No newline at end of file
index b7130d3..09428bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8175=['active','Pause','mandatoryDispositionPause','TrunkBackup','Interval','Intervals','interval','../client','getVoiceQueues','Request','GetVoiceQueue','name','acwTimeout','autopause','monitor_format','type','dialActive','dialLimitChannel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialGlobalMaxRetry','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','dialPreviewRecallmeReminder','Trunk','callerid'];(function(_0x147280,_0x299268){var _0x2dcc63=function(_0xfeb801){while(--_0xfeb801){_0x147280['push'](_0x147280['shift']());}};_0x2dcc63(++_0x299268);}(_0x8175,0x193));var _0x5817=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0x8175[_0x3c2a69];return _0x596bc8;};'use strict';var client=require(_0x5817('0x0'));exports[_0x5817('0x1')]=function(){return function(){return client[_0x5817('0x2')](_0x5817('0x3'),{'options':{'raw':![],'attributes':['id',_0x5817('0x4'),'acw',_0x5817('0x5'),_0x5817('0x6'),_0x5817('0x7'),_0x5817('0x8'),_0x5817('0x9'),'dialMethod',_0x5817('0xa'),'dialLimitQueue','dialPowerLevel',_0x5817('0xb'),_0x5817('0xc'),_0x5817('0xd'),_0x5817('0xe'),'dialOriginateCallerIdNumber',_0x5817('0xf'),_0x5817('0x10'),_0x5817('0x11'),_0x5817('0x12'),_0x5817('0x13'),_0x5817('0x14'),_0x5817('0x15'),_0x5817('0x16'),_0x5817('0x17'),'dialNoAnswerRetryFrequency',_0x5817('0x18'),'dialTimezone',_0x5817('0x19'),_0x5817('0x1a'),_0x5817('0x1b'),_0x5817('0x1c'),'dialAMDInitialSilence',_0x5817('0x1d'),_0x5817('0x1e'),'dialAMDTotalAnalysisTime',_0x5817('0x1f'),_0x5817('0x20'),_0x5817('0x21'),_0x5817('0x22'),_0x5817('0x23'),_0x5817('0x24'),_0x5817('0x25'),_0x5817('0x26'),_0x5817('0x27'),_0x5817('0x28'),_0x5817('0x29'),_0x5817('0x2a'),_0x5817('0x7'),_0x5817('0x2b'),_0x5817('0x2c'),'dialCutDigit','dialNoSuchNumberMaxRetry',_0x5817('0x2d'),_0x5817('0x2e'),'dialDropRetryFrequency',_0x5817('0x2f'),_0x5817('0x30'),_0x5817('0x31'),_0x5817('0x32'),_0x5817('0x33'),_0x5817('0x34'),_0x5817('0x35'),_0x5817('0x36'),_0x5817('0x37'),'dialPreviewAutoRecallMe',_0x5817('0x38'),'callAdditionalPhoneAfterMin'],'include':[{'model':_0x5817('0x39'),'as':_0x5817('0x39'),'attributes':['id',_0x5817('0x4'),_0x5817('0x3a'),_0x5817('0x3b')]},{'model':_0x5817('0x3c'),'as':_0x5817('0x3d'),'attributes':['id',_0x5817('0x4')]},{'model':_0x5817('0x39'),'as':_0x5817('0x3e'),'attributes':['id',_0x5817('0x4'),_0x5817('0x3a'),_0x5817('0x3b')]},{'model':_0x5817('0x3f'),'as':_0x5817('0x3f'),'attributes':['id',_0x5817('0x4')],'include':[{'model':_0x5817('0x3f'),'as':_0x5817('0x40'),'attributes':['id',_0x5817('0x4'),_0x5817('0x41')]}]}]},'log':_0x5817('0x1')});};};
\ No newline at end of file
+var _0xcffc=['dialRecallMeTimeout','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','callAdditionalPhoneAfterMin','Trunk','callerid','active','mandatoryDispositionPause','TrunkBackup','Interval','../client','getVoiceQueues','Request','GetVoiceQueue','name','acw','acwTimeout','autopause','monitor_format','type','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialGlobalInterval','dialPrefix','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout'];(function(_0x4afe3b,_0x255e0d){var _0x2c22d1=function(_0x313847){while(--_0x313847){_0x4afe3b['push'](_0x4afe3b['shift']());}};_0x2c22d1(++_0x255e0d);}(_0xcffc,0xeb));var _0xccff=function(_0x243fc8,_0x3b6ca9){_0x243fc8=_0x243fc8-0x0;var _0x54a753=_0xcffc[_0x243fc8];return _0x54a753;};'use strict';var client=require(_0xccff('0x0'));exports[_0xccff('0x1')]=function(){return function(){return client[_0xccff('0x2')](_0xccff('0x3'),{'options':{'raw':![],'attributes':['id',_0xccff('0x4'),_0xccff('0x5'),_0xccff('0x6'),_0xccff('0x7'),_0xccff('0x8'),_0xccff('0x9'),_0xccff('0xa'),_0xccff('0xb'),_0xccff('0xc'),_0xccff('0xd'),_0xccff('0xe'),_0xccff('0xf'),_0xccff('0x10'),_0xccff('0x11'),_0xccff('0x12'),_0xccff('0x13'),_0xccff('0x14'),'dialQueueOptions',_0xccff('0x15'),_0xccff('0x16'),_0xccff('0x17'),_0xccff('0x18'),'dialBusyMaxRetry',_0xccff('0x19'),_0xccff('0x1a'),_0xccff('0x1b'),_0xccff('0x1c'),'dialTimezone',_0xccff('0x1d'),_0xccff('0x1e'),'dialCheckDuplicateType',_0xccff('0x1f'),_0xccff('0x20'),_0xccff('0x21'),_0xccff('0x22'),'dialAMDTotalAnalysisTime',_0xccff('0x23'),_0xccff('0x24'),_0xccff('0x25'),_0xccff('0x26'),_0xccff('0x27'),_0xccff('0x28'),_0xccff('0x29'),_0xccff('0x2a'),_0xccff('0x2b'),_0xccff('0x2c'),_0xccff('0x2d'),'dialQueueProject2',_0xccff('0x8'),'strategy',_0xccff('0x2e'),_0xccff('0x2f'),_0xccff('0x30'),_0xccff('0x31'),'dialDropMaxRetry',_0xccff('0x32'),_0xccff('0x33'),_0xccff('0x34'),_0xccff('0x35'),_0xccff('0x36'),_0xccff('0x37'),_0xccff('0x38'),_0xccff('0x39'),_0xccff('0x3a'),_0xccff('0x3b'),_0xccff('0x3c'),_0xccff('0x3d'),_0xccff('0x3e')],'include':[{'model':'Trunk','as':_0xccff('0x3f'),'attributes':['id','name',_0xccff('0x40'),_0xccff('0x41')]},{'model':'Pause','as':_0xccff('0x42'),'attributes':['id',_0xccff('0x4')]},{'model':_0xccff('0x3f'),'as':_0xccff('0x43'),'attributes':['id',_0xccff('0x4'),_0xccff('0x40'),_0xccff('0x41')]},{'model':_0xccff('0x44'),'as':_0xccff('0x44'),'attributes':['id',_0xccff('0x4')],'include':[{'model':_0xccff('0x44'),'as':'Intervals','attributes':['id',_0xccff('0x4'),'interval']}]}]},'log':_0xccff('0x1')});};};
\ No newline at end of file
index db9d454..14cc6b7 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(_0x1fe1f8,_0x1669b3){var _0x1ea5d8=function(_0x22cfe5){while(--_0x22cfe5){_0x1fe1f8['push'](_0x1fe1f8['shift']());}};_0x1ea5d8(++_0x1669b3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0xa9e0[_0x2b10c6];return _0x3789d2;};'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(_0x16fda0,_0x40fae){var _0x2890c6=function(_0x467b15){while(--_0x467b15){_0x16fda0['push'](_0x16fda0['shift']());}};_0x2890c6(++_0x40fae);}(_0xa9e0,0x123));var _0x0a9e=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0xa9e0[_0x92c450];return _0x2a9599;};'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 d22e125..ef5254f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe32e=['getVoiceQueueRtPauses','../client','Request'];(function(_0x503564,_0x55867e){var _0x4be9fd=function(_0x41c543){while(--_0x41c543){_0x503564['push'](_0x503564['shift']());}};_0x4be9fd(++_0x55867e);}(_0xe32e,0x130));var _0xee32=function(_0x23e005,_0x1534c2){_0x23e005=_0x23e005-0x0;var _0x115ba3=_0xe32e[_0x23e005];return _0x115ba3;};'use strict';var client=require(_0xee32('0x0'));exports['getVoiceQueueRtPauses']=function(_0x10cf80){return function(){return client[_0xee32('0x1')]('GetVoiceQueueRtPauses',{'options':{'where':{'VoiceQueueId':_0x10cf80,'paused':!![]},'raw':!![]},'log':_0xee32('0x2')});};};
\ No newline at end of file
+var _0xd439=['../client','getVoiceQueueRtPauses','Request','GetVoiceQueueRtPauses'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xd439,0x124));var _0x9d43=function(_0x137c29,_0x23b334){_0x137c29=_0x137c29-0x0;var _0x27a19b=_0xd439[_0x137c29];return _0x27a19b;};'use strict';var client=require(_0x9d43('0x0'));exports[_0x9d43('0x1')]=function(_0x1a6a67){return function(){return client[_0x9d43('0x2')](_0x9d43('0x3'),{'options':{'where':{'VoiceQueueId':_0x1a6a67,'paused':!![]},'raw':!![]},'log':_0x9d43('0x1')});};};
\ No newline at end of file
index 38b9779..944274e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x1a18db,_0xaff2e2){var _0x4b75f0=function(_0xb115dc){while(--_0xb115dc){_0x1a18db['push'](_0x1a18db['shift']());}};_0x4b75f0(++_0xaff2e2);}(_0x7a54,0x106));var _0x47a5=function(_0x324ea6,_0x2e9272){_0x324ea6=_0x324ea6-0x0;var _0x29f75a=_0x7a54[_0x324ea6];return _0x29f75a;};'use strict';var _=require(_0x47a5('0x0'));var client=require(_0x47a5('0x1'));exports[_0x47a5('0x2')]=function(_0x58157c){return client[_0x47a5('0x3')](_0x47a5('0x4'),{'body':_['merge'](_0x58157c,{'value':_0x58157c[_0x47a5('0x5')]}),'log':_0x47a5('0x4')});};
\ No newline at end of file
+var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x4ff9df,_0x45a6ce){var _0x20c87d=function(_0x4639e0){while(--_0x4639e0){_0x4ff9df['push'](_0x4ff9df['shift']());}};_0x20c87d(++_0x45a6ce);}(_0x7a54,0x106));var _0x47a5=function(_0x4328dc,_0x3a09dd){_0x4328dc=_0x4328dc-0x0;var _0x1f7f23=_0x7a54[_0x4328dc];return _0x1f7f23;};'use strict';var _=require(_0x47a5('0x0'));var client=require(_0x47a5('0x1'));exports[_0x47a5('0x2')]=function(_0x58157c){return client[_0x47a5('0x3')](_0x47a5('0x4'),{'body':_['merge'](_0x58157c,{'value':_0x58157c[_0x47a5('0x5')]}),'log':_0x47a5('0x4')});};
\ No newline at end of file
index 16073c0..444a9fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4e4=['isexternal','context','extension','result','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetlinkedid','origtransferercontext','../client','transfers','blindTransfer','Request','CreateVoiceTransferReport','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transferercontext','transfererexten','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinename','transfereeexten'];(function(_0x278ac1,_0x517cca){var _0x32b1f1=function(_0xd02b73){while(--_0xd02b73){_0x278ac1['push'](_0x278ac1['shift']());}};_0x32b1f1(++_0x517cca);}(_0xf4e4,0x128));var _0x4f4e=function(_0x3446a8,_0x3cb239){_0x3446a8=_0x3446a8-0x0;var _0x1021bf=_0xf4e4[_0x3446a8];return _0x1021bf;};'use strict';var client=require(_0x4f4e('0x0'));exports[_0x4f4e('0x1')]={};exports[_0x4f4e('0x2')]=function(_0x3989c4){return client[_0x4f4e('0x3')](_0x4f4e('0x4'),{'body':{'result':_0x3989c4['result'],'transfererchannel':_0x3989c4[_0x4f4e('0x5')],'transferercalleridnum':_0x3989c4[_0x4f4e('0x6')],'transferercalleridname':_0x3989c4[_0x4f4e('0x7')],'transfererconnectedlinenum':_0x3989c4[_0x4f4e('0x8')],'transfererconnectedlinename':_0x3989c4[_0x4f4e('0x9')],'transfereraccountcode':_0x3989c4[_0x4f4e('0xa')],'transferercontext':_0x3989c4[_0x4f4e('0xb')],'transfererexten':_0x3989c4[_0x4f4e('0xc')],'transfererlinkedid':_0x3989c4[_0x4f4e('0xd')],'transfereechannel':_0x3989c4[_0x4f4e('0xe')],'transfereecalleridnum':_0x3989c4[_0x4f4e('0xf')],'transfereecalleridname':_0x3989c4[_0x4f4e('0x10')],'transfereeconnectedlinenum':_0x3989c4['transfereeconnectedlinenum'],'transfereeconnectedlinename':_0x3989c4[_0x4f4e('0x11')],'transfereeaccountcode':_0x3989c4['transfereeaccountcode'],'transfereecontext':_0x3989c4['transfereecontext'],'transfereeexten':_0x3989c4[_0x4f4e('0x12')],'transfereelinkedid':_0x3989c4['transfereelinkedid'],'isexternal':_0x3989c4[_0x4f4e('0x13')],'context':_0x3989c4[_0x4f4e('0x14')],'extension':_0x3989c4[_0x4f4e('0x15')],'type':'blind'},'log':_0x4f4e('0x4')});};exports['attendedTransfer']=function(_0x40fcec){return client[_0x4f4e('0x3')](_0x4f4e('0x4'),{'body':{'result':_0x40fcec[_0x4f4e('0x16')],'transfererchannel':_0x40fcec[_0x4f4e('0x17')],'transferercalleridnum':_0x40fcec[_0x4f4e('0x18')],'transferercalleridname':_0x40fcec[_0x4f4e('0x19')],'transfererconnectedlinenum':_0x40fcec[_0x4f4e('0x1a')],'transfererconnectedlinename':_0x40fcec[_0x4f4e('0x1b')],'transfereraccountcode':_0x40fcec[_0x4f4e('0x1c')],'transferercontext':_0x40fcec['secondtransferercontext'],'transfererexten':_0x40fcec['secondtransfererexten'],'transfererlinkedid':_0x40fcec['origtransfererlinkedid'],'transfereechannel':_0x40fcec['transfertargetchannel'],'transfereecalleridnum':_0x40fcec[_0x4f4e('0x1d')],'transfereecalleridname':_0x40fcec[_0x4f4e('0x1e')],'transfereeconnectedlinenum':_0x40fcec[_0x4f4e('0x1f')],'transfereeconnectedlinename':_0x40fcec[_0x4f4e('0x20')],'transfereeaccountcode':_0x40fcec['transfertargetaccountcode'],'transfereecontext':_0x40fcec['transfertargetcontext'],'transfereeexten':_0x40fcec['transfertargetexten'],'transfereelinkedid':_0x40fcec[_0x4f4e('0x21')],'isexternal':_0x40fcec[_0x4f4e('0x13')],'context':_0x40fcec[_0x4f4e('0x22')],'extension':_0x40fcec['origtransfererexten'],'type':'attended'},'log':_0x4f4e('0x4')});};
\ No newline at end of file
+var _0xcc15=['transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','origtransferercontext','origtransfererexten','attended','../client','transfers','blindTransfer','transfererchannel','transferercalleridnum','transfererconnectedlinename','transfereraccountcode','transferercontext','transfererlinkedid','transfereecalleridnum','transfereeconnectedlinenum','transfereeaccountcode','transfereeexten','transfereelinkedid','isexternal','context','extension','blind','CreateVoiceTransferReport','Request','result','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinename','secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname'];(function(_0x514c15,_0x486901){var _0x16283e=function(_0x53b7d0){while(--_0x53b7d0){_0x514c15['push'](_0x514c15['shift']());}};_0x16283e(++_0x486901);}(_0xcc15,0x168));var _0x5cc1=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0xcc15[_0x8c43de];return _0xa6591b;};'use strict';var client=require(_0x5cc1('0x0'));exports[_0x5cc1('0x1')]={};exports[_0x5cc1('0x2')]=function(_0x5d5aae){return client['Request']('CreateVoiceTransferReport',{'body':{'result':_0x5d5aae['result'],'transfererchannel':_0x5d5aae[_0x5cc1('0x3')],'transferercalleridnum':_0x5d5aae[_0x5cc1('0x4')],'transferercalleridname':_0x5d5aae['transferercalleridname'],'transfererconnectedlinenum':_0x5d5aae['transfererconnectedlinenum'],'transfererconnectedlinename':_0x5d5aae[_0x5cc1('0x5')],'transfereraccountcode':_0x5d5aae[_0x5cc1('0x6')],'transferercontext':_0x5d5aae[_0x5cc1('0x7')],'transfererexten':_0x5d5aae['transfererexten'],'transfererlinkedid':_0x5d5aae[_0x5cc1('0x8')],'transfereechannel':_0x5d5aae['transfereechannel'],'transfereecalleridnum':_0x5d5aae[_0x5cc1('0x9')],'transfereecalleridname':_0x5d5aae['transfereecalleridname'],'transfereeconnectedlinenum':_0x5d5aae[_0x5cc1('0xa')],'transfereeconnectedlinename':_0x5d5aae['transfereeconnectedlinename'],'transfereeaccountcode':_0x5d5aae[_0x5cc1('0xb')],'transfereecontext':_0x5d5aae['transfereecontext'],'transfereeexten':_0x5d5aae[_0x5cc1('0xc')],'transfereelinkedid':_0x5d5aae[_0x5cc1('0xd')],'isexternal':_0x5d5aae[_0x5cc1('0xe')],'context':_0x5d5aae[_0x5cc1('0xf')],'extension':_0x5d5aae[_0x5cc1('0x10')],'type':_0x5cc1('0x11')},'log':_0x5cc1('0x12')});};exports['attendedTransfer']=function(_0x46406a){return client[_0x5cc1('0x13')](_0x5cc1('0x12'),{'body':{'result':_0x46406a[_0x5cc1('0x14')],'transfererchannel':_0x46406a[_0x5cc1('0x15')],'transferercalleridnum':_0x46406a[_0x5cc1('0x16')],'transferercalleridname':_0x46406a[_0x5cc1('0x17')],'transfererconnectedlinenum':_0x46406a['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x46406a[_0x5cc1('0x18')],'transfereraccountcode':_0x46406a['origtransfereraccountcode'],'transferercontext':_0x46406a['secondtransferercontext'],'transfererexten':_0x46406a[_0x5cc1('0x19')],'transfererlinkedid':_0x46406a[_0x5cc1('0x1a')],'transfereechannel':_0x46406a[_0x5cc1('0x1b')],'transfereecalleridnum':_0x46406a[_0x5cc1('0x1c')],'transfereecalleridname':_0x46406a[_0x5cc1('0x1d')],'transfereeconnectedlinenum':_0x46406a[_0x5cc1('0x1e')],'transfereeconnectedlinename':_0x46406a[_0x5cc1('0x1f')],'transfereeaccountcode':_0x46406a[_0x5cc1('0x20')],'transfereecontext':_0x46406a[_0x5cc1('0x21')],'transfereeexten':_0x46406a[_0x5cc1('0x22')],'transfereelinkedid':_0x46406a[_0x5cc1('0x23')],'isexternal':_0x46406a[_0x5cc1('0xe')],'context':_0x46406a[_0x5cc1('0x24')],'extension':_0x46406a[_0x5cc1('0x25')],'type':_0x5cc1('0x26')},'log':_0x5cc1('0x12')});};
\ No newline at end of file
index e60e2b4..0fa25f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9536=['updateAcw','agents','pause','isConnected','error','asterisk','username','ami\x20disconnected','join','module','action','Reload','Action','message','command','Command','content','catch','voiceQueues','hasOwnProperty','strategy','answered','loggedIn','sumBillable','sumDuration','sumHoldTime','total','type','unmanaged','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','startPredictive','startProgressive','Trunk','active','callerid','Interval','push','find','omit','undefined','values','channels','voicechannel','length','uniqueid','channel','wav','MixMonitor','then','/var/spool/asterisk/monitor/','toLowerCase','YYYY-MM-DD\x20HH:mm:ss','rec','mixmonitorid','status','MixMonitor\x20Success','StopMixMonitor','destinationchannel','stop','filename','monitors','StopMixMonitor\x20Success','queueChannels','voicequeuechannel','map','Channel\x20doesn\x27t\x20exist','Hangup','voicequeuechannelredirect','Redirect','exten','context','outboundChannels','outbound','campaigns','run','event','Event\x20name\x20mandatory','emit','custom:','checkAfterSend','127.0.0.1','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','jayson/promise','validate','moment','../properties','../ami','listen','format','%s/%s','name','timers','timer'];(function(_0x31cedb,_0x1832c9){var _0xffd156=function(_0x5b882d){while(--_0x5b882d){_0x31cedb['push'](_0x31cedb['shift']());}};_0xffd156(++_0x1832c9);}(_0x9536,0x179));var _0x6953=function(_0x57e00e,_0x36e79a){_0x57e00e=_0x57e00e-0x0;var _0x415e60=_0x9536[_0x57e00e];return _0x415e60;};'use strict';var _=require(_0x6953('0x0'));var util=require(_0x6953('0x1'));var jayson=require(_0x6953('0x2'));var schema=require(_0x6953('0x3'));var BPromise=require('bluebird');var moment=require(_0x6953('0x4'));var config=require('../../../config/environment');var properties=require(_0x6953('0x5'));var ami=require(_0x6953('0x6'));exports[_0x6953('0x7')]=function(_0x3ba964,_0x2f3cc3,_0x494ac2){return new BPromise(function(_0x2b273e,_0x2bb026){var _0x385f2d={'QueuePause':function(_0x3e1aff){return new Promise(function(_0x1c8225,_0x58ac30){var _0x3e8786=util[_0x6953('0x8')](_0x6953('0x9'),'SIP',_0x3e1aff[_0x6953('0xa')]);if(_0x3ba964[_0x6953('0xb')]&&_0x3ba964[_0x6953('0xb')][_0x3e8786]&&_0x3ba964[_0x6953('0xb')][_0x3e8786][_0x6953('0xc')]){_0x3ba964[_0x6953('0xb')][_0x3e8786][_0x6953('0xd')]();}if(_0x3ba964[_0x6953('0xe')][_0x3e8786]){_0x3ba964[_0x6953('0xe')][_0x3e8786]['updateStatusRealtime']({'statePause':_0x3e1aff[_0x6953('0xf')]?!![]:![]});}_0x1c8225({'code':0xc8,'message':'QueuePause'});});},'Reload':function(_0x8de91e){var _0x5b0558=this;return new Promise(function(_0x3e83d5,_0xe35f08){if(ami[_0x6953('0x10')]()==![]){return _0xe35f08(_0x5b0558[_0x6953('0x11')](0x1f4,[config[_0x6953('0x12')]['ip'],config[_0x6953('0x12')][_0x6953('0x13')],_0x6953('0x14')][_0x6953('0x15')]('\x20')));}_0x8de91e=_['pick'](_0x8de91e,_['keys'](properties[_0x6953('0x16')]));_0x8de91e[_0x6953('0x17')]=_0x6953('0x18');return ami[_0x6953('0x19')](_0x8de91e)['then'](function(_0x1b6dcb){_0x3e83d5({'code':0xc8,'message':_0x1b6dcb[_0x6953('0x1a')]});})['catch'](function(_0x10858a){_0xe35f08(_0x5b0558[_0x6953('0x11')](0x1f5,_0x10858a[_0x6953('0x1a')]));});});},'Command':function(_0x174c59){var _0xc714d3=this;return new Promise(function(_0x4a450c,_0x3a93e1){if(ami[_0x6953('0x10')]()==![]){return _0x3a93e1(_0xc714d3[_0x6953('0x11')](0x1f4,[config[_0x6953('0x12')]['ip'],config[_0x6953('0x12')]['username'],_0x6953('0x14')][_0x6953('0x15')]('\x20')));}_0x174c59=_['pick'](_0x174c59,_0x6953('0x1b'));_0x174c59[_0x6953('0x17')]=_0x6953('0x1c');return ami[_0x6953('0x19')](_0x174c59)['then'](function(_0x37f339){_0x4a450c({'code':0xc8,'message':_0x37f339[_0x6953('0x1d')]});})[_0x6953('0x1e')](function(_0x508ea7){_0x3a93e1(_0xc714d3['error'](0x1f5,_0x508ea7['message']));});});},'VoiceQueues':function(_0xc85d42){return new Promise(function(_0x1bf5a9,_0x550be4){var _0x1a32f4=[];for(var _0x587df0 in _0x3ba964[_0x6953('0x1f')]){if(_0x3ba964[_0x6953('0x1f')][_0x6953('0x20')](_0x587df0)){var _0x2cc01e=_0x3ba964[_0x6953('0x1f')][_0x587df0];var _0x1497e3={'id':_0x2cc01e['id'],'name':_0x2cc01e['name'],'strategy':_0x2cc01e[_0x6953('0x21')],'answered':_0x2cc01e[_0x6953('0x22')],'available':_0x2cc01e['available'],'loggedIn':_0x2cc01e[_0x6953('0x23')],'pTalking':_0x2cc01e['pTalking'],'sumBillable':_0x2cc01e[_0x6953('0x24')],'sumDuration':_0x2cc01e[_0x6953('0x25')],'sumHoldTime':_0x2cc01e[_0x6953('0x26')]||0x0,'talking':_0x2cc01e['talking'],'total':_0x2cc01e[_0x6953('0x27')],'type':_0x2cc01e[_0x6953('0x28')],'unmanaged':_0x2cc01e[_0x6953('0x29')],'abandoned':_0x2cc01e['abandoned'],'waiting':_0x2cc01e[_0x6953('0x2a')],'loggedInDb':_0x2cc01e[_0x6953('0x2b')]};if(_0x2cc01e['type']==='outbound'){_0x1497e3[_0x6953('0x2c')]=_0x2cc01e[_0x6953('0x2c')];_0x1497e3[_0x6953('0x2d')]=_0x2cc01e[_0x6953('0x2d')];_0x1497e3[_0x6953('0x2e')]=_0x2cc01e['dialOriginateCallerIdName'];_0x1497e3[_0x6953('0x2f')]=_0x2cc01e['dialOriginateCallerIdNumber'];_0x1497e3[_0x6953('0x30')]=_0x2cc01e[_0x6953('0x30')];_0x1497e3['dialPrefix']=_0x2cc01e['dialPrefix'];_0x1497e3[_0x6953('0x31')]=_0x2cc01e[_0x6953('0x31')];_0x1497e3[_0x6953('0x32')]=_0x2cc01e['outboundAnswerAgiCallsDay'];_0x1497e3[_0x6953('0x33')]=_0x2cc01e['outboundAnswerCallsDay'];_0x1497e3['outboundBlacklistCallsDay']=_0x2cc01e['outboundBlacklistCallsDay'];_0x1497e3['outboundBusyCallsDay']=_0x2cc01e[_0x6953('0x34')];_0x1497e3[_0x6953('0x35')]=_0x2cc01e[_0x6953('0x35')];_0x1497e3[_0x6953('0x36')]=_0x2cc01e[_0x6953('0x36')];_0x1497e3[_0x6953('0x37')]=_0x2cc01e['outboundDropCallsDayCallersExit'];_0x1497e3[_0x6953('0x38')]=_0x2cc01e['outboundDropCallsDayTimeout'];_0x1497e3[_0x6953('0x39')]=_0x2cc01e['outboundNoAnswerCallsDay'];_0x1497e3[_0x6953('0x3a')]=_0x2cc01e[_0x6953('0x3a')];_0x1497e3[_0x6953('0x3b')]=_0x2cc01e[_0x6953('0x3b')];_0x1497e3['outboundReCallsDay']=_0x2cc01e[_0x6953('0x3c')];_0x1497e3[_0x6953('0x3d')]=_0x2cc01e[_0x6953('0x3d')];_0x1497e3[_0x6953('0x3e')]=_0x2cc01e[_0x6953('0x3e')];_0x1497e3[_0x6953('0x3f')]=_0x2cc01e[_0x6953('0x3f')];_0x1497e3[_0x6953('0x40')]=_0x2cc01e[_0x6953('0x40')];_0x1497e3[_0x6953('0x41')]=_0x2cc01e[_0x6953('0x41')];_0x1497e3['predictiveIntervalDroppedCallsCallersExit']=_0x2cc01e[_0x6953('0x42')];_0x1497e3[_0x6953('0x43')]=_0x2cc01e[_0x6953('0x43')];_0x1497e3['predictiveIntervalErlangCalls']=_0x2cc01e['predictiveIntervalErlangCalls'];_0x1497e3[_0x6953('0x44')]=_0x2cc01e['predictiveIntervalErlangCallsDroppedCalls'];_0x1497e3['predictiveIntervalHitRate']=_0x2cc01e[_0x6953('0x45')];_0x1497e3[_0x6953('0x46')]=_0x2cc01e['predictiveIntervalMultiplicativeFactor'];_0x1497e3[_0x6953('0x47')]=_0x2cc01e[_0x6953('0x47')];_0x1497e3[_0x6953('0x48')]=_0x2cc01e[_0x6953('0x48')];_0x1497e3[_0x6953('0x49')]=_0x2cc01e[_0x6953('0x49')];_0x1497e3['message']=_0x2cc01e[_0x6953('0x1a')];_0x1497e3[_0x6953('0x4a')]=_0x2cc01e[_0x6953('0x4a')];_0x1497e3[_0x6953('0x4b')]=_0x2cc01e[_0x6953('0x4b')];_0x1497e3[_0x6953('0x4c')]=_0x2cc01e['erlangCallToSecond'];_0x1497e3['erlangAbandonmentRate']=_0x2cc01e[_0x6953('0x4d')];_0x1497e3['erlangBusyFactor']=_0x2cc01e['erlangBusyFactor'];_0x1497e3[_0x6953('0x4e')]=_0x2cc01e[_0x6953('0x4e')];_0x1497e3[_0x6953('0x4f')]=_0x2cc01e[_0x6953('0x4f')];}if(_0x2cc01e[_0x6953('0x50')]){_0x1497e3['Trunk']={'id':_0x2cc01e['Trunk']['id'],'name':_0x2cc01e[_0x6953('0x50')][_0x6953('0xa')],'active':_0x2cc01e['Trunk'][_0x6953('0x51')],'callerid':_0x2cc01e['Trunk'][_0x6953('0x52')]};}if(_0x2cc01e[_0x6953('0x53')]){_0x1497e3[_0x6953('0x53')]={'id':_0x2cc01e[_0x6953('0x53')]['id'],'name':_0x2cc01e['Interval'][_0x6953('0xa')]};}_0x1a32f4[_0x6953('0x54')](_0x1497e3);}}_0x1bf5a9({'count':_0x1a32f4['length'],'rows':_0x1a32f4});});},'UpdateVoiceQueue':function(_0x16c565){return new Promise(function(_0x296d81,_0x1b4377){var _0x228139=_[_0x6953('0x55')](_0x3ba964[_0x6953('0x1f')],{'id':parseInt(_0x16c565['id'])});var _0x13d1a6=_[_0x6953('0x56')](_0x16c565,['id']);if(_0x228139){for(var _0x156785 in _0x13d1a6){if(typeof _0x13d1a6[_0x156785]!==_0x6953('0x57')&&typeof _0x228139[_0x156785]!==_0x6953('0x57')){_0x228139[_0x156785]=_0x13d1a6[_0x156785];}}_0x296d81(_0x228139);}else{_0x1b4377();}});},'VoiceChannels':function(_0x5a06ec){return new Promise(function(_0x332223,_0x4c9d36){var _0x15c142=_[_0x6953('0x58')](_0x3ba964[_0x6953('0x59')]);_0x332223({'count':_0x15c142['length'],'rows':_0x15c142});});},'VoiceChannelMixMonitor':function(_0xfb9613){var _0x2a4e54=this;return new Promise(function(_0x506561,_0x525145){if(ami[_0x6953('0x10')]()==![]){return _0x525145(_0x2a4e54[_0x6953('0x11')](0x1f4,[config[_0x6953('0x12')]['ip'],config[_0x6953('0x12')][_0x6953('0x13')],_0x6953('0x14')][_0x6953('0x15')]('\x20')));}var _0xd67ece=schema(properties[_0x6953('0x5a')])[_0x6953('0x3')](_0xfb9613);if(_0xd67ece[_0x6953('0x5b')]>0x0){return _0x525145(_0x2a4e54['error'](0x1f4,_['map'](_0xd67ece,_0x6953('0x1a'))[_0x6953('0x15')](',\x20')));}var _0x68ab5d=_[_0x6953('0x55')](_0x3ba964[_0x6953('0x59')],{'uniqueid':_0xfb9613[_0x6953('0x5c')]});if(_0x68ab5d&&_0x68ab5d[_0x6953('0x5d')]){var _0x238ab2=util[_0x6953('0x8')]('%s.%s',_0xfb9613['filename']||_0xfb9613['uniqueid'],_0xfb9613['format']||_0x6953('0x5e'));return ami[_0x6953('0x19')]({'action':_0x6953('0x5f'),'channel':_0x68ab5d['channel'],'file':_0x238ab2,'options':'ai(mixmonitorid)'})[_0x6953('0x60')](function(_0x1e707c){var _0x11a551=_['find'](_0x68ab5d['monitors'],{'filename':_0x6953('0x61')+_0x238ab2[_0x6953('0x62')]()});if(_['isNil'](_0x11a551)){_0x68ab5d['monitors'][_0x6953('0x54')]({'filename':_0x6953('0x61')+_0x238ab2[_0x6953('0x62')](),'createdAt':moment()[_0x6953('0x8')](_0x6953('0x63')),'mixmonitorid':_0x1e707c['mixmonitorid'],'status':_0x6953('0x64')});}else{_0x11a551[_0x6953('0x65')]=_0x1e707c['mixmonitorid'];_0x11a551[_0x6953('0x66')]='rec';}_0x506561({'code':0xc8,'message':[_0xfb9613[_0x6953('0x5c')],_0x6953('0x67'),_0x1e707c[_0x6953('0x65')]][_0x6953('0x15')]('\x20'),'mixmonitorid':_0x1e707c['mixmonitorid']});})[_0x6953('0x1e')](function(_0x366390){_0x525145(_0x2a4e54[_0x6953('0x11')](0x1f5,[_0xfb9613['uniqueid'],_0x366390['message'][_0x6953('0x62')]()][_0x6953('0x15')]('\x20')));});}else{return _0x525145(_0x2a4e54[_0x6953('0x11')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceChannelStopMixMonitor':function(_0x4c6180){var _0x44a01=this;return new Promise(function(_0x2b90f7,_0x4c0f1c){if(ami[_0x6953('0x10')]()==![]){return _0x4c0f1c(_0x44a01[_0x6953('0x11')](0x1f4,[config['asterisk']['ip'],config[_0x6953('0x12')][_0x6953('0x13')],_0x6953('0x14')][_0x6953('0x15')]('\x20')));}var _0x1e4e2c=schema(properties['voicechannel'])[_0x6953('0x3')](_0x4c6180);if(_0x1e4e2c[_0x6953('0x5b')]>0x0){return _0x4c0f1c(_0x44a01[_0x6953('0x11')](0x1f4,_['map'](_0x1e4e2c,'message')[_0x6953('0x15')](',\x20')));}var _0x2bf359=_[_0x6953('0x55')](_0x3ba964[_0x6953('0x59')],{'uniqueid':_0x4c6180[_0x6953('0x5c')]});if(_0x2bf359){return BPromise['resolve']()[_0x6953('0x60')](function(){if(_0x2bf359[_0x6953('0x5d')]){return ami[_0x6953('0x19')]({'action':_0x6953('0x68'),'channel':_0x2bf359[_0x6953('0x5d')],'mixmonitorid':_0x4c6180[_0x6953('0x65')]})[_0x6953('0x1e')](function(_0x435e74){});}})[_0x6953('0x60')](function(){if(_0x2bf359[_0x6953('0x69')]){return ami[_0x6953('0x19')]({'action':_0x6953('0x68'),'channel':_0x2bf359[_0x6953('0x69')],'mixmonitorid':_0x4c6180['mixmonitorid']})[_0x6953('0x1e')](function(_0x1d264a){});}})[_0x6953('0x60')](function(_0x20efa9){var _0x38674d=_['find'](_0x2bf359['monitors'],{'mixmonitorid':_0x4c6180[_0x6953('0x65')]});if(_0x38674d){_0x38674d['status']=_0x6953('0x6a');}})[_0x6953('0x60')](function(){var _0x359a4c=util[_0x6953('0x8')]('%s.%s',_0x4c6180[_0x6953('0x6b')]||_0x4c6180[_0x6953('0x5c')],_0x4c6180[_0x6953('0x8')]||_0x6953('0x5e'));var _0x1c3190=_[_0x6953('0x55')](_0x2bf359[_0x6953('0x6c')],{'filename':_0x6953('0x61')+_0x359a4c[_0x6953('0x62')]()});if(_0x1c3190){_0x1c3190[_0x6953('0x66')]=_0x6953('0x6a');}})[_0x6953('0x60')](function(){_0x2b90f7({'code':0xc8,'message':[_0x4c6180[_0x6953('0x5c')],_0x6953('0x6d')][_0x6953('0x15')]('\x20')});})['catch'](function(_0x1b5e11){_0x4c0f1c(_0x44a01[_0x6953('0x11')](0x1f5,[_0x4c6180[_0x6953('0x5c')],_0x1b5e11[_0x6953('0x1a')][_0x6953('0x62')]()][_0x6953('0x15')]('\x20')));});}else{return _0x4c0f1c(_0x44a01[_0x6953('0x11')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannels':function(_0x3bb873){return new Promise(function(_0x403d81,_0x4eba55){var _0xc2668=_[_0x6953('0x58')](_0x3ba964[_0x6953('0x6e')]);_0x403d81({'count':_0xc2668['length'],'rows':_0xc2668});});},'VoiceQueuesChannel':function(_0x4cb8a4){var _0x1ea573=this;return new Promise(function(_0x12987e,_0x7e652b){var _0x2d173b=schema(properties[_0x6953('0x6f')])[_0x6953('0x3')](_0x4cb8a4);if(_0x2d173b[_0x6953('0x5b')]>0x0){return _0x7e652b(_0x1ea573[_0x6953('0x11')](0x1f4,_[_0x6953('0x70')](_0x2d173b,'message')[_0x6953('0x15')](',\x20')));}var _0x729812=_[_0x6953('0x55')](_0x3ba964[_0x6953('0x6e')],{'uniqueid':_0x4cb8a4['uniqueid']});if(_0x729812){_0x12987e(_0x729812);}else{return _0x7e652b(_0x1ea573[_0x6953('0x11')](0x1f5,_0x6953('0x71')));}});},'VoiceQueuesChannelHangup':function(_0x40356c){var _0x576f36=this;return new Promise(function(_0x16898a,_0x12285e){if(ami[_0x6953('0x10')]()==![]){return _0x12285e(_0x576f36[_0x6953('0x11')](0x1f4,[config['asterisk']['ip'],config[_0x6953('0x12')][_0x6953('0x13')],_0x6953('0x14')][_0x6953('0x15')]('\x20')));}var _0x52c2a0=schema(properties['voicequeuechannelhangup'])[_0x6953('0x3')](_0x40356c);if(_0x52c2a0[_0x6953('0x5b')]>0x0){return _0x12285e(_0x576f36['error'](0x1f4,_['map'](_0x52c2a0,_0x6953('0x1a'))[_0x6953('0x15')](',\x20')));}var _0x30fcd5=_[_0x6953('0x55')](_0x3ba964['queueChannels'],{'uniqueid':_0x40356c[_0x6953('0x5c')]});if(_0x30fcd5&&_0x30fcd5[_0x6953('0x5d')]){return ami['Action']({'action':_0x6953('0x72'),'channel':_0x30fcd5[_0x6953('0x5d')]})['then'](function(_0x4adcfc){_0x16898a({'code':0xc8,'message':[_0x40356c['uniqueid'],_0x4adcfc[_0x6953('0x1a')][_0x6953('0x62')]()][_0x6953('0x15')]('\x20')});})[_0x6953('0x1e')](function(_0x1efbb9){_0x12285e(_0x576f36[_0x6953('0x11')](0x1f5,[_0x40356c[_0x6953('0x5c')],_0x1efbb9[_0x6953('0x1a')]['toLowerCase']()][_0x6953('0x15')]('\x20')));});}else{return _0x12285e(_0x576f36[_0x6953('0x11')](0x1f5,_0x6953('0x71')));}});},'VoiceQueuesChannelRedirect':function(_0x35ad50){var _0xee6759=this;return new Promise(function(_0x43ad3d,_0x481102){if(ami[_0x6953('0x10')]()==![]){return _0x481102(_0xee6759['error'](0x1f4,[config[_0x6953('0x12')]['ip'],config['asterisk'][_0x6953('0x13')],_0x6953('0x14')][_0x6953('0x15')]('\x20')));}var _0x50d2e0=schema(properties[_0x6953('0x73')])[_0x6953('0x3')](_0x35ad50);if(_0x50d2e0[_0x6953('0x5b')]>0x0){return _0x481102(_0xee6759[_0x6953('0x11')](0x1f4,_[_0x6953('0x70')](_0x50d2e0,_0x6953('0x1a'))['join'](',\x20')));}var _0x24a666=_[_0x6953('0x55')](_0x3ba964[_0x6953('0x6e')],{'uniqueid':_0x35ad50[_0x6953('0x5c')]});if(_0x24a666&&_0x24a666[_0x6953('0x5d')]){return ami[_0x6953('0x19')]({'action':_0x6953('0x74'),'channel':_0x24a666[_0x6953('0x5d')],'exten':_0x35ad50[_0x6953('0x75')],'context':_0x35ad50[_0x6953('0x76')]||_0x24a666[_0x6953('0x76')],'priority':0x1})['then'](function(_0x2ab424){_0x43ad3d({'code':0xc8,'message':[_0x35ad50[_0x6953('0x5c')],_0x2ab424[_0x6953('0x1a')][_0x6953('0x62')]()][_0x6953('0x15')]('\x20')});})[_0x6953('0x1e')](function(_0x16f3db){_0x481102(_0xee6759[_0x6953('0x11')](0x1f5,[_0x35ad50[_0x6953('0x5c')],_0x16f3db[_0x6953('0x1a')][_0x6953('0x62')]()]['join']('\x20')));});}else{return _0x481102(_0xee6759[_0x6953('0x11')](0x1f5,_0x6953('0x71')));}});},'Agents':function(_0x458277){return new Promise(function(_0x5a74ab,_0x51f1f5){var _0x547643=_['values'](_0x3ba964[_0x6953('0xe')]);_0x5a74ab({'count':_0x547643[_0x6953('0x5b')],'rows':_0x547643});});},'Telephones':function(_0x4f18ab){return new Promise(function(_0xcb3cac,_0x2a84c9){var _0x2928c3=_[_0x6953('0x58')](_0x3ba964['telephones']);_0xcb3cac({'count':_0x2928c3[_0x6953('0x5b')],'rows':_0x2928c3});});},'Trunks':function(_0x3113c0){return new Promise(function(_0x44f740,_0x4fcea8){var _0x2ac801=_[_0x6953('0x58')](_0x3ba964['trunks']);_0x44f740({'count':_0x2ac801[_0x6953('0x5b')],'rows':_0x2ac801});});},'OutboundChannels':function(_0x55e869){return new Promise(function(_0x531b79,_0x471ece){var _0x573d3d=_['values'](_0x3ba964[_0x6953('0x77')]);_0x531b79({'count':_0x573d3d[_0x6953('0x5b')],'rows':_0x573d3d});});},'Outbound':function(_0xb5bc85){return new Promise(function(_0x512384,_0x24a69e){_0x512384(_0x3ba964[_0x6953('0x78')]);});},'Campaigns':function(_0x557599){return new Promise(function(_0x30de2c,_0x405f12){var _0xb4b671=_[_0x6953('0x58')](_0x3ba964[_0x6953('0x79')]);_0x30de2c({'count':_0xb4b671[_0x6953('0x5b')],'rows':_0xb4b671});});},'VoiceQueuesPreview':function(_0xcd7f39){var _0x38ad21=this;return new Promise(function(_0xce6912,_0x594098){_0x2f3cc3[_0x6953('0x7a')](_0xcd7f39['id'])[_0x6953('0x60')](function(_0x52ba59){_0xce6912({'code':0xc8,'message':_0x52ba59[_0x6953('0x1a')]});})[_0x6953('0x1e')](function(_0x25fe7e){_0x594098(_0x38ad21[_0x6953('0x11')](0x1f4,_0x25fe7e[_0x6953('0x1a')]));});});},'EventManager':function(_0x300be9){var _0x42a27f=this;return new Promise(function(_0x4ba199,_0x40915a){if(!_0x300be9[_0x6953('0x7b')]){return _0x40915a(_0x42a27f[_0x6953('0x11')](0x1f4,_0x6953('0x7c')));}ami[_0x6953('0x7d')](_0x6953('0x7e')+_0x300be9[_0x6953('0x7b')],_0x300be9[_0x6953('0x1a')]);_0x4ba199({'code':0xc8,'message':_0x300be9});});},'FaxAccounts':function(_0x3e09a1){return new Promise(function(_0x56ed7b,_0xa69154){var _0x5661d2=_[_0x6953('0x58')](_0x3ba964['faxAccounts']);_0x56ed7b({'count':_0x5661d2[_0x6953('0x5b')],'rows':_0x5661d2});});},'SendFax':function(_0x7215ed){var _0x3cb96a=this;return new Promise(function(_0x46bcec,_0x2dae06){_0x494ac2['send'](_0x7215ed)[_0x6953('0x60')](function(_0x5dedbf){_0x46bcec({'code':0xc8,'message':_0x5dedbf[_0x6953('0x1a')]});})[_0x6953('0x1e')](function(_0x2907b9){_0x2dae06(_0x3cb96a[_0x6953('0x11')](0x1f4,_0x2907b9['message']));});});},'CheckAfterSend':function(_0x467a2f){var _0x50f019=this;return new Promise(function(_0x2a8cba,_0x2e5191){_0x494ac2[_0x6953('0x7f')](_0x467a2f)[_0x6953('0x60')](function(_0x3fc055){_0x2a8cba({'code':0xc8,'message':_0x3fc055['message']});})[_0x6953('0x1e')](function(_0x41ec04){_0x2e5191(_0x50f019[_0x6953('0x11')](0x1f4,_0x41ec04[_0x6953('0x1a')]));});});}};var _0x107db7=jayson['server'](_0x385f2d)['http']();_0x107db7['on']('error',function(_0x20e315){return _0x2bb026(_0x20e315);});_0x107db7[_0x6953('0x7')](0x232a,_0x6953('0x80'),function(){console['log'](_0x6953('0x81'),0x232a);return _0x2b273e('RPC\x20listening\x20on\x20port:'+0x232a);});});};
\ No newline at end of file
+var _0x96cc=['unmanaged','abandoned','waiting','loggedInDb','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundUnknownCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','push','length','find','omit','undefined','values','channels','voicechannel','validate','map','uniqueid','channel','%s.%s','filename','wav','ai(mixmonitorid)','monitors','/var/spool/asterisk/monitor/','toLowerCase','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','status','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','resolve','StopMixMonitor','destinationchannel','queueChannels','Hangup','voicequeuechannelredirect','Redirect','exten','context','trunks','outboundChannels','run','Event\x20name\x20mandatory','event','faxAccounts','send','checkAfterSend','server','http','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','jayson/promise','moment','../../../config/environment','../properties','../ami','listen','format','%s/%s','SIP','timers','agents','updateStatusRealtime','pause','QueuePause','isConnected','error','asterisk','username','ami\x20disconnected','join','pick','keys','module','action','Reload','Action','then','catch','message','command','Command','voiceQueues','hasOwnProperty','name','strategy','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','type'];(function(_0x1d9efb,_0x8f7c19){var _0x5469fa=function(_0x257afc){while(--_0x257afc){_0x1d9efb['push'](_0x1d9efb['shift']());}};_0x5469fa(++_0x8f7c19);}(_0x96cc,0x16c));var _0xc96c=function(_0x1aafbe,_0x3441c9){_0x1aafbe=_0x1aafbe-0x0;var _0x7de560=_0x96cc[_0x1aafbe];return _0x7de560;};'use strict';var _=require(_0xc96c('0x0'));var util=require('util');var jayson=require(_0xc96c('0x1'));var schema=require('validate');var moment=require(_0xc96c('0x2'));var config=require(_0xc96c('0x3'));var properties=require(_0xc96c('0x4'));var ami=require(_0xc96c('0x5'));exports[_0xc96c('0x6')]=function(_0x29b6f1,_0x377e6c,_0x7b632c){return new Promise(function(_0x3b7f45,_0x5142cd){var _0x10b411={'QueuePause':function(_0x18eb9c){return new Promise(function(_0x408afb){var _0x86c1a8=util[_0xc96c('0x7')](_0xc96c('0x8'),_0xc96c('0x9'),_0x18eb9c['name']);if(_0x29b6f1[_0xc96c('0xa')]&&_0x29b6f1[_0xc96c('0xa')][_0x86c1a8]&&_0x29b6f1[_0xc96c('0xa')][_0x86c1a8]['timer']){_0x29b6f1[_0xc96c('0xa')][_0x86c1a8]['updateAcw']();}if(_0x29b6f1[_0xc96c('0xb')][_0x86c1a8]){_0x29b6f1['agents'][_0x86c1a8][_0xc96c('0xc')]({'statePause':_0x18eb9c[_0xc96c('0xd')]?!![]:![]});}_0x408afb({'code':0xc8,'message':_0xc96c('0xe')});});},'Reload':function(_0x246a95){var _0x5f27f3=this;return new Promise(function(_0x3fe3d5,_0x43fcaa){if(ami[_0xc96c('0xf')]()==![]){return _0x43fcaa(_0x5f27f3[_0xc96c('0x10')](0x1f4,[config['asterisk']['ip'],config[_0xc96c('0x11')][_0xc96c('0x12')],_0xc96c('0x13')][_0xc96c('0x14')]('\x20')));}_0x246a95=_[_0xc96c('0x15')](_0x246a95,_[_0xc96c('0x16')](properties[_0xc96c('0x17')]));_0x246a95[_0xc96c('0x18')]=_0xc96c('0x19');return ami[_0xc96c('0x1a')](_0x246a95)[_0xc96c('0x1b')](function(_0x5f1344){_0x3fe3d5({'code':0xc8,'message':_0x5f1344['message']});})[_0xc96c('0x1c')](function(_0x99c402){_0x43fcaa(_0x5f27f3[_0xc96c('0x10')](0x1f5,_0x99c402[_0xc96c('0x1d')]));});});},'Command':function(_0x4aa6a3){var _0x2c4c83=this;return new Promise(function(_0x100fdb,_0x2a361c){if(ami[_0xc96c('0xf')]()==![]){return _0x2a361c(_0x2c4c83[_0xc96c('0x10')](0x1f4,[config[_0xc96c('0x11')]['ip'],config[_0xc96c('0x11')][_0xc96c('0x12')],_0xc96c('0x13')][_0xc96c('0x14')]('\x20')));}_0x4aa6a3=_[_0xc96c('0x15')](_0x4aa6a3,_0xc96c('0x1e'));_0x4aa6a3[_0xc96c('0x18')]=_0xc96c('0x1f');return ami[_0xc96c('0x1a')](_0x4aa6a3)[_0xc96c('0x1b')](function(_0x3e2615){_0x100fdb({'code':0xc8,'message':_0x3e2615['content']});})[_0xc96c('0x1c')](function(_0x4be783){_0x2a361c(_0x2c4c83[_0xc96c('0x10')](0x1f5,_0x4be783[_0xc96c('0x1d')]));});});},'VoiceQueues':function(){return new Promise(function(_0x2b1df9){var _0x35f480=[];for(var _0x40f23d in _0x29b6f1[_0xc96c('0x20')]){if(_0x29b6f1[_0xc96c('0x20')][_0xc96c('0x21')](_0x40f23d)){var _0x50fc07=_0x29b6f1[_0xc96c('0x20')][_0x40f23d];var _0x117f17={'id':_0x50fc07['id'],'name':_0x50fc07[_0xc96c('0x22')],'strategy':_0x50fc07[_0xc96c('0x23')],'answered':_0x50fc07['answered'],'available':_0x50fc07['available'],'loggedIn':_0x50fc07[_0xc96c('0x24')],'pTalking':_0x50fc07[_0xc96c('0x25')],'sumBillable':_0x50fc07[_0xc96c('0x26')],'sumDuration':_0x50fc07[_0xc96c('0x27')],'sumHoldTime':_0x50fc07[_0xc96c('0x28')]||0x0,'talking':_0x50fc07[_0xc96c('0x29')],'total':_0x50fc07[_0xc96c('0x2a')],'type':_0x50fc07[_0xc96c('0x2b')],'unmanaged':_0x50fc07[_0xc96c('0x2c')],'abandoned':_0x50fc07[_0xc96c('0x2d')],'waiting':_0x50fc07[_0xc96c('0x2e')],'loggedInDb':_0x50fc07[_0xc96c('0x2f')]};if(_0x50fc07[_0xc96c('0x2b')]===_0xc96c('0x30')){_0x117f17['dialActive']=_0x50fc07[_0xc96c('0x31')];_0x117f17['dialMethod']=_0x50fc07[_0xc96c('0x32')];_0x117f17[_0xc96c('0x33')]=_0x50fc07[_0xc96c('0x33')];_0x117f17['dialOriginateCallerIdNumber']=_0x50fc07[_0xc96c('0x34')];_0x117f17[_0xc96c('0x35')]=_0x50fc07[_0xc96c('0x35')];_0x117f17[_0xc96c('0x36')]=_0x50fc07['dialPrefix'];_0x117f17['temp']=_0x50fc07[_0xc96c('0x37')];_0x117f17[_0xc96c('0x38')]=_0x50fc07[_0xc96c('0x38')];_0x117f17['outboundAnswerCallsDay']=_0x50fc07[_0xc96c('0x39')];_0x117f17[_0xc96c('0x3a')]=_0x50fc07[_0xc96c('0x3a')];_0x117f17[_0xc96c('0x3b')]=_0x50fc07['outboundBusyCallsDay'];_0x117f17[_0xc96c('0x3c')]=_0x50fc07[_0xc96c('0x3c')];_0x117f17['outboundDropCallsDayACS']=_0x50fc07[_0xc96c('0x3d')];_0x117f17[_0xc96c('0x3e')]=_0x50fc07[_0xc96c('0x3e')];_0x117f17[_0xc96c('0x3f')]=_0x50fc07[_0xc96c('0x3f')];_0x117f17[_0xc96c('0x40')]=_0x50fc07['outboundNoAnswerCallsDay'];_0x117f17[_0xc96c('0x41')]=_0x50fc07[_0xc96c('0x41')];_0x117f17[_0xc96c('0x42')]=_0x50fc07[_0xc96c('0x42')];_0x117f17[_0xc96c('0x43')]=_0x50fc07[_0xc96c('0x43')];_0x117f17['outboundRejectCallsDay']=_0x50fc07['outboundRejectCallsDay'];_0x117f17[_0xc96c('0x44')]=_0x50fc07[_0xc96c('0x44')];_0x117f17['predictiveIntervalAnsweredCalls']=_0x50fc07['predictiveIntervalAnsweredCalls'];_0x117f17[_0xc96c('0x45')]=_0x50fc07[_0xc96c('0x45')];_0x117f17[_0xc96c('0x46')]=_0x50fc07[_0xc96c('0x46')];_0x117f17[_0xc96c('0x47')]=_0x50fc07[_0xc96c('0x47')];_0x117f17[_0xc96c('0x48')]=_0x50fc07[_0xc96c('0x48')];_0x117f17[_0xc96c('0x49')]=_0x50fc07[_0xc96c('0x49')];_0x117f17[_0xc96c('0x4a')]=_0x50fc07['predictiveIntervalErlangCallsDroppedCalls'];_0x117f17[_0xc96c('0x4b')]=_0x50fc07[_0xc96c('0x4b')];_0x117f17[_0xc96c('0x4c')]=_0x50fc07[_0xc96c('0x4c')];_0x117f17['predictiveIntervalPauses']=_0x50fc07[_0xc96c('0x4d')];_0x117f17[_0xc96c('0x4e')]=_0x50fc07[_0xc96c('0x4e')];_0x117f17['predictiveIntervalTotalCalls']=_0x50fc07['predictiveIntervalTotalCalls'];_0x117f17[_0xc96c('0x1d')]=_0x50fc07[_0xc96c('0x1d')];_0x117f17[_0xc96c('0x4f')]=_0x50fc07['originated'];_0x117f17[_0xc96c('0x50')]=_0x50fc07[_0xc96c('0x50')];_0x117f17[_0xc96c('0x51')]=_0x50fc07[_0xc96c('0x51')];_0x117f17[_0xc96c('0x52')]=_0x50fc07[_0xc96c('0x52')];_0x117f17[_0xc96c('0x53')]=_0x50fc07[_0xc96c('0x53')];_0x117f17[_0xc96c('0x54')]=_0x50fc07['startPredictive'];_0x117f17['startProgressive']=_0x50fc07[_0xc96c('0x55')];}if(_0x50fc07[_0xc96c('0x56')]){_0x117f17[_0xc96c('0x56')]={'id':_0x50fc07[_0xc96c('0x56')]['id'],'name':_0x50fc07['Trunk']['name'],'active':_0x50fc07[_0xc96c('0x56')][_0xc96c('0x57')],'callerid':_0x50fc07[_0xc96c('0x56')][_0xc96c('0x58')]};}if(_0x50fc07[_0xc96c('0x59')]){_0x117f17[_0xc96c('0x59')]={'id':_0x50fc07[_0xc96c('0x59')]['id'],'name':_0x50fc07['Interval'][_0xc96c('0x22')]};}_0x35f480[_0xc96c('0x5a')](_0x117f17);}}_0x2b1df9({'count':_0x35f480[_0xc96c('0x5b')],'rows':_0x35f480});});},'UpdateVoiceQueue':function(_0x3f68d5){return new Promise(function(_0x526f3c,_0x4ab5b1){var _0x34c796=_[_0xc96c('0x5c')](_0x29b6f1[_0xc96c('0x20')],{'id':parseInt(_0x3f68d5['id'])});var _0x9ea3e0=_[_0xc96c('0x5d')](_0x3f68d5,['id']);if(_0x34c796){for(var _0x2c78ea in _0x9ea3e0){if(typeof _0x9ea3e0[_0x2c78ea]!==_0xc96c('0x5e')&&typeof _0x34c796[_0x2c78ea]!==_0xc96c('0x5e')){_0x34c796[_0x2c78ea]=_0x9ea3e0[_0x2c78ea];}}_0x526f3c(_0x34c796);}else{_0x4ab5b1();}});},'VoiceChannels':function(){return new Promise(function(_0xc9f94d){var _0x1a00a4=_[_0xc96c('0x5f')](_0x29b6f1[_0xc96c('0x60')]);_0xc9f94d({'count':_0x1a00a4[_0xc96c('0x5b')],'rows':_0x1a00a4});});},'VoiceChannelMixMonitor':function(_0x558683){var _0x13445d=this;return new Promise(function(_0x2e5045,_0x307d58){if(ami[_0xc96c('0xf')]()==![]){return _0x307d58(_0x13445d['error'](0x1f4,[config[_0xc96c('0x11')]['ip'],config['asterisk'][_0xc96c('0x12')],_0xc96c('0x13')]['join']('\x20')));}var _0x2581ae=schema(properties[_0xc96c('0x61')])[_0xc96c('0x62')](_0x558683);if(_0x2581ae[_0xc96c('0x5b')]>0x0){return _0x307d58(_0x13445d[_0xc96c('0x10')](0x1f4,_[_0xc96c('0x63')](_0x2581ae,'message')['join'](',\x20')));}var _0x557511=_[_0xc96c('0x5c')](_0x29b6f1['channels'],{'uniqueid':_0x558683[_0xc96c('0x64')]});if(_0x557511&&_0x557511[_0xc96c('0x65')]){var _0x65a0a7=util[_0xc96c('0x7')](_0xc96c('0x66'),_0x558683[_0xc96c('0x67')]||_0x558683[_0xc96c('0x64')],_0x558683[_0xc96c('0x7')]||_0xc96c('0x68'));return ami[_0xc96c('0x1a')]({'action':'MixMonitor','channel':_0x557511[_0xc96c('0x65')],'file':_0x65a0a7,'options':_0xc96c('0x69')})[_0xc96c('0x1b')](function(_0x215cad){var _0x1c7ea7=_[_0xc96c('0x5c')](_0x557511[_0xc96c('0x6a')],{'filename':_0xc96c('0x6b')+_0x65a0a7['toLowerCase']()});if(_['isNil'](_0x1c7ea7)){_0x557511['monitors']['push']({'filename':_0xc96c('0x6b')+_0x65a0a7[_0xc96c('0x6c')](),'createdAt':moment()[_0xc96c('0x7')](_0xc96c('0x6d')),'mixmonitorid':_0x215cad[_0xc96c('0x6e')],'status':_0xc96c('0x6f')});}else{_0x1c7ea7[_0xc96c('0x6e')]=_0x215cad['mixmonitorid'];_0x1c7ea7[_0xc96c('0x70')]=_0xc96c('0x6f');}_0x2e5045({'code':0xc8,'message':[_0x558683[_0xc96c('0x64')],_0xc96c('0x71'),_0x215cad[_0xc96c('0x6e')]][_0xc96c('0x14')]('\x20'),'mixmonitorid':_0x215cad[_0xc96c('0x6e')]});})['catch'](function(_0x139e11){_0x307d58(_0x13445d[_0xc96c('0x10')](0x1f5,[_0x558683[_0xc96c('0x64')],_0x139e11[_0xc96c('0x1d')][_0xc96c('0x6c')]()][_0xc96c('0x14')]('\x20')));});}else{return _0x307d58(_0x13445d[_0xc96c('0x10')](0x1f5,_0xc96c('0x72')));}});},'VoiceChannelStopMixMonitor':function(_0x10b1b8){var _0x29a55a=this;return new Promise(function(_0x1b862a,_0x418810){if(ami[_0xc96c('0xf')]()==![]){return _0x418810(_0x29a55a[_0xc96c('0x10')](0x1f4,[config['asterisk']['ip'],config[_0xc96c('0x11')][_0xc96c('0x12')],_0xc96c('0x13')][_0xc96c('0x14')]('\x20')));}var _0x2efd4e=schema(properties['voicechannel'])[_0xc96c('0x62')](_0x10b1b8);if(_0x2efd4e[_0xc96c('0x5b')]>0x0){return _0x418810(_0x29a55a[_0xc96c('0x10')](0x1f4,_[_0xc96c('0x63')](_0x2efd4e,'message')[_0xc96c('0x14')](',\x20')));}var _0x4629ce=_['find'](_0x29b6f1['channels'],{'uniqueid':_0x10b1b8['uniqueid']});if(_0x4629ce){return Promise[_0xc96c('0x73')]()[_0xc96c('0x1b')](function(){if(_0x4629ce[_0xc96c('0x65')]){return ami[_0xc96c('0x1a')]({'action':_0xc96c('0x74'),'channel':_0x4629ce['channel'],'mixmonitorid':_0x10b1b8['mixmonitorid']})[_0xc96c('0x1c')](function(){});}})[_0xc96c('0x1b')](function(){if(_0x4629ce[_0xc96c('0x75')]){return ami[_0xc96c('0x1a')]({'action':_0xc96c('0x74'),'channel':_0x4629ce['destinationchannel'],'mixmonitorid':_0x10b1b8[_0xc96c('0x6e')]})[_0xc96c('0x1c')](function(){});}})[_0xc96c('0x1b')](function(){var _0x3424c1=_['find'](_0x4629ce['monitors'],{'mixmonitorid':_0x10b1b8[_0xc96c('0x6e')]});if(_0x3424c1){_0x3424c1[_0xc96c('0x70')]='stop';}})[_0xc96c('0x1b')](function(){var _0x5f090e=util[_0xc96c('0x7')](_0xc96c('0x66'),_0x10b1b8[_0xc96c('0x67')]||_0x10b1b8[_0xc96c('0x64')],_0x10b1b8[_0xc96c('0x7')]||_0xc96c('0x68'));var _0x51a5f0=_[_0xc96c('0x5c')](_0x4629ce[_0xc96c('0x6a')],{'filename':_0xc96c('0x6b')+_0x5f090e['toLowerCase']()});if(_0x51a5f0){_0x51a5f0[_0xc96c('0x70')]='stop';}})[_0xc96c('0x1b')](function(){_0x1b862a({'code':0xc8,'message':[_0x10b1b8[_0xc96c('0x64')],'StopMixMonitor\x20Success'][_0xc96c('0x14')]('\x20')});})['catch'](function(_0x424b0a){_0x418810(_0x29a55a[_0xc96c('0x10')](0x1f5,[_0x10b1b8[_0xc96c('0x64')],_0x424b0a[_0xc96c('0x1d')][_0xc96c('0x6c')]()][_0xc96c('0x14')]('\x20')));});}else{return _0x418810(_0x29a55a[_0xc96c('0x10')](0x1f5,_0xc96c('0x72')));}});},'VoiceQueuesChannels':function(){return new Promise(function(_0x2b7fcc){var _0x541f73=_[_0xc96c('0x5f')](_0x29b6f1[_0xc96c('0x76')]);_0x2b7fcc({'count':_0x541f73[_0xc96c('0x5b')],'rows':_0x541f73});});},'VoiceQueuesChannel':function(_0x43f94e){var _0x5282cb=this;return new Promise(function(_0x4667f6,_0x1e927d){var _0x54f3fe=schema(properties['voicequeuechannel'])[_0xc96c('0x62')](_0x43f94e);if(_0x54f3fe['length']>0x0){return _0x1e927d(_0x5282cb[_0xc96c('0x10')](0x1f4,_[_0xc96c('0x63')](_0x54f3fe,_0xc96c('0x1d'))[_0xc96c('0x14')](',\x20')));}var _0x378986=_[_0xc96c('0x5c')](_0x29b6f1[_0xc96c('0x76')],{'uniqueid':_0x43f94e[_0xc96c('0x64')]});if(_0x378986){_0x4667f6(_0x378986);}else{return _0x1e927d(_0x5282cb[_0xc96c('0x10')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelHangup':function(_0x28ee7c){var _0x18cf04=this;return new Promise(function(_0x288d46,_0x4831d3){if(ami['isConnected']()==![]){return _0x4831d3(_0x18cf04[_0xc96c('0x10')](0x1f4,[config[_0xc96c('0x11')]['ip'],config[_0xc96c('0x11')][_0xc96c('0x12')],_0xc96c('0x13')][_0xc96c('0x14')]('\x20')));}var _0x158f70=schema(properties['voicequeuechannelhangup'])[_0xc96c('0x62')](_0x28ee7c);if(_0x158f70[_0xc96c('0x5b')]>0x0){return _0x4831d3(_0x18cf04['error'](0x1f4,_[_0xc96c('0x63')](_0x158f70,'message')[_0xc96c('0x14')](',\x20')));}var _0x213a35=_[_0xc96c('0x5c')](_0x29b6f1[_0xc96c('0x76')],{'uniqueid':_0x28ee7c[_0xc96c('0x64')]});if(_0x213a35&&_0x213a35[_0xc96c('0x65')]){return ami[_0xc96c('0x1a')]({'action':_0xc96c('0x77'),'channel':_0x213a35[_0xc96c('0x65')]})['then'](function(_0x13b11d){_0x288d46({'code':0xc8,'message':[_0x28ee7c[_0xc96c('0x64')],_0x13b11d['message'][_0xc96c('0x6c')]()]['join']('\x20')});})[_0xc96c('0x1c')](function(_0x669dec){_0x4831d3(_0x18cf04[_0xc96c('0x10')](0x1f5,[_0x28ee7c['uniqueid'],_0x669dec[_0xc96c('0x1d')][_0xc96c('0x6c')]()]['join']('\x20')));});}else{return _0x4831d3(_0x18cf04[_0xc96c('0x10')](0x1f5,_0xc96c('0x72')));}});},'VoiceQueuesChannelRedirect':function(_0x414608){var _0x5f3aea=this;return new Promise(function(_0xefdd1c,_0x1ed8da){if(ami[_0xc96c('0xf')]()==![]){return _0x1ed8da(_0x5f3aea[_0xc96c('0x10')](0x1f4,[config[_0xc96c('0x11')]['ip'],config[_0xc96c('0x11')][_0xc96c('0x12')],_0xc96c('0x13')][_0xc96c('0x14')]('\x20')));}var _0x45ac92=schema(properties[_0xc96c('0x78')])[_0xc96c('0x62')](_0x414608);if(_0x45ac92[_0xc96c('0x5b')]>0x0){return _0x1ed8da(_0x5f3aea[_0xc96c('0x10')](0x1f4,_[_0xc96c('0x63')](_0x45ac92,'message')[_0xc96c('0x14')](',\x20')));}var _0x7780a3=_[_0xc96c('0x5c')](_0x29b6f1[_0xc96c('0x76')],{'uniqueid':_0x414608[_0xc96c('0x64')]});if(_0x7780a3&&_0x7780a3['channel']){return ami[_0xc96c('0x1a')]({'action':_0xc96c('0x79'),'channel':_0x7780a3[_0xc96c('0x65')],'exten':_0x414608[_0xc96c('0x7a')],'context':_0x414608[_0xc96c('0x7b')]||_0x7780a3['context'],'priority':0x1})['then'](function(_0x5952f){_0xefdd1c({'code':0xc8,'message':[_0x414608[_0xc96c('0x64')],_0x5952f['message'][_0xc96c('0x6c')]()][_0xc96c('0x14')]('\x20')});})['catch'](function(_0xea2e29){_0x1ed8da(_0x5f3aea[_0xc96c('0x10')](0x1f5,[_0x414608['uniqueid'],_0xea2e29[_0xc96c('0x1d')][_0xc96c('0x6c')]()][_0xc96c('0x14')]('\x20')));});}else{return _0x1ed8da(_0x5f3aea[_0xc96c('0x10')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'Agents':function(_0x1edf5b){return new Promise(function(_0x38c9f3){var _0x501921=_['values'](_0x29b6f1[_0xc96c('0xb')]);if(_0x1edf5b&&_0x1edf5b['id']){var _0x490a9a=_[_0xc96c('0x5c')](_0x501921,function(_0xbefc49){return _0xbefc49['id']===_0x1edf5b['id'];});_0x38c9f3(_0x490a9a);}else{_0x38c9f3({'count':_0x501921['length'],'rows':_0x501921});}});},'Telephones':function(){return new Promise(function(_0x5d4c37){var _0xbdb2a4=_[_0xc96c('0x5f')](_0x29b6f1['telephones']);_0x5d4c37({'count':_0xbdb2a4[_0xc96c('0x5b')],'rows':_0xbdb2a4});});},'Trunks':function(){return new Promise(function(_0x1592ec){var _0x2471b1=_[_0xc96c('0x5f')](_0x29b6f1[_0xc96c('0x7c')]);_0x1592ec({'count':_0x2471b1[_0xc96c('0x5b')],'rows':_0x2471b1});});},'OutboundChannels':function(){return new Promise(function(_0x2a7109){var _0x200580=_[_0xc96c('0x5f')](_0x29b6f1[_0xc96c('0x7d')]);_0x2a7109({'count':_0x200580[_0xc96c('0x5b')],'rows':_0x200580});});},'Outbound':function(){return new Promise(function(_0xcbe587){_0xcbe587(_0x29b6f1[_0xc96c('0x30')]);});},'Campaigns':function(){return new Promise(function(_0x1301d4){var _0x36a176=_[_0xc96c('0x5f')](_0x29b6f1['campaigns']);_0x1301d4({'count':_0x36a176[_0xc96c('0x5b')],'rows':_0x36a176});});},'VoiceQueuesPreview':function(_0x214913){var _0x29b839=this;return new Promise(function(_0x222b22,_0x4ac5b9){_0x377e6c[_0xc96c('0x7e')](_0x214913['id'])[_0xc96c('0x1b')](function(_0x299d57){_0x222b22({'code':0xc8,'message':_0x299d57[_0xc96c('0x1d')]});})[_0xc96c('0x1c')](function(_0x22c205){_0x4ac5b9(_0x29b839['error'](0x1f4,_0x22c205[_0xc96c('0x1d')]));});});},'EventManager':function(_0x55f9d0){var _0x4be219=this;return new Promise(function(_0x491022,_0x486840){if(!_0x55f9d0['event']){return _0x486840(_0x4be219[_0xc96c('0x10')](0x1f4,_0xc96c('0x7f')));}ami['emit']('custom:'+_0x55f9d0[_0xc96c('0x80')],_0x55f9d0[_0xc96c('0x1d')]);_0x491022({'code':0xc8,'message':_0x55f9d0});});},'FaxAccounts':function(){return new Promise(function(_0x14f80f){var _0x1907a2=_[_0xc96c('0x5f')](_0x29b6f1[_0xc96c('0x81')]);_0x14f80f({'count':_0x1907a2[_0xc96c('0x5b')],'rows':_0x1907a2});});},'SendFax':function(_0x26e622){var _0x3aaab8=this;return new Promise(function(_0x9dcfe0,_0x2828a3){_0x7b632c[_0xc96c('0x82')](_0x26e622)[_0xc96c('0x1b')](function(_0x2159af){_0x9dcfe0({'code':0xc8,'message':_0x2159af[_0xc96c('0x1d')]});})[_0xc96c('0x1c')](function(_0x5927bb){_0x2828a3(_0x3aaab8[_0xc96c('0x10')](0x1f4,_0x5927bb[_0xc96c('0x1d')]));});});},'CheckAfterSend':function(_0x5b3d91){var _0x398447=this;return new Promise(function(_0xda6cee,_0x1b7d0f){_0x7b632c[_0xc96c('0x83')](_0x5b3d91)[_0xc96c('0x1b')](function(_0x117d57){_0xda6cee({'code':0xc8,'message':_0x117d57[_0xc96c('0x1d')]});})[_0xc96c('0x1c')](function(_0x1dbd19){_0x1b7d0f(_0x398447[_0xc96c('0x10')](0x1f4,_0x1dbd19[_0xc96c('0x1d')]));});});}};var _0x1c66d6=jayson[_0xc96c('0x84')](_0x10b411)[_0xc96c('0x85')]();_0x1c66d6['on'](_0xc96c('0x10'),function(_0xc65e47){return _0x5142cd(_0xc65e47);});_0x1c66d6[_0xc96c('0x6')](0x232a,'127.0.0.1',function(){console[_0xc96c('0x86')](_0xc96c('0x87'),0x232a);return _0x3b7f45('RPC\x20listening\x20on\x20port:'+0x232a);});});};
\ No newline at end of file
index 7f46c15..b38a94c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde71=['stringify','emit','exec','data2','isNil','xmd-contactid','ListId','data3','$or','map','routeId','destcalleridnum','calleridnum','firstName','lastName','phone','mobile','scheduledAt','updatedAt','union','isEmpty','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','calleridname','<unknown>','Unknown','destcalleridname','then','push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','format','name','trigger:%s','action','toLowerCase','merge','length','lodash','bluebird','ioredis','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','redis','defaults','localhost','info','[CM][%s][%s]'];(function(_0x357e69,_0x5210e7){var _0x5ede4c=function(_0x598566){while(--_0x598566){_0x357e69['push'](_0x357e69['shift']());}};_0x5ede4c(++_0x5210e7);}(_0xde71,0xcc));var _0x1de7=function(_0x3ef45e,_0xe84f33){_0x3ef45e=_0x3ef45e-0x0;var _0x69e7c=_0xde71[_0x3ef45e];return _0x69e7c;};'use strict';var _=require(_0x1de7('0x0'));var BPromise=require(_0x1de7('0x1'));var Redis=require(_0x1de7('0x2'));var util=require('util');var config=require(_0x1de7('0x3'));var logger=require(_0x1de7('0x4'))(_0x1de7('0x5'));var cmContactRpc=require(_0x1de7('0x6'));config[_0x1de7('0x7')]=_[_0x1de7('0x8')](config['redis'],{'host':_0x1de7('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x1de7('0x7')]));function emit(_0x26e9ae,_0x25cf39,_0x239214,_0xde68c9,_0xcfc335){logger[_0x1de7('0xa')](_0x1de7('0xb'),_0x26e9ae,_0x25cf39['id'],_0x239214,_0xde68c9,JSON[_0x1de7('0xc')](_0xcfc335));io['to'](_0x239214)[_0x1de7('0xd')](_0xde68c9,_0xcfc335);}exports[_0x1de7('0xe')]=function(_0x3b12ae,_0x387803,_0x56a2bf,_0x25c631){var _0x572c71,_0x4fc4fe;var _0x1d1eb1={};var _0xf6b9b1;var _0x243de5=Number(_0x56a2bf['data1']);var _0x44e2af=_0x56a2bf[_0x1de7('0xf')]?Boolean(Number(_0x56a2bf[_0x1de7('0xf')])):![];var _0x4c6ede;var _0xdbef00=![];if(!_[_0x1de7('0x10')](_0x56a2bf['data5'])){if(_0x56a2bf['data5']=='1')_0xdbef00=!![];}if(!_0xdbef00){if(_0x25c631[_0x1de7('0x11')]){_0x1d1eb1['id']=_0x25c631[_0x1de7('0x11')];}}if(!_0x1d1eb1['id']){_0x1d1eb1[_0x1de7('0x12')]=_0x243de5;_0x4c6ede=_0x56a2bf[_0x1de7('0x13')]&&_0x56a2bf['data3']!=='0'?_0x56a2bf['data3']['split'](','):['phone'];_0x1d1eb1[_0x1de7('0x14')]=_[_0x1de7('0x15')](_0x4c6ede,function(_0x4855c9){var _0x5d7984={};_0x5d7984[_0x4855c9]=_0x25c631[_0x1de7('0x16')]?_0x25c631[_0x1de7('0x17')]:_0x25c631[_0x1de7('0x18')];return _0x5d7984;});_0xf6b9b1=_0x25c631[_0x1de7('0x16')]?_0x25c631[_0x1de7('0x17')]:_0x25c631[_0x1de7('0x18')];}var _0x3f202d=['id',_0x1de7('0x19'),_0x1de7('0x1a'),_0x1de7('0x1b'),_0x1de7('0x1c'),'fax',_0x1de7('0x12'),'createdAt',_0x1de7('0x1d'),_0x1de7('0x1e')];var _0x3e215d=_[_0x1de7('0x1f')](_0x3f202d,_0x4c6ede);BPromise['resolve']()['then'](cmContactRpc['getContacts']({'attributes':_0x3e215d,'where':_0x1d1eb1,'phone':_0xf6b9b1}))['then'](function(_0xdf0e6b){_0x4fc4fe=_0xdf0e6b;if(!_[_0x1de7('0x20')](_0x4fc4fe)){if(_0x4fc4fe['length']===0x1){_0x572c71=_0x4fc4fe[0x0];logger[_0x1de7('0xa')](_0x1de7('0x21'),_0x25c631[_0x1de7('0x22')],_0x387803['id'],_0x572c71['id']);}else{logger['info'](_0x1de7('0x23'),_0x25c631[_0x1de7('0x22')],_0x387803['id'],_['map'](_0x4fc4fe,'id')[_0x1de7('0x24')](','));}return;}else{logger['info'](_0x1de7('0x25'),_0x25c631['uniqueid'],_0x387803['id']);var _0x1cfd9f={'ListId':_0x243de5};var _0x511dbc=_0x56a2bf[_0x1de7('0x26')]&&_0x56a2bf[_0x1de7('0x26')]!=='0'?_0x56a2bf[_0x1de7('0x26')]:_0x1de7('0x1b');if(_0x44e2af){logger[_0x1de7('0xa')]('[CM][%s][%s]\x20Autocreate\x20enabled',_0x25c631[_0x1de7('0x22')],_0x387803['id']);_0x1cfd9f[_0x511dbc]=_[_0x1de7('0x10')](_0x25c631[_0x1de7('0x16')])?_0x25c631['calleridnum']:_0x25c631[_0x1de7('0x17')];if(_[_0x1de7('0x10')](_0x25c631['routeId'])){_0x1cfd9f['firstName']=_0x25c631['calleridname']&&_0x25c631[_0x1de7('0x27')]!==_0x1de7('0x28')?_0x25c631[_0x1de7('0x27')]:_0x1de7('0x29');}else{_0x1cfd9f[_0x1de7('0x19')]=_0x25c631[_0x1de7('0x2a')]&&_0x25c631['destcalleridname']!==_0x1de7('0x28')?_0x25c631[_0x1de7('0x2a')]:_0x1de7('0x29');}return BPromise['resolve']()[_0x1de7('0x2b')](cmContactRpc['createContact'](_0x1cfd9f))[_0x1de7('0x2b')](function(_0x62832d){_0x572c71=_0x62832d;_0x4fc4fe[_0x1de7('0x2c')](_0x62832d);if(_0x572c71){logger[_0x1de7('0xa')](_0x1de7('0x2d'),_0x25c631['uniqueid'],_0x387803['id'],_0x572c71['id']);}return;});}else{logger[_0x1de7('0xa')](_0x1de7('0x2e'),_0x25c631['uniqueid'],_0x387803['id']);_0x1cfd9f[_0x511dbc]=_[_0x1de7('0x10')](_0x25c631[_0x1de7('0x16')])?_0x25c631[_0x1de7('0x18')]:_0x25c631['destcalleridnum'];if(_['isNil'](_0x25c631[_0x1de7('0x16')])){_0x1cfd9f['firstName']=_0x25c631[_0x1de7('0x27')]&&_0x25c631[_0x1de7('0x27')]!==_0x1de7('0x28')?_0x25c631['calleridname']:_0x1de7('0x29');}else{_0x1cfd9f[_0x1de7('0x19')]=_0x25c631['destcalleridname']&&_0x25c631[_0x1de7('0x2a')]!==_0x1de7('0x28')?_0x25c631['destcalleridname']:'Unknown';}_0x572c71=_0x1cfd9f;_0x4fc4fe[_0x1de7('0x2c')](_0x1cfd9f);return;}}})[_0x1de7('0x2b')](function(){if(_0x3b12ae){emit(_0x25c631[_0x1de7('0x22')],_0x387803,util[_0x1de7('0x2f')]('user:%s',_0x3b12ae[_0x1de7('0x30')]),util[_0x1de7('0x2f')](_0x1de7('0x31'),_0x56a2bf[_0x1de7('0x32')][_0x1de7('0x33')]()),{'evt':_[_0x1de7('0x34')](_0x25c631,{'autoCreate':_0x44e2af}),'contact':_0x572c71===undefined?{}:_0x572c71,'contacts':_0x4fc4fe[_0x1de7('0x35')]===0x0?undefined:_0x4fc4fe});}});};
\ No newline at end of file
+var _0x09d1=['Unknown','destcalleridname','createContact','push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','user:%s','format','action','toLowerCase','bluebird','util','../../../../config/environment','../../../../config/logger','../../rpc/cmContact','redis','defaults','localhost','socket.io-emitter','info','stringify','exec','data1','data2','isNil','data5','xmd-contactid','ListId','data3','split','$or','map','routeId','destcalleridnum','calleridnum','firstName','lastName','mobile','fax','updatedAt','union','resolve','then','getContacts','isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','[CM][%s][%s]\x20Contact\x20not\x20found','uniqueid','data4','phone','[CM][%s][%s]\x20Autocreate\x20enabled','calleridname','<unknown>'];(function(_0x457ff5,_0xb7c5e9){var _0x440612=function(_0x22bead){while(--_0x22bead){_0x457ff5['push'](_0x457ff5['shift']());}};_0x440612(++_0xb7c5e9);}(_0x09d1,0xac));var _0x109d=function(_0x363de1,_0x4d63ba){_0x363de1=_0x363de1-0x0;var _0x2c76a4=_0x09d1[_0x363de1];return _0x2c76a4;};'use strict';var _=require('lodash');var BPromise=require(_0x109d('0x0'));var Redis=require('ioredis');var util=require(_0x109d('0x1'));var config=require(_0x109d('0x2'));var logger=require(_0x109d('0x3'))('trigger');var cmContactRpc=require(_0x109d('0x4'));config[_0x109d('0x5')]=_[_0x109d('0x6')](config[_0x109d('0x5')],{'host':_0x109d('0x7'),'port':0x18eb});var io=require(_0x109d('0x8'))(new Redis(config[_0x109d('0x5')]));function emit(_0x398a6f,_0x1926ff,_0x7b0f7f,_0x58132d,_0x5181dc){logger[_0x109d('0x9')]('[CM][%s][%s]',_0x398a6f,_0x1926ff['id'],_0x7b0f7f,_0x58132d,JSON[_0x109d('0xa')](_0x5181dc));io['to'](_0x7b0f7f)['emit'](_0x58132d,_0x5181dc);}exports[_0x109d('0xb')]=function(_0x54c29b,_0x387aba,_0x4288ea,_0x4ce0e3){var _0x4c0d77,_0x4cd784;var _0xdf3944={};var _0x3ba1c6;var _0x32e705=Number(_0x4288ea[_0x109d('0xc')]);var _0x4823d3=_0x4288ea['data2']?Boolean(Number(_0x4288ea[_0x109d('0xd')])):![];var _0xe5ec1b;var _0x2f2c13=![];if(!_[_0x109d('0xe')](_0x4288ea[_0x109d('0xf')])){if(_0x4288ea[_0x109d('0xf')]=='1')_0x2f2c13=!![];}if(!_0x2f2c13){if(_0x4ce0e3[_0x109d('0x10')]){_0xdf3944['id']=_0x4ce0e3[_0x109d('0x10')];}}if(!_0xdf3944['id']){_0xdf3944[_0x109d('0x11')]=_0x32e705;_0xe5ec1b=_0x4288ea[_0x109d('0x12')]&&_0x4288ea[_0x109d('0x12')]!=='0'?_0x4288ea[_0x109d('0x12')][_0x109d('0x13')](','):['phone'];_0xdf3944[_0x109d('0x14')]=_[_0x109d('0x15')](_0xe5ec1b,function(_0x45c405){var _0x1f51e5={};_0x1f51e5[_0x45c405]=_0x4ce0e3[_0x109d('0x16')]?_0x4ce0e3[_0x109d('0x17')]:_0x4ce0e3['calleridnum'];return _0x1f51e5;});_0x3ba1c6=_0x4ce0e3['routeId']?_0x4ce0e3['destcalleridnum']:_0x4ce0e3[_0x109d('0x18')];}var _0x2316a7=['id',_0x109d('0x19'),_0x109d('0x1a'),'phone',_0x109d('0x1b'),_0x109d('0x1c'),_0x109d('0x11'),'createdAt','scheduledAt',_0x109d('0x1d')];var _0x2dd191=_[_0x109d('0x1e')](_0x2316a7,_0xe5ec1b);BPromise[_0x109d('0x1f')]()[_0x109d('0x20')](cmContactRpc[_0x109d('0x21')]({'attributes':_0x2dd191,'where':_0xdf3944,'phone':_0x3ba1c6}))[_0x109d('0x20')](function(_0x4acb7b){_0x4cd784=_0x4acb7b;if(!_[_0x109d('0x22')](_0x4cd784)){if(_0x4cd784[_0x109d('0x23')]===0x1){_0x4c0d77=_0x4cd784[0x0];logger[_0x109d('0x9')](_0x109d('0x24'),_0x4ce0e3['uniqueid'],_0x387aba['id'],_0x4c0d77['id']);}else{logger[_0x109d('0x9')]('[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]',_0x4ce0e3['uniqueid'],_0x387aba['id'],_[_0x109d('0x15')](_0x4cd784,'id')['join'](','));}return;}else{logger[_0x109d('0x9')](_0x109d('0x25'),_0x4ce0e3[_0x109d('0x26')],_0x387aba['id']);var _0x32d335={'ListId':_0x32e705};var _0x94f8b6=_0x4288ea[_0x109d('0x27')]&&_0x4288ea['data4']!=='0'?_0x4288ea[_0x109d('0x27')]:_0x109d('0x28');if(_0x4823d3){logger[_0x109d('0x9')](_0x109d('0x29'),_0x4ce0e3[_0x109d('0x26')],_0x387aba['id']);_0x32d335[_0x94f8b6]=_[_0x109d('0xe')](_0x4ce0e3[_0x109d('0x16')])?_0x4ce0e3['calleridnum']:_0x4ce0e3['destcalleridnum'];if(_[_0x109d('0xe')](_0x4ce0e3[_0x109d('0x16')])){_0x32d335[_0x109d('0x19')]=_0x4ce0e3[_0x109d('0x2a')]&&_0x4ce0e3[_0x109d('0x2a')]!==_0x109d('0x2b')?_0x4ce0e3[_0x109d('0x2a')]:_0x109d('0x2c');}else{_0x32d335[_0x109d('0x19')]=_0x4ce0e3[_0x109d('0x2d')]&&_0x4ce0e3[_0x109d('0x2d')]!=='<unknown>'?_0x4ce0e3[_0x109d('0x2d')]:_0x109d('0x2c');}return BPromise['resolve']()[_0x109d('0x20')](cmContactRpc[_0x109d('0x2e')](_0x32d335))[_0x109d('0x20')](function(_0x576a2d){_0x4c0d77=_0x576a2d;_0x4cd784[_0x109d('0x2f')](_0x576a2d);if(_0x4c0d77){logger['info'](_0x109d('0x30'),_0x4ce0e3[_0x109d('0x26')],_0x387aba['id'],_0x4c0d77['id']);}return;});}else{logger[_0x109d('0x9')](_0x109d('0x31'),_0x4ce0e3[_0x109d('0x26')],_0x387aba['id']);_0x32d335[_0x94f8b6]=_[_0x109d('0xe')](_0x4ce0e3['routeId'])?_0x4ce0e3[_0x109d('0x18')]:_0x4ce0e3[_0x109d('0x17')];if(_['isNil'](_0x4ce0e3[_0x109d('0x16')])){_0x32d335[_0x109d('0x19')]=_0x4ce0e3[_0x109d('0x2a')]&&_0x4ce0e3['calleridname']!==_0x109d('0x2b')?_0x4ce0e3['calleridname']:_0x109d('0x2c');}else{_0x32d335[_0x109d('0x19')]=_0x4ce0e3['destcalleridname']&&_0x4ce0e3[_0x109d('0x2d')]!==_0x109d('0x2b')?_0x4ce0e3[_0x109d('0x2d')]:_0x109d('0x2c');}_0x4c0d77=_0x32d335;_0x4cd784[_0x109d('0x2f')](_0x32d335);return;}}})[_0x109d('0x20')](function(){if(_0x54c29b){emit(_0x4ce0e3[_0x109d('0x26')],_0x387aba,util['format'](_0x109d('0x32'),_0x54c29b['name']),util[_0x109d('0x33')]('trigger:%s',_0x4288ea[_0x109d('0x34')][_0x109d('0x35')]()),{'evt':_['merge'](_0x4ce0e3,{'autoCreate':_0x4823d3}),'contact':_0x4c0d77===undefined?{}:_0x4c0d77,'contacts':_0x4cd784[_0x109d('0x23')]===0x0?undefined:_0x4cd784});}});};
\ No newline at end of file
index 232800b..0f82385 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x633b=['custom:dialconnect','custom:newinteraction','custom:substatus','custom:incomingmessage','custom:outgoingmessage','custom:rejectmessage','custom:offlineMessage','prototype','emit','info','clone','motionChannel','undefined','voice','checkTriggers','interface','hasOwnProperty','status','variables','length','Actions','action','toLowerCase','contactmanager','motionbar','browser','data1','TemplateId','data2','html','render','uri','data3','isNil','data4','location','uriLocation','data5','800','windowHeight','data6','winapp','winArguments','format','user:%s','name','trigger:%s:%s','merge','jscripty','trigger:%s','exec','integration','accounts','queue','urlforward','buildUri','parse','query','search','replace','checkTrigger','channel','AllConditions','checkConditions','AnyConditions','some','field','ChatWebsiteId','value','upperFirst','AccountId','operator','interaction','message','event','membername','lastevent','routeId','mailSubstatus','null','substatus','offlineMessage','created','equals','exports','util','lodash','url','mustache','ioredis','./integration','./cmContact','./script','../../../config/environment','../../../config/logger','trigger','../ami','defaults','redis','socket.io-emitter','popup','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','vtigerAccounts','custom:agentcalled','syncCustomEvent','bind','custom:agentconnect','custom:agentringnoanswer','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialbegin','syncAgentDial'];(function(_0x134c79,_0x2136d3){var _0x2c2142=function(_0x537f61){while(--_0x537f61){_0x134c79['push'](_0x134c79['shift']());}};_0x2c2142(++_0x2136d3);}(_0x633b,0xd8));var _0xb633=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x633b[_0x20a584];return _0x4b41a8;};'use strict';var util=require(_0xb633('0x0'));var _=require(_0xb633('0x1'));var url=require(_0xb633('0x2'));var Mustache=require(_0xb633('0x3'));var Redis=require(_0xb633('0x4'));var urlforward=require('./urlforward');var integration=require(_0xb633('0x5'));var cmContact=require(_0xb633('0x6'));var script=require(_0xb633('0x7'));var config=require(_0xb633('0x8'));var logger=require(_0xb633('0x9'))(_0xb633('0xa'));var ami=require(_0xb633('0xb'));config['redis']=_[_0xb633('0xc')](config[_0xb633('0xd')],{'host':'localhost','port':0x18eb});var io=require(_0xb633('0xe'))(new Redis(config[_0xb633('0xd')]));var operators={'equals':function(_0x331680,_0x26c666){return _0x331680==_0x26c666;},'not_equals':function(_0x3d4b30,_0x380e56){return _0x3d4b30!=_0x380e56;}};var barAndWebActions=[_0xb633('0xf'),_0xb633('0x2'),'winapp'];function Trigger(_0x18e1b7){this[_0xb633('0x10')]=_0x18e1b7['triggers'];this[_0xb633('0x11')]=_0x18e1b7['agents'];this[_0xb633('0x12')]=_0x18e1b7[_0xb633('0x12')];this[_0xb633('0x13')]=_0x18e1b7['templates'];this[_0xb633('0x14')]=_0x18e1b7[_0xb633('0x14')];this[_0xb633('0x15')]=_0x18e1b7['zendeskAccounts'];this['freshdeskAccounts']=_0x18e1b7[_0xb633('0x16')];this[_0xb633('0x17')]=_0x18e1b7['salesforceAccounts'];this[_0xb633('0x18')]=_0x18e1b7[_0xb633('0x18')];this[_0xb633('0x19')]=_0x18e1b7[_0xb633('0x19')];this[_0xb633('0x1a')]=_0x18e1b7[_0xb633('0x1a')];this['vtigerAccounts']=_0x18e1b7['vtigerAccounts'];this[_0xb633('0x1b')]=_0x18e1b7[_0xb633('0x1b')];this['dynamics365Accounts']=_0x18e1b7[_0xb633('0x1c')];this['freshsalesAccounts']=_0x18e1b7[_0xb633('0x1d')];this['accounts']={'zendesk':this['zendeskAccounts'],'salesforce':this[_0xb633('0x17')],'freshdesk':this[_0xb633('0x16')],'sugarcrm':this[_0xb633('0x18')],'zoho':this[_0xb633('0x19')],'desk':this[_0xb633('0x1a')],'vtiger':this[_0xb633('0x1e')],'dynamics365':this['dynamics365Accounts'],'freshsales':this[_0xb633('0x1d')],'servicenow':this[_0xb633('0x1b')]};ami['on'](_0xb633('0x1f'),this[_0xb633('0x20')][_0xb633('0x21')](this));ami['on'](_0xb633('0x22'),this['syncCustomEvent'][_0xb633('0x21')](this));ami['on'](_0xb633('0x23'),this['syncCustomEvent']['bind'](this));ami['on'](_0xb633('0x24'),this['syncCustomEvent']['bind'](this));ami['on'](_0xb633('0x25'),this[_0xb633('0x20')][_0xb633('0x21')](this));ami['on'](_0xb633('0x26'),this[_0xb633('0x20')][_0xb633('0x21')](this));ami['on']('custom:agentbusy',this[_0xb633('0x20')][_0xb633('0x21')](this));ami['on'](_0xb633('0x27'),this[_0xb633('0x20')]['bind'](this));ami['on'](_0xb633('0x28'),this[_0xb633('0x20')][_0xb633('0x21')](this));ami['on'](_0xb633('0x29'),this[_0xb633('0x20')]['bind'](this));ami['on'](_0xb633('0x2a'),this[_0xb633('0x20')][_0xb633('0x21')](this));ami['on'](_0xb633('0x2b'),this[_0xb633('0x20')][_0xb633('0x21')](this));ami['on'](_0xb633('0x2c'),this[_0xb633('0x2d')][_0xb633('0x21')](this));ami['on'](_0xb633('0x2e'),this[_0xb633('0x2d')]['bind'](this));ami['on']('custom:dialend',this[_0xb633('0x2d')][_0xb633('0x21')](this));ami['on'](_0xb633('0x2f'),this[_0xb633('0x20')]['bind'](this));ami['on']('custom:closedinteraction',this[_0xb633('0x20')]['bind'](this));ami['on'](_0xb633('0x30'),this[_0xb633('0x20')]['bind'](this));ami['on'](_0xb633('0x31'),this[_0xb633('0x20')][_0xb633('0x21')](this));ami['on'](_0xb633('0x32'),this[_0xb633('0x20')][_0xb633('0x21')](this));ami['on']('custom:acceptmessage',this[_0xb633('0x20')][_0xb633('0x21')](this));ami['on'](_0xb633('0x33'),this[_0xb633('0x20')][_0xb633('0x21')](this));ami['on'](_0xb633('0x34'),this[_0xb633('0x20')][_0xb633('0x21')](this));}Trigger[_0xb633('0x35')][_0xb633('0x36')]=function(_0x2db16d,_0x7e9c7a,_0xa5fac8){logger[_0xb633('0x37')](_0x2db16d,_0x7e9c7a,JSON['stringify'](_0xa5fac8));io['to'](_0x2db16d)[_0xb633('0x36')](_0x7e9c7a,_0xa5fac8);};Trigger[_0xb633('0x35')][_0xb633('0x20')]=function(_0x53813f){var _0x119745=_[_0xb633('0x38')](_0x53813f);if(typeof _0x119745[_0xb633('0x39')]===_0xb633('0x3a')){_0x119745['motionChannel']=_0xb633('0x3b');}this[_0xb633('0x3c')](_0x119745);};Trigger[_0xb633('0x35')][_0xb633('0x2d')]=function(_0x3dd7ac){if(this[_0xb633('0x11')][_0x3dd7ac[_0xb633('0x3d')]]){this[_0xb633('0x20')](_0x3dd7ac);}};Trigger[_0xb633('0x35')][_0xb633('0x3c')]=function(_0x355f1f){var _0x166e9a;for(var _0x1e0ebb in this[_0xb633('0x10')]){if(this[_0xb633('0x10')][_0xb633('0x3e')](_0x1e0ebb)){if(this[_0xb633('0x10')][_0x1e0ebb][_0xb633('0x3f')]){_0x166e9a=this['checkTrigger'](this[_0xb633('0x10')][_0x1e0ebb],_0x355f1f);if(_0x166e9a){_['merge'](_0x355f1f,_0x355f1f[_0xb633('0x40')]);for(var _0x2c74c3=0x0,_0x382f52,_0x4ae2aa,_0xd51507;_0x2c74c3<this[_0xb633('0x10')][_0x1e0ebb]['Actions'][_0xb633('0x41')];_0x2c74c3+=0x1){_0x382f52=this[_0xb633('0x10')][_0x1e0ebb][_0xb633('0x42')][_0x2c74c3];if(this[_0xb633('0x11')][_0x355f1f[_0xb633('0x3d')]]){switch(_0x382f52[_0xb633('0x43')][_0xb633('0x44')]()){case _0xb633('0x45'):break;case _0xb633('0x46'):case _0xb633('0x47'):var _0x238e15={};switch(barAndWebActions[_0x382f52[_0xb633('0x48')]]){case _0xb633('0xf'):_0x238e15[_0xb633('0x49')]=_0x382f52[_0xb633('0x4a')];_0x238e15[_0xb633('0x4b')]=this['templates'][_0x382f52[_0xb633('0x4a')]]?Mustache[_0xb633('0x4c')](this[_0xb633('0x13')][_0x382f52[_0xb633('0x4a')]][_0xb633('0x4b')],_0x355f1f):'template\x20not\x20found';break;case'url':_0x238e15[_0xb633('0x4d')]=this['buildUri'](_0x382f52['data2'],_0x355f1f,_['isNil'](_0x382f52['data3'])?!![]:parseInt(_0x382f52[_0xb633('0x4e')],0xa));if(_[_0xb633('0x4f')](_0x382f52[_0xb633('0x50')])){_0x238e15[_0xb633('0x51')]='0';}else{_0x238e15[_0xb633('0x52')]=_0x382f52['data4'];_0x238e15['windowWidth']=_[_0xb633('0x4f')](_0x382f52[_0xb633('0x53')])?_0xb633('0x54'):_0x382f52[_0xb633('0x53')];_0x238e15[_0xb633('0x55')]=_[_0xb633('0x4f')](_0x382f52[_0xb633('0x56')])?'600':_0x382f52[_0xb633('0x56')];}break;case _0xb633('0x57'):_0x238e15['winApplication']=_0x382f52[_0xb633('0x4a')]?Mustache['render'](_0x382f52['data2'],_0x355f1f):'';_0x238e15[_0xb633('0x58')]=_0x382f52[_0xb633('0x4e')]?Mustache['render'](_0x382f52[_0xb633('0x4e')],_0x355f1f):'';break;}this[_0xb633('0x36')](util[_0xb633('0x59')](_0xb633('0x5a'),this[_0xb633('0x11')][_0x355f1f[_0xb633('0x3d')]][_0xb633('0x5b')]),util[_0xb633('0x59')](_0xb633('0x5c'),_0x382f52[_0xb633('0x43')]['toLowerCase'](),barAndWebActions[_0x382f52[_0xb633('0x48')]]),_[_0xb633('0x5d')](_0x238e15,_0x355f1f));break;case _0xb633('0x5e'):this['emit'](util['format'](_0xb633('0x5a'),this[_0xb633('0x11')][_0x355f1f['interface']][_0xb633('0x5b')]),util[_0xb633('0x59')](_0xb633('0x5f'),_0x382f52[_0xb633('0x43')][_0xb633('0x44')]()),_[_0xb633('0x5d')]({'ProjectId':parseInt(_0x382f52[_0xb633('0x48')],0xa)},_0x355f1f));break;default:this[_0xb633('0x36')](util[_0xb633('0x59')](_0xb633('0x5a'),this[_0xb633('0x11')][_0x355f1f[_0xb633('0x3d')]][_0xb633('0x5b')]),util[_0xb633('0x59')](_0xb633('0x5f'),_0x382f52[_0xb633('0x43')][_0xb633('0x44')]()),_[_0xb633('0x5d')]({},_0x382f52,_0x355f1f));}}switch(_0x382f52[_0xb633('0x43')][_0xb633('0x44')]()){case _0xb633('0x45'):cmContact[_0xb633('0x60')](this['agents'][_0x355f1f['interface']],this['triggers'][_0x1e0ebb],_0x382f52,_0x355f1f);break;case _0xb633('0x61'):integration['exec'](_0x382f52,_0x355f1f,this[_0xb633('0x62')],this[_0xb633('0x11')][_0x355f1f[_0xb633('0x3d')]],this['voiceQueues'][_0x355f1f[_0xb633('0x63')]],this['voiceExtensions'][_0x355f1f['routeId']]);break;case _0xb633('0x64'):urlforward[_0xb633('0x60')](_0x382f52,_0x355f1f);break;case'script':script[_0xb633('0x60')](_0x382f52,_0x355f1f);break;}}}}}}};Trigger[_0xb633('0x35')][_0xb633('0x65')]=function(_0x2eabde,_0x3a3c43,_0x3cd756){var _0xbd331e=url[_0xb633('0x66')](Mustache[_0xb633('0x4c')](_0x2eabde,_0x3a3c43),!![]);if(_0x3cd756){_[_0xb633('0x5d')](_0xbd331e[_0xb633('0x67')],_0x3a3c43);}delete _0xbd331e[_0xb633('0x68')];var _0x3483cd=url[_0xb633('0x59')](_0xbd331e);_0x3483cd=_0x3483cd[_0xb633('0x69')](/\/\?/g,'?');return _0x3483cd;};Trigger[_0xb633('0x35')][_0xb633('0x6a')]=function(_0x4606dd,_0x5bfe1b){var _0x538c72=!![];var _0x40de6b=!![];var _0x3ce837=![];if(_0x4606dd[_0xb633('0x6b')]===_0x5bfe1b[_0xb633('0x39')]){_0x3ce837=!![];}if(_0x4606dd['AllConditions'][_0xb633('0x41')]){_0x538c72=_['every'](_0x4606dd[_0xb633('0x6c')],this[_0xb633('0x6d')](_0x5bfe1b,_0x4606dd[_0xb633('0x6b')]));}if(_0x4606dd[_0xb633('0x6e')][_0xb633('0x41')]){_0x40de6b=_[_0xb633('0x6f')](_0x4606dd[_0xb633('0x6e')],this[_0xb633('0x6d')](_0x5bfe1b,_0x4606dd[_0xb633('0x6b')]));}return _0x3ce837&&_0x538c72&&_0x40de6b;};Trigger[_0xb633('0x35')]['checkConditions']=function(_0xe59514,_0x26fac8){return function(_0x57aaec){switch(_0x57aaec[_0xb633('0x70')]){case'account':if(_0xe59514[_0xb633('0x6b')]===_0x26fac8){if(_0x26fac8==='chat'){return _0xe59514[_0xb633('0x71')]?operators[_0x57aaec['operator']](Number(_0x57aaec[_0xb633('0x72')]),_0xe59514[_0xb633('0x71')]):![];}else{return _0xe59514[_[_0xb633('0x73')](_0x26fac8)+_0xb633('0x74')]?operators[_0x57aaec[_0xb633('0x75')]](Number(_0x57aaec[_0xb633('0x72')]),_0xe59514[_['upperFirst'](_0x26fac8)+_0xb633('0x74')]):![];}}break;case _0xb633('0x76'):case _0xb633('0x77'):if(_0xe59514[_0xb633('0x6b')]===_0x26fac8){return _0xe59514[_0xb633('0x78')]?operators[_0x57aaec[_0xb633('0x75')]](_0x57aaec[_0xb633('0x72')],_0xe59514[_0xb633('0x78')]):![];}break;case _0xb633('0x63'):return _0xe59514[_0xb633('0x63')]?operators[_0x57aaec['operator']](_0x57aaec[_0xb633('0x72')],_0xe59514[_0xb633('0x63')]):![];case'agent':return _0xe59514['membername']?operators[_0x57aaec['operator']](_0x57aaec[_0xb633('0x72')],_0xe59514[_0xb633('0x79')]):![];case _0xb633('0x7a'):return _0xe59514['lastevent']?operators[_0x57aaec[_0xb633('0x75')]](_0x57aaec[_0xb633('0x72')],_0xe59514[_0xb633('0x7a')]):![];case _0xb633('0x7b'):return _0xe59514['routeId']?operators[_0x57aaec['operator']](_0x57aaec[_0xb633('0x72')],_0xe59514['routeId']):![];case _0xb633('0x7c'):if(_0x57aaec[_0xb633('0x72')]===_0xb633('0x7d'))_0x57aaec[_0xb633('0x72')]=null;return typeof _0xe59514[_0xb633('0x7e')]!==_0xb633('0x3a')?operators[_0x57aaec['operator']](_0x57aaec['value'],_0xe59514[_0xb633('0x7e')]):![];case _0xb633('0x7f'):if(_0xe59514[_0xb633('0x6b')]===_0x26fac8){return _0x57aaec[_0xb633('0x72')]===_0xb633('0x80')&&_0x57aaec[_0xb633('0x75')]===_0xb633('0x81')?!![]:![];}break;}return![];};};module[_0xb633('0x82')]=Trigger;
\ No newline at end of file
+var _0x43d6=['agents','voiceQueues','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','custom:agentcalled','syncCustomEvent','custom:agentconnect','bind','custom:agentringnoanswer','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentcongestion','custom:amd','custom:queuecallerabandon','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:substatus','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','custom:offlineMessage','prototype','stringify','clone','motionChannel','undefined','voice','checkTriggers','interface','status','checkTrigger','variables','Actions','toLowerCase','contactmanager','motionbar','browser','TemplateId','data2','templates','render','html','buildUri','isNil','data3','data4','uriLocation','windowWidth','windowHeight','data6','winapp','winApplication','user:%s','name','format','trigger:%s:%s','merge','trigger:%s','action','data1','emit','exec','integration','queue','routeId','urlforward','script','parse','query','search','replace','channel','AllConditions','every','checkConditions','AnyConditions','some','field','chat','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','event','membername','lastevent','mailSubstatus','null','substatus','offlineMessage','created','equals','util','url','./urlforward','./integration','./cmContact','./script','../../../config/logger','redis','defaults','localhost','socket.io-emitter','popup','triggers'];(function(_0x11e7cc,_0xbadb79){var _0x4df042=function(_0x17bfd4){while(--_0x17bfd4){_0x11e7cc['push'](_0x11e7cc['shift']());}};_0x4df042(++_0xbadb79);}(_0x43d6,0xe9));var _0x643d=function(_0x46b7b4,_0x105b27){_0x46b7b4=_0x46b7b4-0x0;var _0x113592=_0x43d6[_0x46b7b4];return _0x113592;};'use strict';var util=require(_0x643d('0x0'));var _=require('lodash');var url=require(_0x643d('0x1'));var Mustache=require('mustache');var Redis=require('ioredis');var urlforward=require(_0x643d('0x2'));var integration=require(_0x643d('0x3'));var cmContact=require(_0x643d('0x4'));var script=require(_0x643d('0x5'));var config=require('../../../config/environment');var logger=require(_0x643d('0x6'))('trigger');var ami=require('../ami');config[_0x643d('0x7')]=_[_0x643d('0x8')](config['redis'],{'host':_0x643d('0x9'),'port':0x18eb});var io=require(_0x643d('0xa'))(new Redis(config[_0x643d('0x7')]));var operators={'equals':function(_0x307995,_0x9744f0){return _0x307995==_0x9744f0;},'not_equals':function(_0x7c62f0,_0x40353a){return _0x7c62f0!=_0x40353a;}};var barAndWebActions=[_0x643d('0xb'),_0x643d('0x1'),'winapp'];function Trigger(_0x55ec1b){this['triggers']=_0x55ec1b[_0x643d('0xc')];this[_0x643d('0xd')]=_0x55ec1b[_0x643d('0xd')];this[_0x643d('0xe')]=_0x55ec1b['voiceQueues'];this['templates']=_0x55ec1b['templates'];this[_0x643d('0xf')]=_0x55ec1b[_0x643d('0xf')];this['zendeskAccounts']=_0x55ec1b[_0x643d('0x10')];this[_0x643d('0x11')]=_0x55ec1b[_0x643d('0x11')];this['salesforceAccounts']=_0x55ec1b[_0x643d('0x12')];this[_0x643d('0x13')]=_0x55ec1b[_0x643d('0x13')];this[_0x643d('0x14')]=_0x55ec1b[_0x643d('0x14')];this[_0x643d('0x15')]=_0x55ec1b['deskAccounts'];this[_0x643d('0x16')]=_0x55ec1b[_0x643d('0x16')];this[_0x643d('0x17')]=_0x55ec1b[_0x643d('0x17')];this[_0x643d('0x18')]=_0x55ec1b['dynamics365Accounts'];this[_0x643d('0x19')]=_0x55ec1b[_0x643d('0x19')];this[_0x643d('0x1a')]={'zendesk':this[_0x643d('0x10')],'salesforce':this[_0x643d('0x12')],'freshdesk':this[_0x643d('0x11')],'sugarcrm':this[_0x643d('0x13')],'zoho':this['zohoAccounts'],'desk':this['deskAccounts'],'vtiger':this[_0x643d('0x16')],'dynamics365':this[_0x643d('0x18')],'freshsales':this[_0x643d('0x19')],'servicenow':this[_0x643d('0x17')]};ami['on'](_0x643d('0x1b'),this[_0x643d('0x1c')]['bind'](this));ami['on'](_0x643d('0x1d'),this[_0x643d('0x1c')][_0x643d('0x1e')](this));ami['on'](_0x643d('0x1f'),this['syncCustomEvent']['bind'](this));ami['on'](_0x643d('0x20'),this['syncCustomEvent'][_0x643d('0x1e')](this));ami['on'](_0x643d('0x21'),this['syncCustomEvent']['bind'](this));ami['on'](_0x643d('0x22'),this['syncCustomEvent'][_0x643d('0x1e')](this));ami['on']('custom:agentbusy',this[_0x643d('0x1c')][_0x643d('0x1e')](this));ami['on'](_0x643d('0x23'),this[_0x643d('0x1c')][_0x643d('0x1e')](this));ami['on']('custom:agentreject',this[_0x643d('0x1c')][_0x643d('0x1e')](this));ami['on'](_0x643d('0x24'),this[_0x643d('0x1c')]['bind'](this));ami['on'](_0x643d('0x25'),this['syncCustomEvent'][_0x643d('0x1e')](this));ami['on']('custom:timeout',this['syncCustomEvent']['bind'](this));ami['on'](_0x643d('0x26'),this[_0x643d('0x27')][_0x643d('0x1e')](this));ami['on'](_0x643d('0x28'),this[_0x643d('0x27')][_0x643d('0x1e')](this));ami['on'](_0x643d('0x29'),this[_0x643d('0x27')][_0x643d('0x1e')](this));ami['on'](_0x643d('0x2a'),this['syncCustomEvent'][_0x643d('0x1e')](this));ami['on'](_0x643d('0x2b'),this[_0x643d('0x1c')][_0x643d('0x1e')](this));ami['on'](_0x643d('0x2c'),this[_0x643d('0x1c')]['bind'](this));ami['on'](_0x643d('0x2d'),this[_0x643d('0x1c')][_0x643d('0x1e')](this));ami['on'](_0x643d('0x2e'),this[_0x643d('0x1c')][_0x643d('0x1e')](this));ami['on'](_0x643d('0x2f'),this[_0x643d('0x1c')][_0x643d('0x1e')](this));ami['on'](_0x643d('0x30'),this[_0x643d('0x1c')][_0x643d('0x1e')](this));ami['on'](_0x643d('0x31'),this['syncCustomEvent'][_0x643d('0x1e')](this));}Trigger[_0x643d('0x32')]['emit']=function(_0x3d9e58,_0x5032ff,_0x4c314c){logger['info'](_0x3d9e58,_0x5032ff,JSON[_0x643d('0x33')](_0x4c314c));io['to'](_0x3d9e58)['emit'](_0x5032ff,_0x4c314c);};Trigger[_0x643d('0x32')]['syncCustomEvent']=function(_0x237d4c){var _0x28c06f=_[_0x643d('0x34')](_0x237d4c);if(typeof _0x28c06f[_0x643d('0x35')]===_0x643d('0x36')){_0x28c06f[_0x643d('0x35')]=_0x643d('0x37');}this[_0x643d('0x38')](_0x28c06f);};Trigger[_0x643d('0x32')][_0x643d('0x27')]=function(_0x5f3fda){if(this[_0x643d('0xd')][_0x5f3fda[_0x643d('0x39')]]){this[_0x643d('0x1c')](_0x5f3fda);}};Trigger['prototype'][_0x643d('0x38')]=function(_0x567f50){var _0x4f4121;for(var _0x6eaa5 in this['triggers']){if(this[_0x643d('0xc')]['hasOwnProperty'](_0x6eaa5)){if(this[_0x643d('0xc')][_0x6eaa5][_0x643d('0x3a')]){_0x4f4121=this[_0x643d('0x3b')](this[_0x643d('0xc')][_0x6eaa5],_0x567f50);if(_0x4f4121){_['merge'](_0x567f50,_0x567f50[_0x643d('0x3c')]);for(var _0x3114ed=0x0,_0x16ea5e,_0x177f59,_0x3bcb86;_0x3114ed<this[_0x643d('0xc')][_0x6eaa5][_0x643d('0x3d')]['length'];_0x3114ed+=0x1){_0x16ea5e=this[_0x643d('0xc')][_0x6eaa5][_0x643d('0x3d')][_0x3114ed];if(this['agents'][_0x567f50[_0x643d('0x39')]]){switch(_0x16ea5e['action'][_0x643d('0x3e')]()){case _0x643d('0x3f'):break;case _0x643d('0x40'):case _0x643d('0x41'):var _0x4afead={};switch(barAndWebActions[_0x16ea5e['data1']]){case _0x643d('0xb'):_0x4afead[_0x643d('0x42')]=_0x16ea5e[_0x643d('0x43')];_0x4afead['html']=this[_0x643d('0x44')][_0x16ea5e[_0x643d('0x43')]]?Mustache[_0x643d('0x45')](this[_0x643d('0x44')][_0x16ea5e[_0x643d('0x43')]][_0x643d('0x46')],_0x567f50):'template\x20not\x20found';break;case _0x643d('0x1'):_0x4afead['uri']=this[_0x643d('0x47')](_0x16ea5e[_0x643d('0x43')],_0x567f50,_[_0x643d('0x48')](_0x16ea5e['data3'])?!![]:parseInt(_0x16ea5e[_0x643d('0x49')],0xa));if(_[_0x643d('0x48')](_0x16ea5e[_0x643d('0x4a')])){_0x4afead['location']='0';}else{_0x4afead[_0x643d('0x4b')]=_0x16ea5e[_0x643d('0x4a')];_0x4afead[_0x643d('0x4c')]=_[_0x643d('0x48')](_0x16ea5e['data5'])?'800':_0x16ea5e['data5'];_0x4afead[_0x643d('0x4d')]=_[_0x643d('0x48')](_0x16ea5e['data6'])?'600':_0x16ea5e[_0x643d('0x4e')];}break;case _0x643d('0x4f'):_0x4afead[_0x643d('0x50')]=_0x16ea5e[_0x643d('0x43')]?Mustache[_0x643d('0x45')](_0x16ea5e[_0x643d('0x43')],_0x567f50):'';_0x4afead['winArguments']=_0x16ea5e[_0x643d('0x49')]?Mustache[_0x643d('0x45')](_0x16ea5e[_0x643d('0x49')],_0x567f50):'';break;}this['emit'](util['format'](_0x643d('0x51'),this['agents'][_0x567f50[_0x643d('0x39')]][_0x643d('0x52')]),util[_0x643d('0x53')](_0x643d('0x54'),_0x16ea5e['action'][_0x643d('0x3e')](),barAndWebActions[_0x16ea5e['data1']]),_[_0x643d('0x55')](_0x4afead,_0x567f50));break;case'jscripty':this['emit'](util[_0x643d('0x53')]('user:%s',this[_0x643d('0xd')][_0x567f50[_0x643d('0x39')]][_0x643d('0x52')]),util[_0x643d('0x53')](_0x643d('0x56'),_0x16ea5e[_0x643d('0x57')][_0x643d('0x3e')]()),_[_0x643d('0x55')]({'ProjectId':parseInt(_0x16ea5e[_0x643d('0x58')],0xa)},_0x567f50));break;default:this[_0x643d('0x59')](util[_0x643d('0x53')](_0x643d('0x51'),this[_0x643d('0xd')][_0x567f50[_0x643d('0x39')]][_0x643d('0x52')]),util['format']('trigger:%s',_0x16ea5e[_0x643d('0x57')][_0x643d('0x3e')]()),_[_0x643d('0x55')]({},_0x16ea5e,_0x567f50));}}switch(_0x16ea5e['action']['toLowerCase']()){case _0x643d('0x3f'):cmContact[_0x643d('0x5a')](this['agents'][_0x567f50[_0x643d('0x39')]],this[_0x643d('0xc')][_0x6eaa5],_0x16ea5e,_0x567f50);break;case _0x643d('0x5b'):integration[_0x643d('0x5a')](_0x16ea5e,_0x567f50,this[_0x643d('0x1a')],this['agents'][_0x567f50[_0x643d('0x39')]],this['voiceQueues'][_0x567f50[_0x643d('0x5c')]],this[_0x643d('0xf')][_0x567f50[_0x643d('0x5d')]]);break;case _0x643d('0x5e'):urlforward[_0x643d('0x5a')](_0x16ea5e,_0x567f50);break;case _0x643d('0x5f'):script[_0x643d('0x5a')](_0x16ea5e,_0x567f50);break;}}}}}}};Trigger['prototype'][_0x643d('0x47')]=function(_0x8495dc,_0xa0a10b,_0x14305b){var _0x4cb6be=url[_0x643d('0x60')](Mustache['render'](_0x8495dc,_0xa0a10b),!![]);if(_0x14305b){_[_0x643d('0x55')](_0x4cb6be[_0x643d('0x61')],_0xa0a10b);}delete _0x4cb6be[_0x643d('0x62')];var _0x25f818=url['format'](_0x4cb6be);_0x25f818=_0x25f818[_0x643d('0x63')](/\/\?/g,'?');return _0x25f818;};Trigger[_0x643d('0x32')]['checkTrigger']=function(_0x532307,_0x45e33f){var _0x434fb3=!![];var _0x2c0de3=!![];var _0x58b756=![];if(_0x532307[_0x643d('0x64')]===_0x45e33f[_0x643d('0x35')]){_0x58b756=!![];}if(_0x532307[_0x643d('0x65')]['length']){_0x434fb3=_[_0x643d('0x66')](_0x532307[_0x643d('0x65')],this[_0x643d('0x67')](_0x45e33f,_0x532307[_0x643d('0x64')]));}if(_0x532307[_0x643d('0x68')]['length']){_0x2c0de3=_[_0x643d('0x69')](_0x532307[_0x643d('0x68')],this['checkConditions'](_0x45e33f,_0x532307[_0x643d('0x64')]));}return _0x58b756&&_0x434fb3&&_0x2c0de3;};Trigger['prototype'][_0x643d('0x67')]=function(_0x44b231,_0x1b08c0){return function(_0x23ab1e){switch(_0x23ab1e[_0x643d('0x6a')]){case'account':if(_0x44b231[_0x643d('0x64')]===_0x1b08c0){if(_0x1b08c0===_0x643d('0x6b')){return _0x44b231[_0x643d('0x6c')]?operators[_0x23ab1e[_0x643d('0x6d')]](Number(_0x23ab1e[_0x643d('0x6e')]),_0x44b231[_0x643d('0x6c')]):![];}else{return _0x44b231[_[_0x643d('0x6f')](_0x1b08c0)+_0x643d('0x70')]?operators[_0x23ab1e['operator']](Number(_0x23ab1e['value']),_0x44b231[_['upperFirst'](_0x1b08c0)+_0x643d('0x70')]):![];}}break;case _0x643d('0x71'):case'message':if(_0x44b231[_0x643d('0x64')]===_0x1b08c0){return _0x44b231[_0x643d('0x72')]?operators[_0x23ab1e['operator']](_0x23ab1e[_0x643d('0x6e')],_0x44b231[_0x643d('0x72')]):![];}break;case _0x643d('0x5c'):return _0x44b231[_0x643d('0x5c')]?operators[_0x23ab1e[_0x643d('0x6d')]](_0x23ab1e[_0x643d('0x6e')],_0x44b231[_0x643d('0x5c')]):![];case'agent':return _0x44b231['membername']?operators[_0x23ab1e['operator']](_0x23ab1e['value'],_0x44b231[_0x643d('0x73')]):![];case _0x643d('0x74'):return _0x44b231[_0x643d('0x74')]?operators[_0x23ab1e['operator']](_0x23ab1e['value'],_0x44b231['lastevent']):![];case _0x643d('0x5d'):return _0x44b231[_0x643d('0x5d')]?operators[_0x23ab1e[_0x643d('0x6d')]](_0x23ab1e[_0x643d('0x6e')],_0x44b231['routeId']):![];case _0x643d('0x75'):if(_0x23ab1e['value']===_0x643d('0x76'))_0x23ab1e[_0x643d('0x6e')]=null;return typeof _0x44b231[_0x643d('0x77')]!==_0x643d('0x36')?operators[_0x23ab1e[_0x643d('0x6d')]](_0x23ab1e[_0x643d('0x6e')],_0x44b231[_0x643d('0x77')]):![];case _0x643d('0x78'):if(_0x44b231['channel']===_0x1b08c0){return _0x23ab1e[_0x643d('0x6e')]===_0x643d('0x79')&&_0x23ab1e[_0x643d('0x6d')]===_0x643d('0x7a')?!![]:![];}break;}return![];};};module['exports']=Trigger;
\ No newline at end of file
index a1f586f..dd7d980 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['Motion','CTI','concat','Tags','/api/v2/users/%d','Descriptions','%s/customers/%d/cases','serverUrl','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','Desk\x20account\x20type\x20not\x20recognized','error','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','integrationTab','newTab','%s/agent/tickets/%s','catch','unmanaged','monitor_format','lastevent','The\x20Ticket\x20ID\x20is:','toUpperCase','lodash','request-promise','md5','util','./util','../../../../config/environment','../../../../config/logger','desk','defaults','redis','localhost','socket.io-emitter','emit','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','remoteUri','then','total_entries','find','_embedded','entries','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','[HTTP]','stringify','GET','password','authType','token','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','work','map','includes','string','picklist','type','nameField','customField','content','idField','custom_fields','variable','variableName','customVariable','name','Variable','toLowerCase','priority','Creating\x20new\x20ticket...','merge','getString','Subjects','phone','new','xCALLY'];(function(_0x40a33c,_0xd33d5d){var _0x125ba7=function(_0x9383ec){while(--_0x9383ec){_0x40a33c['push'](_0x40a33c['shift']());}};_0x125ba7(++_0xd33d5d);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0x7995('0x0'));var rp=require(_0x7995('0x1'));var md5=require(_0x7995('0x2'));var util=require(_0x7995('0x3'));var Redis=require('ioredis');var intUtil=require(_0x7995('0x4'));var config=require(_0x7995('0x5'));var logger=require(_0x7995('0x6'))(_0x7995('0x7'));config['redis']=_[_0x7995('0x8')](config[_0x7995('0x9')],{'host':_0x7995('0xa'),'port':0x18eb});var io=require(_0x7995('0xb'))(new Redis(config[_0x7995('0x9')]));function emit(_0x326741,_0x4996ca,_0x465276){io['to'](_0x326741)[_0x7995('0xc')](_0x4996ca,_0x465276);}var headers={'Content-Type':'application/json','Accept':_0x7995('0xd')};function getUser(_0x3116fb,_0x18c8a3){if(intUtil[_0x7995('0xe')](_0x18c8a3)===!![]){logger[_0x7995('0xf')](_0x7995('0x10'),_0x18c8a3);return request({'uri':util[_0x7995('0x11')]('%s/users',_0x3116fb[_0x7995('0x12')])})[_0x7995('0x13')](function(_0x581f22){if(_0x581f22[_0x7995('0x14')]){return _[_0x7995('0x15')](_0x581f22[_0x7995('0x16')][_0x7995('0x17')],{'email':_0x18c8a3});}})[_0x7995('0x13')](function(_0x23999f){if(_0x23999f){logger[_0x7995('0xf')]('Agent\x20found!');return _0x23999f;}else{logger['info'](_0x7995('0x18'));return request({'uri':util[_0x7995('0x11')](_0x7995('0x19'),_0x3116fb[_0x7995('0x12')])});}});}else{logger[_0x7995('0xf')](_0x7995('0x1a'));return request({'uri':util[_0x7995('0x11')](_0x7995('0x19'),_0x3116fb['remoteUri'])});}}function request(_0x2eeacc){logger['debug'](_0x7995('0x1b'),JSON[_0x7995('0x1c')](_0x2eeacc));return rp(_[_0x7995('0x8')](_0x2eeacc,{'method':_0x7995('0x1d'),'headers':headers,'json':!![]}));}function getAuth(_0x1e1415){var _0x37a7d4;if(_0x1e1415['authType']==='basic'){_0x37a7d4=util[_0x7995('0x11')]('%s:%s',_0x1e1415['username'],_0x1e1415[_0x7995('0x1e')]);}else if(_0x1e1415[_0x7995('0x1f')]==='token'){_0x37a7d4=util[_0x7995('0x11')]('%s/token:%s',_0x1e1415['username'],_0x1e1415[_0x7995('0x20')]);}return util[_0x7995('0x11')](_0x7995('0x21'),new Buffer(_0x37a7d4)[_0x7995('0x22')](_0x7995('0x23')));}function getEndUser(_0x1c278a,_0x5d40ae,_0x32a09a){logger[_0x7995('0xf')](_0x7995('0x24'),_0x32a09a);return request({'uri':util[_0x7995('0x11')](_0x7995('0x25'),_0x1c278a[_0x7995('0x12')]),'qs':{'phone':_0x32a09a}})[_0x7995('0x13')](function(_0x472195){if(_0x472195['total_entries']){logger[_0x7995('0xf')](_0x7995('0x26'));return _0x472195[_0x7995('0x16')][_0x7995('0x17')][0x0];}else{logger[_0x7995('0xf')](_0x7995('0x27'));return request({'uri':util['format'](_0x7995('0x28'),_0x1c278a['remoteUri']),'method':_0x7995('0x29'),'body':{'first_name':_0x5d40ae,'title':_0x5d40ae,'phone_numbers':[{'type':_0x7995('0x2a'),'value':_0x32a09a}]}});}});}function getTags(_0xf16cc2,_0x132a42){var _0x11c1eb=[];if(_0xf16cc2&&_0xf16cc2['length']>0x0){_0x11c1eb=_[_0x7995('0x2b')](_0xf16cc2,_0x132a42);}return _0x11c1eb;}function getCustomFields(_0x514445,_0x456a28){var _0x3250e0=[];var _0x4253e5={'custom_fields':{}};if(_0x514445['length']>0x0){_['forEach'](_0x514445,function(_0x48e573){if(_[_0x7995('0x2c')]([_0x7995('0x2d'),_0x7995('0x2e')],_0x48e573[_0x7995('0x2f')])&&_0x48e573[_0x7995('0x30')]&&!_0x48e573[_0x7995('0x31')]){_0x4253e5[_0x48e573['nameField']['toLowerCase']()]=_0x48e573[_0x7995('0x32')]['toString']();}else if(_[_0x7995('0x2c')]([_0x7995('0x2d'),_0x7995('0x2e')],_0x48e573[_0x7995('0x2f')])&&_0x48e573[_0x7995('0x33')]&&_0x48e573['customField']){_0x4253e5[_0x7995('0x34')][_0x48e573[_0x7995('0x33')]]=_0x48e573['content']['toString']();}else if(_0x48e573['type']===_0x7995('0x35')&&_0x48e573[_0x7995('0x36')]&&_0x48e573['idField']&&_0x48e573[_0x7995('0x31')]){_0x456a28[_0x48e573['variableName']]&&(_0x4253e5[_0x7995('0x34')][_0x48e573[_0x7995('0x33')]]=_0x456a28[_0x48e573[_0x7995('0x36')]]['toString']());}else if(_0x48e573['type']===_0x7995('0x37')&&_0x48e573['Variable']&&_0x48e573['Variable'][_0x7995('0x38')]&&_0x48e573[_0x7995('0x33')]&&_0x48e573['customField']){_0x456a28[_0x48e573[_0x7995('0x39')][_0x7995('0x38')][_0x7995('0x3a')]()]&&(_0x4253e5[_0x7995('0x34')][_0x48e573[_0x7995('0x33')]]=_0x456a28[_0x48e573['Variable'][_0x7995('0x38')][_0x7995('0x3a')]()][_0x7995('0x22')]());}});}if(_0x4253e5[_0x7995('0x3b')]){_0x4253e5['priority']=Number(_0x4253e5[_0x7995('0x3b')]);}return _0x4253e5;}function getTicket(_0x235df7,_0x3eb04f,_0xe5ea43,_0x1f5bee,_0x1035dc){logger['info'](_0x7995('0x3c'));var _0x3be298=_[_0x7995('0x3d')]({'subject':intUtil[_0x7995('0x3e')](_0x1f5bee[_0x7995('0x3f')],_0x1035dc,'\x20'),'type':_0x7995('0x40'),'status':_0x7995('0x41'),'labels':[_0x7995('0x42'),_0x7995('0x43'),_0x7995('0x44')][_0x7995('0x45')](getTags(_0x1f5bee[_0x7995('0x46')],_0x7995('0x38'))),'description':intUtil['getString'](_0x1f5bee['Descriptions'],_0x1035dc,'\x0a'),'_links':{'assigned_user':{'href':util[_0x7995('0x11')](_0x7995('0x47'),_0x3eb04f['id']),'class':'user'}},'message':{'direction':'in','body':intUtil['getString'](_0x1f5bee[_0x7995('0x48')],_0x1035dc,'\x0a')}},getCustomFields(_0x1f5bee['Fields'],_0x1035dc));return request({'uri':util['format'](_0x7995('0x49'),_0x235df7[_0x7995('0x12')],_0xe5ea43['id']),'method':_0x7995('0x29'),'body':_0x3be298});}exports['queue']=function(_0x46ac4f,_0x5e85b9,_0x3993b5,_0x5a8881,_0x493066,_0x39c5b8){var _0x403f54,_0xc04e5;_0x39c5b8[_0x7995('0x12')]=intUtil['stripTrailingSlash'](_0x39c5b8[_0x7995('0x12')]);_0x39c5b8[_0x7995('0x4a')]=intUtil[_0x7995('0x4b')](_0x39c5b8[_0x7995('0x4a')]);if(_0x493066&&_0x493066['monitor_format']){logger['info'](_0x7995('0x4c'),'Recording\x20is\x20enabled!');_0x5e85b9[_0x7995('0x4d')]=util['format'](_0x7995('0x4e'),_0x39c5b8['serverUrl'],_0x5e85b9[_0x7995('0x4f')],md5(_0x5e85b9[_0x7995('0x4f')]));}else{_0x5e85b9['recordingURL']='';}headers[_0x7995('0x50')]=getAuth(_0x39c5b8);return getUser(_0x39c5b8,_0x5a8881[_0x7995('0x51')])[_0x7995('0x13')](function(_0xb70a51){_0x403f54=_0xb70a51;logger['info'](_0x7995('0x52'),_0x403f54['id']);return getEndUser(_0x39c5b8,_0x5e85b9[_0x7995('0x53')],_0x5e85b9[_0x7995('0x54')]);})['then'](function(_0xe228a5){_0xc04e5=_0xe228a5;logger[_0x7995('0xf')](_0x7995('0x55'),_0xc04e5['id']);return getTicket(_0x39c5b8,_0x403f54,_0xc04e5,_0x3993b5,_0x5e85b9);})[_0x7995('0x13')](function(_0x255313){if(_0x255313){logger['info'](_0x7995('0x56'));logger[_0x7995('0xf')]('The\x20Ticket\x20ID\x20is:',_0x255313['id']);switch(_0x39c5b8[_0x7995('0x2f')]){case'integrationTab':logger[_0x7995('0xf')](_0x7995('0x4c'),_0x7995('0x57'));emit(util[_0x7995('0x11')](_0x7995('0x58'),_0x5a8881[_0x7995('0x38')]),_0x7995('0x59'),{'recordId':_0x255313['id']});break;case'newTab':logger[_0x7995('0xf')](_0x7995('0x4c'),_0x7995('0x5a'));emit(util['format'](_0x7995('0x58'),_0x5a8881[_0x7995('0x38')]),_0x7995('0x5b'),{'uri':util['format']('https://xcally.desk.com/web/agent/case/%d',_0x255313['id'])});break;default:logger['error'](_0x7995('0x4c'),_0x7995('0x5c'));}}})['catch'](function(_0x1cd85){console[_0x7995('0x5d')](_0x1cd85);logger[_0x7995('0x5d')](_0x7995('0x4c'),JSON[_0x7995('0x1c')](_0x1cd85));});};exports['outbound']=function(_0x29ee32,_0x4ab09f,_0x14fe7f,_0x33c801,_0x206d2a,_0x50c7b5,_0x5e1f34){var _0x54e2b1,_0x563f8e;_0x50c7b5[_0x7995('0x12')]=intUtil[_0x7995('0x4b')](_0x50c7b5[_0x7995('0x12')]);_0x50c7b5[_0x7995('0x4a')]=intUtil[_0x7995('0x4b')](_0x50c7b5[_0x7995('0x4a')]);if(_0x5e1f34&&_0x5e1f34[_0x7995('0x5e')]&&_0x5e1f34[_0x7995('0x5e')]!==_0x7995('0x5f')){logger[_0x7995('0xf')](_0x7995('0x60'),_0x7995('0x61'));_0x4ab09f[_0x7995('0x4d')]=util[_0x7995('0x11')](_0x7995('0x4e'),_0x50c7b5[_0x7995('0x4a')],_0x4ab09f[_0x7995('0x4f')],md5(_0x4ab09f[_0x7995('0x4f')]));}headers[_0x7995('0x50')]=getAuth(_0x50c7b5);return getUser(_0x50c7b5,_0x33c801['email'])[_0x7995('0x13')](function(_0x630737){_0x54e2b1=_0x630737;logger[_0x7995('0xf')](_0x7995('0x52'),_0x54e2b1['id']);return getEndUser(_0x50c7b5,_0x4ab09f['destcalleridname'],_0x4ab09f['destcalleridnum']);})[_0x7995('0x13')](function(_0x197b52){_0x563f8e=_0x197b52;logger[_0x7995('0xf')](_0x7995('0x55'),_0x563f8e['id']);return getTicket(_0x50c7b5,_0x54e2b1,_0x563f8e,_0x14fe7f,_0x4ab09f);})['then'](function(_0x13cd7b){if(_0x13cd7b){logger[_0x7995('0xf')](_0x7995('0x56'));logger[_0x7995('0xf')]('The\x20Ticket\x20ID\x20is:',_0x13cd7b['id']);switch(_0x50c7b5['type']){case _0x7995('0x62'):logger[_0x7995('0xf')](_0x7995('0x4c'),_0x7995('0x57'));emit(util[_0x7995('0x11')](_0x7995('0x58'),_0x33c801[_0x7995('0x38')]),_0x7995('0x59'),{'recordId':_0x13cd7b['id']});break;case _0x7995('0x63'):logger['info'](_0x7995('0x4c'),_0x7995('0x5a'));emit(util[_0x7995('0x11')](_0x7995('0x58'),_0x33c801['name']),'trigger:browser:url',{'uri':util[_0x7995('0x11')](_0x7995('0x64'),_0x50c7b5['remoteUri'],_0x13cd7b['id'])});break;default:logger[_0x7995('0x5d')](_0x7995('0x60'),_0x7995('0x5c'));}}})[_0x7995('0x65')](function(_0x32cb04){logger['error'](_0x7995('0x60'),JSON['stringify'](_0x32cb04));});};exports[_0x7995('0x66')]=function(_0xe31dcb,_0x1722e2,_0x25b534,_0x4388c1,_0xeb8920,_0x2b3c1d){var _0x44372a,_0x10f012;_0x2b3c1d[_0x7995('0x12')]=intUtil[_0x7995('0x4b')](_0x2b3c1d[_0x7995('0x12')]);_0x2b3c1d['serverUrl']=intUtil[_0x7995('0x4b')](_0x2b3c1d[_0x7995('0x4a')]);if(_0xeb8920&&_0xeb8920[_0x7995('0x67')]){logger[_0x7995('0xf')]('['+_0x1722e2[_0x7995('0x68')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x1722e2[_0x7995('0x4d')]=util[_0x7995('0x11')](_0x7995('0x4e'),_0x2b3c1d[_0x7995('0x4a')],_0x1722e2['uniqueid'],md5(_0x1722e2[_0x7995('0x4f')]));}else{_0x1722e2['recordingURL']='';}headers['Authorization']=getAuth(_0x2b3c1d);return getUser(_0x2b3c1d)[_0x7995('0x13')](function(_0x36d27d){_0x44372a=_0x36d27d;logger[_0x7995('0xf')](_0x7995('0x52'),_0x44372a['id']);return getEndUser(_0x2b3c1d,_0x1722e2[_0x7995('0x53')],_0x1722e2[_0x7995('0x54')]);})[_0x7995('0x13')](function(_0x13dc73){_0x10f012=_0x13dc73;logger[_0x7995('0xf')](_0x7995('0x55'),_0x10f012['id']);return getTicket(_0x2b3c1d,_0x44372a,_0x10f012,_0x25b534,_0x1722e2);})['then'](function(_0x2dc1f7){if(_0x2dc1f7){logger[_0x7995('0xf')](_0x7995('0x56'));logger['info'](_0x7995('0x69'),_0x2dc1f7['id']);}})[_0x7995('0x65')](function(_0x705f0){logger[_0x7995('0x5d')]('['+_0x1722e2[_0x7995('0x68')][_0x7995('0x6a')]()+']',JSON[_0x7995('0x1c')](_0x705f0));});};
\ No newline at end of file
+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(_0xa673d3,_0x48ba34){var _0x29d811=function(_0xa81ba4){while(--_0xa81ba4){_0xa673d3['push'](_0xa673d3['shift']());}};_0x29d811(++_0x48ba34);}(_0x7217,0x19e));var _0x7721=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0x7217[_0x110c3d];return _0x226d67;};'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 e8b714e..b7aacc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d12=['lastIndexOf','enduserId','toLowerCase','outbound','telephone1','contacts?$select=','&$filter=','replace','%2b','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','forEach','includes','nameField','customField','idField','indexOf','ticketType','incidents','assign','Subjects','Descriptions','Fields','phonecall','callDirection','queue','phonecalls','getString','/contacts(','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','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','openNewTab','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','Error\x20running\x20Dynamics365\x20integration','lodash','util','./util','ioredis','../../../../config/logger','../../../../config/environment','defaults','redis','localhost','socket.io-emitter','remoteUri','CloudProvider','data7','tenantId','data2','resolve','POST','clientId','username','password','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','then','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','isNil','validateEmail','email','userEmail','length','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','systemuserid','destcalleridnum','calleridnum','/systemusers(','headers','substring'];(function(_0x3410e6,_0x4fbb35){var _0x3b748d=function(_0x397ea5){while(--_0x397ea5){_0x3410e6['push'](_0x3410e6['shift']());}};_0x3b748d(++_0x4fbb35);}(_0x8d12,0xaa));var _0x28d1=function(_0x18a436,_0x1dbe06){_0x18a436=_0x18a436-0x0;var _0x5c2cf8=_0x8d12[_0x18a436];return _0x5c2cf8;};'use strict';var _=require(_0x28d1('0x0'));var rp=require('request-promise');var util=require(_0x28d1('0x1'));var intUtil=require(_0x28d1('0x2'));var md5=require('md5');var Redis=require(_0x28d1('0x3'));var logger=require(_0x28d1('0x4'))('dynamics365');var config=require(_0x28d1('0x5'));config['redis']=_[_0x28d1('0x6')](config[_0x28d1('0x7')],{'host':_0x28d1('0x8'),'port':0x18eb});var io=require(_0x28d1('0x9'))(new Redis(config['redis']));function getAuthToken(_0x2f1366,_0x12c27e,_0x48c84b){if(_0x2f1366['modernAuthentication']){_0x2f1366[_0x28d1('0xa')]=_0x2f1366[_0x28d1('0xb')][_0x28d1('0xc')];_0x2f1366[_0x28d1('0xd')]=_0x2f1366[_0x28d1('0xb')][_0x28d1('0xe')];return Promise[_0x28d1('0xf')](_0x2f1366['CloudProvider']['data5']);}var _0x5ed554={'method':_0x28d1('0x10'),'uri':_0x12c27e,'form':{'client_id':_0x2f1366[_0x28d1('0x11')],'resource':_0x2f1366[_0x28d1('0xa')],'username':_0x2f1366[_0x28d1('0x12')],'password':_0x2f1366[_0x28d1('0x13')],'grant_type':_0x28d1('0x13'),'client_secret':_0x2f1366['clientSecret']},'json':!![]};return rp(_0x5ed554)['then'](function(_0x18c513){return _0x18c513[_0x28d1('0x14')];})[_0x28d1('0x15')](function(_0x11e6d4){logger[_0x28d1('0x16')]('['+[_0x48c84b[_0x28d1('0x17')]()]+_0x28d1('0x18'));return _0x11e6d4[_0x28d1('0x19')];});}function getUser(_0x174d61,_0x4c2733,_0x1d25e7,_0x2051bf,_0x59196d,_0x38049d){return new Promise(function(_0x3f4671,_0x2d8d9a){return getAuthToken(_0x4c2733,_0x2051bf,_0x38049d)[_0x28d1('0x1a')](function(_0x42e6e0){var _0x27f0c8={'method':_0x28d1('0x1b'),'uri':_0x59196d+_0x28d1('0x1c'),'headers':{'Authorization':_0x28d1('0x1d')+_0x42e6e0,'OData-Version':_0x28d1('0x1e')},'json':!![]};return rp(_0x27f0c8);})[_0x28d1('0x1a')](function(_0x5f157f){var _0x36b4f8=_0x5f157f['value'];var _0x2e01d4=![];var _0x48e1ef=null;if(!_[_0x28d1('0x1f')](_0x1d25e7)){if(intUtil[_0x28d1('0x20')](_0x1d25e7[_0x28d1('0x21')])){_0x174d61[_0x28d1('0x22')]=_0x1d25e7[_0x28d1('0x21')];for(_0x48e1ef=0x0;_0x48e1ef<_0x36b4f8[_0x28d1('0x23')];_0x48e1ef++){if(_0x36b4f8[_0x48e1ef][_0x28d1('0x24')]===_0x1d25e7[_0x28d1('0x21')]&&!_0x36b4f8[_0x48e1ef][_0x28d1('0x25')]){_0x2e01d4=!![];logger[_0x28d1('0x26')]('['+[_0x38049d[_0x28d1('0x17')]()]+_0x28d1('0x27')+_0x36b4f8[_0x48e1ef]['systemuserid']+'!');_0x174d61[_0x28d1('0x28')]=_0x36b4f8[_0x48e1ef]['systemuserid'];}}}}if(!_0x2e01d4){logger[_0x28d1('0x26')]('['+[_0x38049d['toUpperCase']()]+_0x28d1('0x29'));_0x174d61[_0x28d1('0x22')]=_0x4c2733[_0x28d1('0x12')];for(_0x48e1ef=0x0;_0x48e1ef<_0x36b4f8[_0x28d1('0x23')];_0x48e1ef++){if(_0x36b4f8[_0x48e1ef][_0x28d1('0x24')]===_0x4c2733[_0x28d1('0x12')]){_0x174d61['userId']=_0x36b4f8[_0x48e1ef][_0x28d1('0x2a')];}}}_0x3f4671(_0x174d61);})['catch'](function(_0xf3417b){_0x2d8d9a(_0xf3417b['message']);});});}function createEndUser(_0x2ad8af,_0x12109f,_0x26f2ed,_0x140516,_0x519790,_0x1e6c8c,_0x5c6c13){return new Promise(function(_0xa21706,_0x858af5){return getAuthToken(_0x12109f,_0x26f2ed,_0x1e6c8c)[_0x28d1('0x1a')](function(_0x3ff751){var _0x343a94=_0x1e6c8c['toLowerCase']()==='outbound'?_0x519790[_0x28d1('0x2b')]:_0x519790[_0x28d1('0x2c')];var _0x2bcd3d={'method':_0x28d1('0x10'),'uri':_0x140516+'contacts','body':{'fullname':_0x343a94,'firstname':_0x343a94,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x28d1('0x2d')+_0x2ad8af[_0x28d1('0x28')]+')'},'headers':{'Authorization':'Bearer\x20'+_0x3ff751,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};_0x2bcd3d['body'][_0x5c6c13]=_0x343a94;return rp(_0x2bcd3d);})[_0x28d1('0x1a')](function(_0x3e5a32){var _0x1f3995=_0x3e5a32[_0x28d1('0x2e')]['odata-entityid'];var _0x343fab=_0x1f3995[_0x28d1('0x2f')](_0x1f3995['lastIndexOf']('(')+0x1,_0x1f3995[_0x28d1('0x30')](')'));_0x2ad8af[_0x28d1('0x31')]=_0x343fab;_0xa21706(_0x2ad8af);})[_0x28d1('0x15')](function(_0x26af53){_0x858af5(_0x26af53[_0x28d1('0x19')]);});});}function getEndUser(_0x14fa34,_0x33fc47,_0x427ebb,_0xad1407,_0x38c1c7,_0x276af4,_0x1b041c,_0xb592ac){var _0x4f3694=_0x276af4[_0x28d1('0x32')]()===_0x28d1('0x33')?_0x38c1c7[_0x28d1('0x2b')]:_0x38c1c7['calleridnum'];return getAuthToken(_0x33fc47,_0x427ebb,_0x276af4)['then'](function(_0x4227c2){_0xb592ac=_0xb592ac?_0xb592ac:_0x28d1('0x34');var _0x708041={'method':_0x28d1('0x1b'),'uri':_0xad1407+_0x28d1('0x35')+_0xb592ac+_0x28d1('0x36')+_0xb592ac+'\x20eq\x20\x27'+_0x4f3694[_0x28d1('0x37')]('+',_0x28d1('0x38'))+'\x27','headers':{'Authorization':_0x28d1('0x1d')+_0x4227c2,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x708041);})['then'](function(_0x17187d){var _0x344b5a=![];if(!_0x17187d)return _0x344b5a;var _0x35aa53=_0x17187d['value'];for(var _0x2cbd5a=0x0;_0x2cbd5a<_0x35aa53[_0x28d1('0x23')];_0x2cbd5a++){if(_0x35aa53[_0x2cbd5a][_0xb592ac]===_0x4f3694){_0x344b5a=!![];_0x14fa34[_0x28d1('0x31')]=_0x35aa53[_0x2cbd5a]['contactid'];}}return _0x344b5a;})[_0x28d1('0x1a')](function(_0x58316d){if(_0x58316d)return _0x14fa34;if(_0x1b041c===_0x28d1('0x39')){logger['info']('['+[_0x276af4[_0x28d1('0x17')]()]+_0x28d1('0x3a'));return _0x14fa34;}return createEndUser(_0x14fa34,_0x33fc47,_0x427ebb,_0xad1407,_0x38c1c7,_0x276af4,_0xb592ac)[_0x28d1('0x1a')](function(_0x465e0b){logger['info']('['+[_0x276af4['toUpperCase']()]+_0x28d1('0x3b'),_0x465e0b[_0x28d1('0x31')]);return _0x465e0b;});});}function getCustomFields(_0x3136aa,_0x97cad7,_0x1b738f){var _0x36d3e1={};if(_0x3136aa[_0x28d1('0x23')]>0x0){_[_0x28d1('0x3c')](_0x3136aa,function(_0x5f3822){if(_[_0x28d1('0x3d')](['string','picklist'],_0x5f3822['type'])&&_0x5f3822[_0x28d1('0x3e')]&&!_0x5f3822[_0x28d1('0x3f')]){var _0xd96d13=_0x5f3822[_0x28d1('0x40')][_0x28d1('0x32')]();var _0xf7965=_0xd96d13[_0x28d1('0x2f')](0x0,_0xd96d13[_0x28d1('0x41')]('_'));var _0x396f3c=_0xd96d13[_0x28d1('0x2f')](_0xd96d13[_0x28d1('0x41')]('_')+0x1);if(_0xf7965===_0x1b738f){_0x36d3e1[_0x396f3c]=_0x5f3822['content'];}}});}return _0x36d3e1;}function getTicket(_0x4dab53,_0x27a1b0,_0x832ec4,_0x14d568,_0x3f28b1,_0xdce635,_0x42aceb){return new Promise(function(_0x3c93e7,_0x576bf3){var _0x3050c1;return getAuthToken(_0x27a1b0,_0x832ec4,_0x42aceb)[_0x28d1('0x1a')](function(_0xf6c97){if(_0xdce635[_0x28d1('0x42')]==='incident'){_0x3050c1={'method':_0x28d1('0x10'),'uri':_0x14d568+_0x28d1('0x43'),'body':Object[_0x28d1('0x44')]({},{'title':intUtil['getString'](_0xdce635[_0x28d1('0x45')],_0x3f28b1,'\x20'),'description':intUtil['getString'](_0xdce635[_0x28d1('0x46')],_0x3f28b1,'\x0a'),'customerid_contact@odata.bind':_0x4dab53[_0x28d1('0x31')]?'/contacts('+_0x4dab53[_0x28d1('0x31')]+')':undefined,'ownerid@odata.bind':_0x28d1('0x2d')+_0x4dab53[_0x28d1('0x28')]+')','caseorigincode':'1'},getCustomFields(_0xdce635[_0x28d1('0x47')],_0x3f28b1,_0xdce635[_0x28d1('0x42')])),'headers':{'Authorization':_0x28d1('0x1d')+_0xf6c97,'OData-Version':_0x28d1('0x1e')},'json':!![],'resolveWithFullResponse':!![]};}if(_0xdce635[_0x28d1('0x42')]===_0x28d1('0x48')){var _0x927227=_0x4dab53[_0x28d1('0x31')]?[{'partyid_systemuser@odata.bind':_0x28d1('0x2d')+_0x4dab53[_0x28d1('0x28')]+')','participationtypemask':_0x4dab53[_0x28d1('0x49')]===_0x28d1('0x4a')?0x2:0x1},{'partyid_contact@odata.bind':'/contacts('+_0x4dab53[_0x28d1('0x31')]+')','participationtypemask':_0x4dab53['callDirection']===_0x28d1('0x4a')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':'/systemusers('+_0x4dab53[_0x28d1('0x28')]+')','participationtypemask':_0x4dab53[_0x28d1('0x49')]===_0x28d1('0x4a')?0x2:0x1}];_0x3050c1={'method':'POST','uri':_0x14d568+_0x28d1('0x4b'),'body':Object[_0x28d1('0x44')]({},{'subject':intUtil[_0x28d1('0x4c')](_0xdce635['Subjects'],_0x3f28b1,'\x20'),'phonenumber':String(_0x3f28b1[_0x28d1('0x2c')]),'description':intUtil[_0x28d1('0x4c')](_0xdce635['Descriptions'],_0x3f28b1,'\x0a'),'regardingobjectid_contact@odata.bind':_0x4dab53[_0x28d1('0x31')]?_0x28d1('0x4d')+_0x4dab53[_0x28d1('0x31')]+')':undefined,'ownerid@odata.bind':_0x28d1('0x2d')+_0x4dab53[_0x28d1('0x28')]+')','directioncode':_0x4dab53['callDirection']===_0x28d1('0x4a')?![]:!![],'phonecall_activity_parties':_0x927227},getCustomFields(_0xdce635[_0x28d1('0x47')],_0x3f28b1,_0xdce635[_0x28d1('0x42')])),'headers':{'Authorization':_0x28d1('0x1d')+_0xf6c97,'OData-Version':_0x28d1('0x1e')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x3050c1);})['then'](function(_0x177539){var _0x2b7412=_0x177539[_0x28d1('0x2e')]['odata-entityid'];var _0x343c81=_0x2b7412[_0x28d1('0x2f')](_0x2b7412[_0x28d1('0x30')]('(')+0x1,_0x2b7412[_0x28d1('0x30')](')'));_0x4dab53[_0x28d1('0x4e')]=_0x343c81;_0x3c93e7(_0x4dab53);})[_0x28d1('0x15')](function(_0x1b87ff){_0x576bf3(_0x1b87ff[_0x28d1('0x19')]);});});}function emit(_0x2d5a84,_0x46353d,_0x2db2b2,_0x1aae84){var _0x4ee188={'uri':util[_0x28d1('0x4f')](_0x28d1('0x50'),_0x2d5a84,_0x2db2b2,_0x1aae84)};io['to'](util[_0x28d1('0x4f')](_0x28d1('0x51'),_0x46353d))[_0x28d1('0x52')](_0x28d1('0x53'),_0x4ee188);}exports['cs']=function(_0x4c0d67,_0x1a1487,_0xf8d0c5,_0x2362a8,_0xfa7dc,_0x1af766,_0x2caa7e,_0x1b6103){var _0x270fdb={};_0x1af766[_0x28d1('0xa')]=_0x1af766[_0x28d1('0x54')]?intUtil[_0x28d1('0x55')](_0x1af766[_0x28d1('0xb')]['data7']):intUtil[_0x28d1('0x55')](_0x1af766['remoteUri']);_0x1af766['serverUrl']=intUtil[_0x28d1('0x55')](_0x1af766[_0x28d1('0x56')]);_0x270fdb[_0x28d1('0x49')]=_0x1b6103===_0x28d1('0x4a')||_0x1b6103===_0x28d1('0x57')?'queue':_0x28d1('0x33');var _0x3597d9=_0x1af766[_0x28d1('0x54')]?util['format'](_0x28d1('0x58'),_0x1af766[_0x28d1('0xb')]['data7']):util[_0x28d1('0x4f')](_0x28d1('0x58'),_0x1af766[_0x28d1('0xa')]);var _0x3e5666=util[_0x28d1('0x4f')](_0x28d1('0x59'),_0x1af766[_0x28d1('0xd')]);var _0x2d1711=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1af766[_0x28d1('0x56')],_0x1a1487[_0x28d1('0x5a')],md5(_0x1a1487[_0x28d1('0x5a')]));if(_0xfa7dc&&_0xfa7dc[_0x28d1('0x5b')]){logger[_0x28d1('0x26')](_0x28d1('0x5c'),_0x28d1('0x5d'));_0x1a1487[_0x28d1('0x5e')]=_0x2d1711;}else if(_0x2caa7e&&_0x2caa7e['recordingFormat']&&_0x2caa7e[_0x28d1('0x5f')]!==_0x28d1('0x60')){logger[_0x28d1('0x26')](_0x28d1('0x61'),_0x28d1('0x5d'));_0x1a1487['recordingURL']=_0x2d1711;}else{_0x1a1487[_0x28d1('0x5e')]='';}return getUser(_0x270fdb,_0x1af766,_0x2362a8,_0x3e5666,_0x3597d9,_0x1b6103)['then'](function(_0x1cbcd4){logger[_0x28d1('0x26')]('['+_0x1b6103['toUpperCase']()+_0x28d1('0x62'),_0x1cbcd4[_0x28d1('0x28')]);logger[_0x28d1('0x26')]('['+_0x1b6103[_0x28d1('0x17')]()+_0x28d1('0x63'),_0x1cbcd4[_0x28d1('0x22')]);return getEndUser(_0x1cbcd4,_0x1af766,_0x3e5666,_0x3597d9,_0x1a1487,_0x1b6103,_0xf8d0c5['moduleCreate'],_0xf8d0c5['additionalSearchContact']);})[_0x28d1('0x1a')](function(_0x9b19ad){logger['info']('['+_0x1b6103[_0x28d1('0x17')]()+_0x28d1('0x64'),_0x9b19ad[_0x28d1('0x31')]);logger[_0x28d1('0x26')]('['+_0x1b6103['toUpperCase']()+_0x28d1('0x65'),_0x1a1487[_0x28d1('0x2c')]);return getTicket(_0x9b19ad,_0x1af766,_0x3e5666,_0x3597d9,_0x1a1487,_0xf8d0c5,_0x1b6103);})[_0x28d1('0x1a')](function(_0x3003a4){logger[_0x28d1('0x26')](util[_0x28d1('0x4f')]('['+_0x1b6103[_0x28d1('0x17')]()+_0x28d1('0x66'),_0xf8d0c5[_0x28d1('0x42')],_0x3003a4[_0x28d1('0x4e')]));logger[_0x28d1('0x26')](util['format']('['+_0x1b6103['toUpperCase']()+_0x28d1('0x67'),_0x1b6103));if(_0x1b6103!==_0x28d1('0x57')&&_0xf8d0c5[_0x28d1('0x68')]){logger['info']('['+_0x1b6103['toUpperCase']()+']',_0x28d1('0x69'));emit(_0x1af766[_0x28d1('0xa')],_0x2362a8[_0x28d1('0x6a')],_0xf8d0c5['ticketType'],_0x3003a4[_0x28d1('0x4e')]);}})[_0x28d1('0x15')](function(_0x4b786e){logger[_0x28d1('0x16')]('['+_0x1b6103['toUpperCase']()+_0x28d1('0x6b'),_0x4b786e[_0x28d1('0x19')]);console[_0x28d1('0x16')](_0x28d1('0x6c'),_0x4b786e);});};
\ No newline at end of file
+var _0x7cfc=['./util','md5','../../../../config/logger','dynamics365','../../../../config/environment','redis','localhost','socket.io-emitter','modernAuthentication','remoteUri','data7','data2','resolve','data5','POST','clientId','password','clientSecret','then','access_token','catch','error','toUpperCase','message','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','validateEmail','email','length','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userEmail','username','internalemailaddress','userId','toLowerCase','outbound','destcalleridnum','calleridnum','contacts','body','headers','odata-entityid','substring','lastIndexOf','enduserId','telephone1','contacts?$select=','&$filter=','\x20eq\x20\x27','replace','contactid',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing','forEach','includes','string','picklist','type','nameField','idField','ticketType','incident','incidents','assign','getString','Subjects','/systemusers(','Fields','phonecall','callDirection','queue','phonecalls','Descriptions','ticketId','format','trigger:browser:url','stripTrailingSlash','CloudProvider','serverUrl','%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]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','lodash','request-promise','util'];(function(_0x25fef3,_0x2238b0){var _0x5d9ea1=function(_0x1b469e){while(--_0x1b469e){_0x25fef3['push'](_0x25fef3['shift']());}};_0x5d9ea1(++_0x2238b0);}(_0x7cfc,0x132));var _0xc7cf=function(_0x227cd4,_0x39228a){_0x227cd4=_0x227cd4-0x0;var _0x1f195f=_0x7cfc[_0x227cd4];return _0x1f195f;};'use strict';var _=require(_0xc7cf('0x0'));var rp=require(_0xc7cf('0x1'));var util=require(_0xc7cf('0x2'));var intUtil=require(_0xc7cf('0x3'));var md5=require(_0xc7cf('0x4'));var Redis=require('ioredis');var logger=require(_0xc7cf('0x5'))(_0xc7cf('0x6'));var config=require(_0xc7cf('0x7'));config[_0xc7cf('0x8')]=_['defaults'](config[_0xc7cf('0x8')],{'host':_0xc7cf('0x9'),'port':0x18eb});var io=require(_0xc7cf('0xa'))(new Redis(config[_0xc7cf('0x8')]));function getAuthToken(_0x13d773,_0x1870b9,_0xc1fd5f){if(_0x13d773[_0xc7cf('0xb')]){_0x13d773[_0xc7cf('0xc')]=_0x13d773['CloudProvider'][_0xc7cf('0xd')];_0x13d773['tenantId']=_0x13d773['CloudProvider'][_0xc7cf('0xe')];return Promise[_0xc7cf('0xf')](_0x13d773['CloudProvider'][_0xc7cf('0x10')]);}var _0x235863={'method':_0xc7cf('0x11'),'uri':_0x1870b9,'form':{'client_id':_0x13d773[_0xc7cf('0x12')],'resource':_0x13d773[_0xc7cf('0xc')],'username':_0x13d773['username'],'password':_0x13d773[_0xc7cf('0x13')],'grant_type':_0xc7cf('0x13'),'client_secret':_0x13d773[_0xc7cf('0x14')]},'json':!![]};return rp(_0x235863)[_0xc7cf('0x15')](function(_0x59fa07){return _0x59fa07[_0xc7cf('0x16')];})[_0xc7cf('0x17')](function(_0x373bf0){logger[_0xc7cf('0x18')]('['+[_0xc1fd5f[_0xc7cf('0x19')]()]+']\x20Wrong\x20credentials!');return _0x373bf0[_0xc7cf('0x1a')];});}function getUser(_0x46f72b,_0x296570,_0xcb1774,_0x288a64,_0x57ea25,_0x47908d){return new Promise(function(_0x221e18,_0x5216ec){return getAuthToken(_0x296570,_0x288a64,_0x47908d)['then'](function(_0x3450b2){var _0x176df9={'method':'GET','uri':_0x57ea25+_0xc7cf('0x1b'),'headers':{'Authorization':_0xc7cf('0x1c')+_0x3450b2,'OData-Version':_0xc7cf('0x1d')},'json':!![]};return rp(_0x176df9);})[_0xc7cf('0x15')](function(_0x5f1d8d){var _0x255659=_0x5f1d8d[_0xc7cf('0x1e')];var _0x551f68=![];var _0x2ba331=null;if(!_[_0xc7cf('0x1f')](_0xcb1774)){if(intUtil[_0xc7cf('0x20')](_0xcb1774[_0xc7cf('0x21')])){_0x46f72b['userEmail']=_0xcb1774[_0xc7cf('0x21')];for(_0x2ba331=0x0;_0x2ba331<_0x255659[_0xc7cf('0x22')];_0x2ba331++){if(_0x255659[_0x2ba331]['internalemailaddress']===_0xcb1774['email']&&!_0x255659[_0x2ba331][_0xc7cf('0x23')]){_0x551f68=!![];logger[_0xc7cf('0x24')]('['+[_0x47908d[_0xc7cf('0x19')]()]+_0xc7cf('0x25')+_0x255659[_0x2ba331][_0xc7cf('0x26')]+'!');_0x46f72b['userId']=_0x255659[_0x2ba331]['systemuserid'];}}}}if(!_0x551f68){logger[_0xc7cf('0x24')]('['+[_0x47908d[_0xc7cf('0x19')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x46f72b[_0xc7cf('0x27')]=_0x296570[_0xc7cf('0x28')];for(_0x2ba331=0x0;_0x2ba331<_0x255659[_0xc7cf('0x22')];_0x2ba331++){if(_0x255659[_0x2ba331][_0xc7cf('0x29')]===_0x296570[_0xc7cf('0x28')]){_0x46f72b[_0xc7cf('0x2a')]=_0x255659[_0x2ba331][_0xc7cf('0x26')];}}}_0x221e18(_0x46f72b);})[_0xc7cf('0x17')](function(_0xecd003){_0x5216ec(_0xecd003[_0xc7cf('0x1a')]);});});}function createEndUser(_0x259b62,_0x418ee1,_0x35be92,_0x4f5242,_0x55f771,_0x332fcf,_0x572524){return new Promise(function(_0x18c879,_0x2db1c2){return getAuthToken(_0x418ee1,_0x35be92,_0x332fcf)['then'](function(_0x5ace70){var _0xdb6951=_0x332fcf[_0xc7cf('0x2b')]()===_0xc7cf('0x2c')?_0x55f771[_0xc7cf('0x2d')]:_0x55f771[_0xc7cf('0x2e')];var _0x56f4c8={'method':_0xc7cf('0x11'),'uri':_0x4f5242+_0xc7cf('0x2f'),'body':{'fullname':_0xdb6951,'firstname':_0xdb6951,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0x259b62['userId']+')'},'headers':{'Authorization':_0xc7cf('0x1c')+_0x5ace70,'OData-Version':_0xc7cf('0x1d')},'json':!![],'resolveWithFullResponse':!![]};_0x56f4c8[_0xc7cf('0x30')][_0x572524]=_0xdb6951;return rp(_0x56f4c8);})[_0xc7cf('0x15')](function(_0x3e44ca){var _0x44bb2d=_0x3e44ca[_0xc7cf('0x31')][_0xc7cf('0x32')];var _0x34447e=_0x44bb2d[_0xc7cf('0x33')](_0x44bb2d['lastIndexOf']('(')+0x1,_0x44bb2d[_0xc7cf('0x34')](')'));_0x259b62[_0xc7cf('0x35')]=_0x34447e;_0x18c879(_0x259b62);})[_0xc7cf('0x17')](function(_0x1dffc5){_0x2db1c2(_0x1dffc5[_0xc7cf('0x1a')]);});});}function getEndUser(_0x58947e,_0x327d73,_0x19f55b,_0x3e8cc8,_0x5d53b4,_0x3650aa,_0x2b13e6,_0x2fc9f7){var _0x4436fb=_0x3650aa[_0xc7cf('0x2b')]()==='outbound'?_0x5d53b4['destcalleridnum']:_0x5d53b4[_0xc7cf('0x2e')];return getAuthToken(_0x327d73,_0x19f55b,_0x3650aa)[_0xc7cf('0x15')](function(_0x481a1d){_0x2fc9f7=_0x2fc9f7?_0x2fc9f7:_0xc7cf('0x36');var _0x413a26={'method':'GET','uri':_0x3e8cc8+_0xc7cf('0x37')+_0x2fc9f7+_0xc7cf('0x38')+_0x2fc9f7+_0xc7cf('0x39')+_0x4436fb[_0xc7cf('0x3a')]('+','%2b')+'\x27','headers':{'Authorization':'Bearer\x20'+_0x481a1d,'If-None-Match':null,'OData-Version':_0xc7cf('0x1d')},'json':!![]};return rp(_0x413a26);})['then'](function(_0x4a70ab){var _0x22e82e=![];if(!_0x4a70ab)return _0x22e82e;var _0x1ba914=_0x4a70ab[_0xc7cf('0x1e')];for(var _0x3e79b3=0x0;_0x3e79b3<_0x1ba914[_0xc7cf('0x22')];_0x3e79b3++){if(_0x1ba914[_0x3e79b3][_0x2fc9f7]===_0x4436fb){_0x22e82e=!![];_0x58947e[_0xc7cf('0x35')]=_0x1ba914[_0x3e79b3][_0xc7cf('0x3b')];}}return _0x22e82e;})['then'](function(_0x10e9cc){if(_0x10e9cc)return _0x58947e;if(_0x2b13e6==='nothing'){logger[_0xc7cf('0x24')]('['+[_0x3650aa['toUpperCase']()]+_0xc7cf('0x3c'));return _0x58947e;}return createEndUser(_0x58947e,_0x327d73,_0x19f55b,_0x3e8cc8,_0x5d53b4,_0x3650aa,_0x2fc9f7)[_0xc7cf('0x15')](function(_0x51884a){logger[_0xc7cf('0x24')]('['+[_0x3650aa[_0xc7cf('0x19')]()]+']\x20Enduser\x20created!',_0x51884a['enduserId']);return _0x51884a;});});}function getCustomFields(_0x4c6705,_0x526729,_0x129a7c){var _0x4f646={};if(_0x4c6705[_0xc7cf('0x22')]>0x0){_[_0xc7cf('0x3d')](_0x4c6705,function(_0x1c9ceb){if(_[_0xc7cf('0x3e')]([_0xc7cf('0x3f'),_0xc7cf('0x40')],_0x1c9ceb[_0xc7cf('0x41')])&&_0x1c9ceb[_0xc7cf('0x42')]&&!_0x1c9ceb['customField']){var _0x113bd0=_0x1c9ceb[_0xc7cf('0x43')][_0xc7cf('0x2b')]();var _0x219f05=_0x113bd0[_0xc7cf('0x33')](0x0,_0x113bd0['indexOf']('_'));var _0x19f6cd=_0x113bd0['substring'](_0x113bd0['indexOf']('_')+0x1);if(_0x219f05===_0x129a7c){_0x4f646[_0x19f6cd]=_0x1c9ceb['content'];}}});}return _0x4f646;}function getTicket(_0x4f303b,_0xe0ea95,_0x1324d6,_0x1e4af1,_0x2e184f,_0x417643,_0x2eb30d){return new Promise(function(_0x2e5e36,_0x58baee){var _0x461a01;return getAuthToken(_0xe0ea95,_0x1324d6,_0x2eb30d)[_0xc7cf('0x15')](function(_0x266f5a){if(_0x417643[_0xc7cf('0x44')]===_0xc7cf('0x45')){_0x461a01={'method':_0xc7cf('0x11'),'uri':_0x1e4af1+_0xc7cf('0x46'),'body':Object[_0xc7cf('0x47')]({},{'title':intUtil[_0xc7cf('0x48')](_0x417643[_0xc7cf('0x49')],_0x2e184f,'\x20'),'description':intUtil[_0xc7cf('0x48')](_0x417643['Descriptions'],_0x2e184f,'\x0a'),'customerid_contact@odata.bind':_0x4f303b[_0xc7cf('0x35')]?'/contacts('+_0x4f303b['enduserId']+')':undefined,'ownerid@odata.bind':_0xc7cf('0x4a')+_0x4f303b[_0xc7cf('0x2a')]+')','caseorigincode':'1'},getCustomFields(_0x417643[_0xc7cf('0x4b')],_0x2e184f,_0x417643['ticketType'])),'headers':{'Authorization':'Bearer\x20'+_0x266f5a,'OData-Version':_0xc7cf('0x1d')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x417643[_0xc7cf('0x44')]===_0xc7cf('0x4c')){var _0x3886da=_0x4f303b[_0xc7cf('0x35')]?[{'partyid_systemuser@odata.bind':'/systemusers('+_0x4f303b[_0xc7cf('0x2a')]+')','participationtypemask':_0x4f303b[_0xc7cf('0x4d')]==='queue'?0x2:0x1},{'partyid_contact@odata.bind':'/contacts('+_0x4f303b[_0xc7cf('0x35')]+')','participationtypemask':_0x4f303b[_0xc7cf('0x4d')]===_0xc7cf('0x4e')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0xc7cf('0x4a')+_0x4f303b[_0xc7cf('0x2a')]+')','participationtypemask':_0x4f303b[_0xc7cf('0x4d')]==='queue'?0x2:0x1}];_0x461a01={'method':_0xc7cf('0x11'),'uri':_0x1e4af1+_0xc7cf('0x4f'),'body':Object[_0xc7cf('0x47')]({},{'subject':intUtil[_0xc7cf('0x48')](_0x417643[_0xc7cf('0x49')],_0x2e184f,'\x20'),'phonenumber':String(_0x2e184f[_0xc7cf('0x2e')]),'description':intUtil[_0xc7cf('0x48')](_0x417643[_0xc7cf('0x50')],_0x2e184f,'\x0a'),'regardingobjectid_contact@odata.bind':_0x4f303b[_0xc7cf('0x35')]?'/contacts('+_0x4f303b[_0xc7cf('0x35')]+')':undefined,'ownerid@odata.bind':_0xc7cf('0x4a')+_0x4f303b[_0xc7cf('0x2a')]+')','directioncode':_0x4f303b[_0xc7cf('0x4d')]===_0xc7cf('0x4e')?![]:!![],'phonecall_activity_parties':_0x3886da},getCustomFields(_0x417643[_0xc7cf('0x4b')],_0x2e184f,_0x417643[_0xc7cf('0x44')])),'headers':{'Authorization':_0xc7cf('0x1c')+_0x266f5a,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x461a01);})['then'](function(_0x5ca070){var _0x58f1f1=_0x5ca070[_0xc7cf('0x31')][_0xc7cf('0x32')];var _0x579c0e=_0x58f1f1[_0xc7cf('0x33')](_0x58f1f1[_0xc7cf('0x34')]('(')+0x1,_0x58f1f1[_0xc7cf('0x34')](')'));_0x4f303b[_0xc7cf('0x51')]=_0x579c0e;_0x2e5e36(_0x4f303b);})[_0xc7cf('0x17')](function(_0x20e887){_0x58baee(_0x20e887[_0xc7cf('0x1a')]);});});}function emit(_0xf5214a,_0x3be2e5,_0x1296d7,_0x3d2142){var _0x1e5b05={'uri':util['format']('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0xf5214a,_0x1296d7,_0x3d2142)};io['to'](util[_0xc7cf('0x52')]('user:%s',_0x3be2e5))['emit'](_0xc7cf('0x53'),_0x1e5b05);}exports['cs']=function(_0x26bea3,_0x2657e4,_0x3f5628,_0x16d0d0,_0x323450,_0x4c7b67,_0x5f3b62,_0x5f094b){var _0x22b46e={};_0x4c7b67['remoteUri']=_0x4c7b67[_0xc7cf('0xb')]?intUtil[_0xc7cf('0x54')](_0x4c7b67[_0xc7cf('0x55')]['data7']):intUtil['stripTrailingSlash'](_0x4c7b67[_0xc7cf('0xc')]);_0x4c7b67['serverUrl']=intUtil[_0xc7cf('0x54')](_0x4c7b67[_0xc7cf('0x56')]);_0x22b46e[_0xc7cf('0x4d')]=_0x5f094b==='queue'||_0x5f094b==='unmanaged'?_0xc7cf('0x4e'):_0xc7cf('0x2c');var _0x3fa5fb=_0x4c7b67['modernAuthentication']?util[_0xc7cf('0x52')](_0xc7cf('0x57'),_0x4c7b67[_0xc7cf('0x55')][_0xc7cf('0xd')]):util[_0xc7cf('0x52')](_0xc7cf('0x57'),_0x4c7b67[_0xc7cf('0xc')]);var _0xf3e5ec=util[_0xc7cf('0x52')](_0xc7cf('0x58'),_0x4c7b67['tenantId']);var _0x17713e=util[_0xc7cf('0x52')](_0xc7cf('0x59'),_0x4c7b67[_0xc7cf('0x56')],_0x2657e4['uniqueid'],md5(_0x2657e4[_0xc7cf('0x5a')]));if(_0x323450&&_0x323450[_0xc7cf('0x5b')]){logger['info'](_0xc7cf('0x5c'),_0xc7cf('0x5d'));_0x2657e4[_0xc7cf('0x5e')]=_0x17713e;}else if(_0x5f3b62&&_0x5f3b62[_0xc7cf('0x5f')]&&_0x5f3b62[_0xc7cf('0x5f')]!==_0xc7cf('0x60')){logger[_0xc7cf('0x24')](_0xc7cf('0x61'),'Recording\x20is\x20enabled!');_0x2657e4[_0xc7cf('0x5e')]=_0x17713e;}else{_0x2657e4[_0xc7cf('0x5e')]='';}return getUser(_0x22b46e,_0x4c7b67,_0x16d0d0,_0xf3e5ec,_0x3fa5fb,_0x5f094b)[_0xc7cf('0x15')](function(_0xd958d6){logger['info']('['+_0x5f094b['toUpperCase']()+_0xc7cf('0x62'),_0xd958d6['userId']);logger['info']('['+_0x5f094b['toUpperCase']()+']\x20The\x20User\x20email\x20is:',_0xd958d6[_0xc7cf('0x27')]);return getEndUser(_0xd958d6,_0x4c7b67,_0xf3e5ec,_0x3fa5fb,_0x2657e4,_0x5f094b,_0x3f5628['moduleCreate'],_0x3f5628['additionalSearchContact']);})[_0xc7cf('0x15')](function(_0x36ab82){logger[_0xc7cf('0x24')]('['+_0x5f094b[_0xc7cf('0x19')]()+_0xc7cf('0x63'),_0x36ab82[_0xc7cf('0x35')]);logger[_0xc7cf('0x24')]('['+_0x5f094b['toUpperCase']()+']\x20The\x20Enduser\x20phone\x20is:',_0x2657e4[_0xc7cf('0x2e')]);return getTicket(_0x36ab82,_0x4c7b67,_0xf3e5ec,_0x3fa5fb,_0x2657e4,_0x3f5628,_0x5f094b);})['then'](function(_0x2c43f8){logger[_0xc7cf('0x24')](util[_0xc7cf('0x52')]('['+_0x5f094b[_0xc7cf('0x19')]()+_0xc7cf('0x64'),_0x3f5628[_0xc7cf('0x44')],_0x2c43f8[_0xc7cf('0x51')]));logger[_0xc7cf('0x24')](util[_0xc7cf('0x52')]('['+_0x5f094b['toUpperCase']()+']\x20Call\x20direction:\x20%s',_0x5f094b));if(_0x5f094b!=='unmanaged'){logger['info']('['+_0x5f094b[_0xc7cf('0x19')]()+']',_0xc7cf('0x65'));emit(_0x4c7b67[_0xc7cf('0xc')],_0x16d0d0[_0xc7cf('0x66')],_0x3f5628[_0xc7cf('0x44')],_0x2c43f8[_0xc7cf('0x51')]);}})['catch'](function(_0x3378fb){logger['error']('['+_0x5f094b['toUpperCase']()+']\x20Error\x20running\x20Dynamics365\x20integration',_0x3378fb[_0xc7cf('0x1a')]);});};
\ No newline at end of file
index 263a937..abef358 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b38=['picklist','type','nameField','customField','toLowerCase','includes','idField','content','variable','variableName','push','customVariable','Variable','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','[OUTBOUND]','uniqueid','destcalleridname','destcalleridnum','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','monitor_format','lastevent','toUpperCase','lodash','md5','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','Subjects','getString','Descriptions','<br>','Tags','name','Fields','custom_fields','mapValues','keyBy','%s/api/v2/tickets','remoteUri','POST','then','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','email','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','apiKey','toString','base64','debug','stringify','GET','forEach','string'];(function(_0x5a481f,_0x279bea){var _0x4f9298=function(_0x5118ba){while(--_0x5118ba){_0x5a481f['push'](_0x5a481f['shift']());}};_0x4f9298(++_0x279bea);}(_0x5b38,0x84));var _0x85b3=function(_0x1034ca,_0x14ecd6){_0x1034ca=_0x1034ca-0x0;var _0x1a023a=_0x5b38[_0x1034ca];return _0x1a023a;};'use strict';var _=require(_0x85b3('0x0'));var rp=require('request-promise');var md5=require(_0x85b3('0x1'));var util=require('util');var Redis=require('ioredis');var intUtil=require(_0x85b3('0x2'));var config=require(_0x85b3('0x3'));var logger=require(_0x85b3('0x4'))(_0x85b3('0x5'));config[_0x85b3('0x6')]=_[_0x85b3('0x7')](config[_0x85b3('0x6')],{'host':_0x85b3('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x85b3('0x6')]));var headers={'Content-Type':_0x85b3('0x9'),'Accept':_0x85b3('0x9')};function emit(_0x5473dd,_0x453972,_0x104553){io['to'](_0x5473dd)[_0x85b3('0xa')](_0x453972,_0x104553);}function getTicket(_0x8a45c2,_0xfff49c,_0x4247a1,_0x209ed0,_0x405e52){logger[_0x85b3('0xb')](_0x85b3('0xc'));var _0x463c71=_[_0x85b3('0xd')]({'responder_id':_0xfff49c['id'],'requester_id':_0x4247a1['id'],'name':util[_0x85b3('0xe')](_0x85b3('0xf'),_0x405e52[_0x85b3('0x10')]),'phone':_0x405e52[_0x85b3('0x11')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x209ed0[_0x85b3('0x12')],_0x405e52,'\x20'),'description':intUtil[_0x85b3('0x13')](_0x209ed0[_0x85b3('0x14')],_0x405e52,_0x85b3('0x15')),'tags':getTags(_0x209ed0[_0x85b3('0x16')],_0x85b3('0x17'))},getCustomFields(_0x209ed0[_0x85b3('0x18')],_0x405e52));_0x463c71[_0x85b3('0x19')]=_[_0x85b3('0x1a')](_[_0x85b3('0x1b')](_0x463c71[_0x85b3('0x19')],'id'),'value');return request({'uri':util['format'](_0x85b3('0x1c'),_0x8a45c2[_0x85b3('0x1d')]),'method':_0x85b3('0x1e'),'body':_0x463c71})[_0x85b3('0x1f')](function(_0x3ae272){logger['info']('Ticket\x20created!');return _0x3ae272;});}function getUser(_0x39d1ea,_0x41885e){if(intUtil[_0x85b3('0x20')](_0x41885e)){return request({'uri':util[_0x85b3('0xe')](_0x85b3('0x21'),_0x39d1ea['remoteUri']),'qs':{'email':_0x41885e}})['then'](function(_0x7fe8a9){if(_0x7fe8a9[_0x85b3('0x22')]){logger[_0x85b3('0xb')](_0x85b3('0x23'));return _[_0x85b3('0x24')](_0x7fe8a9,function(_0x196415){return _0x196415['contact'][_0x85b3('0x25')]===_0x41885e;});}else{logger[_0x85b3('0xb')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x85b3('0xe')](_0x85b3('0x26'),_0x39d1ea[_0x85b3('0x1d')])})[_0x85b3('0x1f')](function(_0x50abc8){logger[_0x85b3('0xb')](_0x85b3('0x27'));return _0x50abc8;});}});}else{logger['info'](_0x85b3('0x28'));return request({'uri':util['format'](_0x85b3('0x26'),_0x39d1ea[_0x85b3('0x1d')])})[_0x85b3('0x1f')](function(_0x25b149){logger[_0x85b3('0xb')](_0x85b3('0x27'));return _0x25b149;});}}function getEndUser(_0x50eff5,_0x421363,_0xace2d1){logger['info'](_0x85b3('0x29'),_0xace2d1);return request({'uri':util[_0x85b3('0xe')]('%s/api/v2/contacts',_0x50eff5['remoteUri']),'qs':{'phone':_0xace2d1}})['then'](function(_0x541183){if(_0x541183['length']){logger[_0x85b3('0xb')]('Enduser\x20found!');return _[_0x85b3('0x24')](_0x541183,{'phone':_0xace2d1});}else{logger['info'](_0x85b3('0x2a'));return request({'uri':util[_0x85b3('0xe')]('%s/api/v2/contacts',_0x50eff5[_0x85b3('0x1d')]),'method':_0x85b3('0x1e'),'body':{'name':_0x421363,'phone':_0xace2d1}})[_0x85b3('0x1f')](function(_0x429566){logger[_0x85b3('0xb')](_0x85b3('0x2b'));return _0x429566;});}});}function getAuth(_0x3b1eeb){return util[_0x85b3('0xe')]('Basic\x20%s',new Buffer(_0x3b1eeb[_0x85b3('0x2c')]+':X')[_0x85b3('0x2d')](_0x85b3('0x2e')));}function request(_0x3b3be1){logger[_0x85b3('0x2f')]('[HTTP]',JSON[_0x85b3('0x30')](_0x3b3be1));return rp(_[_0x85b3('0x7')](_0x3b3be1,{'method':_0x85b3('0x31'),'headers':headers,'json':!![]}));}function getTags(_0x1afa47,_0x2538be){var _0x1907fb=[];if(_0x1afa47&&_0x1afa47[_0x85b3('0x22')]>0x0){_0x1907fb=_['map'](_0x1afa47,_0x2538be);}return _0x1907fb;}function getCustomFields(_0x541095,_0x417a3c){var _0x4f33a5=[];var _0x5ed3b7={'custom_fields':[]};if(_0x541095['length']>0x0){_[_0x85b3('0x32')](_0x541095,function(_0x5e34d0){if(_['includes']([_0x85b3('0x33'),_0x85b3('0x34')],_0x5e34d0[_0x85b3('0x35')])&&_0x5e34d0[_0x85b3('0x36')]&&!_0x5e34d0[_0x85b3('0x37')]){_0x5ed3b7[_0x5e34d0[_0x85b3('0x36')][_0x85b3('0x38')]()]=_0x5e34d0['content'][_0x85b3('0x2d')]();}else if(_[_0x85b3('0x39')](['string',_0x85b3('0x34')],_0x5e34d0[_0x85b3('0x35')])&&_0x5e34d0[_0x85b3('0x3a')]&&_0x5e34d0[_0x85b3('0x37')]){_0x5ed3b7['custom_fields']['push']({'id':_0x5e34d0[_0x85b3('0x3a')],'value':_0x5e34d0[_0x85b3('0x3b')][_0x85b3('0x2d')]()});}else if(_0x5e34d0[_0x85b3('0x35')]===_0x85b3('0x3c')&&_0x5e34d0[_0x85b3('0x3d')]&&_0x5e34d0[_0x85b3('0x3a')]&&_0x5e34d0[_0x85b3('0x37')]){_0x417a3c[_0x5e34d0[_0x85b3('0x3d')]]&&_0x5ed3b7['custom_fields'][_0x85b3('0x3e')]({'id':_0x5e34d0['idField'],'value':_0x417a3c[_0x5e34d0[_0x85b3('0x3d')]][_0x85b3('0x2d')]()});}else if(_0x5e34d0[_0x85b3('0x35')]===_0x85b3('0x3f')&&_0x5e34d0[_0x85b3('0x40')]&&_0x5e34d0[_0x85b3('0x40')][_0x85b3('0x17')]&&_0x5e34d0[_0x85b3('0x3a')]&&_0x5e34d0[_0x85b3('0x37')]){_0x417a3c[_0x5e34d0[_0x85b3('0x40')][_0x85b3('0x17')][_0x85b3('0x38')]()]&&_0x5ed3b7['custom_fields'][_0x85b3('0x3e')]({'id':_0x5e34d0[_0x85b3('0x3a')],'value':_0x417a3c[_0x5e34d0[_0x85b3('0x40')][_0x85b3('0x17')]['toLowerCase']()][_0x85b3('0x2d')]()});}});}return _0x5ed3b7;}exports[_0x85b3('0x41')]=function(_0x508426,_0x4d9039,_0x29b6e9,_0x497dff,_0x44dedd,_0x3eadb9){var _0xf0df8b,_0x43123c;_0x3eadb9[_0x85b3('0x1d')]=intUtil[_0x85b3('0x42')](_0x3eadb9['remoteUri']);_0x3eadb9[_0x85b3('0x43')]=intUtil['stripTrailingSlash'](_0x3eadb9[_0x85b3('0x43')]);if(_0x44dedd&&_0x44dedd['monitor_format']){logger[_0x85b3('0xb')](_0x85b3('0x44'),_0x85b3('0x45'));_0x4d9039[_0x85b3('0x46')]=util[_0x85b3('0xe')](_0x85b3('0x47'),_0x3eadb9[_0x85b3('0x43')],_0x4d9039['uniqueid'],md5(_0x4d9039['uniqueid']));}else{_0x4d9039[_0x85b3('0x46')]='';}headers[_0x85b3('0x48')]=getAuth(_0x3eadb9);return getUser(_0x3eadb9,_0x497dff[_0x85b3('0x25')])['then'](function(_0x4bc4a5){_0xf0df8b=_0x4bc4a5;logger[_0x85b3('0xb')](_0x85b3('0x49'),_0xf0df8b['id']);return getEndUser(_0x3eadb9,_0x4d9039['calleridname'],_0x4d9039[_0x85b3('0x11')]);})[_0x85b3('0x1f')](function(_0x1010bd){_0x43123c=_0x1010bd;logger[_0x85b3('0xb')](_0x85b3('0x4a'),_0x43123c['id']);return getTicket(_0x3eadb9,_0xf0df8b,_0x43123c,_0x29b6e9,_0x4d9039);})['then'](function(_0x5b6221){if(_0x5b6221&&_0x5b6221['id']){logger['info'](_0x85b3('0x4b'));logger[_0x85b3('0xb')](_0x85b3('0x4c'),_0x5b6221['id']);logger[_0x85b3('0xb')](_0x85b3('0x44'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x85b3('0xe')](_0x85b3('0x4d'),_0x497dff[_0x85b3('0x17')]),_0x85b3('0x4e'),{'uri':util[_0x85b3('0xe')](_0x85b3('0x4f'),_0x3eadb9[_0x85b3('0x1d')],_0x5b6221['id'])});}})[_0x85b3('0x50')](function(_0x591f09){logger[_0x85b3('0x51')]('[QUEUE]',JSON[_0x85b3('0x30')](_0x591f09));});};exports[_0x85b3('0x52')]=function(_0x5760ab,_0x52052c,_0x15c71f,_0x183674,_0x332597,_0x2d614c,_0x474965){var _0x46bd15,_0x43c488;_0x2d614c[_0x85b3('0x1d')]=intUtil[_0x85b3('0x42')](_0x2d614c[_0x85b3('0x1d')]);_0x2d614c[_0x85b3('0x43')]=intUtil[_0x85b3('0x42')](_0x2d614c[_0x85b3('0x43')]);if(_0x474965&&_0x474965[_0x85b3('0x53')]&&_0x474965['recordingFormat']!=='none'){logger[_0x85b3('0xb')](_0x85b3('0x54'),'Recording\x20is\x20enabled!');_0x52052c[_0x85b3('0x46')]=util[_0x85b3('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2d614c['serverUrl'],_0x52052c[_0x85b3('0x55')],md5(_0x52052c['uniqueid']));}headers[_0x85b3('0x48')]=getAuth(_0x2d614c);return getUser(_0x2d614c,_0x183674[_0x85b3('0x25')])[_0x85b3('0x1f')](function(_0xe043ef){_0x46bd15=_0xe043ef;logger[_0x85b3('0xb')]('The\x20User\x20ID\x20is:',_0x46bd15['id']);return getEndUser(_0x2d614c,_0x52052c[_0x85b3('0x56')],_0x52052c[_0x85b3('0x57')]);})[_0x85b3('0x1f')](function(_0x9c1ea0){_0x43c488=_0x9c1ea0;logger['info'](_0x85b3('0x4a'),_0x43c488['id']);return getTicket(_0x2d614c,_0x46bd15,_0x43c488,_0x15c71f,_0x52052c);})[_0x85b3('0x1f')](function(_0x17d8a2){if(_0x17d8a2&&_0x17d8a2['id']){logger[_0x85b3('0xb')](_0x85b3('0x4b'));logger[_0x85b3('0xb')](_0x85b3('0x4c'),_0x17d8a2['id']);logger[_0x85b3('0xb')](_0x85b3('0x54'),_0x85b3('0x58'));emit(util[_0x85b3('0xe')](_0x85b3('0x4d'),_0x183674[_0x85b3('0x17')]),_0x85b3('0x4e'),{'uri':util['format'](_0x85b3('0x4f'),_0x2d614c[_0x85b3('0x1d')],_0x17d8a2['id'])});}})[_0x85b3('0x50')](function(_0x493312){logger[_0x85b3('0x51')](_0x85b3('0x54'),JSON['stringify'](_0x493312));});};exports['unmanaged']=function(_0x3b8cb2,_0x193505,_0x363a58,_0x32833d,_0x360e3e,_0x5c38ca){var _0x2c5975,_0x33f849;_0x5c38ca['remoteUri']=intUtil[_0x85b3('0x42')](_0x5c38ca[_0x85b3('0x1d')]);_0x5c38ca[_0x85b3('0x43')]=intUtil[_0x85b3('0x42')](_0x5c38ca[_0x85b3('0x43')]);if(_0x360e3e&&_0x360e3e[_0x85b3('0x59')]){logger['info']('['+_0x193505[_0x85b3('0x5a')][_0x85b3('0x5b')]()+']',_0x85b3('0x45'));_0x193505['recordingURL']=util[_0x85b3('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5c38ca[_0x85b3('0x43')],_0x193505[_0x85b3('0x55')],md5(_0x193505[_0x85b3('0x55')]));}else{_0x193505[_0x85b3('0x46')]='';}headers[_0x85b3('0x48')]=getAuth(_0x5c38ca);return getUser(_0x5c38ca,'')[_0x85b3('0x1f')](function(_0x324e5a){_0x2c5975=_0x324e5a;logger[_0x85b3('0xb')](_0x85b3('0x49'),_0x2c5975['id']);return getEndUser(_0x5c38ca,_0x193505['calleridname'],_0x193505[_0x85b3('0x11')]);})[_0x85b3('0x1f')](function(_0x24ccae){_0x33f849=_0x24ccae;logger[_0x85b3('0xb')]('The\x20Enduser\x20ID\x20is:',_0x33f849['id']);return getTicket(_0x5c38ca,_0x2c5975,_0x33f849,_0x363a58,_0x193505);})[_0x85b3('0x1f')](function(_0xde0358){if(_0xde0358){logger[_0x85b3('0xb')](_0x85b3('0x4b'));logger[_0x85b3('0xb')]('The\x20Ticket\x20ID\x20is:',_0xde0358['id']);}})[_0x85b3('0x50')](function(_0x1a9a9c){logger[_0x85b3('0x51')]('['+_0x193505['lastevent'][_0x85b3('0x5b')]()+']',JSON['stringify'](_0x1a9a9c));});};
\ No newline at end of file
+var _0x85fb=['Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','apiKey','base64','debug','stringify','defaults','includes','picklist','type','nameField','customField','toLowerCase','toString','idField','push','content','variable','variableName','customVariable','Variable','name','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\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/helpdesk/tickets/%d','catch','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','trigger:browser:url','unmanaged','lastevent','toUpperCase','error','lodash','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','Caller\x20-\x20%s','calleridname','calleridnum','Subjects','Descriptions','Tags','Fields','custom_fields','format','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','length','Agent\x20found!','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','find'];(function(_0x3d6811,_0x590546){var _0x24230f=function(_0x33339b){while(--_0x33339b){_0x3d6811['push'](_0x3d6811['shift']());}};_0x24230f(++_0x590546);}(_0x85fb,0x135));var _0xb85f=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x85fb[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0xb85f('0x0'));var rp=require('request-promise');var md5=require(_0xb85f('0x1'));var util=require(_0xb85f('0x2'));var Redis=require(_0xb85f('0x3'));var intUtil=require(_0xb85f('0x4'));var config=require(_0xb85f('0x5'));var logger=require(_0xb85f('0x6'))('freshdesk');config[_0xb85f('0x7')]=_['defaults'](config[_0xb85f('0x7')],{'host':_0xb85f('0x8'),'port':0x18eb});var io=require(_0xb85f('0x9'))(new Redis(config[_0xb85f('0x7')]));var headers={'Content-Type':'application/json','Accept':_0xb85f('0xa')};function emit(_0x4548d7,_0x2c25cb,_0x525738){io['to'](_0x4548d7)[_0xb85f('0xb')](_0x2c25cb,_0x525738);}function getTicket(_0x4a7d69,_0x429a29,_0xb35ca2,_0x55f516,_0x3a8a51){logger[_0xb85f('0xc')](_0xb85f('0xd'));var _0x53e0e0=_[_0xb85f('0xe')]({'responder_id':_0x429a29['id'],'requester_id':_0xb35ca2['id'],'name':util['format'](_0xb85f('0xf'),_0x3a8a51[_0xb85f('0x10')]),'phone':_0x3a8a51[_0xb85f('0x11')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x55f516[_0xb85f('0x12')],_0x3a8a51,'\x20'),'description':intUtil['getString'](_0x55f516[_0xb85f('0x13')],_0x3a8a51,'<br>'),'tags':getTags(_0x55f516[_0xb85f('0x14')],'name')},getCustomFields(_0x55f516[_0xb85f('0x15')],_0x3a8a51));_0x53e0e0[_0xb85f('0x16')]=_['mapValues'](_['keyBy'](_0x53e0e0[_0xb85f('0x16')],'id'),'value');return request({'uri':util[_0xb85f('0x17')](_0xb85f('0x18'),_0x4a7d69[_0xb85f('0x19')]),'method':_0xb85f('0x1a'),'body':_0x53e0e0})[_0xb85f('0x1b')](function(_0x337a2d){logger[_0xb85f('0xc')](_0xb85f('0x1c'));return _0x337a2d;});}function getUser(_0x10c483,_0x2a4f72){if(intUtil['validateEmail'](_0x2a4f72)){return request({'uri':util[_0xb85f('0x17')]('%s/api/v2/agents',_0x10c483[_0xb85f('0x19')]),'qs':{'email':_0x2a4f72}})[_0xb85f('0x1b')](function(_0x4e3676){if(_0x4e3676[_0xb85f('0x1d')]){logger[_0xb85f('0xc')](_0xb85f('0x1e'));return _['find'](_0x4e3676,function(_0xbc95be){return _0xbc95be['contact'][_0xb85f('0x1f')]===_0x2a4f72;});}else{logger[_0xb85f('0xc')](_0xb85f('0x20'));return request({'uri':util['format'](_0xb85f('0x21'),_0x10c483[_0xb85f('0x19')])})[_0xb85f('0x1b')](function(_0x391f20){logger[_0xb85f('0xc')]('Admin\x20account\x20selected.');return _0x391f20;});}});}else{logger[_0xb85f('0xc')](_0xb85f('0x22'));return request({'uri':util['format'](_0xb85f('0x21'),_0x10c483[_0xb85f('0x19')])})['then'](function(_0xa718da){logger['info'](_0xb85f('0x23'));return _0xa718da;});}}function getEndUser(_0x39c133,_0x42cc82,_0x4e78a3){logger[_0xb85f('0xc')](_0xb85f('0x24'),_0x4e78a3);return request({'uri':util[_0xb85f('0x17')](_0xb85f('0x25'),_0x39c133[_0xb85f('0x19')]),'qs':{'phone':_0x4e78a3}})[_0xb85f('0x1b')](function(_0x487be6){if(_0x487be6[_0xb85f('0x1d')]){logger[_0xb85f('0xc')]('Enduser\x20found!');return _[_0xb85f('0x26')](_0x487be6,{'phone':_0x4e78a3});}else{logger[_0xb85f('0xc')](_0xb85f('0x27'));return request({'uri':util[_0xb85f('0x17')]('%s/api/v2/contacts',_0x39c133[_0xb85f('0x19')]),'method':_0xb85f('0x1a'),'body':{'name':_0x42cc82,'phone':_0x4e78a3}})[_0xb85f('0x1b')](function(_0x312d01){logger['info'](_0xb85f('0x28'));return _0x312d01;});}});}function getAuth(_0x27248a){return util['format']('Basic\x20%s',new Buffer(_0x27248a[_0xb85f('0x29')]+':X')['toString'](_0xb85f('0x2a')));}function request(_0x458039){logger[_0xb85f('0x2b')]('[HTTP]',JSON[_0xb85f('0x2c')](_0x458039));return rp(_[_0xb85f('0x2d')](_0x458039,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x5c3a1f,_0x354bbf){var _0x628ff5=[];if(_0x5c3a1f&&_0x5c3a1f[_0xb85f('0x1d')]>0x0){_0x628ff5=_['map'](_0x5c3a1f,_0x354bbf);}return _0x628ff5;}function getCustomFields(_0x2127cc,_0x51b7e2){var _0x5965be=[];var _0x14da58={'custom_fields':[]};if(_0x2127cc['length']>0x0){_['forEach'](_0x2127cc,function(_0x3dfe71){if(_[_0xb85f('0x2e')](['string',_0xb85f('0x2f')],_0x3dfe71[_0xb85f('0x30')])&&_0x3dfe71[_0xb85f('0x31')]&&!_0x3dfe71[_0xb85f('0x32')]){_0x14da58[_0x3dfe71[_0xb85f('0x31')][_0xb85f('0x33')]()]=_0x3dfe71['content'][_0xb85f('0x34')]();}else if(_[_0xb85f('0x2e')](['string',_0xb85f('0x2f')],_0x3dfe71[_0xb85f('0x30')])&&_0x3dfe71[_0xb85f('0x35')]&&_0x3dfe71[_0xb85f('0x32')]){_0x14da58[_0xb85f('0x16')][_0xb85f('0x36')]({'id':_0x3dfe71[_0xb85f('0x35')],'value':_0x3dfe71[_0xb85f('0x37')][_0xb85f('0x34')]()});}else if(_0x3dfe71[_0xb85f('0x30')]===_0xb85f('0x38')&&_0x3dfe71['variableName']&&_0x3dfe71[_0xb85f('0x35')]&&_0x3dfe71[_0xb85f('0x32')]){_0x51b7e2[_0x3dfe71[_0xb85f('0x39')]]&&_0x14da58[_0xb85f('0x16')][_0xb85f('0x36')]({'id':_0x3dfe71[_0xb85f('0x35')],'value':_0x51b7e2[_0x3dfe71['variableName']]['toString']()});}else if(_0x3dfe71[_0xb85f('0x30')]===_0xb85f('0x3a')&&_0x3dfe71[_0xb85f('0x3b')]&&_0x3dfe71[_0xb85f('0x3b')][_0xb85f('0x3c')]&&_0x3dfe71[_0xb85f('0x35')]&&_0x3dfe71[_0xb85f('0x32')]){_0x51b7e2[_0x3dfe71[_0xb85f('0x3b')][_0xb85f('0x3c')][_0xb85f('0x33')]()]&&_0x14da58[_0xb85f('0x16')][_0xb85f('0x36')]({'id':_0x3dfe71[_0xb85f('0x35')],'value':_0x51b7e2[_0x3dfe71[_0xb85f('0x3b')]['name'][_0xb85f('0x33')]()][_0xb85f('0x34')]()});}});}return _0x14da58;}exports['queue']=function(_0x4d77ba,_0x387f8a,_0x3534c5,_0x484549,_0x5b98d1,_0x14a14a){var _0x6feda9,_0xee46ab;_0x14a14a[_0xb85f('0x19')]=intUtil[_0xb85f('0x3d')](_0x14a14a['remoteUri']);_0x14a14a[_0xb85f('0x3e')]=intUtil[_0xb85f('0x3d')](_0x14a14a[_0xb85f('0x3e')]);if(_0x5b98d1&&_0x5b98d1[_0xb85f('0x3f')]){logger[_0xb85f('0xc')](_0xb85f('0x40'),_0xb85f('0x41'));_0x387f8a[_0xb85f('0x42')]=util[_0xb85f('0x17')](_0xb85f('0x43'),_0x14a14a[_0xb85f('0x3e')],_0x387f8a[_0xb85f('0x44')],md5(_0x387f8a[_0xb85f('0x44')]));}else{_0x387f8a[_0xb85f('0x42')]='';}headers[_0xb85f('0x45')]=getAuth(_0x14a14a);return getUser(_0x14a14a,_0x484549[_0xb85f('0x1f')])[_0xb85f('0x1b')](function(_0x13cc0e){_0x6feda9=_0x13cc0e;logger[_0xb85f('0xc')](_0xb85f('0x46'),_0x6feda9['id']);return getEndUser(_0x14a14a,_0x387f8a[_0xb85f('0x10')],_0x387f8a['calleridnum']);})[_0xb85f('0x1b')](function(_0x3e29d6){_0xee46ab=_0x3e29d6;logger[_0xb85f('0xc')]('The\x20Enduser\x20ID\x20is:',_0xee46ab['id']);return getTicket(_0x14a14a,_0x6feda9,_0xee46ab,_0x3534c5,_0x387f8a);})['then'](function(_0x52eac0){if(_0x52eac0&&_0x52eac0['id']){logger[_0xb85f('0xc')]('Ticket\x20created!');logger[_0xb85f('0xc')](_0xb85f('0x47'),_0x52eac0['id']);logger[_0xb85f('0xc')](_0xb85f('0x40'),_0xb85f('0x48'));emit(util[_0xb85f('0x17')](_0xb85f('0x49'),_0x484549[_0xb85f('0x3c')]),'trigger:browser:url',{'uri':util[_0xb85f('0x17')](_0xb85f('0x4a'),_0x14a14a[_0xb85f('0x19')],_0x52eac0['id'])});}})[_0xb85f('0x4b')](function(_0x1a0f68){logger['error'](_0xb85f('0x40'),JSON[_0xb85f('0x2c')](_0x1a0f68));});};exports['outbound']=function(_0x24ebfd,_0x5f59f3,_0x2f8096,_0x214e24,_0x35c085,_0x178e96,_0x8ae59a){var _0x3085fd,_0x176123;_0x178e96['remoteUri']=intUtil[_0xb85f('0x3d')](_0x178e96[_0xb85f('0x19')]);_0x178e96[_0xb85f('0x3e')]=intUtil[_0xb85f('0x3d')](_0x178e96['serverUrl']);if(_0x8ae59a&&_0x8ae59a[_0xb85f('0x4c')]&&_0x8ae59a[_0xb85f('0x4c')]!==_0xb85f('0x4d')){logger[_0xb85f('0xc')](_0xb85f('0x4e'),_0xb85f('0x41'));_0x5f59f3[_0xb85f('0x42')]=util[_0xb85f('0x17')](_0xb85f('0x43'),_0x178e96[_0xb85f('0x3e')],_0x5f59f3[_0xb85f('0x44')],md5(_0x5f59f3['uniqueid']));}headers['Authorization']=getAuth(_0x178e96);return getUser(_0x178e96,_0x214e24[_0xb85f('0x1f')])[_0xb85f('0x1b')](function(_0xcd0c64){_0x3085fd=_0xcd0c64;logger[_0xb85f('0xc')](_0xb85f('0x46'),_0x3085fd['id']);return getEndUser(_0x178e96,_0x5f59f3[_0xb85f('0x4f')],_0x5f59f3[_0xb85f('0x50')]);})['then'](function(_0x4bfcd7){_0x176123=_0x4bfcd7;logger[_0xb85f('0xc')](_0xb85f('0x51'),_0x176123['id']);return getTicket(_0x178e96,_0x3085fd,_0x176123,_0x2f8096,_0x5f59f3);})['then'](function(_0x456a8c){if(_0x456a8c&&_0x456a8c['id']){logger[_0xb85f('0xc')](_0xb85f('0x1c'));logger[_0xb85f('0xc')](_0xb85f('0x47'),_0x456a8c['id']);logger[_0xb85f('0xc')](_0xb85f('0x4e'),_0xb85f('0x48'));emit(util[_0xb85f('0x17')](_0xb85f('0x49'),_0x214e24[_0xb85f('0x3c')]),_0xb85f('0x52'),{'uri':util['format']('%s/helpdesk/tickets/%d',_0x178e96['remoteUri'],_0x456a8c['id'])});}})[_0xb85f('0x4b')](function(_0x619f27){logger['error'](_0xb85f('0x4e'),JSON['stringify'](_0x619f27));});};exports[_0xb85f('0x53')]=function(_0x37321b,_0x46fb93,_0x51a3c3,_0x52e8f2,_0xab21c1,_0x530ca7){var _0x28fb12,_0xef55ae;_0x530ca7[_0xb85f('0x19')]=intUtil[_0xb85f('0x3d')](_0x530ca7[_0xb85f('0x19')]);_0x530ca7[_0xb85f('0x3e')]=intUtil['stripTrailingSlash'](_0x530ca7[_0xb85f('0x3e')]);if(_0xab21c1&&_0xab21c1[_0xb85f('0x3f')]){logger[_0xb85f('0xc')]('['+_0x46fb93[_0xb85f('0x54')][_0xb85f('0x55')]()+']','Recording\x20is\x20enabled!');_0x46fb93[_0xb85f('0x42')]=util[_0xb85f('0x17')](_0xb85f('0x43'),_0x530ca7[_0xb85f('0x3e')],_0x46fb93[_0xb85f('0x44')],md5(_0x46fb93['uniqueid']));}else{_0x46fb93[_0xb85f('0x42')]='';}headers['Authorization']=getAuth(_0x530ca7);return getUser(_0x530ca7,'')[_0xb85f('0x1b')](function(_0x420992){_0x28fb12=_0x420992;logger[_0xb85f('0xc')](_0xb85f('0x46'),_0x28fb12['id']);return getEndUser(_0x530ca7,_0x46fb93[_0xb85f('0x10')],_0x46fb93[_0xb85f('0x11')]);})[_0xb85f('0x1b')](function(_0x1fd01d){_0xef55ae=_0x1fd01d;logger['info']('The\x20Enduser\x20ID\x20is:',_0xef55ae['id']);return getTicket(_0x530ca7,_0x28fb12,_0xef55ae,_0x51a3c3,_0x46fb93);})['then'](function(_0x5b0a26){if(_0x5b0a26){logger[_0xb85f('0xc')](_0xb85f('0x1c'));logger['info'](_0xb85f('0x47'),_0x5b0a26['id']);}})[_0xb85f('0x4b')](function(_0x575c42){logger[_0xb85f('0x56')]('['+_0x46fb93['lastevent']['toUpperCase']()+']',JSON[_0xb85f('0x2c')](_0x575c42));});};
\ No newline at end of file
index 0e20b2f..0db0fa4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31c8=['toLowerCase','outbound','destcalleridnum','callDirection','unmanaged','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','md5','util','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','socket.io-emitter','GET','/api/selector/owners','info','Getting\x20admin\x20information','then','users','email','adminEmail','adminId','Admin\x20found:','catch','error','message','headers','Getting\x20user\x20list','Getting\x20user\x20with\x20email','agentEmail','length','userId','Admin\x20selected','userEmail','Requested\x20Resource\x20not\x20Found','toUpperCase','&f=','&entities=contact','find','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Creating\x20new\x20task','/api/tasks','Subjects','getString','Descriptions','Contact','format','add','ticketId','task','Task\x20created:','/contacts/','user:%s','emit','Token\x20token=','apiKey','stripTrailingSlash','remoteUri','serverUrl','username'];(function(_0x5c8e2d,_0x1fc653){var _0xc70a65=function(_0x222703){while(--_0x222703){_0x5c8e2d['push'](_0x5c8e2d['shift']());}};_0xc70a65(++_0x1fc653);}(_0x31c8,0xbb));var _0x831c=function(_0x564bcd,_0x201fef){_0x564bcd=_0x564bcd-0x0;var _0x22b8ef=_0x31c8[_0x564bcd];return _0x22b8ef;};'use strict';var _=require(_0x831c('0x0'));var rp=require(_0x831c('0x1'));var md5=require(_0x831c('0x2'));var util=require(_0x831c('0x3'));var moment=require(_0x831c('0x4'));var Promise=require(_0x831c('0x5'));var Redis=require(_0x831c('0x6'));var intUtil=require(_0x831c('0x7'));var config=require(_0x831c('0x8'));var logger=require(_0x831c('0x9'))(_0x831c('0xa'));config[_0x831c('0xb')]=_['defaults'](config[_0x831c('0xb')],{'host':'localhost','port':0x18eb});var io=require(_0x831c('0xc'))(new Redis(config[_0x831c('0xb')]));function getAdminId(_0x50789c,_0x5bebcb,_0x5d6f38,_0x2992e8){return new Promise(function(_0x37c577,_0x5e4fd2){var _0x24d6e4=![];var _0x3934d2={'method':_0x831c('0xd'),'uri':_0x2992e8+_0x831c('0xe'),'json':!![]};_0x3934d2['headers']=_0x5d6f38;logger[_0x831c('0xf')](_0x831c('0x10'));return rp(_0x3934d2)[_0x831c('0x11')](function(_0x209dc4){if(_0x209dc4){var _0x887df2=_0x209dc4[_0x831c('0x12')];var _0x464f2f=null;for(_0x464f2f=0x0;_0x464f2f<_0x887df2['length'];_0x464f2f++){if(_0x887df2[_0x464f2f][_0x831c('0x13')]===_0x50789c[_0x831c('0x14')]){_0x50789c[_0x831c('0x15')]=_0x887df2[_0x464f2f]['id'];_0x24d6e4=!![];}}if(_0x24d6e4){logger[_0x831c('0xf')](_0x831c('0x16'),_0x50789c[_0x831c('0x15')]);_0x37c577(_0x50789c);}else{_0x5e4fd2({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x5e4fd2({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0x831c('0x17')](function(_0x273aab){logger[_0x831c('0x18')]('['+[_0x5bebcb['toUpperCase']()]+']',_0x273aab[_0x831c('0x19')]);_0x5e4fd2(_0x273aab);});});}function getUser(_0x6c89da,_0x59e9b8,_0x25f8da){return function(_0x2a67d7){return new Promise(function(_0x2c52e3,_0x13e03c){var _0x3e1c4b={'method':_0x831c('0xd'),'uri':_0x25f8da+_0x831c('0xe'),'json':!![]};_0x3e1c4b[_0x831c('0x1a')]=_0x59e9b8;logger[_0x831c('0xf')](_0x831c('0x1b'));return rp(_0x3e1c4b)[_0x831c('0x11')](function(_0x6ecac2){if(_0x6ecac2){var _0x9dd97e=_0x6ecac2['users'];var _0x4ec7dd=![];var _0x487536=null;if(_0x2a67d7['agentEmail']!==null){logger[_0x831c('0xf')](_0x831c('0x1c'),_0x2a67d7['agentEmail']);_0x2a67d7['userEmail']=_0x2a67d7[_0x831c('0x1d')];for(_0x487536=0x0;_0x487536<_0x9dd97e[_0x831c('0x1e')];_0x487536++){if(_0x9dd97e[_0x487536][_0x831c('0x13')]===_0x2a67d7[_0x831c('0x1d')]){_0x4ec7dd=!![];_0x2a67d7[_0x831c('0x1f')]=_0x9dd97e[_0x487536]['id'];logger[_0x831c('0xf')]('User\x20found:',_0x2a67d7[_0x831c('0x1f')]);}}}if(!_0x4ec7dd){logger['info'](_0x831c('0x20'));_0x2a67d7[_0x831c('0x21')]=_0x2a67d7[_0x831c('0x14')];_0x2a67d7['userId']=_0x2a67d7[_0x831c('0x15')];_0x4ec7dd=!![];}if(_0x4ec7dd){_0x2c52e3(_0x2a67d7);}else{_0x13e03c({'statusCode':0x194,'message':_0x831c('0x22')});}}else{_0x13e03c({'statusCode':0x194,'message':_0x831c('0x22')});}})[_0x831c('0x17')](function(_0x558490){logger['error']('['+[_0x6c89da[_0x831c('0x23')]()]+']',_0x558490[_0x831c('0x19')]);_0x13e03c(_0x558490);});});};}function searchContact(_0x588f7f,_0x357299,_0x509514,_0x56d8d3){return new Promise(function(_0x5c974a,_0x3762df){var _0x4890cd={'method':'GET','headers':_0x357299,'uri':_0x588f7f+'/api/lookup?q='+_0x56d8d3+_0x831c('0x24')+_0x509514+_0x831c('0x25'),'json':!![]};rp(_0x4890cd)['then'](function(_0x26283e){var _0x2d1db9=_[_0x831c('0x26')](_0x26283e['contacts']['contacts'],[_0x509514,_0x56d8d3]);_0x5c974a(_0x2d1db9);})[_0x831c('0x17')](function(_0x2036b6){_0x3762df(_0x2036b6);});});}function getEndUser(_0x196a3a,_0x47d090,_0x247b95){return function(_0x406454){return new Promise(function(_0x4de64b,_0x45a47f){logger[_0x831c('0xf')](util['format'](_0x831c('0x27'),_0x406454[_0x831c('0x28')]));searchContact(_0x247b95,_0x47d090,'mobile_number',_0x406454[_0x831c('0x28')])['then'](function(_0x297674){if(_0x297674){_0x406454[_0x831c('0x29')]=_0x297674['id'];logger[_0x831c('0xf')](_0x831c('0x2a'),_0x406454[_0x831c('0x29')]);return _0x4de64b(_0x406454);}searchContact(_0x247b95,_0x47d090,_0x831c('0x2b'),_0x406454[_0x831c('0x28')])['then'](function(_0x4b256c){if(_0x4b256c){_0x406454[_0x831c('0x29')]=_0x4b256c['id'];logger[_0x831c('0xf')](_0x831c('0x2c'),_0x406454[_0x831c('0x29')]);return _0x4de64b(_0x406454);}createEndUser(_0x406454,_0x196a3a,_0x47d090,_0x247b95)[_0x831c('0x11')](function(_0x3e1d3b){logger[_0x831c('0xf')]('Contact\x20created:',_0x3e1d3b['endUserId']);return _0x4de64b(_0x3e1d3b);});});})['catch'](function(_0x397b04){_0x45a47f(_0x397b04);});});};}function createEndUser(_0x3758b1,_0x228a9f,_0x6bf525,_0x4bd20f){return new Promise(function(_0x592c1c,_0x5dd401){var _0x320137=moment();var _0x423b0c={'method':_0x831c('0x2d'),'uri':_0x4bd20f+_0x831c('0x2e'),'body':{'contact':{'last_name':_0x3758b1[_0x831c('0x28')],'work_number':_0x3758b1['contactNumber'],'mobile_number':_0x3758b1[_0x831c('0x28')],'owner_id':_0x3758b1[_0x831c('0x1f')],'created_at':_0x320137['format'](_0x831c('0x2f'))}},'json':!![]};_0x423b0c[_0x831c('0x1a')]=_0x6bf525;logger['info']('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x423b0c)[_0x831c('0x11')](function(_0x346ad6){_0x3758b1[_0x831c('0x29')]=_0x346ad6['contact']['id'];_0x592c1c(_0x3758b1);})['catch'](function(_0x42ecda){logger[_0x831c('0x18')]('['+[_0x228a9f[_0x831c('0x23')]()]+']',_0x42ecda['message']);_0x5dd401(_0x42ecda[_0x831c('0x19')]);});});}function getTicket(_0x4a4bc9,_0xc8d74,_0x44faab,_0x28415d,_0x4cd7ee){return function(_0x2793b7){logger[_0x831c('0xf')](_0x831c('0x30'));return new Promise(function(_0x119311,_0x1d3f9d){var _0x4c5ddf=moment();var _0xcd11a2={'method':_0x831c('0x2d'),'uri':_0x44faab+_0x831c('0x31'),'body':{'title':intUtil['getString'](_0x28415d[_0x831c('0x32')],_0x4cd7ee,'\x20'),'description':intUtil[_0x831c('0x33')](_0x28415d[_0x831c('0x34')],_0x4cd7ee,'\x0a'),'owner_id':_0x2793b7[_0x831c('0x1f')],'creater_id':_0x2793b7['adminId'],'targetable_id':_0x2793b7[_0x831c('0x29')],'targetable_type':_0x831c('0x35'),'created_at':_0x4c5ddf[_0x831c('0x36')](_0x831c('0x2f')),'due_date':_0x4c5ddf[_0x831c('0x37')](0x1e,'m')[_0x831c('0x36')](_0x831c('0x2f'))},'json':!![]};_0xcd11a2[_0x831c('0x1a')]=_0xc8d74;return rp(_0xcd11a2)[_0x831c('0x11')](function(_0x2e2b20){_0x2793b7[_0x831c('0x38')]=_0x2e2b20[_0x831c('0x39')]['id'];logger[_0x831c('0xf')](_0x831c('0x3a'),_0x2793b7[_0x831c('0x38')]);_0x119311(_0x2793b7);})[_0x831c('0x17')](function(_0x218275){logger[_0x831c('0x18')]('['+[_0x4a4bc9[_0x831c('0x23')]()]+']',_0x218275['message']);_0x1d3f9d(_0x218275['message']);});});};}function emit(_0x1fb95b,_0x18d2d0,_0x4a9ae8){var _0x510f75={'uri':_0x1fb95b+_0x831c('0x3b')+_0x4a9ae8};io['to'](util['format'](_0x831c('0x3c'),_0x18d2d0))[_0x831c('0x3d')]('trigger:browser:url',_0x510f75);}exports['cs']=function(_0x59bd34,_0x552caf,_0x18def1,_0x20ea4c,_0x1df93f,_0x3033b9,_0x3cac0e,_0x4fc3cc){var _0x4f725e={};var _0x5f1f8a={'Authorization':_0x831c('0x3e')+_0x3033b9[_0x831c('0x3f')]};_0x3033b9['remoteUri']=intUtil[_0x831c('0x40')](_0x3033b9[_0x831c('0x41')]);_0x3033b9[_0x831c('0x42')]=intUtil['stripTrailingSlash'](_0x3033b9[_0x831c('0x42')]);var _0x6692b6=_0x3033b9[_0x831c('0x41')];_0x4f725e[_0x831c('0x14')]=_0x3033b9[_0x831c('0x43')];_0x4f725e[_0x831c('0x28')]=_0x4fc3cc[_0x831c('0x44')]()===_0x831c('0x45')?_0x552caf[_0x831c('0x46')]:_0x552caf['calleridnum'];_0x4f725e[_0x831c('0x47')]=_0x4fc3cc==='queue'||_0x4fc3cc===_0x831c('0x48')?_0x831c('0x49'):_0x831c('0x45');if(_0x20ea4c){_0x4f725e[_0x831c('0x1d')]=_0x20ea4c['email'];}var _0x22b20c=util[_0x831c('0x36')](_0x831c('0x4a'),_0x3033b9[_0x831c('0x42')],_0x552caf['uniqueid'],md5(_0x552caf[_0x831c('0x4b')]));if(_0x1df93f&&_0x1df93f[_0x831c('0x4c')]){logger[_0x831c('0xf')]('[QUEUE]',_0x831c('0x4d'));_0x552caf[_0x831c('0x4e')]=_0x22b20c;}else if(_0x3cac0e&&_0x3cac0e[_0x831c('0x4f')]&&_0x3cac0e[_0x831c('0x4f')]!==_0x831c('0x50')){logger[_0x831c('0xf')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x552caf['recordingURL']=_0x22b20c;}else{_0x552caf[_0x831c('0x4e')]='';}return getAdminId(_0x4f725e,_0x4fc3cc,_0x5f1f8a,_0x6692b6)[_0x831c('0x11')](getUser(_0x4fc3cc,_0x5f1f8a,_0x6692b6))[_0x831c('0x11')](getEndUser(_0x4fc3cc,_0x5f1f8a,_0x6692b6))[_0x831c('0x11')](getTicket(_0x4fc3cc,_0x5f1f8a,_0x6692b6,_0x18def1,_0x552caf))[_0x831c('0x11')](function(_0x5b81d3){logger[_0x831c('0xf')](util[_0x831c('0x36')]('The\x20ticket\x20ID\x20is:\x20%s',_0x5b81d3[_0x831c('0x38')]));if(_0x4fc3cc!==_0x831c('0x48')){logger['info']('['+[_0x4fc3cc['toUpperCase']()]+']',_0x831c('0x51'));emit(_0x6692b6,_0x20ea4c[_0x831c('0x52')],_0x5b81d3[_0x831c('0x29')]);}})[_0x831c('0x17')](function(_0x4088b2){logger[_0x831c('0x18')]('['+[_0x4fc3cc[_0x831c('0x23')]()]+_0x831c('0x53'),util[_0x831c('0x54')](_0x4088b2,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x1946=['../../../../config/logger','freshsales','redis','defaults','localhost','socket.io-emitter','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','email','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','GET','Getting\x20user\x20list','agentEmail','userEmail','User\x20found:','userId','Admin\x20selected','adminEmail','/api/lookup?q=','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','Contact\x20created:','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','getString','Subjects','Descriptions','Contact','add','ticketId','Task\x20created:','/contacts/','user:%s','emit','stripTrailingSlash','remoteUri','serverUrl','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','recordingFormat','none','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','name',']\x20Error\x20running\x20Freshsales\x20integration','lodash','request-promise','md5','util','bluebird','ioredis','./util','../../../../config/environment'];(function(_0x3d994e,_0xb58059){var _0x3cea9b=function(_0x55161c){while(--_0x55161c){_0x3d994e['push'](_0x3d994e['shift']());}};_0x3cea9b(++_0xb58059);}(_0x1946,0x1ea));var _0x6194=function(_0x5a7974,_0x2c6c2e){_0x5a7974=_0x5a7974-0x0;var _0xc8901=_0x1946[_0x5a7974];return _0xc8901;};'use strict';var _=require(_0x6194('0x0'));var rp=require(_0x6194('0x1'));var md5=require(_0x6194('0x2'));var util=require(_0x6194('0x3'));var moment=require('moment');var Promise=require(_0x6194('0x4'));var Redis=require(_0x6194('0x5'));var intUtil=require(_0x6194('0x6'));var config=require(_0x6194('0x7'));var logger=require(_0x6194('0x8'))(_0x6194('0x9'));config[_0x6194('0xa')]=_[_0x6194('0xb')](config[_0x6194('0xa')],{'host':_0x6194('0xc'),'port':0x18eb});var io=require(_0x6194('0xd'))(new Redis(config[_0x6194('0xa')]));function getAdminId(_0x30c463,_0x453df3,_0xdd81c5,_0x2314ca){return new Promise(function(_0x5af691,_0xf50660){var _0x9f6c48=![];var _0x5cde42={'method':'GET','uri':_0x2314ca+_0x6194('0xe'),'json':!![]};_0x5cde42[_0x6194('0xf')]=_0xdd81c5;logger[_0x6194('0x10')](_0x6194('0x11'));return rp(_0x5cde42)[_0x6194('0x12')](function(_0x304916){if(_0x304916){var _0x252a8d=_0x304916[_0x6194('0x13')];var _0x9e5c51=null;for(_0x9e5c51=0x0;_0x9e5c51<_0x252a8d[_0x6194('0x14')];_0x9e5c51++){if(_0x252a8d[_0x9e5c51][_0x6194('0x15')]===_0x30c463['adminEmail']){_0x30c463[_0x6194('0x16')]=_0x252a8d[_0x9e5c51]['id'];_0x9f6c48=!![];}}if(_0x9f6c48){logger[_0x6194('0x10')](_0x6194('0x17'),_0x30c463[_0x6194('0x16')]);_0x5af691(_0x30c463);}else{_0xf50660({'statusCode':0x194,'message':_0x6194('0x18')});}}else{_0xf50660({'statusCode':0x194,'message':_0x6194('0x18')});}})[_0x6194('0x19')](function(_0x3f9195){logger[_0x6194('0x1a')]('['+[_0x453df3[_0x6194('0x1b')]()]+']',_0x3f9195[_0x6194('0x1c')]);_0xf50660(_0x3f9195);});});}function getUser(_0x58fc6f,_0x25a955,_0x48e990){return function(_0x26c36c){return new Promise(function(_0x52f523,_0x534553){var _0x152944={'method':_0x6194('0x1d'),'uri':_0x48e990+_0x6194('0xe'),'json':!![]};_0x152944[_0x6194('0xf')]=_0x25a955;logger[_0x6194('0x10')](_0x6194('0x1e'));return rp(_0x152944)[_0x6194('0x12')](function(_0x13f6c7){if(_0x13f6c7){var _0x548604=_0x13f6c7[_0x6194('0x13')];var _0x29a0e3=![];var _0x106483=null;if(_0x26c36c[_0x6194('0x1f')]!==null){logger['info']('Getting\x20user\x20with\x20email',_0x26c36c[_0x6194('0x1f')]);_0x26c36c[_0x6194('0x20')]=_0x26c36c[_0x6194('0x1f')];for(_0x106483=0x0;_0x106483<_0x548604[_0x6194('0x14')];_0x106483++){if(_0x548604[_0x106483][_0x6194('0x15')]===_0x26c36c[_0x6194('0x1f')]){_0x29a0e3=!![];_0x26c36c['userId']=_0x548604[_0x106483]['id'];logger['info'](_0x6194('0x21'),_0x26c36c[_0x6194('0x22')]);}}}if(!_0x29a0e3){logger[_0x6194('0x10')](_0x6194('0x23'));_0x26c36c[_0x6194('0x20')]=_0x26c36c[_0x6194('0x24')];_0x26c36c[_0x6194('0x22')]=_0x26c36c[_0x6194('0x16')];_0x29a0e3=!![];}if(_0x29a0e3){_0x52f523(_0x26c36c);}else{_0x534553({'statusCode':0x194,'message':_0x6194('0x18')});}}else{_0x534553({'statusCode':0x194,'message':_0x6194('0x18')});}})['catch'](function(_0x21bff0){logger[_0x6194('0x1a')]('['+[_0x58fc6f[_0x6194('0x1b')]()]+']',_0x21bff0[_0x6194('0x1c')]);_0x534553(_0x21bff0);});});};}function searchContact(_0x12b6db,_0x377e94,_0x41c8dd,_0x2ae249){return new Promise(function(_0x16f9fe,_0x11e572){var _0x4a9085={'method':_0x6194('0x1d'),'headers':_0x377e94,'uri':_0x12b6db+_0x6194('0x25')+_0x2ae249+'&f='+_0x41c8dd+'&entities=contact','json':!![]};rp(_0x4a9085)['then'](function(_0xe628e7){var _0x5d1753=_[_0x6194('0x26')](_0xe628e7[_0x6194('0x27')]['contacts'],[_0x41c8dd,_0x2ae249]);_0x16f9fe(_0x5d1753);})[_0x6194('0x19')](function(_0x2e2a22){_0x11e572(_0x2e2a22);});});}function getEndUser(_0x34080a,_0x23423b,_0x1b7787){return function(_0xb8ca9c){return new Promise(function(_0x24e7a4,_0x33bf7a){logger[_0x6194('0x10')](util[_0x6194('0x28')](_0x6194('0x29'),_0xb8ca9c[_0x6194('0x2a')]));searchContact(_0x1b7787,_0x23423b,'mobile_number',_0xb8ca9c['contactNumber'])[_0x6194('0x12')](function(_0x5c00b0){if(_0x5c00b0){_0xb8ca9c[_0x6194('0x2b')]=_0x5c00b0['id'];logger[_0x6194('0x10')](_0x6194('0x2c'),_0xb8ca9c['endUserId']);return _0x24e7a4(_0xb8ca9c);}searchContact(_0x1b7787,_0x23423b,_0x6194('0x2d'),_0xb8ca9c[_0x6194('0x2a')])[_0x6194('0x12')](function(_0x119fb4){if(_0x119fb4){_0xb8ca9c['endUserId']=_0x119fb4['id'];logger[_0x6194('0x10')](_0x6194('0x2e'),_0xb8ca9c[_0x6194('0x2b')]);return _0x24e7a4(_0xb8ca9c);}createEndUser(_0xb8ca9c,_0x34080a,_0x23423b,_0x1b7787)[_0x6194('0x12')](function(_0x59fee3){logger[_0x6194('0x10')](_0x6194('0x2f'),_0x59fee3[_0x6194('0x2b')]);return _0x24e7a4(_0x59fee3);});});})[_0x6194('0x19')](function(_0x59597f){_0x33bf7a(_0x59597f);});});};}function createEndUser(_0x27c9c3,_0x110ce3,_0x402cd2,_0x44f4e9){return new Promise(function(_0x3b0981,_0x3751a3){var _0x162927=moment();var _0x2a3a2a={'method':'POST','uri':_0x44f4e9+_0x6194('0x30'),'body':{'contact':{'last_name':_0x27c9c3[_0x6194('0x2a')],'work_number':_0x27c9c3[_0x6194('0x2a')],'mobile_number':_0x27c9c3[_0x6194('0x2a')],'owner_id':_0x27c9c3[_0x6194('0x22')],'created_at':_0x162927[_0x6194('0x28')](_0x6194('0x31'))}},'json':!![]};_0x2a3a2a[_0x6194('0xf')]=_0x402cd2;logger[_0x6194('0x10')](_0x6194('0x32'));return rp(_0x2a3a2a)[_0x6194('0x12')](function(_0xa7371e){_0x27c9c3[_0x6194('0x2b')]=_0xa7371e[_0x6194('0x33')]['id'];_0x3b0981(_0x27c9c3);})[_0x6194('0x19')](function(_0x3ce4ca){logger[_0x6194('0x1a')]('['+[_0x110ce3['toUpperCase']()]+']',_0x3ce4ca[_0x6194('0x1c')]);_0x3751a3(_0x3ce4ca[_0x6194('0x1c')]);});});}function getTicket(_0x39ac99,_0x362622,_0x36995f,_0x1cdf3e,_0x1a0238){return function(_0x18c765){logger[_0x6194('0x10')](_0x6194('0x34'));return new Promise(function(_0x38f807,_0x2aca83){var _0x1c0739=moment();var _0x4a51b7={'method':'POST','uri':_0x36995f+'/api/tasks','body':{'title':intUtil[_0x6194('0x35')](_0x1cdf3e[_0x6194('0x36')],_0x1a0238,'\x20'),'description':intUtil[_0x6194('0x35')](_0x1cdf3e[_0x6194('0x37')],_0x1a0238,'\x0a'),'owner_id':_0x18c765[_0x6194('0x22')],'creater_id':_0x18c765[_0x6194('0x16')],'targetable_id':_0x18c765['endUserId'],'targetable_type':_0x6194('0x38'),'created_at':_0x1c0739[_0x6194('0x28')](_0x6194('0x31')),'due_date':_0x1c0739[_0x6194('0x39')](0x1e,'m')[_0x6194('0x28')](_0x6194('0x31'))},'json':!![]};_0x4a51b7['headers']=_0x362622;return rp(_0x4a51b7)[_0x6194('0x12')](function(_0x59965e){_0x18c765[_0x6194('0x3a')]=_0x59965e['task']['id'];logger[_0x6194('0x10')](_0x6194('0x3b'),_0x18c765['ticketId']);_0x38f807(_0x18c765);})[_0x6194('0x19')](function(_0x5a9fc6){logger['error']('['+[_0x39ac99[_0x6194('0x1b')]()]+']',_0x5a9fc6[_0x6194('0x1c')]);_0x2aca83(_0x5a9fc6[_0x6194('0x1c')]);});});};}function emit(_0x3b247d,_0x5a178f,_0x219d2a){var _0x2af278={'uri':_0x3b247d+_0x6194('0x3c')+_0x219d2a};io['to'](util[_0x6194('0x28')](_0x6194('0x3d'),_0x5a178f))[_0x6194('0x3e')]('trigger:browser:url',_0x2af278);}exports['cs']=function(_0x529770,_0x1dde3e,_0x445a85,_0x6261ee,_0x4c4876,_0x4bc5ac,_0x2be124,_0x5a98e7){var _0x341520={};var _0x146b18={'Authorization':'Token\x20token='+_0x4bc5ac['apiKey']};_0x4bc5ac['remoteUri']=intUtil[_0x6194('0x3f')](_0x4bc5ac[_0x6194('0x40')]);_0x4bc5ac[_0x6194('0x41')]=intUtil[_0x6194('0x3f')](_0x4bc5ac['serverUrl']);var _0x5b82a6=_0x4bc5ac[_0x6194('0x40')];_0x341520['adminEmail']=_0x4bc5ac['username'];_0x341520['contactNumber']=_0x5a98e7['toLowerCase']()===_0x6194('0x42')?_0x1dde3e[_0x6194('0x43')]:_0x1dde3e[_0x6194('0x44')];_0x341520[_0x6194('0x45')]=_0x5a98e7===_0x6194('0x46')||_0x5a98e7===_0x6194('0x47')?_0x6194('0x46'):_0x6194('0x42');if(_0x6261ee){_0x341520[_0x6194('0x1f')]=_0x6261ee['email'];}var _0x12fed7=util[_0x6194('0x28')](_0x6194('0x48'),_0x4bc5ac[_0x6194('0x41')],_0x1dde3e[_0x6194('0x49')],md5(_0x1dde3e[_0x6194('0x49')]));if(_0x4c4876&&_0x4c4876[_0x6194('0x4a')]){logger[_0x6194('0x10')](_0x6194('0x4b'),'Recording\x20is\x20enabled!');_0x1dde3e['recordingURL']=_0x12fed7;}else if(_0x2be124&&_0x2be124[_0x6194('0x4c')]&&_0x2be124[_0x6194('0x4c')]!==_0x6194('0x4d')){logger[_0x6194('0x10')](_0x6194('0x4e'),'Recording\x20is\x20enabled!');_0x1dde3e[_0x6194('0x4f')]=_0x12fed7;}else{_0x1dde3e[_0x6194('0x4f')]='';}return getAdminId(_0x341520,_0x5a98e7,_0x146b18,_0x5b82a6)['then'](getUser(_0x5a98e7,_0x146b18,_0x5b82a6))[_0x6194('0x12')](getEndUser(_0x5a98e7,_0x146b18,_0x5b82a6))['then'](getTicket(_0x5a98e7,_0x146b18,_0x5b82a6,_0x445a85,_0x1dde3e))[_0x6194('0x12')](function(_0x9cfd20){logger[_0x6194('0x10')](util[_0x6194('0x28')](_0x6194('0x50'),_0x9cfd20[_0x6194('0x3a')]));if(_0x5a98e7!=='unmanaged'){logger[_0x6194('0x10')]('['+[_0x5a98e7[_0x6194('0x1b')]()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x5b82a6,_0x6261ee[_0x6194('0x51')],_0x9cfd20['endUserId']);}})[_0x6194('0x19')](function(_0x19cab3){logger[_0x6194('0x1a')]('['+[_0x5a98e7[_0x6194('0x1b')]()]+_0x6194('0x52'),util['inspect'](_0x19cab3,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 32c3309..fa125cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x341a=['freshsales','data1','toLowerCase','find','queue','routeId','outbound','log','EVENT\x20UNKNOWN','unmanaged','zoho','servicenow','../../../../config/logger','error','[EXEC]','%s\x20configuration\x20#%s\x20not\x20found','format','%s\x20account\x20#%s\x20not\x20found','lodash','util','./salesforce','./freshdesk','./zoho','./desk','./vtiger','./servicenow','./dynamics365','./freshsales','salesforce','sugarcrm','freshdesk','desk','dynamics365'];(function(_0x38b14f,_0xd08fa8){var _0x22a324=function(_0x4bbb05){while(--_0x4bbb05){_0x38b14f['push'](_0x38b14f['shift']());}};_0x22a324(++_0xd08fa8);}(_0x341a,0xf9));var _0xa341=function(_0x556320,_0xed1242){_0x556320=_0x556320-0x0;var _0xbf9e44=_0x341a[_0x556320];return _0xbf9e44;};'use strict';var _=require(_0xa341('0x0'));var util=require(_0xa341('0x1'));var zendesk=require('./zendesk');var salesforce=require(_0xa341('0x2'));var sugarcrm=require('./sugarcrm');var freshdesk=require(_0xa341('0x3'));var zoho=require(_0xa341('0x4'));var desk=require(_0xa341('0x5'));var vtiger=require(_0xa341('0x6'));var servicenow=require(_0xa341('0x7'));var dynamics365=require(_0xa341('0x8'));var freshsales=require(_0xa341('0x9'));var integrations=['zendesk',_0xa341('0xa'),_0xa341('0xb'),_0xa341('0xc'),'zoho',_0xa341('0xd'),'vtiger',_0xa341('0xe'),_0xa341('0xf'),'servicenow'];exports['exec']=function(_0x2dde85,_0x35c007,_0xda9c82,_0x245776,_0xe4eb14,_0x484543){if(_0xda9c82){if(_['includes'](integrations,_0x2dde85[_0xa341('0x10')][_0xa341('0x11')]())){try{var _0x260079=null;var _0xb560b='';var _0x19a516=_0xda9c82[_0x2dde85[_0xa341('0x10')][_0xa341('0x11')]()];if(_0x19a516){var _0x187b88=_0x19a516[_0x2dde85['data2']];if(_0x187b88){var _0x15157e=_[_0xa341('0x12')](_0x187b88['Configurations'],{'id':parseInt(_0x2dde85['data3'],0xa)});if(_0x15157e){if(_0x245776){if(_0xe4eb14&&_0x35c007[_0xa341('0x13')]){_0xb560b='queue';}else if(_0x35c007[_0xa341('0x14')]){_0xb560b=_0xa341('0x15');}else{console[_0xa341('0x16')](_0xa341('0x17'),_0x35c007);}}else{_0xb560b=_0xa341('0x18');}switch(_0x2dde85[_0xa341('0x10')]['toLowerCase']()){case'zendesk':zendesk[_0xb560b](_0x2dde85,_0x35c007,_0x15157e,_0x245776,_0xe4eb14,_0x187b88,_0x484543);break;case _0xa341('0xa'):salesforce[_0xb560b](_0x2dde85,_0x35c007,_0x15157e,_0x245776,_0xe4eb14,_0x187b88,_0x484543);break;case _0xa341('0xb'):sugarcrm[_0xb560b](_0x2dde85,_0x35c007,_0x15157e,_0x245776,_0xe4eb14,_0x187b88,_0x484543);break;case _0xa341('0xc'):freshdesk[_0xb560b](_0x2dde85,_0x35c007,_0x15157e,_0x245776,_0xe4eb14,_0x187b88,_0x484543);break;case _0xa341('0x19'):zoho[_0xb560b](_0x2dde85,_0x35c007,_0x15157e,_0x245776,_0xe4eb14,_0x187b88,_0x484543);break;case _0xa341('0xd'):desk[_0xb560b](_0x2dde85,_0x35c007,_0x15157e,_0x245776,_0xe4eb14,_0x187b88,_0x484543);break;case'vtiger':vtiger[_0xb560b](_0x2dde85,_0x35c007,_0x15157e,_0x245776,_0xe4eb14,_0x187b88,_0x484543);break;case _0xa341('0xf'):freshsales['cs'](_0x2dde85,_0x35c007,_0x15157e,_0x245776,_0xe4eb14,_0x187b88,_0x484543,_0xb560b);break;case _0xa341('0x1a'):servicenow['cs'](_0x2dde85,_0x35c007,_0x15157e,_0x245776,_0xe4eb14,_0x187b88,_0x484543,_0xb560b);break;case _0xa341('0xe'):dynamics365['cs'](_0x2dde85,_0x35c007,_0x15157e,_0x245776,_0xe4eb14,_0x187b88,_0x484543,_0xb560b);break;default:console['log']('unknown\x20integration');}}else{_0x260079=require(_0xa341('0x1b'))(_0x2dde85['data1'][_0xa341('0x11')]());_0x260079[_0xa341('0x1c')](_0xa341('0x1d'),util['format'](_0xa341('0x1e'),_0x2dde85[_0xa341('0x10')][_0xa341('0x11')](),_0x2dde85['data3']));}}else{_0x260079=require(_0xa341('0x1b'))(_0x2dde85[_0xa341('0x10')][_0xa341('0x11')]());_0x260079['error'](_0xa341('0x1d'),util[_0xa341('0x1f')](_0xa341('0x20'),_0x2dde85[_0xa341('0x10')]['toLowerCase'](),_0x2dde85['data2']));}}else{}}catch(_0x1119e1){console[_0xa341('0x1c')](_0x1119e1);}}}};
\ No newline at end of file
+var _0x65ca=['lodash','util','./zendesk','./salesforce','./sugarcrm','./freshdesk','./zoho','./desk','./vtiger','./dynamics365','./freshsales','zendesk','salesforce','freshdesk','zoho','desk','vtiger','dynamics365','freshsales','includes','data1','toLowerCase','data2','find','Configurations','data3','queue','routeId','outbound','log','EVENT\x20UNKNOWN','unmanaged','sugarcrm','unknown\x20integration','error','[EXEC]','%s\x20configuration\x20#%s\x20not\x20found','../../../../config/logger','format','%s\x20account\x20#%s\x20not\x20found'];(function(_0x30ae5e,_0x391fc4){var _0x1f2e93=function(_0x60307d){while(--_0x60307d){_0x30ae5e['push'](_0x30ae5e['shift']());}};_0x1f2e93(++_0x391fc4);}(_0x65ca,0x140));var _0xa65c=function(_0x709665,_0x2596cb){_0x709665=_0x709665-0x0;var _0x31ef83=_0x65ca[_0x709665];return _0x31ef83;};'use strict';var _=require(_0xa65c('0x0'));var util=require(_0xa65c('0x1'));var zendesk=require(_0xa65c('0x2'));var salesforce=require(_0xa65c('0x3'));var sugarcrm=require(_0xa65c('0x4'));var freshdesk=require(_0xa65c('0x5'));var zoho=require(_0xa65c('0x6'));var desk=require(_0xa65c('0x7'));var vtiger=require(_0xa65c('0x8'));var servicenow=require('./servicenow');var dynamics365=require(_0xa65c('0x9'));var freshsales=require(_0xa65c('0xa'));var integrations=[_0xa65c('0xb'),_0xa65c('0xc'),'sugarcrm',_0xa65c('0xd'),_0xa65c('0xe'),_0xa65c('0xf'),_0xa65c('0x10'),_0xa65c('0x11'),_0xa65c('0x12'),'servicenow'];exports['exec']=function(_0x59e610,_0xc1f0bf,_0x487f5f,_0x1b245e,_0x263f8e,_0x5517c1){if(_0x487f5f){if(_[_0xa65c('0x13')](integrations,_0x59e610[_0xa65c('0x14')][_0xa65c('0x15')]())){try{var _0x3781cf=null;var _0x25aafe='';var _0x3a6c38=_0x487f5f[_0x59e610['data1'][_0xa65c('0x15')]()];if(_0x3a6c38){var _0x299977=_0x3a6c38[_0x59e610[_0xa65c('0x16')]];if(_0x299977){var _0x1b116f=_[_0xa65c('0x17')](_0x299977[_0xa65c('0x18')],{'id':parseInt(_0x59e610[_0xa65c('0x19')],0xa)});if(_0x1b116f){if(_0x1b245e){if(_0x263f8e&&_0xc1f0bf[_0xa65c('0x1a')]){_0x25aafe='queue';}else if(_0xc1f0bf[_0xa65c('0x1b')]){_0x25aafe=_0xa65c('0x1c');}else{console[_0xa65c('0x1d')](_0xa65c('0x1e'),_0xc1f0bf);}}else{_0x25aafe=_0xa65c('0x1f');}switch(_0x59e610[_0xa65c('0x14')][_0xa65c('0x15')]()){case'zendesk':zendesk[_0x25aafe](_0x59e610,_0xc1f0bf,_0x1b116f,_0x1b245e,_0x263f8e,_0x299977,_0x5517c1);break;case _0xa65c('0xc'):salesforce[_0x25aafe](_0x59e610,_0xc1f0bf,_0x1b116f,_0x1b245e,_0x263f8e,_0x299977,_0x5517c1);break;case _0xa65c('0x20'):sugarcrm[_0x25aafe](_0x59e610,_0xc1f0bf,_0x1b116f,_0x1b245e,_0x263f8e,_0x299977,_0x5517c1);break;case _0xa65c('0xd'):freshdesk[_0x25aafe](_0x59e610,_0xc1f0bf,_0x1b116f,_0x1b245e,_0x263f8e,_0x299977,_0x5517c1);break;case _0xa65c('0xe'):zoho[_0x25aafe](_0x59e610,_0xc1f0bf,_0x1b116f,_0x1b245e,_0x263f8e,_0x299977,_0x5517c1);break;case'desk':desk[_0x25aafe](_0x59e610,_0xc1f0bf,_0x1b116f,_0x1b245e,_0x263f8e,_0x299977,_0x5517c1);break;case _0xa65c('0x10'):vtiger[_0x25aafe](_0x59e610,_0xc1f0bf,_0x1b116f,_0x1b245e,_0x263f8e,_0x299977,_0x5517c1);break;case'freshsales':freshsales['cs'](_0x59e610,_0xc1f0bf,_0x1b116f,_0x1b245e,_0x263f8e,_0x299977,_0x5517c1,_0x25aafe);break;case'servicenow':servicenow['cs'](_0x59e610,_0xc1f0bf,_0x1b116f,_0x1b245e,_0x263f8e,_0x299977,_0x5517c1,_0x25aafe);break;case _0xa65c('0x11'):dynamics365['cs'](_0x59e610,_0xc1f0bf,_0x1b116f,_0x1b245e,_0x263f8e,_0x299977,_0x5517c1,_0x25aafe);break;default:console[_0xa65c('0x1d')](_0xa65c('0x21'));}}else{_0x3781cf=require('../../../../config/logger')(_0x59e610[_0xa65c('0x14')]['toLowerCase']());_0x3781cf[_0xa65c('0x22')](_0xa65c('0x23'),util['format'](_0xa65c('0x24'),_0x59e610['data1'][_0xa65c('0x15')](),_0x59e610[_0xa65c('0x19')]));}}else{_0x3781cf=require(_0xa65c('0x25'))(_0x59e610[_0xa65c('0x14')]['toLowerCase']());_0x3781cf[_0xa65c('0x22')](_0xa65c('0x23'),util[_0xa65c('0x26')](_0xa65c('0x27'),_0x59e610[_0xa65c('0x14')]['toLowerCase'](),_0x59e610[_0xa65c('0x16')]));}}else{}}catch(_0x161f50){console[_0xa65c('0x22')](_0x161f50);}}}};
\ No newline at end of file
index e0b860b..7ae9ce8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b36=['format','Caller\x20-\x20%s','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','Company','No\x20Company','upperFirst','forEach','includes','idField','content','variable','variableName','toString','customVariable','Variable','name','password','concat','securityToken','Connection','https://login.salesforce.com','clientId','clientSecret','login','username','Connection\x20established.','queue','serverUrl','stripTrailingSlash','remoteUri','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridname','calleridnum','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','user:%s','trigger:salesforce:display','trigger:browser:url','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','outbound','recordingFormat','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','newTab','Salesforce\x20account\x20type\x20not\x20recognized','lastevent','toUpperCase',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','jsforce','ioredis','./util','../../../../config/environment','../../../../config/logger','salesforce','defaults','redis','socket.io-emitter','emit','assign','getString','Subjects','Descriptions','ticketType','Task','ActivityDate','utc','IsReminderSet','IsRecurrence','endUserType','contact','lead','WhoId','WhatId','Case','ContactId','account','AccountId','leadId','info','create','isNil','validateEmail','sobject','find','execute','length','Email','Agent\x20%s\x20found.','resolve','Name','identity','display_name','then','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','merge','Contact','additionalSearchLead','additionalSearchAccount','Account','$or','Lead','first','Phone','attributes','type','toLowerCase','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','LastName','<unknown>'];(function(_0x5072b1,_0x590207){var _0x138fa1=function(_0x1a746d){while(--_0x1a746d){_0x5072b1['push'](_0x5072b1['shift']());}};_0x138fa1(++_0x590207);}(_0x7b36,0xc4));var _0x67b3=function(_0x47af9e,_0x92ac96){_0x47af9e=_0x47af9e-0x0;var _0x57be44=_0x7b36[_0x47af9e];return _0x57be44;};'use strict';var _=require(_0x67b3('0x0'));var rp=require(_0x67b3('0x1'));var moment=require('moment');var BPromise=require('bluebird');var md5=require('md5');var jsforce=require(_0x67b3('0x2'));var util=require('util');var Redis=require(_0x67b3('0x3'));var intUtil=require(_0x67b3('0x4'));var config=require(_0x67b3('0x5'));var logger=require(_0x67b3('0x6'))(_0x67b3('0x7'));config['redis']=_[_0x67b3('0x8')](config[_0x67b3('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x67b3('0xa'))(new Redis(config['redis']));function emit(_0x44a9f8,_0x30922e,_0x113392){io['to'](_0x44a9f8)[_0x67b3('0xb')](_0x30922e,_0x113392);}function getTicket(_0x580d75,_0x2af664,_0x8f04d2,_0x2c8694,_0x2abd2f,_0x194cf3,_0x4c05e4,_0x52969f){var _0x2aaddd=Object[_0x67b3('0xc')]({},{'OwnerId':_0x2af664['id'],'Subject':intUtil[_0x67b3('0xd')](_0x2c8694[_0x67b3('0xe')],_0x2abd2f,'\x20'),'Description':intUtil['getString'](_0x2c8694[_0x67b3('0xf')],_0x2abd2f,'\x0a')},getCustomFields(_0x194cf3,_0x2abd2f));if(_0x8f04d2){if(_0x2c8694[_0x67b3('0x10')]===_0x67b3('0x11')){_0x2aaddd[_0x67b3('0x12')]=moment[_0x67b3('0x13')]();_0x2aaddd[_0x67b3('0x14')]=![];_0x2aaddd[_0x67b3('0x15')]=![];if(_0x8f04d2[_0x67b3('0x16')]===_0x67b3('0x17')||_0x8f04d2['endUserType']===_0x67b3('0x18')){_0x2aaddd[_0x67b3('0x19')]=_0x8f04d2['id'];}else if(_0x8f04d2[_0x67b3('0x16')]==='account'){_0x2aaddd[_0x67b3('0x1a')]=_0x8f04d2['id'];}}else if(_0x2c8694[_0x67b3('0x10')]===_0x67b3('0x1b')){if(_0x8f04d2[_0x67b3('0x16')]===_0x67b3('0x17')){_0x2aaddd[_0x67b3('0x1c')]=_0x8f04d2['id'];}else if(_0x8f04d2['endUserType']===_0x67b3('0x1d')){_0x2aaddd[_0x67b3('0x1e')]=_0x8f04d2['id'];}else if(_0x8f04d2[_0x67b3('0x16')]===_0x67b3('0x18')&&_0x2c8694[_0x67b3('0x1f')]){_0x2aaddd[_0x2c8694[_0x67b3('0x1f')]]=_0x8f04d2['id'];}else{logger[_0x67b3('0x20')]('Association\x20between\x20Case\x20and\x20Lead\x20skipped');}}}return _0x4c05e4['sobject'](_0x2c8694[_0x67b3('0x10')])[_0x67b3('0x21')](_0x2aaddd);}function getUser(_0x470b63,_0x4192bc,_0x4e4036){if(!_[_0x67b3('0x22')](_0x4192bc)&&intUtil[_0x67b3('0x23')](_0x4192bc)){var _0x1f7f40={'Email':_0x4192bc};var _0x1046b3={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x4e4036[_0x67b3('0x24')]('User')[_0x67b3('0x25')](_0x1f7f40,_0x1046b3)[_0x67b3('0x26')]()['then'](function(_0x5ad8c5){if(_0x5ad8c5[_0x67b3('0x27')]){var _0x38d634=_[_0x67b3('0x25')](_0x5ad8c5,function(_0x1690ae){return _0x1690ae[_0x67b3('0x28')]===_0x4192bc;});if(_0x38d634){logger[_0x67b3('0x20')](_0x67b3('0x29'),_0x4192bc);return BPromise[_0x67b3('0x2a')]({'id':_0x38d634['Id'],'name':_0x38d634[_0x67b3('0x2b')]});}}else{logger['info']('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x4192bc);return _0x4e4036[_0x67b3('0x2c')]()['then'](function(_0x12eaa3){return BPromise[_0x67b3('0x2a')]({'id':_0x12eaa3['user_id'],'name':_0x12eaa3[_0x67b3('0x2d')]});});}});}else{logger['info']('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x4192bc);return _0x4e4036[_0x67b3('0x2c')]()[_0x67b3('0x2e')](function(_0x50e318){return BPromise['resolve']({'id':_0x50e318['user_id'],'name':_0x50e318[_0x67b3('0x2d')]});});}}function getEndUser(_0x10917c,_0x2ce9a4,_0x4119c3,_0x3a03af,_0x175414){var _0x44c68d={'$or':{'Phone':_0x3a03af}};var _0x371960={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x67b3('0x2a')]()[_0x67b3('0x2e')](function(){logger['info'](_0x67b3('0x2f'),_0x3a03af,_0x2ce9a4[_0x67b3('0x30')]);switch(_0x2ce9a4['moduleSearch']){case _0x67b3('0x31'):var _0x1932ce=_[_0x67b3('0x32')](_0x44c68d);if(_0x2ce9a4[_0x67b3('0x33')]){var _0x2fee89={};_0x2fee89[_0x2ce9a4['additionalSearchContact']]=_0x3a03af;_[_0x67b3('0x34')](_0x1932ce['$or'],_0x2fee89);}return _0x175414[_0x67b3('0x24')](_0x67b3('0x35'))[_0x67b3('0x25')](_0x1932ce,_0x371960)['execute']()[_0x67b3('0x2e')](function(_0x2ad39c){if(_0x2ad39c&&_0x2ad39c[_0x67b3('0x27')]){return _0x2ad39c;}else{var _0x406dc2=_[_0x67b3('0x32')](_0x44c68d);if(_0x2ce9a4[_0x67b3('0x36')]){var _0x4cda45={};_0x4cda45[_0x2ce9a4[_0x67b3('0x36')]]=_0x3a03af;_[_0x67b3('0x34')](_0x406dc2['$or'],_0x4cda45);}return _0x175414[_0x67b3('0x24')]('Lead')[_0x67b3('0x25')](_0x406dc2,_0x371960);}});case'account_contact_lead':var _0x31f2b9=_['cloneDeep'](_0x44c68d);if(_0x2ce9a4[_0x67b3('0x37')]){var _0x2fee89={};_0x2fee89[_0x2ce9a4['additionalSearchAccount']]=_0x3a03af;_[_0x67b3('0x34')](_0x31f2b9['$or'],_0x2fee89);}return _0x175414[_0x67b3('0x24')](_0x67b3('0x38'))[_0x67b3('0x25')](_0x31f2b9,_0x371960)[_0x67b3('0x26')]()[_0x67b3('0x2e')](function(_0x24b395){if(_0x24b395&&_0x24b395[_0x67b3('0x27')]){return _0x24b395;}else{var _0x3a6ded=_[_0x67b3('0x32')](_0x44c68d);if(_0x2ce9a4['additionalSearchContact']){var _0x4920c6={};_0x4920c6[_0x2ce9a4['additionalSearchContact']]=_0x3a03af;_[_0x67b3('0x34')](_0x3a6ded['$or'],_0x4920c6);}return _0x175414[_0x67b3('0x24')](_0x67b3('0x35'))[_0x67b3('0x25')](_0x3a6ded,_0x371960)['then'](function(_0x369f23){if(_0x369f23&&_0x369f23[_0x67b3('0x27')]){return _0x369f23;}else{var _0x57c86c=_[_0x67b3('0x32')](_0x44c68d);if(_0x2ce9a4[_0x67b3('0x36')]){var _0x2eff2d={};_0x2eff2d[_0x2ce9a4['additionalSearchLead']]=_0x3a03af;_[_0x67b3('0x34')](_0x57c86c['$or'],_0x2eff2d);}return _0x175414['sobject']('Lead')[_0x67b3('0x25')](_0x57c86c,_0x371960);}});}});case _0x67b3('0x17'):var _0x1932ce=_['cloneDeep'](_0x44c68d);if(_0x2ce9a4[_0x67b3('0x33')]){var _0x2fee89={};_0x2fee89[_0x2ce9a4['additionalSearchContact']]=_0x3a03af;_[_0x67b3('0x34')](_0x1932ce[_0x67b3('0x39')],_0x2fee89);}return _0x175414[_0x67b3('0x24')](_0x67b3('0x35'))[_0x67b3('0x25')](_0x1932ce,_0x371960)['execute']();case'lead':var _0x20f0d7=_[_0x67b3('0x32')](_0x44c68d);if(_0x2ce9a4[_0x67b3('0x36')]){var _0x2fee89={};_0x2fee89[_0x2ce9a4[_0x67b3('0x36')]]=_0x3a03af;_[_0x67b3('0x34')](_0x20f0d7[_0x67b3('0x39')],_0x2fee89);}return _0x175414[_0x67b3('0x24')](_0x67b3('0x3a'))[_0x67b3('0x25')](_0x20f0d7,_0x371960);case _0x67b3('0x1d'):var _0x31f2b9=_[_0x67b3('0x32')](_0x44c68d);if(_0x2ce9a4[_0x67b3('0x37')]){var _0x2fee89={};_0x2fee89[_0x2ce9a4['additionalSearchAccount']]=_0x3a03af;_[_0x67b3('0x34')](_0x31f2b9[_0x67b3('0x39')],_0x2fee89);}return _0x175414['sobject']('Account')['find'](_0x31f2b9,_0x371960);default:return null;}})[_0x67b3('0x2e')](function(_0x4ff237){if(_0x4ff237&&_0x4ff237['length']){var _0x213702=_[_0x67b3('0x3b')](_0x4ff237);if(_0x213702){return BPromise[_0x67b3('0x2a')]({'id':_0x213702['Id'],'name':_0x213702[_0x67b3('0x2b')],'phone':_0x213702[_0x67b3('0x3c')],'endUserType':_0x213702[_0x67b3('0x3d')][_0x67b3('0x3e')][_0x67b3('0x3f')]()});}}})['then'](function(_0x4580a6){if(_0x4580a6){logger[_0x67b3('0x20')]('Enduser\x20(%s)\x20with\x20phone\x20%s\x20found',_0x4580a6[_0x67b3('0x16')],_0x3a03af);return BPromise[_0x67b3('0x2a')](_0x4580a6);}else{logger[_0x67b3('0x20')](_0x67b3('0x40'),_0x3a03af);var _0x3d7f70={'Phone':_0x3a03af};if(_0x2ce9a4[_0x67b3('0x41')]){if(_0x2ce9a4[_0x67b3('0x41')]===_0x67b3('0x17')){logger[_0x67b3('0x20')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x3a03af,_0x2ce9a4[_0x67b3('0x41')]);_0x3d7f70[_0x67b3('0x42')]=_0x4119c3!==_0x67b3('0x43')?_0x4119c3:util[_0x67b3('0x44')](_0x67b3('0x45'),_0x3a03af);}else if(_0x2ce9a4[_0x67b3('0x41')]==='lead'){logger[_0x67b3('0x20')](_0x67b3('0x46'),_0x3a03af,_0x2ce9a4['moduleCreate']);_0x3d7f70['LastName']=_0x4119c3!==_0x67b3('0x43')?_0x4119c3:util[_0x67b3('0x44')](_0x67b3('0x45'),_0x3a03af);_0x3d7f70[_0x67b3('0x47')]=_0x67b3('0x48');}else if(_0x2ce9a4[_0x67b3('0x41')]===_0x67b3('0x1d')){logger[_0x67b3('0x20')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x3a03af,_0x2ce9a4['moduleCreate']);_0x3d7f70[_0x67b3('0x2b')]=_0x4119c3!==_0x67b3('0x43')?_0x4119c3:util[_0x67b3('0x44')](_0x67b3('0x45'),_0x3a03af);}else{return null;}}return _0x175414[_0x67b3('0x24')](_[_0x67b3('0x49')](_0x2ce9a4[_0x67b3('0x41')]))['create'](_0x3d7f70)[_0x67b3('0x2e')](function(_0x1d14b4){return BPromise[_0x67b3('0x2a')]({'id':_0x1d14b4['id'],'endUserType':_0x2ce9a4[_0x67b3('0x41')]});});}});}function getCustomFields(_0x592b14,_0x3b1454){var _0x11bd23={};if(_0x592b14[_0x67b3('0x27')]>0x0){_[_0x67b3('0x4a')](_0x592b14,function(_0x169dde){if(_[_0x67b3('0x4b')](['string','picklist'],_0x169dde[_0x67b3('0x3e')])&&_0x169dde['idField']){_0x11bd23[_0x169dde[_0x67b3('0x4c')]]=_0x169dde[_0x67b3('0x4d')]['toString']();}else if(_0x169dde[_0x67b3('0x3e')]===_0x67b3('0x4e')&&_0x169dde[_0x67b3('0x4f')]&&_0x169dde['idField']){_0x3b1454[_0x169dde['variableName']]&&(_0x11bd23[_0x169dde['idField']]=_0x3b1454[_0x169dde['variableName']][_0x67b3('0x50')]());}else if(_0x169dde[_0x67b3('0x3e')]===_0x67b3('0x51')&&_0x169dde['Variable']&&_0x169dde[_0x67b3('0x52')][_0x67b3('0x53')]&&_0x169dde[_0x67b3('0x4c')]){_0x3b1454[_0x169dde[_0x67b3('0x52')][_0x67b3('0x53')]['toLowerCase']()]&&(_0x11bd23[_0x169dde[_0x67b3('0x4c')]]=_0x3b1454[_0x169dde[_0x67b3('0x52')]['name']['toLowerCase']()]['toString']());}});}return _0x11bd23;}function getConnection(_0x11ea6d){var _0x269cdd=_0x11ea6d[_0x67b3('0x54')][_0x67b3('0x55')](_0x11ea6d[_0x67b3('0x56')]);var _0x5c0ed8=new jsforce[(_0x67b3('0x57'))]({'oauth2':{'loginUrl':_0x11ea6d['remoteUri']||_0x67b3('0x58'),'clientId':_0x11ea6d[_0x67b3('0x59')],'clientSecret':_0x11ea6d[_0x67b3('0x5a')]}});return _0x5c0ed8[_0x67b3('0x5b')](_0x11ea6d[_0x67b3('0x5c')],_0x269cdd)[_0x67b3('0x2e')](function(){logger[_0x67b3('0x20')](_0x67b3('0x5d'));return _0x5c0ed8;});}exports[_0x67b3('0x5e')]=function(_0x53e22d,_0x54b333,_0x24f1a5,_0xcb6de3,_0x1c4354,_0x4eb1a5){var _0x35c9f9,_0x53d1b5,_0x2c2740,_0x402612;_0x4eb1a5[_0x67b3('0x5f')]=intUtil[_0x67b3('0x60')](_0x4eb1a5[_0x67b3('0x5f')]);_0x4eb1a5[_0x67b3('0x61')]=intUtil[_0x67b3('0x60')](_0x4eb1a5['remoteUri']);if(_0x1c4354&&_0x1c4354[_0x67b3('0x62')]){logger['info'](_0x67b3('0x63'),'Recording\x20is\x20enabled!');_0x54b333[_0x67b3('0x64')]=util[_0x67b3('0x44')](_0x67b3('0x65'),_0x4eb1a5[_0x67b3('0x5f')],_0x54b333[_0x67b3('0x66')],md5(_0x54b333[_0x67b3('0x66')]));}else{_0x54b333[_0x67b3('0x64')]='';}return getConnection(_0x4eb1a5)['then'](function(_0x4b0a10){_0x402612=_0x4b0a10;return getUser(_0x4eb1a5,_0xcb6de3[_0x67b3('0x67')],_0x402612);})[_0x67b3('0x2e')](function(_0x53fe55){_0x35c9f9=_0x53fe55;return getEndUser(_0x4eb1a5,_0x24f1a5,_0x54b333[_0x67b3('0x68')],_0x54b333[_0x67b3('0x69')],_0x402612);})[_0x67b3('0x2e')](function(_0x2b196f){_0x53d1b5=_0x2b196f;return getTicket(_0x4eb1a5,_0x35c9f9,_0x53d1b5,_0x24f1a5,_0x54b333,_0x24f1a5[_0x67b3('0x6a')],_0x402612,'queue');})[_0x67b3('0x2e')](function(_0x1b4451){_0x2c2740=_0x1b4451;logger[_0x67b3('0x20')](_0x67b3('0x6b'),_0x2c2740['id']);logger[_0x67b3('0x20')](_0x67b3('0x6c'),_0x2c2740['id'],_0xcb6de3[_0x67b3('0x53')],_0x4eb1a5[_0x67b3('0x3e')]);switch(_0x4eb1a5['type']){case'integrationTab':emit(util[_0x67b3('0x44')](_0x67b3('0x6d'),_0xcb6de3[_0x67b3('0x53')]),_0x67b3('0x6e'),{'recordId':_0x2c2740['id']});break;case'newTab':emit(util[_0x67b3('0x44')](_0x67b3('0x6d'),_0xcb6de3['name']),_0x67b3('0x6f'),{'uri':util['format'](_0x67b3('0x70'),_0x402612[_0x67b3('0x71')],_0x2c2740['id'])});break;default:logger[_0x67b3('0x72')](_0x67b3('0x73'));}})[_0x67b3('0x74')](function(_0x3672ec){logger[_0x67b3('0x72')](_0x67b3('0x63'),_0x3672ec);});};exports[_0x67b3('0x75')]=function(_0x21dac8,_0x372892,_0x212c2e,_0x4596bc,_0x158cf5,_0x1b578f,_0x5b3500){var _0x433890,_0x1d3baf,_0x3b1154,_0x317d8a;_0x1b578f[_0x67b3('0x5f')]=intUtil[_0x67b3('0x60')](_0x1b578f['serverUrl']);_0x1b578f['remoteUri']=intUtil[_0x67b3('0x60')](_0x1b578f[_0x67b3('0x61')]);if(_0x5b3500&&_0x5b3500[_0x67b3('0x76')]&&_0x5b3500['recordingFormat']!=='none'){logger[_0x67b3('0x20')](_0x67b3('0x77'),_0x67b3('0x78'));_0x372892[_0x67b3('0x64')]=util[_0x67b3('0x44')](_0x67b3('0x65'),_0x1b578f[_0x67b3('0x5f')],_0x372892['uniqueid'],md5(_0x372892[_0x67b3('0x66')]));}return getConnection(_0x1b578f)[_0x67b3('0x2e')](function(_0x37dc65){_0x317d8a=_0x37dc65;return getUser(_0x1b578f,_0x4596bc[_0x67b3('0x67')],_0x317d8a);})[_0x67b3('0x2e')](function(_0x3d75b3){_0x433890=_0x3d75b3;return getEndUser(_0x1b578f,_0x212c2e,_0x372892[_0x67b3('0x79')],_0x372892[_0x67b3('0x7a')],_0x317d8a);})[_0x67b3('0x2e')](function(_0x9435c9){_0x1d3baf=_0x9435c9;return getTicket(_0x1b578f,_0x433890,_0x1d3baf,_0x212c2e,_0x372892,_0x212c2e[_0x67b3('0x6a')],_0x317d8a,'outbound');})['then'](function(_0x109731){_0x3b1154=_0x109731;logger[_0x67b3('0x20')](_0x67b3('0x7b'),_0x3b1154['id']);logger[_0x67b3('0x20')](_0x67b3('0x7c'),_0x3b1154['id'],_0x4596bc['name'],_0x1b578f[_0x67b3('0x3e')]);switch(_0x1b578f['type']){case _0x67b3('0x7d'):emit(util[_0x67b3('0x44')](_0x67b3('0x6d'),_0x4596bc[_0x67b3('0x53')]),_0x67b3('0x6e'),{'recordId':_0x3b1154['id']});break;case _0x67b3('0x7e'):emit(util[_0x67b3('0x44')](_0x67b3('0x6d'),_0x4596bc['name']),_0x67b3('0x6f'),{'uri':util[_0x67b3('0x44')](_0x67b3('0x70'),_0x317d8a[_0x67b3('0x71')],_0x3b1154['id'])});break;default:logger['error'](_0x67b3('0x77'),_0x67b3('0x7f'));}})[_0x67b3('0x74')](function(_0x514c24){logger[_0x67b3('0x72')](_0x67b3('0x77'),_0x514c24);});};exports['unmanaged']=function(_0x5d552c,_0x25766f,_0x553a18,_0x559f7f,_0x4da803,_0x927614){var _0x44afe4,_0x243bf7,_0xd5a55f,_0x547865;_0x927614[_0x67b3('0x5f')]=intUtil['stripTrailingSlash'](_0x927614[_0x67b3('0x5f')]);_0x927614['remoteUri']=intUtil['stripTrailingSlash'](_0x927614[_0x67b3('0x61')]);if(_0x4da803&&_0x4da803['monitor_format']){logger[_0x67b3('0x20')]('['+_0x25766f[_0x67b3('0x80')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x25766f['recordingURL']=util['format'](_0x67b3('0x65'),_0x927614[_0x67b3('0x5f')],_0x25766f[_0x67b3('0x66')],md5(_0x25766f[_0x67b3('0x66')]));}else{_0x25766f[_0x67b3('0x64')]='';}return getConnection(_0x927614)[_0x67b3('0x2e')](function(_0x8e1732){_0x547865=_0x8e1732;if(!_[_0x67b3('0x22')](_0x559f7f)){return getUser(_0x927614,_0x559f7f[_0x67b3('0x53')],_0x547865);}else{return getUser(_0x927614,null,_0x547865);}})['then'](function(_0x21c3ee){_0x44afe4=_0x21c3ee;return getEndUser(_0x927614,_0x553a18,_0x25766f['calleridname'],_0x25766f['calleridnum'],_0x547865);})[_0x67b3('0x2e')](function(_0x42d68f){_0x243bf7=_0x42d68f;return getTicket(_0x927614,_0x44afe4,_0x243bf7,_0x553a18,_0x25766f,_0x553a18[_0x67b3('0x6a')],_0x547865);})[_0x67b3('0x2e')](function(_0x357f06){_0xd5a55f=_0x357f06;logger[_0x67b3('0x20')]('['+_0x25766f[_0x67b3('0x80')][_0x67b3('0x81')]()+_0x67b3('0x82'),_0xd5a55f['id']);logger[_0x67b3('0x20')]('['+_0x25766f[_0x67b3('0x80')][_0x67b3('0x81')]()+_0x67b3('0x83'),_0x927614[_0x67b3('0x3e')]);})[_0x67b3('0x74')](function(_0x208acf){logger[_0x67b3('0x72')]('['+_0x25766f[_0x67b3('0x80')]['toUpperCase']()+']',_0x208acf);});};
\ No newline at end of file
+var _0x8597=['securityToken','Connection','remoteUri','clientId','clientSecret','login','Connection\x20established.','queue','serverUrl','stripTrailingSlash','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridnum','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','user:%s','newTab','trigger:browser:url','%s/%s/e','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','outbound','recordingFormat','none','[OUTBOUND]','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','instanceUrl','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','lastevent','toUpperCase','calleridname',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','lodash','moment','bluebird','md5','jsforce','ioredis','./util','../../../../config/logger','salesforce','redis','socket.io-emitter','emit','assign','getString','Subjects','Descriptions','ticketType','Task','ActivityDate','utc','IsRecurrence','endUserType','lead','WhoId','account','WhatId','contact','ContactId','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','find','execute','then','length','Agent\x20%s\x20found.','resolve','Name','identity','user_id','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','merge','$or','Contact','additionalSearchLead','Lead','account_contact_lead','additionalSearchAccount','Account','first','Phone','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>','format','Caller\x20-\x20%s','Company','No\x20Company','upperFirst','forEach','includes','string','picklist','type','idField','content','toString','variable','variableName','customVariable','Variable','name','password','concat'];(function(_0x3661f,_0x4c8301){var _0x23dd71=function(_0x2877dc){while(--_0x2877dc){_0x3661f['push'](_0x3661f['shift']());}};_0x23dd71(++_0x4c8301);}(_0x8597,0xaa));var _0x7859=function(_0x2d8434,_0x43d781){_0x2d8434=_0x2d8434-0x0;var _0x26b9e4=_0x8597[_0x2d8434];return _0x26b9e4;};'use strict';var _=require(_0x7859('0x0'));var rp=require('request-promise');var moment=require(_0x7859('0x1'));var BPromise=require(_0x7859('0x2'));var md5=require(_0x7859('0x3'));var jsforce=require(_0x7859('0x4'));var util=require('util');var Redis=require(_0x7859('0x5'));var intUtil=require(_0x7859('0x6'));var config=require('../../../../config/environment');var logger=require(_0x7859('0x7'))(_0x7859('0x8'));config['redis']=_['defaults'](config[_0x7859('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x7859('0xa'))(new Redis(config[_0x7859('0x9')]));function emit(_0x20e0c5,_0xa661bf,_0x25e6bd){io['to'](_0x20e0c5)[_0x7859('0xb')](_0xa661bf,_0x25e6bd);}function getTicket(_0x174ba4,_0x1060be,_0x3f1caa,_0x343e2a,_0x135322,_0xaeac22,_0xc29624,_0x3a7a8d){var _0x34b1c5=Object[_0x7859('0xc')]({},{'OwnerId':_0x1060be['id'],'Subject':intUtil[_0x7859('0xd')](_0x343e2a[_0x7859('0xe')],_0x135322,'\x20'),'Description':intUtil[_0x7859('0xd')](_0x343e2a[_0x7859('0xf')],_0x135322,'\x0a')},getCustomFields(_0xaeac22,_0x135322));if(_0x3f1caa){if(_0x343e2a[_0x7859('0x10')]===_0x7859('0x11')){_0x34b1c5[_0x7859('0x12')]=moment[_0x7859('0x13')]();_0x34b1c5['IsReminderSet']=![];_0x34b1c5[_0x7859('0x14')]=![];if(_0x3f1caa[_0x7859('0x15')]==='contact'||_0x3f1caa['endUserType']===_0x7859('0x16')){_0x34b1c5[_0x7859('0x17')]=_0x3f1caa['id'];}else if(_0x3f1caa[_0x7859('0x15')]===_0x7859('0x18')){_0x34b1c5[_0x7859('0x19')]=_0x3f1caa['id'];}}else if(_0x343e2a[_0x7859('0x10')]==='Case'){if(_0x3f1caa['endUserType']===_0x7859('0x1a')){_0x34b1c5[_0x7859('0x1b')]=_0x3f1caa['id'];}else if(_0x3f1caa[_0x7859('0x15')]===_0x7859('0x18')){_0x34b1c5[_0x7859('0x1c')]=_0x3f1caa['id'];}else if(_0x3f1caa[_0x7859('0x15')]===_0x7859('0x16')&&_0x343e2a[_0x7859('0x1d')]){_0x34b1c5[_0x343e2a['leadId']]=_0x3f1caa['id'];}else{logger[_0x7859('0x1e')](_0x7859('0x1f'));}}}return _0xc29624[_0x7859('0x20')](_0x343e2a[_0x7859('0x10')])[_0x7859('0x21')](_0x34b1c5);}function getUser(_0x2ee61e,_0x455a4e,_0xf00214){if(!_[_0x7859('0x22')](_0x455a4e)&&intUtil['validateEmail'](_0x455a4e)){var _0x457e30={'Email':_0x455a4e};var _0x1b6458={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0xf00214[_0x7859('0x20')]('User')[_0x7859('0x23')](_0x457e30,_0x1b6458)[_0x7859('0x24')]()[_0x7859('0x25')](function(_0x1c3bcd){if(_0x1c3bcd[_0x7859('0x26')]){var _0x5a1394=_['find'](_0x1c3bcd,function(_0x23f037){return _0x23f037['Email']===_0x455a4e;});if(_0x5a1394){logger[_0x7859('0x1e')](_0x7859('0x27'),_0x455a4e);return BPromise[_0x7859('0x28')]({'id':_0x5a1394['Id'],'name':_0x5a1394[_0x7859('0x29')]});}}else{logger[_0x7859('0x1e')]('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x455a4e);return _0xf00214[_0x7859('0x2a')]()[_0x7859('0x25')](function(_0x24eb56){return BPromise['resolve']({'id':_0x24eb56[_0x7859('0x2b')],'name':_0x24eb56['display_name']});});}});}else{logger['info'](_0x7859('0x2c'),_0x455a4e);return _0xf00214[_0x7859('0x2a')]()[_0x7859('0x25')](function(_0x47536c){return BPromise[_0x7859('0x28')]({'id':_0x47536c[_0x7859('0x2b')],'name':_0x47536c[_0x7859('0x2d')]});});}}function getEndUser(_0x11605b,_0x3f3fc2,_0x37afdd,_0x4b3c68,_0x3a7f77){var _0x3479e8={'$or':{'Phone':_0x4b3c68}};var _0x339a9d={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x7859('0x28')]()['then'](function(){logger['info'](_0x7859('0x2e'),_0x4b3c68,_0x3f3fc2[_0x7859('0x2f')]);switch(_0x3f3fc2[_0x7859('0x2f')]){case _0x7859('0x30'):var _0x11ffc3=_[_0x7859('0x31')](_0x3479e8);if(_0x3f3fc2['additionalSearchContact']){var _0xdb1a9={};_0xdb1a9[_0x3f3fc2[_0x7859('0x32')]]=_0x4b3c68;_[_0x7859('0x33')](_0x11ffc3[_0x7859('0x34')],_0xdb1a9);}return _0x3a7f77['sobject'](_0x7859('0x35'))[_0x7859('0x23')](_0x11ffc3,_0x339a9d)['execute']()[_0x7859('0x25')](function(_0x5d6a96){if(_0x5d6a96&&_0x5d6a96[_0x7859('0x26')]){return _0x5d6a96;}else{var _0x56c5e0=_[_0x7859('0x31')](_0x3479e8);if(_0x3f3fc2['additionalSearchLead']){var _0x5f0e1e={};_0x5f0e1e[_0x3f3fc2[_0x7859('0x36')]]=_0x4b3c68;_['merge'](_0x56c5e0[_0x7859('0x34')],_0x5f0e1e);}return _0x3a7f77[_0x7859('0x20')](_0x7859('0x37'))[_0x7859('0x23')](_0x56c5e0,_0x339a9d);}});case _0x7859('0x38'):var _0x16d603=_[_0x7859('0x31')](_0x3479e8);if(_0x3f3fc2[_0x7859('0x39')]){var _0xdb1a9={};_0xdb1a9[_0x3f3fc2['additionalSearchAccount']]=_0x4b3c68;_[_0x7859('0x33')](_0x16d603['$or'],_0xdb1a9);}return _0x3a7f77[_0x7859('0x20')](_0x7859('0x3a'))[_0x7859('0x23')](_0x16d603,_0x339a9d)[_0x7859('0x24')]()[_0x7859('0x25')](function(_0x20483f){if(_0x20483f&&_0x20483f[_0x7859('0x26')]){return _0x20483f;}else{var _0x20a9d1=_[_0x7859('0x31')](_0x3479e8);if(_0x3f3fc2[_0x7859('0x32')]){var _0x2a2124={};_0x2a2124[_0x3f3fc2[_0x7859('0x32')]]=_0x4b3c68;_[_0x7859('0x33')](_0x20a9d1['$or'],_0x2a2124);}return _0x3a7f77[_0x7859('0x20')](_0x7859('0x35'))[_0x7859('0x23')](_0x20a9d1,_0x339a9d)['then'](function(_0x5ab951){if(_0x5ab951&&_0x5ab951[_0x7859('0x26')]){return _0x5ab951;}else{var _0x2f7f73=_[_0x7859('0x31')](_0x3479e8);if(_0x3f3fc2[_0x7859('0x36')]){var _0x53d89b={};_0x53d89b[_0x3f3fc2[_0x7859('0x36')]]=_0x4b3c68;_[_0x7859('0x33')](_0x2f7f73['$or'],_0x53d89b);}return _0x3a7f77[_0x7859('0x20')](_0x7859('0x37'))['find'](_0x2f7f73,_0x339a9d);}});}});case _0x7859('0x1a'):var _0x11ffc3=_[_0x7859('0x31')](_0x3479e8);if(_0x3f3fc2[_0x7859('0x32')]){var _0xdb1a9={};_0xdb1a9[_0x3f3fc2[_0x7859('0x32')]]=_0x4b3c68;_[_0x7859('0x33')](_0x11ffc3[_0x7859('0x34')],_0xdb1a9);}return _0x3a7f77[_0x7859('0x20')](_0x7859('0x35'))[_0x7859('0x23')](_0x11ffc3,_0x339a9d)[_0x7859('0x24')]();case _0x7859('0x16'):var _0x1d9430=_['cloneDeep'](_0x3479e8);if(_0x3f3fc2[_0x7859('0x36')]){var _0xdb1a9={};_0xdb1a9[_0x3f3fc2['additionalSearchLead']]=_0x4b3c68;_[_0x7859('0x33')](_0x1d9430[_0x7859('0x34')],_0xdb1a9);}return _0x3a7f77[_0x7859('0x20')]('Lead')['find'](_0x1d9430,_0x339a9d);case _0x7859('0x18'):var _0x16d603=_[_0x7859('0x31')](_0x3479e8);if(_0x3f3fc2[_0x7859('0x39')]){var _0xdb1a9={};_0xdb1a9[_0x3f3fc2[_0x7859('0x39')]]=_0x4b3c68;_[_0x7859('0x33')](_0x16d603[_0x7859('0x34')],_0xdb1a9);}return _0x3a7f77[_0x7859('0x20')](_0x7859('0x3a'))[_0x7859('0x23')](_0x16d603,_0x339a9d);default:return null;}})['then'](function(_0xa8ca80){if(_0xa8ca80&&_0xa8ca80[_0x7859('0x26')]){var _0x555de4=_[_0x7859('0x3b')](_0xa8ca80);if(_0x555de4){return BPromise['resolve']({'id':_0x555de4['Id'],'name':_0x555de4[_0x7859('0x29')],'phone':_0x555de4[_0x7859('0x3c')],'endUserType':_0x555de4['attributes']['type'][_0x7859('0x3d')]()});}}})[_0x7859('0x25')](function(_0x2091fc){if(_0x2091fc){logger[_0x7859('0x1e')](_0x7859('0x3e'),_0x2091fc[_0x7859('0x15')],_0x4b3c68);return BPromise['resolve'](_0x2091fc);}else{logger[_0x7859('0x1e')](_0x7859('0x3f'),_0x4b3c68);var _0x57a376={'Phone':_0x4b3c68};if(_0x3f3fc2[_0x7859('0x40')]){if(_0x3f3fc2[_0x7859('0x40')]==='contact'){logger[_0x7859('0x1e')](_0x7859('0x41'),_0x4b3c68,_0x3f3fc2[_0x7859('0x40')]);_0x57a376[_0x7859('0x42')]=_0x37afdd!==_0x7859('0x43')?_0x37afdd:util[_0x7859('0x44')](_0x7859('0x45'),_0x4b3c68);}else if(_0x3f3fc2[_0x7859('0x40')]===_0x7859('0x16')){logger[_0x7859('0x1e')](_0x7859('0x41'),_0x4b3c68,_0x3f3fc2[_0x7859('0x40')]);_0x57a376[_0x7859('0x42')]=_0x37afdd!==_0x7859('0x43')?_0x37afdd:util[_0x7859('0x44')](_0x7859('0x45'),_0x4b3c68);_0x57a376[_0x7859('0x46')]=_0x7859('0x47');}else if(_0x3f3fc2[_0x7859('0x40')]===_0x7859('0x18')){logger[_0x7859('0x1e')](_0x7859('0x41'),_0x4b3c68,_0x3f3fc2['moduleCreate']);_0x57a376[_0x7859('0x29')]=_0x37afdd!==_0x7859('0x43')?_0x37afdd:util[_0x7859('0x44')](_0x7859('0x45'),_0x4b3c68);}else{return null;}}return _0x3a7f77[_0x7859('0x20')](_[_0x7859('0x48')](_0x3f3fc2[_0x7859('0x40')]))[_0x7859('0x21')](_0x57a376)['then'](function(_0x439d63){return BPromise['resolve']({'id':_0x439d63['id'],'endUserType':_0x3f3fc2[_0x7859('0x40')]});});}});}function getCustomFields(_0x4a95b3,_0x2e4998){var _0x51699a={};if(_0x4a95b3[_0x7859('0x26')]>0x0){_[_0x7859('0x49')](_0x4a95b3,function(_0x9ce9bb){if(_[_0x7859('0x4a')]([_0x7859('0x4b'),_0x7859('0x4c')],_0x9ce9bb[_0x7859('0x4d')])&&_0x9ce9bb[_0x7859('0x4e')]){_0x51699a[_0x9ce9bb[_0x7859('0x4e')]]=_0x9ce9bb[_0x7859('0x4f')][_0x7859('0x50')]();}else if(_0x9ce9bb[_0x7859('0x4d')]===_0x7859('0x51')&&_0x9ce9bb[_0x7859('0x52')]&&_0x9ce9bb['idField']){_0x2e4998[_0x9ce9bb[_0x7859('0x52')]]&&(_0x51699a[_0x9ce9bb[_0x7859('0x4e')]]=_0x2e4998[_0x9ce9bb['variableName']]['toString']());}else if(_0x9ce9bb['type']===_0x7859('0x53')&&_0x9ce9bb[_0x7859('0x54')]&&_0x9ce9bb['Variable'][_0x7859('0x55')]&&_0x9ce9bb[_0x7859('0x4e')]){_0x2e4998[_0x9ce9bb[_0x7859('0x54')][_0x7859('0x55')][_0x7859('0x3d')]()]&&(_0x51699a[_0x9ce9bb[_0x7859('0x4e')]]=_0x2e4998[_0x9ce9bb[_0x7859('0x54')][_0x7859('0x55')][_0x7859('0x3d')]()][_0x7859('0x50')]());}});}return _0x51699a;}function getConnection(_0x355119){var _0x1a463c=_0x355119[_0x7859('0x56')][_0x7859('0x57')](_0x355119[_0x7859('0x58')]);var _0x18fa84=new jsforce[(_0x7859('0x59'))]({'oauth2':{'loginUrl':_0x355119[_0x7859('0x5a')]||'https://login.salesforce.com','clientId':_0x355119[_0x7859('0x5b')],'clientSecret':_0x355119[_0x7859('0x5c')]}});return _0x18fa84[_0x7859('0x5d')](_0x355119['username'],_0x1a463c)[_0x7859('0x25')](function(){logger[_0x7859('0x1e')](_0x7859('0x5e'));return _0x18fa84;});}exports[_0x7859('0x5f')]=function(_0x39ab1c,_0x16ac26,_0xf7e30e,_0x18a9a0,_0x2c5f6f,_0x10abbb){var _0x5282c3,_0x4e17d0,_0x338748,_0x405cc2;_0x10abbb[_0x7859('0x60')]=intUtil[_0x7859('0x61')](_0x10abbb[_0x7859('0x60')]);_0x10abbb[_0x7859('0x5a')]=intUtil[_0x7859('0x61')](_0x10abbb[_0x7859('0x5a')]);if(_0x2c5f6f&&_0x2c5f6f['monitor_format']){logger[_0x7859('0x1e')]('[QUEUE]',_0x7859('0x62'));_0x16ac26[_0x7859('0x63')]=util['format'](_0x7859('0x64'),_0x10abbb['serverUrl'],_0x16ac26['uniqueid'],md5(_0x16ac26[_0x7859('0x65')]));}else{_0x16ac26[_0x7859('0x63')]='';}return getConnection(_0x10abbb)[_0x7859('0x25')](function(_0x37caaa){_0x405cc2=_0x37caaa;return getUser(_0x10abbb,_0x18a9a0[_0x7859('0x66')],_0x405cc2);})[_0x7859('0x25')](function(_0x336dd0){_0x5282c3=_0x336dd0;return getEndUser(_0x10abbb,_0xf7e30e,_0x16ac26['calleridname'],_0x16ac26[_0x7859('0x67')],_0x405cc2);})['then'](function(_0x22e9c2){_0x4e17d0=_0x22e9c2;return getTicket(_0x10abbb,_0x5282c3,_0x4e17d0,_0xf7e30e,_0x16ac26,_0xf7e30e[_0x7859('0x68')],_0x405cc2,_0x7859('0x5f'));})[_0x7859('0x25')](function(_0x12bc83){_0x338748=_0x12bc83;logger[_0x7859('0x1e')](_0x7859('0x69'),_0x338748['id']);logger['info'](_0x7859('0x6a'),_0x338748['id'],_0x18a9a0[_0x7859('0x55')],_0x10abbb[_0x7859('0x4d')]);switch(_0x10abbb[_0x7859('0x4d')]){case _0x7859('0x6b'):emit(util[_0x7859('0x44')](_0x7859('0x6c'),_0x18a9a0[_0x7859('0x55')]),'trigger:salesforce:display',{'recordId':_0x338748['id']});break;case _0x7859('0x6d'):emit(util[_0x7859('0x44')]('user:%s',_0x18a9a0[_0x7859('0x55')]),_0x7859('0x6e'),{'uri':util[_0x7859('0x44')](_0x7859('0x6f'),_0x405cc2['instanceUrl'],_0x338748['id'])});break;default:logger[_0x7859('0x70')](_0x7859('0x71'));}})[_0x7859('0x72')](function(_0x32e0b0){logger[_0x7859('0x70')]('[QUEUE]',_0x32e0b0);});};exports[_0x7859('0x73')]=function(_0x143b4a,_0xd27d93,_0x5a540f,_0x36656,_0x38ca9c,_0x424323,_0x420022){var _0x5466b0,_0x128ca7,_0x53b325,_0x46e914;_0x424323[_0x7859('0x60')]=intUtil[_0x7859('0x61')](_0x424323[_0x7859('0x60')]);_0x424323[_0x7859('0x5a')]=intUtil[_0x7859('0x61')](_0x424323[_0x7859('0x5a')]);if(_0x420022&&_0x420022[_0x7859('0x74')]&&_0x420022['recordingFormat']!==_0x7859('0x75')){logger[_0x7859('0x1e')](_0x7859('0x76'),_0x7859('0x62'));_0xd27d93['recordingURL']=util[_0x7859('0x44')](_0x7859('0x64'),_0x424323[_0x7859('0x60')],_0xd27d93[_0x7859('0x65')],md5(_0xd27d93[_0x7859('0x65')]));}return getConnection(_0x424323)[_0x7859('0x25')](function(_0x12777d){_0x46e914=_0x12777d;return getUser(_0x424323,_0x36656[_0x7859('0x66')],_0x46e914);})[_0x7859('0x25')](function(_0x317aeb){_0x5466b0=_0x317aeb;return getEndUser(_0x424323,_0x5a540f,_0xd27d93['destcalleridname'],_0xd27d93['destcalleridnum'],_0x46e914);})[_0x7859('0x25')](function(_0x29f45b){_0x128ca7=_0x29f45b;return getTicket(_0x424323,_0x5466b0,_0x128ca7,_0x5a540f,_0xd27d93,_0x5a540f[_0x7859('0x68')],_0x46e914,'outbound');})[_0x7859('0x25')](function(_0x1d01e2){_0x53b325=_0x1d01e2;logger[_0x7859('0x1e')](_0x7859('0x77'),_0x53b325['id']);logger['info'](_0x7859('0x78'),_0x53b325['id'],_0x36656[_0x7859('0x55')],_0x424323[_0x7859('0x4d')]);switch(_0x424323[_0x7859('0x4d')]){case'integrationTab':emit(util[_0x7859('0x44')](_0x7859('0x6c'),_0x36656['name']),'trigger:salesforce:display',{'recordId':_0x53b325['id']});break;case'newTab':emit(util[_0x7859('0x44')](_0x7859('0x6c'),_0x36656[_0x7859('0x55')]),'trigger:browser:url',{'uri':util[_0x7859('0x44')](_0x7859('0x6f'),_0x46e914[_0x7859('0x79')],_0x53b325['id'])});break;default:logger[_0x7859('0x70')](_0x7859('0x76'),_0x7859('0x7a'));}})['catch'](function(_0x553c56){logger[_0x7859('0x70')](_0x7859('0x76'),_0x553c56);});};exports[_0x7859('0x7b')]=function(_0xb766a9,_0x2fd693,_0x4992d6,_0x47414b,_0x1e64d9,_0x2a2097){var _0x4c7fcb,_0x1c592f,_0x51c170,_0x3d67d9;_0x2a2097[_0x7859('0x60')]=intUtil[_0x7859('0x61')](_0x2a2097['serverUrl']);_0x2a2097[_0x7859('0x5a')]=intUtil[_0x7859('0x61')](_0x2a2097[_0x7859('0x5a')]);if(_0x1e64d9&&_0x1e64d9['monitor_format']){logger[_0x7859('0x1e')]('['+_0x2fd693[_0x7859('0x7c')][_0x7859('0x7d')]()+']',_0x7859('0x62'));_0x2fd693['recordingURL']=util[_0x7859('0x44')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2a2097[_0x7859('0x60')],_0x2fd693[_0x7859('0x65')],md5(_0x2fd693[_0x7859('0x65')]));}else{_0x2fd693[_0x7859('0x63')]='';}return getConnection(_0x2a2097)[_0x7859('0x25')](function(_0x4657b5){_0x3d67d9=_0x4657b5;if(!_[_0x7859('0x22')](_0x47414b)){return getUser(_0x2a2097,_0x47414b['name'],_0x3d67d9);}else{return getUser(_0x2a2097,null,_0x3d67d9);}})[_0x7859('0x25')](function(_0x3785b0){_0x4c7fcb=_0x3785b0;return getEndUser(_0x2a2097,_0x4992d6,_0x2fd693[_0x7859('0x7e')],_0x2fd693[_0x7859('0x67')],_0x3d67d9);})[_0x7859('0x25')](function(_0xf88ae1){_0x1c592f=_0xf88ae1;return getTicket(_0x2a2097,_0x4c7fcb,_0x1c592f,_0x4992d6,_0x2fd693,_0x4992d6[_0x7859('0x68')],_0x3d67d9);})[_0x7859('0x25')](function(_0x2f1656){_0x51c170=_0x2f1656;logger[_0x7859('0x1e')]('['+_0x2fd693[_0x7859('0x7c')][_0x7859('0x7d')]()+_0x7859('0x7f'),_0x51c170['id']);logger[_0x7859('0x1e')]('['+_0x2fd693[_0x7859('0x7c')][_0x7859('0x7d')]()+_0x7859('0x80'),_0x2a2097[_0x7859('0x4d')]);})[_0x7859('0x72')](function(_0x112606){logger[_0x7859('0x70')]('['+_0x2fd693[_0x7859('0x7c')][_0x7859('0x7d')]()+']',_0x112606);});};
\ No newline at end of file
index 6938b83..9b4a311 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d5c=['sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','active','true','userId','adminEmail','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','user','],\x20EndUser\x20schema','endUserId','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','string','picklist','type','nameField','toLowerCase','content','toString','idField','customField','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','getString','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','incident','ticketNumber','push','Tags','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','emit','trigger:browser:url','username','password','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','email','destcalleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','util','ioredis','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','sys_id','info','],\x20getAdminUser\x20crm','catch','error','toUpperCase','message','validateEmail','userEmail'];(function(_0x35da42,_0x5c2610){var _0x370035=function(_0x546db5){while(--_0x546db5){_0x35da42['push'](_0x35da42['shift']());}};_0x370035(++_0x5c2610);}(_0x7d5c,0xc7));var _0xc7d5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7d5c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc7d5('0x0'));var Promise=require(_0xc7d5('0x1'));var rp=require(_0xc7d5('0x2'));var util=require(_0xc7d5('0x3'));var md5=require('md5');var Redis=require(_0xc7d5('0x4'));var intUtil=require(_0xc7d5('0x5'));var config=require(_0xc7d5('0x6'));var logger=require(_0xc7d5('0x7'))(_0xc7d5('0x8'));config[_0xc7d5('0x9')]=_[_0xc7d5('0xa')](config[_0xc7d5('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0xc7d5('0xb'))(new Redis(config[_0xc7d5('0x9')]));function getAdminUser(_0x4f7b03,_0x347511,_0xc66e56,_0x5a56bf,_0x507627,_0x178b36){return new Promise(function(_0x50104e,_0x19ed06){var _0x1e8f5d={'method':_0xc7d5('0xc'),'uri':_0x5a56bf+_0xc7d5('0xd')+'&'+_0x507627+'&'+_0x178b36,'auth':_0x347511,'json':!![]};return rp(_0x1e8f5d)[_0xc7d5('0xe')](function(_0x5c2c75){if(_0x5c2c75[_0xc7d5('0xf')][_0xc7d5('0x10')]>0x0){_0xc66e56[_0xc7d5('0x11')]=_0x5c2c75[_0xc7d5('0xf')][0x0][_0xc7d5('0x12')];}logger[_0xc7d5('0x13')]('['+[_0x4f7b03['toUpperCase']()]+_0xc7d5('0x14'),_0xc66e56);_0x50104e(_0xc66e56);})[_0xc7d5('0x15')](function(_0x14fa7f){logger[_0xc7d5('0x16')]('['+[_0x4f7b03[_0xc7d5('0x17')]()]+']',_0x14fa7f[_0xc7d5('0x18')]);_0x19ed06(_0x14fa7f['message']);});});}function getUser(_0x311ae3,_0x5e04a8,_0x643396,_0x3edddf,_0x2e4282){return function(_0x569621){logger['info']('['+[_0x311ae3['toUpperCase']()]+'],\x20getUser\x20input\x20crm',_0x569621);return new Promise(function(_0x9cccc7,_0x1d8366){if(intUtil[_0xc7d5('0x19')](_0x569621[_0xc7d5('0x1a')])){var _0x55a278={'method':_0xc7d5('0xc'),'uri':_0x643396+_0xc7d5('0x1b')+_0x569621[_0xc7d5('0x1a')]+'&'+_0x3edddf+'&'+_0x2e4282,'auth':_0x5e04a8,'json':!![]};logger[_0xc7d5('0x13')]('['+[_0x311ae3[_0xc7d5('0x17')]()]+_0xc7d5('0x1c'),_0x55a278);return rp(_0x55a278)[_0xc7d5('0xe')](function(_0x181b55){logger[_0xc7d5('0x13')]('['+[_0x311ae3[_0xc7d5('0x17')]()]+_0xc7d5('0x1d'),_0x181b55);if(_0x181b55[_0xc7d5('0xf')][_0xc7d5('0x10')]>0x0&&String(_0x181b55[_0xc7d5('0xf')][0x0][_0xc7d5('0x1e')])===_0xc7d5('0x1f')){_0x569621[_0xc7d5('0x20')]=_0x181b55['result'][0x0]['sys_id'];}else{_0x569621[_0xc7d5('0x20')]=_0x569621[_0xc7d5('0x11')];_0x569621[_0xc7d5('0x1a')]=_0x569621[_0xc7d5('0x21')];}logger['info']('['+[_0x311ae3['toUpperCase']()]+_0xc7d5('0x22'),_0x569621);_0x9cccc7(_0x569621);})[_0xc7d5('0x15')](function(_0x1f1d55){logger[_0xc7d5('0x16')]('['+[_0x311ae3[_0xc7d5('0x17')]()]+']',_0x1f1d55['message']);_0x1d8366(_0x1f1d55[_0xc7d5('0x18')]);});}else{logger[_0xc7d5('0x13')]('['+[_0x311ae3[_0xc7d5('0x17')]()]+_0xc7d5('0x23'));_0x569621['userId']=_0x569621[_0xc7d5('0x11')];_0x569621[_0xc7d5('0x1a')]=_0x569621[_0xc7d5('0x21')];_0x9cccc7(_0x569621);}});};}function createEndUser(_0x31b421,_0x445554,_0x338b56,_0x231873,_0x32813a){logger['info']('['+[_0x31b421[_0xc7d5('0x17')]()]+_0xc7d5('0x24'),_0x338b56);return new Promise(function(_0x19d717,_0x1ab8d7){var _0x307cfc={'method':_0xc7d5('0x25'),'uri':_0x231873+_0xc7d5('0x26')+_0x32813a,'body':{'user_name':_0x338b56[_0xc7d5('0x27')],'roles':_0xc7d5('0x28'),'first_name':_0x338b56['endUserNumber'],'active':'true','date_format':'System','phone':_0x338b56[_0xc7d5('0x27')]},'auth':_0x445554,'json':!![]};return rp(_0x307cfc)[_0xc7d5('0xe')](function(_0x121dc7){logger[_0xc7d5('0x13')]('['+[_0x31b421[_0xc7d5('0x17')]()]+_0xc7d5('0x29'),_0x121dc7['result']);_0x338b56[_0xc7d5('0x2a')]=_0x121dc7[_0xc7d5('0xf')][_0xc7d5('0x12')];_0x19d717(_0x338b56);})[_0xc7d5('0x15')](function(_0x49574e){logger['error']('['+[_0x31b421[_0xc7d5('0x17')]()]+']',_0x49574e[_0xc7d5('0x18')]);_0x1ab8d7(_0x49574e[_0xc7d5('0x18')]);});});}function getEndUser(_0x30b28e,_0xf32e,_0x6f23a1,_0x1e0e04,_0x4274cf){return function(_0x1aa54e){logger[_0xc7d5('0x13')]('['+[_0x30b28e['toUpperCase']()]+'],\x20getEndUser\x20input\x20crm',_0x1aa54e);return new Promise(function(_0x34714c,_0x582c96){var _0x2709a9={'method':_0xc7d5('0xc'),'uri':_0x6f23a1+_0xc7d5('0x2b')+_0x1aa54e['endUserNumber']+'&'+_0x1e0e04+'&'+_0x4274cf,'auth':_0xf32e,'json':!![]};return rp(_0x2709a9)[_0xc7d5('0xe')](function(_0x1ae000){if(_0x1ae000[_0xc7d5('0xf')]['length']>0x0){_0x1aa54e[_0xc7d5('0x2a')]=_0x1ae000[_0xc7d5('0xf')][0x0][_0xc7d5('0x12')];logger[_0xc7d5('0x13')]('['+[_0x30b28e['toUpperCase']()]+_0xc7d5('0x2c'),_0x1aa54e);_0x34714c(_0x1aa54e);}else{return createEndUser(_0x30b28e,_0xf32e,_0x1aa54e,_0x6f23a1,_0x1e0e04)[_0xc7d5('0xe')](function(_0x123082){logger[_0xc7d5('0x13')]('['+[_0x30b28e[_0xc7d5('0x17')]()]+_0xc7d5('0x2d'),_0x123082);_0x34714c(_0x123082);});}})[_0xc7d5('0x15')](function(_0x2f515b){logger['error']('['+[_0x30b28e[_0xc7d5('0x17')]()]+']',_0x2f515b['message']);_0x582c96(_0x2f515b[_0xc7d5('0x18')]);});});};}function getCustomFields(_0xf8f957,_0x2c7700){var _0x1f17f9={};if(_0xf8f957[_0xc7d5('0x10')]>0x0){_[_0xc7d5('0x2e')](_0xf8f957,function(_0xd0b2de){if(_[_0xc7d5('0x2f')]([_0xc7d5('0x30'),_0xc7d5('0x31')],_0xd0b2de[_0xc7d5('0x32')])&&_0xd0b2de[_0xc7d5('0x33')]&&!_0xd0b2de['customField']){_0x1f17f9[_0xd0b2de[_0xc7d5('0x33')][_0xc7d5('0x34')]()]=_0xd0b2de[_0xc7d5('0x35')][_0xc7d5('0x36')]();}else if(_[_0xc7d5('0x2f')]([_0xc7d5('0x30'),'picklist'],_0xd0b2de[_0xc7d5('0x32')])&&_0xd0b2de[_0xc7d5('0x37')]&&_0xd0b2de[_0xc7d5('0x38')]){_0x1f17f9[_0xd0b2de[_0xc7d5('0x37')]['toLowerCase']()]=_0xd0b2de[_0xc7d5('0x35')][_0xc7d5('0x36')]();}else if(_0xd0b2de[_0xc7d5('0x32')]==='variable'&&_0xd0b2de[_0xc7d5('0x39')]&&_0xd0b2de[_0xc7d5('0x37')]&&_0xd0b2de[_0xc7d5('0x38')]){_0x1f17f9[_0xd0b2de['idField'][_0xc7d5('0x34')]()]=_0x2c7700[_0xd0b2de[_0xc7d5('0x39')]][_0xc7d5('0x36')]();}else if(_0xd0b2de['type']===_0xc7d5('0x3a')&&_0xd0b2de[_0xc7d5('0x3b')]&&_0xd0b2de['Variable'][_0xc7d5('0x3c')]&&_0xd0b2de[_0xc7d5('0x37')]&&_0xd0b2de[_0xc7d5('0x38')]){_0x1f17f9[_0xd0b2de[_0xc7d5('0x37')]['toLowerCase']()]=_0x2c7700[_0xd0b2de['Variable']['name']['toLowerCase']()][_0xc7d5('0x36')]();}});}return _0x1f17f9;}function getTicket(_0x1dce1b,_0x5355ba,_0x569e9c,_0x3090ca,_0x2594dd,_0x17a560){return function(_0x49e978){logger[_0xc7d5('0x13')]('['+[_0x1dce1b[_0xc7d5('0x17')]()]+_0xc7d5('0x3d'),_0x49e978);return new Promise(function(_0x2eeab3,_0x2496a5){var _0x43530c=_0x1dce1b[_0xc7d5('0x34')]()===_0xc7d5('0x3e')?_0x49e978[_0xc7d5('0x20')]:_0x49e978[_0xc7d5('0x2a')];var _0x30633d={'method':_0xc7d5('0x25'),'uri':_0x569e9c+'incident'+'?'+_0x17a560,'body':Object['assign']({},{'active':'true','caller_id':_0x43530c,'assigned_to':_0x49e978[_0xc7d5('0x20')],'short_description':intUtil[_0xc7d5('0x3f')](_0x3090ca[_0xc7d5('0x40')],_0x2594dd,'\x20'),'description':intUtil['getString'](_0x3090ca[_0xc7d5('0x41')],_0x2594dd,'\x0a')},getCustomFields(_0x3090ca[_0xc7d5('0x42')],_0x2594dd)),'auth':_0x5355ba,'json':!![]};return rp(_0x30633d)[_0xc7d5('0xe')](function(_0x17e8d3){logger['info']('['+[_0x1dce1b[_0xc7d5('0x17')]()]+_0xc7d5('0x43'),_0x17e8d3[_0xc7d5('0xf')]);_0x49e978[_0xc7d5('0x44')]=_0x17e8d3[_0xc7d5('0xf')][_0xc7d5('0x12')];_0x49e978['ticketNumber']=_0x17e8d3[_0xc7d5('0xf')][_0xc7d5('0x45')];logger[_0xc7d5('0x13')]('['+[_0x1dce1b[_0xc7d5('0x17')]()]+_0xc7d5('0x46'),_0x49e978);_0x2eeab3(_0x49e978);})[_0xc7d5('0x15')](function(_0x3ef186){logger['error']('['+[_0x1dce1b[_0xc7d5('0x17')]()]+']',_0x3ef186[_0xc7d5('0x18')]);_0x2496a5(_0x3ef186[_0xc7d5('0x18')]);});});};}function createRemoteTag(_0xd515a9,_0x51eea3,_0x297961,_0x21e5f2){return new Promise(function(_0x552a5d,_0x54349e){var _0x512470={'method':_0xc7d5('0x25'),'uri':_0x297961+_0xc7d5('0x47')+'?'+_0x21e5f2,'body':{'short_description':_0xd515a9,'global':!![],'active':!![],'name':_0xd515a9},'auth':_0x51eea3,'json':!![]};return rp(_0x512470)[_0xc7d5('0xe')](function(_0x4c6d73){var _0x36c1e5=_0x4c6d73['result'][_0xc7d5('0x12')];_0x552a5d(_0x36c1e5);});});}function getRemoteTag(_0x352c12,_0x140c00,_0x2b0a72,_0x41b6b2,_0x22e512){return new Promise(function(_0x56559a,_0x28db3d){var _0x2919b5={'method':'GET','uri':_0x2b0a72+_0xc7d5('0x47')+_0xc7d5('0x48')+_0x352c12+'&'+_0x41b6b2,'auth':_0x140c00,'json':!![]};return rp(_0x2919b5)['then'](function(_0x5ca8cf){if(_0x5ca8cf[_0xc7d5('0xf')][_0xc7d5('0x10')]>0x0){var _0x55fb12=_0x5ca8cf[_0xc7d5('0xf')][0x0][_0xc7d5('0x12')];_0x56559a(_0x55fb12);}else{return createRemoteTag(_0x352c12,_0x140c00,_0x2b0a72,_0x41b6b2)[_0xc7d5('0xe')](function(_0x4e5509){_0x56559a(_0x4e5509);});}});});}function assignTagToIncident(_0x650421,_0xd50f20,_0x42e5dd,_0x4e8d26,_0xa98add){return new Promise(function(_0x22e065,_0x94139d){var _0x4dc647={'method':_0xc7d5('0x25'),'uri':_0x42e5dd+_0xc7d5('0x49')+'?'+_0xa98add,'body':{'label':_0x650421,'table':_0xc7d5('0x4a'),'id_type':'Incident','table_key':_0x4e8d26['ticketId'],'title':'Incident\x20-\x20'+_0x4e8d26[_0xc7d5('0x4b')],'id_display':_0x4e8d26['ticketNumber']},'auth':_0xd50f20,'json':!![]};return rp(_0x4dc647)['then'](function(_0x36a233){_0x22e065();})['catch'](function(){_0x22e065();});});}function manageTags(_0x504ed8,_0x56cf85,_0x1af8e5,_0x33cab6,_0x2a6daf,_0x418109,_0x314971){return new Promise(function(_0x5b5cef,_0x457c73){var _0x29f749=[];_0x56cf85[_0xc7d5('0x2e')](function(_0x5b3c41){_0x29f749[_0xc7d5('0x4c')](getRemoteTag(_0x5b3c41,_0x1af8e5,_0x33cab6,_0x418109,_0x314971));});return Promise['all'](_0x29f749)['then'](function(_0x4ad1cf){if(_0x4ad1cf[_0xc7d5('0x10')]){logger[_0xc7d5('0x13')]('['+[_0x504ed8['toUpperCase']()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x4ad1cf);var _0x3a4016=[];_0x4ad1cf[_0xc7d5('0x2e')](function(_0x577fe5){_0x3a4016['push'](assignTagToIncident(_0x577fe5,_0x1af8e5,_0x33cab6,_0x2a6daf,_0x418109));});return Promise['all'](_0x3a4016)[_0xc7d5('0xe')](function(){_0x5b5cef();})[_0xc7d5('0x15')](function(){_0x5b5cef();});}else{_0x5b5cef();}});});}function getTags(_0x1811a6,_0x2ea555,_0x50afc1,_0x22db69,_0x4c45cd,_0x290722){return function(_0x1bbacd){return new Promise(function(_0x710ea9,_0x46f98c){var _0xd4045b=[];var _0x5820da=_0x22db69[_0xc7d5('0x4d')];if(_0x5820da&&_0x5820da['length']>0x0){_0xd4045b=_[_0xc7d5('0x4e')](_0x5820da,_0xc7d5('0x3c'));}if(_0xd4045b[_0xc7d5('0x10')]>0x0){return manageTags(_0x1811a6,_0xd4045b,_0x2ea555,_0x50afc1,_0x1bbacd,_0x4c45cd,_0x290722)[_0xc7d5('0xe')](function(){_0x710ea9(_0x1bbacd);});}else{_0x710ea9(_0x1bbacd);}});};}function emit(_0x223a38,_0x47df5a,_0x1b8833){var _0x45a8e6=_0xc7d5('0x4f')+_0xc7d5('0x50')+_0xc7d5('0x51')+_0xc7d5('0x52');var _0x199966={'uri':_0x223a38+_0xc7d5('0x53')+_0x1b8833+_0x45a8e6};io['to'](util[_0xc7d5('0x54')](_0xc7d5('0x55'),_0x47df5a))[_0xc7d5('0x56')](_0xc7d5('0x57'),_0x199966);}exports['cs']=function(_0x4ca40a,_0x367965,_0xf15725,_0x5a0b83,_0x961737,_0x3d9dde,_0x5a0ca0,_0x547b75){var _0x225a25={};var _0x3fadce={'user':_0x3d9dde[_0xc7d5('0x58')],'pass':_0x3d9dde[_0xc7d5('0x59')]};var _0x3c40c4='sysparm_limit=1';var _0x1f3b36=_0xc7d5('0x5a');_0x3d9dde[_0xc7d5('0x5b')]=intUtil[_0xc7d5('0x5c')](_0x3d9dde[_0xc7d5('0x5b')]);_0x3d9dde[_0xc7d5('0x5d')]=intUtil[_0xc7d5('0x5c')](_0x3d9dde[_0xc7d5('0x5d')]);var _0x1a0dff=util[_0xc7d5('0x54')](_0xc7d5('0x5e'),_0x3d9dde[_0xc7d5('0x5b')]);_0x225a25[_0xc7d5('0x1a')]=!_[_0xc7d5('0x5f')](_0x5a0b83)?_0x5a0b83[_0xc7d5('0x60')]:null;_0x225a25[_0xc7d5('0x21')]=_0x3d9dde[_0xc7d5('0x60')];_0x225a25[_0xc7d5('0x27')]=_0x547b75['toLowerCase']()===_0xc7d5('0x3e')?_0x367965[_0xc7d5('0x61')]:_0x367965['calleridnum'];_0x225a25[_0xc7d5('0x62')]=_0x547b75===_0xc7d5('0x63')||_0x547b75===_0xc7d5('0x64')?'queue':'outbound';var _0x40d7ef=util[_0xc7d5('0x54')](_0xc7d5('0x65'),_0x3d9dde[_0xc7d5('0x5d')],_0x367965[_0xc7d5('0x66')],md5(_0x367965[_0xc7d5('0x66')]));if(_0x961737&&_0x961737[_0xc7d5('0x67')]){logger['info']('[QUEUE]',_0xc7d5('0x68'));_0x367965[_0xc7d5('0x69')]=_0x40d7ef;}else if(_0x5a0ca0&&_0x5a0ca0[_0xc7d5('0x6a')]&&_0x5a0ca0[_0xc7d5('0x6a')]!==_0xc7d5('0x6b')){logger[_0xc7d5('0x13')](_0xc7d5('0x6c'),_0xc7d5('0x68'));_0x367965[_0xc7d5('0x69')]=_0x40d7ef;}else{_0x367965[_0xc7d5('0x69')]='';}return getAdminUser(_0x547b75,_0x3fadce,_0x225a25,_0x1a0dff,_0x1f3b36,_0x3c40c4)[_0xc7d5('0xe')](getUser(_0x547b75,_0x3fadce,_0x1a0dff,_0x1f3b36,_0x3c40c4))[_0xc7d5('0xe')](getEndUser(_0x547b75,_0x3fadce,_0x1a0dff,_0x1f3b36,_0x3c40c4))[_0xc7d5('0xe')](getTicket(_0x547b75,_0x3fadce,_0x1a0dff,_0xf15725,_0x367965,_0x1f3b36))[_0xc7d5('0xe')](function(_0x242c8e){logger[_0xc7d5('0x13')](util[_0xc7d5('0x54')]('The\x20ticket\x20ID\x20is:\x20%s',_0x242c8e[_0xc7d5('0x44')]));logger[_0xc7d5('0x13')](util[_0xc7d5('0x54')](_0xc7d5('0x6d'),_0x547b75));if(_0x547b75!==_0xc7d5('0x64')){logger[_0xc7d5('0x13')]('['+[_0x547b75[_0xc7d5('0x17')]()]+']',_0xc7d5('0x6e'));emit(_0x3d9dde[_0xc7d5('0x5b')],_0x5a0b83['name'],_0x242c8e[_0xc7d5('0x44')]);}})[_0xc7d5('0x15')](function(_0x11b897){logger['error']('['+[_0x547b75[_0xc7d5('0x17')]()]+_0xc7d5('0x6f'),util[_0xc7d5('0x70')](_0x11b897,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x5b1f=['uniqueid','monitor_format','recordingFormat','Recording\x20is\x20enabled!','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','request-promise','util','md5','ioredis','./util','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','sys_user?sysparm_query=user_name%3Dadmin','result','sys_id','info','toUpperCase','catch','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','then','],\x20getUser\x20entity','active','true','userId','adminId','adminEmail',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','endUserNumber','System','error','sys_user?sysparm_query=phone%3D','endUserId','],\x20createEndUser\x20crm','length','includes','string','picklist','type','nameField','toLowerCase','content','toString','idField','customField','variable','variableName','customVariable','Variable','name','outbound','assign','getString','Subjects','Descriptions','ticketId','ticketNumber','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','incident','Incident\x20-\x20','push',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','forEach','Tags','%26sysparm_record_target%3Dincident','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','user:%s','emit','trigger:browser:url','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','format','%s/api/now/table/','isNil','email','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s'];(function(_0x5209b9,_0xb09725){var _0x14fd05=function(_0x5af0fe){while(--_0x5af0fe){_0x5209b9['push'](_0x5209b9['shift']());}};_0x14fd05(++_0xb09725);}(_0x5b1f,0x73));var _0xf5b1=function(_0x301f7f,_0x80a94d){_0x301f7f=_0x301f7f-0x0;var _0x17f0d4=_0x5b1f[_0x301f7f];return _0x17f0d4;};'use strict';var _=require(_0xf5b1('0x0'));var Promise=require('bluebird');var rp=require(_0xf5b1('0x1'));var util=require(_0xf5b1('0x2'));var md5=require(_0xf5b1('0x3'));var Redis=require(_0xf5b1('0x4'));var intUtil=require(_0xf5b1('0x5'));var config=require('../../../../config/environment');var logger=require(_0xf5b1('0x6'))('servicenow');config[_0xf5b1('0x7')]=_[_0xf5b1('0x8')](config[_0xf5b1('0x7')],{'host':_0xf5b1('0x9'),'port':0x18eb});var io=require(_0xf5b1('0xa'))(new Redis(config[_0xf5b1('0x7')]));function getAdminUser(_0x4f2f04,_0x20166f,_0x2106e5,_0x5f0f0e,_0x14f6a3,_0x3d576e){return new Promise(function(_0x30f049,_0x3f4c1c){var _0x29971a={'method':'GET','uri':_0x5f0f0e+_0xf5b1('0xb')+'&'+_0x14f6a3+'&'+_0x3d576e,'auth':_0x20166f,'json':!![]};return rp(_0x29971a)['then'](function(_0x3ebc00){if(_0x3ebc00[_0xf5b1('0xc')]['length']>0x0){_0x2106e5['adminId']=_0x3ebc00['result'][0x0][_0xf5b1('0xd')];}logger[_0xf5b1('0xe')]('['+[_0x4f2f04[_0xf5b1('0xf')]()]+'],\x20getAdminUser\x20crm',_0x2106e5);_0x30f049(_0x2106e5);})[_0xf5b1('0x10')](function(_0x54f569){logger['error']('['+[_0x4f2f04['toUpperCase']()]+']',_0x54f569[_0xf5b1('0x11')]);_0x3f4c1c(_0x54f569['message']);});});}function getUser(_0x2bbedf,_0x1d9353,_0x5ce7dc,_0x32c4e0,_0xd3b607){return function(_0x538053){logger['info']('['+[_0x2bbedf[_0xf5b1('0xf')]()]+_0xf5b1('0x12'),_0x538053);return new Promise(function(_0x1f5ab3,_0xe56f7e){if(intUtil[_0xf5b1('0x13')](_0x538053[_0xf5b1('0x14')])){var _0x2f9779={'method':'GET','uri':_0x5ce7dc+_0xf5b1('0x15')+_0x538053['userEmail']+'&'+_0x32c4e0+'&'+_0xd3b607,'auth':_0x1d9353,'json':!![]};logger[_0xf5b1('0xe')]('['+[_0x2bbedf[_0xf5b1('0xf')]()]+_0xf5b1('0x16'),_0x2f9779);return rp(_0x2f9779)[_0xf5b1('0x17')](function(_0x558811){logger[_0xf5b1('0xe')]('['+[_0x2bbedf[_0xf5b1('0xf')]()]+_0xf5b1('0x18'),_0x558811);if(_0x558811[_0xf5b1('0xc')]['length']>0x0&&String(_0x558811[_0xf5b1('0xc')][0x0][_0xf5b1('0x19')])===_0xf5b1('0x1a')){_0x538053[_0xf5b1('0x1b')]=_0x558811[_0xf5b1('0xc')][0x0][_0xf5b1('0xd')];}else{_0x538053['userId']=_0x538053[_0xf5b1('0x1c')];_0x538053[_0xf5b1('0x14')]=_0x538053[_0xf5b1('0x1d')];}logger['info']('['+[_0x2bbedf['toUpperCase']()]+'],\x20getUser\x20crm',_0x538053);_0x1f5ab3(_0x538053);})['catch'](function(_0x50a4fa){logger['error']('['+[_0x2bbedf[_0xf5b1('0xf')]()]+']',_0x50a4fa[_0xf5b1('0x11')]);_0xe56f7e(_0x50a4fa[_0xf5b1('0x11')]);});}else{logger['info']('['+[_0x2bbedf[_0xf5b1('0xf')]()]+_0xf5b1('0x1e'));_0x538053[_0xf5b1('0x1b')]=_0x538053[_0xf5b1('0x1c')];_0x538053[_0xf5b1('0x14')]=_0x538053[_0xf5b1('0x1d')];_0x1f5ab3(_0x538053);}});};}function createEndUser(_0x5f4751,_0x344963,_0x1a4b33,_0x3b70e2,_0x211bc9){logger[_0xf5b1('0xe')]('['+[_0x5f4751[_0xf5b1('0xf')]()]+_0xf5b1('0x1f'),_0x1a4b33);return new Promise(function(_0x78de2d,_0x1b50cf){var _0x1f61cd={'method':_0xf5b1('0x20'),'uri':_0x3b70e2+'sys_user?'+_0x211bc9,'body':{'user_name':_0x1a4b33[_0xf5b1('0x21')],'roles':'user','first_name':_0x1a4b33[_0xf5b1('0x21')],'active':_0xf5b1('0x1a'),'date_format':_0xf5b1('0x22'),'phone':_0x1a4b33['endUserNumber']},'auth':_0x344963,'json':!![]};return rp(_0x1f61cd)[_0xf5b1('0x17')](function(_0x45aa43){logger[_0xf5b1('0xe')]('['+[_0x5f4751[_0xf5b1('0xf')]()]+'],\x20EndUser\x20schema',_0x45aa43['result']);_0x1a4b33['endUserId']=_0x45aa43[_0xf5b1('0xc')]['sys_id'];_0x78de2d(_0x1a4b33);})['catch'](function(_0x30081f){logger[_0xf5b1('0x23')]('['+[_0x5f4751[_0xf5b1('0xf')]()]+']',_0x30081f['message']);_0x1b50cf(_0x30081f['message']);});});}function getEndUser(_0x4ec9fc,_0x53a941,_0x451bf3,_0x9e63f2,_0x4eb143){return function(_0x5382c0){logger[_0xf5b1('0xe')]('['+[_0x4ec9fc[_0xf5b1('0xf')]()]+'],\x20getEndUser\x20input\x20crm',_0x5382c0);return new Promise(function(_0x269f53,_0x19e185){var _0x2728f5={'method':'GET','uri':_0x451bf3+_0xf5b1('0x24')+_0x5382c0[_0xf5b1('0x21')]+'&'+_0x9e63f2+'&'+_0x4eb143,'auth':_0x53a941,'json':!![]};return rp(_0x2728f5)[_0xf5b1('0x17')](function(_0x4bf2c7){if(_0x4bf2c7[_0xf5b1('0xc')]['length']>0x0){_0x5382c0[_0xf5b1('0x25')]=_0x4bf2c7[_0xf5b1('0xc')][0x0][_0xf5b1('0xd')];logger[_0xf5b1('0xe')]('['+[_0x4ec9fc[_0xf5b1('0xf')]()]+'],\x20getEndUser\x20crm',_0x5382c0);_0x269f53(_0x5382c0);}else{return createEndUser(_0x4ec9fc,_0x53a941,_0x5382c0,_0x451bf3,_0x9e63f2)['then'](function(_0x22a06f){logger['info']('['+[_0x4ec9fc[_0xf5b1('0xf')]()]+_0xf5b1('0x26'),_0x22a06f);_0x269f53(_0x22a06f);});}})[_0xf5b1('0x10')](function(_0x3793ff){logger[_0xf5b1('0x23')]('['+[_0x4ec9fc[_0xf5b1('0xf')]()]+']',_0x3793ff['message']);_0x19e185(_0x3793ff['message']);});});};}function getCustomFields(_0x5f3a82,_0x1816c5){var _0x400b0d={};if(_0x5f3a82[_0xf5b1('0x27')]>0x0){_['forEach'](_0x5f3a82,function(_0x30f289){if(_[_0xf5b1('0x28')]([_0xf5b1('0x29'),_0xf5b1('0x2a')],_0x30f289[_0xf5b1('0x2b')])&&_0x30f289['nameField']&&!_0x30f289['customField']){_0x400b0d[_0x30f289[_0xf5b1('0x2c')][_0xf5b1('0x2d')]()]=_0x30f289[_0xf5b1('0x2e')][_0xf5b1('0x2f')]();}else if(_['includes']([_0xf5b1('0x29'),_0xf5b1('0x2a')],_0x30f289[_0xf5b1('0x2b')])&&_0x30f289[_0xf5b1('0x30')]&&_0x30f289[_0xf5b1('0x31')]){_0x400b0d[_0x30f289['idField'][_0xf5b1('0x2d')]()]=_0x30f289[_0xf5b1('0x2e')][_0xf5b1('0x2f')]();}else if(_0x30f289[_0xf5b1('0x2b')]===_0xf5b1('0x32')&&_0x30f289['variableName']&&_0x30f289['idField']&&_0x30f289['customField']){_0x400b0d[_0x30f289['idField']['toLowerCase']()]=_0x1816c5[_0x30f289[_0xf5b1('0x33')]][_0xf5b1('0x2f')]();}else if(_0x30f289['type']===_0xf5b1('0x34')&&_0x30f289[_0xf5b1('0x35')]&&_0x30f289[_0xf5b1('0x35')][_0xf5b1('0x36')]&&_0x30f289['idField']&&_0x30f289[_0xf5b1('0x31')]){_0x400b0d[_0x30f289['idField'][_0xf5b1('0x2d')]()]=_0x1816c5[_0x30f289[_0xf5b1('0x35')][_0xf5b1('0x36')][_0xf5b1('0x2d')]()][_0xf5b1('0x2f')]();}});}return _0x400b0d;}function getTicket(_0x53c45a,_0x30a4f4,_0x36a573,_0x25ae19,_0x471231,_0x5a2c15){return function(_0x381f6e){logger[_0xf5b1('0xe')]('['+[_0x53c45a['toUpperCase']()]+']\x20getTicket\x20input\x20crm',_0x381f6e);return new Promise(function(_0x57e1af,_0x4f37af){var _0x24a85e=_0x53c45a[_0xf5b1('0x2d')]()===_0xf5b1('0x37')?_0x381f6e[_0xf5b1('0x1b')]:_0x381f6e[_0xf5b1('0x25')];var _0x38149a={'method':'POST','uri':_0x36a573+'incident'+'?'+_0x5a2c15,'body':Object[_0xf5b1('0x38')]({},{'active':_0xf5b1('0x1a'),'caller_id':_0x24a85e,'assigned_to':_0x381f6e['userId'],'short_description':intUtil[_0xf5b1('0x39')](_0x25ae19[_0xf5b1('0x3a')],_0x471231,'\x20'),'description':intUtil[_0xf5b1('0x39')](_0x25ae19[_0xf5b1('0x3b')],_0x471231,'\x0a')},getCustomFields(_0x25ae19['Fields'],_0x471231)),'auth':_0x30a4f4,'json':!![]};return rp(_0x38149a)[_0xf5b1('0x17')](function(_0xa089a3){logger[_0xf5b1('0xe')]('['+[_0x53c45a[_0xf5b1('0xf')]()]+']\x20POST\x20incident\x20entity\x20schema',_0xa089a3[_0xf5b1('0xc')]);_0x381f6e[_0xf5b1('0x3c')]=_0xa089a3[_0xf5b1('0xc')]['sys_id'];_0x381f6e[_0xf5b1('0x3d')]=_0xa089a3[_0xf5b1('0xc')][_0xf5b1('0x3e')];logger[_0xf5b1('0xe')]('['+[_0x53c45a[_0xf5b1('0xf')]()]+_0xf5b1('0x3f'),_0x381f6e);_0x57e1af(_0x381f6e);})[_0xf5b1('0x10')](function(_0x239841){logger[_0xf5b1('0x23')]('['+[_0x53c45a['toUpperCase']()]+']',_0x239841[_0xf5b1('0x11')]);_0x4f37af(_0x239841[_0xf5b1('0x11')]);});});};}function createRemoteTag(_0x52f604,_0x14a0ec,_0x402c74,_0x228d2c){return new Promise(function(_0x4d3ec4,_0x2d27b0){var _0xc53d8c={'method':_0xf5b1('0x20'),'uri':_0x402c74+_0xf5b1('0x40')+'?'+_0x228d2c,'body':{'short_description':_0x52f604,'global':!![],'active':!![],'name':_0x52f604},'auth':_0x14a0ec,'json':!![]};return rp(_0xc53d8c)['then'](function(_0x6a8eab){var _0x5b6495=_0x6a8eab['result'][_0xf5b1('0xd')];_0x4d3ec4(_0x5b6495);});});}function getRemoteTag(_0x268ef5,_0x185456,_0x568438,_0x41dab4,_0x34e5fc){return new Promise(function(_0x296577,_0x1b176e){var _0x56f565={'method':'GET','uri':_0x568438+_0xf5b1('0x40')+_0xf5b1('0x41')+_0x268ef5+'&'+_0x41dab4,'auth':_0x185456,'json':!![]};return rp(_0x56f565)[_0xf5b1('0x17')](function(_0x5eee6c){if(_0x5eee6c[_0xf5b1('0xc')][_0xf5b1('0x27')]>0x0){var _0x32d728=_0x5eee6c['result'][0x0][_0xf5b1('0xd')];_0x296577(_0x32d728);}else{return createRemoteTag(_0x268ef5,_0x185456,_0x568438,_0x41dab4)[_0xf5b1('0x17')](function(_0x31fff1){_0x296577(_0x31fff1);});}});});}function assignTagToIncident(_0x136edc,_0x49cb09,_0x6588a6,_0x1dc60d,_0x437323){return new Promise(function(_0x1a61be,_0x506dfd){var _0x281405={'method':_0xf5b1('0x20'),'uri':_0x6588a6+_0xf5b1('0x42')+'?'+_0x437323,'body':{'label':_0x136edc,'table':_0xf5b1('0x43'),'id_type':'Incident','table_key':_0x1dc60d[_0xf5b1('0x3c')],'title':_0xf5b1('0x44')+_0x1dc60d[_0xf5b1('0x3d')],'id_display':_0x1dc60d['ticketNumber']},'auth':_0x49cb09,'json':!![]};return rp(_0x281405)[_0xf5b1('0x17')](function(_0x14de6f){_0x1a61be();})[_0xf5b1('0x10')](function(){_0x1a61be();});});}function manageTags(_0x32b97b,_0x26da1d,_0xbaeca0,_0x758045,_0x349b8d,_0x5cdd8c,_0x12687b){return new Promise(function(_0x5eb673,_0x5ee256){var _0x36d662=[];_0x26da1d['forEach'](function(_0x3a7ba8){_0x36d662[_0xf5b1('0x45')](getRemoteTag(_0x3a7ba8,_0xbaeca0,_0x758045,_0x5cdd8c,_0x12687b));});return Promise['all'](_0x36d662)[_0xf5b1('0x17')](function(_0x6f3d5f){if(_0x6f3d5f[_0xf5b1('0x27')]){logger['info']('['+[_0x32b97b['toUpperCase']()]+_0xf5b1('0x46'),_0x6f3d5f);var _0xf7fa2=[];_0x6f3d5f[_0xf5b1('0x47')](function(_0x2c8ffb){_0xf7fa2[_0xf5b1('0x45')](assignTagToIncident(_0x2c8ffb,_0xbaeca0,_0x758045,_0x349b8d,_0x5cdd8c));});return Promise['all'](_0xf7fa2)[_0xf5b1('0x17')](function(){_0x5eb673();})[_0xf5b1('0x10')](function(){_0x5eb673();});}else{_0x5eb673();}});});}function getTags(_0x26dd66,_0x3a1c96,_0x1dc6e0,_0x555ac4,_0x3c12f2,_0x2127b3){return function(_0x61be44){return new Promise(function(_0x380e63,_0x5f361b){var _0x1db8c0=[];var _0x3a7aa5=_0x555ac4[_0xf5b1('0x48')];if(_0x3a7aa5&&_0x3a7aa5[_0xf5b1('0x27')]>0x0){_0x1db8c0=_['map'](_0x3a7aa5,_0xf5b1('0x36'));}if(_0x1db8c0[_0xf5b1('0x27')]>0x0){return manageTags(_0x26dd66,_0x1db8c0,_0x3a1c96,_0x1dc6e0,_0x61be44,_0x3c12f2,_0x2127b3)[_0xf5b1('0x17')](function(){_0x380e63(_0x61be44);});}else{_0x380e63(_0x61be44);}});};}function emit(_0x46fb99,_0x4e6ada,_0x327d73){var _0x641e2f=_0xf5b1('0x49')+'%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'+_0xf5b1('0x4a')+_0xf5b1('0x4b');var _0x3d480f={'uri':_0x46fb99+_0xf5b1('0x4c')+_0x327d73+_0x641e2f};io['to'](util['format'](_0xf5b1('0x4d'),_0x4e6ada))[_0xf5b1('0x4e')](_0xf5b1('0x4f'),_0x3d480f);}exports['cs']=function(_0x26e2c1,_0x1d93e0,_0x820db7,_0x144e0e,_0xd8d049,_0x486b46,_0x512f81,_0x6f1d00){var _0x5e0f80={};var _0x46f2f8={'user':_0x486b46['username'],'pass':_0x486b46[_0xf5b1('0x50')]};var _0x55237f=_0xf5b1('0x51');var _0x11d2fe=_0xf5b1('0x52');_0x486b46[_0xf5b1('0x53')]=intUtil[_0xf5b1('0x54')](_0x486b46[_0xf5b1('0x53')]);_0x486b46[_0xf5b1('0x55')]=intUtil[_0xf5b1('0x54')](_0x486b46[_0xf5b1('0x55')]);var _0x2642cf=util[_0xf5b1('0x56')](_0xf5b1('0x57'),_0x486b46[_0xf5b1('0x53')]);_0x5e0f80[_0xf5b1('0x14')]=!_[_0xf5b1('0x58')](_0x144e0e)?_0x144e0e[_0xf5b1('0x59')]:null;_0x5e0f80[_0xf5b1('0x1d')]=_0x486b46[_0xf5b1('0x59')];_0x5e0f80[_0xf5b1('0x21')]=_0x6f1d00[_0xf5b1('0x2d')]()==='outbound'?_0x1d93e0['destcalleridnum']:_0x1d93e0[_0xf5b1('0x5a')];_0x5e0f80[_0xf5b1('0x5b')]=_0x6f1d00===_0xf5b1('0x5c')||_0x6f1d00===_0xf5b1('0x5d')?'queue':'outbound';var _0x16f812=util['format'](_0xf5b1('0x5e'),_0x486b46[_0xf5b1('0x55')],_0x1d93e0['uniqueid'],md5(_0x1d93e0[_0xf5b1('0x5f')]));if(_0xd8d049&&_0xd8d049[_0xf5b1('0x60')]){logger[_0xf5b1('0xe')]('[QUEUE]','Recording\x20is\x20enabled!');_0x1d93e0['recordingURL']=_0x16f812;}else if(_0x512f81&&_0x512f81['recordingFormat']&&_0x512f81[_0xf5b1('0x61')]!=='none'){logger['info']('[OUTBOUND]',_0xf5b1('0x62'));_0x1d93e0[_0xf5b1('0x63')]=_0x16f812;}else{_0x1d93e0[_0xf5b1('0x63')]='';}return getAdminUser(_0x6f1d00,_0x46f2f8,_0x5e0f80,_0x2642cf,_0x11d2fe,_0x55237f)[_0xf5b1('0x17')](getUser(_0x6f1d00,_0x46f2f8,_0x2642cf,_0x11d2fe,_0x55237f))['then'](getEndUser(_0x6f1d00,_0x46f2f8,_0x2642cf,_0x11d2fe,_0x55237f))['then'](getTicket(_0x6f1d00,_0x46f2f8,_0x2642cf,_0x820db7,_0x1d93e0,_0x11d2fe))[_0xf5b1('0x17')](function(_0x43b57a){logger[_0xf5b1('0xe')](util[_0xf5b1('0x56')](_0xf5b1('0x64'),_0x43b57a['ticketId']));logger[_0xf5b1('0xe')](util['format'](_0xf5b1('0x65'),_0x6f1d00));if(_0x6f1d00!=='unmanaged'){logger[_0xf5b1('0xe')]('['+[_0x6f1d00[_0xf5b1('0xf')]()]+']',_0xf5b1('0x66'));emit(_0x486b46[_0xf5b1('0x53')],_0x144e0e[_0xf5b1('0x36')],_0x43b57a['ticketId']);}})[_0xf5b1('0x10')](function(_0x2135dd){logger[_0xf5b1('0x23')]('['+[_0x6f1d00[_0xf5b1('0xf')]()]+_0xf5b1('0x67'),util[_0xf5b1('0x68')](_0x2135dd,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 4ceba7d..b94678f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe20a=['variableName','push','idField','set_entry','JSON','Calls','Basic\x20%s','apiKey','toString','get_server_info','stringify','isNil','Getting\x20agent\x20with\x20name','get_entry_list','format','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','find','entry_list','name_value_list','Agent\x20found!','value','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','resolve','user_id','Searching\x20enduser\x20with\x20phone','Contacts','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','Caller\x20-\x20%s','Enduser\x20created.','debug','[HTTP]','merge','map','type','string','customField','nameField','toLowerCase','content','custom_fields','customVariable','Variable','POST','login','username','password','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','queue','remoteUri','stripTrailingSlash','serverUrl','uri','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','contacts','version','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','catch','error','%s/service/v4_1/rest.php','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridnum','users','unmanaged','monitor_format','lastevent','toUpperCase','Inbound','lodash','request-promise','bluebird','md5','ioredis','../../../../config/environment','../../../../config/logger','sugarcrm','defaults','localhost','socket.io-emitter','redis','emit','info','Creating\x20new\x20ticket...','name','getString','assigned_user_id','created_by','description','date_start','toISOString','slice','replace','duration_hours','duration_minutes','parent_id','direction','length','forEach'];(function(_0x13eaf1,_0x3f75d3){var _0xdb1025=function(_0x9911c6){while(--_0x9911c6){_0x13eaf1['push'](_0x13eaf1['shift']());}};_0xdb1025(++_0x3f75d3);}(_0xe20a,0xd8));var _0xae20=function(_0x5f4b36,_0x282a1b){_0x5f4b36=_0x5f4b36-0x0;var _0xbf746d=_0xe20a[_0x5f4b36];return _0xbf746d;};'use strict';var _=require(_0xae20('0x0'));var rp=require(_0xae20('0x1'));var BPromise=require(_0xae20('0x2'));var md5=require(_0xae20('0x3'));var util=require('util');var Redis=require(_0xae20('0x4'));var intUtil=require('./util');var config=require(_0xae20('0x5'));var logger=require(_0xae20('0x6'))(_0xae20('0x7'));config['redis']=_[_0xae20('0x8')](config['redis'],{'host':_0xae20('0x9'),'port':0x18eb});var io=require(_0xae20('0xa'))(new Redis(config[_0xae20('0xb')]));var def={'method':'POST','json':!![]};function emit(_0x206c8e,_0x553275,_0x365682){io['to'](_0x206c8e)[_0xae20('0xc')](_0x553275,_0x365682);}function getTicket(_0x54bfec,_0x247303,_0x319b08,_0x591bf6,_0x561a73,_0x4c161e,_0x125f07,_0xeda92e){logger[_0xae20('0xd')](_0xae20('0xe'));var _0x9e6653=new Date();var _0x4ff1e8=[{'name':_0xae20('0xf'),'value':intUtil[_0xae20('0x10')](_0x591bf6['Subjects'],_0x561a73,'\x20')},{'name':_0xae20('0x11'),'value':_0x247303['id']},{'name':_0xae20('0x12'),'value':_0x247303['id']},{'name':_0xae20('0x13'),'value':intUtil['getString'](_0x591bf6['Descriptions'],_0x561a73,'\x0a')},{'name':_0xae20('0x14'),'value':_0x9e6653[_0xae20('0x15')]()[_0xae20('0x16')](0x0,0x13)[_0xae20('0x17')]('T','\x20')},{'name':_0xae20('0x18'),'value':'0'},{'name':_0xae20('0x19'),'value':'15'},{'name':_0xae20('0x1a'),'value':_0x319b08['id']},{'name':'parent_type','value':'Contacts'},{'name':'parent_name','value':_0x319b08[_0xae20('0xf')]},{'name':_0xae20('0x1b'),'value':_0xeda92e}];if(_0x4c161e[_0xae20('0x1c')]){_[_0xae20('0x1d')](_0x4c161e,function(_0x5e320f){if(_0x561a73[_0x5e320f[_0xae20('0x1e')]]){_0x4ff1e8[_0xae20('0x1f')]({'name':_0x5e320f[_0xae20('0x20')],'value':_0x561a73[_0x5e320f['variableName']]});}});}return request({'form':{'method':_0xae20('0x21'),'input_type':_0xae20('0x22'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x125f07['id'],'module_name':_0xae20('0x23'),'name_value_list':_0x4ff1e8})}});}function getAuth(_0xef777f){return util['format'](_0xae20('0x24'),new Buffer(_0xef777f[_0xae20('0x25')]+':X')[_0xae20('0x26')]('base64'));}function getServerInfo(_0x3bbd10){return request({'form':{'method':_0xae20('0x27'),'input_type':_0xae20('0x22'),'response_type':_0xae20('0x22'),'rest_data':JSON[_0xae20('0x28')]({'session':_0x3bbd10['id']})}});}function getUser(_0x129323,_0x1815a,_0x3757b1){if(!_[_0xae20('0x29')](_0x1815a)){logger[_0xae20('0xd')](_0xae20('0x2a'),_0x1815a);return request({'form':{'method':_0xae20('0x2b'),'input_type':_0xae20('0x22'),'response_type':'JSON','rest_data':JSON[_0xae20('0x28')]({'session':_0x3757b1['id'],'module_name':'Employees','query':util[_0xae20('0x2c')](_0xae20('0x2d'),_0x1815a),'order_by':'','offset':'0','select_fields':['id',_0xae20('0xf'),_0xae20('0x2e')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xae20('0x2f')](function(_0x4ae6db){if(_0x4ae6db['entry_list'][_0xae20('0x1c')]){var _0x5d7a11=_[_0xae20('0x30')](_0x4ae6db[_0xae20('0x31')],function(_0xe2a636){return _0xe2a636[_0xae20('0x32')][_0xae20('0x2e')]['value']===_0x1815a;});if(_0x5d7a11){logger[_0xae20('0xd')](_0xae20('0x33'));return BPromise['resolve']({'id':_0x5d7a11[_0xae20('0x32')]['id'][_0xae20('0x34')],'name':_0x5d7a11[_0xae20('0x32')]['name'][_0xae20('0x34')]});}}logger[_0xae20('0xd')](_0xae20('0x35'));return BPromise[_0xae20('0x36')]({'id':_0x3757b1[_0xae20('0x32')][_0xae20('0x37')][_0xae20('0x34')],'name':_0x3757b1[_0xae20('0x32')][_0xae20('0x2e')][_0xae20('0x34')]});});}else{logger[_0xae20('0xd')]('Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!');return BPromise[_0xae20('0x36')]({'id':_0x3757b1[_0xae20('0x32')][_0xae20('0x37')][_0xae20('0x34')],'name':_0x3757b1['name_value_list'][_0xae20('0x2e')][_0xae20('0x34')]});}}function getEndUser(_0x3b152a,_0x1176c7,_0x523705,_0x266c54){logger[_0xae20('0xd')](_0xae20('0x38'),_0x523705);return request({'form':{'method':_0xae20('0x2b'),'input_type':_0xae20('0x22'),'response_type':_0xae20('0x22'),'rest_data':JSON[_0xae20('0x28')]({'session':_0x266c54['id'],'module_name':_0xae20('0x39'),'query':util['format'](_0xae20('0x3a'),_0x523705),'order_by':'','offset':'0','select_fields':['id',_0xae20('0xf'),_0xae20('0x3b')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xae20('0x2f')](function(_0x21ad8f){if(_0x21ad8f[_0xae20('0x31')]['length']){var _0x4caa94=_[_0xae20('0x30')](_0x21ad8f[_0xae20('0x31')],function(_0x3a9ada){return _0x3a9ada['name_value_list']['phone_home'][_0xae20('0x34')]===_0x523705;});if(_0x4caa94){logger[_0xae20('0xd')](_0xae20('0x3c'));return BPromise['resolve']({'id':_0x4caa94[_0xae20('0x32')]['id'][_0xae20('0x34')],'name':_0x4caa94[_0xae20('0x32')][_0xae20('0xf')][_0xae20('0x34')],'phone':_0x4caa94['name_value_list'][_0xae20('0x3b')][_0xae20('0x34')]});}}else{logger[_0xae20('0xd')](_0xae20('0x3d'));return request({'form':{'method':'set_entry','input_type':_0xae20('0x22'),'response_type':_0xae20('0x22'),'rest_data':JSON[_0xae20('0x28')]({'session':_0x266c54['id'],'module_name':_0xae20('0x39'),'name_value_list':[{'name':_0xae20('0x3e'),'value':_0x1176c7!=='<unknown>'?_0x1176c7:util[_0xae20('0x2c')](_0xae20('0x3f'),_0x523705)},{'name':_0xae20('0x3b'),'value':_0x523705}]})}})['then'](function(_0x51fa0f){logger[_0xae20('0xd')](_0xae20('0x40'));return BPromise[_0xae20('0x36')]({'id':_0x51fa0f['id'],'name':_0x51fa0f[_0xae20('0x31')][_0xae20('0x3e')]['value'],'phone':_0x51fa0f['entry_list'][_0xae20('0x3b')][_0xae20('0x34')]});});}});}function request(_0x9ff702){logger[_0xae20('0x41')](_0xae20('0x42'),JSON[_0xae20('0x28')](_0x9ff702));return rp(_[_0xae20('0x43')](def,_0x9ff702));}function getTags(_0x1a3993,_0x62345a){var _0x293c5a=[];if(_0x1a3993&&_0x1a3993[_0xae20('0x1c')]>0x0){_0x293c5a=_[_0xae20('0x44')](_0x1a3993,_0x62345a);}return _0x293c5a;}function getCustomFields(_0x15ff1c,_0x3941bd){var _0x4db7ed=[];var _0x59da90={'custom_fields':[]};if(_0x15ff1c[_0xae20('0x1c')]>0x0){_[_0xae20('0x1d')](_0x15ff1c,function(_0xda79c1){if(_0xda79c1[_0xae20('0x45')]===_0xae20('0x46')&&_0xda79c1['nameField']&&!_0xda79c1[_0xae20('0x47')]){_0x59da90[_0xda79c1[_0xae20('0x48')][_0xae20('0x49')]()]=_0xda79c1['content'][_0xae20('0x26')]();}else if(_0xda79c1[_0xae20('0x45')]===_0xae20('0x46')&&_0xda79c1[_0xae20('0x20')]&&_0xda79c1[_0xae20('0x47')]){_0x59da90['custom_fields'][_0xae20('0x1f')]({'id':_0xda79c1[_0xae20('0x20')],'value':_0xda79c1[_0xae20('0x4a')][_0xae20('0x26')]()});}else if(_0xda79c1[_0xae20('0x45')]==='variable'&&_0xda79c1[_0xae20('0x1e')]&&_0xda79c1['idField']&&_0xda79c1[_0xae20('0x47')]){_0x3941bd[_0xda79c1[_0xae20('0x1e')]]&&_0x59da90[_0xae20('0x4b')]['push']({'id':_0xda79c1['idField'],'value':_0x3941bd[_0xda79c1['variableName']][_0xae20('0x26')]()});}else if(_0xda79c1['type']===_0xae20('0x4c')&&_0xda79c1['Variable']&&_0xda79c1[_0xae20('0x4d')][_0xae20('0xf')]&&_0xda79c1[_0xae20('0x20')]&&_0xda79c1[_0xae20('0x47')]){_0x3941bd[_0xda79c1[_0xae20('0x4d')][_0xae20('0xf')][_0xae20('0x49')]()]&&_0x59da90['custom_fields'][_0xae20('0x1f')]({'id':_0xda79c1[_0xae20('0x20')],'value':_0x3941bd[_0xda79c1[_0xae20('0x4d')][_0xae20('0xf')][_0xae20('0x49')]()][_0xae20('0x26')]()});}});}return _0x59da90;}function getConnection(_0x28f544){return request({'method':_0xae20('0x4e'),'form':{'method':_0xae20('0x4f'),'input_type':'JSON','response_type':_0xae20('0x22'),'rest_data':JSON[_0xae20('0x28')]({'user_auth':{'user_name':_0x28f544[_0xae20('0x50')],'password':_0x28f544[_0xae20('0x51')],'encryption':'PLAIN'},'application':_0xae20('0x52')})}})[_0xae20('0x2f')](function(_0x51d17b){var _0x4567f3=_0x51d17b;if(_0x4567f3['id']){def[_0xae20('0x53')]=_0x4567f3['id'];return BPromise['resolve'](_0x4567f3);}else{throw new Error(util[_0xae20('0x2c')](_0xae20('0x54'),_0x28f544['id']));}});}function setRelationship(_0x4ddabf,_0x5492ba,_0x4e748e,_0x18ecba){return request({'form':{'method':'set_relationship','input_type':_0xae20('0x22'),'response_type':_0xae20('0x22'),'rest_data':JSON['stringify']({'session':_0x4ddabf['id'],'module_name':'Calls','module_id':_0x4e748e['id'],'link_field_name':_0x18ecba,'related_ids':[_0x5492ba['id']],'name_value_list':[],'delete':0x0})}});}exports[_0xae20('0x55')]=function(_0x461f91,_0x48b245,_0x11d07f,_0x3e5cba,_0x2c1d1a,_0x58e447){var _0x302206,_0x2aad0c,_0x26db88,_0x4125c8;_0x58e447[_0xae20('0x56')]=intUtil[_0xae20('0x57')](_0x58e447[_0xae20('0x56')]);_0x58e447[_0xae20('0x58')]=intUtil[_0xae20('0x57')](_0x58e447[_0xae20('0x58')]);def[_0xae20('0x59')]=util['format']('%s/service/v4_1/rest.php',_0x58e447[_0xae20('0x56')]);if(_0x2c1d1a&&_0x2c1d1a['monitor_format']){logger[_0xae20('0xd')](_0xae20('0x5a'),'Recording\x20is\x20enabled!');_0x48b245['recordingURL']=util['format'](_0xae20('0x5b'),_0x58e447[_0xae20('0x58')],_0x48b245[_0xae20('0x5c')],md5(_0x48b245[_0xae20('0x5c')]));}else{_0x48b245[_0xae20('0x5d')]='';}return getConnection(_0x58e447)[_0xae20('0x2f')](function(_0x349bea){_0x4125c8=_0x349bea;return getUser(_0x58e447,_0x3e5cba[_0xae20('0xf')],_0x4125c8);})['then'](function(_0x2ea47c){_0x302206=_0x2ea47c;logger[_0xae20('0xd')](_0xae20('0x5e'),_0x302206['id']);return getEndUser(_0x58e447,_0x48b245[_0xae20('0x5f')],_0x48b245[_0xae20('0x60')],_0x4125c8);})[_0xae20('0x2f')](function(_0xeb4698){_0x2aad0c=_0xeb4698;logger[_0xae20('0xd')](_0xae20('0x61'),_0x2aad0c['id']);return getTicket(_0x58e447,_0x302206,_0x2aad0c,_0x11d07f,_0x48b245,_0x11d07f[_0xae20('0x62')],_0x4125c8,'Inbound');})[_0xae20('0x2f')](function(_0x474774){_0x26db88=_0x474774;logger[_0xae20('0xd')](_0xae20('0x63'));logger[_0xae20('0xd')](_0xae20('0x64'),_0x26db88['id']);return setRelationship(_0x4125c8,_0x302206,_0x26db88,'users');})[_0xae20('0x2f')](function(){return setRelationship(_0x4125c8,_0x2aad0c,_0x26db88,_0xae20('0x65'));})[_0xae20('0x2f')](function(){return getServerInfo(_0x4125c8);})['then'](function(_0x725e77){var _0x5ca956=parseInt(_0x725e77[_0xae20('0x66')][_0xae20('0x67')](0x0));var _0x204ff8=util[_0xae20('0x2c')](_0xae20('0x68'),_0x58e447[_0xae20('0x56')],_0x26db88['id']);if(_0x5ca956>0x6){_0x204ff8=util[_0xae20('0x2c')](_0xae20('0x69'),_0x58e447[_0xae20('0x56')],_0x26db88['id']);}logger[_0xae20('0xd')](_0xae20('0x5a'),_0xae20('0x6a'));emit(util[_0xae20('0x2c')](_0xae20('0x6b'),_0x3e5cba[_0xae20('0xf')]),_0xae20('0x6c'),{'uri':_0x204ff8});})[_0xae20('0x6d')](function(_0x48957a){logger[_0xae20('0x6e')]('[QUEUE]',JSON[_0xae20('0x28')](_0x48957a));});};exports['outbound']=function(_0x51f09a,_0x31b380,_0x2e4637,_0x58987a,_0x53578a,_0x5f06cd,_0x2561da){var _0x545618,_0x29cf06,_0x516aec,_0x3758d1;_0x5f06cd['remoteUri']=intUtil['stripTrailingSlash'](_0x5f06cd[_0xae20('0x56')]);_0x5f06cd[_0xae20('0x58')]=intUtil['stripTrailingSlash'](_0x5f06cd[_0xae20('0x58')]);def['uri']=util[_0xae20('0x2c')](_0xae20('0x6f'),_0x5f06cd[_0xae20('0x56')]);if(_0x2561da&&_0x2561da[_0xae20('0x70')]&&_0x2561da[_0xae20('0x70')]!==_0xae20('0x71')){logger['info'](_0xae20('0x72'),_0xae20('0x73'));_0x31b380[_0xae20('0x5d')]=util['format'](_0xae20('0x5b'),_0x5f06cd[_0xae20('0x58')],_0x31b380['uniqueid'],md5(_0x31b380[_0xae20('0x5c')]));}return getConnection(_0x5f06cd)[_0xae20('0x2f')](function(_0x46b16d){_0x3758d1=_0x46b16d;return getUser(_0x5f06cd,_0x58987a[_0xae20('0xf')],_0x3758d1);})[_0xae20('0x2f')](function(_0x5dcfbd){_0x545618=_0x5dcfbd;logger[_0xae20('0xd')]('The\x20User\x20ID\x20is:',_0x545618['id']);return getEndUser(_0x5f06cd,_0x31b380['destcalleridname'],_0x31b380[_0xae20('0x74')],_0x3758d1);})[_0xae20('0x2f')](function(_0x2f70f2){_0x29cf06=_0x2f70f2;logger[_0xae20('0xd')](_0xae20('0x61'),_0x29cf06['id']);return getTicket(_0x5f06cd,_0x545618,_0x29cf06,_0x2e4637,_0x31b380,_0x2e4637[_0xae20('0x62')],_0x3758d1,'Outbound');})[_0xae20('0x2f')](function(_0x60e81e){_0x516aec=_0x60e81e;logger[_0xae20('0xd')]('Ticket\x20created!');logger[_0xae20('0xd')]('The\x20Ticket\x20ID\x20is:',_0x516aec['id']);return setRelationship(_0x3758d1,_0x545618,_0x516aec,_0xae20('0x75'));})[_0xae20('0x2f')](function(){return setRelationship(_0x3758d1,_0x29cf06,_0x516aec,_0xae20('0x65'));})[_0xae20('0x2f')](function(){return getServerInfo(_0x3758d1);})['then'](function(_0x1dc09f){var _0x28a5fa=parseInt(_0x1dc09f['version']['charAt'](0x0));var _0x46492c=util['format'](_0xae20('0x68'),_0x5f06cd['remoteUri'],_0x516aec['id']);if(_0x28a5fa>0x6){_0x46492c=util['format'](_0xae20('0x69'),_0x5f06cd[_0xae20('0x56')],_0x516aec['id']);}logger[_0xae20('0xd')]('[OUTBOUND]',_0xae20('0x6a'));emit(util['format'](_0xae20('0x6b'),_0x58987a[_0xae20('0xf')]),_0xae20('0x6c'),{'uri':_0x46492c});})[_0xae20('0x6d')](function(_0x2ab57d){logger[_0xae20('0x6e')](_0xae20('0x72'),JSON[_0xae20('0x28')](_0x2ab57d));});};exports[_0xae20('0x76')]=function(_0x285d2f,_0x1cbe8d,_0x2977a4,_0x98e970,_0x5a328d,_0x38bc84){var _0xa9fe98,_0x36b9bd,_0x2517b7,_0x1c22b9;_0x38bc84[_0xae20('0x56')]=intUtil['stripTrailingSlash'](_0x38bc84[_0xae20('0x56')]);_0x38bc84['serverUrl']=intUtil['stripTrailingSlash'](_0x38bc84['serverUrl']);def['uri']=util[_0xae20('0x2c')](_0xae20('0x6f'),_0x38bc84[_0xae20('0x56')]);if(_0x5a328d&&_0x5a328d[_0xae20('0x77')]){logger[_0xae20('0xd')]('['+_0x1cbe8d[_0xae20('0x78')][_0xae20('0x79')]()+']',_0xae20('0x73'));_0x1cbe8d[_0xae20('0x5d')]=util[_0xae20('0x2c')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x38bc84[_0xae20('0x58')],_0x1cbe8d[_0xae20('0x5c')],md5(_0x1cbe8d[_0xae20('0x5c')]));}else{_0x1cbe8d[_0xae20('0x5d')]='';}return getConnection(_0x38bc84)[_0xae20('0x2f')](function(_0xaebc39){_0x1c22b9=_0xaebc39;if(!_['isNil'](_0x98e970)){return getUser(_0x38bc84,_0x98e970[_0xae20('0xf')],_0x1c22b9);}else{return getUser(_0x38bc84,null,_0x1c22b9);}})[_0xae20('0x2f')](function(_0x342353){_0xa9fe98=_0x342353;logger['info'](_0xae20('0x5e'),_0xa9fe98['id']);return getEndUser(_0x38bc84,_0x1cbe8d[_0xae20('0x5f')],_0x1cbe8d[_0xae20('0x60')],_0x1c22b9);})[_0xae20('0x2f')](function(_0x10dd1c){_0x36b9bd=_0x10dd1c;logger['info'](_0xae20('0x61'),_0x36b9bd['id']);return getTicket(_0x38bc84,_0xa9fe98,_0x36b9bd,_0x2977a4,_0x1cbe8d,_0x2977a4['Fields'],_0x1c22b9,_0xae20('0x7a'));})[_0xae20('0x2f')](function(_0x2918ef){_0x2517b7=_0x2918ef;logger['info']('Ticket\x20created!');logger['info'](_0xae20('0x64'),_0x2517b7['id']);return setRelationship(_0x1c22b9,_0xa9fe98,_0x2517b7,_0xae20('0x75'));})[_0xae20('0x2f')](function(){return setRelationship(_0x1c22b9,_0x36b9bd,_0x2517b7,_0xae20('0x65'));})[_0xae20('0x2f')](function(){return getServerInfo(_0x1c22b9);})['catch'](function(_0x202e77){logger[_0xae20('0x6e')]('['+_0x1cbe8d[_0xae20('0x78')][_0xae20('0x79')]()+']',JSON['stringify'](_0x202e77));});};
\ No newline at end of file
+var _0x6060=['uri','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Fields','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','version','charAt','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','user:%s','trigger:browser:url','error','outbound','recordingFormat','[OUTBOUND]','destcalleridnum','Outbound','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','lastevent','toUpperCase','calleridnum','catch','lodash','md5','util','ioredis','./util','../../../../config/environment','sugarcrm','redis','defaults','localhost','POST','emit','info','Creating\x20new\x20ticket...','name','created_by','getString','date_start','replace','duration_hours','parent_id','Contacts','parent_name','direction','length','variableName','push','JSON','stringify','Calls','format','apiKey','base64','isNil','Getting\x20agent\x20with\x20name','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','entry_list','find','name_value_list','user_name','Agent\x20found!','resolve','value','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','contacts.phone_home\x20=\x20\x22%s\x22','then','Enduser\x20found!','phone_home','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','set_entry','first_name','<unknown>','Enduser\x20created.','[HTTP]','map','forEach','type','string','nameField','customField','toLowerCase','toString','custom_fields','content','variable','idField','customVariable','Variable','login','password','PLAIN','xCALLY\x20Motion\x20integration','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','stripTrailingSlash','remoteUri','serverUrl'];(function(_0x23cac8,_0x410624){var _0x324092=function(_0x1c1aea){while(--_0x1c1aea){_0x23cac8['push'](_0x23cac8['shift']());}};_0x324092(++_0x410624);}(_0x6060,0x10a));var _0x0606=function(_0x448e42,_0x4e87e0){_0x448e42=_0x448e42-0x0;var _0x3398a4=_0x6060[_0x448e42];return _0x3398a4;};'use strict';var _=require(_0x0606('0x0'));var rp=require('request-promise');var BPromise=require('bluebird');var md5=require(_0x0606('0x1'));var util=require(_0x0606('0x2'));var Redis=require(_0x0606('0x3'));var intUtil=require(_0x0606('0x4'));var config=require(_0x0606('0x5'));var logger=require('../../../../config/logger')(_0x0606('0x6'));config[_0x0606('0x7')]=_[_0x0606('0x8')](config[_0x0606('0x7')],{'host':_0x0606('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var def={'method':_0x0606('0xa'),'json':!![]};function emit(_0x68a4e8,_0x509b6e,_0x387892){io['to'](_0x68a4e8)[_0x0606('0xb')](_0x509b6e,_0x387892);}function getTicket(_0x493710,_0x7eb39f,_0x2f69c0,_0x1b912e,_0x92ea79,_0x2ad9ec,_0xc7c5c,_0x2d4a31){logger[_0x0606('0xc')](_0x0606('0xd'));var _0x19b0d9=new Date();var _0x72956d=[{'name':_0x0606('0xe'),'value':intUtil['getString'](_0x1b912e['Subjects'],_0x92ea79,'\x20')},{'name':'assigned_user_id','value':_0x7eb39f['id']},{'name':_0x0606('0xf'),'value':_0x7eb39f['id']},{'name':'description','value':intUtil[_0x0606('0x10')](_0x1b912e['Descriptions'],_0x92ea79,'\x0a')},{'name':_0x0606('0x11'),'value':_0x19b0d9['toISOString']()['slice'](0x0,0x13)[_0x0606('0x12')]('T','\x20')},{'name':_0x0606('0x13'),'value':'0'},{'name':'duration_minutes','value':'15'},{'name':_0x0606('0x14'),'value':_0x2f69c0['id']},{'name':'parent_type','value':_0x0606('0x15')},{'name':_0x0606('0x16'),'value':_0x2f69c0[_0x0606('0xe')]},{'name':_0x0606('0x17'),'value':_0x2d4a31}];if(_0x2ad9ec[_0x0606('0x18')]){_['forEach'](_0x2ad9ec,function(_0x5dfd9e){if(_0x92ea79[_0x5dfd9e[_0x0606('0x19')]]){_0x72956d[_0x0606('0x1a')]({'name':_0x5dfd9e['idField'],'value':_0x92ea79[_0x5dfd9e[_0x0606('0x19')]]});}});}return request({'form':{'method':'set_entry','input_type':_0x0606('0x1b'),'response_type':_0x0606('0x1b'),'rest_data':JSON[_0x0606('0x1c')]({'session':_0xc7c5c['id'],'module_name':_0x0606('0x1d'),'name_value_list':_0x72956d})}});}function getAuth(_0x30ac83){return util[_0x0606('0x1e')]('Basic\x20%s',new Buffer(_0x30ac83[_0x0606('0x1f')]+':X')['toString'](_0x0606('0x20')));}function getServerInfo(_0x4bf6ea){return request({'form':{'method':'get_server_info','input_type':'JSON','response_type':'JSON','rest_data':JSON['stringify']({'session':_0x4bf6ea['id']})}});}function getUser(_0x512945,_0x3fb1c8,_0x55cb31){if(!_[_0x0606('0x21')](_0x3fb1c8)){logger['info'](_0x0606('0x22'),_0x3fb1c8);return request({'form':{'method':_0x0606('0x23'),'input_type':_0x0606('0x1b'),'response_type':_0x0606('0x1b'),'rest_data':JSON[_0x0606('0x1c')]({'session':_0x55cb31['id'],'module_name':_0x0606('0x24'),'query':util[_0x0606('0x1e')](_0x0606('0x25'),_0x3fb1c8),'order_by':'','offset':'0','select_fields':['id','name','user_name'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0xd42240){if(_0xd42240[_0x0606('0x26')][_0x0606('0x18')]){var _0x18d578=_[_0x0606('0x27')](_0xd42240['entry_list'],function(_0x38207f){return _0x38207f[_0x0606('0x28')][_0x0606('0x29')]['value']===_0x3fb1c8;});if(_0x18d578){logger[_0x0606('0xc')](_0x0606('0x2a'));return BPromise[_0x0606('0x2b')]({'id':_0x18d578[_0x0606('0x28')]['id']['value'],'name':_0x18d578[_0x0606('0x28')]['name'][_0x0606('0x2c')]});}}logger['info'](_0x0606('0x2d'));return BPromise[_0x0606('0x2b')]({'id':_0x55cb31[_0x0606('0x28')][_0x0606('0x2e')]['value'],'name':_0x55cb31['name_value_list']['user_name'][_0x0606('0x2c')]});});}else{logger['info'](_0x0606('0x2f'));return BPromise['resolve']({'id':_0x55cb31['name_value_list'][_0x0606('0x2e')][_0x0606('0x2c')],'name':_0x55cb31[_0x0606('0x28')]['user_name'][_0x0606('0x2c')]});}}function getEndUser(_0x5c9b68,_0x321919,_0x59b26c,_0x5bd823){logger[_0x0606('0xc')]('Searching\x20enduser\x20with\x20phone',_0x59b26c);return request({'form':{'method':_0x0606('0x23'),'input_type':_0x0606('0x1b'),'response_type':_0x0606('0x1b'),'rest_data':JSON[_0x0606('0x1c')]({'session':_0x5bd823['id'],'module_name':_0x0606('0x15'),'query':util['format'](_0x0606('0x30'),_0x59b26c),'order_by':'','offset':'0','select_fields':['id',_0x0606('0xe'),'phone_home'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x0606('0x31')](function(_0x5c1bae){if(_0x5c1bae[_0x0606('0x26')][_0x0606('0x18')]){var _0x287eea=_[_0x0606('0x27')](_0x5c1bae['entry_list'],function(_0x57d941){return _0x57d941[_0x0606('0x28')]['phone_home']['value']===_0x59b26c;});if(_0x287eea){logger['info'](_0x0606('0x32'));return BPromise[_0x0606('0x2b')]({'id':_0x287eea[_0x0606('0x28')]['id'][_0x0606('0x2c')],'name':_0x287eea['name_value_list']['name']['value'],'phone':_0x287eea[_0x0606('0x28')][_0x0606('0x33')]['value']});}}else{logger[_0x0606('0xc')](_0x0606('0x34'));return request({'form':{'method':_0x0606('0x35'),'input_type':_0x0606('0x1b'),'response_type':_0x0606('0x1b'),'rest_data':JSON[_0x0606('0x1c')]({'session':_0x5bd823['id'],'module_name':'Contacts','name_value_list':[{'name':_0x0606('0x36'),'value':_0x321919!==_0x0606('0x37')?_0x321919:util['format']('Caller\x20-\x20%s',_0x59b26c)},{'name':_0x0606('0x33'),'value':_0x59b26c}]})}})[_0x0606('0x31')](function(_0x33e3e0){logger[_0x0606('0xc')](_0x0606('0x38'));return BPromise['resolve']({'id':_0x33e3e0['id'],'name':_0x33e3e0[_0x0606('0x26')][_0x0606('0x36')][_0x0606('0x2c')],'phone':_0x33e3e0['entry_list']['phone_home'][_0x0606('0x2c')]});});}});}function request(_0x222dbe){logger['debug'](_0x0606('0x39'),JSON[_0x0606('0x1c')](_0x222dbe));return rp(_['merge'](def,_0x222dbe));}function getTags(_0x388980,_0x227ae6){var _0x50c779=[];if(_0x388980&&_0x388980[_0x0606('0x18')]>0x0){_0x50c779=_[_0x0606('0x3a')](_0x388980,_0x227ae6);}return _0x50c779;}function getCustomFields(_0x4b47a0,_0x1645ac){var _0x3f2678=[];var _0x555690={'custom_fields':[]};if(_0x4b47a0[_0x0606('0x18')]>0x0){_[_0x0606('0x3b')](_0x4b47a0,function(_0x511abb){if(_0x511abb[_0x0606('0x3c')]===_0x0606('0x3d')&&_0x511abb[_0x0606('0x3e')]&&!_0x511abb[_0x0606('0x3f')]){_0x555690[_0x511abb[_0x0606('0x3e')][_0x0606('0x40')]()]=_0x511abb['content'][_0x0606('0x41')]();}else if(_0x511abb[_0x0606('0x3c')]===_0x0606('0x3d')&&_0x511abb['idField']&&_0x511abb[_0x0606('0x3f')]){_0x555690[_0x0606('0x42')][_0x0606('0x1a')]({'id':_0x511abb['idField'],'value':_0x511abb[_0x0606('0x43')][_0x0606('0x41')]()});}else if(_0x511abb[_0x0606('0x3c')]===_0x0606('0x44')&&_0x511abb[_0x0606('0x19')]&&_0x511abb[_0x0606('0x45')]&&_0x511abb[_0x0606('0x3f')]){_0x1645ac[_0x511abb[_0x0606('0x19')]]&&_0x555690['custom_fields'][_0x0606('0x1a')]({'id':_0x511abb[_0x0606('0x45')],'value':_0x1645ac[_0x511abb[_0x0606('0x19')]][_0x0606('0x41')]()});}else if(_0x511abb['type']===_0x0606('0x46')&&_0x511abb[_0x0606('0x47')]&&_0x511abb['Variable'][_0x0606('0xe')]&&_0x511abb[_0x0606('0x45')]&&_0x511abb['customField']){_0x1645ac[_0x511abb[_0x0606('0x47')]['name']['toLowerCase']()]&&_0x555690['custom_fields'][_0x0606('0x1a')]({'id':_0x511abb[_0x0606('0x45')],'value':_0x1645ac[_0x511abb[_0x0606('0x47')][_0x0606('0xe')][_0x0606('0x40')]()][_0x0606('0x41')]()});}});}return _0x555690;}function getConnection(_0x57fd61){return request({'method':_0x0606('0xa'),'form':{'method':_0x0606('0x48'),'input_type':_0x0606('0x1b'),'response_type':_0x0606('0x1b'),'rest_data':JSON[_0x0606('0x1c')]({'user_auth':{'user_name':_0x57fd61['username'],'password':_0x57fd61[_0x0606('0x49')],'encryption':_0x0606('0x4a')},'application':_0x0606('0x4b')})}})[_0x0606('0x31')](function(_0x3fcb77){var _0x1718bd=_0x3fcb77;if(_0x1718bd['id']){def['sessionID']=_0x1718bd['id'];return BPromise[_0x0606('0x2b')](_0x1718bd);}else{throw new Error(util[_0x0606('0x1e')](_0x0606('0x4c'),_0x57fd61['id']));}});}function setRelationship(_0x115778,_0x4d0c25,_0x12a39a,_0x395809){return request({'form':{'method':_0x0606('0x4d'),'input_type':_0x0606('0x1b'),'response_type':_0x0606('0x1b'),'rest_data':JSON[_0x0606('0x1c')]({'session':_0x115778['id'],'module_name':_0x0606('0x1d'),'module_id':_0x12a39a['id'],'link_field_name':_0x395809,'related_ids':[_0x4d0c25['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x0606('0x4e')]=function(_0x4af4a4,_0x34ffdf,_0x17bd8a,_0x483918,_0x25eaec,_0xf542b1){var _0x4639bd,_0x1c50ac,_0x11cce6,_0x120255;_0xf542b1['remoteUri']=intUtil[_0x0606('0x4f')](_0xf542b1[_0x0606('0x50')]);_0xf542b1[_0x0606('0x51')]=intUtil[_0x0606('0x4f')](_0xf542b1[_0x0606('0x51')]);def[_0x0606('0x52')]=util[_0x0606('0x1e')](_0x0606('0x53'),_0xf542b1[_0x0606('0x50')]);if(_0x25eaec&&_0x25eaec[_0x0606('0x54')]){logger['info'](_0x0606('0x55'),_0x0606('0x56'));_0x34ffdf[_0x0606('0x57')]=util['format'](_0x0606('0x58'),_0xf542b1['serverUrl'],_0x34ffdf[_0x0606('0x59')],md5(_0x34ffdf[_0x0606('0x59')]));}else{_0x34ffdf['recordingURL']='';}return getConnection(_0xf542b1)[_0x0606('0x31')](function(_0xa5c1e0){_0x120255=_0xa5c1e0;return getUser(_0xf542b1,_0x483918[_0x0606('0xe')],_0x120255);})[_0x0606('0x31')](function(_0x3e0dcd){_0x4639bd=_0x3e0dcd;logger[_0x0606('0xc')](_0x0606('0x5a'),_0x4639bd['id']);return getEndUser(_0xf542b1,_0x34ffdf[_0x0606('0x5b')],_0x34ffdf['calleridnum'],_0x120255);})[_0x0606('0x31')](function(_0x31a7bc){_0x1c50ac=_0x31a7bc;logger[_0x0606('0xc')](_0x0606('0x5c'),_0x1c50ac['id']);return getTicket(_0xf542b1,_0x4639bd,_0x1c50ac,_0x17bd8a,_0x34ffdf,_0x17bd8a[_0x0606('0x5d')],_0x120255,_0x0606('0x5e'));})[_0x0606('0x31')](function(_0x2f104d){_0x11cce6=_0x2f104d;logger['info'](_0x0606('0x5f'));logger[_0x0606('0xc')](_0x0606('0x60'),_0x11cce6['id']);return setRelationship(_0x120255,_0x4639bd,_0x11cce6,_0x0606('0x61'));})[_0x0606('0x31')](function(){return setRelationship(_0x120255,_0x1c50ac,_0x11cce6,_0x0606('0x62'));})[_0x0606('0x31')](function(){return getServerInfo(_0x120255);})['then'](function(_0x54406b){var _0x114242=parseInt(_0x54406b[_0x0606('0x63')][_0x0606('0x64')](0x0));var _0x50917e=util['format']('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0xf542b1[_0x0606('0x50')],_0x11cce6['id']);if(_0x114242>0x6){_0x50917e=util[_0x0606('0x1e')](_0x0606('0x65'),_0xf542b1['remoteUri'],_0x11cce6['id']);}logger[_0x0606('0xc')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x0606('0x1e')](_0x0606('0x66'),_0x483918[_0x0606('0xe')]),_0x0606('0x67'),{'uri':_0x50917e});})['catch'](function(_0x1a8c2e){logger[_0x0606('0x68')](_0x0606('0x55'),JSON[_0x0606('0x1c')](_0x1a8c2e));});};exports[_0x0606('0x69')]=function(_0x415668,_0x534bbf,_0x469dab,_0x4ad4d0,_0x3e06e3,_0x2901a5,_0x184936){var _0x3caf2b,_0x204ce6,_0x2ab658,_0x976547;_0x2901a5[_0x0606('0x50')]=intUtil[_0x0606('0x4f')](_0x2901a5[_0x0606('0x50')]);_0x2901a5['serverUrl']=intUtil[_0x0606('0x4f')](_0x2901a5['serverUrl']);def[_0x0606('0x52')]=util[_0x0606('0x1e')](_0x0606('0x53'),_0x2901a5['remoteUri']);if(_0x184936&&_0x184936[_0x0606('0x6a')]&&_0x184936['recordingFormat']!=='none'){logger[_0x0606('0xc')](_0x0606('0x6b'),_0x0606('0x56'));_0x534bbf[_0x0606('0x57')]=util[_0x0606('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2901a5['serverUrl'],_0x534bbf[_0x0606('0x59')],md5(_0x534bbf['uniqueid']));}return getConnection(_0x2901a5)['then'](function(_0x4e5fce){_0x976547=_0x4e5fce;return getUser(_0x2901a5,_0x4ad4d0[_0x0606('0xe')],_0x976547);})[_0x0606('0x31')](function(_0x1ba9b3){_0x3caf2b=_0x1ba9b3;logger[_0x0606('0xc')](_0x0606('0x5a'),_0x3caf2b['id']);return getEndUser(_0x2901a5,_0x534bbf['destcalleridname'],_0x534bbf[_0x0606('0x6c')],_0x976547);})[_0x0606('0x31')](function(_0x240bcf){_0x204ce6=_0x240bcf;logger[_0x0606('0xc')](_0x0606('0x5c'),_0x204ce6['id']);return getTicket(_0x2901a5,_0x3caf2b,_0x204ce6,_0x469dab,_0x534bbf,_0x469dab[_0x0606('0x5d')],_0x976547,_0x0606('0x6d'));})[_0x0606('0x31')](function(_0x3b23e8){_0x2ab658=_0x3b23e8;logger['info'](_0x0606('0x5f'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x2ab658['id']);return setRelationship(_0x976547,_0x3caf2b,_0x2ab658,_0x0606('0x61'));})[_0x0606('0x31')](function(){return setRelationship(_0x976547,_0x204ce6,_0x2ab658,_0x0606('0x62'));})[_0x0606('0x31')](function(){return getServerInfo(_0x976547);})[_0x0606('0x31')](function(_0x3e4407){var _0x2a7b8d=parseInt(_0x3e4407[_0x0606('0x63')][_0x0606('0x64')](0x0));var _0x5e1916=util[_0x0606('0x1e')](_0x0606('0x6e'),_0x2901a5['remoteUri'],_0x2ab658['id']);if(_0x2a7b8d>0x6){_0x5e1916=util[_0x0606('0x1e')](_0x0606('0x65'),_0x2901a5[_0x0606('0x50')],_0x2ab658['id']);}logger[_0x0606('0xc')](_0x0606('0x6b'),_0x0606('0x6f'));emit(util[_0x0606('0x1e')]('user:%s',_0x4ad4d0[_0x0606('0xe')]),_0x0606('0x67'),{'uri':_0x5e1916});})['catch'](function(_0x41217e){logger[_0x0606('0x68')](_0x0606('0x6b'),JSON[_0x0606('0x1c')](_0x41217e));});};exports['unmanaged']=function(_0x386cc6,_0x2a1766,_0x44e5e1,_0x14dcae,_0x176523,_0x8784f8){var _0xa85680,_0x338ec6,_0x43310,_0x55a1af;_0x8784f8['remoteUri']=intUtil['stripTrailingSlash'](_0x8784f8[_0x0606('0x50')]);_0x8784f8[_0x0606('0x51')]=intUtil['stripTrailingSlash'](_0x8784f8[_0x0606('0x51')]);def['uri']=util[_0x0606('0x1e')](_0x0606('0x53'),_0x8784f8['remoteUri']);if(_0x176523&&_0x176523[_0x0606('0x54')]){logger[_0x0606('0xc')]('['+_0x2a1766[_0x0606('0x70')][_0x0606('0x71')]()+']',_0x0606('0x56'));_0x2a1766['recordingURL']=util[_0x0606('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x8784f8['serverUrl'],_0x2a1766[_0x0606('0x59')],md5(_0x2a1766[_0x0606('0x59')]));}else{_0x2a1766['recordingURL']='';}return getConnection(_0x8784f8)[_0x0606('0x31')](function(_0x2675f6){_0x55a1af=_0x2675f6;if(!_[_0x0606('0x21')](_0x14dcae)){return getUser(_0x8784f8,_0x14dcae[_0x0606('0xe')],_0x55a1af);}else{return getUser(_0x8784f8,null,_0x55a1af);}})[_0x0606('0x31')](function(_0xba4723){_0xa85680=_0xba4723;logger[_0x0606('0xc')](_0x0606('0x5a'),_0xa85680['id']);return getEndUser(_0x8784f8,_0x2a1766[_0x0606('0x5b')],_0x2a1766[_0x0606('0x72')],_0x55a1af);})[_0x0606('0x31')](function(_0x21bb87){_0x338ec6=_0x21bb87;logger['info'](_0x0606('0x5c'),_0x338ec6['id']);return getTicket(_0x8784f8,_0xa85680,_0x338ec6,_0x44e5e1,_0x2a1766,_0x44e5e1[_0x0606('0x5d')],_0x55a1af,_0x0606('0x5e'));})[_0x0606('0x31')](function(_0x4c42f1){_0x43310=_0x4c42f1;logger[_0x0606('0xc')]('Ticket\x20created!');logger[_0x0606('0xc')](_0x0606('0x60'),_0x43310['id']);return setRelationship(_0x55a1af,_0xa85680,_0x43310,_0x0606('0x61'));})[_0x0606('0x31')](function(){return setRelationship(_0x55a1af,_0x338ec6,_0x43310,_0x0606('0x62'));})[_0x0606('0x31')](function(){return getServerInfo(_0x55a1af);})[_0x0606('0x73')](function(_0x1f5563){logger[_0x0606('0x68')]('['+_0x2a1766[_0x0606('0x70')][_0x0606('0x71')]()+']',JSON[_0x0606('0x1c')](_0x1f5563));});};
\ No newline at end of file
index 5014aab..e820708 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0efb=['type','string','content','variable','variableName','push','toString','customVariable','Variable','name','toLowerCase','keyValue','keyType','format','key','keyContent','%s:\x20%s','join','slice','substring','lastIndexOf','isNil','lodash','util','getString','length','sortBy'];(function(_0x595dd9,_0x3ec3d3){var _0x35128a=function(_0x89acec){while(--_0x89acec){_0x595dd9['push'](_0x595dd9['shift']());}};_0x35128a(++_0x3ec3d3);}(_0x0efb,0x175));var _0xb0ef=function(_0x1ac6e5,_0x40f47f){_0x1ac6e5=_0x1ac6e5-0x0;var _0x5877dc=_0x0efb[_0x1ac6e5];return _0x5877dc;};'use strict';var _=require(_0xb0ef('0x0'));var util=require(_0xb0ef('0x1'));exports[_0xb0ef('0x2')]=function(_0x38a47a,_0xd688cc,_0x4cffd5){var _0x25eb0e=[];if(_0x38a47a[_0xb0ef('0x3')]>0x0){var _0x3cb815=_[_0xb0ef('0x4')](_0x38a47a,['id']);for(var _0x3dbfa9=0x0;_0x3dbfa9<_0x3cb815['length'];_0x3dbfa9++){var _0x373208=_0x3cb815[_0x3dbfa9];if(_0x373208[_0xb0ef('0x5')]===_0xb0ef('0x6')){_0x25eb0e['push'](_0x373208[_0xb0ef('0x7')]);}else if(_0x373208[_0xb0ef('0x5')]===_0xb0ef('0x8')&&_0x373208[_0xb0ef('0x9')]){_0xd688cc[_0x373208[_0xb0ef('0x9')]]&&_0x25eb0e[_0xb0ef('0xa')](_0xd688cc[_0x373208[_0xb0ef('0x9')]][_0xb0ef('0xb')]());}else if(_0x373208[_0xb0ef('0x5')]===_0xb0ef('0xc')&&_0x373208['Variable']&&_0x373208[_0xb0ef('0xd')][_0xb0ef('0xe')]){_0xd688cc[_0x373208[_0xb0ef('0xd')][_0xb0ef('0xe')][_0xb0ef('0xf')]()]&&_0x25eb0e[_0xb0ef('0xa')](_0xd688cc[_0x373208['Variable'][_0xb0ef('0xe')][_0xb0ef('0xf')]()][_0xb0ef('0xb')]());}else if(_0x373208[_0xb0ef('0x5')]===_0xb0ef('0x10')){if(_0x373208[_0xb0ef('0x11')]==='string'&&_0x373208['key']){_0x25eb0e['push'](util[_0xb0ef('0x12')]('%s:\x20%s',_0x373208[_0xb0ef('0x13')],_0x373208[_0xb0ef('0x14')]));}else if(_0x373208[_0xb0ef('0x11')]==='variable'&&_0x373208['variableName']&&_0x373208['key']){_0xd688cc[_0x373208[_0xb0ef('0x9')]]&&_0x25eb0e['push'](util[_0xb0ef('0x12')](_0xb0ef('0x15'),_0x373208[_0xb0ef('0x13')],_0xd688cc[_0x373208[_0xb0ef('0x9')]]));}else if(_0x373208[_0xb0ef('0x11')]===_0xb0ef('0xc')&&_0x373208[_0xb0ef('0xd')]&&_0x373208[_0xb0ef('0xd')][_0xb0ef('0xe')]&&_0x373208['key']){_0xd688cc[_0x373208['Variable'][_0xb0ef('0xe')][_0xb0ef('0xf')]()]&&_0x25eb0e[_0xb0ef('0xa')](util[_0xb0ef('0x12')]('%s:\x20%s',_0x373208[_0xb0ef('0x13')],_0xd688cc[_0x373208['Variable'][_0xb0ef('0xe')][_0xb0ef('0xf')]()]));}}}}return _0x25eb0e[_0xb0ef('0x16')](_0x4cffd5);};exports['stripTrailingSlash']=function(_0x559f32){var _0x92f9e0=_0x559f32[_0xb0ef('0x17')](-0x1);if(_0x92f9e0==='/'){_0x559f32=_0x559f32[_0xb0ef('0x18')](0x0,_0x559f32[_0xb0ef('0x19')](_0x92f9e0));}return _0x559f32;};exports['validateEmail']=function(_0x7db206){if(!_[_0xb0ef('0x1a')](_0x7db206)&&_0x7db206!==''){var _0x4f5b72=/^(([^<>()\[\]\\.,;:\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 _0x4f5b72['test'](String(_0x7db206)['toLowerCase']());}else{return![];}};
\ No newline at end of file
+var _0x5198=['length','string','push','content','type','variable','variableName','customVariable','Variable','name','toLowerCase','toString','keyValue','keyType','key','format','%s:\x20%s','keyContent','stripTrailingSlash','substring','lastIndexOf','validateEmail','test','lodash','util','getString','sortBy'];(function(_0x10e840,_0x5b3935){var _0x405caa=function(_0x46b707){while(--_0x46b707){_0x10e840['push'](_0x10e840['shift']());}};_0x405caa(++_0x5b3935);}(_0x5198,0x9e));var _0x8519=function(_0x161500,_0x4f4805){_0x161500=_0x161500-0x0;var _0x181e9f=_0x5198[_0x161500];return _0x181e9f;};'use strict';var _=require(_0x8519('0x0'));var util=require(_0x8519('0x1'));exports[_0x8519('0x2')]=function(_0x317fff,_0x4e5f44,_0x56cfdb){var _0x1fbe72=[];if(_0x317fff['length']>0x0){var _0xd2d945=_[_0x8519('0x3')](_0x317fff,['id']);for(var _0x3bfb31=0x0;_0x3bfb31<_0xd2d945[_0x8519('0x4')];_0x3bfb31++){var _0x181d78=_0xd2d945[_0x3bfb31];if(_0x181d78['type']===_0x8519('0x5')){_0x1fbe72[_0x8519('0x6')](_0x181d78[_0x8519('0x7')]);}else if(_0x181d78[_0x8519('0x8')]===_0x8519('0x9')&&_0x181d78[_0x8519('0xa')]){_0x4e5f44[_0x181d78[_0x8519('0xa')]]&&_0x1fbe72['push'](_0x4e5f44[_0x181d78[_0x8519('0xa')]]['toString']());}else if(_0x181d78[_0x8519('0x8')]===_0x8519('0xb')&&_0x181d78[_0x8519('0xc')]&&_0x181d78[_0x8519('0xc')][_0x8519('0xd')]){_0x4e5f44[_0x181d78[_0x8519('0xc')][_0x8519('0xd')][_0x8519('0xe')]()]&&_0x1fbe72['push'](_0x4e5f44[_0x181d78[_0x8519('0xc')][_0x8519('0xd')]['toLowerCase']()][_0x8519('0xf')]());}else if(_0x181d78[_0x8519('0x8')]===_0x8519('0x10')){if(_0x181d78[_0x8519('0x11')]===_0x8519('0x5')&&_0x181d78[_0x8519('0x12')]){_0x1fbe72['push'](util[_0x8519('0x13')](_0x8519('0x14'),_0x181d78[_0x8519('0x12')],_0x181d78[_0x8519('0x15')]));}else if(_0x181d78[_0x8519('0x11')]===_0x8519('0x9')&&_0x181d78[_0x8519('0xa')]&&_0x181d78[_0x8519('0x12')]){_0x4e5f44[_0x181d78['variableName']]&&_0x1fbe72['push'](util[_0x8519('0x13')](_0x8519('0x14'),_0x181d78[_0x8519('0x12')],_0x4e5f44[_0x181d78[_0x8519('0xa')]]));}else if(_0x181d78[_0x8519('0x11')]===_0x8519('0xb')&&_0x181d78[_0x8519('0xc')]&&_0x181d78['Variable'][_0x8519('0xd')]&&_0x181d78[_0x8519('0x12')]){_0x4e5f44[_0x181d78[_0x8519('0xc')][_0x8519('0xd')][_0x8519('0xe')]()]&&_0x1fbe72[_0x8519('0x6')](util['format'](_0x8519('0x14'),_0x181d78[_0x8519('0x12')],_0x4e5f44[_0x181d78[_0x8519('0xc')][_0x8519('0xd')][_0x8519('0xe')]()]));}}}}return _0x1fbe72['join'](_0x56cfdb);};exports[_0x8519('0x16')]=function(_0x57f8a6){var _0x4b68c4=_0x57f8a6['slice'](-0x1);if(_0x4b68c4==='/'){_0x57f8a6=_0x57f8a6[_0x8519('0x17')](0x0,_0x57f8a6[_0x8519('0x18')](_0x4b68c4));}return _0x57f8a6;};exports[_0x8519('0x19')]=function(_0x674b76){if(!_['isNil'](_0x674b76)&&_0x674b76!==''){var _0x5edb0c=/^(([^<>()\[\]\\.,;:\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 _0x5edb0c[_0x8519('0x1a')](String(_0x674b76)[_0x8519('0xe')]());}else{return![];}};
\ No newline at end of file
index c9ef3a1..2aa517f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['stringify','validateEmail','Getting\x20agent\x20with\x20email','GET','%s/webservice.php','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','length','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','getUser','admin','Searching\x20end\x20user\x20with\x20phone','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','Enduser\x20created.','phone','getEndUser','accessKey','login','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','stripTrailingSlash','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','recordingURL','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Fields','The\x20Ticket\x20ID\x20is:','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridnum','lastevent','bluebird','md5','util','ioredis','./util','../../../../config/environment','redis','localhost','socket.io-emitter','emit','forEach','string','picklist','idField','content','type','variable','variableName','toString','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Open','getString','Subjects','POST','remoteUri','create','username','sessionName','then','resolve','result','format','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','statusCode','error','[vTiger],\x20%s,\x20%s,\x20%s'];(function(_0x395043,_0x2595e9){var _0x286a53=function(_0xfa5d80){while(--_0xfa5d80){_0x395043['push'](_0x395043['shift']());}};_0x286a53(++_0x2595e9);}(_0x9c44,0x178));var _0x49c4=function(_0x13b02f,_0x462a53){_0x13b02f=_0x13b02f-0x0;var _0x12e9a6=_0x9c44[_0x13b02f];return _0x12e9a6;};'use strict';var _=require('lodash');var rp=require('request-promise');var BPromise=require(_0x49c4('0x0'));var md5=require(_0x49c4('0x1'));var util=require(_0x49c4('0x2'));var Redis=require(_0x49c4('0x3'));var intUtil=require(_0x49c4('0x4'));var config=require(_0x49c4('0x5'));var logger=require('../../../../config/logger')('vTiger');config[_0x49c4('0x6')]=_['defaults'](config[_0x49c4('0x6')],{'host':_0x49c4('0x7'),'port':0x18eb});var io=require(_0x49c4('0x8'))(new Redis(config[_0x49c4('0x6')]));function emit(_0x436234,_0x511d53,_0x11c586){io['to'](_0x436234)[_0x49c4('0x9')](_0x511d53,_0x11c586);}function getCustomFields(_0x1d13fb,_0x4487ca){var _0x4c7d3a={};if(_0x1d13fb['length']>0x0){_[_0x49c4('0xa')](_0x1d13fb,function(_0x313e73){if(_['includes']([_0x49c4('0xb'),_0x49c4('0xc')],_0x313e73['type'])&&_0x313e73['idField']){_0x4c7d3a[_0x313e73[_0x49c4('0xd')]]=_0x313e73[_0x49c4('0xe')]['toString']();}else if(_0x313e73[_0x49c4('0xf')]===_0x49c4('0x10')&&_0x313e73['variableName']&&_0x313e73[_0x49c4('0xd')]&&_0x4487ca[_0x313e73[_0x49c4('0x11')]]){_0x4c7d3a[_0x313e73[_0x49c4('0xd')]]=_0x4487ca[_0x313e73[_0x49c4('0x11')]][_0x49c4('0x12')]();}else if(_0x313e73[_0x49c4('0xf')]===_0x49c4('0x13')&&_0x313e73[_0x49c4('0x14')]&&_0x313e73['Variable'][_0x49c4('0x15')]&&_0x313e73[_0x49c4('0xd')]&&_0x4487ca[_0x313e73[_0x49c4('0x14')][_0x49c4('0x15')][_0x49c4('0x16')]()]){_0x4c7d3a[_0x313e73['idField']]=_0x4487ca[_0x313e73[_0x49c4('0x14')][_0x49c4('0x15')]['toLowerCase']()]['toString']();}});}return _0x4c7d3a;}function createTicket(_0x3c782d,_0x2f82d5,_0x3addb2,_0x59f29b,_0x24856d,_0x50b151,_0x2cbd50){logger[_0x49c4('0x17')](_0x49c4('0x18'));var _0x291526=_[_0x49c4('0x19')]({'parent_id':'','assigned_user_id':_0x2f82d5['id'],'ticketpriorities':_0x49c4('0x1a'),'ticketstatus':_0x49c4('0x1b'),'ticket_title':intUtil[_0x49c4('0x1c')](_0x59f29b[_0x49c4('0x1d')],_0x24856d,'\x20'),'description':intUtil['getString'](_0x59f29b['Descriptions'],_0x24856d,'\x0a'),'contact_id':_0x3addb2['id']},getCustomFields(_0x50b151,_0x24856d));var _0x57f502={'method':_0x49c4('0x1e'),'uri':util['format']('%s/webservice.php',_0x3c782d[_0x49c4('0x1f')]),'form':{'operation':_0x49c4('0x20'),'username':_0x3c782d[_0x49c4('0x21')],'sessionName':_0x2cbd50[_0x49c4('0x22')],'elementType':'HelpDesk','element':JSON['stringify'](_0x291526)},'json':!![]};return request(_0x57f502)[_0x49c4('0x23')](function(_0x9cb797){if(_0x9cb797['success']){return BPromise[_0x49c4('0x24')]({'id':_0x9cb797[_0x49c4('0x25')]['id']});}else{throw new Error(util[_0x49c4('0x26')](_0x49c4('0x27'),JSON['stringify'](_0x9cb797['error'])));}})[_0x49c4('0x28')](function(_0x53c199){var _0x3800b7=_0x53c199[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),'createTicket',_0x3800b7,JSON[_0x49c4('0x2c')](_0x53c199));});}function getUser(_0x2b2793,_0x46e04d,_0x4f28a2){if(intUtil[_0x49c4('0x2d')](_0x46e04d)){logger[_0x49c4('0x17')](_0x49c4('0x2e'),_0x46e04d);return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2b2793[_0x49c4('0x1f')]),'qs':{'operation':'query','username':_0x2b2793['username'],'sessionName':_0x4f28a2['sessionName'],'query':util[_0x49c4('0x26')](_0x49c4('0x31'),_0x46e04d)},'json':!![]})[_0x49c4('0x23')](function(_0x27e467){if(_0x27e467[_0x49c4('0x32')]&&_0x27e467['result'][_0x49c4('0x33')]){logger[_0x49c4('0x17')](_0x49c4('0x34'));return BPromise[_0x49c4('0x24')]({'id':_0x27e467['result'][0x0]['id'],'email':_0x27e467['result'][0x0][_0x49c4('0x35')],'name':_0x27e467[_0x49c4('0x25')][0x0][_0x49c4('0x36')]+'\x20'+_0x27e467[_0x49c4('0x25')][_0x49c4('0x37')]});}else{logger['info'](_0x49c4('0x38'));return BPromise[_0x49c4('0x24')]({'id':_0x4f28a2[_0x49c4('0x39')],'email':_0x2b2793['username'],'name':'admin'});}})[_0x49c4('0x28')](function(_0x1991e9){var _0x3bec0a=_0x1991e9[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x3a'),_0x3bec0a,JSON[_0x49c4('0x2c')](_0x1991e9));});}else{logger[_0x49c4('0x17')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x49c4('0x24')]({'id':_0x4f28a2['userId'],'email':_0x2b2793[_0x49c4('0x21')],'name':_0x49c4('0x3b')})[_0x49c4('0x28')](function(_0x1c2830){var _0x4ed4f8=_0x1c2830[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),'getUser',_0x4ed4f8,JSON[_0x49c4('0x2c')](_0x1c2830));});}}function getEndUser(_0x21d8c7,_0x178987,_0x5e5366,_0x1ba7a0){logger[_0x49c4('0x17')](_0x49c4('0x3c'),_0x5e5366);return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x21d8c7[_0x49c4('0x1f')]),'qs':{'operation':'query','username':_0x21d8c7[_0x49c4('0x21')],'sessionName':_0x1ba7a0[_0x49c4('0x22')],'query':util[_0x49c4('0x26')](_0x49c4('0x3d'),_0x5e5366,_0x5e5366,_0x5e5366,_0x5e5366,_0x5e5366)},'json':!![]})[_0x49c4('0x23')](function(_0x29dd5d){if(_0x29dd5d[_0x49c4('0x32')]&&_0x29dd5d[_0x49c4('0x25')][_0x49c4('0x33')]){logger[_0x49c4('0x17')](_0x49c4('0x3e'));return BPromise[_0x49c4('0x24')]({'id':_0x29dd5d[_0x49c4('0x25')][0x0]['id'],'name':_0x29dd5d['result'][0x0][_0x49c4('0x3f')]+'\x20'+_0x29dd5d['result'][0x0][_0x49c4('0x40')],'phone':_0x5e5366});}else{logger[_0x49c4('0x17')](_0x49c4('0x41'));return request({'method':_0x49c4('0x1e'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x21d8c7['remoteUri']),'form':{'operation':'create','sessionName':_0x1ba7a0[_0x49c4('0x22')],'elementType':_0x49c4('0x42'),'element':JSON[_0x49c4('0x2c')]({'lastname':_0x178987,'phone':_0x5e5366,'assigned_user_id':'\x20'})},'json':!![]})[_0x49c4('0x23')](function(_0x490823){logger[_0x49c4('0x17')](_0x49c4('0x43'));return BPromise[_0x49c4('0x24')]({'id':_0x490823[_0x49c4('0x25')]['id'],'name':_0x490823[_0x49c4('0x25')][_0x49c4('0x40')],'phone':_0x490823[_0x49c4('0x25')][_0x49c4('0x44')]});})[_0x49c4('0x28')](function(_0x5640d3){var _0x2ad771=_0x5640d3['statusCode']||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x45'),_0x2ad771,JSON[_0x49c4('0x2c')](_0x5640d3));});}});}function getConnection(_0x2d93d8){var _0x5b296d=_0x2d93d8[_0x49c4('0x21')];var _0x15b674=_0x2d93d8[_0x49c4('0x46')];return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2d93d8[_0x49c4('0x1f')]),'qs':{'operation':'getchallenge','username':_0x5b296d},'json':!![]})[_0x49c4('0x23')](function(_0x5cfff9){if(_0x5cfff9[_0x49c4('0x32')]){return request({'method':_0x49c4('0x1e'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2d93d8[_0x49c4('0x1f')]),'form':{'operation':_0x49c4('0x47'),'username':_0x5b296d,'accessKey':md5(_0x5cfff9[_0x49c4('0x25')]['token']+_0x15b674)},'json':!![]});}})[_0x49c4('0x23')](function(_0x3feaf0){if(_0x3feaf0['success']){return BPromise[_0x49c4('0x24')](_0x3feaf0[_0x49c4('0x25')]);}else{throw new Error(util[_0x49c4('0x26')](_0x49c4('0x48'),_0x2d93d8['id']));}})['catch'](function(_0x5d8bf0){var _0x144fd2=_0x5d8bf0['statusCode']||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x49'),_0x144fd2,JSON[_0x49c4('0x2c')](_0x5d8bf0));});}function request(_0x240c20){logger[_0x49c4('0x17')](_0x49c4('0x4a'),JSON['stringify'](_0x240c20));return rp(_0x240c20);}exports[_0x49c4('0x4b')]=function(_0x1550ce,_0x3936d3,_0x3d944c,_0x17ef75,_0x2644c0,_0x156748){var _0x25d174,_0x1e0b4f,_0x1856be,_0x5b822f;_0x156748['remoteUri']=intUtil[_0x49c4('0x4c')](_0x156748[_0x49c4('0x1f')]);if(_0x2644c0&&_0x2644c0['monitor_format']){logger['info'](_0x49c4('0x4d'),'Recording\x20is\x20enabled!');_0x3936d3['recordingURL']=util[_0x49c4('0x26')](_0x49c4('0x4e'),_0x156748[_0x49c4('0x4f')],_0x3936d3[_0x49c4('0x50')],md5(_0x3936d3[_0x49c4('0x50')]));}else{_0x3936d3[_0x49c4('0x51')]='';}return getConnection(_0x156748)[_0x49c4('0x23')](function(_0x50798e){_0x5b822f=_0x50798e;return getUser(_0x156748,_0x17ef75[_0x49c4('0x52')],_0x5b822f);})[_0x49c4('0x23')](function(_0x207572){_0x25d174=_0x207572;logger[_0x49c4('0x17')](_0x49c4('0x53'),_0x25d174['id']);return getEndUser(_0x156748,_0x3936d3[_0x49c4('0x54')],_0x3936d3['calleridnum'],_0x5b822f);})['then'](function(_0x1ef0c1){_0x1e0b4f=_0x1ef0c1;logger[_0x49c4('0x17')](_0x49c4('0x55'),_0x1e0b4f['id']);return createTicket(_0x156748,_0x25d174,_0x1e0b4f,_0x3d944c,_0x3936d3,_0x3d944c[_0x49c4('0x56')],_0x5b822f);})[_0x49c4('0x23')](function(_0x6b2592){_0x1856be=_0x6b2592;logger[_0x49c4('0x17')]('Ticket\x20created!');logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x1856be['id']);var _0x4ba4eb=util[_0x49c4('0x26')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x156748[_0x49c4('0x1f')],_[_0x49c4('0x58')](_0x1856be['id'],'x')[0x1]);logger[_0x49c4('0x17')](_0x49c4('0x4d'),_0x49c4('0x59'));emit(util[_0x49c4('0x26')](_0x49c4('0x5a'),_0x17ef75[_0x49c4('0x15')]),'trigger:browser:url',{'uri':_0x4ba4eb});})[_0x49c4('0x28')](function(_0x27b9c2){logger['error'](_0x49c4('0x4d'),JSON[_0x49c4('0x2c')](_0x27b9c2));});};exports['outbound']=function(_0x39c455,_0x42e0e6,_0x4f50bf,_0x4dc54d,_0x589484,_0x513879,_0xc43386){var _0x54947d,_0xb20a5d,_0x32f344,_0x515240;_0x513879[_0x49c4('0x1f')]=intUtil[_0x49c4('0x4c')](_0x513879['remoteUri']);_0x513879[_0x49c4('0x4f')]=intUtil[_0x49c4('0x4c')](_0x513879[_0x49c4('0x4f')]);if(_0xc43386&&_0xc43386[_0x49c4('0x5b')]&&_0xc43386['recordingFormat']!==_0x49c4('0x5c')){logger[_0x49c4('0x17')](_0x49c4('0x5d'),_0x49c4('0x5e'));_0x42e0e6['recordingURL']=util[_0x49c4('0x26')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x513879['serverUrl'],_0x42e0e6['uniqueid'],md5(_0x42e0e6['uniqueid']));}return getConnection(_0x513879)[_0x49c4('0x23')](function(_0x32eaef){_0x515240=_0x32eaef;return getUser(_0x513879,_0x4dc54d[_0x49c4('0x52')],_0x515240);})[_0x49c4('0x23')](function(_0x5b056e){_0x54947d=_0x5b056e;logger['info'](_0x49c4('0x53'),_0x54947d['id']);return getEndUser(_0x513879,_0x42e0e6[_0x49c4('0x5f')],_0x42e0e6[_0x49c4('0x60')],_0x515240);})[_0x49c4('0x23')](function(_0x102c15){_0xb20a5d=_0x102c15;logger[_0x49c4('0x17')](_0x49c4('0x55'),_0xb20a5d['id']);return createTicket(_0x513879,_0x54947d,_0xb20a5d,_0x4f50bf,_0x42e0e6,_0x4f50bf[_0x49c4('0x56')],_0x515240);})['then'](function(_0x2276db){_0x32f344=_0x2276db;logger['info'](_0x49c4('0x61'));logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x32f344['id']);var _0x1ea1b4=util[_0x49c4('0x26')](_0x49c4('0x62'),_0x513879[_0x49c4('0x1f')],_[_0x49c4('0x58')](_0x32f344['id'],'x')[0x1]);logger[_0x49c4('0x17')](_0x49c4('0x5d'),_0x49c4('0x59'));emit(util[_0x49c4('0x26')](_0x49c4('0x5a'),_0x4dc54d[_0x49c4('0x15')]),_0x49c4('0x63'),{'uri':_0x1ea1b4});})[_0x49c4('0x28')](function(_0x371e49){logger[_0x49c4('0x2a')]('[OUTBOUND]',JSON['stringify'](_0x371e49));});};exports[_0x49c4('0x64')]=function(_0x16b3e8,_0x4af680,_0x1a15f3,_0x38ad50,_0x2939fd,_0x16e7b1){var _0x4d6aaa,_0x5a14a5,_0x4a85d4,_0x2e90d8;_0x16e7b1[_0x49c4('0x1f')]=intUtil[_0x49c4('0x4c')](_0x16e7b1[_0x49c4('0x1f')]);_0x16e7b1[_0x49c4('0x4f')]=intUtil[_0x49c4('0x4c')](_0x16e7b1[_0x49c4('0x4f')]);if(_0x2939fd&&_0x2939fd[_0x49c4('0x65')]){logger[_0x49c4('0x17')]('['+_0x4af680['lastevent'][_0x49c4('0x66')]()+']',_0x49c4('0x5e'));_0x4af680[_0x49c4('0x51')]=util['format'](_0x49c4('0x4e'),_0x16e7b1[_0x49c4('0x4f')],_0x4af680[_0x49c4('0x50')],md5(_0x4af680[_0x49c4('0x50')]));}else{_0x4af680[_0x49c4('0x51')]='';}return getConnection(_0x16e7b1)[_0x49c4('0x23')](function(_0x35fa39){_0x2e90d8=_0x35fa39;return getUser(_0x16e7b1,'',_0x2e90d8);})[_0x49c4('0x23')](function(_0x4ba198){_0x4d6aaa=_0x4ba198;logger[_0x49c4('0x17')](_0x49c4('0x53'),_0x4d6aaa['id']);return getEndUser(_0x16e7b1,_0x4af680[_0x49c4('0x54')],_0x4af680[_0x49c4('0x67')],_0x2e90d8);})[_0x49c4('0x23')](function(_0x4a204d){_0x5a14a5=_0x4a204d;logger['info'](_0x49c4('0x55'),_0x5a14a5['id']);return createTicket(_0x16e7b1,_0x4d6aaa,_0x5a14a5,_0x1a15f3,_0x4af680,_0x1a15f3['Fields'],_0x2e90d8);})[_0x49c4('0x23')](function(_0x558880){_0x4a85d4=_0x558880;logger[_0x49c4('0x17')](_0x49c4('0x61'));logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x4a85d4['id']);})['catch'](function(_0x123060){logger[_0x49c4('0x2a')]('['+_0x4af680[_0x49c4('0x68')][_0x49c4('0x66')]()+']',JSON[_0x49c4('0x2c')](_0x123060));});};
\ No newline at end of file
+var _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(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xa9e0[_0xa1e3e3];return _0xc980e9;};'use strict';var _=require(_0x0a9e('0x0'));var rp=require(_0x0a9e('0x1'));var BPromise=require(_0x0a9e('0x2'));var md5=require('md5');var util=require('util');var Redis=require(_0x0a9e('0x3'));var intUtil=require('./util');var config=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));config[_0x0a9e('0x7')]=_[_0x0a9e('0x8')](config['redis'],{'host':_0x0a9e('0x9'),'port':0x18eb});var io=require(_0x0a9e('0xa'))(new Redis(config[_0x0a9e('0x7')]));function emit(_0x5f41ea,_0x503809,_0xe42b77){io['to'](_0x5f41ea)['emit'](_0x503809,_0xe42b77);}function getCustomFields(_0x52cace,_0x39753a){var _0xf81284={};if(_0x52cace[_0x0a9e('0xb')]>0x0){_[_0x0a9e('0xc')](_0x52cace,function(_0xfeb75b){if(_[_0x0a9e('0xd')](['string','picklist'],_0xfeb75b['type'])&&_0xfeb75b['idField']){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0xfeb75b[_0x0a9e('0xf')][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x12')&&_0xfeb75b[_0x0a9e('0x13')]&&_0xfeb75b['idField']&&_0x39753a[_0xfeb75b[_0x0a9e('0x13')]]){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0x39753a[_0xfeb75b[_0x0a9e('0x13')]][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x14')&&_0xfeb75b['Variable']&&_0xfeb75b[_0x0a9e('0x15')]['name']&&_0xfeb75b[_0x0a9e('0xe')]&&_0x39753a[_0xfeb75b['Variable'][_0x0a9e('0x16')][_0x0a9e('0x17')]()]){_0xf81284[_0xfeb75b['idField']]=_0x39753a[_0xfeb75b[_0x0a9e('0x15')]['name'][_0x0a9e('0x17')]()][_0x0a9e('0x10')]();}});}return _0xf81284;}function createTicket(_0x106033,_0x205fd6,_0x31b1ca,_0x2eb11f,_0x530eb7,_0x20559e,_0x1314ae){logger[_0x0a9e('0x18')](_0x0a9e('0x19'));var _0x105080=_['merge']({'parent_id':'','assigned_user_id':_0x205fd6['id'],'ticketpriorities':_0x0a9e('0x1a'),'ticketstatus':_0x0a9e('0x1b'),'ticket_title':intUtil['getString'](_0x2eb11f[_0x0a9e('0x1c')],_0x530eb7,'\x20'),'description':intUtil['getString'](_0x2eb11f['Descriptions'],_0x530eb7,'\x0a'),'contact_id':_0x31b1ca['id']},getCustomFields(_0x20559e,_0x530eb7));var _0x3a02e1={'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x106033['remoteUri']),'form':{'operation':_0x0a9e('0x20'),'username':_0x106033[_0x0a9e('0x21')],'sessionName':_0x1314ae[_0x0a9e('0x22')],'elementType':_0x0a9e('0x23'),'element':JSON[_0x0a9e('0x24')](_0x105080)},'json':!![]};return request(_0x3a02e1)[_0x0a9e('0x25')](function(_0x16b1ca){if(_0x16b1ca['success']){return BPromise['resolve']({'id':_0x16b1ca[_0x0a9e('0x26')]['id']});}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x27'),JSON[_0x0a9e('0x24')](_0x16b1ca['error'])));}})[_0x0a9e('0x28')](function(_0x479bc4){var _0x45a1e7=_0x479bc4['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x2b'),_0x45a1e7,JSON[_0x0a9e('0x24')](_0x479bc4));});}function getUser(_0x140511,_0x1538a4,_0x11c3b6){if(intUtil[_0x0a9e('0x2c')](_0x1538a4)){logger['info'](_0x0a9e('0x2d'),_0x1538a4);return request({'method':_0x0a9e('0x2e'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x140511['remoteUri']),'qs':{'operation':_0x0a9e('0x2f'),'username':_0x140511[_0x0a9e('0x21')],'sessionName':_0x11c3b6[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x30'),_0x1538a4)},'json':!![]})[_0x0a9e('0x25')](function(_0x296f41){if(_0x296f41[_0x0a9e('0x31')]&&_0x296f41[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')]('Agent\x20found!');return BPromise[_0x0a9e('0x32')]({'id':_0x296f41[_0x0a9e('0x26')][0x0]['id'],'email':_0x296f41[_0x0a9e('0x26')][0x0][_0x0a9e('0x33')],'name':_0x296f41[_0x0a9e('0x26')][0x0]['first_name']+'\x20'+_0x296f41[_0x0a9e('0x26')][_0x0a9e('0x34')]});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511[_0x0a9e('0x21')],'name':_0x0a9e('0x37')});}})['catch'](function(_0x44295a){var _0x5e7238=_0x44295a[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x39'),_0x5e7238,JSON['stringify'](_0x44295a));});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511['username'],'name':'admin'})[_0x0a9e('0x28')](function(_0x5640eb){var _0x24936a=_0x5640eb[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getUser',_0x24936a,JSON[_0x0a9e('0x24')](_0x5640eb));});}}function getEndUser(_0x3bfce8,_0x3cae,_0x533942,_0x1dbf74){logger[_0x0a9e('0x18')](_0x0a9e('0x3a'),_0x533942);return request({'method':'GET','uri':util['format'](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'qs':{'operation':'query','username':_0x3bfce8[_0x0a9e('0x21')],'sessionName':_0x1dbf74[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x3c'),_0x533942,_0x533942,_0x533942,_0x533942,_0x533942)},'json':!![]})['then'](function(_0x5a594b){if(_0x5a594b[_0x0a9e('0x31')]&&_0x5a594b[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')](_0x0a9e('0x3d'));return BPromise[_0x0a9e('0x32')]({'id':_0x5a594b['result'][0x0]['id'],'name':_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3e')]+'\x20'+_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3f')],'phone':_0x533942});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x40'));return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x20'),'sessionName':_0x1dbf74[_0x0a9e('0x22')],'elementType':_0x0a9e('0x41'),'element':JSON[_0x0a9e('0x24')]({'lastname':_0x3cae,'phone':_0x533942,'assigned_user_id':'\x20'})},'json':!![]})[_0x0a9e('0x25')](function(_0x4d04c8){logger['info'](_0x0a9e('0x42'));return BPromise[_0x0a9e('0x32')]({'id':_0x4d04c8[_0x0a9e('0x26')]['id'],'name':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x3f')],'phone':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x43')]});})[_0x0a9e('0x28')](function(_0x432fcc){var _0x25c6e6=_0x432fcc[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')]('[vTiger],\x20%s,\x20%s,\x20%s',_0x0a9e('0x44'),_0x25c6e6,JSON[_0x0a9e('0x24')](_0x432fcc));});}});}function getConnection(_0xdd268f){var _0xfbd5ad=_0xdd268f[_0x0a9e('0x21')];var _0xbe9d19=_0xdd268f[_0x0a9e('0x45')];return request({'method':_0x0a9e('0x2e'),'uri':util['format'](_0x0a9e('0x1f'),_0xdd268f['remoteUri']),'qs':{'operation':_0x0a9e('0x46'),'username':_0xfbd5ad},'json':!![]})[_0x0a9e('0x25')](function(_0x8d6dd1){if(_0x8d6dd1['success']){return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0xdd268f[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x47'),'username':_0xfbd5ad,'accessKey':md5(_0x8d6dd1[_0x0a9e('0x26')][_0x0a9e('0x48')]+_0xbe9d19)},'json':!![]});}})['then'](function(_0x13f44d){if(_0x13f44d[_0x0a9e('0x31')]){return BPromise[_0x0a9e('0x32')](_0x13f44d[_0x0a9e('0x26')]);}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x49'),_0xdd268f['id']));}})[_0x0a9e('0x28')](function(_0x19383e){var _0x34febd=_0x19383e['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getConnection',_0x34febd,JSON['stringify'](_0x19383e));});}function request(_0x5ddf84){logger[_0x0a9e('0x18')](_0x0a9e('0x4a'),JSON[_0x0a9e('0x24')](_0x5ddf84));return rp(_0x5ddf84);}exports[_0x0a9e('0x4b')]=function(_0x61bb17,_0x30decb,_0x2e5165,_0x375c18,_0x5d38ae,_0x4b1b9f){var _0x53975a,_0x39d77d,_0x204173,_0x14d602;_0x4b1b9f['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x4b1b9f[_0x0a9e('0x3b')]);if(_0x5d38ae&&_0x5d38ae['monitor_format']){logger['info'](_0x0a9e('0x4d'),'Recording\x20is\x20enabled!');_0x30decb[_0x0a9e('0x4e')]=util['format'](_0x0a9e('0x4f'),_0x4b1b9f[_0x0a9e('0x50')],_0x30decb[_0x0a9e('0x51')],md5(_0x30decb['uniqueid']));}else{_0x30decb[_0x0a9e('0x4e')]='';}return getConnection(_0x4b1b9f)[_0x0a9e('0x25')](function(_0x508b47){_0x14d602=_0x508b47;return getUser(_0x4b1b9f,_0x375c18['email'],_0x14d602);})[_0x0a9e('0x25')](function(_0x3aedd0){_0x53975a=_0x3aedd0;logger['info'](_0x0a9e('0x52'),_0x53975a['id']);return getEndUser(_0x4b1b9f,_0x30decb['calleridname'],_0x30decb[_0x0a9e('0x53')],_0x14d602);})['then'](function(_0xe22ccc){_0x39d77d=_0xe22ccc;logger['info']('The\x20Enduser\x20ID\x20is:',_0x39d77d['id']);return createTicket(_0x4b1b9f,_0x53975a,_0x39d77d,_0x2e5165,_0x30decb,_0x2e5165['Fields'],_0x14d602);})[_0x0a9e('0x25')](function(_0x47de4c){_0x204173=_0x47de4c;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x204173['id']);var _0x232830=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x4b1b9f[_0x0a9e('0x3b')],_['split'](_0x204173['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x4d'),_0x0a9e('0x57'));emit(util[_0x0a9e('0x1e')](_0x0a9e('0x58'),_0x375c18[_0x0a9e('0x16')]),'trigger:browser:url',{'uri':_0x232830});})[_0x0a9e('0x28')](function(_0x26bc80){logger['error'](_0x0a9e('0x4d'),JSON['stringify'](_0x26bc80));});};exports[_0x0a9e('0x59')]=function(_0x5ba1f9,_0x4b3c1a,_0x5674ee,_0x273cb5,_0x49d231,_0x2244d6,_0x1fc70e){var _0x261adb,_0x7be420,_0x1cca9f,_0x26d7db;_0x2244d6['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x2244d6['remoteUri']);_0x2244d6[_0x0a9e('0x50')]=intUtil[_0x0a9e('0x4c')](_0x2244d6[_0x0a9e('0x50')]);if(_0x1fc70e&&_0x1fc70e['recordingFormat']&&_0x1fc70e[_0x0a9e('0x5a')]!==_0x0a9e('0x5b')){logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),'Recording\x20is\x20enabled!');_0x4b3c1a[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2244d6[_0x0a9e('0x50')],_0x4b3c1a[_0x0a9e('0x51')],md5(_0x4b3c1a[_0x0a9e('0x51')]));}return getConnection(_0x2244d6)[_0x0a9e('0x25')](function(_0x401837){_0x26d7db=_0x401837;return getUser(_0x2244d6,_0x273cb5['email'],_0x26d7db);})[_0x0a9e('0x25')](function(_0x2937e0){_0x261adb=_0x2937e0;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x261adb['id']);return getEndUser(_0x2244d6,_0x4b3c1a[_0x0a9e('0x5d')],_0x4b3c1a['destcalleridnum'],_0x26d7db);})['then'](function(_0x242745){_0x7be420=_0x242745;logger[_0x0a9e('0x18')](_0x0a9e('0x5e'),_0x7be420['id']);return createTicket(_0x2244d6,_0x261adb,_0x7be420,_0x5674ee,_0x4b3c1a,_0x5674ee[_0x0a9e('0x5f')],_0x26d7db);})[_0x0a9e('0x25')](function(_0xc8c264){_0x1cca9f=_0xc8c264;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1cca9f['id']);var _0x2e89b7=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x2244d6[_0x0a9e('0x3b')],_[_0x0a9e('0x60')](_0x1cca9f['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),_0x0a9e('0x57'));emit(util['format'](_0x0a9e('0x58'),_0x273cb5[_0x0a9e('0x16')]),_0x0a9e('0x61'),{'uri':_0x2e89b7});})['catch'](function(_0x1148a1){logger[_0x0a9e('0x29')]('[OUTBOUND]',JSON[_0x0a9e('0x24')](_0x1148a1));});};exports[_0x0a9e('0x62')]=function(_0x3ef315,_0x427946,_0x13b5c0,_0x4a43a8,_0x50cdce,_0x4a2438){var _0x40fb85,_0x18bf5d,_0x1104ad,_0x23a7d3;_0x4a2438[_0x0a9e('0x3b')]=intUtil[_0x0a9e('0x4c')](_0x4a2438[_0x0a9e('0x3b')]);_0x4a2438[_0x0a9e('0x50')]=intUtil['stripTrailingSlash'](_0x4a2438[_0x0a9e('0x50')]);if(_0x50cdce&&_0x50cdce[_0x0a9e('0x63')]){logger[_0x0a9e('0x18')]('['+_0x427946['lastevent'][_0x0a9e('0x64')]()+']','Recording\x20is\x20enabled!');_0x427946[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4a2438[_0x0a9e('0x50')],_0x427946[_0x0a9e('0x51')],md5(_0x427946[_0x0a9e('0x51')]));}else{_0x427946[_0x0a9e('0x4e')]='';}return getConnection(_0x4a2438)['then'](function(_0x1d442c){_0x23a7d3=_0x1d442c;return getUser(_0x4a2438,'',_0x23a7d3);})[_0x0a9e('0x25')](function(_0x371533){_0x40fb85=_0x371533;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x40fb85['id']);return getEndUser(_0x4a2438,_0x427946[_0x0a9e('0x65')],_0x427946[_0x0a9e('0x53')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0x361b21){_0x18bf5d=_0x361b21;logger['info'](_0x0a9e('0x5e'),_0x18bf5d['id']);return createTicket(_0x4a2438,_0x40fb85,_0x18bf5d,_0x13b5c0,_0x427946,_0x13b5c0[_0x0a9e('0x5f')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0xf410e5){_0x1104ad=_0xf410e5;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1104ad['id']);})[_0x0a9e('0x28')](function(_0x336dc3){logger[_0x0a9e('0x29')]('['+_0x427946[_0x0a9e('0x66')][_0x0a9e('0x64')]()+']',JSON[_0x0a9e('0x24')](_0x336dc3));});};
\ No newline at end of file
index 0d2110e..9e8a14a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d4b=['zendesk','redis','defaults','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','merge','Tags','name','getString','Subjects','Descriptions','Fields','then','Ticket\x20created!','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','count','results','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','filter','end-user','length','first','%s/users.json','Caller\x20-\x20%s','authType','password','%s:%s','username','token','%s/token:%s','Basic\x20%s','base64','debug','stringify','GET','map','forEach','includes','toLowerCase','content','toString','string','picklist','type','idField','custom_fields','push','variable','variableName','customField','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','calleridnum','The\x20Enduser\x20ID\x20is:','integrationTab','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','%s/agent/tickets/%s','replace','/api/v2','error','catch','recordingFormat','none','[OUTBOUND]','email','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','user:%s','Zendesk\x20account\x20type\x20not\x20recognized','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','calleridname','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','util','ioredis','../../../../config/environment'];(function(_0x10f95f,_0xe0a31b){var _0x191874=function(_0x50b95a){while(--_0x50b95a){_0x10f95f['push'](_0x10f95f['shift']());}};_0x191874(++_0xe0a31b);}(_0x8d4b,0x141));var _0xb8d4=function(_0x2e9b77,_0x1bb1f5){_0x2e9b77=_0x2e9b77-0x0;var _0x215630=_0x8d4b[_0x2e9b77];return _0x215630;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require('md5');var util=require(_0xb8d4('0x0'));var Redis=require(_0xb8d4('0x1'));var intUtil=require('./util');var config=require(_0xb8d4('0x2'));var logger=require('../../../../config/logger')(_0xb8d4('0x3'));config[_0xb8d4('0x4')]=_[_0xb8d4('0x5')](config[_0xb8d4('0x4')],{'host':_0xb8d4('0x6'),'port':0x18eb});var io=require(_0xb8d4('0x7'))(new Redis(config[_0xb8d4('0x4')]));function emit(_0x2cdebf,_0x47801f,_0x3c614d){io['to'](_0x2cdebf)[_0xb8d4('0x8')](_0x47801f,_0x3c614d);}var headers={'Content-Type':'application/json','Accept':_0xb8d4('0x9')};function getTicket(_0x61fbb2,_0x528081,_0x12dd3,_0x36be9a,_0x21f700){logger[_0xb8d4('0xa')](_0xb8d4('0xb'));return request({'uri':util[_0xb8d4('0xc')](_0xb8d4('0xd'),_0x61fbb2[_0xb8d4('0xe')]),'method':_0xb8d4('0xf'),'body':{'ticket':_[_0xb8d4('0x10')]({'requester_id':_0x12dd3['id'],'submitter_id':_0x528081?_0x528081['id']:undefined,'assignee_id':_0x528081?_0x528081['id']:undefined,'tags':getTags(_0x36be9a[_0xb8d4('0x11')],_0xb8d4('0x12')),'subject':intUtil[_0xb8d4('0x13')](_0x36be9a[_0xb8d4('0x14')],_0x21f700,'\x20'),'description':intUtil[_0xb8d4('0x13')](_0x36be9a[_0xb8d4('0x15')],_0x21f700,'\x0a'),'comment':{'public':![],'body':intUtil[_0xb8d4('0x13')](_0x36be9a[_0xb8d4('0x15')],_0x21f700,'\x0a')}},getCustomFields(_0x36be9a[_0xb8d4('0x16')],_0x21f700))}})[_0xb8d4('0x17')](function(_0x48b203){logger[_0xb8d4('0xa')](_0xb8d4('0x18'));return _0x48b203['ticket'];});}function getUser(_0x59e531,_0x42fa22){if(intUtil[_0xb8d4('0x19')](_0x42fa22)){logger[_0xb8d4('0xa')](_0xb8d4('0x1a'),_0x42fa22);return request({'uri':util['format'](_0xb8d4('0x1b'),_0x59e531['remoteUri']),'qs':{'query':util[_0xb8d4('0xc')](_0xb8d4('0x1c'),_0x42fa22)}})[_0xb8d4('0x17')](function(_0xf84971){if(_0xf84971[_0xb8d4('0x1d')]){logger[_0xb8d4('0xa')]('Agent\x20found!');return _['find'](_0xf84971[_0xb8d4('0x1e')],{'email':_0x42fa22,'role':'agent'});}else{logger[_0xb8d4('0xa')](_0xb8d4('0x1f'));return request({'uri':util[_0xb8d4('0xc')](_0xb8d4('0x20'),_0x59e531['remoteUri'])})['then'](function(_0x3b47ff){logger[_0xb8d4('0xa')](_0xb8d4('0x21'));return _0x3b47ff['user'];});}});}else{logger[_0xb8d4('0xa')](_0xb8d4('0x1f'));return request({'uri':util[_0xb8d4('0xc')]('%s/users/me.json',_0x59e531[_0xb8d4('0xe')])})[_0xb8d4('0x17')](function(_0x2d7e5e){logger[_0xb8d4('0xa')]('Admin\x20account\x20selected.');return _0x2d7e5e[_0xb8d4('0x22')];});}}function getEndUser(_0x15512d,_0x39b403,_0x1e40f0){logger[_0xb8d4('0xa')](_0xb8d4('0x23'),_0x1e40f0);return request({'uri':util[_0xb8d4('0xc')](_0xb8d4('0x1b'),_0x15512d[_0xb8d4('0xe')]),'qs':{'query':util['format'](_0xb8d4('0x24'),_0x1e40f0)}})[_0xb8d4('0x17')](function(_0x2aa4ac){var _0x2861e6;if(_0x2aa4ac[_0xb8d4('0x1e')]['length']){_0x2aa4ac['results']=_[_0xb8d4('0x25')](_0x2aa4ac[_0xb8d4('0x1e')],{'suspended':![],'role':_0xb8d4('0x26')});if(_0x2aa4ac[_0xb8d4('0x1e')][_0xb8d4('0x27')]){_0x2861e6=_[_0xb8d4('0x28')](_0x2aa4ac[_0xb8d4('0x1e')]);}}if(_0x2861e6){logger[_0xb8d4('0xa')]('Enduser\x20found!');return _0x2861e6;}else{logger[_0xb8d4('0xa')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util['format'](_0xb8d4('0x29'),_0x15512d['remoteUri']),'method':'POST','body':{'user':{'role':'end-user','name':util['format'](_0xb8d4('0x2a'),_0x39b403||_0x1e40f0),'phone':_0x1e40f0}}})['then'](function(_0x192e21){logger['info']('Enduser\x20created.');return _0x192e21[_0xb8d4('0x22')];});}});}function getAuth(_0x1f38db){var _0x362d0b;if(_0x1f38db[_0xb8d4('0x2b')]===_0xb8d4('0x2c')){_0x362d0b=util[_0xb8d4('0xc')](_0xb8d4('0x2d'),_0x1f38db[_0xb8d4('0x2e')],_0x1f38db['password']);}else if(_0x1f38db[_0xb8d4('0x2b')]===_0xb8d4('0x2f')){_0x362d0b=util[_0xb8d4('0xc')](_0xb8d4('0x30'),_0x1f38db[_0xb8d4('0x2e')],_0x1f38db['token']);}return util['format'](_0xb8d4('0x31'),new Buffer(_0x362d0b)['toString'](_0xb8d4('0x32')));}function request(_0x3d8fde){logger[_0xb8d4('0x33')]('[HTTP]',JSON[_0xb8d4('0x34')](_0x3d8fde));return rp(_[_0xb8d4('0x5')](_0x3d8fde,{'method':_0xb8d4('0x35'),'headers':headers,'json':!![]}));}function getTags(_0x8e1413,_0x11c2b9){var _0x4cb873=[];if(_0x8e1413&&_0x8e1413[_0xb8d4('0x27')]>0x0){_0x4cb873=_[_0xb8d4('0x36')](_0x8e1413,_0x11c2b9);}return _0x4cb873;}function getCustomFields(_0x1d6c67,_0x530b7d){var _0x29494d=[];var _0xfadba8={'custom_fields':[]};if(_0x1d6c67[_0xb8d4('0x27')]>0x0){_[_0xb8d4('0x37')](_0x1d6c67,function(_0x43e014){if(_[_0xb8d4('0x38')](['string','picklist'],_0x43e014['type'])&&_0x43e014['nameField']&&!_0x43e014['customField']){_0xfadba8[_0x43e014['nameField'][_0xb8d4('0x39')]()]=_0x43e014[_0xb8d4('0x3a')][_0xb8d4('0x3b')]();}else if(_['includes']([_0xb8d4('0x3c'),_0xb8d4('0x3d')],_0x43e014[_0xb8d4('0x3e')])&&_0x43e014[_0xb8d4('0x3f')]&&_0x43e014['customField']){_0xfadba8[_0xb8d4('0x40')][_0xb8d4('0x41')]({'id':_0x43e014[_0xb8d4('0x3f')],'value':_0x43e014[_0xb8d4('0x3a')]['toString']()});}else if(_0x43e014[_0xb8d4('0x3e')]===_0xb8d4('0x42')&&_0x43e014[_0xb8d4('0x43')]&&_0x43e014[_0xb8d4('0x3f')]&&_0x43e014[_0xb8d4('0x44')]){_0x530b7d[_0x43e014[_0xb8d4('0x43')]]&&_0xfadba8[_0xb8d4('0x40')]['push']({'id':_0x43e014['idField'],'value':_0x530b7d[_0x43e014['variableName']][_0xb8d4('0x3b')]()});}else if(_0x43e014[_0xb8d4('0x3e')]==='customVariable'&&_0x43e014['Variable']&&_0x43e014['Variable'][_0xb8d4('0x12')]&&_0x43e014[_0xb8d4('0x3f')]&&_0x43e014[_0xb8d4('0x44')]){_0x530b7d[_0x43e014['Variable'][_0xb8d4('0x12')]['toLowerCase']()]&&_0xfadba8['custom_fields'][_0xb8d4('0x41')]({'id':_0x43e014['idField'],'value':_0x530b7d[_0x43e014[_0xb8d4('0x45')]['name'][_0xb8d4('0x39')]()][_0xb8d4('0x3b')]()});}});}return _0xfadba8;}exports[_0xb8d4('0x46')]=function(_0x540a00,_0x1f86fc,_0x2ddc03,_0x535010,_0xeaabea,_0x219c74){var _0x1123d1,_0x53fe4d;_0x219c74[_0xb8d4('0xe')]=intUtil[_0xb8d4('0x47')](_0x219c74[_0xb8d4('0xe')]);_0x219c74[_0xb8d4('0x48')]=intUtil[_0xb8d4('0x47')](_0x219c74[_0xb8d4('0x48')]);if(_0xeaabea&&_0xeaabea[_0xb8d4('0x49')]){logger[_0xb8d4('0xa')](_0xb8d4('0x4a'),_0xb8d4('0x4b'));_0x1f86fc[_0xb8d4('0x4c')]=util['format'](_0xb8d4('0x4d'),_0x219c74[_0xb8d4('0x48')],_0x1f86fc['uniqueid'],md5(_0x1f86fc[_0xb8d4('0x4e')]));}else{_0x1f86fc['recordingURL']='';}headers[_0xb8d4('0x4f')]=getAuth(_0x219c74);return getUser(_0x219c74,_0x535010['email'])[_0xb8d4('0x17')](function(_0x5b8ee8){_0x1123d1=_0x5b8ee8;logger[_0xb8d4('0xa')]('The\x20User\x20ID\x20is:',_0x1123d1['id']);return getEndUser(_0x219c74,_0x1f86fc['calleridname'],_0x1f86fc[_0xb8d4('0x50')]);})[_0xb8d4('0x17')](function(_0x1704c1){_0x53fe4d=_0x1704c1;logger[_0xb8d4('0xa')](_0xb8d4('0x51'),_0x53fe4d['id']);return getTicket(_0x219c74,_0x1123d1,_0x53fe4d,_0x2ddc03,_0x1f86fc);})['then'](function(_0x2440fe){if(_0x2440fe){logger[_0xb8d4('0xa')]('The\x20Ticket\x20ID\x20is:',_0x2440fe['id']);switch(_0x219c74[_0xb8d4('0x3e')]){case _0xb8d4('0x52'):logger['info'](_0xb8d4('0x4a'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0xb8d4('0xc')](_0xb8d4('0x53'),_0x219c74[_0xb8d4('0xe')],_0x1123d1['id'],_0x2440fe['id']),'method':_0xb8d4('0xf')});case _0xb8d4('0x54'):logger['info'](_0xb8d4('0x4a'),_0xb8d4('0x55'));emit(util[_0xb8d4('0xc')]('user:%s',_0x535010[_0xb8d4('0x12')]),'trigger:browser:url',{'uri':util[_0xb8d4('0xc')](_0xb8d4('0x56'),_0x219c74[_0xb8d4('0xe')][_0xb8d4('0x57')](_0xb8d4('0x58'),''),_0x2440fe['id'])});break;default:logger[_0xb8d4('0x59')](_0xb8d4('0x4a'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0xb8d4('0x5a')](function(_0x3e95fb){logger['error']('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util['inspect'](_0x3e95fb,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0x4d582c,_0x2817f7,_0x3e1b52,_0x4ab445,_0x24aee8,_0x317a9b,_0x8dfead){var _0x3f306a,_0x2ed19e;_0x317a9b[_0xb8d4('0xe')]=intUtil[_0xb8d4('0x47')](_0x317a9b[_0xb8d4('0xe')]);_0x317a9b[_0xb8d4('0x48')]=intUtil['stripTrailingSlash'](_0x317a9b[_0xb8d4('0x48')]);if(_0x8dfead&&_0x8dfead[_0xb8d4('0x5b')]&&_0x8dfead[_0xb8d4('0x5b')]!==_0xb8d4('0x5c')){logger['info'](_0xb8d4('0x5d'),_0xb8d4('0x4b'));_0x2817f7[_0xb8d4('0x4c')]=util[_0xb8d4('0xc')](_0xb8d4('0x4d'),_0x317a9b['serverUrl'],_0x2817f7[_0xb8d4('0x4e')],md5(_0x2817f7[_0xb8d4('0x4e')]));}headers[_0xb8d4('0x4f')]=getAuth(_0x317a9b);return getUser(_0x317a9b,_0x4ab445[_0xb8d4('0x5e')])['then'](function(_0x39a907){_0x3f306a=_0x39a907;logger[_0xb8d4('0xa')](_0xb8d4('0x5f'),_0x3f306a['id']);return getEndUser(_0x317a9b,_0x2817f7[_0xb8d4('0x60')],_0x2817f7[_0xb8d4('0x61')]);})[_0xb8d4('0x17')](function(_0x11475b){_0x2ed19e=_0x11475b;logger[_0xb8d4('0xa')]('The\x20Enduser\x20ID\x20is:',_0x2ed19e['id']);return getTicket(_0x317a9b,_0x3f306a,_0x2ed19e,_0x3e1b52,_0x2817f7);})[_0xb8d4('0x17')](function(_0x281b87){if(_0x281b87){logger[_0xb8d4('0xa')](_0xb8d4('0x62'),_0x281b87['id']);switch(_0x317a9b[_0xb8d4('0x3e')]){case _0xb8d4('0x52'):logger[_0xb8d4('0xa')]('[OUTBOUND]',_0xb8d4('0x63'));return request({'uri':util['format'](_0xb8d4('0x53'),_0x317a9b[_0xb8d4('0xe')],_0x3f306a['id'],_0x281b87['id']),'method':'POST'});case _0xb8d4('0x54'):logger['info']('[OUTBOUND]',_0xb8d4('0x55'));emit(util['format'](_0xb8d4('0x64'),_0x4ab445['name']),'trigger:browser:url',{'uri':util['format'](_0xb8d4('0x56'),_0x317a9b[_0xb8d4('0xe')]['replace'](_0xb8d4('0x58'),''),_0x281b87['id'])});break;default:logger[_0xb8d4('0x59')](_0xb8d4('0x5d'),_0xb8d4('0x65'));}}})[_0xb8d4('0x5a')](function(_0x1a67a7){logger[_0xb8d4('0x59')](_0xb8d4('0x66'),util['inspect'](_0x1a67a7,{'showHidden':!![],'depth':null}));});};exports[_0xb8d4('0x67')]=function(_0x3ea624,_0x49a5ee,_0x1473a7,_0x392b94,_0x4687df,_0x31f7f2){var _0x1a956f,_0x50b77e;_0x31f7f2[_0xb8d4('0xe')]=intUtil[_0xb8d4('0x47')](_0x31f7f2[_0xb8d4('0xe')]);_0x31f7f2[_0xb8d4('0x48')]=intUtil[_0xb8d4('0x47')](_0x31f7f2[_0xb8d4('0x48')]);if(_0x4687df&&_0x4687df[_0xb8d4('0x49')]){logger[_0xb8d4('0xa')]('['+_0x49a5ee[_0xb8d4('0x68')]['toUpperCase']()+']',_0xb8d4('0x4b'));_0x49a5ee[_0xb8d4('0x4c')]=util[_0xb8d4('0xc')](_0xb8d4('0x4d'),_0x31f7f2[_0xb8d4('0x48')],_0x49a5ee[_0xb8d4('0x4e')],md5(_0x49a5ee[_0xb8d4('0x4e')]));}else{_0x49a5ee['recordingURL']='';}headers['Authorization']=getAuth(_0x31f7f2);return getUser(_0x31f7f2)[_0xb8d4('0x17')](function(_0x51a681){_0x1a956f=_0x51a681;logger[_0xb8d4('0xa')]('The\x20User\x20ID\x20is:',_0x1a956f['id']);return getEndUser(_0x31f7f2,_0x49a5ee[_0xb8d4('0x69')],_0x49a5ee[_0xb8d4('0x50')]);})[_0xb8d4('0x17')](function(_0x45f9aa){_0x50b77e=_0x45f9aa;logger[_0xb8d4('0xa')](_0xb8d4('0x51'),_0x50b77e['id']);return getTicket(_0x31f7f2,_0x1a956f,_0x50b77e,_0x1473a7,_0x49a5ee);})[_0xb8d4('0x17')](function(_0x4867ee){if(_0x4867ee){logger[_0xb8d4('0xa')]('The\x20Ticket\x20ID\x20is:',_0x4867ee['id']);}})[_0xb8d4('0x5a')](function(_0x364169){logger['error']('['+_0x49a5ee[_0xb8d4('0x68')][_0xb8d4('0x6a')]()+']'+_0xb8d4('0x6b'),util['inspect'](_0x364169,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xd47d=['integrationTab','replace','inspect','unmanaged','lastevent','The\x20User\x20ID\x20is:','calleridname','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','md5','util','ioredis','./util','../../../../config/environment','zendesk','redis','defaults','localhost','emit','application/json','Creating\x20new\x20ticket...','%s/tickets.json','remoteUri','POST','merge','Subjects','getString','Descriptions','Fields','info','ticket','validateEmail','Getting\x20agent\x20with\x20email','format','%s/search.json','type:user\x20role:agent\x20email:%s','then','Agent\x20found!','find','results','agent','%s/users/me.json','Admin\x20account\x20selected.','user','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','length','filter','end-user','first','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Enduser\x20created.','authType','password','%s:%s','username','token','%s/token:%s','Basic\x20%s','toString','base64','debug','[HTTP]','GET','map','includes','string','picklist','type','customField','nameField','content','idField','custom_fields','push','variable','variableName','customVariable','Variable','name','toLowerCase','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/agent/tickets/%s','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','outbound','recordingFormat','[OUTBOUND]','destcalleridname','destcalleridnum'];(function(_0x42b4e3,_0x27552e){var _0x386e54=function(_0x3bef1f){while(--_0x3bef1f){_0x42b4e3['push'](_0x42b4e3['shift']());}};_0x386e54(++_0x27552e);}(_0xd47d,0x159));var _0xdd47=function(_0xd8a8af,_0x1e93f0){_0xd8a8af=_0xd8a8af-0x0;var _0x5b7278=_0xd47d[_0xd8a8af];return _0x5b7278;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require(_0xdd47('0x0'));var util=require(_0xdd47('0x1'));var Redis=require(_0xdd47('0x2'));var intUtil=require(_0xdd47('0x3'));var config=require(_0xdd47('0x4'));var logger=require('../../../../config/logger')(_0xdd47('0x5'));config[_0xdd47('0x6')]=_[_0xdd47('0x7')](config['redis'],{'host':_0xdd47('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xdd47('0x6')]));function emit(_0x38d523,_0x53b05c,_0x24d411){io['to'](_0x38d523)[_0xdd47('0x9')](_0x53b05c,_0x24d411);}var headers={'Content-Type':_0xdd47('0xa'),'Accept':_0xdd47('0xa')};function getTicket(_0x4efa84,_0x37f717,_0x992ec4,_0x2ad9d3,_0x274868){logger['info'](_0xdd47('0xb'));return request({'uri':util['format'](_0xdd47('0xc'),_0x4efa84[_0xdd47('0xd')]),'method':_0xdd47('0xe'),'body':{'ticket':_[_0xdd47('0xf')]({'requester_id':_0x992ec4['id'],'submitter_id':_0x37f717?_0x37f717['id']:undefined,'assignee_id':_0x37f717?_0x37f717['id']:undefined,'tags':getTags(_0x2ad9d3['Tags'],'name'),'subject':intUtil['getString'](_0x2ad9d3[_0xdd47('0x10')],_0x274868,'\x20'),'description':intUtil[_0xdd47('0x11')](_0x2ad9d3[_0xdd47('0x12')],_0x274868,'\x0a'),'comment':{'public':![],'body':intUtil[_0xdd47('0x11')](_0x2ad9d3[_0xdd47('0x12')],_0x274868,'\x0a')}},getCustomFields(_0x2ad9d3[_0xdd47('0x13')],_0x274868))}})['then'](function(_0x4fd400){logger[_0xdd47('0x14')]('Ticket\x20created!');return _0x4fd400[_0xdd47('0x15')];});}function getUser(_0x125fd2,_0x5dd400){if(intUtil[_0xdd47('0x16')](_0x5dd400)){logger[_0xdd47('0x14')](_0xdd47('0x17'),_0x5dd400);return request({'uri':util[_0xdd47('0x18')](_0xdd47('0x19'),_0x125fd2[_0xdd47('0xd')]),'qs':{'query':util[_0xdd47('0x18')](_0xdd47('0x1a'),_0x5dd400)}})[_0xdd47('0x1b')](function(_0x23354b){if(_0x23354b['count']){logger[_0xdd47('0x14')](_0xdd47('0x1c'));return _[_0xdd47('0x1d')](_0x23354b[_0xdd47('0x1e')],{'email':_0x5dd400,'role':_0xdd47('0x1f')});}else{logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xdd47('0x18')](_0xdd47('0x20'),_0x125fd2[_0xdd47('0xd')])})[_0xdd47('0x1b')](function(_0x58492c){logger[_0xdd47('0x14')](_0xdd47('0x21'));return _0x58492c[_0xdd47('0x22')];});}});}else{logger[_0xdd47('0x14')](_0xdd47('0x23'));return request({'uri':util[_0xdd47('0x18')](_0xdd47('0x20'),_0x125fd2[_0xdd47('0xd')])})[_0xdd47('0x1b')](function(_0x388853){logger['info'](_0xdd47('0x21'));return _0x388853[_0xdd47('0x22')];});}}function getEndUser(_0x46b7f3,_0x4fa9ef,_0x11da6e){logger[_0xdd47('0x14')](_0xdd47('0x24'),_0x11da6e);return request({'uri':util[_0xdd47('0x18')]('%s/search.json',_0x46b7f3[_0xdd47('0xd')]),'qs':{'query':util[_0xdd47('0x18')](_0xdd47('0x25'),_0x11da6e)}})['then'](function(_0x398686){var _0x44ac38;if(_0x398686[_0xdd47('0x1e')][_0xdd47('0x26')]){_0x398686[_0xdd47('0x1e')]=_[_0xdd47('0x27')](_0x398686[_0xdd47('0x1e')],{'suspended':![],'role':_0xdd47('0x28')});if(_0x398686[_0xdd47('0x1e')][_0xdd47('0x26')]){_0x44ac38=_[_0xdd47('0x29')](_0x398686[_0xdd47('0x1e')]);}}if(_0x44ac38){logger[_0xdd47('0x14')]('Enduser\x20found!');return _0x44ac38;}else{logger[_0xdd47('0x14')](_0xdd47('0x2a'));return request({'uri':util[_0xdd47('0x18')](_0xdd47('0x2b'),_0x46b7f3[_0xdd47('0xd')]),'method':_0xdd47('0xe'),'body':{'user':{'role':_0xdd47('0x28'),'name':util[_0xdd47('0x18')]('Caller\x20-\x20%s',_0x4fa9ef||_0x11da6e),'phone':_0x11da6e}}})[_0xdd47('0x1b')](function(_0x20db2d){logger['info'](_0xdd47('0x2c'));return _0x20db2d[_0xdd47('0x22')];});}});}function getAuth(_0x10bbb9){var _0x5e1f6a;if(_0x10bbb9[_0xdd47('0x2d')]===_0xdd47('0x2e')){_0x5e1f6a=util[_0xdd47('0x18')](_0xdd47('0x2f'),_0x10bbb9[_0xdd47('0x30')],_0x10bbb9['password']);}else if(_0x10bbb9[_0xdd47('0x2d')]===_0xdd47('0x31')){_0x5e1f6a=util[_0xdd47('0x18')](_0xdd47('0x32'),_0x10bbb9[_0xdd47('0x30')],_0x10bbb9[_0xdd47('0x31')]);}return util[_0xdd47('0x18')](_0xdd47('0x33'),new Buffer(_0x5e1f6a)[_0xdd47('0x34')](_0xdd47('0x35')));}function request(_0x411f89){logger[_0xdd47('0x36')](_0xdd47('0x37'),JSON['stringify'](_0x411f89));return rp(_[_0xdd47('0x7')](_0x411f89,{'method':_0xdd47('0x38'),'headers':headers,'json':!![]}));}function getTags(_0x34c5c6,_0x5beaa6){var _0x34a80c=[];if(_0x34c5c6&&_0x34c5c6[_0xdd47('0x26')]>0x0){_0x34a80c=_[_0xdd47('0x39')](_0x34c5c6,_0x5beaa6);}return _0x34a80c;}function getCustomFields(_0x44a028,_0x22d648){var _0x35f3a0=[];var _0x36decc={'custom_fields':[]};if(_0x44a028['length']>0x0){_['forEach'](_0x44a028,function(_0x26e176){if(_[_0xdd47('0x3a')]([_0xdd47('0x3b'),_0xdd47('0x3c')],_0x26e176[_0xdd47('0x3d')])&&_0x26e176['nameField']&&!_0x26e176[_0xdd47('0x3e')]){_0x36decc[_0x26e176[_0xdd47('0x3f')]['toLowerCase']()]=_0x26e176[_0xdd47('0x40')][_0xdd47('0x34')]();}else if(_[_0xdd47('0x3a')](['string',_0xdd47('0x3c')],_0x26e176['type'])&&_0x26e176[_0xdd47('0x41')]&&_0x26e176[_0xdd47('0x3e')]){_0x36decc[_0xdd47('0x42')][_0xdd47('0x43')]({'id':_0x26e176[_0xdd47('0x41')],'value':_0x26e176[_0xdd47('0x40')]['toString']()});}else if(_0x26e176['type']===_0xdd47('0x44')&&_0x26e176[_0xdd47('0x45')]&&_0x26e176[_0xdd47('0x41')]&&_0x26e176[_0xdd47('0x3e')]){_0x22d648[_0x26e176[_0xdd47('0x45')]]&&_0x36decc[_0xdd47('0x42')][_0xdd47('0x43')]({'id':_0x26e176[_0xdd47('0x41')],'value':_0x22d648[_0x26e176[_0xdd47('0x45')]][_0xdd47('0x34')]()});}else if(_0x26e176[_0xdd47('0x3d')]===_0xdd47('0x46')&&_0x26e176[_0xdd47('0x47')]&&_0x26e176['Variable'][_0xdd47('0x48')]&&_0x26e176['idField']&&_0x26e176['customField']){_0x22d648[_0x26e176[_0xdd47('0x47')][_0xdd47('0x48')]['toLowerCase']()]&&_0x36decc[_0xdd47('0x42')][_0xdd47('0x43')]({'id':_0x26e176[_0xdd47('0x41')],'value':_0x22d648[_0x26e176[_0xdd47('0x47')][_0xdd47('0x48')][_0xdd47('0x49')]()][_0xdd47('0x34')]()});}});}return _0x36decc;}exports[_0xdd47('0x4a')]=function(_0x246d5b,_0x4ec9de,_0x489483,_0x48537c,_0x3fd4a1,_0x4ecfd4){var _0x4108ae,_0x396346;_0x4ecfd4[_0xdd47('0xd')]=intUtil[_0xdd47('0x4b')](_0x4ecfd4[_0xdd47('0xd')]);_0x4ecfd4['serverUrl']=intUtil[_0xdd47('0x4b')](_0x4ecfd4[_0xdd47('0x4c')]);if(_0x3fd4a1&&_0x3fd4a1[_0xdd47('0x4d')]){logger[_0xdd47('0x14')](_0xdd47('0x4e'),_0xdd47('0x4f'));_0x4ec9de[_0xdd47('0x50')]=util[_0xdd47('0x18')](_0xdd47('0x51'),_0x4ecfd4['serverUrl'],_0x4ec9de['uniqueid'],md5(_0x4ec9de[_0xdd47('0x52')]));}else{_0x4ec9de[_0xdd47('0x50')]='';}headers[_0xdd47('0x53')]=getAuth(_0x4ecfd4);return getUser(_0x4ecfd4,_0x48537c['email'])[_0xdd47('0x1b')](function(_0x3fe9cc){_0x4108ae=_0x3fe9cc;logger[_0xdd47('0x14')]('The\x20User\x20ID\x20is:',_0x4108ae['id']);return getEndUser(_0x4ecfd4,_0x4ec9de['calleridname'],_0x4ec9de[_0xdd47('0x54')]);})[_0xdd47('0x1b')](function(_0x369a57){_0x396346=_0x369a57;logger[_0xdd47('0x14')](_0xdd47('0x55'),_0x396346['id']);return getTicket(_0x4ecfd4,_0x4108ae,_0x396346,_0x489483,_0x4ec9de);})[_0xdd47('0x1b')](function(_0x5f5633){if(_0x5f5633){logger[_0xdd47('0x14')](_0xdd47('0x56'),_0x5f5633['id']);switch(_0x4ecfd4['type']){case'integrationTab':logger['info'](_0xdd47('0x4e'),_0xdd47('0x57'));return request({'uri':util['format'](_0xdd47('0x58'),_0x4ecfd4['remoteUri'],_0x4108ae['id'],_0x5f5633['id']),'method':'POST'});case _0xdd47('0x59'):logger['info'](_0xdd47('0x4e'),_0xdd47('0x5a'));emit(util['format'](_0xdd47('0x5b'),_0x48537c[_0xdd47('0x48')]),_0xdd47('0x5c'),{'uri':util[_0xdd47('0x18')](_0xdd47('0x5d'),_0x4ecfd4[_0xdd47('0xd')]['replace'](_0xdd47('0x5e'),''),_0x5f5633['id'])});break;default:logger[_0xdd47('0x5f')](_0xdd47('0x4e'),_0xdd47('0x60'));}}})[_0xdd47('0x61')](function(_0x479f7c){logger[_0xdd47('0x5f')]('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util['inspect'](_0x479f7c,{'showHidden':!![],'depth':null}));});};exports[_0xdd47('0x62')]=function(_0x216c59,_0x32ac27,_0x522b62,_0x5245ba,_0x279116,_0x212207,_0x3a225c){var _0x1e0056,_0x4f5545;_0x212207[_0xdd47('0xd')]=intUtil[_0xdd47('0x4b')](_0x212207[_0xdd47('0xd')]);_0x212207[_0xdd47('0x4c')]=intUtil[_0xdd47('0x4b')](_0x212207['serverUrl']);if(_0x3a225c&&_0x3a225c[_0xdd47('0x63')]&&_0x3a225c[_0xdd47('0x63')]!=='none'){logger[_0xdd47('0x14')](_0xdd47('0x64'),'Recording\x20is\x20enabled!');_0x32ac27[_0xdd47('0x50')]=util[_0xdd47('0x18')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x212207[_0xdd47('0x4c')],_0x32ac27['uniqueid'],md5(_0x32ac27['uniqueid']));}headers[_0xdd47('0x53')]=getAuth(_0x212207);return getUser(_0x212207,_0x5245ba['email'])[_0xdd47('0x1b')](function(_0x3fb3ec){_0x1e0056=_0x3fb3ec;logger[_0xdd47('0x14')]('The\x20User\x20ID\x20is:',_0x1e0056['id']);return getEndUser(_0x212207,_0x32ac27[_0xdd47('0x65')],_0x32ac27[_0xdd47('0x66')]);})[_0xdd47('0x1b')](function(_0x4ec59d){_0x4f5545=_0x4ec59d;logger[_0xdd47('0x14')]('The\x20Enduser\x20ID\x20is:',_0x4f5545['id']);return getTicket(_0x212207,_0x1e0056,_0x4f5545,_0x522b62,_0x32ac27);})['then'](function(_0x513df8){if(_0x513df8){logger[_0xdd47('0x14')]('The\x20Ticket\x20ID\x20is:',_0x513df8['id']);switch(_0x212207[_0xdd47('0x3d')]){case _0xdd47('0x67'):logger[_0xdd47('0x14')]('[OUTBOUND]',_0xdd47('0x57'));return request({'uri':util[_0xdd47('0x18')](_0xdd47('0x58'),_0x212207[_0xdd47('0xd')],_0x1e0056['id'],_0x513df8['id']),'method':'POST'});case _0xdd47('0x59'):logger[_0xdd47('0x14')](_0xdd47('0x64'),_0xdd47('0x5a'));emit(util[_0xdd47('0x18')]('user:%s',_0x5245ba[_0xdd47('0x48')]),_0xdd47('0x5c'),{'uri':util[_0xdd47('0x18')](_0xdd47('0x5d'),_0x212207[_0xdd47('0xd')][_0xdd47('0x68')](_0xdd47('0x5e'),''),_0x513df8['id'])});break;default:logger['error'](_0xdd47('0x64'),_0xdd47('0x60'));}}})['catch'](function(_0x2f86d8){logger['error']('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util[_0xdd47('0x69')](_0x2f86d8,{'showHidden':!![],'depth':null}));});};exports[_0xdd47('0x6a')]=function(_0x9024d5,_0xa35d4d,_0x3b4582,_0x56629c,_0x11a4b8,_0x57a057){var _0x443235,_0xe614a3;_0x57a057[_0xdd47('0xd')]=intUtil[_0xdd47('0x4b')](_0x57a057[_0xdd47('0xd')]);_0x57a057[_0xdd47('0x4c')]=intUtil['stripTrailingSlash'](_0x57a057['serverUrl']);if(_0x11a4b8&&_0x11a4b8[_0xdd47('0x4d')]){logger[_0xdd47('0x14')]('['+_0xa35d4d[_0xdd47('0x6b')]['toUpperCase']()+']',_0xdd47('0x4f'));_0xa35d4d[_0xdd47('0x50')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x57a057[_0xdd47('0x4c')],_0xa35d4d['uniqueid'],md5(_0xa35d4d[_0xdd47('0x52')]));}else{_0xa35d4d[_0xdd47('0x50')]='';}headers[_0xdd47('0x53')]=getAuth(_0x57a057);return getUser(_0x57a057)[_0xdd47('0x1b')](function(_0x28aa4e){_0x443235=_0x28aa4e;logger['info'](_0xdd47('0x6c'),_0x443235['id']);return getEndUser(_0x57a057,_0xa35d4d[_0xdd47('0x6d')],_0xa35d4d[_0xdd47('0x54')]);})[_0xdd47('0x1b')](function(_0x596a0a){_0xe614a3=_0x596a0a;logger[_0xdd47('0x14')](_0xdd47('0x55'),_0xe614a3['id']);return getTicket(_0x57a057,_0x443235,_0xe614a3,_0x3b4582,_0xa35d4d);})[_0xdd47('0x1b')](function(_0x458c1b){if(_0x458c1b){logger[_0xdd47('0x14')](_0xdd47('0x56'),_0x458c1b['id']);}})[_0xdd47('0x61')](function(_0x57fae1){logger[_0xdd47('0x5f')]('['+_0xa35d4d[_0xdd47('0x6b')][_0xdd47('0x6e')]()+']'+_0xdd47('0x6f'),util[_0xdd47('0x69')](_0x57fae1,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 50e9887..c0c9178 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecf8=['answertime','endtime','YYYY-MM-DDTHH:mm:ss','diff','starttime','called','Call_Result','Called','complete','Answered','rejected','Rejected','Abandoned','timeout','agentcalledAt','Call_Type','merge','Fields','/crm/v2/Calls','code','Call\x20created!','err','log','queue','host','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','uniqueid','/downloads?type=uniqueid&token=','zoho.eu','com','The\x20User\x20ID\x20is:','calleridname','calleridnum','Inbound','The\x20Call\x20ID\x20is:','user:%s','trigger:browser:url','https://crm.','outbound','stripTrailingSlash','recordingFormat','none','destcalleridname','destcalleridnum','[OUTBOUND]','unmanaged','lastevent','toUpperCase','lodash','request-promise','md5','util','moment','bluebird','../../../../config/environment','zoho','redis','defaults','localhost','emit','debug','[HTTP]','length','forEach','includes','string','picklist','idField','content','toString','variable','variableName','type','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','access_token','isBefore','expires_in','https://accounts.zoho.com','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','clientId','clientSecret','refresh_token','then','add','catch','error','Failing\x20creating\x20the\x20access_token','stack','info','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','isArrayLikeObject','users','findIndex','email','Agent\x20found!','Using\x20the\x20admin\x20account!','Administrator','user','profile','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','stringify','The\x20failing\x20result\x20is','data','enduserType','https://www.zohoapis.','/crm/v2/','startCase','moduleCreate','role','first_name','last_name','Zoho-oauthtoken\x20','SUCCESS','details','Error:\x20','CREATE\x20ERROR','moduleSearch','contact_lead','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','uri','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','contact','nothing','lead','Creating\x20new\x20call...','Owner','Subject','getString','Descriptions','Who_Id','Full_Name','First_Name','What_Id','Last_Name','talktime','Call_Duration','utc','mm:ss'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0xecf8,0xd4));var _0x8ecf=function(_0x42728e,_0x5034ae){_0x42728e=_0x42728e-0x0;var _0x50a9d5=_0xecf8[_0x42728e];return _0x50a9d5;};'use strict';var _=require(_0x8ecf('0x0'));var rp=require(_0x8ecf('0x1'));var md5=require(_0x8ecf('0x2'));var util=require(_0x8ecf('0x3'));var intUtil=require('./util');var moment=require(_0x8ecf('0x4'));var Redis=require('ioredis');var BPromise=require(_0x8ecf('0x5'));var config=require(_0x8ecf('0x6'));var logger=require('../../../../config/logger')(_0x8ecf('0x7'));config[_0x8ecf('0x8')]=_[_0x8ecf('0x9')](config[_0x8ecf('0x8')],{'host':_0x8ecf('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x8ecf('0x8')]));function emit(_0x13865a,_0x13441c,_0x247308){io['to'](_0x13865a)[_0x8ecf('0xb')](_0x13441c,_0x247308);}function request(_0x29a9c7){logger[_0x8ecf('0xc')](_0x8ecf('0xd'),JSON['stringify'](_0x29a9c7));return rp(_0x29a9c7);}function getCustomFields(_0x57fc2f,_0x4bb041){var _0x390785={};if(_0x57fc2f[_0x8ecf('0xe')]>0x0){_[_0x8ecf('0xf')](_0x57fc2f,function(_0x2d0723){if(_[_0x8ecf('0x10')]([_0x8ecf('0x11'),_0x8ecf('0x12')],_0x2d0723['type'])&&_0x2d0723[_0x8ecf('0x13')]){_0x390785[_0x2d0723[_0x8ecf('0x13')]]=_0x2d0723[_0x8ecf('0x14')][_0x8ecf('0x15')]();}else if(_0x2d0723['type']===_0x8ecf('0x16')&&_0x2d0723[_0x8ecf('0x17')]&&_0x2d0723['idField']&&_0x4bb041[_0x2d0723[_0x8ecf('0x17')]]){_0x390785[_0x2d0723[_0x8ecf('0x13')]]=_0x4bb041[_0x2d0723[_0x8ecf('0x17')]][_0x8ecf('0x15')]();}else if(_0x2d0723[_0x8ecf('0x18')]===_0x8ecf('0x19')&&_0x2d0723[_0x8ecf('0x1a')]&&_0x2d0723[_0x8ecf('0x1a')][_0x8ecf('0x1b')]&&_0x2d0723[_0x8ecf('0x13')]&&_0x4bb041[_0x2d0723[_0x8ecf('0x1a')][_0x8ecf('0x1b')][_0x8ecf('0x1c')]()]){_0x390785[_0x2d0723[_0x8ecf('0x13')]]=_0x4bb041[_0x2d0723['Variable']['name']['toLowerCase']()][_0x8ecf('0x15')]();}});}return _0x390785;}function getName(_0x52ff92){if(_0x52ff92[_0x8ecf('0x1d')]('\x20')>0x0){var _0x147178=_0x52ff92[_0x8ecf('0x1e')](/ (.+)/);if(_0x147178[0x1]){return _0x147178;}}return[_0x52ff92,_0x52ff92];}var accountsTokens={};function getAccessToken(_0x33ebd0){return new Promise(function(_0x2f2d45,_0x32186d){if(!_['isNil'](accountsTokens[_0x33ebd0['id']])&&!_[_0x8ecf('0x1f')](accountsTokens[_0x33ebd0['id']][_0x8ecf('0x20')])){if(moment()[_0x8ecf('0x21')](accountsTokens[_0x33ebd0['id']][_0x8ecf('0x22')])){_0x2f2d45(accountsTokens[_0x33ebd0['id']][_0x8ecf('0x20')]);}}var _0x377782;switch(_0x33ebd0['zone']){case'US':_0x377782=_0x8ecf('0x23');break;case'AU':_0x377782='https://accounts.zoho.com.au';break;case'EU':_0x377782=_0x8ecf('0x24');break;case'IN':_0x377782=_0x8ecf('0x25');break;case'CN':_0x377782=_0x8ecf('0x26');break;default:_0x377782=_0x8ecf('0x24');break;}var _0x44c61f={'method':_0x8ecf('0x27'),'uri':_0x377782+_0x8ecf('0x28'),'qs':{'refresh_token':_0x33ebd0['refreshToken'],'client_id':_0x33ebd0[_0x8ecf('0x29')],'client_secret':_0x33ebd0[_0x8ecf('0x2a')],'grant_type':_0x8ecf('0x2b')},'json':!![]};return rp(_0x44c61f)[_0x8ecf('0x2c')](function(_0x29d657){accountsTokens[_0x33ebd0['id']]={'access_token':_0x29d657[_0x8ecf('0x20')],'expires_in':moment()[_0x8ecf('0x2d')](_0x29d657[_0x8ecf('0x22')],'seconds')};_0x2f2d45(_0x29d657[_0x8ecf('0x20')]);})[_0x8ecf('0x2e')](function(_0x31c2d0){logger[_0x8ecf('0x2f')](_0x8ecf('0x30'),_0x31c2d0[_0x8ecf('0x31')]);_0x32186d(_0x31c2d0);});});}function getUser(_0x49e38d,_0x5b1f32,_0x26a930,_0x62d23e){logger[_0x8ecf('0x32')](_0x8ecf('0x33'));return request({'method':_0x8ecf('0x34'),'uri':util[_0x8ecf('0x35')](_0x8ecf('0x36'),_0x5b1f32),'qs':{'type':_0x8ecf('0x37')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x49e38d},'json':!![]})[_0x8ecf('0x2c')](function(_0x381e76){if(_0x381e76['users']){var _0x1ab739=-0x1;if(_[_0x8ecf('0x38')](_0x381e76[_0x8ecf('0x39')])){if(!_[_0x8ecf('0x1f')](_0x62d23e)){_0x1ab739=_[_0x8ecf('0x3a')](_0x381e76[_0x8ecf('0x39')],function(_0x15c7a4){return _0x15c7a4[_0x8ecf('0x3b')]===_0x62d23e;});}if(_0x1ab739>=0x0){logger[_0x8ecf('0x32')](_0x8ecf('0x3c'));}else{logger[_0x8ecf('0x32')](_0x8ecf('0x3d'));_0x1ab739=_[_0x8ecf('0x3a')](_0x381e76['users'],function(_0x12800b){return _0x12800b['profile'][_0x8ecf('0x1b')]===_0x8ecf('0x3e');});}return _0x381e76[_0x8ecf('0x39')][_0x1ab739];}else{if(_0x381e76[_0x8ecf('0x3f')][_0x8ecf('0x40')][_0x8ecf('0x1b')]==='Administrator'){logger['info'](_0x8ecf('0x3d'));user=_0x381e76[_0x8ecf('0x3f')];return user;}else{logger[_0x8ecf('0x2f')]('The\x20failing\x20result\x20is',JSON['stringify'](_0x381e76));throw new Error(_0x8ecf('0x41')+JSON[_0x8ecf('0x42')](_0x381e76));}}}else{logger[_0x8ecf('0x2f')](_0x8ecf('0x43'),JSON[_0x8ecf('0x42')](_0x381e76));throw new Error(_0x8ecf('0x41')+JSON[_0x8ecf('0x42')](_0x381e76));}})[_0x8ecf('0x2e')](function(_0x2a1b8a){console['error'](_0x2a1b8a);});}function getZohoUser(_0xd25086,_0x2bd483){return new BPromise(function(_0x42f2f4,_0x463523){request(_0xd25086)[_0x8ecf('0x2c')](function(_0x4d4480){var _0x2b5fa1=null;if(_0x4d4480){_0x2b5fa1=_0x4d4480[_0x8ecf('0x44')][0x0];_0x2b5fa1[_0x8ecf('0x45')]=_0x2bd483;}_0x42f2f4(_0x2b5fa1);})[_0x8ecf('0x2e')](function(_0x763e93){_0x463523(_0x763e93);});});}function createEndUser(_0xf0d767,_0x18d754,_0x26af96,_0x210d87,_0x1dcf4f,_0x597316){var _0x26af96=getName(_0x26af96);return request({'method':_0x8ecf('0x27'),'uri':_0x8ecf('0x46')+_0x18d754+_0x8ecf('0x47')+_[_0x8ecf('0x48')](_0x597316[_0x8ecf('0x49')])+'s','body':{'data':[{'Last_Name':_0x26af96[0x1],'First_Name':_0x26af96[0x0],'Phone':_0x210d87,'Owner':{'name':!_[_0x8ecf('0x1f')](_0x1dcf4f[_0x8ecf('0x4a')][_0x8ecf('0x1b')])?_0x1dcf4f['role'][_0x8ecf('0x1b')]:!_[_0x8ecf('0x1f')](_0x1dcf4f[_0x8ecf('0x4b')])?_0x1dcf4f[_0x8ecf('0x4b')]+'\x20'+_0x1dcf4f[_0x8ecf('0x4c')]:_0x1dcf4f[_0x8ecf('0x4c')],'id':_0x1dcf4f['id']}}]},'headers':{'Authorization':_0x8ecf('0x4d')+_0xf0d767},'json':!![]})[_0x8ecf('0x2c')](function(_0x1c3760){if(_0x1c3760&&_0x1c3760['data'][0x0]['code']===_0x8ecf('0x4e')){var _0x31d24b=_0x1c3760[_0x8ecf('0x44')][0x0][_0x8ecf('0x4f')];_0x31d24b[_0x8ecf('0x45')]=_['startCase'](_0x597316[_0x8ecf('0x49')])+'s';return _0x31d24b;}logger[_0x8ecf('0x2f')]('The\x20failing\x20result\x20is',JSON[_0x8ecf('0x42')](data));throw new Error(_0x8ecf('0x50')+JSON['stringify'](data));})[_0x8ecf('0x2e')](function(_0x1206f7){console['log'](_0x8ecf('0x51'),_0x1206f7);});}function getEndUser(_0x3d11e9,_0x1f4b42,_0x3d6c75,_0x4ac57f,_0x364d8f,_0x27eabc,_0x17b426){var _0x4ab01a={'method':'GET','uri':'','headers':{'Authorization':_0x8ecf('0x4d')+_0x3d11e9},'json':!![]};switch(_0x17b426[_0x8ecf('0x52')]){case _0x8ecf('0x53'):_0x4ab01a['uri']=_0x8ecf('0x46')+_0x1f4b42+_0x8ecf('0x54')+_0x364d8f+'))';return getZohoUser(_0x4ab01a,_0x8ecf('0x55'))[_0x8ecf('0x2c')](function(_0x25b169){if(_0x25b169)return _0x25b169;_0x4ab01a[_0x8ecf('0x56')]=_0x8ecf('0x46')+_0x1f4b42+_0x8ecf('0x57')+_0x364d8f+'))';return getZohoUser(_0x4ab01a,_0x8ecf('0x58'))[_0x8ecf('0x2c')](function(_0x85c191){if(_0x85c191)return _0x85c191;if(_0x17b426[_0x8ecf('0x49')]!='nothing'){return createEndUser(_0x3d11e9,_0x1f4b42,_0x4ac57f,_0x364d8f,_0x27eabc,_0x17b426);}else{return{};}});});break;case _0x8ecf('0x59'):_0x4ab01a[_0x8ecf('0x56')]='https://www.zohoapis.'+_0x1f4b42+_0x8ecf('0x54')+_0x364d8f+'))';return getZohoUser(_0x4ab01a,_0x8ecf('0x55'))[_0x8ecf('0x2c')](function(_0x2c57b9){if(_0x2c57b9)return _0x2c57b9;if(_0x17b426[_0x8ecf('0x49')]!=_0x8ecf('0x5a')){return createEndUser(_0x3d11e9,_0x1f4b42,_0x4ac57f,_0x364d8f,_0x27eabc,_0x17b426);}else{return{};}});break;case _0x8ecf('0x5b'):_0x4ab01a['uri']='https://www.zohoapis.'+_0x1f4b42+_0x8ecf('0x57')+_0x364d8f+'))';return getZohoUser(_0x4ab01a,_0x8ecf('0x58'))[_0x8ecf('0x2c')](function(_0x46ac1a){if(_0x46ac1a)return _0x46ac1a;if(_0x17b426[_0x8ecf('0x49')]!=_0x8ecf('0x5a')){return createEndUser(_0x3d11e9,_0x1f4b42,_0x4ac57f,_0x364d8f,_0x27eabc,_0x17b426);}else{return{};}});break;}}function getCall(_0x47ac13,_0x4e05a8,_0x2d6b5f,_0x426793,_0x4f38a9,_0x5e1a24,_0x4561d5,_0x3792fb){logger['info'](_0x8ecf('0x5c'));var _0x3e1407={};_0x3e1407[_0x8ecf('0x5d')]={'name':!_[_0x8ecf('0x1f')](_0x426793[_0x8ecf('0x4a')][_0x8ecf('0x1b')])&&!_[_0x8ecf('0x1f')](_0x426793[_0x8ecf('0x40')]['name'])&&_0x426793[_0x8ecf('0x40')]['name']==='administrator'?_0x426793[_0x8ecf('0x4a')][_0x8ecf('0x1b')]:!_[_0x8ecf('0x1f')](_0x426793[_0x8ecf('0x4b')])?_0x426793['first_name']+'\x20'+_0x426793[_0x8ecf('0x4c')]:_0x426793[_0x8ecf('0x4c')],'id':_0x426793['id']};_0x3e1407[_0x8ecf('0x5e')]=intUtil[_0x8ecf('0x5f')](_0x5e1a24['Subjects'],_0x4561d5,'\x20');_0x3e1407['Description']=intUtil[_0x8ecf('0x5f')](_0x5e1a24[_0x8ecf('0x60')],_0x4561d5,'\x0a');if(_0x4f38a9['enduserType']===_0x8ecf('0x55')){_0x3e1407[_0x8ecf('0x61')]={'name':!_[_0x8ecf('0x1f')](_0x4f38a9[_0x8ecf('0x62')])?_0x4f38a9['Full_Name']:!_[_0x8ecf('0x1f')](_0x4f38a9[_0x8ecf('0x63')])?_0x4f38a9[_0x8ecf('0x63')]+'\x20'+_0x4f38a9['Last_Name']:_0x4f38a9['Last_Name'],'id':_0x4f38a9['id']};}if(_0x4f38a9['enduserType']===_0x8ecf('0x58')){_0x3e1407[_0x8ecf('0x64')]={'name':!_[_0x8ecf('0x1f')](_0x4f38a9[_0x8ecf('0x62')])?_0x4f38a9[_0x8ecf('0x62')]:!_[_0x8ecf('0x1f')](_0x4f38a9[_0x8ecf('0x63')])?_0x4f38a9['First_Name']+'\x20'+_0x4f38a9[_0x8ecf('0x65')]:_0x4f38a9[_0x8ecf('0x65')],'id':_0x4f38a9['id']};_0x3e1407['$se_module']=_[_0x8ecf('0x48')](_0x4f38a9[_0x8ecf('0x45')]);}if(_0x4561d5[_0x8ecf('0x66')]){_0x3e1407[_0x8ecf('0x67')]=moment[_0x8ecf('0x68')](parseInt(_0x4561d5[_0x8ecf('0x66')])*0x3e8)[_0x8ecf('0x35')](_0x8ecf('0x69'));}else if(_0x4561d5[_0x8ecf('0x6a')]&&_0x4561d5[_0x8ecf('0x6b')]){_0x3e1407[_0x8ecf('0x67')]=moment[_0x8ecf('0x68')](moment(_0x4561d5[_0x8ecf('0x6b')],_0x8ecf('0x6c'))[_0x8ecf('0x6d')](moment(_0x4561d5[_0x8ecf('0x6e')],_0x8ecf('0x6c'))))[_0x8ecf('0x35')](_0x8ecf('0x69'));}switch(_0x4561d5['lastevent']){case _0x8ecf('0x6f'):_0x3e1407[_0x8ecf('0x70')]=_0x8ecf('0x71');break;case _0x8ecf('0x72'):case'connect':_0x3e1407[_0x8ecf('0x70')]=_0x8ecf('0x73');break;case _0x8ecf('0x74'):_0x3e1407['Call_Result']=_0x8ecf('0x75');break;case'abandoned':_0x3e1407[_0x8ecf('0x70')]=_0x8ecf('0x76');break;case _0x8ecf('0x77'):_0x3e1407[_0x8ecf('0x70')]='Timeout';default:}_0x3e1407['Call_Start_Time']=(_0x3792fb==='outbound'?moment(_0x4561d5[_0x8ecf('0x6e')])[_0x8ecf('0x35')](_0x8ecf('0x6c')):moment(_0x4561d5[_0x8ecf('0x78')])[_0x8ecf('0x35')]('YYYY-MM-DDTHH:mm:ss'))||moment()[_0x8ecf('0x35')](_0x8ecf('0x6c'));_0x3e1407[_0x8ecf('0x79')]=_0x3792fb||'Inbound';_0x3e1407=_[_0x8ecf('0x7a')](_0x3e1407,getCustomFields(_0x5e1a24[_0x8ecf('0x7b')],_0x4561d5));return request({'method':'POST','uri':'https://www.zohoapis.'+_0x4e05a8+_0x8ecf('0x7c'),'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x47ac13},'body':{'data':[_0x3e1407]},'json':!![]})[_0x8ecf('0x2c')](function(_0x1a88ac){if(_0x1a88ac&&_0x1a88ac[_0x8ecf('0x44')][0x0][_0x8ecf('0x7d')]===_0x8ecf('0x4e')){logger[_0x8ecf('0x32')](_0x8ecf('0x7e'));return{'id':_0x1a88ac[_0x8ecf('0x44')][0x0][_0x8ecf('0x4f')]['id']};}})[_0x8ecf('0x2e')](function(_0x382223){logger[_0x8ecf('0x32')](_0x8ecf('0x7f'),_0x382223[_0x8ecf('0x31')]);console[_0x8ecf('0x80')]('err',_0x382223);});}exports[_0x8ecf('0x81')]=function(_0xeb3a3a,_0x3105f5,_0x35abe1,_0x4eff43,_0x2e2afa,_0x3c2f9e){var _0x12db8d,_0x1b4b29,_0x174291;_0x3c2f9e[_0x8ecf('0x82')]=intUtil['stripTrailingSlash'](_0x3c2f9e[_0x8ecf('0x82')]);_0x3c2f9e[_0x8ecf('0x83')]=intUtil['stripTrailingSlash'](_0x3c2f9e['serverUrl']);if(_0x2e2afa&&_0x2e2afa[_0x8ecf('0x84')]){logger[_0x8ecf('0x32')](_0x8ecf('0x85'),_0x8ecf('0x86'));_0x3105f5[_0x8ecf('0x87')]=_0x3c2f9e[_0x8ecf('0x83')]+_0x8ecf('0x88')+_0x3105f5[_0x8ecf('0x89')]+_0x8ecf('0x8a')+md5(_0x3105f5[_0x8ecf('0x89')]);}else{_0x3105f5[_0x8ecf('0x87')]='';}var _0x49adf3=_0x3c2f9e['host']===_0x8ecf('0x8b')?'eu':_0x8ecf('0x8c');return getAccessToken(_0x3c2f9e)[_0x8ecf('0x2c')](function(_0x21da7d){_0x174291=_0x21da7d;return getUser(_0x174291,_0x49adf3,_0x3c2f9e,_0x4eff43[_0x8ecf('0x3b')]);})[_0x8ecf('0x2c')](function(_0x3a8cea){_0x12db8d=_0x3a8cea;logger[_0x8ecf('0x32')](_0x8ecf('0x8d'),_0x12db8d['id']);return getEndUser(_0x174291,_0x49adf3,_0x3c2f9e,_0x3105f5[_0x8ecf('0x8e')],_0x3105f5[_0x8ecf('0x8f')],_0x12db8d,_0x35abe1);})[_0x8ecf('0x2c')](function(_0x109a64){_0x1b4b29=_0x109a64;return getCall(_0x174291,_0x49adf3,_0x3c2f9e,_0x12db8d,_0x1b4b29,_0x35abe1,_0x3105f5,_0x8ecf('0x90'));})[_0x8ecf('0x2c')](function(_0x3c1fe2){if(_0x3c1fe2){logger[_0x8ecf('0x32')](_0x8ecf('0x91'),_0x3c1fe2['id']);logger[_0x8ecf('0x32')]('[QUEUE]','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x8ecf('0x35')](_0x8ecf('0x92'),_0x4eff43[_0x8ecf('0x1b')]),_0x8ecf('0x93'),{'uri':_0x8ecf('0x94')+_0x3c2f9e[_0x8ecf('0x82')]+'/crm/EntityInfo.do?module=Calls&id='+_0x3c1fe2['id']});}})[_0x8ecf('0x2e')](function(_0xb29f65){logger[_0x8ecf('0x2f')]('[QUEUE]',JSON[_0x8ecf('0x42')](_0xb29f65));});};exports[_0x8ecf('0x95')]=function(_0x9f52ab,_0x563841,_0x2330ef,_0x1437d4,_0x57df77,_0x1ed4fe,_0x49eb25){var _0x57c6ed,_0x26de37,_0x15a2a9;_0x1ed4fe[_0x8ecf('0x82')]=intUtil[_0x8ecf('0x96')](_0x1ed4fe[_0x8ecf('0x82')]);_0x1ed4fe[_0x8ecf('0x83')]=intUtil[_0x8ecf('0x96')](_0x1ed4fe[_0x8ecf('0x83')]);if(_0x49eb25&&_0x49eb25['recordingFormat']&&_0x49eb25[_0x8ecf('0x97')]!==_0x8ecf('0x98')){logger[_0x8ecf('0x32')]('[OUTBOUND]',_0x8ecf('0x86'));_0x563841['recordingURL']=_0x1ed4fe[_0x8ecf('0x83')]+'/api/voice/recordings/'+_0x563841[_0x8ecf('0x89')]+_0x8ecf('0x8a')+md5(_0x563841[_0x8ecf('0x89')]);}var _0x33bbd6=_0x1ed4fe[_0x8ecf('0x82')]==='zoho.eu'?'eu':'com';return getAccessToken(_0x1ed4fe)['then'](function(_0x51257e){_0x15a2a9=_0x51257e;return getUser(_0x15a2a9,_0x33bbd6,_0x1ed4fe,_0x1437d4[_0x8ecf('0x3b')]);})['then'](function(_0x32e2b4){_0x57c6ed=_0x32e2b4;logger[_0x8ecf('0x32')]('The\x20User\x20ID\x20is:',_0x57c6ed['id']);return getEndUser(_0x15a2a9,_0x33bbd6,_0x1ed4fe,_0x563841[_0x8ecf('0x99')],_0x563841[_0x8ecf('0x9a')],_0x57c6ed,_0x2330ef);})[_0x8ecf('0x2c')](function(_0x10c79b){_0x26de37=_0x10c79b;return getCall(_0x15a2a9,_0x33bbd6,_0x1ed4fe,_0x57c6ed,_0x26de37,_0x2330ef,_0x563841,'Outbound');})[_0x8ecf('0x2c')](function(_0x3aec45){if(_0x3aec45){logger[_0x8ecf('0x32')](_0x8ecf('0x91'),_0x3aec45['id']);logger[_0x8ecf('0x32')](_0x8ecf('0x9b'),'Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format']('user:%s',_0x1437d4[_0x8ecf('0x1b')]),_0x8ecf('0x93'),{'uri':_0x8ecf('0x94')+_0x1ed4fe[_0x8ecf('0x82')]+'/crm/EntityInfo.do?module=Calls&id='+_0x3aec45['id']});}})[_0x8ecf('0x2e')](function(_0x2f05ba){logger[_0x8ecf('0x2f')](_0x8ecf('0x9b'),JSON['stringify'](_0x2f05ba));});};exports[_0x8ecf('0x9c')]=function(_0x4c08da,_0x108213,_0x163309,_0x51c37,_0x18e556,_0x66d013){var _0x2a40e1,_0xdffab7,_0x2b9014;_0x66d013[_0x8ecf('0x82')]=intUtil[_0x8ecf('0x96')](_0x66d013['host']);_0x66d013[_0x8ecf('0x83')]=intUtil[_0x8ecf('0x96')](_0x66d013['serverUrl']);if(_0x18e556&&_0x18e556['monitor_format']){logger[_0x8ecf('0x32')]('['+_0x108213[_0x8ecf('0x9d')][_0x8ecf('0x9e')]()+']',_0x8ecf('0x86'));_0x108213['recordingURL']=_0x66d013['serverUrl']+_0x8ecf('0x88')+_0x108213[_0x8ecf('0x89')]+_0x8ecf('0x8a')+md5(_0x108213[_0x8ecf('0x89')]);}else{_0x108213[_0x8ecf('0x87')]='';}var _0x38d33b=_0x66d013['host']===_0x8ecf('0x8b')?'eu':_0x8ecf('0x8c');return getAccessToken(_0x66d013)[_0x8ecf('0x2c')](function(_0xd1e01e){_0x2b9014=_0xd1e01e;return getUser(_0x2b9014,_0x38d33b,_0x66d013);})[_0x8ecf('0x2c')](function(_0x540c94){_0x2a40e1=_0x540c94;logger['info'](_0x8ecf('0x8d'),_0x2a40e1['id']);return getEndUser(_0x2b9014,_0x38d33b,_0x66d013,_0x108213[_0x8ecf('0x8e')],_0x108213[_0x8ecf('0x8f')],_0x2a40e1,_0x163309);})[_0x8ecf('0x2c')](function(_0x17a6ca){_0xdffab7=_0x17a6ca;return getCall(_0x2b9014,_0x38d33b,_0x66d013,_0x2a40e1,_0xdffab7,_0x163309,_0x108213,'Inbound');})[_0x8ecf('0x2c')](function(_0x4f2d46){if(_0x4f2d46){logger['info'](_0x8ecf('0x91'),_0x4f2d46['id']);}})[_0x8ecf('0x2e')](function(_0x4f4a01){logger[_0x8ecf('0x2f')]('['+_0x108213[_0x8ecf('0x9d')][_0x8ecf('0x9e')]()+']',JSON[_0x8ecf('0x42')](_0x4f4a01));});};
\ No newline at end of file
+var _0xf2f5=['Contacts','Leads','nothing','contact','/crm/v2/Contacts/search?criteria=((Phone:equals:','lead','/crm/v2/Leads/search?criteria=((Phone:equals:','Creating\x20new\x20call...','Owner','Subject','Subjects','Description','getString','Descriptions','Who_Id','Full_Name','Last_Name','What_Id','First_Name','$se_module','talktime','Call_Duration','utc','mm:ss','answertime','endtime','starttime','YYYY-MM-DDTHH:mm:ss','lastevent','called','Call_Result','Answered','rejected','abandoned','timeout','Call_Start_Time','outbound','agentcalledAt','Inbound','merge','Fields','details','err','log','queue','host','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','uniqueid','/downloads?type=uniqueid&token=','zoho.eu','com','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','none','/api/voice/recordings/','destcalleridname','destcalleridnum','Outbound','https://crm.','unmanaged','Recording\x20is\x20enabled!','toUpperCase','lodash','md5','./util','moment','ioredis','bluebird','../../../../config/environment','../../../../config/logger','zoho','redis','defaults','localhost','socket.io-emitter','emit','debug','[HTTP]','stringify','length','forEach','includes','string','type','idField','content','variable','variableName','toString','Variable','name','toLowerCase','indexOf','isNil','isBefore','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','refresh_token','seconds','access_token','catch','error','stack','info','Search\x20user','GET','format','then','isArrayLikeObject','users','findIndex','email','Agent\x20found!','profile','Administrator','user','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','enduserType','/crm/v2/','startCase','moduleCreate','role','first_name','last_name','Zoho-oauthtoken\x20','data','code','SUCCESS','CREATE\x20ERROR','moduleSearch','contact_lead','uri','https://www.zohoapis.'];(function(_0x5442f8,_0x2ccbeb){var _0x2ab914=function(_0x34c33b){while(--_0x34c33b){_0x5442f8['push'](_0x5442f8['shift']());}};_0x2ab914(++_0x2ccbeb);}(_0xf2f5,0x179));var _0x5f2f=function(_0x2b25c4,_0xbf65c2){_0x2b25c4=_0x2b25c4-0x0;var _0x564662=_0xf2f5[_0x2b25c4];return _0x564662;};'use strict';var _=require(_0x5f2f('0x0'));var rp=require('request-promise');var md5=require(_0x5f2f('0x1'));var util=require('util');var intUtil=require(_0x5f2f('0x2'));var moment=require(_0x5f2f('0x3'));var Redis=require(_0x5f2f('0x4'));var BPromise=require(_0x5f2f('0x5'));var config=require(_0x5f2f('0x6'));var logger=require(_0x5f2f('0x7'))(_0x5f2f('0x8'));config[_0x5f2f('0x9')]=_[_0x5f2f('0xa')](config[_0x5f2f('0x9')],{'host':_0x5f2f('0xb'),'port':0x18eb});var io=require(_0x5f2f('0xc'))(new Redis(config[_0x5f2f('0x9')]));function emit(_0x37c15c,_0x55de4c,_0x27eae9){io['to'](_0x37c15c)[_0x5f2f('0xd')](_0x55de4c,_0x27eae9);}function request(_0x57e876){logger[_0x5f2f('0xe')](_0x5f2f('0xf'),JSON[_0x5f2f('0x10')](_0x57e876));return rp(_0x57e876);}function getCustomFields(_0x32cc75,_0x1261af){var _0xe039b8={};if(_0x32cc75[_0x5f2f('0x11')]>0x0){_[_0x5f2f('0x12')](_0x32cc75,function(_0x1a130c){if(_[_0x5f2f('0x13')]([_0x5f2f('0x14'),'picklist'],_0x1a130c[_0x5f2f('0x15')])&&_0x1a130c[_0x5f2f('0x16')]){_0xe039b8[_0x1a130c[_0x5f2f('0x16')]]=_0x1a130c[_0x5f2f('0x17')]['toString']();}else if(_0x1a130c[_0x5f2f('0x15')]===_0x5f2f('0x18')&&_0x1a130c['variableName']&&_0x1a130c[_0x5f2f('0x16')]&&_0x1261af[_0x1a130c[_0x5f2f('0x19')]]){_0xe039b8[_0x1a130c[_0x5f2f('0x16')]]=_0x1261af[_0x1a130c[_0x5f2f('0x19')]][_0x5f2f('0x1a')]();}else if(_0x1a130c[_0x5f2f('0x15')]==='customVariable'&&_0x1a130c[_0x5f2f('0x1b')]&&_0x1a130c['Variable'][_0x5f2f('0x1c')]&&_0x1a130c['idField']&&_0x1261af[_0x1a130c[_0x5f2f('0x1b')][_0x5f2f('0x1c')][_0x5f2f('0x1d')]()]){_0xe039b8[_0x1a130c['idField']]=_0x1261af[_0x1a130c[_0x5f2f('0x1b')][_0x5f2f('0x1c')][_0x5f2f('0x1d')]()]['toString']();}});}return _0xe039b8;}function getName(_0x56224f){if(_0x56224f[_0x5f2f('0x1e')]('\x20')>0x0){var _0x45279b=_0x56224f['split'](/ (.+)/);if(_0x45279b[0x1]){return _0x45279b;}}return[_0x56224f,_0x56224f];}var accountsTokens={};function getAccessToken(_0x187e87){return new Promise(function(_0xe0082b,_0xf31856){if(!_[_0x5f2f('0x1f')](accountsTokens[_0x187e87['id']])&&!_[_0x5f2f('0x1f')](accountsTokens[_0x187e87['id']]['access_token'])){if(moment()[_0x5f2f('0x20')](accountsTokens[_0x187e87['id']][_0x5f2f('0x21')])){_0xe0082b(accountsTokens[_0x187e87['id']]['access_token']);}}var _0x399fef;switch(_0x187e87[_0x5f2f('0x22')]){case'US':_0x399fef=_0x5f2f('0x23');break;case'AU':_0x399fef='https://accounts.zoho.com.au';break;case'EU':_0x399fef=_0x5f2f('0x24');break;case'IN':_0x399fef=_0x5f2f('0x25');break;case'CN':_0x399fef=_0x5f2f('0x26');break;default:_0x399fef='https://accounts.zoho.eu';break;}var _0x202f7d={'method':_0x5f2f('0x27'),'uri':_0x399fef+_0x5f2f('0x28'),'qs':{'refresh_token':_0x187e87[_0x5f2f('0x29')],'client_id':_0x187e87['clientId'],'client_secret':_0x187e87['clientSecret'],'grant_type':_0x5f2f('0x2a')},'json':!![]};return rp(_0x202f7d)['then'](function(_0x117ff0){accountsTokens[_0x187e87['id']]={'access_token':_0x117ff0['access_token'],'expires_in':moment()['add'](_0x117ff0[_0x5f2f('0x21')],_0x5f2f('0x2b'))};_0xe0082b(_0x117ff0[_0x5f2f('0x2c')]);})[_0x5f2f('0x2d')](function(_0x135881){logger[_0x5f2f('0x2e')]('Failing\x20creating\x20the\x20access_token',_0x135881[_0x5f2f('0x2f')]);_0xf31856(_0x135881);});});}function getUser(_0x2d0ff0,_0x3250c9,_0xa07221,_0x2cf5b4){logger[_0x5f2f('0x30')](_0x5f2f('0x31'));return request({'method':_0x5f2f('0x32'),'uri':util[_0x5f2f('0x33')]('https://www.zohoapis.%s/crm/v2/users',_0x3250c9),'qs':{'type':'ActiveUsers'},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x2d0ff0},'json':!![]})[_0x5f2f('0x34')](function(_0x767e45){if(_0x767e45['users']){var _0x184861=-0x1;if(_[_0x5f2f('0x35')](_0x767e45[_0x5f2f('0x36')])){if(!_[_0x5f2f('0x1f')](_0x2cf5b4)){_0x184861=_[_0x5f2f('0x37')](_0x767e45[_0x5f2f('0x36')],function(_0x55fb8a){return _0x55fb8a[_0x5f2f('0x38')]===_0x2cf5b4;});}if(_0x184861>=0x0){logger[_0x5f2f('0x30')](_0x5f2f('0x39'));}else{logger[_0x5f2f('0x30')]('Using\x20the\x20admin\x20account!');_0x184861=_[_0x5f2f('0x37')](_0x767e45[_0x5f2f('0x36')],function(_0x568da2){return _0x568da2[_0x5f2f('0x3a')][_0x5f2f('0x1c')]===_0x5f2f('0x3b');});}return _0x767e45[_0x5f2f('0x36')][_0x184861];}else{if(_0x767e45[_0x5f2f('0x3c')][_0x5f2f('0x3a')][_0x5f2f('0x1c')]===_0x5f2f('0x3b')){logger[_0x5f2f('0x30')]('Using\x20the\x20admin\x20account!');user=_0x767e45['user'];return user;}else{logger['error'](_0x5f2f('0x3d'),JSON[_0x5f2f('0x10')](_0x767e45));throw new Error(_0x5f2f('0x3e')+JSON['stringify'](_0x767e45));}}}else{logger[_0x5f2f('0x2e')](_0x5f2f('0x3d'),JSON['stringify'](_0x767e45));throw new Error(_0x5f2f('0x3e')+JSON[_0x5f2f('0x10')](_0x767e45));}})[_0x5f2f('0x2d')](function(_0x5ba72a){console[_0x5f2f('0x2e')](_0x5ba72a);});}function getZohoUser(_0x4b5b30,_0x395895){return new BPromise(function(_0x4d7073,_0x517848){request(_0x4b5b30)[_0x5f2f('0x34')](function(_0x3e3bb8){var _0x1c436e=null;if(_0x3e3bb8){_0x1c436e=_0x3e3bb8['data'][0x0];_0x1c436e[_0x5f2f('0x3f')]=_0x395895;}_0x4d7073(_0x1c436e);})[_0x5f2f('0x2d')](function(_0x27b077){_0x517848(_0x27b077);});});}function createEndUser(_0x286967,_0x138d41,_0x18e17b,_0x22092d,_0x469673,_0x54f3de){var _0x18e17b=getName(_0x18e17b);return request({'method':'POST','uri':'https://www.zohoapis.'+_0x138d41+_0x5f2f('0x40')+_[_0x5f2f('0x41')](_0x54f3de[_0x5f2f('0x42')])+'s','body':{'data':[{'Last_Name':_0x18e17b[0x1],'First_Name':_0x18e17b[0x0],'Phone':_0x22092d,'Owner':{'name':!_['isNil'](_0x469673[_0x5f2f('0x43')][_0x5f2f('0x1c')])?_0x469673[_0x5f2f('0x43')]['name']:!_[_0x5f2f('0x1f')](_0x469673[_0x5f2f('0x44')])?_0x469673[_0x5f2f('0x44')]+'\x20'+_0x469673['last_name']:_0x469673[_0x5f2f('0x45')],'id':_0x469673['id']}}]},'headers':{'Authorization':_0x5f2f('0x46')+_0x286967},'json':!![]})[_0x5f2f('0x34')](function(_0x376872){if(_0x376872&&_0x376872[_0x5f2f('0x47')][0x0][_0x5f2f('0x48')]===_0x5f2f('0x49')){var _0x1bf16a=_0x376872[_0x5f2f('0x47')][0x0]['details'];_0x1bf16a['enduserType']=_['startCase'](_0x54f3de['moduleCreate'])+'s';return _0x1bf16a;}logger[_0x5f2f('0x2e')](_0x5f2f('0x3d'),JSON[_0x5f2f('0x10')](data));throw new Error('Error:\x20'+JSON['stringify'](data));})[_0x5f2f('0x2d')](function(_0x485041){console['log'](_0x5f2f('0x4a'),_0x485041);});}function getEndUser(_0x6f7e35,_0x3e342a,_0x43638a,_0x30dc13,_0x26b526,_0x64dd09,_0x1933e4){var _0xd10336={'method':_0x5f2f('0x32'),'uri':'','headers':{'Authorization':_0x5f2f('0x46')+_0x6f7e35},'json':!![]};switch(_0x1933e4[_0x5f2f('0x4b')]){case _0x5f2f('0x4c'):_0xd10336[_0x5f2f('0x4d')]=_0x5f2f('0x4e')+_0x3e342a+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x26b526+'))';return getZohoUser(_0xd10336,_0x5f2f('0x4f'))[_0x5f2f('0x34')](function(_0x1db596){if(_0x1db596)return _0x1db596;_0xd10336[_0x5f2f('0x4d')]=_0x5f2f('0x4e')+_0x3e342a+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x26b526+'))';return getZohoUser(_0xd10336,_0x5f2f('0x50'))[_0x5f2f('0x34')](function(_0x1d0cb2){if(_0x1d0cb2)return _0x1d0cb2;if(_0x1933e4[_0x5f2f('0x42')]!=_0x5f2f('0x51')){return createEndUser(_0x6f7e35,_0x3e342a,_0x30dc13,_0x26b526,_0x64dd09,_0x1933e4);}else{return{};}});});break;case _0x5f2f('0x52'):_0xd10336[_0x5f2f('0x4d')]=_0x5f2f('0x4e')+_0x3e342a+_0x5f2f('0x53')+_0x26b526+'))';return getZohoUser(_0xd10336,_0x5f2f('0x4f'))[_0x5f2f('0x34')](function(_0x47fb2e){if(_0x47fb2e)return _0x47fb2e;if(_0x1933e4[_0x5f2f('0x42')]!='nothing'){return createEndUser(_0x6f7e35,_0x3e342a,_0x30dc13,_0x26b526,_0x64dd09,_0x1933e4);}else{return{};}});break;case _0x5f2f('0x54'):_0xd10336[_0x5f2f('0x4d')]=_0x5f2f('0x4e')+_0x3e342a+_0x5f2f('0x55')+_0x26b526+'))';return getZohoUser(_0xd10336,'Leads')[_0x5f2f('0x34')](function(_0xed422){if(_0xed422)return _0xed422;if(_0x1933e4[_0x5f2f('0x42')]!=_0x5f2f('0x51')){return createEndUser(_0x6f7e35,_0x3e342a,_0x30dc13,_0x26b526,_0x64dd09,_0x1933e4);}else{return{};}});break;}}function getCall(_0x34e1a7,_0x3ffe64,_0x16d599,_0x427586,_0x56c6c1,_0x5a3cb2,_0x67015d,_0x2245ad){logger[_0x5f2f('0x30')](_0x5f2f('0x56'));var _0x788030={};_0x788030[_0x5f2f('0x57')]={'name':!_['isNil'](_0x427586[_0x5f2f('0x43')][_0x5f2f('0x1c')])&&!_[_0x5f2f('0x1f')](_0x427586[_0x5f2f('0x3a')][_0x5f2f('0x1c')])&&_0x427586[_0x5f2f('0x3a')][_0x5f2f('0x1c')]==='administrator'?_0x427586[_0x5f2f('0x43')]['name']:!_[_0x5f2f('0x1f')](_0x427586[_0x5f2f('0x44')])?_0x427586[_0x5f2f('0x44')]+'\x20'+_0x427586[_0x5f2f('0x45')]:_0x427586[_0x5f2f('0x45')],'id':_0x427586['id']};_0x788030[_0x5f2f('0x58')]=intUtil['getString'](_0x5a3cb2[_0x5f2f('0x59')],_0x67015d,'\x20');_0x788030[_0x5f2f('0x5a')]=intUtil[_0x5f2f('0x5b')](_0x5a3cb2[_0x5f2f('0x5c')],_0x67015d,'\x0a');if(_0x56c6c1[_0x5f2f('0x3f')]===_0x5f2f('0x4f')){_0x788030[_0x5f2f('0x5d')]={'name':!_['isNil'](_0x56c6c1[_0x5f2f('0x5e')])?_0x56c6c1[_0x5f2f('0x5e')]:!_['isNil'](_0x56c6c1['First_Name'])?_0x56c6c1['First_Name']+'\x20'+_0x56c6c1[_0x5f2f('0x5f')]:_0x56c6c1[_0x5f2f('0x5f')],'id':_0x56c6c1['id']};}if(_0x56c6c1[_0x5f2f('0x3f')]===_0x5f2f('0x50')){_0x788030[_0x5f2f('0x60')]={'name':!_[_0x5f2f('0x1f')](_0x56c6c1[_0x5f2f('0x5e')])?_0x56c6c1['Full_Name']:!_[_0x5f2f('0x1f')](_0x56c6c1['First_Name'])?_0x56c6c1[_0x5f2f('0x61')]+'\x20'+_0x56c6c1['Last_Name']:_0x56c6c1[_0x5f2f('0x5f')],'id':_0x56c6c1['id']};_0x788030[_0x5f2f('0x62')]=_['startCase'](_0x56c6c1['enduserType']);}if(_0x67015d[_0x5f2f('0x63')]){_0x788030[_0x5f2f('0x64')]=moment[_0x5f2f('0x65')](parseInt(_0x67015d['talktime'])*0x3e8)[_0x5f2f('0x33')](_0x5f2f('0x66'));}else if(_0x67015d[_0x5f2f('0x67')]&&_0x67015d[_0x5f2f('0x68')]){_0x788030[_0x5f2f('0x64')]=moment['utc'](moment(_0x67015d['endtime'],'YYYY-MM-DDTHH:mm:ss')['diff'](moment(_0x67015d[_0x5f2f('0x69')],_0x5f2f('0x6a'))))[_0x5f2f('0x33')](_0x5f2f('0x66'));}switch(_0x67015d[_0x5f2f('0x6b')]){case _0x5f2f('0x6c'):_0x788030[_0x5f2f('0x6d')]='Called';break;case'complete':case'connect':_0x788030[_0x5f2f('0x6d')]=_0x5f2f('0x6e');break;case _0x5f2f('0x6f'):_0x788030[_0x5f2f('0x6d')]='Rejected';break;case _0x5f2f('0x70'):_0x788030['Call_Result']='Abandoned';break;case _0x5f2f('0x71'):_0x788030['Call_Result']='Timeout';default:}_0x788030[_0x5f2f('0x72')]=(_0x2245ad===_0x5f2f('0x73')?moment(_0x67015d[_0x5f2f('0x69')])[_0x5f2f('0x33')](_0x5f2f('0x6a')):moment(_0x67015d[_0x5f2f('0x74')])[_0x5f2f('0x33')]('YYYY-MM-DDTHH:mm:ss'))||moment()[_0x5f2f('0x33')]('YYYY-MM-DDTHH:mm:ss');_0x788030['Call_Type']=_0x2245ad||_0x5f2f('0x75');_0x788030=_[_0x5f2f('0x76')](_0x788030,getCustomFields(_0x5a3cb2[_0x5f2f('0x77')],_0x67015d));return request({'method':_0x5f2f('0x27'),'uri':'https://www.zohoapis.'+_0x3ffe64+'/crm/v2/Calls','headers':{'Authorization':_0x5f2f('0x46')+_0x34e1a7},'body':{'data':[_0x788030]},'json':!![]})[_0x5f2f('0x34')](function(_0xccbcf4){if(_0xccbcf4&&_0xccbcf4[_0x5f2f('0x47')][0x0][_0x5f2f('0x48')]===_0x5f2f('0x49')){logger[_0x5f2f('0x30')]('Call\x20created!');return{'id':_0xccbcf4[_0x5f2f('0x47')][0x0][_0x5f2f('0x78')]['id']};}})[_0x5f2f('0x2d')](function(_0x43c4e8){logger[_0x5f2f('0x30')](_0x5f2f('0x79'),_0x43c4e8[_0x5f2f('0x2f')]);console[_0x5f2f('0x7a')](_0x5f2f('0x79'),_0x43c4e8);});}exports[_0x5f2f('0x7b')]=function(_0x2bac61,_0xbab5fe,_0x34ccf9,_0x117461,_0x1ca26c,_0x58f38e){var _0x16ea77,_0x2dae06,_0x9d3d88;_0x58f38e[_0x5f2f('0x7c')]=intUtil[_0x5f2f('0x7d')](_0x58f38e[_0x5f2f('0x7c')]);_0x58f38e[_0x5f2f('0x7e')]=intUtil[_0x5f2f('0x7d')](_0x58f38e['serverUrl']);if(_0x1ca26c&&_0x1ca26c[_0x5f2f('0x7f')]){logger[_0x5f2f('0x30')](_0x5f2f('0x80'),'Recording\x20is\x20enabled!');_0xbab5fe[_0x5f2f('0x81')]=_0x58f38e[_0x5f2f('0x7e')]+'/api/voice/recordings/'+_0xbab5fe[_0x5f2f('0x82')]+_0x5f2f('0x83')+md5(_0xbab5fe[_0x5f2f('0x82')]);}else{_0xbab5fe[_0x5f2f('0x81')]='';}var _0x582be9=_0x58f38e[_0x5f2f('0x7c')]===_0x5f2f('0x84')?'eu':_0x5f2f('0x85');return getAccessToken(_0x58f38e)[_0x5f2f('0x34')](function(_0xba287c){_0x9d3d88=_0xba287c;return getUser(_0x9d3d88,_0x582be9,_0x58f38e,_0x117461[_0x5f2f('0x38')]);})[_0x5f2f('0x34')](function(_0x3ba8a3){_0x16ea77=_0x3ba8a3;logger[_0x5f2f('0x30')](_0x5f2f('0x86'),_0x16ea77['id']);return getEndUser(_0x9d3d88,_0x582be9,_0x58f38e,_0xbab5fe[_0x5f2f('0x87')],_0xbab5fe[_0x5f2f('0x88')],_0x16ea77,_0x34ccf9);})[_0x5f2f('0x34')](function(_0x55f0c1){_0x2dae06=_0x55f0c1;return getCall(_0x9d3d88,_0x582be9,_0x58f38e,_0x16ea77,_0x2dae06,_0x34ccf9,_0xbab5fe,'Inbound');})['then'](function(_0xda0b2b){if(_0xda0b2b){logger[_0x5f2f('0x30')](_0x5f2f('0x89'),_0xda0b2b['id']);logger[_0x5f2f('0x30')](_0x5f2f('0x80'),_0x5f2f('0x8a'));emit(util['format'](_0x5f2f('0x8b'),_0x117461[_0x5f2f('0x1c')]),_0x5f2f('0x8c'),{'uri':'https://crm.'+_0x58f38e[_0x5f2f('0x7c')]+_0x5f2f('0x8d')+_0xda0b2b['id']});}})[_0x5f2f('0x2d')](function(_0x456d15){logger[_0x5f2f('0x2e')](_0x5f2f('0x80'),JSON[_0x5f2f('0x10')](_0x456d15));});};exports[_0x5f2f('0x73')]=function(_0x20b812,_0x3ca1e4,_0xd36af7,_0xf493d1,_0x4761d2,_0x43f37a,_0x27f91f){var _0x522429,_0x3f839e,_0xc3b76f;_0x43f37a[_0x5f2f('0x7c')]=intUtil[_0x5f2f('0x7d')](_0x43f37a[_0x5f2f('0x7c')]);_0x43f37a[_0x5f2f('0x7e')]=intUtil[_0x5f2f('0x7d')](_0x43f37a[_0x5f2f('0x7e')]);if(_0x27f91f&&_0x27f91f[_0x5f2f('0x8e')]&&_0x27f91f[_0x5f2f('0x8e')]!==_0x5f2f('0x8f')){logger[_0x5f2f('0x30')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x3ca1e4['recordingURL']=_0x43f37a[_0x5f2f('0x7e')]+_0x5f2f('0x90')+_0x3ca1e4[_0x5f2f('0x82')]+_0x5f2f('0x83')+md5(_0x3ca1e4[_0x5f2f('0x82')]);}var _0x258114=_0x43f37a[_0x5f2f('0x7c')]===_0x5f2f('0x84')?'eu':'com';return getAccessToken(_0x43f37a)[_0x5f2f('0x34')](function(_0x238731){_0xc3b76f=_0x238731;return getUser(_0xc3b76f,_0x258114,_0x43f37a,_0xf493d1[_0x5f2f('0x38')]);})[_0x5f2f('0x34')](function(_0x12353b){_0x522429=_0x12353b;logger[_0x5f2f('0x30')](_0x5f2f('0x86'),_0x522429['id']);return getEndUser(_0xc3b76f,_0x258114,_0x43f37a,_0x3ca1e4[_0x5f2f('0x91')],_0x3ca1e4[_0x5f2f('0x92')],_0x522429,_0xd36af7);})['then'](function(_0x5951bb){_0x3f839e=_0x5951bb;return getCall(_0xc3b76f,_0x258114,_0x43f37a,_0x522429,_0x3f839e,_0xd36af7,_0x3ca1e4,_0x5f2f('0x93'));})[_0x5f2f('0x34')](function(_0x570ea5){if(_0x570ea5){logger[_0x5f2f('0x30')]('The\x20Call\x20ID\x20is:',_0x570ea5['id']);logger[_0x5f2f('0x30')]('[OUTBOUND]',_0x5f2f('0x8a'));emit(util['format'](_0x5f2f('0x8b'),_0xf493d1['name']),'trigger:browser:url',{'uri':_0x5f2f('0x94')+_0x43f37a['host']+_0x5f2f('0x8d')+_0x570ea5['id']});}})[_0x5f2f('0x2d')](function(_0x47aaed){logger[_0x5f2f('0x2e')]('[OUTBOUND]',JSON[_0x5f2f('0x10')](_0x47aaed));});};exports[_0x5f2f('0x95')]=function(_0x4f6e75,_0x3db1c9,_0x47338c,_0x530fd2,_0x1e155f,_0x521ada){var _0x395dc2,_0x4f6e9f,_0x389e02;_0x521ada[_0x5f2f('0x7c')]=intUtil['stripTrailingSlash'](_0x521ada[_0x5f2f('0x7c')]);_0x521ada['serverUrl']=intUtil[_0x5f2f('0x7d')](_0x521ada[_0x5f2f('0x7e')]);if(_0x1e155f&&_0x1e155f['monitor_format']){logger[_0x5f2f('0x30')]('['+_0x3db1c9[_0x5f2f('0x6b')]['toUpperCase']()+']',_0x5f2f('0x96'));_0x3db1c9['recordingURL']=_0x521ada[_0x5f2f('0x7e')]+'/api/voice/recordings/'+_0x3db1c9[_0x5f2f('0x82')]+_0x5f2f('0x83')+md5(_0x3db1c9[_0x5f2f('0x82')]);}else{_0x3db1c9[_0x5f2f('0x81')]='';}var _0x3448de=_0x521ada[_0x5f2f('0x7c')]==='zoho.eu'?'eu':_0x5f2f('0x85');return getAccessToken(_0x521ada)[_0x5f2f('0x34')](function(_0x1941b3){_0x389e02=_0x1941b3;return getUser(_0x389e02,_0x3448de,_0x521ada);})[_0x5f2f('0x34')](function(_0x38e6f5){_0x395dc2=_0x38e6f5;logger[_0x5f2f('0x30')](_0x5f2f('0x86'),_0x395dc2['id']);return getEndUser(_0x389e02,_0x3448de,_0x521ada,_0x3db1c9[_0x5f2f('0x87')],_0x3db1c9['calleridnum'],_0x395dc2,_0x47338c);})[_0x5f2f('0x34')](function(_0x3a7c5b){_0x4f6e9f=_0x3a7c5b;return getCall(_0x389e02,_0x3448de,_0x521ada,_0x395dc2,_0x4f6e9f,_0x47338c,_0x3db1c9,_0x5f2f('0x75'));})[_0x5f2f('0x34')](function(_0x5abc3d){if(_0x5abc3d){logger[_0x5f2f('0x30')](_0x5f2f('0x89'),_0x5abc3d['id']);}})['catch'](function(_0x3dacf3){logger[_0x5f2f('0x2e')]('['+_0x3db1c9[_0x5f2f('0x6b')][_0x5f2f('0x97')]()+']',JSON[_0x5f2f('0x10')](_0x3dacf3));});};
\ No newline at end of file
index 91875fa..f5a031f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6af=['trigger','exec','data2','Script','data3','render','error','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','format','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','shelljs','mustache','../../../../config/logger'];(function(_0x5c7d76,_0x24d327){var _0xc7fb7=function(_0x2ae655){while(--_0x2ae655){_0x5c7d76['push'](_0x5c7d76['shift']());}};_0xc7fb7(++_0x24d327);}(_0xf6af,0x1af));var _0xff6a=function(_0x52bb99,_0x2606c5){_0x52bb99=_0x52bb99-0x0;var _0x3ab857=_0xf6af[_0x52bb99];return _0x3ab857;};'use strict';var util=require('util');var sh=require(_0xff6a('0x0'));var Mustache=require(_0xff6a('0x1'));var logger=require(_0xff6a('0x2'))(_0xff6a('0x3'));exports[_0xff6a('0x4')]=function(_0x16cc13,_0xf4937e){var _0x2962de=_0x16cc13['data2']?_0x16cc13[_0xff6a('0x5')]:_0xff6a('0x6');var _0x18d69a=_0x16cc13[_0xff6a('0x7')]?Mustache[_0xff6a('0x8')](_0x16cc13['data3'],_0xf4937e):_0xf4937e;sh[_0xff6a('0x4')](_0x18d69a,function(_0x5c0b1f,_0x35c535,_0x1f7663){if(_0x5c0b1f!==0x0){logger[_0xff6a('0x9')](util['format'](_0xff6a('0xa'),_0x2962de,_0x18d69a,_0x5c0b1f,_0x1f7663));}else{logger[_0xff6a('0xb')](util[_0xff6a('0xc')](_0xff6a('0xd'),_0x2962de,_0x18d69a,_0x35c535));}});};
\ No newline at end of file
+var _0x25e4=['render','error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','util','shelljs','mustache','../../../../config/logger','trigger','exec','data2','data3'];(function(_0x498fee,_0x4c0f7a){var _0x5270ac=function(_0x3eb2c0){while(--_0x3eb2c0){_0x498fee['push'](_0x498fee['shift']());}};_0x5270ac(++_0x4c0f7a);}(_0x25e4,0x1b2));var _0x425e=function(_0x23d25c,_0x4a8b0d){_0x23d25c=_0x23d25c-0x0;var _0x103ccc=_0x25e4[_0x23d25c];return _0x103ccc;};'use strict';var util=require(_0x425e('0x0'));var sh=require(_0x425e('0x1'));var Mustache=require(_0x425e('0x2'));var logger=require(_0x425e('0x3'))(_0x425e('0x4'));exports[_0x425e('0x5')]=function(_0x4937b8,_0x1d7b52){var _0x177c39=_0x4937b8[_0x425e('0x6')]?_0x4937b8[_0x425e('0x6')]:'Script';var _0x2d2d06=_0x4937b8[_0x425e('0x7')]?Mustache[_0x425e('0x8')](_0x4937b8[_0x425e('0x7')],_0x1d7b52):_0x1d7b52;sh[_0x425e('0x5')](_0x2d2d06,function(_0x479592,_0x46f7bc,_0x4bd86e){if(_0x479592!==0x0){logger[_0x425e('0x9')](util[_0x425e('0xa')](_0x425e('0xb'),_0x177c39,_0x2d2d06,_0x479592,_0x4bd86e));}else{logger[_0x425e('0xc')](util[_0x425e('0xa')]('%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s',_0x177c39,_0x2d2d06,_0x46f7bc));}});};
\ No newline at end of file
index d951cae..cdc8150 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b58=['message','request-promise','util','mustache','../../../../config/logger','trigger','exec','data1','toUpperCase','render','data5','number','headers','parse','data6','error','stack','GET','DELETE','POST','PUT','data7','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','body','info','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','data2',',\x20request\x20body:\x20','object','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','catch','format','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','name'];(function(_0x270a54,_0x307ff6){var _0x4d07d0=function(_0x59ac5a){while(--_0x59ac5a){_0x270a54['push'](_0x270a54['shift']());}};_0x4d07d0(++_0x307ff6);}(_0x7b58,0x13c));var _0x87b5=function(_0x24a2cc,_0x455e1f){_0x24a2cc=_0x24a2cc-0x0;var _0x1cf0ad=_0x7b58[_0x24a2cc];return _0x1cf0ad;};'use strict';var rp=require(_0x87b5('0x0'));var util=require(_0x87b5('0x1'));var _=require('lodash');var Mustache=require(_0x87b5('0x2'));var logger=require(_0x87b5('0x3'))(_0x87b5('0x4'));exports[_0x87b5('0x5')]=function(_0x7aa01b,_0x1f3dc2){var _0x1bffc0,_0x456984;var _0xa18c58={'method':_0x7aa01b[_0x87b5('0x6')][_0x87b5('0x7')](),'uri':Mustache[_0x87b5('0x8')](_0x7aa01b['data2'],_0x1f3dc2),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x7aa01b[_0x87b5('0x9')])===_0x87b5('0xa')&&parseInt(_0x7aa01b[_0x87b5('0x9')])>=0x1&&parseInt(_0x7aa01b[_0x87b5('0x9')])<=0xa?parseInt(_0x7aa01b[_0x87b5('0x9')])*0x3e8:0x5*0x3e8};try{_0xa18c58[_0x87b5('0xb')]=_0x7aa01b['data6']?JSON[_0x87b5('0xc')](Mustache[_0x87b5('0x8')](_0x7aa01b[_0x87b5('0xd')],_0x1f3dc2)):{};}catch(_0xa2f15b){logger[_0x87b5('0xe')](_0xa2f15b[_0x87b5('0xf')]);}switch(_0x7aa01b[_0x87b5('0x6')][_0x87b5('0x7')]()){case _0x87b5('0x10'):case _0x87b5('0x11'):_0x1bffc0=null;_0xa18c58['qs']=_0x1f3dc2;break;case _0x87b5('0x12'):case _0x87b5('0x13'):if(_0x7aa01b[_0x87b5('0x14')]){try{_0x1bffc0=JSON[_0x87b5('0xc')](Mustache['render'](_0x7aa01b[_0x87b5('0x14')],_0x1f3dc2));_0xa18c58['body']=_0x1bffc0;}catch(_0x404d95){logger[_0x87b5('0xe')](_0x404d95['stack']);logger[_0x87b5('0xe')](_0x87b5('0x15'));}}else{_0x1bffc0=_0x1f3dc2;_0xa18c58[_0x87b5('0x16')]=_0x1bffc0;}break;}logger[_0x87b5('0x17')](util['format'](_0x87b5('0x18'),_0x7aa01b[_0x87b5('0x6')],_0x7aa01b[_0x87b5('0x19')],JSON['stringify'](_0xa18c58)));rp(_0xa18c58)['then'](function(_0x3ea072){_0x1bffc0=!_['isNil'](_0x1bffc0)?_0x87b5('0x1a')+_0x1bffc0:'';_0x456984=typeof _0x3ea072[_0x87b5('0x16')]===_0x87b5('0x1b')?JSON['stringify'](_0x3ea072[_0x87b5('0x16')]):_0x3ea072[_0x87b5('0x16')];logger[_0x87b5('0x17')](util['format'](_0x87b5('0x1c'),_0x7aa01b[_0x87b5('0x6')],_0x7aa01b['data2'],_0x3ea072[_0x87b5('0x1d')],_0x456984));})[_0x87b5('0x1e')](function(_0x1a2b11){logger[_0x87b5('0xe')](util[_0x87b5('0x1f')](_0x87b5('0x20'),_0x7aa01b[_0x87b5('0x6')],_0x7aa01b['data2'],_0x1a2b11[_0x87b5('0x1d')],_0x1a2b11[_0x87b5('0x21')],_0x1a2b11[_0x87b5('0x22')]));});};
\ No newline at end of file
+var _0x6aeb=['data6','parse','stack','GET','POST','PUT','data7','body','error','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','format','stringify','then',',\x20request\x20body:\x20','object','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','catch','name','message','request-promise','lodash','mustache','../../../../config/logger','exec','data1','toUpperCase','render','data2','data5','headers'];(function(_0x4447d4,_0x41b514){var _0x55e23b=function(_0x532f86){while(--_0x532f86){_0x4447d4['push'](_0x4447d4['shift']());}};_0x55e23b(++_0x41b514);}(_0x6aeb,0x1b5));var _0xb6ae=function(_0x39caaa,_0x1f37bc){_0x39caaa=_0x39caaa-0x0;var _0x9b9c7d=_0x6aeb[_0x39caaa];return _0x9b9c7d;};'use strict';var rp=require(_0xb6ae('0x0'));var util=require('util');var _=require(_0xb6ae('0x1'));var Mustache=require(_0xb6ae('0x2'));var logger=require(_0xb6ae('0x3'))('trigger');exports[_0xb6ae('0x4')]=function(_0x5d5dcc,_0x25ebdb){var _0x3f035d,_0x46b789;var _0xf73523={'method':_0x5d5dcc[_0xb6ae('0x5')][_0xb6ae('0x6')](),'uri':Mustache[_0xb6ae('0x7')](_0x5d5dcc[_0xb6ae('0x8')],_0x25ebdb),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x5d5dcc[_0xb6ae('0x9')])==='number'&&parseInt(_0x5d5dcc[_0xb6ae('0x9')])>=0x1&&parseInt(_0x5d5dcc[_0xb6ae('0x9')])<=0xa?parseInt(_0x5d5dcc[_0xb6ae('0x9')])*0x3e8:0x5*0x3e8};try{_0xf73523[_0xb6ae('0xa')]=_0x5d5dcc[_0xb6ae('0xb')]?JSON[_0xb6ae('0xc')](Mustache[_0xb6ae('0x7')](_0x5d5dcc[_0xb6ae('0xb')],_0x25ebdb)):{};}catch(_0x248ac9){logger['error'](_0x248ac9[_0xb6ae('0xd')]);}switch(_0x5d5dcc['data1'][_0xb6ae('0x6')]()){case _0xb6ae('0xe'):case'DELETE':_0x3f035d=null;_0xf73523['qs']=_0x25ebdb;break;case _0xb6ae('0xf'):case _0xb6ae('0x10'):if(_0x5d5dcc[_0xb6ae('0x11')]){try{_0x3f035d=JSON['parse'](Mustache['render'](_0x5d5dcc[_0xb6ae('0x11')],_0x25ebdb));_0xf73523[_0xb6ae('0x12')]=_0x3f035d;}catch(_0x2b9b44){logger[_0xb6ae('0x13')](_0x2b9b44[_0xb6ae('0xd')]);logger[_0xb6ae('0x13')](_0xb6ae('0x14'));}}else{_0x3f035d=_0x25ebdb;_0xf73523[_0xb6ae('0x12')]=_0x3f035d;}break;}logger[_0xb6ae('0x15')](util[_0xb6ae('0x16')]('%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s',_0x5d5dcc[_0xb6ae('0x5')],_0x5d5dcc['data2'],JSON[_0xb6ae('0x17')](_0xf73523)));rp(_0xf73523)[_0xb6ae('0x18')](function(_0x22e505){_0x3f035d=!_['isNil'](_0x3f035d)?_0xb6ae('0x19')+_0x3f035d:'';_0x46b789=typeof _0x22e505['body']===_0xb6ae('0x1a')?JSON[_0xb6ae('0x17')](_0x22e505[_0xb6ae('0x12')]):_0x22e505[_0xb6ae('0x12')];logger[_0xb6ae('0x15')](util[_0xb6ae('0x16')](_0xb6ae('0x1b'),_0x5d5dcc[_0xb6ae('0x5')],_0x5d5dcc[_0xb6ae('0x8')],_0x22e505[_0xb6ae('0x1c')],_0x46b789));})[_0xb6ae('0x1d')](function(_0x549057){logger['error'](util[_0xb6ae('0x16')]('%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s',_0x5d5dcc['data1'],_0x5d5dcc[_0xb6ae('0x8')],_0x549057[_0xb6ae('0x1c')],_0x549057[_0xb6ae('0x1e')],_0x549057[_0xb6ae('0x1f')]));});};
\ No newline at end of file
index d4433ae..9cd5ae1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x190a=['message','result','catch','../../config/logger','routing','client','http','then','debug','rpc','error'];(function(_0x4fb47a,_0x52f748){var _0x2945f7=function(_0x218dae){while(--_0x218dae){_0x4fb47a['push'](_0x4fb47a['shift']());}};_0x2945f7(++_0x52f748);}(_0x190a,0x1dc));var _0xa190=function(_0x53ea0f,_0x528e9d){_0x53ea0f=_0x53ea0f-0x0;var _0x517f72=_0x190a[_0x53ea0f];return _0x517f72;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0xa190('0x0'))(_0xa190('0x1'));var client=jayson[_0xa190('0x2')][_0xa190('0x3')]({'port':0x2329});client['Request']=function(_0x383a76,_0x174b18){return new BPromise(function(_0x440c68,_0x389afd){return client['request'](_0x383a76,_0x174b18)[_0xa190('0x4')](function(_0x2734b9){logger[_0xa190('0x5')](_0xa190('0x6'),_0xa190('0x1'),_0x383a76,_0x174b18,_0x2734b9);if(_0x2734b9[_0xa190('0x7')]){logger[_0xa190('0x7')]('rpc',_0xa190('0x1'),_0x383a76,_0x2734b9[_0xa190('0x7')][_0xa190('0x8')],_0x174b18);return _0x389afd(_0x2734b9['error'][_0xa190('0x8')]);}else{return _0x440c68(_0x2734b9[_0xa190('0x9')]);}})[_0xa190('0xa')](function(_0xf7640){logger['error'](_0xa190('0x6'),_0xa190('0x1'),_0x383a76,_0xf7640,_0x174b18);return _0x389afd(_0xf7640);});});};module['exports']=client;
\ No newline at end of file
+var _0xd47c=['error','message','result','catch','exports','bluebird','../../config/logger','routing','client','http','Request','debug','rpc'];(function(_0x55ae3a,_0x59d935){var _0x1b2a84=function(_0xf70fcd){while(--_0xf70fcd){_0x55ae3a['push'](_0x55ae3a['shift']());}};_0x1b2a84(++_0x59d935);}(_0xd47c,0x17e));var _0xcd47=function(_0x26226d,_0x155574){_0x26226d=_0x26226d-0x0;var _0x5dce73=_0xd47c[_0x26226d];return _0x5dce73;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0xcd47('0x0'));var logger=require(_0xcd47('0x1'))(_0xcd47('0x2'));var client=jayson[_0xcd47('0x3')][_0xcd47('0x4')]({'port':0x2329});client[_0xcd47('0x5')]=function(_0x51f5bd,_0x4f377f){return new BPromise(function(_0x386fd0,_0x2f4eaf){return client['request'](_0x51f5bd,_0x4f377f)['then'](function(_0x5bf037){logger[_0xcd47('0x6')](_0xcd47('0x7'),_0xcd47('0x2'),_0x51f5bd,_0x4f377f,_0x5bf037);if(_0x5bf037['error']){logger[_0xcd47('0x8')](_0xcd47('0x7'),_0xcd47('0x2'),_0x51f5bd,_0x5bf037[_0xcd47('0x8')]['message'],_0x4f377f);return _0x2f4eaf(_0x5bf037[_0xcd47('0x8')][_0xcd47('0x9')]);}else{return _0x386fd0(_0x5bf037[_0xcd47('0xa')]);}})[_0xcd47('0xb')](function(_0x5c94f3){logger[_0xcd47('0x8')](_0xcd47('0x7'),_0xcd47('0x2'),_0x51f5bd,_0x5c94f3,_0x4f377f);return _0x2f4eaf(_0x5c94f3);});});};module[_0xcd47('0xc')]=client;
\ No newline at end of file
index 50f70b4..51355d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d35=['./realtime','./lib/email','./rpc/mailAccount','./rpc/setting','email','resolve','then','getMailAccounts','initMailAccounts','refresh','mailAccounts','listen','loginMailFrequency','catch','error','./server'];(function(_0x337537,_0x4ea7b8){var _0x4fdd67=function(_0x59ad18){while(--_0x59ad18){_0x337537['push'](_0x337537['shift']());}};_0x4fdd67(++_0x4ea7b8);}(_0x5d35,0x14f));var _0x55d3=function(_0x545cbe,_0x4197ba){_0x545cbe=_0x545cbe-0x0;var _0x4b7170=_0x5d35[_0x545cbe];return _0x4b7170;};'use strict';var server=require(_0x55d3('0x0'));var Realtime=require(_0x55d3('0x1'));var EmailChannel=require(_0x55d3('0x2'));var mailAccount=require(_0x55d3('0x3'));var setting=require(_0x55d3('0x4'));var logger=require('../../config/logger')(_0x55d3('0x5'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0x55d3('0x6')]()[_0x55d3('0x7')](mailAccount[_0x55d3('0x8')]())[_0x55d3('0x7')](realtime[_0x55d3('0x9')]())[_0x55d3('0x7')](function(){email[_0x55d3('0xa')](realtime[_0x55d3('0xb')]);return realtime;});}function main(){return server[_0x55d3('0xc')](realtime,email)[_0x55d3('0x7')](function(){return initRealtime();})[_0x55d3('0x7')](function(){return setting['getSettings']();})[_0x55d3('0x7')](function(_0x39ebad){return setInterval(initRealtime,_0x39ebad[_0x55d3('0xd')]*0x3e8);})[_0x55d3('0xe')](function(_0x55c479){logger[_0x55d3('0xf')]('Email\x20service\x20initialization',_0x55c479);});}main();
\ No newline at end of file
+var _0xa654=['initMailAccounts','refresh','mailAccounts','listen','getSettings','loginMailFrequency','catch','error','Email\x20service\x20initialization','./server','./realtime','./lib/email','./rpc/mailAccount','../../config/logger','email','resolve','then'];(function(_0x64ef48,_0x3eb8f8){var _0x3c20ef=function(_0x3350a1){while(--_0x3350a1){_0x64ef48['push'](_0x64ef48['shift']());}};_0x3c20ef(++_0x3eb8f8);}(_0xa654,0x108));var _0x4a65=function(_0x4a3e2a,_0x46143e){_0x4a3e2a=_0x4a3e2a-0x0;var _0x5b86f0=_0xa654[_0x4a3e2a];return _0x5b86f0;};'use strict';var server=require(_0x4a65('0x0'));var Realtime=require(_0x4a65('0x1'));var EmailChannel=require(_0x4a65('0x2'));var mailAccount=require(_0x4a65('0x3'));var setting=require('./rpc/setting');var logger=require(_0x4a65('0x4'))(_0x4a65('0x5'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0x4a65('0x6')]()[_0x4a65('0x7')](mailAccount['getMailAccounts']())[_0x4a65('0x7')](realtime[_0x4a65('0x8')]())['then'](function(){email[_0x4a65('0x9')](realtime[_0x4a65('0xa')]);return realtime;});}function main(){return server[_0x4a65('0xb')](realtime,email)[_0x4a65('0x7')](function(){return initRealtime();})[_0x4a65('0x7')](function(){return setting[_0x4a65('0xc')]();})[_0x4a65('0x7')](function(_0x3b19fd){return setInterval(initRealtime,_0x3b19fd[_0x4a65('0xd')]*0x3e8);})[_0x4a65('0xe')](function(_0x2d262a){logger[_0x4a65('0xf')](_0x4a65('0x10'),_0x2d262a);});}main();
\ No newline at end of file
index 0a6eec5..b0a370c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47ee=['from','notify','then','info','Mail\x20accepted\x20from\x20routing','sendMail','send','verifySmtp','Smtp','verify','catch','exports','lodash','moment','bluebird','../../../config/environment','../../../config/logger','email','defaults','localhost','socket.io-emitter','redis','./imap','./smtp','../rpc/mailAccount','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','emit','name','key','active','Imap','status','messageStatus','total','isNil','stringify','md5','prototype','refresh','hasOwnProperty','service','provider','custom','box','handleImapBox','handleImapEmail','bind','end','error','connected','messages','firstName','lastName'];(function(_0x1aa289,_0x47d758){var _0xb7f13f=function(_0x8a8db3){while(--_0x8a8db3){_0x1aa289['push'](_0x1aa289['shift']());}};_0xb7f13f(++_0x47d758);}(_0x47ee,0x124));var _0xe47e=function(_0x5452d3,_0x10428d){_0x5452d3=_0x5452d3-0x0;var _0x173734=_0x47ee[_0x5452d3];return _0x173734;};'use strict';var _=require(_0xe47e('0x0'));var moment=require(_0xe47e('0x1'));var BPromise=require(_0xe47e('0x2'));var md5=require('md5');var Redis=require('ioredis');var config=require(_0xe47e('0x3'));var logger=require(_0xe47e('0x4'))(_0xe47e('0x5'));config['redis']=_[_0xe47e('0x6')](config['redis'],{'host':_0xe47e('0x7'),'port':0x18eb});var io=require(_0xe47e('0x8'))(new Redis(config[_0xe47e('0x9')]));var EmailImap=require(_0xe47e('0xa'));var EmailSmtp=require(_0xe47e('0xb'));var mailAccount=require(_0xe47e('0xc'));var md5Accounts={};function EmailChannel(_0x57089e){logger['info'](_0xe47e('0xd'));this['mailAccounts']=_0x57089e[_0xe47e('0xe')];this[_0xe47e('0xf')]={};this[_0xe47e('0x10')]=new EmailSmtp();}EmailChannel['prototype'][_0xe47e('0x11')]=function(_0x9de0bf){var _0x436347=this['mailAccounts'][_0x9de0bf];var _0xe25859={'id':_0x436347['id'],'name':_0x436347[_0xe47e('0x12')],'key':_0x436347[_0xe47e('0x13')],'active':_0x436347[_0xe47e('0x14')],'Imap':{'status':_0x436347[_0xe47e('0x15')][_0xe47e('0x16')],'messageStatus':_0x436347[_0xe47e('0x15')][_0xe47e('0x17')],'total':_0x436347[_0xe47e('0x15')][_0xe47e('0x18')]}};if(_[_0xe47e('0x19')](md5Accounts[_0x9de0bf])){md5Accounts[_0x9de0bf]={};}var _0x31280d=md5(JSON[_0xe47e('0x1a')](_0xe25859));if(md5Accounts[_0x9de0bf][_0xe47e('0x1b')]!==_0x31280d){md5Accounts[_0x9de0bf][_0xe47e('0x1b')]=_0x31280d;io[_0xe47e('0x11')]('mailAccount:update',_0xe25859);}};EmailChannel[_0xe47e('0x1c')][_0xe47e('0x1d')]=function(_0x4ead9f){for(var _0x4aef85 in _0x4ead9f){if(_0x4ead9f[_0xe47e('0x1e')](_0x4aef85)){if(_0x4ead9f[_0x4aef85][_0xe47e('0x15')]&&_0x4ead9f[_0x4aef85][_0xe47e('0x14')]){var _0x265850=_0x4ead9f[_0x4aef85][_0xe47e('0x15')];if(!_0x265850[_0xe47e('0x1f')]&&_0x4ead9f[_0x4aef85][_0xe47e('0x20')]!==_0xe47e('0x21'))_0x265850[_0xe47e('0x1f')]=_0x4ead9f[_0x4aef85][_0xe47e('0x20')];if(!this[_0xe47e('0xf')][_0xe47e('0x1e')](_0x265850['id'])){this['imapAccounts'][_0x265850['id']]=new EmailImap(_0x265850,_0x4ead9f[_0x4aef85]['email']);this[_0xe47e('0xf')][_0x265850['id']]['on'](_0xe47e('0x22'),this[_0xe47e('0x23')]['bind'](this,_0x4aef85));this[_0xe47e('0xf')][_0x265850['id']]['on'](_0xe47e('0x5'),this[_0xe47e('0x24')][_0xe47e('0x25')](this,_0x4aef85));this[_0xe47e('0xf')][_0x265850['id']]['on'](_0xe47e('0x26'),this['handleImapEnd'][_0xe47e('0x25')](this,_0x4aef85));this[_0xe47e('0xf')][_0x265850['id']]['on'](_0xe47e('0x27'),this['handleImapError'][_0xe47e('0x25')](this,_0x4aef85));}}else{if(_['isNil'](this[_0xe47e('0xe')][_0x4aef85][_0xe47e('0x15')])){this[_0xe47e('0xe')][_0x4aef85]['Imap']={};}this[_0xe47e('0xe')][_0x4aef85][_0xe47e('0x15')][_0xe47e('0x16')]='disabled';this['mailAccounts'][_0x4aef85][_0xe47e('0x15')][_0xe47e('0x17')]='';this[_0xe47e('0x11')](_0x4aef85);}}}};EmailChannel[_0xe47e('0x1c')][_0xe47e('0x23')]=function(_0x1fd206,_0x158065){if(this[_0xe47e('0xe')][_0x1fd206]){this['mailAccounts'][_0x1fd206]['Imap'][_0xe47e('0x16')]=_0xe47e('0x28');this[_0xe47e('0xe')][_0x1fd206][_0xe47e('0x15')][_0xe47e('0x17')]=_0x158065['name'];if(_0x158065['messages']){this[_0xe47e('0xe')][_0x1fd206]['Imap'][_0xe47e('0x18')]=_0x158065[_0xe47e('0x29')][_0xe47e('0x18')];}return this[_0xe47e('0x11')](_0x1fd206);}};EmailChannel[_0xe47e('0x1c')][_0xe47e('0x24')]=function(_0x21ce2f,_0x4adab7){logger['info']('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0x4adab7[_0xe47e('0x2a')],_0x4adab7[_0xe47e('0x2b')],_0x4adab7[_0xe47e('0x2c')],_0x21ce2f);if(this['mailAccounts'][_0x21ce2f]){return mailAccount[_0xe47e('0x2d')](_0x21ce2f,_0x4adab7)[_0xe47e('0x2e')](function(_0x59e9ac){if(_0x59e9ac){logger[_0xe47e('0x2f')](_0xe47e('0x30'));}})['catch'](function(_0x19661d){logger[_0xe47e('0x27')]('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON[_0xe47e('0x1a')](_0x19661d));});}};EmailChannel[_0xe47e('0x1c')]['handleImapEnd']=function(_0x288c6e){if(this[_0xe47e('0xe')][_0x288c6e]&&this[_0xe47e('0xe')][_0x288c6e][_0xe47e('0x15')]){if(this[_0xe47e('0xf')][this[_0xe47e('0xe')][_0x288c6e][_0xe47e('0x15')]['id']]){delete this[_0xe47e('0xf')][this[_0xe47e('0xe')][_0x288c6e][_0xe47e('0x15')]['id']];}this['mailAccounts'][_0x288c6e][_0xe47e('0x15')]['lastSync']=moment();this[_0xe47e('0x11')](_0x288c6e);}};EmailChannel[_0xe47e('0x1c')]['handleImapError']=function(_0x502f34,_0x42ee7e){if(this['mailAccounts'][_0x502f34]){this['mailAccounts'][_0x502f34]['Imap'][_0xe47e('0x16')]=_0xe47e('0x27');this['mailAccounts'][_0x502f34][_0xe47e('0x15')][_0xe47e('0x17')]=_0x42ee7e;return this[_0xe47e('0x11')](_0x502f34);}};EmailChannel[_0xe47e('0x1c')][_0xe47e('0x31')]=function(_0x44bf79,_0x4911c7){return this[_0xe47e('0x10')][_0xe47e('0x32')](_0x44bf79,_0x4911c7);};EmailChannel[_0xe47e('0x1c')][_0xe47e('0x33')]=function(_0x382114){var _0x345339=this;if(this[_0xe47e('0xe')][_0x382114['id']]){if(_[_0xe47e('0x19')](this[_0xe47e('0xe')][_0x382114['id']][_0xe47e('0x34')])){this['mailAccounts'][_0x382114['id']]['Smtp']={};}this[_0xe47e('0xe')][_0x382114['id']]['Smtp']['lastSync']=moment();return new BPromise(function(_0x50dd71,_0x168028){return _0x345339[_0xe47e('0x10')][_0xe47e('0x35')](_0x382114)[_0xe47e('0x2e')](function(_0x1ea0a2){_0x345339[_0xe47e('0xe')][_0x382114['id']][_0xe47e('0x34')][_0xe47e('0x16')]='verified';_0x345339[_0xe47e('0xe')][_0x382114['id']][_0xe47e('0x34')][_0xe47e('0x17')]='';_0x345339[_0xe47e('0x11')](_0x382114['id']);_0x50dd71(_0x1ea0a2);})[_0xe47e('0x36')](function(_0x5dffca){_0x345339['mailAccounts'][_0x382114['id']][_0xe47e('0x34')]['status']=_0xe47e('0x27');_0x345339[_0xe47e('0xe')][_0x382114['id']][_0xe47e('0x34')][_0xe47e('0x17')]=_0x5dffca;_0x345339[_0xe47e('0x11')](_0x382114['id']);_0x168028(_0x5dffca);});});}return this[_0xe47e('0x10')][_0xe47e('0x35')](_0x382114);};module[_0xe47e('0x37')]=EmailChannel;
\ No newline at end of file
+var _0x1698=['name','key','status','messageStatus','isNil','mailAccount:update','hasOwnProperty','Imap','active','service','provider','custom','imapAccounts','email','box','handleImapBox','bind','end','handleImapEnd','error','handleImapError','emit','connected','messages','total','handleImapEmail','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','lastName','from','then','Mail\x20accepted\x20from\x20routing','Mail\x20not\x20accepted\x20from\x20routing\x20%s','stringify','lastSync','sendMail','Smtp','verified','catch','verify','lodash','bluebird','md5','ioredis','../../../config/environment','../../../config/logger','redis','defaults','localhost','./imap','./smtp','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','smtp','prototype'];(function(_0xe6a00b,_0x251f47){var _0xa9d47c=function(_0x1bd6e2){while(--_0x1bd6e2){_0xe6a00b['push'](_0xe6a00b['shift']());}};_0xa9d47c(++_0x251f47);}(_0x1698,0x13f));var _0x8169=function(_0xa45395,_0x5579e6){_0xa45395=_0xa45395-0x0;var _0x3c83d2=_0x1698[_0xa45395];return _0x3c83d2;};'use strict';var _=require(_0x8169('0x0'));var moment=require('moment');var BPromise=require(_0x8169('0x1'));var md5=require(_0x8169('0x2'));var Redis=require(_0x8169('0x3'));var config=require(_0x8169('0x4'));var logger=require(_0x8169('0x5'))('email');config[_0x8169('0x6')]=_[_0x8169('0x7')](config[_0x8169('0x6')],{'host':_0x8169('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x8169('0x6')]));var EmailImap=require(_0x8169('0x9'));var EmailSmtp=require(_0x8169('0xa'));var mailAccount=require(_0x8169('0xb'));var md5Accounts={};function EmailChannel(_0x2c3f84){logger[_0x8169('0xc')](_0x8169('0xd'));this[_0x8169('0xe')]=_0x2c3f84[_0x8169('0xe')];this['imapAccounts']={};this[_0x8169('0xf')]=new EmailSmtp();}EmailChannel[_0x8169('0x10')]['emit']=function(_0x4e719a){var _0x219227=this['mailAccounts'][_0x4e719a];var _0x1214ff={'id':_0x219227['id'],'name':_0x219227[_0x8169('0x11')],'key':_0x219227[_0x8169('0x12')],'active':_0x219227['active'],'Imap':{'status':_0x219227['Imap'][_0x8169('0x13')],'messageStatus':_0x219227['Imap'][_0x8169('0x14')],'total':_0x219227['Imap']['total']}};if(_[_0x8169('0x15')](md5Accounts[_0x4e719a])){md5Accounts[_0x4e719a]={};}var _0x483d56=md5(JSON['stringify'](_0x1214ff));if(md5Accounts[_0x4e719a][_0x8169('0x2')]!==_0x483d56){md5Accounts[_0x4e719a][_0x8169('0x2')]=_0x483d56;io['emit'](_0x8169('0x16'),_0x1214ff);}};EmailChannel[_0x8169('0x10')]['refresh']=function(_0x3a1adb){for(var _0x20d2e7 in _0x3a1adb){if(_0x3a1adb[_0x8169('0x17')](_0x20d2e7)){if(_0x3a1adb[_0x20d2e7][_0x8169('0x18')]&&_0x3a1adb[_0x20d2e7][_0x8169('0x19')]){var _0x1c9833=_0x3a1adb[_0x20d2e7]['Imap'];if(!_0x1c9833[_0x8169('0x1a')]&&_0x3a1adb[_0x20d2e7][_0x8169('0x1b')]!==_0x8169('0x1c'))_0x1c9833['service']=_0x3a1adb[_0x20d2e7]['provider'];if(!this[_0x8169('0x1d')][_0x8169('0x17')](_0x1c9833['id'])){this[_0x8169('0x1d')][_0x1c9833['id']]=new EmailImap(_0x1c9833,_0x3a1adb[_0x20d2e7][_0x8169('0x1e')]);this[_0x8169('0x1d')][_0x1c9833['id']]['on'](_0x8169('0x1f'),this[_0x8169('0x20')][_0x8169('0x21')](this,_0x20d2e7));this[_0x8169('0x1d')][_0x1c9833['id']]['on'](_0x8169('0x1e'),this['handleImapEmail']['bind'](this,_0x20d2e7));this[_0x8169('0x1d')][_0x1c9833['id']]['on'](_0x8169('0x22'),this[_0x8169('0x23')][_0x8169('0x21')](this,_0x20d2e7));this[_0x8169('0x1d')][_0x1c9833['id']]['on'](_0x8169('0x24'),this[_0x8169('0x25')][_0x8169('0x21')](this,_0x20d2e7));}}else{if(_[_0x8169('0x15')](this[_0x8169('0xe')][_0x20d2e7][_0x8169('0x18')])){this[_0x8169('0xe')][_0x20d2e7][_0x8169('0x18')]={};}this[_0x8169('0xe')][_0x20d2e7][_0x8169('0x18')][_0x8169('0x13')]='disabled';this['mailAccounts'][_0x20d2e7]['Imap'][_0x8169('0x14')]='';this[_0x8169('0x26')](_0x20d2e7);}}}};EmailChannel[_0x8169('0x10')][_0x8169('0x20')]=function(_0x35d8e5,_0x570c97){if(this[_0x8169('0xe')][_0x35d8e5]){this[_0x8169('0xe')][_0x35d8e5]['Imap'][_0x8169('0x13')]=_0x8169('0x27');this[_0x8169('0xe')][_0x35d8e5][_0x8169('0x18')][_0x8169('0x14')]=_0x570c97[_0x8169('0x11')];if(_0x570c97[_0x8169('0x28')]){this[_0x8169('0xe')][_0x35d8e5]['Imap'][_0x8169('0x29')]=_0x570c97[_0x8169('0x28')]['total'];}return this[_0x8169('0x26')](_0x35d8e5);}};EmailChannel[_0x8169('0x10')][_0x8169('0x2a')]=function(_0x31dcd7,_0x45d629){logger[_0x8169('0xc')](_0x8169('0x2b'),_0x45d629['firstName'],_0x45d629[_0x8169('0x2c')],_0x45d629[_0x8169('0x2d')],_0x31dcd7);if(this[_0x8169('0xe')][_0x31dcd7]){return mailAccount['notify'](_0x31dcd7,_0x45d629)[_0x8169('0x2e')](function(_0x4d6ea1){if(_0x4d6ea1){logger[_0x8169('0xc')](_0x8169('0x2f'));}})['catch'](function(_0x284932){logger[_0x8169('0x24')](_0x8169('0x30'),JSON[_0x8169('0x31')](_0x284932));});}};EmailChannel[_0x8169('0x10')][_0x8169('0x23')]=function(_0x36244d){if(this[_0x8169('0xe')][_0x36244d]&&this[_0x8169('0xe')][_0x36244d]['Imap']){if(this[_0x8169('0x1d')][this[_0x8169('0xe')][_0x36244d][_0x8169('0x18')]['id']]){delete this[_0x8169('0x1d')][this[_0x8169('0xe')][_0x36244d]['Imap']['id']];}this[_0x8169('0xe')][_0x36244d]['Imap'][_0x8169('0x32')]=moment();this['emit'](_0x36244d);}};EmailChannel[_0x8169('0x10')][_0x8169('0x25')]=function(_0x17b39c,_0x2c461c){if(this['mailAccounts'][_0x17b39c]){this[_0x8169('0xe')][_0x17b39c][_0x8169('0x18')][_0x8169('0x13')]=_0x8169('0x24');this[_0x8169('0xe')][_0x17b39c][_0x8169('0x18')][_0x8169('0x14')]=_0x2c461c;return this[_0x8169('0x26')](_0x17b39c);}};EmailChannel[_0x8169('0x10')][_0x8169('0x33')]=function(_0x5e16b8,_0x4371fc){return this[_0x8169('0xf')]['send'](_0x5e16b8,_0x4371fc);};EmailChannel[_0x8169('0x10')]['verifySmtp']=function(_0x42f6ff){var _0x2f7471=this;if(this[_0x8169('0xe')][_0x42f6ff['id']]){if(_['isNil'](this[_0x8169('0xe')][_0x42f6ff['id']]['Smtp'])){this[_0x8169('0xe')][_0x42f6ff['id']][_0x8169('0x34')]={};}this[_0x8169('0xe')][_0x42f6ff['id']]['Smtp']['lastSync']=moment();return new BPromise(function(_0x2aa2bb,_0x515989){return _0x2f7471[_0x8169('0xf')]['verify'](_0x42f6ff)[_0x8169('0x2e')](function(_0x398688){_0x2f7471[_0x8169('0xe')][_0x42f6ff['id']][_0x8169('0x34')][_0x8169('0x13')]=_0x8169('0x35');_0x2f7471['mailAccounts'][_0x42f6ff['id']]['Smtp'][_0x8169('0x14')]='';_0x2f7471[_0x8169('0x26')](_0x42f6ff['id']);_0x2aa2bb(_0x398688);})[_0x8169('0x36')](function(_0x1ac183){_0x2f7471[_0x8169('0xe')][_0x42f6ff['id']][_0x8169('0x34')][_0x8169('0x13')]=_0x8169('0x24');_0x2f7471[_0x8169('0xe')][_0x42f6ff['id']]['Smtp'][_0x8169('0x14')]=_0x1ac183;_0x2f7471[_0x8169('0x26')](_0x42f6ff['id']);_0x515989(_0x1ac183);});});}return this[_0x8169('0xf')][_0x8169('0x37')](_0x42f6ff);};module['exports']=EmailChannel;
\ No newline at end of file
index 87bcca0..1e029a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8506=['imap','account','handleReady','bind','once','end','error','handleError','inherits','prototype','getAccount','connTimeout','authTimeout','service','user','anonymous@xcally.com','modernAuthentication','xoauth2','generateXOAuth2Token','CloudProvider','data5','password','host','port','tls','autotls','required','openBox','handleOpenBox','readUnseen','handleCloseBox','search','UNSEEN','fetch','message','handleFetchMessage','handleFetchEnd','body','handleMessageBody','attributes','handleMessageAttributes','handleSimpleParser','handleMessageEnd','parser','emit','handleFetchError','closeBox','stringify','textCode','hasOwnProperty','upperFirst','exports','util','mailparser','iconv','events','EventEmitter','./utils','email','mailbox'];(function(_0x11dba3,_0x5928a4){var _0x368917=function(_0x131d8e){while(--_0x131d8e){_0x11dba3['push'](_0x11dba3['shift']());}};_0x368917(++_0x5928a4);}(_0x8506,0xe8));var _0x6850=function(_0x4eaf8a,_0x3e4821){_0x4eaf8a=_0x4eaf8a-0x0;var _0x356b63=_0x8506[_0x4eaf8a];return _0x356b63;};'use strict';var _=require('lodash');var util=require(_0x6850('0x0'));var Imap=require('imap');var simpleParser=require(_0x6850('0x1'))['simpleParser'];var Iconv=require(_0x6850('0x2'))['Iconv'];var EventEmitter=require(_0x6850('0x3'))[_0x6850('0x4')];var utils=require(_0x6850('0x5'));var logger=require('../../../config/logger')(_0x6850('0x6'));function EmailImap(_0x372f0b,_0x232459){this[_0x6850('0x7')]='INBOX';this['account']=this['getAccount'](_0x372f0b,_0x232459);this[_0x6850('0x8')]=new Imap(this[_0x6850('0x9')]);this[_0x6850('0x8')]['once']('ready',this[_0x6850('0xa')][_0x6850('0xb')](this));this[_0x6850('0x8')][_0x6850('0xc')](_0x6850('0xd'),this['handleEnd'][_0x6850('0xb')](this));this[_0x6850('0x8')]['on'](_0x6850('0xe'),this[_0x6850('0xf')][_0x6850('0xb')](this));this[_0x6850('0x8')]['connect']();}util[_0x6850('0x10')](EmailImap,EventEmitter);EmailImap[_0x6850('0x11')][_0x6850('0x12')]=function(_0x774bc5,_0x14c027){var _0x32e451={'connTimeout':_0x774bc5['connTimeout']?_0x774bc5[_0x6850('0x13')]*0x3e8:0x2710,'authTimeout':_0x774bc5['authTimeout']?_0x774bc5[_0x6850('0x14')]*0x3e8:0x1388};if(_0x774bc5[_0x6850('0x15')]){_0x32e451[_0x6850('0x16')]=_0x774bc5[_0x6850('0x16')];_0x32e451[_0x6850('0x6')]=_0x14c027||_0x774bc5[_0x6850('0x16')]||_0x6850('0x17');if(_0x774bc5[_0x6850('0x18')]){_0x32e451[_0x6850('0x19')]=utils[_0x6850('0x1a')](_0x774bc5[_0x6850('0x1b')][_0x6850('0x1c')],_0x774bc5[_0x6850('0x16')]);}else{_0x32e451[_0x6850('0x1d')]=_0x774bc5['password'];}}else{if(_0x774bc5['authentication']){_0x32e451[_0x6850('0x16')]=_0x774bc5[_0x6850('0x16')];_0x32e451[_0x6850('0x1d')]=_0x774bc5[_0x6850('0x1d')];}}_0x32e451[_0x6850('0x1e')]=_0x774bc5[_0x6850('0x1e')];_0x32e451['port']=_0x774bc5[_0x6850('0x1f')]||0x3e1;if(_0x774bc5[_0x6850('0x20')]){_0x32e451[_0x6850('0x20')]=!![];}else{_0x32e451[_0x6850('0x20')]=![];_0x32e451[_0x6850('0x21')]=_0x6850('0x22');}return _0x32e451;};EmailImap[_0x6850('0x11')][_0x6850('0xa')]=function(){this[_0x6850('0x8')][_0x6850('0x23')](this[_0x6850('0x7')],![],this[_0x6850('0x24')][_0x6850('0xb')](this));};EmailImap[_0x6850('0x11')][_0x6850('0x24')]=function(_0xeef1ff,_0x574bdd){if(_0xeef1ff){this[_0x6850('0xf')](_0xeef1ff,!![]);}else{this['emit']('box',_0x574bdd);this[_0x6850('0x25')]();}};EmailImap[_0x6850('0x11')][_0x6850('0x26')]=function(_0x2e68ac){if(_0x2e68ac){this['handleError'](_0x2e68ac,!![]);}else{this[_0x6850('0x8')][_0x6850('0xd')]();}};EmailImap['prototype'][_0x6850('0x25')]=function(){this[_0x6850('0x8')][_0x6850('0x27')]([_0x6850('0x28')],this['handleReadUnseen'][_0x6850('0xb')](this));};EmailImap[_0x6850('0x11')]['handleReadUnseen']=function(_0x5c3ff9,_0x2d0f95){if(_0x5c3ff9){this[_0x6850('0xf')](_0x5c3ff9,!![]);}else{if(_0x2d0f95['length']){try{var _0xc5d8a9=this[_0x6850('0x8')][_0x6850('0x29')](_0x2d0f95,{'bodies':'','markSeen':!![]});_0xc5d8a9['on'](_0x6850('0x2a'),this[_0x6850('0x2b')][_0x6850('0xb')](this));_0xc5d8a9[_0x6850('0xc')](_0x6850('0xe'),this['handleFetchError']['bind'](this));_0xc5d8a9[_0x6850('0xc')](_0x6850('0xd'),this[_0x6850('0x2c')][_0x6850('0xb')](this));}catch(_0x233d77){logger[_0x6850('0xe')](_0x233d77);}}else{this[_0x6850('0x8')]['closeBox'](!![],this[_0x6850('0x26')][_0x6850('0xb')](this));}}};EmailImap[_0x6850('0x11')][_0x6850('0x2b')]=function(_0x1f8d7e){_0x1f8d7e['on'](_0x6850('0x2d'),this[_0x6850('0x2e')][_0x6850('0xb')](this));_0x1f8d7e['once'](_0x6850('0x2f'),this[_0x6850('0x30')][_0x6850('0xb')](this));_0x1f8d7e['once'](_0x6850('0xd'),this['handleMessageEnd'][_0x6850('0xb')](this));};EmailImap[_0x6850('0x11')]['handleMessageBody']=function(_0x353331){simpleParser(_0x353331,{'Iconv':Iconv},this[_0x6850('0x31')][_0x6850('0xb')](this));};EmailImap['prototype']['handleMessageAttributes']=function(){};EmailImap[_0x6850('0x11')][_0x6850('0x32')]=function(){};EmailImap[_0x6850('0x11')]['handleSimpleParser']=function(_0x319c66,_0x4dbd7c){if(_0x319c66){logger[_0x6850('0xe')](_0x319c66);}else{var _0x54431e=this;utils[_0x6850('0x33')](this[_0x6850('0x9')],_0x4dbd7c,function(_0x1ea6bb){_0x54431e[_0x6850('0x34')](_0x6850('0x6'),_0x1ea6bb);});}};EmailImap['prototype'][_0x6850('0x2c')]=function(){this[_0x6850('0x8')]['closeBox'](!![],this['handleCloseBox']['bind'](this));};EmailImap['prototype'][_0x6850('0x35')]=function(_0x4d046e){this[_0x6850('0xf')](_0x4d046e);this['imap'][_0x6850('0x36')](!![],this[_0x6850('0x26')][_0x6850('0xb')](this));};EmailImap['prototype']['handleEnd']=function(){this['emit'](_0x6850('0xd'));};EmailImap[_0x6850('0x11')][_0x6850('0xf')]=function(_0x39bc6a,_0x302d6a){logger[_0x6850('0xe')](_0x6850('0xf'),this[_0x6850('0x9')]['email'],JSON[_0x6850('0x37')](_0x39bc6a));var _0xb56173='';if(_0x39bc6a){if(_0x39bc6a[_0x6850('0x38')]){_0xb56173=_0x39bc6a[_0x6850('0x38')];}else{for(var _0x2f1654 in _0x39bc6a){if(_0x39bc6a[_0x6850('0x39')](_0x2f1654)){_0xb56173+=_[_0x6850('0x3a')](_0x2f1654)+':\x20'+_0x39bc6a[_0x2f1654]+'\x0a';}}}}if(_0x302d6a){this[_0x6850('0x8')][_0x6850('0xd')]();}else{this['emit'](_0x6850('0xe'),_0xb56173);this['emit'](_0x6850('0xd'));}};module[_0x6850('0x3b')]=EmailImap;
\ No newline at end of file
+var _0xc4aa=['parser','stringify','textCode','hasOwnProperty','upperFirst','lodash','util','imap','mailparser','simpleParser','iconv','./utils','../../../config/logger','email','mailbox','INBOX','account','once','handleReady','bind','end','error','handleError','connect','inherits','prototype','getAccount','connTimeout','authTimeout','service','user','anonymous@xcally.com','modernAuthentication','xoauth2','generateXOAuth2Token','CloudProvider','password','authentication','host','port','tls','autotls','openBox','handleOpenBox','emit','box','readUnseen','handleCloseBox','search','UNSEEN','handleReadUnseen','fetch','message','handleFetchMessage','handleFetchError','handleFetchEnd','closeBox','body','handleMessageAttributes','handleMessageEnd','handleMessageBody','handleSimpleParser'];(function(_0x4c60c0,_0x284c2d){var _0x14540c=function(_0x155fff){while(--_0x155fff){_0x4c60c0['push'](_0x4c60c0['shift']());}};_0x14540c(++_0x284c2d);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0xc4aa[_0x36c5b0];return _0xf19333;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var Imap=require(_0xac4a('0x2'));var simpleParser=require(_0xac4a('0x3'))[_0xac4a('0x4')];var Iconv=require(_0xac4a('0x5'))['Iconv'];var EventEmitter=require('events')['EventEmitter'];var utils=require(_0xac4a('0x6'));var logger=require(_0xac4a('0x7'))(_0xac4a('0x8'));function EmailImap(_0x215f39,_0x96be2b){this[_0xac4a('0x9')]=_0xac4a('0xa');this[_0xac4a('0xb')]=this['getAccount'](_0x215f39,_0x96be2b);this['imap']=new Imap(this[_0xac4a('0xb')]);this[_0xac4a('0x2')][_0xac4a('0xc')]('ready',this[_0xac4a('0xd')][_0xac4a('0xe')](this));this[_0xac4a('0x2')]['once'](_0xac4a('0xf'),this['handleEnd'][_0xac4a('0xe')](this));this['imap']['on'](_0xac4a('0x10'),this[_0xac4a('0x11')][_0xac4a('0xe')](this));this['imap'][_0xac4a('0x12')]();}util[_0xac4a('0x13')](EmailImap,EventEmitter);EmailImap[_0xac4a('0x14')][_0xac4a('0x15')]=function(_0x1b4313,_0x3b71c0){var _0x34bc01={'connTimeout':_0x1b4313[_0xac4a('0x16')]?_0x1b4313[_0xac4a('0x16')]*0x3e8:0x2710,'authTimeout':_0x1b4313[_0xac4a('0x17')]?_0x1b4313[_0xac4a('0x17')]*0x3e8:0x1388};if(_0x1b4313[_0xac4a('0x18')]){_0x34bc01['user']=_0x1b4313[_0xac4a('0x19')];_0x34bc01[_0xac4a('0x8')]=_0x3b71c0||_0x1b4313[_0xac4a('0x19')]||_0xac4a('0x1a');if(_0x1b4313[_0xac4a('0x1b')]){_0x34bc01[_0xac4a('0x1c')]=utils[_0xac4a('0x1d')](_0x1b4313[_0xac4a('0x1e')]['data5'],_0x1b4313['user']);}else{_0x34bc01[_0xac4a('0x1f')]=_0x1b4313[_0xac4a('0x1f')];}}else{if(_0x1b4313[_0xac4a('0x20')]){_0x34bc01['user']=_0x1b4313[_0xac4a('0x19')];_0x34bc01[_0xac4a('0x1f')]=_0x1b4313[_0xac4a('0x1f')];}}_0x34bc01[_0xac4a('0x21')]=_0x1b4313[_0xac4a('0x21')];_0x34bc01[_0xac4a('0x22')]=_0x1b4313[_0xac4a('0x22')]||0x3e1;if(_0x1b4313[_0xac4a('0x23')]){_0x34bc01['tls']=!![];}else{_0x34bc01[_0xac4a('0x23')]=![];_0x34bc01[_0xac4a('0x24')]='required';}return _0x34bc01;};EmailImap[_0xac4a('0x14')][_0xac4a('0xd')]=function(){this[_0xac4a('0x2')][_0xac4a('0x25')](this['mailbox'],![],this[_0xac4a('0x26')][_0xac4a('0xe')](this));};EmailImap[_0xac4a('0x14')][_0xac4a('0x26')]=function(_0x594f36,_0x2b0dc2){if(_0x594f36){this[_0xac4a('0x11')](_0x594f36,!![]);}else{this[_0xac4a('0x27')](_0xac4a('0x28'),_0x2b0dc2);this[_0xac4a('0x29')]();}};EmailImap[_0xac4a('0x14')][_0xac4a('0x2a')]=function(_0x14832b){if(_0x14832b){this[_0xac4a('0x11')](_0x14832b,!![]);}else{this[_0xac4a('0x2')][_0xac4a('0xf')]();}};EmailImap['prototype'][_0xac4a('0x29')]=function(){this[_0xac4a('0x2')][_0xac4a('0x2b')]([_0xac4a('0x2c')],this[_0xac4a('0x2d')]['bind'](this));};EmailImap['prototype'][_0xac4a('0x2d')]=function(_0x7a948b,_0x1f12d5){if(_0x7a948b){this['handleError'](_0x7a948b,!![]);}else{if(_0x1f12d5['length']){try{var _0x355755=this[_0xac4a('0x2')][_0xac4a('0x2e')](_0x1f12d5,{'bodies':'','markSeen':!![]});_0x355755['on'](_0xac4a('0x2f'),this[_0xac4a('0x30')]['bind'](this));_0x355755[_0xac4a('0xc')]('error',this[_0xac4a('0x31')]['bind'](this));_0x355755[_0xac4a('0xc')](_0xac4a('0xf'),this[_0xac4a('0x32')][_0xac4a('0xe')](this));}catch(_0x34577f){logger[_0xac4a('0x10')](_0x34577f);}}else{this[_0xac4a('0x2')][_0xac4a('0x33')](!![],this[_0xac4a('0x2a')][_0xac4a('0xe')](this));}}};EmailImap[_0xac4a('0x14')][_0xac4a('0x30')]=function(_0x1a9be2){_0x1a9be2['on'](_0xac4a('0x34'),this['handleMessageBody'][_0xac4a('0xe')](this));_0x1a9be2[_0xac4a('0xc')]('attributes',this[_0xac4a('0x35')][_0xac4a('0xe')](this));_0x1a9be2['once']('end',this[_0xac4a('0x36')][_0xac4a('0xe')](this));};EmailImap[_0xac4a('0x14')][_0xac4a('0x37')]=function(_0x4f5986){simpleParser(_0x4f5986,{'Iconv':Iconv},this[_0xac4a('0x38')][_0xac4a('0xe')](this));};EmailImap['prototype'][_0xac4a('0x35')]=function(){};EmailImap[_0xac4a('0x14')][_0xac4a('0x36')]=function(){};EmailImap['prototype'][_0xac4a('0x38')]=function(_0x357f06,_0x1b5427){if(_0x357f06){logger['error'](_0x357f06);}else{var _0x35bc94=this;utils[_0xac4a('0x39')](this['account'],_0x1b5427,function(_0x59bebf){_0x35bc94[_0xac4a('0x27')]('email',_0x59bebf);});}};EmailImap['prototype']['handleFetchEnd']=function(){this['imap'][_0xac4a('0x33')](!![],this[_0xac4a('0x2a')][_0xac4a('0xe')](this));};EmailImap[_0xac4a('0x14')][_0xac4a('0x31')]=function(_0x415f31){this[_0xac4a('0x11')](_0x415f31);this[_0xac4a('0x2')][_0xac4a('0x33')](!![],this[_0xac4a('0x2a')][_0xac4a('0xe')](this));};EmailImap[_0xac4a('0x14')]['handleEnd']=function(){this['emit']('end');};EmailImap[_0xac4a('0x14')][_0xac4a('0x11')]=function(_0x14e80b,_0x118be0){logger[_0xac4a('0x10')](_0xac4a('0x11'),this[_0xac4a('0xb')][_0xac4a('0x8')],JSON[_0xac4a('0x3a')](_0x14e80b));var _0x3edb19='';if(_0x14e80b){if(_0x14e80b['textCode']){_0x3edb19=_0x14e80b[_0xac4a('0x3b')];}else{for(var _0x31bfaf in _0x14e80b){if(_0x14e80b[_0xac4a('0x3c')](_0x31bfaf)){_0x3edb19+=_[_0xac4a('0x3d')](_0x31bfaf)+':\x20'+_0x14e80b[_0x31bfaf]+'\x0a';}}}}if(_0x118be0){this[_0xac4a('0x2')]['end']();}else{this[_0xac4a('0x27')](_0xac4a('0x10'),_0x3edb19);this['emit'](_0xac4a('0xf'));}};module['exports']=EmailImap;
\ No newline at end of file
index a39e98e..1b4f638 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c2e=['verify','Not\x20verifired','exports','prototype','send','createTransport','use','compile','toString'];(function(_0x14c2cf,_0x55aeff){var _0x585e55=function(_0x463b43){while(--_0x463b43){_0x14c2cf['push'](_0x14c2cf['shift']());}};_0x585e55(++_0x55aeff);}(_0x4c2e,0x1e0));var _0xe4c2=function(_0x2c7618,_0x26be9c){_0x2c7618=_0x2c7618-0x0;var _0x5ce3f0=_0x4c2e[_0x2c7618];return _0x5ce3f0;};'use strict';var nodemailer=require('nodemailer');var inlineBase64=require('nodemailer-plugin-inline-base64');function EmailSmtp(){}EmailSmtp[_0xe4c2('0x0')][_0xe4c2('0x1')]=function(_0x55eaf4,_0x1184b0){return new Promise(function(_0x2c221f,_0x691b84){var _0x1d231e=nodemailer[_0xe4c2('0x2')](_0x55eaf4);_0x1d231e[_0xe4c2('0x3')](_0xe4c2('0x4'),inlineBase64());_0x1d231e['sendMail'](_0x1184b0,function(_0x416f0a,_0x56d4c8){if(_0x416f0a){_0x691b84(_0x416f0a[_0xe4c2('0x5')]());}else{_0x2c221f(_0x56d4c8);}});});};EmailSmtp[_0xe4c2('0x0')][_0xe4c2('0x6')]=function(_0x119726){return new Promise(function(_0x12e2ce,_0x31272f){var _0x2fe991=nodemailer[_0xe4c2('0x2')](_0x119726);_0x2fe991['verify'](function(_0x5c9e1d,_0x196d34){if(_0x5c9e1d){_0x31272f(_0x5c9e1d[_0xe4c2('0x5')]());}else{if(_0x196d34){_0x12e2ce(_0x196d34);}else{_0x31272f(_0xe4c2('0x7'));}}});});};module[_0xe4c2('0x8')]=EmailSmtp;
\ No newline at end of file
+var _0xeff4=['use','sendMail','prototype','verify','Not\x20verifired','exports','nodemailer-plugin-inline-base64','send','createTransport'];(function(_0x1e8ea8,_0x1c6506){var _0x584af0=function(_0x3097e0){while(--_0x3097e0){_0x1e8ea8['push'](_0x1e8ea8['shift']());}};_0x584af0(++_0x1c6506);}(_0xeff4,0x12f));var _0x4eff=function(_0x609988,_0x507944){_0x609988=_0x609988-0x0;var _0x159984=_0xeff4[_0x609988];return _0x159984;};'use strict';var nodemailer=require('nodemailer');var inlineBase64=require(_0x4eff('0x0'));function EmailSmtp(){}EmailSmtp['prototype'][_0x4eff('0x1')]=function(_0x17d29b,_0x418140){return new Promise(function(_0x38063e,_0x4adbac){var _0x27de7a=nodemailer[_0x4eff('0x2')](_0x17d29b);_0x27de7a[_0x4eff('0x3')]('compile',inlineBase64());_0x27de7a[_0x4eff('0x4')](_0x418140,function(_0x1ec2b9,_0x260b75){if(_0x1ec2b9){_0x4adbac(_0x1ec2b9['toString']());}else{_0x38063e(_0x260b75);}});});};EmailSmtp[_0x4eff('0x5')]['verify']=function(_0x537d69){return new Promise(function(_0xc7b607,_0x4b5134){var _0x4f6aac=nodemailer['createTransport'](_0x537d69);_0x4f6aac[_0x4eff('0x6')](function(_0x9c6c50,_0x5f0da1){if(_0x9c6c50){_0x4b5134(_0x9c6c50['toString']());}else{if(_0x5f0da1){_0xc7b607(_0x5f0da1);}else{_0x4b5134(_0x4eff('0x7'));}}});});};module[_0x4eff('0x8')]=EmailSmtp;
\ No newline at end of file
index 5a46c03..09a068b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86b0=['indexOf','split','length','Anonymous','pop','anonymous','generate','html','test','includes','<img','attachments','forEach','push','filename','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','originCc','email','isEmpty','originTo','type','attachment','attachment-','format','%s-%s','now','join','root','content','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','isAutoreply','parser','from','subject','messageId','YYYY-MM-DD\x20HH:mm:ss','filter','info','parseBuffer','first','BodyHTML','<p>Empty\x20message</p>','Attachments','Data','generateXOAuth2Token','user=','utf-8','moment','path','util','../../../config/logger','../../../config/environment','head','value','address','@xcally.com','name','substring'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x86b0,0x7d));var _0x086b=function(_0x31802a,_0x1e81da){_0x31802a=_0x31802a-0x0;var _0x1e4a17=_0x86b0[_0x31802a];return _0x1e4a17;};'use strict';var _=require('lodash');var moment=require(_0x086b('0x0'));var random=require('randomstring');var fs=require('fs');var path=require(_0x086b('0x1'));var util=require(_0x086b('0x2'));var tnef=require('node-tnef');var logger=require(_0x086b('0x3'))('email');var config=require(_0x086b('0x4'));function getAddress(_0x617033){var _0x13d7af=_[_0x086b('0x5')](_0x617033[_0x086b('0x6')]);return _0x13d7af&&_0x13d7af[_0x086b('0x7')]?_0x13d7af['address']:'anonymous'+random['generate'](0x6)+_0x086b('0x8');}function getFirstName(_0x35b3d8){var _0x46a154=_[_0x086b('0x5')](_0x35b3d8[_0x086b('0x6')]);if(_0x46a154&&_0x46a154[_0x086b('0x9')]){if(_0x46a154[_0x086b('0x9')]==_0x46a154[_0x086b('0x7')]){return _0x46a154['name'][_0x086b('0xa')](0x0,_0x46a154['name'][_0x086b('0xb')]('@'));}var _0x22f714=_0x46a154['name'][_0x086b('0xc')](/\s+/);return _0x22f714[_0x086b('0xd')]>0x1?_0x22f714['slice'](0x0,-0x1)['join']('\x20'):_0x46a154[_0x086b('0x9')];}return _0x086b('0xe');}function getLastName(_0x50460b){var _0x1f1ec3=_[_0x086b('0x5')](_0x50460b[_0x086b('0x6')]);if(_0x1f1ec3&&_0x1f1ec3[_0x086b('0x9')]){var _0x56e35e=_0x1f1ec3[_0x086b('0x9')][_0x086b('0xc')](/\s+/);return _0x56e35e[_0x086b('0xd')]>0x1?_0x56e35e[_0x086b('0xf')]():'';}return'';}function getMails(_0x5ea861,_0x25ae44){var _0x30424a='';for(var _0x268ab4=0x0;_0x268ab4<_0x25ae44['value'][_0x086b('0xd')];_0x268ab4+=0x1){if(_0x25ae44[_0x086b('0x6')][_0x268ab4][_0x086b('0x7')]!==_0x5ea861){if(!_['isEmpty'](_0x30424a)){_0x30424a+=',';}_0x30424a+=_0x25ae44[_0x086b('0x6')][_0x268ab4][_0x086b('0x9')]||_0x25ae44[_0x086b('0x6')][_0x268ab4][_0x086b('0x7')]||'';_0x30424a+='\x20<';_0x30424a+=_0x25ae44[_0x086b('0x6')][_0x268ab4][_0x086b('0x7')]?_0x25ae44[_0x086b('0x6')][_0x268ab4][_0x086b('0x7')]:_0x086b('0x10')+random[_0x086b('0x11')](0x6)+_0x086b('0x8');_0x30424a+='>';}}return _0x30424a;}function parseEmail(_0x509341,_0x2b92c4,_0x5e4603){if(_0x2b92c4[_0x086b('0x12')]){var _0x44fb69=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x44fb69[_0x086b('0x13')](_0x2b92c4[_0x086b('0x12')])){_0x2b92c4[_0x086b('0x12')]=_0x2b92c4[_0x086b('0x12')]['replace'](_0x44fb69,'');}if(_0x2b92c4[_0x086b('0x12')][_0x086b('0x14')](_0x086b('0x15'))){var _0x3f9c11=[];_0x2b92c4[_0x086b('0x16')][_0x086b('0x17')](_0x2c1ab2=>{_0x3f9c11[_0x086b('0x18')](_0x2c1ab2[_0x086b('0x19')]);});var _0x4d66c5=/<img.*? _SRC(.*?)[^>]+>/g;var _0xb0d3e3=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x36df69=_0x2b92c4[_0x086b('0x12')]['replace'](_0xb0d3e3,_0x086b('0x1a'));var _0x1a61c5=_0x36df69['replace'](_0x4d66c5,_0x086b('0x1b'));for(let _0x42890b=0x0;_0x42890b<_0x3f9c11[_0x086b('0xd')];_0x42890b++){var _0x48df3e=_0x1a61c5['replace'](_0x086b('0x1b'),_0x086b('0x1c')+_0x3f9c11[_0x42890b]+_0x086b('0x1d'));_0x1a61c5=_0x48df3e;}_0x2b92c4[_0x086b('0x12')]=_0x1a61c5;}_0x5e4603[_0x086b('0x1e')]=_0x2b92c4[_0x086b('0x12')];}else{_0x5e4603[_0x086b('0x1e')]=_0x2b92c4[_0x086b('0x1f')];}if(_0x5e4603[_0x086b('0x1e')]){_0x5e4603[_0x086b('0x1e')]=_0x5e4603[_0x086b('0x1e')]['replace'](/<a\s+/gi,_0x086b('0x20'));}if(_0x2b92c4['to']){_0x5e4603['message']['originTo']=getMails(null,_0x2b92c4['to']);var _0x28e4a5=getMails(_0x509341['email'],_0x2b92c4['to']);if(!_['isEmpty'](_0x28e4a5)){_0x5e4603[_0x086b('0x21')]['cc']+=_0x28e4a5;}}if(_0x2b92c4['cc']){_0x5e4603[_0x086b('0x21')][_0x086b('0x22')]=getMails(null,_0x2b92c4['cc']);var _0x5682e6=getMails(_0x509341[_0x086b('0x23')],_0x2b92c4['cc']);if(!_[_0x086b('0x24')](_0x5682e6)){if(!_['isEmpty'](_0x5e4603['message']['cc'])){_0x5e4603[_0x086b('0x21')]['cc']+=',';}_0x5e4603[_0x086b('0x21')]['cc']+=_0x5682e6;}}if(!_[_0x086b('0x14')](_0x5e4603['message'][_0x086b('0x25')],_0x509341[_0x086b('0x23')])&&!_[_0x086b('0x14')](_0x5e4603[_0x086b('0x21')][_0x086b('0x22')],_0x509341[_0x086b('0x23')])){_0x5e4603['message']['bcc']=_0x509341[_0x086b('0x23')];}if(_0x2b92c4[_0x086b('0x16')]&&_0x2b92c4[_0x086b('0x16')][_0x086b('0xd')]){_0x5e4603[_0x086b('0x21')]['attach']=_0x2b92c4[_0x086b('0x16')][_0x086b('0xd')];for(var _0xbf44f8=0x0,_0x32354b,_0x1b89d4,_0x3b4ce4;_0xbf44f8<_0x2b92c4['attachments']['length'];_0xbf44f8+=0x1){if(_0x2b92c4[_0x086b('0x16')][_0xbf44f8][_0x086b('0x26')]===_0x086b('0x27')){_0x3b4ce4=_0x2b92c4[_0x086b('0x16')][_0xbf44f8][_0x086b('0x19')]||_0x086b('0x28')+_0xbf44f8;_0x32354b=util[_0x086b('0x29')](_0x086b('0x2a'),Date[_0x086b('0x2b')](),_0x3b4ce4);_0x1b89d4=path[_0x086b('0x2c')](config[_0x086b('0x2d')],'server/files/attachments/',_0x32354b);fs['writeFileSync'](_0x1b89d4,_0x2b92c4[_0x086b('0x16')][_0xbf44f8][_0x086b('0x2e')]);_0x5e4603[_0x086b('0x21')]['attachments']['push']({'name':_0x3b4ce4,'basename':_0x32354b,'type':_0x2b92c4[_0x086b('0x16')][_0xbf44f8]['contentType'],'filepath':_0x1b89d4});}}}if(_0x2b92c4[_0x086b('0x2f')]&&_0x2b92c4[_0x086b('0x2f')][_0x086b('0xd')]>0x0){var _0x5c6c38=[_0x086b('0x30'),_0x086b('0x31'),_0x086b('0x32')];for(var _0x4e2f0f=0x0;_0x4e2f0f<_0x2b92c4[_0x086b('0x2f')]['length'];_0x4e2f0f++){var _0x125b67=_['indexOf'](_0x5c6c38,_0x2b92c4[_0x086b('0x2f')][_0x4e2f0f]['line']);if(_0x125b67>=0x0){_0x5e4603[_0x086b('0x33')]=!![];}}}return _0x5e4603;}exports[_0x086b('0x34')]=function(_0x5ecb99,_0x2d8bdc,_0x284e4e){var _0x40e86b={'from':getAddress(_0x2d8bdc['from']),'firstName':getFirstName(_0x2d8bdc[_0x086b('0x35')]),'lastName':getLastName(_0x2d8bdc[_0x086b('0x35')]),'mapKey':'email','message':{'from':getMails(_0x5ecb99[_0x086b('0x23')],_0x2d8bdc['from']),'to':_0x5ecb99[_0x086b('0x23')],'cc':'','subject':_0x2d8bdc[_0x086b('0x36')]||'','messageId':_0x2d8bdc[_0x086b('0x37')],'inReplyTo':_0x2d8bdc['inReplyTo'],'sentAt':moment(_0x2d8bdc['date'])[_0x086b('0x29')](_0x086b('0x38')),'attach':![],'attachments':[]}};if(!_0x2d8bdc[_0x086b('0x12')]&&!_0x2d8bdc[_0x086b('0x1f')]){var _0x5dd424=_[_0x086b('0x39')](_0x2d8bdc['attachments'],{'contentType':'application/ms-tnef'});if(_0x5dd424['length']){logger[_0x086b('0x3a')](util[_0x086b('0x29')]('Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system',_0x2d8bdc[_0x086b('0x37')]));tnef[_0x086b('0x3b')](_[_0x086b('0x3c')](_0x5dd424)[_0x086b('0x2e')],function(_0x2b8c78,_0x44f1de){if(_0x44f1de){_0x2d8bdc['html']=_0x44f1de[_0x086b('0x3d')]||_0x086b('0x3e');if(_0x44f1de[_0x086b('0x3f')]){for(var _0x156340=0x0;_0x156340<_0x44f1de['Attachments'][_0x086b('0xd')];_0x156340++){var _0x4f8a7f=_0x44f1de['Attachments'][_0x156340];_0x40e86b[_0x086b('0x21')][_0x086b('0x16')][_0x086b('0x18')]({'filename':_0x4f8a7f['Title'],'content':Buffer[_0x086b('0x35')](_0x4f8a7f[_0x086b('0x40')])});}}}_0x284e4e(parseEmail(_0x5ecb99,_0x2d8bdc,_0x40e86b));});}else{_0x2d8bdc[_0x086b('0x12')]=_0x086b('0x3e');_0x284e4e(parseEmail(_0x5ecb99,_0x2d8bdc,_0x40e86b));}}else{_0x284e4e(parseEmail(_0x5ecb99,_0x2d8bdc,_0x40e86b));}};exports[_0x086b('0x41')]=function(_0x31dc47,_0x570e0a){var _0x5f11fa=[_0x086b('0x42')+(_0x570e0a||''),'auth=Bearer\x20'+_0x31dc47,'',''];return Buffer[_0x086b('0x35')](_0x5f11fa[_0x086b('0x2c')]('\ 1'),_0x086b('0x43'))['toString']('base64');};
\ No newline at end of file
+var _0x986a=['substring','length','slice','join','Anonymous','split','isEmpty','html','test','replace','includes','attachments','forEach','push','filename','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','<a\x20target=\x22_blank\x22\x20','message','originTo','originCc','bcc','attach','type','attachment','attachment-','format','%s-%s','now','root','server/files/attachments/','content','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','indexOf','line','parser','from','subject','messageId','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','textAsHtml','application/ms-tnef','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','Attachments','Data','<p>Empty\x20message</p>','generateXOAuth2Token','user=','auth=Bearer\x20','utf-8','toString','base64','lodash','randomstring','path','util','node-tnef','email','value','address','generate','@xcally.com','name'];(function(_0x3b61db,_0xbdc17b){var _0xa2caa9=function(_0x339b26){while(--_0x339b26){_0x3b61db['push'](_0x3b61db['shift']());}};_0xa2caa9(++_0xbdc17b);}(_0x986a,0x1ab));var _0xa986=function(_0x4b29cf,_0x1b08ac){_0x4b29cf=_0x4b29cf-0x0;var _0x3e2c8f=_0x986a[_0x4b29cf];return _0x3e2c8f;};'use strict';var _=require(_0xa986('0x0'));var moment=require('moment');var random=require(_0xa986('0x1'));var fs=require('fs');var path=require(_0xa986('0x2'));var util=require(_0xa986('0x3'));var tnef=require(_0xa986('0x4'));var logger=require('../../../config/logger')(_0xa986('0x5'));var config=require('../../../config/environment');function getAddress(_0x502adb){var _0x5896aa=_['head'](_0x502adb[_0xa986('0x6')]);return _0x5896aa&&_0x5896aa[_0xa986('0x7')]?_0x5896aa['address']:'anonymous'+random[_0xa986('0x8')](0x6)+_0xa986('0x9');}function getFirstName(_0x5a7892){var _0x222243=_['head'](_0x5a7892[_0xa986('0x6')]);if(_0x222243&&_0x222243[_0xa986('0xa')]){if(_0x222243['name']==_0x222243[_0xa986('0x7')]){return _0x222243['name'][_0xa986('0xb')](0x0,_0x222243[_0xa986('0xa')]['indexOf']('@'));}var _0xd4dc5c=_0x222243[_0xa986('0xa')]['split'](/\s+/);return _0xd4dc5c[_0xa986('0xc')]>0x1?_0xd4dc5c[_0xa986('0xd')](0x0,-0x1)[_0xa986('0xe')]('\x20'):_0x222243[_0xa986('0xa')];}return _0xa986('0xf');}function getLastName(_0x1a4dbd){var _0x406bc9=_['head'](_0x1a4dbd[_0xa986('0x6')]);if(_0x406bc9&&_0x406bc9[_0xa986('0xa')]){var _0x511403=_0x406bc9[_0xa986('0xa')][_0xa986('0x10')](/\s+/);return _0x511403[_0xa986('0xc')]>0x1?_0x511403['pop']():'';}return'';}function getMails(_0x53bdf3,_0x254491){var _0x4a5ab5='';for(var _0x561a18=0x0;_0x561a18<_0x254491[_0xa986('0x6')][_0xa986('0xc')];_0x561a18+=0x1){if(_0x254491[_0xa986('0x6')][_0x561a18][_0xa986('0x7')]!==_0x53bdf3){if(!_[_0xa986('0x11')](_0x4a5ab5)){_0x4a5ab5+=',';}_0x4a5ab5+=_0x254491[_0xa986('0x6')][_0x561a18][_0xa986('0xa')]||_0x254491[_0xa986('0x6')][_0x561a18][_0xa986('0x7')]||'';_0x4a5ab5+='\x20<';_0x4a5ab5+=_0x254491['value'][_0x561a18]['address']?_0x254491[_0xa986('0x6')][_0x561a18][_0xa986('0x7')]:'anonymous'+random['generate'](0x6)+_0xa986('0x9');_0x4a5ab5+='>';}}return _0x4a5ab5;}function parseEmail(_0x412238,_0x1f7239,_0x3e86a9){if(_0x1f7239[_0xa986('0x12')]){var _0x5b7f95=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x5b7f95[_0xa986('0x13')](_0x1f7239[_0xa986('0x12')])){_0x1f7239[_0xa986('0x12')]=_0x1f7239[_0xa986('0x12')][_0xa986('0x14')](_0x5b7f95,'');}if(_0x1f7239[_0xa986('0x12')][_0xa986('0x15')]('<img')){var _0x4fe8ab=[];_0x1f7239[_0xa986('0x16')][_0xa986('0x17')](_0x180dbd=>{_0x4fe8ab[_0xa986('0x18')](_0x180dbd[_0xa986('0x19')]);});var _0xc7243a=/<img.*? _SRC(.*?)[^>]+>/g;var _0x1c244a=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x5577cd=_0x1f7239['html'][_0xa986('0x14')](_0x1c244a,_0xa986('0x1a'));var _0x12ae72=_0x5577cd[_0xa986('0x14')](_0xc7243a,'_IMG');for(let _0x1bb9ec=0x0;_0x1bb9ec<_0x4fe8ab[_0xa986('0xc')];_0x1bb9ec++){var _0x1a07bf=_0x12ae72['replace'](_0xa986('0x1b'),_0xa986('0x1c')+_0x4fe8ab[_0x1bb9ec]+_0xa986('0x1d'));_0x12ae72=_0x1a07bf;}_0x1f7239[_0xa986('0x12')]=_0x12ae72;}_0x3e86a9[_0xa986('0x1e')]=_0x1f7239[_0xa986('0x12')];}else{_0x3e86a9[_0xa986('0x1e')]=_0x1f7239['textAsHtml'];}if(_0x3e86a9[_0xa986('0x1e')]){_0x3e86a9[_0xa986('0x1e')]=_0x3e86a9[_0xa986('0x1e')][_0xa986('0x14')](/<a\s+/gi,_0xa986('0x1f'));}if(_0x1f7239['to']){_0x3e86a9[_0xa986('0x20')][_0xa986('0x21')]=getMails(null,_0x1f7239['to']);var _0x1e4c06=getMails(_0x412238[_0xa986('0x5')],_0x1f7239['to']);if(!_['isEmpty'](_0x1e4c06)){_0x3e86a9[_0xa986('0x20')]['cc']+=_0x1e4c06;}}if(_0x1f7239['cc']){_0x3e86a9[_0xa986('0x20')][_0xa986('0x22')]=getMails(null,_0x1f7239['cc']);var _0x58589d=getMails(_0x412238[_0xa986('0x5')],_0x1f7239['cc']);if(!_[_0xa986('0x11')](_0x58589d)){if(!_[_0xa986('0x11')](_0x3e86a9['message']['cc'])){_0x3e86a9[_0xa986('0x20')]['cc']+=',';}_0x3e86a9[_0xa986('0x20')]['cc']+=_0x58589d;}}if(!_[_0xa986('0x15')](_0x3e86a9[_0xa986('0x20')][_0xa986('0x21')],_0x412238['email'])&&!_['includes'](_0x3e86a9['message'][_0xa986('0x22')],_0x412238['email'])){_0x3e86a9['message'][_0xa986('0x23')]=_0x412238[_0xa986('0x5')];}if(_0x1f7239[_0xa986('0x16')]&&_0x1f7239['attachments'][_0xa986('0xc')]){_0x3e86a9[_0xa986('0x20')][_0xa986('0x24')]=_0x1f7239[_0xa986('0x16')][_0xa986('0xc')];for(var _0x5191db=0x0,_0x379e49,_0x5b7802,_0x4137a5;_0x5191db<_0x1f7239['attachments']['length'];_0x5191db+=0x1){if(_0x1f7239[_0xa986('0x16')][_0x5191db][_0xa986('0x25')]===_0xa986('0x26')){_0x4137a5=_0x1f7239['attachments'][_0x5191db][_0xa986('0x19')]||_0xa986('0x27')+_0x5191db;_0x379e49=util[_0xa986('0x28')](_0xa986('0x29'),Date[_0xa986('0x2a')](),_0x4137a5);_0x5b7802=path[_0xa986('0xe')](config[_0xa986('0x2b')],_0xa986('0x2c'),_0x379e49);fs['writeFileSync'](_0x5b7802,_0x1f7239['attachments'][_0x5191db][_0xa986('0x2d')]);_0x3e86a9['message'][_0xa986('0x16')][_0xa986('0x18')]({'name':_0x4137a5,'basename':_0x379e49,'type':_0x1f7239['attachments'][_0x5191db][_0xa986('0x2e')],'filepath':_0x5b7802});}}}if(_0x1f7239['headerLines']&&_0x1f7239[_0xa986('0x2f')]['length']>0x0){var _0x3f1c06=[_0xa986('0x30'),_0xa986('0x31'),_0xa986('0x32')];for(var _0x46e9e9=0x0;_0x46e9e9<_0x1f7239[_0xa986('0x2f')][_0xa986('0xc')];_0x46e9e9++){var _0x314e7a=_[_0xa986('0x33')](_0x3f1c06,_0x1f7239[_0xa986('0x2f')][_0x46e9e9][_0xa986('0x34')]);if(_0x314e7a>=0x0){_0x3e86a9['isAutoreply']=!![];}}}return _0x3e86a9;}exports[_0xa986('0x35')]=function(_0x2490e2,_0x22692b,_0x4cf262){var _0x1385a3={'from':getAddress(_0x22692b[_0xa986('0x36')]),'firstName':getFirstName(_0x22692b[_0xa986('0x36')]),'lastName':getLastName(_0x22692b['from']),'mapKey':_0xa986('0x5'),'message':{'from':getMails(_0x2490e2[_0xa986('0x5')],_0x22692b[_0xa986('0x36')]),'to':_0x2490e2[_0xa986('0x5')],'cc':'','subject':_0x22692b[_0xa986('0x37')]||'','messageId':_0x22692b[_0xa986('0x38')],'inReplyTo':_0x22692b[_0xa986('0x39')],'sentAt':moment(_0x22692b[_0xa986('0x3a')])['format'](_0xa986('0x3b')),'attach':![],'attachments':[]}};if(!_0x22692b[_0xa986('0x12')]&&!_0x22692b[_0xa986('0x3c')]){var _0x2f7b1b=_['filter'](_0x22692b['attachments'],{'contentType':_0xa986('0x3d')});if(_0x2f7b1b[_0xa986('0xc')]){logger['info'](util[_0xa986('0x28')](_0xa986('0x3e'),_0x22692b['messageId']));tnef[_0xa986('0x3f')](_['first'](_0x2f7b1b)['content'],function(_0x23a040,_0x17e358){if(_0x17e358){_0x22692b['html']=_0x17e358['BodyHTML']||'<p>Empty\x20message</p>';if(_0x17e358['Attachments']){for(var _0x15a045=0x0;_0x15a045<_0x17e358[_0xa986('0x40')][_0xa986('0xc')];_0x15a045++){var _0x5d4a87=_0x17e358['Attachments'][_0x15a045];_0x1385a3[_0xa986('0x20')][_0xa986('0x16')][_0xa986('0x18')]({'filename':_0x5d4a87['Title'],'content':Buffer[_0xa986('0x36')](_0x5d4a87[_0xa986('0x41')])});}}}_0x4cf262(parseEmail(_0x2490e2,_0x22692b,_0x1385a3));});}else{_0x22692b['html']=_0xa986('0x42');_0x4cf262(parseEmail(_0x2490e2,_0x22692b,_0x1385a3));}}else{_0x4cf262(parseEmail(_0x2490e2,_0x22692b,_0x1385a3));}};exports[_0xa986('0x43')]=function(_0x2af80a,_0x3609ce){var _0x303cd9=[_0xa986('0x44')+(_0x3609ce||''),_0xa986('0x45')+_0x2af80a,'',''];return Buffer[_0xa986('0x36')](_0x303cd9[_0xa986('0xe')]('\ 1'),_0xa986('0x46'))[_0xa986('0x47')](_0xa986('0x48'));};
\ No newline at end of file
index 66608eb..2c5b197 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf129=['Smtp','name','key','SERV','active','Imap'];(function(_0x3cc352,_0x47361c){var _0x5de678=function(_0x4e39d2){while(--_0x4e39d2){_0x3cc352['push'](_0x3cc352['shift']());}};_0x5de678(++_0x47361c);}(_0xf129,0x115));var _0x9f12=function(_0x52f665,_0x85d297){_0x52f665=_0x52f665-0x0;var _0x22872b=_0xf129[_0x52f665];return _0x22872b;};'use strict';var _=require('lodash');function MailAccount(_0x4d4fb1){this['id']=_0x4d4fb1['id']||0x0;this[_0x9f12('0x0')]=_0x4d4fb1[_0x9f12('0x0')]||'Service';this[_0x9f12('0x1')]=_0x4d4fb1['key']||_0x9f12('0x2');this['active']=_0x4d4fb1[_0x9f12('0x3')]||![];this[_0x9f12('0x4')]=_0x4d4fb1['Imap']||[];this[_0x9f12('0x5')]=_0x4d4fb1['Smtp']||[];}module['exports']=MailAccount;
\ No newline at end of file
+var _0x50fc=['Smtp','exports','lodash','name','key','SERV','active','Imap'];(function(_0xac151d,_0x4ea1d2){var _0x111dba=function(_0x13d7f4){while(--_0x13d7f4){_0xac151d['push'](_0xac151d['shift']());}};_0x111dba(++_0x4ea1d2);}(_0x50fc,0x152));var _0xc50f=function(_0x714e4e,_0x220d25){_0x714e4e=_0x714e4e-0x0;var _0x10552a=_0x50fc[_0x714e4e];return _0x10552a;};'use strict';var _=require(_0xc50f('0x0'));function MailAccount(_0x358ccd){this['id']=_0x358ccd['id']||0x0;this[_0xc50f('0x1')]=_0x358ccd[_0xc50f('0x1')]||'Service';this[_0xc50f('0x2')]=_0x358ccd[_0xc50f('0x2')]||_0xc50f('0x3');this['active']=_0x358ccd[_0xc50f('0x4')]||![];this['Imap']=_0x358ccd[_0xc50f('0x5')]||[];this['Smtp']=_0x358ccd[_0xc50f('0x6')]||[];}module[_0xc50f('0x7')]=MailAccount;
\ No newline at end of file
index dd543d9..735a975 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ac2=['isUndefined','lodash','../model/mailAccount','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','mailAccounts'];(function(_0x8da419,_0x297164){var _0x96e958=function(_0x297cd0){while(--_0x297cd0){_0x8da419['push'](_0x8da419['shift']());}};_0x96e958(++_0x297164);}(_0x2ac2,0x1b1));var _0x22ac=function(_0x26b2b3,_0x2fcba7){_0x26b2b3=_0x26b2b3-0x0;var _0x3ee842=_0x2ac2[_0x26b2b3];return _0x3ee842;};'use strict';var _=require(_0x22ac('0x0'));var MailAccount=require(_0x22ac('0x1'));var Realtime=function(){this['mailAccounts']={};};function freeIsNotKey(_0x37c662,_0x113943,_0x119737){var _0x48621c=_[_0x22ac('0x2')](_0x37c662,function(_0x3bf3a2,_0x1da29b){return _0x3bf3a2[_0x119737];});for(var _0x4902b1 in _0x113943){if(_0x113943[_0x22ac('0x3')](_0x4902b1)){if(!_0x48621c[_0x4902b1]){delete _0x113943[_0x4902b1];}}}}Realtime[_0x22ac('0x4')][_0x22ac('0x5')]=function(_0x2f5db6,_0x4901ac){for(var _0x3dc9c1 in _0x4901ac){if(_0x2f5db6[_0x22ac('0x3')](_0x3dc9c1)){_0x2f5db6[_0x3dc9c1]=_0x4901ac[_0x3dc9c1];}}};Realtime['prototype']['initMailAccounts']=function(){var _0x563006=this;return function(_0x3e55a9){if(_0x3e55a9){freeIsNotKey(_0x3e55a9,_0x563006[_0x22ac('0x6')],'id');for(var _0x2e5367=0x0,_0x42d8f7={},_0x5a2b24={};_0x2e5367<_0x3e55a9['length'];_0x2e5367+=0x1){_0x42d8f7=_0x3e55a9[_0x2e5367];if(_[_0x22ac('0x7')](_0x563006[_0x22ac('0x6')][_0x42d8f7['id']])){_0x563006[_0x22ac('0x6')][_0x42d8f7['id']]=new MailAccount(_0x42d8f7);}else{_['merge'](_0x563006['mailAccounts'][_0x42d8f7['id']],_0x42d8f7);}}}return _0x563006[_0x22ac('0x6')];};};module['exports']=Realtime;
\ No newline at end of file
+var _0x7655=['mailAccounts','length','isUndefined','lodash','../model/mailAccount','prototype','mergeFromDatabase','hasOwnProperty','initMailAccounts'];(function(_0x1f724e,_0x1c613a){var _0x3e06c4=function(_0x50933e){while(--_0x50933e){_0x1f724e['push'](_0x1f724e['shift']());}};_0x3e06c4(++_0x1c613a);}(_0x7655,0x150));var _0x5765=function(_0x3608c6,_0x2d9212){_0x3608c6=_0x3608c6-0x0;var _0x3c7c14=_0x7655[_0x3608c6];return _0x3c7c14;};'use strict';var _=require(_0x5765('0x0'));var MailAccount=require(_0x5765('0x1'));var Realtime=function(){this['mailAccounts']={};};function freeIsNotKey(_0x1106b5,_0xf4e37b,_0x2928eb){var _0x21cca3=_['mapKeys'](_0x1106b5,function(_0x4a8d83,_0x6da1f3){return _0x4a8d83[_0x2928eb];});for(var _0xe2f13a in _0xf4e37b){if(_0xf4e37b['hasOwnProperty'](_0xe2f13a)){if(!_0x21cca3[_0xe2f13a]){delete _0xf4e37b[_0xe2f13a];}}}}Realtime[_0x5765('0x2')][_0x5765('0x3')]=function(_0x4a3e95,_0x2063c3){for(var _0x2441f3 in _0x2063c3){if(_0x4a3e95[_0x5765('0x4')](_0x2441f3)){_0x4a3e95[_0x2441f3]=_0x2063c3[_0x2441f3];}}};Realtime['prototype'][_0x5765('0x5')]=function(){var _0x4eaee3=this;return function(_0xde4709){if(_0xde4709){freeIsNotKey(_0xde4709,_0x4eaee3[_0x5765('0x6')],'id');for(var _0x5f2cd1=0x0,_0x4a556e={},_0x537fba={};_0x5f2cd1<_0xde4709[_0x5765('0x7')];_0x5f2cd1+=0x1){_0x4a556e=_0xde4709[_0x5f2cd1];if(_[_0x5765('0x8')](_0x4eaee3[_0x5765('0x6')][_0x4a556e['id']])){_0x4eaee3[_0x5765('0x6')][_0x4a556e['id']]=new MailAccount(_0x4a556e);}else{_['merge'](_0x4eaee3['mailAccounts'][_0x4a556e['id']],_0x4a556e);}}}return _0x4eaee3[_0x5765('0x6')];};};module['exports']=Realtime;
\ No newline at end of file
index 046238c..e3bcad3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2a5=['email','active','key','ListId','TemplateId','MailServerIn','Imap','type','data5','MailServerOut','Smtp','CloudProvider','notify','NotifyMailAccount','../client','getMailAccounts','Request','GetMailAccount','name','service'];(function(_0x4630f4,_0x4aa158){var _0x3e2187=function(_0x242a71){while(--_0x242a71){_0x4630f4['push'](_0x4630f4['shift']());}};_0x3e2187(++_0x4aa158);}(_0xc2a5,0x14e));var _0x5c2a=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xc2a5[_0x17d9e3];return _0x14192d;};'use strict';var client=require(_0x5c2a('0x0'));exports[_0x5c2a('0x1')]=function(){return function(){return client[_0x5c2a('0x2')](_0x5c2a('0x3'),{'options':{'attributes':['id',_0x5c2a('0x4'),'provider',_0x5c2a('0x5'),_0x5c2a('0x6'),_0x5c2a('0x7'),_0x5c2a('0x8'),_0x5c2a('0x9'),_0x5c2a('0xa')],'raw':![],'include':[{'model':_0x5c2a('0xb'),'as':_0x5c2a('0xc'),'include':[{'model':'CloudProvider','attributes':['id',_0x5c2a('0x4'),_0x5c2a('0x5'),_0x5c2a('0xd'),_0x5c2a('0xe')],'as':'CloudProvider'}]},{'model':_0x5c2a('0xf'),'as':_0x5c2a('0x10'),'include':[{'model':_0x5c2a('0x11'),'attributes':['id',_0x5c2a('0x4'),_0x5c2a('0x5'),_0x5c2a('0xd'),_0x5c2a('0xe')],'as':'CloudProvider'}]}]},'log':'getMailAccount'});};};exports[_0x5c2a('0x12')]=function(_0x4336e3,_0x5b7f3c){return client['Request'](_0x5c2a('0x13'),{'account':{'id':_0x4336e3},'body':_0x5b7f3c,'log':_0x5c2a('0x13')});};
\ No newline at end of file
+var _0x29e8=['key','ListId','Imap','service','data5','Smtp','CloudProvider','name','type','getMailAccount','notify','NotifyMailAccount','../client','getMailAccounts','Request','GetMailAccount','provider','email','active'];(function(_0x35885a,_0x42fed7){var _0xe86249=function(_0x98edb3){while(--_0x98edb3){_0x35885a['push'](_0x35885a['shift']());}};_0xe86249(++_0x42fed7);}(_0x29e8,0x116));var _0x829e=function(_0x20f04b,_0x36696c){_0x20f04b=_0x20f04b-0x0;var _0x25ff98=_0x29e8[_0x20f04b];return _0x25ff98;};'use strict';var client=require(_0x829e('0x0'));exports[_0x829e('0x1')]=function(){return function(){return client[_0x829e('0x2')](_0x829e('0x3'),{'options':{'attributes':['id','name',_0x829e('0x4'),'service',_0x829e('0x5'),_0x829e('0x6'),_0x829e('0x7'),_0x829e('0x8'),'TemplateId'],'raw':![],'include':[{'model':'MailServerIn','as':_0x829e('0x9'),'include':[{'model':'CloudProvider','attributes':['id','name',_0x829e('0xa'),'type',_0x829e('0xb')],'as':'CloudProvider'}]},{'model':'MailServerOut','as':_0x829e('0xc'),'include':[{'model':_0x829e('0xd'),'attributes':['id',_0x829e('0xe'),_0x829e('0xa'),_0x829e('0xf'),'data5'],'as':_0x829e('0xd')}]}]},'log':_0x829e('0x10')});};};exports[_0x829e('0x11')]=function(_0x2a984d,_0x52e957){return client[_0x829e('0x2')](_0x829e('0x12'),{'account':{'id':_0x2a984d},'body':_0x52e957,'log':_0x829e('0x12')});};
\ No newline at end of file
index a2e224f..872cb9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40b9=['GetSettings','getSettings','Request','ShowSetting','loginMailFrequency'];(function(_0x44e753,_0x1ef2e1){var _0x37ade5=function(_0x9f388d){while(--_0x9f388d){_0x44e753['push'](_0x44e753['shift']());}};_0x37ade5(++_0x1ef2e1);}(_0x40b9,0x1b4));var _0x940b=function(_0x4c33dc,_0xaa8d4c){_0x4c33dc=_0x4c33dc-0x0;var _0x25d30a=_0x40b9[_0x4c33dc];return _0x25d30a;};'use strict';var client=require('../client');exports[_0x940b('0x0')]=function(){return client[_0x940b('0x1')](_0x940b('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x940b('0x3')]},'log':_0x940b('0x4')});};
\ No newline at end of file
+var _0x5aec=['getSettings','Request','ShowSetting','loginMailFrequency','GetSettings','../client'];(function(_0xda3a10,_0x5555f1){var _0x5599f1=function(_0x614a15){while(--_0x614a15){_0xda3a10['push'](_0xda3a10['shift']());}};_0x5599f1(++_0x5555f1);}(_0x5aec,0x1cd));var _0xc5ae=function(_0x9c2427,_0x17c865){_0x9c2427=_0x9c2427-0x0;var _0x51984f=_0x5aec[_0x9c2427];return _0x51984f;};'use strict';var client=require(_0xc5ae('0x0'));exports[_0xc5ae('0x1')]=function(){return client[_0xc5ae('0x2')](_0xc5ae('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xc5ae('0x4')]},'log':_0xc5ae('0x5')});};
\ No newline at end of file
index 671762d..fba9bfd 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(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa9e0,0x123));var _0x0a9e=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0xa9e0[_0x297fd3];return _0x2af381;};'use strict';var jayson=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var logger=require('../../../config/logger')('email');exports[_0x0a9e('0x3')]=function(_0x4ce2f1,_0x333808){return new BPromise(function(_0x432180,_0x2ab90b){var _0x991246={'SendMail':function(_0x981158){var _0x57b080=this;return new Promise(function(_0x219af0,_0x441e3a){_0x333808[_0x0a9e('0x4')](_0x981158['account'],_0x981158['message'])[_0x0a9e('0x5')](function(_0x56465b){_0x219af0({'code':0xc8,'message':_0x56465b});})['catch'](function(_0x39753a){_0x441e3a(_0x57b080[_0x0a9e('0x6')](0x1f4,_0x39753a));});});},'VerifySmtp':function(_0x307b3e){var _0x3ab53f=this;return new Promise(function(_0xfeb75b,_0xbd1168){_0x333808['verifySmtp'](_0x307b3e['account'])['then'](function(_0x4cfe67){_0xfeb75b({'code':0xc8,'message':_0x0a9e('0x7')});})[_0x0a9e('0x8')](function(_0xd5b662){_0xbd1168(_0x3ab53f[_0x0a9e('0x6')](0x1f4,_0xd5b662));});});},'MailAccounts':function(_0x32d742){return new Promise(function(_0x69aeb7,_0x5db4b0){var _0x4283ce=_[_0x0a9e('0x9')](_0x4ce2f1[_0x0a9e('0xa')]);for(var _0x281129=0x0;_0x281129<_0x4283ce[_0x0a9e('0xb')];_0x281129+=0x1){if(_0x4283ce[_0x281129][_0x0a9e('0xc')]&&_0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')]){delete _0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')];}if(_0x4283ce[_0x281129]['Smtp']&&_0x4283ce[_0x281129][_0x0a9e('0xe')][_0x0a9e('0xf')]){delete _0x4283ce[_0x281129]['Smtp'][_0x0a9e('0xf')];}}_0x69aeb7({'count':_0x4283ce['length'],'rows':_0x4283ce});});}};var _0x459eb1=jayson[_0x0a9e('0x10')](_0x991246)[_0x0a9e('0x11')]();_0x459eb1['on'](_0x0a9e('0x6'),function(_0x31b1ca){logger[_0x0a9e('0x6')](JSON[_0x0a9e('0x12')](_0x31b1ca));return _0x2ab90b(_0x31b1ca);});_0x459eb1[_0x0a9e('0x3')](0x232b,_0x0a9e('0x13'),function(){console[_0x0a9e('0x14')](_0x0a9e('0x15'),0x232b);return _0x432180(_0x0a9e('0x16')+0x232b);});});};
\ No newline at end of file
+var _0xa9e0=['catch','values','mailAccounts','length','Imap','password','Smtp','pass','server','http','stringify','127.0.0.1','log','Email\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','bluebird','lodash','listen','sendMail','then','error','Verified'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xa9e0[_0xbca1b1];return _0x4e1686;};'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 9250ab0..80f51a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x030d=['socket.io-redis','redis','default','../../config/socketio','../../routes','once','listening','Express\x20server\x20listening\x20on\x20port\x20%d!','lodash','http','sticky-session','ioredis','../../config/environment','createServer','timeout','listen','port','localhost','adapter'];(function(_0x1982b0,_0x55b15f){var _0x176e75=function(_0x3f9f9e){while(--_0x3f9f9e){_0x1982b0['push'](_0x1982b0['shift']());}};_0x176e75(++_0x55b15f);}(_0x030d,0x1bd));var _0xd030=function(_0x44406f,_0x428cc6){_0x44406f=_0x44406f-0x0;var _0x59dfaf=_0x030d[_0x44406f];return _0x59dfaf;};'use strict';var _=require(_0xd030('0x0'));var http=require(_0xd030('0x1'));var express=require('express');var sticky=require(_0xd030('0x2'));var Redis=require(_0xd030('0x3'));var config=require(_0xd030('0x4'));var app=express();var server=http[_0xd030('0x5')](app);server[_0xd030('0x6')]=0xdbba0;if(sticky[_0xd030('0x7')](server,config[_0xd030('0x8')])){var socketio=require('socket.io')(server,{'transports':['websocket','polling']});config['redis']=_['defaults'](config['redis'],{'host':_0xd030('0x9'),'port':0x18eb});socketio[_0xd030('0xa')](require(_0xd030('0xb'))({'pubClient':new Redis(config[_0xd030('0xc')]),'subClient':new Redis(config[_0xd030('0xc')])}));require('../../config/triggers')[_0xd030('0xd')]();require(_0xd030('0xe'))[_0xd030('0xd')](socketio);require('../../config/express')[_0xd030('0xd')](app);require(_0xd030('0xf'))['default'](app);}else{server[_0xd030('0x10')](_0xd030('0x11'),function(){console['log'](_0xd030('0x12'),config['port']);});}exports=module['exports']=app;
\ No newline at end of file
+var _0x9be8=['timeout','listen','port','socket.io','polling','defaults','redis','adapter','socket.io-redis','../../config/triggers','../../config/socketio','default','../../routes','once','listening','log','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','lodash','http','sticky-session','ioredis','../../config/environment','createServer'];(function(_0x2eb0b1,_0x4d7a16){var _0x19f323=function(_0x4c6625){while(--_0x4c6625){_0x2eb0b1['push'](_0x2eb0b1['shift']());}};_0x19f323(++_0x4d7a16);}(_0x9be8,0x1c2));var _0x89be=function(_0x57486e,_0x32283b){_0x57486e=_0x57486e-0x0;var _0x5f110b=_0x9be8[_0x57486e];return _0x5f110b;};'use strict';var _=require(_0x89be('0x0'));var http=require(_0x89be('0x1'));var express=require('express');var sticky=require(_0x89be('0x2'));var Redis=require(_0x89be('0x3'));var config=require(_0x89be('0x4'));var app=express();var server=http[_0x89be('0x5')](app);server[_0x89be('0x6')]=0xdbba0;if(sticky[_0x89be('0x7')](server,config[_0x89be('0x8')])){var socketio=require(_0x89be('0x9'))(server,{'transports':['websocket',_0x89be('0xa')]});config['redis']=_[_0x89be('0xb')](config[_0x89be('0xc')],{'host':'localhost','port':0x18eb});socketio[_0x89be('0xd')](require(_0x89be('0xe'))({'pubClient':new Redis(config[_0x89be('0xc')]),'subClient':new Redis(config[_0x89be('0xc')])}));require(_0x89be('0xf'))['default']();require(_0x89be('0x10'))[_0x89be('0x11')](socketio);require('../../config/express')[_0x89be('0x11')](app);require(_0x89be('0x12'))[_0x89be('0x11')](app);}else{server[_0x89be('0x13')](_0x89be('0x14'),function(){console[_0x89be('0x15')](_0x89be('0x16'),config[_0x89be('0x8')]);});}exports=module[_0x89be('0x17')]=app;
\ No newline at end of file
index 8d695cc..7492bf3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7759=['request','then','debug','error','rpc','message','result','exports','../../config/logger','routing','client','Request'];(function(_0x385603,_0x1925c9){var _0x46ef10=function(_0x3e8e4d){while(--_0x3e8e4d){_0x385603['push'](_0x385603['shift']());}};_0x46ef10(++_0x1925c9);}(_0x7759,0x1a0));var _0x9775=function(_0x478e36,_0x185c12){_0x478e36=_0x478e36-0x0;var _0x18158a=_0x7759[_0x478e36];return _0x18158a;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0x9775('0x0'))(_0x9775('0x1'));var client=jayson[_0x9775('0x2')]['http']({'port':0x2329});client[_0x9775('0x3')]=function(_0x4d7983,_0x4b13a8){return new BPromise(function(_0x4af94f,_0x15d2a5){return client[_0x9775('0x4')](_0x4d7983,_0x4b13a8)[_0x9775('0x5')](function(_0x44efa3){logger[_0x9775('0x6')]('rpc',_0x9775('0x1'),_0x4d7983,_0x4b13a8,_0x44efa3);if(_0x44efa3[_0x9775('0x7')]){logger[_0x9775('0x7')](_0x9775('0x8'),'routing',_0x4d7983,_0x44efa3[_0x9775('0x7')][_0x9775('0x9')],_0x4b13a8);return _0x15d2a5(_0x44efa3[_0x9775('0x7')]['message']);}else{return _0x4af94f(_0x44efa3[_0x9775('0xa')]);}})['catch'](function(_0x4e112a){logger[_0x9775('0x7')](_0x9775('0x8'),_0x9775('0x1'),_0x4d7983,_0x4e112a,_0x4b13a8);return _0x15d2a5(_0x4e112a);});});};module[_0x9775('0xb')]=client;
\ No newline at end of file
+var _0xa6ae=['jayson/promise','../../config/logger','routing','client','http','request','debug','rpc','error','message','result','catch','exports'];(function(_0x141d22,_0x27b5a0){var _0x1c170e=function(_0x1dcb93){while(--_0x1dcb93){_0x141d22['push'](_0x141d22['shift']());}};_0x1c170e(++_0x27b5a0);}(_0xa6ae,0x179));var _0xea6a=function(_0x50a635,_0x158de3){_0x50a635=_0x50a635-0x0;var _0x15fcdf=_0xa6ae[_0x50a635];return _0x15fcdf;};'use strict';var jayson=require(_0xea6a('0x0'));var BPromise=require('bluebird');var logger=require(_0xea6a('0x1'))(_0xea6a('0x2'));var client=jayson[_0xea6a('0x3')][_0xea6a('0x4')]({'port':0x2329});client['Request']=function(_0x19be22,_0x48d299){return new BPromise(function(_0x580fc8,_0x4c5b2d){return client[_0xea6a('0x5')](_0x19be22,_0x48d299)['then'](function(_0x15edcd){logger[_0xea6a('0x6')](_0xea6a('0x7'),_0xea6a('0x2'),_0x19be22,_0x48d299,_0x15edcd);if(_0x15edcd[_0xea6a('0x8')]){logger[_0xea6a('0x8')](_0xea6a('0x7'),'routing',_0x19be22,_0x15edcd[_0xea6a('0x8')][_0xea6a('0x9')],_0x48d299);return _0x4c5b2d(_0x15edcd[_0xea6a('0x8')][_0xea6a('0x9')]);}else{return _0x580fc8(_0x15edcd[_0xea6a('0xa')]);}})[_0xea6a('0xb')](function(_0x5d404f){logger['error']('rpc',_0xea6a('0x2'),_0x19be22,_0x5d404f,_0x48d299);return _0x4c5b2d(_0x5d404f);});});};module[_0xea6a('0xc')]=client;
\ No newline at end of file
index 8007fa8..9b4d82a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6742=['./rpc/openchannelQueue','./rpc/chatQueue','resolve','then','getAgents','initIntervals','initOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','initSmsQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','catch','log','bluebird','./server','./realtime','./rpc/interval'];(function(_0x224f25,_0xaaa874){var _0x27818f=function(_0x4e33b0){while(--_0x4e33b0){_0x224f25['push'](_0x224f25['shift']());}};_0x27818f(++_0xaaa874);}(_0x6742,0x14c));var _0x2674=function(_0x18c144,_0x15fc08){_0x18c144=_0x18c144-0x0;var _0x42d7cc=_0x6742[_0x18c144];return _0x42d7cc;};'use strict';var BPromise=require(_0x2674('0x0'));var server=require(_0x2674('0x1'));var Realtime=require(_0x2674('0x2'));var user=require('./rpc/user');var interval=require(_0x2674('0x3'));var openchannelQueue=require(_0x2674('0x4'));var chatQueue=require(_0x2674('0x5'));var smsQueue=require('./rpc/smsQueue');var mailQueue=require('./rpc/mailQueue');var faxQueue=require('./rpc/faxQueue');var whatsappQueue=require('./rpc/whatsappQueue');var realtime=new Realtime();function initRealtime(){return BPromise[_0x2674('0x6')]()[_0x2674('0x7')](user[_0x2674('0x8')]())[_0x2674('0x7')](realtime['initAgents']())[_0x2674('0x7')](interval['getIntervals']())['then'](realtime[_0x2674('0x9')]())[_0x2674('0x7')](openchannelQueue['getOpenchannelQueues']())[_0x2674('0x7')](realtime[_0x2674('0xa')]())[_0x2674('0x7')](chatQueue[_0x2674('0xb')]())['then'](realtime[_0x2674('0xc')]())[_0x2674('0x7')](smsQueue[_0x2674('0xd')]())[_0x2674('0x7')](realtime[_0x2674('0xe')]())[_0x2674('0x7')](mailQueue['getMailQueues']())[_0x2674('0x7')](realtime[_0x2674('0xf')]())[_0x2674('0x7')](faxQueue[_0x2674('0x10')]())[_0x2674('0x7')](realtime[_0x2674('0x11')]())['then'](whatsappQueue[_0x2674('0x12')]())[_0x2674('0x7')](realtime['initWhatsappQueues']())[_0x2674('0x7')](function(){return realtime;});}function main(){return server['listen'](realtime)['then'](function(_0x4bf30f){return initRealtime();})[_0x2674('0x7')](function(_0x351126){return setInterval(initRealtime,0x1388);})[_0x2674('0x13')](function(_0xd8e6fe){console[_0x2674('0x14')](_0xd8e6fe);});}main();
\ No newline at end of file
+var _0x9c35=['catch','log','./rpc/interval','./rpc/chatQueue','./rpc/smsQueue','./rpc/faxQueue','resolve','then','initAgents','getIntervals','initIntervals','getOpenchannelQueues','getChatQueues','initMailQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','listen'];(function(_0x3157d8,_0x362ac1){var _0x1b9ce1=function(_0x3739bd){while(--_0x3739bd){_0x3157d8['push'](_0x3157d8['shift']());}};_0x1b9ce1(++_0x362ac1);}(_0x9c35,0xda));var _0x59c3=function(_0x589248,_0x31dea3){_0x589248=_0x589248-0x0;var _0x486750=_0x9c35[_0x589248];return _0x486750;};'use strict';var BPromise=require('bluebird');var server=require('./server');var Realtime=require('./realtime');var user=require('./rpc/user');var interval=require(_0x59c3('0x0'));var openchannelQueue=require('./rpc/openchannelQueue');var chatQueue=require(_0x59c3('0x1'));var smsQueue=require(_0x59c3('0x2'));var mailQueue=require('./rpc/mailQueue');var faxQueue=require(_0x59c3('0x3'));var whatsappQueue=require('./rpc/whatsappQueue');var realtime=new Realtime();function initRealtime(){return BPromise[_0x59c3('0x4')]()[_0x59c3('0x5')](user['getAgents']())[_0x59c3('0x5')](realtime[_0x59c3('0x6')]())['then'](interval[_0x59c3('0x7')]())[_0x59c3('0x5')](realtime[_0x59c3('0x8')]())[_0x59c3('0x5')](openchannelQueue[_0x59c3('0x9')]())[_0x59c3('0x5')](realtime['initOpenchannelQueues']())[_0x59c3('0x5')](chatQueue[_0x59c3('0xa')]())[_0x59c3('0x5')](realtime['initChatQueues']())[_0x59c3('0x5')](smsQueue['getSmsQueues']())[_0x59c3('0x5')](realtime['initSmsQueues']())[_0x59c3('0x5')](mailQueue['getMailQueues']())[_0x59c3('0x5')](realtime[_0x59c3('0xb')]())[_0x59c3('0x5')](faxQueue['getFaxQueues']())['then'](realtime[_0x59c3('0xc')]())[_0x59c3('0x5')](whatsappQueue[_0x59c3('0xd')]())[_0x59c3('0x5')](realtime[_0x59c3('0xe')]())[_0x59c3('0x5')](function(){return realtime;});}function main(){return server[_0x59c3('0xf')](realtime)[_0x59c3('0x5')](function(_0x477703){return initRealtime();})[_0x59c3('0x5')](function(_0x11a520){return setInterval(initRealtime,0x1388);})[_0x59c3('0x10')](function(_0x6b8a53){console[_0x59c3('0x11')](_0x6b8a53);});}main();
\ No newline at end of file
index 7307a26..b7c75fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['isNil','register','ignoreFactChanges','activeRules','prototype','isArray','rules','concat','isObject','push','sync','filter','orderBy','asc','result','clone','name','nextTick','ruleRef','isEqual','restart','length','condition','noop','findRules','matches','turn','prioritize','priority','toString','consequence','fromJSON','isString','parse','map','object','exports','util','events','EventEmitter','init'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x1261,0x144));var _0x1126=function(_0x710815,_0x520da8){_0x710815=_0x710815-0x0;var _0x5b3b89=_0x1261[_0x710815];return _0x5b3b89;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var EventEmitter=require(_0x1126('0x1'))[_0x1126('0x2')];function RuleEngine(_0x331a2c,_0x39b786){this[_0x1126('0x3')]();if(!_[_0x1126('0x4')](_0x331a2c)){this[_0x1126('0x5')](_0x331a2c);}if(_0x39b786){this[_0x1126('0x6')]=_0x39b786[_0x1126('0x6')];}return this;}util['inherits'](RuleEngine,EventEmitter);RuleEngine['prototype'][_0x1126('0x3')]=function(_0x907180){this['rules']=[];this[_0x1126('0x7')]=[];};RuleEngine[_0x1126('0x8')][_0x1126('0x5')]=function(_0x3abb0b){if(Array[_0x1126('0x9')](_0x3abb0b)){this['rules']=this[_0x1126('0xa')][_0x1126('0xb')](_0x3abb0b);}else if(_0x3abb0b!==null&&_[_0x1126('0xc')](_0x3abb0b)){this['rules'][_0x1126('0xd')](_0x3abb0b);}this['sync']();};RuleEngine['prototype'][_0x1126('0xe')]=function(){this['activeRules']=this[_0x1126('0xa')][_0x1126('0xf')](function(_0xd26a32){if(_[_0x1126('0x4')](_0xd26a32['on'])){_0xd26a32['on']=!![];}if(_0xd26a32['on']===!![]){return _0xd26a32;}});this[_0x1126('0x7')]=_[_0x1126('0x10')](this[_0x1126('0x7')],['p'],[_0x1126('0x11')]);};RuleEngine[_0x1126('0x8')]['execute']=function(_0x5de9a7,_0x1af673){var _0x154e20=![];_0x5de9a7[_0x1126('0x12')]=!![];var _0x4be0c6=_[_0x1126('0x13')](_0x5de9a7);var _0x4794a7=_[_0x1126('0x13')](_0x5de9a7);var _0x42f379=this[_0x1126('0x7')];var _0x4e1c97=[];var _0x245cd7=this[_0x1126('0x6')];(function FnRuleLoop(_0x4a7b49){var _0x4d2b38={'rules':function(){return _0x42f379;},'rule':function(){return _0x42f379[_0x4a7b49];},'when':function(_0x22ae0b){if(_0x22ae0b){var _0x2b2487=_0x42f379[_0x4a7b49]['consequence'];_0x2b2487['ruleRef']=_0x42f379[_0x4a7b49]['id']||_0x42f379[_0x4a7b49][_0x1126('0x14')]||'index_'+_0x4a7b49;process[_0x1126('0x15')](function(){_0x4e1c97[_0x1126('0xd')](_0x2b2487[_0x1126('0x16')]);_0x2b2487['call'](_0x4be0c6,_0x4d2b38);});}else{process[_0x1126('0x15')](function(){_0x4d2b38['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x154e20=!![];return FnRuleLoop(0x0);},'next':function(_0x56efeb){if(!_0x245cd7&&!_[_0x1126('0x17')](_0x4794a7,_0x4be0c6)){_0x4794a7=_[_0x1126('0x13')](_0x4be0c6);process[_0x1126('0x15')](function(){_0x4d2b38[_0x1126('0x18')]();});}else{process['nextTick'](function(){if(_[_0x1126('0x4')](_0x56efeb)){return FnRuleLoop(_0x4a7b49+0x1);}else{return FnRuleLoop(_0x56efeb);}});}}};if(_0x4a7b49<_0x42f379[_0x1126('0x19')]&&_0x154e20===![]){var _0x48a08d=_0x42f379[_0x4a7b49][_0x1126('0x1a')];_0x48a08d['call'](_0x4be0c6,_0x4d2b38);}else{process['nextTick'](function(){_0x4be0c6['matchPath']=_0x4e1c97;return _0x1af673?_0x1af673(_0x4be0c6):_[_0x1126('0x1b')]();});}}(0x0));};RuleEngine[_0x1126('0x8')][_0x1126('0x1c')]=function(_0x34bcf1){if(_[_0x1126('0x4')](_0x34bcf1)){return this[_0x1126('0xa')];}else{var _0xea0971=_[_0x1126('0x1d')](_0x34bcf1);return _['filter'](this[_0x1126('0xa')],_0xea0971);}};RuleEngine[_0x1126('0x8')][_0x1126('0x1e')]=function(_0x5ddf63,_0x541bc9){var _0xeb7d89=_0x5ddf63==='on'||_0x5ddf63==='ON'?!![]:![];var _0x39bf0e=this['findRules'](_0x541bc9);for(var _0x2fb797=0x0,_0x23d2bc=_0x39bf0e['length'];_0x2fb797<_0x23d2bc;_0x2fb797+=0x1){_0x39bf0e[_0x2fb797]['on']=_0xeb7d89;}this[_0x1126('0xe')]();};RuleEngine['prototype'][_0x1126('0x1f')]=function(_0x4bd50b,_0x771bb8){_0x4bd50b=parseInt(_0x4bd50b,0xa);var _0x583ce6=this[_0x1126('0x1c')](_0x771bb8);for(var _0x5f2611=0x0,_0x5252e0=_0x583ce6['length'];_0x5f2611<_0x5252e0;_0x5f2611+=0x1){_0x583ce6[_0x5f2611][_0x1126('0x20')]=_0x4bd50b;}this[_0x1126('0xe')]();};RuleEngine[_0x1126('0x8')]['toJSON']=function(){var _0x2a3055=this[_0x1126('0xa')];if(_0x2a3055 instanceof Array){_0x2a3055=_0x2a3055['map'](function(_0x3dd50e){_0x3dd50e[_0x1126('0x1a')]=_0x3dd50e[_0x1126('0x1a')][_0x1126('0x21')]();_0x3dd50e['consequence']=_0x3dd50e['consequence'][_0x1126('0x21')]();return _0x3dd50e;});}else if(!_[_0x1126('0x4')](_0x2a3055)){_0x2a3055[_0x1126('0x1a')]=_0x2a3055[_0x1126('0x1a')]['toString']();_0x2a3055[_0x1126('0x22')]=_0x2a3055[_0x1126('0x22')][_0x1126('0x21')]();}return _0x2a3055;};RuleEngine[_0x1126('0x8')][_0x1126('0x23')]=function(_0x5df232){this[_0x1126('0x3')]();if(_[_0x1126('0x24')](_0x5df232)){_0x5df232=JSON[_0x1126('0x25')](_0x5df232);}if(_0x5df232 instanceof Array){_0x5df232=_0x5df232[_0x1126('0x26')](function(_0x5c019d){_0x5c019d['condition']=eval('('+_0x5c019d[_0x1126('0x1a')]+')');_0x5c019d[_0x1126('0x22')]=eval('('+_0x5c019d['consequence']+')');return _0x5c019d;});}else if(_0x5df232!==null&&typeof _0x5df232==_0x1126('0x27')){_0x5df232[_0x1126('0x1a')]=eval('('+_0x5df232[_0x1126('0x1a')]+')');_0x5df232['consequence']=eval('('+_0x5df232['consequence']+')');}this[_0x1126('0x5')](_0x5df232);};module[_0x1126('0x28')]=RuleEngine;
\ No newline at end of file
+var _0xe14b=['next','restart','condition','noop','findRules','matches','turn','length','prioritize','priority','toJSON','map','toString','fromJSON','isString','object','register','exports','lodash','util','isNil','ignoreFactChanges','inherits','prototype','init','rules','activeRules','isArray','concat','push','sync','filter','orderBy','asc','execute','result','clone','consequence','ruleRef','name','index_','nextTick','call'];(function(_0x4ea920,_0x21ccbd){var _0x149810=function(_0x592854){while(--_0x592854){_0x4ea920['push'](_0x4ea920['shift']());}};_0x149810(++_0x21ccbd);}(_0xe14b,0x93));var _0xbe14=function(_0x4d8554,_0x547575){_0x4d8554=_0x4d8554-0x0;var _0x1c75a8=_0xe14b[_0x4d8554];return _0x1c75a8;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var EventEmitter=require('events')['EventEmitter'];function RuleEngine(_0x11c3a0,_0x36393a){this['init']();if(!_[_0xbe14('0x2')](_0x11c3a0)){this['register'](_0x11c3a0);}if(_0x36393a){this['ignoreFactChanges']=_0x36393a[_0xbe14('0x3')];}return this;}util[_0xbe14('0x4')](RuleEngine,EventEmitter);RuleEngine[_0xbe14('0x5')][_0xbe14('0x6')]=function(_0x1d9ade){this[_0xbe14('0x7')]=[];this[_0xbe14('0x8')]=[];};RuleEngine['prototype']['register']=function(_0x496063){if(Array[_0xbe14('0x9')](_0x496063)){this[_0xbe14('0x7')]=this[_0xbe14('0x7')][_0xbe14('0xa')](_0x496063);}else if(_0x496063!==null&&_['isObject'](_0x496063)){this['rules'][_0xbe14('0xb')](_0x496063);}this[_0xbe14('0xc')]();};RuleEngine['prototype'][_0xbe14('0xc')]=function(){this[_0xbe14('0x8')]=this[_0xbe14('0x7')][_0xbe14('0xd')](function(_0x27792f){if(_[_0xbe14('0x2')](_0x27792f['on'])){_0x27792f['on']=!![];}if(_0x27792f['on']===!![]){return _0x27792f;}});this[_0xbe14('0x8')]=_[_0xbe14('0xe')](this[_0xbe14('0x8')],['p'],[_0xbe14('0xf')]);};RuleEngine[_0xbe14('0x5')][_0xbe14('0x10')]=function(_0x813399,_0x530538){var _0x55b3a7=![];_0x813399[_0xbe14('0x11')]=!![];var _0x3dc4a9=_[_0xbe14('0x12')](_0x813399);var _0x37ce4e=_['clone'](_0x813399);var _0x21c789=this[_0xbe14('0x8')];var _0xfd7b8f=[];var _0x123ede=this[_0xbe14('0x3')];(function FnRuleLoop(_0x29ab73){var _0x17ae86={'rules':function(){return _0x21c789;},'rule':function(){return _0x21c789[_0x29ab73];},'when':function(_0x5ea1f8){if(_0x5ea1f8){var _0x137ee5=_0x21c789[_0x29ab73][_0xbe14('0x13')];_0x137ee5[_0xbe14('0x14')]=_0x21c789[_0x29ab73]['id']||_0x21c789[_0x29ab73][_0xbe14('0x15')]||_0xbe14('0x16')+_0x29ab73;process[_0xbe14('0x17')](function(){_0xfd7b8f['push'](_0x137ee5[_0xbe14('0x14')]);_0x137ee5[_0xbe14('0x18')](_0x3dc4a9,_0x17ae86);});}else{process[_0xbe14('0x17')](function(){_0x17ae86[_0xbe14('0x19')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x55b3a7=!![];return FnRuleLoop(0x0);},'next':function(_0x188ec4){if(!_0x123ede&&!_['isEqual'](_0x37ce4e,_0x3dc4a9)){_0x37ce4e=_[_0xbe14('0x12')](_0x3dc4a9);process['nextTick'](function(){_0x17ae86[_0xbe14('0x1a')]();});}else{process['nextTick'](function(){if(_[_0xbe14('0x2')](_0x188ec4)){return FnRuleLoop(_0x29ab73+0x1);}else{return FnRuleLoop(_0x188ec4);}});}}};if(_0x29ab73<_0x21c789['length']&&_0x55b3a7===![]){var _0x274018=_0x21c789[_0x29ab73][_0xbe14('0x1b')];_0x274018['call'](_0x3dc4a9,_0x17ae86);}else{process[_0xbe14('0x17')](function(){_0x3dc4a9['matchPath']=_0xfd7b8f;return _0x530538?_0x530538(_0x3dc4a9):_[_0xbe14('0x1c')]();});}}(0x0));};RuleEngine['prototype'][_0xbe14('0x1d')]=function(_0x5fa043){if(_[_0xbe14('0x2')](_0x5fa043)){return this[_0xbe14('0x7')];}else{var _0x15ef02=_[_0xbe14('0x1e')](_0x5fa043);return _['filter'](this[_0xbe14('0x7')],_0x15ef02);}};RuleEngine[_0xbe14('0x5')][_0xbe14('0x1f')]=function(_0x169369,_0x5dd475){var _0x16f884=_0x169369==='on'||_0x169369==='ON'?!![]:![];var _0x29fc64=this['findRules'](_0x5dd475);for(var _0x3c3613=0x0,_0x3b3e84=_0x29fc64[_0xbe14('0x20')];_0x3c3613<_0x3b3e84;_0x3c3613+=0x1){_0x29fc64[_0x3c3613]['on']=_0x16f884;}this[_0xbe14('0xc')]();};RuleEngine[_0xbe14('0x5')][_0xbe14('0x21')]=function(_0x31a664,_0x2b05cb){_0x31a664=parseInt(_0x31a664,0xa);var _0x4168c8=this[_0xbe14('0x1d')](_0x2b05cb);for(var _0x40538f=0x0,_0x3bf43c=_0x4168c8[_0xbe14('0x20')];_0x40538f<_0x3bf43c;_0x40538f+=0x1){_0x4168c8[_0x40538f][_0xbe14('0x22')]=_0x31a664;}this[_0xbe14('0xc')]();};RuleEngine[_0xbe14('0x5')][_0xbe14('0x23')]=function(){var _0x2ff48e=this[_0xbe14('0x7')];if(_0x2ff48e instanceof Array){_0x2ff48e=_0x2ff48e[_0xbe14('0x24')](function(_0x581e86){_0x581e86[_0xbe14('0x1b')]=_0x581e86['condition']['toString']();_0x581e86[_0xbe14('0x13')]=_0x581e86['consequence'][_0xbe14('0x25')]();return _0x581e86;});}else if(!_[_0xbe14('0x2')](_0x2ff48e)){_0x2ff48e['condition']=_0x2ff48e['condition']['toString']();_0x2ff48e[_0xbe14('0x13')]=_0x2ff48e[_0xbe14('0x13')]['toString']();}return _0x2ff48e;};RuleEngine[_0xbe14('0x5')][_0xbe14('0x26')]=function(_0x452635){this[_0xbe14('0x6')]();if(_[_0xbe14('0x27')](_0x452635)){_0x452635=JSON['parse'](_0x452635);}if(_0x452635 instanceof Array){_0x452635=_0x452635['map'](function(_0x15a997){_0x15a997['condition']=eval('('+_0x15a997['condition']+')');_0x15a997['consequence']=eval('('+_0x15a997[_0xbe14('0x13')]+')');return _0x15a997;});}else if(_0x452635!==null&&typeof _0x452635==_0xbe14('0x28')){_0x452635[_0xbe14('0x1b')]=eval('('+_0x452635[_0xbe14('0x1b')]+')');_0x452635[_0xbe14('0x13')]=eval('('+_0x452635[_0xbe14('0x13')]+')');}this[_0xbe14('0x29')](_0x452635);};module[_0xbe14('0x2a')]=RuleEngine;
\ No newline at end of file
index 88dbe54..e497e38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e45=['bluebird','jayson/promise','client','http','request','then','error','message','result','catch','SendMail'];(function(_0x4093ae,_0x144d6e){var _0x31cc32=function(_0x1f84f0){while(--_0x1f84f0){_0x4093ae['push'](_0x4093ae['shift']());}};_0x31cc32(++_0x144d6e);}(_0x8e45,0x13f));var _0x58e4=function(_0x548239,_0x3301e0){_0x548239=_0x548239-0x0;var _0x2fa9b9=_0x8e45[_0x548239];return _0x2fa9b9;};'use strict';var BPromise=require(_0x58e4('0x0'));var jayson=require(_0x58e4('0x1'));var client=jayson[_0x58e4('0x2')][_0x58e4('0x3')]({'port':0x232b});function request(_0xed453c,_0x4eb81c){return new BPromise(function(_0x35db76,_0x57c40f){return client[_0x58e4('0x4')](_0xed453c,_0x4eb81c)[_0x58e4('0x5')](function(_0x1198d4){if(_0x1198d4[_0x58e4('0x6')]){return _0x57c40f(_0x1198d4[_0x58e4('0x6')][_0x58e4('0x7')]);}else{return _0x35db76(_0x1198d4[_0x58e4('0x8')]);}})[_0x58e4('0x9')](function(_0x14afbd){return _0x57c40f(_0x14afbd);});});}exports['sendMailMessage']=function(_0x948722,_0xbcad33){return request(_0x58e4('0xa'),{'account':_0x948722,'message':_0xbcad33});};
\ No newline at end of file
+var _0xf2f9=['http','error','message','result','sendMailMessage','SendMail','bluebird','client'];(function(_0x4e8079,_0x34f064){var _0x3a2069=function(_0x74e2f4){while(--_0x74e2f4){_0x4e8079['push'](_0x4e8079['shift']());}};_0x3a2069(++_0x34f064);}(_0xf2f9,0x86));var _0x9f2f=function(_0x4936fb,_0x10fda9){_0x4936fb=_0x4936fb-0x0;var _0x4430ab=_0xf2f9[_0x4936fb];return _0x4430ab;};'use strict';var BPromise=require(_0x9f2f('0x0'));var jayson=require('jayson/promise');var client=jayson[_0x9f2f('0x1')][_0x9f2f('0x2')]({'port':0x232b});function request(_0x283939,_0x402270){return new BPromise(function(_0x186bcf,_0x177d47){return client['request'](_0x283939,_0x402270)['then'](function(_0x31e236){if(_0x31e236[_0x9f2f('0x3')]){return _0x177d47(_0x31e236[_0x9f2f('0x3')][_0x9f2f('0x4')]);}else{return _0x186bcf(_0x31e236[_0x9f2f('0x5')]);}})['catch'](function(_0x24fd20){return _0x177d47(_0x24fd20);});});}exports[_0x9f2f('0x6')]=function(_0x51c215,_0xac3643){return request(_0x9f2f('0x7'),{'account':_0x51c215,'message':_0xac3643});};
\ No newline at end of file
index 1041b69..b17480f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x180d=['openchannel','fax','whatsapp','length','Status','toNumber','format','mailStatusTime','smsStatus','whatsappStatusTime','busy','user:save','exports','moment','md5','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','mailCapacity','mailCurrentCapacity','faxStatus','unknown','faxStatusTime','faxCurrentCapacity','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busyQueue','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','idle','chat'];(function(_0x3b0731,_0xcf9925){var _0x4204d7=function(_0x635ac5){while(--_0x635ac5){_0x3b0731['push'](_0x3b0731['shift']());}};_0x4204d7(++_0xcf9925);}(_0x180d,0xf9));var _0xd180=function(_0x1f9f37,_0x18776e){_0x1f9f37=_0x1f9f37-0x0;var _0x21c080=_0x180d[_0x1f9f37];return _0x21c080;};'use strict';var _=require('lodash');var moment=require(_0xd180('0x0'));var md5=require(_0xd180('0x1'));var Redis=require(_0xd180('0x2'));var config=require(_0xd180('0x3'));config[_0xd180('0x4')]=_['defaults'](config[_0xd180('0x4')],{'host':_0xd180('0x5'),'port':0x18eb});var io=require(_0xd180('0x6'))(new Redis(config[_0xd180('0x4')]));function Agent(_0x456553){this['id']=_0x456553['id']||0x0;this[_0xd180('0x7')]=_0x456553['name']||'';this['online']=_0x456553[_0xd180('0x8')]||!![];this[_0xd180('0x9')]=_0x456553[_0xd180('0x9')]||![];this[_0xd180('0xa')]=_0x456553[_0xd180('0xa')]||![];this[_0xd180('0xb')]=_0x456553[_0xd180('0xb')]||![];this[_0xd180('0xc')]=_0x456553[_0xd180('0xc')]||![];this[_0xd180('0xd')]=_0x456553[_0xd180('0xd')]||![];this[_0xd180('0xe')]=_0x456553[_0xd180('0xe')]||![];this[_0xd180('0xf')]='unknown';this[_0xd180('0x10')]=0x0;this[_0xd180('0x11')]=_0x456553[_0xd180('0x11')]||0x0;this[_0xd180('0x12')]=0x0;this[_0xd180('0x13')]='unknown';this['mailStatusTime']=0x0;this[_0xd180('0x14')]=_0x456553[_0xd180('0x14')]||0x0;this[_0xd180('0x15')]=0x0;this[_0xd180('0x16')]=_0xd180('0x17');this[_0xd180('0x18')]=0x0;this['faxCapacity']=_0x456553['faxCapacity']||0x0;this[_0xd180('0x19')]=0x0;this['smsStatus']='unknown';this[_0xd180('0x1a')]=0x0;this['smsCapacity']=_0x456553[_0xd180('0x1b')]||0x0;this[_0xd180('0x1c')]=0x0;this[_0xd180('0x1d')]=_0xd180('0x17');this['whatsappStatusTime']=0x0;this[_0xd180('0x1e')]=_0x456553['whatsappCapacity']||0x0;this[_0xd180('0x1f')]=0x0;this[_0xd180('0x20')]=_0xd180('0x17');this[_0xd180('0x21')]=0x0;this[_0xd180('0x22')]=_0x456553[_0xd180('0x22')]||0x0;this[_0xd180('0x23')]=0x0;this['busy']=![];this[_0xd180('0x24')]=undefined;this['md5']='';this[_0xd180('0x25')]();}Agent[_0xd180('0x26')][_0xd180('0x27')]=function(_0x26f4ff){if(this[_0x26f4ff+_0xd180('0x28')]>0x0){if(this[_0x26f4ff+_0xd180('0x29')]>0x0&&this[_0x26f4ff+_0xd180('0x28')]>=this[_0x26f4ff+_0xd180('0x29')]){return _0xd180('0x2a');}else{return _0xd180('0x2b');}}else{return _0xd180('0x2c');}};Agent['prototype'][_0xd180('0x25')]=function(){var _0x258932=['mail',_0xd180('0x2d'),_0xd180('0x2e'),_0xd180('0x2f'),'sms',_0xd180('0x30')];for(var _0x24bae4=0x0;_0x24bae4<_0x258932[_0xd180('0x31')];_0x24bae4+=0x1){var _0x51768e=this[_0xd180('0x27')](_0x258932[_0x24bae4]);if(this[_0x258932[_0x24bae4]+_0xd180('0x32')]!==_0x51768e){this[_0x258932[_0x24bae4]+'StatusTime']=_[_0xd180('0x33')](moment()[_0xd180('0x34')]('x'));}this[_0x258932[_0x24bae4]+_0xd180('0x32')]=_0x51768e;}var _0x1a068e={'id':this['id'],'name':this[_0xd180('0x7')],'online':this[_0xd180('0x8')],'voicePause':this[_0xd180('0x9')],'chatPause':this['chatPause'],'mailPause':this[_0xd180('0xb')],'smsPause':this[_0xd180('0xd')],'faxPause':this[_0xd180('0xc')],'openchannelPause':this[_0xd180('0xe')],'chatStatus':this[_0xd180('0xf')],'chatStatusTime':this[_0xd180('0x10')],'chatCapacity':this[_0xd180('0x11')],'chatCurrentCapacity':this['chatCurrentCapacity'],'mailStatus':this[_0xd180('0x13')],'mailStatusTime':this[_0xd180('0x35')],'mailCapacity':this['mailCapacity'],'mailCurrentCapacity':this['mailCurrentCapacity'],'faxStatus':this[_0xd180('0x16')],'faxStatusTime':this[_0xd180('0x18')],'faxCapacity':this['faxCapacity'],'faxCurrentCapacity':this[_0xd180('0x19')],'smsStatus':this[_0xd180('0x36')],'smsStatusTime':this[_0xd180('0x1a')],'smsCapacity':this[_0xd180('0x1b')],'smsCurrentCapacity':this[_0xd180('0x1c')],'whatsappStatus':this[_0xd180('0x1d')],'whatsappStatusTime':this[_0xd180('0x37')],'whatsappCapacity':this['whatsappCapacity'],'whatsappCurrentCapacity':this['whatsappCurrentCapacity'],'openchannelStatus':this[_0xd180('0x20')],'openchannelStatusTime':this[_0xd180('0x21')],'openchannelCapacity':this[_0xd180('0x22')],'openchannelCurrentCapacity':this[_0xd180('0x23')],'busy':this[_0xd180('0x38')],'busyQueue':this[_0xd180('0x24')]};var _0x4bec06=md5(JSON['stringify'](_0x1a068e));if(this[_0xd180('0x1')]!==_0x4bec06){this[_0xd180('0x1')]=_0x4bec06;io['emit'](_0xd180('0x39'),_0x1a068e);}};module[_0xd180('0x3a')]=Agent;
\ No newline at end of file
+var _0xbab7=['chatStatus','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','mailCapacity','mailCurrentCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatusTime','openchannelCapacity','busy','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','idle','mail','chat','openchannel','fax','sms','length','Status','StatusTime','toNumber','smsCurrentCapacity','openchannelStatus','busyQueue','stringify','emit','user:save','exports','lodash','moment','md5','ioredis','../../../config/environment','redis','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause'];(function(_0x86ba06,_0x2e50d9){var _0xafb44a=function(_0x1dd5cd){while(--_0x1dd5cd){_0x86ba06['push'](_0x86ba06['shift']());}};_0xafb44a(++_0x2e50d9);}(_0xbab7,0x19c));var _0x7bab=function(_0x2a9f2a,_0x307761){_0x2a9f2a=_0x2a9f2a-0x0;var _0x1dfddc=_0xbab7[_0x2a9f2a];return _0x1dfddc;};'use strict';var _=require(_0x7bab('0x0'));var moment=require(_0x7bab('0x1'));var md5=require(_0x7bab('0x2'));var Redis=require(_0x7bab('0x3'));var config=require(_0x7bab('0x4'));config[_0x7bab('0x5')]=_['defaults'](config[_0x7bab('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x7bab('0x6'))(new Redis(config[_0x7bab('0x5')]));function Agent(_0x340f4e){this['id']=_0x340f4e['id']||0x0;this[_0x7bab('0x7')]=_0x340f4e[_0x7bab('0x7')]||'';this[_0x7bab('0x8')]=_0x340f4e[_0x7bab('0x8')]||!![];this['voicePause']=_0x340f4e[_0x7bab('0x9')]||![];this[_0x7bab('0xa')]=_0x340f4e['chatPause']||![];this[_0x7bab('0xb')]=_0x340f4e[_0x7bab('0xb')]||![];this[_0x7bab('0xc')]=_0x340f4e[_0x7bab('0xc')]||![];this[_0x7bab('0xd')]=_0x340f4e[_0x7bab('0xd')]||![];this[_0x7bab('0xe')]=_0x340f4e[_0x7bab('0xe')]||![];this[_0x7bab('0xf')]=_0x7bab('0x10');this[_0x7bab('0x11')]=0x0;this[_0x7bab('0x12')]=_0x340f4e[_0x7bab('0x12')]||0x0;this[_0x7bab('0x13')]=0x0;this[_0x7bab('0x14')]=_0x7bab('0x10');this['mailStatusTime']=0x0;this[_0x7bab('0x15')]=_0x340f4e['mailCapacity']||0x0;this[_0x7bab('0x16')]=0x0;this[_0x7bab('0x17')]=_0x7bab('0x10');this[_0x7bab('0x18')]=0x0;this[_0x7bab('0x19')]=_0x340f4e[_0x7bab('0x19')]||0x0;this[_0x7bab('0x1a')]=0x0;this[_0x7bab('0x1b')]='unknown';this[_0x7bab('0x1c')]=0x0;this[_0x7bab('0x1d')]=_0x340f4e[_0x7bab('0x1d')]||0x0;this['smsCurrentCapacity']=0x0;this[_0x7bab('0x1e')]=_0x7bab('0x10');this[_0x7bab('0x1f')]=0x0;this[_0x7bab('0x20')]=_0x340f4e[_0x7bab('0x20')]||0x0;this[_0x7bab('0x21')]=0x0;this['openchannelStatus']=_0x7bab('0x10');this[_0x7bab('0x22')]=0x0;this[_0x7bab('0x23')]=_0x340f4e[_0x7bab('0x23')]||0x0;this['openchannelCurrentCapacity']=0x0;this[_0x7bab('0x24')]=![];this['busyQueue']=undefined;this['md5']='';this[_0x7bab('0x25')]();}Agent[_0x7bab('0x26')][_0x7bab('0x27')]=function(_0x3a38c2){if(this[_0x3a38c2+_0x7bab('0x28')]>0x0){if(this[_0x3a38c2+_0x7bab('0x29')]>0x0&&this[_0x3a38c2+_0x7bab('0x28')]>=this[_0x3a38c2+_0x7bab('0x29')]){return _0x7bab('0x2a');}else{return _0x7bab('0x2b');}}else{return _0x7bab('0x2c');}};Agent['prototype']['updateRealtime']=function(){var _0x31a8f0=[_0x7bab('0x2d'),_0x7bab('0x2e'),_0x7bab('0x2f'),_0x7bab('0x30'),_0x7bab('0x31'),'whatsapp'];for(var _0x2185b5=0x0;_0x2185b5<_0x31a8f0[_0x7bab('0x32')];_0x2185b5+=0x1){var _0x44acaa=this[_0x7bab('0x27')](_0x31a8f0[_0x2185b5]);if(this[_0x31a8f0[_0x2185b5]+_0x7bab('0x33')]!==_0x44acaa){this[_0x31a8f0[_0x2185b5]+_0x7bab('0x34')]=_[_0x7bab('0x35')](moment()['format']('x'));}this[_0x31a8f0[_0x2185b5]+_0x7bab('0x33')]=_0x44acaa;}var _0x5d8fc2={'id':this['id'],'name':this['name'],'online':this[_0x7bab('0x8')],'voicePause':this[_0x7bab('0x9')],'chatPause':this[_0x7bab('0xa')],'mailPause':this[_0x7bab('0xb')],'smsPause':this['smsPause'],'faxPause':this[_0x7bab('0xc')],'openchannelPause':this['openchannelPause'],'chatStatus':this['chatStatus'],'chatStatusTime':this[_0x7bab('0x11')],'chatCapacity':this[_0x7bab('0x12')],'chatCurrentCapacity':this[_0x7bab('0x13')],'mailStatus':this[_0x7bab('0x14')],'mailStatusTime':this['mailStatusTime'],'mailCapacity':this[_0x7bab('0x15')],'mailCurrentCapacity':this['mailCurrentCapacity'],'faxStatus':this['faxStatus'],'faxStatusTime':this[_0x7bab('0x18')],'faxCapacity':this[_0x7bab('0x19')],'faxCurrentCapacity':this['faxCurrentCapacity'],'smsStatus':this[_0x7bab('0x1b')],'smsStatusTime':this['smsStatusTime'],'smsCapacity':this[_0x7bab('0x1d')],'smsCurrentCapacity':this[_0x7bab('0x36')],'whatsappStatus':this[_0x7bab('0x1e')],'whatsappStatusTime':this[_0x7bab('0x1f')],'whatsappCapacity':this[_0x7bab('0x20')],'whatsappCurrentCapacity':this[_0x7bab('0x21')],'openchannelStatus':this[_0x7bab('0x37')],'openchannelStatusTime':this[_0x7bab('0x22')],'openchannelCapacity':this[_0x7bab('0x23')],'openchannelCurrentCapacity':this['openchannelCurrentCapacity'],'busy':this[_0x7bab('0x24')],'busyQueue':this[_0x7bab('0x38')]};var _0x26465a=md5(JSON[_0x7bab('0x39')](_0x5d8fc2));if(this[_0x7bab('0x2')]!==_0x26465a){this['md5']=_0x26465a;io[_0x7bab('0x3a')](_0x7bab('0x3b'),_0x5d8fc2);}};module[_0x7bab('0x3c')]=Agent;
\ No newline at end of file
index 69243ff..f0979fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19de=['localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRouting','_rr','map','prototype','updateRealtime','loggedIn','length','chatPause','paused','available','waiting','stringify','md5','format','chat:queue:%s','emit','lodash','util','ioredis','../../../config/environment','redis'];(function(_0x3b0dd3,_0x7c3459){var _0x49d713=function(_0x16d8c9){while(--_0x16d8c9){_0x3b0dd3['push'](_0x3b0dd3['shift']());}};_0x49d713(++_0x7c3459);}(_0x19de,0x1e8));var _0xe19d=function(_0x3ab80d,_0x4f4b22){_0x3ab80d=_0x3ab80d-0x0;var _0x1bcf9f=_0x19de[_0x3ab80d];return _0x1bcf9f;};'use strict';var _=require(_0xe19d('0x0'));var md5=require('md5');var util=require(_0xe19d('0x1'));var Redis=require(_0xe19d('0x2'));var config=require(_0xe19d('0x3'));config[_0xe19d('0x4')]=_['defaults'](config[_0xe19d('0x4')],{'host':_0xe19d('0x5'),'port':0x18eb});var io=require(_0xe19d('0x6'))(new Redis(config['redis']));function ChatQueue(_0x42a09f){this['id']=_0x42a09f['id']||0x0;this[_0xe19d('0x7')]=_0x42a09f['name']||'';this[_0xe19d('0x8')]=_0x42a09f[_0xe19d('0x8')]||0xa;this['strategy']=_0x42a09f[_0xe19d('0x9')]||_0xe19d('0xa');this[_0xe19d('0xb')]=_0x42a09f[_0xe19d('0xb')];this[_0xe19d('0xc')]={};this['waiting']=0x0;this['md5']='';this['updateRouting']();this['updateRealtime']();}ChatQueue['prototype'][_0xe19d('0xd')]=function(){var _0xe76c25=this[_0xe19d('0xc')][_0xe19d('0xe')];this[_0xe19d('0xc')]=_[_0xe19d('0xf')](this['Agents'],'id');this[_0xe19d('0xc')][_0xe19d('0xe')]=_0xe76c25;};ChatQueue[_0xe19d('0x10')][_0xe19d('0x11')]=function(){this[_0xe19d('0x12')]=0x0;this['paused']=0x0;for(var _0x1fbe0d=0x0;_0x1fbe0d<this['Agents'][_0xe19d('0x13')];_0x1fbe0d+=0x1){if(this[_0xe19d('0xb')][_0x1fbe0d]['online']){this[_0xe19d('0x12')]+=0x1;}if(this[_0xe19d('0xb')][_0x1fbe0d][_0xe19d('0x14')]){this[_0xe19d('0x15')]+=0x1;}}this[_0xe19d('0x16')]=this[_0xe19d('0x12')]-this[_0xe19d('0x15')];this['available']=this[_0xe19d('0x16')]>=0x0?this[_0xe19d('0x16')]:0x0;var _0x229bfb={'id':this['id'],'available':this[_0xe19d('0x16')],'loggedIn':this[_0xe19d('0x12')],'name':this[_0xe19d('0x7')],'paused':this[_0xe19d('0x15')],'waiting':this[_0xe19d('0x17')]};var _0x143c66=md5(JSON[_0xe19d('0x18')](_0x229bfb));if(this[_0xe19d('0x19')]!==_0x143c66){this[_0xe19d('0x19')]=_0x143c66;io['to'](util[_0xe19d('0x1a')](_0xe19d('0x1b'),_0x229bfb[_0xe19d('0x7')]))[_0xe19d('0x1c')]('chat_queue:save',_0x229bfb);}};module['exports']=ChatQueue;
\ No newline at end of file
+var _0x9cde=['defaults','redis','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','length','online','chatPause','available','stringify','format','chat:queue:%s','emit','exports','md5','util','ioredis','../../../config/environment'];(function(_0xc5bb7f,_0x336c16){var _0x5ed8f7=function(_0x6c77bf){while(--_0x6c77bf){_0xc5bb7f['push'](_0xc5bb7f['shift']());}};_0x5ed8f7(++_0x336c16);}(_0x9cde,0x74));var _0xe9cd=function(_0x16e9b5,_0x192142){_0x16e9b5=_0x16e9b5-0x0;var _0x206df0=_0x9cde[_0x16e9b5];return _0x206df0;};'use strict';var _=require('lodash');var md5=require(_0xe9cd('0x0'));var util=require(_0xe9cd('0x1'));var Redis=require(_0xe9cd('0x2'));var config=require(_0xe9cd('0x3'));config['redis']=_[_0xe9cd('0x4')](config[_0xe9cd('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0xe9cd('0x6'))(new Redis(config[_0xe9cd('0x5')]));function ChatQueue(_0x107066){this['id']=_0x107066['id']||0x0;this[_0xe9cd('0x7')]=_0x107066['name']||'';this['timeout']=_0x107066[_0xe9cd('0x8')]||0xa;this[_0xe9cd('0x9')]=_0x107066['strategy']||_0xe9cd('0xa');this[_0xe9cd('0xb')]=_0x107066[_0xe9cd('0xb')];this[_0xe9cd('0xc')]={};this[_0xe9cd('0xd')]=0x0;this[_0xe9cd('0x0')]='';this[_0xe9cd('0xe')]();this[_0xe9cd('0xf')]();}ChatQueue[_0xe9cd('0x10')][_0xe9cd('0xe')]=function(){var _0x974d06=this[_0xe9cd('0xc')][_0xe9cd('0x11')];this['mapAgentsId']=_[_0xe9cd('0x12')](this[_0xe9cd('0xb')],'id');this[_0xe9cd('0xc')][_0xe9cd('0x11')]=_0x974d06;};ChatQueue[_0xe9cd('0x10')][_0xe9cd('0xf')]=function(){this[_0xe9cd('0x13')]=0x0;this[_0xe9cd('0x14')]=0x0;for(var _0x4ea75b=0x0;_0x4ea75b<this[_0xe9cd('0xb')][_0xe9cd('0x15')];_0x4ea75b+=0x1){if(this[_0xe9cd('0xb')][_0x4ea75b][_0xe9cd('0x16')]){this[_0xe9cd('0x13')]+=0x1;}if(this[_0xe9cd('0xb')][_0x4ea75b][_0xe9cd('0x17')]){this[_0xe9cd('0x14')]+=0x1;}}this[_0xe9cd('0x18')]=this['loggedIn']-this[_0xe9cd('0x14')];this['available']=this[_0xe9cd('0x18')]>=0x0?this[_0xe9cd('0x18')]:0x0;var _0x134bf2={'id':this['id'],'available':this[_0xe9cd('0x18')],'loggedIn':this[_0xe9cd('0x13')],'name':this['name'],'paused':this[_0xe9cd('0x14')],'waiting':this[_0xe9cd('0xd')]};var _0x3070da=md5(JSON[_0xe9cd('0x19')](_0x134bf2));if(this[_0xe9cd('0x0')]!==_0x3070da){this['md5']=_0x3070da;io['to'](util[_0xe9cd('0x1a')](_0xe9cd('0x1b'),_0x134bf2[_0xe9cd('0x7')]))[_0xe9cd('0x1c')]('chat_queue:save',_0x134bf2);}};module[_0xe9cd('0x1d')]=ChatQueue;
\ No newline at end of file
index 5674013..e42c6d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f02=['mapAgentsId','waiting','updateRouting','updateRealtime','prototype','map','_rr','loggedIn','paused','online','faxPause','available','stringify','fax:queue:%s','emit','exports','lodash','md5','util','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents'];(function(_0x5532ac,_0x3add1e){var _0x10ca72=function(_0x5f5d61){while(--_0x5f5d61){_0x5532ac['push'](_0x5532ac['shift']());}};_0x10ca72(++_0x3add1e);}(_0x5f02,0x16c));var _0x25f0=function(_0x4a934c,_0x4dfb5b){_0x4a934c=_0x4a934c-0x0;var _0x50cb10=_0x5f02[_0x4a934c];return _0x50cb10;};'use strict';var _=require(_0x25f0('0x0'));var md5=require(_0x25f0('0x1'));var util=require(_0x25f0('0x2'));var Redis=require(_0x25f0('0x3'));var config=require(_0x25f0('0x4'));config[_0x25f0('0x5')]=_['defaults'](config[_0x25f0('0x5')],{'host':_0x25f0('0x6'),'port':0x18eb});var io=require(_0x25f0('0x7'))(new Redis(config[_0x25f0('0x5')]));function FaxQueue(_0x9cde14){this['id']=_0x9cde14['id']||0x0;this[_0x25f0('0x8')]=_0x9cde14[_0x25f0('0x8')]||'';this[_0x25f0('0x9')]=_0x9cde14[_0x25f0('0x9')]||0xa;this['strategy']=_0x9cde14[_0x25f0('0xa')]||_0x25f0('0xb');this[_0x25f0('0xc')]=_0x9cde14[_0x25f0('0xc')];this[_0x25f0('0xd')]={};this[_0x25f0('0xe')]=0x0;this[_0x25f0('0x1')]='';this[_0x25f0('0xf')]();this[_0x25f0('0x10')]();}FaxQueue[_0x25f0('0x11')]['updateRouting']=function(){var _0x27e065=this[_0x25f0('0xd')]['_rr'];this[_0x25f0('0xd')]=_[_0x25f0('0x12')](this[_0x25f0('0xc')],'id');this[_0x25f0('0xd')][_0x25f0('0x13')]=_0x27e065;};FaxQueue[_0x25f0('0x11')][_0x25f0('0x10')]=function(){this[_0x25f0('0x14')]=0x0;this[_0x25f0('0x15')]=0x0;for(var _0x2f2277=0x0;_0x2f2277<this['Agents']['length'];_0x2f2277+=0x1){if(this['Agents'][_0x2f2277][_0x25f0('0x16')]){this['loggedIn']+=0x1;}if(this['Agents'][_0x2f2277][_0x25f0('0x17')]){this[_0x25f0('0x15')]+=0x1;}}this[_0x25f0('0x18')]=this['loggedIn']-this[_0x25f0('0x15')];this[_0x25f0('0x18')]=this[_0x25f0('0x18')]>=0x0?this[_0x25f0('0x18')]:0x0;var _0x44d54c={'id':this['id'],'available':this[_0x25f0('0x18')],'loggedIn':this[_0x25f0('0x14')],'name':this[_0x25f0('0x8')],'paused':this[_0x25f0('0x15')],'waiting':this[_0x25f0('0xe')]};var _0x2c845d=md5(JSON[_0x25f0('0x19')](_0x44d54c));if(this[_0x25f0('0x1')]!==_0x2c845d){this['md5']=_0x2c845d;io['to'](util['format'](_0x25f0('0x1a'),_0x44d54c['name']))[_0x25f0('0x1b')]('fax_queue:save',_0x44d54c);}};module[_0x25f0('0x1c')]=FaxQueue;
\ No newline at end of file
+var _0x1c76=['Agents','mapAgentsId','waiting','updateRealtime','prototype','updateRouting','_rr','map','loggedIn','online','faxPause','paused','available','stringify','format','fax:queue:%s','emit','fax_queue:save','lodash','md5','util','redis','socket.io-emitter','name','timeout','strategy','beepall'];(function(_0xf1162c,_0x5061e8){var _0x273413=function(_0x25bdd9){while(--_0x25bdd9){_0xf1162c['push'](_0xf1162c['shift']());}};_0x273413(++_0x5061e8);}(_0x1c76,0x13b));var _0x61c7=function(_0x1b84ec,_0x389f6f){_0x1b84ec=_0x1b84ec-0x0;var _0x53a9f6=_0x1c76[_0x1b84ec];return _0x53a9f6;};'use strict';var _=require(_0x61c7('0x0'));var md5=require(_0x61c7('0x1'));var util=require(_0x61c7('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');config[_0x61c7('0x3')]=_['defaults'](config[_0x61c7('0x3')],{'host':'localhost','port':0x18eb});var io=require(_0x61c7('0x4'))(new Redis(config[_0x61c7('0x3')]));function FaxQueue(_0x5153ae){this['id']=_0x5153ae['id']||0x0;this[_0x61c7('0x5')]=_0x5153ae[_0x61c7('0x5')]||'';this[_0x61c7('0x6')]=_0x5153ae['timeout']||0xa;this[_0x61c7('0x7')]=_0x5153ae[_0x61c7('0x7')]||_0x61c7('0x8');this[_0x61c7('0x9')]=_0x5153ae['Agents'];this[_0x61c7('0xa')]={};this[_0x61c7('0xb')]=0x0;this[_0x61c7('0x1')]='';this['updateRouting']();this[_0x61c7('0xc')]();}FaxQueue[_0x61c7('0xd')][_0x61c7('0xe')]=function(){var _0x163f10=this[_0x61c7('0xa')][_0x61c7('0xf')];this['mapAgentsId']=_[_0x61c7('0x10')](this[_0x61c7('0x9')],'id');this['mapAgentsId'][_0x61c7('0xf')]=_0x163f10;};FaxQueue[_0x61c7('0xd')][_0x61c7('0xc')]=function(){this[_0x61c7('0x11')]=0x0;this['paused']=0x0;for(var _0x268b7c=0x0;_0x268b7c<this[_0x61c7('0x9')]['length'];_0x268b7c+=0x1){if(this[_0x61c7('0x9')][_0x268b7c][_0x61c7('0x12')]){this[_0x61c7('0x11')]+=0x1;}if(this['Agents'][_0x268b7c][_0x61c7('0x13')]){this[_0x61c7('0x14')]+=0x1;}}this[_0x61c7('0x15')]=this['loggedIn']-this[_0x61c7('0x14')];this[_0x61c7('0x15')]=this[_0x61c7('0x15')]>=0x0?this[_0x61c7('0x15')]:0x0;var _0x18ab88={'id':this['id'],'available':this['available'],'loggedIn':this[_0x61c7('0x11')],'name':this[_0x61c7('0x5')],'paused':this['paused'],'waiting':this[_0x61c7('0xb')]};var _0x94168e=md5(JSON[_0x61c7('0x16')](_0x18ab88));if(this['md5']!==_0x94168e){this['md5']=_0x94168e;io['to'](util[_0x61c7('0x17')](_0x61c7('0x18'),_0x18ab88[_0x61c7('0x5')]))[_0x61c7('0x19')](_0x61c7('0x1a'),_0x18ab88);}};module['exports']=FaxQueue;
\ No newline at end of file
index 1f077cd..6c5ebf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ab1=['exports','name'];(function(_0x381366,_0x598c67){var _0x5c8017=function(_0x9221be){while(--_0x9221be){_0x381366['push'](_0x381366['shift']());}};_0x5c8017(++_0x598c67);}(_0x3ab1,0x103));var _0x13ab=function(_0x67b541,_0xfcb6a2){_0x67b541=_0x67b541-0x0;var _0x59409d=_0x3ab1[_0x67b541];return _0x59409d;};'use strict';function Interval(_0x12ed65){this['id']=_0x12ed65['id']||0x0;this[_0x13ab('0x0')]=_0x12ed65[_0x13ab('0x0')]||'';this['Intervals']=_0x12ed65['Intervals']||{};}module[_0x13ab('0x1')]=Interval;
\ No newline at end of file
+var _0xff7a=['name','Intervals','exports'];(function(_0x688f05,_0x2d5ff1){var _0x148900=function(_0x36a664){while(--_0x36a664){_0x688f05['push'](_0x688f05['shift']());}};_0x148900(++_0x2d5ff1);}(_0xff7a,0x72));var _0xaff7=function(_0x1d21e6,_0x316ec4){_0x1d21e6=_0x1d21e6-0x0;var _0x27346b=_0xff7a[_0x1d21e6];return _0x27346b;};'use strict';function Interval(_0x554c74){this['id']=_0x554c74['id']||0x0;this[_0xaff7('0x0')]=_0x554c74[_0xaff7('0x0')]||'';this[_0xaff7('0x1')]=_0x554c74[_0xaff7('0x1')]||{};}module[_0xaff7('0x2')]=Interval;
\ No newline at end of file
index 5f385de..126bc3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73ff=['length','mailPause','available','stringify','md5','format','mail:queue:%s','emit','mail_queue:save','exports','lodash','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRealtime','updateRouting','map','prototype','loggedIn','paused'];(function(_0x3848b8,_0x2bb0b9){var _0x43bc25=function(_0x4db7a7){while(--_0x4db7a7){_0x3848b8['push'](_0x3848b8['shift']());}};_0x43bc25(++_0x2bb0b9);}(_0x73ff,0x102));var _0xf73f=function(_0x51e74f,_0x17178c){_0x51e74f=_0x51e74f-0x0;var _0x5ad325=_0x73ff[_0x51e74f];return _0x5ad325;};'use strict';var _=require(_0xf73f('0x0'));var md5=require('md5');var util=require(_0xf73f('0x1'));var Redis=require(_0xf73f('0x2'));var config=require(_0xf73f('0x3'));config[_0xf73f('0x4')]=_[_0xf73f('0x5')](config['redis'],{'host':_0xf73f('0x6'),'port':0x18eb});var io=require(_0xf73f('0x7'))(new Redis(config[_0xf73f('0x4')]));function MailQueue(_0x5bd80b){this['id']=_0x5bd80b['id']||0x0;this['name']=_0x5bd80b[_0xf73f('0x8')]||'';this['timeout']=_0x5bd80b[_0xf73f('0x9')]||0xa;this[_0xf73f('0xa')]=_0x5bd80b[_0xf73f('0xa')]||_0xf73f('0xb');this[_0xf73f('0xc')]=_0x5bd80b[_0xf73f('0xc')];this[_0xf73f('0xd')]={};this[_0xf73f('0xe')]=0x0;this['md5']='';this['updateRouting']();this[_0xf73f('0xf')]();}MailQueue['prototype'][_0xf73f('0x10')]=function(){var _0x479c59=this[_0xf73f('0xd')]['_rr'];this[_0xf73f('0xd')]=_[_0xf73f('0x11')](this[_0xf73f('0xc')],'id');this[_0xf73f('0xd')]['_rr']=_0x479c59;};MailQueue[_0xf73f('0x12')][_0xf73f('0xf')]=function(){this[_0xf73f('0x13')]=0x0;this[_0xf73f('0x14')]=0x0;for(var _0x2fa3ea=0x0;_0x2fa3ea<this[_0xf73f('0xc')][_0xf73f('0x15')];_0x2fa3ea+=0x1){if(this['Agents'][_0x2fa3ea]['online']){this[_0xf73f('0x13')]+=0x1;}if(this[_0xf73f('0xc')][_0x2fa3ea][_0xf73f('0x16')]){this[_0xf73f('0x14')]+=0x1;}}this[_0xf73f('0x17')]=this['loggedIn']-this['paused'];this[_0xf73f('0x17')]=this[_0xf73f('0x17')]>=0x0?this[_0xf73f('0x17')]:0x0;var _0x763550={'id':this['id'],'available':this['available'],'loggedIn':this[_0xf73f('0x13')],'name':this[_0xf73f('0x8')],'paused':this['paused'],'waiting':this[_0xf73f('0xe')]};var _0x1b4320=md5(JSON[_0xf73f('0x18')](_0x763550));if(this['md5']!==_0x1b4320){this[_0xf73f('0x19')]=_0x1b4320;io['to'](util[_0xf73f('0x1a')](_0xf73f('0x1b'),_0x763550[_0xf73f('0x8')]))[_0xf73f('0x1c')](_0xf73f('0x1d'),_0x763550);}};module[_0xf73f('0x1e')]=MailQueue;
\ No newline at end of file
+var _0x5c05=['exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','map','_rr','loggedIn','paused','online','available','stringify','emit','mail_queue:save'];(function(_0x381362,_0x198642){var _0x233327=function(_0x30309f){while(--_0x30309f){_0x381362['push'](_0x381362['shift']());}};_0x233327(++_0x198642);}(_0x5c05,0x135));var _0x55c0=function(_0x4e72e8,_0x201b63){_0x4e72e8=_0x4e72e8-0x0;var _0xbbd405=_0x5c05[_0x4e72e8];return _0xbbd405;};'use strict';var _=require(_0x55c0('0x0'));var md5=require(_0x55c0('0x1'));var util=require(_0x55c0('0x2'));var Redis=require(_0x55c0('0x3'));var config=require(_0x55c0('0x4'));config[_0x55c0('0x5')]=_[_0x55c0('0x6')](config[_0x55c0('0x5')],{'host':_0x55c0('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x55c0('0x5')]));function MailQueue(_0x16c93f){this['id']=_0x16c93f['id']||0x0;this[_0x55c0('0x8')]=_0x16c93f[_0x55c0('0x8')]||'';this[_0x55c0('0x9')]=_0x16c93f[_0x55c0('0x9')]||0xa;this[_0x55c0('0xa')]=_0x16c93f['strategy']||_0x55c0('0xb');this[_0x55c0('0xc')]=_0x16c93f[_0x55c0('0xc')];this[_0x55c0('0xd')]={};this[_0x55c0('0xe')]=0x0;this[_0x55c0('0x1')]='';this[_0x55c0('0xf')]();this[_0x55c0('0x10')]();}MailQueue[_0x55c0('0x11')][_0x55c0('0xf')]=function(){var _0x37ddad=this[_0x55c0('0xd')]['_rr'];this[_0x55c0('0xd')]=_[_0x55c0('0x12')](this[_0x55c0('0xc')],'id');this['mapAgentsId'][_0x55c0('0x13')]=_0x37ddad;};MailQueue['prototype'][_0x55c0('0x10')]=function(){this[_0x55c0('0x14')]=0x0;this[_0x55c0('0x15')]=0x0;for(var _0xc69036=0x0;_0xc69036<this['Agents']['length'];_0xc69036+=0x1){if(this[_0x55c0('0xc')][_0xc69036][_0x55c0('0x16')]){this[_0x55c0('0x14')]+=0x1;}if(this['Agents'][_0xc69036]['mailPause']){this[_0x55c0('0x15')]+=0x1;}}this[_0x55c0('0x17')]=this[_0x55c0('0x14')]-this[_0x55c0('0x15')];this[_0x55c0('0x17')]=this['available']>=0x0?this[_0x55c0('0x17')]:0x0;var _0x3db0e6={'id':this['id'],'available':this[_0x55c0('0x17')],'loggedIn':this[_0x55c0('0x14')],'name':this[_0x55c0('0x8')],'paused':this[_0x55c0('0x15')],'waiting':this['waiting']};var _0x2c877d=md5(JSON[_0x55c0('0x18')](_0x3db0e6));if(this[_0x55c0('0x1')]!==_0x2c877d){this[_0x55c0('0x1')]=_0x2c877d;io['to'](util['format']('mail:queue:%s',_0x3db0e6[_0x55c0('0x8')]))[_0x55c0('0x19')](_0x55c0('0x1a'),_0x3db0e6);}};module[_0x55c0('0x1b')]=MailQueue;
\ No newline at end of file
index 75c8d32..75f5f46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['prototype','map','_rr','loggedIn','paused','length','online','openchannelPause','available','format','openchannel_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime'];(function(_0x7d8817,_0x5e193c){var _0x93a4e3=function(_0x31dce5){while(--_0x31dce5){_0x7d8817['push'](_0x7d8817['shift']());}};_0x93a4e3(++_0x5e193c);}(_0x814b,0x1a2));var _0xb814=function(_0x11ba46,_0x1d6752){_0x11ba46=_0x11ba46-0x0;var _0x1c8c6f=_0x814b[_0x11ba46];return _0x1c8c6f;};'use strict';var _=require(_0xb814('0x0'));var md5=require(_0xb814('0x1'));var util=require(_0xb814('0x2'));var Redis=require(_0xb814('0x3'));var config=require(_0xb814('0x4'));config[_0xb814('0x5')]=_['defaults'](config[_0xb814('0x5')],{'host':_0xb814('0x6'),'port':0x18eb});var io=require(_0xb814('0x7'))(new Redis(config[_0xb814('0x5')]));function OpenchannelQueue(_0x44931c){this['id']=_0x44931c['id']||0x0;this[_0xb814('0x8')]=_0x44931c['name']||'';this[_0xb814('0x9')]=_0x44931c[_0xb814('0x9')]||0xa;this['strategy']=_0x44931c[_0xb814('0xa')]||_0xb814('0xb');this[_0xb814('0xc')]=_0x44931c[_0xb814('0xc')];this[_0xb814('0xd')]={};this[_0xb814('0xe')]=0x0;this[_0xb814('0x1')]='';this[_0xb814('0xf')]();this[_0xb814('0x10')]();}OpenchannelQueue[_0xb814('0x11')][_0xb814('0xf')]=function(){var _0x4b5f14=this[_0xb814('0xd')]['_rr'];this[_0xb814('0xd')]=_[_0xb814('0x12')](this[_0xb814('0xc')],'id');this[_0xb814('0xd')][_0xb814('0x13')]=_0x4b5f14;};OpenchannelQueue[_0xb814('0x11')][_0xb814('0x10')]=function(){this[_0xb814('0x14')]=0x0;this[_0xb814('0x15')]=0x0;for(var _0x2ab627=0x0;_0x2ab627<this[_0xb814('0xc')][_0xb814('0x16')];_0x2ab627+=0x1){if(this[_0xb814('0xc')][_0x2ab627][_0xb814('0x17')]){this[_0xb814('0x14')]+=0x1;}if(this[_0xb814('0xc')][_0x2ab627][_0xb814('0x18')]){this[_0xb814('0x15')]+=0x1;}}this[_0xb814('0x19')]=this[_0xb814('0x14')]-this[_0xb814('0x15')];this['available']=this[_0xb814('0x19')]>=0x0?this['available']:0x0;var _0x270598={'id':this['id'],'available':this[_0xb814('0x19')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this['paused'],'waiting':this[_0xb814('0xe')]};var _0x4d5276=md5(JSON['stringify'](_0x270598));if(this[_0xb814('0x1')]!==_0x4d5276){this[_0xb814('0x1')]=_0x4d5276;io['to'](util[_0xb814('0x1a')]('openchannel:queue:%s',_0x270598[_0xb814('0x8')]))['emit'](_0xb814('0x1b'),_0x270598);}};module[_0xb814('0x1c')]=OpenchannelQueue;
\ No newline at end of file
+var _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(_0x37e9fe,_0x4cfad2){var _0x405167=function(_0x86fa36){while(--_0x86fa36){_0x37e9fe['push'](_0x37e9fe['shift']());}};_0x405167(++_0x4cfad2);}(_0x5fc3,0xa8));var _0x35fc=function(_0x160248,_0x2a57e6){_0x160248=_0x160248-0x0;var _0x4e589d=_0x5fc3[_0x160248];return _0x4e589d;};'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
index b84755e..57b6c5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cfa=['timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','_rr','map','prototype','loggedIn','length','online','smsPause','paused','available','format','sms:queue:%s','emit','sms_queue:save','exports','lodash','md5','util','ioredis','redis','socket.io-emitter','name'];(function(_0x47b08d,_0xe365ad){var _0x581e9e=function(_0xe0be9a){while(--_0xe0be9a){_0x47b08d['push'](_0x47b08d['shift']());}};_0x581e9e(++_0xe365ad);}(_0x0cfa,0x18f));var _0xa0cf=function(_0x2c15b7,_0x152a03){_0x2c15b7=_0x2c15b7-0x0;var _0x19eccc=_0x0cfa[_0x2c15b7];return _0x19eccc;};'use strict';var _=require(_0xa0cf('0x0'));var md5=require(_0xa0cf('0x1'));var util=require(_0xa0cf('0x2'));var Redis=require(_0xa0cf('0x3'));var config=require('../../../config/environment');config['redis']=_['defaults'](config[_0xa0cf('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0xa0cf('0x5'))(new Redis(config[_0xa0cf('0x4')]));function SmsQueue(_0x19f827){this['id']=_0x19f827['id']||0x0;this[_0xa0cf('0x6')]=_0x19f827['name']||'';this[_0xa0cf('0x7')]=_0x19f827['timeout']||0xa;this[_0xa0cf('0x8')]=_0x19f827['strategy']||_0xa0cf('0x9');this['Agents']=_0x19f827[_0xa0cf('0xa')];this[_0xa0cf('0xb')]={};this[_0xa0cf('0xc')]=0x0;this['md5']='';this[_0xa0cf('0xd')]();this[_0xa0cf('0xe')]();}SmsQueue['prototype']['updateRouting']=function(){var _0xe98d2a=this[_0xa0cf('0xb')][_0xa0cf('0xf')];this['mapAgentsId']=_[_0xa0cf('0x10')](this[_0xa0cf('0xa')],'id');this[_0xa0cf('0xb')][_0xa0cf('0xf')]=_0xe98d2a;};SmsQueue[_0xa0cf('0x11')][_0xa0cf('0xe')]=function(){this[_0xa0cf('0x12')]=0x0;this['paused']=0x0;for(var _0x560c9b=0x0;_0x560c9b<this[_0xa0cf('0xa')][_0xa0cf('0x13')];_0x560c9b+=0x1){if(this['Agents'][_0x560c9b][_0xa0cf('0x14')]){this[_0xa0cf('0x12')]+=0x1;}if(this[_0xa0cf('0xa')][_0x560c9b][_0xa0cf('0x15')]){this[_0xa0cf('0x16')]+=0x1;}}this['available']=this[_0xa0cf('0x12')]-this[_0xa0cf('0x16')];this['available']=this[_0xa0cf('0x17')]>=0x0?this[_0xa0cf('0x17')]:0x0;var _0x53a186={'id':this['id'],'available':this[_0xa0cf('0x17')],'loggedIn':this[_0xa0cf('0x12')],'name':this[_0xa0cf('0x6')],'paused':this[_0xa0cf('0x16')],'waiting':this[_0xa0cf('0xc')]};var _0x8bb2ab=md5(JSON['stringify'](_0x53a186));if(this[_0xa0cf('0x1')]!==_0x8bb2ab){this[_0xa0cf('0x1')]=_0x8bb2ab;io['to'](util[_0xa0cf('0x18')](_0xa0cf('0x19'),_0x53a186[_0xa0cf('0x6')]))[_0xa0cf('0x1a')](_0xa0cf('0x1b'),_0x53a186);}};module[_0xa0cf('0x1c')]=SmsQueue;
\ No newline at end of file
+var _0xc5ba=['available','format','emit','sms_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','map','_rr','loggedIn','paused','length','online','smsPause'];(function(_0x2a8943,_0x26da42){var _0x30fd51=function(_0x5a1c79){while(--_0x5a1c79){_0x2a8943['push'](_0x2a8943['shift']());}};_0x30fd51(++_0x26da42);}(_0xc5ba,0xb9));var _0xac5b=function(_0x5bc75a,_0x38ce5c){_0x5bc75a=_0x5bc75a-0x0;var _0x51abb3=_0xc5ba[_0x5bc75a];return _0x51abb3;};'use strict';var _=require(_0xac5b('0x0'));var md5=require(_0xac5b('0x1'));var util=require(_0xac5b('0x2'));var Redis=require(_0xac5b('0x3'));var config=require(_0xac5b('0x4'));config[_0xac5b('0x5')]=_[_0xac5b('0x6')](config[_0xac5b('0x5')],{'host':_0xac5b('0x7'),'port':0x18eb});var io=require(_0xac5b('0x8'))(new Redis(config[_0xac5b('0x5')]));function SmsQueue(_0x555fc){this['id']=_0x555fc['id']||0x0;this[_0xac5b('0x9')]=_0x555fc[_0xac5b('0x9')]||'';this[_0xac5b('0xa')]=_0x555fc[_0xac5b('0xa')]||0xa;this[_0xac5b('0xb')]=_0x555fc['strategy']||'beepall';this[_0xac5b('0xc')]=_0x555fc['Agents'];this[_0xac5b('0xd')]={};this[_0xac5b('0xe')]=0x0;this[_0xac5b('0x1')]='';this[_0xac5b('0xf')]();this[_0xac5b('0x10')]();}SmsQueue[_0xac5b('0x11')][_0xac5b('0xf')]=function(){var _0x2b37dd=this[_0xac5b('0xd')]['_rr'];this[_0xac5b('0xd')]=_[_0xac5b('0x12')](this[_0xac5b('0xc')],'id');this[_0xac5b('0xd')][_0xac5b('0x13')]=_0x2b37dd;};SmsQueue[_0xac5b('0x11')][_0xac5b('0x10')]=function(){this[_0xac5b('0x14')]=0x0;this[_0xac5b('0x15')]=0x0;for(var _0x58dc98=0x0;_0x58dc98<this[_0xac5b('0xc')][_0xac5b('0x16')];_0x58dc98+=0x1){if(this['Agents'][_0x58dc98][_0xac5b('0x17')]){this[_0xac5b('0x14')]+=0x1;}if(this[_0xac5b('0xc')][_0x58dc98][_0xac5b('0x18')]){this[_0xac5b('0x15')]+=0x1;}}this[_0xac5b('0x19')]=this[_0xac5b('0x14')]-this[_0xac5b('0x15')];this[_0xac5b('0x19')]=this[_0xac5b('0x19')]>=0x0?this[_0xac5b('0x19')]:0x0;var _0x551ccf={'id':this['id'],'available':this[_0xac5b('0x19')],'loggedIn':this['loggedIn'],'name':this[_0xac5b('0x9')],'paused':this['paused'],'waiting':this[_0xac5b('0xe')]};var _0x2ec29f=md5(JSON['stringify'](_0x551ccf));if(this['md5']!==_0x2ec29f){this['md5']=_0x2ec29f;io['to'](util[_0xac5b('0x1a')]('sms:queue:%s',_0x551ccf[_0xac5b('0x9')]))[_0xac5b('0x1b')](_0xac5b('0x1c'),_0x551ccf);}};module[_0xac5b('0x1d')]=SmsQueue;
\ No newline at end of file
index f46abea..f4ba90f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00fb=['localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRouting','updateRealtime','prototype','map','_rr','loggedIn','online','whatsappPause','paused','available','stringify','format','emit','whatsapp_queue:save','exports','lodash','md5','ioredis','../../../config/environment','redis','defaults'];(function(_0x213bae,_0x489f98){var _0x5fad00=function(_0x52c5cf){while(--_0x52c5cf){_0x213bae['push'](_0x213bae['shift']());}};_0x5fad00(++_0x489f98);}(_0x00fb,0x1ca));var _0xb00f=function(_0x1a8b3e,_0x3f3507){_0x1a8b3e=_0x1a8b3e-0x0;var _0x3efeec=_0x00fb[_0x1a8b3e];return _0x3efeec;};'use strict';var _=require(_0xb00f('0x0'));var md5=require(_0xb00f('0x1'));var util=require('util');var Redis=require(_0xb00f('0x2'));var config=require(_0xb00f('0x3'));config[_0xb00f('0x4')]=_[_0xb00f('0x5')](config['redis'],{'host':_0xb00f('0x6'),'port':0x18eb});var io=require(_0xb00f('0x7'))(new Redis(config['redis']));function WhatsappQueue(_0x24b36e){this['id']=_0x24b36e['id']||0x0;this['name']=_0x24b36e[_0xb00f('0x8')]||'';this[_0xb00f('0x9')]=_0x24b36e['timeout']||0xa;this[_0xb00f('0xa')]=_0x24b36e[_0xb00f('0xa')]||_0xb00f('0xb');this['Agents']=_0x24b36e[_0xb00f('0xc')];this[_0xb00f('0xd')]={};this['waiting']=0x0;this['md5']='';this[_0xb00f('0xe')]();this[_0xb00f('0xf')]();}WhatsappQueue[_0xb00f('0x10')][_0xb00f('0xe')]=function(){var _0x3a8a08=this[_0xb00f('0xd')]['_rr'];this[_0xb00f('0xd')]=_[_0xb00f('0x11')](this['Agents'],'id');this['mapAgentsId'][_0xb00f('0x12')]=_0x3a8a08;};WhatsappQueue[_0xb00f('0x10')]['updateRealtime']=function(){this[_0xb00f('0x13')]=0x0;this['paused']=0x0;for(var _0x2e6343=0x0;_0x2e6343<this[_0xb00f('0xc')]['length'];_0x2e6343+=0x1){if(this[_0xb00f('0xc')][_0x2e6343][_0xb00f('0x14')]){this['loggedIn']+=0x1;}if(this[_0xb00f('0xc')][_0x2e6343][_0xb00f('0x15')]){this[_0xb00f('0x16')]+=0x1;}}this[_0xb00f('0x17')]=this['loggedIn']-this[_0xb00f('0x16')];this[_0xb00f('0x17')]=this['available']>=0x0?this['available']:0x0;var _0x46f4aa={'id':this['id'],'available':this[_0xb00f('0x17')],'loggedIn':this[_0xb00f('0x13')],'name':this[_0xb00f('0x8')],'paused':this[_0xb00f('0x16')],'waiting':this['waiting']};var _0x1897dc=md5(JSON[_0xb00f('0x18')](_0x46f4aa));if(this[_0xb00f('0x1')]!==_0x1897dc){this['md5']=_0x1897dc;io['to'](util[_0xb00f('0x19')]('whatsapp:queue:%s',_0x46f4aa['name']))[_0xb00f('0x1a')](_0xb00f('0x1b'),_0x46f4aa);}};module[_0xb00f('0x1c')]=WhatsappQueue;
\ No newline at end of file
+var _0x20c6=['socket.io-emitter','name','timeout','strategy','beepall','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','length','Agents','whatsappPause','available','stringify','md5','whatsapp:queue:%s','emit','whatsapp_queue:save','exports','util','ioredis','../../../config/environment','defaults','redis'];(function(_0x243da0,_0x2e01d8){var _0x5473ea=function(_0x38e449){while(--_0x38e449){_0x243da0['push'](_0x243da0['shift']());}};_0x5473ea(++_0x2e01d8);}(_0x20c6,0x1cb));var _0x620c=function(_0x2830fc,_0x1bbb32){_0x2830fc=_0x2830fc-0x0;var _0x3cc76b=_0x20c6[_0x2830fc];return _0x3cc76b;};'use strict';var _=require('lodash');var md5=require('md5');var util=require(_0x620c('0x0'));var Redis=require(_0x620c('0x1'));var config=require(_0x620c('0x2'));config['redis']=_[_0x620c('0x3')](config[_0x620c('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x620c('0x5'))(new Redis(config[_0x620c('0x4')]));function WhatsappQueue(_0x27c19d){this['id']=_0x27c19d['id']||0x0;this[_0x620c('0x6')]=_0x27c19d[_0x620c('0x6')]||'';this[_0x620c('0x7')]=_0x27c19d[_0x620c('0x7')]||0xa;this[_0x620c('0x8')]=_0x27c19d[_0x620c('0x8')]||_0x620c('0x9');this['Agents']=_0x27c19d['Agents'];this[_0x620c('0xa')]={};this[_0x620c('0xb')]=0x0;this['md5']='';this[_0x620c('0xc')]();this[_0x620c('0xd')]();}WhatsappQueue[_0x620c('0xe')]['updateRouting']=function(){var _0x4d30b8=this[_0x620c('0xa')][_0x620c('0xf')];this[_0x620c('0xa')]=_[_0x620c('0x10')](this['Agents'],'id');this[_0x620c('0xa')]['_rr']=_0x4d30b8;};WhatsappQueue['prototype'][_0x620c('0xd')]=function(){this[_0x620c('0x11')]=0x0;this[_0x620c('0x12')]=0x0;for(var _0x1e0d4e=0x0;_0x1e0d4e<this['Agents'][_0x620c('0x13')];_0x1e0d4e+=0x1){if(this[_0x620c('0x14')][_0x1e0d4e]['online']){this[_0x620c('0x11')]+=0x1;}if(this['Agents'][_0x1e0d4e][_0x620c('0x15')]){this[_0x620c('0x12')]+=0x1;}}this[_0x620c('0x16')]=this[_0x620c('0x11')]-this['paused'];this[_0x620c('0x16')]=this[_0x620c('0x16')]>=0x0?this['available']:0x0;var _0x6277cc={'id':this['id'],'available':this[_0x620c('0x16')],'loggedIn':this[_0x620c('0x11')],'name':this['name'],'paused':this[_0x620c('0x12')],'waiting':this['waiting']};var _0x6a8a7a=md5(JSON[_0x620c('0x17')](_0x6277cc));if(this['md5']!==_0x6a8a7a){this[_0x620c('0x18')]=_0x6a8a7a;io['to'](util['format'](_0x620c('0x19'),_0x6277cc['name']))[_0x620c('0x1a')](_0x620c('0x1b'),_0x6277cc);}};module[_0x620c('0x1c')]=WhatsappQueue;
\ No newline at end of file
index 50bbb62..58d910b 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(_0x133f3b,_0x4ffd5f){var _0x45d140=function(_0x3e916c){while(--_0x3e916c){_0x133f3b['push'](_0x133f3b['shift']());}};_0x45d140(++_0x4ffd5f);}(_0xb10b,0x12a));var _0xbb10=function(_0x2b9cf5,_0x2a7804){_0x2b9cf5=_0x2b9cf5-0x0;var _0xd0cf15=_0xb10b[_0x2b9cf5];return _0xd0cf15;};'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(_0x3c0651,_0x2a6f80){var _0x544c93=function(_0xd34d6){while(--_0xd34d6){_0x3c0651['push'](_0x3c0651['shift']());}};_0x544c93(++_0x2a6f80);}(_0xb10b,0x12a));var _0xbb10=function(_0x50f0a9,_0x2b0c57){_0x50f0a9=_0x50f0a9-0x0;var _0x5a33d9=_0xb10b[_0x50f0a9];return _0x5a33d9;};'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 4c7aaab..4fbbe5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69b3=['addTags','AddTagsToChatInteraction','addTagsToChatInteraction','../client','Request','UpdateChatInteraction','updateChatInteraction'];(function(_0x46d172,_0x3f1abe){var _0x4026ba=function(_0x23cc13){while(--_0x23cc13){_0x46d172['push'](_0x46d172['shift']());}};_0x4026ba(++_0x3f1abe);}(_0x69b3,0x1a7));var _0x369b=function(_0x1b488d,_0x20642e){_0x1b488d=_0x1b488d-0x0;var _0x5ebdbe=_0x69b3[_0x1b488d];return _0x5ebdbe;};'use strict';var client=require(_0x369b('0x0'));exports['update']=function(_0x5b0252,_0x1ff154){return client[_0x369b('0x1')](_0x369b('0x2'),{'body':_0x1ff154,'options':{'where':{'id':_0x5b0252}},'log':_0x369b('0x3')});};exports[_0x369b('0x4')]=function(_0x24c2f4,_0x5e3604){return client[_0x369b('0x1')](_0x369b('0x5'),{'body':_0x5e3604,'options':{'where':{'id':_0x24c2f4}},'log':_0x369b('0x6')});};
\ No newline at end of file
+var _0x346e=['UpdateChatInteraction','updateChatInteraction','addTags','AddTagsToChatInteraction','addTagsToChatInteraction','../client','Request'];(function(_0x4e3d3c,_0x5b82f5){var _0x3ed073=function(_0x5945a9){while(--_0x5945a9){_0x4e3d3c['push'](_0x4e3d3c['shift']());}};_0x3ed073(++_0x5b82f5);}(_0x346e,0x1c5));var _0xe346=function(_0x2421e6,_0xa11965){_0x2421e6=_0x2421e6-0x0;var _0x5366e3=_0x346e[_0x2421e6];return _0x5366e3;};'use strict';var client=require(_0xe346('0x0'));exports['update']=function(_0x39478c,_0xea8894){return client[_0xe346('0x1')](_0xe346('0x2'),{'body':_0xea8894,'options':{'where':{'id':_0x39478c}},'log':_0xe346('0x3')});};exports[_0xe346('0x4')]=function(_0x9b4590,_0x2aa24d){return client['Request'](_0xe346('0x5'),{'body':_0x2aa24d,'options':{'where':{'id':_0x9b4590}},'log':_0xe346('0x6')});};
\ No newline at end of file
index 5e5190f..a25e45e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68fc=['createChatMessage','../client','create','Request','CreateChatMessage'];(function(_0x3ecf95,_0x559a2c){var _0x3f1e72=function(_0x4160c0){while(--_0x4160c0){_0x3ecf95['push'](_0x3ecf95['shift']());}};_0x3f1e72(++_0x559a2c);}(_0x68fc,0x1af));var _0xc68f=function(_0x9ed9ad,_0x1a8929){_0x9ed9ad=_0x9ed9ad-0x0;var _0x254a0a=_0x68fc[_0x9ed9ad];return _0x254a0a;};'use strict';var client=require(_0xc68f('0x0'));exports[_0xc68f('0x1')]=function(_0xd3836e){return client[_0xc68f('0x2')](_0xc68f('0x3'),{'body':_0xd3836e,'log':_0xc68f('0x4')});};
\ No newline at end of file
+var _0x7fee=['CreateChatMessage','createChatMessage','create'];(function(_0xa35408,_0x315f2a){var _0xc71d1b=function(_0x3a90d1){while(--_0x3a90d1){_0xa35408['push'](_0xa35408['shift']());}};_0xc71d1b(++_0x315f2a);}(_0x7fee,0x68));var _0xe7fe=function(_0x383356,_0x33d2f5){_0x383356=_0x383356-0x0;var _0x32ee5a=_0x7fee[_0x383356];return _0x32ee5a;};'use strict';var client=require('../client');exports[_0xe7fe('0x0')]=function(_0x4f98b7){return client['Request'](_0xe7fe('0x1'),{'body':_0x4f98b7,'log':_0xe7fe('0x2')});};
\ No newline at end of file
index 87fee79..81e4439 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f7a=['timeout','name','online','../client','getChatQueues','Request','GetChatQueue'];(function(_0x5d4662,_0x238650){var _0x246b39=function(_0x3b9d1e){while(--_0x3b9d1e){_0x5d4662['push'](_0x5d4662['shift']());}};_0x246b39(++_0x238650);}(_0x9f7a,0xf1));var _0xa9f7=function(_0x87b0ff,_0x314389){_0x87b0ff=_0x87b0ff-0x0;var _0x3bc0b2=_0x9f7a[_0x87b0ff];return _0x3bc0b2;};'use strict';var client=require(_0xa9f7('0x0'));exports[_0xa9f7('0x1')]=function(){return function(){return client[_0xa9f7('0x2')](_0xa9f7('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xa9f7('0x4'),'strategy'],'include':[{'model':'User','as':'Agents','attributes':['id',_0xa9f7('0x5'),_0xa9f7('0x6'),'chatPause']}]},'log':'getChatQueues'});};};
\ No newline at end of file
+var _0xe914=['name','timeout','strategy','User','Agents','online','chatPause','../client','getChatQueues','GetChatQueue'];(function(_0xed0402,_0x90677e){var _0x350888=function(_0x3d87c9){while(--_0x3d87c9){_0xed0402['push'](_0xed0402['shift']());}};_0x350888(++_0x90677e);}(_0xe914,0x7f));var _0x4e91=function(_0x3c3b81,_0x3bd581){_0x3c3b81=_0x3c3b81-0x0;var _0x5a1daa=_0xe914[_0x3c3b81];return _0x5a1daa;};'use strict';var client=require(_0x4e91('0x0'));exports[_0x4e91('0x1')]=function(){return function(){return client['Request'](_0x4e91('0x2'),{'options':{'raw':![],'attributes':['id',_0x4e91('0x3'),_0x4e91('0x4'),_0x4e91('0x5')],'include':[{'model':_0x4e91('0x6'),'as':_0x4e91('0x7'),'attributes':['id','name',_0x4e91('0x8'),_0x4e91('0x9')]}]},'log':'getChatQueues'});};};
\ No newline at end of file
index d48e43b..f98c827 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x028d=['Request','DESC','UpdateChatQueueReport','create','CreateChatQueueReport','update'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x028d,0xff));var _0xd028=function(_0x4dd4a7,_0xcf0f62){_0x4dd4a7=_0x4dd4a7-0x0;var _0x101b06=_0x028d[_0x4dd4a7];return _0x101b06;};'use strict';var client=require('../client');exports[_0xd028('0x0')]=function(_0x124fc2){return client['Request'](_0xd028('0x1'),{'body':_0x124fc2,'log':_0xd028('0x1')});};exports[_0xd028('0x2')]=function(_0x33a4b7,_0x2dc43c){return client[_0xd028('0x3')]('UpdateChatQueueReport',{'body':_0x2dc43c,'options':{'where':{'uniqueid':_0x33a4b7},'order':[['id',_0xd028('0x4')]],'limit':0x1},'log':_0xd028('0x5')});};
\ No newline at end of file
+var _0xdeb7=['create','CreateChatQueueReport','update','UpdateChatQueueReport','DESC','../client'];(function(_0x475d49,_0x10b9e9){var _0x2118fd=function(_0x2f3904){while(--_0x2f3904){_0x475d49['push'](_0x475d49['shift']());}};_0x2118fd(++_0x10b9e9);}(_0xdeb7,0x77));var _0x7deb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdeb7[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x7deb('0x0'));exports[_0x7deb('0x1')]=function(_0x5f4b03){return client['Request'](_0x7deb('0x2'),{'body':_0x5f4b03,'log':_0x7deb('0x2')});};exports[_0x7deb('0x3')]=function(_0x20de63,_0x307ce7){return client['Request'](_0x7deb('0x4'),{'body':_0x307ce7,'options':{'where':{'uniqueid':_0x20de63},'order':[['id',_0x7deb('0x5')]],'limit':0x1},'log':_0x7deb('0x4')});};
\ No newline at end of file
index 354eebc..626ece5 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(_0x3cb93a,_0x5048cf){var _0x49b7b7=function(_0x2bb13d){while(--_0x2bb13d){_0x3cb93a['push'](_0x3cb93a['shift']());}};_0x49b7b7(++_0x5048cf);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3,_0x10a05d){return client['Request'](_0x7995('0x2'),{'body':_0x10a05d,'options':{'where':{'id':_0x2722a3}},'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x462a03,_0x576d89){return client[_0x7995('0x5')](_0x7995('0x6'),{'body':_0x576d89,'options':{'where':{'id':_0x462a03}},'log':_0x7995('0x7')});};
\ No newline at end of file
+var _0x9957=['Request','AddTagsToFaxInteraction','addTagsToFaxInteraction','../client','update','UpdateFaxInteraction','updateFaxInteraction','addTags'];(function(_0x13d4ad,_0x421315){var _0xe34a1=function(_0x1d9637){while(--_0x1d9637){_0x13d4ad['push'](_0x13d4ad['shift']());}};_0xe34a1(++_0x421315);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3,_0x10a05d){return client['Request'](_0x7995('0x2'),{'body':_0x10a05d,'options':{'where':{'id':_0x2722a3}},'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x462a03,_0x576d89){return client[_0x7995('0x5')](_0x7995('0x6'),{'body':_0x576d89,'options':{'where':{'id':_0x462a03}},'log':_0x7995('0x7')});};
\ No newline at end of file
index 4ecba42..4ade5bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x666d=['createFaxMessage','../client','create','Request','CreateFaxMessage'];(function(_0x4c1112,_0x32230a){var _0x16155f=function(_0xea2941){while(--_0xea2941){_0x4c1112['push'](_0x4c1112['shift']());}};_0x16155f(++_0x32230a);}(_0x666d,0x1e1));var _0xd666=function(_0x411017,_0x4a8117){_0x411017=_0x411017-0x0;var _0x2adeea=_0x666d[_0x411017];return _0x2adeea;};'use strict';var client=require(_0xd666('0x0'));exports[_0xd666('0x1')]=function(_0x1dd757){return client[_0xd666('0x2')](_0xd666('0x3'),{'body':_0x1dd757,'log':_0xd666('0x4')});};
\ No newline at end of file
+var _0xc044=['CreateFaxMessage','createFaxMessage','../client','create','Request'];(function(_0x221383,_0x594df6){var _0x238b0b=function(_0x37631d){while(--_0x37631d){_0x221383['push'](_0x221383['shift']());}};_0x238b0b(++_0x594df6);}(_0xc044,0x84));var _0x4c04=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xc044[_0x5b644e];return _0x49c6bf;};'use strict';var client=require(_0x4c04('0x0'));exports[_0x4c04('0x1')]=function(_0x438456){return client[_0x4c04('0x2')](_0x4c04('0x3'),{'body':_0x438456,'log':_0x4c04('0x4')});};
\ No newline at end of file
index d0d2d10..79701f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf51a=['online','../client','getFaxQueues','Request','name','timeout','strategy','User','Agents'];(function(_0x42fc17,_0x1142af){var _0x42f95b=function(_0x85a1f7){while(--_0x85a1f7){_0x42fc17['push'](_0x42fc17['shift']());}};_0x42f95b(++_0x1142af);}(_0xf51a,0x172));var _0xaf51=function(_0x5385c,_0xe1aa28){_0x5385c=_0x5385c-0x0;var _0x30e26b=_0xf51a[_0x5385c];return _0x30e26b;};'use strict';var client=require(_0xaf51('0x0'));exports[_0xaf51('0x1')]=function(){return function(){return client[_0xaf51('0x2')]('GetFaxQueue',{'options':{'raw':![],'attributes':['id',_0xaf51('0x3'),_0xaf51('0x4'),_0xaf51('0x5')],'include':[{'model':_0xaf51('0x6'),'as':_0xaf51('0x7'),'attributes':['id',_0xaf51('0x3'),_0xaf51('0x8'),'faxPause']}]},'log':'getFaxQueues'});};};
\ No newline at end of file
+var _0x2fdf=['../client','getFaxQueues','GetFaxQueue','name','timeout','strategy','User','online','faxPause'];(function(_0x2c18a1,_0x438e00){var _0x27fcc8=function(_0x314950){while(--_0x314950){_0x2c18a1['push'](_0x2c18a1['shift']());}};_0x27fcc8(++_0x438e00);}(_0x2fdf,0x13b));var _0xf2fd=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0x2fdf[_0x2763f2];return _0x3ef471;};'use strict';var client=require(_0xf2fd('0x0'));exports[_0xf2fd('0x1')]=function(){return function(){return client['Request'](_0xf2fd('0x2'),{'options':{'raw':![],'attributes':['id',_0xf2fd('0x3'),_0xf2fd('0x4'),_0xf2fd('0x5')],'include':[{'model':_0xf2fd('0x6'),'as':'Agents','attributes':['id',_0xf2fd('0x3'),_0xf2fd('0x7'),_0xf2fd('0x8')]}]},'log':_0xf2fd('0x1')});};};
\ No newline at end of file
index 54dd88c..b99fc06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x447f=['Request','UpdateFaxQueueReport','CreateFaxQueueReport','update'];(function(_0x1de69e,_0x5deced){var _0x3285fb=function(_0x26b3cf){while(--_0x26b3cf){_0x1de69e['push'](_0x1de69e['shift']());}};_0x3285fb(++_0x5deced);}(_0x447f,0xfa));var _0xf447=function(_0x5ee3e1,_0x1e4278){_0x5ee3e1=_0x5ee3e1-0x0;var _0x5a8829=_0x447f[_0x5ee3e1];return _0x5a8829;};'use strict';var client=require('../client');exports['create']=function(_0x5b90ed){return client['Request']('CreateFaxQueueReport',{'body':_0x5b90ed,'log':_0xf447('0x0')});};exports[_0xf447('0x1')]=function(_0x580914,_0xe01587){return client[_0xf447('0x2')](_0xf447('0x3'),{'body':_0xe01587,'options':{'where':{'uniqueid':_0x580914},'order':[['id','DESC']],'limit':0x1},'log':_0xf447('0x3')});};
\ No newline at end of file
+var _0x2a5d=['UpdateFaxQueueReport','DESC','CreateFaxQueueReport','update','Request'];(function(_0x1593fd,_0x329cf7){var _0x3bc866=function(_0x595172){while(--_0x595172){_0x1593fd['push'](_0x1593fd['shift']());}};_0x3bc866(++_0x329cf7);}(_0x2a5d,0x8e));var _0xd2a5=function(_0x1034bb,_0x4e20b3){_0x1034bb=_0x1034bb-0x0;var _0x453fdb=_0x2a5d[_0x1034bb];return _0x453fdb;};'use strict';var client=require('../client');exports['create']=function(_0x1beb3e){return client['Request'](_0xd2a5('0x0'),{'body':_0x1beb3e,'log':_0xd2a5('0x0')});};exports[_0xd2a5('0x1')]=function(_0x5d20d9,_0x2e2c31){return client[_0xd2a5('0x2')](_0xd2a5('0x3'),{'body':_0x2e2c31,'options':{'where':{'uniqueid':_0x5d20d9},'order':[['id',_0xd2a5('0x4')]],'limit':0x1},'log':_0xd2a5('0x3')});};
\ No newline at end of file
index c04c323..8d76902 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd49=['interval','getIntervals','../client','Request','GetInterval','name'];(function(_0x8f4562,_0x264056){var _0x15e532=function(_0x317d17){while(--_0x317d17){_0x8f4562['push'](_0x8f4562['shift']());}};_0x15e532(++_0x264056);}(_0xbd49,0x8c));var _0x9bd4=function(_0x1b9afb,_0x27ce99){_0x1b9afb=_0x1b9afb-0x0;var _0x2aca7d=_0xbd49[_0x1b9afb];return _0x2aca7d;};'use strict';var client=require(_0x9bd4('0x0'));exports['getIntervals']=function(){return function(){return client[_0x9bd4('0x1')](_0x9bd4('0x2'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x9bd4('0x3')],'include':[{'model':'Interval','as':'Intervals','attributes':['id',_0x9bd4('0x3'),_0x9bd4('0x4')]}]},'log':_0x9bd4('0x5')});};};
\ No newline at end of file
+var _0xb638=['../client','getIntervals','GetInterval','name','interval'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0xb638,0x7d));var _0x8b63=function(_0x4f408b,_0xb2d2e4){_0x4f408b=_0x4f408b-0x0;var _0x23d332=_0xb638[_0x4f408b];return _0x23d332;};'use strict';var client=require(_0x8b63('0x0'));exports[_0x8b63('0x1')]=function(){return function(){return client['Request'](_0x8b63('0x2'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x8b63('0x3')],'include':[{'model':'Interval','as':'Intervals','attributes':['id',_0x8b63('0x3'),_0x8b63('0x4')]}]},'log':'getIntervals'});};};
\ No newline at end of file
index 2127d38..493923b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaebd=['updateMailInteraction','AddTagsToMailInteraction','addTagsToChatInteraction','../client','Request','UpdateMailInteraction'];(function(_0x104fce,_0x13f7b7){var _0x28c3f9=function(_0xd62e2e){while(--_0xd62e2e){_0x104fce['push'](_0x104fce['shift']());}};_0x28c3f9(++_0x13f7b7);}(_0xaebd,0x1e9));var _0xdaeb=function(_0x342639,_0x2f5a17){_0x342639=_0x342639-0x0;var _0x580736=_0xaebd[_0x342639];return _0x580736;};'use strict';var client=require(_0xdaeb('0x0'));exports['update']=function(_0x2e2d0c,_0xac84fd){return client[_0xdaeb('0x1')](_0xdaeb('0x2'),{'body':_0xac84fd,'options':{'where':{'id':_0x2e2d0c}},'log':_0xdaeb('0x3')});};exports['addTags']=function(_0x44e982,_0x1c617a){return client[_0xdaeb('0x1')](_0xdaeb('0x4'),{'body':_0x1c617a,'options':{'where':{'id':_0x44e982}},'log':_0xdaeb('0x5')});};
\ No newline at end of file
+var _0xd7d1=['addTags','AddTagsToMailInteraction','addTagsToChatInteraction','../client','update','Request','UpdateMailInteraction','updateMailInteraction'];(function(_0x33c9f8,_0x5aedbb){var _0x2d7004=function(_0x4f4f43){while(--_0x4f4f43){_0x33c9f8['push'](_0x33c9f8['shift']());}};_0x2d7004(++_0x5aedbb);}(_0xd7d1,0x1b3));var _0x1d7d=function(_0x505e49,_0x32d1fd){_0x505e49=_0x505e49-0x0;var _0x124129=_0xd7d1[_0x505e49];return _0x124129;};'use strict';var client=require(_0x1d7d('0x0'));exports[_0x1d7d('0x1')]=function(_0xce4540,_0x447083){return client[_0x1d7d('0x2')](_0x1d7d('0x3'),{'body':_0x447083,'options':{'where':{'id':_0xce4540}},'log':_0x1d7d('0x4')});};exports[_0x1d7d('0x5')]=function(_0x1ac097,_0x1adb6b){return client[_0x1d7d('0x2')](_0x1d7d('0x6'),{'body':_0x1adb6b,'options':{'where':{'id':_0x1ac097}},'log':_0x1d7d('0x7')});};
\ No newline at end of file
index e4e92a7..e768c5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b36=['CreateMailMessage','create'];(function(_0x512661,_0x4b4012){var _0x1debde=function(_0x1ed401){while(--_0x1ed401){_0x512661['push'](_0x512661['shift']());}};_0x1debde(++_0x4b4012);}(_0x3b36,0x105));var _0x63b3=function(_0x98db01,_0x352720){_0x98db01=_0x98db01-0x0;var _0x343f92=_0x3b36[_0x98db01];return _0x343f92;};'use strict';var client=require('../client');exports[_0x63b3('0x0')]=function(_0x36cf3c){return client['Request'](_0x63b3('0x1'),{'body':_0x36cf3c,'log':'createMailMessage'});};
\ No newline at end of file
+var _0xc6a2=['CreateMailMessage','createMailMessage','../client','Request'];(function(_0x547ec2,_0x394853){var _0x7af285=function(_0x453153){while(--_0x453153){_0x547ec2['push'](_0x547ec2['shift']());}};_0x7af285(++_0x394853);}(_0xc6a2,0x15e));var _0x2c6a=function(_0x10c391,_0x3e05c9){_0x10c391=_0x10c391-0x0;var _0xef9507=_0xc6a2[_0x10c391];return _0xef9507;};'use strict';var client=require(_0x2c6a('0x0'));exports['create']=function(_0x3c5094){return client[_0x2c6a('0x1')](_0x2c6a('0x2'),{'body':_0x3c5094,'log':_0x2c6a('0x3')});};
\ No newline at end of file
index aead1cf..798cddf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x281a=['strategy','Agents','online','mailPause','getMailQueues','Request','GetMailQueue','name'];(function(_0x381f7f,_0x1321a9){var _0xd2ae6d=function(_0x44229a){while(--_0x44229a){_0x381f7f['push'](_0x381f7f['shift']());}};_0xd2ae6d(++_0x1321a9);}(_0x281a,0x1f4));var _0xa281=function(_0x1b6186,_0x1ec7f2){_0x1b6186=_0x1b6186-0x0;var _0x186121=_0x281a[_0x1b6186];return _0x186121;};'use strict';var client=require('../client');exports[_0xa281('0x0')]=function(){return function(){return client[_0xa281('0x1')](_0xa281('0x2'),{'options':{'raw':![],'attributes':['id',_0xa281('0x3'),'timeout',_0xa281('0x4')],'include':[{'model':'User','as':_0xa281('0x5'),'attributes':['id','name',_0xa281('0x6'),_0xa281('0x7')]}]},'log':_0xa281('0x0')});};};
\ No newline at end of file
+var _0x4cf4=['name','online','mailPause','../client','Request','Agents'];(function(_0x2a8915,_0x487ca5){var _0x5db828=function(_0x4b02b4){while(--_0x4b02b4){_0x2a8915['push'](_0x2a8915['shift']());}};_0x5db828(++_0x487ca5);}(_0x4cf4,0x17d));var _0x44cf=function(_0x2f55fb,_0x3cf265){_0x2f55fb=_0x2f55fb-0x0;var _0x2d195e=_0x4cf4[_0x2f55fb];return _0x2d195e;};'use strict';var client=require(_0x44cf('0x0'));exports['getMailQueues']=function(){return function(){return client[_0x44cf('0x1')]('GetMailQueue',{'options':{'raw':![],'attributes':['id','name','timeout','strategy'],'include':[{'model':'User','as':_0x44cf('0x2'),'attributes':['id',_0x44cf('0x3'),_0x44cf('0x4'),_0x44cf('0x5')]}]},'log':'getMailQueues'});};};
\ No newline at end of file
index 1a17a37..b3b4bbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22c7=['UpdateMailQueueReport','DESC','../client','create','Request','update'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x22c7,0x152));var _0x722c=function(_0x4ccbd,_0x2350ca){_0x4ccbd=_0x4ccbd-0x0;var _0x3deecc=_0x22c7[_0x4ccbd];return _0x3deecc;};'use strict';var client=require(_0x722c('0x0'));exports[_0x722c('0x1')]=function(_0x2e2af4){return client[_0x722c('0x2')]('CreateMailQueueReport',{'body':_0x2e2af4,'log':'CreateMailQueueReport'});};exports[_0x722c('0x3')]=function(_0x44f449,_0x5e9a35){return client['Request'](_0x722c('0x4'),{'body':_0x5e9a35,'options':{'where':{'uniqueid':_0x44f449},'order':[['id',_0x722c('0x5')]],'limit':0x1},'log':_0x722c('0x4')});};
\ No newline at end of file
+var _0xcfb9=['update','Request','UpdateMailQueueReport','DESC','../client','create','CreateMailQueueReport'];(function(_0x1a311e,_0x172d59){var _0xa68c40=function(_0x41319d){while(--_0x41319d){_0x1a311e['push'](_0x1a311e['shift']());}};_0xa68c40(++_0x172d59);}(_0xcfb9,0x170));var _0x9cfb=function(_0x47f7ec,_0x369f9d){_0x47f7ec=_0x47f7ec-0x0;var _0x415101=_0xcfb9[_0x47f7ec];return _0x415101;};'use strict';var client=require(_0x9cfb('0x0'));exports[_0x9cfb('0x1')]=function(_0x169596){return client['Request'](_0x9cfb('0x2'),{'body':_0x169596,'log':_0x9cfb('0x2')});};exports[_0x9cfb('0x3')]=function(_0x3867e3,_0xd0a3fa){return client[_0x9cfb('0x4')](_0x9cfb('0x5'),{'body':_0xd0a3fa,'options':{'where':{'uniqueid':_0x3867e3},'order':[['id',_0x9cfb('0x6')]],'limit':0x1},'log':_0x9cfb('0x5')});};
\ No newline at end of file
index 95f4304..9a26a04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd11a=['addTagsToChatInteraction','update','Request','UpdateOpenchannelInteraction','updateOpenchannelInteraction','AddTagsToOpenchannelInteraction'];(function(_0x5a7e78,_0x400b57){var _0xa8d4a1=function(_0x486659){while(--_0x486659){_0x5a7e78['push'](_0x5a7e78['shift']());}};_0xa8d4a1(++_0x400b57);}(_0xd11a,0xeb));var _0xad11=function(_0x592989,_0x776992){_0x592989=_0x592989-0x0;var _0x161e69=_0xd11a[_0x592989];return _0x161e69;};'use strict';var client=require('../client');exports[_0xad11('0x0')]=function(_0x5266ed,_0x15a5c2){return client[_0xad11('0x1')](_0xad11('0x2'),{'body':_0x15a5c2,'options':{'where':{'id':_0x5266ed}},'log':_0xad11('0x3')});};exports['addTags']=function(_0x167e94,_0x2290f2){return client[_0xad11('0x1')](_0xad11('0x4'),{'body':_0x2290f2,'options':{'where':{'id':_0x167e94}},'log':_0xad11('0x5')});};
\ No newline at end of file
+var _0xb6a5=['Request','UpdateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction','update'];(function(_0x122cdf,_0x3ddc53){var _0x482000=function(_0x2caf55){while(--_0x2caf55){_0x122cdf['push'](_0x122cdf['shift']());}};_0x482000(++_0x3ddc53);}(_0xb6a5,0x153));var _0x5b6a=function(_0x36d94f,_0x5e30f4){_0x36d94f=_0x36d94f-0x0;var _0x467193=_0xb6a5[_0x36d94f];return _0x467193;};'use strict';var client=require('../client');exports[_0x5b6a('0x0')]=function(_0x52b6fd,_0x490d8e){return client[_0x5b6a('0x1')](_0x5b6a('0x2'),{'body':_0x490d8e,'options':{'where':{'id':_0x52b6fd}},'log':'updateOpenchannelInteraction'});};exports[_0x5b6a('0x3')]=function(_0x472dd7,_0x105774){return client['Request'](_0x5b6a('0x4'),{'body':_0x105774,'options':{'where':{'id':_0x472dd7}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index 8df6866..87e986d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d39=['../client','Request'];(function(_0x4343f6,_0x38338b){var _0x1fddb9=function(_0x36f508){while(--_0x36f508){_0x4343f6['push'](_0x4343f6['shift']());}};_0x1fddb9(++_0x38338b);}(_0x5d39,0xc4));var _0x95d3=function(_0x1ae69a,_0x151f69){_0x1ae69a=_0x1ae69a-0x0;var _0x261d5f=_0x5d39[_0x1ae69a];return _0x261d5f;};'use strict';var client=require(_0x95d3('0x0'));exports['create']=function(_0x31f569){return client[_0x95d3('0x1')]('CreateOpenchannelMessage',{'body':_0x31f569,'log':'createOpenchannelMessage'});};
\ No newline at end of file
+var _0x3656=['../client','CreateOpenchannelMessage'];(function(_0x576e2b,_0x328953){var _0x46461a=function(_0xce4d9e){while(--_0xce4d9e){_0x576e2b['push'](_0x576e2b['shift']());}};_0x46461a(++_0x328953);}(_0x3656,0x12e));var _0x6365=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0x3656[_0x1cc8fe];return _0x230054;};'use strict';var client=require(_0x6365('0x0'));exports['create']=function(_0x4e093c){return client['Request'](_0x6365('0x1'),{'body':_0x4e093c,'log':'createOpenchannelMessage'});};
\ No newline at end of file
index b92d775..f154cc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2874=['timeout','strategy','User','Agents','online','openchannelPause','../client','getOpenchannelQueues','Request','GetOpenchannelQueue','name'];(function(_0x5f25d8,_0x5ec95f){var _0x1f3c46=function(_0x5abdfc){while(--_0x5abdfc){_0x5f25d8['push'](_0x5f25d8['shift']());}};_0x1f3c46(++_0x5ec95f);}(_0x2874,0x150));var _0x4287=function(_0x4e7f3f,_0x5c57da){_0x4e7f3f=_0x4e7f3f-0x0;var _0x441fd2=_0x2874[_0x4e7f3f];return _0x441fd2;};'use strict';var client=require(_0x4287('0x0'));exports[_0x4287('0x1')]=function(){return function(){return client[_0x4287('0x2')](_0x4287('0x3'),{'options':{'raw':![],'attributes':['id',_0x4287('0x4'),_0x4287('0x5'),_0x4287('0x6')],'include':[{'model':_0x4287('0x7'),'as':_0x4287('0x8'),'attributes':['id','name',_0x4287('0x9'),_0x4287('0xa')]}]},'log':_0x4287('0x1')});};};
\ No newline at end of file
+var _0xcdc5=['openchannelPause','getOpenchannelQueues','Request','GetOpenchannelQueue','name','timeout','strategy','Agents','online'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xcdc5,0x7f));var _0x5cdc=function(_0x5e1eae,_0x2d2a56){_0x5e1eae=_0x5e1eae-0x0;var _0x3217c5=_0xcdc5[_0x5e1eae];return _0x3217c5;};'use strict';var client=require('../client');exports[_0x5cdc('0x0')]=function(){return function(){return client[_0x5cdc('0x1')](_0x5cdc('0x2'),{'options':{'raw':![],'attributes':['id',_0x5cdc('0x3'),_0x5cdc('0x4'),_0x5cdc('0x5')],'include':[{'model':'User','as':_0x5cdc('0x6'),'attributes':['id',_0x5cdc('0x3'),_0x5cdc('0x7'),_0x5cdc('0x8')]}]},'log':_0x5cdc('0x0')});};};
\ No newline at end of file
index f68eff8..2f5f5de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4f6=['CreateOpenchannelQueueReport','update','DESC','../client','create','Request'];(function(_0x3462ec,_0x29236c){var _0x4f0618=function(_0x133011){while(--_0x133011){_0x3462ec['push'](_0x3462ec['shift']());}};_0x4f0618(++_0x29236c);}(_0xe4f6,0x195));var _0x6e4f=function(_0x221e3c,_0x386c44){_0x221e3c=_0x221e3c-0x0;var _0x238078=_0xe4f6[_0x221e3c];return _0x238078;};'use strict';var client=require(_0x6e4f('0x0'));exports[_0x6e4f('0x1')]=function(_0x5c7787){return client[_0x6e4f('0x2')](_0x6e4f('0x3'),{'body':_0x5c7787,'log':'CreateOpenchannelQueueReport'});};exports[_0x6e4f('0x4')]=function(_0x12eac4,_0x1b80e4){return client[_0x6e4f('0x2')]('UpdateOpenchannelQueueReport',{'body':_0x1b80e4,'options':{'where':{'uniqueid':_0x12eac4},'order':[['id',_0x6e4f('0x5')]],'limit':0x1},'log':'UpdateOpenchannelQueueReport'});};
\ No newline at end of file
+var _0xefe3=['../client','CreateOpenchannelQueueReport','update','Request','DESC'];(function(_0x5d84ff,_0x1ba6d5){var _0x54fa26=function(_0x46b53d){while(--_0x46b53d){_0x5d84ff['push'](_0x5d84ff['shift']());}};_0x54fa26(++_0x1ba6d5);}(_0xefe3,0xf5));var _0x3efe=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xefe3[_0x122ef9];return _0x42fba0;};'use strict';var client=require(_0x3efe('0x0'));exports['create']=function(_0x5b1924){return client['Request'](_0x3efe('0x1'),{'body':_0x5b1924,'log':_0x3efe('0x1')});};exports[_0x3efe('0x2')]=function(_0x31dfff,_0x48d77b){return client[_0x3efe('0x3')]('UpdateOpenchannelQueueReport',{'body':_0x48d77b,'options':{'where':{'uniqueid':_0x31dfff},'order':[['id',_0x3efe('0x4')]],'limit':0x1},'log':'UpdateOpenchannelQueueReport'});};
\ No newline at end of file
index af9dd11..298a175 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xece0=['updateSmsInteraction','addTags','AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','update','Request'];(function(_0x194966,_0x5b67b5){var _0x213ba3=function(_0x1684ef){while(--_0x1684ef){_0x194966['push'](_0x194966['shift']());}};_0x213ba3(++_0x5b67b5);}(_0xece0,0xa5));var _0x0ece=function(_0x1fa805,_0x33eb74){_0x1fa805=_0x1fa805-0x0;var _0x30958c=_0xece0[_0x1fa805];return _0x30958c;};'use strict';var client=require(_0x0ece('0x0'));exports[_0x0ece('0x1')]=function(_0x50b067,_0x3feab2){return client[_0x0ece('0x2')]('UpdateSmsInteraction',{'body':_0x3feab2,'options':{'where':{'id':_0x50b067}},'log':_0x0ece('0x3')});};exports[_0x0ece('0x4')]=function(_0xc9c26b,_0x5f1c86){return client['Request'](_0x0ece('0x5'),{'body':_0x5f1c86,'options':{'where':{'id':_0xc9c26b}},'log':_0x0ece('0x6')});};
\ No newline at end of file
+var _0x8832=['updateSmsInteraction','AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','update','Request','UpdateSmsInteraction'];(function(_0x3f3bad,_0x193f06){var _0x4f0801=function(_0x5cfd32){while(--_0x5cfd32){_0x3f3bad['push'](_0x3f3bad['shift']());}};_0x4f0801(++_0x193f06);}(_0x8832,0x1f4));var _0x2883=function(_0x1b72c7,_0x2dac06){_0x1b72c7=_0x1b72c7-0x0;var _0x1c1f20=_0x8832[_0x1b72c7];return _0x1c1f20;};'use strict';var client=require(_0x2883('0x0'));exports[_0x2883('0x1')]=function(_0x56a649,_0x598e48){return client[_0x2883('0x2')](_0x2883('0x3'),{'body':_0x598e48,'options':{'where':{'id':_0x56a649}},'log':_0x2883('0x4')});};exports['addTags']=function(_0x21be37,_0x5f5738){return client[_0x2883('0x2')](_0x2883('0x5'),{'body':_0x5f5738,'options':{'where':{'id':_0x21be37}},'log':_0x2883('0x6')});};
\ No newline at end of file
index fa7585a..782b1f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f0c=['createSmsMessage','Request','CreateSmsMessage'];(function(_0x780aef,_0x1bacb8){var _0x576068=function(_0x3c0397){while(--_0x3c0397){_0x780aef['push'](_0x780aef['shift']());}};_0x576068(++_0x1bacb8);}(_0x3f0c,0x1b7));var _0xc3f0=function(_0x1fd4f0,_0x5bac6d){_0x1fd4f0=_0x1fd4f0-0x0;var _0x1cd3d4=_0x3f0c[_0x1fd4f0];return _0x1cd3d4;};'use strict';var client=require('../client');exports['create']=function(_0x206170){return client[_0xc3f0('0x0')](_0xc3f0('0x1'),{'body':_0x206170,'log':_0xc3f0('0x2')});};
\ No newline at end of file
+var _0x7f6f=['../client','Request','createSmsMessage'];(function(_0x22d3ca,_0x35a5ff){var _0xd7db89=function(_0x525edc){while(--_0x525edc){_0x22d3ca['push'](_0x22d3ca['shift']());}};_0xd7db89(++_0x35a5ff);}(_0x7f6f,0xea));var _0xf7f6=function(_0x30ca54,_0x42999e){_0x30ca54=_0x30ca54-0x0;var _0x36605e=_0x7f6f[_0x30ca54];return _0x36605e;};'use strict';var client=require(_0xf7f6('0x0'));exports['create']=function(_0xec7031){return client[_0xf7f6('0x1')]('CreateSmsMessage',{'body':_0xec7031,'log':_0xf7f6('0x2')});};
\ No newline at end of file
index 0e14739..70a497f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['getSmsQueues','Request','GetSmsQueue','name','timeout','strategy','Agents','online','smsPause'];(function(_0x3f2d02,_0x2c7deb){var _0x54092b=function(_0x427ff8){while(--_0x427ff8){_0x3f2d02['push'](_0x3f2d02['shift']());}};_0x54092b(++_0x2c7deb);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports['getSmsQueues']=function(){return function(){return client[_0x3071('0x0')](_0x3071('0x1'),{'options':{'raw':![],'attributes':['id',_0x3071('0x2'),_0x3071('0x3'),_0x3071('0x4')],'include':[{'model':'User','as':_0x3071('0x5'),'attributes':['id',_0x3071('0x2'),_0x3071('0x6'),_0x3071('0x7')]}]},'log':_0x3071('0x8')});};};
\ No newline at end of file
+var _0x0713=['getSmsQueues','Request','GetSmsQueue','name','timeout','strategy','Agents','online','smsPause'];(function(_0x10f6e8,_0x351db6){var _0x35bb3c=function(_0x30a39b){while(--_0x30a39b){_0x10f6e8['push'](_0x10f6e8['shift']());}};_0x35bb3c(++_0x351db6);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports['getSmsQueues']=function(){return function(){return client[_0x3071('0x0')](_0x3071('0x1'),{'options':{'raw':![],'attributes':['id',_0x3071('0x2'),_0x3071('0x3'),_0x3071('0x4')],'include':[{'model':'User','as':_0x3071('0x5'),'attributes':['id',_0x3071('0x2'),_0x3071('0x6'),_0x3071('0x7')]}]},'log':_0x3071('0x8')});};};
\ No newline at end of file
index 8ef572e..afe91a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['../client','create','CreateSmsQueueReport','update','Request','UpdateSmsQueueReport','DESC'];(function(_0x57a697,_0x3b3135){var _0x444fab=function(_0x288943){while(--_0x288943){_0x57a697['push'](_0x57a697['shift']());}};_0x444fab(++_0x3b3135);}(_0x55ca,0x126));var _0xa55c=function(_0x75ad68,_0xc75b2a){_0x75ad68=_0x75ad68-0x0;var _0x469c7d=_0x55ca[_0x75ad68];return _0x469c7d;};'use strict';var client=require(_0xa55c('0x0'));exports[_0xa55c('0x1')]=function(_0x4e78b4){return client['Request']('CreateSmsQueueReport',{'body':_0x4e78b4,'log':_0xa55c('0x2')});};exports[_0xa55c('0x3')]=function(_0x5dc716,_0x3b478a){return client[_0xa55c('0x4')](_0xa55c('0x5'),{'body':_0x3b478a,'options':{'where':{'uniqueid':_0x5dc716},'order':[['id',_0xa55c('0x6')]],'limit':0x1},'log':_0xa55c('0x5')});};
\ No newline at end of file
+var _0xedd9=['create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x15ca1a,_0x30fc82){var _0x507626=function(_0x14c9bc){while(--_0x14c9bc){_0x15ca1a['push'](_0x15ca1a['shift']());}};_0x507626(++_0x30fc82);}(_0xedd9,0xfc));var _0x9edd=function(_0x1046ef,_0xcecd0e){_0x1046ef=_0x1046ef-0x0;var _0x3d7d8b=_0xedd9[_0x1046ef];return _0x3d7d8b;};'use strict';var client=require('../client');exports[_0x9edd('0x0')]=function(_0x2d7989){return client[_0x9edd('0x1')](_0x9edd('0x2'),{'body':_0x2d7989,'log':_0x9edd('0x2')});};exports[_0x9edd('0x3')]=function(_0x3e6d3a,_0x36b53f){return client['Request'](_0x9edd('0x4'),{'body':_0x36b53f,'options':{'where':{'uniqueid':_0x3e6d3a},'order':[['id',_0x9edd('0x5')]],'limit':0x1},'log':_0x9edd('0x4')});};
\ No newline at end of file
index 532b1e8..a783fa9 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(_0x13c82f,_0x2bb4c7){var _0x2d6804=function(_0x4aa9b6){while(--_0x4aa9b6){_0x13c82f['push'](_0x13c82f['shift']());}};_0x2d6804(++_0x2bb4c7);}(_0xa9e0,0x123));var _0x0a9e=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xa9e0[_0xae7c2f];return _0x5d7001;};'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(_0x172b79,_0x473b15){var _0x2efb34=function(_0x55a115){while(--_0x55a115){_0x172b79['push'](_0x172b79['shift']());}};_0x2efb34(++_0x473b15);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa9e0[_0x1facfa];return _0x9ec701;};'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 a2d149b..df99c2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf95f=['../client','update','Request','UpdateWhatsappInteraction','updateWhatsappInteraction','addTags','addTagsToWhatsappInteraction'];(function(_0x1e88eb,_0x4d031e){var _0x23fe01=function(_0x42f79c){while(--_0x42f79c){_0x1e88eb['push'](_0x1e88eb['shift']());}};_0x23fe01(++_0x4d031e);}(_0xf95f,0x142));var _0xff95=function(_0x19bdf5,_0x3a6395){_0x19bdf5=_0x19bdf5-0x0;var _0x140930=_0xf95f[_0x19bdf5];return _0x140930;};'use strict';var client=require(_0xff95('0x0'));exports[_0xff95('0x1')]=function(_0x203af2,_0x7eb2d1){return client[_0xff95('0x2')](_0xff95('0x3'),{'body':_0x7eb2d1,'options':{'where':{'id':_0x203af2}},'log':_0xff95('0x4')});};exports[_0xff95('0x5')]=function(_0x1e81fe,_0x498f22){return client[_0xff95('0x2')]('AddTagsToWhatsappInteraction',{'body':_0x498f22,'options':{'where':{'id':_0x1e81fe}},'log':_0xff95('0x6')});};
\ No newline at end of file
+var _0xed1f=['AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction','../client','update','Request','updateWhatsappInteraction'];(function(_0x29a539,_0x10a434){var _0x137682=function(_0x3810c1){while(--_0x3810c1){_0x29a539['push'](_0x29a539['shift']());}};_0x137682(++_0x10a434);}(_0xed1f,0x170));var _0xfed1=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0xed1f[_0x413feb];return _0x40ee88;};'use strict';var client=require(_0xfed1('0x0'));exports[_0xfed1('0x1')]=function(_0x5da619,_0x5372bb){return client[_0xfed1('0x2')]('UpdateWhatsappInteraction',{'body':_0x5372bb,'options':{'where':{'id':_0x5da619}},'log':_0xfed1('0x3')});};exports['addTags']=function(_0x444ba8,_0x423af3){return client[_0xfed1('0x2')](_0xfed1('0x4'),{'body':_0x423af3,'options':{'where':{'id':_0x444ba8}},'log':_0xfed1('0x5')});};
\ No newline at end of file
index 9db2365..9226b1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0479=['../client'];(function(_0xc317fe,_0x2c5091){var _0x5c7738=function(_0x4cb275){while(--_0x4cb275){_0xc317fe['push'](_0xc317fe['shift']());}};_0x5c7738(++_0x2c5091);}(_0x0479,0x1b1));var _0x9047=function(_0x170fbc,_0x350349){_0x170fbc=_0x170fbc-0x0;var _0x426ff1=_0x0479[_0x170fbc];return _0x426ff1;};'use strict';var client=require(_0x9047('0x0'));exports['create']=function(_0x16af1f){return client['Request']('CreateWhatsappMessage',{'body':_0x16af1f,'log':'createWhatsappMessage'});};
\ No newline at end of file
+var _0xf0d1=['CreateWhatsappMessage','createWhatsappMessage','../client','create','Request'];(function(_0x27693e,_0x2ad701){var _0x116cad=function(_0x515c52){while(--_0x515c52){_0x27693e['push'](_0x27693e['shift']());}};_0x116cad(++_0x2ad701);}(_0xf0d1,0x142));var _0x1f0d=function(_0x4f5ec9,_0x3caf27){_0x4f5ec9=_0x4f5ec9-0x0;var _0x536b55=_0xf0d1[_0x4f5ec9];return _0x536b55;};'use strict';var client=require(_0x1f0d('0x0'));exports[_0x1f0d('0x1')]=function(_0x3573a4){return client[_0x1f0d('0x2')](_0x1f0d('0x3'),{'body':_0x3573a4,'log':_0x1f0d('0x4')});};
\ No newline at end of file
index 8b85ee1..e529b62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c2a=['name','timeout','User','Agents','whatsappPause','getWhatsappQueues','Request'];(function(_0x346f68,_0xb45d9d){var _0x2d1803=function(_0x3e5b6a){while(--_0x3e5b6a){_0x346f68['push'](_0x346f68['shift']());}};_0x2d1803(++_0xb45d9d);}(_0x2c2a,0x8b));var _0xa2c2=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0x2c2a[_0x2b10c6];return _0x3789d2;};'use strict';var client=require('../client');exports['getWhatsappQueues']=function(){return function(){return client[_0xa2c2('0x0')]('GetWhatsappQueue',{'options':{'raw':![],'attributes':['id',_0xa2c2('0x1'),_0xa2c2('0x2'),'strategy'],'include':[{'model':_0xa2c2('0x3'),'as':_0xa2c2('0x4'),'attributes':['id','name','online',_0xa2c2('0x5')]}]},'log':_0xa2c2('0x6')});};};
\ No newline at end of file
+var _0xc15c=['Agents','whatsappPause','getWhatsappQueues','Request','GetWhatsappQueue','name','timeout','strategy','User'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc15c,0x13d));var _0xcc15=function(_0x477428,_0x2a1e1f){_0x477428=_0x477428-0x0;var _0x226bb9=_0xc15c[_0x477428];return _0x226bb9;};'use strict';var client=require('../client');exports[_0xcc15('0x0')]=function(){return function(){return client[_0xcc15('0x1')](_0xcc15('0x2'),{'options':{'raw':![],'attributes':['id',_0xcc15('0x3'),_0xcc15('0x4'),_0xcc15('0x5')],'include':[{'model':_0xcc15('0x6'),'as':_0xcc15('0x7'),'attributes':['id',_0xcc15('0x3'),'online',_0xcc15('0x8')]}]},'log':'getWhatsappQueues'});};};
\ No newline at end of file
index ef0ec41..ac3e290 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x416f=['UpdateWhatsappQueueReport','DESC','create','Request','CreateWhatsappQueueReport'];(function(_0x48fdc8,_0x8272fe){var _0x46b5bb=function(_0x2b6d2c){while(--_0x2b6d2c){_0x48fdc8['push'](_0x48fdc8['shift']());}};_0x46b5bb(++_0x8272fe);}(_0x416f,0x1ce));var _0xf416=function(_0x3774e1,_0x117a14){_0x3774e1=_0x3774e1-0x0;var _0x34f39f=_0x416f[_0x3774e1];return _0x34f39f;};'use strict';var client=require('../client');exports[_0xf416('0x0')]=function(_0x38a474){return client[_0xf416('0x1')](_0xf416('0x2'),{'body':_0x38a474,'log':'CreateWhatsappQueueReport'});};exports['update']=function(_0x2cecda,_0xcf46b8){return client[_0xf416('0x1')](_0xf416('0x3'),{'body':_0xcf46b8,'options':{'where':{'uniqueid':_0x2cecda},'order':[['id',_0xf416('0x4')]],'limit':0x1},'log':_0xf416('0x3')});};
\ No newline at end of file
+var _0x0acc=['create','Request','CreateWhatsappQueueReport','update','UpdateWhatsappQueueReport','../client'];(function(_0x579a65,_0x34f309){var _0x1670c9=function(_0x3be04f){while(--_0x3be04f){_0x579a65['push'](_0x579a65['shift']());}};_0x1670c9(++_0x34f309);}(_0x0acc,0x131));var _0xc0ac=function(_0x8295d6,_0x263216){_0x8295d6=_0x8295d6-0x0;var _0x4fa9aa=_0x0acc[_0x8295d6];return _0x4fa9aa;};'use strict';var client=require(_0xc0ac('0x0'));exports[_0xc0ac('0x1')]=function(_0xc86561){return client[_0xc0ac('0x2')](_0xc0ac('0x3'),{'body':_0xc86561,'log':'CreateWhatsappQueueReport'});};exports[_0xc0ac('0x4')]=function(_0x3d668b,_0x15508f){return client['Request']('UpdateWhatsappQueueReport',{'body':_0x15508f,'options':{'where':{'uniqueid':_0x3d668b},'order':[['id','DESC']],'limit':0x1},'log':_0xc0ac('0x5')});};
\ No newline at end of file
index b41d886..e00b744 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb08=['log','stack','validate','lodash','util','seq-queue','../../../../config/logger','routing','./strategy','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','length','error','[%s][AGENT]\x20%s','map','message','join','stop','find','agents','timeout','createQueue','atimeout','channel','START:%s','rules','[%s][AGENT]\x20ROUTING\x20STOPPED','complete','[%s][AGENT]\x20ROUTING\x20END','close','next','[%s][AGENT]\x20agent\x20not\x20found\x20%s'];(function(_0x10dbf6,_0x3ff964){var _0x452147=function(_0x7476e0){while(--_0x7476e0){_0x10dbf6['push'](_0x10dbf6['shift']());}};_0x452147(++_0x3ff964);}(_0xeb08,0xec));var _0x8eb0=function(_0x23f642,_0x3c8f66){_0x23f642=_0x23f642-0x0;var _0x4ba0d0=_0xeb08[_0x23f642];return _0x4ba0d0;};'use strict';var schema=require(_0x8eb0('0x0'));var _=require(_0x8eb0('0x1'));var util=require(_0x8eb0('0x2'));var seqqueue=require(_0x8eb0('0x3'));var logger=require(_0x8eb0('0x4'))(_0x8eb0('0x5'));var strategy=require(_0x8eb0('0x6'));var queue=schema({'name':{'type':_0x8eb0('0x7'),'required':!![],'message':_0x8eb0('0x8')},'timeout':{'type':_0x8eb0('0x9'),'message':_0x8eb0('0xa')}});function writeLog(_0x292538,_0x435da4,_0x3cb027){return logger[_0x8eb0('0xb')](util[_0x8eb0('0xc')](_0x8eb0('0xd'),_0x292538,_0x435da4[_0x8eb0('0xe')],_0x3cb027));}function handleFindAgent(_0x9aca39){return function(_0x18ab30){return _0x18ab30[_0x8eb0('0xe')][_0x8eb0('0xf')]()===_0x9aca39[_0x8eb0('0xf')]();};}exports['consequence']=function(_0x15b652,_0x12944b,_0x49bd58,_0xebd374){return function(_0x11e58a){try{var _0x530f30={'name':_0x12944b[0x0],'timeout':_0x12944b[0x1]};var _0x100fd5=queue[_0x8eb0('0x0')](_0x530f30,{'typecast':!![]});if(_0x100fd5[_0x8eb0('0x10')]){logger[_0x8eb0('0x11')](_0x8eb0('0x12'),_0x15b652,_[_0x8eb0('0x13')](_0x100fd5,_0x8eb0('0x14'))[_0x8eb0('0x15')](',\x20'));_0x11e58a[_0x8eb0('0x16')]();}else{var _0x4b7890=_[_0x8eb0('0x17')](_0x49bd58[_0x8eb0('0x18')],handleFindAgent(_0x530f30[_0x8eb0('0xe')]));if(_0x4b7890){var _0x185deb=(_0x530f30[_0x8eb0('0x19')]||0xa)*0x3e8;var _0x4e8503,_0x103a0e;var _0x290d8c=seqqueue[_0x8eb0('0x1a')](_0x185deb);_0x290d8c['id']=_0x15b652;_0x290d8c[_0x8eb0('0x1b')]=_0x185deb;_0x290d8c[_0x8eb0('0x1c')]=_0xebd374[_0x8eb0('0x1c')];writeLog(_0x15b652,_0x4b7890,util['format'](_0x8eb0('0x1d'),_0x185deb));_0x49bd58[_0x8eb0('0x1e')][_0x15b652]['on']('end',function(){logger[_0x8eb0('0xb')](_0x8eb0('0x1f'),_0x15b652);clearTimeout(_0x103a0e);_0x103a0e=undefined;_0x290d8c['close']();if(_0x49bd58['rules'][_0x15b652]){delete _0x49bd58[_0x8eb0('0x1e')][_0x15b652];}_0x11e58a[_0x8eb0('0x16')]();});_0x49bd58[_0x8eb0('0x1e')][_0x15b652]['on'](_0x8eb0('0x20'),function(){if(_0x49bd58['rules'][_0x15b652]){delete _0x49bd58[_0x8eb0('0x1e')][_0x15b652];}});_0x103a0e=setTimeout(function(){logger[_0x8eb0('0xb')](_0x8eb0('0x21'),_0x15b652);clearTimeout(_0x103a0e);_0x290d8c[_0x8eb0('0x22')]();_0x11e58a[_0x8eb0('0x23')]();},_0x185deb);strategy['agent'](_0x290d8c,_0x4b7890,_0x49bd58,_0xebd374);}else{logger[_0x8eb0('0x11')](_0x8eb0('0x24'),_0x15b652,_0x530f30[_0x8eb0('0xe')]);_0x11e58a[_0x8eb0('0x16')]();}}}catch(_0x33c1bb){console[_0x8eb0('0x25')](_0x33c1bb);logger['error']('[%s][QUEUE]\x20%s',_0x15b652,_0x33c1bb[_0x8eb0('0x26')]);_0x11e58a[_0x8eb0('0x16')]();}};};
\ No newline at end of file
+var _0x2d9e=['./strategy','number','timeout\x20is\x20a\x20number','info','format','name','toLowerCase','consequence','length','error','[%s][AGENT]\x20%s','message','join','find','timeout','createQueue','atimeout','channel','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','close','complete','[%s][AGENT]\x20ROUTING\x20END','next','stop','log','[%s][QUEUE]\x20%s','validate','lodash','util','seq-queue','routing'];(function(_0x569a83,_0x513170){var _0x5da448=function(_0x2abcab){while(--_0x2abcab){_0x569a83['push'](_0x569a83['shift']());}};_0x5da448(++_0x513170);}(_0x2d9e,0x166));var _0xe2d9=function(_0x4fecd5,_0x51490c){_0x4fecd5=_0x4fecd5-0x0;var _0x8091c7=_0x2d9e[_0x4fecd5];return _0x8091c7;};'use strict';var schema=require(_0xe2d9('0x0'));var _=require(_0xe2d9('0x1'));var util=require(_0xe2d9('0x2'));var seqqueue=require(_0xe2d9('0x3'));var logger=require('../../../../config/logger')(_0xe2d9('0x4'));var strategy=require(_0xe2d9('0x5'));var queue=schema({'name':{'type':'string','required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0xe2d9('0x6'),'message':_0xe2d9('0x7')}});function writeLog(_0x777544,_0xa9de44,_0x13e82f){return logger[_0xe2d9('0x8')](util[_0xe2d9('0x9')]('[%s][AGENT][NAME:%s][STATUS:%s]',_0x777544,_0xa9de44[_0xe2d9('0xa')],_0x13e82f));}function handleFindAgent(_0x5adbc4){return function(_0x936456){return _0x936456['name'][_0xe2d9('0xb')]()===_0x5adbc4['toLowerCase']();};}exports[_0xe2d9('0xc')]=function(_0xbf3c1d,_0x3754be,_0x2b317f,_0x3fae2d){return function(_0x39e042){try{var _0x45a38f={'name':_0x3754be[0x0],'timeout':_0x3754be[0x1]};var _0x3eeacb=queue[_0xe2d9('0x0')](_0x45a38f,{'typecast':!![]});if(_0x3eeacb[_0xe2d9('0xd')]){logger[_0xe2d9('0xe')](_0xe2d9('0xf'),_0xbf3c1d,_['map'](_0x3eeacb,_0xe2d9('0x10'))[_0xe2d9('0x11')](',\x20'));_0x39e042['stop']();}else{var _0x1cbf34=_[_0xe2d9('0x12')](_0x2b317f['agents'],handleFindAgent(_0x45a38f['name']));if(_0x1cbf34){var _0x5e9057=(_0x45a38f[_0xe2d9('0x13')]||0xa)*0x3e8;var _0x27580d,_0x26388c;var _0x2fcc0f=seqqueue[_0xe2d9('0x14')](_0x5e9057);_0x2fcc0f['id']=_0xbf3c1d;_0x2fcc0f[_0xe2d9('0x15')]=_0x5e9057;_0x2fcc0f['channel']=_0x3fae2d[_0xe2d9('0x16')];writeLog(_0xbf3c1d,_0x1cbf34,util[_0xe2d9('0x9')]('START:%s',_0x5e9057));_0x2b317f[_0xe2d9('0x17')][_0xbf3c1d]['on'](_0xe2d9('0x18'),function(){logger[_0xe2d9('0x8')](_0xe2d9('0x19'),_0xbf3c1d);clearTimeout(_0x26388c);_0x26388c=undefined;_0x2fcc0f[_0xe2d9('0x1a')]();if(_0x2b317f[_0xe2d9('0x17')][_0xbf3c1d]){delete _0x2b317f['rules'][_0xbf3c1d];}_0x39e042['stop']();});_0x2b317f[_0xe2d9('0x17')][_0xbf3c1d]['on'](_0xe2d9('0x1b'),function(){if(_0x2b317f[_0xe2d9('0x17')][_0xbf3c1d]){delete _0x2b317f[_0xe2d9('0x17')][_0xbf3c1d];}});_0x26388c=setTimeout(function(){logger[_0xe2d9('0x8')](_0xe2d9('0x1c'),_0xbf3c1d);clearTimeout(_0x26388c);_0x2fcc0f['close']();_0x39e042[_0xe2d9('0x1d')]();},_0x5e9057);strategy['agent'](_0x2fcc0f,_0x1cbf34,_0x2b317f,_0x3fae2d);}else{logger[_0xe2d9('0xe')]('[%s][AGENT]\x20agent\x20not\x20found\x20%s',_0xbf3c1d,_0x45a38f[_0xe2d9('0xa')]);_0x39e042[_0xe2d9('0x1e')]();}}}catch(_0x84badd){console[_0xe2d9('0x1f')](_0x84badd);logger[_0xe2d9('0xe')](_0xe2d9('0x20'),_0xbf3c1d,_0x84badd['stack']);_0x39e042[_0xe2d9('0x1e')]();}};};
\ No newline at end of file
index c425f18..09f23af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c37=['amazonlex','providerName','Failed','lodash','moment','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','account','upperFirst','AccountId','InteractionId','created','isEmpty','body','Message','create','then','catch','error','stringify','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','LexRuntime','$LATEST','message','toString'];(function(_0x37bd26,_0x5ad346){var _0xe83dc4=function(_0x1ac229){while(--_0x1ac229){_0x37bd26['push'](_0x37bd26['shift']());}};_0xe83dc4(++_0x5ad346);}(_0x2c37,0x123));var _0x72c3=function(_0x57ed9c,_0x58a69c){_0x57ed9c=_0x57ed9c-0x0;var _0x20dff1=_0x2c37[_0x57ed9c];return _0x20dff1;};'use strict';var _=require(_0x72c3('0x0'));var moment=require(_0x72c3('0x1'));var AWS=require('aws-sdk');var utils=require(_0x72c3('0x2'));var logger=require(_0x72c3('0x3'))(_0x72c3('0x4'));var rpc={'chatMessage':require(_0x72c3('0x5')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x72c3('0x6')),'smsMessage':require(_0x72c3('0x7')),'faxMessage':require(_0x72c3('0x8')),'whatsappMessage':require(_0x72c3('0x9'))};exports[_0x72c3('0xa')]=function(_0x4bc271,_0x113a5c){return function(_0x4b26c3){try{if(!_[_0x72c3('0xb')](this[_0x72c3('0xc')][_0x72c3('0xd')])){logger[_0x72c3('0xe')](_0x72c3('0xf'),_0x4bc271,_0x72c3('0x10'));return _0x4b26c3[_0x72c3('0x11')]();}var _0x30a458={'ContactId':this[_0x72c3('0x12')]['id'],'sentAt':moment()[_0x72c3('0x13')](_0x72c3('0x14')),'direction':_0x72c3('0x15')};if(this[_0x72c3('0x16')]===_0x72c3('0x17')||this[_0x72c3('0x16')]===_0x72c3('0x18')){_0x30a458['phone']=this['interaction'][_0x72c3('0x19')];}var _0x468488=this[_0x72c3('0x16')];if(_0x468488==='chat'){_0x30a458['ChatWebsiteId']=this[_0x72c3('0x1a')]['id'];}else{_0x30a458[_[_0x72c3('0x1b')](_0x468488)+_0x72c3('0x1c')]=this[_0x72c3('0x1a')]['id'];}_0x30a458[_[_0x72c3('0x1b')](_0x468488)+_0x72c3('0x1d')]=this[_0x72c3('0xc')]['id'];if(this[_0x72c3('0xc')][_0x72c3('0x1e')]){var _0x5add36=_0x113a5c[0x4];if(!_[_0x72c3('0x1f')](_0x5add36)){_0x30a458[_0x72c3('0x20')]=utils['getMustacheRender'](_0x5add36,this);return rpc[_0x468488+_0x72c3('0x21')][_0x72c3('0x22')](_0x30a458)[_0x72c3('0x23')](function(_0x479db3){logger['info'](_0x72c3('0xf'),_0x4bc271,_0x30a458[_0x72c3('0x20')]);})[_0x72c3('0x24')](function(_0x396677){logger[_0x72c3('0x25')](_0x72c3('0xf'),_0x4bc271,JSON[_0x72c3('0x26')](_0x396677));})['finally'](function(){logger[_0x72c3('0xe')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x4bc271);_0x4b26c3[_0x72c3('0x27')]();});}else{logger[_0x72c3('0xe')](_0x72c3('0x28'),_0x4bc271);_0x4b26c3[_0x72c3('0x27')]();}}else{var _0x5a7808=this;var _0x30d82d=new AWS[(_0x72c3('0x29'))]({'accessKeyId':_0x113a5c[0x0],'secretAccessKey':_0x113a5c[0x1],'region':_0x113a5c[0x2]});var _0xd72796={'botAlias':_0x72c3('0x2a'),'botName':_0x113a5c[0x3],'inputText':this[_0x72c3('0x2b')][_0x72c3('0x20')],'userId':this[_0x72c3('0x16')]+':'+this[_0x72c3('0xc')]['id'][_0x72c3('0x2c')]()};_0x30d82d['postText'](_0xd72796,function(_0x168ef9,_0x3fb7b5){if(_0x168ef9){logger['error'](_0x72c3('0xf'),_0x4bc271,_0x168ef9[_0x72c3('0x2b')]);_0x4b26c3[_0x72c3('0x11')]();}else if(_0x3fb7b5&&_0x3fb7b5[_0x72c3('0x2b')]){_0x5a7808[_0x72c3('0x20')][_0x72c3('0x2d')]=_0x3fb7b5;_0x30a458[_0x72c3('0x20')]=_0x3fb7b5[_0x72c3('0x2b')];_0x30a458[_0x72c3('0x2e')]=_0x72c3('0x2d');_0x30a458['providerResponse']=JSON[_0x72c3('0x26')](_0x3fb7b5);return rpc[_0x468488+_0x72c3('0x21')]['create'](_0x30a458)['then'](function(_0xd65bd5){logger['info'](_0x72c3('0xf'),_0x4bc271,_0x30a458['body']);if(_0x3fb7b5['dialogState']==_0x72c3('0x2f')){_0x4b26c3[_0x72c3('0x11')]();}else{_0x4b26c3['stop']();}})[_0x72c3('0x24')](function(_0x4620ec){logger[_0x72c3('0x25')](_0x72c3('0xf'),_0x4bc271,JSON[_0x72c3('0x26')](_0x4620ec));_0x4b26c3[_0x72c3('0x11')]();});}else{_0x4b26c3[_0x72c3('0x11')]();}});}}catch(_0x5e11eb){logger[_0x72c3('0x25')]('[%s][AMAZONLEX]\x20%s',_0x4bc271,JSON['stringify'](_0x5e11eb));_0x4b26c3[_0x72c3('0x27')]();}};};
\ No newline at end of file
+var _0x9d5a=['ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','getMustacheRender','Message','create','then','body','catch','error','finally','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','$LATEST','message','toString','postText','amazonlex','providerName','providerResponse','dialogState','moment','aws-sdk','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','interaction','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','format','YYYY-MM-DD\x20HH:mm:ss','channel','whatsapp','chat'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x9d5a,0x1e5));var _0xa9d5=function(_0x556dda,_0x3180e8){_0x556dda=_0x556dda-0x0;var _0x3405ce=_0x9d5a[_0x556dda];return _0x3405ce;};'use strict';var _=require('lodash');var moment=require(_0xa9d5('0x0'));var AWS=require(_0xa9d5('0x1'));var utils=require(_0xa9d5('0x2'));var logger=require(_0xa9d5('0x3'))(_0xa9d5('0x4'));var rpc={'chatMessage':require(_0xa9d5('0x5')),'openchannelMessage':require(_0xa9d5('0x6')),'mailMessage':require(_0xa9d5('0x7')),'smsMessage':require(_0xa9d5('0x8')),'faxMessage':require(_0xa9d5('0x9')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0xa9d5('0xa')]=function(_0x186cef,_0x1f2b10){return function(_0x5a6948){try{if(!_['isNil'](this[_0xa9d5('0xb')]['UserId'])){logger[_0xa9d5('0xc')](_0xa9d5('0xd'),_0x186cef,_0xa9d5('0xe'));return _0x5a6948[_0xa9d5('0xf')]();}var _0x2c85f9={'ContactId':this['contact']['id'],'sentAt':moment()[_0xa9d5('0x10')](_0xa9d5('0x11')),'direction':'out'};if(this[_0xa9d5('0x12')]==='sms'||this[_0xa9d5('0x12')]===_0xa9d5('0x13')){_0x2c85f9['phone']=this[_0xa9d5('0xb')]['phone'];}var _0x4d7870=this['channel'];if(_0x4d7870===_0xa9d5('0x14')){_0x2c85f9[_0xa9d5('0x15')]=this[_0xa9d5('0x16')]['id'];}else{_0x2c85f9[_[_0xa9d5('0x17')](_0x4d7870)+_0xa9d5('0x18')]=this[_0xa9d5('0x16')]['id'];}_0x2c85f9[_[_0xa9d5('0x17')](_0x4d7870)+_0xa9d5('0x19')]=this[_0xa9d5('0xb')]['id'];if(this['interaction'][_0xa9d5('0x1a')]){var _0x3dfe42=_0x1f2b10[0x4];if(!_[_0xa9d5('0x1b')](_0x3dfe42)){_0x2c85f9['body']=utils[_0xa9d5('0x1c')](_0x3dfe42,this);return rpc[_0x4d7870+_0xa9d5('0x1d')][_0xa9d5('0x1e')](_0x2c85f9)[_0xa9d5('0x1f')](function(_0x46dd54){logger[_0xa9d5('0xc')](_0xa9d5('0xd'),_0x186cef,_0x2c85f9[_0xa9d5('0x20')]);})[_0xa9d5('0x21')](function(_0x23c454){logger[_0xa9d5('0x22')](_0xa9d5('0xd'),_0x186cef,JSON['stringify'](_0x23c454));})[_0xa9d5('0x23')](function(){logger[_0xa9d5('0xc')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x186cef);_0x5a6948[_0xa9d5('0x24')]();});}else{logger[_0xa9d5('0xc')](_0xa9d5('0x25'),_0x186cef);_0x5a6948['stop']();}}else{var _0x1ce68c=this;var _0x593bcc=new AWS['LexRuntime']({'accessKeyId':_0x1f2b10[0x0],'secretAccessKey':_0x1f2b10[0x1],'region':_0x1f2b10[0x2]});var _0x17fcf7={'botAlias':_0xa9d5('0x26'),'botName':_0x1f2b10[0x3],'inputText':this[_0xa9d5('0x27')][_0xa9d5('0x20')],'userId':this['channel']+':'+this['interaction']['id'][_0xa9d5('0x28')]()};_0x593bcc[_0xa9d5('0x29')](_0x17fcf7,function(_0x13dadd,_0x107565){if(_0x13dadd){logger[_0xa9d5('0x22')](_0xa9d5('0xd'),_0x186cef,_0x13dadd['message']);_0x5a6948[_0xa9d5('0xf')]();}else if(_0x107565&&_0x107565[_0xa9d5('0x27')]){_0x1ce68c[_0xa9d5('0x20')][_0xa9d5('0x2a')]=_0x107565;_0x2c85f9['body']=_0x107565['message'];_0x2c85f9[_0xa9d5('0x2b')]=_0xa9d5('0x2a');_0x2c85f9[_0xa9d5('0x2c')]=JSON['stringify'](_0x107565);return rpc[_0x4d7870+_0xa9d5('0x1d')][_0xa9d5('0x1e')](_0x2c85f9)[_0xa9d5('0x1f')](function(_0x14e432){logger['info']('[%s][AMAZONLEX]\x20%s',_0x186cef,_0x2c85f9[_0xa9d5('0x20')]);if(_0x107565[_0xa9d5('0x2d')]=='Failed'){_0x5a6948[_0xa9d5('0xf')]();}else{_0x5a6948[_0xa9d5('0x24')]();}})[_0xa9d5('0x21')](function(_0x31d5ee){logger[_0xa9d5('0x22')](_0xa9d5('0xd'),_0x186cef,JSON['stringify'](_0x31d5ee));_0x5a6948[_0xa9d5('0xf')]();});}else{_0x5a6948[_0xa9d5('0xf')]();}});}}catch(_0x52fba6){logger[_0xa9d5('0x22')](_0xa9d5('0xd'),_0x186cef,JSON['stringify'](_0x52fba6));_0x5a6948[_0xa9d5('0x24')]();}};};
\ No newline at end of file
index e14f45b..ebabe3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9aa3=['getMustacheRender','message','from','read','subject','startsWith','Re:','Re:\x20','chat','account','upperFirst','AccountId','InteractionId','Message','inReplyTo','messageId','html','<div\x20id=\x22xm-mail-content\x22>','replace','<div','headers','All','auto_reply','sendMailMessage','smtpOptions','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','create','stringify','catch','error','[RPC][%s][AUTOREPLY]\x20%s','finally','resolve','Interaction','update','lodash','moment','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','channel','mail','info','[%s][AUTOREPLY]\x20%s','next','isNil','interaction','created','Autoreply\x20already\x20sent','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','contact','format','body'];(function(_0x34841d,_0x5b79b4){var _0x4f51eb=function(_0x4d1a32){while(--_0x4d1a32){_0x34841d['push'](_0x34841d['shift']());}};_0x4f51eb(++_0x5b79b4);}(_0x9aa3,0x134));var _0x39aa=function(_0x5ed2e3,_0x254df3){_0x5ed2e3=_0x5ed2e3-0x0;var _0x2c92dd=_0x9aa3[_0x5ed2e3];return _0x2c92dd;};'use strict';var _=require(_0x39aa('0x0'));var moment=require(_0x39aa('0x1'));var utils=require(_0x39aa('0x2'));var logger=require(_0x39aa('0x3'))(_0x39aa('0x4'));var rpc={'chatMessage':require(_0x39aa('0x5')),'openchannelMessage':require(_0x39aa('0x6')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x39aa('0x7')),'faxMessage':require(_0x39aa('0x8')),'whatsappMessage':require(_0x39aa('0x9')),'chatInteraction':require(_0x39aa('0xa')),'openchannelInteraction':require(_0x39aa('0xb')),'mailInteraction':require(_0x39aa('0xc')),'smsInteraction':require(_0x39aa('0xd')),'faxInteraction':require(_0x39aa('0xe')),'whatsappInteraction':require(_0x39aa('0xf'))};var mailRpc=require(_0x39aa('0x10'));exports['consequence']=function(_0x1ebaea,_0x5eeca6,_0x4c318c,_0x210155){return function(_0x391876){try{var _0x5e68a6=this[_0x39aa('0x11')];if(_0x5e68a6===_0x39aa('0x12')&&_0x210155['body']['isAutoreply']){logger[_0x39aa('0x13')](_0x39aa('0x14'),_0x1ebaea,'Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)');return _0x391876[_0x39aa('0x15')]();}if(_0x5eeca6[0x0]==='1'&&(_[_0x39aa('0x16')](this[_0x39aa('0x17')][_0x39aa('0x18')])||!this[_0x39aa('0x17')][_0x39aa('0x18')])){logger[_0x39aa('0x13')](_0x39aa('0x14'),_0x1ebaea,_0x39aa('0x19'));return _0x391876[_0x39aa('0x15')]();}if(_0x5eeca6[0x0]==='2'&&this[_0x39aa('0x17')][_0x39aa('0x1a')]){logger[_0x39aa('0x13')](_0x39aa('0x1b'),_0x1ebaea,_0x39aa('0x1c'));return _0x391876[_0x39aa('0x15')]();}var _0x1f2421={'ContactId':this[_0x39aa('0x1d')]['id'],'sentAt':moment()[_0x39aa('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':'out'};if(this[_0x39aa('0x11')]===_0x39aa('0x12')){_0x1f2421[_0x39aa('0x1f')]=utils[_0x39aa('0x20')](_0x5eeca6[0x2],this);}else{_0x1f2421[_0x39aa('0x1f')]=utils[_0x39aa('0x20')](_0x5eeca6[0x1],this);}if(this[_0x39aa('0x21')]){_0x1f2421['to']=this[_0x39aa('0x21')][_0x39aa('0x22')]||'';if(this[_0x39aa('0x11')]===_0x39aa('0x12')&&_0x5eeca6[0x1]==='1'){_0x1f2421['cc']=this[_0x39aa('0x21')]['cc']||'';}_0x1f2421[_0x39aa('0x22')]=this[_0x39aa('0x21')]['to']||'';_0x1f2421['phone']=this[_0x39aa('0x21')]['phone']||'';_0x1f2421[_0x39aa('0x23')]=!![];if(this[_0x39aa('0x21')][_0x39aa('0x24')]){_0x1f2421['subject']='';_0x1f2421[_0x39aa('0x24')]+=_[_0x39aa('0x25')](this[_0x39aa('0x21')][_0x39aa('0x24')],_0x39aa('0x26'))?'':_0x39aa('0x27');_0x1f2421[_0x39aa('0x24')]+=this[_0x39aa('0x21')]['subject'];}}if(this['channel']===_0x39aa('0x28')){_0x1f2421['ChatWebsiteId']=this[_0x39aa('0x29')]['id'];}else{_0x1f2421[_[_0x39aa('0x2a')](this['channel'])+_0x39aa('0x2b')]=this[_0x39aa('0x29')]['id'];}_0x1f2421[_[_0x39aa('0x2a')](this['channel'])+_0x39aa('0x2c')]=this['interaction']['id'];var _0x100620=this[_0x39aa('0x17')];if(rpc[this[_0x39aa('0x11')]+_0x39aa('0x2d')]){if(this[_0x39aa('0x11')]===_0x39aa('0x12')){_0x1f2421[_0x39aa('0x2e')]=this[_0x39aa('0x21')][_0x39aa('0x2f')];_0x1f2421[_0x39aa('0x30')]=_0x39aa('0x31')+_[_0x39aa('0x32')](_0x1f2421[_0x39aa('0x1f')],'<div\x20id=\x22xm-mail-content\x22',_0x39aa('0x33'))+'</div>';_0x1f2421[_0x39aa('0x34')]={'Auto-Submitted':'auto-replied','X-Auto-Response-Suppress':_0x39aa('0x35'),'Precedence':_0x39aa('0x36')};return mailRpc[_0x39aa('0x37')](this[_0x39aa('0x29')][_0x39aa('0x38')],_0x1f2421)[_0x39aa('0x39')](function(_0xbdef89){logger[_0x39aa('0x13')](_0x39aa('0x3a'),_0x1ebaea);_0x1f2421[_0x39aa('0x2f')]=_0xbdef89[_0x39aa('0x21')]['messageId'];return rpc[_0x5e68a6+_0x39aa('0x2d')][_0x39aa('0x3b')](_0x1f2421);})[_0x39aa('0x39')](function(_0x326cb0){logger[_0x39aa('0x13')](_0x39aa('0x14'),_0x1ebaea,JSON[_0x39aa('0x3c')](_0x326cb0));})[_0x39aa('0x3d')](function(_0x15d36f){logger[_0x39aa('0x3e')](_0x39aa('0x3f'),_0x1ebaea,JSON['stringify'](_0x15d36f));})[_0x39aa('0x40')](function(){Promise[_0x39aa('0x41')]()['then'](function(){if(_0x5eeca6[0x0]!=='2'||_0x100620[_0x39aa('0x1a')])return;return rpc[_0x5e68a6+_0x39aa('0x42')][_0x39aa('0x43')](_0x100620['id'],{'autoreplyExecuted':!![]})[_0x39aa('0x39')](function(_0x2979a1){logger[_0x39aa('0x13')](_0x39aa('0x1b'),_0x1ebaea,JSON[_0x39aa('0x3c')](_0x2979a1));})[_0x39aa('0x3d')](function(_0x74100d){logger[_0x39aa('0x3e')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x1ebaea,JSON[_0x39aa('0x3c')](_0x74100d));});})[_0x39aa('0x39')](function(){_0x391876[_0x39aa('0x15')]();});});}else{return rpc[this[_0x39aa('0x11')]+'Message']['create'](_0x1f2421)[_0x39aa('0x39')](function(){logger[_0x39aa('0x13')](_0x39aa('0x14'),_0x1ebaea,_0x1f2421['body']);})[_0x39aa('0x3d')](function(_0x45dcb2){logger['error'](_0x39aa('0x14'),_0x1ebaea,JSON['stringify'](_0x45dcb2));})[_0x39aa('0x40')](function(){Promise[_0x39aa('0x41')]()[_0x39aa('0x39')](function(){if(_0x5eeca6[0x0]!=='2'||_0x100620[_0x39aa('0x1a')])return;return rpc[_0x5e68a6+_0x39aa('0x42')][_0x39aa('0x43')](_0x100620['id'],{'autoreplyExecuted':!![]})[_0x39aa('0x39')](function(_0x34315e){logger[_0x39aa('0x13')](_0x39aa('0x1b'),_0x1ebaea,JSON[_0x39aa('0x3c')](_0x34315e));})['catch'](function(_0x164cd3){logger[_0x39aa('0x3e')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x1ebaea,JSON[_0x39aa('0x3c')](_0x164cd3));});})[_0x39aa('0x39')](function(){_0x391876['next']();});});}}}catch(_0x4d1b71){logger[_0x39aa('0x3e')]('[%s][AUTOREPLY]\x20%s',_0x1ebaea,JSON[_0x39aa('0x3c')](_0x4d1b71));_0x391876['stop']();}};};
\ No newline at end of file
+var _0xed43=['../../mailRpc','consequence','channel','mail','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','isNil','interaction','Autoreply\x20already\x20sent','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','YYYY-MM-DD\x20HH:mm:ss','out','message','from','phone','read','subject','startsWith','Re:','Re:\x20','account','upperFirst','AccountId','InteractionId','inReplyTo','html','<div\x20id=\x22xm-mail-content\x22>','replace','<div\x20id=\x22xm-mail-content\x22','<div','</div>','headers','All','sendMailMessage','smtpOptions','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','messageId','create','catch','[RPC][%s][AUTOREPLY]\x20%s','stringify','finally','Interaction','update','error','Message','lodash','moment','./utils','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction'];(function(_0x3dc607,_0x1dd310){var _0x3f1f90=function(_0x215181){while(--_0x215181){_0x3dc607['push'](_0x3dc607['shift']());}};_0x3f1f90(++_0x1dd310);}(_0xed43,0xbb));var _0x3ed4=function(_0x2125f0,_0x2f23b9){_0x2125f0=_0x2125f0-0x0;var _0x12d6eb=_0xed43[_0x2125f0];return _0x12d6eb;};'use strict';var _=require(_0x3ed4('0x0'));var moment=require(_0x3ed4('0x1'));var utils=require(_0x3ed4('0x2'));var logger=require('../../../../config/logger')(_0x3ed4('0x3'));var rpc={'chatMessage':require(_0x3ed4('0x4')),'openchannelMessage':require(_0x3ed4('0x5')),'mailMessage':require(_0x3ed4('0x6')),'smsMessage':require(_0x3ed4('0x7')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x3ed4('0x8')),'chatInteraction':require(_0x3ed4('0x9')),'openchannelInteraction':require(_0x3ed4('0xa')),'mailInteraction':require('../../rpc/mailInteraction'),'smsInteraction':require(_0x3ed4('0xb')),'faxInteraction':require(_0x3ed4('0xc')),'whatsappInteraction':require(_0x3ed4('0xd'))};var mailRpc=require(_0x3ed4('0xe'));exports[_0x3ed4('0xf')]=function(_0x3fbb17,_0x2db5ab,_0x575f50,_0x5cba88){return function(_0xd9b4){try{var _0x257ff8=this[_0x3ed4('0x10')];if(_0x257ff8===_0x3ed4('0x11')&&_0x5cba88[_0x3ed4('0x12')][_0x3ed4('0x13')]){logger[_0x3ed4('0x14')](_0x3ed4('0x15'),_0x3fbb17,_0x3ed4('0x16'));return _0xd9b4[_0x3ed4('0x17')]();}if(_0x2db5ab[0x0]==='1'&&(_[_0x3ed4('0x18')](this[_0x3ed4('0x19')]['created'])||!this[_0x3ed4('0x19')]['created'])){logger[_0x3ed4('0x14')](_0x3ed4('0x15'),_0x3fbb17,_0x3ed4('0x1a'));return _0xd9b4[_0x3ed4('0x17')]();}if(_0x2db5ab[0x0]==='2'&&this['interaction'][_0x3ed4('0x1b')]){logger['info'](_0x3ed4('0x1c'),_0x3fbb17,_0x3ed4('0x1d'));return _0xd9b4[_0x3ed4('0x17')]();}var _0x4f1365={'ContactId':this['contact']['id'],'sentAt':moment()['format'](_0x3ed4('0x1e')),'direction':_0x3ed4('0x1f')};if(this[_0x3ed4('0x10')]==='mail'){_0x4f1365[_0x3ed4('0x12')]=utils['getMustacheRender'](_0x2db5ab[0x2],this);}else{_0x4f1365[_0x3ed4('0x12')]=utils['getMustacheRender'](_0x2db5ab[0x1],this);}if(this[_0x3ed4('0x20')]){_0x4f1365['to']=this[_0x3ed4('0x20')][_0x3ed4('0x21')]||'';if(this[_0x3ed4('0x10')]==='mail'&&_0x2db5ab[0x1]==='1'){_0x4f1365['cc']=this[_0x3ed4('0x20')]['cc']||'';}_0x4f1365[_0x3ed4('0x21')]=this['message']['to']||'';_0x4f1365['phone']=this[_0x3ed4('0x20')][_0x3ed4('0x22')]||'';_0x4f1365[_0x3ed4('0x23')]=!![];if(this['message'][_0x3ed4('0x24')]){_0x4f1365[_0x3ed4('0x24')]='';_0x4f1365[_0x3ed4('0x24')]+=_[_0x3ed4('0x25')](this['message']['subject'],_0x3ed4('0x26'))?'':_0x3ed4('0x27');_0x4f1365[_0x3ed4('0x24')]+=this[_0x3ed4('0x20')][_0x3ed4('0x24')];}}if(this[_0x3ed4('0x10')]==='chat'){_0x4f1365['ChatWebsiteId']=this[_0x3ed4('0x28')]['id'];}else{_0x4f1365[_[_0x3ed4('0x29')](this[_0x3ed4('0x10')])+_0x3ed4('0x2a')]=this[_0x3ed4('0x28')]['id'];}_0x4f1365[_[_0x3ed4('0x29')](this[_0x3ed4('0x10')])+_0x3ed4('0x2b')]=this[_0x3ed4('0x19')]['id'];var _0x10ba8c=this[_0x3ed4('0x19')];if(rpc[this[_0x3ed4('0x10')]+'Message']){if(this[_0x3ed4('0x10')]===_0x3ed4('0x11')){_0x4f1365[_0x3ed4('0x2c')]=this[_0x3ed4('0x20')]['messageId'];_0x4f1365[_0x3ed4('0x2d')]=_0x3ed4('0x2e')+_[_0x3ed4('0x2f')](_0x4f1365[_0x3ed4('0x12')],_0x3ed4('0x30'),_0x3ed4('0x31'))+_0x3ed4('0x32');_0x4f1365[_0x3ed4('0x33')]={'Auto-Submitted':'auto-replied','X-Auto-Response-Suppress':_0x3ed4('0x34'),'Precedence':'auto_reply'};return mailRpc[_0x3ed4('0x35')](this['account'][_0x3ed4('0x36')],_0x4f1365)[_0x3ed4('0x37')](function(_0x3d3dea){logger[_0x3ed4('0x14')](_0x3ed4('0x38'),_0x3fbb17);_0x4f1365[_0x3ed4('0x39')]=_0x3d3dea[_0x3ed4('0x20')][_0x3ed4('0x39')];return rpc[_0x257ff8+'Message'][_0x3ed4('0x3a')](_0x4f1365);})[_0x3ed4('0x37')](function(_0x28c603){logger[_0x3ed4('0x14')]('[%s][AUTOREPLY]\x20%s',_0x3fbb17,JSON['stringify'](_0x28c603));})[_0x3ed4('0x3b')](function(_0x3b99b0){logger['error'](_0x3ed4('0x3c'),_0x3fbb17,JSON[_0x3ed4('0x3d')](_0x3b99b0));})[_0x3ed4('0x3e')](function(){Promise['resolve']()['then'](function(){if(_0x2db5ab[0x0]!=='2'||_0x10ba8c[_0x3ed4('0x1b')])return;return rpc[_0x257ff8+_0x3ed4('0x3f')][_0x3ed4('0x40')](_0x10ba8c['id'],{'autoreplyExecuted':!![]})[_0x3ed4('0x37')](function(_0x269a55){logger[_0x3ed4('0x14')](_0x3ed4('0x1c'),_0x3fbb17,JSON[_0x3ed4('0x3d')](_0x269a55));})[_0x3ed4('0x3b')](function(_0x49e55c){logger[_0x3ed4('0x41')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x3fbb17,JSON['stringify'](_0x49e55c));});})[_0x3ed4('0x37')](function(){_0xd9b4[_0x3ed4('0x17')]();});});}else{return rpc[this[_0x3ed4('0x10')]+_0x3ed4('0x42')][_0x3ed4('0x3a')](_0x4f1365)['then'](function(){logger[_0x3ed4('0x14')](_0x3ed4('0x15'),_0x3fbb17,_0x4f1365['body']);})[_0x3ed4('0x3b')](function(_0x568cd8){logger['error'](_0x3ed4('0x15'),_0x3fbb17,JSON['stringify'](_0x568cd8));})[_0x3ed4('0x3e')](function(){Promise['resolve']()['then'](function(){if(_0x2db5ab[0x0]!=='2'||_0x10ba8c[_0x3ed4('0x1b')])return;return rpc[_0x257ff8+_0x3ed4('0x3f')]['update'](_0x10ba8c['id'],{'autoreplyExecuted':!![]})[_0x3ed4('0x37')](function(_0x3af18f){logger[_0x3ed4('0x14')](_0x3ed4('0x1c'),_0x3fbb17,JSON['stringify'](_0x3af18f));})[_0x3ed4('0x3b')](function(_0x584512){logger[_0x3ed4('0x41')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x3fbb17,JSON[_0x3ed4('0x3d')](_0x584512));});})[_0x3ed4('0x37')](function(){_0xd9b4['next']();});});}}}catch(_0x5dd6e9){logger[_0x3ed4('0x41')](_0x3ed4('0x15'),_0x3fbb17,JSON[_0x3ed4('0x3d')](_0x5dd6e9));_0xd9b4['stop']();}};};
\ No newline at end of file
index 7dba7d9..c67247a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe745=['[%s][CLOSE]\x20%s','stringify','finally','stop','moment','../../../../config/logger','routing','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','info','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','system','channel','Interaction','update','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','error'];(function(_0x397cfb,_0xb8f317){var _0x15fed9=function(_0x3eba43){while(--_0x3eba43){_0x397cfb['push'](_0x397cfb['shift']());}};_0x15fed9(++_0xb8f317);}(_0xe745,0x1f2));var _0x5e74=function(_0xee25ad,_0x3a982b){_0xee25ad=_0xee25ad-0x0;var _0x113b19=_0xe745[_0xee25ad];return _0x113b19;};'use strict';var moment=require(_0x5e74('0x0'));var logger=require(_0x5e74('0x1'))(_0x5e74('0x2'));var rpc={'chatInteraction':require(_0x5e74('0x3')),'openchannelInteraction':require(_0x5e74('0x4')),'smsInteraction':require(_0x5e74('0x5')),'mailInteraction':require(_0x5e74('0x6')),'faxInteraction':require(_0x5e74('0x7')),'whatsappInteraction':require(_0x5e74('0x8'))};exports[_0x5e74('0x9')]=function(_0x45c12c,_0x5e8ace,_0x3a236e,_0x4714e7){return function(_0x57ac94){try{logger[_0x5e74('0xa')](_0x5e74('0xb'),_0x45c12c,_0x5e8ace[0x0]);var _0x534ba6={'closed':0x1,'closedAt':moment()[_0x5e74('0xc')](_0x5e74('0xd')),'closeReason':_0x5e74('0xe'),'disposition':_0x5e8ace[0x0]};if(rpc[_0x4714e7[_0x5e74('0xf')]+'Interaction']){rpc[_0x4714e7['channel']+_0x5e74('0x10')][_0x5e74('0x11')](_0x4714e7['interaction']['id'],_0x534ba6)[_0x5e74('0x12')](function(_0x2b97d5){logger[_0x5e74('0xa')](_0x5e74('0x13'),_0x45c12c,_0x4714e7['interaction']['id']);})[_0x5e74('0x14')](function(_0x3e6e3b){logger[_0x5e74('0x15')](_0x5e74('0x16'),_0x45c12c,JSON[_0x5e74('0x17')](_0x3e6e3b));})[_0x5e74('0x18')](function(){_0x57ac94[_0x5e74('0x19')]();});}}catch(_0x5085dd){logger[_0x5e74('0x15')]('[%s][CLOSE]\x20%s',_0x45c12c,JSON['stringify'](_0x5085dd));_0x57ac94[_0x5e74('0x19')]();}};};
\ No newline at end of file
+var _0xbdaf=['../../rpc/whatsappInteraction','consequence','format','channel','Interaction','interaction','info','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','error','[%s][CLOSE]\x20%s','stringify','finally','stop','../../../../config/logger','routing','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction'];(function(_0xb44d5c,_0x534500){var _0x389299=function(_0x33b650){while(--_0x33b650){_0xb44d5c['push'](_0xb44d5c['shift']());}};_0x389299(++_0x534500);}(_0xbdaf,0xe0));var _0xfbda=function(_0x3c51d4,_0x36ba53){_0x3c51d4=_0x3c51d4-0x0;var _0x53c45f=_0xbdaf[_0x3c51d4];return _0x53c45f;};'use strict';var moment=require('moment');var logger=require(_0xfbda('0x0'))(_0xfbda('0x1'));var rpc={'chatInteraction':require(_0xfbda('0x2')),'openchannelInteraction':require(_0xfbda('0x3')),'smsInteraction':require(_0xfbda('0x4')),'mailInteraction':require(_0xfbda('0x5')),'faxInteraction':require(_0xfbda('0x6')),'whatsappInteraction':require(_0xfbda('0x7'))};exports[_0xfbda('0x8')]=function(_0x89d113,_0x23f748,_0x2a28c5,_0x341e62){return function(_0x3a651f){try{logger['info']('[%s][CLOSE]\x20reason\x20%s',_0x89d113,_0x23f748[0x0]);var _0x4de893={'closed':0x1,'closedAt':moment()[_0xfbda('0x9')]('YYYY-MM-DD\x20HH:mm:ss'),'closeReason':'system','disposition':_0x23f748[0x0]};if(rpc[_0x341e62[_0xfbda('0xa')]+_0xfbda('0xb')]){rpc[_0x341e62[_0xfbda('0xa')]+_0xfbda('0xb')]['update'](_0x341e62[_0xfbda('0xc')]['id'],_0x4de893)['then'](function(_0x38ee7f){logger[_0xfbda('0xd')](_0xfbda('0xe'),_0x89d113,_0x341e62['interaction']['id']);})[_0xfbda('0xf')](function(_0x475c33){logger[_0xfbda('0x10')](_0xfbda('0x11'),_0x89d113,JSON[_0xfbda('0x12')](_0x475c33));})[_0xfbda('0x13')](function(){_0x3a651f[_0xfbda('0x14')]();});}}catch(_0x2e87a7){logger[_0xfbda('0x10')](_0xfbda('0x11'),_0x89d113,JSON[_0xfbda('0x12')](_0x2e87a7));_0x3a651f[_0xfbda('0x14')]();}};};
\ No newline at end of file
index 731f9b5..d7da394 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d4d=['finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','textRequest','message','then','dialogflow','result','fulfillment','speech','providerResponse','create','metadata','endConversation','next','catch','error','lodash','moment','apiai-promise','md5','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','interaction','info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','isEmpty','body','getMustacheRender','stringify'];(function(_0x139272,_0x5512fc){var _0x31a11a=function(_0x25a9f5){while(--_0x25a9f5){_0x139272['push'](_0x139272['shift']());}};_0x31a11a(++_0x5512fc);}(_0x0d4d,0x132));var _0xd0d4=function(_0x446d40,_0x4303d0){_0x446d40=_0x446d40-0x0;var _0x2f3b57=_0x0d4d[_0x446d40];return _0x2f3b57;};'use strict';var _=require(_0xd0d4('0x0'));var moment=require(_0xd0d4('0x1'));var apiai=require(_0xd0d4('0x2'));var md5=require(_0xd0d4('0x3'));var utils=require(_0xd0d4('0x4'));var logger=require(_0xd0d4('0x5'))('routing');var rpc={'chatMessage':require(_0xd0d4('0x6')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xd0d4('0x7')),'smsMessage':require(_0xd0d4('0x8')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xd0d4('0x9'))};exports[_0xd0d4('0xa')]=function(_0x1c5d01,_0x5c8c7b){return function(_0x5bfae8){try{if(!_['isNil'](this[_0xd0d4('0xb')]['UserId'])){logger[_0xd0d4('0xc')](_0xd0d4('0xd'),_0x1c5d01,_0xd0d4('0xe'));return _0x5bfae8['next']();}var _0x1ed4da={'ContactId':this[_0xd0d4('0xf')]['id'],'sentAt':moment()[_0xd0d4('0x10')](_0xd0d4('0x11')),'direction':_0xd0d4('0x12')};if(this[_0xd0d4('0x13')]==='sms'||this[_0xd0d4('0x13')]===_0xd0d4('0x14')){_0x1ed4da[_0xd0d4('0x15')]=this[_0xd0d4('0xb')][_0xd0d4('0x15')];}var _0x474d36=this['channel'];if(_0x474d36===_0xd0d4('0x16')){_0x1ed4da[_0xd0d4('0x17')]=this[_0xd0d4('0x18')]['id'];}else{_0x1ed4da[_['upperFirst'](_0x474d36)+'AccountId']=this[_0xd0d4('0x18')]['id'];}_0x1ed4da[_[_0xd0d4('0x19')](_0x474d36)+'InteractionId']=this[_0xd0d4('0xb')]['id'];if(this[_0xd0d4('0xb')]['created']){var _0x5d7e66=_0x5c8c7b[0x2];if(!_[_0xd0d4('0x1a')](_0x5d7e66)){_0x1ed4da[_0xd0d4('0x1b')]=utils[_0xd0d4('0x1c')](_0x5d7e66,this);return rpc[_0x474d36+'Message']['create'](_0x1ed4da)['then'](function(_0x407cda){logger[_0xd0d4('0xc')](_0xd0d4('0xd'),_0x1c5d01,_0x1ed4da['body']);})['catch'](function(_0x3d2d18){logger['error'](_0xd0d4('0xd'),_0x1c5d01,JSON[_0xd0d4('0x1d')](_0x3d2d18));})[_0xd0d4('0x1e')](function(){logger['info'](_0xd0d4('0x1f'),_0x1c5d01);_0x5bfae8['stop']();});}else{logger['info'](_0xd0d4('0x20'),_0x1c5d01);_0x5bfae8[_0xd0d4('0x21')]();}}else{var _0x49b6f0=this;var _0x50f959=apiai(_0x5c8c7b[0x0],{'language':_0x5c8c7b[0x1]||'en'});return _0x50f959[_0xd0d4('0x22')](this[_0xd0d4('0x23')][_0xd0d4('0x1b')],{'sessionId':md5(this[_0xd0d4('0xb')]['id'])})[_0xd0d4('0x24')](function(_0x1c0831){_0x49b6f0['body'][_0xd0d4('0x25')]=_0x1c0831;_0x1ed4da['body']=_0x1c0831[_0xd0d4('0x26')][_0xd0d4('0x27')][_0xd0d4('0x28')];_0x1ed4da['providerName']='dialogflow';_0x1ed4da[_0xd0d4('0x29')]=JSON['stringify'](_0x1c0831);return rpc[_0x474d36+'Message'][_0xd0d4('0x2a')](_0x1ed4da)[_0xd0d4('0x24')](function(_0x324fd5){logger[_0xd0d4('0xc')]('[%s][DIALOGFLOW]\x20%s',_0x1c5d01,_0x1ed4da[_0xd0d4('0x1b')]);if(_0x1c0831[_0xd0d4('0x26')][_0xd0d4('0x2b')][_0xd0d4('0x2c')]){_0x5bfae8[_0xd0d4('0x2d')]();}else{_0x5bfae8[_0xd0d4('0x21')]();}})[_0xd0d4('0x2e')](function(_0x266b91){logger[_0xd0d4('0x2f')]('[%s][DIALOGFLOW]\x20%s',_0x1c5d01,JSON[_0xd0d4('0x1d')](_0x266b91));_0x5bfae8[_0xd0d4('0x2d')]();});})[_0xd0d4('0x2e')](function(_0x18096a){logger[_0xd0d4('0x2f')](_0xd0d4('0xd'),_0x1c5d01,_0x18096a['message']);_0x5bfae8['next']();});}}catch(_0x106bfe){logger['error'](_0xd0d4('0xd'),_0x1c5d01,JSON[_0xd0d4('0x1d')](_0x106bfe));_0x5bfae8[_0xd0d4('0x21')]();}};};
\ No newline at end of file
+var _0xc051=['isNil','UserId','info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','format','YYYY-MM-DD\x20HH:mm:ss','channel','whatsapp','phone','interaction','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','body','getMustacheRender','Message','create','catch','error','stringify','finally','stop','message','then','dialogflow','result','fulfillment','speech','providerResponse','next','lodash','moment','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence'];(function(_0x1d4d41,_0x1bb22b){var _0x2f4af1=function(_0x2e7cec){while(--_0x2e7cec){_0x1d4d41['push'](_0x1d4d41['shift']());}};_0x2f4af1(++_0x1bb22b);}(_0xc051,0xb5));var _0x1c05=function(_0x5d47fe,_0x5d6118){_0x5d47fe=_0x5d47fe-0x0;var _0x4fb7d2=_0xc051[_0x5d47fe];return _0x4fb7d2;};'use strict';var _=require(_0x1c05('0x0'));var moment=require(_0x1c05('0x1'));var apiai=require('apiai-promise');var md5=require('md5');var utils=require(_0x1c05('0x2'));var logger=require(_0x1c05('0x3'))(_0x1c05('0x4'));var rpc={'chatMessage':require(_0x1c05('0x5')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x1c05('0x6')),'smsMessage':require(_0x1c05('0x7')),'faxMessage':require(_0x1c05('0x8')),'whatsappMessage':require(_0x1c05('0x9'))};exports[_0x1c05('0xa')]=function(_0x28a978,_0x3a9ba8){return function(_0x44d233){try{if(!_[_0x1c05('0xb')](this['interaction'][_0x1c05('0xc')])){logger[_0x1c05('0xd')](_0x1c05('0xe'),_0x28a978,_0x1c05('0xf'));return _0x44d233['next']();}var _0x25afe5={'ContactId':this[_0x1c05('0x10')]['id'],'sentAt':moment()[_0x1c05('0x11')](_0x1c05('0x12')),'direction':'out'};if(this[_0x1c05('0x13')]==='sms'||this[_0x1c05('0x13')]===_0x1c05('0x14')){_0x25afe5[_0x1c05('0x15')]=this[_0x1c05('0x16')][_0x1c05('0x15')];}var _0x388a1a=this[_0x1c05('0x13')];if(_0x388a1a===_0x1c05('0x17')){_0x25afe5[_0x1c05('0x18')]=this[_0x1c05('0x19')]['id'];}else{_0x25afe5[_[_0x1c05('0x1a')](_0x388a1a)+_0x1c05('0x1b')]=this['account']['id'];}_0x25afe5[_[_0x1c05('0x1a')](_0x388a1a)+_0x1c05('0x1c')]=this[_0x1c05('0x16')]['id'];if(this['interaction'][_0x1c05('0x1d')]){var _0x49b538=_0x3a9ba8[0x2];if(!_[_0x1c05('0x1e')](_0x49b538)){_0x25afe5[_0x1c05('0x1f')]=utils[_0x1c05('0x20')](_0x49b538,this);return rpc[_0x388a1a+_0x1c05('0x21')][_0x1c05('0x22')](_0x25afe5)['then'](function(_0x6ec656){logger[_0x1c05('0xd')](_0x1c05('0xe'),_0x28a978,_0x25afe5['body']);})[_0x1c05('0x23')](function(_0x1171b2){logger[_0x1c05('0x24')]('[%s][DIALOGFLOW]\x20%s',_0x28a978,JSON[_0x1c05('0x25')](_0x1171b2));})[_0x1c05('0x26')](function(){logger['info']('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x28a978);_0x44d233[_0x1c05('0x27')]();});}else{logger['info']('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x28a978);_0x44d233['stop']();}}else{var _0x31beae=this;var _0xcce64e=apiai(_0x3a9ba8[0x0],{'language':_0x3a9ba8[0x1]||'en'});return _0xcce64e['textRequest'](this[_0x1c05('0x28')][_0x1c05('0x1f')],{'sessionId':md5(this[_0x1c05('0x16')]['id'])})[_0x1c05('0x29')](function(_0x5f4a4c){_0x31beae[_0x1c05('0x1f')][_0x1c05('0x2a')]=_0x5f4a4c;_0x25afe5[_0x1c05('0x1f')]=_0x5f4a4c[_0x1c05('0x2b')][_0x1c05('0x2c')][_0x1c05('0x2d')];_0x25afe5['providerName']=_0x1c05('0x2a');_0x25afe5[_0x1c05('0x2e')]=JSON[_0x1c05('0x25')](_0x5f4a4c);return rpc[_0x388a1a+_0x1c05('0x21')][_0x1c05('0x22')](_0x25afe5)[_0x1c05('0x29')](function(_0x190987){logger['info'](_0x1c05('0xe'),_0x28a978,_0x25afe5[_0x1c05('0x1f')]);if(_0x5f4a4c[_0x1c05('0x2b')]['metadata']['endConversation']){_0x44d233[_0x1c05('0x2f')]();}else{_0x44d233[_0x1c05('0x27')]();}})[_0x1c05('0x23')](function(_0x404b36){logger[_0x1c05('0x24')](_0x1c05('0xe'),_0x28a978,JSON[_0x1c05('0x25')](_0x404b36));_0x44d233[_0x1c05('0x2f')]();});})[_0x1c05('0x23')](function(_0x3a9abb){logger[_0x1c05('0x24')](_0x1c05('0xe'),_0x28a978,_0x3a9abb[_0x1c05('0x28')]);_0x44d233[_0x1c05('0x2f')]();});}}catch(_0x5aab6b){logger[_0x1c05('0x24')]('[%s][DIALOGFLOW]\x20%s',_0x28a978,JSON['stringify'](_0x5aab6b));_0x44d233[_0x1c05('0x27')]();}};};
\ No newline at end of file
index b623bf4..5662672 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fc5=['sms','channel','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','getMustacheRender','error','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','sessionPath','message','detectIntent','length','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','boolValue','DIALOGFLOWV2_INTENTNAME','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','isFallback','DIALOGFLOWV2_LANGUAGECODE','DIALOGFLOWV2_QUERYTEXT','DIALOGFLOWV2_SCORE','push','fulfillmentText','all','dialogflow','moment','bluebird','../../../../config/logger','routing','./utils','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','clone','body','create','then','info','[%s][DIALOGFLOWV2]\x20%s','catch','stringify','isNil','interaction','UserId','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0x8fc5,0x1ca));var _0x58fc=function(_0x28ceb0,_0x11bae2){_0x28ceb0=_0x28ceb0-0x0;var _0xcf8f89=_0x8fc5[_0x28ceb0];return _0xcf8f89;};'use strict';var _=require('lodash');var dialogflow=require(_0x58fc('0x0'));var md5=require('md5');var moment=require(_0x58fc('0x1'));var Promise=require(_0x58fc('0x2'));var logger=require(_0x58fc('0x3'))(_0x58fc('0x4'));var utils=require(_0x58fc('0x5'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x58fc('0x6')),'mailMessage':require(_0x58fc('0x7')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x58fc('0x8')),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x125f32,_0x345806,_0x5ab15f,_0x4c715e){return new Promise(function(_0x5c7450,_0x2f8df6){var _0xff6cbb=_[_0x58fc('0x9')](_0x5ab15f);_0xff6cbb[_0x58fc('0xa')]=_0x4c715e;return rpc[_0x345806+'Message'][_0x58fc('0xb')](_0xff6cbb)[_0x58fc('0xc')](function(){logger[_0x58fc('0xd')](_0x58fc('0xe'),_0x125f32,_0xff6cbb[_0x58fc('0xa')]);_0x5c7450();})[_0x58fc('0xf')](function(_0x93413c){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x125f32,JSON[_0x58fc('0x10')](_0x93413c));_0x2f8df6(_0x93413c);});});}exports['consequence']=function(_0x22d7f5,_0xacd6b2){return function(_0x13dba6){try{if(!_[_0x58fc('0x11')](this[_0x58fc('0x12')][_0x58fc('0x13')])){logger['info'](_0x58fc('0xe'),_0x22d7f5,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x13dba6[_0x58fc('0x14')]();}var _0x2e28f6={'ContactId':this[_0x58fc('0x15')]['id'],'sentAt':moment()[_0x58fc('0x16')](_0x58fc('0x17')),'direction':_0x58fc('0x18')};if(this['channel']===_0x58fc('0x19')||this[_0x58fc('0x1a')]==='whatsapp'){_0x2e28f6[_0x58fc('0x1b')]=this[_0x58fc('0x12')][_0x58fc('0x1b')];}var _0x5021ab=this['channel'];if(_0x5021ab===_0x58fc('0x1c')){_0x2e28f6[_0x58fc('0x1d')]=this[_0x58fc('0x1e')]['id'];}else{_0x2e28f6[_[_0x58fc('0x1f')](_0x5021ab)+_0x58fc('0x20')]=this[_0x58fc('0x1e')]['id'];}_0x2e28f6[_[_0x58fc('0x1f')](_0x5021ab)+_0x58fc('0x21')]=this[_0x58fc('0x12')]['id'];if(this['interaction'][_0x58fc('0x22')]){var _0x5b7a27=_0xacd6b2[0x4];if(!_[_0x58fc('0x23')](_0x5b7a27)){_0x2e28f6[_0x58fc('0xa')]=utils[_0x58fc('0x24')](_0x5b7a27,this);return rpc[_0x5021ab+'Message'][_0x58fc('0xb')](_0x2e28f6)[_0x58fc('0xc')](function(_0x439de6){logger['info'](_0x58fc('0xe'),_0x22d7f5,_0x2e28f6[_0x58fc('0xa')]);})[_0x58fc('0xf')](function(_0x21e0ca){logger[_0x58fc('0x25')](_0x58fc('0xe'),_0x22d7f5,JSON[_0x58fc('0x10')](_0x21e0ca));})['finally'](function(){logger[_0x58fc('0xd')](_0x58fc('0x26'),_0x22d7f5);_0x13dba6[_0x58fc('0x27')]();});}else{logger[_0x58fc('0xd')](_0x58fc('0x28'),_0x22d7f5);_0x13dba6[_0x58fc('0x27')]();}}else{var _0x4ffca9=this;var _0x2ea3a6=_0xacd6b2[0x2][_0x58fc('0x29')](/\\n/g,'\x0a');var _0x2e41a9={'credentials':{'private_key':_0x2ea3a6,'client_email':_0xacd6b2[0x1]}};var _0x3f3cce=new dialogflow['SessionsClient'](_0x2e41a9);var _0x23724d=_0x3f3cce[_0x58fc('0x2a')](_0xacd6b2[0x0],md5(_0x4ffca9[_0x58fc('0x12')]['id']));var _0x44320f={'session':_0x23724d,'queryInput':{'text':{'text':_0x4ffca9[_0x58fc('0x2b')]['body'],'languageCode':_0xacd6b2[0x3]||'en'}}};return _0x3f3cce[_0x58fc('0x2c')](_0x44320f)['then'](function(_0x40ffde){if(_0x40ffde&&_0x40ffde[_0x58fc('0x2d')]){_0x4ffca9[_0x58fc('0xa')][_0x58fc('0x2e')]=_0x40ffde;var _0x3f738b=_0x40ffde[0x0];var _0x416a0a=_0x3f738b[_0x58fc('0x2f')][_0x58fc('0x30')]&&_0x3f738b[_0x58fc('0x2f')][_0x58fc('0x30')]['fields']?_0x3f738b[_0x58fc('0x2f')]['diagnosticInfo'][_0x58fc('0x31')][_0x58fc('0x32')]['boolValue']:![];_0x4ffca9[_0x58fc('0xa')][_0x58fc('0x33')]=_0x3f738b[_0x58fc('0x2f')][_0x58fc('0x34')];_0x4ffca9['body'][_0x58fc('0x35')]=_0x3f738b[_0x58fc('0x2f')][_0x58fc('0x36')];_0x4ffca9[_0x58fc('0xa')][_0x58fc('0x37')]=_0x3f738b[_0x58fc('0x2f')][_0x58fc('0x30')]&&_0x3f738b[_0x58fc('0x2f')][_0x58fc('0x30')][_0x58fc('0x31')]?_0x3f738b[_0x58fc('0x2f')][_0x58fc('0x30')][_0x58fc('0x31')][_0x58fc('0x32')][_0x58fc('0x38')]:![];_0x4ffca9['body'][_0x58fc('0x39')]=_0x3f738b[_0x58fc('0x2f')][_0x58fc('0x3a')][_0x58fc('0x3b')];_0x4ffca9[_0x58fc('0xa')][_0x58fc('0x3c')]=_0x3f738b[_0x58fc('0x2f')][_0x58fc('0x3a')][_0x58fc('0x3d')];_0x4ffca9[_0x58fc('0xa')]['DIALOGFLOWV2_ISFALLBACKINTENT']=_0x3f738b['queryResult'][_0x58fc('0x3a')][_0x58fc('0x3e')];_0x4ffca9[_0x58fc('0xa')][_0x58fc('0x3f')]=_0x3f738b[_0x58fc('0x2f')]['languageCode'];_0x4ffca9[_0x58fc('0xa')][_0x58fc('0x40')]=_0x3f738b[_0x58fc('0x2f')]['queryText'];_0x4ffca9[_0x58fc('0xa')][_0x58fc('0x41')]=_0x3f738b[_0x58fc('0x2f')]['intentDetectionConfidence'];_0x2e28f6['providerName']=_0x58fc('0x2e');_0x2e28f6['providerResponse']=JSON[_0x58fc('0x10')](_0x40ffde);var _0x1f4053=[];for(var _0x2604dd=0x0;_0x2604dd<_0x40ffde['length'];_0x2604dd++){var _0x380514=_0x40ffde[_0x2604dd];if(_0x380514&&_0x380514[_0x58fc('0x2f')]&&_0x380514[_0x58fc('0x2f')]['fulfillmentText']){_0x1f4053[_0x58fc('0x42')](createMessage(_0x22d7f5,_0x5021ab,_0x2e28f6,_0x380514['queryResult'][_0x58fc('0x43')]));}}return Promise[_0x58fc('0x44')](_0x1f4053)[_0x58fc('0xc')](function(){if(_0x416a0a){_0x13dba6['next']();}else{_0x13dba6[_0x58fc('0x27')]();}})[_0x58fc('0xf')](function(_0x510714){logger['error'](_0x58fc('0xe'),_0x22d7f5,JSON[_0x58fc('0x10')](_0x510714));_0x13dba6[_0x58fc('0x14')]();});}})[_0x58fc('0xf')](function(_0xebdce1){logger[_0x58fc('0x25')](_0x58fc('0xe'),_0x22d7f5,_0xebdce1['message']);_0x13dba6[_0x58fc('0x14')]();});}}catch(_0xedb1c3){logger[_0x58fc('0x25')](_0x58fc('0xe'),_0x22d7f5,JSON[_0x58fc('0x10')](_0xedb1c3));_0x13dba6[_0x58fc('0x27')]();}};};
\ No newline at end of file
+var _0x6590=['DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','fields','DIALOGFLOWV2_INTENTNAME','name','DIALOGFLOWV2_INTENTDISPLAYNAME','intent','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','DIALOGFLOWV2_QUERYTEXT','queryText','intentDetectionConfidence','providerName','length','fulfillmentText','all','lodash','dialogflow','md5','bluebird','routing','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','clone','body','create','[%s][DIALOGFLOWV2]\x20%s','catch','stringify','consequence','isNil','interaction','UserId','info','next','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','phone','ChatWebsiteId','upperFirst','AccountId','account','InteractionId','isEmpty','getMustacheRender','Message','then','error','finally','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','SessionsClient','message','detectIntent','dialogflowV2','diagnosticInfo','queryResult','end_conversation','boolValue'];(function(_0x30853f,_0x4aa320){var _0x3c416d=function(_0x15d3d2){while(--_0x15d3d2){_0x30853f['push'](_0x30853f['shift']());}};_0x3c416d(++_0x4aa320);}(_0x6590,0xa5));var _0x0659=function(_0x1daaa9,_0x220393){_0x1daaa9=_0x1daaa9-0x0;var _0x1dd221=_0x6590[_0x1daaa9];return _0x1dd221;};'use strict';var _=require(_0x0659('0x0'));var dialogflow=require(_0x0659('0x1'));var md5=require(_0x0659('0x2'));var moment=require('moment');var Promise=require(_0x0659('0x3'));var logger=require('../../../../config/logger')(_0x0659('0x4'));var utils=require(_0x0659('0x5'));var rpc={'chatMessage':require(_0x0659('0x6')),'openchannelMessage':require(_0x0659('0x7')),'mailMessage':require(_0x0659('0x8')),'smsMessage':require(_0x0659('0x9')),'faxMessage':require(_0x0659('0xa')),'whatsappMessage':require(_0x0659('0xb'))};function createMessage(_0x404d3d,_0x262c2c,_0x131982,_0x3a473e){return new Promise(function(_0x13515c,_0x19101f){var _0x35cd4a=_[_0x0659('0xc')](_0x131982);_0x35cd4a[_0x0659('0xd')]=_0x3a473e;return rpc[_0x262c2c+'Message'][_0x0659('0xe')](_0x35cd4a)['then'](function(){logger['info'](_0x0659('0xf'),_0x404d3d,_0x35cd4a['body']);_0x13515c();})[_0x0659('0x10')](function(_0x21c564){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x404d3d,JSON[_0x0659('0x11')](_0x21c564));_0x19101f(_0x21c564);});});}exports[_0x0659('0x12')]=function(_0x44ac77,_0x1e338f){return function(_0x5960d6){try{if(!_[_0x0659('0x13')](this[_0x0659('0x14')][_0x0659('0x15')])){logger[_0x0659('0x16')](_0x0659('0xf'),_0x44ac77,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x5960d6[_0x0659('0x17')]();}var _0x1cace={'ContactId':this['contact']['id'],'sentAt':moment()[_0x0659('0x18')](_0x0659('0x19')),'direction':_0x0659('0x1a')};if(this[_0x0659('0x1b')]===_0x0659('0x1c')||this[_0x0659('0x1b')]==='whatsapp'){_0x1cace[_0x0659('0x1d')]=this[_0x0659('0x14')]['phone'];}var _0x28ab4a=this[_0x0659('0x1b')];if(_0x28ab4a==='chat'){_0x1cace[_0x0659('0x1e')]=this['account']['id'];}else{_0x1cace[_[_0x0659('0x1f')](_0x28ab4a)+_0x0659('0x20')]=this[_0x0659('0x21')]['id'];}_0x1cace[_[_0x0659('0x1f')](_0x28ab4a)+_0x0659('0x22')]=this[_0x0659('0x14')]['id'];if(this[_0x0659('0x14')]['created']){var _0x5f2aea=_0x1e338f[0x4];if(!_[_0x0659('0x23')](_0x5f2aea)){_0x1cace[_0x0659('0xd')]=utils[_0x0659('0x24')](_0x5f2aea,this);return rpc[_0x28ab4a+_0x0659('0x25')][_0x0659('0xe')](_0x1cace)[_0x0659('0x26')](function(_0x368d6c){logger[_0x0659('0x16')]('[%s][DIALOGFLOWV2]\x20%s',_0x44ac77,_0x1cace[_0x0659('0xd')]);})[_0x0659('0x10')](function(_0x351bf5){logger[_0x0659('0x27')](_0x0659('0xf'),_0x44ac77,JSON[_0x0659('0x11')](_0x351bf5));})[_0x0659('0x28')](function(){logger[_0x0659('0x16')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x44ac77);_0x5960d6[_0x0659('0x29')]();});}else{logger['info'](_0x0659('0x2a'),_0x44ac77);_0x5960d6['stop']();}}else{var _0x6dc107=this;var _0x59c828=_0x1e338f[0x2]['replace'](/\\n/g,'\x0a');var _0x2854bd={'credentials':{'private_key':_0x59c828,'client_email':_0x1e338f[0x1]}};var _0x5b344f=new dialogflow[(_0x0659('0x2b'))](_0x2854bd);var _0x1a2801=_0x5b344f['sessionPath'](_0x1e338f[0x0],md5(_0x6dc107[_0x0659('0x14')]['id']));var _0x1724c9={'session':_0x1a2801,'queryInput':{'text':{'text':_0x6dc107[_0x0659('0x2c')]['body'],'languageCode':_0x1e338f[0x3]||'en'}}};return _0x5b344f[_0x0659('0x2d')](_0x1724c9)[_0x0659('0x26')](function(_0x4d30bf){if(_0x4d30bf&&_0x4d30bf['length']){_0x6dc107[_0x0659('0xd')][_0x0659('0x2e')]=_0x4d30bf;var _0x33677f=_0x4d30bf[0x0];var _0x9c973=_0x33677f['queryResult'][_0x0659('0x2f')]&&_0x33677f[_0x0659('0x30')]['diagnosticInfo']['fields']?_0x33677f['queryResult'][_0x0659('0x2f')]['fields'][_0x0659('0x31')][_0x0659('0x32')]:![];_0x6dc107[_0x0659('0xd')][_0x0659('0x33')]=_0x33677f[_0x0659('0x30')][_0x0659('0x34')];_0x6dc107[_0x0659('0xd')][_0x0659('0x35')]=_0x33677f[_0x0659('0x30')][_0x0659('0x36')];_0x6dc107[_0x0659('0xd')][_0x0659('0x37')]=_0x33677f[_0x0659('0x30')][_0x0659('0x2f')]&&_0x33677f[_0x0659('0x30')][_0x0659('0x2f')]['fields']?_0x33677f[_0x0659('0x30')][_0x0659('0x2f')][_0x0659('0x38')][_0x0659('0x31')][_0x0659('0x32')]:![];_0x6dc107['body'][_0x0659('0x39')]=_0x33677f[_0x0659('0x30')]['intent'][_0x0659('0x3a')];_0x6dc107[_0x0659('0xd')][_0x0659('0x3b')]=_0x33677f[_0x0659('0x30')][_0x0659('0x3c')][_0x0659('0x3d')];_0x6dc107[_0x0659('0xd')][_0x0659('0x3e')]=_0x33677f[_0x0659('0x30')]['intent'][_0x0659('0x3f')];_0x6dc107['body'][_0x0659('0x40')]=_0x33677f['queryResult']['languageCode'];_0x6dc107['body'][_0x0659('0x41')]=_0x33677f[_0x0659('0x30')][_0x0659('0x42')];_0x6dc107[_0x0659('0xd')]['DIALOGFLOWV2_SCORE']=_0x33677f[_0x0659('0x30')][_0x0659('0x43')];_0x1cace[_0x0659('0x44')]=_0x0659('0x2e');_0x1cace['providerResponse']=JSON[_0x0659('0x11')](_0x4d30bf);var _0x5d9072=[];for(var _0x103755=0x0;_0x103755<_0x4d30bf[_0x0659('0x45')];_0x103755++){var _0x5f211c=_0x4d30bf[_0x103755];if(_0x5f211c&&_0x5f211c[_0x0659('0x30')]&&_0x5f211c[_0x0659('0x30')][_0x0659('0x46')]){_0x5d9072['push'](createMessage(_0x44ac77,_0x28ab4a,_0x1cace,_0x5f211c[_0x0659('0x30')]['fulfillmentText']));}}return Promise[_0x0659('0x47')](_0x5d9072)['then'](function(){if(_0x9c973){_0x5960d6['next']();}else{_0x5960d6[_0x0659('0x29')]();}})['catch'](function(_0x69004e){logger[_0x0659('0x27')]('[%s][DIALOGFLOWV2]\x20%s',_0x44ac77,JSON['stringify'](_0x69004e));_0x5960d6[_0x0659('0x17')]();});}})[_0x0659('0x10')](function(_0x58e0b9){logger[_0x0659('0x27')](_0x0659('0xf'),_0x44ac77,_0x58e0b9[_0x0659('0x2c')]);_0x5960d6['next']();});}}catch(_0x33ca19){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x44ac77,JSON['stringify'](_0x33ca19));_0x5960d6[_0x0659('0x29')]();}};};
\ No newline at end of file
index 2ef3906..c920f33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4ca=['[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOIF]\x20eval\x20error:\x20%s','[%s][GOTOIF]\x20%s','stringify','lodash','./utils','routing','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','getMustacheRender','replace','length','error','map','message','join','stop','condition','findIndex','info'];(function(_0x5e4f08,_0x274778){var _0xe5b018=function(_0x1d9e1e){while(--_0x1d9e1e){_0x5e4f08['push'](_0x5e4f08['shift']());}};_0xe5b018(++_0x274778);}(_0xb4ca,0x16d));var _0xab4c=function(_0x57e211,_0x97af9c){_0x57e211=_0x57e211-0x0;var _0x2f4069=_0xb4ca[_0x57e211];return _0x2f4069;};'use strict';var schema=require('validate');var _=require(_0xab4c('0x0'));var htmlToText=require('html-to-text');var utils=require(_0xab4c('0x1'));var logger=require('../../../../config/logger')(_0xab4c('0x2'));var gotoif=schema({'condition':{'type':'string','required':!![],'message':_0xab4c('0x3')},'priorityTrue':{'type':_0xab4c('0x4'),'message':_0xab4c('0x5')},'priorityFalse':{'type':'number','message':_0xab4c('0x6')}});exports[_0xab4c('0x7')]=function(_0xf84863,_0x64d714){return function(_0x4cf80d){try{var _0x330ed8={'condition':htmlToText['fromString'](utils[_0xab4c('0x8')](_0x64d714[0x0],this),{'wordwrap':![]})[_0xab4c('0x9')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x64d714[0x1],'priorityFalse':_0x64d714[0x2]};var _0x3fa868=gotoif['validate'](_0x330ed8,{'typecast':!![]});if(_0x3fa868[_0xab4c('0xa')]){logger[_0xab4c('0xb')]('[%s][GOTOIF]\x20%s',_0xf84863,_[_0xab4c('0xc')](_0x3fa868,_0xab4c('0xd'))[_0xab4c('0xe')](',\x20'));_0x4cf80d[_0xab4c('0xf')]();}else{try{var _0x41ae4d=eval('('+_0x330ed8[_0xab4c('0x10')]+')');var _0x59539b=_0x41ae4d?_0x330ed8['priorityTrue']:_0x330ed8['priorityFalse'];logger['info']('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0xf84863,_0x330ed8[_0xab4c('0x10')],_0x41ae4d,_0x59539b||'next');if(_0x59539b){var _0x46461e=_[_0xab4c('0x11')](_0x4cf80d['rules'](),{'p':_0x59539b});if(_0x46461e>=0x0){logger[_0xab4c('0x12')](_0xab4c('0x13'),_0xf84863,_0x59539b||_0xab4c('0x14'),_0x46461e);_0x4cf80d[_0xab4c('0x14')](_0x46461e);}else{logger['info']('[%s][GOTOIF]\x20priority\x20%s\x20not\x20found',_0xf84863,_0x59539b||'next');_0x4cf80d[_0xab4c('0xf')]();}}else{_0x4cf80d[_0xab4c('0x14')]();}}catch(_0x4012b7){logger[_0xab4c('0xb')](_0xab4c('0x15'),_0xf84863,_0x4012b7[_0xab4c('0xd')]);_0x4cf80d[_0xab4c('0xf')]();}}}catch(_0x2fc4e0){logger['error'](_0xab4c('0x16'),_0xf84863,JSON[_0xab4c('0x17')](_0x2fc4e0));_0x4cf80d[_0xab4c('0xf')]();}};};
\ No newline at end of file
+var _0xbf39=['[%s][GOTOIF]\x20%s','map','join','stop','condition','priorityTrue','priorityFalse','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','next','findIndex','rules','[%s][GOTOIF]\x20eval\x20error:\x20%s','message','stringify','validate','lodash','./utils','../../../../config/logger','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','consequence','fromString','replace','error'];(function(_0x55d67f,_0xe743b7){var _0x5044ca=function(_0xe3bf01){while(--_0xe3bf01){_0x55d67f['push'](_0x55d67f['shift']());}};_0x5044ca(++_0xe743b7);}(_0xbf39,0x11d));var _0x9bf3=function(_0xf50d67,_0x354f75){_0xf50d67=_0xf50d67-0x0;var _0x263a94=_0xbf39[_0xf50d67];return _0x263a94;};'use strict';var schema=require(_0x9bf3('0x0'));var _=require(_0x9bf3('0x1'));var htmlToText=require('html-to-text');var utils=require(_0x9bf3('0x2'));var logger=require(_0x9bf3('0x3'))('routing');var gotoif=schema({'condition':{'type':_0x9bf3('0x4'),'required':!![],'message':_0x9bf3('0x5')},'priorityTrue':{'type':_0x9bf3('0x6'),'message':_0x9bf3('0x7')},'priorityFalse':{'type':_0x9bf3('0x6'),'message':'priority\x20false\x20is\x20a\x20number'}});exports[_0x9bf3('0x8')]=function(_0x5f0c5f,_0x4f7320){return function(_0x203129){try{var _0x5315bb={'condition':htmlToText[_0x9bf3('0x9')](utils['getMustacheRender'](_0x4f7320[0x0],this),{'wordwrap':![]})[_0x9bf3('0xa')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x4f7320[0x1],'priorityFalse':_0x4f7320[0x2]};var _0x169e0f=gotoif[_0x9bf3('0x0')](_0x5315bb,{'typecast':!![]});if(_0x169e0f['length']){logger[_0x9bf3('0xb')](_0x9bf3('0xc'),_0x5f0c5f,_[_0x9bf3('0xd')](_0x169e0f,'message')[_0x9bf3('0xe')](',\x20'));_0x203129[_0x9bf3('0xf')]();}else{try{var _0x2a9575=eval('('+_0x5315bb[_0x9bf3('0x10')]+')');var _0x3b49cc=_0x2a9575?_0x5315bb[_0x9bf3('0x11')]:_0x5315bb[_0x9bf3('0x12')];logger[_0x9bf3('0x13')](_0x9bf3('0x14'),_0x5f0c5f,_0x5315bb['condition'],_0x2a9575,_0x3b49cc||_0x9bf3('0x15'));if(_0x3b49cc){var _0x376802=_[_0x9bf3('0x16')](_0x203129[_0x9bf3('0x17')](),{'p':_0x3b49cc});if(_0x376802>=0x0){logger[_0x9bf3('0x13')]('[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x5f0c5f,_0x3b49cc||_0x9bf3('0x15'),_0x376802);_0x203129[_0x9bf3('0x15')](_0x376802);}else{logger[_0x9bf3('0x13')]('[%s][GOTOIF]\x20priority\x20%s\x20not\x20found',_0x5f0c5f,_0x3b49cc||_0x9bf3('0x15'));_0x203129[_0x9bf3('0xf')]();}}else{_0x203129[_0x9bf3('0x15')]();}}catch(_0x254778){logger[_0x9bf3('0xb')](_0x9bf3('0x18'),_0x5f0c5f,_0x254778[_0x9bf3('0x19')]);_0x203129[_0x9bf3('0xf')]();}}}catch(_0x3132de){logger[_0x9bf3('0xb')](_0x9bf3('0xc'),_0x5f0c5f,JSON[_0x9bf3('0x1a')](_0x3132de));_0x203129[_0x9bf3('0xf')]();}};};
\ No newline at end of file
index 5a577d1..40a4c55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf10f=['next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stringify','validate','lodash','../../../../config/logger','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','length','error','[%s][GOTOP]\x20%s','message','join','stop','info','[%s][GOTOP]\x20priority\x20%s','priority','rules'];(function(_0x223b5a,_0x145edf){var _0x31667d=function(_0x58dd64){while(--_0x58dd64){_0x223b5a['push'](_0x223b5a['shift']());}};_0x31667d(++_0x145edf);}(_0xf10f,0x16c));var _0xff10=function(_0x3d5a4a,_0xc8b809){_0x3d5a4a=_0x3d5a4a-0x0;var _0x5b55c0=_0xf10f[_0x3d5a4a];return _0x5b55c0;};'use strict';var schema=require(_0xff10('0x0'));var _=require(_0xff10('0x1'));var logger=require(_0xff10('0x2'))('routing');var gotop=schema({'priority':{'type':_0xff10('0x3'),'required':!![],'message':_0xff10('0x4')}});exports[_0xff10('0x5')]=function(_0x46b08e,_0xb4022e){return function(_0x56c68f){try{var _0x2ca22f={'priority':_0xb4022e[0x0]};var _0x191d87=gotop[_0xff10('0x0')](_0x2ca22f,{'typecast':!![]});if(_0x191d87[_0xff10('0x6')]){logger[_0xff10('0x7')](_0xff10('0x8'),_0x46b08e,_['map'](_0x191d87,_0xff10('0x9'))[_0xff10('0xa')](',\x20'));_0x56c68f[_0xff10('0xb')]();}else{logger[_0xff10('0xc')](_0xff10('0xd'),_0x46b08e,_0x2ca22f[_0xff10('0xe')]);if(_0x2ca22f[_0xff10('0xe')]){var _0x1adf00=_['findIndex'](_0x56c68f[_0xff10('0xf')](),{'p':_0x2ca22f['priority']});if(_0x1adf00>=0x0){logger[_0xff10('0xc')]('[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x46b08e,_0x2ca22f['priority']||_0xff10('0x10'),_0x1adf00);_0x56c68f['next'](_0x1adf00);}else{logger[_0xff10('0xc')](_0xff10('0x11'),_0x46b08e,_0x2ca22f[_0xff10('0xe')]||_0xff10('0x10'));_0x56c68f[_0xff10('0xb')]();}}else{_0x56c68f[_0xff10('0x10')]();}}}catch(_0x3a5d7d){logger['error']('[%s][GOTOP]\x20%s',_0x46b08e,JSON[_0xff10('0x12')](_0x3a5d7d));_0x56c68f['stop']();}};};
\ No newline at end of file
+var _0xf6e5=['[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','[%s][GOTOP]\x20%s','stringify','lodash','../../../../config/logger','routing','consequence','validate','length','map','message','join','stop','info','[%s][GOTOP]\x20priority\x20%s','priority','findIndex','rules'];(function(_0x79e473,_0x440cd7){var _0xdbeab9=function(_0x59b127){while(--_0x59b127){_0x79e473['push'](_0x79e473['shift']());}};_0xdbeab9(++_0x440cd7);}(_0xf6e5,0xf5));var _0x5f6e=function(_0x1f79ba,_0x5ef27b){_0x1f79ba=_0x1f79ba-0x0;var _0x125016=_0xf6e5[_0x1f79ba];return _0x125016;};'use strict';var schema=require('validate');var _=require(_0x5f6e('0x0'));var logger=require(_0x5f6e('0x1'))(_0x5f6e('0x2'));var gotop=schema({'priority':{'type':'number','required':!![],'message':'priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required'}});exports[_0x5f6e('0x3')]=function(_0x38fa76,_0x5a6a6f){return function(_0x1caf36){try{var _0x4ef990={'priority':_0x5a6a6f[0x0]};var _0x20ca5c=gotop[_0x5f6e('0x4')](_0x4ef990,{'typecast':!![]});if(_0x20ca5c[_0x5f6e('0x5')]){logger['error']('[%s][GOTOP]\x20%s',_0x38fa76,_[_0x5f6e('0x6')](_0x20ca5c,_0x5f6e('0x7'))[_0x5f6e('0x8')](',\x20'));_0x1caf36[_0x5f6e('0x9')]();}else{logger[_0x5f6e('0xa')](_0x5f6e('0xb'),_0x38fa76,_0x4ef990[_0x5f6e('0xc')]);if(_0x4ef990[_0x5f6e('0xc')]){var _0x47fbc2=_[_0x5f6e('0xd')](_0x1caf36[_0x5f6e('0xe')](),{'p':_0x4ef990[_0x5f6e('0xc')]});if(_0x47fbc2>=0x0){logger[_0x5f6e('0xa')](_0x5f6e('0xf'),_0x38fa76,_0x4ef990['priority']||_0x5f6e('0x10'),_0x47fbc2);_0x1caf36[_0x5f6e('0x10')](_0x47fbc2);}else{logger[_0x5f6e('0xa')](_0x5f6e('0x11'),_0x38fa76,_0x4ef990['priority']||_0x5f6e('0x10'));_0x1caf36['stop']();}}else{_0x1caf36[_0x5f6e('0x10')]();}}}catch(_0x3f49cd){logger['error'](_0x5f6e('0x12'),_0x38fa76,JSON[_0x5f6e('0x13')](_0x3f49cd));_0x1caf36[_0x5f6e('0x9')]();}};};
\ No newline at end of file
index 3d3d980..0303dfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc64=['../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','getMustacheRender','contact','channel','chat','ChatWebsiteId','upperFirst','AccountId','interaction','Message','then','info','[%s][MESSAGE]\x20%s','body','catch','error','stringify','stop','lodash','./utils','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage'];(function(_0x421eeb,_0x3d3e3e){var _0x2c7371=function(_0x174b74){while(--_0x174b74){_0x421eeb['push'](_0x421eeb['shift']());}};_0x2c7371(++_0x3d3e3e);}(_0xdc64,0x80));var _0x4dc6=function(_0x3bd7c7,_0x26731f){_0x3bd7c7=_0x3bd7c7-0x0;var _0x108e3f=_0xdc64[_0x3bd7c7];return _0x108e3f;};'use strict';var _=require(_0x4dc6('0x0'));var utils=require(_0x4dc6('0x1'));var logger=require(_0x4dc6('0x2'))(_0x4dc6('0x3'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x4dc6('0x4')),'mailMessage':require(_0x4dc6('0x5')),'smsMessage':require(_0x4dc6('0x6')),'faxMessage':require(_0x4dc6('0x7')),'whatsappMessage':require(_0x4dc6('0x8'))};exports[_0x4dc6('0x9')]=function(_0x7a07c1,_0x2858c3){return function(_0x263fcd){try{var _0x469d65={'body':utils[_0x4dc6('0xa')](_0x2858c3[0x0],this),'ContactId':this[_0x4dc6('0xb')]['id']};if(this[_0x4dc6('0xc')]===_0x4dc6('0xd')){_0x469d65[_0x4dc6('0xe')]=this['account']['id'];}else{_0x469d65[_[_0x4dc6('0xf')](this[_0x4dc6('0xc')])+_0x4dc6('0x10')]=this['account']['id'];}_0x469d65[_[_0x4dc6('0xf')](this[_0x4dc6('0xc')])+'InteractionId']=this[_0x4dc6('0x11')]['id'];if(rpc[this[_0x4dc6('0xc')]+'Message']){return rpc[this[_0x4dc6('0xc')]+_0x4dc6('0x12')]['create'](_0x469d65)[_0x4dc6('0x13')](function(_0x55411f){logger[_0x4dc6('0x14')](_0x4dc6('0x15'),_0x7a07c1,_0x469d65[_0x4dc6('0x16')]);_0x263fcd['next']();})[_0x4dc6('0x17')](function(_0x28aeb9){logger[_0x4dc6('0x18')](_0x4dc6('0x15'),_0x7a07c1,JSON[_0x4dc6('0x19')](_0x28aeb9));_0x263fcd['stop']();});}}catch(_0x565d55){logger[_0x4dc6('0x18')](_0x4dc6('0x15'),_0x7a07c1,JSON[_0x4dc6('0x19')](_0x565d55));_0x263fcd[_0x4dc6('0x1a')]();}};};
\ No newline at end of file
+var _0xb64c=['channel','chat','account','upperFirst','AccountId','InteractionId','Message','create','then','info','[%s][MESSAGE]\x20%s','body','next','catch','error','stringify','stop','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','getMustacheRender'];(function(_0x538753,_0x2e0e8f){var _0x3a795e=function(_0x29bd24){while(--_0x29bd24){_0x538753['push'](_0x538753['shift']());}};_0x3a795e(++_0x2e0e8f);}(_0xb64c,0xc7));var _0xcb64=function(_0x2d892a,_0x59e61a){_0x2d892a=_0x2d892a-0x0;var _0x367765=_0xb64c[_0x2d892a];return _0x367765;};'use strict';var _=require(_0xcb64('0x0'));var utils=require(_0xcb64('0x1'));var logger=require(_0xcb64('0x2'))(_0xcb64('0x3'));var rpc={'chatMessage':require(_0xcb64('0x4')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0xcb64('0x5')),'faxMessage':require(_0xcb64('0x6')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0xcb64('0x7')]=function(_0x690bdb,_0x22a47b){return function(_0x2fd327){try{var _0x15445e={'body':utils[_0xcb64('0x8')](_0x22a47b[0x0],this),'ContactId':this['contact']['id']};if(this[_0xcb64('0x9')]===_0xcb64('0xa')){_0x15445e['ChatWebsiteId']=this[_0xcb64('0xb')]['id'];}else{_0x15445e[_[_0xcb64('0xc')](this[_0xcb64('0x9')])+_0xcb64('0xd')]=this[_0xcb64('0xb')]['id'];}_0x15445e[_[_0xcb64('0xc')](this[_0xcb64('0x9')])+_0xcb64('0xe')]=this['interaction']['id'];if(rpc[this[_0xcb64('0x9')]+_0xcb64('0xf')]){return rpc[this[_0xcb64('0x9')]+_0xcb64('0xf')][_0xcb64('0x10')](_0x15445e)[_0xcb64('0x11')](function(_0x568498){logger[_0xcb64('0x12')](_0xcb64('0x13'),_0x690bdb,_0x15445e[_0xcb64('0x14')]);_0x2fd327[_0xcb64('0x15')]();})[_0xcb64('0x16')](function(_0x52f73e){logger[_0xcb64('0x17')](_0xcb64('0x13'),_0x690bdb,JSON[_0xcb64('0x18')](_0x52f73e));_0x2fd327[_0xcb64('0x19')]();});}}catch(_0x2385da){logger[_0xcb64('0x17')](_0xcb64('0x13'),_0x690bdb,JSON[_0xcb64('0x18')](_0x2385da));_0x2fd327[_0xcb64('0x19')]();}};};
\ No newline at end of file
index 32453b7..a99c80a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1a8=['info','getMustacheRender','next','error','[%s][NOOP]\x20%s','stringify','stop','./utils','consequence'];(function(_0x1d4fb5,_0x205c2f){var _0x566c83=function(_0x33fe30){while(--_0x33fe30){_0x1d4fb5['push'](_0x1d4fb5['shift']());}};_0x566c83(++_0x205c2f);}(_0xa1a8,0xe8));var _0x8a1a=function(_0x5ea371,_0x59c864){_0x5ea371=_0x5ea371-0x0;var _0x2e3950=_0xa1a8[_0x5ea371];return _0x2e3950;};'use strict';var utils=require(_0x8a1a('0x0'));var logger=require('../../../../config/logger')('routing');exports[_0x8a1a('0x1')]=function(_0x3de290,_0x2dfbb1){return function(_0x1841f8){try{logger[_0x8a1a('0x2')]('[%s][NOOP]\x20%s',_0x3de290,utils[_0x8a1a('0x3')](_0x2dfbb1[0x0],this));_0x1841f8[_0x8a1a('0x4')]();}catch(_0x53526c){logger[_0x8a1a('0x5')](_0x8a1a('0x6'),_0x3de290,JSON[_0x8a1a('0x7')](_0x53526c));_0x1841f8[_0x8a1a('0x8')]();}};};
\ No newline at end of file
+var _0xfa4f=['stringify','../../../../config/logger','consequence','[%s][NOOP]\x20%s','getMustacheRender','next'];(function(_0x25a802,_0x1e03a1){var _0x27ea4e=function(_0x2a2a51){while(--_0x2a2a51){_0x25a802['push'](_0x25a802['shift']());}};_0x27ea4e(++_0x1e03a1);}(_0xfa4f,0x193));var _0xffa4=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0xfa4f[_0x209941];return _0x1e8729;};'use strict';var utils=require('./utils');var logger=require(_0xffa4('0x0'))('routing');exports[_0xffa4('0x1')]=function(_0x50954c,_0x34c7f4){return function(_0x11e436){try{logger['info'](_0xffa4('0x2'),_0x50954c,utils[_0xffa4('0x3')](_0x34c7f4[0x0],this));_0x11e436[_0xffa4('0x4')]();}catch(_0x754f71){logger['error'](_0xffa4('0x2'),_0x50954c,JSON[_0xffa4('0x5')](_0x754f71));_0x11e436['stop']();}};};
\ No newline at end of file
index 2d909cc..c951864 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf44e=['socket.io-emitter','account','queue','from','joinAt','clone','format','pick','%sQueuesWaitingInteractions','%s:queue:%s','save','remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','timeout\x20is\x20a\x20number','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','QueueId','channel','InteractionId','interaction','message','chat','AccountId','WebsiteId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','catch','error','create\x20queue\x20report','waiting','accepted','[%s][STOP:QUEUE][NAME:%s]','update','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','consequence','length','[%s][QUEUE]\x20%s','map','join','find','Queues','createQueue','atimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','stop','complete','[%s][QUEUE]\x20APPLICATION\x20END','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack','validate','util','seq-queue','ioredis','../../../../config/environment','../../../../config/logger','routing','./strategy','redis','defaults','localhost'];(function(_0x5781d2,_0x53aed8){var _0x2ea9d0=function(_0x1a6902){while(--_0x1a6902){_0x5781d2['push'](_0x5781d2['shift']());}};_0x2ea9d0(++_0x53aed8);}(_0xf44e,0x1d5));var _0xef44=function(_0x2b4fd8,_0x22e24a){_0x2b4fd8=_0x2b4fd8-0x0;var _0x2a41b5=_0xf44e[_0x2b4fd8];return _0x2a41b5;};'use strict';var schema=require(_0xef44('0x0'));var _=require('lodash');var util=require(_0xef44('0x1'));var seqqueue=require(_0xef44('0x2'));var moment=require('moment');var Redis=require(_0xef44('0x3'));var config=require(_0xef44('0x4'));var logger=require(_0xef44('0x5'))(_0xef44('0x6'));var strategy=require(_0xef44('0x7'));config[_0xef44('0x8')]=_[_0xef44('0x9')](config['redis'],{'host':_0xef44('0xa'),'port':0x18eb});var io=require(_0xef44('0xb'))(new Redis(config[_0xef44('0x8')]));var attributes=['id','queue_id',_0xef44('0xc'),_0xef44('0xd'),_0xef44('0xe'),_0xef44('0xf')];function emit(_0x38a29e,_0x3374c1,_0x541c73){io['to'](_0x38a29e)['emit'](_0x3374c1,_0x541c73);}function emitChannelQueueInteraction(_0x301eb3,_0x48166b,_0xcd8d17,_0x2cdacf,_0xa9764e,_0x102900,_0x542b3d,_0x181080){var _0x10bc36=_[_0xef44('0x10')](_0xcd8d17);_0x10bc36['queue_id']=_0x181080;_0x10bc36[_0xef44('0xd')]=_0x48166b;_0x10bc36[_0xef44('0xc')]=_0x2cdacf;_0x10bc36['id']=_0xa9764e;if(_0x102900){_0x542b3d[util[_0xef44('0x11')]('%sQueuesWaitingInteractions',_0x301eb3)][_0xa9764e]=_[_0xef44('0x12')](_0x10bc36,attributes);}else{delete _0x542b3d[util['format'](_0xef44('0x13'),_0x301eb3)][_0xa9764e];}emit(util[_0xef44('0x11')](_0xef44('0x14'),_0x301eb3,_0x48166b),util[_0xef44('0x11')]('%s_queue_waiting_interaction:%s',_0x301eb3,_0x102900?_0xef44('0x15'):_0xef44('0x16')),_[_0xef44('0x12')](_0x10bc36,attributes));}var rpc={'openchannelQueueReport':require(_0xef44('0x17')),'mailQueueReport':require(_0xef44('0x18')),'chatQueueReport':require('../../rpc/chatQueueReport'),'smsQueueReport':require(_0xef44('0x19')),'faxQueueReport':require(_0xef44('0x1a')),'whatsappQueueReport':require(_0xef44('0x1b'))};var queue=schema({'name':{'type':_0xef44('0x1c'),'required':!![],'message':_0xef44('0x1d')},'timeout':{'type':'number','message':_0xef44('0x1e')}});function startRouting(_0x370905,_0x5643ab,_0x418338,_0x5b3486){if(_0x370905&&_0x5643ab&&_0x418338){_0x5643ab['waiting']+=0x1;var _0x5ba289={'uniqueid':_0x370905,'from':_0x418338[_0xef44('0x1f')]?_0x418338[_0xef44('0x1f')]['from']:'','joinAt':moment()[_0xef44('0x11')](_0xef44('0x20')),'ContactId':_0x418338[_0xef44('0x21')]?_0x418338[_0xef44('0x21')]['id']:null,'ListId':_0x418338[_0xef44('0x22')]?_0x418338['list']['id']:null};_0x5ba289[_[_0xef44('0x23')](_0x418338['channel'])+_0xef44('0x24')]=_0x5643ab['id']||null;_0x5ba289[_['upperFirst'](_0x418338[_0xef44('0x25')])+_0xef44('0x26')]=_0x418338[_0xef44('0x27')]?_0x418338['interaction']['id']:null;_0x5ba289[_['upperFirst'](_0x418338['channel'])+'MessageId']=_0x418338['message']?_0x418338[_0xef44('0x28')]['id']:null;_0x5ba289[_[_0xef44('0x23')](_0x418338['channel'])+(_0x418338[_0xef44('0x25')]!==_0xef44('0x29')?_0xef44('0x2a'):_0xef44('0x2b'))]=_0x418338['account']?_0x418338[_0xef44('0xc')]['id']:null;logger[_0xef44('0x2c')](util['format'](_0xef44('0x2d'),_0x370905,_0x5643ab[_0xef44('0x2e')]));emitChannelQueueInteraction(_0x418338[_0xef44('0x25')],_0x5643ab[_0xef44('0x2e')],_0x5ba289,_0x418338[_0xef44('0xc')]['name'],_0x418338[_0xef44('0x28')]['id'],!![],_0x5b3486,_0x5643ab['id']);if(rpc[_0x418338[_0xef44('0x25')]+_0xef44('0x2f')]){return rpc[_0x418338[_0xef44('0x25')]+'QueueReport'][_0xef44('0x30')](_0x5ba289)[_0xef44('0x31')](function(_0x917700){logger[_0xef44('0x32')](_0xef44('0x33'));});}}}function stopRouting(_0x560ef1,_0x436573,_0x17b1ee,_0x1f4046){if(_0x560ef1&&_0x436573){_0x436573[_0xef44('0x34')]-=0x1;var _0x411328={'leaveAt':moment()['format'](_0xef44('0x20')),'acceptAt':moment()[_0xef44('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0xef44('0x35')};logger[_0xef44('0x2c')](util['format'](_0xef44('0x36'),_0x560ef1,_0x436573['name']));emitChannelQueueInteraction(_0x17b1ee[_0xef44('0x25')],_0x436573['name'],_0x17b1ee[_0xef44('0x1f')],_0x17b1ee['account']['name'],_0x17b1ee['message']['id'],![],_0x1f4046,_0x436573['id']);if(rpc[_0x17b1ee[_0xef44('0x25')]+'QueueReport']){return rpc[_0x17b1ee['channel']+_0xef44('0x2f')][_0xef44('0x37')](_0x560ef1,_0x411328)[_0xef44('0x31')](function(_0x89bb0){logger[_0xef44('0x32')](_0xef44('0x38'));});}}}function endRouting(_0x2b8f21,_0x54083b,_0x16fab7,_0x7cf9a7){if(_0x2b8f21&&_0x54083b){_0x54083b[_0xef44('0x34')]-=0x1;var _0x32f7c4={'leaveAt':moment()['format'](_0xef44('0x20')),'exitAt':moment()[_0xef44('0x11')](_0xef44('0x20')),'reason':_0xef44('0x39')};logger[_0xef44('0x2c')](util[_0xef44('0x11')](_0xef44('0x3a'),_0x2b8f21,_0x54083b[_0xef44('0x2e')]));emitChannelQueueInteraction(_0x16fab7['channel'],_0x54083b['name'],_0x16fab7[_0xef44('0x1f')],_0x16fab7[_0xef44('0xc')][_0xef44('0x2e')],_0x16fab7[_0xef44('0x28')]['id'],![],_0x7cf9a7);if(rpc[_0x16fab7[_0xef44('0x25')]+_0xef44('0x2f')]){return rpc[_0x16fab7['channel']+'QueueReport'][_0xef44('0x37')](_0x2b8f21,_0x32f7c4)['catch'](function(_0x543bd6){logger[_0xef44('0x32')](_0xef44('0x38'));});}}}function handleFindQueue(_0x548e50){return function(_0x500d9a){return _0x500d9a[_0xef44('0x2e')]['toLowerCase']()===_0x548e50['toLowerCase']();};}exports[_0xef44('0x3b')]=function(_0x26f950,_0x35ec71,_0x402d27,_0xc3d60d){return function(_0x5be6aa){try{var _0x418785={'name':_0x35ec71[0x0],'timeout':_0x35ec71[0x1]};var _0x576650=queue['validate'](_0x418785,{'typecast':!![]});if(_0x576650[_0xef44('0x3c')]){logger[_0xef44('0x32')](_0xef44('0x3d'),_0x26f950,_[_0xef44('0x3e')](_0x576650,_0xef44('0x28'))[_0xef44('0x3f')](',\x20'));_0x5be6aa['stop']();}else{var _0x29e5e6=_[_0xef44('0x40')](_0x402d27[_0xc3d60d[_0xef44('0x25')]+_0xef44('0x41')],handleFindQueue(_0x418785['name']));if(_0x29e5e6){startRouting(_0x26f950,_0x29e5e6,_0xc3d60d,_0x402d27);var _0x4b4c34=(_0x29e5e6['timeout']||0xa)*0x3e8;var _0x15b96d=(_0x418785[_0xef44('0x39')]||0x14)*0x3e8;var _0x474ad0,_0x38974;if(_0x4b4c34>_0x15b96d){_0x15b96d=_0x4b4c34;}var _0x4537b7=seqqueue[_0xef44('0x42')](_0x4b4c34);_0x4537b7['id']=_0x26f950;_0x4537b7[_0xef44('0x43')]=_0x4b4c34;_0x4537b7['qtimeout']=_0x15b96d;_0x4537b7[_0xef44('0x25')]=_0xc3d60d[_0xef44('0x25')];_0x402d27[_0xef44('0x44')][_0x26f950]['on'](_0xef44('0x45'),function(){logger[_0xef44('0x2c')](_0xef44('0x46'),_0x26f950);stopRouting(_0x26f950,_0x29e5e6,_0xc3d60d,_0x402d27);clearTimeout(_0x474ad0);_0x474ad0=undefined;_0x4537b7['close'](!![]);if(_0x402d27[_0xef44('0x44')][_0x26f950]){delete _0x402d27[_0xef44('0x44')][_0x26f950];}_0x5be6aa[_0xef44('0x47')]();});_0x402d27[_0xef44('0x44')][_0x26f950]['on'](_0xef44('0x48'),function(){if(_0x402d27['rules'][_0x26f950]){delete _0x402d27[_0xef44('0x44')][_0x26f950];}});_0x474ad0=setTimeout(function(){logger['info'](_0xef44('0x49'),_0x26f950);endRouting(_0x26f950,_0x29e5e6,_0xc3d60d,_0x402d27);clearTimeout(_0x474ad0);_0x4537b7['close'](!![]);_0x5be6aa['next']();},_0x15b96d);switch(_0x29e5e6[_0xef44('0x4a')]){case'rrmemory':strategy[_0xef44('0x4b')](_0x4537b7,_0x29e5e6,_0x402d27,_0xc3d60d);break;default:strategy[_0xef44('0x4c')](_0x4537b7,_0x29e5e6,_0x402d27,_0xc3d60d);}}else{logger['error'](_0xef44('0x4d'),_0x26f950,_0x418785['name']);_0x5be6aa[_0xef44('0x47')]();}}}catch(_0x3cb859){console[_0xef44('0x4e')](_0x3cb859);logger[_0xef44('0x32')](_0xef44('0x3d'),_0x26f950,_0x3cb859[_0xef44('0x4f')]);_0x5be6aa[_0xef44('0x47')]();}};};
\ No newline at end of file
+var _0x052f=['socket.io-emitter','queue_id','account','queue','from','emit','format','%sQueuesWaitingInteractions','pick','%s:queue:%s','%s_queue_waiting_interaction:%s','remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','channel','QueueId','upperFirst','InteractionId','interaction','MessageId','message','chat','AccountId','name','QueueReport','create','error','create\x20queue\x20report','accepted','info','[%s][STOP:QUEUE][NAME:%s]','timeout','catch','toLowerCase','consequence','validate','length','[%s][QUEUE]\x20%s','map','join','stop','find','Queues','createQueue','qtimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','complete','[%s][QUEUE]\x20APPLICATION\x20END','next','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack','lodash','util','seq-queue','moment','ioredis','../../../../config/environment','../../../../config/logger','redis','defaults','localhost'];(function(_0x31e4c6,_0x27d39c){var _0x56c225=function(_0x54fb1a){while(--_0x54fb1a){_0x31e4c6['push'](_0x31e4c6['shift']());}};_0x56c225(++_0x27d39c);}(_0x052f,0x17c));var _0xf052=function(_0x49422c,_0x4e8101){_0x49422c=_0x49422c-0x0;var _0x2f38b4=_0x052f[_0x49422c];return _0x2f38b4;};'use strict';var schema=require('validate');var _=require(_0xf052('0x0'));var util=require(_0xf052('0x1'));var seqqueue=require(_0xf052('0x2'));var moment=require(_0xf052('0x3'));var Redis=require(_0xf052('0x4'));var config=require(_0xf052('0x5'));var logger=require(_0xf052('0x6'))('routing');var strategy=require('./strategy');config[_0xf052('0x7')]=_[_0xf052('0x8')](config['redis'],{'host':_0xf052('0x9'),'port':0x18eb});var io=require(_0xf052('0xa'))(new Redis(config['redis']));var attributes=['id',_0xf052('0xb'),_0xf052('0xc'),_0xf052('0xd'),_0xf052('0xe'),'joinAt'];function emit(_0xe91ea5,_0x241e33,_0x224a48){io['to'](_0xe91ea5)[_0xf052('0xf')](_0x241e33,_0x224a48);}function emitChannelQueueInteraction(_0x11ae73,_0x415764,_0x57509a,_0x49133f,_0x433c0b,_0x291208,_0x25bd8f,_0xd754c7){var _0x4692c2=_['clone'](_0x57509a);_0x4692c2[_0xf052('0xb')]=_0xd754c7;_0x4692c2[_0xf052('0xd')]=_0x415764;_0x4692c2[_0xf052('0xc')]=_0x49133f;_0x4692c2['id']=_0x433c0b;if(_0x291208){_0x25bd8f[util[_0xf052('0x10')](_0xf052('0x11'),_0x11ae73)][_0x433c0b]=_[_0xf052('0x12')](_0x4692c2,attributes);}else{delete _0x25bd8f[util[_0xf052('0x10')](_0xf052('0x11'),_0x11ae73)][_0x433c0b];}emit(util['format'](_0xf052('0x13'),_0x11ae73,_0x415764),util[_0xf052('0x10')](_0xf052('0x14'),_0x11ae73,_0x291208?'save':_0xf052('0x15')),_[_0xf052('0x12')](_0x4692c2,attributes));}var rpc={'openchannelQueueReport':require(_0xf052('0x16')),'mailQueueReport':require(_0xf052('0x17')),'chatQueueReport':require(_0xf052('0x18')),'smsQueueReport':require(_0xf052('0x19')),'faxQueueReport':require(_0xf052('0x1a')),'whatsappQueueReport':require(_0xf052('0x1b'))};var queue=schema({'name':{'type':'string','required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0xf052('0x1c'),'message':'timeout\x20is\x20a\x20number'}});function startRouting(_0x2a60a4,_0x1f37f2,_0x548a19,_0x3a9564){if(_0x2a60a4&&_0x1f37f2&&_0x548a19){_0x1f37f2[_0xf052('0x1d')]+=0x1;var _0x41e949={'uniqueid':_0x2a60a4,'from':_0x548a19[_0xf052('0x1e')]?_0x548a19[_0xf052('0x1e')][_0xf052('0xe')]:'','joinAt':moment()[_0xf052('0x10')](_0xf052('0x1f')),'ContactId':_0x548a19[_0xf052('0x20')]?_0x548a19[_0xf052('0x20')]['id']:null,'ListId':_0x548a19[_0xf052('0x21')]?_0x548a19[_0xf052('0x21')]['id']:null};_0x41e949[_['upperFirst'](_0x548a19[_0xf052('0x22')])+_0xf052('0x23')]=_0x1f37f2['id']||null;_0x41e949[_[_0xf052('0x24')](_0x548a19[_0xf052('0x22')])+_0xf052('0x25')]=_0x548a19[_0xf052('0x26')]?_0x548a19[_0xf052('0x26')]['id']:null;_0x41e949[_[_0xf052('0x24')](_0x548a19[_0xf052('0x22')])+_0xf052('0x27')]=_0x548a19[_0xf052('0x28')]?_0x548a19[_0xf052('0x28')]['id']:null;_0x41e949[_['upperFirst'](_0x548a19[_0xf052('0x22')])+(_0x548a19[_0xf052('0x22')]!==_0xf052('0x29')?_0xf052('0x2a'):'WebsiteId')]=_0x548a19['account']?_0x548a19['account']['id']:null;logger['info'](util[_0xf052('0x10')]('[%s][START:QUEUE][NAME:%s]',_0x2a60a4,_0x1f37f2['name']));emitChannelQueueInteraction(_0x548a19[_0xf052('0x22')],_0x1f37f2['name'],_0x41e949,_0x548a19[_0xf052('0xc')][_0xf052('0x2b')],_0x548a19[_0xf052('0x28')]['id'],!![],_0x3a9564,_0x1f37f2['id']);if(rpc[_0x548a19[_0xf052('0x22')]+'QueueReport']){return rpc[_0x548a19[_0xf052('0x22')]+_0xf052('0x2c')][_0xf052('0x2d')](_0x41e949)['catch'](function(_0x38654f){logger[_0xf052('0x2e')](_0xf052('0x2f'));});}}}function stopRouting(_0x3c3050,_0x395402,_0x7edfa6,_0x4bd22f){if(_0x3c3050&&_0x395402){_0x395402[_0xf052('0x1d')]-=0x1;var _0x481cd1={'leaveAt':moment()['format'](_0xf052('0x1f')),'acceptAt':moment()[_0xf052('0x10')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0xf052('0x30')};logger[_0xf052('0x31')](util[_0xf052('0x10')](_0xf052('0x32'),_0x3c3050,_0x395402[_0xf052('0x2b')]));emitChannelQueueInteraction(_0x7edfa6['channel'],_0x395402[_0xf052('0x2b')],_0x7edfa6['body'],_0x7edfa6[_0xf052('0xc')][_0xf052('0x2b')],_0x7edfa6[_0xf052('0x28')]['id'],![],_0x4bd22f,_0x395402['id']);if(rpc[_0x7edfa6[_0xf052('0x22')]+_0xf052('0x2c')]){return rpc[_0x7edfa6[_0xf052('0x22')]+_0xf052('0x2c')]['update'](_0x3c3050,_0x481cd1)['catch'](function(_0x3a3cb6){logger[_0xf052('0x2e')]('update\x20queue\x20report');});}}}function endRouting(_0x4ab668,_0x41db01,_0x1495c6,_0xe3972b){if(_0x4ab668&&_0x41db01){_0x41db01[_0xf052('0x1d')]-=0x1;var _0x1de2e3={'leaveAt':moment()['format'](_0xf052('0x1f')),'exitAt':moment()[_0xf052('0x10')](_0xf052('0x1f')),'reason':_0xf052('0x33')};logger[_0xf052('0x31')](util[_0xf052('0x10')]('[%s][END:QUEUE][NAME:%s]',_0x4ab668,_0x41db01[_0xf052('0x2b')]));emitChannelQueueInteraction(_0x1495c6[_0xf052('0x22')],_0x41db01[_0xf052('0x2b')],_0x1495c6[_0xf052('0x1e')],_0x1495c6[_0xf052('0xc')][_0xf052('0x2b')],_0x1495c6[_0xf052('0x28')]['id'],![],_0xe3972b);if(rpc[_0x1495c6['channel']+_0xf052('0x2c')]){return rpc[_0x1495c6[_0xf052('0x22')]+'QueueReport']['update'](_0x4ab668,_0x1de2e3)[_0xf052('0x34')](function(_0x4ed109){logger[_0xf052('0x2e')]('update\x20queue\x20report');});}}}function handleFindQueue(_0x1620e9){return function(_0x1aa33f){return _0x1aa33f[_0xf052('0x2b')][_0xf052('0x35')]()===_0x1620e9[_0xf052('0x35')]();};}exports[_0xf052('0x36')]=function(_0x2a84e7,_0xaa8e57,_0x315eb0,_0x25958c){return function(_0x3ca602){try{var _0x147a89={'name':_0xaa8e57[0x0],'timeout':_0xaa8e57[0x1]};var _0x49d131=queue[_0xf052('0x37')](_0x147a89,{'typecast':!![]});if(_0x49d131[_0xf052('0x38')]){logger[_0xf052('0x2e')](_0xf052('0x39'),_0x2a84e7,_[_0xf052('0x3a')](_0x49d131,'message')[_0xf052('0x3b')](',\x20'));_0x3ca602[_0xf052('0x3c')]();}else{var _0x12643e=_[_0xf052('0x3d')](_0x315eb0[_0x25958c[_0xf052('0x22')]+_0xf052('0x3e')],handleFindQueue(_0x147a89[_0xf052('0x2b')]));if(_0x12643e){startRouting(_0x2a84e7,_0x12643e,_0x25958c,_0x315eb0);var _0x1aec2e=(_0x12643e['timeout']||0xa)*0x3e8;var _0x25eb53=(_0x147a89['timeout']||0x14)*0x3e8;var _0x56eeef,_0x2517d2;if(_0x1aec2e>_0x25eb53){_0x25eb53=_0x1aec2e;}var _0x32078d=seqqueue[_0xf052('0x3f')](_0x1aec2e);_0x32078d['id']=_0x2a84e7;_0x32078d['atimeout']=_0x1aec2e;_0x32078d[_0xf052('0x40')]=_0x25eb53;_0x32078d[_0xf052('0x22')]=_0x25958c[_0xf052('0x22')];_0x315eb0[_0xf052('0x41')][_0x2a84e7]['on'](_0xf052('0x42'),function(){logger[_0xf052('0x31')](_0xf052('0x43'),_0x2a84e7);stopRouting(_0x2a84e7,_0x12643e,_0x25958c,_0x315eb0);clearTimeout(_0x56eeef);_0x56eeef=undefined;_0x32078d[_0xf052('0x44')](!![]);if(_0x315eb0[_0xf052('0x41')][_0x2a84e7]){delete _0x315eb0['rules'][_0x2a84e7];}_0x3ca602[_0xf052('0x3c')]();});_0x315eb0[_0xf052('0x41')][_0x2a84e7]['on'](_0xf052('0x45'),function(){if(_0x315eb0[_0xf052('0x41')][_0x2a84e7]){delete _0x315eb0[_0xf052('0x41')][_0x2a84e7];}});_0x56eeef=setTimeout(function(){logger['info'](_0xf052('0x46'),_0x2a84e7);endRouting(_0x2a84e7,_0x12643e,_0x25958c,_0x315eb0);clearTimeout(_0x56eeef);_0x32078d[_0xf052('0x44')](!![]);_0x3ca602[_0xf052('0x47')]();},_0x25eb53);switch(_0x12643e[_0xf052('0x48')]){case'rrmemory':strategy[_0xf052('0x49')](_0x32078d,_0x12643e,_0x315eb0,_0x25958c);break;default:strategy[_0xf052('0x4a')](_0x32078d,_0x12643e,_0x315eb0,_0x25958c);}}else{logger[_0xf052('0x2e')](_0xf052('0x4b'),_0x2a84e7,_0x147a89[_0xf052('0x2b')]);_0x3ca602['stop']();}}}catch(_0xea6cf9){console[_0xf052('0x4c')](_0xea6cf9);logger['error'](_0xf052('0x39'),_0x2a84e7,_0xea6cf9[_0xf052('0x4d')]);_0x3ca602['stop']();}};};
\ No newline at end of file
index d7ad1ea..9c490fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd899=['debug','[%s][AGENT]\x20try\x20with\x20%s','agent','isNil','realtime','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','busy','busyQueue','showNotification','writeLog','RINGING',':FORCED','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','STOP','TIMEOUT','exports','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','push','bind','handleTimeout','drained','handleDrained','prototype','handleRun'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd899,0x15e));var _0x9d89=function(_0x51d362,_0x54ac03){_0x51d362=_0x51d362-0x0;var _0x1504ee=_0xd899[_0x51d362];return _0x1504ee;};'use strict';var _=require('lodash');var uuid=require(_0x9d89('0x0'));var util=require(_0x9d89('0x1'));var logger=require(_0x9d89('0x2'))(_0x9d89('0x3'));var Agent=function(_0x8a8d7e,_0x285ef7,_0x41965a,_0x190d97){this[_0x9d89('0x4')]=uuid['v4']();this[_0x9d89('0x5')]=_0x8a8d7e;this['agent']=_0x285ef7;this['realtime']=_0x41965a;this[_0x9d89('0x3')]=_0x190d97;this[_0x9d89('0x5')][_0x9d89('0x6')](this['handleRun']['bind'](this),this['handleTimeout'][_0x9d89('0x7')](this));this['squeue']['on']('timeout',this[_0x9d89('0x8')]['bind'](this));this[_0x9d89('0x5')]['on'](_0x9d89('0x9'),this[_0x9d89('0xa')][_0x9d89('0x7')](this));};Agent[_0x9d89('0xb')][_0x9d89('0x6')]=function(){this[_0x9d89('0x5')][_0x9d89('0x6')](this[_0x9d89('0xc')][_0x9d89('0x7')](this),this[_0x9d89('0x8')]['bind'](this));};Agent[_0x9d89('0xb')]['handleDrained']=function(){this['handleTimeout'](!![]);};Agent[_0x9d89('0xb')][_0x9d89('0xc')]=function(){logger[_0x9d89('0xd')](_0x9d89('0xe'),this['squeue']['id'],this[_0x9d89('0xf')]['id']);if(_[_0x9d89('0x10')](this[_0x9d89('0x11')][_0x9d89('0x12')][this[_0x9d89('0xf')]['id']])){logger['debug'](_0x9d89('0x13'),this['squeue']['id'],this[_0x9d89('0xf')]['id']);setTimeout(this[_0x9d89('0x6')][_0x9d89('0x7')](this),0x3e8);}else{if(this[_0x9d89('0x3')][_0x9d89('0x14')]||util[_0x9d89('0x15')](this['squeue']['id'],this[_0x9d89('0x11')][_0x9d89('0x12')][this['agent']['id']],this['squeue']['channel'],![])){this['realtime'][_0x9d89('0x12')][this[_0x9d89('0xf')]['id']][_0x9d89('0x16')]=!![];this[_0x9d89('0x11')]['agents'][this['agent']['id']][_0x9d89('0x17')]=undefined;util[_0x9d89('0x18')](this[_0x9d89('0x4')],this[_0x9d89('0x5')]['id'],this['realtime'][_0x9d89('0x12')][this[_0x9d89('0xf')]['id']],null,this[_0x9d89('0x3')]);util[_0x9d89('0x19')](this['squeue']['id'],this['realtime'][_0x9d89('0x12')][this[_0x9d89('0xf')]['id']],_0x9d89('0x1a')+(this[_0x9d89('0x3')][_0x9d89('0x14')]?_0x9d89('0x1b'):''));}else{logger[_0x9d89('0xd')]('[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available',this[_0x9d89('0x5')]['id'],this[_0x9d89('0xf')]['id']);setTimeout(this[_0x9d89('0x6')][_0x9d89('0x7')](this),0x3e8);}}};Agent[_0x9d89('0xb')]['handleTimeout']=function(_0xe16013){if(_[_0x9d89('0x10')](this[_0x9d89('0x11')]['agents'][this['agent']['id']])){return logger[_0x9d89('0xd')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],this['agent']['id']);}else{logger[_0x9d89('0xd')](_0x9d89('0x1c'),this['squeue']['id'],this[_0x9d89('0xf')]['id']);util[_0x9d89('0x1d')](this[_0x9d89('0x4')],this['squeue']['id'],this[_0x9d89('0x11')][_0x9d89('0x12')][this[_0x9d89('0xf')]['id']],null,this[_0x9d89('0x3')]);this[_0x9d89('0x11')][_0x9d89('0x12')][this['agent']['id']][_0x9d89('0x16')]=![];this['realtime'][_0x9d89('0x12')][this[_0x9d89('0xf')]['id']][_0x9d89('0x17')]=undefined;util[_0x9d89('0x19')](this[_0x9d89('0x5')]['id'],this[_0x9d89('0x11')][_0x9d89('0x12')][this['agent']['id']],_0xe16013?_0x9d89('0x1e'):_0x9d89('0x1f'));}if(!_0xe16013){setTimeout(this[_0x9d89('0x6')]['bind'](this),0x3e8);}};function agent(_0x3daf4d,_0x587142,_0x263af1,_0x24e8e5){return new Agent(_0x3daf4d,_0x587142,_0x263af1,_0x24e8e5);}module[_0x9d89('0x20')]=agent;
\ No newline at end of file
+var _0x17b6=['squeue','handleRun','bind','handleTimeout','drained','push','prototype','handleDrained','info','agent','isNil','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','agents','busy','busyQueue','showNotification',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','notificationId','writeLog','STOP','TIMEOUT','exports','lodash','./util','../../../../../config/logger','routing','realtime'];(function(_0x4792c8,_0x5158a1){var _0x35edb1=function(_0x2472d3){while(--_0x2472d3){_0x4792c8['push'](_0x4792c8['shift']());}};_0x35edb1(++_0x5158a1);}(_0x17b6,0xb5));var _0x617b=function(_0xb8a402,_0x5c6c96){_0xb8a402=_0xb8a402-0x0;var _0x4eed7c=_0x17b6[_0xb8a402];return _0x4eed7c;};'use strict';var _=require(_0x617b('0x0'));var uuid=require('uuid');var util=require(_0x617b('0x1'));var logger=require(_0x617b('0x2'))(_0x617b('0x3'));var Agent=function(_0x46e85c,_0x1647cf,_0x40aa38,_0x136896){this['notificationId']=uuid['v4']();this['squeue']=_0x46e85c;this['agent']=_0x1647cf;this[_0x617b('0x4')]=_0x40aa38;this[_0x617b('0x3')]=_0x136896;this[_0x617b('0x5')]['push'](this[_0x617b('0x6')][_0x617b('0x7')](this),this[_0x617b('0x8')]['bind'](this));this['squeue']['on']('timeout',this[_0x617b('0x8')]['bind'](this));this[_0x617b('0x5')]['on'](_0x617b('0x9'),this['handleDrained'][_0x617b('0x7')](this));};Agent['prototype'][_0x617b('0xa')]=function(){this[_0x617b('0x5')][_0x617b('0xa')](this[_0x617b('0x6')][_0x617b('0x7')](this),this[_0x617b('0x8')][_0x617b('0x7')](this));};Agent[_0x617b('0xb')][_0x617b('0xc')]=function(){this[_0x617b('0x8')](!![]);};Agent[_0x617b('0xb')][_0x617b('0x6')]=function(_0x57881d){logger[_0x617b('0xd')]('[%s][AGENT]\x20try\x20with\x20%s',this[_0x617b('0x5')]['id'],this[_0x617b('0xe')]['id']);if(_[_0x617b('0xf')](this[_0x617b('0x4')]['agents'][this[_0x617b('0xe')]['id']])){logger[_0x617b('0xd')](_0x617b('0x10'),this[_0x617b('0x5')]['id'],this[_0x617b('0xe')]['id']);setTimeout(this['push'][_0x617b('0x7')](this),0x3e8);}else{if(this['routing'][_0x617b('0x11')]||util[_0x617b('0x12')](this[_0x617b('0x5')]['id'],this['realtime'][_0x617b('0x13')][this[_0x617b('0xe')]['id']],this[_0x617b('0x5')]['channel'],![])){this['realtime'][_0x617b('0x13')][this[_0x617b('0xe')]['id']][_0x617b('0x14')]=!![];this[_0x617b('0x4')]['agents'][this[_0x617b('0xe')]['id']][_0x617b('0x15')]=undefined;util[_0x617b('0x16')](this['notificationId'],this[_0x617b('0x5')]['id'],this[_0x617b('0x4')][_0x617b('0x13')][this[_0x617b('0xe')]['id']],null,this[_0x617b('0x3')]);util['writeLog'](this[_0x617b('0x5')]['id'],this[_0x617b('0x4')][_0x617b('0x13')][this[_0x617b('0xe')]['id']],'RINGING'+(this[_0x617b('0x3')]['forcedOwnership']?_0x617b('0x17'):''));}else{logger[_0x617b('0xd')](_0x617b('0x18'),this[_0x617b('0x5')]['id'],this[_0x617b('0xe')]['id']);setTimeout(this[_0x617b('0xa')][_0x617b('0x7')](this),0x3e8);}}};Agent[_0x617b('0xb')][_0x617b('0x8')]=function(_0xeeb86b){if(_[_0x617b('0xf')](this[_0x617b('0x4')][_0x617b('0x13')][this[_0x617b('0xe')]['id']])){return logger['info']('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x617b('0x5')]['id'],this['agent']['id']);}else{logger[_0x617b('0xd')](_0x617b('0x19'),this['squeue']['id'],this[_0x617b('0xe')]['id']);util['hideNotification'](this[_0x617b('0x1a')],this['squeue']['id'],this[_0x617b('0x4')]['agents'][this[_0x617b('0xe')]['id']],null,this['routing']);this[_0x617b('0x4')][_0x617b('0x13')][this[_0x617b('0xe')]['id']][_0x617b('0x14')]=![];this[_0x617b('0x4')][_0x617b('0x13')][this[_0x617b('0xe')]['id']][_0x617b('0x15')]=undefined;util[_0x617b('0x1b')](this[_0x617b('0x5')]['id'],this[_0x617b('0x4')][_0x617b('0x13')][this[_0x617b('0xe')]['id']],_0xeeb86b?_0x617b('0x1c'):_0x617b('0x1d'));}if(!_0xeeb86b){setTimeout(this[_0x617b('0xa')][_0x617b('0x7')](this),0x3e8);}};function agent(_0x465fbd,_0x18d7c3,_0xf80159,_0x2715d6){return new Agent(_0x465fbd,_0x18d7c3,_0xf80159,_0x2715d6);}module[_0x617b('0x1e')]=agent;
\ No newline at end of file
index c885fd9..bfe3cfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf12a=['[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','hideNotification','STOP','TIMEOUT','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','queue','push','handleRun','bind','handleTimeout','squeue','timeout','handleDrained','prototype','isNil','Agents','length','realtime','agents','debug','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','writeLog','RINGING','name','showNotification'];(function(_0x2e5821,_0x3a7f1f){var _0x305475=function(_0x351efb){while(--_0x351efb){_0x2e5821['push'](_0x2e5821['shift']());}};_0x305475(++_0x3a7f1f);}(_0xf12a,0x8e));var _0xaf12=function(_0x139a4f,_0x5c6d66){_0x139a4f=_0x139a4f-0x0;var _0x46ed1c=_0xf12a[_0x139a4f];return _0x46ed1c;};'use strict';var _=require(_0xaf12('0x0'));var uuid=require(_0xaf12('0x1'));var util=require(_0xaf12('0x2'));var logger=require(_0xaf12('0x3'))(_0xaf12('0x4'));var Beepall=function(_0x205455,_0x193278,_0x4a3a62,_0x5b7b5b){this[_0xaf12('0x5')]=uuid['v4']();this['squeue']=_0x205455;this[_0xaf12('0x6')]=_0x193278;this['realtime']=_0x4a3a62;this[_0xaf12('0x4')]=_0x5b7b5b;this['squeue'][_0xaf12('0x7')](this[_0xaf12('0x8')][_0xaf12('0x9')](this),this[_0xaf12('0xa')][_0xaf12('0x9')](this));this[_0xaf12('0xb')]['on'](_0xaf12('0xc'),this[_0xaf12('0xa')]['bind'](this));this[_0xaf12('0xb')]['on']('drained',this[_0xaf12('0xd')]['bind'](this));};Beepall[_0xaf12('0xe')]['push']=function(){this['squeue'][_0xaf12('0x7')](this[_0xaf12('0x8')][_0xaf12('0x9')](this),this[_0xaf12('0xa')][_0xaf12('0x9')](this));};Beepall[_0xaf12('0xe')][_0xaf12('0xd')]=function(){this[_0xaf12('0xa')](!![]);};Beepall[_0xaf12('0xe')][_0xaf12('0x8')]=function(){var _0xa41e71=!![];if(!_[_0xaf12('0xf')](this[_0xaf12('0x6')])&&!_[_0xaf12('0xf')](this[_0xaf12('0x6')][_0xaf12('0x10')])&&this[_0xaf12('0x6')]['Agents'][_0xaf12('0x11')]>0x0){for(var _0x31a420=0x0,_0x4b6d83;_0x31a420<this['queue']['Agents'][_0xaf12('0x11')];_0x31a420+=0x1){_0x4b6d83=this['queue'][_0xaf12('0x10')][_0x31a420]['id'];if(_['isNil'](this[_0xaf12('0x12')][_0xaf12('0x13')][_0x4b6d83])){logger[_0xaf12('0x14')](_0xaf12('0x15'),this['squeue']['id'],_0x4b6d83);}else{if(util[_0xaf12('0x16')](this[_0xaf12('0xb')]['id'],this[_0xaf12('0x12')][_0xaf12('0x13')][_0x4b6d83],this[_0xaf12('0xb')][_0xaf12('0x17')],!![])){_0xa41e71=![];util[_0xaf12('0x18')](this[_0xaf12('0xb')]['id'],this[_0xaf12('0x12')][_0xaf12('0x13')][_0x4b6d83],_0xaf12('0x19'));this[_0xaf12('0x12')][_0xaf12('0x13')][_0x4b6d83]['busy']=!![];this[_0xaf12('0x12')]['agents'][_0x4b6d83]['busyQueue']=this[_0xaf12('0x6')][_0xaf12('0x1a')];util[_0xaf12('0x1b')](this['notificationId'],this[_0xaf12('0xb')]['id'],this[_0xaf12('0x12')]['agents'][_0x4b6d83],this[_0xaf12('0x6')],this[_0xaf12('0x4')]);}}}if(_0xa41e71){logger[_0xaf12('0x14')](_0xaf12('0x1c'),this[_0xaf12('0xb')]['id']);setTimeout(this[_0xaf12('0x7')][_0xaf12('0x9')](this),0x3e8);}}else{logger[_0xaf12('0x14')](_0xaf12('0x1d'),this['squeue']['id']);setTimeout(this[_0xaf12('0x7')]['bind'](this),0x3e8);}};Beepall[_0xaf12('0xe')][_0xaf12('0xa')]=function(_0xb975f5){if(!_['isNil'](this['queue'])&&!_['isNil'](this['queue']['Agents'])){for(var _0x53401b=0x0,_0x64625;_0x53401b<this[_0xaf12('0x6')][_0xaf12('0x10')][_0xaf12('0x11')];_0x53401b+=0x1){_0x64625=this['queue'][_0xaf12('0x10')][_0x53401b]['id'];if(_[_0xaf12('0xf')](this['realtime'][_0xaf12('0x13')][_0x64625])){logger['debug'](_0xaf12('0x15'),this[_0xaf12('0xb')]['id'],_0x64625);}else{util[_0xaf12('0x1e')](this[_0xaf12('0x5')],this[_0xaf12('0xb')]['id'],this['realtime'][_0xaf12('0x13')][_0x64625],this[_0xaf12('0x6')],this[_0xaf12('0x4')]);util[_0xaf12('0x18')](this[_0xaf12('0xb')]['id'],this[_0xaf12('0x12')][_0xaf12('0x13')][_0x64625],_0xb975f5?_0xaf12('0x1f'):_0xaf12('0x20'));this[_0xaf12('0x12')]['agents'][_0x64625]['busy']=![];this[_0xaf12('0x12')]['agents'][_0x64625]['busyQueue']=undefined;}}}if(!_0xb975f5){setTimeout(this['push'][_0xaf12('0x9')](this),0x3e8);}};function beepall(_0x54248c,_0x47dec9,_0x16ba40,_0x517c4a){return new Beepall(_0x54248c,_0x47dec9,_0x16ba40,_0x517c4a);}module[_0xaf12('0x21')]=beepall;
\ No newline at end of file
+var _0x7a2d=['Agents','length','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','agents','RINGING','busy','busyQueue','name','showNotification','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','info','[%s][QUEUE]\x20EMPTY','hideNotification','writeLog','TIMEOUT','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','queue','realtime','push','handleRun','bind','handleTimeout','timeout','drained','handleDrained','prototype','isNil'];(function(_0x493840,_0x3fb5ea){var _0x46a206=function(_0x57efc4){while(--_0x57efc4){_0x493840['push'](_0x493840['shift']());}};_0x46a206(++_0x3fb5ea);}(_0x7a2d,0x142));var _0xd7a2=function(_0x52a53e,_0x25fb6c){_0x52a53e=_0x52a53e-0x0;var _0x21bff2=_0x7a2d[_0x52a53e];return _0x21bff2;};'use strict';var _=require(_0xd7a2('0x0'));var uuid=require(_0xd7a2('0x1'));var util=require(_0xd7a2('0x2'));var logger=require(_0xd7a2('0x3'))(_0xd7a2('0x4'));var Beepall=function(_0x1edb4e,_0x31dd61,_0x4b5379,_0x500472){this[_0xd7a2('0x5')]=uuid['v4']();this[_0xd7a2('0x6')]=_0x1edb4e;this[_0xd7a2('0x7')]=_0x31dd61;this[_0xd7a2('0x8')]=_0x4b5379;this['routing']=_0x500472;this[_0xd7a2('0x6')][_0xd7a2('0x9')](this[_0xd7a2('0xa')][_0xd7a2('0xb')](this),this[_0xd7a2('0xc')][_0xd7a2('0xb')](this));this[_0xd7a2('0x6')]['on'](_0xd7a2('0xd'),this[_0xd7a2('0xc')]['bind'](this));this[_0xd7a2('0x6')]['on'](_0xd7a2('0xe'),this[_0xd7a2('0xf')][_0xd7a2('0xb')](this));};Beepall[_0xd7a2('0x10')][_0xd7a2('0x9')]=function(){this[_0xd7a2('0x6')]['push'](this['handleRun'][_0xd7a2('0xb')](this),this['handleTimeout'][_0xd7a2('0xb')](this));};Beepall[_0xd7a2('0x10')][_0xd7a2('0xf')]=function(_0x33131e){this[_0xd7a2('0xc')](!![]);};Beepall[_0xd7a2('0x10')][_0xd7a2('0xa')]=function(_0x1e0ab5){var _0x396c07=!![];if(!_[_0xd7a2('0x11')](this[_0xd7a2('0x7')])&&!_['isNil'](this[_0xd7a2('0x7')]['Agents'])&&this['queue'][_0xd7a2('0x12')][_0xd7a2('0x13')]>0x0){for(var _0x2e8c80=0x0,_0x11d958;_0x2e8c80<this[_0xd7a2('0x7')][_0xd7a2('0x12')]['length'];_0x2e8c80+=0x1){_0x11d958=this['queue'][_0xd7a2('0x12')][_0x2e8c80]['id'];if(_[_0xd7a2('0x11')](this[_0xd7a2('0x8')]['agents'][_0x11d958])){logger['info'](_0xd7a2('0x14'),this['squeue']['id'],_0x11d958);}else{if(util['isAgentAvailable'](this[_0xd7a2('0x6')]['id'],this['realtime']['agents'][_0x11d958],this[_0xd7a2('0x6')]['channel'],!![])){_0x396c07=![];util['writeLog'](this['squeue']['id'],this[_0xd7a2('0x8')][_0xd7a2('0x15')][_0x11d958],_0xd7a2('0x16'));this[_0xd7a2('0x8')][_0xd7a2('0x15')][_0x11d958][_0xd7a2('0x17')]=!![];this[_0xd7a2('0x8')][_0xd7a2('0x15')][_0x11d958][_0xd7a2('0x18')]=this[_0xd7a2('0x7')][_0xd7a2('0x19')];util[_0xd7a2('0x1a')](this[_0xd7a2('0x5')],this['squeue']['id'],this['realtime'][_0xd7a2('0x15')][_0x11d958],this['queue'],this[_0xd7a2('0x4')]);}}}if(_0x396c07){logger['info'](_0xd7a2('0x1b'),this[_0xd7a2('0x6')]['id']);setTimeout(this[_0xd7a2('0x9')][_0xd7a2('0xb')](this),0x3e8);}}else{logger[_0xd7a2('0x1c')](_0xd7a2('0x1d'),this[_0xd7a2('0x6')]['id']);setTimeout(this[_0xd7a2('0x9')][_0xd7a2('0xb')](this),0x3e8);}};Beepall[_0xd7a2('0x10')][_0xd7a2('0xc')]=function(_0x37a24c){if(!_[_0xd7a2('0x11')](this[_0xd7a2('0x7')])&&!_[_0xd7a2('0x11')](this['queue'][_0xd7a2('0x12')])){for(var _0x1184de=0x0,_0x530c55;_0x1184de<this[_0xd7a2('0x7')][_0xd7a2('0x12')]['length'];_0x1184de+=0x1){_0x530c55=this[_0xd7a2('0x7')][_0xd7a2('0x12')][_0x1184de]['id'];if(_[_0xd7a2('0x11')](this['realtime'][_0xd7a2('0x15')][_0x530c55])){logger[_0xd7a2('0x1c')](_0xd7a2('0x14'),this['squeue']['id'],_0x530c55);}else{util[_0xd7a2('0x1e')](this['notificationId'],this[_0xd7a2('0x6')]['id'],this[_0xd7a2('0x8')][_0xd7a2('0x15')][_0x530c55],this[_0xd7a2('0x7')],this['routing']);util[_0xd7a2('0x1f')](this[_0xd7a2('0x6')]['id'],this[_0xd7a2('0x8')][_0xd7a2('0x15')][_0x530c55],_0x37a24c?'STOP':_0xd7a2('0x20'));this[_0xd7a2('0x8')][_0xd7a2('0x15')][_0x530c55][_0xd7a2('0x17')]=![];this[_0xd7a2('0x8')][_0xd7a2('0x15')][_0x530c55][_0xd7a2('0x18')]=undefined;}}}if(!_0x37a24c){setTimeout(this[_0xd7a2('0x9')][_0xd7a2('0xb')](this),0x3e8);}};function beepall(_0x5322c2,_0x356375,_0x475fae,_0x229c41){return new Beepall(_0x5322c2,_0x356375,_0x475fae,_0x229c41);}module[_0xd7a2('0x21')]=beepall;
\ No newline at end of file
index eea835e..6663910 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54f4=['./agent','./rrmemory','./beepall'];(function(_0x5481df,_0x5f03c1){var _0x5b304e=function(_0x3cff9d){while(--_0x3cff9d){_0x5481df['push'](_0x5481df['shift']());}};_0x5b304e(++_0x5f03c1);}(_0x54f4,0xa6));var _0x454f=function(_0x1261cf,_0x50295a){_0x1261cf=_0x1261cf-0x0;var _0xbbfe70=_0x54f4[_0x1261cf];return _0xbbfe70;};'use strict';module['exports']={'rrmemory':require(_0x454f('0x0')),'beepall':require(_0x454f('0x1')),'agent':require(_0x454f('0x2'))};
\ No newline at end of file
+var _0x6365=['exports','./rrmemory','./beepall','./agent'];(function(_0x250ce7,_0x502ad3){var _0x416428=function(_0x46564d){while(--_0x46564d){_0x250ce7['push'](_0x250ce7['shift']());}};_0x416428(++_0x502ad3);}(_0x6365,0x148));var _0x5636=function(_0x450b72,_0x20db1a){_0x450b72=_0x450b72-0x0;var _0x552494=_0x6365[_0x450b72];return _0x552494;};'use strict';module[_0x5636('0x0')]={'rrmemory':require(_0x5636('0x1')),'beepall':require(_0x5636('0x2')),'agent':require(_0x5636('0x3'))};
\ No newline at end of file
index 24c3f1d..48228f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29b7=['TIMEOUT','uuid','./util','../../../../../config/logger','routing','squeue','queue','intervals','push','bind','handleTimeout','module','timeout','drained','handleDrained','handleRun','prototype','handleCheckReject','isAgentAvailable','agents','agentId','channel','[%s][QUEUE]\x20available\x20again\x20%s','done','mapAgentsId','isNil','realtime','debug','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','busy','busyQueue','name','showNotification','notificationId','writeLog','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','hideNotification'];(function(_0x491a7f,_0x28bb80){var _0x3d8f44=function(_0xdaa716){while(--_0xdaa716){_0x491a7f['push'](_0x491a7f['shift']());}};_0x3d8f44(++_0x28bb80);}(_0x29b7,0x17d));var _0x729b=function(_0x3b5d1a,_0x5cdf70){_0x3b5d1a=_0x3b5d1a-0x0;var _0x19f927=_0x29b7[_0x3b5d1a];return _0x19f927;};'use strict';var rr=require('rr');var _=require('lodash');var uuid=require(_0x729b('0x0'));var util=require(_0x729b('0x1'));var logger=require(_0x729b('0x2'))(_0x729b('0x3'));var RRMemory=function(_0x2d36a3,_0x9b94dc,_0x1c4c0c,_0x2bfcaf){this['notificationId']=uuid['v4']();this[_0x729b('0x4')]=_0x2d36a3;this[_0x729b('0x5')]=_0x9b94dc;this['realtime']=_0x1c4c0c;this[_0x729b('0x3')]=_0x2bfcaf;this[_0x729b('0x6')]={};this[_0x729b('0x4')][_0x729b('0x7')](this['handleRun'][_0x729b('0x8')](this),this[_0x729b('0x9')][_0x729b('0x8')](this),this[_0x729b('0xa')]);this[_0x729b('0x4')]['on'](_0x729b('0xb'),this['handleTimeout'][_0x729b('0x8')](this));this['squeue']['on'](_0x729b('0xc'),this[_0x729b('0xd')][_0x729b('0x8')](this));};RRMemory['prototype'][_0x729b('0x7')]=function(){this[_0x729b('0x4')][_0x729b('0x7')](this[_0x729b('0xe')][_0x729b('0x8')](this),this['handleTimeout'][_0x729b('0x8')](this));};RRMemory[_0x729b('0xf')]['handleDrained']=function(){this[_0x729b('0x9')](!![]);};RRMemory[_0x729b('0xf')][_0x729b('0x10')]=function(_0xc89ca7){if(util[_0x729b('0x11')](this['squeue']['id'],this['realtime'][_0x729b('0x12')][this[_0x729b('0x13')]],this[_0x729b('0x4')][_0x729b('0x14')],!![])){logger['debug'](_0x729b('0x15'),this[_0x729b('0x4')]['id'],this['agentId']);clearInterval(this[_0x729b('0x6')][this[_0x729b('0x13')]]);_0xc89ca7[_0x729b('0x16')]();setTimeout(this[_0x729b('0x7')][_0x729b('0x8')](this),0x3e8);}};RRMemory['prototype'][_0x729b('0xe')]=function(_0x3fbc20){this['agentId']=rr(this[_0x729b('0x5')][_0x729b('0x17')]);logger['debug']('[%s][QUEUE]\x20try\x20with\x20%s',this[_0x729b('0x4')]['id'],this[_0x729b('0x13')]);if(_[_0x729b('0x18')](this[_0x729b('0x19')][_0x729b('0x12')][this[_0x729b('0x13')]])){logger[_0x729b('0x1a')](_0x729b('0x1b'),this['squeue']['id'],this[_0x729b('0x13')]);_0x3fbc20[_0x729b('0x16')]();setTimeout(this[_0x729b('0x7')][_0x729b('0x8')](this),0x3e8);}else{if(util[_0x729b('0x11')](this['squeue']['id'],this[_0x729b('0x19')][_0x729b('0x12')][this['agentId']],this[_0x729b('0x4')]['channel'],!![])){this['realtime'][_0x729b('0x12')][this[_0x729b('0x13')]][_0x729b('0x1c')]=!![];this[_0x729b('0x19')][_0x729b('0x12')][this['agentId']][_0x729b('0x1d')]=this[_0x729b('0x5')][_0x729b('0x1e')];util[_0x729b('0x1f')](this[_0x729b('0x20')],this[_0x729b('0x4')]['id'],this[_0x729b('0x19')][_0x729b('0x12')][this['agentId']],this[_0x729b('0x5')],this[_0x729b('0x3')]);util[_0x729b('0x21')](this['squeue']['id'],this[_0x729b('0x19')][_0x729b('0x12')][this[_0x729b('0x13')]],'RINGING');this[_0x729b('0x6')][this[_0x729b('0x13')]]=setInterval(this['handleCheckReject'][_0x729b('0x8')](this,_0x3fbc20),0x3e8);}else{logger['debug'](_0x729b('0x22'),this[_0x729b('0x4')]['id'],this['agentId']);_0x3fbc20[_0x729b('0x16')]();setTimeout(this[_0x729b('0x7')][_0x729b('0x8')](this),0x3e8);}}};RRMemory[_0x729b('0xf')][_0x729b('0x9')]=function(_0x2d3f2d){logger['debug'](_0x729b('0x23'),this[_0x729b('0x4')]['id'],this[_0x729b('0x13')]);if(_[_0x729b('0x18')](this[_0x729b('0x19')][_0x729b('0x12')][this['agentId']])){logger[_0x729b('0x1a')](_0x729b('0x1b'),this['squeue']['id'],this[_0x729b('0x13')]);}else{clearInterval(this[_0x729b('0x6')][this['agentId']]);util[_0x729b('0x24')](this[_0x729b('0x20')],this[_0x729b('0x4')]['id'],this[_0x729b('0x19')][_0x729b('0x12')][this[_0x729b('0x13')]],this[_0x729b('0x5')],this[_0x729b('0x3')]);util[_0x729b('0x21')](this[_0x729b('0x4')]['id'],this['realtime'][_0x729b('0x12')][this[_0x729b('0x13')]],_0x729b('0x25'));this[_0x729b('0x19')]['agents'][this[_0x729b('0x13')]][_0x729b('0x1c')]=![];this[_0x729b('0x19')]['agents'][this['agentId']][_0x729b('0x1d')]=undefined;}if(!_0x2d3f2d){setTimeout(this[_0x729b('0x7')]['bind'](this),0x3e8);}};function rrmemory(_0x23dbbc,_0x8fb8fd,_0x42fe45,_0x20122b){return new RRMemory(_0x23dbbc,_0x8fb8fd,_0x42fe45,_0x20122b);}module['exports']=rrmemory;
\ No newline at end of file
+var _0xaa7b=['drained','handleDrained','prototype','handleCheckReject','isAgentAvailable','agentId','channel','info','done','mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','isNil','agents','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','busy','busyQueue','name','showNotification','writeLog','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','TIMEOUT','exports','lodash','uuid','./util','notificationId','squeue','queue','realtime','routing','intervals','push','handleRun','bind','module','timeout','handleTimeout'];(function(_0x4f8f3b,_0x43281b){var _0x4c250c=function(_0x19a7ff){while(--_0x19a7ff){_0x4f8f3b['push'](_0x4f8f3b['shift']());}};_0x4c250c(++_0x43281b);}(_0xaa7b,0xfb));var _0xbaa7=function(_0x61780e,_0x44b778){_0x61780e=_0x61780e-0x0;var _0x460363=_0xaa7b[_0x61780e];return _0x460363;};'use strict';var rr=require('rr');var _=require(_0xbaa7('0x0'));var uuid=require(_0xbaa7('0x1'));var util=require(_0xbaa7('0x2'));var logger=require('../../../../../config/logger')('routing');var RRMemory=function(_0x2601f2,_0x35d610,_0x41f569,_0x43335d){this[_0xbaa7('0x3')]=uuid['v4']();this[_0xbaa7('0x4')]=_0x2601f2;this[_0xbaa7('0x5')]=_0x35d610;this[_0xbaa7('0x6')]=_0x41f569;this[_0xbaa7('0x7')]=_0x43335d;this[_0xbaa7('0x8')]={};this[_0xbaa7('0x4')][_0xbaa7('0x9')](this[_0xbaa7('0xa')][_0xbaa7('0xb')](this),this['handleTimeout'][_0xbaa7('0xb')](this),this[_0xbaa7('0xc')]);this['squeue']['on'](_0xbaa7('0xd'),this[_0xbaa7('0xe')][_0xbaa7('0xb')](this));this[_0xbaa7('0x4')]['on'](_0xbaa7('0xf'),this[_0xbaa7('0x10')]['bind'](this));};RRMemory[_0xbaa7('0x11')][_0xbaa7('0x9')]=function(){this['squeue'][_0xbaa7('0x9')](this[_0xbaa7('0xa')]['bind'](this),this['handleTimeout'][_0xbaa7('0xb')](this));};RRMemory[_0xbaa7('0x11')][_0xbaa7('0x10')]=function(_0x497e26){this[_0xbaa7('0xe')](!![]);};RRMemory[_0xbaa7('0x11')][_0xbaa7('0x12')]=function(_0x23a01f){if(util[_0xbaa7('0x13')](this[_0xbaa7('0x4')]['id'],this['realtime']['agents'][this[_0xbaa7('0x14')]],this[_0xbaa7('0x4')][_0xbaa7('0x15')],!![])){logger[_0xbaa7('0x16')]('[%s][QUEUE]\x20available\x20again\x20%s',this['squeue']['id'],this[_0xbaa7('0x14')]);clearInterval(this['intervals'][this[_0xbaa7('0x14')]]);_0x23a01f[_0xbaa7('0x17')]();setTimeout(this[_0xbaa7('0x9')]['bind'](this),0x3e8);}};RRMemory[_0xbaa7('0x11')][_0xbaa7('0xa')]=function(_0x57730e){this[_0xbaa7('0x14')]=rr(this[_0xbaa7('0x5')][_0xbaa7('0x18')]);logger['info'](_0xbaa7('0x19'),this['squeue']['id'],this[_0xbaa7('0x14')]);if(_[_0xbaa7('0x1a')](this[_0xbaa7('0x6')][_0xbaa7('0x1b')][this['agentId']])){logger[_0xbaa7('0x16')](_0xbaa7('0x1c'),this[_0xbaa7('0x4')]['id'],this[_0xbaa7('0x14')]);_0x57730e[_0xbaa7('0x17')]();setTimeout(this[_0xbaa7('0x9')][_0xbaa7('0xb')](this),0x3e8);}else{if(util[_0xbaa7('0x13')](this[_0xbaa7('0x4')]['id'],this[_0xbaa7('0x6')][_0xbaa7('0x1b')][this[_0xbaa7('0x14')]],this[_0xbaa7('0x4')][_0xbaa7('0x15')],!![])){this[_0xbaa7('0x6')]['agents'][this['agentId']][_0xbaa7('0x1d')]=!![];this[_0xbaa7('0x6')][_0xbaa7('0x1b')][this['agentId']][_0xbaa7('0x1e')]=this['queue'][_0xbaa7('0x1f')];util[_0xbaa7('0x20')](this[_0xbaa7('0x3')],this[_0xbaa7('0x4')]['id'],this[_0xbaa7('0x6')][_0xbaa7('0x1b')][this[_0xbaa7('0x14')]],this[_0xbaa7('0x5')],this[_0xbaa7('0x7')]);util[_0xbaa7('0x21')](this[_0xbaa7('0x4')]['id'],this['realtime'][_0xbaa7('0x1b')][this[_0xbaa7('0x14')]],'RINGING');this[_0xbaa7('0x8')][this['agentId']]=setInterval(this[_0xbaa7('0x12')][_0xbaa7('0xb')](this,_0x57730e),0x3e8);}else{logger[_0xbaa7('0x16')](_0xbaa7('0x22'),this['squeue']['id'],this[_0xbaa7('0x14')]);_0x57730e['done']();setTimeout(this[_0xbaa7('0x9')][_0xbaa7('0xb')](this),0x3e8);}}};RRMemory['prototype'][_0xbaa7('0xe')]=function(_0x3e322f){logger[_0xbaa7('0x16')](_0xbaa7('0x23'),this['squeue']['id'],this['agentId']);if(_[_0xbaa7('0x1a')](this[_0xbaa7('0x6')][_0xbaa7('0x1b')][this[_0xbaa7('0x14')]])){logger[_0xbaa7('0x16')](_0xbaa7('0x1c'),this['squeue']['id'],this[_0xbaa7('0x14')]);}else{clearInterval(this[_0xbaa7('0x8')][this[_0xbaa7('0x14')]]);util['hideNotification'](this[_0xbaa7('0x3')],this[_0xbaa7('0x4')]['id'],this['realtime'][_0xbaa7('0x1b')][this[_0xbaa7('0x14')]],this[_0xbaa7('0x5')],this['routing']);util['writeLog'](this[_0xbaa7('0x4')]['id'],this[_0xbaa7('0x6')][_0xbaa7('0x1b')][this[_0xbaa7('0x14')]],_0xbaa7('0x24'));this['realtime'][_0xbaa7('0x1b')][this[_0xbaa7('0x14')]]['busy']=![];this[_0xbaa7('0x6')][_0xbaa7('0x1b')][this['agentId']]['busyQueue']=undefined;}if(!_0x3e322f){setTimeout(this[_0xbaa7('0x9')]['bind'](this),0x3e8);}};function rrmemory(_0x468d63,_0x3de68e,_0xa036dc,_0x280987){return new RRMemory(_0x468d63,_0x3de68e,_0xa036dc,_0x280987);}module[_0xbaa7('0x25')]=rrmemory;
\ No newline at end of file
index c42a8ad..2f13ca6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['lodash','util','../../../../../config/logger','routing','defaults','redis','localhost','socket.io-emitter','format','user:%s','user:save','split','\x20interaction','name','account','notificationSound','body','queue','msg','getMustacheRender','I\x20can\x27t\x20render\x20your\x20template','error','[%s][QUEUE]\x20%s','message','emit','notification:%s','save','remove','debug','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','BUSY','online','Pause','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','showNotification','writeLog'];(function(_0x17406a,_0x1e2320){var _0x1501ff=function(_0x4b075a){while(--_0x4b075a){_0x17406a['push'](_0x17406a['shift']());}};_0x1501ff(++_0x1e2320);}(_0x55ca,0x126));var _0xa55c=function(_0x10d6f2,_0x18ae62){_0x10d6f2=_0x10d6f2-0x0;var _0x59e5c7=_0x55ca[_0x10d6f2];return _0x59e5c7;};'use strict';var _=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var utils=require('../utils');var Redis=require('ioredis');var config=require('../../../../../config/environment');var logger=require(_0xa55c('0x2'))(_0xa55c('0x3'));config['redis']=_[_0xa55c('0x4')](config[_0xa55c('0x5')],{'host':_0xa55c('0x6'),'port':0x18eb});var io=require(_0xa55c('0x7'))(new Redis(config[_0xa55c('0x5')]));function sendNotification(_0x279caa,_0x36b623,_0x4d0624,_0x2121fd,_0x2537f0,_0x57e069){io['to'](util[_0xa55c('0x8')](_0xa55c('0x9'),_0x2121fd['name']))['emit'](_0xa55c('0xa'),_0x2121fd);var _0x20c76a=_0x57e069||{};var _0x381d07=_0x4d0624[_0xa55c('0xb')]('.');var _0x31646d={'uniqueid':_0x36b623,'channel':_0x381d07[0x0],'id':_0x381d07[0x1],'title':_0x381d07[0x0]+_0xa55c('0xc'),'interactionId':_0x381d07[0x2],'queue':_0x2537f0?_0x2537f0[_0xa55c('0xd')]:null,'sound':_0x20c76a[_0xa55c('0xe')][_0xa55c('0xf')],'shake':_0x20c76a[_0xa55c('0xe')]['notificationShake']};try{if(!_0x20c76a['body']){_0x20c76a[_0xa55c('0x10')]={};}if(_0x2537f0){_0x20c76a['body']['queue']=_0x2537f0;}else if(_0x20c76a['body'][_0xa55c('0x11')]){delete _0x20c76a[_0xa55c('0x10')][_0xa55c('0x11')];}_0x31646d[_0xa55c('0x12')]=utils[_0xa55c('0x13')](_0x20c76a[_0xa55c('0xe')]['notificationTemplate'],_0x20c76a);}catch(_0x3ccf65){_0x31646d[_0xa55c('0x12')]=_0xa55c('0x14');logger[_0xa55c('0x15')](util[_0xa55c('0x8')](_0xa55c('0x16'),_0x36b623,_0x3ccf65[_0xa55c('0x17')]));}io['to'](util[_0xa55c('0x8')](_0xa55c('0x9'),_0x2121fd['name']))[_0xa55c('0x18')](util[_0xa55c('0x8')](_0xa55c('0x19'),_0x279caa?_0xa55c('0x1a'):_0xa55c('0x1b')),_0x31646d);}function writeLog(_0x5426e5,_0x4c0daf,_0x5f5158){return logger[_0xa55c('0x1c')](util[_0xa55c('0x8')](_0xa55c('0x1d'),_0x5426e5,_0x4c0daf['name'],_0x5f5158));}exports[_0xa55c('0x1e')]=function(_0x2fcb90,_0x54945a,_0x187a87,_0x133096){if(_0x54945a[_0xa55c('0x1f')]){writeLog(_0x2fcb90,_0x54945a,_0xa55c('0x20'));return![];}if(!_0x54945a[_0xa55c('0x21')]){writeLog(_0x2fcb90,_0x54945a,'OFFLINE');return![];}if(_0x54945a[_0x187a87+_0xa55c('0x22')]){writeLog(_0x2fcb90,_0x54945a,'PAUSE');return![];}if(_0x133096&&_0x54945a['hasOwnProperty'](_0x187a87+'Capacity')&&_0x54945a[_0xa55c('0x23')](_0x187a87+'CurrentCapacity')){if(_0x54945a[_0x187a87+_0xa55c('0x24')]>0x0&&_0x54945a[_0x187a87+_0xa55c('0x25')]>=_0x54945a[_0x187a87+_0xa55c('0x24')]){writeLog(_0x2fcb90,_0x54945a,_0x187a87[_0xa55c('0x26')]()+_0xa55c('0x27'));return![];}}return!![];};exports[_0xa55c('0x28')]=function(_0x1da633,_0x11e7f7,_0x192df2,_0x3cd152,_0x1273d7){return sendNotification(!![],_0x1da633,_0x11e7f7,_0x192df2,_0x3cd152,_0x1273d7);};exports['hideNotification']=function(_0x430d55,_0x28814f,_0x1c9f6b,_0x906caa,_0x5d940d){return sendNotification(![],_0x430d55,_0x28814f,_0x1c9f6b,_0x906caa,_0x5d940d);};exports[_0xa55c('0x29')]=writeLog;
\ No newline at end of file
+var _0xa456=['name','account','notificationSound','notificationShake','body','queue','msg','I\x20can\x27t\x20render\x20your\x20template','[%s][QUEUE]\x20%s','message','save','remove','info','[%s][QUEUE][AGENT:%s][STATUS:%s]','busy','BUSY','online','OFFLINE','Pause','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','showNotification','hideNotification','writeLog','lodash','util','../utils','mustache','../../../../../config/environment','../../../../../config/logger','routing','defaults','redis','localhost','socket.io-emitter','emit','format','user:%s'];(function(_0x56740a,_0x568894){var _0x257144=function(_0x2b8cc5){while(--_0x2b8cc5){_0x56740a['push'](_0x56740a['shift']());}};_0x257144(++_0x568894);}(_0xa456,0x142));var _0x6a45=function(_0x3740fe,_0x6c543c){_0x3740fe=_0x3740fe-0x0;var _0x55492b=_0xa456[_0x3740fe];return _0x55492b;};'use strict';var _=require(_0x6a45('0x0'));var util=require(_0x6a45('0x1'));var utils=require(_0x6a45('0x2'));var Mustache=require(_0x6a45('0x3'));var Redis=require('ioredis');var config=require(_0x6a45('0x4'));var logger=require(_0x6a45('0x5'))(_0x6a45('0x6'));config['redis']=_[_0x6a45('0x7')](config[_0x6a45('0x8')],{'host':_0x6a45('0x9'),'port':0x18eb});var io=require(_0x6a45('0xa'))(new Redis(config['redis']));function emit(_0x25cf8d,_0x26bfc0,_0x214514){io['to'](_0x25cf8d)[_0x6a45('0xb')](_0x26bfc0,_0x214514);}function sendNotification(_0x3deb09,_0x4858df,_0x3a5c20,_0x517040,_0x36378a,_0x3a9671){io['to'](util[_0x6a45('0xc')](_0x6a45('0xd'),_0x517040[_0x6a45('0xe')]))['emit']('user:save',_0x517040);var _0xe62823=_0x3a9671||{};var _0x465b59=_0x3a5c20['split']('.');var _0x5a39f6={'uniqueid':_0x4858df,'channel':_0x465b59[0x0],'id':_0x465b59[0x1],'title':_0x465b59[0x0]+'\x20interaction','interactionId':_0x465b59[0x2],'queue':_0x36378a?_0x36378a[_0x6a45('0xe')]:null,'sound':_0xe62823[_0x6a45('0xf')][_0x6a45('0x10')],'shake':_0xe62823[_0x6a45('0xf')][_0x6a45('0x11')]};try{if(!_0xe62823['body']){_0xe62823['body']={};}if(_0x36378a){_0xe62823[_0x6a45('0x12')][_0x6a45('0x13')]=_0x36378a;}else if(_0xe62823['body'][_0x6a45('0x13')]){delete _0xe62823[_0x6a45('0x12')][_0x6a45('0x13')];}_0x5a39f6[_0x6a45('0x14')]=utils['getMustacheRender'](_0xe62823['account']['notificationTemplate'],_0xe62823);}catch(_0x396d7d){_0x5a39f6[_0x6a45('0x14')]=_0x6a45('0x15');logger['error'](util[_0x6a45('0xc')](_0x6a45('0x16'),_0x4858df,_0x396d7d[_0x6a45('0x17')]));}io['to'](util['format']('user:%s',_0x517040['name']))[_0x6a45('0xb')](util[_0x6a45('0xc')]('notification:%s',_0x3deb09?_0x6a45('0x18'):_0x6a45('0x19')),_0x5a39f6);}function writeLog(_0x4f7000,_0x4f7110,_0xdf10c6){return logger[_0x6a45('0x1a')](util[_0x6a45('0xc')](_0x6a45('0x1b'),_0x4f7000,_0x4f7110['name'],_0xdf10c6));}exports['isAgentAvailable']=function(_0x3faae5,_0x59af4b,_0x11290c,_0x22373c){if(_0x59af4b[_0x6a45('0x1c')]){writeLog(_0x3faae5,_0x59af4b,_0x6a45('0x1d'));return![];}if(!_0x59af4b[_0x6a45('0x1e')]){writeLog(_0x3faae5,_0x59af4b,_0x6a45('0x1f'));return![];}if(_0x59af4b[_0x11290c+_0x6a45('0x20')]){writeLog(_0x3faae5,_0x59af4b,_0x6a45('0x21'));return![];}if(_0x22373c&&_0x59af4b[_0x6a45('0x22')](_0x11290c+_0x6a45('0x23'))&&_0x59af4b['hasOwnProperty'](_0x11290c+_0x6a45('0x24'))){if(_0x59af4b[_0x11290c+'Capacity']>0x0&&_0x59af4b[_0x11290c+_0x6a45('0x24')]>=_0x59af4b[_0x11290c+_0x6a45('0x23')]){writeLog(_0x3faae5,_0x59af4b,_0x11290c[_0x6a45('0x25')]()+_0x6a45('0x26'));return![];}}return!![];};exports[_0x6a45('0x27')]=function(_0x526062,_0x2b8cc8,_0x308003,_0x4770cc,_0x1ccff0){return sendNotification(!![],_0x526062,_0x2b8cc8,_0x308003,_0x4770cc,_0x1ccff0);};exports[_0x6a45('0x28')]=function(_0x227b6f,_0x3fac9b,_0x313c13,_0x54286d,_0x14adb5){return sendNotification(![],_0x227b6f,_0x3fac9b,_0x313c13,_0x54286d,_0x14adb5);};exports[_0x6a45('0x29')]=writeLog;
\ No newline at end of file
index a12e37f..de2d174 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb13b=['lodash','./utils','../../../../config/logger','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','length','error','message','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','[%s][SYSTEM]\x20commnad:\x20%s','exec','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','[%s][SYSTEM]\x20%s','isObject','validate','shelljs'];(function(_0x16c467,_0x53d6fa){var _0x22db4f=function(_0x498d3f){while(--_0x498d3f){_0x16c467['push'](_0x16c467['shift']());}};_0x22db4f(++_0x53d6fa);}(_0xb13b,0x1de));var _0xbb13=function(_0x1f9f37,_0x18776e){_0x1f9f37=_0x1f9f37-0x0;var _0x21c080=_0xb13b[_0x1f9f37];return _0x21c080;};'use strict';var schema=require(_0xbb13('0x0'));var sh=require(_0xbb13('0x1'));var _=require(_0xbb13('0x2'));var utils=require(_0xbb13('0x3'));var logger=require(_0xbb13('0x4'))('routing');var system=schema({'command':{'type':_0xbb13('0x5'),'required':!![],'message':_0xbb13('0x6')}});exports['consequence']=function(_0x9eab1b,_0x23a522){return function(_0x35377e){try{var _0x464c50={'command':_0x23a522[0x0]};var _0x296632=system[_0xbb13('0x0')](_0x464c50,{'typecast':!![]});if(_0x296632[_0xbb13('0x7')]){logger[_0xbb13('0x8')]('[%s][SYSTEM]\x20%s',_0x9eab1b,_['map'](_0x296632,_0xbb13('0x9'))[_0xbb13('0xa')](',\x20'));logger[_0xbb13('0xb')](_0xbb13('0xc'),_0x9eab1b);_0x35377e[_0xbb13('0xd')]();}else{var _0x330537=this;var _0x1d60a1=utils['getMustacheRender'](_0x23a522[0x0],this);logger[_0xbb13('0xb')](_0xbb13('0xe'),_0x9eab1b,_0x1d60a1);sh[_0xbb13('0xf')](_['trim'](_0x1d60a1),function(_0x307a6c,_0x555386){logger['info'](_0xbb13('0x10'),_0x9eab1b,_0x307a6c);if(_0x307a6c==0x0){var _0x3613c8=_0x555386[_0xbb13('0x11')](/(\r\n|\n|\r)/gm,'');if(_[_0xbb13('0x12')](_0x23a522[0x1])||_['isEmpty'](_0x23a522[0x1])){logger[_0xbb13('0xb')](_0xbb13('0x13'),_0x9eab1b);_0x330537[_0xbb13('0x14')][_0x23a522[0x1]]=_0x3613c8;}else{logger['info'](_0xbb13('0x15'),_0x9eab1b,_0x23a522[0x1],_0x3613c8);_0x330537['body'][_0x23a522[0x1]]=_0x3613c8;}}_0x35377e[_0xbb13('0xd')]();});}}catch(_0x4a35c4){logger[_0xbb13('0x8')](_0xbb13('0x16'),_0x9eab1b,_[_0xbb13('0x17')](_0x4a35c4)?JSON['stringify'](_0x4a35c4):_0x4a35c4);logger['info']('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x9eab1b);_0x35377e[_0xbb13('0xd')]();}};};
\ No newline at end of file
+var _0xca74=['[%s][SYSTEM]\x20%s','isObject','stringify','next','validate','lodash','./utils','../../../../config/logger','routing','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','message','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','[%s][SYSTEM]\x20commnad:\x20%s','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s'];(function(_0x457909,_0x29f2c6){var _0x1ba5b8=function(_0x181b4b){while(--_0x181b4b){_0x457909['push'](_0x457909['shift']());}};_0x1ba5b8(++_0x29f2c6);}(_0xca74,0x170));var _0x4ca7=function(_0x352b49,_0x16a4ee){_0x352b49=_0x352b49-0x0;var _0x2e314a=_0xca74[_0x352b49];return _0x2e314a;};'use strict';var schema=require(_0x4ca7('0x0'));var sh=require('shelljs');var _=require(_0x4ca7('0x1'));var utils=require(_0x4ca7('0x2'));var logger=require(_0x4ca7('0x3'))(_0x4ca7('0x4'));var system=schema({'command':{'type':_0x4ca7('0x5'),'required':!![],'message':_0x4ca7('0x6')}});exports[_0x4ca7('0x7')]=function(_0x444810,_0x41d820){return function(_0x3beddb){try{var _0x2e950a={'command':_0x41d820[0x0]};var _0xab134=system[_0x4ca7('0x0')](_0x2e950a,{'typecast':!![]});if(_0xab134[_0x4ca7('0x8')]){logger[_0x4ca7('0x9')]('[%s][SYSTEM]\x20%s',_0x444810,_['map'](_0xab134,_0x4ca7('0xa'))[_0x4ca7('0xb')](',\x20'));logger[_0x4ca7('0xc')](_0x4ca7('0xd'),_0x444810);_0x3beddb['next']();}else{var _0x1d5399=this;var _0x42e56a=utils['getMustacheRender'](_0x41d820[0x0],this);logger[_0x4ca7('0xc')](_0x4ca7('0xe'),_0x444810,_0x42e56a);sh['exec'](_[_0x4ca7('0xf')](_0x42e56a),function(_0x14842a,_0x558f79){logger[_0x4ca7('0xc')](_0x4ca7('0x10'),_0x444810,_0x14842a);if(_0x14842a==0x0){var _0x24a78f=_0x558f79['replace'](/(\r\n|\n|\r)/gm,'');if(_[_0x4ca7('0x11')](_0x41d820[0x1])||_[_0x4ca7('0x12')](_0x41d820[0x1])){logger[_0x4ca7('0xc')](_0x4ca7('0x13'),_0x444810);_0x1d5399[_0x4ca7('0x14')][_0x41d820[0x1]]=_0x24a78f;}else{logger['info'](_0x4ca7('0x15'),_0x444810,_0x41d820[0x1],_0x24a78f);_0x1d5399[_0x4ca7('0x14')][_0x41d820[0x1]]=_0x24a78f;}}_0x3beddb['next']();});}}catch(_0x3ccd26){logger['error'](_0x4ca7('0x16'),_0x444810,_[_0x4ca7('0x17')](_0x3ccd26)?JSON[_0x4ca7('0x18')](_0x3ccd26):_0x3ccd26);logger['info'](_0x4ca7('0xd'),_0x444810);_0x3beddb[_0x4ca7('0x19')]();}};};
\ No newline at end of file
index f32c55e..803543d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bc6=['../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../../../config/logger','routing','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','length','error','join','info','next','channel','Interaction','addTags','interaction','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','[%s][TAG]\x20%s','stringify','finally','isObject','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','validate'];(function(_0x545dd8,_0x404f75){var _0x44cd80=function(_0xec3ca3){while(--_0xec3ca3){_0x545dd8['push'](_0x545dd8['shift']());}};_0x44cd80(++_0x404f75);}(_0x8bc6,0x141));var _0x68bc=function(_0x589ac8,_0x10ac6e){_0x589ac8=_0x589ac8-0x0;var _0x1bb5dc=_0x8bc6[_0x589ac8];return _0x1bb5dc;};'use strict';var schema=require(_0x68bc('0x0'));var _=require('lodash');var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x68bc('0x1')),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0x68bc('0x2')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var logger=require(_0x68bc('0x3'))(_0x68bc('0x4'));var tag=schema({'tag':{'type':_0x68bc('0x5'),'required':!![],'message':_0x68bc('0x6')}});exports['consequence']=function(_0x280ca9,_0x43cd5f,_0x1c9db1,_0x28e410){return function(_0x3d1846){try{var _0x123447={'tag':_0x43cd5f[0x0]};var _0x314951=tag['validate'](_0x123447,{'typecast':!![]});if(_0x314951[_0x68bc('0x7')]){logger[_0x68bc('0x8')]('[%s][TAG]\x20%s',_0x280ca9,_['map'](_0x314951,'message')[_0x68bc('0x9')](',\x20'));logger[_0x68bc('0xa')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x280ca9);_0x3d1846[_0x68bc('0xb')]();}else{var _0x41d9f1={'ids':[_0x43cd5f[0x0]]};if(rpc[_0x28e410[_0x68bc('0xc')]+_0x68bc('0xd')]){rpc[_0x28e410[_0x68bc('0xc')]+_0x68bc('0xd')][_0x68bc('0xe')](_0x28e410[_0x68bc('0xf')]['id'],_0x41d9f1)[_0x68bc('0x10')](function(_0x34b9fa){logger[_0x68bc('0xa')](_0x68bc('0x11'),_0x280ca9,_0x43cd5f[0x1],_0x28e410[_0x68bc('0xc')],_0x28e410[_0x68bc('0xf')]['id']);})['catch'](function(_0x1fb173){logger['error'](_0x68bc('0x12'),_0x280ca9,JSON[_0x68bc('0x13')](_0x1fb173));logger[_0x68bc('0xa')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x280ca9);})[_0x68bc('0x14')](function(){_0x3d1846['next']();});}}}catch(_0x5dd9e9){logger[_0x68bc('0x8')](_0x68bc('0x12'),_0x280ca9,_[_0x68bc('0x15')](_0x5dd9e9)?JSON['stringify'](_0x5dd9e9):_0x5dd9e9);logger[_0x68bc('0xa')](_0x68bc('0x16'),_0x280ca9);_0x3d1846[_0x68bc('0xb')]();}};};
\ No newline at end of file
+var _0x1996=['routing','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','length','error','[%s][TAG]\x20%s','map','message','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','channel','Interaction','addTags','then','interaction','stringify','finally','isObject','info','validate','../../rpc/chatInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/whatsappInteraction','../../../../config/logger'];(function(_0x3bb21a,_0x353b56){var _0x5f3983=function(_0x334b13){while(--_0x334b13){_0x3bb21a['push'](_0x3bb21a['shift']());}};_0x5f3983(++_0x353b56);}(_0x1996,0xc2));var _0x6199=function(_0x526146,_0x9656d4){_0x526146=_0x526146-0x0;var _0x4767df=_0x1996[_0x526146];return _0x4767df;};'use strict';var schema=require(_0x6199('0x0'));var _=require('lodash');var rpc={'chatInteraction':require(_0x6199('0x1')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0x6199('0x2')),'mailInteraction':require(_0x6199('0x3')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0x6199('0x4'))};var logger=require(_0x6199('0x5'))(_0x6199('0x6'));var tag=schema({'tag':{'type':_0x6199('0x7'),'required':!![],'message':_0x6199('0x8')}});exports['consequence']=function(_0x533eac,_0x2a1636,_0x474432,_0x3b5e6d){return function(_0x467897){try{var _0xb81729={'tag':_0x2a1636[0x0]};var _0x1890de=tag[_0x6199('0x0')](_0xb81729,{'typecast':!![]});if(_0x1890de[_0x6199('0x9')]){logger[_0x6199('0xa')](_0x6199('0xb'),_0x533eac,_[_0x6199('0xc')](_0x1890de,_0x6199('0xd'))['join'](',\x20'));logger['info'](_0x6199('0xe'),_0x533eac);_0x467897[_0x6199('0xf')]();}else{var _0x353108={'ids':[_0x2a1636[0x0]]};if(rpc[_0x3b5e6d[_0x6199('0x10')]+_0x6199('0x11')]){rpc[_0x3b5e6d[_0x6199('0x10')]+_0x6199('0x11')][_0x6199('0x12')](_0x3b5e6d['interaction']['id'],_0x353108)[_0x6199('0x13')](function(_0x126217){logger['info']('[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s',_0x533eac,_0x2a1636[0x1],_0x3b5e6d[_0x6199('0x10')],_0x3b5e6d[_0x6199('0x14')]['id']);})['catch'](function(_0x1b2a61){logger[_0x6199('0xa')](_0x6199('0xb'),_0x533eac,JSON[_0x6199('0x15')](_0x1b2a61));logger['info'](_0x6199('0xe'),_0x533eac);})[_0x6199('0x16')](function(){_0x467897[_0x6199('0xf')]();});}}}catch(_0x44089e){logger[_0x6199('0xa')](_0x6199('0xb'),_0x533eac,_[_0x6199('0x17')](_0x44089e)?JSON[_0x6199('0x15')](_0x44089e):_0x44089e);logger[_0x6199('0x18')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x533eac);_0x467897[_0x6199('0xf')]();}};};
\ No newline at end of file
index e74e7a0..260142f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa303=['application/json-rpc','then','parse','logged','Unable\x20to\x20login\x20with\x20TVox\x20application','channelId=','&sessionId=','&data=','info','stop','catch','[%s][TVOX]\x20%s','isObject','[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next','next','request-promise','../../../../config/logger','routing','lodash','consequence','replace','includes','push','urlOnAnswer','?params=','urlOnRing','jsonrpc','2.0','login','params','stringify','POST'];(function(_0x2797c6,_0x37421b){var _0x54809f=function(_0x2d100c){while(--_0x2d100c){_0x2797c6['push'](_0x2797c6['shift']());}};_0x54809f(++_0x37421b);}(_0xa303,0x1cf));var _0x3a30=function(_0x44df3e,_0x27bc38){_0x44df3e=_0x44df3e-0x0;var _0x46f06d=_0xa303[_0x44df3e];return _0x46f06d;};'use strict';var rp=require(_0x3a30('0x0'));var logger=require(_0x3a30('0x1'))(_0x3a30('0x2'));var _=require(_0x3a30('0x3'));var arr=[];exports[_0x3a30('0x4')]=function(_0xf31495,_0x56cf8d){return function(_0x11b14e){var _0x56aa02=_0x56cf8d[0xa];var _0x4ca909=_0x56cf8d[0xb];var _0x9c71b=_0x56cf8d[0xc];var _0x158e15=_0x56cf8d[0xd];var _0x1cea6a=_0x56cf8d[0xe];var _0xb4288c=_0x56cf8d[0xf]['replace'](/\n/g,'\x20-\x20');var _0x5717c1=_0x56cf8d[0x10][_0x3a30('0x5')](/\n/g,'\x20');if(!arr[_0x3a30('0x6')](_0x4ca909)){arr[_0x3a30('0x7')](_0x4ca909);var _0x1f46b3=_0x56cf8d[0x3];var _0x500e53=_0x56cf8d[0x4];var _0x5b4324=_0x56cf8d[0x1];var _0x4ea67f=_0x56cf8d[0x0];var _0x16b1b6={};_0x16b1b6[_0x3a30('0x8')]=_0x56cf8d[0x8]+_0x3a30('0x9')+_0x9c71b+'|'+_0x56aa02+'|'+_0x158e15+'|'+_0x4ca909+'|'+_0x1cea6a;_0x16b1b6[_0x3a30('0xa')]=_0x56cf8d[0x7]+_0x3a30('0x9')+_0x9c71b+'|'+_0x56aa02+'|'+_0x158e15+'|'+_0x4ca909+'|'+_0x1cea6a+'|'+_0xb4288c+'|'+_0x5717c1;_0x16b1b6['title']=_0x56cf8d[0x9];var _0x22e79d={};_0x22e79d[_0x3a30('0xb')]=_0x3a30('0xc');_0x22e79d['method']=_0x3a30('0xd');var _0xc45fbf=[];_0xc45fbf[_0x3a30('0x7')](_0x56cf8d[0x2]);_0xc45fbf[_0x3a30('0x7')](_0x56cf8d[0x5]);_0xc45fbf['push'](_0x56cf8d[0x6]);_0x22e79d[_0x3a30('0xe')]=_0xc45fbf;_0x22e79d['id']=0x1;var _0x42ee58=JSON[_0x3a30('0xf')](_0x22e79d);var _0x32d468={'encoding':'utf8','method':_0x3a30('0x10'),'timeout':0x2710,'url':_0x1f46b3,'headers':{'Content-Type':_0x3a30('0x11')},'body':_0x42ee58};return rp(_0x32d468)[_0x3a30('0x12')](function(_0x405033){const _0x338e60=JSON[_0x3a30('0x13')](_0x405033);if(!_0x338e60['result'][_0x3a30('0x14')]){throw new Error(_0x3a30('0x15'));}var _0x4b9b64=_0x4ca909;var _0x35fa81=_0x3a30('0x16')+_0x5b4324+'&serviceId='+_0x4ea67f+_0x3a30('0x17')+_0x4b9b64+_0x3a30('0x18')+JSON[_0x3a30('0xf')](_0x16b1b6);var _0x3f8a6d=_0x500e53+'?'+_0x35fa81;return rp(_0x3f8a6d);})[_0x3a30('0x12')](function(_0x5efcc5){logger[_0x3a30('0x19')]('[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s',_0xf31495,_0x5efcc5);_0x11b14e[_0x3a30('0x1a')]();})[_0x3a30('0x1b')](function(_0x40d9dc){logger['error'](_0x3a30('0x1c'),_0xf31495,_[_0x3a30('0x1d')](_0x40d9dc)?JSON[_0x3a30('0xf')](_0x40d9dc):_0x40d9dc);_0x11b14e[_0x3a30('0x1a')]();});}else{logger[_0x3a30('0x19')](_0x3a30('0x1e'),_0xf31495);_0x11b14e[_0x3a30('0x1f')]();}};};
\ No newline at end of file
+var _0x6efb=['channelId=','&serviceId=','&sessionId=','&data=','info','stop','error','isObject','[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next','next','request-promise','../../../../config/logger','routing','consequence','replace','includes','push','urlOnAnswer','?params=','2.0','login','params','stringify','utf8','POST','application/json-rpc','then','parse','result','logged','Unable\x20to\x20login\x20with\x20TVox\x20application'];(function(_0x55f24a,_0x484624){var _0x31a47f=function(_0x297fd9){while(--_0x297fd9){_0x55f24a['push'](_0x55f24a['shift']());}};_0x31a47f(++_0x484624);}(_0x6efb,0x140));var _0xb6ef=function(_0x47382b,_0x33da2d){_0x47382b=_0x47382b-0x0;var _0x497523=_0x6efb[_0x47382b];return _0x497523;};'use strict';var rp=require(_0xb6ef('0x0'));var logger=require(_0xb6ef('0x1'))(_0xb6ef('0x2'));var _=require('lodash');var arr=[];exports[_0xb6ef('0x3')]=function(_0x1fab36,_0x241748){return function(_0xffae2){var _0x7677a5=_0x241748[0xa];var _0x49010e=_0x241748[0xb];var _0x28f995=_0x241748[0xc];var _0xa89aa2=_0x241748[0xd];var _0x5c6a6b=_0x241748[0xe];var _0x29c7ed=_0x241748[0xf][_0xb6ef('0x4')](/\n/g,'\x20-\x20');var _0x52eddb=_0x241748[0x10]['replace'](/\n/g,'\x20');if(!arr[_0xb6ef('0x5')](_0x49010e)){arr[_0xb6ef('0x6')](_0x49010e);var _0x5bcb31=_0x241748[0x3];var _0x5a04f7=_0x241748[0x4];var _0x189a5b=_0x241748[0x1];var _0x2d281b=_0x241748[0x0];var _0x5be899={};_0x5be899[_0xb6ef('0x7')]=_0x241748[0x8]+_0xb6ef('0x8')+_0x28f995+'|'+_0x7677a5+'|'+_0xa89aa2+'|'+_0x49010e+'|'+_0x5c6a6b;_0x5be899['urlOnRing']=_0x241748[0x7]+_0xb6ef('0x8')+_0x28f995+'|'+_0x7677a5+'|'+_0xa89aa2+'|'+_0x49010e+'|'+_0x5c6a6b+'|'+_0x29c7ed+'|'+_0x52eddb;_0x5be899['title']=_0x241748[0x9];var _0x560a6d={};_0x560a6d['jsonrpc']=_0xb6ef('0x9');_0x560a6d['method']=_0xb6ef('0xa');var _0x13aa79=[];_0x13aa79[_0xb6ef('0x6')](_0x241748[0x2]);_0x13aa79[_0xb6ef('0x6')](_0x241748[0x5]);_0x13aa79[_0xb6ef('0x6')](_0x241748[0x6]);_0x560a6d[_0xb6ef('0xb')]=_0x13aa79;_0x560a6d['id']=0x1;var _0x4f2781=JSON[_0xb6ef('0xc')](_0x560a6d);var _0xffb340={'encoding':_0xb6ef('0xd'),'method':_0xb6ef('0xe'),'timeout':0x2710,'url':_0x5bcb31,'headers':{'Content-Type':_0xb6ef('0xf')},'body':_0x4f2781};return rp(_0xffb340)[_0xb6ef('0x10')](function(_0x20107d){const _0x268b05=JSON[_0xb6ef('0x11')](_0x20107d);if(!_0x268b05[_0xb6ef('0x12')][_0xb6ef('0x13')]){throw new Error(_0xb6ef('0x14'));}var _0x4304ae=_0x49010e;var _0x227410=_0xb6ef('0x15')+_0x189a5b+_0xb6ef('0x16')+_0x2d281b+_0xb6ef('0x17')+_0x4304ae+_0xb6ef('0x18')+JSON[_0xb6ef('0xc')](_0x5be899);var _0x9dba1c=_0x5a04f7+'?'+_0x227410;return rp(_0x9dba1c);})[_0xb6ef('0x10')](function(_0x3ef79d){logger[_0xb6ef('0x19')]('[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s',_0x1fab36,_0x3ef79d);_0xffae2[_0xb6ef('0x1a')]();})['catch'](function(_0x2d18e7){logger[_0xb6ef('0x1b')]('[%s][TVOX]\x20%s',_0x1fab36,_[_0xb6ef('0x1c')](_0x2d18e7)?JSON[_0xb6ef('0xc')](_0x2d18e7):_0x2d18e7);_0xffae2[_0xb6ef('0x1a')]();});}else{logger[_0xb6ef('0x19')](_0xb6ef('0x1d'),_0x1fab36);_0xffae2[_0xb6ef('0x1e')]();}};};
\ No newline at end of file
index a4604ee..0acd735 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['merge','body','account','list','exports','render'];(function(_0x478012,_0x5c4a9f){var _0x2a5bba=function(_0x53ec8b){while(--_0x53ec8b){_0x478012['push'](_0x478012['shift']());}};_0x2a5bba(++_0x5c4a9f);}(_0x9c44,0x178));var _0x49c4=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x9c44[_0x1035c1];return _0x308d67;};'use strict';var Mustache=require('mustache');var _=require('lodash');module[_0x49c4('0x0')]={'getMustacheRender':function(_0x18bf2d,_0x26844b){return Mustache[_0x49c4('0x1')](_0x18bf2d,_[_0x49c4('0x2')](_0x26844b[_0x49c4('0x3')],{'contact':_0x26844b['contact'],'message':_0x26844b['message'],'account':_0x26844b[_0x49c4('0x4')],'interaction':_0x26844b['interaction'],'list':_0x26844b[_0x49c4('0x5')]}))||'';}};
\ No newline at end of file
+var _0xe706=['exports','render','merge','body','contact','message','account','interaction','list','mustache','lodash'];(function(_0x254744,_0x1d0245){var _0x2a0a69=function(_0x1b8ff5){while(--_0x1b8ff5){_0x254744['push'](_0x254744['shift']());}};_0x2a0a69(++_0x1d0245);}(_0xe706,0xa3));var _0x6e70=function(_0x45f6cb,_0x531af6){_0x45f6cb=_0x45f6cb-0x0;var _0x5b7f93=_0xe706[_0x45f6cb];return _0x5b7f93;};'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 4a33327..619c1a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2821=['stack','routing\x20is\x20empty','agent','agents','busy','busyQueue','end','QueueReport','catch','message\x20is\x20empty','capacity','hasOwnProperty','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','available','loggedIn','paused','waiting','mailQueues','openchannelQueues','smsQueues','name','faxQueues','whatsappQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','server','http','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','path','jayson/promise','bluebird','uuid','./applications/utils','../../../config/environment','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','%s.%s.%s','isNil','IntervalId','Intervals','interval','listen','message','applications','existsSync','join','app','.js','toLowerCase','split','channel','mail','push','slice','length','appdata','amazonlex','TagId','getMustacheRender','account','notificationTemplate','interaction','ChatWebsiteId','ContactId','body','format','%s:%s:%s','condition','intervals','./applications/','priority','info','Push\x20new\x20rule','on\x20interval','error','Please\x20create\x20a\x20new\x20file\x20under','rules','execute','stringify','matchPath','emit'];(function(_0x35650b,_0x5844fc){var _0x22cea0=function(_0x526a38){while(--_0x526a38){_0x35650b['push'](_0x35650b['shift']());}};_0x22cea0(++_0x5844fc);}(_0x2821,0x87));var _0x1282=function(_0x39c917,_0xcf9df1){_0x39c917=_0x39c917-0x0;var _0x3cf5b5=_0x2821[_0x39c917];return _0x3cf5b5;};'use strict';var _=require(_0x1282('0x0'));var util=require(_0x1282('0x1'));var path=require(_0x1282('0x2'));var fs=require('fs');var jayson=require(_0x1282('0x3'));var BPromise=require(_0x1282('0x4'));var uuid=require(_0x1282('0x5'));var utils=require(_0x1282('0x6'));var config=require(_0x1282('0x7'));var logger=require(_0x1282('0x8'))(_0x1282('0x9'));var rpc={'openchannelQueueReport':require(_0x1282('0xa')),'mailQueueReport':require('../rpc/mailQueueReport'),'chatQueueReport':require(_0x1282('0xb')),'smsQueueReport':require(_0x1282('0xc')),'faxQueueReport':require(_0x1282('0xd')),'whatsappQueueReport':require(_0x1282('0xe'))};var RuleEngine=require(_0x1282('0xf'));function getId(_0x1a8666,_0x18d69a,_0x1436ba){return util['format'](_0x1282('0x10'),_0x1a8666,_0x18d69a||0x0,_0x1436ba||0x0);}function getIntervals(_0x30df94,_0x3bda99){var _0x2ad86c=[];if(!_[_0x1282('0x11')](_0x3bda99['IntervalId'])&&!_[_0x1282('0x11')](_0x30df94[_0x3bda99[_0x1282('0x12')]])&&!_['isNil'](_0x30df94[_0x3bda99[_0x1282('0x12')]][_0x1282('0x13')])){_0x2ad86c=_['map'](_0x30df94[_0x3bda99[_0x1282('0x12')]]['Intervals'],'interval');}else if(!_[_0x1282('0x11')](_0x3bda99[_0x1282('0x14')])){_0x2ad86c=[_0x3bda99[_0x1282('0x14')]];}return _0x2ad86c;}exports[_0x1282('0x15')]=function(_0x4dfd14){_0x4dfd14['rules']={};return new BPromise(function(_0x493837,_0xe4de3b){var _0x3ee18f={'Start':function(_0x4272fa){var _0x3f7bd8=this;return new Promise(function(_0x2320c5,_0x1f6a7a){if(_0x4272fa){try{var _0xf30656=[];var _0x116ef1=getId(_0x4272fa['channel'],_0x4272fa[_0x1282('0x16')]?_0x4272fa[_0x1282('0x16')]['id']:0x0,_0x4272fa['interaction']?_0x4272fa['interaction']['id']:0x0);if(_0x4272fa[_0x1282('0x17')]&&_['isArray'](_0x4272fa[_0x1282('0x17')])&&_0x4272fa[_0x1282('0x17')]['length']){for(var _0x5ea75d=0x0;_0x5ea75d<_0x4272fa['applications']['length'];_0x5ea75d+=0x1){var _0x424574=_0x4272fa[_0x1282('0x17')][_0x5ea75d];if(fs[_0x1282('0x18')](path[_0x1282('0x19')](__dirname,_0x1282('0x17'),_0x424574[_0x1282('0x1a')]+_0x1282('0x1b')))){var _0x42e38e=[];switch(_0x424574[_0x1282('0x1a')][_0x1282('0x1c')]()){case'autoreply':var _0x1bab23=_0x424574['appdata'][_0x1282('0x1d')](',');if(_0x4272fa[_0x1282('0x1e')]===_0x1282('0x1f')){_0x42e38e[_0x1282('0x20')](_0x1bab23[0x0]);_0x42e38e[_0x1282('0x20')](_0x1bab23[0x1]);_0x42e38e['push'](_0x1bab23[_0x1282('0x21')](0x2,_0x1bab23[_0x1282('0x22')])[_0x1282('0x19')](','));}else{_0x42e38e[_0x1282('0x20')](_0x1bab23[0x0]);_0x42e38e[_0x1282('0x20')](_0x1bab23[_0x1282('0x21')](0x1,_0x1bab23[_0x1282('0x22')])[_0x1282('0x19')](','));}break;case'dialogflow':var _0x5956eb=_0x424574[_0x1282('0x23')][_0x1282('0x1d')](',');_0x42e38e[_0x1282('0x20')](_0x5956eb[0x0]);_0x42e38e['push'](_0x5956eb[0x1]);_0x42e38e[_0x1282('0x20')](_0x5956eb['slice'](0x2,_0x5956eb[_0x1282('0x22')])['join'](','));break;case'dialogflowv2':var _0x4b5d6c=_0x424574['appdata']['split'](',');_0x42e38e['push'](_0x4b5d6c[0x0]);_0x42e38e[_0x1282('0x20')](_0x4b5d6c[0x1]);_0x42e38e[_0x1282('0x20')](_0x4b5d6c[0x2]);_0x42e38e[_0x1282('0x20')](_0x4b5d6c[0x3]);_0x42e38e[_0x1282('0x20')](_0x4b5d6c[_0x1282('0x21')](0x4,_0x4b5d6c[_0x1282('0x22')])[_0x1282('0x19')](','));break;case _0x1282('0x24'):var _0xfbeb1a=_0x424574['appdata'][_0x1282('0x1d')](',');_0x42e38e[_0x1282('0x20')](_0xfbeb1a[0x0]);_0x42e38e[_0x1282('0x20')](_0xfbeb1a[0x1]);_0x42e38e[_0x1282('0x20')](_0xfbeb1a[0x2]);_0x42e38e[_0x1282('0x20')](_0xfbeb1a[0x3]);_0x42e38e['push'](_0xfbeb1a[_0x1282('0x21')](0x4,_0xfbeb1a[_0x1282('0x22')])['join'](','));break;case'message':_0x42e38e['push'](_0x424574[_0x1282('0x23')]);break;case'tag':_0x42e38e[_0x1282('0x20')](_0x424574[_0x1282('0x25')]);_0x42e38e['push'](_0x424574[_0x1282('0x23')]);break;case'tvox':var _0x4d5283=utils[_0x1282('0x26')](_0x4272fa[_0x1282('0x27')][_0x1282('0x28')],_0x4272fa);var _0x3849c2=_0x424574['appdata']['split'](',');_0x42e38e[_0x1282('0x20')](_0x3849c2[0x0]);_0x42e38e['push'](_0x3849c2[0x1]);_0x42e38e[_0x1282('0x20')](_0x3849c2[0x2]);_0x42e38e[_0x1282('0x20')](_0x3849c2[0x3]);_0x42e38e[_0x1282('0x20')](_0x3849c2[0x4]);_0x42e38e[_0x1282('0x20')](_0x3849c2[0x5]);_0x42e38e['push'](_0x3849c2[0x6]);_0x42e38e[_0x1282('0x20')](_0x3849c2[0x7]);_0x42e38e['push'](_0x3849c2[0x8]);_0x42e38e[_0x1282('0x20')](_0x3849c2[0x9]);_0x42e38e[_0x1282('0x20')](_0x3849c2[0xa]);_0x42e38e[_0x1282('0x20')](_0x4272fa[_0x1282('0x29')]['id']);_0x42e38e['push'](_0x4272fa['message']['id']);_0x42e38e[_0x1282('0x20')](_0x424574[_0x1282('0x2a')]);_0x42e38e[_0x1282('0x20')](_0x4272fa['interaction'][_0x1282('0x2b')]);_0x42e38e[_0x1282('0x20')](_0x4272fa[_0x1282('0x2c')][_0x1282('0x2c')]);_0x42e38e[_0x1282('0x20')](_0x4d5283);break;default:_0x42e38e=_[_0x1282('0x11')](_0x424574[_0x1282('0x23')])?[]:_0x424574[_0x1282('0x23')][_0x1282('0x1d')](',');}var _0x2f2264={'id':util[_0x1282('0x2d')](_0x1282('0x2e'),_0x116ef1,_0x424574['id'],_0x424574[_0x1282('0x1a')]),'condition':require('./interval')[_0x1282('0x2f')](_0x116ef1,getIntervals(_0x4dfd14[_0x1282('0x30')],_0x424574),_0x4dfd14),'consequence':require(_0x1282('0x31')+_0x424574['app'])['consequence'](_0x116ef1,_0x42e38e,_0x4dfd14,_0x4272fa),'p':_0x424574[_0x1282('0x32')]||0x0};logger[_0x1282('0x33')](_0x1282('0x34'),_0x2f2264['id'],_0x1282('0x35'),getIntervals(_0x4dfd14[_0x1282('0x30')],_0x424574)['join']('\x20|\x20'));_0xf30656[_0x1282('0x20')](_0x2f2264);}else{logger[_0x1282('0x36')](_0x1282('0x37'),path['join'](__dirname,_0x1282('0x17'),_0x424574[_0x1282('0x1a')]+_0x1282('0x1b')));}}_0x4dfd14[_0x1282('0x38')][_0x116ef1]=new RuleEngine(_0xf30656);_0x4dfd14[_0x1282('0x38')][_0x116ef1][_0x1282('0x39')](_0x4272fa,function(_0x5ab65c){logger['info']('Applications\x20executed',JSON[_0x1282('0x3a')](_0x5ab65c[_0x1282('0x3b')]));if(_0x4dfd14[_0x1282('0x38')][_0x116ef1]){_0x4dfd14[_0x1282('0x38')][_0x116ef1][_0x1282('0x3c')]('complete');}});return _0x2320c5({'code':0xc8,'message':_0x4272fa});}else{logger['info']('No\x20applications\x20to\x20execute');return _0x2320c5({'code':0xc8,'message':_0x4272fa});}}catch(_0x4e350f){logger[_0x1282('0x36')](_0x4e350f[_0x1282('0x3d')]);return _0x1f6a7a(_0x3f7bd8[_0x1282('0x36')](0x1f4,_0x4e350f));}}return _0x1f6a7a(_0x1282('0x3e'));});},'AcceptMessage':function(_0x4e68b4){var _0x4a0fe7=this;return new Promise(function(_0x59cfd6,_0x2148f1){if(_0x4e68b4['agent']&&_0x4e68b4['agent']['id']){if(_0x4dfd14['agents'][_0x4e68b4[_0x1282('0x3f')]['id']]){_0x4dfd14[_0x1282('0x40')][_0x4e68b4['agent']['id']][_0x1282('0x41')]=![];_0x4dfd14[_0x1282('0x40')][_0x4e68b4[_0x1282('0x3f')]['id']][_0x1282('0x42')]=undefined;}}if(_0x4e68b4['message']&&_0x4e68b4['message']['id']){try{var _0x16ada9=getId(_0x4e68b4[_0x1282('0x1e')],_0x4e68b4[_0x1282('0x16')]?_0x4e68b4[_0x1282('0x16')]['id']:0x0,_0x4e68b4[_0x1282('0x29')]?_0x4e68b4[_0x1282('0x29')]['id']:0x0);if(_0x4dfd14[_0x1282('0x38')][_0x16ada9]){_0x4dfd14[_0x1282('0x38')][_0x16ada9][_0x1282('0x3c')](_0x1282('0x43'));if(rpc[_0x4e68b4[_0x1282('0x1e')]+_0x1282('0x44')]){rpc[_0x4e68b4[_0x1282('0x1e')]+_0x1282('0x44')]['update'](_0x16ada9,{'UserId':_0x4e68b4[_0x1282('0x16')]['UserId']})[_0x1282('0x45')](function(_0x412eaf){logger['error']('error\x20update\x20queue\x20report');});}}return _0x59cfd6({'code':0xc8,'message':_0x4e68b4});}catch(_0x576cfb){logger[_0x1282('0x36')](_0x576cfb[_0x1282('0x3d')]);return _0x2148f1(_0x4a0fe7[_0x1282('0x36')](0x1f4,_0x576cfb));}}logger[_0x1282('0x36')](_0x1282('0x46'));return _0x2148f1(_0x4a0fe7[_0x1282('0x36')](0x1f4,_0x1282('0x46')));});},'RejectMessage':function(_0x5f00bb){var _0x276397=this;return new Promise(function(_0x401f16,_0x321edb){if(_0x5f00bb[_0x1282('0x3f')]&&_0x5f00bb['agent']['id']){try{if(_0x4dfd14[_0x1282('0x40')][_0x5f00bb[_0x1282('0x3f')]['id']]){_0x4dfd14['agents'][_0x5f00bb[_0x1282('0x3f')]['id']][_0x1282('0x41')]=![];_0x4dfd14[_0x1282('0x40')][_0x5f00bb['agent']['id']][_0x1282('0x42')]=undefined;}return _0x401f16({'code':0xc8,'message':_0x5f00bb});}catch(_0x4aba93){logger[_0x1282('0x36')](_0x4aba93['stack']);return _0x321edb(_0x276397[_0x1282('0x36')](0x1f4,_0x4aba93));}}logger[_0x1282('0x36')](_0x1282('0x46'));return _0x321edb(_0x276397[_0x1282('0x36')](0x1f4,_0x1282('0x46')));});},'AbandonInteraction':function(_0x3b24c7){var _0x286bf7=this;return new Promise(function(_0x2f9742,_0x2009ab){if(_0x3b24c7[_0x1282('0x1e')]&&_0x3b24c7['interaction']&&_0x3b24c7[_0x1282('0x29')]['id']){try{var _0x2ac735=getId(_0x3b24c7[_0x1282('0x1e')],_0x3b24c7[_0x1282('0x16')]?_0x3b24c7[_0x1282('0x16')]['id']:0x0,_0x3b24c7[_0x1282('0x29')]?_0x3b24c7['interaction']['id']:0x0);if(_0x4dfd14[_0x1282('0x38')][_0x2ac735]){_0x4dfd14['rules'][_0x2ac735][_0x1282('0x3c')](_0x1282('0x43'));}return _0x2f9742({'code':0xc8,'message':_0x3b24c7});}catch(_0x423f3b){logger[_0x1282('0x36')](_0x423f3b[_0x1282('0x3d')]);return _0x2009ab(_0x286bf7[_0x1282('0x36')](0x1f4,_0x423f3b));}}logger['error'](_0x1282('0x46'));return _0x2009ab(_0x286bf7[_0x1282('0x36')](0x1f4,'message\x20is\x20empty'));});},'AgentCapacity':function(_0x34788e){var _0x147ac0=this;return new Promise(function(_0xe87f96,_0x5428cc){if(_0x4dfd14[_0x1282('0x40')]['hasOwnProperty'](_0x34788e['id'])){for(var _0x23b5f4 in _0x34788e[_0x1282('0x47')]){if(_0x34788e['capacity']['hasOwnProperty'](_0x23b5f4)){if(_0x4dfd14[_0x1282('0x40')][_0x34788e['id']][_0x1282('0x48')](_0x23b5f4+_0x1282('0x49'))){_0x4dfd14[_0x1282('0x40')][_0x34788e['id']][_0x23b5f4+_0x1282('0x49')]=parseInt(_0x34788e['capacity'][_0x23b5f4],0xa);}}}_0x4dfd14[_0x1282('0x40')][_0x34788e['id']][_0x1282('0x4a')]();return _0xe87f96({'code':0xc8,'message':_0x4dfd14['agents'][_0x34788e['id']]});}else{return _0x5428cc(_0x147ac0[_0x1282('0x36')](0x1f4,_0x1282('0x4b')));}});},'Agents':function(_0x31ac8e){return new Promise(function(_0x4b5ecd,_0x3576be){var _0x1e2692=_[_0x1282('0x4c')](_0x4dfd14['agents']);_0x4b5ecd({'count':_0x1e2692[_0x1282('0x22')],'rows':_0x1e2692});});},'ChatQueues':function(_0x4d2a6f){return new Promise(function(_0x359449,_0x1a7545){var _0x19d353=[];for(var _0x4bcff1 in _0x4dfd14[_0x1282('0x4d')]){if(_0x4dfd14[_0x1282('0x4d')][_0x1282('0x48')](_0x4bcff1)){var _0x9e9ce9=_0x4dfd14['chatQueues'][_0x4bcff1];var _0x1ed80e={'id':_0x9e9ce9['id'],'available':_0x9e9ce9[_0x1282('0x4e')],'loggedIn':_0x9e9ce9[_0x1282('0x4f')],'name':_0x9e9ce9['name'],'paused':_0x9e9ce9[_0x1282('0x50')],'waiting':_0x9e9ce9[_0x1282('0x51')]};_0x19d353[_0x1282('0x20')](_0x1ed80e);}}_0x359449({'count':_0x19d353[_0x1282('0x22')],'rows':_0x19d353});});},'MailQueues':function(_0x5f4fa2){return new Promise(function(_0x2af84a,_0xb07ea){var _0x5696f3=[];for(var _0x2fa341 in _0x4dfd14[_0x1282('0x52')]){if(_0x4dfd14['mailQueues'][_0x1282('0x48')](_0x2fa341)){var _0xe972c1=_0x4dfd14[_0x1282('0x52')][_0x2fa341];var _0x223ac3={'id':_0xe972c1['id'],'available':_0xe972c1[_0x1282('0x4e')],'loggedIn':_0xe972c1[_0x1282('0x4f')],'name':_0xe972c1['name'],'paused':_0xe972c1[_0x1282('0x50')],'waiting':_0xe972c1['waiting']};_0x5696f3[_0x1282('0x20')](_0x223ac3);}}_0x2af84a({'count':_0x5696f3[_0x1282('0x22')],'rows':_0x5696f3});});},'OpenchannelQueues':function(_0x38134f){return new Promise(function(_0x2e7f65,_0x470d95){var _0x3aa0d4=[];for(var _0x2be9bd in _0x4dfd14[_0x1282('0x53')]){if(_0x4dfd14[_0x1282('0x53')][_0x1282('0x48')](_0x2be9bd)){var _0x214bdf=_0x4dfd14[_0x1282('0x53')][_0x2be9bd];var _0x3e090b={'id':_0x214bdf['id'],'available':_0x214bdf[_0x1282('0x4e')],'loggedIn':_0x214bdf[_0x1282('0x4f')],'name':_0x214bdf['name'],'paused':_0x214bdf[_0x1282('0x50')],'waiting':_0x214bdf['waiting']};_0x3aa0d4[_0x1282('0x20')](_0x3e090b);}}_0x2e7f65({'count':_0x3aa0d4[_0x1282('0x22')],'rows':_0x3aa0d4});});},'SmsQueues':function(_0x4a4dfb){return new Promise(function(_0x425638,_0x250b52){var _0x44de0e=[];for(var _0x30cbbd in _0x4dfd14[_0x1282('0x54')]){if(_0x4dfd14['smsQueues'][_0x1282('0x48')](_0x30cbbd)){var _0x1347fe=_0x4dfd14['smsQueues'][_0x30cbbd];var _0x3a1d43={'id':_0x1347fe['id'],'available':_0x1347fe[_0x1282('0x4e')],'loggedIn':_0x1347fe['loggedIn'],'name':_0x1347fe[_0x1282('0x55')],'paused':_0x1347fe[_0x1282('0x50')],'waiting':_0x1347fe[_0x1282('0x51')]};_0x44de0e[_0x1282('0x20')](_0x3a1d43);}}_0x425638({'count':_0x44de0e[_0x1282('0x22')],'rows':_0x44de0e});});},'FaxQueues':function(_0x3fa55a){return new Promise(function(_0x43ab4d,_0x423a2f){var _0x5a6f50=[];for(var _0x1ef89f in _0x4dfd14['faxQueues']){if(_0x4dfd14[_0x1282('0x56')]['hasOwnProperty'](_0x1ef89f)){var _0xa58f6a=_0x4dfd14['faxQueues'][_0x1ef89f];var _0x2de8b8={'id':_0xa58f6a['id'],'available':_0xa58f6a[_0x1282('0x4e')],'loggedIn':_0xa58f6a[_0x1282('0x4f')],'name':_0xa58f6a[_0x1282('0x55')],'paused':_0xa58f6a['paused'],'waiting':_0xa58f6a['waiting']};_0x5a6f50['push'](_0x2de8b8);}}_0x43ab4d({'count':_0x5a6f50[_0x1282('0x22')],'rows':_0x5a6f50});});},'WhatsappQueues':function(_0x44884e){return new Promise(function(_0x1b215d,_0x5f3eea){var _0x59ef55=[];for(var _0x4672e4 in _0x4dfd14['whatsappQueues']){if(_0x4dfd14[_0x1282('0x57')][_0x1282('0x48')](_0x4672e4)){var _0x4b90f5=_0x4dfd14[_0x1282('0x57')][_0x4672e4];var _0x569ef1={'id':_0x4b90f5['id'],'available':_0x4b90f5[_0x1282('0x4e')],'loggedIn':_0x4b90f5[_0x1282('0x4f')],'name':_0x4b90f5[_0x1282('0x55')],'paused':_0x4b90f5[_0x1282('0x50')],'waiting':_0x4b90f5[_0x1282('0x51')]};_0x59ef55[_0x1282('0x20')](_0x569ef1);}}_0x1b215d({'count':_0x59ef55[_0x1282('0x22')],'rows':_0x59ef55});});},'ChatQueuesWaitingInteractions':function(_0x55ed28){return new Promise(function(_0x21bb4e,_0xa89279){var _0x31f987=_[_0x1282('0x4c')](_0x4dfd14['chatQueuesWaitingInteractions']);_0x21bb4e({'count':_0x31f987['length'],'rows':_0x31f987});});},'MailQueuesWaitingInteractions':function(_0x360b90){return new Promise(function(_0x459269,_0x1c5d32){var _0x51bdbf=_[_0x1282('0x4c')](_0x4dfd14[_0x1282('0x58')]);_0x459269({'count':_0x51bdbf['length'],'rows':_0x51bdbf});});},'OpenchannelQueuesWaitingInteractions':function(_0x3bed53){return new Promise(function(_0x19fb3c,_0x5003a8){var _0x26e161=_['values'](_0x4dfd14[_0x1282('0x59')]);_0x19fb3c({'count':_0x26e161[_0x1282('0x22')],'rows':_0x26e161});});},'SmsQueuesWaitingInteractions':function(_0x28d7dc){return new Promise(function(_0x56abde,_0x3c2d41){var _0x2cb844=_[_0x1282('0x4c')](_0x4dfd14[_0x1282('0x5a')]);_0x56abde({'count':_0x2cb844[_0x1282('0x22')],'rows':_0x2cb844});});},'FaxQueuesWaitingInteractions':function(_0x37f850){return new Promise(function(_0x41fd86,_0x2b198e){var _0x55f94e=_[_0x1282('0x4c')](_0x4dfd14[_0x1282('0x5b')]);_0x41fd86({'count':_0x55f94e[_0x1282('0x22')],'rows':_0x55f94e});});},'WhatsappQueuesWaitingInteractions':function(_0x1e9577){return new Promise(function(_0x5998f1,_0x3a3160){var _0x49c2e3=_[_0x1282('0x4c')](_0x4dfd14['whatsappQueuesWaitingInteractions']);_0x5998f1({'count':_0x49c2e3['length'],'rows':_0x49c2e3});});}};var _0x36f9f6=jayson[_0x1282('0x5c')](_0x3ee18f)[_0x1282('0x5d')]();_0x36f9f6['on'](_0x1282('0x36'),function(_0x832ac5){logger[_0x1282('0x36')](JSON['stringify'](_0x832ac5));return _0xe4de3b(_0x832ac5);});_0x36f9f6[_0x1282('0x15')](0x232c,_0x1282('0x5e'),function(){console[_0x1282('0x5f')](_0x1282('0x60'),0x232c);return _0x493837(_0x1282('0x61')+0x232c);});});};
\ No newline at end of file
+var _0xd3d1=['%s.%s.%s','isNil','IntervalId','Intervals','map','interval','rules','channel','message','interaction','applications','length','app','.js','toLowerCase','autoreply','appdata','split','push','slice','join','dialogflow','amazonlex','tag','getMustacheRender','account','notificationTemplate','ChatWebsiteId','body','%s:%s:%s','./interval','condition','intervals','consequence','priority','info','Push\x20new\x20rule','\x20|\x20','Please\x20create\x20a\x20new\x20file\x20under','execute','Applications\x20executed','stringify','emit','complete','No\x20applications\x20to\x20execute','error','stack','routing\x20is\x20empty','agent','agents','busyQueue','end','QueueReport','error\x20update\x20queue\x20report','message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','agent\x20not\x20found','values','find','chatQueues','available','loggedIn','name','waiting','mailQueues','openchannelQueues','smsQueues','faxQueues','whatsappQueues','paused','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','127.0.0.1','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','bluebird','./applications/utils','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','format'];(function(_0x29532a,_0x1b5f07){var _0x1f3f1f=function(_0x5e7905){while(--_0x5e7905){_0x29532a['push'](_0x29532a['shift']());}};_0x1f3f1f(++_0x1b5f07);}(_0xd3d1,0x172));var _0x1d3d=function(_0x5f3f88,_0x562baf){_0x5f3f88=_0x5f3f88-0x0;var _0xd08119=_0xd3d1[_0x5f3f88];return _0xd08119;};'use strict';var _=require(_0x1d3d('0x0'));var util=require(_0x1d3d('0x1'));var path=require('path');var fs=require('fs');var jayson=require('jayson/promise');var BPromise=require(_0x1d3d('0x2'));var utils=require(_0x1d3d('0x3'));var logger=require(_0x1d3d('0x4'))(_0x1d3d('0x5'));var rpc={'openchannelQueueReport':require(_0x1d3d('0x6')),'mailQueueReport':require(_0x1d3d('0x7')),'chatQueueReport':require(_0x1d3d('0x8')),'smsQueueReport':require(_0x1d3d('0x9')),'faxQueueReport':require(_0x1d3d('0xa')),'whatsappQueueReport':require(_0x1d3d('0xb'))};var RuleEngine=require(_0x1d3d('0xc'));function getId(_0xb1b3c6,_0xe10bca,_0x2c377c){return util[_0x1d3d('0xd')](_0x1d3d('0xe'),_0xb1b3c6,_0xe10bca||0x0,_0x2c377c||0x0);}function getIntervals(_0x3683c9,_0x510a37){var _0x2d967e=[];if(!_[_0x1d3d('0xf')](_0x510a37[_0x1d3d('0x10')])&&!_[_0x1d3d('0xf')](_0x3683c9[_0x510a37[_0x1d3d('0x10')]])&&!_[_0x1d3d('0xf')](_0x3683c9[_0x510a37[_0x1d3d('0x10')]][_0x1d3d('0x11')])){_0x2d967e=_[_0x1d3d('0x12')](_0x3683c9[_0x510a37[_0x1d3d('0x10')]][_0x1d3d('0x11')],'interval');}else if(!_[_0x1d3d('0xf')](_0x510a37[_0x1d3d('0x13')])){_0x2d967e=[_0x510a37['interval']];}return _0x2d967e;}exports['listen']=function(_0x12bd00){_0x12bd00[_0x1d3d('0x14')]={};return new BPromise(function(_0x1a8035,_0x59b907){var _0x4098a9={'Start':function(_0x4dcc22){var _0x1d54f3=this;return new Promise(function(_0x33e7d9,_0x3491e4){if(_0x4dcc22){try{var _0x24bb8c=[];var _0x21c2e4=getId(_0x4dcc22[_0x1d3d('0x15')],_0x4dcc22[_0x1d3d('0x16')]?_0x4dcc22['message']['id']:0x0,_0x4dcc22['interaction']?_0x4dcc22[_0x1d3d('0x17')]['id']:0x0);if(_0x4dcc22[_0x1d3d('0x18')]&&_['isArray'](_0x4dcc22[_0x1d3d('0x18')])&&_0x4dcc22['applications'][_0x1d3d('0x19')]){for(var _0x392e92=0x0;_0x392e92<_0x4dcc22[_0x1d3d('0x18')][_0x1d3d('0x19')];_0x392e92+=0x1){var _0x5a6772=_0x4dcc22[_0x1d3d('0x18')][_0x392e92];if(fs['existsSync'](path['join'](__dirname,_0x1d3d('0x18'),_0x5a6772[_0x1d3d('0x1a')]+_0x1d3d('0x1b')))){var _0x344a03=[];switch(_0x5a6772[_0x1d3d('0x1a')][_0x1d3d('0x1c')]()){case _0x1d3d('0x1d'):var _0xa55c43=_0x5a6772[_0x1d3d('0x1e')][_0x1d3d('0x1f')](',');if(_0x4dcc22[_0x1d3d('0x15')]==='mail'){_0x344a03[_0x1d3d('0x20')](_0xa55c43[0x0]);_0x344a03[_0x1d3d('0x20')](_0xa55c43[0x1]);_0x344a03['push'](_0xa55c43[_0x1d3d('0x21')](0x2,_0xa55c43['length'])[_0x1d3d('0x22')](','));}else{_0x344a03[_0x1d3d('0x20')](_0xa55c43[0x0]);_0x344a03[_0x1d3d('0x20')](_0xa55c43[_0x1d3d('0x21')](0x1,_0xa55c43[_0x1d3d('0x19')])[_0x1d3d('0x22')](','));}break;case _0x1d3d('0x23'):var _0x298fd3=_0x5a6772[_0x1d3d('0x1e')][_0x1d3d('0x1f')](',');_0x344a03[_0x1d3d('0x20')](_0x298fd3[0x0]);_0x344a03['push'](_0x298fd3[0x1]);_0x344a03[_0x1d3d('0x20')](_0x298fd3['slice'](0x2,_0x298fd3[_0x1d3d('0x19')])[_0x1d3d('0x22')](','));break;case'dialogflowv2':var _0x185913=_0x5a6772[_0x1d3d('0x1e')][_0x1d3d('0x1f')](',');_0x344a03[_0x1d3d('0x20')](_0x185913[0x0]);_0x344a03['push'](_0x185913[0x1]);_0x344a03[_0x1d3d('0x20')](_0x185913[0x2]);_0x344a03[_0x1d3d('0x20')](_0x185913[0x3]);_0x344a03['push'](_0x185913[_0x1d3d('0x21')](0x4,_0x185913['length'])[_0x1d3d('0x22')](','));break;case _0x1d3d('0x24'):var _0x5ec019=_0x5a6772[_0x1d3d('0x1e')][_0x1d3d('0x1f')](',');_0x344a03[_0x1d3d('0x20')](_0x5ec019[0x0]);_0x344a03[_0x1d3d('0x20')](_0x5ec019[0x1]);_0x344a03[_0x1d3d('0x20')](_0x5ec019[0x2]);_0x344a03[_0x1d3d('0x20')](_0x5ec019[0x3]);_0x344a03[_0x1d3d('0x20')](_0x5ec019[_0x1d3d('0x21')](0x4,_0x5ec019[_0x1d3d('0x19')])['join'](','));break;case _0x1d3d('0x16'):_0x344a03[_0x1d3d('0x20')](_0x5a6772[_0x1d3d('0x1e')]);break;case _0x1d3d('0x25'):_0x344a03['push'](_0x5a6772['TagId']);_0x344a03[_0x1d3d('0x20')](_0x5a6772[_0x1d3d('0x1e')]);break;case'tvox':var _0x43ef5d=utils[_0x1d3d('0x26')](_0x4dcc22[_0x1d3d('0x27')][_0x1d3d('0x28')],_0x4dcc22);var _0x5d906d=_0x5a6772['appdata'][_0x1d3d('0x1f')](',');_0x344a03['push'](_0x5d906d[0x0]);_0x344a03[_0x1d3d('0x20')](_0x5d906d[0x1]);_0x344a03[_0x1d3d('0x20')](_0x5d906d[0x2]);_0x344a03[_0x1d3d('0x20')](_0x5d906d[0x3]);_0x344a03[_0x1d3d('0x20')](_0x5d906d[0x4]);_0x344a03[_0x1d3d('0x20')](_0x5d906d[0x5]);_0x344a03[_0x1d3d('0x20')](_0x5d906d[0x6]);_0x344a03[_0x1d3d('0x20')](_0x5d906d[0x7]);_0x344a03[_0x1d3d('0x20')](_0x5d906d[0x8]);_0x344a03['push'](_0x5d906d[0x9]);_0x344a03[_0x1d3d('0x20')](_0x5d906d[0xa]);_0x344a03['push'](_0x4dcc22[_0x1d3d('0x17')]['id']);_0x344a03[_0x1d3d('0x20')](_0x4dcc22['message']['id']);_0x344a03[_0x1d3d('0x20')](_0x5a6772[_0x1d3d('0x29')]);_0x344a03[_0x1d3d('0x20')](_0x4dcc22[_0x1d3d('0x17')]['ContactId']);_0x344a03['push'](_0x4dcc22[_0x1d3d('0x2a')]['body']);_0x344a03[_0x1d3d('0x20')](_0x43ef5d);break;default:_0x344a03=_[_0x1d3d('0xf')](_0x5a6772['appdata'])?[]:_0x5a6772[_0x1d3d('0x1e')][_0x1d3d('0x1f')](',');}var _0x51be79={'id':util[_0x1d3d('0xd')](_0x1d3d('0x2b'),_0x21c2e4,_0x5a6772['id'],_0x5a6772[_0x1d3d('0x1a')]),'condition':require(_0x1d3d('0x2c'))[_0x1d3d('0x2d')](_0x21c2e4,getIntervals(_0x12bd00[_0x1d3d('0x2e')],_0x5a6772),_0x12bd00),'consequence':require('./applications/'+_0x5a6772[_0x1d3d('0x1a')])[_0x1d3d('0x2f')](_0x21c2e4,_0x344a03,_0x12bd00,_0x4dcc22),'p':_0x5a6772[_0x1d3d('0x30')]||0x0};logger[_0x1d3d('0x31')](_0x1d3d('0x32'),_0x51be79['id'],'on\x20interval',getIntervals(_0x12bd00[_0x1d3d('0x2e')],_0x5a6772)[_0x1d3d('0x22')](_0x1d3d('0x33')));_0x24bb8c[_0x1d3d('0x20')](_0x51be79);}else{logger['error'](_0x1d3d('0x34'),path[_0x1d3d('0x22')](__dirname,_0x1d3d('0x18'),_0x5a6772[_0x1d3d('0x1a')]+_0x1d3d('0x1b')));}}_0x12bd00['rules'][_0x21c2e4]=new RuleEngine(_0x24bb8c);_0x12bd00['rules'][_0x21c2e4][_0x1d3d('0x35')](_0x4dcc22,function(_0xa58235){logger[_0x1d3d('0x31')](_0x1d3d('0x36'),JSON[_0x1d3d('0x37')](_0xa58235['matchPath']));if(_0x12bd00[_0x1d3d('0x14')][_0x21c2e4]){_0x12bd00['rules'][_0x21c2e4][_0x1d3d('0x38')](_0x1d3d('0x39'));}});return _0x33e7d9({'code':0xc8,'message':_0x4dcc22});}else{logger[_0x1d3d('0x31')](_0x1d3d('0x3a'));return _0x33e7d9({'code':0xc8,'message':_0x4dcc22});}}catch(_0x58c7ab){logger[_0x1d3d('0x3b')](_0x58c7ab[_0x1d3d('0x3c')]);return _0x3491e4(_0x1d54f3[_0x1d3d('0x3b')](0x1f4,_0x58c7ab));}}return _0x3491e4(_0x1d3d('0x3d'));});},'AcceptMessage':function(_0x23a6d9){var _0x1c8ee3=this;return new Promise(function(_0x3a3389,_0x55aa8a){if(_0x23a6d9[_0x1d3d('0x3e')]&&_0x23a6d9['agent']['id']){if(_0x12bd00[_0x1d3d('0x3f')][_0x23a6d9[_0x1d3d('0x3e')]['id']]){_0x12bd00['agents'][_0x23a6d9[_0x1d3d('0x3e')]['id']]['busy']=![];_0x12bd00[_0x1d3d('0x3f')][_0x23a6d9['agent']['id']][_0x1d3d('0x40')]=undefined;}}if(_0x23a6d9[_0x1d3d('0x16')]&&_0x23a6d9[_0x1d3d('0x16')]['id']){try{var _0x25b547=getId(_0x23a6d9[_0x1d3d('0x15')],_0x23a6d9[_0x1d3d('0x16')]?_0x23a6d9[_0x1d3d('0x16')]['id']:0x0,_0x23a6d9[_0x1d3d('0x17')]?_0x23a6d9['interaction']['id']:0x0);if(_0x12bd00['rules'][_0x25b547]){_0x12bd00['rules'][_0x25b547][_0x1d3d('0x38')](_0x1d3d('0x41'));if(rpc[_0x23a6d9[_0x1d3d('0x15')]+_0x1d3d('0x42')]){rpc[_0x23a6d9[_0x1d3d('0x15')]+_0x1d3d('0x42')]['update'](_0x25b547,{'UserId':_0x23a6d9['message']['UserId']})['catch'](function(){logger[_0x1d3d('0x3b')](_0x1d3d('0x43'));});}}return _0x3a3389({'code':0xc8,'message':_0x23a6d9});}catch(_0x89a16a){logger[_0x1d3d('0x3b')](_0x89a16a[_0x1d3d('0x3c')]);return _0x55aa8a(_0x1c8ee3[_0x1d3d('0x3b')](0x1f4,_0x89a16a));}}logger[_0x1d3d('0x3b')](_0x1d3d('0x44'));return _0x55aa8a(_0x1c8ee3[_0x1d3d('0x3b')](0x1f4,_0x1d3d('0x44')));});},'RejectMessage':function(_0xefc84c){var _0xb88d59=this;return new Promise(function(_0x3e6431,_0x212929){if(_0xefc84c[_0x1d3d('0x3e')]&&_0xefc84c['agent']['id']){try{if(_0x12bd00[_0x1d3d('0x3f')][_0xefc84c[_0x1d3d('0x3e')]['id']]){_0x12bd00[_0x1d3d('0x3f')][_0xefc84c[_0x1d3d('0x3e')]['id']]['busy']=![];_0x12bd00[_0x1d3d('0x3f')][_0xefc84c['agent']['id']]['busyQueue']=undefined;}return _0x3e6431({'code':0xc8,'message':_0xefc84c});}catch(_0x27b3d9){logger[_0x1d3d('0x3b')](_0x27b3d9['stack']);return _0x212929(_0xb88d59[_0x1d3d('0x3b')](0x1f4,_0x27b3d9));}}logger[_0x1d3d('0x3b')]('message\x20is\x20empty');return _0x212929(_0xb88d59[_0x1d3d('0x3b')](0x1f4,_0x1d3d('0x44')));});},'AbandonInteraction':function(_0x15d9b4){var _0x3ad696=this;return new Promise(function(_0x3dc699,_0x267586){if(_0x15d9b4[_0x1d3d('0x15')]&&_0x15d9b4[_0x1d3d('0x17')]&&_0x15d9b4[_0x1d3d('0x17')]['id']){try{var _0x543cde=getId(_0x15d9b4[_0x1d3d('0x15')],_0x15d9b4['message']?_0x15d9b4['message']['id']:0x0,_0x15d9b4['interaction']?_0x15d9b4['interaction']['id']:0x0);if(_0x12bd00[_0x1d3d('0x14')][_0x543cde]){_0x12bd00[_0x1d3d('0x14')][_0x543cde][_0x1d3d('0x38')](_0x1d3d('0x41'));}return _0x3dc699({'code':0xc8,'message':_0x15d9b4});}catch(_0x505ae2){logger[_0x1d3d('0x3b')](_0x505ae2['stack']);return _0x267586(_0x3ad696[_0x1d3d('0x3b')](0x1f4,_0x505ae2));}}logger[_0x1d3d('0x3b')]('message\x20is\x20empty');return _0x267586(_0x3ad696[_0x1d3d('0x3b')](0x1f4,_0x1d3d('0x44')));});},'AgentCapacity':function(_0x4ce2fa){var _0x270611=this;return new Promise(function(_0x4318ed,_0x295145){if(_0x12bd00[_0x1d3d('0x3f')][_0x1d3d('0x45')](_0x4ce2fa['id'])){for(var _0x16e757 in _0x4ce2fa['capacity']){if(_0x4ce2fa[_0x1d3d('0x46')][_0x1d3d('0x45')](_0x16e757)){if(_0x12bd00[_0x1d3d('0x3f')][_0x4ce2fa['id']][_0x1d3d('0x45')](_0x16e757+_0x1d3d('0x47'))){_0x12bd00['agents'][_0x4ce2fa['id']][_0x16e757+_0x1d3d('0x47')]=parseInt(_0x4ce2fa['capacity'][_0x16e757],0xa);}}}_0x12bd00[_0x1d3d('0x3f')][_0x4ce2fa['id']]['updateRealtime']();return _0x4318ed({'code':0xc8,'message':_0x12bd00[_0x1d3d('0x3f')][_0x4ce2fa['id']]});}else{return _0x295145(_0x270611[_0x1d3d('0x3b')](0x1f4,_0x1d3d('0x48')));}});},'Agents':function(_0x1711ee){return new Promise(function(_0x1e781d){var _0x426afa=_[_0x1d3d('0x49')](_0x12bd00['agents']);if(_0x1711ee&&_0x1711ee['id']){var _0x3a5a65=_[_0x1d3d('0x4a')](_0x426afa,function(_0x2c1781){return _0x2c1781['id']===_0x1711ee['id'];});_0x1e781d(_0x3a5a65);}else{_0x1e781d({'count':_0x426afa[_0x1d3d('0x19')],'rows':_0x426afa});}});},'ChatQueues':function(){return new Promise(function(_0x41bcdd){var _0x44243d=[];for(var _0x4e395b in _0x12bd00[_0x1d3d('0x4b')]){if(_0x12bd00[_0x1d3d('0x4b')][_0x1d3d('0x45')](_0x4e395b)){var _0xa3bc=_0x12bd00[_0x1d3d('0x4b')][_0x4e395b];var _0x4bff04={'id':_0xa3bc['id'],'available':_0xa3bc[_0x1d3d('0x4c')],'loggedIn':_0xa3bc[_0x1d3d('0x4d')],'name':_0xa3bc[_0x1d3d('0x4e')],'paused':_0xa3bc['paused'],'waiting':_0xa3bc[_0x1d3d('0x4f')]};_0x44243d['push'](_0x4bff04);}}_0x41bcdd({'count':_0x44243d[_0x1d3d('0x19')],'rows':_0x44243d});});},'MailQueues':function(){return new Promise(function(_0x576a7f){var _0x449a86=[];for(var _0x378878 in _0x12bd00[_0x1d3d('0x50')]){if(_0x12bd00['mailQueues'][_0x1d3d('0x45')](_0x378878)){var _0x15de4f=_0x12bd00[_0x1d3d('0x50')][_0x378878];var _0x5ad698={'id':_0x15de4f['id'],'available':_0x15de4f[_0x1d3d('0x4c')],'loggedIn':_0x15de4f[_0x1d3d('0x4d')],'name':_0x15de4f[_0x1d3d('0x4e')],'paused':_0x15de4f['paused'],'waiting':_0x15de4f[_0x1d3d('0x4f')]};_0x449a86[_0x1d3d('0x20')](_0x5ad698);}}_0x576a7f({'count':_0x449a86[_0x1d3d('0x19')],'rows':_0x449a86});});},'OpenchannelQueues':function(){return new Promise(function(_0x411cb0){var _0x107494=[];for(var _0x48ba6e in _0x12bd00[_0x1d3d('0x51')]){if(_0x12bd00[_0x1d3d('0x51')][_0x1d3d('0x45')](_0x48ba6e)){var _0x550a95=_0x12bd00[_0x1d3d('0x51')][_0x48ba6e];var _0x2b377d={'id':_0x550a95['id'],'available':_0x550a95[_0x1d3d('0x4c')],'loggedIn':_0x550a95[_0x1d3d('0x4d')],'name':_0x550a95[_0x1d3d('0x4e')],'paused':_0x550a95['paused'],'waiting':_0x550a95[_0x1d3d('0x4f')]};_0x107494[_0x1d3d('0x20')](_0x2b377d);}}_0x411cb0({'count':_0x107494['length'],'rows':_0x107494});});},'SmsQueues':function(){return new Promise(function(_0x45bb3a){var _0x32639e=[];for(var _0x51f4fd in _0x12bd00[_0x1d3d('0x52')]){if(_0x12bd00[_0x1d3d('0x52')][_0x1d3d('0x45')](_0x51f4fd)){var _0x25220f=_0x12bd00['smsQueues'][_0x51f4fd];var _0x3fc022={'id':_0x25220f['id'],'available':_0x25220f[_0x1d3d('0x4c')],'loggedIn':_0x25220f[_0x1d3d('0x4d')],'name':_0x25220f[_0x1d3d('0x4e')],'paused':_0x25220f['paused'],'waiting':_0x25220f['waiting']};_0x32639e[_0x1d3d('0x20')](_0x3fc022);}}_0x45bb3a({'count':_0x32639e[_0x1d3d('0x19')],'rows':_0x32639e});});},'FaxQueues':function(){return new Promise(function(_0x4604cc){var _0x14e615=[];for(var _0x3645b2 in _0x12bd00[_0x1d3d('0x53')]){if(_0x12bd00[_0x1d3d('0x53')]['hasOwnProperty'](_0x3645b2)){var _0x307e46=_0x12bd00[_0x1d3d('0x53')][_0x3645b2];var _0x562578={'id':_0x307e46['id'],'available':_0x307e46[_0x1d3d('0x4c')],'loggedIn':_0x307e46[_0x1d3d('0x4d')],'name':_0x307e46[_0x1d3d('0x4e')],'paused':_0x307e46['paused'],'waiting':_0x307e46[_0x1d3d('0x4f')]};_0x14e615[_0x1d3d('0x20')](_0x562578);}}_0x4604cc({'count':_0x14e615[_0x1d3d('0x19')],'rows':_0x14e615});});},'WhatsappQueues':function(){return new Promise(function(_0x4ae421){var _0x5b909b=[];for(var _0x328693 in _0x12bd00[_0x1d3d('0x54')]){if(_0x12bd00[_0x1d3d('0x54')][_0x1d3d('0x45')](_0x328693)){var _0x58c51a=_0x12bd00[_0x1d3d('0x54')][_0x328693];var _0x9a0a16={'id':_0x58c51a['id'],'available':_0x58c51a[_0x1d3d('0x4c')],'loggedIn':_0x58c51a['loggedIn'],'name':_0x58c51a[_0x1d3d('0x4e')],'paused':_0x58c51a[_0x1d3d('0x55')],'waiting':_0x58c51a['waiting']};_0x5b909b[_0x1d3d('0x20')](_0x9a0a16);}}_0x4ae421({'count':_0x5b909b['length'],'rows':_0x5b909b});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0x248e31){var _0x3a9c39=_['values'](_0x12bd00['chatQueuesWaitingInteractions']);_0x248e31({'count':_0x3a9c39[_0x1d3d('0x19')],'rows':_0x3a9c39});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0x111da2){var _0x48c169=_[_0x1d3d('0x49')](_0x12bd00[_0x1d3d('0x56')]);_0x111da2({'count':_0x48c169[_0x1d3d('0x19')],'rows':_0x48c169});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0xb8f1b5){var _0x493900=_[_0x1d3d('0x49')](_0x12bd00[_0x1d3d('0x57')]);_0xb8f1b5({'count':_0x493900[_0x1d3d('0x19')],'rows':_0x493900});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0x5b75df){var _0x216a42=_[_0x1d3d('0x49')](_0x12bd00[_0x1d3d('0x58')]);_0x5b75df({'count':_0x216a42['length'],'rows':_0x216a42});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0x14f5f3){var _0x434d65=_[_0x1d3d('0x49')](_0x12bd00[_0x1d3d('0x59')]);_0x14f5f3({'count':_0x434d65[_0x1d3d('0x19')],'rows':_0x434d65});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0x2926e0){var _0x516cb9=_[_0x1d3d('0x49')](_0x12bd00[_0x1d3d('0x5a')]);_0x2926e0({'count':_0x516cb9['length'],'rows':_0x516cb9});});}};var _0x360a3c=jayson[_0x1d3d('0x5b')](_0x4098a9)[_0x1d3d('0x5c')]();_0x360a3c['on']('error',function(_0x327a8b){logger['error'](JSON['stringify'](_0x327a8b));return _0x59b907(_0x327a8b);});_0x360a3c['listen'](0x232c,_0x1d3d('0x5d'),function(){console['log'](_0x1d3d('0x5e'),0x232c);return _0x1a8035(_0x1d3d('0x5f')+0x232c);});});};
\ No newline at end of file
index bee90c1..b23f26f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccfc=['condition','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','push','Command','format','iftime\x20%s','message','true','[%s][INTERVAL]\x20%s','all','some','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','stack','bluebird','jayson/promise','lodash','../../../config/logger','client','http','then','error','catch'];(function(_0x2a8533,_0x8dbdee){var _0x57d85d=function(_0x350fbe){while(--_0x350fbe){_0x2a8533['push'](_0x2a8533['shift']());}};_0x57d85d(++_0x8dbdee);}(_0xccfc,0x171));var _0xcccf=function(_0x303fc8,_0x274a43){_0x303fc8=_0x303fc8-0x0;var _0x5dcf1b=_0xccfc[_0x303fc8];return _0x5dcf1b;};'use strict';var util=require('util');var BPromise=require(_0xcccf('0x0'));var jayson=require(_0xcccf('0x1'));var _=require(_0xcccf('0x2'));var logger=require(_0xcccf('0x3'))('routing');var client=jayson[_0xcccf('0x4')][_0xcccf('0x5')]({'port':0x232a});function request(_0x3da1b3,_0x1b3c88){return new BPromise(function(_0x2f8e11,_0x5604c9){return client['request'](_0x3da1b3,_0x1b3c88)[_0xcccf('0x6')](function(_0x301ec7){if(_0x301ec7[_0xcccf('0x7')]){return _0x5604c9(_0x301ec7[_0xcccf('0x7')]['message']);}else{return _0x2f8e11(_0x301ec7['result']);}})[_0xcccf('0x8')](function(_0x34b782){return _0x5604c9(_0x34b782);});});}exports[_0xcccf('0x9')]=function(_0x3a4097,_0x26be3f,_0x5b372d){return function(_0x56715c){if(_0x5b372d['rules']&&!_0x5b372d['rules'][_0x3a4097]){logger[_0xcccf('0xa')](_0xcccf('0xb'),_0x3a4097);return _0x56715c[_0xcccf('0xc')]();}var _0x20ab9e=[];for(var _0xa15b6e=0x0;_0xa15b6e<_0x26be3f[_0xcccf('0xd')];_0xa15b6e+=0x1){_0x20ab9e[_0xcccf('0xe')](request(_0xcccf('0xf'),{'command':util[_0xcccf('0x10')](_0xcccf('0x11'),_0x26be3f[_0xa15b6e])})['then'](function(_0x44f47a){return _0x44f47a&&_0x44f47a['message']&&_0x44f47a[_0xcccf('0x12')]['indexOf'](_0xcccf('0x13'))>=0x0?!![]:![];})[_0xcccf('0x8')](function(_0x16755a){logger[_0xcccf('0x7')](_0xcccf('0x14'),_0x3a4097,_0x26be3f[_0xa15b6e]);}));}BPromise[_0xcccf('0x15')](_0x20ab9e)[_0xcccf('0x6')](function(_0x4d88dd){var _0x346066=_[_0xcccf('0x16')](_0x4d88dd);logger[_0xcccf('0xa')](_0xcccf('0x17'),_0x3a4097,_0x26be3f[_0xcccf('0x18')](_0xcccf('0x19')),_0x346066);_0x56715c['when'](_0x346066);})[_0xcccf('0x8')](function(_0x2f06e6){console['log'](_0x2f06e6);logger[_0xcccf('0x7')]('[%s][INTERVAL]\x20%s\x20%s',_0x3a4097,_0x26be3f[_0xcccf('0x18')](_0xcccf('0x19')),_0x2f06e6[_0xcccf('0x1a')]);_0x56715c[_0xcccf('0xc')]();});};};
\ No newline at end of file
+var _0xb164=['all','some','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','when','log','stack','stop','util','bluebird','jayson/promise','lodash','../../../config/logger','routing','http','request','then','error','catch','condition','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','length','push','Command','format','iftime\x20%s','message','indexOf','true'];(function(_0xdbc857,_0x140440){var _0x119bd0=function(_0x9e0d09){while(--_0x9e0d09){_0xdbc857['push'](_0xdbc857['shift']());}};_0x119bd0(++_0x140440);}(_0xb164,0x129));var _0x4b16=function(_0x1dfb4f,_0x550be0){_0x1dfb4f=_0x1dfb4f-0x0;var _0x547b48=_0xb164[_0x1dfb4f];return _0x547b48;};'use strict';var util=require(_0x4b16('0x0'));var BPromise=require(_0x4b16('0x1'));var jayson=require(_0x4b16('0x2'));var _=require(_0x4b16('0x3'));var logger=require(_0x4b16('0x4'))(_0x4b16('0x5'));var client=jayson['client'][_0x4b16('0x6')]({'port':0x232a});function request(_0x5999fd,_0x136711){return new BPromise(function(_0x112d82,_0x38b71b){return client[_0x4b16('0x7')](_0x5999fd,_0x136711)[_0x4b16('0x8')](function(_0x542139){if(_0x542139[_0x4b16('0x9')]){return _0x38b71b(_0x542139['error']['message']);}else{return _0x112d82(_0x542139['result']);}})[_0x4b16('0xa')](function(_0x682486){return _0x38b71b(_0x682486);});});}exports[_0x4b16('0xb')]=function(_0x4ad9a5,_0x4a63a2,_0x54e031){return function(_0x49b31e){if(_0x54e031[_0x4b16('0xc')]&&!_0x54e031['rules'][_0x4ad9a5]){logger[_0x4b16('0xd')](_0x4b16('0xe'),_0x4ad9a5);return _0x49b31e['stop']();}var _0xa514be=[];for(var _0x48963f=0x0;_0x48963f<_0x4a63a2[_0x4b16('0xf')];_0x48963f+=0x1){_0xa514be[_0x4b16('0x10')](request(_0x4b16('0x11'),{'command':util[_0x4b16('0x12')](_0x4b16('0x13'),_0x4a63a2[_0x48963f])})[_0x4b16('0x8')](function(_0x4cc167){return _0x4cc167&&_0x4cc167[_0x4b16('0x14')]&&_0x4cc167[_0x4b16('0x14')][_0x4b16('0x15')](_0x4b16('0x16'))>=0x0?!![]:![];})[_0x4b16('0xa')](function(_0x1c9bb4){logger[_0x4b16('0x9')]('[%s][INTERVAL]\x20%s',_0x4ad9a5,_0x4a63a2[_0x48963f]);}));}BPromise[_0x4b16('0x17')](_0xa514be)[_0x4b16('0x8')](function(_0x461c93){var _0x18ca2c=_[_0x4b16('0x18')](_0x461c93);logger[_0x4b16('0xd')](_0x4b16('0x19'),_0x4ad9a5,_0x4a63a2[_0x4b16('0x1a')](_0x4b16('0x1b')),_0x18ca2c);_0x49b31e[_0x4b16('0x1c')](_0x18ca2c);})[_0x4b16('0xa')](function(_0x25817f){console[_0x4b16('0x1d')](_0x25817f);logger[_0x4b16('0x9')](_0x4b16('0x19'),_0x4ad9a5,_0x4a63a2[_0x4b16('0x1a')](_0x4b16('0x1b')),_0x25817f[_0x4b16('0x1e')]);_0x49b31e[_0x4b16('0x1f')]();});};};
\ No newline at end of file
index b78a41c..f73c9f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['then','type','agentacw','agentcomplete','acw','acwtime','CreateVoiceAgentReport','request','destuniqueid','agentcalled','debug','now','called','error','[%s][agents][agentcalled]','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','timeout','reason','ringtime','talktime','push','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','holdtime','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','connectedlinename','connect','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','agentconnectAt','complete','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype','transferexten','extension','transferuniqueid','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','ATTENDED','origtransfererexten','transfereeuniqueid','agententerreason','clone','calleridname','secondtransfererlinkedid','[%s][agents][attendedtransfer]\x20agent:%s','transfertargetuniqueid','agentcalledAt','[%s][agents][hangup]','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','agent','lodash','util','./utils','info','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'];(function(_0x163739,_0x323efd){var _0x953b6e=function(_0x31fcb0){while(--_0x31fcb0){_0x163739['push'](_0x163739['shift']());}};_0x953b6e(++_0x323efd);}(_0xe706,0xa3));var _0x6e70=function(_0x34b57c,_0x97c5c9){_0x34b57c=_0x34b57c-0x0;var _0x2ac76b=_0xe706[_0x34b57c];return _0x2ac76b;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var utils=require(_0x6e70('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x5e8446,_0x2cae77){utils[_0x6e70('0x3')](util[_0x6e70('0x4')](_0x6e70('0x5'),_0x5e8446[_0x6e70('0x6')],_0x5e8446[_0x6e70('0x7')],_0x5e8446[_0x6e70('0x8')],_0x5e8446[_0x6e70('0x9')],_0x5e8446[_0x6e70('0xa')],_0x5e8446[_0x6e70('0xb')],_0x5e8446[_0x6e70('0xc')],_0x5e8446[_0x6e70('0xd')]));if(_0x5e8446[_0x6e70('0x8')]){utils[_0x6e70('0xe')](_0x5e8446[_0x6e70('0x8')])[_0x6e70('0xf')](function(_0x954545){if(_0x954545){_0x5e8446[_0x6e70('0x10')]=_0x954545[_0x6e70('0x10')];_0x5e8446[_0x6e70('0x11')]=_0x5e8446[_0x6e70('0x12')]?_0x954545[_0x6e70('0x13')]:![];_0x5e8446[_0x6e70('0x14')]=_0x5e8446[_0x6e70('0x11')]?_0x954545['acwTimeout']:0x0;}utils['request'](_0x6e70('0x15'),_0x5e8446);});}else{utils[_0x6e70('0x16')](_0x6e70('0x15'),_0x5e8446);}if(_0x2cae77){delete transfers[_0x5e8446[_0x6e70('0x6')]];}else{delete agents[_0x5e8446[_0x6e70('0x17')]];}}exports[_0x6e70('0x18')]=function(_0xa1eb74){try{utils[_0x6e70('0x19')](util['format']('[%s][agents][agentcalled]',_0xa1eb74['uniqueid']),_0xa1eb74);agents[_0xa1eb74[_0x6e70('0x17')]]=_0xa1eb74;agents[_0xa1eb74['destuniqueid']]['agentcalledAt']=utils[_0x6e70('0x1a')]();agents[_0xa1eb74[_0x6e70('0x17')]]['lastevent']=_0x6e70('0x1b');agents[_0xa1eb74['destuniqueid']][_0x6e70('0xc')]=null;agents[_0xa1eb74[_0x6e70('0x17')]]['connectedlinename']=null;utils['info'](util[_0x6e70('0x4')]('[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0xa1eb74[_0x6e70('0x6')],agents[_0xa1eb74[_0x6e70('0x17')]]['membername'],_0xa1eb74['destuniqueid']));}catch(_0xc238ba){utils[_0x6e70('0x1c')](util[_0x6e70('0x4')](_0x6e70('0x1d'),_0xa1eb74[_0x6e70('0x6')]),_0xc238ba);}};exports[_0x6e70('0x1e')]=function(_0x1b2453){try{if(!_[_0x6e70('0x1f')](agents[_0x1b2453[_0x6e70('0x17')]])){utils[_0x6e70('0x19')](util['format'](_0x6e70('0x20'),_0x1b2453[_0x6e70('0x6')]),_0x1b2453);utils[_0x6e70('0x3')](util['format'](_0x6e70('0x21'),_0x1b2453[_0x6e70('0x6')],agents[_0x1b2453[_0x6e70('0x17')]]['membername'],_0x1b2453[_0x6e70('0x17')]));agents[_0x1b2453['destuniqueid']]['agentringnoanswer']=!![];agents[_0x1b2453['destuniqueid']][_0x6e70('0x22')]=utils[_0x6e70('0x1a')]();agents[_0x1b2453['destuniqueid']][_0x6e70('0xd')]=_0x6e70('0x23');agents[_0x1b2453['destuniqueid']][_0x6e70('0x24')]=_0x6e70('0x23');agents[_0x1b2453[_0x6e70('0x17')]]['holdtime']=_0x1b2453['ringtime']?parseInt(_0x1b2453[_0x6e70('0x25')])/0x3e8:0x0;agents[_0x1b2453[_0x6e70('0x17')]][_0x6e70('0x26')]=0x0;unanswered[_0x6e70('0x27')](_0x1b2453[_0x6e70('0x17')]);}}catch(_0x5d772a){utils[_0x6e70('0x1c')](util[_0x6e70('0x4')](_0x6e70('0x20'),_0x1b2453[_0x6e70('0x6')]),_0x5d772a);}};exports[_0x6e70('0x28')]=function(_0x20a225){try{_[_0x6e70('0x29')](agents,function(_0x24114a,_0x3a0821){if(_0x24114a[_0x6e70('0x6')]==_0x20a225['uniqueid']&&!_[_0x6e70('0x2a')](unanswered,_0x24114a['destuniqueid'])){utils[_0x6e70('0x19')](util['format'](_0x6e70('0x2b'),_0x20a225[_0x6e70('0x6')]),_0x20a225);utils[_0x6e70('0x3')](util['format'](_0x6e70('0x2c'),_0x20a225[_0x6e70('0x6')],_0x24114a['membername'],_0x24114a[_0x6e70('0x17')]));_0x24114a[_0x6e70('0x1e')]=!![];_0x24114a['agentringnoanswerAt']=utils[_0x6e70('0x1a')]();_0x24114a[_0x6e70('0xd')]=_0x6e70('0x2d');_0x24114a[_0x6e70('0x24')]=_0x6e70('0x2d');_0x24114a[_0x6e70('0x2e')]=_0x20a225[_0x6e70('0x2e')];_0x24114a[_0x6e70('0x26')]=0x0;writeDB(_0x24114a);}});}catch(_0xf146fd){utils[_0x6e70('0x1c')](util['format'](_0x6e70('0x2b'),_0x20a225['uniqueid']),_0xf146fd);}};exports[_0x6e70('0x2f')]=function(_0x3222a2){try{if(agents[_0x3222a2[_0x6e70('0x17')]]){utils[_0x6e70('0x19')](util[_0x6e70('0x4')](_0x6e70('0x30'),_0x3222a2[_0x6e70('0x6')]),_0x3222a2);utils[_0x6e70('0x3')](util[_0x6e70('0x4')](_0x6e70('0x31'),_0x3222a2[_0x6e70('0x6')],agents[_0x3222a2[_0x6e70('0x17')]][_0x6e70('0x9')],_0x3222a2['destuniqueid']));agents[_0x3222a2['destuniqueid']]['agentconnectAt']=utils[_0x6e70('0x1a')]();agents[_0x3222a2[_0x6e70('0x17')]][_0x6e70('0xc')]=_0x3222a2[_0x6e70('0xc')];agents[_0x3222a2[_0x6e70('0x17')]][_0x6e70('0x32')]=_0x3222a2['connectedlinename'];agents[_0x3222a2[_0x6e70('0x17')]][_0x6e70('0x2e')]=_0x3222a2[_0x6e70('0x25')];agents[_0x3222a2[_0x6e70('0x17')]][_0x6e70('0xd')]=_0x6e70('0x33');_[_0x6e70('0x29')](agents,function(_0x16fc7d,_0x5be100){if(_0x16fc7d[_0x6e70('0x17')]!=_0x3222a2[_0x6e70('0x17')]&&_0x16fc7d[_0x6e70('0x6')]==_0x3222a2[_0x6e70('0x6')]){_0x16fc7d[_0x6e70('0x26')]=0x0;_0x16fc7d[_0x6e70('0x2e')]=_0x3222a2[_0x6e70('0x25')];_0x16fc7d['agentringnoanswer']=!![];_0x16fc7d['agentringnoanswerAt']=utils['now']();_0x16fc7d[_0x6e70('0xd')]=_0x6e70('0x34');_0x16fc7d[_0x6e70('0x24')]=_0x6e70('0x34');_0x16fc7d[_0x6e70('0x35')]=_0x3222a2['destuniqueid'];_0x16fc7d[_0x6e70('0x36')]=_0x3222a2[_0x6e70('0x9')];writeDB(_0x16fc7d);}});}}catch(_0x2a2aca){utils['error'](util['format']('[%s][agents][agentconnect]',_0x3222a2[_0x6e70('0x6')]),_0x2a2aca);}};exports['agentcomplete']=function(_0x42f49a){try{if(!_[_0x6e70('0x1f')](agents[_0x42f49a[_0x6e70('0x17')]])){utils[_0x6e70('0x19')](util['format'](_0x6e70('0x37'),_0x42f49a['uniqueid']),_0x42f49a);utils[_0x6e70('0x3')](util[_0x6e70('0x4')](_0x6e70('0x38'),_0x42f49a[_0x6e70('0x6')],agents[_0x42f49a['destuniqueid']][_0x6e70('0x9')],_0x42f49a[_0x6e70('0x17')]));agents[_0x42f49a[_0x6e70('0x17')]][_0x6e70('0x12')]=!![];agents[_0x42f49a[_0x6e70('0x17')]][_0x6e70('0x39')]=utils[_0x6e70('0x1a')]();agents[_0x42f49a['destuniqueid']][_0x6e70('0x26')]=utils[_0x6e70('0x3a')](agents[_0x42f49a[_0x6e70('0x17')]][_0x6e70('0x39')],agents[_0x42f49a[_0x6e70('0x17')]][_0x6e70('0x3b')]);agents[_0x42f49a[_0x6e70('0x17')]]['reason']=_0x42f49a[_0x6e70('0x24')];agents[_0x42f49a['destuniqueid']][_0x6e70('0xd')]=_0x6e70('0x3c');writeDB(agents[_0x42f49a['destuniqueid']]);}}catch(_0x53efc3){utils[_0x6e70('0x1c')](util[_0x6e70('0x4')](_0x6e70('0x37'),_0x42f49a['uniqueid']),_0x53efc3);}};exports['blindtransfer']=function(_0x238ebb){try{if(!_[_0x6e70('0x1f')](agents[_0x238ebb[_0x6e70('0x3d')]])){utils[_0x6e70('0x19')](util[_0x6e70('0x4')](_0x6e70('0x3e'),_0x238ebb['uniqueid']),_0x238ebb);utils[_0x6e70('0x3')](util[_0x6e70('0x4')](_0x6e70('0x3f'),_0x238ebb[_0x6e70('0x6')],agents[_0x238ebb[_0x6e70('0x3d')]]['membername'],agents[_0x238ebb['transfereruniqueid']][_0x6e70('0x6')]));agents[_0x238ebb[_0x6e70('0x3d')]][_0x6e70('0x40')]=!![];agents[_0x238ebb[_0x6e70('0x3d')]][_0x6e70('0x41')]='blind';agents[_0x238ebb[_0x6e70('0x3d')]][_0x6e70('0x42')]=_0x238ebb[_0x6e70('0x43')];agents[_0x238ebb[_0x6e70('0x3d')]][_0x6e70('0x44')]=agents[_0x238ebb['transfereruniqueid']][_0x6e70('0x6')];}}catch(_0x1dd242){utils[_0x6e70('0x1c')](util[_0x6e70('0x4')](_0x6e70('0x3e'),_0x238ebb[_0x6e70('0x6')]),_0x1dd242);}};exports['attendedtransfer']=function(_0x40e7c6){try{utils[_0x6e70('0x19')](util['format'](_0x6e70('0x45'),_0x40e7c6[_0x6e70('0x46')]),_0x40e7c6);if(_0x40e7c6['origtransfereruniqueid']==_0x40e7c6[_0x6e70('0x47')]){if(!_[_0x6e70('0x1f')](agents[_0x40e7c6[_0x6e70('0x48')]])){utils[_0x6e70('0x3')](util[_0x6e70('0x4')]('[%s][agents][attendedtransfer]\x20agent:%s',_0x40e7c6[_0x6e70('0x46')],agents[_0x40e7c6[_0x6e70('0x48')]][_0x6e70('0x9')]));agents[_0x40e7c6[_0x6e70('0x48')]][_0x6e70('0x40')]=!![];agents[_0x40e7c6[_0x6e70('0x48')]][_0x6e70('0x41')]=_0x6e70('0x49');agents[_0x40e7c6[_0x6e70('0x48')]][_0x6e70('0x42')]=_0x40e7c6[_0x6e70('0x4a')];agents[_0x40e7c6[_0x6e70('0x48')]][_0x6e70('0x44')]=_0x40e7c6[_0x6e70('0x46')];}if(_0x40e7c6[_0x6e70('0x4b')]&&agents[_0x40e7c6[_0x6e70('0x4b')]]){agents[_0x40e7c6[_0x6e70('0x4b')]][_0x6e70('0x4c')]=0x1;transfers[_0x40e7c6[_0x6e70('0x4b')]]=_[_0x6e70('0x4d')](agents[_0x40e7c6['transfereeuniqueid']]);transfers[_0x40e7c6[_0x6e70('0x4b')]][_0x6e70('0xb')]=agents[_0x40e7c6[_0x6e70('0x48')]][_0x6e70('0xb')];transfers[_0x40e7c6[_0x6e70('0x4b')]][_0x6e70('0x4e')]=agents[_0x40e7c6['secondtransfereruniqueid']][_0x6e70('0x4e')];transfers[_0x40e7c6[_0x6e70('0x4b')]]['agentcalledAt']=utils[_0x6e70('0x1a')]();transfers[_0x40e7c6[_0x6e70('0x4b')]][_0x6e70('0x3b')]=utils['now']();transfers[_0x40e7c6['transfereeuniqueid']][_0x6e70('0x2e')]=0x0;transfers[_0x40e7c6[_0x6e70('0x4b')]][_0x6e70('0x4c')]=0x2;}}else if(_0x40e7c6[_0x6e70('0x48')]==_0x40e7c6[_0x6e70('0x4f')]){if(!_[_0x6e70('0x1f')](agents[_0x40e7c6[_0x6e70('0x46')]])){utils['info'](util['format'](_0x6e70('0x50'),_0x40e7c6[_0x6e70('0x46')],agents[_0x40e7c6[_0x6e70('0x46')]][_0x6e70('0x9')]));agents[_0x40e7c6['origtransfereruniqueid']]['transfer']=!![];agents[_0x40e7c6[_0x6e70('0x46')]][_0x6e70('0x41')]='ATTENDED';agents[_0x40e7c6['origtransfereruniqueid']][_0x6e70('0x42')]=_0x40e7c6['secondtransfererexten'];agents[_0x40e7c6[_0x6e70('0x46')]][_0x6e70('0x44')]=_0x40e7c6[_0x6e70('0x48')];}if(_0x40e7c6[_0x6e70('0x51')]&&agents[_0x40e7c6[_0x6e70('0x51')]]){agents[_0x40e7c6[_0x6e70('0x51')]][_0x6e70('0x4c')]=0x1;transfers[_0x40e7c6[_0x6e70('0x51')]]=_['clone'](agents[_0x40e7c6[_0x6e70('0x51')]]);transfers[_0x40e7c6[_0x6e70('0x51')]][_0x6e70('0xb')]=agents[_0x40e7c6[_0x6e70('0x46')]][_0x6e70('0xb')];transfers[_0x40e7c6['transfertargetuniqueid']]['calleridname']=agents[_0x40e7c6['origtransfereruniqueid']][_0x6e70('0x4e')];transfers[_0x40e7c6[_0x6e70('0x51')]][_0x6e70('0x52')]=utils['now']();transfers[_0x40e7c6['transfertargetuniqueid']][_0x6e70('0x3b')]=utils[_0x6e70('0x1a')]();transfers[_0x40e7c6[_0x6e70('0x51')]][_0x6e70('0x2e')]=0x0;transfers[_0x40e7c6[_0x6e70('0x51')]][_0x6e70('0x4c')]=0x2;}}}catch(_0x5eb6f0){utils[_0x6e70('0x1c')](util[_0x6e70('0x4')](_0x6e70('0x45'),_0x40e7c6[_0x6e70('0x46')]),_0x5eb6f0);}};exports['hangup']=function(_0xce964b){try{utils['debug'](util['format'](_0x6e70('0x53'),_0xce964b[_0x6e70('0x6')]),_0xce964b);if(agents[_0xce964b[_0x6e70('0x6')]]&&agents[_0xce964b[_0x6e70('0x6')]][_0x6e70('0x24')]===_0x6e70('0x23')){if(_0xce964b['cause']==='21'){agents[_0xce964b[_0x6e70('0x6')]][_0x6e70('0x24')]=_0x6e70('0x54');agents[_0xce964b[_0x6e70('0x6')]][_0x6e70('0xd')]=_0x6e70('0x54');}utils[_0x6e70('0x3')](util[_0x6e70('0x4')](_0x6e70('0x55'),_0xce964b[_0x6e70('0x6')],agents[_0xce964b['uniqueid']][_0x6e70('0x9')],agents[_0xce964b[_0x6e70('0x6')]][_0x6e70('0x24')],agents[_0xce964b['uniqueid']]['lastevent']));writeDB(agents[_0xce964b[_0x6e70('0x6')]]);var _0x18ecf0=unanswered[_0x6e70('0x56')](_0xce964b[_0x6e70('0x6')]);if(_0x18ecf0>-0x1){unanswered[_0x6e70('0x57')](_0x18ecf0,0x1);}}if(transfers[_0xce964b['uniqueid']]){transfers[_0xce964b['uniqueid']][_0x6e70('0x12')]=!![];transfers[_0xce964b[_0x6e70('0x6')]]['agentcompleteAt']=utils[_0x6e70('0x1a')]();transfers[_0xce964b[_0x6e70('0x6')]][_0x6e70('0x26')]=utils[_0x6e70('0x3a')](transfers[_0xce964b[_0x6e70('0x6')]][_0x6e70('0x39')],transfers[_0xce964b[_0x6e70('0x6')]][_0x6e70('0x3b')]);transfers[_0xce964b[_0x6e70('0x6')]][_0x6e70('0x24')]=_0x6e70('0x58');transfers[_0xce964b[_0x6e70('0x6')]][_0x6e70('0xd')]=_0x6e70('0x3c');utils['info'](util['format'](_0x6e70('0x55'),_0xce964b['uniqueid'],transfers[_0xce964b[_0x6e70('0x6')]]['membername'],transfers[_0xce964b['uniqueid']][_0x6e70('0x24')],transfers[_0xce964b['uniqueid']]['lastevent']));writeDB(transfers[_0xce964b[_0x6e70('0x6')]],!![]);}if(agents[_0xce964b[_0x6e70('0x6')]]&&agents[_0xce964b[_0x6e70('0x6')]]['agentconnectAt']){agents[_0xce964b['uniqueid']]['agentcomplete']=!![];agents[_0xce964b[_0x6e70('0x6')]]['agentcompleteAt']=utils[_0x6e70('0x1a')]();agents[_0xce964b[_0x6e70('0x6')]][_0x6e70('0x26')]=utils[_0x6e70('0x3a')](agents[_0xce964b[_0x6e70('0x6')]][_0x6e70('0x39')],agents[_0xce964b[_0x6e70('0x6')]]['agentconnectAt']);agents[_0xce964b[_0x6e70('0x6')]][_0x6e70('0x24')]=agents[_0xce964b[_0x6e70('0x6')]]['transfer']?_0x6e70('0x40'):_0x6e70('0x58');agents[_0xce964b[_0x6e70('0x6')]][_0x6e70('0xd')]=_0x6e70('0x3c');utils[_0x6e70('0x3')](util[_0x6e70('0x4')](_0x6e70('0x55'),_0xce964b[_0x6e70('0x6')],agents[_0xce964b['uniqueid']][_0x6e70('0x9')],agents[_0xce964b[_0x6e70('0x6')]]['reason'],agents[_0xce964b[_0x6e70('0x6')]][_0x6e70('0xd')]));writeDB(agents[_0xce964b['uniqueid']]);}}catch(_0x596d71){utils[_0x6e70('0x1c')](util['format'](_0x6e70('0x53'),_0xce964b['uniqueid']),_0x596d71);}};
\ No newline at end of file
+var _0x3c81=['CreateVoiceAgentReport','destuniqueid','agentcalled','debug','[%s][agents][agentcalled]','agentcalledAt','called','connectedlinename','info','format','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','error','agentringnoanswer','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','now','reason','holdtime','talktime','push','queuecallerabandon','forIn','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','agentringnoanswerAt','abandoned','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','ringtime','connect','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','complete','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype','blind','transferexten','extension','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','origtransfererexten','transferuniqueid','transfereeuniqueid','clone','calleridname','agententerreason','secondtransfererlinkedid','isNil','ATTENDED','secondtransfererexten','transfertargetuniqueid','[%s][agents][hangup]','timeout','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','splice','agent','lodash','util','channel','queue','membername','interface','calleridnum','connectedlinenum','lastevent','getVoiceQueueByName','then','type','agentacw','agentcomplete','acw','acwtime','acwTimeout','request'];(function(_0x2a2865,_0x28c6c6){var _0x2052b2=function(_0xfc6e96){while(--_0xfc6e96){_0x2a2865['push'](_0x2a2865['shift']());}};_0x2052b2(++_0x28c6c6);}(_0x3c81,0x102));var _0x13c8=function(_0x5cb7a7,_0x5cd315){_0x5cb7a7=_0x5cb7a7-0x0;var _0x14beff=_0x3c81[_0x5cb7a7];return _0x14beff;};'use strict';var _=require(_0x13c8('0x0'));var util=require(_0x13c8('0x1'));var utils=require('./utils');var agents={};var transfers={};var unanswered=[];function writeDB(_0x252f26,_0x131d0b){utils['info'](util['format']('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x252f26['uniqueid'],_0x252f26[_0x13c8('0x2')],_0x252f26[_0x13c8('0x3')],_0x252f26[_0x13c8('0x4')],_0x252f26[_0x13c8('0x5')],_0x252f26[_0x13c8('0x6')],_0x252f26[_0x13c8('0x7')],_0x252f26[_0x13c8('0x8')]));if(_0x252f26['queue']){utils[_0x13c8('0x9')](_0x252f26['queue'])[_0x13c8('0xa')](function(_0x296463){if(_0x296463){_0x252f26[_0x13c8('0xb')]=_0x296463[_0x13c8('0xb')];_0x252f26[_0x13c8('0xc')]=_0x252f26[_0x13c8('0xd')]?_0x296463[_0x13c8('0xe')]:![];_0x252f26[_0x13c8('0xf')]=_0x252f26[_0x13c8('0xc')]?_0x296463[_0x13c8('0x10')]:0x0;}utils[_0x13c8('0x11')](_0x13c8('0x12'),_0x252f26);});}else{utils[_0x13c8('0x11')](_0x13c8('0x12'),_0x252f26);}if(_0x131d0b){delete transfers[_0x252f26['uniqueid']];}else{delete agents[_0x252f26[_0x13c8('0x13')]];}}exports[_0x13c8('0x14')]=function(_0x2304b5){try{utils[_0x13c8('0x15')](util['format'](_0x13c8('0x16'),_0x2304b5['uniqueid']),_0x2304b5);agents[_0x2304b5['destuniqueid']]=_0x2304b5;agents[_0x2304b5['destuniqueid']][_0x13c8('0x17')]=utils['now']();agents[_0x2304b5[_0x13c8('0x13')]][_0x13c8('0x8')]=_0x13c8('0x18');agents[_0x2304b5[_0x13c8('0x13')]]['connectedlinenum']=null;agents[_0x2304b5[_0x13c8('0x13')]][_0x13c8('0x19')]=null;utils[_0x13c8('0x1a')](util[_0x13c8('0x1b')](_0x13c8('0x1c'),_0x2304b5[_0x13c8('0x1d')],agents[_0x2304b5[_0x13c8('0x13')]][_0x13c8('0x4')],_0x2304b5[_0x13c8('0x13')]));}catch(_0x31d122){utils[_0x13c8('0x1e')](util['format'](_0x13c8('0x16'),_0x2304b5[_0x13c8('0x1d')]),_0x31d122);}};exports[_0x13c8('0x1f')]=function(_0x313ea3){try{if(!_['isNil'](agents[_0x313ea3[_0x13c8('0x13')]])){utils[_0x13c8('0x15')](util[_0x13c8('0x1b')](_0x13c8('0x20'),_0x313ea3[_0x13c8('0x1d')]),_0x313ea3);utils[_0x13c8('0x1a')](util['format'](_0x13c8('0x21'),_0x313ea3[_0x13c8('0x1d')],agents[_0x313ea3[_0x13c8('0x13')]][_0x13c8('0x4')],_0x313ea3['destuniqueid']));agents[_0x313ea3[_0x13c8('0x13')]][_0x13c8('0x1f')]=!![];agents[_0x313ea3['destuniqueid']]['agentringnoanswerAt']=utils[_0x13c8('0x22')]();agents[_0x313ea3[_0x13c8('0x13')]]['lastevent']='timeout';agents[_0x313ea3[_0x13c8('0x13')]][_0x13c8('0x23')]='timeout';agents[_0x313ea3['destuniqueid']][_0x13c8('0x24')]=_0x313ea3['ringtime']?parseInt(_0x313ea3['ringtime'])/0x3e8:0x0;agents[_0x313ea3[_0x13c8('0x13')]][_0x13c8('0x25')]=0x0;unanswered[_0x13c8('0x26')](_0x313ea3['destuniqueid']);}}catch(_0x5ef2f7){utils[_0x13c8('0x1e')](util[_0x13c8('0x1b')](_0x13c8('0x20'),_0x313ea3[_0x13c8('0x1d')]),_0x5ef2f7);}};exports[_0x13c8('0x27')]=function(_0x220d40){try{_[_0x13c8('0x28')](agents,function(_0x4a1b9c,_0x109cb8){if(_0x4a1b9c[_0x13c8('0x1d')]==_0x220d40['uniqueid']&&!_['includes'](unanswered,_0x4a1b9c[_0x13c8('0x13')])){utils[_0x13c8('0x15')](util['format'](_0x13c8('0x29'),_0x220d40[_0x13c8('0x1d')]),_0x220d40);utils['info'](util[_0x13c8('0x1b')](_0x13c8('0x2a'),_0x220d40[_0x13c8('0x1d')],_0x4a1b9c[_0x13c8('0x4')],_0x4a1b9c[_0x13c8('0x13')]));_0x4a1b9c[_0x13c8('0x1f')]=!![];_0x4a1b9c[_0x13c8('0x2b')]=utils[_0x13c8('0x22')]();_0x4a1b9c['lastevent']='abandoned';_0x4a1b9c[_0x13c8('0x23')]=_0x13c8('0x2c');_0x4a1b9c['holdtime']=_0x220d40[_0x13c8('0x24')];_0x4a1b9c['talktime']=0x0;writeDB(_0x4a1b9c);}});}catch(_0x1fdf7d){utils['error'](util[_0x13c8('0x1b')](_0x13c8('0x29'),_0x220d40[_0x13c8('0x1d')]),_0x1fdf7d);}};exports[_0x13c8('0x2d')]=function(_0x2039e7){try{if(agents[_0x2039e7[_0x13c8('0x13')]]){utils[_0x13c8('0x15')](util['format'](_0x13c8('0x2e'),_0x2039e7[_0x13c8('0x1d')]),_0x2039e7);utils['info'](util[_0x13c8('0x1b')](_0x13c8('0x2f'),_0x2039e7[_0x13c8('0x1d')],agents[_0x2039e7['destuniqueid']]['membername'],_0x2039e7['destuniqueid']));agents[_0x2039e7[_0x13c8('0x13')]][_0x13c8('0x30')]=utils[_0x13c8('0x22')]();agents[_0x2039e7[_0x13c8('0x13')]][_0x13c8('0x7')]=_0x2039e7[_0x13c8('0x7')];agents[_0x2039e7[_0x13c8('0x13')]][_0x13c8('0x19')]=_0x2039e7[_0x13c8('0x19')];agents[_0x2039e7['destuniqueid']]['holdtime']=_0x2039e7[_0x13c8('0x31')];agents[_0x2039e7[_0x13c8('0x13')]][_0x13c8('0x8')]=_0x13c8('0x32');_['forIn'](agents,function(_0x35e1e7,_0x4bd627){if(_0x35e1e7[_0x13c8('0x13')]!=_0x2039e7[_0x13c8('0x13')]&&_0x35e1e7[_0x13c8('0x1d')]==_0x2039e7[_0x13c8('0x1d')]){_0x35e1e7[_0x13c8('0x25')]=0x0;_0x35e1e7[_0x13c8('0x24')]=_0x2039e7[_0x13c8('0x31')];_0x35e1e7[_0x13c8('0x1f')]=!![];_0x35e1e7[_0x13c8('0x2b')]=utils[_0x13c8('0x22')]();_0x35e1e7[_0x13c8('0x8')]=_0x13c8('0x33');_0x35e1e7[_0x13c8('0x23')]=_0x13c8('0x33');_0x35e1e7[_0x13c8('0x34')]=_0x2039e7[_0x13c8('0x13')];_0x35e1e7[_0x13c8('0x35')]=_0x2039e7[_0x13c8('0x4')];writeDB(_0x35e1e7);}});}}catch(_0xc5eb86){utils[_0x13c8('0x1e')](util[_0x13c8('0x1b')](_0x13c8('0x2e'),_0x2039e7[_0x13c8('0x1d')]),_0xc5eb86);}};exports[_0x13c8('0xd')]=function(_0x44ee66){try{if(!_['isNil'](agents[_0x44ee66[_0x13c8('0x13')]])){utils[_0x13c8('0x15')](util[_0x13c8('0x1b')](_0x13c8('0x36'),_0x44ee66[_0x13c8('0x1d')]),_0x44ee66);utils['info'](util['format'](_0x13c8('0x37'),_0x44ee66[_0x13c8('0x1d')],agents[_0x44ee66[_0x13c8('0x13')]]['membername'],_0x44ee66['destuniqueid']));agents[_0x44ee66['destuniqueid']][_0x13c8('0xd')]=!![];agents[_0x44ee66['destuniqueid']][_0x13c8('0x38')]=utils['now']();agents[_0x44ee66[_0x13c8('0x13')]][_0x13c8('0x25')]=utils[_0x13c8('0x39')](agents[_0x44ee66[_0x13c8('0x13')]][_0x13c8('0x38')],agents[_0x44ee66[_0x13c8('0x13')]]['agentconnectAt']);agents[_0x44ee66[_0x13c8('0x13')]][_0x13c8('0x23')]=_0x44ee66['reason'];agents[_0x44ee66[_0x13c8('0x13')]][_0x13c8('0x8')]=_0x13c8('0x3a');writeDB(agents[_0x44ee66[_0x13c8('0x13')]]);}}catch(_0x38486a){utils['error'](util[_0x13c8('0x1b')](_0x13c8('0x36'),_0x44ee66[_0x13c8('0x1d')]),_0x38486a);}};exports[_0x13c8('0x3b')]=function(_0x185d18){try{if(!_['isNil'](agents[_0x185d18[_0x13c8('0x3c')]])){utils[_0x13c8('0x15')](util[_0x13c8('0x1b')](_0x13c8('0x3d'),_0x185d18[_0x13c8('0x1d')]),_0x185d18);utils[_0x13c8('0x1a')](util[_0x13c8('0x1b')](_0x13c8('0x3e'),_0x185d18[_0x13c8('0x1d')],agents[_0x185d18[_0x13c8('0x3c')]][_0x13c8('0x4')],agents[_0x185d18['transfereruniqueid']][_0x13c8('0x1d')]));agents[_0x185d18[_0x13c8('0x3c')]][_0x13c8('0x3f')]=!![];agents[_0x185d18[_0x13c8('0x3c')]][_0x13c8('0x40')]=_0x13c8('0x41');agents[_0x185d18['transfereruniqueid']][_0x13c8('0x42')]=_0x185d18[_0x13c8('0x43')];agents[_0x185d18[_0x13c8('0x3c')]]['transferuniqueid']=agents[_0x185d18['transfereruniqueid']][_0x13c8('0x1d')];}}catch(_0x14a738){utils['error'](util[_0x13c8('0x1b')](_0x13c8('0x3d'),_0x185d18['uniqueid']),_0x14a738);}};exports[_0x13c8('0x44')]=function(_0x554792){try{utils[_0x13c8('0x15')](util[_0x13c8('0x1b')](_0x13c8('0x45'),_0x554792['origtransfereruniqueid']),_0x554792);if(_0x554792[_0x13c8('0x46')]==_0x554792[_0x13c8('0x47')]){if(!_['isNil'](agents[_0x554792[_0x13c8('0x48')]])){utils['info'](util[_0x13c8('0x1b')](_0x13c8('0x49'),_0x554792[_0x13c8('0x46')],agents[_0x554792[_0x13c8('0x48')]][_0x13c8('0x4')]));agents[_0x554792['secondtransfereruniqueid']][_0x13c8('0x3f')]=!![];agents[_0x554792['secondtransfereruniqueid']]['transfertype']='ATTENDED';agents[_0x554792['secondtransfereruniqueid']]['transferexten']=_0x554792[_0x13c8('0x4a')];agents[_0x554792[_0x13c8('0x48')]][_0x13c8('0x4b')]=_0x554792[_0x13c8('0x46')];}if(_0x554792[_0x13c8('0x4c')]&&agents[_0x554792[_0x13c8('0x4c')]]){agents[_0x554792[_0x13c8('0x4c')]]['agententerreason']=0x1;transfers[_0x554792['transfereeuniqueid']]=_[_0x13c8('0x4d')](agents[_0x554792[_0x13c8('0x4c')]]);transfers[_0x554792[_0x13c8('0x4c')]][_0x13c8('0x6')]=agents[_0x554792[_0x13c8('0x48')]][_0x13c8('0x6')];transfers[_0x554792[_0x13c8('0x4c')]][_0x13c8('0x4e')]=agents[_0x554792['secondtransfereruniqueid']][_0x13c8('0x4e')];transfers[_0x554792[_0x13c8('0x4c')]]['agentcalledAt']=utils[_0x13c8('0x22')]();transfers[_0x554792[_0x13c8('0x4c')]][_0x13c8('0x30')]=utils[_0x13c8('0x22')]();transfers[_0x554792[_0x13c8('0x4c')]][_0x13c8('0x24')]=0x0;transfers[_0x554792[_0x13c8('0x4c')]][_0x13c8('0x4f')]=0x2;}}else if(_0x554792[_0x13c8('0x48')]==_0x554792[_0x13c8('0x50')]){if(!_[_0x13c8('0x51')](agents[_0x554792[_0x13c8('0x46')]])){utils[_0x13c8('0x1a')](util[_0x13c8('0x1b')](_0x13c8('0x49'),_0x554792[_0x13c8('0x46')],agents[_0x554792['origtransfereruniqueid']][_0x13c8('0x4')]));agents[_0x554792['origtransfereruniqueid']][_0x13c8('0x3f')]=!![];agents[_0x554792[_0x13c8('0x46')]]['transfertype']=_0x13c8('0x52');agents[_0x554792[_0x13c8('0x46')]]['transferexten']=_0x554792[_0x13c8('0x53')];agents[_0x554792[_0x13c8('0x46')]][_0x13c8('0x4b')]=_0x554792[_0x13c8('0x48')];}if(_0x554792[_0x13c8('0x54')]&&agents[_0x554792[_0x13c8('0x54')]]){agents[_0x554792[_0x13c8('0x54')]][_0x13c8('0x4f')]=0x1;transfers[_0x554792[_0x13c8('0x54')]]=_[_0x13c8('0x4d')](agents[_0x554792[_0x13c8('0x54')]]);transfers[_0x554792['transfertargetuniqueid']][_0x13c8('0x6')]=agents[_0x554792[_0x13c8('0x46')]][_0x13c8('0x6')];transfers[_0x554792[_0x13c8('0x54')]][_0x13c8('0x4e')]=agents[_0x554792[_0x13c8('0x46')]]['calleridname'];transfers[_0x554792[_0x13c8('0x54')]][_0x13c8('0x17')]=utils[_0x13c8('0x22')]();transfers[_0x554792['transfertargetuniqueid']][_0x13c8('0x30')]=utils[_0x13c8('0x22')]();transfers[_0x554792[_0x13c8('0x54')]][_0x13c8('0x24')]=0x0;transfers[_0x554792[_0x13c8('0x54')]][_0x13c8('0x4f')]=0x2;}}}catch(_0x55e5ba){utils[_0x13c8('0x1e')](util[_0x13c8('0x1b')](_0x13c8('0x45'),_0x554792[_0x13c8('0x46')]),_0x55e5ba);}};exports['hangup']=function(_0x16b409){try{utils[_0x13c8('0x15')](util[_0x13c8('0x1b')](_0x13c8('0x55'),_0x16b409[_0x13c8('0x1d')]),_0x16b409);if(agents[_0x16b409[_0x13c8('0x1d')]]&&agents[_0x16b409[_0x13c8('0x1d')]]['reason']===_0x13c8('0x56')){if(_0x16b409[_0x13c8('0x57')]==='21'){agents[_0x16b409[_0x13c8('0x1d')]]['reason']=_0x13c8('0x58');agents[_0x16b409[_0x13c8('0x1d')]]['lastevent']='rejected';}utils[_0x13c8('0x1a')](util['format'](_0x13c8('0x59'),_0x16b409['uniqueid'],agents[_0x16b409[_0x13c8('0x1d')]][_0x13c8('0x4')],agents[_0x16b409[_0x13c8('0x1d')]][_0x13c8('0x23')],agents[_0x16b409[_0x13c8('0x1d')]]['lastevent']));writeDB(agents[_0x16b409[_0x13c8('0x1d')]]);var _0x2d8dfe=unanswered['indexOf'](_0x16b409[_0x13c8('0x1d')]);if(_0x2d8dfe>-0x1){unanswered[_0x13c8('0x5a')](_0x2d8dfe,0x1);}}if(transfers[_0x16b409[_0x13c8('0x1d')]]){transfers[_0x16b409[_0x13c8('0x1d')]][_0x13c8('0xd')]=!![];transfers[_0x16b409[_0x13c8('0x1d')]][_0x13c8('0x38')]=utils[_0x13c8('0x22')]();transfers[_0x16b409[_0x13c8('0x1d')]][_0x13c8('0x25')]=utils['diffTime'](transfers[_0x16b409[_0x13c8('0x1d')]][_0x13c8('0x38')],transfers[_0x16b409['uniqueid']]['agentconnectAt']);transfers[_0x16b409[_0x13c8('0x1d')]][_0x13c8('0x23')]=_0x13c8('0x5b');transfers[_0x16b409[_0x13c8('0x1d')]][_0x13c8('0x8')]=_0x13c8('0x3a');utils['info'](util[_0x13c8('0x1b')](_0x13c8('0x59'),_0x16b409[_0x13c8('0x1d')],transfers[_0x16b409[_0x13c8('0x1d')]][_0x13c8('0x4')],transfers[_0x16b409['uniqueid']][_0x13c8('0x23')],transfers[_0x16b409[_0x13c8('0x1d')]]['lastevent']));writeDB(transfers[_0x16b409[_0x13c8('0x1d')]],!![]);}if(agents[_0x16b409[_0x13c8('0x1d')]]&&agents[_0x16b409['uniqueid']][_0x13c8('0x30')]){agents[_0x16b409['uniqueid']][_0x13c8('0xd')]=!![];agents[_0x16b409['uniqueid']][_0x13c8('0x38')]=utils[_0x13c8('0x22')]();agents[_0x16b409[_0x13c8('0x1d')]]['talktime']=utils[_0x13c8('0x39')](agents[_0x16b409['uniqueid']]['agentcompleteAt'],agents[_0x16b409[_0x13c8('0x1d')]][_0x13c8('0x30')]);agents[_0x16b409[_0x13c8('0x1d')]][_0x13c8('0x23')]=agents[_0x16b409['uniqueid']]['transfer']?_0x13c8('0x3f'):'agent';agents[_0x16b409['uniqueid']][_0x13c8('0x8')]=_0x13c8('0x3a');utils[_0x13c8('0x1a')](util[_0x13c8('0x1b')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x16b409[_0x13c8('0x1d')],agents[_0x16b409['uniqueid']]['membername'],agents[_0x16b409[_0x13c8('0x1d')]][_0x13c8('0x23')],agents[_0x16b409[_0x13c8('0x1d')]][_0x13c8('0x8')]));writeDB(agents[_0x16b409[_0x13c8('0x1d')]]);}}catch(_0x551563){utils[_0x13c8('0x1e')](util['format'](_0x13c8('0x55'),_0x16b409['uniqueid']),_0x551563);}};
\ No newline at end of file
index 512b014..4beef10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d2a=['secondtransfererchannel','userfield','transfertargetchannel','_attended','[%s][calls][musiconholdstart]','musiconholdstop','[%s][calls][musiconholdstop]','musiconholdstartAt','mohtime','varset','[%s][calls][varset]','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','source','variable','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','value','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','lastapplication','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','newexten','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','includes','execif','lastdata','[%s][calls][newexten]','lodash','./transfers.controller','NO\x20ANSWER','FAILED','BUSY','blinds','uniqueid','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','interface','calleridnum','connectedlinenum','lastevent','getUserByInternal','accountcode','request','CreateVoiceCallReport','recording','newchannel','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','info','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','DOCUMENTATION','error','newstate','debug','[%s][calls][newstate]\x20context:%s\x20channel:%s','isNil','systemanswertime','now','channelstate','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','toNumber','ANSWERED','hangup','[%s][calls][hangup]','callerid','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','duration','diffTime','starttime','billableseconds','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x7d2a,0x171));var _0xa7d2=function(_0x5da343,_0x1cadec){_0x5da343=_0x5da343-0x0;var _0x5a5f7b=_0x7d2a[_0x5da343];return _0x5a5f7b;};'use strict';var _=require(_0xa7d2('0x0'));var util=require('util');var utils=require('./utils');var transfers=require(_0xa7d2('0x1'));var dispositions=[_0xa7d2('0x2'),'FAILED',_0xa7d2('0x3'),_0xa7d2('0x2'),_0xa7d2('0x2'),'NO\x20ANSWER','ANSWERED',_0xa7d2('0x4'),_0xa7d2('0x3'),_0xa7d2('0x3'),_0xa7d2('0x3')];var channels={};function writeDB(_0x340b7a){var _0x5ba870;if(transfers[_0xa7d2('0x5')][_0x340b7a[_0xa7d2('0x6')]]){_0x5ba870=_0x340b7a[_0xa7d2('0x6')];_0x340b7a[_0xa7d2('0x6')]=transfers[_0xa7d2('0x5')][_0x340b7a['uniqueid']]['transfereeuniqueid'];}utils['info'](util[_0xa7d2('0x7')](_0xa7d2('0x8'),_0x340b7a[_0xa7d2('0x6')],_0x340b7a[_0xa7d2('0x9')],_0x340b7a['queue'],_0x340b7a['membername'],_0x340b7a[_0xa7d2('0xa')],_0x340b7a[_0xa7d2('0xb')],_0x340b7a[_0xa7d2('0xc')],_0x340b7a[_0xa7d2('0xd')]));if(_0x340b7a['accountcode']){utils[_0xa7d2('0xe')](_0x340b7a[_0xa7d2('0xf')])['then'](function(_0x38eb8a){if(_0x38eb8a){_0x340b7a['UserId']=_0x38eb8a['id'];}utils[_0xa7d2('0x10')](_0xa7d2('0x11'),_0x340b7a);});}else{utils[_0xa7d2('0x10')](_0xa7d2('0x11'),_0x340b7a);}if(channels[_0x340b7a['uniqueid']]){delete channels[_0x340b7a['uniqueid']];}else if(_0x5ba870&&channels[_0x5ba870]){if(!transfers[_0xa7d2('0x5')][_0x5ba870][_0xa7d2('0x12')])delete transfers[_0xa7d2('0x5')][_0x5ba870];delete channels[_0x5ba870];}}exports[_0xa7d2('0x13')]=function(_0x8b971){try{utils['debug'](util['format'](_0xa7d2('0x14'),_0x8b971[_0xa7d2('0x6')]),_0x8b971);if(_0x8b971[_0xa7d2('0x6')]==_0x8b971[_0xa7d2('0x15')]&&_0x8b971['channel']!=_0xa7d2('0x16')){utils[_0xa7d2('0x17')](util['format'](_0xa7d2('0x18'),_0x8b971[_0xa7d2('0x6')],_0x8b971[_0xa7d2('0x19')],_0x8b971['exten']));channels[_0x8b971['uniqueid']]={'uniqueid':_0x8b971['uniqueid'],'accountcode':_0x8b971[_0xa7d2('0xf')],'source':_0x8b971[_0xa7d2('0xb')],'destination':_0x8b971[_0xa7d2('0x1a')],'destinationcontext':_0x8b971['context'],'channel':_0x8b971['channel'],'starttime':utils['now'](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0xa7d2('0x2'),'amaflags':_0xa7d2('0x1b')};}}catch(_0x51be92){utils[_0xa7d2('0x1c')](util['format'](_0xa7d2('0x14'),_0x8b971[_0xa7d2('0x6')]),_0x51be92);}};exports[_0xa7d2('0x1d')]=function(_0x3ab616){try{utils[_0xa7d2('0x1e')](util[_0xa7d2('0x7')]('[%s][calls][newstate]',_0x3ab616[_0xa7d2('0x6')]),_0x3ab616);if(!_['isNil'](channels[_0x3ab616['uniqueid']])&&_0x3ab616['channelstate']==0x6){utils['info'](util['format'](_0xa7d2('0x1f'),_0x3ab616[_0xa7d2('0x6')],_0x3ab616[_0xa7d2('0x19')],_0x3ab616['channel']));if(_[_0xa7d2('0x20')](channels[_0x3ab616[_0xa7d2('0x6')]][_0xa7d2('0x21')])){channels[_0x3ab616[_0xa7d2('0x6')]][_0xa7d2('0x21')]=utils[_0xa7d2('0x22')]();}}else if(!_['isNil'](channels[_0x3ab616[_0xa7d2('0x15')]])&&_0x3ab616[_0xa7d2('0x23')]==0x6&&_0x3ab616['context']!=_0xa7d2('0x24')){utils[_0xa7d2('0x17')](util[_0xa7d2('0x7')](_0xa7d2('0x25'),_0x3ab616[_0xa7d2('0x6')],_0x3ab616[_0xa7d2('0x15')],_0x3ab616[_0xa7d2('0x19')],_0x3ab616[_0xa7d2('0x9')]));channels[_0x3ab616[_0xa7d2('0x15')]]['accountcode']=_0x3ab616[_0xa7d2('0xf')];channels[_0x3ab616['linkedid']][_0xa7d2('0x26')]=_0x3ab616[_0xa7d2('0x9')];if(_[_0xa7d2('0x20')](channels[_0x3ab616[_0xa7d2('0x15')]][_0xa7d2('0x27')])){channels[_0x3ab616['linkedid']][_0xa7d2('0x27')]=utils[_0xa7d2('0x22')]();}channels[_0x3ab616[_0xa7d2('0x15')]][_0xa7d2('0x28')]=dispositions[_[_0xa7d2('0x29')](_0x3ab616[_0xa7d2('0x23')])]||_0xa7d2('0x2a');}}catch(_0x4627c9){utils[_0xa7d2('0x1c')](util[_0xa7d2('0x7')]('[%s][calls][newstate]',_0x3ab616[_0xa7d2('0x6')]),_0x4627c9);}};exports[_0xa7d2('0x2b')]=function(_0x46979c){try{if(!_[_0xa7d2('0x20')](channels[_0x46979c[_0xa7d2('0x6')]])){utils[_0xa7d2('0x1e')](util[_0xa7d2('0x7')](_0xa7d2('0x2c'),_0x46979c['uniqueid']),_0x46979c);if(_[_0xa7d2('0x20')](channels[_0x46979c[_0xa7d2('0x6')]]['callerid'])){channels[_0x46979c[_0xa7d2('0x6')]][_0xa7d2('0x2d')]=_0x46979c['calleridname']+'\x20<'+_0x46979c['calleridnum']+'>';}utils[_0xa7d2('0x17')](util[_0xa7d2('0x7')](_0xa7d2('0x2e'),_0x46979c[_0xa7d2('0x6')],channels[_0x46979c['uniqueid']][_0xa7d2('0x2d')],_0x46979c[_0xa7d2('0x2f')]));channels[_0x46979c[_0xa7d2('0x6')]][_0xa7d2('0x30')]=utils[_0xa7d2('0x22')]();channels[_0x46979c[_0xa7d2('0x6')]][_0xa7d2('0x31')]=utils[_0xa7d2('0x32')](channels[_0x46979c[_0xa7d2('0x6')]][_0xa7d2('0x30')],channels[_0x46979c[_0xa7d2('0x6')]][_0xa7d2('0x33')]);channels[_0x46979c['uniqueid']][_0xa7d2('0x34')]=channels[_0x46979c['uniqueid']][_0xa7d2('0x27')]?utils[_0xa7d2('0x32')](channels[_0x46979c[_0xa7d2('0x6')]][_0xa7d2('0x30')],channels[_0x46979c[_0xa7d2('0x6')]]['answertime']):0x0;writeDB(channels[_0x46979c[_0xa7d2('0x6')]]);}}catch(_0x3d321f){utils[_0xa7d2('0x1c')](util['format'](_0xa7d2('0x2c'),_0x46979c[_0xa7d2('0x6')]),_0x3d321f);}};exports[_0xa7d2('0x35')]=function(_0x59224a){try{if(!_[_0xa7d2('0x20')](channels[_0x59224a[_0xa7d2('0x36')]])){utils[_0xa7d2('0x1e')](util['format'](_0xa7d2('0x37'),_0x59224a[_0xa7d2('0x38')]),_0x59224a);if(channels[_0x59224a[_0xa7d2('0x36')]]['channel']==_0x59224a[_0xa7d2('0x39')]){utils['info'](util[_0xa7d2('0x7')](_0xa7d2('0x3a'),_0x59224a[_0xa7d2('0x38')],_0x59224a[_0xa7d2('0x36')],_0x59224a[_0xa7d2('0x3b')]));channels[_0x59224a[_0xa7d2('0x36')]]['destinationchannel']=_0x59224a['secondtransfererchannel'];channels[_0x59224a[_0xa7d2('0x36')]][_0xa7d2('0x3c')]='_attended';}else if(channels[_0x59224a[_0xa7d2('0x36')]][_0xa7d2('0x9')]=_0x59224a[_0xa7d2('0x3d')]){utils[_0xa7d2('0x17')](util[_0xa7d2('0x7')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x59224a[_0xa7d2('0x38')],_0x59224a[_0xa7d2('0x36')],_0x59224a['origtransfererchannel']));channels[_0x59224a[_0xa7d2('0x36')]][_0xa7d2('0x26')]=_0x59224a['origtransfererchannel'];channels[_0x59224a[_0xa7d2('0x36')]][_0xa7d2('0x3c')]=_0xa7d2('0x3e');}}}catch(_0x1d6f15){utils[_0xa7d2('0x1c')](util[_0xa7d2('0x7')](_0xa7d2('0x37'),_0x59224a[_0xa7d2('0x38')]),_0x1d6f15);}};exports['musiconholdstart']=function(_0x571197){try{if(!_[_0xa7d2('0x20')](channels[_0x571197[_0xa7d2('0x6')]])){utils[_0xa7d2('0x1e')](util['format'](_0xa7d2('0x3f'),_0x571197[_0xa7d2('0x6')]),_0x571197);channels[_0x571197[_0xa7d2('0x6')]]['musiconholdstartAt']=utils['now']();utils['info'](util[_0xa7d2('0x7')]('[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s',_0x571197[_0xa7d2('0x6')],channels[_0x571197[_0xa7d2('0x6')]]['musiconholdstartAt']));}}catch(_0x42d62e){utils['error'](util[_0xa7d2('0x7')](_0xa7d2('0x3f'),_0x571197[_0xa7d2('0x6')]),_0x42d62e);}};exports[_0xa7d2('0x40')]=function(_0x328b28){try{if(!_[_0xa7d2('0x20')](channels[_0x328b28['uniqueid']])){utils[_0xa7d2('0x1e')](util[_0xa7d2('0x7')](_0xa7d2('0x41'),_0x328b28[_0xa7d2('0x6')]),_0x328b28);if(!_[_0xa7d2('0x20')](channels[_0x328b28[_0xa7d2('0x6')]][_0xa7d2('0x42')])){channels[_0x328b28[_0xa7d2('0x6')]]['mohtime']+=utils['diffTime'](utils[_0xa7d2('0x22')](),channels[_0x328b28[_0xa7d2('0x6')]][_0xa7d2('0x42')]);utils[_0xa7d2('0x17')](util[_0xa7d2('0x7')]('[%s][calls][musiconholdstop]\x20mohtime:%s',_0x328b28['uniqueid'],channels[_0x328b28[_0xa7d2('0x6')]][_0xa7d2('0x43')]));delete channels[_0x328b28[_0xa7d2('0x6')]][_0xa7d2('0x42')];}}}catch(_0x4f70e4){utils[_0xa7d2('0x1c')](util[_0xa7d2('0x7')](_0xa7d2('0x41'),_0x328b28[_0xa7d2('0x6')]),_0x4f70e4);}};exports[_0xa7d2('0x44')]=function(_0x45981a){try{if(!_[_0xa7d2('0x20')](channels[_0x45981a[_0xa7d2('0x6')]])){utils[_0xa7d2('0x1e')](util[_0xa7d2('0x7')](_0xa7d2('0x45'),_0x45981a[_0xa7d2('0x6')]),_0x45981a);if(!_[_0xa7d2('0x20')](_0x45981a['variable']['xmd-originatecalleridnum'])){utils[_0xa7d2('0x17')](util[_0xa7d2('0x7')](_0xa7d2('0x46'),_0x45981a[_0xa7d2('0x6')],_0x45981a['value']));channels[_0x45981a[_0xa7d2('0x6')]][_0xa7d2('0x47')]=_0x45981a['value'];}if(!_['isNil'](_0x45981a[_0xa7d2('0x48')][_0xa7d2('0x49')])){utils['info'](util['format'](_0xa7d2('0x4a'),_0x45981a[_0xa7d2('0x6')],_0x45981a[_0xa7d2('0x4b')]));channels[_0x45981a[_0xa7d2('0x6')]][_0xa7d2('0x4c')]=_0x45981a['value'];channels[_0x45981a[_0xa7d2('0x6')]][_0xa7d2('0x2d')]='\x22'+_0x45981a[_0xa7d2('0x4b')]+_0xa7d2('0x4d')+_0x45981a['value']+'>';}if(!_[_0xa7d2('0x20')](_0x45981a['variable'][_0xa7d2('0x4e')])||!_['isNil'](_0x45981a['variable'][_0xa7d2('0x4f')])){utils[_0xa7d2('0x17')](util['format']('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x45981a[_0xa7d2('0x6')],!_[_0xa7d2('0x20')](_0x45981a[_0xa7d2('0x48')]['xmd-callerid-preview'])?_0xa7d2('0x4e'):_0xa7d2('0x4f'),_0x45981a[_0xa7d2('0x4b')]));channels[_0x45981a[_0xa7d2('0x6')]][_0xa7d2('0x2d')]=_0x45981a[_0xa7d2('0x4b')];}if(!_['isNil'](_0x45981a[_0xa7d2('0x48')]['xmd-queue'])||!_[_0xa7d2('0x20')](_0x45981a[_0xa7d2('0x48')]['xmcs-queue'])){utils[_0xa7d2('0x17')](util[_0xa7d2('0x7')](_0xa7d2('0x50'),_0x45981a[_0xa7d2('0x6')],!_[_0xa7d2('0x20')](_0x45981a[_0xa7d2('0x48')]['xmd-queue'])?_0xa7d2('0x51'):_0xa7d2('0x52'),_0x45981a[_0xa7d2('0x4b')]));channels[_0x45981a[_0xa7d2('0x6')]][_0xa7d2('0x53')]='Queue';channels[_0x45981a[_0xa7d2('0x6')]]['lastdata']=_0x45981a['value'];channels[_0x45981a[_0xa7d2('0x6')]]['queue']=!![];}if(!_['isNil'](_0x45981a[_0xa7d2('0x48')]['xmd-contactid'])){utils[_0xa7d2('0x17')](util[_0xa7d2('0x7')]('[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s',_0x45981a['uniqueid'],_0x45981a[_0xa7d2('0x4b')]));channels[_0x45981a[_0xa7d2('0x6')]][_0xa7d2('0x54')]=_0x45981a[_0xa7d2('0x4b')];}if(!_[_0xa7d2('0x20')](_0x45981a['variable'][_0xa7d2('0x55')])){utils[_0xa7d2('0x17')](util['format'](_0xa7d2('0x56'),_0x45981a['uniqueid'],_0x45981a['value']));channels[_0x45981a['uniqueid']][_0xa7d2('0x57')]=_0x45981a['value'];}if(!_[_0xa7d2('0x20')](_0x45981a[_0xa7d2('0x48')][_0xa7d2('0x58')])){utils[_0xa7d2('0x17')](util['format']('[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s',_0x45981a['uniqueid'],_0x45981a['value']));channels[_0x45981a[_0xa7d2('0x6')]][_0xa7d2('0x59')]=_0x45981a['value'];}if(!_[_0xa7d2('0x20')](_0x45981a[_0xa7d2('0x48')][_0xa7d2('0x5a')])){utils[_0xa7d2('0x17')](util[_0xa7d2('0x7')](_0xa7d2('0x5b'),_0x45981a[_0xa7d2('0x6')],_0x45981a[_0xa7d2('0x4b')]));channels[_0x45981a[_0xa7d2('0x6')]][_0xa7d2('0x5a')]=_0x45981a[_0xa7d2('0x4b')];}}}catch(_0x23cd58){utils[_0xa7d2('0x1c')](util[_0xa7d2('0x7')](_0xa7d2('0x45'),_0x45981a[_0xa7d2('0x6')]),_0x23cd58);}};exports[_0xa7d2('0x5c')]=function(_0x45e966){try{if(!_[_0xa7d2('0x20')](channels[_0x45e966[_0xa7d2('0x6')]])){utils[_0xa7d2('0x1e')](util['format']('[%s][calls][newexten]',_0x45e966[_0xa7d2('0x6')]),_0x45e966);utils[_0xa7d2('0x17')](util[_0xa7d2('0x7')](_0xa7d2('0x5d'),_0x45e966[_0xa7d2('0x6')],_0x45e966[_0xa7d2('0x5e')],_0x45e966[_0xa7d2('0x5f')]));if(_0x45e966['application'][_0xa7d2('0x60')]()==_0xa7d2('0x61')&&_[_0xa7d2('0x62')](_0x45e966[_0xa7d2('0x5f')][_0xa7d2('0x60')](),_0xa7d2('0x63'))){var _0x27da3a=_0x45e966[_0xa7d2('0x5f')][_0xa7d2('0x64')]('=');var _0x53d191=_0x27da3a[0x0][_0xa7d2('0x65')](_0x27da3a[0x0][_0xa7d2('0x66')]('(')+0x1,_0x27da3a[0x0][_0xa7d2('0x66')](')'));var _0x27bc11=_0x27da3a[0x1];channels[_0x45e966[_0xa7d2('0x6')]][_0x53d191]=_0x27bc11;}if(!_[_0xa7d2('0x67')]([_0xa7d2('0x2b'),'noop',_0xa7d2('0x68'),'set','gotoif'],_0x45e966[_0xa7d2('0x5e')][_0xa7d2('0x60')]())){channels[_0x45e966[_0xa7d2('0x6')]]['lastapplication']=_0x45e966[_0xa7d2('0x5e')];channels[_0x45e966[_0xa7d2('0x6')]][_0xa7d2('0x69')]=_0x45e966[_0xa7d2('0x5f')];}}}catch(_0x2d337d){utils[_0xa7d2('0x1c')](util[_0xa7d2('0x7')](_0xa7d2('0x6a'),_0x45e966['uniqueid']),_0x2d337d);}};
\ No newline at end of file
+var _0xce04=['error','newstate','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','toNumber','[%s][calls][newstate]','hangup','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','duration','diffTime','attendedtransfer','[%s][calls][attendedtransfer]','localtwolinkedid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','origtransfereruniqueid','secondtransfererchannel','_attended','transfertargetchannel','origtransfererchannel','userfield','musiconholdstart','[%s][calls][musiconholdstart]','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstartAt','musiconholdstop','[%s][calls][musiconholdstop]','varset','[%s][calls][varset]','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','variable','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmcs-queue','xmd-queue','lastapplication','Queue','lastdata','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','set','startsWith','cdr','appdata','split','substring','lastIndexOf','includes','noop','execif','gotoif','lodash','./utils','./transfers.controller','NO\x20ANSWER','FAILED','ANSWERED','BUSY','blinds','uniqueid','transfereeuniqueid','info','format','interface','calleridnum','connectedlinenum','accountcode','getUserByInternal','then','UserId','request','CreateVoiceCallReport','recording','debug','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','now','DOCUMENTATION'];(function(_0x8d14d6,_0xc09d60){var _0x1de9fa=function(_0x4436d7){while(--_0x4436d7){_0x8d14d6['push'](_0x8d14d6['shift']());}};_0x1de9fa(++_0xc09d60);}(_0xce04,0xc0));var _0x4ce0=function(_0x295b72,_0x353560){_0x295b72=_0x295b72-0x0;var _0x2cd97f=_0xce04[_0x295b72];return _0x2cd97f;};'use strict';var _=require(_0x4ce0('0x0'));var util=require('util');var utils=require(_0x4ce0('0x1'));var transfers=require(_0x4ce0('0x2'));var dispositions=[_0x4ce0('0x3'),'FAILED',_0x4ce0('0x4'),'NO\x20ANSWER','NO\x20ANSWER','NO\x20ANSWER',_0x4ce0('0x5'),_0x4ce0('0x6'),'FAILED',_0x4ce0('0x4'),_0x4ce0('0x4')];var channels={};function writeDB(_0x5377ab){var _0x3a0dca;if(transfers[_0x4ce0('0x7')][_0x5377ab[_0x4ce0('0x8')]]){_0x3a0dca=_0x5377ab['uniqueid'];_0x5377ab[_0x4ce0('0x8')]=transfers[_0x4ce0('0x7')][_0x5377ab[_0x4ce0('0x8')]][_0x4ce0('0x9')];}utils[_0x4ce0('0xa')](util[_0x4ce0('0xb')]('[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x5377ab[_0x4ce0('0x8')],_0x5377ab['channel'],_0x5377ab['queue'],_0x5377ab['membername'],_0x5377ab[_0x4ce0('0xc')],_0x5377ab[_0x4ce0('0xd')],_0x5377ab[_0x4ce0('0xe')],_0x5377ab['lastevent']));if(_0x5377ab[_0x4ce0('0xf')]){utils[_0x4ce0('0x10')](_0x5377ab['accountcode'])[_0x4ce0('0x11')](function(_0x4d2b8e){if(_0x4d2b8e){_0x5377ab[_0x4ce0('0x12')]=_0x4d2b8e['id'];}utils[_0x4ce0('0x13')](_0x4ce0('0x14'),_0x5377ab);});}else{utils['request'](_0x4ce0('0x14'),_0x5377ab);}if(channels[_0x5377ab[_0x4ce0('0x8')]]){delete channels[_0x5377ab[_0x4ce0('0x8')]];}else if(_0x3a0dca&&channels[_0x3a0dca]){if(!transfers['blinds'][_0x3a0dca][_0x4ce0('0x15')])delete transfers['blinds'][_0x3a0dca];delete channels[_0x3a0dca];}}exports['newchannel']=function(_0x88b349){try{utils[_0x4ce0('0x16')](util[_0x4ce0('0xb')](_0x4ce0('0x17'),_0x88b349[_0x4ce0('0x8')]),_0x88b349);if(_0x88b349[_0x4ce0('0x8')]==_0x88b349[_0x4ce0('0x18')]&&_0x88b349['channel']!=_0x4ce0('0x19')){utils[_0x4ce0('0xa')](util['format'](_0x4ce0('0x1a'),_0x88b349['uniqueid'],_0x88b349[_0x4ce0('0x1b')],_0x88b349[_0x4ce0('0x1c')]));channels[_0x88b349['uniqueid']]={'uniqueid':_0x88b349[_0x4ce0('0x8')],'accountcode':_0x88b349[_0x4ce0('0xf')],'source':_0x88b349[_0x4ce0('0xd')],'destination':_0x88b349[_0x4ce0('0x1c')],'destinationcontext':_0x88b349[_0x4ce0('0x1b')],'channel':_0x88b349[_0x4ce0('0x1d')],'starttime':utils[_0x4ce0('0x1e')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x4ce0('0x3'),'amaflags':_0x4ce0('0x1f')};}}catch(_0x256163){utils[_0x4ce0('0x20')](util[_0x4ce0('0xb')](_0x4ce0('0x17'),_0x88b349[_0x4ce0('0x8')]),_0x256163);}};exports[_0x4ce0('0x21')]=function(_0x4dadad){try{utils[_0x4ce0('0x16')](util[_0x4ce0('0xb')]('[%s][calls][newstate]',_0x4dadad[_0x4ce0('0x8')]),_0x4dadad);if(!_[_0x4ce0('0x22')](channels[_0x4dadad[_0x4ce0('0x8')]])&&_0x4dadad[_0x4ce0('0x23')]==0x6){utils[_0x4ce0('0xa')](util[_0x4ce0('0xb')](_0x4ce0('0x24'),_0x4dadad[_0x4ce0('0x8')],_0x4dadad[_0x4ce0('0x1b')],_0x4dadad[_0x4ce0('0x1d')]));if(_['isNil'](channels[_0x4dadad[_0x4ce0('0x8')]][_0x4ce0('0x25')])){channels[_0x4dadad[_0x4ce0('0x8')]][_0x4ce0('0x25')]=utils['now']();}}else if(!_['isNil'](channels[_0x4dadad[_0x4ce0('0x18')]])&&_0x4dadad[_0x4ce0('0x23')]==0x6&&_0x4dadad['context']!=_0x4ce0('0x26')){utils['info'](util[_0x4ce0('0xb')](_0x4ce0('0x27'),_0x4dadad[_0x4ce0('0x8')],_0x4dadad[_0x4ce0('0x18')],_0x4dadad[_0x4ce0('0x1b')],_0x4dadad['channel']));channels[_0x4dadad[_0x4ce0('0x18')]][_0x4ce0('0xf')]=_0x4dadad[_0x4ce0('0xf')];channels[_0x4dadad[_0x4ce0('0x18')]][_0x4ce0('0x28')]=_0x4dadad[_0x4ce0('0x1d')];if(_[_0x4ce0('0x22')](channels[_0x4dadad[_0x4ce0('0x18')]]['answertime'])){channels[_0x4dadad[_0x4ce0('0x18')]][_0x4ce0('0x29')]=utils[_0x4ce0('0x1e')]();}channels[_0x4dadad[_0x4ce0('0x18')]]['disposition']=dispositions[_[_0x4ce0('0x2a')](_0x4dadad[_0x4ce0('0x23')])]||'ANSWERED';}}catch(_0x8be6a3){utils['error'](util[_0x4ce0('0xb')](_0x4ce0('0x2b'),_0x4dadad[_0x4ce0('0x8')]),_0x8be6a3);}};exports[_0x4ce0('0x2c')]=function(_0x3527e2){try{if(!_['isNil'](channels[_0x3527e2['uniqueid']])){utils['debug'](util[_0x4ce0('0xb')](_0x4ce0('0x2d'),_0x3527e2[_0x4ce0('0x8')]),_0x3527e2);if(_[_0x4ce0('0x22')](channels[_0x3527e2['uniqueid']][_0x4ce0('0x2e')])){channels[_0x3527e2[_0x4ce0('0x8')]][_0x4ce0('0x2e')]=_0x3527e2[_0x4ce0('0x2f')]+'\x20<'+_0x3527e2['calleridnum']+'>';}utils[_0x4ce0('0xa')](util['format'](_0x4ce0('0x30'),_0x3527e2[_0x4ce0('0x8')],channels[_0x3527e2['uniqueid']]['callerid'],_0x3527e2[_0x4ce0('0x31')]));channels[_0x3527e2['uniqueid']][_0x4ce0('0x32')]=utils[_0x4ce0('0x1e')]();channels[_0x3527e2[_0x4ce0('0x8')]][_0x4ce0('0x33')]=utils[_0x4ce0('0x34')](channels[_0x3527e2[_0x4ce0('0x8')]][_0x4ce0('0x32')],channels[_0x3527e2[_0x4ce0('0x8')]]['starttime']);channels[_0x3527e2[_0x4ce0('0x8')]]['billableseconds']=channels[_0x3527e2[_0x4ce0('0x8')]]['answertime']?utils[_0x4ce0('0x34')](channels[_0x3527e2[_0x4ce0('0x8')]][_0x4ce0('0x32')],channels[_0x3527e2[_0x4ce0('0x8')]][_0x4ce0('0x29')]):0x0;writeDB(channels[_0x3527e2[_0x4ce0('0x8')]]);}}catch(_0x319ee8){utils[_0x4ce0('0x20')](util[_0x4ce0('0xb')](_0x4ce0('0x2d'),_0x3527e2[_0x4ce0('0x8')]),_0x319ee8);}};exports[_0x4ce0('0x35')]=function(_0x3e7d68){try{if(!_[_0x4ce0('0x22')](channels[_0x3e7d68['localtwolinkedid']])){utils[_0x4ce0('0x16')](util[_0x4ce0('0xb')](_0x4ce0('0x36'),_0x3e7d68['origtransfereruniqueid']),_0x3e7d68);if(channels[_0x3e7d68[_0x4ce0('0x37')]][_0x4ce0('0x1d')]==_0x3e7d68[_0x4ce0('0x38')]){utils[_0x4ce0('0xa')](util[_0x4ce0('0xb')](_0x4ce0('0x39'),_0x3e7d68[_0x4ce0('0x3a')],_0x3e7d68[_0x4ce0('0x37')],_0x3e7d68[_0x4ce0('0x3b')]));channels[_0x3e7d68['localtwolinkedid']]['destinationchannel']=_0x3e7d68[_0x4ce0('0x3b')];channels[_0x3e7d68[_0x4ce0('0x37')]]['userfield']=_0x4ce0('0x3c');}else if(channels[_0x3e7d68['localtwolinkedid']]['channel']=_0x3e7d68[_0x4ce0('0x3d')]){utils[_0x4ce0('0xa')](util[_0x4ce0('0xb')](_0x4ce0('0x39'),_0x3e7d68['origtransfereruniqueid'],_0x3e7d68[_0x4ce0('0x37')],_0x3e7d68[_0x4ce0('0x3e')]));channels[_0x3e7d68[_0x4ce0('0x37')]][_0x4ce0('0x28')]=_0x3e7d68[_0x4ce0('0x3e')];channels[_0x3e7d68[_0x4ce0('0x37')]][_0x4ce0('0x3f')]=_0x4ce0('0x3c');}}}catch(_0x5d0b86){utils[_0x4ce0('0x20')](util[_0x4ce0('0xb')]('[%s][calls][attendedtransfer]',_0x3e7d68[_0x4ce0('0x3a')]),_0x5d0b86);}};exports[_0x4ce0('0x40')]=function(_0x41b039){try{if(!_[_0x4ce0('0x22')](channels[_0x41b039[_0x4ce0('0x8')]])){utils[_0x4ce0('0x16')](util[_0x4ce0('0xb')](_0x4ce0('0x41'),_0x41b039[_0x4ce0('0x8')]),_0x41b039);channels[_0x41b039[_0x4ce0('0x8')]]['musiconholdstartAt']=utils[_0x4ce0('0x1e')]();utils['info'](util['format'](_0x4ce0('0x42'),_0x41b039[_0x4ce0('0x8')],channels[_0x41b039[_0x4ce0('0x8')]][_0x4ce0('0x43')]));}}catch(_0x2d0f52){utils[_0x4ce0('0x20')](util[_0x4ce0('0xb')](_0x4ce0('0x41'),_0x41b039[_0x4ce0('0x8')]),_0x2d0f52);}};exports[_0x4ce0('0x44')]=function(_0x137152){try{if(!_[_0x4ce0('0x22')](channels[_0x137152[_0x4ce0('0x8')]])){utils[_0x4ce0('0x16')](util[_0x4ce0('0xb')]('[%s][calls][musiconholdstop]',_0x137152[_0x4ce0('0x8')]),_0x137152);if(!_['isNil'](channels[_0x137152[_0x4ce0('0x8')]][_0x4ce0('0x43')])){channels[_0x137152[_0x4ce0('0x8')]]['mohtime']+=utils[_0x4ce0('0x34')](utils['now'](),channels[_0x137152[_0x4ce0('0x8')]][_0x4ce0('0x43')]);utils[_0x4ce0('0xa')](util[_0x4ce0('0xb')]('[%s][calls][musiconholdstop]\x20mohtime:%s',_0x137152[_0x4ce0('0x8')],channels[_0x137152[_0x4ce0('0x8')]]['mohtime']));delete channels[_0x137152['uniqueid']][_0x4ce0('0x43')];}}}catch(_0x31a0ac){utils[_0x4ce0('0x20')](util[_0x4ce0('0xb')](_0x4ce0('0x45'),_0x137152[_0x4ce0('0x8')]),_0x31a0ac);}};exports[_0x4ce0('0x46')]=function(_0x2f038e){try{if(!_['isNil'](channels[_0x2f038e[_0x4ce0('0x8')]])){utils['debug'](util['format'](_0x4ce0('0x47'),_0x2f038e[_0x4ce0('0x8')]),_0x2f038e);if(!_[_0x4ce0('0x22')](_0x2f038e['variable'][_0x4ce0('0x48')])){utils[_0x4ce0('0xa')](util[_0x4ce0('0xb')](_0x4ce0('0x49'),_0x2f038e['uniqueid'],_0x2f038e['value']));channels[_0x2f038e[_0x4ce0('0x8')]]['source']=_0x2f038e[_0x4ce0('0x4a')];}if(!_[_0x4ce0('0x22')](_0x2f038e[_0x4ce0('0x4b')]['xmd-phone'])){utils['info'](util['format'](_0x4ce0('0x4c'),_0x2f038e[_0x4ce0('0x8')],_0x2f038e['value']));channels[_0x2f038e['uniqueid']][_0x4ce0('0x4d')]=_0x2f038e[_0x4ce0('0x4a')];channels[_0x2f038e['uniqueid']][_0x4ce0('0x2e')]='\x22'+_0x2f038e[_0x4ce0('0x4a')]+_0x4ce0('0x4e')+_0x2f038e['value']+'>';}if(!_['isNil'](_0x2f038e[_0x4ce0('0x4b')][_0x4ce0('0x4f')])||!_[_0x4ce0('0x22')](_0x2f038e[_0x4ce0('0x4b')][_0x4ce0('0x50')])){utils[_0x4ce0('0xa')](util[_0x4ce0('0xb')](_0x4ce0('0x51'),_0x2f038e[_0x4ce0('0x8')],!_[_0x4ce0('0x22')](_0x2f038e[_0x4ce0('0x4b')][_0x4ce0('0x4f')])?_0x4ce0('0x4f'):'xmd-callerid',_0x2f038e[_0x4ce0('0x4a')]));channels[_0x2f038e['uniqueid']]['callerid']=_0x2f038e['value'];}if(!_[_0x4ce0('0x22')](_0x2f038e[_0x4ce0('0x4b')]['xmd-queue'])||!_[_0x4ce0('0x22')](_0x2f038e[_0x4ce0('0x4b')][_0x4ce0('0x52')])){utils[_0x4ce0('0xa')](util[_0x4ce0('0xb')](_0x4ce0('0x51'),_0x2f038e['uniqueid'],!_[_0x4ce0('0x22')](_0x2f038e['variable'][_0x4ce0('0x53')])?_0x4ce0('0x53'):_0x4ce0('0x52'),_0x2f038e['value']));channels[_0x2f038e['uniqueid']][_0x4ce0('0x54')]=_0x4ce0('0x55');channels[_0x2f038e[_0x4ce0('0x8')]][_0x4ce0('0x56')]=_0x2f038e['value'];channels[_0x2f038e[_0x4ce0('0x8')]]['queue']=!![];}if(!_[_0x4ce0('0x22')](_0x2f038e[_0x4ce0('0x4b')]['xmd-contactid'])){utils['info'](util[_0x4ce0('0xb')](_0x4ce0('0x57'),_0x2f038e[_0x4ce0('0x8')],_0x2f038e[_0x4ce0('0x4a')]));channels[_0x2f038e['uniqueid']][_0x4ce0('0x58')]=_0x2f038e[_0x4ce0('0x4a')];}if(!_[_0x4ce0('0x22')](_0x2f038e[_0x4ce0('0x4b')][_0x4ce0('0x59')])){utils[_0x4ce0('0xa')](util['format'](_0x4ce0('0x5a'),_0x2f038e['uniqueid'],_0x2f038e[_0x4ce0('0x4a')]));channels[_0x2f038e[_0x4ce0('0x8')]][_0x4ce0('0x5b')]=_0x2f038e['value'];}if(!_[_0x4ce0('0x22')](_0x2f038e[_0x4ce0('0x4b')][_0x4ce0('0x5c')])){utils[_0x4ce0('0xa')](util['format'](_0x4ce0('0x5d'),_0x2f038e[_0x4ce0('0x8')],_0x2f038e[_0x4ce0('0x4a')]));channels[_0x2f038e[_0x4ce0('0x8')]]['routeid']=_0x2f038e[_0x4ce0('0x4a')];}if(!_[_0x4ce0('0x22')](_0x2f038e['variable'][_0x4ce0('0x5e')])){utils[_0x4ce0('0xa')](util[_0x4ce0('0xb')](_0x4ce0('0x5f'),_0x2f038e[_0x4ce0('0x8')],_0x2f038e[_0x4ce0('0x4a')]));channels[_0x2f038e[_0x4ce0('0x8')]][_0x4ce0('0x5e')]=_0x2f038e[_0x4ce0('0x4a')];}}}catch(_0x3f2636){utils[_0x4ce0('0x20')](util['format']('[%s][calls][varset]',_0x2f038e[_0x4ce0('0x8')]),_0x3f2636);}};exports[_0x4ce0('0x60')]=function(_0x40cca8){try{if(!_['isNil'](channels[_0x40cca8[_0x4ce0('0x8')]])){utils['debug'](util[_0x4ce0('0xb')](_0x4ce0('0x61'),_0x40cca8[_0x4ce0('0x8')]),_0x40cca8);utils[_0x4ce0('0xa')](util[_0x4ce0('0xb')](_0x4ce0('0x62'),_0x40cca8[_0x4ce0('0x8')],_0x40cca8['application'],_0x40cca8['appdata']));if(_0x40cca8[_0x4ce0('0x63')][_0x4ce0('0x64')]()==_0x4ce0('0x65')&&_[_0x4ce0('0x66')](_0x40cca8['appdata'][_0x4ce0('0x64')](),_0x4ce0('0x67'))){var _0x50019e=_0x40cca8[_0x4ce0('0x68')][_0x4ce0('0x69')]('=');var _0x3ed818=_0x50019e[0x0][_0x4ce0('0x6a')](_0x50019e[0x0][_0x4ce0('0x6b')]('(')+0x1,_0x50019e[0x0][_0x4ce0('0x6b')](')'));var _0x5d4584=_0x50019e[0x1];channels[_0x40cca8[_0x4ce0('0x8')]][_0x3ed818]=_0x5d4584;}if(!_[_0x4ce0('0x6c')](['hangup',_0x4ce0('0x6d'),_0x4ce0('0x6e'),_0x4ce0('0x65'),_0x4ce0('0x6f')],_0x40cca8['application'][_0x4ce0('0x64')]())){channels[_0x40cca8['uniqueid']][_0x4ce0('0x54')]=_0x40cca8['application'];channels[_0x40cca8['uniqueid']][_0x4ce0('0x56')]=_0x40cca8[_0x4ce0('0x68')];}}}catch(_0x4bd7de){utils[_0x4ce0('0x20')](util['format'](_0x4ce0('0x61'),_0x40cca8[_0x4ce0('0x8')]),_0x4bd7de);}};
\ No newline at end of file
index d0b27ad..bcd55de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f92=['[core]\x20fullybooted','error','[core]\x20error','managerevent','./utils','info','[core]\x20connected','shutdown','fullybooted'];(function(_0x4df6f9,_0x44bd65){var _0x4b1a73=function(_0xf5adb7){while(--_0xf5adb7){_0x4df6f9['push'](_0x4df6f9['shift']());}};_0x4b1a73(++_0x44bd65);}(_0x7f92,0x136));var _0x27f9=function(_0x1362b5,_0x216770){_0x1362b5=_0x1362b5-0x0;var _0x2ccdf6=_0x7f92[_0x1362b5];return _0x2ccdf6;};'use strict';var utils=require(_0x27f9('0x0'));exports['connect']=function(){utils[_0x27f9('0x1')](_0x27f9('0x2'));};exports[_0x27f9('0x3')]=function(){utils[_0x27f9('0x1')]('[core]\x20shutdown');};exports[_0x27f9('0x4')]=function(){utils['info'](_0x27f9('0x5'));};exports[_0x27f9('0x6')]=function(_0x1b1468){utils[_0x27f9('0x6')](_0x27f9('0x7'),_0x1b1468);};exports['close']=function(){utils[_0x27f9('0x1')]('[core]\x20close');};exports[_0x27f9('0x8')]=function(_0x595250){};
\ No newline at end of file
+var _0x4a1f=['./utils','connect','info','[core]\x20connected','shutdown','[core]\x20shutdown','[core]\x20fullybooted','error','[core]\x20error','managerevent'];(function(_0x17882c,_0x4b964b){var _0x355a59=function(_0x534b5b){while(--_0x534b5b){_0x17882c['push'](_0x17882c['shift']());}};_0x355a59(++_0x4b964b);}(_0x4a1f,0xaa));var _0xf4a1=function(_0x361bb4,_0x411189){_0x361bb4=_0x361bb4-0x0;var _0x3e88c3=_0x4a1f[_0x361bb4];return _0x3e88c3;};'use strict';var utils=require(_0xf4a1('0x0'));exports[_0xf4a1('0x1')]=function(){utils[_0xf4a1('0x2')](_0xf4a1('0x3'));};exports[_0xf4a1('0x4')]=function(){utils['info'](_0xf4a1('0x5'));};exports['fullybooted']=function(){utils[_0xf4a1('0x2')](_0xf4a1('0x6'));};exports[_0xf4a1('0x7')]=function(_0x5af17){utils[_0xf4a1('0x7')](_0xf4a1('0x8'),_0x5af17);};exports['close']=function(){utils[_0xf4a1('0x2')]('[core]\x20close');};exports[_0xf4a1('0x9')]=function(_0x3e718f){};
\ No newline at end of file
index 0413e78..a02a128 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcab=['[%s][dials][newexten]','info','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','set','startsWith','cdr(routeid)','appdata','split','error','[%s][dials][varset]','isNil','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','[%s][dials][dialbegin]','assign','starttime','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialend','[%s][dials][dialend]','dialstatus','now','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','answertime','hangup','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','complete','duration','diffTime','billableseconds','endtime','[%s][dials][hangup]','lodash','./utils','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','calleridnum','connectedlinenum','request','CreateVoiceDialReport','newexten','debug'];(function(_0x1b2ff7,_0x12a034){var _0x31656a=function(_0x1165a5){while(--_0x1165a5){_0x1b2ff7['push'](_0x1b2ff7['shift']());}};_0x31656a(++_0x12a034);}(_0xdcab,0x1d4));var _0xbdca=function(_0x53ac53,_0x5325a8){_0x53ac53=_0x53ac53-0x0;var _0x1f356a=_0xdcab[_0x53ac53];return _0x1f356a;};'use strict';var _=require(_0xbdca('0x0'));var util=require('util');var utils=require(_0xbdca('0x1'));var dials={};function writeDB(_0x1c3940){utils['info'](util[_0xbdca('0x2')](_0xbdca('0x3'),_0x1c3940[_0xbdca('0x4')],_0x1c3940[_0xbdca('0x5')],_0x1c3940['dialstring'],_0x1c3940[_0xbdca('0x6')],_0x1c3940[_0xbdca('0x7')],_0x1c3940['dialstatus']));utils[_0xbdca('0x8')](_0xbdca('0x9'),_0x1c3940);delete dials[_0x1c3940['uniqueid']];}exports[_0xbdca('0xa')]=function(_0x1052a5){try{utils[_0xbdca('0xb')](util[_0xbdca('0x2')](_0xbdca('0xc'),_0x1052a5[_0xbdca('0x4')]),_0x1052a5);utils[_0xbdca('0xd')](util[_0xbdca('0x2')](_0xbdca('0xe'),_0x1052a5['uniqueid'],_0x1052a5[_0xbdca('0xf')],_0x1052a5['appdata']));if(_0x1052a5[_0xbdca('0xf')][_0xbdca('0x10')]()==_0xbdca('0x11')&&_[_0xbdca('0x12')](_0x1052a5['appdata']['toLowerCase'](),_0xbdca('0x13'))){var _0x139173=_0x1052a5[_0xbdca('0x14')][_0xbdca('0x15')]('=');dials[_0x1052a5[_0xbdca('0x4')]]={'routeId':_0x139173[0x1]};}}catch(_0x29c15d){utils[_0xbdca('0x16')](util['format']('[%s][dials][newexten]',_0x1052a5[_0xbdca('0x4')]),_0x29c15d);}};exports['varset']=function(_0x9502ba){try{utils['debug'](util['format'](_0xbdca('0x17'),_0x9502ba[_0xbdca('0x4')]),_0x9502ba);if(!_[_0xbdca('0x18')](_0x9502ba['variable'][_0xbdca('0x19')])){utils[_0xbdca('0xd')](util[_0xbdca('0x2')](_0xbdca('0x1a'),_0x9502ba[_0xbdca('0x4')],_0x9502ba['value']));dials[_0x9502ba[_0xbdca('0x4')]]={'routeId':_0x9502ba[_0xbdca('0x1b')]};}}catch(_0xb08aeb){utils[_0xbdca('0x16')](util[_0xbdca('0x2')](_0xbdca('0x17'),_0x9502ba['uniqueid']),_0xb08aeb);}};exports['dialbegin']=function(_0x53cd84){try{if(!_[_0xbdca('0x18')](dials[_0x53cd84[_0xbdca('0x4')]])){utils[_0xbdca('0xb')](util[_0xbdca('0x2')](_0xbdca('0x1c'),_0x53cd84[_0xbdca('0x4')]),_0x53cd84);dials[_0x53cd84[_0xbdca('0x4')]]=_[_0xbdca('0x1d')](dials[_0x53cd84[_0xbdca('0x4')]],_0x53cd84);dials[_0x53cd84[_0xbdca('0x4')]][_0xbdca('0x1e')]=utils['now']();dials[_0x53cd84['uniqueid']]['lastevent']=_0xbdca('0x1f');utils[_0xbdca('0xd')](util[_0xbdca('0x2')](_0xbdca('0x20'),_0x53cd84[_0xbdca('0x4')],dials[_0x53cd84[_0xbdca('0x4')]][_0xbdca('0x1e')]));}}catch(_0x4aace7){utils[_0xbdca('0x16')](util[_0xbdca('0x2')](_0xbdca('0x1c'),_0x53cd84[_0xbdca('0x4')]),_0x4aace7);}};exports[_0xbdca('0x21')]=function(_0x4cd884){try{if(!_['isNil'](dials[_0x4cd884[_0xbdca('0x4')]])){utils[_0xbdca('0xb')](util['format'](_0xbdca('0x22'),_0x4cd884['uniqueid']),_0x4cd884);dials[_0x4cd884['uniqueid']][_0xbdca('0x23')]=_0x4cd884[_0xbdca('0x23')];if(_0x4cd884[_0xbdca('0x23')]=='ANSWER'){dials[_0x4cd884[_0xbdca('0x4')]]=_[_0xbdca('0x1d')](dials[_0x4cd884['uniqueid']],_0x4cd884);dials[_0x4cd884[_0xbdca('0x4')]]['answertime']=utils[_0xbdca('0x24')]();dials[_0x4cd884['uniqueid']]['lastevent']=_0xbdca('0x25');utils[_0xbdca('0xd')](util[_0xbdca('0x2')](_0xbdca('0x26'),_0x4cd884[_0xbdca('0x4')],_0x4cd884[_0xbdca('0x23')],dials[_0x4cd884['uniqueid']][_0xbdca('0x27')]));}else{utils[_0xbdca('0xd')](util[_0xbdca('0x2')]('[%s][dials][dialend]\x20dialstatus:%s',_0x4cd884['uniqueid'],_0x4cd884[_0xbdca('0x23')]));}}}catch(_0x5864d9){utils[_0xbdca('0x16')](util[_0xbdca('0x2')](_0xbdca('0x22'),_0x4cd884[_0xbdca('0x4')]),_0x5864d9);}};exports[_0xbdca('0x28')]=function(_0x4c0926){try{if(!_[_0xbdca('0x18')](dials[_0x4c0926[_0xbdca('0x4')]])){utils['debug'](util[_0xbdca('0x2')]('[%s][dials][hangup]',_0x4c0926[_0xbdca('0x4')]),_0x4c0926);utils[_0xbdca('0xd')](util[_0xbdca('0x2')](_0xbdca('0x29'),_0x4c0926[_0xbdca('0x4')],_0x4c0926[_0xbdca('0x6')],_0x4c0926['calleridname'],_0x4c0926['cause-txt']));dials[_0x4c0926[_0xbdca('0x4')]]=_[_0xbdca('0x1d')](dials[_0x4c0926[_0xbdca('0x4')]],{'endtime':utils['now'](),'lastevent':_0xbdca('0x2a')});dials[_0x4c0926[_0xbdca('0x4')]][_0xbdca('0x2b')]=utils['diffTime'](dials[_0x4c0926['uniqueid']]['endtime'],dials[_0x4c0926[_0xbdca('0x4')]]['starttime']);dials[_0x4c0926['uniqueid']]['holdtime']=utils[_0xbdca('0x2c')](dials[_0x4c0926[_0xbdca('0x4')]]['answertime']||dials[_0x4c0926[_0xbdca('0x4')]]['endtime'],dials[_0x4c0926['uniqueid']]['starttime']);dials[_0x4c0926[_0xbdca('0x4')]][_0xbdca('0x2d')]=dials[_0x4c0926['uniqueid']]['answertime']?utils['diffTime'](dials[_0x4c0926[_0xbdca('0x4')]][_0xbdca('0x2e')],dials[_0x4c0926[_0xbdca('0x4')]]['answertime']):0x0;writeDB(dials[_0x4c0926[_0xbdca('0x4')]]);}}catch(_0x107faf){utils[_0xbdca('0x16')](util[_0xbdca('0x2')](_0xbdca('0x2f'),_0x4c0926[_0xbdca('0x4')]),_0x107faf);}};
\ No newline at end of file
+var _0x4794=['startsWith','appdata','split','varset','format','[%s][dials][varset]','isNil','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','error','dialbegin','assign','starttime','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','[%s][dials][dialend]','ANSWER','answertime','now','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','cause-txt','complete','diffTime','endtime','holdtime','billableseconds','util','./utils','info','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','dialstring','calleridnum','dialstatus','request','CreateVoiceDialReport','newexten','debug','[%s][dials][newexten]','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase'];(function(_0x957b63,_0x73eef6){var _0x1e5224=function(_0x468295){while(--_0x468295){_0x957b63['push'](_0x957b63['shift']());}};_0x1e5224(++_0x73eef6);}(_0x4794,0xea));var _0x4479=function(_0x55e45a,_0x44ea63){_0x55e45a=_0x55e45a-0x0;var _0x20ca9c=_0x4794[_0x55e45a];return _0x20ca9c;};'use strict';var _=require('lodash');var util=require(_0x4479('0x0'));var utils=require(_0x4479('0x1'));var dials={};function writeDB(_0x542821){utils[_0x4479('0x2')](util['format'](_0x4479('0x3'),_0x542821[_0x4479('0x4')],_0x542821['channel'],_0x542821[_0x4479('0x5')],_0x542821[_0x4479('0x6')],_0x542821['connectedlinenum'],_0x542821[_0x4479('0x7')]));utils[_0x4479('0x8')](_0x4479('0x9'),_0x542821);delete dials[_0x542821['uniqueid']];}exports[_0x4479('0xa')]=function(_0x5d2284){try{utils[_0x4479('0xb')](util['format'](_0x4479('0xc'),_0x5d2284[_0x4479('0x4')]),_0x5d2284);utils['info'](util['format'](_0x4479('0xd'),_0x5d2284[_0x4479('0x4')],_0x5d2284['application'],_0x5d2284['appdata']));if(_0x5d2284[_0x4479('0xe')][_0x4479('0xf')]()=='set'&&_[_0x4479('0x10')](_0x5d2284[_0x4479('0x11')][_0x4479('0xf')](),'cdr(routeid)')){var _0x1f9e73=_0x5d2284[_0x4479('0x11')][_0x4479('0x12')]('=');dials[_0x5d2284['uniqueid']]={'routeId':_0x1f9e73[0x1]};}}catch(_0x268f33){utils['error'](util['format'](_0x4479('0xc'),_0x5d2284[_0x4479('0x4')]),_0x268f33);}};exports[_0x4479('0x13')]=function(_0x11ceb5){try{utils[_0x4479('0xb')](util[_0x4479('0x14')](_0x4479('0x15'),_0x11ceb5[_0x4479('0x4')]),_0x11ceb5);if(!_[_0x4479('0x16')](_0x11ceb5[_0x4479('0x17')][_0x4479('0x18')])){utils[_0x4479('0x2')](util[_0x4479('0x14')](_0x4479('0x19'),_0x11ceb5[_0x4479('0x4')],_0x11ceb5['value']));dials[_0x11ceb5[_0x4479('0x4')]]={'routeId':_0x11ceb5['value']};}}catch(_0x352d2b){utils[_0x4479('0x1a')](util[_0x4479('0x14')](_0x4479('0x15'),_0x11ceb5[_0x4479('0x4')]),_0x352d2b);}};exports[_0x4479('0x1b')]=function(_0x139584){try{if(!_[_0x4479('0x16')](dials[_0x139584[_0x4479('0x4')]])){utils[_0x4479('0xb')](util[_0x4479('0x14')]('[%s][dials][dialbegin]',_0x139584[_0x4479('0x4')]),_0x139584);dials[_0x139584[_0x4479('0x4')]]=_[_0x4479('0x1c')](dials[_0x139584[_0x4479('0x4')]],_0x139584);dials[_0x139584[_0x4479('0x4')]][_0x4479('0x1d')]=utils['now']();dials[_0x139584[_0x4479('0x4')]][_0x4479('0x1e')]=_0x4479('0x1f');utils['info'](util['format'](_0x4479('0x20'),_0x139584[_0x4479('0x4')],dials[_0x139584['uniqueid']]['starttime']));}}catch(_0x36d9f2){utils[_0x4479('0x1a')](util['format']('[%s][dials][dialbegin]',_0x139584[_0x4479('0x4')]),_0x36d9f2);}};exports['dialend']=function(_0x15b525){try{if(!_[_0x4479('0x16')](dials[_0x15b525['uniqueid']])){utils['debug'](util[_0x4479('0x14')](_0x4479('0x21'),_0x15b525[_0x4479('0x4')]),_0x15b525);dials[_0x15b525[_0x4479('0x4')]][_0x4479('0x7')]=_0x15b525[_0x4479('0x7')];if(_0x15b525[_0x4479('0x7')]==_0x4479('0x22')){dials[_0x15b525[_0x4479('0x4')]]=_[_0x4479('0x1c')](dials[_0x15b525[_0x4479('0x4')]],_0x15b525);dials[_0x15b525['uniqueid']][_0x4479('0x23')]=utils[_0x4479('0x24')]();dials[_0x15b525[_0x4479('0x4')]]['lastevent']=_0x4479('0x25');utils[_0x4479('0x2')](util[_0x4479('0x14')](_0x4479('0x26'),_0x15b525['uniqueid'],_0x15b525[_0x4479('0x7')],dials[_0x15b525['uniqueid']][_0x4479('0x23')]));}else{utils[_0x4479('0x2')](util['format'](_0x4479('0x27'),_0x15b525['uniqueid'],_0x15b525[_0x4479('0x7')]));}}}catch(_0x360d14){utils[_0x4479('0x1a')](util[_0x4479('0x14')](_0x4479('0x21'),_0x15b525[_0x4479('0x4')]),_0x360d14);}};exports[_0x4479('0x28')]=function(_0x5377d0){try{if(!_[_0x4479('0x16')](dials[_0x5377d0[_0x4479('0x4')]])){utils['debug'](util[_0x4479('0x14')](_0x4479('0x29'),_0x5377d0['uniqueid']),_0x5377d0);utils['info'](util['format'](_0x4479('0x2a'),_0x5377d0[_0x4479('0x4')],_0x5377d0[_0x4479('0x6')],_0x5377d0[_0x4479('0x2b')],_0x5377d0[_0x4479('0x2c')]));dials[_0x5377d0[_0x4479('0x4')]]=_[_0x4479('0x1c')](dials[_0x5377d0[_0x4479('0x4')]],{'endtime':utils[_0x4479('0x24')](),'lastevent':_0x4479('0x2d')});dials[_0x5377d0[_0x4479('0x4')]]['duration']=utils[_0x4479('0x2e')](dials[_0x5377d0['uniqueid']][_0x4479('0x2f')],dials[_0x5377d0[_0x4479('0x4')]][_0x4479('0x1d')]);dials[_0x5377d0[_0x4479('0x4')]][_0x4479('0x30')]=utils[_0x4479('0x2e')](dials[_0x5377d0[_0x4479('0x4')]][_0x4479('0x23')]||dials[_0x5377d0[_0x4479('0x4')]][_0x4479('0x2f')],dials[_0x5377d0['uniqueid']][_0x4479('0x1d')]);dials[_0x5377d0[_0x4479('0x4')]][_0x4479('0x31')]=dials[_0x5377d0[_0x4479('0x4')]]['answertime']?utils['diffTime'](dials[_0x5377d0['uniqueid']][_0x4479('0x2f')],dials[_0x5377d0[_0x4479('0x4')]][_0x4479('0x23')]):0x0;writeDB(dials[_0x5377d0['uniqueid']]);}}catch(_0x1f2fb0){utils[_0x4479('0x1a')](util[_0x4479('0x14')]('[%s][dials][hangup]',_0x5377d0[_0x4479('0x4')]),_0x1f2fb0);}};
\ No newline at end of file
index 3c6d341..e99c180 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd34=['shutdown','fullybooted','error','close','managerevent','debug','device','devicestatechange','format','[%s][index][devicestatechange]','agentcalled','[%s][index][agentcalled]','agentringnoanswer','[%s][index][agentringnoanswer]','uniqueid','agentconnect','[%s][index][agentconnect]','[%s][index][agentcomplete]','agentcomplete','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','[%s][index][musiconholdstart]','musiconholdstart','[%s][index][musiconholdstop]','musiconholdstop','newstate','[%s][index][newstate]','[%s][index][hangup]','hangup','cdr','[%s][index][cdr]','[%s][index][blindtransfer]','blindtransfer','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager','./utils','xdr','disabled','local','asterisk','port','username','password','keepConnected','info','XDR\x20DISABLED','Asterisk\x20disabled\x20on\x20localhost','./calls.controller','./queues.controller','./recordings.controller','./members.controller','./transfers.controller','./core.controller','connect'];(function(_0x48dc7e,_0x35e236){var _0x577357=function(_0x57dfda){while(--_0x57dfda){_0x48dc7e['push'](_0x48dc7e['shift']());}};_0x577357(++_0x35e236);}(_0xbd34,0x104));var _0x4bd3=function(_0x4e7fff,_0x43c4cd){_0x4e7fff=_0x4e7fff-0x0;var _0x3ed3a3=_0xbd34[_0x4e7fff];return _0x3ed3a3;};var AsteriskManager=require(_0x4bd3('0x0'));var config=require('../../config/environment');var utils=require(_0x4bd3('0x1'));var util=require('util');var isXDREnabled=config[_0x4bd3('0x2')]&&config[_0x4bd3('0x2')][_0x4bd3('0x3')]?!config[_0x4bd3('0x2')][_0x4bd3('0x3')]:!![];var isProduction=config['env']==='production'||![];var isLocalAsterisk=config[_0x4bd3('0x2')]&&config[_0x4bd3('0x2')][_0x4bd3('0x4')]===!![]||![];var ami=new AsteriskManager(config[_0x4bd3('0x5')][_0x4bd3('0x6')],config[_0x4bd3('0x5')]['ip'],config[_0x4bd3('0x5')][_0x4bd3('0x7')],config['asterisk'][_0x4bd3('0x8')],!![]);ami[_0x4bd3('0x9')]();if(!isXDREnabled){utils[_0x4bd3('0xa')](_0x4bd3('0xb'));}else if(!isProduction&&!isLocalAsterisk){utils[_0x4bd3('0xa')](_0x4bd3('0xc'));}else{var agents=require('./agents.controller');var calls=require(_0x4bd3('0xd'));var queues=require(_0x4bd3('0xe'));var recordings=require(_0x4bd3('0xf'));var members=require(_0x4bd3('0x10'));var dials=require('./dials.controller');var transfers=require(_0x4bd3('0x11'));var core=require(_0x4bd3('0x12'));ami['on'](_0x4bd3('0x13'),core[_0x4bd3('0x13')]);ami['on'](_0x4bd3('0x14'),core[_0x4bd3('0x14')]);ami['on']('fullybooted',core[_0x4bd3('0x15')]);ami['on'](_0x4bd3('0x16'),core[_0x4bd3('0x16')]);ami['on'](_0x4bd3('0x17'),core['close']);ami['on'](_0x4bd3('0x18'),core[_0x4bd3('0x18')]);ami['on']('devicestatechange',function(_0x3d26ee){try{utils[_0x4bd3('0x19')](util['format']('[%s][index][devicestatechange]',_0x3d26ee[_0x4bd3('0x1a')]),_0x3d26ee);members[_0x4bd3('0x1b')](_0x3d26ee);}catch(_0x3f8cff){utils['error'](util[_0x4bd3('0x1c')](_0x4bd3('0x1d'),_0x3d26ee[_0x4bd3('0x1a')]),_0x3f8cff);}});ami['on'](_0x4bd3('0x1e'),function(_0x383ccb){try{utils['debug'](util[_0x4bd3('0x1c')](_0x4bd3('0x1f'),_0x383ccb['uniqueid']),_0x383ccb);agents[_0x4bd3('0x1e')](_0x383ccb);}catch(_0x6a9fb8){utils[_0x4bd3('0x16')](util['format'](_0x4bd3('0x1f'),_0x383ccb['uniqueid']),_0x6a9fb8);}});ami['on'](_0x4bd3('0x20'),function(_0x3dcccb){try{utils['debug'](util[_0x4bd3('0x1c')](_0x4bd3('0x21'),_0x3dcccb[_0x4bd3('0x22')]),_0x3dcccb);agents[_0x4bd3('0x20')](_0x3dcccb);}catch(_0x294942){utils[_0x4bd3('0x16')](util['format'](_0x4bd3('0x21'),_0x3dcccb[_0x4bd3('0x22')]),_0x294942);}});ami['on'](_0x4bd3('0x23'),function(_0x3ca9b1){try{utils[_0x4bd3('0x19')](util[_0x4bd3('0x1c')](_0x4bd3('0x24'),_0x3ca9b1[_0x4bd3('0x22')]),_0x3ca9b1);agents[_0x4bd3('0x23')](_0x3ca9b1);queues[_0x4bd3('0x23')](_0x3ca9b1);}catch(_0x5b05ef){utils[_0x4bd3('0x16')](util['format']('[%s][index][agentconnect]',_0x3ca9b1['uniqueid']),_0x5b05ef);}});ami['on']('agentcomplete',function(_0x1b1a2d){try{utils[_0x4bd3('0x19')](util[_0x4bd3('0x1c')](_0x4bd3('0x25'),_0x1b1a2d['uniqueid']),_0x1b1a2d);agents['agentcomplete'](_0x1b1a2d);queues[_0x4bd3('0x26')](_0x1b1a2d);members[_0x4bd3('0x26')](_0x1b1a2d);}catch(_0x33f4ea){utils['error'](util['format'](_0x4bd3('0x25'),_0x1b1a2d[_0x4bd3('0x22')]),_0x33f4ea);}});ami['on'](_0x4bd3('0x27'),function(_0xa4ff3b){try{utils[_0x4bd3('0x19')](util[_0x4bd3('0x1c')]('[%s][index][queuecallerabandon]',_0xa4ff3b[_0x4bd3('0x22')]),_0xa4ff3b);agents[_0x4bd3('0x27')](_0xa4ff3b);queues['queuecallerabandon'](_0xa4ff3b);}catch(_0x1ec263){utils[_0x4bd3('0x16')](util[_0x4bd3('0x1c')](_0x4bd3('0x28'),_0xa4ff3b['uniqueid']),_0x1ec263);}});ami['on'](_0x4bd3('0x29'),function(_0x39b595){try{utils['debug'](util[_0x4bd3('0x1c')](_0x4bd3('0x2a'),_0x39b595[_0x4bd3('0x22')]),_0x39b595);queues[_0x4bd3('0x29')](_0x39b595);recordings[_0x4bd3('0x29')](_0x39b595);}catch(_0x28e39c){utils['error'](util[_0x4bd3('0x1c')]('[%s][index][queuecallerjoin]',_0x39b595[_0x4bd3('0x22')]),_0x28e39c);}});ami['on'](_0x4bd3('0x2b'),function(_0xbdd759){try{utils[_0x4bd3('0x19')](util[_0x4bd3('0x1c')](_0x4bd3('0x2c'),_0xbdd759['uniqueid']),_0xbdd759);queues[_0x4bd3('0x2b')](_0xbdd759);}catch(_0x4f5434){utils['error'](util[_0x4bd3('0x1c')](_0x4bd3('0x2c'),_0xbdd759[_0x4bd3('0x22')]),_0x4f5434);}});ami['on']('musiconholdstart',function(_0x5465e5){try{utils[_0x4bd3('0x19')](util['format'](_0x4bd3('0x2d'),_0x5465e5[_0x4bd3('0x22')]),_0x5465e5);queues[_0x4bd3('0x2e')](_0x5465e5);calls[_0x4bd3('0x2e')](_0x5465e5);}catch(_0x37deed){utils['error'](util['format']('[%s][index][musiconholdstart]',_0x5465e5[_0x4bd3('0x22')]),_0x37deed);}});ami['on']('musiconholdstop',function(_0x3ca8ff){try{utils[_0x4bd3('0x19')](util['format'](_0x4bd3('0x2f'),_0x3ca8ff[_0x4bd3('0x22')]),_0x3ca8ff);queues[_0x4bd3('0x30')](_0x3ca8ff);calls[_0x4bd3('0x30')](_0x3ca8ff);}catch(_0x235473){utils[_0x4bd3('0x16')](util[_0x4bd3('0x1c')](_0x4bd3('0x2f'),_0x3ca8ff[_0x4bd3('0x22')]),_0x235473);}});ami['on'](_0x4bd3('0x31'),function(_0xe25114){try{utils[_0x4bd3('0x19')](util[_0x4bd3('0x1c')]('[%s][index][newstate]',_0xe25114[_0x4bd3('0x22')]),_0xe25114);calls[_0x4bd3('0x31')](_0xe25114);recordings[_0x4bd3('0x31')](_0xe25114);}catch(_0x58b790){utils[_0x4bd3('0x16')](util[_0x4bd3('0x1c')](_0x4bd3('0x32'),_0xe25114[_0x4bd3('0x22')]),_0x58b790);}});ami['on']('hangup',function(_0x5d1c92){try{utils[_0x4bd3('0x19')](util[_0x4bd3('0x1c')](_0x4bd3('0x33'),_0x5d1c92[_0x4bd3('0x22')]),_0x5d1c92);calls[_0x4bd3('0x34')](_0x5d1c92);recordings[_0x4bd3('0x34')](_0x5d1c92);dials[_0x4bd3('0x34')](_0x5d1c92);agents[_0x4bd3('0x34')](_0x5d1c92);queues[_0x4bd3('0x34')](_0x5d1c92);}catch(_0x1d5820){utils[_0x4bd3('0x16')](util[_0x4bd3('0x1c')](_0x4bd3('0x33'),_0x5d1c92[_0x4bd3('0x22')]),_0x1d5820);}});ami['on'](_0x4bd3('0x35'),function(_0x432557){try{utils[_0x4bd3('0x19')](util['format'](_0x4bd3('0x36'),_0x432557['uniqueid']),_0x432557);members[_0x4bd3('0x35')](_0x432557);}catch(_0xf565db){utils[_0x4bd3('0x16')](util[_0x4bd3('0x1c')](_0x4bd3('0x36'),_0x432557[_0x4bd3('0x22')]),_0xf565db);}});ami['on']('blindtransfer',function(_0x5e9138){try{utils[_0x4bd3('0x19')](util[_0x4bd3('0x1c')](_0x4bd3('0x37'),_0x5e9138[_0x4bd3('0x22')]),_0x5e9138);queues[_0x4bd3('0x38')](_0x5e9138);agents['blindtransfer'](_0x5e9138);transfers[_0x4bd3('0x38')](_0x5e9138);recordings[_0x4bd3('0x38')](_0x5e9138);}catch(_0x484133){utils[_0x4bd3('0x16')](util[_0x4bd3('0x1c')](_0x4bd3('0x37'),_0x5e9138[_0x4bd3('0x22')]),_0x484133);}});ami['on'](_0x4bd3('0x39'),function(_0x494148){try{utils[_0x4bd3('0x19')](util[_0x4bd3('0x1c')](_0x4bd3('0x3a'),_0x494148['origtransfereruniqueid']),_0x494148);queues[_0x4bd3('0x39')](_0x494148);transfers[_0x4bd3('0x39')](_0x494148);agents[_0x4bd3('0x39')](_0x494148);calls[_0x4bd3('0x39')](_0x494148);}catch(_0x5f15bf){utils[_0x4bd3('0x16')](util[_0x4bd3('0x1c')](_0x4bd3('0x3a'),_0x494148[_0x4bd3('0x3b')]),_0x5f15bf);}});ami['on'](_0x4bd3('0x3c'),function(_0x39817b){try{utils[_0x4bd3('0x19')](util['format'](_0x4bd3('0x3d'),_0x39817b[_0x4bd3('0x22')]),_0x39817b);queues[_0x4bd3('0x3c')](_0x39817b);recordings['varset'](_0x39817b);calls[_0x4bd3('0x3c')](_0x39817b);dials[_0x4bd3('0x3c')](_0x39817b);}catch(_0x51fab7){utils[_0x4bd3('0x16')](util['format']('[%s][index][varset]',_0x39817b[_0x4bd3('0x22')]),_0x51fab7);}});ami['on'](_0x4bd3('0x3e'),function(_0x585d8d){try{utils[_0x4bd3('0x19')](util[_0x4bd3('0x1c')](_0x4bd3('0x3f'),_0x585d8d[_0x4bd3('0x22')]),_0x585d8d);calls[_0x4bd3('0x3e')](_0x585d8d);recordings[_0x4bd3('0x3e')](_0x585d8d);dials['newexten'](_0x585d8d);}catch(_0x32b12d){utils[_0x4bd3('0x16')](util[_0x4bd3('0x1c')](_0x4bd3('0x3f'),_0x585d8d[_0x4bd3('0x22')]),_0x32b12d);}});ami['on'](_0x4bd3('0x40'),function(_0x50357f){try{utils[_0x4bd3('0x19')](util[_0x4bd3('0x1c')](_0x4bd3('0x41'),_0x50357f[_0x4bd3('0x22')]),_0x50357f);calls[_0x4bd3('0x40')](_0x50357f);recordings[_0x4bd3('0x40')](_0x50357f);}catch(_0x118d33){utils[_0x4bd3('0x16')](util[_0x4bd3('0x1c')](_0x4bd3('0x41'),_0x50357f[_0x4bd3('0x22')]),_0x118d33);}});ami['on'](_0x4bd3('0x42'),function(_0x4edcb5){try{utils[_0x4bd3('0x19')](util[_0x4bd3('0x1c')]('[%s][index][dialbegin]',_0x4edcb5[_0x4bd3('0x22')]),_0x4edcb5);dials['dialbegin'](_0x4edcb5);}catch(_0x2a1b2b){utils[_0x4bd3('0x16')](util[_0x4bd3('0x1c')](_0x4bd3('0x43'),_0x4edcb5[_0x4bd3('0x22')]),_0x2a1b2b);}});ami['on']('dialend',function(_0x55a361){try{utils[_0x4bd3('0x19')](util[_0x4bd3('0x1c')]('[%s][index][dialend]',_0x55a361[_0x4bd3('0x22')]),_0x55a361);dials[_0x4bd3('0x44')](_0x55a361);}catch(_0x21a4e6){utils['error'](util['format'](_0x4bd3('0x45'),_0x55a361[_0x4bd3('0x22')]),_0x21a4e6);}});}
\ No newline at end of file
+var _0xbb10=['[%s][index][dialbegin]','[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','util','xdr','disabled','production','local','asterisk','port','username','password','info','XDR\x20DISABLED','Asterisk\x20disabled\x20on\x20localhost','./agents.controller','./calls.controller','./queues.controller','./transfers.controller','./core.controller','shutdown','fullybooted','error','close','managerevent','devicestatechange','debug','format','[%s][index][devicestatechange]','device','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','[%s][index][queuecallerabandon]','queuecallerabandon','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','[%s][index][musiconholdstart]','musiconholdstart','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][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]','[%s][index][newchannel]','newchannel','dialbegin'];(function(_0x144751,_0x3e87e7){var _0x2d8f43=function(_0x19c338){while(--_0x19c338){_0x144751['push'](_0x144751['shift']());}};_0x2d8f43(++_0x3e87e7);}(_0xbb10,0x90));var _0x0bb1=function(_0x3d2d65,_0x56592b){_0x3d2d65=_0x3d2d65-0x0;var _0x691175=_0xbb10[_0x3d2d65];return _0x691175;};var AsteriskManager=require(_0x0bb1('0x0'));var config=require(_0x0bb1('0x1'));var utils=require(_0x0bb1('0x2'));var util=require(_0x0bb1('0x3'));var isXDREnabled=config['xdr']&&config[_0x0bb1('0x4')][_0x0bb1('0x5')]?!config[_0x0bb1('0x4')]['disabled']:!![];var isProduction=config['env']===_0x0bb1('0x6')||![];var isLocalAsterisk=config[_0x0bb1('0x4')]&&config[_0x0bb1('0x4')][_0x0bb1('0x7')]===!![]||![];var ami=new AsteriskManager(config[_0x0bb1('0x8')][_0x0bb1('0x9')],config['asterisk']['ip'],config[_0x0bb1('0x8')][_0x0bb1('0xa')],config[_0x0bb1('0x8')][_0x0bb1('0xb')],!![]);ami['keepConnected']();if(!isXDREnabled){utils[_0x0bb1('0xc')](_0x0bb1('0xd'));}else if(!isProduction&&!isLocalAsterisk){utils[_0x0bb1('0xc')](_0x0bb1('0xe'));}else{var agents=require(_0x0bb1('0xf'));var calls=require(_0x0bb1('0x10'));var queues=require(_0x0bb1('0x11'));var recordings=require('./recordings.controller');var members=require('./members.controller');var dials=require('./dials.controller');var transfers=require(_0x0bb1('0x12'));var core=require(_0x0bb1('0x13'));ami['on']('connect',core['connect']);ami['on'](_0x0bb1('0x14'),core[_0x0bb1('0x14')]);ami['on'](_0x0bb1('0x15'),core['fullybooted']);ami['on']('error',core[_0x0bb1('0x16')]);ami['on'](_0x0bb1('0x17'),core['close']);ami['on']('managerevent',core[_0x0bb1('0x18')]);ami['on'](_0x0bb1('0x19'),function(_0x170bca){try{utils[_0x0bb1('0x1a')](util[_0x0bb1('0x1b')](_0x0bb1('0x1c'),_0x170bca[_0x0bb1('0x1d')]),_0x170bca);members[_0x0bb1('0x19')](_0x170bca);}catch(_0x15fa20){utils[_0x0bb1('0x16')](util[_0x0bb1('0x1b')]('[%s][index][devicestatechange]',_0x170bca[_0x0bb1('0x1d')]),_0x15fa20);}});ami['on']('agentcalled',function(_0x285d16){try{utils['debug'](util['format'](_0x0bb1('0x1e'),_0x285d16[_0x0bb1('0x1f')]),_0x285d16);agents['agentcalled'](_0x285d16);}catch(_0x2970b6){utils['error'](util[_0x0bb1('0x1b')](_0x0bb1('0x1e'),_0x285d16[_0x0bb1('0x1f')]),_0x2970b6);}});ami['on'](_0x0bb1('0x20'),function(_0x112ec3){try{utils[_0x0bb1('0x1a')](util[_0x0bb1('0x1b')](_0x0bb1('0x21'),_0x112ec3[_0x0bb1('0x1f')]),_0x112ec3);agents['agentringnoanswer'](_0x112ec3);}catch(_0xb1833a){utils[_0x0bb1('0x16')](util[_0x0bb1('0x1b')](_0x0bb1('0x21'),_0x112ec3['uniqueid']),_0xb1833a);}});ami['on'](_0x0bb1('0x22'),function(_0x3195ee){try{utils[_0x0bb1('0x1a')](util[_0x0bb1('0x1b')](_0x0bb1('0x23'),_0x3195ee[_0x0bb1('0x1f')]),_0x3195ee);agents['agentconnect'](_0x3195ee);queues[_0x0bb1('0x22')](_0x3195ee);}catch(_0x366e40){utils[_0x0bb1('0x16')](util[_0x0bb1('0x1b')]('[%s][index][agentconnect]',_0x3195ee['uniqueid']),_0x366e40);}});ami['on'](_0x0bb1('0x24'),function(_0x301c84){try{utils['debug'](util['format'](_0x0bb1('0x25'),_0x301c84['uniqueid']),_0x301c84);agents['agentcomplete'](_0x301c84);queues[_0x0bb1('0x24')](_0x301c84);members[_0x0bb1('0x24')](_0x301c84);}catch(_0x402250){utils[_0x0bb1('0x16')](util[_0x0bb1('0x1b')](_0x0bb1('0x25'),_0x301c84[_0x0bb1('0x1f')]),_0x402250);}});ami['on']('queuecallerabandon',function(_0x4fb41b){try{utils[_0x0bb1('0x1a')](util[_0x0bb1('0x1b')](_0x0bb1('0x26'),_0x4fb41b[_0x0bb1('0x1f')]),_0x4fb41b);agents[_0x0bb1('0x27')](_0x4fb41b);queues['queuecallerabandon'](_0x4fb41b);}catch(_0x375fd8){utils[_0x0bb1('0x16')](util[_0x0bb1('0x1b')](_0x0bb1('0x26'),_0x4fb41b[_0x0bb1('0x1f')]),_0x375fd8);}});ami['on'](_0x0bb1('0x28'),function(_0x31b6bb){try{utils['debug'](util['format'](_0x0bb1('0x29'),_0x31b6bb['uniqueid']),_0x31b6bb);queues['queuecallerjoin'](_0x31b6bb);recordings[_0x0bb1('0x28')](_0x31b6bb);}catch(_0x495c9b){utils[_0x0bb1('0x16')](util[_0x0bb1('0x1b')](_0x0bb1('0x29'),_0x31b6bb[_0x0bb1('0x1f')]),_0x495c9b);}});ami['on'](_0x0bb1('0x2a'),function(_0x228627){try{utils['debug'](util[_0x0bb1('0x1b')](_0x0bb1('0x2b'),_0x228627[_0x0bb1('0x1f')]),_0x228627);queues[_0x0bb1('0x2a')](_0x228627);}catch(_0x302de6){utils[_0x0bb1('0x16')](util[_0x0bb1('0x1b')]('[%s][index][queuecallerleave]',_0x228627[_0x0bb1('0x1f')]),_0x302de6);}});ami['on']('musiconholdstart',function(_0x3a6a14){try{utils[_0x0bb1('0x1a')](util[_0x0bb1('0x1b')](_0x0bb1('0x2c'),_0x3a6a14[_0x0bb1('0x1f')]),_0x3a6a14);queues[_0x0bb1('0x2d')](_0x3a6a14);calls[_0x0bb1('0x2d')](_0x3a6a14);}catch(_0x69f861){utils[_0x0bb1('0x16')](util[_0x0bb1('0x1b')](_0x0bb1('0x2c'),_0x3a6a14[_0x0bb1('0x1f')]),_0x69f861);}});ami['on'](_0x0bb1('0x2e'),function(_0x273551){try{utils[_0x0bb1('0x1a')](util['format'](_0x0bb1('0x2f'),_0x273551[_0x0bb1('0x1f')]),_0x273551);queues[_0x0bb1('0x2e')](_0x273551);calls[_0x0bb1('0x2e')](_0x273551);}catch(_0x54eae7){utils[_0x0bb1('0x16')](util[_0x0bb1('0x1b')](_0x0bb1('0x2f'),_0x273551[_0x0bb1('0x1f')]),_0x54eae7);}});ami['on'](_0x0bb1('0x30'),function(_0x80f45e){try{utils[_0x0bb1('0x1a')](util[_0x0bb1('0x1b')](_0x0bb1('0x31'),_0x80f45e['uniqueid']),_0x80f45e);calls[_0x0bb1('0x30')](_0x80f45e);recordings['newstate'](_0x80f45e);}catch(_0x33dc1f){utils['error'](util[_0x0bb1('0x1b')](_0x0bb1('0x31'),_0x80f45e[_0x0bb1('0x1f')]),_0x33dc1f);}});ami['on']('hangup',function(_0x5314ef){try{utils[_0x0bb1('0x1a')](util[_0x0bb1('0x1b')](_0x0bb1('0x32'),_0x5314ef['uniqueid']),_0x5314ef);calls[_0x0bb1('0x33')](_0x5314ef);recordings['hangup'](_0x5314ef);dials['hangup'](_0x5314ef);agents['hangup'](_0x5314ef);queues[_0x0bb1('0x33')](_0x5314ef);}catch(_0x521195){utils[_0x0bb1('0x16')](util['format']('[%s][index][hangup]',_0x5314ef[_0x0bb1('0x1f')]),_0x521195);}});ami['on'](_0x0bb1('0x34'),function(_0x269575){try{utils['debug'](util['format'](_0x0bb1('0x35'),_0x269575[_0x0bb1('0x1f')]),_0x269575);members[_0x0bb1('0x34')](_0x269575);}catch(_0x3e5ad5){utils[_0x0bb1('0x16')](util['format'](_0x0bb1('0x35'),_0x269575[_0x0bb1('0x1f')]),_0x3e5ad5);}});ami['on'](_0x0bb1('0x36'),function(_0x2acdae){try{utils[_0x0bb1('0x1a')](util[_0x0bb1('0x1b')](_0x0bb1('0x37'),_0x2acdae[_0x0bb1('0x1f')]),_0x2acdae);queues['blindtransfer'](_0x2acdae);agents[_0x0bb1('0x36')](_0x2acdae);transfers['blindtransfer'](_0x2acdae);recordings[_0x0bb1('0x36')](_0x2acdae);}catch(_0x2f1595){utils[_0x0bb1('0x16')](util[_0x0bb1('0x1b')](_0x0bb1('0x37'),_0x2acdae[_0x0bb1('0x1f')]),_0x2f1595);}});ami['on'](_0x0bb1('0x38'),function(_0x103c2c){try{utils[_0x0bb1('0x1a')](util[_0x0bb1('0x1b')](_0x0bb1('0x39'),_0x103c2c[_0x0bb1('0x3a')]),_0x103c2c);queues[_0x0bb1('0x38')](_0x103c2c);transfers[_0x0bb1('0x38')](_0x103c2c);agents['attendedtransfer'](_0x103c2c);calls[_0x0bb1('0x38')](_0x103c2c);}catch(_0x537bc4){utils[_0x0bb1('0x16')](util[_0x0bb1('0x1b')](_0x0bb1('0x39'),_0x103c2c[_0x0bb1('0x3a')]),_0x537bc4);}});ami['on'](_0x0bb1('0x3b'),function(_0x3fc809){try{utils[_0x0bb1('0x1a')](util[_0x0bb1('0x1b')](_0x0bb1('0x3c'),_0x3fc809['uniqueid']),_0x3fc809);queues[_0x0bb1('0x3b')](_0x3fc809);recordings[_0x0bb1('0x3b')](_0x3fc809);calls[_0x0bb1('0x3b')](_0x3fc809);dials[_0x0bb1('0x3b')](_0x3fc809);}catch(_0x49d4b6){utils[_0x0bb1('0x16')](util['format'](_0x0bb1('0x3c'),_0x3fc809['uniqueid']),_0x49d4b6);}});ami['on'](_0x0bb1('0x3d'),function(_0x363068){try{utils['debug'](util[_0x0bb1('0x1b')](_0x0bb1('0x3e'),_0x363068[_0x0bb1('0x1f')]),_0x363068);calls[_0x0bb1('0x3d')](_0x363068);recordings[_0x0bb1('0x3d')](_0x363068);dials['newexten'](_0x363068);}catch(_0x3a41f2){utils[_0x0bb1('0x16')](util[_0x0bb1('0x1b')](_0x0bb1('0x3e'),_0x363068[_0x0bb1('0x1f')]),_0x3a41f2);}});ami['on']('newchannel',function(_0x4dcbec){try{utils[_0x0bb1('0x1a')](util['format'](_0x0bb1('0x3f'),_0x4dcbec[_0x0bb1('0x1f')]),_0x4dcbec);calls['newchannel'](_0x4dcbec);recordings[_0x0bb1('0x40')](_0x4dcbec);}catch(_0x24a84c){utils[_0x0bb1('0x16')](util[_0x0bb1('0x1b')]('[%s][index][newchannel]',_0x4dcbec[_0x0bb1('0x1f')]),_0x24a84c);}});ami['on'](_0x0bb1('0x41'),function(_0x18dbcb){try{utils[_0x0bb1('0x1a')](util[_0x0bb1('0x1b')](_0x0bb1('0x42'),_0x18dbcb[_0x0bb1('0x1f')]),_0x18dbcb);dials[_0x0bb1('0x41')](_0x18dbcb);}catch(_0x3a976d){utils[_0x0bb1('0x16')](util[_0x0bb1('0x1b')](_0x0bb1('0x43'),_0x18dbcb[_0x0bb1('0x1f')]),_0x3a976d);}});ami['on'](_0x0bb1('0x44'),function(_0x58fd13){try{utils[_0x0bb1('0x1a')](util[_0x0bb1('0x1b')]('[%s][index][dialend]',_0x58fd13[_0x0bb1('0x1f')]),_0x58fd13);dials[_0x0bb1('0x44')](_0x58fd13);}catch(_0x29a22e){utils[_0x0bb1('0x16')](util[_0x0bb1('0x1b')](_0x0bb1('0x45'),_0x58fd13[_0x0bb1('0x1f')]),_0x29a22e);}});}
\ No newline at end of file
index 585993e..64e12d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2739=['[%s][members][devicestatechange]','agentcomplete','isNil','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','assign','cdr','[%s][members][cdr]','data1','type','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','util','./utils','Local/_attended@transfer','Queue:','info','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','interface','channel','data2','membername','getUserByInterface','name','request','CreateMemberReport','getUserByName','split','then','internal','catch','error','startsWith','debug','format','device','uniqueid','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','voice','TALKING','now','agent','NOT_INUSE','duration','diffTime','exitAt','enterAt'];(function(_0xea3d7e,_0x377e42){var _0x5a5110=function(_0x15b17a){while(--_0x15b17a){_0xea3d7e['push'](_0xea3d7e['shift']());}};_0x5a5110(++_0x377e42);}(_0x2739,0x14e));var _0x9273=function(_0x34dade,_0x2ee2de){_0x34dade=_0x34dade-0x0;var _0x5d45bf=_0x2739[_0x34dade];return _0x5d45bf;};'use strict';var _=require('lodash');var util=require(_0x9273('0x0'));var utils=require(_0x9273('0x1'));var members={};var exclude=[_0x9273('0x2'),_0x9273('0x3')];function writeDB(_0x441cd9){utils[_0x9273('0x4')](util['format'](_0x9273('0x5'),_0x441cd9['uniqueid'],_0x441cd9[_0x9273('0x6')],_0x441cd9[_0x9273('0x7')],_0x441cd9[_0x9273('0x8')],_0x441cd9[_0x9273('0x9')],_0x441cd9['type']));if(_0x441cd9[_0x9273('0x6')]){utils[_0x9273('0xa')](_0x441cd9['interface'])['then'](function(_0x1474eb){if(_0x1474eb){_0x441cd9[_0x9273('0x9')]=_0x1474eb[_0x9273('0xb')];_0x441cd9['internal']=_0x1474eb['internal'];utils[_0x9273('0xc')](_0x9273('0xd'),_0x441cd9);}else{utils[_0x9273('0xe')](_0x441cd9['interface'][_0x9273('0xf')]('/')[0x1])[_0x9273('0x10')](function(_0x3274b6){if(_0x3274b6){_0x441cd9[_0x9273('0x9')]=_0x3274b6['name'];_0x441cd9['internal']=_0x3274b6[_0x9273('0x11')];utils[_0x9273('0xc')](_0x9273('0xd'),_0x441cd9);}});}})[_0x9273('0x12')](function(_0x23ab10){utils[_0x9273('0x13')](util['format']('[%s][members][writeDB]',_0x441cd9['uniqueid']),_0x23ab10);});}delete members[_0x441cd9[_0x9273('0x6')]];}function startsWith(_0x25037a,_0x5d476c){return _['some'](_0x25037a,function(_0x34acc8){return _[_0x9273('0x14')](_0x5d476c,_0x34acc8);});}exports['devicestatechange']=function(_0x90efb9){try{utils[_0x9273('0x15')](util[_0x9273('0x16')]('[%s][members][devicestatechange]',members[_0x90efb9[_0x9273('0x17')]]?members[_0x90efb9['device']][_0x9273('0x18')]:_0x90efb9[_0x9273('0x17')]),_0x90efb9);utils['info'](util[_0x9273('0x16')](_0x9273('0x19'),members[_0x90efb9[_0x9273('0x17')]]?members[_0x90efb9['device']][_0x9273('0x18')]:_0x90efb9[_0x9273('0x17')],_0x90efb9['state'],_0x90efb9['device']));switch(_0x90efb9[_0x9273('0x1a')]){case _0x9273('0x1b'):case'BUSY':if(!startsWith(exclude,_0x90efb9[_0x9273('0x17')])){members[_0x90efb9['device']]={'channel':_0x9273('0x1c'),'interface':_0x90efb9[_0x9273('0x17')],'type':_0x9273('0x1d'),'enterAt':utils[_0x9273('0x1e')](),'role':_0x9273('0x1f')};}break;case _0x9273('0x20'):if(!_['isNil'](members[_0x90efb9[_0x9273('0x17')]])){members[_0x90efb9[_0x9273('0x17')]]['exitAt']=utils[_0x9273('0x1e')]();members[_0x90efb9['device']][_0x9273('0x21')]=utils[_0x9273('0x22')](members[_0x90efb9[_0x9273('0x17')]][_0x9273('0x23')],members[_0x90efb9[_0x9273('0x17')]][_0x9273('0x24')]);if(members[_0x90efb9[_0x9273('0x17')]][_0x9273('0x18')]){writeDB(members[_0x90efb9[_0x9273('0x17')]]);}}break;default:break;}}catch(_0x440616){utils['error'](util[_0x9273('0x16')](_0x9273('0x25'),members[_0x90efb9[_0x9273('0x17')]]?members[_0x90efb9[_0x9273('0x17')]][_0x9273('0x18')]:_0x90efb9[_0x9273('0x17')]),_0x440616);}};exports[_0x9273('0x26')]=function(_0x4099ae){try{if(!_[_0x9273('0x27')](members[_0x4099ae[_0x9273('0x6')]])){utils[_0x9273('0x15')](util[_0x9273('0x16')](_0x9273('0x28'),_0x4099ae['uniqueid']),_0x4099ae);utils['info'](util[_0x9273('0x16')](_0x9273('0x29'),_0x4099ae['uniqueid'],_0x4099ae['interface'],_0x4099ae[_0x9273('0x2a')]));members[_0x4099ae[_0x9273('0x6')]]=_[_0x9273('0x2b')](members[_0x4099ae[_0x9273('0x6')]],{'data4':_0x4099ae[_0x9273('0x2a')],'uniqueid':_0x4099ae[_0x9273('0x18')]});}}catch(_0x55c424){utils[_0x9273('0x13')](util[_0x9273('0x16')](_0x9273('0x28'),_0x4099ae[_0x9273('0x18')]),_0x55c424);}};exports[_0x9273('0x2c')]=function(_0x11a6dd){try{utils[_0x9273('0x15')](util[_0x9273('0x16')](_0x9273('0x2d'),_0x11a6dd[_0x9273('0x18')]),_0x11a6dd);if(_0x11a6dd['channel']){var _0x408816=_0x11a6dd[_0x9273('0x7')][_0x9273('0xf')]('-')[0x0];if(!_[_0x9273('0x27')](members[_0x408816])){members[_0x408816]=_[_0x9273('0x2b')](members[_0x408816],{'data1':members[_0x408816][_0x9273('0x2e')]||_0x11a6dd[_0x9273('0x2f')],'data2':members[_0x408816][_0x9273('0x8')]||_0x11a6dd[_0x9273('0x30')],'data3':members[_0x408816][_0x9273('0x31')]||_0x11a6dd[_0x9273('0x32')],'uniqueid':members[_0x408816]['uniqueid']||_0x11a6dd[_0x9273('0x18')]});utils[_0x9273('0x4')](util[_0x9273('0x16')](_0x9273('0x33'),_0x11a6dd[_0x9273('0x18')],members[_0x408816][_0x9273('0x2e')],members[_0x408816][_0x9273('0x8')],members[_0x408816][_0x9273('0x31')]));if(members[_0x408816][_0x9273('0x23')]){writeDB(members[_0x408816]);}}}if(_0x11a6dd[_0x9273('0x34')]){var _0x291274=_0x11a6dd['destinationchannel']['split']('-')[0x0];if(!_['isNil'](members[_0x291274])){members[_0x291274]=_[_0x9273('0x2b')](members[_0x291274],{'data1':members[_0x291274]['data1']||_0x11a6dd['type'],'data2':members[_0x291274][_0x9273('0x8')]||_0x11a6dd[_0x9273('0x30')],'data3':members[_0x291274][_0x9273('0x31')]||_0x11a6dd['destination'],'uniqueid':members[_0x291274][_0x9273('0x18')]||_0x11a6dd[_0x9273('0x18')]});utils[_0x9273('0x4')](util[_0x9273('0x16')](_0x9273('0x33'),_0x11a6dd[_0x9273('0x18')],members[_0x291274][_0x9273('0x2e')],members[_0x291274][_0x9273('0x8')],members[_0x291274][_0x9273('0x31')]));if(members[_0x291274][_0x9273('0x23')]){writeDB(members[_0x291274]);}}}}catch(_0x5ecc98){utils[_0x9273('0x13')](util[_0x9273('0x16')]('[%s][members][cdr]',_0x11a6dd[_0x9273('0x18')]),_0x5ecc98);}};
\ No newline at end of file
+var _0x34e2=['source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','data1','lodash','./utils','Local/_attended@transfer','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','data2','type','interface','getUserByInterface','then','membername','internal','request','CreateMemberReport','getUserByName','split','catch','[%s][members][writeDB]','some','startsWith','devicestatechange','debug','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','NOT_INUSE','exitAt','now','duration','enterAt','error','isNil','[%s][members][agentcomplete]','info','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','[%s][members][cdr]','channel','assign'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x34e2,0x126));var _0x234e=function(_0x4a0f66,_0x4141ea){_0x4a0f66=_0x4a0f66-0x0;var _0x1bf559=_0x34e2[_0x4a0f66];return _0x1bf559;};'use strict';var _=require(_0x234e('0x0'));var util=require('util');var utils=require(_0x234e('0x1'));var members={};var exclude=[_0x234e('0x2'),'Queue:'];function writeDB(_0x55443f){utils['info'](util[_0x234e('0x3')](_0x234e('0x4'),_0x55443f[_0x234e('0x5')],_0x55443f['interface'],_0x55443f['channel'],_0x55443f[_0x234e('0x6')],_0x55443f['membername'],_0x55443f[_0x234e('0x7')]));if(_0x55443f[_0x234e('0x8')]){utils[_0x234e('0x9')](_0x55443f[_0x234e('0x8')])[_0x234e('0xa')](function(_0x183895){if(_0x183895){_0x55443f[_0x234e('0xb')]=_0x183895['name'];_0x55443f[_0x234e('0xc')]=_0x183895['internal'];utils[_0x234e('0xd')](_0x234e('0xe'),_0x55443f);}else{utils[_0x234e('0xf')](_0x55443f[_0x234e('0x8')][_0x234e('0x10')]('/')[0x1])[_0x234e('0xa')](function(_0x3a861e){if(_0x3a861e){_0x55443f[_0x234e('0xb')]=_0x3a861e['name'];_0x55443f['internal']=_0x3a861e['internal'];utils[_0x234e('0xd')](_0x234e('0xe'),_0x55443f);}});}})[_0x234e('0x11')](function(_0x556c3f){utils['error'](util[_0x234e('0x3')](_0x234e('0x12'),_0x55443f[_0x234e('0x5')]),_0x556c3f);});}delete members[_0x55443f[_0x234e('0x8')]];}function startsWith(_0x4f59c7,_0x23a8bd){return _[_0x234e('0x13')](_0x4f59c7,function(_0x36776a){return _[_0x234e('0x14')](_0x23a8bd,_0x36776a);});}exports[_0x234e('0x15')]=function(_0x90ee7c){try{utils[_0x234e('0x16')](util[_0x234e('0x3')](_0x234e('0x17'),members[_0x90ee7c[_0x234e('0x18')]]?members[_0x90ee7c[_0x234e('0x18')]][_0x234e('0x5')]:_0x90ee7c[_0x234e('0x18')]),_0x90ee7c);utils['info'](util[_0x234e('0x3')](_0x234e('0x19'),members[_0x90ee7c['device']]?members[_0x90ee7c[_0x234e('0x18')]][_0x234e('0x5')]:_0x90ee7c[_0x234e('0x18')],_0x90ee7c[_0x234e('0x1a')],_0x90ee7c['device']));switch(_0x90ee7c['state']){case _0x234e('0x1b'):case'BUSY':if(!startsWith(exclude,_0x90ee7c[_0x234e('0x18')])){members[_0x90ee7c[_0x234e('0x18')]]={'channel':'voice','interface':_0x90ee7c[_0x234e('0x18')],'type':'TALKING','enterAt':utils['now'](),'role':'agent'};}break;case _0x234e('0x1c'):if(!_['isNil'](members[_0x90ee7c['device']])){members[_0x90ee7c[_0x234e('0x18')]][_0x234e('0x1d')]=utils[_0x234e('0x1e')]();members[_0x90ee7c['device']][_0x234e('0x1f')]=utils['diffTime'](members[_0x90ee7c[_0x234e('0x18')]]['exitAt'],members[_0x90ee7c[_0x234e('0x18')]][_0x234e('0x20')]);if(members[_0x90ee7c[_0x234e('0x18')]][_0x234e('0x5')]){writeDB(members[_0x90ee7c[_0x234e('0x18')]]);}}break;default:break;}}catch(_0x2429f0){utils[_0x234e('0x21')](util[_0x234e('0x3')](_0x234e('0x17'),members[_0x90ee7c[_0x234e('0x18')]]?members[_0x90ee7c[_0x234e('0x18')]]['uniqueid']:_0x90ee7c['device']),_0x2429f0);}};exports['agentcomplete']=function(_0x3971e7){try{if(!_[_0x234e('0x22')](members[_0x3971e7[_0x234e('0x8')]])){utils['debug'](util[_0x234e('0x3')](_0x234e('0x23'),_0x3971e7[_0x234e('0x5')]),_0x3971e7);utils[_0x234e('0x24')](util[_0x234e('0x3')](_0x234e('0x25'),_0x3971e7[_0x234e('0x5')],_0x3971e7['interface'],_0x3971e7[_0x234e('0x26')]));members[_0x3971e7[_0x234e('0x8')]]=_['assign'](members[_0x3971e7[_0x234e('0x8')]],{'data4':_0x3971e7['queue'],'uniqueid':_0x3971e7[_0x234e('0x5')]});}}catch(_0x1c31a3){utils['error'](util[_0x234e('0x3')](_0x234e('0x23'),_0x3971e7['uniqueid']),_0x1c31a3);}};exports['cdr']=function(_0x495aec){try{utils[_0x234e('0x16')](util[_0x234e('0x3')](_0x234e('0x27'),_0x495aec[_0x234e('0x5')]),_0x495aec);if(_0x495aec[_0x234e('0x28')]){var _0x567161=_0x495aec[_0x234e('0x28')]['split']('-')[0x0];if(!_['isNil'](members[_0x567161])){members[_0x567161]=_[_0x234e('0x29')](members[_0x567161],{'data1':members[_0x567161]['data1']||_0x495aec[_0x234e('0x7')],'data2':members[_0x567161][_0x234e('0x6')]||_0x495aec[_0x234e('0x2a')],'data3':members[_0x567161][_0x234e('0x2b')]||_0x495aec[_0x234e('0x2c')],'uniqueid':members[_0x567161][_0x234e('0x5')]||_0x495aec[_0x234e('0x5')]});utils[_0x234e('0x24')](util[_0x234e('0x3')](_0x234e('0x2d'),_0x495aec[_0x234e('0x5')],members[_0x567161]['data1'],members[_0x567161]['data2'],members[_0x567161]['data3']));if(members[_0x567161][_0x234e('0x1d')]){writeDB(members[_0x567161]);}}}if(_0x495aec[_0x234e('0x2e')]){var _0x199994=_0x495aec[_0x234e('0x2e')][_0x234e('0x10')]('-')[0x0];if(!_[_0x234e('0x22')](members[_0x199994])){members[_0x199994]=_[_0x234e('0x29')](members[_0x199994],{'data1':members[_0x199994][_0x234e('0x2f')]||_0x495aec[_0x234e('0x7')],'data2':members[_0x199994][_0x234e('0x6')]||_0x495aec['source'],'data3':members[_0x199994][_0x234e('0x2b')]||_0x495aec[_0x234e('0x2c')],'uniqueid':members[_0x199994][_0x234e('0x5')]||_0x495aec[_0x234e('0x5')]});utils[_0x234e('0x24')](util[_0x234e('0x3')](_0x234e('0x2d'),_0x495aec[_0x234e('0x5')],members[_0x199994][_0x234e('0x2f')],members[_0x199994]['data2'],members[_0x199994][_0x234e('0x2b')]));if(members[_0x199994][_0x234e('0x1d')]){writeDB(members[_0x199994]);}}}}catch(_0x3ce46a){utils[_0x234e('0x21')](util[_0x234e('0x3')](_0x234e('0x27'),_0x495aec[_0x234e('0x5')]),_0x3ce46a);}};
\ No newline at end of file
index c920bae..1fdf8f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d58=['queuecallerexit','queuecallercomplete','queuecallercompleteAt','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','varset','[%s][queues][varset]','variable','value','toUpperCase','queuecallerabandonAt','queuecallerexitAt','now','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','name','[%s][queues][queuecallerabandon]','ABANDONED','queuecallerleave','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinename','holdtime','diffTime','queuecallerjoinAt','count','connectedlinenum','[%s][queues][queuecallerleave]','agentconnect','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','assigned','destaccountcode','membername','[%s][queues][agentconnect]','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','[%s][queues][agentcomplete]','blindtransfer','transfereeuniqueid','[%s][queues][blindtransfer]','transfertype','BLIND','transferexten','transferuniqueid','BLINDTRANSFER','extension','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','ATTENDED','origtransfererexten','ATTENDEDTRANSFER','transfereelinkedid','transfertargetuniqueid','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfereruniqueid','secondtransfererexten','transfertargetlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstartAt','[%s][queues][musiconholdstop]','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','util','./utils','info','format','uniqueid','channel','lastAssignedTo','calleridnum','accountcode','queuecallerexitreason','queue','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','debug','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','error','[%s][queues][queuecallerjoin]','hangup','isNil','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon'];(function(_0x2b2583,_0x2a154b){var _0x4cd668=function(_0x210866){while(--_0x210866){_0x2b2583['push'](_0x2b2583['shift']());}};_0x4cd668(++_0x2a154b);}(_0x5d58,0x182));var _0x85d5=function(_0x5bff47,_0x16ef21){_0x5bff47=_0x5bff47-0x0;var _0x5358f5=_0x5d58[_0x5bff47];return _0x5358f5;};'use strict';var _=require(_0x85d5('0x0'));var util=require(_0x85d5('0x1'));var utils=require(_0x85d5('0x2'));var queues={};function writeDB(_0x247a46){utils[_0x85d5('0x3')](util[_0x85d5('0x4')]('[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s',_0x247a46[_0x85d5('0x5')],_0x247a46[_0x85d5('0x6')],_0x247a46['queue'],_0x247a46[_0x85d5('0x7')],_0x247a46[_0x85d5('0x8')],_0x247a46[_0x85d5('0x9')],_0x247a46[_0x85d5('0xa')]));if(_0x247a46[_0x85d5('0xb')]){utils[_0x85d5('0xc')](_0x247a46[_0x85d5('0xb')])[_0x85d5('0xd')](function(_0x5ec3a5){if(_0x5ec3a5){_0x247a46[_0x85d5('0xe')]=_0x5ec3a5[_0x85d5('0xe')];}utils[_0x85d5('0xf')](_0x85d5('0x10'),_0x247a46);});}else{utils[_0x85d5('0xf')](_0x85d5('0x10'),_0x247a46);}if(_0x247a46[_0x85d5('0x11')]){delete queues[_0x247a46['transfereduniqueid']];}else{delete queues[_0x247a46['uniqueid']];}}exports[_0x85d5('0x12')]=function(_0x5d0519){try{utils[_0x85d5('0x13')](util['format']('[%s][queues][queuecallerjoin]',_0x5d0519[_0x85d5('0x5')]),_0x5d0519);utils['info'](util[_0x85d5('0x4')](_0x85d5('0x14'),_0x5d0519['uniqueid'],_0x5d0519[_0x85d5('0xb')],_0x5d0519[_0x85d5('0x15')]));queues[_0x5d0519[_0x85d5('0x5')]]=_[_0x85d5('0x16')](_0x5d0519,{'originalposition':_0x5d0519[_0x85d5('0x15')],'queuecallerjoinAt':utils['now'](),'mohtime':0x0});}catch(_0x217180){utils[_0x85d5('0x17')](util[_0x85d5('0x4')](_0x85d5('0x18'),_0x5d0519['uniqueid']),_0x217180);}};exports[_0x85d5('0x19')]=function(_0x2db1c7){try{if(!_[_0x85d5('0x1a')](queues[_0x2db1c7[_0x85d5('0x5')]])){utils['debug'](util[_0x85d5('0x4')](_0x85d5('0x1b'),_0x2db1c7[_0x85d5('0x5')]),_0x2db1c7);if(queues[_0x2db1c7['uniqueid']][_0x85d5('0x1c')]){if(!queues[_0x2db1c7['uniqueid']][_0x85d5('0x1d')]&&!queues[_0x2db1c7[_0x85d5('0x5')]][_0x85d5('0x1e')]){queues[_0x2db1c7[_0x85d5('0x5')]][_0x85d5('0x1f')]=!![];queues[_0x2db1c7['uniqueid']][_0x85d5('0x20')]=utils['now']();queues[_0x2db1c7[_0x85d5('0x5')]][_0x85d5('0xa')]=_0x85d5('0x21');}utils[_0x85d5('0x3')](util[_0x85d5('0x4')](_0x85d5('0x22'),_0x2db1c7[_0x85d5('0x5')],queues[_0x2db1c7[_0x85d5('0x5')]]['name'],queues[_0x2db1c7['uniqueid']]['queuecallerexitreason']));writeDB(queues[_0x2db1c7['uniqueid']]);}else if(queues[_0x2db1c7[_0x85d5('0x5')]][_0x85d5('0x11')]){utils[_0x85d5('0x3')](util[_0x85d5('0x4')](_0x85d5('0x23'),_0x2db1c7[_0x85d5('0x5')],queues[_0x2db1c7[_0x85d5('0x5')]]['name'],queues[_0x2db1c7[_0x85d5('0x5')]][_0x85d5('0x11')]));queues[queues[_0x2db1c7[_0x85d5('0x5')]]['transfereduniqueid']]=queues[_0x2db1c7[_0x85d5('0x5')]];queues[queues[_0x2db1c7[_0x85d5('0x5')]]['transfereduniqueid']][_0x85d5('0x24')]=0x2;delete queues[_0x2db1c7[_0x85d5('0x5')]];}}}catch(_0xdce198){utils[_0x85d5('0x17')](util[_0x85d5('0x4')](_0x85d5('0x1b'),_0x2db1c7[_0x85d5('0x5')]),_0xdce198);}};exports[_0x85d5('0x25')]=function(_0x27746a){try{utils['debug'](util[_0x85d5('0x4')](_0x85d5('0x26'),_0x27746a[_0x85d5('0x5')]),_0x27746a);if(!_[_0x85d5('0x1a')](_0x27746a[_0x85d5('0x27')]['queuestatus'])&&_0x27746a[_0x85d5('0x28')][_0x85d5('0x29')]()!=='CONTINUE'){if(!_[_0x85d5('0x1a')](queues[_0x27746a[_0x85d5('0x5')]])){queues[_0x27746a[_0x85d5('0x5')]][_0x85d5('0x1d')]=![];queues[_0x27746a['uniqueid']][_0x85d5('0x2a')]=null;queues[_0x27746a[_0x85d5('0x5')]][_0x85d5('0x1e')]=!![];queues[_0x27746a[_0x85d5('0x5')]][_0x85d5('0x2b')]=utils[_0x85d5('0x2c')]();queues[_0x27746a[_0x85d5('0x5')]][_0x85d5('0xa')]=_0x27746a[_0x85d5('0x28')]['toUpperCase']();utils[_0x85d5('0x3')](util[_0x85d5('0x4')](_0x85d5('0x2d'),_0x27746a['uniqueid'],queues[_0x27746a[_0x85d5('0x5')]]['name'],_0x27746a[_0x85d5('0x28')],queues[_0x27746a[_0x85d5('0x5')]]['queuecallerexitreason']));writeDB(queues[_0x27746a[_0x85d5('0x5')]]);}}else if(!_['isNil'](_0x27746a[_0x85d5('0x27')]['queueposition'])){if(!_['isNil'](queues[_0x27746a[_0x85d5('0x5')]])&&!queues[_0x27746a['uniqueid']][_0x85d5('0x1d')]){queues[_0x27746a[_0x85d5('0x5')]][_0x85d5('0x1d')]=![];queues[_0x27746a[_0x85d5('0x5')]]['queuecallerabandonAt']=null;queues[_0x27746a['uniqueid']]['queuecallerexit']=!![];queues[_0x27746a[_0x85d5('0x5')]][_0x85d5('0x2b')]=utils[_0x85d5('0x2c')]();queues[_0x27746a['uniqueid']][_0x85d5('0xa')]=_0x85d5('0x2e');utils['info'](util[_0x85d5('0x4')](_0x85d5('0x2f'),_0x27746a[_0x85d5('0x5')],queues[_0x27746a[_0x85d5('0x5')]][_0x85d5('0x30')],_0x27746a['value'],queues[_0x27746a[_0x85d5('0x5')]][_0x85d5('0xa')]));}}}catch(_0x20f191){utils[_0x85d5('0x17')](util[_0x85d5('0x4')]('[%s][queues][varset]',_0x27746a[_0x85d5('0x5')]),_0x20f191);}};exports[_0x85d5('0x1d')]=function(_0x1a2c30){try{if(!_['isNil'](queues[_0x1a2c30['uniqueid']])){utils['debug'](util['format'](_0x85d5('0x31'),_0x1a2c30[_0x85d5('0x5')]),_0x1a2c30);queues[_0x1a2c30[_0x85d5('0x5')]][_0x85d5('0x1e')]=![];queues[_0x1a2c30[_0x85d5('0x5')]]['queuecallerexitAt']=null;queues[_0x1a2c30[_0x85d5('0x5')]][_0x85d5('0x1d')]=!![];queues[_0x1a2c30[_0x85d5('0x5')]][_0x85d5('0x2a')]=utils[_0x85d5('0x2c')]();queues[_0x1a2c30[_0x85d5('0x5')]][_0x85d5('0xa')]=_0x85d5('0x32');utils['info'](util[_0x85d5('0x4')]('[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s',_0x1a2c30[_0x85d5('0x5')],queues[_0x1a2c30[_0x85d5('0x5')]][_0x85d5('0x30')],queues[_0x1a2c30[_0x85d5('0x5')]][_0x85d5('0xa')]));}}catch(_0x596ab7){utils[_0x85d5('0x17')](util[_0x85d5('0x4')](_0x85d5('0x31'),_0x1a2c30[_0x85d5('0x5')]),_0x596ab7);}};exports[_0x85d5('0x33')]=function(_0x1a991f){try{if(!_[_0x85d5('0x1a')](queues[_0x1a991f[_0x85d5('0x5')]])){utils[_0x85d5('0x13')](util[_0x85d5('0x4')]('[%s][queues][queuecallerleave]',_0x1a991f[_0x85d5('0x5')]),_0x1a991f);utils[_0x85d5('0x3')](util[_0x85d5('0x4')](_0x85d5('0x34'),_0x1a991f[_0x85d5('0x5')],queues[_0x1a991f['uniqueid']][_0x85d5('0x30')],_0x1a991f['connectedlinenum'],_0x1a991f[_0x85d5('0x35')]));queues[_0x1a991f[_0x85d5('0x5')]][_0x85d5('0x33')]=!![];queues[_0x1a991f[_0x85d5('0x5')]][_0x85d5('0x1c')]=utils[_0x85d5('0x2c')]();queues[_0x1a991f[_0x85d5('0x5')]][_0x85d5('0x36')]=utils[_0x85d5('0x37')](queues[_0x1a991f[_0x85d5('0x5')]][_0x85d5('0x1c')],queues[_0x1a991f[_0x85d5('0x5')]][_0x85d5('0x38')]);queues[_0x1a991f[_0x85d5('0x5')]]['position']=_0x1a991f[_0x85d5('0x15')];queues[_0x1a991f[_0x85d5('0x5')]][_0x85d5('0x39')]=_0x1a991f[_0x85d5('0x39')];queues[_0x1a991f['uniqueid']][_0x85d5('0x3a')]=_0x1a991f[_0x85d5('0x3a')];queues[_0x1a991f[_0x85d5('0x5')]][_0x85d5('0x35')]=_0x1a991f[_0x85d5('0x35')];}}catch(_0x3bacce){utils[_0x85d5('0x17')](util[_0x85d5('0x4')](_0x85d5('0x3b'),_0x1a991f[_0x85d5('0x5')]),_0x3bacce);}};exports[_0x85d5('0x3c')]=function(_0x4edd72){try{if(!_['isNil'](queues[_0x4edd72[_0x85d5('0x5')]])){utils[_0x85d5('0x13')](util['format']('[%s][queues][agentconnect]',_0x4edd72[_0x85d5('0x5')]),_0x4edd72);utils['info'](util['format'](_0x85d5('0x3d'),_0x4edd72[_0x85d5('0x5')],queues[_0x4edd72[_0x85d5('0x5')]][_0x85d5('0x30')],_0x4edd72['membername'],_0x4edd72['destaccountcode']));queues[_0x4edd72['uniqueid']][_0x85d5('0x1d')]=![];queues[_0x4edd72[_0x85d5('0x5')]]['queuecallerabandon']=![];queues[_0x4edd72['uniqueid']][_0x85d5('0x2a')]=null;queues[_0x4edd72['uniqueid']]['queuecallerexit']=![];queues[_0x4edd72[_0x85d5('0x5')]][_0x85d5('0xa')]=null;queues[_0x4edd72[_0x85d5('0x5')]]['queuecallerexitAt']=null;queues[_0x4edd72[_0x85d5('0x5')]][_0x85d5('0x3e')]=!![];queues[_0x4edd72[_0x85d5('0x5')]]['accountcode']=_0x4edd72[_0x85d5('0x3f')];queues[_0x4edd72[_0x85d5('0x5')]][_0x85d5('0x7')]=_0x4edd72[_0x85d5('0x40')];}}catch(_0x389339){utils['error'](util[_0x85d5('0x4')](_0x85d5('0x41'),_0x4edd72[_0x85d5('0x5')]),_0x389339);}};exports['agentcomplete']=function(_0x402f46){try{if(!_[_0x85d5('0x1a')](queues[_0x402f46[_0x85d5('0x5')]])){if(queues[_0x402f46[_0x85d5('0x5')]][_0x85d5('0x1c')]){utils[_0x85d5('0x13')](util[_0x85d5('0x4')]('[%s][queues][agentcomplete]',_0x402f46[_0x85d5('0x5')]),_0x402f46);queues[_0x402f46[_0x85d5('0x5')]][_0x85d5('0x1d')]=![];queues[_0x402f46['uniqueid']][_0x85d5('0x1d')]=![];queues[_0x402f46[_0x85d5('0x5')]]['queuecallerabandonAt']=null;queues[_0x402f46[_0x85d5('0x5')]][_0x85d5('0x1e')]=![];queues[_0x402f46[_0x85d5('0x5')]]['queuecallerexitAt']=null;queues[_0x402f46[_0x85d5('0x5')]][_0x85d5('0x3e')]=!![];queues[_0x402f46[_0x85d5('0x5')]][_0x85d5('0x7')]=_0x402f46[_0x85d5('0x40')];queues[_0x402f46[_0x85d5('0x5')]][_0x85d5('0x1f')]=!![];queues[_0x402f46['uniqueid']][_0x85d5('0x20')]=utils[_0x85d5('0x2c')]();if(_0x402f46[_0x85d5('0x42')]=='transfer'){if(!queues[_0x402f46[_0x85d5('0x5')]][_0x85d5('0x43')]){queues[_0x402f46[_0x85d5('0x5')]][_0x85d5('0xa')]=_0x85d5('0x44');}}else{queues[_0x402f46[_0x85d5('0x5')]][_0x85d5('0xa')]=_0x85d5('0x45')+_0x402f46['reason'][_0x85d5('0x29')]();}utils[_0x85d5('0x3')](util[_0x85d5('0x4')](_0x85d5('0x46'),_0x402f46['uniqueid'],queues[_0x402f46['uniqueid']]['name'],_0x402f46[_0x85d5('0x40')],queues[_0x402f46[_0x85d5('0x5')]][_0x85d5('0xa')]));writeDB(queues[_0x402f46['uniqueid']]);}}}catch(_0x41f35b){utils['error'](util[_0x85d5('0x4')](_0x85d5('0x47'),_0x402f46[_0x85d5('0x5')]),_0x41f35b);}};exports[_0x85d5('0x48')]=function(_0x385383){try{if(!_['isNil'](queues[_0x385383[_0x85d5('0x49')]])){utils[_0x85d5('0x13')](util[_0x85d5('0x4')](_0x85d5('0x4a'),_0x385383['uniqueid']),_0x385383);queues[_0x385383[_0x85d5('0x49')]][_0x85d5('0x43')]=!![];queues[_0x385383[_0x85d5('0x49')]][_0x85d5('0x4b')]=_0x85d5('0x4c');queues[_0x385383[_0x85d5('0x49')]][_0x85d5('0x4d')]=_0x385383['extension'];queues[_0x385383[_0x85d5('0x49')]][_0x85d5('0x4e')]=_0x385383[_0x85d5('0x49')];queues[_0x385383[_0x85d5('0x49')]][_0x85d5('0xa')]=_0x85d5('0x4f');utils[_0x85d5('0x3')](util[_0x85d5('0x4')]('[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER',_0x385383[_0x85d5('0x5')],queues[_0x385383['transfereeuniqueid']]['name'],_0x385383[_0x85d5('0x49')],_0x385383[_0x85d5('0x50')]));}}catch(_0x21c748){utils[_0x85d5('0x17')](util[_0x85d5('0x4')](_0x85d5('0x4a'),_0x385383[_0x85d5('0x5')]),_0x21c748);}};exports[_0x85d5('0x51')]=function(_0x2fc6b3){try{utils[_0x85d5('0x13')](util[_0x85d5('0x4')](_0x85d5('0x52'),_0x2fc6b3[_0x85d5('0x53')]),_0x2fc6b3);if(_0x2fc6b3[_0x85d5('0x53')]==_0x2fc6b3[_0x85d5('0x54')]){if(!_[_0x85d5('0x1a')](queues[_0x2fc6b3[_0x85d5('0x55')]])){utils[_0x85d5('0x3')](util[_0x85d5('0x4')](_0x85d5('0x56'),_0x2fc6b3[_0x85d5('0x53')],queues[_0x2fc6b3[_0x85d5('0x55')]][_0x85d5('0x30')],_0x2fc6b3['origtransfererexten']));queues[_0x2fc6b3[_0x85d5('0x55')]]['transfer']=!![];queues[_0x2fc6b3[_0x85d5('0x55')]][_0x85d5('0x4b')]=_0x85d5('0x57');queues[_0x2fc6b3['secondtransfererlinkedid']][_0x85d5('0x4d')]=_0x2fc6b3[_0x85d5('0x58')];queues[_0x2fc6b3[_0x85d5('0x55')]][_0x85d5('0x4e')]=_0x2fc6b3[_0x85d5('0x53')];queues[_0x2fc6b3['secondtransfererlinkedid']][_0x85d5('0xa')]=_0x85d5('0x59');}if(!_['isNil'](queues[_0x2fc6b3[_0x85d5('0x54')]])){if(_0x2fc6b3[_0x85d5('0x5a')]&&queues[_0x2fc6b3[_0x85d5('0x5a')]]){queues[_0x2fc6b3[_0x85d5('0x5a')]]['queuecallerenterreason']=0x1;queues[_0x2fc6b3[_0x85d5('0x49')]]=_['clone'](queues[_0x2fc6b3['transfereelinkedid']]);queues[_0x2fc6b3['transfereeuniqueid']][_0x85d5('0x11')]=_0x2fc6b3[_0x85d5('0x5b')];queues[_0x2fc6b3['transfereeuniqueid']][_0x85d5('0x24')]=0x2;queues[_0x2fc6b3[_0x85d5('0x49')]][_0x85d5('0x8')]=queues[_0x2fc6b3[_0x85d5('0x55')]][_0x85d5('0x8')];queues[_0x2fc6b3['transfereeuniqueid']][_0x85d5('0x5c')]=queues[_0x2fc6b3[_0x85d5('0x55')]][_0x85d5('0x5c')];queues[_0x2fc6b3[_0x85d5('0x49')]][_0x85d5('0x38')]=utils[_0x85d5('0x2c')]();queues[_0x2fc6b3[_0x85d5('0x49')]]['queuecallerleaveAt']=utils['now']();queues[_0x2fc6b3[_0x85d5('0x49')]][_0x85d5('0x36')]=0x0;queues[_0x2fc6b3['transfereeuniqueid']][_0x85d5('0x5d')]=0x0;utils[_0x85d5('0x3')](util[_0x85d5('0x4')](_0x85d5('0x5e'),_0x2fc6b3[_0x85d5('0x53')],queues[_0x2fc6b3[_0x85d5('0x49')]][_0x85d5('0x30')],queues[_0x2fc6b3['transfereeuniqueid']]['calleridnum'],queues[_0x2fc6b3[_0x85d5('0x49')]][_0x85d5('0x5c')]));}else{utils['info'](util['format'](_0x85d5('0x5f'),_0x2fc6b3[_0x85d5('0x53')],queues[_0x2fc6b3[_0x85d5('0x54')]][_0x85d5('0x30')],_0x2fc6b3[_0x85d5('0x55')]));queues[_0x2fc6b3['origtransfererlinkedid']][_0x85d5('0x11')]=_0x2fc6b3[_0x85d5('0x55')];}}}else if(_0x2fc6b3['secondtransfereruniqueid']==_0x2fc6b3[_0x85d5('0x55')]){if(!_[_0x85d5('0x1a')](queues[_0x2fc6b3['origtransfererlinkedid']])){utils[_0x85d5('0x3')](util['format'](_0x85d5('0x60'),_0x2fc6b3[_0x85d5('0x53')],queues[_0x2fc6b3[_0x85d5('0x54')]][_0x85d5('0x30')],_0x2fc6b3[_0x85d5('0x61')],_0x2fc6b3[_0x85d5('0x62')]));queues[_0x2fc6b3['origtransfererlinkedid']][_0x85d5('0x43')]=!![];queues[_0x2fc6b3[_0x85d5('0x54')]]['transfertype']=_0x85d5('0x57');queues[_0x2fc6b3[_0x85d5('0x54')]][_0x85d5('0x4d')]=_0x2fc6b3[_0x85d5('0x62')];queues[_0x2fc6b3[_0x85d5('0x54')]][_0x85d5('0x4e')]=_0x2fc6b3[_0x85d5('0x61')];queues[_0x2fc6b3[_0x85d5('0x54')]][_0x85d5('0xa')]='ATTENDEDTRANSFER';}if(!_['isNil'](queues[_0x2fc6b3[_0x85d5('0x55')]])){if(_0x2fc6b3[_0x85d5('0x63')]&&queues[_0x2fc6b3[_0x85d5('0x63')]]){queues[_0x2fc6b3[_0x85d5('0x63')]][_0x85d5('0x24')]=0x1;queues[_0x2fc6b3[_0x85d5('0x5b')]]=_['clone'](queues[_0x2fc6b3[_0x85d5('0x63')]]);queues[_0x2fc6b3[_0x85d5('0x5b')]][_0x85d5('0x11')]=_0x2fc6b3[_0x85d5('0x5b')];queues[_0x2fc6b3[_0x85d5('0x5b')]][_0x85d5('0x24')]=0x2;queues[_0x2fc6b3[_0x85d5('0x5b')]]['calleridnum']=queues[_0x2fc6b3[_0x85d5('0x54')]][_0x85d5('0x8')];queues[_0x2fc6b3[_0x85d5('0x5b')]]['calleridname']=queues[_0x2fc6b3[_0x85d5('0x54')]][_0x85d5('0x5c')];queues[_0x2fc6b3['transfertargetuniqueid']]['queuecallerjoinAt']=utils[_0x85d5('0x2c')]();queues[_0x2fc6b3[_0x85d5('0x5b')]][_0x85d5('0x1c')]=utils[_0x85d5('0x2c')]();queues[_0x2fc6b3[_0x85d5('0x5b')]][_0x85d5('0x36')]=0x0;queues[_0x2fc6b3[_0x85d5('0x5b')]]['mohtime']=0x0;utils[_0x85d5('0x3')](util['format'](_0x85d5('0x64'),_0x2fc6b3[_0x85d5('0x53')],queues[_0x2fc6b3[_0x85d5('0x5b')]][_0x85d5('0x30')],queues[_0x2fc6b3[_0x85d5('0x5b')]][_0x85d5('0x11')],queues[_0x2fc6b3[_0x85d5('0x5b')]]['calleridnum'],queues[_0x2fc6b3[_0x85d5('0x5b')]][_0x85d5('0x5c')]));}else{utils[_0x85d5('0x3')](util[_0x85d5('0x4')](_0x85d5('0x5f'),_0x2fc6b3[_0x85d5('0x53')],queues[_0x2fc6b3['secondtransfererlinkedid']][_0x85d5('0x30')],_0x2fc6b3[_0x85d5('0x54')]));queues[_0x2fc6b3[_0x85d5('0x55')]][_0x85d5('0x11')]=_0x2fc6b3[_0x85d5('0x54')];}}}}catch(_0x35afb5){utils[_0x85d5('0x17')](util[_0x85d5('0x4')](_0x85d5('0x52'),_0x2fc6b3[_0x85d5('0x53')]),_0x35afb5);}};exports['musiconholdstart']=function(_0x1d127){try{if(!_[_0x85d5('0x1a')](queues[_0x1d127[_0x85d5('0x5')]])){utils[_0x85d5('0x13')](util['format']('[%s][queues][musiconholdstart]',_0x1d127[_0x85d5('0x5')]),_0x1d127);queues[_0x1d127[_0x85d5('0x5')]]['musiconholdstartAt']=utils[_0x85d5('0x2c')]();utils[_0x85d5('0x3')](util[_0x85d5('0x4')]('[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s',_0x1d127['uniqueid'],queues[_0x1d127['uniqueid']][_0x85d5('0x30')],queues[_0x1d127[_0x85d5('0x5')]][_0x85d5('0x65')]));}}catch(_0x593977){utils[_0x85d5('0x17')](util[_0x85d5('0x4')]('[%s][queues][musiconholdstart]',_0x1d127[_0x85d5('0x5')]),_0x593977);}};exports['musiconholdstop']=function(_0x857b7c){try{if(!_['isNil'](queues[_0x857b7c[_0x85d5('0x5')]])){if(!_[_0x85d5('0x1a')](queues[_0x857b7c[_0x85d5('0x5')]][_0x85d5('0x65')])){utils[_0x85d5('0x13')](util[_0x85d5('0x4')](_0x85d5('0x66'),_0x857b7c[_0x85d5('0x5')]),_0x857b7c);queues[_0x857b7c[_0x85d5('0x5')]][_0x85d5('0x5d')]+=utils[_0x85d5('0x37')](utils['now'](),queues[_0x857b7c['uniqueid']]['musiconholdstartAt']);utils[_0x85d5('0x3')](util[_0x85d5('0x4')](_0x85d5('0x67'),_0x857b7c[_0x85d5('0x5')],queues[_0x857b7c[_0x85d5('0x5')]]['name'],queues[_0x857b7c['uniqueid']]['mohtime']));delete queues[_0x857b7c[_0x85d5('0x5')]][_0x85d5('0x65')];}}}catch(_0x564f97){utils[_0x85d5('0x17')](util[_0x85d5('0x4')](_0x85d5('0x66'),_0x857b7c['uniqueid']),_0x564f97);}};
\ No newline at end of file
+var _0xb376=['connectedlinenum','connectedlinename','holdtime','diffTime','queuecallerjoinAt','count','agentconnect','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','assigned','[%s][queues][agentconnect]','agentcomplete','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','[%s][queues][agentcomplete]','blindtransfer','transfereeuniqueid','[%s][queues][blindtransfer]','transfertype','BLIND','transferexten','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','extension','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfererexten','ATTENDEDTRANSFER','transfereelinkedid','queuecallerenterreason','clone','transfertargetuniqueid','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','secondtransfererexten','ATTENDED','transfertargetlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]','musiconholdstart','[%s][queues][musiconholdstart]','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','[%s][queues][musiconholdstop]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','./utils','info','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','queue','lastAssignedTo','calleridnum','accountcode','queuecallerexitreason','getVoiceQueueByName','then','type','request','transfereduniqueid','queuecallerjoin','debug','[%s][queues][queuecallerjoin]','position','assign','isNil','queuecallerleaveAt','queuecallerabandon','queuecallercomplete','queuecallercompleteAt','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]','varset','[%s][queues][varset]','queuestatus','toUpperCase','CONTINUE','queuecallerabandonAt','queuecallerexit','queuecallerexitAt','now','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','value','queueposition','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','error','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s'];(function(_0x2dee57,_0x50365e){var _0x1ee72a=function(_0x3e7668){while(--_0x3e7668){_0x2dee57['push'](_0x2dee57['shift']());}};_0x1ee72a(++_0x50365e);}(_0xb376,0x175));var _0x6b37=function(_0x3921bf,_0x92c829){_0x3921bf=_0x3921bf-0x0;var _0x119be5=_0xb376[_0x3921bf];return _0x119be5;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0x6b37('0x0'));var queues={};function writeDB(_0x2cb481){utils[_0x6b37('0x1')](util[_0x6b37('0x2')](_0x6b37('0x3'),_0x2cb481[_0x6b37('0x4')],_0x2cb481[_0x6b37('0x5')],_0x2cb481[_0x6b37('0x6')],_0x2cb481[_0x6b37('0x7')],_0x2cb481[_0x6b37('0x8')],_0x2cb481[_0x6b37('0x9')],_0x2cb481[_0x6b37('0xa')]));if(_0x2cb481[_0x6b37('0x6')]){utils[_0x6b37('0xb')](_0x2cb481[_0x6b37('0x6')])[_0x6b37('0xc')](function(_0x17408e){if(_0x17408e){_0x2cb481[_0x6b37('0xd')]=_0x17408e['type'];}utils[_0x6b37('0xe')]('CreateVoiceQueueReport',_0x2cb481);});}else{utils[_0x6b37('0xe')]('CreateVoiceQueueReport',_0x2cb481);}if(_0x2cb481['transfereduniqueid']){delete queues[_0x2cb481[_0x6b37('0xf')]];}else{delete queues[_0x2cb481[_0x6b37('0x4')]];}}exports[_0x6b37('0x10')]=function(_0x347c8b){try{utils[_0x6b37('0x11')](util[_0x6b37('0x2')](_0x6b37('0x12'),_0x347c8b[_0x6b37('0x4')]),_0x347c8b);utils[_0x6b37('0x1')](util[_0x6b37('0x2')]('[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s',_0x347c8b['uniqueid'],_0x347c8b[_0x6b37('0x6')],_0x347c8b[_0x6b37('0x13')]));queues[_0x347c8b['uniqueid']]=_[_0x6b37('0x14')](_0x347c8b,{'originalposition':_0x347c8b[_0x6b37('0x13')],'queuecallerjoinAt':utils['now'](),'mohtime':0x0});}catch(_0xefeb9a){utils['error'](util[_0x6b37('0x2')](_0x6b37('0x12'),_0x347c8b[_0x6b37('0x4')]),_0xefeb9a);}};exports['hangup']=function(_0x25c91c){try{if(!_[_0x6b37('0x15')](queues[_0x25c91c[_0x6b37('0x4')]])){utils[_0x6b37('0x11')](util['format']('[%s][queues][hangup]',_0x25c91c[_0x6b37('0x4')]),_0x25c91c);if(queues[_0x25c91c[_0x6b37('0x4')]][_0x6b37('0x16')]){if(!queues[_0x25c91c[_0x6b37('0x4')]][_0x6b37('0x17')]&&!queues[_0x25c91c[_0x6b37('0x4')]]['queuecallerexit']){queues[_0x25c91c['uniqueid']][_0x6b37('0x18')]=!![];queues[_0x25c91c[_0x6b37('0x4')]][_0x6b37('0x19')]=utils['now']();queues[_0x25c91c[_0x6b37('0x4')]][_0x6b37('0xa')]=_0x6b37('0x1a');}utils[_0x6b37('0x1')](util[_0x6b37('0x2')](_0x6b37('0x1b'),_0x25c91c[_0x6b37('0x4')],queues[_0x25c91c[_0x6b37('0x4')]][_0x6b37('0x1c')],queues[_0x25c91c[_0x6b37('0x4')]][_0x6b37('0xa')]));writeDB(queues[_0x25c91c[_0x6b37('0x4')]]);}else if(queues[_0x25c91c[_0x6b37('0x4')]][_0x6b37('0xf')]){utils[_0x6b37('0x1')](util[_0x6b37('0x2')]('[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s',_0x25c91c[_0x6b37('0x4')],queues[_0x25c91c[_0x6b37('0x4')]][_0x6b37('0x1c')],queues[_0x25c91c[_0x6b37('0x4')]][_0x6b37('0xf')]));queues[queues[_0x25c91c[_0x6b37('0x4')]]['transfereduniqueid']]=queues[_0x25c91c[_0x6b37('0x4')]];queues[queues[_0x25c91c[_0x6b37('0x4')]][_0x6b37('0xf')]]['queuecallerenterreason']=0x2;delete queues[_0x25c91c['uniqueid']];}}}catch(_0x4f9cf4){utils['error'](util['format'](_0x6b37('0x1d'),_0x25c91c['uniqueid']),_0x4f9cf4);}};exports[_0x6b37('0x1e')]=function(_0xe286f2){try{utils['debug'](util['format'](_0x6b37('0x1f'),_0xe286f2[_0x6b37('0x4')]),_0xe286f2);if(!_[_0x6b37('0x15')](_0xe286f2['variable'][_0x6b37('0x20')])&&_0xe286f2['value'][_0x6b37('0x21')]()!==_0x6b37('0x22')){if(!_[_0x6b37('0x15')](queues[_0xe286f2[_0x6b37('0x4')]])){queues[_0xe286f2[_0x6b37('0x4')]][_0x6b37('0x17')]=![];queues[_0xe286f2[_0x6b37('0x4')]][_0x6b37('0x23')]=null;queues[_0xe286f2[_0x6b37('0x4')]][_0x6b37('0x24')]=!![];queues[_0xe286f2[_0x6b37('0x4')]][_0x6b37('0x25')]=utils[_0x6b37('0x26')]();queues[_0xe286f2[_0x6b37('0x4')]]['queuecallerexitreason']=_0xe286f2['value'][_0x6b37('0x21')]();utils[_0x6b37('0x1')](util[_0x6b37('0x2')](_0x6b37('0x27'),_0xe286f2[_0x6b37('0x4')],queues[_0xe286f2[_0x6b37('0x4')]][_0x6b37('0x1c')],_0xe286f2[_0x6b37('0x28')],queues[_0xe286f2['uniqueid']][_0x6b37('0xa')]));writeDB(queues[_0xe286f2[_0x6b37('0x4')]]);}}else if(!_[_0x6b37('0x15')](_0xe286f2['variable'][_0x6b37('0x29')])){if(!_[_0x6b37('0x15')](queues[_0xe286f2[_0x6b37('0x4')]])&&!queues[_0xe286f2[_0x6b37('0x4')]][_0x6b37('0x17')]){queues[_0xe286f2[_0x6b37('0x4')]][_0x6b37('0x17')]=![];queues[_0xe286f2[_0x6b37('0x4')]][_0x6b37('0x23')]=null;queues[_0xe286f2[_0x6b37('0x4')]][_0x6b37('0x24')]=!![];queues[_0xe286f2[_0x6b37('0x4')]][_0x6b37('0x25')]=utils['now']();queues[_0xe286f2['uniqueid']][_0x6b37('0xa')]=_0x6b37('0x2a');utils[_0x6b37('0x1')](util[_0x6b37('0x2')](_0x6b37('0x2b'),_0xe286f2['uniqueid'],queues[_0xe286f2['uniqueid']][_0x6b37('0x1c')],_0xe286f2[_0x6b37('0x28')],queues[_0xe286f2[_0x6b37('0x4')]]['queuecallerexitreason']));}}}catch(_0x5691e9){utils[_0x6b37('0x2c')](util[_0x6b37('0x2')](_0x6b37('0x1f'),_0xe286f2[_0x6b37('0x4')]),_0x5691e9);}};exports['queuecallerabandon']=function(_0x290d9a){try{if(!_['isNil'](queues[_0x290d9a[_0x6b37('0x4')]])){utils[_0x6b37('0x11')](util['format']('[%s][queues][queuecallerabandon]',_0x290d9a[_0x6b37('0x4')]),_0x290d9a);queues[_0x290d9a['uniqueid']][_0x6b37('0x24')]=![];queues[_0x290d9a['uniqueid']][_0x6b37('0x25')]=null;queues[_0x290d9a['uniqueid']]['queuecallerabandon']=!![];queues[_0x290d9a[_0x6b37('0x4')]]['queuecallerabandonAt']=utils[_0x6b37('0x26')]();queues[_0x290d9a[_0x6b37('0x4')]][_0x6b37('0xa')]=_0x6b37('0x2d');utils['info'](util[_0x6b37('0x2')](_0x6b37('0x2e'),_0x290d9a[_0x6b37('0x4')],queues[_0x290d9a[_0x6b37('0x4')]][_0x6b37('0x1c')],queues[_0x290d9a[_0x6b37('0x4')]][_0x6b37('0xa')]));}}catch(_0x1d7e31){utils[_0x6b37('0x2c')](util[_0x6b37('0x2')](_0x6b37('0x2f'),_0x290d9a[_0x6b37('0x4')]),_0x1d7e31);}};exports[_0x6b37('0x30')]=function(_0x4438e3){try{if(!_[_0x6b37('0x15')](queues[_0x4438e3[_0x6b37('0x4')]])){utils[_0x6b37('0x11')](util[_0x6b37('0x2')](_0x6b37('0x31'),_0x4438e3[_0x6b37('0x4')]),_0x4438e3);utils[_0x6b37('0x1')](util[_0x6b37('0x2')](_0x6b37('0x32'),_0x4438e3[_0x6b37('0x4')],queues[_0x4438e3['uniqueid']]['name'],_0x4438e3[_0x6b37('0x33')],_0x4438e3[_0x6b37('0x34')]));queues[_0x4438e3['uniqueid']][_0x6b37('0x30')]=!![];queues[_0x4438e3[_0x6b37('0x4')]]['queuecallerleaveAt']=utils[_0x6b37('0x26')]();queues[_0x4438e3['uniqueid']][_0x6b37('0x35')]=utils[_0x6b37('0x36')](queues[_0x4438e3[_0x6b37('0x4')]][_0x6b37('0x16')],queues[_0x4438e3[_0x6b37('0x4')]][_0x6b37('0x37')]);queues[_0x4438e3[_0x6b37('0x4')]][_0x6b37('0x13')]=_0x4438e3['position'];queues[_0x4438e3[_0x6b37('0x4')]][_0x6b37('0x38')]=_0x4438e3[_0x6b37('0x38')];queues[_0x4438e3[_0x6b37('0x4')]][_0x6b37('0x33')]=_0x4438e3[_0x6b37('0x33')];queues[_0x4438e3['uniqueid']][_0x6b37('0x34')]=_0x4438e3[_0x6b37('0x34')];}}catch(_0x31797b){utils[_0x6b37('0x2c')](util[_0x6b37('0x2')]('[%s][queues][queuecallerleave]',_0x4438e3[_0x6b37('0x4')]),_0x31797b);}};exports[_0x6b37('0x39')]=function(_0x6fd985){try{if(!_[_0x6b37('0x15')](queues[_0x6fd985[_0x6b37('0x4')]])){utils[_0x6b37('0x11')](util[_0x6b37('0x2')]('[%s][queues][agentconnect]',_0x6fd985[_0x6b37('0x4')]),_0x6fd985);utils['info'](util[_0x6b37('0x2')](_0x6b37('0x3a'),_0x6fd985[_0x6b37('0x4')],queues[_0x6fd985[_0x6b37('0x4')]][_0x6b37('0x1c')],_0x6fd985[_0x6b37('0x3b')],_0x6fd985[_0x6b37('0x3c')]));queues[_0x6fd985[_0x6b37('0x4')]][_0x6b37('0x17')]=![];queues[_0x6fd985[_0x6b37('0x4')]][_0x6b37('0x17')]=![];queues[_0x6fd985[_0x6b37('0x4')]]['queuecallerabandonAt']=null;queues[_0x6fd985['uniqueid']][_0x6b37('0x24')]=![];queues[_0x6fd985[_0x6b37('0x4')]][_0x6b37('0xa')]=null;queues[_0x6fd985[_0x6b37('0x4')]][_0x6b37('0x25')]=null;queues[_0x6fd985[_0x6b37('0x4')]][_0x6b37('0x3d')]=!![];queues[_0x6fd985[_0x6b37('0x4')]][_0x6b37('0x9')]=_0x6fd985[_0x6b37('0x3c')];queues[_0x6fd985['uniqueid']][_0x6b37('0x7')]=_0x6fd985[_0x6b37('0x3b')];}}catch(_0x39f0da){utils[_0x6b37('0x2c')](util[_0x6b37('0x2')](_0x6b37('0x3e'),_0x6fd985['uniqueid']),_0x39f0da);}};exports[_0x6b37('0x3f')]=function(_0x4a170c){try{if(!_[_0x6b37('0x15')](queues[_0x4a170c[_0x6b37('0x4')]])){if(queues[_0x4a170c[_0x6b37('0x4')]][_0x6b37('0x16')]){utils[_0x6b37('0x11')](util[_0x6b37('0x2')]('[%s][queues][agentcomplete]',_0x4a170c[_0x6b37('0x4')]),_0x4a170c);queues[_0x4a170c[_0x6b37('0x4')]][_0x6b37('0x17')]=![];queues[_0x4a170c[_0x6b37('0x4')]]['queuecallerabandon']=![];queues[_0x4a170c[_0x6b37('0x4')]][_0x6b37('0x23')]=null;queues[_0x4a170c['uniqueid']]['queuecallerexit']=![];queues[_0x4a170c['uniqueid']][_0x6b37('0x25')]=null;queues[_0x4a170c[_0x6b37('0x4')]]['assigned']=!![];queues[_0x4a170c[_0x6b37('0x4')]][_0x6b37('0x7')]=_0x4a170c[_0x6b37('0x3b')];queues[_0x4a170c[_0x6b37('0x4')]][_0x6b37('0x18')]=!![];queues[_0x4a170c[_0x6b37('0x4')]][_0x6b37('0x19')]=utils['now']();if(_0x4a170c[_0x6b37('0x40')]==_0x6b37('0x41')){if(!queues[_0x4a170c[_0x6b37('0x4')]][_0x6b37('0x41')]){queues[_0x4a170c[_0x6b37('0x4')]]['queuecallerexitreason']=_0x6b37('0x42');}}else{queues[_0x4a170c[_0x6b37('0x4')]]['queuecallerexitreason']=_0x6b37('0x43')+_0x4a170c[_0x6b37('0x40')][_0x6b37('0x21')]();}utils[_0x6b37('0x1')](util['format'](_0x6b37('0x44'),_0x4a170c['uniqueid'],queues[_0x4a170c['uniqueid']][_0x6b37('0x1c')],_0x4a170c[_0x6b37('0x3b')],queues[_0x4a170c[_0x6b37('0x4')]][_0x6b37('0xa')]));writeDB(queues[_0x4a170c[_0x6b37('0x4')]]);}}}catch(_0x215796){utils[_0x6b37('0x2c')](util['format'](_0x6b37('0x45'),_0x4a170c['uniqueid']),_0x215796);}};exports[_0x6b37('0x46')]=function(_0x484b54){try{if(!_[_0x6b37('0x15')](queues[_0x484b54[_0x6b37('0x47')]])){utils[_0x6b37('0x11')](util[_0x6b37('0x2')](_0x6b37('0x48'),_0x484b54['uniqueid']),_0x484b54);queues[_0x484b54[_0x6b37('0x47')]][_0x6b37('0x41')]=!![];queues[_0x484b54['transfereeuniqueid']][_0x6b37('0x49')]=_0x6b37('0x4a');queues[_0x484b54[_0x6b37('0x47')]][_0x6b37('0x4b')]=_0x484b54['extension'];queues[_0x484b54[_0x6b37('0x47')]][_0x6b37('0x4c')]=_0x484b54[_0x6b37('0x47')];queues[_0x484b54[_0x6b37('0x47')]][_0x6b37('0xa')]=_0x6b37('0x4d');utils['info'](util[_0x6b37('0x2')](_0x6b37('0x4e'),_0x484b54[_0x6b37('0x4')],queues[_0x484b54[_0x6b37('0x47')]][_0x6b37('0x1c')],_0x484b54[_0x6b37('0x47')],_0x484b54[_0x6b37('0x4f')]));}}catch(_0xe9e96a){utils['error'](util['format'](_0x6b37('0x48'),_0x484b54[_0x6b37('0x4')]),_0xe9e96a);}};exports['attendedtransfer']=function(_0x5b7d6c){try{utils[_0x6b37('0x11')](util['format']('[%s][queues][attendedtransfer]',_0x5b7d6c[_0x6b37('0x50')]),_0x5b7d6c);if(_0x5b7d6c[_0x6b37('0x50')]==_0x5b7d6c[_0x6b37('0x51')]){if(!_['isNil'](queues[_0x5b7d6c[_0x6b37('0x52')]])){utils[_0x6b37('0x1')](util[_0x6b37('0x2')](_0x6b37('0x53'),_0x5b7d6c[_0x6b37('0x50')],queues[_0x5b7d6c['secondtransfererlinkedid']][_0x6b37('0x1c')],_0x5b7d6c['origtransfererexten']));queues[_0x5b7d6c[_0x6b37('0x52')]][_0x6b37('0x41')]=!![];queues[_0x5b7d6c[_0x6b37('0x52')]][_0x6b37('0x49')]='ATTENDED';queues[_0x5b7d6c[_0x6b37('0x52')]]['transferexten']=_0x5b7d6c[_0x6b37('0x54')];queues[_0x5b7d6c[_0x6b37('0x52')]]['transferuniqueid']=_0x5b7d6c[_0x6b37('0x50')];queues[_0x5b7d6c['secondtransfererlinkedid']]['queuecallerexitreason']=_0x6b37('0x55');}if(!_[_0x6b37('0x15')](queues[_0x5b7d6c['origtransfererlinkedid']])){if(_0x5b7d6c[_0x6b37('0x56')]&&queues[_0x5b7d6c[_0x6b37('0x56')]]){queues[_0x5b7d6c[_0x6b37('0x56')]][_0x6b37('0x57')]=0x1;queues[_0x5b7d6c['transfereeuniqueid']]=_[_0x6b37('0x58')](queues[_0x5b7d6c[_0x6b37('0x56')]]);queues[_0x5b7d6c[_0x6b37('0x47')]]['transfereduniqueid']=_0x5b7d6c[_0x6b37('0x59')];queues[_0x5b7d6c[_0x6b37('0x47')]]['queuecallerenterreason']=0x2;queues[_0x5b7d6c[_0x6b37('0x47')]][_0x6b37('0x8')]=queues[_0x5b7d6c['secondtransfererlinkedid']]['calleridnum'];queues[_0x5b7d6c[_0x6b37('0x47')]][_0x6b37('0x5a')]=queues[_0x5b7d6c[_0x6b37('0x52')]]['calleridname'];queues[_0x5b7d6c['transfereeuniqueid']]['queuecallerjoinAt']=utils[_0x6b37('0x26')]();queues[_0x5b7d6c[_0x6b37('0x47')]][_0x6b37('0x16')]=utils[_0x6b37('0x26')]();queues[_0x5b7d6c['transfereeuniqueid']][_0x6b37('0x35')]=0x0;queues[_0x5b7d6c['transfereeuniqueid']][_0x6b37('0x5b')]=0x0;utils['info'](util[_0x6b37('0x2')](_0x6b37('0x5c'),_0x5b7d6c[_0x6b37('0x50')],queues[_0x5b7d6c[_0x6b37('0x47')]][_0x6b37('0x1c')],queues[_0x5b7d6c['transfereeuniqueid']][_0x6b37('0x8')],queues[_0x5b7d6c[_0x6b37('0x47')]][_0x6b37('0x5a')]));}else{utils[_0x6b37('0x1')](util[_0x6b37('0x2')](_0x6b37('0x5d'),_0x5b7d6c[_0x6b37('0x50')],queues[_0x5b7d6c['origtransfererlinkedid']][_0x6b37('0x1c')],_0x5b7d6c['secondtransfererlinkedid']));queues[_0x5b7d6c[_0x6b37('0x51')]][_0x6b37('0xf')]=_0x5b7d6c['secondtransfererlinkedid'];}}}else if(_0x5b7d6c[_0x6b37('0x5e')]==_0x5b7d6c[_0x6b37('0x52')]){if(!_[_0x6b37('0x15')](queues[_0x5b7d6c[_0x6b37('0x51')]])){utils['info'](util[_0x6b37('0x2')]('[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x5b7d6c[_0x6b37('0x50')],queues[_0x5b7d6c[_0x6b37('0x51')]]['name'],_0x5b7d6c[_0x6b37('0x5e')],_0x5b7d6c[_0x6b37('0x5f')]));queues[_0x5b7d6c[_0x6b37('0x51')]][_0x6b37('0x41')]=!![];queues[_0x5b7d6c[_0x6b37('0x51')]][_0x6b37('0x49')]=_0x6b37('0x60');queues[_0x5b7d6c[_0x6b37('0x51')]][_0x6b37('0x4b')]=_0x5b7d6c[_0x6b37('0x5f')];queues[_0x5b7d6c[_0x6b37('0x51')]][_0x6b37('0x4c')]=_0x5b7d6c[_0x6b37('0x5e')];queues[_0x5b7d6c['origtransfererlinkedid']]['queuecallerexitreason']=_0x6b37('0x55');}if(!_['isNil'](queues[_0x5b7d6c[_0x6b37('0x52')]])){if(_0x5b7d6c[_0x6b37('0x61')]&&queues[_0x5b7d6c[_0x6b37('0x61')]]){queues[_0x5b7d6c[_0x6b37('0x61')]][_0x6b37('0x57')]=0x1;queues[_0x5b7d6c['transfertargetuniqueid']]=_[_0x6b37('0x58')](queues[_0x5b7d6c['transfertargetlinkedid']]);queues[_0x5b7d6c[_0x6b37('0x59')]]['transfereduniqueid']=_0x5b7d6c[_0x6b37('0x59')];queues[_0x5b7d6c['transfertargetuniqueid']]['queuecallerenterreason']=0x2;queues[_0x5b7d6c['transfertargetuniqueid']][_0x6b37('0x8')]=queues[_0x5b7d6c[_0x6b37('0x51')]][_0x6b37('0x8')];queues[_0x5b7d6c[_0x6b37('0x59')]]['calleridname']=queues[_0x5b7d6c[_0x6b37('0x51')]][_0x6b37('0x5a')];queues[_0x5b7d6c[_0x6b37('0x59')]][_0x6b37('0x37')]=utils[_0x6b37('0x26')]();queues[_0x5b7d6c[_0x6b37('0x59')]][_0x6b37('0x16')]=utils['now']();queues[_0x5b7d6c['transfertargetuniqueid']][_0x6b37('0x35')]=0x0;queues[_0x5b7d6c['transfertargetuniqueid']][_0x6b37('0x5b')]=0x0;utils[_0x6b37('0x1')](util['format'](_0x6b37('0x62'),_0x5b7d6c[_0x6b37('0x50')],queues[_0x5b7d6c[_0x6b37('0x59')]][_0x6b37('0x1c')],queues[_0x5b7d6c[_0x6b37('0x59')]][_0x6b37('0xf')],queues[_0x5b7d6c[_0x6b37('0x59')]][_0x6b37('0x8')],queues[_0x5b7d6c[_0x6b37('0x59')]][_0x6b37('0x5a')]));}else{utils[_0x6b37('0x1')](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x5b7d6c[_0x6b37('0x50')],queues[_0x5b7d6c['secondtransfererlinkedid']][_0x6b37('0x1c')],_0x5b7d6c[_0x6b37('0x51')]));queues[_0x5b7d6c[_0x6b37('0x52')]][_0x6b37('0xf')]=_0x5b7d6c[_0x6b37('0x51')];}}}}catch(_0x499659){utils[_0x6b37('0x2c')](util[_0x6b37('0x2')](_0x6b37('0x63'),_0x5b7d6c['origtransfereruniqueid']),_0x499659);}};exports[_0x6b37('0x64')]=function(_0x2658ed){try{if(!_['isNil'](queues[_0x2658ed['uniqueid']])){utils['debug'](util[_0x6b37('0x2')](_0x6b37('0x65'),_0x2658ed[_0x6b37('0x4')]),_0x2658ed);queues[_0x2658ed[_0x6b37('0x4')]]['musiconholdstartAt']=utils[_0x6b37('0x26')]();utils['info'](util['format'](_0x6b37('0x66'),_0x2658ed['uniqueid'],queues[_0x2658ed['uniqueid']][_0x6b37('0x1c')],queues[_0x2658ed[_0x6b37('0x4')]]['musiconholdstartAt']));}}catch(_0x5d75ff){utils[_0x6b37('0x2c')](util[_0x6b37('0x2')]('[%s][queues][musiconholdstart]',_0x2658ed['uniqueid']),_0x5d75ff);}};exports['musiconholdstop']=function(_0x8c59e5){try{if(!_[_0x6b37('0x15')](queues[_0x8c59e5[_0x6b37('0x4')]])){if(!_[_0x6b37('0x15')](queues[_0x8c59e5[_0x6b37('0x4')]]['musiconholdstartAt'])){utils[_0x6b37('0x11')](util[_0x6b37('0x2')](_0x6b37('0x67'),_0x8c59e5[_0x6b37('0x4')]),_0x8c59e5);queues[_0x8c59e5[_0x6b37('0x4')]][_0x6b37('0x5b')]+=utils['diffTime'](utils[_0x6b37('0x26')](),queues[_0x8c59e5['uniqueid']][_0x6b37('0x68')]);utils['info'](util[_0x6b37('0x2')](_0x6b37('0x69'),_0x8c59e5[_0x6b37('0x4')],queues[_0x8c59e5[_0x6b37('0x4')]][_0x6b37('0x1c')],queues[_0x8c59e5[_0x6b37('0x4')]][_0x6b37('0x5b')]));delete queues[_0x8c59e5['uniqueid']][_0x6b37('0x68')];}}}catch(_0x4c2478){utils[_0x6b37('0x2c')](util[_0x6b37('0x2')](_0x6b37('0x67'),_0x8c59e5[_0x6b37('0x4')]),_0x4c2478);}};
\ No newline at end of file
index 19fb11f..08694d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fa6=['transfer','channel','[%s][recordings][newstate]','variable','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','replace','.wav49','find','monitors','push','hangup','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','type','outbound','forEach','clone','newexten','[%s][recordings][newexten]','application','set','startsWith','appdata','toLowerCase','substring','lastIndexOf','queuecallerjoin','queue','[%s][recordings][queuecallerjoin]','blindtransfer','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','transfereruniqueid','recording','[%s][recordings][blindtransfer]','lodash','util','./utils','./transfers.controller','format','[%s][recordings][writeDB]','uniqueid','blinds','accountcode','getUserByInternal','then','membername','UserId','request','CreateVoiceRecording','[%s][recordings][newchannel]','linkedid','info','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','error','debug','isNil','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s'];(function(_0x436d66,_0xdead0e){var _0x54ee38=function(_0x3b26f8){while(--_0x3b26f8){_0x436d66['push'](_0x436d66['shift']());}};_0x54ee38(++_0xdead0e);}(_0x1fa6,0x106));var _0x61fa=function(_0x10b66c,_0x3d36b3){_0x10b66c=_0x10b66c-0x0;var _0x48ba81=_0x1fa6[_0x10b66c];return _0x48ba81;};'use strict';var _=require(_0x61fa('0x0'));var util=require(_0x61fa('0x1'));var utils=require(_0x61fa('0x2'));var transfers=require(_0x61fa('0x3'));var recordings={};function writeDB(_0x36fdbd){var _0x3a846a;utils['info'](util[_0x61fa('0x4')](_0x61fa('0x5'),_0x36fdbd[_0x61fa('0x6')]));if(transfers[_0x61fa('0x7')][_0x36fdbd[_0x61fa('0x6')]]){_0x3a846a=_0x36fdbd[_0x61fa('0x6')];_0x36fdbd[_0x61fa('0x6')]=transfers['blinds'][_0x36fdbd['uniqueid']]['transfereeuniqueid'];}if(_0x36fdbd[_0x61fa('0x8')]){utils[_0x61fa('0x9')](_0x36fdbd[_0x61fa('0x8')])[_0x61fa('0xa')](function(_0x288c51){if(_0x288c51){_0x36fdbd[_0x61fa('0xb')]=_0x288c51['name'];_0x36fdbd[_0x61fa('0xc')]=_0x288c51['id'];}utils[_0x61fa('0xd')](_0x61fa('0xe'),_0x36fdbd);});}else{utils['request']('CreateVoiceRecording',_0x36fdbd);}if(_0x3a846a)delete transfers[_0x61fa('0x7')][_0x3a846a];}exports['newchannel']=function(_0x58957a){try{utils['debug'](util[_0x61fa('0x4')](_0x61fa('0xf'),_0x58957a[_0x61fa('0x6')]),_0x58957a);if(_0x58957a[_0x61fa('0x6')]==_0x58957a[_0x61fa('0x10')]){utils[_0x61fa('0x11')](util[_0x61fa('0x4')](_0x61fa('0x12'),_0x58957a[_0x61fa('0x6')],_0x58957a[_0x61fa('0x13')],_0x58957a['exten']));recordings[_0x58957a[_0x61fa('0x6')]]={'uniqueid':_0x58957a[_0x61fa('0x6')],'accountcode':_0x58957a[_0x61fa('0x8')],'exten':_0x58957a[_0x61fa('0x14')],'context':_0x58957a['context'],'channel':_0x58957a['channel'],'monitors':[]};}}catch(_0x1fc07b){utils[_0x61fa('0x15')](util['format'](_0x61fa('0xf'),_0x58957a[_0x61fa('0x6')]),_0x1fc07b);}};exports['newstate']=function(_0x5a01ac){try{utils[_0x61fa('0x16')](util['format']('[%s][recordings][newstate]',_0x5a01ac[_0x61fa('0x6')]),_0x5a01ac);if(!_[_0x61fa('0x17')](recordings[_0x5a01ac['uniqueid']])&&_0x5a01ac[_0x61fa('0x18')]==0x6){utils[_0x61fa('0x11')](util['format'](_0x61fa('0x19'),_0x5a01ac['uniqueid'],_0x5a01ac['context'],_0x5a01ac['channel']));}else if(!_[_0x61fa('0x17')](recordings[_0x5a01ac[_0x61fa('0x10')]])&&_0x5a01ac[_0x61fa('0x18')]==0x6&&_0x5a01ac[_0x61fa('0x13')]!=_0x61fa('0x1a')){utils[_0x61fa('0x11')](util['format']('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x5a01ac['uniqueid'],_0x5a01ac['linkedid'],_0x5a01ac[_0x61fa('0x13')],_0x5a01ac[_0x61fa('0x1b')]));recordings[_0x5a01ac[_0x61fa('0x10')]]['accountcode']=_0x5a01ac[_0x61fa('0x8')];}}catch(_0x373a50){utils[_0x61fa('0x15')](util['format'](_0x61fa('0x1c'),_0x5a01ac[_0x61fa('0x6')]),_0x373a50);}};exports['varset']=function(_0x4e5413){try{if(!_[_0x61fa('0x17')](_0x4e5413[_0x61fa('0x1d')])&&!_['isNil'](_0x4e5413['variable']['mixmonitor_filename'])){utils[_0x61fa('0x16')](util[_0x61fa('0x4')](_0x61fa('0x1e'),_0x4e5413[_0x61fa('0x6')]),_0x4e5413);utils[_0x61fa('0x11')](util[_0x61fa('0x4')](_0x61fa('0x1f'),_0x4e5413[_0x61fa('0x6')],_0x4e5413[_0x61fa('0x1d')],_0x4e5413[_0x61fa('0x20')]));if(_[_0x61fa('0x21')](_0x4e5413['value'],'.wav49')){_0x4e5413[_0x61fa('0x20')]=_0x4e5413[_0x61fa('0x20')][_0x61fa('0x22')](_0x61fa('0x23'),'.WAV');}if(recordings[_0x4e5413['linkedid']]){var _0x3a7616=_[_0x61fa('0x24')](recordings[_0x4e5413[_0x61fa('0x10')]]['monitors'],{'value':_0x4e5413[_0x61fa('0x20')]});if(_[_0x61fa('0x17')](_0x3a7616)){recordings[_0x4e5413['linkedid']][_0x61fa('0x25')][_0x61fa('0x26')]({'value':_0x4e5413[_0x61fa('0x20')]});}}}}catch(_0x3617f9){utils[_0x61fa('0x15')](util[_0x61fa('0x4')](_0x61fa('0x1e'),_0x4e5413['uniqueid']),_0x3617f9);}};exports[_0x61fa('0x27')]=function(_0x328a13){try{if(!_['isNil'](recordings[_0x328a13[_0x61fa('0x6')]])){utils[_0x61fa('0x16')](util[_0x61fa('0x4')](_0x61fa('0x28'),_0x328a13[_0x61fa('0x6')]),_0x328a13);utils['info'](util['format'](_0x61fa('0x29'),_0x328a13[_0x61fa('0x6')],_0x328a13[_0x61fa('0x2a')],_0x328a13[_0x61fa('0x2b')],_0x328a13[_0x61fa('0x2c')]));recordings[_0x328a13[_0x61fa('0x6')]][_0x61fa('0x2a')]=_0x328a13[_0x61fa('0x2a')];recordings[_0x328a13['uniqueid']][_0x61fa('0x2b')]=_0x328a13[_0x61fa('0x2b')];recordings[_0x328a13[_0x61fa('0x6')]][_0x61fa('0x2d')]=_0x328a13[_0x61fa('0x2d')];recordings[_0x328a13['uniqueid']][_0x61fa('0x2e')]=_0x328a13['connectedlinename'];if(recordings[_0x328a13[_0x61fa('0x6')]][_0x61fa('0x2f')]==_0x61fa('0x30')&&recordings[_0x328a13[_0x61fa('0x6')]][_0x61fa('0x8')]){recordings[_0x328a13[_0x61fa('0x6')]][_0x61fa('0x2d')]=recordings[_0x328a13['uniqueid']][_0x61fa('0x8')];recordings[_0x328a13[_0x61fa('0x6')]]['connectedlinename']='';}recordings[_0x328a13[_0x61fa('0x6')]][_0x61fa('0x25')][_0x61fa('0x31')](function(_0x46e38c){var _0x1d2ce4=_[_0x61fa('0x32')](recordings[_0x328a13[_0x61fa('0x6')]]);_0x1d2ce4[_0x61fa('0x20')]=_0x46e38c['value'];writeDB(_0x1d2ce4);});delete recordings[_0x328a13[_0x61fa('0x6')]];}}catch(_0x311ea1){utils[_0x61fa('0x15')](util[_0x61fa('0x4')](_0x61fa('0x28'),_0x328a13['uniqueid']),_0x311ea1);}};exports[_0x61fa('0x33')]=function(_0x4a55d1){try{if(!_[_0x61fa('0x17')](recordings[_0x4a55d1[_0x61fa('0x6')]])){utils[_0x61fa('0x16')](util['format'](_0x61fa('0x34'),_0x4a55d1[_0x61fa('0x6')]),_0x4a55d1);utils['info'](util['format']('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x4a55d1[_0x61fa('0x6')],_0x4a55d1[_0x61fa('0x35')],_0x4a55d1['appdata']));if(_0x4a55d1[_0x61fa('0x35')]['toLowerCase']()==_0x61fa('0x36')&&_[_0x61fa('0x37')](_0x4a55d1[_0x61fa('0x38')][_0x61fa('0x39')](),'cdr')){var _0x5b8106=_0x4a55d1[_0x61fa('0x38')]['split']('=');var _0x1eff06=_0x5b8106[0x0][_0x61fa('0x3a')](_0x5b8106[0x0][_0x61fa('0x3b')]('(')+0x1,_0x5b8106[0x0][_0x61fa('0x3b')](')'));var _0x2bb37a=_0x5b8106[0x1];recordings[_0x4a55d1[_0x61fa('0x6')]][_0x1eff06]=_0x2bb37a;}}}catch(_0x983343){utils['error'](util['format'](_0x61fa('0x34'),_0x4a55d1[_0x61fa('0x6')]),_0x983343);}};exports[_0x61fa('0x3c')]=function(_0x25b34c){try{if(!_['isNil'](recordings[_0x25b34c[_0x61fa('0x6')]])){utils[_0x61fa('0x16')](util[_0x61fa('0x4')]('[%s][recordings][queuecallerjoin]',_0x25b34c[_0x61fa('0x6')]),_0x25b34c);utils[_0x61fa('0x11')](util[_0x61fa('0x4')]('[%s][recordings][queuecallerjoin]\x20queue:%s',_0x25b34c['uniqueid'],_0x25b34c[_0x61fa('0x3d')]));recordings[_0x25b34c[_0x61fa('0x6')]][_0x61fa('0x3d')]=_0x25b34c[_0x61fa('0x3d')];}}catch(_0x3fdec6){utils[_0x61fa('0x15')](util[_0x61fa('0x4')](_0x61fa('0x3e'),_0x25b34c[_0x61fa('0x6')]),_0x3fdec6);}};exports[_0x61fa('0x3f')]=function(_0x5a6c90){try{utils[_0x61fa('0x16')](util[_0x61fa('0x4')]('[%s][recordings][blindtransfer]',_0x5a6c90[_0x61fa('0x6')]),_0x5a6c90);utils['info'](util[_0x61fa('0x4')](_0x61fa('0x40'),_0x5a6c90[_0x61fa('0x6')],_0x5a6c90[_0x61fa('0x41')],_0x5a6c90[_0x61fa('0x42')],_0x5a6c90[_0x61fa('0x43')],_0x5a6c90[_0x61fa('0x44')]));if(recordings[_0x5a6c90['transfereruniqueid']]&&transfers['blinds'][_0x5a6c90[_0x61fa('0x45')]]){transfers[_0x61fa('0x7')][_0x5a6c90[_0x61fa('0x45')]][_0x61fa('0x46')]=!![];}}catch(_0x44f282){utils[_0x61fa('0x15')](util['format'](_0x61fa('0x47'),_0x5a6c90['uniqueid']),_0x44f282);}};
\ No newline at end of file
+var _0xd26e=['set','startsWith','cdr','split','substring','lastIndexOf','[%s][recordings][newexten]','[%s][recordings][queuecallerjoin]','queue','blindtransfer','[%s][recordings][blindtransfer]','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridname','transfereruniqueid','recording','lodash','util','./transfers.controller','info','[%s][recordings][writeDB]','uniqueid','blinds','transfereeuniqueid','accountcode','getUserByInternal','membername','name','UserId','request','CreateVoiceRecording','debug','format','[%s][recordings][newchannel]','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','error','newstate','[%s][recordings][newstate]','isNil','linkedid','channelstate','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','varset','variable','[%s][recordings][varset]\x20variable:%s\x20value:%s','endsWith','value','replace','.wav49','.WAV','find','monitors','push','[%s][recordings][varset]','hangup','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','type','outbound','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase'];(function(_0x2fdb39,_0x41ff49){var _0x2f2f7e=function(_0x522fb5){while(--_0x522fb5){_0x2fdb39['push'](_0x2fdb39['shift']());}};_0x2f2f7e(++_0x41ff49);}(_0xd26e,0x135));var _0xed26=function(_0x57fc06,_0xb11b51){_0x57fc06=_0x57fc06-0x0;var _0x4596b6=_0xd26e[_0x57fc06];return _0x4596b6;};'use strict';var _=require(_0xed26('0x0'));var util=require(_0xed26('0x1'));var utils=require('./utils');var transfers=require(_0xed26('0x2'));var recordings={};function writeDB(_0x4c2a24){var _0x3a57a2;utils[_0xed26('0x3')](util['format'](_0xed26('0x4'),_0x4c2a24[_0xed26('0x5')]));if(transfers['blinds'][_0x4c2a24[_0xed26('0x5')]]){_0x3a57a2=_0x4c2a24[_0xed26('0x5')];_0x4c2a24['uniqueid']=transfers[_0xed26('0x6')][_0x4c2a24[_0xed26('0x5')]][_0xed26('0x7')];}if(_0x4c2a24[_0xed26('0x8')]){utils[_0xed26('0x9')](_0x4c2a24['accountcode'])['then'](function(_0x15d129){if(_0x15d129){_0x4c2a24[_0xed26('0xa')]=_0x15d129[_0xed26('0xb')];_0x4c2a24[_0xed26('0xc')]=_0x15d129['id'];}utils[_0xed26('0xd')]('CreateVoiceRecording',_0x4c2a24);});}else{utils[_0xed26('0xd')](_0xed26('0xe'),_0x4c2a24);}if(_0x3a57a2)delete transfers[_0xed26('0x6')][_0x3a57a2];}exports['newchannel']=function(_0x4e385c){try{utils[_0xed26('0xf')](util[_0xed26('0x10')](_0xed26('0x11'),_0x4e385c[_0xed26('0x5')]),_0x4e385c);if(_0x4e385c[_0xed26('0x5')]==_0x4e385c['linkedid']){utils[_0xed26('0x3')](util['format'](_0xed26('0x12'),_0x4e385c['uniqueid'],_0x4e385c[_0xed26('0x13')],_0x4e385c['exten']));recordings[_0x4e385c[_0xed26('0x5')]]={'uniqueid':_0x4e385c[_0xed26('0x5')],'accountcode':_0x4e385c['accountcode'],'exten':_0x4e385c[_0xed26('0x14')],'context':_0x4e385c['context'],'channel':_0x4e385c[_0xed26('0x15')],'monitors':[]};}}catch(_0x178fa4){utils[_0xed26('0x16')](util[_0xed26('0x10')](_0xed26('0x11'),_0x4e385c[_0xed26('0x5')]),_0x178fa4);}};exports[_0xed26('0x17')]=function(_0xdad769){try{utils[_0xed26('0xf')](util[_0xed26('0x10')](_0xed26('0x18'),_0xdad769['uniqueid']),_0xdad769);if(!_['isNil'](recordings[_0xdad769[_0xed26('0x5')]])&&_0xdad769['channelstate']==0x6){utils['info'](util[_0xed26('0x10')]('[%s][recordings][newstate]\x20context:%s\x20channel:%s',_0xdad769[_0xed26('0x5')],_0xdad769[_0xed26('0x13')],_0xdad769[_0xed26('0x15')]));}else if(!_[_0xed26('0x19')](recordings[_0xdad769[_0xed26('0x1a')]])&&_0xdad769[_0xed26('0x1b')]==0x6&&_0xdad769[_0xed26('0x13')]!=_0xed26('0x1c')){utils[_0xed26('0x3')](util[_0xed26('0x10')](_0xed26('0x1d'),_0xdad769[_0xed26('0x5')],_0xdad769[_0xed26('0x1a')],_0xdad769[_0xed26('0x13')],_0xdad769[_0xed26('0x15')]));recordings[_0xdad769[_0xed26('0x1a')]][_0xed26('0x8')]=_0xdad769['accountcode'];}}catch(_0x263a50){utils[_0xed26('0x16')](util[_0xed26('0x10')]('[%s][recordings][newstate]',_0xdad769[_0xed26('0x5')]),_0x263a50);}};exports[_0xed26('0x1e')]=function(_0x22cf8f){try{if(!_['isNil'](_0x22cf8f['variable'])&&!_[_0xed26('0x19')](_0x22cf8f[_0xed26('0x1f')]['mixmonitor_filename'])){utils[_0xed26('0xf')](util[_0xed26('0x10')]('[%s][recordings][varset]',_0x22cf8f[_0xed26('0x5')]),_0x22cf8f);utils[_0xed26('0x3')](util['format'](_0xed26('0x20'),_0x22cf8f[_0xed26('0x5')],_0x22cf8f[_0xed26('0x1f')],_0x22cf8f['value']));if(_[_0xed26('0x21')](_0x22cf8f[_0xed26('0x22')],'.wav49')){_0x22cf8f[_0xed26('0x22')]=_0x22cf8f['value'][_0xed26('0x23')](_0xed26('0x24'),_0xed26('0x25'));}if(recordings[_0x22cf8f[_0xed26('0x1a')]]){var _0x5101b7=_[_0xed26('0x26')](recordings[_0x22cf8f[_0xed26('0x1a')]][_0xed26('0x27')],{'value':_0x22cf8f[_0xed26('0x22')]});if(_[_0xed26('0x19')](_0x5101b7)){recordings[_0x22cf8f[_0xed26('0x1a')]]['monitors'][_0xed26('0x28')]({'value':_0x22cf8f[_0xed26('0x22')]});}}}}catch(_0x50e71c){utils[_0xed26('0x16')](util[_0xed26('0x10')](_0xed26('0x29'),_0x22cf8f['uniqueid']),_0x50e71c);}};exports[_0xed26('0x2a')]=function(_0x590e78){try{if(!_[_0xed26('0x19')](recordings[_0x590e78[_0xed26('0x5')]])){utils[_0xed26('0xf')](util[_0xed26('0x10')](_0xed26('0x2b'),_0x590e78[_0xed26('0x5')]),_0x590e78);utils[_0xed26('0x3')](util['format'](_0xed26('0x2c'),_0x590e78[_0xed26('0x5')],_0x590e78[_0xed26('0x2d')],_0x590e78[_0xed26('0x2e')],_0x590e78[_0xed26('0x2f')]));recordings[_0x590e78['uniqueid']][_0xed26('0x2d')]=_0x590e78['calleridnum'];recordings[_0x590e78['uniqueid']][_0xed26('0x2e')]=_0x590e78[_0xed26('0x2e')];recordings[_0x590e78[_0xed26('0x5')]]['connectedlinenum']=_0x590e78[_0xed26('0x30')];recordings[_0x590e78[_0xed26('0x5')]][_0xed26('0x31')]=_0x590e78[_0xed26('0x31')];if(recordings[_0x590e78[_0xed26('0x5')]][_0xed26('0x32')]==_0xed26('0x33')&&recordings[_0x590e78['uniqueid']][_0xed26('0x8')]){recordings[_0x590e78[_0xed26('0x5')]][_0xed26('0x30')]=recordings[_0x590e78['uniqueid']][_0xed26('0x8')];recordings[_0x590e78['uniqueid']][_0xed26('0x31')]='';}recordings[_0x590e78['uniqueid']]['monitors']['forEach'](function(_0x751488){var _0x22eb6f=_['clone'](recordings[_0x590e78[_0xed26('0x5')]]);_0x22eb6f[_0xed26('0x22')]=_0x751488[_0xed26('0x22')];writeDB(_0x22eb6f);});delete recordings[_0x590e78[_0xed26('0x5')]];}}catch(_0x1d66a5){utils[_0xed26('0x16')](util[_0xed26('0x10')]('[%s][recordings][hangup]',_0x590e78['uniqueid']),_0x1d66a5);}};exports['newexten']=function(_0x48dc8d){try{if(!_[_0xed26('0x19')](recordings[_0x48dc8d[_0xed26('0x5')]])){utils[_0xed26('0xf')](util[_0xed26('0x10')]('[%s][recordings][newexten]',_0x48dc8d[_0xed26('0x5')]),_0x48dc8d);utils[_0xed26('0x3')](util[_0xed26('0x10')](_0xed26('0x34'),_0x48dc8d[_0xed26('0x5')],_0x48dc8d[_0xed26('0x35')],_0x48dc8d[_0xed26('0x36')]));if(_0x48dc8d['application'][_0xed26('0x37')]()==_0xed26('0x38')&&_[_0xed26('0x39')](_0x48dc8d[_0xed26('0x36')][_0xed26('0x37')](),_0xed26('0x3a'))){var _0x1b9a2e=_0x48dc8d['appdata'][_0xed26('0x3b')]('=');var _0x2f7031=_0x1b9a2e[0x0][_0xed26('0x3c')](_0x1b9a2e[0x0][_0xed26('0x3d')]('(')+0x1,_0x1b9a2e[0x0][_0xed26('0x3d')](')'));var _0x5a813d=_0x1b9a2e[0x1];recordings[_0x48dc8d[_0xed26('0x5')]][_0x2f7031]=_0x5a813d;}}}catch(_0x315925){utils[_0xed26('0x16')](util[_0xed26('0x10')](_0xed26('0x3e'),_0x48dc8d[_0xed26('0x5')]),_0x315925);}};exports['queuecallerjoin']=function(_0x2d6411){try{if(!_[_0xed26('0x19')](recordings[_0x2d6411[_0xed26('0x5')]])){utils[_0xed26('0xf')](util['format'](_0xed26('0x3f'),_0x2d6411[_0xed26('0x5')]),_0x2d6411);utils[_0xed26('0x3')](util[_0xed26('0x10')]('[%s][recordings][queuecallerjoin]\x20queue:%s',_0x2d6411[_0xed26('0x5')],_0x2d6411[_0xed26('0x40')]));recordings[_0x2d6411[_0xed26('0x5')]][_0xed26('0x40')]=_0x2d6411['queue'];}}catch(_0x1c5470){utils[_0xed26('0x16')](util[_0xed26('0x10')](_0xed26('0x3f'),_0x2d6411[_0xed26('0x5')]),_0x1c5470);}};exports[_0xed26('0x41')]=function(_0x5296d7){try{utils[_0xed26('0xf')](util['format'](_0xed26('0x42'),_0x5296d7['uniqueid']),_0x5296d7);utils[_0xed26('0x3')](util[_0xed26('0x10')](_0xed26('0x43'),_0x5296d7[_0xed26('0x5')],_0x5296d7[_0xed26('0x44')],_0x5296d7[_0xed26('0x45')],_0x5296d7['transfereecalleridnum'],_0x5296d7[_0xed26('0x46')]));if(recordings[_0x5296d7[_0xed26('0x47')]]&&transfers[_0xed26('0x6')][_0x5296d7[_0xed26('0x47')]]){transfers['blinds'][_0x5296d7[_0xed26('0x47')]][_0xed26('0x48')]=!![];}}catch(_0x38d40a){utils[_0xed26('0x16')](util[_0xed26('0x10')](_0xed26('0x42'),_0x5296d7[_0xed26('0x5')]),_0x38d40a);}};
\ No newline at end of file
index f8ee7a6..df6ad1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ae6=['transfertargetexten','lodash','util','./utils','info','type','origtransfereruniqueid','uniqueid','request','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]','format','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','blind','transfereruniqueid','error','attendedtransfer','[%s][transfers][attendedtransfer]','origtransferercalleridnum','transfertargetcalleridnum','transfertargetcalleridname','origtransfererchannel','origtransferercalleridname','origtransfereraccountcode','secondtransferercontext','origtransfererexten','attended','isNil','transfereechannel','assign','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext'];(function(_0x1b3c68,_0x14ae9f){var _0x1c0c1f=function(_0x426b2a){while(--_0x426b2a){_0x1b3c68['push'](_0x1b3c68['shift']());}};_0x1c0c1f(++_0x14ae9f);}(_0x3ae6,0x19b));var _0x63ae=function(_0x32bb7b,_0xdc7d65){_0x32bb7b=_0x32bb7b-0x0;var _0x1e2dab=_0x3ae6[_0x32bb7b];return _0x1e2dab;};'use strict';var _=require(_0x63ae('0x0'));var util=require(_0x63ae('0x1'));var utils=require(_0x63ae('0x2'));function writeDB(_0x656182){utils[_0x63ae('0x3')](util['format']('[%s][transfers][writeDB]\x20type:%s',_0x656182[_0x63ae('0x4')]==='attended'?_0x656182[_0x63ae('0x5')]:_0x656182[_0x63ae('0x6')],_0x656182[_0x63ae('0x4')]));utils[_0x63ae('0x7')]('CreateVoiceTransferReport',_0x656182);}exports[_0x63ae('0x8')]={};exports[_0x63ae('0x9')]=function(_0xd235fd){try{utils[_0x63ae('0xa')](util['format'](_0x63ae('0xb'),_0xd235fd[_0x63ae('0x6')]),_0xd235fd);utils[_0x63ae('0x3')](util[_0x63ae('0xc')](_0x63ae('0xd'),_0xd235fd[_0x63ae('0x6')],_0xd235fd[_0x63ae('0xe')],_0xd235fd[_0x63ae('0xf')],_0xd235fd[_0x63ae('0x10')],_0xd235fd[_0x63ae('0x11')]));_0xd235fd['type']=_0x63ae('0x12');exports[_0x63ae('0x8')][_0xd235fd[_0x63ae('0x13')]]=_0xd235fd;writeDB(_0xd235fd);}catch(_0x390e54){utils[_0x63ae('0x14')](util[_0x63ae('0xc')]('[%s][transfers][blindtransfer]',_0xd235fd[_0x63ae('0x6')]),_0x390e54);}};exports[_0x63ae('0x15')]=function(_0x3032f2){try{utils[_0x63ae('0xa')](util[_0x63ae('0xc')](_0x63ae('0x16'),_0x3032f2[_0x63ae('0x5')]),_0x3032f2);utils[_0x63ae('0x3')](util[_0x63ae('0xc')]('[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x3032f2[_0x63ae('0x5')],_0x3032f2[_0x63ae('0x17')],_0x3032f2['origtransferercalleridname'],_0x3032f2[_0x63ae('0x18')],_0x3032f2[_0x63ae('0x19')]));_0x3032f2=_['assign'](_0x3032f2,{'transfererchannel':_0x3032f2[_0x63ae('0x1a')],'transferercalleridnum':_0x3032f2[_0x63ae('0x17')],'transferercalleridname':_0x3032f2[_0x63ae('0x1b')],'transfererconnectedlinenum':_0x3032f2['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x3032f2['secondtransfererconnectedlinename'],'transfereraccountcode':_0x3032f2[_0x63ae('0x1c')],'transferercontext':_0x3032f2[_0x63ae('0x1d')],'transfererexten':_0x3032f2['secondtransfererexten'],'transfererlinkedid':_0x3032f2['origtransfererlinkedid'],'context':_0x3032f2['origtransferercontext'],'extension':_0x3032f2[_0x63ae('0x1e')],'type':_0x63ae('0x1f')});if(_[_0x63ae('0x20')](_0x3032f2[_0x63ae('0x21')])){_0x3032f2=_[_0x63ae('0x22')](_0x3032f2,{'transfereechannel':_0x3032f2[_0x63ae('0x23')],'transfereecalleridnum':_0x3032f2['transfertargetcalleridnum'],'transfereecalleridname':_0x3032f2[_0x63ae('0x19')],'transfereeconnectedlinenum':_0x3032f2[_0x63ae('0x24')],'transfereeconnectedlinename':_0x3032f2[_0x63ae('0x25')],'transfereeaccountcode':_0x3032f2[_0x63ae('0x26')],'transfereecontext':_0x3032f2[_0x63ae('0x27')],'transfereeexten':_0x3032f2[_0x63ae('0x28')],'transfereelinkedid':_0x3032f2['transfertargetlinkedid']});}writeDB(_0x3032f2);}catch(_0x311836){utils['error'](util['format']('[%s][transfers][attendedtransfer]',_0x3032f2[_0x63ae('0x5')]),_0x311836);}};
\ No newline at end of file
+var _0xe4fb=['[%s][transfers][writeDB]\x20type:%s','type','attended','origtransfereruniqueid','uniqueid','request','CreateVoiceTransferReport','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]','info','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereruniqueid','error','[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','assign','origtransfererchannel','origtransferercalleridnum','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','origtransfererlinkedid','origtransferercontext','origtransfererexten','isNil','transfereechannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','lodash','util','format'];(function(_0x11fa21,_0x144d59){var _0x53bb64=function(_0x248bdc){while(--_0x248bdc){_0x11fa21['push'](_0x11fa21['shift']());}};_0x53bb64(++_0x144d59);}(_0xe4fb,0x7b));var _0xbe4f=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xe4fb[_0x167cc1];return _0x10bc4b;};'use strict';var _=require(_0xbe4f('0x0'));var util=require(_0xbe4f('0x1'));var utils=require('./utils');function writeDB(_0x5c8fa6){utils['info'](util[_0xbe4f('0x2')](_0xbe4f('0x3'),_0x5c8fa6[_0xbe4f('0x4')]===_0xbe4f('0x5')?_0x5c8fa6[_0xbe4f('0x6')]:_0x5c8fa6[_0xbe4f('0x7')],_0x5c8fa6[_0xbe4f('0x4')]));utils[_0xbe4f('0x8')](_0xbe4f('0x9'),_0x5c8fa6);}exports[_0xbe4f('0xa')]={};exports[_0xbe4f('0xb')]=function(_0x321bef){try{utils[_0xbe4f('0xc')](util[_0xbe4f('0x2')](_0xbe4f('0xd'),_0x321bef['uniqueid']),_0x321bef);utils[_0xbe4f('0xe')](util[_0xbe4f('0x2')](_0xbe4f('0xf'),_0x321bef['uniqueid'],_0x321bef[_0xbe4f('0x10')],_0x321bef[_0xbe4f('0x11')],_0x321bef[_0xbe4f('0x12')],_0x321bef['transfereecalleridname']));_0x321bef['type']='blind';exports['blinds'][_0x321bef[_0xbe4f('0x13')]]=_0x321bef;writeDB(_0x321bef);}catch(_0xe411cd){utils[_0xbe4f('0x14')](util[_0xbe4f('0x2')]('[%s][transfers][blindtransfer]',_0x321bef[_0xbe4f('0x7')]),_0xe411cd);}};exports['attendedtransfer']=function(_0x41375e){try{utils[_0xbe4f('0xc')](util[_0xbe4f('0x2')](_0xbe4f('0x15'),_0x41375e[_0xbe4f('0x6')]),_0x41375e);utils[_0xbe4f('0xe')](util[_0xbe4f('0x2')](_0xbe4f('0x16'),_0x41375e[_0xbe4f('0x6')],_0x41375e['origtransferercalleridnum'],_0x41375e[_0xbe4f('0x17')],_0x41375e[_0xbe4f('0x18')],_0x41375e[_0xbe4f('0x19')]));_0x41375e=_[_0xbe4f('0x1a')](_0x41375e,{'transfererchannel':_0x41375e[_0xbe4f('0x1b')],'transferercalleridnum':_0x41375e[_0xbe4f('0x1c')],'transferercalleridname':_0x41375e[_0xbe4f('0x17')],'transfererconnectedlinenum':_0x41375e[_0xbe4f('0x1d')],'transfererconnectedlinename':_0x41375e[_0xbe4f('0x1e')],'transfereraccountcode':_0x41375e[_0xbe4f('0x1f')],'transferercontext':_0x41375e['secondtransferercontext'],'transfererexten':_0x41375e['secondtransfererexten'],'transfererlinkedid':_0x41375e[_0xbe4f('0x20')],'context':_0x41375e[_0xbe4f('0x21')],'extension':_0x41375e[_0xbe4f('0x22')],'type':_0xbe4f('0x5')});if(_[_0xbe4f('0x23')](_0x41375e[_0xbe4f('0x24')])){_0x41375e=_[_0xbe4f('0x1a')](_0x41375e,{'transfereechannel':_0x41375e['transfertargetchannel'],'transfereecalleridnum':_0x41375e[_0xbe4f('0x18')],'transfereecalleridname':_0x41375e[_0xbe4f('0x19')],'transfereeconnectedlinenum':_0x41375e[_0xbe4f('0x25')],'transfereeconnectedlinename':_0x41375e[_0xbe4f('0x26')],'transfereeaccountcode':_0x41375e[_0xbe4f('0x27')],'transfereecontext':_0x41375e[_0xbe4f('0x28')],'transfereeexten':_0x41375e[_0xbe4f('0x29')],'transfereelinkedid':_0x41375e['transfertargetlinkedid']});}writeDB(_0x41375e);}catch(_0x522002){utils[_0xbe4f('0x14')](util['format'](_0xbe4f('0x15'),_0x41375e['origtransfereruniqueid']),_0x522002);}};
\ No newline at end of file
index 1888017..9e62dd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x618a=['getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','[utils][getUserByInternal]','getUserByInterface','found','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','type','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','notfound','addTime','add','seconds','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','format','diffTime','diff','sumTime','now','isAfter','isBefore','bluebird','jayson/promise','moment','util','client','../../config/logger','xdr','info','inspect','debug','error','then','[utils][request]\x20name:%s','catch','request','GetUser','internal','name','interface','[utils][getUser]\x20where:%s','stringify','length','result'];(function(_0x302dad,_0x38f119){var _0x38a2da=function(_0x5cf73a){while(--_0x5cf73a){_0x302dad['push'](_0x302dad['shift']());}};_0x38a2da(++_0x38f119);}(_0x618a,0xe3));var _0xa618=function(_0x5c68c7,_0x54ba85){_0x5c68c7=_0x5c68c7-0x0;var _0x4a94fc=_0x618a[_0x5c68c7];return _0x4a94fc;};'use strict';var BPromise=require(_0xa618('0x0'));var jayson=require(_0xa618('0x1'));var moment=require(_0xa618('0x2'));var util=require(_0xa618('0x3'));var client=jayson[_0xa618('0x4')]['http']({'port':0x2329});var logger=require(_0xa618('0x5'))(_0xa618('0x6'));exports[_0xa618('0x7')]=function(_0x4f8af6,_0x3d33e9){logger[_0xa618('0x7')](_0x4f8af6,_0x3d33e9?util[_0xa618('0x8')](_0x3d33e9,{'showHidden':![],'depth':null}):'');};exports[_0xa618('0x9')]=function(_0x306460,_0x32986c){logger[_0xa618('0x9')](_0x306460,_0x32986c?util[_0xa618('0x8')](_0x32986c,{'showHidden':![],'depth':null}):'');};exports[_0xa618('0xa')]=function(_0x1bc5c2,_0x54a812){logger[_0xa618('0xa')](_0x1bc5c2,_0x54a812?util[_0xa618('0x8')](_0x54a812,{'showHidden':![],'depth':null}):'');};exports['request']=function(_0x400e9a,_0x504ae4){return client['request'](_0x400e9a,{'body':_0x504ae4})[_0xa618('0xb')](function(_0xc38136){logger['debug'](_0xa618('0xc'),_0x400e9a,_0xc38136?util[_0xa618('0x8')](_0xc38136,{'showHidden':![],'depth':null}):'');})[_0xa618('0xd')](function(_0x1eee5a){logger[_0xa618('0xa')](_0xa618('0xc'),_0x400e9a,_0x1eee5a?util['inspect'](_0x1eee5a,{'showHidden':![],'depth':null}):'');});};function getUser(_0x4a183b){return client[_0xa618('0xe')](_0xa618('0xf'),{'options':{'raw':!![],'attributes':['id',_0xa618('0x10'),_0xa618('0x11'),_0xa618('0x12')],'where':_0x4a183b,'limit':0x1}})['then'](function(_0x37b4ee){logger[_0xa618('0x9')](_0xa618('0x13'),JSON[_0xa618('0x14')](_0x4a183b),_0x37b4ee?util[_0xa618('0x8')](_0x37b4ee,{'showHidden':![],'depth':null}):'');return _0x37b4ee['result'][_0xa618('0x15')]?_0x37b4ee[_0xa618('0x16')][0x0]:null;});}exports[_0xa618('0x17')]=function(_0x291241){return new BPromise(function(_0x5a2d04,_0x3c12f4){if(_0x291241){return getUser({'internal':_0x291241})[_0xa618('0xb')](function(_0x12b8a3){logger[_0xa618('0x7')](_0xa618('0x18'),_0x291241,_0x12b8a3?'found':'notfound');return _0x5a2d04(_0x12b8a3);})[_0xa618('0xd')](function(_0xc8c7e8){logger[_0xa618('0xa')](_0xa618('0x19'),_0xc8c7e8?util[_0xa618('0x8')](_0xc8c7e8,{'showHidden':![],'depth':null}):'');return _0x5a2d04(null);});}return _0x5a2d04(null);});};exports[_0xa618('0x1a')]=function(_0x43b49a){return new BPromise(function(_0x2c8bcc,_0x5423a2){if(_0x43b49a){return getUser({'interface':_0x43b49a})[_0xa618('0xb')](function(_0x2fd293){logger[_0xa618('0x7')]('[utils][getUserByInterface]\x20interface:%s\x20%s',_0x43b49a,_0x2fd293?_0xa618('0x1b'):'notfound');return _0x2c8bcc(_0x2fd293);})[_0xa618('0xd')](function(_0xb647df){logger['error']('[utils][getUserByInterface]',_0xb647df?util[_0xa618('0x8')](_0xb647df,{'showHidden':![],'depth':null}):'');return _0x2c8bcc(null);});}return _0x2c8bcc(null);});};exports['getUserByName']=function(_0x2e0297){return new BPromise(function(_0x58ad4d,_0x4e6638){if(_0x2e0297){return getUser({'name':_0x2e0297})[_0xa618('0xb')](function(_0x3097a4){logger[_0xa618('0x7')]('[utils][getUserByName]\x20name:%s\x20%s',_0x2e0297,_0x3097a4?_0xa618('0x1b'):'notfound');return _0x58ad4d(_0x3097a4);})['catch'](function(_0x3e37e6){logger[_0xa618('0xa')](_0xa618('0x1c'),_0x3e37e6?util[_0xa618('0x8')](_0x3e37e6,{'showHidden':![],'depth':null}):'');return _0x58ad4d(null);});}return _0x58ad4d(null);});};exports[_0xa618('0x1d')]=function(_0x4f2302){return new BPromise(function(_0x211252,_0x2b43ad){if(_0x4f2302){return client[_0xa618('0xe')](_0xa618('0x1e'),{'options':{'raw':!![],'attributes':['id','name',_0xa618('0x1f'),_0xa618('0x20'),_0xa618('0x21')],'where':{'name':_0x4f2302},'limit':0x1}})[_0xa618('0xb')](function(_0x52eba6){logger['debug'](_0xa618('0x22'),_0x4f2302,_0x52eba6?util[_0xa618('0x8')](_0x52eba6,{'showHidden':![],'depth':null}):'');logger['info'](_0xa618('0x23'),_0x4f2302,_0x52eba6?'found':_0xa618('0x24'));return _0x211252(_0x52eba6[_0xa618('0x16')]['length']?_0x52eba6[_0xa618('0x16')][0x0]:null);})[_0xa618('0xd')](function(_0x401fcc){logger[_0xa618('0xa')]('[utils][getVoiceQueueByName]',_0x401fcc?util[_0xa618('0x8')](_0x401fcc,{'showHidden':![],'depth':null}):'');return _0x211252(null);});}return _0x211252(null);});};exports[_0xa618('0x25')]=function(_0x38c0b5,_0x12a6b3){return moment(_0x38c0b5)[_0xa618('0x26')](_0x12a6b3,_0xa618('0x27'))['format'](_0xa618('0x28'));};exports[_0xa618('0x29')]=function(_0x45a89f,_0x421216){return moment(_0x45a89f)[_0xa618('0x2a')](_0x421216,_0xa618('0x27'))[_0xa618('0x2b')](_0xa618('0x28'));};exports[_0xa618('0x2c')]=function(_0xd2255f,_0x1d6d9a){return moment(_0xd2255f)[_0xa618('0x2d')](moment(_0x1d6d9a),_0xa618('0x27'));};exports[_0xa618('0x2e')]=function(_0x43fd5e,_0x117140){return parseInt(_0x43fd5e,0xa)+parseInt(_0x117140,0xa);};exports[_0xa618('0x2f')]=function(){return moment()['format'](_0xa618('0x28'));};exports[_0xa618('0x30')]=function(_0x24a31e,_0x547d94){if(_0x547d94){return moment(_0x24a31e)['isAfter'](_0x547d94);}return!![];};exports[_0xa618('0x31')]=function(_0x1439a7,_0x304aff){if(_0x304aff){return moment(_0x1439a7)[_0xa618('0x31')](_0x304aff);}else if(_0x1439a7){return!![];}return![];};
\ No newline at end of file
+var _0x191f=['name','type','acw','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','[utils][getVoiceQueueByName]','add','seconds','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','diffTime','diff','sumTime','now','isAfter','isBefore','util','client','http','../../config/logger','xdr','info','inspect','debug','error','request','[utils][request]\x20name:%s','catch','GetUser','then','[utils][getUser]\x20where:%s','stringify','result','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','getUserByName','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue'];(function(_0xfbdff6,_0x2af690){var _0x4cb9be=function(_0x4022d8){while(--_0x4022d8){_0xfbdff6['push'](_0xfbdff6['shift']());}};_0x4cb9be(++_0x2af690);}(_0x191f,0x9b));var _0xf191=function(_0x465225,_0x1b1747){_0x465225=_0x465225-0x0;var _0x28f5ef=_0x191f[_0x465225];return _0x28f5ef;};'use strict';var BPromise=require('bluebird');var jayson=require('jayson/promise');var moment=require('moment');var util=require(_0xf191('0x0'));var client=jayson[_0xf191('0x1')][_0xf191('0x2')]({'port':0x2329});var logger=require(_0xf191('0x3'))(_0xf191('0x4'));exports[_0xf191('0x5')]=function(_0x4d1368,_0x57fbce){logger[_0xf191('0x5')](_0x4d1368,_0x57fbce?util[_0xf191('0x6')](_0x57fbce,{'showHidden':![],'depth':null}):'');};exports[_0xf191('0x7')]=function(_0x2a0483,_0x1b3783){logger[_0xf191('0x7')](_0x2a0483,_0x1b3783?util['inspect'](_0x1b3783,{'showHidden':![],'depth':null}):'');};exports['error']=function(_0x2dd71a,_0x172a4d){logger[_0xf191('0x8')](_0x2dd71a,_0x172a4d?util[_0xf191('0x6')](_0x172a4d,{'showHidden':![],'depth':null}):'');};exports[_0xf191('0x9')]=function(_0x25b366,_0x16bafb){return client[_0xf191('0x9')](_0x25b366,{'body':_0x16bafb})['then'](function(_0x333035){logger['debug'](_0xf191('0xa'),_0x25b366,_0x333035?util[_0xf191('0x6')](_0x333035,{'showHidden':![],'depth':null}):'');})[_0xf191('0xb')](function(_0x212b65){logger[_0xf191('0x8')](_0xf191('0xa'),_0x25b366,_0x212b65?util['inspect'](_0x212b65,{'showHidden':![],'depth':null}):'');});};function getUser(_0xf8911b){return client['request'](_0xf191('0xc'),{'options':{'raw':!![],'attributes':['id','internal','name','interface'],'where':_0xf8911b,'limit':0x1}})[_0xf191('0xd')](function(_0xf4b61e){logger[_0xf191('0x7')](_0xf191('0xe'),JSON[_0xf191('0xf')](_0xf8911b),_0xf4b61e?util[_0xf191('0x6')](_0xf4b61e,{'showHidden':![],'depth':null}):'');return _0xf4b61e[_0xf191('0x10')][_0xf191('0x11')]?_0xf4b61e[_0xf191('0x10')][0x0]:null;});}exports[_0xf191('0x12')]=function(_0x1cf69f){return new BPromise(function(_0x155f05,_0x5f4ff4){if(_0x1cf69f){return getUser({'internal':_0x1cf69f})['then'](function(_0x38f56e){logger[_0xf191('0x5')](_0xf191('0x13'),_0x1cf69f,_0x38f56e?_0xf191('0x14'):_0xf191('0x15'));return _0x155f05(_0x38f56e);})['catch'](function(_0x73394e){logger[_0xf191('0x8')](_0xf191('0x16'),_0x73394e?util[_0xf191('0x6')](_0x73394e,{'showHidden':![],'depth':null}):'');return _0x155f05(null);});}return _0x155f05(null);});};exports[_0xf191('0x17')]=function(_0x14dfe1){return new BPromise(function(_0x1f4608,_0x32b19a){if(_0x14dfe1){return getUser({'interface':_0x14dfe1})[_0xf191('0xd')](function(_0x3d050b){logger[_0xf191('0x5')](_0xf191('0x18'),_0x14dfe1,_0x3d050b?_0xf191('0x14'):_0xf191('0x15'));return _0x1f4608(_0x3d050b);})[_0xf191('0xb')](function(_0x3ab4e6){logger[_0xf191('0x8')]('[utils][getUserByInterface]',_0x3ab4e6?util[_0xf191('0x6')](_0x3ab4e6,{'showHidden':![],'depth':null}):'');return _0x1f4608(null);});}return _0x1f4608(null);});};exports[_0xf191('0x19')]=function(_0x5db100){return new BPromise(function(_0x52c955,_0x57a184){if(_0x5db100){return getUser({'name':_0x5db100})[_0xf191('0xd')](function(_0x350844){logger[_0xf191('0x5')]('[utils][getUserByName]\x20name:%s\x20%s',_0x5db100,_0x350844?'found':'notfound');return _0x52c955(_0x350844);})[_0xf191('0xb')](function(_0x49063d){logger['error'](_0xf191('0x1a'),_0x49063d?util['inspect'](_0x49063d,{'showHidden':![],'depth':null}):'');return _0x52c955(null);});}return _0x52c955(null);});};exports[_0xf191('0x1b')]=function(_0x156e39){return new BPromise(function(_0x44ed4,_0x335c38){if(_0x156e39){return client[_0xf191('0x9')](_0xf191('0x1c'),{'options':{'raw':!![],'attributes':['id',_0xf191('0x1d'),_0xf191('0x1e'),_0xf191('0x1f'),'acwTimeout'],'where':{'name':_0x156e39},'limit':0x1}})[_0xf191('0xd')](function(_0x35da42){logger[_0xf191('0x7')](_0xf191('0x20'),_0x156e39,_0x35da42?util[_0xf191('0x6')](_0x35da42,{'showHidden':![],'depth':null}):'');logger['info'](_0xf191('0x21'),_0x156e39,_0x35da42?'found':_0xf191('0x15'));return _0x44ed4(_0x35da42[_0xf191('0x10')][_0xf191('0x11')]?_0x35da42[_0xf191('0x10')][0x0]:null);})[_0xf191('0xb')](function(_0x120d79){logger[_0xf191('0x8')](_0xf191('0x22'),_0x120d79?util['inspect'](_0x120d79,{'showHidden':![],'depth':null}):'');return _0x44ed4(null);});}return _0x44ed4(null);});};exports['addTime']=function(_0x48136a,_0xad3895){return moment(_0x48136a)[_0xf191('0x23')](_0xad3895,_0xf191('0x24'))[_0xf191('0x25')](_0xf191('0x26'));};exports[_0xf191('0x27')]=function(_0x495d0a,_0x2bf2b3){return moment(_0x495d0a)['subtract'](_0x2bf2b3,'seconds')[_0xf191('0x25')](_0xf191('0x26'));};exports[_0xf191('0x28')]=function(_0x57e76f,_0xdd7ee3){return moment(_0x57e76f)[_0xf191('0x29')](moment(_0xdd7ee3),_0xf191('0x24'));};exports[_0xf191('0x2a')]=function(_0x23f62d,_0x3c8ba5){return parseInt(_0x23f62d,0xa)+parseInt(_0x3c8ba5,0xa);};exports[_0xf191('0x2b')]=function(){return moment()[_0xf191('0x25')](_0xf191('0x26'));};exports[_0xf191('0x2c')]=function(_0x29e3c4,_0xa8b47){if(_0xa8b47){return moment(_0x29e3c4)[_0xf191('0x2c')](_0xa8b47);}return!![];};exports['isBefore']=function(_0x51ec74,_0x362d4e){if(_0x362d4e){return moment(_0x51ec74)[_0xf191('0x2d')](_0x362d4e);}else if(_0x51ec74){return!![];}return![];};
\ No newline at end of file
index 19faf23..9cb673f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf57=['timestamp','api','auth','set','client-side-logger','use','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','body','\x20body=%s','format','headers','x-forwarded-for','remoteAddress','url','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)','method','device','other','agent_name','test','setupLoggers','express-winston','path','util','safeTemplate','maskSensitiveData','join','/var','xcally','client','role','name','ensureDir','then','catch','log','user','no-user','data'];(function(_0x2b7f6c,_0x21af82){var _0x1a2983=function(_0x508d96){while(--_0x508d96){_0x2b7f6c['push'](_0x2b7f6c['shift']());}};_0x1a2983(++_0x21af82);}(_0xdf57,0x1e8));var _0x7df5=function(_0x16aaef,_0x410651){_0x16aaef=_0x16aaef-0x0;var _0x1c82ef=_0xdf57[_0x16aaef];return _0x1c82ef;};var fs=require('fs-extra');var _=require('lodash');var ewinston=require(_0x7df5('0x0'));var path=require(_0x7df5('0x1'));var util=require(_0x7df5('0x2'));var fileLogger=require('./loggers')['fileLogger'];var safeTemplate=require('./safe-template')[_0x7df5('0x3')];var maskSensitiveData=require('./mask-sensitive-data')[_0x7df5('0x4')];function ClientSideLogger(){function _0x51451b(_0x53b99a){var _0x1a50de=path[_0x7df5('0x5')](_0x7df5('0x6'),'log',_0x7df5('0x7'));var _0x510ca5=path[_0x7df5('0x5')](_0x7df5('0x8'),_0x53b99a[_0x7df5('0x9')]+'-'+_0x53b99a[_0x7df5('0xa')]);return fs[_0x7df5('0xb')](path[_0x7df5('0x5')](_0x1a50de,_0x510ca5))[_0x7df5('0xc')](function(){var _0xd6636c=fileLogger(_0x7df5('0x8'),path[_0x7df5('0x5')](_0x1a50de,_0x510ca5));return _0xd6636c;})[_0x7df5('0xd')](function(_0x99418d){throw _0x99418d;});}this[_0x7df5('0xe')]=function(_0xdbf2ae,_0x279ee6,_0x44993c,_0x4c77f2){return _0x51451b(_0xdbf2ae['user'])['then'](function(_0x52a650){var _0x37e216=_0x52a650[_0x279ee6];return _0x37e216;})[_0x7df5('0xc')](function(_0x17f199){var _0x193387=_0xdbf2ae[_0x7df5('0xf')]?_0xdbf2ae['user']['id']:_0x7df5('0x10');var _0x126485=_0x4c77f2[_0x7df5('0x11')];var _0x2e3dbe=_0x4c77f2[_0x7df5('0x12')];var _0x11b87e=new Date(Number(_0x2e3dbe));return _0x17f199(_0x193387,_0x11b87e,_0x44993c,_0x126485);})[_0x7df5('0xd')](function(_0x2c418e){fileLogger('client')['error'](_0x2c418e);});};}function setupLoggers(_0x6a70ab){return new Promise(function(_0x15ae2a){var _0x3b6e45=new ClientSideLogger();var _0x4ff2ca=fileLogger(_0x7df5('0x13'));var _0x2279aa=fileLogger(_0x7df5('0x14'));_0x6a70ab[_0x7df5('0x15')](_0x7df5('0x16'),_0x3b6e45);_0x6a70ab[_0x7df5('0x17')](ewinston['logger']({'winstonInstance':_0x4ff2ca,'meta':![],'statusLevels':!![],'msg':function(_0x14b632,_0xe4fdc8){var _0x2a9caf=_0x7df5('0x18');if(!_[_0x7df5('0x19')](_0x14b632[_0x7df5('0x1a')])){_0x2a9caf+=_0x7df5('0x1b');var _0x4ef4ed=_0x14b632['body'];maskSensitiveData(_0x4ef4ed);}return safeTemplate(util[_0x7df5('0x1c')](_0x2a9caf,_0x14b632['method'],_0x14b632[_0x7df5('0x1d')][_0x7df5('0x1e')]?_0x14b632[_0x7df5('0x1d')][_0x7df5('0x1e')]:_0x14b632['connection'][_0x7df5('0x1f')]||_0x14b632['ip'],_0x14b632[_0x7df5('0x20')],_0xe4fdc8[_0x7df5('0x21')],_0xe4fdc8[_0x7df5('0x22')],_0x14b632[_0x7df5('0xf')]?_0x14b632[_0x7df5('0xf')]['id']:null,_0x14b632[_0x7df5('0xf')]?_0x14b632['user'][_0x7df5('0xa')]:null,_0x14b632[_0x7df5('0xf')]?_0x14b632[_0x7df5('0xf')][_0x7df5('0x9')]:null,_0x4ef4ed?util[_0x7df5('0x23')](_0x4ef4ed,![],null):''));}}));_0x6a70ab[_0x7df5('0x17')](ewinston[_0x7df5('0x24')]({'winstonInstance':_0x2279aa,'meta':![],'statusLevels':!![],'msg':function(_0x5626dd,_0x2d252c){var _0x2d89c8=_0x7df5('0x25');if(_0x5626dd[_0x7df5('0x1a')]&&_0x5626dd['body']['device']&&_0x5626dd['body'][_0x7df5('0x26')]){_0x2d89c8=_0x7df5('0x27');}return util['format'](_0x2d89c8,_0x5626dd[_0x7df5('0x28')],_0x5626dd[_0x7df5('0x1d')]['x-forwarded-for']?_0x5626dd[_0x7df5('0x1d')][_0x7df5('0x1e')]:_0x5626dd['connection'][_0x7df5('0x1f')]||_0x5626dd['ip'],_0x5626dd[_0x7df5('0x20')],_0x2d252c['statusCode'],_0x2d252c['responseTime'],_0x5626dd[_0x7df5('0xf')]?_0x5626dd[_0x7df5('0xf')]['id']:null,_0x5626dd[_0x7df5('0xf')]?_0x5626dd[_0x7df5('0xf')][_0x7df5('0xa')]:null,_0x5626dd[_0x7df5('0xf')]?_0x5626dd[_0x7df5('0xf')][_0x7df5('0x9')]:null,_0x5626dd[_0x7df5('0x1a')]&&_0x5626dd[_0x7df5('0x1a')][_0x7df5('0x29')]?_0x5626dd[_0x7df5('0x1a')][_0x7df5('0x29')]:_0x7df5('0x2a'),_0x5626dd['body']&&_0x5626dd[_0x7df5('0x1a')]['agent_id']?_0x5626dd[_0x7df5('0x1a')][_0x7df5('0x26')]:'',_0x5626dd[_0x7df5('0x1a')]&&_0x5626dd['body'][_0x7df5('0x2b')]?_0x5626dd[_0x7df5('0x1a')][_0x7df5('0x2b')]:'');},'ignoreRoute':function(_0x4c278b){var _0x588964=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x588964[_0x7df5('0x2c')](_0x4c278b[_0x7df5('0x20')]);}}));return _0x15ae2a();});}exports[_0x7df5('0x2d')]=setupLoggers;
\ No newline at end of file
+var _0x3385=['other','agent_name','test','fs-extra','lodash','express-winston','path','util','./loggers','fileLogger','safeTemplate','./mask-sensitive-data','maskSensitiveData','join','/var','log','xcally','client','name','ensureDir','then','user','no-user','data','timestamp','auth','set','client-side-logger','use','logger','%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','url','statusCode','role','inspect','device','agent_id','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','responseTime'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x3385,0xee));var _0x5338=function(_0x1ca4cc,_0x402c23){_0x1ca4cc=_0x1ca4cc-0x0;var _0x108010=_0x3385[_0x1ca4cc];return _0x108010;};var fs=require(_0x5338('0x0'));var _=require(_0x5338('0x1'));var ewinston=require(_0x5338('0x2'));var path=require(_0x5338('0x3'));var util=require(_0x5338('0x4'));var fileLogger=require(_0x5338('0x5'))[_0x5338('0x6')];var safeTemplate=require('./safe-template')[_0x5338('0x7')];var maskSensitiveData=require(_0x5338('0x8'))[_0x5338('0x9')];function ClientSideLogger(){function _0x19b210(_0x21db5b){var _0x5760c3=path[_0x5338('0xa')](_0x5338('0xb'),_0x5338('0xc'),_0x5338('0xd'));var _0xa2b151=path['join'](_0x5338('0xe'),_0x21db5b['role']+'-'+_0x21db5b[_0x5338('0xf')]);return fs[_0x5338('0x10')](path[_0x5338('0xa')](_0x5760c3,_0xa2b151))[_0x5338('0x11')](function(){var _0x3e1e10=fileLogger(_0x5338('0xe'),path[_0x5338('0xa')](_0x5760c3,_0xa2b151));return _0x3e1e10;})['catch'](function(_0x43713b){throw _0x43713b;});}this[_0x5338('0xc')]=function(_0x4235dd,_0x26d461,_0x54462a,_0x6662b9){return _0x19b210(_0x4235dd[_0x5338('0x12')])[_0x5338('0x11')](function(_0x3d94b4){var _0x3ce09e=_0x3d94b4[_0x26d461];return _0x3ce09e;})[_0x5338('0x11')](function(_0x25fadb){var _0x2ae456=_0x4235dd[_0x5338('0x12')]?_0x4235dd[_0x5338('0x12')]['id']:_0x5338('0x13');var _0x19770f=_0x6662b9[_0x5338('0x14')];var _0x1974f3=_0x6662b9[_0x5338('0x15')];var _0x356f0c=new Date(Number(_0x1974f3));return _0x25fadb(_0x2ae456,_0x356f0c,_0x54462a,_0x19770f);})['catch'](function(_0x47664d){fileLogger(_0x5338('0xe'))['error'](_0x47664d);});};}function setupLoggers(_0x57a419){return new Promise(function(_0x30aa46){var _0x289797=new ClientSideLogger();var _0x36c9da=fileLogger('api');var _0x233217=fileLogger(_0x5338('0x16'));_0x57a419[_0x5338('0x17')](_0x5338('0x18'),_0x289797);_0x57a419[_0x5338('0x19')](ewinston[_0x5338('0x1a')]({'winstonInstance':_0x36c9da,'meta':![],'statusLevels':!![],'msg':function(_0x26d2ce,_0x31a53a){var _0x4b09fa=_0x5338('0x1b');if(!_[_0x5338('0x1c')](_0x26d2ce['body'])){_0x4b09fa+=_0x5338('0x1d');var _0x37d294=_0x26d2ce[_0x5338('0x1e')];maskSensitiveData(_0x37d294);}return safeTemplate(util['format'](_0x4b09fa,_0x26d2ce[_0x5338('0x1f')],_0x26d2ce[_0x5338('0x20')][_0x5338('0x21')]?_0x26d2ce[_0x5338('0x20')]['x-forwarded-for']:_0x26d2ce[_0x5338('0x22')][_0x5338('0x23')]||_0x26d2ce['ip'],_0x26d2ce[_0x5338('0x24')],_0x31a53a[_0x5338('0x25')],_0x31a53a['responseTime'],_0x26d2ce[_0x5338('0x12')]?_0x26d2ce[_0x5338('0x12')]['id']:null,_0x26d2ce['user']?_0x26d2ce['user'][_0x5338('0xf')]:null,_0x26d2ce[_0x5338('0x12')]?_0x26d2ce[_0x5338('0x12')][_0x5338('0x26')]:null,_0x37d294?util[_0x5338('0x27')](_0x37d294,![],null):''));}}));_0x57a419['use'](ewinston[_0x5338('0x1a')]({'winstonInstance':_0x233217,'meta':![],'statusLevels':!![],'msg':function(_0x169152,_0x46e85b){var _0x5f241a='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s';if(_0x169152[_0x5338('0x1e')]&&_0x169152[_0x5338('0x1e')][_0x5338('0x28')]&&_0x169152[_0x5338('0x1e')][_0x5338('0x29')]){_0x5f241a=_0x5338('0x2a');}return util['format'](_0x5f241a,_0x169152[_0x5338('0x1f')],_0x169152[_0x5338('0x20')]['x-forwarded-for']?_0x169152[_0x5338('0x20')][_0x5338('0x21')]:_0x169152[_0x5338('0x22')][_0x5338('0x23')]||_0x169152['ip'],_0x169152['url'],_0x46e85b['statusCode'],_0x46e85b[_0x5338('0x2b')],_0x169152['user']?_0x169152[_0x5338('0x12')]['id']:null,_0x169152[_0x5338('0x12')]?_0x169152['user'][_0x5338('0xf')]:null,_0x169152['user']?_0x169152['user'][_0x5338('0x26')]:null,_0x169152[_0x5338('0x1e')]&&_0x169152[_0x5338('0x1e')]['device']?_0x169152[_0x5338('0x1e')][_0x5338('0x28')]:_0x5338('0x2c'),_0x169152[_0x5338('0x1e')]&&_0x169152['body'][_0x5338('0x29')]?_0x169152['body'][_0x5338('0x29')]:'',_0x169152[_0x5338('0x1e')]&&_0x169152[_0x5338('0x1e')][_0x5338('0x2d')]?_0x169152['body'][_0x5338('0x2d')]:'');},'ignoreRoute':function(_0x3109f0){var _0x41d28f=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x41d28f[_0x5338('0x2e')](_0x3109f0['url']);}}));return _0x30aa46();});}exports['setupLoggers']=setupLoggers;
\ No newline at end of file
index c1b3a43..65db040 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2a8=['format','%s-%s.log','replace','{{{','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','message','}}}','meta','keys','length','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','Console','warn','Logger','transports','File','error','%s-%s','consoleLogger','fileLogger','path','util','moment','winston','debugLevel','toLowerCase','info','red','bold\x20yellow','white','bold\x20magenta','bold\x20blue','addColors','/var/log/xcally','join'];(function(_0x33fad0,_0x21df82){var _0x3c7717=function(_0x1240f8){while(--_0x1240f8){_0x33fad0['push'](_0x33fad0['shift']());}};_0x3c7717(++_0x21df82);}(_0xd2a8,0xf4));var _0x8d2a=function(_0x45509f,_0x4a2f97){_0x45509f=_0x45509f-0x0;var _0x27cbfe=_0xd2a8[_0x45509f];return _0x27cbfe;};'use strict';var path=require(_0x8d2a('0x0'));var util=require(_0x8d2a('0x1'));var moment=require(_0x8d2a('0x2'));var winston=require(_0x8d2a('0x3'));var config=require('../config/environment');var debugLevel=config[_0x8d2a('0x4')]?config[_0x8d2a('0x4')][_0x8d2a('0x5')]():_0x8d2a('0x6');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':_0x8d2a('0x7'),'warn':_0x8d2a('0x8'),'info':_0x8d2a('0x9'),'print':'bold\x20white','success':'bold\x20green','http':'gray','verbose':_0x8d2a('0xa'),'debug':_0x8d2a('0xb'),'silly':'bold\x20cyan'};winston[_0x8d2a('0xc')](XC_LOG_COLORS);function getLogFileName(_0x4c9b5f,_0x3ccb21,_0x4fd3e2){var _0x32e904=_0x4c9b5f||_0x8d2a('0xd');return path[_0x8d2a('0xe')](_0x32e904,util[_0x8d2a('0xf')](_0x8d2a('0x10'),_0x3ccb21,_0x4fd3e2));}function formatter(_0x891893,_0x2007c1){_0x2007c1['message']=_0x2007c1['message'][_0x8d2a('0x11')](/@@{/g,_0x8d2a('0x12'))[_0x8d2a('0x11')](/}@@/g,'}}}')[_0x8d2a('0x11')](/@{/g,'{{')[_0x8d2a('0x11')](/}@/g,'}}');return util[_0x8d2a('0xf')]('[%s]\x20[%s]\x20%s\x20-\x20%s',moment()[_0x8d2a('0xf')](_0x8d2a('0x13')),_0x2007c1[_0x8d2a('0x14')][_0x8d2a('0x15')](),_0x891893,_0x2007c1[_0x8d2a('0x16')]);}function fileFormat(_0xbd535f,_0x3b3d77){_0x3b3d77[_0x8d2a('0x16')]=_0x3b3d77[_0x8d2a('0x16')][_0x8d2a('0x11')](/@@{/g,_0x8d2a('0x12'))[_0x8d2a('0x11')](/}@@/g,_0x8d2a('0x17'))['replace'](/@{/g,'{{')[_0x8d2a('0x11')](/}@/g,'}}');var _0x150a4f=_0x3b3d77[_0x8d2a('0x18')]&&Object[_0x8d2a('0x19')](_0x3b3d77['meta'])[_0x8d2a('0x1a')]?'\x0a\x09'+JSON['stringify'](_0x3b3d77['meta']):'';return util[_0x8d2a('0xf')](_0x8d2a('0x1b'),moment()[_0x8d2a('0xf')](_0x8d2a('0x13')),_0x3b3d77[_0x8d2a('0x14')][_0x8d2a('0x15')](),_0xbd535f,_0x3b3d77[_0x8d2a('0x16')],_0x150a4f);}function consoleLogger(){var _0x1bd019=new winston['Logger']({'levels':XC_LOG_LEVELS,'transports':[new winston['transports'][(_0x8d2a('0x1c'))]({'level':_0x8d2a('0x1d'),'json':![],'formatter':function(_0x5b9c3d){return formatter('',_0x5b9c3d);}})]});return _0x1bd019;}function fileLogger(_0x3481e3,_0x411f52){var _0x19ba44=new winston[(_0x8d2a('0x1e'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0x8d2a('0x1f'))][(_0x8d2a('0x20'))]({'name':util[_0x8d2a('0xf')]('%s-%s',_0x3481e3,_0x8d2a('0x21')),'filename':getLogFileName(_0x411f52,_0x3481e3,_0x8d2a('0x21')),'level':_0x8d2a('0x21'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x3edad1){return fileFormat(_0x3481e3,_0x3edad1);}}),new winston[(_0x8d2a('0x1f'))][(_0x8d2a('0x20'))]({'name':util['format'](_0x8d2a('0x22'),_0x3481e3,debugLevel),'filename':getLogFileName(_0x411f52,_0x3481e3,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x5a4e8d){return fileFormat(_0x3481e3,_0x5a4e8d);}}),new winston[(_0x8d2a('0x1f'))][(_0x8d2a('0x1c'))]({'level':_0x8d2a('0x1d'),'json':![],'formatter':function(_0x753955){return fileFormat(_0x3481e3,_0x753955);}})]});return _0x19ba44;}exports[_0x8d2a('0x23')]=consoleLogger;exports[_0x8d2a('0x24')]=fileLogger;
\ No newline at end of file
+var _0x6d62=['/var/log/xcally','join','format','%s-%s.log','message','replace','[%s]\x20[%s]\x20%s\x20-\x20%s','level','toUpperCase','{{{','}}}','meta','length','stringify','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','YYYY-MM-DD\x20HH:mm:ss','Console','warn','Logger','File','%s-%s','error','transports','consoleLogger','fileLogger','path','util','moment','winston','../config/environment','debugLevel','toLowerCase','info','redBG\x20white','red','bold\x20white','bold\x20green','gray','bold\x20magenta','bold\x20cyan'];(function(_0x41be46,_0x4bdcb9){var _0x51eeeb=function(_0x319c1d){while(--_0x319c1d){_0x41be46['push'](_0x41be46['shift']());}};_0x51eeeb(++_0x4bdcb9);}(_0x6d62,0x131));var _0x26d6=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0x6d62[_0x47a7d0];return _0xb9bd08;};'use strict';var path=require(_0x26d6('0x0'));var util=require(_0x26d6('0x1'));var moment=require(_0x26d6('0x2'));var winston=require(_0x26d6('0x3'));var config=require(_0x26d6('0x4'));var debugLevel=config[_0x26d6('0x5')]?config['debugLevel'][_0x26d6('0x6')]():_0x26d6('0x7');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':_0x26d6('0x8'),'error':_0x26d6('0x9'),'warn':'bold\x20yellow','info':'white','print':_0x26d6('0xa'),'success':_0x26d6('0xb'),'http':_0x26d6('0xc'),'verbose':_0x26d6('0xd'),'debug':'bold\x20blue','silly':_0x26d6('0xe')};winston['addColors'](XC_LOG_COLORS);function getLogFileName(_0x1eb957,_0x2745f7,_0xb01292){var _0x458fd5=_0x1eb957||_0x26d6('0xf');return path[_0x26d6('0x10')](_0x458fd5,util[_0x26d6('0x11')](_0x26d6('0x12'),_0x2745f7,_0xb01292));}function formatter(_0x1dacb7,_0x46bff1){_0x46bff1['message']=_0x46bff1[_0x26d6('0x13')]['replace'](/@@{/g,'{{{')[_0x26d6('0x14')](/}@@/g,'}}}')['replace'](/@{/g,'{{')[_0x26d6('0x14')](/}@/g,'}}');return util[_0x26d6('0x11')](_0x26d6('0x15'),moment()[_0x26d6('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),_0x46bff1[_0x26d6('0x16')][_0x26d6('0x17')](),_0x1dacb7,_0x46bff1[_0x26d6('0x13')]);}function fileFormat(_0x56cf44,_0x551f6b){_0x551f6b[_0x26d6('0x13')]=_0x551f6b[_0x26d6('0x13')]['replace'](/@@{/g,_0x26d6('0x18'))['replace'](/}@@/g,_0x26d6('0x19'))[_0x26d6('0x14')](/@{/g,'{{')[_0x26d6('0x14')](/}@/g,'}}');var _0x47899a=_0x551f6b[_0x26d6('0x1a')]&&Object['keys'](_0x551f6b['meta'])[_0x26d6('0x1b')]?'\x0a\x09'+JSON[_0x26d6('0x1c')](_0x551f6b[_0x26d6('0x1a')]):'';return util[_0x26d6('0x11')](_0x26d6('0x1d'),moment()[_0x26d6('0x11')](_0x26d6('0x1e')),_0x551f6b[_0x26d6('0x16')][_0x26d6('0x17')](),_0x56cf44,_0x551f6b[_0x26d6('0x13')],_0x47899a);}function consoleLogger(){var _0x314d24=new winston['Logger']({'levels':XC_LOG_LEVELS,'transports':[new winston['transports'][(_0x26d6('0x1f'))]({'level':_0x26d6('0x20'),'json':![],'formatter':function(_0x22a68b){return formatter('',_0x22a68b);}})]});return _0x314d24;}function fileLogger(_0x13a9f1,_0x340485){var _0x37ab1b=new winston[(_0x26d6('0x21'))]({'levels':XC_LOG_LEVELS,'transports':[new winston['transports'][(_0x26d6('0x22'))]({'name':util[_0x26d6('0x11')](_0x26d6('0x23'),_0x13a9f1,'error'),'filename':getLogFileName(_0x340485,_0x13a9f1,'error'),'level':_0x26d6('0x24'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0xfe2d15){return fileFormat(_0x13a9f1,_0xfe2d15);}}),new winston['transports']['File']({'name':util[_0x26d6('0x11')]('%s-%s',_0x13a9f1,debugLevel),'filename':getLogFileName(_0x340485,_0x13a9f1,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0xcd4fca){return fileFormat(_0x13a9f1,_0xcd4fca);}}),new winston[(_0x26d6('0x25'))][(_0x26d6('0x1f'))]({'level':_0x26d6('0x20'),'json':![],'formatter':function(_0x54817a){return fileFormat(_0x13a9f1,_0x54817a);}})]});return _0x37ab1b;}exports[_0x26d6('0x26')]=consoleLogger;exports[_0x26d6('0x27')]=fileLogger;
\ No newline at end of file
index 65b43e8..3b54909 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['email','securityToken','code','accessKey','tenantId','token','channelSecret','accessToken','accessTokenSecret','authToken','consumerKey','calleridname','calleridnum','exten','vidaooApiKey','privateKey','secretaccesskey','user','pass','dsn','registry','oldPassword','length','isPlainObject','@@{','replace','}@@','includes','exports','maskSensitiveData','lodash','username','password','newPassword','apiKey','firstName','street','phone','fax'];(function(_0x1d116e,_0x54956c){var _0x3f4710=function(_0x9129d2){while(--_0x9129d2){_0x1d116e['push'](_0x1d116e['shift']());}};_0x3f4710(++_0x54956c);}(_0x2ef3,0xba));var _0x32ef=function(_0x1d0b69,_0x396540){_0x1d0b69=_0x1d0b69-0x0;var _0x536e13=_0x2ef3[_0x1d0b69];return _0x536e13;};var _=require(_0x32ef('0x0'));var sensitiveFields=[_0x32ef('0x1'),_0x32ef('0x2'),_0x32ef('0x3'),_0x32ef('0x4'),_0x32ef('0x5'),'lastName',_0x32ef('0x6'),_0x32ef('0x7'),'mobile',_0x32ef('0x8'),_0x32ef('0x9'),'clientId','clientSecret',_0x32ef('0xa'),_0x32ef('0xb'),_0x32ef('0xc'),_0x32ef('0xd'),_0x32ef('0xe'),_0x32ef('0xf'),_0x32ef('0x10'),_0x32ef('0x11'),_0x32ef('0x12'),_0x32ef('0x13'),'consumerSecret','membername',_0x32ef('0x14'),_0x32ef('0x15'),_0x32ef('0x16'),_0x32ef('0x17'),'clientEmail',_0x32ef('0x18'),'accesskeyid',_0x32ef('0x19'),'key',_0x32ef('0x1a'),_0x32ef('0x1b'),'accountSid','localstationid',_0x32ef('0x1c'),'secret',_0x32ef('0x1d'),_0x32ef('0x1e')];function maskSensitiveData(_0x93d492){const _0x54c7f5=/(?!^)[\s\S](?!$)/g;if(_['isPlainObject'](_0x93d492)){for(const _0x55bf0b in _0x93d492){if(_['isArray'](_0x93d492[_0x55bf0b])){for(let _0x13db1a=0x0;_0x13db1a<_0x93d492[_0x55bf0b][_0x32ef('0x1f')];_0x13db1a++){maskSensitiveData(_0x93d492[_0x55bf0b][_0x13db1a]);}}else if(_[_0x32ef('0x20')](_0x93d492[_0x55bf0b])){maskSensitiveData(_0x93d492[_0x55bf0b]);}else if(_['isString'](_0x93d492[_0x55bf0b])){_0x93d492[_0x55bf0b]=_0x93d492[_0x55bf0b]['replace'](/{{{/g,_0x32ef('0x21'))[_0x32ef('0x22')](/}}}/g,_0x32ef('0x23'))['replace'](/{{/g,'@{')[_0x32ef('0x22')](/}}/g,'}@');if(_[_0x32ef('0x24')](sensitiveFields,_0x55bf0b)){_0x93d492[_0x55bf0b]=_0x93d492[_0x55bf0b]['replace'](_0x54c7f5,'*');}}}}}module[_0x32ef('0x25')][_0x32ef('0x26')]=maskSensitiveData;
\ No newline at end of file
+var _0x0b0e=['}@@','lodash','password','apiKey','firstName','lastName','street','phone','mobile','fax','email','clientId','clientSecret','securityToken','tenantId','token','channelSecret','accessToken','authToken','consumerKey','membername','calleridname','exten','vidaooApiKey','clientEmail','accesskeyid','secretaccesskey','key','user','pass','localstationid','dsn','secret','registry','oldPassword','isArray','length','isString','replace'];(function(_0x58fe77,_0xc1609e){var _0x2396ab=function(_0x2b50a7){while(--_0x2b50a7){_0x58fe77['push'](_0x58fe77['shift']());}};_0x2396ab(++_0xc1609e);}(_0x0b0e,0x187));var _0xe0b0=function(_0x5a1d58,_0x42ab8d){_0x5a1d58=_0x5a1d58-0x0;var _0x5911a9=_0x0b0e[_0x5a1d58];return _0x5911a9;};var _=require(_0xe0b0('0x0'));var sensitiveFields=['username',_0xe0b0('0x1'),'newPassword',_0xe0b0('0x2'),_0xe0b0('0x3'),_0xe0b0('0x4'),_0xe0b0('0x5'),_0xe0b0('0x6'),_0xe0b0('0x7'),_0xe0b0('0x8'),_0xe0b0('0x9'),_0xe0b0('0xa'),_0xe0b0('0xb'),_0xe0b0('0xc'),'code','accessKey',_0xe0b0('0xd'),_0xe0b0('0xe'),_0xe0b0('0xf'),_0xe0b0('0x10'),'accessTokenSecret',_0xe0b0('0x11'),_0xe0b0('0x12'),'consumerSecret',_0xe0b0('0x13'),_0xe0b0('0x14'),'calleridnum',_0xe0b0('0x15'),_0xe0b0('0x16'),_0xe0b0('0x17'),'privateKey',_0xe0b0('0x18'),_0xe0b0('0x19'),_0xe0b0('0x1a'),_0xe0b0('0x1b'),_0xe0b0('0x1c'),'accountSid',_0xe0b0('0x1d'),_0xe0b0('0x1e'),_0xe0b0('0x1f'),_0xe0b0('0x20'),_0xe0b0('0x21')];function maskSensitiveData(_0x55d884){const _0x41a7e2=/(?!^)[\s\S](?!$)/g;if(_['isPlainObject'](_0x55d884)){for(const _0x35cb40 in _0x55d884){if(_[_0xe0b0('0x22')](_0x55d884[_0x35cb40])){for(let _0x519ae8=0x0;_0x519ae8<_0x55d884[_0x35cb40][_0xe0b0('0x23')];_0x519ae8++){maskSensitiveData(_0x55d884[_0x35cb40][_0x519ae8]);}}else if(_['isPlainObject'](_0x55d884[_0x35cb40])){maskSensitiveData(_0x55d884[_0x35cb40]);}else if(_[_0xe0b0('0x24')](_0x55d884[_0x35cb40])){_0x55d884[_0x35cb40]=_0x55d884[_0x35cb40][_0xe0b0('0x25')](/{{{/g,'@@{')['replace'](/}}}/g,_0xe0b0('0x26'))['replace'](/{{/g,'@{')['replace'](/}}/g,'}@');if(_['includes'](sensitiveFields,_0x35cb40)){_0x55d884[_0x35cb40]=_0x55d884[_0x35cb40][_0xe0b0('0x25')](_0x41a7e2,'*');}}}}}module['exports']['maskSensitiveData']=maskSensitiveData;
\ No newline at end of file
index 71e13f1..956a7ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda2d=['exports','safeTemplate','{\x20{\x20','\x20}\x20}','map','isPlainObject','keys','reduce'];(function(_0x2b5eae,_0x55010d){var _0x5f3ac9=function(_0x397bfc){while(--_0x397bfc){_0x2b5eae['push'](_0x2b5eae['shift']());}};_0x5f3ac9(++_0x55010d);}(_0xda2d,0x102));var _0xdda2=function(_0x4e79f6,_0x5c9eb3){_0x4e79f6=_0x4e79f6-0x0;var _0x351573=_0xda2d[_0x4e79f6];return _0x351573;};var _=require('lodash');var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x14e970){return _0x14e970==='{{'?_0xdda2('0x0'):_0xdda2('0x1');}function safeTemplate(_0x1f1fcc){var _0x329c5e=_0x1f1fcc;if(typeof _0x1f1fcc==='string'){_0x329c5e=_0x1f1fcc['replace'](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array['isArray'](_0x1f1fcc)){_0x329c5e=_0x1f1fcc[_0xdda2('0x2')](function(_0x319129){return safeTemplate(_0x319129);});}else if(_[_0xdda2('0x3')](_0x1f1fcc)){_0x329c5e=Object[_0xdda2('0x4')](_0x1f1fcc)[_0xdda2('0x5')](function(_0xf38e58,_0x2f55dc){_0xf38e58[_0x2f55dc]=safeTemplate(_0x1f1fcc[_0x2f55dc]);return _0xf38e58;},{});}return _0x329c5e;}module[_0xdda2('0x6')][_0xdda2('0x7')]=safeTemplate;
\ No newline at end of file
+var _0x8f4c=['map','isPlainObject','safeTemplate','lodash','{\x20{\x20','\x20}\x20}','replace','isArray'];(function(_0x289bfd,_0x3f68f5){var _0x532e8f=function(_0x5243a1){while(--_0x5243a1){_0x289bfd['push'](_0x289bfd['shift']());}};_0x532e8f(++_0x3f68f5);}(_0x8f4c,0x113));var _0xc8f4=function(_0x38bf64,_0x1ba17f){_0x38bf64=_0x38bf64-0x0;var _0x417f34=_0x8f4c[_0x38bf64];return _0x417f34;};var _=require(_0xc8f4('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x292fb6){return _0x292fb6==='{{'?_0xc8f4('0x1'):_0xc8f4('0x2');}function safeTemplate(_0x19893b){var _0x134d73=_0x19893b;if(typeof _0x19893b==='string'){_0x134d73=_0x19893b[_0xc8f4('0x3')](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0xc8f4('0x4')](_0x19893b)){_0x134d73=_0x19893b[_0xc8f4('0x5')](function(_0x56c9b1){return safeTemplate(_0x56c9b1);});}else if(_[_0xc8f4('0x6')](_0x19893b)){_0x134d73=Object['keys'](_0x19893b)['reduce'](function(_0x520063,_0x373506){_0x520063[_0x373506]=safeTemplate(_0x19893b[_0x373506]);return _0x520063;},{});}return _0x134d73;}module['exports'][_0xc8f4('0x7')]=safeTemplate;
\ No newline at end of file